diff --git a/.gitignore b/.gitignore index d46f692..a0a3277 100644 --- a/.gitignore +++ b/.gitignore @@ -7,4 +7,12 @@ data/game_* data/windows* # Hardware Directories vivado_hls.log -./hls/ \ No newline at end of file +vitis_hls.log +hls_prj/ +vivado/ +vitis_include/ +./token + +# PYNQ +**/.ipynb_checkpoints +**/sds_trace_data.dat \ No newline at end of file diff --git a/CMakeLists.txt b/CMakeLists.txt index c2d922e..43b6978 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -1,36 +1,53 @@ cmake_minimum_required(VERSION 3.10) # Set the project name project(Svd VERSION 1.0) -# Specify the C++ standard -set(CMAKE_CXX_STANDARD 11) -set(CMAKE_CXX_STANDARD_REQUIRED True) -# To locate "custom"/manually added libraries +# To locate "custom", i.e. manually added, libraries list(APPEND CMAKE_MODULE_PATH ${PROJECT_SOURCE_DIR}/cmake/Modules) -# Locate libraries and headers (see Files in ./cmake/Modules/) -# find_package(Vitis REQUIRED) -find_package(Vivado REQUIRED) -find_package(OpenCv REQUIRED) +# Locate external libraries and headers (see Files in ./cmake/Modules/) +# Search for HLS: if Vitis is found, use C++14, else fall back to C++11. +find_package(Vitis REQUIRED) +if (Vitis_FOUND) + # Specify the C++14 standard + message("[INFO] Vitis HLS FOUND.") + set(CMAKE_CXX_STANDARD 14) + set(CMAKE_CXX_STANDARD_REQUIRED True) + set(HLS_INCLUDE_DIRS ${VITIS_INCLUDE_DIRS}) + add_compile_definitions(__VITIS_HLS__) +else() + message("[INFO] Vivado HLS FOUND.") + find_package(Vivado REQUIRED) + # Specify the C++11 standard + set(CMAKE_CXX_STANDARD 11) + set(CMAKE_CXX_STANDARD_REQUIRED True) + set(HLS_INCLUDE_DIRS ${VIVADO_INCLUDE_DIRS}) +endif() +# find_package(OpenCv REQUIRED) -# set(HLS_INCLUDE_DIRS ${VITIS_INCLUDE_DIRS}) -# set(HLS_INCLUDE_DIRS ${VIVADO_INCLUDE_DIRS}) -# message(${HLS_INCLUDE_DIRS}) +message(${HLS_INCLUDE_DIRS}) # Add all definitions -if (WIN32) - add_compile_definitions(IMAGE_OUTPUT_PATH="C:/Users/ste/phd/hls_projects/hls_svd/data") -else() - add_compile_definitions(IMAGE_OUTPUT_PATH="/mnt/c/Users/ste/phd/hls_projects/hls_svd/data") -endif() # The following definitions is required for compiling half-precision numbers. add_compile_definitions(HLS_NO_XIL_FPO_LIB) # add_compile_definitions(USE_FLOAT) add_compile_definitions(DEBUG_LEVEL=2) +add_compile_definitions(INPUT_SIZE=1024) +add_compile_definitions(HIDDEN_SIZE=512) +add_compile_definitions(NUM_GATES=4) +add_compile_definitions(NUM_SAMPLES=2) +add_compile_definitions(NUM_TILES_U=4) +add_compile_definitions(NUM_ZERO_TILES_U=1) +add_compile_definitions(NUM_TILES_V=4) +add_compile_definitions(NUM_ZERO_TILES_V=1) +add_compile_definitions(NUM_TIMESTEPS=28) +add_compile_definitions(FIX_WIDTH=16) +add_compile_definitions(FIX_FRACT_WIDTH=5) + # Move executable in bin/, along side the DLLs (copied) set(EXECUTABLE_OUTPUT_PATH ${PROJECT_SOURCE_DIR}/bin) -file(COPY ${OpenCv_LIBS} DESTINATION ${EXECUTABLE_OUTPUT_PATH}) +# file(COPY ${OpenCv_LIBS} DESTINATION ${EXECUTABLE_OUTPUT_PATH}) # NOTE: an object file becomes a library. All libraries/objects must be LINKED later! # Tell the application where to find the other CMake config files. diff --git a/README.md b/README.md index a287172..058ff64 100644 --- a/README.md +++ b/README.md @@ -47,17 +47,108 @@ cmake .. make all ``` +## Notes on Using Vitis + +### AXIS Interface and DMA + +Vitis to include the TLAST side channel if and only if TKEEP and TSTRB are also included. + +In order to attach the port to a Xilinx DMA, the TLAST signal must be properly set HIGH at the end of the data transmission. + +The TKEEP and TSTRB signals must be *always* set to HIGH, as indicated in the [AXIS documentation](https://developer.arm.com/documentation/ihi0051/a/Interface-Signals/Byte-qualifiers/TKEEP-and-TSTRB-combinations). + + +### Partitioning hls::vector Arrays + +A standard way of partitioning an array is: +```c++ + hls::stream > x_streams[M][N]; +#pragma HLS ARRAY_PARTITION variable=x_streams complete dim=0 +``` +However, since we are dealing with a `hls::vector` type, setting `dim=0` (all dimensions) will partition the array on the vector dimension too. + +In the example above, Vitis will create `M * N * 4` different streams (instead of just `M * N`). To fix it, manually specify the partitioning on the dimensions, like so: +```c++ + hls::stream > x_streams[M][N]; +#pragma HLS ARRAY_PARTITION variable=x_streams complete dim=1 +#pragma HLS ARRAY_PARTITION variable=x_streams complete dim=2 +``` + +### Implementing AXIS Interfaces + +In order to implement AXIS interfaces, avoid using `depth` in the pragma, as follows: +```c++ +const int kAxiBitwidth = 128; + +void HlsVectorKernelU(hls::stream >& x_port, + hls::stream >& y_port) { +#pragma HLS INTERFACE axis port=x_port // depth=... <- DON'T SPECIFY THE DEPTH! +#pragma HLS INTERFACE axis port=y_port // depth=... <- DON'T SPECIFY THE DEPTH! + // ... +} +``` +The type `ap_axiu` must now be used to generate AXIS with side channels. Note: for using external DMAs, we need the TLAST, TKEEP and TSTRB signals. In particular, TKEEP and TSTRB must be all set (i.e. all ones) in order to signal data packets. + +#### AxiStreamInterface Class + +This repository contains a wrapper class for kernel arguments of type `hls::stream` named `AxiStreamInterface`. The class is implemented following a _Policy-based_ C++ paradigm, meaning that it accepts either a `AxiStreamPort` or `AxiStreamFifo` as possible policies (in practice, a template argument). + +The idea is to have a kernel argument, i.e. an HLS port, which can be either an AXIS interface with side-channels, or a bare FIFO interface connected to another kernel. In fact, Vitis HLS doesn't allow stream interfaces with side-channels within an IP. To overcome the issue, the `AxiStreamInterface` can be customized to be an IP port or a FIFO port, depending on the use of the kernel. + +An example of this can be seen in `HlsKernelU` and in `svd::SvdKernel`, which specialize the `svd::KernelU` function template. In the first case, the `svd::KernelU` has its output stream port `xu_port` connected to one of the IP's ports (with side-channels). In the latter case instead, `svd::KernelU` is connected to `svd::KernelS`, and so its `xu_port` argument is an internal FIFO (without side-channels). + +The `AxiStreamInterface` class in `axis_lib.h` can also be used with `hls::vector` types. + +### HLS Vector Patch + +If the project will be compiled with the Vitis HLS libraries, it needs a patch in the `hls::vector` class. + +Simply add the following line in the `vector` class after the `public:` statement: +```c++ +public: + static const int width = N; +``` + +In this way, one can access the number of elements in a `hls::vector` at compile/synthesis time by doing: + +```c++ +hls::vector a; +std::cout << "Number of elements in a: " << a::width << std::endl; + +// > Number of elements in a: 5 +``` + +## Notes on PYNQ Design + +### Vivado Project + +#### Xilinx DMA + +The DMA should be configured in the following way: + +* Max burst length to maximum +* Register buffer width to maximum + +#### HP Ports + +All HP ports should be set to 64bit width (to avoid receiving data interleaved by zeroes). + + ## TODOs List of TODOs: - * Import u, s, v new kernels - * Import (and clean up?) u, s, v old kernels - * Import DMA functions - * Import and clean up HLS SVD-model-Bouganis - * Import and clean up HLS SVD-model-2LSTM - * Import some testbenches to try compile something + + * ~Import u, s, v new kernels~ + * ~Import (and clean up?) u, s, v old kernels~ + * ~Import DMA functions~ + * ~Import and clean up HLS SVD-model-Bouganis~ + * ~Import and clean up HLS SVD-model-2LSTM~ + * ~Import some testbenches to try compile something~ ## Bugs List of possible bugs: -* Having not squared images in games generates distorted images. \ No newline at end of file + +* Constructing data handler storage might lead to segmentation faults. +* Having `R == 1` might trigger some asserts. +* Having `output_size == H` in HlsKernelV might break hardware runs. \ No newline at end of file diff --git a/cmake/Modules/FindVitis.cmake b/cmake/Modules/FindVitis.cmake index 8695d84..903adee 100644 --- a/cmake/Modules/FindVitis.cmake +++ b/cmake/Modules/FindVitis.cmake @@ -1,11 +1,13 @@ if (WIN32) - set(VITIS_INCLUDE_DIRS D:/Programs/Xilinx/Vitis_HLS/2020.2/include/) + # set(VITIS_INCLUDE_DIRS D:/Programs/Xilinx/Vitis_HLS/2021.1/include/) + set(VITIS_INCLUDE_DIRS C:/Users/ste/phd/hls_projects/hls_svd/vitis_include/2020.2/include/) + # set(VITIS_INCLUDE_DIRS C:/Users/ste/phd/hls_projects/hls_svd/vitis_include/2021.1/include/) else() - set(VITIS_INCLUDE_DIRS /mnt/d/Programs/Xilinx/Vitis_HLS/2020.2/include/) + set(VITIS_INCLUDE_DIRS /mnt/d/Programs/Xilinx/Vitis_HLS/2021.1/include/) endif() # NOTE: It handles the REQUIRED, QUIET and version-related arguments of find_package. # It also sets the _FOUND variable. The package is considered found # if all variables listed contain valid results, e.g. valid filepaths. include(FindPackageHandleStandardArgs) -find_package_handle_standard_args(Vitis DEFAULT_MSG VITIS_INCLUDE_DIRS) +find_package_handle_standard_args(Vitis DEFAULT_MSG VITIS_INCLUDE_DIRS) \ No newline at end of file diff --git a/include/dma/axis_lib.h b/include/dma/axis_lib.h new file mode 100644 index 0000000..c2721bb --- /dev/null +++ b/include/dma/axis_lib.h @@ -0,0 +1,930 @@ +#ifndef DMA_AXIS_LIB_H_ +#define DMA_AXIS_LIB_H_ + +#include "hls_utils/hls_metaprogramming.h" + +#include "ap_axi_sdata.h" +#include "ap_int.h" +#include "hls_stream.h" + +#include +#include +#include +#include + +#ifdef __VITIS_HLS__ +#include "hls_vector.h" +#endif + +namespace svd { + +template +struct AxiuPacketTlastOnlyType { + ap_uint data; + ap_uint<1> last = 0; + // ap_uint<4> keep = 0xF; +}; + +template +class AxiStreamFifo { +public: + typedef ap_int PacketType; + + AxiStreamFifo(hls::stream& port) : _port(port) { +#pragma HLS INLINE + } + + ~AxiStreamFifo() {}; + + template + inline void Push(const T &x, bool is_last = false) { +#pragma HLS INLINE + PacketType packet = *((PacketType*)&x); + this->_port.write(packet); + } + + /** + * @brief Pushes the last value. + * + * @param[in] x The value to push on the FIFO + * + * @tparam T The type of the value + */ + template + inline void PushLast(const T &x) { +#pragma HLS INLINE + PacketType packet = *((PacketType*)&x); + this->_port.write(packet); + } + + /** + * @brief Pushes a series of values from a buffer to the FIFO. + * + * @param[in] size The buffer size + * @param[in] x The buffer to read from + * + * @tparam T The type of the buffer + */ + template + inline void PushFromBuffer(const int size, const T *x, bool send_last = false) { +#pragma HLS INLINE + PacketType packet; + for (int i = 0; i < size; ++i) { +#pragma HLS PIPELINE II=1 + packet = *((PacketType*)&x[i]); + this->_port.write(packet); + } + } + + template + inline void PushBuffer(const int size, const T *x, bool send_last = false) { +#pragma HLS INLINE + assert(hlsutils::Bitwidth::value * size == Bitwidth); + const int kElemBitwidth = hlsutils::Bitwidth::value; + PacketType packet; + for (int i = 0; i < size; ++i) { + const int kHi = (i + 1) * kElemBitwidth - 1; + const int kLo = i * kElemBitwidth; + auto tmp = x[i]; + packet.range(kHi, kLo) = *((ap_uint*)&tmp); + } + this->_port.write(packet); + } + + /** + * @brief Pushes a series of values from a stream to the FIFO. + * + * @param[in] size The size + * @param[in] x The stream to read from + * + * @tparam T The type of the stream + */ + template + inline void PushFromStream(const int size, const hls::stream &x) { +#pragma HLS INLINE + PacketType packet; + for (int i = 0; i < size; ++i) { +#pragma HLS PIPELINE II=1 + T x_val = x.read(); + packet = *((PacketType*)&x_val); + this->_port.write(packet); + } + } + + /** + * @brief Pops a value from the FIFO and converts it. + * + * @tparam T The type of the returned value + * + * @return The value from the FIFO + */ + template + inline T Pop() { +#pragma HLS INLINE + PacketType packet = this->_port.read(); + return *((T*)&packet); + } + + /** + * @brief Read value and returns false (used for compatibility). + * + * @param y The value read from the FIFO + * + * @tparam T The type of the read value + * + * @return True if the specified y is the last value to pop, False + * otherwise. + */ + template + inline bool isLastPop(T &y) { +#pragma HLS INLINE + PacketType packet = this->_port.read(); + y = *((T*)&packet); + return false; + } + + /** + * @brief Pops a series of values from the FIFO and writes them into a + * buffer. It also converts from ap_uint<> to T. + * + * @param[in] size The size + * @param y The output buffer + * + * @tparam T The type of the output buffer + */ + template + inline void PopToBuffer(const int size, T *y) { +#pragma HLS INLINE + PacketType packet; + for (int i = 0; i < size; ++i) { +#pragma HLS PIPELINE II=1 + packet = this->_port.read(); + y[i] = *((T*)&packet); + } + } + + /** + * @brief Pops a series of values from the FIFO and writes them into a + * stream. It also converts from ap_uint<> to T. + * + * @param[in] size The stream size + * @param y The output stream + * + * @tparam T The type of the output stream + */ + template + inline void PopToStream(const int size, hls::stream &y) { +#pragma HLS INLINE + PacketType packet; + for (int i = 0; i < size; ++i) { +#pragma HLS PIPELINE II=1 + packet = this->_port.read(); + y.write(*((T*)&packet)); + } + } + +#ifdef __VITIS_HLS__ + /** + * @brief Push a vector into the FIFO with default TLAST set to low. + * From the AXIS specification: The following options are + * available: + * * Set TLAST LOW. This indicates that all transfers are within + * the same packet. This option provides maximum opportunity + * for merging and upsizing but means that transfers could be + * delayed in a stream with intermittent bursts. A permanently + * LOW TLAST signal might also affect the interleaving of + * streams across a shared channel because the interconnect + * can use the TLAST signal to influence the arbitration + * process. + * * Set TLAST HIGH. This indicates that all transfers are + * individual packets. This option ensures that transfers do + * not get delayed in the infrastructure. It also ensures that + * the stream does not unnecessarily block the use of a shared + * channel by influencing the arbitration scheme. This option + * prevents merging on streams from masters that have this + * default setting and prevents efficient upsizing. + * + * @param[in] x The vector to push + * @param[in] is_last Indicates if last packet to push. Default false. + * + * @tparam T The type of the vector, its type must be of the same + * size of the FIFO. + * @tparam N Number of elements in the vector + */ + template + inline void PushVector(const hls::vector& x, bool is_last = false) { +#pragma HLS INLINE + static_assert(hlsutils::Bitwidth::value * N == Bitwidth, "AxiStreamPort must have same bitwidth as hls::vector"); + assert(hlsutils::Bitwidth::value * N == Bitwidth); + const int kElemBitwidth = hlsutils::Bitwidth::value; + PacketType packet; + for (int i = 0; i < N; ++i) { + const int kHi = (i + 1) * kElemBitwidth - 1; + const int kLo = i * kElemBitwidth; + auto tmp = x[i]; + packet.range(kHi, kLo) = *((ap_uint*)&tmp); + } + this->_port.write(packet); + } + + /** + * @brief Pushes the last vector, i.e. a packet with TLAST set to high. + * + * @param[in] x The vector to push on the FIFO + * + * @tparam T The type of the vector + * @tparam N Number of elements in the vector + */ + template + inline void PushLastVector(const hls::vector& x) { +#pragma HLS INLINE + static_assert(hlsutils::Bitwidth::value * N == Bitwidth, "AxiStreamPort must have same bitwidth as hls::vector"); + assert(hlsutils::Bitwidth::value * N == Bitwidth); + const int kElemBitwidth = hlsutils::Bitwidth::value; + PacketType packet; + for (int i = 0; i < N; ++i) { + const int kHi = (i + 1) * kElemBitwidth - 1; + const int kLo = i * kElemBitwidth; + auto tmp = x[i]; + packet.range(kHi, kLo) = *((ap_uint*)&tmp); + } + this->_port.write(packet); + } + + /** + * @brief Pops a vector from the FIFO and converts it. + * + * @tparam T The type of the returned vector + * @tparam N The number of elements in the vector + * + * @return The vector from the FIFO + */ + template + inline hls::vector PopVector() { +#pragma HLS INLINE + static_assert(hlsutils::Bitwidth::value * N == Bitwidth, "AxiStreamPort must have same bitwidth as hls::vector"); + assert(hlsutils::Bitwidth::value * N == Bitwidth); + const int kElemBitwidth = hlsutils::Bitwidth::value; + const PacketType packet = this->_port.read(); + hls::vector y; + for (int i = 0; i < N; ++i) { + const int kHi = (i + 1) * kElemBitwidth - 1; + const int kLo = i * kElemBitwidth; + ap_uint tmp = packet.range(kHi, kLo); + y[i] = *((T*)&tmp); + } + return y; + } + + /** + * @brief Read vector and returns false (used for compatibility reasons). + * + * @param y The vector read from the FIFO + * + * @tparam T The type of the read vector + * @tparam N The number of elements in the vector. + * + * @return False + */ + template + inline bool isLastPopVector(hls::vector& y) { +#pragma HLS INLINE + static_assert(hlsutils::Bitwidth::value * N == Bitwidth, "AxiStreamPort must have same bitwidth as hls::vector"); + assert(hlsutils::Bitwidth::value * N == Bitwidth); + const int kElemBitwidth = hlsutils::Bitwidth::value; + const PacketType packet = this->_port.read(); + for (int i = 0; i < N; ++i) { + const int kHi = (i + 1) * kElemBitwidth - 1; + const int kLo = i * kElemBitwidth; + ap_uint tmp = packet.range(kHi, kLo); + y[i] = *((T*)&tmp); + } + return false; + } +#endif // __VITIS_HLS__ + + hls::stream& get_port() { + return this->_port; + } + +private: + hls::stream& _port; +}; + +/** + * @brief Wrapper class for an AXI stream interface port. + * + * The function instantiating this class must apply the respective + * HLS directive in order to synthesize a proper AXI stream + * interface. + * + * For documentation on TKEEP and TSTRB, please visit: + * https://developer.arm.com/documentation/ihi0051/a/Interface-Signals/Byte-qualifiers/TKEEP-and-TSTRB-combinations + * + * @tparam Bitwidth The bitwidth of the interface. + */ +template +class AxiStreamPort { +public: + static_assert(Bitwidth % 8 == 0, "ERROR. Bitwidth not byte aligned."); + typedef ap_axiu PacketType; + typedef ap_uint SideChannelsType; + // typedef ap_uint > > SideChannelsType; + + AxiStreamPort(hls::stream& port) : _port(port), + _all_ones(~(SideChannelsType(0))), _has_side_channels(true) { +#pragma HLS INLINE + }; + + ~AxiStreamPort() {}; + + inline void set_name(const std::string name) { +#ifndef __SYNTHESIS__ + _name = name; +#endif + } + + std::string name() { +#ifndef __SYNTHESIS__ + return this->_name; +#else + return ""; +#endif + } + + /** + * @brief Push a value into the FIFO with default TLAST set to low. From + * the AXIS specification: The following options are available: + * * Set TLAST LOW. This indicates that all transfers are within + * the same packet. This option provides maximum opportunity for + * merging and upsizing but means that transfers could be + * delayed in a stream with intermittent bursts. A permanently + * LOW TLAST signal might also affect the interleaving of + * streams across a shared channel because the interconnect can + * use the TLAST signal to influence the arbitration process. + * * Set TLAST HIGH. This indicates that all transfers are + * individual packets. This option ensures that transfers do not + * get delayed in the infrastructure. It also ensures that the + * stream does not unnecessarily block the use of a shared + * channel by influencing the arbitration scheme. This option + * prevents merging on streams from masters that have this + * default setting and prevents efficient upsizing. + * + * @param[in] x The value to push + * @param[in] is_last Indicates if last packet to push. Default false. + * + * @tparam T The type of the value, its type must be of the same + * size of the FIFO. + */ + template + inline void Push(const T &x, bool is_last = false) { +#pragma HLS INLINE + PacketType packet; + packet.data = *((ap_uint*)&x); + packet.last = is_last? 1 : 0; + // NOTE: If TKEEP and TSTRB both high, the packet is a data type. + packet.keep = this->_all_ones; // Set TKEEP to all ones. + packet.strb = this->_all_ones; // Set TSTRB to all ones. + this->_port.write(packet); + } + + /** + * @brief Pushes the last value, i.e. a packet with TLAST set to high. + * + * @param[in] x The value to push on the FIFO + * + * @tparam T The type of the value + */ + template + inline void PushLast(const T &x) { +#pragma HLS INLINE + PacketType packet; + packet.data = *((ap_uint*)&x); + packet.last = 1; + // NOTE: If TKEEP and TSTRB both high, the packet is a data type. + packet.keep = this->_all_ones; // Set TKEEP to all ones. + packet.strb = this->_all_ones; // Set TSTRB to all ones. + this->_port.write(packet); + } + + /** + * @brief Pushes a series of values from a buffer to the FIFO. + * + * @param[in] size The buffer size + * @param[in] x The buffer to read from + * + * @tparam T The type of the buffer + */ + template + inline void PushFromBuffer(const int size, const T *x, bool send_last = false) { +#pragma HLS INLINE + PacketType packet; + for (int i = 0; i < size; ++i) { +#pragma HLS PIPELINE II=1 + packet.data = *((ap_uint*)&x[i]); + if (send_last && i == size - 1) { // The last packet needs special care. + packet.last = 1; + } + // NOTE: If TKEEP and TSTRB both high, the packet is a data type. + packet.keep = this->_all_ones; // Set TKEEP to all ones. + packet.strb = this->_all_ones; // Set TSTRB to all ones. + this->_port.write(packet); + } + } + + template + inline void PushBuffer(const int size, const T *x, bool send_last = false) { +#pragma HLS INLINE + assert(hlsutils::Bitwidth::value * size == Bitwidth); + const int kElemBitwidth = hlsutils::Bitwidth::value; + PacketType packet; + for (int i = 0; i < size; ++i) { + const int kHi = (i + 1) * kElemBitwidth - 1; + const int kLo = i * kElemBitwidth; + auto tmp = x[i]; + packet.data.range(kHi, kLo) = *((ap_uint*)&tmp); + } + packet.last = send_last? 1 : 0; + // NOTE: If TKEEP and TSTRB are both high, then the packet is a data type. + packet.keep = this->_all_ones; // Set TKEEP to all ones. + packet.strb = this->_all_ones; // Set TSTRB to all ones. + this->_port.write(packet); + } + + /** + * @brief Pushes a series of values from a stream to the FIFO. + * + * @param[in] size The size + * @param[in] x The stream to read from + * + * @tparam T The type of the stream + */ + template + inline void PushFromStream(const int size, const hls::stream &x) { +#pragma HLS INLINE + PacketType packet; + for (int i = 0; i < size; ++i) { +#pragma HLS PIPELINE II=1 + T x_val = x.read(); + packet.data = *((ap_uint*)&x_val); + if (i == size - 1) { // The last packet needs special care. + packet.last = 1; + } + // NOTE: If TKEEP and TSTRB both high, the packet is a data type. + packet.keep = this->_all_ones; // Set TKEEP to all ones. + packet.strb = this->_all_ones; // Set TSTRB to all ones. + this->_port.write(packet); + } + } + + /** + * @brief Pops a value from the FIFO and converts it. + * + * @tparam T The type of the returned value + * + * @return The value from the FIFO + */ + template + inline T Pop() { +#pragma HLS INLINE + PacketType packet; + packet = this->_port.read(); + return *((T*)&packet.data); + } + + /** + * @brief Read value and return true if the specified y is the last value + * to pop, i.e. with TLAST set high. It also converts the read + * value to the specified type. + * + * @param y The value read from the FIFO + * + * @tparam T The type of the read value + * + * @return True if the specified y is the last value to pop, False + * otherwise. + */ + template + inline bool isLastPop(T &y) { +#pragma HLS INLINE + PacketType packet; + packet = this->_port.read(); + y = *((T*)&packet.data); + return packet.last == 1 ? true : false; + } + + /** + * @brief Pops a series of values from the FIFO and writes them into a + * buffer. It also converts from ap_uint<> to T. + * + * @param[in] size The size + * @param y The output buffer + * + * @tparam T The type of the output buffer + */ + template + inline void PopToBuffer(const int size, T *y) { +#pragma HLS INLINE + PacketType packet; + for (int i = 0; i < size; ++i) { +#pragma HLS PIPELINE II=1 + packet = this->_port.read(); + y[i] = *((T*)&packet.data); + } + } + + /** + * @brief Pops a series of values from the FIFO and writes them into a + * stream. It also converts from ap_uint<> to T. + * + * @param[in] size The stream size + * @param y The output stream + * + * @tparam T The type of the output stream + */ + template + inline void PopToStream(const int size, hls::stream &y) { +#pragma HLS INLINE + PacketType packet; + for (int i = 0; i < size; ++i) { +#pragma HLS PIPELINE II=1 + packet = this->_port.read(); + y.write(*((T*)&packet.data)); + } + } + +#ifdef __VITIS_HLS__ + /** + * @brief Push a vector into the FIFO with default TLAST set to low. + * From the AXIS specification: The following options are + * available: + * * Set TLAST LOW. This indicates that all transfers are within + * the same packet. This option provides maximum opportunity + * for merging and upsizing but means that transfers could be + * delayed in a stream with intermittent bursts. A permanently + * LOW TLAST signal might also affect the interleaving of + * streams across a shared channel because the interconnect + * can use the TLAST signal to influence the arbitration + * process. + * * Set TLAST HIGH. This indicates that all transfers are + * individual packets. This option ensures that transfers do + * not get delayed in the infrastructure. It also ensures that + * the stream does not unnecessarily block the use of a shared + * channel by influencing the arbitration scheme. This option + * prevents merging on streams from masters that have this + * default setting and prevents efficient upsizing. + * + * @param[in] x The vector to push + * @param[in] is_last Indicates if last packet to push. Default false. + * + * @tparam T The type of the vector, its type must be of the same + * size of the FIFO. + * @tparam N Number of elements in the vector + */ + template + inline void PushVector(const hls::vector& x, bool is_last = false) { +#pragma HLS INLINE + static_assert(hlsutils::Bitwidth::value * N == Bitwidth, "AxiStreamPort must have same bitwidth as hls::vector"); + assert(hlsutils::Bitwidth::value * N == Bitwidth); + const int kElemBitwidth = hlsutils::Bitwidth::value; + PacketType packet; + for (int i = 0; i < N; ++i) { + const int kHi = (i + 1) * kElemBitwidth - 1; + const int kLo = i * kElemBitwidth; + auto tmp = x[i]; + packet.data.range(kHi, kLo) = *((ap_uint*)&tmp); + } + packet.last = is_last? 1 : 0; + // NOTE: If TKEEP and TSTRB are both high, then the packet is a data type. + packet.keep = this->_all_ones; // Set TKEEP to all ones. + packet.strb = this->_all_ones; // Set TSTRB to all ones. + this->_port.write(packet); + } + + /** + * @brief Pushes the last vector, i.e. a packet with TLAST set to high. + * + * @param[in] x The vector to push on the FIFO + * + * @tparam T The type of the vector + * @tparam N Number of elements in the vector + */ + template + inline void PushLastVector(const hls::vector& x) { +#pragma HLS INLINE + static_assert(hlsutils::Bitwidth::value * N == Bitwidth, "AxiStreamPort must have same bitwidth as hls::vector"); + assert(hlsutils::Bitwidth::value * N == Bitwidth); + const int kElemBitwidth = hlsutils::Bitwidth::value; + PacketType packet; + for (int i = 0; i < N; ++i) { + const int kHi = (i + 1) * kElemBitwidth - 1; + const int kLo = i * kElemBitwidth; + auto tmp = x[i]; + packet.data.range(kHi, kLo) = *((ap_uint*)&tmp); + } + packet.last = 1; + // NOTE: If TKEEP and TSTRB both high, the packet is a data type. + packet.keep = this->_all_ones; // Set TKEEP to all ones. + packet.strb = this->_all_ones; // Set TSTRB to all ones. + this->_port.write(packet); + } + + /** + * @brief Pops a vector from the FIFO and converts it. + * + * @tparam T The type of the returned vector + * @tparam N The number of elements in the vector + * + * @return The vector from the FIFO + */ + template + inline hls::vector PopVector() { +#pragma HLS INLINE + static_assert(hlsutils::Bitwidth::value * N == Bitwidth, "AxiStreamPort must have same bitwidth as hls::vector"); + assert(hlsutils::Bitwidth::value * N == Bitwidth); + const int kElemBitwidth = hlsutils::Bitwidth::value; + const PacketType packet = this->_port.read(); + hls::vector y; + for (int i = 0; i < N; ++i) { + const int kHi = (i + 1) * kElemBitwidth - 1; + const int kLo = i * kElemBitwidth; + ap_uint tmp = packet.data.range(kHi, kLo); + y[i] = *((T*)&tmp); + } + return y; + } + + /** + * @brief Read vector and return true if the specified y is the last + * vector to pop, i.e. with TLAST set high. It also converts the + * read vector to the specified type. + * + * @param y The vector read from the FIFO + * + * @tparam T The type of the read vector + * @tparam N The number of elements in the vector. + * + * @return True if the specified y is the last vector to pop, False + * otherwise. + */ + template + inline bool isLastPopVector(hls::vector& y) { +#pragma HLS INLINE + static_assert(hlsutils::Bitwidth::value * N == Bitwidth, "AxiStreamPort must have same bitwidth as hls::vector"); + assert(hlsutils::Bitwidth::value * N == Bitwidth); + const int kElemBitwidth = hlsutils::Bitwidth::value; + PacketType packet; + packet = this->_port.read(); + for (int i = 0; i < N; ++i) { + const int kHi = (i + 1) * kElemBitwidth - 1; + const int kLo = i * kElemBitwidth; + ap_uint tmp = packet.data.range(kHi, kLo); + y[i] = *((T*)&tmp); + } + return packet.last == 1 ? true : false; + } +#endif // __VITIS_HLS__ + + hls::stream& get_port() { + return this->_port; + } + +private: + hls::stream& _port; + SideChannelsType _all_ones; + bool _has_side_channels; +#ifndef __SYNTHESIS__ + std::string _name; +#endif +}; + +/** + * @brief This class describes an AXI stream interface (Policy-based + * design). + * + * It has to be used as a "generic" interface whithin a kernel. The + * port of the kernel attached to this class can then be either a + * FIFO or a AXIS port. + * + * @tparam AxiClass The policy class. + */ +template +class AxiStreamInterface : private AxiClass { +public: + AxiStreamInterface(hls::stream& port): AxiClass(port) { +#pragma HLS INLINE + } + + ~AxiStreamInterface() {}; + + template + inline void Push(const T &x, bool is_last = false) { +#pragma HLS INLINE + AxiClass::template Push(x, is_last); + } + + /** + * @brief Pushes the last value, i.e. a packet with TLAST set to high. + * + * @param[in] x The value to push on the FIFO + * + * @tparam T The type of the value + */ + template + inline void PushLast(const T &x) { +#pragma HLS INLINE + AxiClass::template PushLast(x); + } + + /** + * @brief Pushes a series of values from a buffer to the FIFO. + * + * @param[in] size The buffer size + * @param[in] x The buffer to read from + * + * @tparam T The type of the buffer + */ + template + inline void PushFromBuffer(const int size, const T *x, bool send_last = false) { +#pragma HLS INLINE + AxiClass::template PushFromBuffer(size, x, send_last); + } + + /** + * @brief Aggregates a buffer into a single packet and pushes it to the + * FIFO. + * + * @param[in] size The size of the buffer: assert(bitwidthElem * size + * == bitwidthStream) + * @param[in] x The buffer to read from + * @param[in] send_last Whether to send TLAST + * + * @tparam T The stream type + */ + template + inline void PushBuffer(const int size, const T *x, bool send_last = false) { +#pragma HLS INLINE + AxiClass::template PushBuffer(size, x, send_last); + } + + /** + * @brief Pushes a series of values from a stream to the FIFO. + * + * @param[in] size The size + * @param[in] x The stream to read from + * + * @tparam T The type of the stream + */ + template + inline void PushFromStream(const int size, const hls::stream &x) { +#pragma HLS INLINE + AxiClass::template PushFromStream(size, x); + } + + /** + * @brief Pops a value from the FIFO and converts it. + * + * @tparam T The type of the returned value + * + * @return The value from the FIFO + */ + template + inline T Pop() { +#pragma HLS INLINE + return AxiClass::template Pop(); + } + + /** + * @brief Read value and return true if the specified y is the last value + * to pop, i.e. with TLAST set high. It also converts the read + * value to the specified type. + * + * @param y The value read from the FIFO + * + * @tparam T The type of the read value + * + * @return True if the specified y is the last value to pop, False + * otherwise. + */ + template + inline bool isLastPop(T &y) { +#pragma HLS INLINE + return AxiClass::template isLastPop(y); + } + + /** + * @brief Pops a series of values from the FIFO and writes them into a + * buffer. It also converts from ap_uint<> to T. + * + * @param[in] size The size + * @param y The output buffer + * + * @tparam T The type of the output buffer + */ + template + inline void PopToBuffer(const int size, T *y) { +#pragma HLS INLINE + AxiClass::template PopToBuffer(size, y); + } + + /** + * @brief Pops a series of values from the FIFO and writes them into a + * stream. It also converts from ap_uint<> to T. + * + * @param[in] size The stream size + * @param y The output stream + * + * @tparam T The type of the output stream + */ + template + inline void PopToStream(const int size, hls::stream &y) { +#pragma HLS INLINE + AxiClass::template PopToStream(size, y); + } + +#ifdef __VITIS_HLS__ + /** + * @brief Push a vector into the FIFO with default TLAST set to low. + * From the AXIS specification: The following options are + * available: + * * Set TLAST LOW. This indicates that all transfers are within + * the same packet. This option provides maximum opportunity + * for merging and upsizing but means that transfers could be + * delayed in a stream with intermittent bursts. A permanently + * LOW TLAST signal might also affect the interleaving of + * streams across a shared channel because the interconnect + * can use the TLAST signal to influence the arbitration + * process. + * * Set TLAST HIGH. This indicates that all transfers are + * individual packets. This option ensures that transfers do + * not get delayed in the infrastructure. It also ensures that + * the stream does not unnecessarily block the use of a shared + * channel by influencing the arbitration scheme. This option + * prevents merging on streams from masters that have this + * default setting and prevents efficient upsizing. + * + * @param[in] x The vector to push + * @param[in] is_last Indicates if last packet to push. Default false. + * + * @tparam T The type of the vector, its type must be of the same + * size of the FIFO. + * @tparam N Number of elements in the vector + */ + template + inline void PushVector(const hls::vector& x, bool is_last = false) { +#pragma HLS INLINE + AxiClass::template PushVector(x, is_last); + } + + /** + * @brief Pushes the last vector, i.e. a packet with TLAST set to high. + * + * @param[in] x The vector to push on the FIFO + * + * @tparam T The type of the vector + * @tparam N Number of elements in the vector + */ + template + inline void PushLastVector(const hls::vector& x) { +#pragma HLS INLINE + AxiClass::template PushLastVector(x); + } + + /** + * @brief Pops a vector from the FIFO and converts it. + * + * @tparam T The type of the returned vector + * @tparam N The number of elements in the vector + * + * @return The vector from the FIFO + */ + template + inline hls::vector PopVector() { +#pragma HLS INLINE + return AxiClass::template PopVector(); + } + + /** + * @brief Read vector and return true if the specified y is the last + * vector to pop, i.e. with TLAST set high. It also converts the + * read vector to the specified type. + * + * @param y The vector read from the FIFO + * + * @tparam T The type of the read vector + * @tparam N The number of elements in the vector. + * + * @return True if the specified y is the last vector to pop, False + * otherwise. + */ + template + inline bool isLastPopVector(hls::vector& y) { +#pragma HLS INLINE + return AxiClass::template isLastPopVector(y); + } +#endif // __VITIS_HLS__ +}; + +} // svd + +#endif // end DMA_AXIS_LIB_H_ \ No newline at end of file diff --git a/include/dma/svd_dma.h b/include/dma/svd_dma.h index de326bc..aa18d43 100644 --- a/include/dma/svd_dma.h +++ b/include/dma/svd_dma.h @@ -5,27 +5,33 @@ #include "hls_utils/hls_metaprogramming.h" #include "hls_utils/priority_encoder.h" #include "dma/width_converter.h" +#include "dma/axis_lib.h" #include "hls_stream.h" +#include "assert.h" + +#include + +namespace svd { template void StreamSplitter(const int output_size, const Din *x, - hls::stream (&y)[hls_utils::Bitwidth::value / hls_utils::Bitwidth::value]) { + hls::stream (&y)[hlsutils::Bitwidth::value / hlsutils::Bitwidth::value]) { #pragma HLS ARRAY_PARTITION variable=y complete dim=1 - const int kDivider = hls_utils::Bitwidth::value / hls_utils::Bitwidth::value; + const int kDivider = hlsutils::Bitwidth::value / hlsutils::Bitwidth::value; const int kInputSize = output_size / kDivider; - assert(hls_utils::Bitwidth::value % hls_utils::Bitwidth::value == 0); - assert(hls_utils::Bitwidth::value >= hls_utils::Bitwidth::value); + assert(hlsutils::Bitwidth::value % hlsutils::Bitwidth::value == 0); + assert(hlsutils::Bitwidth::value >= hlsutils::Bitwidth::value); assert(output_size % kDivider == 0); DMA_Loop: for (int i = 0; i < kInputSize; ++i) { #pragma HLS PIPELINE II=1 Parallel_Write_Loop: for (int j = 0; j < kDivider; ++j) { - const int kHi = (j + 1) * hls_utils::Bitwidth::value - 1; - const int kLo = j * hls_utils::Bitwidth::value; - ap_uint::value> x_val = x[i].range(kHi, kLo); + const int kHi = (j + 1) * hlsutils::Bitwidth::value - 1; + const int kLo = j * hlsutils::Bitwidth::value; + ap_uint::value> x_val = x[i].range(kHi, kLo); y[j].write(*((Dout*)&x_val)); } } @@ -57,17 +63,17 @@ void S_DMA(const typename params::SPortD s_port[params::N][params::R], } template -void U_Dispatcher(const typename params::UPortD u_port[params::PrunedSizeU], +void U_Dispatcher(const typename params::UPortD u_port[params::R * params::PrunedSizeU], svd::SvdStreams &streams) { U_Dispatcher: for (int i = 0; i < params::R; ++i) { for (int j = 0; j < params::PeU; ++j) { - for (int k = 0; k < params::PrunedSizeU / params::R / params::PeU; ++k) { + for (int k = 0; k < params::PrunedSizeU / params::PeU; ++k) { #pragma HLS PIPELINE II=1 #pragma HLS LOOP_FLATTEN for (int g = 0; g < params::G; ++g) { streams.u[g][j].write(streams.u_dma[g].read()); - } + } } } } @@ -102,11 +108,11 @@ void NzIdxConverter(svd::SvdStreams &streams) { } template -void InputDMA( +void InputDMA(const int num_refinements, const typename params::ActivationD x_port[params::N][params::I], svd::SvdStreams &streams, svd::SvdBuffers &buffers) { -// #pragma HLS INLINE +#pragma HLS INLINE typename params::UnzIdxD tile_idx[params::N][params::G][params::PeU]; #pragma HLS ARRAY_PARTITION variable=tile_idx complete dim=0 Store_X_Buffer: @@ -124,7 +130,8 @@ void InputDMA( Stream_X_Tiles: for (int ii = 0; ii < params::N; ++ii) { #pragma HLS UNROLL - for (int i = 0; i < params::R; ++i) { + Stream_X_Tiles_inner: + for (int i = 0; i < num_refinements; ++i) { for (int k = 0; k < params::I / params::Tu; ++k) { #pragma HLS PIPELINE II=1 for (int j = 0; j < params::PeU; ++j) { @@ -145,17 +152,17 @@ void InputDMA( } template -void V_Dispatcher(const typename params::VPortD v_port[params::PrunedSizeV], +void V_Dispatcher(const typename params::VPortD v_port[params::R * params::PrunedSizeV], svd::SvdStreams &streams) { V_Dispatcher: for (int i = 0; i < params::R; ++i) { for (int j = 0; j < params::PeV; ++j) { - for (int k = 0; k < params::PrunedSizeV / params::R / params::PeV; ++k) { + for (int k = 0; k < params::PrunedSizeV / params::PeV; ++k) { #pragma HLS PIPELINE II=1 #pragma HLS LOOP_FLATTEN for (int g = 0; g < params::G; ++g) { streams.v[g][j].write(streams.v_dma[g].read()); - } + } } } } @@ -164,9 +171,9 @@ void V_Dispatcher(const typename params::VPortD v_port[params::PrunedSizeV], template void SvdInDMA( const typename params::ActivationD x_port[params::N][params::I], - const typename params::UPortD u_port[params::PrunedSizeU], + const typename params::UPortD u_port[params::R * params::PrunedSizeU], const typename params::SPortD s_port[params::N][params::R], - const typename params::VPortD v_port[params::PrunedSizeV], + const typename params::VPortD v_port[params::R * params::PrunedSizeV], const typename params::UnzD nz_u_port[params::R * params::G], const typename params::VnzD nz_v_port[params::R * params::G], svd::SvdStreams &streams, @@ -176,15 +183,15 @@ void SvdInDMA( #pragma HLS DATAFLOW #endif S_DMA(s_port, streams); - U_DMA: StreamSplitter(params::G * params::PrunedSizeU, u_port, streams.u_dma); - V_DMA: StreamSplitter(params::G * params::PrunedSizeV, v_port, streams.v_dma); + U_DMA: StreamSplitter(params::G * params::R * params::PrunedSizeU, u_port, streams.u_dma); + V_DMA: StreamSplitter(params::G * params::R * params::PrunedSizeV, v_port, streams.v_dma); if (params::ZTu > 0) { NzDMA(nz_u_port, nz_v_port, streams); NzIdxConverter(streams); } U_Dispatcher(u_port, streams); V_Dispatcher(v_port, streams); - InputDMA(x_port, streams, buffers); + InputDMA(params::R, x_port, streams, buffers); } template @@ -203,54 +210,52 @@ void SvdOutDMA( } } -namespace svd { - template -void ZeroTileCombination2LstmDMA(const ap_uint *comb_port, - hls::stream > (&comb_stream1_current)[NumGates / 2], - hls::stream > (&comb_stream1_recurrent)[NumGates / 2], - hls::stream > (&comb_stream2_current)[NumGates / 2], - hls::stream > (&comb_stream2_recurrent)[NumGates / 2]) { +void NZIndex2LstmDMA(const ap_uint *nz_port, + hls::stream > (&nz_stream1_cur)[NumGates / 2], + hls::stream > (&nz_stream1_rec)[NumGates / 2], + hls::stream > (&nz_stream2_cur)[NumGates / 2], + hls::stream > (&nz_stream2_rec)[NumGates / 2]) { +#pragma HLS INLINE assert(NumGates % 2 == 0); assert(NumTiles % 2 == 0); - assert(NumTiles >= 8); - - ZeroTileCombination_Dma_Iter_Loop: + // assert(NumTiles >= 8); // Minimum port size requirement. + NZIndex_Dma_Iter_Loop: for (int i = 0; i < NumIter; ++i) { #pragma HLS PIPELINE II=1 - ZeroTileCombination_Dma_Current_Loop: + NZIndex_Dma_Current_Loop: for (int g = 0; g < NumGates / 2; ++g) { - ap_uint comb = comb_port[i * NumGates + g]; - comb_stream1_current[g].write(comb); - comb_stream2_current[g].write(comb); + ap_uint nz_idx = nz_port[i * NumGates + g]; + nz_stream1_cur[g].write(nz_idx); + nz_stream2_cur[g].write(nz_idx); } - ZeroTileCombination_Dma_Recurrent_Loop: + NZIndex_Dma_Recur_Loop: for (int g = 0; g < NumGates / 2; ++g) { - ap_uint comb = comb_port[i * NumGates + NumGates / 2 + g]; - comb_stream1_recurrent[g].write(comb); - comb_stream2_recurrent[g].write(comb); + ap_uint nz_idx = nz_port[i * NumGates + NumGates / 2 + g]; + nz_stream1_rec[g].write(nz_idx); + nz_stream2_rec[g].write(nz_idx); } } } template -void ZeroTileCombinationDMA(const ap_uint *comb_port, - hls::stream > (¤t_comb_stream)[NumGates / 2], - hls::stream > (&recurrent_comb_stream)[NumGates / 2]) { +void NZIndexDMA(const ap_uint *nz_port, + hls::stream > (&cur_nz_stream)[NumGates / 2], + hls::stream > (&rec_nz_stream)[NumGates / 2]) { +#pragma HLS INLINE assert(NumGates % 2 == 0); assert(NumTiles % 2 == 0); - assert(NumTiles >= 8); - - ZeroTileCombination_Dma_Iter_Loop: + // assert(NumTiles >= 8); // Minimum port size requirement. + NZIndex_Dma_Iter_Loop: for (int i = 0; i < NumIter; ++i) { #pragma HLS PIPELINE II=1 - ZeroTileCombination_Dma_Current_Loop: + NZIndex_Dma_Current_Loop: for (int g = 0; g < NumGates / 2; ++g) { - current_comb_stream[g].write(comb_port[i * NumGates + g]); + cur_nz_stream[g].write(nz_port[i * NumGates + g]); } - ZeroTileCombination_Dma_Recurrent_Loop: + NZIndex_Dma_Recur_Loop: for (int g = 0; g < NumGates / 2; ++g) { - recurrent_comb_stream[g].write(comb_port[i * NumGates + NumGates / 2 + g]); + rec_nz_stream[g].write(nz_port[i * NumGates + NumGates / 2 + g]); } } } @@ -278,19 +283,22 @@ void InputDMA(const svd::ActivationD *x_dmem, // Store the input onto an on-chip buffer for data reuse. The buffer is shared // by the LSTM gates and their U-units (which contain T - ZT MAC units each). // =========================================================================== +#ifdef __VITIS_HLS__ +#pragma HLS INLINE +#endif #pragma HLS DATAFLOW - const int kNumElemsTile = VectLength / NumTiles; + const int kTileSize = VectLength / NumTiles; const int kNumPEs = NumTiles - NumZeroTiles; - svd::ActivationD x_buffer[NumTiles][kNumElemsTile]; + svd::ActivationD x_buffer[NumTiles][kTileSize]; #pragma HLS ARRAY_PARTITION variable=x_buffer complete dim=1 Write_Buffer: for (int i = 0; i < NumTiles; ++i) { - for (int j = 0; j < kNumElemsTile; ++j) { + for (int j = 0; j < kTileSize; ++j) { #pragma HLS PIPELINE II=1 - x_buffer[i][j] = x_dmem[i * kNumElemsTile + j]; + x_buffer[i][j] = x_dmem[i * kTileSize + j]; } } - hls::stream::value> > tile_idx_stream[NumGates][kNumPEs]; + hls::stream::value> > tile_idx_stream[NumGates][kNumPEs]; #pragma HLS ARRAY_PARTITION variable=tile_idx_stream complete dim=0 NZ_to_Idx: for (int i = 0; i < NumIter; ++i) { @@ -302,7 +310,7 @@ void InputDMA(const svd::ActivationD *x_dmem, if (j == 0) { nz_idx[k] = comb_stream[k].read(); } - int set_idx = PriorityEncoderLSB(nz_idx[k]); + int set_idx = hlsutils::PriorityEncoderLSB(nz_idx[k]); assert(set_idx < NumTiles); tile_idx_stream[k][j].write(set_idx); nz_idx[k][set_idx] = 0; @@ -311,9 +319,9 @@ void InputDMA(const svd::ActivationD *x_dmem, } Stream_Tiles: for (int i = 0; i < NumIter; ++i) { - for (int k = 0; k < kNumElemsTile; ++k) { + for (int k = 0; k < kTileSize; ++k) { #pragma HLS PIPELINE II=1 - ap_uint::value> tile_idx[NumGates][kNumPEs]; + ap_uint::value> tile_idx[NumGates][kNumPEs]; #pragma HLS ARRAY_PARTITION variable=tile_idx complete dim=0 for (int j = 0; j < kNumPEs; ++j) { for (int g = 0; g < NumGates; ++g) { @@ -331,7 +339,9 @@ template (&y)[InWidth / OutWidth]) { #pragma HLS INLINE +#ifndef __VITIS_HLS__ #pragma HLS ARRAY_PARTITION variable=y complete dim=1 +#endif const int kDivider = InWidth / OutWidth; const int kInputSize = output_size / kDivider; assert(InWidth % OutWidth == 0); @@ -380,26 +392,25 @@ void StreamSplitter(const int output_size, * * @param[in] use_nz_dim If true, there are #num_non_zero_tiles different * PEs (for the U-unit), else there are - * #num_elems_per_tile different PEs (for the V-unit). + * #tile_size different PEs (for the V-unit). * @param[in] gate_port The gate port * @param gate_stream The gate PEs stream * * @tparam NumIter Number of refinement steps. * @tparam num_non_zero_tiles Number of non pruned tiles. - * @tparam num_elems_per_tile Number of elements per tile. + * @tparam tile_size Number of elements per tile. */ template -void GateDMA(const bool use_nz_dim, const int num_iter, - const int num_non_zero_tiles, const int num_elems_per_tile, - const T *gate_port, hls::stream *gate_streams) { +void DispatchGateFromArray(const bool use_nz_dim, const int num_iter, + const int num_non_zero_tiles, const int tile_size, + const T* gate_port, hls::stream* gate_streams) { #pragma HLS INLINE -#pragma HLS FUNCTION_INSTANTIATE vriable=num_iter -#pragma HLS FUNCTION_INSTANTIATE vriable=num_non_zero_tiles -#pragma HLS FUNCTION_INSTANTIATE vriable=num_elems_per_tile +#pragma HLS FUNCTION_INSTANTIATE variable=num_iter +#pragma HLS FUNCTION_INSTANTIATE variable=num_non_zero_tiles +#pragma HLS FUNCTION_INSTANTIATE variable=tile_size const int kI = num_iter; const int kNZ = num_non_zero_tiles; - const int kE = num_elems_per_tile; - + const int kE = tile_size; I : for (int i = 0; i < kI; ++i) { Z : for (int z = 0; z < kNZ; ++z) { E : for (int e = 0; e < kE; ++e) { @@ -415,6 +426,29 @@ void GateDMA(const bool use_nz_dim, const int num_iter, } } +template +void DispatchGateFromStream(const bool use_nz_dim, const int num_refinements, + const int num_non_zero_tiles, const int tile_size, + hls::stream* gate_port, hls::stream gate_streams[NumGates][NumStreams]) { +#pragma HLS INLINE +#pragma HLS FUNCTION_INSTANTIATE variable=num_refinements +#pragma HLS FUNCTION_INSTANTIATE variable=num_non_zero_tiles + I : for (int i = 0; i < num_refinements; ++i) { + Z : for (int z = 0; z < num_non_zero_tiles; ++z) { + E : for (int e = 0; e < tile_size; ++e) { +#pragma HLS PIPELINE II=1 + for (int g = 0; g < NumGates; ++g) { + if (use_nz_dim) { + gate_streams[g][z].write(gate_port[g].read()); // for U weights + } else { + gate_streams[g][e].write(gate_port[g].read()); // for V weights + } + } + } + } + } +} + /** * @brief Dispatch input elements to several PEs. All PEs receive the same * amount of elements and in the same clock cycle. @@ -533,6 +567,40 @@ void PipelinedDispatcher(const int input_size, } } + +#ifdef __VITIS_HLS__ +template +void VectorizedInputDMA(const int R, + hls::stream& x_port, + hls::stream x_streams[params::N]) { + + typedef typename params::ActivationD ActivationType; + const int kNumTilesU = params::I / params::Tu; + svd::AxiStreamPort x_axis = svd::AxiStreamPort(x_port); + typename params::VectTuType x_buffer[params::N][kNumTilesU]; +#pragma HLS ARRAY_PARTITION variable=x_buffer complete dim=1 + + Store_X_Buffer: + for (int i = 0; i < params::N; ++i) { + for (int j = 0; j < kNumTilesU; ++j) { +#pragma HLS LOOP_FLATTEN +#pragma HLS PIPELINE II=1 + // x_buffer[i][j] = x_axis.PopVector(); + } + } + Stream_X_Tiles: + for (int i = 0; i < R; ++i) { +#pragma HLS LOOP_TRIPCOUNT min=params::R max=params::R + for (int j = 0; j < kNumTilesU; ++j) { +#pragma HLS PIPELINE II=1 + for (int k = 0; k < params::N; ++k) { + x_streams[k] << x_buffer[k][j]; + } + } + } +} +#endif + } // end namespace svd #endif // end DMA_SVD_DMA_H_ \ No newline at end of file diff --git a/include/dma/width_converter.h b/include/dma/width_converter.h index 58ba6eb..2a65b73 100644 --- a/include/dma/width_converter.h +++ b/include/dma/width_converter.h @@ -2,6 +2,7 @@ #define DMA_WIDTH_CONVERTER_H_ #include "ap_int.h" +#include "assert.h" #include #include @@ -145,8 +146,6 @@ void Mem2MemDataWidthConverter(const int num_in_words, #pragma HLS PIPELINE II=1 const int kHi = ((i + 1) * InWidth) % OutWidth - 1; const int kLo = (i * InWidth) % OutWidth; - std::cout << "(" << kHi << ", " << kLo << ")\n"; - // if constexpr (std::is_same::value || std::is_same::value) { // elem_out(kHi, kLo) = in[i]; // } else { diff --git a/include/hls_utils/adder_tree.h b/include/hls_utils/adder_tree.h index 7b3c360..d6caf34 100644 --- a/include/hls_utils/adder_tree.h +++ b/include/hls_utils/adder_tree.h @@ -4,6 +4,12 @@ #include "hls_stream.h" #include "hls_utils/hls_metaprogramming.h" +#ifdef __VITIS_HLS__ +#include "hls_vector.h" +#endif + +namespace hlsutils { + /** * @brief Given a static array, sum-reduce all its elements. * @@ -23,8 +29,8 @@ DataType adder_tree(DataType x[NumPE]) { // Determine the number of ranks for the adder tree and declare array: // - The adder_tree is larger than required as each rank only needs to be // half the size of the previous rank. - const unsigned kNumPEsLog2 = hls_utils::log2::value; - const unsigned kNumPEsSub1Log2 = hls_utils::log2::value; + const unsigned kNumPEsLog2 = hlsutils::log2::value; + const unsigned kNumPEsSub1Log2 = hlsutils::log2::value; const unsigned kNumRanks = kNumPEsLog2 != kNumPEsSub1Log2 ? kNumPEsLog2 : kNumPEsLog2 + 1; DataType adder_tree[kNumRanks][NumPE]; #pragma HLS ARRAY_PARTITION variable=adder_tree complete dim=0 @@ -96,8 +102,8 @@ DataType adder_tree(hls::stream x[NumPE]) { // Determine the number of ranks for the adder tree and declare array: // - The adder_tree is larger than required as each rank only needs to be // half the size of the previous rank. - const unsigned kNumPEsLog2 = hls_utils::log2::value; - const unsigned kNumPEsSub1Log2 = hls_utils::log2::value; + const unsigned kNumPEsLog2 = hlsutils::log2::value; + const unsigned kNumPEsSub1Log2 = hlsutils::log2::value; const unsigned kNumRanks = kNumPEsLog2 != kNumPEsSub1Log2 ? kNumPEsLog2 : kNumPEsLog2 + 1; DataType adder_tree[kNumRanks][NumPE]; #pragma HLS ARRAY_PARTITION variable=adder_tree complete dim=0 @@ -149,4 +155,68 @@ DataType adder_tree(hls::stream x[NumPE]) { return ret_val; } +#ifdef __VITIS_HLS__ +template +DataType adder_tree(hls::vector x) { +#pragma HLS ARRAY_PARTITION variable=x complete // to force II=1 +#pragma HLS PIPELINE II=1 + // Determine the number of ranks for the adder tree and declare array: + // - The adder_tree is larger than required as each rank only needs to be + // half the size of the previous rank. + const unsigned kNumPEsLog2 = hlsutils::log2::value; + const unsigned kNumPEsSub1Log2 = hlsutils::log2::value; + const unsigned kNumRanks = kNumPEsLog2 != kNumPEsSub1Log2 ? kNumPEsLog2 : kNumPEsLog2 + 1; + DataType adder_tree[kNumRanks][NumPE]; +#pragma HLS ARRAY_PARTITION variable=adder_tree complete dim=0 + + unsigned rank_size = NumPE; + DataType ret_val = 0; + + add_level_loop: + for(int adder_tree_rank = kNumRanks - 1; adder_tree_rank >= 0; --adder_tree_rank) { + const bool kLoopInit = adder_tree_rank == kNumRanks - 1 ? true : false; + const bool kLoopEpilog = adder_tree_rank == 0 ? true : false; + + if (kLoopInit) { + rank_size = NumPE; + } + + const bool prev_rank_is_odd = rank_size % 2 == 0 ? false : true; + rank_size = (rank_size + 1) / 2; + + add_col_loop: + for(int jj = 0; jj < (NumPE + 1) / 2; ++jj) { + if (jj < rank_size) { + if (prev_rank_is_odd && jj == rank_size - 1) { + // Bypass, no adder required. + if (kLoopInit) { + adder_tree[adder_tree_rank][jj] = x[jj * 2]; + // adder_tree[adder_tree_rank][jj] = x[jj * 2]; + } else { + adder_tree[adder_tree_rank][jj] = adder_tree[adder_tree_rank + 1][jj * 2]; + } + } else { + if (kLoopInit) { + auto y_acc = x[jj * 2] + x[jj * 2 + 1]; + // auto y_acc = x[jj * 2] + x[jj * 2 + 1]; +#pragma HLS RESOURCE variable=y_acc core=AddSub_DSP + adder_tree[adder_tree_rank][jj] = y_acc; + } else{ + auto y_acc = adder_tree[adder_tree_rank + 1][jj * 2] + adder_tree[adder_tree_rank + 1][jj * 2 + 1]; +#pragma HLS RESOURCE variable=y_acc core=AddSub_DSP + adder_tree[adder_tree_rank][jj] = y_acc; + } + } + } + } + if (kLoopEpilog) { + ret_val = adder_tree[0][0]; + } + } + return ret_val; +} +#endif + +} // hlsutils + #endif // end HLS_UTILS_ADDER_TREE_H_ \ No newline at end of file diff --git a/include/hls_utils/dot_prod_dsp.h b/include/hls_utils/dot_prod_dsp.h index 322c43b..79319e0 100644 --- a/include/hls_utils/dot_prod_dsp.h +++ b/include/hls_utils/dot_prod_dsp.h @@ -42,6 +42,8 @@ #include "ap_int.h" #include "assert.h" +namespace hlsutils { + /** * @brief Implements p0 += y_dsp * w_dsp + y_lut * w_lut; p1 += x_dsp * * w_dsp + x_lut * w_lut; @@ -149,4 +151,6 @@ void dot_prod_dsp_lut_generic(const T x_dsp, const T y_dsp, const T w_dsp, p1 += p1_tmp; } +} // hlsutils + #endif // end HLS_UTILS_DOT_PROD_DSP_H_ \ No newline at end of file diff --git a/include/hls_utils/hls_debugging.h b/include/hls_utils/hls_debugging.h index af9eaef..213f82b 100644 --- a/include/hls_utils/hls_debugging.h +++ b/include/hls_utils/hls_debugging.h @@ -2,6 +2,9 @@ #define HLS_UTILS_HLS_DEBUGGING #include "hls_utils/hw_timer.h" +#ifdef __VITIS_HLS__ +#include "hls_vector.h" +#endif #include #include @@ -10,12 +13,12 @@ #define HLS_DEBUG_LEVEL 0 #endif -namespace hls_utils { +namespace hlsutils { static int hls_debug_level = HLS_DEBUG_LEVEL; -void Log(const int verbose_level, const std::string &str) { - std::cout << str << std::endl; +template +void Log(const int verbose_level, const T* str) { #ifndef __SYNTHESIS__ if (verbose_level < hls_debug_level) { std::cout << str << std::endl; @@ -23,7 +26,16 @@ void Log(const int verbose_level, const std::string &str) { #endif } +#ifdef __VITIS_HLS__ +template +void PrintVector(hls::vector &x) { + for (int i = 0; i < N; ++i) { + std::cout << x[i] << " "; + } + std::cout << std::endl; +} +#endif -} // hls_utils +} // hlsutils #endif // HLS_UTILS_HLS_DEBUGGING \ No newline at end of file diff --git a/include/hls_utils/hls_metaprogramming.h b/include/hls_utils/hls_metaprogramming.h index 252e1d9..156299d 100644 --- a/include/hls_utils/hls_metaprogramming.h +++ b/include/hls_utils/hls_metaprogramming.h @@ -1,11 +1,11 @@ #ifndef HLS_UTILS_HLS_METAPROGRAMMING_H_ #define HLS_UTILS_HLS_METAPROGRAMMING_H_ -namespace hls_utils { +namespace hlsutils { template struct log2 { - enum {value = 1 + hls_utils::log2::value}; + enum {value = 1 + hlsutils::log2::value}; }; template <> @@ -26,13 +26,13 @@ class GCDbase; template class GCD { public: - static const int value = hls_utils::GCDbase::value; + static const int value = hlsutils::GCDbase::value; }; template class GCDbase { public: - static const int value = hls_utils::GCDbase::value; + static const int value = hlsutils::GCDbase::value; }; template @@ -46,6 +46,46 @@ struct Bitwidth { static const int value = T::width; }; +template<> +struct Bitwidth { + static const int value = 8; +}; + +template<> +struct Bitwidth { + static const int value = 32; +}; + +template<> +struct Bitwidth { + static const int value = 16; +}; + +template<> +struct Bitwidth { + static const int value = 64; +}; + +template<> +struct Bitwidth { + static const int value = 8; +}; + +template<> +struct Bitwidth { + static const int value = 32; +}; + +template<> +struct Bitwidth { + static const int value = 16; +}; + +template<> +struct Bitwidth { + static const int value = 64; +}; + template<> struct Bitwidth { static const int value = 32; @@ -56,9 +96,16 @@ struct Bitwidth { static const int value = 64; }; -template +#ifdef __VITIS_HLS__ +template +struct VectBitwidth { + static const int value = N * Bitwidth::value; +}; +#endif + +template struct PrunedSize { - static const int value = N * X / T * (T - ZT); + static const int value = R * X / T * (T - ZT); }; @@ -71,6 +118,11 @@ struct is_pow2 { static const bool value = (N & (N - 1)) == 0; }; +template +struct round_up_div { + static const unsigned int value = (X + Y - 1) / Y; +}; + } // end namespace hls #endif // end HLS_UTILS_HLS_METAPROGRAMMING_H_ \ No newline at end of file diff --git a/include/hls_utils/hw_timer.h b/include/hls_utils/hw_timer.h index 94f11b9..58b1196 100644 --- a/include/hls_utils/hw_timer.h +++ b/include/hls_utils/hw_timer.h @@ -3,6 +3,8 @@ #include "hls_stream.h" +namespace hlsutils { + /** * @brief Synthesizeable HLS clock counter. Note: this module must be * placed in a DATAFLOW region and at the bottom of it (to avoid @@ -354,4 +356,9 @@ const int NUM_HW_TIMERS = 1; */ static unsigned long long hw_timers[NUM_HW_TIMERS]; +typedef long long CounterD; +typedef hls::stream ProbeStream; + +} // hlsutils + #endif // end HLS_UTILS_HW_TIMER_H_ \ No newline at end of file diff --git a/include/hls_utils/priority_encoder.h b/include/hls_utils/priority_encoder.h index 7805f7c..5a07fd1 100644 --- a/include/hls_utils/priority_encoder.h +++ b/include/hls_utils/priority_encoder.h @@ -3,7 +3,9 @@ #include "hls_utils/hls_metaprogramming.h" -namespace svd { +#include "assert.h" + +namespace hlsutils { /** * @brief Priority Encoder: returns the MSB set bit. @@ -64,7 +66,7 @@ int PriorityEncoderLSB(const T a) { } template -void PriorityEncoder(const int num_zero_tiles, const ap_uint a, hls::stream::value> > &idx_stream) { +void PriorityEncoder(const int num_zero_tiles, const ap_uint a, hls::stream::value> > &idx_stream) { ap_uint tmp = a; for (int i = 0; i < NumTiles - num_zero_tiles; ++i) { #pragma HLS PIPELINE II=1 @@ -76,7 +78,7 @@ void PriorityEncoder(const int num_zero_tiles, const ap_uint a, hls::s } template -void PriorityEncoder(const int num_zero_tiles, const T a, hls::stream::value> > &idx_stream) { +void PriorityEncoder(const int num_zero_tiles, const T a, hls::stream::value> > &idx_stream) { T tmp = a; for (int i = 0; i < T::width - num_zero_tiles; ++i) { #pragma HLS PIPELINE II=1 @@ -87,6 +89,6 @@ void PriorityEncoder(const int num_zero_tiles, const T a, hls::stream +void GemvKernel(const int num_rows, const int num_cols, + hls::stream > x_streams[N], + hls::stream > w_streams[N], + hls::stream y_streams[N]) { + assert(num_rows % T == 0); + const int kNumTiles = num_rows / T; + for (int i = 0; i < num_cols; ++i) { +#pragma HLS LOOP_TRIPCOUNT min=testgemv::R max=testgemv::R + hls::vector tmp[N] = {hls::vector(0)}; +#pragma HLS ARRAY_PARTITION variable=tmp complete + for (int j = 0; j < kNumTiles; ++j) { +#pragma HLS LOOP_TRIPCOUNT min=testgemv::I/T max=testgemv::I/T +#pragma HLS PIPELINE II=1 + for (int k = 0; k < N; ++k) { + tmp[k] += x_streams[k].read() * w_streams[k].read(); + if (j == kNumTiles - 1) { + y_streams[k] << tmp[k].reduce_add(); + } + } + } + } +} +#endif + +} // svd + +void HlsGemvKernel(const int num_rows, const int num_cols, + hls::stream >& x1_port, + hls::stream >& x2_port, + hls::stream >& w1_port, + hls::stream >& w2_port, + hls::stream& y1_port, + hls::stream& y2_port); + +#endif // end KERNEL_GEMV_KERNEL_H_ \ No newline at end of file diff --git a/include/kernel/s_kernel.h b/include/kernel/s_kernel.h index 9b7e7b8..dc105fc 100644 --- a/include/kernel/s_kernel.h +++ b/include/kernel/s_kernel.h @@ -3,15 +3,21 @@ #include "svd_params.h" #include "hls_utils/adder_tree.h" +#include "dma/axis_lib.h" +#include "hls_utils/hls_metaprogramming.h" + +#include "hls_stream.h" + +namespace svd { template -void KernelS(svd::SvdStreams &streams) { +void KernelS(const int num_refinements, svd::SvdStreams &streams) { typedef typename params::AccumulationD accum_t; - for (int i = 0; i < params::R; ++i) { + for (int i = 0; i < num_refinements; ++i) { #pragma HLS PIPELINE II=1 for (int j = 0; j < params::N; ++j) { for (int k = 0; k < params::G; ++k) { - auto sum = adder_tree(streams.xu[j][k]); + auto sum = hlsutils::adder_tree(streams.xu[j][k]); auto xs = sum * streams.s[j][k].read(); for (int ii = 0; ii < params::PeV; ++ii) { streams.xus[j][k][ii].write(xs); @@ -21,4 +27,98 @@ void KernelS(svd::SvdStreams &streams) { } } +template > +struct KernelS_Params { + static const int N = Ni; + static const int G = Gi; + static const int ActivationWidth = hlsutils::Bitwidth::value; + static const int VectG_AxiWidth = ActivationWidth * G; + typedef ActivationD_tp ActivationD; + typedef typename svd::AxiStreamPort::AxiuPacketType VectG_AxiPacketType; +#ifdef __VITIS_HLS__ + typedef hls::vector VectG_Type; +#endif +}; + +#ifndef __VITIS_HLS__ +#else +template < + typename params, + typename PortWrapper = svd::AxiStreamPort +> +void KernelS(const int num_active_inputs, + const int num_refinements[params::N], + hls::stream& xu_port, + hls::stream& s_port, + hls::stream& xus_port) { +#pragma HLS TOP name=KernelS +#pragma HLS DATAFLOW +#pragma HLS INLINE +#ifndef __VITIS_HLS__ +#pragma HLS STABLE variable=xu_port +#pragma HLS STABLE variable=s_port +#pragma HLS STABLE variable=xus_port +#endif + assert(num_active_inputs <= params::N); + assert(num_active_inputs > 0); + int R_max = num_refinements[0]; + int R_total = num_refinements[0] * num_active_inputs; // Total elements. + Get_Total_R: + for (int i = 1; i < num_active_inputs; ++i) { +#pragma HLS PIPELINE II=1 + if (num_refinements[i] > R_max) { + R_max = num_refinements[i]; + } + assert(num_refinements[i] >= num_refinements[i - 1]); + R_total += (num_refinements[i] - num_refinements[i - 1]) * (num_active_inputs - i); + } + auto xu_axis = svd::AxiStreamInterface(xu_port); + auto s_axis = svd::AxiStreamPort(s_port); + auto xus_axis = svd::AxiStreamInterface(xus_port); + S_Kernel: + for (int i = 0; i < R_total; ++i) { +#pragma HLS PIPELINE II=1 style=frp + typedef typename params::ActivationD ActivationType; + auto xu_val = xu_axis.template PopVector(); + auto s_val = s_axis.template PopVector(); + auto xus_val = xu_val * s_val; + const bool kIsLast = i == R_total - 1; + xus_axis.template PushVector(xus_val, kIsLast); + } +} +#endif // __VITIS_HLS__ + +} // svd + +namespace tests { + +static const int kNumInputs = 2; +static const int kInputSize = 512; +static const int Tu = 4; +// NOTE: The rest of the parameters are unused for now. +static const int kDummySize = 1; +static const int R = 8; +static const int Tv = 1; +static const int ZTu = 0; +static const int ZTv = 0; +static const int G = 4; + +typedef svd::SvdParameters params; + short, short, short> params; + +} // tests + +#ifndef __VITIS_HLS__ +#else +void HlsKernelS( + const int num_refinements[tests::params::N], + // const hls::vector num_refinements, + hls::stream& xu_port, + hls::stream& s_port, + hls::stream& xus_port); +#endif + #endif // end KERNEL_S_KERNEL_H_ \ No newline at end of file diff --git a/include/kernel/svd_kernel.h b/include/kernel/svd_kernel.h index 7d5e24d..f782fae 100644 --- a/include/kernel/svd_kernel.h +++ b/include/kernel/svd_kernel.h @@ -3,19 +3,216 @@ #include "svd_params.h" #include "dma/svd_dma.h" +#include "dma/axis_lib.h" #include "kernel/u_kernel.h" #include "kernel/s_kernel.h" #include "kernel/v_kernel.h" +namespace svd { + template inline void SvdKernel(svd::SvdStreams &streams) { #pragma HLS INLINE #ifndef __VITIS_HLS__ #pragma HLS DATAFLOW #endif - KernelU(streams); - KernelS(streams); - KernelV(streams); + svd::KernelU(params::R, streams); + svd::KernelS(params::R, streams); + svd::KernelV(params::R, streams); +} + +template < + typename params, + typename WrapperAxisGTv = svd::AxiStreamPort +> +void SvdKernel(const int num_active_inputs, + const int input_size, + const int output_size, + const int num_refinements[params::N], + hls::stream& x_port, + hls::stream& u_port, + hls::stream& s_port, + hls::stream& v_port, + hls::stream& y_port) { +#pragma HLS TOP name=SvdKernel +#pragma HLS INLINE +#pragma HLS DATAFLOW +#ifndef __VITIS_HLS__ +#pragma HLS STABLE variable=x_port +#pragma HLS STABLE variable=u_port +#pragma HLS STABLE variable=s_port +#pragma HLS STABLE variable=v_port +#pragma HLS STABLE variable=y_port +#endif +#pragma HLS ARRAY_PARTITION variable=num_refinements complete + const bool pad_output = false; + typedef svd::AxiStreamFifo WrapperFifoG; + hls::stream xu_port("xu_port"); + hls::stream xus_port("xus_port"); +#pragma HLS STREAM variable=xu_port depth=2 +#pragma HLS STREAM variable=xus_port depth=2 + int num_refinements_u[params::N]; + int num_refinements_s[params::N]; + int num_refinements_v[params::N]; +#pragma HLS ARRAY_PARTITION variable=num_refinements_u complete +#pragma HLS ARRAY_PARTITION variable=num_refinements_s complete +#pragma HLS ARRAY_PARTITION variable=num_refinements_v complete + Duplicate_R_Stream: + for (int i = 0; i < params::N; ++i) { +#pragma HLS UNROLL + num_refinements_u[i] = num_refinements[i]; + num_refinements_s[i] = num_refinements[i]; + num_refinements_v[i] = num_refinements[i]; + } + svd::KernelU(num_active_inputs, input_size, + num_refinements_u, pad_output, x_port, u_port, xu_port); + svd::KernelS(num_active_inputs, num_refinements_s, + xu_port, s_port, xus_port); + svd::KernelV(num_active_inputs, + output_size, num_refinements_v, xus_port, v_port, y_port); } +/** + * @brief Sets the SVD kernel inputs, i.e. streams from arrays into + * hls::streams. + * + * @param[in] num_active_inputs The number of active inputs + * @param[in] input_size The input size + * @param[in] output_size The output size + * @param[in] num_refinements The number of refinements + * @param[in] x The input array. Shape: (N, I) + * @param[in] u The u array. Shape: (R, I, G) + * @param[in] s The s array. Shape: (R, N, G) + * @param[in] v The v array. Shape: (R, H, G) + * @param x_port The x port to be used as argument to SvdKernel + * @param u_port The u port to be used as argument to SvdKernel + * @param s_port The s port to be used as argument to SvdKernel + * @param v_port The v port to be used as argument to SvdKernel + * + * @tparam params Collection of SVD configuration params. + */ +#ifdef __VITIS_HLS__ +template +void SetSvdKernelInputs(const int num_active_inputs, + const int input_size, + const int output_size, + const int num_refinements[params::N], + const typename params::ActivationD* x, + const typename params::ActivationD* u, + const typename params::ActivationD* s, + const typename params::ActivationD* v, + hls::stream& x_port, + hls::stream& u_port, + hls::stream& s_port, + hls::stream& v_port) { + typedef typename params::ActivationD ActivationType; + const int kG = params::G; + const int kTu = params::Tu; + const int kTv = params::Tv; + const int kGTv = kG * kTv; + const int kNumTilesU = input_size / kTu; + const int kNumTilesV = output_size / kTv; + auto x_axis = svd::AxiStreamPort(x_port); + auto u_axis = svd::AxiStreamPort(u_port); + auto s_axis = svd::AxiStreamPort(s_port); + auto v_axis = svd::AxiStreamPort(v_port); + int max_R = num_refinements[0]; + typename params::VectTuType x_val; + typename params::VectTuType u_val; + typename params::VectG_Type s_val; + typename params::VectTvType v_val; + for (int i = i; i < params::N; ++i) { + if (num_refinements[i] > max_R) { + max_R = num_refinements[i]; + } + } + for (int j = 0; j < kNumTilesU; ++j) { + for (int i = 0; i < num_active_inputs; ++i) { + for (int k = 0; k < kTu; ++k) { + x_val[k] = x[i * input_size + j * kTu + k]; + } + x_axis.template PushVector(x_val); + } + } + for (int i = 0; i < max_R; ++i) { + for (int j = 0; j < kNumTilesU; ++j) { + for (int k = 0; k < kG; ++k) { + for (int ii = 0; ii < kTu; ++ii) { + u_val[ii] = u[i * kNumTilesU * kTu * kG + (j * kTu + ii) * kG + k]; + } + u_axis.template PushVector(u_val); + } + } + } + for (int i = 0; i < max_R; ++i) { + for (int j = 0; j < num_active_inputs; ++j) { + if (i < num_refinements[j]) { + for (int k = 0; k < kG; ++k) { + s_val[k] = s[i * num_active_inputs * kG + j * kG + k]; + } + s_axis.template PushVector(s_val); + } + } + } + for (int i = 0; i < max_R; ++i) { + for (int j = 0; j < kNumTilesV; ++j) { + for (int k = 0; k < kG; ++k) { + for (int ii = 0; ii < kTv; ++ii) { + v_val[ii] = v[i * kNumTilesV * kTv * kG + (j * kTv + ii) * kG + k]; + } + v_axis.template PushVector(v_val); + } + } + } +} +#endif // __VITIS_HLS__ + +/** + * @brief Gets the svd kernel outputs, i.e. fills in an array from + * hls::streams. + * + * @param[in] num_active_inputs The number active inputs + * @param[in] output_size The output size (H) + * @param y_port The y port to be used as argument to SvdKernel + * @param y The output array. Shape: (N, G, H) + * + * @tparam params Collection of SVD configuration params. + */ +#ifdef __VITIS_HLS__ +template +void GetSvdKernelOutputs(const int num_active_inputs, const int output_size, + hls::stream& y_port, + typename params::ActivationD* y) { + typedef typename params::ActivationD ActivationType; + const int kG = params::G; + const int kTv = params::Tv; + const int kGTv = kG * kTv; + const int kNumTilesV = output_size / kTv; + auto y_axis = svd::AxiStreamPort(y_port); + for (int j = 0; j < kNumTilesV; ++j) { + for (int i = 0; i < num_active_inputs; ++i) { + auto y_val = y_axis.template PopVector(); + for (int k = 0; k < kTv; ++k) { + for (int ii = 0; ii < kG; ++ii) { + int y_idx = i * output_size * kG + ii * output_size + j * kTv + k; + y[y_idx] = y_val[k * kG + ii]; + } + } + } + } +} +#endif // __VITIS_HLS__ + +} // svd + +void HlsSvdKernel(const int num_active_inputs, + const int input_size, + const int output_size, + const int num_refinements[svd::svd_params::N], + hls::stream& x_port, + hls::stream& u_port, + hls::stream& s_port, + hls::stream& v_port, + hls::stream& y_port); + #endif // end KERNEL_SVD_KERNEL_H_ \ No newline at end of file diff --git a/include/kernel/u_kernel.h b/include/kernel/u_kernel.h index 71b566d..10f971b 100644 --- a/include/kernel/u_kernel.h +++ b/include/kernel/u_kernel.h @@ -3,24 +3,35 @@ #include "svd_params.h" #include "hls_utils/hls_metaprogramming.h" +#include "hls_utils/hls_debugging.h" +#include "hls_utils/adder_tree.h" +#include "dma/axis_lib.h" +#include "ap_axi_sdata.h" #include "hls_stream.h" +#include "assert.h" +#ifdef __VITIS_HLS__ +#include "hls_vector.h" +#endif + +namespace svd { /** * @brief Kernel performing x @ U. * - * @param[in] size The size, ideally: params::R * params::PrunedSizeU / params::R / params::PeU * @param streams The streams group + * @param[in] size The size, ideally: params::R * params::PrunedSizeU / params::R + * / params::PeU * * @tparam params The algorithm characteristics */ template -void KernelU(svd::SvdStreams &streams) { +void KernelU(const int num_refinements, svd::SvdStreams &streams) { typename params::AccumulationD xu[params::N][params::G][params::PeU]; #pragma HLS ARRAY_PARTITION variable=xu complete dim=0 - for (int i = 0; i < params::R; ++i) { - for (int j = 0; j < params::PrunedSizeU / params::R / params::PeU; ++j) { -#pragma HLS PIPELINE II=1 + for (int i = 0; i < num_refinements; ++i) { + for (int j = 0; j < params::PrunedSizeU / params::PeU; ++j) { +#pragma HLS PIPELINE II=1 style=frp for (int k = 0; k < params::PeU; ++k) { for (int g = 0; g < params::G; ++g) { auto u = streams.u[g][k].read(); @@ -30,7 +41,7 @@ void KernelU(svd::SvdStreams &streams) { } xu[ii][g][k] += u * streams.x[ii][g][k].read(); #pragma HLS RESOURCE variable=xu[ii][g][k] core=DSP48 latency=3 - if (j == params::PrunedSizeU / params::R / params::PeU - 1) { + if (j == params::PrunedSizeU / params::PeU - 1) { streams.xu[ii][g][k].write(xu[ii][g][k]); } } @@ -40,8 +51,6 @@ void KernelU(svd::SvdStreams &streams) { } } -namespace svd { - /** * @brief Performs MAC operation. The weight values are read directly from * a port (which can be modeled as a FIFO). @@ -57,170 +66,47 @@ namespace svd { * @tparam NumIter The number of refinement steps * @tparam NumTimesteps The number of LSTM timesteps */ -template +template void UDotUnit2LstmPe(const int vect_length, const int num_tiles, - const int num_iter, const int num_timesteps, - hls::stream &x1_stream, - hls::stream &x2_stream, - hls::stream &gate_u_stream, - hls::stream &acc1_stream, - hls::stream &acc2_stream) { + const int num_iter, + hls::stream x1_stream[NumGates][NumPEs], + hls::stream x2_stream[NumGates][NumPEs], + hls::stream gate_u_stream[NumGates][NumPEs], + hls::stream acc1_stream[NumGates][NumPEs], + hls::stream acc2_stream[NumGates][NumPEs]) { #pragma HLS INLINE off #pragma HLS FUNCTION_INSTANTIATE variable=vect_length #pragma HLS FUNCTION_INSTANTIATE variable=num_iter #pragma HLS FUNCTION_INSTANTIATE variable=num_tiles -#pragma HLS FUNCTION_INSTANTIATE variable=num_timesteps -// #pragma HLS INTERFACE ap_ctrl_none port=return assert(vect_length % num_tiles == 0); - - const int kNumElemsPerTile = vect_length / num_tiles; - AccumType y1_mac = 0; - AccumType y2_mac = 0; - - ReduceProd_PE_IterTimesteps_Loop: - for (int i = 0; i < num_iter * num_timesteps; ++i) { - ReduceProd_PE_Loop: - for (int j = 0; j < kNumElemsPerTile; ++j) { -#pragma HLS PIPELINE II=1 - if (j == 0) { - y1_mac = 0; - y2_mac = 0; - } - auto u_val = gate_u_stream.read(); - auto mac1 = u_val * x1_stream.read(); - auto mac2 = u_val * x2_stream.read(); - mac1 += y1_mac; - mac2 += y2_mac; -#pragma HLS RESOURCE variable=mac1 core=DSP48 -#pragma HLS RESOURCE variable=mac2 core=DSP48 - y1_mac = mac1; - y2_mac = mac2; - if (j == kNumElemsPerTile - 1) { - acc1_stream.write(y1_mac); - acc2_stream.write(y2_mac); - } - } - } -} - -/** - * @brief Accumulate partial results from ReduceProd PEs. - * - * @param acc1_streams The acc 1 streams, each from a PE - * @param acc2_streams The acc 2 streams, each from a PE - * @param y1_stream The single y_1 stream - * @param y2_stream The single y_2 stream - * - * @tparam VectLength The input vector dimension - * @tparam NumTiles The number of used tiles (to determine the - * number of PEs) - * @tparam NumZeroTiles The number of pruned tiles (to determine the - * number of PEs) - * @tparam NumIter The number of refinement steps (to make the - * pipeline longer) - * @tparam NumTimesteps The number of LSTM timesteps (to make the - * pipeline longer) - * @tparam AdderTreeDesign Enable or disable AdderTree design. Default is - * active, i.e. true. - */ -template -void UDotUnit2LstmAccumulator(svd::AccumStream (&acc1_streams)[NumTiles-NumZeroTiles], - svd::AccumStream (&acc2_streams)[NumTiles-NumZeroTiles], - svd::ActivationStream &y1_stream, - svd::ActivationStream &y2_stream) { -#pragma HLS INLINE off -// #pragma HLS INTERFACE ap_ctrl_none port=return - const int kNumPEs = NumTiles - NumZeroTiles; - - if (AdderTreeDesign) { - // Determine the number of ranks for the adder tree and declare array - // - The adder_tree is larger than required as each rank only needs to be half the size of the previous rank - const unsigned kNumPEsLog2 = hls_utils::log2::value; - const unsigned kNumPEsSub1Log2 = hls_utils::log2::value; - const unsigned kNumRanks = kNumPEsLog2 != kNumPEsSub1Log2 ? kNumPEsLog2 : kNumPEsLog2 + 1; - svd::AccumD adder_tree1[kNumRanks][kNumPEs]; - svd::AccumD adder_tree2[kNumRanks][kNumPEs]; - - unsigned rank_size = kNumPEs; - - for (int i = 0; i < NumIter * NumTimesteps; ++i) { -#pragma HLS PIPELINE II=1 - add_level_loop: - for(int adder_tree_rank = kNumRanks - 1; adder_tree_rank >= 0; --adder_tree_rank) { - const bool kLoopInit = adder_tree_rank == kNumRanks - 1 ? true : false; - const bool kLoopEpilog = adder_tree_rank == 0 ? true : false; - - if (kLoopInit) { - rank_size = kNumPEs; - } - - const bool prev_rank_is_odd = rank_size % 2 == 0 ? false : true; - rank_size = (rank_size + 1) / 2; - // std::cout << "[" << adder_tree_rank << "] rank_size: " << rank_size << "\n"; - - add_col_loop: - for(int jj = 0; jj < (kNumPEs + 1) / 2; ++jj) { - if (jj < rank_size) { - if (prev_rank_is_odd && jj == rank_size - 1) { - // Bypass, no adder required. - if (kLoopInit) { - adder_tree1[adder_tree_rank][jj] = acc1_streams[jj * 2].read(); - adder_tree2[adder_tree_rank][jj] = acc2_streams[jj * 2].read(); - // std::cout << "\t\tstream[" << adder_tree_rank << "][" << jj * 2 << "] = [" << jj << "]\n"; - } else { - adder_tree1[adder_tree_rank][jj] = adder_tree1[adder_tree_rank + 1][jj * 2]; - adder_tree2[adder_tree_rank][jj] = adder_tree2[adder_tree_rank + 1][jj * 2]; - // std::cout << "\t\tbuffer[" << adder_tree_rank << "][" << jj * 2 << "] = [" << adder_tree_rank + 1 << "][" << jj << "]\n"; - } - } else { - if (kLoopInit) { - auto y1_acc = acc1_streams[jj * 2].read() + acc1_streams[jj * 2 + 1].read(); - auto y2_acc = acc2_streams[jj * 2].read() + acc2_streams[jj * 2 + 1].read(); -#pragma HLS RESOURCE variable=y1_acc core=AddSub_DSP -#pragma HLS RESOURCE variable=y2_acc core=AddSub_DSP - adder_tree1[adder_tree_rank][jj] = y1_acc; - adder_tree2[adder_tree_rank][jj] = y2_acc; - // std::cout << "\tstreams[" << adder_tree_rank << "][" << jj << "] = [" << jj * 2 << "] + [" << jj * 2 + 1 << "]\n"; - } else{ - auto y1_acc = adder_tree1[adder_tree_rank + 1][jj * 2] + adder_tree1[adder_tree_rank + 1][jj * 2 + 1]; - auto y2_acc = adder_tree2[adder_tree_rank + 1][jj * 2] + adder_tree2[adder_tree_rank + 1][jj * 2 + 1]; -#pragma HLS RESOURCE variable=y1_acc core=AddSub_DSP -#pragma HLS RESOURCE variable=y2_acc core=AddSub_DSP - adder_tree1[adder_tree_rank][jj] = y1_acc; - adder_tree2[adder_tree_rank][jj] = y2_acc; - // std::cout << "\tbuffer[" << adder_tree_rank << "][" << jj << "] = [" << adder_tree_rank + 1 << "][" << jj * 2 << "] + [" << adder_tree_rank + 1 << "][" << jj * 2 + 1 << "]\n"; - } + const int kNumInputs = 2; + const int kTileSize = vect_length / num_tiles; + AccumType y_mac[NumGates][NumPEs][kNumInputs] = {0}; + AccumType x_val[NumGates][NumPEs][kNumInputs] = {0}; +#pragma HLS ARRAY_PARTITION variable=y_mac complete dim=0 +#pragma HLS ARRAY_PARTITION variable=x_val complete dim=0 + U_Unit_PE: + for (int i = 0; i < num_iter; ++i) { + for (int j = 0; j < kTileSize; ++j) { +#pragma HLS PIPELINE II=1 style=frp + for (int k = 0; k < NumGates; ++k) { + for (int ii = 0; ii < NumPEs; ++ii) { + auto u_val = gate_u_stream[k][ii].read(); + x_val[k][ii][0] = x1_stream[k][ii].read(); + x_val[k][ii][1] = x2_stream[k][ii].read(); + for (int jj = 0; jj < kNumInputs; ++jj) { + if (j == 0) { + y_mac[k][ii][jj] = 0; } + auto mac = u_val * x_val[k][ii][jj]; + mac += y_mac[k][ii][jj]; +#pragma HLS RESOURCE variable=mac core=DSP48 + y_mac[k][ii][jj] = mac; + } + if (j == kTileSize - 1) { + acc1_stream[k][ii].write(y_mac[k][ii][0]); + acc2_stream[k][ii].write(y_mac[k][ii][1]); } - } - if (kLoopEpilog) { - y1_stream.write(adder_tree1[0][0]); - y2_stream.write(adder_tree2[0][0]); - // std::cout << "\n"; - } - } - } - } else { - svd::AccumD y1_acc = 0; - svd::AccumD y2_acc = 0; - for (int i = 0; i < NumIter * NumTimesteps; ++i) { - AdderTree_PE_Loop: - for (int j = 0; j < kNumPEs; ++j) { -#pragma HLS PIPELINE II=1 - if (j == 0) { - y1_acc = 0; - y2_acc = 0; - } - auto acc1 = y1_acc + acc1_streams[j].read(); - auto acc2 = y2_acc + acc2_streams[j].read(); -#pragma HLS RESOURCE variable=acc1 core=AddSub_DSP -#pragma HLS RESOURCE variable=acc2 core=AddSub_DSP - y1_acc = acc1; - y2_acc = acc2; - if (j == kNumPEs - 1) { - y1_stream.write(y1_acc); - y2_stream.write(y2_acc); } } } @@ -246,12 +132,12 @@ void UDotUnit2LstmAccumulator(svd::AccumStream (&acc1_streams)[NumTiles-NumZeroT * @tparam NumZeroTiles The number of zeroed, i.e. pruned, tiles */ template -void UDotUnit2Lstm(svd::ActivationStream (&x1_streams)[NumTiles-NumZeroTiles], - svd::ActivationStream (&x2_streams)[NumTiles-NumZeroTiles], - WeightStream (&gate_u_streams)[NumTiles-NumZeroTiles], - svd::ActivationStream &y1, - svd::ActivationStream &y2) { + int NumGates> +void UDotUnit2Lstm(svd::ActivationStream x1_streams[NumGates][NumTiles-NumZeroTiles], + svd::ActivationStream x2_streams[NumGates][NumTiles-NumZeroTiles], + WeightStream gate_u_streams[NumGates][NumTiles-NumZeroTiles], + svd::ActivationStream y1[NumGates], + svd::ActivationStream y2[NumGates]) { assert(VectLength % NumTiles == 0); assert(NumZeroTiles < NumTiles); assert(NumTiles >= 8); @@ -268,8 +154,8 @@ void UDotUnit2Lstm(svd::ActivationStream (&x1_streams)[NumTiles-NumZeroTiles], // =========================================================================== const int kNumNonZeroTiles = NumTiles - NumZeroTiles; const int kNumPEs = kNumNonZeroTiles; - const int kNumElemsPerTile = VectLength / NumTiles; - const int kStreamDepth = NumIter * kNumElemsPerTile; + const int kTileSize = VectLength / NumTiles; + const int kStreamDepth = NumIter * kTileSize; svd::AccumD y1_mul[kNumPEs]; svd::AccumD y2_mul[kNumPEs]; #pragma HLS ARRAY_PARTITION variable=y1_mul complete dim=1 @@ -294,8 +180,8 @@ void UDotUnit2Lstm(svd::ActivationStream (&x1_streams)[NumTiles-NumZeroTiles], y1_mul[i] = 0; y2_mul[i] = 0; ReduceProd_Tile_Loop: - for (int j = 0; j < kNumElemsPerTile / 2; ++j) { -#pragma HLS PIPELINE II=1 + for (int j = 0; j < kTileSize / 2; ++j) { +#pragma HLS PIPELINE II=1 style=frp // auto p0_tmp = y_dsp * w_dsp + y_lut * w_lut; // auto p1_tmp = x_dsp * w_dsp + x_lut * w_lut; // p0 += p0_tmp; @@ -332,7 +218,7 @@ void UDotUnit2Lstm(svd::ActivationStream (&x1_streams)[NumTiles-NumZeroTiles], ReduceProd_Accumulation_Loop: for (int i = 0; i < NumIter * NumTimesteps; ++i) { for (int j = 0; j < kNumPEs; ++j) { -#pragma HLS PIPELINE II=1 +#pragma HLS PIPELINE II=1 style=frp y1_acc += y1_mul[j]; y2_acc += y2_mul[j]; } @@ -343,40 +229,286 @@ void UDotUnit2Lstm(svd::ActivationStream (&x1_streams)[NumTiles-NumZeroTiles], // ============================================================================= // Implements #mac_PEs = NumTiles - NumZeroTiles & #Adder_Tree = 1 // ============================================================================= -// #pragma HLS INTERFACE ap_ctrl_none port=return #pragma HLS DATAFLOW -// #pragma HLS INLINE - - const unsigned kNumNonZeroTiles = NumTiles - NumZeroTiles; - const unsigned kNumPEs = kNumNonZeroTiles; +#pragma HLS INLINE + const int kNumNonZeroTiles = NumTiles - NumZeroTiles; + const int kNumInputs = 2; // NOTE: both PE and adder-tree have II=1, but the adder-tree reads in round // robin fashion from the PE queues. Hence, before the adder-tree reads again // from the same PE queue, kNumPEs cycles pass. This contrains the depth of // the queues to kNumPEs. (THIS WON'T WORK, TOO LOW CONSUMER RATE) // FIXED: Using an adder tree allows to use a stream of depth 1. - const unsigned kStreamDepth = 1; // VectLength / NumTiles; + const int kStreamDepth = 2; // VectLength / NumTiles; + hls::stream acc_streams[kNumInputs][NumGates][kNumNonZeroTiles]; +#pragma HLS ARRAY_PARTITION variable=acc_streams complete dim=0 +#pragma HLS STREAM variable=acc_streams depth=kStreamDepth + svd::UDotUnit2LstmPe(VectLength, + NumTiles, NumIter, x1_streams, x2_streams, gate_u_streams, + acc_streams[0], acc_streams[1]); + UAccumUnit: + for (int i = 0; i < NumIter; ++i) { +#pragma HLS PIPELINE II=1 style=frp + for (int j = 0; j < NumGates; ++j) { + auto y1_val = svd::ActivationD(hlsutils::adder_tree(acc_streams[0][j])); + auto y2_val = svd::ActivationD(hlsutils::adder_tree(acc_streams[1][j])); + y1[j].write(y1_val); + y2[j].write(y2_val); + } + } +#endif // end REDUCE_PROD_2LSTM_DATAFLOW_DESIGN +} - hls::stream acc1_streams[kNumNonZeroTiles]; - hls::stream acc2_streams[kNumNonZeroTiles]; -#pragma HLS ARRAY_PARTITION variable=acc1_streams complete dim=1 -#pragma HLS ARRAY_PARTITION variable=acc1_streams complete dim=1 -#pragma HLS STREAM variable=acc1_streams depth=kStreamDepth -#pragma HLS STREAM variable=acc2_streams depth=kStreamDepth +#ifdef __VITIS_HLS__ +/** + * @brief Flexible Kernel-U. + * + * @param[in] num_active_inputs The number of active inputs + * @param[in] input_size The input size + * @param[in] num_refinements The number of refinements steps (R) per input: + * the Rs must be positive, greater than zero and + * in ASCENDING ORDER. Their amount must be less + * or equal to num_active_inputs. There should be + * #num_active_inputs defined Rs (with no gaps), + * as only the first #num_active_inputs Rs will + * be considered. + * @param[in] pad_output Wether to pad output with zeroes + * @param x_port The input x port + * @param u_port The input u port + * @param xu_port The output xu port + * + * @tparam params The collection of fixed parameters and + * configurations. + */ +template < + typename params, + typename WrapperAxisG = svd::AxiStreamPort +> +void KernelU(const int num_active_inputs, + const int input_size, + const int num_refinements[params::N], + const bool pad_output, + hls::stream& x_port, + hls::stream& u_port, + hls::stream& xu_port) { +#pragma HLS TOP name=KernelU +#pragma HLS DATAFLOW +#pragma HLS INLINE +#ifndef __VITIS_HLS__ +#pragma HLS STABLE variable=x_port +#pragma HLS STABLE variable=u_port +#pragma HLS STABLE variable=xu_port +#endif + assert(num_active_inputs <= params::N); + assert(num_active_inputs > 0); + assert(params::I % params::Tu == 0); + assert(input_size % params::Tu == 0); + assert(input_size <= params::I); + const int kNumTilesU = input_size / params::Tu; + const int kMaxNumTilesU = params::I / params::Tu; + const int kStreamDepth_X = 2 + kMaxNumTilesU * params::N; + const int kStreamDepth_U = 8 + kMaxNumTilesU * params::N; + const int kStreamDepth_XU = 2 + params::G; + assert(kNumTilesU <= kMaxNumTilesU); + typedef typename params::ActivationD ActivationType; + auto x_axis = svd::AxiStreamPort(x_port); + auto u_axis = svd::AxiStreamPort(u_port); + auto xu_axis = svd::AxiStreamInterface(xu_port); + hls::stream x_stream("x_stream"); + hls::stream u_streams[params::G]; + hls::stream xu_streams[params::G]; + ActivationType x_buffer[params::N][params::Tu][kMaxNumTilesU]; +#pragma HLS STREAM variable=x_stream depth=kStreamDepth_X +#pragma HLS STREAM variable=u_streams depth=kStreamDepth_U +#pragma HLS STREAM variable=xu_streams depth=kStreamDepth_XU +#pragma HLS ARRAY_PARTITION variable=u_streams complete dim=1 +#pragma HLS ARRAY_PARTITION variable=x_buffer complete dim=1 +#pragma HLS ARRAY_PARTITION variable=x_buffer complete dim=2 +#pragma HLS BIND_STORAGE variable=x_buffer type=ram_t2p impl=bram latency=1 + /* + * Ideally, if the Rs are ordered, it would be: R0 * N + (R1-R0) * (N-1) + + * (R2-R1) * (N-2) + * + * Imagine we have: R0 = 2, R1 = 3, R2 = 6 + * + * This means: + * - till refinement 2 we have input 0 to process + * - till refinement 3 we have input 1 to process + * - till refinement 6 we have input 2 to process + * + * So it would become: + * + * R_total = 2 * 3 + (3-2) * (3-1) + (6-3) * (3-2) + */ + int R_max = num_refinements[0]; + int R_total = num_refinements[0] * num_active_inputs; // Total elements. + Get_Total_R: + for (int i = 1; i < num_active_inputs; ++i) { +#pragma HLS PIPELINE II=1 style=frp + if (num_refinements[i] > R_max) { + R_max = num_refinements[i]; + } + assert(num_refinements[i] >= num_refinements[i - 1]); + R_total += (num_refinements[i] - num_refinements[i - 1]) * (num_active_inputs - i); + } - PE_Loop: - for (int pe = 0; pe < kNumPEs; ++pe) { -#pragma HLS UNROLL - UDotUnit2LstmPe(VectLength, - NumTiles, NumIter, NumTimesteps, - x1_streams[pe], x2_streams[pe], gate_u_streams[pe], acc1_streams[pe], - acc2_streams[pe]); + int R_prev = 0; + X_DMA: + for (int ii = 0; ii < num_active_inputs; ++ii) { + Stream_X_Tiles: + for (int i = 0; i < num_refinements[ii] - R_prev; ++i) { + assert(num_refinements[ii] - R_prev >= 1); + for (int j = 0; j < kNumTilesU; ++j) { + for (int k = 0; k < num_active_inputs - ii; ++k) { +#pragma HLS PIPELINE II=1 style=frp + assert(num_active_inputs - ii >= 1); + if (ii == 0 && i == 0) { + auto x_val = x_axis.template PopVector(); + x_stream << x_val; + for (int jj = 0; jj < params::Tu; ++jj) { + x_buffer[k][jj][j] = x_val[jj]; + } + } else { + assert(k + ii < params::N); + typename params::VectTuType x_val; + for (int jj = 0; jj < params::Tu; ++jj) { + x_val[jj] = x_buffer[k + ii][jj][j]; + } + x_stream << x_val; + } + } + } + } + R_prev = num_refinements[ii]; + } + U_DMA: + for (int i = 0; i < R_max; ++i) { +#pragma HLS LOOP_TRIPCOUNT min=params::R max=params::R + for (int j = 0; j < kNumTilesU; ++j) { + for (int k = 0; k < params::G; ++k) { + auto u_val = u_axis.template PopVector(); + for (int ii = 0; ii < num_active_inputs; ++ii) { +#pragma HLS PIPELINE II=1 style=frp + if (i < num_refinements[ii]) { + u_streams[k] << u_val; + } + } + } + } + } + U_Kernel: + for (int i = 0; i < R_total; ++i) { + for (int j = 0; j < kNumTilesU; ++j) { +#pragma HLS PIPELINE II=1 style=frp + auto x_val = x_stream.read(); + for (int k = 0; k < params::G; ++k) { + xu_streams[k] << hlsutils::adder_tree(x_val * u_streams[k].read()); + // xu_streams[k] << (x_val * u_streams[k].read()).reduce_add(); + } + } + } + int iter_cnt = 0; + XU_DMA: + for (int i = 0; i < R_max; ++i) { + typename params::VectG_Type xu_out[params::N] = {typename params::VectG_Type(0)}; +#pragma HLS ARRAY_PARTITION variable=xu_out complete dim=1 + for (int j = 0; j < kNumTilesU; ++j) { + for (int k = 0; k < num_active_inputs; ++k) { +#pragma HLS PIPELINE II=1 style=frp + for (int ii = 0; ii < params::G; ++ii) { + if (i < num_refinements[k]) { + xu_out[k][ii] += xu_streams[ii].read(); +#pragma HLS BIND_OP variable=xu_out[k][ii] op=add impl=dsp + } + } + if (i < num_refinements[k] && j == kNumTilesU - 1) { + const bool kIsLast = (iter_cnt == R_total - 1 && !pad_output); + xu_axis.template PushVector(xu_out[k], kIsLast); + ++iter_cnt; + } else if (pad_output) { + const bool kIsLast = i == R_max - 1 && j == kNumTilesU - 1 && k == num_active_inputs - 1; + xu_axis.template PushVector(xu_out[k], kIsLast); + ++iter_cnt; + } + } + } } - UDotUnit2LstmAccumulator( - acc1_streams, acc2_streams, y1, y2); -#endif // end REDUCE_PROD_2LSTM_DATAFLOW_DESIGN } +#endif // end __VITIS_HLS__ } // svd +namespace testu { + +static const int kNumInputs = 4; +static const int kInputSize = 1024; +static const int Tu = 4; +// NOTE: The rest of the parameters are unused for now. +static const int kDummySize = 1; +static const int R = 8; +static const int Tv = 1; +static const int ZTu = 0; +static const int ZTv = 0; +static const int G = 4; + +typedef svd::SvdParameters params; + short, short, short> params; + +static const int VectTuAxiBitwidth = hlsutils::Bitwidth::value * params::Tu; +static const int VectN_AxiBitwidth = hlsutils::Bitwidth::value * params::N; +static const int VectGN_AxiBitwidth = hlsutils::Bitwidth::value * params::G * params::N; +#ifdef __VITIS_HLS__ +typedef hls::vector VectTuType; +typedef hls::vector VectN_Type; +typedef hls::vector VectGN_Type; +#endif +typedef svd::AxiStreamPort::PacketType VectTuAxiPacketType; +typedef svd::AxiStreamPort::PacketType VectN_AxiPacketType; +typedef svd::AxiStreamPort::PacketType VectGN_AxiPacketType; + +} // testu + +#ifndef __VITIS_HLS__ +void HlsKernelU(const int num_refinements, + const typename testu::params::ActivationD x_port[testu::params::N][testu::params::I], + const typename testu::params::UPortD u_port[testu::params::R * testu::params::PrunedSizeU], + typename testu::params::ActivationD xu_port[testu::params::N][testu::params::G * testu::params::R]); +#else +void HlsVectorKernelU(const int num_refinements, + hls::stream >& x_port, + hls::stream >& u_port, + hls::stream >& xu_port); + +void HlsAxisKernelU(const int num_refinements, + hls::stream& x_port, + hls::stream& u_port, + hls::stream& xu_port); + +/** + * @brief Synthesizeable flexible Kernel-U. + * + * @param[in] num_active_inputs The number of active inputs + * @param[in] input_size The input size + * @param[in] num_refinements The number of refinements steps (R) per input: + * the Rs must be positive, greater than zero and + * in ASCENDING ORDER. Their amount must be less + * or equal to num_active_inputs. + * @param[in] pad_output Wether to pad output with zeroes + * @param x_port The input x port + * @param u_port The input u port + * @param xu_port The output xu port + */ +void HlsKernelU(const int num_active_inputs, + const int input_size, + const int num_refinements[testu::params::N], + // const hls::vector num_refinements, + const bool pad_output, + hls::stream& x_port, + hls::stream& u_port, + hls::stream& xu_port); + +#endif // end __VITIS_HLS__ #endif // end KERNEL_U_KERNEL_H_ \ No newline at end of file diff --git a/include/kernel/v_kernel.h b/include/kernel/v_kernel.h index d07483d..b57abb1 100644 --- a/include/kernel/v_kernel.h +++ b/include/kernel/v_kernel.h @@ -3,8 +3,10 @@ #include "svd_params.h" +namespace svd { + template -void KernelV(svd::SvdStreams &streams) { +void KernelV(const int num_refinements, svd::SvdStreams &streams) { #pragma HLS INLINE #ifndef __VITIS_HLS__ #pragma HLS DATAFLOW @@ -34,8 +36,8 @@ void KernelV(svd::SvdStreams &streams) { #endif if (params::ZTv > 0) { // constexpr V_Nz_Converter: - for (int i = 0; i < params::R; ++i) { - for (int j = 0; j < params::PrunedSizeV / params::R / params::PeV; ++j) { + for (int i = 0; i < num_refinements; ++i) { + for (int j = 0; j < params::PrunedSizeV / params::PeV; ++j) { #pragma HLS PIPELINE II=1 #pragma HLS LOOP_FLATTEN for (int k = 0; k < params::G; ++k) { @@ -61,8 +63,8 @@ void KernelV(svd::SvdStreams &streams) { } } V_Unit: - for (int i = 0; i < params::R; ++i) { - for (int j = 0; j < params::PrunedSizeV / params::R / params::PeV; ++j) { + for (int i = 0; i < num_refinements; ++i) { + for (int j = 0; j < params::PrunedSizeV / params::PeV; ++j) { #pragma HLS PIPELINE II=1 #pragma HLS LOOP_FLATTEN for (int g = 0; g < params::G; ++g) { @@ -97,433 +99,388 @@ void KernelV(svd::SvdStreams &streams) { } } - -namespace svd { - -template +template void VDotUnit2LstmV2(const bool has_bias, svd::WeightStream *bias1, svd::WeightStream *bias2, - svd::ActivationStream &gate_dot1_streams, - svd::ActivationStream &gate_dot2_streams, - svd::WeightStream &gate_s1_streams, - svd::WeightStream &gate_s2_streams, - svd::WeightStream (&gate_v_streams)[VectLength / NumTiles], - hls::stream > &comb_stream_port, - svd::ActivationStream (&gate_out1_streams)[VectLength / NumTiles], - svd::ActivationStream (&gate_out2_streams)[VectLength / NumTiles], - bool debug_module = false, - ProbeStream *probe_ctrl = nullptr) { + svd::ActivationStream gate_dot1_streams[NumGates], + svd::ActivationStream gate_dot2_streams[NumGates], + svd::WeightStream gate_s1_streams[NumGates], + svd::WeightStream gate_s2_streams[NumGates], + svd::WeightStream gate_v_streams[NumGates][VectLength / NumTiles], + hls::stream > nz_port[NumGates], + svd::ActivationStream gate_out1_streams[NumGates][VectLength / NumTiles], + svd::ActivationStream gate_out2_streams[NumGates][VectLength / NumTiles]) { #pragma HLS INLINE #pragma HLS DATAFLOW - assert(VectLength % NumTiles == 0); assert(NumTiles > NumZeroTiles); assert(NumTiles % 2 == 0); assert(NumIter % 2 == 0); - + const int kNumInputs = 2; const int kFifoResizeFactor = 4; const int kNonZeroTiles = NumTiles - NumZeroTiles; - const int kNumTileElems = VectLength / NumTiles; + const int kTileSize = VectLength / NumTiles; // NOTE: By the time the dot products are available at the ports, the weight // values s1, s2 and v should be already at the FIFO ports. const int kStreamDepth = NumIter / kFifoResizeFactor; - hls::stream xs1_streams[kNumTileElems]; - hls::stream xs2_streams[kNumTileElems]; -#pragma HLS STREAM variable=xs1_streams depth=kStreamDepth dim=1 -#pragma HLS STREAM variable=xs2_streams depth=kStreamDepth dim=1 - - // svd::MultD xs1_val = 0; - // svd::MultD xs2_val = 0; - - ScalarMul: + hls::stream xus_streams[NumGates][kNumInputs][kTileSize]; +#pragma HLS STREAM variable=xus_streams depth=kStreamDepth dim=0 + S_Kernel: for (int i = 0; i < NumIter; ++i) { #pragma HLS INLINE off #pragma HLS PIPELINE II=1 - auto xs1_val = gate_s1_streams.read() * gate_dot1_streams.read(); - auto xs2_val = gate_s2_streams.read() * gate_dot2_streams.read(); -#pragma HLS RESOURCE variable=xs1_val core=DSP48 latency=3 -#pragma HLS RESOURCE variable=xs2_val core=DSP48 latency=3 - ScalarMulDispatcher: - for (int j = 0; j < kNumTileElems; ++j) { - xs1_streams[j].write(xs1_val); - xs2_streams[j].write(xs2_val); + for (int g = 0; g < NumGates; ++g) { + svd::MultD xus_val[kNumInputs]; + #pragma HLS ARRAY_PARTITION variable=xus_val complete dim=0 + xus_val[0] = gate_s1_streams[g].read() * gate_dot1_streams[g].read(); + xus_val[1] = gate_s2_streams[g].read() * gate_dot2_streams[g].read(); + #pragma HLS RESOURCE variable=xus_val[0] core=DSP48 latency=3 + #pragma HLS RESOURCE variable=xus_val[1] core=DSP48 latency=3 + for (int j = 0; j < kTileSize; ++j) { + for (int k = 0; k < kNumInputs; ++k) { + xus_streams[g][k][j].write(xus_val[k]); + } + } } } - - svd::WeightStream bias1_streams[kNumTileElems]; - svd::WeightStream bias2_streams[kNumTileElems]; - if (has_bias) { -#pragma HLS STREAM variable=bias1_streams depth=NumTiles dim=1 -#pragma HLS STREAM variable=bias2_streams depth=NumTiles dim=1 -#pragma HLS ARRAY_PARTITION variable=bias1_streams complete dim=1 -#pragma HLS ARRAY_PARTITION variable=bias2_streams complete dim=1 - } - + svd::WeightStream bias_streams[NumGates][kNumInputs][kTileSize]; if (has_bias) { - BiasDispatcher_tiles: +#pragma HLS ARRAY_PARTITION variable=bias_streams complete dim=0 +#pragma HLS STREAM variable=bias_streams depth=NumTiles + Bias_DMA: for (int i = 0; i < NumTiles; ++i) { -#pragma HLS INLINE off - BiasDispatcher_elems: - for (int j = 0; j < kNumTileElems; ++j) { + for (int j = 0; j < kTileSize; ++j) { #pragma HLS PIPELINE II=1 - bias1_streams[j].write(bias1->read()); - bias2_streams[j].write(bias2->read()); + for (int k = 0; k < NumGates; ++k) { + bias_streams[k][0][j].write(bias1[k].read()); + bias_streams[k][1][j].write(bias2[k].read()); + } } } } - const int kCombStreamDepth = NumIter * NumZeroTiles / (kFifoResizeFactor * 2); - const int kNzBitLength = hls_utils::log2::value; - hls::stream > nz_idx_streams[kNumTileElems]; -#pragma HLS STREAM variable=nz_idx_streams depth=kCombStreamDepth dim=1 + const int kNzBitLength = hlsutils::log2::value; + hls::stream > nz_idx_streams[NumGates][kTileSize]; +#pragma HLS STREAM variable=nz_idx_streams depth=kCombStreamDepth dim=0 #pragma HLS RESOURCE variable=nz_idx_streams core=FIFO_SRL - -#if 0 // USE_PRIORITY_ENCODER +// #define V_UNIT_USE_PRIORITY_ENCODER +#ifdef V_UNIT_USE_PRIORITY_ENCODER // =========================================================================== // NOTE: The critical path is HUGE here. So we go for the other solution. // =========================================================================== - ap_uint zero_comb = 0; - - Convert_Iter: + ap_uint z_idx = 0; + ZIndex_Converter: for (int i = 0; i < NumIter; ++i) { for (int j = 0; j < NumTiles - NumZeroTiles; ++j) { #pragma HLS PIPELINE II=1 if (j == 0) { - zero_comb = comb_stream_port.read(); - int set_idx = PriorityEncoderLSB(zero_comb); + z_idx = nz_port.read(); + int set_idx = PriorityEncoderLSB(z_idx); assert(set_idx < NumTiles); - for (int k = 0; k < kNumTileElems; ++k) { + for (int k = 0; k < kTileSize; ++k) { nz_idx_streams[k].write(set_idx); } - zero_comb[set_idx] = 0; + z_idx[set_idx] = 0; } else { - int set_idx = PriorityEncoderLSB(zero_comb); + int set_idx = PriorityEncoderLSB(z_idx); assert(set_idx < NumTiles); - for (int k = 0; k < kNumTileElems; ++k) { + for (int k = 0; k < kTileSize; ++k) { nz_idx_streams[k].write(set_idx); } - zero_comb[set_idx] = 0; + z_idx[set_idx] = 0; } } } #else - ap_uint c; - int nz_cnt = 0; - assert(nz_cnt < kNonZeroTiles); - - CombConverter_iter: + ap_uint z_idx[NumGates]; + int nz_cnt[NumGates] = {0}; +#pragma HLS ARRAY_PARTITION variable=z_idx complete dim=0 +#pragma HLS ARRAY_PARTITION variable=nz_cnt complete dim=0 + ZIndex_Converter: for (int i = 0; i < NumIter; ++i) { #pragma HLS INLINE off - CombConverter_tiles: for (int j = 0; j < NumTiles; ++j) { #pragma HLS LOOP_FLATTEN #pragma HLS PIPELINE II=1 #pragma HLS LOOP_TRIPCOUNT min=kNonZeroTiles max=kNonZeroTiles - if (j == 0) { - c = comb_stream_port.read(); - // std::cout << "nz[" << i << "] = " << c.to_string(2, false) << "\n"; - if (c[0] == 1) { - for (int k = 0; k < kNumTileElems; ++k) { - nz_idx_streams[k].write(0); - } - nz_cnt++; - } - } else { - if (c[j] == 1) { - CombConverter_elem: - for (int k = 0; k < kNumTileElems; ++k) { - nz_idx_streams[k].write(j); + for (int g = 0; g < NumGates; ++g) { + assert(nz_cnt[g] < kNonZeroTiles); + if (j == 0) { + z_idx[g] = nz_port[g].read(); + if (z_idx[g][0] == 1) { + for (int k = 0; k < kTileSize; ++k) { + nz_idx_streams[g][k].write(0); + } + ++nz_cnt[g]; } - if (nz_cnt == kNonZeroTiles - 1) { - nz_cnt = 0; - break; - } else { - nz_cnt++; + } else { + if (z_idx[g][j] == 1) { + for (int k = 0; k < kTileSize; ++k) { + nz_idx_streams[g][k].write(j); + } + if (nz_cnt[g] == kNonZeroTiles - 1) { + nz_cnt[g] = 0; + break; + } else { + ++nz_cnt[g]; + } } } } } } #endif - -#if 1 V_Kernel: { #pragma HLS INLINE off - if (debug_module) { - probe_ctrl->write(1); - } - - svd::AccumD acc_buffer1[kNumTileElems][NumTiles]; - svd::AccumD acc_buffer2[kNumTileElems][NumTiles]; -#pragma HLS ARRAY_PARTITION variable=acc_buffer1 complete dim=1 -#pragma HLS ARRAY_PARTITION variable=acc_buffer2 complete dim=1 -// #pragma HLS RESOURCE variable=acc_buffer1 core=RAM_T2P_BRAM latency=1 -// #pragma HLS RESOURCE variable=acc_buffer2 core=RAM_T2P_BRAM latency=1 -// #pragma HLS RESOURCE variable=acc_buffer1 core=RAM_T2P_URAM -// #pragma HLS RESOURCE variable=acc_buffer2 core=RAM_T2P_URAM - -// #pragma HLS RESOURCE variable=acc_buffer1 core=XPM_MEMORY uram -// #pragma HLS RESOURCE variable=acc_buffer2 core=XPM_MEMORY uram - - + svd::AccumD acc_buffer[NumGates][kNumInputs][kTileSize][NumTiles]; +#pragma HLS ARRAY_PARTITION variable=acc_buffer complete dim=1 +#pragma HLS ARRAY_PARTITION variable=acc_buffer complete dim=2 +#pragma HLS ARRAY_PARTITION variable=acc_buffer complete dim=3 Init_buffer: for (int i = 0; i < NumTiles; ++i) { #pragma HLS PIPELINE II=1 - for (int j = 0; j < kNumTileElems; ++j) { - acc_buffer1[j][i] = 0; - acc_buffer2[j][i] = 0; + for (int j = 0; j < kTileSize; ++j) { + for (int k = 0; k < kNumInputs; ++k) { + for (int g = 0; g < NumGates; ++g) { + acc_buffer[g][k][j][i] = 0; + } + } } } - - ap_uint nz_idx[kNumTileElems]; - svd::AccumD xs1[kNumTileElems]; - svd::AccumD xs2[kNumTileElems]; -#pragma HLS ARRAY_PARTITION variable=nz_idx complete -#pragma HLS ARRAY_PARTITION variable=xs1 complete -#pragma HLS ARRAY_PARTITION variable=xs2 complete - svd::AccumD mac_1[kNumTileElems]; - svd::AccumD mac_2[kNumTileElems]; -#pragma HLS ARRAY_PARTITION variable=mac_1 complete -#pragma HLS ARRAY_PARTITION variable=mac_2 complete - svd::AccumD acc_1[kNumTileElems]; - svd::AccumD acc_2[kNumTileElems]; -#pragma HLS ARRAY_PARTITION variable=acc_1 complete -#pragma HLS ARRAY_PARTITION variable=acc_2 complete - - svd::WeightD v[kNumTileElems]; -#pragma HLS ARRAY_PARTITION variable=v complete - -#ifndef __SYNTHESIS__ - int nz_idx_buf[kNumTileElems][NumIter * kNonZeroTiles] = {-1}; - const int kPipelineDepth = 8; - const bool printout = false; -#endif - + ap_uint nz_idx[NumGates][kTileSize]; + svd::AccumD xus[NumGates][kNumInputs][kTileSize]; + svd::AccumD mac[NumGates][kNumInputs][kTileSize]; + svd::AccumD acc[NumGates][kNumInputs][kTileSize]; + svd::WeightD v[NumGates][kTileSize]; +#pragma HLS ARRAY_PARTITION variable=nz_idx complete dim=0 +#pragma HLS ARRAY_PARTITION variable=xus complete dim=0 +#pragma HLS ARRAY_PARTITION variable=mac complete dim=0 +#pragma HLS ARRAY_PARTITION variable=acc complete dim=0 +#pragma HLS ARRAY_PARTITION variable=v complete dim=0 for (int i = 0; i < NumIter; ++i) { for (int k = 0; k < kNonZeroTiles; ++k) { #pragma HLS LOOP_FLATTEN #pragma HLS PIPELINE II=1 - for (int j = 0; j < kNumTileElems; ++j) { - if (k == 0) { - xs1[j] = xs1_streams[j].read(); - xs2[j] = xs2_streams[j].read(); - } - nz_idx[j] = nz_idx_streams[j].read(); - -#ifndef __SYNTHESIS__ - // =================================================================== - // Naive dependency detection mechanism: - // =================================================================== - // std::cout << "\tPE n." << j << " accessing acc_buffer[" << j << "][" << nz_idx[j] << "]\n"; - const int idx = i * kNonZeroTiles + k; - nz_idx_buf[j][idx] = nz_idx[j]; - - if (idx > 0) { - int dependency_idx = -1; - if (j == 0 && printout) { - std::cout << "curr_idx: " << nz_idx[j] << "\nprev_idx: "; - } - for (int q = idx - 1; q > 0; --q) { - if (nz_idx_buf[j][idx] == nz_idx_buf[j][q]) { - dependency_idx = q; - break; - } - } - if (j == 0 && printout) { - for (int q = idx; q > 0; --q) { - if (q - 1 == dependency_idx && idx - dependency_idx < kPipelineDepth) { - std::cout << "<(("; - } - std::cout << nz_idx_buf[j][q - 1]; - if (q - 1 == dependency_idx && idx - dependency_idx < kPipelineDepth) { - std::cout << "))>"; - } - std::cout << " "; - if ((q - 1) % kNonZeroTiles == 0) { - std::cout << "| "; - } - } - std::cout << "\ndistance: " << idx - dependency_idx << "\n"; - } - // NOTE: The dependency will be the same for all PEs, i.e. j indexes. - if (j == 0 && dependency_idx != -1 && idx - dependency_idx < kPipelineDepth) { - //num_raw_hazards++; - if (printout) { - std::cout << "[WARNING] Possible dependecy detected: nz[" << idx << "] = " << nz_idx_buf[j][idx] - << " -> nz[" << dependency_idx << "] = " << nz_idx_buf[j][dependency_idx] - << ", distance: " << idx - dependency_idx << "\n"; + for (int g = 0; g < NumGates; ++g) { + for (int j = 0; j < kTileSize; ++j) { + if (k == 0) { + for (int ii = 0; ii < kNumInputs; ++ii) { + xus[g][ii][j] = xus_streams[g][ii][j].read(); } } - if (j == 0 && printout) { - std::cout << "\n"; + nz_idx[g][j] = nz_idx_streams[g][j].read(); + v[g][j] = gate_v_streams[g][j].read(); + for (int ii = 0; ii < kNumInputs; ++ii) { + mac[g][ii][j] = (xus[g][ii][j] * v[g][j]) + acc_buffer[g][ii][j][nz_idx[g][j]]; +#pragma HLS RESOURCE variable=mac[g][ii][j] core=DSP48 latency=3 +#pragma HLS DEPENDENCE variable=acc_buffer RAW false inter distance=kNonZeroTiles + acc_buffer[g][ii][j][nz_idx[g][j]] = mac[g][ii][j]; } } -#endif - v[j] = gate_v_streams[j].read(); - - mac_1[j] = (xs1[j] * v[j]) + acc_buffer1[j][nz_idx[j]]; - mac_2[j] = (xs2[j] * v[j]) + acc_buffer2[j][nz_idx[j]]; -#pragma HLS RESOURCE variable=mac_1[j] core=DSP48 latency=3 -#pragma HLS RESOURCE variable=mac_2[j] core=DSP48 latency=3 -#pragma HLS DEPENDENCE variable=acc_buffer1 RAW false inter -#pragma HLS DEPENDENCE variable=acc_buffer2 RAW false inter - - acc_buffer1[j][nz_idx[j]] = mac_1[j]; - acc_buffer2[j][nz_idx[j]] = mac_2[j]; - } // end kNumTileElems - } // end kNonZeroTiles - } // end NumIter - - WriteBack_tiles: + } + } + } + V_DMA: for (int i = 0; i < NumTiles; ++i) { #pragma HLS PIPELINE II=1 - WriteBack_elems: - for (int j = 0; j < kNumTileElems; ++j) { - if (has_bias) { - auto acc_1 = acc_buffer1[j][i] + bias1_streams[j].read(); - auto acc_2 = acc_buffer2[j][i] + bias2_streams[j].read(); + for (int j = 0; j < kTileSize; ++j) { + for (int k = 0; k < NumGates; ++k) { + if (has_bias) { + auto acc_1 = acc_buffer[k][0][j][i] + bias_streams[k][0][j].read(); + auto acc_2 = acc_buffer[k][1][j][i] + bias_streams[k][1][j].read(); #pragma HLS RESOURCE variable=acc_1 core=AddSub_DSP #pragma HLS RESOURCE variable=acc_2 core=AddSub_DSP - gate_out1_streams[j].write(acc_1); - gate_out2_streams[j].write(acc_2); - } else { - gate_out1_streams[j].write(acc_buffer1[j][i]); - gate_out2_streams[j].write(acc_buffer2[j][i]); + gate_out1_streams[k][j].write(acc_1); + gate_out2_streams[k][j].write(acc_2); + } else { + gate_out1_streams[k][j].write(acc_buffer[k][0][j][i]); + gate_out2_streams[k][j].write(acc_buffer[k][1][j][i]); + } } } } + } // end V_Function +} - if (debug_module) { - probe_ctrl->write(0); - } -#else - - svd::AccumD acc_buffer1[kNumTileElems][NumTiles]; - svd::AccumD acc_buffer2[kNumTileElems][NumTiles]; -#pragma HLS ARRAY_PARTITION variable=acc_buffer1 complete dim=1 -#pragma HLS ARRAY_PARTITION variable=acc_buffer2 complete dim=1 -#pragma HLS RESOURCE variable=acc_buffer1 core=RAM_T2P_BRAM latency=1 -#pragma HLS RESOURCE variable=acc_buffer2 core=RAM_T2P_BRAM latency=1 -// #pragma HLS STREAM variable=acc_buffer1 depth=1 -// #pragma HLS STREAM variable=acc_buffer2 depth=1 - - ap_uint nz_idx[kNumTileElems]; - svd::AccumD xs1[kNumTileElems]; - svd::AccumD xs2[kNumTileElems]; -#pragma HLS ARRAY_PARTITION variable=nz_idx complete -#pragma HLS ARRAY_PARTITION variable=xs1 complete -#pragma HLS ARRAY_PARTITION variable=xs2 complete - svd::AccumD mac_1[kNumTileElems]; - svd::AccumD mac_2[kNumTileElems]; -#pragma HLS ARRAY_PARTITION variable=mac_1 complete -#pragma HLS ARRAY_PARTITION variable=mac_2 complete - svd::AccumD acc_1[kNumTileElems]; - svd::AccumD acc_2[kNumTileElems]; -#pragma HLS ARRAY_PARTITION variable=acc_1 complete -#pragma HLS ARRAY_PARTITION variable=acc_2 complete - - svd::WeightD v[kNumTileElems]; -#pragma HLS ARRAY_PARTITION variable=v complete - - hls::stream xsv1_streams[kNumTileElems]; - hls::stream xsv2_streams[kNumTileElems]; -#pragma HLS ARRAY_PARTITION variable=xsv1_streams complete -#pragma HLS ARRAY_PARTITION variable=xsv2_streams complete -#pragma HLS STREAM variable=xsv1_streams depth=kNonZeroTiles -#pragma HLS STREAM variable=xsv2_streams depth=kNonZeroTiles - hls::stream acc1_streams[kNumTileElems]; - hls::stream acc2_streams[kNumTileElems]; -#pragma HLS ARRAY_PARTITION variable=acc1_streams complete -#pragma HLS ARRAY_PARTITION variable=acc2_streams complete - const int kStreamDepthAcc = NumTiles; -#pragma HLS STREAM variable=acc1_streams depth=kStreamDepthAcc -#pragma HLS STREAM variable=acc2_streams depth=kStreamDepthAcc - for (int n = 0; n < NumIter; ++n) { - for (int nz = 0; nz < kNonZeroTiles; ++nz) { -#pragma HLS LOOP_FLATTEN +#ifndef __VITIS_HLS__ +#else +template < + typename params, + typename WrapperAxisG = svd::AxiStreamPort, + typename WrapperAxisGTv = svd::AxiStreamPort +> +void KernelV(const int num_active_inputs, + const int output_size, + const int num_refinements[params::N], + hls::stream& xus_port, + hls::stream& v_port, + hls::stream& y_port) { +#pragma HLS TOP name=KernelV +#pragma HLS DATAFLOW +#pragma HLS INLINE +#ifndef __VITIS_HLS__ +#pragma HLS STABLE variable=xus_port +#pragma HLS STABLE variable=v_port +#pragma HLS STABLE variable=y_port +#endif + assert(num_active_inputs <= params::N); + assert(num_active_inputs > 0); + assert(params::H % params::Tv == 0); + assert(output_size % params::Tv == 0); + assert(output_size <= params::H); + typedef typename params::ActivationD ActivationType; + const int kMaxNumTilesV = params::H / params::Tv; + const int kNumTilesV = output_size / params::Tv; + const int kStreamDepth_V = 32 + kMaxNumTilesV * params::G; + assert(kNumTilesV <= kMaxNumTilesV); + auto xus_axis = svd::AxiStreamInterface(xus_port); + auto v_axis = svd::AxiStreamPort(v_port); + auto y_axis = svd::AxiStreamInterface(y_port); + hls::stream v_streams[params::G]; + // NOTE: Having y_buffer as static made cosim work in one-process configuration. + static ActivationType y_buffer[params::G][params::N][params::Tv][kMaxNumTilesV] = {0}; + typename params::VectTvType v_val; + typename params::VectG_Type xus_val[params::N]; + typename params::VectGTvType y_out; +// NOTE: I'm not accessing dimension N of y_buffer in parallel. +#pragma HLS ARRAY_PARTITION variable=v_streams complete +#pragma HLS ARRAY_PARTITION variable=y_buffer complete dim=1 +#pragma HLS ARRAY_PARTITION variable=y_buffer complete dim=3 +#pragma HLS BIND_STORAGE variable=y_buffer type=ram_t2p impl=bram latency=1 + int R_max = num_refinements[0]; + Get_Max_R: + for (int i = 1; i < num_active_inputs; ++i) { #pragma HLS PIPELINE II=1 - for (int i = 0; i < kNumTileElems; ++i) { - if (nz == 0) { - xs1[i] = xs1_streams[i].read(); - xs2[i] = xs2_streams[i].read(); - } - svd::WeightD v_val = gate_v_streams[i].read(); - svd::AccumD xvs1_val = xs1[i] * v_val; - svd::AccumD xvs2_val = xs2[i] * v_val; -#pragma HLS RESOURCE variable=xvs1_val core=DSP48 latency=3 -#pragma HLS RESOURCE variable=xvs2_val core=DSP48 latency=3 - xsv1_streams[i].write(xvs1_val); - xsv2_streams[i].write(xvs2_val); - } + if (num_refinements[i] > R_max) { + R_max = num_refinements[i]; } } - V_Kernel: { -#pragma HLS INLINE off - - Init_buffer: - for (int i = 0; i < NumTiles; ++i) { - #pragma HLS PIPELINE II=1 - for (int j = 0; j < kNumTileElems; ++j) { - acc_buffer1[j][i] = 0; - acc_buffer2[j][i] = 0; - } - } - for (int n = 0; n < NumIter; ++n) { - for (int t = 0; t < kNonZeroTiles; ++t) { -#pragma HLS LOOP_FLATTEN + V_DMA: + for (int i = 0; i < R_max; ++i) { + for (int j = 0; j < kNumTilesV; ++j) { + for (int k = 0; k < params::G; ++k) { + for (int ii = 0; ii < num_active_inputs; ++ii) { #pragma HLS PIPELINE II=1 - for (int i = 0; i < kNumTileElems; ++i) { - ActivationD operand_prev1 = 0; - ActivationD operand_curr1 = 0; - ActivationD operand_prev2 = 0; - ActivationD operand_curr2 = 0; - // =================================================================== - // Setup the internal stream - // =================================================================== - nz_idx[i] = nz_idx_streams[i].read(); - operand_prev1 = acc_buffer1[i][nz_idx[i]]; - operand_prev2 = acc_buffer2[i][nz_idx[i]]; - operand_curr1 = xsv1_streams[i].read(); - operand_curr2 = xsv2_streams[i].read(); - // =================================================================== - // Accumulate the incoming streams - // =================================================================== - svd::AccumD sum1 = operand_prev1 + operand_curr1; - svd::AccumD sum2 = operand_prev2 + operand_curr2; -#pragma HLS RESOURCE variable=sum1 core=AddSub_DSP -#pragma HLS RESOURCE variable=sum2 core=AddSub_DSP - acc_buffer1[i][nz_idx[i]] = sum1; - acc_buffer2[i][nz_idx[i]] = sum2; + if (ii == 0) { + v_val = v_axis.template PopVector(); + } + if (i < num_refinements[ii]) { + v_streams[k] << v_val; + } } } } - // =================================================================== - // Write the results to the output streams - // =================================================================== - WriteBack_tiles: - for (int i = 0; i < NumTiles; ++i) { + } + V_Kernel: + for (int i = 0; i < R_max; ++i) { + for (int j = 0; j < kNumTilesV; ++j) { + for (int k = 0; k < num_active_inputs; ++k) { #pragma HLS PIPELINE II=1 - WriteBack_elems: - for (int j = 0; j < kNumTileElems; ++j) { - if (has_bias) { - auto acc_1 = acc_buffer1[j][i] + bias1_streams[j].read(); - auto acc_2 = acc_buffer2[j][i] + bias2_streams[j].read(); -#pragma HLS RESOURCE variable=acc_1 core=AddSub_DSP -#pragma HLS RESOURCE variable=acc_2 core=AddSub_DSP - gate_out1_streams[j].write(acc_1); - gate_out2_streams[j].write(acc_2); - } else { - gate_out1_streams[j].write(acc_buffer1[j][i]); - gate_out2_streams[j].write(acc_buffer2[j][i]); + for (int ii = 0; ii < params::G; ++ii) { + assert(j < kMaxNumTilesV); + assert(k < params::N); + if (i < num_refinements[k]) { + assert(i < 512); + if (j == 0 && ii == 0) { + xus_val[k] = xus_axis.template PopVector(); + } + auto v_val = v_streams[ii].read(); + for (int jj = 0; jj < params::Tv; ++jj) { + ActivationType y_val; + if (i == 0) { + y_val = v_val[jj] * xus_val[k][ii]; + } else { + y_val = y_buffer[ii][k][jj][j] + v_val[jj] * xus_val[k][ii]; + } + y_buffer[ii][k][jj][j] = y_val; +// #pragma HLS DEPENDENCE inter variable=y_buffer false + } + } + } + if (i == R_max - 1) { + for (int jj = 0; jj < params::G; ++jj) { + for (int ii = 0; ii < params::Tv; ++ii) { + y_out[ii * params::G + jj] = y_buffer[jj][k][ii][j]; + } + } + const bool kIsLast = j == kNumTilesV-1 && k == num_active_inputs-1; + const int kGTv = params::G * params::Tv; + y_axis.template PushVector(y_out, kIsLast); } } } -#endif - } // end V_Function +// if (i == R_max - 1) { +// for (int j = 0; j < kNumTilesV; ++j) { +// for (int k = 0; k < num_active_inputs; ++k) { +// for (int jj = 0; jj < params::G; ++jj) { +// for (int ii = 0; ii < params::Tv; ++ii) { +// #pragma HLS PIPELINE II=1 +// y_out[ii * params::G + jj] = y_buffer[jj][k][ii][j]; +// } +// } +// const bool kIsLast = j == kNumTilesV-1 && k == num_active_inputs-1; +// const int kGTv = params::G * params::Tv; +// y_axis.template PushVector(y_out, kIsLast); +// } +// } +// } + } +// DMA_Out: +// for (int j = 0; j < kNumTilesV; ++j) { +// for (int k = 0; k < num_active_inputs; ++k) { +// #pragma HLS PIPELINE II=1 +// for (int jj = 0; jj < params::G; ++jj) { +// for (int ii = 0; ii < params::Tv; ++ii) { +// assert(ii * params::G + jj < params::G * params::Tv); +// y_out[ii * params::G + jj] = y_buffer[jj][k][ii][j]; +// // y_out[ii * params::G + jj] = y_val[jj][ii]; +// } +// } +// const bool kIsLast = j == kNumTilesV-1 && k == num_active_inputs-1; +// const int kGTv = params::G * params::Tv; +// y_axis.template PushVector(y_out, kIsLast); +// } +// } + } +#endif // end __VITIS_HLS__ } // svd -#endif // end KERNEL_V_KERNEL_H_ \ No newline at end of file +namespace testv { + +static const int kNumInputs = 2; +static const int kInputSize = 512; +static const int Tu = 4; +// NOTE: The rest of the parameters are unused for now. +static const int kOutputSize = 512; +static const int R = 64; +static const int Tv = 4; +static const int ZTu = 0; +static const int ZTv = 0; +static const int G = 4; + +typedef svd::SvdParameters params; + short, short, short> params; + // ap_fixed, ap_fixed, ap_fixed > params; + // float, float, float > params; + +} // testv + +#ifndef __VITIS_HLS__ +#else +void HlsKernelV(const int num_active_inputs, + const int output_size, + const int num_refinements[testv::params::N], + // const hls::vector num_refinements, + hls::stream& xus_port, + hls::stream& v_port, + hls::stream& y_port); +#endif // end __VITIS_HLS__ + +#endif // end KERNEL_V_KERNEL_H_ diff --git a/include/layers/dense/hls/dense_svd.h b/include/layers/dense/hls/dense_svd.h new file mode 100644 index 0000000..14d7183 --- /dev/null +++ b/include/layers/dense/hls/dense_svd.h @@ -0,0 +1,172 @@ +#ifndef LAYERS_DENSE_HLS_DENSE_SVD_H_ +#define LAYERS_DENSE_HLS_DENSE_SVD_H_ + +#include "svd_params.h" +#include "kernel/svd_kernel.h" + +#include "ap_int.h" + + +namespace svd { + +static const int kDenseNumGates = 1; + +typedef svd::SvdParameters, + ap_fixed, + ap_fixed > dense_params; + +#ifndef __VITIS_HLS__ +#else +template +void DenseSvdKernel(const int num_active_inputs, + const int input_size, + const int output_size, + const int num_refinements[params::N], + // const hls::vector num_refinements, + hls::stream& x_port, + hls::stream& u_port, + hls::stream& s_port, + hls::stream& v_port, + hls::stream& bias_port, + hls::stream& y_port) { +#pragma HLS TOP name=DenseSvdKernel +// #pragma HLS INLINE +#pragma HLS DATAFLOW +#ifndef __VITIS_HLS__ +#pragma HLS STABLE variable=x_port +#pragma HLS STABLE variable=u_port +#pragma HLS STABLE variable=s_port +#pragma HLS STABLE variable=v_port +#pragma HLS STABLE variable=bias_port +#pragma HLS STABLE variable=y_port +#endif + static_assert(params::G == 1, "DenseSvdKernel must have params::G equal to one."); + assert(params::G == 1); + typedef typename params::ActivationD ActivationType; + typedef svd::AxiStreamFifo WrapperFifoGTv; + hls::stream y_fifo; +#pragma HLS STREAM variable=y_fifo depth=2 + auto y_axis = svd::AxiStreamFifo(y_fifo); + auto y_out_axis = svd::AxiStreamPort(y_port); + auto bias_axis = svd::AxiStreamPort(bias_port); + svd::SvdKernel(num_active_inputs, input_size, + output_size, num_refinements, x_port, u_port, s_port, v_port, y_fifo); + Apply_Bias: + for (int i = 0; i < output_size / params::Tv * num_active_inputs; ++i) { +#pragma HLS PIPELINE II=1 + const int kGTv = params::G * params::Tv; // NOTE: G is actually equal to 1. + const auto y_val = y_axis.template PopVector(); + const auto bias_val = bias_axis.template PopVector(); + const auto y_out = y_val + bias_val; +// #pragma HLS BIND_OP variable=y_out op=add impl=dsp latency=3 + const bool kIsLast = i == output_size / params::Tv * num_active_inputs - 1; + y_out_axis.template PushVector(y_out, kIsLast); + } +} +#endif // end __VITIS_HLS__ + +/** + * @brief Sets the DenseSvd kernel inputs, i.e. streams from arrays into + * hls::streams. + * + * @param[in] num_active_inputs The number of active inputs + * @param[in] input_size The input size + * @param[in] output_size The output size + * @param[in] num_refinements The number of refinements + * @param[in] x The input array. Shape: (N, I) + * @param[in] u The u array. Shape: (R, I, G) + * @param[in] s The s array. Shape: (R, N, G) + * @param[in] v The v array. Shape: (R, H, G) + * @param[in] bias The bias array. Shape: (N, G, H) + * @param x_port The x port to be used as argument to SvdKernel + * @param u_port The u port to be used as argument to SvdKernel + * @param s_port The s port to be used as argument to SvdKernel + * @param v_port The v port to be used as argument to SvdKernel + * @param bias_port The bias port to be used as argument to + * SvdKernel + * + * @tparam params Collection of SVD configuration params. + */ +#ifdef __VITIS_HLS__ +template +void SetDenseSvdInputs(const int num_active_inputs, + const int input_size, + const int output_size, + const int num_refinements[params::N], + const typename params::ActivationD* x, + const typename params::ActivationD* u, + const typename params::ActivationD* s, + const typename params::ActivationD* v, + const typename params::ActivationD* bias, + hls::stream& x_port, + hls::stream& u_port, + hls::stream& s_port, + hls::stream& v_port, + hls::stream& bias_port) { + typedef typename params::ActivationD ActivationType; + const int kG = params::G; // NOTE: G is actually equal to 1. + const int kTv = params::Tv; + const int kGTv = kG * kTv; + const int kNumTilesV = output_size / kTv; + auto bias_axis = svd::AxiStreamPort(bias_port); + typename params::VectGTvType bias_val; + for (int i = 0; i < kNumTilesV; ++i) { + for (int j = 0; j < num_active_inputs; ++j) { + for (int k = 0; k < kTv; ++k) { + for (int ii = 0; ii < kG; ++ii) { + int bias_idx = j * output_size * kG + ii * output_size + i * kTv + k; + bias_val[k * kG + ii] = bias[bias_idx]; + } + } + bias_axis.template PushVector(bias_val); + } + } + svd::SetSvdKernelInputs(num_active_inputs, input_size, + output_size, num_refinements, x, u, s, v, x_port, u_port, s_port, v_port); +} +#endif // __VITIS_HLS__ + +} // svd + +void HlsDenseSvd(const int num_active_inputs, + const int input_size, + const int output_size, + const int num_refinements[svd::dense_params::N], + hls::stream& x_port, + hls::stream& u_port, + hls::stream& s_port, + hls::stream& v_port, + hls::stream& bias_port, + hls::stream& y_port); + + +/** + * @brief HLS Wrapper that calls a DenseSvd accelerator. + * + * Useful in Cosimulation. + * + * @param[in] num_active_inputs The number of active inputs + * @param[in] input_size The input size + * @param[in] output_size The output size + * @param[in] num_refinements The number of refinements + * @param[in] x The input array. Shape: (N, I) + * @param[in] u The u array. Shape: (R, I, G) + * @param[in] s The s array. Shape: (R, N, G) + * @param[in] v The v array. Shape: (R, H, G) + * @param[in] bias The bias array. Shape: (N, G, H) + * @param y The y array. Shape: (N, G, H) + */ +void HlsWrapperDenseSvd(const int num_active_inputs, + const int input_size, + const int output_size, + const int num_refinements[svd::dense_params::N], + const typename svd::dense_params::ActivationD* x, + const typename svd::dense_params::ActivationD* u, + const typename svd::dense_params::ActivationD* s, + const typename svd::dense_params::ActivationD* v, + const typename svd::dense_params::ActivationD* bias, + typename svd::dense_params::ActivationD* y); + +#endif // end DENSE_HLS_DENSE_SVD_H_); diff --git a/include/lstm/hls/lstm_hardware.h b/include/layers/lstm/hls/lstm_hardware.h similarity index 97% rename from include/lstm/hls/lstm_hardware.h rename to include/layers/lstm/hls/lstm_hardware.h index 1206d40..6757ad6 100644 --- a/include/lstm/hls/lstm_hardware.h +++ b/include/layers/lstm/hls/lstm_hardware.h @@ -36,15 +36,21 @@ * streams * *****************************************************************************/ -#ifndef LSTM_HARDWARE_H_ -#define LSTM_HARDWARE_H_ +#ifndef LSTM_HLS_LSTM_HARDWARE_H_ +#define LSTM_HLS_LSTM_HARDWARE_H_ #include "math_utils/activation_functions.h" +#include "svd_params.h" +#ifdef AP_INT_MAX_W +#undef AP_INT_MAX_W #define AP_INT_MAX_W 4096 +#endif #include "ap_int.h" -#include "hls_linear_algebra.h" #include "ap_axi_sdata.h" +#ifndef __VITIS_HLS__ +#include "hls_linear_algebra.h" +#endif #ifndef __SYNTHESIS__ #include @@ -71,6 +77,7 @@ namespace svd { +#ifndef __VITIS_HLS__ // struct MY_CONFIG: hls::matrix_multiply_traits { // static const int ARCH = 4; @@ -137,11 +144,7 @@ struct MatrixConfigFixRecurrent: hls::matrix_multiply_traits < static const int N = 1; static const int K = HIDDEN_TILE_SIZE; }; - -void svd_fpga_cur_gemm_axi(const AxiD *a, const AxiD *b, AxiD *c); - -template -void cur_gemm(const ActivationD *a, const ActivationD *b, ActivationD *c); +#endif typedef struct { ap_uint data; @@ -149,6 +152,11 @@ typedef struct { } AxisPacketD; typedef hls::stream DmaInterfaceD; +void svd_fpga_cur_gemm_axi(const AxiD *a, const AxiD *b, AxiD *c); + +template +void cur_gemm(const ActivationD *a, const ActivationD *b, ActivationD *c); + } // end namespace svd void svd_fpga_cur_gemm_gate(const svd::ActivationD *a, const svd::ActivationD *b, svd::ActivationD *c); @@ -224,4 +232,4 @@ void dummy_gemm_v0(const svd::ActivationD a[16][16], const svd::ActivationD b[16 void test_dispatcher(); -#endif // end LSTM_HARDWARE_H_ \ No newline at end of file +#endif // end LSTM_HLS_LSTM_HARDWARE_H_ \ No newline at end of file diff --git a/include/layers/lstm/hls/lstm_svd.h b/include/layers/lstm/hls/lstm_svd.h new file mode 100644 index 0000000..308ce42 --- /dev/null +++ b/include/layers/lstm/hls/lstm_svd.h @@ -0,0 +1,410 @@ +#ifndef LSTM_HLS_LSTM_SVD_H_ +#define LSTM_HLS_LSTM_SVD_H_ + +#include "svd_params.h" +#include "kernel/svd_kernel.h" +#include "math_utils/activation_functions.h" +#include "layers/dense/hls/dense_svd.h" +#include "dma/axis_lib.h" + +#include "ap_int.h" +#include "hls_stream.h" + +namespace svd { + +#ifdef SDS_DESIGN +// ============================================================================= +// Ports using DMAs +// ============================================================================= +#pragma SDS data copy(x1_port[0:INPUT_SIZE]) +#pragma SDS data copy(x2_port[0:INPUT_SIZE]) +#pragma SDS data copy(h_t1_prev_port[0:HIDDEN_SIZE]) +#pragma SDS data copy(h_t2_prev_port[0:HIDDEN_SIZE]) +#pragma SDS data copy(c_t1_prev_port[0:HIDDEN_SIZE]) +#pragma SDS data copy(c_t2_prev_port[0:HIDDEN_SIZE]) +#pragma SDS data copy(bias1_port[0:4*HIDDEN_SIZE]) +#pragma SDS data copy(bias2_port[0:4*HIDDEN_SIZE]) +#pragma SDS data copy(nz_v_port[0:NUM_ITERATIONS * 8]) +#pragma SDS data copy(nz_u_port[0:NUM_ITERATIONS * 8]) +#pragma SDS data copy(h_t1_curr_port[0:HIDDEN_SIZE]) +#pragma SDS data copy(h_t2_curr_port[0:HIDDEN_SIZE]) +#pragma SDS data copy(c_t1_curr_port[0:HIDDEN_SIZE]) +#pragma SDS data copy(c_t2_curr_port[0:HIDDEN_SIZE]) +// Data Movers +#pragma SDS data data_mover(x1_port:AXIDMA_SIMPLE) +#pragma SDS data data_mover(x2_port:AXIDMA_SIMPLE) +#pragma SDS data data_mover(h_t1_prev_port:AXIDMA_SIMPLE) +#pragma SDS data data_mover(h_t2_prev_port:AXIDMA_SIMPLE) +#pragma SDS data data_mover(c_t1_prev_port:AXIDMA_SIMPLE) +#pragma SDS data data_mover(c_t2_prev_port:AXIDMA_SIMPLE) +#pragma SDS data data_mover(bias1_port:AXIDMA_SIMPLE) +#pragma SDS data data_mover(bias2_port:AXIDMA_SIMPLE) +#pragma SDS data data_mover(nz_v_port:AXIDMA_SIMPLE) +#pragma SDS data data_mover(nz_u_port:AXIDMA_SIMPLE) +#pragma SDS data data_mover(h_t1_curr_port:AXIDMA_SIMPLE) +#pragma SDS data data_mover(h_t2_curr_port:AXIDMA_SIMPLE) +#pragma SDS data data_mover(c_t1_curr_port:AXIDMA_SIMPLE) +#pragma SDS data data_mover(c_t2_curr_port:AXIDMA_SIMPLE) +// Port mapping +// #pragma SDS data sys_port(x1_port:ps_e_S_AXI_HPC0_FPD) // Coherent HP port +// #pragma SDS data sys_port(x2_port:ps_e_S_AXI_HPC0_FPD) // Coherent HP port +// #pragma SDS data sys_port(h_t1_prev_port:ps_e_S_AXI_HPC0_FPD) // Coherent HP port +// #pragma SDS data sys_port(h_t2_prev_port:ps_e_S_AXI_HPC0_FPD) // Coherent HP port +// #pragma SDS data sys_port(c_t1_prev_port:ps_e_S_AXI_HPC0_FPD) // Coherent HP port +// #pragma SDS data sys_port(c_t2_prev_port:ps_e_S_AXI_HPC0_FPD) // Coherent HP port +// #pragma SDS data sys_port(bias1_port:ps_e_S_AXI_HPC0_FPD) // Coherent HP port +// #pragma SDS data sys_port(bias2_port:ps_e_S_AXI_HPC0_FPD) // Coherent HP port +// #pragma SDS data sys_port(nz_v_port:ps_e_S_AXI_HPC0_FPD) // Coherent HP port +// #pragma SDS data sys_port(nz_u_port:ps_e_S_AXI_HPC0_FPD) // Coherent HP port +// #pragma SDS data sys_port(h_t1_curr_port:ps_e_S_AXI_HPC1_FPD) // Coherent HP port +// #pragma SDS data sys_port(h_t2_curr_port:ps_e_S_AXI_HPC1_FPD) // Coherent HP port +// #pragma SDS data sys_port(c_t1_curr_port:ps_e_S_AXI_HPC1_FPD) // Coherent HP port +// #pragma SDS data sys_port(c_t2_curr_port:ps_e_S_AXI_HPC1_FPD) // Coherent HP port +// ============================================================================= +// Weight ports not using DMAs +// ============================================================================= +// #pragma SDS data zero_copy(u_cur_port[0:NUM_ITERATIONS*INPUT_SIZE / NUM_TILES_U * (NUM_TILES_U - NUM_ZERO_TILES_U)]) +// #pragma SDS data zero_copy(u_rec_port[0:NUM_ITERATIONS*HIDDEN_SIZE / NUM_TILES_U * (NUM_TILES_U - NUM_ZERO_TILES_U)]) +// #pragma SDS data zero_copy(v_port[0:NUM_ITERATIONS*HIDDEN_SIZE / NUM_TILES_V * (NUM_TILES_V - NUM_ZERO_TILES_V)]) +// #pragma SDS data zero_copy(s1_port[0:NUM_ITERATIONS]) +// #pragma SDS data zero_copy(s2_port[0:NUM_ITERATIONS]) +// ============================================================================= +// Weight ports using DMAs +// ============================================================================= +#pragma SDS data copy(u_cur_port[0:NUM_ITERATIONS*INPUT_SIZE / NUM_TILES_U * (NUM_TILES_U - NUM_ZERO_TILES_U)]) +#pragma SDS data copy(u_rec_port[0:NUM_ITERATIONS*HIDDEN_SIZE / NUM_TILES_U * (NUM_TILES_U - NUM_ZERO_TILES_U)]) +#pragma SDS data copy(v_port[0:NUM_ITERATIONS*HIDDEN_SIZE / NUM_TILES_V * (NUM_TILES_V - NUM_ZERO_TILES_V)]) +#pragma SDS data copy(s1_port[0:NUM_ITERATIONS]) +#pragma SDS data copy(s2_port[0:NUM_ITERATIONS]) +// Platform Port Mapping, available options: +// - ACP Coherent ports: ps_e_S_AXI_HPC[0-1]_FPD +// - HP ports: ps_e_S_AXI_HP[0-3]_FPD +// #pragma SDS data sys_port(u_cur_port:ps_e_S_AXI_HP0_FPD) // HP2 +// #pragma SDS data sys_port(u_rec_port:ps_e_S_AXI_HP1_FPD) // HP3 +// #pragma SDS data sys_port(v_port:ps_e_S_AXI_HP2_FPD) // HP3 +// #pragma SDS data sys_port(s1_port:ps_e_S_AXI_HP3_FPD) // HP3 +// #pragma SDS data sys_port(s2_port:ps_e_S_AXI_HP3_FPD) // HP3 +// ============================================================================= +// Other Configurations +// ============================================================================= +// Compiler hint on allocation +#pragma SDS data mem_attribute(x1_port:PHYSICAL_CONTIGUOUS|NON_CACHEABLE) +#pragma SDS data mem_attribute(x2_port:PHYSICAL_CONTIGUOUS|NON_CACHEABLE) +#pragma SDS data mem_attribute(h_t1_prev_port:PHYSICAL_CONTIGUOUS|NON_CACHEABLE) +#pragma SDS data mem_attribute(h_t2_prev_port:PHYSICAL_CONTIGUOUS|NON_CACHEABLE) +#pragma SDS data mem_attribute(c_t1_prev_port:PHYSICAL_CONTIGUOUS|NON_CACHEABLE) +#pragma SDS data mem_attribute(c_t2_prev_port:PHYSICAL_CONTIGUOUS|NON_CACHEABLE) +#pragma SDS data mem_attribute(u_cur_port:PHYSICAL_CONTIGUOUS|NON_CACHEABLE) +#pragma SDS data mem_attribute(u_rec_port:PHYSICAL_CONTIGUOUS|NON_CACHEABLE) +#pragma SDS data mem_attribute(v_port:PHYSICAL_CONTIGUOUS|NON_CACHEABLE) +#pragma SDS data mem_attribute(s1_port:PHYSICAL_CONTIGUOUS|NON_CACHEABLE) +#pragma SDS data mem_attribute(s2_port:PHYSICAL_CONTIGUOUS|NON_CACHEABLE) +#pragma SDS data mem_attribute(bias1_port:PHYSICAL_CONTIGUOUS|NON_CACHEABLE) +#pragma SDS data mem_attribute(bias2_port:PHYSICAL_CONTIGUOUS|NON_CACHEABLE) +#pragma SDS data mem_attribute(nz_v_port:PHYSICAL_CONTIGUOUS|NON_CACHEABLE) +#pragma SDS data mem_attribute(nz_u_port:PHYSICAL_CONTIGUOUS|NON_CACHEABLE) +#pragma SDS data mem_attribute(h_t1_curr_port:PHYSICAL_CONTIGUOUS|NON_CACHEABLE) +#pragma SDS data mem_attribute(h_t2_curr_port:PHYSICAL_CONTIGUOUS|NON_CACHEABLE) +#pragma SDS data mem_attribute(c_t1_curr_port:PHYSICAL_CONTIGUOUS|NON_CACHEABLE) +#pragma SDS data mem_attribute(c_t2_curr_port:PHYSICAL_CONTIGUOUS|NON_CACHEABLE) +// NOTE: All ports are accessed sequentially. +#pragma SDS data access_pattern(x1_port:SEQUENTIAL) +#pragma SDS data access_pattern(x2_port:SEQUENTIAL) +#pragma SDS data access_pattern(h_t1_prev_port:SEQUENTIAL) +#pragma SDS data access_pattern(h_t2_prev_port:SEQUENTIAL) +#pragma SDS data access_pattern(c_t1_prev_port:SEQUENTIAL) +#pragma SDS data access_pattern(c_t2_prev_port:SEQUENTIAL) +#pragma SDS data access_pattern(u_cur_port:SEQUENTIAL) +#pragma SDS data access_pattern(u_rec_port:SEQUENTIAL) +#pragma SDS data access_pattern(v_port:SEQUENTIAL) +#pragma SDS data access_pattern(s1_port:SEQUENTIAL) +#pragma SDS data access_pattern(s2_port:SEQUENTIAL) +#pragma SDS data access_pattern(bias1_port:SEQUENTIAL) +#pragma SDS data access_pattern(bias2_port:SEQUENTIAL) +#pragma SDS data access_pattern(nz_v_port:SEQUENTIAL) +#pragma SDS data access_pattern(nz_u_port:SEQUENTIAL) +#pragma SDS data access_pattern(h_t1_curr_port:SEQUENTIAL) +#pragma SDS data access_pattern(h_t2_curr_port:SEQUENTIAL) +#pragma SDS data access_pattern(c_t1_curr_port:SEQUENTIAL) +#pragma SDS data access_pattern(c_t2_curr_port:SEQUENTIAL) +#endif // end SDS_DESIGN +void SvdModel2LstmSDSoCV2( + const svd::ActivationD x1_port[INPUT_SIZE], + const svd::ActivationD x2_port[INPUT_SIZE], + const svd::ActivationD h_t1_prev_port[HIDDEN_SIZE], + const svd::ActivationD h_t2_prev_port[HIDDEN_SIZE], + const svd::ActivationD c_t1_prev_port[HIDDEN_SIZE], + const svd::ActivationD c_t2_prev_port[HIDDEN_SIZE], + const ap_uint *u_cur_port, // [NUM_ITERATIONS*4*INPUT_SIZE / NUM_TILES_U * (NUM_TILES_U - NUM_ZERO_TILES_U)], + const ap_uint *u_rec_port, // [NUM_ITERATIONS*4*HIDDEN_SIZE / NUM_TILES_U * (NUM_TILES_U - NUM_ZERO_TILES_U)], + const ap_uint *v_port, // [NUM_ITERATIONS*4*2*HIDDEN_SIZE / NUM_TILES_V * (NUM_TILES_V - NUM_ZERO_TILES_V)], + const ap_uint *s1_port, // [NUM_ITERATIONS*8], + const ap_uint *s2_port, // [NUM_ITERATIONS*8], + const svd::WeightD bias1_port[4 * HIDDEN_SIZE], + const svd::WeightD bias2_port[4 * HIDDEN_SIZE], + const ap_uint nz_v_port[NUM_ITERATIONS * 8], + const ap_uint nz_u_port[NUM_ITERATIONS * 8], + svd::ActivationD h_t1_curr_port[HIDDEN_SIZE], + svd::ActivationD h_t2_curr_port[HIDDEN_SIZE], + svd::ActivationD c_t1_curr_port[HIDDEN_SIZE], + svd::ActivationD c_t2_curr_port[HIDDEN_SIZE]); + +typedef svd::SvdParameters, + ap_fixed, + ap_fixed > lstm_params; + +#ifndef __VITIS_HLS__ +#else +template +void LstmSvdKernel(const int num_active_inputs, + const int input_size, + const int output_size, + const int num_refinements[params::N], + // Current Gates + hls::stream& x_port, + hls::stream& u_cur_port, + hls::stream& s_cur_port, + hls::stream& v_cur_port, + // Recurrent Gates + hls::stream& h_prev_port, + hls::stream& u_rec_port, + hls::stream& s_rec_port, + hls::stream& v_rec_port, + // Non-Linearities + hls::stream& bias_port, + hls::stream& c_prev_port, + hls::stream& h_curr_port, + hls::stream& c_curr_port) { +#pragma HLS TOP name=LstmSvdKernel +// #pragma HLS INLINE +#pragma HLS DATAFLOW +// Current Gates +#pragma HLS ARRAY_PARTITION variable=num_refinements complete +#ifndef __VITIS_HLS__ +#pragma HLS STABLE variable=x_port +#pragma HLS STABLE variable=u_cur_port +#pragma HLS STABLE variable=s_cur_port +#pragma HLS STABLE variable=v_cur_port +// Recurrent Gates +#pragma HLS STABLE variable=h_prev_port +#pragma HLS STABLE variable=u_rec_port +#pragma HLS STABLE variable=s_rec_port +#pragma HLS STABLE variable=v_rec_port +// Non-Linearities +#pragma HLS STABLE variable=bias_port +#pragma HLS STABLE variable=c_prev_port +#pragma HLS STABLE variable=h_curr_port +#pragma HLS STABLE variable=c_curr_port +#endif + int refinements[2][params::N]; +#pragma HLS ARRAY_PARTITION variable=refinements complete dim=0 + for (int i = 0; i < 2; ++i) { +#pragma HLS UNROLL region + for (int j = 0; j < params::N; ++j) { + refinements[i][j] = num_refinements[j]; + } + } + typedef typename params::ActivationD ActivationType; + typedef svd::AxiStreamFifo WrapperFifoGTv; + hls::stream y_cur_fifo; + hls::stream y_rec_fifo; +#pragma HLS STREAM variable=y_cur_fifo depth=2 +#pragma HLS STREAM variable=y_rec_fifo depth=2 + auto y_cur_axis = svd::AxiStreamFifo(y_cur_fifo); + auto y_rec_axis = svd::AxiStreamFifo(y_rec_fifo); + auto bias_axis = svd::AxiStreamPort(bias_port); + auto c_prev_axis = svd::AxiStreamPort(c_prev_port); + auto c_curr_axis = svd::AxiStreamPort(c_curr_port); + auto h_curr_axis = svd::AxiStreamPort(h_curr_port); + // Current Gates + svd::SvdKernel(num_active_inputs, input_size, + output_size, refinements[0], x_port, u_cur_port, s_cur_port, + v_cur_port, y_cur_fifo); + // Recurrent Gates + svd::SvdKernel(num_active_inputs, output_size, + output_size, refinements[1], h_prev_port, u_rec_port, s_rec_port, + v_rec_port, y_rec_fifo); + // Non-Linearities + const int kTypeBitwidth = hlsutils::Bitwidth::value; + const int kLutSize = (kTypeBitwidth > 16) ? 256 : 512; + const int kGTv = params::G * params::Tv; + const bool kApplyBias = true; + NonLinearities: + for (int i = 0; i < output_size / params::Tv * num_active_inputs; ++i) { +#pragma HLS PIPELINE II=1 + auto y_cur = y_cur_axis.template PopVector(); + auto y_rec = y_rec_axis.template PopVector(); + auto bias = bias_axis.template PopVector(); + auto c_prev = c_prev_axis.template PopVector(); + ActivationType c_curr[params::Tv]; + ActivationType h_curr[params::Tv]; +#pragma HLS ARRAY_PARTITION variable=c_curr complete dim=0 +#pragma HLS ARRAY_PARTITION variable=h_curr complete dim=0 + for (int j = 0; j < params::Tv; ++j) { + svd::LstmNonLinearFunctions( + kApplyBias, + y_cur[j * params::G + 0], y_cur[j * params::G + 1], + y_cur[j * params::G + 2], y_cur[j * params::G + 3], + y_rec[j * params::G + 0], y_rec[j * params::G + 1], + y_rec[j * params::G + 2], y_rec[j * params::G + 3], + bias[j * params::G + 0], bias[j * params::G + 1], + bias[j * params::G + 2], bias[j * params::G + 3], + c_prev[j], c_curr[j], h_curr[j]); + } + const bool kIsLast = i == output_size / params::Tv * num_active_inputs - 1; + c_curr_axis.template PushBuffer(params::Tv, c_curr, kIsLast); + h_curr_axis.template PushBuffer(params::Tv, h_curr, kIsLast); + } +} +#endif // end __VITIS_HLS__ + +/** + * @brief Sets the LstmSvd kernel inputs, i.e. streams from arrays into + * hls::streams. + * + * @param[in] num_active_inputs The number of active inputs + * @param[in] input_size The input size + * @param[in] output_size The output size + * @param[in] num_refinements The number of refinements + * @param[in] x The input array. Shape: (N, I) + * @param[in] u The u array. Shape: (R, I, G) + * @param[in] s The s array. Shape: (R, N, G) + * @param[in] v The v array. Shape: (R, H, G) + * @param[in] bias The bias array. Shape: (N, G, H) + * @param x_port The x port to be used as argument to SvdKernel + * @param u_port The u port to be used as argument to SvdKernel + * @param s_port The s port to be used as argument to SvdKernel + * @param v_port The v port to be used as argument to SvdKernel + * @param bias_port The bias port to be used as argument to + * SvdKernel + * + * @tparam params Collection of SVD configuration params. + */ +#ifdef __VITIS_HLS__ +template +void SetLstmSvdInputs(const int num_active_inputs, + const int input_size, + const int output_size, + const int num_refinements[params::N], + // Current Gates + const typename params::ActivationD* x, + const typename params::ActivationD* u_cur, + const typename params::ActivationD* s_cur, + const typename params::ActivationD* v_cur, + // Recurrent Gates + const typename params::ActivationD* h, + const typename params::ActivationD* u_rec, + const typename params::ActivationD* s_rec, + const typename params::ActivationD* v_rec, + // Non-Linearities + const typename params::ActivationD* bias, + const typename params::ActivationD* c_prev, + // Current Gates + hls::stream& x_port, + hls::stream& u_cur_port, + hls::stream& s_cur_port, + hls::stream& v_cur_port, + // Recurrent Gates + hls::stream& h_prev_port, + hls::stream& u_rec_port, + hls::stream& s_rec_port, + hls::stream& v_rec_port, + // Non-Linearities + hls::stream& bias_port, + hls::stream& c_prev_port) { + svd::SetDenseSvdInputs(num_active_inputs, input_size, output_size, + num_refinements, x, u_cur, s_cur, v_cur, bias, x_port, u_cur_port, + s_cur_port, v_cur_port, bias_port); + svd::SetSvdKernelInputs(num_active_inputs, output_size, output_size, + num_refinements, h, u_rec, s_rec, v_rec, h_prev_port, u_rec_port, + s_rec_port, v_rec_port); + auto c_prev_axis = svd::AxiStreamPort(c_prev_port); + typedef typename params::ActivationD ActivationType; + const int kTv = params::Tv; + const int kNumTilesV = output_size / kTv; + typename params::VectTvType c_prev_val; + for (int i = 0; i < kNumTilesV; ++i) { + for (int j = 0; j < num_active_inputs; ++j) { + for (int k = 0; k < kTv; ++k) { + c_prev_val[k] = c_prev[j * output_size + i * kTv + k]; + } + c_prev_axis.template PushVector(c_prev_val); + } + } +} +#endif // end __VITIS_HLS__ + +#ifdef __VITIS_HLS__ +template +void GetLstmSvdOutputs(const int num_active_inputs, const int output_size, + typename params::ActivationD* h_curr, + typename params::ActivationD* c_curr, + hls::stream& h_curr_port, + hls::stream& c_curr_port) { + typedef typename params::ActivationD ActivationType; + const int kTv = params::Tv; + const int kNumTilesV = output_size / kTv; + auto h_axis = svd::AxiStreamPort(h_curr_port); + auto c_axis = svd::AxiStreamPort(c_curr_port); + typename params::VectTvType h_val; + typename params::VectTvType c_val; + for (int i = 0; i < kNumTilesV; ++i) { + for (int j = 0; j < num_active_inputs; ++j) { + h_val = h_axis.template PopVector(); + c_val = c_axis.template PopVector(); + for (int k = 0; k < kTv; ++k) { + c_curr[j * output_size + i * kTv + k] = c_val[k]; + h_curr[j * output_size + i * kTv + k] = h_val[k]; + } + } + } +} +#endif // end __VITIS_HLS__ + +} // svd + +void HlsLstmSvd(const int num_active_inputs, + const int input_size, + const int output_size, + const int num_refinements[svd::svd_params::N], + // const hls::vector num_refinements, + // Current Gates + hls::stream& x_port, + hls::stream& u_cur_port, + hls::stream& s_cur_port, + hls::stream& v_cur_port, + // Recurrent Gates + hls::stream& h_prev_port, + hls::stream& u_rec_port, + hls::stream& s_rec_port, + hls::stream& v_rec_port, + // Non-Linearities + hls::stream& bias_port, + hls::stream& c_prev_port, + hls::stream& h_curr_port, + hls::stream& c_curr_port); + +void HlsWrapperLstmSvd( + const int num_active_inputs, + const int input_size, + const int output_size, + const int num_refinements[svd::lstm_params::N], + // Current Gates + const typename svd::lstm_params::ActivationD* x, + const typename svd::lstm_params::ActivationD* u_cur, + const typename svd::lstm_params::ActivationD* s_cur, + const typename svd::lstm_params::ActivationD* v_cur, + // Recurrent Gates + const typename svd::lstm_params::ActivationD* h, + const typename svd::lstm_params::ActivationD* u_rec, + const typename svd::lstm_params::ActivationD* s_rec, + const typename svd::lstm_params::ActivationD* v_rec, + // Non-Linearities + const typename svd::lstm_params::ActivationD* bias, + const typename svd::lstm_params::ActivationD* c_prev, + typename svd::lstm_params::ActivationD* h_curr, + typename svd::lstm_params::ActivationD* c_curr); + +#endif // end LSTM_HLS_LSTM_SVD_H_ \ No newline at end of file diff --git a/include/layers/lstm/hls/lstm_svd_emulator.h b/include/layers/lstm/hls/lstm_svd_emulator.h new file mode 100644 index 0000000..02cd1a5 --- /dev/null +++ b/include/layers/lstm/hls/lstm_svd_emulator.h @@ -0,0 +1,264 @@ +#ifndef LSTM_HLS_LSTM_SVD_EMULATOR_H_ +#define LSTM_HLS_LSTM_SVD_EMULATOR_H_ + +#include "math_utils/activation_functions.h" + +#include "hls_stream.h" + +#include +#include + +namespace svd { + +/** + * @brief Emulator used to test the accuracy of the HLS accelerator. It + * allows for testing different design points without recompiling. + * + * @param[in] InputSize The input size + * @param[in] HiddenSize The hidden size + * @param[in] NumIter The number of refinement steps + * @param[in] Tu The number of tiles of u + * @param[in] ZTu The number of pruned tiles of u + * @param[in] Tv The number of tiles of v + * @param[in] ZTv The number of pruned tiles of v + * @param[in] NumTimesteps The number timesteps (deprecated) + * @param[in] x The input data + * @param[in] cur_i_u The current i u + * @param[in] cur_i_s The current i s + * @param[in] cur_i_v The current i v + * @param[in] cur_i_unz The current i unz + * @param[in] cur_i_vnz The current i vnz + * @param[in] cur_f_u The current f u + * @param[in] cur_f_s The current f s + * @param[in] cur_f_v The current f v + * @param[in] cur_f_unz The current f unz + * @param[in] cur_f_vnz The current f vnz + * @param[in] cur_c_u The current c u + * @param[in] cur_c_s The current c s + * @param[in] cur_c_v The current c v + * @param[in] cur_c_unz The current c unz + * @param[in] cur_c_vnz The current c vnz + * @param[in] cur_o_u The current o u + * @param[in] cur_o_s The current o s + * @param[in] cur_o_v The current o v + * @param[in] cur_o_unz The current o unz + * @param[in] cur_o_vnz The current o vnz + * @param[in] rec_i_u The recurrent i u + * @param[in] rec_i_s The recurrent i s + * @param[in] rec_i_v The recurrent i v + * @param[in] rec_i_unz The recurrent i unz + * @param[in] rec_i_vnz The recurrent i vnz + * @param[in] rec_f_u The recurrent f u + * @param[in] rec_f_s The recurrent f s + * @param[in] rec_f_v The recurrent f v + * @param[in] rec_f_unz The recurrent f unz + * @param[in] rec_f_vnz The recurrent f vnz + * @param[in] rec_c_u The recurrent c u + * @param[in] rec_c_s The recurrent c s + * @param[in] rec_c_v The recurrent c v + * @param[in] rec_c_unz The recurrent c unz + * @param[in] rec_c_vnz The recurrent c vnz + * @param[in] rec_o_u The recurrent o u + * @param[in] rec_o_s The recurrent o s + * @param[in] rec_o_v The recurrent o v + * @param[in] rec_o_unz The recurrent o unz + * @param[in] rec_o_vnz The recurrent o vnz + * @param[in] bias The bias + * @param[in] c_prev The c previous + * @param[in] h_prev The h previous + * @param c_curr The c current + * @param h_curr The h current + * + * @tparam DataA Activation type + * @tparam DataW Weight type + * @tparam DataAcc Accumulation type + * @tparam DataMul Multiplication type + * @tparam TanhLutSize Size of the hard sigmoid LUT + */ +template +void LstmSvdSoftEmulator(const int InputSize, + const int HiddenSize, + const int NumIter, + const int Tu, + const int ZTu, + const int Tv, + const int ZTv, + const int NumTimesteps, + const DataA *x, + const DataW *cur_i_u, + const DataW *cur_i_s, + const DataW *cur_i_v, + const int *cur_i_unz, + const int *cur_i_vnz, + const DataW *cur_f_u, + const DataW *cur_f_s, + const DataW *cur_f_v, + const int *cur_f_unz, + const int *cur_f_vnz, + const DataW *cur_c_u, + const DataW *cur_c_s, + const DataW *cur_c_v, + const int *cur_c_unz, + const int *cur_c_vnz, + const DataW *cur_o_u, + const DataW *cur_o_s, + const DataW *cur_o_v, + const int *cur_o_unz, + const int *cur_o_vnz, + const DataW *rec_i_u, + const DataW *rec_i_s, + const DataW *rec_i_v, + const int *rec_i_unz, + const int *rec_i_vnz, + const DataW *rec_f_u, + const DataW *rec_f_s, + const DataW *rec_f_v, + const int *rec_f_unz, + const int *rec_f_vnz, + const DataW *rec_c_u, + const DataW *rec_c_s, + const DataW *rec_c_v, + const int *rec_c_unz, + const int *rec_c_vnz, + const DataW *rec_o_u, + const DataW *rec_o_s, + const DataW *rec_o_v, + const int *rec_o_unz, + const int *rec_o_vnz, + const DataW *bias, + DataA *c_prev, + DataA *h_prev, + DataA *c_curr, + DataA *h_curr) { + assert(Tu % 2 == 0); + assert(Tv % 2 == 0); + assert(Tu >= 8); + assert(Tv >= 8); + assert(Tu > ZTu); + assert(Tv > ZTv); + assert(NumIter % 2 == 0); + const DataW *u[8]; + const DataW *s[8]; + const DataW *v[8]; + const int *unz[8]; + const int *vnz[8]; + u[0] = cur_i_u; u[1] = cur_f_u; u[2] = cur_c_u; u[3] = cur_o_u; + u[4] = rec_i_u; u[5] = rec_f_u; u[6] = rec_c_u; u[7] = rec_o_u; + s[0] = cur_i_s; s[1] = cur_f_s; s[2] = cur_c_s; s[3] = cur_o_s; + s[4] = rec_i_s; s[5] = rec_f_s; s[6] = rec_c_s; s[7] = rec_o_s; + v[0] = cur_i_v; v[1] = cur_f_v; v[2] = cur_c_v; v[3] = cur_o_v; + v[4] = rec_i_v; v[5] = rec_f_v; v[6] = rec_c_v; v[7] = rec_o_v; + unz[0] = cur_i_unz; unz[1] = cur_f_unz; unz[2] = cur_c_unz; unz[3] = cur_o_unz; + unz[4] = rec_i_unz; unz[5] = rec_f_unz; unz[6] = rec_c_unz; unz[7] = rec_o_unz; + vnz[0] = cur_i_vnz; vnz[1] = cur_f_vnz; vnz[2] = cur_c_vnz; vnz[3] = cur_o_vnz; + vnz[4] = rec_i_vnz; vnz[5] = rec_f_vnz; vnz[6] = rec_c_vnz; vnz[7] = rec_o_vnz; + hls::stream **cur_out_fifo = new hls::stream*[4]; + hls::stream **rec_out_fifo = new hls::stream*[4]; + for (int i = 0; i < 4; ++i) { + cur_out_fifo[i] = new hls::stream[Tv]; + rec_out_fifo[i] = new hls::stream[Tv]; + } + DataAcc *u_acc[8]; + DataAcc **acc_buffer[8]; + DataMul xs_val[8] = {0}; + for (int i = 0; i < 8; ++i) { + u_acc[i] = new DataAcc[NumIter]; + } + DataA *h[2]; + DataA *c[2]; + if (NumTimesteps > 1) { + for (int i = 0; i < 2; ++i) { + h[i] = new DataA[HiddenSize]; + c[i] = new DataA[HiddenSize]; + std::memset(h[i], 0, HiddenSize * sizeof(DataA)); + std::memset(c[i], 0, HiddenSize * sizeof(DataA)); + } + } else { + c[0] = c_prev; + c[1] = c_curr; + h[0] = h_prev; + h[1] = h_curr; + } + for (int i = 0; i < 8; ++i) { + acc_buffer[i] = new DataAcc*[Tv]; + for (int j = 0; j < Tv; ++j) { + acc_buffer[i][j] = new DataAcc[HiddenSize / Tv]; + } + } + for (int t = 0; t < NumTimesteps; ++t) { + const int in_ptr = (t % 2) == 0 ? 0 : 1; + const int out_ptr = (t % 2) == 0 ? 1 : 0; + for (int i = 0; i < 8; ++i) { + std::memset(u_acc[i], 0, NumIter * sizeof(DataAcc)); + for (int j = 0; j < Tv; ++j) { + std::memset(acc_buffer[i][j], 0, HiddenSize / Tv * sizeof(DataAcc)); + } + } + for (int i = 0; i < NumIter; ++i) { + for (int q = 0; q < 4; ++q) { + for (int j = 0; j < Tu - ZTu; ++j) { + const int nz_idx = i * (Tu - ZTu) + j; + for (int k = 0; k < InputSize / Tu; ++k) { + int u_idx = i * InputSize / Tu * (Tu - ZTu) + j * InputSize / Tu + k; + u_acc[q][i] += x[t * InputSize + unz[q][nz_idx] * InputSize / Tu + k] * u[q][u_idx]; + } + for (int k = 0; k < HiddenSize / Tu; ++k) { + int u_idx = i * HiddenSize / Tu * (Tu - ZTu) + j * HiddenSize / Tu + k; + u_acc[q + 4][i] += h[in_ptr][unz[q + 4][nz_idx] * HiddenSize / Tu + k] * u[q + 4][u_idx]; + } + } + } + for (int q = 0; q < 8; ++q) { + xs_val[q] = s[q][i] * DataA(u_acc[q][i]); + for (int j = 0; j < Tv - ZTv; ++j) { + for (int k = 0; k < HiddenSize / Tv; ++k) { + const int v_idx = i * HiddenSize / Tv * (Tv - ZTv) + j * HiddenSize / Tv + k; + const int nz_idx = i * (Tv - ZTv) + j; + acc_buffer[q][vnz[q][nz_idx]][k] += xs_val[q] * v[q][v_idx]; + } + } + } + } + for (int i = 0; i < 4; ++i) { + for (int j = 0; j < Tv; ++j) { + for (int k = 0; k < HiddenSize / Tv; ++k) { + cur_out_fifo[i][j].write(acc_buffer[i][j][k]); + rec_out_fifo[i][j].write(acc_buffer[i + 4][j][k]); + } + } + } + NonLinearityUnitSoftware(HiddenSize, + Tv, 4, c[in_ptr], cur_out_fifo, rec_out_fifo, h[out_ptr], c[out_ptr], + true, bias); + } + if (NumTimesteps > 1) { + std::memcpy(h_curr, h[(NumTimesteps - 1) % 2 == 0 ? 1 : 0], HiddenSize * sizeof(DataA)); + } + for (int i = 0; i < 4; ++i) { + delete[] cur_out_fifo[i]; + delete[] rec_out_fifo[i]; + } + delete[] cur_out_fifo; + delete[] rec_out_fifo; + for (int i = 0; i < 8; ++i) { + delete[] u_acc[i]; + for (int j = 0; j < Tv; ++j) { + delete[] acc_buffer[i][j]; + } + delete[] acc_buffer[i]; + } + if (NumTimesteps > 1) { + for (int i = 0; i < 2; ++i) { + delete[] h[i]; + delete[] c[i]; + } + } +} + +} // svd + +#endif // LSTM_HLS_LSTM_SVD_EMULATOR_H_ \ No newline at end of file diff --git a/include/lstm/lstm_data_handler.h b/include/layers/lstm/lstm_data_handler.h similarity index 69% rename from include/lstm/lstm_data_handler.h rename to include/layers/lstm/lstm_data_handler.h index b927b60..811bf2b 100644 --- a/include/lstm/lstm_data_handler.h +++ b/include/layers/lstm/lstm_data_handler.h @@ -1,5 +1,5 @@ -#ifndef LSTM_DATA_HANDLER_H_ -#define LSTM_DATA_HANDLER_H_ +#ifndef LAYERS_LSTM_DATA_HANDLER_H_ +#define LAYERS_LSTM_DATA_HANDLER_H_ #include "math_utils/data_handler.h" #include "hls_utils/hls_metaprogramming.h" @@ -10,8 +10,10 @@ #include #include #include +#include +#include -namespace lstm { +namespace svd { template void ArrangeWeights(const int arrange_type, @@ -281,6 +283,7 @@ class AcceleratorBlob { int u_cur_size_; int u_rec_size_; int v_size_; + int s_size_; std::unordered_map cur_gates_; std::unordered_map rec_gates_; FixType* fix_u_cur_; @@ -289,38 +292,96 @@ class AcceleratorBlob { std::vector > x_; std::vector > h_; std::vector > c_; + std::vector > h_prev_; + std::vector > c_prev_; + std::vector > h_curr_; + std::vector > c_curr_; std::vector > bias_; std::vector fix_x_; std::vector fix_h_; std::vector fix_c_; + std::vector fix_h_prev_; + std::vector fix_c_prev_; + std::vector fix_h_curr_; + std::vector fix_c_curr_; std::vector fix_bias_; std::vector fix_s_; - ap_uint* fix_z_u_; - ap_uint* fix_z_v_; + ap_uint* fix_nz_u_; + ap_uint* fix_nz_v_; void InitVector(const bool init_random, const int num_inputs, const int size, std::vector& fix_y, std::vector >& y) { for (int i = 0; i < num_inputs; ++i) { fix_y[i] = svd::AllocateContiguously(size); for (int j = 0; j < size; ++j) { - FloatType tmp = init_random ? rand() : 0; + FloatType tmp = init_random ? 0.00001 * rand() : 0; y[i][j] = tmp; fix_y[i][j] = FixType(tmp); } } } + void ArrangeWeights(const int arrange_type, const int n_steps, + std::unordered_map& gates, + FixType* y) { + int idx = 0; + switch (arrange_type) { + case 0: + // NOTE: the following arrangement is: (N, G, E) + for (int i = 0; i < n_steps; ++i) { + for (auto g : gates) { + for (int j = 0; j < gates.get_u_pruned_size(); ++j) { + y[idx] = g.second->get_u()->fix_pruned_data()[j]; + ++idx; + } + } + } + break; + case 1: + // NOTE: the following arrangement is: (G, N, E) + for (auto g : gates) { + for (int i = 0; i < n_steps; ++i) { + for (int j = 0; j < gates.get_u_pruned_size(); ++j) { + y[idx] = g.second->get_u()->fix_pruned_data()[j]; + ++idx; + } + } + } + break; + case 2: + // NOTE: the following arrangement is: (N, E, G) + for (int i = 0; i < n_steps; ++i) { + for (int j = 0; j < gates.get_u_pruned_size(); ++j) { + for (auto g : gates) { + y[idx] = g.second->get_u()->fix_pruned_data()[j]; + ++idx; + } + } + } + break; + default: + // NOTE: the following arrangement is: (N, G, E) + for (int i = 0; i < n_steps; ++i) { + for (auto g : gates) { + for (int j = 0; j < gates.get_u_pruned_size(); ++j) { + y[idx] = g.second->get_u()->fix_pruned_data()[j]; + ++idx; + } + } + } + break; + } + } + public: AcceleratorBlob(const int num_inputs, const int refinement_steps, const int u_cur_size, const int u_rec_size, const int v_size, const int num_tiles_u, const int num_zero_tiles_u, const int num_tiles_v, const int num_zero_tiles_v) { + srand(time(NULL)); this->lstm_num_inputs_ = num_inputs; this->lstm_input_size_ = u_cur_size; this->lstm_output_size_ = v_size; - std::cout << this->lstm_num_inputs_ << std::endl; - std::cout << this->lstm_input_size_ << std::endl; - std::cout << this->lstm_output_size_ << std::endl; // NOTE: The following instantiation order is important and must be that. this->cur_gates_["o"] = new SvdVecType(num_inputs, refinement_steps, u_cur_size, v_size, num_tiles_u, num_zero_tiles_u, num_tiles_v, num_zero_tiles_v); this->cur_gates_["c"] = new SvdVecType(num_inputs, refinement_steps, u_cur_size, v_size, num_tiles_u, num_zero_tiles_u, num_tiles_v, num_zero_tiles_v); @@ -335,37 +396,34 @@ class AcceleratorBlob { const int kU_RecTotalSize = kNumGates / 2 * this->rec_gates_["i"]->get_u()->get_pruned_total_size(); const int kV_TotalSize = kNumGates * this->cur_gates_["i"]->get_v()->get_pruned_total_size(); const int kS_TotalSize = kNumGates * refinement_steps; - std::cout << "allocate stuff" << std::endl; this->fix_u_cur_ = svd::AllocateContiguously(kU_CurTotalSize); this->fix_u_rec_ = svd::AllocateContiguously(kU_RecTotalSize); this->fix_v_ = svd::AllocateContiguously(kV_TotalSize); this->u_cur_size_ = kU_CurTotalSize; this->u_rec_size_ = kU_RecTotalSize; this->v_size_ = kV_TotalSize; - this->fix_z_u_ = svd::AllocateContiguously>(kS_TotalSize); - this->fix_z_v_ = svd::AllocateContiguously>(kS_TotalSize); + this->s_size_ = kS_TotalSize; + this->fix_nz_u_ = svd::AllocateContiguously >(kS_TotalSize); + this->fix_nz_v_ = svd::AllocateContiguously >(kS_TotalSize); // NOTE: the following arrangement is: (R, E, G) const int kArrangementTypeREG = 2; const int kArrangementTypeRGE = 0; const int kU_CurLengthPruned = this->cur_gates_["i"]->get_u()->get_pruned_size(); const int kU_RecLengthPruned = this->rec_gates_["i"]->get_u()->get_pruned_size(); const int kV_LengthPruned = this->cur_gates_["i"]->get_v()->get_pruned_size(); - std::cout << "ArrangeWeights U cur" << std::endl; - lstm::ArrangeWeights(kArrangementTypeREG, refinement_steps, kU_CurLengthPruned, + svd::ArrangeWeights(kArrangementTypeREG, refinement_steps, kU_CurLengthPruned, this->cur_gates_["i"]->get_u()->fix_pruned_data(), this->cur_gates_["f"]->get_u()->fix_pruned_data(), this->cur_gates_["c"]->get_u()->fix_pruned_data(), this->cur_gates_["o"]->get_u()->fix_pruned_data(), this->fix_u_cur_); - std::cout << "ArrangeWeights U rec" << std::endl; - lstm::ArrangeWeights(kArrangementTypeREG, refinement_steps, kU_RecLengthPruned, + svd::ArrangeWeights(kArrangementTypeREG, refinement_steps, kU_RecLengthPruned, this->rec_gates_["i"]->get_u()->fix_pruned_data(), this->rec_gates_["f"]->get_u()->fix_pruned_data(), this->rec_gates_["c"]->get_u()->fix_pruned_data(), this->rec_gates_["o"]->get_u()->fix_pruned_data(), this->fix_u_rec_); - std::cout << "ArrangeWeights V" << std::endl; - lstm::ArrangeWeights(kArrangementTypeREG, refinement_steps, kV_LengthPruned, + svd::ArrangeWeights(kArrangementTypeREG, refinement_steps, kV_LengthPruned, kV_LengthPruned, this->cur_gates_["i"]->get_v()->fix_pruned_data(), this->cur_gates_["f"]->get_v()->fix_pruned_data(), @@ -376,45 +434,51 @@ class AcceleratorBlob { this->rec_gates_["c"]->get_v()->fix_pruned_data(), this->rec_gates_["o"]->get_v()->fix_pruned_data(), this->fix_v_); - std::cout << "arrange NZ" << std::endl; - lstm::ArrangeWeights(kArrangementTypeRGE, refinement_steps, 1, 1, - this->cur_gates_["i"]->get_u()->get_fix_z_idx(), - this->cur_gates_["f"]->get_u()->get_fix_z_idx(), - this->cur_gates_["c"]->get_u()->get_fix_z_idx(), - this->cur_gates_["o"]->get_u()->get_fix_z_idx(), - this->rec_gates_["i"]->get_u()->get_fix_z_idx(), - this->rec_gates_["f"]->get_u()->get_fix_z_idx(), - this->rec_gates_["c"]->get_u()->get_fix_z_idx(), - this->rec_gates_["o"]->get_u()->get_fix_z_idx(), - this->fix_z_u_); - lstm::ArrangeWeights(kArrangementTypeRGE, refinement_steps, 1, 1, - this->cur_gates_["i"]->get_v()->get_fix_z_idx(), - this->cur_gates_["f"]->get_v()->get_fix_z_idx(), - this->cur_gates_["c"]->get_v()->get_fix_z_idx(), - this->cur_gates_["o"]->get_v()->get_fix_z_idx(), - this->rec_gates_["i"]->get_v()->get_fix_z_idx(), - this->rec_gates_["f"]->get_v()->get_fix_z_idx(), - this->rec_gates_["c"]->get_v()->get_fix_z_idx(), - this->rec_gates_["o"]->get_v()->get_fix_z_idx(), - this->fix_z_v_); + svd::ArrangeWeights(kArrangementTypeRGE, refinement_steps, 1, 1, + this->cur_gates_["i"]->get_u()->get_fix_nz_idx(), + this->cur_gates_["f"]->get_u()->get_fix_nz_idx(), + this->cur_gates_["c"]->get_u()->get_fix_nz_idx(), + this->cur_gates_["o"]->get_u()->get_fix_nz_idx(), + this->rec_gates_["i"]->get_u()->get_fix_nz_idx(), + this->rec_gates_["f"]->get_u()->get_fix_nz_idx(), + this->rec_gates_["c"]->get_u()->get_fix_nz_idx(), + this->rec_gates_["o"]->get_u()->get_fix_nz_idx(), + this->fix_nz_u_); + svd::ArrangeWeights(kArrangementTypeRGE, refinement_steps, 1, 1, + this->cur_gates_["i"]->get_v()->get_fix_nz_idx(), + this->cur_gates_["f"]->get_v()->get_fix_nz_idx(), + this->cur_gates_["c"]->get_v()->get_fix_nz_idx(), + this->cur_gates_["o"]->get_v()->get_fix_nz_idx(), + this->rec_gates_["i"]->get_v()->get_fix_nz_idx(), + this->rec_gates_["f"]->get_v()->get_fix_nz_idx(), + this->rec_gates_["c"]->get_v()->get_fix_nz_idx(), + this->rec_gates_["o"]->get_v()->get_fix_nz_idx(), + this->fix_nz_v_); this->fix_x_.resize(num_inputs); this->fix_h_.resize(num_inputs); this->fix_c_.resize(num_inputs); + this->fix_h_curr_.resize(num_inputs); + this->fix_c_curr_.resize(num_inputs); + this->fix_h_prev_.resize(num_inputs); + this->fix_c_prev_.resize(num_inputs); this->fix_bias_.resize(num_inputs); - this->x_.resize(num_inputs, std::vector(this->lstm_input_size_)); this->h_.resize(num_inputs, std::vector(this->lstm_output_size_)); this->c_.resize(num_inputs, std::vector(this->lstm_output_size_)); + this->h_curr_.resize(num_inputs, std::vector(this->lstm_output_size_)); + this->c_curr_.resize(num_inputs, std::vector(this->lstm_output_size_)); + this->h_prev_.resize(num_inputs, std::vector(this->lstm_output_size_)); + this->c_prev_.resize(num_inputs, std::vector(this->lstm_output_size_)); this->bias_.resize(num_inputs, std::vector(kNumGates / 2 * this->lstm_output_size_)); - const bool init_random = true; this->InitVector(init_random, num_inputs, this->lstm_input_size_, this->fix_x_, this->x_); this->InitVector(!init_random, num_inputs, this->lstm_output_size_, this->fix_h_, this->h_); this->InitVector(!init_random, num_inputs, this->lstm_output_size_, this->fix_c_, this->c_); + this->InitVector(!init_random, num_inputs, this->lstm_output_size_, this->fix_h_curr_, this->h_curr_); + this->InitVector(!init_random, num_inputs, this->lstm_output_size_, this->fix_c_curr_, this->c_curr_); + this->InitVector(!init_random, num_inputs, this->lstm_output_size_, this->fix_h_prev_, this->h_prev_); + this->InitVector(!init_random, num_inputs, this->lstm_output_size_, this->fix_c_prev_, this->c_prev_); this->InitVector(init_random, num_inputs, kNumGates / 2 * this->lstm_output_size_, this->fix_bias_, this->bias_); - - std::cout << "Arrange S" << std::endl; - for (int i = 0; i < num_inputs; ++i) { this->fix_s_.push_back(svd::AllocateContiguously(kS_TotalSize)); } @@ -442,10 +506,14 @@ class AcceleratorBlob { svd::FreeContiguously(this->fix_x_[i]); svd::FreeContiguously(this->fix_h_[i]); svd::FreeContiguously(this->fix_c_[i]); + svd::FreeContiguously(this->fix_h_curr_[i]); + svd::FreeContiguously(this->fix_c_curr_[i]); + svd::FreeContiguously(this->fix_h_prev_[i]); + svd::FreeContiguously(this->fix_c_prev_[i]); svd::FreeContiguously(this->fix_bias_[i]); } - svd::FreeContiguously(this->fix_z_u_); - svd::FreeContiguously(this->fix_z_v_); + svd::FreeContiguously(this->fix_nz_u_); + svd::FreeContiguously(this->fix_nz_v_); for (auto g : this->cur_gates_) { delete g.second; } @@ -454,17 +522,34 @@ class AcceleratorBlob { } } - void reset_lstm_outputs() { + void ResetLstmOutputs() { for (int i = 0; i < this->lstm_num_inputs_; ++i) { for (int j = 0; j < this->lstm_output_size_; ++j) { - h_[i][j] = 0; - c_[i][j] = 0; - fix_h_[i][j] = 0; - fix_c_[i][j] = 0; + this->h_[i][j] = 0; + this->c_[i][j] = 0; + this->h_curr_[i][j] = 0; + this->c_curr_[i][j] = 0; + this->h_prev_[i][j] = 0; + this->c_prev_[i][j] = 0; + this->fix_h_[i][j] = 0; + this->fix_c_[i][j] = 0; + this->fix_h_curr_[i][j] = 0; + this->fix_c_curr_[i][j] = 0; + this->fix_h_prev_[i][j] = 0; + this->fix_c_prev_[i][j] = 0; } } } + int get_lstm_input_size() { + return this->lstm_input_size_; + } + + int get_lstm_output_size() { + return this->lstm_output_size_; + } + + FixType* get_fix_u_cur() { return this->fix_u_cur_; } @@ -505,20 +590,44 @@ class AcceleratorBlob { return this->fix_h_[i]; } + FloatType* get_h(const int i) { + return this->h_[i].data(); + } + + FixType* get_fix_h_curr(const int i) { + return this->fix_h_curr_[i]; + } + + FixType* get_fix_h_prev(const int i) { + return this->fix_h_prev_[i]; + } + FixType* get_fix_c(const int i) { return this->fix_c_[i]; } + FixType* get_fix_c_curr(const int i) { + return this->fix_c_curr_[i]; + } + + FixType* get_fix_c_prev(const int i) { + return this->fix_c_prev_[i]; + } + FixType* get_fix_bias(const int i) { return this->fix_bias_[i]; } - ap_uint* get_fix_z_u() { - return this->fix_z_u_; + FloatType* get_bias(const int i) { + return this->bias_[i].data(); + } + + ap_uint* get_fix_nz_u() { + return this->fix_nz_u_; } - ap_uint* get_fix_z_v() { - return this->fix_z_v_; + ap_uint* get_fix_nz_v() { + return this->fix_nz_v_; } int get_u_cur_size() { @@ -533,8 +642,38 @@ class AcceleratorBlob { return this->v_size_; } + int get_s_size() { + return this->s_size_; + } + + FloatType* get_x(const int i) { + return this->x_[i].data(); + } + + int CountMismatches(FixType** x, const int verbose = 0) { + int num_errors = 0; + for (int i = 0; i < this->lstm_num_inputs_; ++i) { + for (int j = 0; j < this->lstm_output_size_; ++j) { + if (verbose > 0) { + std:: cout << j << ") hls/emulator: " << this->fix_h_curr_[i][j] << " / " << x[i][j]; + } + if (this->fix_h_curr_[i][j] != x[i][j]) { + ++num_errors; + if (verbose > 0) { + std:: cout << " <-- ERROR" << std::endl; + } + } else { + if (verbose > 0) { + std:: cout << std::endl; + } + } + } + } + return num_errors; + } + }; -} // lstm +} // svd -#endif // end LSTM_DATA_HANDLER_H_ \ No newline at end of file +#endif // end LAYERS_LSTM_DATA_HANDLER_H_ \ No newline at end of file diff --git a/include/lstm/sw/soft_lstm.h b/include/layers/lstm/sw/soft_lstm.h similarity index 96% rename from include/lstm/sw/soft_lstm.h rename to include/layers/lstm/sw/soft_lstm.h index 9104695..073a9ee 100644 --- a/include/lstm/sw/soft_lstm.h +++ b/include/layers/lstm/sw/soft_lstm.h @@ -36,8 +36,8 @@ * streams * *****************************************************************************/ -#ifndef LSTM_SW_LSTM_SOFTWARE_H_ -#define LSTM_SW_LSTM_SOFTWARE_H_ +#ifndef LAYERS_LSTM_SW_LSTM_SOFTWARE_H_ +#define LAYERS_LSTM_SW_LSTM_SOFTWARE_H_ #ifdef __cplusplus extern "C" @@ -85,4 +85,4 @@ void LstmUnbatched(const bool use_blas, const float *bias_o, float *out); -#endif // end LSTM_SW_LSTM_SOFTWARE_H_ \ No newline at end of file +#endif // end LAYERS_LSTM_SW_LSTM_SOFTWARE_H_ \ No newline at end of file diff --git a/include/lstm/sw/soft_lstm_svd.h b/include/layers/lstm/sw/soft_lstm_svd.h similarity index 68% rename from include/lstm/sw/soft_lstm_svd.h rename to include/layers/lstm/sw/soft_lstm_svd.h index e6927a2..46097e9 100644 --- a/include/lstm/sw/soft_lstm_svd.h +++ b/include/layers/lstm/sw/soft_lstm_svd.h @@ -1,5 +1,5 @@ -#ifndef LSTM_SW_SOFT_LSTM_SVD_H_ -#define LSTM_SW_SOFT_LSTM_SVD_H_ +#ifndef LAYERS_LSTM_SW_SOFT_LSTM_SVD_H_ +#define LAYERS_LSTM_SW_SOFT_LSTM_SVD_H_ #include "math_utils/blas_utils.h" #include "math_utils/activation_functions.h" @@ -17,7 +17,6 @@ #include #include #include -// using namespace Eigen; #endif #include @@ -29,29 +28,25 @@ #include #endif -#ifdef HLS_DESIGN #include "hls_math.h" +#ifdef AP_INT_MAX_W +#undef AP_INT_MAX_W #define AP_INT_MAX_W 4096 +#endif #include "ap_int.h" #define FIX8_INT_BIT 3 #define FIX16_INT_BIT 7 +namespace svd { + typedef half HalfD; typedef ap_fixed<8, FIX8_INT_BIT, AP_RND_ZERO, AP_SAT_SYM> Fix8D; typedef ap_fixed<16, FIX16_INT_BIT, AP_RND_ZERO, AP_SAT_SYM> Fix16D; typedef ap_fixed Accum8D; typedef ap_fixed Accum16D; typedef half AccumHalfD; -#else -typedef float HalfD; -typedef float Fix8D; -typedef float Fix16D; -typedef float Accum8D; -typedef float Accum16D; -typedef float AccumHalfD; -#endif // end HLS_DESIGN /* * @todo Using Eigen library is an attempt to using sparse matrixes @@ -64,22 +59,6 @@ typedef Eigen::Matrix Ma typedef Eigen::Triplet TripletD; #endif -#ifndef ALLOC - #ifdef SDS_DESIGN - #define ALLOC(x) sds_alloc(x) - #else - #define ALLOC(x) malloc(x) - #endif -#endif - -#ifndef FREE - #ifdef SDS_DESIGN - #define FREE(x) sds_free(x) - #else - #define FREE(x) free(x) - #endif -#endif - /** * @brief Used for performance comparisons against hardware designs. * @@ -370,7 +349,7 @@ void hls_copy_cast(const int n, const DtypeIn *a, DtypeOut *y) { } template -void SvdModel2LstmTemplatedLatencyCC(const int verbose, +void SvdModelLstmTemplatedLatencyCC(const int verbose, const T *x, const int num_samples, const int num_timesteps, @@ -512,7 +491,7 @@ void SvdModel2LstmTemplatedLatencyCC(const int verbose, // TanH lookup table // =========================================================================== T tanh_table[TableSize]; - hls_init_tanh_table(tanh_table); + svd::hls_init_tanh_table(tanh_table); // =========================================================================== // NOTE: We need to 'transpose' u in order to generate the us matrix. This is @@ -521,52 +500,52 @@ void SvdModel2LstmTemplatedLatencyCC(const int verbose, // BEFORE TRANSPOSE: s.shape = (n_steps) // BEFORE TRANSPOSE: u.shape = (n_steps, input_size) // BEFORE TRANSPOSE: us.shape = (n_steps, input_size) - hls_transpose(n_steps, input_size, cur_i_u, cur_i_u_T); - hls_transpose(n_steps, input_size, cur_f_u, cur_f_u_T); - hls_transpose(n_steps, input_size, cur_c_u, cur_c_u_T); - hls_transpose(n_steps, input_size, cur_o_u, cur_o_u_T); - hls_transpose(n_steps, hidden_size, rec_i_u, rec_i_u_T); - hls_transpose(n_steps, hidden_size, rec_f_u, rec_f_u_T); - hls_transpose(n_steps, hidden_size, rec_c_u, rec_c_u_T); - hls_transpose(n_steps, hidden_size, rec_o_u, rec_o_u_T); + svd::hls_transpose(n_steps, input_size, cur_i_u, cur_i_u_T); + svd::hls_transpose(n_steps, input_size, cur_f_u, cur_f_u_T); + svd::hls_transpose(n_steps, input_size, cur_c_u, cur_c_u_T); + svd::hls_transpose(n_steps, input_size, cur_o_u, cur_o_u_T); + svd::hls_transpose(n_steps, hidden_size, rec_i_u, rec_i_u_T); + svd::hls_transpose(n_steps, hidden_size, rec_f_u, rec_f_u_T); + svd::hls_transpose(n_steps, hidden_size, rec_c_u, rec_c_u_T); + svd::hls_transpose(n_steps, hidden_size, rec_o_u, rec_o_u_T); for (int i = 0; i < input_size; ++i) { - hls_mul(n_steps, &cur_i_u_T[i * n_steps], cur_i_s, &cur_i_us[i * n_steps]); - hls_mul(n_steps, &cur_f_u_T[i * n_steps], cur_f_s, &cur_f_us[i * n_steps]); - hls_mul(n_steps, &cur_c_u_T[i * n_steps], cur_c_s, &cur_c_us[i * n_steps]); - hls_mul(n_steps, &cur_o_u_T[i * n_steps], cur_o_s, &cur_o_us[i * n_steps]); + svd::hls_mul(n_steps, &cur_i_u_T[i * n_steps], cur_i_s, &cur_i_us[i * n_steps]); + svd::hls_mul(n_steps, &cur_f_u_T[i * n_steps], cur_f_s, &cur_f_us[i * n_steps]); + svd::hls_mul(n_steps, &cur_c_u_T[i * n_steps], cur_c_s, &cur_c_us[i * n_steps]); + svd::hls_mul(n_steps, &cur_o_u_T[i * n_steps], cur_o_s, &cur_o_us[i * n_steps]); } for (int i = 0; i < hidden_size; ++i) { - hls_mul(n_steps, &rec_i_u_T[i * n_steps], rec_i_s, &rec_i_us[i * n_steps]); - hls_mul(n_steps, &rec_f_u_T[i * n_steps], rec_f_s, &rec_f_us[i * n_steps]); - hls_mul(n_steps, &rec_c_u_T[i * n_steps], rec_c_s, &rec_c_us[i * n_steps]); - hls_mul(n_steps, &rec_o_u_T[i * n_steps], rec_o_s, &rec_o_us[i * n_steps]); + svd::hls_mul(n_steps, &rec_i_u_T[i * n_steps], rec_i_s, &rec_i_us[i * n_steps]); + svd::hls_mul(n_steps, &rec_f_u_T[i * n_steps], rec_f_s, &rec_f_us[i * n_steps]); + svd::hls_mul(n_steps, &rec_c_u_T[i * n_steps], rec_c_s, &rec_c_us[i * n_steps]); + svd::hls_mul(n_steps, &rec_o_u_T[i * n_steps], rec_o_s, &rec_o_us[i * n_steps]); } // =========================================================================== // Transpose back current v and current u vectors. // =========================================================================== // From (input_size, n_steps) to (n_steps, input_size) - hls_transpose(input_size, n_steps, cur_i_us, cur_i_u_T); - hls_transpose(input_size, n_steps, cur_f_us, cur_f_u_T); - hls_transpose(input_size, n_steps, cur_c_us, cur_c_u_T); - hls_transpose(input_size, n_steps, cur_o_us, cur_o_u_T); + svd::hls_transpose(input_size, n_steps, cur_i_us, cur_i_u_T); + svd::hls_transpose(input_size, n_steps, cur_f_us, cur_f_u_T); + svd::hls_transpose(input_size, n_steps, cur_c_us, cur_c_u_T); + svd::hls_transpose(input_size, n_steps, cur_o_us, cur_o_u_T); // From (n_steps, hidden_size) to (hidden_size, n_steps) - hls_transpose(n_steps, hidden_size, cur_i_v, cur_i_v_T); - hls_transpose(n_steps, hidden_size, cur_f_v, cur_f_v_T); - hls_transpose(n_steps, hidden_size, cur_c_v, cur_c_v_T); - hls_transpose(n_steps, hidden_size, cur_o_v, cur_o_v_T); + svd::hls_transpose(n_steps, hidden_size, cur_i_v, cur_i_v_T); + svd::hls_transpose(n_steps, hidden_size, cur_f_v, cur_f_v_T); + svd::hls_transpose(n_steps, hidden_size, cur_c_v, cur_c_v_T); + svd::hls_transpose(n_steps, hidden_size, cur_o_v, cur_o_v_T); // =========================================================================== // Transpose back recurrent v and recurrent u vectors. // =========================================================================== // From (hidden_size, n_steps) to (n_steps, hidden_size) - hls_transpose(hidden_size, n_steps, rec_i_us, rec_i_u_T); - hls_transpose(hidden_size, n_steps, rec_f_us, rec_f_u_T); - hls_transpose(hidden_size, n_steps, rec_c_us, rec_c_u_T); - hls_transpose(hidden_size, n_steps, rec_o_us, rec_o_u_T); + svd::hls_transpose(hidden_size, n_steps, rec_i_us, rec_i_u_T); + svd::hls_transpose(hidden_size, n_steps, rec_f_us, rec_f_u_T); + svd::hls_transpose(hidden_size, n_steps, rec_c_us, rec_c_u_T); + svd::hls_transpose(hidden_size, n_steps, rec_o_us, rec_o_u_T); // From (n_steps, hidden_size) to (hidden_size, n_steps) - hls_transpose(n_steps, hidden_size, rec_i_v, rec_i_v_T); - hls_transpose(n_steps, hidden_size, rec_f_v, rec_f_v_T); - hls_transpose(n_steps, hidden_size, rec_c_v, rec_c_v_T); - hls_transpose(n_steps, hidden_size, rec_o_v, rec_o_v_T); + svd::hls_transpose(n_steps, hidden_size, rec_i_v, rec_i_v_T); + svd::hls_transpose(n_steps, hidden_size, rec_f_v, rec_f_v_T); + svd::hls_transpose(n_steps, hidden_size, rec_c_v, rec_c_v_T); + svd::hls_transpose(n_steps, hidden_size, rec_o_v, rec_o_v_T); const int kSampleSize = num_timesteps * input_size; @@ -597,15 +576,15 @@ void SvdModel2LstmTemplatedLatencyCC(const int verbose, for (int j = 0; j < num_timesteps; ++j) { #if defined(MULTITHREAD_DESIGN) && !defined(SDS_DESIGN) && !defined(__SYNTHESIS__) - std::thread cur_i_ux_thread(hls_gemv, n_steps, input_size, cur_i_u_T, &x[i * kSampleSize + j * input_size], cur_i_ux); - std::thread cur_f_ux_thread(hls_gemv, n_steps, input_size, cur_f_u_T, &x[i * kSampleSize + j * input_size], cur_f_ux); - std::thread cur_c_ux_thread(hls_gemv, n_steps, input_size, cur_c_u_T, &x[i * kSampleSize + j * input_size], cur_c_ux); - std::thread cur_o_ux_thread(hls_gemv, n_steps, input_size, cur_o_u_T, &x[i * kSampleSize + j * input_size], cur_o_ux); + std::thread cur_i_ux_thread(svd::hls_gemv, n_steps, input_size, cur_i_u_T, &x[i * kSampleSize + j * input_size], cur_i_ux); + std::thread cur_f_ux_thread(svd::hls_gemv, n_steps, input_size, cur_f_u_T, &x[i * kSampleSize + j * input_size], cur_f_ux); + std::thread cur_c_ux_thread(svd::hls_gemv, n_steps, input_size, cur_c_u_T, &x[i * kSampleSize + j * input_size], cur_c_ux); + std::thread cur_o_ux_thread(svd::hls_gemv, n_steps, input_size, cur_o_u_T, &x[i * kSampleSize + j * input_size], cur_o_ux); - std::thread rec_i_uh_thread(hls_gemv, n_steps, hidden_size, rec_i_u_T, &out[i * hidden_size], rec_i_uh); - std::thread rec_f_uh_thread(hls_gemv, n_steps, hidden_size, rec_f_u_T, &out[i * hidden_size], rec_f_uh); - std::thread rec_c_uh_thread(hls_gemv, n_steps, hidden_size, rec_c_u_T, &out[i * hidden_size], rec_c_uh); - std::thread rec_o_uh_thread(hls_gemv, n_steps, hidden_size, rec_o_u_T, &out[i * hidden_size], rec_o_uh); + std::thread rec_i_uh_thread(svd::hls_gemv, n_steps, hidden_size, rec_i_u_T, &out[i * hidden_size], rec_i_uh); + std::thread rec_f_uh_thread(svd::hls_gemv, n_steps, hidden_size, rec_f_u_T, &out[i * hidden_size], rec_f_uh); + std::thread rec_c_uh_thread(svd::hls_gemv, n_steps, hidden_size, rec_c_u_T, &out[i * hidden_size], rec_c_uh); + std::thread rec_o_uh_thread(svd::hls_gemv, n_steps, hidden_size, rec_o_u_T, &out[i * hidden_size], rec_o_uh); cur_i_ux_thread.join(); cur_f_ux_thread.join(); @@ -617,15 +596,15 @@ void SvdModel2LstmTemplatedLatencyCC(const int verbose, rec_c_uh_thread.join(); rec_o_uh_thread.join(); - std::thread cur_i_y_thread(hls_gemv, hidden_size, n_steps, cur_i_v_T, cur_i_ux, cur_i_y); - std::thread cur_f_y_thread(hls_gemv, hidden_size, n_steps, cur_f_v_T, cur_f_ux, cur_f_y); - std::thread cur_c_y_thread(hls_gemv, hidden_size, n_steps, cur_c_v_T, cur_c_ux, cur_c_y); - std::thread cur_o_y_thread(hls_gemv, hidden_size, n_steps, cur_o_v_T, cur_o_ux, cur_o_y); + std::thread cur_i_y_thread(svd::hls_gemv, hidden_size, n_steps, cur_i_v_T, cur_i_ux, cur_i_y); + std::thread cur_f_y_thread(svd::hls_gemv, hidden_size, n_steps, cur_f_v_T, cur_f_ux, cur_f_y); + std::thread cur_c_y_thread(svd::hls_gemv, hidden_size, n_steps, cur_c_v_T, cur_c_ux, cur_c_y); + std::thread cur_o_y_thread(svd::hls_gemv, hidden_size, n_steps, cur_o_v_T, cur_o_ux, cur_o_y); - std::thread rec_i_y_thread(hls_gemv, hidden_size, n_steps, rec_i_v_T, rec_i_uh, rec_i_y); - std::thread rec_f_y_thread(hls_gemv, hidden_size, n_steps, rec_f_v_T, rec_f_uh, rec_f_y); - std::thread rec_c_y_thread(hls_gemv, hidden_size, n_steps, rec_c_v_T, rec_c_uh, rec_c_y); - std::thread rec_o_y_thread(hls_gemv, hidden_size, n_steps, rec_o_v_T, rec_o_uh, rec_o_y); + std::thread rec_i_y_thread(svd::hls_gemv, hidden_size, n_steps, rec_i_v_T, rec_i_uh, rec_i_y); + std::thread rec_f_y_thread(svd::hls_gemv, hidden_size, n_steps, rec_f_v_T, rec_f_uh, rec_f_y); + std::thread rec_c_y_thread(svd::hls_gemv, hidden_size, n_steps, rec_c_v_T, rec_c_uh, rec_c_y); + std::thread rec_o_y_thread(svd::hls_gemv, hidden_size, n_steps, rec_o_v_T, rec_o_uh, rec_o_y); cur_i_y_thread.join(); cur_f_y_thread.join(); @@ -644,54 +623,54 @@ void SvdModel2LstmTemplatedLatencyCC(const int verbose, // is simmetrical, i.e. same transposed matrices logic. // ======================================================================= // us.T @ x - hls_gemv(n_steps, input_size, cur_i_u_T, &x[i * kSampleSize + j * input_size], cur_i_ux); - hls_gemv(n_steps, input_size, cur_f_u_T, &x[i * kSampleSize + j * input_size], cur_f_ux); - hls_gemv(n_steps, input_size, cur_c_u_T, &x[i * kSampleSize + j * input_size], cur_c_ux); - hls_gemv(n_steps, input_size, cur_o_u_T, &x[i * kSampleSize + j * input_size], cur_o_ux); + svd::hls_gemv(n_steps, input_size, cur_i_u_T, &x[i * kSampleSize + j * input_size], cur_i_ux); + svd::hls_gemv(n_steps, input_size, cur_f_u_T, &x[i * kSampleSize + j * input_size], cur_f_ux); + svd::hls_gemv(n_steps, input_size, cur_c_u_T, &x[i * kSampleSize + j * input_size], cur_c_ux); + svd::hls_gemv(n_steps, input_size, cur_o_u_T, &x[i * kSampleSize + j * input_size], cur_o_ux); // v.T @ xus - hls_gemv(hidden_size, n_steps, cur_i_v_T, cur_i_ux, cur_i_y); - hls_gemv(hidden_size, n_steps, cur_f_v_T, cur_f_ux, cur_f_y); - hls_gemv(hidden_size, n_steps, cur_c_v_T, cur_c_ux, cur_c_y); - hls_gemv(hidden_size, n_steps, cur_o_v_T, cur_o_ux, cur_o_y); + svd::hls_gemv(hidden_size, n_steps, cur_i_v_T, cur_i_ux, cur_i_y); + svd::hls_gemv(hidden_size, n_steps, cur_f_v_T, cur_f_ux, cur_f_y); + svd::hls_gemv(hidden_size, n_steps, cur_c_v_T, cur_c_ux, cur_c_y); + svd::hls_gemv(hidden_size, n_steps, cur_o_v_T, cur_o_ux, cur_o_y); // ======================================================================= // Recurrent LSTM gates // ======================================================================= // us.T @ h - hls_gemv(n_steps, hidden_size, rec_i_u_T, &out[i * hidden_size], rec_i_uh); - hls_gemv(n_steps, hidden_size, rec_f_u_T, &out[i * hidden_size], rec_f_uh); - hls_gemv(n_steps, hidden_size, rec_c_u_T, &out[i * hidden_size], rec_c_uh); - hls_gemv(n_steps, hidden_size, rec_o_u_T, &out[i * hidden_size], rec_o_uh); + svd::hls_gemv(n_steps, hidden_size, rec_i_u_T, &out[i * hidden_size], rec_i_uh); + svd::hls_gemv(n_steps, hidden_size, rec_f_u_T, &out[i * hidden_size], rec_f_uh); + svd::hls_gemv(n_steps, hidden_size, rec_c_u_T, &out[i * hidden_size], rec_c_uh); + svd::hls_gemv(n_steps, hidden_size, rec_o_u_T, &out[i * hidden_size], rec_o_uh); // v.T @ hus - hls_gemv(hidden_size, n_steps, rec_i_v_T, rec_i_uh, rec_i_y); - hls_gemv(hidden_size, n_steps, rec_f_v_T, rec_f_uh, rec_f_y); - hls_gemv(hidden_size, n_steps, rec_c_v_T, rec_c_uh, rec_c_y); - hls_gemv(hidden_size, n_steps, rec_o_v_T, rec_o_uh, rec_o_y); + svd::hls_gemv(hidden_size, n_steps, rec_i_v_T, rec_i_uh, rec_i_y); + svd::hls_gemv(hidden_size, n_steps, rec_f_v_T, rec_f_uh, rec_f_y); + svd::hls_gemv(hidden_size, n_steps, rec_c_v_T, rec_c_uh, rec_c_y); + svd::hls_gemv(hidden_size, n_steps, rec_o_v_T, rec_o_uh, rec_o_y); #endif // ======================================================================= // Non linearities // ======================================================================= - hls_add(hidden_size, cur_i_y, bias_i, i_cur_bias); - hls_add(hidden_size, cur_f_y, bias_f, f_cur_bias); - hls_add(hidden_size, cur_c_y, bias_c, c_cur_bias); - hls_add(hidden_size, cur_o_y, bias_o, o_cur_bias); - - hls_add(hidden_size, i_cur_bias, rec_i_y, i_sum); - hls_add(hidden_size, f_cur_bias, rec_f_y, f_sum); - hls_add(hidden_size, c_cur_bias, rec_c_y, c_sum); - hls_add(hidden_size, o_cur_bias, rec_o_y, o_sum); - - hls_hard_sigmoid(hidden_size, i_sum, i_gate); - hls_hard_sigmoid(hidden_size, f_sum, f_gate); - hls_hard_sigmoid(hidden_size, o_sum, o_gate); - hls_tanh(hidden_size, c_sum, tanh_table, c_sum_tanh); - hls_mul(hidden_size, c_sum_tanh, i_gate, c_lhs); - hls_mul(hidden_size, c, f_gate, c_rhs); - - hls_add(hidden_size, c_lhs, c_rhs, c); - hls_tanh(hidden_size, c, tanh_table, c_tanh); - hls_mul(hidden_size, c_tanh, o_gate, &out[i * hidden_size]); + svd::hls_add(hidden_size, cur_i_y, bias_i, i_cur_bias); + svd::hls_add(hidden_size, cur_f_y, bias_f, f_cur_bias); + svd::hls_add(hidden_size, cur_c_y, bias_c, c_cur_bias); + svd::hls_add(hidden_size, cur_o_y, bias_o, o_cur_bias); + + svd::hls_add(hidden_size, i_cur_bias, rec_i_y, i_sum); + svd::hls_add(hidden_size, f_cur_bias, rec_f_y, f_sum); + svd::hls_add(hidden_size, c_cur_bias, rec_c_y, c_sum); + svd::hls_add(hidden_size, o_cur_bias, rec_o_y, o_sum); + + svd::hls_hard_sigmoid(hidden_size, i_sum, i_gate); + svd::hls_hard_sigmoid(hidden_size, f_sum, f_gate); + svd::hls_hard_sigmoid(hidden_size, o_sum, o_gate); + svd::hls_tanh(hidden_size, c_sum, tanh_table, c_sum_tanh); + svd::hls_mul(hidden_size, c_sum_tanh, i_gate, c_lhs); + svd::hls_mul(hidden_size, c, f_gate, c_rhs); + + svd::hls_add(hidden_size, c_lhs, c_rhs, c); + svd::hls_tanh(hidden_size, c, tanh_table, c_tanh); + svd::hls_mul(hidden_size, c_tanh, o_gate, &out[i * hidden_size]); } } #ifdef SDS_DESIGN @@ -789,7 +768,7 @@ void SvdModel2LstmTemplatedLatencyCC(const int verbose, #ifdef __cplusplus extern "C" #endif -void SvdModel2LstmFix8(const int verbose, +void SvdModelLstmFix8(const int verbose, const Fix8D *x, const int num_samples, const int num_timesteps, @@ -829,7 +808,7 @@ void SvdModel2LstmFix8(const int verbose, #ifdef __cplusplus extern "C" #endif -void SvdModel2LstmFix16(const int verbose, +void SvdModelLstmFix16(const int verbose, const Fix16D *x, const int num_samples, const int num_timesteps, @@ -869,7 +848,7 @@ void SvdModel2LstmFix16(const int verbose, #ifdef __cplusplus extern "C" #endif -void SvdModel2LstmSoftware(const int verbose, +void SvdModelLstmSoftware(const int verbose, const bool use_blas, const int type, // 0:float, 1:fix8, 2:fix16 const float *x, @@ -998,7 +977,7 @@ void SvdModelEigenUnbatched(const int verbose, #ifdef __cplusplus extern "C" #endif -void SvdModel2LstmSoftwareBatched(const int verbose, +void SvdModelLstmSoftwareBatched(const int verbose, const bool use_blas, const float *x, // (num_samples, num_inputs, num_timesteps, input_size) const int num_inputs, @@ -1037,253 +1016,7 @@ void SvdModel2LstmSoftwareBatched(const int verbose, const float *bias_o, float *out); -/** - * @brief Emulator used to test the accuracy of the HLS accelerator. It - * allows for testing different design points without recompiling. - * - * @param[in] InputSize The input size - * @param[in] HiddenSize The hidden size - * @param[in] NumIter The number of refinement steps - * @param[in] Tu The number of tiles of u - * @param[in] ZTu The number of pruned tiles of u - * @param[in] Tv The number of tiles of v - * @param[in] ZTv The number of pruned tiles of v - * @param[in] NumTimesteps The number timesteps (deprecated) - * @param[in] x The input data - * @param[in] cur_i_u The current i u - * @param[in] cur_i_s The current i s - * @param[in] cur_i_v The current i v - * @param[in] cur_i_unz The current i unz - * @param[in] cur_i_vnz The current i vnz - * @param[in] cur_f_u The current f u - * @param[in] cur_f_s The current f s - * @param[in] cur_f_v The current f v - * @param[in] cur_f_unz The current f unz - * @param[in] cur_f_vnz The current f vnz - * @param[in] cur_c_u The current c u - * @param[in] cur_c_s The current c s - * @param[in] cur_c_v The current c v - * @param[in] cur_c_unz The current c unz - * @param[in] cur_c_vnz The current c vnz - * @param[in] cur_o_u The current o u - * @param[in] cur_o_s The current o s - * @param[in] cur_o_v The current o v - * @param[in] cur_o_unz The current o unz - * @param[in] cur_o_vnz The current o vnz - * @param[in] rec_i_u The recurrent i u - * @param[in] rec_i_s The recurrent i s - * @param[in] rec_i_v The recurrent i v - * @param[in] rec_i_unz The recurrent i unz - * @param[in] rec_i_vnz The recurrent i vnz - * @param[in] rec_f_u The recurrent f u - * @param[in] rec_f_s The recurrent f s - * @param[in] rec_f_v The recurrent f v - * @param[in] rec_f_unz The recurrent f unz - * @param[in] rec_f_vnz The recurrent f vnz - * @param[in] rec_c_u The recurrent c u - * @param[in] rec_c_s The recurrent c s - * @param[in] rec_c_v The recurrent c v - * @param[in] rec_c_unz The recurrent c unz - * @param[in] rec_c_vnz The recurrent c vnz - * @param[in] rec_o_u The recurrent o u - * @param[in] rec_o_s The recurrent o s - * @param[in] rec_o_v The recurrent o v - * @param[in] rec_o_unz The recurrent o unz - * @param[in] rec_o_vnz The recurrent o vnz - * @param[in] bias The bias - * @param[in] c_prev The c previous - * @param[in] h_prev The h previous - * @param c_curr The c current - * @param h_curr The h current - * - * @tparam DataA Activation type - * @tparam DataW Weight type - * @tparam DataAcc Accumulation type - * @tparam DataMul Multiplication type - * @tparam TanhLutSize Size of the hard sigmoid LUT - */ -template -void SoftSvdModel(const int InputSize, - const int HiddenSize, - const int NumIter, - const int Tu, - const int ZTu, - const int Tv, - const int ZTv, - const int NumTimesteps, - const DataA *x, - const DataW *cur_i_u, - const DataW *cur_i_s, - const DataW *cur_i_v, - const int *cur_i_unz, - const int *cur_i_vnz, - const DataW *cur_f_u, - const DataW *cur_f_s, - const DataW *cur_f_v, - const int *cur_f_unz, - const int *cur_f_vnz, - const DataW *cur_c_u, - const DataW *cur_c_s, - const DataW *cur_c_v, - const int *cur_c_unz, - const int *cur_c_vnz, - const DataW *cur_o_u, - const DataW *cur_o_s, - const DataW *cur_o_v, - const int *cur_o_unz, - const int *cur_o_vnz, - const DataW *rec_i_u, - const DataW *rec_i_s, - const DataW *rec_i_v, - const int *rec_i_unz, - const int *rec_i_vnz, - const DataW *rec_f_u, - const DataW *rec_f_s, - const DataW *rec_f_v, - const int *rec_f_unz, - const int *rec_f_vnz, - const DataW *rec_c_u, - const DataW *rec_c_s, - const DataW *rec_c_v, - const int *rec_c_unz, - const int *rec_c_vnz, - const DataW *rec_o_u, - const DataW *rec_o_s, - const DataW *rec_o_v, - const int *rec_o_unz, - const int *rec_o_vnz, - const DataW *bias, - DataA *c_prev, - DataA *h_prev, - DataA *c_curr, - DataA *h_curr) { - assert(Tu % 2 == 0); - assert(Tv % 2 == 0); - assert(Tu >= 8); - assert(Tv >= 8); - assert(Tu > ZTu); - assert(Tv > ZTv); - assert(NumIter % 2 == 0); - const DataW *u[8]; - const DataW *s[8]; - const DataW *v[8]; - const int *unz[8]; - const int *vnz[8]; - u[0] = cur_i_u; u[1] = cur_f_u; u[2] = cur_c_u; u[3] = cur_o_u; - u[4] = rec_i_u; u[5] = rec_f_u; u[6] = rec_c_u; u[7] = rec_o_u; - s[0] = cur_i_s; s[1] = cur_f_s; s[2] = cur_c_s; s[3] = cur_o_s; - s[4] = rec_i_s; s[5] = rec_f_s; s[6] = rec_c_s; s[7] = rec_o_s; - v[0] = cur_i_v; v[1] = cur_f_v; v[2] = cur_c_v; v[3] = cur_o_v; - v[4] = rec_i_v; v[5] = rec_f_v; v[6] = rec_c_v; v[7] = rec_o_v; - unz[0] = cur_i_unz; unz[1] = cur_f_unz; unz[2] = cur_c_unz; unz[3] = cur_o_unz; - unz[4] = rec_i_unz; unz[5] = rec_f_unz; unz[6] = rec_c_unz; unz[7] = rec_o_unz; - vnz[0] = cur_i_vnz; vnz[1] = cur_f_vnz; vnz[2] = cur_c_vnz; vnz[3] = cur_o_vnz; - vnz[4] = rec_i_vnz; vnz[5] = rec_f_vnz; vnz[6] = rec_c_vnz; vnz[7] = rec_o_vnz; - hls::stream **cur_out_fifo = new hls::stream*[4]; - hls::stream **rec_out_fifo = new hls::stream*[4]; - for (int i = 0; i < 4; ++i) { - cur_out_fifo[i] = new hls::stream[Tv]; - rec_out_fifo[i] = new hls::stream[Tv]; - } - DataAcc *u_acc[8]; - DataAcc **acc_buffer[8]; - DataMul xs_val[8] = {0}; - for (int i = 0; i < 8; ++i) { - u_acc[i] = new DataAcc[NumIter]; - } - DataA *h[2]; - DataA *c[2]; - if (NumTimesteps > 1) { - for (int i = 0; i < 2; ++i) { - h[i] = new DataA[HiddenSize]; - c[i] = new DataA[HiddenSize]; - std::memset(h[i], 0, HiddenSize * sizeof(DataA)); - std::memset(c[i], 0, HiddenSize * sizeof(DataA)); - } - } else { - c[0] = c_prev; - c[1] = c_curr; - h[0] = h_prev; - h[1] = h_curr; - } - for (int i = 0; i < 8; ++i) { - acc_buffer[i] = new DataAcc*[Tv]; - for (int j = 0; j < Tv; ++j) { - acc_buffer[i][j] = new DataAcc[HiddenSize / Tv]; - } - } - for (int t = 0; t < NumTimesteps; ++t) { - const int in_ptr = (t % 2) == 0 ? 0 : 1; - const int out_ptr = (t % 2) == 0 ? 1 : 0; - for (int i = 0; i < 8; ++i) { - std::memset(u_acc[i], 0, NumIter * sizeof(DataAcc)); - for (int j = 0; j < Tv; ++j) { - std::memset(acc_buffer[i][j], 0, HiddenSize / Tv * sizeof(DataAcc)); - } - } - for (int i = 0; i < NumIter; ++i) { - for (int q = 0; q < 4; ++q) { - for (int j = 0; j < Tu - ZTu; ++j) { - const int nz_idx = i * (Tu - ZTu) + j; - for (int k = 0; k < InputSize / Tu; ++k) { - int u_idx = i * InputSize / Tu * (Tu - ZTu) + j * InputSize / Tu + k; - u_acc[q][i] += x[t * InputSize + unz[q][nz_idx] * InputSize / Tu + k] * u[q][u_idx]; - } - for (int k = 0; k < HiddenSize / Tu; ++k) { - int u_idx = i * HiddenSize / Tu * (Tu - ZTu) + j * HiddenSize / Tu + k; - u_acc[q + 4][i] += h[in_ptr][unz[q + 4][nz_idx] * HiddenSize / Tu + k] * u[q + 4][u_idx]; - } - } - } - for (int q = 0; q < 8; ++q) { - xs_val[q] = s[q][i] * DataA(u_acc[q][i]); - for (int j = 0; j < Tv - ZTv; ++j) { - for (int k = 0; k < HiddenSize / Tv; ++k) { - const int v_idx = i * HiddenSize / Tv * (Tv - ZTv) + j * HiddenSize / Tv + k; - const int nz_idx = i * (Tv - ZTv) + j; - acc_buffer[q][vnz[q][nz_idx]][k] += xs_val[q] * v[q][v_idx]; - } - } - } - } - for (int i = 0; i < 4; ++i) { - for (int j = 0; j < Tv; ++j) { - for (int k = 0; k < HiddenSize / Tv; ++k) { - cur_out_fifo[i][j].write(acc_buffer[i][j][k]); - rec_out_fifo[i][j].write(acc_buffer[i + 4][j][k]); - } - } - } - NonLinearityUnitSoftware(HiddenSize, - Tv, 4, c[in_ptr], cur_out_fifo, rec_out_fifo, h[out_ptr], c[out_ptr], - true, bias); - } - if (NumTimesteps > 1) { - std::memcpy(h_curr, h[(NumTimesteps - 1) % 2 == 0 ? 1 : 0], HiddenSize * sizeof(DataA)); - } - for (int i = 0; i < 4; ++i) { - delete[] cur_out_fifo[i]; - delete[] rec_out_fifo[i]; - } - delete[] cur_out_fifo; - delete[] rec_out_fifo; - for (int i = 0; i < 8; ++i) { - delete[] u_acc[i]; - for (int j = 0; j < Tv; ++j) { - delete[] acc_buffer[i][j]; - } - delete[] acc_buffer[i]; - } - if (NumTimesteps > 1) { - for (int i = 0; i < 2; ++i) { - delete[] h[i]; - delete[] c[i]; - } - } -} -#endif // end LSTM_SW_SOFT_LSTM_SVD_H_ \ No newline at end of file +} // svd + +#endif // end LAYERS_LSTM_SW_SOFT_LSTM_SVD_H_ \ No newline at end of file diff --git a/include/lstm/hls/lstm_svd.h b/include/lstm/hls/lstm_svd.h deleted file mode 100644 index 0e8db4c..0000000 --- a/include/lstm/hls/lstm_svd.h +++ /dev/null @@ -1,143 +0,0 @@ -#ifndef LSTM_HLS_LSTM_SVD_H_ -#define LSTM_HLS_LSTM_SVD_H_ - -#include "svd_params.h" - -#ifdef SDS_DESIGN -// ============================================================================= -// Ports using DMAs -// ============================================================================= -#pragma SDS data copy(x1_port[0:INPUT_SIZE]) -#pragma SDS data copy(x2_port[0:INPUT_SIZE]) -#pragma SDS data copy(h_t1_prev_port[0:HIDDEN_SIZE]) -#pragma SDS data copy(h_t2_prev_port[0:HIDDEN_SIZE]) -#pragma SDS data copy(c_t1_prev_port[0:HIDDEN_SIZE]) -#pragma SDS data copy(c_t2_prev_port[0:HIDDEN_SIZE]) -#pragma SDS data copy(bias1_port[0:4*HIDDEN_SIZE]) -#pragma SDS data copy(bias2_port[0:4*HIDDEN_SIZE]) -#pragma SDS data copy(comb_v_port[0:NUM_ITERATIONS * 8]) -#pragma SDS data copy(comb_u_port[0:NUM_ITERATIONS * 8]) -#pragma SDS data copy(h_t1_curr_port[0:HIDDEN_SIZE]) -#pragma SDS data copy(h_t2_curr_port[0:HIDDEN_SIZE]) -#pragma SDS data copy(c_t1_curr_port[0:HIDDEN_SIZE]) -#pragma SDS data copy(c_t2_curr_port[0:HIDDEN_SIZE]) -// Data Movers -#pragma SDS data data_mover(x1_port:AXIDMA_SIMPLE) -#pragma SDS data data_mover(x2_port:AXIDMA_SIMPLE) -#pragma SDS data data_mover(h_t1_prev_port:AXIDMA_SIMPLE) -#pragma SDS data data_mover(h_t2_prev_port:AXIDMA_SIMPLE) -#pragma SDS data data_mover(c_t1_prev_port:AXIDMA_SIMPLE) -#pragma SDS data data_mover(c_t2_prev_port:AXIDMA_SIMPLE) -#pragma SDS data data_mover(bias1_port:AXIDMA_SIMPLE) -#pragma SDS data data_mover(bias2_port:AXIDMA_SIMPLE) -#pragma SDS data data_mover(comb_v_port:AXIDMA_SIMPLE) -#pragma SDS data data_mover(comb_u_port:AXIDMA_SIMPLE) -#pragma SDS data data_mover(h_t1_curr_port:AXIDMA_SIMPLE) -#pragma SDS data data_mover(h_t2_curr_port:AXIDMA_SIMPLE) -#pragma SDS data data_mover(c_t1_curr_port:AXIDMA_SIMPLE) -#pragma SDS data data_mover(c_t2_curr_port:AXIDMA_SIMPLE) -// Port mapping -// #pragma SDS data sys_port(x1_port:ps_e_S_AXI_HPC0_FPD) // Coherent HP port -// #pragma SDS data sys_port(x2_port:ps_e_S_AXI_HPC0_FPD) // Coherent HP port -// #pragma SDS data sys_port(h_t1_prev_port:ps_e_S_AXI_HPC0_FPD) // Coherent HP port -// #pragma SDS data sys_port(h_t2_prev_port:ps_e_S_AXI_HPC0_FPD) // Coherent HP port -// #pragma SDS data sys_port(c_t1_prev_port:ps_e_S_AXI_HPC0_FPD) // Coherent HP port -// #pragma SDS data sys_port(c_t2_prev_port:ps_e_S_AXI_HPC0_FPD) // Coherent HP port -// #pragma SDS data sys_port(bias1_port:ps_e_S_AXI_HPC0_FPD) // Coherent HP port -// #pragma SDS data sys_port(bias2_port:ps_e_S_AXI_HPC0_FPD) // Coherent HP port -// #pragma SDS data sys_port(comb_v_port:ps_e_S_AXI_HPC0_FPD) // Coherent HP port -// #pragma SDS data sys_port(comb_u_port:ps_e_S_AXI_HPC0_FPD) // Coherent HP port -// #pragma SDS data sys_port(h_t1_curr_port:ps_e_S_AXI_HPC1_FPD) // Coherent HP port -// #pragma SDS data sys_port(h_t2_curr_port:ps_e_S_AXI_HPC1_FPD) // Coherent HP port -// #pragma SDS data sys_port(c_t1_curr_port:ps_e_S_AXI_HPC1_FPD) // Coherent HP port -// #pragma SDS data sys_port(c_t2_curr_port:ps_e_S_AXI_HPC1_FPD) // Coherent HP port -// ============================================================================= -// Weight ports not using DMAs -// ============================================================================= -// #pragma SDS data zero_copy(u_cur_port[0:NUM_ITERATIONS*INPUT_SIZE / NUM_TILES_U * (NUM_TILES_U - NUM_ZERO_TILES_U)]) -// #pragma SDS data zero_copy(u_rec_port[0:NUM_ITERATIONS*HIDDEN_SIZE / NUM_TILES_U * (NUM_TILES_U - NUM_ZERO_TILES_U)]) -// #pragma SDS data zero_copy(v_port[0:NUM_ITERATIONS*HIDDEN_SIZE / NUM_TILES_V * (NUM_TILES_V - NUM_ZERO_TILES_V)]) -// #pragma SDS data zero_copy(s1_port[0:NUM_ITERATIONS]) -// #pragma SDS data zero_copy(s2_port[0:NUM_ITERATIONS]) -// ============================================================================= -// Weight ports using DMAs -// ============================================================================= -#pragma SDS data copy(u_cur_port[0:NUM_ITERATIONS*INPUT_SIZE / NUM_TILES_U * (NUM_TILES_U - NUM_ZERO_TILES_U)]) -#pragma SDS data copy(u_rec_port[0:NUM_ITERATIONS*HIDDEN_SIZE / NUM_TILES_U * (NUM_TILES_U - NUM_ZERO_TILES_U)]) -#pragma SDS data copy(v_port[0:NUM_ITERATIONS*HIDDEN_SIZE / NUM_TILES_V * (NUM_TILES_V - NUM_ZERO_TILES_V)]) -#pragma SDS data copy(s1_port[0:NUM_ITERATIONS]) -#pragma SDS data copy(s2_port[0:NUM_ITERATIONS]) -// Platform Port Mapping, available options: -// - ACP Coherent ports: ps_e_S_AXI_HPC[0-1]_FPD -// - HP ports: ps_e_S_AXI_HP[0-3]_FPD -// #pragma SDS data sys_port(u_cur_port:ps_e_S_AXI_HP0_FPD) // HP2 -// #pragma SDS data sys_port(u_rec_port:ps_e_S_AXI_HP1_FPD) // HP3 -// #pragma SDS data sys_port(v_port:ps_e_S_AXI_HP2_FPD) // HP3 -// #pragma SDS data sys_port(s1_port:ps_e_S_AXI_HP3_FPD) // HP3 -// #pragma SDS data sys_port(s2_port:ps_e_S_AXI_HP3_FPD) // HP3 -// ============================================================================= -// Other Configurations -// ============================================================================= -// Compiler hint on allocation -#pragma SDS data mem_attribute(x1_port:PHYSICAL_CONTIGUOUS|NON_CACHEABLE) -#pragma SDS data mem_attribute(x2_port:PHYSICAL_CONTIGUOUS|NON_CACHEABLE) -#pragma SDS data mem_attribute(h_t1_prev_port:PHYSICAL_CONTIGUOUS|NON_CACHEABLE) -#pragma SDS data mem_attribute(h_t2_prev_port:PHYSICAL_CONTIGUOUS|NON_CACHEABLE) -#pragma SDS data mem_attribute(c_t1_prev_port:PHYSICAL_CONTIGUOUS|NON_CACHEABLE) -#pragma SDS data mem_attribute(c_t2_prev_port:PHYSICAL_CONTIGUOUS|NON_CACHEABLE) -#pragma SDS data mem_attribute(u_cur_port:PHYSICAL_CONTIGUOUS|NON_CACHEABLE) -#pragma SDS data mem_attribute(u_rec_port:PHYSICAL_CONTIGUOUS|NON_CACHEABLE) -#pragma SDS data mem_attribute(v_port:PHYSICAL_CONTIGUOUS|NON_CACHEABLE) -#pragma SDS data mem_attribute(s1_port:PHYSICAL_CONTIGUOUS|NON_CACHEABLE) -#pragma SDS data mem_attribute(s2_port:PHYSICAL_CONTIGUOUS|NON_CACHEABLE) -#pragma SDS data mem_attribute(bias1_port:PHYSICAL_CONTIGUOUS|NON_CACHEABLE) -#pragma SDS data mem_attribute(bias2_port:PHYSICAL_CONTIGUOUS|NON_CACHEABLE) -#pragma SDS data mem_attribute(comb_v_port:PHYSICAL_CONTIGUOUS|NON_CACHEABLE) -#pragma SDS data mem_attribute(comb_u_port:PHYSICAL_CONTIGUOUS|NON_CACHEABLE) -#pragma SDS data mem_attribute(h_t1_curr_port:PHYSICAL_CONTIGUOUS|NON_CACHEABLE) -#pragma SDS data mem_attribute(h_t2_curr_port:PHYSICAL_CONTIGUOUS|NON_CACHEABLE) -#pragma SDS data mem_attribute(c_t1_curr_port:PHYSICAL_CONTIGUOUS|NON_CACHEABLE) -#pragma SDS data mem_attribute(c_t2_curr_port:PHYSICAL_CONTIGUOUS|NON_CACHEABLE) -// NOTE: All ports are accessed sequentially. -#pragma SDS data access_pattern(x1_port:SEQUENTIAL) -#pragma SDS data access_pattern(x2_port:SEQUENTIAL) -#pragma SDS data access_pattern(h_t1_prev_port:SEQUENTIAL) -#pragma SDS data access_pattern(h_t2_prev_port:SEQUENTIAL) -#pragma SDS data access_pattern(c_t1_prev_port:SEQUENTIAL) -#pragma SDS data access_pattern(c_t2_prev_port:SEQUENTIAL) -#pragma SDS data access_pattern(u_cur_port:SEQUENTIAL) -#pragma SDS data access_pattern(u_rec_port:SEQUENTIAL) -#pragma SDS data access_pattern(v_port:SEQUENTIAL) -#pragma SDS data access_pattern(s1_port:SEQUENTIAL) -#pragma SDS data access_pattern(s2_port:SEQUENTIAL) -#pragma SDS data access_pattern(bias1_port:SEQUENTIAL) -#pragma SDS data access_pattern(bias2_port:SEQUENTIAL) -#pragma SDS data access_pattern(comb_v_port:SEQUENTIAL) -#pragma SDS data access_pattern(comb_u_port:SEQUENTIAL) -#pragma SDS data access_pattern(h_t1_curr_port:SEQUENTIAL) -#pragma SDS data access_pattern(h_t2_curr_port:SEQUENTIAL) -#pragma SDS data access_pattern(c_t1_curr_port:SEQUENTIAL) -#pragma SDS data access_pattern(c_t2_curr_port:SEQUENTIAL) -#endif // end SDS_DESIGN -void SvdModel2LstmSDSoCV2( - const svd::ActivationD x1_port[INPUT_SIZE], - const svd::ActivationD x2_port[INPUT_SIZE], - const svd::ActivationD h_t1_prev_port[HIDDEN_SIZE], - const svd::ActivationD h_t2_prev_port[HIDDEN_SIZE], - const svd::ActivationD c_t1_prev_port[HIDDEN_SIZE], - const svd::ActivationD c_t2_prev_port[HIDDEN_SIZE], - const ap_uint *u_cur_port, // [NUM_ITERATIONS*4*INPUT_SIZE / NUM_TILES_U * (NUM_TILES_U - NUM_ZERO_TILES_U)], - const ap_uint *u_rec_port, // [NUM_ITERATIONS*4*HIDDEN_SIZE / NUM_TILES_U * (NUM_TILES_U - NUM_ZERO_TILES_U)], - const ap_uint *v_port, // [NUM_ITERATIONS*4*2*HIDDEN_SIZE / NUM_TILES_V * (NUM_TILES_V - NUM_ZERO_TILES_V)], - const ap_uint *s1_port, // [NUM_ITERATIONS*8], - const ap_uint *s2_port, // [NUM_ITERATIONS*8], - const svd::WeightD bias1_port[4 * HIDDEN_SIZE], - const svd::WeightD bias2_port[4 * HIDDEN_SIZE], - const ap_uint comb_v_port[NUM_ITERATIONS * 8], - const ap_uint comb_u_port[NUM_ITERATIONS * 8], - svd::ActivationD h_t1_curr_port[HIDDEN_SIZE], - svd::ActivationD h_t2_curr_port[HIDDEN_SIZE], - svd::ActivationD c_t1_curr_port[HIDDEN_SIZE], - svd::ActivationD c_t2_curr_port[HIDDEN_SIZE]); - -#endif // end LSTM_HLS_LSTM_SVD_H_ \ No newline at end of file diff --git a/include/math_utils/activation_functions.h b/include/math_utils/activation_functions.h index 08c72bf..afa1dff 100644 --- a/include/math_utils/activation_functions.h +++ b/include/math_utils/activation_functions.h @@ -5,6 +5,9 @@ #include "hls_stream.h" #include "assert.h" +#ifdef __VITIS_HLS__ +#include "hls_vector.h" +#endif #include @@ -144,9 +147,9 @@ void NonLinearityUnitSoftware(const int VectLength, assert(NumGates >= 4); DataW tanh_table[TableSize]; InitTanhTable(tanh_table); - const int kNumElemsTile = VectLength / NumTiles; + const int kTileSize = VectLength / NumTiles; for(int i = 0; i < NumTiles; ++i) { - for (int j = 0; j < kNumElemsTile; ++j) { + for (int j = 0; j < kTileSize; ++j) { // ======================================================================= // Python (Keras) Implementation: // i = self.hard_sigm(x_i + K.dot(h_tm1_i, self.recurrent_kernel_i)) @@ -160,10 +163,10 @@ void NonLinearityUnitSoftware(const int VectLength, DataA c_gate = 0; DataA o_gate = 0; if (has_bias) { - i_gate = cur_gate_stream[0][i].read() + rec_gate_stream[0][i].read() + bias[0 * VectLength + i * kNumElemsTile + j]; - f_gate = cur_gate_stream[1][i].read() + rec_gate_stream[1][i].read() + bias[1 * VectLength + i * kNumElemsTile + j]; - c_gate = cur_gate_stream[2][i].read() + rec_gate_stream[2][i].read() + bias[2 * VectLength + i * kNumElemsTile + j]; - o_gate = cur_gate_stream[3][i].read() + rec_gate_stream[3][i].read() + bias[3 * VectLength + i * kNumElemsTile + j]; + i_gate = cur_gate_stream[0][i].read() + rec_gate_stream[0][i].read() + bias[0 * VectLength + i * kTileSize + j]; + f_gate = cur_gate_stream[1][i].read() + rec_gate_stream[1][i].read() + bias[1 * VectLength + i * kTileSize + j]; + c_gate = cur_gate_stream[2][i].read() + rec_gate_stream[2][i].read() + bias[2 * VectLength + i * kTileSize + j]; + o_gate = cur_gate_stream[3][i].read() + rec_gate_stream[3][i].read() + bias[3 * VectLength + i * kTileSize + j]; } else { i_gate = cur_gate_stream[0][i].read() + rec_gate_stream[0][i].read(); f_gate = cur_gate_stream[1][i].read() + rec_gate_stream[1][i].read(); @@ -174,12 +177,12 @@ void NonLinearityUnitSoftware(const int VectLength, const auto sigma_f = HardSigmoid(f_gate); const auto sigma_o = HardSigmoid(o_gate); const auto tanh_cell = TanH(c_gate, tanh_table); - const auto c_lhs = sigma_f * c_t_prev[i * kNumElemsTile + j]; + const auto c_lhs = sigma_f * c_t_prev[i * kTileSize + j]; const auto c_t_tile = c_lhs + sigma_i * tanh_cell; - c_t[i * kNumElemsTile + j] = c_t_tile; + c_t[i * kTileSize + j] = c_t_tile; const auto c_tanh = TanH(c_t_tile, tanh_table); const auto h_t_tile = sigma_o * c_tanh; - h[i * kNumElemsTile + j] = h_t_tile; + h[i * kTileSize + j] = h_t_tile; } } } @@ -239,6 +242,7 @@ void LstmNonLinearFunctions(const bool has_bias, const ActivationType c_prev, ActivationType &c_curr, ActivationType &h_curr) { +#pragma HLS FUNCTION_INSTANTIATE variable=has_bias #pragma HLS PIPELINE II=1 ActivationType i_gate = 0; ActivationType f_gate = 0; @@ -249,19 +253,19 @@ void LstmNonLinearFunctions(const bool has_bias, f_gate = cur_gate_f + rec_gate_f + bias_f; c_gate = cur_gate_c + rec_gate_c + bias_c; o_gate = cur_gate_o + rec_gate_o + bias_o; -#pragma HLS RESOURCE variable=i_gate core=AddSub_DSP latency=3 -#pragma HLS RESOURCE variable=f_gate core=AddSub_DSP latency=3 -#pragma HLS RESOURCE variable=c_gate core=AddSub_DSP latency=3 -#pragma HLS RESOURCE variable=o_gate core=AddSub_DSP latency=3 +#pragma HLS RESOURCE variable=i_gate core=AddSub_DSP // latency=3 +#pragma HLS RESOURCE variable=f_gate core=AddSub_DSP // latency=3 +#pragma HLS RESOURCE variable=c_gate core=AddSub_DSP // latency=3 +#pragma HLS RESOURCE variable=o_gate core=AddSub_DSP // latency=3 } else { i_gate = cur_gate_i + rec_gate_i; f_gate = cur_gate_f + rec_gate_f; o_gate = cur_gate_c + rec_gate_c; c_gate = cur_gate_o + rec_gate_o; -#pragma HLS RESOURCE variable=i_gate core=AddSub_DSP latency=3 -#pragma HLS RESOURCE variable=f_gate core=AddSub_DSP latency=3 -#pragma HLS RESOURCE variable=c_gate core=AddSub_DSP latency=3 -#pragma HLS RESOURCE variable=o_gate core=AddSub_DSP latency=3 +#pragma HLS RESOURCE variable=i_gate core=AddSub_DSP // latency=3 +#pragma HLS RESOURCE variable=f_gate core=AddSub_DSP // latency=3 +#pragma HLS RESOURCE variable=c_gate core=AddSub_DSP // latency=3 +#pragma HLS RESOURCE variable=o_gate core=AddSub_DSP // latency=3 } const auto sigma_i = HardSigmoid(i_gate); @@ -281,6 +285,135 @@ void LstmNonLinearFunctions(const bool has_bias, h_curr = h_reg; } + +#ifdef __VITIS_HLS__ +/** + * @brief LSTM non-linearity function to be applied to each output element. + * It implements the following Python (Keras) implementation: + * + * i = self.recurrent_activation(x_i + K.dot(h_tm1_i, + * self.recurrent_kernel_i)) + * f = self.recurrent_activation(x_f + K.dot(h_tm1_f, + * self.recurrent_kernel_f)) + * c = f * c_tm1 + i * self.activation(x_c + K.dot(h_tm1_c, + * self.recurrent_kernel_c)) + * o = self.recurrent_activation(x_o + K.dot(h_tm1_o, + * self.recurrent_kernel_o)) + * h = o * self.activation(c) + * + * @param[in] has_bias Indicates if bias is present. + * @param[in] cur_gate_i The current gate i element + * @param[in] cur_gate_f The current gate f element + * @param[in] cur_gate_c The current gate c element + * @param[in] cur_gate_o The current gate o element + * @param[in] rec_gate_i The recurrent gate i element + * @param[in] rec_gate_f The recurrent gate f element + * @param[in] rec_gate_c The recurrent gate c element + * @param[in] rec_gate_o The recurrent gate o element + * @param[in] bias_i The bias i element + * @param[in] bias_f The bias f element + * @param[in] bias_c The bias c element + * @param[in] bias_o The bias o element + * @param[in] c_prev The previous c (cell) state + * @param c_curr The current c (cell) state + * @param h_curr The h current + * + * @tparam ActivationType The activation type + * @tparam WeightType The weight type + * @tparam LutSize The tanh LUT size: having it templated helps + * inferring a ROM + */ +template +void LstmVectNonLinearFunctions(const bool has_bias, + const hls::vector cur_gate_i, + const hls::vector cur_gate_f, + const hls::vector cur_gate_c, + const hls::vector cur_gate_o, + const hls::vector rec_gate_i, + const hls::vector rec_gate_f, + const hls::vector rec_gate_c, + const hls::vector rec_gate_o, + const hls::vector bias_i, + const hls::vector bias_f, + const hls::vector bias_c, + const hls::vector bias_o, + const hls::vector c_prev, + const hls::vector &c_curr, + const hls::vector &h_curr) { +#pragma HLS FUNCTION_INSTANTIATE variable=has_bias +#pragma HLS PIPELINE II=1 + const hls::vector i_gate; + const hls::vector f_gate; + const hls::vector c_gate; + const hls::vector o_gate; + if (has_bias) { + i_gate = cur_gate_i + rec_gate_i + bias_i; + f_gate = cur_gate_f + rec_gate_f + bias_f; + c_gate = cur_gate_c + rec_gate_c + bias_c; + o_gate = cur_gate_o + rec_gate_o + bias_o; + } else { + i_gate = cur_gate_i + rec_gate_i; + f_gate = cur_gate_f + rec_gate_f; + o_gate = cur_gate_c + rec_gate_c; + c_gate = cur_gate_o + rec_gate_o; + } +#pragma HLS BIND_OP variable=i_gate op=add impl=dsp +#pragma HLS BIND_OP variable=f_gate op=add impl=dsp +#pragma HLS BIND_OP variable=c_gate op=add impl=dsp +#pragma HLS BIND_OP variable=o_gate op=add impl=dsp + hls::vector sigma_i; + hls::vector sigma_f; + hls::vector sigma_o; + hls::vector tanh_cell; + hls::vector c_tanh; + for (int i = 0; i < N; ++i) { + sigma_i[i] = HardSigmoid(i_gate[i]); + sigma_f[i] = HardSigmoid(f_gate[i]); + sigma_o[i] = HardSigmoid(o_gate[i]); + tanh_cell[i] = TanH(c_gate[i]); + } + const auto c_lhs = sigma_f * c_prev; + const auto c_reg = c_lhs + sigma_i * tanh_cell; +#pragma HLS BIND_OP variable=c_lhs op=add impl=dsp +#pragma HLS BIND_OP variable=c_reg op=add impl=dsp + c_curr = c_reg; + for (int i = 0; i < N; ++i) { + c_tanh[i] = TanH(c_reg[i]); + } + const auto h_reg = sigma_o * c_tanh; +#pragma HLS BIND_OP variable=h_reg op=mul impl=dsp // latency=3 + h_curr = h_reg; +} +#endif // end __VITIS_HLS__ + + + +/** + * @brief Processing element used in SvdLstm. Deprecated. + * + * @deprecated Old inplementation, not flexible enough. + * + * @param[in] size The size + * @param[in] c_t_prev The c t previous + * @param[in] cur_gate_i The current gate i + * @param[in] cur_gate_f The current gate f + * @param[in] cur_gate_c The current gate c + * @param[in] cur_gate_o The current gate o + * @param[in] rec_gate_i The record gate i + * @param[in] rec_gate_f The record gate f + * @param[in] rec_gate_c The record gate c + * @param[in] rec_gate_o The record gate o + * @param h { parameter_description } + * @param c_t { parameter_description } + * @param[in] has_bias Indicates if bias + * @param[in] i_bias I bias + * @param[in] f_bias The f bias + * @param[in] c_bias The c bias + * @param[in] o_bias The o bias + * + * @tparam A { description } + * @tparam W { description } + */ template void NonLinearityUnitPE(const int size, const A *c_t_prev, @@ -328,8 +461,10 @@ void NonLinearityUnitPE(const int size, /** * @brief Sub module to apply non linearities in parallel. + * @deprecated This function has been included in NonLinearityUnit. * - * @param[in] c_t_prev The previous LSTM cell state (internal internal) + * @param[in] c_t_prev_stream The previous LSTM cell state (internal + * internal) * @param current_gate_i_stream The current gate i stream * @param current_gate_f_stream The current gate f stream * @param current_gate_c_stream The current gate c stream @@ -338,30 +473,42 @@ void NonLinearityUnitPE(const int size, * @param recurrent_gate_f_stream The recurrent gate f stream * @param recurrent_gate_c_stream The recurrent gate c stream * @param recurrent_gate_o_stream The recurrent gate o stream - * @param h The LSTM output - * @param c_t The current LSTM cell state t + * @param h_stream The h stream + * @param c_t_stream The c t stream + * @param[in] has_bias Indicates if bias + * @param i_bias_stream I bias stream + * @param f_bias_stream The f bias stream + * @param c_bias_stream The c bias stream + * @param o_bias_stream The o bias stream + * @param h The LSTM output + * @param c_t The current LSTM cell state t * - * @tparam VectLength The output dimension - * @tparam NumTiles The number of tiles the output is divided into. + * @tparam NumElemsTile The number of tiles the output is + * divided into. + * @tparam VectLength The output dimension */ template -void NonLinearityUnitTile(const svd::ActivationD *c_t_prev, - svd::ActivationStream ¤t_gate_i_stream, - svd::ActivationStream ¤t_gate_f_stream, - svd::ActivationStream ¤t_gate_c_stream, - svd::ActivationStream ¤t_gate_o_stream, - svd::ActivationStream &recurrent_gate_i_stream, - svd::ActivationStream &recurrent_gate_f_stream, - svd::ActivationStream &recurrent_gate_c_stream, - svd::ActivationStream &recurrent_gate_o_stream, - svd::ActivationD *h, - svd::ActivationD *c_t, +void NonLinearityUnitTile(svd::ActivationStream& c_t_prev_stream, + svd::ActivationStream& current_gate_i_stream, + svd::ActivationStream& current_gate_f_stream, + svd::ActivationStream& current_gate_c_stream, + svd::ActivationStream& current_gate_o_stream, + svd::ActivationStream& recurrent_gate_i_stream, + svd::ActivationStream& recurrent_gate_f_stream, + svd::ActivationStream& recurrent_gate_c_stream, + svd::ActivationStream& recurrent_gate_o_stream, + svd::ActivationStream& h_stream, + svd::ActivationStream& c_t_stream, const bool has_bias = false, svd::WeightStream *i_bias_stream = nullptr, svd::WeightStream *f_bias_stream = nullptr, svd::WeightStream *c_bias_stream = nullptr, svd::WeightStream *o_bias_stream = nullptr) { +#ifndef __VITIS_HLS__ #pragma HLS INLINE off +#else +#pragma HLS INLINE +#endif // =========================================================================== // Initialize the lookup table // =========================================================================== @@ -384,137 +531,127 @@ void NonLinearityUnitTile(const svd::ActivationD *c_t_prev, svd::ActivationD rec_f = recurrent_gate_f_stream.read(); svd::ActivationD rec_c = recurrent_gate_c_stream.read(); svd::ActivationD rec_o = recurrent_gate_o_stream.read(); - WeightD i_bias_reg = 0; - WeightD f_bias_reg = 0; - WeightD c_bias_reg = 0; - WeightD o_bias_reg = 0; + WeightD i_bias = 0; + WeightD f_bias = 0; + WeightD c_bias = 0; + WeightD o_bias = 0; if (has_bias) { - i_bias_reg = i_bias_stream->read(); - f_bias_reg = f_bias_stream->read(); - c_bias_reg = c_bias_stream->read(); - o_bias_reg = o_bias_stream->read(); + i_bias = i_bias_stream->read(); + f_bias = f_bias_stream->read(); + c_bias = c_bias_stream->read(); + o_bias = o_bias_stream->read(); } - LstmNonLinearFunctions(has_bias, + auto c_t_prev = c_t_prev_stream.read(); + svd::ActivationD c_t; + svd::ActivationD h; + svd::LstmNonLinearFunctions(has_bias, cur_i, cur_f, cur_c, cur_o, rec_i, rec_f, rec_c, rec_o, - i_bias_reg, f_bias_reg, c_bias_reg, o_bias_reg, - c_t_prev[i], c_t[i], h[i]); + i_bias, f_bias, c_bias, o_bias, + c_t_prev, c_t, h); + c_t_stream.write(c_t); + h_stream.write(h); } } template void NonLinearityUnit(const svd::ActivationD *c_t_prev, - svd::ActivationStream (¤t_gate_stream)[NumGates][VectLength / NumTiles], - svd::ActivationStream (&recurrent_gate_stream)[NumGates][VectLength / NumTiles], + svd::ActivationStream (&cur_gate_stream)[NumGates][VectLength / NumTiles], + svd::ActivationStream (&rec_gate_stream)[NumGates][VectLength / NumTiles], svd::ActivationD *h, svd::ActivationD *c_t, const bool has_bias = false, const WeightD *bias_port = nullptr) { +#pragma HLS FUNCTION_INSTANTIATE variable=has_bias #pragma HLS INLINE -// #pragma HLS INTERFACE ap_ctrl_none port=return #pragma HLS DATAFLOW assert(VectLength % NumTiles == 0); - assert(NumGates >= 4); - const int kNumElemsTile = VectLength / NumTiles; - // NOTE: There are kNumElemsTile different streams, which are read in round + assert(NumGates == 4); + const int kTileSize = VectLength / NumTiles; + // NOTE: There are kTileSize different streams, which are read in round // robin fashion. Their depth is then set as their number plus 50%. - const int kOutputStreamDepth = kNumElemsTile + kNumElemsTile / 2; - - svd::ActivationD h_t_curr_internal[kNumElemsTile][NumTiles]; - svd::ActivationD c_t_curr_internal[kNumElemsTile][NumTiles]; - svd::ActivationD c_t_prev_internal[kNumElemsTile][NumTiles]; + const int kOutputStreamDepth = kTileSize + kTileSize / 2; + svd::ActivationStream h_t_curr_internal[kTileSize]; + svd::ActivationStream c_t_curr_internal[kTileSize]; + svd::ActivationStream c_t_prev_internal[kTileSize]; + svd::WeightStream bias_streams[NumGates][kTileSize]; #pragma HLS ARRAY_PARTITION variable=h_t_curr_internal complete dim=1 #pragma HLS ARRAY_PARTITION variable=c_t_curr_internal complete dim=1 #pragma HLS ARRAY_PARTITION variable=c_t_prev_internal complete dim=1 #pragma HLS STREAM variable=h_t_curr_internal depth=NumTiles #pragma HLS STREAM variable=c_t_curr_internal depth=kOutputStreamDepth #pragma HLS STREAM variable=c_t_prev_internal depth=kOutputStreamDepth - - NonLinearityUnit_Read2_c_prev: + C_prev_DMA: for (int i = 0; i < NumTiles; ++i) { - NonLinearityUnit_Read_c_prev: - for (int j = 0; j < kNumElemsTile; ++j) { + for (int j = 0; j < kTileSize; ++j) { #pragma HLS PIPELINE II=1 - c_t_prev_internal[j][i] = c_t_prev[i * kNumElemsTile + j]; + c_t_prev_internal[j].write(c_t_prev[i * kTileSize + j]); } } - - svd::WeightStream i_bias_streams[kNumElemsTile]; - svd::WeightStream f_bias_streams[kNumElemsTile]; - svd::WeightStream c_bias_streams[kNumElemsTile]; - svd::WeightStream o_bias_streams[kNumElemsTile]; if (has_bias) { -#pragma HLS ARRAY_PARTITION variable=i_bias_streams complete dim=1 -#pragma HLS ARRAY_PARTITION variable=f_bias_streams complete dim=1 -#pragma HLS ARRAY_PARTITION variable=c_bias_streams complete dim=1 -#pragma HLS ARRAY_PARTITION variable=o_bias_streams complete dim=1 -#pragma HLS STREAM variable=i_bias_streams depth=NumTiles -#pragma HLS STREAM variable=f_bias_streams depth=NumTiles -#pragma HLS STREAM variable=c_bias_streams depth=NumTiles -#pragma HLS STREAM variable=o_bias_streams depth=NumTiles - for (int i = 0; i < NumTiles; ++i) { - for (int j = 0; j < kNumElemsTile; ++j) { -#pragma HLS PIPELINE II=1 - i_bias_streams[j].write(bias_port[i * kNumElemsTile + j]); - } - } - for (int i = 0; i < NumTiles; ++i) { - for (int j = 0; j < kNumElemsTile; ++j) { -#pragma HLS PIPELINE II=1 - f_bias_streams[j].write(bias_port[VectLength + i * kNumElemsTile + j]); - } - } - for (int i = 0; i < NumTiles; ++i) { - for (int j = 0; j < kNumElemsTile; ++j) { -#pragma HLS PIPELINE II=1 - c_bias_streams[j].write(bias_port[2 * VectLength + i * kNumElemsTile + j]); - } - } - for (int i = 0; i < NumTiles; ++i) { - for (int j = 0; j < kNumElemsTile; ++j) { +#pragma HLS ARRAY_PARTITION variable=bias_streams complete dim=0 +#pragma HLS STREAM variable=bias_streams depth=NumTiles + Bias_DMA: + for (int k = 0; k < NumGates; ++k) { // Expected in this order: i->f->c->o + for (int i = 0; i < NumTiles; ++i) { + for (int j = 0; j < kTileSize; ++j) { #pragma HLS PIPELINE II=1 - o_bias_streams[j].write(bias_port[3 * VectLength + i * kNumElemsTile + j]); - } + bias_streams[k][j].write(bias_port[k * VectLength + i * kTileSize + j]); + } + } } } - - NonLinearityUnit_Tile_Loop: - for(int i = 0; i < kNumElemsTile; ++i) { -#pragma HLS UNROLL - NonLinearityUnitTile(c_t_prev_internal[i], - current_gate_stream[0][i], - current_gate_stream[1][i], - current_gate_stream[2][i], - current_gate_stream[3][i], - recurrent_gate_stream[0][i], - recurrent_gate_stream[1][i], - recurrent_gate_stream[2][i], - recurrent_gate_stream[3][i], - h_t_curr_internal[i], - c_t_curr_internal[i], - has_bias, - &i_bias_streams[i], - &f_bias_streams[i], - &c_bias_streams[i], - &o_bias_streams[i]); - } - - NonLinearityUnit_Writeback2_h: - for (int i = 0; i < NumTiles; ++i) { - NonLinearityUnit_Writeback_h: - for (int j = 0; j < kNumElemsTile; ++j) { +// NonLinearityUnit_Tile_Loop: +// for(int i = 0; i < kTileSize; ++i) { +// #pragma HLS UNROLL +// svd::NonLinearityUnitTile(c_t_prev_internal[i], +// cur_gate_stream[0][i], cur_gate_stream[1][i], +// cur_gate_stream[2][i], cur_gate_stream[3][i], +// rec_gate_stream[0][i], rec_gate_stream[1][i], +// rec_gate_stream[2][i], rec_gate_stream[3][i], +// h_t_curr_internal[i], c_t_curr_internal[i], +// has_bias, &bias_streams[0][i], &bias_streams[1][i], +// &bias_streams[2][i], &bias_streams[3][i]); +// } + const int kTableSize = (FIX_WIDTH <= 16) ? 512 : 256; + // =========================================================================== + // Apply non-linearities to each vector element + // =========================================================================== + NonLinearityUnit_Elem_Loop: + for(int i = 0; i < NumTiles; ++i) { #pragma HLS PIPELINE II=1 - h[i * kNumElemsTile + j] = h_t_curr_internal[j][i]; + for(int j = 0; j < kTileSize; ++j) { + auto cur_i = cur_gate_stream[0][j].read(); + auto cur_f = cur_gate_stream[1][j].read(); + auto cur_c = cur_gate_stream[2][j].read(); + auto cur_o = cur_gate_stream[3][j].read(); + auto rec_i = rec_gate_stream[0][j].read(); + auto rec_f = rec_gate_stream[1][j].read(); + auto rec_c = rec_gate_stream[2][j].read(); + auto rec_o = rec_gate_stream[3][j].read(); + svd::WeightD i_bias, f_bias, c_bias, o_bias; + if (has_bias) { + i_bias = bias_streams[0][j].read(); + f_bias = bias_streams[1][j].read(); + c_bias = bias_streams[2][j].read(); + o_bias = bias_streams[3][j].read(); + } + auto c_t_prev = c_t_prev_internal[j].read(); + svd::ActivationD c_t, h; + svd::LstmNonLinearFunctions( + has_bias, cur_i, cur_f, cur_c, cur_o, rec_i, rec_f, rec_c, rec_o, + i_bias, f_bias, c_bias, o_bias, c_t_prev, c_t, h); + c_t_curr_internal[j].write(c_t); + h_t_curr_internal[j].write(h); } } - - NonLinearityUnit_Writeback2_c: + H_t_curr_DMA: for (int i = 0; i < NumTiles; ++i) { - NonLinearityUnit_Writeback_c: - for (int j = 0; j < kNumElemsTile; ++j) { + for (int j = 0; j < kTileSize; ++j) { #pragma HLS PIPELINE II=1 - c_t[i * kNumElemsTile + j] = c_t_curr_internal[j][i]; + h[i * kTileSize + j] = h_t_curr_internal[j].read(); + c_t[i * kTileSize + j] = c_t_curr_internal[j].read(); } } } diff --git a/include/math_utils/data_handler.h b/include/math_utils/data_handler.h index 30468c5..d3480d6 100644 --- a/include/math_utils/data_handler.h +++ b/include/math_utils/data_handler.h @@ -8,6 +8,9 @@ #include #include #include +#include +#include +#include #ifdef SDS_DESIGN #include @@ -36,6 +39,7 @@ namespace svd { template T* AllocateContiguously(const int size) { +#ifndef __SYNTHESIS__ T* tmp; try { tmp = (T*)ALLOC(size * sizeof(T)); @@ -49,6 +53,14 @@ T* AllocateContiguously(const int size) { throw except_alloc; } return tmp; +#else + T* tmp = (T*)ALLOC(size * sizeof(T)); + if (!tmp) { + std::cout << "[ERROR] Contiguous allocation failed." << std::endl; + exit(1); + } + return tmp; +#endif } template @@ -81,6 +93,9 @@ class VectorBlob { VectorBlob(const int refinement_steps, const int vector_size, const int num_tiles, const int num_zero_tiles) { assert(num_tiles >= 1); + assert(refinement_steps > 0); + assert(vector_size > 0); + assert(num_tiles > 0); this->num_tile_elems_ = vector_size / num_tiles; this->size_ = vector_size; this->pruned_size_ = this->num_tile_elems_ * (num_tiles - num_zero_tiles); @@ -121,7 +136,7 @@ class VectorBlob { this->z_idx_.push_back(j); } else { for (int k = 0; k < this->num_tile_elems_; ++k) { - FloatType tmp = rand(); + FloatType tmp = 0.00001 * rand(); this->data_.push_back(tmp); this->pruned_data_.push_back(tmp); this->fix_data_.push_back(FixType(tmp)); @@ -133,7 +148,7 @@ class VectorBlob { } } else { for (int i = 0; i < this->total_size_; ++i) { - FloatType tmp = rand(); + FloatType tmp = 0.00001 * rand(); this->data_.push_back(tmp); this->pruned_data_.push_back(tmp); this->fix_data_.push_back(FixType(tmp)); @@ -207,6 +222,10 @@ class VectorBlob { IdxType get_fix_nz_idx(const int refinement_step) { return this->fix_nz_idx_[refinement_step]; } + + int get_refinement_steps() { + return this->refinement_steps_; + } }; @@ -222,6 +241,7 @@ class SvdComponents { const int u_size, const int v_size, const int num_tiles_u, const int num_zero_tiles_u, const int num_tiles_v, const int num_zero_tiles_v) { + assert(num_inputs > 0); this->num_inputs_ = num_inputs; this->u_ = new VectorBlob(refinement_steps, u_size, num_tiles_u, num_zero_tiles_u); this->v_ = new VectorBlob(refinement_steps, v_size, num_tiles_v, num_zero_tiles_v); @@ -243,6 +263,22 @@ class SvdComponents { return this->v_; } + int get_u_size() { + return this->u_->get_size(); + } + + int get_v_size() { + return this->v_->get_size(); + } + + int get_u_pruned_size() { + return this->u_->get_pruned_size(); + } + + int get_v_pruned_size() { + return this->v_->get_pruned_size(); + } + std::vector > get_s() { return this->s_; } @@ -254,6 +290,10 @@ class SvdComponents { int get_num_inputs() { return this->num_inputs_; } + + int get_refinement_steps() { + return this->s_[0].get_refinement_steps(); + } }; } // svd diff --git a/include/svd_ip.h b/include/svd_ip.h index 32b9c90..4396134 100644 --- a/include/svd_ip.h +++ b/include/svd_ip.h @@ -4,14 +4,16 @@ #include "svd_params.h" #include "kernel/svd_kernel.h" +namespace svd { + template inline void SvdIP( const typename params::ActivationD x_port[params::N][params::I], - const typename params::UPortD u_port[params::PrunedSizeU], + const typename params::UPortD u_port[params::R * params::PrunedSizeU], const typename params::SPortD s_port[params::N][params::R], - const typename params::VPortD v_port[params::PrunedSizeV], - const typename params::UnzD nz_u_port[params::R * params::G], - const typename params::VnzD nz_v_port[params::R * params::G], + const typename params::VPortD v_port[params::R * params::PrunedSizeV], + const typename params::UnzD nz_u_port[params::G * params::R], + const typename params::VnzD nz_v_port[params::G * params::R], typename params::ActivationD y_port[params::N][params::G][params::H]) { #pragma HLS INLINE #pragma HLS DATAFLOW @@ -22,28 +24,19 @@ inline void SvdIP( svd::SvdStreams streams; svd::SvdBuffers buffers; SvdInDMA(x_port, u_port, s_port, v_port, nz_u_port, nz_v_port, streams, buffers); - SvdKernel(streams); + svd::SvdKernel(streams); SvdOutDMA(streams, y_port); } -const int N = 2; -const int I = 256; -const int H = 128; -const int R = 16; -const int Tu = 16; -const int Tv = 32; -const int ZTu = 8; -const int ZTv = 8; -const int G = 4; -typedef svd::SvdParameters svd_params; - void SvdIp2Inputs( const typename svd_params::ActivationD x_port[svd_params::N][svd_params::I], - const typename svd_params::UPortD u_port[svd_params::PrunedSizeU], + const typename svd_params::UPortD u_port[svd_params::R * svd_params::PrunedSizeU], const typename svd_params::SPortD s_port[svd_params::N][svd_params::R], - const typename svd_params::VPortD v_port[svd_params::PrunedSizeV], - const ap_uint nz_u_port[svd_params::N], - const ap_uint nz_v_port[svd_params::N], + const typename svd_params::VPortD v_port[svd_params::R * svd_params::PrunedSizeV], + const ap_uint nz_u_port[svd_params::G * svd_params::R], + const ap_uint nz_v_port[svd_params::G * svd_params::R], typename svd_params::ActivationD y_port[svd_params::N][svd_params::G][svd_params::H]); +} // svd + #endif // end SVD_IP_H_ \ No newline at end of file diff --git a/include/svd_params.h b/include/svd_params.h index ae77116..db408c2 100644 --- a/include/svd_params.h +++ b/include/svd_params.h @@ -2,12 +2,63 @@ #define SVD_PARAMS_H_ #include "hls_utils/hls_metaprogramming.h" +#include "dma/axis_lib.h" #include "ap_int.h" +#include "ap_axi_sdata.h" #include "hls_stream.h" +#ifdef __VITIS_HLS__ +#include "hls_vector.h" +#endif + +#include namespace svd { +template +struct ParamsU { + static const int N = Ni; + static const int I = Ii; + static const int Tu = Tui; + static const int ZTu = ZTui; + static const int G = Gi; + static const int TuElems = I / Tu; + static const int TuBits = hlsutils::log2::value > 0 ? hlsutils::log2::value : 1; + typedef ap_uint UnzD; + typedef ap_uint UnzIdxD; + typedef Type ActivationD; + typedef Type WeightD; + typedef Type AccumulationD; + typedef hls::stream UnzS; + typedef hls::stream > UnzIdxS; + typedef hls::stream ActivationS; + typedef hls::stream WeightS; + typedef hls::stream AccumulationS; + typedef ap_uint::value * G> UPortD; + static const int PrunedSizeU = I / Tu * (Tu - ZTu); + static const int ActivationWidth = hlsutils::Bitwidth::value; + static const int WeightWidth = hlsutils::Bitwidth::value; + static const int AccumulationWidth = hlsutils::Bitwidth::value; + static const int VectTuAxiWidth = ActivationWidth * Tu; + static const int VectN_AxiWidth = ActivationWidth * N; + static const int VectG_AxiWidth = ActivationWidth * G; + static const int VectGN_AxiWidth = ActivationWidth * G * N; + typedef typename svd::AxiStreamPort::AxiuPacketType VectTuAxiPacketType; + typedef typename svd::AxiStreamPort::AxiuPacketType VectN_AxiPacketType; + typedef typename svd::AxiStreamPort::AxiuPacketType VectG_AxiPacketType; + typedef typename svd::AxiStreamPort::AxiuPacketType VectGN_AxiPacketType; + typedef typename svd::AxiStreamFifo::AxiuType VectTuAxiuType; + typedef typename svd::AxiStreamFifo::AxiuType VectN_AxiuType; + typedef typename svd::AxiStreamFifo::AxiuType VectG_AxiuType; + typedef typename svd::AxiStreamFifo::AxiuType VectGN_AxiuType; +#ifdef __VITIS_HLS__ + typedef hls::vector VectTuType; + typedef hls::vector VectN_Type; + typedef hls::vector VectG_Type; + typedef hls::vector VectGN_Type; +#endif +}; + template , @@ -27,8 +78,8 @@ struct SvdParameters { static const int PeV = H / Tv; static const int TuElems = I / Tu; static const int TvElems = H / Tv; - static const int TuBits = hls_utils::log2::value > 0 ? hls_utils::log2::value : 1; - static const int TvBits = hls_utils::log2::value > 0 ? hls_utils::log2::value : 1; + static const int TuBits = hlsutils::log2::value > 0 ? hlsutils::log2::value : 1; + static const int TvBits = hlsutils::log2::value > 0 ? hlsutils::log2::value : 1; typedef ap_uint UnzD; typedef ap_uint VnzD; typedef ap_uint UnzIdxD; @@ -43,15 +94,35 @@ struct SvdParameters { typedef hls::stream ActivationS; typedef hls::stream WeightS; typedef hls::stream AccumulationS; - typedef ap_uint::value * G> SPortD; - typedef ap_uint::value * G> UPortD; - typedef ap_uint::value * G> VPortD; - static const int PrunedSizeU = R * I / Tu * (Tu - ZTu); - static const int PrunedSizeV = R * H / Tv * (Tv - ZTv); + typedef ap_uint::value * G> SPortD; + typedef ap_uint::value * G> UPortD; + typedef ap_uint::value * G> VPortD; + static const int PrunedSizeU = I / Tu * (Tu - ZTu); + static const int PrunedSizeV = H / Tv * (Tv - ZTv); static const int SizeS = R * G; - static const int ActivationWidth = hls_utils::Bitwidth::value; - static const int WeightWidth = hls_utils::Bitwidth::value; - static const int AccumulationWidth = hls_utils::Bitwidth::value; + static const int ActivationWidth = hlsutils::Bitwidth::value; + static const int WeightWidth = hlsutils::Bitwidth::value; + static const int AccumulationWidth = hlsutils::Bitwidth::value; + static const int VectTuAxiWidth = ActivationWidth * Tu; + static const int VectTvAxiWidth = ActivationWidth * Tv; + static const int VectN_AxiWidth = ActivationWidth * N; + static const int VectG_AxiWidth = ActivationWidth * G; + static const int VectGN_AxiWidth = ActivationWidth * G * N; + static const int VectGTvAxiWidth = ActivationWidth * G * Tv; + typedef typename svd::AxiStreamPort::PacketType VectTuAxiPacketType; + typedef typename svd::AxiStreamPort::PacketType VectTvAxiPacketType; + typedef typename svd::AxiStreamPort::PacketType VectN_AxiPacketType; + typedef typename svd::AxiStreamPort::PacketType VectG_AxiPacketType; + typedef typename svd::AxiStreamPort::PacketType VectGN_AxiPacketType; + typedef typename svd::AxiStreamPort::PacketType VectGTvAxiPacketType; +#ifdef __VITIS_HLS__ + typedef hls::vector VectTuType; + typedef hls::vector VectTvType; + typedef hls::vector VectN_Type; + typedef hls::vector VectG_Type; + typedef hls::vector VectGN_Type; + typedef hls::vector VectGTvType; +#endif }; template @@ -74,34 +145,34 @@ class SvdStreams { typename params::UnzIdxS tile_idx_stream[params::N][params::G][params::PeU]; SvdStreams() { -#pragma HLS STREAM depth=2 variable=x -#pragma HLS STREAM depth=2 variable=nz_u -#pragma HLS STREAM depth=2 variable=nz_v -#pragma HLS STREAM depth=2 variable=u -#pragma HLS STREAM depth=2 variable=s -#pragma HLS STREAM depth=2 variable=v -#pragma HLS STREAM depth=2 variable=xu -#pragma HLS STREAM depth=2 variable=xus -#pragma HLS STREAM depth=2 variable=xusv -#pragma HLS STREAM depth=2 variable=nz_u_idx -#pragma HLS STREAM depth=2 variable=nz_v_idx -#pragma HLS STREAM depth=2 variable=u_dma -#pragma HLS STREAM depth=2 variable=v_dma -#pragma HLS STREAM depth=2 variable=tile_idx_stream -#pragma HLS ARRAY_PARTITION complete dim=0 variable=x -#pragma HLS ARRAY_PARTITION complete dim=0 variable=nz_u -#pragma HLS ARRAY_PARTITION complete dim=0 variable=nz_v -#pragma HLS ARRAY_PARTITION complete dim=0 variable=u -#pragma HLS ARRAY_PARTITION complete dim=0 variable=s -#pragma HLS ARRAY_PARTITION complete dim=0 variable=v -#pragma HLS ARRAY_PARTITION complete dim=0 variable=u_dma -#pragma HLS ARRAY_PARTITION complete dim=0 variable=v_dma -#pragma HLS ARRAY_PARTITION complete dim=0 variable=xu -#pragma HLS ARRAY_PARTITION complete dim=0 variable=xus -#pragma HLS ARRAY_PARTITION complete dim=0 variable=xusv -#pragma HLS ARRAY_PARTITION complete dim=0 variable=nz_u_idx -#pragma HLS ARRAY_PARTITION complete dim=0 variable=nz_v_idx -#pragma HLS ARRAY_PARTITION variable=tile_idx_stream complete dim=0 +#pragma HLS STREAM depth=2 variable=this->x +#pragma HLS STREAM depth=2 variable=this->nz_u +#pragma HLS STREAM depth=2 variable=this->nz_v +#pragma HLS STREAM depth=2 variable=this->u +#pragma HLS STREAM depth=2 variable=this->s +#pragma HLS STREAM depth=2 variable=this->v +#pragma HLS STREAM depth=2 variable=this->xu +#pragma HLS STREAM depth=2 variable=this->xus +#pragma HLS STREAM depth=2 variable=this->xusv +#pragma HLS STREAM depth=2 variable=this->nz_u_idx +#pragma HLS STREAM depth=2 variable=this->nz_v_idx +#pragma HLS STREAM depth=2 variable=this->u_dma +#pragma HLS STREAM depth=2 variable=this->v_dma +#pragma HLS STREAM depth=2 variable=this->tile_idx_stream +#pragma HLS ARRAY_PARTITION complete dim=0 variable=this->x +#pragma HLS ARRAY_PARTITION complete dim=0 variable=this->nz_u +#pragma HLS ARRAY_PARTITION complete dim=0 variable=this->nz_v +#pragma HLS ARRAY_PARTITION complete dim=0 variable=this->u +#pragma HLS ARRAY_PARTITION complete dim=0 variable=this->s +#pragma HLS ARRAY_PARTITION complete dim=0 variable=this->v +#pragma HLS ARRAY_PARTITION complete dim=0 variable=this->u_dma +#pragma HLS ARRAY_PARTITION complete dim=0 variable=this->v_dma +#pragma HLS ARRAY_PARTITION complete dim=0 variable=this->xu +#pragma HLS ARRAY_PARTITION complete dim=0 variable=this->xus +#pragma HLS ARRAY_PARTITION complete dim=0 variable=this->xusv +#pragma HLS ARRAY_PARTITION complete dim=0 variable=this->nz_u_idx +#pragma HLS ARRAY_PARTITION complete dim=0 variable=this->nz_v_idx +#pragma HLS ARRAY_PARTITION variable=this->tile_idx_stream complete dim=0 }; ~SvdStreams() {}; @@ -162,7 +233,7 @@ class SvdBuffers { #define NUM_TILES_V 64 #endif #ifndef NUM_ZERO_TILES_V -#define NUM_ZERO_TILES_V 21 +#define NUM_ZERO_TILES_V 8 #endif #ifndef TILE_SIZE_CUR_U #define TILE_SIZE_CUR_U (INPUT_SIZE / NUM_TILES_U) @@ -184,19 +255,6 @@ class SvdBuffers { #define NUM_TIMESTEPS 28 #endif -#ifndef PRUNED_SIZE_CUR_U -#define PRUNED_SIZE_CUR_U (NUM_ITERATIONS * (INPUT_SIZE - NUM_ZERO_TILES_U * INPUT_SIZE / NUM_TILES_U)) -#endif -#ifndef PRUNED_SIZE_REC_U -#define PRUNED_SIZE_REC_U (NUM_ITERATIONS * (HIDDEN_SIZE - NUM_ZERO_TILES_U * HIDDEN_SIZE / NUM_TILES_U)) -#endif -#ifndef PRUNED_SIZE_CUR_V -#define PRUNED_SIZE_CUR_V (NUM_ITERATIONS * (HIDDEN_SIZE - NUM_ZERO_TILES_V * HIDDEN_SIZE / NUM_TILES_V)) -#endif -#ifndef PRUNED_SIZE_REC_V -#define PRUNED_SIZE_REC_V (NUM_ITERATIONS * (HIDDEN_SIZE - NUM_ZERO_TILES_V * HIDDEN_SIZE / NUM_TILES_V)) -#endif - #if defined(USE_FIX) #define USE_FIX 1 #define USE_FLOAT 0 @@ -226,8 +284,6 @@ class SvdBuffers { #define AXI_PORT_WIDTH 128 #endif - - #if USE_FLOAT typedef float WeightD; typedef float ActivationD; @@ -239,9 +295,14 @@ typedef double ActivationD; typedef double AccumD; typedef double MultD; #else // USE_FIX + +// typedef short WeightD; +// typedef short ActivationD; +// typedef short AccumD; +// typedef short MultD; + typedef ap_fixed WeightD; typedef ap_fixed ActivationD; - #if FIX_WIDTH == 8 typedef ap_fixed AccumD; typedef ap_fixed MultD; @@ -264,36 +325,27 @@ typedef uint64_t AccelD; typedef ap_uint AxiD; // 64bit for ZedBoard HP and ACP ports (128bit for ZCU104) -// Used by software versions: -typedef ap_fixed<16, 2 * FIX_FRACT_WIDTH> Fix16D; -typedef ap_fixed<8, 2 * FIX_FRACT_WIDTH> Fix8D; - typedef hls::stream ActivationStream; typedef hls::stream WeightStream; typedef hls::stream AxiStream; typedef hls::stream AccumStream; -typedef long long CounterD; -typedef hls::stream ProbeStream; +// TODO: Remove CounterD and ProbeStream types from here. +// typedef long long CounterD; +// typedef hls::stream ProbeStream; -#ifndef X_PORT_WIDTH -#define X_PORT_WIDTH (FIX_WIDTH * NUM_TILES_U) -#endif -#ifndef U_PORT_WIDTH -#define U_PORT_WIDTH (FIX_WIDTH * (NUM_TILES_U - NUM_ZERO_TILES_U)) -#endif -#ifndef V_PORT_WIDTH -#define V_PORT_WIDTH (FIX_WIDTH * (HIDDEN_SIZE / NUM_TILES_V)) -#endif -#ifndef S_PORT_WIDTH -#define S_PORT_WIDTH (FIX_WIDTH * 8) -#endif - -typedef ap_uint XPortD; -typedef ap_uint UPortD; -typedef ap_uint VPortD; -typedef ap_uint SPortD; +typedef svd::SvdParameters, + ap_fixed, + ap_fixed > svd_params; + // ActivationD, WeightD, AccumD> svd_params; } // namespace svd + +namespace testsvd { + +} // end testsvd + #endif // end SVD_PARAMS_H_ \ No newline at end of file diff --git a/include/testbenches/test_dense_svd.h b/include/testbenches/test_dense_svd.h new file mode 100644 index 0000000..694c585 --- /dev/null +++ b/include/testbenches/test_dense_svd.h @@ -0,0 +1,6 @@ +#ifndef TESTBENCHES_TEST_DENSE_SVD_H_ +#define TESTBENCHES_TEST_DENSE_SVD_H_ + +#include "layers/dense/hls/dense_svd.h" + +#endif // end TESTBENCHES_TEST_DENSE_SVD_H_ \ No newline at end of file diff --git a/include/testbenches/test_lstm_svd.h b/include/testbenches/test_lstm_svd.h new file mode 100644 index 0000000..390899a --- /dev/null +++ b/include/testbenches/test_lstm_svd.h @@ -0,0 +1,6 @@ +#ifndef TESTBENCHES_TEST_LSTM_SVD_H_ +#define TESTBENCHES_TEST_LSTM_SVD_H_ + +#include "layers/lstm/hls/lstm_svd.h" + +#endif // end TESTBENCHES_TEST_LSTM_SVD_H_ \ No newline at end of file diff --git a/include/testbenches/test_svd_kernel.h b/include/testbenches/test_svd_kernel.h new file mode 100644 index 0000000..7fa3533 --- /dev/null +++ b/include/testbenches/test_svd_kernel.h @@ -0,0 +1,7 @@ +#ifndef TESTBENCHES_TEST_SVD_KERNEL_H_ +#define TESTBENCHES_TEST_SVD_KERNEL_H_ + +#include "svd_params.h" +#include "kernel/svd_kernel.h" + +#endif // end TESTBENCHES_TEST_SVD_KERNEL_H_ \ No newline at end of file diff --git a/include/testbenches/test_u_kernel.h b/include/testbenches/test_u_kernel.h new file mode 100644 index 0000000..cf28208 --- /dev/null +++ b/include/testbenches/test_u_kernel.h @@ -0,0 +1,7 @@ +#ifndef TESTBENCHES_TEST_U_KERNEL_H_ +#define TESTBENCHES_TEST_U_KERNEL_H_ + +#include "kernel/u_kernel.h" +#include "hls_utils/hls_debugging.h" + +#endif // end TESTBENCHES_TEST_U_KERNEL_H_ \ No newline at end of file diff --git a/include/testbenches/test_v_kernel.h b/include/testbenches/test_v_kernel.h new file mode 100644 index 0000000..7de11c0 --- /dev/null +++ b/include/testbenches/test_v_kernel.h @@ -0,0 +1,6 @@ +#ifndef TESTBENCHES_TEST_V_KERNEL_H_ +#define TESTBENCHES_TEST_V_KERNEL_H_ + +#include "kernel/v_kernel.h" + +#endif // end TESTBENCHES_TEST_V_KERNEL_H_ \ No newline at end of file diff --git a/pynq/dense_svd/dense_svd.ipynb b/pynq/dense_svd/dense_svd.ipynb new file mode 100644 index 0000000..b2d7fb7 --- /dev/null +++ b/pynq/dense_svd/dense_svd.ipynb @@ -0,0 +1,628 @@ +{ + "cells": [ + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "# Testing DenseSvd\n", + "\n", + "This notebook will test an IP written in Vivado HLS." + ] + }, + { + "cell_type": "code", + "execution_count": 1, + "metadata": {}, + "outputs": [ + { + "data": { + "application/javascript": [ + "\n", + "try {\n", + "require(['notebook/js/codecell'], function(codecell) {\n", + " codecell.CodeCell.options_default.highlight_modes[\n", + " 'magic_text/x-csrc'] = {'reg':[/^%%microblaze/]};\n", + " Jupyter.notebook.events.one('kernel_ready.Kernel', function(){\n", + " Jupyter.notebook.get_cells().map(function(cell){\n", + " if (cell.cell_type == 'code'){ cell.auto_highlight(); } }) ;\n", + " });\n", + "});\n", + "} catch (e) {};\n" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "application/javascript": [ + "\n", + "try {\n", + "require(['notebook/js/codecell'], function(codecell) {\n", + " codecell.CodeCell.options_default.highlight_modes[\n", + " 'magic_text/x-csrc'] = {'reg':[/^%%pybind11/]};\n", + " Jupyter.notebook.events.one('kernel_ready.Kernel', function(){\n", + " Jupyter.notebook.get_cells().map(function(cell){\n", + " if (cell.cell_type == 'code'){ cell.auto_highlight(); } }) ;\n", + " });\n", + "});\n", + "} catch (e) {};\n" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "from pynq import Overlay\n", + "import pynq.lib.dma\n", + "from pynq import allocate\n", + "import numpy as np\n", + "from pynq import DefaultIP\n", + "import timeit" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Program FPGA and inspect Overlay." + ] + }, + { + "cell_type": "code", + "execution_count": 24, + "metadata": {}, + "outputs": [], + "source": [ + "overlay = Overlay(\"overlay/dense_svd.bit\")\n", + "overlay?" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Get the kernel register map." + ] + }, + { + "cell_type": "code", + "execution_count": 18, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "RegisterMap {\n", + " CTRL = Register(AP_START=0, AP_DONE=0, AP_IDLE=1, AP_READY=0, RESERVED_1=0, AUTO_RESTART=0, RESERVED_2=0, RESERVED_3=0, RESERVED_4=0),\n", + " GIER = Register(Enable=0, RESERVED=0),\n", + " IP_IER = Register(CHAN0_INT_EN=0, CHAN1_INT_EN=0, RESERVED=0),\n", + " IP_ISR = Register(CHAN0_INT_ST=0, CHAN1_INT_ST=0, RESERVED=0),\n", + " num_active_inputs = Register(num_active_inputs=0),\n", + " input_size = Register(input_size=0),\n", + " output_size = Register(output_size=0),\n", + " num_refinements_0 = Register(num_refinements_0=0),\n", + " num_refinements_1 = Register(num_refinements_1=0)\n", + "}" + ] + }, + "execution_count": 18, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "kernel = overlay.HlsDenseSvd_0\n", + "kernel.register_map\n", + "# print(\"stream size: \", adder.stream_size)\n", + "# accel_state = adder.get_state()\n", + "# print(\"accelerator state: \", accel_state)\n", + "# dma = overlay.axi_dma_0\n", + "# dma.register_map.MM2S_DMASR\n", + "# dma.register_map.S2MM_DMACR" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Kernel IP" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "The kernel IP can be automatically bound by first creating our Kernel class. Then, the overlay can be instantiated again." + ] + }, + { + "cell_type": "code", + "execution_count": 191, + "metadata": {}, + "outputs": [], + "source": [ + "class KernelDriver(DefaultIP):\n", + " def __init__(self, description):\n", + " super().__init__(description=description)\n", + " self.max_G = 1\n", + " self.max_I = 1\n", + " self.max_H = 1\n", + " \n", + " bindto = ['xilinx.com:hls:HlsDenseSvd:1.0']\n", + "\n", + " def start_accel(self):\n", + " self.register_map.CTRL.AP_START = 1\n", + " self.write(0x0, 1)\n", + " self.write(0x0, 1)\n", + " while(self.read(0x0) % 2 == 0):\n", + " self.write(0x0, 1)\n", + " pass # Wait until start, i.e. bit 0, is set.\n", + "\n", + " def set_state(self, state):\n", + " # self.register_map.CTRL = state\n", + " # return self.register_map.CTRL\n", + " self.write(0x0, state)\n", + " return self.read(0x0)\n", + "\n", + " def get_state(self):\n", + " return self.register_map.CTRL\n", + " # return self.read(0x0)\n", + "\n", + " @property\n", + " def num_active_inputs(self):\n", + " return self.register_map.num_active_inputs\n", + "\n", + " @num_active_inputs.setter\n", + " def num_active_inputs(self, N):\n", + " self.register_map.num_active_inputs = N\n", + "\n", + " @property\n", + " def input_size(self):\n", + " return self.register_map.input_size\n", + "\n", + " @input_size.setter\n", + " def input_size(self, I):\n", + " self.register_map.input_size = I\n", + "\n", + " @property\n", + " def output_size(self):\n", + " return self.register_map.output_size\n", + "\n", + " @output_size.setter\n", + " def output_size(self, H):\n", + " self.register_map.output_size = H\n", + "\n", + " @property\n", + " def num_refinements(self):\n", + " return (self.register_map.num_refinements_0, self.register_map.num_refinements_1)\n", + "\n", + " @num_refinements.setter\n", + " def num_refinements(self, R):\n", + " self.register_map.num_refinements_0 = R[0]\n", + " self.register_map.num_refinements_1 = R[1]\n", + "\n", + "overlay = Overlay(\"overlay/dense_svd.bit\")" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Let's check again the kernel:" + ] + }, + { + "cell_type": "code", + "execution_count": 192, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "Register(AP_START=0, AP_DONE=0, AP_IDLE=1, AP_READY=0, RESERVED_1=0, AUTO_RESTART=0, RESERVED_2=0, RESERVED_3=0, RESERVED_4=0)" + ] + }, + "execution_count": 192, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "dense_svd = overlay.HlsDenseSvd_0\n", + "dense_svd.get_state()" + ] + }, + { + "cell_type": "code", + "execution_count": 193, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "0" + ] + }, + "execution_count": 193, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "dense_svd.read(0x10)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "To show the class is working, we setup the `num_refinements` using the setter method. We then read its corresponding register." + ] + }, + { + "cell_type": "code", + "execution_count": 194, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "(Register(num_refinements_0=1), Register(num_refinements_1=1))" + ] + }, + "execution_count": 194, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "dense_svd.num_refinements = (1, 1)\n", + "dense_svd.num_refinements" + ] + }, + { + "cell_type": "code", + "execution_count": 195, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "0x4\n" + ] + }, + { + "data": { + "text/plain": [ + "Register(AP_START=0, AP_DONE=0, AP_IDLE=1, AP_READY=0, RESERVED_1=0, AUTO_RESTART=0, RESERVED_2=0, RESERVED_3=0, RESERVED_4=0)" + ] + }, + "execution_count": 195, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "print(dense_svd.get_state())\n", + "dense_svd.get_state()" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Data Allocation and Run\n", + "\n", + "The data structures must be contiguosly allocated." + ] + }, + { + "cell_type": "code", + "execution_count": 196, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Buffers setup completed.\n", + "x_buffer.shape: (2, 256) - Bytes: 1024\n" + ] + } + ], + "source": [ + "data_t = np.int16\n", + "G = dense_svd.max_G\n", + "N = 2\n", + "I = 256\n", + "H = 256\n", + "R = 64\n", + "x_buffer = pynq.allocate(shape=(N, I), dtype=data_t)\n", + "u_buffer = pynq.allocate(shape=(R, I, G), dtype=data_t)\n", + "s_buffer = pynq.allocate(shape=(R, N, G), dtype=data_t)\n", + "v_buffer = pynq.allocate(shape=(R, H, G), dtype=data_t)\n", + "bias_buffer = pynq.allocate(shape=(N, G, H), dtype=data_t)\n", + "y_buffer = pynq.allocate(shape=(N, G, H), dtype=data_t)\n", + "\n", + "# Generate random arrays\n", + "x_np = np.random.rand(N, I).astype(dtype=data_t)\n", + "u_np = np.random.rand(R, I, G).astype(dtype=data_t)\n", + "s_np = np.random.rand(R, N, G).astype(dtype=data_t)\n", + "v_np = np.random.rand(R, H, G).astype(dtype=data_t)\n", + "bias_np = np.random.rand(N, G, H).astype(dtype=data_t)\n", + "y_np = np.zeros((N, G, H)).astype(dtype=data_t)\n", + "\n", + "np.copyto(x_buffer, x_np, casting='no')\n", + "np.copyto(u_buffer, u_np, casting='no')\n", + "np.copyto(s_buffer, s_np, casting='no')\n", + "np.copyto(v_buffer, v_np, casting='no')\n", + "np.copyto(bias_buffer, bias_np, casting='no')\n", + "np.copyto(y_buffer, y_np, casting='no')\n", + "\n", + "print('Buffers setup completed.')\n", + "print(f'x_buffer.shape: {x_buffer.shape} - Bytes: {x_buffer.nbytes}')" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Setup the kernel and then send the data through the DMAs." + ] + }, + { + "cell_type": "code", + "execution_count": 197, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "0x4\n", + "0x1\n" + ] + }, + { + "data": { + "text/plain": [ + "RegisterMap {\n", + " CTRL = Register(AP_START=1, AP_DONE=0, AP_IDLE=0, AP_READY=0, RESERVED_1=0, AUTO_RESTART=0, RESERVED_2=0, RESERVED_3=0, RESERVED_4=0),\n", + " GIER = Register(Enable=0, RESERVED=0),\n", + " IP_IER = Register(CHAN0_INT_EN=0, CHAN1_INT_EN=0, RESERVED=0),\n", + " IP_ISR = Register(CHAN0_INT_ST=0, CHAN1_INT_ST=0, RESERVED=0),\n", + " num_active_inputs = Register(num_active_inputs=2),\n", + " input_size = Register(input_size=256),\n", + " output_size = Register(output_size=256),\n", + " num_refinements_0 = Register(num_refinements_0=64),\n", + " num_refinements_1 = Register(num_refinements_1=64)\n", + "}" + ] + }, + "execution_count": 197, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "dense_svd.num_active_inputs = N\n", + "dense_svd.input_size = I\n", + "dense_svd.output_size = H\n", + "dense_svd.num_refinements = (R, R)\n", + "print(dense_svd.get_state())\n", + "dense_svd.start_accel()\n", + "print(dense_svd.get_state())\n", + "dense_svd.register_map" + ] + }, + { + "cell_type": "code", + "execution_count": 198, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Starting transfer:\n", + "Waiting transfer completion.\n", + "x_DMA done.\n", + "u_DMA done.\n", + "s_DMA done.\n", + "v_DMA done.\n", + "bias_DMA done.\n", + "y_DMA done.\n", + "Done.\n", + "\n", + "y_buffer.shape: (2, 1, 256)\n" + ] + } + ], + "source": [ + "# Transfer\n", + "print('Starting transfer:')\n", + "overlay.x_dma.sendchannel.transfer(x_buffer)\n", + "overlay.u_dma.sendchannel.transfer(u_buffer)\n", + "overlay.s_dma.sendchannel.transfer(s_buffer)\n", + "overlay.v_dma.sendchannel.transfer(v_buffer)\n", + "overlay.bias_dma.sendchannel.transfer(bias_buffer)\n", + "overlay.y_dma.recvchannel.transfer(y_buffer)\n", + "# Then wait\n", + "print('Waiting transfer completion.')\n", + "overlay.x_dma.sendchannel.wait()\n", + "print(f'x_DMA done.')\n", + "overlay.u_dma.sendchannel.wait()\n", + "print(f'u_DMA done.')\n", + "overlay.s_dma.sendchannel.wait()\n", + "print(f's_DMA done.')\n", + "overlay.v_dma.sendchannel.wait()\n", + "print(f'v_DMA done.')\n", + "overlay.bias_dma.sendchannel.wait()\n", + "print(f'bias_DMA done.')\n", + "overlay.y_dma.recvchannel.wait()\n", + "print(f'y_DMA done.')\n", + "print('Done.\\n')\n", + "\n", + "print(f'y_buffer.shape: {y_buffer.shape}')" + ] + }, + { + "cell_type": "code", + "execution_count": 11, + "metadata": {}, + "outputs": [], + "source": [ + "def run_kernel(R, x_buffer, u_buffer, xu_buffer):\n", + " kernel_u.num_refinements = R\n", + " kernel_u.start_accel()\n", + " # Transfer\n", + " overlay.x_dma.sendchannel.transfer(x_buffer)\n", + " overlay.u_dma.sendchannel.transfer(u_buffer)\n", + " overlay.xu_dma.recvchannel.transfer(xu_buffer)\n", + " # Then wait\n", + " overlay.x_dma.sendchannel.wait()\n", + " overlay.u_dma.sendchannel.wait()\n", + " overlay.xu_dma.recvchannel.wait()" + ] + }, + { + "cell_type": "code", + "execution_count": 12, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "10 loops, best of 3: 148 ms per loop\n" + ] + } + ], + "source": [ + "%timeit run_kernel(R, x_buffer, u_buffer, xu_buffer)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Checking Correctness\n", + "\n", + "We first find the proper reshape mechanisms:" + ] + }, + { + "cell_type": "code", + "execution_count": 15, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "[-1.25823639 1.03248304 -0.3389279 -0.26103506] [-1.25823639 1.03248304 -0.3389279 -0.26103506]\n", + "0.0\n", + "[ 0.38526848 -0.34712276 -0.39317614 0.77762274] [ 0.38526848 -0.34712276 -0.39317614 0.77762274]\n", + "0.0\n", + "(128, 4, 2)\n" + ] + } + ], + "source": [ + "# =============================================================================\n", + "# Reshape: (R, I, G) => (R, I // Tu, G, Tu)\n", + "# =============================================================================\n", + "u = np.random.randn(R, I, G)\n", + "u_tmp = u.copy()\n", + "u_tmp = np.transpose(u_tmp.reshape(R, I // Tu, Tu, G), (0, 1, 3, 2))\n", + "print(u[0, 0:4, 0], u_tmp[0, 0, 0, 0:4])\n", + "print(u[0, 3, 0] - u_tmp[0, 0, 0, 3])\n", + "\n", + "# =============================================================================\n", + "# Reshape: (R, I // Tu, G, Tu) => (I, G, R)\n", + "# =============================================================================\n", + "u = np.random.randn(R, I // Tu, G, Tu)\n", + "u_tmp = u.copy()\n", + "u_tmp = np.transpose(u_tmp, (1, 3, 2, 0)).reshape(I, G, R)\n", + "print(u[0, 0, 0, 0:4], u_tmp[0:4, 0, 0])\n", + "print(u[0, 0, 0, 3] - u_tmp[3, 0, 0])\n", + "\n", + "x = np.random.randn(N, I)\n", + "u = np.random.randn(I, G, R)\n", + "x = (x * 2).astype(np.int16)\n", + "u = (u * 2).astype(np.int16)\n", + "\n", + "xu = np.transpose(np.tensordot(x, u, axes=1), (2, 1, 0))\n", + "print(xu.shape)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "We now check the Numpy computation against the FPGA result." + ] + }, + { + "cell_type": "code", + "execution_count": 16, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "\n", + "All equal: True\n", + "gold[0]: [[ -3634 -22667]\n", + " [ 31065 15347]\n", + " [ 22140 -9595]\n", + " [ 9106 26136]]\n", + "fpga[0]: [[ -3634 -22667]\n", + " [ 31065 15347]\n", + " [ 22140 -9595]\n", + " [ 9106 26136]]\n" + ] + } + ], + "source": [ + "u_tmp = np.transpose(u_buffer, (1, 3, 2, 0)).reshape(I, G, R)\n", + "xu_gold = np.transpose(np.tensordot(x_buffer, u_tmp, axes=1), (2, 1, 0))\n", + "print('\\nAll equal:', np.allclose(xu_buffer, xu_gold))\n", + "print('gold[0]: ', xu_gold[0])\n", + "print('fpga[0]: ', xu_buffer[0])" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [] + } + ], + "metadata": { + "kernelspec": { + "display_name": "Python 3", + "language": "python", + "name": "python3" + }, + "language_info": { + "codemirror_mode": { + "name": "ipython", + "version": 3 + }, + "file_extension": ".py", + "mimetype": "text/x-python", + "name": "python", + "nbconvert_exporter": "python", + "pygments_lexer": "ipython3", + "version": "3.6.5" + } + }, + "nbformat": 4, + "nbformat_minor": 2 +} diff --git a/pynq/dense_svd/overlay/dense_svd.bit b/pynq/dense_svd/overlay/dense_svd.bit new file mode 100644 index 0000000..8643112 Binary files /dev/null and b/pynq/dense_svd/overlay/dense_svd.bit differ diff --git a/pynq/dense_svd/overlay/dense_svd.hwh b/pynq/dense_svd/overlay/dense_svd.hwh new file mode 100644 index 0000000..9d7bb3f --- /dev/null +++ b/pynq/dense_svd/overlay/dense_svd.hwh @@ -0,0 +1,15028 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/pynq/dense_svd/overlay/dense_svd.tcl b/pynq/dense_svd/overlay/dense_svd.tcl new file mode 100644 index 0000000..7657326 --- /dev/null +++ b/pynq/dense_svd/overlay/dense_svd.tcl @@ -0,0 +1,780 @@ + +################################################################ +# This is a generated script based on design: design_1 +# +# Though there are limitations about the generated script, +# the main purpose of this utility is to make learning +# IP Integrator Tcl commands easier. +################################################################ + +namespace eval _tcl { +proc get_script_folder {} { + set script_path [file normalize [info script]] + set script_folder [file dirname $script_path] + return $script_folder +} +} +variable script_folder +set script_folder [_tcl::get_script_folder] + +################################################################ +# Check if script is running in correct Vivado version. +################################################################ +set scripts_vivado_version 2020.2 +set current_vivado_version [version -short] + +if { [string first $scripts_vivado_version $current_vivado_version] == -1 } { + puts "" + catch {common::send_gid_msg -ssname BD::TCL -id 2041 -severity "ERROR" "This script was generated using Vivado <$scripts_vivado_version> and is being run in <$current_vivado_version> of Vivado. Please run the script in Vivado <$scripts_vivado_version> then open the design in Vivado <$current_vivado_version>. Upgrade the design by running \"Tools => Report => Report IP Status...\", then run write_bd_tcl to create an updated script."} + + return 1 +} + +################################################################ +# START +################################################################ + +# To test this script, run the following commands from Vivado Tcl console: +# source design_1_script.tcl + +# If there is no project opened, this script will create a +# project, but make sure you do not have an existing project +# <./myproj/project_1.xpr> in the current working folder. + +set list_projs [get_projects -quiet] +if { $list_projs eq "" } { + create_project project_1 myproj -part xc7z020clg484-1 + set_property BOARD_PART em.avnet.com:zed:part0:1.4 [current_project] +} + + +# CHANGE DESIGN NAME HERE +variable design_name +set design_name design_1 + +# If you do not already have an existing IP Integrator design open, +# you can create a design using the following command: +# create_bd_design $design_name + +# Creating design if needed +set errMsg "" +set nRet 0 + +set cur_design [current_bd_design -quiet] +set list_cells [get_bd_cells -quiet] + +if { ${design_name} eq "" } { + # USE CASES: + # 1) Design_name not set + + set errMsg "Please set the variable to a non-empty value." + set nRet 1 + +} elseif { ${cur_design} ne "" && ${list_cells} eq "" } { + # USE CASES: + # 2): Current design opened AND is empty AND names same. + # 3): Current design opened AND is empty AND names diff; design_name NOT in project. + # 4): Current design opened AND is empty AND names diff; design_name exists in project. + + if { $cur_design ne $design_name } { + common::send_gid_msg -ssname BD::TCL -id 2001 -severity "INFO" "Changing value of from <$design_name> to <$cur_design> since current design is empty." + set design_name [get_property NAME $cur_design] + } + common::send_gid_msg -ssname BD::TCL -id 2002 -severity "INFO" "Constructing design in IPI design <$cur_design>..." + +} elseif { ${cur_design} ne "" && $list_cells ne "" && $cur_design eq $design_name } { + # USE CASES: + # 5) Current design opened AND has components AND same names. + + set errMsg "Design <$design_name> already exists in your project, please set the variable to another value." + set nRet 1 +} elseif { [get_files -quiet ${design_name}.bd] ne "" } { + # USE CASES: + # 6) Current opened design, has components, but diff names, design_name exists in project. + # 7) No opened design, design_name exists in project. + + set errMsg "Design <$design_name> already exists in your project, please set the variable to another value." + set nRet 2 + +} else { + # USE CASES: + # 8) No opened design, design_name not in project. + # 9) Current opened design, has components, but diff names, design_name not in project. + + common::send_gid_msg -ssname BD::TCL -id 2003 -severity "INFO" "Currently there is no design <$design_name> in project, so creating one..." + + create_bd_design $design_name + + common::send_gid_msg -ssname BD::TCL -id 2004 -severity "INFO" "Making design <$design_name> as current_bd_design." + current_bd_design $design_name + +} + +common::send_gid_msg -ssname BD::TCL -id 2005 -severity "INFO" "Currently the variable is equal to \"$design_name\"." + +if { $nRet != 0 } { + catch {common::send_gid_msg -ssname BD::TCL -id 2006 -severity "ERROR" $errMsg} + return $nRet +} + +set bCheckIPsPassed 1 +################################################################## +# CHECK IPs +################################################################## +set bCheckIPs 1 +if { $bCheckIPs == 1 } { + set list_check_ips "\ +xilinx.com:hls:HlsDenseSvd:1.0\ +xilinx.com:ip:axi_dma:7.1\ +xilinx.com:ip:processing_system7:5.5\ +xilinx.com:ip:proc_sys_reset:5.0\ +" + + set list_ips_missing "" + common::send_gid_msg -ssname BD::TCL -id 2011 -severity "INFO" "Checking if the following IPs exist in the project's IP catalog: $list_check_ips ." + + foreach ip_vlnv $list_check_ips { + set ip_obj [get_ipdefs -all $ip_vlnv] + if { $ip_obj eq "" } { + lappend list_ips_missing $ip_vlnv + } + } + + if { $list_ips_missing ne "" } { + catch {common::send_gid_msg -ssname BD::TCL -id 2012 -severity "ERROR" "The following IPs are not found in the IP Catalog:\n $list_ips_missing\n\nResolution: Please add the repository containing the IP(s) to the project." } + set bCheckIPsPassed 0 + } + +} + +if { $bCheckIPsPassed != 1 } { + common::send_gid_msg -ssname BD::TCL -id 2023 -severity "WARNING" "Will not continue with creation of design due to the error(s) above." + return 3 +} + +################################################################## +# DESIGN PROCs +################################################################## + + + +# Procedure to create entire design; Provide argument to make +# procedure reusable. If parentCell is "", will use root. +proc create_root_design { parentCell } { + + variable script_folder + variable design_name + + if { $parentCell eq "" } { + set parentCell [get_bd_cells /] + } + + # Get object for parentCell + set parentObj [get_bd_cells $parentCell] + if { $parentObj == "" } { + catch {common::send_gid_msg -ssname BD::TCL -id 2090 -severity "ERROR" "Unable to find parent cell <$parentCell>!"} + return + } + + # Make sure parentObj is hier blk + set parentType [get_property TYPE $parentObj] + if { $parentType ne "hier" } { + catch {common::send_gid_msg -ssname BD::TCL -id 2091 -severity "ERROR" "Parent <$parentObj> has TYPE = <$parentType>. Expected to be ."} + return + } + + # Save current instance; Restore later + set oldCurInst [current_bd_instance .] + + # Set parent object as current + current_bd_instance $parentObj + + + # Create interface ports + set DDR [ create_bd_intf_port -mode Master -vlnv xilinx.com:interface:ddrx_rtl:1.0 DDR ] + + set FIXED_IO [ create_bd_intf_port -mode Master -vlnv xilinx.com:display_processing_system7:fixedio_rtl:1.0 FIXED_IO ] + + + # Create ports + + # Create instance: HlsDenseSvd_0, and set properties + set HlsDenseSvd_0 [ create_bd_cell -type ip -vlnv xilinx.com:hls:HlsDenseSvd:1.0 HlsDenseSvd_0 ] + + # Create instance: axi_mem_intercon, and set properties + set axi_mem_intercon [ create_bd_cell -type ip -vlnv xilinx.com:ip:axi_interconnect:2.1 axi_mem_intercon ] + set_property -dict [ list \ + CONFIG.NUM_MI {1} \ + CONFIG.NUM_SI {2} \ + ] $axi_mem_intercon + + # Create instance: axi_mem_intercon_1, and set properties + set axi_mem_intercon_1 [ create_bd_cell -type ip -vlnv xilinx.com:ip:axi_interconnect:2.1 axi_mem_intercon_1 ] + set_property -dict [ list \ + CONFIG.NUM_MI {1} \ + CONFIG.NUM_SI {2} \ + ] $axi_mem_intercon_1 + + # Create instance: axi_mem_intercon_2, and set properties + set axi_mem_intercon_2 [ create_bd_cell -type ip -vlnv xilinx.com:ip:axi_interconnect:2.1 axi_mem_intercon_2 ] + set_property -dict [ list \ + CONFIG.NUM_MI {1} \ + ] $axi_mem_intercon_2 + + # Create instance: axi_mem_intercon_3, and set properties + set axi_mem_intercon_3 [ create_bd_cell -type ip -vlnv xilinx.com:ip:axi_interconnect:2.1 axi_mem_intercon_3 ] + set_property -dict [ list \ + CONFIG.NUM_MI {1} \ + ] $axi_mem_intercon_3 + + # Create instance: bias_dma, and set properties + set bias_dma [ create_bd_cell -type ip -vlnv xilinx.com:ip:axi_dma:7.1 bias_dma ] + set_property -dict [ list \ + CONFIG.c_include_mm2s_dre {1} \ + CONFIG.c_include_s2mm {0} \ + CONFIG.c_include_sg {0} \ + CONFIG.c_m_axi_mm2s_data_width {64} \ + CONFIG.c_m_axis_mm2s_tdata_width {64} \ + CONFIG.c_mm2s_burst_size {256} \ + CONFIG.c_sg_include_stscntrl_strm {0} \ + CONFIG.c_sg_length_width {16} \ + ] $bias_dma + + # Create instance: processing_system7_0, and set properties + set processing_system7_0 [ create_bd_cell -type ip -vlnv xilinx.com:ip:processing_system7:5.5 processing_system7_0 ] + set_property -dict [ list \ + CONFIG.PCW_ACT_APU_PERIPHERAL_FREQMHZ {666.666687} \ + CONFIG.PCW_ACT_CAN_PERIPHERAL_FREQMHZ {10.000000} \ + CONFIG.PCW_ACT_DCI_PERIPHERAL_FREQMHZ {10.158730} \ + CONFIG.PCW_ACT_ENET0_PERIPHERAL_FREQMHZ {125.000000} \ + CONFIG.PCW_ACT_ENET1_PERIPHERAL_FREQMHZ {10.000000} \ + CONFIG.PCW_ACT_FPGA0_PERIPHERAL_FREQMHZ {100.000000} \ + CONFIG.PCW_ACT_FPGA1_PERIPHERAL_FREQMHZ {10.000000} \ + CONFIG.PCW_ACT_FPGA2_PERIPHERAL_FREQMHZ {10.000000} \ + CONFIG.PCW_ACT_FPGA3_PERIPHERAL_FREQMHZ {10.000000} \ + CONFIG.PCW_ACT_PCAP_PERIPHERAL_FREQMHZ {200.000000} \ + CONFIG.PCW_ACT_QSPI_PERIPHERAL_FREQMHZ {200.000000} \ + CONFIG.PCW_ACT_SDIO_PERIPHERAL_FREQMHZ {50.000000} \ + CONFIG.PCW_ACT_SMC_PERIPHERAL_FREQMHZ {10.000000} \ + CONFIG.PCW_ACT_SPI_PERIPHERAL_FREQMHZ {10.000000} \ + CONFIG.PCW_ACT_TPIU_PERIPHERAL_FREQMHZ {200.000000} \ + CONFIG.PCW_ACT_TTC0_CLK0_PERIPHERAL_FREQMHZ {111.111115} \ + CONFIG.PCW_ACT_TTC0_CLK1_PERIPHERAL_FREQMHZ {111.111115} \ + CONFIG.PCW_ACT_TTC0_CLK2_PERIPHERAL_FREQMHZ {111.111115} \ + CONFIG.PCW_ACT_TTC1_CLK0_PERIPHERAL_FREQMHZ {111.111115} \ + CONFIG.PCW_ACT_TTC1_CLK1_PERIPHERAL_FREQMHZ {111.111115} \ + CONFIG.PCW_ACT_TTC1_CLK2_PERIPHERAL_FREQMHZ {111.111115} \ + CONFIG.PCW_ACT_UART_PERIPHERAL_FREQMHZ {50.000000} \ + CONFIG.PCW_ACT_WDT_PERIPHERAL_FREQMHZ {111.111115} \ + CONFIG.PCW_APU_PERIPHERAL_FREQMHZ {666.666667} \ + CONFIG.PCW_ARMPLL_CTRL_FBDIV {40} \ + CONFIG.PCW_CAN_PERIPHERAL_DIVISOR0 {1} \ + CONFIG.PCW_CAN_PERIPHERAL_DIVISOR1 {1} \ + CONFIG.PCW_CAN_PERIPHERAL_FREQMHZ {100} \ + CONFIG.PCW_CLK0_FREQ {100000000} \ + CONFIG.PCW_CLK1_FREQ {10000000} \ + CONFIG.PCW_CLK2_FREQ {10000000} \ + CONFIG.PCW_CLK3_FREQ {10000000} \ + CONFIG.PCW_CPU_CPU_PLL_FREQMHZ {1333.333} \ + CONFIG.PCW_CPU_PERIPHERAL_DIVISOR0 {2} \ + CONFIG.PCW_DCI_PERIPHERAL_DIVISOR0 {15} \ + CONFIG.PCW_DCI_PERIPHERAL_DIVISOR1 {7} \ + CONFIG.PCW_DDRPLL_CTRL_FBDIV {32} \ + CONFIG.PCW_DDR_DDR_PLL_FREQMHZ {1066.667} \ + CONFIG.PCW_DDR_PERIPHERAL_DIVISOR0 {2} \ + CONFIG.PCW_DDR_RAM_HIGHADDR {0x1FFFFFFF} \ + CONFIG.PCW_ENET0_ENET0_IO {MIO 16 .. 27} \ + CONFIG.PCW_ENET0_GRP_MDIO_ENABLE {1} \ + CONFIG.PCW_ENET0_GRP_MDIO_IO {MIO 52 .. 53} \ + CONFIG.PCW_ENET0_PERIPHERAL_DIVISOR0 {8} \ + CONFIG.PCW_ENET0_PERIPHERAL_DIVISOR1 {1} \ + CONFIG.PCW_ENET0_PERIPHERAL_ENABLE {1} \ + CONFIG.PCW_ENET0_PERIPHERAL_FREQMHZ {1000 Mbps} \ + CONFIG.PCW_ENET0_RESET_ENABLE {0} \ + CONFIG.PCW_ENET1_PERIPHERAL_DIVISOR0 {1} \ + CONFIG.PCW_ENET1_PERIPHERAL_DIVISOR1 {1} \ + CONFIG.PCW_ENET1_RESET_ENABLE {0} \ + CONFIG.PCW_ENET_RESET_ENABLE {1} \ + CONFIG.PCW_ENET_RESET_SELECT {Share reset pin} \ + CONFIG.PCW_EN_EMIO_TTC0 {1} \ + CONFIG.PCW_EN_ENET0 {1} \ + CONFIG.PCW_EN_GPIO {1} \ + CONFIG.PCW_EN_QSPI {1} \ + CONFIG.PCW_EN_SDIO0 {1} \ + CONFIG.PCW_EN_TTC0 {1} \ + CONFIG.PCW_EN_UART1 {1} \ + CONFIG.PCW_EN_USB0 {1} \ + CONFIG.PCW_FCLK0_PERIPHERAL_DIVISOR0 {5} \ + CONFIG.PCW_FCLK0_PERIPHERAL_DIVISOR1 {2} \ + CONFIG.PCW_FCLK1_PERIPHERAL_DIVISOR0 {1} \ + CONFIG.PCW_FCLK1_PERIPHERAL_DIVISOR1 {1} \ + CONFIG.PCW_FCLK2_PERIPHERAL_DIVISOR0 {1} \ + CONFIG.PCW_FCLK2_PERIPHERAL_DIVISOR1 {1} \ + CONFIG.PCW_FCLK3_PERIPHERAL_DIVISOR0 {1} \ + CONFIG.PCW_FCLK3_PERIPHERAL_DIVISOR1 {1} \ + CONFIG.PCW_FPGA0_PERIPHERAL_FREQMHZ {100.000000} \ + CONFIG.PCW_FPGA1_PERIPHERAL_FREQMHZ {150.000000} \ + CONFIG.PCW_FPGA2_PERIPHERAL_FREQMHZ {50} \ + CONFIG.PCW_FPGA_FCLK0_ENABLE {1} \ + CONFIG.PCW_FPGA_FCLK1_ENABLE {0} \ + CONFIG.PCW_FPGA_FCLK2_ENABLE {0} \ + CONFIG.PCW_FPGA_FCLK3_ENABLE {0} \ + CONFIG.PCW_GPIO_MIO_GPIO_ENABLE {1} \ + CONFIG.PCW_GPIO_MIO_GPIO_IO {MIO} \ + CONFIG.PCW_I2C0_GRP_INT_ENABLE {0} \ + CONFIG.PCW_I2C0_PERIPHERAL_ENABLE {0} \ + CONFIG.PCW_I2C0_RESET_ENABLE {0} \ + CONFIG.PCW_I2C1_RESET_ENABLE {0} \ + CONFIG.PCW_I2C_PERIPHERAL_FREQMHZ {25} \ + CONFIG.PCW_I2C_RESET_ENABLE {1} \ + CONFIG.PCW_IOPLL_CTRL_FBDIV {30} \ + CONFIG.PCW_IO_IO_PLL_FREQMHZ {1000.000} \ + CONFIG.PCW_MIO_0_DIRECTION {inout} \ + CONFIG.PCW_MIO_0_IOTYPE {LVCMOS 3.3V} \ + CONFIG.PCW_MIO_0_PULLUP {disabled} \ + CONFIG.PCW_MIO_0_SLEW {slow} \ + CONFIG.PCW_MIO_10_DIRECTION {inout} \ + CONFIG.PCW_MIO_10_IOTYPE {LVCMOS 3.3V} \ + CONFIG.PCW_MIO_10_PULLUP {disabled} \ + CONFIG.PCW_MIO_10_SLEW {slow} \ + CONFIG.PCW_MIO_11_DIRECTION {inout} \ + CONFIG.PCW_MIO_11_IOTYPE {LVCMOS 3.3V} \ + CONFIG.PCW_MIO_11_PULLUP {disabled} \ + CONFIG.PCW_MIO_11_SLEW {slow} \ + CONFIG.PCW_MIO_12_DIRECTION {inout} \ + CONFIG.PCW_MIO_12_IOTYPE {LVCMOS 3.3V} \ + CONFIG.PCW_MIO_12_PULLUP {disabled} \ + CONFIG.PCW_MIO_12_SLEW {slow} \ + CONFIG.PCW_MIO_13_DIRECTION {inout} \ + CONFIG.PCW_MIO_13_IOTYPE {LVCMOS 3.3V} \ + CONFIG.PCW_MIO_13_PULLUP {disabled} \ + CONFIG.PCW_MIO_13_SLEW {slow} \ + CONFIG.PCW_MIO_14_DIRECTION {inout} \ + CONFIG.PCW_MIO_14_IOTYPE {LVCMOS 3.3V} \ + CONFIG.PCW_MIO_14_PULLUP {disabled} \ + CONFIG.PCW_MIO_14_SLEW {slow} \ + CONFIG.PCW_MIO_15_DIRECTION {inout} \ + CONFIG.PCW_MIO_15_IOTYPE {LVCMOS 3.3V} \ + CONFIG.PCW_MIO_15_PULLUP {disabled} \ + CONFIG.PCW_MIO_15_SLEW {slow} \ + CONFIG.PCW_MIO_16_DIRECTION {out} \ + CONFIG.PCW_MIO_16_IOTYPE {LVCMOS 1.8V} \ + CONFIG.PCW_MIO_16_PULLUP {disabled} \ + CONFIG.PCW_MIO_16_SLEW {fast} \ + CONFIG.PCW_MIO_17_DIRECTION {out} \ + CONFIG.PCW_MIO_17_IOTYPE {LVCMOS 1.8V} \ + CONFIG.PCW_MIO_17_PULLUP {disabled} \ + CONFIG.PCW_MIO_17_SLEW {fast} \ + CONFIG.PCW_MIO_18_DIRECTION {out} \ + CONFIG.PCW_MIO_18_IOTYPE {LVCMOS 1.8V} \ + CONFIG.PCW_MIO_18_PULLUP {disabled} \ + CONFIG.PCW_MIO_18_SLEW {fast} \ + CONFIG.PCW_MIO_19_DIRECTION {out} \ + CONFIG.PCW_MIO_19_IOTYPE {LVCMOS 1.8V} \ + CONFIG.PCW_MIO_19_PULLUP {disabled} \ + CONFIG.PCW_MIO_19_SLEW {fast} \ + CONFIG.PCW_MIO_1_DIRECTION {out} \ + CONFIG.PCW_MIO_1_IOTYPE {LVCMOS 3.3V} \ + CONFIG.PCW_MIO_1_PULLUP {disabled} \ + CONFIG.PCW_MIO_1_SLEW {fast} \ + CONFIG.PCW_MIO_20_DIRECTION {out} \ + CONFIG.PCW_MIO_20_IOTYPE {LVCMOS 1.8V} \ + CONFIG.PCW_MIO_20_PULLUP {disabled} \ + CONFIG.PCW_MIO_20_SLEW {fast} \ + CONFIG.PCW_MIO_21_DIRECTION {out} \ + CONFIG.PCW_MIO_21_IOTYPE {LVCMOS 1.8V} \ + CONFIG.PCW_MIO_21_PULLUP {disabled} \ + CONFIG.PCW_MIO_21_SLEW {fast} \ + CONFIG.PCW_MIO_22_DIRECTION {in} \ + CONFIG.PCW_MIO_22_IOTYPE {LVCMOS 1.8V} \ + CONFIG.PCW_MIO_22_PULLUP {disabled} \ + CONFIG.PCW_MIO_22_SLEW {fast} \ + CONFIG.PCW_MIO_23_DIRECTION {in} \ + CONFIG.PCW_MIO_23_IOTYPE {LVCMOS 1.8V} \ + CONFIG.PCW_MIO_23_PULLUP {disabled} \ + CONFIG.PCW_MIO_23_SLEW {fast} \ + CONFIG.PCW_MIO_24_DIRECTION {in} \ + CONFIG.PCW_MIO_24_IOTYPE {LVCMOS 1.8V} \ + CONFIG.PCW_MIO_24_PULLUP {disabled} \ + CONFIG.PCW_MIO_24_SLEW {fast} \ + CONFIG.PCW_MIO_25_DIRECTION {in} \ + CONFIG.PCW_MIO_25_IOTYPE {LVCMOS 1.8V} \ + CONFIG.PCW_MIO_25_PULLUP {disabled} \ + CONFIG.PCW_MIO_25_SLEW {fast} \ + CONFIG.PCW_MIO_26_DIRECTION {in} \ + CONFIG.PCW_MIO_26_IOTYPE {LVCMOS 1.8V} \ + CONFIG.PCW_MIO_26_PULLUP {disabled} \ + CONFIG.PCW_MIO_26_SLEW {fast} \ + CONFIG.PCW_MIO_27_DIRECTION {in} \ + CONFIG.PCW_MIO_27_IOTYPE {LVCMOS 1.8V} \ + CONFIG.PCW_MIO_27_PULLUP {disabled} \ + CONFIG.PCW_MIO_27_SLEW {fast} \ + CONFIG.PCW_MIO_28_DIRECTION {inout} \ + CONFIG.PCW_MIO_28_IOTYPE {LVCMOS 1.8V} \ + CONFIG.PCW_MIO_28_PULLUP {disabled} \ + CONFIG.PCW_MIO_28_SLEW {fast} \ + CONFIG.PCW_MIO_29_DIRECTION {in} \ + CONFIG.PCW_MIO_29_IOTYPE {LVCMOS 1.8V} \ + CONFIG.PCW_MIO_29_PULLUP {disabled} \ + CONFIG.PCW_MIO_29_SLEW {fast} \ + CONFIG.PCW_MIO_2_DIRECTION {inout} \ + CONFIG.PCW_MIO_2_IOTYPE {LVCMOS 3.3V} \ + CONFIG.PCW_MIO_2_PULLUP {disabled} \ + CONFIG.PCW_MIO_2_SLEW {fast} \ + CONFIG.PCW_MIO_30_DIRECTION {out} \ + CONFIG.PCW_MIO_30_IOTYPE {LVCMOS 1.8V} \ + CONFIG.PCW_MIO_30_PULLUP {disabled} \ + CONFIG.PCW_MIO_30_SLEW {fast} \ + CONFIG.PCW_MIO_31_DIRECTION {in} \ + CONFIG.PCW_MIO_31_IOTYPE {LVCMOS 1.8V} \ + CONFIG.PCW_MIO_31_PULLUP {disabled} \ + CONFIG.PCW_MIO_31_SLEW {fast} \ + CONFIG.PCW_MIO_32_DIRECTION {inout} \ + CONFIG.PCW_MIO_32_IOTYPE {LVCMOS 1.8V} \ + CONFIG.PCW_MIO_32_PULLUP {disabled} \ + CONFIG.PCW_MIO_32_SLEW {fast} \ + CONFIG.PCW_MIO_33_DIRECTION {inout} \ + CONFIG.PCW_MIO_33_IOTYPE {LVCMOS 1.8V} \ + CONFIG.PCW_MIO_33_PULLUP {disabled} \ + CONFIG.PCW_MIO_33_SLEW {fast} \ + CONFIG.PCW_MIO_34_DIRECTION {inout} \ + CONFIG.PCW_MIO_34_IOTYPE {LVCMOS 1.8V} \ + CONFIG.PCW_MIO_34_PULLUP {disabled} \ + CONFIG.PCW_MIO_34_SLEW {fast} \ + CONFIG.PCW_MIO_35_DIRECTION {inout} \ + CONFIG.PCW_MIO_35_IOTYPE {LVCMOS 1.8V} \ + CONFIG.PCW_MIO_35_PULLUP {disabled} \ + CONFIG.PCW_MIO_35_SLEW {fast} \ + CONFIG.PCW_MIO_36_DIRECTION {in} \ + CONFIG.PCW_MIO_36_IOTYPE {LVCMOS 1.8V} \ + CONFIG.PCW_MIO_36_PULLUP {disabled} \ + CONFIG.PCW_MIO_36_SLEW {fast} \ + CONFIG.PCW_MIO_37_DIRECTION {inout} \ + CONFIG.PCW_MIO_37_IOTYPE {LVCMOS 1.8V} \ + CONFIG.PCW_MIO_37_PULLUP {disabled} \ + CONFIG.PCW_MIO_37_SLEW {fast} \ + CONFIG.PCW_MIO_38_DIRECTION {inout} \ + CONFIG.PCW_MIO_38_IOTYPE {LVCMOS 1.8V} \ + CONFIG.PCW_MIO_38_PULLUP {disabled} \ + CONFIG.PCW_MIO_38_SLEW {fast} \ + CONFIG.PCW_MIO_39_DIRECTION {inout} \ + CONFIG.PCW_MIO_39_IOTYPE {LVCMOS 1.8V} \ + CONFIG.PCW_MIO_39_PULLUP {disabled} \ + CONFIG.PCW_MIO_39_SLEW {fast} \ + CONFIG.PCW_MIO_3_DIRECTION {inout} \ + CONFIG.PCW_MIO_3_IOTYPE {LVCMOS 3.3V} \ + CONFIG.PCW_MIO_3_PULLUP {disabled} \ + CONFIG.PCW_MIO_3_SLEW {fast} \ + CONFIG.PCW_MIO_40_DIRECTION {inout} \ + CONFIG.PCW_MIO_40_IOTYPE {LVCMOS 1.8V} \ + CONFIG.PCW_MIO_40_PULLUP {disabled} \ + CONFIG.PCW_MIO_40_SLEW {fast} \ + CONFIG.PCW_MIO_41_DIRECTION {inout} \ + CONFIG.PCW_MIO_41_IOTYPE {LVCMOS 1.8V} \ + CONFIG.PCW_MIO_41_PULLUP {disabled} \ + CONFIG.PCW_MIO_41_SLEW {fast} \ + CONFIG.PCW_MIO_42_DIRECTION {inout} \ + CONFIG.PCW_MIO_42_IOTYPE {LVCMOS 1.8V} \ + CONFIG.PCW_MIO_42_PULLUP {disabled} \ + CONFIG.PCW_MIO_42_SLEW {fast} \ + CONFIG.PCW_MIO_43_DIRECTION {inout} \ + CONFIG.PCW_MIO_43_IOTYPE {LVCMOS 1.8V} \ + CONFIG.PCW_MIO_43_PULLUP {disabled} \ + CONFIG.PCW_MIO_43_SLEW {fast} \ + CONFIG.PCW_MIO_44_DIRECTION {inout} \ + CONFIG.PCW_MIO_44_IOTYPE {LVCMOS 1.8V} \ + CONFIG.PCW_MIO_44_PULLUP {disabled} \ + CONFIG.PCW_MIO_44_SLEW {fast} \ + CONFIG.PCW_MIO_45_DIRECTION {inout} \ + CONFIG.PCW_MIO_45_IOTYPE {LVCMOS 1.8V} \ + CONFIG.PCW_MIO_45_PULLUP {disabled} \ + CONFIG.PCW_MIO_45_SLEW {fast} \ + CONFIG.PCW_MIO_46_DIRECTION {in} \ + CONFIG.PCW_MIO_46_IOTYPE {LVCMOS 1.8V} \ + CONFIG.PCW_MIO_46_PULLUP {disabled} \ + CONFIG.PCW_MIO_46_SLEW {slow} \ + CONFIG.PCW_MIO_47_DIRECTION {in} \ + CONFIG.PCW_MIO_47_IOTYPE {LVCMOS 1.8V} \ + CONFIG.PCW_MIO_47_PULLUP {disabled} \ + CONFIG.PCW_MIO_47_SLEW {slow} \ + CONFIG.PCW_MIO_48_DIRECTION {out} \ + CONFIG.PCW_MIO_48_IOTYPE {LVCMOS 1.8V} \ + CONFIG.PCW_MIO_48_PULLUP {disabled} \ + CONFIG.PCW_MIO_48_SLEW {slow} \ + CONFIG.PCW_MIO_49_DIRECTION {in} \ + CONFIG.PCW_MIO_49_IOTYPE {LVCMOS 1.8V} \ + CONFIG.PCW_MIO_49_PULLUP {disabled} \ + CONFIG.PCW_MIO_49_SLEW {slow} \ + CONFIG.PCW_MIO_4_DIRECTION {inout} \ + CONFIG.PCW_MIO_4_IOTYPE {LVCMOS 3.3V} \ + CONFIG.PCW_MIO_4_PULLUP {disabled} \ + CONFIG.PCW_MIO_4_SLEW {fast} \ + CONFIG.PCW_MIO_50_DIRECTION {inout} \ + CONFIG.PCW_MIO_50_IOTYPE {LVCMOS 1.8V} \ + CONFIG.PCW_MIO_50_PULLUP {disabled} \ + CONFIG.PCW_MIO_50_SLEW {slow} \ + CONFIG.PCW_MIO_51_DIRECTION {inout} \ + CONFIG.PCW_MIO_51_IOTYPE {LVCMOS 1.8V} \ + CONFIG.PCW_MIO_51_PULLUP {disabled} \ + CONFIG.PCW_MIO_51_SLEW {slow} \ + CONFIG.PCW_MIO_52_DIRECTION {out} \ + CONFIG.PCW_MIO_52_IOTYPE {LVCMOS 1.8V} \ + CONFIG.PCW_MIO_52_PULLUP {disabled} \ + CONFIG.PCW_MIO_52_SLEW {slow} \ + CONFIG.PCW_MIO_53_DIRECTION {inout} \ + CONFIG.PCW_MIO_53_IOTYPE {LVCMOS 1.8V} \ + CONFIG.PCW_MIO_53_PULLUP {disabled} \ + CONFIG.PCW_MIO_53_SLEW {slow} \ + CONFIG.PCW_MIO_5_DIRECTION {inout} \ + CONFIG.PCW_MIO_5_IOTYPE {LVCMOS 3.3V} \ + CONFIG.PCW_MIO_5_PULLUP {disabled} \ + CONFIG.PCW_MIO_5_SLEW {fast} \ + CONFIG.PCW_MIO_6_DIRECTION {out} \ + CONFIG.PCW_MIO_6_IOTYPE {LVCMOS 3.3V} \ + CONFIG.PCW_MIO_6_PULLUP {disabled} \ + CONFIG.PCW_MIO_6_SLEW {fast} \ + CONFIG.PCW_MIO_7_DIRECTION {out} \ + CONFIG.PCW_MIO_7_IOTYPE {LVCMOS 3.3V} \ + CONFIG.PCW_MIO_7_PULLUP {disabled} \ + CONFIG.PCW_MIO_7_SLEW {slow} \ + CONFIG.PCW_MIO_8_DIRECTION {out} \ + CONFIG.PCW_MIO_8_IOTYPE {LVCMOS 3.3V} \ + CONFIG.PCW_MIO_8_PULLUP {disabled} \ + CONFIG.PCW_MIO_8_SLEW {fast} \ + CONFIG.PCW_MIO_9_DIRECTION {inout} \ + CONFIG.PCW_MIO_9_IOTYPE {LVCMOS 3.3V} \ + CONFIG.PCW_MIO_9_PULLUP {disabled} \ + CONFIG.PCW_MIO_9_SLEW {slow} \ + CONFIG.PCW_MIO_TREE_PERIPHERALS {GPIO#Quad SPI Flash#Quad SPI Flash#Quad SPI Flash#Quad SPI Flash#Quad SPI Flash#Quad SPI Flash#GPIO#GPIO#GPIO#GPIO#GPIO#GPIO#GPIO#GPIO#GPIO#Enet 0#Enet 0#Enet 0#Enet 0#Enet 0#Enet 0#Enet 0#Enet 0#Enet 0#Enet 0#Enet 0#Enet 0#USB 0#USB 0#USB 0#USB 0#USB 0#USB 0#USB 0#USB 0#USB 0#USB 0#USB 0#USB 0#SD 0#SD 0#SD 0#SD 0#SD 0#SD 0#SD 0#SD 0#UART 1#UART 1#GPIO#GPIO#Enet 0#Enet 0} \ + CONFIG.PCW_MIO_TREE_SIGNALS {gpio[0]#qspi0_ss_b#qspi0_io[0]#qspi0_io[1]#qspi0_io[2]#qspi0_io[3]/HOLD_B#qspi0_sclk#gpio[7]#gpio[8]#gpio[9]#gpio[10]#gpio[11]#gpio[12]#gpio[13]#gpio[14]#gpio[15]#tx_clk#txd[0]#txd[1]#txd[2]#txd[3]#tx_ctl#rx_clk#rxd[0]#rxd[1]#rxd[2]#rxd[3]#rx_ctl#data[4]#dir#stp#nxt#data[0]#data[1]#data[2]#data[3]#clk#data[5]#data[6]#data[7]#clk#cmd#data[0]#data[1]#data[2]#data[3]#wp#cd#tx#rx#gpio[50]#gpio[51]#mdc#mdio} \ + CONFIG.PCW_NAND_GRP_D8_ENABLE {0} \ + CONFIG.PCW_NAND_PERIPHERAL_ENABLE {0} \ + CONFIG.PCW_NOR_GRP_A25_ENABLE {0} \ + CONFIG.PCW_NOR_GRP_CS0_ENABLE {0} \ + CONFIG.PCW_NOR_GRP_CS1_ENABLE {0} \ + CONFIG.PCW_NOR_GRP_SRAM_CS0_ENABLE {0} \ + CONFIG.PCW_NOR_GRP_SRAM_CS1_ENABLE {0} \ + CONFIG.PCW_NOR_GRP_SRAM_INT_ENABLE {0} \ + CONFIG.PCW_NOR_PERIPHERAL_ENABLE {0} \ + CONFIG.PCW_PCAP_PERIPHERAL_DIVISOR0 {5} \ + CONFIG.PCW_PJTAG_PERIPHERAL_ENABLE {0} \ + CONFIG.PCW_PRESET_BANK0_VOLTAGE {LVCMOS 3.3V} \ + CONFIG.PCW_PRESET_BANK1_VOLTAGE {LVCMOS 1.8V} \ + CONFIG.PCW_QSPI_GRP_FBCLK_ENABLE {0} \ + CONFIG.PCW_QSPI_GRP_IO1_ENABLE {0} \ + CONFIG.PCW_QSPI_GRP_SINGLE_SS_ENABLE {1} \ + CONFIG.PCW_QSPI_GRP_SINGLE_SS_IO {MIO 1 .. 6} \ + CONFIG.PCW_QSPI_GRP_SS1_ENABLE {0} \ + CONFIG.PCW_QSPI_PERIPHERAL_DIVISOR0 {5} \ + CONFIG.PCW_QSPI_PERIPHERAL_ENABLE {1} \ + CONFIG.PCW_QSPI_PERIPHERAL_FREQMHZ {200} \ + CONFIG.PCW_QSPI_QSPI_IO {MIO 1 .. 6} \ + CONFIG.PCW_SD0_GRP_CD_ENABLE {1} \ + CONFIG.PCW_SD0_GRP_CD_IO {MIO 47} \ + CONFIG.PCW_SD0_GRP_POW_ENABLE {0} \ + CONFIG.PCW_SD0_GRP_WP_ENABLE {1} \ + CONFIG.PCW_SD0_GRP_WP_IO {MIO 46} \ + CONFIG.PCW_SD0_PERIPHERAL_ENABLE {1} \ + CONFIG.PCW_SD0_SD0_IO {MIO 40 .. 45} \ + CONFIG.PCW_SDIO_PERIPHERAL_DIVISOR0 {20} \ + CONFIG.PCW_SDIO_PERIPHERAL_FREQMHZ {50} \ + CONFIG.PCW_SDIO_PERIPHERAL_VALID {1} \ + CONFIG.PCW_SINGLE_QSPI_DATA_MODE {x4} \ + CONFIG.PCW_SMC_PERIPHERAL_DIVISOR0 {1} \ + CONFIG.PCW_SPI_PERIPHERAL_DIVISOR0 {1} \ + CONFIG.PCW_S_AXI_HP2_DATA_WIDTH {64} \ + CONFIG.PCW_TPIU_PERIPHERAL_DIVISOR0 {1} \ + CONFIG.PCW_TTC0_CLK0_PERIPHERAL_FREQMHZ {133.333333} \ + CONFIG.PCW_TTC0_CLK1_PERIPHERAL_FREQMHZ {133.333333} \ + CONFIG.PCW_TTC0_CLK2_PERIPHERAL_FREQMHZ {133.333333} \ + CONFIG.PCW_TTC0_PERIPHERAL_ENABLE {1} \ + CONFIG.PCW_TTC0_TTC0_IO {EMIO} \ + CONFIG.PCW_TTC_PERIPHERAL_FREQMHZ {50} \ + CONFIG.PCW_UART1_GRP_FULL_ENABLE {0} \ + CONFIG.PCW_UART1_PERIPHERAL_ENABLE {1} \ + CONFIG.PCW_UART1_UART1_IO {MIO 48 .. 49} \ + CONFIG.PCW_UART_PERIPHERAL_DIVISOR0 {20} \ + CONFIG.PCW_UART_PERIPHERAL_FREQMHZ {50} \ + CONFIG.PCW_UART_PERIPHERAL_VALID {1} \ + CONFIG.PCW_UIPARAM_ACT_DDR_FREQ_MHZ {533.333374} \ + CONFIG.PCW_UIPARAM_DDR_BANK_ADDR_COUNT {3} \ + CONFIG.PCW_UIPARAM_DDR_BL {8} \ + CONFIG.PCW_UIPARAM_DDR_BOARD_DELAY0 {0.41} \ + CONFIG.PCW_UIPARAM_DDR_BOARD_DELAY1 {0.411} \ + CONFIG.PCW_UIPARAM_DDR_BOARD_DELAY2 {0.341} \ + CONFIG.PCW_UIPARAM_DDR_BOARD_DELAY3 {0.358} \ + CONFIG.PCW_UIPARAM_DDR_CL {7} \ + CONFIG.PCW_UIPARAM_DDR_COL_ADDR_COUNT {10} \ + CONFIG.PCW_UIPARAM_DDR_CWL {6} \ + CONFIG.PCW_UIPARAM_DDR_DEVICE_CAPACITY {2048 MBits} \ + CONFIG.PCW_UIPARAM_DDR_DQS_TO_CLK_DELAY_0 {0.025} \ + CONFIG.PCW_UIPARAM_DDR_DQS_TO_CLK_DELAY_1 {0.028} \ + CONFIG.PCW_UIPARAM_DDR_DQS_TO_CLK_DELAY_2 {0.001} \ + CONFIG.PCW_UIPARAM_DDR_DQS_TO_CLK_DELAY_3 {0.001} \ + CONFIG.PCW_UIPARAM_DDR_DRAM_WIDTH {16 Bits} \ + CONFIG.PCW_UIPARAM_DDR_FREQ_MHZ {533.333313} \ + CONFIG.PCW_UIPARAM_DDR_MEMORY_TYPE {DDR 3} \ + CONFIG.PCW_UIPARAM_DDR_PARTNO {MT41J128M16 HA-15E} \ + CONFIG.PCW_UIPARAM_DDR_ROW_ADDR_COUNT {14} \ + CONFIG.PCW_UIPARAM_DDR_SPEED_BIN {DDR3_1066F} \ + CONFIG.PCW_UIPARAM_DDR_TRAIN_DATA_EYE {1} \ + CONFIG.PCW_UIPARAM_DDR_TRAIN_READ_GATE {1} \ + CONFIG.PCW_UIPARAM_DDR_TRAIN_WRITE_LEVEL {1} \ + CONFIG.PCW_UIPARAM_DDR_T_FAW {45.0} \ + CONFIG.PCW_UIPARAM_DDR_T_RAS_MIN {36.0} \ + CONFIG.PCW_UIPARAM_DDR_T_RC {49.5} \ + CONFIG.PCW_UIPARAM_DDR_T_RCD {7} \ + CONFIG.PCW_UIPARAM_DDR_T_RP {7} \ + CONFIG.PCW_UIPARAM_DDR_USE_INTERNAL_VREF {1} \ + CONFIG.PCW_USB0_PERIPHERAL_ENABLE {1} \ + CONFIG.PCW_USB0_PERIPHERAL_FREQMHZ {60} \ + CONFIG.PCW_USB0_RESET_ENABLE {0} \ + CONFIG.PCW_USB0_USB0_IO {MIO 28 .. 39} \ + CONFIG.PCW_USB1_RESET_ENABLE {0} \ + CONFIG.PCW_USB_RESET_ENABLE {1} \ + CONFIG.PCW_USB_RESET_SELECT {Share reset pin} \ + CONFIG.PCW_USE_S_AXI_HP0 {1} \ + CONFIG.PCW_USE_S_AXI_HP1 {1} \ + CONFIG.PCW_USE_S_AXI_HP2 {1} \ + CONFIG.PCW_USE_S_AXI_HP3 {1} \ + CONFIG.preset {ZedBoard} \ + ] $processing_system7_0 + + # Create instance: ps7_0_axi_periph, and set properties + set ps7_0_axi_periph [ create_bd_cell -type ip -vlnv xilinx.com:ip:axi_interconnect:2.1 ps7_0_axi_periph ] + set_property -dict [ list \ + CONFIG.NUM_MI {7} \ + ] $ps7_0_axi_periph + + # Create instance: rst_ps7_0_100M, and set properties + set rst_ps7_0_100M [ create_bd_cell -type ip -vlnv xilinx.com:ip:proc_sys_reset:5.0 rst_ps7_0_100M ] + + # Create instance: s_dma, and set properties + set s_dma [ create_bd_cell -type ip -vlnv xilinx.com:ip:axi_dma:7.1 s_dma ] + set_property -dict [ list \ + CONFIG.c_include_mm2s_dre {1} \ + CONFIG.c_include_s2mm {0} \ + CONFIG.c_include_sg {0} \ + CONFIG.c_m_axi_mm2s_data_width {64} \ + CONFIG.c_m_axis_mm2s_tdata_width {64} \ + CONFIG.c_mm2s_burst_size {256} \ + CONFIG.c_sg_include_stscntrl_strm {0} \ + CONFIG.c_sg_length_width {16} \ + ] $s_dma + + # Create instance: u_dma, and set properties + set u_dma [ create_bd_cell -type ip -vlnv xilinx.com:ip:axi_dma:7.1 u_dma ] + set_property -dict [ list \ + CONFIG.c_include_mm2s_dre {1} \ + CONFIG.c_include_s2mm {0} \ + CONFIG.c_include_sg {0} \ + CONFIG.c_m_axi_mm2s_data_width {64} \ + CONFIG.c_m_axis_mm2s_tdata_width {64} \ + CONFIG.c_mm2s_burst_size {256} \ + CONFIG.c_sg_include_stscntrl_strm {0} \ + CONFIG.c_sg_length_width {16} \ + ] $u_dma + + # Create instance: v_dma, and set properties + set v_dma [ create_bd_cell -type ip -vlnv xilinx.com:ip:axi_dma:7.1 v_dma ] + set_property -dict [ list \ + CONFIG.c_include_mm2s_dre {1} \ + CONFIG.c_include_s2mm {0} \ + CONFIG.c_include_sg {0} \ + CONFIG.c_m_axi_mm2s_data_width {64} \ + CONFIG.c_m_axis_mm2s_tdata_width {64} \ + CONFIG.c_mm2s_burst_size {256} \ + CONFIG.c_sg_include_stscntrl_strm {0} \ + CONFIG.c_sg_length_width {16} \ + ] $v_dma + + # Create instance: x_dma, and set properties + set x_dma [ create_bd_cell -type ip -vlnv xilinx.com:ip:axi_dma:7.1 x_dma ] + set_property -dict [ list \ + CONFIG.c_include_mm2s_dre {1} \ + CONFIG.c_include_s2mm {0} \ + CONFIG.c_include_sg {0} \ + CONFIG.c_m_axi_mm2s_data_width {64} \ + CONFIG.c_m_axis_mm2s_tdata_width {64} \ + CONFIG.c_mm2s_burst_size {256} \ + CONFIG.c_sg_include_stscntrl_strm {0} \ + CONFIG.c_sg_length_width {16} \ + ] $x_dma + + # Create instance: y_dma, and set properties + set y_dma [ create_bd_cell -type ip -vlnv xilinx.com:ip:axi_dma:7.1 y_dma ] + set_property -dict [ list \ + CONFIG.c_include_mm2s {0} \ + CONFIG.c_include_s2mm_dre {1} \ + CONFIG.c_include_sg {0} \ + CONFIG.c_micro_dma {0} \ + CONFIG.c_s2mm_burst_size {128} \ + CONFIG.c_sg_include_stscntrl_strm {0} \ + CONFIG.c_sg_length_width {16} \ + ] $y_dma + + # Create interface connections + connect_bd_intf_net -intf_net HlsDenseSvd_0_y_port [get_bd_intf_pins HlsDenseSvd_0/y_port] [get_bd_intf_pins y_dma/S_AXIS_S2MM] + connect_bd_intf_net -intf_net axi_mem_intercon_1_M00_AXI [get_bd_intf_pins axi_mem_intercon_1/M00_AXI] [get_bd_intf_pins processing_system7_0/S_AXI_HP1] + connect_bd_intf_net -intf_net axi_mem_intercon_2_M00_AXI [get_bd_intf_pins axi_mem_intercon_2/M00_AXI] [get_bd_intf_pins processing_system7_0/S_AXI_HP2] + connect_bd_intf_net -intf_net axi_mem_intercon_3_M00_AXI [get_bd_intf_pins axi_mem_intercon_3/M00_AXI] [get_bd_intf_pins processing_system7_0/S_AXI_HP3] + connect_bd_intf_net -intf_net axi_mem_intercon_M00_AXI [get_bd_intf_pins axi_mem_intercon/M00_AXI] [get_bd_intf_pins processing_system7_0/S_AXI_HP0] + connect_bd_intf_net -intf_net bias_dma_M_AXIS_MM2S [get_bd_intf_pins HlsDenseSvd_0/bias_port] [get_bd_intf_pins bias_dma/M_AXIS_MM2S] + connect_bd_intf_net -intf_net bias_dma_M_AXI_MM2S [get_bd_intf_pins axi_mem_intercon/S01_AXI] [get_bd_intf_pins bias_dma/M_AXI_MM2S] + connect_bd_intf_net -intf_net processing_system7_0_DDR [get_bd_intf_ports DDR] [get_bd_intf_pins processing_system7_0/DDR] + connect_bd_intf_net -intf_net processing_system7_0_FIXED_IO [get_bd_intf_ports FIXED_IO] [get_bd_intf_pins processing_system7_0/FIXED_IO] + connect_bd_intf_net -intf_net processing_system7_0_M_AXI_GP0 [get_bd_intf_pins processing_system7_0/M_AXI_GP0] [get_bd_intf_pins ps7_0_axi_periph/S00_AXI] + connect_bd_intf_net -intf_net ps7_0_axi_periph_M00_AXI [get_bd_intf_pins bias_dma/S_AXI_LITE] [get_bd_intf_pins ps7_0_axi_periph/M00_AXI] + connect_bd_intf_net -intf_net ps7_0_axi_periph_M01_AXI [get_bd_intf_pins ps7_0_axi_periph/M01_AXI] [get_bd_intf_pins v_dma/S_AXI_LITE] + connect_bd_intf_net -intf_net ps7_0_axi_periph_M02_AXI [get_bd_intf_pins ps7_0_axi_periph/M02_AXI] [get_bd_intf_pins x_dma/S_AXI_LITE] + connect_bd_intf_net -intf_net ps7_0_axi_periph_M03_AXI [get_bd_intf_pins ps7_0_axi_periph/M03_AXI] [get_bd_intf_pins y_dma/S_AXI_LITE] + connect_bd_intf_net -intf_net ps7_0_axi_periph_M04_AXI [get_bd_intf_pins HlsDenseSvd_0/s_axi_ctrl] [get_bd_intf_pins ps7_0_axi_periph/M04_AXI] + connect_bd_intf_net -intf_net ps7_0_axi_periph_M05_AXI [get_bd_intf_pins ps7_0_axi_periph/M05_AXI] [get_bd_intf_pins s_dma/S_AXI_LITE] + connect_bd_intf_net -intf_net ps7_0_axi_periph_M06_AXI [get_bd_intf_pins ps7_0_axi_periph/M06_AXI] [get_bd_intf_pins u_dma/S_AXI_LITE] + connect_bd_intf_net -intf_net s_dma_M_AXIS_MM2S [get_bd_intf_pins HlsDenseSvd_0/s_port] [get_bd_intf_pins s_dma/M_AXIS_MM2S] + connect_bd_intf_net -intf_net s_dma_M_AXI_MM2S [get_bd_intf_pins axi_mem_intercon_1/S01_AXI] [get_bd_intf_pins s_dma/M_AXI_MM2S] + connect_bd_intf_net -intf_net u_dma_M_AXIS_MM2S [get_bd_intf_pins HlsDenseSvd_0/u_port] [get_bd_intf_pins u_dma/M_AXIS_MM2S] + connect_bd_intf_net -intf_net u_dma_M_AXI_MM2S [get_bd_intf_pins axi_mem_intercon_1/S00_AXI] [get_bd_intf_pins v_dma/M_AXI_MM2S] + connect_bd_intf_net -intf_net u_dma_M_AXI_MM2S1 [get_bd_intf_pins axi_mem_intercon_3/S00_AXI] [get_bd_intf_pins u_dma/M_AXI_MM2S] + connect_bd_intf_net -intf_net v_dma_M_AXIS_MM2S [get_bd_intf_pins HlsDenseSvd_0/v_port] [get_bd_intf_pins v_dma/M_AXIS_MM2S] + connect_bd_intf_net -intf_net x_dma_M_AXIS_MM2S [get_bd_intf_pins HlsDenseSvd_0/x_port] [get_bd_intf_pins x_dma/M_AXIS_MM2S] + connect_bd_intf_net -intf_net x_dma_M_AXI_MM2S [get_bd_intf_pins axi_mem_intercon/S00_AXI] [get_bd_intf_pins x_dma/M_AXI_MM2S] + connect_bd_intf_net -intf_net xu_dma_M_AXI_S2MM [get_bd_intf_pins axi_mem_intercon_2/S00_AXI] [get_bd_intf_pins y_dma/M_AXI_S2MM] + + # Create port connections + connect_bd_net -net processing_system7_0_FCLK_CLK0 [get_bd_pins HlsDenseSvd_0/ap_clk] [get_bd_pins axi_mem_intercon/ACLK] [get_bd_pins axi_mem_intercon/M00_ACLK] [get_bd_pins axi_mem_intercon/S00_ACLK] [get_bd_pins axi_mem_intercon/S01_ACLK] [get_bd_pins axi_mem_intercon_1/ACLK] [get_bd_pins axi_mem_intercon_1/M00_ACLK] [get_bd_pins axi_mem_intercon_1/S00_ACLK] [get_bd_pins axi_mem_intercon_1/S01_ACLK] [get_bd_pins axi_mem_intercon_2/ACLK] [get_bd_pins axi_mem_intercon_2/M00_ACLK] [get_bd_pins axi_mem_intercon_2/S00_ACLK] [get_bd_pins axi_mem_intercon_3/ACLK] [get_bd_pins axi_mem_intercon_3/M00_ACLK] [get_bd_pins axi_mem_intercon_3/S00_ACLK] [get_bd_pins bias_dma/m_axi_mm2s_aclk] [get_bd_pins bias_dma/s_axi_lite_aclk] [get_bd_pins processing_system7_0/FCLK_CLK0] [get_bd_pins processing_system7_0/M_AXI_GP0_ACLK] [get_bd_pins processing_system7_0/S_AXI_HP0_ACLK] [get_bd_pins processing_system7_0/S_AXI_HP1_ACLK] [get_bd_pins processing_system7_0/S_AXI_HP2_ACLK] [get_bd_pins processing_system7_0/S_AXI_HP3_ACLK] [get_bd_pins ps7_0_axi_periph/ACLK] [get_bd_pins ps7_0_axi_periph/M00_ACLK] [get_bd_pins ps7_0_axi_periph/M01_ACLK] [get_bd_pins ps7_0_axi_periph/M02_ACLK] [get_bd_pins ps7_0_axi_periph/M03_ACLK] [get_bd_pins ps7_0_axi_periph/M04_ACLK] [get_bd_pins ps7_0_axi_periph/M05_ACLK] [get_bd_pins ps7_0_axi_periph/M06_ACLK] [get_bd_pins ps7_0_axi_periph/S00_ACLK] [get_bd_pins rst_ps7_0_100M/slowest_sync_clk] [get_bd_pins s_dma/m_axi_mm2s_aclk] [get_bd_pins s_dma/s_axi_lite_aclk] [get_bd_pins u_dma/m_axi_mm2s_aclk] [get_bd_pins u_dma/s_axi_lite_aclk] [get_bd_pins v_dma/m_axi_mm2s_aclk] [get_bd_pins v_dma/s_axi_lite_aclk] [get_bd_pins x_dma/m_axi_mm2s_aclk] [get_bd_pins x_dma/s_axi_lite_aclk] [get_bd_pins y_dma/m_axi_s2mm_aclk] [get_bd_pins y_dma/s_axi_lite_aclk] + connect_bd_net -net processing_system7_0_FCLK_RESET0_N [get_bd_pins processing_system7_0/FCLK_RESET0_N] [get_bd_pins rst_ps7_0_100M/ext_reset_in] + connect_bd_net -net rst_ps7_0_100M_peripheral_aresetn [get_bd_pins HlsDenseSvd_0/ap_rst_n] [get_bd_pins axi_mem_intercon/ARESETN] [get_bd_pins axi_mem_intercon/M00_ARESETN] [get_bd_pins axi_mem_intercon/S00_ARESETN] [get_bd_pins axi_mem_intercon/S01_ARESETN] [get_bd_pins axi_mem_intercon_1/ARESETN] [get_bd_pins axi_mem_intercon_1/M00_ARESETN] [get_bd_pins axi_mem_intercon_1/S00_ARESETN] [get_bd_pins axi_mem_intercon_1/S01_ARESETN] [get_bd_pins axi_mem_intercon_2/ARESETN] [get_bd_pins axi_mem_intercon_2/M00_ARESETN] [get_bd_pins axi_mem_intercon_2/S00_ARESETN] [get_bd_pins axi_mem_intercon_3/ARESETN] [get_bd_pins axi_mem_intercon_3/M00_ARESETN] [get_bd_pins axi_mem_intercon_3/S00_ARESETN] [get_bd_pins bias_dma/axi_resetn] [get_bd_pins ps7_0_axi_periph/ARESETN] [get_bd_pins ps7_0_axi_periph/M00_ARESETN] [get_bd_pins ps7_0_axi_periph/M01_ARESETN] [get_bd_pins ps7_0_axi_periph/M02_ARESETN] [get_bd_pins ps7_0_axi_periph/M03_ARESETN] [get_bd_pins ps7_0_axi_periph/M04_ARESETN] [get_bd_pins ps7_0_axi_periph/M05_ARESETN] [get_bd_pins ps7_0_axi_periph/M06_ARESETN] [get_bd_pins ps7_0_axi_periph/S00_ARESETN] [get_bd_pins rst_ps7_0_100M/peripheral_aresetn] [get_bd_pins s_dma/axi_resetn] [get_bd_pins u_dma/axi_resetn] [get_bd_pins v_dma/axi_resetn] [get_bd_pins x_dma/axi_resetn] [get_bd_pins y_dma/axi_resetn] + + # Create address segments + assign_bd_address -offset 0x00000000 -range 0x20000000 -target_address_space [get_bd_addr_spaces bias_dma/Data_MM2S] [get_bd_addr_segs processing_system7_0/S_AXI_HP0/HP0_DDR_LOWOCM] -force + assign_bd_address -offset 0x40000000 -range 0x00010000 -target_address_space [get_bd_addr_spaces processing_system7_0/Data] [get_bd_addr_segs HlsDenseSvd_0/s_axi_ctrl/Reg] -force + assign_bd_address -offset 0x41E30000 -range 0x00010000 -target_address_space [get_bd_addr_spaces processing_system7_0/Data] [get_bd_addr_segs bias_dma/S_AXI_LITE/Reg] -force + assign_bd_address -offset 0x41E40000 -range 0x00010000 -target_address_space [get_bd_addr_spaces processing_system7_0/Data] [get_bd_addr_segs s_dma/S_AXI_LITE/Reg] -force + assign_bd_address -offset 0x41E00000 -range 0x00010000 -target_address_space [get_bd_addr_spaces processing_system7_0/Data] [get_bd_addr_segs v_dma/S_AXI_LITE/Reg] -force + assign_bd_address -offset 0x41E50000 -range 0x00010000 -target_address_space [get_bd_addr_spaces processing_system7_0/Data] [get_bd_addr_segs u_dma/S_AXI_LITE/Reg] -force + assign_bd_address -offset 0x41E10000 -range 0x00010000 -target_address_space [get_bd_addr_spaces processing_system7_0/Data] [get_bd_addr_segs x_dma/S_AXI_LITE/Reg] -force + assign_bd_address -offset 0x41E20000 -range 0x00010000 -target_address_space [get_bd_addr_spaces processing_system7_0/Data] [get_bd_addr_segs y_dma/S_AXI_LITE/Reg] -force + assign_bd_address -offset 0x00000000 -range 0x20000000 -target_address_space [get_bd_addr_spaces s_dma/Data_MM2S] [get_bd_addr_segs processing_system7_0/S_AXI_HP1/HP1_DDR_LOWOCM] -force + assign_bd_address -offset 0x00000000 -range 0x20000000 -target_address_space [get_bd_addr_spaces u_dma/Data_MM2S] [get_bd_addr_segs processing_system7_0/S_AXI_HP3/HP3_DDR_LOWOCM] -force + assign_bd_address -offset 0x00000000 -range 0x20000000 -target_address_space [get_bd_addr_spaces v_dma/Data_MM2S] [get_bd_addr_segs processing_system7_0/S_AXI_HP1/HP1_DDR_LOWOCM] -force + assign_bd_address -offset 0x00000000 -range 0x20000000 -target_address_space [get_bd_addr_spaces x_dma/Data_MM2S] [get_bd_addr_segs processing_system7_0/S_AXI_HP0/HP0_DDR_LOWOCM] -force + assign_bd_address -offset 0x00000000 -range 0x20000000 -target_address_space [get_bd_addr_spaces y_dma/Data_S2MM] [get_bd_addr_segs processing_system7_0/S_AXI_HP2/HP2_DDR_LOWOCM] -force + + + # Restore current instance + current_bd_instance $oldCurInst + + validate_bd_design + save_bd_design +} +# End of create_root_design() + + +################################################################## +# MAIN FLOW +################################################################## + +create_root_design "" + + diff --git a/pynq/kernel_svd/kernel_svd.ipynb b/pynq/kernel_svd/kernel_svd.ipynb new file mode 100644 index 0000000..5d5cc3d --- /dev/null +++ b/pynq/kernel_svd/kernel_svd.ipynb @@ -0,0 +1,557 @@ +{ + "cells": [ + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "# Testing DenseSvd\n", + "\n", + "This notebook will test an IP written in Vivado HLS." + ] + }, + { + "cell_type": "code", + "execution_count": 1, + "metadata": {}, + "outputs": [ + { + "data": { + "application/javascript": [ + "\n", + "try {\n", + "require(['notebook/js/codecell'], function(codecell) {\n", + " codecell.CodeCell.options_default.highlight_modes[\n", + " 'magic_text/x-csrc'] = {'reg':[/^%%microblaze/]};\n", + " Jupyter.notebook.events.one('kernel_ready.Kernel', function(){\n", + " Jupyter.notebook.get_cells().map(function(cell){\n", + " if (cell.cell_type == 'code'){ cell.auto_highlight(); } }) ;\n", + " });\n", + "});\n", + "} catch (e) {};\n" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "application/javascript": [ + "\n", + "try {\n", + "require(['notebook/js/codecell'], function(codecell) {\n", + " codecell.CodeCell.options_default.highlight_modes[\n", + " 'magic_text/x-csrc'] = {'reg':[/^%%pybind11/]};\n", + " Jupyter.notebook.events.one('kernel_ready.Kernel', function(){\n", + " Jupyter.notebook.get_cells().map(function(cell){\n", + " if (cell.cell_type == 'code'){ cell.auto_highlight(); } }) ;\n", + " });\n", + "});\n", + "} catch (e) {};\n" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "from pynq import Overlay\n", + "import pynq.lib.dma\n", + "from pynq import allocate\n", + "import numpy as np\n", + "from pynq import DefaultIP\n", + "import timeit" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Program FPGA and inspect Overlay." + ] + }, + { + "cell_type": "code", + "execution_count": 3, + "metadata": {}, + "outputs": [], + "source": [ + "overlay = Overlay(\"overlay/kernel_svd.bit\")\n", + "overlay?" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Get the kernel register map." + ] + }, + { + "cell_type": "code", + "execution_count": 4, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "RegisterMap {\n", + " CTRL = Register(AP_START=0, AP_DONE=0, AP_IDLE=1, AP_READY=0, RESERVED_1=0, AUTO_RESTART=0, RESERVED_2=0, RESERVED_3=0, RESERVED_4=0),\n", + " GIER = Register(Enable=0, RESERVED=0),\n", + " IP_IER = Register(CHAN0_INT_EN=0, CHAN1_INT_EN=0, RESERVED=0),\n", + " IP_ISR = Register(CHAN0_INT_ST=0, CHAN1_INT_ST=0, RESERVED=0),\n", + " num_active_inputs = Register(num_active_inputs=0),\n", + " input_size = Register(input_size=0),\n", + " output_size = Register(output_size=0),\n", + " num_refinements_0 = Register(num_refinements_0=0),\n", + " num_refinements_1 = Register(num_refinements_1=0)\n", + "}" + ] + }, + "execution_count": 4, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "kernel = overlay.HlsSvdKernel_0\n", + "kernel.register_map\n", + "# print(\"stream size: \", adder.stream_size)\n", + "# accel_state = adder.get_state()\n", + "# print(\"accelerator state: \", accel_state)\n", + "# dma = overlay.axi_dma_0\n", + "# dma.register_map.MM2S_DMASR\n", + "# dma.register_map.S2MM_DMACR" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Kernel IP" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "The kernel IP can be automatically bound by first creating our Kernel class. Then, the overlay can be instantiated again." + ] + }, + { + "cell_type": "code", + "execution_count": 32, + "metadata": {}, + "outputs": [], + "source": [ + "class KernelDriver(DefaultIP):\n", + " def __init__(self, description):\n", + " super().__init__(description=description)\n", + " self.max_G = 4\n", + " self.max_I = 1\n", + " self.max_H = 1\n", + " \n", + " bindto = ['xilinx.com:hls:HlsSvdKernel:1.0']\n", + "\n", + " def start_accel(self):\n", + " self.register_map.CTRL.AP_START = 1\n", + " self.write(0x0, 1)\n", + " self.write(0x0, 1)\n", + " while(self.read(0x0) % 2 == 0):\n", + " self.write(0x0, 1)\n", + " pass # Wait until start, i.e. bit 0, is set.\n", + "\n", + " def set_state(self, state):\n", + " # self.register_map.CTRL = state\n", + " # return self.register_map.CTRL\n", + " self.write(0x0, state)\n", + " return self.read(0x0)\n", + "\n", + " def get_state(self):\n", + " return self.register_map.CTRL\n", + " # return self.read(0x0)\n", + "\n", + " @property\n", + " def num_active_inputs(self):\n", + " return self.register_map.num_active_inputs\n", + "\n", + " @num_active_inputs.setter\n", + " def num_active_inputs(self, N):\n", + " self.register_map.num_active_inputs = N\n", + "\n", + " @property\n", + " def input_size(self):\n", + " return self.register_map.input_size\n", + "\n", + " @input_size.setter\n", + " def input_size(self, I):\n", + " self.register_map.input_size = I\n", + "\n", + " @property\n", + " def output_size(self):\n", + " return self.register_map.output_size\n", + "\n", + " @output_size.setter\n", + " def output_size(self, H):\n", + " self.register_map.output_size = H\n", + "\n", + " @property\n", + " def num_refinements(self):\n", + " return (self.register_map.num_refinements_0, self.register_map.num_refinements_1)\n", + "\n", + " @num_refinements.setter\n", + " def num_refinements(self, R):\n", + " self.register_map.num_refinements_0 = R[0]\n", + " self.register_map.num_refinements_1 = R[1]\n", + "\n", + "overlay = Overlay(\"overlay/kernel_svd.bit\")" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "To show the class is working, we setup the `num_refinements` using the setter method. We then read its corresponding register." + ] + }, + { + "cell_type": "code", + "execution_count": 33, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "(Register(num_refinements_0=1), Register(num_refinements_1=1))" + ] + }, + "execution_count": 33, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "kernel_svd.num_refinements = (1, 1)\n", + "kernel_svd.num_refinements" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Data Allocation and Run\n", + "\n", + "The data structures must be contiguosly allocated." + ] + }, + { + "cell_type": "code", + "execution_count": 34, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Buffers setup completed.\n", + "x_buffer.shape: (2, 8) - Bytes: 32\n", + "u_buffer.shape: (4, 8, 4) - Bytes: 256\n" + ] + } + ], + "source": [ + "data_t = np.int16\n", + "G = kernel_svd.max_G\n", + "N = 2\n", + "I = 8\n", + "H = 8\n", + "R = 4\n", + "x_buffer = pynq.allocate(shape=(N, I), dtype=data_t)\n", + "u_buffer = pynq.allocate(shape=(R, I, G), dtype=data_t)\n", + "s_buffer = pynq.allocate(shape=(R, N, G), dtype=data_t)\n", + "v_buffer = pynq.allocate(shape=(R, H, G), dtype=data_t)\n", + "y_buffer = pynq.allocate(shape=(N, G, H), dtype=data_t)\n", + "\n", + "# Generate random arrays\n", + "x_np = np.random.rand(N, I).astype(dtype=data_t)\n", + "u_np = np.random.rand(R, I, G).astype(dtype=data_t)\n", + "s_np = np.random.rand(R, N, G).astype(dtype=data_t)\n", + "v_np = np.random.rand(R, H, G).astype(dtype=data_t)\n", + "y_np = np.zeros((N, G, H)).astype(dtype=data_t)\n", + "\n", + "np.copyto(x_buffer, x_np, casting='no')\n", + "np.copyto(u_buffer, u_np, casting='no')\n", + "np.copyto(s_buffer, s_np, casting='no')\n", + "np.copyto(v_buffer, v_np, casting='no')\n", + "np.copyto(y_buffer, y_np, casting='no')\n", + "\n", + "print('Buffers setup completed.')\n", + "print(f'x_buffer.shape: {x_buffer.shape} - Bytes: {x_buffer.nbytes}')\n", + "print(f'u_buffer.shape: {u_buffer.shape} - Bytes: {u_buffer.nbytes}')" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Setup the kernel and then send the data through the DMAs." + ] + }, + { + "cell_type": "code", + "execution_count": 35, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "0x4\n", + "0x1\n" + ] + }, + { + "data": { + "text/plain": [ + "RegisterMap {\n", + " CTRL = Register(AP_START=1, AP_DONE=0, AP_IDLE=0, AP_READY=0, RESERVED_1=0, AUTO_RESTART=0, RESERVED_2=0, RESERVED_3=0, RESERVED_4=0),\n", + " GIER = Register(Enable=0, RESERVED=0),\n", + " IP_IER = Register(CHAN0_INT_EN=0, CHAN1_INT_EN=0, RESERVED=0),\n", + " IP_ISR = Register(CHAN0_INT_ST=0, CHAN1_INT_ST=0, RESERVED=0),\n", + " num_active_inputs = Register(num_active_inputs=2),\n", + " input_size = Register(input_size=8),\n", + " output_size = Register(output_size=8),\n", + " num_refinements_0 = Register(num_refinements_0=4),\n", + " num_refinements_1 = Register(num_refinements_1=4)\n", + "}" + ] + }, + "execution_count": 35, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "kernel_svd.num_active_inputs = N\n", + "kernel_svd.input_size = I\n", + "kernel_svd.output_size = H\n", + "kernel_svd.num_refinements = (R, R)\n", + "print(kernel_svd.get_state())\n", + "kernel_svd.start_accel()\n", + "print(kernel_svd.get_state())\n", + "kernel_svd.register_map" + ] + }, + { + "cell_type": "code", + "execution_count": 36, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Starting transfer:\n", + "Waiting transfer completion.\n", + "x_DMA done.\n", + "u_DMA done.\n", + "s_DMA done.\n", + "v_DMA done.\n" + ] + }, + { + "ename": "KeyboardInterrupt", + "evalue": "", + "output_type": "error", + "traceback": [ + "\u001b[0;31m---------------------------------------------------------------------------\u001b[0m", + "\u001b[0;31mKeyboardInterrupt\u001b[0m Traceback (most recent call last)", + "\u001b[0;32m\u001b[0m in \u001b[0;36m\u001b[0;34m()\u001b[0m\n\u001b[1;32m 16\u001b[0m \u001b[0moverlay\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mv_dma\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0msendchannel\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mwait\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 17\u001b[0m \u001b[0mprint\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34mf'v_DMA done.'\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m---> 18\u001b[0;31m \u001b[0moverlay\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0my_dma\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mrecvchannel\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mwait\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 19\u001b[0m \u001b[0mprint\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34mf'y_DMA done.'\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 20\u001b[0m \u001b[0mprint\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m'Done.\\n'\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n", + "\u001b[0;32m/usr/local/lib/python3.6/dist-packages/pynq/lib/dma.py\u001b[0m in \u001b[0;36mwait\u001b[0;34m(self)\u001b[0m\n\u001b[1;32m 206\u001b[0m \u001b[0;32mwhile\u001b[0m \u001b[0;32mTrue\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 207\u001b[0m \u001b[0merror\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0m_mmio\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mread\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0m_offset\u001b[0m \u001b[0;34m+\u001b[0m \u001b[0;36m4\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m--> 208\u001b[0;31m \u001b[0;32mif\u001b[0m \u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0merror\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 209\u001b[0m \u001b[0;32mif\u001b[0m \u001b[0merror\u001b[0m \u001b[0;34m&\u001b[0m \u001b[0;36m0x10\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 210\u001b[0m raise RuntimeError(\n", + "\u001b[0;32m/usr/local/lib/python3.6/dist-packages/pynq/lib/dma.py\u001b[0m in \u001b[0;36merror\u001b[0;34m(self)\u001b[0m\n\u001b[1;32m 115\u001b[0m \"\"\"True if DMA engine is in an error state\n\u001b[1;32m 116\u001b[0m \"\"\"\n\u001b[0;32m--> 117\u001b[0;31m \u001b[0;32mreturn\u001b[0m \u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0m_mmio\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mread\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0m_offset\u001b[0m \u001b[0;34m+\u001b[0m \u001b[0;36m4\u001b[0m\u001b[0;34m)\u001b[0m \u001b[0;34m&\u001b[0m \u001b[0;36m0x70\u001b[0m \u001b[0;34m!=\u001b[0m \u001b[0;36m0x0\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 118\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 119\u001b[0m \u001b[0;32mdef\u001b[0m \u001b[0mstart\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mself\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n", + "\u001b[0;32m/usr/local/lib/python3.6/dist-packages/pynq/mmio.py\u001b[0m in \u001b[0;36mread\u001b[0;34m(self, offset, length, word_order)\u001b[0m\n\u001b[1;32m 108\u001b[0m \u001b[0;32mraise\u001b[0m \u001b[0mValueError\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m\"Device does not have capabilities for MMIO\"\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 109\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m--> 110\u001b[0;31m \u001b[0;32mdef\u001b[0m \u001b[0mread\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mself\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0moffset\u001b[0m\u001b[0;34m=\u001b[0m\u001b[0;36m0\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mlength\u001b[0m\u001b[0;34m=\u001b[0m\u001b[0;36m4\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mword_order\u001b[0m\u001b[0;34m=\u001b[0m\u001b[0;34m'little'\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 111\u001b[0m \"\"\"The method to read data from MMIO.\n\u001b[1;32m 112\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n", + "\u001b[0;31mKeyboardInterrupt\u001b[0m: " + ] + } + ], + "source": [ + "# Transfer\n", + "print('Starting transfer:')\n", + "overlay.x_dma.sendchannel.transfer(x_buffer)\n", + "overlay.u_dma.sendchannel.transfer(u_buffer)\n", + "overlay.s_dma.sendchannel.transfer(s_buffer)\n", + "overlay.v_dma.sendchannel.transfer(v_buffer)\n", + "overlay.y_dma.recvchannel.transfer(y_buffer)\n", + "# Then wait\n", + "print('Waiting transfer completion.')\n", + "overlay.x_dma.sendchannel.wait()\n", + "print(f'x_DMA done.')\n", + "overlay.u_dma.sendchannel.wait()\n", + "print(f'u_DMA done.')\n", + "overlay.s_dma.sendchannel.wait()\n", + "print(f's_DMA done.')\n", + "overlay.v_dma.sendchannel.wait()\n", + "print(f'v_DMA done.')\n", + "overlay.y_dma.recvchannel.wait()\n", + "print(f'y_DMA done.')\n", + "print('Done.\\n')\n", + "\n", + "print(f'y_buffer.shape: {y_buffer.shape}')" + ] + }, + { + "cell_type": "code", + "execution_count": 11, + "metadata": {}, + "outputs": [], + "source": [ + "def run_kernel(R, x_buffer, u_buffer, xu_buffer):\n", + " kernel_u.num_refinements = R\n", + " kernel_u.start_accel()\n", + " # Transfer\n", + " overlay.x_dma.sendchannel.transfer(x_buffer)\n", + " overlay.u_dma.sendchannel.transfer(u_buffer)\n", + " overlay.xu_dma.recvchannel.transfer(xu_buffer)\n", + " # Then wait\n", + " overlay.x_dma.sendchannel.wait()\n", + " overlay.u_dma.sendchannel.wait()\n", + " overlay.xu_dma.recvchannel.wait()" + ] + }, + { + "cell_type": "code", + "execution_count": 12, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "10 loops, best of 3: 148 ms per loop\n" + ] + } + ], + "source": [ + "%timeit run_kernel(R, x_buffer, u_buffer, xu_buffer)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Checking Correctness\n", + "\n", + "We first find the proper reshape mechanisms:" + ] + }, + { + "cell_type": "code", + "execution_count": 15, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "[-1.25823639 1.03248304 -0.3389279 -0.26103506] [-1.25823639 1.03248304 -0.3389279 -0.26103506]\n", + "0.0\n", + "[ 0.38526848 -0.34712276 -0.39317614 0.77762274] [ 0.38526848 -0.34712276 -0.39317614 0.77762274]\n", + "0.0\n", + "(128, 4, 2)\n" + ] + } + ], + "source": [ + "# =============================================================================\n", + "# Reshape: (R, I, G) => (R, I // Tu, G, Tu)\n", + "# =============================================================================\n", + "u = np.random.randn(R, I, G)\n", + "u_tmp = u.copy()\n", + "u_tmp = np.transpose(u_tmp.reshape(R, I // Tu, Tu, G), (0, 1, 3, 2))\n", + "print(u[0, 0:4, 0], u_tmp[0, 0, 0, 0:4])\n", + "print(u[0, 3, 0] - u_tmp[0, 0, 0, 3])\n", + "\n", + "# =============================================================================\n", + "# Reshape: (R, I // Tu, G, Tu) => (I, G, R)\n", + "# =============================================================================\n", + "u = np.random.randn(R, I // Tu, G, Tu)\n", + "u_tmp = u.copy()\n", + "u_tmp = np.transpose(u_tmp, (1, 3, 2, 0)).reshape(I, G, R)\n", + "print(u[0, 0, 0, 0:4], u_tmp[0:4, 0, 0])\n", + "print(u[0, 0, 0, 3] - u_tmp[3, 0, 0])\n", + "\n", + "x = np.random.randn(N, I)\n", + "u = np.random.randn(I, G, R)\n", + "x = (x * 2).astype(np.int16)\n", + "u = (u * 2).astype(np.int16)\n", + "\n", + "xu = np.transpose(np.tensordot(x, u, axes=1), (2, 1, 0))\n", + "print(xu.shape)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "We now check the Numpy computation against the FPGA result." + ] + }, + { + "cell_type": "code", + "execution_count": 16, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "\n", + "All equal: True\n", + "gold[0]: [[ -3634 -22667]\n", + " [ 31065 15347]\n", + " [ 22140 -9595]\n", + " [ 9106 26136]]\n", + "fpga[0]: [[ -3634 -22667]\n", + " [ 31065 15347]\n", + " [ 22140 -9595]\n", + " [ 9106 26136]]\n" + ] + } + ], + "source": [ + "u_tmp = np.transpose(u_buffer, (1, 3, 2, 0)).reshape(I, G, R)\n", + "xu_gold = np.transpose(np.tensordot(x_buffer, u_tmp, axes=1), (2, 1, 0))\n", + "print('\\nAll equal:', np.allclose(xu_buffer, xu_gold))\n", + "print('gold[0]: ', xu_gold[0])\n", + "print('fpga[0]: ', xu_buffer[0])" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [] + } + ], + "metadata": { + "kernelspec": { + "display_name": "Python 3", + "language": "python", + "name": "python3" + }, + "language_info": { + "codemirror_mode": { + "name": "ipython", + "version": 3 + }, + "file_extension": ".py", + "mimetype": "text/x-python", + "name": "python", + "nbconvert_exporter": "python", + "pygments_lexer": "ipython3", + "version": "3.6.5" + } + }, + "nbformat": 4, + "nbformat_minor": 2 +} diff --git a/pynq/kernel_svd/overlay/kernel_svd.bit b/pynq/kernel_svd/overlay/kernel_svd.bit new file mode 100644 index 0000000..7860370 Binary files /dev/null and b/pynq/kernel_svd/overlay/kernel_svd.bit differ diff --git a/pynq/kernel_svd/overlay/kernel_svd.hwh b/pynq/kernel_svd/overlay/kernel_svd.hwh new file mode 100644 index 0000000..6397772 --- /dev/null +++ b/pynq/kernel_svd/overlay/kernel_svd.hwh @@ -0,0 +1,13430 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/pynq/kernel_svd/overlay/kernel_svd.tcl b/pynq/kernel_svd/overlay/kernel_svd.tcl new file mode 100644 index 0000000..fbb7ef4 --- /dev/null +++ b/pynq/kernel_svd/overlay/kernel_svd.tcl @@ -0,0 +1,762 @@ + +################################################################ +# This is a generated script based on design: design_1 +# +# Though there are limitations about the generated script, +# the main purpose of this utility is to make learning +# IP Integrator Tcl commands easier. +################################################################ + +namespace eval _tcl { +proc get_script_folder {} { + set script_path [file normalize [info script]] + set script_folder [file dirname $script_path] + return $script_folder +} +} +variable script_folder +set script_folder [_tcl::get_script_folder] + +################################################################ +# Check if script is running in correct Vivado version. +################################################################ +set scripts_vivado_version 2020.2 +set current_vivado_version [version -short] + +if { [string first $scripts_vivado_version $current_vivado_version] == -1 } { + puts "" + catch {common::send_gid_msg -ssname BD::TCL -id 2041 -severity "ERROR" "This script was generated using Vivado <$scripts_vivado_version> and is being run in <$current_vivado_version> of Vivado. Please run the script in Vivado <$scripts_vivado_version> then open the design in Vivado <$current_vivado_version>. Upgrade the design by running \"Tools => Report => Report IP Status...\", then run write_bd_tcl to create an updated script."} + + return 1 +} + +################################################################ +# START +################################################################ + +# To test this script, run the following commands from Vivado Tcl console: +# source design_1_script.tcl + +# If there is no project opened, this script will create a +# project, but make sure you do not have an existing project +# <./myproj/project_1.xpr> in the current working folder. + +set list_projs [get_projects -quiet] +if { $list_projs eq "" } { + create_project project_1 myproj -part xc7z020clg484-1 + set_property BOARD_PART em.avnet.com:zed:part0:1.4 [current_project] +} + + +# CHANGE DESIGN NAME HERE +variable design_name +set design_name design_1 + +# If you do not already have an existing IP Integrator design open, +# you can create a design using the following command: +# create_bd_design $design_name + +# Creating design if needed +set errMsg "" +set nRet 0 + +set cur_design [current_bd_design -quiet] +set list_cells [get_bd_cells -quiet] + +if { ${design_name} eq "" } { + # USE CASES: + # 1) Design_name not set + + set errMsg "Please set the variable to a non-empty value." + set nRet 1 + +} elseif { ${cur_design} ne "" && ${list_cells} eq "" } { + # USE CASES: + # 2): Current design opened AND is empty AND names same. + # 3): Current design opened AND is empty AND names diff; design_name NOT in project. + # 4): Current design opened AND is empty AND names diff; design_name exists in project. + + if { $cur_design ne $design_name } { + common::send_gid_msg -ssname BD::TCL -id 2001 -severity "INFO" "Changing value of from <$design_name> to <$cur_design> since current design is empty." + set design_name [get_property NAME $cur_design] + } + common::send_gid_msg -ssname BD::TCL -id 2002 -severity "INFO" "Constructing design in IPI design <$cur_design>..." + +} elseif { ${cur_design} ne "" && $list_cells ne "" && $cur_design eq $design_name } { + # USE CASES: + # 5) Current design opened AND has components AND same names. + + set errMsg "Design <$design_name> already exists in your project, please set the variable to another value." + set nRet 1 +} elseif { [get_files -quiet ${design_name}.bd] ne "" } { + # USE CASES: + # 6) Current opened design, has components, but diff names, design_name exists in project. + # 7) No opened design, design_name exists in project. + + set errMsg "Design <$design_name> already exists in your project, please set the variable to another value." + set nRet 2 + +} else { + # USE CASES: + # 8) No opened design, design_name not in project. + # 9) Current opened design, has components, but diff names, design_name not in project. + + common::send_gid_msg -ssname BD::TCL -id 2003 -severity "INFO" "Currently there is no design <$design_name> in project, so creating one..." + + create_bd_design $design_name + + common::send_gid_msg -ssname BD::TCL -id 2004 -severity "INFO" "Making design <$design_name> as current_bd_design." + current_bd_design $design_name + +} + +common::send_gid_msg -ssname BD::TCL -id 2005 -severity "INFO" "Currently the variable is equal to \"$design_name\"." + +if { $nRet != 0 } { + catch {common::send_gid_msg -ssname BD::TCL -id 2006 -severity "ERROR" $errMsg} + return $nRet +} + +set bCheckIPsPassed 1 +################################################################## +# CHECK IPs +################################################################## +set bCheckIPs 1 +if { $bCheckIPs == 1 } { + set list_check_ips "\ +xilinx.com:hls:HlsSvdKernel:1.0\ +xilinx.com:ip:processing_system7:5.5\ +xilinx.com:ip:proc_sys_reset:5.0\ +xilinx.com:ip:axi_dma:7.1\ +" + + set list_ips_missing "" + common::send_gid_msg -ssname BD::TCL -id 2011 -severity "INFO" "Checking if the following IPs exist in the project's IP catalog: $list_check_ips ." + + foreach ip_vlnv $list_check_ips { + set ip_obj [get_ipdefs -all $ip_vlnv] + if { $ip_obj eq "" } { + lappend list_ips_missing $ip_vlnv + } + } + + if { $list_ips_missing ne "" } { + catch {common::send_gid_msg -ssname BD::TCL -id 2012 -severity "ERROR" "The following IPs are not found in the IP Catalog:\n $list_ips_missing\n\nResolution: Please add the repository containing the IP(s) to the project." } + set bCheckIPsPassed 0 + } + +} + +if { $bCheckIPsPassed != 1 } { + common::send_gid_msg -ssname BD::TCL -id 2023 -severity "WARNING" "Will not continue with creation of design due to the error(s) above." + return 3 +} + +################################################################## +# DESIGN PROCs +################################################################## + + + +# Procedure to create entire design; Provide argument to make +# procedure reusable. If parentCell is "", will use root. +proc create_root_design { parentCell } { + + variable script_folder + variable design_name + + if { $parentCell eq "" } { + set parentCell [get_bd_cells /] + } + + # Get object for parentCell + set parentObj [get_bd_cells $parentCell] + if { $parentObj == "" } { + catch {common::send_gid_msg -ssname BD::TCL -id 2090 -severity "ERROR" "Unable to find parent cell <$parentCell>!"} + return + } + + # Make sure parentObj is hier blk + set parentType [get_property TYPE $parentObj] + if { $parentType ne "hier" } { + catch {common::send_gid_msg -ssname BD::TCL -id 2091 -severity "ERROR" "Parent <$parentObj> has TYPE = <$parentType>. Expected to be ."} + return + } + + # Save current instance; Restore later + set oldCurInst [current_bd_instance .] + + # Set parent object as current + current_bd_instance $parentObj + + + # Create interface ports + set DDR [ create_bd_intf_port -mode Master -vlnv xilinx.com:interface:ddrx_rtl:1.0 DDR ] + + set FIXED_IO [ create_bd_intf_port -mode Master -vlnv xilinx.com:display_processing_system7:fixedio_rtl:1.0 FIXED_IO ] + + + # Create ports + + # Create instance: HlsSvdKernel_0, and set properties + set HlsSvdKernel_0 [ create_bd_cell -type ip -vlnv xilinx.com:hls:HlsSvdKernel:1.0 HlsSvdKernel_0 ] + + # Create instance: axi_mem_intercon, and set properties + set axi_mem_intercon [ create_bd_cell -type ip -vlnv xilinx.com:ip:axi_interconnect:2.1 axi_mem_intercon ] + set_property -dict [ list \ + CONFIG.NUM_MI {1} \ + CONFIG.NUM_SI {1} \ + ] $axi_mem_intercon + + # Create instance: axi_mem_intercon_1, and set properties + set axi_mem_intercon_1 [ create_bd_cell -type ip -vlnv xilinx.com:ip:axi_interconnect:2.1 axi_mem_intercon_1 ] + set_property -dict [ list \ + CONFIG.NUM_MI {1} \ + CONFIG.NUM_SI {2} \ + ] $axi_mem_intercon_1 + + # Create instance: axi_mem_intercon_2, and set properties + set axi_mem_intercon_2 [ create_bd_cell -type ip -vlnv xilinx.com:ip:axi_interconnect:2.1 axi_mem_intercon_2 ] + set_property -dict [ list \ + CONFIG.NUM_MI {1} \ + ] $axi_mem_intercon_2 + + # Create instance: axi_mem_intercon_3, and set properties + set axi_mem_intercon_3 [ create_bd_cell -type ip -vlnv xilinx.com:ip:axi_interconnect:2.1 axi_mem_intercon_3 ] + set_property -dict [ list \ + CONFIG.NUM_MI {1} \ + ] $axi_mem_intercon_3 + + # Create instance: processing_system7_0, and set properties + set processing_system7_0 [ create_bd_cell -type ip -vlnv xilinx.com:ip:processing_system7:5.5 processing_system7_0 ] + set_property -dict [ list \ + CONFIG.PCW_ACT_APU_PERIPHERAL_FREQMHZ {666.666687} \ + CONFIG.PCW_ACT_CAN_PERIPHERAL_FREQMHZ {10.000000} \ + CONFIG.PCW_ACT_DCI_PERIPHERAL_FREQMHZ {10.158730} \ + CONFIG.PCW_ACT_ENET0_PERIPHERAL_FREQMHZ {125.000000} \ + CONFIG.PCW_ACT_ENET1_PERIPHERAL_FREQMHZ {10.000000} \ + CONFIG.PCW_ACT_FPGA0_PERIPHERAL_FREQMHZ {100.000000} \ + CONFIG.PCW_ACT_FPGA1_PERIPHERAL_FREQMHZ {10.000000} \ + CONFIG.PCW_ACT_FPGA2_PERIPHERAL_FREQMHZ {10.000000} \ + CONFIG.PCW_ACT_FPGA3_PERIPHERAL_FREQMHZ {10.000000} \ + CONFIG.PCW_ACT_PCAP_PERIPHERAL_FREQMHZ {200.000000} \ + CONFIG.PCW_ACT_QSPI_PERIPHERAL_FREQMHZ {200.000000} \ + CONFIG.PCW_ACT_SDIO_PERIPHERAL_FREQMHZ {50.000000} \ + CONFIG.PCW_ACT_SMC_PERIPHERAL_FREQMHZ {10.000000} \ + CONFIG.PCW_ACT_SPI_PERIPHERAL_FREQMHZ {10.000000} \ + CONFIG.PCW_ACT_TPIU_PERIPHERAL_FREQMHZ {200.000000} \ + CONFIG.PCW_ACT_TTC0_CLK0_PERIPHERAL_FREQMHZ {111.111115} \ + CONFIG.PCW_ACT_TTC0_CLK1_PERIPHERAL_FREQMHZ {111.111115} \ + CONFIG.PCW_ACT_TTC0_CLK2_PERIPHERAL_FREQMHZ {111.111115} \ + CONFIG.PCW_ACT_TTC1_CLK0_PERIPHERAL_FREQMHZ {111.111115} \ + CONFIG.PCW_ACT_TTC1_CLK1_PERIPHERAL_FREQMHZ {111.111115} \ + CONFIG.PCW_ACT_TTC1_CLK2_PERIPHERAL_FREQMHZ {111.111115} \ + CONFIG.PCW_ACT_UART_PERIPHERAL_FREQMHZ {50.000000} \ + CONFIG.PCW_ACT_WDT_PERIPHERAL_FREQMHZ {111.111115} \ + CONFIG.PCW_APU_PERIPHERAL_FREQMHZ {666.666667} \ + CONFIG.PCW_ARMPLL_CTRL_FBDIV {40} \ + CONFIG.PCW_CAN_PERIPHERAL_DIVISOR0 {1} \ + CONFIG.PCW_CAN_PERIPHERAL_DIVISOR1 {1} \ + CONFIG.PCW_CAN_PERIPHERAL_FREQMHZ {100} \ + CONFIG.PCW_CLK0_FREQ {100000000} \ + CONFIG.PCW_CLK1_FREQ {10000000} \ + CONFIG.PCW_CLK2_FREQ {10000000} \ + CONFIG.PCW_CLK3_FREQ {10000000} \ + CONFIG.PCW_CPU_CPU_PLL_FREQMHZ {1333.333} \ + CONFIG.PCW_CPU_PERIPHERAL_DIVISOR0 {2} \ + CONFIG.PCW_DCI_PERIPHERAL_DIVISOR0 {15} \ + CONFIG.PCW_DCI_PERIPHERAL_DIVISOR1 {7} \ + CONFIG.PCW_DDRPLL_CTRL_FBDIV {32} \ + CONFIG.PCW_DDR_DDR_PLL_FREQMHZ {1066.667} \ + CONFIG.PCW_DDR_PERIPHERAL_DIVISOR0 {2} \ + CONFIG.PCW_DDR_RAM_HIGHADDR {0x1FFFFFFF} \ + CONFIG.PCW_ENET0_ENET0_IO {MIO 16 .. 27} \ + CONFIG.PCW_ENET0_GRP_MDIO_ENABLE {1} \ + CONFIG.PCW_ENET0_GRP_MDIO_IO {MIO 52 .. 53} \ + CONFIG.PCW_ENET0_PERIPHERAL_DIVISOR0 {8} \ + CONFIG.PCW_ENET0_PERIPHERAL_DIVISOR1 {1} \ + CONFIG.PCW_ENET0_PERIPHERAL_ENABLE {1} \ + CONFIG.PCW_ENET0_PERIPHERAL_FREQMHZ {1000 Mbps} \ + CONFIG.PCW_ENET0_RESET_ENABLE {0} \ + CONFIG.PCW_ENET1_PERIPHERAL_DIVISOR0 {1} \ + CONFIG.PCW_ENET1_PERIPHERAL_DIVISOR1 {1} \ + CONFIG.PCW_ENET1_RESET_ENABLE {0} \ + CONFIG.PCW_ENET_RESET_ENABLE {1} \ + CONFIG.PCW_ENET_RESET_SELECT {Share reset pin} \ + CONFIG.PCW_EN_EMIO_TTC0 {1} \ + CONFIG.PCW_EN_ENET0 {1} \ + CONFIG.PCW_EN_GPIO {1} \ + CONFIG.PCW_EN_QSPI {1} \ + CONFIG.PCW_EN_SDIO0 {1} \ + CONFIG.PCW_EN_TTC0 {1} \ + CONFIG.PCW_EN_UART1 {1} \ + CONFIG.PCW_EN_USB0 {1} \ + CONFIG.PCW_FCLK0_PERIPHERAL_DIVISOR0 {5} \ + CONFIG.PCW_FCLK0_PERIPHERAL_DIVISOR1 {2} \ + CONFIG.PCW_FCLK1_PERIPHERAL_DIVISOR0 {1} \ + CONFIG.PCW_FCLK1_PERIPHERAL_DIVISOR1 {1} \ + CONFIG.PCW_FCLK2_PERIPHERAL_DIVISOR0 {1} \ + CONFIG.PCW_FCLK2_PERIPHERAL_DIVISOR1 {1} \ + CONFIG.PCW_FCLK3_PERIPHERAL_DIVISOR0 {1} \ + CONFIG.PCW_FCLK3_PERIPHERAL_DIVISOR1 {1} \ + CONFIG.PCW_FPGA0_PERIPHERAL_FREQMHZ {100.000000} \ + CONFIG.PCW_FPGA1_PERIPHERAL_FREQMHZ {150.000000} \ + CONFIG.PCW_FPGA2_PERIPHERAL_FREQMHZ {50} \ + CONFIG.PCW_FPGA_FCLK0_ENABLE {1} \ + CONFIG.PCW_FPGA_FCLK1_ENABLE {0} \ + CONFIG.PCW_FPGA_FCLK2_ENABLE {0} \ + CONFIG.PCW_FPGA_FCLK3_ENABLE {0} \ + CONFIG.PCW_GPIO_MIO_GPIO_ENABLE {1} \ + CONFIG.PCW_GPIO_MIO_GPIO_IO {MIO} \ + CONFIG.PCW_I2C0_GRP_INT_ENABLE {0} \ + CONFIG.PCW_I2C0_PERIPHERAL_ENABLE {0} \ + CONFIG.PCW_I2C0_RESET_ENABLE {0} \ + CONFIG.PCW_I2C1_RESET_ENABLE {0} \ + CONFIG.PCW_I2C_PERIPHERAL_FREQMHZ {25} \ + CONFIG.PCW_I2C_RESET_ENABLE {1} \ + CONFIG.PCW_IOPLL_CTRL_FBDIV {30} \ + CONFIG.PCW_IO_IO_PLL_FREQMHZ {1000.000} \ + CONFIG.PCW_MIO_0_DIRECTION {inout} \ + CONFIG.PCW_MIO_0_IOTYPE {LVCMOS 3.3V} \ + CONFIG.PCW_MIO_0_PULLUP {disabled} \ + CONFIG.PCW_MIO_0_SLEW {slow} \ + CONFIG.PCW_MIO_10_DIRECTION {inout} \ + CONFIG.PCW_MIO_10_IOTYPE {LVCMOS 3.3V} \ + CONFIG.PCW_MIO_10_PULLUP {disabled} \ + CONFIG.PCW_MIO_10_SLEW {slow} \ + CONFIG.PCW_MIO_11_DIRECTION {inout} \ + CONFIG.PCW_MIO_11_IOTYPE {LVCMOS 3.3V} \ + CONFIG.PCW_MIO_11_PULLUP {disabled} \ + CONFIG.PCW_MIO_11_SLEW {slow} \ + CONFIG.PCW_MIO_12_DIRECTION {inout} \ + CONFIG.PCW_MIO_12_IOTYPE {LVCMOS 3.3V} \ + CONFIG.PCW_MIO_12_PULLUP {disabled} \ + CONFIG.PCW_MIO_12_SLEW {slow} \ + CONFIG.PCW_MIO_13_DIRECTION {inout} \ + CONFIG.PCW_MIO_13_IOTYPE {LVCMOS 3.3V} \ + CONFIG.PCW_MIO_13_PULLUP {disabled} \ + CONFIG.PCW_MIO_13_SLEW {slow} \ + CONFIG.PCW_MIO_14_DIRECTION {inout} \ + CONFIG.PCW_MIO_14_IOTYPE {LVCMOS 3.3V} \ + CONFIG.PCW_MIO_14_PULLUP {disabled} \ + CONFIG.PCW_MIO_14_SLEW {slow} \ + CONFIG.PCW_MIO_15_DIRECTION {inout} \ + CONFIG.PCW_MIO_15_IOTYPE {LVCMOS 3.3V} \ + CONFIG.PCW_MIO_15_PULLUP {disabled} \ + CONFIG.PCW_MIO_15_SLEW {slow} \ + CONFIG.PCW_MIO_16_DIRECTION {out} \ + CONFIG.PCW_MIO_16_IOTYPE {LVCMOS 1.8V} \ + CONFIG.PCW_MIO_16_PULLUP {disabled} \ + CONFIG.PCW_MIO_16_SLEW {fast} \ + CONFIG.PCW_MIO_17_DIRECTION {out} \ + CONFIG.PCW_MIO_17_IOTYPE {LVCMOS 1.8V} \ + CONFIG.PCW_MIO_17_PULLUP {disabled} \ + CONFIG.PCW_MIO_17_SLEW {fast} \ + CONFIG.PCW_MIO_18_DIRECTION {out} \ + CONFIG.PCW_MIO_18_IOTYPE {LVCMOS 1.8V} \ + CONFIG.PCW_MIO_18_PULLUP {disabled} \ + CONFIG.PCW_MIO_18_SLEW {fast} \ + CONFIG.PCW_MIO_19_DIRECTION {out} \ + CONFIG.PCW_MIO_19_IOTYPE {LVCMOS 1.8V} \ + CONFIG.PCW_MIO_19_PULLUP {disabled} \ + CONFIG.PCW_MIO_19_SLEW {fast} \ + CONFIG.PCW_MIO_1_DIRECTION {out} \ + CONFIG.PCW_MIO_1_IOTYPE {LVCMOS 3.3V} \ + CONFIG.PCW_MIO_1_PULLUP {disabled} \ + CONFIG.PCW_MIO_1_SLEW {fast} \ + CONFIG.PCW_MIO_20_DIRECTION {out} \ + CONFIG.PCW_MIO_20_IOTYPE {LVCMOS 1.8V} \ + CONFIG.PCW_MIO_20_PULLUP {disabled} \ + CONFIG.PCW_MIO_20_SLEW {fast} \ + CONFIG.PCW_MIO_21_DIRECTION {out} \ + CONFIG.PCW_MIO_21_IOTYPE {LVCMOS 1.8V} \ + CONFIG.PCW_MIO_21_PULLUP {disabled} \ + CONFIG.PCW_MIO_21_SLEW {fast} \ + CONFIG.PCW_MIO_22_DIRECTION {in} \ + CONFIG.PCW_MIO_22_IOTYPE {LVCMOS 1.8V} \ + CONFIG.PCW_MIO_22_PULLUP {disabled} \ + CONFIG.PCW_MIO_22_SLEW {fast} \ + CONFIG.PCW_MIO_23_DIRECTION {in} \ + CONFIG.PCW_MIO_23_IOTYPE {LVCMOS 1.8V} \ + CONFIG.PCW_MIO_23_PULLUP {disabled} \ + CONFIG.PCW_MIO_23_SLEW {fast} \ + CONFIG.PCW_MIO_24_DIRECTION {in} \ + CONFIG.PCW_MIO_24_IOTYPE {LVCMOS 1.8V} \ + CONFIG.PCW_MIO_24_PULLUP {disabled} \ + CONFIG.PCW_MIO_24_SLEW {fast} \ + CONFIG.PCW_MIO_25_DIRECTION {in} \ + CONFIG.PCW_MIO_25_IOTYPE {LVCMOS 1.8V} \ + CONFIG.PCW_MIO_25_PULLUP {disabled} \ + CONFIG.PCW_MIO_25_SLEW {fast} \ + CONFIG.PCW_MIO_26_DIRECTION {in} \ + CONFIG.PCW_MIO_26_IOTYPE {LVCMOS 1.8V} \ + CONFIG.PCW_MIO_26_PULLUP {disabled} \ + CONFIG.PCW_MIO_26_SLEW {fast} \ + CONFIG.PCW_MIO_27_DIRECTION {in} \ + CONFIG.PCW_MIO_27_IOTYPE {LVCMOS 1.8V} \ + CONFIG.PCW_MIO_27_PULLUP {disabled} \ + CONFIG.PCW_MIO_27_SLEW {fast} \ + CONFIG.PCW_MIO_28_DIRECTION {inout} \ + CONFIG.PCW_MIO_28_IOTYPE {LVCMOS 1.8V} \ + CONFIG.PCW_MIO_28_PULLUP {disabled} \ + CONFIG.PCW_MIO_28_SLEW {fast} \ + CONFIG.PCW_MIO_29_DIRECTION {in} \ + CONFIG.PCW_MIO_29_IOTYPE {LVCMOS 1.8V} \ + CONFIG.PCW_MIO_29_PULLUP {disabled} \ + CONFIG.PCW_MIO_29_SLEW {fast} \ + CONFIG.PCW_MIO_2_DIRECTION {inout} \ + CONFIG.PCW_MIO_2_IOTYPE {LVCMOS 3.3V} \ + CONFIG.PCW_MIO_2_PULLUP {disabled} \ + CONFIG.PCW_MIO_2_SLEW {fast} \ + CONFIG.PCW_MIO_30_DIRECTION {out} \ + CONFIG.PCW_MIO_30_IOTYPE {LVCMOS 1.8V} \ + CONFIG.PCW_MIO_30_PULLUP {disabled} \ + CONFIG.PCW_MIO_30_SLEW {fast} \ + CONFIG.PCW_MIO_31_DIRECTION {in} \ + CONFIG.PCW_MIO_31_IOTYPE {LVCMOS 1.8V} \ + CONFIG.PCW_MIO_31_PULLUP {disabled} \ + CONFIG.PCW_MIO_31_SLEW {fast} \ + CONFIG.PCW_MIO_32_DIRECTION {inout} \ + CONFIG.PCW_MIO_32_IOTYPE {LVCMOS 1.8V} \ + CONFIG.PCW_MIO_32_PULLUP {disabled} \ + CONFIG.PCW_MIO_32_SLEW {fast} \ + CONFIG.PCW_MIO_33_DIRECTION {inout} \ + CONFIG.PCW_MIO_33_IOTYPE {LVCMOS 1.8V} \ + CONFIG.PCW_MIO_33_PULLUP {disabled} \ + CONFIG.PCW_MIO_33_SLEW {fast} \ + CONFIG.PCW_MIO_34_DIRECTION {inout} \ + CONFIG.PCW_MIO_34_IOTYPE {LVCMOS 1.8V} \ + CONFIG.PCW_MIO_34_PULLUP {disabled} \ + CONFIG.PCW_MIO_34_SLEW {fast} \ + CONFIG.PCW_MIO_35_DIRECTION {inout} \ + CONFIG.PCW_MIO_35_IOTYPE {LVCMOS 1.8V} \ + CONFIG.PCW_MIO_35_PULLUP {disabled} \ + CONFIG.PCW_MIO_35_SLEW {fast} \ + CONFIG.PCW_MIO_36_DIRECTION {in} \ + CONFIG.PCW_MIO_36_IOTYPE {LVCMOS 1.8V} \ + CONFIG.PCW_MIO_36_PULLUP {disabled} \ + CONFIG.PCW_MIO_36_SLEW {fast} \ + CONFIG.PCW_MIO_37_DIRECTION {inout} \ + CONFIG.PCW_MIO_37_IOTYPE {LVCMOS 1.8V} \ + CONFIG.PCW_MIO_37_PULLUP {disabled} \ + CONFIG.PCW_MIO_37_SLEW {fast} \ + CONFIG.PCW_MIO_38_DIRECTION {inout} \ + CONFIG.PCW_MIO_38_IOTYPE {LVCMOS 1.8V} \ + CONFIG.PCW_MIO_38_PULLUP {disabled} \ + CONFIG.PCW_MIO_38_SLEW {fast} \ + CONFIG.PCW_MIO_39_DIRECTION {inout} \ + CONFIG.PCW_MIO_39_IOTYPE {LVCMOS 1.8V} \ + CONFIG.PCW_MIO_39_PULLUP {disabled} \ + CONFIG.PCW_MIO_39_SLEW {fast} \ + CONFIG.PCW_MIO_3_DIRECTION {inout} \ + CONFIG.PCW_MIO_3_IOTYPE {LVCMOS 3.3V} \ + CONFIG.PCW_MIO_3_PULLUP {disabled} \ + CONFIG.PCW_MIO_3_SLEW {fast} \ + CONFIG.PCW_MIO_40_DIRECTION {inout} \ + CONFIG.PCW_MIO_40_IOTYPE {LVCMOS 1.8V} \ + CONFIG.PCW_MIO_40_PULLUP {disabled} \ + CONFIG.PCW_MIO_40_SLEW {fast} \ + CONFIG.PCW_MIO_41_DIRECTION {inout} \ + CONFIG.PCW_MIO_41_IOTYPE {LVCMOS 1.8V} \ + CONFIG.PCW_MIO_41_PULLUP {disabled} \ + CONFIG.PCW_MIO_41_SLEW {fast} \ + CONFIG.PCW_MIO_42_DIRECTION {inout} \ + CONFIG.PCW_MIO_42_IOTYPE {LVCMOS 1.8V} \ + CONFIG.PCW_MIO_42_PULLUP {disabled} \ + CONFIG.PCW_MIO_42_SLEW {fast} \ + CONFIG.PCW_MIO_43_DIRECTION {inout} \ + CONFIG.PCW_MIO_43_IOTYPE {LVCMOS 1.8V} \ + CONFIG.PCW_MIO_43_PULLUP {disabled} \ + CONFIG.PCW_MIO_43_SLEW {fast} \ + CONFIG.PCW_MIO_44_DIRECTION {inout} \ + CONFIG.PCW_MIO_44_IOTYPE {LVCMOS 1.8V} \ + CONFIG.PCW_MIO_44_PULLUP {disabled} \ + CONFIG.PCW_MIO_44_SLEW {fast} \ + CONFIG.PCW_MIO_45_DIRECTION {inout} \ + CONFIG.PCW_MIO_45_IOTYPE {LVCMOS 1.8V} \ + CONFIG.PCW_MIO_45_PULLUP {disabled} \ + CONFIG.PCW_MIO_45_SLEW {fast} \ + CONFIG.PCW_MIO_46_DIRECTION {in} \ + CONFIG.PCW_MIO_46_IOTYPE {LVCMOS 1.8V} \ + CONFIG.PCW_MIO_46_PULLUP {disabled} \ + CONFIG.PCW_MIO_46_SLEW {slow} \ + CONFIG.PCW_MIO_47_DIRECTION {in} \ + CONFIG.PCW_MIO_47_IOTYPE {LVCMOS 1.8V} \ + CONFIG.PCW_MIO_47_PULLUP {disabled} \ + CONFIG.PCW_MIO_47_SLEW {slow} \ + CONFIG.PCW_MIO_48_DIRECTION {out} \ + CONFIG.PCW_MIO_48_IOTYPE {LVCMOS 1.8V} \ + CONFIG.PCW_MIO_48_PULLUP {disabled} \ + CONFIG.PCW_MIO_48_SLEW {slow} \ + CONFIG.PCW_MIO_49_DIRECTION {in} \ + CONFIG.PCW_MIO_49_IOTYPE {LVCMOS 1.8V} \ + CONFIG.PCW_MIO_49_PULLUP {disabled} \ + CONFIG.PCW_MIO_49_SLEW {slow} \ + CONFIG.PCW_MIO_4_DIRECTION {inout} \ + CONFIG.PCW_MIO_4_IOTYPE {LVCMOS 3.3V} \ + CONFIG.PCW_MIO_4_PULLUP {disabled} \ + CONFIG.PCW_MIO_4_SLEW {fast} \ + CONFIG.PCW_MIO_50_DIRECTION {inout} \ + CONFIG.PCW_MIO_50_IOTYPE {LVCMOS 1.8V} \ + CONFIG.PCW_MIO_50_PULLUP {disabled} \ + CONFIG.PCW_MIO_50_SLEW {slow} \ + CONFIG.PCW_MIO_51_DIRECTION {inout} \ + CONFIG.PCW_MIO_51_IOTYPE {LVCMOS 1.8V} \ + CONFIG.PCW_MIO_51_PULLUP {disabled} \ + CONFIG.PCW_MIO_51_SLEW {slow} \ + CONFIG.PCW_MIO_52_DIRECTION {out} \ + CONFIG.PCW_MIO_52_IOTYPE {LVCMOS 1.8V} \ + CONFIG.PCW_MIO_52_PULLUP {disabled} \ + CONFIG.PCW_MIO_52_SLEW {slow} \ + CONFIG.PCW_MIO_53_DIRECTION {inout} \ + CONFIG.PCW_MIO_53_IOTYPE {LVCMOS 1.8V} \ + CONFIG.PCW_MIO_53_PULLUP {disabled} \ + CONFIG.PCW_MIO_53_SLEW {slow} \ + CONFIG.PCW_MIO_5_DIRECTION {inout} \ + CONFIG.PCW_MIO_5_IOTYPE {LVCMOS 3.3V} \ + CONFIG.PCW_MIO_5_PULLUP {disabled} \ + CONFIG.PCW_MIO_5_SLEW {fast} \ + CONFIG.PCW_MIO_6_DIRECTION {out} \ + CONFIG.PCW_MIO_6_IOTYPE {LVCMOS 3.3V} \ + CONFIG.PCW_MIO_6_PULLUP {disabled} \ + CONFIG.PCW_MIO_6_SLEW {fast} \ + CONFIG.PCW_MIO_7_DIRECTION {out} \ + CONFIG.PCW_MIO_7_IOTYPE {LVCMOS 3.3V} \ + CONFIG.PCW_MIO_7_PULLUP {disabled} \ + CONFIG.PCW_MIO_7_SLEW {slow} \ + CONFIG.PCW_MIO_8_DIRECTION {out} \ + CONFIG.PCW_MIO_8_IOTYPE {LVCMOS 3.3V} \ + CONFIG.PCW_MIO_8_PULLUP {disabled} \ + CONFIG.PCW_MIO_8_SLEW {fast} \ + CONFIG.PCW_MIO_9_DIRECTION {inout} \ + CONFIG.PCW_MIO_9_IOTYPE {LVCMOS 3.3V} \ + CONFIG.PCW_MIO_9_PULLUP {disabled} \ + CONFIG.PCW_MIO_9_SLEW {slow} \ + CONFIG.PCW_MIO_TREE_PERIPHERALS {GPIO#Quad SPI Flash#Quad SPI Flash#Quad SPI Flash#Quad SPI Flash#Quad SPI Flash#Quad SPI Flash#GPIO#GPIO#GPIO#GPIO#GPIO#GPIO#GPIO#GPIO#GPIO#Enet 0#Enet 0#Enet 0#Enet 0#Enet 0#Enet 0#Enet 0#Enet 0#Enet 0#Enet 0#Enet 0#Enet 0#USB 0#USB 0#USB 0#USB 0#USB 0#USB 0#USB 0#USB 0#USB 0#USB 0#USB 0#USB 0#SD 0#SD 0#SD 0#SD 0#SD 0#SD 0#SD 0#SD 0#UART 1#UART 1#GPIO#GPIO#Enet 0#Enet 0} \ + CONFIG.PCW_MIO_TREE_SIGNALS {gpio[0]#qspi0_ss_b#qspi0_io[0]#qspi0_io[1]#qspi0_io[2]#qspi0_io[3]/HOLD_B#qspi0_sclk#gpio[7]#gpio[8]#gpio[9]#gpio[10]#gpio[11]#gpio[12]#gpio[13]#gpio[14]#gpio[15]#tx_clk#txd[0]#txd[1]#txd[2]#txd[3]#tx_ctl#rx_clk#rxd[0]#rxd[1]#rxd[2]#rxd[3]#rx_ctl#data[4]#dir#stp#nxt#data[0]#data[1]#data[2]#data[3]#clk#data[5]#data[6]#data[7]#clk#cmd#data[0]#data[1]#data[2]#data[3]#wp#cd#tx#rx#gpio[50]#gpio[51]#mdc#mdio} \ + CONFIG.PCW_NAND_GRP_D8_ENABLE {0} \ + CONFIG.PCW_NAND_PERIPHERAL_ENABLE {0} \ + CONFIG.PCW_NOR_GRP_A25_ENABLE {0} \ + CONFIG.PCW_NOR_GRP_CS0_ENABLE {0} \ + CONFIG.PCW_NOR_GRP_CS1_ENABLE {0} \ + CONFIG.PCW_NOR_GRP_SRAM_CS0_ENABLE {0} \ + CONFIG.PCW_NOR_GRP_SRAM_CS1_ENABLE {0} \ + CONFIG.PCW_NOR_GRP_SRAM_INT_ENABLE {0} \ + CONFIG.PCW_NOR_PERIPHERAL_ENABLE {0} \ + CONFIG.PCW_PCAP_PERIPHERAL_DIVISOR0 {5} \ + CONFIG.PCW_PJTAG_PERIPHERAL_ENABLE {0} \ + CONFIG.PCW_PRESET_BANK0_VOLTAGE {LVCMOS 3.3V} \ + CONFIG.PCW_PRESET_BANK1_VOLTAGE {LVCMOS 1.8V} \ + CONFIG.PCW_QSPI_GRP_FBCLK_ENABLE {0} \ + CONFIG.PCW_QSPI_GRP_IO1_ENABLE {0} \ + CONFIG.PCW_QSPI_GRP_SINGLE_SS_ENABLE {1} \ + CONFIG.PCW_QSPI_GRP_SINGLE_SS_IO {MIO 1 .. 6} \ + CONFIG.PCW_QSPI_GRP_SS1_ENABLE {0} \ + CONFIG.PCW_QSPI_PERIPHERAL_DIVISOR0 {5} \ + CONFIG.PCW_QSPI_PERIPHERAL_ENABLE {1} \ + CONFIG.PCW_QSPI_PERIPHERAL_FREQMHZ {200} \ + CONFIG.PCW_QSPI_QSPI_IO {MIO 1 .. 6} \ + CONFIG.PCW_SD0_GRP_CD_ENABLE {1} \ + CONFIG.PCW_SD0_GRP_CD_IO {MIO 47} \ + CONFIG.PCW_SD0_GRP_POW_ENABLE {0} \ + CONFIG.PCW_SD0_GRP_WP_ENABLE {1} \ + CONFIG.PCW_SD0_GRP_WP_IO {MIO 46} \ + CONFIG.PCW_SD0_PERIPHERAL_ENABLE {1} \ + CONFIG.PCW_SD0_SD0_IO {MIO 40 .. 45} \ + CONFIG.PCW_SDIO_PERIPHERAL_DIVISOR0 {20} \ + CONFIG.PCW_SDIO_PERIPHERAL_FREQMHZ {50} \ + CONFIG.PCW_SDIO_PERIPHERAL_VALID {1} \ + CONFIG.PCW_SINGLE_QSPI_DATA_MODE {x4} \ + CONFIG.PCW_SMC_PERIPHERAL_DIVISOR0 {1} \ + CONFIG.PCW_SPI_PERIPHERAL_DIVISOR0 {1} \ + CONFIG.PCW_S_AXI_HP2_DATA_WIDTH {64} \ + CONFIG.PCW_TPIU_PERIPHERAL_DIVISOR0 {1} \ + CONFIG.PCW_TTC0_CLK0_PERIPHERAL_FREQMHZ {133.333333} \ + CONFIG.PCW_TTC0_CLK1_PERIPHERAL_FREQMHZ {133.333333} \ + CONFIG.PCW_TTC0_CLK2_PERIPHERAL_FREQMHZ {133.333333} \ + CONFIG.PCW_TTC0_PERIPHERAL_ENABLE {1} \ + CONFIG.PCW_TTC0_TTC0_IO {EMIO} \ + CONFIG.PCW_TTC_PERIPHERAL_FREQMHZ {50} \ + CONFIG.PCW_UART1_GRP_FULL_ENABLE {0} \ + CONFIG.PCW_UART1_PERIPHERAL_ENABLE {1} \ + CONFIG.PCW_UART1_UART1_IO {MIO 48 .. 49} \ + CONFIG.PCW_UART_PERIPHERAL_DIVISOR0 {20} \ + CONFIG.PCW_UART_PERIPHERAL_FREQMHZ {50} \ + CONFIG.PCW_UART_PERIPHERAL_VALID {1} \ + CONFIG.PCW_UIPARAM_ACT_DDR_FREQ_MHZ {533.333374} \ + CONFIG.PCW_UIPARAM_DDR_BANK_ADDR_COUNT {3} \ + CONFIG.PCW_UIPARAM_DDR_BL {8} \ + CONFIG.PCW_UIPARAM_DDR_BOARD_DELAY0 {0.41} \ + CONFIG.PCW_UIPARAM_DDR_BOARD_DELAY1 {0.411} \ + CONFIG.PCW_UIPARAM_DDR_BOARD_DELAY2 {0.341} \ + CONFIG.PCW_UIPARAM_DDR_BOARD_DELAY3 {0.358} \ + CONFIG.PCW_UIPARAM_DDR_CL {7} \ + CONFIG.PCW_UIPARAM_DDR_COL_ADDR_COUNT {10} \ + CONFIG.PCW_UIPARAM_DDR_CWL {6} \ + CONFIG.PCW_UIPARAM_DDR_DEVICE_CAPACITY {2048 MBits} \ + CONFIG.PCW_UIPARAM_DDR_DQS_TO_CLK_DELAY_0 {0.025} \ + CONFIG.PCW_UIPARAM_DDR_DQS_TO_CLK_DELAY_1 {0.028} \ + CONFIG.PCW_UIPARAM_DDR_DQS_TO_CLK_DELAY_2 {0.001} \ + CONFIG.PCW_UIPARAM_DDR_DQS_TO_CLK_DELAY_3 {0.001} \ + CONFIG.PCW_UIPARAM_DDR_DRAM_WIDTH {16 Bits} \ + CONFIG.PCW_UIPARAM_DDR_FREQ_MHZ {533.333313} \ + CONFIG.PCW_UIPARAM_DDR_MEMORY_TYPE {DDR 3} \ + CONFIG.PCW_UIPARAM_DDR_PARTNO {MT41J128M16 HA-15E} \ + CONFIG.PCW_UIPARAM_DDR_ROW_ADDR_COUNT {14} \ + CONFIG.PCW_UIPARAM_DDR_SPEED_BIN {DDR3_1066F} \ + CONFIG.PCW_UIPARAM_DDR_TRAIN_DATA_EYE {1} \ + CONFIG.PCW_UIPARAM_DDR_TRAIN_READ_GATE {1} \ + CONFIG.PCW_UIPARAM_DDR_TRAIN_WRITE_LEVEL {1} \ + CONFIG.PCW_UIPARAM_DDR_T_FAW {45.0} \ + CONFIG.PCW_UIPARAM_DDR_T_RAS_MIN {36.0} \ + CONFIG.PCW_UIPARAM_DDR_T_RC {49.5} \ + CONFIG.PCW_UIPARAM_DDR_T_RCD {7} \ + CONFIG.PCW_UIPARAM_DDR_T_RP {7} \ + CONFIG.PCW_UIPARAM_DDR_USE_INTERNAL_VREF {1} \ + CONFIG.PCW_USB0_PERIPHERAL_ENABLE {1} \ + CONFIG.PCW_USB0_PERIPHERAL_FREQMHZ {60} \ + CONFIG.PCW_USB0_RESET_ENABLE {0} \ + CONFIG.PCW_USB0_USB0_IO {MIO 28 .. 39} \ + CONFIG.PCW_USB1_RESET_ENABLE {0} \ + CONFIG.PCW_USB_RESET_ENABLE {1} \ + CONFIG.PCW_USB_RESET_SELECT {Share reset pin} \ + CONFIG.PCW_USE_S_AXI_HP0 {1} \ + CONFIG.PCW_USE_S_AXI_HP1 {1} \ + CONFIG.PCW_USE_S_AXI_HP2 {1} \ + CONFIG.PCW_USE_S_AXI_HP3 {1} \ + CONFIG.preset {ZedBoard} \ + ] $processing_system7_0 + + # Create instance: ps7_0_axi_periph, and set properties + set ps7_0_axi_periph [ create_bd_cell -type ip -vlnv xilinx.com:ip:axi_interconnect:2.1 ps7_0_axi_periph ] + set_property -dict [ list \ + CONFIG.NUM_MI {7} \ + ] $ps7_0_axi_periph + + # Create instance: rst_ps7_0_100M, and set properties + set rst_ps7_0_100M [ create_bd_cell -type ip -vlnv xilinx.com:ip:proc_sys_reset:5.0 rst_ps7_0_100M ] + + # Create instance: s_dma, and set properties + set s_dma [ create_bd_cell -type ip -vlnv xilinx.com:ip:axi_dma:7.1 s_dma ] + set_property -dict [ list \ + CONFIG.c_include_mm2s_dre {1} \ + CONFIG.c_include_s2mm {0} \ + CONFIG.c_include_sg {0} \ + CONFIG.c_m_axi_mm2s_data_width {64} \ + CONFIG.c_m_axis_mm2s_tdata_width {64} \ + CONFIG.c_mm2s_burst_size {256} \ + CONFIG.c_sg_include_stscntrl_strm {0} \ + CONFIG.c_sg_length_width {16} \ + ] $s_dma + + # Create instance: u_dma, and set properties + set u_dma [ create_bd_cell -type ip -vlnv xilinx.com:ip:axi_dma:7.1 u_dma ] + set_property -dict [ list \ + CONFIG.c_include_mm2s_dre {1} \ + CONFIG.c_include_s2mm {0} \ + CONFIG.c_include_sg {0} \ + CONFIG.c_m_axi_mm2s_data_width {64} \ + CONFIG.c_m_axis_mm2s_tdata_width {64} \ + CONFIG.c_mm2s_burst_size {256} \ + CONFIG.c_sg_include_stscntrl_strm {0} \ + CONFIG.c_sg_length_width {16} \ + ] $u_dma + + # Create instance: v_dma, and set properties + set v_dma [ create_bd_cell -type ip -vlnv xilinx.com:ip:axi_dma:7.1 v_dma ] + set_property -dict [ list \ + CONFIG.c_include_mm2s_dre {1} \ + CONFIG.c_include_s2mm {0} \ + CONFIG.c_include_sg {0} \ + CONFIG.c_m_axi_mm2s_data_width {64} \ + CONFIG.c_m_axis_mm2s_tdata_width {64} \ + CONFIG.c_mm2s_burst_size {256} \ + CONFIG.c_sg_include_stscntrl_strm {0} \ + CONFIG.c_sg_length_width {16} \ + ] $v_dma + + # Create instance: x_dma, and set properties + set x_dma [ create_bd_cell -type ip -vlnv xilinx.com:ip:axi_dma:7.1 x_dma ] + set_property -dict [ list \ + CONFIG.c_include_mm2s_dre {1} \ + CONFIG.c_include_s2mm {0} \ + CONFIG.c_include_sg {0} \ + CONFIG.c_m_axi_mm2s_data_width {64} \ + CONFIG.c_m_axis_mm2s_tdata_width {64} \ + CONFIG.c_mm2s_burst_size {256} \ + CONFIG.c_sg_include_stscntrl_strm {0} \ + CONFIG.c_sg_length_width {16} \ + ] $x_dma + + # Create instance: y_dma, and set properties + set y_dma [ create_bd_cell -type ip -vlnv xilinx.com:ip:axi_dma:7.1 y_dma ] + set_property -dict [ list \ + CONFIG.c_include_mm2s {0} \ + CONFIG.c_include_s2mm_dre {1} \ + CONFIG.c_include_sg {0} \ + CONFIG.c_micro_dma {0} \ + CONFIG.c_s2mm_burst_size {128} \ + CONFIG.c_sg_include_stscntrl_strm {0} \ + CONFIG.c_sg_length_width {16} \ + ] $y_dma + + # Create interface connections + connect_bd_intf_net -intf_net HlsSvdKernel_0_y_port [get_bd_intf_pins HlsSvdKernel_0/y_port] [get_bd_intf_pins y_dma/S_AXIS_S2MM] + connect_bd_intf_net -intf_net axi_mem_intercon_1_M00_AXI [get_bd_intf_pins axi_mem_intercon_1/M00_AXI] [get_bd_intf_pins processing_system7_0/S_AXI_HP1] + connect_bd_intf_net -intf_net axi_mem_intercon_2_M00_AXI [get_bd_intf_pins axi_mem_intercon_2/M00_AXI] [get_bd_intf_pins processing_system7_0/S_AXI_HP2] + connect_bd_intf_net -intf_net axi_mem_intercon_3_M00_AXI [get_bd_intf_pins axi_mem_intercon_3/M00_AXI] [get_bd_intf_pins processing_system7_0/S_AXI_HP3] + connect_bd_intf_net -intf_net axi_mem_intercon_M00_AXI [get_bd_intf_pins axi_mem_intercon/M00_AXI] [get_bd_intf_pins processing_system7_0/S_AXI_HP0] + connect_bd_intf_net -intf_net processing_system7_0_DDR [get_bd_intf_ports DDR] [get_bd_intf_pins processing_system7_0/DDR] + connect_bd_intf_net -intf_net processing_system7_0_FIXED_IO [get_bd_intf_ports FIXED_IO] [get_bd_intf_pins processing_system7_0/FIXED_IO] + connect_bd_intf_net -intf_net processing_system7_0_M_AXI_GP0 [get_bd_intf_pins processing_system7_0/M_AXI_GP0] [get_bd_intf_pins ps7_0_axi_periph/S00_AXI] + connect_bd_intf_net -intf_net ps7_0_axi_periph_M00_AXI [get_bd_intf_pins HlsSvdKernel_0/s_axi_control] [get_bd_intf_pins ps7_0_axi_periph/M00_AXI] + connect_bd_intf_net -intf_net ps7_0_axi_periph_M01_AXI [get_bd_intf_pins ps7_0_axi_periph/M01_AXI] [get_bd_intf_pins v_dma/S_AXI_LITE] + connect_bd_intf_net -intf_net ps7_0_axi_periph_M02_AXI [get_bd_intf_pins ps7_0_axi_periph/M02_AXI] [get_bd_intf_pins x_dma/S_AXI_LITE] + connect_bd_intf_net -intf_net ps7_0_axi_periph_M03_AXI [get_bd_intf_pins ps7_0_axi_periph/M03_AXI] [get_bd_intf_pins y_dma/S_AXI_LITE] + connect_bd_intf_net -intf_net ps7_0_axi_periph_M05_AXI [get_bd_intf_pins ps7_0_axi_periph/M05_AXI] [get_bd_intf_pins s_dma/S_AXI_LITE] + connect_bd_intf_net -intf_net ps7_0_axi_periph_M06_AXI [get_bd_intf_pins ps7_0_axi_periph/M06_AXI] [get_bd_intf_pins u_dma/S_AXI_LITE] + connect_bd_intf_net -intf_net s_dma_M_AXIS_MM2S [get_bd_intf_pins HlsSvdKernel_0/s_port] [get_bd_intf_pins s_dma/M_AXIS_MM2S] + connect_bd_intf_net -intf_net s_dma_M_AXI_MM2S [get_bd_intf_pins axi_mem_intercon_1/S01_AXI] [get_bd_intf_pins s_dma/M_AXI_MM2S] + connect_bd_intf_net -intf_net u_dma_M_AXIS_MM2S [get_bd_intf_pins HlsSvdKernel_0/u_port] [get_bd_intf_pins u_dma/M_AXIS_MM2S] + connect_bd_intf_net -intf_net u_dma_M_AXI_MM2S [get_bd_intf_pins axi_mem_intercon_1/S00_AXI] [get_bd_intf_pins v_dma/M_AXI_MM2S] + connect_bd_intf_net -intf_net u_dma_M_AXI_MM2S1 [get_bd_intf_pins axi_mem_intercon_3/S00_AXI] [get_bd_intf_pins u_dma/M_AXI_MM2S] + connect_bd_intf_net -intf_net v_dma_M_AXIS_MM2S [get_bd_intf_pins HlsSvdKernel_0/v_port] [get_bd_intf_pins v_dma/M_AXIS_MM2S] + connect_bd_intf_net -intf_net x_dma_M_AXIS_MM2S [get_bd_intf_pins HlsSvdKernel_0/x_port] [get_bd_intf_pins x_dma/M_AXIS_MM2S] + connect_bd_intf_net -intf_net x_dma_M_AXI_MM2S [get_bd_intf_pins axi_mem_intercon/S00_AXI] [get_bd_intf_pins x_dma/M_AXI_MM2S] + connect_bd_intf_net -intf_net xu_dma_M_AXI_S2MM [get_bd_intf_pins axi_mem_intercon_2/S00_AXI] [get_bd_intf_pins y_dma/M_AXI_S2MM] + + # Create port connections + connect_bd_net -net processing_system7_0_FCLK_CLK0 [get_bd_pins HlsSvdKernel_0/ap_clk] [get_bd_pins axi_mem_intercon/ACLK] [get_bd_pins axi_mem_intercon/M00_ACLK] [get_bd_pins axi_mem_intercon/S00_ACLK] [get_bd_pins axi_mem_intercon_1/ACLK] [get_bd_pins axi_mem_intercon_1/M00_ACLK] [get_bd_pins axi_mem_intercon_1/S00_ACLK] [get_bd_pins axi_mem_intercon_1/S01_ACLK] [get_bd_pins axi_mem_intercon_2/ACLK] [get_bd_pins axi_mem_intercon_2/M00_ACLK] [get_bd_pins axi_mem_intercon_2/S00_ACLK] [get_bd_pins axi_mem_intercon_3/ACLK] [get_bd_pins axi_mem_intercon_3/M00_ACLK] [get_bd_pins axi_mem_intercon_3/S00_ACLK] [get_bd_pins processing_system7_0/FCLK_CLK0] [get_bd_pins processing_system7_0/M_AXI_GP0_ACLK] [get_bd_pins processing_system7_0/S_AXI_HP0_ACLK] [get_bd_pins processing_system7_0/S_AXI_HP1_ACLK] [get_bd_pins processing_system7_0/S_AXI_HP2_ACLK] [get_bd_pins processing_system7_0/S_AXI_HP3_ACLK] [get_bd_pins ps7_0_axi_periph/ACLK] [get_bd_pins ps7_0_axi_periph/M00_ACLK] [get_bd_pins ps7_0_axi_periph/M01_ACLK] [get_bd_pins ps7_0_axi_periph/M02_ACLK] [get_bd_pins ps7_0_axi_periph/M03_ACLK] [get_bd_pins ps7_0_axi_periph/M04_ACLK] [get_bd_pins ps7_0_axi_periph/M05_ACLK] [get_bd_pins ps7_0_axi_periph/M06_ACLK] [get_bd_pins ps7_0_axi_periph/S00_ACLK] [get_bd_pins rst_ps7_0_100M/slowest_sync_clk] [get_bd_pins s_dma/m_axi_mm2s_aclk] [get_bd_pins s_dma/s_axi_lite_aclk] [get_bd_pins u_dma/m_axi_mm2s_aclk] [get_bd_pins u_dma/s_axi_lite_aclk] [get_bd_pins v_dma/m_axi_mm2s_aclk] [get_bd_pins v_dma/s_axi_lite_aclk] [get_bd_pins x_dma/m_axi_mm2s_aclk] [get_bd_pins x_dma/s_axi_lite_aclk] [get_bd_pins y_dma/m_axi_s2mm_aclk] [get_bd_pins y_dma/s_axi_lite_aclk] + connect_bd_net -net processing_system7_0_FCLK_RESET0_N [get_bd_pins processing_system7_0/FCLK_RESET0_N] [get_bd_pins rst_ps7_0_100M/ext_reset_in] + connect_bd_net -net rst_ps7_0_100M_peripheral_aresetn [get_bd_pins HlsSvdKernel_0/ap_rst_n] [get_bd_pins axi_mem_intercon/ARESETN] [get_bd_pins axi_mem_intercon/M00_ARESETN] [get_bd_pins axi_mem_intercon/S00_ARESETN] [get_bd_pins axi_mem_intercon_1/ARESETN] [get_bd_pins axi_mem_intercon_1/M00_ARESETN] [get_bd_pins axi_mem_intercon_1/S00_ARESETN] [get_bd_pins axi_mem_intercon_1/S01_ARESETN] [get_bd_pins axi_mem_intercon_2/ARESETN] [get_bd_pins axi_mem_intercon_2/M00_ARESETN] [get_bd_pins axi_mem_intercon_2/S00_ARESETN] [get_bd_pins axi_mem_intercon_3/ARESETN] [get_bd_pins axi_mem_intercon_3/M00_ARESETN] [get_bd_pins axi_mem_intercon_3/S00_ARESETN] [get_bd_pins ps7_0_axi_periph/ARESETN] [get_bd_pins ps7_0_axi_periph/M00_ARESETN] [get_bd_pins ps7_0_axi_periph/M01_ARESETN] [get_bd_pins ps7_0_axi_periph/M02_ARESETN] [get_bd_pins ps7_0_axi_periph/M03_ARESETN] [get_bd_pins ps7_0_axi_periph/M04_ARESETN] [get_bd_pins ps7_0_axi_periph/M05_ARESETN] [get_bd_pins ps7_0_axi_periph/M06_ARESETN] [get_bd_pins ps7_0_axi_periph/S00_ARESETN] [get_bd_pins rst_ps7_0_100M/peripheral_aresetn] [get_bd_pins s_dma/axi_resetn] [get_bd_pins u_dma/axi_resetn] [get_bd_pins v_dma/axi_resetn] [get_bd_pins x_dma/axi_resetn] [get_bd_pins y_dma/axi_resetn] + + # Create address segments + assign_bd_address -offset 0x40000000 -range 0x00010000 -target_address_space [get_bd_addr_spaces processing_system7_0/Data] [get_bd_addr_segs HlsSvdKernel_0/s_axi_control/Reg] -force + assign_bd_address -offset 0x41E40000 -range 0x00010000 -target_address_space [get_bd_addr_spaces processing_system7_0/Data] [get_bd_addr_segs s_dma/S_AXI_LITE/Reg] -force + assign_bd_address -offset 0x41E00000 -range 0x00010000 -target_address_space [get_bd_addr_spaces processing_system7_0/Data] [get_bd_addr_segs v_dma/S_AXI_LITE/Reg] -force + assign_bd_address -offset 0x41E50000 -range 0x00010000 -target_address_space [get_bd_addr_spaces processing_system7_0/Data] [get_bd_addr_segs u_dma/S_AXI_LITE/Reg] -force + assign_bd_address -offset 0x41E10000 -range 0x00010000 -target_address_space [get_bd_addr_spaces processing_system7_0/Data] [get_bd_addr_segs x_dma/S_AXI_LITE/Reg] -force + assign_bd_address -offset 0x41E20000 -range 0x00010000 -target_address_space [get_bd_addr_spaces processing_system7_0/Data] [get_bd_addr_segs y_dma/S_AXI_LITE/Reg] -force + assign_bd_address -offset 0x00000000 -range 0x20000000 -target_address_space [get_bd_addr_spaces s_dma/Data_MM2S] [get_bd_addr_segs processing_system7_0/S_AXI_HP1/HP1_DDR_LOWOCM] -force + assign_bd_address -offset 0x00000000 -range 0x20000000 -target_address_space [get_bd_addr_spaces u_dma/Data_MM2S] [get_bd_addr_segs processing_system7_0/S_AXI_HP3/HP3_DDR_LOWOCM] -force + assign_bd_address -offset 0x00000000 -range 0x20000000 -target_address_space [get_bd_addr_spaces v_dma/Data_MM2S] [get_bd_addr_segs processing_system7_0/S_AXI_HP1/HP1_DDR_LOWOCM] -force + assign_bd_address -offset 0x00000000 -range 0x20000000 -target_address_space [get_bd_addr_spaces x_dma/Data_MM2S] [get_bd_addr_segs processing_system7_0/S_AXI_HP0/HP0_DDR_LOWOCM] -force + assign_bd_address -offset 0x00000000 -range 0x20000000 -target_address_space [get_bd_addr_spaces y_dma/Data_S2MM] [get_bd_addr_segs processing_system7_0/S_AXI_HP2/HP2_DDR_LOWOCM] -force + + + # Restore current instance + current_bd_instance $oldCurInst + + validate_bd_design + save_bd_design +} +# End of create_root_design() + + +################################################################## +# MAIN FLOW +################################################################## + +create_root_design "" + + diff --git a/pynq/kernel_u/kernel_u.ipynb b/pynq/kernel_u/kernel_u.ipynb new file mode 100644 index 0000000..51e133c --- /dev/null +++ b/pynq/kernel_u/kernel_u.ipynb @@ -0,0 +1,558 @@ +{ + "cells": [ + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "# Testing Kernel-U\n", + "\n", + "This notebook will test an IP written in Vivado HLS." + ] + }, + { + "cell_type": "code", + "execution_count": 1, + "metadata": {}, + "outputs": [ + { + "data": { + "application/javascript": [ + "\n", + "try {\n", + "require(['notebook/js/codecell'], function(codecell) {\n", + " codecell.CodeCell.options_default.highlight_modes[\n", + " 'magic_text/x-csrc'] = {'reg':[/^%%microblaze/]};\n", + " Jupyter.notebook.events.one('kernel_ready.Kernel', function(){\n", + " Jupyter.notebook.get_cells().map(function(cell){\n", + " if (cell.cell_type == 'code'){ cell.auto_highlight(); } }) ;\n", + " });\n", + "});\n", + "} catch (e) {};\n" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "application/javascript": [ + "\n", + "try {\n", + "require(['notebook/js/codecell'], function(codecell) {\n", + " codecell.CodeCell.options_default.highlight_modes[\n", + " 'magic_text/x-csrc'] = {'reg':[/^%%pybind11/]};\n", + " Jupyter.notebook.events.one('kernel_ready.Kernel', function(){\n", + " Jupyter.notebook.get_cells().map(function(cell){\n", + " if (cell.cell_type == 'code'){ cell.auto_highlight(); } }) ;\n", + " });\n", + "});\n", + "} catch (e) {};\n" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "from pynq import Overlay\n", + "import pynq.lib.dma\n", + "from pynq import allocate\n", + "import numpy as np\n", + "from pynq import DefaultIP\n", + "import timeit" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Program FPGA and inspect Overlay." + ] + }, + { + "cell_type": "code", + "execution_count": 2, + "metadata": {}, + "outputs": [], + "source": [ + "overlay = Overlay(\"overlay/kernel_u.bit\")\n", + "overlay?" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Get the kernel register map." + ] + }, + { + "cell_type": "code", + "execution_count": 3, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "RegisterMap {\n", + " CTRL = Register(AP_START=0, AP_DONE=0, AP_IDLE=1, AP_READY=0, RESERVED_1=0, AUTO_RESTART=0, RESERVED_2=0),\n", + " GIER = Register(Enable=0, RESERVED=0),\n", + " IP_IER = Register(CHAN0_INT_EN=0, CHAN1_INT_EN=0, RESERVED=0),\n", + " IP_ISR = Register(CHAN0_INT_ST=0, CHAN1_INT_ST=0, RESERVED=0),\n", + " num_refinements = Register(num_refinements=0)\n", + "}" + ] + }, + "execution_count": 3, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "kernel = overlay.HlsAxisKernelU_0\n", + "kernel.register_map\n", + "# print(\"stream size: \", adder.stream_size)\n", + "# accel_state = adder.get_state()\n", + "# print(\"accelerator state: \", accel_state)\n", + "# dma = overlay.axi_dma_0\n", + "# dma.register_map.MM2S_DMASR\n", + "# dma.register_map.S2MM_DMACR" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Kernel IP" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "The kernel IP can be automatically bound by first creating our Kernel class. Then, the overlay can be instantiated again." + ] + }, + { + "cell_type": "code", + "execution_count": 4, + "metadata": {}, + "outputs": [], + "source": [ + "class KernelDriver(DefaultIP):\n", + " def __init__(self, description):\n", + " super().__init__(description=description)\n", + " \n", + " bindto = ['xilinx.com:hls:HlsAxisKernelU:1.0']\n", + "\n", + " def start_accel(self):\n", + " self.register_map.CTRL.AP_START = 1\n", + " self.write(0x0, 1)\n", + " self.write(0x0, 1)\n", + " while(self.read(0x0) % 2 == 0):\n", + " self.write(0x0, 1)\n", + " pass # Wait until start, i.e. bit 0, is set.\n", + "\n", + " def set_state(self, state):\n", + " # self.register_map.CTRL = state\n", + " # return self.register_map.CTRL\n", + " self.write(0x0, state)\n", + " return self.read(0x0)\n", + "\n", + " def get_state(self):\n", + " return self.register_map.CTRL\n", + " # return self.read(0x0)\n", + "\n", + " @property\n", + " def num_refinements(self):\n", + " return self.register_map.num_refinements\n", + " # return self.read(0x10)\n", + "\n", + " @num_refinements.setter\n", + " def num_refinements(self, R):\n", + " # self.register_map.num_refinements = R\n", + " self.write(0x10, R)\n", + "\n", + "overlay = Overlay(\"overlay/kernel_u.bit\")" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Let's check again the kernel:" + ] + }, + { + "cell_type": "code", + "execution_count": 5, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "Register(AP_START=0, AP_DONE=0, AP_IDLE=1, AP_READY=0, RESERVED_1=0, AUTO_RESTART=0, RESERVED_2=0)" + ] + }, + "execution_count": 5, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "kernel_u = overlay.HlsAxisKernelU_0\n", + "kernel_u.get_state()" + ] + }, + { + "cell_type": "code", + "execution_count": 6, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "0" + ] + }, + "execution_count": 6, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "kernel_u.read(0x10)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "To show the class is working, we setup the `num_refinements` using the setter method. We then read its corresponding register." + ] + }, + { + "cell_type": "code", + "execution_count": 7, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "1" + ] + }, + "execution_count": 7, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "kernel_u.num_refinements = 1\n", + "kernel_u.read(0x10)" + ] + }, + { + "cell_type": "code", + "execution_count": 8, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "0x4\n", + "0x4\n" + ] + }, + { + "data": { + "text/plain": [ + "Register(AP_START=0, AP_DONE=0, AP_IDLE=1, AP_READY=0, RESERVED_1=0, AUTO_RESTART=0, RESERVED_2=0)" + ] + }, + "execution_count": 8, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "print(kernel_u.get_state())\n", + "# kernel_u.start_accel()\n", + "print(kernel_u.get_state())\n", + "kernel_u.get_state()" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Data Allocation and Run\n", + "\n", + "The data structures must be contiguosly allocated." + ] + }, + { + "cell_type": "code", + "execution_count": 9, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Buffers setup completed.\n", + "x_buffer.shape: (2, 512) - Bytes: 2048\n", + "u_buffer.shape: (128, 128, 4, 4) - Bytes: 524288\n", + "xu_buffer.shape: (128, 4, 2) - Bytes: 2048\n" + ] + } + ], + "source": [ + "# The following parameters are fixed in hardware and cannot be changed:\n", + "# - The number of inputs N\n", + "# - The input size I\n", + "# - The number of gates G\n", + "# - The tile size Tu\n", + "I = 512\n", + "G = 4\n", + "N = 2\n", + "Tu = 4\n", + "data_t = np.int16\n", + "# The number of refinements R can instead be adjusted.\n", + "R = 128\n", + "\n", + "x_buffer = pynq.allocate(shape=(N, I,), dtype=data_t)\n", + "u_buffer = pynq.allocate(shape=(R, I // Tu, G, Tu), dtype=data_t)\n", + "xu_buffer = pynq.allocate(shape=(R, G, N,), dtype=data_t)\n", + "\n", + "for i in range(N):\n", + " for j in range(I):\n", + " # for ii in range(R):\n", + " x_buffer[i, j] = data_t(np.random.uniform(low=-2**15, high=2**15))\n", + "\n", + "for i in range(R):\n", + " for j in range(I // Tu):\n", + " for k in range(G):\n", + " for ii in range(Tu):\n", + " u_buffer[i, j, k, ii] = data_t(np.random.uniform(low=-2**15, high=2**15))\n", + "\n", + "for i in range(R):\n", + " for j in range(G):\n", + " for k in range(N):\n", + " xu_buffer[i, j, k] = 0\n", + "\n", + "print('Buffers setup completed.')\n", + "print(f'x_buffer.shape: {x_buffer.shape} - Bytes: {x_buffer.nbytes}')\n", + "print(f'u_buffer.shape: {u_buffer.shape} - Bytes: {u_buffer.nbytes}')\n", + "print(f'xu_buffer.shape: {xu_buffer.shape} - Bytes: {xu_buffer.nbytes}')" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Setup the kernel and then send the data through the DMAs." + ] + }, + { + "cell_type": "code", + "execution_count": 10, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "0x4\n", + "0x1\n", + "Starting transfer:\n", + "Wait x...DONE.\n", + "Wait u...DONE.\n", + "Wait xu...DONE.\n", + "\n", + "xu_buffer.shape: (128, 4, 2)\n" + ] + } + ], + "source": [ + "kernel_u.num_refinements = R\n", + "print(kernel_u.get_state())\n", + "kernel_u.start_accel()\n", + "print(kernel_u.get_state())\n", + "\n", + "# Transfer\n", + "print('Starting transfer:')\n", + "overlay.x_dma.sendchannel.transfer(x_buffer)\n", + "overlay.u_dma.sendchannel.transfer(u_buffer)\n", + "overlay.xu_dma.recvchannel.transfer(xu_buffer)\n", + "# Then wait\n", + "print('Wait x...', end='')\n", + "overlay.x_dma.sendchannel.wait()\n", + "print('DONE.\\nWait u...', end='')\n", + "overlay.u_dma.sendchannel.wait()\n", + "print('DONE.\\nWait xu...', end='')\n", + "overlay.xu_dma.recvchannel.wait()\n", + "print('DONE.\\n')\n", + "\n", + "print(f'xu_buffer.shape: {xu_buffer.shape}')\n", + "# print(f'xu_buffer: {xu_buffer}')" + ] + }, + { + "cell_type": "code", + "execution_count": 11, + "metadata": {}, + "outputs": [], + "source": [ + "def run_kernel(R, x_buffer, u_buffer, xu_buffer):\n", + " kernel_u.num_refinements = R\n", + " kernel_u.start_accel()\n", + " # Transfer\n", + " overlay.x_dma.sendchannel.transfer(x_buffer)\n", + " overlay.u_dma.sendchannel.transfer(u_buffer)\n", + " overlay.xu_dma.recvchannel.transfer(xu_buffer)\n", + " # Then wait\n", + " overlay.x_dma.sendchannel.wait()\n", + " overlay.u_dma.sendchannel.wait()\n", + " overlay.xu_dma.recvchannel.wait()" + ] + }, + { + "cell_type": "code", + "execution_count": 12, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "10 loops, best of 3: 148 ms per loop\n" + ] + } + ], + "source": [ + "%timeit run_kernel(R, x_buffer, u_buffer, xu_buffer)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Checking Correctness\n", + "\n", + "We first find the proper reshape mechanisms:" + ] + }, + { + "cell_type": "code", + "execution_count": 15, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "[-1.25823639 1.03248304 -0.3389279 -0.26103506] [-1.25823639 1.03248304 -0.3389279 -0.26103506]\n", + "0.0\n", + "[ 0.38526848 -0.34712276 -0.39317614 0.77762274] [ 0.38526848 -0.34712276 -0.39317614 0.77762274]\n", + "0.0\n", + "(128, 4, 2)\n" + ] + } + ], + "source": [ + "# =============================================================================\n", + "# Reshape: (R, I, G) => (R, I // Tu, G, Tu)\n", + "# =============================================================================\n", + "u = np.random.randn(R, I, G)\n", + "u_tmp = u.copy()\n", + "u_tmp = np.transpose(u_tmp.reshape(R, I // Tu, Tu, G), (0, 1, 3, 2))\n", + "print(u[0, 0:4, 0], u_tmp[0, 0, 0, 0:4])\n", + "print(u[0, 3, 0] - u_tmp[0, 0, 0, 3])\n", + "\n", + "# =============================================================================\n", + "# Reshape: (R, I // Tu, G, Tu) => (I, G, R)\n", + "# =============================================================================\n", + "u = np.random.randn(R, I // Tu, G, Tu)\n", + "u_tmp = u.copy()\n", + "u_tmp = np.transpose(u_tmp, (1, 3, 2, 0)).reshape(I, G, R)\n", + "print(u[0, 0, 0, 0:4], u_tmp[0:4, 0, 0])\n", + "print(u[0, 0, 0, 3] - u_tmp[3, 0, 0])\n", + "\n", + "x = np.random.randn(N, I)\n", + "u = np.random.randn(I, G, R)\n", + "x = (x * 2).astype(np.int16)\n", + "u = (u * 2).astype(np.int16)\n", + "\n", + "xu = np.transpose(np.tensordot(x, u, axes=1), (2, 1, 0))\n", + "print(xu.shape)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "We now check the Numpy computation against the FPGA result." + ] + }, + { + "cell_type": "code", + "execution_count": 16, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "\n", + "All equal: True\n", + "gold[0]: [[ -3634 -22667]\n", + " [ 31065 15347]\n", + " [ 22140 -9595]\n", + " [ 9106 26136]]\n", + "fpga[0]: [[ -3634 -22667]\n", + " [ 31065 15347]\n", + " [ 22140 -9595]\n", + " [ 9106 26136]]\n" + ] + } + ], + "source": [ + "u_tmp = np.transpose(u_buffer, (1, 3, 2, 0)).reshape(I, G, R)\n", + "xu_gold = np.transpose(np.tensordot(x_buffer, u_tmp, axes=1), (2, 1, 0))\n", + "print('\\nAll equal:', np.allclose(xu_buffer, xu_gold))\n", + "print('gold[0]: ', xu_gold[0])\n", + "print('fpga[0]: ', xu_buffer[0])" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [] + } + ], + "metadata": { + "kernelspec": { + "display_name": "Python 3", + "language": "python", + "name": "python3" + }, + "language_info": { + "codemirror_mode": { + "name": "ipython", + "version": 3 + }, + "file_extension": ".py", + "mimetype": "text/x-python", + "name": "python", + "nbconvert_exporter": "python", + "pygments_lexer": "ipython3", + "version": "3.6.5" + } + }, + "nbformat": 4, + "nbformat_minor": 2 +} diff --git a/pynq/kernel_u/kernel_u_hier.ipynb b/pynq/kernel_u/kernel_u_hier.ipynb new file mode 100644 index 0000000..78cd282 --- /dev/null +++ b/pynq/kernel_u/kernel_u_hier.ipynb @@ -0,0 +1,197 @@ +{ + "cells": [ + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "# Testing an IP that adds 1 to a stream\n", + "\n", + "This notebook will test an IP written in Vivado HLS. The IP adds +1 to a buffer. The HP ports **must** be configured at 64bit, not 32bit." + ] + }, + { + "cell_type": "code", + "execution_count": 8, + "metadata": {}, + "outputs": [], + "source": [ + "from pynq import Overlay\n", + "import pynq.lib.dma\n", + "from pynq import allocate\n", + "import numpy as np\n", + "from pynq import DefaultIP\n", + "from pynq import DefaultHierarchy" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "We need to define our own class **before** istantiating the overlay. In this way it will be automatically bound. We can use an accelerator driver as follows:" + ] + }, + { + "cell_type": "code", + "execution_count": 9, + "metadata": {}, + "outputs": [], + "source": [ + "class AdderDriver(DefaultIP):\n", + " def __init__(self, description):\n", + " super().__init__(description=description)\n", + " bindto = [\"xilinx.com:hls:hls_adder:1.0\"]\n", + "\n", + " def start_accel(self):\n", + " self.write(0x0, 1)\n", + "\n", + " def set_state(self, state):\n", + " self.write(0x0, state)\n", + " return self.read(0x0)\n", + "\n", + " def get_state(self):\n", + " return self.read(0x0)\n", + "\n", + " @property\n", + " def stream_size(self):\n", + " return self.read(0x10)\n", + "\n", + " @stream_size.setter\n", + " def stream_size(self, size):\n", + " self.write(0x10, size)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "But it comes more handy to use an Hierarchy class as follows:" + ] + }, + { + "cell_type": "code", + "execution_count": 10, + "metadata": {}, + "outputs": [], + "source": [ + "class StreamAdderDriver(DefaultHierarchy):\n", + " def __init__(self, description):\n", + " super().__init__(description)\n", + "\n", + " def stream_add(self, stream):\n", + " in_buffer = allocate(shape=(len(stream),), dtype=np.float32)\n", + " out_buffer = allocate(shape=(len(stream),), dtype=np.float32)\n", + " for i, elem in enumerate(stream):\n", + " in_buffer[i] = elem\n", + " # NOTE: for managing the HLS accelerator, we exploit\n", + " # the driver that we defined above.\n", + " self.hls_adder.stream_size = len(stream)\n", + " self.hls_adder.start_accel() # NOTE: The start must be sent before setting the other arguments \n", + " self.dma.sendchannel.transfer(in_buffer)\n", + " self.dma.recvchannel.transfer(out_buffer)\n", + " self.dma.sendchannel.wait()\n", + " self.dma.recvchannel.wait()\n", + " result = out_buffer.view(dtype=np.float32).copy()\n", + " del in_buffer, out_buffer\n", + " return result\n", + "\n", + " @staticmethod\n", + " def checkhierarchy(description):\n", + " \"\"\"\n", + " An Hierarchy that meets these requirements will be\n", + " automatically registered to this driver.\n", + " \"\"\"\n", + " if \"dma\" in description[\"ip\"] and \"hls_adder\" in description[\"ip\"]:\n", + " return True\n", + " return False" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Finally, we can istantiate the overaly, so that the drivers above will be automatically registered." + ] + }, + { + "cell_type": "code", + "execution_count": 11, + "metadata": {}, + "outputs": [], + "source": [ + "overlay = Overlay(\"overlay/streamed_add_hier.bit\", download=False)\n", + "# overlay.download()\n", + "# overlay?" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Width of Buffer Length Register\n", + "This integer value specifies the number of valid bits used for the Control field buffer length and Status field bytes transferred in the Scatter/Gather descriptors. It also specifies the number of valid bits in the RX Length of the Status Stream App4 field when Use Rxlength is enabled. For Direct Register Mode, it specifies the number of valid bits in the MM2S_LENGTH and S2MM_LENGTH registers. The length width directly correlates to the number of bytes being specified in a Scatter/Gather descriptor or number of bytes being specified in App4.RxLength, MM2S_LENGTH, or S2MM_LENGTH. The number of bytes is equal to 2^Length Width. So a Length Width of 26 gives a byte count of 67,108,863 bytes. This value should be set to 23 for Multichannel mode." + ] + }, + { + "cell_type": "code", + "execution_count": 25, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "[ 1.00000000e+00 4.14159298e+00 7.28318548e+00 ..., 3.20856616e+03\n", + " 3.21170776e+03 3.21484937e+03]\n", + "[ True True True ..., True True True]\n", + "3.469756501941687e-05\n" + ] + } + ], + "source": [ + "stream = [i * np.pi for i in range(1024)]\n", + "# print(stream)\n", + "out_stream = overlay.adder.stream_add(stream)\n", + "print(out_stream)\n", + "print(np.isclose(np.array(stream) + 1, out_stream))\n", + "print(np.abs((np.array(stream) - (out_stream - 1))).mean())\n", + "\n", + "# # NOTE: The following is a neat way of printing the np.floats in HEX format. \n", + "# for orig, f32, u32 in zip(np.array(stream, dtype=np.float32).view(dtype=np.uint32), out_stream, out_stream.view(dtype=np.uint32)):\n", + "# print(\"{:x}\\t{:03.3}\\t{:x}\".format(orig, f32, u32))" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [] + } + ], + "metadata": { + "kernelspec": { + "display_name": "Python 3", + "language": "python", + "name": "python3" + }, + "language_info": { + "codemirror_mode": { + "name": "ipython", + "version": 3 + }, + "file_extension": ".py", + "mimetype": "text/x-python", + "name": "python", + "nbconvert_exporter": "python", + "pygments_lexer": "ipython3", + "version": "3.6.5" + } + }, + "nbformat": 4, + "nbformat_minor": 2 +} diff --git a/pynq/kernel_u/overlay/kernel_u.bit b/pynq/kernel_u/overlay/kernel_u.bit new file mode 100644 index 0000000..06eadae Binary files /dev/null and b/pynq/kernel_u/overlay/kernel_u.bit differ diff --git a/pynq/kernel_u/overlay/kernel_u.hwh b/pynq/kernel_u/overlay/kernel_u.hwh new file mode 100644 index 0000000..4715498 --- /dev/null +++ b/pynq/kernel_u/overlay/kernel_u.hwh @@ -0,0 +1,9213 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/pynq/kernel_u/overlay/kernel_u.tcl b/pynq/kernel_u/overlay/kernel_u.tcl new file mode 100644 index 0000000..bc90a73 --- /dev/null +++ b/pynq/kernel_u/overlay/kernel_u.tcl @@ -0,0 +1,1088 @@ + +################################################################ +# This is a generated script based on design: design_1 +# +# Though there are limitations about the generated script, +# the main purpose of this utility is to make learning +# IP Integrator Tcl commands easier. +################################################################ + +namespace eval _tcl { +proc get_script_folder {} { + set script_path [file normalize [info script]] + set script_folder [file dirname $script_path] + return $script_folder +} +} +variable script_folder +set script_folder [_tcl::get_script_folder] + +################################################################ +# Check if script is running in correct Vivado version. +################################################################ +set scripts_vivado_version 2018.3 +set current_vivado_version [version -short] + +if { [string first $scripts_vivado_version $current_vivado_version] == -1 } { + puts "" + catch {common::send_msg_id "BD_TCL-109" "ERROR" "This script was generated using Vivado <$scripts_vivado_version> and is being run in <$current_vivado_version> of Vivado. Please run the script in Vivado <$scripts_vivado_version> then open the design in Vivado <$current_vivado_version>. Upgrade the design by running \"Tools => Report => Report IP Status...\", then run write_bd_tcl to create an updated script."} + + return 1 +} + +################################################################ +# START +################################################################ + +# To test this script, run the following commands from Vivado Tcl console: +# source design_1_script.tcl + +# If there is no project opened, this script will create a +# project, but make sure you do not have an existing project +# <./myproj/project_1.xpr> in the current working folder. + +set list_projs [get_projects -quiet] +if { $list_projs eq "" } { + create_project project_1 myproj -part xc7z020clg400-1 + set_property BOARD_PART www.digilentinc.com:pynq-z1:part0:1.0 [current_project] +} + + +# CHANGE DESIGN NAME HERE +variable design_name +set design_name design_1 + +# If you do not already have an existing IP Integrator design open, +# you can create a design using the following command: +# create_bd_design $design_name + +# Creating design if needed +set errMsg "" +set nRet 0 + +set cur_design [current_bd_design -quiet] +set list_cells [get_bd_cells -quiet] + +if { ${design_name} eq "" } { + # USE CASES: + # 1) Design_name not set + + set errMsg "Please set the variable to a non-empty value." + set nRet 1 + +} elseif { ${cur_design} ne "" && ${list_cells} eq "" } { + # USE CASES: + # 2): Current design opened AND is empty AND names same. + # 3): Current design opened AND is empty AND names diff; design_name NOT in project. + # 4): Current design opened AND is empty AND names diff; design_name exists in project. + + if { $cur_design ne $design_name } { + common::send_msg_id "BD_TCL-001" "INFO" "Changing value of from <$design_name> to <$cur_design> since current design is empty." + set design_name [get_property NAME $cur_design] + } + common::send_msg_id "BD_TCL-002" "INFO" "Constructing design in IPI design <$cur_design>..." + +} elseif { ${cur_design} ne "" && $list_cells ne "" && $cur_design eq $design_name } { + # USE CASES: + # 5) Current design opened AND has components AND same names. + + set errMsg "Design <$design_name> already exists in your project, please set the variable to another value." + set nRet 1 +} elseif { [get_files -quiet ${design_name}.bd] ne "" } { + # USE CASES: + # 6) Current opened design, has components, but diff names, design_name exists in project. + # 7) No opened design, design_name exists in project. + + set errMsg "Design <$design_name> already exists in your project, please set the variable to another value." + set nRet 2 + +} else { + # USE CASES: + # 8) No opened design, design_name not in project. + # 9) Current opened design, has components, but diff names, design_name not in project. + + common::send_msg_id "BD_TCL-003" "INFO" "Currently there is no design <$design_name> in project, so creating one..." + + create_bd_design $design_name + + common::send_msg_id "BD_TCL-004" "INFO" "Making design <$design_name> as current_bd_design." + current_bd_design $design_name + +} + +common::send_msg_id "BD_TCL-005" "INFO" "Currently the variable is equal to \"$design_name\"." + +if { $nRet != 0 } { + catch {common::send_msg_id "BD_TCL-114" "ERROR" $errMsg} + return $nRet +} + +set bCheckIPsPassed 1 +################################################################## +# CHECK IPs +################################################################## +set bCheckIPs 1 +if { $bCheckIPs == 1 } { + set list_check_ips "\ +xilinx.com:hls:HlsAxisKernelU:1.0\ +xilinx.com:ip:processing_system7:5.5\ +xilinx.com:ip:proc_sys_reset:5.0\ +xilinx.com:ip:axi_dma:7.1\ +" + + set list_ips_missing "" + common::send_msg_id "BD_TCL-006" "INFO" "Checking if the following IPs exist in the project's IP catalog: $list_check_ips ." + + foreach ip_vlnv $list_check_ips { + set ip_obj [get_ipdefs -all $ip_vlnv] + if { $ip_obj eq "" } { + lappend list_ips_missing $ip_vlnv + } + } + + if { $list_ips_missing ne "" } { + catch {common::send_msg_id "BD_TCL-115" "ERROR" "The following IPs are not found in the IP Catalog:\n $list_ips_missing\n\nResolution: Please add the repository containing the IP(s) to the project." } + set bCheckIPsPassed 0 + } + +} + +if { $bCheckIPsPassed != 1 } { + common::send_msg_id "BD_TCL-1003" "WARNING" "Will not continue with creation of design due to the error(s) above." + return 3 +} + +################################################################## +# DESIGN PROCs +################################################################## + + + +# Procedure to create entire design; Provide argument to make +# procedure reusable. If parentCell is "", will use root. +proc create_root_design { parentCell } { + + variable script_folder + variable design_name + + if { $parentCell eq "" } { + set parentCell [get_bd_cells /] + } + + # Get object for parentCell + set parentObj [get_bd_cells $parentCell] + if { $parentObj == "" } { + catch {common::send_msg_id "BD_TCL-100" "ERROR" "Unable to find parent cell <$parentCell>!"} + return + } + + # Make sure parentObj is hier blk + set parentType [get_property TYPE $parentObj] + if { $parentType ne "hier" } { + catch {common::send_msg_id "BD_TCL-101" "ERROR" "Parent <$parentObj> has TYPE = <$parentType>. Expected to be ."} + return + } + + # Save current instance; Restore later + set oldCurInst [current_bd_instance .] + + # Set parent object as current + current_bd_instance $parentObj + + + # Create interface ports + set DDR [ create_bd_intf_port -mode Master -vlnv xilinx.com:interface:ddrx_rtl:1.0 DDR ] + set FIXED_IO [ create_bd_intf_port -mode Master -vlnv xilinx.com:display_processing_system7:fixedio_rtl:1.0 FIXED_IO ] + + # Create ports + + # Create instance: HlsAxisKernelU_0, and set properties + set HlsAxisKernelU_0 [ create_bd_cell -type ip -vlnv xilinx.com:hls:HlsAxisKernelU:1.0 HlsAxisKernelU_0 ] + + # Create instance: axi_mem_intercon, and set properties + set axi_mem_intercon [ create_bd_cell -type ip -vlnv xilinx.com:ip:axi_interconnect:2.1 axi_mem_intercon ] + set_property -dict [ list \ + CONFIG.NUM_MI {1} \ + ] $axi_mem_intercon + + # Create instance: axi_mem_intercon_1, and set properties + set axi_mem_intercon_1 [ create_bd_cell -type ip -vlnv xilinx.com:ip:axi_interconnect:2.1 axi_mem_intercon_1 ] + set_property -dict [ list \ + CONFIG.NUM_MI {1} \ + ] $axi_mem_intercon_1 + + # Create instance: axi_mem_intercon_2, and set properties + set axi_mem_intercon_2 [ create_bd_cell -type ip -vlnv xilinx.com:ip:axi_interconnect:2.1 axi_mem_intercon_2 ] + set_property -dict [ list \ + CONFIG.NUM_MI {1} \ + ] $axi_mem_intercon_2 + + # Create instance: processing_system7_0, and set properties + set processing_system7_0 [ create_bd_cell -type ip -vlnv xilinx.com:ip:processing_system7:5.5 processing_system7_0 ] + set_property -dict [ list \ + CONFIG.PCW_ACT_APU_PERIPHERAL_FREQMHZ {650.000000} \ + CONFIG.PCW_ACT_CAN0_PERIPHERAL_FREQMHZ {23.8095} \ + CONFIG.PCW_ACT_CAN1_PERIPHERAL_FREQMHZ {23.8095} \ + CONFIG.PCW_ACT_CAN_PERIPHERAL_FREQMHZ {10.000000} \ + CONFIG.PCW_ACT_DCI_PERIPHERAL_FREQMHZ {10.096154} \ + CONFIG.PCW_ACT_ENET0_PERIPHERAL_FREQMHZ {125.000000} \ + CONFIG.PCW_ACT_ENET1_PERIPHERAL_FREQMHZ {10.000000} \ + CONFIG.PCW_ACT_FPGA0_PERIPHERAL_FREQMHZ {100.000000} \ + CONFIG.PCW_ACT_FPGA1_PERIPHERAL_FREQMHZ {10.000000} \ + CONFIG.PCW_ACT_FPGA2_PERIPHERAL_FREQMHZ {10.000000} \ + CONFIG.PCW_ACT_FPGA3_PERIPHERAL_FREQMHZ {10.000000} \ + CONFIG.PCW_ACT_I2C_PERIPHERAL_FREQMHZ {50} \ + CONFIG.PCW_ACT_PCAP_PERIPHERAL_FREQMHZ {200.000000} \ + CONFIG.PCW_ACT_QSPI_PERIPHERAL_FREQMHZ {200.000000} \ + CONFIG.PCW_ACT_SDIO_PERIPHERAL_FREQMHZ {50.000000} \ + CONFIG.PCW_ACT_SMC_PERIPHERAL_FREQMHZ {10.000000} \ + CONFIG.PCW_ACT_SPI_PERIPHERAL_FREQMHZ {10.000000} \ + CONFIG.PCW_ACT_TPIU_PERIPHERAL_FREQMHZ {200.000000} \ + CONFIG.PCW_ACT_TTC0_CLK0_PERIPHERAL_FREQMHZ {108.333336} \ + CONFIG.PCW_ACT_TTC0_CLK1_PERIPHERAL_FREQMHZ {108.333336} \ + CONFIG.PCW_ACT_TTC0_CLK2_PERIPHERAL_FREQMHZ {108.333336} \ + CONFIG.PCW_ACT_TTC1_CLK0_PERIPHERAL_FREQMHZ {108.333336} \ + CONFIG.PCW_ACT_TTC1_CLK1_PERIPHERAL_FREQMHZ {108.333336} \ + CONFIG.PCW_ACT_TTC1_CLK2_PERIPHERAL_FREQMHZ {108.333336} \ + CONFIG.PCW_ACT_TTC_PERIPHERAL_FREQMHZ {50} \ + CONFIG.PCW_ACT_UART_PERIPHERAL_FREQMHZ {100.000000} \ + CONFIG.PCW_ACT_USB0_PERIPHERAL_FREQMHZ {60} \ + CONFIG.PCW_ACT_USB1_PERIPHERAL_FREQMHZ {60} \ + CONFIG.PCW_ACT_WDT_PERIPHERAL_FREQMHZ {108.333336} \ + CONFIG.PCW_APU_CLK_RATIO_ENABLE {6:2:1} \ + CONFIG.PCW_APU_PERIPHERAL_FREQMHZ {650} \ + CONFIG.PCW_ARMPLL_CTRL_FBDIV {26} \ + CONFIG.PCW_CAN0_BASEADDR {0xE0008000} \ + CONFIG.PCW_CAN0_HIGHADDR {0xE0008FFF} \ + CONFIG.PCW_CAN0_PERIPHERAL_CLKSRC {External} \ + CONFIG.PCW_CAN0_PERIPHERAL_FREQMHZ {-1} \ + CONFIG.PCW_CAN1_BASEADDR {0xE0009000} \ + CONFIG.PCW_CAN1_HIGHADDR {0xE0009FFF} \ + CONFIG.PCW_CAN1_PERIPHERAL_CLKSRC {External} \ + CONFIG.PCW_CAN1_PERIPHERAL_FREQMHZ {-1} \ + CONFIG.PCW_CAN_PERIPHERAL_CLKSRC {IO PLL} \ + CONFIG.PCW_CAN_PERIPHERAL_DIVISOR0 {1} \ + CONFIG.PCW_CAN_PERIPHERAL_DIVISOR1 {1} \ + CONFIG.PCW_CAN_PERIPHERAL_FREQMHZ {100} \ + CONFIG.PCW_CAN_PERIPHERAL_VALID {0} \ + CONFIG.PCW_CLK0_FREQ {100000000} \ + CONFIG.PCW_CLK1_FREQ {10000000} \ + CONFIG.PCW_CLK2_FREQ {10000000} \ + CONFIG.PCW_CLK3_FREQ {10000000} \ + CONFIG.PCW_CORE0_FIQ_INTR {0} \ + CONFIG.PCW_CORE0_IRQ_INTR {0} \ + CONFIG.PCW_CORE1_FIQ_INTR {0} \ + CONFIG.PCW_CORE1_IRQ_INTR {0} \ + CONFIG.PCW_CPU_CPU_6X4X_MAX_RANGE {667} \ + CONFIG.PCW_CPU_CPU_PLL_FREQMHZ {1300.000} \ + CONFIG.PCW_CPU_PERIPHERAL_CLKSRC {ARM PLL} \ + CONFIG.PCW_CPU_PERIPHERAL_DIVISOR0 {2} \ + CONFIG.PCW_CRYSTAL_PERIPHERAL_FREQMHZ {50} \ + CONFIG.PCW_DCI_PERIPHERAL_CLKSRC {DDR PLL} \ + CONFIG.PCW_DCI_PERIPHERAL_DIVISOR0 {52} \ + CONFIG.PCW_DCI_PERIPHERAL_DIVISOR1 {2} \ + CONFIG.PCW_DCI_PERIPHERAL_FREQMHZ {10.159} \ + CONFIG.PCW_DDRPLL_CTRL_FBDIV {21} \ + CONFIG.PCW_DDR_DDR_PLL_FREQMHZ {1050.000} \ + CONFIG.PCW_DDR_HPRLPR_QUEUE_PARTITION {HPR(0)/LPR(32)} \ + CONFIG.PCW_DDR_HPR_TO_CRITICAL_PRIORITY_LEVEL {15} \ + CONFIG.PCW_DDR_LPR_TO_CRITICAL_PRIORITY_LEVEL {2} \ + CONFIG.PCW_DDR_PERIPHERAL_CLKSRC {DDR PLL} \ + CONFIG.PCW_DDR_PERIPHERAL_DIVISOR0 {2} \ + CONFIG.PCW_DDR_PORT0_HPR_ENABLE {0} \ + CONFIG.PCW_DDR_PORT1_HPR_ENABLE {0} \ + CONFIG.PCW_DDR_PORT2_HPR_ENABLE {0} \ + CONFIG.PCW_DDR_PORT3_HPR_ENABLE {0} \ + CONFIG.PCW_DDR_RAM_BASEADDR {0x00100000} \ + CONFIG.PCW_DDR_RAM_HIGHADDR {0x1FFFFFFF} \ + CONFIG.PCW_DDR_WRITE_TO_CRITICAL_PRIORITY_LEVEL {2} \ + CONFIG.PCW_DM_WIDTH {4} \ + CONFIG.PCW_DQS_WIDTH {4} \ + CONFIG.PCW_DQ_WIDTH {32} \ + CONFIG.PCW_ENET0_BASEADDR {0xE000B000} \ + CONFIG.PCW_ENET0_ENET0_IO {MIO 16 .. 27} \ + CONFIG.PCW_ENET0_GRP_MDIO_ENABLE {1} \ + CONFIG.PCW_ENET0_GRP_MDIO_IO {MIO 52 .. 53} \ + CONFIG.PCW_ENET0_HIGHADDR {0xE000BFFF} \ + CONFIG.PCW_ENET0_PERIPHERAL_CLKSRC {IO PLL} \ + CONFIG.PCW_ENET0_PERIPHERAL_DIVISOR0 {8} \ + CONFIG.PCW_ENET0_PERIPHERAL_DIVISOR1 {1} \ + CONFIG.PCW_ENET0_PERIPHERAL_ENABLE {1} \ + CONFIG.PCW_ENET0_PERIPHERAL_FREQMHZ {1000 Mbps} \ + CONFIG.PCW_ENET0_RESET_ENABLE {1} \ + CONFIG.PCW_ENET0_RESET_IO {MIO 9} \ + CONFIG.PCW_ENET1_BASEADDR {0xE000C000} \ + CONFIG.PCW_ENET1_GRP_MDIO_ENABLE {0} \ + CONFIG.PCW_ENET1_HIGHADDR {0xE000CFFF} \ + CONFIG.PCW_ENET1_PERIPHERAL_CLKSRC {IO PLL} \ + CONFIG.PCW_ENET1_PERIPHERAL_DIVISOR0 {1} \ + CONFIG.PCW_ENET1_PERIPHERAL_DIVISOR1 {1} \ + CONFIG.PCW_ENET1_PERIPHERAL_ENABLE {0} \ + CONFIG.PCW_ENET1_PERIPHERAL_FREQMHZ {1000 Mbps} \ + CONFIG.PCW_ENET1_RESET_ENABLE {0} \ + CONFIG.PCW_ENET_RESET_ENABLE {1} \ + CONFIG.PCW_ENET_RESET_POLARITY {Active Low} \ + CONFIG.PCW_ENET_RESET_SELECT {Share reset pin} \ + CONFIG.PCW_EN_4K_TIMER {0} \ + CONFIG.PCW_EN_CAN0 {0} \ + CONFIG.PCW_EN_CAN1 {0} \ + CONFIG.PCW_EN_CLK0_PORT {1} \ + CONFIG.PCW_EN_CLK1_PORT {0} \ + CONFIG.PCW_EN_CLK2_PORT {0} \ + CONFIG.PCW_EN_CLK3_PORT {0} \ + CONFIG.PCW_EN_CLKTRIG0_PORT {0} \ + CONFIG.PCW_EN_CLKTRIG1_PORT {0} \ + CONFIG.PCW_EN_CLKTRIG2_PORT {0} \ + CONFIG.PCW_EN_CLKTRIG3_PORT {0} \ + CONFIG.PCW_EN_DDR {1} \ + CONFIG.PCW_EN_EMIO_CAN0 {0} \ + CONFIG.PCW_EN_EMIO_CAN1 {0} \ + CONFIG.PCW_EN_EMIO_CD_SDIO0 {0} \ + CONFIG.PCW_EN_EMIO_CD_SDIO1 {0} \ + CONFIG.PCW_EN_EMIO_ENET0 {0} \ + CONFIG.PCW_EN_EMIO_ENET1 {0} \ + CONFIG.PCW_EN_EMIO_GPIO {0} \ + CONFIG.PCW_EN_EMIO_I2C0 {0} \ + CONFIG.PCW_EN_EMIO_I2C1 {0} \ + CONFIG.PCW_EN_EMIO_MODEM_UART0 {0} \ + CONFIG.PCW_EN_EMIO_MODEM_UART1 {0} \ + CONFIG.PCW_EN_EMIO_PJTAG {0} \ + CONFIG.PCW_EN_EMIO_SDIO0 {0} \ + CONFIG.PCW_EN_EMIO_SDIO1 {0} \ + CONFIG.PCW_EN_EMIO_SPI0 {0} \ + CONFIG.PCW_EN_EMIO_SPI1 {0} \ + CONFIG.PCW_EN_EMIO_SRAM_INT {0} \ + CONFIG.PCW_EN_EMIO_TRACE {0} \ + CONFIG.PCW_EN_EMIO_TTC0 {0} \ + CONFIG.PCW_EN_EMIO_TTC1 {0} \ + CONFIG.PCW_EN_EMIO_UART0 {0} \ + CONFIG.PCW_EN_EMIO_UART1 {0} \ + CONFIG.PCW_EN_EMIO_WDT {0} \ + CONFIG.PCW_EN_EMIO_WP_SDIO0 {0} \ + CONFIG.PCW_EN_EMIO_WP_SDIO1 {0} \ + CONFIG.PCW_EN_ENET0 {1} \ + CONFIG.PCW_EN_ENET1 {0} \ + CONFIG.PCW_EN_GPIO {1} \ + CONFIG.PCW_EN_I2C0 {0} \ + CONFIG.PCW_EN_I2C1 {0} \ + CONFIG.PCW_EN_MODEM_UART0 {0} \ + CONFIG.PCW_EN_MODEM_UART1 {0} \ + CONFIG.PCW_EN_PJTAG {0} \ + CONFIG.PCW_EN_PTP_ENET0 {0} \ + CONFIG.PCW_EN_PTP_ENET1 {0} \ + CONFIG.PCW_EN_QSPI {1} \ + CONFIG.PCW_EN_RST0_PORT {1} \ + CONFIG.PCW_EN_RST1_PORT {0} \ + CONFIG.PCW_EN_RST2_PORT {0} \ + CONFIG.PCW_EN_RST3_PORT {0} \ + CONFIG.PCW_EN_SDIO0 {1} \ + CONFIG.PCW_EN_SDIO1 {0} \ + CONFIG.PCW_EN_SMC {0} \ + CONFIG.PCW_EN_SPI0 {0} \ + CONFIG.PCW_EN_SPI1 {0} \ + CONFIG.PCW_EN_TRACE {0} \ + CONFIG.PCW_EN_TTC0 {0} \ + CONFIG.PCW_EN_TTC1 {0} \ + CONFIG.PCW_EN_UART0 {1} \ + CONFIG.PCW_EN_UART1 {0} \ + CONFIG.PCW_EN_USB0 {1} \ + CONFIG.PCW_EN_USB1 {0} \ + CONFIG.PCW_EN_WDT {0} \ + CONFIG.PCW_FCLK0_PERIPHERAL_CLKSRC {IO PLL} \ + CONFIG.PCW_FCLK0_PERIPHERAL_DIVISOR0 {5} \ + CONFIG.PCW_FCLK0_PERIPHERAL_DIVISOR1 {2} \ + CONFIG.PCW_FCLK1_PERIPHERAL_CLKSRC {IO PLL} \ + CONFIG.PCW_FCLK1_PERIPHERAL_DIVISOR0 {1} \ + CONFIG.PCW_FCLK1_PERIPHERAL_DIVISOR1 {1} \ + CONFIG.PCW_FCLK2_PERIPHERAL_CLKSRC {IO PLL} \ + CONFIG.PCW_FCLK2_PERIPHERAL_DIVISOR0 {1} \ + CONFIG.PCW_FCLK2_PERIPHERAL_DIVISOR1 {1} \ + CONFIG.PCW_FCLK3_PERIPHERAL_CLKSRC {IO PLL} \ + CONFIG.PCW_FCLK3_PERIPHERAL_DIVISOR0 {1} \ + CONFIG.PCW_FCLK3_PERIPHERAL_DIVISOR1 {1} \ + CONFIG.PCW_FCLK_CLK0_BUF {TRUE} \ + CONFIG.PCW_FCLK_CLK1_BUF {FALSE} \ + CONFIG.PCW_FCLK_CLK2_BUF {FALSE} \ + CONFIG.PCW_FCLK_CLK3_BUF {FALSE} \ + CONFIG.PCW_FPGA0_PERIPHERAL_FREQMHZ {100} \ + CONFIG.PCW_FPGA1_PERIPHERAL_FREQMHZ {50} \ + CONFIG.PCW_FPGA2_PERIPHERAL_FREQMHZ {50} \ + CONFIG.PCW_FPGA3_PERIPHERAL_FREQMHZ {50} \ + CONFIG.PCW_FPGA_FCLK0_ENABLE {1} \ + CONFIG.PCW_FPGA_FCLK1_ENABLE {0} \ + CONFIG.PCW_FPGA_FCLK2_ENABLE {0} \ + CONFIG.PCW_FPGA_FCLK3_ENABLE {0} \ + CONFIG.PCW_GPIO_BASEADDR {0xE000A000} \ + CONFIG.PCW_GPIO_EMIO_GPIO_ENABLE {0} \ + CONFIG.PCW_GPIO_EMIO_GPIO_WIDTH {64} \ + CONFIG.PCW_GPIO_HIGHADDR {0xE000AFFF} \ + CONFIG.PCW_GPIO_MIO_GPIO_ENABLE {1} \ + CONFIG.PCW_GPIO_MIO_GPIO_IO {MIO} \ + CONFIG.PCW_GPIO_PERIPHERAL_ENABLE {0} \ + CONFIG.PCW_I2C0_BASEADDR {0xE0004000} \ + CONFIG.PCW_I2C0_HIGHADDR {0xE0004FFF} \ + CONFIG.PCW_I2C0_RESET_ENABLE {0} \ + CONFIG.PCW_I2C1_BASEADDR {0xE0005000} \ + CONFIG.PCW_I2C1_HIGHADDR {0xE0005FFF} \ + CONFIG.PCW_I2C1_RESET_ENABLE {0} \ + CONFIG.PCW_I2C_PERIPHERAL_FREQMHZ {25} \ + CONFIG.PCW_I2C_RESET_ENABLE {1} \ + CONFIG.PCW_I2C_RESET_POLARITY {Active Low} \ + CONFIG.PCW_IMPORT_BOARD_PRESET {None} \ + CONFIG.PCW_INCLUDE_ACP_TRANS_CHECK {0} \ + CONFIG.PCW_INCLUDE_TRACE_BUFFER {0} \ + CONFIG.PCW_IOPLL_CTRL_FBDIV {20} \ + CONFIG.PCW_IO_IO_PLL_FREQMHZ {1000.000} \ + CONFIG.PCW_IRQ_F2P_INTR {0} \ + CONFIG.PCW_IRQ_F2P_MODE {DIRECT} \ + CONFIG.PCW_MIO_0_DIRECTION {inout} \ + CONFIG.PCW_MIO_0_IOTYPE {LVCMOS 3.3V} \ + CONFIG.PCW_MIO_0_PULLUP {enabled} \ + CONFIG.PCW_MIO_0_SLEW {slow} \ + CONFIG.PCW_MIO_10_DIRECTION {inout} \ + CONFIG.PCW_MIO_10_IOTYPE {LVCMOS 3.3V} \ + CONFIG.PCW_MIO_10_PULLUP {enabled} \ + CONFIG.PCW_MIO_10_SLEW {slow} \ + CONFIG.PCW_MIO_11_DIRECTION {inout} \ + CONFIG.PCW_MIO_11_IOTYPE {LVCMOS 3.3V} \ + CONFIG.PCW_MIO_11_PULLUP {enabled} \ + CONFIG.PCW_MIO_11_SLEW {slow} \ + CONFIG.PCW_MIO_12_DIRECTION {inout} \ + CONFIG.PCW_MIO_12_IOTYPE {LVCMOS 3.3V} \ + CONFIG.PCW_MIO_12_PULLUP {enabled} \ + CONFIG.PCW_MIO_12_SLEW {slow} \ + CONFIG.PCW_MIO_13_DIRECTION {inout} \ + CONFIG.PCW_MIO_13_IOTYPE {LVCMOS 3.3V} \ + CONFIG.PCW_MIO_13_PULLUP {enabled} \ + CONFIG.PCW_MIO_13_SLEW {slow} \ + CONFIG.PCW_MIO_14_DIRECTION {in} \ + CONFIG.PCW_MIO_14_IOTYPE {LVCMOS 3.3V} \ + CONFIG.PCW_MIO_14_PULLUP {enabled} \ + CONFIG.PCW_MIO_14_SLEW {slow} \ + CONFIG.PCW_MIO_15_DIRECTION {out} \ + CONFIG.PCW_MIO_15_IOTYPE {LVCMOS 3.3V} \ + CONFIG.PCW_MIO_15_PULLUP {enabled} \ + CONFIG.PCW_MIO_15_SLEW {slow} \ + CONFIG.PCW_MIO_16_DIRECTION {out} \ + CONFIG.PCW_MIO_16_IOTYPE {LVCMOS 1.8V} \ + CONFIG.PCW_MIO_16_PULLUP {enabled} \ + CONFIG.PCW_MIO_16_SLEW {slow} \ + CONFIG.PCW_MIO_17_DIRECTION {out} \ + CONFIG.PCW_MIO_17_IOTYPE {LVCMOS 1.8V} \ + CONFIG.PCW_MIO_17_PULLUP {enabled} \ + CONFIG.PCW_MIO_17_SLEW {slow} \ + CONFIG.PCW_MIO_18_DIRECTION {out} \ + CONFIG.PCW_MIO_18_IOTYPE {LVCMOS 1.8V} \ + CONFIG.PCW_MIO_18_PULLUP {enabled} \ + CONFIG.PCW_MIO_18_SLEW {slow} \ + CONFIG.PCW_MIO_19_DIRECTION {out} \ + CONFIG.PCW_MIO_19_IOTYPE {LVCMOS 1.8V} \ + CONFIG.PCW_MIO_19_PULLUP {enabled} \ + CONFIG.PCW_MIO_19_SLEW {slow} \ + CONFIG.PCW_MIO_1_DIRECTION {out} \ + CONFIG.PCW_MIO_1_IOTYPE {LVCMOS 3.3V} \ + CONFIG.PCW_MIO_1_PULLUP {enabled} \ + CONFIG.PCW_MIO_1_SLEW {slow} \ + CONFIG.PCW_MIO_20_DIRECTION {out} \ + CONFIG.PCW_MIO_20_IOTYPE {LVCMOS 1.8V} \ + CONFIG.PCW_MIO_20_PULLUP {enabled} \ + CONFIG.PCW_MIO_20_SLEW {slow} \ + CONFIG.PCW_MIO_21_DIRECTION {out} \ + CONFIG.PCW_MIO_21_IOTYPE {LVCMOS 1.8V} \ + CONFIG.PCW_MIO_21_PULLUP {enabled} \ + CONFIG.PCW_MIO_21_SLEW {slow} \ + CONFIG.PCW_MIO_22_DIRECTION {in} \ + CONFIG.PCW_MIO_22_IOTYPE {LVCMOS 1.8V} \ + CONFIG.PCW_MIO_22_PULLUP {enabled} \ + CONFIG.PCW_MIO_22_SLEW {slow} \ + CONFIG.PCW_MIO_23_DIRECTION {in} \ + CONFIG.PCW_MIO_23_IOTYPE {LVCMOS 1.8V} \ + CONFIG.PCW_MIO_23_PULLUP {enabled} \ + CONFIG.PCW_MIO_23_SLEW {slow} \ + CONFIG.PCW_MIO_24_DIRECTION {in} \ + CONFIG.PCW_MIO_24_IOTYPE {LVCMOS 1.8V} \ + CONFIG.PCW_MIO_24_PULLUP {enabled} \ + CONFIG.PCW_MIO_24_SLEW {slow} \ + CONFIG.PCW_MIO_25_DIRECTION {in} \ + CONFIG.PCW_MIO_25_IOTYPE {LVCMOS 1.8V} \ + CONFIG.PCW_MIO_25_PULLUP {enabled} \ + CONFIG.PCW_MIO_25_SLEW {slow} \ + CONFIG.PCW_MIO_26_DIRECTION {in} \ + CONFIG.PCW_MIO_26_IOTYPE {LVCMOS 1.8V} \ + CONFIG.PCW_MIO_26_PULLUP {enabled} \ + CONFIG.PCW_MIO_26_SLEW {slow} \ + CONFIG.PCW_MIO_27_DIRECTION {in} \ + CONFIG.PCW_MIO_27_IOTYPE {LVCMOS 1.8V} \ + CONFIG.PCW_MIO_27_PULLUP {enabled} \ + CONFIG.PCW_MIO_27_SLEW {slow} \ + CONFIG.PCW_MIO_28_DIRECTION {inout} \ + CONFIG.PCW_MIO_28_IOTYPE {LVCMOS 1.8V} \ + CONFIG.PCW_MIO_28_PULLUP {enabled} \ + CONFIG.PCW_MIO_28_SLEW {slow} \ + CONFIG.PCW_MIO_29_DIRECTION {in} \ + CONFIG.PCW_MIO_29_IOTYPE {LVCMOS 1.8V} \ + CONFIG.PCW_MIO_29_PULLUP {enabled} \ + CONFIG.PCW_MIO_29_SLEW {slow} \ + CONFIG.PCW_MIO_2_DIRECTION {inout} \ + CONFIG.PCW_MIO_2_IOTYPE {LVCMOS 3.3V} \ + CONFIG.PCW_MIO_2_PULLUP {disabled} \ + CONFIG.PCW_MIO_2_SLEW {slow} \ + CONFIG.PCW_MIO_30_DIRECTION {out} \ + CONFIG.PCW_MIO_30_IOTYPE {LVCMOS 1.8V} \ + CONFIG.PCW_MIO_30_PULLUP {enabled} \ + CONFIG.PCW_MIO_30_SLEW {slow} \ + CONFIG.PCW_MIO_31_DIRECTION {in} \ + CONFIG.PCW_MIO_31_IOTYPE {LVCMOS 1.8V} \ + CONFIG.PCW_MIO_31_PULLUP {enabled} \ + CONFIG.PCW_MIO_31_SLEW {slow} \ + CONFIG.PCW_MIO_32_DIRECTION {inout} \ + CONFIG.PCW_MIO_32_IOTYPE {LVCMOS 1.8V} \ + CONFIG.PCW_MIO_32_PULLUP {enabled} \ + CONFIG.PCW_MIO_32_SLEW {slow} \ + CONFIG.PCW_MIO_33_DIRECTION {inout} \ + CONFIG.PCW_MIO_33_IOTYPE {LVCMOS 1.8V} \ + CONFIG.PCW_MIO_33_PULLUP {enabled} \ + CONFIG.PCW_MIO_33_SLEW {slow} \ + CONFIG.PCW_MIO_34_DIRECTION {inout} \ + CONFIG.PCW_MIO_34_IOTYPE {LVCMOS 1.8V} \ + CONFIG.PCW_MIO_34_PULLUP {enabled} \ + CONFIG.PCW_MIO_34_SLEW {slow} \ + CONFIG.PCW_MIO_35_DIRECTION {inout} \ + CONFIG.PCW_MIO_35_IOTYPE {LVCMOS 1.8V} \ + CONFIG.PCW_MIO_35_PULLUP {enabled} \ + CONFIG.PCW_MIO_35_SLEW {slow} \ + CONFIG.PCW_MIO_36_DIRECTION {in} \ + CONFIG.PCW_MIO_36_IOTYPE {LVCMOS 1.8V} \ + CONFIG.PCW_MIO_36_PULLUP {enabled} \ + CONFIG.PCW_MIO_36_SLEW {slow} \ + CONFIG.PCW_MIO_37_DIRECTION {inout} \ + CONFIG.PCW_MIO_37_IOTYPE {LVCMOS 1.8V} \ + CONFIG.PCW_MIO_37_PULLUP {enabled} \ + CONFIG.PCW_MIO_37_SLEW {slow} \ + CONFIG.PCW_MIO_38_DIRECTION {inout} \ + CONFIG.PCW_MIO_38_IOTYPE {LVCMOS 1.8V} \ + CONFIG.PCW_MIO_38_PULLUP {enabled} \ + CONFIG.PCW_MIO_38_SLEW {slow} \ + CONFIG.PCW_MIO_39_DIRECTION {inout} \ + CONFIG.PCW_MIO_39_IOTYPE {LVCMOS 1.8V} \ + CONFIG.PCW_MIO_39_PULLUP {enabled} \ + CONFIG.PCW_MIO_39_SLEW {slow} \ + CONFIG.PCW_MIO_3_DIRECTION {inout} \ + CONFIG.PCW_MIO_3_IOTYPE {LVCMOS 3.3V} \ + CONFIG.PCW_MIO_3_PULLUP {disabled} \ + CONFIG.PCW_MIO_3_SLEW {slow} \ + CONFIG.PCW_MIO_40_DIRECTION {inout} \ + CONFIG.PCW_MIO_40_IOTYPE {LVCMOS 1.8V} \ + CONFIG.PCW_MIO_40_PULLUP {enabled} \ + CONFIG.PCW_MIO_40_SLEW {slow} \ + CONFIG.PCW_MIO_41_DIRECTION {inout} \ + CONFIG.PCW_MIO_41_IOTYPE {LVCMOS 1.8V} \ + CONFIG.PCW_MIO_41_PULLUP {enabled} \ + CONFIG.PCW_MIO_41_SLEW {slow} \ + CONFIG.PCW_MIO_42_DIRECTION {inout} \ + CONFIG.PCW_MIO_42_IOTYPE {LVCMOS 1.8V} \ + CONFIG.PCW_MIO_42_PULLUP {enabled} \ + CONFIG.PCW_MIO_42_SLEW {slow} \ + CONFIG.PCW_MIO_43_DIRECTION {inout} \ + CONFIG.PCW_MIO_43_IOTYPE {LVCMOS 1.8V} \ + CONFIG.PCW_MIO_43_PULLUP {enabled} \ + CONFIG.PCW_MIO_43_SLEW {slow} \ + CONFIG.PCW_MIO_44_DIRECTION {inout} \ + CONFIG.PCW_MIO_44_IOTYPE {LVCMOS 1.8V} \ + CONFIG.PCW_MIO_44_PULLUP {enabled} \ + CONFIG.PCW_MIO_44_SLEW {slow} \ + CONFIG.PCW_MIO_45_DIRECTION {inout} \ + CONFIG.PCW_MIO_45_IOTYPE {LVCMOS 1.8V} \ + CONFIG.PCW_MIO_45_PULLUP {enabled} \ + CONFIG.PCW_MIO_45_SLEW {slow} \ + CONFIG.PCW_MIO_46_DIRECTION {out} \ + CONFIG.PCW_MIO_46_IOTYPE {LVCMOS 1.8V} \ + CONFIG.PCW_MIO_46_PULLUP {enabled} \ + CONFIG.PCW_MIO_46_SLEW {slow} \ + CONFIG.PCW_MIO_47_DIRECTION {in} \ + CONFIG.PCW_MIO_47_IOTYPE {LVCMOS 1.8V} \ + CONFIG.PCW_MIO_47_PULLUP {enabled} \ + CONFIG.PCW_MIO_47_SLEW {slow} \ + CONFIG.PCW_MIO_48_DIRECTION {inout} \ + CONFIG.PCW_MIO_48_IOTYPE {LVCMOS 1.8V} \ + CONFIG.PCW_MIO_48_PULLUP {enabled} \ + CONFIG.PCW_MIO_48_SLEW {slow} \ + CONFIG.PCW_MIO_49_DIRECTION {inout} \ + CONFIG.PCW_MIO_49_IOTYPE {LVCMOS 1.8V} \ + CONFIG.PCW_MIO_49_PULLUP {enabled} \ + CONFIG.PCW_MIO_49_SLEW {slow} \ + CONFIG.PCW_MIO_4_DIRECTION {inout} \ + CONFIG.PCW_MIO_4_IOTYPE {LVCMOS 3.3V} \ + CONFIG.PCW_MIO_4_PULLUP {disabled} \ + CONFIG.PCW_MIO_4_SLEW {slow} \ + CONFIG.PCW_MIO_50_DIRECTION {inout} \ + CONFIG.PCW_MIO_50_IOTYPE {LVCMOS 1.8V} \ + CONFIG.PCW_MIO_50_PULLUP {enabled} \ + CONFIG.PCW_MIO_50_SLEW {slow} \ + CONFIG.PCW_MIO_51_DIRECTION {inout} \ + CONFIG.PCW_MIO_51_IOTYPE {LVCMOS 1.8V} \ + CONFIG.PCW_MIO_51_PULLUP {enabled} \ + CONFIG.PCW_MIO_51_SLEW {slow} \ + CONFIG.PCW_MIO_52_DIRECTION {out} \ + CONFIG.PCW_MIO_52_IOTYPE {LVCMOS 1.8V} \ + CONFIG.PCW_MIO_52_PULLUP {enabled} \ + CONFIG.PCW_MIO_52_SLEW {slow} \ + CONFIG.PCW_MIO_53_DIRECTION {inout} \ + CONFIG.PCW_MIO_53_IOTYPE {LVCMOS 1.8V} \ + CONFIG.PCW_MIO_53_PULLUP {enabled} \ + CONFIG.PCW_MIO_53_SLEW {slow} \ + CONFIG.PCW_MIO_5_DIRECTION {inout} \ + CONFIG.PCW_MIO_5_IOTYPE {LVCMOS 3.3V} \ + CONFIG.PCW_MIO_5_PULLUP {disabled} \ + CONFIG.PCW_MIO_5_SLEW {slow} \ + CONFIG.PCW_MIO_6_DIRECTION {out} \ + CONFIG.PCW_MIO_6_IOTYPE {LVCMOS 3.3V} \ + CONFIG.PCW_MIO_6_PULLUP {disabled} \ + CONFIG.PCW_MIO_6_SLEW {slow} \ + CONFIG.PCW_MIO_7_DIRECTION {out} \ + CONFIG.PCW_MIO_7_IOTYPE {LVCMOS 3.3V} \ + CONFIG.PCW_MIO_7_PULLUP {disabled} \ + CONFIG.PCW_MIO_7_SLEW {slow} \ + CONFIG.PCW_MIO_8_DIRECTION {out} \ + CONFIG.PCW_MIO_8_IOTYPE {LVCMOS 3.3V} \ + CONFIG.PCW_MIO_8_PULLUP {disabled} \ + CONFIG.PCW_MIO_8_SLEW {slow} \ + CONFIG.PCW_MIO_9_DIRECTION {out} \ + CONFIG.PCW_MIO_9_IOTYPE {LVCMOS 3.3V} \ + CONFIG.PCW_MIO_9_PULLUP {enabled} \ + CONFIG.PCW_MIO_9_SLEW {slow} \ + CONFIG.PCW_MIO_PRIMITIVE {54} \ + CONFIG.PCW_MIO_TREE_PERIPHERALS {GPIO#Quad SPI Flash#Quad SPI Flash#Quad SPI Flash#Quad SPI Flash#Quad SPI Flash#Quad SPI Flash#GPIO#Quad SPI Flash#ENET Reset#GPIO#GPIO#GPIO#GPIO#UART 0#UART 0#Enet 0#Enet 0#Enet 0#Enet 0#Enet 0#Enet 0#Enet 0#Enet 0#Enet 0#Enet 0#Enet 0#Enet 0#USB 0#USB 0#USB 0#USB 0#USB 0#USB 0#USB 0#USB 0#USB 0#USB 0#USB 0#USB 0#SD 0#SD 0#SD 0#SD 0#SD 0#SD 0#USB Reset#SD 0#GPIO#GPIO#GPIO#GPIO#Enet 0#Enet 0} \ + CONFIG.PCW_MIO_TREE_SIGNALS {gpio[0]#qspi0_ss_b#qspi0_io[0]#qspi0_io[1]#qspi0_io[2]#qspi0_io[3]/HOLD_B#qspi0_sclk#gpio[7]#qspi_fbclk#reset#gpio[10]#gpio[11]#gpio[12]#gpio[13]#rx#tx#tx_clk#txd[0]#txd[1]#txd[2]#txd[3]#tx_ctl#rx_clk#rxd[0]#rxd[1]#rxd[2]#rxd[3]#rx_ctl#data[4]#dir#stp#nxt#data[0]#data[1]#data[2]#data[3]#clk#data[5]#data[6]#data[7]#clk#cmd#data[0]#data[1]#data[2]#data[3]#reset#cd#gpio[48]#gpio[49]#gpio[50]#gpio[51]#mdc#mdio} \ + CONFIG.PCW_M_AXI_GP0_ENABLE_STATIC_REMAP {0} \ + CONFIG.PCW_M_AXI_GP0_ID_WIDTH {12} \ + CONFIG.PCW_M_AXI_GP0_SUPPORT_NARROW_BURST {0} \ + CONFIG.PCW_M_AXI_GP0_THREAD_ID_WIDTH {12} \ + CONFIG.PCW_M_AXI_GP1_ENABLE_STATIC_REMAP {0} \ + CONFIG.PCW_M_AXI_GP1_ID_WIDTH {12} \ + CONFIG.PCW_M_AXI_GP1_SUPPORT_NARROW_BURST {0} \ + CONFIG.PCW_M_AXI_GP1_THREAD_ID_WIDTH {12} \ + CONFIG.PCW_NAND_CYCLES_T_AR {1} \ + CONFIG.PCW_NAND_CYCLES_T_CLR {1} \ + CONFIG.PCW_NAND_CYCLES_T_RC {11} \ + CONFIG.PCW_NAND_CYCLES_T_REA {1} \ + CONFIG.PCW_NAND_CYCLES_T_RR {1} \ + CONFIG.PCW_NAND_CYCLES_T_WC {11} \ + CONFIG.PCW_NAND_CYCLES_T_WP {1} \ + CONFIG.PCW_NAND_GRP_D8_ENABLE {0} \ + CONFIG.PCW_NAND_PERIPHERAL_ENABLE {0} \ + CONFIG.PCW_NOR_CS0_T_CEOE {1} \ + CONFIG.PCW_NOR_CS0_T_PC {1} \ + CONFIG.PCW_NOR_CS0_T_RC {11} \ + CONFIG.PCW_NOR_CS0_T_TR {1} \ + CONFIG.PCW_NOR_CS0_T_WC {11} \ + CONFIG.PCW_NOR_CS0_T_WP {1} \ + CONFIG.PCW_NOR_CS0_WE_TIME {0} \ + CONFIG.PCW_NOR_CS1_T_CEOE {1} \ + CONFIG.PCW_NOR_CS1_T_PC {1} \ + CONFIG.PCW_NOR_CS1_T_RC {11} \ + CONFIG.PCW_NOR_CS1_T_TR {1} \ + CONFIG.PCW_NOR_CS1_T_WC {11} \ + CONFIG.PCW_NOR_CS1_T_WP {1} \ + CONFIG.PCW_NOR_CS1_WE_TIME {0} \ + CONFIG.PCW_NOR_GRP_A25_ENABLE {0} \ + CONFIG.PCW_NOR_GRP_CS0_ENABLE {0} \ + CONFIG.PCW_NOR_GRP_CS1_ENABLE {0} \ + CONFIG.PCW_NOR_GRP_SRAM_CS0_ENABLE {0} \ + CONFIG.PCW_NOR_GRP_SRAM_CS1_ENABLE {0} \ + CONFIG.PCW_NOR_GRP_SRAM_INT_ENABLE {0} \ + CONFIG.PCW_NOR_PERIPHERAL_ENABLE {0} \ + CONFIG.PCW_NOR_SRAM_CS0_T_CEOE {1} \ + CONFIG.PCW_NOR_SRAM_CS0_T_PC {1} \ + CONFIG.PCW_NOR_SRAM_CS0_T_RC {11} \ + CONFIG.PCW_NOR_SRAM_CS0_T_TR {1} \ + CONFIG.PCW_NOR_SRAM_CS0_T_WC {11} \ + CONFIG.PCW_NOR_SRAM_CS0_T_WP {1} \ + CONFIG.PCW_NOR_SRAM_CS0_WE_TIME {0} \ + CONFIG.PCW_NOR_SRAM_CS1_T_CEOE {1} \ + CONFIG.PCW_NOR_SRAM_CS1_T_PC {1} \ + CONFIG.PCW_NOR_SRAM_CS1_T_RC {11} \ + CONFIG.PCW_NOR_SRAM_CS1_T_TR {1} \ + CONFIG.PCW_NOR_SRAM_CS1_T_WC {11} \ + CONFIG.PCW_NOR_SRAM_CS1_T_WP {1} \ + CONFIG.PCW_NOR_SRAM_CS1_WE_TIME {0} \ + CONFIG.PCW_OVERRIDE_BASIC_CLOCK {0} \ + CONFIG.PCW_P2F_CAN0_INTR {0} \ + CONFIG.PCW_P2F_CAN1_INTR {0} \ + CONFIG.PCW_P2F_CTI_INTR {0} \ + CONFIG.PCW_P2F_DMAC0_INTR {0} \ + CONFIG.PCW_P2F_DMAC1_INTR {0} \ + CONFIG.PCW_P2F_DMAC2_INTR {0} \ + CONFIG.PCW_P2F_DMAC3_INTR {0} \ + CONFIG.PCW_P2F_DMAC4_INTR {0} \ + CONFIG.PCW_P2F_DMAC5_INTR {0} \ + CONFIG.PCW_P2F_DMAC6_INTR {0} \ + CONFIG.PCW_P2F_DMAC7_INTR {0} \ + CONFIG.PCW_P2F_DMAC_ABORT_INTR {0} \ + CONFIG.PCW_P2F_ENET0_INTR {0} \ + CONFIG.PCW_P2F_ENET1_INTR {0} \ + CONFIG.PCW_P2F_GPIO_INTR {0} \ + CONFIG.PCW_P2F_I2C0_INTR {0} \ + CONFIG.PCW_P2F_I2C1_INTR {0} \ + CONFIG.PCW_P2F_QSPI_INTR {0} \ + CONFIG.PCW_P2F_SDIO0_INTR {0} \ + CONFIG.PCW_P2F_SDIO1_INTR {0} \ + CONFIG.PCW_P2F_SMC_INTR {0} \ + CONFIG.PCW_P2F_SPI0_INTR {0} \ + CONFIG.PCW_P2F_SPI1_INTR {0} \ + CONFIG.PCW_P2F_UART0_INTR {0} \ + CONFIG.PCW_P2F_UART1_INTR {0} \ + CONFIG.PCW_P2F_USB0_INTR {0} \ + CONFIG.PCW_P2F_USB1_INTR {0} \ + CONFIG.PCW_PACKAGE_DDR_BOARD_DELAY0 {0.223} \ + CONFIG.PCW_PACKAGE_DDR_BOARD_DELAY1 {0.212} \ + CONFIG.PCW_PACKAGE_DDR_BOARD_DELAY2 {0.085} \ + CONFIG.PCW_PACKAGE_DDR_BOARD_DELAY3 {0.092} \ + CONFIG.PCW_PACKAGE_DDR_DQS_TO_CLK_DELAY_0 {0.040} \ + CONFIG.PCW_PACKAGE_DDR_DQS_TO_CLK_DELAY_1 {0.058} \ + CONFIG.PCW_PACKAGE_DDR_DQS_TO_CLK_DELAY_2 {-0.009} \ + CONFIG.PCW_PACKAGE_DDR_DQS_TO_CLK_DELAY_3 {-0.033} \ + CONFIG.PCW_PACKAGE_NAME {clg400} \ + CONFIG.PCW_PCAP_PERIPHERAL_CLKSRC {IO PLL} \ + CONFIG.PCW_PCAP_PERIPHERAL_DIVISOR0 {5} \ + CONFIG.PCW_PCAP_PERIPHERAL_FREQMHZ {200} \ + CONFIG.PCW_PERIPHERAL_BOARD_PRESET {None} \ + CONFIG.PCW_PLL_BYPASSMODE_ENABLE {0} \ + CONFIG.PCW_PRESET_BANK0_VOLTAGE {LVCMOS 3.3V} \ + CONFIG.PCW_PRESET_BANK1_VOLTAGE {LVCMOS 1.8V} \ + CONFIG.PCW_PS7_SI_REV {PRODUCTION} \ + CONFIG.PCW_QSPI_GRP_FBCLK_ENABLE {1} \ + CONFIG.PCW_QSPI_GRP_FBCLK_IO {MIO 8} \ + CONFIG.PCW_QSPI_GRP_IO1_ENABLE {0} \ + CONFIG.PCW_QSPI_GRP_SINGLE_SS_ENABLE {1} \ + CONFIG.PCW_QSPI_GRP_SINGLE_SS_IO {MIO 1 .. 6} \ + CONFIG.PCW_QSPI_GRP_SS1_ENABLE {0} \ + CONFIG.PCW_QSPI_INTERNAL_HIGHADDRESS {0xFCFFFFFF} \ + CONFIG.PCW_QSPI_PERIPHERAL_CLKSRC {IO PLL} \ + CONFIG.PCW_QSPI_PERIPHERAL_DIVISOR0 {5} \ + CONFIG.PCW_QSPI_PERIPHERAL_ENABLE {1} \ + CONFIG.PCW_QSPI_PERIPHERAL_FREQMHZ {200} \ + CONFIG.PCW_QSPI_QSPI_IO {MIO 1 .. 6} \ + CONFIG.PCW_SD0_GRP_CD_ENABLE {1} \ + CONFIG.PCW_SD0_GRP_CD_IO {MIO 47} \ + CONFIG.PCW_SD0_GRP_POW_ENABLE {0} \ + CONFIG.PCW_SD0_GRP_WP_ENABLE {0} \ + CONFIG.PCW_SD0_PERIPHERAL_ENABLE {1} \ + CONFIG.PCW_SD0_SD0_IO {MIO 40 .. 45} \ + CONFIG.PCW_SD1_GRP_CD_ENABLE {0} \ + CONFIG.PCW_SD1_GRP_POW_ENABLE {0} \ + CONFIG.PCW_SD1_GRP_WP_ENABLE {0} \ + CONFIG.PCW_SD1_PERIPHERAL_ENABLE {0} \ + CONFIG.PCW_SDIO0_BASEADDR {0xE0100000} \ + CONFIG.PCW_SDIO0_HIGHADDR {0xE0100FFF} \ + CONFIG.PCW_SDIO1_BASEADDR {0xE0101000} \ + CONFIG.PCW_SDIO1_HIGHADDR {0xE0101FFF} \ + CONFIG.PCW_SDIO_PERIPHERAL_CLKSRC {IO PLL} \ + CONFIG.PCW_SDIO_PERIPHERAL_DIVISOR0 {20} \ + CONFIG.PCW_SDIO_PERIPHERAL_FREQMHZ {50} \ + CONFIG.PCW_SDIO_PERIPHERAL_VALID {1} \ + CONFIG.PCW_SINGLE_QSPI_DATA_MODE {x4} \ + CONFIG.PCW_SMC_CYCLE_T0 {NA} \ + CONFIG.PCW_SMC_CYCLE_T1 {NA} \ + CONFIG.PCW_SMC_CYCLE_T2 {NA} \ + CONFIG.PCW_SMC_CYCLE_T3 {NA} \ + CONFIG.PCW_SMC_CYCLE_T4 {NA} \ + CONFIG.PCW_SMC_CYCLE_T5 {NA} \ + CONFIG.PCW_SMC_CYCLE_T6 {NA} \ + CONFIG.PCW_SMC_PERIPHERAL_CLKSRC {IO PLL} \ + CONFIG.PCW_SMC_PERIPHERAL_DIVISOR0 {1} \ + CONFIG.PCW_SMC_PERIPHERAL_FREQMHZ {100} \ + CONFIG.PCW_SMC_PERIPHERAL_VALID {0} \ + CONFIG.PCW_SPI0_BASEADDR {0xE0006000} \ + CONFIG.PCW_SPI0_GRP_SS0_ENABLE {0} \ + CONFIG.PCW_SPI0_GRP_SS1_ENABLE {0} \ + CONFIG.PCW_SPI0_GRP_SS2_ENABLE {0} \ + CONFIG.PCW_SPI0_HIGHADDR {0xE0006FFF} \ + CONFIG.PCW_SPI0_PERIPHERAL_ENABLE {0} \ + CONFIG.PCW_SPI1_BASEADDR {0xE0007000} \ + CONFIG.PCW_SPI1_GRP_SS0_ENABLE {0} \ + CONFIG.PCW_SPI1_GRP_SS1_ENABLE {0} \ + CONFIG.PCW_SPI1_GRP_SS2_ENABLE {0} \ + CONFIG.PCW_SPI1_HIGHADDR {0xE0007FFF} \ + CONFIG.PCW_SPI1_PERIPHERAL_ENABLE {0} \ + CONFIG.PCW_SPI_PERIPHERAL_CLKSRC {IO PLL} \ + CONFIG.PCW_SPI_PERIPHERAL_DIVISOR0 {1} \ + CONFIG.PCW_SPI_PERIPHERAL_FREQMHZ {166.666666} \ + CONFIG.PCW_SPI_PERIPHERAL_VALID {0} \ + CONFIG.PCW_S_AXI_ACP_ARUSER_VAL {31} \ + CONFIG.PCW_S_AXI_ACP_AWUSER_VAL {31} \ + CONFIG.PCW_S_AXI_ACP_ID_WIDTH {3} \ + CONFIG.PCW_S_AXI_GP0_ID_WIDTH {6} \ + CONFIG.PCW_S_AXI_GP1_ID_WIDTH {6} \ + CONFIG.PCW_S_AXI_HP0_DATA_WIDTH {64} \ + CONFIG.PCW_S_AXI_HP0_ID_WIDTH {6} \ + CONFIG.PCW_S_AXI_HP1_DATA_WIDTH {64} \ + CONFIG.PCW_S_AXI_HP1_ID_WIDTH {6} \ + CONFIG.PCW_S_AXI_HP2_DATA_WIDTH {64} \ + CONFIG.PCW_S_AXI_HP2_ID_WIDTH {6} \ + CONFIG.PCW_S_AXI_HP3_DATA_WIDTH {64} \ + CONFIG.PCW_S_AXI_HP3_ID_WIDTH {6} \ + CONFIG.PCW_TPIU_PERIPHERAL_CLKSRC {External} \ + CONFIG.PCW_TPIU_PERIPHERAL_DIVISOR0 {1} \ + CONFIG.PCW_TPIU_PERIPHERAL_FREQMHZ {200} \ + CONFIG.PCW_TRACE_BUFFER_CLOCK_DELAY {12} \ + CONFIG.PCW_TRACE_BUFFER_FIFO_SIZE {128} \ + CONFIG.PCW_TRACE_PIPELINE_WIDTH {8} \ + CONFIG.PCW_TTC0_BASEADDR {0xE0104000} \ + CONFIG.PCW_TTC0_CLK0_PERIPHERAL_CLKSRC {CPU_1X} \ + CONFIG.PCW_TTC0_CLK0_PERIPHERAL_DIVISOR0 {1} \ + CONFIG.PCW_TTC0_CLK0_PERIPHERAL_FREQMHZ {133.333333} \ + CONFIG.PCW_TTC0_CLK1_PERIPHERAL_CLKSRC {CPU_1X} \ + CONFIG.PCW_TTC0_CLK1_PERIPHERAL_DIVISOR0 {1} \ + CONFIG.PCW_TTC0_CLK1_PERIPHERAL_FREQMHZ {133.333333} \ + CONFIG.PCW_TTC0_CLK2_PERIPHERAL_CLKSRC {CPU_1X} \ + CONFIG.PCW_TTC0_CLK2_PERIPHERAL_DIVISOR0 {1} \ + CONFIG.PCW_TTC0_CLK2_PERIPHERAL_FREQMHZ {133.333333} \ + CONFIG.PCW_TTC0_HIGHADDR {0xE0104fff} \ + CONFIG.PCW_TTC1_BASEADDR {0xE0105000} \ + CONFIG.PCW_TTC1_CLK0_PERIPHERAL_CLKSRC {CPU_1X} \ + CONFIG.PCW_TTC1_CLK0_PERIPHERAL_DIVISOR0 {1} \ + CONFIG.PCW_TTC1_CLK0_PERIPHERAL_FREQMHZ {133.333333} \ + CONFIG.PCW_TTC1_CLK1_PERIPHERAL_CLKSRC {CPU_1X} \ + CONFIG.PCW_TTC1_CLK1_PERIPHERAL_DIVISOR0 {1} \ + CONFIG.PCW_TTC1_CLK1_PERIPHERAL_FREQMHZ {133.333333} \ + CONFIG.PCW_TTC1_CLK2_PERIPHERAL_CLKSRC {CPU_1X} \ + CONFIG.PCW_TTC1_CLK2_PERIPHERAL_DIVISOR0 {1} \ + CONFIG.PCW_TTC1_CLK2_PERIPHERAL_FREQMHZ {133.333333} \ + CONFIG.PCW_TTC1_HIGHADDR {0xE0105fff} \ + CONFIG.PCW_TTC_PERIPHERAL_FREQMHZ {50} \ + CONFIG.PCW_UART0_BASEADDR {0xE0000000} \ + CONFIG.PCW_UART0_BAUD_RATE {115200} \ + CONFIG.PCW_UART0_GRP_FULL_ENABLE {0} \ + CONFIG.PCW_UART0_HIGHADDR {0xE0000FFF} \ + CONFIG.PCW_UART0_PERIPHERAL_ENABLE {1} \ + CONFIG.PCW_UART0_UART0_IO {MIO 14 .. 15} \ + CONFIG.PCW_UART1_BASEADDR {0xE0001000} \ + CONFIG.PCW_UART1_BAUD_RATE {115200} \ + CONFIG.PCW_UART1_GRP_FULL_ENABLE {0} \ + CONFIG.PCW_UART1_HIGHADDR {0xE0001FFF} \ + CONFIG.PCW_UART1_PERIPHERAL_ENABLE {0} \ + CONFIG.PCW_UART_PERIPHERAL_CLKSRC {IO PLL} \ + CONFIG.PCW_UART_PERIPHERAL_DIVISOR0 {10} \ + CONFIG.PCW_UART_PERIPHERAL_FREQMHZ {100} \ + CONFIG.PCW_UART_PERIPHERAL_VALID {1} \ + CONFIG.PCW_UIPARAM_ACT_DDR_FREQ_MHZ {525.000000} \ + CONFIG.PCW_UIPARAM_DDR_ADV_ENABLE {0} \ + CONFIG.PCW_UIPARAM_DDR_AL {0} \ + CONFIG.PCW_UIPARAM_DDR_BANK_ADDR_COUNT {3} \ + CONFIG.PCW_UIPARAM_DDR_BL {8} \ + CONFIG.PCW_UIPARAM_DDR_BOARD_DELAY0 {0.223} \ + CONFIG.PCW_UIPARAM_DDR_BOARD_DELAY1 {0.212} \ + CONFIG.PCW_UIPARAM_DDR_BOARD_DELAY2 {0.085} \ + CONFIG.PCW_UIPARAM_DDR_BOARD_DELAY3 {0.092} \ + CONFIG.PCW_UIPARAM_DDR_BUS_WIDTH {16 Bit} \ + CONFIG.PCW_UIPARAM_DDR_CL {7} \ + CONFIG.PCW_UIPARAM_DDR_CLOCK_0_LENGTH_MM {25.8} \ + CONFIG.PCW_UIPARAM_DDR_CLOCK_0_PACKAGE_LENGTH {80.4535} \ + CONFIG.PCW_UIPARAM_DDR_CLOCK_0_PROPOGATION_DELAY {160} \ + CONFIG.PCW_UIPARAM_DDR_CLOCK_1_LENGTH_MM {25.8} \ + CONFIG.PCW_UIPARAM_DDR_CLOCK_1_PACKAGE_LENGTH {80.4535} \ + CONFIG.PCW_UIPARAM_DDR_CLOCK_1_PROPOGATION_DELAY {160} \ + CONFIG.PCW_UIPARAM_DDR_CLOCK_2_LENGTH_MM {0} \ + CONFIG.PCW_UIPARAM_DDR_CLOCK_2_PACKAGE_LENGTH {80.4535} \ + CONFIG.PCW_UIPARAM_DDR_CLOCK_2_PROPOGATION_DELAY {160} \ + CONFIG.PCW_UIPARAM_DDR_CLOCK_3_LENGTH_MM {0} \ + CONFIG.PCW_UIPARAM_DDR_CLOCK_3_PACKAGE_LENGTH {80.4535} \ + CONFIG.PCW_UIPARAM_DDR_CLOCK_3_PROPOGATION_DELAY {160} \ + CONFIG.PCW_UIPARAM_DDR_CLOCK_STOP_EN {0} \ + CONFIG.PCW_UIPARAM_DDR_COL_ADDR_COUNT {10} \ + CONFIG.PCW_UIPARAM_DDR_CWL {6} \ + CONFIG.PCW_UIPARAM_DDR_DEVICE_CAPACITY {4096 MBits} \ + CONFIG.PCW_UIPARAM_DDR_DQS_0_LENGTH_MM {15.6} \ + CONFIG.PCW_UIPARAM_DDR_DQS_0_PACKAGE_LENGTH {105.056} \ + CONFIG.PCW_UIPARAM_DDR_DQS_0_PROPOGATION_DELAY {160} \ + CONFIG.PCW_UIPARAM_DDR_DQS_1_LENGTH_MM {18.8} \ + CONFIG.PCW_UIPARAM_DDR_DQS_1_PACKAGE_LENGTH {66.904} \ + CONFIG.PCW_UIPARAM_DDR_DQS_1_PROPOGATION_DELAY {160} \ + CONFIG.PCW_UIPARAM_DDR_DQS_2_LENGTH_MM {0} \ + CONFIG.PCW_UIPARAM_DDR_DQS_2_PACKAGE_LENGTH {89.1715} \ + CONFIG.PCW_UIPARAM_DDR_DQS_2_PROPOGATION_DELAY {160} \ + CONFIG.PCW_UIPARAM_DDR_DQS_3_LENGTH_MM {0} \ + CONFIG.PCW_UIPARAM_DDR_DQS_3_PACKAGE_LENGTH {113.63} \ + CONFIG.PCW_UIPARAM_DDR_DQS_3_PROPOGATION_DELAY {160} \ + CONFIG.PCW_UIPARAM_DDR_DQS_TO_CLK_DELAY_0 {0.040} \ + CONFIG.PCW_UIPARAM_DDR_DQS_TO_CLK_DELAY_1 {0.058} \ + CONFIG.PCW_UIPARAM_DDR_DQS_TO_CLK_DELAY_2 {-0.009} \ + CONFIG.PCW_UIPARAM_DDR_DQS_TO_CLK_DELAY_3 {-0.033} \ + CONFIG.PCW_UIPARAM_DDR_DQ_0_LENGTH_MM {16.5} \ + CONFIG.PCW_UIPARAM_DDR_DQ_0_PACKAGE_LENGTH {98.503} \ + CONFIG.PCW_UIPARAM_DDR_DQ_0_PROPOGATION_DELAY {160} \ + CONFIG.PCW_UIPARAM_DDR_DQ_1_LENGTH_MM {18} \ + CONFIG.PCW_UIPARAM_DDR_DQ_1_PACKAGE_LENGTH {68.5855} \ + CONFIG.PCW_UIPARAM_DDR_DQ_1_PROPOGATION_DELAY {160} \ + CONFIG.PCW_UIPARAM_DDR_DQ_2_LENGTH_MM {0} \ + CONFIG.PCW_UIPARAM_DDR_DQ_2_PACKAGE_LENGTH {90.295} \ + CONFIG.PCW_UIPARAM_DDR_DQ_2_PROPOGATION_DELAY {160} \ + CONFIG.PCW_UIPARAM_DDR_DQ_3_LENGTH_MM {0} \ + CONFIG.PCW_UIPARAM_DDR_DQ_3_PACKAGE_LENGTH {103.977} \ + CONFIG.PCW_UIPARAM_DDR_DQ_3_PROPOGATION_DELAY {160} \ + CONFIG.PCW_UIPARAM_DDR_DRAM_WIDTH {16 Bits} \ + CONFIG.PCW_UIPARAM_DDR_ECC {Disabled} \ + CONFIG.PCW_UIPARAM_DDR_ENABLE {1} \ + CONFIG.PCW_UIPARAM_DDR_FREQ_MHZ {525} \ + CONFIG.PCW_UIPARAM_DDR_HIGH_TEMP {Normal (0-85)} \ + CONFIG.PCW_UIPARAM_DDR_MEMORY_TYPE {DDR 3} \ + CONFIG.PCW_UIPARAM_DDR_PARTNO {MT41J256M16 RE-125} \ + CONFIG.PCW_UIPARAM_DDR_ROW_ADDR_COUNT {15} \ + CONFIG.PCW_UIPARAM_DDR_SPEED_BIN {DDR3_1066F} \ + CONFIG.PCW_UIPARAM_DDR_TRAIN_DATA_EYE {1} \ + CONFIG.PCW_UIPARAM_DDR_TRAIN_READ_GATE {1} \ + CONFIG.PCW_UIPARAM_DDR_TRAIN_WRITE_LEVEL {1} \ + CONFIG.PCW_UIPARAM_DDR_T_FAW {40.0} \ + CONFIG.PCW_UIPARAM_DDR_T_RAS_MIN {35.0} \ + CONFIG.PCW_UIPARAM_DDR_T_RC {48.91} \ + CONFIG.PCW_UIPARAM_DDR_T_RCD {7} \ + CONFIG.PCW_UIPARAM_DDR_T_RP {7} \ + CONFIG.PCW_UIPARAM_DDR_USE_INTERNAL_VREF {0} \ + CONFIG.PCW_UIPARAM_GENERATE_SUMMARY {NA} \ + CONFIG.PCW_USB0_BASEADDR {0xE0102000} \ + CONFIG.PCW_USB0_HIGHADDR {0xE0102fff} \ + CONFIG.PCW_USB0_PERIPHERAL_ENABLE {1} \ + CONFIG.PCW_USB0_PERIPHERAL_FREQMHZ {60} \ + CONFIG.PCW_USB0_RESET_ENABLE {1} \ + CONFIG.PCW_USB0_RESET_IO {MIO 46} \ + CONFIG.PCW_USB0_USB0_IO {MIO 28 .. 39} \ + CONFIG.PCW_USB1_BASEADDR {0xE0103000} \ + CONFIG.PCW_USB1_HIGHADDR {0xE0103fff} \ + CONFIG.PCW_USB1_PERIPHERAL_ENABLE {0} \ + CONFIG.PCW_USB1_PERIPHERAL_FREQMHZ {60} \ + CONFIG.PCW_USB1_RESET_ENABLE {0} \ + CONFIG.PCW_USB_RESET_ENABLE {1} \ + CONFIG.PCW_USB_RESET_POLARITY {Active Low} \ + CONFIG.PCW_USB_RESET_SELECT {Share reset pin} \ + CONFIG.PCW_USE_AXI_FABRIC_IDLE {0} \ + CONFIG.PCW_USE_AXI_NONSECURE {0} \ + CONFIG.PCW_USE_CORESIGHT {0} \ + CONFIG.PCW_USE_CROSS_TRIGGER {0} \ + CONFIG.PCW_USE_CR_FABRIC {1} \ + CONFIG.PCW_USE_DDR_BYPASS {0} \ + CONFIG.PCW_USE_DEBUG {0} \ + CONFIG.PCW_USE_DEFAULT_ACP_USER_VAL {0} \ + CONFIG.PCW_USE_DMA0 {0} \ + CONFIG.PCW_USE_DMA1 {0} \ + CONFIG.PCW_USE_DMA2 {0} \ + CONFIG.PCW_USE_DMA3 {0} \ + CONFIG.PCW_USE_EXPANDED_IOP {0} \ + CONFIG.PCW_USE_EXPANDED_PS_SLCR_REGISTERS {0} \ + CONFIG.PCW_USE_FABRIC_INTERRUPT {0} \ + CONFIG.PCW_USE_HIGH_OCM {0} \ + CONFIG.PCW_USE_M_AXI_GP0 {1} \ + CONFIG.PCW_USE_M_AXI_GP1 {0} \ + CONFIG.PCW_USE_PROC_EVENT_BUS {0} \ + CONFIG.PCW_USE_PS_SLCR_REGISTERS {0} \ + CONFIG.PCW_USE_S_AXI_ACP {0} \ + CONFIG.PCW_USE_S_AXI_GP0 {0} \ + CONFIG.PCW_USE_S_AXI_GP1 {0} \ + CONFIG.PCW_USE_S_AXI_HP0 {1} \ + CONFIG.PCW_USE_S_AXI_HP1 {1} \ + CONFIG.PCW_USE_S_AXI_HP2 {1} \ + CONFIG.PCW_USE_S_AXI_HP3 {0} \ + CONFIG.PCW_USE_TRACE {0} \ + CONFIG.PCW_USE_TRACE_DATA_EDGE_DETECTOR {0} \ + CONFIG.PCW_VALUE_SILVERSION {3} \ + CONFIG.PCW_WDT_PERIPHERAL_CLKSRC {CPU_1X} \ + CONFIG.PCW_WDT_PERIPHERAL_DIVISOR0 {1} \ + CONFIG.PCW_WDT_PERIPHERAL_FREQMHZ {133.333333} \ + ] $processing_system7_0 + + # Create instance: ps7_0_axi_periph, and set properties + set ps7_0_axi_periph [ create_bd_cell -type ip -vlnv xilinx.com:ip:axi_interconnect:2.1 ps7_0_axi_periph ] + set_property -dict [ list \ + CONFIG.NUM_MI {4} \ + ] $ps7_0_axi_periph + + # Create instance: rst_ps7_0_100M, and set properties + set rst_ps7_0_100M [ create_bd_cell -type ip -vlnv xilinx.com:ip:proc_sys_reset:5.0 rst_ps7_0_100M ] + + # Create instance: u_dma, and set properties + set u_dma [ create_bd_cell -type ip -vlnv xilinx.com:ip:axi_dma:7.1 u_dma ] + set_property -dict [ list \ + CONFIG.c_include_mm2s_dre {1} \ + CONFIG.c_include_s2mm {0} \ + CONFIG.c_include_sg {0} \ + CONFIG.c_m_axi_mm2s_data_width {64} \ + CONFIG.c_m_axis_mm2s_tdata_width {64} \ + CONFIG.c_mm2s_burst_size {256} \ + CONFIG.c_sg_include_stscntrl_strm {0} \ + CONFIG.c_sg_length_width {26} \ + ] $u_dma + + # Create instance: x_dma, and set properties + set x_dma [ create_bd_cell -type ip -vlnv xilinx.com:ip:axi_dma:7.1 x_dma ] + set_property -dict [ list \ + CONFIG.c_include_mm2s_dre {1} \ + CONFIG.c_include_s2mm {0} \ + CONFIG.c_include_sg {0} \ + CONFIG.c_m_axi_mm2s_data_width {64} \ + CONFIG.c_m_axis_mm2s_tdata_width {64} \ + CONFIG.c_mm2s_burst_size {256} \ + CONFIG.c_sg_include_stscntrl_strm {0} \ + CONFIG.c_sg_length_width {26} \ + ] $x_dma + + # Create instance: xu_dma, and set properties + set xu_dma [ create_bd_cell -type ip -vlnv xilinx.com:ip:axi_dma:7.1 xu_dma ] + set_property -dict [ list \ + CONFIG.c_include_mm2s {0} \ + CONFIG.c_include_s2mm {1} \ + CONFIG.c_include_s2mm_dre {1} \ + CONFIG.c_include_sg {0} \ + CONFIG.c_s2mm_burst_size {256} \ + CONFIG.c_sg_include_stscntrl_strm {0} \ + CONFIG.c_sg_length_width {26} \ + ] $xu_dma + + # Create interface connections + connect_bd_intf_net -intf_net HlsAxisKernelU_0_xu_port [get_bd_intf_pins HlsAxisKernelU_0/xu_port] [get_bd_intf_pins xu_dma/S_AXIS_S2MM] + connect_bd_intf_net -intf_net axi_mem_intercon_1_M00_AXI [get_bd_intf_pins axi_mem_intercon_1/M00_AXI] [get_bd_intf_pins processing_system7_0/S_AXI_HP1] + connect_bd_intf_net -intf_net axi_mem_intercon_2_M00_AXI [get_bd_intf_pins axi_mem_intercon_2/M00_AXI] [get_bd_intf_pins processing_system7_0/S_AXI_HP2] + connect_bd_intf_net -intf_net axi_mem_intercon_M00_AXI [get_bd_intf_pins axi_mem_intercon/M00_AXI] [get_bd_intf_pins processing_system7_0/S_AXI_HP0] + connect_bd_intf_net -intf_net processing_system7_0_DDR [get_bd_intf_ports DDR] [get_bd_intf_pins processing_system7_0/DDR] + connect_bd_intf_net -intf_net processing_system7_0_FIXED_IO [get_bd_intf_ports FIXED_IO] [get_bd_intf_pins processing_system7_0/FIXED_IO] + connect_bd_intf_net -intf_net processing_system7_0_M_AXI_GP0 [get_bd_intf_pins processing_system7_0/M_AXI_GP0] [get_bd_intf_pins ps7_0_axi_periph/S00_AXI] + connect_bd_intf_net -intf_net ps7_0_axi_periph_M00_AXI [get_bd_intf_pins HlsAxisKernelU_0/s_axi_control] [get_bd_intf_pins ps7_0_axi_periph/M00_AXI] + connect_bd_intf_net -intf_net ps7_0_axi_periph_M01_AXI [get_bd_intf_pins ps7_0_axi_periph/M01_AXI] [get_bd_intf_pins x_dma/S_AXI_LITE] + connect_bd_intf_net -intf_net ps7_0_axi_periph_M02_AXI [get_bd_intf_pins ps7_0_axi_periph/M02_AXI] [get_bd_intf_pins u_dma/S_AXI_LITE] + connect_bd_intf_net -intf_net ps7_0_axi_periph_M03_AXI [get_bd_intf_pins ps7_0_axi_periph/M03_AXI] [get_bd_intf_pins xu_dma/S_AXI_LITE] + connect_bd_intf_net -intf_net u_dma_M_AXIS_MM2S [get_bd_intf_pins HlsAxisKernelU_0/u_port] [get_bd_intf_pins u_dma/M_AXIS_MM2S] + connect_bd_intf_net -intf_net u_dma_M_AXI_MM2S [get_bd_intf_pins axi_mem_intercon_1/S00_AXI] [get_bd_intf_pins u_dma/M_AXI_MM2S] + connect_bd_intf_net -intf_net x_dma_M_AXIS_MM2S [get_bd_intf_pins HlsAxisKernelU_0/x_port] [get_bd_intf_pins x_dma/M_AXIS_MM2S] + connect_bd_intf_net -intf_net x_dma_M_AXI_MM2S [get_bd_intf_pins axi_mem_intercon/S00_AXI] [get_bd_intf_pins x_dma/M_AXI_MM2S] + connect_bd_intf_net -intf_net xu_dma_M_AXI_S2MM [get_bd_intf_pins axi_mem_intercon_2/S00_AXI] [get_bd_intf_pins xu_dma/M_AXI_S2MM] + + # Create port connections + connect_bd_net -net processing_system7_0_FCLK_CLK0 [get_bd_pins HlsAxisKernelU_0/ap_clk] [get_bd_pins axi_mem_intercon/ACLK] [get_bd_pins axi_mem_intercon/M00_ACLK] [get_bd_pins axi_mem_intercon/S00_ACLK] [get_bd_pins axi_mem_intercon_1/ACLK] [get_bd_pins axi_mem_intercon_1/M00_ACLK] [get_bd_pins axi_mem_intercon_1/S00_ACLK] [get_bd_pins axi_mem_intercon_2/ACLK] [get_bd_pins axi_mem_intercon_2/M00_ACLK] [get_bd_pins axi_mem_intercon_2/S00_ACLK] [get_bd_pins processing_system7_0/FCLK_CLK0] [get_bd_pins processing_system7_0/M_AXI_GP0_ACLK] [get_bd_pins processing_system7_0/S_AXI_HP0_ACLK] [get_bd_pins processing_system7_0/S_AXI_HP1_ACLK] [get_bd_pins processing_system7_0/S_AXI_HP2_ACLK] [get_bd_pins ps7_0_axi_periph/ACLK] [get_bd_pins ps7_0_axi_periph/M00_ACLK] [get_bd_pins ps7_0_axi_periph/M01_ACLK] [get_bd_pins ps7_0_axi_periph/M02_ACLK] [get_bd_pins ps7_0_axi_periph/M03_ACLK] [get_bd_pins ps7_0_axi_periph/S00_ACLK] [get_bd_pins rst_ps7_0_100M/slowest_sync_clk] [get_bd_pins u_dma/m_axi_mm2s_aclk] [get_bd_pins u_dma/s_axi_lite_aclk] [get_bd_pins x_dma/m_axi_mm2s_aclk] [get_bd_pins x_dma/s_axi_lite_aclk] [get_bd_pins xu_dma/m_axi_s2mm_aclk] [get_bd_pins xu_dma/s_axi_lite_aclk] + connect_bd_net -net processing_system7_0_FCLK_RESET0_N [get_bd_pins processing_system7_0/FCLK_RESET0_N] [get_bd_pins rst_ps7_0_100M/ext_reset_in] + connect_bd_net -net rst_ps7_0_100M_peripheral_aresetn [get_bd_pins HlsAxisKernelU_0/ap_rst_n] [get_bd_pins axi_mem_intercon/ARESETN] [get_bd_pins axi_mem_intercon/M00_ARESETN] [get_bd_pins axi_mem_intercon/S00_ARESETN] [get_bd_pins axi_mem_intercon_1/ARESETN] [get_bd_pins axi_mem_intercon_1/M00_ARESETN] [get_bd_pins axi_mem_intercon_1/S00_ARESETN] [get_bd_pins axi_mem_intercon_2/ARESETN] [get_bd_pins axi_mem_intercon_2/M00_ARESETN] [get_bd_pins axi_mem_intercon_2/S00_ARESETN] [get_bd_pins ps7_0_axi_periph/ARESETN] [get_bd_pins ps7_0_axi_periph/M00_ARESETN] [get_bd_pins ps7_0_axi_periph/M01_ARESETN] [get_bd_pins ps7_0_axi_periph/M02_ARESETN] [get_bd_pins ps7_0_axi_periph/M03_ARESETN] [get_bd_pins ps7_0_axi_periph/S00_ARESETN] [get_bd_pins rst_ps7_0_100M/peripheral_aresetn] [get_bd_pins u_dma/axi_resetn] [get_bd_pins x_dma/axi_resetn] [get_bd_pins xu_dma/axi_resetn] + + # Create address segments + create_bd_addr_seg -range 0x00010000 -offset 0x40000000 [get_bd_addr_spaces processing_system7_0/Data] [get_bd_addr_segs HlsAxisKernelU_0/s_axi_control/Reg] SEG_HlsAxisKernelU_0_Reg + create_bd_addr_seg -range 0x00010000 -offset 0x40410000 [get_bd_addr_spaces processing_system7_0/Data] [get_bd_addr_segs u_dma/S_AXI_LITE/Reg] SEG_u_dma_Reg + create_bd_addr_seg -range 0x00010000 -offset 0x40400000 [get_bd_addr_spaces processing_system7_0/Data] [get_bd_addr_segs x_dma/S_AXI_LITE/Reg] SEG_x_dma_Reg + create_bd_addr_seg -range 0x00010000 -offset 0x40420000 [get_bd_addr_spaces processing_system7_0/Data] [get_bd_addr_segs xu_dma/S_AXI_LITE/Reg] SEG_xu_dma_Reg + create_bd_addr_seg -range 0x20000000 -offset 0x00000000 [get_bd_addr_spaces u_dma/Data_MM2S] [get_bd_addr_segs processing_system7_0/S_AXI_HP1/HP1_DDR_LOWOCM] SEG_processing_system7_0_HP1_DDR_LOWOCM + create_bd_addr_seg -range 0x20000000 -offset 0x00000000 [get_bd_addr_spaces x_dma/Data_MM2S] [get_bd_addr_segs processing_system7_0/S_AXI_HP0/HP0_DDR_LOWOCM] SEG_processing_system7_0_HP0_DDR_LOWOCM + create_bd_addr_seg -range 0x20000000 -offset 0x00000000 [get_bd_addr_spaces xu_dma/Data_S2MM] [get_bd_addr_segs processing_system7_0/S_AXI_HP2/HP2_DDR_LOWOCM] SEG_processing_system7_0_HP2_DDR_LOWOCM + + + # Restore current instance + current_bd_instance $oldCurInst + + validate_bd_design + save_bd_design +} +# End of create_root_design() + + +################################################################## +# MAIN FLOW +################################################################## + +create_root_design "" + + diff --git a/pynq/kernel_v/binfile_example.bin b/pynq/kernel_v/binfile_example.bin new file mode 100644 index 0000000..8c01583 Binary files /dev/null and b/pynq/kernel_v/binfile_example.bin differ diff --git a/pynq/kernel_v/kernel_v.ipynb b/pynq/kernel_v/kernel_v.ipynb new file mode 100644 index 0000000..1c0e1f3 --- /dev/null +++ b/pynq/kernel_v/kernel_v.ipynb @@ -0,0 +1,794 @@ +{ + "cells": [ + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "# Testing Kernel-V\n", + "\n", + "This notebook will test an IP written in Vivado HLS." + ] + }, + { + "cell_type": "code", + "execution_count": 1, + "metadata": {}, + "outputs": [ + { + "data": { + "application/javascript": [ + "\n", + "try {\n", + "require(['notebook/js/codecell'], function(codecell) {\n", + " codecell.CodeCell.options_default.highlight_modes[\n", + " 'magic_text/x-csrc'] = {'reg':[/^%%microblaze/]};\n", + " Jupyter.notebook.events.one('kernel_ready.Kernel', function(){\n", + " Jupyter.notebook.get_cells().map(function(cell){\n", + " if (cell.cell_type == 'code'){ cell.auto_highlight(); } }) ;\n", + " });\n", + "});\n", + "} catch (e) {};\n" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "application/javascript": [ + "\n", + "try {\n", + "require(['notebook/js/codecell'], function(codecell) {\n", + " codecell.CodeCell.options_default.highlight_modes[\n", + " 'magic_text/x-csrc'] = {'reg':[/^%%pybind11/]};\n", + " Jupyter.notebook.events.one('kernel_ready.Kernel', function(){\n", + " Jupyter.notebook.get_cells().map(function(cell){\n", + " if (cell.cell_type == 'code'){ cell.auto_highlight(); } }) ;\n", + " });\n", + "});\n", + "} catch (e) {};\n" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "from pynq import Overlay\n", + "import pynq.lib.dma\n", + "from pynq import allocate\n", + "import numpy as np\n", + "from pynq import DefaultIP\n", + "import timeit" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Program FPGA and inspect Overlay." + ] + }, + { + "cell_type": "code", + "execution_count": 2, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "\n" + ] + } + ], + "source": [ + "overlay = Overlay('overlay/kernel_v.bit')\n", + "print(overlay.device)\n", + "overlay?" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Get the kernel register map." + ] + }, + { + "cell_type": "code", + "execution_count": 3, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "RegisterMap {\n", + " CTRL = Register(AP_START=0, AP_DONE=0, AP_IDLE=1, AP_READY=0, RESERVED_1=0, AUTO_RESTART=0, RESERVED_2=0, RESERVED_3=0, RESERVED_4=0),\n", + " GIER = Register(Enable=0, RESERVED=0),\n", + " IP_IER = Register(CHAN0_INT_EN=0, CHAN1_INT_EN=0, RESERVED=0),\n", + " IP_ISR = Register(CHAN0_INT_ST=0, CHAN1_INT_ST=0, RESERVED=0),\n", + " num_active_inputs = Register(num_active_inputs=0),\n", + " output_size = Register(output_size=0),\n", + " num_refinements_0 = Register(num_refinements_0=0),\n", + " num_refinements_1 = Register(num_refinements_1=0)\n", + "}" + ] + }, + "execution_count": 3, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "kernel = overlay.HlsKernelV_0\n", + "kernel.register_map\n", + "# print(\"stream size: \", adder.stream_size)\n", + "# accel_state = adder.get_state()\n", + "# print(\"accelerator state: \", accel_state)\n", + "# dma = overlay.axi_dma_0\n", + "# dma.register_map.MM2S_DMASR\n", + "# dma.register_map.S2MM_DMACR" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Kernel IP" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "The kernel IP can be automatically bound by first creating our Kernel class. Then, the overlay can be instantiated again." + ] + }, + { + "cell_type": "code", + "execution_count": 33, + "metadata": {}, + "outputs": [], + "source": [ + "class KernelDriver(DefaultIP):\n", + " def __init__(self, description):\n", + " super().__init__(description=description)\n", + " \n", + " bindto = ['xilinx.com:hls:HlsKernelV:1.0']\n", + "\n", + " def start_accel(self):\n", + " self.register_map.CTRL.AP_START = 1\n", + " self.write(0x0, 1)\n", + " self.write(0x0, 1)\n", + " while(self.read(0x0) % 2 == 0):\n", + " self.write(0x0, 1)\n", + " pass # Wait until start, i.e. bit 0, is set.\n", + "\n", + " def set_state(self, state):\n", + " # self.register_map.CTRL = state\n", + " # return self.register_map.CTRL\n", + " self.write(0x0, state)\n", + " return self.read(0x0)\n", + "\n", + " def get_state(self):\n", + " return self.register_map.CTRL\n", + " # return self.read(0x0)\n", + "\n", + " @property\n", + " def num_refinements(self):\n", + " return (self.register_map.num_refinements_0, self.register_map.num_refinements_1)\n", + " # return self.read(0x10)\n", + "\n", + " @num_refinements.setter\n", + " def num_refinements(self, R):\n", + " self.register_map.num_refinements_0 = R[0]\n", + " self.register_map.num_refinements_1 = R[1]\n", + " # self.write(0x10, R)\n", + "\n", + " @property\n", + " def num_active_inputs(self):\n", + " return self.register_map.num_active_inputs\n", + " # return self.read(0x10)\n", + "\n", + " @num_active_inputs.setter\n", + " def num_active_inputs(self, N):\n", + " self.register_map.num_active_inputs = N\n", + " # self.write(0x10, R)\n", + "\n", + " @property\n", + " def output_size(self):\n", + " return self.register_map.output_size\n", + " # return self.read(0x10)\n", + "\n", + " @output_size.setter\n", + " def output_size(self, H):\n", + " self.register_map.output_size = H\n", + " # self.write(0x10, R)\n", + "\n", + "overlay = Overlay(\"overlay/kernel_v.bit\")" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Let's check again the kernel:" + ] + }, + { + "cell_type": "code", + "execution_count": 5, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "Register(AP_START=0, AP_DONE=0, AP_IDLE=1, AP_READY=0, RESERVED_1=0, AUTO_RESTART=0, RESERVED_2=0, RESERVED_3=0, RESERVED_4=0)" + ] + }, + "execution_count": 5, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "kernel_v = overlay.HlsKernelV_0\n", + "kernel_v.get_state()" + ] + }, + { + "cell_type": "code", + "execution_count": 6, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "0" + ] + }, + "execution_count": 6, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "kernel_v.read(0x10)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "To show the class is working, we setup the `num_refinements` using the setter method. We then read its corresponding register." + ] + }, + { + "cell_type": "code", + "execution_count": 7, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "(Register(num_refinements_0=0), Register(num_refinements_1=0))\n", + "(Register(num_refinements_0=1), Register(num_refinements_1=1))\n" + ] + } + ], + "source": [ + "print(kernel_v.num_refinements)\n", + "kernel_v.num_refinements = (1, 1)\n", + "print(kernel_v.num_refinements)" + ] + }, + { + "cell_type": "code", + "execution_count": 8, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "0x4\n", + "0x4\n" + ] + }, + { + "data": { + "text/plain": [ + "Register(AP_START=0, AP_DONE=0, AP_IDLE=1, AP_READY=0, RESERVED_1=0, AUTO_RESTART=0, RESERVED_2=0, RESERVED_3=0, RESERVED_4=0)" + ] + }, + "execution_count": 8, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "print(kernel_v.get_state())\n", + "# kernel_u.start_accel()\n", + "print(kernel_v.get_state())\n", + "kernel_v.get_state()" + ] + }, + { + "cell_type": "code", + "execution_count": 9, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "0x0\n", + "0x2\n" + ] + } + ], + "source": [ + "print(kernel_v.num_active_inputs)\n", + "kernel_v.num_active_inputs = 2\n", + "print(kernel_v.num_active_inputs)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Data Allocation and Run\n", + "\n", + "The data structures must be contiguosly allocated." + ] + }, + { + "cell_type": "code", + "execution_count": 51, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Buffers setup completed.\n", + "xus_buffer.shape: (16, 1, 4) - Bytes: 128\n", + "v_buffer.shape: (16, 64, 4, 4) - Bytes: 32768\n", + "y_buffer.shape: (64, 1, 4, 4) - Bytes: 2048\n" + ] + } + ], + "source": [ + "# The following parameters are fixed in hardware and cannot be changed:\n", + "# - The maximum output size H\n", + "# - The number of gates G\n", + "# - The tile size Tv\n", + "H = 512\n", + "G = 4\n", + "Tv = 4\n", + "data_t = np.int16\n", + "# The following parameters are customizeable in hardware and can be changed:\n", + "# - The number of refinements R\n", + "# - The output_size <= H\n", + "# - The number of active_inputs <= N\n", + "R = 16\n", + "N = 1\n", + "output_size = 256 # % H\n", + "# NOTE: Working with (R, N, out) == (16, 2, 8) \n", + "\n", + "xus = np.random.randn(R, N, G).astype(dtype=data_t)\n", + "v = np.random.randn(R, output_size // Tv, G, Tv).astype(dtype=data_t)\n", + "y = np.zeros((output_size // Tv, N, Tv, G)).astype(dtype=data_t)\n", + "\n", + "xus_buffer = pynq.allocate(shape=(R, N, G), dtype=data_t)\n", + "v_buffer = pynq.allocate(shape=(R, output_size // Tv, G, Tv), dtype=data_t)\n", + "y_buffer = pynq.allocate(shape=(output_size // Tv, N, Tv, G), dtype=data_t)\n", + "\n", + "np.copyto(xus_buffer, xus, casting='no')\n", + "np.copyto(v_buffer, v, casting='no')\n", + "np.copyto(y_buffer, y, casting='no')\n", + "\n", + "print('Buffers setup completed.')\n", + "print(f'xus_buffer.shape: {xus_buffer.shape} - Bytes: {xus_buffer.nbytes}')\n", + "print(f'v_buffer.shape: {v_buffer.shape} - Bytes: {v_buffer.nbytes}')\n", + "print(f'y_buffer.shape: {y_buffer.shape} - Bytes: {y_buffer.nbytes}')" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Setup the kernel and then send the data through the DMAs." + ] + }, + { + "cell_type": "code", + "execution_count": 52, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "0xa\n", + "0x1\n", + "Starting transfer:\n", + "Wait xus...DONE.\n", + "Wait v...DONE.\n", + "Wait y...DONE.\n", + "\n", + "y_buffer.shape: (64, 1, 4, 4)\n" + ] + } + ], + "source": [ + "kernel_v.num_refinements = (R, R // 4)\n", + "kernel_v.output_size = output_size\n", + "kernel_v.num_active_inputs = N\n", + "print(kernel_v.get_state())\n", + "kernel_v.start_accel()\n", + "print(kernel_v.get_state())\n", + "\n", + "# Transfer\n", + "print('Starting transfer:')\n", + "overlay.xus_dma.sendchannel.transfer(xus_buffer)\n", + "overlay.v_dma.sendchannel.transfer(v_buffer)\n", + "overlay.y_dma.recvchannel.transfer(y_buffer)\n", + "# Then wait\n", + "print('Wait xus...', end='')\n", + "overlay.xus_dma.sendchannel.wait()\n", + "print('DONE.\\nWait v...', end='')\n", + "overlay.v_dma.sendchannel.wait()\n", + "print('DONE.\\nWait y...', end='')\n", + "overlay.y_dma.recvchannel.wait()\n", + "print('DONE.\\n')\n", + "\n", + "print(f'y_buffer.shape: {y_buffer.shape}')\n", + "# print(f'xu_buffer: {xu_buffer}')" + ] + }, + { + "cell_type": "code", + "execution_count": 186, + "metadata": {}, + "outputs": [], + "source": [ + "def run_kernel(R, x_buffer, u_buffer, xu_buffer):\n", + " kernel_u.num_refinements = R\n", + " kernel_u.start_accel()\n", + " # Transfer\n", + " overlay.x_dma.sendchannel.transfer(x_buffer)\n", + " overlay.u_dma.sendchannel.transfer(u_buffer)\n", + " overlay.xu_dma.recvchannel.transfer(xu_buffer)\n", + " # Then wait\n", + " overlay.x_dma.sendchannel.wait()\n", + " overlay.u_dma.sendchannel.wait()\n", + " overlay.xu_dma.recvchannel.wait()" + ] + }, + { + "cell_type": "code", + "execution_count": 192, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "10 loops, best of 3: 80.5 ms per loop\n" + ] + } + ], + "source": [ + "%timeit run_kernel(R, x_buffer, u_buffer, xu_buffer)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Checking Correctness\n", + "\n", + "We first find the proper reshape mechanisms:" + ] + }, + { + "cell_type": "code", + "execution_count": 193, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "[ 0.36593539 -1.03844877 0.82985754 -0.82067175] [ 0.36593539 -1.03844877 0.82985754 -0.82067175]\n", + "0.0\n", + "[-0.07974188 0.01109454 -0.18120697 0.73842526] [-0.07974188 0.01109454 -0.18120697 0.73842526]\n", + "0.0\n", + "10 loops, best of 3: 24.1 ms per loop\n", + "(128, 4, 2)\n" + ] + } + ], + "source": [ + "# =============================================================================\n", + "# Reshape: (R, I, G) => (R, I // Tu, G, Tu)\n", + "# =============================================================================\n", + "u = np.random.randn(R, I, G)\n", + "u_tmp = u.copy()\n", + "u_tmp = np.transpose(u_tmp.reshape(R, I // Tu, Tu, G), (0, 1, 3, 2))\n", + "print(u[0, 0:4, 0], u_tmp[0, 0, 0, 0:4])\n", + "print(u[0, 3, 0] - u_tmp[0, 0, 0, 3])\n", + "\n", + "# =============================================================================\n", + "# Reshape: (R, I // Tu, G, Tu) => (I, G, R)\n", + "# =============================================================================\n", + "u = np.random.randn(R, I // Tu, G, Tu)\n", + "u_tmp = u.copy()\n", + "u_tmp = np.transpose(u_tmp, (1, 3, 2, 0)).reshape(I, G, R)\n", + "print(u[0, 0, 0, 0:4], u_tmp[0:4, 0, 0])\n", + "print(u[0, 0, 0, 3] - u_tmp[3, 0, 0])\n", + "\n", + "x = np.random.randn(N, I)\n", + "u = np.random.randn(I, G, R)\n", + "x = (x * 2).astype(np.int16)\n", + "u = (u * 2).astype(np.int16)\n", + "\n", + "%timeit xu = np.transpose(np.tensordot(x, u, axes=1), (2, 1, 0))\n", + "print(xu.shape)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "We now check the Numpy computation against the FPGA result." + ] + }, + { + "cell_type": "code", + "execution_count": 194, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "10 loops, best of 3: 105 ms per loop\n", + "\n", + "All equal: True\n", + "gold[0]: [[ 8822 -32153]\n", + " [-17540 6635]\n", + " [ 6489 5700]\n", + " [ 11839 25184]]\n", + "fpga[0]: [[ 8822 -32153]\n", + " [-17540 6635]\n", + " [ 6489 5700]\n", + " [ 11839 25184]]\n" + ] + } + ], + "source": [ + "u_tmp = np.transpose(u_buffer, (1, 3, 2, 0)).reshape(I, G, R)\n", + "%timeit xu_gold = np.transpose(np.tensordot(x_buffer, u_tmp, axes=1), (2, 1, 0))\n", + "print('\\nAll equal:', np.allclose(xu_buffer, xu_gold))\n", + "print('gold[0]: ', xu_gold[0])\n", + "print('fpga[0]: ', xu_buffer[0])" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Loading File into PYNQ Buffer" + ] + }, + { + "cell_type": "code", + "execution_count": 53, + "metadata": {}, + "outputs": [], + "source": [ + "tmp = np.random.randn(R, N, G).astype(dtype=data_t)\n", + "tmp.tofile('binfile_example.bin')" + ] + }, + { + "cell_type": "code", + "execution_count": 59, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "PynqBuffer([[[0, 0, 0, 0]],\n", + "\n", + " [[0, 0, 0, 0]],\n", + "\n", + " [[0, 0, 0, 0]],\n", + "\n", + " [[0, 0, 0, 0]],\n", + "\n", + " [[0, 0, 0, 0]],\n", + "\n", + " [[0, 0, 0, 0]],\n", + "\n", + " [[0, 0, 0, 0]],\n", + "\n", + " [[0, 0, 0, 0]],\n", + "\n", + " [[0, 0, 0, 0]],\n", + "\n", + " [[0, 0, 0, 0]],\n", + "\n", + " [[0, 0, 0, 0]],\n", + "\n", + " [[0, 0, 0, 0]],\n", + "\n", + " [[0, 0, 0, 0]],\n", + "\n", + " [[0, 0, 0, 0]],\n", + "\n", + " [[0, 0, 0, 0]],\n", + "\n", + " [[0, 0, 0, 0]]], dtype=int16)" + ] + }, + "execution_count": 59, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "xus_buffer = pynq.allocate(shape=(R, N, G), dtype=data_t)\n", + "xus_buffer" + ] + }, + { + "cell_type": "code", + "execution_count": 61, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "PynqBuffer([[[-1, 0, -1, 0]],\n", + "\n", + " [[ 0, -2, 0, -1]],\n", + "\n", + " [[ 0, 0, 2, 0]],\n", + "\n", + " [[ 0, -1, 0, 0]],\n", + "\n", + " [[ 0, 0, 0, 0]],\n", + "\n", + " [[ 0, 1, 0, 0]],\n", + "\n", + " [[ 0, 0, 0, 0]],\n", + "\n", + " [[-1, 0, 0, 0]],\n", + "\n", + " [[ 0, 0, -1, 0]],\n", + "\n", + " [[ 0, -1, 0, 0]],\n", + "\n", + " [[ 1, 0, 0, 0]],\n", + "\n", + " [[ 0, 0, -1, 0]],\n", + "\n", + " [[-1, 0, -1, 0]],\n", + "\n", + " [[ 0, 0, 0, 0]],\n", + "\n", + " [[ 0, -1, -1, -1]],\n", + "\n", + " [[-1, 0, 0, 0]]], dtype=int16)" + ] + }, + "execution_count": 61, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "tmp = np.fromfile('binfile_example.bin', dtype=data_t).reshape(xus_buffer.shape)\n", + "np.copyto(xus_buffer, tmp, casting='no')\n", + "xus_buffer" + ] + }, + { + "cell_type": "code", + "execution_count": 65, + "metadata": {}, + "outputs": [], + "source": [ + "def load_from_bin(binfile, shape, dtype):\n", + " tmp_buffer = pynq.allocate(shape=shape, dtype=dtype)\n", + " tmp = np.fromfile(binfile, dtype=data_t).reshape(tmp_buffer.shape)\n", + " np.copyto(tmp_buffer, tmp, casting='no')\n", + " return tmp_buffer" + ] + }, + { + "cell_type": "code", + "execution_count": 66, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "PynqBuffer([[[-1, 0, -1, 0]],\n", + "\n", + " [[ 0, -2, 0, -1]],\n", + "\n", + " [[ 0, 0, 2, 0]],\n", + "\n", + " [[ 0, -1, 0, 0]],\n", + "\n", + " [[ 0, 0, 0, 0]],\n", + "\n", + " [[ 0, 1, 0, 0]],\n", + "\n", + " [[ 0, 0, 0, 0]],\n", + "\n", + " [[-1, 0, 0, 0]],\n", + "\n", + " [[ 0, 0, -1, 0]],\n", + "\n", + " [[ 0, -1, 0, 0]],\n", + "\n", + " [[ 1, 0, 0, 0]],\n", + "\n", + " [[ 0, 0, -1, 0]],\n", + "\n", + " [[-1, 0, -1, 0]],\n", + "\n", + " [[ 0, 0, 0, 0]],\n", + "\n", + " [[ 0, -1, -1, -1]],\n", + "\n", + " [[-1, 0, 0, 0]]], dtype=int16)" + ] + }, + "execution_count": 66, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "xus_buffer = load_from_bin('binfile_example.bin', shape=(R, N, G), dtype=data_t)\n", + "xus_buffer" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [] + } + ], + "metadata": { + "kernelspec": { + "display_name": "Python 3", + "language": "python", + "name": "python3" + }, + "language_info": { + "codemirror_mode": { + "name": "ipython", + "version": 3 + }, + "file_extension": ".py", + "mimetype": "text/x-python", + "name": "python", + "nbconvert_exporter": "python", + "pygments_lexer": "ipython3", + "version": "3.6.5" + } + }, + "nbformat": 4, + "nbformat_minor": 2 +} diff --git a/pynq/kernel_v/overlay/kernel_v.bit b/pynq/kernel_v/overlay/kernel_v.bit new file mode 100644 index 0000000..c391107 Binary files /dev/null and b/pynq/kernel_v/overlay/kernel_v.bit differ diff --git a/pynq/kernel_v/overlay/kernel_v.hwh b/pynq/kernel_v/overlay/kernel_v.hwh new file mode 100644 index 0000000..541a112 --- /dev/null +++ b/pynq/kernel_v/overlay/kernel_v.hwh @@ -0,0 +1,9180 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/pynq/kernel_v/overlay/kernel_v.tcl b/pynq/kernel_v/overlay/kernel_v.tcl new file mode 100644 index 0000000..541d234 --- /dev/null +++ b/pynq/kernel_v/overlay/kernel_v.tcl @@ -0,0 +1,717 @@ + +################################################################ +# This is a generated script based on design: design_1 +# +# Though there are limitations about the generated script, +# the main purpose of this utility is to make learning +# IP Integrator Tcl commands easier. +################################################################ + +namespace eval _tcl { +proc get_script_folder {} { + set script_path [file normalize [info script]] + set script_folder [file dirname $script_path] + return $script_folder +} +} +variable script_folder +set script_folder [_tcl::get_script_folder] + +################################################################ +# Check if script is running in correct Vivado version. +################################################################ +set scripts_vivado_version 2020.2 +set current_vivado_version [version -short] + +if { [string first $scripts_vivado_version $current_vivado_version] == -1 } { + puts "" + catch {common::send_gid_msg -ssname BD::TCL -id 2041 -severity "ERROR" "This script was generated using Vivado <$scripts_vivado_version> and is being run in <$current_vivado_version> of Vivado. Please run the script in Vivado <$scripts_vivado_version> then open the design in Vivado <$current_vivado_version>. Upgrade the design by running \"Tools => Report => Report IP Status...\", then run write_bd_tcl to create an updated script."} + + return 1 +} + +################################################################ +# START +################################################################ + +# To test this script, run the following commands from Vivado Tcl console: +# source design_1_script.tcl + +# If there is no project opened, this script will create a +# project, but make sure you do not have an existing project +# <./myproj/project_1.xpr> in the current working folder. + +set list_projs [get_projects -quiet] +if { $list_projs eq "" } { + create_project project_1 myproj -part xc7z020clg484-1 + set_property BOARD_PART em.avnet.com:zed:part0:1.4 [current_project] +} + + +# CHANGE DESIGN NAME HERE +variable design_name +set design_name design_1 + +# If you do not already have an existing IP Integrator design open, +# you can create a design using the following command: +# create_bd_design $design_name + +# Creating design if needed +set errMsg "" +set nRet 0 + +set cur_design [current_bd_design -quiet] +set list_cells [get_bd_cells -quiet] + +if { ${design_name} eq "" } { + # USE CASES: + # 1) Design_name not set + + set errMsg "Please set the variable to a non-empty value." + set nRet 1 + +} elseif { ${cur_design} ne "" && ${list_cells} eq "" } { + # USE CASES: + # 2): Current design opened AND is empty AND names same. + # 3): Current design opened AND is empty AND names diff; design_name NOT in project. + # 4): Current design opened AND is empty AND names diff; design_name exists in project. + + if { $cur_design ne $design_name } { + common::send_gid_msg -ssname BD::TCL -id 2001 -severity "INFO" "Changing value of from <$design_name> to <$cur_design> since current design is empty." + set design_name [get_property NAME $cur_design] + } + common::send_gid_msg -ssname BD::TCL -id 2002 -severity "INFO" "Constructing design in IPI design <$cur_design>..." + +} elseif { ${cur_design} ne "" && $list_cells ne "" && $cur_design eq $design_name } { + # USE CASES: + # 5) Current design opened AND has components AND same names. + + set errMsg "Design <$design_name> already exists in your project, please set the variable to another value." + set nRet 1 +} elseif { [get_files -quiet ${design_name}.bd] ne "" } { + # USE CASES: + # 6) Current opened design, has components, but diff names, design_name exists in project. + # 7) No opened design, design_name exists in project. + + set errMsg "Design <$design_name> already exists in your project, please set the variable to another value." + set nRet 2 + +} else { + # USE CASES: + # 8) No opened design, design_name not in project. + # 9) Current opened design, has components, but diff names, design_name not in project. + + common::send_gid_msg -ssname BD::TCL -id 2003 -severity "INFO" "Currently there is no design <$design_name> in project, so creating one..." + + create_bd_design $design_name + + common::send_gid_msg -ssname BD::TCL -id 2004 -severity "INFO" "Making design <$design_name> as current_bd_design." + current_bd_design $design_name + +} + +common::send_gid_msg -ssname BD::TCL -id 2005 -severity "INFO" "Currently the variable is equal to \"$design_name\"." + +if { $nRet != 0 } { + catch {common::send_gid_msg -ssname BD::TCL -id 2006 -severity "ERROR" $errMsg} + return $nRet +} + +set bCheckIPsPassed 1 +################################################################## +# CHECK IPs +################################################################## +set bCheckIPs 1 +if { $bCheckIPs == 1 } { + set list_check_ips "\ +xilinx.com:hls:HlsKernelV:1.0\ +xilinx.com:ip:processing_system7:5.5\ +xilinx.com:ip:proc_sys_reset:5.0\ +xilinx.com:ip:axi_dma:7.1\ +" + + set list_ips_missing "" + common::send_gid_msg -ssname BD::TCL -id 2011 -severity "INFO" "Checking if the following IPs exist in the project's IP catalog: $list_check_ips ." + + foreach ip_vlnv $list_check_ips { + set ip_obj [get_ipdefs -all $ip_vlnv] + if { $ip_obj eq "" } { + lappend list_ips_missing $ip_vlnv + } + } + + if { $list_ips_missing ne "" } { + catch {common::send_gid_msg -ssname BD::TCL -id 2012 -severity "ERROR" "The following IPs are not found in the IP Catalog:\n $list_ips_missing\n\nResolution: Please add the repository containing the IP(s) to the project." } + set bCheckIPsPassed 0 + } + +} + +if { $bCheckIPsPassed != 1 } { + common::send_gid_msg -ssname BD::TCL -id 2023 -severity "WARNING" "Will not continue with creation of design due to the error(s) above." + return 3 +} + +################################################################## +# DESIGN PROCs +################################################################## + + + +# Procedure to create entire design; Provide argument to make +# procedure reusable. If parentCell is "", will use root. +proc create_root_design { parentCell } { + + variable script_folder + variable design_name + + if { $parentCell eq "" } { + set parentCell [get_bd_cells /] + } + + # Get object for parentCell + set parentObj [get_bd_cells $parentCell] + if { $parentObj == "" } { + catch {common::send_gid_msg -ssname BD::TCL -id 2090 -severity "ERROR" "Unable to find parent cell <$parentCell>!"} + return + } + + # Make sure parentObj is hier blk + set parentType [get_property TYPE $parentObj] + if { $parentType ne "hier" } { + catch {common::send_gid_msg -ssname BD::TCL -id 2091 -severity "ERROR" "Parent <$parentObj> has TYPE = <$parentType>. Expected to be ."} + return + } + + # Save current instance; Restore later + set oldCurInst [current_bd_instance .] + + # Set parent object as current + current_bd_instance $parentObj + + + # Create interface ports + set DDR [ create_bd_intf_port -mode Master -vlnv xilinx.com:interface:ddrx_rtl:1.0 DDR ] + + set FIXED_IO [ create_bd_intf_port -mode Master -vlnv xilinx.com:display_processing_system7:fixedio_rtl:1.0 FIXED_IO ] + + + # Create ports + + # Create instance: HlsKernelV_0, and set properties + set HlsKernelV_0 [ create_bd_cell -type ip -vlnv xilinx.com:hls:HlsKernelV:1.0 HlsKernelV_0 ] + + # Create instance: axi_mem_intercon, and set properties + set axi_mem_intercon [ create_bd_cell -type ip -vlnv xilinx.com:ip:axi_interconnect:2.1 axi_mem_intercon ] + set_property -dict [ list \ + CONFIG.NUM_MI {1} \ + ] $axi_mem_intercon + + # Create instance: axi_mem_intercon_1, and set properties + set axi_mem_intercon_1 [ create_bd_cell -type ip -vlnv xilinx.com:ip:axi_interconnect:2.1 axi_mem_intercon_1 ] + set_property -dict [ list \ + CONFIG.NUM_MI {1} \ + ] $axi_mem_intercon_1 + + # Create instance: axi_mem_intercon_2, and set properties + set axi_mem_intercon_2 [ create_bd_cell -type ip -vlnv xilinx.com:ip:axi_interconnect:2.1 axi_mem_intercon_2 ] + set_property -dict [ list \ + CONFIG.NUM_MI {1} \ + ] $axi_mem_intercon_2 + + # Create instance: processing_system7_0, and set properties + set processing_system7_0 [ create_bd_cell -type ip -vlnv xilinx.com:ip:processing_system7:5.5 processing_system7_0 ] + set_property -dict [ list \ + CONFIG.PCW_ACT_APU_PERIPHERAL_FREQMHZ {666.666687} \ + CONFIG.PCW_ACT_CAN_PERIPHERAL_FREQMHZ {10.000000} \ + CONFIG.PCW_ACT_DCI_PERIPHERAL_FREQMHZ {10.158730} \ + CONFIG.PCW_ACT_ENET0_PERIPHERAL_FREQMHZ {125.000000} \ + CONFIG.PCW_ACT_ENET1_PERIPHERAL_FREQMHZ {10.000000} \ + CONFIG.PCW_ACT_FPGA0_PERIPHERAL_FREQMHZ {100.000000} \ + CONFIG.PCW_ACT_FPGA1_PERIPHERAL_FREQMHZ {10.000000} \ + CONFIG.PCW_ACT_FPGA2_PERIPHERAL_FREQMHZ {10.000000} \ + CONFIG.PCW_ACT_FPGA3_PERIPHERAL_FREQMHZ {10.000000} \ + CONFIG.PCW_ACT_PCAP_PERIPHERAL_FREQMHZ {200.000000} \ + CONFIG.PCW_ACT_QSPI_PERIPHERAL_FREQMHZ {200.000000} \ + CONFIG.PCW_ACT_SDIO_PERIPHERAL_FREQMHZ {50.000000} \ + CONFIG.PCW_ACT_SMC_PERIPHERAL_FREQMHZ {10.000000} \ + CONFIG.PCW_ACT_SPI_PERIPHERAL_FREQMHZ {10.000000} \ + CONFIG.PCW_ACT_TPIU_PERIPHERAL_FREQMHZ {200.000000} \ + CONFIG.PCW_ACT_TTC0_CLK0_PERIPHERAL_FREQMHZ {111.111115} \ + CONFIG.PCW_ACT_TTC0_CLK1_PERIPHERAL_FREQMHZ {111.111115} \ + CONFIG.PCW_ACT_TTC0_CLK2_PERIPHERAL_FREQMHZ {111.111115} \ + CONFIG.PCW_ACT_TTC1_CLK0_PERIPHERAL_FREQMHZ {111.111115} \ + CONFIG.PCW_ACT_TTC1_CLK1_PERIPHERAL_FREQMHZ {111.111115} \ + CONFIG.PCW_ACT_TTC1_CLK2_PERIPHERAL_FREQMHZ {111.111115} \ + CONFIG.PCW_ACT_UART_PERIPHERAL_FREQMHZ {50.000000} \ + CONFIG.PCW_ACT_WDT_PERIPHERAL_FREQMHZ {111.111115} \ + CONFIG.PCW_APU_PERIPHERAL_FREQMHZ {666.666667} \ + CONFIG.PCW_ARMPLL_CTRL_FBDIV {40} \ + CONFIG.PCW_CAN_PERIPHERAL_DIVISOR0 {1} \ + CONFIG.PCW_CAN_PERIPHERAL_DIVISOR1 {1} \ + CONFIG.PCW_CAN_PERIPHERAL_FREQMHZ {100} \ + CONFIG.PCW_CLK0_FREQ {100000000} \ + CONFIG.PCW_CLK1_FREQ {10000000} \ + CONFIG.PCW_CLK2_FREQ {10000000} \ + CONFIG.PCW_CLK3_FREQ {10000000} \ + CONFIG.PCW_CPU_CPU_PLL_FREQMHZ {1333.333} \ + CONFIG.PCW_CPU_PERIPHERAL_DIVISOR0 {2} \ + CONFIG.PCW_DCI_PERIPHERAL_DIVISOR0 {15} \ + CONFIG.PCW_DCI_PERIPHERAL_DIVISOR1 {7} \ + CONFIG.PCW_DDRPLL_CTRL_FBDIV {32} \ + CONFIG.PCW_DDR_DDR_PLL_FREQMHZ {1066.667} \ + CONFIG.PCW_DDR_PERIPHERAL_DIVISOR0 {2} \ + CONFIG.PCW_DDR_RAM_HIGHADDR {0x1FFFFFFF} \ + CONFIG.PCW_ENET0_ENET0_IO {MIO 16 .. 27} \ + CONFIG.PCW_ENET0_GRP_MDIO_ENABLE {1} \ + CONFIG.PCW_ENET0_GRP_MDIO_IO {MIO 52 .. 53} \ + CONFIG.PCW_ENET0_PERIPHERAL_DIVISOR0 {8} \ + CONFIG.PCW_ENET0_PERIPHERAL_DIVISOR1 {1} \ + CONFIG.PCW_ENET0_PERIPHERAL_ENABLE {1} \ + CONFIG.PCW_ENET0_PERIPHERAL_FREQMHZ {1000 Mbps} \ + CONFIG.PCW_ENET0_RESET_ENABLE {0} \ + CONFIG.PCW_ENET1_PERIPHERAL_DIVISOR0 {1} \ + CONFIG.PCW_ENET1_PERIPHERAL_DIVISOR1 {1} \ + CONFIG.PCW_ENET1_RESET_ENABLE {0} \ + CONFIG.PCW_ENET_RESET_ENABLE {1} \ + CONFIG.PCW_ENET_RESET_SELECT {Share reset pin} \ + CONFIG.PCW_EN_EMIO_TTC0 {1} \ + CONFIG.PCW_EN_ENET0 {1} \ + CONFIG.PCW_EN_GPIO {1} \ + CONFIG.PCW_EN_QSPI {1} \ + CONFIG.PCW_EN_SDIO0 {1} \ + CONFIG.PCW_EN_TTC0 {1} \ + CONFIG.PCW_EN_UART1 {1} \ + CONFIG.PCW_EN_USB0 {1} \ + CONFIG.PCW_FCLK0_PERIPHERAL_DIVISOR0 {5} \ + CONFIG.PCW_FCLK0_PERIPHERAL_DIVISOR1 {2} \ + CONFIG.PCW_FCLK1_PERIPHERAL_DIVISOR0 {1} \ + CONFIG.PCW_FCLK1_PERIPHERAL_DIVISOR1 {1} \ + CONFIG.PCW_FCLK2_PERIPHERAL_DIVISOR0 {1} \ + CONFIG.PCW_FCLK2_PERIPHERAL_DIVISOR1 {1} \ + CONFIG.PCW_FCLK3_PERIPHERAL_DIVISOR0 {1} \ + CONFIG.PCW_FCLK3_PERIPHERAL_DIVISOR1 {1} \ + CONFIG.PCW_FPGA0_PERIPHERAL_FREQMHZ {100.000000} \ + CONFIG.PCW_FPGA1_PERIPHERAL_FREQMHZ {150.000000} \ + CONFIG.PCW_FPGA2_PERIPHERAL_FREQMHZ {50} \ + CONFIG.PCW_FPGA_FCLK0_ENABLE {1} \ + CONFIG.PCW_FPGA_FCLK1_ENABLE {0} \ + CONFIG.PCW_FPGA_FCLK2_ENABLE {0} \ + CONFIG.PCW_FPGA_FCLK3_ENABLE {0} \ + CONFIG.PCW_GPIO_MIO_GPIO_ENABLE {1} \ + CONFIG.PCW_GPIO_MIO_GPIO_IO {MIO} \ + CONFIG.PCW_I2C0_GRP_INT_ENABLE {0} \ + CONFIG.PCW_I2C0_PERIPHERAL_ENABLE {0} \ + CONFIG.PCW_I2C0_RESET_ENABLE {0} \ + CONFIG.PCW_I2C1_RESET_ENABLE {0} \ + CONFIG.PCW_I2C_PERIPHERAL_FREQMHZ {25} \ + CONFIG.PCW_I2C_RESET_ENABLE {1} \ + CONFIG.PCW_IOPLL_CTRL_FBDIV {30} \ + CONFIG.PCW_IO_IO_PLL_FREQMHZ {1000.000} \ + CONFIG.PCW_MIO_0_DIRECTION {inout} \ + CONFIG.PCW_MIO_0_IOTYPE {LVCMOS 3.3V} \ + CONFIG.PCW_MIO_0_PULLUP {disabled} \ + CONFIG.PCW_MIO_0_SLEW {slow} \ + CONFIG.PCW_MIO_10_DIRECTION {inout} \ + CONFIG.PCW_MIO_10_IOTYPE {LVCMOS 3.3V} \ + CONFIG.PCW_MIO_10_PULLUP {disabled} \ + CONFIG.PCW_MIO_10_SLEW {slow} \ + CONFIG.PCW_MIO_11_DIRECTION {inout} \ + CONFIG.PCW_MIO_11_IOTYPE {LVCMOS 3.3V} \ + CONFIG.PCW_MIO_11_PULLUP {disabled} \ + CONFIG.PCW_MIO_11_SLEW {slow} \ + CONFIG.PCW_MIO_12_DIRECTION {inout} \ + CONFIG.PCW_MIO_12_IOTYPE {LVCMOS 3.3V} \ + CONFIG.PCW_MIO_12_PULLUP {disabled} \ + CONFIG.PCW_MIO_12_SLEW {slow} \ + CONFIG.PCW_MIO_13_DIRECTION {inout} \ + CONFIG.PCW_MIO_13_IOTYPE {LVCMOS 3.3V} \ + CONFIG.PCW_MIO_13_PULLUP {disabled} \ + CONFIG.PCW_MIO_13_SLEW {slow} \ + CONFIG.PCW_MIO_14_DIRECTION {inout} \ + CONFIG.PCW_MIO_14_IOTYPE {LVCMOS 3.3V} \ + CONFIG.PCW_MIO_14_PULLUP {disabled} \ + CONFIG.PCW_MIO_14_SLEW {slow} \ + CONFIG.PCW_MIO_15_DIRECTION {inout} \ + CONFIG.PCW_MIO_15_IOTYPE {LVCMOS 3.3V} \ + CONFIG.PCW_MIO_15_PULLUP {disabled} \ + CONFIG.PCW_MIO_15_SLEW {slow} \ + CONFIG.PCW_MIO_16_DIRECTION {out} \ + CONFIG.PCW_MIO_16_IOTYPE {LVCMOS 1.8V} \ + CONFIG.PCW_MIO_16_PULLUP {disabled} \ + CONFIG.PCW_MIO_16_SLEW {fast} \ + CONFIG.PCW_MIO_17_DIRECTION {out} \ + CONFIG.PCW_MIO_17_IOTYPE {LVCMOS 1.8V} \ + CONFIG.PCW_MIO_17_PULLUP {disabled} \ + CONFIG.PCW_MIO_17_SLEW {fast} \ + CONFIG.PCW_MIO_18_DIRECTION {out} \ + CONFIG.PCW_MIO_18_IOTYPE {LVCMOS 1.8V} \ + CONFIG.PCW_MIO_18_PULLUP {disabled} \ + CONFIG.PCW_MIO_18_SLEW {fast} \ + CONFIG.PCW_MIO_19_DIRECTION {out} \ + CONFIG.PCW_MIO_19_IOTYPE {LVCMOS 1.8V} \ + CONFIG.PCW_MIO_19_PULLUP {disabled} \ + CONFIG.PCW_MIO_19_SLEW {fast} \ + CONFIG.PCW_MIO_1_DIRECTION {out} \ + CONFIG.PCW_MIO_1_IOTYPE {LVCMOS 3.3V} \ + CONFIG.PCW_MIO_1_PULLUP {disabled} \ + CONFIG.PCW_MIO_1_SLEW {fast} \ + CONFIG.PCW_MIO_20_DIRECTION {out} \ + CONFIG.PCW_MIO_20_IOTYPE {LVCMOS 1.8V} \ + CONFIG.PCW_MIO_20_PULLUP {disabled} \ + CONFIG.PCW_MIO_20_SLEW {fast} \ + CONFIG.PCW_MIO_21_DIRECTION {out} \ + CONFIG.PCW_MIO_21_IOTYPE {LVCMOS 1.8V} \ + CONFIG.PCW_MIO_21_PULLUP {disabled} \ + CONFIG.PCW_MIO_21_SLEW {fast} \ + CONFIG.PCW_MIO_22_DIRECTION {in} \ + CONFIG.PCW_MIO_22_IOTYPE {LVCMOS 1.8V} \ + CONFIG.PCW_MIO_22_PULLUP {disabled} \ + CONFIG.PCW_MIO_22_SLEW {fast} \ + CONFIG.PCW_MIO_23_DIRECTION {in} \ + CONFIG.PCW_MIO_23_IOTYPE {LVCMOS 1.8V} \ + CONFIG.PCW_MIO_23_PULLUP {disabled} \ + CONFIG.PCW_MIO_23_SLEW {fast} \ + CONFIG.PCW_MIO_24_DIRECTION {in} \ + CONFIG.PCW_MIO_24_IOTYPE {LVCMOS 1.8V} \ + CONFIG.PCW_MIO_24_PULLUP {disabled} \ + CONFIG.PCW_MIO_24_SLEW {fast} \ + CONFIG.PCW_MIO_25_DIRECTION {in} \ + CONFIG.PCW_MIO_25_IOTYPE {LVCMOS 1.8V} \ + CONFIG.PCW_MIO_25_PULLUP {disabled} \ + CONFIG.PCW_MIO_25_SLEW {fast} \ + CONFIG.PCW_MIO_26_DIRECTION {in} \ + CONFIG.PCW_MIO_26_IOTYPE {LVCMOS 1.8V} \ + CONFIG.PCW_MIO_26_PULLUP {disabled} \ + CONFIG.PCW_MIO_26_SLEW {fast} \ + CONFIG.PCW_MIO_27_DIRECTION {in} \ + CONFIG.PCW_MIO_27_IOTYPE {LVCMOS 1.8V} \ + CONFIG.PCW_MIO_27_PULLUP {disabled} \ + CONFIG.PCW_MIO_27_SLEW {fast} \ + CONFIG.PCW_MIO_28_DIRECTION {inout} \ + CONFIG.PCW_MIO_28_IOTYPE {LVCMOS 1.8V} \ + CONFIG.PCW_MIO_28_PULLUP {disabled} \ + CONFIG.PCW_MIO_28_SLEW {fast} \ + CONFIG.PCW_MIO_29_DIRECTION {in} \ + CONFIG.PCW_MIO_29_IOTYPE {LVCMOS 1.8V} \ + CONFIG.PCW_MIO_29_PULLUP {disabled} \ + CONFIG.PCW_MIO_29_SLEW {fast} \ + CONFIG.PCW_MIO_2_DIRECTION {inout} \ + CONFIG.PCW_MIO_2_IOTYPE {LVCMOS 3.3V} \ + CONFIG.PCW_MIO_2_PULLUP {disabled} \ + CONFIG.PCW_MIO_2_SLEW {fast} \ + CONFIG.PCW_MIO_30_DIRECTION {out} \ + CONFIG.PCW_MIO_30_IOTYPE {LVCMOS 1.8V} \ + CONFIG.PCW_MIO_30_PULLUP {disabled} \ + CONFIG.PCW_MIO_30_SLEW {fast} \ + CONFIG.PCW_MIO_31_DIRECTION {in} \ + CONFIG.PCW_MIO_31_IOTYPE {LVCMOS 1.8V} \ + CONFIG.PCW_MIO_31_PULLUP {disabled} \ + CONFIG.PCW_MIO_31_SLEW {fast} \ + CONFIG.PCW_MIO_32_DIRECTION {inout} \ + CONFIG.PCW_MIO_32_IOTYPE {LVCMOS 1.8V} \ + CONFIG.PCW_MIO_32_PULLUP {disabled} \ + CONFIG.PCW_MIO_32_SLEW {fast} \ + CONFIG.PCW_MIO_33_DIRECTION {inout} \ + CONFIG.PCW_MIO_33_IOTYPE {LVCMOS 1.8V} \ + CONFIG.PCW_MIO_33_PULLUP {disabled} \ + CONFIG.PCW_MIO_33_SLEW {fast} \ + CONFIG.PCW_MIO_34_DIRECTION {inout} \ + CONFIG.PCW_MIO_34_IOTYPE {LVCMOS 1.8V} \ + CONFIG.PCW_MIO_34_PULLUP {disabled} \ + CONFIG.PCW_MIO_34_SLEW {fast} \ + CONFIG.PCW_MIO_35_DIRECTION {inout} \ + CONFIG.PCW_MIO_35_IOTYPE {LVCMOS 1.8V} \ + CONFIG.PCW_MIO_35_PULLUP {disabled} \ + CONFIG.PCW_MIO_35_SLEW {fast} \ + CONFIG.PCW_MIO_36_DIRECTION {in} \ + CONFIG.PCW_MIO_36_IOTYPE {LVCMOS 1.8V} \ + CONFIG.PCW_MIO_36_PULLUP {disabled} \ + CONFIG.PCW_MIO_36_SLEW {fast} \ + CONFIG.PCW_MIO_37_DIRECTION {inout} \ + CONFIG.PCW_MIO_37_IOTYPE {LVCMOS 1.8V} \ + CONFIG.PCW_MIO_37_PULLUP {disabled} \ + CONFIG.PCW_MIO_37_SLEW {fast} \ + CONFIG.PCW_MIO_38_DIRECTION {inout} \ + CONFIG.PCW_MIO_38_IOTYPE {LVCMOS 1.8V} \ + CONFIG.PCW_MIO_38_PULLUP {disabled} \ + CONFIG.PCW_MIO_38_SLEW {fast} \ + CONFIG.PCW_MIO_39_DIRECTION {inout} \ + CONFIG.PCW_MIO_39_IOTYPE {LVCMOS 1.8V} \ + CONFIG.PCW_MIO_39_PULLUP {disabled} \ + CONFIG.PCW_MIO_39_SLEW {fast} \ + CONFIG.PCW_MIO_3_DIRECTION {inout} \ + CONFIG.PCW_MIO_3_IOTYPE {LVCMOS 3.3V} \ + CONFIG.PCW_MIO_3_PULLUP {disabled} \ + CONFIG.PCW_MIO_3_SLEW {fast} \ + CONFIG.PCW_MIO_40_DIRECTION {inout} \ + CONFIG.PCW_MIO_40_IOTYPE {LVCMOS 1.8V} \ + CONFIG.PCW_MIO_40_PULLUP {disabled} \ + CONFIG.PCW_MIO_40_SLEW {fast} \ + CONFIG.PCW_MIO_41_DIRECTION {inout} \ + CONFIG.PCW_MIO_41_IOTYPE {LVCMOS 1.8V} \ + CONFIG.PCW_MIO_41_PULLUP {disabled} \ + CONFIG.PCW_MIO_41_SLEW {fast} \ + CONFIG.PCW_MIO_42_DIRECTION {inout} \ + CONFIG.PCW_MIO_42_IOTYPE {LVCMOS 1.8V} \ + CONFIG.PCW_MIO_42_PULLUP {disabled} \ + CONFIG.PCW_MIO_42_SLEW {fast} \ + CONFIG.PCW_MIO_43_DIRECTION {inout} \ + CONFIG.PCW_MIO_43_IOTYPE {LVCMOS 1.8V} \ + CONFIG.PCW_MIO_43_PULLUP {disabled} \ + CONFIG.PCW_MIO_43_SLEW {fast} \ + CONFIG.PCW_MIO_44_DIRECTION {inout} \ + CONFIG.PCW_MIO_44_IOTYPE {LVCMOS 1.8V} \ + CONFIG.PCW_MIO_44_PULLUP {disabled} \ + CONFIG.PCW_MIO_44_SLEW {fast} \ + CONFIG.PCW_MIO_45_DIRECTION {inout} \ + CONFIG.PCW_MIO_45_IOTYPE {LVCMOS 1.8V} \ + CONFIG.PCW_MIO_45_PULLUP {disabled} \ + CONFIG.PCW_MIO_45_SLEW {fast} \ + CONFIG.PCW_MIO_46_DIRECTION {in} \ + CONFIG.PCW_MIO_46_IOTYPE {LVCMOS 1.8V} \ + CONFIG.PCW_MIO_46_PULLUP {disabled} \ + CONFIG.PCW_MIO_46_SLEW {slow} \ + CONFIG.PCW_MIO_47_DIRECTION {in} \ + CONFIG.PCW_MIO_47_IOTYPE {LVCMOS 1.8V} \ + CONFIG.PCW_MIO_47_PULLUP {disabled} \ + CONFIG.PCW_MIO_47_SLEW {slow} \ + CONFIG.PCW_MIO_48_DIRECTION {out} \ + CONFIG.PCW_MIO_48_IOTYPE {LVCMOS 1.8V} \ + CONFIG.PCW_MIO_48_PULLUP {disabled} \ + CONFIG.PCW_MIO_48_SLEW {slow} \ + CONFIG.PCW_MIO_49_DIRECTION {in} \ + CONFIG.PCW_MIO_49_IOTYPE {LVCMOS 1.8V} \ + CONFIG.PCW_MIO_49_PULLUP {disabled} \ + CONFIG.PCW_MIO_49_SLEW {slow} \ + CONFIG.PCW_MIO_4_DIRECTION {inout} \ + CONFIG.PCW_MIO_4_IOTYPE {LVCMOS 3.3V} \ + CONFIG.PCW_MIO_4_PULLUP {disabled} \ + CONFIG.PCW_MIO_4_SLEW {fast} \ + CONFIG.PCW_MIO_50_DIRECTION {inout} \ + CONFIG.PCW_MIO_50_IOTYPE {LVCMOS 1.8V} \ + CONFIG.PCW_MIO_50_PULLUP {disabled} \ + CONFIG.PCW_MIO_50_SLEW {slow} \ + CONFIG.PCW_MIO_51_DIRECTION {inout} \ + CONFIG.PCW_MIO_51_IOTYPE {LVCMOS 1.8V} \ + CONFIG.PCW_MIO_51_PULLUP {disabled} \ + CONFIG.PCW_MIO_51_SLEW {slow} \ + CONFIG.PCW_MIO_52_DIRECTION {out} \ + CONFIG.PCW_MIO_52_IOTYPE {LVCMOS 1.8V} \ + CONFIG.PCW_MIO_52_PULLUP {disabled} \ + CONFIG.PCW_MIO_52_SLEW {slow} \ + CONFIG.PCW_MIO_53_DIRECTION {inout} \ + CONFIG.PCW_MIO_53_IOTYPE {LVCMOS 1.8V} \ + CONFIG.PCW_MIO_53_PULLUP {disabled} \ + CONFIG.PCW_MIO_53_SLEW {slow} \ + CONFIG.PCW_MIO_5_DIRECTION {inout} \ + CONFIG.PCW_MIO_5_IOTYPE {LVCMOS 3.3V} \ + CONFIG.PCW_MIO_5_PULLUP {disabled} \ + CONFIG.PCW_MIO_5_SLEW {fast} \ + CONFIG.PCW_MIO_6_DIRECTION {out} \ + CONFIG.PCW_MIO_6_IOTYPE {LVCMOS 3.3V} \ + CONFIG.PCW_MIO_6_PULLUP {disabled} \ + CONFIG.PCW_MIO_6_SLEW {fast} \ + CONFIG.PCW_MIO_7_DIRECTION {out} \ + CONFIG.PCW_MIO_7_IOTYPE {LVCMOS 3.3V} \ + CONFIG.PCW_MIO_7_PULLUP {disabled} \ + CONFIG.PCW_MIO_7_SLEW {slow} \ + CONFIG.PCW_MIO_8_DIRECTION {out} \ + CONFIG.PCW_MIO_8_IOTYPE {LVCMOS 3.3V} \ + CONFIG.PCW_MIO_8_PULLUP {disabled} \ + CONFIG.PCW_MIO_8_SLEW {fast} \ + CONFIG.PCW_MIO_9_DIRECTION {inout} \ + CONFIG.PCW_MIO_9_IOTYPE {LVCMOS 3.3V} \ + CONFIG.PCW_MIO_9_PULLUP {disabled} \ + CONFIG.PCW_MIO_9_SLEW {slow} \ + CONFIG.PCW_MIO_TREE_PERIPHERALS {GPIO#Quad SPI Flash#Quad SPI Flash#Quad SPI Flash#Quad SPI Flash#Quad SPI Flash#Quad SPI Flash#GPIO#GPIO#GPIO#GPIO#GPIO#GPIO#GPIO#GPIO#GPIO#Enet 0#Enet 0#Enet 0#Enet 0#Enet 0#Enet 0#Enet 0#Enet 0#Enet 0#Enet 0#Enet 0#Enet 0#USB 0#USB 0#USB 0#USB 0#USB 0#USB 0#USB 0#USB 0#USB 0#USB 0#USB 0#USB 0#SD 0#SD 0#SD 0#SD 0#SD 0#SD 0#SD 0#SD 0#UART 1#UART 1#GPIO#GPIO#Enet 0#Enet 0} \ + CONFIG.PCW_MIO_TREE_SIGNALS {gpio[0]#qspi0_ss_b#qspi0_io[0]#qspi0_io[1]#qspi0_io[2]#qspi0_io[3]/HOLD_B#qspi0_sclk#gpio[7]#gpio[8]#gpio[9]#gpio[10]#gpio[11]#gpio[12]#gpio[13]#gpio[14]#gpio[15]#tx_clk#txd[0]#txd[1]#txd[2]#txd[3]#tx_ctl#rx_clk#rxd[0]#rxd[1]#rxd[2]#rxd[3]#rx_ctl#data[4]#dir#stp#nxt#data[0]#data[1]#data[2]#data[3]#clk#data[5]#data[6]#data[7]#clk#cmd#data[0]#data[1]#data[2]#data[3]#wp#cd#tx#rx#gpio[50]#gpio[51]#mdc#mdio} \ + CONFIG.PCW_NAND_GRP_D8_ENABLE {0} \ + CONFIG.PCW_NAND_PERIPHERAL_ENABLE {0} \ + CONFIG.PCW_NOR_GRP_A25_ENABLE {0} \ + CONFIG.PCW_NOR_GRP_CS0_ENABLE {0} \ + CONFIG.PCW_NOR_GRP_CS1_ENABLE {0} \ + CONFIG.PCW_NOR_GRP_SRAM_CS0_ENABLE {0} \ + CONFIG.PCW_NOR_GRP_SRAM_CS1_ENABLE {0} \ + CONFIG.PCW_NOR_GRP_SRAM_INT_ENABLE {0} \ + CONFIG.PCW_NOR_PERIPHERAL_ENABLE {0} \ + CONFIG.PCW_PCAP_PERIPHERAL_DIVISOR0 {5} \ + CONFIG.PCW_PJTAG_PERIPHERAL_ENABLE {0} \ + CONFIG.PCW_PRESET_BANK0_VOLTAGE {LVCMOS 3.3V} \ + CONFIG.PCW_PRESET_BANK1_VOLTAGE {LVCMOS 1.8V} \ + CONFIG.PCW_QSPI_GRP_FBCLK_ENABLE {0} \ + CONFIG.PCW_QSPI_GRP_IO1_ENABLE {0} \ + CONFIG.PCW_QSPI_GRP_SINGLE_SS_ENABLE {1} \ + CONFIG.PCW_QSPI_GRP_SINGLE_SS_IO {MIO 1 .. 6} \ + CONFIG.PCW_QSPI_GRP_SS1_ENABLE {0} \ + CONFIG.PCW_QSPI_PERIPHERAL_DIVISOR0 {5} \ + CONFIG.PCW_QSPI_PERIPHERAL_ENABLE {1} \ + CONFIG.PCW_QSPI_PERIPHERAL_FREQMHZ {200} \ + CONFIG.PCW_QSPI_QSPI_IO {MIO 1 .. 6} \ + CONFIG.PCW_SD0_GRP_CD_ENABLE {1} \ + CONFIG.PCW_SD0_GRP_CD_IO {MIO 47} \ + CONFIG.PCW_SD0_GRP_POW_ENABLE {0} \ + CONFIG.PCW_SD0_GRP_WP_ENABLE {1} \ + CONFIG.PCW_SD0_GRP_WP_IO {MIO 46} \ + CONFIG.PCW_SD0_PERIPHERAL_ENABLE {1} \ + CONFIG.PCW_SD0_SD0_IO {MIO 40 .. 45} \ + CONFIG.PCW_SDIO_PERIPHERAL_DIVISOR0 {20} \ + CONFIG.PCW_SDIO_PERIPHERAL_FREQMHZ {50} \ + CONFIG.PCW_SDIO_PERIPHERAL_VALID {1} \ + CONFIG.PCW_SINGLE_QSPI_DATA_MODE {x4} \ + CONFIG.PCW_SMC_PERIPHERAL_DIVISOR0 {1} \ + CONFIG.PCW_SPI_PERIPHERAL_DIVISOR0 {1} \ + CONFIG.PCW_S_AXI_HP2_DATA_WIDTH {64} \ + CONFIG.PCW_TPIU_PERIPHERAL_DIVISOR0 {1} \ + CONFIG.PCW_TTC0_CLK0_PERIPHERAL_FREQMHZ {133.333333} \ + CONFIG.PCW_TTC0_CLK1_PERIPHERAL_FREQMHZ {133.333333} \ + CONFIG.PCW_TTC0_CLK2_PERIPHERAL_FREQMHZ {133.333333} \ + CONFIG.PCW_TTC0_PERIPHERAL_ENABLE {1} \ + CONFIG.PCW_TTC0_TTC0_IO {EMIO} \ + CONFIG.PCW_TTC_PERIPHERAL_FREQMHZ {50} \ + CONFIG.PCW_UART1_GRP_FULL_ENABLE {0} \ + CONFIG.PCW_UART1_PERIPHERAL_ENABLE {1} \ + CONFIG.PCW_UART1_UART1_IO {MIO 48 .. 49} \ + CONFIG.PCW_UART_PERIPHERAL_DIVISOR0 {20} \ + CONFIG.PCW_UART_PERIPHERAL_FREQMHZ {50} \ + CONFIG.PCW_UART_PERIPHERAL_VALID {1} \ + CONFIG.PCW_UIPARAM_ACT_DDR_FREQ_MHZ {533.333374} \ + CONFIG.PCW_UIPARAM_DDR_BANK_ADDR_COUNT {3} \ + CONFIG.PCW_UIPARAM_DDR_BL {8} \ + CONFIG.PCW_UIPARAM_DDR_BOARD_DELAY0 {0.41} \ + CONFIG.PCW_UIPARAM_DDR_BOARD_DELAY1 {0.411} \ + CONFIG.PCW_UIPARAM_DDR_BOARD_DELAY2 {0.341} \ + CONFIG.PCW_UIPARAM_DDR_BOARD_DELAY3 {0.358} \ + CONFIG.PCW_UIPARAM_DDR_CL {7} \ + CONFIG.PCW_UIPARAM_DDR_COL_ADDR_COUNT {10} \ + CONFIG.PCW_UIPARAM_DDR_CWL {6} \ + CONFIG.PCW_UIPARAM_DDR_DEVICE_CAPACITY {2048 MBits} \ + CONFIG.PCW_UIPARAM_DDR_DQS_TO_CLK_DELAY_0 {0.025} \ + CONFIG.PCW_UIPARAM_DDR_DQS_TO_CLK_DELAY_1 {0.028} \ + CONFIG.PCW_UIPARAM_DDR_DQS_TO_CLK_DELAY_2 {0.001} \ + CONFIG.PCW_UIPARAM_DDR_DQS_TO_CLK_DELAY_3 {0.001} \ + CONFIG.PCW_UIPARAM_DDR_DRAM_WIDTH {16 Bits} \ + CONFIG.PCW_UIPARAM_DDR_FREQ_MHZ {533.333313} \ + CONFIG.PCW_UIPARAM_DDR_MEMORY_TYPE {DDR 3} \ + CONFIG.PCW_UIPARAM_DDR_PARTNO {MT41J128M16 HA-15E} \ + CONFIG.PCW_UIPARAM_DDR_ROW_ADDR_COUNT {14} \ + CONFIG.PCW_UIPARAM_DDR_SPEED_BIN {DDR3_1066F} \ + CONFIG.PCW_UIPARAM_DDR_TRAIN_DATA_EYE {1} \ + CONFIG.PCW_UIPARAM_DDR_TRAIN_READ_GATE {1} \ + CONFIG.PCW_UIPARAM_DDR_TRAIN_WRITE_LEVEL {1} \ + CONFIG.PCW_UIPARAM_DDR_T_FAW {45.0} \ + CONFIG.PCW_UIPARAM_DDR_T_RAS_MIN {36.0} \ + CONFIG.PCW_UIPARAM_DDR_T_RC {49.5} \ + CONFIG.PCW_UIPARAM_DDR_T_RCD {7} \ + CONFIG.PCW_UIPARAM_DDR_T_RP {7} \ + CONFIG.PCW_UIPARAM_DDR_USE_INTERNAL_VREF {1} \ + CONFIG.PCW_USB0_PERIPHERAL_ENABLE {1} \ + CONFIG.PCW_USB0_PERIPHERAL_FREQMHZ {60} \ + CONFIG.PCW_USB0_RESET_ENABLE {0} \ + CONFIG.PCW_USB0_USB0_IO {MIO 28 .. 39} \ + CONFIG.PCW_USB1_RESET_ENABLE {0} \ + CONFIG.PCW_USB_RESET_ENABLE {1} \ + CONFIG.PCW_USB_RESET_SELECT {Share reset pin} \ + CONFIG.PCW_USE_S_AXI_HP0 {1} \ + CONFIG.PCW_USE_S_AXI_HP1 {1} \ + CONFIG.PCW_USE_S_AXI_HP2 {1} \ + CONFIG.preset {ZedBoard} \ + ] $processing_system7_0 + + # Create instance: ps7_0_axi_periph, and set properties + set ps7_0_axi_periph [ create_bd_cell -type ip -vlnv xilinx.com:ip:axi_interconnect:2.1 ps7_0_axi_periph ] + set_property -dict [ list \ + CONFIG.NUM_MI {4} \ + ] $ps7_0_axi_periph + + # Create instance: rst_ps7_0_100M, and set properties + set rst_ps7_0_100M [ create_bd_cell -type ip -vlnv xilinx.com:ip:proc_sys_reset:5.0 rst_ps7_0_100M ] + + # Create instance: v_dma, and set properties + set v_dma [ create_bd_cell -type ip -vlnv xilinx.com:ip:axi_dma:7.1 v_dma ] + set_property -dict [ list \ + CONFIG.c_include_mm2s_dre {1} \ + CONFIG.c_include_s2mm {0} \ + CONFIG.c_include_sg {0} \ + CONFIG.c_m_axi_mm2s_data_width {64} \ + CONFIG.c_m_axis_mm2s_tdata_width {64} \ + CONFIG.c_mm2s_burst_size {256} \ + CONFIG.c_sg_include_stscntrl_strm {0} \ + CONFIG.c_sg_length_width {16} \ + ] $v_dma + + # Create instance: xus_dma, and set properties + set xus_dma [ create_bd_cell -type ip -vlnv xilinx.com:ip:axi_dma:7.1 xus_dma ] + set_property -dict [ list \ + CONFIG.c_include_mm2s_dre {1} \ + CONFIG.c_include_s2mm {0} \ + CONFIG.c_include_sg {0} \ + CONFIG.c_m_axi_mm2s_data_width {64} \ + CONFIG.c_m_axis_mm2s_tdata_width {64} \ + CONFIG.c_mm2s_burst_size {256} \ + CONFIG.c_sg_include_stscntrl_strm {0} \ + CONFIG.c_sg_length_width {16} \ + ] $xus_dma + + # Create instance: y_dma, and set properties + set y_dma [ create_bd_cell -type ip -vlnv xilinx.com:ip:axi_dma:7.1 y_dma ] + set_property -dict [ list \ + CONFIG.c_include_mm2s {0} \ + CONFIG.c_include_s2mm_dre {1} \ + CONFIG.c_include_sg {0} \ + CONFIG.c_micro_dma {0} \ + CONFIG.c_s2mm_burst_size {128} \ + CONFIG.c_s_axis_s2mm_tdata_width {256} \ + CONFIG.c_sg_include_stscntrl_strm {0} \ + CONFIG.c_sg_length_width {16} \ + ] $y_dma + + # Create interface connections + connect_bd_intf_net -intf_net HlsKernelV_0_y_port [get_bd_intf_pins HlsKernelV_0/y_port] [get_bd_intf_pins y_dma/S_AXIS_S2MM] + connect_bd_intf_net -intf_net axi_mem_intercon_1_M00_AXI [get_bd_intf_pins axi_mem_intercon_1/M00_AXI] [get_bd_intf_pins processing_system7_0/S_AXI_HP1] + connect_bd_intf_net -intf_net axi_mem_intercon_2_M00_AXI [get_bd_intf_pins axi_mem_intercon_2/M00_AXI] [get_bd_intf_pins processing_system7_0/S_AXI_HP2] + connect_bd_intf_net -intf_net axi_mem_intercon_M00_AXI [get_bd_intf_pins axi_mem_intercon/M00_AXI] [get_bd_intf_pins processing_system7_0/S_AXI_HP0] + connect_bd_intf_net -intf_net processing_system7_0_DDR [get_bd_intf_ports DDR] [get_bd_intf_pins processing_system7_0/DDR] + connect_bd_intf_net -intf_net processing_system7_0_FIXED_IO [get_bd_intf_ports FIXED_IO] [get_bd_intf_pins processing_system7_0/FIXED_IO] + connect_bd_intf_net -intf_net processing_system7_0_M_AXI_GP0 [get_bd_intf_pins processing_system7_0/M_AXI_GP0] [get_bd_intf_pins ps7_0_axi_periph/S00_AXI] + connect_bd_intf_net -intf_net ps7_0_axi_periph_M00_AXI [get_bd_intf_pins HlsKernelV_0/s_axi_control] [get_bd_intf_pins ps7_0_axi_periph/M00_AXI] + connect_bd_intf_net -intf_net ps7_0_axi_periph_M01_AXI [get_bd_intf_pins ps7_0_axi_periph/M01_AXI] [get_bd_intf_pins v_dma/S_AXI_LITE] + connect_bd_intf_net -intf_net ps7_0_axi_periph_M02_AXI [get_bd_intf_pins ps7_0_axi_periph/M02_AXI] [get_bd_intf_pins xus_dma/S_AXI_LITE] + connect_bd_intf_net -intf_net ps7_0_axi_periph_M03_AXI [get_bd_intf_pins ps7_0_axi_periph/M03_AXI] [get_bd_intf_pins y_dma/S_AXI_LITE] + connect_bd_intf_net -intf_net u_dma_M_AXI_MM2S [get_bd_intf_pins axi_mem_intercon_1/S00_AXI] [get_bd_intf_pins v_dma/M_AXI_MM2S] + connect_bd_intf_net -intf_net v_dma_M_AXIS_MM2S [get_bd_intf_pins HlsKernelV_0/v_port] [get_bd_intf_pins v_dma/M_AXIS_MM2S] + connect_bd_intf_net -intf_net x_dma_M_AXI_MM2S [get_bd_intf_pins axi_mem_intercon/S00_AXI] [get_bd_intf_pins xus_dma/M_AXI_MM2S] + connect_bd_intf_net -intf_net xu_dma_M_AXI_S2MM [get_bd_intf_pins axi_mem_intercon_2/S00_AXI] [get_bd_intf_pins y_dma/M_AXI_S2MM] + connect_bd_intf_net -intf_net xus_dma_M_AXIS_MM2S [get_bd_intf_pins HlsKernelV_0/xus_port] [get_bd_intf_pins xus_dma/M_AXIS_MM2S] + + # Create port connections + connect_bd_net -net processing_system7_0_FCLK_CLK0 [get_bd_pins HlsKernelV_0/ap_clk] [get_bd_pins axi_mem_intercon/ACLK] [get_bd_pins axi_mem_intercon/M00_ACLK] [get_bd_pins axi_mem_intercon/S00_ACLK] [get_bd_pins axi_mem_intercon_1/ACLK] [get_bd_pins axi_mem_intercon_1/M00_ACLK] [get_bd_pins axi_mem_intercon_1/S00_ACLK] [get_bd_pins axi_mem_intercon_2/ACLK] [get_bd_pins axi_mem_intercon_2/M00_ACLK] [get_bd_pins axi_mem_intercon_2/S00_ACLK] [get_bd_pins processing_system7_0/FCLK_CLK0] [get_bd_pins processing_system7_0/M_AXI_GP0_ACLK] [get_bd_pins processing_system7_0/S_AXI_HP0_ACLK] [get_bd_pins processing_system7_0/S_AXI_HP1_ACLK] [get_bd_pins processing_system7_0/S_AXI_HP2_ACLK] [get_bd_pins ps7_0_axi_periph/ACLK] [get_bd_pins ps7_0_axi_periph/M00_ACLK] [get_bd_pins ps7_0_axi_periph/M01_ACLK] [get_bd_pins ps7_0_axi_periph/M02_ACLK] [get_bd_pins ps7_0_axi_periph/M03_ACLK] [get_bd_pins ps7_0_axi_periph/S00_ACLK] [get_bd_pins rst_ps7_0_100M/slowest_sync_clk] [get_bd_pins v_dma/m_axi_mm2s_aclk] [get_bd_pins v_dma/s_axi_lite_aclk] [get_bd_pins xus_dma/m_axi_mm2s_aclk] [get_bd_pins xus_dma/s_axi_lite_aclk] [get_bd_pins y_dma/m_axi_s2mm_aclk] [get_bd_pins y_dma/s_axi_lite_aclk] + connect_bd_net -net processing_system7_0_FCLK_RESET0_N [get_bd_pins processing_system7_0/FCLK_RESET0_N] [get_bd_pins rst_ps7_0_100M/ext_reset_in] + connect_bd_net -net rst_ps7_0_100M_peripheral_aresetn [get_bd_pins HlsKernelV_0/ap_rst_n] [get_bd_pins axi_mem_intercon/ARESETN] [get_bd_pins axi_mem_intercon/M00_ARESETN] [get_bd_pins axi_mem_intercon/S00_ARESETN] [get_bd_pins axi_mem_intercon_1/ARESETN] [get_bd_pins axi_mem_intercon_1/M00_ARESETN] [get_bd_pins axi_mem_intercon_1/S00_ARESETN] [get_bd_pins axi_mem_intercon_2/ARESETN] [get_bd_pins axi_mem_intercon_2/M00_ARESETN] [get_bd_pins axi_mem_intercon_2/S00_ARESETN] [get_bd_pins ps7_0_axi_periph/ARESETN] [get_bd_pins ps7_0_axi_periph/M00_ARESETN] [get_bd_pins ps7_0_axi_periph/M01_ARESETN] [get_bd_pins ps7_0_axi_periph/M02_ARESETN] [get_bd_pins ps7_0_axi_periph/M03_ARESETN] [get_bd_pins ps7_0_axi_periph/S00_ARESETN] [get_bd_pins rst_ps7_0_100M/peripheral_aresetn] [get_bd_pins v_dma/axi_resetn] [get_bd_pins xus_dma/axi_resetn] [get_bd_pins y_dma/axi_resetn] + + # Create address segments + assign_bd_address -offset 0x40000000 -range 0x00010000 -target_address_space [get_bd_addr_spaces processing_system7_0/Data] [get_bd_addr_segs HlsKernelV_0/s_axi_control/Reg] -force + assign_bd_address -offset 0x41E00000 -range 0x00010000 -target_address_space [get_bd_addr_spaces processing_system7_0/Data] [get_bd_addr_segs v_dma/S_AXI_LITE/Reg] -force + assign_bd_address -offset 0x41E10000 -range 0x00010000 -target_address_space [get_bd_addr_spaces processing_system7_0/Data] [get_bd_addr_segs xus_dma/S_AXI_LITE/Reg] -force + assign_bd_address -offset 0x41E20000 -range 0x00010000 -target_address_space [get_bd_addr_spaces processing_system7_0/Data] [get_bd_addr_segs y_dma/S_AXI_LITE/Reg] -force + assign_bd_address -offset 0x00000000 -range 0x20000000 -target_address_space [get_bd_addr_spaces v_dma/Data_MM2S] [get_bd_addr_segs processing_system7_0/S_AXI_HP1/HP1_DDR_LOWOCM] -force + assign_bd_address -offset 0x00000000 -range 0x20000000 -target_address_space [get_bd_addr_spaces xus_dma/Data_MM2S] [get_bd_addr_segs processing_system7_0/S_AXI_HP0/HP0_DDR_LOWOCM] -force + assign_bd_address -offset 0x00000000 -range 0x20000000 -target_address_space [get_bd_addr_spaces y_dma/Data_S2MM] [get_bd_addr_segs processing_system7_0/S_AXI_HP2/HP2_DDR_LOWOCM] -force + + + # Restore current instance + current_bd_instance $oldCurInst + + validate_bd_design + save_bd_design +} +# End of create_root_design() + + +################################################################## +# MAIN FLOW +################################################################## + +create_root_design "" + + diff --git a/python/SVD_Approximation.ipynb b/python/SVD_Approximation.ipynb new file mode 100644 index 0000000..3cb4bcd --- /dev/null +++ b/python/SVD_Approximation.ipynb @@ -0,0 +1,4235 @@ +{ + "nbformat": 4, + "nbformat_minor": 0, + "metadata": { + "colab": { + "name": "SVD Approximation", + "provenance": [], + "collapsed_sections": [ + "_trp6sx3J3RR", + "9EWRUuxXkzxh", + "9qAJGTrJxCUl", + "Fxd8syuH4WeS", + "L3OA-HB7gExG", + "pjtqPfHpFOpE", + "WpYSOigtTVxh", + "Ya5FeHCMTips", + "xKKBt8IfsoZx", + "rhuPyqNv5Pxk", + "zY1BfLH75W2l", + "ukjOI4iC-uZq", + "euTcBc3P_aoN", + "ykQbfnSia2rf", + "IvprTTb8vXiM", + "95vRr_e-z4k3" + ], + "toc_visible": true + }, + "kernelspec": { + "display_name": "Python 3", + "name": "python3" + }, + "language_info": { + "name": "python" + } + }, + "cells": [ + { + "cell_type": "markdown", + "metadata": { + "id": "oHvAGHE5Ya6_" + }, + "source": [ + "# SVD Approximation" + ] + }, + { + "cell_type": "code", + "metadata": { + "colab": { + "base_uri": "https://localhost:8080/" + }, + "id": "MGO1yyCnXtbR", + "outputId": "09da0a50-9663-4638-a515-84f956046399" + }, + "source": [ + "import tensorflow as tf\n", + "import matplotlib.pyplot as plt\n", + "import numpy as np\n", + "from PIL import Image, ImageOps\n", + "from google.colab import drive\n", + "import re\n", + "from datetime import datetime\n", + "import os\n", + "\n", + "# Load the TensorBoard notebook extension\n", + "%load_ext tensorboard\n", + "%tensorflow_version 2.x\n", + "from tensorboard.plugins.hparams import api as hp\n", + "# Clear any logs from previous tensorboard runs\n", + "!rm -rf /tmp/mylogs\n", + "writer = tf.summary.create_file_writer('/tmp/mylogs')\n", + "\n", + "drive.mount('/gdrive', force_remount=True)" + ], + "execution_count": 1, + "outputs": [ + { + "output_type": "stream", + "text": [ + "Mounted at /gdrive\n" + ], + "name": "stdout" + } + ] + }, + { + "cell_type": "markdown", + "metadata": { + "id": "zMLle_8oZIh5" + }, + "source": [ + "## Algorithm 1 - Stardard SVD Decomposition" + ] + }, + { + "cell_type": "code", + "metadata": { + "id": "8mPVVvxkYN5T" + }, + "source": [ + "def svd1(x_in, Verbose=False, correction_factor=1e-12):\n", + " \"\"\"\n", + " @brief Short-hand for applying SVD and dealing with non-converging SVD.\n", + " \n", + " @param x input matrix\n", + " \n", + " @return the U, s, V first components\n", + " \"\"\"\n", + " x = x_in.copy()\n", + " m, n = x.shape\n", + " not_converged = True\n", + " max_tries = 1000\n", + " i = 0\n", + " while not_converged:\n", + " try:\n", + " u, s, v = np.linalg.svd(x, full_matrices=False)\n", + " except np.linalg.linalg.LinAlgError as e:\n", + " # ==================================================================\n", + " # If SVD didn't converge, add a small error to the matrix and\n", + " # repeat, otherwise the heuristic will always generate zero\n", + " # components.\n", + " # ==================================================================\n", + " if Verbose:\n", + " print(\"[WARNING] Exception caught: {}\". format(e))\n", + " if np.isnan(x).any():\n", + " print(\"[WARNING] The provided matrix contains NaNs.\")\n", + " if np.isinf(x).any():\n", + " print(\"[WARNING] The provided matrix contains Infs.\")\n", + " u = np.zeros((m, m))\n", + " s = np.zeros((n,))\n", + " v = np.zeros((n, n))\n", + " x -= correction_factor\n", + " if np.any(s): # not all zeros\n", + " not_converged = False\n", + " # If still not converging and max tries reached, return svd components\n", + " # that are close to zero.\n", + " if not_converged and i == max_tries:\n", + " not_converge = False\n", + " u = np.zeros((m, m))\n", + " s = np.zeros((n,))\n", + " v = np.zeros((n, n))\n", + " u += 1e-15\n", + " s += 1e-15\n", + " v += 1e-15\n", + " i += 1\n", + " return u.T[0], s[0], v[0]" + ], + "execution_count": 2, + "outputs": [] + }, + { + "cell_type": "code", + "metadata": { + "colab": { + "base_uri": "https://localhost:8080/" + }, + "id": "7b4e1BohX4uy", + "outputId": "63d3669e-3dbe-4a46-9e9c-ad9b6b776893" + }, + "source": [ + "x = np.random.randn(32, 16)\n", + "svd1(x)" + ], + "execution_count": 3, + "outputs": [ + { + "output_type": "execute_result", + "data": { + "text/plain": [ + "(array([-0.23517926, -0.22266451, -0.04113012, 0.12105154, 0.09157681,\n", + " 0.31938436, 0.06855524, -0.09182536, 0.1314608 , -0.09691401,\n", + " -0.18813444, -0.03940004, 0.11687518, 0.12699954, 0.06467241,\n", + " -0.33720879, -0.08737761, -0.01283995, 0.01086322, 0.32436626,\n", + " -0.15699125, -0.23119637, 0.02632368, 0.02199429, -0.10579826,\n", + " 0.3113676 , 0.26651324, 0.22477058, 0.17408367, -0.03829521,\n", + " 0.14641498, 0.2619741 ]),\n", + " 8.688512368755092,\n", + " array([-0.17232688, -0.50307578, 0.04739223, -0.25651778, 0.02782118,\n", + " -0.33456374, -0.36638351, -0.35588306, -0.24278886, 0.0009277 ,\n", + " 0.17219074, 0.20284928, 0.12503761, 0.21298591, 0.14851794,\n", + " -0.25054842]))" + ] + }, + "metadata": { + "tags": [] + }, + "execution_count": 3 + } + ] + }, + { + "cell_type": "markdown", + "metadata": { + "id": "VX2I2QK0a7b2" + }, + "source": [ + "## Algorithm 2 - Joshua Paper\n", + "\n", + "Decompose `k` matrices into `r` sub-matrices." + ] + }, + { + "cell_type": "code", + "metadata": { + "id": "NIsZsVlEgfVl" + }, + "source": [ + "def mse(a, b):\n", + " return ((a - b)**2).mean()\n", + "\n", + "def avg_abs_diff(a, b):\n", + " return np.absolute(a - b).mean()\n", + "\n", + "def frobenius_norm(a, b):\n", + " return np.sqrt(np.absolute(np.linalg.norm(a - b)))\n", + "\n", + "def frobenius(x):\n", + " return (x**2).sum()\n", + "\n", + "def check_threshold(U, U_step, V, V_step, stop_threshold=0.00005,\n", + " config='mse'):\n", + " \"\"\"\n", + " @brief Determines the threshold for stopping vectors refinements\n", + " \n", + " @param U []\n", + " @param U_step []\n", + " @param V []\n", + " @param V_step []\n", + " \n", + " @return whether to stop refinement process\n", + " \"\"\"\n", + " if config == 'mse':\n", + " diff_u = mse(U, U_step)\n", + " diff_v = mse(V, V_step)\n", + " elif config == 'avg':\n", + " diff_u = avg_abs_diff(U, U_step)\n", + " diff_v = avg_abs_diff(V, V_step)\n", + " elif config == 'frobenius-norm':\n", + " diff_u = frobenius_norm(U, U_step)\n", + " diff_v = frobenius_norm(V, V_step)\n", + " elif config == 'norm':\n", + " diff_u = np.linalg.norm(U - U_step)\n", + " diff_v = np.linalg.norm(V - V_step)\n", + " if diff_v < stop_threshold and diff_u < stop_threshold:\n", + " return True, diff_u, diff_v\n", + " else:\n", + " return False, diff_u, diff_v" + ], + "execution_count": 4, + "outputs": [] + }, + { + "cell_type": "code", + "metadata": { + "id": "DWb7XVTzithU" + }, + "source": [ + "def get_vec_from_largest_eig(x):\n", + " w, vr = np.linalg.eigh(x)\n", + " return vr[:, np.argmax(w)]" + ], + "execution_count": 5, + "outputs": [] + }, + { + "cell_type": "code", + "metadata": { + "id": "Q-QkFZOwagdX" + }, + "source": [ + "def update_F(F, U, V):\n", + " FT = np.transpose(F, axes=(0, 2, 1))\n", + " S = V.T @ FT @ U\n", + " A = np.outer(U, V)\n", + " F_tmp = np.zeros(F.shape)\n", + " for i in range(F.shape[0]):\n", + " F_tmp[i] = F[i] - S[i] * A\n", + " return F_tmp, S\n", + "\n", + "def algorithm2(F_in, r=1, stop_threshold=0.0001, hard_stop=100,\n", + " decomposition='eigen', truncate=False, metric='mse',\n", + " report_writer=None, report_step=0, scaler=None, Verbose=False):\n", + " \"\"\"\n", + " @brief Algorithm from \"Synthesis and Optimization\n", + " of 2D Filter Designs for Heterogeneous FPGAs\"\n", + " \n", + " @param F_in List or array of matrixes to approximate \n", + " (they must have same shape)\n", + " @param r The number of sub-matrices\n", + " @param Verbose Verbose\n", + " \n", + " @return the eigenvalues lambda_ij and vectors u and v\n", + " \"\"\"\n", + " if isinstance(F_in, (list,)):\n", + " k = len(F_in)\n", + " m, n = F_in[0].shape\n", + " F = np.zeros((k, m, n))\n", + " for i in range(k):\n", + " F[i] = F_in[i].copy()\n", + " else:\n", + " k, m, n = F_in.shape\n", + " F = np.array(F_in, copy=True)\n", + " # hard_stop = 100\n", + " # stop_threshold = 0.0001 # F.std()\n", + " if truncate:\n", + " tot_elem = k * (m * n)\n", + " appr_elem = k * (m + n + r)\n", + " if appr_elem >= tot_elem:\n", + " print('[WARNING] The r value ({}) is too high and will be truncated.'.format(r))\n", + " while appr_elem >= tot_elem:\n", + " r -= 1\n", + " appr_elem = k * (m + n + r)\n", + " print('[WARNING] r set to {}.'. format(r))\n", + " if scaler is None:\n", + " scaler = np.ones((k))\n", + " u_array = np.zeros((r, m))\n", + " s_array = np.zeros((r, k))\n", + " v_array = np.zeros((r, n))\n", + " # NOTE: Given a matrix A, we have that: A @ A.T is symmetrical! Meaning\n", + " # that, for the spectral theorem, A has real eigenvalues!\n", + " for j in range(r):\n", + " # Form the (m x m) matrix Fn: sum[0,k-1](F[i] @ F[i].T)\n", + " Fn = np.zeros((m, m))\n", + " for i in range(k):\n", + " Fn += scaler[i] * F[i] @ F[i].T # SQUARED\n", + " # Calculate the eigenvector u that corresponds to the largest eigenvalue \n", + " if decomposition == 'eigen':\n", + " u = get_vec_from_largest_eig(Fn)\n", + " else:\n", + " u, _, _ = svd1(Fn)\n", + " # Form the (n x k) matrix: Fb = [F[0].T @ u, F[1].T @ u, ..., F[k-1].T @ u]\n", + " Fb = np.zeros((n, k))\n", + " for i in range(k):\n", + " Fb[:,i] = scaler[i] * F[i].T @ u\n", + " # Calculate the eigenvector v that corresponds to the largest \n", + " # eigenvalue of the (n x n) matrix: Fb @ Fb.T\n", + " Fb = Fb @ Fb.T\n", + " if decomposition == 'eigen':\n", + " v = get_vec_from_largest_eig(Fb)\n", + " else:\n", + " _, _, v = svd1(Fb)\n", + " U = u\n", + " V = v\n", + " for t in range(hard_stop):\n", + " # Form the (k x m) matrix Fb = [F[0] @ v, F[1] @ v, ..., F[k-1] @ v].T\n", + " FbT = np.zeros((m, k))\n", + " for i in range(k):\n", + " FbT[:, i] = scaler[i] * F[i] @ v\n", + " Fb = FbT.T\n", + " # Calculate the eigenvector u that corresponds to the largest \n", + " # eigenvalue of the (m x m) matrix\n", + " Fb = FbT @ Fb\n", + " if decomposition == 'eigen':\n", + " u = get_vec_from_largest_eig(Fb)\n", + " else:\n", + " u, _, _ = svd1(Fb)\n", + " # Form the (n x k) matrix Fb = [F[0].T @ u, F[1].T @ u, ..., F[k-1].T @ u].T\n", + " FbT = np.zeros((k, n))\n", + " for i in range(k):\n", + " FbT[i] = scaler[i] * F[i].T @ u\n", + " Fb = FbT.T\n", + " # Calculate the eigenvector v that corresponds to the largest \n", + " # eigenvalue of the (n x n) matrix\n", + " Fb = Fb @ FbT\n", + " if decomposition == 'eigen':\n", + " v = get_vec_from_largest_eig(Fb)\n", + " else:\n", + " _, _, v = svd1(Fb)\n", + " # Until u and v vectors change less than a pre-specified\n", + " # value that is set by the user\n", + " stop_refinement, diff_u, diff_v = check_threshold(u, U, v, V, stop_threshold, metric)\n", + " if report_writer is not None:\n", + " with report_writer.as_default():\n", + " F_tmp, _ = update_F(F, U, V)\n", + " for p, (f_in, f_tmp) in enumerate(zip(F_in, F_tmp)):\n", + " tf.summary.scalar(f'Alg2 - MSE {p}-th sub-matrix', mse(f_in, f_tmp), report_step, description=f'Algorithm2 MSE(x, x_approx) of the {p}-th sub-matrix.')\n", + " tf.summary.scalar(f'Alg2 - Mean {p}-th sub-matrix',f_tmp.mean(), report_step, description=f'Algorithm2 Mean(x_approx) of the {p}-th sub-matrix.')\n", + " report_writer.flush()\n", + " # tf.summary.scalar('Alg2 - MSE refining', mse(F_in, F_tmp), report_step, description='Algorithm2 MSE(F, F_approx) at refining steps.')\n", + " # tf.summary.scalar('Alg2 - diff(U)', diff_u, report_step, description='Algorithm2 MSE(u(i), u(i-1)) at refining steps.')\n", + " # tf.summary.scalar('Alg2 - diff(V)', diff_v, report_step, description='Algorithm2 MSE(v(i), v(i-1)) at refining steps.')\n", + " # NOTE: The u and v norms are always equal to 1.\n", + " # tf.summary.scalar('Alg2 - norm(U)', np.linalg.norm(u), report_step, description='Algorithm2 norm(u(i)) at refining steps.')\n", + " # tf.summary.scalar('Alg2 - norm(V)', np.linalg.norm(v), report_step, description='Algorithm2 norm(v(i)) at refining steps.')\n", + " # tf.summary.scalar('Alg2 - ', np.dot(U, u), report_step, description='Algorithm2 : inner-product (orthogonal if 0).')\n", + " # tf.summary.scalar('Alg2 - ', np.dot(V, v), report_step, description='Algorithm2 : inner-product (orthogonal if 0).')\n", + " report_writer.flush()\n", + " report_step += 1\n", + " if stop_refinement:\n", + " V, U = v, u\n", + " break\n", + " V = v #* (1 + 1e-12)\n", + " U = u #* (1 + 1e-12)\n", + " if report_writer is not None and r > 1:\n", + " with report_writer.as_default():\n", + " F_tmp, _ = update_F(F, U, V)\n", + " for p, (f_in, f_tmp) in enumerate(zip(F_in, F_tmp)):\n", + " tf.summary.scalar(f'Alg2 - Final MSE {p}-th sub-matrix', mse(f_in, f_tmp), report_step, description=f'Algorithm2 MSE(x, x_approx) of the {p}-th sub-matrix.')\n", + " report_writer.flush()\n", + " report_step += 1\n", + " # F, S = update_F(F, U, V)\n", + " FT = np.transpose(F, axes=(0, 2, 1))\n", + " S = V.T @ FT @ U\n", + " A = np.outer(U, V)\n", + " for i in range(k):\n", + " F[i] = F[i] - S[i] * A\n", + " u_array[j] = U\n", + " s_array[j] = S\n", + " v_array[j] = V\n", + " return u_array, s_array, v_array" + ], + "execution_count": 6, + "outputs": [] + }, + { + "cell_type": "code", + "metadata": { + "id": "wlnmJleegNWF" + }, + "source": [ + "x = np.random.rand(3, 1024, 512)" + ], + "execution_count": 7, + "outputs": [] + }, + { + "cell_type": "code", + "metadata": { + "colab": { + "base_uri": "https://localhost:8080/" + }, + "id": "TKy8_OKSqldK", + "outputId": "f10faf56-09af-42ce-81cc-215b8b32dab3" + }, + "source": [ + "%time u_eig, s_eig, v_eig = algorithm2(x, decomposition='eigen', stop_threshold=1e-5)" + ], + "execution_count": 8, + "outputs": [ + { + "output_type": "stream", + "text": [ + "CPU times: user 1.42 s, sys: 478 ms, total: 1.89 s\n", + "Wall time: 1.04 s\n" + ], + "name": "stdout" + } + ] + }, + { + "cell_type": "code", + "metadata": { + "colab": { + "base_uri": "https://localhost:8080/" + }, + "id": "yypholslqoF9", + "outputId": "93441043-dd46-41ef-e018-7bbd9bae15a3" + }, + "source": [ + "%time u_svd, s_svd, v_svd = algorithm2(x, decomposition='svd', stop_threshold=1e-5)" + ], + "execution_count": 9, + "outputs": [ + { + "output_type": "stream", + "text": [ + "CPU times: user 3.29 s, sys: 591 ms, total: 3.88 s\n", + "Wall time: 2 s\n" + ], + "name": "stdout" + } + ] + }, + { + "cell_type": "code", + "metadata": { + "colab": { + "base_uri": "https://localhost:8080/" + }, + "id": "Uf6DAtgPgYWU", + "outputId": "d4efe923-8d50-4967-ae20-7aab3f9b17d9" + }, + "source": [ + "print(mse(u_eig, u_svd))\n", + "print(mse(s_eig, s_svd))\n", + "print(mse(v_eig, v_svd))" + ], + "execution_count": 10, + "outputs": [ + { + "output_type": "stream", + "text": [ + "0.003906249999999999\n", + "4.52364397489937e-26\n", + "0.007812499999999998\n" + ], + "name": "stdout" + } + ] + }, + { + "cell_type": "markdown", + "metadata": { + "id": "qbtEIi3orE7O" + }, + "source": [ + "Get approximation error." + ] + }, + { + "cell_type": "code", + "metadata": { + "id": "EN892KfYq6pw" + }, + "source": [ + "def algorithm2_inverse(U, S, V, F=None):\n", + " F_tmp = np.einsum('rk, rm, rn->kmn', S, U, V)\n", + " if F is None:\n", + " F = F_tmp\n", + " elif type(F) == list:\n", + " k = S.shape[1]\n", + " for i in range(k):\n", + " F.append(F_tmp[i])\n", + " return F_tmp" + ], + "execution_count": 11, + "outputs": [] + }, + { + "cell_type": "code", + "metadata": { + "colab": { + "base_uri": "https://localhost:8080/" + }, + "id": "NcZa2sZErOgD", + "outputId": "31c7ec2d-5b45-4a95-92ba-a4d700f5ddc1" + }, + "source": [ + "x_svd = algorithm2_inverse(u_svd, s_svd, v_svd)\n", + "x_eig = algorithm2_inverse(u_eig, s_eig, v_eig)\n", + "print(mse(x, x_svd))\n", + "print(mse(x, x_eig))" + ], + "execution_count": 12, + "outputs": [ + { + "output_type": "stream", + "text": [ + "0.08324823102157376\n", + "0.08324823102157376\n" + ], + "name": "stdout" + } + ] + }, + { + "cell_type": "markdown", + "metadata": { + "id": "cLnD6VD1sIc2" + }, + "source": [ + "## Algortihm 3 - SVD and Refinement Steps" + ] + }, + { + "cell_type": "code", + "metadata": { + "id": "83mTyjgJrdB1" + }, + "source": [ + "def algorithm3(x_in, num_refinements=1, num_sub_matrix=1, truncate=False,\n", + " stop_threshold=0.0001, hard_stop=100, decomposition='eigen',\n", + " metric='mse', scaler=None, report_writer=None,\n", + " apply_scaling_at_alg2=True, plotdata=None):\n", + " if type(x_in) == list:\n", + " x = np.concatenate([a[np.newaxis,:] for a in x_in], axis=0)\n", + " else:\n", + " x = x_in\n", + " k, m, n = x.shape\n", + " if truncate:\n", + " tot_elem = 2 * (m * n)\n", + " appr_elem = num_refinements * (m + n + x.shape[0])\n", + " if appr_elem >= tot_elem:\n", + " print(f'[WARNING] The num_refinements value ({num_refinements}) is too high and will be truncated.')\n", + " while appr_elem >= tot_elem:\n", + " num_refinements -= 1\n", + " appr_elem = num_refinements * (m + n + x.shape[0])\n", + " print(f'[WARNING] num_refinements set to {num_refinements}.')\n", + " u = np.zeros((num_refinements, num_sub_matrix, m))\n", + " s = np.zeros((num_refinements, num_sub_matrix, k))\n", + " v = np.zeros((num_refinements, num_sub_matrix, n))\n", + " report_steps = 0\n", + " if apply_scaling_at_alg2:\n", + " # ======================================================================\n", + " # Apply scaling at Alogirthm 2 (Default)\n", + " # ======================================================================\n", + " x_approx = np.zeros(x.shape)\n", + " for i in range(num_refinements):\n", + " u[i], s[i], v[i] = algorithm2(x - x_approx, num_sub_matrix,\n", + " stop_threshold, hard_stop, decomposition,\n", + " truncate, metric, report_writer,\n", + " report_steps, scaler)\n", + " x_approx += algorithm2_inverse(u[i], s[i], v[i])\n", + " if report_writer is not None:\n", + " with report_writer.as_default():\n", + " tf.summary.scalar('Alg3 - MSE', mse(x, x_approx), i, description='Algorithm3 MSE(x, x_approx).')\n", + " for p, (f_in, f_tmp) in enumerate(zip(x, x_approx)):\n", + " tf.summary.scalar(f'Alg3 - MSE {p}-th sub-matrix', mse(f_in, f_tmp), i, description=f'Algorithm3 MSE(x, x_approx) of the {p}-th sub-matrix.')\n", + " tf.summary.scalar(f'Alg3 - Mean {p}-th sub-matrix', f_tmp.mean(), i, description=f'Algorithm3 Mean(x_approx) of the {p}-th sub-matrix.')\n", + " tf.summary.scalar(f'Alg3 - Mean Original {p}-th sub-matrix', f_in.mean(), i, description=f'Algorithm3 Mean(x) of the {p}-th sub-matrix.')\n", + " report_writer.flush()\n", + " if plotdata is not None:\n", + " if not plotdata: # If empty, initialize it\n", + " for p in range(k):\n", + " plotdata[f'MSE(matrix[{p}])'] = []\n", + " for p, (f_in, f_tmp) in enumerate(zip(x, x_approx)):\n", + " plotdata[f'MSE(matrix[{p}])'].append(mse(f_in, f_tmp))\n", + " else:\n", + " # ======================================================================\n", + " # Apply scaling at Alogirthm 3 (To be checked)\n", + " # ======================================================================\n", + " x_approx = np.zeros(x.shape)\n", + " x_scaled = x.copy()\n", + " error = x - x_approx\n", + " if scaler is None:\n", + " scaler = [1.] * k\n", + " for j in range(k):\n", + " x_scaled[j] *= scaler[j]\n", + " error[j] = x_scaled[j]\n", + " for i in range(num_refinements):\n", + " u[i], s[i], v[i] = algorithm2(error, num_sub_matrix,\n", + " stop_threshold, hard_stop, decomposition,\n", + " truncate, metric, report_writer,\n", + " report_steps, scaler=None)\n", + " for j in range(k):\n", + " s[j] /= scaler[j]\n", + " x_approx += algorithm2_inverse(u[i], s[i], v[i])\n", + " # for j in range(k):\n", + " # x_approx[j] *= scaler[j]\n", + " error = x_scaled - x_approx\n", + " # for j in range(k):\n", + " # error[j] *= scaler[j]\n", + " if report_writer is not None:\n", + " with report_writer.as_default():\n", + " tf.summary.scalar('Alg3 - MSE', mse(x, x_approx), i, description='Algorithm3 MSE(x, x_approx).')\n", + " for p, (f_in, f_tmp) in enumerate(zip(x, x_approx)):\n", + " tf.summary.scalar(f'Alg3 - MSE {p}-th sub-matrix', mse(f_in, f_tmp), i, description=f'Algorithm3 MSE(x, x_approx) of the {p}-th sub-matrix.')\n", + " tf.summary.scalar(f'Alg3 - Mean {p}-th sub-matrix', f_tmp.mean(), i, description=f'Algorithm3 Mean(x_approx) of the {p}-th sub-matrix.')\n", + " tf.summary.scalar(f'Alg3 - Mean Original {p}-th sub-matrix', f_in.mean(), i, description=f'Algorithm3 Mean(x) of the {p}-th sub-matrix.')\n", + " report_writer.flush()\n", + " if plotdata is not None:\n", + " if not plotdata: # If empty, initialize it\n", + " for p in range(k):\n", + " plotdata[f'MSE(matrix[{p}])'] = []\n", + " for p, (f_in, f_tmp) in enumerate(zip(x, x_approx)):\n", + " plotdata[f'MSE(matrix[{p}])'].append(mse(f_in, f_tmp))\n", + " return u, s, v" + ], + "execution_count": 57, + "outputs": [] + }, + { + "cell_type": "code", + "metadata": { + "id": "Gix3Fnhgs39E" + }, + "source": [ + "def algorithm3_inverse(U, S, V):\n", + " \"\"\"\n", + " @brief Given a list of u, s, v vectors, reconstruct \n", + " the two approximated matrixes.\n", + " \n", + " @param U list of u vectr\n", + " @param S list of s vectr\n", + " @param V list of v vectr\n", + " \n", + " @return the reconstructed approximated matrix (concatened)\n", + " \"\"\"\n", + " # NOTE: The shape variables are:\n", + " # r := number of refinement steps\n", + " # k := number of merged matrixes\n", + " # m := \"input\" dimension of the matrixes\n", + " # n := \"output\" dimension of the matrixes\n", + " u, s, v = np.array(U), np.array(S), np.array(V)\n", + " F = np.einsum('...rk, ...rm, ...rn', s, u, v)\n", + " F = np.einsum('rkmn->kmn', F)\n", + " return F" + ], + "execution_count": 14, + "outputs": [] + }, + { + "cell_type": "code", + "metadata": { + "colab": { + "base_uri": "https://localhost:8080/" + }, + "id": "fO1tncBVsbgv", + "outputId": "c750ab88-6ff5-4755-a0ec-bfcd52b82c26" + }, + "source": [ + "x = np.random.rand(3, 1024, 512)\n", + "%time u_eig, s_eig, v_eig = algorithm3(x, 4, decomposition='eigen', stop_threshold=1e-3)" + ], + "execution_count": 15, + "outputs": [ + { + "output_type": "stream", + "text": [ + "CPU times: user 7.58 s, sys: 1.92 s, total: 9.5 s\n", + "Wall time: 4.94 s\n" + ], + "name": "stdout" + } + ] + }, + { + "cell_type": "code", + "metadata": { + "colab": { + "base_uri": "https://localhost:8080/" + }, + "id": "TB3sjDCLuY9I", + "outputId": "66dc43e0-4ad7-43f5-9ea3-8fb5b8771c92" + }, + "source": [ + "%time u_svd, s_svd, v_svd = algorithm3(x, 4, decomposition='svd', stop_threshold=1e-3)" + ], + "execution_count": 16, + "outputs": [ + { + "output_type": "stream", + "text": [ + "CPU times: user 16.4 s, sys: 3.08 s, total: 19.4 s\n", + "Wall time: 9.97 s\n" + ], + "name": "stdout" + } + ] + }, + { + "cell_type": "code", + "metadata": { + "colab": { + "base_uri": "https://localhost:8080/" + }, + "id": "1d-WkM-7uG2s", + "outputId": "0dec5105-0d35-4900-d57f-f7e8e4b3a08b" + }, + "source": [ + "x_svd = algorithm3_inverse(u_svd, s_svd, v_svd)\n", + "x_eig = algorithm3_inverse(u_eig, s_eig, v_eig)\n", + "print(mse(x, x_svd))\n", + "print(mse(x, x_eig))" + ], + "execution_count": 17, + "outputs": [ + { + "output_type": "stream", + "text": [ + "0.08266490425610987\n", + "0.0826586846848718\n" + ], + "name": "stdout" + } + ] + }, + { + "cell_type": "markdown", + "metadata": { + "id": "wE1hyhqU3cZ9" + }, + "source": [ + "### Algorithm 3 - Extra Refinements" + ] + }, + { + "cell_type": "code", + "metadata": { + "id": "7w2n71uA3hmv" + }, + "source": [ + "def algorithm3_extra_refinements(x_in, u_in, s_in, v_in, num_refinements=1, num_sub_matrix=1, truncate=False,\n", + " stop_threshold=0.0001, hard_stop=100, decomposition='eigen',\n", + " metric='mse', scaler=None,\n", + " report_writer=None):\n", + " previous_num_refinements = u_in.shape[0]\n", + " assert previous_num_refinements <= num_refinements, f'Previous #Refinements ({previous_num_refinements}) must be less then num_refinements ({num_refinements}).'\n", + " if type(x_in) == list:\n", + " x = np.concatenate([a[np.newaxis,:] for a in x_in], axis=0)\n", + " else:\n", + " x = x_in\n", + " k, m, n = x.shape\n", + " if truncate:\n", + " tot_elem = 2 * (m * n)\n", + " appr_elem = num_refinements * (m + n + x.shape[0])\n", + " if appr_elem >= tot_elem:\n", + " print(f'[WARNING] The num_refinements value ({num_refinements}) is too high and will be truncated.')\n", + " while appr_elem >= tot_elem:\n", + " num_refinements -= 1\n", + " appr_elem = num_refinements * (m + n + x.shape[0])\n", + " print(f'[WARNING] num_refinements set to {num_refinements}.')\n", + " u = np.zeros((num_refinements, num_sub_matrix, m))\n", + " s = np.zeros((num_refinements, num_sub_matrix, k))\n", + " v = np.zeros((num_refinements, num_sub_matrix, n))\n", + "\n", + " u[:previous_num_refinements] = u_in\n", + " s[:previous_num_refinements] = s_in\n", + " v[:previous_num_refinements] = v_in\n", + "\n", + " report_steps = 0\n", + " # ==========================================================================\n", + " # Scaler version\n", + " # ==========================================================================\n", + " x_approx = algorithm3_inverse(u_in, s_in, v_in)\n", + " x_scaled = x.copy()\n", + " error = x - x_approx\n", + " if scaler is None:\n", + " scaler = [1.] * k\n", + " for j in range(k):\n", + " x_scaled[j] *= scaler[j]\n", + " error[j] = x_scaled[j]\n", + " for i in range(previous_num_refinements, num_refinements):\n", + " u[i], s[i], v[i] = algorithm2(error, num_sub_matrix,\n", + " stop_threshold, hard_stop, decomposition,\n", + " truncate, metric, report_writer,\n", + " report_steps, scaler=None)\n", + " for j in range(k):\n", + " s[j] /= scaler[j]\n", + " x_approx += algorithm2_inverse(u[i], s[i], v[i])\n", + " for j in range(k):\n", + " x_approx[j] *= scaler[j]\n", + " error = x_scaled - x_approx\n", + " # for j in range(k):\n", + " # error[j] *= scaler[j]\n", + " if report_writer is not None:\n", + " with report_writer.as_default():\n", + " tf.summary.scalar('Alg3 - MSE', mse(x, x_approx), i, description='Algorithm3 MSE(x, x_approx).')\n", + " for p, (f_in, f_tmp) in enumerate(zip(x, x_approx)):\n", + " tf.summary.scalar(f'Alg3 - MSE {p}-th sub-matrix', mse(f_in, f_tmp), i, description=f'Algorithm3 MSE(x, x_approx) of the {p}-th sub-matrix.')\n", + " tf.summary.scalar(f'Alg3 - Mean {p}-th sub-matrix', f_tmp.mean(), i, description=f'Algorithm3 Mean(x_approx) of the {p}-th sub-matrix.')\n", + " tf.summary.scalar(f'Alg3 - Mean Original {p}-th sub-matrix', f_in.mean(), i, description=f'Algorithm3 Mean(x) of the {p}-th sub-matrix.')\n", + " report_writer.flush()\n", + " # ==========================================================================\n", + " # Original version\n", + " # ==========================================================================\n", + " # x_approx = np.zeros(x.shape)\n", + " # for i in range(num_refinements):\n", + " # u[i], s[i], v[i] = algorithm2(x - x_approx, num_sub_matrix,\n", + " # stop_threshold, hard_stop, decomposition,\n", + " # truncate, metric, report_writer,\n", + " # report_steps, scaler)\n", + " # x_approx += algorithm2_inverse(u[i], s[i], v[i])\n", + " # if report_writer is not None:\n", + " # with report_writer.as_default():\n", + " # tf.summary.scalar('Alg3 - MSE', mse(x, x_approx), i, description='Algorithm3 MSE(x, x_approx).')\n", + " # for p, (f_in, f_tmp) in enumerate(zip(x, x_approx)):\n", + " # tf.summary.scalar(f'Alg3 - MSE {p}-th sub-matrix', mse(f_in, f_tmp), i, description=f'Algorithm3 MSE(x, x_approx) of the {p}-th sub-matrix.')\n", + " # tf.summary.scalar(f'Alg3 - Mean {p}-th sub-matrix', f_tmp.mean(), i, description=f'Algorithm3 Mean(x_approx) of the {p}-th sub-matrix.')\n", + " # tf.summary.scalar(f'Alg3 - Mean Original {p}-th sub-matrix', f_in.mean(), i, description=f'Algorithm3 Mean(x) of the {p}-th sub-matrix.')\n", + " # report_writer.flush()\n", + " return u, s, v" + ], + "execution_count": 18, + "outputs": [] + }, + { + "cell_type": "markdown", + "metadata": { + "id": "_trp6sx3J3RR" + }, + "source": [ + "## Setup TensorBoard" + ] + }, + { + "cell_type": "code", + "metadata": { + "colab": { + "resources": { + "https://localhost:6006/?tensorboardColab=true": { + "data": "PCFkb2N0eXBlIGh0bWw+PG1ldGEgbmFtZT0idGItcmVsYXRpdmUtcm9vdCIgY29udGVudD0iLi8iPjwhZG9jdHlwZSBodG1sPjwhLS0KQGxpY2Vuc2UKQ29weXJpZ2h0IDIwMTkgVGhlIFRlbnNvckZsb3cgQXV0aG9ycy4gQWxsIFJpZ2h0cyBSZXNlcnZlZC4KCkxpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSAiTGljZW5zZSIpOwp5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuCllvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdAoKICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMAoKVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZQpkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiAiQVMgSVMiIEJBU0lTLApXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC4KU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZApsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS4KLS0+PGh0bWw+PGhlYWQ+PG1ldGEgY2hhcnNldD0idXRmLTgiPgo8dGl0bGU+VGVuc29yQm9hcmQ8L3RpdGxlPgo8bGluayByZWw9InNob3J0Y3V0IGljb24iIGhyZWY9ImRhdGE6aW1hZ2UvcG5nO2Jhc2U2NCxpVkJPUncwS0dnb0FBQUFOU1VoRVVnQUFBTVFBQUFERUNBWUFBQURBcG81ckFBQUFCSE5DU1ZRSUNBZ0lmQWhraUFBQUFBbHdTRmx6QUFCYWJnQUFXbTRCeFdzak9BQUFBQmwwUlZoMFUyOW1kSGRoY21VQWQzZDNMbWx1YTNOallYQmxMbTl5WjV2dVBCb0FBQmwwU1VSQlZIaWM3WjE1ZUZUVjNjYy92NXNGQ1ZSeHFWdHB0VlcyVmx4ZjYxcXRpcTBMOUdsOU5YVUJGRXBGUlRJaGhCQURDVGRBTUFFa0NZc0s3cUI5K2tENzJxZkJXaXZxVzdWYTY3NGlyZTlyYXhYMWJaVldaVEhML040LzVnNEdTR0R1ekwxejc1MDVuMzg0ek13NTU4dk0vWEsyM3prSERJR2ppemhQRjNGZTBEb01JRUVMeUdkMFBvT3dhQUF1Y1Y1YWgwVzVWUEI2a0xyeUdXT0lBRkNiL3ZTakVxZ0crdXp3S3dnZHdDMTBVQ2ZWL0RzWWhmbUxNVVFXVVJ1TEVrWUQ4eEVPMnY3R2pvWndQc3hIV014aElFdWxsSzVzNnN4bmpDR3loQzdnSkpSVzRDU2daeFAwbkg0Smk1aVU4N2pmR2czR0VMNmpUUXdFNWdHamtXN2ZkK3FHU0xLV0lzcGtNbS83SU5QZ1lBemhFMnBUUWgrcXNLZ0MrZ0x1VGJCcmVpdXdtSFlhWkRxZmVpcllBQmhEZUk0cVFpTVhBd3NRRHZQQUJEMmxOeUxVczRuYnhTYWV1V3BERW1NSUQ5RWJPUUZvUlRodCs0ditHQ0w1NTdOQXVjUjRLaTNCaGwwd2h2QUFiZUFRTEd4Z0FtRDVhb0x1NmNTZml2QUxsRXFKOFk1TDZZYWRNSWJJQUxVcHBvaHJFV1lqN0wzOWpld2FJcG5lakxLUXZXbVVjV3hMNlI5ZzJBVmppRFRSdVl6Q29nWDRCcEE5RTNSUDkveiszNEdaVXNiS1hxUWJkb014aEV1MGdhTVJtbEhPOXZBQi82T1RPdGtEUXlUU3lpTW81UkxqdFo3K0hZYWVzWUlXRUJYVVpqK2RTeXZ3UE1yWkhoVzdFV0VpbjNFYVV6a1ZvUlQ0bXljbEMrZGc4Ykl1WmFYZXdvR2VsSmtIbUJaaUQ2aE5JVVdNUjJrQUR2Q29WZGlLc0pqNHJ1c0p1cHdTUHFNS3FFS2M5WXZleWttOXprMUFFd2ZTTEtXMFkrZ1ZZNGpkb1BXY2cwVUx3bEhiWDh6Y0VHc1J5bVRhN2xlY3RZbUJGRGtyM095d3hwMk9JWkxwRFFoVDVUb2UyRjNkK1l3eFJBL29IQVpCdDdCc2IxcUZGeW1nWENyZHhTVHBJczRFV2hDTzNhWE05TFdzbzRDWVhNTWJiclRrQThZUTNWQ2IvZ2lWeUU1aDJaa1o0aU9FT1J5ZWZ0U3EybGdNWURUS2ZPQWdqM1Ixb054Q0lYVXkwWVNaSnpHR3dIbmdMT2VCNnlrc083MEhML0hBaVhmN0duUVovV252d2JEcGF3U2NNUFA5VEpnNUdFT2dzMU1JeTNiL3NLMGpUa3hxL09tU2FDdURVQnFRN1R2dHZPald2WWhRTHRma2Q1aDUzaHBDYlJkaDJhay9WQnRRS3FTRzMzZ3F0aGUwbFhPQUZ1QW9EOWRFMWxKQW1mdzBQOFBNODg0UWFsTUN6clJtcW1IWmUzNlFOaUUwOFRuTlltZDNXbE50Q3RtWDhZZ3pMZHk3UmpmcFJKaDVFUTN5ay93S004OGJReWdJZFZ5TXhRTFVaVmgyNys5M290eUpNRk5xK0lmWG10MmdpOWlQUW1ZQjF5RVVibjhqTTNPOGgxTERSRmFKb0o0S0RpbDVZUWl0NVFRa2c3RHNubDk3Rkl0eXFlWlZUOFZtaUM1aEtFb3o0aHhyNDAxWDZsbVVtRnpEMHg1S0RTVTViUWl0NFJDS3NORU13N0ozZk8wdGxCcVp5UnFQNVhxS0xtWVVRZ3ZpQkI5Q3B1WlE0RjQ2cUpKSmZPQ3AyQkNSazRaUW0ySTZQUXpMVHZ5WkNLL2VoeHVsak04OWx1d0xhbFBNL3M3M0FIdDcxRnBzUmxoSVlXNkdtZWVjSVhTRzUySFpjWVQ3RUtiSkRENzBWbTEyME9VY1FnYzI0clNVNE1YMzhoWkNqVXdJZDB2cGxwd3hoTjdBVUFwb0JzN3pjQXJ5R1pTWTFQR01oMUlEUTI5MnRyZ3FwM24ySFZrOFNwd3A4bE5lOFZCcVlFVGVFR3F6SHgzTVFyZ09uTm1Wekgvc2Q0RVoxT2JlN0lvcXdpM09JUWh3R09ERjk5V0pPTE50NDRPZGJjdVV5QnBDYlFycFlEeDRHcGE5QlZqQWwyaVNDclo2S0RkMDZISks2S1FLU1NITVBOVzB4U2JpTkxGM2RNUE1JMmtJclhGV2FMMEx5MWJnRnhRd1RXWjZ0RUVuSXVqaUZNTE0zYVlUWWVZVk1pNDdLL1plRWlsRDZFd0dFZmM4TFBzNUxNcWxqajk0cHpSNjZNMmM2VXhHN0JwbTdqYjl4V3ZyS0tSTXhyTGVPNlgrRWdsRHFPMUVlU3JWQ0gyMnY1R1pJVFlDOVdBTyswcWlOaFlITzRjeGR3OHpoMHpXYlJKUnZ4M1JDRE1QdFNIVXhtSXJvN0djSHdpOGFCWGFnVnNwWWFZNURySm5kQm45c2FqRWNzTE1JUk5ESkVtRW1mY05kNWg1YUEyaE4zUUx5L1p1R25VdFFreHMvdGREcVRtTDNzb2d4T21pWm02SVpQb0ZsSElaeHhOZWF2V0swQmxDcXhpSTFXMlFCMTYwQ2kraGxNc2NmdStwMkR4QlZ6RENpWTlLVEdKa1pvaGtlaTF4SnNzNC91cWwxa3dKalNIVXBvUXR6alFnOVBXb1ZVaHMzMXpQVWxrVDNtWTZDcWhOSVY5eFRoOFJKOHdjTWpFRUpLYTVsOUNYdVZMS1o5NHFUby9BRGFFZ1RPTml4RmtvY3YrbDlwUk9YRXZWVHAwMGhYOGdGeVgwZHZaRG1RVk1BZ295TkVReS9SNUNEYU9EWHdnTjFCQTZsUk93ZWduTFR0OFE2eERLWlk2NXVOQlA5RGFHQVl1UWJyZW5adjdiL1FtTG1JemVmcEpoMWduRUVGcnVoR1h2N3JSczkxL3FCdUpNbFhubXpLRnNvcmN6Q3B4Z1NtOWFkMFdjTVBOeDJROHp6Nm9obk83Uk5KUmFoUDQ5cW5EL3BYNE0xRlBFeldMVDZhMWlReXJvWGV4Rm5BcmdCcUMvUitPL1Q3Q1lReEdMc3hrR2t2VVdRaXM0emprTjc0d2VWYVJ1aUVSWWRoR1ZZdk4vZm1nMXVFT1hjd2lGUG9XWlg1R2RNUFBBeGhCYXlTaUVWdURycmcyaFBJb3dSZWJsUnNoeHJxRjNjd0pkenRqUXV6V2tSMUhLWmJTL1czYURIVlRiRkxPWmF4SG1BRi9hUVZIUFg4eGJXTlJJUTI1dFNzbEZWQkh1OWlITUhPNmtpSmxTNmsrWWVlRFRyZ0JheGFIQUxHQUMwbU5UbTlpMldFeWoyTG0zYlRHWDBlV1VVSnppYWVhcHB6ZWgxSE1veStRc2I4ZU5vVEJFRXEzaVA1eHUxS21Pc3NURzlpNnFaRUh1Ym16UEIvUTJCbExNUE5URE1ITjRFNHNLdVpRSHZkSVpLa09BTXhNMW5URUlGMk5oeXp4ZUNGcVR3VHYwTHI3cmhKa2ZzLzNGek0xeFAzRXE1WXJNWTlSQ1p3aEQ3cU0yRm9jN1llYVNRWmo1anVrT0xHNmhnMW9aelNmcGFqT0dNQVNHcnFZL1c3dWRaZzZadHhiQyt5ZzJGbmVrRTJadURHRUlITDJQUVhTbEVXYSt1elE4ajBXNWxQS2tHeTNHRUliUW9QZHdQc0lpaEtGQXBvYUF4S1gyRStUSDNKbXFCdGUza0dvNUU3U2NIN3JOWnpEc0NibVNCOW5LMGNCRTRKOWVGQWtjNmlhRCsydDVsU05SN3RjWTYvUjZ4OGtHZzBmSVJEcGtEQ3Zvd3hCZ01XUjNIMHM2aGloeVV1ZFF3Q3NhbzFXdjZ4YW9aekI0Z0pUeXNZd21ScHpod0crelZhOTdRMWpiRFFGUUJKUlJ4SHFOTWRZelZRYURnNHhsdll6bWZJUWZnUDk3NFROcElib3pFTGhIeTNqWWRLTU1maUNYMDBZUnc0QnlTSCtkWVUrNE53UTlHaUtCTUlJQ1h0WXBOS3JOWHVuTE1oaDJSVXBwbHl0b1JSZ0cvcHlsNWEwaEVoU2pUT2Rmdks0eFJxWWp5bURZSFhJWkc4R2Z2ZGQrR0NMSk54RGFkQXB0V3NuWDA2akhZTWc2WG8waGRzZEl1bmhkSzdCTk44b1FkaktkWlVxVnZpaXorSVRYdEpJTDA4aHZNR1NGYkxRUTNUbUNPR3UxZ2pZdDUvQU15akVZZk1IUE1jVHVHRWtCYjJpbDZVWVp3a1ZRaG9Ca04rcFRYdFZwWE9CUm1RWkRSZ1JwaUNSSG9qeWdVMm5UYXRPTk1nUkx0c2NRdlNPTXBKUFh0UXBiSjNlN0ZNVmd5Q0x1RFNFK0dTSkJDY29zK3ZDYVR1dDJacWpCa0NYQzBHWGFGZUZJNEVHdG9rMm5PbWY2R0F4WklKeUcrSUxFYkpUcFJobXlSTmdOQVZBQ3pLS0VWM1U2Mzg5eTNZWThJd3FHU0RJSStLMVcwNmJUK1ZwQUdndzVUcFFNa1VBWmliQmVxN0hWcGpoUUxZYWNJM3FHU0pEb1JtM2pWYTNtZTBHTE1lUU9VVFZFa3NFSUQra050T2tNdmhxMEdFUDBpYm9oa293a3pucXRNZDBvUTJia2lpRUErZ0d6YU9jVnJlSGNvTVVZb29rclEyamk0S2RDbjdSNHhSRGdkenJEZEtNTTduSFhRbHdkZWpOMFp5U3dYbWVhYmxSZUUzZDNHSUhiTGxOWXUwdTkwUTlsRmwyOHJETVpFYlFZUTFiWmpGTFBOaGE1eWVUT0VQdEd6aEFKbEtIQTczUW1LN1dHZzRLV1kvQVZCVmJSd1NDNURGdkd1YnVDelowaE9pTnFpQVFDaktHQURUcVRtTnFSNnY0WlVrSDVFeGFueWFXTWxURzhuMDRSN2d6UkZXbERKTmtIb1lVdW50TmFUZ3Rhak1FVDNrVzRra3M1V1VwNU9wT0MzQm5DcjgxQndYQU13aE5hWjdwUmtVWFpBdFJUd0dDNWxKVWltUjllNXM0UThad3lCQ1M3VVlXOHFYWEU5QklLZ2haa1NCRmhGVVVNbHN1d3BaU3QzaFhyQXIyZW9SU3czbFdwMFVxL2hEQkpiSjdDa0plNGF5R0tjcTZGMkpsamdTZlZacVhhSEJpMEdFUDJ5ZWN4Uk0rbzA0MkNEVnBQVEZlYmJsUStZUXpST3dOUVdsalBzenFiVTRJV1k4Z091YjVTN1FYSG9meEI2MW1wOC9oeTBHSU0vbUphaU5SSWRLTTYyYUJ6VERjcWwzRm5DTW43SUxsOVVWcll3SjkwTGljSExjYmdQYWJMbEE3SzhTaFA2UnpUamNvMVRKY3BmUkxkcUM3VGpjb2xUQXVST2ZzaXRQQVhudEhabkJTMEdFTm11RE5FZXJjSDVRZktDVmc4cFhOWnFUWUhCQzNIa0I2bWhmQVdDMkVNUld6UUJtSnFwN1ZuUFZSb013T0MxcEFKdXBxRDNYemU3USsyNXowRXJxS2pjcGI5Z0JhS2VWSWJPU1pvTWVtZ1N6aFVsN0tjWXVZRXJTVWRkQlZEOUdjOFFBZFQzZVJ6TzZoMk4rMXF6SEVLU2xuUUl0eWdOc1c2aEJnV2J5SmNUWG9uc3dTRzNzZStlaCtOV0x3QzdtK21jcmRyVENsSyt5SGZNZDltNERHZ2pTNmVvSWpIMEJ6ZGt4Q25QV2dKcWFMTEdJWFNDdEc3VjF4dExJNWdOTEFBMGcvTWRMdU5NcE14eE5zb0R3TnIyWWVIeFA3aVFkRktLb0Q3TWlnN3ZBZ2RRVXZZRTdxTVk0blRnbkptMEZyU1FlL2pMT0swSUJ5ZGFWbnVER0ZSNUdKUFVoZUovUVZyRWRya0pwN3Y3WU95a0o5cEpaZEREdDVoTGVGdElYUXArd04xeEprRTBWdEgwWlY4RFl1NUtHTzg2cDY3N3pMdG5zMkkweFVxNU5leWdBOWNLTG1lTHI1TDRnUyszRUhEMTBMb2NvcG81enJpMUNQc0U3UWV0K2hLK2lGTUE2YWo3T1hsV05XTEx0UGJDQThqdTNhRjNDQ04vRldyYUVDWmwzZ2huVkpDU01nTW9Zc1p3ZWUwQU44S1dvdGJWQkh1WlF4S0U3aWJUazJWZEF6eFJWY29UcHNzN3IwcjVKb1NGckNaVWhJNzEzSURLeHlHMEtVTXBvdEZLQmRHOFQ4YnZZc1RXVVVyK0xzM3haMGh1cmliSXVaTE14LzdJVVpzT3JXUzZ4Q2VwUHQwWDIvN29LTkJvR01JYldZQVFqVmRUSUhvUlN2clBYd0Z1QkVZVFJaK2ZWZUdrS1c4NlplUTdYVXM1R21keG5MZ1dyL3J5Z29CZFpuVXhtSkE1dE9RUWFHcjZjdFd5b0Fad0pleVZXODRGMTIyVVkzdzNoNC9GNFhXSW9CWkpyMkpzOWlIRjRCN2lLSVo3bUlVVzNnRHBaRXNtZ0ZDYWdoWndpZEFoYnRNL21qSm1DeTJFSG9UWDlWbVZtTHhLRVF2WkVUdjVIaTlpOGNSZmcwY0hvU0cwSjV2S2syczFtbU1SaGpsUHJNUGd0SWxDNGJRQmZURFlockNkR0F2dit2ekdyMkgvZW1pRGdsK1BTUzBoZ0RBNG5xVXM0RCthWmNSdkRsODZ6S3BJaXppWW9TRkVMMnJpblU1UlJSekhWM2hXUThKWlpjcGlUVHhEa0s5ZHdWNlZsTHErRFR0cWdzNWtVVThDYXdtaW1hNGt4RVU4UkpLQzRURERKQmxRNmhOb2JwOUxQdlNBcnpvdVpqc21HTVR5cXRlRnFoTkhLb0xXWTd3UitCVUw4dk9Cbm9IUS9SMkhuRGkycjRadEo2ZDhkMFFPcGsrT29VUldrRXJuL0F1VTdqS1RYNng2VVM1bXNTQ29ELzRZUTdsQXl6T2tocmU4S3pJaFZ4RUFYK0c2SVZsQStqdGpBZGVROXlIWldjTFg3NVVuVUpmbmNJb25jSktDdmtRZUJnb0F3NUNhTllxQnJvcFQrYnpISEN6SDFwM3JjeVRVdDZtZ085SU5TOTdVdG9YSEVPMFk3MkdFZkp4cTJmaXRKd0JLT2NpakVMNUVkQy9sNGRySDdxNEJWek9IaWt6RUg0RTdzeVVFZW1aNHpVSytiNU1aNlBIYWd4WklLTVdRaWV4djhZWXF6SGFVRDRrTWNBYnc1NW5oVVpxQlQ5MlU1Zk01MU1rOUx2UEhxZUEwNDBab290clEraGtCbW9aVjJ1TU5ncDVuOFJxNkVqY3hza0lTN1hTM1NxcU5ISS95cTljMWVNVmUyNHQxbExDZVZMTnY3T2d4dUFUN2k1dUwrY2lMTjVCV0U3Q0JKbnNvRHVBT00ydWN5bVRJT0NIYm1kektQZnlaUzZTQ3U5dXNqRUVnOXNydGZyaDVaeU1jTGxPNVlldXNzeG5JOG9zenpSa2lzVVN1cmhTSm9ZanpOdVFHY0ZQM1FrM2F6WDd1c3JUbHlYQUgvMFJsRElLMU1zTXlzUW1IckFXZzBjRWJ3ZzRoRTZhM0dRUW16Z1dFeUd3LzVXN1VLNlJXdXlBNmpmNFJCZ01BVEJCcC9FOU54bGtIcThBUzN6U3N6dmFFUzZUT2xZRVVMZkJaOEppQ0NIT2NyVmRCdkgxb1JaNDJ4OUpQYklaWVpUTVpFMFc2elJra2JBWUFvVEQyY3hjVjFsc3RqZ2h3OW5nWXl4R1NDMi95MUo5aGdBSWp5RVNUTmJwbk80bWc4empRZUFYUHVsSjhnN0NxVEl6OElHOHdXZkNaZ2lMT0xlcjdYS1RTeWVUZ1gvNUk0bjFGSEM2MUxMQnAvSU5JU0pzaGdBWXdtWnEzV1J3RGtTYjZZT1c1eWppVEpuSjM5TXRRQnM0eWt0QkJuOEpveUVBcXJTYUUxemxLT1lXNENrUE5UekdYcHd0TmZ3ajNRTDBScVlqVkhxb3llQXpZVFZFSVhIdTBLdFREdzBSbXpnRlhJTTNheE8vQWk2UTZYeWFiZ0hhd0d6bjFBaERoQWlySVFDT1lRQlZiakxJSEY1RjBvaVAycEc3Z1V2RVpsczZtVlVSYmFBRmNkZnRNNFNETUJzQ29GYW51enlEZEFzMjhEOXAxU1kwaWMwNHNlbE1KN3V1cG9CNTNBN0UwcXJmRURoaE4wUWY0QTY5SlBXalNhU1pyVTVFYk9vSWlsSXBOdFZ1QlNiUjFSVHdaKzRDeHFkYmhpRjR3bTRJVUU3aTYweDJrMFhtOFJEQ3oxUDhlQmN3UVdaemszdHhDZFNtbUQrekJtRk11bVVZd2tINERRRWdOR2cxUjdyS0U2Y2MyTFNIVDMxT1lyeHdaN3JTMUthRVF0cUFINlZiaGlFOFJNTVFVSUp5bTVzamJHUWVIOEp1dTBEL3dtS0V6T2IrZEVYcEF2bzVabkFWbUdnSUwxRXhCTUIzcWVhbnJuSTBjQnZ3WkEvdkpJNklzWHQ4THlYVVpnRGJXQWVjblc0Wmh2QVJKVU9Bc2tCbjhOVlVQeTZKVFR3VFNIU05raVNPaUxGNUtXMFpOZ2RTd0g4REo2ZGJoaUdjUk1zUXNEZGQzT29tZzh4bEE3RFErZXZyeFBtTzJMeVZyZ0MxT1pnQ0hpR0NwMnNiOWt6VURBRndnVlp6aGFzY2hjeEZ1WnNDVHBlR0ZPNmQ2QVdkeTJGWVBBRW1QaWxYQ2ZVcGFydWhWV3RZNXd5Yzk0aXo2and1a3dyVlpqQngxa0hxWFRaRDlJaGlDd0d3UDhyaWJGV21jeGlHeFdNWU0rUThVVFVFS0tWNkF4ZjVYbzNOOGNSNUhEalU3N29Nd1JOZFF5UllwamI3K1ZXNHp1WkVoSWVCQS95cXd4QXVvbTZJZzltV2ZzakY3dERabklueUNQaG5PRVA0aUxvaFFMaEtxem5QeXlLMW52T0o4eUJadmdIVEVEelJOd1NBc0Z5cnZIbDQxZVlIS1BjRGZiMG96eEF0Y3NNUThEVUt1VEhUUXJTT3k0QmZrZ2c3TitRaHVXSUlnR3QxQm1la20xbHRya2E0bCtpdXpSZzhJSmNNWWFIY3BsUGNkM1cwamtuQXJlVFc5MkZJZzF4N0FBWlQ0dTRBWXExak9zSlNOQVEzV2hzQ0o5Y01BY3BVcmVYRWxENDZpM293SjJQa01HK2cvTkpOQm5lRzZPSnhKUFJubXhZUTV3NjFlNy9pUzBGMEZxMG9kZGtVWnNnYW00QnFDamxPUnJzN2Z0VFZBRktXOFRmZyt6cUZFY1JwQVpjblltU1A0YlJ6QTFDLzh4dHFZOUhKQ3BTZkJLREw0Qzl4NEQ2S21DcWw2UjB3bDFhWFNacFp4MWFPUXlrbjZQdmVla09vMFZxR2QzOUpMNkdBVHU1RWpCbHlEdUZSTEk2VEt4aWJyaGtnZ3pHRXJLQkRGdE5LSjBjQWkwbWNYaEVtaW9semo5cUpWbEJ0aWhuS2FvUXJneFptOEpTM0VFcmxDczZSeTNrbDA4SXlIbFRMTWo2U1ZtSUl3NEdITWkzUFk0NmpnM0tkVEI4NldRUCtSOGNhc3NabW9KNU9oc3NWM2wxZzQ5a2lsTFN3SGpoUFkxeUNNQjg0M0t1eU0wS1l6VDVjQkp3U3RCU0RKeWh3TDUxVXlUZys4THB3ejZkZHBaVTFER0FJUWpud2lkZmxwMEZmakJseWhXZFJUcE94alBYRERPRFRPb1RZdEVzenJSUXhERmdCNXRwYVEwYThoM0lsWXpoSnJ1UnBQeXZ5ZFdGTzVyTlJtcGtJbkFUOHdjKzZERG5KVnFDSnZneVZxMWdwZ3ZwZFlWWUMyYVNaNXhTK1F3VVhBd3VBdzdKUnJ5SFNyRVdaTEZmeDEyeFdtclhRRFFHVlJhemhNNzZKVUUvQy9RYkR6cnlBY29aY3hTZ1psMTB6UUFDeFRMS0NMYklRbXdJR0E2dkEvMmJRRUFrK0FzcnB4N2RsSEU4RUpTS3c0RDZaejd0eUUyT0JVeEJ6M1cwZTB3RXNwcDBqWkJ5dFVocnNBbS9nMGE2eWtHZm94Mm5PQ25KS0I0OFpjb1oxd0xFeW5waE1ERWNJVU9DR2dNU0ZpYktBbFNoSE9PT0x6L2VZeVJCbE5tQnhvWXpuWEJuUEcwR0w2VTRvREpGRUZySlo1bU5Ud0ZHSWQ4dnhodER3TWNway9zNVJNbzdmQkMybUowSzVmMWdhZVFzbzFXck9kc0xNaCs4cGp5SDh5SVRNRDRMd20xQzFFRHNqalR4S0NjY2pUSVQwUTNvTmhsUUp0U0VBeEtaVEdsbUJNQVNsQ1dnUFdwTWhkd205SVpKSUk1dGtQdFhFT1JyQzJmODBSSi9JR0NLSnpHZUROSEloY0M2RWE0YkNFSDBpWjRnazBzZzZQdUpZSjh3OEZIUFlodWdUV1VPQXM0MTFIcTNBRWM0RkttSGJ4bXFJR0pFMlJCSzVrWS9rUm1MRU9SRjRQR2c5aHVpU0U0WklJbzI4S1BNNEUvZ0I4SGJRZWd6Ukk2Y01rVVFhYUdNTDMwS3BCajROV284aE91U2tJUUNrbWEweWp5WUtHWXFhYmF5RzFNaFpReVFSbTQzU3dFU1VreENlQ2xwUHhQZ3Y0dHN2dmM4TGN0NFFTYVNCNTVqTjZRaWx3RHRCNndrNWJ3TG55eVQrVXlibjExZ3Nid3dCempiVzJheWhnR0Vrem4zZEZyU21rUEV4U2puL1pMaE00cmRCaXdtQ3ZESkVFckhaSXJPeHNSZ0VyQ0lMcHptRW5FNWdCVVVNa2NtMGlrMW4wSUtDSWk4TmtVUnMzcFhaaktXTHM0Q1hndFlUQ01vanhEbE9Kak5SSnZMUG9PVUVUVjRiSW9uTTRmY0lKK1RaTnRhL0lKUktHU01reG10Qml3a0x4aEFPWWhNWG01WEFrWkRUMjFnL1E2a0hoc3Rrc3l0eFo0d2hka0pzUGhNYm13S0dRMDQ5TUhGZ0ZjcVJFc09Xc3B3MWZFYUVjZ3RwR0pCYS9nS1VhajNuQU0xRWV4dnJNeWd4S2VlWm9JV0VIZE5DN0FHWnhTTW94ME1rdDdHK0MxeEpqRk9NR1ZMREdDSUZ4S1pUNmxoQm5LRWtia3NLKzdUa0ZxQ2VPSU9sUER1SEJPY0t4aEF1RUp1UHBZNFlCUXhIZVRCb1BUMmd3QnE2K0taTXdaWUtjMzZ1Vzh3WUlnMmtoamVCQzNRT0kwaTBHTU1DbGdUQzgwQk1wcGhyQnpMQnRCQVpJTFdzNDhzY0UvQnRyTzhqVE9UZmZOdVlJWE9NSVRKRUp0SWh0YlJpY1FTUzFXMnM3Y0JpaWhncVUxZ2h0Z2x2OXdKakNJK1FHajZTR21MQXQ4SDM0OXpYWWpGTXBoS1RzbERjNDVjem1ER0V4OGdNWGdETzBMbU13cUxWNCtMZlJEaGJwdktZeCtVYURQNmpOaVhheUJsQjZ6Q2t6djhEUWQ3UXJNYkxSMUFBQUFBQVNVVk9SSzVDWUlJPSI+CjxsaW5rIHJlbD0iYXBwbGUtdG91Y2gtaWNvbiIgaHJlZj0iZGF0YTppbWFnZS9wbmc7YmFzZTY0LGlWQk9SdzBLR2dvQUFBQU5TVWhFVWdBQUFNUUFBQURFQ0FZQUFBREFwbzVyQUFBQUJITkNTVlFJQ0FnSWZBaGtpQUFBQUFsd1NGbHpBQUJhYmdBQVdtNEJ4V3NqT0FBQUFCbDBSVmgwVTI5bWRIZGhjbVVBZDNkM0xtbHVhM05qWVhCbExtOXlaNXZ1UEJvQUFCbDBTVVJCVkhpYzdaMTVlRlRWM2NjL3Y1c0ZDVlJ4cVZ0cHRWVzJWbHhmNjFxdGlxMEw5R2w5TlhVQkZFcEZSVEloaEJBRENUZEFNQUVrQ1lzSzdxQjkra0Q3MnFmQldpdnFXN1ZhNjc0aXJlOXJheFgxYlpWV1pUSEwvTjQvNWc0R1NHRHV6TDF6NzUwNW4zODR6TXc1NTh2TS9YSzIzemtIRElHaml6aFBGM0ZlMERvTUlFRUx5R2QwUG9Pd2FBQXVjVjVhaDBXNVZQQjZrTHJ5R1dPSUFGQ2IvdlNqRXFnRyt1endLd2dkd0MxMFVDZlYvRHNZaGZtTE1VUVdVUnVMRWtZRDh4RU8ydjdHam9ad1BzeEhXTXhoSUV1bGxLNXM2c3huakNHeWhDN2dKSlJXNENTZ1p4UDBuSDRKaTVpVTg3amZHZzNHRUw2alRRd0U1Z0dqa1c3ZmQrcUdTTEtXSXNwa01tLzdJTlBnWUF6aEUycFRRaCtxc0tnQytnTHVUYkJyZWl1d21IWWFaRHFmZWlyWUFCaERlSTRxUWlNWEF3c1FEdlBBQkQybE55TFVzNG5ieFNhZXVXcERFbU1JRDlFYk9RRm9SVGh0KzR2K0dDTDU1N05BdWNSNEtpM0JobDB3aHZBQWJlQVFMR3hnQW1ENWFvTHU2Y1NmaXZBTGxFcUo4WTVMNllhZE1JYklBTFVwcG9ockVXWWo3TDM5amV3YUlwbmVqTEtRdldtVWNXeEw2UjlnMkFWamlEVFJ1WXpDb2dYNEJwQTlFM1JQOS96KzM0R1pVc2JLWHFRYmRvTXhoRXUwZ2FNUm1sSE85dkFCLzZPVE90a0RReVRTeWlNbzVSTGp0WjcrSFlhZXNZSVdFQlhVWmorZFN5dndQTXJaSGhXN0VXRWluM0VhVXprVm9SVDRteWNsQytkZzhiSXVaYVhld29HZWxKa0htQlppRDZoTklVV01SMmtBRHZDb1ZkaUtzSmo0cnVzSnVwd1NQcU1LcUVLYzlZdmV5a205emsxQUV3ZlNMS1cwWStnVlk0amRvUFdjZzBVTHdsSGJYOHpjRUdzUnltVGE3bGVjdFltQkZEa3IzT3l3eHAyT0laTHBEUWhUNVRvZTJGM2QrWXd4UkEvb0hBWkJ0N0JzYjFxRkZ5bWdYQ3JkeFNUcElzNEVXaENPM2FYTTlMV3NvNENZWE1NYmJyVGtBOFlRM1ZDYi9naVZ5RTVoMlprWjRpT0VPUnllZnRTcTJsZ01ZRFRLZk9BZ2ozUjFvTnhDSVhVeTBZU1pKekdHd0huZ0xPZUI2eWtzTzcwSEwvSEFpWGY3R25RWi9XbnZ3YkRwYXdTY01QUDlUSmc1R0VPZ3MxTUl5M2Ivc0swalRreHEvT21TYUN1RFVCcVE3VHZ0dk9qV3ZZaFFMdGZrZDVoNTNocENiUmRoMmFrL1ZCdFFLcVNHMzNncXRoZTBsWE9BRnVBb0Q5ZEUxbEpBbWZ3MFA4UE04ODRRYWxNQ3pyUm1xbUhaZTM2UU5pRTA4VG5OWW1kM1dsTnRDdG1YOFlnekxkeTdSamZwUkpoNUVRM3lrL3dLTTg4YlF5Z0lkVnlNeFFMVVpWaDI3Kzkzb3R5Sk1GTnErSWZYbXQyZ2k5aVBRbVlCMXlFVWJuOGpNM084aDFMRFJGYUpvSjRLRGlsNVlRaXQ1UVFrZzdEc25sOTdGSXR5cWVaVlQ4Vm1pQzVoS0VvejRoeHI0MDFYNmxtVW1GekQweDVLRFNVNWJRaXQ0UkNLc05FTXc3SjNmTzB0bEJxWnlScVA1WHFLTG1ZVVFndmlCQjlDcHVaUTRGNDZxSkpKZk9DcDJCQ1JrNFpRbTJJNlBRekxUdnlaQ0svZWh4dWxqTTg5bHV3TGFsUE0vczczQUh0NzFGcHNSbGhJWVc2R21lZWNJWFNHNTJIWmNZVDdFS2JKREQ3MFZtMTIwT1VjUWdjMjRyU1U0TVgzOGhaQ2pVd0lkMHZwbHB3eGhON0FVQXBvQnM3emNBcnlHWlNZMVBHTWgxSURRMjkydHJncXAzbjJIVms4U3B3cDhsTmU4VkJxWUVUZUVHcXpIeDNNUXJnT25ObVZ6SC9zZDRFWjFPYmU3SW9xd2kzT0lRaHdHT0RGOTlXSk9MTnQ0NE9kYmN1VXlCcENiUXJwWUR4NEdwYTlCVmpBbDJpU0NyWjZLRGQwNkhKSzZLUUtTU0hNUE5XMHhTYmlOTEYzZE1QTUkya0lyWEZXYUwwTHkxYmdGeFF3VFdaNnRFRW5JdWppRk1MTTNhWVRZZVlWTWk0N0svWmVFaWxENkV3R0VmYzhMUHM1TE1xbGpqOTRwelI2Nk0yYzZVeEc3QnBtN2piOXhXdnJLS1JNeHJMZU82WCtFZ2xEcU8xRWVTclZDSDIydjVHWklUWUM5V0FPKzBxaU5oWUhPNGN4ZHc4emgweldiUkpSdngzUkNETVB0U0hVeG1Jcm83R2NId2k4YUJYYWdWc3BZYVk1RHJKbmRCbjlzYWpFY3NMTUlSTkRKRW1FbWZjTmQ1aDVhQTJoTjNRTHkvWnVHblV0UWt4cy90ZERxVG1MM3NvZ3hPbWlabTZJWlBvRmxISVp4eE5lYXZXSzBCbENxeGlJMVcyUUIxNjBDaStobE1zY2Z1K3AyRHhCVnpEQ2lZOUtUR0prWm9oa2VpMXhKc3M0L3VxbDFrd0pqU0hVcG9RdHpqUWc5UFdvVlVoczMxelBVbGtUM21ZNkNxaE5JVjl4VGg4Uko4d2NNakVFSkthNWw5Q1h1VkxLWjk0cVRvL0FEYUVnVE9OaXhGa29jditsOXBST1hFdlZUcDAwaFg4Z0Z5WDBkdlpEbVFWTUFnb3lORVF5L1I1Q0RhT0RYd2dOMUJBNmxST3dlZ25MVHQ4UTZ4REtaWTY1dU5CUDlEYUdBWXVRYnJlblp2N2IvUW1MbUl6ZWZwSmgxZ25FRUZydWhHWHY3clJzOTEvcUJ1Sk1sWG5tektGc29yY3pDcHhnU205YWQwV2NNUE54MlE4eno2b2huTzdSTkpSYWhQNDlxbkQvcFg0TTFGUEV6V0xUNmExaVF5cm9YZXhGbkFyZ0JxQy9SK08vVDdDWVF4R0xzeGtHa3ZVV1FpczR6amtONzR3ZVZhUnVpRVJZZGhHVll2Ti9mbWcxdUVPWGN3aUZQb1daWDVHZE1QUEF4aEJheVNpRVZ1RHJyZzJoUElvd1JlYmxSc2h4cnFGM2N3SmR6dGpRdXpXa1IxSEtaYlMvVzNhREhWVGJGTE9aYXhIbUFGL2FRVkhQWDh4YldOUklRMjV0U3NsRlZCSHU5aUhNSE82a2lKbFM2aytZZWVEVHJnQmF4YUhBTEdBQzBtTlRtOWkyV0V5ajJMbTNiVEdYMGVXVVVKemlhZWFwcHplaDFITW95K1FzYjhlTm9UQkVFcTNpUDV4dTFLbU9zc1RHOWk2cVpFSHVibXpQQi9RMkJsTE1QTlRETUhONEU0c0t1WlFIdmRJWktrT0FNeE0xblRFSUYyTmh5enhlQ0ZxVHdUdjBMcjdyaEprZnMvM0Z6TTF4UDNFcTVZck1ZOVJDWndoRDdxTTJGb2M3WWVhU1FaajVqdWtPTEc2aGcxb1p6U2ZwYWpPR01BU0dycVkvVzd1ZFpnNlp0eGJDK3lnMkZuZWtFMlp1REdFSUhMMlBRWFNsRVdhK3V6UThqMFc1bFBLa0d5M0dFSWJRb1Bkd1BzSWloS0ZBcG9hQXhLWDJFK1RIM0ptcUJ0ZTNrR281RTdTY0g3ck5aekRzQ2JtU0I5bkswY0JFNEo5ZUZBa2M2aWFEKzJ0NWxTTlI3dGNZNi9SNng4a0dnMGZJUkRwa0RDdm93eEJnTVdSM0gwczZoaWh5VXVkUXdDc2FvMVd2Nnhhb1p6QjRnSlR5c1l3bVJwemh3Ryt6VmE5N1ExamJEUUZRQkpSUnhIcU5NZFl6VlFhRGc0eGx2WXptZklRZmdQOTc0VE5wSWJvekVMaEh5M2pZZEtNTWZpQ1gwMFlSdzRCeVNIK2RZVSs0TndROUdpS0JNSUlDWHRZcE5Lck5YdW5MTWhoMlJVcHBseXRvUlJnRy9weWw1YTBoRWhTalRPZGZ2SzR4UnFZanltRFlIWElaRzhHZnZkZCtHQ0xKTnhEYWRBcHRXc25YMDZqSFlNZzZYbzBoZHNkSXVuaGRLN0JOTjhvUWRqS2RaVXFWdmlpeitJVFh0SklMMDhodk1HU0ZiTFFRM1RtQ09HdTFnall0NS9BTXlqRVlmTUhQTWNUdUdFa0JiMmlsNlVZWndrVlFob0JrTitwVFh0VnBYT0JSbVFaRFJnUnBpQ1JIb2p5Z1UyblRhdE9OTWdSTHRzY1F2U09NcEpQWHRRcGJKM2U3Rk1WZ3lDTHVEU0UrR1NKQkNjb3MrdkNhVHV0MlpxakJrQ1hDMEdYYUZlRkk0RUd0b2sybk9tZjZHQXhaSUp5RytJTEViSlRwUmhteVJOZ05BVkFDektLRVYzVTYzODl5M1lZOEl3cUdTRElJK0sxVzA2YlQrVnBBR2d3NVRwUU1rVUFaaWJCZXE3SFZwamhRTFlhY0kzcUdTSkRvUm0zalZhM21lMEdMTWVRT1VUVkVrc0VJRCtrTnRPa012aHEwR0VQMGlib2hrb3drem5xdE1kMG9RMmJraWlFQStnR3phT2NWcmVIY29NVVlvb2tyUTJqaTRLZENuN1I0eFJEZ2R6ckRkS01NN25IWFFsd2Rlak4wWnlTd1htZWFibFJlRTNkM0dJSGJMbE5ZdTB1OTBROWxGbDI4ckRNWkViUVlRMWJaakZMUE5oYTV5ZVRPRVB0R3poQUpsS0hBNzNRbUs3V0dnNEtXWS9BVkJWYlJ3U0M1REZ2R3VidUN6WjBoT2lOcWlBUUNqS0dBRFRxVG1OcVI2djRaVWtINUV4YW55YVdNbFRHOG4wNFI3Z3pSRldsREpOa0hvWVV1bnROYVRndGFqTUVUM2tXNGtrczVXVXA1T3BPQzNCbkNyODFCd1hBTXdoTmFaN3BSa1VYWkF0UlR3R0M1bEpVaW1SOWU1czRROFp3eUJDUzdVWVc4cVhYRTlCSUtnaFprU0JGaEZVVU1sc3V3cFpTdDNoWHJBcjJlb1JTdzNsV3AwVXEvaERCSmJKN0NrSmU0YXlHS2NxNkYySmxqZ1NmVlpxWGFIQmkwR0VQMnllY3hSTStvMDQyQ0RWcFBURmViYmxRK1lRelJPd05RV2xqUHN6cWJVNElXWThnT3ViNVM3UVhIb2Z4QjYxbXA4L2h5MEdJTS9tSmFpTlJJZEtNNjJhQnpURGNxbDNGbkNNbjdJTGw5VVZyWXdKOTBMaWNITGNiZ1BhYkxsQTdLOFNoUDZSelRqY28xVEpjcGZSTGRxQzdUamNvbFRBdVJPZnNpdFBBWG50SFpuQlMwR0VObXVETkVlcmNINVFmS0NWZzhwWE5acVRZSEJDM0hrQjZtaGZBV0MyRU1SV3pRQm1KcXA3Vm5QVlJvTXdPQzFwQUp1cHFEM1h6ZTdRKzI1ejBFcnFLamNwYjlnQmFLZVZJYk9TWm9NZW1nU3poVWw3S2NZdVlFclNVZGRCVkQ5R2M4UUFkVDNlUnpPNmgyTisxcXpIRUtTbG5RSXR5Z05zVzZoQmdXYnlKY1RYb25zd1NHM3NlK2VoK05XTHdDN20rbWNyZHJUQ2xLK3lIZk1kOW00REdnalM2ZW9JakgwQnpka3hDblBXZ0pxYUxMR0lYU0N0RzdWMXh0TEk1Z05MQUEwZy9NZEx1Tk1wTXh4TnNvRHdOcjJZZUh4UDdpUWRGS0tvRDdNaWc3dkFnZFFVdllFN3FNWTRuVGduSm0wRnJTUWUvakxPSzBJQnlkYVZudURHRlI1R0pQVWhlSi9RVnJFZHJrSnA3djdZT3lrSjlwSlpkRER0NWhMZUZ0SVhRcCt3TjF4SmtFMFZ0SDBaVjhEWXU1S0dPODZwNjc3ekx0bnMySTB4VXE1TmV5Z0E5Y0tMbWVMcjVMNGdTKzNFSEQxMExvY29wbzV6cmkxQ1BzRTdRZXQraEsraUZNQTZhajdPWGxXTldMTHRQYkNBOGp1M2FGM0NDTi9GV3JhRUNabDNnaG5WSkNTTWdNb1lzWndlZTBBTjhLV290YlZCSHVaUXhLRTdpYlRrMlZkQXp4UlZjb1Rwc3M3cjByNUpvU0ZyQ1pVaEk3MTNJREt4eUcwS1VNcG90RktCZEc4VDhidllzVFdVVXIrTHMzeFowaHVyaWJJdVpMTXgvN0lVWnNPcldTNnhDZXBQdDBYMi83b0tOQm9HTUliV1lBUWpWZFRJSG9SU3ZyUFh3RnVCRVlUUlorZlZlR2tLVzg2WmVRN1hVczVHbWR4bkxnV3Ivcnlnb0JkWm5VeG1KQTV0T1FRYUdyNmN0V3lvQVp3SmV5Vlc4NEYxMjJVWTN3M2g0L0Y0WFdJb0JaSnIySnM5aUhGNEI3aUtJWjdtSVVXM2dEcFpFc21nRkNhZ2had2lkQWhidE0vbWpKbUN5MkVIb1RYOVZtVm1MeEtFUXZaRVR2NUhpOWk4Y1JmZzBjSG9TRzBKNXZLazJzMW1tTVJoamxQck1QZ3RJbEM0YlFCZlREWWhyQ2RHQXZ2K3Z6R3IySC9lbWlEZ2wrUFNTMGhnREE0bnFVczREK2FaY1J2RGw4NnpLcElpemlZb1NGRUwycmluVTVSUlJ6SFYzaFdROEpaWmNwaVRUeERrSzlkd1Y2VmxMcStEVHRxZ3M1a1VVOENhd21pbWE0a3hFVThSSktDNFREREpCbFE2aE5vYnA5TFB2U0Fyem91WmpzbUdNVHlxdGVGcWhOSEtvTFdZN3dSK0JVTDh2T0Jub0hRL1IySG5EaTJyNFp0SjZkOGQwUU9waytPb1VSV2tFcm4vQXVVN2pLVFg2eDZVUzVtc1NDb0QvNFlRN2xBeXpPa2hyZThLekloVnhFQVgrRzZJVmxBK2p0akFkZVE5eUhaV2NMWDc1VW5VSmZuY0lvbmNKS0N2a1FlQmdvQXc1Q2FOWXFCcm9wVCtiekhIQ3pIMXAzcmN5VFV0Nm1nTzlJTlM5N1V0b1hIRU8wWTcyR0VmSnhxMmZpdEp3QktPY2lqRUw1RWRDL2w0ZHJIN3E0QlZ6T0hpa3pFSDRFN3N5VUVlbVo0elVLK2I1TVo2UEhhZ3haSUtNV1FpZXh2OFlZcXpIYVVENGtNY0FidzU1bmhVWnFCVDkyVTVmTTUxTWs5THZQSHFlQTA0MFpvb3RyUStoa0Jtb1pWMnVNTmdwNW44UnE2RWpjeHNrSVM3WFMzU3FxTkhJL3lxOWMxZU1WZTI0dDFsTENlVkxOdjdPZ3h1QVQ3aTV1TCtjaUxONUJXRTdDQkpuc29EdUFPTTJ1Y3ltVElPQ0hibWR6S1BmeVpTNlNDdTl1c2pFRWc5c3J0ZnJoNVp5TWNMbE81WWV1c3N4bkk4b3N6elJraXNVU3VyaFNKb1lqek51UUdjRlAzUWszYXpYN3VzclRseVhBSC8wUmxESUsxTXNNeXNRbUhyQVdnMGNFYndnNGhFNmEzR1FRbXpnV0V5R3cvNVc3VUs2Uld1eUE2amY0UkJnTUFUQkJwL0U5Tnhsa0hxOEFTM3pTc3p2YUVTNlRPbFlFVUxmQlo4SmlDQ0hPY3JWZEJ2SDFvUlo0Mng5SlBiSVpZWlRNWkUwVzZ6UmtrYkFZQW9URDJjeGNWMWxzdGpnaHc5bmdZeXhHU0MyL3kxSjloZ0FJanlFU1ROYnBuTzRtZzh6alFlQVhQdWxKOGc3Q3FUSXo4SUc4d1dmQ1pnaUxPTGVyN1hLVFN5ZVRnWC81STRuMUZIQzYxTExCcC9JTklTSnNoZ0FZd21acTNXUndEa1NiNllPVzV5amlUSm5KMzlNdFFCczR5a3RCQm44Sm95RUFxclNhRTF6bEtPWVc0Q2tQTlR6R1hwd3ROZndqM1FMMFJxWWpWSHFveWVBellUVkVJWEh1MEt0VER3MFJtemdGWElNM2F4Ty9BaTZRNlh5YWJnSGF3R3puMUFoRGhBaXJJUUNPWVFCVmJqTElIRjVGMG9pUDJwRzdnVXZFWmxzNm1WVVJiYUFGY2RmdE00U0RNQnNDb0ZhbnV6eURkQXMyOEQ5cDFTWTBpYzA0c2VsTUo3dXVwb0I1M0E3RTBxcmZFRGhoTjBRZjRBNjlKUFdqU2FTWnJVNUViT29JaWxJcE50VnVCU2JSMVJUd1orNEN4cWRiaGlGNHdtNElVRTdpNjB4MmswWG04UkRDejFQOGVCY3dRV1p6azN0eENkU21tRCt6Qm1GTXVtVVl3a0g0RFFFZ05HZzFSN3JLRTZjYzJMU0hUMzFPWXJ4d1o3clMxS2FFUXRxQUg2VmJoaUU4Uk1NUVVJSnltNXNqYkdRZUg4SnV1MEQvd21LRXpPYitkRVhwQXZvNVpuQVZtR2dJTDFFeEJNQjNxZWFucm5JMGNCdndaQS92Skk2SXNYdDhMeVhVWmdEYldBZWNuVzRaaHZBUkpVT0Fza0JuOE5WVVB5NkpUVHdUU0hTTmtpU09pTEY1S1cwWk5nZFN3SDhESjZkYmhpR2NSTXNRc0RkZDNPb21nOHhsQTdEUStldnJ4UG1PMkx5VnJnQzFPWmdDSGlHQ3Ayc2I5a3pVREFGd2dWWnpoYXNjaGN4RnVac0NUcGVHRk82ZDZBV2R5MkZZUEFFbVBpbFhDZlVwYXJ1aFZXdFk1d3ljOTRpejZqd3Vrd3JWWmpCeDFrSHFYVFpEOUloaUN3R3dQOHJpYkZXbWN4aUd4V01ZTStROFVUVUVLS1Y2QXhmNVhvM044Y1I1SERqVTc3b013Uk5kUXlSWXBqYjcrVlc0enVaRWhJZUJBL3lxd3hBdW9tNklnOW1XZnNqRjd0RFpuSW55Q1Bobk9FUDRpTG9oUUxoS3F6blB5eUsxbnZPSjh5Qlp2Z0hURUR6Uk53U0FzRnlydkhsNDFlWUhLUGNEZmIwb3p4QXRjc01ROERVS3VUSFRRclNPeTRCZmtnZzdOK1FodVdJSWdHdDFCbWVrbTFsdHJrYTRsK2l1elJnOElKY01ZYUhjcGxQY2QzVzBqa25BcmVUVzkyRklnMXg3QUFaVDR1NEFZcTFqT3NKU05BUTNXaHNDSjljTUFjcFVyZVhFbEQ0Nmkzb3dKMlBrTUcrZy9OSk5CbmVHNk9KeEpQUm5teFlRNXc2MWU3L2lTMEYwRnEwb2Rka1Vac2dhbTRCcUNqbE9ScnM3ZnRUVkFGS1c4VGZnK3pxRkVjUnBBWmNuWW1TUDRiUnpBMUMvOHh0cVk5SEpDcFNmQktETDRDOXg0RDZLbUNxbDZSMHdsMWFYU1pwWngxYU9ReWtuNlB2ZWVrT28wVnFHZDM5Skw2R0FUdTVFakJseUR1RlJMSTZUS3hpYnJoa2dnekdFcktCREZ0TktKMGNBaTBtY1hoRW1pb2x6ajlxSlZsQnRpaG5LYW9Rcmd4Wm04SlMzRUVybENzNlJ5M2tsMDhJeUhsVExNajZTVm1JSXc0R0hNaTNQWTQ2amczS2RUQjg2V1FQK1I4Y2Fzc1ptb0o1T2hzc1YzbDFnNDlraWxMU3dIamhQWTF5Q01CODQzS3V5TTBLWXpUNWNCSndTdEJTREp5aHdMNTFVeVRnKzhMcHd6NmRkcFpVMURHQUlRam53aWRmbHAwRmZqQmx5aFdkUlRwT3hqUFhERE9EVE9vVFl0RXN6clJReERGZ0I1dHBhUTBhOGgzSWxZemhKcnVScFB5dnlkV0ZPNXJOUm1wa0luQVQ4d2MrNkREbkpWcUNKdmd5VnExZ3BndnBkWVZZQzJhU1o1eFMrUXdVWEF3dUF3N0pScnlIU3JFV1pMRmZ4MTJ4V21yWFFEUUdWUmF6aE03NkpVRS9DL1FiRHpyeUFjb1pjeFNnWmwxMHpRQUN4VExLQ0xiSVFtd0lHQTZ2QS8yYlFFQWsrQXNycHg3ZGxIRThFSlNLdzRENlp6N3R5RTJPQlV4QnozVzBlMHdFc3BwMGpaQnl0VWhyc0FtL2cwYTZ5a0dmb3gybk9DbkpLQjQ4WmNvWjF3TEV5bnBoTURFY0lVT0NHZ01TRmliS0FsU2hIT09PTHovZVl5UkJsTm1CeG9Zem5YQm5QRzBHTDZVNG9ESkZFRnJKWjVtTlR3RkdJZDh2eGh0RHdNY3BrL3M1Uk1vN2ZCQzJtSjBLNWYxZ2FlUXNvMVdyT2RzTE1oKzhwanlIOHlJVE1ENEx3bTFDMUVEc2pqVHhLQ2NjalRJVDBRM29OaGxRSnRTRUF4S1pUR2xtQk1BU2xDV2dQV3BNaGR3bTlJWkpJSTV0a1B0WEVPUnJDMmY4MFJKL0lHQ0tKekdlRE5ISWhjQzZFYTRiQ0VIMGlaNGdrMHNnNlB1SllKOHc4RkhQWWh1Z1RXVU9BczQxMUhxM0FFYzRGS21IYnhtcUlHSkUyUkJLNWtZL2tSbUxFT1JGNFBHZzlodWlTRTRaSUlvMjhLUE00RS9nQjhIYlFlZ3pSSTZjTWtVUWFhR01MMzBLcEJqNE5XbzhoT3VTa0lRQ2ttYTB5anlZS0dZcWFiYXlHMU1oWlF5UVJtNDNTd0VTVWt4Q2VDbHBQeFBndjR0c3Z2YzhMY3Q0UVNhU0I1NWpONlFpbHdEdEI2d2s1YndMbnl5VCtVeWJuMTFnc2J3d0J6amJXMmF5aGdHRWt6bjNkRnJTbWtQRXhTam4vWkxoTTRyZEJpd21DdkRKRUVySFpJck94c1JnRXJDSUxwem1FbkU1Z0JVVU1rY20waWsxbjBJS0NJaThOa1VSczNwWFpqS1dMczRDWGd0WVRDTW9qeERsT0pqTlJKdkxQb09VRVRWNGJJb25NNGZjSUorVFpOdGEvSUpSS0dTTWt4bXRCaXdrTHhoQU9ZaE1YbTVYQWtaRFQyMWcvUTZrSGhzdGtzeXR4WjR3aGRrSnNQaE1ibXdLR1EwNDlNSEZnRmNxUkVzT1dzcHcxZkVhRWNndHBHSkJhL2dLVWFqM25BTTFFZXh2ck15Z3hLZWVab0lXRUhkTkM3QUdaeFNNb3gwTWt0N0crQzF4SmpGT01HVkxER0NJRnhLWlQ2bGhCbktFa2Jrc0srN1RrRnFDZU9JT2xQRHVIQk9jS3hoQXVFSnVQcFk0WUJReEhlVEJvUFQyZ3dCcTYrS1pNd1pZS2MzNnVXOHdZSWcya2hqZUJDM1FPSTBpMEdNTUNsZ1RDODBCTXBwaHJCekxCdEJBWklMV3M0OHNjRS9CdHJPOGpUT1RmZk51WUlYT01JVEpFSnRJaHRiUmljUVNTMVcyczdjQmlpaGdxVTFnaHRnbHY5d0pqQ0krUUdqNlNHbUxBdDhIMzQ5elhZakZNcGhLVHNsRGM0NWN6bURHRXg4Z01YZ0RPMExtTXdxTFY0K0xmUkRoYnB2S1l4K1VhRFA2ak5pWGF5QmxCNnpDa3p2OERRZDdRck1iTFIxQUFBQUFBU1VWT1JLNUNZSUk9Ij4KCjxzdHlsZT4KQGZvbnQtZmFjZSB7CiAgZm9udC1mYW1pbHk6ICdSb2JvdG8nOwogIGZvbnQtc3R5bGU6IG5vcm1hbDsKICBmb250LXdlaWdodDogNDAwOwogIHNyYzogbG9jYWwoJ1JvYm90bycpLCBsb2NhbCgnUm9ib3RvLVJlZ3VsYXInKSwgdXJsKC9mb250LXJvYm90by91WUVDTUtvSGNPOXgxd2RtYnlISW0zLV9rZjZCeVlPNkNMWWRCNEhRRS1ZLndvZmYyKSBmb3JtYXQoJ3dvZmYyJyk7CiAgdW5pY29kZS1yYW5nZTogVSswNDAwLTA0NUYsIFUrMDQ5MC0wNDkxLCBVKzA0QjAtMDRCMSwgVSsyMTE2Owp9CkBmb250LWZhY2UgewogIGZvbnQtZmFtaWx5OiAnUm9ib3RvJzsKICBmb250LXN0eWxlOiBub3JtYWw7CiAgZm9udC13ZWlnaHQ6IDQwMDsKICBzcmM6IGxvY2FsKCdSb2JvdG8nKSwgbG9jYWwoJ1JvYm90by1SZWd1bGFyJyksIHVybCgvZm9udC1yb2JvdG8vc1RkYUE2ajBQc2I5MjBWanYtbXJ6SC1fa2Y2QnlZTzZDTFlkQjRIUUUtWS53b2ZmMikgZm9ybWF0KCd3b2ZmMicpOwogIHVuaWNvZGUtcmFuZ2U6IFUrMDQ2MC0wNTJGLCBVKzIwQjQsIFUrMkRFMC0yREZGLCBVK0E2NDAtQTY5RjsKfQpAZm9udC1mYWNlIHsKICBmb250LWZhbWlseTogJ1JvYm90byc7CiAgZm9udC1zdHlsZTogbm9ybWFsOwogIGZvbnQtd2VpZ2h0OiA0MDA7CiAgc3JjOiBsb2NhbCgnUm9ib3RvJyksIGxvY2FsKCdSb2JvdG8tUmVndWxhcicpLCB1cmwoL2ZvbnQtcm9ib3RvL19WWUZ4LXM4MjRrWHFfVWwyQkhxWUgtX2tmNkJ5WU82Q0xZZEI0SFFFLVkud29mZjIpIGZvcm1hdCgnd29mZjInKTsKICB1bmljb2RlLXJhbmdlOiBVKzAzNzAtMDNGRjsKfQpAZm9udC1mYWNlIHsKICBmb250LWZhbWlseTogJ1JvYm90byc7CiAgZm9udC1zdHlsZTogbm9ybWFsOwogIGZvbnQtd2VpZ2h0OiA0MDA7CiAgc3JjOiBsb2NhbCgnUm9ib3RvJyksIGxvY2FsKCdSb2JvdG8tUmVndWxhcicpLCB1cmwoL2ZvbnQtcm9ib3RvL3RuajRTQjZETmJkYVFuc004Q0ZxQlgtX2tmNkJ5WU82Q0xZZEI0SFFFLVkud29mZjIpIGZvcm1hdCgnd29mZjInKTsKICB1bmljb2RlLXJhbmdlOiBVKzFGMDAtMUZGRjsKfQpAZm9udC1mYWNlIHsKICBmb250LWZhbWlseTogJ1JvYm90byc7CiAgZm9udC1zdHlsZTogbm9ybWFsOwogIGZvbnQtd2VpZ2h0OiA0MDA7CiAgc3JjOiBsb2NhbCgnUm9ib3RvJyksIGxvY2FsKCdSb2JvdG8tUmVndWxhcicpLCB1cmwoL2ZvbnQtcm9ib3RvL29NTWdmWk1RdGhPcnlRbzluMjJkY3V2dkRpbjFwSzhhS3RlTHBlWjVjMEEud29mZjIpIGZvcm1hdCgnd29mZjInKTsKICB1bmljb2RlLXJhbmdlOiBVKzAwMDAtMDBGRiwgVSswMTMxLCBVKzAxNTItMDE1MywgVSswMkM2LCBVKzAyREEsIFUrMDJEQywgVSsyMDAwLTIwNkYsIFUrMjA3NCwgVSsyMEFDLCBVKzIyMTIsIFUrMjIxNTsKfQpAZm9udC1mYWNlIHsKICBmb250LWZhbWlseTogJ1JvYm90byc7CiAgZm9udC1zdHlsZTogbm9ybWFsOwogIGZvbnQtd2VpZ2h0OiA0MDA7CiAgc3JjOiBsb2NhbCgnUm9ib3RvJyksIGxvY2FsKCdSb2JvdG8tUmVndWxhcicpLCB1cmwoL2ZvbnQtcm9ib3RvL0tzX2NWeGlDaXdVV1ZzRldGQTNCam4tX2tmNkJ5WU82Q0xZZEI0SFFFLVkud29mZjIpIGZvcm1hdCgnd29mZjInKTsKICB1bmljb2RlLXJhbmdlOiBVKzAxMDAtMDI0RiwgVSsxRTAwLTFFRkYsIFUrMjBBMC0yMEFCLCBVKzIwQUQtMjBDRiwgVSsyQzYwLTJDN0YsIFUrQTcyMC1BN0ZGOwp9CkBmb250LWZhY2UgewogIGZvbnQtZmFtaWx5OiAnUm9ib3RvJzsKICBmb250LXN0eWxlOiBub3JtYWw7CiAgZm9udC13ZWlnaHQ6IDQwMDsKICBzcmM6IGxvY2FsKCdSb2JvdG8nKSwgbG9jYWwoJ1JvYm90by1SZWd1bGFyJyksIHVybCgvZm9udC1yb2JvdG8vTko0dnhsZ1d3V2JFc3YxOGRBaHFubi1fa2Y2QnlZTzZDTFlkQjRIUUUtWS53b2ZmMikgZm9ybWF0KCd3b2ZmMicpOwogIHVuaWNvZGUtcmFuZ2U6IFUrMDEwMi0wMTAzLCBVKzFFQTAtMUVGOSwgVSsyMEFCOwp9CkBmb250LWZhY2UgewogIGZvbnQtZmFtaWx5OiAnUm9ib3RvJzsKICBmb250LXN0eWxlOiBub3JtYWw7CiAgZm9udC13ZWlnaHQ6IDcwMDsKICBzcmM6IGxvY2FsKCdSb2JvdG8gQm9sZCcpLCBsb2NhbCgnUm9ib3RvLUJvbGQnKSwgdXJsKC9mb250LXJvYm90by9pc1otd2JDWE5LQWJuam82X1R3SFRvWDBoVmd6WlFVZlJEdVpyUHZIM0Q4LndvZmYyKSBmb3JtYXQoJ3dvZmYyJyk7CiAgdW5pY29kZS1yYW5nZTogVSswNDAwLTA0NUYsIFUrMDQ5MC0wNDkxLCBVKzA0QjAtMDRCMSwgVSsyMTE2Owp9CkBmb250LWZhY2UgewogIGZvbnQtZmFtaWx5OiAnUm9ib3RvJzsKICBmb250LXN0eWxlOiBub3JtYWw7CiAgZm9udC13ZWlnaHQ6IDcwMDsKICBzcmM6IGxvY2FsKCdSb2JvdG8gQm9sZCcpLCBsb2NhbCgnUm9ib3RvLUJvbGQnKSwgdXJsKC9mb250LXJvYm90by83N0ZYRmpSYkd6TjRhQ3JTRmhsaDNvWDBoVmd6WlFVZlJEdVpyUHZIM0Q4LndvZmYyKSBmb3JtYXQoJ3dvZmYyJyk7CiAgdW5pY29kZS1yYW5nZTogVSswNDYwLTA1MkYsIFUrMjBCNCwgVSsyREUwLTJERkYsIFUrQTY0MC1BNjlGOwp9CkBmb250LWZhY2UgewogIGZvbnQtZmFtaWx5OiAnUm9ib3RvJzsKICBmb250LXN0eWxlOiBub3JtYWw7CiAgZm9udC13ZWlnaHQ6IDcwMDsKICBzcmM6IGxvY2FsKCdSb2JvdG8gQm9sZCcpLCBsb2NhbCgnUm9ib3RvLUJvbGQnKSwgdXJsKC9mb250LXJvYm90by9qU04yQ0dWRGJjVnlDbmZKZmpTZGZJWDBoVmd6WlFVZlJEdVpyUHZIM0Q4LndvZmYyKSBmb3JtYXQoJ3dvZmYyJyk7CiAgdW5pY29kZS1yYW5nZTogVSswMzcwLTAzRkY7Cn0KQGZvbnQtZmFjZSB7CiAgZm9udC1mYW1pbHk6ICdSb2JvdG8nOwogIGZvbnQtc3R5bGU6IG5vcm1hbDsKICBmb250LXdlaWdodDogNzAwOwogIHNyYzogbG9jYWwoJ1JvYm90byBCb2xkJyksIGxvY2FsKCdSb2JvdG8tQm9sZCcpLCB1cmwoL2ZvbnQtcm9ib3RvL1VYNmk0SnhRRG0zZlZUYzFDUHV3cW9YMGhWZ3paUVVmUkR1WnJQdkgzRDgud29mZjIpIGZvcm1hdCgnd29mZjInKTsKICB1bmljb2RlLXJhbmdlOiBVKzFGMDAtMUZGRjsKfQpAZm9udC1mYWNlIHsKICBmb250LWZhbWlseTogJ1JvYm90byc7CiAgZm9udC1zdHlsZTogbm9ybWFsOwogIGZvbnQtd2VpZ2h0OiA3MDA7CiAgc3JjOiBsb2NhbCgnUm9ib3RvIEJvbGQnKSwgbG9jYWwoJ1JvYm90by1Cb2xkJyksIHVybCgvZm9udC1yb2JvdG8vZC02SVlwbE9Gb2NDYWNLenh3WFNPSkJ3MXhVMXJLcHRKal8wamFuczkyMC53b2ZmMikgZm9ybWF0KCd3b2ZmMicpOwogIHVuaWNvZGUtcmFuZ2U6IFUrMDAwMC0wMEZGLCBVKzAxMzEsIFUrMDE1Mi0wMTUzLCBVKzAyQzYsIFUrMDJEQSwgVSswMkRDLCBVKzIwMDAtMjA2RiwgVSsyMDc0LCBVKzIwQUMsIFUrMjIxMiwgVSsyMjE1Owp9CkBmb250LWZhY2UgewogIGZvbnQtZmFtaWx5OiAnUm9ib3RvJzsKICBmb250LXN0eWxlOiBub3JtYWw7CiAgZm9udC13ZWlnaHQ6IDcwMDsKICBzcmM6IGxvY2FsKCdSb2JvdG8gQm9sZCcpLCBsb2NhbCgnUm9ib3RvLUJvbGQnKSwgdXJsKC9mb250LXJvYm90by85N3VhaHhpcVpSb25jQmFDRUkzYVc0WDBoVmd6WlFVZlJEdVpyUHZIM0Q4LndvZmYyKSBmb3JtYXQoJ3dvZmYyJyk7CiAgdW5pY29kZS1yYW5nZTogVSswMTAwLTAyNEYsIFUrMUUwMC0xRUZGLCBVKzIwQTAtMjBBQiwgVSsyMEFELTIwQ0YsIFUrMkM2MC0yQzdGLCBVK0E3MjAtQTdGRjsKfQpAZm9udC1mYWNlIHsKICBmb250LWZhbWlseTogJ1JvYm90byc7CiAgZm9udC1zdHlsZTogbm9ybWFsOwogIGZvbnQtd2VpZ2h0OiA3MDA7CiAgc3JjOiBsb2NhbCgnUm9ib3RvIEJvbGQnKSwgbG9jYWwoJ1JvYm90by1Cb2xkJyksIHVybCgvZm9udC1yb2JvdG8vUHdaYy1ZYklMNDE0d0I5ckIxSUFQWVgwaFZnelpRVWZSRHVaclB2SDNEOC53b2ZmMikgZm9ybWF0KCd3b2ZmMicpOwogIHVuaWNvZGUtcmFuZ2U6IFUrMDEwMi0wMTAzLCBVKzFFQTAtMUVGOSwgVSsyMEFCOwp9CkBmb250LWZhY2UgewogIGZvbnQtZmFtaWx5OiAnUm9ib3RvJzsKICBmb250LXN0eWxlOiBpdGFsaWM7CiAgZm9udC13ZWlnaHQ6IDcwMDsKICBzcmM6IGxvY2FsKCdSb2JvdG8gQm9sZCBJdGFsaWMnKSwgbG9jYWwoJ1JvYm90by1Cb2xkSXRhbGljJyksIHVybCgvZm9udC1yb2JvdG8vdDZOZDRjZlBSaFpQNDRRNVFBamNDMTRzWVlkSmc1ZFUycXpKRVZTdXRhMC53b2ZmMikgZm9ybWF0KCd3b2ZmMicpOwogIHVuaWNvZGUtcmFuZ2U6IFUrMDQwMC0wNDVGLCBVKzA0OTAtMDQ5MSwgVSswNEIwLTA0QjEsIFUrMjExNjsKfQpAZm9udC1mYWNlIHsKICBmb250LWZhbWlseTogJ1JvYm90byc7CiAgZm9udC1zdHlsZTogaXRhbGljOwogIGZvbnQtd2VpZ2h0OiA3MDA7CiAgc3JjOiBsb2NhbCgnUm9ib3RvIEJvbGQgSXRhbGljJyksIGxvY2FsKCdSb2JvdG8tQm9sZEl0YWxpYycpLCB1cmwoL2ZvbnQtcm9ib3RvL3Q2TmQ0Y2ZQUmhaUDQ0UTVRQWpjQ19acmFSMlRnOHcybHptN2tMTkwwLXcud29mZjIpIGZvcm1hdCgnd29mZjInKTsKICB1bmljb2RlLXJhbmdlOiBVKzA0NjAtMDUyRiwgVSsyMEI0LCBVKzJERTAtMkRGRiwgVStBNjQwLUE2OUY7Cn0KQGZvbnQtZmFjZSB7CiAgZm9udC1mYW1pbHk6ICdSb2JvdG8nOwogIGZvbnQtc3R5bGU6IGl0YWxpYzsKICBmb250LXdlaWdodDogNzAwOwogIHNyYzogbG9jYWwoJ1JvYm90byBCb2xkIEl0YWxpYycpLCBsb2NhbCgnUm9ib3RvLUJvbGRJdGFsaWMnKSwgdXJsKC9mb250LXJvYm90by90Nk5kNGNmUFJoWlA0NFE1UUFqY0N3dF9SbTY5MUxUZWJLZlkyWmtLU21JLndvZmYyKSBmb3JtYXQoJ3dvZmYyJyk7CiAgdW5pY29kZS1yYW5nZTogVSswMzcwLTAzRkY7Cn0KQGZvbnQtZmFjZSB7CiAgZm9udC1mYW1pbHk6ICdSb2JvdG8nOwogIGZvbnQtc3R5bGU6IGl0YWxpYzsKICBmb250LXdlaWdodDogNzAwOwogIHNyYzogbG9jYWwoJ1JvYm90byBCb2xkIEl0YWxpYycpLCBsb2NhbCgnUm9ib3RvLUJvbGRJdGFsaWMnKSwgdXJsKC9mb250LXJvYm90by90Nk5kNGNmUFJoWlA0NFE1UUFqY0MxQlcyNlF4cFNqLV9aS21feFQ0aFd3LndvZmYyKSBmb3JtYXQoJ3dvZmYyJyk7CiAgdW5pY29kZS1yYW5nZTogVSsxRjAwLTFGRkY7Cn0KQGZvbnQtZmFjZSB7CiAgZm9udC1mYW1pbHk6ICdSb2JvdG8nOwogIGZvbnQtc3R5bGU6IGl0YWxpYzsKICBmb250LXdlaWdodDogNzAwOwogIHNyYzogbG9jYWwoJ1JvYm90byBCb2xkIEl0YWxpYycpLCBsb2NhbCgnUm9ib3RvLUJvbGRJdGFsaWMnKSwgdXJsKC9mb250LXJvYm90by90Nk5kNGNmUFJoWlA0NFE1UUFqY0M0Z3A5UThnYllyaHFHbFJhdl9JWGZrLndvZmYyKSBmb3JtYXQoJ3dvZmYyJyk7CiAgdW5pY29kZS1yYW5nZTogVSswMDAwLTAwRkYsIFUrMDEzMSwgVSswMTUyLTAxNTMsIFUrMDJDNiwgVSswMkRBLCBVKzAyREMsIFUrMjAwMC0yMDZGLCBVKzIwNzQsIFUrMjBBQywgVSsyMjEyLCBVKzIyMTU7Cn0KQGZvbnQtZmFjZSB7CiAgZm9udC1mYW1pbHk6ICdSb2JvdG8nOwogIGZvbnQtc3R5bGU6IGl0YWxpYzsKICBmb250LXdlaWdodDogNzAwOwogIHNyYzogbG9jYWwoJ1JvYm90byBCb2xkIEl0YWxpYycpLCBsb2NhbCgnUm9ib3RvLUJvbGRJdGFsaWMnKSwgdXJsKC9mb250LXJvYm90by90Nk5kNGNmUFJoWlA0NFE1UUFqY0M2RThrTTR4V1IxXzFiWVVSUm9qUkdjLndvZmYyKSBmb3JtYXQoJ3dvZmYyJyk7CiAgdW5pY29kZS1yYW5nZTogVSswMTAwLTAyNEYsIFUrMUUwMC0xRUZGLCBVKzIwQTAtMjBBQiwgVSsyMEFELTIwQ0YsIFUrMkM2MC0yQzdGLCBVK0E3MjAtQTdGRjsKfQpAZm9udC1mYWNlIHsKICBmb250LWZhbWlseTogJ1JvYm90byc7CiAgZm9udC1zdHlsZTogaXRhbGljOwogIGZvbnQtd2VpZ2h0OiA3MDA7CiAgc3JjOiBsb2NhbCgnUm9ib3RvIEJvbGQgSXRhbGljJyksIGxvY2FsKCdSb2JvdG8tQm9sZEl0YWxpYycpLCB1cmwoL2ZvbnQtcm9ib3RvL3Q2TmQ0Y2ZQUmhaUDQ0UTVRQWpjQzlEaU5zUjVhLTlPZV9JdnB1OFhXbFkud29mZjIpIGZvcm1hdCgnd29mZjInKTsKICB1bmljb2RlLXJhbmdlOiBVKzAxMDItMDEwMywgVSsxRUEwLTFFRjksIFUrMjBBQjsKfQpAZm9udC1mYWNlIHsKICBmb250LWZhbWlseTogJ1JvYm90byc7CiAgZm9udC1zdHlsZTogaXRhbGljOwogIGZvbnQtd2VpZ2h0OiA0MDA7CiAgc3JjOiBsb2NhbCgnUm9ib3RvIEl0YWxpYycpLCBsb2NhbCgnUm9ib3RvLUl0YWxpYycpLCB1cmwoL2ZvbnQtcm9ib3RvL09wWFVxVG8wVWdRUWhHal9TRmRMV0JrQXo0clluNDdaeTJydmlnV1FmNncud29mZjIpIGZvcm1hdCgnd29mZjInKTsKICB1bmljb2RlLXJhbmdlOiBVKzA0MDAtMDQ1RiwgVSswNDkwLTA0OTEsIFUrMDRCMC0wNEIxLCBVKzIxMTY7Cn0KQGZvbnQtZmFjZSB7CiAgZm9udC1mYW1pbHk6ICdSb2JvdG8nOwogIGZvbnQtc3R5bGU6IGl0YWxpYzsKICBmb250LXdlaWdodDogNDAwOwogIHNyYzogbG9jYWwoJ1JvYm90byBJdGFsaWMnKSwgbG9jYWwoJ1JvYm90by1JdGFsaWMnKSwgdXJsKC9mb250LXJvYm90by9XeHJYSmEwQzNLZHRDN2xNYWZHNGRSa0F6NHJZbjQ3WnkycnZpZ1dRZjZ3LndvZmYyKSBmb3JtYXQoJ3dvZmYyJyk7CiAgdW5pY29kZS1yYW5nZTogVSswNDYwLTA1MkYsIFUrMjBCNCwgVSsyREUwLTJERkYsIFUrQTY0MC1BNjlGOwp9CkBmb250LWZhY2UgewogIGZvbnQtZmFtaWx5OiAnUm9ib3RvJzsKICBmb250LXN0eWxlOiBpdGFsaWM7CiAgZm9udC13ZWlnaHQ6IDQwMDsKICBzcmM6IGxvY2FsKCdSb2JvdG8gSXRhbGljJyksIGxvY2FsKCdSb2JvdG8tSXRhbGljJyksIHVybCgvZm9udC1yb2JvdG8vY0RLaFJhWG5RVE9WYmFveHdkT3I5eGtBejRyWW40N1p5MnJ2aWdXUWY2dy53b2ZmMikgZm9ybWF0KCd3b2ZmMicpOwogIHVuaWNvZGUtcmFuZ2U6IFUrMDM3MC0wM0ZGOwp9CkBmb250LWZhY2UgewogIGZvbnQtZmFtaWx5OiAnUm9ib3RvJzsKICBmb250LXN0eWxlOiBpdGFsaWM7CiAgZm9udC13ZWlnaHQ6IDQwMDsKICBzcmM6IGxvY2FsKCdSb2JvdG8gSXRhbGljJyksIGxvY2FsKCdSb2JvdG8tSXRhbGljJyksIHVybCgvZm9udC1yb2JvdG8vMWhaZjAyUE9BTmgzMmsyVmtnRW9VQmtBejRyWW40N1p5MnJ2aWdXUWY2dy53b2ZmMikgZm9ybWF0KCd3b2ZmMicpOwogIHVuaWNvZGUtcmFuZ2U6IFUrMUYwMC0xRkZGOwp9CkBmb250LWZhY2UgewogIGZvbnQtZmFtaWx5OiAnUm9ib3RvJzsKICBmb250LXN0eWxlOiBpdGFsaWM7CiAgZm9udC13ZWlnaHQ6IDQwMDsKICBzcmM6IGxvY2FsKCdSb2JvdG8gSXRhbGljJyksIGxvY2FsKCdSb2JvdG8tSXRhbGljJyksIHVybCgvZm9udC1yb2JvdG8vdlBjeW5TTDBxSHFfNmRYN2xLVkJ5WFloamJTcHZjNDdlZTZ4Ul84MEhudy53b2ZmMikgZm9ybWF0KCd3b2ZmMicpOwogIHVuaWNvZGUtcmFuZ2U6IFUrMDAwMC0wMEZGLCBVKzAxMzEsIFUrMDE1Mi0wMTUzLCBVKzAyQzYsIFUrMDJEQSwgVSswMkRDLCBVKzIwMDAtMjA2RiwgVSsyMDc0LCBVKzIwQUMsIFUrMjIxMiwgVSsyMjE1Owp9CkBmb250LWZhY2UgewogIGZvbnQtZmFtaWx5OiAnUm9ib3RvJzsKICBmb250LXN0eWxlOiBpdGFsaWM7CiAgZm9udC13ZWlnaHQ6IDQwMDsKICBzcmM6IGxvY2FsKCdSb2JvdG8gSXRhbGljJyksIGxvY2FsKCdSb2JvdG8tSXRhbGljJyksIHVybCgvZm9udC1yb2JvdG8vdlN6dWxmS1NLMExMampmZWF4Y1JFaGtBejRyWW40N1p5MnJ2aWdXUWY2dy53b2ZmMikgZm9ybWF0KCd3b2ZmMicpOwogIHVuaWNvZGUtcmFuZ2U6IFUrMDEwMC0wMjRGLCBVKzFFMDAtMUVGRiwgVSsyMEEwLTIwQUIsIFUrMjBBRC0yMENGLCBVKzJDNjAtMkM3RiwgVStBNzIwLUE3RkY7Cn0KQGZvbnQtZmFjZSB7CiAgZm9udC1mYW1pbHk6ICdSb2JvdG8nOwogIGZvbnQtc3R5bGU6IGl0YWxpYzsKICBmb250LXdlaWdodDogNDAwOwogIHNyYzogbG9jYWwoJ1JvYm90byBJdGFsaWMnKSwgbG9jYWwoJ1JvYm90by1JdGFsaWMnKSwgdXJsKC9mb250LXJvYm90by9LMjNjeFdWVHJJRkQ2REpzRVZpMDdSa0F6NHJZbjQ3WnkycnZpZ1dRZjZ3LndvZmYyKSBmb3JtYXQoJ3dvZmYyJyk7CiAgdW5pY29kZS1yYW5nZTogVSswMTAyLTAxMDMsIFUrMUVBMC0xRUY5LCBVKzIwQUI7Cn0KQGZvbnQtZmFjZSB7CiAgZm9udC1mYW1pbHk6ICdSb2JvdG8nOwogIGZvbnQtc3R5bGU6IG5vcm1hbDsKICBmb250LXdlaWdodDogMzAwOwogIHNyYzogbG9jYWwoJ1JvYm90byBMaWdodCcpLCBsb2NhbCgnUm9ib3RvLUxpZ2h0JyksIHVybCgvZm9udC1yb2JvdG8vRmw0eTBRZE94eXlUSEVHTVhYOGtjWVgwaFZnelpRVWZSRHVaclB2SDNEOC53b2ZmMikgZm9ybWF0KCd3b2ZmMicpOwogIHVuaWNvZGUtcmFuZ2U6IFUrMDQwMC0wNDVGLCBVKzA0OTAtMDQ5MSwgVSswNEIwLTA0QjEsIFUrMjExNjsKfQpAZm9udC1mYWNlIHsKICBmb250LWZhbWlseTogJ1JvYm90byc7CiAgZm9udC1zdHlsZTogbm9ybWFsOwogIGZvbnQtd2VpZ2h0OiAzMDA7CiAgc3JjOiBsb2NhbCgnUm9ib3RvIExpZ2h0JyksIGxvY2FsKCdSb2JvdG8tTGlnaHQnKSwgdXJsKC9mb250LXJvYm90by8wZUM2ZmwwNmx1WEVZV3BCU0p2WENJWDBoVmd6WlFVZlJEdVpyUHZIM0Q4LndvZmYyKSBmb3JtYXQoJ3dvZmYyJyk7CiAgdW5pY29kZS1yYW5nZTogVSswNDYwLTA1MkYsIFUrMjBCNCwgVSsyREUwLTJERkYsIFUrQTY0MC1BNjlGOwp9CkBmb250LWZhY2UgewogIGZvbnQtZmFtaWx5OiAnUm9ib3RvJzsKICBmb250LXN0eWxlOiBub3JtYWw7CiAgZm9udC13ZWlnaHQ6IDMwMDsKICBzcmM6IGxvY2FsKCdSb2JvdG8gTGlnaHQnKSwgbG9jYWwoJ1JvYm90by1MaWdodCcpLCB1cmwoL2ZvbnQtcm9ib3RvL0kzUzF3c2dTZzlZQ3VyVjZQVWtUT1lYMGhWZ3paUVVmUkR1WnJQdkgzRDgud29mZjIpIGZvcm1hdCgnd29mZjInKTsKICB1bmljb2RlLXJhbmdlOiBVKzAzNzAtMDNGRjsKfQpAZm9udC1mYWNlIHsKICBmb250LWZhbWlseTogJ1JvYm90byc7CiAgZm9udC1zdHlsZTogbm9ybWFsOwogIGZvbnQtd2VpZ2h0OiAzMDA7CiAgc3JjOiBsb2NhbCgnUm9ib3RvIExpZ2h0JyksIGxvY2FsKCdSb2JvdG8tTGlnaHQnKSwgdXJsKC9mb250LXJvYm90by8tTDE0SmswNm02cFVIQi01bVhRUW5ZWDBoVmd6WlFVZlJEdVpyUHZIM0Q4LndvZmYyKSBmb3JtYXQoJ3dvZmYyJyk7CiAgdW5pY29kZS1yYW5nZTogVSsxRjAwLTFGRkY7Cn0KQGZvbnQtZmFjZSB7CiAgZm9udC1mYW1pbHk6ICdSb2JvdG8nOwogIGZvbnQtc3R5bGU6IG5vcm1hbDsKICBmb250LXdlaWdodDogMzAwOwogIHNyYzogbG9jYWwoJ1JvYm90byBMaWdodCcpLCBsb2NhbCgnUm9ib3RvLUxpZ2h0JyksIHVybCgvZm9udC1yb2JvdG8vSGdvMTNrLXRmU3BuMHFpMVNGZFVmWkJ3MXhVMXJLcHRKal8wamFuczkyMC53b2ZmMikgZm9ybWF0KCd3b2ZmMicpOwogIHVuaWNvZGUtcmFuZ2U6IFUrMDAwMC0wMEZGLCBVKzAxMzEsIFUrMDE1Mi0wMTUzLCBVKzAyQzYsIFUrMDJEQSwgVSswMkRDLCBVKzIwMDAtMjA2RiwgVSsyMDc0LCBVKzIwQUMsIFUrMjIxMiwgVSsyMjE1Owp9CkBmb250LWZhY2UgewogIGZvbnQtZmFtaWx5OiAnUm9ib3RvJzsKICBmb250LXN0eWxlOiBub3JtYWw7CiAgZm9udC13ZWlnaHQ6IDMwMDsKICBzcmM6IGxvY2FsKCdSb2JvdG8gTGlnaHQnKSwgbG9jYWwoJ1JvYm90by1MaWdodCcpLCB1cmwoL2ZvbnQtcm9ib3RvL1BydTMzcWpTaHBaU21HM3o2Vll3bllYMGhWZ3paUVVmUkR1WnJQdkgzRDgud29mZjIpIGZvcm1hdCgnd29mZjInKTsKICB1bmljb2RlLXJhbmdlOiBVKzAxMDAtMDI0RiwgVSsxRTAwLTFFRkYsIFUrMjBBMC0yMEFCLCBVKzIwQUQtMjBDRiwgVSsyQzYwLTJDN0YsIFUrQTcyMC1BN0ZGOwp9CkBmb250LWZhY2UgewogIGZvbnQtZmFtaWx5OiAnUm9ib3RvJzsKICBmb250LXN0eWxlOiBub3JtYWw7CiAgZm9udC13ZWlnaHQ6IDMwMDsKICBzcmM6IGxvY2FsKCdSb2JvdG8gTGlnaHQnKSwgbG9jYWwoJ1JvYm90by1MaWdodCcpLCB1cmwoL2ZvbnQtcm9ib3RvL05ZRFdCZEQ0Z0lxMjZHNVhZYkhzRklYMGhWZ3paUVVmUkR1WnJQdkgzRDgud29mZjIpIGZvcm1hdCgnd29mZjInKTsKICB1bmljb2RlLXJhbmdlOiBVKzAxMDItMDEwMywgVSsxRUEwLTFFRjksIFUrMjBBQjsKfQpAZm9udC1mYWNlIHsKICBmb250LWZhbWlseTogJ1JvYm90byc7CiAgZm9udC1zdHlsZTogaXRhbGljOwogIGZvbnQtd2VpZ2h0OiAzMDA7CiAgc3JjOiBsb2NhbCgnUm9ib3RvIExpZ2h0IEl0YWxpYycpLCBsb2NhbCgnUm9ib3RvLUxpZ2h0SXRhbGljJyksIHVybCgvZm9udC1yb2JvdG8vN204bDdUbEZPLVMzVmtoSHVSMGF0MTRzWVlkSmc1ZFUycXpKRVZTdXRhMC53b2ZmMikgZm9ybWF0KCd3b2ZmMicpOwogIHVuaWNvZGUtcmFuZ2U6IFUrMDQwMC0wNDVGLCBVKzA0OTAtMDQ5MSwgVSswNEIwLTA0QjEsIFUrMjExNjsKfQpAZm9udC1mYWNlIHsKICBmb250LWZhbWlseTogJ1JvYm90byc7CiAgZm9udC1zdHlsZTogaXRhbGljOwogIGZvbnQtd2VpZ2h0OiAzMDA7CiAgc3JjOiBsb2NhbCgnUm9ib3RvIExpZ2h0IEl0YWxpYycpLCBsb2NhbCgnUm9ib3RvLUxpZ2h0SXRhbGljJyksIHVybCgvZm9udC1yb2JvdG8vN204bDdUbEZPLVMzVmtoSHVSMGF0X1pyYVIyVGc4dzJsem03a0xOTDAtdy53b2ZmMikgZm9ybWF0KCd3b2ZmMicpOwogIHVuaWNvZGUtcmFuZ2U6IFUrMDQ2MC0wNTJGLCBVKzIwQjQsIFUrMkRFMC0yREZGLCBVK0E2NDAtQTY5RjsKfQpAZm9udC1mYWNlIHsKICBmb250LWZhbWlseTogJ1JvYm90byc7CiAgZm9udC1zdHlsZTogaXRhbGljOwogIGZvbnQtd2VpZ2h0OiAzMDA7CiAgc3JjOiBsb2NhbCgnUm9ib3RvIExpZ2h0IEl0YWxpYycpLCBsb2NhbCgnUm9ib3RvLUxpZ2h0SXRhbGljJyksIHVybCgvZm9udC1yb2JvdG8vN204bDdUbEZPLVMzVmtoSHVSMGF0d3RfUm02OTFMVGViS2ZZMlprS1NtSS53b2ZmMikgZm9ybWF0KCd3b2ZmMicpOwogIHVuaWNvZGUtcmFuZ2U6IFUrMDM3MC0wM0ZGOwp9CkBmb250LWZhY2UgewogIGZvbnQtZmFtaWx5OiAnUm9ib3RvJzsKICBmb250LXN0eWxlOiBpdGFsaWM7CiAgZm9udC13ZWlnaHQ6IDMwMDsKICBzcmM6IGxvY2FsKCdSb2JvdG8gTGlnaHQgSXRhbGljJyksIGxvY2FsKCdSb2JvdG8tTGlnaHRJdGFsaWMnKSwgdXJsKC9mb250LXJvYm90by83bThsN1RsRk8tUzNWa2hIdVIwYXQxQlcyNlF4cFNqLV9aS21feFQ0aFd3LndvZmYyKSBmb3JtYXQoJ3dvZmYyJyk7CiAgdW5pY29kZS1yYW5nZTogVSsxRjAwLTFGRkY7Cn0KQGZvbnQtZmFjZSB7CiAgZm9udC1mYW1pbHk6ICdSb2JvdG8nOwogIGZvbnQtc3R5bGU6IGl0YWxpYzsKICBmb250LXdlaWdodDogMzAwOwogIHNyYzogbG9jYWwoJ1JvYm90byBMaWdodCBJdGFsaWMnKSwgbG9jYWwoJ1JvYm90by1MaWdodEl0YWxpYycpLCB1cmwoL2ZvbnQtcm9ib3RvLzdtOGw3VGxGTy1TM1ZraEh1UjBhdDRncDlROGdiWXJocUdsUmF2X0lYZmsud29mZjIpIGZvcm1hdCgnd29mZjInKTsKICB1bmljb2RlLXJhbmdlOiBVKzAwMDAtMDBGRiwgVSswMTMxLCBVKzAxNTItMDE1MywgVSswMkM2LCBVKzAyREEsIFUrMDJEQywgVSsyMDAwLTIwNkYsIFUrMjA3NCwgVSsyMEFDLCBVKzIyMTIsIFUrMjIxNTsKfQpAZm9udC1mYWNlIHsKICBmb250LWZhbWlseTogJ1JvYm90byc7CiAgZm9udC1zdHlsZTogaXRhbGljOwogIGZvbnQtd2VpZ2h0OiAzMDA7CiAgc3JjOiBsb2NhbCgnUm9ib3RvIExpZ2h0IEl0YWxpYycpLCBsb2NhbCgnUm9ib3RvLUxpZ2h0SXRhbGljJyksIHVybCgvZm9udC1yb2JvdG8vN204bDdUbEZPLVMzVmtoSHVSMGF0NkU4a000eFdSMV8xYllVUlJvalJHYy53b2ZmMikgZm9ybWF0KCd3b2ZmMicpOwogIHVuaWNvZGUtcmFuZ2U6IFUrMDEwMC0wMjRGLCBVKzFFMDAtMUVGRiwgVSsyMEEwLTIwQUIsIFUrMjBBRC0yMENGLCBVKzJDNjAtMkM3RiwgVStBNzIwLUE3RkY7Cn0KQGZvbnQtZmFjZSB7CiAgZm9udC1mYW1pbHk6ICdSb2JvdG8nOwogIGZvbnQtc3R5bGU6IGl0YWxpYzsKICBmb250LXdlaWdodDogMzAwOwogIHNyYzogbG9jYWwoJ1JvYm90byBMaWdodCBJdGFsaWMnKSwgbG9jYWwoJ1JvYm90by1MaWdodEl0YWxpYycpLCB1cmwoL2ZvbnQtcm9ib3RvLzdtOGw3VGxGTy1TM1ZraEh1UjBhdDlEaU5zUjVhLTlPZV9JdnB1OFhXbFkud29mZjIpIGZvcm1hdCgnd29mZjInKTsKICB1bmljb2RlLXJhbmdlOiBVKzAxMDItMDEwMywgVSsxRUEwLTFFRjksIFUrMjBBQjsKfQpAZm9udC1mYWNlIHsKICBmb250LWZhbWlseTogJ1JvYm90byc7CiAgZm9udC1zdHlsZTogbm9ybWFsOwogIGZvbnQtd2VpZ2h0OiA1MDA7CiAgc3JjOiBsb2NhbCgnUm9ib3RvIE1lZGl1bScpLCBsb2NhbCgnUm9ib3RvLU1lZGl1bScpLCB1cmwoL2ZvbnQtcm9ib3RvL29IaTMwa3dRV3ZwQ1dxQWh6SGNDU0lYMGhWZ3paUVVmUkR1WnJQdkgzRDgud29mZjIpIGZvcm1hdCgnd29mZjInKTsKICB1bmljb2RlLXJhbmdlOiBVKzA0MDAtMDQ1RiwgVSswNDkwLTA0OTEsIFUrMDRCMC0wNEIxLCBVKzIxMTY7Cn0KQGZvbnQtZmFjZSB7CiAgZm9udC1mYW1pbHk6ICdSb2JvdG8nOwogIGZvbnQtc3R5bGU6IG5vcm1hbDsKICBmb250LXdlaWdodDogNTAwOwogIHNyYzogbG9jYWwoJ1JvYm90byBNZWRpdW0nKSwgbG9jYWwoJ1JvYm90by1NZWRpdW0nKSwgdXJsKC9mb250LXJvYm90by9aTHFLZWVsWWJBVEc2MEVwWkJTRHk0WDBoVmd6WlFVZlJEdVpyUHZIM0Q4LndvZmYyKSBmb3JtYXQoJ3dvZmYyJyk7CiAgdW5pY29kZS1yYW5nZTogVSswNDYwLTA1MkYsIFUrMjBCNCwgVSsyREUwLTJERkYsIFUrQTY0MC1BNjlGOwp9CkBmb250LWZhY2UgewogIGZvbnQtZmFtaWx5OiAnUm9ib3RvJzsKICBmb250LXN0eWxlOiBub3JtYWw7CiAgZm9udC13ZWlnaHQ6IDUwMDsKICBzcmM6IGxvY2FsKCdSb2JvdG8gTWVkaXVtJyksIGxvY2FsKCdSb2JvdG8tTWVkaXVtJyksIHVybCgvZm9udC1yb2JvdG8vbXg5VWNrNnVCNjNWSUtGWW5FTVhyWVgwaFZnelpRVWZSRHVaclB2SDNEOC53b2ZmMikgZm9ybWF0KCd3b2ZmMicpOwogIHVuaWNvZGUtcmFuZ2U6IFUrMDM3MC0wM0ZGOwp9CkBmb250LWZhY2UgewogIGZvbnQtZmFtaWx5OiAnUm9ib3RvJzsKICBmb250LXN0eWxlOiBub3JtYWw7CiAgZm9udC13ZWlnaHQ6IDUwMDsKICBzcmM6IGxvY2FsKCdSb2JvdG8gTWVkaXVtJyksIGxvY2FsKCdSb2JvdG8tTWVkaXVtJyksIHVybCgvZm9udC1yb2JvdG8vckd2SGRKbnIybDc1cWIwWU5EOU55SVgwaFZnelpRVWZSRHVaclB2SDNEOC53b2ZmMikgZm9ybWF0KCd3b2ZmMicpOwogIHVuaWNvZGUtcmFuZ2U6IFUrMUYwMC0xRkZGOwp9CkBmb250LWZhY2UgewogIGZvbnQtZmFtaWx5OiAnUm9ib3RvJzsKICBmb250LXN0eWxlOiBub3JtYWw7CiAgZm9udC13ZWlnaHQ6IDUwMDsKICBzcmM6IGxvY2FsKCdSb2JvdG8gTWVkaXVtJyksIGxvY2FsKCdSb2JvdG8tTWVkaXVtJyksIHVybCgvZm9udC1yb2JvdG8vUnhaSmRuemVvM1I1elNleGdlOFVVWkJ3MXhVMXJLcHRKal8wamFuczkyMC53b2ZmMikgZm9ybWF0KCd3b2ZmMicpOwogIHVuaWNvZGUtcmFuZ2U6IFUrMDAwMC0wMEZGLCBVKzAxMzEsIFUrMDE1Mi0wMTUzLCBVKzAyQzYsIFUrMDJEQSwgVSswMkRDLCBVKzIwMDAtMjA2RiwgVSsyMDc0LCBVKzIwQUMsIFUrMjIxMiwgVSsyMjE1Owp9CkBmb250LWZhY2UgewogIGZvbnQtZmFtaWx5OiAnUm9ib3RvJzsKICBmb250LXN0eWxlOiBub3JtYWw7CiAgZm9udC13ZWlnaHQ6IDUwMDsKICBzcmM6IGxvY2FsKCdSb2JvdG8gTWVkaXVtJyksIGxvY2FsKCdSb2JvdG8tTWVkaXVtJyksIHVybCgvZm9udC1yb2JvdG8vb09lRndaTmxyVGVmekxZbWxWVjFVSVgwaFZnelpRVWZSRHVaclB2SDNEOC53b2ZmMikgZm9ybWF0KCd3b2ZmMicpOwogIHVuaWNvZGUtcmFuZ2U6IFUrMDEwMC0wMjRGLCBVKzFFMDAtMUVGRiwgVSsyMEEwLTIwQUIsIFUrMjBBRC0yMENGLCBVKzJDNjAtMkM3RiwgVStBNzIwLUE3RkY7Cn0KQGZvbnQtZmFjZSB7CiAgZm9udC1mYW1pbHk6ICdSb2JvdG8nOwogIGZvbnQtc3R5bGU6IG5vcm1hbDsKICBmb250LXdlaWdodDogNTAwOwogIHNyYzogbG9jYWwoJ1JvYm90byBNZWRpdW0nKSwgbG9jYWwoJ1JvYm90by1NZWRpdW0nKSwgdXJsKC9mb250LXJvYm90by9tYm1ocHJNSDY5Wmk2ZUVQQllWRmhZWDBoVmd6WlFVZlJEdVpyUHZIM0Q4LndvZmYyKSBmb3JtYXQoJ3dvZmYyJyk7CiAgdW5pY29kZS1yYW5nZTogVSswMTAyLTAxMDMsIFUrMUVBMC0xRUY5LCBVKzIwQUI7Cn0KQGZvbnQtZmFjZSB7CiAgZm9udC1mYW1pbHk6ICdSb2JvdG8nOwogIGZvbnQtc3R5bGU6IGl0YWxpYzsKICBmb250LXdlaWdodDogNTAwOwogIHNyYzogbG9jYWwoJ1JvYm90byBNZWRpdW0gSXRhbGljJyksIGxvY2FsKCdSb2JvdG8tTWVkaXVtSXRhbGljJyksIHVybCgvZm9udC1yb2JvdG8vT0xmZkdCVGFGMFhGT1cxZ251SEYwVjRzWVlkSmc1ZFUycXpKRVZTdXRhMC53b2ZmMikgZm9ybWF0KCd3b2ZmMicpOwogIHVuaWNvZGUtcmFuZ2U6IFUrMDQwMC0wNDVGLCBVKzA0OTAtMDQ5MSwgVSswNEIwLTA0QjEsIFUrMjExNjsKfQpAZm9udC1mYWNlIHsKICBmb250LWZhbWlseTogJ1JvYm90byc7CiAgZm9udC1zdHlsZTogaXRhbGljOwogIGZvbnQtd2VpZ2h0OiA1MDA7CiAgc3JjOiBsb2NhbCgnUm9ib3RvIE1lZGl1bSBJdGFsaWMnKSwgbG9jYWwoJ1JvYm90by1NZWRpdW1JdGFsaWMnKSwgdXJsKC9mb250LXJvYm90by9PTGZmR0JUYUYwWEZPVzFnbnVIRjBmWnJhUjJUZzh3Mmx6bTdrTE5MMC13LndvZmYyKSBmb3JtYXQoJ3dvZmYyJyk7CiAgdW5pY29kZS1yYW5nZTogVSswNDYwLTA1MkYsIFUrMjBCNCwgVSsyREUwLTJERkYsIFUrQTY0MC1BNjlGOwp9CkBmb250LWZhY2UgewogIGZvbnQtZmFtaWx5OiAnUm9ib3RvJzsKICBmb250LXN0eWxlOiBpdGFsaWM7CiAgZm9udC13ZWlnaHQ6IDUwMDsKICBzcmM6IGxvY2FsKCdSb2JvdG8gTWVkaXVtIEl0YWxpYycpLCBsb2NhbCgnUm9ib3RvLU1lZGl1bUl0YWxpYycpLCB1cmwoL2ZvbnQtcm9ib3RvL09MZmZHQlRhRjBYRk9XMWdudUhGMFF0X1JtNjkxTFRlYktmWTJaa0tTbUkud29mZjIpIGZvcm1hdCgnd29mZjInKTsKICB1bmljb2RlLXJhbmdlOiBVKzAzNzAtMDNGRjsKfQpAZm9udC1mYWNlIHsKICBmb250LWZhbWlseTogJ1JvYm90byc7CiAgZm9udC1zdHlsZTogaXRhbGljOwogIGZvbnQtd2VpZ2h0OiA1MDA7CiAgc3JjOiBsb2NhbCgnUm9ib3RvIE1lZGl1bSBJdGFsaWMnKSwgbG9jYWwoJ1JvYm90by1NZWRpdW1JdGFsaWMnKSwgdXJsKC9mb250LXJvYm90by9PTGZmR0JUYUYwWEZPVzFnbnVIRjBWQlcyNlF4cFNqLV9aS21feFQ0aFd3LndvZmYyKSBmb3JtYXQoJ3dvZmYyJyk7CiAgdW5pY29kZS1yYW5nZTogVSsxRjAwLTFGRkY7Cn0KQGZvbnQtZmFjZSB7CiAgZm9udC1mYW1pbHk6ICdSb2JvdG8nOwogIGZvbnQtc3R5bGU6IGl0YWxpYzsKICBmb250LXdlaWdodDogNTAwOwogIHNyYzogbG9jYWwoJ1JvYm90byBNZWRpdW0gSXRhbGljJyksIGxvY2FsKCdSb2JvdG8tTWVkaXVtSXRhbGljJyksIHVybCgvZm9udC1yb2JvdG8vT0xmZkdCVGFGMFhGT1cxZ251SEYwWWdwOVE4Z2JZcmhxR2xSYXZfSVhmay53b2ZmMikgZm9ybWF0KCd3b2ZmMicpOwogIHVuaWNvZGUtcmFuZ2U6IFUrMDAwMC0wMEZGLCBVKzAxMzEsIFUrMDE1Mi0wMTUzLCBVKzAyQzYsIFUrMDJEQSwgVSswMkRDLCBVKzIwMDAtMjA2RiwgVSsyMDc0LCBVKzIwQUMsIFUrMjIxMiwgVSsyMjE1Owp9CkBmb250LWZhY2UgewogIGZvbnQtZmFtaWx5OiAnUm9ib3RvJzsKICBmb250LXN0eWxlOiBpdGFsaWM7CiAgZm9udC13ZWlnaHQ6IDUwMDsKICBzcmM6IGxvY2FsKCdSb2JvdG8gTWVkaXVtIEl0YWxpYycpLCBsb2NhbCgnUm9ib3RvLU1lZGl1bUl0YWxpYycpLCB1cmwoL2ZvbnQtcm9ib3RvL09MZmZHQlRhRjBYRk9XMWdudUhGMGFFOGtNNHhXUjFfMWJZVVJSb2pSR2Mud29mZjIpIGZvcm1hdCgnd29mZjInKTsKICB1bmljb2RlLXJhbmdlOiBVKzAxMDAtMDI0RiwgVSsxRTAwLTFFRkYsIFUrMjBBMC0yMEFCLCBVKzIwQUQtMjBDRiwgVSsyQzYwLTJDN0YsIFUrQTcyMC1BN0ZGOwp9CkBmb250LWZhY2UgewogIGZvbnQtZmFtaWx5OiAnUm9ib3RvJzsKICBmb250LXN0eWxlOiBpdGFsaWM7CiAgZm9udC13ZWlnaHQ6IDUwMDsKICBzcmM6IGxvY2FsKCdSb2JvdG8gTWVkaXVtIEl0YWxpYycpLCBsb2NhbCgnUm9ib3RvLU1lZGl1bUl0YWxpYycpLCB1cmwoL2ZvbnQtcm9ib3RvL09MZmZHQlRhRjBYRk9XMWdudUhGMGREaU5zUjVhLTlPZV9JdnB1OFhXbFkud29mZjIpIGZvcm1hdCgnd29mZjInKTsKICB1bmljb2RlLXJhbmdlOiBVKzAxMDItMDEwMywgVSsxRUEwLTFFRjksIFUrMjBBQjsKfQpAZm9udC1mYWNlIHsKICBmb250LWZhbWlseTogJ1JvYm90byBNb25vJzsKICBmb250LXN0eWxlOiBub3JtYWw7CiAgZm9udC13ZWlnaHQ6IDQwMDsKICBzcmM6IGxvY2FsKCdSb2JvdG8gTW9ubycpLCBsb2NhbCgnUm9ib3RvTW9uby1SZWd1bGFyJyksIHVybCgvZm9udC1yb2JvdG8vaE1xUE5Mc3VfZHl3TWE0Q19ERXBZMTRzWVlkSmc1ZFUycXpKRVZTdXRhMC53b2ZmMikgZm9ybWF0KCd3b2ZmMicpOwogIHVuaWNvZGUtcmFuZ2U6IFUrMDQwMC0wNDVGLCBVKzA0OTAtMDQ5MSwgVSswNEIwLTA0QjEsIFUrMjExNjsKfQpAZm9udC1mYWNlIHsKICBmb250LWZhbWlseTogJ1JvYm90byBNb25vJzsKICBmb250LXN0eWxlOiBub3JtYWw7CiAgZm9udC13ZWlnaHQ6IDQwMDsKICBzcmM6IGxvY2FsKCdSb2JvdG8gTW9ubycpLCBsb2NhbCgnUm9ib3RvTW9uby1SZWd1bGFyJyksIHVybCgvZm9udC1yb2JvdG8vaE1xUE5Mc3VfZHl3TWE0Q19ERXBZX1pyYVIyVGc4dzJsem03a0xOTDAtdy53b2ZmMikgZm9ybWF0KCd3b2ZmMicpOwogIHVuaWNvZGUtcmFuZ2U6IFUrMDQ2MC0wNTJGLCBVKzIwQjQsIFUrMkRFMC0yREZGLCBVK0E2NDAtQTY5RjsKfQpAZm9udC1mYWNlIHsKICBmb250LWZhbWlseTogJ1JvYm90byBNb25vJzsKICBmb250LXN0eWxlOiBub3JtYWw7CiAgZm9udC13ZWlnaHQ6IDQwMDsKICBzcmM6IGxvY2FsKCdSb2JvdG8gTW9ubycpLCBsb2NhbCgnUm9ib3RvTW9uby1SZWd1bGFyJyksIHVybCgvZm9udC1yb2JvdG8vaE1xUE5Mc3VfZHl3TWE0Q19ERXBZd3RfUm02OTFMVGViS2ZZMlprS1NtSS53b2ZmMikgZm9ybWF0KCd3b2ZmMicpOwogIHVuaWNvZGUtcmFuZ2U6IFUrMDM3MC0wM0ZGOwp9CkBmb250LWZhY2UgewogIGZvbnQtZmFtaWx5OiAnUm9ib3RvIE1vbm8nOwogIGZvbnQtc3R5bGU6IG5vcm1hbDsKICBmb250LXdlaWdodDogNDAwOwogIHNyYzogbG9jYWwoJ1JvYm90byBNb25vJyksIGxvY2FsKCdSb2JvdG9Nb25vLVJlZ3VsYXInKSwgdXJsKC9mb250LXJvYm90by9oTXFQTkxzdV9keXdNYTRDX0RFcFkxQlcyNlF4cFNqLV9aS21feFQ0aFd3LndvZmYyKSBmb3JtYXQoJ3dvZmYyJyk7CiAgdW5pY29kZS1yYW5nZTogVSsxRjAwLTFGRkY7Cn0KQGZvbnQtZmFjZSB7CiAgZm9udC1mYW1pbHk6ICdSb2JvdG8gTW9ubyc7CiAgZm9udC1zdHlsZTogbm9ybWFsOwogIGZvbnQtd2VpZ2h0OiA0MDA7CiAgc3JjOiBsb2NhbCgnUm9ib3RvIE1vbm8nKSwgbG9jYWwoJ1JvYm90b01vbm8tUmVndWxhcicpLCB1cmwoL2ZvbnQtcm9ib3RvL2hNcVBOTHN1X2R5d01hNENfREVwWTRncDlROGdiWXJocUdsUmF2X0lYZmsud29mZjIpIGZvcm1hdCgnd29mZjInKTsKICB1bmljb2RlLXJhbmdlOiBVKzAwMDAtMDBGRiwgVSswMTMxLCBVKzAxNTItMDE1MywgVSswMkM2LCBVKzAyREEsIFUrMDJEQywgVSsyMDAwLTIwNkYsIFUrMjA3NCwgVSsyMEFDLCBVKzIyMTIsIFUrMjIxNTsKfQpAZm9udC1mYWNlIHsKICBmb250LWZhbWlseTogJ1JvYm90byBNb25vJzsKICBmb250LXN0eWxlOiBub3JtYWw7CiAgZm9udC13ZWlnaHQ6IDQwMDsKICBzcmM6IGxvY2FsKCdSb2JvdG8gTW9ubycpLCBsb2NhbCgnUm9ib3RvTW9uby1SZWd1bGFyJyksIHVybCgvZm9udC1yb2JvdG8vaE1xUE5Mc3VfZHl3TWE0Q19ERXBZNkU4a000eFdSMV8xYllVUlJvalJHYy53b2ZmMikgZm9ybWF0KCd3b2ZmMicpOwogIHVuaWNvZGUtcmFuZ2U6IFUrMDEwMC0wMjRGLCBVKzFFMDAtMUVGRiwgVSsyMEEwLTIwQUIsIFUrMjBBRC0yMENGLCBVKzJDNjAtMkM3RiwgVStBNzIwLUE3RkY7Cn0KQGZvbnQtZmFjZSB7CiAgZm9udC1mYW1pbHk6ICdSb2JvdG8gTW9ubyc7CiAgZm9udC1zdHlsZTogbm9ybWFsOwogIGZvbnQtd2VpZ2h0OiA0MDA7CiAgc3JjOiBsb2NhbCgnUm9ib3RvIE1vbm8nKSwgbG9jYWwoJ1JvYm90b01vbm8tUmVndWxhcicpLCB1cmwoL2ZvbnQtcm9ib3RvL2hNcVBOTHN1X2R5d01hNENfREVwWTlEaU5zUjVhLTlPZV9JdnB1OFhXbFkud29mZjIpIGZvcm1hdCgnd29mZjInKTsKICB1bmljb2RlLXJhbmdlOiBVKzAxMDItMDEwMywgVSsxRUEwLTFFRjksIFUrMjBBQjsKfQpAZm9udC1mYWNlIHsKICBmb250LWZhbWlseTogJ1JvYm90byBNb25vJzsKICBmb250LXN0eWxlOiBub3JtYWw7CiAgZm9udC13ZWlnaHQ6IDcwMDsKICBzcmM6IGxvY2FsKCdSb2JvdG8gTW9ubyBCb2xkJyksIGxvY2FsKCdSb2JvdG9Nb25vLUJvbGQnKSwgdXJsKC9mb250LXJvYm90by9ONGR1VmM5QzU4dXdQaVk4XzU5RnoxeC1NMUkxdzVPTWlxblZGOHhCTGhVLndvZmYyKSBmb3JtYXQoJ3dvZmYyJyk7CiAgdW5pY29kZS1yYW5nZTogVSswNDAwLTA0NUYsIFUrMDQ5MC0wNDkxLCBVKzA0QjAtMDRCMSwgVSsyMTE2Owp9CkBmb250LWZhY2UgewogIGZvbnQtZmFtaWx5OiAnUm9ib3RvIE1vbm8nOwogIGZvbnQtc3R5bGU6IG5vcm1hbDsKICBmb250LXdlaWdodDogNzAwOwogIHNyYzogbG9jYWwoJ1JvYm90byBNb25vIEJvbGQnKSwgbG9jYWwoJ1JvYm90b01vbm8tQm9sZCcpLCB1cmwoL2ZvbnQtcm9ib3RvL040ZHVWYzlDNTh1d1BpWThfNTlGendYYUFYdXA1bVpsZks2eFJMcmhzY28ud29mZjIpIGZvcm1hdCgnd29mZjInKTsKICB1bmljb2RlLXJhbmdlOiBVKzA0NjAtMDUyRiwgVSsyMEI0LCBVKzJERTAtMkRGRiwgVStBNjQwLUE2OUY7Cn0KQGZvbnQtZmFjZSB7CiAgZm9udC1mYW1pbHk6ICdSb2JvdG8gTW9ubyc7CiAgZm9udC1zdHlsZTogbm9ybWFsOwogIGZvbnQtd2VpZ2h0OiA3MDA7CiAgc3JjOiBsb2NhbCgnUm9ib3RvIE1vbm8gQm9sZCcpLCBsb2NhbCgnUm9ib3RvTW9uby1Cb2xkJyksIHVybCgvZm9udC1yb2JvdG8vTjRkdVZjOUM1OHV3UGlZOF81OUZ6d242V3F4by14d3hpbERYUFU4Y2hWVS53b2ZmMikgZm9ybWF0KCd3b2ZmMicpOwogIHVuaWNvZGUtcmFuZ2U6IFUrMDM3MC0wM0ZGOwp9CkBmb250LWZhY2UgewogIGZvbnQtZmFtaWx5OiAnUm9ib3RvIE1vbm8nOwogIGZvbnQtc3R5bGU6IG5vcm1hbDsKICBmb250LXdlaWdodDogNzAwOwogIHNyYzogbG9jYWwoJ1JvYm90byBNb25vIEJvbGQnKSwgbG9jYWwoJ1JvYm90b01vbm8tQm9sZCcpLCB1cmwoL2ZvbnQtcm9ib3RvL040ZHVWYzlDNTh1d1BpWThfNTlGejFUN2FKTEs2bktwbjM2SU13VGNNTWMud29mZjIpIGZvcm1hdCgnd29mZjInKTsKICB1bmljb2RlLXJhbmdlOiBVKzFGMDAtMUZGRjsKfQpAZm9udC1mYWNlIHsKICBmb250LWZhbWlseTogJ1JvYm90byBNb25vJzsKICBmb250LXN0eWxlOiBub3JtYWw7CiAgZm9udC13ZWlnaHQ6IDcwMDsKICBzcmM6IGxvY2FsKCdSb2JvdG8gTW9ubyBCb2xkJyksIGxvY2FsKCdSb2JvdG9Nb25vLUJvbGQnKSwgdXJsKC9mb250LXJvYm90by9ONGR1VmM5QzU4dXdQaVk4XzU5RnpfNzlfWnVVeENpZ00yRGVzcFRuRmF3LndvZmYyKSBmb3JtYXQoJ3dvZmYyJyk7CiAgdW5pY29kZS1yYW5nZTogVSswMDAwLTAwRkYsIFUrMDEzMSwgVSswMTUyLTAxNTMsIFUrMDJDNiwgVSswMkRBLCBVKzAyREMsIFUrMjAwMC0yMDZGLCBVKzIwNzQsIFUrMjBBQywgVSsyMjEyLCBVKzIyMTU7Cn0KQGZvbnQtZmFjZSB7CiAgZm9udC1mYW1pbHk6ICdSb2JvdG8gTW9ubyc7CiAgZm9udC1zdHlsZTogbm9ybWFsOwogIGZvbnQtd2VpZ2h0OiA3MDA7CiAgc3JjOiBsb2NhbCgnUm9ib3RvIE1vbm8gQm9sZCcpLCBsb2NhbCgnUm9ib3RvTW9uby1Cb2xkJyksIHVybCgvZm9udC1yb2JvdG8vTjRkdVZjOUM1OHV3UGlZOF81OUZ6NGdkOU9FUFVDTjNBZFlXMGU4dGF0NC53b2ZmMikgZm9ybWF0KCd3b2ZmMicpOwogIHVuaWNvZGUtcmFuZ2U6IFUrMDEwMC0wMjRGLCBVKzFFMDAtMUVGRiwgVSsyMEEwLTIwQUIsIFUrMjBBRC0yMENGLCBVKzJDNjAtMkM3RiwgVStBNzIwLUE3RkY7Cn0KQGZvbnQtZmFjZSB7CiAgZm9udC1mYW1pbHk6ICdSb2JvdG8gTW9ubyc7CiAgZm9udC1zdHlsZTogbm9ybWFsOwogIGZvbnQtd2VpZ2h0OiA3MDA7CiAgc3JjOiBsb2NhbCgnUm9ib3RvIE1vbm8gQm9sZCcpLCBsb2NhbCgnUm9ib3RvTW9uby1Cb2xkJyksIHVybCgvZm9udC1yb2JvdG8vTjRkdVZjOUM1OHV3UGlZOF81OUZ6OGJJUVNZWm5XTGFXQzlRTkNwVEtfVS53b2ZmMikgZm9ybWF0KCd3b2ZmMicpOwogIHVuaWNvZGUtcmFuZ2U6IFUrMDEwMi0wMTAzLCBVKzFFQTAtMUVGOSwgVSsyMEFCOwp9Cjwvc3R5bGU+CgoKCjxzdHlsZT4ubWF0LWJhZGdlLWNvbnRlbnR7Zm9udC13ZWlnaHQ6NjAwO2ZvbnQtc2l6ZToxMnB4O2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZn0ubWF0LWJhZGdlLXNtYWxsIC5tYXQtYmFkZ2UtY29udGVudHtmb250LXNpemU6OXB4fS5tYXQtYmFkZ2UtbGFyZ2UgLm1hdC1iYWRnZS1jb250ZW50e2ZvbnQtc2l6ZToyNHB4fS5tYXQtaDEsLm1hdC1oZWFkbGluZSwubWF0LXR5cG9ncmFwaHkgaDF7Zm9udDo0MDAgMjRweC8zMnB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtsZXR0ZXItc3BhY2luZzpub3JtYWw7bWFyZ2luOjAgMCAxNnB4fS5tYXQtaDIsLm1hdC10aXRsZSwubWF0LXR5cG9ncmFwaHkgaDJ7Zm9udDo1MDAgMjBweC8zMnB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtsZXR0ZXItc3BhY2luZzpub3JtYWw7bWFyZ2luOjAgMCAxNnB4fS5tYXQtaDMsLm1hdC1zdWJoZWFkaW5nLTIsLm1hdC10eXBvZ3JhcGh5IGgze2ZvbnQ6NDAwIDE2cHgvMjhweCBSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7bGV0dGVyLXNwYWNpbmc6bm9ybWFsO21hcmdpbjowIDAgMTZweH0ubWF0LWg0LC5tYXQtc3ViaGVhZGluZy0xLC5tYXQtdHlwb2dyYXBoeSBoNHtmb250OjQwMCAxNXB4LzI0cHggUm9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2xldHRlci1zcGFjaW5nOm5vcm1hbDttYXJnaW46MCAwIDE2cHh9Lm1hdC1oNSwubWF0LXR5cG9ncmFwaHkgaDV7Zm9udDo0MDAgY2FsYygxNHB4ICogMC44MykvMjBweCBSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7bWFyZ2luOjAgMCAxMnB4fS5tYXQtaDYsLm1hdC10eXBvZ3JhcGh5IGg2e2ZvbnQ6NDAwIGNhbGMoMTRweCAqIDAuNjcpLzIwcHggUm9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO21hcmdpbjowIDAgMTJweH0ubWF0LWJvZHktc3Ryb25nLC5tYXQtYm9keS0ye2ZvbnQ6NTAwIDE0cHgvMjRweCBSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7bGV0dGVyLXNwYWNpbmc6bm9ybWFsfS5tYXQtYm9keSwubWF0LWJvZHktMSwubWF0LXR5cG9ncmFwaHl7Zm9udDo0MDAgMTRweC8yMHB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtsZXR0ZXItc3BhY2luZzpub3JtYWx9Lm1hdC1ib2R5IHAsLm1hdC1ib2R5LTEgcCwubWF0LXR5cG9ncmFwaHkgcHttYXJnaW46MCAwIDEycHh9Lm1hdC1zbWFsbCwubWF0LWNhcHRpb257Zm9udDo0MDAgMTJweC8yMHB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtsZXR0ZXItc3BhY2luZzpub3JtYWx9Lm1hdC1kaXNwbGF5LTQsLm1hdC10eXBvZ3JhcGh5IC5tYXQtZGlzcGxheS00e2ZvbnQ6MzAwIDExMnB4LzExMnB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtsZXR0ZXItc3BhY2luZzotMC4wNWVtO21hcmdpbjowIDAgNTZweH0ubWF0LWRpc3BsYXktMywubWF0LXR5cG9ncmFwaHkgLm1hdC1kaXNwbGF5LTN7Zm9udDo0MDAgNTZweC81NnB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtsZXR0ZXItc3BhY2luZzotMC4wMmVtO21hcmdpbjowIDAgNjRweH0ubWF0LWRpc3BsYXktMiwubWF0LXR5cG9ncmFwaHkgLm1hdC1kaXNwbGF5LTJ7Zm9udDo0MDAgNDVweC80OHB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtsZXR0ZXItc3BhY2luZzotMC4wMDVlbTttYXJnaW46MCAwIDY0cHh9Lm1hdC1kaXNwbGF5LTEsLm1hdC10eXBvZ3JhcGh5IC5tYXQtZGlzcGxheS0xe2ZvbnQ6NDAwIDM0cHgvNDBweCBSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7bGV0dGVyLXNwYWNpbmc6bm9ybWFsO21hcmdpbjowIDAgNjRweH0ubWF0LWJvdHRvbS1zaGVldC1jb250YWluZXJ7Zm9udDo0MDAgMTRweC8yMHB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtsZXR0ZXItc3BhY2luZzpub3JtYWx9Lm1hdC1idXR0b24sLm1hdC1yYWlzZWQtYnV0dG9uLC5tYXQtaWNvbi1idXR0b24sLm1hdC1zdHJva2VkLWJ1dHRvbiwubWF0LWZsYXQtYnV0dG9uLC5tYXQtZmFiLC5tYXQtbWluaS1mYWJ7Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2ZvbnQtc2l6ZToxNHB4O2ZvbnQtd2VpZ2h0OjUwMH0ubWF0LWJ1dHRvbi10b2dnbGV7Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmfS5tYXQtY2FyZHtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWZ9Lm1hdC1jYXJkLXRpdGxle2ZvbnQtc2l6ZToyNHB4O2ZvbnQtd2VpZ2h0OjUwMH0ubWF0LWNhcmQtaGVhZGVyIC5tYXQtY2FyZC10aXRsZXtmb250LXNpemU6MjBweH0ubWF0LWNhcmQtc3VidGl0bGUsLm1hdC1jYXJkLWNvbnRlbnR7Zm9udC1zaXplOjE0cHh9Lm1hdC1jaGVja2JveHtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWZ9Lm1hdC1jaGVja2JveC1sYXlvdXQgLm1hdC1jaGVja2JveC1sYWJlbHtsaW5lLWhlaWdodDoyNHB4fS5tYXQtY2hpcHtmb250LXNpemU6MTRweDtmb250LXdlaWdodDo1MDB9Lm1hdC1jaGlwIC5tYXQtY2hpcC10cmFpbGluZy1pY29uLm1hdC1pY29uLC5tYXQtY2hpcCAubWF0LWNoaXAtcmVtb3ZlLm1hdC1pY29ue2ZvbnQtc2l6ZToxOHB4fS5tYXQtdGFibGV7Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmfS5tYXQtaGVhZGVyLWNlbGx7Zm9udC1zaXplOjEycHg7Zm9udC13ZWlnaHQ6NTAwfS5tYXQtY2VsbCwubWF0LWZvb3Rlci1jZWxse2ZvbnQtc2l6ZToxNHB4fS5tYXQtY2FsZW5kYXJ7Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmfS5tYXQtY2FsZW5kYXItYm9keXtmb250LXNpemU6MTNweH0ubWF0LWNhbGVuZGFyLWJvZHktbGFiZWwsLm1hdC1jYWxlbmRhci1wZXJpb2QtYnV0dG9ue2ZvbnQtc2l6ZToxNHB4O2ZvbnQtd2VpZ2h0OjUwMH0ubWF0LWNhbGVuZGFyLXRhYmxlLWhlYWRlciB0aHtmb250LXNpemU6MTFweDtmb250LXdlaWdodDo0MDB9Lm1hdC1kaWFsb2ctdGl0bGV7Zm9udDo1MDAgMjBweC8zMnB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtsZXR0ZXItc3BhY2luZzpub3JtYWx9Lm1hdC1leHBhbnNpb24tcGFuZWwtaGVhZGVye2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtmb250LXNpemU6MTVweDtmb250LXdlaWdodDo0MDB9Lm1hdC1leHBhbnNpb24tcGFuZWwtY29udGVudHtmb250OjQwMCAxNHB4LzIwcHggUm9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2xldHRlci1zcGFjaW5nOm5vcm1hbH0ubWF0LWZvcm0tZmllbGR7Zm9udC1zaXplOmluaGVyaXQ7Zm9udC13ZWlnaHQ6NDAwO2xpbmUtaGVpZ2h0OjEuMTI1O2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtsZXR0ZXItc3BhY2luZzpub3JtYWx9Lm1hdC1mb3JtLWZpZWxkLXdyYXBwZXJ7cGFkZGluZy1ib3R0b206MS4zNDM3NWVtfS5tYXQtZm9ybS1maWVsZC1wcmVmaXggLm1hdC1pY29uLC5tYXQtZm9ybS1maWVsZC1zdWZmaXggLm1hdC1pY29ue2ZvbnQtc2l6ZToxNTAlO2xpbmUtaGVpZ2h0OjEuMTI1fS5tYXQtZm9ybS1maWVsZC1wcmVmaXggLm1hdC1pY29uLWJ1dHRvbiwubWF0LWZvcm0tZmllbGQtc3VmZml4IC5tYXQtaWNvbi1idXR0b257aGVpZ2h0OjEuNWVtO3dpZHRoOjEuNWVtfS5tYXQtZm9ybS1maWVsZC1wcmVmaXggLm1hdC1pY29uLWJ1dHRvbiAubWF0LWljb24sLm1hdC1mb3JtLWZpZWxkLXN1ZmZpeCAubWF0LWljb24tYnV0dG9uIC5tYXQtaWNvbntoZWlnaHQ6MS4xMjVlbTtsaW5lLWhlaWdodDoxLjEyNX0ubWF0LWZvcm0tZmllbGQtaW5maXh7cGFkZGluZzouNWVtIDA7Ym9yZGVyLXRvcDouODQzNzVlbSBzb2xpZCB0cmFuc3BhcmVudH0ubWF0LWZvcm0tZmllbGQtY2FuLWZsb2F0Lm1hdC1mb3JtLWZpZWxkLXNob3VsZC1mbG9hdCAubWF0LWZvcm0tZmllbGQtbGFiZWwsLm1hdC1mb3JtLWZpZWxkLWNhbi1mbG9hdCAubWF0LWlucHV0LXNlcnZlcjpmb2N1cysubWF0LWZvcm0tZmllbGQtbGFiZWwtd3JhcHBlciAubWF0LWZvcm0tZmllbGQtbGFiZWx7dHJhbnNmb3JtOnRyYW5zbGF0ZVkoLTEuMzQzNzVlbSkgc2NhbGUoMC43NSk7d2lkdGg6MTMzLjMzMzMzMzMzMzMlfS5tYXQtZm9ybS1maWVsZC1jYW4tZmxvYXQgLm1hdC1pbnB1dC1zZXJ2ZXJbbGFiZWxdOm5vdCg6bGFiZWwtc2hvd24pKy5tYXQtZm9ybS1maWVsZC1sYWJlbC13cmFwcGVyIC5tYXQtZm9ybS1maWVsZC1sYWJlbHt0cmFuc2Zvcm06dHJhbnNsYXRlWSgtMS4zNDM3NGVtKSBzY2FsZSgwLjc1KTt3aWR0aDoxMzMuMzMzMzQzMzMzMyV9Lm1hdC1mb3JtLWZpZWxkLWxhYmVsLXdyYXBwZXJ7dG9wOi0wLjg0Mzc1ZW07cGFkZGluZy10b3A6Ljg0Mzc1ZW19Lm1hdC1mb3JtLWZpZWxkLWxhYmVse3RvcDoxLjM0Mzc1ZW19Lm1hdC1mb3JtLWZpZWxkLXVuZGVybGluZXtib3R0b206MS4zNDM3NWVtfS5tYXQtZm9ybS1maWVsZC1zdWJzY3JpcHQtd3JhcHBlcntmb250LXNpemU6NzUlO21hcmdpbi10b3A6LjY2NjY2NjY2NjdlbTt0b3A6Y2FsYygxMDAlIC0gMS43OTE2NjY2NjY3ZW0pfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWxlZ2FjeSAubWF0LWZvcm0tZmllbGQtd3JhcHBlcntwYWRkaW5nLWJvdHRvbToxLjI1ZW19Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtbGVnYWN5IC5tYXQtZm9ybS1maWVsZC1pbmZpeHtwYWRkaW5nOi40Mzc1ZW0gMH0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1sZWdhY3kubWF0LWZvcm0tZmllbGQtY2FuLWZsb2F0Lm1hdC1mb3JtLWZpZWxkLXNob3VsZC1mbG9hdCAubWF0LWZvcm0tZmllbGQtbGFiZWwsLm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtbGVnYWN5Lm1hdC1mb3JtLWZpZWxkLWNhbi1mbG9hdCAubWF0LWlucHV0LXNlcnZlcjpmb2N1cysubWF0LWZvcm0tZmllbGQtbGFiZWwtd3JhcHBlciAubWF0LWZvcm0tZmllbGQtbGFiZWx7dHJhbnNmb3JtOnRyYW5zbGF0ZVkoLTEuMjgxMjVlbSkgc2NhbGUoMC43NSkgcGVyc3BlY3RpdmUoMTAwcHgpIHRyYW5zbGF0ZVooMC4wMDFweCk7LW1zLXRyYW5zZm9ybTp0cmFuc2xhdGVZKC0xLjI4MTI1ZW0pIHNjYWxlKDAuNzUpO3dpZHRoOjEzMy4zMzMzMzMzMzMzJX0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1sZWdhY3kubWF0LWZvcm0tZmllbGQtY2FuLWZsb2F0IC5tYXQtZm9ybS1maWVsZC1hdXRvZmlsbC1jb250cm9sOi13ZWJraXQtYXV0b2ZpbGwrLm1hdC1mb3JtLWZpZWxkLWxhYmVsLXdyYXBwZXIgLm1hdC1mb3JtLWZpZWxkLWxhYmVse3RyYW5zZm9ybTp0cmFuc2xhdGVZKC0xLjI4MTI1ZW0pIHNjYWxlKDAuNzUpIHBlcnNwZWN0aXZlKDEwMHB4KSB0cmFuc2xhdGVaKDAuMDAxMDFweCk7LW1zLXRyYW5zZm9ybTp0cmFuc2xhdGVZKC0xLjI4MTI0ZW0pIHNjYWxlKDAuNzUpO3dpZHRoOjEzMy4zMzMzNDMzMzMzJX0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1sZWdhY3kubWF0LWZvcm0tZmllbGQtY2FuLWZsb2F0IC5tYXQtaW5wdXQtc2VydmVyW2xhYmVsXTpub3QoOmxhYmVsLXNob3duKSsubWF0LWZvcm0tZmllbGQtbGFiZWwtd3JhcHBlciAubWF0LWZvcm0tZmllbGQtbGFiZWx7dHJhbnNmb3JtOnRyYW5zbGF0ZVkoLTEuMjgxMjVlbSkgc2NhbGUoMC43NSkgcGVyc3BlY3RpdmUoMTAwcHgpIHRyYW5zbGF0ZVooMC4wMDEwMnB4KTstbXMtdHJhbnNmb3JtOnRyYW5zbGF0ZVkoLTEuMjgxMjNlbSkgc2NhbGUoMC43NSk7d2lkdGg6MTMzLjMzMzM1MzMzMzMlfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWxlZ2FjeSAubWF0LWZvcm0tZmllbGQtbGFiZWx7dG9wOjEuMjgxMjVlbX0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1sZWdhY3kgLm1hdC1mb3JtLWZpZWxkLXVuZGVybGluZXtib3R0b206MS4yNWVtfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWxlZ2FjeSAubWF0LWZvcm0tZmllbGQtc3Vic2NyaXB0LXdyYXBwZXJ7bWFyZ2luLXRvcDouNTQxNjY2NjY2N2VtO3RvcDpjYWxjKDEwMCUgLSAxLjY2NjY2NjY2NjdlbSl9QG1lZGlhIHByaW50ey5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWxlZ2FjeS5tYXQtZm9ybS1maWVsZC1jYW4tZmxvYXQubWF0LWZvcm0tZmllbGQtc2hvdWxkLWZsb2F0IC5tYXQtZm9ybS1maWVsZC1sYWJlbCwubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1sZWdhY3kubWF0LWZvcm0tZmllbGQtY2FuLWZsb2F0IC5tYXQtaW5wdXQtc2VydmVyOmZvY3VzKy5tYXQtZm9ybS1maWVsZC1sYWJlbC13cmFwcGVyIC5tYXQtZm9ybS1maWVsZC1sYWJlbHt0cmFuc2Zvcm06dHJhbnNsYXRlWSgtMS4yODEyMmVtKSBzY2FsZSgwLjc1KX0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1sZWdhY3kubWF0LWZvcm0tZmllbGQtY2FuLWZsb2F0IC5tYXQtZm9ybS1maWVsZC1hdXRvZmlsbC1jb250cm9sOi13ZWJraXQtYXV0b2ZpbGwrLm1hdC1mb3JtLWZpZWxkLWxhYmVsLXdyYXBwZXIgLm1hdC1mb3JtLWZpZWxkLWxhYmVse3RyYW5zZm9ybTp0cmFuc2xhdGVZKC0xLjI4MTIxZW0pIHNjYWxlKDAuNzUpfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWxlZ2FjeS5tYXQtZm9ybS1maWVsZC1jYW4tZmxvYXQgLm1hdC1pbnB1dC1zZXJ2ZXJbbGFiZWxdOm5vdCg6bGFiZWwtc2hvd24pKy5tYXQtZm9ybS1maWVsZC1sYWJlbC13cmFwcGVyIC5tYXQtZm9ybS1maWVsZC1sYWJlbHt0cmFuc2Zvcm06dHJhbnNsYXRlWSgtMS4yODEyZW0pIHNjYWxlKDAuNzUpfX0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1maWxsIC5tYXQtZm9ybS1maWVsZC1pbmZpeHtwYWRkaW5nOi4yNWVtIDAgLjc1ZW0gMH0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1maWxsIC5tYXQtZm9ybS1maWVsZC1sYWJlbHt0b3A6MS4wOTM3NWVtO21hcmdpbi10b3A6LTAuNWVtfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWZpbGwubWF0LWZvcm0tZmllbGQtY2FuLWZsb2F0Lm1hdC1mb3JtLWZpZWxkLXNob3VsZC1mbG9hdCAubWF0LWZvcm0tZmllbGQtbGFiZWwsLm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtZmlsbC5tYXQtZm9ybS1maWVsZC1jYW4tZmxvYXQgLm1hdC1pbnB1dC1zZXJ2ZXI6Zm9jdXMrLm1hdC1mb3JtLWZpZWxkLWxhYmVsLXdyYXBwZXIgLm1hdC1mb3JtLWZpZWxkLWxhYmVse3RyYW5zZm9ybTp0cmFuc2xhdGVZKC0wLjU5Mzc1ZW0pIHNjYWxlKDAuNzUpO3dpZHRoOjEzMy4zMzMzMzMzMzMzJX0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1maWxsLm1hdC1mb3JtLWZpZWxkLWNhbi1mbG9hdCAubWF0LWlucHV0LXNlcnZlcltsYWJlbF06bm90KDpsYWJlbC1zaG93bikrLm1hdC1mb3JtLWZpZWxkLWxhYmVsLXdyYXBwZXIgLm1hdC1mb3JtLWZpZWxkLWxhYmVse3RyYW5zZm9ybTp0cmFuc2xhdGVZKC0wLjU5Mzc0ZW0pIHNjYWxlKDAuNzUpO3dpZHRoOjEzMy4zMzMzNDMzMzMzJX0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1vdXRsaW5lIC5tYXQtZm9ybS1maWVsZC1pbmZpeHtwYWRkaW5nOjFlbSAwIDFlbSAwfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLW91dGxpbmUgLm1hdC1mb3JtLWZpZWxkLWxhYmVse3RvcDoxLjg0Mzc1ZW07bWFyZ2luLXRvcDotMC4yNWVtfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLW91dGxpbmUubWF0LWZvcm0tZmllbGQtY2FuLWZsb2F0Lm1hdC1mb3JtLWZpZWxkLXNob3VsZC1mbG9hdCAubWF0LWZvcm0tZmllbGQtbGFiZWwsLm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2Utb3V0bGluZS5tYXQtZm9ybS1maWVsZC1jYW4tZmxvYXQgLm1hdC1pbnB1dC1zZXJ2ZXI6Zm9jdXMrLm1hdC1mb3JtLWZpZWxkLWxhYmVsLXdyYXBwZXIgLm1hdC1mb3JtLWZpZWxkLWxhYmVse3RyYW5zZm9ybTp0cmFuc2xhdGVZKC0xLjU5Mzc1ZW0pIHNjYWxlKDAuNzUpO3dpZHRoOjEzMy4zMzMzMzMzMzMzJX0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1vdXRsaW5lLm1hdC1mb3JtLWZpZWxkLWNhbi1mbG9hdCAubWF0LWlucHV0LXNlcnZlcltsYWJlbF06bm90KDpsYWJlbC1zaG93bikrLm1hdC1mb3JtLWZpZWxkLWxhYmVsLXdyYXBwZXIgLm1hdC1mb3JtLWZpZWxkLWxhYmVse3RyYW5zZm9ybTp0cmFuc2xhdGVZKC0xLjU5Mzc0ZW0pIHNjYWxlKDAuNzUpO3dpZHRoOjEzMy4zMzMzNDMzMzMzJX0ubWF0LWdyaWQtdGlsZS1oZWFkZXIsLm1hdC1ncmlkLXRpbGUtZm9vdGVye2ZvbnQtc2l6ZToxNHB4fS5tYXQtZ3JpZC10aWxlLWhlYWRlciAubWF0LWxpbmUsLm1hdC1ncmlkLXRpbGUtZm9vdGVyIC5tYXQtbGluZXt3aGl0ZS1zcGFjZTpub3dyYXA7b3ZlcmZsb3c6aGlkZGVuO3RleHQtb3ZlcmZsb3c6ZWxsaXBzaXM7ZGlzcGxheTpibG9jaztib3gtc2l6aW5nOmJvcmRlci1ib3h9Lm1hdC1ncmlkLXRpbGUtaGVhZGVyIC5tYXQtbGluZTpudGgtY2hpbGQobisyKSwubWF0LWdyaWQtdGlsZS1mb290ZXIgLm1hdC1saW5lOm50aC1jaGlsZChuKzIpe2ZvbnQtc2l6ZToxMnB4fWlucHV0Lm1hdC1pbnB1dC1lbGVtZW50e21hcmdpbi10b3A6LTAuMDYyNWVtfS5tYXQtbWVudS1pdGVte2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtmb250LXNpemU6MTRweDtmb250LXdlaWdodDo0MDB9Lm1hdC1wYWdpbmF0b3IsLm1hdC1wYWdpbmF0b3ItcGFnZS1zaXplIC5tYXQtc2VsZWN0LXRyaWdnZXJ7Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2ZvbnQtc2l6ZToxMnB4fS5tYXQtcmFkaW8tYnV0dG9ue2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZn0ubWF0LXNlbGVjdHtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWZ9Lm1hdC1zZWxlY3QtdHJpZ2dlcntoZWlnaHQ6MS4xMjVlbX0ubWF0LXNsaWRlLXRvZ2dsZS1jb250ZW50e2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZn0ubWF0LXNsaWRlci10aHVtYi1sYWJlbC10ZXh0e2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtmb250LXNpemU6MTJweDtmb250LXdlaWdodDo1MDB9Lm1hdC1zdGVwcGVyLXZlcnRpY2FsLC5tYXQtc3RlcHBlci1ob3Jpem9udGFse2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZn0ubWF0LXN0ZXAtbGFiZWx7Zm9udC1zaXplOjE0cHg7Zm9udC13ZWlnaHQ6NDAwfS5tYXQtc3RlcC1zdWItbGFiZWwtZXJyb3J7Zm9udC13ZWlnaHQ6bm9ybWFsfS5tYXQtc3RlcC1sYWJlbC1lcnJvcntmb250LXNpemU6MTRweH0ubWF0LXN0ZXAtbGFiZWwtc2VsZWN0ZWR7Zm9udC1zaXplOjE0cHg7Zm9udC13ZWlnaHQ6NTAwfS5tYXQtdGFiLWdyb3Vwe2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZn0ubWF0LXRhYi1sYWJlbCwubWF0LXRhYi1saW5re2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtmb250LXNpemU6MTRweDtmb250LXdlaWdodDo1MDB9Lm1hdC10b29sYmFyLC5tYXQtdG9vbGJhciBoMSwubWF0LXRvb2xiYXIgaDIsLm1hdC10b29sYmFyIGgzLC5tYXQtdG9vbGJhciBoNCwubWF0LXRvb2xiYXIgaDUsLm1hdC10b29sYmFyIGg2e2ZvbnQ6NTAwIDIwcHgvMzJweCBSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7bGV0dGVyLXNwYWNpbmc6bm9ybWFsO21hcmdpbjowfS5tYXQtdG9vbHRpcHtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7Zm9udC1zaXplOjEwcHg7cGFkZGluZy10b3A6NnB4O3BhZGRpbmctYm90dG9tOjZweH0ubWF0LXRvb2x0aXAtaGFuZHNldHtmb250LXNpemU6MTRweDtwYWRkaW5nLXRvcDo4cHg7cGFkZGluZy1ib3R0b206OHB4fS5tYXQtbGlzdC1pdGVte2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZn0ubWF0LWxpc3Qtb3B0aW9ue2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZn0ubWF0LWxpc3QtYmFzZSAubWF0LWxpc3QtaXRlbXtmb250LXNpemU6MTZweH0ubWF0LWxpc3QtYmFzZSAubWF0LWxpc3QtaXRlbSAubWF0LWxpbmV7d2hpdGUtc3BhY2U6bm93cmFwO292ZXJmbG93OmhpZGRlbjt0ZXh0LW92ZXJmbG93OmVsbGlwc2lzO2Rpc3BsYXk6YmxvY2s7Ym94LXNpemluZzpib3JkZXItYm94fS5tYXQtbGlzdC1iYXNlIC5tYXQtbGlzdC1pdGVtIC5tYXQtbGluZTpudGgtY2hpbGQobisyKXtmb250LXNpemU6MTRweH0ubWF0LWxpc3QtYmFzZSAubWF0LWxpc3Qtb3B0aW9ue2ZvbnQtc2l6ZToxNnB4fS5tYXQtbGlzdC1iYXNlIC5tYXQtbGlzdC1vcHRpb24gLm1hdC1saW5le3doaXRlLXNwYWNlOm5vd3JhcDtvdmVyZmxvdzpoaWRkZW47dGV4dC1vdmVyZmxvdzplbGxpcHNpcztkaXNwbGF5OmJsb2NrO2JveC1zaXppbmc6Ym9yZGVyLWJveH0ubWF0LWxpc3QtYmFzZSAubWF0LWxpc3Qtb3B0aW9uIC5tYXQtbGluZTpudGgtY2hpbGQobisyKXtmb250LXNpemU6MTRweH0ubWF0LWxpc3QtYmFzZSAubWF0LXN1YmhlYWRlcntmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7Zm9udC1zaXplOjE0cHg7Zm9udC13ZWlnaHQ6NTAwfS5tYXQtbGlzdC1iYXNlW2RlbnNlXSAubWF0LWxpc3QtaXRlbXtmb250LXNpemU6MTJweH0ubWF0LWxpc3QtYmFzZVtkZW5zZV0gLm1hdC1saXN0LWl0ZW0gLm1hdC1saW5le3doaXRlLXNwYWNlOm5vd3JhcDtvdmVyZmxvdzpoaWRkZW47dGV4dC1vdmVyZmxvdzplbGxpcHNpcztkaXNwbGF5OmJsb2NrO2JveC1zaXppbmc6Ym9yZGVyLWJveH0ubWF0LWxpc3QtYmFzZVtkZW5zZV0gLm1hdC1saXN0LWl0ZW0gLm1hdC1saW5lOm50aC1jaGlsZChuKzIpe2ZvbnQtc2l6ZToxMnB4fS5tYXQtbGlzdC1iYXNlW2RlbnNlXSAubWF0LWxpc3Qtb3B0aW9ue2ZvbnQtc2l6ZToxMnB4fS5tYXQtbGlzdC1iYXNlW2RlbnNlXSAubWF0LWxpc3Qtb3B0aW9uIC5tYXQtbGluZXt3aGl0ZS1zcGFjZTpub3dyYXA7b3ZlcmZsb3c6aGlkZGVuO3RleHQtb3ZlcmZsb3c6ZWxsaXBzaXM7ZGlzcGxheTpibG9jaztib3gtc2l6aW5nOmJvcmRlci1ib3h9Lm1hdC1saXN0LWJhc2VbZGVuc2VdIC5tYXQtbGlzdC1vcHRpb24gLm1hdC1saW5lOm50aC1jaGlsZChuKzIpe2ZvbnQtc2l6ZToxMnB4fS5tYXQtbGlzdC1iYXNlW2RlbnNlXSAubWF0LXN1YmhlYWRlcntmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7Zm9udC1zaXplOjEycHg7Zm9udC13ZWlnaHQ6NTAwfS5tYXQtb3B0aW9ue2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtmb250LXNpemU6MTZweH0ubWF0LW9wdGdyb3VwLWxhYmVse2ZvbnQ6NTAwIDE0cHgvMjRweCBSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7bGV0dGVyLXNwYWNpbmc6bm9ybWFsfS5tYXQtc2ltcGxlLXNuYWNrYmFye2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtmb250LXNpemU6MTRweH0ubWF0LXNpbXBsZS1zbmFja2Jhci1hY3Rpb257bGluZS1oZWlnaHQ6MTtmb250LWZhbWlseTppbmhlcml0O2ZvbnQtc2l6ZTppbmhlcml0O2ZvbnQtd2VpZ2h0OjUwMH0ubWF0LXRyZWV7Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmfS5tYXQtdHJlZS1ub2RlLC5tYXQtbmVzdGVkLXRyZWUtbm9kZXtmb250LXdlaWdodDo0MDA7Zm9udC1zaXplOjE0cHh9Lm1hdC1yaXBwbGV7b3ZlcmZsb3c6aGlkZGVuO3Bvc2l0aW9uOnJlbGF0aXZlfS5tYXQtcmlwcGxlOm5vdCg6ZW1wdHkpe3RyYW5zZm9ybTp0cmFuc2xhdGVaKDApfS5tYXQtcmlwcGxlLm1hdC1yaXBwbGUtdW5ib3VuZGVke292ZXJmbG93OnZpc2libGV9Lm1hdC1yaXBwbGUtZWxlbWVudHtwb3NpdGlvbjphYnNvbHV0ZTtib3JkZXItcmFkaXVzOjUwJTtwb2ludGVyLWV2ZW50czpub25lO3RyYW5zaXRpb246b3BhY2l0eSx0cmFuc2Zvcm0gMG1zIGN1YmljLWJlemllcigwLCAwLCAwLjIsIDEpO3RyYW5zZm9ybTpzY2FsZSgwKX0uY2RrLWhpZ2gtY29udHJhc3QtYWN0aXZlIC5tYXQtcmlwcGxlLWVsZW1lbnR7ZGlzcGxheTpub25lfS5jZGstdmlzdWFsbHktaGlkZGVue2JvcmRlcjowO2NsaXA6cmVjdCgwIDAgMCAwKTtoZWlnaHQ6MXB4O21hcmdpbjotMXB4O292ZXJmbG93OmhpZGRlbjtwYWRkaW5nOjA7cG9zaXRpb246YWJzb2x1dGU7d2lkdGg6MXB4O291dGxpbmU6MDstd2Via2l0LWFwcGVhcmFuY2U6bm9uZTstbW96LWFwcGVhcmFuY2U6bm9uZX0uY2RrLW92ZXJsYXktY29udGFpbmVyLC5jZGstZ2xvYmFsLW92ZXJsYXktd3JhcHBlcntwb2ludGVyLWV2ZW50czpub25lO3RvcDowO2xlZnQ6MDtoZWlnaHQ6MTAwJTt3aWR0aDoxMDAlfS5jZGstb3ZlcmxheS1jb250YWluZXJ7cG9zaXRpb246Zml4ZWQ7ei1pbmRleDoxMDAwfS5jZGstb3ZlcmxheS1jb250YWluZXI6ZW1wdHl7ZGlzcGxheTpub25lfS5jZGstZ2xvYmFsLW92ZXJsYXktd3JhcHBlcntkaXNwbGF5OmZsZXg7cG9zaXRpb246YWJzb2x1dGU7ei1pbmRleDoxMDAwfS5jZGstb3ZlcmxheS1wYW5le3Bvc2l0aW9uOmFic29sdXRlO3BvaW50ZXItZXZlbnRzOmF1dG87Ym94LXNpemluZzpib3JkZXItYm94O3otaW5kZXg6MTAwMDtkaXNwbGF5OmZsZXg7bWF4LXdpZHRoOjEwMCU7bWF4LWhlaWdodDoxMDAlfS5jZGstb3ZlcmxheS1iYWNrZHJvcHtwb3NpdGlvbjphYnNvbHV0ZTt0b3A6MDtib3R0b206MDtsZWZ0OjA7cmlnaHQ6MDt6LWluZGV4OjEwMDA7cG9pbnRlci1ldmVudHM6YXV0bzstd2Via2l0LXRhcC1oaWdobGlnaHQtY29sb3I6dHJhbnNwYXJlbnQ7dHJhbnNpdGlvbjpvcGFjaXR5IDQwMG1zIGN1YmljLWJlemllcigwLjI1LCAwLjgsIDAuMjUsIDEpO29wYWNpdHk6MH0uY2RrLW92ZXJsYXktYmFja2Ryb3AuY2RrLW92ZXJsYXktYmFja2Ryb3Atc2hvd2luZ3tvcGFjaXR5OjF9QG1lZGlhIHNjcmVlbiBhbmQgKC1tcy1oaWdoLWNvbnRyYXN0OiBhY3RpdmUpey5jZGstb3ZlcmxheS1iYWNrZHJvcC5jZGstb3ZlcmxheS1iYWNrZHJvcC1zaG93aW5ne29wYWNpdHk6LjZ9fS5jZGstb3ZlcmxheS1kYXJrLWJhY2tkcm9we2JhY2tncm91bmQ6cmdiYSgwLDAsMCwuMzIpfS5jZGstb3ZlcmxheS10cmFuc3BhcmVudC1iYWNrZHJvcCwuY2RrLW92ZXJsYXktdHJhbnNwYXJlbnQtYmFja2Ryb3AuY2RrLW92ZXJsYXktYmFja2Ryb3Atc2hvd2luZ3tvcGFjaXR5OjB9LmNkay1vdmVybGF5LWNvbm5lY3RlZC1wb3NpdGlvbi1ib3VuZGluZy1ib3h7cG9zaXRpb246YWJzb2x1dGU7ei1pbmRleDoxMDAwO2Rpc3BsYXk6ZmxleDtmbGV4LWRpcmVjdGlvbjpjb2x1bW47bWluLXdpZHRoOjFweDttaW4taGVpZ2h0OjFweH0uY2RrLWdsb2JhbC1zY3JvbGxibG9ja3twb3NpdGlvbjpmaXhlZDt3aWR0aDoxMDAlO292ZXJmbG93LXk6c2Nyb2xsfUBrZXlmcmFtZXMgY2RrLXRleHQtZmllbGQtYXV0b2ZpbGwtc3RhcnR7LyohKi99QGtleWZyYW1lcyBjZGstdGV4dC1maWVsZC1hdXRvZmlsbC1lbmR7LyohKi99LmNkay10ZXh0LWZpZWxkLWF1dG9maWxsLW1vbml0b3JlZDotd2Via2l0LWF1dG9maWxse2FuaW1hdGlvbjpjZGstdGV4dC1maWVsZC1hdXRvZmlsbC1zdGFydCAwcyAxbXN9LmNkay10ZXh0LWZpZWxkLWF1dG9maWxsLW1vbml0b3JlZDpub3QoOi13ZWJraXQtYXV0b2ZpbGwpe2FuaW1hdGlvbjpjZGstdGV4dC1maWVsZC1hdXRvZmlsbC1lbmQgMHMgMW1zfXRleHRhcmVhLmNkay10ZXh0YXJlYS1hdXRvc2l6ZXtyZXNpemU6bm9uZX10ZXh0YXJlYS5jZGstdGV4dGFyZWEtYXV0b3NpemUtbWVhc3VyaW5ne3BhZGRpbmc6MnB4IDAgIWltcG9ydGFudDtib3gtc2l6aW5nOmNvbnRlbnQtYm94ICFpbXBvcnRhbnQ7aGVpZ2h0OmF1dG8gIWltcG9ydGFudDtvdmVyZmxvdzpoaWRkZW4gIWltcG9ydGFudH10ZXh0YXJlYS5jZGstdGV4dGFyZWEtYXV0b3NpemUtbWVhc3VyaW5nLWZpcmVmb3h7cGFkZGluZzoycHggMCAhaW1wb3J0YW50O2JveC1zaXppbmc6Y29udGVudC1ib3ggIWltcG9ydGFudDtoZWlnaHQ6MCAhaW1wb3J0YW50fS5tYXQtZm9jdXMtaW5kaWNhdG9ye3Bvc2l0aW9uOnJlbGF0aXZlfS5tYXQtbWRjLWZvY3VzLWluZGljYXRvcntwb3NpdGlvbjpyZWxhdGl2ZX0ubWF0LXJpcHBsZS1lbGVtZW50e2JhY2tncm91bmQtY29sb3I6cmdiYSgwLDAsMCwuMSl9Lm1hdC1vcHRpb257Y29sb3I6IzIxMjEyMX0ubWF0LW9wdGlvbjpob3Zlcjpub3QoLm1hdC1vcHRpb24tZGlzYWJsZWQpLC5tYXQtb3B0aW9uOmZvY3VzOm5vdCgubWF0LW9wdGlvbi1kaXNhYmxlZCl7YmFja2dyb3VuZDpyZ2JhKDAsMCwwLC4wNCl9Lm1hdC1vcHRpb24ubWF0LXNlbGVjdGVkOm5vdCgubWF0LW9wdGlvbi1tdWx0aXBsZSk6bm90KC5tYXQtb3B0aW9uLWRpc2FibGVkKXtiYWNrZ3JvdW5kOnJnYmEoMCwwLDAsLjA0KX0ubWF0LW9wdGlvbi5tYXQtYWN0aXZle2JhY2tncm91bmQ6cmdiYSgwLDAsMCwuMDQpO2NvbG9yOiMyMTIxMjF9Lm1hdC1vcHRpb24ubWF0LW9wdGlvbi1kaXNhYmxlZHtjb2xvcjpyZ2JhKDAsMCwwLC4zOCl9Lm1hdC1wcmltYXJ5IC5tYXQtb3B0aW9uLm1hdC1zZWxlY3RlZDpub3QoLm1hdC1vcHRpb24tZGlzYWJsZWQpe2NvbG9yOiNmNTdjMDB9Lm1hdC1hY2NlbnQgLm1hdC1vcHRpb24ubWF0LXNlbGVjdGVkOm5vdCgubWF0LW9wdGlvbi1kaXNhYmxlZCl7Y29sb3I6I2ZmOTgwMH0ubWF0LXdhcm4gLm1hdC1vcHRpb24ubWF0LXNlbGVjdGVkOm5vdCgubWF0LW9wdGlvbi1kaXNhYmxlZCl7Y29sb3I6I2Y0NDMzNn0ubWF0LW9wdGdyb3VwLWxhYmVse2NvbG9yOiM2MTYxNjF9Lm1hdC1vcHRncm91cC1kaXNhYmxlZCAubWF0LW9wdGdyb3VwLWxhYmVse2NvbG9yOnJnYmEoMCwwLDAsLjM4KX0ubWF0LXBzZXVkby1jaGVja2JveHtjb2xvcjojNjE2MTYxfS5tYXQtcHNldWRvLWNoZWNrYm94OjphZnRlcntjb2xvcjojZmFmYWZhfS5tYXQtcHNldWRvLWNoZWNrYm94LWRpc2FibGVke2NvbG9yOiNiMGIwYjB9Lm1hdC1wcmltYXJ5IC5tYXQtcHNldWRvLWNoZWNrYm94LWNoZWNrZWQsLm1hdC1wcmltYXJ5IC5tYXQtcHNldWRvLWNoZWNrYm94LWluZGV0ZXJtaW5hdGV7YmFja2dyb3VuZDojZjU3YzAwfS5tYXQtcHNldWRvLWNoZWNrYm94LWNoZWNrZWQsLm1hdC1wc2V1ZG8tY2hlY2tib3gtaW5kZXRlcm1pbmF0ZSwubWF0LWFjY2VudCAubWF0LXBzZXVkby1jaGVja2JveC1jaGVja2VkLC5tYXQtYWNjZW50IC5tYXQtcHNldWRvLWNoZWNrYm94LWluZGV0ZXJtaW5hdGV7YmFja2dyb3VuZDojZmY5ODAwfS5tYXQtd2FybiAubWF0LXBzZXVkby1jaGVja2JveC1jaGVja2VkLC5tYXQtd2FybiAubWF0LXBzZXVkby1jaGVja2JveC1pbmRldGVybWluYXRle2JhY2tncm91bmQ6I2Y0NDMzNn0ubWF0LXBzZXVkby1jaGVja2JveC1jaGVja2VkLm1hdC1wc2V1ZG8tY2hlY2tib3gtZGlzYWJsZWQsLm1hdC1wc2V1ZG8tY2hlY2tib3gtaW5kZXRlcm1pbmF0ZS5tYXQtcHNldWRvLWNoZWNrYm94LWRpc2FibGVke2JhY2tncm91bmQ6I2IwYjBiMH0ubWF0LWFwcC1iYWNrZ3JvdW5ke2JhY2tncm91bmQtY29sb3I6I2ZhZmFmYTtjb2xvcjojMjEyMTIxfS5tYXQtZWxldmF0aW9uLXowe2JveC1zaGFkb3c6MHB4IDBweCAwcHggMHB4IHJnYmEoMCwgMCwgMCwgMC4yKSwwcHggMHB4IDBweCAwcHggcmdiYSgwLCAwLCAwLCAwLjE0KSwwcHggMHB4IDBweCAwcHggcmdiYSgwLCAwLCAwLCAwLjEyKX0ubWF0LWVsZXZhdGlvbi16MXtib3gtc2hhZG93OjBweCAycHggMXB4IC0xcHggcmdiYSgwLCAwLCAwLCAwLjIpLDBweCAxcHggMXB4IDBweCByZ2JhKDAsIDAsIDAsIDAuMTQpLDBweCAxcHggM3B4IDBweCByZ2JhKDAsIDAsIDAsIDAuMTIpfS5tYXQtZWxldmF0aW9uLXoye2JveC1zaGFkb3c6MHB4IDNweCAxcHggLTJweCByZ2JhKDAsIDAsIDAsIDAuMiksMHB4IDJweCAycHggMHB4IHJnYmEoMCwgMCwgMCwgMC4xNCksMHB4IDFweCA1cHggMHB4IHJnYmEoMCwgMCwgMCwgMC4xMil9Lm1hdC1lbGV2YXRpb24tejN7Ym94LXNoYWRvdzowcHggM3B4IDNweCAtMnB4IHJnYmEoMCwgMCwgMCwgMC4yKSwwcHggM3B4IDRweCAwcHggcmdiYSgwLCAwLCAwLCAwLjE0KSwwcHggMXB4IDhweCAwcHggcmdiYSgwLCAwLCAwLCAwLjEyKX0ubWF0LWVsZXZhdGlvbi16NHtib3gtc2hhZG93OjBweCAycHggNHB4IC0xcHggcmdiYSgwLCAwLCAwLCAwLjIpLDBweCA0cHggNXB4IDBweCByZ2JhKDAsIDAsIDAsIDAuMTQpLDBweCAxcHggMTBweCAwcHggcmdiYSgwLCAwLCAwLCAwLjEyKX0ubWF0LWVsZXZhdGlvbi16NXtib3gtc2hhZG93OjBweCAzcHggNXB4IC0xcHggcmdiYSgwLCAwLCAwLCAwLjIpLDBweCA1cHggOHB4IDBweCByZ2JhKDAsIDAsIDAsIDAuMTQpLDBweCAxcHggMTRweCAwcHggcmdiYSgwLCAwLCAwLCAwLjEyKX0ubWF0LWVsZXZhdGlvbi16Nntib3gtc2hhZG93OjBweCAzcHggNXB4IC0xcHggcmdiYSgwLCAwLCAwLCAwLjIpLDBweCA2cHggMTBweCAwcHggcmdiYSgwLCAwLCAwLCAwLjE0KSwwcHggMXB4IDE4cHggMHB4IHJnYmEoMCwgMCwgMCwgMC4xMil9Lm1hdC1lbGV2YXRpb24tejd7Ym94LXNoYWRvdzowcHggNHB4IDVweCAtMnB4IHJnYmEoMCwgMCwgMCwgMC4yKSwwcHggN3B4IDEwcHggMXB4IHJnYmEoMCwgMCwgMCwgMC4xNCksMHB4IDJweCAxNnB4IDFweCByZ2JhKDAsIDAsIDAsIDAuMTIpfS5tYXQtZWxldmF0aW9uLXo4e2JveC1zaGFkb3c6MHB4IDVweCA1cHggLTNweCByZ2JhKDAsIDAsIDAsIDAuMiksMHB4IDhweCAxMHB4IDFweCByZ2JhKDAsIDAsIDAsIDAuMTQpLDBweCAzcHggMTRweCAycHggcmdiYSgwLCAwLCAwLCAwLjEyKX0ubWF0LWVsZXZhdGlvbi16OXtib3gtc2hhZG93OjBweCA1cHggNnB4IC0zcHggcmdiYSgwLCAwLCAwLCAwLjIpLDBweCA5cHggMTJweCAxcHggcmdiYSgwLCAwLCAwLCAwLjE0KSwwcHggM3B4IDE2cHggMnB4IHJnYmEoMCwgMCwgMCwgMC4xMil9Lm1hdC1lbGV2YXRpb24tejEwe2JveC1zaGFkb3c6MHB4IDZweCA2cHggLTNweCByZ2JhKDAsIDAsIDAsIDAuMiksMHB4IDEwcHggMTRweCAxcHggcmdiYSgwLCAwLCAwLCAwLjE0KSwwcHggNHB4IDE4cHggM3B4IHJnYmEoMCwgMCwgMCwgMC4xMil9Lm1hdC1lbGV2YXRpb24tejExe2JveC1zaGFkb3c6MHB4IDZweCA3cHggLTRweCByZ2JhKDAsIDAsIDAsIDAuMiksMHB4IDExcHggMTVweCAxcHggcmdiYSgwLCAwLCAwLCAwLjE0KSwwcHggNHB4IDIwcHggM3B4IHJnYmEoMCwgMCwgMCwgMC4xMil9Lm1hdC1lbGV2YXRpb24tejEye2JveC1zaGFkb3c6MHB4IDdweCA4cHggLTRweCByZ2JhKDAsIDAsIDAsIDAuMiksMHB4IDEycHggMTdweCAycHggcmdiYSgwLCAwLCAwLCAwLjE0KSwwcHggNXB4IDIycHggNHB4IHJnYmEoMCwgMCwgMCwgMC4xMil9Lm1hdC1lbGV2YXRpb24tejEze2JveC1zaGFkb3c6MHB4IDdweCA4cHggLTRweCByZ2JhKDAsIDAsIDAsIDAuMiksMHB4IDEzcHggMTlweCAycHggcmdiYSgwLCAwLCAwLCAwLjE0KSwwcHggNXB4IDI0cHggNHB4IHJnYmEoMCwgMCwgMCwgMC4xMil9Lm1hdC1lbGV2YXRpb24tejE0e2JveC1zaGFkb3c6MHB4IDdweCA5cHggLTRweCByZ2JhKDAsIDAsIDAsIDAuMiksMHB4IDE0cHggMjFweCAycHggcmdiYSgwLCAwLCAwLCAwLjE0KSwwcHggNXB4IDI2cHggNHB4IHJnYmEoMCwgMCwgMCwgMC4xMil9Lm1hdC1lbGV2YXRpb24tejE1e2JveC1zaGFkb3c6MHB4IDhweCA5cHggLTVweCByZ2JhKDAsIDAsIDAsIDAuMiksMHB4IDE1cHggMjJweCAycHggcmdiYSgwLCAwLCAwLCAwLjE0KSwwcHggNnB4IDI4cHggNXB4IHJnYmEoMCwgMCwgMCwgMC4xMil9Lm1hdC1lbGV2YXRpb24tejE2e2JveC1zaGFkb3c6MHB4IDhweCAxMHB4IC01cHggcmdiYSgwLCAwLCAwLCAwLjIpLDBweCAxNnB4IDI0cHggMnB4IHJnYmEoMCwgMCwgMCwgMC4xNCksMHB4IDZweCAzMHB4IDVweCByZ2JhKDAsIDAsIDAsIDAuMTIpfS5tYXQtZWxldmF0aW9uLXoxN3tib3gtc2hhZG93OjBweCA4cHggMTFweCAtNXB4IHJnYmEoMCwgMCwgMCwgMC4yKSwwcHggMTdweCAyNnB4IDJweCByZ2JhKDAsIDAsIDAsIDAuMTQpLDBweCA2cHggMzJweCA1cHggcmdiYSgwLCAwLCAwLCAwLjEyKX0ubWF0LWVsZXZhdGlvbi16MTh7Ym94LXNoYWRvdzowcHggOXB4IDExcHggLTVweCByZ2JhKDAsIDAsIDAsIDAuMiksMHB4IDE4cHggMjhweCAycHggcmdiYSgwLCAwLCAwLCAwLjE0KSwwcHggN3B4IDM0cHggNnB4IHJnYmEoMCwgMCwgMCwgMC4xMil9Lm1hdC1lbGV2YXRpb24tejE5e2JveC1zaGFkb3c6MHB4IDlweCAxMnB4IC02cHggcmdiYSgwLCAwLCAwLCAwLjIpLDBweCAxOXB4IDI5cHggMnB4IHJnYmEoMCwgMCwgMCwgMC4xNCksMHB4IDdweCAzNnB4IDZweCByZ2JhKDAsIDAsIDAsIDAuMTIpfS5tYXQtZWxldmF0aW9uLXoyMHtib3gtc2hhZG93OjBweCAxMHB4IDEzcHggLTZweCByZ2JhKDAsIDAsIDAsIDAuMiksMHB4IDIwcHggMzFweCAzcHggcmdiYSgwLCAwLCAwLCAwLjE0KSwwcHggOHB4IDM4cHggN3B4IHJnYmEoMCwgMCwgMCwgMC4xMil9Lm1hdC1lbGV2YXRpb24tejIxe2JveC1zaGFkb3c6MHB4IDEwcHggMTNweCAtNnB4IHJnYmEoMCwgMCwgMCwgMC4yKSwwcHggMjFweCAzM3B4IDNweCByZ2JhKDAsIDAsIDAsIDAuMTQpLDBweCA4cHggNDBweCA3cHggcmdiYSgwLCAwLCAwLCAwLjEyKX0ubWF0LWVsZXZhdGlvbi16MjJ7Ym94LXNoYWRvdzowcHggMTBweCAxNHB4IC02cHggcmdiYSgwLCAwLCAwLCAwLjIpLDBweCAyMnB4IDM1cHggM3B4IHJnYmEoMCwgMCwgMCwgMC4xNCksMHB4IDhweCA0MnB4IDdweCByZ2JhKDAsIDAsIDAsIDAuMTIpfS5tYXQtZWxldmF0aW9uLXoyM3tib3gtc2hhZG93OjBweCAxMXB4IDE0cHggLTdweCByZ2JhKDAsIDAsIDAsIDAuMiksMHB4IDIzcHggMzZweCAzcHggcmdiYSgwLCAwLCAwLCAwLjE0KSwwcHggOXB4IDQ0cHggOHB4IHJnYmEoMCwgMCwgMCwgMC4xMil9Lm1hdC1lbGV2YXRpb24tejI0e2JveC1zaGFkb3c6MHB4IDExcHggMTVweCAtN3B4IHJnYmEoMCwgMCwgMCwgMC4yKSwwcHggMjRweCAzOHB4IDNweCByZ2JhKDAsIDAsIDAsIDAuMTQpLDBweCA5cHggNDZweCA4cHggcmdiYSgwLCAwLCAwLCAwLjEyKX0ubWF0LXRoZW1lLWxvYWRlZC1tYXJrZXJ7ZGlzcGxheTpub25lfS5tYXQtYXV0b2NvbXBsZXRlLXBhbmVse2JhY2tncm91bmQ6I2ZmZjtjb2xvcjojMjEyMTIxfS5tYXQtYXV0b2NvbXBsZXRlLXBhbmVsOm5vdChbY2xhc3MqPW1hdC1lbGV2YXRpb24tel0pe2JveC1zaGFkb3c6MHB4IDJweCA0cHggLTFweCByZ2JhKDAsIDAsIDAsIDAuMiksMHB4IDRweCA1cHggMHB4IHJnYmEoMCwgMCwgMCwgMC4xNCksMHB4IDFweCAxMHB4IDBweCByZ2JhKDAsIDAsIDAsIDAuMTIpfS5tYXQtYXV0b2NvbXBsZXRlLXBhbmVsIC5tYXQtb3B0aW9uLm1hdC1zZWxlY3RlZDpub3QoLm1hdC1hY3RpdmUpOm5vdCg6aG92ZXIpe2JhY2tncm91bmQ6I2ZmZn0ubWF0LWF1dG9jb21wbGV0ZS1wYW5lbCAubWF0LW9wdGlvbi5tYXQtc2VsZWN0ZWQ6bm90KC5tYXQtYWN0aXZlKTpub3QoOmhvdmVyKTpub3QoLm1hdC1vcHRpb24tZGlzYWJsZWQpe2NvbG9yOiMyMTIxMjF9Lm1hdC1iYWRnZS1jb250ZW50e2NvbG9yOiNmZmY7YmFja2dyb3VuZDojZjU3YzAwfS5jZGstaGlnaC1jb250cmFzdC1hY3RpdmUgLm1hdC1iYWRnZS1jb250ZW50e291dGxpbmU6c29saWQgMXB4O2JvcmRlci1yYWRpdXM6MH0ubWF0LWJhZGdlLWFjY2VudCAubWF0LWJhZGdlLWNvbnRlbnR7YmFja2dyb3VuZDojZmY5ODAwO2NvbG9yOiNmZmZ9Lm1hdC1iYWRnZS13YXJuIC5tYXQtYmFkZ2UtY29udGVudHtjb2xvcjojZmZmO2JhY2tncm91bmQ6I2Y0NDMzNn0ubWF0LWJhZGdle3Bvc2l0aW9uOnJlbGF0aXZlfS5tYXQtYmFkZ2UtaGlkZGVuIC5tYXQtYmFkZ2UtY29udGVudHtkaXNwbGF5Om5vbmV9Lm1hdC1iYWRnZS1kaXNhYmxlZCAubWF0LWJhZGdlLWNvbnRlbnR7YmFja2dyb3VuZDojYjliOWI5O2NvbG9yOiM3NTc1NzV9Lm1hdC1iYWRnZS1jb250ZW50e3Bvc2l0aW9uOmFic29sdXRlO3RleHQtYWxpZ246Y2VudGVyO2Rpc3BsYXk6aW5saW5lLWJsb2NrO2JvcmRlci1yYWRpdXM6NTAlO3RyYW5zaXRpb246dHJhbnNmb3JtIDIwMG1zIGVhc2UtaW4tb3V0O3RyYW5zZm9ybTpzY2FsZSgwLjYpO292ZXJmbG93OmhpZGRlbjt3aGl0ZS1zcGFjZTpub3dyYXA7dGV4dC1vdmVyZmxvdzplbGxpcHNpcztwb2ludGVyLWV2ZW50czpub25lfS5uZy1hbmltYXRlLWRpc2FibGVkIC5tYXQtYmFkZ2UtY29udGVudCwubWF0LWJhZGdlLWNvbnRlbnQuX21hdC1hbmltYXRpb24tbm9vcGFibGV7dHJhbnNpdGlvbjpub25lfS5tYXQtYmFkZ2UtY29udGVudC5tYXQtYmFkZ2UtYWN0aXZle3RyYW5zZm9ybTpub25lfS5tYXQtYmFkZ2Utc21hbGwgLm1hdC1iYWRnZS1jb250ZW50e3dpZHRoOjE2cHg7aGVpZ2h0OjE2cHg7bGluZS1oZWlnaHQ6MTZweH0ubWF0LWJhZGdlLXNtYWxsLm1hdC1iYWRnZS1hYm92ZSAubWF0LWJhZGdlLWNvbnRlbnR7dG9wOi04cHh9Lm1hdC1iYWRnZS1zbWFsbC5tYXQtYmFkZ2UtYmVsb3cgLm1hdC1iYWRnZS1jb250ZW50e2JvdHRvbTotOHB4fS5tYXQtYmFkZ2Utc21hbGwubWF0LWJhZGdlLWJlZm9yZSAubWF0LWJhZGdlLWNvbnRlbnR7bGVmdDotMTZweH1bZGlyPXJ0bF0gLm1hdC1iYWRnZS1zbWFsbC5tYXQtYmFkZ2UtYmVmb3JlIC5tYXQtYmFkZ2UtY29udGVudHtsZWZ0OmF1dG87cmlnaHQ6LTE2cHh9Lm1hdC1iYWRnZS1zbWFsbC5tYXQtYmFkZ2UtYWZ0ZXIgLm1hdC1iYWRnZS1jb250ZW50e3JpZ2h0Oi0xNnB4fVtkaXI9cnRsXSAubWF0LWJhZGdlLXNtYWxsLm1hdC1iYWRnZS1hZnRlciAubWF0LWJhZGdlLWNvbnRlbnR7cmlnaHQ6YXV0bztsZWZ0Oi0xNnB4fS5tYXQtYmFkZ2Utc21hbGwubWF0LWJhZGdlLW92ZXJsYXAubWF0LWJhZGdlLWJlZm9yZSAubWF0LWJhZGdlLWNvbnRlbnR7bGVmdDotOHB4fVtkaXI9cnRsXSAubWF0LWJhZGdlLXNtYWxsLm1hdC1iYWRnZS1vdmVybGFwLm1hdC1iYWRnZS1iZWZvcmUgLm1hdC1iYWRnZS1jb250ZW50e2xlZnQ6YXV0bztyaWdodDotOHB4fS5tYXQtYmFkZ2Utc21hbGwubWF0LWJhZGdlLW92ZXJsYXAubWF0LWJhZGdlLWFmdGVyIC5tYXQtYmFkZ2UtY29udGVudHtyaWdodDotOHB4fVtkaXI9cnRsXSAubWF0LWJhZGdlLXNtYWxsLm1hdC1iYWRnZS1vdmVybGFwLm1hdC1iYWRnZS1hZnRlciAubWF0LWJhZGdlLWNvbnRlbnR7cmlnaHQ6YXV0bztsZWZ0Oi04cHh9Lm1hdC1iYWRnZS1tZWRpdW0gLm1hdC1iYWRnZS1jb250ZW50e3dpZHRoOjIycHg7aGVpZ2h0OjIycHg7bGluZS1oZWlnaHQ6MjJweH0ubWF0LWJhZGdlLW1lZGl1bS5tYXQtYmFkZ2UtYWJvdmUgLm1hdC1iYWRnZS1jb250ZW50e3RvcDotMTFweH0ubWF0LWJhZGdlLW1lZGl1bS5tYXQtYmFkZ2UtYmVsb3cgLm1hdC1iYWRnZS1jb250ZW50e2JvdHRvbTotMTFweH0ubWF0LWJhZGdlLW1lZGl1bS5tYXQtYmFkZ2UtYmVmb3JlIC5tYXQtYmFkZ2UtY29udGVudHtsZWZ0Oi0yMnB4fVtkaXI9cnRsXSAubWF0LWJhZGdlLW1lZGl1bS5tYXQtYmFkZ2UtYmVmb3JlIC5tYXQtYmFkZ2UtY29udGVudHtsZWZ0OmF1dG87cmlnaHQ6LTIycHh9Lm1hdC1iYWRnZS1tZWRpdW0ubWF0LWJhZGdlLWFmdGVyIC5tYXQtYmFkZ2UtY29udGVudHtyaWdodDotMjJweH1bZGlyPXJ0bF0gLm1hdC1iYWRnZS1tZWRpdW0ubWF0LWJhZGdlLWFmdGVyIC5tYXQtYmFkZ2UtY29udGVudHtyaWdodDphdXRvO2xlZnQ6LTIycHh9Lm1hdC1iYWRnZS1tZWRpdW0ubWF0LWJhZGdlLW92ZXJsYXAubWF0LWJhZGdlLWJlZm9yZSAubWF0LWJhZGdlLWNvbnRlbnR7bGVmdDotMTFweH1bZGlyPXJ0bF0gLm1hdC1iYWRnZS1tZWRpdW0ubWF0LWJhZGdlLW92ZXJsYXAubWF0LWJhZGdlLWJlZm9yZSAubWF0LWJhZGdlLWNvbnRlbnR7bGVmdDphdXRvO3JpZ2h0Oi0xMXB4fS5tYXQtYmFkZ2UtbWVkaXVtLm1hdC1iYWRnZS1vdmVybGFwLm1hdC1iYWRnZS1hZnRlciAubWF0LWJhZGdlLWNvbnRlbnR7cmlnaHQ6LTExcHh9W2Rpcj1ydGxdIC5tYXQtYmFkZ2UtbWVkaXVtLm1hdC1iYWRnZS1vdmVybGFwLm1hdC1iYWRnZS1hZnRlciAubWF0LWJhZGdlLWNvbnRlbnR7cmlnaHQ6YXV0bztsZWZ0Oi0xMXB4fS5tYXQtYmFkZ2UtbGFyZ2UgLm1hdC1iYWRnZS1jb250ZW50e3dpZHRoOjI4cHg7aGVpZ2h0OjI4cHg7bGluZS1oZWlnaHQ6MjhweH0ubWF0LWJhZGdlLWxhcmdlLm1hdC1iYWRnZS1hYm92ZSAubWF0LWJhZGdlLWNvbnRlbnR7dG9wOi0xNHB4fS5tYXQtYmFkZ2UtbGFyZ2UubWF0LWJhZGdlLWJlbG93IC5tYXQtYmFkZ2UtY29udGVudHtib3R0b206LTE0cHh9Lm1hdC1iYWRnZS1sYXJnZS5tYXQtYmFkZ2UtYmVmb3JlIC5tYXQtYmFkZ2UtY29udGVudHtsZWZ0Oi0yOHB4fVtkaXI9cnRsXSAubWF0LWJhZGdlLWxhcmdlLm1hdC1iYWRnZS1iZWZvcmUgLm1hdC1iYWRnZS1jb250ZW50e2xlZnQ6YXV0bztyaWdodDotMjhweH0ubWF0LWJhZGdlLWxhcmdlLm1hdC1iYWRnZS1hZnRlciAubWF0LWJhZGdlLWNvbnRlbnR7cmlnaHQ6LTI4cHh9W2Rpcj1ydGxdIC5tYXQtYmFkZ2UtbGFyZ2UubWF0LWJhZGdlLWFmdGVyIC5tYXQtYmFkZ2UtY29udGVudHtyaWdodDphdXRvO2xlZnQ6LTI4cHh9Lm1hdC1iYWRnZS1sYXJnZS5tYXQtYmFkZ2Utb3ZlcmxhcC5tYXQtYmFkZ2UtYmVmb3JlIC5tYXQtYmFkZ2UtY29udGVudHtsZWZ0Oi0xNHB4fVtkaXI9cnRsXSAubWF0LWJhZGdlLWxhcmdlLm1hdC1iYWRnZS1vdmVybGFwLm1hdC1iYWRnZS1iZWZvcmUgLm1hdC1iYWRnZS1jb250ZW50e2xlZnQ6YXV0bztyaWdodDotMTRweH0ubWF0LWJhZGdlLWxhcmdlLm1hdC1iYWRnZS1vdmVybGFwLm1hdC1iYWRnZS1hZnRlciAubWF0LWJhZGdlLWNvbnRlbnR7cmlnaHQ6LTE0cHh9W2Rpcj1ydGxdIC5tYXQtYmFkZ2UtbGFyZ2UubWF0LWJhZGdlLW92ZXJsYXAubWF0LWJhZGdlLWFmdGVyIC5tYXQtYmFkZ2UtY29udGVudHtyaWdodDphdXRvO2xlZnQ6LTE0cHh9Lm1hdC1ib3R0b20tc2hlZXQtY29udGFpbmVye2JveC1zaGFkb3c6MHB4IDhweCAxMHB4IC01cHggcmdiYSgwLCAwLCAwLCAwLjIpLDBweCAxNnB4IDI0cHggMnB4IHJnYmEoMCwgMCwgMCwgMC4xNCksMHB4IDZweCAzMHB4IDVweCByZ2JhKDAsIDAsIDAsIDAuMTIpO2JhY2tncm91bmQ6I2ZmZjtjb2xvcjojMjEyMTIxfS5tYXQtYnV0dG9uLC5tYXQtaWNvbi1idXR0b24sLm1hdC1zdHJva2VkLWJ1dHRvbntjb2xvcjppbmhlcml0O2JhY2tncm91bmQ6dHJhbnNwYXJlbnR9Lm1hdC1idXR0b24ubWF0LXByaW1hcnksLm1hdC1pY29uLWJ1dHRvbi5tYXQtcHJpbWFyeSwubWF0LXN0cm9rZWQtYnV0dG9uLm1hdC1wcmltYXJ5e2NvbG9yOiNmNTdjMDB9Lm1hdC1idXR0b24ubWF0LWFjY2VudCwubWF0LWljb24tYnV0dG9uLm1hdC1hY2NlbnQsLm1hdC1zdHJva2VkLWJ1dHRvbi5tYXQtYWNjZW50e2NvbG9yOiNmZjk4MDB9Lm1hdC1idXR0b24ubWF0LXdhcm4sLm1hdC1pY29uLWJ1dHRvbi5tYXQtd2FybiwubWF0LXN0cm9rZWQtYnV0dG9uLm1hdC13YXJue2NvbG9yOiNmNDQzMzZ9Lm1hdC1idXR0b24ubWF0LXByaW1hcnkubWF0LWJ1dHRvbi1kaXNhYmxlZCwubWF0LWJ1dHRvbi5tYXQtYWNjZW50Lm1hdC1idXR0b24tZGlzYWJsZWQsLm1hdC1idXR0b24ubWF0LXdhcm4ubWF0LWJ1dHRvbi1kaXNhYmxlZCwubWF0LWJ1dHRvbi5tYXQtYnV0dG9uLWRpc2FibGVkLm1hdC1idXR0b24tZGlzYWJsZWQsLm1hdC1pY29uLWJ1dHRvbi5tYXQtcHJpbWFyeS5tYXQtYnV0dG9uLWRpc2FibGVkLC5tYXQtaWNvbi1idXR0b24ubWF0LWFjY2VudC5tYXQtYnV0dG9uLWRpc2FibGVkLC5tYXQtaWNvbi1idXR0b24ubWF0LXdhcm4ubWF0LWJ1dHRvbi1kaXNhYmxlZCwubWF0LWljb24tYnV0dG9uLm1hdC1idXR0b24tZGlzYWJsZWQubWF0LWJ1dHRvbi1kaXNhYmxlZCwubWF0LXN0cm9rZWQtYnV0dG9uLm1hdC1wcmltYXJ5Lm1hdC1idXR0b24tZGlzYWJsZWQsLm1hdC1zdHJva2VkLWJ1dHRvbi5tYXQtYWNjZW50Lm1hdC1idXR0b24tZGlzYWJsZWQsLm1hdC1zdHJva2VkLWJ1dHRvbi5tYXQtd2Fybi5tYXQtYnV0dG9uLWRpc2FibGVkLC5tYXQtc3Ryb2tlZC1idXR0b24ubWF0LWJ1dHRvbi1kaXNhYmxlZC5tYXQtYnV0dG9uLWRpc2FibGVke2NvbG9yOnJnYmEoMCwwLDAsLjI2KX0ubWF0LWJ1dHRvbi5tYXQtcHJpbWFyeSAubWF0LWJ1dHRvbi1mb2N1cy1vdmVybGF5LC5tYXQtaWNvbi1idXR0b24ubWF0LXByaW1hcnkgLm1hdC1idXR0b24tZm9jdXMtb3ZlcmxheSwubWF0LXN0cm9rZWQtYnV0dG9uLm1hdC1wcmltYXJ5IC5tYXQtYnV0dG9uLWZvY3VzLW92ZXJsYXl7YmFja2dyb3VuZC1jb2xvcjojZjU3YzAwfS5tYXQtYnV0dG9uLm1hdC1hY2NlbnQgLm1hdC1idXR0b24tZm9jdXMtb3ZlcmxheSwubWF0LWljb24tYnV0dG9uLm1hdC1hY2NlbnQgLm1hdC1idXR0b24tZm9jdXMtb3ZlcmxheSwubWF0LXN0cm9rZWQtYnV0dG9uLm1hdC1hY2NlbnQgLm1hdC1idXR0b24tZm9jdXMtb3ZlcmxheXtiYWNrZ3JvdW5kLWNvbG9yOiNmZjk4MDB9Lm1hdC1idXR0b24ubWF0LXdhcm4gLm1hdC1idXR0b24tZm9jdXMtb3ZlcmxheSwubWF0LWljb24tYnV0dG9uLm1hdC13YXJuIC5tYXQtYnV0dG9uLWZvY3VzLW92ZXJsYXksLm1hdC1zdHJva2VkLWJ1dHRvbi5tYXQtd2FybiAubWF0LWJ1dHRvbi1mb2N1cy1vdmVybGF5e2JhY2tncm91bmQtY29sb3I6I2Y0NDMzNn0ubWF0LWJ1dHRvbi5tYXQtYnV0dG9uLWRpc2FibGVkIC5tYXQtYnV0dG9uLWZvY3VzLW92ZXJsYXksLm1hdC1pY29uLWJ1dHRvbi5tYXQtYnV0dG9uLWRpc2FibGVkIC5tYXQtYnV0dG9uLWZvY3VzLW92ZXJsYXksLm1hdC1zdHJva2VkLWJ1dHRvbi5tYXQtYnV0dG9uLWRpc2FibGVkIC5tYXQtYnV0dG9uLWZvY3VzLW92ZXJsYXl7YmFja2dyb3VuZC1jb2xvcjp0cmFuc3BhcmVudH0ubWF0LWJ1dHRvbiAubWF0LXJpcHBsZS1lbGVtZW50LC5tYXQtaWNvbi1idXR0b24gLm1hdC1yaXBwbGUtZWxlbWVudCwubWF0LXN0cm9rZWQtYnV0dG9uIC5tYXQtcmlwcGxlLWVsZW1lbnR7b3BhY2l0eTouMTtiYWNrZ3JvdW5kLWNvbG9yOmN1cnJlbnRDb2xvcn0ubWF0LWJ1dHRvbi1mb2N1cy1vdmVybGF5e2JhY2tncm91bmQ6IzAwMH0ubWF0LXN0cm9rZWQtYnV0dG9uOm5vdCgubWF0LWJ1dHRvbi1kaXNhYmxlZCl7Ym9yZGVyLWNvbG9yOnJnYmEoMCwwLDAsLjEyKX0ubWF0LWZsYXQtYnV0dG9uLC5tYXQtcmFpc2VkLWJ1dHRvbiwubWF0LWZhYiwubWF0LW1pbmktZmFie2NvbG9yOiMyMTIxMjE7YmFja2dyb3VuZC1jb2xvcjojZmZmfS5tYXQtZmxhdC1idXR0b24ubWF0LXByaW1hcnksLm1hdC1yYWlzZWQtYnV0dG9uLm1hdC1wcmltYXJ5LC5tYXQtZmFiLm1hdC1wcmltYXJ5LC5tYXQtbWluaS1mYWIubWF0LXByaW1hcnl7Y29sb3I6I2ZmZn0ubWF0LWZsYXQtYnV0dG9uLm1hdC1hY2NlbnQsLm1hdC1yYWlzZWQtYnV0dG9uLm1hdC1hY2NlbnQsLm1hdC1mYWIubWF0LWFjY2VudCwubWF0LW1pbmktZmFiLm1hdC1hY2NlbnR7Y29sb3I6I2ZmZn0ubWF0LWZsYXQtYnV0dG9uLm1hdC13YXJuLC5tYXQtcmFpc2VkLWJ1dHRvbi5tYXQtd2FybiwubWF0LWZhYi5tYXQtd2FybiwubWF0LW1pbmktZmFiLm1hdC13YXJue2NvbG9yOiNmZmZ9Lm1hdC1mbGF0LWJ1dHRvbi5tYXQtcHJpbWFyeS5tYXQtYnV0dG9uLWRpc2FibGVkLC5tYXQtZmxhdC1idXR0b24ubWF0LWFjY2VudC5tYXQtYnV0dG9uLWRpc2FibGVkLC5tYXQtZmxhdC1idXR0b24ubWF0LXdhcm4ubWF0LWJ1dHRvbi1kaXNhYmxlZCwubWF0LWZsYXQtYnV0dG9uLm1hdC1idXR0b24tZGlzYWJsZWQubWF0LWJ1dHRvbi1kaXNhYmxlZCwubWF0LXJhaXNlZC1idXR0b24ubWF0LXByaW1hcnkubWF0LWJ1dHRvbi1kaXNhYmxlZCwubWF0LXJhaXNlZC1idXR0b24ubWF0LWFjY2VudC5tYXQtYnV0dG9uLWRpc2FibGVkLC5tYXQtcmFpc2VkLWJ1dHRvbi5tYXQtd2Fybi5tYXQtYnV0dG9uLWRpc2FibGVkLC5tYXQtcmFpc2VkLWJ1dHRvbi5tYXQtYnV0dG9uLWRpc2FibGVkLm1hdC1idXR0b24tZGlzYWJsZWQsLm1hdC1mYWIubWF0LXByaW1hcnkubWF0LWJ1dHRvbi1kaXNhYmxlZCwubWF0LWZhYi5tYXQtYWNjZW50Lm1hdC1idXR0b24tZGlzYWJsZWQsLm1hdC1mYWIubWF0LXdhcm4ubWF0LWJ1dHRvbi1kaXNhYmxlZCwubWF0LWZhYi5tYXQtYnV0dG9uLWRpc2FibGVkLm1hdC1idXR0b24tZGlzYWJsZWQsLm1hdC1taW5pLWZhYi5tYXQtcHJpbWFyeS5tYXQtYnV0dG9uLWRpc2FibGVkLC5tYXQtbWluaS1mYWIubWF0LWFjY2VudC5tYXQtYnV0dG9uLWRpc2FibGVkLC5tYXQtbWluaS1mYWIubWF0LXdhcm4ubWF0LWJ1dHRvbi1kaXNhYmxlZCwubWF0LW1pbmktZmFiLm1hdC1idXR0b24tZGlzYWJsZWQubWF0LWJ1dHRvbi1kaXNhYmxlZHtjb2xvcjpyZ2JhKDAsMCwwLC4yNil9Lm1hdC1mbGF0LWJ1dHRvbi5tYXQtcHJpbWFyeSwubWF0LXJhaXNlZC1idXR0b24ubWF0LXByaW1hcnksLm1hdC1mYWIubWF0LXByaW1hcnksLm1hdC1taW5pLWZhYi5tYXQtcHJpbWFyeXtiYWNrZ3JvdW5kLWNvbG9yOiNmNTdjMDB9Lm1hdC1mbGF0LWJ1dHRvbi5tYXQtYWNjZW50LC5tYXQtcmFpc2VkLWJ1dHRvbi5tYXQtYWNjZW50LC5tYXQtZmFiLm1hdC1hY2NlbnQsLm1hdC1taW5pLWZhYi5tYXQtYWNjZW50e2JhY2tncm91bmQtY29sb3I6I2ZmOTgwMH0ubWF0LWZsYXQtYnV0dG9uLm1hdC13YXJuLC5tYXQtcmFpc2VkLWJ1dHRvbi5tYXQtd2FybiwubWF0LWZhYi5tYXQtd2FybiwubWF0LW1pbmktZmFiLm1hdC13YXJue2JhY2tncm91bmQtY29sb3I6I2Y0NDMzNn0ubWF0LWZsYXQtYnV0dG9uLm1hdC1wcmltYXJ5Lm1hdC1idXR0b24tZGlzYWJsZWQsLm1hdC1mbGF0LWJ1dHRvbi5tYXQtYWNjZW50Lm1hdC1idXR0b24tZGlzYWJsZWQsLm1hdC1mbGF0LWJ1dHRvbi5tYXQtd2Fybi5tYXQtYnV0dG9uLWRpc2FibGVkLC5tYXQtZmxhdC1idXR0b24ubWF0LWJ1dHRvbi1kaXNhYmxlZC5tYXQtYnV0dG9uLWRpc2FibGVkLC5tYXQtcmFpc2VkLWJ1dHRvbi5tYXQtcHJpbWFyeS5tYXQtYnV0dG9uLWRpc2FibGVkLC5tYXQtcmFpc2VkLWJ1dHRvbi5tYXQtYWNjZW50Lm1hdC1idXR0b24tZGlzYWJsZWQsLm1hdC1yYWlzZWQtYnV0dG9uLm1hdC13YXJuLm1hdC1idXR0b24tZGlzYWJsZWQsLm1hdC1yYWlzZWQtYnV0dG9uLm1hdC1idXR0b24tZGlzYWJsZWQubWF0LWJ1dHRvbi1kaXNhYmxlZCwubWF0LWZhYi5tYXQtcHJpbWFyeS5tYXQtYnV0dG9uLWRpc2FibGVkLC5tYXQtZmFiLm1hdC1hY2NlbnQubWF0LWJ1dHRvbi1kaXNhYmxlZCwubWF0LWZhYi5tYXQtd2Fybi5tYXQtYnV0dG9uLWRpc2FibGVkLC5tYXQtZmFiLm1hdC1idXR0b24tZGlzYWJsZWQubWF0LWJ1dHRvbi1kaXNhYmxlZCwubWF0LW1pbmktZmFiLm1hdC1wcmltYXJ5Lm1hdC1idXR0b24tZGlzYWJsZWQsLm1hdC1taW5pLWZhYi5tYXQtYWNjZW50Lm1hdC1idXR0b24tZGlzYWJsZWQsLm1hdC1taW5pLWZhYi5tYXQtd2Fybi5tYXQtYnV0dG9uLWRpc2FibGVkLC5tYXQtbWluaS1mYWIubWF0LWJ1dHRvbi1kaXNhYmxlZC5tYXQtYnV0dG9uLWRpc2FibGVke2JhY2tncm91bmQtY29sb3I6cmdiYSgwLDAsMCwuMTIpfS5tYXQtZmxhdC1idXR0b24ubWF0LXByaW1hcnkgLm1hdC1yaXBwbGUtZWxlbWVudCwubWF0LXJhaXNlZC1idXR0b24ubWF0LXByaW1hcnkgLm1hdC1yaXBwbGUtZWxlbWVudCwubWF0LWZhYi5tYXQtcHJpbWFyeSAubWF0LXJpcHBsZS1lbGVtZW50LC5tYXQtbWluaS1mYWIubWF0LXByaW1hcnkgLm1hdC1yaXBwbGUtZWxlbWVudHtiYWNrZ3JvdW5kLWNvbG9yOnJnYmEoMjU1LDI1NSwyNTUsLjEpfS5tYXQtZmxhdC1idXR0b24ubWF0LWFjY2VudCAubWF0LXJpcHBsZS1lbGVtZW50LC5tYXQtcmFpc2VkLWJ1dHRvbi5tYXQtYWNjZW50IC5tYXQtcmlwcGxlLWVsZW1lbnQsLm1hdC1mYWIubWF0LWFjY2VudCAubWF0LXJpcHBsZS1lbGVtZW50LC5tYXQtbWluaS1mYWIubWF0LWFjY2VudCAubWF0LXJpcHBsZS1lbGVtZW50e2JhY2tncm91bmQtY29sb3I6cmdiYSgyNTUsMjU1LDI1NSwuMSl9Lm1hdC1mbGF0LWJ1dHRvbi5tYXQtd2FybiAubWF0LXJpcHBsZS1lbGVtZW50LC5tYXQtcmFpc2VkLWJ1dHRvbi5tYXQtd2FybiAubWF0LXJpcHBsZS1lbGVtZW50LC5tYXQtZmFiLm1hdC13YXJuIC5tYXQtcmlwcGxlLWVsZW1lbnQsLm1hdC1taW5pLWZhYi5tYXQtd2FybiAubWF0LXJpcHBsZS1lbGVtZW50e2JhY2tncm91bmQtY29sb3I6cmdiYSgyNTUsMjU1LDI1NSwuMSl9Lm1hdC1zdHJva2VkLWJ1dHRvbjpub3QoW2NsYXNzKj1tYXQtZWxldmF0aW9uLXpdKSwubWF0LWZsYXQtYnV0dG9uOm5vdChbY2xhc3MqPW1hdC1lbGV2YXRpb24tel0pe2JveC1zaGFkb3c6MHB4IDBweCAwcHggMHB4IHJnYmEoMCwgMCwgMCwgMC4yKSwwcHggMHB4IDBweCAwcHggcmdiYSgwLCAwLCAwLCAwLjE0KSwwcHggMHB4IDBweCAwcHggcmdiYSgwLCAwLCAwLCAwLjEyKX0ubWF0LXJhaXNlZC1idXR0b246bm90KFtjbGFzcyo9bWF0LWVsZXZhdGlvbi16XSl7Ym94LXNoYWRvdzowcHggM3B4IDFweCAtMnB4IHJnYmEoMCwgMCwgMCwgMC4yKSwwcHggMnB4IDJweCAwcHggcmdiYSgwLCAwLCAwLCAwLjE0KSwwcHggMXB4IDVweCAwcHggcmdiYSgwLCAwLCAwLCAwLjEyKX0ubWF0LXJhaXNlZC1idXR0b246bm90KC5tYXQtYnV0dG9uLWRpc2FibGVkKTphY3RpdmU6bm90KFtjbGFzcyo9bWF0LWVsZXZhdGlvbi16XSl7Ym94LXNoYWRvdzowcHggNXB4IDVweCAtM3B4IHJnYmEoMCwgMCwgMCwgMC4yKSwwcHggOHB4IDEwcHggMXB4IHJnYmEoMCwgMCwgMCwgMC4xNCksMHB4IDNweCAxNHB4IDJweCByZ2JhKDAsIDAsIDAsIDAuMTIpfS5tYXQtcmFpc2VkLWJ1dHRvbi5tYXQtYnV0dG9uLWRpc2FibGVkOm5vdChbY2xhc3MqPW1hdC1lbGV2YXRpb24tel0pe2JveC1zaGFkb3c6MHB4IDBweCAwcHggMHB4IHJnYmEoMCwgMCwgMCwgMC4yKSwwcHggMHB4IDBweCAwcHggcmdiYSgwLCAwLCAwLCAwLjE0KSwwcHggMHB4IDBweCAwcHggcmdiYSgwLCAwLCAwLCAwLjEyKX0ubWF0LWZhYjpub3QoW2NsYXNzKj1tYXQtZWxldmF0aW9uLXpdKSwubWF0LW1pbmktZmFiOm5vdChbY2xhc3MqPW1hdC1lbGV2YXRpb24tel0pe2JveC1zaGFkb3c6MHB4IDNweCA1cHggLTFweCByZ2JhKDAsIDAsIDAsIDAuMiksMHB4IDZweCAxMHB4IDBweCByZ2JhKDAsIDAsIDAsIDAuMTQpLDBweCAxcHggMThweCAwcHggcmdiYSgwLCAwLCAwLCAwLjEyKX0ubWF0LWZhYjpub3QoLm1hdC1idXR0b24tZGlzYWJsZWQpOmFjdGl2ZTpub3QoW2NsYXNzKj1tYXQtZWxldmF0aW9uLXpdKSwubWF0LW1pbmktZmFiOm5vdCgubWF0LWJ1dHRvbi1kaXNhYmxlZCk6YWN0aXZlOm5vdChbY2xhc3MqPW1hdC1lbGV2YXRpb24tel0pe2JveC1zaGFkb3c6MHB4IDdweCA4cHggLTRweCByZ2JhKDAsIDAsIDAsIDAuMiksMHB4IDEycHggMTdweCAycHggcmdiYSgwLCAwLCAwLCAwLjE0KSwwcHggNXB4IDIycHggNHB4IHJnYmEoMCwgMCwgMCwgMC4xMil9Lm1hdC1mYWIubWF0LWJ1dHRvbi1kaXNhYmxlZDpub3QoW2NsYXNzKj1tYXQtZWxldmF0aW9uLXpdKSwubWF0LW1pbmktZmFiLm1hdC1idXR0b24tZGlzYWJsZWQ6bm90KFtjbGFzcyo9bWF0LWVsZXZhdGlvbi16XSl7Ym94LXNoYWRvdzowcHggMHB4IDBweCAwcHggcmdiYSgwLCAwLCAwLCAwLjIpLDBweCAwcHggMHB4IDBweCByZ2JhKDAsIDAsIDAsIDAuMTQpLDBweCAwcHggMHB4IDBweCByZ2JhKDAsIDAsIDAsIDAuMTIpfS5tYXQtYnV0dG9uLXRvZ2dsZS1zdGFuZGFsb25lLC5tYXQtYnV0dG9uLXRvZ2dsZS1ncm91cHtib3gtc2hhZG93OjBweCAzcHggMXB4IC0ycHggcmdiYSgwLCAwLCAwLCAwLjIpLDBweCAycHggMnB4IDBweCByZ2JhKDAsIDAsIDAsIDAuMTQpLDBweCAxcHggNXB4IDBweCByZ2JhKDAsIDAsIDAsIDAuMTIpfS5tYXQtYnV0dG9uLXRvZ2dsZS1zdGFuZGFsb25lLm1hdC1idXR0b24tdG9nZ2xlLWFwcGVhcmFuY2Utc3RhbmRhcmQsLm1hdC1idXR0b24tdG9nZ2xlLWdyb3VwLWFwcGVhcmFuY2Utc3RhbmRhcmR7Ym94LXNoYWRvdzpub25lfS5tYXQtYnV0dG9uLXRvZ2dsZXtjb2xvcjpyZ2JhKDAsMCwwLC4zOCl9Lm1hdC1idXR0b24tdG9nZ2xlIC5tYXQtYnV0dG9uLXRvZ2dsZS1mb2N1cy1vdmVybGF5e2JhY2tncm91bmQtY29sb3I6cmdiYSgwLDAsMCwuMTIpfS5tYXQtYnV0dG9uLXRvZ2dsZS1hcHBlYXJhbmNlLXN0YW5kYXJke2NvbG9yOiMyMTIxMjE7YmFja2dyb3VuZDojZmZmfS5tYXQtYnV0dG9uLXRvZ2dsZS1hcHBlYXJhbmNlLXN0YW5kYXJkIC5tYXQtYnV0dG9uLXRvZ2dsZS1mb2N1cy1vdmVybGF5e2JhY2tncm91bmQtY29sb3I6IzAwMH0ubWF0LWJ1dHRvbi10b2dnbGUtZ3JvdXAtYXBwZWFyYW5jZS1zdGFuZGFyZCAubWF0LWJ1dHRvbi10b2dnbGUrLm1hdC1idXR0b24tdG9nZ2xle2JvcmRlci1sZWZ0OnNvbGlkIDFweCByZ2JhKDAsMCwwLC4xMil9W2Rpcj1ydGxdIC5tYXQtYnV0dG9uLXRvZ2dsZS1ncm91cC1hcHBlYXJhbmNlLXN0YW5kYXJkIC5tYXQtYnV0dG9uLXRvZ2dsZSsubWF0LWJ1dHRvbi10b2dnbGV7Ym9yZGVyLWxlZnQ6bm9uZTtib3JkZXItcmlnaHQ6c29saWQgMXB4IHJnYmEoMCwwLDAsLjEyKX0ubWF0LWJ1dHRvbi10b2dnbGUtZ3JvdXAtYXBwZWFyYW5jZS1zdGFuZGFyZC5tYXQtYnV0dG9uLXRvZ2dsZS12ZXJ0aWNhbCAubWF0LWJ1dHRvbi10b2dnbGUrLm1hdC1idXR0b24tdG9nZ2xle2JvcmRlci1sZWZ0Om5vbmU7Ym9yZGVyLXJpZ2h0Om5vbmU7Ym9yZGVyLXRvcDpzb2xpZCAxcHggcmdiYSgwLDAsMCwuMTIpfS5tYXQtYnV0dG9uLXRvZ2dsZS1jaGVja2Vke2JhY2tncm91bmQtY29sb3I6I2UwZTBlMDtjb2xvcjojNjE2MTYxfS5tYXQtYnV0dG9uLXRvZ2dsZS1jaGVja2VkLm1hdC1idXR0b24tdG9nZ2xlLWFwcGVhcmFuY2Utc3RhbmRhcmR7Y29sb3I6IzIxMjEyMX0ubWF0LWJ1dHRvbi10b2dnbGUtZGlzYWJsZWR7Y29sb3I6cmdiYSgwLDAsMCwuMjYpO2JhY2tncm91bmQtY29sb3I6I2VlZX0ubWF0LWJ1dHRvbi10b2dnbGUtZGlzYWJsZWQubWF0LWJ1dHRvbi10b2dnbGUtYXBwZWFyYW5jZS1zdGFuZGFyZHtiYWNrZ3JvdW5kOiNmZmZ9Lm1hdC1idXR0b24tdG9nZ2xlLWRpc2FibGVkLm1hdC1idXR0b24tdG9nZ2xlLWNoZWNrZWR7YmFja2dyb3VuZC1jb2xvcjojYmRiZGJkfS5tYXQtYnV0dG9uLXRvZ2dsZS1zdGFuZGFsb25lLm1hdC1idXR0b24tdG9nZ2xlLWFwcGVhcmFuY2Utc3RhbmRhcmQsLm1hdC1idXR0b24tdG9nZ2xlLWdyb3VwLWFwcGVhcmFuY2Utc3RhbmRhcmR7Ym9yZGVyOnNvbGlkIDFweCByZ2JhKDAsMCwwLC4xMil9Lm1hdC1idXR0b24tdG9nZ2xlLWFwcGVhcmFuY2Utc3RhbmRhcmQgLm1hdC1idXR0b24tdG9nZ2xlLWxhYmVsLWNvbnRlbnR7bGluZS1oZWlnaHQ6NDhweH0ubWF0LWNhcmR7YmFja2dyb3VuZDojZmZmO2NvbG9yOiMyMTIxMjF9Lm1hdC1jYXJkOm5vdChbY2xhc3MqPW1hdC1lbGV2YXRpb24tel0pe2JveC1zaGFkb3c6MHB4IDJweCAxcHggLTFweCByZ2JhKDAsIDAsIDAsIDAuMiksMHB4IDFweCAxcHggMHB4IHJnYmEoMCwgMCwgMCwgMC4xNCksMHB4IDFweCAzcHggMHB4IHJnYmEoMCwgMCwgMCwgMC4xMil9Lm1hdC1jYXJkLm1hdC1jYXJkLWZsYXQ6bm90KFtjbGFzcyo9bWF0LWVsZXZhdGlvbi16XSl7Ym94LXNoYWRvdzowcHggMHB4IDBweCAwcHggcmdiYSgwLCAwLCAwLCAwLjIpLDBweCAwcHggMHB4IDBweCByZ2JhKDAsIDAsIDAsIDAuMTQpLDBweCAwcHggMHB4IDBweCByZ2JhKDAsIDAsIDAsIDAuMTIpfS5tYXQtY2FyZC1zdWJ0aXRsZXtjb2xvcjojNjE2MTYxfS5tYXQtY2hlY2tib3gtZnJhbWV7Ym9yZGVyLWNvbG9yOiM2MTYxNjF9Lm1hdC1jaGVja2JveC1jaGVja21hcmt7ZmlsbDojZmFmYWZhfS5tYXQtY2hlY2tib3gtY2hlY2ttYXJrLXBhdGh7c3Ryb2tlOiNmYWZhZmEgIWltcG9ydGFudH0ubWF0LWNoZWNrYm94LW1peGVkbWFya3tiYWNrZ3JvdW5kLWNvbG9yOiNmYWZhZmF9Lm1hdC1jaGVja2JveC1pbmRldGVybWluYXRlLm1hdC1wcmltYXJ5IC5tYXQtY2hlY2tib3gtYmFja2dyb3VuZCwubWF0LWNoZWNrYm94LWNoZWNrZWQubWF0LXByaW1hcnkgLm1hdC1jaGVja2JveC1iYWNrZ3JvdW5ke2JhY2tncm91bmQtY29sb3I6I2Y1N2MwMH0ubWF0LWNoZWNrYm94LWluZGV0ZXJtaW5hdGUubWF0LWFjY2VudCAubWF0LWNoZWNrYm94LWJhY2tncm91bmQsLm1hdC1jaGVja2JveC1jaGVja2VkLm1hdC1hY2NlbnQgLm1hdC1jaGVja2JveC1iYWNrZ3JvdW5ke2JhY2tncm91bmQtY29sb3I6I2ZmOTgwMH0ubWF0LWNoZWNrYm94LWluZGV0ZXJtaW5hdGUubWF0LXdhcm4gLm1hdC1jaGVja2JveC1iYWNrZ3JvdW5kLC5tYXQtY2hlY2tib3gtY2hlY2tlZC5tYXQtd2FybiAubWF0LWNoZWNrYm94LWJhY2tncm91bmR7YmFja2dyb3VuZC1jb2xvcjojZjQ0MzM2fS5tYXQtY2hlY2tib3gtZGlzYWJsZWQubWF0LWNoZWNrYm94LWNoZWNrZWQgLm1hdC1jaGVja2JveC1iYWNrZ3JvdW5kLC5tYXQtY2hlY2tib3gtZGlzYWJsZWQubWF0LWNoZWNrYm94LWluZGV0ZXJtaW5hdGUgLm1hdC1jaGVja2JveC1iYWNrZ3JvdW5ke2JhY2tncm91bmQtY29sb3I6I2IwYjBiMH0ubWF0LWNoZWNrYm94LWRpc2FibGVkOm5vdCgubWF0LWNoZWNrYm94LWNoZWNrZWQpIC5tYXQtY2hlY2tib3gtZnJhbWV7Ym9yZGVyLWNvbG9yOiNiMGIwYjB9Lm1hdC1jaGVja2JveC1kaXNhYmxlZCAubWF0LWNoZWNrYm94LWxhYmVse2NvbG9yOiM2MTYxNjF9Lm1hdC1jaGVja2JveCAubWF0LXJpcHBsZS1lbGVtZW50e2JhY2tncm91bmQtY29sb3I6IzAwMH0ubWF0LWNoZWNrYm94LWNoZWNrZWQ6bm90KC5tYXQtY2hlY2tib3gtZGlzYWJsZWQpLm1hdC1wcmltYXJ5IC5tYXQtcmlwcGxlLWVsZW1lbnQsLm1hdC1jaGVja2JveDphY3RpdmU6bm90KC5tYXQtY2hlY2tib3gtZGlzYWJsZWQpLm1hdC1wcmltYXJ5IC5tYXQtcmlwcGxlLWVsZW1lbnR7YmFja2dyb3VuZDojZjU3YzAwfS5tYXQtY2hlY2tib3gtY2hlY2tlZDpub3QoLm1hdC1jaGVja2JveC1kaXNhYmxlZCkubWF0LWFjY2VudCAubWF0LXJpcHBsZS1lbGVtZW50LC5tYXQtY2hlY2tib3g6YWN0aXZlOm5vdCgubWF0LWNoZWNrYm94LWRpc2FibGVkKS5tYXQtYWNjZW50IC5tYXQtcmlwcGxlLWVsZW1lbnR7YmFja2dyb3VuZDojZmY5ODAwfS5tYXQtY2hlY2tib3gtY2hlY2tlZDpub3QoLm1hdC1jaGVja2JveC1kaXNhYmxlZCkubWF0LXdhcm4gLm1hdC1yaXBwbGUtZWxlbWVudCwubWF0LWNoZWNrYm94OmFjdGl2ZTpub3QoLm1hdC1jaGVja2JveC1kaXNhYmxlZCkubWF0LXdhcm4gLm1hdC1yaXBwbGUtZWxlbWVudHtiYWNrZ3JvdW5kOiNmNDQzMzZ9Lm1hdC1jaGlwLm1hdC1zdGFuZGFyZC1jaGlwe2JhY2tncm91bmQtY29sb3I6I2UwZTBlMDtjb2xvcjojMjEyMTIxfS5tYXQtY2hpcC5tYXQtc3RhbmRhcmQtY2hpcCAubWF0LWNoaXAtcmVtb3Zle2NvbG9yOiMyMTIxMjE7b3BhY2l0eTouNH0ubWF0LWNoaXAubWF0LXN0YW5kYXJkLWNoaXA6bm90KC5tYXQtY2hpcC1kaXNhYmxlZCk6YWN0aXZle2JveC1zaGFkb3c6MHB4IDNweCAzcHggLTJweCByZ2JhKDAsIDAsIDAsIDAuMiksMHB4IDNweCA0cHggMHB4IHJnYmEoMCwgMCwgMCwgMC4xNCksMHB4IDFweCA4cHggMHB4IHJnYmEoMCwgMCwgMCwgMC4xMil9Lm1hdC1jaGlwLm1hdC1zdGFuZGFyZC1jaGlwOm5vdCgubWF0LWNoaXAtZGlzYWJsZWQpIC5tYXQtY2hpcC1yZW1vdmU6aG92ZXJ7b3BhY2l0eTouNTR9Lm1hdC1jaGlwLm1hdC1zdGFuZGFyZC1jaGlwLm1hdC1jaGlwLWRpc2FibGVke29wYWNpdHk6LjR9Lm1hdC1jaGlwLm1hdC1zdGFuZGFyZC1jaGlwOjphZnRlcntiYWNrZ3JvdW5kOiMwMDB9Lm1hdC1jaGlwLm1hdC1zdGFuZGFyZC1jaGlwLm1hdC1jaGlwLXNlbGVjdGVkLm1hdC1wcmltYXJ5e2JhY2tncm91bmQtY29sb3I6I2Y1N2MwMDtjb2xvcjojZmZmfS5tYXQtY2hpcC5tYXQtc3RhbmRhcmQtY2hpcC5tYXQtY2hpcC1zZWxlY3RlZC5tYXQtcHJpbWFyeSAubWF0LWNoaXAtcmVtb3Zle2NvbG9yOiNmZmY7b3BhY2l0eTouNH0ubWF0LWNoaXAubWF0LXN0YW5kYXJkLWNoaXAubWF0LWNoaXAtc2VsZWN0ZWQubWF0LXByaW1hcnkgLm1hdC1yaXBwbGUtZWxlbWVudHtiYWNrZ3JvdW5kLWNvbG9yOnJnYmEoMjU1LDI1NSwyNTUsLjEpfS5tYXQtY2hpcC5tYXQtc3RhbmRhcmQtY2hpcC5tYXQtY2hpcC1zZWxlY3RlZC5tYXQtd2FybntiYWNrZ3JvdW5kLWNvbG9yOiNmNDQzMzY7Y29sb3I6I2ZmZn0ubWF0LWNoaXAubWF0LXN0YW5kYXJkLWNoaXAubWF0LWNoaXAtc2VsZWN0ZWQubWF0LXdhcm4gLm1hdC1jaGlwLXJlbW92ZXtjb2xvcjojZmZmO29wYWNpdHk6LjR9Lm1hdC1jaGlwLm1hdC1zdGFuZGFyZC1jaGlwLm1hdC1jaGlwLXNlbGVjdGVkLm1hdC13YXJuIC5tYXQtcmlwcGxlLWVsZW1lbnR7YmFja2dyb3VuZC1jb2xvcjpyZ2JhKDI1NSwyNTUsMjU1LC4xKX0ubWF0LWNoaXAubWF0LXN0YW5kYXJkLWNoaXAubWF0LWNoaXAtc2VsZWN0ZWQubWF0LWFjY2VudHtiYWNrZ3JvdW5kLWNvbG9yOiNmZjk4MDA7Y29sb3I6I2ZmZn0ubWF0LWNoaXAubWF0LXN0YW5kYXJkLWNoaXAubWF0LWNoaXAtc2VsZWN0ZWQubWF0LWFjY2VudCAubWF0LWNoaXAtcmVtb3Zle2NvbG9yOiNmZmY7b3BhY2l0eTouNH0ubWF0LWNoaXAubWF0LXN0YW5kYXJkLWNoaXAubWF0LWNoaXAtc2VsZWN0ZWQubWF0LWFjY2VudCAubWF0LXJpcHBsZS1lbGVtZW50e2JhY2tncm91bmQtY29sb3I6cmdiYSgyNTUsMjU1LDI1NSwuMSl9Lm1hdC10YWJsZXtiYWNrZ3JvdW5kOiNmZmZ9Lm1hdC10YWJsZSB0aGVhZCwubWF0LXRhYmxlIHRib2R5LC5tYXQtdGFibGUgdGZvb3QsbWF0LWhlYWRlci1yb3csbWF0LXJvdyxtYXQtZm9vdGVyLXJvdyxbbWF0LWhlYWRlci1yb3ddLFttYXQtcm93XSxbbWF0LWZvb3Rlci1yb3ddLC5tYXQtdGFibGUtc3RpY2t5e2JhY2tncm91bmQ6aW5oZXJpdH1tYXQtcm93LG1hdC1oZWFkZXItcm93LG1hdC1mb290ZXItcm93LHRoLm1hdC1oZWFkZXItY2VsbCx0ZC5tYXQtY2VsbCx0ZC5tYXQtZm9vdGVyLWNlbGx7Ym9yZGVyLWJvdHRvbS1jb2xvcjpyZ2JhKDAsMCwwLC4xMil9Lm1hdC1oZWFkZXItY2VsbHtjb2xvcjojNjE2MTYxfS5tYXQtY2VsbCwubWF0LWZvb3Rlci1jZWxse2NvbG9yOiMyMTIxMjF9Lm1hdC1jYWxlbmRhci1hcnJvd3tib3JkZXItdG9wLWNvbG9yOnJnYmEoMCwwLDAsLjU0KX0ubWF0LWRhdGVwaWNrZXItdG9nZ2xlLC5tYXQtZGF0ZXBpY2tlci1jb250ZW50IC5tYXQtY2FsZW5kYXItbmV4dC1idXR0b24sLm1hdC1kYXRlcGlja2VyLWNvbnRlbnQgLm1hdC1jYWxlbmRhci1wcmV2aW91cy1idXR0b257Y29sb3I6cmdiYSgwLDAsMCwuNTQpfS5tYXQtY2FsZW5kYXItdGFibGUtaGVhZGVye2NvbG9yOnJnYmEoMCwwLDAsLjM4KX0ubWF0LWNhbGVuZGFyLXRhYmxlLWhlYWRlci1kaXZpZGVyOjphZnRlcntiYWNrZ3JvdW5kOnJnYmEoMCwwLDAsLjEyKX0ubWF0LWNhbGVuZGFyLWJvZHktbGFiZWx7Y29sb3I6IzYxNjE2MX0ubWF0LWNhbGVuZGFyLWJvZHktY2VsbC1jb250ZW50LC5tYXQtZGF0ZS1yYW5nZS1pbnB1dC1zZXBhcmF0b3J7Y29sb3I6IzIxMjEyMTtib3JkZXItY29sb3I6dHJhbnNwYXJlbnR9Lm1hdC1jYWxlbmRhci1ib2R5LWRpc2FibGVkPi5tYXQtY2FsZW5kYXItYm9keS1jZWxsLWNvbnRlbnQ6bm90KC5tYXQtY2FsZW5kYXItYm9keS1zZWxlY3RlZCk6bm90KC5tYXQtY2FsZW5kYXItYm9keS1jb21wYXJpc29uLWlkZW50aWNhbCl7Y29sb3I6Izc1NzU3NX0ubWF0LWZvcm0tZmllbGQtZGlzYWJsZWQgLm1hdC1kYXRlLXJhbmdlLWlucHV0LXNlcGFyYXRvcntjb2xvcjojNzU3NTc1fS5tYXQtY2FsZW5kYXItYm9keS1jZWxsOm5vdCgubWF0LWNhbGVuZGFyLWJvZHktZGlzYWJsZWQpOmhvdmVyPi5tYXQtY2FsZW5kYXItYm9keS1jZWxsLWNvbnRlbnQ6bm90KC5tYXQtY2FsZW5kYXItYm9keS1zZWxlY3RlZCk6bm90KC5tYXQtY2FsZW5kYXItYm9keS1jb21wYXJpc29uLWlkZW50aWNhbCksLmNkay1rZXlib2FyZC1mb2N1c2VkIC5tYXQtY2FsZW5kYXItYm9keS1hY3RpdmU+Lm1hdC1jYWxlbmRhci1ib2R5LWNlbGwtY29udGVudDpub3QoLm1hdC1jYWxlbmRhci1ib2R5LXNlbGVjdGVkKTpub3QoLm1hdC1jYWxlbmRhci1ib2R5LWNvbXBhcmlzb24taWRlbnRpY2FsKSwuY2RrLXByb2dyYW0tZm9jdXNlZCAubWF0LWNhbGVuZGFyLWJvZHktYWN0aXZlPi5tYXQtY2FsZW5kYXItYm9keS1jZWxsLWNvbnRlbnQ6bm90KC5tYXQtY2FsZW5kYXItYm9keS1zZWxlY3RlZCk6bm90KC5tYXQtY2FsZW5kYXItYm9keS1jb21wYXJpc29uLWlkZW50aWNhbCl7YmFja2dyb3VuZC1jb2xvcjpyZ2JhKDAsMCwwLC4wNCl9Lm1hdC1jYWxlbmRhci1ib2R5LWluLXByZXZpZXd7Y29sb3I6cmdiYSgwLDAsMCwuMjQpfS5tYXQtY2FsZW5kYXItYm9keS10b2RheTpub3QoLm1hdC1jYWxlbmRhci1ib2R5LXNlbGVjdGVkKTpub3QoLm1hdC1jYWxlbmRhci1ib2R5LWNvbXBhcmlzb24taWRlbnRpY2FsKXtib3JkZXItY29sb3I6cmdiYSgwLDAsMCwuMzgpfS5tYXQtY2FsZW5kYXItYm9keS1kaXNhYmxlZD4ubWF0LWNhbGVuZGFyLWJvZHktdG9kYXk6bm90KC5tYXQtY2FsZW5kYXItYm9keS1zZWxlY3RlZCk6bm90KC5tYXQtY2FsZW5kYXItYm9keS1jb21wYXJpc29uLWlkZW50aWNhbCl7Ym9yZGVyLWNvbG9yOnJnYmEoMCwwLDAsLjE4KX0ubWF0LWNhbGVuZGFyLWJvZHktaW4tcmFuZ2U6OmJlZm9yZXtiYWNrZ3JvdW5kOnJnYmEoMjQ1LDEyNCwwLC4yKX0ubWF0LWNhbGVuZGFyLWJvZHktY29tcGFyaXNvbi1pZGVudGljYWwsLm1hdC1jYWxlbmRhci1ib2R5LWluLWNvbXBhcmlzb24tcmFuZ2U6OmJlZm9yZXtiYWNrZ3JvdW5kOnJnYmEoMjQ5LDE3MSwwLC4yKX0ubWF0LWNhbGVuZGFyLWJvZHktY29tcGFyaXNvbi1icmlkZ2Utc3RhcnQ6OmJlZm9yZSxbZGlyPXJ0bF0gLm1hdC1jYWxlbmRhci1ib2R5LWNvbXBhcmlzb24tYnJpZGdlLWVuZDo6YmVmb3Jle2JhY2tncm91bmQ6bGluZWFyLWdyYWRpZW50KHRvIHJpZ2h0LCByZ2JhKDI0NSwgMTI0LCAwLCAwLjIpIDUwJSwgcmdiYSgyNDksIDE3MSwgMCwgMC4yKSA1MCUpfS5tYXQtY2FsZW5kYXItYm9keS1jb21wYXJpc29uLWJyaWRnZS1lbmQ6OmJlZm9yZSxbZGlyPXJ0bF0gLm1hdC1jYWxlbmRhci1ib2R5LWNvbXBhcmlzb24tYnJpZGdlLXN0YXJ0OjpiZWZvcmV7YmFja2dyb3VuZDpsaW5lYXItZ3JhZGllbnQodG8gbGVmdCwgcmdiYSgyNDUsIDEyNCwgMCwgMC4yKSA1MCUsIHJnYmEoMjQ5LCAxNzEsIDAsIDAuMikgNTAlKX0ubWF0LWNhbGVuZGFyLWJvZHktaW4tcmFuZ2U+Lm1hdC1jYWxlbmRhci1ib2R5LWNvbXBhcmlzb24taWRlbnRpY2FsLC5tYXQtY2FsZW5kYXItYm9keS1pbi1jb21wYXJpc29uLXJhbmdlLm1hdC1jYWxlbmRhci1ib2R5LWluLXJhbmdlOjphZnRlcntiYWNrZ3JvdW5kOiNhOGRhYjV9Lm1hdC1jYWxlbmRhci1ib2R5LWNvbXBhcmlzb24taWRlbnRpY2FsLm1hdC1jYWxlbmRhci1ib2R5LXNlbGVjdGVkLC5tYXQtY2FsZW5kYXItYm9keS1pbi1jb21wYXJpc29uLXJhbmdlPi5tYXQtY2FsZW5kYXItYm9keS1zZWxlY3RlZHtiYWNrZ3JvdW5kOiM0NmEzNWV9Lm1hdC1jYWxlbmRhci1ib2R5LXNlbGVjdGVke2JhY2tncm91bmQtY29sb3I6I2Y1N2MwMDtjb2xvcjojZmZmfS5tYXQtY2FsZW5kYXItYm9keS1kaXNhYmxlZD4ubWF0LWNhbGVuZGFyLWJvZHktc2VsZWN0ZWR7YmFja2dyb3VuZC1jb2xvcjpyZ2JhKDI0NSwxMjQsMCwuNCl9Lm1hdC1jYWxlbmRhci1ib2R5LXRvZGF5Lm1hdC1jYWxlbmRhci1ib2R5LXNlbGVjdGVke2JveC1zaGFkb3c6aW5zZXQgMCAwIDAgMXB4ICNmZmZ9Lm1hdC1kYXRlcGlja2VyLWNvbnRlbnR7Ym94LXNoYWRvdzowcHggMnB4IDRweCAtMXB4IHJnYmEoMCwgMCwgMCwgMC4yKSwwcHggNHB4IDVweCAwcHggcmdiYSgwLCAwLCAwLCAwLjE0KSwwcHggMXB4IDEwcHggMHB4IHJnYmEoMCwgMCwgMCwgMC4xMik7YmFja2dyb3VuZC1jb2xvcjojZmZmO2NvbG9yOiMyMTIxMjF9Lm1hdC1kYXRlcGlja2VyLWNvbnRlbnQubWF0LWFjY2VudCAubWF0LWNhbGVuZGFyLWJvZHktaW4tcmFuZ2U6OmJlZm9yZXtiYWNrZ3JvdW5kOnJnYmEoMjU1LDE1MiwwLC4yKX0ubWF0LWRhdGVwaWNrZXItY29udGVudC5tYXQtYWNjZW50IC5tYXQtY2FsZW5kYXItYm9keS1jb21wYXJpc29uLWlkZW50aWNhbCwubWF0LWRhdGVwaWNrZXItY29udGVudC5tYXQtYWNjZW50IC5tYXQtY2FsZW5kYXItYm9keS1pbi1jb21wYXJpc29uLXJhbmdlOjpiZWZvcmV7YmFja2dyb3VuZDpyZ2JhKDI0OSwxNzEsMCwuMil9Lm1hdC1kYXRlcGlja2VyLWNvbnRlbnQubWF0LWFjY2VudCAubWF0LWNhbGVuZGFyLWJvZHktY29tcGFyaXNvbi1icmlkZ2Utc3RhcnQ6OmJlZm9yZSwubWF0LWRhdGVwaWNrZXItY29udGVudC5tYXQtYWNjZW50IFtkaXI9cnRsXSAubWF0LWNhbGVuZGFyLWJvZHktY29tcGFyaXNvbi1icmlkZ2UtZW5kOjpiZWZvcmV7YmFja2dyb3VuZDpsaW5lYXItZ3JhZGllbnQodG8gcmlnaHQsIHJnYmEoMjU1LCAxNTIsIDAsIDAuMikgNTAlLCByZ2JhKDI0OSwgMTcxLCAwLCAwLjIpIDUwJSl9Lm1hdC1kYXRlcGlja2VyLWNvbnRlbnQubWF0LWFjY2VudCAubWF0LWNhbGVuZGFyLWJvZHktY29tcGFyaXNvbi1icmlkZ2UtZW5kOjpiZWZvcmUsLm1hdC1kYXRlcGlja2VyLWNvbnRlbnQubWF0LWFjY2VudCBbZGlyPXJ0bF0gLm1hdC1jYWxlbmRhci1ib2R5LWNvbXBhcmlzb24tYnJpZGdlLXN0YXJ0OjpiZWZvcmV7YmFja2dyb3VuZDpsaW5lYXItZ3JhZGllbnQodG8gbGVmdCwgcmdiYSgyNTUsIDE1MiwgMCwgMC4yKSA1MCUsIHJnYmEoMjQ5LCAxNzEsIDAsIDAuMikgNTAlKX0ubWF0LWRhdGVwaWNrZXItY29udGVudC5tYXQtYWNjZW50IC5tYXQtY2FsZW5kYXItYm9keS1pbi1yYW5nZT4ubWF0LWNhbGVuZGFyLWJvZHktY29tcGFyaXNvbi1pZGVudGljYWwsLm1hdC1kYXRlcGlja2VyLWNvbnRlbnQubWF0LWFjY2VudCAubWF0LWNhbGVuZGFyLWJvZHktaW4tY29tcGFyaXNvbi1yYW5nZS5tYXQtY2FsZW5kYXItYm9keS1pbi1yYW5nZTo6YWZ0ZXJ7YmFja2dyb3VuZDojYThkYWI1fS5tYXQtZGF0ZXBpY2tlci1jb250ZW50Lm1hdC1hY2NlbnQgLm1hdC1jYWxlbmRhci1ib2R5LWNvbXBhcmlzb24taWRlbnRpY2FsLm1hdC1jYWxlbmRhci1ib2R5LXNlbGVjdGVkLC5tYXQtZGF0ZXBpY2tlci1jb250ZW50Lm1hdC1hY2NlbnQgLm1hdC1jYWxlbmRhci1ib2R5LWluLWNvbXBhcmlzb24tcmFuZ2U+Lm1hdC1jYWxlbmRhci1ib2R5LXNlbGVjdGVke2JhY2tncm91bmQ6IzQ2YTM1ZX0ubWF0LWRhdGVwaWNrZXItY29udGVudC5tYXQtYWNjZW50IC5tYXQtY2FsZW5kYXItYm9keS1zZWxlY3RlZHtiYWNrZ3JvdW5kLWNvbG9yOiNmZjk4MDA7Y29sb3I6I2ZmZn0ubWF0LWRhdGVwaWNrZXItY29udGVudC5tYXQtYWNjZW50IC5tYXQtY2FsZW5kYXItYm9keS1kaXNhYmxlZD4ubWF0LWNhbGVuZGFyLWJvZHktc2VsZWN0ZWR7YmFja2dyb3VuZC1jb2xvcjpyZ2JhKDI1NSwxNTIsMCwuNCl9Lm1hdC1kYXRlcGlja2VyLWNvbnRlbnQubWF0LWFjY2VudCAubWF0LWNhbGVuZGFyLWJvZHktdG9kYXkubWF0LWNhbGVuZGFyLWJvZHktc2VsZWN0ZWR7Ym94LXNoYWRvdzppbnNldCAwIDAgMCAxcHggI2ZmZn0ubWF0LWRhdGVwaWNrZXItY29udGVudC5tYXQtd2FybiAubWF0LWNhbGVuZGFyLWJvZHktaW4tcmFuZ2U6OmJlZm9yZXtiYWNrZ3JvdW5kOnJnYmEoMjQ0LDY3LDU0LC4yKX0ubWF0LWRhdGVwaWNrZXItY29udGVudC5tYXQtd2FybiAubWF0LWNhbGVuZGFyLWJvZHktY29tcGFyaXNvbi1pZGVudGljYWwsLm1hdC1kYXRlcGlja2VyLWNvbnRlbnQubWF0LXdhcm4gLm1hdC1jYWxlbmRhci1ib2R5LWluLWNvbXBhcmlzb24tcmFuZ2U6OmJlZm9yZXtiYWNrZ3JvdW5kOnJnYmEoMjQ5LDE3MSwwLC4yKX0ubWF0LWRhdGVwaWNrZXItY29udGVudC5tYXQtd2FybiAubWF0LWNhbGVuZGFyLWJvZHktY29tcGFyaXNvbi1icmlkZ2Utc3RhcnQ6OmJlZm9yZSwubWF0LWRhdGVwaWNrZXItY29udGVudC5tYXQtd2FybiBbZGlyPXJ0bF0gLm1hdC1jYWxlbmRhci1ib2R5LWNvbXBhcmlzb24tYnJpZGdlLWVuZDo6YmVmb3Jle2JhY2tncm91bmQ6bGluZWFyLWdyYWRpZW50KHRvIHJpZ2h0LCByZ2JhKDI0NCwgNjcsIDU0LCAwLjIpIDUwJSwgcmdiYSgyNDksIDE3MSwgMCwgMC4yKSA1MCUpfS5tYXQtZGF0ZXBpY2tlci1jb250ZW50Lm1hdC13YXJuIC5tYXQtY2FsZW5kYXItYm9keS1jb21wYXJpc29uLWJyaWRnZS1lbmQ6OmJlZm9yZSwubWF0LWRhdGVwaWNrZXItY29udGVudC5tYXQtd2FybiBbZGlyPXJ0bF0gLm1hdC1jYWxlbmRhci1ib2R5LWNvbXBhcmlzb24tYnJpZGdlLXN0YXJ0OjpiZWZvcmV7YmFja2dyb3VuZDpsaW5lYXItZ3JhZGllbnQodG8gbGVmdCwgcmdiYSgyNDQsIDY3LCA1NCwgMC4yKSA1MCUsIHJnYmEoMjQ5LCAxNzEsIDAsIDAuMikgNTAlKX0ubWF0LWRhdGVwaWNrZXItY29udGVudC5tYXQtd2FybiAubWF0LWNhbGVuZGFyLWJvZHktaW4tcmFuZ2U+Lm1hdC1jYWxlbmRhci1ib2R5LWNvbXBhcmlzb24taWRlbnRpY2FsLC5tYXQtZGF0ZXBpY2tlci1jb250ZW50Lm1hdC13YXJuIC5tYXQtY2FsZW5kYXItYm9keS1pbi1jb21wYXJpc29uLXJhbmdlLm1hdC1jYWxlbmRhci1ib2R5LWluLXJhbmdlOjphZnRlcntiYWNrZ3JvdW5kOiNhOGRhYjV9Lm1hdC1kYXRlcGlja2VyLWNvbnRlbnQubWF0LXdhcm4gLm1hdC1jYWxlbmRhci1ib2R5LWNvbXBhcmlzb24taWRlbnRpY2FsLm1hdC1jYWxlbmRhci1ib2R5LXNlbGVjdGVkLC5tYXQtZGF0ZXBpY2tlci1jb250ZW50Lm1hdC13YXJuIC5tYXQtY2FsZW5kYXItYm9keS1pbi1jb21wYXJpc29uLXJhbmdlPi5tYXQtY2FsZW5kYXItYm9keS1zZWxlY3RlZHtiYWNrZ3JvdW5kOiM0NmEzNWV9Lm1hdC1kYXRlcGlja2VyLWNvbnRlbnQubWF0LXdhcm4gLm1hdC1jYWxlbmRhci1ib2R5LXNlbGVjdGVke2JhY2tncm91bmQtY29sb3I6I2Y0NDMzNjtjb2xvcjojZmZmfS5tYXQtZGF0ZXBpY2tlci1jb250ZW50Lm1hdC13YXJuIC5tYXQtY2FsZW5kYXItYm9keS1kaXNhYmxlZD4ubWF0LWNhbGVuZGFyLWJvZHktc2VsZWN0ZWR7YmFja2dyb3VuZC1jb2xvcjpyZ2JhKDI0NCw2Nyw1NCwuNCl9Lm1hdC1kYXRlcGlja2VyLWNvbnRlbnQubWF0LXdhcm4gLm1hdC1jYWxlbmRhci1ib2R5LXRvZGF5Lm1hdC1jYWxlbmRhci1ib2R5LXNlbGVjdGVke2JveC1zaGFkb3c6aW5zZXQgMCAwIDAgMXB4ICNmZmZ9Lm1hdC1kYXRlcGlja2VyLWNvbnRlbnQtdG91Y2h7Ym94LXNoYWRvdzowcHggMHB4IDBweCAwcHggcmdiYSgwLCAwLCAwLCAwLjIpLDBweCAwcHggMHB4IDBweCByZ2JhKDAsIDAsIDAsIDAuMTQpLDBweCAwcHggMHB4IDBweCByZ2JhKDAsIDAsIDAsIDAuMTIpfS5tYXQtZGF0ZXBpY2tlci10b2dnbGUtYWN0aXZle2NvbG9yOiNmNTdjMDB9Lm1hdC1kYXRlcGlja2VyLXRvZ2dsZS1hY3RpdmUubWF0LWFjY2VudHtjb2xvcjojZmY5ODAwfS5tYXQtZGF0ZXBpY2tlci10b2dnbGUtYWN0aXZlLm1hdC13YXJue2NvbG9yOiNmNDQzMzZ9Lm1hdC1kYXRlLXJhbmdlLWlucHV0LWlubmVyW2Rpc2FibGVkXXtjb2xvcjojNzU3NTc1fS5tYXQtZGlhbG9nLWNvbnRhaW5lcntib3gtc2hhZG93OjBweCAxMXB4IDE1cHggLTdweCByZ2JhKDAsIDAsIDAsIDAuMiksMHB4IDI0cHggMzhweCAzcHggcmdiYSgwLCAwLCAwLCAwLjE0KSwwcHggOXB4IDQ2cHggOHB4IHJnYmEoMCwgMCwgMCwgMC4xMik7YmFja2dyb3VuZDojZmZmO2NvbG9yOiMyMTIxMjF9Lm1hdC1kaXZpZGVye2JvcmRlci10b3AtY29sb3I6cmdiYSgwLDAsMCwuMTIpfS5tYXQtZGl2aWRlci12ZXJ0aWNhbHtib3JkZXItcmlnaHQtY29sb3I6cmdiYSgwLDAsMCwuMTIpfS5tYXQtZXhwYW5zaW9uLXBhbmVse2JhY2tncm91bmQ6I2ZmZjtjb2xvcjojMjEyMTIxfS5tYXQtZXhwYW5zaW9uLXBhbmVsOm5vdChbY2xhc3MqPW1hdC1lbGV2YXRpb24tel0pe2JveC1zaGFkb3c6MHB4IDNweCAxcHggLTJweCByZ2JhKDAsIDAsIDAsIDAuMiksMHB4IDJweCAycHggMHB4IHJnYmEoMCwgMCwgMCwgMC4xNCksMHB4IDFweCA1cHggMHB4IHJnYmEoMCwgMCwgMCwgMC4xMil9Lm1hdC1hY3Rpb24tcm93e2JvcmRlci10b3AtY29sb3I6cmdiYSgwLDAsMCwuMTIpfS5tYXQtZXhwYW5zaW9uLXBhbmVsIC5tYXQtZXhwYW5zaW9uLXBhbmVsLWhlYWRlci5jZGsta2V5Ym9hcmQtZm9jdXNlZDpub3QoW2FyaWEtZGlzYWJsZWQ9dHJ1ZV0pLC5tYXQtZXhwYW5zaW9uLXBhbmVsIC5tYXQtZXhwYW5zaW9uLXBhbmVsLWhlYWRlci5jZGstcHJvZ3JhbS1mb2N1c2VkOm5vdChbYXJpYS1kaXNhYmxlZD10cnVlXSksLm1hdC1leHBhbnNpb24tcGFuZWw6bm90KC5tYXQtZXhwYW5kZWQpIC5tYXQtZXhwYW5zaW9uLXBhbmVsLWhlYWRlcjpob3Zlcjpub3QoW2FyaWEtZGlzYWJsZWQ9dHJ1ZV0pe2JhY2tncm91bmQ6cmdiYSgwLDAsMCwuMDQpfUBtZWRpYShob3Zlcjogbm9uZSl7Lm1hdC1leHBhbnNpb24tcGFuZWw6bm90KC5tYXQtZXhwYW5kZWQpOm5vdChbYXJpYS1kaXNhYmxlZD10cnVlXSkgLm1hdC1leHBhbnNpb24tcGFuZWwtaGVhZGVyOmhvdmVye2JhY2tncm91bmQ6I2ZmZn19Lm1hdC1leHBhbnNpb24tcGFuZWwtaGVhZGVyLXRpdGxle2NvbG9yOiMyMTIxMjF9Lm1hdC1leHBhbnNpb24tcGFuZWwtaGVhZGVyLWRlc2NyaXB0aW9uLC5tYXQtZXhwYW5zaW9uLWluZGljYXRvcjo6YWZ0ZXJ7Y29sb3I6IzYxNjE2MX0ubWF0LWV4cGFuc2lvbi1wYW5lbC1oZWFkZXJbYXJpYS1kaXNhYmxlZD10cnVlXXtjb2xvcjpyZ2JhKDAsMCwwLC4yNil9Lm1hdC1leHBhbnNpb24tcGFuZWwtaGVhZGVyW2FyaWEtZGlzYWJsZWQ9dHJ1ZV0gLm1hdC1leHBhbnNpb24tcGFuZWwtaGVhZGVyLXRpdGxlLC5tYXQtZXhwYW5zaW9uLXBhbmVsLWhlYWRlclthcmlhLWRpc2FibGVkPXRydWVdIC5tYXQtZXhwYW5zaW9uLXBhbmVsLWhlYWRlci1kZXNjcmlwdGlvbntjb2xvcjppbmhlcml0fS5tYXQtZXhwYW5zaW9uLXBhbmVsLWhlYWRlcntoZWlnaHQ6NDhweH0ubWF0LWV4cGFuc2lvbi1wYW5lbC1oZWFkZXIubWF0LWV4cGFuZGVke2hlaWdodDo2NHB4fS5tYXQtZm9ybS1maWVsZC1sYWJlbHtjb2xvcjpyZ2JhKDk3LDk3LDk3LC42KX0ubWF0LWhpbnR7Y29sb3I6cmdiYSg5Nyw5Nyw5NywuNil9Lm1hdC1mb3JtLWZpZWxkLm1hdC1mb2N1c2VkIC5tYXQtZm9ybS1maWVsZC1sYWJlbHtjb2xvcjojZjU3YzAwfS5tYXQtZm9ybS1maWVsZC5tYXQtZm9jdXNlZCAubWF0LWZvcm0tZmllbGQtbGFiZWwubWF0LWFjY2VudHtjb2xvcjojZmY5ODAwfS5tYXQtZm9ybS1maWVsZC5tYXQtZm9jdXNlZCAubWF0LWZvcm0tZmllbGQtbGFiZWwubWF0LXdhcm57Y29sb3I6I2Y0NDMzNn0ubWF0LWZvY3VzZWQgLm1hdC1mb3JtLWZpZWxkLXJlcXVpcmVkLW1hcmtlcntjb2xvcjojZmY5ODAwfS5tYXQtZm9ybS1maWVsZC1yaXBwbGV7YmFja2dyb3VuZC1jb2xvcjpyZ2JhKDAsMCwwLC44Nyl9Lm1hdC1mb3JtLWZpZWxkLm1hdC1mb2N1c2VkIC5tYXQtZm9ybS1maWVsZC1yaXBwbGV7YmFja2dyb3VuZC1jb2xvcjojZjU3YzAwfS5tYXQtZm9ybS1maWVsZC5tYXQtZm9jdXNlZCAubWF0LWZvcm0tZmllbGQtcmlwcGxlLm1hdC1hY2NlbnR7YmFja2dyb3VuZC1jb2xvcjojZmY5ODAwfS5tYXQtZm9ybS1maWVsZC5tYXQtZm9jdXNlZCAubWF0LWZvcm0tZmllbGQtcmlwcGxlLm1hdC13YXJue2JhY2tncm91bmQtY29sb3I6I2Y0NDMzNn0ubWF0LWZvcm0tZmllbGQtdHlwZS1tYXQtbmF0aXZlLXNlbGVjdC5tYXQtZm9jdXNlZDpub3QoLm1hdC1mb3JtLWZpZWxkLWludmFsaWQpIC5tYXQtZm9ybS1maWVsZC1pbmZpeDo6YWZ0ZXJ7Y29sb3I6I2Y1N2MwMH0ubWF0LWZvcm0tZmllbGQtdHlwZS1tYXQtbmF0aXZlLXNlbGVjdC5tYXQtZm9jdXNlZDpub3QoLm1hdC1mb3JtLWZpZWxkLWludmFsaWQpLm1hdC1hY2NlbnQgLm1hdC1mb3JtLWZpZWxkLWluZml4OjphZnRlcntjb2xvcjojZmY5ODAwfS5tYXQtZm9ybS1maWVsZC10eXBlLW1hdC1uYXRpdmUtc2VsZWN0Lm1hdC1mb2N1c2VkOm5vdCgubWF0LWZvcm0tZmllbGQtaW52YWxpZCkubWF0LXdhcm4gLm1hdC1mb3JtLWZpZWxkLWluZml4OjphZnRlcntjb2xvcjojZjQ0MzM2fS5tYXQtZm9ybS1maWVsZC5tYXQtZm9ybS1maWVsZC1pbnZhbGlkIC5tYXQtZm9ybS1maWVsZC1sYWJlbHtjb2xvcjojZjQ0MzM2fS5tYXQtZm9ybS1maWVsZC5tYXQtZm9ybS1maWVsZC1pbnZhbGlkIC5tYXQtZm9ybS1maWVsZC1sYWJlbC5tYXQtYWNjZW50LC5tYXQtZm9ybS1maWVsZC5tYXQtZm9ybS1maWVsZC1pbnZhbGlkIC5tYXQtZm9ybS1maWVsZC1sYWJlbCAubWF0LWZvcm0tZmllbGQtcmVxdWlyZWQtbWFya2Vye2NvbG9yOiNmNDQzMzZ9Lm1hdC1mb3JtLWZpZWxkLm1hdC1mb3JtLWZpZWxkLWludmFsaWQgLm1hdC1mb3JtLWZpZWxkLXJpcHBsZSwubWF0LWZvcm0tZmllbGQubWF0LWZvcm0tZmllbGQtaW52YWxpZCAubWF0LWZvcm0tZmllbGQtcmlwcGxlLm1hdC1hY2NlbnR7YmFja2dyb3VuZC1jb2xvcjojZjQ0MzM2fS5tYXQtZXJyb3J7Y29sb3I6I2Y0NDMzNn0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1sZWdhY3kgLm1hdC1mb3JtLWZpZWxkLWxhYmVse2NvbG9yOiM2MTYxNjF9Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtbGVnYWN5IC5tYXQtaGludHtjb2xvcjojNjE2MTYxfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWxlZ2FjeSAubWF0LWZvcm0tZmllbGQtdW5kZXJsaW5le2JhY2tncm91bmQtY29sb3I6cmdiYSgwLDAsMCwuNDIpfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWxlZ2FjeS5tYXQtZm9ybS1maWVsZC1kaXNhYmxlZCAubWF0LWZvcm0tZmllbGQtdW5kZXJsaW5le2JhY2tncm91bmQtaW1hZ2U6bGluZWFyLWdyYWRpZW50KHRvIHJpZ2h0LCByZ2JhKDAsIDAsIDAsIDAuNDIpIDAlLCByZ2JhKDAsIDAsIDAsIDAuNDIpIDMzJSwgdHJhbnNwYXJlbnQgMCUpO2JhY2tncm91bmQtc2l6ZTo0cHggMTAwJTtiYWNrZ3JvdW5kLXJlcGVhdDpyZXBlYXQteH0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1zdGFuZGFyZCAubWF0LWZvcm0tZmllbGQtdW5kZXJsaW5le2JhY2tncm91bmQtY29sb3I6cmdiYSgwLDAsMCwuNDIpfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLXN0YW5kYXJkLm1hdC1mb3JtLWZpZWxkLWRpc2FibGVkIC5tYXQtZm9ybS1maWVsZC11bmRlcmxpbmV7YmFja2dyb3VuZC1pbWFnZTpsaW5lYXItZ3JhZGllbnQodG8gcmlnaHQsIHJnYmEoMCwgMCwgMCwgMC40MikgMCUsIHJnYmEoMCwgMCwgMCwgMC40MikgMzMlLCB0cmFuc3BhcmVudCAwJSk7YmFja2dyb3VuZC1zaXplOjRweCAxMDAlO2JhY2tncm91bmQtcmVwZWF0OnJlcGVhdC14fS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWZpbGwgLm1hdC1mb3JtLWZpZWxkLWZsZXh7YmFja2dyb3VuZC1jb2xvcjpyZ2JhKDAsMCwwLC4wNCl9Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtZmlsbC5tYXQtZm9ybS1maWVsZC1kaXNhYmxlZCAubWF0LWZvcm0tZmllbGQtZmxleHtiYWNrZ3JvdW5kLWNvbG9yOnJnYmEoMCwwLDAsLjAyKX0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1maWxsIC5tYXQtZm9ybS1maWVsZC11bmRlcmxpbmU6OmJlZm9yZXtiYWNrZ3JvdW5kLWNvbG9yOnJnYmEoMCwwLDAsLjQyKX0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1maWxsLm1hdC1mb3JtLWZpZWxkLWRpc2FibGVkIC5tYXQtZm9ybS1maWVsZC1sYWJlbHtjb2xvcjojNzU3NTc1fS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWZpbGwubWF0LWZvcm0tZmllbGQtZGlzYWJsZWQgLm1hdC1mb3JtLWZpZWxkLXVuZGVybGluZTo6YmVmb3Jle2JhY2tncm91bmQtY29sb3I6dHJhbnNwYXJlbnR9Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2Utb3V0bGluZSAubWF0LWZvcm0tZmllbGQtb3V0bGluZXtjb2xvcjpyZ2JhKDAsMCwwLC4xMil9Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2Utb3V0bGluZSAubWF0LWZvcm0tZmllbGQtb3V0bGluZS10aGlja3tjb2xvcjpyZ2JhKDAsMCwwLC44Nyl9Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2Utb3V0bGluZS5tYXQtZm9jdXNlZCAubWF0LWZvcm0tZmllbGQtb3V0bGluZS10aGlja3tjb2xvcjojZjU3YzAwfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLW91dGxpbmUubWF0LWZvY3VzZWQubWF0LWFjY2VudCAubWF0LWZvcm0tZmllbGQtb3V0bGluZS10aGlja3tjb2xvcjojZmY5ODAwfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLW91dGxpbmUubWF0LWZvY3VzZWQubWF0LXdhcm4gLm1hdC1mb3JtLWZpZWxkLW91dGxpbmUtdGhpY2t7Y29sb3I6I2Y0NDMzNn0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1vdXRsaW5lLm1hdC1mb3JtLWZpZWxkLWludmFsaWQubWF0LWZvcm0tZmllbGQtaW52YWxpZCAubWF0LWZvcm0tZmllbGQtb3V0bGluZS10aGlja3tjb2xvcjojZjQ0MzM2fS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLW91dGxpbmUubWF0LWZvcm0tZmllbGQtZGlzYWJsZWQgLm1hdC1mb3JtLWZpZWxkLWxhYmVse2NvbG9yOiM3NTc1NzV9Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2Utb3V0bGluZS5tYXQtZm9ybS1maWVsZC1kaXNhYmxlZCAubWF0LWZvcm0tZmllbGQtb3V0bGluZXtjb2xvcjpyZ2JhKDAsMCwwLC4wNil9Lm1hdC1pY29uLm1hdC1wcmltYXJ5e2NvbG9yOiNmNTdjMDB9Lm1hdC1pY29uLm1hdC1hY2NlbnR7Y29sb3I6I2ZmOTgwMH0ubWF0LWljb24ubWF0LXdhcm57Y29sb3I6I2Y0NDMzNn0ubWF0LWZvcm0tZmllbGQtdHlwZS1tYXQtbmF0aXZlLXNlbGVjdCAubWF0LWZvcm0tZmllbGQtaW5maXg6OmFmdGVye2NvbG9yOiM2MTYxNjF9Lm1hdC1pbnB1dC1lbGVtZW50OmRpc2FibGVkLC5tYXQtZm9ybS1maWVsZC10eXBlLW1hdC1uYXRpdmUtc2VsZWN0Lm1hdC1mb3JtLWZpZWxkLWRpc2FibGVkIC5tYXQtZm9ybS1maWVsZC1pbmZpeDo6YWZ0ZXJ7Y29sb3I6Izc1NzU3NX0ubWF0LWlucHV0LWVsZW1lbnR7Y2FyZXQtY29sb3I6I2Y1N2MwMH0ubWF0LWlucHV0LWVsZW1lbnQ6OnBsYWNlaG9sZGVye2NvbG9yOnJnYmEoOTcsOTcsOTcsLjQyKX0ubWF0LWlucHV0LWVsZW1lbnQ6Oi1tb3otcGxhY2Vob2xkZXJ7Y29sb3I6cmdiYSg5Nyw5Nyw5NywuNDIpfS5tYXQtaW5wdXQtZWxlbWVudDo6LXdlYmtpdC1pbnB1dC1wbGFjZWhvbGRlcntjb2xvcjpyZ2JhKDk3LDk3LDk3LC40Mil9Lm1hdC1pbnB1dC1lbGVtZW50Oi1tcy1pbnB1dC1wbGFjZWhvbGRlcntjb2xvcjpyZ2JhKDk3LDk3LDk3LC40Mil9Lm1hdC1mb3JtLWZpZWxkLm1hdC1hY2NlbnQgLm1hdC1pbnB1dC1lbGVtZW50e2NhcmV0LWNvbG9yOiNmZjk4MDB9Lm1hdC1mb3JtLWZpZWxkLm1hdC13YXJuIC5tYXQtaW5wdXQtZWxlbWVudCwubWF0LWZvcm0tZmllbGQtaW52YWxpZCAubWF0LWlucHV0LWVsZW1lbnR7Y2FyZXQtY29sb3I6I2Y0NDMzNn0ubWF0LWZvcm0tZmllbGQtdHlwZS1tYXQtbmF0aXZlLXNlbGVjdC5tYXQtZm9ybS1maWVsZC1pbnZhbGlkIC5tYXQtZm9ybS1maWVsZC1pbmZpeDo6YWZ0ZXJ7Y29sb3I6I2Y0NDMzNn0ubWF0LWxpc3QtYmFzZSAubWF0LWxpc3QtaXRlbXtjb2xvcjojMjEyMTIxfS5tYXQtbGlzdC1iYXNlIC5tYXQtbGlzdC1vcHRpb257Y29sb3I6IzIxMjEyMX0ubWF0LWxpc3QtYmFzZSAubWF0LXN1YmhlYWRlcntjb2xvcjojNjE2MTYxfS5tYXQtbGlzdC1pdGVtLWRpc2FibGVke2JhY2tncm91bmQtY29sb3I6I2VlZX0ubWF0LWxpc3Qtb3B0aW9uOmhvdmVyLC5tYXQtbGlzdC1vcHRpb246Zm9jdXMsLm1hdC1uYXYtbGlzdCAubWF0LWxpc3QtaXRlbTpob3ZlciwubWF0LW5hdi1saXN0IC5tYXQtbGlzdC1pdGVtOmZvY3VzLC5tYXQtYWN0aW9uLWxpc3QgLm1hdC1saXN0LWl0ZW06aG92ZXIsLm1hdC1hY3Rpb24tbGlzdCAubWF0LWxpc3QtaXRlbTpmb2N1c3tiYWNrZ3JvdW5kOnJnYmEoMCwwLDAsLjA0KX0ubWF0LWxpc3Qtc2luZ2xlLXNlbGVjdGVkLW9wdGlvbiwubWF0LWxpc3Qtc2luZ2xlLXNlbGVjdGVkLW9wdGlvbjpob3ZlciwubWF0LWxpc3Qtc2luZ2xlLXNlbGVjdGVkLW9wdGlvbjpmb2N1c3tiYWNrZ3JvdW5kOnJnYmEoMCwwLDAsLjEyKX0ubWF0LW1lbnUtcGFuZWx7YmFja2dyb3VuZDojZmZmfS5tYXQtbWVudS1wYW5lbDpub3QoW2NsYXNzKj1tYXQtZWxldmF0aW9uLXpdKXtib3gtc2hhZG93OjBweCAycHggNHB4IC0xcHggcmdiYSgwLCAwLCAwLCAwLjIpLDBweCA0cHggNXB4IDBweCByZ2JhKDAsIDAsIDAsIDAuMTQpLDBweCAxcHggMTBweCAwcHggcmdiYSgwLCAwLCAwLCAwLjEyKX0ubWF0LW1lbnUtaXRlbXtiYWNrZ3JvdW5kOnRyYW5zcGFyZW50O2NvbG9yOiMyMTIxMjF9Lm1hdC1tZW51LWl0ZW1bZGlzYWJsZWRdLC5tYXQtbWVudS1pdGVtW2Rpc2FibGVkXTo6YWZ0ZXJ7Y29sb3I6cmdiYSgwLDAsMCwuMzgpfS5tYXQtbWVudS1pdGVtIC5tYXQtaWNvbi1uby1jb2xvciwubWF0LW1lbnUtaXRlbS1zdWJtZW51LXRyaWdnZXI6OmFmdGVye2NvbG9yOnJnYmEoMCwwLDAsLjU0KX0ubWF0LW1lbnUtaXRlbTpob3Zlcjpub3QoW2Rpc2FibGVkXSksLm1hdC1tZW51LWl0ZW0uY2RrLXByb2dyYW0tZm9jdXNlZDpub3QoW2Rpc2FibGVkXSksLm1hdC1tZW51LWl0ZW0uY2RrLWtleWJvYXJkLWZvY3VzZWQ6bm90KFtkaXNhYmxlZF0pLC5tYXQtbWVudS1pdGVtLWhpZ2hsaWdodGVkOm5vdChbZGlzYWJsZWRdKXtiYWNrZ3JvdW5kOnJnYmEoMCwwLDAsLjA0KX0ubWF0LXBhZ2luYXRvcntiYWNrZ3JvdW5kOiNmZmZ9Lm1hdC1wYWdpbmF0b3IsLm1hdC1wYWdpbmF0b3ItcGFnZS1zaXplIC5tYXQtc2VsZWN0LXRyaWdnZXJ7Y29sb3I6IzYxNjE2MX0ubWF0LXBhZ2luYXRvci1kZWNyZW1lbnQsLm1hdC1wYWdpbmF0b3ItaW5jcmVtZW50e2JvcmRlci10b3A6MnB4IHNvbGlkIHJnYmEoMCwwLDAsLjU0KTtib3JkZXItcmlnaHQ6MnB4IHNvbGlkIHJnYmEoMCwwLDAsLjU0KX0ubWF0LXBhZ2luYXRvci1maXJzdCwubWF0LXBhZ2luYXRvci1sYXN0e2JvcmRlci10b3A6MnB4IHNvbGlkIHJnYmEoMCwwLDAsLjU0KX0ubWF0LWljb24tYnV0dG9uW2Rpc2FibGVkXSAubWF0LXBhZ2luYXRvci1kZWNyZW1lbnQsLm1hdC1pY29uLWJ1dHRvbltkaXNhYmxlZF0gLm1hdC1wYWdpbmF0b3ItaW5jcmVtZW50LC5tYXQtaWNvbi1idXR0b25bZGlzYWJsZWRdIC5tYXQtcGFnaW5hdG9yLWZpcnN0LC5tYXQtaWNvbi1idXR0b25bZGlzYWJsZWRdIC5tYXQtcGFnaW5hdG9yLWxhc3R7Ym9yZGVyLWNvbG9yOnJnYmEoMCwwLDAsLjM4KX0ubWF0LXBhZ2luYXRvci1jb250YWluZXJ7bWluLWhlaWdodDo1NnB4fS5tYXQtcHJvZ3Jlc3MtYmFyLWJhY2tncm91bmR7ZmlsbDojZmY5ODAwfS5tYXQtcHJvZ3Jlc3MtYmFyLWJ1ZmZlcntiYWNrZ3JvdW5kLWNvbG9yOiNmZjk4MDB9Lm1hdC1wcm9ncmVzcy1iYXItZmlsbDo6YWZ0ZXJ7YmFja2dyb3VuZC1jb2xvcjojZjU3YzAwfS5tYXQtcHJvZ3Jlc3MtYmFyLm1hdC1hY2NlbnQgLm1hdC1wcm9ncmVzcy1iYXItYmFja2dyb3VuZHtmaWxsOiNmZjk4MDB9Lm1hdC1wcm9ncmVzcy1iYXIubWF0LWFjY2VudCAubWF0LXByb2dyZXNzLWJhci1idWZmZXJ7YmFja2dyb3VuZC1jb2xvcjojZmY5ODAwfS5tYXQtcHJvZ3Jlc3MtYmFyLm1hdC1hY2NlbnQgLm1hdC1wcm9ncmVzcy1iYXItZmlsbDo6YWZ0ZXJ7YmFja2dyb3VuZC1jb2xvcjojZmY5ODAwfS5tYXQtcHJvZ3Jlc3MtYmFyLm1hdC13YXJuIC5tYXQtcHJvZ3Jlc3MtYmFyLWJhY2tncm91bmR7ZmlsbDojZmZjZGQyfS5tYXQtcHJvZ3Jlc3MtYmFyLm1hdC13YXJuIC5tYXQtcHJvZ3Jlc3MtYmFyLWJ1ZmZlcntiYWNrZ3JvdW5kLWNvbG9yOiNmZmNkZDJ9Lm1hdC1wcm9ncmVzcy1iYXIubWF0LXdhcm4gLm1hdC1wcm9ncmVzcy1iYXItZmlsbDo6YWZ0ZXJ7YmFja2dyb3VuZC1jb2xvcjojZjQ0MzM2fS5tYXQtcHJvZ3Jlc3Mtc3Bpbm5lciBjaXJjbGUsLm1hdC1zcGlubmVyIGNpcmNsZXtzdHJva2U6I2Y1N2MwMH0ubWF0LXByb2dyZXNzLXNwaW5uZXIubWF0LWFjY2VudCBjaXJjbGUsLm1hdC1zcGlubmVyLm1hdC1hY2NlbnQgY2lyY2xle3N0cm9rZTojZmY5ODAwfS5tYXQtcHJvZ3Jlc3Mtc3Bpbm5lci5tYXQtd2FybiBjaXJjbGUsLm1hdC1zcGlubmVyLm1hdC13YXJuIGNpcmNsZXtzdHJva2U6I2Y0NDMzNn0ubWF0LXJhZGlvLW91dGVyLWNpcmNsZXtib3JkZXItY29sb3I6IzYxNjE2MX0ubWF0LXJhZGlvLWJ1dHRvbi5tYXQtcHJpbWFyeS5tYXQtcmFkaW8tY2hlY2tlZCAubWF0LXJhZGlvLW91dGVyLWNpcmNsZXtib3JkZXItY29sb3I6I2Y1N2MwMH0ubWF0LXJhZGlvLWJ1dHRvbi5tYXQtcHJpbWFyeSAubWF0LXJhZGlvLWlubmVyLWNpcmNsZSwubWF0LXJhZGlvLWJ1dHRvbi5tYXQtcHJpbWFyeSAubWF0LXJhZGlvLXJpcHBsZSAubWF0LXJpcHBsZS1lbGVtZW50Om5vdCgubWF0LXJhZGlvLXBlcnNpc3RlbnQtcmlwcGxlKSwubWF0LXJhZGlvLWJ1dHRvbi5tYXQtcHJpbWFyeS5tYXQtcmFkaW8tY2hlY2tlZCAubWF0LXJhZGlvLXBlcnNpc3RlbnQtcmlwcGxlLC5tYXQtcmFkaW8tYnV0dG9uLm1hdC1wcmltYXJ5OmFjdGl2ZSAubWF0LXJhZGlvLXBlcnNpc3RlbnQtcmlwcGxle2JhY2tncm91bmQtY29sb3I6I2Y1N2MwMH0ubWF0LXJhZGlvLWJ1dHRvbi5tYXQtYWNjZW50Lm1hdC1yYWRpby1jaGVja2VkIC5tYXQtcmFkaW8tb3V0ZXItY2lyY2xle2JvcmRlci1jb2xvcjojZmY5ODAwfS5tYXQtcmFkaW8tYnV0dG9uLm1hdC1hY2NlbnQgLm1hdC1yYWRpby1pbm5lci1jaXJjbGUsLm1hdC1yYWRpby1idXR0b24ubWF0LWFjY2VudCAubWF0LXJhZGlvLXJpcHBsZSAubWF0LXJpcHBsZS1lbGVtZW50Om5vdCgubWF0LXJhZGlvLXBlcnNpc3RlbnQtcmlwcGxlKSwubWF0LXJhZGlvLWJ1dHRvbi5tYXQtYWNjZW50Lm1hdC1yYWRpby1jaGVja2VkIC5tYXQtcmFkaW8tcGVyc2lzdGVudC1yaXBwbGUsLm1hdC1yYWRpby1idXR0b24ubWF0LWFjY2VudDphY3RpdmUgLm1hdC1yYWRpby1wZXJzaXN0ZW50LXJpcHBsZXtiYWNrZ3JvdW5kLWNvbG9yOiNmZjk4MDB9Lm1hdC1yYWRpby1idXR0b24ubWF0LXdhcm4ubWF0LXJhZGlvLWNoZWNrZWQgLm1hdC1yYWRpby1vdXRlci1jaXJjbGV7Ym9yZGVyLWNvbG9yOiNmNDQzMzZ9Lm1hdC1yYWRpby1idXR0b24ubWF0LXdhcm4gLm1hdC1yYWRpby1pbm5lci1jaXJjbGUsLm1hdC1yYWRpby1idXR0b24ubWF0LXdhcm4gLm1hdC1yYWRpby1yaXBwbGUgLm1hdC1yaXBwbGUtZWxlbWVudDpub3QoLm1hdC1yYWRpby1wZXJzaXN0ZW50LXJpcHBsZSksLm1hdC1yYWRpby1idXR0b24ubWF0LXdhcm4ubWF0LXJhZGlvLWNoZWNrZWQgLm1hdC1yYWRpby1wZXJzaXN0ZW50LXJpcHBsZSwubWF0LXJhZGlvLWJ1dHRvbi5tYXQtd2FybjphY3RpdmUgLm1hdC1yYWRpby1wZXJzaXN0ZW50LXJpcHBsZXtiYWNrZ3JvdW5kLWNvbG9yOiNmNDQzMzZ9Lm1hdC1yYWRpby1idXR0b24ubWF0LXJhZGlvLWRpc2FibGVkLm1hdC1yYWRpby1jaGVja2VkIC5tYXQtcmFkaW8tb3V0ZXItY2lyY2xlLC5tYXQtcmFkaW8tYnV0dG9uLm1hdC1yYWRpby1kaXNhYmxlZCAubWF0LXJhZGlvLW91dGVyLWNpcmNsZXtib3JkZXItY29sb3I6cmdiYSgwLDAsMCwuMzgpfS5tYXQtcmFkaW8tYnV0dG9uLm1hdC1yYWRpby1kaXNhYmxlZCAubWF0LXJhZGlvLXJpcHBsZSAubWF0LXJpcHBsZS1lbGVtZW50LC5tYXQtcmFkaW8tYnV0dG9uLm1hdC1yYWRpby1kaXNhYmxlZCAubWF0LXJhZGlvLWlubmVyLWNpcmNsZXtiYWNrZ3JvdW5kLWNvbG9yOnJnYmEoMCwwLDAsLjM4KX0ubWF0LXJhZGlvLWJ1dHRvbi5tYXQtcmFkaW8tZGlzYWJsZWQgLm1hdC1yYWRpby1sYWJlbC1jb250ZW50e2NvbG9yOnJnYmEoMCwwLDAsLjM4KX0ubWF0LXJhZGlvLWJ1dHRvbiAubWF0LXJpcHBsZS1lbGVtZW50e2JhY2tncm91bmQtY29sb3I6IzAwMH0ubWF0LXNlbGVjdC12YWx1ZXtjb2xvcjojMjEyMTIxfS5tYXQtc2VsZWN0LXBsYWNlaG9sZGVye2NvbG9yOnJnYmEoOTcsOTcsOTcsLjQyKX0ubWF0LXNlbGVjdC1kaXNhYmxlZCAubWF0LXNlbGVjdC12YWx1ZXtjb2xvcjojNzU3NTc1fS5tYXQtc2VsZWN0LWFycm93e2NvbG9yOiM2MTYxNjF9Lm1hdC1zZWxlY3QtcGFuZWx7YmFja2dyb3VuZDojZmZmfS5tYXQtc2VsZWN0LXBhbmVsOm5vdChbY2xhc3MqPW1hdC1lbGV2YXRpb24tel0pe2JveC1zaGFkb3c6MHB4IDJweCA0cHggLTFweCByZ2JhKDAsIDAsIDAsIDAuMiksMHB4IDRweCA1cHggMHB4IHJnYmEoMCwgMCwgMCwgMC4xNCksMHB4IDFweCAxMHB4IDBweCByZ2JhKDAsIDAsIDAsIDAuMTIpfS5tYXQtc2VsZWN0LXBhbmVsIC5tYXQtb3B0aW9uLm1hdC1zZWxlY3RlZDpub3QoLm1hdC1vcHRpb24tbXVsdGlwbGUpe2JhY2tncm91bmQ6cmdiYSgwLDAsMCwuMTIpfS5tYXQtZm9ybS1maWVsZC5tYXQtZm9jdXNlZC5tYXQtcHJpbWFyeSAubWF0LXNlbGVjdC1hcnJvd3tjb2xvcjojZjU3YzAwfS5tYXQtZm9ybS1maWVsZC5tYXQtZm9jdXNlZC5tYXQtYWNjZW50IC5tYXQtc2VsZWN0LWFycm93e2NvbG9yOiNmZjk4MDB9Lm1hdC1mb3JtLWZpZWxkLm1hdC1mb2N1c2VkLm1hdC13YXJuIC5tYXQtc2VsZWN0LWFycm93e2NvbG9yOiNmNDQzMzZ9Lm1hdC1mb3JtLWZpZWxkIC5tYXQtc2VsZWN0Lm1hdC1zZWxlY3QtaW52YWxpZCAubWF0LXNlbGVjdC1hcnJvd3tjb2xvcjojZjQ0MzM2fS5tYXQtZm9ybS1maWVsZCAubWF0LXNlbGVjdC5tYXQtc2VsZWN0LWRpc2FibGVkIC5tYXQtc2VsZWN0LWFycm93e2NvbG9yOiM3NTc1NzV9Lm1hdC1kcmF3ZXItY29udGFpbmVye2JhY2tncm91bmQtY29sb3I6I2ZhZmFmYTtjb2xvcjojMjEyMTIxfS5tYXQtZHJhd2Vye2JhY2tncm91bmQtY29sb3I6I2ZmZjtjb2xvcjojMjEyMTIxfS5tYXQtZHJhd2VyLm1hdC1kcmF3ZXItcHVzaHtiYWNrZ3JvdW5kLWNvbG9yOiNmZmZ9Lm1hdC1kcmF3ZXI6bm90KC5tYXQtZHJhd2VyLXNpZGUpe2JveC1zaGFkb3c6MHB4IDhweCAxMHB4IC01cHggcmdiYSgwLCAwLCAwLCAwLjIpLDBweCAxNnB4IDI0cHggMnB4IHJnYmEoMCwgMCwgMCwgMC4xNCksMHB4IDZweCAzMHB4IDVweCByZ2JhKDAsIDAsIDAsIDAuMTIpfS5tYXQtZHJhd2VyLXNpZGV7Ym9yZGVyLXJpZ2h0OnNvbGlkIDFweCByZ2JhKDAsMCwwLC4xMil9Lm1hdC1kcmF3ZXItc2lkZS5tYXQtZHJhd2VyLWVuZHtib3JkZXItbGVmdDpzb2xpZCAxcHggcmdiYSgwLDAsMCwuMTIpO2JvcmRlci1yaWdodDpub25lfVtkaXI9cnRsXSAubWF0LWRyYXdlci1zaWRle2JvcmRlci1sZWZ0OnNvbGlkIDFweCByZ2JhKDAsMCwwLC4xMik7Ym9yZGVyLXJpZ2h0Om5vbmV9W2Rpcj1ydGxdIC5tYXQtZHJhd2VyLXNpZGUubWF0LWRyYXdlci1lbmR7Ym9yZGVyLWxlZnQ6bm9uZTtib3JkZXItcmlnaHQ6c29saWQgMXB4IHJnYmEoMCwwLDAsLjEyKX0ubWF0LWRyYXdlci1iYWNrZHJvcC5tYXQtZHJhd2VyLXNob3due2JhY2tncm91bmQtY29sb3I6cmdiYSgwLDAsMCwuNil9Lm1hdC1zbGlkZS10b2dnbGUubWF0LWNoZWNrZWQgLm1hdC1zbGlkZS10b2dnbGUtdGh1bWJ7YmFja2dyb3VuZC1jb2xvcjojZmY5ODAwfS5tYXQtc2xpZGUtdG9nZ2xlLm1hdC1jaGVja2VkIC5tYXQtc2xpZGUtdG9nZ2xlLWJhcntiYWNrZ3JvdW5kLWNvbG9yOnJnYmEoMjU1LDE1MiwwLC41NCl9Lm1hdC1zbGlkZS10b2dnbGUubWF0LWNoZWNrZWQgLm1hdC1yaXBwbGUtZWxlbWVudHtiYWNrZ3JvdW5kLWNvbG9yOiNmZjk4MDB9Lm1hdC1zbGlkZS10b2dnbGUubWF0LXByaW1hcnkubWF0LWNoZWNrZWQgLm1hdC1zbGlkZS10b2dnbGUtdGh1bWJ7YmFja2dyb3VuZC1jb2xvcjojZjU3YzAwfS5tYXQtc2xpZGUtdG9nZ2xlLm1hdC1wcmltYXJ5Lm1hdC1jaGVja2VkIC5tYXQtc2xpZGUtdG9nZ2xlLWJhcntiYWNrZ3JvdW5kLWNvbG9yOnJnYmEoMjQ1LDEyNCwwLC41NCl9Lm1hdC1zbGlkZS10b2dnbGUubWF0LXByaW1hcnkubWF0LWNoZWNrZWQgLm1hdC1yaXBwbGUtZWxlbWVudHtiYWNrZ3JvdW5kLWNvbG9yOiNmNTdjMDB9Lm1hdC1zbGlkZS10b2dnbGUubWF0LXdhcm4ubWF0LWNoZWNrZWQgLm1hdC1zbGlkZS10b2dnbGUtdGh1bWJ7YmFja2dyb3VuZC1jb2xvcjojZjQ0MzM2fS5tYXQtc2xpZGUtdG9nZ2xlLm1hdC13YXJuLm1hdC1jaGVja2VkIC5tYXQtc2xpZGUtdG9nZ2xlLWJhcntiYWNrZ3JvdW5kLWNvbG9yOnJnYmEoMjQ0LDY3LDU0LC41NCl9Lm1hdC1zbGlkZS10b2dnbGUubWF0LXdhcm4ubWF0LWNoZWNrZWQgLm1hdC1yaXBwbGUtZWxlbWVudHtiYWNrZ3JvdW5kLWNvbG9yOiNmNDQzMzZ9Lm1hdC1zbGlkZS10b2dnbGU6bm90KC5tYXQtY2hlY2tlZCkgLm1hdC1yaXBwbGUtZWxlbWVudHtiYWNrZ3JvdW5kLWNvbG9yOiMwMDB9Lm1hdC1zbGlkZS10b2dnbGUtdGh1bWJ7Ym94LXNoYWRvdzowcHggMnB4IDFweCAtMXB4IHJnYmEoMCwgMCwgMCwgMC4yKSwwcHggMXB4IDFweCAwcHggcmdiYSgwLCAwLCAwLCAwLjE0KSwwcHggMXB4IDNweCAwcHggcmdiYSgwLCAwLCAwLCAwLjEyKTtiYWNrZ3JvdW5kLWNvbG9yOiNmYWZhZmF9Lm1hdC1zbGlkZS10b2dnbGUtYmFye2JhY2tncm91bmQtY29sb3I6cmdiYSgwLDAsMCwuMzgpfS5tYXQtc2xpZGVyLXRyYWNrLWJhY2tncm91bmR7YmFja2dyb3VuZC1jb2xvcjpyZ2JhKDAsMCwwLC4yNil9Lm1hdC1wcmltYXJ5IC5tYXQtc2xpZGVyLXRyYWNrLWZpbGwsLm1hdC1wcmltYXJ5IC5tYXQtc2xpZGVyLXRodW1iLC5tYXQtcHJpbWFyeSAubWF0LXNsaWRlci10aHVtYi1sYWJlbHtiYWNrZ3JvdW5kLWNvbG9yOiNmNTdjMDB9Lm1hdC1wcmltYXJ5IC5tYXQtc2xpZGVyLXRodW1iLWxhYmVsLXRleHR7Y29sb3I6I2ZmZn0ubWF0LXByaW1hcnkgLm1hdC1zbGlkZXItZm9jdXMtcmluZ3tiYWNrZ3JvdW5kLWNvbG9yOnJnYmEoMjQ1LDEyNCwwLC4yKX0ubWF0LWFjY2VudCAubWF0LXNsaWRlci10cmFjay1maWxsLC5tYXQtYWNjZW50IC5tYXQtc2xpZGVyLXRodW1iLC5tYXQtYWNjZW50IC5tYXQtc2xpZGVyLXRodW1iLWxhYmVse2JhY2tncm91bmQtY29sb3I6I2ZmOTgwMH0ubWF0LWFjY2VudCAubWF0LXNsaWRlci10aHVtYi1sYWJlbC10ZXh0e2NvbG9yOiNmZmZ9Lm1hdC1hY2NlbnQgLm1hdC1zbGlkZXItZm9jdXMtcmluZ3tiYWNrZ3JvdW5kLWNvbG9yOnJnYmEoMjU1LDE1MiwwLC4yKX0ubWF0LXdhcm4gLm1hdC1zbGlkZXItdHJhY2stZmlsbCwubWF0LXdhcm4gLm1hdC1zbGlkZXItdGh1bWIsLm1hdC13YXJuIC5tYXQtc2xpZGVyLXRodW1iLWxhYmVse2JhY2tncm91bmQtY29sb3I6I2Y0NDMzNn0ubWF0LXdhcm4gLm1hdC1zbGlkZXItdGh1bWItbGFiZWwtdGV4dHtjb2xvcjojZmZmfS5tYXQtd2FybiAubWF0LXNsaWRlci1mb2N1cy1yaW5ne2JhY2tncm91bmQtY29sb3I6cmdiYSgyNDQsNjcsNTQsLjIpfS5tYXQtc2xpZGVyOmhvdmVyIC5tYXQtc2xpZGVyLXRyYWNrLWJhY2tncm91bmQsLmNkay1mb2N1c2VkIC5tYXQtc2xpZGVyLXRyYWNrLWJhY2tncm91bmR7YmFja2dyb3VuZC1jb2xvcjpyZ2JhKDAsMCwwLC4zOCl9Lm1hdC1zbGlkZXItZGlzYWJsZWQgLm1hdC1zbGlkZXItdHJhY2stYmFja2dyb3VuZCwubWF0LXNsaWRlci1kaXNhYmxlZCAubWF0LXNsaWRlci10cmFjay1maWxsLC5tYXQtc2xpZGVyLWRpc2FibGVkIC5tYXQtc2xpZGVyLXRodW1ie2JhY2tncm91bmQtY29sb3I6cmdiYSgwLDAsMCwuMjYpfS5tYXQtc2xpZGVyLWRpc2FibGVkOmhvdmVyIC5tYXQtc2xpZGVyLXRyYWNrLWJhY2tncm91bmR7YmFja2dyb3VuZC1jb2xvcjpyZ2JhKDAsMCwwLC4yNil9Lm1hdC1zbGlkZXItbWluLXZhbHVlIC5tYXQtc2xpZGVyLWZvY3VzLXJpbmd7YmFja2dyb3VuZC1jb2xvcjpyZ2JhKDAsMCwwLC4xMil9Lm1hdC1zbGlkZXItbWluLXZhbHVlLm1hdC1zbGlkZXItdGh1bWItbGFiZWwtc2hvd2luZyAubWF0LXNsaWRlci10aHVtYiwubWF0LXNsaWRlci1taW4tdmFsdWUubWF0LXNsaWRlci10aHVtYi1sYWJlbC1zaG93aW5nIC5tYXQtc2xpZGVyLXRodW1iLWxhYmVse2JhY2tncm91bmQtY29sb3I6cmdiYSgwLDAsMCwuODcpfS5tYXQtc2xpZGVyLW1pbi12YWx1ZS5tYXQtc2xpZGVyLXRodW1iLWxhYmVsLXNob3dpbmcuY2RrLWZvY3VzZWQgLm1hdC1zbGlkZXItdGh1bWIsLm1hdC1zbGlkZXItbWluLXZhbHVlLm1hdC1zbGlkZXItdGh1bWItbGFiZWwtc2hvd2luZy5jZGstZm9jdXNlZCAubWF0LXNsaWRlci10aHVtYi1sYWJlbHtiYWNrZ3JvdW5kLWNvbG9yOnJnYmEoMCwwLDAsLjI2KX0ubWF0LXNsaWRlci1taW4tdmFsdWU6bm90KC5tYXQtc2xpZGVyLXRodW1iLWxhYmVsLXNob3dpbmcpIC5tYXQtc2xpZGVyLXRodW1ie2JvcmRlci1jb2xvcjpyZ2JhKDAsMCwwLC4yNik7YmFja2dyb3VuZC1jb2xvcjp0cmFuc3BhcmVudH0ubWF0LXNsaWRlci1taW4tdmFsdWU6bm90KC5tYXQtc2xpZGVyLXRodW1iLWxhYmVsLXNob3dpbmcpOmhvdmVyIC5tYXQtc2xpZGVyLXRodW1iLC5tYXQtc2xpZGVyLW1pbi12YWx1ZTpub3QoLm1hdC1zbGlkZXItdGh1bWItbGFiZWwtc2hvd2luZykuY2RrLWZvY3VzZWQgLm1hdC1zbGlkZXItdGh1bWJ7Ym9yZGVyLWNvbG9yOnJnYmEoMCwwLDAsLjM4KX0ubWF0LXNsaWRlci1taW4tdmFsdWU6bm90KC5tYXQtc2xpZGVyLXRodW1iLWxhYmVsLXNob3dpbmcpOmhvdmVyLm1hdC1zbGlkZXItZGlzYWJsZWQgLm1hdC1zbGlkZXItdGh1bWIsLm1hdC1zbGlkZXItbWluLXZhbHVlOm5vdCgubWF0LXNsaWRlci10aHVtYi1sYWJlbC1zaG93aW5nKS5jZGstZm9jdXNlZC5tYXQtc2xpZGVyLWRpc2FibGVkIC5tYXQtc2xpZGVyLXRodW1ie2JvcmRlci1jb2xvcjpyZ2JhKDAsMCwwLC4yNil9Lm1hdC1zbGlkZXItaGFzLXRpY2tzIC5tYXQtc2xpZGVyLXdyYXBwZXI6OmFmdGVye2JvcmRlci1jb2xvcjpyZ2JhKDAsMCwwLC43KX0ubWF0LXNsaWRlci1ob3Jpem9udGFsIC5tYXQtc2xpZGVyLXRpY2tze2JhY2tncm91bmQtaW1hZ2U6cmVwZWF0aW5nLWxpbmVhci1ncmFkaWVudCh0byByaWdodCwgcmdiYSgwLCAwLCAwLCAwLjcpLCByZ2JhKDAsIDAsIDAsIDAuNykgMnB4LCB0cmFuc3BhcmVudCAwLCB0cmFuc3BhcmVudCk7YmFja2dyb3VuZC1pbWFnZTotbW96LXJlcGVhdGluZy1saW5lYXItZ3JhZGllbnQoMC4wMDAxZGVnLCByZ2JhKDAsIDAsIDAsIDAuNyksIHJnYmEoMCwgMCwgMCwgMC43KSAycHgsIHRyYW5zcGFyZW50IDAsIHRyYW5zcGFyZW50KX0ubWF0LXNsaWRlci12ZXJ0aWNhbCAubWF0LXNsaWRlci10aWNrc3tiYWNrZ3JvdW5kLWltYWdlOnJlcGVhdGluZy1saW5lYXItZ3JhZGllbnQodG8gYm90dG9tLCByZ2JhKDAsIDAsIDAsIDAuNyksIHJnYmEoMCwgMCwgMCwgMC43KSAycHgsIHRyYW5zcGFyZW50IDAsIHRyYW5zcGFyZW50KX0ubWF0LXN0ZXAtaGVhZGVyLmNkay1rZXlib2FyZC1mb2N1c2VkLC5tYXQtc3RlcC1oZWFkZXIuY2RrLXByb2dyYW0tZm9jdXNlZCwubWF0LXN0ZXAtaGVhZGVyOmhvdmVye2JhY2tncm91bmQtY29sb3I6cmdiYSgwLDAsMCwuMDQpfUBtZWRpYShob3Zlcjogbm9uZSl7Lm1hdC1zdGVwLWhlYWRlcjpob3ZlcntiYWNrZ3JvdW5kOm5vbmV9fS5tYXQtc3RlcC1oZWFkZXIgLm1hdC1zdGVwLWxhYmVsLC5tYXQtc3RlcC1oZWFkZXIgLm1hdC1zdGVwLW9wdGlvbmFse2NvbG9yOiM2MTYxNjF9Lm1hdC1zdGVwLWhlYWRlciAubWF0LXN0ZXAtaWNvbntiYWNrZ3JvdW5kLWNvbG9yOiM2MTYxNjE7Y29sb3I6I2ZmZn0ubWF0LXN0ZXAtaGVhZGVyIC5tYXQtc3RlcC1pY29uLXNlbGVjdGVkLC5tYXQtc3RlcC1oZWFkZXIgLm1hdC1zdGVwLWljb24tc3RhdGUtZG9uZSwubWF0LXN0ZXAtaGVhZGVyIC5tYXQtc3RlcC1pY29uLXN0YXRlLWVkaXR7YmFja2dyb3VuZC1jb2xvcjojZjU3YzAwO2NvbG9yOiNmZmZ9Lm1hdC1zdGVwLWhlYWRlciAubWF0LXN0ZXAtaWNvbi1zdGF0ZS1lcnJvcntiYWNrZ3JvdW5kLWNvbG9yOnRyYW5zcGFyZW50O2NvbG9yOiNmNDQzMzZ9Lm1hdC1zdGVwLWhlYWRlciAubWF0LXN0ZXAtbGFiZWwubWF0LXN0ZXAtbGFiZWwtYWN0aXZle2NvbG9yOiMyMTIxMjF9Lm1hdC1zdGVwLWhlYWRlciAubWF0LXN0ZXAtbGFiZWwubWF0LXN0ZXAtbGFiZWwtZXJyb3J7Y29sb3I6I2Y0NDMzNn0ubWF0LXN0ZXBwZXItaG9yaXpvbnRhbCwubWF0LXN0ZXBwZXItdmVydGljYWx7YmFja2dyb3VuZC1jb2xvcjojZmZmfS5tYXQtc3RlcHBlci12ZXJ0aWNhbC1saW5lOjpiZWZvcmV7Ym9yZGVyLWxlZnQtY29sb3I6cmdiYSgwLDAsMCwuMTIpfS5tYXQtaG9yaXpvbnRhbC1zdGVwcGVyLWhlYWRlcjo6YmVmb3JlLC5tYXQtaG9yaXpvbnRhbC1zdGVwcGVyLWhlYWRlcjo6YWZ0ZXIsLm1hdC1zdGVwcGVyLWhvcml6b250YWwtbGluZXtib3JkZXItdG9wLWNvbG9yOnJnYmEoMCwwLDAsLjEyKX0ubWF0LWhvcml6b250YWwtc3RlcHBlci1oZWFkZXJ7aGVpZ2h0OjcycHh9Lm1hdC1zdGVwcGVyLWxhYmVsLXBvc2l0aW9uLWJvdHRvbSAubWF0LWhvcml6b250YWwtc3RlcHBlci1oZWFkZXIsLm1hdC12ZXJ0aWNhbC1zdGVwcGVyLWhlYWRlcntwYWRkaW5nOjI0cHggMjRweH0ubWF0LXN0ZXBwZXItdmVydGljYWwtbGluZTo6YmVmb3Jle3RvcDotMTZweDtib3R0b206LTE2cHh9Lm1hdC1zdGVwcGVyLWxhYmVsLXBvc2l0aW9uLWJvdHRvbSAubWF0LWhvcml6b250YWwtc3RlcHBlci1oZWFkZXI6OmFmdGVyLC5tYXQtc3RlcHBlci1sYWJlbC1wb3NpdGlvbi1ib3R0b20gLm1hdC1ob3Jpem9udGFsLXN0ZXBwZXItaGVhZGVyOjpiZWZvcmV7dG9wOjM2cHh9Lm1hdC1zdGVwcGVyLWxhYmVsLXBvc2l0aW9uLWJvdHRvbSAubWF0LXN0ZXBwZXItaG9yaXpvbnRhbC1saW5le3RvcDozNnB4fS5tYXQtc29ydC1oZWFkZXItYXJyb3d7Y29sb3I6IzYxNjE2MX0ubWF0LXRhYi1uYXYtYmFyLC5tYXQtdGFiLWhlYWRlcntib3JkZXItYm90dG9tOjFweCBzb2xpZCByZ2JhKDAsMCwwLC4xMil9Lm1hdC10YWItZ3JvdXAtaW52ZXJ0ZWQtaGVhZGVyIC5tYXQtdGFiLW5hdi1iYXIsLm1hdC10YWItZ3JvdXAtaW52ZXJ0ZWQtaGVhZGVyIC5tYXQtdGFiLWhlYWRlcntib3JkZXItdG9wOjFweCBzb2xpZCByZ2JhKDAsMCwwLC4xMik7Ym9yZGVyLWJvdHRvbTpub25lfS5tYXQtdGFiLWxhYmVsLC5tYXQtdGFiLWxpbmt7Y29sb3I6IzIxMjEyMX0ubWF0LXRhYi1sYWJlbC5tYXQtdGFiLWRpc2FibGVkLC5tYXQtdGFiLWxpbmsubWF0LXRhYi1kaXNhYmxlZHtjb2xvcjojNzU3NTc1fS5tYXQtdGFiLWhlYWRlci1wYWdpbmF0aW9uLWNoZXZyb257Ym9yZGVyLWNvbG9yOiMyMTIxMjF9Lm1hdC10YWItaGVhZGVyLXBhZ2luYXRpb24tZGlzYWJsZWQgLm1hdC10YWItaGVhZGVyLXBhZ2luYXRpb24tY2hldnJvbntib3JkZXItY29sb3I6Izc1NzU3NX0ubWF0LXRhYi1ncm91cFtjbGFzcyo9bWF0LWJhY2tncm91bmQtXSAubWF0LXRhYi1oZWFkZXIsLm1hdC10YWItbmF2LWJhcltjbGFzcyo9bWF0LWJhY2tncm91bmQtXXtib3JkZXItYm90dG9tOm5vbmU7Ym9yZGVyLXRvcDpub25lfS5tYXQtdGFiLWdyb3VwLm1hdC1wcmltYXJ5IC5tYXQtdGFiLWxhYmVsLmNkay1rZXlib2FyZC1mb2N1c2VkOm5vdCgubWF0LXRhYi1kaXNhYmxlZCksLm1hdC10YWItZ3JvdXAubWF0LXByaW1hcnkgLm1hdC10YWItbGFiZWwuY2RrLXByb2dyYW0tZm9jdXNlZDpub3QoLm1hdC10YWItZGlzYWJsZWQpLC5tYXQtdGFiLWdyb3VwLm1hdC1wcmltYXJ5IC5tYXQtdGFiLWxpbmsuY2RrLWtleWJvYXJkLWZvY3VzZWQ6bm90KC5tYXQtdGFiLWRpc2FibGVkKSwubWF0LXRhYi1ncm91cC5tYXQtcHJpbWFyeSAubWF0LXRhYi1saW5rLmNkay1wcm9ncmFtLWZvY3VzZWQ6bm90KC5tYXQtdGFiLWRpc2FibGVkKSwubWF0LXRhYi1uYXYtYmFyLm1hdC1wcmltYXJ5IC5tYXQtdGFiLWxhYmVsLmNkay1rZXlib2FyZC1mb2N1c2VkOm5vdCgubWF0LXRhYi1kaXNhYmxlZCksLm1hdC10YWItbmF2LWJhci5tYXQtcHJpbWFyeSAubWF0LXRhYi1sYWJlbC5jZGstcHJvZ3JhbS1mb2N1c2VkOm5vdCgubWF0LXRhYi1kaXNhYmxlZCksLm1hdC10YWItbmF2LWJhci5tYXQtcHJpbWFyeSAubWF0LXRhYi1saW5rLmNkay1rZXlib2FyZC1mb2N1c2VkOm5vdCgubWF0LXRhYi1kaXNhYmxlZCksLm1hdC10YWItbmF2LWJhci5tYXQtcHJpbWFyeSAubWF0LXRhYi1saW5rLmNkay1wcm9ncmFtLWZvY3VzZWQ6bm90KC5tYXQtdGFiLWRpc2FibGVkKXtiYWNrZ3JvdW5kLWNvbG9yOnJnYmEoMjU1LDE1MiwwLC4zKX0ubWF0LXRhYi1ncm91cC5tYXQtcHJpbWFyeSAubWF0LWluay1iYXIsLm1hdC10YWItbmF2LWJhci5tYXQtcHJpbWFyeSAubWF0LWluay1iYXJ7YmFja2dyb3VuZC1jb2xvcjojZjU3YzAwfS5tYXQtdGFiLWdyb3VwLm1hdC1wcmltYXJ5Lm1hdC1iYWNrZ3JvdW5kLXByaW1hcnkgLm1hdC1pbmstYmFyLC5tYXQtdGFiLW5hdi1iYXIubWF0LXByaW1hcnkubWF0LWJhY2tncm91bmQtcHJpbWFyeSAubWF0LWluay1iYXJ7YmFja2dyb3VuZC1jb2xvcjojZmZmfS5tYXQtdGFiLWdyb3VwLm1hdC1hY2NlbnQgLm1hdC10YWItbGFiZWwuY2RrLWtleWJvYXJkLWZvY3VzZWQ6bm90KC5tYXQtdGFiLWRpc2FibGVkKSwubWF0LXRhYi1ncm91cC5tYXQtYWNjZW50IC5tYXQtdGFiLWxhYmVsLmNkay1wcm9ncmFtLWZvY3VzZWQ6bm90KC5tYXQtdGFiLWRpc2FibGVkKSwubWF0LXRhYi1ncm91cC5tYXQtYWNjZW50IC5tYXQtdGFiLWxpbmsuY2RrLWtleWJvYXJkLWZvY3VzZWQ6bm90KC5tYXQtdGFiLWRpc2FibGVkKSwubWF0LXRhYi1ncm91cC5tYXQtYWNjZW50IC5tYXQtdGFiLWxpbmsuY2RrLXByb2dyYW0tZm9jdXNlZDpub3QoLm1hdC10YWItZGlzYWJsZWQpLC5tYXQtdGFiLW5hdi1iYXIubWF0LWFjY2VudCAubWF0LXRhYi1sYWJlbC5jZGsta2V5Ym9hcmQtZm9jdXNlZDpub3QoLm1hdC10YWItZGlzYWJsZWQpLC5tYXQtdGFiLW5hdi1iYXIubWF0LWFjY2VudCAubWF0LXRhYi1sYWJlbC5jZGstcHJvZ3JhbS1mb2N1c2VkOm5vdCgubWF0LXRhYi1kaXNhYmxlZCksLm1hdC10YWItbmF2LWJhci5tYXQtYWNjZW50IC5tYXQtdGFiLWxpbmsuY2RrLWtleWJvYXJkLWZvY3VzZWQ6bm90KC5tYXQtdGFiLWRpc2FibGVkKSwubWF0LXRhYi1uYXYtYmFyLm1hdC1hY2NlbnQgLm1hdC10YWItbGluay5jZGstcHJvZ3JhbS1mb2N1c2VkOm5vdCgubWF0LXRhYi1kaXNhYmxlZCl7YmFja2dyb3VuZC1jb2xvcjpyZ2JhKDI1NSwxNTIsMCwuMyl9Lm1hdC10YWItZ3JvdXAubWF0LWFjY2VudCAubWF0LWluay1iYXIsLm1hdC10YWItbmF2LWJhci5tYXQtYWNjZW50IC5tYXQtaW5rLWJhcntiYWNrZ3JvdW5kLWNvbG9yOiNmZjk4MDB9Lm1hdC10YWItZ3JvdXAubWF0LWFjY2VudC5tYXQtYmFja2dyb3VuZC1hY2NlbnQgLm1hdC1pbmstYmFyLC5tYXQtdGFiLW5hdi1iYXIubWF0LWFjY2VudC5tYXQtYmFja2dyb3VuZC1hY2NlbnQgLm1hdC1pbmstYmFye2JhY2tncm91bmQtY29sb3I6I2ZmZn0ubWF0LXRhYi1ncm91cC5tYXQtd2FybiAubWF0LXRhYi1sYWJlbC5jZGsta2V5Ym9hcmQtZm9jdXNlZDpub3QoLm1hdC10YWItZGlzYWJsZWQpLC5tYXQtdGFiLWdyb3VwLm1hdC13YXJuIC5tYXQtdGFiLWxhYmVsLmNkay1wcm9ncmFtLWZvY3VzZWQ6bm90KC5tYXQtdGFiLWRpc2FibGVkKSwubWF0LXRhYi1ncm91cC5tYXQtd2FybiAubWF0LXRhYi1saW5rLmNkay1rZXlib2FyZC1mb2N1c2VkOm5vdCgubWF0LXRhYi1kaXNhYmxlZCksLm1hdC10YWItZ3JvdXAubWF0LXdhcm4gLm1hdC10YWItbGluay5jZGstcHJvZ3JhbS1mb2N1c2VkOm5vdCgubWF0LXRhYi1kaXNhYmxlZCksLm1hdC10YWItbmF2LWJhci5tYXQtd2FybiAubWF0LXRhYi1sYWJlbC5jZGsta2V5Ym9hcmQtZm9jdXNlZDpub3QoLm1hdC10YWItZGlzYWJsZWQpLC5tYXQtdGFiLW5hdi1iYXIubWF0LXdhcm4gLm1hdC10YWItbGFiZWwuY2RrLXByb2dyYW0tZm9jdXNlZDpub3QoLm1hdC10YWItZGlzYWJsZWQpLC5tYXQtdGFiLW5hdi1iYXIubWF0LXdhcm4gLm1hdC10YWItbGluay5jZGsta2V5Ym9hcmQtZm9jdXNlZDpub3QoLm1hdC10YWItZGlzYWJsZWQpLC5tYXQtdGFiLW5hdi1iYXIubWF0LXdhcm4gLm1hdC10YWItbGluay5jZGstcHJvZ3JhbS1mb2N1c2VkOm5vdCgubWF0LXRhYi1kaXNhYmxlZCl7YmFja2dyb3VuZC1jb2xvcjpyZ2JhKDI1NSwyMDUsMjEwLC4zKX0ubWF0LXRhYi1ncm91cC5tYXQtd2FybiAubWF0LWluay1iYXIsLm1hdC10YWItbmF2LWJhci5tYXQtd2FybiAubWF0LWluay1iYXJ7YmFja2dyb3VuZC1jb2xvcjojZjQ0MzM2fS5tYXQtdGFiLWdyb3VwLm1hdC13YXJuLm1hdC1iYWNrZ3JvdW5kLXdhcm4gLm1hdC1pbmstYmFyLC5tYXQtdGFiLW5hdi1iYXIubWF0LXdhcm4ubWF0LWJhY2tncm91bmQtd2FybiAubWF0LWluay1iYXJ7YmFja2dyb3VuZC1jb2xvcjojZmZmfS5tYXQtdGFiLWdyb3VwLm1hdC1iYWNrZ3JvdW5kLXByaW1hcnkgLm1hdC10YWItbGFiZWwuY2RrLWtleWJvYXJkLWZvY3VzZWQ6bm90KC5tYXQtdGFiLWRpc2FibGVkKSwubWF0LXRhYi1ncm91cC5tYXQtYmFja2dyb3VuZC1wcmltYXJ5IC5tYXQtdGFiLWxhYmVsLmNkay1wcm9ncmFtLWZvY3VzZWQ6bm90KC5tYXQtdGFiLWRpc2FibGVkKSwubWF0LXRhYi1ncm91cC5tYXQtYmFja2dyb3VuZC1wcmltYXJ5IC5tYXQtdGFiLWxpbmsuY2RrLWtleWJvYXJkLWZvY3VzZWQ6bm90KC5tYXQtdGFiLWRpc2FibGVkKSwubWF0LXRhYi1ncm91cC5tYXQtYmFja2dyb3VuZC1wcmltYXJ5IC5tYXQtdGFiLWxpbmsuY2RrLXByb2dyYW0tZm9jdXNlZDpub3QoLm1hdC10YWItZGlzYWJsZWQpLC5tYXQtdGFiLW5hdi1iYXIubWF0LWJhY2tncm91bmQtcHJpbWFyeSAubWF0LXRhYi1sYWJlbC5jZGsta2V5Ym9hcmQtZm9jdXNlZDpub3QoLm1hdC10YWItZGlzYWJsZWQpLC5tYXQtdGFiLW5hdi1iYXIubWF0LWJhY2tncm91bmQtcHJpbWFyeSAubWF0LXRhYi1sYWJlbC5jZGstcHJvZ3JhbS1mb2N1c2VkOm5vdCgubWF0LXRhYi1kaXNhYmxlZCksLm1hdC10YWItbmF2LWJhci5tYXQtYmFja2dyb3VuZC1wcmltYXJ5IC5tYXQtdGFiLWxpbmsuY2RrLWtleWJvYXJkLWZvY3VzZWQ6bm90KC5tYXQtdGFiLWRpc2FibGVkKSwubWF0LXRhYi1uYXYtYmFyLm1hdC1iYWNrZ3JvdW5kLXByaW1hcnkgLm1hdC10YWItbGluay5jZGstcHJvZ3JhbS1mb2N1c2VkOm5vdCgubWF0LXRhYi1kaXNhYmxlZCl7YmFja2dyb3VuZC1jb2xvcjpyZ2JhKDI1NSwxNTIsMCwuMyl9Lm1hdC10YWItZ3JvdXAubWF0LWJhY2tncm91bmQtcHJpbWFyeSAubWF0LXRhYi1oZWFkZXIsLm1hdC10YWItZ3JvdXAubWF0LWJhY2tncm91bmQtcHJpbWFyeSAubWF0LXRhYi1saW5rcywubWF0LXRhYi1ncm91cC5tYXQtYmFja2dyb3VuZC1wcmltYXJ5IC5tYXQtdGFiLWhlYWRlci1wYWdpbmF0aW9uLC5tYXQtdGFiLW5hdi1iYXIubWF0LWJhY2tncm91bmQtcHJpbWFyeSAubWF0LXRhYi1oZWFkZXIsLm1hdC10YWItbmF2LWJhci5tYXQtYmFja2dyb3VuZC1wcmltYXJ5IC5tYXQtdGFiLWxpbmtzLC5tYXQtdGFiLW5hdi1iYXIubWF0LWJhY2tncm91bmQtcHJpbWFyeSAubWF0LXRhYi1oZWFkZXItcGFnaW5hdGlvbntiYWNrZ3JvdW5kLWNvbG9yOiNmNTdjMDB9Lm1hdC10YWItZ3JvdXAubWF0LWJhY2tncm91bmQtcHJpbWFyeSAubWF0LXRhYi1sYWJlbCwubWF0LXRhYi1ncm91cC5tYXQtYmFja2dyb3VuZC1wcmltYXJ5IC5tYXQtdGFiLWxpbmssLm1hdC10YWItbmF2LWJhci5tYXQtYmFja2dyb3VuZC1wcmltYXJ5IC5tYXQtdGFiLWxhYmVsLC5tYXQtdGFiLW5hdi1iYXIubWF0LWJhY2tncm91bmQtcHJpbWFyeSAubWF0LXRhYi1saW5re2NvbG9yOiNmZmZ9Lm1hdC10YWItZ3JvdXAubWF0LWJhY2tncm91bmQtcHJpbWFyeSAubWF0LXRhYi1sYWJlbC5tYXQtdGFiLWRpc2FibGVkLC5tYXQtdGFiLWdyb3VwLm1hdC1iYWNrZ3JvdW5kLXByaW1hcnkgLm1hdC10YWItbGluay5tYXQtdGFiLWRpc2FibGVkLC5tYXQtdGFiLW5hdi1iYXIubWF0LWJhY2tncm91bmQtcHJpbWFyeSAubWF0LXRhYi1sYWJlbC5tYXQtdGFiLWRpc2FibGVkLC5tYXQtdGFiLW5hdi1iYXIubWF0LWJhY2tncm91bmQtcHJpbWFyeSAubWF0LXRhYi1saW5rLm1hdC10YWItZGlzYWJsZWR7Y29sb3I6cmdiYSgyNTUsMjU1LDI1NSwuNCl9Lm1hdC10YWItZ3JvdXAubWF0LWJhY2tncm91bmQtcHJpbWFyeSAubWF0LXRhYi1oZWFkZXItcGFnaW5hdGlvbi1jaGV2cm9uLC5tYXQtdGFiLW5hdi1iYXIubWF0LWJhY2tncm91bmQtcHJpbWFyeSAubWF0LXRhYi1oZWFkZXItcGFnaW5hdGlvbi1jaGV2cm9ue2JvcmRlci1jb2xvcjojZmZmfS5tYXQtdGFiLWdyb3VwLm1hdC1iYWNrZ3JvdW5kLXByaW1hcnkgLm1hdC10YWItaGVhZGVyLXBhZ2luYXRpb24tZGlzYWJsZWQgLm1hdC10YWItaGVhZGVyLXBhZ2luYXRpb24tY2hldnJvbiwubWF0LXRhYi1uYXYtYmFyLm1hdC1iYWNrZ3JvdW5kLXByaW1hcnkgLm1hdC10YWItaGVhZGVyLXBhZ2luYXRpb24tZGlzYWJsZWQgLm1hdC10YWItaGVhZGVyLXBhZ2luYXRpb24tY2hldnJvbntib3JkZXItY29sb3I6cmdiYSgyNTUsMjU1LDI1NSwuNCl9Lm1hdC10YWItZ3JvdXAubWF0LWJhY2tncm91bmQtcHJpbWFyeSAubWF0LXJpcHBsZS1lbGVtZW50LC5tYXQtdGFiLW5hdi1iYXIubWF0LWJhY2tncm91bmQtcHJpbWFyeSAubWF0LXJpcHBsZS1lbGVtZW50e2JhY2tncm91bmQtY29sb3I6cmdiYSgyNTUsMjU1LDI1NSwuMTIpfS5tYXQtdGFiLWdyb3VwLm1hdC1iYWNrZ3JvdW5kLWFjY2VudCAubWF0LXRhYi1sYWJlbC5jZGsta2V5Ym9hcmQtZm9jdXNlZDpub3QoLm1hdC10YWItZGlzYWJsZWQpLC5tYXQtdGFiLWdyb3VwLm1hdC1iYWNrZ3JvdW5kLWFjY2VudCAubWF0LXRhYi1sYWJlbC5jZGstcHJvZ3JhbS1mb2N1c2VkOm5vdCgubWF0LXRhYi1kaXNhYmxlZCksLm1hdC10YWItZ3JvdXAubWF0LWJhY2tncm91bmQtYWNjZW50IC5tYXQtdGFiLWxpbmsuY2RrLWtleWJvYXJkLWZvY3VzZWQ6bm90KC5tYXQtdGFiLWRpc2FibGVkKSwubWF0LXRhYi1ncm91cC5tYXQtYmFja2dyb3VuZC1hY2NlbnQgLm1hdC10YWItbGluay5jZGstcHJvZ3JhbS1mb2N1c2VkOm5vdCgubWF0LXRhYi1kaXNhYmxlZCksLm1hdC10YWItbmF2LWJhci5tYXQtYmFja2dyb3VuZC1hY2NlbnQgLm1hdC10YWItbGFiZWwuY2RrLWtleWJvYXJkLWZvY3VzZWQ6bm90KC5tYXQtdGFiLWRpc2FibGVkKSwubWF0LXRhYi1uYXYtYmFyLm1hdC1iYWNrZ3JvdW5kLWFjY2VudCAubWF0LXRhYi1sYWJlbC5jZGstcHJvZ3JhbS1mb2N1c2VkOm5vdCgubWF0LXRhYi1kaXNhYmxlZCksLm1hdC10YWItbmF2LWJhci5tYXQtYmFja2dyb3VuZC1hY2NlbnQgLm1hdC10YWItbGluay5jZGsta2V5Ym9hcmQtZm9jdXNlZDpub3QoLm1hdC10YWItZGlzYWJsZWQpLC5tYXQtdGFiLW5hdi1iYXIubWF0LWJhY2tncm91bmQtYWNjZW50IC5tYXQtdGFiLWxpbmsuY2RrLXByb2dyYW0tZm9jdXNlZDpub3QoLm1hdC10YWItZGlzYWJsZWQpe2JhY2tncm91bmQtY29sb3I6cmdiYSgyNTUsMTUyLDAsLjMpfS5tYXQtdGFiLWdyb3VwLm1hdC1iYWNrZ3JvdW5kLWFjY2VudCAubWF0LXRhYi1oZWFkZXIsLm1hdC10YWItZ3JvdXAubWF0LWJhY2tncm91bmQtYWNjZW50IC5tYXQtdGFiLWxpbmtzLC5tYXQtdGFiLWdyb3VwLm1hdC1iYWNrZ3JvdW5kLWFjY2VudCAubWF0LXRhYi1oZWFkZXItcGFnaW5hdGlvbiwubWF0LXRhYi1uYXYtYmFyLm1hdC1iYWNrZ3JvdW5kLWFjY2VudCAubWF0LXRhYi1oZWFkZXIsLm1hdC10YWItbmF2LWJhci5tYXQtYmFja2dyb3VuZC1hY2NlbnQgLm1hdC10YWItbGlua3MsLm1hdC10YWItbmF2LWJhci5tYXQtYmFja2dyb3VuZC1hY2NlbnQgLm1hdC10YWItaGVhZGVyLXBhZ2luYXRpb257YmFja2dyb3VuZC1jb2xvcjojZmY5ODAwfS5tYXQtdGFiLWdyb3VwLm1hdC1iYWNrZ3JvdW5kLWFjY2VudCAubWF0LXRhYi1sYWJlbCwubWF0LXRhYi1ncm91cC5tYXQtYmFja2dyb3VuZC1hY2NlbnQgLm1hdC10YWItbGluaywubWF0LXRhYi1uYXYtYmFyLm1hdC1iYWNrZ3JvdW5kLWFjY2VudCAubWF0LXRhYi1sYWJlbCwubWF0LXRhYi1uYXYtYmFyLm1hdC1iYWNrZ3JvdW5kLWFjY2VudCAubWF0LXRhYi1saW5re2NvbG9yOiNmZmZ9Lm1hdC10YWItZ3JvdXAubWF0LWJhY2tncm91bmQtYWNjZW50IC5tYXQtdGFiLWxhYmVsLm1hdC10YWItZGlzYWJsZWQsLm1hdC10YWItZ3JvdXAubWF0LWJhY2tncm91bmQtYWNjZW50IC5tYXQtdGFiLWxpbmsubWF0LXRhYi1kaXNhYmxlZCwubWF0LXRhYi1uYXYtYmFyLm1hdC1iYWNrZ3JvdW5kLWFjY2VudCAubWF0LXRhYi1sYWJlbC5tYXQtdGFiLWRpc2FibGVkLC5tYXQtdGFiLW5hdi1iYXIubWF0LWJhY2tncm91bmQtYWNjZW50IC5tYXQtdGFiLWxpbmsubWF0LXRhYi1kaXNhYmxlZHtjb2xvcjpyZ2JhKDI1NSwyNTUsMjU1LC40KX0ubWF0LXRhYi1ncm91cC5tYXQtYmFja2dyb3VuZC1hY2NlbnQgLm1hdC10YWItaGVhZGVyLXBhZ2luYXRpb24tY2hldnJvbiwubWF0LXRhYi1uYXYtYmFyLm1hdC1iYWNrZ3JvdW5kLWFjY2VudCAubWF0LXRhYi1oZWFkZXItcGFnaW5hdGlvbi1jaGV2cm9ue2JvcmRlci1jb2xvcjojZmZmfS5tYXQtdGFiLWdyb3VwLm1hdC1iYWNrZ3JvdW5kLWFjY2VudCAubWF0LXRhYi1oZWFkZXItcGFnaW5hdGlvbi1kaXNhYmxlZCAubWF0LXRhYi1oZWFkZXItcGFnaW5hdGlvbi1jaGV2cm9uLC5tYXQtdGFiLW5hdi1iYXIubWF0LWJhY2tncm91bmQtYWNjZW50IC5tYXQtdGFiLWhlYWRlci1wYWdpbmF0aW9uLWRpc2FibGVkIC5tYXQtdGFiLWhlYWRlci1wYWdpbmF0aW9uLWNoZXZyb257Ym9yZGVyLWNvbG9yOnJnYmEoMjU1LDI1NSwyNTUsLjQpfS5tYXQtdGFiLWdyb3VwLm1hdC1iYWNrZ3JvdW5kLWFjY2VudCAubWF0LXJpcHBsZS1lbGVtZW50LC5tYXQtdGFiLW5hdi1iYXIubWF0LWJhY2tncm91bmQtYWNjZW50IC5tYXQtcmlwcGxlLWVsZW1lbnR7YmFja2dyb3VuZC1jb2xvcjpyZ2JhKDI1NSwyNTUsMjU1LC4xMil9Lm1hdC10YWItZ3JvdXAubWF0LWJhY2tncm91bmQtd2FybiAubWF0LXRhYi1sYWJlbC5jZGsta2V5Ym9hcmQtZm9jdXNlZDpub3QoLm1hdC10YWItZGlzYWJsZWQpLC5tYXQtdGFiLWdyb3VwLm1hdC1iYWNrZ3JvdW5kLXdhcm4gLm1hdC10YWItbGFiZWwuY2RrLXByb2dyYW0tZm9jdXNlZDpub3QoLm1hdC10YWItZGlzYWJsZWQpLC5tYXQtdGFiLWdyb3VwLm1hdC1iYWNrZ3JvdW5kLXdhcm4gLm1hdC10YWItbGluay5jZGsta2V5Ym9hcmQtZm9jdXNlZDpub3QoLm1hdC10YWItZGlzYWJsZWQpLC5tYXQtdGFiLWdyb3VwLm1hdC1iYWNrZ3JvdW5kLXdhcm4gLm1hdC10YWItbGluay5jZGstcHJvZ3JhbS1mb2N1c2VkOm5vdCgubWF0LXRhYi1kaXNhYmxlZCksLm1hdC10YWItbmF2LWJhci5tYXQtYmFja2dyb3VuZC13YXJuIC5tYXQtdGFiLWxhYmVsLmNkay1rZXlib2FyZC1mb2N1c2VkOm5vdCgubWF0LXRhYi1kaXNhYmxlZCksLm1hdC10YWItbmF2LWJhci5tYXQtYmFja2dyb3VuZC13YXJuIC5tYXQtdGFiLWxhYmVsLmNkay1wcm9ncmFtLWZvY3VzZWQ6bm90KC5tYXQtdGFiLWRpc2FibGVkKSwubWF0LXRhYi1uYXYtYmFyLm1hdC1iYWNrZ3JvdW5kLXdhcm4gLm1hdC10YWItbGluay5jZGsta2V5Ym9hcmQtZm9jdXNlZDpub3QoLm1hdC10YWItZGlzYWJsZWQpLC5tYXQtdGFiLW5hdi1iYXIubWF0LWJhY2tncm91bmQtd2FybiAubWF0LXRhYi1saW5rLmNkay1wcm9ncmFtLWZvY3VzZWQ6bm90KC5tYXQtdGFiLWRpc2FibGVkKXtiYWNrZ3JvdW5kLWNvbG9yOnJnYmEoMjU1LDIwNSwyMTAsLjMpfS5tYXQtdGFiLWdyb3VwLm1hdC1iYWNrZ3JvdW5kLXdhcm4gLm1hdC10YWItaGVhZGVyLC5tYXQtdGFiLWdyb3VwLm1hdC1iYWNrZ3JvdW5kLXdhcm4gLm1hdC10YWItbGlua3MsLm1hdC10YWItZ3JvdXAubWF0LWJhY2tncm91bmQtd2FybiAubWF0LXRhYi1oZWFkZXItcGFnaW5hdGlvbiwubWF0LXRhYi1uYXYtYmFyLm1hdC1iYWNrZ3JvdW5kLXdhcm4gLm1hdC10YWItaGVhZGVyLC5tYXQtdGFiLW5hdi1iYXIubWF0LWJhY2tncm91bmQtd2FybiAubWF0LXRhYi1saW5rcywubWF0LXRhYi1uYXYtYmFyLm1hdC1iYWNrZ3JvdW5kLXdhcm4gLm1hdC10YWItaGVhZGVyLXBhZ2luYXRpb257YmFja2dyb3VuZC1jb2xvcjojZjQ0MzM2fS5tYXQtdGFiLWdyb3VwLm1hdC1iYWNrZ3JvdW5kLXdhcm4gLm1hdC10YWItbGFiZWwsLm1hdC10YWItZ3JvdXAubWF0LWJhY2tncm91bmQtd2FybiAubWF0LXRhYi1saW5rLC5tYXQtdGFiLW5hdi1iYXIubWF0LWJhY2tncm91bmQtd2FybiAubWF0LXRhYi1sYWJlbCwubWF0LXRhYi1uYXYtYmFyLm1hdC1iYWNrZ3JvdW5kLXdhcm4gLm1hdC10YWItbGlua3tjb2xvcjojZmZmfS5tYXQtdGFiLWdyb3VwLm1hdC1iYWNrZ3JvdW5kLXdhcm4gLm1hdC10YWItbGFiZWwubWF0LXRhYi1kaXNhYmxlZCwubWF0LXRhYi1ncm91cC5tYXQtYmFja2dyb3VuZC13YXJuIC5tYXQtdGFiLWxpbmsubWF0LXRhYi1kaXNhYmxlZCwubWF0LXRhYi1uYXYtYmFyLm1hdC1iYWNrZ3JvdW5kLXdhcm4gLm1hdC10YWItbGFiZWwubWF0LXRhYi1kaXNhYmxlZCwubWF0LXRhYi1uYXYtYmFyLm1hdC1iYWNrZ3JvdW5kLXdhcm4gLm1hdC10YWItbGluay5tYXQtdGFiLWRpc2FibGVke2NvbG9yOnJnYmEoMjU1LDI1NSwyNTUsLjQpfS5tYXQtdGFiLWdyb3VwLm1hdC1iYWNrZ3JvdW5kLXdhcm4gLm1hdC10YWItaGVhZGVyLXBhZ2luYXRpb24tY2hldnJvbiwubWF0LXRhYi1uYXYtYmFyLm1hdC1iYWNrZ3JvdW5kLXdhcm4gLm1hdC10YWItaGVhZGVyLXBhZ2luYXRpb24tY2hldnJvbntib3JkZXItY29sb3I6I2ZmZn0ubWF0LXRhYi1ncm91cC5tYXQtYmFja2dyb3VuZC13YXJuIC5tYXQtdGFiLWhlYWRlci1wYWdpbmF0aW9uLWRpc2FibGVkIC5tYXQtdGFiLWhlYWRlci1wYWdpbmF0aW9uLWNoZXZyb24sLm1hdC10YWItbmF2LWJhci5tYXQtYmFja2dyb3VuZC13YXJuIC5tYXQtdGFiLWhlYWRlci1wYWdpbmF0aW9uLWRpc2FibGVkIC5tYXQtdGFiLWhlYWRlci1wYWdpbmF0aW9uLWNoZXZyb257Ym9yZGVyLWNvbG9yOnJnYmEoMjU1LDI1NSwyNTUsLjQpfS5tYXQtdGFiLWdyb3VwLm1hdC1iYWNrZ3JvdW5kLXdhcm4gLm1hdC1yaXBwbGUtZWxlbWVudCwubWF0LXRhYi1uYXYtYmFyLm1hdC1iYWNrZ3JvdW5kLXdhcm4gLm1hdC1yaXBwbGUtZWxlbWVudHtiYWNrZ3JvdW5kLWNvbG9yOnJnYmEoMjU1LDI1NSwyNTUsLjEyKX0ubWF0LXRvb2xiYXJ7YmFja2dyb3VuZDojZjVmNWY1O2NvbG9yOiMyMTIxMjF9Lm1hdC10b29sYmFyLm1hdC1wcmltYXJ5e2JhY2tncm91bmQ6I2Y1N2MwMDtjb2xvcjojZmZmfS5tYXQtdG9vbGJhci5tYXQtYWNjZW50e2JhY2tncm91bmQ6I2ZmOTgwMDtjb2xvcjojZmZmfS5tYXQtdG9vbGJhci5tYXQtd2FybntiYWNrZ3JvdW5kOiNmNDQzMzY7Y29sb3I6I2ZmZn0ubWF0LXRvb2xiYXIgLm1hdC1mb3JtLWZpZWxkLXVuZGVybGluZSwubWF0LXRvb2xiYXIgLm1hdC1mb3JtLWZpZWxkLXJpcHBsZSwubWF0LXRvb2xiYXIgLm1hdC1mb2N1c2VkIC5tYXQtZm9ybS1maWVsZC1yaXBwbGV7YmFja2dyb3VuZC1jb2xvcjpjdXJyZW50Q29sb3J9Lm1hdC10b29sYmFyIC5tYXQtZm9ybS1maWVsZC1sYWJlbCwubWF0LXRvb2xiYXIgLm1hdC1mb2N1c2VkIC5tYXQtZm9ybS1maWVsZC1sYWJlbCwubWF0LXRvb2xiYXIgLm1hdC1zZWxlY3QtdmFsdWUsLm1hdC10b29sYmFyIC5tYXQtc2VsZWN0LWFycm93LC5tYXQtdG9vbGJhciAubWF0LWZvcm0tZmllbGQubWF0LWZvY3VzZWQgLm1hdC1zZWxlY3QtYXJyb3d7Y29sb3I6aW5oZXJpdH0ubWF0LXRvb2xiYXIgLm1hdC1pbnB1dC1lbGVtZW50e2NhcmV0LWNvbG9yOmN1cnJlbnRDb2xvcn0ubWF0LXRvb2xiYXItbXVsdGlwbGUtcm93c3ttaW4taGVpZ2h0OjY0cHh9Lm1hdC10b29sYmFyLXJvdywubWF0LXRvb2xiYXItc2luZ2xlLXJvd3toZWlnaHQ6NjRweH1AbWVkaWEobWF4LXdpZHRoOiA1OTlweCl7Lm1hdC10b29sYmFyLW11bHRpcGxlLXJvd3N7bWluLWhlaWdodDo1NnB4fS5tYXQtdG9vbGJhci1yb3csLm1hdC10b29sYmFyLXNpbmdsZS1yb3d7aGVpZ2h0OjU2cHh9fS5tYXQtdG9vbHRpcHtiYWNrZ3JvdW5kOnJnYmEoOTcsOTcsOTcsLjkpfS5tYXQtdHJlZXtiYWNrZ3JvdW5kOiNmZmZ9Lm1hdC10cmVlLW5vZGUsLm1hdC1uZXN0ZWQtdHJlZS1ub2Rle2NvbG9yOiMyMTIxMjF9Lm1hdC10cmVlLW5vZGV7bWluLWhlaWdodDo0OHB4fS5tYXQtc25hY2stYmFyLWNvbnRhaW5lcntjb2xvcjpyZ2JhKDI1NSwyNTUsMjU1LC43KTtiYWNrZ3JvdW5kOiMzMjMyMzI7Ym94LXNoYWRvdzowcHggM3B4IDVweCAtMXB4IHJnYmEoMCwgMCwgMCwgMC4yKSwwcHggNnB4IDEwcHggMHB4IHJnYmEoMCwgMCwgMCwgMC4xNCksMHB4IDFweCAxOHB4IDBweCByZ2JhKDAsIDAsIDAsIDAuMTIpfS5tYXQtc2ltcGxlLXNuYWNrYmFyLWFjdGlvbntjb2xvcjojZmY5ODAwfQo8L3N0eWxlPgoKPHN0eWxlPgogIGh0bWwsCiAgYm9keSB7CiAgICBtYXJnaW46IDA7CiAgICBwYWRkaW5nOiAwOwogICAgaGVpZ2h0OiAxMDAlOwogICAgZm9udC1mYW1pbHk6IFJvYm90bywgc2Fucy1zZXJpZjsKICAgIGNvbG9yOiB2YXIoLS1wcmltYXJ5LXRleHQtY29sb3IpOwoKICAgIC8qIExlZ2FjeSBtZWNoYW5pc20gdG8gYXZvaWQgaXNzdWVzIHdpdGggc3VicGl4ZWwgYW50aS1hbGlhc2luZyBvbiBtYWNPUy4KICAgICAqCiAgICAgKiBJbiB0aGUgcGFzdCBbMV0sIG1hY09TIHN1YnBpeGVsIEFBIGNhdXNlZCBleGNlc3NpdmUgYm9sZGluZyBmb3IgbGlnaHQtb24tZGFyayB0ZXh0OyB0aGlzIHJ1bGUKICAgICAqIGF2b2lkcyB0aGF0IGJ5IHJlcXVlc3Rpbmcgbm9uLXN1YnBpeGVsIEFBIGFsd2F5cywgcmF0aGVyIHRoYW4gdGhlIGRlZmF1bHQgYmVoYXZpb3IsIHdoaWNoIGlzCiAgICAgKiB0byB1c2Ugc3VicGl4ZWwgQUEgd2hlbiBhdmFpbGFibGUuIFRoZSBvcmlnaW5hbCBpc3N1ZSB3YXMgImZpeGVkIiBieSByZW1vdmluZyBzdWJwaXhlbCBBQSBpbgogICAgICogbWFjT1MgMTQgKE1vamF2ZSksIGJ1dCBmb3IgbGVnYWN5IHJlYXNvbnMgdGhleSBwcmVzZXJ2ZWQgdGhlIGJvbGRpbmcgZWZmZWN0IGFzIGFuIG9wdGlvbi4KICAgICAqIENocm9tZSB0aGVuIGluIHR1cm4gdXBkYXRlZCBpdHMgZm9udCByZW5kZXJpbmcgdG8gYXBwbHkgdGhhdCBib2xkaW5nIGVmZmVjdCBbMl0sIHdoaWNoIG1lYW5zCiAgICAgKiB0aGF0IGV2ZW4gdGhvdWdoIHRoZSBgLXdlYmtpdC1mb250LXNtb290aGluZ2AgZG9jcyBbM10gc3VnZ2VzdCB0aGF0IHNldHRpbmcgYGFudGlhbGlhc2VkYAogICAgICogd291bGQgaGF2ZSBubyBlZmZlY3QgZm9yIHJlY2VudCB2ZXJzaW9ucyBvZiBtYWNPUywgaXQgc3RpbGwgaXMgbmVlZGVkIHRvIGF2b2lkIHRoZSBib2xkaW5nLgogICAgICoKICAgICAqIFsxXTogaHR0cDovL3d3dy5saWdodGVycmEuY29tL2FydGljbGVzL21hY29zeHRleHRhYWJ1Zy8KICAgICAqIFsyXTogaHR0cHM6Ly9idWdzLmNocm9taXVtLm9yZy9wL2Nocm9taXVtL2lzc3Vlcy9kZXRhaWw/aWQ9ODU4ODYxCiAgICAgKiBbM106IGh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2VuLVVTL2RvY3MvV2ViL0NTUy9mb250LXNtb290aAogICAgICoKICAgICAqLwoKICAgIC13ZWJraXQtZm9udC1zbW9vdGhpbmc6IGFudGlhbGlhc2VkOwogIH0KICBub3NjcmlwdCB7CiAgICBkaXNwbGF5OiBibG9jazsKICAgIG1hcmdpbjogMCBhdXRvOwogICAgbWF4LXdpZHRoOiA2MDBweDsKICAgIHBhZGRpbmc6IDEwcHg7CiAgfQo8L3N0eWxlPgoKPC9oZWFkPjxib2R5Pjxub3NjcmlwdD4KICAgIDxoMT5UZW5zb3JCb2FyZCByZXF1aXJlcyBKYXZhU2NyaXB0PC9oMT4KICAgIDxwPlBsZWFzZSBlbmFibGUgSmF2YVNjcmlwdCBhbmQgcmVsb2FkIHRoaXMgcGFnZS48L3A+CiAgPC9ub3NjcmlwdD48dGItd2ViYXBwPjwvdGItd2ViYXBwPjxzY3JpcHQgc3JjPSJpbmRleC5qcz9fZmlsZV9oYXNoPThiYmViNzM5Ij48L3NjcmlwdD48L2JvZHk+PC9odG1sPg==", + "ok": true, + "headers": [ + [ + "content-type", + "text/html; charset=utf-8" + ] + ], + "status": 200, + "status_text": "OK" + }, + "https://localhost:6006/index.js?_file_hash=8bbeb739": { + "data": "dmFyIENMT1NVUkVfTk9fREVQUyA9IHRydWU7Ci8vIENvcHlyaWdodCAyMDA2IFRoZSBDbG9zdXJlIExpYnJhcnkgQXV0aG9ycy4gQWxsIFJpZ2h0cyBSZXNlcnZlZC4KLy8KLy8gTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlICJMaWNlbnNlIik7Ci8vIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS4KLy8gWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0Ci8vCi8vICAgICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wCi8vCi8vIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmUKLy8gZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gIkFTLUlTIiBCQVNJUywKLy8gV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuCi8vIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmQKLy8gbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuCgovKioKICogQGZpbGVvdmVydmlldyBCb290c3RyYXAgZm9yIHRoZSBHb29nbGUgSlMgTGlicmFyeSAoQ2xvc3VyZSkuCiAqCiAqIEluIHVuY29tcGlsZWQgbW9kZSBiYXNlLmpzIHdpbGwgYXR0ZW1wdCB0byBsb2FkIENsb3N1cmUncyBkZXBzIGZpbGUsIHVubGVzcwogKiB0aGUgZ2xvYmFsIDxjb2RlPkNMT1NVUkVfTk9fREVQUzwvY29kZT4gaXMgc2V0IHRvIHRydWUuICBUaGlzIGFsbG93cyBwcm9qZWN0cwogKiB0byBpbmNsdWRlIHRoZWlyIG93biBkZXBzIGZpbGUocykgZnJvbSBkaWZmZXJlbnQgbG9jYXRpb25zLgogKgogKiBBdm9pZCBpbmNsdWRpbmcgYmFzZS5qcyBtb3JlIHRoYW4gb25jZS4gVGhpcyBpcyBzdHJpY3RseSBkaXNjb3VyYWdlZCBhbmQgbm90CiAqIHN1cHBvcnRlZC4gZ29vZy5yZXF1aXJlKC4uLikgd29uJ3Qgd29yayBwcm9wZXJseSBpbiB0aGF0IGNhc2UuCiAqCiAqIEBwcm92aWRlR29vZwogKi8KCgovKioKICogQGRlZmluZSB7Ym9vbGVhbn0gT3ZlcnJpZGRlbiB0byB0cnVlIGJ5IHRoZSBjb21waWxlci4KICovCnZhciBDT01QSUxFRCA9IGZhbHNlOwoKCi8qKgogKiBCYXNlIG5hbWVzcGFjZSBmb3IgdGhlIENsb3N1cmUgbGlicmFyeS4gIENoZWNrcyB0byBzZWUgZ29vZyBpcyBhbHJlYWR5CiAqIGRlZmluZWQgaW4gdGhlIGN1cnJlbnQgc2NvcGUgYmVmb3JlIGFzc2lnbmluZyB0byBwcmV2ZW50IGNsb2JiZXJpbmcgaWYKICogYmFzZS5qcyBpcyBsb2FkZWQgbW9yZSB0aGFuIG9uY2UuCiAqCiAqIEBjb25zdAogKi8KdmFyIGdvb2cgPSBnb29nIHx8IHt9OwoKLyoqCiAqIFJlZmVyZW5jZSB0byB0aGUgZ2xvYmFsIG9iamVjdC4KICogaHR0cHM6Ly93d3cuZWNtYS1pbnRlcm5hdGlvbmFsLm9yZy9lY21hLTI2Mi85LjAvaW5kZXguaHRtbCNzZWMtZ2xvYmFsLW9iamVjdAogKgogKiBNb3JlIGluZm8gb24gdGhpcyBpbXBsZW1lbnRhdGlvbiBoZXJlOgogKiBodHRwczovL2RvY3MuZ29vZ2xlLmNvbS9kb2N1bWVudC9kLzFOQWVXNFdrN0k3RlYwWTJ0Y1VGdlFkR01jODlrMnZkZ1NYSW53OF9udkNJL2VkaXQKICoKICogQGNvbnN0CiAqIEBzdXBwcmVzcyB7dW5kZWZpbmVkVmFyc30gc2VsZiB3b24ndCBiZSByZWZlcmVuY2VkIHVubGVzcyBgdGhpc2AgaXMgZmFsc3kuCiAqIEB0eXBlIHshR2xvYmFsfQogKi8KZ29vZy5nbG9iYWwgPQogICAgLy8gQ2hlY2sgYHRoaXNgIGZpcnN0IGZvciBiYWNrd2FyZHMgY29tcGF0aWJpbGl0eS4KICAgIC8vIFZhbGlkIHVubGVzcyBydW5uaW5nIGFzIGFuIEVTIG1vZHVsZSBvciBpbiBhIGZ1bmN0aW9uIHdyYXBwZXIgY2FsbGVkCiAgICAvLyAgIHdpdGhvdXQgc2V0dGluZyBgdGhpc2AgcHJvcGVybHkuCiAgICAvLyBOb3RlIHRoYXQgYmFzZS5qcyBjYW4ndCB1c2VmdWxseSBiZSBpbXBvcnRlZCBhcyBhbiBFUyBtb2R1bGUsIGJ1dCBpdCBtYXkKICAgIC8vIGJlIGNvbXBpbGVkIGludG8gYnVuZGxlcyB0aGF0IGFyZSBsb2FkYWJsZSBhcyBFUyBtb2R1bGVzLgogICAgdGhpcyB8fAogICAgLy8gaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZW4tVVMvZG9jcy9XZWIvQVBJL1dpbmRvdy9zZWxmCiAgICAvLyBGb3IgaW4tcGFnZSBicm93c2VyIGVudmlyb25tZW50cyBhbmQgd29ya2Vycy4KICAgIHNlbGY7CgoKLyoqCiAqIEEgaG9vayBmb3Igb3ZlcnJpZGluZyB0aGUgZGVmaW5lIHZhbHVlcyBpbiB1bmNvbXBpbGVkIG1vZGUuCiAqCiAqIEluIHVuY29tcGlsZWQgbW9kZSwgYENMT1NVUkVfVU5DT01QSUxFRF9ERUZJTkVTYCBtYXkgYmUgZGVmaW5lZCBiZWZvcmUKICogbG9hZGluZyBiYXNlLmpzLiAgSWYgYSBrZXkgaXMgZGVmaW5lZCBpbiBgQ0xPU1VSRV9VTkNPTVBJTEVEX0RFRklORVNgLAogKiBgZ29vZy5kZWZpbmVgIHdpbGwgdXNlIHRoZSB2YWx1ZSBpbnN0ZWFkIG9mIHRoZSBkZWZhdWx0IHZhbHVlLiAgVGhpcwogKiBhbGxvd3MgZmxhZ3MgdG8gYmUgb3ZlcndyaXR0ZW4gd2l0aG91dCBjb21waWxhdGlvbiAodGhpcyBpcyBub3JtYWxseQogKiBhY2NvbXBsaXNoZWQgd2l0aCB0aGUgY29tcGlsZXIncyAiZGVmaW5lIiBmbGFnKS4KICoKICogRXhhbXBsZToKICogPHByZT4KICogICB2YXIgQ0xPU1VSRV9VTkNPTVBJTEVEX0RFRklORVMgPSB7J2dvb2cuREVCVUcnOiBmYWxzZX07CiAqIDwvcHJlPgogKgogKiBAdHlwZSB7T2JqZWN0PHN0cmluZywgKHN0cmluZ3xudW1iZXJ8Ym9vbGVhbik+fHVuZGVmaW5lZH0KICovCmdvb2cuZ2xvYmFsLkNMT1NVUkVfVU5DT01QSUxFRF9ERUZJTkVTOwoKCi8qKgogKiBBIGhvb2sgZm9yIG92ZXJyaWRpbmcgdGhlIGRlZmluZSB2YWx1ZXMgaW4gdW5jb21waWxlZCBvciBjb21waWxlZCBtb2RlLAogKiBsaWtlIENMT1NVUkVfVU5DT01QSUxFRF9ERUZJTkVTIGJ1dCBlZmZlY3RpdmUgaW4gY29tcGlsZWQgY29kZS4gIEluCiAqIHVuY29tcGlsZWQgY29kZSBDTE9TVVJFX1VOQ09NUElMRURfREVGSU5FUyB0YWtlcyBwcmVjZWRlbmNlLgogKgogKiBBbHNvIHVubGlrZSBDTE9TVVJFX1VOQ09NUElMRURfREVGSU5FUyB0aGUgdmFsdWVzIG11c3QgYmUgbnVtYmVyLCBib29sZWFuIG9yCiAqIHN0cmluZyBsaXRlcmFscyBvciB0aGUgY29tcGlsZXIgd2lsbCBlbWl0IGFuIGVycm9yLgogKgogKiBXaGlsZSBhbnkgQGRlZmluZSB2YWx1ZSBtYXkgYmUgc2V0LCBvbmx5IHRob3NlIHNldCB3aXRoIGdvb2cuZGVmaW5lIHdpbGwgYmUKICogZWZmZWN0aXZlIGZvciB1bmNvbXBpbGVkIGNvZGUuCiAqCiAqIEV4YW1wbGU6CiAqIDxwcmU+CiAqICAgdmFyIENMT1NVUkVfREVGSU5FUyA9IHsnZ29vZy5ERUJVRyc6IGZhbHNlfSA7CiAqIDwvcHJlPgogKgogKiBAdHlwZSB7T2JqZWN0PHN0cmluZywgKHN0cmluZ3xudW1iZXJ8Ym9vbGVhbik+fHVuZGVmaW5lZH0KICovCmdvb2cuZ2xvYmFsLkNMT1NVUkVfREVGSU5FUzsKCgovKioKICogUmV0dXJucyB0cnVlIGlmIHRoZSBzcGVjaWZpZWQgdmFsdWUgaXMgbm90IHVuZGVmaW5lZC4KICoKICogQHBhcmFtIHs/fSB2YWwgVmFyaWFibGUgdG8gdGVzdC4KICogQHJldHVybiB7Ym9vbGVhbn0gV2hldGhlciB2YXJpYWJsZSBpcyBkZWZpbmVkLgogKiBAZGVwcmVjYXRlZCBVc2UgYHZhbCAhPT0gdW5kZWZpbmVkYCBpbnN0ZWFkLgogKi8KZ29vZy5pc0RlZiA9IGZ1bmN0aW9uKHZhbCkgewogIC8vIHZvaWQgMCBhbHdheXMgZXZhbHVhdGVzIHRvIHVuZGVmaW5lZCBhbmQgaGVuY2Ugd2UgZG8gbm90IG5lZWQgdG8gZGVwZW5kIG9uCiAgLy8gdGhlIGRlZmluaXRpb24gb2YgdGhlIGdsb2JhbCB2YXJpYWJsZSBuYW1lZCAndW5kZWZpbmVkJy4KICByZXR1cm4gdmFsICE9PSB2b2lkIDA7Cn07CgovKioKICogUmV0dXJucyB0cnVlIGlmIHRoZSBzcGVjaWZpZWQgdmFsdWUgaXMgYSBzdHJpbmcuCiAqIEBwYXJhbSB7P30gdmFsIFZhcmlhYmxlIHRvIHRlc3QuCiAqIEByZXR1cm4ge2Jvb2xlYW59IFdoZXRoZXIgdmFyaWFibGUgaXMgYSBzdHJpbmcuCiAqIEBkZXByZWNhdGVkIFVzZSBgdHlwZW9mIHZhbCA9PT0gJ3N0cmluZydgIGluc3RlYWQuCiAqLwpnb29nLmlzU3RyaW5nID0gZnVuY3Rpb24odmFsKSB7CiAgcmV0dXJuIHR5cGVvZiB2YWwgPT0gJ3N0cmluZyc7Cn07CgoKLyoqCiAqIFJldHVybnMgdHJ1ZSBpZiB0aGUgc3BlY2lmaWVkIHZhbHVlIGlzIGEgYm9vbGVhbi4KICogQHBhcmFtIHs/fSB2YWwgVmFyaWFibGUgdG8gdGVzdC4KICogQHJldHVybiB7Ym9vbGVhbn0gV2hldGhlciB2YXJpYWJsZSBpcyBib29sZWFuLgogKiBAZGVwcmVjYXRlZCBVc2UgYHR5cGVvZiB2YWwgPT09ICdib29sZWFuJ2AgaW5zdGVhZC4KICovCmdvb2cuaXNCb29sZWFuID0gZnVuY3Rpb24odmFsKSB7CiAgcmV0dXJuIHR5cGVvZiB2YWwgPT0gJ2Jvb2xlYW4nOwp9OwoKCi8qKgogKiBSZXR1cm5zIHRydWUgaWYgdGhlIHNwZWNpZmllZCB2YWx1ZSBpcyBhIG51bWJlci4KICogQHBhcmFtIHs/fSB2YWwgVmFyaWFibGUgdG8gdGVzdC4KICogQHJldHVybiB7Ym9vbGVhbn0gV2hldGhlciB2YXJpYWJsZSBpcyBhIG51bWJlci4KICogQGRlcHJlY2F0ZWQgVXNlIGB0eXBlb2YgdmFsID09PSAnbnVtYmVyJ2AgaW5zdGVhZC4KICovCmdvb2cuaXNOdW1iZXIgPSBmdW5jdGlvbih2YWwpIHsKICByZXR1cm4gdHlwZW9mIHZhbCA9PSAnbnVtYmVyJzsKfTsKCgovKioKICogQnVpbGRzIGFuIG9iamVjdCBzdHJ1Y3R1cmUgZm9yIHRoZSBwcm92aWRlZCBuYW1lc3BhY2UgcGF0aCwgZW5zdXJpbmcgdGhhdAogKiBuYW1lcyB0aGF0IGFscmVhZHkgZXhpc3QgYXJlIG5vdCBvdmVyd3JpdHRlbi4gRm9yIGV4YW1wbGU6CiAqICJhLmIuYyIgLT4gYSA9IHt9O2EuYj17fTthLmIuYz17fTsKICogVXNlZCBieSBnb29nLnByb3ZpZGUgYW5kIGdvb2cuZXhwb3J0U3ltYm9sLgogKiBAcGFyYW0ge3N0cmluZ30gbmFtZSBuYW1lIG9mIHRoZSBvYmplY3QgdGhhdCB0aGlzIGZpbGUgZGVmaW5lcy4KICogQHBhcmFtIHsqPX0gb3B0X29iamVjdCB0aGUgb2JqZWN0IHRvIGV4cG9zZSBhdCB0aGUgZW5kIG9mIHRoZSBwYXRoLgogKiBAcGFyYW0ge09iamVjdD19IG9wdF9vYmplY3RUb0V4cG9ydFRvIFRoZSBvYmplY3QgdG8gYWRkIHRoZSBwYXRoIHRvOyBkZWZhdWx0CiAqICAgICBpcyBgZ29vZy5nbG9iYWxgLgogKiBAcHJpdmF0ZQogKi8KZ29vZy5leHBvcnRQYXRoXyA9IGZ1bmN0aW9uKG5hbWUsIG9wdF9vYmplY3QsIG9wdF9vYmplY3RUb0V4cG9ydFRvKSB7CiAgdmFyIHBhcnRzID0gbmFtZS5zcGxpdCgnLicpOwogIHZhciBjdXIgPSBvcHRfb2JqZWN0VG9FeHBvcnRUbyB8fCBnb29nLmdsb2JhbDsKCiAgLy8gSW50ZXJuZXQgRXhwbG9yZXIgZXhoaWJpdHMgc3RyYW5nZSBiZWhhdmlvciB3aGVuIHRocm93aW5nIGVycm9ycyBmcm9tCiAgLy8gbWV0aG9kcyBleHRlcm5lZCBpbiB0aGlzIG1hbm5lci4gIFNlZSB0aGUgdGVzdEV4cG9ydFN5bWJvbEV4Y2VwdGlvbnMgaW4KICAvLyBiYXNlX3Rlc3QuaHRtbCBmb3IgYW4gZXhhbXBsZS4KICBpZiAoIShwYXJ0c1swXSBpbiBjdXIpICYmIHR5cGVvZiBjdXIuZXhlY1NjcmlwdCAhPSAndW5kZWZpbmVkJykgewogICAgY3VyLmV4ZWNTY3JpcHQoJ3ZhciAnICsgcGFydHNbMF0pOwogIH0KCiAgZm9yICh2YXIgcGFydDsgcGFydHMubGVuZ3RoICYmIChwYXJ0ID0gcGFydHMuc2hpZnQoKSk7KSB7CiAgICBpZiAoIXBhcnRzLmxlbmd0aCAmJiBvcHRfb2JqZWN0ICE9PSB1bmRlZmluZWQpIHsKICAgICAgLy8gbGFzdCBwYXJ0IGFuZCB3ZSBoYXZlIGFuIG9iamVjdDsgdXNlIGl0CiAgICAgIGN1cltwYXJ0XSA9IG9wdF9vYmplY3Q7CiAgICB9IGVsc2UgaWYgKGN1cltwYXJ0XSAmJiBjdXJbcGFydF0gIT09IE9iamVjdC5wcm90b3R5cGVbcGFydF0pIHsKICAgICAgY3VyID0gY3VyW3BhcnRdOwogICAgfSBlbHNlIHsKICAgICAgY3VyID0gY3VyW3BhcnRdID0ge307CiAgICB9CiAgfQp9OwoKCi8qKgogKiBEZWZpbmVzIGEgbmFtZWQgdmFsdWUuIEluIHVuY29tcGlsZWQgbW9kZSwgdGhlIHZhbHVlIGlzIHJldHJpZXZlZCBmcm9tCiAqIENMT1NVUkVfREVGSU5FUyBvciBDTE9TVVJFX1VOQ09NUElMRURfREVGSU5FUyBpZiB0aGUgb2JqZWN0IGlzIGRlZmluZWQgYW5kCiAqIGhhcyB0aGUgcHJvcGVydHkgc3BlY2lmaWVkLCBhbmQgb3RoZXJ3aXNlIHVzZWQgdGhlIGRlZmluZWQgZGVmYXVsdFZhbHVlLgogKiBXaGVuIGNvbXBpbGVkIHRoZSBkZWZhdWx0IGNhbiBiZSBvdmVycmlkZGVuIHVzaW5nIHRoZSBjb21waWxlciBvcHRpb25zIG9yIHRoZQogKiB2YWx1ZSBzZXQgaW4gdGhlIENMT1NVUkVfREVGSU5FUyBvYmplY3QuIFJldHVybnMgdGhlIGRlZmluZWQgdmFsdWUgc28gdGhhdCBpdAogKiBjYW4gYmUgdXNlZCBzYWZlbHkgaW4gbW9kdWxlcy4gTm90ZSB0aGF0IHRoZSB2YWx1ZSB0eXBlIE1VU1QgYmUgZWl0aGVyCiAqIGJvb2xlYW4sIG51bWJlciwgb3Igc3RyaW5nLgogKgogKiBAcGFyYW0ge3N0cmluZ30gbmFtZSBUaGUgZGlzdGluZ3Vpc2hlZCBuYW1lIHRvIHByb3ZpZGUuCiAqIEBwYXJhbSB7VH0gZGVmYXVsdFZhbHVlCiAqIEByZXR1cm4ge1R9IFRoZSBkZWZpbmVkIHZhbHVlLgogKiBAdGVtcGxhdGUgVAogKi8KZ29vZy5kZWZpbmUgPSBmdW5jdGlvbihuYW1lLCBkZWZhdWx0VmFsdWUpIHsKICB2YXIgdmFsdWUgPSBkZWZhdWx0VmFsdWU7CiAgaWYgKCFDT01QSUxFRCkgewogICAgdmFyIHVuY29tcGlsZWREZWZpbmVzID0gZ29vZy5nbG9iYWwuQ0xPU1VSRV9VTkNPTVBJTEVEX0RFRklORVM7CiAgICB2YXIgZGVmaW5lcyA9IGdvb2cuZ2xvYmFsLkNMT1NVUkVfREVGSU5FUzsKICAgIGlmICh1bmNvbXBpbGVkRGVmaW5lcyAmJgogICAgICAgIC8vIEFudGkgRE9NLWNsb2JiZXJpbmcgcnVudGltZSBjaGVjayAoYi8zNzczNjU3NikuCiAgICAgICAgLyoqIEB0eXBlIHs/fSAqLyAodW5jb21waWxlZERlZmluZXMpLm5vZGVUeXBlID09PSB1bmRlZmluZWQgJiYKICAgICAgICBPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwodW5jb21waWxlZERlZmluZXMsIG5hbWUpKSB7CiAgICAgIHZhbHVlID0gdW5jb21waWxlZERlZmluZXNbbmFtZV07CiAgICB9IGVsc2UgaWYgKAogICAgICAgIGRlZmluZXMgJiYKICAgICAgICAvLyBBbnRpIERPTS1jbG9iYmVyaW5nIHJ1bnRpbWUgY2hlY2sgKGIvMzc3MzY1NzYpLgogICAgICAgIC8qKiBAdHlwZSB7P30gKi8gKGRlZmluZXMpLm5vZGVUeXBlID09PSB1bmRlZmluZWQgJiYKICAgICAgICBPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwoZGVmaW5lcywgbmFtZSkpIHsKICAgICAgdmFsdWUgPSBkZWZpbmVzW25hbWVdOwogICAgfQogIH0KICByZXR1cm4gdmFsdWU7Cn07CgoKLyoqCiAqIEBkZWZpbmUge251bWJlcn0gSW50ZWdlciB5ZWFyIGluZGljYXRpbmcgdGhlIHNldCBvZiBicm93c2VyIGZlYXR1cmVzIHRoYXQgYXJlCiAqIGd1YXJhbnRlZWQgdG8gYmUgcHJlc2VudC4gIFRoaXMgaXMgZGVmaW5lZCB0byBpbmNsdWRlIGV4YWN0bHkgZmVhdHVyZXMgdGhhdAogKiB3b3JrIGNvcnJlY3RseSBvbiBhbGwgIm1vZGVybiIgYnJvd3NlcnMgdGhhdCBhcmUgc3RhYmxlIG9uIEphbnVhcnkgMSBvZiB0aGUKICogc3BlY2lmaWVkIHllYXIuICBGb3IgZXhhbXBsZSwKICogYGBganMKICogaWYgKGdvb2cuRkVBVFVSRVNFVF9ZRUFSID49IDIwMTkpIHsKICogICAvLyB1c2UgQVBJcyBrbm93biB0byBiZSBhdmFpbGFibGUgb24gYWxsIG1ham9yIHN0YWJsZSBicm93c2VycyBKYW4gMSwgMjAxOQogKiB9IGVsc2UgewogKiAgIC8vIHBvbHlmaWxsIGZvciBvbGRlciBicm93c2VycwogKiB9CiAqIGBgYAogKiBUaGlzIGlzIGludGVuZGVkIHRvIGJlIHRoZSBwcmltYXJ5IGRlZmluZSBmb3IgcmVtb3ZpbmcKICogdW5uZWNlc3NhcnkgYnJvd3NlciBjb21wYXRpYmlsaXR5IGNvZGUgKHN1Y2ggYXMgcG9ueWZpbGxzIGFuZCB3b3JrYXJvdW5kcyksCiAqIGFuZCBzaG91bGQgaW5mb3JtIHRoZSBkZWZhdWx0IHZhbHVlIGZvciBtb3N0IG90aGVyIGRlZmluZXM6CiAqIGBgYGpzCiAqIGNvbnN0IEFTU1VNRV9OQVRJVkVfUFJPTUlTRSA9CiAqICAgICBnb29nLmRlZmluZSgnQVNTVU1FX05BVElWRV9QUk9NSVNFJywgZ29vZy5GRUFUVVJFU0VUX1lFQVIgPj0gMjAxNik7CiAqIGBgYAogKgogKiBUaGUgZGVmYXVsdCBhc3N1bXB0aW9uIGlzIHRoYXQgSUU5IGlzIHRoZSBsb3dlc3Qgc3VwcG9ydGVkIGJyb3dzZXIsIHdoaWNoIHdhcwogKiBmaXJzdCBhdmFpbGFibGUgSmFuIDEsIDIwMTIuCiAqCiAqIFRPRE8odXNlcik6IFJlZmVyZW5jZSBtb3JlIHRob3JvdWdoIGRvY3VtZW50YXRpb24gd2hlbiBpdCdzIGF2YWlsYWJsZS4KICovCmdvb2cuRkVBVFVSRVNFVF9ZRUFSID0gZ29vZy5kZWZpbmUoJ2dvb2cuRkVBVFVSRVNFVF9ZRUFSJywgMjAxMik7CgoKLyoqCiAqIEBkZWZpbmUge2Jvb2xlYW59IERFQlVHIGlzIHByb3ZpZGVkIGFzIGEgY29udmVuaWVuY2Ugc28gdGhhdCBkZWJ1Z2dpbmcgY29kZQogKiB0aGF0IHNob3VsZCBub3QgYmUgaW5jbHVkZWQgaW4gYSBwcm9kdWN0aW9uLiBJdCBjYW4gYmUgZWFzaWx5IHN0cmlwcGVkCiAqIGJ5IHNwZWNpZnlpbmcgLS1kZWZpbmUgZ29vZy5ERUJVRz1mYWxzZSB0byB0aGUgQ2xvc3VyZSBDb21waWxlciBha2EKICogSlNDb21waWxlci4gRm9yIGV4YW1wbGUsIG1vc3QgdG9TdHJpbmcoKSBtZXRob2RzIHNob3VsZCBiZSBkZWNsYXJlZCBpbnNpZGUgYW4KICogImlmIChnb29nLkRFQlVHKSIgY29uZGl0aW9uYWwgYmVjYXVzZSB0aGV5IGFyZSBnZW5lcmFsbHkgdXNlZCBmb3IgZGVidWdnaW5nCiAqIHB1cnBvc2VzIGFuZCBpdCBpcyBkaWZmaWN1bHQgZm9yIHRoZSBKU0NvbXBpbGVyIHRvIHN0YXRpY2FsbHkgZGV0ZXJtaW5lCiAqIHdoZXRoZXIgdGhleSBhcmUgdXNlZC4KICovCmdvb2cuREVCVUcgPSBnb29nLmRlZmluZSgnZ29vZy5ERUJVRycsIHRydWUpOwoKCi8qKgogKiBAZGVmaW5lIHtzdHJpbmd9IExPQ0FMRSBkZWZpbmVzIHRoZSBsb2NhbGUgYmVpbmcgdXNlZCBmb3IgY29tcGlsYXRpb24uIEl0IGlzCiAqIHVzZWQgdG8gc2VsZWN0IGxvY2FsZSBzcGVjaWZpYyBkYXRhIHRvIGJlIGNvbXBpbGVkIGluIGpzIGJpbmFyeS4gQlVJTEQgcnVsZQogKiBjYW4gc3BlY2lmeSB0aGlzIHZhbHVlIGJ5ICItLWRlZmluZSBnb29nLkxPQ0FMRT08bG9jYWxlX25hbWU+IiBhcyBhIGNvbXBpbGVyCiAqIG9wdGlvbi4KICoKICogVGFrZSBpbnRvIGFjY291bnQgdGhhdCB0aGUgbG9jYWxlIGNvZGUgZm9ybWF0IGlzIGltcG9ydGFudC4gWW91IHNob3VsZCB1c2UKICogdGhlIGNhbm9uaWNhbCBVbmljb2RlIGZvcm1hdCB3aXRoIGh5cGhlbiBhcyBhIGRlbGltaXRlci4gTGFuZ3VhZ2UgbXVzdCBiZQogKiBsb3dlcmNhc2UsIExhbmd1YWdlIFNjcmlwdCAtIENhcGl0YWxpemVkLCBSZWdpb24gLSBVUFBFUkNBU0UuCiAqIFRoZXJlIGFyZSBmZXcgZXhhbXBsZXM6IHB0LUJSLCBlbiwgZW4tVVMsIHNyLUxhdGluLUJPLCB6aC1IYW5zLUNOLgogKgogKiBTZWUgbW9yZSBpbmZvIGFib3V0IGxvY2FsZSBjb2RlcyBoZXJlOgogKiBodHRwOi8vd3d3LnVuaWNvZGUub3JnL3JlcG9ydHMvdHIzNS8jVW5pY29kZV9MYW5ndWFnZV9hbmRfTG9jYWxlX0lkZW50aWZpZXJzCiAqCiAqIEZvciBsYW5ndWFnZSBjb2RlcyB5b3Ugc2hvdWxkIHVzZSB2YWx1ZXMgZGVmaW5lZCBieSBJU08gNjkzLTEuIFNlZSBpdCBoZXJlCiAqIGh0dHA6Ly93d3cudzMub3JnL1dBSS9FUi9JRy9lcnQvaXNvNjM5Lmh0bS4gVGhlcmUgaXMgb25seSBvbmUgZXhjZXB0aW9uIGZyb20KICogdGhpcyBydWxlOiB0aGUgSGVicmV3IGxhbmd1YWdlLiBGb3IgbGVnYWN5IHJlYXNvbnMgdGhlIG9sZCBjb2RlIChpdykgc2hvdWxkCiAqIGJlIHVzZWQgaW5zdGVhZCBvZiB0aGUgbmV3IGNvZGUgKGhlKS4KICoKICovCmdvb2cuTE9DQUxFID0gZ29vZy5kZWZpbmUoJ2dvb2cuTE9DQUxFJywgJ2VuJyk7ICAvLyBkZWZhdWx0IHRvIGVuCgoKLyoqCiAqIEBkZWZpbmUge2Jvb2xlYW59IFdoZXRoZXIgdGhpcyBjb2RlIGlzIHJ1bm5pbmcgb24gdHJ1c3RlZCBzaXRlcy4KICoKICogT24gdW50cnVzdGVkIHNpdGVzLCBzZXZlcmFsIG5hdGl2ZSBmdW5jdGlvbnMgY2FuIGJlIGRlZmluZWQgb3Igb3ZlcnJpZGRlbiBieQogKiBleHRlcm5hbCBsaWJyYXJpZXMgbGlrZSBQcm90b3R5cGUsIERhdGVqcywgYW5kIEpRdWVyeSBhbmQgc2V0dGluZyB0aGlzIGZsYWcKICogdG8gZmFsc2UgZm9yY2VzIGNsb3N1cmUgdG8gdXNlIGl0cyBvd24gaW1wbGVtZW50YXRpb25zIHdoZW4gcG9zc2libGUuCiAqCiAqIElmIHlvdXIgSmF2YVNjcmlwdCBjYW4gYmUgbG9hZGVkIGJ5IGEgdGhpcmQgcGFydHkgc2l0ZSBhbmQgeW91IGFyZSB3YXJ5IGFib3V0CiAqIHJlbHlpbmcgb24gbm9uLXN0YW5kYXJkIGltcGxlbWVudGF0aW9ucywgc3BlY2lmeQogKiAiLS1kZWZpbmUgZ29vZy5UUlVTVEVEX1NJVEU9ZmFsc2UiIHRvIHRoZSBjb21waWxlci4KICovCmdvb2cuVFJVU1RFRF9TSVRFID0gZ29vZy5kZWZpbmUoJ2dvb2cuVFJVU1RFRF9TSVRFJywgdHJ1ZSk7CgoKLyoqCiAqIEBkZWZpbmUge2Jvb2xlYW59IFdoZXRoZXIgYSBwcm9qZWN0IGlzIGV4cGVjdGVkIHRvIGJlIHJ1bm5pbmcgaW4gc3RyaWN0IG1vZGUuCiAqCiAqIFRoaXMgZGVmaW5lIGNhbiBiZSB1c2VkIHRvIHRyaWdnZXIgYWx0ZXJuYXRlIGltcGxlbWVudGF0aW9ucyBjb21wYXRpYmxlIHdpdGgKICogcnVubmluZyBpbiBFY21hU2NyaXB0IFN0cmljdCBtb2RlIG9yIHdhcm4gYWJvdXQgdW5hdmFpbGFibGUgZnVuY3Rpb25hbGl0eS4KICogQHNlZSBodHRwczovL2dvby5nbC9QdWRRNHkKICoKICovCmdvb2cuU1RSSUNUX01PREVfQ09NUEFUSUJMRSA9IGdvb2cuZGVmaW5lKCdnb29nLlNUUklDVF9NT0RFX0NPTVBBVElCTEUnLCBmYWxzZSk7CgoKLyoqCiAqIEBkZWZpbmUge2Jvb2xlYW59IFdoZXRoZXIgY29kZSB0aGF0IGNhbGxzIHtAbGluayBnb29nLnNldFRlc3RPbmx5fSBzaG91bGQKICogICAgIGJlIGRpc2FsbG93ZWQgaW4gdGhlIGNvbXBpbGF0aW9uIHVuaXQuCiAqLwpnb29nLkRJU0FMTE9XX1RFU1RfT05MWV9DT0RFID0KICAgIGdvb2cuZGVmaW5lKCdnb29nLkRJU0FMTE9XX1RFU1RfT05MWV9DT0RFJywgQ09NUElMRUQgJiYgIWdvb2cuREVCVUcpOwoKCi8qKgogKiBAZGVmaW5lIHtib29sZWFufSBXaGV0aGVyIHRvIHVzZSBhIENocm9tZSBhcHAgQ1NQLWNvbXBsaWFudCBtZXRob2QgZm9yCiAqICAgICBsb2FkaW5nIHNjcmlwdHMgdmlhIGdvb2cucmVxdWlyZS4gQHNlZSBhcHBlbmRTY3JpcHRTcmNOb2RlXy4KICovCmdvb2cuRU5BQkxFX0NIUk9NRV9BUFBfU0FGRV9TQ1JJUFRfTE9BRElORyA9CiAgICBnb29nLmRlZmluZSgnZ29vZy5FTkFCTEVfQ0hST01FX0FQUF9TQUZFX1NDUklQVF9MT0FESU5HJywgZmFsc2UpOwoKCi8qKgogKiBEZWZpbmVzIGEgbmFtZXNwYWNlIGluIENsb3N1cmUuCiAqCiAqIEEgbmFtZXNwYWNlIG1heSBvbmx5IGJlIGRlZmluZWQgb25jZSBpbiBhIGNvZGViYXNlLiBJdCBtYXkgYmUgZGVmaW5lZCB1c2luZwogKiBnb29nLnByb3ZpZGUoKSBvciBnb29nLm1vZHVsZSgpLgogKgogKiBUaGUgcHJlc2VuY2Ugb2Ygb25lIG9yIG1vcmUgZ29vZy5wcm92aWRlKCkgY2FsbHMgaW4gYSBmaWxlIGluZGljYXRlcwogKiB0aGF0IHRoZSBmaWxlIGRlZmluZXMgdGhlIGdpdmVuIG9iamVjdHMvbmFtZXNwYWNlcy4KICogUHJvdmlkZWQgc3ltYm9scyBtdXN0IG5vdCBiZSBudWxsIG9yIHVuZGVmaW5lZC4KICoKICogSW4gYWRkaXRpb24sIGdvb2cucHJvdmlkZSgpIGNyZWF0ZXMgdGhlIG9iamVjdCBzdHVicyBmb3IgYSBuYW1lc3BhY2UKICogKGZvciBleGFtcGxlLCBnb29nLnByb3ZpZGUoImdvb2cuZm9vLmJhciIpIHdpbGwgY3JlYXRlIHRoZSBvYmplY3QKICogZ29vZy5mb28uYmFyIGlmIGl0IGRvZXMgbm90IGFscmVhZHkgZXhpc3QpLgogKgogKiBCdWlsZCB0b29scyBhbHNvIHNjYW4gZm9yIHByb3ZpZGUvcmVxdWlyZS9tb2R1bGUgc3RhdGVtZW50cwogKiB0byBkaXNjZXJuIGRlcGVuZGVuY2llcywgYnVpbGQgZGVwZW5kZW5jeSBmaWxlcyAoc2VlIGRlcHMuanMpLCBldGMuCiAqCiAqIEBzZWUgZ29vZy5yZXF1aXJlCiAqIEBzZWUgZ29vZy5tb2R1bGUKICogQHBhcmFtIHtzdHJpbmd9IG5hbWUgTmFtZXNwYWNlIHByb3ZpZGVkIGJ5IHRoaXMgZmlsZSBpbiB0aGUgZm9ybQogKiAgICAgImdvb2cucGFja2FnZS5wYXJ0Ii4KICovCmdvb2cucHJvdmlkZSA9IGZ1bmN0aW9uKG5hbWUpIHsKICBpZiAoZ29vZy5pc0luTW9kdWxlTG9hZGVyXygpKSB7CiAgICB0aHJvdyBuZXcgRXJyb3IoJ2dvb2cucHJvdmlkZSBjYW5ub3QgYmUgdXNlZCB3aXRoaW4gYSBtb2R1bGUuJyk7CiAgfQogIGlmICghQ09NUElMRUQpIHsKICAgIC8vIEVuc3VyZSB0aGF0IHRoZSBzYW1lIG5hbWVzcGFjZSBpc24ndCBwcm92aWRlZCB0d2ljZS4KICAgIC8vIEEgZ29vZy5tb2R1bGUvZ29vZy5wcm92aWRlIG1hcHMgYSBnb29nLnJlcXVpcmUgdG8gYSBzcGVjaWZpYyBmaWxlCiAgICBpZiAoZ29vZy5pc1Byb3ZpZGVkXyhuYW1lKSkgewogICAgICB0aHJvdyBuZXcgRXJyb3IoJ05hbWVzcGFjZSAiJyArIG5hbWUgKyAnIiBhbHJlYWR5IGRlY2xhcmVkLicpOwogICAgfQogIH0KCiAgZ29vZy5jb25zdHJ1Y3ROYW1lc3BhY2VfKG5hbWUpOwp9OwoKCi8qKgogKiBAcGFyYW0ge3N0cmluZ30gbmFtZSBOYW1lc3BhY2UgcHJvdmlkZWQgYnkgdGhpcyBmaWxlIGluIHRoZSBmb3JtCiAqICAgICAiZ29vZy5wYWNrYWdlLnBhcnQiLgogKiBAcGFyYW0ge09iamVjdD19IG9wdF9vYmogVGhlIG9iamVjdCB0byBlbWJlZCBpbiB0aGUgbmFtZXNwYWNlLgogKiBAcHJpdmF0ZQogKi8KZ29vZy5jb25zdHJ1Y3ROYW1lc3BhY2VfID0gZnVuY3Rpb24obmFtZSwgb3B0X29iaikgewogIGlmICghQ09NUElMRUQpIHsKICAgIGRlbGV0ZSBnb29nLmltcGxpY2l0TmFtZXNwYWNlc19bbmFtZV07CgogICAgdmFyIG5hbWVzcGFjZSA9IG5hbWU7CiAgICB3aGlsZSAoKG5hbWVzcGFjZSA9IG5hbWVzcGFjZS5zdWJzdHJpbmcoMCwgbmFtZXNwYWNlLmxhc3RJbmRleE9mKCcuJykpKSkgewogICAgICBpZiAoZ29vZy5nZXRPYmplY3RCeU5hbWUobmFtZXNwYWNlKSkgewogICAgICAgIGJyZWFrOwogICAgICB9CiAgICAgIGdvb2cuaW1wbGljaXROYW1lc3BhY2VzX1tuYW1lc3BhY2VdID0gdHJ1ZTsKICAgIH0KICB9CgogIGdvb2cuZXhwb3J0UGF0aF8obmFtZSwgb3B0X29iaik7Cn07CgoKLyoqCiAqIFJldHVybnMgQ1NQIG5vbmNlLCBpZiBzZXQgZm9yIGFueSBzY3JpcHQgdGFnLgogKiBAcGFyYW0gez9XaW5kb3c9fSBvcHRfd2luZG93IFRoZSB3aW5kb3cgY29udGV4dCB1c2VkIHRvIHJldHJpZXZlIHRoZSBub25jZS4KICogICAgIERlZmF1bHRzIHRvIGdsb2JhbCBjb250ZXh0LgogKiBAcmV0dXJuIHtzdHJpbmd9IENTUCBub25jZSBvciBlbXB0eSBzdHJpbmcgaWYgbm8gbm9uY2UgaXMgcHJlc2VudC4KICovCmdvb2cuZ2V0U2NyaXB0Tm9uY2UgPSBmdW5jdGlvbihvcHRfd2luZG93KSB7CiAgaWYgKG9wdF93aW5kb3cgJiYgb3B0X3dpbmRvdyAhPSBnb29nLmdsb2JhbCkgewogICAgcmV0dXJuIGdvb2cuZ2V0U2NyaXB0Tm9uY2VfKG9wdF93aW5kb3cuZG9jdW1lbnQpOwogIH0KICBpZiAoZ29vZy5jc3BOb25jZV8gPT09IG51bGwpIHsKICAgIGdvb2cuY3NwTm9uY2VfID0gZ29vZy5nZXRTY3JpcHROb25jZV8oZ29vZy5nbG9iYWwuZG9jdW1lbnQpOwogIH0KICByZXR1cm4gZ29vZy5jc3BOb25jZV87Cn07CgoKLyoqCiAqIEFjY29yZGluZyB0byB0aGUgQ1NQMyBzcGVjIGEgbm9uY2UgbXVzdCBiZSBhIHZhbGlkIGJhc2U2NCBzdHJpbmcuCiAqIEBzZWUgaHR0cHM6Ly93d3cudzMub3JnL1RSL0NTUDMvI2dyYW1tYXJkZWYtYmFzZTY0LXZhbHVlCiAqIEBwcml2YXRlIEBjb25zdAogKi8KZ29vZy5OT05DRV9QQVRURVJOXyA9IC9eW1x3Ky9fLV0rWz1dezAsMn0kLzsKCgovKioKICogQHByaXZhdGUgez9zdHJpbmd9CiAqLwpnb29nLmNzcE5vbmNlXyA9IG51bGw7CgoKLyoqCiAqIFJldHVybnMgQ1NQIG5vbmNlLCBpZiBzZXQgZm9yIGFueSBzY3JpcHQgdGFnLgogKiBAcGFyYW0geyFEb2N1bWVudH0gZG9jCiAqIEByZXR1cm4ge3N0cmluZ30gQ1NQIG5vbmNlIG9yIGVtcHR5IHN0cmluZyBpZiBubyBub25jZSBpcyBwcmVzZW50LgogKiBAcHJpdmF0ZQogKi8KZ29vZy5nZXRTY3JpcHROb25jZV8gPSBmdW5jdGlvbihkb2MpIHsKICB2YXIgc2NyaXB0ID0gZG9jLnF1ZXJ5U2VsZWN0b3IgJiYgZG9jLnF1ZXJ5U2VsZWN0b3IoJ3NjcmlwdFtub25jZV0nKTsKICBpZiAoc2NyaXB0KSB7CiAgICAvLyBUcnkgdG8gZ2V0IHRoZSBub25jZSBmcm9tIHRoZSBJREwgcHJvcGVydHkgZmlyc3QsIGJlY2F1c2UgYnJvd3NlcnMgdGhhdAogICAgLy8gaW1wbGVtZW50IGFkZGl0aW9uYWwgbm9uY2UgcHJvdGVjdGlvbiBmZWF0dXJlcyAoY3VycmVudGx5IG9ubHkgQ2hyb21lKSB0bwogICAgLy8gcHJldmVudCBub25jZSBzdGVhbGluZyB2aWEgQ1NTIGRvIG5vdCBleHBvc2UgdGhlIG5vbmNlIHZpYSBhdHRyaWJ1dGVzLgogICAgLy8gU2VlIGh0dHBzOi8vZ2l0aHViLmNvbS93aGF0d2cvaHRtbC9pc3N1ZXMvMjM2OQogICAgdmFyIG5vbmNlID0gc2NyaXB0Wydub25jZSddIHx8IHNjcmlwdC5nZXRBdHRyaWJ1dGUoJ25vbmNlJyk7CiAgICBpZiAobm9uY2UgJiYgZ29vZy5OT05DRV9QQVRURVJOXy50ZXN0KG5vbmNlKSkgewogICAgICByZXR1cm4gbm9uY2U7CiAgICB9CiAgfQogIHJldHVybiAnJzsKfTsKCgovKioKICogTW9kdWxlIGlkZW50aWZpZXIgdmFsaWRhdGlvbiByZWdleHAuCiAqIE5vdGU6IFRoaXMgaXMgYSBjb25zZXJ2YXRpdmUgY2hlY2ssIGl0IGlzIHZlcnkgcG9zc2libGUgdG8gYmUgbW9yZSBsZW5pZW50LAogKiAgIHRoZSBwcmltYXJ5IGV4Y2x1c2lvbiBoZXJlIGlzICIvIiBhbmQgIlwiIGFuZCBhIGxlYWRpbmcgIi4iLCB0aGVzZQogKiAgIHJlc3RyaWN0aW9ucyBhcmUgaW50ZW5kZWQgdG8gbGVhdmUgdGhlIGRvb3Igb3BlbiBmb3IgdXNpbmcgZ29vZy5yZXF1aXJlCiAqICAgd2l0aCByZWxhdGl2ZSBmaWxlIHBhdGhzIHJhdGhlciB0aGFuIG1vZHVsZSBpZGVudGlmaWVycy4KICogQHByaXZhdGUKICovCmdvb2cuVkFMSURfTU9EVUxFX1JFXyA9IC9eW2EtekEtWl8kXVthLXpBLVowLTkuXyRdKiQvOwoKCi8qKgogKiBEZWZpbmVzIGEgbW9kdWxlIGluIENsb3N1cmUuCiAqCiAqIE1hcmtzIHRoYXQgdGhpcyBmaWxlIG11c3QgYmUgbG9hZGVkIGFzIGEgbW9kdWxlIGFuZCBjbGFpbXMgdGhlIG5hbWVzcGFjZS4KICoKICogQSBuYW1lc3BhY2UgbWF5IG9ubHkgYmUgZGVmaW5lZCBvbmNlIGluIGEgY29kZWJhc2UuIEl0IG1heSBiZSBkZWZpbmVkIHVzaW5nCiAqIGdvb2cucHJvdmlkZSgpIG9yIGdvb2cubW9kdWxlKCkuCiAqCiAqIGdvb2cubW9kdWxlKCkgaGFzIHRocmVlIHJlcXVpcmVtZW50czoKICogLSBnb29nLm1vZHVsZSBtYXkgbm90IGJlIHVzZWQgaW4gdGhlIHNhbWUgZmlsZSBhcyBnb29nLnByb3ZpZGUuCiAqIC0gZ29vZy5tb2R1bGUgbXVzdCBiZSB0aGUgZmlyc3Qgc3RhdGVtZW50IGluIHRoZSBmaWxlLgogKiAtIG9ubHkgb25lIGdvb2cubW9kdWxlIGlzIGFsbG93ZWQgcGVyIGZpbGUuCiAqCiAqIFdoZW4gYSBnb29nLm1vZHVsZSBhbm5vdGF0ZWQgZmlsZSBpcyBsb2FkZWQsIGl0IGlzIGVuY2xvc2VkIGluCiAqIGEgc3RyaWN0IGZ1bmN0aW9uIGNsb3N1cmUuIFRoaXMgbWVhbnMgdGhhdDoKICogLSBhbnkgdmFyaWFibGVzIGRlY2xhcmVkIGluIGEgZ29vZy5tb2R1bGUgZmlsZSBhcmUgcHJpdmF0ZSB0byB0aGUgZmlsZQogKiAobm90IGdsb2JhbCksIHRob3VnaCB0aGUgY29tcGlsZXIgaXMgZXhwZWN0ZWQgdG8gaW5saW5lIHRoZSBtb2R1bGUuCiAqIC0gVGhlIGNvZGUgbXVzdCBvYmV5IGFsbCB0aGUgcnVsZXMgb2YgInN0cmljdCIgSmF2YVNjcmlwdC4KICogLSB0aGUgZmlsZSB3aWxsIGJlIG1hcmtlZCBhcyAidXNlIHN0cmljdCIKICoKICogTk9URTogdW5saWtlIGdvb2cucHJvdmlkZSwgZ29vZy5tb2R1bGUgZG9lcyBub3QgZGVjbGFyZSBhbnkgc3ltYm9scyBieQogKiBpdHNlbGYuIElmIGRlY2xhcmVkIHN5bWJvbHMgYXJlIGRlc2lyZWQsIHVzZQogKiBnb29nLm1vZHVsZS5kZWNsYXJlTGVnYWN5TmFtZXNwYWNlKCkuCiAqCiAqCiAqIFNlZSB0aGUgcHVibGljIGdvb2cubW9kdWxlIHByb3Bvc2FsOiBodHRwOi8vZ29vLmdsL1ZhMWhpbgogKgogKiBAcGFyYW0ge3N0cmluZ30gbmFtZSBOYW1lc3BhY2UgcHJvdmlkZWQgYnkgdGhpcyBmaWxlIGluIHRoZSBmb3JtCiAqICAgICAiZ29vZy5wYWNrYWdlLnBhcnQiLCBpcyBleHBlY3RlZCBidXQgbm90IHJlcXVpcmVkLgogKiBAcmV0dXJuIHt2b2lkfQogKi8KZ29vZy5tb2R1bGUgPSBmdW5jdGlvbihuYW1lKSB7CiAgaWYgKHR5cGVvZiBuYW1lICE9PSAnc3RyaW5nJyB8fCAhbmFtZSB8fAogICAgICBuYW1lLnNlYXJjaChnb29nLlZBTElEX01PRFVMRV9SRV8pID09IC0xKSB7CiAgICB0aHJvdyBuZXcgRXJyb3IoJ0ludmFsaWQgbW9kdWxlIGlkZW50aWZpZXInKTsKICB9CiAgaWYgKCFnb29nLmlzSW5Hb29nTW9kdWxlTG9hZGVyXygpKSB7CiAgICB0aHJvdyBuZXcgRXJyb3IoCiAgICAgICAgJ01vZHVsZSAnICsgbmFtZSArICcgaGFzIGJlZW4gbG9hZGVkIGluY29ycmVjdGx5LiBOb3RlLCAnICsKICAgICAgICAnbW9kdWxlcyBjYW5ub3QgYmUgbG9hZGVkIGFzIG5vcm1hbCBzY3JpcHRzLiBUaGV5IHJlcXVpcmUgc29tZSBraW5kIG9mICcgKwogICAgICAgICdwcmUtcHJvY2Vzc2luZyBzdGVwLiBZb3VcJ3JlIGxpa2VseSB0cnlpbmcgdG8gbG9hZCBhIG1vZHVsZSB2aWEgYSAnICsKICAgICAgICAnc2NyaXB0IHRhZyBvciBhcyBhIHBhcnQgb2YgYSBjb25jYXRlbmF0ZWQgYnVuZGxlIHdpdGhvdXQgcmV3cml0aW5nIHRoZSAnICsKICAgICAgICAnbW9kdWxlLiBGb3IgbW9yZSBpbmZvIHNlZTogJyArCiAgICAgICAgJ2h0dHBzOi8vZ2l0aHViLmNvbS9nb29nbGUvY2xvc3VyZS1saWJyYXJ5L3dpa2kvZ29vZy5tb2R1bGU6LWFuLUVTNi1tb2R1bGUtbGlrZS1hbHRlcm5hdGl2ZS10by1nb29nLnByb3ZpZGUuJyk7CiAgfQogIGlmIChnb29nLm1vZHVsZUxvYWRlclN0YXRlXy5tb2R1bGVOYW1lKSB7CiAgICB0aHJvdyBuZXcgRXJyb3IoJ2dvb2cubW9kdWxlIG1heSBvbmx5IGJlIGNhbGxlZCBvbmNlIHBlciBtb2R1bGUuJyk7CiAgfQoKICAvLyBTdG9yZSB0aGUgbW9kdWxlIG5hbWUgZm9yIHRoZSBsb2FkZXIuCiAgZ29vZy5tb2R1bGVMb2FkZXJTdGF0ZV8ubW9kdWxlTmFtZSA9IG5hbWU7CiAgaWYgKCFDT01QSUxFRCkgewogICAgLy8gRW5zdXJlIHRoYXQgdGhlIHNhbWUgbmFtZXNwYWNlIGlzbid0IHByb3ZpZGVkIHR3aWNlLgogICAgLy8gQSBnb29nLm1vZHVsZS9nb29nLnByb3ZpZGUgbWFwcyBhIGdvb2cucmVxdWlyZSB0byBhIHNwZWNpZmljIGZpbGUKICAgIGlmIChnb29nLmlzUHJvdmlkZWRfKG5hbWUpKSB7CiAgICAgIHRocm93IG5ldyBFcnJvcignTmFtZXNwYWNlICInICsgbmFtZSArICciIGFscmVhZHkgZGVjbGFyZWQuJyk7CiAgICB9CiAgICBkZWxldGUgZ29vZy5pbXBsaWNpdE5hbWVzcGFjZXNfW25hbWVdOwogIH0KfTsKCgovKioKICogQHBhcmFtIHtzdHJpbmd9IG5hbWUgVGhlIG1vZHVsZSBpZGVudGlmaWVyLgogKiBAcmV0dXJuIHs/fSBUaGUgbW9kdWxlIGV4cG9ydHMgZm9yIGFuIGFscmVhZHkgbG9hZGVkIG1vZHVsZSBvciBudWxsLgogKgogKiBOb3RlOiBUaGlzIGlzIG5vdCBhbiBhbHRlcm5hdGl2ZSB0byBnb29nLnJlcXVpcmUsIGl0IGRvZXMgbm90CiAqIGluZGljYXRlIGEgaGFyZCBkZXBlbmRlbmN5LCBpbnN0ZWFkIGl0IGlzIHVzZWQgdG8gaW5kaWNhdGUKICogYW4gb3B0aW9uYWwgZGVwZW5kZW5jeSBvciB0byBhY2Nlc3MgdGhlIGV4cG9ydHMgb2YgYSBtb2R1bGUKICogdGhhdCBoYXMgYWxyZWFkeSBiZWVuIGxvYWRlZC4KICogQHN1cHByZXNzIHttaXNzaW5nUHJvdmlkZX0KICovCmdvb2cubW9kdWxlLmdldCA9IGZ1bmN0aW9uKG5hbWUpIHsKICByZXR1cm4gZ29vZy5tb2R1bGUuZ2V0SW50ZXJuYWxfKG5hbWUpOwp9OwoKCi8qKgogKiBAcGFyYW0ge3N0cmluZ30gbmFtZSBUaGUgbW9kdWxlIGlkZW50aWZpZXIuCiAqIEByZXR1cm4gez99IFRoZSBtb2R1bGUgZXhwb3J0cyBmb3IgYW4gYWxyZWFkeSBsb2FkZWQgbW9kdWxlIG9yIG51bGwuCiAqIEBwcml2YXRlCiAqLwpnb29nLm1vZHVsZS5nZXRJbnRlcm5hbF8gPSBmdW5jdGlvbihuYW1lKSB7CiAgaWYgKCFDT01QSUxFRCkgewogICAgaWYgKG5hbWUgaW4gZ29vZy5sb2FkZWRNb2R1bGVzXykgewogICAgICByZXR1cm4gZ29vZy5sb2FkZWRNb2R1bGVzX1tuYW1lXS5leHBvcnRzOwogICAgfSBlbHNlIGlmICghZ29vZy5pbXBsaWNpdE5hbWVzcGFjZXNfW25hbWVdKSB7CiAgICAgIHZhciBucyA9IGdvb2cuZ2V0T2JqZWN0QnlOYW1lKG5hbWUpOwogICAgICByZXR1cm4gbnMgIT0gbnVsbCA/IG5zIDogbnVsbDsKICAgIH0KICB9CiAgcmV0dXJuIG51bGw7Cn07CgoKLyoqCiAqIFR5cGVzIG9mIG1vZHVsZXMgdGhlIGRlYnVnIGxvYWRlciBjYW4gbG9hZC4KICogQGVudW0ge3N0cmluZ30KICovCmdvb2cuTW9kdWxlVHlwZSA9IHsKICBFUzY6ICdlczYnLAogIEdPT0c6ICdnb29nJwp9OwoKCi8qKgogKiBAcHJpdmF0ZSB7P3sKICogICBtb2R1bGVOYW1lOiAoc3RyaW5nfHVuZGVmaW5lZCksCiAqICAgZGVjbGFyZUxlZ2FjeU5hbWVzcGFjZTpib29sZWFuLAogKiAgIHR5cGU6ID9nb29nLk1vZHVsZVR5cGUKICogfX0KICovCmdvb2cubW9kdWxlTG9hZGVyU3RhdGVfID0gbnVsbDsKCgovKioKICogQHByaXZhdGUKICogQHJldHVybiB7Ym9vbGVhbn0gV2hldGhlciBhIGdvb2cubW9kdWxlIG9yIGFuIGVzNiBtb2R1bGUgaXMgY3VycmVudGx5IGJlaW5nCiAqICAgICBpbml0aWFsaXplZC4KICovCmdvb2cuaXNJbk1vZHVsZUxvYWRlcl8gPSBmdW5jdGlvbigpIHsKICByZXR1cm4gZ29vZy5pc0luR29vZ01vZHVsZUxvYWRlcl8oKSB8fCBnb29nLmlzSW5FczZNb2R1bGVMb2FkZXJfKCk7Cn07CgoKLyoqCiAqIEBwcml2YXRlCiAqIEByZXR1cm4ge2Jvb2xlYW59IFdoZXRoZXIgYSBnb29nLm1vZHVsZSBpcyBjdXJyZW50bHkgYmVpbmcgaW5pdGlhbGl6ZWQuCiAqLwpnb29nLmlzSW5Hb29nTW9kdWxlTG9hZGVyXyA9IGZ1bmN0aW9uKCkgewogIHJldHVybiAhIWdvb2cubW9kdWxlTG9hZGVyU3RhdGVfICYmCiAgICAgIGdvb2cubW9kdWxlTG9hZGVyU3RhdGVfLnR5cGUgPT0gZ29vZy5Nb2R1bGVUeXBlLkdPT0c7Cn07CgoKLyoqCiAqIEBwcml2YXRlCiAqIEByZXR1cm4ge2Jvb2xlYW59IFdoZXRoZXIgYW4gZXM2IG1vZHVsZSBpcyBjdXJyZW50bHkgYmVpbmcgaW5pdGlhbGl6ZWQuCiAqLwpnb29nLmlzSW5FczZNb2R1bGVMb2FkZXJfID0gZnVuY3Rpb24oKSB7CiAgdmFyIGluTG9hZGVyID0gISFnb29nLm1vZHVsZUxvYWRlclN0YXRlXyAmJgogICAgICBnb29nLm1vZHVsZUxvYWRlclN0YXRlXy50eXBlID09IGdvb2cuTW9kdWxlVHlwZS5FUzY7CgogIGlmIChpbkxvYWRlcikgewogICAgcmV0dXJuIHRydWU7CiAgfQoKICB2YXIganNjb21wID0gZ29vZy5nbG9iYWxbJyRqc2NvbXAnXTsKCiAgaWYgKGpzY29tcCkgewogICAgLy8ganNjb21wIG1heSBub3QgaGF2ZSBnZXRDdXJyZW50TW9kdWxlUGF0aCBpZiB0aGlzIGlzIGEgY29tcGlsZWQgYnVuZGxlCiAgICAvLyB0aGF0IGhhcyBzb21lIG9mIHRoZSBydW50aW1lLCBidXQgbm90IGFsbCBvZiBpdC4gVGhpcyBjYW4gaGFwcGVuIGlmCiAgICAvLyBvcHRpbWl6YXRpb25zIGFyZSB0dXJuZWQgb24gc28gdGhlIHVudXNlZCBydW50aW1lIGlzIHJlbW92ZWQgYnV0IHJlbmFtaW5nCiAgICAvLyBhbmQgQ2xvc3VyZSBwYXNzIGFyZSBvZmYgKHNvICRqc2NvbXAgaXMgc3RpbGwgbmFtZWQgJGpzY29tcCBhbmQgdGhlCiAgICAvLyBnb29nLnByb3ZpZGUvcmVxdWlyZSBjYWxscyBzdGlsbCBleGlzdCkuCiAgICBpZiAodHlwZW9mIGpzY29tcC5nZXRDdXJyZW50TW9kdWxlUGF0aCAhPSAnZnVuY3Rpb24nKSB7CiAgICAgIHJldHVybiBmYWxzZTsKICAgIH0KCiAgICAvLyBCdW5kbGVkIEVTNiBtb2R1bGUuCiAgICByZXR1cm4gISFqc2NvbXAuZ2V0Q3VycmVudE1vZHVsZVBhdGgoKTsKICB9CgogIHJldHVybiBmYWxzZTsKfTsKCgovKioKICogUHJvdmlkZSB0aGUgbW9kdWxlJ3MgZXhwb3J0cyBhcyBhIGdsb2JhbGx5IGFjY2Vzc2libGUgb2JqZWN0IHVuZGVyIHRoZQogKiBtb2R1bGUncyBkZWNsYXJlZCBuYW1lLiAgVGhpcyBpcyBpbnRlbmRlZCB0byBlYXNlIG1pZ3JhdGlvbiB0byBnb29nLm1vZHVsZQogKiBmb3IgZmlsZXMgdGhhdCBoYXZlIGV4aXN0aW5nIHVzYWdlcy4KICogQHN1cHByZXNzIHttaXNzaW5nUHJvdmlkZX0KICovCmdvb2cubW9kdWxlLmRlY2xhcmVMZWdhY3lOYW1lc3BhY2UgPSBmdW5jdGlvbigpIHsKICBpZiAoIUNPTVBJTEVEICYmICFnb29nLmlzSW5Hb29nTW9kdWxlTG9hZGVyXygpKSB7CiAgICB0aHJvdyBuZXcgRXJyb3IoCiAgICAgICAgJ2dvb2cubW9kdWxlLmRlY2xhcmVMZWdhY3lOYW1lc3BhY2UgbXVzdCBiZSBjYWxsZWQgZnJvbSAnICsKICAgICAgICAnd2l0aGluIGEgZ29vZy5tb2R1bGUnKTsKICB9CiAgaWYgKCFDT01QSUxFRCAmJiAhZ29vZy5tb2R1bGVMb2FkZXJTdGF0ZV8ubW9kdWxlTmFtZSkgewogICAgdGhyb3cgbmV3IEVycm9yKAogICAgICAgICdnb29nLm1vZHVsZSBtdXN0IGJlIGNhbGxlZCBwcmlvciB0byAnICsKICAgICAgICAnZ29vZy5tb2R1bGUuZGVjbGFyZUxlZ2FjeU5hbWVzcGFjZS4nKTsKICB9CiAgZ29vZy5tb2R1bGVMb2FkZXJTdGF0ZV8uZGVjbGFyZUxlZ2FjeU5hbWVzcGFjZSA9IHRydWU7Cn07CgoKLyoqCiAqIEFzc29jaWF0ZXMgYW4gRVM2IG1vZHVsZSB3aXRoIGEgQ2xvc3VyZSBtb2R1bGUgSUQgc28gdGhhdCBpcyBhdmFpbGFibGUgdmlhCiAqIGdvb2cucmVxdWlyZS4gVGhlIGFzc29jaWF0ZWQgSUQgIGFjdHMgbGlrZSBhIGdvb2cubW9kdWxlIElEIC0gaXQgZG9lcyBub3QKICogY3JlYXRlIGFueSBnbG9iYWwgbmFtZXMsIGl0IGlzIG1lcmVseSBhdmFpbGFibGUgdmlhIGdvb2cucmVxdWlyZSAvCiAqIGdvb2cubW9kdWxlLmdldCAvIGdvb2cuZm9yd2FyZERlY2xhcmUgLyBnb29nLnJlcXVpcmVUeXBlLiBnb29nLnJlcXVpcmUgYW5kCiAqIGdvb2cubW9kdWxlLmdldCB3aWxsIHJldHVybiB0aGUgZW50aXJlIG1vZHVsZSBhcyBpZiBpdCB3YXMgaW1wb3J0IConZC4gVGhpcwogKiBhbGxvd3MgQ2xvc3VyZSBmaWxlcyB0byByZWZlcmVuY2UgRVM2IG1vZHVsZXMgZm9yIHRoZSBzYWtlIG9mIG1pZ3JhdGlvbi4KICoKICogQHBhcmFtIHtzdHJpbmd9IG5hbWVzcGFjZQogKiBAc3VwcHJlc3Mge21pc3NpbmdQcm92aWRlfQogKi8KZ29vZy5kZWNsYXJlTW9kdWxlSWQgPSBmdW5jdGlvbihuYW1lc3BhY2UpIHsKICBpZiAoIUNPTVBJTEVEKSB7CiAgICBpZiAoIWdvb2cuaXNJbkVzNk1vZHVsZUxvYWRlcl8oKSkgewogICAgICB0aHJvdyBuZXcgRXJyb3IoCiAgICAgICAgICAnZ29vZy5kZWNsYXJlTW9kdWxlSWQgbWF5IG9ubHkgYmUgY2FsbGVkIGZyb20gJyArCiAgICAgICAgICAnd2l0aGluIGFuIEVTNiBtb2R1bGUnKTsKICAgIH0KICAgIGlmIChnb29nLm1vZHVsZUxvYWRlclN0YXRlXyAmJiBnb29nLm1vZHVsZUxvYWRlclN0YXRlXy5tb2R1bGVOYW1lKSB7CiAgICAgIHRocm93IG5ldyBFcnJvcigKICAgICAgICAgICdnb29nLmRlY2xhcmVNb2R1bGVJZCBtYXkgb25seSBiZSBjYWxsZWQgb25jZSBwZXIgbW9kdWxlLicpOwogICAgfQogICAgaWYgKG5hbWVzcGFjZSBpbiBnb29nLmxvYWRlZE1vZHVsZXNfKSB7CiAgICAgIHRocm93IG5ldyBFcnJvcigKICAgICAgICAgICdNb2R1bGUgd2l0aCBuYW1lc3BhY2UgIicgKyBuYW1lc3BhY2UgKyAnIiBhbHJlYWR5IGV4aXN0cy4nKTsKICAgIH0KICB9CiAgaWYgKGdvb2cubW9kdWxlTG9hZGVyU3RhdGVfKSB7CiAgICAvLyBOb3QgYnVuZGxlZCAtIGRlYnVnIGxvYWRpbmcuCiAgICBnb29nLm1vZHVsZUxvYWRlclN0YXRlXy5tb2R1bGVOYW1lID0gbmFtZXNwYWNlOwogIH0gZWxzZSB7CiAgICAvLyBCdW5kbGVkIC0gbm90IGRlYnVnIGxvYWRpbmcsIG5vIG1vZHVsZSBsb2FkZXIgc3RhdGUuCiAgICB2YXIganNjb21wID0gZ29vZy5nbG9iYWxbJyRqc2NvbXAnXTsKICAgIGlmICghanNjb21wIHx8IHR5cGVvZiBqc2NvbXAuZ2V0Q3VycmVudE1vZHVsZVBhdGggIT0gJ2Z1bmN0aW9uJykgewogICAgICB0aHJvdyBuZXcgRXJyb3IoCiAgICAgICAgICAnTW9kdWxlIHdpdGggbmFtZXNwYWNlICInICsgbmFtZXNwYWNlICsKICAgICAgICAgICciIGhhcyBiZWVuIGxvYWRlZCBpbmNvcnJlY3RseS4nKTsKICAgIH0KICAgIHZhciBleHBvcnRzID0ganNjb21wLnJlcXVpcmUoanNjb21wLmdldEN1cnJlbnRNb2R1bGVQYXRoKCkpOwogICAgZ29vZy5sb2FkZWRNb2R1bGVzX1tuYW1lc3BhY2VdID0gewogICAgICBleHBvcnRzOiBleHBvcnRzLAogICAgICB0eXBlOiBnb29nLk1vZHVsZVR5cGUuRVM2LAogICAgICBtb2R1bGVJZDogbmFtZXNwYWNlCiAgICB9OwogIH0KfTsKCgovKioKICogTWFya3MgdGhhdCB0aGUgY3VycmVudCBmaWxlIHNob3VsZCBvbmx5IGJlIHVzZWQgZm9yIHRlc3RpbmcsIGFuZCBuZXZlciBmb3IKICogbGl2ZSBjb2RlIGluIHByb2R1Y3Rpb24uCiAqCiAqIEluIHRoZSBjYXNlIG9mIHVuaXQgdGVzdHMsIHRoZSBtZXNzYWdlIG1heSBvcHRpb25hbGx5IGJlIGFuIGV4YWN0IG5hbWVzcGFjZQogKiBmb3IgdGhlIHRlc3QgKGUuZy4gJ2dvb2cuc3RyaW5nVGVzdCcpLiBUaGUgbGludGVyIHdpbGwgdGhlbiBpZ25vcmUgdGhlIGV4dHJhCiAqIHByb3ZpZGUgKGlmIG5vdCBleHBsaWNpdGx5IGRlZmluZWQgaW4gdGhlIGNvZGUpLgogKgogKiBAcGFyYW0ge3N0cmluZz19IG9wdF9tZXNzYWdlIE9wdGlvbmFsIG1lc3NhZ2UgdG8gYWRkIHRvIHRoZSBlcnJvciB0aGF0J3MKICogICAgIHJhaXNlZCB3aGVuIHVzZWQgaW4gcHJvZHVjdGlvbiBjb2RlLgogKi8KZ29vZy5zZXRUZXN0T25seSA9IGZ1bmN0aW9uKG9wdF9tZXNzYWdlKSB7CiAgaWYgKGdvb2cuRElTQUxMT1dfVEVTVF9PTkxZX0NPREUpIHsKICAgIG9wdF9tZXNzYWdlID0gb3B0X21lc3NhZ2UgfHwgJyc7CiAgICB0aHJvdyBuZXcgRXJyb3IoCiAgICAgICAgJ0ltcG9ydGluZyB0ZXN0LW9ubHkgY29kZSBpbnRvIG5vbi1kZWJ1ZyBlbnZpcm9ubWVudCcgKwogICAgICAgIChvcHRfbWVzc2FnZSA/ICc6ICcgKyBvcHRfbWVzc2FnZSA6ICcuJykpOwogIH0KfTsKCgovKioKICogRm9yd2FyZCBkZWNsYXJlcyBhIHN5bWJvbC4gVGhpcyBpcyBhbiBpbmRpY2F0aW9uIHRvIHRoZSBjb21waWxlciB0aGF0IHRoZQogKiBzeW1ib2wgbWF5IGJlIHVzZWQgaW4gdGhlIHNvdXJjZSB5ZXQgaXMgbm90IHJlcXVpcmVkIGFuZCBtYXkgbm90IGJlIHByb3ZpZGVkCiAqIGluIGNvbXBpbGF0aW9uLgogKgogKiBUaGUgbW9zdCBjb21tb24gdXNhZ2Ugb2YgZm9yd2FyZCBkZWNsYXJhdGlvbiBpcyBjb2RlIHRoYXQgdGFrZXMgYSB0eXBlIGFzIGEKICogZnVuY3Rpb24gcGFyYW1ldGVyIGJ1dCBkb2VzIG5vdCBuZWVkIHRvIHJlcXVpcmUgaXQuIEJ5IGZvcndhcmQgZGVjbGFyaW5nCiAqIGluc3RlYWQgb2YgcmVxdWlyaW5nLCBubyBoYXJkIGRlcGVuZGVuY3kgaXMgbWFkZSwgYW5kIChpZiBub3QgcmVxdWlyZWQKICogZWxzZXdoZXJlKSB0aGUgbmFtZXNwYWNlIG1heSBuZXZlciBiZSByZXF1aXJlZCBhbmQgdGh1cywgbm90IGJlIHB1bGxlZAogKiBpbnRvIHRoZSBKYXZhU2NyaXB0IGJpbmFyeS4gSWYgaXQgaXMgcmVxdWlyZWQgZWxzZXdoZXJlLCBpdCB3aWxsIGJlIHR5cGUKICogY2hlY2tlZCBhcyBub3JtYWwuCiAqCiAqIEJlZm9yZSB1c2luZyBnb29nLmZvcndhcmREZWNsYXJlLCBwbGVhc2UgcmVhZCB0aGUgZG9jdW1lbnRhdGlvbiBhdAogKiBodHRwczovL2dpdGh1Yi5jb20vZ29vZ2xlL2Nsb3N1cmUtY29tcGlsZXIvd2lraS9CYWQtVHlwZS1Bbm5vdGF0aW9uIHRvCiAqIHVuZGVyc3RhbmQgdGhlIG9wdGlvbnMgYW5kIHRyYWRlb2ZmcyB3aGVuIHdvcmtpbmcgd2l0aCBmb3J3YXJkIGRlY2xhcmF0aW9ucy4KICoKICogQHBhcmFtIHtzdHJpbmd9IG5hbWUgVGhlIG5hbWVzcGFjZSB0byBmb3J3YXJkIGRlY2xhcmUgaW4gdGhlIGZvcm0gb2YKICogICAgICJnb29nLnBhY2thZ2UucGFydCIuCiAqLwpnb29nLmZvcndhcmREZWNsYXJlID0gZnVuY3Rpb24obmFtZSkge307CgoKLyoqCiAqIEZvcndhcmQgZGVjbGFyZSB0eXBlIGluZm9ybWF0aW9uLiBVc2VkIHRvIGFzc2lnbiB0eXBlcyB0byBnb29nLmdsb2JhbAogKiByZWZlcmVuY2VkIG9iamVjdCB0aGF0IHdvdWxkIG90aGVyd2lzZSByZXN1bHQgaW4gdW5rbm93biB0eXBlIHJlZmVyZW5jZXMKICogYW5kIHRodXMgYmxvY2sgcHJvcGVydHkgZGlzYW1iaWd1YXRpb24uCiAqLwpnb29nLmZvcndhcmREZWNsYXJlKCdEb2N1bWVudCcpOwpnb29nLmZvcndhcmREZWNsYXJlKCdIVE1MU2NyaXB0RWxlbWVudCcpOwpnb29nLmZvcndhcmREZWNsYXJlKCdYTUxIdHRwUmVxdWVzdCcpOwoKCmlmICghQ09NUElMRUQpIHsKICAvKioKICAgKiBDaGVjayBpZiB0aGUgZ2l2ZW4gbmFtZSBoYXMgYmVlbiBnb29nLnByb3ZpZGVkLiBUaGlzIHdpbGwgcmV0dXJuIGZhbHNlIGZvcgogICAqIG5hbWVzIHRoYXQgYXJlIGF2YWlsYWJsZSBvbmx5IGFzIGltcGxpY2l0IG5hbWVzcGFjZXMuCiAgICogQHBhcmFtIHtzdHJpbmd9IG5hbWUgbmFtZSBvZiB0aGUgb2JqZWN0IHRvIGxvb2sgZm9yLgogICAqIEByZXR1cm4ge2Jvb2xlYW59IFdoZXRoZXIgdGhlIG5hbWUgaGFzIGJlZW4gcHJvdmlkZWQuCiAgICogQHByaXZhdGUKICAgKi8KICBnb29nLmlzUHJvdmlkZWRfID0gZnVuY3Rpb24obmFtZSkgewogICAgcmV0dXJuIChuYW1lIGluIGdvb2cubG9hZGVkTW9kdWxlc18pIHx8CiAgICAgICAgKCFnb29nLmltcGxpY2l0TmFtZXNwYWNlc19bbmFtZV0gJiYgZ29vZy5nZXRPYmplY3RCeU5hbWUobmFtZSkgIT0gbnVsbCk7CiAgfTsKCiAgLyoqCiAgICogTmFtZXNwYWNlcyBpbXBsaWNpdGx5IGRlZmluZWQgYnkgZ29vZy5wcm92aWRlLiBGb3IgZXhhbXBsZSwKICAgKiBnb29nLnByb3ZpZGUoJ2dvb2cuZXZlbnRzLkV2ZW50JykgaW1wbGljaXRseSBkZWNsYXJlcyB0aGF0ICdnb29nJyBhbmQKICAgKiAnZ29vZy5ldmVudHMnIG11c3QgYmUgbmFtZXNwYWNlcy4KICAgKgogICAqIEB0eXBlIHshT2JqZWN0PHN0cmluZywgKGJvb2xlYW58dW5kZWZpbmVkKT59CiAgICogQHByaXZhdGUKICAgKi8KICBnb29nLmltcGxpY2l0TmFtZXNwYWNlc18gPSB7J2dvb2cubW9kdWxlJzogdHJ1ZX07CgogIC8vIE5PVEU6IFdlIGFkZCBnb29nLm1vZHVsZSBhcyBhbiBpbXBsaWNpdCBuYW1lc3BhY2UgYXMgZ29vZy5tb2R1bGUgaXMgZGVmaW5lZAogIC8vIGhlcmUgYW5kIGJlY2F1c2UgdGhlIGV4aXN0aW5nIG1vZHVsZSBwYWNrYWdlIGhhcyBub3QgYmVlbiBtb3ZlZCB5ZXQgb3V0IG9mCiAgLy8gdGhlIGdvb2cubW9kdWxlIG5hbWVzcGFjZS4gVGhpcyBzYXRpc2lmaWVzIGJvdGggdGhlIGRlYnVnIGxvYWRlciBhbmQKICAvLyBhaGVhZC1vZi10aW1lIGRlcGVuZGVuY3kgbWFuYWdlbWVudC4KfQoKCi8qKgogKiBSZXR1cm5zIGFuIG9iamVjdCBiYXNlZCBvbiBpdHMgZnVsbHkgcXVhbGlmaWVkIGV4dGVybmFsIG5hbWUuICBUaGUgb2JqZWN0CiAqIGlzIG5vdCBmb3VuZCBpZiBudWxsIG9yIHVuZGVmaW5lZC4gIElmIHlvdSBhcmUgdXNpbmcgYSBjb21waWxhdGlvbiBwYXNzIHRoYXQKICogcmVuYW1lcyBwcm9wZXJ0eSBuYW1lcyBiZXdhcmUgdGhhdCB1c2luZyB0aGlzIGZ1bmN0aW9uIHdpbGwgbm90IGZpbmQgcmVuYW1lZAogKiBwcm9wZXJ0aWVzLgogKgogKiBAcGFyYW0ge3N0cmluZ30gbmFtZSBUaGUgZnVsbHkgcXVhbGlmaWVkIG5hbWUuCiAqIEBwYXJhbSB7T2JqZWN0PX0gb3B0X29iaiBUaGUgb2JqZWN0IHdpdGhpbiB3aGljaCB0byBsb29rOyBkZWZhdWx0IGlzCiAqICAgICB8Z29vZy5nbG9iYWx8LgogKiBAcmV0dXJuIHs/fSBUaGUgdmFsdWUgKG9iamVjdCBvciBwcmltaXRpdmUpIG9yLCBpZiBub3QgZm91bmQsIG51bGwuCiAqLwpnb29nLmdldE9iamVjdEJ5TmFtZSA9IGZ1bmN0aW9uKG5hbWUsIG9wdF9vYmopIHsKICB2YXIgcGFydHMgPSBuYW1lLnNwbGl0KCcuJyk7CiAgdmFyIGN1ciA9IG9wdF9vYmogfHwgZ29vZy5nbG9iYWw7CiAgZm9yICh2YXIgaSA9IDA7IGkgPCBwYXJ0cy5sZW5ndGg7IGkrKykgewogICAgY3VyID0gY3VyW3BhcnRzW2ldXTsKICAgIGlmIChjdXIgPT0gbnVsbCkgewogICAgICByZXR1cm4gbnVsbDsKICAgIH0KICB9CiAgcmV0dXJuIGN1cjsKfTsKCgovKioKICogR2xvYmFsaXplcyBhIHdob2xlIG5hbWVzcGFjZSwgc3VjaCBhcyBnb29nIG9yIGdvb2cubGFuZy4KICoKICogQHBhcmFtIHshT2JqZWN0fSBvYmogVGhlIG5hbWVzcGFjZSB0byBnbG9iYWxpemUuCiAqIEBwYXJhbSB7T2JqZWN0PX0gb3B0X2dsb2JhbCBUaGUgb2JqZWN0IHRvIGFkZCB0aGUgcHJvcGVydGllcyB0by4KICogQGRlcHJlY2F0ZWQgUHJvcGVydGllcyBtYXkgYmUgZXhwbGljaXRseSBleHBvcnRlZCB0byB0aGUgZ2xvYmFsIHNjb3BlLCBidXQKICogICAgIHRoaXMgc2hvdWxkIG5vIGxvbmdlciBiZSBkb25lIGluIGJ1bGsuCiAqLwpnb29nLmdsb2JhbGl6ZSA9IGZ1bmN0aW9uKG9iaiwgb3B0X2dsb2JhbCkgewogIHZhciBnbG9iYWwgPSBvcHRfZ2xvYmFsIHx8IGdvb2cuZ2xvYmFsOwogIGZvciAodmFyIHggaW4gb2JqKSB7CiAgICBnbG9iYWxbeF0gPSBvYmpbeF07CiAgfQp9OwoKCi8qKgogKiBBZGRzIGEgZGVwZW5kZW5jeSBmcm9tIGEgZmlsZSB0byB0aGUgZmlsZXMgaXQgcmVxdWlyZXMuCiAqIEBwYXJhbSB7c3RyaW5nfSByZWxQYXRoIFRoZSBwYXRoIHRvIHRoZSBqcyBmaWxlLgogKiBAcGFyYW0geyFBcnJheTxzdHJpbmc+fSBwcm92aWRlcyBBbiBhcnJheSBvZiBzdHJpbmdzIHdpdGgKICogICAgIHRoZSBuYW1lcyBvZiB0aGUgb2JqZWN0cyB0aGlzIGZpbGUgcHJvdmlkZXMuCiAqIEBwYXJhbSB7IUFycmF5PHN0cmluZz59IHJlcXVpcmVzIEFuIGFycmF5IG9mIHN0cmluZ3Mgd2l0aAogKiAgICAgdGhlIG5hbWVzIG9mIHRoZSBvYmplY3RzIHRoaXMgZmlsZSByZXF1aXJlcy4KICogQHBhcmFtIHtib29sZWFufCFPYmplY3Q8c3RyaW5nPj19IG9wdF9sb2FkRmxhZ3MgUGFyYW1ldGVycyBpbmRpY2F0aW5nCiAqICAgICBob3cgdGhlIGZpbGUgbXVzdCBiZSBsb2FkZWQuICBUaGUgYm9vbGVhbiAndHJ1ZScgaXMgZXF1aXZhbGVudAogKiAgICAgdG8geydtb2R1bGUnOiAnZ29vZyd9IGZvciBiYWNrd2FyZHMtY29tcGF0aWJpbGl0eS4gIFZhbGlkIHByb3BlcnRpZXMKICogICAgIGFuZCB2YWx1ZXMgaW5jbHVkZSB7J21vZHVsZSc6ICdnb29nJ30gYW5kIHsnbGFuZyc6ICdlczYnfS4KICovCmdvb2cuYWRkRGVwZW5kZW5jeSA9IGZ1bmN0aW9uKHJlbFBhdGgsIHByb3ZpZGVzLCByZXF1aXJlcywgb3B0X2xvYWRGbGFncykgewogIGlmICghQ09NUElMRUQgJiYgZ29vZy5ERVBFTkRFTkNJRVNfRU5BQkxFRCkgewogICAgZ29vZy5kZWJ1Z0xvYWRlcl8uYWRkRGVwZW5kZW5jeShyZWxQYXRoLCBwcm92aWRlcywgcmVxdWlyZXMsIG9wdF9sb2FkRmxhZ3MpOwogIH0KfTsKCgoKCi8vIE5PVEUobm5hemUpOiBUaGUgZGVidWcgRE9NIGxvYWRlciB3YXMgaW5jbHVkZWQgaW4gYmFzZS5qcyBhcyBhbiBvcmlnaW5hbCB3YXkKLy8gdG8gZG8gImRlYnVnLW1vZGUiIGRldmVsb3BtZW50LiAgVGhlIGRlcGVuZGVuY3kgc3lzdGVtIGNhbiBzb21ldGltZXMgYmUKLy8gY29uZnVzaW5nLCBhcyBjYW4gdGhlIGRlYnVnIERPTSBsb2FkZXIncyBhc3luY2hyb25vdXMgbmF0dXJlLgovLwovLyBXaXRoIHRoZSBET00gbG9hZGVyLCBhIGNhbGwgdG8gZ29vZy5yZXF1aXJlKCkgaXMgbm90IGJsb2NraW5nIC0tIHRoZSBzY3JpcHQKLy8gd2lsbCBub3QgbG9hZCB1bnRpbCBzb21lIHBvaW50IGFmdGVyIHRoZSBjdXJyZW50IHNjcmlwdC4gIElmIGEgbmFtZXNwYWNlIGlzCi8vIG5lZWRlZCBhdCBydW50aW1lLCBpdCBuZWVkcyB0byBiZSBkZWZpbmVkIGluIGEgcHJldmlvdXMgc2NyaXB0LCBvciBsb2FkZWQgdmlhCi8vIHJlcXVpcmUoKSB3aXRoIGl0cyByZWdpc3RlcmVkIGRlcGVuZGVuY2llcy4KLy8KLy8gVXNlci1kZWZpbmVkIG5hbWVzcGFjZXMgbWF5IG5lZWQgdGhlaXIgb3duIGRlcHMgZmlsZS4gRm9yIGEgcmVmZXJlbmNlIG9uCi8vIGNyZWF0aW5nIGEgZGVwcyBmaWxlLCBzZWU6Ci8vIEV4dGVybmFsbHk6IGh0dHBzOi8vZGV2ZWxvcGVycy5nb29nbGUuY29tL2Nsb3N1cmUvbGlicmFyeS9kb2NzL2RlcHN3cml0ZXIKLy8KLy8gQmVjYXVzZSBvZiBsZWdhY3kgY2xpZW50cywgdGhlIERPTSBsb2FkZXIgY2FuJ3QgYmUgZWFzaWx5IHJlbW92ZWQgZnJvbQovLyBiYXNlLmpzLiAgV29yayB3YXMgZG9uZSB0byBtYWtlIGl0IGRpc2FibGVhYmxlIG9yIHJlcGxhY2VhYmxlIGZvcgovLyBkaWZmZXJlbnQgZW52aXJvbm1lbnRzIChET00tbGVzcyBKYXZhU2NyaXB0IGludGVycHJldGVycyBsaWtlIFJoaW5vIG9yIFY4LAovLyBmb3IgZXhhbXBsZSkuIFNlZSBib290c3RyYXAvIGZvciBtb3JlIGluZm9ybWF0aW9uLgoKCi8qKgogKiBAZGVmaW5lIHtib29sZWFufSBXaGV0aGVyIHRvIGVuYWJsZSB0aGUgZGVidWcgbG9hZGVyLgogKgogKiBJZiBlbmFibGVkLCBhIGNhbGwgdG8gZ29vZy5yZXF1aXJlKCkgd2lsbCBhdHRlbXB0IHRvIGxvYWQgdGhlIG5hbWVzcGFjZSBieQogKiBhcHBlbmRpbmcgYSBzY3JpcHQgdGFnIHRvIHRoZSBET00gKGlmIHRoZSBuYW1lc3BhY2UgaGFzIGJlZW4gcmVnaXN0ZXJlZCkuCiAqCiAqIElmIGRpc2FibGVkLCBnb29nLnJlcXVpcmUoKSB3aWxsIHNpbXBseSBhc3NlcnQgdGhhdCB0aGUgbmFtZXNwYWNlIGhhcyBiZWVuCiAqIHByb3ZpZGVkIChhbmQgZGVwZW5kIG9uIHRoZSBmYWN0IHRoYXQgc29tZSBvdXRzaWRlIHRvb2wgY29ycmVjdGx5IG9yZGVyZWQKICogdGhlIHNjcmlwdCkuCiAqLwpnb29nLkVOQUJMRV9ERUJVR19MT0FERVIgPSBnb29nLmRlZmluZSgnZ29vZy5FTkFCTEVfREVCVUdfTE9BREVSJywgdHJ1ZSk7CgoKLyoqCiAqIEBwYXJhbSB7c3RyaW5nfSBtc2cKICogQHByaXZhdGUKICovCmdvb2cubG9nVG9Db25zb2xlXyA9IGZ1bmN0aW9uKG1zZykgewogIGlmIChnb29nLmdsb2JhbC5jb25zb2xlKSB7CiAgICBnb29nLmdsb2JhbC5jb25zb2xlWydlcnJvciddKG1zZyk7CiAgfQp9OwoKCi8qKgogKiBJbXBsZW1lbnRzIGEgc3lzdGVtIGZvciB0aGUgZHluYW1pYyByZXNvbHV0aW9uIG9mIGRlcGVuZGVuY2llcyB0aGF0IHdvcmtzIGluCiAqIHBhcmFsbGVsIHdpdGggdGhlIEJVSUxEIHN5c3RlbS4KICoKICogTm90ZSB0aGF0IGFsbCBjYWxscyB0byBnb29nLnJlcXVpcmUgd2lsbCBiZSBzdHJpcHBlZCBieSB0aGUgY29tcGlsZXIuCiAqCiAqIEBzZWUgZ29vZy5wcm92aWRlCiAqIEBwYXJhbSB7c3RyaW5nfSBuYW1lc3BhY2UgTmFtZXNwYWNlIChhcyB3YXMgZ2l2ZW4gaW4gZ29vZy5wcm92aWRlLAogKiAgICAgZ29vZy5tb2R1bGUsIG9yIGdvb2cuZGVjbGFyZU1vZHVsZUlkKSBpbiB0aGUgZm9ybQogKiAgICAgImdvb2cucGFja2FnZS5wYXJ0Ii4KICogQHJldHVybiB7P30gSWYgY2FsbGVkIHdpdGhpbiBhIGdvb2cubW9kdWxlIG9yIEVTNiBtb2R1bGUgZmlsZSwgdGhlIGFzc29jaWF0ZWQKICogICAgIG5hbWVzcGFjZSBvciBtb2R1bGUgb3RoZXJ3aXNlIG51bGwuCiAqLwpnb29nLnJlcXVpcmUgPSBmdW5jdGlvbihuYW1lc3BhY2UpIHsKICBpZiAoIUNPTVBJTEVEKSB7CiAgICAvLyBNaWdodCBuZWVkIHRvIGxhenkgbG9hZCBvbiBvbGQgSUUuCiAgICBpZiAoZ29vZy5FTkFCTEVfREVCVUdfTE9BREVSKSB7CiAgICAgIGdvb2cuZGVidWdMb2FkZXJfLnJlcXVlc3RlZChuYW1lc3BhY2UpOwogICAgfQoKICAgIC8vIElmIHRoZSBvYmplY3QgYWxyZWFkeSBleGlzdHMgd2UgZG8gbm90IG5lZWQgdG8gZG8gYW55dGhpbmcuCiAgICBpZiAoZ29vZy5pc1Byb3ZpZGVkXyhuYW1lc3BhY2UpKSB7CiAgICAgIGlmIChnb29nLmlzSW5Nb2R1bGVMb2FkZXJfKCkpIHsKICAgICAgICByZXR1cm4gZ29vZy5tb2R1bGUuZ2V0SW50ZXJuYWxfKG5hbWVzcGFjZSk7CiAgICAgIH0KICAgIH0gZWxzZSBpZiAoZ29vZy5FTkFCTEVfREVCVUdfTE9BREVSKSB7CiAgICAgIHZhciBtb2R1bGVMb2FkZXJTdGF0ZSA9IGdvb2cubW9kdWxlTG9hZGVyU3RhdGVfOwogICAgICBnb29nLm1vZHVsZUxvYWRlclN0YXRlXyA9IG51bGw7CiAgICAgIHRyeSB7CiAgICAgICAgZ29vZy5kZWJ1Z0xvYWRlcl8ubG9hZF8obmFtZXNwYWNlKTsKICAgICAgfSBmaW5hbGx5IHsKICAgICAgICBnb29nLm1vZHVsZUxvYWRlclN0YXRlXyA9IG1vZHVsZUxvYWRlclN0YXRlOwogICAgICB9CiAgICB9CgogICAgcmV0dXJuIG51bGw7CiAgfQp9OwoKCi8qKgogKiBSZXF1aXJlcyBhIHN5bWJvbCBmb3IgaXRzIHR5cGUgaW5mb3JtYXRpb24uIFRoaXMgaXMgYW4gaW5kaWNhdGlvbiB0byB0aGUKICogY29tcGlsZXIgdGhhdCB0aGUgc3ltYm9sIG1heSBhcHBlYXIgaW4gdHlwZSBhbm5vdGF0aW9ucywgeWV0IGl0IGlzIG5vdAogKiByZWZlcmVuY2VkIGF0IHJ1bnRpbWUuCiAqCiAqIFdoZW4gY2FsbGVkIHdpdGhpbiBhIGdvb2cubW9kdWxlIG9yIEVTNiBtb2R1bGUgZmlsZSwgdGhlIHJldHVybiB2YWx1ZSBtYXkgYmUKICogYXNzaWduZWQgdG8gb3IgZGVzdHJ1Y3R1cmVkIGludG8gYSB2YXJpYWJsZSwgYnV0IGl0IG1heSBub3QgYmUgb3RoZXJ3aXNlIHVzZWQKICogaW4gY29kZSBvdXRzaWRlIG9mIGEgdHlwZSBhbm5vdGF0aW9uLgogKgogKiBOb3RlIHRoYXQgYWxsIGNhbGxzIHRvIGdvb2cucmVxdWlyZVR5cGUgd2lsbCBiZSBzdHJpcHBlZCBieSB0aGUgY29tcGlsZXIuCiAqCiAqIEBwYXJhbSB7c3RyaW5nfSBuYW1lc3BhY2UgTmFtZXNwYWNlIChhcyB3YXMgZ2l2ZW4gaW4gZ29vZy5wcm92aWRlLAogKiAgICAgZ29vZy5tb2R1bGUsIG9yIGdvb2cuZGVjbGFyZU1vZHVsZUlkKSBpbiB0aGUgZm9ybQogKiAgICAgImdvb2cucGFja2FnZS5wYXJ0Ii4KICogQHJldHVybiB7P30KICovCmdvb2cucmVxdWlyZVR5cGUgPSBmdW5jdGlvbihuYW1lc3BhY2UpIHsKICAvLyBSZXR1cm4gYW4gZW1wdHkgb2JqZWN0IHNvIHRoYXQgc2luZ2xlLWxldmVsIGRlc3RydWN0dXJpbmcgb2YgdGhlIHJldHVybgogIC8vIHZhbHVlIGRvZXNuJ3QgY3Jhc2ggYXQgcnVudGltZSB3aGVuIHVzaW5nIHRoZSBkZWJ1ZyBsb2FkZXIuIE11bHRpLWxldmVsCiAgLy8gZGVzdHJ1Y3R1cmluZyBpc24ndCBzdXBwb3J0ZWQuCiAgcmV0dXJuIHt9Owp9OwoKCi8qKgogKiBQYXRoIGZvciBpbmNsdWRlZCBzY3JpcHRzLgogKiBAdHlwZSB7c3RyaW5nfQogKi8KZ29vZy5iYXNlUGF0aCA9ICcnOwoKCi8qKgogKiBBIGhvb2sgZm9yIG92ZXJyaWRpbmcgdGhlIGJhc2UgcGF0aC4KICogQHR5cGUge3N0cmluZ3x1bmRlZmluZWR9CiAqLwpnb29nLmdsb2JhbC5DTE9TVVJFX0JBU0VfUEFUSDsKCgovKioKICogV2hldGhlciB0byBhdHRlbXB0IHRvIGxvYWQgQ2xvc3VyZSdzIGRlcHMgZmlsZS4gQnkgZGVmYXVsdCwgd2hlbiB1bmNvbXBpbGVkLAogKiBkZXBzIGZpbGVzIHdpbGwgYXR0ZW1wdCB0byBiZSBsb2FkZWQuCiAqIEB0eXBlIHtib29sZWFufHVuZGVmaW5lZH0KICovCmdvb2cuZ2xvYmFsLkNMT1NVUkVfTk9fREVQUzsKCgovKioKICogQSBmdW5jdGlvbiB0byBpbXBvcnQgYSBzaW5nbGUgc2NyaXB0LiBUaGlzIGlzIG1lYW50IHRvIGJlIG92ZXJyaWRkZW4gd2hlbgogKiBDbG9zdXJlIGlzIGJlaW5nIHJ1biBpbiBub24tSFRNTCBjb250ZXh0cywgc3VjaCBhcyB3ZWIgd29ya2Vycy4gSXQncyBkZWZpbmVkCiAqIGluIHRoZSBnbG9iYWwgc2NvcGUgc28gdGhhdCBpdCBjYW4gYmUgc2V0IGJlZm9yZSBiYXNlLmpzIGlzIGxvYWRlZCwgd2hpY2gKICogYWxsb3dzIGRlcHMuanMgdG8gYmUgaW1wb3J0ZWQgcHJvcGVybHkuCiAqCiAqIFRoZSBmaXJzdCBwYXJhbWV0ZXIgdGhlIHNjcmlwdCBzb3VyY2UsIHdoaWNoIGlzIGEgcmVsYXRpdmUgVVJJLiBUaGUgc2Vjb25kLAogKiBvcHRpb25hbCBwYXJhbWV0ZXIgaXMgdGhlIHNjcmlwdCBjb250ZW50cywgaW4gdGhlIGV2ZW50IHRoZSBzY3JpcHQgbmVlZGVkCiAqIHRyYW5zZm9ybWF0aW9uLiBJdCBzaG91bGQgcmV0dXJuIHRydWUgaWYgdGhlIHNjcmlwdCB3YXMgaW1wb3J0ZWQsIGZhbHNlCiAqIG90aGVyd2lzZS4KICogQHR5cGUgeyhmdW5jdGlvbihzdHJpbmcsIHN0cmluZz0pOiBib29sZWFuKXx1bmRlZmluZWR9CiAqLwpnb29nLmdsb2JhbC5DTE9TVVJFX0lNUE9SVF9TQ1JJUFQ7CgoKLyoqCiAqIE51bGwgZnVuY3Rpb24gdXNlZCBmb3IgZGVmYXVsdCB2YWx1ZXMgb2YgY2FsbGJhY2tzLCBldGMuCiAqIEByZXR1cm4ge3ZvaWR9IE5vdGhpbmcuCiAqLwpnb29nLm51bGxGdW5jdGlvbiA9IGZ1bmN0aW9uKCkge307CgoKLyoqCiAqIFdoZW4gZGVmaW5pbmcgYSBjbGFzcyBGb28gd2l0aCBhbiBhYnN0cmFjdCBtZXRob2QgYmFyKCksIHlvdSBjYW4gZG86CiAqIEZvby5wcm90b3R5cGUuYmFyID0gZ29vZy5hYnN0cmFjdE1ldGhvZAogKgogKiBOb3cgaWYgYSBzdWJjbGFzcyBvZiBGb28gZmFpbHMgdG8gb3ZlcnJpZGUgYmFyKCksIGFuIGVycm9yIHdpbGwgYmUgdGhyb3duCiAqIHdoZW4gYmFyKCkgaXMgaW52b2tlZC4KICoKICogQHR5cGUgeyFGdW5jdGlvbn0KICogQHRocm93cyB7RXJyb3J9IHdoZW4gaW52b2tlZCB0byBpbmRpY2F0ZSB0aGUgbWV0aG9kIHNob3VsZCBiZSBvdmVycmlkZGVuLgogKiBAZGVwcmVjYXRlZCBVc2UgIkBhYnN0cmFjdCIgYW5ub3RhdGlvbiBpbnN0ZWFkIG9mIGdvb2cuYWJzdHJhY3RNZXRob2QgaW4gbmV3CiAqICAgICBjb2RlLiBTZWUKICogICAgIGh0dHBzOi8vZ2l0aHViLmNvbS9nb29nbGUvY2xvc3VyZS1jb21waWxlci93aWtpL0BhYnN0cmFjdC1jbGFzc2VzLWFuZC1tZXRob2RzCiAqLwpnb29nLmFic3RyYWN0TWV0aG9kID0gZnVuY3Rpb24oKSB7CiAgdGhyb3cgbmV3IEVycm9yKCd1bmltcGxlbWVudGVkIGFic3RyYWN0IG1ldGhvZCcpOwp9OwoKCi8qKgogKiBBZGRzIGEgYGdldEluc3RhbmNlYCBzdGF0aWMgbWV0aG9kIHRoYXQgYWx3YXlzIHJldHVybnMgdGhlIHNhbWUKICogaW5zdGFuY2Ugb2JqZWN0LgogKiBAcGFyYW0geyFGdW5jdGlvbn0gY3RvciBUaGUgY29uc3RydWN0b3IgZm9yIHRoZSBjbGFzcyB0byBhZGQgdGhlIHN0YXRpYwogKiAgICAgbWV0aG9kIHRvLgogKiBAc3VwcHJlc3Mge21pc3NpbmdQcm9wZXJ0aWVzfSAnaW5zdGFuY2VfJyBpc24ndCBhIHByb3BlcnR5IG9uICdGdW5jdGlvbicKICogICAgIGJ1dCB3ZSBkb24ndCBoYXZlIGEgYmV0dGVyIHR5cGUgdG8gdXNlIGhlcmUuCiAqLwpnb29nLmFkZFNpbmdsZXRvbkdldHRlciA9IGZ1bmN0aW9uKGN0b3IpIHsKICAvLyBpbnN0YW5jZV8gaXMgaW1tZWRpYXRlbHkgc2V0IHRvIHByZXZlbnQgaXNzdWVzIHdpdGggc2VhbGVkIGNvbnN0cnVjdG9ycwogIC8vIHN1Y2ggYXMgYXJlIGVuY291bnRlcmVkIHdoZW4gYSBjb25zdHJ1Y3RvciBpcyByZXR1cm5lZCBhcyB0aGUgZXhwb3J0IG9iamVjdAogIC8vIG9mIGEgZ29vZy5tb2R1bGUgaW4gdW5vcHRpbWl6ZWQgY29kZS4KICAvLyBEZWxjYXJlIHR5cGUgdG8gYXZvaWQgY29uZm9ybWFuY2UgdmlvbGF0aW9ucyB0aGF0IGN0b3IuaW5zdGFuY2VfIGlzIHVua25vd24KICAvKiogQHR5cGUge3VuZGVmaW5lZHwhT2JqZWN0fSBAc3VwcHJlc3Mge3VuZGVyc2NvcmV9ICovCiAgY3Rvci5pbnN0YW5jZV8gPSB1bmRlZmluZWQ7CiAgY3Rvci5nZXRJbnN0YW5jZSA9IGZ1bmN0aW9uKCkgewogICAgaWYgKGN0b3IuaW5zdGFuY2VfKSB7CiAgICAgIHJldHVybiBjdG9yLmluc3RhbmNlXzsKICAgIH0KICAgIGlmIChnb29nLkRFQlVHKSB7CiAgICAgIC8vIE5PVEU6IEpTQ29tcGlsZXIgY2FuJ3Qgb3B0aW1pemUgYXdheSBBcnJheSNwdXNoLgogICAgICBnb29nLmluc3RhbnRpYXRlZFNpbmdsZXRvbnNfW2dvb2cuaW5zdGFudGlhdGVkU2luZ2xldG9uc18ubGVuZ3RoXSA9IGN0b3I7CiAgICB9CiAgICAvLyBDYXN0IHRvIGF2b2lkIGNvbmZvcm1hbmNlIHZpb2xhdGlvbnMgdGhhdCBjdG9yLmluc3RhbmNlXyBpcyB1bmtub3duCiAgICByZXR1cm4gLyoqIEB0eXBlIHshT2JqZWN0fHVuZGVmaW5lZH0gKi8gKGN0b3IuaW5zdGFuY2VfKSA9IG5ldyBjdG9yOwogIH07Cn07CgoKLyoqCiAqIEFsbCBzaW5nbGV0b24gY2xhc3NlcyB0aGF0IGhhdmUgYmVlbiBpbnN0YW50aWF0ZWQsIGZvciB0ZXN0aW5nLiBEb24ndCByZWFkCiAqIGl0IGRpcmVjdGx5LCB1c2UgdGhlIGBnb29nLnRlc3Rpbmcuc2luZ2xldG9uYCBtb2R1bGUuIFRoZSBjb21waWxlcgogKiByZW1vdmVzIHRoaXMgdmFyaWFibGUgaWYgdW51c2VkLgogKiBAdHlwZSB7IUFycmF5PCFGdW5jdGlvbj59CiAqIEBwcml2YXRlCiAqLwpnb29nLmluc3RhbnRpYXRlZFNpbmdsZXRvbnNfID0gW107CgoKLyoqCiAqIEBkZWZpbmUge2Jvb2xlYW59IFdoZXRoZXIgdG8gbG9hZCBnb29nLm1vZHVsZXMgdXNpbmcgYGV2YWxgIHdoZW4gdXNpbmcKICogdGhlIGRlYnVnIGxvYWRlci4gIFRoaXMgcHJvdmlkZXMgYSBiZXR0ZXIgZGVidWdnaW5nIGV4cGVyaWVuY2UgYXMgdGhlCiAqIHNvdXJjZSBpcyB1bm1vZGlmaWVkIGFuZCBjYW4gYmUgZWRpdGVkIHVzaW5nIENocm9tZSBXb3Jrc3BhY2VzIG9yIHNpbWlsYXIuCiAqIEhvd2V2ZXIgaW4gc29tZSBlbnZpcm9ubWVudHMgdGhlIHVzZSBvZiBgZXZhbGAgaXMgYmFubmVkCiAqIHNvIHdlIHByb3ZpZGUgYW4gYWx0ZXJuYXRpdmUuCiAqLwpnb29nLkxPQURfTU9EVUxFX1VTSU5HX0VWQUwgPSBnb29nLmRlZmluZSgnZ29vZy5MT0FEX01PRFVMRV9VU0lOR19FVkFMJywgdHJ1ZSk7CgoKLyoqCiAqIEBkZWZpbmUge2Jvb2xlYW59IFdoZXRoZXIgdGhlIGV4cG9ydHMgb2YgZ29vZy5tb2R1bGVzIHNob3VsZCBiZSBzZWFsZWQgd2hlbgogKiBwb3NzaWJsZS4KICovCmdvb2cuU0VBTF9NT0RVTEVfRVhQT1JUUyA9IGdvb2cuZGVmaW5lKCdnb29nLlNFQUxfTU9EVUxFX0VYUE9SVFMnLCBnb29nLkRFQlVHKTsKCgovKioKICogVGhlIHJlZ2lzdHJ5IG9mIGluaXRpYWxpemVkIG1vZHVsZXM6CiAqIFRoZSBtb2R1bGUgaWRlbnRpZmllciBvciBwYXRoIHRvIG1vZHVsZSBleHBvcnRzIG1hcC4KICogQHByaXZhdGUgQGNvbnN0IHshT2JqZWN0PHN0cmluZywge2V4cG9ydHM6Pyx0eXBlOnN0cmluZyxtb2R1bGVJZDpzdHJpbmd9Pn0KICovCmdvb2cubG9hZGVkTW9kdWxlc18gPSB7fTsKCgovKioKICogVHJ1ZSBpZiB0aGUgZGVidWcgbG9hZGVyIGVuYWJsZWQgYW5kIHVzZWQuCiAqIEBjb25zdCB7Ym9vbGVhbn0KICovCmdvb2cuREVQRU5ERU5DSUVTX0VOQUJMRUQgPSAhQ09NUElMRUQgJiYgZ29vZy5FTkFCTEVfREVCVUdfTE9BREVSOwoKCi8qKgogKiBAZGVmaW5lIHtzdHJpbmd9IEhvdyB0byBkZWNpZGUgd2hldGhlciB0byB0cmFuc3BpbGUuICBWYWxpZCB2YWx1ZXMKICogYXJlICdhbHdheXMnLCAnbmV2ZXInLCBhbmQgJ2RldGVjdCcuICBUaGUgZGVmYXVsdCAoJ2RldGVjdCcpIGlzIHRvCiAqIHVzZSBmZWF0dXJlIGRldGVjdGlvbiB0byBkZXRlcm1pbmUgd2hpY2ggbGFuZ3VhZ2UgbGV2ZWxzIG5lZWQKICogdHJhbnNwaWxhdGlvbi4KICovCi8vIE5PVEUoc2RoKTogd2UgY291bGQgZXhwYW5kIHRoaXMgdG8gYWNjZXB0IGEgbGFuZ3VhZ2UgbGV2ZWwgdG8gYnlwYXNzCi8vIGRldGVjdGlvbjogZS5nLiBnb29nLlRSQU5TUElMRSA9PSAnZXM1JyB3b3VsZCB0cmFuc3BpbGUgRVM2IGZpbGVzIGJ1dAovLyB3b3VsZCBsZWF2ZSBFUzMgYW5kIEVTNSBmaWxlcyBhbG9uZS4KZ29vZy5UUkFOU1BJTEUgPSBnb29nLmRlZmluZSgnZ29vZy5UUkFOU1BJTEUnLCAnZGV0ZWN0Jyk7CgovKioKICogQGRlZmluZSB7Ym9vbGVhbn0gSWYgdHJ1ZSBhc3N1bWUgdGhhdCBFUyBtb2R1bGVzIGhhdmUgYWxyZWFkeSBiZWVuCiAqIHRyYW5zcGlsZWQgYnkgdGhlIGpzY29tcGlsZXIgKGluIHRoZSBzYW1lIHdheSB0aGF0IHRyYW5zcGlsZS5qcyB3b3VsZAogKiB0cmFuc3BpbGUgdGhlbSAtIHRvIGpzY29tcCBtb2R1bGVzKS4gVXNlZnVsIG9ubHkgZm9yIHNlcnZlcnMgdGhhdCB3aXNoIHRvIHVzZQogKiB0aGUgZGVidWcgbG9hZGVyIGFuZCB0cmFuc3BpbGUgc2VydmVyIHNpZGUuIFRodXMgdGhpcyBpcyBvbmx5IHJlc3BlY3RlZCBpZgogKiBnb29nLlRSQU5TUElMRSBpcyAibmV2ZXIiLgogKi8KZ29vZy5BU1NVTUVfRVNfTU9EVUxFU19UUkFOU1BJTEVEID0KICAgIGdvb2cuZGVmaW5lKCdnb29nLkFTU1VNRV9FU19NT0RVTEVTX1RSQU5TUElMRUQnLCBmYWxzZSk7CgoKLyoqCiAqIEBkZWZpbmUge3N0cmluZ30gSWYgYSBmaWxlIG5lZWRzIHRvIGJlIHRyYW5zcGlsZWQgd2hhdCB0aGUgb3V0cHV0IGxhbmd1YWdlCiAqIHNob3VsZCBiZS4gQnkgZGVmYXVsdCB0aGlzIGlzIHRoZSBoaWdoZXN0IGxhbmd1YWdlIGxldmVsIHRoaXMgZmlsZSBkZXRlY3RzCiAqIHRoZSBjdXJyZW50IGVudmlyb25tZW50IHN1cHBvcnRzLiBHZW5lcmFsbHkgdGhpcyBmbGFnIHNob3VsZCBub3QgYmUgc2V0LCBidXQKICogaXQgY291bGQgYmUgdXNlZnVsIHRvIG92ZXJyaWRlLiBFeGFtcGxlOiBJZiB0aGUgY3VycmVudCBlbnZpcm9ubWVudCBzdXBwb3J0cwogKiBFUzYgdGhlbiBieSBkZWZhdWx0IEVTNysgZmlsZXMgd2lsbCBiZSB0cmFuc3BpbGVkIHRvIEVTNiwgdW5sZXNzIHRoaXMgaXMKICogb3ZlcnJpZGRlbi4KICoKICogVmFsaWQgdmFsdWVzIGluY2x1ZGU6IGVzMywgZXM1LCBlczYsIGVzNywgYW5kIGVzOC4gQW55dGhpbmcgbm90IHJlY29nbml6ZWQKICogaXMgdHJlYXRlZCBhcyBlczMuCiAqCiAqIE5vdGUgdGhhdCBzZXR0aW5nIHRoaXMgdmFsdWUgZG9lcyBub3QgZm9yY2UgdHJhbnNwaWxhdGlvbi4gSnVzdCBpZgogKiB0cmFuc3BpbGF0aW9uIG9jY3VycyB0aGlzIHdpbGwgYmUgdGhlIG91dHB1dC4gU28gdGhpcyBpcyBtb3N0IHVzZWZ1bCB3aGVuCiAqIGdvb2cuVFJBTlNQSUxFIGlzIHNldCB0byAnYWx3YXlzJyBhbmQgdGhlbiBmb3JjaW5nIHRoZSBsYW5ndWFnZSBsZXZlbCB0byBiZQogKiBzb21ldGhpbmcgbG93ZXIgdGhhbiB3aGF0IHRoZSBlbnZpcm9ubWVudCBkZXRlY3RzLgogKi8KZ29vZy5UUkFOU1BJTEVfVE9fTEFOR1VBR0UgPSBnb29nLmRlZmluZSgnZ29vZy5UUkFOU1BJTEVfVE9fTEFOR1VBR0UnLCAnJyk7CgoKLyoqCiAqIEBkZWZpbmUge3N0cmluZ30gUGF0aCB0byB0aGUgdHJhbnNwaWxlci4gIEV4ZWN1dGluZyB0aGUgc2NyaXB0IGF0IHRoaXMKICogcGF0aCAocmVsYXRpdmUgdG8gYmFzZS5qcykgc2hvdWxkIGRlZmluZSBhIGZ1bmN0aW9uICRqc2NvbXAudHJhbnNwaWxlLgogKi8KZ29vZy5UUkFOU1BJTEVSID0gZ29vZy5kZWZpbmUoJ2dvb2cuVFJBTlNQSUxFUicsICd0cmFuc3BpbGUuanMnKTsKCgovKioKICogQHBhY2thZ2Ugez9ib29sZWFufQogKiBWaXNpYmxlIGZvciB0ZXN0aW5nLgogKi8KZ29vZy5oYXNCYWRMZXRTY29waW5nID0gbnVsbDsKCgovKioKICogQHJldHVybiB7Ym9vbGVhbn0KICogQHBhY2thZ2UgVmlzaWJsZSBmb3IgdGVzdGluZy4KICovCmdvb2cudXNlU2FmYXJpMTBXb3JrYXJvdW5kID0gZnVuY3Rpb24oKSB7CiAgaWYgKGdvb2cuaGFzQmFkTGV0U2NvcGluZyA9PSBudWxsKSB7CiAgICB2YXIgaGFzQmFkTGV0U2NvcGluZzsKICAgIHRyeSB7CiAgICAgIGhhc0JhZExldFNjb3BpbmcgPSAhZXZhbCgKICAgICAgICAgICcidXNlIHN0cmljdCI7JyArCiAgICAgICAgICAnbGV0IHggPSAxOyBmdW5jdGlvbiBmKCkgeyByZXR1cm4gdHlwZW9mIHg7IH07JyArCiAgICAgICAgICAnZigpID09ICJudW1iZXIiOycpOwogICAgfSBjYXRjaCAoZSkgewogICAgICAvLyBBc3N1bWUgdGhhdCBFUzYgc3ludGF4IGlzbid0IHN1cHBvcnRlZC4KICAgICAgaGFzQmFkTGV0U2NvcGluZyA9IGZhbHNlOwogICAgfQogICAgZ29vZy5oYXNCYWRMZXRTY29waW5nID0gaGFzQmFkTGV0U2NvcGluZzsKICB9CiAgcmV0dXJuIGdvb2cuaGFzQmFkTGV0U2NvcGluZzsKfTsKCgovKioKICogQHBhcmFtIHtzdHJpbmd9IG1vZHVsZURlZgogKiBAcmV0dXJuIHtzdHJpbmd9CiAqIEBwYWNrYWdlIFZpc2libGUgZm9yIHRlc3RpbmcuCiAqLwpnb29nLndvcmthcm91bmRTYWZhcmkxMEV2YWxCdWcgPSBmdW5jdGlvbihtb2R1bGVEZWYpIHsKICByZXR1cm4gJyhmdW5jdGlvbigpeycgKyBtb2R1bGVEZWYgKwogICAgICAnXG4nICsgIC8vIFRlcm1pbmF0ZSBhbnkgdHJhaWxpbmcgc2luZ2xlIGxpbmUgY29tbWVudC4KICAgICAgJzsnICsgICAvLyBUZXJtaW5hdGUgYW55IHRyYWlsaW5nIGV4cHJlc3Npb24uCiAgICAgICd9KSgpO1xuJzsKfTsKCgovKioKICogQHBhcmFtIHtmdW5jdGlvbig/KTo/fHN0cmluZ30gbW9kdWxlRGVmIFRoZSBtb2R1bGUgZGVmaW5pdGlvbi4KICovCmdvb2cubG9hZE1vZHVsZSA9IGZ1bmN0aW9uKG1vZHVsZURlZikgewogIC8vIE5PVEU6IHdlIGFsbG93IGZ1bmN0aW9uIGRlZmluaXRpb25zIHRvIGJlIGVpdGhlciBpbiB0aGUgZnJvbQogIC8vIG9mIGEgc3RyaW5nIHRvIGV2YWwgKHdoaWNoIGtlZXBzIHRoZSBvcmlnaW5hbCBzb3VyY2UgaW50YWN0KSBvcgogIC8vIGluIGEgZXZhbCBmb3JiaWRkZW4gZW52aXJvbm1lbnQgKENTUCkgd2UgYWxsb3cgYSBmdW5jdGlvbiBkZWZpbml0aW9uCiAgLy8gd2hpY2ggaW4gaXRzIGJvZHkgbXVzdCBjYWxsIGBnb29nLm1vZHVsZWAsIGFuZCByZXR1cm4gdGhlIGV4cG9ydHMKICAvLyBvZiB0aGUgbW9kdWxlLgogIHZhciBwcmV2aW91c1N0YXRlID0gZ29vZy5tb2R1bGVMb2FkZXJTdGF0ZV87CiAgdHJ5IHsKICAgIGdvb2cubW9kdWxlTG9hZGVyU3RhdGVfID0gewogICAgICBtb2R1bGVOYW1lOiAnJywKICAgICAgZGVjbGFyZUxlZ2FjeU5hbWVzcGFjZTogZmFsc2UsCiAgICAgIHR5cGU6IGdvb2cuTW9kdWxlVHlwZS5HT09HCiAgICB9OwogICAgdmFyIGV4cG9ydHM7CiAgICBpZiAoZ29vZy5pc0Z1bmN0aW9uKG1vZHVsZURlZikpIHsKICAgICAgZXhwb3J0cyA9IG1vZHVsZURlZi5jYWxsKHVuZGVmaW5lZCwge30pOwogICAgfSBlbHNlIGlmICh0eXBlb2YgbW9kdWxlRGVmID09PSAnc3RyaW5nJykgewogICAgICBpZiAoZ29vZy51c2VTYWZhcmkxMFdvcmthcm91bmQoKSkgewogICAgICAgIG1vZHVsZURlZiA9IGdvb2cud29ya2Fyb3VuZFNhZmFyaTEwRXZhbEJ1Zyhtb2R1bGVEZWYpOwogICAgICB9CgogICAgICBleHBvcnRzID0gZ29vZy5sb2FkTW9kdWxlRnJvbVNvdXJjZV8uY2FsbCh1bmRlZmluZWQsIG1vZHVsZURlZik7CiAgICB9IGVsc2UgewogICAgICB0aHJvdyBuZXcgRXJyb3IoJ0ludmFsaWQgbW9kdWxlIGRlZmluaXRpb24nKTsKICAgIH0KCiAgICB2YXIgbW9kdWxlTmFtZSA9IGdvb2cubW9kdWxlTG9hZGVyU3RhdGVfLm1vZHVsZU5hbWU7CiAgICBpZiAodHlwZW9mIG1vZHVsZU5hbWUgPT09ICdzdHJpbmcnICYmIG1vZHVsZU5hbWUpIHsKICAgICAgLy8gRG9uJ3Qgc2VhbCBsZWdhY3kgbmFtZXNwYWNlcyBhcyB0aGV5IG1heSBiZSB1c2VkIGFzIGEgcGFyZW50IG9mCiAgICAgIC8vIGFub3RoZXIgbmFtZXNwYWNlCiAgICAgIGlmIChnb29nLm1vZHVsZUxvYWRlclN0YXRlXy5kZWNsYXJlTGVnYWN5TmFtZXNwYWNlKSB7CiAgICAgICAgZ29vZy5jb25zdHJ1Y3ROYW1lc3BhY2VfKG1vZHVsZU5hbWUsIGV4cG9ydHMpOwogICAgICB9IGVsc2UgaWYgKAogICAgICAgICAgZ29vZy5TRUFMX01PRFVMRV9FWFBPUlRTICYmIE9iamVjdC5zZWFsICYmCiAgICAgICAgICB0eXBlb2YgZXhwb3J0cyA9PSAnb2JqZWN0JyAmJiBleHBvcnRzICE9IG51bGwpIHsKICAgICAgICBPYmplY3Quc2VhbChleHBvcnRzKTsKICAgICAgfQoKICAgICAgdmFyIGRhdGEgPSB7CiAgICAgICAgZXhwb3J0czogZXhwb3J0cywKICAgICAgICB0eXBlOiBnb29nLk1vZHVsZVR5cGUuR09PRywKICAgICAgICBtb2R1bGVJZDogZ29vZy5tb2R1bGVMb2FkZXJTdGF0ZV8ubW9kdWxlTmFtZQogICAgICB9OwogICAgICBnb29nLmxvYWRlZE1vZHVsZXNfW21vZHVsZU5hbWVdID0gZGF0YTsKICAgIH0gZWxzZSB7CiAgICAgIHRocm93IG5ldyBFcnJvcignSW52YWxpZCBtb2R1bGUgbmFtZSBcIicgKyBtb2R1bGVOYW1lICsgJ1wiJyk7CiAgICB9CiAgfSBmaW5hbGx5IHsKICAgIGdvb2cubW9kdWxlTG9hZGVyU3RhdGVfID0gcHJldmlvdXNTdGF0ZTsKICB9Cn07CgoKLyoqCiAqIEBwcml2YXRlIEBjb25zdAogKi8KZ29vZy5sb2FkTW9kdWxlRnJvbVNvdXJjZV8gPSAvKiogQHR5cGUge2Z1bmN0aW9uKHN0cmluZyk6P30gKi8gKGZ1bmN0aW9uKCkgewogIC8vIE5PVEU6IHdlIGF2b2lkIGRlY2xhcmluZyBwYXJhbWV0ZXJzIG9yIGxvY2FsIHZhcmlhYmxlcyBoZXJlIHRvIGF2b2lkCiAgLy8gbWFza2luZyBnbG9iYWxzIG9yIGxlYWtpbmcgdmFsdWVzIGludG8gdGhlIG1vZHVsZSBkZWZpbml0aW9uLgogICd1c2Ugc3RyaWN0JzsKICB2YXIgZXhwb3J0cyA9IHt9OwogIGV2YWwoYXJndW1lbnRzWzBdKTsKICByZXR1cm4gZXhwb3J0czsKfSk7CgoKLyoqCiAqIE5vcm1hbGl6ZSBhIGZpbGUgcGF0aCBieSByZW1vdmluZyByZWR1bmRhbnQgIi4uIiBhbmQgZXh0cmFuZW91cyAiLiIgZmlsZQogKiBwYXRoIGNvbXBvbmVudHMuCiAqIEBwYXJhbSB7c3RyaW5nfSBwYXRoCiAqIEByZXR1cm4ge3N0cmluZ30KICogQHByaXZhdGUKICovCmdvb2cubm9ybWFsaXplUGF0aF8gPSBmdW5jdGlvbihwYXRoKSB7CiAgdmFyIGNvbXBvbmVudHMgPSBwYXRoLnNwbGl0KCcvJyk7CiAgdmFyIGkgPSAwOwogIHdoaWxlIChpIDwgY29tcG9uZW50cy5sZW5ndGgpIHsKICAgIGlmIChjb21wb25lbnRzW2ldID09ICcuJykgewogICAgICBjb21wb25lbnRzLnNwbGljZShpLCAxKTsKICAgIH0gZWxzZSBpZiAoCiAgICAgICAgaSAmJiBjb21wb25lbnRzW2ldID09ICcuLicgJiYgY29tcG9uZW50c1tpIC0gMV0gJiYKICAgICAgICBjb21wb25lbnRzW2kgLSAxXSAhPSAnLi4nKSB7CiAgICAgIGNvbXBvbmVudHMuc3BsaWNlKC0taSwgMik7CiAgICB9IGVsc2UgewogICAgICBpKys7CiAgICB9CiAgfQogIHJldHVybiBjb21wb25lbnRzLmpvaW4oJy8nKTsKfTsKCgovKioKICogUHJvdmlkZXMgYSBob29rIGZvciBsb2FkaW5nIGEgZmlsZSB3aGVuIHVzaW5nIENsb3N1cmUncyBnb29nLnJlcXVpcmUoKSBBUEkKICogd2l0aCBnb29nLm1vZHVsZXMuICBJbiBwYXJ0aWN1bGFyIHRoaXMgaG9vayBpcyBwcm92aWRlZCB0byBzdXBwb3J0IE5vZGUuanMuCiAqCiAqIEB0eXBlIHsoZnVuY3Rpb24oc3RyaW5nKTpzdHJpbmcpfHVuZGVmaW5lZH0KICovCmdvb2cuZ2xvYmFsLkNMT1NVUkVfTE9BRF9GSUxFX1NZTkM7CgoKLyoqCiAqIExvYWRzIGZpbGUgYnkgc3luY2hyb25vdXMgWEhSLiBTaG91bGQgbm90IGJlIHVzZWQgaW4gcHJvZHVjdGlvbiBlbnZpcm9ubWVudHMuCiAqIEBwYXJhbSB7c3RyaW5nfSBzcmMgU291cmNlIFVSTC4KICogQHJldHVybiB7P3N0cmluZ30gRmlsZSBjb250ZW50cywgb3IgbnVsbCBpZiBsb2FkIGZhaWxlZC4KICogQHByaXZhdGUKICovCmdvb2cubG9hZEZpbGVTeW5jXyA9IGZ1bmN0aW9uKHNyYykgewogIGlmIChnb29nLmdsb2JhbC5DTE9TVVJFX0xPQURfRklMRV9TWU5DKSB7CiAgICByZXR1cm4gZ29vZy5nbG9iYWwuQ0xPU1VSRV9MT0FEX0ZJTEVfU1lOQyhzcmMpOwogIH0gZWxzZSB7CiAgICB0cnkgewogICAgICAvKiogQHR5cGUge1hNTEh0dHBSZXF1ZXN0fSAqLwogICAgICB2YXIgeGhyID0gbmV3IGdvb2cuZ2xvYmFsWydYTUxIdHRwUmVxdWVzdCddKCk7CiAgICAgIHhoci5vcGVuKCdnZXQnLCBzcmMsIGZhbHNlKTsKICAgICAgeGhyLnNlbmQoKTsKICAgICAgLy8gTk9URTogU3VjY2Vzc2Z1bCBodHRwOiByZXF1ZXN0cyBoYXZlIGEgc3RhdHVzIG9mIDIwMCwgYnV0IHN1Y2Nlc3NmdWwKICAgICAgLy8gZmlsZTogcmVxdWVzdHMgbWF5IGhhdmUgYSBzdGF0dXMgb2YgemVyby4gIEFueSBvdGhlciBzdGF0dXMsIG9yIGEKICAgICAgLy8gdGhyb3duIGV4Y2VwdGlvbiAocGFydGljdWxhcmx5IGluIGNhc2Ugb2YgZmlsZTogcmVxdWVzdHMpIGluZGljYXRlcwogICAgICAvLyBzb21lIHNvcnQgb2YgZXJyb3IsIHdoaWNoIHdlIHRyZWF0IGFzIGEgbWlzc2luZyBvciB1bmF2YWlsYWJsZSBmaWxlLgogICAgICByZXR1cm4geGhyLnN0YXR1cyA9PSAwIHx8IHhoci5zdGF0dXMgPT0gMjAwID8geGhyLnJlc3BvbnNlVGV4dCA6IG51bGw7CiAgICB9IGNhdGNoIChlcnIpIHsKICAgICAgLy8gTm8gbmVlZCB0byByZXRocm93IG9yIGxvZywgc2luY2UgZXJyb3JzIHNob3VsZCBzaG93IHVwIG9uIHRoZWlyIG93bi4KICAgICAgcmV0dXJuIG51bGw7CiAgICB9CiAgfQp9OwoKCi8qKgogKiBMYXppbHkgcmV0cmlldmVzIHRoZSB0cmFuc3BpbGVyIGFuZCBhcHBsaWVzIGl0IHRvIHRoZSBzb3VyY2UuCiAqIEBwYXJhbSB7c3RyaW5nfSBjb2RlIEpTIGNvZGUuCiAqIEBwYXJhbSB7c3RyaW5nfSBwYXRoIFBhdGggdG8gdGhlIGNvZGUuCiAqIEBwYXJhbSB7c3RyaW5nfSB0YXJnZXQgTGFuZ3VhZ2UgbGV2ZWwgb3V0cHV0LgogKiBAcmV0dXJuIHtzdHJpbmd9IFRoZSB0cmFuc3BpbGVkIGNvZGUuCiAqIEBwcml2YXRlCiAqLwpnb29nLnRyYW5zcGlsZV8gPSBmdW5jdGlvbihjb2RlLCBwYXRoLCB0YXJnZXQpIHsKICB2YXIganNjb21wID0gZ29vZy5nbG9iYWxbJyRqc2NvbXAnXTsKICBpZiAoIWpzY29tcCkgewogICAgZ29vZy5nbG9iYWxbJyRqc2NvbXAnXSA9IGpzY29tcCA9IHt9OwogIH0KICB2YXIgdHJhbnNwaWxlID0ganNjb21wLnRyYW5zcGlsZTsKICBpZiAoIXRyYW5zcGlsZSkgewogICAgdmFyIHRyYW5zcGlsZXJQYXRoID0gZ29vZy5iYXNlUGF0aCArIGdvb2cuVFJBTlNQSUxFUjsKICAgIHZhciB0cmFuc3BpbGVyQ29kZSA9IGdvb2cubG9hZEZpbGVTeW5jXyh0cmFuc3BpbGVyUGF0aCk7CiAgICBpZiAodHJhbnNwaWxlckNvZGUpIHsKICAgICAgLy8gVGhpcyBtdXN0IGJlIGV4ZWN1dGVkIHN5bmNocm9ub3VzbHksIHNpbmNlIGJ5IHRoZSB0aW1lIHdlIGtub3cgd2UKICAgICAgLy8gbmVlZCBpdCwgd2UncmUgYWJvdXQgdG8gbG9hZCBhbmQgd3JpdGUgdGhlIEVTNiBjb2RlIHN5bmNocm9ub3VzbHksCiAgICAgIC8vIHNvIGEgbm9ybWFsIHNjcmlwdC10YWcgbG9hZCB3aWxsIGJlIHRvbyBzbG93LiBXcmFwcGVkIGluIGEgZnVuY3Rpb24KICAgICAgLy8gc28gdGhhdCBjb2RlIGlzIGV2YWwnZCBpbiB0aGUgZ2xvYmFsIHNjb3BlLgogICAgICAoZnVuY3Rpb24oKSB7CiAgICAgICAgKDAsIGV2YWwpKHRyYW5zcGlsZXJDb2RlICsgJ1xuLy8jIHNvdXJjZVVSTD0nICsgdHJhbnNwaWxlclBhdGgpOwogICAgICB9KS5jYWxsKGdvb2cuZ2xvYmFsKTsKICAgICAgLy8gRXZlbiB0aG91Z2ggdGhlIHRyYW5zcGlsZXIgaXMgb3B0aW9uYWwsIGlmICRnd3RFeHBvcnQgaXMgZm91bmQsIGl0J3MKICAgICAgLy8gYSBzaWduIHRoZSB0cmFuc3BpbGVyIHdhcyBsb2FkZWQgYW5kIHRoZSAkanNjb21wLnRyYW5zcGlsZSAqc2hvdWxkKgogICAgICAvLyBiZSB0aGVyZS4KICAgICAgaWYgKGdvb2cuZ2xvYmFsWyckZ3d0RXhwb3J0J10gJiYgZ29vZy5nbG9iYWxbJyRnd3RFeHBvcnQnXVsnJGpzY29tcCddICYmCiAgICAgICAgICAhZ29vZy5nbG9iYWxbJyRnd3RFeHBvcnQnXVsnJGpzY29tcCddWyd0cmFuc3BpbGUnXSkgewogICAgICAgIHRocm93IG5ldyBFcnJvcigKICAgICAgICAgICAgJ1RoZSB0cmFuc3BpbGVyIGRpZCBub3QgcHJvcGVybHkgZXhwb3J0IHRoZSAidHJhbnNwaWxlIiAnICsKICAgICAgICAgICAgJ21ldGhvZC4gJGd3dEV4cG9ydDogJyArIEpTT04uc3RyaW5naWZ5KGdvb2cuZ2xvYmFsWyckZ3d0RXhwb3J0J10pKTsKICAgICAgfQogICAgICAvLyB0cmFuc3BpbGUuanMgb25seSBleHBvcnRzIGEgc2luZ2xlICRqc2NvbXAgZnVuY3Rpb24sIHRyYW5zcGlsZS4gV2UKICAgICAgLy8gZ3JhYiBqdXN0IHRoYXQgYW5kIGFkZCBpdCB0byB0aGUgZXhpc3RpbmcgZGVmaW5pdGlvbiBvZiAkanNjb21wIHdoaWNoCiAgICAgIC8vIGNvbnRhaW5zIHRoZSBwb2x5ZmlsbHMuCiAgICAgIGdvb2cuZ2xvYmFsWyckanNjb21wJ10udHJhbnNwaWxlID0KICAgICAgICAgIGdvb2cuZ2xvYmFsWyckZ3d0RXhwb3J0J11bJyRqc2NvbXAnXVsndHJhbnNwaWxlJ107CiAgICAgIGpzY29tcCA9IGdvb2cuZ2xvYmFsWyckanNjb21wJ107CiAgICAgIHRyYW5zcGlsZSA9IGpzY29tcC50cmFuc3BpbGU7CiAgICB9CiAgfQogIGlmICghdHJhbnNwaWxlKSB7CiAgICAvLyBUaGUgdHJhbnNwaWxlciBpcyBhbiBvcHRpb25hbCBjb21wb25lbnQuICBJZiBpdCdzIG5vdCBhdmFpbGFibGUgdGhlbgogICAgLy8gcmVwbGFjZSBpdCB3aXRoIGEgcGFzcy10aHJvdWdoIGZ1bmN0aW9uIHRoYXQgc2ltcGx5IGxvZ3MuCiAgICB2YXIgc3VmZml4ID0gJyByZXF1aXJlcyB0cmFuc3BpbGF0aW9uIGJ1dCBubyB0cmFuc3BpbGVyIHdhcyBmb3VuZC4nOwogICAgdHJhbnNwaWxlID0ganNjb21wLnRyYW5zcGlsZSA9IGZ1bmN0aW9uKGNvZGUsIHBhdGgpIHsKICAgICAgLy8gVE9ETyhzZGgpOiBmaWd1cmUgb3V0IHNvbWUgd2F5IHRvIGdldCB0aGlzIGVycm9yIHRvIHNob3cgdXAKICAgICAgLy8gaW4gdGVzdCByZXN1bHRzLCBub3RpbmcgdGhhdCB0aGUgZmFpbHVyZSBtYXkgb2NjdXIgaW4gbWFueQogICAgICAvLyBkaWZmZXJlbnQgd2F5cywgaW5jbHVkaW5nIGluIGxvYWRNb2R1bGUoKSBiZWZvcmUgdGhlIHRlc3QKICAgICAgLy8gcnVubmVyIGV2ZW4gY29tZXMgdXAuCiAgICAgIGdvb2cubG9nVG9Db25zb2xlXyhwYXRoICsgc3VmZml4KTsKICAgICAgcmV0dXJuIGNvZGU7CiAgICB9OwogIH0KICAvLyBOb3RlOiBhbnkgdHJhbnNwaWxhdGlvbiBlcnJvcnMvd2FybmluZ3Mgd2lsbCBiZSBsb2dnZWQgdG8gdGhlIGNvbnNvbGUuCiAgcmV0dXJuIHRyYW5zcGlsZShjb2RlLCBwYXRoLCB0YXJnZXQpOwp9OwoKLy89PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLy8gTGFuZ3VhZ2UgRW5oYW5jZW1lbnRzCi8vPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CgoKLyoqCiAqIFRoaXMgaXMgYSAiZml4ZWQiIHZlcnNpb24gb2YgdGhlIHR5cGVvZiBvcGVyYXRvci4gIEl0IGRpZmZlcnMgZnJvbSB0aGUgdHlwZW9mCiAqIG9wZXJhdG9yIGluIHN1Y2ggYSB3YXkgdGhhdCBudWxsIHJldHVybnMgJ251bGwnIGFuZCBhcnJheXMgcmV0dXJuICdhcnJheScuCiAqIEBwYXJhbSB7P30gdmFsdWUgVGhlIHZhbHVlIHRvIGdldCB0aGUgdHlwZSBvZi4KICogQHJldHVybiB7c3RyaW5nfSBUaGUgbmFtZSBvZiB0aGUgdHlwZS4KICovCmdvb2cudHlwZU9mID0gZnVuY3Rpb24odmFsdWUpIHsKICB2YXIgcyA9IHR5cGVvZiB2YWx1ZTsKICBpZiAocyA9PSAnb2JqZWN0JykgewogICAgaWYgKHZhbHVlKSB7CiAgICAgIC8vIENoZWNrIHRoZXNlIGZpcnN0LCBzbyB3ZSBjYW4gYXZvaWQgY2FsbGluZyBPYmplY3QucHJvdG90eXBlLnRvU3RyaW5nIGlmCiAgICAgIC8vIHBvc3NpYmxlLgogICAgICAvLwogICAgICAvLyBJRSBpbXByb3Blcmx5IG1hcnNoYWxzIHR5cGVvZiBhY3Jvc3MgZXhlY3V0aW9uIGNvbnRleHRzLCBidXQgYQogICAgICAvLyBjcm9zcy1jb250ZXh0IG9iamVjdCB3aWxsIHN0aWxsIHJldHVybiBmYWxzZSBmb3IgImluc3RhbmNlb2YgT2JqZWN0Ii4KICAgICAgaWYgKHZhbHVlIGluc3RhbmNlb2YgQXJyYXkpIHsKICAgICAgICByZXR1cm4gJ2FycmF5JzsKICAgICAgfSBlbHNlIGlmICh2YWx1ZSBpbnN0YW5jZW9mIE9iamVjdCkgewogICAgICAgIHJldHVybiBzOwogICAgICB9CgogICAgICAvLyBIQUNLOiBJbiBvcmRlciB0byB1c2UgYW4gT2JqZWN0IHByb3RvdHlwZSBtZXRob2Qgb24gdGhlIGFyYml0cmFyeQogICAgICAvLyAgIHZhbHVlLCB0aGUgY29tcGlsZXIgcmVxdWlyZXMgdGhlIHZhbHVlIGJlIGNhc3QgdG8gdHlwZSBPYmplY3QsCiAgICAgIC8vICAgZXZlbiB0aG91Z2ggdGhlIEVDTUEgc3BlYyBleHBsaWNpdGx5IGFsbG93cyBpdC4KICAgICAgdmFyIGNsYXNzTmFtZSA9IE9iamVjdC5wcm90b3R5cGUudG9TdHJpbmcuY2FsbCgKICAgICAgICAgIC8qKiBAdHlwZSB7IU9iamVjdH0gKi8gKHZhbHVlKSk7CiAgICAgIC8vIEluIEZpcmVmb3ggMy42LCBhdHRlbXB0aW5nIHRvIGFjY2VzcyBpZnJhbWUgd2luZG93IG9iamVjdHMnIGxlbmd0aAogICAgICAvLyBwcm9wZXJ0eSB0aHJvd3MgYW4gTlNfRVJST1JfRkFJTFVSRSwgc28gd2UgbmVlZCB0byBzcGVjaWFsLWNhc2UgaXQKICAgICAgLy8gaGVyZS4KICAgICAgaWYgKGNsYXNzTmFtZSA9PSAnW29iamVjdCBXaW5kb3ddJykgewogICAgICAgIHJldHVybiAnb2JqZWN0JzsKICAgICAgfQoKICAgICAgLy8gV2UgY2Fubm90IGFsd2F5cyB1c2UgY29uc3RydWN0b3IgPT0gQXJyYXkgb3IgaW5zdGFuY2VvZiBBcnJheSBiZWNhdXNlCiAgICAgIC8vIGRpZmZlcmVudCBmcmFtZXMgaGF2ZSBkaWZmZXJlbnQgQXJyYXkgb2JqZWN0cy4gSW4gSUU2LCBpZiB0aGUgaWZyYW1lCiAgICAgIC8vIHdoZXJlIHRoZSBhcnJheSB3YXMgY3JlYXRlZCBpcyBkZXN0cm95ZWQsIHRoZSBhcnJheSBsb3NlcyBpdHMKICAgICAgLy8gcHJvdG90eXBlLiBUaGVuIGRlcmVmZXJlbmNpbmcgdmFsLnNwbGljZSBoZXJlIHRocm93cyBhbiBleGNlcHRpb24sIHNvCiAgICAgIC8vIHdlIGNhbid0IHVzZSBnb29nLmlzRnVuY3Rpb24uIENhbGxpbmcgdHlwZW9mIGRpcmVjdGx5IHJldHVybnMgJ3Vua25vd24nCiAgICAgIC8vIHNvIHRoYXQgd2lsbCB3b3JrLiBJbiB0aGlzIGNhc2UsIHRoaXMgZnVuY3Rpb24gd2lsbCByZXR1cm4gZmFsc2UgYW5kCiAgICAgIC8vIG1vc3QgYXJyYXkgZnVuY3Rpb25zIHdpbGwgc3RpbGwgd29yayBiZWNhdXNlIHRoZSBhcnJheSBpcyBzdGlsbAogICAgICAvLyBhcnJheS1saWtlIChzdXBwb3J0cyBsZW5ndGggYW5kIFtdKSBldmVuIHRob3VnaCBpdCBoYXMgbG9zdCBpdHMKICAgICAgLy8gcHJvdG90eXBlLgogICAgICAvLyBNYXJrIE1pbGxlciBub3RpY2VkIHRoYXQgT2JqZWN0LnByb3RvdHlwZS50b1N0cmluZwogICAgICAvLyBhbGxvd3MgYWNjZXNzIHRvIHRoZSB1bmZvcmdlYWJsZSBbW0NsYXNzXV0gcHJvcGVydHkuCiAgICAgIC8vICAxNS4yLjQuMiBPYmplY3QucHJvdG90eXBlLnRvU3RyaW5nICggKQogICAgICAvLyAgV2hlbiB0aGUgdG9TdHJpbmcgbWV0aG9kIGlzIGNhbGxlZCwgdGhlIGZvbGxvd2luZyBzdGVwcyBhcmUgdGFrZW46CiAgICAgIC8vICAgICAgMS4gR2V0IHRoZSBbW0NsYXNzXV0gcHJvcGVydHkgb2YgdGhpcyBvYmplY3QuCiAgICAgIC8vICAgICAgMi4gQ29tcHV0ZSBhIHN0cmluZyB2YWx1ZSBieSBjb25jYXRlbmF0aW5nIHRoZSB0aHJlZSBzdHJpbmdzCiAgICAgIC8vICAgICAgICAgIltvYmplY3QgIiwgUmVzdWx0KDEpLCBhbmQgIl0iLgogICAgICAvLyAgICAgIDMuIFJldHVybiBSZXN1bHQoMikuCiAgICAgIC8vIGFuZCB0aGlzIGJlaGF2aW9yIHN1cnZpdmVzIHRoZSBkZXN0cnVjdGlvbiBvZiB0aGUgZXhlY3V0aW9uIGNvbnRleHQuCiAgICAgIGlmICgoY2xhc3NOYW1lID09ICdbb2JqZWN0IEFycmF5XScgfHwKICAgICAgICAgICAvLyBJbiBJRSBhbGwgbm9uIHZhbHVlIHR5cGVzIGFyZSB3cmFwcGVkIGFzIG9iamVjdHMgYWNyb3NzIHdpbmRvdwogICAgICAgICAgIC8vIGJvdW5kYXJpZXMgKG5vdCBpZnJhbWUgdGhvdWdoKSBzbyB3ZSBoYXZlIHRvIGRvIG9iamVjdCBkZXRlY3Rpb24KICAgICAgICAgICAvLyBmb3IgdGhpcyBlZGdlIGNhc2UuCiAgICAgICAgICAgdHlwZW9mIHZhbHVlLmxlbmd0aCA9PSAnbnVtYmVyJyAmJgogICAgICAgICAgICAgICB0eXBlb2YgdmFsdWUuc3BsaWNlICE9ICd1bmRlZmluZWQnICYmCiAgICAgICAgICAgICAgIHR5cGVvZiB2YWx1ZS5wcm9wZXJ0eUlzRW51bWVyYWJsZSAhPSAndW5kZWZpbmVkJyAmJgogICAgICAgICAgICAgICAhdmFsdWUucHJvcGVydHlJc0VudW1lcmFibGUoJ3NwbGljZScpCgogICAgICAgICAgICAgICApKSB7CiAgICAgICAgcmV0dXJuICdhcnJheSc7CiAgICAgIH0KICAgICAgLy8gSEFDSzogVGhlcmUgaXMgc3RpbGwgYW4gYXJyYXkgY2FzZSB0aGF0IGZhaWxzLgogICAgICAvLyAgICAgZnVuY3Rpb24gQXJyYXlJbXBvc3RvcigpIHt9CiAgICAgIC8vICAgICBBcnJheUltcG9zdG9yLnByb3RvdHlwZSA9IFtdOwogICAgICAvLyAgICAgdmFyIGltcG9zdG9yID0gbmV3IEFycmF5SW1wb3N0b3I7CiAgICAgIC8vIHRoaXMgY2FuIGJlIGZpeGVkIGJ5IGdldHRpbmcgcmlkIG9mIHRoZSBmYXN0IHBhdGgKICAgICAgLy8gKHZhbHVlIGluc3RhbmNlb2YgQXJyYXkpIGFuZCBzb2xlbHkgcmVseWluZyBvbgogICAgICAvLyAodmFsdWUgJiYgT2JqZWN0LnByb3RvdHlwZS50b1N0cmluZy52YWxsKHZhbHVlKSA9PT0gJ1tvYmplY3QgQXJyYXldJykKICAgICAgLy8gYnV0IHRoYXQgd291bGQgcmVxdWlyZSBtYW55IG1vcmUgZnVuY3Rpb24gY2FsbHMgYW5kIGlzIG5vdCB3YXJyYW50ZWQKICAgICAgLy8gdW5sZXNzIGNsb3N1cmUgY29kZSBpcyByZWNlaXZpbmcgb2JqZWN0cyBmcm9tIHVudHJ1c3RlZCBzb3VyY2VzLgoKICAgICAgLy8gSUUgaW4gY3Jvc3Mtd2luZG93IGNhbGxzIGRvZXMgbm90IGNvcnJlY3RseSBtYXJzaGFsIHRoZSBmdW5jdGlvbiB0eXBlCiAgICAgIC8vIChpdCBhcHBlYXJzIGp1c3QgYXMgYW4gb2JqZWN0KSBzbyB3ZSBjYW5ub3QgdXNlIGp1c3QgdHlwZW9mIHZhbCA9PQogICAgICAvLyAnZnVuY3Rpb24nLiBIb3dldmVyLCBpZiB0aGUgb2JqZWN0IGhhcyBhIGNhbGwgcHJvcGVydHksIGl0IGlzIGEKICAgICAgLy8gZnVuY3Rpb24uCiAgICAgIGlmICgoY2xhc3NOYW1lID09ICdbb2JqZWN0IEZ1bmN0aW9uXScgfHwKICAgICAgICAgICB0eXBlb2YgdmFsdWUuY2FsbCAhPSAndW5kZWZpbmVkJyAmJgogICAgICAgICAgICAgICB0eXBlb2YgdmFsdWUucHJvcGVydHlJc0VudW1lcmFibGUgIT0gJ3VuZGVmaW5lZCcgJiYKICAgICAgICAgICAgICAgIXZhbHVlLnByb3BlcnR5SXNFbnVtZXJhYmxlKCdjYWxsJykpKSB7CiAgICAgICAgcmV0dXJuICdmdW5jdGlvbic7CiAgICAgIH0KCiAgICB9IGVsc2UgewogICAgICByZXR1cm4gJ251bGwnOwogICAgfQoKICB9IGVsc2UgaWYgKHMgPT0gJ2Z1bmN0aW9uJyAmJiB0eXBlb2YgdmFsdWUuY2FsbCA9PSAndW5kZWZpbmVkJykgewogICAgLy8gSW4gU2FmYXJpIHR5cGVvZiBub2RlTGlzdCByZXR1cm5zICdmdW5jdGlvbicsIGFuZCBvbiBGaXJlZm94IHR5cGVvZgogICAgLy8gYmVoYXZlcyBzaW1pbGFybHkgZm9yIEhUTUx7QXBwbGV0LEVtYmVkLE9iamVjdH0sIEVsZW1lbnRzIGFuZCBSZWdFeHBzLiBXZQogICAgLy8gd291bGQgbGlrZSB0byByZXR1cm4gb2JqZWN0IGZvciB0aG9zZSBhbmQgd2UgY2FuIGRldGVjdCBhbiBpbnZhbGlkCiAgICAvLyBmdW5jdGlvbiBieSBtYWtpbmcgc3VyZSB0aGF0IHRoZSBmdW5jdGlvbiBvYmplY3QgaGFzIGEgY2FsbCBtZXRob2QuCiAgICByZXR1cm4gJ29iamVjdCc7CiAgfQogIHJldHVybiBzOwp9OwoKCi8qKgogKiBSZXR1cm5zIHRydWUgaWYgdGhlIHNwZWNpZmllZCB2YWx1ZSBpcyBudWxsLgogKiBAcGFyYW0gez99IHZhbCBWYXJpYWJsZSB0byB0ZXN0LgogKiBAcmV0dXJuIHtib29sZWFufSBXaGV0aGVyIHZhcmlhYmxlIGlzIG51bGwuCiAqIEBkZXByZWNhdGVkIFVzZSBgdmFsID09PSBudWxsYCBpbnN0ZWFkLgogKi8KZ29vZy5pc051bGwgPSBmdW5jdGlvbih2YWwpIHsKICByZXR1cm4gdmFsID09PSBudWxsOwp9OwoKCi8qKgogKiBSZXR1cm5zIHRydWUgaWYgdGhlIHNwZWNpZmllZCB2YWx1ZSBpcyBkZWZpbmVkIGFuZCBub3QgbnVsbC4KICogQHBhcmFtIHs/fSB2YWwgVmFyaWFibGUgdG8gdGVzdC4KICogQHJldHVybiB7Ym9vbGVhbn0gV2hldGhlciB2YXJpYWJsZSBpcyBkZWZpbmVkIGFuZCBub3QgbnVsbC4KICogQGRlcHJlY2F0ZWQgVXNlIGB2YWwgIT0gbnVsbGAgaW5zdGVhZC4KICovCmdvb2cuaXNEZWZBbmROb3ROdWxsID0gZnVuY3Rpb24odmFsKSB7CiAgLy8gTm90ZSB0aGF0IHVuZGVmaW5lZCA9PSBudWxsLgogIHJldHVybiB2YWwgIT0gbnVsbDsKfTsKCgovKioKICogUmV0dXJucyB0cnVlIGlmIHRoZSBzcGVjaWZpZWQgdmFsdWUgaXMgYW4gYXJyYXkuCiAqIEBwYXJhbSB7P30gdmFsIFZhcmlhYmxlIHRvIHRlc3QuCiAqIEByZXR1cm4ge2Jvb2xlYW59IFdoZXRoZXIgdmFyaWFibGUgaXMgYW4gYXJyYXkuCiAqLwpnb29nLmlzQXJyYXkgPSBmdW5jdGlvbih2YWwpIHsKICByZXR1cm4gZ29vZy50eXBlT2YodmFsKSA9PSAnYXJyYXknOwp9OwoKCi8qKgogKiBSZXR1cm5zIHRydWUgaWYgdGhlIG9iamVjdCBsb29rcyBsaWtlIGFuIGFycmF5LiBUbyBxdWFsaWZ5IGFzIGFycmF5IGxpa2UKICogdGhlIHZhbHVlIG5lZWRzIHRvIGJlIGVpdGhlciBhIE5vZGVMaXN0IG9yIGFuIG9iamVjdCB3aXRoIGEgTnVtYmVyIGxlbmd0aAogKiBwcm9wZXJ0eS4gTm90ZSB0aGF0IGZvciB0aGlzIGZ1bmN0aW9uIG5laXRoZXIgc3RyaW5ncyBub3IgZnVuY3Rpb25zIGFyZQogKiBjb25zaWRlcmVkICJhcnJheS1saWtlIi4KICoKICogQHBhcmFtIHs/fSB2YWwgVmFyaWFibGUgdG8gdGVzdC4KICogQHJldHVybiB7Ym9vbGVhbn0gV2hldGhlciB2YXJpYWJsZSBpcyBhbiBhcnJheS4KICovCmdvb2cuaXNBcnJheUxpa2UgPSBmdW5jdGlvbih2YWwpIHsKICB2YXIgdHlwZSA9IGdvb2cudHlwZU9mKHZhbCk7CiAgLy8gV2UgZG8gbm90IHVzZSBnb29nLmlzT2JqZWN0IGhlcmUgaW4gb3JkZXIgdG8gZXhjbHVkZSBmdW5jdGlvbiB2YWx1ZXMuCiAgcmV0dXJuIHR5cGUgPT0gJ2FycmF5JyB8fCB0eXBlID09ICdvYmplY3QnICYmIHR5cGVvZiB2YWwubGVuZ3RoID09ICdudW1iZXInOwp9OwoKCi8qKgogKiBSZXR1cm5zIHRydWUgaWYgdGhlIG9iamVjdCBsb29rcyBsaWtlIGEgRGF0ZS4gVG8gcXVhbGlmeSBhcyBEYXRlLWxpa2UgdGhlCiAqIHZhbHVlIG5lZWRzIHRvIGJlIGFuIG9iamVjdCBhbmQgaGF2ZSBhIGdldEZ1bGxZZWFyKCkgZnVuY3Rpb24uCiAqIEBwYXJhbSB7P30gdmFsIFZhcmlhYmxlIHRvIHRlc3QuCiAqIEByZXR1cm4ge2Jvb2xlYW59IFdoZXRoZXIgdmFyaWFibGUgaXMgYSBsaWtlIGEgRGF0ZS4KICovCmdvb2cuaXNEYXRlTGlrZSA9IGZ1bmN0aW9uKHZhbCkgewogIHJldHVybiBnb29nLmlzT2JqZWN0KHZhbCkgJiYgdHlwZW9mIHZhbC5nZXRGdWxsWWVhciA9PSAnZnVuY3Rpb24nOwp9OwoKCi8qKgogKiBSZXR1cm5zIHRydWUgaWYgdGhlIHNwZWNpZmllZCB2YWx1ZSBpcyBhIGZ1bmN0aW9uLgogKiBAcGFyYW0gez99IHZhbCBWYXJpYWJsZSB0byB0ZXN0LgogKiBAcmV0dXJuIHtib29sZWFufSBXaGV0aGVyIHZhcmlhYmxlIGlzIGEgZnVuY3Rpb24uCiAqLwpnb29nLmlzRnVuY3Rpb24gPSBmdW5jdGlvbih2YWwpIHsKICByZXR1cm4gZ29vZy50eXBlT2YodmFsKSA9PSAnZnVuY3Rpb24nOwp9OwoKCi8qKgogKiBSZXR1cm5zIHRydWUgaWYgdGhlIHNwZWNpZmllZCB2YWx1ZSBpcyBhbiBvYmplY3QuICBUaGlzIGluY2x1ZGVzIGFycmF5cyBhbmQKICogZnVuY3Rpb25zLgogKiBAcGFyYW0gez99IHZhbCBWYXJpYWJsZSB0byB0ZXN0LgogKiBAcmV0dXJuIHtib29sZWFufSBXaGV0aGVyIHZhcmlhYmxlIGlzIGFuIG9iamVjdC4KICovCmdvb2cuaXNPYmplY3QgPSBmdW5jdGlvbih2YWwpIHsKICB2YXIgdHlwZSA9IHR5cGVvZiB2YWw7CiAgcmV0dXJuIHR5cGUgPT0gJ29iamVjdCcgJiYgdmFsICE9IG51bGwgfHwgdHlwZSA9PSAnZnVuY3Rpb24nOwogIC8vIHJldHVybiBPYmplY3QodmFsKSA9PT0gdmFsIGFsc28gd29ya3MsIGJ1dCBpcyBzbG93ZXIsIGVzcGVjaWFsbHkgaWYgdmFsIGlzCiAgLy8gbm90IGFuIG9iamVjdC4KfTsKCgovKioKICogR2V0cyBhIHVuaXF1ZSBJRCBmb3IgYW4gb2JqZWN0LiBUaGlzIG11dGF0ZXMgdGhlIG9iamVjdCBzbyB0aGF0IGZ1cnRoZXIgY2FsbHMKICogd2l0aCB0aGUgc2FtZSBvYmplY3QgYXMgYSBwYXJhbWV0ZXIgcmV0dXJucyB0aGUgc2FtZSB2YWx1ZS4gVGhlIHVuaXF1ZSBJRCBpcwogKiBndWFyYW50ZWVkIHRvIGJlIHVuaXF1ZSBhY3Jvc3MgdGhlIGN1cnJlbnQgc2Vzc2lvbiBhbW9uZ3N0IG9iamVjdHMgdGhhdCBhcmUKICogcGFzc2VkIGludG8gYGdldFVpZGAuIFRoZXJlIGlzIG5vIGd1YXJhbnRlZSB0aGF0IHRoZSBJRCBpcyB1bmlxdWUgb3IKICogY29uc2lzdGVudCBhY3Jvc3Mgc2Vzc2lvbnMuIEl0IGlzIHVuc2FmZSB0byBnZW5lcmF0ZSB1bmlxdWUgSUQgZm9yIGZ1bmN0aW9uCiAqIHByb3RvdHlwZXMuCiAqCiAqIEBwYXJhbSB7T2JqZWN0fSBvYmogVGhlIG9iamVjdCB0byBnZXQgdGhlIHVuaXF1ZSBJRCBmb3IuCiAqIEByZXR1cm4ge251bWJlcn0gVGhlIHVuaXF1ZSBJRCBmb3IgdGhlIG9iamVjdC4KICovCmdvb2cuZ2V0VWlkID0gZnVuY3Rpb24ob2JqKSB7CiAgLy8gVE9ETyhhcnYpOiBNYWtlIHRoZSB0eXBlIHN0cmljdGVyLCBkbyBub3QgYWNjZXB0IG51bGwuCgogIC8vIEluIE9wZXJhIHdpbmRvdy5oYXNPd25Qcm9wZXJ0eSBleGlzdHMgYnV0IGFsd2F5cyByZXR1cm5zIGZhbHNlIHNvIHdlIGF2b2lkCiAgLy8gdXNpbmcgaXQuIEFzIGEgY29uc2VxdWVuY2UgdGhlIHVuaXF1ZSBJRCBnZW5lcmF0ZWQgZm9yIEJhc2VDbGFzcy5wcm90b3R5cGUKICAvLyBhbmQgU3ViQ2xhc3MucHJvdG90eXBlIHdpbGwgYmUgdGhlIHNhbWUuCiAgLy8gVE9ETyhiLzE0MTUxMjMyMyk6IFVVSURzIGFyZSBicm9rZW4gZm9yIGN0b3JzIHdpdGggY2xhc3Mtc2lkZSBpbmhlcml0YW5jZS4KICByZXR1cm4gb2JqW2dvb2cuVUlEX1BST1BFUlRZX10gfHwKICAgICAgKG9ialtnb29nLlVJRF9QUk9QRVJUWV9dID0gKytnb29nLnVpZENvdW50ZXJfKTsKfTsKCgovKioKICogV2hldGhlciB0aGUgZ2l2ZW4gb2JqZWN0IGlzIGFscmVhZHkgYXNzaWduZWQgYSB1bmlxdWUgSUQuCiAqCiAqIFRoaXMgZG9lcyBub3QgbW9kaWZ5IHRoZSBvYmplY3QuCiAqCiAqIEBwYXJhbSB7IU9iamVjdH0gb2JqIFRoZSBvYmplY3QgdG8gY2hlY2suCiAqIEByZXR1cm4ge2Jvb2xlYW59IFdoZXRoZXIgdGhlcmUgaXMgYW4gYXNzaWduZWQgdW5pcXVlIGlkIGZvciB0aGUgb2JqZWN0LgogKi8KZ29vZy5oYXNVaWQgPSBmdW5jdGlvbihvYmopIHsKICByZXR1cm4gISFvYmpbZ29vZy5VSURfUFJPUEVSVFlfXTsKfTsKCgovKioKICogUmVtb3ZlcyB0aGUgdW5pcXVlIElEIGZyb20gYW4gb2JqZWN0LiBUaGlzIGlzIHVzZWZ1bCBpZiB0aGUgb2JqZWN0IHdhcwogKiBwcmV2aW91c2x5IG11dGF0ZWQgdXNpbmcgYGdvb2cuZ2V0VWlkYCBpbiB3aGljaCBjYXNlIHRoZSBtdXRhdGlvbiBpcwogKiB1bmRvbmUuCiAqIEBwYXJhbSB7T2JqZWN0fSBvYmogVGhlIG9iamVjdCB0byByZW1vdmUgdGhlIHVuaXF1ZSBJRCBmaWVsZCBmcm9tLgogKi8KZ29vZy5yZW1vdmVVaWQgPSBmdW5jdGlvbihvYmopIHsKICAvLyBUT0RPKGFydik6IE1ha2UgdGhlIHR5cGUgc3RyaWN0ZXIsIGRvIG5vdCBhY2NlcHQgbnVsbC4KCiAgLy8gSW4gSUUsIERPTSBub2RlcyBhcmUgbm90IGluc3RhbmNlcyBvZiBPYmplY3QgYW5kIHRocm93IGFuIGV4Y2VwdGlvbiBpZiB3ZQogIC8vIHRyeSB0byBkZWxldGUuICBJbnN0ZWFkIHdlIHRyeSB0byB1c2UgcmVtb3ZlQXR0cmlidXRlLgogIGlmIChvYmogIT09IG51bGwgJiYgJ3JlbW92ZUF0dHJpYnV0ZScgaW4gb2JqKSB7CiAgICBvYmoucmVtb3ZlQXR0cmlidXRlKGdvb2cuVUlEX1BST1BFUlRZXyk7CiAgfQoKICB0cnkgewogICAgZGVsZXRlIG9ialtnb29nLlVJRF9QUk9QRVJUWV9dOwogIH0gY2F0Y2ggKGV4KSB7CiAgfQp9OwoKCi8qKgogKiBOYW1lIGZvciB1bmlxdWUgSUQgcHJvcGVydHkuIEluaXRpYWxpemVkIGluIGEgd2F5IHRvIGhlbHAgYXZvaWQgY29sbGlzaW9ucwogKiB3aXRoIG90aGVyIGNsb3N1cmUgSmF2YVNjcmlwdCBvbiB0aGUgc2FtZSBwYWdlLgogKiBAdHlwZSB7c3RyaW5nfQogKiBAcHJpdmF0ZQogKi8KZ29vZy5VSURfUFJPUEVSVFlfID0gJ2Nsb3N1cmVfdWlkXycgKyAoKE1hdGgucmFuZG9tKCkgKiAxZTkpID4+PiAwKTsKCgovKioKICogQ291bnRlciBmb3IgVUlELgogKiBAdHlwZSB7bnVtYmVyfQogKiBAcHJpdmF0ZQogKi8KZ29vZy51aWRDb3VudGVyXyA9IDA7CgoKLyoqCiAqIEFkZHMgYSBoYXNoIGNvZGUgZmllbGQgdG8gYW4gb2JqZWN0LiBUaGUgaGFzaCBjb2RlIGlzIHVuaXF1ZSBmb3IgdGhlCiAqIGdpdmVuIG9iamVjdC4KICogQHBhcmFtIHtPYmplY3R9IG9iaiBUaGUgb2JqZWN0IHRvIGdldCB0aGUgaGFzaCBjb2RlIGZvci4KICogQHJldHVybiB7bnVtYmVyfSBUaGUgaGFzaCBjb2RlIGZvciB0aGUgb2JqZWN0LgogKiBAZGVwcmVjYXRlZCBVc2UgZ29vZy5nZXRVaWQgaW5zdGVhZC4KICovCmdvb2cuZ2V0SGFzaENvZGUgPSBnb29nLmdldFVpZDsKCgovKioKICogUmVtb3ZlcyB0aGUgaGFzaCBjb2RlIGZpZWxkIGZyb20gYW4gb2JqZWN0LgogKiBAcGFyYW0ge09iamVjdH0gb2JqIFRoZSBvYmplY3QgdG8gcmVtb3ZlIHRoZSBmaWVsZCBmcm9tLgogKiBAZGVwcmVjYXRlZCBVc2UgZ29vZy5yZW1vdmVVaWQgaW5zdGVhZC4KICovCmdvb2cucmVtb3ZlSGFzaENvZGUgPSBnb29nLnJlbW92ZVVpZDsKCgovKioKICogQ2xvbmVzIGEgdmFsdWUuIFRoZSBpbnB1dCBtYXkgYmUgYW4gT2JqZWN0LCBBcnJheSwgb3IgYmFzaWMgdHlwZS4gT2JqZWN0cyBhbmQKICogYXJyYXlzIHdpbGwgYmUgY2xvbmVkIHJlY3Vyc2l2ZWx5LgogKgogKiBXQVJOSU5HUzoKICogPGNvZGU+Z29vZy5jbG9uZU9iamVjdDwvY29kZT4gZG9lcyBub3QgZGV0ZWN0IHJlZmVyZW5jZSBsb29wcy4gT2JqZWN0cyB0aGF0CiAqIHJlZmVyIHRvIHRoZW1zZWx2ZXMgd2lsbCBjYXVzZSBpbmZpbml0ZSByZWN1cnNpb24uCiAqCiAqIDxjb2RlPmdvb2cuY2xvbmVPYmplY3Q8L2NvZGU+IGlzIHVuYXdhcmUgb2YgdW5pcXVlIGlkZW50aWZpZXJzLCBhbmQgY29waWVzCiAqIFVJRHMgY3JlYXRlZCBieSA8Y29kZT5nZXRVaWQ8L2NvZGU+IGludG8gY2xvbmVkIHJlc3VsdHMuCiAqCiAqIEBwYXJhbSB7Kn0gb2JqIFRoZSB2YWx1ZSB0byBjbG9uZS4KICogQHJldHVybiB7Kn0gQSBjbG9uZSBvZiB0aGUgaW5wdXQgdmFsdWUuCiAqIEBkZXByZWNhdGVkIGdvb2cuY2xvbmVPYmplY3QgaXMgdW5zYWZlLiBQcmVmZXIgdGhlIGdvb2cub2JqZWN0IG1ldGhvZHMuCiAqLwpnb29nLmNsb25lT2JqZWN0ID0gZnVuY3Rpb24ob2JqKSB7CiAgdmFyIHR5cGUgPSBnb29nLnR5cGVPZihvYmopOwogIGlmICh0eXBlID09ICdvYmplY3QnIHx8IHR5cGUgPT0gJ2FycmF5JykgewogICAgaWYgKHR5cGVvZiBvYmouY2xvbmUgPT09ICdmdW5jdGlvbicpIHsKICAgICAgcmV0dXJuIG9iai5jbG9uZSgpOwogICAgfQogICAgdmFyIGNsb25lID0gdHlwZSA9PSAnYXJyYXknID8gW10gOiB7fTsKICAgIGZvciAodmFyIGtleSBpbiBvYmopIHsKICAgICAgY2xvbmVba2V5XSA9IGdvb2cuY2xvbmVPYmplY3Qob2JqW2tleV0pOwogICAgfQogICAgcmV0dXJuIGNsb25lOwogIH0KCiAgcmV0dXJuIG9iajsKfTsKCgovKioKICogQSBuYXRpdmUgaW1wbGVtZW50YXRpb24gb2YgZ29vZy5iaW5kLgogKiBAcGFyYW0gez9mdW5jdGlvbih0aGlzOlQsIC4uLil9IGZuIEEgZnVuY3Rpb24gdG8gcGFydGlhbGx5IGFwcGx5LgogKiBAcGFyYW0ge1R9IHNlbGZPYmogU3BlY2lmaWVzIHRoZSBvYmplY3Qgd2hpY2ggdGhpcyBzaG91bGQgcG9pbnQgdG8gd2hlbiB0aGUKICogICAgIGZ1bmN0aW9uIGlzIHJ1bi4KICogQHBhcmFtIHsuLi4qfSB2YXJfYXJncyBBZGRpdGlvbmFsIGFyZ3VtZW50cyB0aGF0IGFyZSBwYXJ0aWFsbHkgYXBwbGllZCB0byB0aGUKICogICAgIGZ1bmN0aW9uLgogKiBAcmV0dXJuIHshRnVuY3Rpb259IEEgcGFydGlhbGx5LWFwcGxpZWQgZm9ybSBvZiB0aGUgZnVuY3Rpb24gZ29vZy5iaW5kKCkgd2FzCiAqICAgICBpbnZva2VkIGFzIGEgbWV0aG9kIG9mLgogKiBAdGVtcGxhdGUgVAogKiBAcHJpdmF0ZQogKi8KZ29vZy5iaW5kTmF0aXZlXyA9IGZ1bmN0aW9uKGZuLCBzZWxmT2JqLCB2YXJfYXJncykgewogIHJldHVybiAvKiogQHR5cGUgeyFGdW5jdGlvbn0gKi8gKGZuLmNhbGwuYXBwbHkoZm4uYmluZCwgYXJndW1lbnRzKSk7Cn07CgoKLyoqCiAqIEEgcHVyZS1KUyBpbXBsZW1lbnRhdGlvbiBvZiBnb29nLmJpbmQuCiAqIEBwYXJhbSB7P2Z1bmN0aW9uKHRoaXM6VCwgLi4uKX0gZm4gQSBmdW5jdGlvbiB0byBwYXJ0aWFsbHkgYXBwbHkuCiAqIEBwYXJhbSB7VH0gc2VsZk9iaiBTcGVjaWZpZXMgdGhlIG9iamVjdCB3aGljaCB0aGlzIHNob3VsZCBwb2ludCB0byB3aGVuIHRoZQogKiAgICAgZnVuY3Rpb24gaXMgcnVuLgogKiBAcGFyYW0gey4uLip9IHZhcl9hcmdzIEFkZGl0aW9uYWwgYXJndW1lbnRzIHRoYXQgYXJlIHBhcnRpYWxseSBhcHBsaWVkIHRvIHRoZQogKiAgICAgZnVuY3Rpb24uCiAqIEByZXR1cm4geyFGdW5jdGlvbn0gQSBwYXJ0aWFsbHktYXBwbGllZCBmb3JtIG9mIHRoZSBmdW5jdGlvbiBnb29nLmJpbmQoKSB3YXMKICogICAgIGludm9rZWQgYXMgYSBtZXRob2Qgb2YuCiAqIEB0ZW1wbGF0ZSBUCiAqIEBwcml2YXRlCiAqLwpnb29nLmJpbmRKc18gPSBmdW5jdGlvbihmbiwgc2VsZk9iaiwgdmFyX2FyZ3MpIHsKICBpZiAoIWZuKSB7CiAgICB0aHJvdyBuZXcgRXJyb3IoKTsKICB9CgogIGlmIChhcmd1bWVudHMubGVuZ3RoID4gMikgewogICAgdmFyIGJvdW5kQXJncyA9IEFycmF5LnByb3RvdHlwZS5zbGljZS5jYWxsKGFyZ3VtZW50cywgMik7CiAgICByZXR1cm4gZnVuY3Rpb24oKSB7CiAgICAgIC8vIFByZXBlbmQgdGhlIGJvdW5kIGFyZ3VtZW50cyB0byB0aGUgY3VycmVudCBhcmd1bWVudHMuCiAgICAgIHZhciBuZXdBcmdzID0gQXJyYXkucHJvdG90eXBlLnNsaWNlLmNhbGwoYXJndW1lbnRzKTsKICAgICAgQXJyYXkucHJvdG90eXBlLnVuc2hpZnQuYXBwbHkobmV3QXJncywgYm91bmRBcmdzKTsKICAgICAgcmV0dXJuIGZuLmFwcGx5KHNlbGZPYmosIG5ld0FyZ3MpOwogICAgfTsKCiAgfSBlbHNlIHsKICAgIHJldHVybiBmdW5jdGlvbigpIHsKICAgICAgcmV0dXJuIGZuLmFwcGx5KHNlbGZPYmosIGFyZ3VtZW50cyk7CiAgICB9OwogIH0KfTsKCgovKioKICogUGFydGlhbGx5IGFwcGxpZXMgdGhpcyBmdW5jdGlvbiB0byBhIHBhcnRpY3VsYXIgJ3RoaXMgb2JqZWN0JyBhbmQgemVybyBvcgogKiBtb3JlIGFyZ3VtZW50cy4gVGhlIHJlc3VsdCBpcyBhIG5ldyBmdW5jdGlvbiB3aXRoIHNvbWUgYXJndW1lbnRzIG9mIHRoZSBmaXJzdAogKiBmdW5jdGlvbiBwcmUtZmlsbGVkIGFuZCB0aGUgdmFsdWUgb2YgdGhpcyAncHJlLXNwZWNpZmllZCcuCiAqCiAqIFJlbWFpbmluZyBhcmd1bWVudHMgc3BlY2lmaWVkIGF0IGNhbGwtdGltZSBhcmUgYXBwZW5kZWQgdG8gdGhlIHByZS1zcGVjaWZpZWQKICogb25lcy4KICoKICogQWxzbyBzZWU6IHtAbGluayAjcGFydGlhbH0uCiAqCiAqIFVzYWdlOgogKiA8cHJlPnZhciBiYXJNZXRoQm91bmQgPSBnb29nLmJpbmQobXlGdW5jdGlvbiwgbXlPYmosICdhcmcxJywgJ2FyZzInKTsKICogYmFyTWV0aEJvdW5kKCdhcmczJywgJ2FyZzQnKTs8L3ByZT4KICoKICogQHBhcmFtIHs/ZnVuY3Rpb24odGhpczpULCAuLi4pfSBmbiBBIGZ1bmN0aW9uIHRvIHBhcnRpYWxseSBhcHBseS4KICogQHBhcmFtIHtUfSBzZWxmT2JqIFNwZWNpZmllcyB0aGUgb2JqZWN0IHdoaWNoIHRoaXMgc2hvdWxkIHBvaW50IHRvIHdoZW4gdGhlCiAqICAgICBmdW5jdGlvbiBpcyBydW4uCiAqIEBwYXJhbSB7Li4uKn0gdmFyX2FyZ3MgQWRkaXRpb25hbCBhcmd1bWVudHMgdGhhdCBhcmUgcGFydGlhbGx5IGFwcGxpZWQgdG8gdGhlCiAqICAgICBmdW5jdGlvbi4KICogQHJldHVybiB7IUZ1bmN0aW9ufSBBIHBhcnRpYWxseS1hcHBsaWVkIGZvcm0gb2YgdGhlIGZ1bmN0aW9uIGdvb2cuYmluZCgpIHdhcwogKiAgICAgaW52b2tlZCBhcyBhIG1ldGhvZCBvZi4KICogQHRlbXBsYXRlIFQKICogQHN1cHByZXNzIHtkZXByZWNhdGVkfSBTZWUgYWJvdmUuCiAqLwpnb29nLmJpbmQgPSBmdW5jdGlvbihmbiwgc2VsZk9iaiwgdmFyX2FyZ3MpIHsKICAvLyBUT0RPKG5pY2tzYW50b3MpOiBuYXJyb3cgdGhlIHR5cGUgc2lnbmF0dXJlLgogIGlmIChGdW5jdGlvbi5wcm90b3R5cGUuYmluZCAmJgogICAgICAvLyBOT1RFKG5pY2tzYW50b3MpOiBTb21lYm9keSBwdWxsZWQgYmFzZS5qcyBpbnRvIHRoZSBkZWZhdWx0IENocm9tZQogICAgICAvLyBleHRlbnNpb24gZW52aXJvbm1lbnQuIFRoaXMgbWVhbnMgdGhhdCBmb3IgQ2hyb21lIGV4dGVuc2lvbnMsIHRoZXkgZ2V0CiAgICAgIC8vIHRoZSBpbXBsZW1lbnRhdGlvbiBvZiBGdW5jdGlvbi5wcm90b3R5cGUuYmluZCB0aGF0IGNhbGxzIGdvb2cuYmluZAogICAgICAvLyBpbnN0ZWFkIG9mIHRoZSBuYXRpdmUgb25lLiBFdmVuIHdvcnNlLCB3ZSBkb24ndCB3YW50IHRvIGludHJvZHVjZSBhCiAgICAgIC8vIGNpcmN1bGFyIGRlcGVuZGVuY3kgYmV0d2VlbiBnb29nLmJpbmQgYW5kIEZ1bmN0aW9uLnByb3RvdHlwZS5iaW5kLCBzbwogICAgICAvLyB3ZSBoYXZlIHRvIGhhY2sgdGhpcyB0byBtYWtlIHN1cmUgaXQgd29ya3MgY29ycmVjdGx5LgogICAgICBGdW5jdGlvbi5wcm90b3R5cGUuYmluZC50b1N0cmluZygpLmluZGV4T2YoJ25hdGl2ZSBjb2RlJykgIT0gLTEpIHsKICAgIGdvb2cuYmluZCA9IGdvb2cuYmluZE5hdGl2ZV87CiAgfSBlbHNlIHsKICAgIGdvb2cuYmluZCA9IGdvb2cuYmluZEpzXzsKICB9CiAgcmV0dXJuIGdvb2cuYmluZC5hcHBseShudWxsLCBhcmd1bWVudHMpOwp9OwoKCi8qKgogKiBMaWtlIGdvb2cuYmluZCgpLCBleGNlcHQgdGhhdCBhICd0aGlzIG9iamVjdCcgaXMgbm90IHJlcXVpcmVkLiBVc2VmdWwgd2hlbgogKiB0aGUgdGFyZ2V0IGZ1bmN0aW9uIGlzIGFscmVhZHkgYm91bmQuCiAqCiAqIFVzYWdlOgogKiB2YXIgZyA9IGdvb2cucGFydGlhbChmLCBhcmcxLCBhcmcyKTsKICogZyhhcmczLCBhcmc0KTsKICoKICogQHBhcmFtIHtGdW5jdGlvbn0gZm4gQSBmdW5jdGlvbiB0byBwYXJ0aWFsbHkgYXBwbHkuCiAqIEBwYXJhbSB7Li4uKn0gdmFyX2FyZ3MgQWRkaXRpb25hbCBhcmd1bWVudHMgdGhhdCBhcmUgcGFydGlhbGx5IGFwcGxpZWQgdG8gZm4uCiAqIEByZXR1cm4geyFGdW5jdGlvbn0gQSBwYXJ0aWFsbHktYXBwbGllZCBmb3JtIG9mIHRoZSBmdW5jdGlvbiBnb29nLnBhcnRpYWwoKQogKiAgICAgd2FzIGludm9rZWQgYXMgYSBtZXRob2Qgb2YuCiAqLwpnb29nLnBhcnRpYWwgPSBmdW5jdGlvbihmbiwgdmFyX2FyZ3MpIHsKICB2YXIgYXJncyA9IEFycmF5LnByb3RvdHlwZS5zbGljZS5jYWxsKGFyZ3VtZW50cywgMSk7CiAgcmV0dXJuIGZ1bmN0aW9uKCkgewogICAgLy8gQ2xvbmUgdGhlIGFycmF5ICh3aXRoIHNsaWNlKCkpIGFuZCBhcHBlbmQgYWRkaXRpb25hbCBhcmd1bWVudHMKICAgIC8vIHRvIHRoZSBleGlzdGluZyBhcmd1bWVudHMuCiAgICB2YXIgbmV3QXJncyA9IGFyZ3Muc2xpY2UoKTsKICAgIG5ld0FyZ3MucHVzaC5hcHBseShuZXdBcmdzLCBhcmd1bWVudHMpOwogICAgcmV0dXJuIGZuLmFwcGx5KC8qKiBAdHlwZSB7P30gKi8gKHRoaXMpLCBuZXdBcmdzKTsKICB9Owp9OwoKCi8qKgogKiBDb3BpZXMgYWxsIHRoZSBtZW1iZXJzIG9mIGEgc291cmNlIG9iamVjdCB0byBhIHRhcmdldCBvYmplY3QuIFRoaXMgbWV0aG9kCiAqIGRvZXMgbm90IHdvcmsgb24gYWxsIGJyb3dzZXJzIGZvciBhbGwgb2JqZWN0cyB0aGF0IGNvbnRhaW4ga2V5cyBzdWNoIGFzCiAqIHRvU3RyaW5nIG9yIGhhc093blByb3BlcnR5LiBVc2UgZ29vZy5vYmplY3QuZXh0ZW5kIGZvciB0aGlzIHB1cnBvc2UuCiAqCiAqIE5PVEU6IFNvbWUgaGF2ZSBhZHZvY2F0ZWQgZm9yIHRoZSB1c2Ugb2YgZ29vZy5taXhpbiB0byBzZXR1cCBjbGFzc2VzCiAqIHdpdGggbXVsdGlwbGUgaW5oZXJpdGVuY2UgKHRyYWl0cywgbWl4aW5zLCBldGMpLiAgSG93ZXZlciwgYXMgaXQgc2ltcGx5CiAqIHVzZXMgImZvciBpbiIsIHRoaXMgaXMgbm90IGNvbXBhdGlibGUgd2l0aCBFUzYgY2xhc3NlcyB3aG9zZSBtZXRob2RzIGFyZQogKiBub24tZW51bWVyYWJsZS4gIENoYW5naW5nIHRoaXMsIHdvdWxkIGJyZWFrIGNhc2VzIHdoZXJlIG5vbi1lbnVtZXJhYmxlCiAqIHByb3BlcnRpZXMgYXJlIG5vdCBleHBlY3RlZC4KICoKICogQHBhcmFtIHtPYmplY3R9IHRhcmdldCBUYXJnZXQuCiAqIEBwYXJhbSB7T2JqZWN0fSBzb3VyY2UgU291cmNlLgogKiBAZGVwcmVjYXRlZCBQcmVmZXIgT2JqZWN0LmFzc2lnbgogKi8KZ29vZy5taXhpbiA9IGZ1bmN0aW9uKHRhcmdldCwgc291cmNlKSB7CiAgZm9yICh2YXIgeCBpbiBzb3VyY2UpIHsKICAgIHRhcmdldFt4XSA9IHNvdXJjZVt4XTsKICB9CgogIC8vIEZvciBJRTcgb3IgbG93ZXIsIHRoZSBmb3ItaW4tbG9vcCBkb2VzIG5vdCBjb250YWluIGFueSBwcm9wZXJ0aWVzIHRoYXQgYXJlCiAgLy8gbm90IGVudW1lcmFibGUgb24gdGhlIHByb3RvdHlwZSBvYmplY3QgKGZvciBleGFtcGxlLCBpc1Byb3RvdHlwZU9mIGZyb20KICAvLyBPYmplY3QucHJvdG90eXBlKSBidXQgYWxzbyBpdCB3aWxsIG5vdCBpbmNsdWRlICdyZXBsYWNlJyBvbiBvYmplY3RzIHRoYXQKICAvLyBleHRlbmQgU3RyaW5nIGFuZCBjaGFuZ2UgJ3JlcGxhY2UnIChub3QgdGhhdCBpdCBpcyBjb21tb24gZm9yIGFueW9uZSB0bwogIC8vIGV4dGVuZCBhbnl0aGluZyBleGNlcHQgT2JqZWN0KS4KfTsKCgovKioKICogQHJldHVybiB7bnVtYmVyfSBBbiBpbnRlZ2VyIHZhbHVlIHJlcHJlc2VudGluZyB0aGUgbnVtYmVyIG9mIG1pbGxpc2Vjb25kcwogKiAgICAgYmV0d2VlbiBtaWRuaWdodCwgSmFudWFyeSAxLCAxOTcwIGFuZCB0aGUgY3VycmVudCB0aW1lLgogKiBAZGVwcmVjYXRlZCBVc2UgRGF0ZS5ub3cKICovCmdvb2cubm93ID0gKGdvb2cuVFJVU1RFRF9TSVRFICYmIERhdGUubm93KSB8fCAoZnVuY3Rpb24oKSB7CiAgICAgICAgICAgICAvLyBVbmFyeSBwbHVzIG9wZXJhdG9yIGNvbnZlcnRzIGl0cyBvcGVyYW5kIHRvIGEgbnVtYmVyIHdoaWNoIGluCiAgICAgICAgICAgICAvLyB0aGUgY2FzZSBvZgogICAgICAgICAgICAgLy8gYSBkYXRlIGlzIGRvbmUgYnkgY2FsbGluZyBnZXRUaW1lKCkuCiAgICAgICAgICAgICByZXR1cm4gK25ldyBEYXRlKCk7CiAgICAgICAgICAgfSk7CgoKLyoqCiAqIEV2YWxzIEphdmFTY3JpcHQgaW4gdGhlIGdsb2JhbCBzY29wZS4gIEluIElFIHRoaXMgdXNlcyBleGVjU2NyaXB0LCBvdGhlcgogKiBicm93c2VycyB1c2UgZ29vZy5nbG9iYWwuZXZhbC4gSWYgZ29vZy5nbG9iYWwuZXZhbCBkb2VzIG5vdCBldmFsdWF0ZSBpbiB0aGUKICogZ2xvYmFsIHNjb3BlIChmb3IgZXhhbXBsZSwgaW4gU2FmYXJpKSwgYXBwZW5kcyBhIHNjcmlwdCB0YWcgaW5zdGVhZC4KICogVGhyb3dzIGFuIGV4Y2VwdGlvbiBpZiBuZWl0aGVyIGV4ZWNTY3JpcHQgb3IgZXZhbCBpcyBkZWZpbmVkLgogKiBAcGFyYW0ge3N0cmluZ30gc2NyaXB0IEphdmFTY3JpcHQgc3RyaW5nLgogKi8KZ29vZy5nbG9iYWxFdmFsID0gZnVuY3Rpb24oc2NyaXB0KSB7CiAgaWYgKGdvb2cuZ2xvYmFsLmV4ZWNTY3JpcHQpIHsKICAgIGdvb2cuZ2xvYmFsLmV4ZWNTY3JpcHQoc2NyaXB0LCAnSmF2YVNjcmlwdCcpOwogIH0gZWxzZSBpZiAoZ29vZy5nbG9iYWwuZXZhbCkgewogICAgLy8gVGVzdCB0byBzZWUgaWYgZXZhbCB3b3JrcwogICAgaWYgKGdvb2cuZXZhbFdvcmtzRm9yR2xvYmFsc18gPT0gbnVsbCkgewogICAgICB0cnkgewogICAgICAgIGdvb2cuZ2xvYmFsLmV2YWwoJ3ZhciBfZXZhbFRlc3RfID0gMTsnKTsKICAgICAgfSBjYXRjaCAoaWdub3JlKSB7CiAgICAgIH0KICAgICAgaWYgKHR5cGVvZiBnb29nLmdsb2JhbFsnX2V2YWxUZXN0XyddICE9ICd1bmRlZmluZWQnKSB7CiAgICAgICAgdHJ5IHsKICAgICAgICAgIGRlbGV0ZSBnb29nLmdsb2JhbFsnX2V2YWxUZXN0XyddOwogICAgICAgIH0gY2F0Y2ggKGlnbm9yZSkgewogICAgICAgICAgLy8gTWljcm9zb2Z0IGVkZ2UgZmFpbHMgdGhlIGRlbGV0aW9uIGFib3ZlIGluIHN0cmljdCBtb2RlLgogICAgICAgIH0KICAgICAgICBnb29nLmV2YWxXb3Jrc0Zvckdsb2JhbHNfID0gdHJ1ZTsKICAgICAgfSBlbHNlIHsKICAgICAgICBnb29nLmV2YWxXb3Jrc0Zvckdsb2JhbHNfID0gZmFsc2U7CiAgICAgIH0KICAgIH0KCiAgICBpZiAoZ29vZy5ldmFsV29ya3NGb3JHbG9iYWxzXykgewogICAgICBnb29nLmdsb2JhbC5ldmFsKHNjcmlwdCk7CiAgICB9IGVsc2UgewogICAgICAvKiogQHR5cGUgeyFEb2N1bWVudH0gKi8KICAgICAgdmFyIGRvYyA9IGdvb2cuZ2xvYmFsLmRvY3VtZW50OwogICAgICB2YXIgc2NyaXB0RWx0ID0KICAgICAgICAgIC8qKiBAdHlwZSB7IUhUTUxTY3JpcHRFbGVtZW50fSAqLyAoZG9jLmNyZWF0ZUVsZW1lbnQoJ3NjcmlwdCcpKTsKICAgICAgc2NyaXB0RWx0LnR5cGUgPSAndGV4dC9qYXZhc2NyaXB0JzsKICAgICAgc2NyaXB0RWx0LmRlZmVyID0gZmFsc2U7CiAgICAgIC8vIE5vdGUodXNlcik6IGNhbid0IHVzZSAuaW5uZXJIVE1MIHNpbmNlICJ0KCc8dGVzdD4nKSIgd2lsbCBmYWlsIGFuZAogICAgICAvLyAudGV4dCBkb2Vzbid0IHdvcmsgaW4gU2FmYXJpIDIuICBUaGVyZWZvcmUgd2UgYXBwZW5kIGEgdGV4dCBub2RlLgogICAgICBzY3JpcHRFbHQuYXBwZW5kQ2hpbGQoZG9jLmNyZWF0ZVRleHROb2RlKHNjcmlwdCkpOwogICAgICBkb2MuaGVhZC5hcHBlbmRDaGlsZChzY3JpcHRFbHQpOwogICAgICBkb2MuaGVhZC5yZW1vdmVDaGlsZChzY3JpcHRFbHQpOwogICAgfQogIH0gZWxzZSB7CiAgICB0aHJvdyBuZXcgRXJyb3IoJ2dvb2cuZ2xvYmFsRXZhbCBub3QgYXZhaWxhYmxlJyk7CiAgfQp9OwoKCi8qKgogKiBJbmRpY2F0ZXMgd2hldGhlciBvciBub3Qgd2UgY2FuIGNhbGwgJ2V2YWwnIGRpcmVjdGx5IHRvIGV2YWwgY29kZSBpbiB0aGUKICogZ2xvYmFsIHNjb3BlLiBTZXQgdG8gYSBCb29sZWFuIGJ5IHRoZSBmaXJzdCBjYWxsIHRvIGdvb2cuZ2xvYmFsRXZhbCAod2hpY2gKICogZW1waXJpY2FsbHkgdGVzdHMgd2hldGhlciBldmFsIHdvcmtzIGZvciBnbG9iYWxzKS4gQHNlZSBnb29nLmdsb2JhbEV2YWwKICogQHR5cGUgez9ib29sZWFufQogKiBAcHJpdmF0ZQogKi8KZ29vZy5ldmFsV29ya3NGb3JHbG9iYWxzXyA9IG51bGw7CgoKLyoqCiAqIE9wdGlvbmFsIG1hcCBvZiBDU1MgY2xhc3MgbmFtZXMgdG8gb2JmdXNjYXRlZCBuYW1lcyB1c2VkIHdpdGgKICogZ29vZy5nZXRDc3NOYW1lKCkuCiAqIEBwcml2YXRlIHshT2JqZWN0PHN0cmluZywgc3RyaW5nPnx1bmRlZmluZWR9CiAqIEBzZWUgZ29vZy5zZXRDc3NOYW1lTWFwcGluZwogKi8KZ29vZy5jc3NOYW1lTWFwcGluZ187CgoKLyoqCiAqIE9wdGlvbmFsIG9iZnVzY2F0aW9uIHN0eWxlIGZvciBDU1MgY2xhc3MgbmFtZXMuIFNob3VsZCBiZSBzZXQgdG8gZWl0aGVyCiAqICdCWV9XSE9MRScgb3IgJ0JZX1BBUlQnIGlmIGRlZmluZWQuCiAqIEB0eXBlIHtzdHJpbmd8dW5kZWZpbmVkfQogKiBAcHJpdmF0ZQogKiBAc2VlIGdvb2cuc2V0Q3NzTmFtZU1hcHBpbmcKICovCmdvb2cuY3NzTmFtZU1hcHBpbmdTdHlsZV87CgoKCi8qKgogKiBBIGhvb2sgZm9yIG1vZGlmeWluZyB0aGUgZGVmYXVsdCBiZWhhdmlvciBnb29nLmdldENzc05hbWUuIFRoZSBmdW5jdGlvbgogKiBpZiBwcmVzZW50LCB3aWxsIHJlY2VpdmUgdGhlIHN0YW5kYXJkIG91dHB1dCBvZiB0aGUgZ29vZy5nZXRDc3NOYW1lIGFzCiAqIGl0cyBpbnB1dC4KICoKICogQHR5cGUgeyhmdW5jdGlvbihzdHJpbmcpOnN0cmluZyl8dW5kZWZpbmVkfQogKi8KZ29vZy5nbG9iYWwuQ0xPU1VSRV9DU1NfTkFNRV9NQVBfRk47CgoKLyoqCiAqIEhhbmRsZXMgc3RyaW5ncyB0aGF0IGFyZSBpbnRlbmRlZCB0byBiZSB1c2VkIGFzIENTUyBjbGFzcyBuYW1lcy4KICoKICogVGhpcyBmdW5jdGlvbiB3b3JrcyBpbiB0YW5kZW0gd2l0aCBAc2VlIGdvb2cuc2V0Q3NzTmFtZU1hcHBpbmcuCiAqCiAqIFdpdGhvdXQgYW55IG1hcHBpbmcgc2V0LCB0aGUgYXJndW1lbnRzIGFyZSBzaW1wbGUgam9pbmVkIHdpdGggYSBoeXBoZW4gYW5kCiAqIHBhc3NlZCB0aHJvdWdoIHVuYWx0ZXJlZC4KICoKICogV2hlbiB0aGVyZSBpcyBhIG1hcHBpbmcsIHRoZXJlIGFyZSB0d28gcG9zc2libGUgc3R5bGVzIGluIHdoaWNoIHRoZXNlCiAqIG1hcHBpbmdzIGFyZSB1c2VkLiBJbiB0aGUgQllfUEFSVCBzdHlsZSwgZWFjaCBwYXJ0IChpLmUuIGluIGJldHdlZW4gaHlwaGVucykKICogb2YgdGhlIHBhc3NlZCBpbiBjc3MgbmFtZSBpcyByZXdyaXR0ZW4gYWNjb3JkaW5nIHRvIHRoZSBtYXAuIEluIHRoZSBCWV9XSE9MRQogKiBzdHlsZSwgdGhlIGZ1bGwgY3NzIG5hbWUgaXMgbG9va2VkIHVwIGluIHRoZSBtYXAgZGlyZWN0bHkuIElmIGEgcmV3cml0ZSBpcwogKiBub3Qgc3BlY2lmaWVkIGJ5IHRoZSBtYXAsIHRoZSBjb21waWxlciB3aWxsIG91dHB1dCBhIHdhcm5pbmcuCiAqCiAqIFdoZW4gdGhlIG1hcHBpbmcgaXMgcGFzc2VkIHRvIHRoZSBjb21waWxlciwgaXQgd2lsbCByZXBsYWNlIGNhbGxzIHRvCiAqIGdvb2cuZ2V0Q3NzTmFtZSB3aXRoIHRoZSBzdHJpbmdzIGZyb20gdGhlIG1hcHBpbmcsIGUuZy4KICogICAgIHZhciB4ID0gZ29vZy5nZXRDc3NOYW1lKCdmb28nKTsKICogICAgIHZhciB5ID0gZ29vZy5nZXRDc3NOYW1lKHRoaXMuYmFzZUNsYXNzLCAnYWN0aXZlJyk7CiAqICBiZWNvbWVzOgogKiAgICAgdmFyIHggPSAnZm9vJzsKICogICAgIHZhciB5ID0gdGhpcy5iYXNlQ2xhc3MgKyAnLWFjdGl2ZSc7CiAqCiAqIElmIG9uZSBhcmd1bWVudCBpcyBwYXNzZWQgaXQgd2lsbCBiZSBwcm9jZXNzZWQsIGlmIHR3byBhcmUgcGFzc2VkIG9ubHkgdGhlCiAqIG1vZGlmaWVyIHdpbGwgYmUgcHJvY2Vzc2VkLCBhcyBpdCBpcyBhc3N1bWVkIHRoZSBmaXJzdCBhcmd1bWVudCB3YXMgZ2VuZXJhdGVkCiAqIGFzIGEgcmVzdWx0IG9mIGNhbGxpbmcgZ29vZy5nZXRDc3NOYW1lLgogKgogKiBAcGFyYW0ge3N0cmluZ30gY2xhc3NOYW1lIFRoZSBjbGFzcyBuYW1lLgogKiBAcGFyYW0ge3N0cmluZz19IG9wdF9tb2RpZmllciBBIG1vZGlmaWVyIHRvIGJlIGFwcGVuZGVkIHRvIHRoZSBjbGFzcyBuYW1lLgogKiBAcmV0dXJuIHtzdHJpbmd9IFRoZSBjbGFzcyBuYW1lIG9yIHRoZSBjb25jYXRlbmF0aW9uIG9mIHRoZSBjbGFzcyBuYW1lIGFuZAogKiAgICAgdGhlIG1vZGlmaWVyLgogKi8KZ29vZy5nZXRDc3NOYW1lID0gZnVuY3Rpb24oY2xhc3NOYW1lLCBvcHRfbW9kaWZpZXIpIHsKICAvLyBTdHJpbmcoKSBpcyB1c2VkIGZvciBjb21wYXRpYmlsaXR5IHdpdGggY29tcGlsZWQgc295IHdoZXJlIHRoZSBwYXNzZWQKICAvLyBjbGFzc05hbWUgY2FuIGJlIG5vbi1zdHJpbmcgb2JqZWN0cy4KICBpZiAoU3RyaW5nKGNsYXNzTmFtZSkuY2hhckF0KDApID09ICcuJykgewogICAgdGhyb3cgbmV3IEVycm9yKAogICAgICAgICdjbGFzc05hbWUgcGFzc2VkIGluIGdvb2cuZ2V0Q3NzTmFtZSBtdXN0IG5vdCBzdGFydCB3aXRoICIuIi4nICsKICAgICAgICAnIFlvdSBwYXNzZWQ6ICcgKyBjbGFzc05hbWUpOwogIH0KCiAgdmFyIGdldE1hcHBpbmcgPSBmdW5jdGlvbihjc3NOYW1lKSB7CiAgICByZXR1cm4gZ29vZy5jc3NOYW1lTWFwcGluZ19bY3NzTmFtZV0gfHwgY3NzTmFtZTsKICB9OwoKICB2YXIgcmVuYW1lQnlQYXJ0cyA9IGZ1bmN0aW9uKGNzc05hbWUpIHsKICAgIC8vIFJlbWFwIGFsbCB0aGUgcGFydHMgaW5kaXZpZHVhbGx5LgogICAgdmFyIHBhcnRzID0gY3NzTmFtZS5zcGxpdCgnLScpOwogICAgdmFyIG1hcHBlZCA9IFtdOwogICAgZm9yICh2YXIgaSA9IDA7IGkgPCBwYXJ0cy5sZW5ndGg7IGkrKykgewogICAgICBtYXBwZWQucHVzaChnZXRNYXBwaW5nKHBhcnRzW2ldKSk7CiAgICB9CiAgICByZXR1cm4gbWFwcGVkLmpvaW4oJy0nKTsKICB9OwoKICB2YXIgcmVuYW1lOwogIGlmIChnb29nLmNzc05hbWVNYXBwaW5nXykgewogICAgcmVuYW1lID0KICAgICAgICBnb29nLmNzc05hbWVNYXBwaW5nU3R5bGVfID09ICdCWV9XSE9MRScgPyBnZXRNYXBwaW5nIDogcmVuYW1lQnlQYXJ0czsKICB9IGVsc2UgewogICAgcmVuYW1lID0gZnVuY3Rpb24oYSkgewogICAgICByZXR1cm4gYTsKICAgIH07CiAgfQoKICB2YXIgcmVzdWx0ID0KICAgICAgb3B0X21vZGlmaWVyID8gY2xhc3NOYW1lICsgJy0nICsgcmVuYW1lKG9wdF9tb2RpZmllcikgOiByZW5hbWUoY2xhc3NOYW1lKTsKCiAgLy8gVGhlIHNwZWNpYWwgQ0xPU1VSRV9DU1NfTkFNRV9NQVBfRk4gYWxsb3dzIHVzZXJzIHRvIHNwZWNpZnkgZnVydGhlcgogIC8vIHByb2Nlc3Npbmcgb2YgdGhlIGNsYXNzIG5hbWUuCiAgaWYgKGdvb2cuZ2xvYmFsLkNMT1NVUkVfQ1NTX05BTUVfTUFQX0ZOKSB7CiAgICByZXR1cm4gZ29vZy5nbG9iYWwuQ0xPU1VSRV9DU1NfTkFNRV9NQVBfRk4ocmVzdWx0KTsKICB9CgogIHJldHVybiByZXN1bHQ7Cn07CgoKLyoqCiAqIFNldHMgdGhlIG1hcCB0byBjaGVjayB3aGVuIHJldHVybmluZyBhIHZhbHVlIGZyb20gZ29vZy5nZXRDc3NOYW1lKCkuIEV4YW1wbGU6CiAqIDxwcmU+CiAqIGdvb2cuc2V0Q3NzTmFtZU1hcHBpbmcoewogKiAgICJnb29nIjogImEiLAogKiAgICJkaXNhYmxlZCI6ICJiIiwKICogfSk7CiAqCiAqIHZhciB4ID0gZ29vZy5nZXRDc3NOYW1lKCdnb29nJyk7CiAqIC8vIFRoZSBmb2xsb3dpbmcgZXZhbHVhdGVzIHRvOiAiYSBhLWIiLgogKiBnb29nLmdldENzc05hbWUoJ2dvb2cnKSArICcgJyArIGdvb2cuZ2V0Q3NzTmFtZSh4LCAnZGlzYWJsZWQnKQogKiA8L3ByZT4KICogV2hlbiBkZWNsYXJlZCBhcyBhIG1hcCBvZiBzdHJpbmcgbGl0ZXJhbHMgdG8gc3RyaW5nIGxpdGVyYWxzLCB0aGUgSlNDb21waWxlcgogKiB3aWxsIHJlcGxhY2UgYWxsIGNhbGxzIHRvIGdvb2cuZ2V0Q3NzTmFtZSgpIHVzaW5nIHRoZSBzdXBwbGllZCBtYXAgaWYgdGhlCiAqIC0tcHJvY2Vzc19jbG9zdXJlX3ByaW1pdGl2ZXMgZmxhZyBpcyBzZXQuCiAqCiAqIEBwYXJhbSB7IU9iamVjdH0gbWFwcGluZyBBIG1hcCBvZiBzdHJpbmdzIHRvIHN0cmluZ3Mgd2hlcmUga2V5cyBhcmUgcG9zc2libGUKICogICAgIGFyZ3VtZW50cyB0byBnb29nLmdldENzc05hbWUoKSBhbmQgdmFsdWVzIGFyZSB0aGUgY29ycmVzcG9uZGluZyB2YWx1ZXMKICogICAgIHRoYXQgc2hvdWxkIGJlIHJldHVybmVkLgogKiBAcGFyYW0ge3N0cmluZz19IG9wdF9zdHlsZSBUaGUgc3R5bGUgb2YgY3NzIG5hbWUgbWFwcGluZy4gVGhlcmUgYXJlIHR3byB2YWxpZAogKiAgICAgb3B0aW9uczogJ0JZX1BBUlQnLCBhbmQgJ0JZX1dIT0xFJy4KICogQHNlZSBnb29nLmdldENzc05hbWUgZm9yIGEgZGVzY3JpcHRpb24uCiAqLwpnb29nLnNldENzc05hbWVNYXBwaW5nID0gZnVuY3Rpb24obWFwcGluZywgb3B0X3N0eWxlKSB7CiAgZ29vZy5jc3NOYW1lTWFwcGluZ18gPSBtYXBwaW5nOwogIGdvb2cuY3NzTmFtZU1hcHBpbmdTdHlsZV8gPSBvcHRfc3R5bGU7Cn07CgoKLyoqCiAqIFRvIHVzZSBDU1MgcmVuYW1pbmcgaW4gY29tcGlsZWQgbW9kZSwgb25lIG9mIHRoZSBpbnB1dCBmaWxlcyBzaG91bGQgaGF2ZSBhCiAqIGNhbGwgdG8gZ29vZy5zZXRDc3NOYW1lTWFwcGluZygpIHdpdGggYW4gb2JqZWN0IGxpdGVyYWwgdGhhdCB0aGUgSlNDb21waWxlcgogKiBjYW4gZXh0cmFjdCBhbmQgdXNlIHRvIHJlcGxhY2UgYWxsIGNhbGxzIHRvIGdvb2cuZ2V0Q3NzTmFtZSgpLiBJbiB1bmNvbXBpbGVkCiAqIG1vZGUsIEphdmFTY3JpcHQgY29kZSBzaG91bGQgYmUgbG9hZGVkIGJlZm9yZSB0aGlzIGJhc2UuanMgZmlsZSB0aGF0IGRlY2xhcmVzCiAqIGEgZ2xvYmFsIHZhcmlhYmxlLCBDTE9TVVJFX0NTU19OQU1FX01BUFBJTkcsIHdoaWNoIGlzIHVzZWQgYmVsb3cuIFRoaXMgaXMKICogdG8gZW5zdXJlIHRoYXQgdGhlIG1hcHBpbmcgaXMgbG9hZGVkIGJlZm9yZSBhbnkgY2FsbHMgdG8gZ29vZy5nZXRDc3NOYW1lKCkKICogYXJlIG1hZGUgaW4gdW5jb21waWxlZCBtb2RlLgogKgogKiBBIGhvb2sgZm9yIG92ZXJyaWRpbmcgdGhlIENTUyBuYW1lIG1hcHBpbmcuCiAqIEB0eXBlIHshT2JqZWN0PHN0cmluZywgc3RyaW5nPnx1bmRlZmluZWR9CiAqLwpnb29nLmdsb2JhbC5DTE9TVVJFX0NTU19OQU1FX01BUFBJTkc7CgoKaWYgKCFDT01QSUxFRCAmJiBnb29nLmdsb2JhbC5DTE9TVVJFX0NTU19OQU1FX01BUFBJTkcpIHsKICAvLyBUaGlzIGRvZXMgbm90IGNhbGwgZ29vZy5zZXRDc3NOYW1lTWFwcGluZygpIGJlY2F1c2UgdGhlIEpTQ29tcGlsZXIKICAvLyByZXF1aXJlcyB0aGF0IGdvb2cuc2V0Q3NzTmFtZU1hcHBpbmcoKSBiZSBjYWxsZWQgd2l0aCBhbiBvYmplY3QgbGl0ZXJhbC4KICBnb29nLmNzc05hbWVNYXBwaW5nXyA9IGdvb2cuZ2xvYmFsLkNMT1NVUkVfQ1NTX05BTUVfTUFQUElORzsKfQoKCi8qKgogKiBHZXRzIGEgbG9jYWxpemVkIG1lc3NhZ2UuCiAqCiAqIFRoaXMgZnVuY3Rpb24gaXMgYSBjb21waWxlciBwcmltaXRpdmUuIElmIHlvdSBnaXZlIHRoZSBjb21waWxlciBhIGxvY2FsaXplZAogKiBtZXNzYWdlIGJ1bmRsZSwgaXQgd2lsbCByZXBsYWNlIHRoZSBzdHJpbmcgYXQgY29tcGlsZS10aW1lIHdpdGggYSBsb2NhbGl6ZWQKICogdmVyc2lvbiwgYW5kIGV4cGFuZCBnb29nLmdldE1zZyBjYWxsIHRvIGEgY29uY2F0ZW5hdGVkIHN0cmluZy4KICoKICogTWVzc2FnZXMgbXVzdCBiZSBpbml0aWFsaXplZCBpbiB0aGUgZm9ybToKICogPGNvZGU+CiAqIHZhciBNU0dfTkFNRSA9IGdvb2cuZ2V0TXNnKCdIZWxsbyB7JHBsYWNlaG9sZGVyfScsIHsncGxhY2Vob2xkZXInOiAnd29ybGQnfSk7CiAqIDwvY29kZT4KICoKICogVGhpcyBmdW5jdGlvbiBwcm9kdWNlcyBhIHN0cmluZyB3aGljaCBzaG91bGQgYmUgdHJlYXRlZCBhcyBwbGFpbiB0ZXh0LiBVc2UKICoge0BsaW5rIGdvb2cuaHRtbC5TYWZlSHRtbEZvcm1hdHRlcn0gaW4gY29uanVuY3Rpb24gd2l0aCBnb29nLmdldE1zZyB0bwogKiBwcm9kdWNlIFNhZmVIdG1sLgogKgogKiBAcGFyYW0ge3N0cmluZ30gc3RyIFRyYW5zbGF0YWJsZSBzdHJpbmcsIHBsYWNlcyBob2xkZXJzIGluIHRoZSBmb3JtIHskZm9vfS4KICogQHBhcmFtIHtPYmplY3Q8c3RyaW5nLCBzdHJpbmc+PX0gb3B0X3ZhbHVlcyBNYXBzIHBsYWNlIGhvbGRlciBuYW1lIHRvIHZhbHVlLgogKiBAcGFyYW0ge3todG1sOiBib29sZWFufT19IG9wdF9vcHRpb25zIE9wdGlvbnM6CiAqICAgICBodG1sOiBFc2NhcGUgJzwnIGluIHN0ciB0byAnJmx0OycuIFVzZWQgYnkgQ2xvc3VyZSBUZW1wbGF0ZXMgd2hlcmUgdGhlCiAqICAgICBnZW5lcmF0ZWQgY29kZSBzaXplIGFuZCBwZXJmb3JtYW5jZSBpcyBjcml0aWNhbCB3aGljaCBpcyB3aHkge0BsaW5rCiAqICAgICBnb29nLmh0bWwuU2FmZUh0bWxGb3JtYXR0ZXJ9IGlzIG5vdCB1c2VkLiBUaGUgdmFsdWUgbXVzdCBiZSBsaXRlcmFsIHRydWUKICogICAgIG9yIGZhbHNlLgogKiBAcmV0dXJuIHtzdHJpbmd9IG1lc3NhZ2Ugd2l0aCBwbGFjZWhvbGRlcnMgZmlsbGVkLgogKi8KZ29vZy5nZXRNc2cgPSBmdW5jdGlvbihzdHIsIG9wdF92YWx1ZXMsIG9wdF9vcHRpb25zKSB7CiAgaWYgKG9wdF9vcHRpb25zICYmIG9wdF9vcHRpb25zLmh0bWwpIHsKICAgIC8vIE5vdGUgdGhhdCAnJicgaXMgbm90IHJlcGxhY2VkIGJlY2F1c2UgdGhlIHRyYW5zbGF0aW9uIGNhbiBjb250YWluIEhUTUwKICAgIC8vIGVudGl0aWVzLgogICAgc3RyID0gc3RyLnJlcGxhY2UoLzwvZywgJyZsdDsnKTsKICB9CiAgaWYgKG9wdF92YWx1ZXMpIHsKICAgIHN0ciA9IHN0ci5yZXBsYWNlKC9ce1wkKFtefV0rKX0vZywgZnVuY3Rpb24obWF0Y2gsIGtleSkgewogICAgICByZXR1cm4gKG9wdF92YWx1ZXMgIT0gbnVsbCAmJiBrZXkgaW4gb3B0X3ZhbHVlcykgPyBvcHRfdmFsdWVzW2tleV0gOgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtYXRjaDsKICAgIH0pOwogIH0KICByZXR1cm4gc3RyOwp9OwoKCi8qKgogKiBHZXRzIGEgbG9jYWxpemVkIG1lc3NhZ2UuIElmIHRoZSBtZXNzYWdlIGRvZXMgbm90IGhhdmUgYSB0cmFuc2xhdGlvbiwgZ2l2ZXMgYQogKiBmYWxsYmFjayBtZXNzYWdlLgogKgogKiBUaGlzIGlzIHVzZWZ1bCB3aGVuIGludHJvZHVjaW5nIGEgbmV3IG1lc3NhZ2UgdGhhdCBoYXMgbm90IHlldCBiZWVuCiAqIHRyYW5zbGF0ZWQgaW50byBhbGwgbGFuZ3VhZ2VzLgogKgogKiBUaGlzIGZ1bmN0aW9uIGlzIGEgY29tcGlsZXIgcHJpbWl0aXZlLiBNdXN0IGJlIHVzZWQgaW4gdGhlIGZvcm06CiAqIDxjb2RlPnZhciB4ID0gZ29vZy5nZXRNc2dXaXRoRmFsbGJhY2soTVNHX0EsIE1TR19CKTs8L2NvZGU+CiAqIHdoZXJlIE1TR19BIGFuZCBNU0dfQiB3ZXJlIGluaXRpYWxpemVkIHdpdGggZ29vZy5nZXRNc2cuCiAqCiAqIEBwYXJhbSB7c3RyaW5nfSBhIFRoZSBwcmVmZXJyZWQgbWVzc2FnZS4KICogQHBhcmFtIHtzdHJpbmd9IGIgVGhlIGZhbGxiYWNrIG1lc3NhZ2UuCiAqIEByZXR1cm4ge3N0cmluZ30gVGhlIGJlc3QgdHJhbnNsYXRlZCBtZXNzYWdlLgogKi8KZ29vZy5nZXRNc2dXaXRoRmFsbGJhY2sgPSBmdW5jdGlvbihhLCBiKSB7CiAgcmV0dXJuIGE7Cn07CgoKLyoqCiAqIEV4cG9zZXMgYW4gdW5vYmZ1c2NhdGVkIGdsb2JhbCBuYW1lc3BhY2UgcGF0aCBmb3IgdGhlIGdpdmVuIG9iamVjdC4KICogTm90ZSB0aGF0IGZpZWxkcyBvZiB0aGUgZXhwb3J0ZWQgb2JqZWN0ICp3aWxsKiBiZSBvYmZ1c2NhdGVkLCB1bmxlc3MgdGhleSBhcmUKICogZXhwb3J0ZWQgaW4gdHVybiB2aWEgdGhpcyBmdW5jdGlvbiBvciBnb29nLmV4cG9ydFByb3BlcnR5LgogKgogKiBBbHNvIGhhbmR5IGZvciBtYWtpbmcgcHVibGljIGl0ZW1zIHRoYXQgYXJlIGRlZmluZWQgaW4gYW5vbnltb3VzIGNsb3N1cmVzLgogKgogKiBleC4gZ29vZy5leHBvcnRTeW1ib2woJ3B1YmxpYy5wYXRoLkZvbycsIEZvbyk7CiAqCiAqIGV4LiBnb29nLmV4cG9ydFN5bWJvbCgncHVibGljLnBhdGguRm9vLnN0YXRpY0Z1bmN0aW9uJywgRm9vLnN0YXRpY0Z1bmN0aW9uKTsKICogICAgIHB1YmxpYy5wYXRoLkZvby5zdGF0aWNGdW5jdGlvbigpOwogKgogKiBleC4gZ29vZy5leHBvcnRTeW1ib2woJ3B1YmxpYy5wYXRoLkZvby5wcm90b3R5cGUubXlNZXRob2QnLAogKiAgICAgICAgICAgICAgICAgICAgICAgRm9vLnByb3RvdHlwZS5teU1ldGhvZCk7CiAqICAgICBuZXcgcHVibGljLnBhdGguRm9vKCkubXlNZXRob2QoKTsKICoKICogQHBhcmFtIHtzdHJpbmd9IHB1YmxpY1BhdGggVW5vYmZ1c2NhdGVkIG5hbWUgdG8gZXhwb3J0LgogKiBAcGFyYW0geyp9IG9iamVjdCBPYmplY3QgdGhlIG5hbWUgc2hvdWxkIHBvaW50IHRvLgogKiBAcGFyYW0ge09iamVjdD19IG9wdF9vYmplY3RUb0V4cG9ydFRvIFRoZSBvYmplY3QgdG8gYWRkIHRoZSBwYXRoIHRvOyBkZWZhdWx0CiAqICAgICBpcyBnb29nLmdsb2JhbC4KICovCmdvb2cuZXhwb3J0U3ltYm9sID0gZnVuY3Rpb24ocHVibGljUGF0aCwgb2JqZWN0LCBvcHRfb2JqZWN0VG9FeHBvcnRUbykgewogIGdvb2cuZXhwb3J0UGF0aF8ocHVibGljUGF0aCwgb2JqZWN0LCBvcHRfb2JqZWN0VG9FeHBvcnRUbyk7Cn07CgoKLyoqCiAqIEV4cG9ydHMgYSBwcm9wZXJ0eSB1bm9iZnVzY2F0ZWQgaW50byB0aGUgb2JqZWN0J3MgbmFtZXNwYWNlLgogKiBleC4gZ29vZy5leHBvcnRQcm9wZXJ0eShGb28sICdzdGF0aWNGdW5jdGlvbicsIEZvby5zdGF0aWNGdW5jdGlvbik7CiAqIGV4LiBnb29nLmV4cG9ydFByb3BlcnR5KEZvby5wcm90b3R5cGUsICdteU1ldGhvZCcsIEZvby5wcm90b3R5cGUubXlNZXRob2QpOwogKiBAcGFyYW0ge09iamVjdH0gb2JqZWN0IE9iamVjdCB3aG9zZSBzdGF0aWMgcHJvcGVydHkgaXMgYmVpbmcgZXhwb3J0ZWQuCiAqIEBwYXJhbSB7c3RyaW5nfSBwdWJsaWNOYW1lIFVub2JmdXNjYXRlZCBuYW1lIHRvIGV4cG9ydC4KICogQHBhcmFtIHsqfSBzeW1ib2wgT2JqZWN0IHRoZSBuYW1lIHNob3VsZCBwb2ludCB0by4KICovCmdvb2cuZXhwb3J0UHJvcGVydHkgPSBmdW5jdGlvbihvYmplY3QsIHB1YmxpY05hbWUsIHN5bWJvbCkgewogIG9iamVjdFtwdWJsaWNOYW1lXSA9IHN5bWJvbDsKfTsKCgovKioKICogSW5oZXJpdCB0aGUgcHJvdG90eXBlIG1ldGhvZHMgZnJvbSBvbmUgY29uc3RydWN0b3IgaW50byBhbm90aGVyLgogKgogKiBVc2FnZToKICogPHByZT4KICogZnVuY3Rpb24gUGFyZW50Q2xhc3MoYSwgYikgeyB9CiAqIFBhcmVudENsYXNzLnByb3RvdHlwZS5mb28gPSBmdW5jdGlvbihhKSB7IH07CiAqCiAqIGZ1bmN0aW9uIENoaWxkQ2xhc3MoYSwgYiwgYykgewogKiAgIENoaWxkQ2xhc3MuYmFzZSh0aGlzLCAnY29uc3RydWN0b3InLCBhLCBiKTsKICogfQogKiBnb29nLmluaGVyaXRzKENoaWxkQ2xhc3MsIFBhcmVudENsYXNzKTsKICoKICogdmFyIGNoaWxkID0gbmV3IENoaWxkQ2xhc3MoJ2EnLCAnYicsICdzZWUnKTsKICogY2hpbGQuZm9vKCk7IC8vIFRoaXMgd29ya3MuCiAqIDwvcHJlPgogKgogKiBAcGFyYW0geyFGdW5jdGlvbn0gY2hpbGRDdG9yIENoaWxkIGNsYXNzLgogKiBAcGFyYW0geyFGdW5jdGlvbn0gcGFyZW50Q3RvciBQYXJlbnQgY2xhc3MuCiAqIEBzdXBwcmVzcyB7c3RyaWN0TWlzc2luZ1Byb3BlcnRpZXN9IHN1cGVyQ2xhc3NfIGFuZCBiYXNlIGlzIG5vdCBkZWZpbmVkIG9uCiAqICAgIEZ1bmN0aW9uLgogKi8KZ29vZy5pbmhlcml0cyA9IGZ1bmN0aW9uKGNoaWxkQ3RvciwgcGFyZW50Q3RvcikgewogIC8qKiBAY29uc3RydWN0b3IgKi8KICBmdW5jdGlvbiB0ZW1wQ3RvcigpIHt9CiAgdGVtcEN0b3IucHJvdG90eXBlID0gcGFyZW50Q3Rvci5wcm90b3R5cGU7CiAgY2hpbGRDdG9yLnN1cGVyQ2xhc3NfID0gcGFyZW50Q3Rvci5wcm90b3R5cGU7CiAgY2hpbGRDdG9yLnByb3RvdHlwZSA9IG5ldyB0ZW1wQ3RvcigpOwogIC8qKiBAb3ZlcnJpZGUgKi8KICBjaGlsZEN0b3IucHJvdG90eXBlLmNvbnN0cnVjdG9yID0gY2hpbGRDdG9yOwoKICAvKioKICAgKiBDYWxscyBzdXBlcmNsYXNzIGNvbnN0cnVjdG9yL21ldGhvZC4KICAgKgogICAqIFRoaXMgZnVuY3Rpb24gaXMgb25seSBhdmFpbGFibGUgaWYgeW91IHVzZSBnb29nLmluaGVyaXRzIHRvCiAgICogZXhwcmVzcyBpbmhlcml0YW5jZSByZWxhdGlvbnNoaXBzIGJldHdlZW4gY2xhc3Nlcy4KICAgKgogICAqIE5PVEU6IFRoaXMgaXMgYSByZXBsYWNlbWVudCBmb3IgZ29vZy5iYXNlIGFuZCBmb3Igc3VwZXJDbGFzc18KICAgKiBwcm9wZXJ0eSBkZWZpbmVkIGluIGNoaWxkQ3Rvci4KICAgKgogICAqIEBwYXJhbSB7IU9iamVjdH0gbWUgU2hvdWxkIGFsd2F5cyBiZSAidGhpcyIuCiAgICogQHBhcmFtIHtzdHJpbmd9IG1ldGhvZE5hbWUgVGhlIG1ldGhvZCBuYW1lIHRvIGNhbGwuIENhbGxpbmcKICAgKiAgICAgc3VwZXJjbGFzcyBjb25zdHJ1Y3RvciBjYW4gYmUgZG9uZSB3aXRoIHRoZSBzcGVjaWFsIHN0cmluZwogICAqICAgICAnY29uc3RydWN0b3InLgogICAqIEBwYXJhbSB7Li4uKn0gdmFyX2FyZ3MgVGhlIGFyZ3VtZW50cyB0byBwYXNzIHRvIHN1cGVyY2xhc3MKICAgKiAgICAgbWV0aG9kL2NvbnN0cnVjdG9yLgogICAqIEByZXR1cm4geyp9IFRoZSByZXR1cm4gdmFsdWUgb2YgdGhlIHN1cGVyY2xhc3MgbWV0aG9kL2NvbnN0cnVjdG9yLgogICAqLwogIGNoaWxkQ3Rvci5iYXNlID0gZnVuY3Rpb24obWUsIG1ldGhvZE5hbWUsIHZhcl9hcmdzKSB7CiAgICAvLyBDb3B5aW5nIHVzaW5nIGxvb3AgdG8gYXZvaWQgZGVvcCBkdWUgdG8gcGFzc2luZyBhcmd1bWVudHMgb2JqZWN0IHRvCiAgICAvLyBmdW5jdGlvbi4gVGhpcyBpcyBmYXN0ZXIgaW4gbWFueSBKUyBlbmdpbmVzIGFzIG9mIGxhdGUgMjAxNC4KICAgIHZhciBhcmdzID0gbmV3IEFycmF5KGFyZ3VtZW50cy5sZW5ndGggLSAyKTsKICAgIGZvciAodmFyIGkgPSAyOyBpIDwgYXJndW1lbnRzLmxlbmd0aDsgaSsrKSB7CiAgICAgIGFyZ3NbaSAtIDJdID0gYXJndW1lbnRzW2ldOwogICAgfQogICAgcmV0dXJuIHBhcmVudEN0b3IucHJvdG90eXBlW21ldGhvZE5hbWVdLmFwcGx5KG1lLCBhcmdzKTsKICB9Owp9OwoKCi8qKgogKiBDYWxsIHVwIHRvIHRoZSBzdXBlcmNsYXNzLgogKgogKiBJZiB0aGlzIGlzIGNhbGxlZCBmcm9tIGEgY29uc3RydWN0b3IsIHRoZW4gdGhpcyBjYWxscyB0aGUgc3VwZXJjbGFzcwogKiBjb25zdHJ1Y3RvciB3aXRoIGFyZ3VtZW50cyAxLU4uCiAqCiAqIElmIHRoaXMgaXMgY2FsbGVkIGZyb20gYSBwcm90b3R5cGUgbWV0aG9kLCB0aGVuIHlvdSBtdXN0IHBhc3MgdGhlIG5hbWUgb2YgdGhlCiAqIG1ldGhvZCBhcyB0aGUgc2Vjb25kIGFyZ3VtZW50IHRvIHRoaXMgZnVuY3Rpb24uIElmIHlvdSBkbyBub3QsIHlvdSB3aWxsIGdldCBhCiAqIHJ1bnRpbWUgZXJyb3IuIFRoaXMgY2FsbHMgdGhlIHN1cGVyY2xhc3MnIG1ldGhvZCB3aXRoIGFyZ3VtZW50cyAyLU4uCiAqCiAqIFRoaXMgZnVuY3Rpb24gb25seSB3b3JrcyBpZiB5b3UgdXNlIGdvb2cuaW5oZXJpdHMgdG8gZXhwcmVzcyBpbmhlcml0YW5jZQogKiByZWxhdGlvbnNoaXBzIGJldHdlZW4geW91ciBjbGFzc2VzLgogKgogKiBUaGlzIGZ1bmN0aW9uIGlzIGEgY29tcGlsZXIgcHJpbWl0aXZlLiBBdCBjb21waWxlLXRpbWUsIHRoZSBjb21waWxlciB3aWxsIGRvCiAqIG1hY3JvIGV4cGFuc2lvbiB0byByZW1vdmUgYSBsb3Qgb2YgdGhlIGV4dHJhIG92ZXJoZWFkIHRoYXQgdGhpcyBmdW5jdGlvbgogKiBpbnRyb2R1Y2VzLiBUaGUgY29tcGlsZXIgd2lsbCBhbHNvIGVuZm9yY2UgYSBsb3Qgb2YgdGhlIGFzc3VtcHRpb25zIHRoYXQgdGhpcwogKiBmdW5jdGlvbiBtYWtlcywgYW5kIHRyZWF0IGl0IGFzIGEgY29tcGlsZXIgZXJyb3IgaWYgeW91IGJyZWFrIHRoZW0uCiAqCiAqIEBwYXJhbSB7IU9iamVjdH0gbWUgU2hvdWxkIGFsd2F5cyBiZSAidGhpcyIuCiAqIEBwYXJhbSB7Kj19IG9wdF9tZXRob2ROYW1lIFRoZSBtZXRob2QgbmFtZSBpZiBjYWxsaW5nIGEgc3VwZXIgbWV0aG9kLgogKiBAcGFyYW0gey4uLip9IHZhcl9hcmdzIFRoZSByZXN0IG9mIHRoZSBhcmd1bWVudHMuCiAqIEByZXR1cm4geyp9IFRoZSByZXR1cm4gdmFsdWUgb2YgdGhlIHN1cGVyY2xhc3MgbWV0aG9kLgogKiBAc3VwcHJlc3Mge2VzNVN0cmljdH0gVGhpcyBtZXRob2QgY2FuIG5vdCBiZSB1c2VkIGluIHN0cmljdCBtb2RlLCBidXQKICogICAgIGFsbCBDbG9zdXJlIExpYnJhcnkgY29uc3VtZXJzIG11c3QgZGVwZW5kIG9uIHRoaXMgZmlsZS4KICogQGRlcHJlY2F0ZWQgZ29vZy5iYXNlIGlzIG5vdCBzdHJpY3QgbW9kZSBjb21wYXRpYmxlLiAgUHJlZmVyIHRoZSBzdGF0aWMKICogICAgICJiYXNlIiBtZXRob2QgYWRkZWQgdG8gdGhlIGNvbnN0cnVjdG9yIGJ5IGdvb2cuaW5oZXJpdHMKICogICAgIG9yIEVTNiBjbGFzc2VzIGFuZCB0aGUgInN1cGVyIiBrZXl3b3JkLgogKi8KZ29vZy5iYXNlID0gZnVuY3Rpb24obWUsIG9wdF9tZXRob2ROYW1lLCB2YXJfYXJncykgewogIHZhciBjYWxsZXIgPSBhcmd1bWVudHMuY2FsbGVlLmNhbGxlcjsKCiAgaWYgKGdvb2cuU1RSSUNUX01PREVfQ09NUEFUSUJMRSB8fCAoZ29vZy5ERUJVRyAmJiAhY2FsbGVyKSkgewogICAgdGhyb3cgbmV3IEVycm9yKAogICAgICAgICdhcmd1bWVudHMuY2FsbGVyIG5vdCBkZWZpbmVkLiAgZ29vZy5iYXNlKCkgY2Fubm90IGJlIHVzZWQgJyArCiAgICAgICAgJ3dpdGggc3RyaWN0IG1vZGUgY29kZS4gU2VlICcgKwogICAgICAgICdodHRwOi8vd3d3LmVjbWEtaW50ZXJuYXRpb25hbC5vcmcvZWNtYS0yNjIvNS4xLyNzZWMtQycpOwogIH0KCiAgaWYgKHR5cGVvZiBjYWxsZXIuc3VwZXJDbGFzc18gIT09ICd1bmRlZmluZWQnKSB7CiAgICAvLyBDb3B5aW5nIHVzaW5nIGxvb3AgdG8gYXZvaWQgZGVvcCBkdWUgdG8gcGFzc2luZyBhcmd1bWVudHMgb2JqZWN0IHRvCiAgICAvLyBmdW5jdGlvbi4gVGhpcyBpcyBmYXN0ZXIgaW4gbWFueSBKUyBlbmdpbmVzIGFzIG9mIGxhdGUgMjAxNC4KICAgIHZhciBjdG9yQXJncyA9IG5ldyBBcnJheShhcmd1bWVudHMubGVuZ3RoIC0gMSk7CiAgICBmb3IgKHZhciBpID0gMTsgaSA8IGFyZ3VtZW50cy5sZW5ndGg7IGkrKykgewogICAgICBjdG9yQXJnc1tpIC0gMV0gPSBhcmd1bWVudHNbaV07CiAgICB9CiAgICAvLyBUaGlzIGlzIGEgY29uc3RydWN0b3IuIENhbGwgdGhlIHN1cGVyY2xhc3MgY29uc3RydWN0b3IuCiAgICByZXR1cm4gLyoqIEB0eXBlIHshRnVuY3Rpb259ICovIChjYWxsZXIuc3VwZXJDbGFzc18pCiAgICAgICAgLmNvbnN0cnVjdG9yLmFwcGx5KG1lLCBjdG9yQXJncyk7CiAgfQoKICBpZiAodHlwZW9mIG9wdF9tZXRob2ROYW1lICE9ICdzdHJpbmcnICYmIHR5cGVvZiBvcHRfbWV0aG9kTmFtZSAhPSAnc3ltYm9sJykgewogICAgdGhyb3cgbmV3IEVycm9yKAogICAgICAgICdtZXRob2QgbmFtZXMgcHJvdmlkZWQgdG8gZ29vZy5iYXNlIG11c3QgYmUgYSBzdHJpbmcgb3IgYSBzeW1ib2wnKTsKICB9CgogIC8vIENvcHlpbmcgdXNpbmcgbG9vcCB0byBhdm9pZCBkZW9wIGR1ZSB0byBwYXNzaW5nIGFyZ3VtZW50cyBvYmplY3QgdG8KICAvLyBmdW5jdGlvbi4gVGhpcyBpcyBmYXN0ZXIgaW4gbWFueSBKUyBlbmdpbmVzIGFzIG9mIGxhdGUgMjAxNC4KICB2YXIgYXJncyA9IG5ldyBBcnJheShhcmd1bWVudHMubGVuZ3RoIC0gMik7CiAgZm9yICh2YXIgaSA9IDI7IGkgPCBhcmd1bWVudHMubGVuZ3RoOyBpKyspIHsKICAgIGFyZ3NbaSAtIDJdID0gYXJndW1lbnRzW2ldOwogIH0KICB2YXIgZm91bmRDYWxsZXIgPSBmYWxzZTsKICBmb3IgKHZhciBwcm90byA9IG1lLmNvbnN0cnVjdG9yLnByb3RvdHlwZTsgcHJvdG87CiAgICAgICBwcm90byA9IE9iamVjdC5nZXRQcm90b3R5cGVPZihwcm90bykpIHsKICAgIGlmIChwcm90b1tvcHRfbWV0aG9kTmFtZV0gPT09IGNhbGxlcikgewogICAgICBmb3VuZENhbGxlciA9IHRydWU7CiAgICB9IGVsc2UgaWYgKGZvdW5kQ2FsbGVyKSB7CiAgICAgIHJldHVybiBwcm90b1tvcHRfbWV0aG9kTmFtZV0uYXBwbHkobWUsIGFyZ3MpOwogICAgfQogIH0KCiAgLy8gSWYgd2UgZGlkIG5vdCBmaW5kIHRoZSBjYWxsZXIgaW4gdGhlIHByb3RvdHlwZSBjaGFpbiwgdGhlbiBvbmUgb2YgdHdvCiAgLy8gdGhpbmdzIGhhcHBlbmVkOgogIC8vIDEpIFRoZSBjYWxsZXIgaXMgYW4gaW5zdGFuY2UgbWV0aG9kLgogIC8vIDIpIFRoaXMgbWV0aG9kIHdhcyBub3QgY2FsbGVkIGJ5IHRoZSByaWdodCBjYWxsZXIuCiAgaWYgKG1lW29wdF9tZXRob2ROYW1lXSA9PT0gY2FsbGVyKSB7CiAgICByZXR1cm4gbWUuY29uc3RydWN0b3IucHJvdG90eXBlW29wdF9tZXRob2ROYW1lXS5hcHBseShtZSwgYXJncyk7CiAgfSBlbHNlIHsKICAgIHRocm93IG5ldyBFcnJvcigKICAgICAgICAnZ29vZy5iYXNlIGNhbGxlZCBmcm9tIGEgbWV0aG9kIG9mIG9uZSBuYW1lICcgKwogICAgICAgICd0byBhIG1ldGhvZCBvZiBhIGRpZmZlcmVudCBuYW1lJyk7CiAgfQp9OwoKCi8qKgogKiBBbGxvdyBmb3IgYWxpYXNpbmcgd2l0aGluIHNjb3BlIGZ1bmN0aW9ucy4gIFRoaXMgZnVuY3Rpb24gZXhpc3RzIGZvcgogKiB1bmNvbXBpbGVkIGNvZGUgLSBpbiBjb21waWxlZCBjb2RlIHRoZSBjYWxscyB3aWxsIGJlIGlubGluZWQgYW5kIHRoZSBhbGlhc2VzCiAqIGFwcGxpZWQuICBJbiB1bmNvbXBpbGVkIGNvZGUgdGhlIGZ1bmN0aW9uIGlzIHNpbXBseSBydW4gc2luY2UgdGhlIGFsaWFzZXMgYXMKICogd3JpdHRlbiBhcmUgdmFsaWQgSmF2YVNjcmlwdC4KICoKICoKICogQHBhcmFtIHtmdW5jdGlvbigpfSBmbiBGdW5jdGlvbiB0byBjYWxsLiAgVGhpcyBmdW5jdGlvbiBjYW4gY29udGFpbiBhbGlhc2VzCiAqICAgICB0byBuYW1lc3BhY2VzIChlLmcuICJ2YXIgZG9tID0gZ29vZy5kb20iKSBvciBjbGFzc2VzCiAqICAgICAoZS5nLiAidmFyIFRpbWVyID0gZ29vZy5UaW1lciIpLgogKi8KZ29vZy5zY29wZSA9IGZ1bmN0aW9uKGZuKSB7CiAgaWYgKGdvb2cuaXNJbk1vZHVsZUxvYWRlcl8oKSkgewogICAgdGhyb3cgbmV3IEVycm9yKCdnb29nLnNjb3BlIGlzIG5vdCBzdXBwb3J0ZWQgd2l0aGluIGEgbW9kdWxlLicpOwogIH0KICBmbi5jYWxsKGdvb2cuZ2xvYmFsKTsKfTsKCgovKgogKiBUbyBzdXBwb3J0IHVuY29tcGlsZWQsIHN0cmljdCBtb2RlIGJ1bmRsZXMgdGhhdCB1c2UgZXZhbCB0byBkaXZpZGUgc291cmNlCiAqIGxpa2Ugc286CiAqICAgIGV2YWwoJ3NvbWVTb3VyY2U7Ly8jIHNvdXJjZVVybCBzb3VyY2VmaWxlLmpzJyk7CiAqIFdlIG5lZWQgdG8gZXhwb3J0IHRoZSBnbG9iYWxseSBkZWZpbmVkIHN5bWJvbHMgImdvb2ciIGFuZCAiQ09NUElMRUQiLgogKiBFeHBvcnRpbmcgImdvb2ciIGJyZWFrcyB0aGUgY29tcGlsZXIgb3B0aW1pemF0aW9ucywgc28gd2UgcmVxdWlyZWQgdGhhdAogKiBiZSBkZWZpbmVkIGV4dGVybmFsbHkuCiAqIE5PVEU6IFdlIGRvbid0IHVzZSBnb29nLmV4cG9ydFN5bWJvbCBoZXJlIGJlY2F1c2Ugd2UgZG9uJ3Qgd2FudCB0byB0cmlnZ2VyCiAqIGV4dGVybiBnZW5lcmF0aW9uIHdoZW4gdGhhdCBjb21waWxlciBvcHRpb24gaXMgZW5hYmxlZC4KICovCmlmICghQ09NUElMRUQpIHsKICBnb29nLmdsb2JhbFsnQ09NUElMRUQnXSA9IENPTVBJTEVEOwp9CgoKLy89PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLy8gZ29vZy5kZWZpbmVDbGFzcyBpbXBsZW1lbnRhdGlvbgovLz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQoKCi8qKgogKiBDcmVhdGVzIGEgcmVzdHJpY3RlZCBmb3JtIG9mIGEgQ2xvc3VyZSAiY2xhc3MiOgogKiAgIC0gZnJvbSB0aGUgY29tcGlsZXIncyBwZXJzcGVjdGl2ZSwgdGhlIGluc3RhbmNlIHJldHVybmVkIGZyb20gdGhlCiAqICAgICBjb25zdHJ1Y3RvciBpcyBzZWFsZWQgKG5vIG5ldyBwcm9wZXJ0aWVzIG1heSBiZSBhZGRlZCkuICBUaGlzIGVuYWJsZXMKICogICAgIGJldHRlciBjaGVja3MuCiAqICAgLSB0aGUgY29tcGlsZXIgd2lsbCByZXdyaXRlIHRoaXMgZGVmaW5pdGlvbiB0byBhIGZvcm0gdGhhdCBpcyBvcHRpbWFsCiAqICAgICBmb3IgdHlwZSBjaGVja2luZyBhbmQgb3B0aW1pemF0aW9uIChpbml0aWFsbHkgdGhpcyB3aWxsIGJlIGEgbW9yZQogKiAgICAgdHJhZGl0aW9uYWwgZm9ybSkuCiAqCiAqIEBwYXJhbSB7RnVuY3Rpb259IHN1cGVyQ2xhc3MgVGhlIHN1cGVyY2xhc3MsIE9iamVjdCBvciBudWxsLgogKiBAcGFyYW0ge2dvb2cuZGVmaW5lQ2xhc3MuQ2xhc3NEZXNjcmlwdG9yfSBkZWYKICogICAgIEFuIG9iamVjdCBsaXRlcmFsIGRlc2NyaWJpbmcKICogICAgIHRoZSBjbGFzcy4gIEl0IG1heSBoYXZlIHRoZSBmb2xsb3dpbmcgcHJvcGVydGllczoKICogICAgICJjb25zdHJ1Y3RvciI6IHRoZSBjb25zdHJ1Y3RvciBmdW5jdGlvbgogKiAgICAgInN0YXRpY3MiOiBhbiBvYmplY3QgbGl0ZXJhbCBjb250YWluaW5nIG1ldGhvZHMgdG8gYWRkIHRvIHRoZSBjb25zdHJ1Y3RvcgogKiAgICAgICAgYXMgInN0YXRpYyIgbWV0aG9kcyBvciBhIGZ1bmN0aW9uIHRoYXQgd2lsbCByZWNlaXZlIHRoZSBjb25zdHJ1Y3RvcgogKiAgICAgICAgZnVuY3Rpb24gYXMgaXRzIG9ubHkgcGFyYW1ldGVyIHRvIHdoaWNoIHN0YXRpYyBwcm9wZXJ0aWVzIGNhbgogKiAgICAgICAgYmUgYWRkZWQuCiAqICAgICBhbGwgb3RoZXIgcHJvcGVydGllcyBhcmUgYWRkZWQgdG8gdGhlIHByb3RvdHlwZS4KICogQHJldHVybiB7IUZ1bmN0aW9ufSBUaGUgY2xhc3MgY29uc3RydWN0b3IuCiAqIEBkZXByZWNhdGVkIFVzZSBFUzYgY2xhc3Mgc3ludGF4IGluc3RlYWQuCiAqLwpnb29nLmRlZmluZUNsYXNzID0gZnVuY3Rpb24oc3VwZXJDbGFzcywgZGVmKSB7CiAgLy8gVE9ETyhqb2hubGVueik6IGNvbnNpZGVyIG1ha2luZyB0aGUgc3VwZXJDbGFzcyBhbiBvcHRpb25hbCBwYXJhbWV0ZXIuCiAgdmFyIGNvbnN0cnVjdG9yID0gZGVmLmNvbnN0cnVjdG9yOwogIHZhciBzdGF0aWNzID0gZGVmLnN0YXRpY3M7CiAgLy8gV3JhcCB0aGUgY29uc3RydWN0b3IgcHJpb3IgdG8gc2V0dGluZyB1cCB0aGUgcHJvdG90eXBlIGFuZCBzdGF0aWMgbWV0aG9kcy4KICBpZiAoIWNvbnN0cnVjdG9yIHx8IGNvbnN0cnVjdG9yID09IE9iamVjdC5wcm90b3R5cGUuY29uc3RydWN0b3IpIHsKICAgIGNvbnN0cnVjdG9yID0gZnVuY3Rpb24oKSB7CiAgICAgIHRocm93IG5ldyBFcnJvcigKICAgICAgICAgICdjYW5ub3QgaW5zdGFudGlhdGUgYW4gaW50ZXJmYWNlIChubyBjb25zdHJ1Y3RvciBkZWZpbmVkKS4nKTsKICAgIH07CiAgfQoKICB2YXIgY2xzID0gZ29vZy5kZWZpbmVDbGFzcy5jcmVhdGVTZWFsaW5nQ29uc3RydWN0b3JfKGNvbnN0cnVjdG9yLCBzdXBlckNsYXNzKTsKICBpZiAoc3VwZXJDbGFzcykgewogICAgZ29vZy5pbmhlcml0cyhjbHMsIHN1cGVyQ2xhc3MpOwogIH0KCiAgLy8gUmVtb3ZlIGFsbCB0aGUgcHJvcGVydGllcyB0aGF0IHNob3VsZCBub3QgYmUgY29waWVkIHRvIHRoZSBwcm90b3R5cGUuCiAgZGVsZXRlIGRlZi5jb25zdHJ1Y3RvcjsKICBkZWxldGUgZGVmLnN0YXRpY3M7CgogIGdvb2cuZGVmaW5lQ2xhc3MuYXBwbHlQcm9wZXJ0aWVzXyhjbHMucHJvdG90eXBlLCBkZWYpOwogIGlmIChzdGF0aWNzICE9IG51bGwpIHsKICAgIGlmIChzdGF0aWNzIGluc3RhbmNlb2YgRnVuY3Rpb24pIHsKICAgICAgc3RhdGljcyhjbHMpOwogICAgfSBlbHNlIHsKICAgICAgZ29vZy5kZWZpbmVDbGFzcy5hcHBseVByb3BlcnRpZXNfKGNscywgc3RhdGljcyk7CiAgICB9CiAgfQoKICByZXR1cm4gY2xzOwp9OwoKCi8qKgogKiBAdHlwZWRlZiB7ewogKiAgIGNvbnN0cnVjdG9yOiAoIUZ1bmN0aW9ufHVuZGVmaW5lZCksCiAqICAgc3RhdGljczogKE9iamVjdHx1bmRlZmluZWR8ZnVuY3Rpb24oRnVuY3Rpb24pOnZvaWQpCiAqIH19CiAqLwpnb29nLmRlZmluZUNsYXNzLkNsYXNzRGVzY3JpcHRvcjsKCgovKioKICogQGRlZmluZSB7Ym9vbGVhbn0gV2hldGhlciB0aGUgaW5zdGFuY2VzIHJldHVybmVkIGJ5IGdvb2cuZGVmaW5lQ2xhc3Mgc2hvdWxkCiAqICAgICBiZSBzZWFsZWQgd2hlbiBwb3NzaWJsZS4KICoKICogV2hlbiBzZWFsaW5nIGlzIGRpc2FibGVkIHRoZSBjb25zdHJ1Y3RvciBmdW5jdGlvbiB3aWxsIG5vdCBiZSB3cmFwcGVkIGJ5CiAqIGdvb2cuZGVmaW5lQ2xhc3MsIG1ha2luZyBpdCBpbmNvbXBhdGlibGUgd2l0aCBFUzYgY2xhc3MgbWV0aG9kcy4KICovCmdvb2cuZGVmaW5lQ2xhc3MuU0VBTF9DTEFTU19JTlNUQU5DRVMgPQogICAgZ29vZy5kZWZpbmUoJ2dvb2cuZGVmaW5lQ2xhc3MuU0VBTF9DTEFTU19JTlNUQU5DRVMnLCBnb29nLkRFQlVHKTsKCgovKioKICogSWYgZ29vZy5kZWZpbmVDbGFzcy5TRUFMX0NMQVNTX0lOU1RBTkNFUyBpcyBlbmFibGVkIGFuZCBPYmplY3Quc2VhbCBpcwogKiBkZWZpbmVkLCB0aGlzIGZ1bmN0aW9uIHdpbGwgd3JhcCB0aGUgY29uc3RydWN0b3IgaW4gYSBmdW5jdGlvbiB0aGF0IHNlYWxzIHRoZQogKiByZXN1bHRzIG9mIHRoZSBwcm92aWRlZCBjb25zdHJ1Y3RvciBmdW5jdGlvbi4KICoKICogQHBhcmFtIHshRnVuY3Rpb259IGN0ciBUaGUgY29uc3RydWN0b3Igd2hvc2UgcmVzdWx0cyBtYXliZSBiZSBzZWFsZWQuCiAqIEBwYXJhbSB7RnVuY3Rpb259IHN1cGVyQ2xhc3MgVGhlIHN1cGVyY2xhc3MgY29uc3RydWN0b3IuCiAqIEByZXR1cm4geyFGdW5jdGlvbn0gVGhlIHJlcGxhY2VtZW50IGNvbnN0cnVjdG9yLgogKiBAcHJpdmF0ZQogKi8KZ29vZy5kZWZpbmVDbGFzcy5jcmVhdGVTZWFsaW5nQ29uc3RydWN0b3JfID0gZnVuY3Rpb24oY3RyLCBzdXBlckNsYXNzKSB7CiAgaWYgKCFnb29nLmRlZmluZUNsYXNzLlNFQUxfQ0xBU1NfSU5TVEFOQ0VTKSB7CiAgICAvLyBEbyBub3cgd3JhcCB0aGUgY29uc3RydWN0b3Igd2hlbiBzZWFsaW5nIGlzIGRpc2FibGVkLiBBbmd1bGFyIGNvZGUKICAgIC8vIGRlcGVuZHMgb24gdGhpcyBmb3IgaW5qZWN0aW9uIHRvIHdvcmsgcHJvcGVybHkuCiAgICByZXR1cm4gY3RyOwogIH0KCiAgLy8gQ29tcHV0ZSB3aGV0aGVyIHRoZSBjb25zdHJ1Y3RvciBpcyBzZWFsYWJsZSBhdCBkZWZpbml0aW9uIHRpbWUsIHJhdGhlcgogIC8vIHRoYW4gd2hlbiB0aGUgaW5zdGFuY2UgaXMgYmVpbmcgY29uc3RydWN0ZWQuCiAgdmFyIHN1cGVyY2xhc3NTZWFsYWJsZSA9ICFnb29nLmRlZmluZUNsYXNzLmlzVW5zZWFsYWJsZV8oc3VwZXJDbGFzcyk7CgogIC8qKgogICAqIEB0aGlzIHtPYmplY3R9CiAgICogQHJldHVybiB7P30KICAgKi8KICB2YXIgd3JhcHBlZEN0ciA9IGZ1bmN0aW9uKCkgewogICAgLy8gRG9uJ3Qgc2VhbCBhbiBpbnN0YW5jZSBvZiBhIHN1YmNsYXNzIHdoZW4gaXQgY2FsbHMgdGhlIGNvbnN0cnVjdG9yIG9mCiAgICAvLyBpdHMgc3VwZXIgY2xhc3MgYXMgdGhlcmUgaXMgbW9zdCBsaWtlbHkgc3RpbGwgc2V0dXAgdG8gZG8uCiAgICB2YXIgaW5zdGFuY2UgPSBjdHIuYXBwbHkodGhpcywgYXJndW1lbnRzKSB8fCB0aGlzOwogICAgaW5zdGFuY2VbZ29vZy5VSURfUFJPUEVSVFlfXSA9IGluc3RhbmNlW2dvb2cuVUlEX1BST1BFUlRZX107CgogICAgaWYgKHRoaXMuY29uc3RydWN0b3IgPT09IHdyYXBwZWRDdHIgJiYgc3VwZXJjbGFzc1NlYWxhYmxlICYmCiAgICAgICAgT2JqZWN0LnNlYWwgaW5zdGFuY2VvZiBGdW5jdGlvbikgewogICAgICBPYmplY3Quc2VhbChpbnN0YW5jZSk7CiAgICB9CiAgICByZXR1cm4gaW5zdGFuY2U7CiAgfTsKCiAgcmV0dXJuIHdyYXBwZWRDdHI7Cn07CgoKLyoqCiAqIEBwYXJhbSB7RnVuY3Rpb259IGN0ciBUaGUgY29uc3RydWN0b3IgdG8gdGVzdC4KICogQHJldHVybiB7Ym9vbGVhbn0gV2hldGhlciB0aGUgY29uc3RydWN0b3IgaGFzIGJlZW4gdGFnZ2VkIGFzIHVuc2VhbGFibGUKICogICAgIHVzaW5nIGdvb2cudGFnVW5zZWFsYWJsZUNsYXNzLgogKiBAcHJpdmF0ZQogKi8KZ29vZy5kZWZpbmVDbGFzcy5pc1Vuc2VhbGFibGVfID0gZnVuY3Rpb24oY3RyKSB7CiAgcmV0dXJuIGN0ciAmJiBjdHIucHJvdG90eXBlICYmCiAgICAgIGN0ci5wcm90b3R5cGVbZ29vZy5VTlNFQUxBQkxFX0NPTlNUUlVDVE9SX1BST1BFUlRZX107Cn07CgoKLy8gVE9ETyhqb2hubGVueik6IHNoYXJlIHRoZXNlIHZhbHVlcyB3aXRoIHRoZSBnb29nLm9iamVjdAovKioKICogVGhlIG5hbWVzIG9mIHRoZSBmaWVsZHMgdGhhdCBhcmUgZGVmaW5lZCBvbiBPYmplY3QucHJvdG90eXBlLgogKiBAdHlwZSB7IUFycmF5PHN0cmluZz59CiAqIEBwcml2YXRlCiAqIEBjb25zdAogKi8KZ29vZy5kZWZpbmVDbGFzcy5PQkpFQ1RfUFJPVE9UWVBFX0ZJRUxEU18gPSBbCiAgJ2NvbnN0cnVjdG9yJywgJ2hhc093blByb3BlcnR5JywgJ2lzUHJvdG90eXBlT2YnLCAncHJvcGVydHlJc0VudW1lcmFibGUnLAogICd0b0xvY2FsZVN0cmluZycsICd0b1N0cmluZycsICd2YWx1ZU9mJwpdOwoKCi8vIFRPRE8oam9obmxlbnopOiBzaGFyZSB0aGlzIGZ1bmN0aW9uIHdpdGggdGhlIGdvb2cub2JqZWN0Ci8qKgogKiBAcGFyYW0geyFPYmplY3R9IHRhcmdldCBUaGUgb2JqZWN0IHRvIGFkZCBwcm9wZXJ0aWVzIHRvLgogKiBAcGFyYW0geyFPYmplY3R9IHNvdXJjZSBUaGUgb2JqZWN0IHRvIGNvcHkgcHJvcGVydGllcyBmcm9tLgogKiBAcHJpdmF0ZQogKi8KZ29vZy5kZWZpbmVDbGFzcy5hcHBseVByb3BlcnRpZXNfID0gZnVuY3Rpb24odGFyZ2V0LCBzb3VyY2UpIHsKICAvLyBUT0RPKGpvaG5sZW56KTogdXBkYXRlIHRoaXMgdG8gc3VwcG9ydCBFUzUgZ2V0dGVycy9zZXR0ZXJzCgogIHZhciBrZXk7CiAgZm9yIChrZXkgaW4gc291cmNlKSB7CiAgICBpZiAoT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKHNvdXJjZSwga2V5KSkgewogICAgICB0YXJnZXRba2V5XSA9IHNvdXJjZVtrZXldOwogICAgfQogIH0KCiAgLy8gRm9yIElFIHRoZSBmb3ItaW4tbG9vcCBkb2VzIG5vdCBjb250YWluIGFueSBwcm9wZXJ0aWVzIHRoYXQgYXJlIG5vdAogIC8vIGVudW1lcmFibGUgb24gdGhlIHByb3RvdHlwZSBvYmplY3QgKGZvciBleGFtcGxlIGlzUHJvdG90eXBlT2YgZnJvbQogIC8vIE9iamVjdC5wcm90b3R5cGUpIGFuZCBpdCB3aWxsIGFsc28gbm90IGluY2x1ZGUgJ3JlcGxhY2UnIG9uIG9iamVjdHMgdGhhdAogIC8vIGV4dGVuZCBTdHJpbmcgYW5kIGNoYW5nZSAncmVwbGFjZScgKG5vdCB0aGF0IGl0IGlzIGNvbW1vbiBmb3IgYW55b25lIHRvCiAgLy8gZXh0ZW5kIGFueXRoaW5nIGV4Y2VwdCBPYmplY3QpLgogIGZvciAodmFyIGkgPSAwOyBpIDwgZ29vZy5kZWZpbmVDbGFzcy5PQkpFQ1RfUFJPVE9UWVBFX0ZJRUxEU18ubGVuZ3RoOyBpKyspIHsKICAgIGtleSA9IGdvb2cuZGVmaW5lQ2xhc3MuT0JKRUNUX1BST1RPVFlQRV9GSUVMRFNfW2ldOwogICAgaWYgKE9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbChzb3VyY2UsIGtleSkpIHsKICAgICAgdGFyZ2V0W2tleV0gPSBzb3VyY2Vba2V5XTsKICAgIH0KICB9Cn07CgoKLyoqCiAqIFNlYWxpbmcgY2xhc3NlcyBicmVha3MgdGhlIG9sZGVyIGlkaW9tIG9mIGFzc2lnbmluZyBwcm9wZXJ0aWVzIG9uIHRoZQogKiBwcm90b3R5cGUgcmF0aGVyIHRoYW4gaW4gdGhlIGNvbnN0cnVjdG9yLiBBcyBzdWNoLCBnb29nLmRlZmluZUNsYXNzCiAqIG11c3Qgbm90IHNlYWwgc3ViY2xhc3NlcyBvZiB0aGVzZSBvbGQtc3R5bGUgY2xhc3NlcyB1bnRpbCB0aGV5IGFyZSBmaXhlZC4KICogVW50aWwgdGhlbiwgdGhpcyBtYXJrcyBhIGNsYXNzIGFzICJicm9rZW4iLCBpbnN0cnVjdGluZyBkZWZpbmVDbGFzcwogKiBub3QgdG8gc2VhbCBzdWJjbGFzc2VzLgogKiBAcGFyYW0geyFGdW5jdGlvbn0gY3RyIFRoZSBsZWdhY3kgY29uc3RydWN0b3IgdG8gdGFnIGFzIHVuc2VhbGFibGUuCiAqLwpnb29nLnRhZ1Vuc2VhbGFibGVDbGFzcyA9IGZ1bmN0aW9uKGN0cikgewogIGlmICghQ09NUElMRUQgJiYgZ29vZy5kZWZpbmVDbGFzcy5TRUFMX0NMQVNTX0lOU1RBTkNFUykgewogICAgY3RyLnByb3RvdHlwZVtnb29nLlVOU0VBTEFCTEVfQ09OU1RSVUNUT1JfUFJPUEVSVFlfXSA9IHRydWU7CiAgfQp9OwoKCi8qKgogKiBOYW1lIGZvciB1bnNlYWxhYmxlIHRhZyBwcm9wZXJ0eS4KICogQGNvbnN0IEBwcml2YXRlIHtzdHJpbmd9CiAqLwpnb29nLlVOU0VBTEFCTEVfQ09OU1RSVUNUT1JfUFJPUEVSVFlfID0gJ2dvb2dfZGVmaW5lQ2xhc3NfbGVnYWN5X3Vuc2VhbGFibGUnOwoKCi8vIFRoZXJlJ3MgYSBidWcgaW4gdGhlIGNvbXBpbGVyIHdoZXJlIHdpdGhvdXQgY29sbGFwc2UgcHJvcGVydGllcyB0aGUKLy8gQ2xvc3VyZSBuYW1lc3BhY2UgZGVmaW5lcyBkbyBub3QgZ3VhcmQgY29kZSBjb3JyZWN0bHkuIFRvIGhlbHAgcmVkdWNlIGNvZGUKLy8gc2l6ZSBhbHNvIGNoZWNrIGZvciAhQ09NUElMRUQgZXZlbiB0aG91Z2ggaXQgcmVkdW5kYW50IHVudGlsIHRoaXMgaXMgZml4ZWQuCmlmICghQ09NUElMRUQgJiYgZ29vZy5ERVBFTkRFTkNJRVNfRU5BQkxFRCkgewoKICAvKioKICAgKiBUcmllcyB0byBkZXRlY3Qgd2hldGhlciBpcyBpbiB0aGUgY29udGV4dCBvZiBhbiBIVE1MIGRvY3VtZW50LgogICAqIEByZXR1cm4ge2Jvb2xlYW59IFRydWUgaWYgaXQgbG9va3MgbGlrZSBIVE1MIGRvY3VtZW50LgogICAqIEBwcml2YXRlCiAgICovCiAgZ29vZy5pbkh0bWxEb2N1bWVudF8gPSBmdW5jdGlvbigpIHsKICAgIC8qKiBAdHlwZSB7IURvY3VtZW50fSAqLwogICAgdmFyIGRvYyA9IGdvb2cuZ2xvYmFsLmRvY3VtZW50OwogICAgcmV0dXJuIGRvYyAhPSBudWxsICYmICd3cml0ZScgaW4gZG9jOyAgLy8gWFVMRG9jdW1lbnQgbWlzc2VzIHdyaXRlLgogIH07CgoKICAvKioKICAgKiBXZSdkIGxpa2UgdG8gY2hlY2sgZm9yIGlmIHRoZSBkb2N1bWVudCByZWFkeVN0YXRlIGlzICdsb2FkaW5nJzsgaG93ZXZlcgogICAqIHRoZXJlIGFyZSBidWdzIG9uIElFIDEwIGFuZCBiZWxvdyB3aGVyZSB0aGUgcmVhZHlTdGF0ZSBiZWluZyBhbnl0aGluZyBvdGhlcgogICAqIHRoYW4gJ2NvbXBsZXRlJyBpcyBub3QgcmVsaWFibGUuCiAgICogQHJldHVybiB7Ym9vbGVhbn0KICAgKiBAcHJpdmF0ZQogICAqLwogIGdvb2cuaXNEb2N1bWVudExvYWRpbmdfID0gZnVuY3Rpb24oKSB7CiAgICAvLyBhdHRhY2hFdmVudCBpcyBhdmFpbGFibGUgb24gSUUgNiB0aHJ1IDEwIG9ubHksIGFuZCB0aHVzIGNhbiBiZSB1c2VkIHRvCiAgICAvLyBkZXRlY3QgdGhvc2UgYnJvd3NlcnMuCiAgICAvKiogQHR5cGUgeyFIVE1MRG9jdW1lbnR9ICovCiAgICB2YXIgZG9jID0gZ29vZy5nbG9iYWwuZG9jdW1lbnQ7CiAgICByZXR1cm4gZG9jLmF0dGFjaEV2ZW50ID8gZG9jLnJlYWR5U3RhdGUgIT0gJ2NvbXBsZXRlJyA6CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZG9jLnJlYWR5U3RhdGUgPT0gJ2xvYWRpbmcnOwogIH07CgoKICAvKioKICAgKiBUcmllcyB0byBkZXRlY3QgdGhlIGJhc2UgcGF0aCBvZiBiYXNlLmpzIHNjcmlwdCB0aGF0IGJvb3RzdHJhcHMgQ2xvc3VyZS4KICAgKiBAcHJpdmF0ZQogICAqLwogIGdvb2cuZmluZEJhc2VQYXRoXyA9IGZ1bmN0aW9uKCkgewogICAgaWYgKGdvb2cuZ2xvYmFsLkNMT1NVUkVfQkFTRV9QQVRIICE9IHVuZGVmaW5lZCAmJgogICAgICAgIC8vIEFudGkgRE9NLWNsb2JiZXJpbmcgcnVudGltZSBjaGVjayAoYi8zNzczNjU3NikuCiAgICAgICAgdHlwZW9mIGdvb2cuZ2xvYmFsLkNMT1NVUkVfQkFTRV9QQVRIID09PSAnc3RyaW5nJykgewogICAgICBnb29nLmJhc2VQYXRoID0gZ29vZy5nbG9iYWwuQ0xPU1VSRV9CQVNFX1BBVEg7CiAgICAgIHJldHVybjsKICAgIH0gZWxzZSBpZiAoIWdvb2cuaW5IdG1sRG9jdW1lbnRfKCkpIHsKICAgICAgcmV0dXJuOwogICAgfQogICAgLyoqIEB0eXBlIHshRG9jdW1lbnR9ICovCiAgICB2YXIgZG9jID0gZ29vZy5nbG9iYWwuZG9jdW1lbnQ7CiAgICAvLyBJZiB3ZSBoYXZlIGEgY3VycmVudFNjcmlwdCBhdmFpbGFibGUsIHVzZSBpdCBleGNsdXNpdmVseS4KICAgIHZhciBjdXJyZW50U2NyaXB0ID0gZG9jLmN1cnJlbnRTY3JpcHQ7CiAgICBpZiAoY3VycmVudFNjcmlwdCkgewogICAgICB2YXIgc2NyaXB0cyA9IFtjdXJyZW50U2NyaXB0XTsKICAgIH0gZWxzZSB7CiAgICAgIHZhciBzY3JpcHRzID0gZG9jLmdldEVsZW1lbnRzQnlUYWdOYW1lKCdTQ1JJUFQnKTsKICAgIH0KICAgIC8vIFNlYXJjaCBiYWNrd2FyZHMgc2luY2UgdGhlIGN1cnJlbnQgc2NyaXB0IGlzIGluIGFsbW9zdCBhbGwgY2FzZXMgdGhlIG9uZQogICAgLy8gdGhhdCBoYXMgYmFzZS5qcy4KICAgIGZvciAodmFyIGkgPSBzY3JpcHRzLmxlbmd0aCAtIDE7IGkgPj0gMDsgLS1pKSB7CiAgICAgIHZhciBzY3JpcHQgPSAvKiogQHR5cGUgeyFIVE1MU2NyaXB0RWxlbWVudH0gKi8gKHNjcmlwdHNbaV0pOwogICAgICB2YXIgc3JjID0gc2NyaXB0LnNyYzsKICAgICAgdmFyIHFtYXJrID0gc3JjLmxhc3RJbmRleE9mKCc/Jyk7CiAgICAgIHZhciBsID0gcW1hcmsgPT0gLTEgPyBzcmMubGVuZ3RoIDogcW1hcms7CiAgICAgIGlmIChzcmMuc3Vic3RyKGwgLSA3LCA3KSA9PSAnYmFzZS5qcycpIHsKICAgICAgICBnb29nLmJhc2VQYXRoID0gc3JjLnN1YnN0cigwLCBsIC0gNyk7CiAgICAgICAgcmV0dXJuOwogICAgICB9CiAgICB9CiAgfTsKCiAgZ29vZy5maW5kQmFzZVBhdGhfKCk7CgogIC8qKiBAc3RydWN0IEBjb25zdHJ1Y3RvciBAZmluYWwgKi8KICBnb29nLlRyYW5zcGlsZXIgPSBmdW5jdGlvbigpIHsKICAgIC8qKiBAcHJpdmF0ZSB7P09iamVjdDxzdHJpbmcsIGJvb2xlYW4+fSAqLwogICAgdGhpcy5yZXF1aXJlc1RyYW5zcGlsYXRpb25fID0gbnVsbDsKICAgIC8qKiBAcHJpdmF0ZSB7c3RyaW5nfSAqLwogICAgdGhpcy50cmFuc3BpbGF0aW9uVGFyZ2V0XyA9IGdvb2cuVFJBTlNQSUxFX1RPX0xBTkdVQUdFOwogIH07CgoKICAvKioKICAgKiBSZXR1cm5zIGEgbmV3bHkgY3JlYXRlZCBtYXAgZnJvbSBsYW5ndWFnZSBtb2RlIHN0cmluZyB0byBhIGJvb2xlYW4KICAgKiBpbmRpY2F0aW5nIHdoZXRoZXIgdHJhbnNwaWxhdGlvbiBzaG91bGQgYmUgZG9uZSBmb3IgdGhhdCBtb2RlIGFzIHdlbGwgYXMKICAgKiB0aGUgaGlnaGVzdCBsZXZlbCBsYW5ndWFnZSB0aGF0IHRoaXMgZW52aXJvbm1lbnQgc3VwcG9ydHMuCiAgICoKICAgKiBHdWFyYW50ZWVkIGludmFyaWFudDoKICAgKiBGb3IgYW55IHR3byBtb2RlcywgbDEgYW5kIGwyIHdoZXJlIGwyIGlzIGEgbmV3ZXIgbW9kZSB0aGFuIGwxLAogICAqIGBtYXBbbDFdID09IHRydWVgIGltcGxpZXMgdGhhdCBgbWFwW2wyXSA9PSB0cnVlYC4KICAgKgogICAqIE5vdGUgdGhpcyBtZXRob2QgaXMgZXh0cmFjdGVkIGFuZCB1c2VkIGVsc2V3aGVyZSwgc28gaXQgY2Fubm90IHJlbHkgb24KICAgKiBhbnl0aGluZyBleHRlcm5hbCAoaXQgc2hvdWxkIGVhc2lseSBiZSBhYmxlIHRvIGJlIHRyYW5zZm9ybWVkIGludG8gYQogICAqIHN0YW5kYWxvbmUsIHRvcCBsZXZlbCBmdW5jdGlvbikuCiAgICoKICAgKiBAcHJpdmF0ZQogICAqIEByZXR1cm4ge3sKICAgKiAgIHRhcmdldDogc3RyaW5nLAogICAqICAgbWFwOiAhT2JqZWN0PHN0cmluZywgYm9vbGVhbj4KICAgKiB9fQogICAqLwogIGdvb2cuVHJhbnNwaWxlci5wcm90b3R5cGUuY3JlYXRlUmVxdWlyZXNUcmFuc3BpbGF0aW9uXyA9IGZ1bmN0aW9uKCkgewogICAgdmFyIHRyYW5zcGlsYXRpb25UYXJnZXQgPSAnZXMzJzsKICAgIHZhciAvKiogIU9iamVjdDxzdHJpbmcsIGJvb2xlYW4+ICovIHJlcXVpcmVzVHJhbnNwaWxhdGlvbiA9IHsnZXMzJzogZmFsc2V9OwogICAgdmFyIHRyYW5zcGlsYXRpb25SZXF1aXJlZEZvckFsbExhdGVyTW9kZXMgPSBmYWxzZTsKCiAgICAvKioKICAgICAqIEFkZHMgYW4gZW50cnkgdG8gcmVxdWlyZXNUcmFuc3BsaWF0aW9uIGZvciB0aGUgZ2l2ZW4gbGFuZ3VhZ2UgbW9kZS4KICAgICAqCiAgICAgKiBJTVBPUlRBTlQ6IENhbGxzIG11c3QgYmUgbWFkZSBpbiBvcmRlciBmcm9tIG9sZGVzdCB0byBuZXdlc3QgbGFuZ3VhZ2UKICAgICAqIG1vZGUuCiAgICAgKiBAcGFyYW0ge3N0cmluZ30gbW9kZU5hbWUKICAgICAqIEBwYXJhbSB7ZnVuY3Rpb24oKTogYm9vbGVhbn0gaXNTdXBwb3J0ZWQgUmV0dXJucyB0cnVlIGlmIHRoZSBKUyBlbmdpbmUKICAgICAqICAgICBzdXBwb3J0cyB0aGUgZ2l2ZW4gbW9kZS4KICAgICAqLwogICAgZnVuY3Rpb24gYWRkTmV3ZXJMYW5ndWFnZVRyYW5zcGlsYXRpb25DaGVjayhtb2RlTmFtZSwgaXNTdXBwb3J0ZWQpIHsKICAgICAgaWYgKHRyYW5zcGlsYXRpb25SZXF1aXJlZEZvckFsbExhdGVyTW9kZXMpIHsKICAgICAgICByZXF1aXJlc1RyYW5zcGlsYXRpb25bbW9kZU5hbWVdID0gdHJ1ZTsKICAgICAgfSBlbHNlIGlmIChpc1N1cHBvcnRlZCgpKSB7CiAgICAgICAgdHJhbnNwaWxhdGlvblRhcmdldCA9IG1vZGVOYW1lOwogICAgICAgIHJlcXVpcmVzVHJhbnNwaWxhdGlvblttb2RlTmFtZV0gPSBmYWxzZTsKICAgICAgfSBlbHNlIHsKICAgICAgICByZXF1aXJlc1RyYW5zcGlsYXRpb25bbW9kZU5hbWVdID0gdHJ1ZTsKICAgICAgICB0cmFuc3BpbGF0aW9uUmVxdWlyZWRGb3JBbGxMYXRlck1vZGVzID0gdHJ1ZTsKICAgICAgfQogICAgfQoKICAgIC8qKgogICAgICogRG9lcyB0aGUgZ2l2ZW4gY29kZSBldmFsdWF0ZSB3aXRob3V0IHN5bnRheCBlcnJvcnMgYW5kIHJldHVybiBhIHRydXRoeQogICAgICogcmVzdWx0PwogICAgICovCiAgICBmdW5jdGlvbiAvKiogYm9vbGVhbiAqLyBldmFsQ2hlY2soLyoqIHN0cmluZyAqLyBjb2RlKSB7CiAgICAgIHRyeSB7CiAgICAgICAgcmV0dXJuICEhZXZhbChjb2RlKTsKICAgICAgfSBjYXRjaCAoaWdub3JlZCkgewogICAgICAgIHJldHVybiBmYWxzZTsKICAgICAgfQogICAgfQoKICAgIHZhciB1c2VyQWdlbnQgPSBnb29nLmdsb2JhbC5uYXZpZ2F0b3IgJiYgZ29vZy5nbG9iYWwubmF2aWdhdG9yLnVzZXJBZ2VudCA/CiAgICAgICAgZ29vZy5nbG9iYWwubmF2aWdhdG9yLnVzZXJBZ2VudCA6CiAgICAgICAgJyc7CgogICAgLy8gSWRlbnRpZnkgRVMzLW9ubHkgYnJvd3NlcnMgYnkgdGhlaXIgaW5jb3JyZWN0IHRyZWF0bWVudCBvZiBjb21tYXMuCiAgICBhZGROZXdlckxhbmd1YWdlVHJhbnNwaWxhdGlvbkNoZWNrKCdlczUnLCBmdW5jdGlvbigpIHsKICAgICAgcmV0dXJuIGV2YWxDaGVjaygnWzEsXS5sZW5ndGg9PTEnKTsKICAgIH0pOwogICAgYWRkTmV3ZXJMYW5ndWFnZVRyYW5zcGlsYXRpb25DaGVjaygnZXM2JywgZnVuY3Rpb24oKSB7CiAgICAgIC8vIEVkZ2UgaGFzIGEgbm9uLWRldGVybWluaXN0aWMgKGkuZS4sIG5vdCByZXByb2R1Y2libGUpIGJ1ZyB3aXRoIEVTNjoKICAgICAgLy8gaHR0cHM6Ly9naXRodWIuY29tL01pY3Jvc29mdC9DaGFrcmFDb3JlL2lzc3Vlcy8xNDk2LgogICAgICB2YXIgcmUgPSAvRWRnZVwvKFxkKykoXC5cZCkqL2k7CiAgICAgIHZhciBlZGdlVXNlckFnZW50ID0gdXNlckFnZW50Lm1hdGNoKHJlKTsKICAgICAgaWYgKGVkZ2VVc2VyQWdlbnQpIHsKICAgICAgICAvLyBUaGUgUmVmbGVjdC5jb25zdHJ1Y3QgdGVzdCBiZWxvdyBpcyBmbGFreSBvbiBFZGdlLiBJdCBjYW4gc29tZXRpbWVzCiAgICAgICAgLy8gcGFzcyBvciBmYWlsIG9uIDQwIDE1LjE1MDYzLCBzbyBqdXN0IGV4aXQgZWFybHkgZm9yIEVkZ2UgYW5kIHRyZWF0CiAgICAgICAgLy8gaXQgYXMgRVM1LiBVbnRpbCB3ZSdyZSBvbiBhIG1vcmUgdXAgdG8gZGF0ZSB2ZXJzaW9uIGp1c3QgYWx3YXlzIHVzZQogICAgICAgIC8vIEVTNS4gU2VlIGh0dHBzOi8vZ2l0aHViLmNvbS9NaWNyb3NvZnQvQ2hha3JhQ29yZS9pc3N1ZXMvMzIxNy4KICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgIH0KICAgICAgLy8gVGVzdCBlczY6IFtGRjUwICg/KSwgRWRnZSAxNCAoPyksIENocm9tZSA1MF0KICAgICAgLy8gICAoYSkgZGVmYXVsdCBwYXJhbXMgKHNwZWNpZmljYWxseSBzaGFkb3dpbmcgbG9jYWxzKSwKICAgICAgLy8gICAoYikgZGVzdHJ1Y3R1cmluZywgKGMpIGJsb2NrLXNjb3BlZCBmdW5jdGlvbnMsCiAgICAgIC8vICAgKGQpIGZvci1vZiAoY29uc3QpLCAoZSkgbmV3LnRhcmdldC9SZWZsZWN0LmNvbnN0cnVjdAogICAgICB2YXIgZXM2ZnVsbFRlc3QgPQogICAgICAgICAgJ2NsYXNzIFh7Y29uc3RydWN0b3IoKXtpZihuZXcudGFyZ2V0IT1TdHJpbmcpdGhyb3cgMTt0aGlzLng9NDJ9fScgKwogICAgICAgICAgJ2xldCBxPVJlZmxlY3QuY29uc3RydWN0KFgsW10sU3RyaW5nKTtpZihxLnghPTQyfHwhKHEgaW5zdGFuY2VvZiAnICsKICAgICAgICAgICdTdHJpbmcpKXRocm93IDE7Zm9yKGNvbnN0IGEgb2ZbMiwzXSl7aWYoYT09Miljb250aW51ZTtmdW5jdGlvbiAnICsKICAgICAgICAgICdmKHo9e2F9KXtsZXQgYT0wO3JldHVybiB6LmF9e2Z1bmN0aW9uIGYoKXtyZXR1cm4gMDt9fXJldHVybiBmKCknICsKICAgICAgICAgICc9PTN9JzsKCiAgICAgIHJldHVybiBldmFsQ2hlY2soJygoKT0+eyJ1c2Ugc3RyaWN0IjsnICsgZXM2ZnVsbFRlc3QgKyAnfSkoKScpOwogICAgfSk7CiAgICAvLyAqKiBhbmQgKio9IGFyZSB0aGUgb25seSBuZXcgZmVhdHVyZXMgaW4gJ2VzNycKICAgIGFkZE5ld2VyTGFuZ3VhZ2VUcmFuc3BpbGF0aW9uQ2hlY2soJ2VzNycsIGZ1bmN0aW9uKCkgewogICAgICByZXR1cm4gZXZhbENoZWNrKCcyICoqIDIgPT0gNCcpOwogICAgfSk7CiAgICAvLyBhc3luYyBmdW5jdGlvbnMgYXJlIHRoZSBvbmx5IG5ldyBmZWF0dXJlcyBpbiAnZXM4JwogICAgYWRkTmV3ZXJMYW5ndWFnZVRyYW5zcGlsYXRpb25DaGVjaygnZXM4JywgZnVuY3Rpb24oKSB7CiAgICAgIHJldHVybiBldmFsQ2hlY2soJ2FzeW5jICgpID0+IDEsIHRydWUnKTsKICAgIH0pOwogICAgYWRkTmV3ZXJMYW5ndWFnZVRyYW5zcGlsYXRpb25DaGVjaygnZXM5JywgZnVuY3Rpb24oKSB7CiAgICAgIHJldHVybiBldmFsQ2hlY2soJyh7Li4ucmVzdH0gPSB7fSksIHRydWUnKTsKICAgIH0pOwogICAgYWRkTmV3ZXJMYW5ndWFnZVRyYW5zcGlsYXRpb25DaGVjaygnZXNfbmV4dCcsIGZ1bmN0aW9uKCkgewogICAgICByZXR1cm4gZmFsc2U7ICAvLyBhc3N1bWUgaXQgYWx3YXlzIG5lZWQgdG8gdHJhbnNwaWxlCiAgICB9KTsKICAgIHJldHVybiB7dGFyZ2V0OiB0cmFuc3BpbGF0aW9uVGFyZ2V0LCBtYXA6IHJlcXVpcmVzVHJhbnNwaWxhdGlvbn07CiAgfTsKCgogIC8qKgogICAqIERldGVybWluZXMgd2hldGhlciB0aGUgZ2l2ZW4gbGFuZ3VhZ2UgbmVlZHMgdG8gYmUgdHJhbnNwaWxlZC4KICAgKiBAcGFyYW0ge3N0cmluZ30gbGFuZwogICAqIEBwYXJhbSB7c3RyaW5nfHVuZGVmaW5lZH0gbW9kdWxlCiAgICogQHJldHVybiB7Ym9vbGVhbn0KICAgKi8KICBnb29nLlRyYW5zcGlsZXIucHJvdG90eXBlLm5lZWRzVHJhbnNwaWxlID0gZnVuY3Rpb24obGFuZywgbW9kdWxlKSB7CiAgICBpZiAoZ29vZy5UUkFOU1BJTEUgPT0gJ2Fsd2F5cycpIHsKICAgICAgcmV0dXJuIHRydWU7CiAgICB9IGVsc2UgaWYgKGdvb2cuVFJBTlNQSUxFID09ICduZXZlcicpIHsKICAgICAgcmV0dXJuIGZhbHNlOwogICAgfSBlbHNlIGlmICghdGhpcy5yZXF1aXJlc1RyYW5zcGlsYXRpb25fKSB7CiAgICAgIHZhciBvYmogPSB0aGlzLmNyZWF0ZVJlcXVpcmVzVHJhbnNwaWxhdGlvbl8oKTsKICAgICAgdGhpcy5yZXF1aXJlc1RyYW5zcGlsYXRpb25fID0gb2JqLm1hcDsKICAgICAgdGhpcy50cmFuc3BpbGF0aW9uVGFyZ2V0XyA9IHRoaXMudHJhbnNwaWxhdGlvblRhcmdldF8gfHwgb2JqLnRhcmdldDsKICAgIH0KICAgIGlmIChsYW5nIGluIHRoaXMucmVxdWlyZXNUcmFuc3BpbGF0aW9uXykgewogICAgICBpZiAodGhpcy5yZXF1aXJlc1RyYW5zcGlsYXRpb25fW2xhbmddKSB7CiAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgIH0gZWxzZSBpZiAoCiAgICAgICAgICBnb29nLmluSHRtbERvY3VtZW50XygpICYmIG1vZHVsZSA9PSAnZXM2JyAmJgogICAgICAgICAgISgnbm9Nb2R1bGUnIGluIGdvb2cuZ2xvYmFsLmRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3NjcmlwdCcpKSkgewogICAgICAgIHJldHVybiB0cnVlOwogICAgICB9IGVsc2UgewogICAgICAgIHJldHVybiBmYWxzZTsKICAgICAgfQogICAgfSBlbHNlIHsKICAgICAgdGhyb3cgbmV3IEVycm9yKCdVbmtub3duIGxhbmd1YWdlIG1vZGU6ICcgKyBsYW5nKTsKICAgIH0KICB9OwoKCiAgLyoqCiAgICogTGF6aWx5IHJldHJpZXZlcyB0aGUgdHJhbnNwaWxlciBhbmQgYXBwbGllcyBpdCB0byB0aGUgc291cmNlLgogICAqIEBwYXJhbSB7c3RyaW5nfSBjb2RlIEpTIGNvZGUuCiAgICogQHBhcmFtIHtzdHJpbmd9IHBhdGggUGF0aCB0byB0aGUgY29kZS4KICAgKiBAcmV0dXJuIHtzdHJpbmd9IFRoZSB0cmFuc3BpbGVkIGNvZGUuCiAgICovCiAgZ29vZy5UcmFuc3BpbGVyLnByb3RvdHlwZS50cmFuc3BpbGUgPSBmdW5jdGlvbihjb2RlLCBwYXRoKSB7CiAgICAvLyBUT0RPKGpvaG5wbGFpc3RlZCk6IFdlIHNob3VsZCBkZWxldGUgZ29vZy50cmFuc3BpbGVfIGFuZCBqdXN0IGhhdmUgdGhpcwogICAgLy8gZnVuY3Rpb24uIEJ1dCB0aGVyZSdzIHNvbWUgY29tcGlsZSBlcnJvciBhdG0gd2hlcmUgZ29vZy5nbG9iYWwgaXMgYmVpbmcKICAgIC8vIHN0cmlwcGVkIGluY29ycmVjdGx5IHdpdGhvdXQgdGhpcy4KICAgIHJldHVybiBnb29nLnRyYW5zcGlsZV8oY29kZSwgcGF0aCwgdGhpcy50cmFuc3BpbGF0aW9uVGFyZ2V0Xyk7CiAgfTsKCgogIC8qKiBAcHJpdmF0ZSBAZmluYWwgeyFnb29nLlRyYW5zcGlsZXJ9ICovCiAgZ29vZy50cmFuc3BpbGVyXyA9IG5ldyBnb29nLlRyYW5zcGlsZXIoKTsKCiAgLyoqCiAgICogUmV3cml0ZXMgY2xvc2luZyBzY3JpcHQgdGFncyBpbiBpbnB1dCB0byBhdm9pZCBlbmRpbmcgYW4gZW5jbG9zaW5nIHNjcmlwdAogICAqIHRhZy4KICAgKgogICAqIEBwYXJhbSB7c3RyaW5nfSBzdHIKICAgKiBAcmV0dXJuIHtzdHJpbmd9CiAgICogQHByaXZhdGUKICAgKi8KICBnb29nLnByb3RlY3RTY3JpcHRUYWdfID0gZnVuY3Rpb24oc3RyKSB7CiAgICByZXR1cm4gc3RyLnJlcGxhY2UoLzxcLyhTQ1JJUFQpL2lnLCAnXFx4M2MvJDEnKTsKICB9OwoKCiAgLyoqCiAgICogQSBkZWJ1ZyBsb2FkZXIgaXMgcmVzcG9uc2libGUgZm9yIGRvd25sb2FkaW5nIGFuZCBleGVjdXRpbmcgamF2YXNjcmlwdAogICAqIGZpbGVzIGluIGFuIHVuYnVuZGxlZCwgdW5jb21waWxlZCBlbnZpcm9ubWVudC4KICAgKgogICAqIFRoaXMgY2FuIGJlIGN1c3RpbWl6ZWQgdmlhIHRoZSBzZXREZXBlbmRlbmN5RmFjdG9yeSBtZXRob2QsIG9yIGJ5CiAgICogQ0xPU1VSRV9JTVBPUlRfU0NSSVBUL0NMT1NVUkVfTE9BRF9GSUxFX1NZTkMuCiAgICoKICAgKiBAc3RydWN0IEBjb25zdHJ1Y3RvciBAZmluYWwgQHByaXZhdGUKICAgKi8KICBnb29nLkRlYnVnTG9hZGVyXyA9IGZ1bmN0aW9uKCkgewogICAgLyoqIEBwcml2YXRlIEBjb25zdCB7IU9iamVjdDxzdHJpbmcsICFnb29nLkRlcGVuZGVuY3k+fSAqLwogICAgdGhpcy5kZXBlbmRlbmNpZXNfID0ge307CiAgICAvKiogQHByaXZhdGUgQGNvbnN0IHshT2JqZWN0PHN0cmluZywgc3RyaW5nPn0gKi8KICAgIHRoaXMuaWRUb1BhdGhfID0ge307CiAgICAvKiogQHByaXZhdGUgQGNvbnN0IHshT2JqZWN0PHN0cmluZywgYm9vbGVhbj59ICovCiAgICB0aGlzLndyaXR0ZW5fID0ge307CiAgICAvKiogQHByaXZhdGUgQGNvbnN0IHshQXJyYXk8IWdvb2cuRGVwZW5kZW5jeT59ICovCiAgICB0aGlzLmxvYWRpbmdEZXBzXyA9IFtdOwogICAgLyoqIEBwcml2YXRlIHshQXJyYXk8IWdvb2cuRGVwZW5kZW5jeT59ICovCiAgICB0aGlzLmRlcHNUb0xvYWRfID0gW107CiAgICAvKiogQHByaXZhdGUge2Jvb2xlYW59ICovCiAgICB0aGlzLnBhdXNlZF8gPSBmYWxzZTsKICAgIC8qKiBAcHJpdmF0ZSB7IWdvb2cuRGVwZW5kZW5jeUZhY3Rvcnl9ICovCiAgICB0aGlzLmZhY3RvcnlfID0gbmV3IGdvb2cuRGVwZW5kZW5jeUZhY3RvcnkoZ29vZy50cmFuc3BpbGVyXyk7CiAgICAvKiogQHByaXZhdGUgQGNvbnN0IHshT2JqZWN0PHN0cmluZywgIUZ1bmN0aW9uPn0gKi8KICAgIHRoaXMuZGVmZXJyZWRDYWxsYmFja3NfID0ge307CiAgICAvKiogQHByaXZhdGUgQGNvbnN0IHshQXJyYXk8c3RyaW5nPn0gKi8KICAgIHRoaXMuZGVmZXJyZWRRdWV1ZV8gPSBbXTsKICB9OwoKICAvKioKICAgKiBAcGFyYW0geyFBcnJheTxzdHJpbmc+fSBuYW1lc3BhY2VzCiAgICogQHBhcmFtIHtmdW5jdGlvbigpOiB1bmRlZmluZWR9IGNhbGxiYWNrIEZ1bmN0aW9uIHRvIGNhbGwgb25jZSBhbGwgdGhlCiAgICogICAgIG5hbWVzcGFjZXMgaGF2ZSBsb2FkZWQuCiAgICovCiAgZ29vZy5EZWJ1Z0xvYWRlcl8ucHJvdG90eXBlLmJvb3RzdHJhcCA9IGZ1bmN0aW9uKG5hbWVzcGFjZXMsIGNhbGxiYWNrKSB7CiAgICB2YXIgY2IgPSBjYWxsYmFjazsKICAgIGZ1bmN0aW9uIHJlc29sdmUoKSB7CiAgICAgIGlmIChjYikgewogICAgICAgIGdvb2cuZ2xvYmFsLnNldFRpbWVvdXQoY2IsIDApOwogICAgICAgIGNiID0gbnVsbDsKICAgICAgfQogICAgfQoKICAgIGlmICghbmFtZXNwYWNlcy5sZW5ndGgpIHsKICAgICAgcmVzb2x2ZSgpOwogICAgICByZXR1cm47CiAgICB9CgogICAgdmFyIGRlcHMgPSBbXTsKICAgIGZvciAodmFyIGkgPSAwOyBpIDwgbmFtZXNwYWNlcy5sZW5ndGg7IGkrKykgewogICAgICB2YXIgcGF0aCA9IHRoaXMuZ2V0UGF0aEZyb21EZXBzXyhuYW1lc3BhY2VzW2ldKTsKICAgICAgaWYgKCFwYXRoKSB7CiAgICAgICAgdGhyb3cgbmV3IEVycm9yKCdVbnJlZ29uaXplZCBuYW1lc3BhY2U6ICcgKyBuYW1lc3BhY2VzW2ldKTsKICAgICAgfQogICAgICBkZXBzLnB1c2godGhpcy5kZXBlbmRlbmNpZXNfW3BhdGhdKTsKICAgIH0KCiAgICB2YXIgcmVxdWlyZSA9IGdvb2cucmVxdWlyZTsKICAgIHZhciBsb2FkZWQgPSAwOwogICAgZm9yICh2YXIgaSA9IDA7IGkgPCBuYW1lc3BhY2VzLmxlbmd0aDsgaSsrKSB7CiAgICAgIHJlcXVpcmUobmFtZXNwYWNlc1tpXSk7CiAgICAgIGRlcHNbaV0ub25Mb2FkKGZ1bmN0aW9uKCkgewogICAgICAgIGlmICgrK2xvYWRlZCA9PSBuYW1lc3BhY2VzLmxlbmd0aCkgewogICAgICAgICAgcmVzb2x2ZSgpOwogICAgICAgIH0KICAgICAgfSk7CiAgICB9CiAgfTsKCgogIC8qKgogICAqIExvYWRzIHRoZSBDbG9zdXJlIERlcGVuZGVuY3kgZmlsZS4KICAgKgogICAqIEV4cG9zZWQgYSBwdWJsaWMgZnVuY3Rpb24gc28gQ0xPU1VSRV9OT19ERVBTIGNhbiBiZSBzZXQgdG8gZmFsc2UsIGJhc2UKICAgKiBsb2FkZWQsIHNldERlcGVuZGVuY3lGYWN0b3J5IGNhbGxlZCwgYW5kIHRoZW4gdGhpcyBjYWxsZWQuIGkuZS4gYWxsb3dzCiAgICogY3VzdG9tIGxvYWRpbmcgb2YgdGhlIGRlcHMgZmlsZS4KICAgKi8KICBnb29nLkRlYnVnTG9hZGVyXy5wcm90b3R5cGUubG9hZENsb3N1cmVEZXBzID0gZnVuY3Rpb24oKSB7CiAgICAvLyBDaXJjdW12ZW50IGFkZERlcGVuZGVuY3ksIHdoaWNoIHdvdWxkIHRyeSB0byB0cmFuc3BpbGUgZGVwcy5qcyBpZgogICAgLy8gdHJhbnNwaWxlIGlzIHNldCB0byBhbHdheXMuCiAgICB2YXIgcmVsUGF0aCA9ICdkZXBzLmpzJzsKICAgIHRoaXMuZGVwc1RvTG9hZF8ucHVzaCh0aGlzLmZhY3RvcnlfLmNyZWF0ZURlcGVuZGVuY3koCiAgICAgICAgZ29vZy5ub3JtYWxpemVQYXRoXyhnb29nLmJhc2VQYXRoICsgcmVsUGF0aCksIHJlbFBhdGgsIFtdLCBbXSwge30sCiAgICAgICAgZmFsc2UpKTsKICAgIHRoaXMubG9hZERlcHNfKCk7CiAgfTsKCgogIC8qKgogICAqIE5vdGlmaWVzIHRoZSBkZWJ1ZyBsb2FkZXIgd2hlbiBhIGRlcGVuZGVuY3kgaGFzIGJlZW4gcmVxdWVzdGVkLgogICAqCiAgICogQHBhcmFtIHtzdHJpbmd9IGFic1BhdGhPcklkIFBhdGggb2YgdGhlIGRlcGVuZGVuY3kgb3IgZ29vZyBpZC4KICAgKiBAcGFyYW0ge2Jvb2xlYW49fSBvcHRfZm9yY2UKICAgKi8KICBnb29nLkRlYnVnTG9hZGVyXy5wcm90b3R5cGUucmVxdWVzdGVkID0gZnVuY3Rpb24oYWJzUGF0aE9ySWQsIG9wdF9mb3JjZSkgewogICAgdmFyIHBhdGggPSB0aGlzLmdldFBhdGhGcm9tRGVwc18oYWJzUGF0aE9ySWQpOwogICAgaWYgKHBhdGggJiYKICAgICAgICAob3B0X2ZvcmNlIHx8IHRoaXMuYXJlRGVwc0xvYWRlZF8odGhpcy5kZXBlbmRlbmNpZXNfW3BhdGhdLnJlcXVpcmVzKSkpIHsKICAgICAgdmFyIGNhbGxiYWNrID0gdGhpcy5kZWZlcnJlZENhbGxiYWNrc19bcGF0aF07CiAgICAgIGlmIChjYWxsYmFjaykgewogICAgICAgIGRlbGV0ZSB0aGlzLmRlZmVycmVkQ2FsbGJhY2tzX1twYXRoXTsKICAgICAgICBjYWxsYmFjaygpOwogICAgICB9CiAgICB9CiAgfTsKCgogIC8qKgogICAqIFNldHMgdGhlIGRlcGVuZGVuY3kgZmFjdG9yeSwgd2hpY2ggY2FuIGJlIHVzZWQgdG8gY3JlYXRlIGN1c3RvbQogICAqIGdvb2cuRGVwZW5kZW5jeSBpbXBsZW1lbnRhdGlvbnMgdG8gY29udHJvbCBob3cgZGVwZW5kZW5jaWVzIGFyZSBsb2FkZWQuCiAgICoKICAgKiBAcGFyYW0geyFnb29nLkRlcGVuZGVuY3lGYWN0b3J5fSBmYWN0b3J5CiAgICovCiAgZ29vZy5EZWJ1Z0xvYWRlcl8ucHJvdG90eXBlLnNldERlcGVuZGVuY3lGYWN0b3J5ID0gZnVuY3Rpb24oZmFjdG9yeSkgewogICAgdGhpcy5mYWN0b3J5XyA9IGZhY3Rvcnk7CiAgfTsKCgogIC8qKgogICAqIFRyYXZzZXJzZXMgdGhlIGRlcGVuZGVuY3kgZ3JhcGggYW5kIHF1ZXVlcyB0aGUgZ2l2ZW4gZGVwZW5kZW5jeSwgYW5kIGFsbCBvZgogICAqIGl0cyB0cmFuc2l0aXZlIGRlcGVuZGVuY2llcywgZm9yIGxvYWRpbmcgYW5kIHRoZW4gc3RhcnRzIGxvYWRpbmcgaWYgbm90CiAgICogcGF1c2VkLgogICAqCiAgICogQHBhcmFtIHtzdHJpbmd9IG5hbWVzcGFjZQogICAqIEBwcml2YXRlCiAgICovCiAgZ29vZy5EZWJ1Z0xvYWRlcl8ucHJvdG90eXBlLmxvYWRfID0gZnVuY3Rpb24obmFtZXNwYWNlKSB7CiAgICBpZiAoIXRoaXMuZ2V0UGF0aEZyb21EZXBzXyhuYW1lc3BhY2UpKSB7CiAgICAgIHZhciBlcnJvck1lc3NhZ2UgPSAnZ29vZy5yZXF1aXJlIGNvdWxkIG5vdCBmaW5kOiAnICsgbmFtZXNwYWNlOwoKICAgICAgZ29vZy5sb2dUb0NvbnNvbGVfKGVycm9yTWVzc2FnZSk7CiAgICAgIHRocm93IEVycm9yKGVycm9yTWVzc2FnZSk7CiAgICB9IGVsc2UgewogICAgICB2YXIgbG9hZGVyID0gdGhpczsKCiAgICAgIHZhciBkZXBzID0gW107CgogICAgICAvKiogQHBhcmFtIHtzdHJpbmd9IG5hbWVzcGFjZSAqLwogICAgICB2YXIgdmlzaXQgPSBmdW5jdGlvbihuYW1lc3BhY2UpIHsKICAgICAgICB2YXIgcGF0aCA9IGxvYWRlci5nZXRQYXRoRnJvbURlcHNfKG5hbWVzcGFjZSk7CgogICAgICAgIGlmICghcGF0aCkgewogICAgICAgICAgdGhyb3cgbmV3IEVycm9yKCdCYWQgZGVwZW5kZW5jeSBwYXRoIG9yIHN5bWJvbDogJyArIG5hbWVzcGFjZSk7CiAgICAgICAgfQoKICAgICAgICBpZiAobG9hZGVyLndyaXR0ZW5fW3BhdGhdKSB7CiAgICAgICAgICByZXR1cm47CiAgICAgICAgfQoKICAgICAgICBsb2FkZXIud3JpdHRlbl9bcGF0aF0gPSB0cnVlOwoKICAgICAgICB2YXIgZGVwID0gbG9hZGVyLmRlcGVuZGVuY2llc19bcGF0aF07CiAgICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBkZXAucmVxdWlyZXMubGVuZ3RoOyBpKyspIHsKICAgICAgICAgIGlmICghZ29vZy5pc1Byb3ZpZGVkXyhkZXAucmVxdWlyZXNbaV0pKSB7CiAgICAgICAgICAgIHZpc2l0KGRlcC5yZXF1aXJlc1tpXSk7CiAgICAgICAgICB9CiAgICAgICAgfQoKICAgICAgICBkZXBzLnB1c2goZGVwKTsKICAgICAgfTsKCiAgICAgIHZpc2l0KG5hbWVzcGFjZSk7CgogICAgICB2YXIgd2FzTG9hZGluZyA9ICEhdGhpcy5kZXBzVG9Mb2FkXy5sZW5ndGg7CiAgICAgIHRoaXMuZGVwc1RvTG9hZF8gPSB0aGlzLmRlcHNUb0xvYWRfLmNvbmNhdChkZXBzKTsKCiAgICAgIGlmICghdGhpcy5wYXVzZWRfICYmICF3YXNMb2FkaW5nKSB7CiAgICAgICAgdGhpcy5sb2FkRGVwc18oKTsKICAgICAgfQogICAgfQogIH07CgoKICAvKioKICAgKiBMb2FkcyBhbnkgcXVldWVkIGRlcGVuZGVuY2llcyB1bnRpbCB0aGV5IGFyZSBhbGwgbG9hZGVkIG9yIHBhdXNlZC4KICAgKgogICAqIEBwcml2YXRlCiAgICovCiAgZ29vZy5EZWJ1Z0xvYWRlcl8ucHJvdG90eXBlLmxvYWREZXBzXyA9IGZ1bmN0aW9uKCkgewogICAgdmFyIGxvYWRlciA9IHRoaXM7CiAgICB2YXIgcGF1c2VkID0gdGhpcy5wYXVzZWRfOwoKICAgIHdoaWxlICh0aGlzLmRlcHNUb0xvYWRfLmxlbmd0aCAmJiAhcGF1c2VkKSB7CiAgICAgIChmdW5jdGlvbigpIHsKICAgICAgICB2YXIgbG9hZENhbGxEb25lID0gZmFsc2U7CiAgICAgICAgdmFyIGRlcCA9IGxvYWRlci5kZXBzVG9Mb2FkXy5zaGlmdCgpOwoKICAgICAgICB2YXIgbG9hZGVkID0gZmFsc2U7CiAgICAgICAgbG9hZGVyLmxvYWRpbmdfKGRlcCk7CgogICAgICAgIHZhciBjb250cm9sbGVyID0gewogICAgICAgICAgcGF1c2U6IGZ1bmN0aW9uKCkgewogICAgICAgICAgICBpZiAobG9hZENhbGxEb25lKSB7CiAgICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKCdDYW5ub3QgY2FsbCBwYXVzZSBhZnRlciB0aGUgY2FsbCB0byBsb2FkLicpOwogICAgICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgIHBhdXNlZCA9IHRydWU7CiAgICAgICAgICAgIH0KICAgICAgICAgIH0sCiAgICAgICAgICByZXN1bWU6IGZ1bmN0aW9uKCkgewogICAgICAgICAgICBpZiAobG9hZENhbGxEb25lKSB7CiAgICAgICAgICAgICAgbG9hZGVyLnJlc3VtZV8oKTsKICAgICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgICAvLyBTb21lIGRlcCBjYWxsZWQgcGF1c2UgYW5kIHRoZW4gcmVzdW1lIGluIHRoZSBzYW1lIGxvYWQgY2FsbC4KICAgICAgICAgICAgICAvLyBKdXN0IGtlZXAgcnVubmluZyB0aGlzIHNhbWUgbG9vcC4KICAgICAgICAgICAgICBwYXVzZWQgPSBmYWxzZTsKICAgICAgICAgICAgfQogICAgICAgICAgfSwKICAgICAgICAgIGxvYWRlZDogZnVuY3Rpb24oKSB7CiAgICAgICAgICAgIGlmIChsb2FkZWQpIHsKICAgICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoJ0RvdWJsZSBjYWxsIHRvIGxvYWRlZC4nKTsKICAgICAgICAgICAgfQoKICAgICAgICAgICAgbG9hZGVkID0gdHJ1ZTsKICAgICAgICAgICAgbG9hZGVyLmxvYWRlZF8oZGVwKTsKICAgICAgICAgIH0sCiAgICAgICAgICBwZW5kaW5nOiBmdW5jdGlvbigpIHsKICAgICAgICAgICAgLy8gRGVmZW5zaXZlIGNvcHkuCiAgICAgICAgICAgIHZhciBwZW5kaW5nID0gW107CiAgICAgICAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgbG9hZGVyLmxvYWRpbmdEZXBzXy5sZW5ndGg7IGkrKykgewogICAgICAgICAgICAgIHBlbmRpbmcucHVzaChsb2FkZXIubG9hZGluZ0RlcHNfW2ldKTsKICAgICAgICAgICAgfQogICAgICAgICAgICByZXR1cm4gcGVuZGluZzsKICAgICAgICAgIH0sCiAgICAgICAgICAvKioKICAgICAgICAgICAqIEBwYXJhbSB7Z29vZy5Nb2R1bGVUeXBlfSB0eXBlCiAgICAgICAgICAgKi8KICAgICAgICAgIHNldE1vZHVsZVN0YXRlOiBmdW5jdGlvbih0eXBlKSB7CiAgICAgICAgICAgIGdvb2cubW9kdWxlTG9hZGVyU3RhdGVfID0gewogICAgICAgICAgICAgIHR5cGU6IHR5cGUsCiAgICAgICAgICAgICAgbW9kdWxlTmFtZTogJycsCiAgICAgICAgICAgICAgZGVjbGFyZUxlZ2FjeU5hbWVzcGFjZTogZmFsc2UKICAgICAgICAgICAgfTsKICAgICAgICAgIH0sCiAgICAgICAgICAvKiogQHR5cGUge2Z1bmN0aW9uKHN0cmluZywgc3RyaW5nLCBzdHJpbmc9KX0gKi8KICAgICAgICAgIHJlZ2lzdGVyRXM2TW9kdWxlRXhwb3J0czogZnVuY3Rpb24oCiAgICAgICAgICAgICAgcGF0aCwgZXhwb3J0cywgb3B0X2Nsb3N1cmVOYW1lc3BhY2UpIHsKICAgICAgICAgICAgaWYgKG9wdF9jbG9zdXJlTmFtZXNwYWNlKSB7CiAgICAgICAgICAgICAgZ29vZy5sb2FkZWRNb2R1bGVzX1tvcHRfY2xvc3VyZU5hbWVzcGFjZV0gPSB7CiAgICAgICAgICAgICAgICBleHBvcnRzOiBleHBvcnRzLAogICAgICAgICAgICAgICAgdHlwZTogZ29vZy5Nb2R1bGVUeXBlLkVTNiwKICAgICAgICAgICAgICAgIG1vZHVsZUlkOiBvcHRfY2xvc3VyZU5hbWVzcGFjZSB8fCAnJwogICAgICAgICAgICAgIH07CiAgICAgICAgICAgIH0KICAgICAgICAgIH0sCiAgICAgICAgICAvKiogQHR5cGUge2Z1bmN0aW9uKHN0cmluZywgPyl9ICovCiAgICAgICAgICByZWdpc3Rlckdvb2dNb2R1bGVFeHBvcnRzOiBmdW5jdGlvbihtb2R1bGVJZCwgZXhwb3J0cykgewogICAgICAgICAgICBnb29nLmxvYWRlZE1vZHVsZXNfW21vZHVsZUlkXSA9IHsKICAgICAgICAgICAgICBleHBvcnRzOiBleHBvcnRzLAogICAgICAgICAgICAgIHR5cGU6IGdvb2cuTW9kdWxlVHlwZS5HT09HLAogICAgICAgICAgICAgIG1vZHVsZUlkOiBtb2R1bGVJZAogICAgICAgICAgICB9OwogICAgICAgICAgfSwKICAgICAgICAgIGNsZWFyTW9kdWxlU3RhdGU6IGZ1bmN0aW9uKCkgewogICAgICAgICAgICBnb29nLm1vZHVsZUxvYWRlclN0YXRlXyA9IG51bGw7CiAgICAgICAgICB9LAogICAgICAgICAgZGVmZXI6IGZ1bmN0aW9uKGNhbGxiYWNrKSB7CiAgICAgICAgICAgIGlmIChsb2FkQ2FsbERvbmUpIHsKICAgICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoCiAgICAgICAgICAgICAgICAgICdDYW5ub3QgcmVnaXN0ZXIgd2l0aCBkZWZlciBhZnRlciB0aGUgY2FsbCB0byBsb2FkLicpOwogICAgICAgICAgICB9CiAgICAgICAgICAgIGxvYWRlci5kZWZlcl8oZGVwLCBjYWxsYmFjayk7CiAgICAgICAgICB9LAogICAgICAgICAgYXJlRGVwc0xvYWRlZDogZnVuY3Rpb24oKSB7CiAgICAgICAgICAgIHJldHVybiBsb2FkZXIuYXJlRGVwc0xvYWRlZF8oZGVwLnJlcXVpcmVzKTsKICAgICAgICAgIH0KICAgICAgICB9OwoKICAgICAgICB0cnkgewogICAgICAgICAgZGVwLmxvYWQoY29udHJvbGxlcik7CiAgICAgICAgfSBmaW5hbGx5IHsKICAgICAgICAgIGxvYWRDYWxsRG9uZSA9IHRydWU7CiAgICAgICAgfQogICAgICB9KSgpOwogICAgfQoKICAgIGlmIChwYXVzZWQpIHsKICAgICAgdGhpcy5wYXVzZV8oKTsKICAgIH0KICB9OwoKCiAgLyoqIEBwcml2YXRlICovCiAgZ29vZy5EZWJ1Z0xvYWRlcl8ucHJvdG90eXBlLnBhdXNlXyA9IGZ1bmN0aW9uKCkgewogICAgdGhpcy5wYXVzZWRfID0gdHJ1ZTsKICB9OwoKCiAgLyoqIEBwcml2YXRlICovCiAgZ29vZy5EZWJ1Z0xvYWRlcl8ucHJvdG90eXBlLnJlc3VtZV8gPSBmdW5jdGlvbigpIHsKICAgIGlmICh0aGlzLnBhdXNlZF8pIHsKICAgICAgdGhpcy5wYXVzZWRfID0gZmFsc2U7CiAgICAgIHRoaXMubG9hZERlcHNfKCk7CiAgICB9CiAgfTsKCgogIC8qKgogICAqIE1hcmtzIHRoZSBnaXZlbiBkZXBlbmRlbmN5IGFzIGxvYWRpbmcgKGxvYWQgaGFzIGJlZW4gY2FsbGVkIGJ1dCBpdCBoYXMgbm90CiAgICogeWV0IG1hcmtlZCBpdHNlbGYgYXMgZmluaXNoZWQpLiBVc2VmdWwgZm9yIGRlcGVuZGVuY2llcyB0aGF0IHdhbnQgdG8ga25vdwogICAqIHdoYXQgZWxzZSBpcyBsb2FkaW5nLiBFeGFtcGxlOiBnb29nLm1vZHVsZXMgY2Fubm90IGV2YWwgaWYgdGhlcmUgYXJlCiAgICogbG9hZGluZyBkZXBlbmRlbmNpZXMuCiAgICoKICAgKiBAcGFyYW0geyFnb29nLkRlcGVuZGVuY3l9IGRlcAogICAqIEBwcml2YXRlCiAgICovCiAgZ29vZy5EZWJ1Z0xvYWRlcl8ucHJvdG90eXBlLmxvYWRpbmdfID0gZnVuY3Rpb24oZGVwKSB7CiAgICB0aGlzLmxvYWRpbmdEZXBzXy5wdXNoKGRlcCk7CiAgfTsKCgogIC8qKgogICAqIE1hcmtzIHRoZSBnaXZlbiBkZXBlbmRlbmN5IGFzIGhhdmluZyBmaW5pc2hlZCBsb2FkaW5nIGFuZCBiZWluZyBhdmFpbGFibGUKICAgKiBmb3IgcmVxdWlyZS4KICAgKgogICAqIEBwYXJhbSB7IWdvb2cuRGVwZW5kZW5jeX0gZGVwCiAgICogQHByaXZhdGUKICAgKi8KICBnb29nLkRlYnVnTG9hZGVyXy5wcm90b3R5cGUubG9hZGVkXyA9IGZ1bmN0aW9uKGRlcCkgewogICAgZm9yICh2YXIgaSA9IDA7IGkgPCB0aGlzLmxvYWRpbmdEZXBzXy5sZW5ndGg7IGkrKykgewogICAgICBpZiAodGhpcy5sb2FkaW5nRGVwc19baV0gPT0gZGVwKSB7CiAgICAgICAgdGhpcy5sb2FkaW5nRGVwc18uc3BsaWNlKGksIDEpOwogICAgICAgIGJyZWFrOwogICAgICB9CiAgICB9CgogICAgZm9yICh2YXIgaSA9IDA7IGkgPCB0aGlzLmRlZmVycmVkUXVldWVfLmxlbmd0aDsgaSsrKSB7CiAgICAgIGlmICh0aGlzLmRlZmVycmVkUXVldWVfW2ldID09IGRlcC5wYXRoKSB7CiAgICAgICAgdGhpcy5kZWZlcnJlZFF1ZXVlXy5zcGxpY2UoaSwgMSk7CiAgICAgICAgYnJlYWs7CiAgICAgIH0KICAgIH0KCiAgICBpZiAodGhpcy5sb2FkaW5nRGVwc18ubGVuZ3RoID09IHRoaXMuZGVmZXJyZWRRdWV1ZV8ubGVuZ3RoICYmCiAgICAgICAgIXRoaXMuZGVwc1RvTG9hZF8ubGVuZ3RoKSB7CiAgICAgIC8vIFNvbWV0aGluZyBoYXMgYXNrZWQgdG8gbG9hZCB0aGVzZSwgYnV0IHRoZXkgbWF5IG5vdCBiZSBkaXJlY3RseQogICAgICAvLyByZXF1aXJlZCBhZ2FpbiBsYXRlciwgc28gbG9hZCB0aGVtIG5vdyB0aGF0IHdlIGtub3cgd2UncmUgZG9uZSBsb2FkaW5nCiAgICAgIC8vIGV2ZXJ5dGhpbmcgZWxzZS4gZS5nLiBhIGdvb2cgbW9kdWxlIGVudHJ5IHBvaW50LgogICAgICB3aGlsZSAodGhpcy5kZWZlcnJlZFF1ZXVlXy5sZW5ndGgpIHsKICAgICAgICB0aGlzLnJlcXVlc3RlZCh0aGlzLmRlZmVycmVkUXVldWVfLnNoaWZ0KCksIHRydWUpOwogICAgICB9CiAgICB9CgogICAgZGVwLmxvYWRlZCgpOwogIH07CgoKICAvKioKICAgKiBAcGFyYW0geyFBcnJheTxzdHJpbmc+fSBwYXRoc09ySWRzCiAgICogQHJldHVybiB7Ym9vbGVhbn0KICAgKiBAcHJpdmF0ZQogICAqLwogIGdvb2cuRGVidWdMb2FkZXJfLnByb3RvdHlwZS5hcmVEZXBzTG9hZGVkXyA9IGZ1bmN0aW9uKHBhdGhzT3JJZHMpIHsKICAgIGZvciAodmFyIGkgPSAwOyBpIDwgcGF0aHNPcklkcy5sZW5ndGg7IGkrKykgewogICAgICB2YXIgcGF0aCA9IHRoaXMuZ2V0UGF0aEZyb21EZXBzXyhwYXRoc09ySWRzW2ldKTsKICAgICAgaWYgKCFwYXRoIHx8CiAgICAgICAgICAoIShwYXRoIGluIHRoaXMuZGVmZXJyZWRDYWxsYmFja3NfKSAmJgogICAgICAgICAgICFnb29nLmlzUHJvdmlkZWRfKHBhdGhzT3JJZHNbaV0pKSkgewogICAgICAgIHJldHVybiBmYWxzZTsKICAgICAgfQogICAgfQoKICAgIHJldHVybiB0cnVlOwogIH07CgoKICAvKioKICAgKiBAcGFyYW0ge3N0cmluZ30gYWJzUGF0aE9ySWQKICAgKiBAcmV0dXJuIHs/c3RyaW5nfQogICAqIEBwcml2YXRlCiAgICovCiAgZ29vZy5EZWJ1Z0xvYWRlcl8ucHJvdG90eXBlLmdldFBhdGhGcm9tRGVwc18gPSBmdW5jdGlvbihhYnNQYXRoT3JJZCkgewogICAgaWYgKGFic1BhdGhPcklkIGluIHRoaXMuaWRUb1BhdGhfKSB7CiAgICAgIHJldHVybiB0aGlzLmlkVG9QYXRoX1thYnNQYXRoT3JJZF07CiAgICB9IGVsc2UgaWYgKGFic1BhdGhPcklkIGluIHRoaXMuZGVwZW5kZW5jaWVzXykgewogICAgICByZXR1cm4gYWJzUGF0aE9ySWQ7CiAgICB9IGVsc2UgewogICAgICByZXR1cm4gbnVsbDsKICAgIH0KICB9OwoKCiAgLyoqCiAgICogQHBhcmFtIHshZ29vZy5EZXBlbmRlbmN5fSBkZXBlbmRlbmN5CiAgICogQHBhcmFtIHshRnVuY3Rpb259IGNhbGxiYWNrCiAgICogQHByaXZhdGUKICAgKi8KICBnb29nLkRlYnVnTG9hZGVyXy5wcm90b3R5cGUuZGVmZXJfID0gZnVuY3Rpb24oZGVwZW5kZW5jeSwgY2FsbGJhY2spIHsKICAgIHRoaXMuZGVmZXJyZWRDYWxsYmFja3NfW2RlcGVuZGVuY3kucGF0aF0gPSBjYWxsYmFjazsKICAgIHRoaXMuZGVmZXJyZWRRdWV1ZV8ucHVzaChkZXBlbmRlbmN5LnBhdGgpOwogIH07CgoKICAvKioKICAgKiBJbnRlcmZhY2UgZm9yIGdvb2cuRGVwZW5kZW5jeSBpbXBsZW1lbnRhdGlvbnMgdG8gaGF2ZSBzb21lIGNvbnRyb2wgb3ZlcgogICAqIGxvYWRpbmcgb2YgZGVwZW5kZW5jaWVzLgogICAqCiAgICogQHJlY29yZAogICAqLwogIGdvb2cuTG9hZENvbnRyb2xsZXIgPSBmdW5jdGlvbigpIHt9OwoKCiAgLyoqCiAgICogVGVsbHMgdGhlIGNvbnRyb2xsZXIgdG8gaGFsdCBsb2FkaW5nIG9mIG1vcmUgZGVwZW5kZW5jaWVzLgogICAqLwogIGdvb2cuTG9hZENvbnRyb2xsZXIucHJvdG90eXBlLnBhdXNlID0gZnVuY3Rpb24oKSB7fTsKCgogIC8qKgogICAqIFRlbGxzIHRoZSBjb250cm9sbGVyIHRvIHJlc3VtZSBsb2FkaW5nIG9mIG1vcmUgZGVwZW5kZW5jaWVzIGlmIHBhdXNlZC4KICAgKi8KICBnb29nLkxvYWRDb250cm9sbGVyLnByb3RvdHlwZS5yZXN1bWUgPSBmdW5jdGlvbigpIHt9OwoKCiAgLyoqCiAgICogVGVsbHMgdGhlIGNvbnRyb2xsZXIgdGhhdCB0aGlzIGRlcGVuZGVuY3kgaGFzIGZpbmlzaGVkIGxvYWRpbmcuCiAgICoKICAgKiBUaGlzIGNhdXNlcyB0aGlzIHRvIGJlIHJlbW92ZWQgZnJvbSBwZW5kaW5nKCkgYW5kIGFueSBsb2FkIGNhbGxiYWNrcyB0bwogICAqIGZpcmUuCiAgICovCiAgZ29vZy5Mb2FkQ29udHJvbGxlci5wcm90b3R5cGUubG9hZGVkID0gZnVuY3Rpb24oKSB7fTsKCgogIC8qKgogICAqIExpc3Qgb2YgZGVwZW5kZW5jaWVzIG9uIHdoaWNoIGxvYWQgaGFzIGJlZW4gY2FsbGVkIGJ1dCB3aGljaCBoYXZlIG5vdAogICAqIGNhbGxlZCBsb2FkZWQgb24gdGhlaXIgY29udHJvbGxlci4gVGhpcyBpbmNsdWRlcyB0aGUgY3VycmVudCBkZXBlbmRlbmN5LgogICAqCiAgICogQHJldHVybiB7IUFycmF5PCFnb29nLkRlcGVuZGVuY3k+fQogICAqLwogIGdvb2cuTG9hZENvbnRyb2xsZXIucHJvdG90eXBlLnBlbmRpbmcgPSBmdW5jdGlvbigpIHt9OwoKCiAgLyoqCiAgICogUmVnaXN0ZXJzIGFuIG9iamVjdCBhcyBhbiBFUzYgbW9kdWxlJ3MgZXhwb3J0cyBzbyB0aGF0IGdvb2cubW9kdWxlcyBtYXkKICAgKiByZXF1aXJlIGl0IGJ5IHBhdGguCiAgICoKICAgKiBAcGFyYW0ge3N0cmluZ30gcGF0aCBGdWxsIHBhdGggb2YgdGhlIG1vZHVsZS4KICAgKiBAcGFyYW0gez99IGV4cG9ydHMKICAgKiBAcGFyYW0ge3N0cmluZz19IG9wdF9jbG9zdXJlTmFtZXNwYWNlIENsb3N1cmUgbmFtZXNwYWNlIHRvIGFzc29jaWF0ZSB3aXRoCiAgICogICAgIHRoaXMgbW9kdWxlLgogICAqLwogIGdvb2cuTG9hZENvbnRyb2xsZXIucHJvdG90eXBlLnJlZ2lzdGVyRXM2TW9kdWxlRXhwb3J0cyA9IGZ1bmN0aW9uKAogICAgICBwYXRoLCBleHBvcnRzLCBvcHRfY2xvc3VyZU5hbWVzcGFjZSkge307CgoKICAvKioKICAgKiBTZXRzIHRoZSBjdXJyZW50IG1vZHVsZSBzdGF0ZS4KICAgKgogICAqIEBwYXJhbSB7Z29vZy5Nb2R1bGVUeXBlfSB0eXBlIFR5cGUgb2YgbW9kdWxlLgogICAqLwogIGdvb2cuTG9hZENvbnRyb2xsZXIucHJvdG90eXBlLnNldE1vZHVsZVN0YXRlID0gZnVuY3Rpb24odHlwZSkge307CgoKICAvKioKICAgKiBDbGVhcnMgdGhlIGN1cnJlbnQgbW9kdWxlIHN0YXRlLgogICAqLwogIGdvb2cuTG9hZENvbnRyb2xsZXIucHJvdG90eXBlLmNsZWFyTW9kdWxlU3RhdGUgPSBmdW5jdGlvbigpIHt9OwoKCiAgLyoqCiAgICogUmVnaXN0ZXJzIGEgY2FsbGJhY2sgdG8gY2FsbCBvbmNlIHRoZSBkZXBlbmRlbmN5IGlzIGFjdHVhbGx5IHJlcXVlc3RlZAogICAqIHZpYSBnb29nLnJlcXVpcmUgKyBhbGwgb2YgdGhlIGltbWVkaWF0ZSBkZXBlbmRlbmNpZXMgaGF2ZSBiZWVuIGxvYWRlZCBvcgogICAqIGFsbCBvdGhlciBmaWxlcyBoYXZlIGJlZW4gbG9hZGVkLiBBbGxvd3MgZm9yIGxhenkgbG9hZGluZyB1bnRpbAogICAqIHJlcXVpcmUnZCB3aXRob3V0IHBhdXNpbmcgZGVwZW5kZW5jeSBsb2FkaW5nLCB3aGljaCBpcyBuZWVkZWQgb24gb2xkIElFLgogICAqCiAgICogQHBhcmFtIHshRnVuY3Rpb259IGNhbGxiYWNrCiAgICovCiAgZ29vZy5Mb2FkQ29udHJvbGxlci5wcm90b3R5cGUuZGVmZXIgPSBmdW5jdGlvbihjYWxsYmFjaykge307CgoKICAvKioKICAgKiBAcmV0dXJuIHtib29sZWFufQogICAqLwogIGdvb2cuTG9hZENvbnRyb2xsZXIucHJvdG90eXBlLmFyZURlcHNMb2FkZWQgPSBmdW5jdGlvbigpIHt9OwoKCiAgLyoqCiAgICogQmFzaWMgc3VwZXIgY2xhc3MgZm9yIGFsbCBkZXBlbmRlbmNpZXMgQ2xvc3VyZSBMaWJyYXJ5IGNhbiBsb2FkLgogICAqCiAgICogVGhpcyBkZWZhdWx0IGltcGxlbWVudGF0aW9uIGlzIGRlc2lnbmVkIHRvIGxvYWQgdW50cmFuc3BpbGVkLCBub24tbW9kdWxlCiAgICogc2NyaXB0cyBpbiBhIHdlYiBicm9zd2VyLgogICAqCiAgICogRm9yIHRyYW5zcGlsZWQgbm9uLWdvb2cubW9kdWxlIGZpbGVzIHtAc2VlIGdvb2cuVHJhbnNwaWxlZERlcGVuZGVuY3l9LgogICAqIEZvciBnb29nLm1vZHVsZXMgc2VlIHtAc2VlIGdvb2cuR29vZ01vZHVsZURlcGVuZGVuY3l9LgogICAqIEZvciB1bnRyYW5zcGlsZWQgRVM2IG1vZHVsZXMge0BzZWUgZ29vZy5FczZNb2R1bGVEZXBlbmRlbmN5fS4KICAgKgogICAqIEBwYXJhbSB7c3RyaW5nfSBwYXRoIEFic29sdXRlIHBhdGggb2YgdGhpcyBzY3JpcHQuCiAgICogQHBhcmFtIHtzdHJpbmd9IHJlbGF0aXZlUGF0aCBQYXRoIG9mIHRoaXMgc2NyaXB0IHJlbGF0aXZlIHRvIGdvb2cuYmFzZVBhdGguCiAgICogQHBhcmFtIHshQXJyYXk8c3RyaW5nPn0gcHJvdmlkZXMgZ29vZy5wcm92aWRlZCBvciBnb29nLm1vZHVsZSBzeW1ib2xzCiAgICogICAgIGluIHRoaXMgZmlsZS4KICAgKiBAcGFyYW0geyFBcnJheTxzdHJpbmc+fSByZXF1aXJlcyBnb29nIHN5bWJvbHMgb3IgcmVsYXRpdmUgcGF0aHMgdG8gQ2xvc3VyZQogICAqICAgICB0aGlzIGRlcGVuZHMgb24uCiAgICogQHBhcmFtIHshT2JqZWN0PHN0cmluZywgc3RyaW5nPn0gbG9hZEZsYWdzCiAgICogQHN0cnVjdCBAY29uc3RydWN0b3IKICAgKi8KICBnb29nLkRlcGVuZGVuY3kgPSBmdW5jdGlvbigKICAgICAgcGF0aCwgcmVsYXRpdmVQYXRoLCBwcm92aWRlcywgcmVxdWlyZXMsIGxvYWRGbGFncykgewogICAgLyoqIEBjb25zdCAqLwogICAgdGhpcy5wYXRoID0gcGF0aDsKICAgIC8qKiBAY29uc3QgKi8KICAgIHRoaXMucmVsYXRpdmVQYXRoID0gcmVsYXRpdmVQYXRoOwogICAgLyoqIEBjb25zdCAqLwogICAgdGhpcy5wcm92aWRlcyA9IHByb3ZpZGVzOwogICAgLyoqIEBjb25zdCAqLwogICAgdGhpcy5yZXF1aXJlcyA9IHJlcXVpcmVzOwogICAgLyoqIEBjb25zdCAqLwogICAgdGhpcy5sb2FkRmxhZ3MgPSBsb2FkRmxhZ3M7CiAgICAvKiogQHByaXZhdGUge2Jvb2xlYW59ICovCiAgICB0aGlzLmxvYWRlZF8gPSBmYWxzZTsKICAgIC8qKiBAcHJpdmF0ZSB7IUFycmF5PGZ1bmN0aW9uKCk+fSAqLwogICAgdGhpcy5sb2FkQ2FsbGJhY2tzXyA9IFtdOwogIH07CgoKICAvKioKICAgKiBAcmV0dXJuIHtzdHJpbmd9IFRoZSBwYXRobmFtZSBwYXJ0IG9mIHRoaXMgZGVwZW5kZW5jeSdzIHBhdGggaWYgaXQgaXMgYQogICAqICAgICBVUkkuCiAgICovCiAgZ29vZy5EZXBlbmRlbmN5LnByb3RvdHlwZS5nZXRQYXRoTmFtZSA9IGZ1bmN0aW9uKCkgewogICAgdmFyIHBhdGhOYW1lID0gdGhpcy5wYXRoOwogICAgdmFyIHByb3RvY29sSW5kZXggPSBwYXRoTmFtZS5pbmRleE9mKCc6Ly8nKTsKICAgIGlmIChwcm90b2NvbEluZGV4ID49IDApIHsKICAgICAgcGF0aE5hbWUgPSBwYXRoTmFtZS5zdWJzdHJpbmcocHJvdG9jb2xJbmRleCArIDMpOwogICAgICB2YXIgc2xhc2hJbmRleCA9IHBhdGhOYW1lLmluZGV4T2YoJy8nKTsKICAgICAgaWYgKHNsYXNoSW5kZXggPj0gMCkgewogICAgICAgIHBhdGhOYW1lID0gcGF0aE5hbWUuc3Vic3RyaW5nKHNsYXNoSW5kZXggKyAxKTsKICAgICAgfQogICAgfQogICAgcmV0dXJuIHBhdGhOYW1lOwogIH07CgoKICAvKioKICAgKiBAcGFyYW0ge2Z1bmN0aW9uKCl9IGNhbGxiYWNrIENhbGxiYWNrIHRvIGZpcmUgYXMgc29vbiBhcyB0aGlzIGhhcyBsb2FkZWQuCiAgICogQGZpbmFsCiAgICovCiAgZ29vZy5EZXBlbmRlbmN5LnByb3RvdHlwZS5vbkxvYWQgPSBmdW5jdGlvbihjYWxsYmFjaykgewogICAgaWYgKHRoaXMubG9hZGVkXykgewogICAgICBjYWxsYmFjaygpOwogICAgfSBlbHNlIHsKICAgICAgdGhpcy5sb2FkQ2FsbGJhY2tzXy5wdXNoKGNhbGxiYWNrKTsKICAgIH0KICB9OwoKCiAgLyoqCiAgICogTWFya3MgdGhpcyBkZXBlbmRlbmN5IGFzIGxvYWRlZCBhbmQgZmlyZXMgYW55IGNhbGxiYWNrcyByZWdpc3RlcmVkIHdpdGgKICAgKiBvbkxvYWQuCiAgICogQGZpbmFsCiAgICovCiAgZ29vZy5EZXBlbmRlbmN5LnByb3RvdHlwZS5sb2FkZWQgPSBmdW5jdGlvbigpIHsKICAgIHRoaXMubG9hZGVkXyA9IHRydWU7CiAgICB2YXIgY2FsbGJhY2tzID0gdGhpcy5sb2FkQ2FsbGJhY2tzXzsKICAgIHRoaXMubG9hZENhbGxiYWNrc18gPSBbXTsKICAgIGZvciAodmFyIGkgPSAwOyBpIDwgY2FsbGJhY2tzLmxlbmd0aDsgaSsrKSB7CiAgICAgIGNhbGxiYWNrc1tpXSgpOwogICAgfQogIH07CgoKICAvKioKICAgKiBXaGV0aGVyIG9yIG5vdCBkb2N1bWVudC53cml0dGVuIC8gYXBwZW5kZWQgc2NyaXB0IHRhZ3Mgc2hvdWxkIGJlIGRlZmVycmVkLgogICAqCiAgICogQHByaXZhdGUge2Jvb2xlYW59CiAgICovCiAgZ29vZy5EZXBlbmRlbmN5LmRlZmVyXyA9IGZhbHNlOwoKCiAgLyoqCiAgICogTWFwIG9mIHNjcmlwdCByZWFkeSAvIHN0YXRlIGNoYW5nZSBjYWxsYmFja3MuIE9sZCBJRSBjYW5ub3QgaGFuZGxlIHB1dHRpbmcKICAgKiB0aGVzZSBwcm9wZXJ0aWVzIG9uIGdvb2cuZ2xvYmFsLgogICAqCiAgICogQHByaXZhdGUgQGNvbnN0IHshT2JqZWN0PHN0cmluZywgZnVuY3Rpb24oPyk6dW5kZWZpbmVkPn0KICAgKi8KICBnb29nLkRlcGVuZGVuY3kuY2FsbGJhY2tNYXBfID0ge307CgoKICAvKioKICAgKiBAcGFyYW0ge2Z1bmN0aW9uKC4uLj8pOj99IGNhbGxiYWNrCiAgICogQHJldHVybiB7c3RyaW5nfQogICAqIEBwcml2YXRlCiAgICovCiAgZ29vZy5EZXBlbmRlbmN5LnJlZ2lzdGVyQ2FsbGJhY2tfID0gZnVuY3Rpb24oY2FsbGJhY2spIHsKICAgIHZhciBrZXkgPSBNYXRoLnJhbmRvbSgpLnRvU3RyaW5nKDMyKTsKICAgIGdvb2cuRGVwZW5kZW5jeS5jYWxsYmFja01hcF9ba2V5XSA9IGNhbGxiYWNrOwogICAgcmV0dXJuIGtleTsKICB9OwoKCiAgLyoqCiAgICogQHBhcmFtIHtzdHJpbmd9IGtleQogICAqIEBwcml2YXRlCiAgICovCiAgZ29vZy5EZXBlbmRlbmN5LnVucmVnaXN0ZXJDYWxsYmFja18gPSBmdW5jdGlvbihrZXkpIHsKICAgIGRlbGV0ZSBnb29nLkRlcGVuZGVuY3kuY2FsbGJhY2tNYXBfW2tleV07CiAgfTsKCgogIC8qKgogICAqIEBwYXJhbSB7c3RyaW5nfSBrZXkKICAgKiBAcGFyYW0gey4uLj99IHZhcl9hcmdzCiAgICogQHByaXZhdGUKICAgKiBAc3VwcHJlc3Mge3VudXNlZFByaXZhdGVNZW1iZXJzfQogICAqLwogIGdvb2cuRGVwZW5kZW5jeS5jYWxsYmFja18gPSBmdW5jdGlvbihrZXksIHZhcl9hcmdzKSB7CiAgICBpZiAoa2V5IGluIGdvb2cuRGVwZW5kZW5jeS5jYWxsYmFja01hcF8pIHsKICAgICAgdmFyIGNhbGxiYWNrID0gZ29vZy5EZXBlbmRlbmN5LmNhbGxiYWNrTWFwX1trZXldOwogICAgICB2YXIgYXJncyA9IFtdOwogICAgICBmb3IgKHZhciBpID0gMTsgaSA8IGFyZ3VtZW50cy5sZW5ndGg7IGkrKykgewogICAgICAgIGFyZ3MucHVzaChhcmd1bWVudHNbaV0pOwogICAgICB9CiAgICAgIGNhbGxiYWNrLmFwcGx5KHVuZGVmaW5lZCwgYXJncyk7CiAgICB9IGVsc2UgewogICAgICB2YXIgZXJyb3JNZXNzYWdlID0gJ0NhbGxiYWNrIGtleSAnICsga2V5ICsKICAgICAgICAgICcgZG9lcyBub3QgZXhpc3QgKHdhcyBiYXNlLmpzIGxvYWRlZCBtb3JlIHRoYW4gb25jZT8pLic7CiAgICAgIHRocm93IEVycm9yKGVycm9yTWVzc2FnZSk7CiAgICB9CiAgfTsKCgogIC8qKgogICAqIFN0YXJ0cyBsb2FkaW5nIHRoaXMgZGVwZW5kZW5jeS4gVGhpcyBkZXBlbmRlbmN5IGNhbiBwYXVzZSBsb2FkaW5nIGlmIGl0CiAgICogbmVlZHMgdG8gYW5kIHJlc3VtZSBpdCBsYXRlciB2aWEgdGhlIGNvbnRyb2xsZXIgaW50ZXJmYWNlLgogICAqCiAgICogV2hlbiB0aGlzIGlzIGxvYWRlZCBpdCBzaG91bGQgY2FsbCBjb250cm9sbGVyLmxvYWRlZCgpLiBOb3RlIHRoYXQgdGhpcyB3aWxsCiAgICogZW5kIHVwIGNhbGxpbmcgdGhlIGxvYWRlZCBtZXRob2Qgb2YgdGhpcyBkZXBlbmRlbmN5OyB0aGVyZSBpcyBubyBuZWVkIHRvCiAgICogY2FsbCBpdCBleHBsaWNpdGx5LgogICAqCiAgICogQHBhcmFtIHshZ29vZy5Mb2FkQ29udHJvbGxlcn0gY29udHJvbGxlcgogICAqLwogIGdvb2cuRGVwZW5kZW5jeS5wcm90b3R5cGUubG9hZCA9IGZ1bmN0aW9uKGNvbnRyb2xsZXIpIHsKICAgIGlmIChnb29nLmdsb2JhbC5DTE9TVVJFX0lNUE9SVF9TQ1JJUFQpIHsKICAgICAgaWYgKGdvb2cuZ2xvYmFsLkNMT1NVUkVfSU1QT1JUX1NDUklQVCh0aGlzLnBhdGgpKSB7CiAgICAgICAgY29udHJvbGxlci5sb2FkZWQoKTsKICAgICAgfSBlbHNlIHsKICAgICAgICBjb250cm9sbGVyLnBhdXNlKCk7CiAgICAgIH0KICAgICAgcmV0dXJuOwogICAgfQoKICAgIGlmICghZ29vZy5pbkh0bWxEb2N1bWVudF8oKSkgewogICAgICBnb29nLmxvZ1RvQ29uc29sZV8oCiAgICAgICAgICAnQ2Fubm90IHVzZSBkZWZhdWx0IGRlYnVnIGxvYWRlciBvdXRzaWRlIG9mIEhUTUwgZG9jdW1lbnRzLicpOwogICAgICBpZiAodGhpcy5yZWxhdGl2ZVBhdGggPT0gJ2RlcHMuanMnKSB7CiAgICAgICAgLy8gU29tZSBvbGQgY29kZSBpcyByZWx5aW5nIG9uIGJhc2UuanMgYXV0byBsb2FkaW5nIGRlcHMuanMgZmFpbGluZyB3aXRoCiAgICAgICAgLy8gbm8gZXJyb3IgYmVmb3JlIGxhdGVyIHNldHRpbmcgQ0xPU1VSRV9JTVBPUlRfU0NSSVBULgogICAgICAgIC8vIENMT1NVUkVfSU1QT1JUX1NDUklQVCBzaG91bGQgYmUgc2V0ICpiZWZvcmUqIGJhc2UuanMgaXMgbG9hZGVkLCBvcgogICAgICAgIC8vIENMT1NVUkVfTk9fREVQUyBzZXQgdG8gdHJ1ZS4KICAgICAgICBnb29nLmxvZ1RvQ29uc29sZV8oCiAgICAgICAgICAgICdDb25zaWRlciBzZXR0aW5nIENMT1NVUkVfSU1QT1JUX1NDUklQVCBiZWZvcmUgbG9hZGluZyBiYXNlLmpzLCAnICsKICAgICAgICAgICAgJ29yIHNldHRpbmcgQ0xPU1VSRV9OT19ERVBTIHRvIHRydWUuJyk7CiAgICAgICAgY29udHJvbGxlci5sb2FkZWQoKTsKICAgICAgfSBlbHNlIHsKICAgICAgICBjb250cm9sbGVyLnBhdXNlKCk7CiAgICAgIH0KICAgICAgcmV0dXJuOwogICAgfQoKICAgIC8qKiBAdHlwZSB7IUhUTUxEb2N1bWVudH0gKi8KICAgIHZhciBkb2MgPSBnb29nLmdsb2JhbC5kb2N1bWVudDsKCiAgICAvLyBJZiB0aGUgdXNlciB0cmllcyB0byByZXF1aXJlIGEgbmV3IHN5bWJvbCBhZnRlciBkb2N1bWVudCBsb2FkLAogICAgLy8gc29tZXRoaW5nIGhhcyBnb25lIHRlcnJpYmx5IHdyb25nLiBEb2luZyBhIGRvY3VtZW50LndyaXRlIHdvdWxkCiAgICAvLyB3aXBlIG91dCB0aGUgcGFnZS4gVGhpcyBkb2VzIG5vdCBhcHBseSB0byB0aGUgQ1NQLWNvbXBsaWFudCBtZXRob2QKICAgIC8vIG9mIHdyaXRpbmcgc2NyaXB0IHRhZ3MuCiAgICBpZiAoZG9jLnJlYWR5U3RhdGUgPT0gJ2NvbXBsZXRlJyAmJgogICAgICAgICFnb29nLkVOQUJMRV9DSFJPTUVfQVBQX1NBRkVfU0NSSVBUX0xPQURJTkcpIHsKICAgICAgLy8gQ2VydGFpbiB0ZXN0IGZyYW1ld29ya3MgbG9hZCBiYXNlLmpzIG11bHRpcGxlIHRpbWVzLCB3aGljaCB0cmllcwogICAgICAvLyB0byB3cml0ZSBkZXBzLmpzIGVhY2ggdGltZS4gSWYgdGhhdCBoYXBwZW5zLCBqdXN0IGZhaWwgc2lsZW50bHkuCiAgICAgIC8vIFRoZXNlIGZyYW1ld29ya3Mgd2lwZSB0aGUgcGFnZSBiZXR3ZWVuIGVhY2ggbG9hZCBvZiBiYXNlLmpzLCBzbyB0aGlzCiAgICAgIC8vIGlzIE9LLgogICAgICB2YXIgaXNEZXBzID0gL1xiZGVwcy5qcyQvLnRlc3QodGhpcy5wYXRoKTsKICAgICAgaWYgKGlzRGVwcykgewogICAgICAgIGNvbnRyb2xsZXIubG9hZGVkKCk7CiAgICAgICAgcmV0dXJuOwogICAgICB9IGVsc2UgewogICAgICAgIHRocm93IEVycm9yKCdDYW5ub3Qgd3JpdGUgIicgKyB0aGlzLnBhdGggKyAnIiBhZnRlciBkb2N1bWVudCBsb2FkJyk7CiAgICAgIH0KICAgIH0KCiAgICBpZiAoIWdvb2cuRU5BQkxFX0NIUk9NRV9BUFBfU0FGRV9TQ1JJUFRfTE9BRElORyAmJgogICAgICAgIGdvb2cuaXNEb2N1bWVudExvYWRpbmdfKCkpIHsKICAgICAgdmFyIGtleSA9IGdvb2cuRGVwZW5kZW5jeS5yZWdpc3RlckNhbGxiYWNrXyhmdW5jdGlvbihzY3JpcHQpIHsKICAgICAgICBpZiAoIWdvb2cuRGVidWdMb2FkZXJfLklTX09MRF9JRV8gfHwgc2NyaXB0LnJlYWR5U3RhdGUgPT0gJ2NvbXBsZXRlJykgewogICAgICAgICAgZ29vZy5EZXBlbmRlbmN5LnVucmVnaXN0ZXJDYWxsYmFja18oa2V5KTsKICAgICAgICAgIGNvbnRyb2xsZXIubG9hZGVkKCk7CiAgICAgICAgfQogICAgICB9KTsKICAgICAgdmFyIG5vbmNlQXR0ciA9ICFnb29nLkRlYnVnTG9hZGVyXy5JU19PTERfSUVfICYmIGdvb2cuZ2V0U2NyaXB0Tm9uY2UoKSA/CiAgICAgICAgICAnIG5vbmNlPSInICsgZ29vZy5nZXRTY3JpcHROb25jZSgpICsgJyInIDoKICAgICAgICAgICcnOwogICAgICB2YXIgZXZlbnQgPQogICAgICAgICAgZ29vZy5EZWJ1Z0xvYWRlcl8uSVNfT0xEX0lFXyA/ICdvbnJlYWR5c3RhdGVjaGFuZ2UnIDogJ29ubG9hZCc7CiAgICAgIHZhciBkZWZlciA9IGdvb2cuRGVwZW5kZW5jeS5kZWZlcl8gPyAnZGVmZXInIDogJyc7CiAgICAgIHZhciBzY3JpcHQgPSAnPHNjcmlwdCBzcmM9IicgKyB0aGlzLnBhdGggKyAnIiAnICsgZXZlbnQgKwogICAgICAgICAgJz0iZ29vZy5EZXBlbmRlbmN5LmNhbGxiYWNrXyhcJycgKyBrZXkgKwogICAgICAgICAgJ1wnLCB0aGlzKSIgdHlwZT0idGV4dC9qYXZhc2NyaXB0IiAnICsgZGVmZXIgKyBub25jZUF0dHIgKyAnPjwnICsKICAgICAgICAgICcvc2NyaXB0Pic7CiAgICAgIGRvYy53cml0ZSgKICAgICAgICAgIGdvb2cuVFJVU1RFRF9UWVBFU19QT0xJQ1lfID8KICAgICAgICAgICAgICBnb29nLlRSVVNURURfVFlQRVNfUE9MSUNZXy5jcmVhdGVIVE1MKHNjcmlwdCkgOgogICAgICAgICAgICAgIHNjcmlwdCk7CiAgICB9IGVsc2UgewogICAgICB2YXIgc2NyaXB0RWwgPQogICAgICAgICAgLyoqIEB0eXBlIHshSFRNTFNjcmlwdEVsZW1lbnR9ICovIChkb2MuY3JlYXRlRWxlbWVudCgnc2NyaXB0JykpOwogICAgICBzY3JpcHRFbC5kZWZlciA9IGdvb2cuRGVwZW5kZW5jeS5kZWZlcl87CiAgICAgIHNjcmlwdEVsLmFzeW5jID0gZmFsc2U7CiAgICAgIHNjcmlwdEVsLnR5cGUgPSAndGV4dC9qYXZhc2NyaXB0JzsKCiAgICAgIC8vIElmIENTUCBub25jZXMgYXJlIHVzZWQsIHByb3BhZ2F0ZSB0aGVtIHRvIGR5bmFtaWNhbGx5IGNyZWF0ZWQgc2NyaXB0cy4KICAgICAgLy8gVGhpcyBpcyBuZWNlc3NhcnkgdG8gYWxsb3cgbm9uY2UtYmFzZWQgQ1NQcyB3aXRob3V0ICdzdHJpY3QtZHluYW1pYycuCiAgICAgIHZhciBub25jZSA9IGdvb2cuZ2V0U2NyaXB0Tm9uY2UoKTsKICAgICAgaWYgKG5vbmNlKSB7CiAgICAgICAgc2NyaXB0RWwuc2V0QXR0cmlidXRlKCdub25jZScsIG5vbmNlKTsKICAgICAgfQoKICAgICAgaWYgKGdvb2cuRGVidWdMb2FkZXJfLklTX09MRF9JRV8pIHsKICAgICAgICAvLyBFeGVjdXRpb24gb3JkZXIgaXMgbm90IGd1YXJhbnRlZWQgb24gb2xkIElFLCBoYWx0IGxvYWRpbmcgYW5kIHdyaXRlCiAgICAgICAgLy8gdGhlc2Ugc2NyaXB0cyBvbmUgYXQgYSB0aW1lLCBhZnRlciBlYWNoIGxvYWRzLgogICAgICAgIGNvbnRyb2xsZXIucGF1c2UoKTsKICAgICAgICBzY3JpcHRFbC5vbnJlYWR5c3RhdGVjaGFuZ2UgPSBmdW5jdGlvbigpIHsKICAgICAgICAgIGlmIChzY3JpcHRFbC5yZWFkeVN0YXRlID09ICdsb2FkZWQnIHx8CiAgICAgICAgICAgICAgc2NyaXB0RWwucmVhZHlTdGF0ZSA9PSAnY29tcGxldGUnKSB7CiAgICAgICAgICAgIGNvbnRyb2xsZXIubG9hZGVkKCk7CiAgICAgICAgICAgIGNvbnRyb2xsZXIucmVzdW1lKCk7CiAgICAgICAgICB9CiAgICAgICAgfTsKICAgICAgfSBlbHNlIHsKICAgICAgICBzY3JpcHRFbC5vbmxvYWQgPSBmdW5jdGlvbigpIHsKICAgICAgICAgIHNjcmlwdEVsLm9ubG9hZCA9IG51bGw7CiAgICAgICAgICBjb250cm9sbGVyLmxvYWRlZCgpOwogICAgICAgIH07CiAgICAgIH0KCiAgICAgIHNjcmlwdEVsLnNyYyA9IGdvb2cuVFJVU1RFRF9UWVBFU19QT0xJQ1lfID8KICAgICAgICAgIGdvb2cuVFJVU1RFRF9UWVBFU19QT0xJQ1lfLmNyZWF0ZVNjcmlwdFVSTCh0aGlzLnBhdGgpIDoKICAgICAgICAgIHRoaXMucGF0aDsKICAgICAgZG9jLmhlYWQuYXBwZW5kQ2hpbGQoc2NyaXB0RWwpOwogICAgfQogIH07CgoKICAvKioKICAgKiBAcGFyYW0ge3N0cmluZ30gcGF0aCBBYnNvbHV0ZSBwYXRoIG9mIHRoaXMgc2NyaXB0LgogICAqIEBwYXJhbSB7c3RyaW5nfSByZWxhdGl2ZVBhdGggUGF0aCBvZiB0aGlzIHNjcmlwdCByZWxhdGl2ZSB0byBnb29nLmJhc2VQYXRoLgogICAqIEBwYXJhbSB7IUFycmF5PHN0cmluZz59IHByb3ZpZGVzIFNob3VsZCBiZSBhbiBlbXB0eSBhcnJheS4KICAgKiAgICAgVE9ETyhqb2hucGxhaXN0ZWQpIGFkZCBzdXBwb3J0IGZvciBhZGRpbmcgY2xvc3VyZSBuYW1lc3BhY2VzIHRvIEVTNgogICAqICAgICBtb2R1bGVzIGZvciBpbnRlcm9wIHB1cnBvc2VzLgogICAqIEBwYXJhbSB7IUFycmF5PHN0cmluZz59IHJlcXVpcmVzIGdvb2cgc3ltYm9scyBvciByZWxhdGl2ZSBwYXRocyB0byBDbG9zdXJlCiAgICogICAgIHRoaXMgZGVwZW5kcyBvbi4KICAgKiBAcGFyYW0geyFPYmplY3Q8c3RyaW5nLCBzdHJpbmc+fSBsb2FkRmxhZ3MKICAgKiBAc3RydWN0IEBjb25zdHJ1Y3RvcgogICAqIEBleHRlbmRzIHtnb29nLkRlcGVuZGVuY3l9CiAgICovCiAgZ29vZy5FczZNb2R1bGVEZXBlbmRlbmN5ID0gZnVuY3Rpb24oCiAgICAgIHBhdGgsIHJlbGF0aXZlUGF0aCwgcHJvdmlkZXMsIHJlcXVpcmVzLCBsb2FkRmxhZ3MpIHsKICAgIGdvb2cuRXM2TW9kdWxlRGVwZW5kZW5jeS5iYXNlKAogICAgICAgIHRoaXMsICdjb25zdHJ1Y3RvcicsIHBhdGgsIHJlbGF0aXZlUGF0aCwgcHJvdmlkZXMsIHJlcXVpcmVzLCBsb2FkRmxhZ3MpOwogIH07CiAgZ29vZy5pbmhlcml0cyhnb29nLkVzNk1vZHVsZURlcGVuZGVuY3ksIGdvb2cuRGVwZW5kZW5jeSk7CgoKICAvKiogQG92ZXJyaWRlICovCiAgZ29vZy5FczZNb2R1bGVEZXBlbmRlbmN5LnByb3RvdHlwZS5sb2FkID0gZnVuY3Rpb24oY29udHJvbGxlcikgewogICAgaWYgKGdvb2cuZ2xvYmFsLkNMT1NVUkVfSU1QT1JUX1NDUklQVCkgewogICAgICBpZiAoZ29vZy5nbG9iYWwuQ0xPU1VSRV9JTVBPUlRfU0NSSVBUKHRoaXMucGF0aCkpIHsKICAgICAgICBjb250cm9sbGVyLmxvYWRlZCgpOwogICAgICB9IGVsc2UgewogICAgICAgIGNvbnRyb2xsZXIucGF1c2UoKTsKICAgICAgfQogICAgICByZXR1cm47CiAgICB9CgogICAgaWYgKCFnb29nLmluSHRtbERvY3VtZW50XygpKSB7CiAgICAgIGdvb2cubG9nVG9Db25zb2xlXygKICAgICAgICAgICdDYW5ub3QgdXNlIGRlZmF1bHQgZGVidWcgbG9hZGVyIG91dHNpZGUgb2YgSFRNTCBkb2N1bWVudHMuJyk7CiAgICAgIGNvbnRyb2xsZXIucGF1c2UoKTsKICAgICAgcmV0dXJuOwogICAgfQoKICAgIC8qKiBAdHlwZSB7IUhUTUxEb2N1bWVudH0gKi8KICAgIHZhciBkb2MgPSBnb29nLmdsb2JhbC5kb2N1bWVudDsKCiAgICB2YXIgZGVwID0gdGhpczsKCiAgICAvLyBUT0RPKGpvaG5wbGFpc3RlZCk6IERvZXMgZG9jdW1lbnQud3JpdGluZyByZWFsbHkgc3BlZWQgdXAgYW55dGhpbmc/IEFueQogICAgLy8gZGlmZmVyZW5jZSBiZXR3ZWVuIHRoaXMgYW5kIGp1c3Qgd2FpdGluZyBmb3IgaW50ZXJhY3RpdmUgbW9kZSBhbmQgdGhlbgogICAgLy8gYXBwZW5kaW5nPwogICAgZnVuY3Rpb24gd3JpdGUoc3JjLCBjb250ZW50cykgewogICAgICBpZiAoY29udGVudHMpIHsKICAgICAgICB2YXIgc2NyaXB0ID0gJzxzY3JpcHQgdHlwZT0ibW9kdWxlIiBjcm9zc29yaWdpbj4nICsgY29udGVudHMgKyAnPC8nICsKICAgICAgICAgICAgJ3NjcmlwdD4nOwogICAgICAgIGRvYy53cml0ZSgKICAgICAgICAgICAgZ29vZy5UUlVTVEVEX1RZUEVTX1BPTElDWV8gPwogICAgICAgICAgICAgICAgZ29vZy5UUlVTVEVEX1RZUEVTX1BPTElDWV8uY3JlYXRlSFRNTChzY3JpcHQpIDoKICAgICAgICAgICAgICAgIHNjcmlwdCk7CiAgICAgIH0gZWxzZSB7CiAgICAgICAgdmFyIHNjcmlwdCA9ICc8c2NyaXB0IHR5cGU9Im1vZHVsZSIgY3Jvc3NvcmlnaW4gc3JjPSInICsgc3JjICsgJyI+PC8nICsKICAgICAgICAgICAgJ3NjcmlwdD4nOwogICAgICAgIGRvYy53cml0ZSgKICAgICAgICAgICAgZ29vZy5UUlVTVEVEX1RZUEVTX1BPTElDWV8gPwogICAgICAgICAgICAgICAgZ29vZy5UUlVTVEVEX1RZUEVTX1BPTElDWV8uY3JlYXRlSFRNTChzY3JpcHQpIDoKICAgICAgICAgICAgICAgIHNjcmlwdCk7CiAgICAgIH0KICAgIH0KCiAgICBmdW5jdGlvbiBhcHBlbmQoc3JjLCBjb250ZW50cykgewogICAgICB2YXIgc2NyaXB0RWwgPQogICAgICAgICAgLyoqIEB0eXBlIHshSFRNTFNjcmlwdEVsZW1lbnR9ICovIChkb2MuY3JlYXRlRWxlbWVudCgnc2NyaXB0JykpOwogICAgICBzY3JpcHRFbC5kZWZlciA9IHRydWU7CiAgICAgIHNjcmlwdEVsLmFzeW5jID0gZmFsc2U7CiAgICAgIHNjcmlwdEVsLnR5cGUgPSAnbW9kdWxlJzsKICAgICAgc2NyaXB0RWwuc2V0QXR0cmlidXRlKCdjcm9zc29yaWdpbicsIHRydWUpOwoKICAgICAgLy8gSWYgQ1NQIG5vbmNlcyBhcmUgdXNlZCwgcHJvcGFnYXRlIHRoZW0gdG8gZHluYW1pY2FsbHkgY3JlYXRlZCBzY3JpcHRzLgogICAgICAvLyBUaGlzIGlzIG5lY2Vzc2FyeSB0byBhbGxvdyBub25jZS1iYXNlZCBDU1BzIHdpdGhvdXQgJ3N0cmljdC1keW5hbWljJy4KICAgICAgdmFyIG5vbmNlID0gZ29vZy5nZXRTY3JpcHROb25jZSgpOwogICAgICBpZiAobm9uY2UpIHsKICAgICAgICBzY3JpcHRFbC5zZXRBdHRyaWJ1dGUoJ25vbmNlJywgbm9uY2UpOwogICAgICB9CgogICAgICBpZiAoY29udGVudHMpIHsKICAgICAgICBzY3JpcHRFbC50ZXh0Q29udGVudCA9IGdvb2cuVFJVU1RFRF9UWVBFU19QT0xJQ1lfID8KICAgICAgICAgICAgZ29vZy5UUlVTVEVEX1RZUEVTX1BPTElDWV8uY3JlYXRlU2NyaXB0KGNvbnRlbnRzKSA6CiAgICAgICAgICAgIGNvbnRlbnRzOwogICAgICB9IGVsc2UgewogICAgICAgIHNjcmlwdEVsLnNyYyA9IGdvb2cuVFJVU1RFRF9UWVBFU19QT0xJQ1lfID8KICAgICAgICAgICAgZ29vZy5UUlVTVEVEX1RZUEVTX1BPTElDWV8uY3JlYXRlU2NyaXB0VVJMKHNyYykgOgogICAgICAgICAgICBzcmM7CiAgICAgIH0KCiAgICAgIGRvYy5oZWFkLmFwcGVuZENoaWxkKHNjcmlwdEVsKTsKICAgIH0KCiAgICB2YXIgY3JlYXRlOwoKICAgIGlmIChnb29nLmlzRG9jdW1lbnRMb2FkaW5nXygpKSB7CiAgICAgIGNyZWF0ZSA9IHdyaXRlOwogICAgICAvLyBXZSBjYW4gT05MWSBjYWxsIGRvY3VtZW50LndyaXRlIGlmIHdlIGFyZSBndWFyYW50ZWVkIHRoYXQgYW55CiAgICAgIC8vIG5vbi1tb2R1bGUgc2NyaXB0IHRhZ3MgZG9jdW1lbnQud3JpdHRlbiBhZnRlciB0aGlzIGFyZSBkZWZlcnJlZC4KICAgICAgLy8gU21hbGwgb3B0aW1pemF0aW9uLCBpbiB0aGVvcnkgZG9jdW1lbnQud3JpdGluZyBpcyBmYXN0ZXIuCiAgICAgIGdvb2cuRGVwZW5kZW5jeS5kZWZlcl8gPSB0cnVlOwogICAgfSBlbHNlIHsKICAgICAgY3JlYXRlID0gYXBwZW5kOwogICAgfQoKICAgIC8vIFdyaXRlIDQgc2VwYXJhdGUgdGFncyBoZXJlOgogICAgLy8gMSkgU2V0cyB0aGUgbW9kdWxlIHN0YXRlIGF0IHRoZSBjb3JyZWN0IHRpbWUgKGp1c3QgYmVmb3JlIGV4ZWN1dGlvbikuCiAgICAvLyAyKSBBIHNyYyBub2RlIGZvciB0aGlzLCB3aGljaCBqdXN0IGhvcGVmdWxseSBsZXRzIHRoZSBicm93c2VyIGxvYWQgaXQgYQogICAgLy8gICAgbGl0dGxlIGVhcmx5IChubyBuZWVkIHRvIHBhcnNlICMzKS4KICAgIC8vIDMpIEltcG9ydCB0aGUgbW9kdWxlIGFuZCByZWdpc3RlciBpdC4KICAgIC8vIDQpIENsZWFyIHRoZSBtb2R1bGUgc3RhdGUgYXQgdGhlIGNvcnJlY3QgdGltZS4gR3VhcmFudGVlZCB0byBydW4gZXZlbgogICAgLy8gICAgaWYgdGhlcmUgaXMgYW4gZXJyb3IgaW4gdGhlIG1vZHVsZSAoIzMgd2lsbCBub3QgcnVuIGlmIHRoZXJlIGlzIGFuCiAgICAvLyAgICBlcnJvciBpbiB0aGUgbW9kdWxlKS4KICAgIHZhciBiZWZvcmVLZXkgPSBnb29nLkRlcGVuZGVuY3kucmVnaXN0ZXJDYWxsYmFja18oZnVuY3Rpb24oKSB7CiAgICAgIGdvb2cuRGVwZW5kZW5jeS51bnJlZ2lzdGVyQ2FsbGJhY2tfKGJlZm9yZUtleSk7CiAgICAgIGNvbnRyb2xsZXIuc2V0TW9kdWxlU3RhdGUoZ29vZy5Nb2R1bGVUeXBlLkVTNik7CiAgICB9KTsKICAgIGNyZWF0ZSh1bmRlZmluZWQsICdnb29nLkRlcGVuZGVuY3kuY2FsbGJhY2tfKCInICsgYmVmb3JlS2V5ICsgJyIpJyk7CgogICAgLy8gVE9ETyhqb2hucGxhaXN0ZWQpOiBEb2VzIHRoaXMgcmVhbGx5IHNwZWVkIHVwIGFueXRoaW5nPwogICAgY3JlYXRlKHRoaXMucGF0aCwgdW5kZWZpbmVkKTsKCiAgICB2YXIgcmVnaXN0ZXJLZXkgPSBnb29nLkRlcGVuZGVuY3kucmVnaXN0ZXJDYWxsYmFja18oZnVuY3Rpb24oZXhwb3J0cykgewogICAgICBnb29nLkRlcGVuZGVuY3kudW5yZWdpc3RlckNhbGxiYWNrXyhyZWdpc3RlcktleSk7CiAgICAgIGNvbnRyb2xsZXIucmVnaXN0ZXJFczZNb2R1bGVFeHBvcnRzKAogICAgICAgICAgZGVwLnBhdGgsIGV4cG9ydHMsIGdvb2cubW9kdWxlTG9hZGVyU3RhdGVfLm1vZHVsZU5hbWUpOwogICAgfSk7CiAgICBjcmVhdGUoCiAgICAgICAgdW5kZWZpbmVkLAogICAgICAgICdpbXBvcnQgKiBhcyBtIGZyb20gIicgKyB0aGlzLnBhdGggKyAnIjsgZ29vZy5EZXBlbmRlbmN5LmNhbGxiYWNrXygiJyArCiAgICAgICAgICAgIHJlZ2lzdGVyS2V5ICsgJyIsIG0pJyk7CgogICAgdmFyIGFmdGVyS2V5ID0gZ29vZy5EZXBlbmRlbmN5LnJlZ2lzdGVyQ2FsbGJhY2tfKGZ1bmN0aW9uKCkgewogICAgICBnb29nLkRlcGVuZGVuY3kudW5yZWdpc3RlckNhbGxiYWNrXyhhZnRlcktleSk7CiAgICAgIGNvbnRyb2xsZXIuY2xlYXJNb2R1bGVTdGF0ZSgpOwogICAgICBjb250cm9sbGVyLmxvYWRlZCgpOwogICAgfSk7CiAgICBjcmVhdGUodW5kZWZpbmVkLCAnZ29vZy5EZXBlbmRlbmN5LmNhbGxiYWNrXygiJyArIGFmdGVyS2V5ICsgJyIpJyk7CiAgfTsKCgogIC8qKgogICAqIFN1cGVyY2xhc3Mgb2YgYW55IGRlcGVuZGVuY3kgdGhhdCBuZWVkcyB0byBiZSBsb2FkZWQgaW50byBtZW1vcnksCiAgICogdHJhbnNmb3JtZWQsIGFuZCB0aGVuIGV2YWwnZCAoZ29vZy5tb2R1bGVzIGFuZCB0cmFuc3BpbGVkIGZpbGVzKS4KICAgKgogICAqIEBwYXJhbSB7c3RyaW5nfSBwYXRoIEFic29sdXRlIHBhdGggb2YgdGhpcyBzY3JpcHQuCiAgICogQHBhcmFtIHtzdHJpbmd9IHJlbGF0aXZlUGF0aCBQYXRoIG9mIHRoaXMgc2NyaXB0IHJlbGF0aXZlIHRvIGdvb2cuYmFzZVBhdGguCiAgICogQHBhcmFtIHshQXJyYXk8c3RyaW5nPn0gcHJvdmlkZXMgZ29vZy5wcm92aWRlZCBvciBnb29nLm1vZHVsZSBzeW1ib2xzCiAgICogICAgIGluIHRoaXMgZmlsZS4KICAgKiBAcGFyYW0geyFBcnJheTxzdHJpbmc+fSByZXF1aXJlcyBnb29nIHN5bWJvbHMgb3IgcmVsYXRpdmUgcGF0aHMgdG8gQ2xvc3VyZQogICAqICAgICB0aGlzIGRlcGVuZHMgb24uCiAgICogQHBhcmFtIHshT2JqZWN0PHN0cmluZywgc3RyaW5nPn0gbG9hZEZsYWdzCiAgICogQHN0cnVjdCBAY29uc3RydWN0b3IgQGFic3RyYWN0CiAgICogQGV4dGVuZHMge2dvb2cuRGVwZW5kZW5jeX0KICAgKi8KICBnb29nLlRyYW5zZm9ybWVkRGVwZW5kZW5jeSA9IGZ1bmN0aW9uKAogICAgICBwYXRoLCByZWxhdGl2ZVBhdGgsIHByb3ZpZGVzLCByZXF1aXJlcywgbG9hZEZsYWdzKSB7CiAgICBnb29nLlRyYW5zZm9ybWVkRGVwZW5kZW5jeS5iYXNlKAogICAgICAgIHRoaXMsICdjb25zdHJ1Y3RvcicsIHBhdGgsIHJlbGF0aXZlUGF0aCwgcHJvdmlkZXMsIHJlcXVpcmVzLCBsb2FkRmxhZ3MpOwogICAgLyoqIEBwcml2YXRlIHs/c3RyaW5nfSAqLwogICAgdGhpcy5jb250ZW50c18gPSBudWxsOwoKICAgIC8qKgogICAgICogV2hldGhlciB0byBsYXppbHkgbWFrZSB0aGUgc3luY2hyb25vdXMgWEhSICh3aGVuIGdvb2cucmVxdWlyZSdkKSBvciBtYWtlCiAgICAgKiB0aGUgc3luY2hyb25vdXMgWEhSIHdoZW4gaW5pdGlhbGx5IGxvYWRpbmcuIE9uIEZpcmVGb3ggNjEgdGhlcmUgaXMgYSBidWcKICAgICAqIHdoZXJlIGFuIEVTNiBtb2R1bGUgY2Fubm90IG1ha2UgYSBzeW5jaHJvbm91cyBYSFIgKHJhdGhlciwgaXQgY2FuLCBidXQgaWYKICAgICAqIGl0IGRvZXMgdGhlbiBubyBvdGhlciBFUzYgbW9kdWxlcyB3aWxsIGxvYWQgYWZ0ZXIpLgogICAgICoKICAgICAqIHRsO2RyIHdlIGxhenkgbG9hZCBkdWUgdG8gYnVncyBvbiBvbGRlciBicm93c2VycyBhbmQgZWFnZXIgbG9hZCBkdWUgdG8KICAgICAqIGJ1Z3Mgb24gbmV3ZXIgb25lcy4KICAgICAqCiAgICAgKiBodHRwczovL2J1Z3ppbGxhLm1vemlsbGEub3JnL3Nob3dfYnVnLmNnaT9pZD0xNDc3MDkwCiAgICAgKgogICAgICogQHByaXZhdGUgQGNvbnN0IHtib29sZWFufQogICAgICovCiAgICB0aGlzLmxhenlGZXRjaF8gPSAhZ29vZy5pbkh0bWxEb2N1bWVudF8oKSB8fAogICAgICAgICEoJ25vTW9kdWxlJyBpbiBnb29nLmdsb2JhbC5kb2N1bWVudC5jcmVhdGVFbGVtZW50KCdzY3JpcHQnKSk7CiAgfTsKICBnb29nLmluaGVyaXRzKGdvb2cuVHJhbnNmb3JtZWREZXBlbmRlbmN5LCBnb29nLkRlcGVuZGVuY3kpOwoKCiAgLyoqIEBvdmVycmlkZSAqLwogIGdvb2cuVHJhbnNmb3JtZWREZXBlbmRlbmN5LnByb3RvdHlwZS5sb2FkID0gZnVuY3Rpb24oY29udHJvbGxlcikgewogICAgdmFyIGRlcCA9IHRoaXM7CgogICAgZnVuY3Rpb24gZmV0Y2goKSB7CiAgICAgIGRlcC5jb250ZW50c18gPSBnb29nLmxvYWRGaWxlU3luY18oZGVwLnBhdGgpOwoKICAgICAgaWYgKGRlcC5jb250ZW50c18pIHsKICAgICAgICBkZXAuY29udGVudHNfID0gZGVwLnRyYW5zZm9ybShkZXAuY29udGVudHNfKTsKICAgICAgICBpZiAoZGVwLmNvbnRlbnRzXykgewogICAgICAgICAgZGVwLmNvbnRlbnRzXyArPSAnXG4vLyMgc291cmNlVVJMPScgKyBkZXAucGF0aDsKICAgICAgICB9CiAgICAgIH0KICAgIH0KCiAgICBpZiAoZ29vZy5nbG9iYWwuQ0xPU1VSRV9JTVBPUlRfU0NSSVBUKSB7CiAgICAgIGZldGNoKCk7CiAgICAgIGlmICh0aGlzLmNvbnRlbnRzXyAmJgogICAgICAgICAgZ29vZy5nbG9iYWwuQ0xPU1VSRV9JTVBPUlRfU0NSSVBUKCcnLCB0aGlzLmNvbnRlbnRzXykpIHsKICAgICAgICB0aGlzLmNvbnRlbnRzXyA9IG51bGw7CiAgICAgICAgY29udHJvbGxlci5sb2FkZWQoKTsKICAgICAgfSBlbHNlIHsKICAgICAgICBjb250cm9sbGVyLnBhdXNlKCk7CiAgICAgIH0KICAgICAgcmV0dXJuOwogICAgfQoKCiAgICB2YXIgaXNFczYgPSB0aGlzLmxvYWRGbGFnc1snbW9kdWxlJ10gPT0gZ29vZy5Nb2R1bGVUeXBlLkVTNjsKCiAgICBpZiAoIXRoaXMubGF6eUZldGNoXykgewogICAgICBmZXRjaCgpOwogICAgfQoKICAgIGZ1bmN0aW9uIGxvYWQoKSB7CiAgICAgIGlmIChkZXAubGF6eUZldGNoXykgewogICAgICAgIGZldGNoKCk7CiAgICAgIH0KCiAgICAgIGlmICghZGVwLmNvbnRlbnRzXykgewogICAgICAgIC8vIGxvYWRGaWxlU3luY18gb3IgdHJhbnNmb3JtIGFyZSByZXNwb25zaWJsZS4gQXNzdW1lIHRoZXkgbG9nZ2VkIGFuCiAgICAgICAgLy8gZXJyb3IuCiAgICAgICAgcmV0dXJuOwogICAgICB9CgogICAgICBpZiAoaXNFczYpIHsKICAgICAgICBjb250cm9sbGVyLnNldE1vZHVsZVN0YXRlKGdvb2cuTW9kdWxlVHlwZS5FUzYpOwogICAgICB9CgogICAgICB2YXIgbmFtZXNwYWNlOwoKICAgICAgdHJ5IHsKICAgICAgICB2YXIgY29udGVudHMgPSBkZXAuY29udGVudHNfOwogICAgICAgIGRlcC5jb250ZW50c18gPSBudWxsOwogICAgICAgIGdvb2cuZ2xvYmFsRXZhbChjb250ZW50cyk7CiAgICAgICAgaWYgKGlzRXM2KSB7CiAgICAgICAgICBuYW1lc3BhY2UgPSBnb29nLm1vZHVsZUxvYWRlclN0YXRlXy5tb2R1bGVOYW1lOwogICAgICAgIH0KICAgICAgfSBmaW5hbGx5IHsKICAgICAgICBpZiAoaXNFczYpIHsKICAgICAgICAgIGNvbnRyb2xsZXIuY2xlYXJNb2R1bGVTdGF0ZSgpOwogICAgICAgIH0KICAgICAgfQoKICAgICAgaWYgKGlzRXM2KSB7CiAgICAgICAgLy8gRHVlIHRvIGNpcmN1bGFyIGRlcGVuZGVuY2llcyB0aGlzIG1heSBub3QgYmUgYXZhaWxhYmxlIGZvciByZXF1aXJlCiAgICAgICAgLy8gcmlnaHQgbm93LgogICAgICAgIGdvb2cuZ2xvYmFsWyckanNjb21wJ11bJ3JlcXVpcmUnXVsnZW5zdXJlJ10oCiAgICAgICAgICAgIFtkZXAuZ2V0UGF0aE5hbWUoKV0sIGZ1bmN0aW9uKCkgewogICAgICAgICAgICAgIGNvbnRyb2xsZXIucmVnaXN0ZXJFczZNb2R1bGVFeHBvcnRzKAogICAgICAgICAgICAgICAgICBkZXAucGF0aCwKICAgICAgICAgICAgICAgICAgZ29vZy5nbG9iYWxbJyRqc2NvbXAnXVsncmVxdWlyZSddKGRlcC5nZXRQYXRoTmFtZSgpKSwKICAgICAgICAgICAgICAgICAgbmFtZXNwYWNlKTsKICAgICAgICAgICAgfSk7CiAgICAgIH0KCiAgICAgIGNvbnRyb2xsZXIubG9hZGVkKCk7CiAgICB9CgogICAgLy8gRG8gbm90IGZldGNoIG5vdzsgaW4gRmlyZUZveCA0NyB0aGUgc3luY2hyb25vdXMgWEhSIGRvZXNuJ3QgYmxvY2sgYWxsCiAgICAvLyBldmVudHMuIElmIHdlIGZldGNoZWQgbm93IGFuZCB0aGVuIGRvY3VtZW50LndyaXRlJ2QgdGhlIGNvbnRlbnRzIHRoZQogICAgLy8gZG9jdW1lbnQud3JpdGUgd291bGQgYmUgYW4gZXZhbCBhbmQgd291bGQgZXhlY3V0ZSB0b28gc29vbiEgSW5zdGVhZCB3cml0ZQogICAgLy8gYSBzY3JpcHQgdGFnIHRvIGZldGNoIGFuZCBldmFsIHN5bmNocm9ub3VzbHkgYXQgdGhlIGNvcnJlY3QgdGltZS4KICAgIGZ1bmN0aW9uIGZldGNoSW5Pd25TY3JpcHRUaGVuTG9hZCgpIHsKICAgICAgLyoqIEB0eXBlIHshSFRNTERvY3VtZW50fSAqLwogICAgICB2YXIgZG9jID0gZ29vZy5nbG9iYWwuZG9jdW1lbnQ7CgogICAgICB2YXIga2V5ID0gZ29vZy5EZXBlbmRlbmN5LnJlZ2lzdGVyQ2FsbGJhY2tfKGZ1bmN0aW9uKCkgewogICAgICAgIGdvb2cuRGVwZW5kZW5jeS51bnJlZ2lzdGVyQ2FsbGJhY2tfKGtleSk7CiAgICAgICAgbG9hZCgpOwogICAgICB9KTsKCiAgICAgIHZhciBzY3JpcHQgPSAnPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiPicgKwogICAgICAgICAgZ29vZy5wcm90ZWN0U2NyaXB0VGFnXygnZ29vZy5EZXBlbmRlbmN5LmNhbGxiYWNrXygiJyArIGtleSArICciKTsnKSArCiAgICAgICAgICAnPC8nICsKICAgICAgICAgICdzY3JpcHQ+JzsKICAgICAgZG9jLndyaXRlKAogICAgICAgICAgZ29vZy5UUlVTVEVEX1RZUEVTX1BPTElDWV8gPwogICAgICAgICAgICAgIGdvb2cuVFJVU1RFRF9UWVBFU19QT0xJQ1lfLmNyZWF0ZUhUTUwoc2NyaXB0KSA6CiAgICAgICAgICAgICAgc2NyaXB0KTsKICAgIH0KCiAgICAvLyBJZiBvbmUgdGhpbmcgaXMgcGVuZGluZyBpdCBpcyB0aGlzLgogICAgdmFyIGFueXRoaW5nRWxzZVBlbmRpbmcgPSBjb250cm9sbGVyLnBlbmRpbmcoKS5sZW5ndGggPiAxOwoKICAgIC8vIElmIGFueXRoaW5nIGVsc2UgaXMgbG9hZGluZyB3ZSBuZWVkIHRvIGxhenkgbG9hZCBkdWUgdG8gYnVncyBpbiBvbGQgSUUuCiAgICAvLyBTcGVjaWZpY2FsbHkgc2NyaXB0IHRhZ3Mgd2l0aCBzcmMgYW5kIHNjcmlwdCB0YWdzIHdpdGggY29udGVudHMgY291bGQKICAgIC8vIGV4ZWN1dGUgb3V0IG9mIG9yZGVyIGlmIGRvY3VtZW50LndyaXRlIGlzIHVzZWQsIHNvIHdlIGNhbm5vdCB1c2UKICAgIC8vIGRvY3VtZW50LndyaXRlLiBEbyBub3QgcGF1c2UgaGVyZTsgaXQgYnJlYWtzIG9sZCBJRSBhcyB3ZWxsLgogICAgdmFyIHVzZU9sZEllV29ya0Fyb3VuZCA9CiAgICAgICAgYW55dGhpbmdFbHNlUGVuZGluZyAmJiBnb29nLkRlYnVnTG9hZGVyXy5JU19PTERfSUVfOwoKICAgIC8vIEFkZGl0aW9uYWxseSBpZiB3ZSBhcmUgbWVhbnQgdG8gZGVmZXIgc2NyaXB0cyBidXQgdGhlIHBhZ2UgaXMgc3RpbGwKICAgIC8vIGxvYWRpbmcgKGUuZy4gYW4gRVM2IG1vZHVsZSBpcyBsb2FkaW5nKSB0aGVuIGFsc28gZGVmZXIuIE9yIGlmIHdlIGFyZQogICAgLy8gbWVhbnQgdG8gZGVmZXIgYW5kIGFueXRoaW5nIGVsc2UgaXMgcGVuZGluZyB0aGVuIGRlZmVyICh0aG9zZSBtYXkgYmUKICAgIC8vIHNjcmlwdHMgdGhhdCBkaWQgbm90IG5lZWQgdHJhbnNmb3JtYXRpb24gYW5kIGFyZSBqdXN0IHNjcmlwdCB0YWdzIHdpdGgKICAgIC8vIGRlZmVyIHNldCB0byB0cnVlLCBhbmQgd2UgbmVlZCB0byBldmFsdWF0ZSBhZnRlciB0aGF0IGRlZmVycmVkIHNjcmlwdCkuCiAgICB2YXIgbmVlZHNBc3luY0xvYWRpbmcgPSBnb29nLkRlcGVuZGVuY3kuZGVmZXJfICYmCiAgICAgICAgKGFueXRoaW5nRWxzZVBlbmRpbmcgfHwgZ29vZy5pc0RvY3VtZW50TG9hZGluZ18oKSk7CgogICAgaWYgKHVzZU9sZEllV29ya0Fyb3VuZCB8fCBuZWVkc0FzeW5jTG9hZGluZykgewogICAgICAvLyBOb3RlIHRoYXQgd2Ugb25seSBkZWZlciB3aGVuIHdlIGhhdmUgdG8gcmF0aGVyIHRoYW4gMTAwJSBvZiB0aGUgdGltZS4KICAgICAgLy8gQWx3YXlzIGRlZmVyaW5nIHdvdWxkIHdvcmssIGJ1dCB0aGVuIGluIHRoZW9yeSB0aGUgb3JkZXIgb2YKICAgICAgLy8gZ29vZy5yZXF1aXJlIGNhbGxzIHdvdWxkIHRoZW4gbWF0dGVyLiBXZSB3YW50IHRvIGVuZm9yY2UgdGhhdCBtb3N0IG9mCiAgICAgIC8vIHRoZSB0aW1lIHRoZSBvcmRlciBvZiB0aGUgcmVxdWlyZSBjYWxscyBkb2VzIG5vdCBtYXR0ZXIuCiAgICAgIGNvbnRyb2xsZXIuZGVmZXIoZnVuY3Rpb24oKSB7CiAgICAgICAgbG9hZCgpOwogICAgICB9KTsKICAgICAgcmV0dXJuOwogICAgfQogICAgLy8gVE9ETyhqb2hucGxhaXN0ZWQpOiBFeHRlcm5zIGFyZSBtaXNzaW5nIG9ucmVhZHlzdGF0ZWNoYW5nZSBmb3IKICAgIC8vIEhUTUxEb2N1bWVudC4KICAgIC8qKiBAdHlwZSB7P30gKi8KICAgIHZhciBkb2MgPSBnb29nLmdsb2JhbC5kb2N1bWVudDsKCiAgICB2YXIgaXNJbnRlcm5ldEV4cGxvcmVyID0KICAgICAgICBnb29nLmluSHRtbERvY3VtZW50XygpICYmICdBY3RpdmVYT2JqZWN0JyBpbiBnb29nLmdsb2JhbDsKCiAgICAvLyBEb24ndCBkZWxheSBpbiBhbnkgdmVyc2lvbiBvZiBJRS4gVGhlcmUncyBidWcgYXJvdW5kIHRoaXMgdGhhdCB3aWxsCiAgICAvLyBjYXVzZSBvdXQgb2Ygb3JkZXIgc2NyaXB0IGV4ZWN1dGlvbi4gVGhpcyBtZWFucyB0aGF0IG9uIG9sZGVyIElFIEVTNgogICAgLy8gbW9kdWxlcyB3aWxsIGxvYWQgdG9vIGVhcmx5ICh3aGlsZSB0aGUgZG9jdW1lbnQgaXMgc3RpbGwgbG9hZGluZyArIHRoZQogICAgLy8gZG9tIGlzIG5vdCBhdmFpbGFibGUpLiBUaGUgb3RoZXIgb3B0aW9uIGlzIHRvIGxvYWQgdG9vIGxhdGUgKHdoZW4gdGhlCiAgICAvLyBkb2N1bWVudCBpcyBjb21wbGV0ZSBhbmQgdGhlIG9ubG9hZCBldmVuIHdpbGwgbmV2ZXIgZmlyZSkuIFRoaXMgc2VlbXMKICAgIC8vIHRvIGJlIHRoZSBsZXNzZXIgb2YgdHdvIGV2aWxzIGFzIHNjcmlwdHMgYWxyZWFkeSBhY3QgbGlrZSB0aGUgZm9ybWVyLgogICAgaWYgKGlzRXM2ICYmIGdvb2cuaW5IdG1sRG9jdW1lbnRfKCkgJiYgZ29vZy5pc0RvY3VtZW50TG9hZGluZ18oKSAmJgogICAgICAgICFpc0ludGVybmV0RXhwbG9yZXIpIHsKICAgICAgZ29vZy5EZXBlbmRlbmN5LmRlZmVyXyA9IHRydWU7CiAgICAgIC8vIFRyYW5zcGlsZWQgRVM2IG1vZHVsZXMgc3RpbGwgbmVlZCB0byBsb2FkIGxpa2UgcmVndWxhciBFUzYgbW9kdWxlcywKICAgICAgLy8gYWthIG9ubHkgYWZ0ZXIgdGhlIGRvY3VtZW50IGlzIGludGVyYWN0aXZlLgogICAgICBjb250cm9sbGVyLnBhdXNlKCk7CiAgICAgIHZhciBvbGRDYWxsYmFjayA9IGRvYy5vbnJlYWR5c3RhdGVjaGFuZ2U7CiAgICAgIGRvYy5vbnJlYWR5c3RhdGVjaGFuZ2UgPSBmdW5jdGlvbigpIHsKICAgICAgICBpZiAoZG9jLnJlYWR5U3RhdGUgPT0gJ2ludGVyYWN0aXZlJykgewogICAgICAgICAgZG9jLm9ucmVhZHlzdGF0ZWNoYW5nZSA9IG9sZENhbGxiYWNrOwogICAgICAgICAgbG9hZCgpOwogICAgICAgICAgY29udHJvbGxlci5yZXN1bWUoKTsKICAgICAgICB9CiAgICAgICAgaWYgKGdvb2cuaXNGdW5jdGlvbihvbGRDYWxsYmFjaykpIHsKICAgICAgICAgIG9sZENhbGxiYWNrLmFwcGx5KHVuZGVmaW5lZCwgYXJndW1lbnRzKTsKICAgICAgICB9CiAgICAgIH07CiAgICB9IGVsc2UgewogICAgICAvLyBBbHdheXMgZXZhbCBvbiBvbGQgSUUuCiAgICAgIGlmIChnb29nLkRlYnVnTG9hZGVyXy5JU19PTERfSUVfIHx8ICFnb29nLmluSHRtbERvY3VtZW50XygpIHx8CiAgICAgICAgICAhZ29vZy5pc0RvY3VtZW50TG9hZGluZ18oKSkgewogICAgICAgIGxvYWQoKTsKICAgICAgfSBlbHNlIHsKICAgICAgICBmZXRjaEluT3duU2NyaXB0VGhlbkxvYWQoKTsKICAgICAgfQogICAgfQogIH07CgoKICAvKioKICAgKiBAcGFyYW0ge3N0cmluZ30gY29udGVudHMKICAgKiBAcmV0dXJuIHtzdHJpbmd9CiAgICogQGFic3RyYWN0CiAgICovCiAgZ29vZy5UcmFuc2Zvcm1lZERlcGVuZGVuY3kucHJvdG90eXBlLnRyYW5zZm9ybSA9IGZ1bmN0aW9uKGNvbnRlbnRzKSB7fTsKCgogIC8qKgogICAqIEFueSBub24tZ29vZy5tb2R1bGUgZGVwZW5kZW5jeSB3aGljaCBuZWVkcyB0byBiZSB0cmFuc3BpbGVkIGJlZm9yZSBldmFsLgogICAqCiAgICogQHBhcmFtIHtzdHJpbmd9IHBhdGggQWJzb2x1dGUgcGF0aCBvZiB0aGlzIHNjcmlwdC4KICAgKiBAcGFyYW0ge3N0cmluZ30gcmVsYXRpdmVQYXRoIFBhdGggb2YgdGhpcyBzY3JpcHQgcmVsYXRpdmUgdG8gZ29vZy5iYXNlUGF0aC4KICAgKiBAcGFyYW0geyFBcnJheTxzdHJpbmc+fSBwcm92aWRlcyBnb29nLnByb3ZpZGVkIG9yIGdvb2cubW9kdWxlIHN5bWJvbHMKICAgKiAgICAgaW4gdGhpcyBmaWxlLgogICAqIEBwYXJhbSB7IUFycmF5PHN0cmluZz59IHJlcXVpcmVzIGdvb2cgc3ltYm9scyBvciByZWxhdGl2ZSBwYXRocyB0byBDbG9zdXJlCiAgICogICAgIHRoaXMgZGVwZW5kcyBvbi4KICAgKiBAcGFyYW0geyFPYmplY3Q8c3RyaW5nLCBzdHJpbmc+fSBsb2FkRmxhZ3MKICAgKiBAcGFyYW0geyFnb29nLlRyYW5zcGlsZXJ9IHRyYW5zcGlsZXIKICAgKiBAc3RydWN0IEBjb25zdHJ1Y3RvcgogICAqIEBleHRlbmRzIHtnb29nLlRyYW5zZm9ybWVkRGVwZW5kZW5jeX0KICAgKi8KICBnb29nLlRyYW5zcGlsZWREZXBlbmRlbmN5ID0gZnVuY3Rpb24oCiAgICAgIHBhdGgsIHJlbGF0aXZlUGF0aCwgcHJvdmlkZXMsIHJlcXVpcmVzLCBsb2FkRmxhZ3MsIHRyYW5zcGlsZXIpIHsKICAgIGdvb2cuVHJhbnNwaWxlZERlcGVuZGVuY3kuYmFzZSgKICAgICAgICB0aGlzLCAnY29uc3RydWN0b3InLCBwYXRoLCByZWxhdGl2ZVBhdGgsIHByb3ZpZGVzLCByZXF1aXJlcywgbG9hZEZsYWdzKTsKICAgIC8qKiBAcHJvdGVjdGVkIEBjb25zdCovCiAgICB0aGlzLnRyYW5zcGlsZXIgPSB0cmFuc3BpbGVyOwogIH07CiAgZ29vZy5pbmhlcml0cyhnb29nLlRyYW5zcGlsZWREZXBlbmRlbmN5LCBnb29nLlRyYW5zZm9ybWVkRGVwZW5kZW5jeSk7CgoKICAvKiogQG92ZXJyaWRlICovCiAgZ29vZy5UcmFuc3BpbGVkRGVwZW5kZW5jeS5wcm90b3R5cGUudHJhbnNmb3JtID0gZnVuY3Rpb24oY29udGVudHMpIHsKICAgIC8vIFRyYW5zcGlsZSB3aXRoIHRoZSBwYXRobmFtZSBzbyB0aGF0IEVTNiBtb2R1bGVzIGFyZSBkb21haW4gYWdub3N0aWMuCiAgICByZXR1cm4gdGhpcy50cmFuc3BpbGVyLnRyYW5zcGlsZShjb250ZW50cywgdGhpcy5nZXRQYXRoTmFtZSgpKTsKICB9OwoKCiAgLyoqCiAgICogQW4gRVM2IG1vZHVsZSBkZXBlbmRlbmN5IHRoYXQgd2FzIHRyYW5zcGlsZWQgdG8gYSBqc2NvbXAgbW9kdWxlIG91dHNpZGUKICAgKiBvZiB0aGUgZGVidWcgbG9hZGVyLCBlLmcuIHNlcnZlciBzaWRlLgogICAqCiAgICogQHBhcmFtIHtzdHJpbmd9IHBhdGggQWJzb2x1dGUgcGF0aCBvZiB0aGlzIHNjcmlwdC4KICAgKiBAcGFyYW0ge3N0cmluZ30gcmVsYXRpdmVQYXRoIFBhdGggb2YgdGhpcyBzY3JpcHQgcmVsYXRpdmUgdG8gZ29vZy5iYXNlUGF0aC4KICAgKiBAcGFyYW0geyFBcnJheTxzdHJpbmc+fSBwcm92aWRlcyBnb29nLnByb3ZpZGVkIG9yIGdvb2cubW9kdWxlIHN5bWJvbHMKICAgKiAgICAgaW4gdGhpcyBmaWxlLgogICAqIEBwYXJhbSB7IUFycmF5PHN0cmluZz59IHJlcXVpcmVzIGdvb2cgc3ltYm9scyBvciByZWxhdGl2ZSBwYXRocyB0byBDbG9zdXJlCiAgICogICAgIHRoaXMgZGVwZW5kcyBvbi4KICAgKiBAcGFyYW0geyFPYmplY3Q8c3RyaW5nLCBzdHJpbmc+fSBsb2FkRmxhZ3MKICAgKiBAc3RydWN0IEBjb25zdHJ1Y3RvcgogICAqIEBleHRlbmRzIHtnb29nLlRyYW5zZm9ybWVkRGVwZW5kZW5jeX0KICAgKi8KICBnb29nLlByZVRyYW5zcGlsZWRFczZNb2R1bGVEZXBlbmRlbmN5ID0gZnVuY3Rpb24oCiAgICAgIHBhdGgsIHJlbGF0aXZlUGF0aCwgcHJvdmlkZXMsIHJlcXVpcmVzLCBsb2FkRmxhZ3MpIHsKICAgIGdvb2cuUHJlVHJhbnNwaWxlZEVzNk1vZHVsZURlcGVuZGVuY3kuYmFzZSgKICAgICAgICB0aGlzLCAnY29uc3RydWN0b3InLCBwYXRoLCByZWxhdGl2ZVBhdGgsIHByb3ZpZGVzLCByZXF1aXJlcywgbG9hZEZsYWdzKTsKICB9OwogIGdvb2cuaW5oZXJpdHMoCiAgICAgIGdvb2cuUHJlVHJhbnNwaWxlZEVzNk1vZHVsZURlcGVuZGVuY3ksIGdvb2cuVHJhbnNmb3JtZWREZXBlbmRlbmN5KTsKCgogIC8qKiBAb3ZlcnJpZGUgKi8KICBnb29nLlByZVRyYW5zcGlsZWRFczZNb2R1bGVEZXBlbmRlbmN5LnByb3RvdHlwZS50cmFuc2Zvcm0gPSBmdW5jdGlvbigKICAgICAgY29udGVudHMpIHsKICAgIHJldHVybiBjb250ZW50czsKICB9OwoKCiAgLyoqCiAgICogQSBnb29nLm1vZHVsZSwgdHJhbnNwaWxlZCBvciBub3QuIFdpbGwgYWx3YXlzIHBlcmZvcm0gc29tZSBtaW5pbWFsCiAgICogdHJhbnNmb3JtYXRpb24gZXZlbiB3aGVuIG5vdCB0cmFuc3BpbGVkIHRvIHdyYXAgaW4gYSBnb29nLmxvYWRNb2R1bGUKICAgKiBzdGF0ZW1lbnQuCiAgICoKICAgKiBAcGFyYW0ge3N0cmluZ30gcGF0aCBBYnNvbHV0ZSBwYXRoIG9mIHRoaXMgc2NyaXB0LgogICAqIEBwYXJhbSB7c3RyaW5nfSByZWxhdGl2ZVBhdGggUGF0aCBvZiB0aGlzIHNjcmlwdCByZWxhdGl2ZSB0byBnb29nLmJhc2VQYXRoLgogICAqIEBwYXJhbSB7IUFycmF5PHN0cmluZz59IHByb3ZpZGVzIGdvb2cucHJvdmlkZWQgb3IgZ29vZy5tb2R1bGUgc3ltYm9scwogICAqICAgICBpbiB0aGlzIGZpbGUuCiAgICogQHBhcmFtIHshQXJyYXk8c3RyaW5nPn0gcmVxdWlyZXMgZ29vZyBzeW1ib2xzIG9yIHJlbGF0aXZlIHBhdGhzIHRvIENsb3N1cmUKICAgKiAgICAgdGhpcyBkZXBlbmRzIG9uLgogICAqIEBwYXJhbSB7IU9iamVjdDxzdHJpbmcsIHN0cmluZz59IGxvYWRGbGFncwogICAqIEBwYXJhbSB7Ym9vbGVhbn0gbmVlZHNUcmFuc3BpbGUKICAgKiBAcGFyYW0geyFnb29nLlRyYW5zcGlsZXJ9IHRyYW5zcGlsZXIKICAgKiBAc3RydWN0IEBjb25zdHJ1Y3RvcgogICAqIEBleHRlbmRzIHtnb29nLlRyYW5zZm9ybWVkRGVwZW5kZW5jeX0KICAgKi8KICBnb29nLkdvb2dNb2R1bGVEZXBlbmRlbmN5ID0gZnVuY3Rpb24oCiAgICAgIHBhdGgsIHJlbGF0aXZlUGF0aCwgcHJvdmlkZXMsIHJlcXVpcmVzLCBsb2FkRmxhZ3MsIG5lZWRzVHJhbnNwaWxlLAogICAgICB0cmFuc3BpbGVyKSB7CiAgICBnb29nLkdvb2dNb2R1bGVEZXBlbmRlbmN5LmJhc2UoCiAgICAgICAgdGhpcywgJ2NvbnN0cnVjdG9yJywgcGF0aCwgcmVsYXRpdmVQYXRoLCBwcm92aWRlcywgcmVxdWlyZXMsIGxvYWRGbGFncyk7CiAgICAvKiogQHByaXZhdGUgQGNvbnN0ICovCiAgICB0aGlzLm5lZWRzVHJhbnNwaWxlXyA9IG5lZWRzVHJhbnNwaWxlOwogICAgLyoqIEBwcml2YXRlIEBjb25zdCAqLwogICAgdGhpcy50cmFuc3BpbGVyXyA9IHRyYW5zcGlsZXI7CiAgfTsKICBnb29nLmluaGVyaXRzKGdvb2cuR29vZ01vZHVsZURlcGVuZGVuY3ksIGdvb2cuVHJhbnNmb3JtZWREZXBlbmRlbmN5KTsKCgogIC8qKiBAb3ZlcnJpZGUgKi8KICBnb29nLkdvb2dNb2R1bGVEZXBlbmRlbmN5LnByb3RvdHlwZS50cmFuc2Zvcm0gPSBmdW5jdGlvbihjb250ZW50cykgewogICAgaWYgKHRoaXMubmVlZHNUcmFuc3BpbGVfKSB7CiAgICAgIGNvbnRlbnRzID0gdGhpcy50cmFuc3BpbGVyXy50cmFuc3BpbGUoY29udGVudHMsIHRoaXMuZ2V0UGF0aE5hbWUoKSk7CiAgICB9CgogICAgaWYgKCFnb29nLkxPQURfTU9EVUxFX1VTSU5HX0VWQUwgfHwgZ29vZy5nbG9iYWwuSlNPTiA9PT0gdW5kZWZpbmVkKSB7CiAgICAgIHJldHVybiAnJyArCiAgICAgICAgICAnZ29vZy5sb2FkTW9kdWxlKGZ1bmN0aW9uKGV4cG9ydHMpIHsnICsKICAgICAgICAgICcidXNlIHN0cmljdCI7JyArIGNvbnRlbnRzICsKICAgICAgICAgICdcbicgKyAgLy8gdGVybWluYXRlIGFueSB0cmFpbGluZyBzaW5nbGUgbGluZSBjb21tZW50LgogICAgICAgICAgJztyZXR1cm4gZXhwb3J0cycgKwogICAgICAgICAgJ30pOycgKwogICAgICAgICAgJ1xuLy8jIHNvdXJjZVVSTD0nICsgdGhpcy5wYXRoICsgJ1xuJzsKICAgIH0gZWxzZSB7CiAgICAgIHJldHVybiAnJyArCiAgICAgICAgICAnZ29vZy5sb2FkTW9kdWxlKCcgKwogICAgICAgICAgZ29vZy5nbG9iYWwuSlNPTi5zdHJpbmdpZnkoCiAgICAgICAgICAgICAgY29udGVudHMgKyAnXG4vLyMgc291cmNlVVJMPScgKyB0aGlzLnBhdGggKyAnXG4nKSArCiAgICAgICAgICAnKTsnOwogICAgfQogIH07CgoKICAvKioKICAgKiBXaGV0aGVyIHRoZSBicm93c2VyIGlzIElFOSBvciBlYXJsaWVyLCB3aGljaCBuZWVkcyBzcGVjaWFsIGhhbmRsaW5nCiAgICogZm9yIGRlZmVycmVkIG1vZHVsZXMuCiAgICogQGNvbnN0IEBwcml2YXRlIHtib29sZWFufQogICAqLwogIGdvb2cuRGVidWdMb2FkZXJfLklTX09MRF9JRV8gPSAhISgKICAgICAgIWdvb2cuZ2xvYmFsLmF0b2IgJiYgZ29vZy5nbG9iYWwuZG9jdW1lbnQgJiYgZ29vZy5nbG9iYWwuZG9jdW1lbnRbJ2FsbCddKTsKCgogIC8qKgogICAqIEBwYXJhbSB7c3RyaW5nfSByZWxQYXRoCiAgICogQHBhcmFtIHshQXJyYXk8c3RyaW5nPnx1bmRlZmluZWR9IHByb3ZpZGVzCiAgICogQHBhcmFtIHshQXJyYXk8c3RyaW5nPn0gcmVxdWlyZXMKICAgKiBAcGFyYW0ge2Jvb2xlYW58IU9iamVjdDxzdHJpbmc+PX0gb3B0X2xvYWRGbGFncwogICAqIEBzZWUgZ29vZy5hZGREZXBlbmRlbmN5CiAgICovCiAgZ29vZy5EZWJ1Z0xvYWRlcl8ucHJvdG90eXBlLmFkZERlcGVuZGVuY3kgPSBmdW5jdGlvbigKICAgICAgcmVsUGF0aCwgcHJvdmlkZXMsIHJlcXVpcmVzLCBvcHRfbG9hZEZsYWdzKSB7CiAgICBwcm92aWRlcyA9IHByb3ZpZGVzIHx8IFtdOwogICAgcmVsUGF0aCA9IHJlbFBhdGgucmVwbGFjZSgvXFwvZywgJy8nKTsKICAgIHZhciBwYXRoID0gZ29vZy5ub3JtYWxpemVQYXRoXyhnb29nLmJhc2VQYXRoICsgcmVsUGF0aCk7CiAgICBpZiAoIW9wdF9sb2FkRmxhZ3MgfHwgdHlwZW9mIG9wdF9sb2FkRmxhZ3MgPT09ICdib29sZWFuJykgewogICAgICBvcHRfbG9hZEZsYWdzID0gb3B0X2xvYWRGbGFncyA/IHsnbW9kdWxlJzogZ29vZy5Nb2R1bGVUeXBlLkdPT0d9IDoge307CiAgICB9CiAgICB2YXIgZGVwID0gdGhpcy5mYWN0b3J5Xy5jcmVhdGVEZXBlbmRlbmN5KAogICAgICAgIHBhdGgsIHJlbFBhdGgsIHByb3ZpZGVzLCByZXF1aXJlcywgb3B0X2xvYWRGbGFncywKICAgICAgICBnb29nLnRyYW5zcGlsZXJfLm5lZWRzVHJhbnNwaWxlKAogICAgICAgICAgICBvcHRfbG9hZEZsYWdzWydsYW5nJ10gfHwgJ2VzMycsIG9wdF9sb2FkRmxhZ3NbJ21vZHVsZSddKSk7CiAgICB0aGlzLmRlcGVuZGVuY2llc19bcGF0aF0gPSBkZXA7CiAgICBmb3IgKHZhciBpID0gMDsgaSA8IHByb3ZpZGVzLmxlbmd0aDsgaSsrKSB7CiAgICAgIHRoaXMuaWRUb1BhdGhfW3Byb3ZpZGVzW2ldXSA9IHBhdGg7CiAgICB9CiAgICB0aGlzLmlkVG9QYXRoX1tyZWxQYXRoXSA9IHBhdGg7CiAgfTsKCgogIC8qKgogICAqIENyZWF0ZXMgZ29vZy5EZXBlbmRlbmN5IGluc3RhbmNlcyBmb3IgdGhlIGRlYnVnIGxvYWRlciB0byBsb2FkLgogICAqCiAgICogU2hvdWxkIGJlIG92ZXJyaWRkZW4gdG8gaGF2ZSB0aGUgZGVidWcgbG9hZGVyIHVzZSBjdXN0b20gc3ViY2xhc3NlcyBvZgogICAqIGdvb2cuRGVwZW5kZW5jeS4KICAgKgogICAqIEBwYXJhbSB7IWdvb2cuVHJhbnNwaWxlcn0gdHJhbnNwaWxlcgogICAqIEBzdHJ1Y3QgQGNvbnN0cnVjdG9yCiAgICovCiAgZ29vZy5EZXBlbmRlbmN5RmFjdG9yeSA9IGZ1bmN0aW9uKHRyYW5zcGlsZXIpIHsKICAgIC8qKiBAcHJvdGVjdGVkIEBjb25zdCAqLwogICAgdGhpcy50cmFuc3BpbGVyID0gdHJhbnNwaWxlcjsKICB9OwoKCiAgLyoqCiAgICogQHBhcmFtIHtzdHJpbmd9IHBhdGggQWJzb2x1dGUgcGF0aCBvZiB0aGUgZmlsZS4KICAgKiBAcGFyYW0ge3N0cmluZ30gcmVsYXRpdmVQYXRoIFBhdGggcmVsYXRpdmUgdG8gY2xvc3VyZeKAmXMgYmFzZS5qcy4KICAgKiBAcGFyYW0geyFBcnJheTxzdHJpbmc+fSBwcm92aWRlcyBBcnJheSBvZiBwcm92aWRlZCBnb29nLnByb3ZpZGUvbW9kdWxlIGlkcy4KICAgKiBAcGFyYW0geyFBcnJheTxzdHJpbmc+fSByZXF1aXJlcyBBcnJheSBvZiByZXF1aXJlZCBnb29nLnByb3ZpZGUvbW9kdWxlIC8KICAgKiAgICAgcmVsYXRpdmUgRVM2IG1vZHVsZSBwYXRocy4KICAgKiBAcGFyYW0geyFPYmplY3Q8c3RyaW5nLCBzdHJpbmc+fSBsb2FkRmxhZ3MKICAgKiBAcGFyYW0ge2Jvb2xlYW59IG5lZWRzVHJhbnNwaWxlIFRydWUgaWYgdGhlIGZpbGUgbmVlZHMgdG8gYmUgdHJhbnNwaWxlZAogICAqICAgICBwZXIgdGhlIGdvb2cuVHJhbnNwaWxlci4KICAgKiBAcmV0dXJuIHshZ29vZy5EZXBlbmRlbmN5fQogICAqLwogIGdvb2cuRGVwZW5kZW5jeUZhY3RvcnkucHJvdG90eXBlLmNyZWF0ZURlcGVuZGVuY3kgPSBmdW5jdGlvbigKICAgICAgcGF0aCwgcmVsYXRpdmVQYXRoLCBwcm92aWRlcywgcmVxdWlyZXMsIGxvYWRGbGFncywgbmVlZHNUcmFuc3BpbGUpIHsKCiAgICBpZiAobG9hZEZsYWdzWydtb2R1bGUnXSA9PSBnb29nLk1vZHVsZVR5cGUuR09PRykgewogICAgICByZXR1cm4gbmV3IGdvb2cuR29vZ01vZHVsZURlcGVuZGVuY3koCiAgICAgICAgICBwYXRoLCByZWxhdGl2ZVBhdGgsIHByb3ZpZGVzLCByZXF1aXJlcywgbG9hZEZsYWdzLCBuZWVkc1RyYW5zcGlsZSwKICAgICAgICAgIHRoaXMudHJhbnNwaWxlcik7CiAgICB9IGVsc2UgaWYgKG5lZWRzVHJhbnNwaWxlKSB7CiAgICAgIHJldHVybiBuZXcgZ29vZy5UcmFuc3BpbGVkRGVwZW5kZW5jeSgKICAgICAgICAgIHBhdGgsIHJlbGF0aXZlUGF0aCwgcHJvdmlkZXMsIHJlcXVpcmVzLCBsb2FkRmxhZ3MsIHRoaXMudHJhbnNwaWxlcik7CiAgICB9IGVsc2UgewogICAgICBpZiAobG9hZEZsYWdzWydtb2R1bGUnXSA9PSBnb29nLk1vZHVsZVR5cGUuRVM2KSB7CiAgICAgICAgaWYgKGdvb2cuVFJBTlNQSUxFID09ICduZXZlcicgJiYgZ29vZy5BU1NVTUVfRVNfTU9EVUxFU19UUkFOU1BJTEVEKSB7CiAgICAgICAgICByZXR1cm4gbmV3IGdvb2cuUHJlVHJhbnNwaWxlZEVzNk1vZHVsZURlcGVuZGVuY3koCiAgICAgICAgICAgICAgcGF0aCwgcmVsYXRpdmVQYXRoLCBwcm92aWRlcywgcmVxdWlyZXMsIGxvYWRGbGFncyk7CiAgICAgICAgfSBlbHNlIHsKICAgICAgICAgIHJldHVybiBuZXcgZ29vZy5FczZNb2R1bGVEZXBlbmRlbmN5KAogICAgICAgICAgICAgIHBhdGgsIHJlbGF0aXZlUGF0aCwgcHJvdmlkZXMsIHJlcXVpcmVzLCBsb2FkRmxhZ3MpOwogICAgICAgIH0KICAgICAgfSBlbHNlIHsKICAgICAgICByZXR1cm4gbmV3IGdvb2cuRGVwZW5kZW5jeSgKICAgICAgICAgICAgcGF0aCwgcmVsYXRpdmVQYXRoLCBwcm92aWRlcywgcmVxdWlyZXMsIGxvYWRGbGFncyk7CiAgICAgIH0KICAgIH0KICB9OwoKCiAgLyoqIEBwcml2YXRlIEBjb25zdCAqLwogIGdvb2cuZGVidWdMb2FkZXJfID0gbmV3IGdvb2cuRGVidWdMb2FkZXJfKCk7CgoKICAvKioKICAgKiBMb2FkcyB0aGUgQ2xvc3VyZSBEZXBlbmRlbmN5IGZpbGUuCiAgICoKICAgKiBFeHBvc2VkIGEgcHVibGljIGZ1bmN0aW9uIHNvIENMT1NVUkVfTk9fREVQUyBjYW4gYmUgc2V0IHRvIGZhbHNlLCBiYXNlCiAgICogbG9hZGVkLCBzZXREZXBlbmRlbmN5RmFjdG9yeSBjYWxsZWQsIGFuZCB0aGVuIHRoaXMgY2FsbGVkLiBpLmUuIGFsbG93cwogICAqIGN1c3RvbSBsb2FkaW5nIG9mIHRoZSBkZXBzIGZpbGUuCiAgICovCiAgZ29vZy5sb2FkQ2xvc3VyZURlcHMgPSBmdW5jdGlvbigpIHsKICAgIGdvb2cuZGVidWdMb2FkZXJfLmxvYWRDbG9zdXJlRGVwcygpOwogIH07CgoKICAvKioKICAgKiBTZXRzIHRoZSBkZXBlbmRlbmN5IGZhY3RvcnksIHdoaWNoIGNhbiBiZSB1c2VkIHRvIGNyZWF0ZSBjdXN0b20KICAgKiBnb29nLkRlcGVuZGVuY3kgaW1wbGVtZW50YXRpb25zIHRvIGNvbnRyb2wgaG93IGRlcGVuZGVuY2llcyBhcmUgbG9hZGVkLgogICAqCiAgICogTm90ZTogaWYgeW91IHdpc2ggdG8gY2FsbCB0aGlzIGZ1bmN0aW9uIGFuZCBwcm92aWRlIHlvdXIgb3duIGltcGxlbW5ldGF0aW9uCiAgICogaXQgaXMgYSB3aXNlIGlkZWEgdG8gc2V0IENMT1NVUkVfTk9fREVQUyB0byB0cnVlLCBvdGhlcndpc2UgdGhlIGRlcGVuZGVuY3kKICAgKiBmaWxlIGFuZCBhbGwgb2YgaXRzIGdvb2cuYWRkRGVwZW5kZW5jeSBjYWxscyB3aWxsIHVzZSB0aGUgZGVmYXVsdCBmYWN0b3J5LgogICAqIFlvdSBjYW4gY2FsbCBnb29nLmxvYWRDbG9zdXJlRGVwcyB0byBsb2FkIHRoZSBDbG9zdXJlIGRlcGVuZGVuY3kgZmlsZQogICAqIGxhdGVyLCBhZnRlciB5b3VyIGZhY3RvcnkgaXMgaW5qZWN0ZWQuCiAgICoKICAgKiBAcGFyYW0geyFnb29nLkRlcGVuZGVuY3lGYWN0b3J5fSBmYWN0b3J5CiAgICovCiAgZ29vZy5zZXREZXBlbmRlbmN5RmFjdG9yeSA9IGZ1bmN0aW9uKGZhY3RvcnkpIHsKICAgIGdvb2cuZGVidWdMb2FkZXJfLnNldERlcGVuZGVuY3lGYWN0b3J5KGZhY3RvcnkpOwogIH07CgoKICBpZiAoIWdvb2cuZ2xvYmFsLkNMT1NVUkVfTk9fREVQUykgewogICAgZ29vZy5kZWJ1Z0xvYWRlcl8ubG9hZENsb3N1cmVEZXBzKCk7CiAgfQoKCiAgLyoqCiAgICogQm9vdHN0cmFwcyB0aGUgZ2l2ZW4gbmFtZXNwYWNlcyBhbmQgY2FsbHMgdGhlIGNhbGxiYWNrIG9uY2UgdGhleSBhcmUKICAgKiBhdmFpbGFibGUgZWl0aGVyIHZpYSBnb29nLnJlcXVpcmUuIFRoaXMgaXMgYSByZXBsYWNlbWVudCBmb3IgdXNpbmcKICAgKiBgZ29vZy5yZXF1aXJlYCB0byBib290c3RyYXAgQ2xvc3VyZSBKYXZhU2NyaXB0LiBQcmV2aW91c2x5IGEgYGdvb2cucmVxdWlyZWAKICAgKiBpbiBhbiBIVE1MIGZpbGUgd291bGQgZ3VhcmFudGVlIHRoYXQgdGhlIHJlcXVpcmUnZCBuYW1lc3BhY2Ugd2FzIGF2YWlsYWJsZQogICAqIGluIHRoZSBuZXh0IGltbWVkaWF0ZSBzY3JpcHQgdGFnLiBXaXRoIEVTNiBtb2R1bGVzIHRoaXMgbm8gbG9uZ2VyIGEKICAgKiBndWFyYW50ZWUuCiAgICoKICAgKiBAcGFyYW0geyFBcnJheTxzdHJpbmc+fSBuYW1lc3BhY2VzCiAgICogQHBhcmFtIHtmdW5jdGlvbigpOiA/fSBjYWxsYmFjayBGdW5jdGlvbiB0byBjYWxsIG9uY2UgYWxsIHRoZSBuYW1lc3BhY2VzCiAgICogICAgIGhhdmUgbG9hZGVkLiBBbHdheXMgY2FsbGVkIGFzeW5jaHJvbm91c2x5LgogICAqLwogIGdvb2cuYm9vdHN0cmFwID0gZnVuY3Rpb24obmFtZXNwYWNlcywgY2FsbGJhY2spIHsKICAgIGdvb2cuZGVidWdMb2FkZXJfLmJvb3RzdHJhcChuYW1lc3BhY2VzLCBjYWxsYmFjayk7CiAgfTsKfQoKCi8qKgogKiBAZGVmaW5lIHtzdHJpbmd9IFRydXN0ZWQgVHlwZXMgcG9saWN5IG5hbWUuIElmIG5vbi1lbXB0eSB0aGVuIENsb3N1cmUgd2lsbAogKiB1c2UgVHJ1c3RlZCBUeXBlcy4KICovCmdvb2cuVFJVU1RFRF9UWVBFU19QT0xJQ1lfTkFNRSA9CiAgICBnb29nLmRlZmluZSgnZ29vZy5UUlVTVEVEX1RZUEVTX1BPTElDWV9OQU1FJywgJycpOwoKCi8qKgogKiBSZXR1cm5zIHRoZSBwYXJhbWV0ZXIuCiAqIEBwYXJhbSB7c3RyaW5nfSBzCiAqIEByZXR1cm4ge3N0cmluZ30KICogQHByaXZhdGUKICovCmdvb2cuaWRlbnRpdHlfID0gZnVuY3Rpb24ocykgewogIHJldHVybiBzOwp9OwoKCi8qKgogKiBDcmVhdGVzIFRydXN0ZWQgVHlwZXMgcG9saWN5IGlmIFRydXN0ZWQgVHlwZXMgYXJlIHN1cHBvcnRlZCBieSB0aGUgYnJvd3Nlci4KICogVGhlIHBvbGljeSBqdXN0IGJsZXNzZXMgYW55IHN0cmluZyBhcyBhIFRydXN0ZWQgVHlwZS4gSXQgaXMgbm90IHZpc2liaWxpdHkKICogcmVzdHJpY3RlZCBiZWNhdXNlIGFueW9uZSBjYW4gYWxzbyBjYWxsIFRydXN0ZWRUeXBlcy5jcmVhdGVQb2xpY3kgZGlyZWN0bHkuCiAqIEhvd2V2ZXIsIHRoZSBhbGxvd2VkIG5hbWVzIHNob3VsZCBiZSByZXN0cmljdGVkIGJ5IGEgSFRUUCBoZWFkZXIgYW5kIHRoZQogKiByZWZlcmVuY2UgdG8gdGhlIGNyZWF0ZWQgcG9saWN5IHNob3VsZCBiZSB2aXNpYmlsaXR5IHJlc3RyaWN0ZWQuCiAqIEBwYXJhbSB7c3RyaW5nfSBuYW1lCiAqIEByZXR1cm4gez9UcnVzdGVkVHlwZVBvbGljeX0KICovCmdvb2cuY3JlYXRlVHJ1c3RlZFR5cGVzUG9saWN5ID0gZnVuY3Rpb24obmFtZSkgewogIHZhciBwb2xpY3kgPSBudWxsOwogIC8vIFRPRE8oa290byk6IFJlbW92ZSB3aW5kb3cuVHJ1c3RlZFR5cGVzIHZhcmlhbnQgd2hlbiB0aGUgbmV3ZXIgQVBJIHNoaXBzLgogIHZhciBwb2xpY3lGYWN0b3J5ID0gZ29vZy5nbG9iYWwudHJ1c3RlZFR5cGVzIHx8IGdvb2cuZ2xvYmFsLlRydXN0ZWRUeXBlczsKICBpZiAoIXBvbGljeUZhY3RvcnkgfHwgIXBvbGljeUZhY3RvcnkuY3JlYXRlUG9saWN5KSB7CiAgICByZXR1cm4gcG9saWN5OwogIH0KICAvLyBUcnVzdGVkVHlwZXMuY3JlYXRlUG9saWN5IHRocm93cyBpZiBjYWxsZWQgd2l0aCBhIG5hbWUgdGhhdCBpcyBhbHJlYWR5CiAgLy8gcmVnaXN0ZXJlZCwgZXZlbiBpbiByZXBvcnQtb25seSBtb2RlLiBVbnRpbCB0aGUgQVBJIGNoYW5nZXMsIGNhdGNoIHRoZQogIC8vIGVycm9yIG5vdCB0byBicmVhayB0aGUgYXBwbGljYXRpb25zIGZ1bmN0aW9uYWxseS4gSW4gc3VjaCBjYXNlLCB0aGUgY29kZQogIC8vIHdpbGwgZmFsbCBiYWNrIHRvIHVzaW5nIHJlZ3VsYXIgU2FmZSBUeXBlcy4KICAvLyBUT0RPKGtvdG8pOiBSZW1vdmUgY2F0Y2hpbmcgb25jZSBjcmVhdGVQb2xpY3kgQVBJIHN0b3BzIHRocm93aW5nLgogIHRyeSB7CiAgICBwb2xpY3kgPSBwb2xpY3lGYWN0b3J5LmNyZWF0ZVBvbGljeShuYW1lLCB7CiAgICAgIGNyZWF0ZUhUTUw6IGdvb2cuaWRlbnRpdHlfLAogICAgICBjcmVhdGVTY3JpcHQ6IGdvb2cuaWRlbnRpdHlfLAogICAgICBjcmVhdGVTY3JpcHRVUkw6IGdvb2cuaWRlbnRpdHlfLAogICAgICBjcmVhdGVVUkw6IGdvb2cuaWRlbnRpdHlfCiAgICB9KTsKICB9IGNhdGNoIChlKSB7CiAgICBnb29nLmxvZ1RvQ29uc29sZV8oZS5tZXNzYWdlKTsKICB9CiAgcmV0dXJuIHBvbGljeTsKfTsKCgovKiogQHByaXZhdGUgQGNvbnN0IHs/VHJ1c3RlZFR5cGVQb2xpY3l9ICovCmdvb2cuVFJVU1RFRF9UWVBFU19QT0xJQ1lfID0gZ29vZy5UUlVTVEVEX1RZUEVTX1BPTElDWV9OQU1FID8KICAgIGdvb2cuY3JlYXRlVHJ1c3RlZFR5cGVzUG9saWN5KGdvb2cuVFJVU1RFRF9UWVBFU19QT0xJQ1lfTkFNRSArICcjYmFzZScpIDoKICAgIG51bGw7CgovLyBDb3B5cmlnaHQgMjAxOSBUaGUgQ2xvc3VyZSBMaWJyYXJ5IEF1dGhvcnMuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCi8vCi8vIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSAiTGljZW5zZSIpOwovLyB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuCi8vIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdAovLwovLyAgICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMAovLwovLyBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlCi8vIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuICJBUy1JUyIgQkFTSVMsCi8vIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLgovLyBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kCi8vIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLgovLwovLyBUaGlzIGZpbGUgaGFzIGJlZW4gYXV0by1nZW5lcmF0ZWQgYnkgR2VuSnNEZXBzLCBwbGVhc2UgZG8gbm90IGVkaXQuCgovLyBEaXNhYmxlIENsYW5nIGZvcm1hdHRlciBmb3IgdGhpcyBmaWxlLgovLyBTZWUgaHR0cDovL2dvby5nbC9TZGl3WkgKLy8gY2xhbmctZm9ybWF0IG9mZgoKZ29vZy5hZGREZXBlbmRlbmN5KCdjb2xsZWN0aW9ucy9zZXRzLmpzJywgWydnb29nLmNvbGxlY3Rpb25zLnNldHMnXSwgWydnb29nLmxhYnMuY29sbGVjdGlvbnMuaXRlcmFibGVzJ10sIHsnbGFuZyc6ICdlczYnLCAnbW9kdWxlJzogJ2dvb2cnfSk7Cmdvb2cuYWRkRGVwZW5kZW5jeSgnY29sbGVjdGlvbnMvc2V0c190ZXN0LmpzJywgWydnb29nLmNvbGxlY3Rpb25zLnNldHNUZXN0J10sIFsnZ29vZy5jb2xsZWN0aW9ucy5zZXRzJywgJ2dvb2cudGVzdGluZy50ZXN0U3VpdGUnXSwgeydsYW5nJzogJ2VzNicsICdtb2R1bGUnOiAnZ29vZyd9KTsKZ29vZy5hZGREZXBlbmRlbmN5KCcuLi8uLi90aGlyZF9wYXJ0eS9jbG9zdXJlL2dvb2cvbW9jaGlraXQvYXN5bmMvZGVmZXJyZWQuanMnLCBbJ2dvb2cuYXN5bmMuRGVmZXJyZWQnLCAnZ29vZy5hc3luYy5EZWZlcnJlZC5BbHJlYWR5Q2FsbGVkRXJyb3InLCAnZ29vZy5hc3luYy5EZWZlcnJlZC5DYW5jZWxlZEVycm9yJ10sIFsnZ29vZy5Qcm9taXNlJywgJ2dvb2cuVGhlbmFibGUnLCAnZ29vZy5hcnJheScsICdnb29nLmFzc2VydHMnLCAnZ29vZy5kZWJ1Zy5FcnJvciddLCB7fSk7Cmdvb2cuYWRkRGVwZW5kZW5jeSgnLi4vLi4vdGhpcmRfcGFydHkvY2xvc3VyZS9nb29nL21vY2hpa2l0L2FzeW5jL2RlZmVycmVkX2FzeW5jX3Rlc3QuanMnLCBbJ2dvb2cuYXN5bmMuZGVmZXJyZWRBc3luY1Rlc3QnXSwgWydnb29nLmFzeW5jLkRlZmVycmVkJywgJ2dvb2cudGVzdGluZy50ZXN0U3VpdGUnXSwgeydsYW5nJzogJ2VzNicsICdtb2R1bGUnOiAnZ29vZyd9KTsKZ29vZy5hZGREZXBlbmRlbmN5KCcuLi8uLi90aGlyZF9wYXJ0eS9jbG9zdXJlL2dvb2cvbW9jaGlraXQvYXN5bmMvZGVmZXJyZWRfdGVzdC5qcycsIFsnZ29vZy5hc3luYy5kZWZlcnJlZFRlc3QnXSwgWydnb29nLlByb21pc2UnLCAnZ29vZy5UaGVuYWJsZScsICdnb29nLmFzeW5jLkRlZmVycmVkJywgJ2dvb2cudGVzdGluZy5Nb2NrQ2xvY2snLCAnZ29vZy50ZXN0aW5nLlByb3BlcnR5UmVwbGFjZXInLCAnZ29vZy50ZXN0aW5nLnJlY29yZEZ1bmN0aW9uJywgJ2dvb2cudGVzdGluZy50ZXN0U3VpdGUnXSwgeydsYW5nJzogJ2VzNicsICdtb2R1bGUnOiAnZ29vZyd9KTsKZ29vZy5hZGREZXBlbmRlbmN5KCcuLi8uLi90aGlyZF9wYXJ0eS9jbG9zdXJlL2dvb2cvbW9jaGlraXQvYXN5bmMvZGVmZXJyZWRsaXN0LmpzJywgWydnb29nLmFzeW5jLkRlZmVycmVkTGlzdCddLCBbJ2dvb2cuYXN5bmMuRGVmZXJyZWQnXSwge30pOwpnb29nLmFkZERlcGVuZGVuY3koJy4uLy4uL3RoaXJkX3BhcnR5L2Nsb3N1cmUvZ29vZy9tb2NoaWtpdC9hc3luYy9kZWZlcnJlZGxpc3RfdGVzdC5qcycsIFsnZ29vZy5hc3luYy5kZWZlcnJlZExpc3RUZXN0J10sIFsnZ29vZy5hcnJheScsICdnb29nLmFzeW5jLkRlZmVycmVkJywgJ2dvb2cuYXN5bmMuRGVmZXJyZWRMaXN0JywgJ2dvb2cudGVzdGluZy50ZXN0U3VpdGUnXSwgeydsYW5nJzogJ2VzNicsICdtb2R1bGUnOiAnZ29vZyd9KTsKZ29vZy5hZGREZXBlbmRlbmN5KCdwcm90by9wcm90by5qcycsIFsnZ29vZy5wcm90byddLCBbJ2dvb2cucHJvdG8uU2VyaWFsaXplciddLCB7fSk7Cmdvb2cuYWRkRGVwZW5kZW5jeSgncHJvdG8vc2VyaWFsaXplci5qcycsIFsnZ29vZy5wcm90by5TZXJpYWxpemVyJ10sIFsnZ29vZy5qc29uLlNlcmlhbGl6ZXInLCAnZ29vZy5zdHJpbmcnXSwge30pOwpnb29nLmFkZERlcGVuZGVuY3koJ3Byb3RvL3NlcmlhbGl6ZXJfdGVzdC5qcycsIFsnZ29vZy5wcm90b1Rlc3QnXSwgWydnb29nLnByb3RvJywgJ2dvb2cudGVzdGluZy50ZXN0U3VpdGUnXSwgeydsYW5nJzogJ2VzNicsICdtb2R1bGUnOiAnZ29vZyd9KTsKZ29vZy5hZGREZXBlbmRlbmN5KCdhMTF5L2FyaWEvYW5ub3VuY2VyLmpzJywgWydnb29nLmExMXkuYXJpYS5Bbm5vdW5jZXInXSwgWydnb29nLkRpc3Bvc2FibGUnLCAnZ29vZy5UaW1lcicsICdnb29nLmExMXkuYXJpYScsICdnb29nLmExMXkuYXJpYS5MaXZlUHJpb3JpdHknLCAnZ29vZy5hMTF5LmFyaWEuU3RhdGUnLCAnZ29vZy5kb20nLCAnZ29vZy5kb20uVGFnTmFtZScsICdnb29nLm9iamVjdCddLCB7fSk7Cmdvb2cuYWRkRGVwZW5kZW5jeSgnYTExeS9hcmlhL2Fubm91bmNlcl90ZXN0LmpzJywgWydnb29nLmExMXkuYXJpYS5Bbm5vdW5jZXJUZXN0J10sIFsnZ29vZy5hMTF5LmFyaWEnLCAnZ29vZy5hMTF5LmFyaWEuQW5ub3VuY2VyJywgJ2dvb2cuYTExeS5hcmlhLkxpdmVQcmlvcml0eScsICdnb29nLmExMXkuYXJpYS5TdGF0ZScsICdnb29nLmFycmF5JywgJ2dvb2cuZG9tJywgJ2dvb2cuZG9tLlRhZ05hbWUnLCAnZ29vZy5kb20uaWZyYW1lJywgJ2dvb2cudGVzdGluZy5Nb2NrQ2xvY2snLCAnZ29vZy50ZXN0aW5nLnRlc3RTdWl0ZSddLCB7J2xhbmcnOiAnZXM2JywgJ21vZHVsZSc6ICdnb29nJ30pOwpnb29nLmFkZERlcGVuZGVuY3koJ2ExMXkvYXJpYS9hcmlhLmpzJywgWydnb29nLmExMXkuYXJpYSddLCBbJ2dvb2cuYTExeS5hcmlhLlJvbGUnLCAnZ29vZy5hMTF5LmFyaWEuU3RhdGUnLCAnZ29vZy5hMTF5LmFyaWEuZGF0YXRhYmxlcycsICdnb29nLmFycmF5JywgJ2dvb2cuYXNzZXJ0cycsICdnb29nLmRvbScsICdnb29nLmRvbS5UYWdOYW1lJywgJ2dvb2cub2JqZWN0JywgJ2dvb2cuc3RyaW5nJ10sIHt9KTsKZ29vZy5hZGREZXBlbmRlbmN5KCdhMTF5L2FyaWEvYXJpYV90ZXN0LmpzJywgWydnb29nLmExMXkuYXJpYVRlc3QnXSwgWydnb29nLmExMXkuYXJpYScsICdnb29nLmExMXkuYXJpYS5Sb2xlJywgJ2dvb2cuYTExeS5hcmlhLlN0YXRlJywgJ2dvb2cuZG9tJywgJ2dvb2cuZG9tLlRhZ05hbWUnLCAnZ29vZy50ZXN0aW5nLnRlc3RTdWl0ZSddLCB7J2xhbmcnOiAnZXM2JywgJ21vZHVsZSc6ICdnb29nJ30pOwpnb29nLmFkZERlcGVuZGVuY3koJ2ExMXkvYXJpYS9hdHRyaWJ1dGVzLmpzJywgWydnb29nLmExMXkuYXJpYS5BdXRvQ29tcGxldGVWYWx1ZXMnLCAnZ29vZy5hMTF5LmFyaWEuQ2hlY2tlZFZhbHVlcycsICdnb29nLmExMXkuYXJpYS5Ecm9wRWZmZWN0VmFsdWVzJywgJ2dvb2cuYTExeS5hcmlhLkV4cGFuZGVkVmFsdWVzJywgJ2dvb2cuYTExeS5hcmlhLkdyYWJiZWRWYWx1ZXMnLCAnZ29vZy5hMTF5LmFyaWEuSW52YWxpZFZhbHVlcycsICdnb29nLmExMXkuYXJpYS5MaXZlUHJpb3JpdHknLCAnZ29vZy5hMTF5LmFyaWEuT3JpZW50YXRpb25WYWx1ZXMnLCAnZ29vZy5hMTF5LmFyaWEuUHJlc3NlZFZhbHVlcycsICdnb29nLmExMXkuYXJpYS5SZWxldmFudFZhbHVlcycsICdnb29nLmExMXkuYXJpYS5TZWxlY3RlZFZhbHVlcycsICdnb29nLmExMXkuYXJpYS5Tb3J0VmFsdWVzJywgJ2dvb2cuYTExeS5hcmlhLlN0YXRlJ10sIFtdLCB7fSk7Cmdvb2cuYWRkRGVwZW5kZW5jeSgnYTExeS9hcmlhL2RhdGF0YWJsZXMuanMnLCBbJ2dvb2cuYTExeS5hcmlhLmRhdGF0YWJsZXMnXSwgWydnb29nLmExMXkuYXJpYS5TdGF0ZScsICdnb29nLm9iamVjdCddLCB7fSk7Cmdvb2cuYWRkRGVwZW5kZW5jeSgnYTExeS9hcmlhL3JvbGVzLmpzJywgWydnb29nLmExMXkuYXJpYS5Sb2xlJ10sIFtdLCB7fSk7Cmdvb2cuYWRkRGVwZW5kZW5jeSgnYXJyYXkvYXJyYXkuanMnLCBbJ2dvb2cuYXJyYXknXSwgWydnb29nLmFzc2VydHMnXSwge30pOwpnb29nLmFkZERlcGVuZGVuY3koJ2FycmF5L2FycmF5X3Rlc3QuanMnLCBbJ2dvb2cuYXJyYXlUZXN0J10sIFsnZ29vZy5hcnJheScsICdnb29nLmRvbScsICdnb29nLmRvbS5UYWdOYW1lJywgJ2dvb2cudGVzdGluZy5Qcm9wZXJ0eVJlcGxhY2VyJywgJ2dvb2cudGVzdGluZy5yZWNvcmRGdW5jdGlvbicsICdnb29nLnRlc3RpbmcudGVzdFN1aXRlJ10sIHsnbGFuZyc6ICdlczcnLCAnbW9kdWxlJzogJ2dvb2cnfSk7Cmdvb2cuYWRkRGVwZW5kZW5jeSgnYXNzZXJ0cy9hc3NlcnRzLmpzJywgWydnb29nLmFzc2VydHMnLCAnZ29vZy5hc3NlcnRzLkFzc2VydGlvbkVycm9yJ10sIFsnZ29vZy5kZWJ1Zy5FcnJvcicsICdnb29nLmRvbS5Ob2RlVHlwZSddLCB7fSk7Cmdvb2cuYWRkRGVwZW5kZW5jeSgnYXNzZXJ0cy9hc3NlcnRzX3Rlc3QuanMnLCBbJ2dvb2cuYXNzZXJ0c1Rlc3QnXSwgWydnb29nLmFzc2VydHMnLCAnZ29vZy5hc3NlcnRzLkFzc2VydGlvbkVycm9yJywgJ2dvb2cuZG9tJywgJ2dvb2cuZG9tLlRhZ05hbWUnLCAnZ29vZy5yZWZsZWN0JywgJ2dvb2cuc3RyaW5nJywgJ2dvb2cudGVzdGluZy50ZXN0U3VpdGUnLCAnZ29vZy51c2VyQWdlbnQnXSwgeydsYW5nJzogJ2VzNicsICdtb2R1bGUnOiAnZ29vZyd9KTsKZ29vZy5hZGREZXBlbmRlbmN5KCdhc3luYy9hbmltYXRpb25kZWxheS5qcycsIFsnZ29vZy5hc3luYy5BbmltYXRpb25EZWxheSddLCBbJ2dvb2cuRGlzcG9zYWJsZScsICdnb29nLmV2ZW50cycsICdnb29nLmZ1bmN0aW9ucyddLCB7fSk7Cmdvb2cuYWRkRGVwZW5kZW5jeSgnYXN5bmMvYW5pbWF0aW9uZGVsYXlfdGVzdC5qcycsIFsnZ29vZy5hc3luYy5BbmltYXRpb25EZWxheVRlc3QnXSwgWydnb29nLlByb21pc2UnLCAnZ29vZy5UaW1lcicsICdnb29nLmFzeW5jLkFuaW1hdGlvbkRlbGF5JywgJ2dvb2cudGVzdGluZy5Qcm9wZXJ0eVJlcGxhY2VyJywgJ2dvb2cudGVzdGluZy50ZXN0U3VpdGUnXSwgeydsYW5nJzogJ2VzNicsICdtb2R1bGUnOiAnZ29vZyd9KTsKZ29vZy5hZGREZXBlbmRlbmN5KCdhc3luYy9jb25kaXRpb25hbGRlbGF5LmpzJywgWydnb29nLmFzeW5jLkNvbmRpdGlvbmFsRGVsYXknXSwgWydnb29nLkRpc3Bvc2FibGUnLCAnZ29vZy5hc3luYy5EZWxheSddLCB7fSk7Cmdvb2cuYWRkRGVwZW5kZW5jeSgnYXN5bmMvY29uZGl0aW9uYWxkZWxheV90ZXN0LmpzJywgWydnb29nLmFzeW5jLkNvbmRpdGlvbmFsRGVsYXlUZXN0J10sIFsnZ29vZy5hc3luYy5Db25kaXRpb25hbERlbGF5JywgJ2dvb2cudGVzdGluZy5Nb2NrQ2xvY2snLCAnZ29vZy50ZXN0aW5nLnRlc3RTdWl0ZSddLCB7J2xhbmcnOiAnZXM2JywgJ21vZHVsZSc6ICdnb29nJ30pOwpnb29nLmFkZERlcGVuZGVuY3koJ2FzeW5jL2RlYm91bmNlci5qcycsIFsnZ29vZy5hc3luYy5EZWJvdW5jZXInXSwgWydnb29nLkRpc3Bvc2FibGUnLCAnZ29vZy5UaW1lciddLCB7fSk7Cmdvb2cuYWRkRGVwZW5kZW5jeSgnYXN5bmMvZGVib3VuY2VyX3Rlc3QuanMnLCBbJ2dvb2cuYXN5bmMuRGVib3VuY2VyVGVzdCddLCBbJ2dvb2cuYXJyYXknLCAnZ29vZy5hc3luYy5EZWJvdW5jZXInLCAnZ29vZy50ZXN0aW5nLk1vY2tDbG9jaycsICdnb29nLnRlc3RpbmcucmVjb3JkRnVuY3Rpb24nLCAnZ29vZy50ZXN0aW5nLnRlc3RTdWl0ZSddLCB7J2xhbmcnOiAnZXM2JywgJ21vZHVsZSc6ICdnb29nJ30pOwpnb29nLmFkZERlcGVuZGVuY3koJ2FzeW5jL2RlbGF5LmpzJywgWydnb29nLkRlbGF5JywgJ2dvb2cuYXN5bmMuRGVsYXknXSwgWydnb29nLkRpc3Bvc2FibGUnLCAnZ29vZy5UaW1lciddLCB7fSk7Cmdvb2cuYWRkRGVwZW5kZW5jeSgnYXN5bmMvZGVsYXlfdGVzdC5qcycsIFsnZ29vZy5hc3luYy5EZWxheVRlc3QnXSwgWydnb29nLmFzeW5jLkRlbGF5JywgJ2dvb2cudGVzdGluZy5Nb2NrQ2xvY2snLCAnZ29vZy50ZXN0aW5nLnRlc3RTdWl0ZSddLCB7J2xhbmcnOiAnZXM2JywgJ21vZHVsZSc6ICdnb29nJ30pOwpnb29nLmFkZERlcGVuZGVuY3koJ2FzeW5jL2ZyZWVsaXN0LmpzJywgWydnb29nLmFzeW5jLkZyZWVMaXN0J10sIFtdLCB7J2xhbmcnOiAnZXM2J30pOwpnb29nLmFkZERlcGVuZGVuY3koJ2FzeW5jL2ZyZWVsaXN0X3Rlc3QuanMnLCBbJ2dvb2cuYXN5bmMuRnJlZUxpc3RUZXN0J10sIFsnZ29vZy5hc3luYy5GcmVlTGlzdCcsICdnb29nLnRlc3RpbmcudGVzdFN1aXRlJ10sIHsnbGFuZyc6ICdlczYnLCAnbW9kdWxlJzogJ2dvb2cnfSk7Cmdvb2cuYWRkRGVwZW5kZW5jeSgnYXN5bmMvbmV4dHRpY2suanMnLCBbJ2dvb2cuYXN5bmMubmV4dFRpY2snLCAnZ29vZy5hc3luYy50aHJvd0V4Y2VwdGlvbiddLCBbJ2dvb2cuZGVidWcuZW50cnlQb2ludFJlZ2lzdHJ5JywgJ2dvb2cuZG9tJywgJ2dvb2cuZG9tLlRhZ05hbWUnLCAnZ29vZy5kb20uc2FmZScsICdnb29nLmZ1bmN0aW9ucycsICdnb29nLmh0bWwuU2FmZUh0bWwnLCAnZ29vZy5odG1sLlRydXN0ZWRSZXNvdXJjZVVybCcsICdnb29nLmxhYnMudXNlckFnZW50LmJyb3dzZXInLCAnZ29vZy5sYWJzLnVzZXJBZ2VudC5lbmdpbmUnLCAnZ29vZy5zdHJpbmcuQ29uc3QnXSwge30pOwpnb29nLmFkZERlcGVuZGVuY3koJ2FzeW5jL25leHR0aWNrX3Rlc3QuanMnLCBbJ2dvb2cuYXN5bmMubmV4dFRpY2tUZXN0J10sIFsnZ29vZy5Qcm9taXNlJywgJ2dvb2cuYXN5bmMubmV4dFRpY2snLCAnZ29vZy5kZWJ1Zy5FcnJvckhhbmRsZXInLCAnZ29vZy5kZWJ1Zy5lbnRyeVBvaW50UmVnaXN0cnknLCAnZ29vZy5kb20nLCAnZ29vZy5kb20uVGFnTmFtZScsICdnb29nLmxhYnMudXNlckFnZW50LmJyb3dzZXInLCAnZ29vZy50ZXN0aW5nLk1vY2tDbG9jaycsICdnb29nLnRlc3RpbmcuUHJvcGVydHlSZXBsYWNlcicsICdnb29nLnRlc3RpbmcudGVzdFN1aXRlJ10sIHsnbGFuZyc6ICdlczYnLCAnbW9kdWxlJzogJ2dvb2cnfSk7Cmdvb2cuYWRkRGVwZW5kZW5jeSgnYXN5bmMvcnVuLmpzJywgWydnb29nLmFzeW5jLnJ1biddLCBbJ2dvb2cuYXN5bmMuV29ya1F1ZXVlJywgJ2dvb2cuYXN5bmMubmV4dFRpY2snLCAnZ29vZy5hc3luYy50aHJvd0V4Y2VwdGlvbiddLCB7fSk7Cmdvb2cuYWRkRGVwZW5kZW5jeSgnYXN5bmMvcnVuX25leHRfdGlja190ZXN0LmpzJywgWydnb29nLmFzeW5jLnJ1bk5leHRUaWNrVGVzdCddLCBbJ2dvb2cuYXN5bmMucnVuJywgJ2dvb2cudGVzdGluZy5Nb2NrQ2xvY2snLCAnZ29vZy50ZXN0aW5nLnJlY29yZEZ1bmN0aW9uJywgJ2dvb2cudGVzdGluZy50ZXN0U3VpdGUnXSwgeydsYW5nJzogJ2VzNicsICdtb2R1bGUnOiAnZ29vZyd9KTsKZ29vZy5hZGREZXBlbmRlbmN5KCdhc3luYy9ydW5fdGVzdC5qcycsIFsnZ29vZy5hc3luYy5ydW5UZXN0J10sIFsnZ29vZy5hc3luYy5ydW4nLCAnZ29vZy50ZXN0aW5nLnJlY29yZEZ1bmN0aW9uJywgJ2dvb2cudGVzdGluZy50ZXN0U3VpdGUnXSwgeydsYW5nJzogJ2VzNicsICdtb2R1bGUnOiAnZ29vZyd9KTsKZ29vZy5hZGREZXBlbmRlbmN5KCdhc3luYy90aHJvdHRsZS5qcycsIFsnZ29vZy5UaHJvdHRsZScsICdnb29nLmFzeW5jLlRocm90dGxlJ10sIFsnZ29vZy5EaXNwb3NhYmxlJywgJ2dvb2cuVGltZXInXSwge30pOwpnb29nLmFkZERlcGVuZGVuY3koJ2FzeW5jL3Rocm90dGxlX3Rlc3QuanMnLCBbJ2dvb2cuYXN5bmMuVGhyb3R0bGVUZXN0J10sIFsnZ29vZy5hc3luYy5UaHJvdHRsZScsICdnb29nLnRlc3RpbmcuTW9ja0Nsb2NrJywgJ2dvb2cudGVzdGluZy50ZXN0U3VpdGUnXSwgeydsYW5nJzogJ2VzNicsICdtb2R1bGUnOiAnZ29vZyd9KTsKZ29vZy5hZGREZXBlbmRlbmN5KCdhc3luYy93b3JrcXVldWUuanMnLCBbJ2dvb2cuYXN5bmMuV29ya0l0ZW0nLCAnZ29vZy5hc3luYy5Xb3JrUXVldWUnXSwgWydnb29nLmFzc2VydHMnLCAnZ29vZy5hc3luYy5GcmVlTGlzdCddLCB7fSk7Cmdvb2cuYWRkRGVwZW5kZW5jeSgnYXN5bmMvd29ya3F1ZXVlX3Rlc3QuanMnLCBbJ2dvb2cuYXN5bmMuV29ya1F1ZXVlVGVzdCddLCBbJ2dvb2cuYXN5bmMuV29ya1F1ZXVlJywgJ2dvb2cudGVzdGluZy50ZXN0U3VpdGUnXSwgeydsYW5nJzogJ2VzNicsICdtb2R1bGUnOiAnZ29vZyd9KTsKZ29vZy5hZGREZXBlbmRlbmN5KCdiYXNlLmpzJywgWydnb29nJ10sIFtdLCB7fSk7Cmdvb2cuYWRkRGVwZW5kZW5jeSgnYmFzZV9tb2R1bGVfdGVzdC5qcycsIFsnZ29vZy5iYXNlTW9kdWxlVGVzdCddLCBbJ2dvb2cuVGltZXInLCAnZ29vZy50ZXN0X21vZHVsZScsICdnb29nLnRlc3RpbmcuUHJvcGVydHlSZXBsYWNlcicsICdnb29nLnRlc3RpbmcuanN1bml0JywgJ2dvb2cudGVzdGluZy50ZXN0U3VpdGUnXSwgeydsYW5nJzogJ2VzNicsICdtb2R1bGUnOiAnZ29vZyd9KTsKZ29vZy5hZGREZXBlbmRlbmN5KCdiYXNlX3Rlc3QuanMnLCBbJ2dvb2cuYmFzZVRlc3QnXSwgWydnb29nLlByb21pc2UnLCAnZ29vZy5UaW1lcicsICdnb29nLlVyaScsICdnb29nLmRvbScsICdnb29nLmRvbS5UYWdOYW1lJywgJ2dvb2cub2JqZWN0JywgJ2dvb2cudGVzdF9tb2R1bGUnLCAnZ29vZy50ZXN0aW5nLlByb3BlcnR5UmVwbGFjZXInLCAnZ29vZy50ZXN0aW5nLmpzdW5pdCcsICdnb29nLnRlc3RpbmcucmVjb3JkRnVuY3Rpb24nLCAnZ29vZy51c2VyQWdlbnQnXSwgeydsYW5nJzogJ2VzNid9KTsKZ29vZy5hZGREZXBlbmRlbmN5KCdjb2xvci9hbHBoYS5qcycsIFsnZ29vZy5jb2xvci5hbHBoYSddLCBbJ2dvb2cuY29sb3InXSwge30pOwpnb29nLmFkZERlcGVuZGVuY3koJ2NvbG9yL2FscGhhX3Rlc3QuanMnLCBbJ2dvb2cuY29sb3IuYWxwaGFUZXN0J10sIFsnZ29vZy5hcnJheScsICdnb29nLmNvbG9yLmFscGhhJywgJ2dvb2cudGVzdGluZy50ZXN0U3VpdGUnXSwgeydsYW5nJzogJ2VzNicsICdtb2R1bGUnOiAnZ29vZyd9KTsKZ29vZy5hZGREZXBlbmRlbmN5KCdjb2xvci9jb2xvci5qcycsIFsnZ29vZy5jb2xvcicsICdnb29nLmNvbG9yLkhzbCcsICdnb29nLmNvbG9yLkhzdicsICdnb29nLmNvbG9yLlJnYiddLCBbJ2dvb2cuY29sb3IubmFtZXMnLCAnZ29vZy5tYXRoJ10sIHt9KTsKZ29vZy5hZGREZXBlbmRlbmN5KCdjb2xvci9jb2xvcl90ZXN0LmpzJywgWydnb29nLmNvbG9yVGVzdCddLCBbJ2dvb2cuYXJyYXknLCAnZ29vZy5jb2xvcicsICdnb29nLmNvbG9yLm5hbWVzJywgJ2dvb2cudGVzdGluZy50ZXN0U3VpdGUnXSwgeydsYW5nJzogJ2VzNicsICdtb2R1bGUnOiAnZ29vZyd9KTsKZ29vZy5hZGREZXBlbmRlbmN5KCdjb2xvci9uYW1lcy5qcycsIFsnZ29vZy5jb2xvci5uYW1lcyddLCBbXSwge30pOwpnb29nLmFkZERlcGVuZGVuY3koJ2NyeXB0L2Flcy5qcycsIFsnZ29vZy5jcnlwdC5BZXMnXSwgWydnb29nLmFzc2VydHMnLCAnZ29vZy5jcnlwdC5CbG9ja0NpcGhlciddLCB7fSk7Cmdvb2cuYWRkRGVwZW5kZW5jeSgnY3J5cHQvYWVzX3Rlc3QuanMnLCBbJ2dvb2cuY3J5cHQuQWVzVGVzdCddLCBbJ2dvb2cuY3J5cHQnLCAnZ29vZy5jcnlwdC5BZXMnLCAnZ29vZy50ZXN0aW5nLnRlc3RTdWl0ZSddLCB7J2xhbmcnOiAnZXM2JywgJ21vZHVsZSc6ICdnb29nJ30pOwpnb29nLmFkZERlcGVuZGVuY3koJ2NyeXB0L2FyYzQuanMnLCBbJ2dvb2cuY3J5cHQuQXJjNCddLCBbJ2dvb2cuYXNzZXJ0cyddLCB7fSk7Cmdvb2cuYWRkRGVwZW5kZW5jeSgnY3J5cHQvYXJjNF90ZXN0LmpzJywgWydnb29nLmNyeXB0LkFyYzRUZXN0J10sIFsnZ29vZy5hcnJheScsICdnb29nLmNyeXB0LkFyYzQnLCAnZ29vZy50ZXN0aW5nLnRlc3RTdWl0ZSddLCB7J2xhbmcnOiAnZXM2JywgJ21vZHVsZSc6ICdnb29nJ30pOwpnb29nLmFkZERlcGVuZGVuY3koJ2NyeXB0L2Jhc2U2NC5qcycsIFsnZ29vZy5jcnlwdC5iYXNlNjQnXSwgWydnb29nLmFzc2VydHMnLCAnZ29vZy5jcnlwdCcsICdnb29nLnN0cmluZycsICdnb29nLnVzZXJBZ2VudCcsICdnb29nLnVzZXJBZ2VudC5wcm9kdWN0J10sIHsnbGFuZyc6ICdlczUnfSk7Cmdvb2cuYWRkRGVwZW5kZW5jeSgnY3J5cHQvYmFzZTY0X3Rlc3QuanMnLCBbJ2dvb2cuY3J5cHQuYmFzZTY0VGVzdCddLCBbJ2dvb2cuY3J5cHQnLCAnZ29vZy5jcnlwdC5iYXNlNjQnLCAnZ29vZy50ZXN0aW5nLnRlc3RTdWl0ZSddLCB7J2xhbmcnOiAnZXM2JywgJ21vZHVsZSc6ICdnb29nJ30pOwpnb29nLmFkZERlcGVuZGVuY3koJ2NyeXB0L2Jhc2VuLmpzJywgWydnb29nLmNyeXB0LmJhc2VOJ10sIFtdLCB7J2xhbmcnOiAnZXM2J30pOwpnb29nLmFkZERlcGVuZGVuY3koJ2NyeXB0L2Jhc2VuX3Rlc3QuanMnLCBbJ2dvb2cuY3J5cHQuYmFzZU5UZXN0J10sIFsnZ29vZy5jcnlwdC5iYXNlTicsICdnb29nLnRlc3RpbmcudGVzdFN1aXRlJ10sIHsnbGFuZyc6ICdlczYnLCAnbW9kdWxlJzogJ2dvb2cnfSk7Cmdvb2cuYWRkRGVwZW5kZW5jeSgnY3J5cHQvYmxvYmhhc2hlci5qcycsIFsnZ29vZy5jcnlwdC5CbG9iSGFzaGVyJywgJ2dvb2cuY3J5cHQuQmxvYkhhc2hlci5FdmVudFR5cGUnXSwgWydnb29nLmFzc2VydHMnLCAnZ29vZy5ldmVudHMuRXZlbnRUYXJnZXQnLCAnZ29vZy5mcycsICdnb29nLmxvZyddLCB7fSk7Cmdvb2cuYWRkRGVwZW5kZW5jeSgnY3J5cHQvYmxvYmhhc2hlcl90ZXN0LmpzJywgWydnb29nLmNyeXB0LkJsb2JIYXNoZXJUZXN0J10sIFsnZ29vZy5jcnlwdCcsICdnb29nLmNyeXB0LkJsb2JIYXNoZXInLCAnZ29vZy5jcnlwdC5NZDUnLCAnZ29vZy5ldmVudHMnLCAnZ29vZy50ZXN0aW5nLlByb3BlcnR5UmVwbGFjZXInLCAnZ29vZy50ZXN0aW5nLnRlc3RTdWl0ZSddLCB7J2xhbmcnOiAnZXM2JywgJ21vZHVsZSc6ICdnb29nJ30pOwpnb29nLmFkZERlcGVuZGVuY3koJ2NyeXB0L2Jsb2NrY2lwaGVyLmpzJywgWydnb29nLmNyeXB0LkJsb2NrQ2lwaGVyJ10sIFtdLCB7fSk7Cmdvb2cuYWRkRGVwZW5kZW5jeSgnY3J5cHQvYnl0ZXN0cmluZ19wZXJmLmpzJywgWydnb29nLmNyeXB0LmJ5dGVBcnJheVRvU3RyaW5nUGVyZiddLCBbJ2dvb2cuYXJyYXknLCAnZ29vZy5kb20nLCAnZ29vZy50ZXN0aW5nLlBlcmZvcm1hbmNlVGFibGUnXSwge30pOwpnb29nLmFkZERlcGVuZGVuY3koJ2NyeXB0L2NiYy5qcycsIFsnZ29vZy5jcnlwdC5DYmMnXSwgWydnb29nLmFycmF5JywgJ2dvb2cuYXNzZXJ0cycsICdnb29nLmNyeXB0JywgJ2dvb2cuY3J5cHQuQmxvY2tDaXBoZXInXSwge30pOwpnb29nLmFkZERlcGVuZGVuY3koJ2NyeXB0L2NiY190ZXN0LmpzJywgWydnb29nLmNyeXB0LkNiY1Rlc3QnXSwgWydnb29nLmNyeXB0JywgJ2dvb2cuY3J5cHQuQWVzJywgJ2dvb2cuY3J5cHQuQ2JjJywgJ2dvb2cudGVzdGluZy50ZXN0U3VpdGUnXSwgeydsYW5nJzogJ2VzNicsICdtb2R1bGUnOiAnZ29vZyd9KTsKZ29vZy5hZGREZXBlbmRlbmN5KCdjcnlwdC9jcnlwdC5qcycsIFsnZ29vZy5jcnlwdCddLCBbJ2dvb2cuYXJyYXknLCAnZ29vZy5hc3NlcnRzJ10sIHt9KTsKZ29vZy5hZGREZXBlbmRlbmN5KCdjcnlwdC9jcnlwdF90ZXN0LmpzJywgWydnb29nLmNyeXB0VGVzdCddLCBbJ2dvb2cuY3J5cHQnLCAnZ29vZy5zdHJpbmcnLCAnZ29vZy50ZXN0aW5nLnRlc3RTdWl0ZSddLCB7J2xhbmcnOiAnZXM2JywgJ21vZHVsZSc6ICdnb29nJ30pOwpnb29nLmFkZERlcGVuZGVuY3koJ2NyeXB0L2N0ci5qcycsIFsnZ29vZy5jcnlwdC5DdHInXSwgWydnb29nLmFycmF5JywgJ2dvb2cuYXNzZXJ0cycsICdnb29nLmNyeXB0J10sIHt9KTsKZ29vZy5hZGREZXBlbmRlbmN5KCdjcnlwdC9jdHJfdGVzdC5qcycsIFsnZ29vZy5jcnlwdC5DdHJUZXN0J10sIFsnZ29vZy5jcnlwdCcsICdnb29nLmNyeXB0LkFlcycsICdnb29nLmNyeXB0LkN0cicsICdnb29nLnRlc3RpbmcuanN1bml0J10sIHsnbGFuZyc6ICdlczYnfSk7Cmdvb2cuYWRkRGVwZW5kZW5jeSgnY3J5cHQvaGFzaC5qcycsIFsnZ29vZy5jcnlwdC5IYXNoJ10sIFtdLCB7fSk7Cmdvb2cuYWRkRGVwZW5kZW5jeSgnY3J5cHQvaGFzaDMyLmpzJywgWydnb29nLmNyeXB0Lmhhc2gzMiddLCBbJ2dvb2cuY3J5cHQnXSwge30pOwpnb29nLmFkZERlcGVuZGVuY3koJ2NyeXB0L2hhc2gzMl90ZXN0LmpzJywgWydnb29nLmNyeXB0Lmhhc2gzMlRlc3QnXSwgWydnb29nLmNyeXB0Lmhhc2gzMicsICdnb29nLnRlc3RpbmcuVGVzdENhc2UnLCAnZ29vZy50ZXN0aW5nLnRlc3RTdWl0ZSddLCB7J2xhbmcnOiAnZXM2JywgJ21vZHVsZSc6ICdnb29nJ30pOwpnb29nLmFkZERlcGVuZGVuY3koJ2NyeXB0L2hhc2h0ZXN0ZXIuanMnLCBbJ2dvb2cuY3J5cHQuaGFzaFRlc3RlciddLCBbJ2dvb2cuYXJyYXknLCAnZ29vZy5jcnlwdCcsICdnb29nLmRvbScsICdnb29nLmRvbS5UYWdOYW1lJywgJ2dvb2cucmVmbGVjdCcsICdnb29nLnRlc3RpbmcuUGVyZm9ybWFuY2VUYWJsZScsICdnb29nLnRlc3RpbmcuUHNldWRvUmFuZG9tJywgJ2dvb2cudGVzdGluZy5hc3NlcnRzJ10sIHt9KTsKZ29vZy5hZGREZXBlbmRlbmN5KCdjcnlwdC9obWFjLmpzJywgWydnb29nLmNyeXB0LkhtYWMnXSwgWydnb29nLmNyeXB0Lkhhc2gnXSwge30pOwpnb29nLmFkZERlcGVuZGVuY3koJ2NyeXB0L2htYWNfdGVzdC5qcycsIFsnZ29vZy5jcnlwdC5IbWFjVGVzdCddLCBbJ2dvb2cuY3J5cHQuSG1hYycsICdnb29nLmNyeXB0LlNoYTEnLCAnZ29vZy5jcnlwdC5oYXNoVGVzdGVyJywgJ2dvb2cudGVzdGluZy50ZXN0U3VpdGUnXSwgeydsYW5nJzogJ2VzNicsICdtb2R1bGUnOiAnZ29vZyd9KTsKZ29vZy5hZGREZXBlbmRlbmN5KCdjcnlwdC9tZDUuanMnLCBbJ2dvb2cuY3J5cHQuTWQ1J10sIFsnZ29vZy5jcnlwdC5IYXNoJ10sIHt9KTsKZ29vZy5hZGREZXBlbmRlbmN5KCdjcnlwdC9tZDVfdGVzdC5qcycsIFsnZ29vZy5jcnlwdC5NZDVUZXN0J10sIFsnZ29vZy5jcnlwdCcsICdnb29nLmNyeXB0Lk1kNScsICdnb29nLmNyeXB0Lmhhc2hUZXN0ZXInLCAnZ29vZy50ZXN0aW5nLnRlc3RTdWl0ZSddLCB7J2xhbmcnOiAnZXM2JywgJ21vZHVsZSc6ICdnb29nJ30pOwpnb29nLmFkZERlcGVuZGVuY3koJ2NyeXB0L3Bia2RmMi5qcycsIFsnZ29vZy5jcnlwdC5wYmtkZjInXSwgWydnb29nLmFycmF5JywgJ2dvb2cuYXNzZXJ0cycsICdnb29nLmNyeXB0JywgJ2dvb2cuY3J5cHQuSG1hYycsICdnb29nLmNyeXB0LlNoYTEnXSwge30pOwpnb29nLmFkZERlcGVuZGVuY3koJ2NyeXB0L3Bia2RmMl90ZXN0LmpzJywgWydnb29nLmNyeXB0LnBia2RmMlRlc3QnXSwgWydnb29nLmNyeXB0JywgJ2dvb2cuY3J5cHQucGJrZGYyJywgJ2dvb2cudGVzdGluZy50ZXN0U3VpdGUnLCAnZ29vZy51c2VyQWdlbnQnXSwgeydsYW5nJzogJ2VzNicsICdtb2R1bGUnOiAnZ29vZyd9KTsKZ29vZy5hZGREZXBlbmRlbmN5KCdjcnlwdC9zaGExLmpzJywgWydnb29nLmNyeXB0LlNoYTEnXSwgWydnb29nLmNyeXB0Lkhhc2gnXSwge30pOwpnb29nLmFkZERlcGVuZGVuY3koJ2NyeXB0L3NoYTFfdGVzdC5qcycsIFsnZ29vZy5jcnlwdC5TaGExVGVzdCddLCBbJ2dvb2cuY3J5cHQnLCAnZ29vZy5jcnlwdC5TaGExJywgJ2dvb2cuY3J5cHQuaGFzaFRlc3RlcicsICdnb29nLnRlc3RpbmcudGVzdFN1aXRlJywgJ2dvb2cudXNlckFnZW50J10sIHsnbGFuZyc6ICdlczYnLCAnbW9kdWxlJzogJ2dvb2cnfSk7Cmdvb2cuYWRkRGVwZW5kZW5jeSgnY3J5cHQvc2hhMi5qcycsIFsnZ29vZy5jcnlwdC5TaGEyJ10sIFsnZ29vZy5hcnJheScsICdnb29nLmFzc2VydHMnLCAnZ29vZy5jcnlwdC5IYXNoJ10sIHt9KTsKZ29vZy5hZGREZXBlbmRlbmN5KCdjcnlwdC9zaGEyMjQuanMnLCBbJ2dvb2cuY3J5cHQuU2hhMjI0J10sIFsnZ29vZy5jcnlwdC5TaGEyJ10sIHt9KTsKZ29vZy5hZGREZXBlbmRlbmN5KCdjcnlwdC9zaGEyMjRfdGVzdC5qcycsIFsnZ29vZy5jcnlwdC5TaGEyMjRUZXN0J10sIFsnZ29vZy5jcnlwdCcsICdnb29nLmNyeXB0LlNoYTIyNCcsICdnb29nLmNyeXB0Lmhhc2hUZXN0ZXInLCAnZ29vZy50ZXN0aW5nLnRlc3RTdWl0ZSddLCB7J2xhbmcnOiAnZXM2JywgJ21vZHVsZSc6ICdnb29nJ30pOwpnb29nLmFkZERlcGVuZGVuY3koJ2NyeXB0L3NoYTI1Ni5qcycsIFsnZ29vZy5jcnlwdC5TaGEyNTYnXSwgWydnb29nLmNyeXB0LlNoYTInXSwge30pOwpnb29nLmFkZERlcGVuZGVuY3koJ2NyeXB0L3NoYTI1Nl90ZXN0LmpzJywgWydnb29nLmNyeXB0LlNoYTI1NlRlc3QnXSwgWydnb29nLmNyeXB0JywgJ2dvb2cuY3J5cHQuU2hhMjU2JywgJ2dvb2cuY3J5cHQuaGFzaFRlc3RlcicsICdnb29nLnRlc3RpbmcudGVzdFN1aXRlJ10sIHsnbGFuZyc6ICdlczYnLCAnbW9kdWxlJzogJ2dvb2cnfSk7Cmdvb2cuYWRkRGVwZW5kZW5jeSgnY3J5cHQvc2hhMl82NGJpdC5qcycsIFsnZ29vZy5jcnlwdC5TaGEyXzY0Yml0J10sIFsnZ29vZy5hcnJheScsICdnb29nLmFzc2VydHMnLCAnZ29vZy5jcnlwdC5IYXNoJywgJ2dvb2cubWF0aC5Mb25nJ10sIHt9KTsKZ29vZy5hZGREZXBlbmRlbmN5KCdjcnlwdC9zaGEyXzY0Yml0X3Rlc3QuanMnLCBbJ2dvb2cuY3J5cHQuU2hhMl82NGJpdF90ZXN0J10sIFsnZ29vZy5hcnJheScsICdnb29nLmNyeXB0JywgJ2dvb2cuY3J5cHQuU2hhMzg0JywgJ2dvb2cuY3J5cHQuU2hhNTEyJywgJ2dvb2cuY3J5cHQuU2hhNTEyXzI1NicsICdnb29nLmNyeXB0Lmhhc2hUZXN0ZXInLCAnZ29vZy50ZXN0aW5nLnRlc3RTdWl0ZScsICdnb29nLnVzZXJBZ2VudCddLCB7J2xhbmcnOiAnZXM2JywgJ21vZHVsZSc6ICdnb29nJ30pOwpnb29nLmFkZERlcGVuZGVuY3koJ2NyeXB0L3NoYTM4NC5qcycsIFsnZ29vZy5jcnlwdC5TaGEzODQnXSwgWydnb29nLmNyeXB0LlNoYTJfNjRiaXQnXSwge30pOwpnb29nLmFkZERlcGVuZGVuY3koJ2NyeXB0L3NoYTUxMi5qcycsIFsnZ29vZy5jcnlwdC5TaGE1MTInXSwgWydnb29nLmNyeXB0LlNoYTJfNjRiaXQnXSwge30pOwpnb29nLmFkZERlcGVuZGVuY3koJ2NyeXB0L3NoYTUxMl8yNTYuanMnLCBbJ2dvb2cuY3J5cHQuU2hhNTEyXzI1NiddLCBbJ2dvb2cuY3J5cHQuU2hhMl82NGJpdCddLCB7fSk7Cmdvb2cuYWRkRGVwZW5kZW5jeSgnY3Nzb20vY3Nzb20uanMnLCBbJ2dvb2cuY3Nzb20nLCAnZ29vZy5jc3NvbS5Dc3NSdWxlVHlwZSddLCBbJ2dvb2cuYXJyYXknLCAnZ29vZy5kb20nLCAnZ29vZy5kb20uVGFnTmFtZSddLCB7fSk7Cmdvb2cuYWRkRGVwZW5kZW5jeSgnY3Nzb20vY3Nzb21fdGVzdC5qcycsIFsnZ29vZy5jc3NvbVRlc3QnXSwgWydnb29nLmFycmF5JywgJ2dvb2cuY3Nzb20nLCAnZ29vZy5jc3NvbS5Dc3NSdWxlVHlwZScsICdnb29nLnRlc3RpbmcudGVzdFN1aXRlJywgJ2dvb2cudXNlckFnZW50J10sIHsnbGFuZyc6ICdlczYnLCAnbW9kdWxlJzogJ2dvb2cnfSk7Cmdvb2cuYWRkRGVwZW5kZW5jeSgnY3Nzb20vaWZyYW1lL3N0eWxlLmpzJywgWydnb29nLmNzc29tLmlmcmFtZS5zdHlsZSddLCBbJ2dvb2cuYXNzZXJ0cycsICdnb29nLmNzc29tJywgJ2dvb2cuZG9tJywgJ2dvb2cuZG9tLk5vZGVUeXBlJywgJ2dvb2cuZG9tLlRhZ05hbWUnLCAnZ29vZy5kb20uY2xhc3NsaXN0JywgJ2dvb2cuc3RyaW5nJywgJ2dvb2cuc3R5bGUnLCAnZ29vZy51c2VyQWdlbnQnXSwge30pOwpnb29nLmFkZERlcGVuZGVuY3koJ2Nzc29tL2lmcmFtZS9zdHlsZV90ZXN0LmpzJywgWydnb29nLmNzc29tLmlmcmFtZS5zdHlsZVRlc3QnXSwgWydnb29nLmNzc29tJywgJ2dvb2cuY3Nzb20uaWZyYW1lLnN0eWxlJywgJ2dvb2cuZG9tJywgJ2dvb2cuZG9tLkRvbUhlbHBlcicsICdnb29nLmRvbS5UYWdOYW1lJywgJ2dvb2cudGVzdGluZy50ZXN0U3VpdGUnLCAnZ29vZy51c2VyQWdlbnQnXSwgeydsYW5nJzogJ2VzNicsICdtb2R1bGUnOiAnZ29vZyd9KTsKZ29vZy5hZGREZXBlbmRlbmN5KCdkYXRhc291cmNlL2RhdGFtYW5hZ2VyLmpzJywgWydnb29nLmRzLkRhdGFNYW5hZ2VyJ10sIFsnZ29vZy5kcy5CYXNpY05vZGVMaXN0JywgJ2dvb2cuZHMuRGF0YU5vZGUnLCAnZ29vZy5kcy5FeHByJywgJ2dvb2cub2JqZWN0JywgJ2dvb2cuc3RyaW5nJywgJ2dvb2cuc3RydWN0cycsICdnb29nLnN0cnVjdHMuTWFwJ10sIHt9KTsKZ29vZy5hZGREZXBlbmRlbmN5KCdkYXRhc291cmNlL2RhdGFzb3VyY2UuanMnLCBbJ2dvb2cuZHMuQmFzZURhdGFOb2RlJywgJ2dvb2cuZHMuQmFzaWNOb2RlTGlzdCcsICdnb29nLmRzLkRhdGFOb2RlJywgJ2dvb2cuZHMuRGF0YU5vZGVMaXN0JywgJ2dvb2cuZHMuRW1wdHlOb2RlTGlzdCcsICdnb29nLmRzLkxvYWRTdGF0ZScsICdnb29nLmRzLlNvcnRlZE5vZGVMaXN0JywgJ2dvb2cuZHMuVXRpbCcsICdnb29nLmRzLmxvZ2dlciddLCBbJ2dvb2cuYXJyYXknLCAnZ29vZy5sb2cnXSwge30pOwpnb29nLmFkZERlcGVuZGVuY3koJ2RhdGFzb3VyY2UvZGF0YXNvdXJjZV90ZXN0LmpzJywgWydnb29nLmRzLkpzRGF0YVNvdXJjZVRlc3QnXSwgWydnb29nLmRvbS54bWwnLCAnZ29vZy5kcy5EYXRhTWFuYWdlcicsICdnb29nLmRzLkpzRGF0YVNvdXJjZScsICdnb29nLmRzLlNvcnRlZE5vZGVMaXN0JywgJ2dvb2cuZHMuWG1sRGF0YVNvdXJjZScsICdnb29nLnRlc3RpbmcudGVzdFN1aXRlJ10sIHsnbGFuZyc6ICdlczYnLCAnbW9kdWxlJzogJ2dvb2cnfSk7Cmdvb2cuYWRkRGVwZW5kZW5jeSgnZGF0YXNvdXJjZS9leHByLmpzJywgWydnb29nLmRzLkV4cHInXSwgWydnb29nLmRzLkJhc2ljTm9kZUxpc3QnLCAnZ29vZy5kcy5FbXB0eU5vZGVMaXN0JywgJ2dvb2cuc3RyaW5nJ10sIHt9KTsKZ29vZy5hZGREZXBlbmRlbmN5KCdkYXRhc291cmNlL2V4cHJfdGVzdC5qcycsIFsnZ29vZy5kcy5FeHByVGVzdCddLCBbJ2dvb2cuZHMuRGF0YU1hbmFnZXInLCAnZ29vZy5kcy5FeHByJywgJ2dvb2cuZHMuSnNEYXRhU291cmNlJywgJ2dvb2cudGVzdGluZy50ZXN0U3VpdGUnXSwgeydsYW5nJzogJ2VzNicsICdtb2R1bGUnOiAnZ29vZyd9KTsKZ29vZy5hZGREZXBlbmRlbmN5KCdkYXRhc291cmNlL2Zhc3RkYXRhbm9kZS5qcycsIFsnZ29vZy5kcy5BYnN0cmFjdEZhc3REYXRhTm9kZScsICdnb29nLmRzLkZhc3REYXRhTm9kZScsICdnb29nLmRzLkZhc3RMaXN0Tm9kZScsICdnb29nLmRzLlByaW1pdGl2ZUZhc3REYXRhTm9kZSddLCBbJ2dvb2cuZHMuRGF0YU1hbmFnZXInLCAnZ29vZy5kcy5EYXRhTm9kZUxpc3QnLCAnZ29vZy5kcy5FbXB0eU5vZGVMaXN0JywgJ2dvb2cuc3RyaW5nJ10sIHt9KTsKZ29vZy5hZGREZXBlbmRlbmN5KCdkYXRhc291cmNlL2Zhc3RkYXRhbm9kZV90ZXN0LmpzJywgWydnb29nLmRzLkZhc3REYXRhTm9kZVRlc3QnXSwgWydnb29nLmFycmF5JywgJ2dvb2cuZHMuRGF0YU1hbmFnZXInLCAnZ29vZy5kcy5FeHByJywgJ2dvb2cuZHMuRmFzdERhdGFOb2RlJywgJ2dvb2cudGVzdGluZy50ZXN0U3VpdGUnXSwgeydsYW5nJzogJ2VzNicsICdtb2R1bGUnOiAnZ29vZyd9KTsKZ29vZy5hZGREZXBlbmRlbmN5KCdkYXRhc291cmNlL2pzZGF0YXNvdXJjZS5qcycsIFsnZ29vZy5kcy5Kc0RhdGFTb3VyY2UnLCAnZ29vZy5kcy5Kc1Byb3BlcnR5RGF0YVNvdXJjZSddLCBbJ2dvb2cuZHMuQmFzZURhdGFOb2RlJywgJ2dvb2cuZHMuQmFzaWNOb2RlTGlzdCcsICdnb29nLmRzLkRhdGFNYW5hZ2VyJywgJ2dvb2cuZHMuRGF0YU5vZGUnLCAnZ29vZy5kcy5FbXB0eU5vZGVMaXN0JywgJ2dvb2cuZHMuTG9hZFN0YXRlJ10sIHt9KTsKZ29vZy5hZGREZXBlbmRlbmN5KCdkYXRhc291cmNlL2pzb25kYXRhc291cmNlLmpzJywgWydnb29nLmRzLkpzb25EYXRhU291cmNlJ10sIFsnZ29vZy5kb20nLCAnZ29vZy5kb20uVGFnTmFtZScsICdnb29nLmRvbS5zYWZlJywgJ2dvb2cuZHMuRGF0YU1hbmFnZXInLCAnZ29vZy5kcy5Kc0RhdGFTb3VyY2UnLCAnZ29vZy5kcy5Mb2FkU3RhdGUnLCAnZ29vZy5kcy5sb2dnZXInLCAnZ29vZy5sb2cnXSwge30pOwpnb29nLmFkZERlcGVuZGVuY3koJ2RhdGFzb3VyY2UvanN4bWxodHRwZGF0YXNvdXJjZS5qcycsIFsnZ29vZy5kcy5Kc1htbEh0dHBEYXRhU291cmNlJ10sIFsnZ29vZy5VcmknLCAnZ29vZy5kcy5EYXRhTWFuYWdlcicsICdnb29nLmRzLkZhc3REYXRhTm9kZScsICdnb29nLmRzLkxvYWRTdGF0ZScsICdnb29nLmRzLmxvZ2dlcicsICdnb29nLmV2ZW50cycsICdnb29nLmxvZycsICdnb29nLm5ldC5FdmVudFR5cGUnLCAnZ29vZy5uZXQuWGhySW8nXSwge30pOwpnb29nLmFkZERlcGVuZGVuY3koJ2RhdGFzb3VyY2UvanN4bWxodHRwZGF0YXNvdXJjZV90ZXN0LmpzJywgWydnb29nLmRzLkpzWG1sSHR0cERhdGFTb3VyY2VUZXN0J10sIFsnZ29vZy5kcy5Kc1htbEh0dHBEYXRhU291cmNlJywgJ2dvb2cudGVzdGluZy5UZXN0UXVldWUnLCAnZ29vZy50ZXN0aW5nLm5ldC5YaHJJbycsICdnb29nLnRlc3RpbmcudGVzdFN1aXRlJ10sIHsnbGFuZyc6ICdlczYnLCAnbW9kdWxlJzogJ2dvb2cnfSk7Cmdvb2cuYWRkRGVwZW5kZW5jeSgnZGF0YXNvdXJjZS94bWxkYXRhc291cmNlLmpzJywgWydnb29nLmRzLlhtbERhdGFTb3VyY2UnLCAnZ29vZy5kcy5YbWxIdHRwRGF0YVNvdXJjZSddLCBbJ2dvb2cuVXJpJywgJ2dvb2cuZG9tLk5vZGVUeXBlJywgJ2dvb2cuZG9tLnhtbCcsICdnb29nLmRzLkJhc2ljTm9kZUxpc3QnLCAnZ29vZy5kcy5EYXRhTWFuYWdlcicsICdnb29nLmRzLkRhdGFOb2RlJywgJ2dvb2cuZHMuTG9hZFN0YXRlJywgJ2dvb2cuZHMubG9nZ2VyJywgJ2dvb2cubG9nJywgJ2dvb2cubmV0LlhocklvJywgJ2dvb2cuc3RyaW5nJ10sIHt9KTsKZ29vZy5hZGREZXBlbmRlbmN5KCdkYXRlL2RhdGUuanMnLCBbJ2dvb2cuZGF0ZScsICdnb29nLmRhdGUuRGF0ZScsICdnb29nLmRhdGUuRGF0ZVRpbWUnLCAnZ29vZy5kYXRlLkludGVydmFsJywgJ2dvb2cuZGF0ZS5tb250aCcsICdnb29nLmRhdGUud2Vla0RheSddLCBbJ2dvb2cuYXNzZXJ0cycsICdnb29nLmRhdGUuRGF0ZUxpa2UnLCAnZ29vZy5pMThuLkRhdGVUaW1lU3ltYm9scycsICdnb29nLnN0cmluZyddLCB7fSk7Cmdvb2cuYWRkRGVwZW5kZW5jeSgnZGF0ZS9kYXRlX3Rlc3QuanMnLCBbJ2dvb2cuZGF0ZVRlc3QnXSwgWydnb29nLmFycmF5JywgJ2dvb2cuZGF0ZScsICdnb29nLmRhdGUuRGF0ZScsICdnb29nLmRhdGUuRGF0ZVRpbWUnLCAnZ29vZy5kYXRlLkludGVydmFsJywgJ2dvb2cuZGF0ZS5tb250aCcsICdnb29nLmRhdGUud2Vla0RheScsICdnb29nLmkxOG4uRGF0ZVRpbWVTeW1ib2xzJywgJ2dvb2cudGVzdGluZy5FeHBlY3RlZEZhaWx1cmVzJywgJ2dvb2cudGVzdGluZy50ZXN0U3VpdGUnLCAnZ29vZy51c2VyQWdlbnQnLCAnZ29vZy51c2VyQWdlbnQucGxhdGZvcm0nLCAnZ29vZy51c2VyQWdlbnQucHJvZHVjdCcsICdnb29nLnVzZXJBZ2VudC5wcm9kdWN0LmlzVmVyc2lvbiddLCB7J2xhbmcnOiAnZXM2JywgJ21vZHVsZSc6ICdnb29nJ30pOwpnb29nLmFkZERlcGVuZGVuY3koJ2RhdGUvZGF0ZWxpa2UuanMnLCBbJ2dvb2cuZGF0ZS5EYXRlTGlrZSddLCBbXSwge30pOwpnb29nLmFkZERlcGVuZGVuY3koJ2RhdGUvZGF0ZXJhbmdlLmpzJywgWydnb29nLmRhdGUuRGF0ZVJhbmdlJywgJ2dvb2cuZGF0ZS5EYXRlUmFuZ2UuSXRlcmF0b3InLCAnZ29vZy5kYXRlLkRhdGVSYW5nZS5TdGFuZGFyZERhdGVSYW5nZUtleXMnXSwgWydnb29nLmRhdGUuRGF0ZScsICdnb29nLmRhdGUuSW50ZXJ2YWwnLCAnZ29vZy5pdGVyLkl0ZXJhdG9yJywgJ2dvb2cuaXRlci5TdG9wSXRlcmF0aW9uJ10sIHt9KTsKZ29vZy5hZGREZXBlbmRlbmN5KCdkYXRlL2RhdGVyYW5nZV90ZXN0LmpzJywgWydnb29nLmRhdGUuRGF0ZVJhbmdlVGVzdCddLCBbJ2dvb2cuZGF0ZS5EYXRlJywgJ2dvb2cuZGF0ZS5EYXRlUmFuZ2UnLCAnZ29vZy5kYXRlLkludGVydmFsJywgJ2dvb2cuaTE4bi5EYXRlVGltZVN5bWJvbHMnLCAnZ29vZy50ZXN0aW5nLnRlc3RTdWl0ZSddLCB7J2xhbmcnOiAnZXM2JywgJ21vZHVsZSc6ICdnb29nJ30pOwpnb29nLmFkZERlcGVuZGVuY3koJ2RhdGUvZHVyYXRpb24uanMnLCBbJ2dvb2cuZGF0ZS5kdXJhdGlvbiddLCBbJ2dvb2cuaTE4bi5EYXRlVGltZUZvcm1hdCcsICdnb29nLmkxOG4uTWVzc2FnZUZvcm1hdCddLCB7fSk7Cmdvb2cuYWRkRGVwZW5kZW5jeSgnZGF0ZS9kdXJhdGlvbl90ZXN0LmpzJywgWydnb29nLmRhdGUuZHVyYXRpb25UZXN0J10sIFsnZ29vZy5kYXRlLmR1cmF0aW9uJywgJ2dvb2cuaTE4bi5EYXRlVGltZUZvcm1hdCcsICdnb29nLmkxOG4uRGF0ZVRpbWVTeW1ib2xzJywgJ2dvb2cuaTE4bi5EYXRlVGltZVN5bWJvbHNfYm4nLCAnZ29vZy5pMThuLkRhdGVUaW1lU3ltYm9sc19lbicsICdnb29nLmkxOG4uRGF0ZVRpbWVTeW1ib2xzX2ZhJywgJ2dvb2cudGVzdGluZy5Qcm9wZXJ0eVJlcGxhY2VyJywgJ2dvb2cudGVzdGluZy50ZXN0U3VpdGUnXSwgeydsYW5nJzogJ2VzNicsICdtb2R1bGUnOiAnZ29vZyd9KTsKZ29vZy5hZGREZXBlbmRlbmN5KCdkYXRlL3JlbGF0aXZlLmpzJywgWydnb29nLmRhdGUucmVsYXRpdmUnLCAnZ29vZy5kYXRlLnJlbGF0aXZlLlRpbWVEZWx0YUZvcm1hdHRlcicsICdnb29nLmRhdGUucmVsYXRpdmUuVW5pdCddLCBbJ2dvb2cuaTE4bi5EYXRlVGltZUZvcm1hdCcsICdnb29nLmkxOG4uRGF0ZVRpbWVQYXR0ZXJucycsICdnb29nLmkxOG4uUmVsYXRpdmVEYXRlVGltZUZvcm1hdCddLCB7fSk7Cmdvb2cuYWRkRGVwZW5kZW5jeSgnZGF0ZS9yZWxhdGl2ZV90ZXN0LmpzJywgWydnb29nLmRhdGUucmVsYXRpdmVUZXN0J10sIFsnZ29vZy5kYXRlLnJlbGF0aXZlQ29tbW9uVGVzdHMnXSwgeydsYW5nJzogJ2VzNicsICdtb2R1bGUnOiAnZ29vZyd9KTsKZ29vZy5hZGREZXBlbmRlbmN5KCdkYXRlL3JlbGF0aXZlY29tbW9udGVzdHMuanMnLCBbJ2dvb2cuZGF0ZS5yZWxhdGl2ZUNvbW1vblRlc3RzJ10sIFsnZ29vZy5kYXRlLkRhdGVUaW1lJywgJ2dvb2cuZGF0ZS5yZWxhdGl2ZScsICdnb29nLmkxOG4uRGF0ZVRpbWVGb3JtYXQnLCAnZ29vZy5pMThuLkRhdGVUaW1lUGF0dGVybnNfYXInLCAnZ29vZy5pMThuLkRhdGVUaW1lUGF0dGVybnNfYm4nLCAnZ29vZy5pMThuLkRhdGVUaW1lUGF0dGVybnNfZXMnLCAnZ29vZy5pMThuLkRhdGVUaW1lUGF0dGVybnNfZmEnLCAnZ29vZy5pMThuLkRhdGVUaW1lUGF0dGVybnNfZnInLCAnZ29vZy5pMThuLkRhdGVUaW1lUGF0dGVybnNfbm8nLCAnZ29vZy5pMThuLkRhdGVUaW1lU3ltYm9sc19hcicsICdnb29nLmkxOG4uRGF0ZVRpbWVTeW1ib2xzX2JuJywgJ2dvb2cuaTE4bi5EYXRlVGltZVN5bWJvbHNfZXMnLCAnZ29vZy5pMThuLkRhdGVUaW1lU3ltYm9sc19mYScsICdnb29nLmkxOG4uRGF0ZVRpbWVTeW1ib2xzX2ZyJywgJ2dvb2cuaTE4bi5EYXRlVGltZVN5bWJvbHNfbm8nLCAnZ29vZy5pMThuLk51bWJlckZvcm1hdFN5bWJvbHNfYm4nLCAnZ29vZy5pMThuLk51bWJlckZvcm1hdFN5bWJvbHNfZW4nLCAnZ29vZy5pMThuLk51bWJlckZvcm1hdFN5bWJvbHNfZmEnLCAnZ29vZy5pMThuLk51bWJlckZvcm1hdFN5bWJvbHNfbm8nLCAnZ29vZy5pMThuLnJlbGF0aXZlRGF0ZVRpbWVTeW1ib2xzJywgJ2dvb2cudGVzdGluZy5Qcm9wZXJ0eVJlcGxhY2VyJywgJ2dvb2cudGVzdGluZy5qc3VuaXQnXSwgeydsYW5nJzogJ2VzNid9KTsKZ29vZy5hZGREZXBlbmRlbmN5KCdkYXRlL3V0Y2RhdGV0aW1lLmpzJywgWydnb29nLmRhdGUuVXRjRGF0ZVRpbWUnXSwgWydnb29nLmRhdGUnLCAnZ29vZy5kYXRlLkRhdGUnLCAnZ29vZy5kYXRlLkRhdGVUaW1lJywgJ2dvb2cuZGF0ZS5JbnRlcnZhbCddLCB7fSk7Cmdvb2cuYWRkRGVwZW5kZW5jeSgnZGF0ZS91dGNkYXRldGltZV90ZXN0LmpzJywgWydnb29nLmRhdGUuVXRjRGF0ZVRpbWVUZXN0J10sIFsnZ29vZy5kYXRlLkludGVydmFsJywgJ2dvb2cuZGF0ZS5VdGNEYXRlVGltZScsICdnb29nLmRhdGUubW9udGgnLCAnZ29vZy5kYXRlLndlZWtEYXknLCAnZ29vZy50ZXN0aW5nLnRlc3RTdWl0ZSddLCB7J2xhbmcnOiAnZXM2JywgJ21vZHVsZSc6ICdnb29nJ30pOwpnb29nLmFkZERlcGVuZGVuY3koJ2RiL2N1cnNvci5qcycsIFsnZ29vZy5kYi5DdXJzb3InXSwgWydnb29nLmFzeW5jLkRlZmVycmVkJywgJ2dvb2cuZGIuRXJyb3InLCAnZ29vZy5kYi5LZXlSYW5nZScsICdnb29nLmRlYnVnJywgJ2dvb2cuZXZlbnRzLkV2ZW50VGFyZ2V0J10sIHt9KTsKZ29vZy5hZGREZXBlbmRlbmN5KCdkYi9kYi5qcycsIFsnZ29vZy5kYicsICdnb29nLmRiLkJsb2NrZWRDYWxsYmFjaycsICdnb29nLmRiLlVwZ3JhZGVOZWVkZWRDYWxsYmFjayddLCBbJ2dvb2cuYXNzZXJ0cycsICdnb29nLmFzeW5jLkRlZmVycmVkJywgJ2dvb2cuZGIuRXJyb3InLCAnZ29vZy5kYi5JbmRleGVkRGInLCAnZ29vZy5kYi5UcmFuc2FjdGlvbiddLCB7fSk7Cmdvb2cuYWRkRGVwZW5kZW5jeSgnZGIvZGJfdGVzdC5qcycsIFsnZ29vZy5kYlRlc3QnXSwgWydnb29nLlByb21pc2UnLCAnZ29vZy5hcnJheScsICdnb29nLmRiJywgJ2dvb2cuZGIuQ3Vyc29yJywgJ2dvb2cuZGIuRXJyb3InLCAnZ29vZy5kYi5JbmRleGVkRGInLCAnZ29vZy5kYi5LZXlSYW5nZScsICdnb29nLmRiLlRyYW5zYWN0aW9uJywgJ2dvb2cuZXZlbnRzJywgJ2dvb2cudGVzdGluZy5Qcm9wZXJ0eVJlcGxhY2VyJywgJ2dvb2cudGVzdGluZy5UZXN0Q2FzZScsICdnb29nLnRlc3RpbmcuYXNzZXJ0cycsICdnb29nLnRlc3RpbmcudGVzdFN1aXRlJywgJ2dvb2cudXNlckFnZW50LnByb2R1Y3QnXSwgeydsYW5nJzogJ2VzNicsICdtb2R1bGUnOiAnZ29vZyd9KTsKZ29vZy5hZGREZXBlbmRlbmN5KCdkYi9lcnJvci5qcycsIFsnZ29vZy5kYi5Eb21FcnJvckxpa2UnLCAnZ29vZy5kYi5FcnJvcicsICdnb29nLmRiLkVycm9yLkVycm9yQ29kZScsICdnb29nLmRiLkVycm9yLkVycm9yTmFtZScsICdnb29nLmRiLkVycm9yLlZlcnNpb25DaGFuZ2VCbG9ja2VkRXJyb3InXSwgWydnb29nLmFzc2VydHMnLCAnZ29vZy5kZWJ1Zy5FcnJvciddLCB7fSk7Cmdvb2cuYWRkRGVwZW5kZW5jeSgnZGIvaW5kZXguanMnLCBbJ2dvb2cuZGIuSW5kZXgnXSwgWydnb29nLmFzeW5jLkRlZmVycmVkJywgJ2dvb2cuZGIuQ3Vyc29yJywgJ2dvb2cuZGIuRXJyb3InLCAnZ29vZy5kYi5LZXlSYW5nZScsICdnb29nLmRlYnVnJ10sIHt9KTsKZ29vZy5hZGREZXBlbmRlbmN5KCdkYi9pbmRleGVkZGIuanMnLCBbJ2dvb2cuZGIuSW5kZXhlZERiJ10sIFsnZ29vZy5kYi5FcnJvcicsICdnb29nLmRiLk9iamVjdFN0b3JlJywgJ2dvb2cuZGIuVHJhbnNhY3Rpb24nLCAnZ29vZy5ldmVudHMuRXZlbnQnLCAnZ29vZy5ldmVudHMuRXZlbnRIYW5kbGVyJywgJ2dvb2cuZXZlbnRzLkV2ZW50VGFyZ2V0J10sIHsnbGFuZyc6ICdlczYnfSk7Cmdvb2cuYWRkRGVwZW5kZW5jeSgnZGIva2V5cmFuZ2UuanMnLCBbJ2dvb2cuZGIuS2V5UmFuZ2UnXSwgW10sIHt9KTsKZ29vZy5hZGREZXBlbmRlbmN5KCdkYi9vYmplY3RzdG9yZS5qcycsIFsnZ29vZy5kYi5PYmplY3RTdG9yZSddLCBbJ2dvb2cuYXN5bmMuRGVmZXJyZWQnLCAnZ29vZy5kYi5DdXJzb3InLCAnZ29vZy5kYi5FcnJvcicsICdnb29nLmRiLkluZGV4JywgJ2dvb2cuZGIuS2V5UmFuZ2UnLCAnZ29vZy5kZWJ1ZyddLCB7fSk7Cmdvb2cuYWRkRGVwZW5kZW5jeSgnZGIvdHJhbnNhY3Rpb24uanMnLCBbJ2dvb2cuZGIuVHJhbnNhY3Rpb24nLCAnZ29vZy5kYi5UcmFuc2FjdGlvbi5UcmFuc2FjdGlvbk1vZGUnXSwgWydnb29nLmFzeW5jLkRlZmVycmVkJywgJ2dvb2cuZGIuRXJyb3InLCAnZ29vZy5kYi5PYmplY3RTdG9yZScsICdnb29nLmV2ZW50cycsICdnb29nLmV2ZW50cy5FdmVudEhhbmRsZXInLCAnZ29vZy5ldmVudHMuRXZlbnRUYXJnZXQnXSwge30pOwpnb29nLmFkZERlcGVuZGVuY3koJ2RlYnVnL2NvbnNvbGUuanMnLCBbJ2dvb2cuZGVidWcuQ29uc29sZSddLCBbJ2dvb2cuZGVidWcuTG9nTWFuYWdlcicsICdnb29nLmRlYnVnLkxvZ2dlcicsICdnb29nLmRlYnVnLlRleHRGb3JtYXR0ZXInXSwge30pOwpnb29nLmFkZERlcGVuZGVuY3koJ2RlYnVnL2NvbnNvbGVfdGVzdC5qcycsIFsnZ29vZy5kZWJ1Zy5Db25zb2xlVGVzdCddLCBbJ2dvb2cuZGVidWcuQ29uc29sZScsICdnb29nLmRlYnVnLkxvZ1JlY29yZCcsICdnb29nLmRlYnVnLkxvZ2dlcicsICdnb29nLnRlc3RpbmcucmVjb3JkRnVuY3Rpb24nLCAnZ29vZy50ZXN0aW5nLnRlc3RTdWl0ZSddLCB7J2xhbmcnOiAnZXM2JywgJ21vZHVsZSc6ICdnb29nJ30pOwpnb29nLmFkZERlcGVuZGVuY3koJ2RlYnVnL2RlYnVnLmpzJywgWydnb29nLmRlYnVnJ10sIFsnZ29vZy5hcnJheScsICdnb29nLmRlYnVnLmVycm9yY29udGV4dCcsICdnb29nLnVzZXJBZ2VudCddLCB7fSk7Cmdvb2cuYWRkRGVwZW5kZW5jeSgnZGVidWcvZGVidWdfdGVzdC5qcycsIFsnZ29vZy5kZWJ1Z1Rlc3QnXSwgWydnb29nLmRlYnVnJywgJ2dvb2cuZGVidWcuZXJyb3Jjb250ZXh0JywgJ2dvb2cudGVzdGluZy50ZXN0U3VpdGUnXSwgeydsYW5nJzogJ2VzNicsICdtb2R1bGUnOiAnZ29vZyd9KTsKZ29vZy5hZGREZXBlbmRlbmN5KCdkZWJ1Zy9kZWJ1Z3dpbmRvdy5qcycsIFsnZ29vZy5kZWJ1Zy5EZWJ1Z1dpbmRvdyddLCBbJ2dvb2cuZGVidWcuSHRtbEZvcm1hdHRlcicsICdnb29nLmRlYnVnLkxvZ01hbmFnZXInLCAnZ29vZy5kZWJ1Zy5Mb2dnZXInLCAnZ29vZy5kb20uc2FmZScsICdnb29nLmh0bWwuU2FmZUh0bWwnLCAnZ29vZy5odG1sLlNhZmVTdHlsZVNoZWV0JywgJ2dvb2cuc3RyaW5nLkNvbnN0JywgJ2dvb2cuc3RydWN0cy5DaXJjdWxhckJ1ZmZlcicsICdnb29nLnVzZXJBZ2VudCddLCB7fSk7Cmdvb2cuYWRkRGVwZW5kZW5jeSgnZGVidWcvZGVidWd3aW5kb3dfdGVzdC5qcycsIFsnZ29vZy5kZWJ1Zy5EZWJ1Z1dpbmRvd1Rlc3QnXSwgWydnb29nLmRlYnVnLkRlYnVnV2luZG93JywgJ2dvb2cudGVzdGluZy50ZXN0U3VpdGUnXSwgeydsYW5nJzogJ2VzNicsICdtb2R1bGUnOiAnZ29vZyd9KTsKZ29vZy5hZGREZXBlbmRlbmN5KCdkZWJ1Zy9kZXZjc3MvZGV2Y3NzLmpzJywgWydnb29nLmRlYnVnLkRldkNzcycsICdnb29nLmRlYnVnLkRldkNzcy5Vc2VyQWdlbnQnXSwgWydnb29nLmFzc2VydHMnLCAnZ29vZy5jc3NvbScsICdnb29nLmRvbS5jbGFzc2xpc3QnLCAnZ29vZy5ldmVudHMnLCAnZ29vZy5ldmVudHMuRXZlbnRUeXBlJywgJ2dvb2cuc3RyaW5nJywgJ2dvb2cudXNlckFnZW50J10sIHt9KTsKZ29vZy5hZGREZXBlbmRlbmN5KCdkZWJ1Zy9kZXZjc3MvZGV2Y3NzX3Rlc3QuanMnLCBbJ2dvb2cuZGVidWcuRGV2Q3NzVGVzdCddLCBbJ2dvb2cuZGVidWcuRGV2Q3NzJywgJ2dvb2cuc3R5bGUnLCAnZ29vZy50ZXN0aW5nLnRlc3RTdWl0ZSddLCB7J2xhbmcnOiAnZXM2JywgJ21vZHVsZSc6ICdnb29nJ30pOwpnb29nLmFkZERlcGVuZGVuY3koJ2RlYnVnL2RldmNzcy9kZXZjc3NydW5uZXIuanMnLCBbJ2dvb2cuZGVidWcuZGV2Q3NzUnVubmVyJ10sIFsnZ29vZy5kZWJ1Zy5EZXZDc3MnXSwge30pOwpnb29nLmFkZERlcGVuZGVuY3koJ2RlYnVnL2RpdmNvbnNvbGUuanMnLCBbJ2dvb2cuZGVidWcuRGl2Q29uc29sZSddLCBbJ2dvb2cuZGVidWcuSHRtbEZvcm1hdHRlcicsICdnb29nLmRlYnVnLkxvZ01hbmFnZXInLCAnZ29vZy5kb20uRG9tSGVscGVyJywgJ2dvb2cuZG9tLlRhZ05hbWUnLCAnZ29vZy5kb20uc2FmZScsICdnb29nLmh0bWwuU2FmZUh0bWwnLCAnZ29vZy5odG1sLlNhZmVTdHlsZVNoZWV0JywgJ2dvb2cuc3RyaW5nLkNvbnN0JywgJ2dvb2cuc3R5bGUnXSwge30pOwpnb29nLmFkZERlcGVuZGVuY3koJ2RlYnVnL2VuaGFuY2VlcnJvcl90ZXN0LmpzJywgWydnb29nLmRlYnVnRW5oYW5jZUVycm9yVGVzdCddLCBbJ2dvb2cuZGVidWcnLCAnZ29vZy50ZXN0aW5nLnRlc3RTdWl0ZSddLCB7J2xhbmcnOiAnZXM2JywgJ21vZHVsZSc6ICdnb29nJ30pOwpnb29nLmFkZERlcGVuZGVuY3koJ2RlYnVnL2VudHJ5cG9pbnRyZWdpc3RyeS5qcycsIFsnZ29vZy5kZWJ1Zy5FbnRyeVBvaW50TW9uaXRvcicsICdnb29nLmRlYnVnLmVudHJ5UG9pbnRSZWdpc3RyeSddLCBbJ2dvb2cuYXNzZXJ0cyddLCB7fSk7Cmdvb2cuYWRkRGVwZW5kZW5jeSgnZGVidWcvZW50cnlwb2ludHJlZ2lzdHJ5X3Rlc3QuanMnLCBbJ2dvb2cuZGVidWcuZW50cnlQb2ludFJlZ2lzdHJ5VGVzdCddLCBbJ2dvb2cuZGVidWcuRXJyb3JIYW5kbGVyJywgJ2dvb2cuZGVidWcuZW50cnlQb2ludFJlZ2lzdHJ5JywgJ2dvb2cudGVzdGluZy50ZXN0U3VpdGUnXSwgeydsYW5nJzogJ2VzNicsICdtb2R1bGUnOiAnZ29vZyd9KTsKZ29vZy5hZGREZXBlbmRlbmN5KCdkZWJ1Zy9lcnJvci5qcycsIFsnZ29vZy5kZWJ1Zy5FcnJvciddLCBbXSwgeydsYW5nJzogJ2VzNid9KTsKZ29vZy5hZGREZXBlbmRlbmN5KCdkZWJ1Zy9lcnJvcl90ZXN0LmpzJywgWydnb29nLmRlYnVnLkVycm9yVGVzdCddLCBbJ2dvb2cuZGVidWcuRXJyb3InLCAnZ29vZy50ZXN0aW5nLkV4cGVjdGVkRmFpbHVyZXMnLCAnZ29vZy50ZXN0aW5nLnRlc3RTdWl0ZScsICdnb29nLnVzZXJBZ2VudCcsICdnb29nLnVzZXJBZ2VudC5wcm9kdWN0J10sIHsnbGFuZyc6ICdlczYnLCAnbW9kdWxlJzogJ2dvb2cnfSk7Cmdvb2cuYWRkRGVwZW5kZW5jeSgnZGVidWcvZXJyb3Jjb250ZXh0LmpzJywgWydnb29nLmRlYnVnLmVycm9yY29udGV4dCddLCBbXSwge30pOwpnb29nLmFkZERlcGVuZGVuY3koJ2RlYnVnL2Vycm9yY29udGV4dF90ZXN0LmpzJywgWydnb29nLmRlYnVnLmVycm9yY29udGV4dFRlc3QnXSwgWydnb29nLmRlYnVnLmVycm9yY29udGV4dCcsICdnb29nLnRlc3RpbmcudGVzdFN1aXRlJ10sIHsnbGFuZyc6ICdlczYnLCAnbW9kdWxlJzogJ2dvb2cnfSk7Cmdvb2cuYWRkRGVwZW5kZW5jeSgnZGVidWcvZXJyb3JoYW5kbGVyLmpzJywgWydnb29nLmRlYnVnLkVycm9ySGFuZGxlcicsICdnb29nLmRlYnVnLkVycm9ySGFuZGxlci5Qcm90ZWN0ZWRGdW5jdGlvbkVycm9yJ10sIFsnZ29vZy5EaXNwb3NhYmxlJywgJ2dvb2cuYXNzZXJ0cycsICdnb29nLmRlYnVnJywgJ2dvb2cuZGVidWcuRW50cnlQb2ludE1vbml0b3InLCAnZ29vZy5kZWJ1Zy5FcnJvcicsICdnb29nLmRlYnVnLlRyYWNlJ10sIHsnbGFuZyc6ICdlczYnfSk7Cmdvb2cuYWRkRGVwZW5kZW5jeSgnZGVidWcvZXJyb3JoYW5kbGVyX2FzeW5jX3Rlc3QuanMnLCBbJ2dvb2cuZGVidWcuRXJyb3JIYW5kbGVyQXN5bmNUZXN0J10sIFsnZ29vZy5Qcm9taXNlJywgJ2dvb2cuZGVidWcuRXJyb3JIYW5kbGVyJywgJ2dvb2cudGVzdGluZy50ZXN0U3VpdGUnLCAnZ29vZy51c2VyQWdlbnQnXSwgeydsYW5nJzogJ2VzOCcsICdtb2R1bGUnOiAnZ29vZyd9KTsKZ29vZy5hZGREZXBlbmRlbmN5KCdkZWJ1Zy9lcnJvcmhhbmRsZXJfdGVzdC5qcycsIFsnZ29vZy5kZWJ1Zy5FcnJvckhhbmRsZXJUZXN0J10sIFsnZ29vZy5kZWJ1Zy5FcnJvckhhbmRsZXInLCAnZ29vZy50ZXN0aW5nLk1vY2tDb250cm9sJywgJ2dvb2cudGVzdGluZy50ZXN0U3VpdGUnXSwgeydsYW5nJzogJ2VzNicsICdtb2R1bGUnOiAnZ29vZyd9KTsKZ29vZy5hZGREZXBlbmRlbmN5KCdkZWJ1Zy9lcnJvcmhhbmRsZXJ3ZWFrZGVwLmpzJywgWydnb29nLmRlYnVnLmVycm9ySGFuZGxlcldlYWtEZXAnXSwgW10sIHt9KTsKZ29vZy5hZGREZXBlbmRlbmN5KCdkZWJ1Zy9lcnJvcnJlcG9ydGVyLmpzJywgWydnb29nLmRlYnVnLkVycm9yUmVwb3J0ZXInLCAnZ29vZy5kZWJ1Zy5FcnJvclJlcG9ydGVyLkV4Y2VwdGlvbkV2ZW50J10sIFsnZ29vZy5hc3NlcnRzJywgJ2dvb2cuZGVidWcnLCAnZ29vZy5kZWJ1Zy5FcnJvcicsICdnb29nLmRlYnVnLkVycm9ySGFuZGxlcicsICdnb29nLmRlYnVnLmVudHJ5UG9pbnRSZWdpc3RyeScsICdnb29nLmRlYnVnLmVycm9yY29udGV4dCcsICdnb29nLmV2ZW50cycsICdnb29nLmV2ZW50cy5FdmVudCcsICdnb29nLmV2ZW50cy5FdmVudFRhcmdldCcsICdnb29nLmxvZycsICdnb29nLm5ldC5YaHJJbycsICdnb29nLm9iamVjdCcsICdnb29nLnN0cmluZycsICdnb29nLnVyaS51dGlscycsICdnb29nLnVzZXJBZ2VudCddLCB7fSk7Cmdvb2cuYWRkRGVwZW5kZW5jeSgnZGVidWcvZXJyb3JyZXBvcnRlcl90ZXN0LmpzJywgWydnb29nLmRlYnVnLkVycm9yUmVwb3J0ZXJUZXN0J10sIFsnZ29vZy5kZWJ1Zy5FcnJvcicsICdnb29nLmRlYnVnLkVycm9yUmVwb3J0ZXInLCAnZ29vZy5kZWJ1Zy5lcnJvcmNvbnRleHQnLCAnZ29vZy5ldmVudHMnLCAnZ29vZy5mdW5jdGlvbnMnLCAnZ29vZy50ZXN0aW5nLlByb3BlcnR5UmVwbGFjZXInLCAnZ29vZy50ZXN0aW5nLnRlc3RTdWl0ZScsICdnb29nLnVzZXJBZ2VudCcsICdnb29nLnVzZXJBZ2VudC5wcm9kdWN0J10sIHsnbGFuZyc6ICdlczYnLCAnbW9kdWxlJzogJ2dvb2cnfSk7Cmdvb2cuYWRkRGVwZW5kZW5jeSgnZGVidWcvZmFuY3l3aW5kb3cuanMnLCBbJ2dvb2cuZGVidWcuRmFuY3lXaW5kb3cnXSwgWydnb29nLmFycmF5JywgJ2dvb2cuYXNzZXJ0cycsICdnb29nLmRlYnVnLkRlYnVnV2luZG93JywgJ2dvb2cuZGVidWcuTG9nTWFuYWdlcicsICdnb29nLmRlYnVnLkxvZ2dlcicsICdnb29nLmRvbS5Eb21IZWxwZXInLCAnZ29vZy5kb20uVGFnTmFtZScsICdnb29nLmRvbS5zYWZlJywgJ2dvb2cuaHRtbC5TYWZlSHRtbCcsICdnb29nLmh0bWwuU2FmZVN0eWxlU2hlZXQnLCAnZ29vZy5vYmplY3QnLCAnZ29vZy5zdHJpbmcnLCAnZ29vZy5zdHJpbmcuQ29uc3QnLCAnZ29vZy51c2VyQWdlbnQnXSwge30pOwpnb29nLmFkZERlcGVuZGVuY3koJ2RlYnVnL2Zvcm1hdHRlci5qcycsIFsnZ29vZy5kZWJ1Zy5Gb3JtYXR0ZXInLCAnZ29vZy5kZWJ1Zy5IdG1sRm9ybWF0dGVyJywgJ2dvb2cuZGVidWcuVGV4dEZvcm1hdHRlciddLCBbJ2dvb2cuZGVidWcnLCAnZ29vZy5kZWJ1Zy5Mb2dnZXInLCAnZ29vZy5kZWJ1Zy5SZWxhdGl2ZVRpbWVQcm92aWRlcicsICdnb29nLmh0bWwuU2FmZUh0bWwnLCAnZ29vZy5odG1sLlNhZmVVcmwnLCAnZ29vZy5odG1sLnVuY2hlY2tlZGNvbnZlcnNpb25zJywgJ2dvb2cuc3RyaW5nLkNvbnN0J10sIHt9KTsKZ29vZy5hZGREZXBlbmRlbmN5KCdkZWJ1Zy9mb3JtYXR0ZXJfdGVzdC5qcycsIFsnZ29vZy5kZWJ1Zy5Gb3JtYXR0ZXJUZXN0J10sIFsnZ29vZy5kZWJ1Zy5IdG1sRm9ybWF0dGVyJywgJ2dvb2cuZGVidWcuTG9nUmVjb3JkJywgJ2dvb2cuZGVidWcuTG9nZ2VyJywgJ2dvb2cuaHRtbC5TYWZlSHRtbCcsICdnb29nLnRlc3RpbmcudGVzdFN1aXRlJ10sIHsnbGFuZyc6ICdlczYnLCAnbW9kdWxlJzogJ2dvb2cnfSk7Cmdvb2cuYWRkRGVwZW5kZW5jeSgnZGVidWcvZnBzZGlzcGxheS5qcycsIFsnZ29vZy5kZWJ1Zy5GcHNEaXNwbGF5J10sIFsnZ29vZy5hc3NlcnRzJywgJ2dvb2cuYXN5bmMuQW5pbWF0aW9uRGVsYXknLCAnZ29vZy5kb20nLCAnZ29vZy5kb20uVGFnTmFtZScsICdnb29nLnVpLkNvbXBvbmVudCddLCB7fSk7Cmdvb2cuYWRkRGVwZW5kZW5jeSgnZGVidWcvZnBzZGlzcGxheV90ZXN0LmpzJywgWydnb29nLmRlYnVnLkZwc0Rpc3BsYXlUZXN0J10sIFsnZ29vZy5UaW1lcicsICdnb29nLmRlYnVnLkZwc0Rpc3BsYXknLCAnZ29vZy50ZXN0aW5nLlRlc3RDYXNlJywgJ2dvb2cudGVzdGluZy50ZXN0U3VpdGUnXSwgeydsYW5nJzogJ2VzNicsICdtb2R1bGUnOiAnZ29vZyd9KTsKZ29vZy5hZGREZXBlbmRlbmN5KCdkZWJ1Zy9sb2didWZmZXIuanMnLCBbJ2dvb2cuZGVidWcuTG9nQnVmZmVyJ10sIFsnZ29vZy5hc3NlcnRzJywgJ2dvb2cuZGVidWcuTG9nUmVjb3JkJ10sIHt9KTsKZ29vZy5hZGREZXBlbmRlbmN5KCdkZWJ1Zy9sb2didWZmZXJfdGVzdC5qcycsIFsnZ29vZy5kZWJ1Zy5Mb2dCdWZmZXJUZXN0J10sIFsnZ29vZy5kZWJ1Zy5Mb2dCdWZmZXInLCAnZ29vZy5kZWJ1Zy5Mb2dnZXInLCAnZ29vZy50ZXN0aW5nLnRlc3RTdWl0ZSddLCB7J2xhbmcnOiAnZXM2JywgJ21vZHVsZSc6ICdnb29nJ30pOwpnb29nLmFkZERlcGVuZGVuY3koJ2RlYnVnL2xvZ2dlci5qcycsIFsnZ29vZy5kZWJ1Zy5Mb2dNYW5hZ2VyJywgJ2dvb2cuZGVidWcuTG9nZ2FibGUnLCAnZ29vZy5kZWJ1Zy5Mb2dnZXInLCAnZ29vZy5kZWJ1Zy5Mb2dnZXIuTGV2ZWwnXSwgWydnb29nLmFycmF5JywgJ2dvb2cuYXNzZXJ0cycsICdnb29nLmRlYnVnJywgJ2dvb2cuZGVidWcuTG9nQnVmZmVyJywgJ2dvb2cuZGVidWcuTG9nUmVjb3JkJ10sIHt9KTsKZ29vZy5hZGREZXBlbmRlbmN5KCdkZWJ1Zy9sb2dnZXJfdGVzdC5qcycsIFsnZ29vZy5kZWJ1Zy5Mb2dnZXJUZXN0J10sIFsnZ29vZy5kZWJ1Zy5Mb2dNYW5hZ2VyJywgJ2dvb2cuZGVidWcuTG9nZ2VyJywgJ2dvb2cudGVzdGluZy50ZXN0U3VpdGUnXSwgeydsYW5nJzogJ2VzNicsICdtb2R1bGUnOiAnZ29vZyd9KTsKZ29vZy5hZGREZXBlbmRlbmN5KCdkZWJ1Zy9sb2dyZWNvcmQuanMnLCBbJ2dvb2cuZGVidWcuTG9nUmVjb3JkJ10sIFtdLCB7fSk7Cmdvb2cuYWRkRGVwZW5kZW5jeSgnZGVidWcvbG9ncmVjb3Jkc2VyaWFsaXplci5qcycsIFsnZ29vZy5kZWJ1Zy5sb2dSZWNvcmRTZXJpYWxpemVyJ10sIFsnZ29vZy5kZWJ1Zy5Mb2dSZWNvcmQnLCAnZ29vZy5kZWJ1Zy5Mb2dnZXInLCAnZ29vZy5qc29uJywgJ2dvb2cub2JqZWN0J10sIHt9KTsKZ29vZy5hZGREZXBlbmRlbmN5KCdkZWJ1Zy9sb2dyZWNvcmRzZXJpYWxpemVyX3Rlc3QuanMnLCBbJ2dvb2cuZGVidWcubG9nUmVjb3JkU2VyaWFsaXplclRlc3QnXSwgWydnb29nLmRlYnVnLkxvZ1JlY29yZCcsICdnb29nLmRlYnVnLkxvZ2dlcicsICdnb29nLmRlYnVnLmxvZ1JlY29yZFNlcmlhbGl6ZXInLCAnZ29vZy50ZXN0aW5nLnRlc3RTdWl0ZSddLCB7J2xhbmcnOiAnZXM2JywgJ21vZHVsZSc6ICdnb29nJ30pOwpnb29nLmFkZERlcGVuZGVuY3koJ2RlYnVnL3JlbGF0aXZldGltZXByb3ZpZGVyLmpzJywgWydnb29nLmRlYnVnLlJlbGF0aXZlVGltZVByb3ZpZGVyJ10sIFtdLCB7fSk7Cmdvb2cuYWRkRGVwZW5kZW5jeSgnZGVidWcvdHJhY2VyLmpzJywgWydnb29nLmRlYnVnLlN0b3BUcmFjZURldGFpbCcsICdnb29nLmRlYnVnLlRyYWNlJ10sIFsnZ29vZy5hcnJheScsICdnb29nLmFzc2VydHMnLCAnZ29vZy5kZWJ1Zy5Mb2dnZXInLCAnZ29vZy5pdGVyJywgJ2dvb2cubG9nJywgJ2dvb2cuc3RydWN0cy5NYXAnLCAnZ29vZy5zdHJ1Y3RzLlNpbXBsZVBvb2wnXSwge30pOwpnb29nLmFkZERlcGVuZGVuY3koJ2RlYnVnL3RyYWNlcl90ZXN0LmpzJywgWydnb29nLmRlYnVnLlRyYWNlVGVzdCddLCBbJ2dvb2cuYXJyYXknLCAnZ29vZy5kZWJ1Zy5UcmFjZScsICdnb29nLnRlc3RpbmcucmVjb3JkRnVuY3Rpb24nLCAnZ29vZy50ZXN0aW5nLnRlc3RTdWl0ZSddLCB7J2xhbmcnOiAnZXM2JywgJ21vZHVsZSc6ICdnb29nJ30pOwpnb29nLmFkZERlcGVuZGVuY3koJ2RlZmluZWNsYXNzX3Rlc3QuanMnLCBbJ2dvb2cuZGVmaW5lQ2xhc3NUZXN0J10sIFsnZ29vZy50ZXN0aW5nLnRlc3RTdWl0ZSddLCB7J2xhbmcnOiAnZXM2JywgJ21vZHVsZSc6ICdnb29nJ30pOwpnb29nLmFkZERlcGVuZGVuY3koJ2RlbGVnYXRlL2RlbGVnYXRlcmVnaXN0cnkuanMnLCBbJ2dvb2cuZGVsZWdhdGUuRGVsZWdhdGVSZWdpc3RyeSddLCBbJ2dvb2cuYXJyYXknLCAnZ29vZy5hc3NlcnRzJywgJ2dvb2cuZGVidWcnXSwgeydsYW5nJzogJ2VzNicsICdtb2R1bGUnOiAnZ29vZyd9KTsKZ29vZy5hZGREZXBlbmRlbmN5KCdkZWxlZ2F0ZS9kZWxlZ2F0ZXJlZ2lzdHJ5X3Rlc3QuanMnLCBbJ2dvb2cuZGVsZWdhdGUuRGVsZWdhdGVSZWdpc3RyeVRlc3QnXSwgWydnb29nLmFycmF5JywgJ2dvb2cuZGVsZWdhdGUuRGVsZWdhdGVSZWdpc3RyeScsICdnb29nLnRlc3RpbmcudGVzdFN1aXRlJ10sIHsnbGFuZyc6ICdlczYnLCAnbW9kdWxlJzogJ2dvb2cnfSk7Cmdvb2cuYWRkRGVwZW5kZW5jeSgnZGVsZWdhdGUvZGVsZWdhdGVzLmpzJywgWydnb29nLmRlbGVnYXRlLmRlbGVnYXRlcyddLCBbXSwgeydsYW5nJzogJ2VzNicsICdtb2R1bGUnOiAnZ29vZyd9KTsKZ29vZy5hZGREZXBlbmRlbmN5KCdkZWxlZ2F0ZS9kZWxlZ2F0ZXNfdGVzdC5qcycsIFsnZ29vZy5kZWxlZ2F0ZS5kZWxlZ2F0ZXNUZXN0J10sIFsnZ29vZy5kZWxlZ2F0ZS5kZWxlZ2F0ZXMnLCAnZ29vZy50ZXN0aW5nLnJlY29yZEZ1bmN0aW9uJywgJ2dvb2cudGVzdGluZy50ZXN0U3VpdGUnXSwgeydsYW5nJzogJ2VzNicsICdtb2R1bGUnOiAnZ29vZyd9KTsKZ29vZy5hZGREZXBlbmRlbmN5KCdkaXNwb3NhYmxlL2Rpc3Bvc2FibGUuanMnLCBbJ2dvb2cuRGlzcG9zYWJsZScsICdnb29nLmRpc3Bvc2UnLCAnZ29vZy5kaXNwb3NlQWxsJ10sIFsnZ29vZy5kaXNwb3NhYmxlLklEaXNwb3NhYmxlJ10sIHt9KTsKZ29vZy5hZGREZXBlbmRlbmN5KCdkaXNwb3NhYmxlL2Rpc3Bvc2FibGVfdGVzdC5qcycsIFsnZ29vZy5EaXNwb3NhYmxlVGVzdCddLCBbJ2dvb2cuRGlzcG9zYWJsZScsICdnb29nLnRlc3RpbmcucmVjb3JkRnVuY3Rpb24nLCAnZ29vZy50ZXN0aW5nLnRlc3RTdWl0ZSddLCB7J2xhbmcnOiAnZXM2JywgJ21vZHVsZSc6ICdnb29nJ30pOwpnb29nLmFkZERlcGVuZGVuY3koJ2Rpc3Bvc2FibGUvaWRpc3Bvc2FibGUuanMnLCBbJ2dvb2cuZGlzcG9zYWJsZS5JRGlzcG9zYWJsZSddLCBbXSwge30pOwpnb29nLmFkZERlcGVuZGVuY3koJ2RvbS9hYnN0cmFjdG11bHRpcmFuZ2UuanMnLCBbJ2dvb2cuZG9tLkFic3RyYWN0TXVsdGlSYW5nZSddLCBbJ2dvb2cuYXJyYXknLCAnZ29vZy5kb20nLCAnZ29vZy5kb20uQWJzdHJhY3RSYW5nZScsICdnb29nLmRvbS5UZXh0UmFuZ2UnXSwge30pOwpnb29nLmFkZERlcGVuZGVuY3koJ2RvbS9hYnN0cmFjdHJhbmdlLmpzJywgWydnb29nLmRvbS5BYnN0cmFjdFJhbmdlJywgJ2dvb2cuZG9tLlJhbmdlSXRlcmF0b3InLCAnZ29vZy5kb20uUmFuZ2VUeXBlJ10sIFsnZ29vZy5kb20nLCAnZ29vZy5kb20uTm9kZVR5cGUnLCAnZ29vZy5kb20uU2F2ZWRDYXJldFJhbmdlJywgJ2dvb2cuZG9tLlRhZ0l0ZXJhdG9yJywgJ2dvb2cudXNlckFnZW50J10sIHt9KTsKZ29vZy5hZGREZXBlbmRlbmN5KCdkb20vYWJzdHJhY3RyYW5nZV90ZXN0LmpzJywgWydnb29nLmRvbS5BYnN0cmFjdFJhbmdlVGVzdCddLCBbJ2dvb2cuZG9tJywgJ2dvb2cuZG9tLkFic3RyYWN0UmFuZ2UnLCAnZ29vZy5kb20uUmFuZ2UnLCAnZ29vZy5kb20uVGFnTmFtZScsICdnb29nLnRlc3RpbmcudGVzdFN1aXRlJ10sIHsnbGFuZyc6ICdlczYnLCAnbW9kdWxlJzogJ2dvb2cnfSk7Cmdvb2cuYWRkRGVwZW5kZW5jeSgnZG9tL2FuaW1hdGlvbmZyYW1lL2FuaW1hdGlvbmZyYW1lLmpzJywgWydnb29nLmRvbS5hbmltYXRpb25GcmFtZScsICdnb29nLmRvbS5hbmltYXRpb25GcmFtZS5TcGVjJywgJ2dvb2cuZG9tLmFuaW1hdGlvbkZyYW1lLlN0YXRlJ10sIFsnZ29vZy5kb20uYW5pbWF0aW9uRnJhbWUucG9seWZpbGwnXSwge30pOwpnb29nLmFkZERlcGVuZGVuY3koJ2RvbS9hbmltYXRpb25mcmFtZS9hbmltYXRpb25mcmFtZV90ZXN0LmpzJywgWydnb29nLmRvbS5BbmltYXRpb25GcmFtZVRlc3QnXSwgWydnb29nLmRvbS5hbmltYXRpb25GcmFtZScsICdnb29nLnRlc3RpbmcuTW9ja0Nsb2NrJywgJ2dvb2cudGVzdGluZy50ZXN0U3VpdGUnXSwgeydsYW5nJzogJ2VzNicsICdtb2R1bGUnOiAnZ29vZyd9KTsKZ29vZy5hZGREZXBlbmRlbmN5KCdkb20vYW5pbWF0aW9uZnJhbWUvcG9seWZpbGwuanMnLCBbJ2dvb2cuZG9tLmFuaW1hdGlvbkZyYW1lLnBvbHlmaWxsJ10sIFtdLCB7J2xhbmcnOiAnZXM2J30pOwpnb29nLmFkZERlcGVuZGVuY3koJ2RvbS9hbm5vdGF0ZS5qcycsIFsnZ29vZy5kb20uYW5ub3RhdGUnLCAnZ29vZy5kb20uYW5ub3RhdGUuQW5ub3RhdGVGbiddLCBbJ2dvb2cuYXJyYXknLCAnZ29vZy5hc3NlcnRzJywgJ2dvb2cuZG9tJywgJ2dvb2cuZG9tLk5vZGVUeXBlJywgJ2dvb2cuZG9tLlRhZ05hbWUnLCAnZ29vZy5kb20uc2FmZScsICdnb29nLmh0bWwuU2FmZUh0bWwnLCAnZ29vZy5vYmplY3QnXSwge30pOwpnb29nLmFkZERlcGVuZGVuY3koJ2RvbS9hbm5vdGF0ZV90ZXN0LmpzJywgWydnb29nLmRvbS5hbm5vdGF0ZVRlc3QnXSwgWydnb29nLmRvbScsICdnb29nLmRvbS5UYWdOYW1lJywgJ2dvb2cuZG9tLmFubm90YXRlJywgJ2dvb2cuaHRtbC5TYWZlSHRtbCcsICdnb29nLnRlc3RpbmcudGVzdFN1aXRlJ10sIHsnbGFuZyc6ICdlczYnLCAnbW9kdWxlJzogJ2dvb2cnfSk7Cmdvb2cuYWRkRGVwZW5kZW5jeSgnZG9tL2Fzc2VydHMuanMnLCBbJ2dvb2cuZG9tLmFzc2VydHMnXSwgWydnb29nLmFzc2VydHMnXSwge30pOwpnb29nLmFkZERlcGVuZGVuY3koJ2RvbS9hc3NlcnRzX3Rlc3QuanMnLCBbJ2dvb2cuZG9tLmFzc2VydHNUZXN0J10sIFsnZ29vZy5kb20uYXNzZXJ0cycsICdnb29nLnRlc3RpbmcuUHJvcGVydHlSZXBsYWNlcicsICdnb29nLnRlc3RpbmcuU3RyaWN0TW9jaycsICdnb29nLnRlc3RpbmcudGVzdFN1aXRlJywgJ2dvb2cudXNlckFnZW50J10sIHsnbGFuZyc6ICdlczYnLCAnbW9kdWxlJzogJ2dvb2cnfSk7Cmdvb2cuYWRkRGVwZW5kZW5jeSgnZG9tL2F0dHIuanMnLCBbJ2dvb2cuZG9tLkF0dHInXSwgW10sIHt9KTsKZ29vZy5hZGREZXBlbmRlbmN5KCdkb20vYnJvd3NlcmZlYXR1cmUuanMnLCBbJ2dvb2cuZG9tLkJyb3dzZXJGZWF0dXJlJ10sIFsnZ29vZy51c2VyQWdlbnQnXSwge30pOwpnb29nLmFkZERlcGVuZGVuY3koJ2RvbS9icm93c2VyZmVhdHVyZV90ZXN0LmpzJywgWydnb29nLmRvbS5Ccm93c2VyRmVhdHVyZVRlc3QnXSwgWydnb29nLmRvbScsICdnb29nLmRvbS5Ccm93c2VyRmVhdHVyZScsICdnb29nLnRlc3RpbmcudGVzdFN1aXRlJ10sIHsnbGFuZyc6ICdlczYnLCAnbW9kdWxlJzogJ2dvb2cnfSk7Cmdvb2cuYWRkRGVwZW5kZW5jeSgnZG9tL2Jyb3dzZXJyYW5nZS9hYnN0cmFjdHJhbmdlLmpzJywgWydnb29nLmRvbS5icm93c2VycmFuZ2UuQWJzdHJhY3RSYW5nZSddLCBbJ2dvb2cuYXJyYXknLCAnZ29vZy5hc3NlcnRzJywgJ2dvb2cuZG9tJywgJ2dvb2cuZG9tLk5vZGVUeXBlJywgJ2dvb2cuZG9tLlJhbmdlRW5kcG9pbnQnLCAnZ29vZy5kb20uVGFnTmFtZScsICdnb29nLmRvbS5UZXh0UmFuZ2VJdGVyYXRvcicsICdnb29nLml0ZXInLCAnZ29vZy5tYXRoLkNvb3JkaW5hdGUnLCAnZ29vZy5zdHJpbmcnLCAnZ29vZy5zdHJpbmcuU3RyaW5nQnVmZmVyJywgJ2dvb2cudXNlckFnZW50J10sIHt9KTsKZ29vZy5hZGREZXBlbmRlbmN5KCdkb20vYnJvd3NlcnJhbmdlL2Jyb3dzZXJyYW5nZS5qcycsIFsnZ29vZy5kb20uYnJvd3NlcnJhbmdlJywgJ2dvb2cuZG9tLmJyb3dzZXJyYW5nZS5FcnJvciddLCBbJ2dvb2cuZG9tJywgJ2dvb2cuZG9tLkJyb3dzZXJGZWF0dXJlJywgJ2dvb2cuZG9tLk5vZGVUeXBlJywgJ2dvb2cuZG9tLmJyb3dzZXJyYW5nZS5HZWNrb1JhbmdlJywgJ2dvb2cuZG9tLmJyb3dzZXJyYW5nZS5JZVJhbmdlJywgJ2dvb2cuZG9tLmJyb3dzZXJyYW5nZS5PcGVyYVJhbmdlJywgJ2dvb2cuZG9tLmJyb3dzZXJyYW5nZS5XM2NSYW5nZScsICdnb29nLmRvbS5icm93c2VycmFuZ2UuV2ViS2l0UmFuZ2UnLCAnZ29vZy51c2VyQWdlbnQnXSwge30pOwpnb29nLmFkZERlcGVuZGVuY3koJ2RvbS9icm93c2VycmFuZ2UvYnJvd3NlcnJhbmdlX3Rlc3QuanMnLCBbJ2dvb2cuZG9tLmJyb3dzZXJyYW5nZVRlc3QnXSwgWydnb29nLmRvbScsICdnb29nLmRvbS5Ob2RlVHlwZScsICdnb29nLmRvbS5SYW5nZScsICdnb29nLmRvbS5SYW5nZUVuZHBvaW50JywgJ2dvb2cuZG9tLlRhZ05hbWUnLCAnZ29vZy5kb20uYnJvd3NlcnJhbmdlJywgJ2dvb2cuaHRtbC50ZXN0aW5nJywgJ2dvb2cudGVzdGluZy5kb20nLCAnZ29vZy50ZXN0aW5nLnRlc3RTdWl0ZSddLCB7J2xhbmcnOiAnZXM2JywgJ21vZHVsZSc6ICdnb29nJ30pOwpnb29nLmFkZERlcGVuZGVuY3koJ2RvbS9icm93c2VycmFuZ2UvZ2Vja29yYW5nZS5qcycsIFsnZ29vZy5kb20uYnJvd3NlcnJhbmdlLkdlY2tvUmFuZ2UnXSwgWydnb29nLmRvbS5icm93c2VycmFuZ2UuVzNjUmFuZ2UnXSwge30pOwpnb29nLmFkZERlcGVuZGVuY3koJ2RvbS9icm93c2VycmFuZ2UvaWVyYW5nZS5qcycsIFsnZ29vZy5kb20uYnJvd3NlcnJhbmdlLkllUmFuZ2UnXSwgWydnb29nLmFycmF5JywgJ2dvb2cuZG9tJywgJ2dvb2cuZG9tLk5vZGVUeXBlJywgJ2dvb2cuZG9tLlJhbmdlRW5kcG9pbnQnLCAnZ29vZy5kb20uVGFnTmFtZScsICdnb29nLmRvbS5icm93c2VycmFuZ2UuQWJzdHJhY3RSYW5nZScsICdnb29nLmRvbS5zYWZlJywgJ2dvb2cuaHRtbC51bmNoZWNrZWRjb252ZXJzaW9ucycsICdnb29nLmxvZycsICdnb29nLnN0cmluZyddLCB7fSk7Cmdvb2cuYWRkRGVwZW5kZW5jeSgnZG9tL2Jyb3dzZXJyYW5nZS9vcGVyYXJhbmdlLmpzJywgWydnb29nLmRvbS5icm93c2VycmFuZ2UuT3BlcmFSYW5nZSddLCBbJ2dvb2cuZG9tLmJyb3dzZXJyYW5nZS5XM2NSYW5nZSddLCB7fSk7Cmdvb2cuYWRkRGVwZW5kZW5jeSgnZG9tL2Jyb3dzZXJyYW5nZS93M2NyYW5nZS5qcycsIFsnZ29vZy5kb20uYnJvd3NlcnJhbmdlLlczY1JhbmdlJ10sIFsnZ29vZy5hcnJheScsICdnb29nLmRvbScsICdnb29nLmRvbS5Ob2RlVHlwZScsICdnb29nLmRvbS5SYW5nZUVuZHBvaW50JywgJ2dvb2cuZG9tLlRhZ05hbWUnLCAnZ29vZy5kb20uYnJvd3NlcnJhbmdlLkFic3RyYWN0UmFuZ2UnLCAnZ29vZy5zdHJpbmcnLCAnZ29vZy51c2VyQWdlbnQnXSwge30pOwpnb29nLmFkZERlcGVuZGVuY3koJ2RvbS9icm93c2VycmFuZ2Uvd2Via2l0cmFuZ2UuanMnLCBbJ2dvb2cuZG9tLmJyb3dzZXJyYW5nZS5XZWJLaXRSYW5nZSddLCBbJ2dvb2cuZG9tLlJhbmdlRW5kcG9pbnQnLCAnZ29vZy5kb20uYnJvd3NlcnJhbmdlLlczY1JhbmdlJywgJ2dvb2cudXNlckFnZW50J10sIHt9KTsKZ29vZy5hZGREZXBlbmRlbmN5KCdkb20vYnVmZmVyZWR2aWV3cG9ydHNpemVtb25pdG9yLmpzJywgWydnb29nLmRvbS5CdWZmZXJlZFZpZXdwb3J0U2l6ZU1vbml0b3InXSwgWydnb29nLmFzc2VydHMnLCAnZ29vZy5hc3luYy5EZWxheScsICdnb29nLmV2ZW50cycsICdnb29nLmV2ZW50cy5FdmVudFRhcmdldCcsICdnb29nLmV2ZW50cy5FdmVudFR5cGUnXSwge30pOwpnb29nLmFkZERlcGVuZGVuY3koJ2RvbS9idWZmZXJlZHZpZXdwb3J0c2l6ZW1vbml0b3JfdGVzdC5qcycsIFsnZ29vZy5kb20uQnVmZmVyZWRWaWV3cG9ydFNpemVNb25pdG9yVGVzdCddLCBbJ2dvb2cuZG9tLkJ1ZmZlcmVkVmlld3BvcnRTaXplTW9uaXRvcicsICdnb29nLmRvbS5WaWV3cG9ydFNpemVNb25pdG9yJywgJ2dvb2cuZXZlbnRzJywgJ2dvb2cuZXZlbnRzLkV2ZW50VHlwZScsICdnb29nLm1hdGguU2l6ZScsICdnb29nLnRlc3RpbmcuTW9ja0Nsb2NrJywgJ2dvb2cudGVzdGluZy5ldmVudHMnLCAnZ29vZy50ZXN0aW5nLmV2ZW50cy5FdmVudCcsICdnb29nLnRlc3RpbmcudGVzdFN1aXRlJ10sIHsnbGFuZyc6ICdlczYnLCAnbW9kdWxlJzogJ2dvb2cnfSk7Cmdvb2cuYWRkRGVwZW5kZW5jeSgnZG9tL2NsYXNzZXMuanMnLCBbJ2dvb2cuZG9tLmNsYXNzZXMnXSwgWydnb29nLmFycmF5J10sIHt9KTsKZ29vZy5hZGREZXBlbmRlbmN5KCdkb20vY2xhc3Nlc190ZXN0LmpzJywgWydnb29nLmRvbS5jbGFzc2VzX3Rlc3QnXSwgWydnb29nLmRvbScsICdnb29nLmRvbS5UYWdOYW1lJywgJ2dvb2cuZG9tLmNsYXNzZXMnLCAnZ29vZy50ZXN0aW5nLnRlc3RTdWl0ZSddLCB7J2xhbmcnOiAnZXM2JywgJ21vZHVsZSc6ICdnb29nJ30pOwpnb29nLmFkZERlcGVuZGVuY3koJ2RvbS9jbGFzc2xpc3QuanMnLCBbJ2dvb2cuZG9tLmNsYXNzbGlzdCddLCBbJ2dvb2cuYXJyYXknXSwge30pOwpnb29nLmFkZERlcGVuZGVuY3koJ2RvbS9jbGFzc2xpc3RfdGVzdC5qcycsIFsnZ29vZy5kb20uY2xhc3NsaXN0X3Rlc3QnXSwgWydnb29nLmRvbScsICdnb29nLmRvbS5UYWdOYW1lJywgJ2dvb2cuZG9tLmNsYXNzbGlzdCcsICdnb29nLnRlc3RpbmcuRXhwZWN0ZWRGYWlsdXJlcycsICdnb29nLnRlc3RpbmcudGVzdFN1aXRlJ10sIHsnbGFuZyc6ICdlczYnLCAnbW9kdWxlJzogJ2dvb2cnfSk7Cmdvb2cuYWRkRGVwZW5kZW5jeSgnZG9tL2NvbnRyb2xyYW5nZS5qcycsIFsnZ29vZy5kb20uQ29udHJvbFJhbmdlJywgJ2dvb2cuZG9tLkNvbnRyb2xSYW5nZUl0ZXJhdG9yJ10sIFsnZ29vZy5hcnJheScsICdnb29nLmRvbScsICdnb29nLmRvbS5BYnN0cmFjdE11bHRpUmFuZ2UnLCAnZ29vZy5kb20uQWJzdHJhY3RSYW5nZScsICdnb29nLmRvbS5SYW5nZUl0ZXJhdG9yJywgJ2dvb2cuZG9tLlJhbmdlVHlwZScsICdnb29nLmRvbS5TYXZlZFJhbmdlJywgJ2dvb2cuZG9tLlRhZ1dhbGtUeXBlJywgJ2dvb2cuZG9tLlRleHRSYW5nZScsICdnb29nLml0ZXIuU3RvcEl0ZXJhdGlvbicsICdnb29nLnVzZXJBZ2VudCddLCB7fSk7Cmdvb2cuYWRkRGVwZW5kZW5jeSgnZG9tL2NvbnRyb2xyYW5nZV90ZXN0LmpzJywgWydnb29nLmRvbS5Db250cm9sUmFuZ2VUZXN0J10sIFsnZ29vZy5kb20nLCAnZ29vZy5kb20uQ29udHJvbFJhbmdlJywgJ2dvb2cuZG9tLlJhbmdlVHlwZScsICdnb29nLmRvbS5UYWdOYW1lJywgJ2dvb2cuZG9tLlRleHRSYW5nZScsICdnb29nLnRlc3RpbmcuZG9tJywgJ2dvb2cudGVzdGluZy50ZXN0U3VpdGUnLCAnZ29vZy51c2VyQWdlbnQnXSwgeydsYW5nJzogJ2VzNicsICdtb2R1bGUnOiAnZ29vZyd9KTsKZ29vZy5hZGREZXBlbmRlbmN5KCdkb20vZGF0YXNldC5qcycsIFsnZ29vZy5kb20uZGF0YXNldCddLCBbJ2dvb2cubGFicy51c2VyQWdlbnQuYnJvd3NlcicsICdnb29nLnN0cmluZycsICdnb29nLnVzZXJBZ2VudC5wcm9kdWN0J10sIHt9KTsKZ29vZy5hZGREZXBlbmRlbmN5KCdkb20vZGF0YXNldF90ZXN0LmpzJywgWydnb29nLmRvbS5kYXRhc2V0VGVzdCddLCBbJ2dvb2cuZG9tJywgJ2dvb2cuZG9tLmRhdGFzZXQnLCAnZ29vZy50ZXN0aW5nLnRlc3RTdWl0ZSddLCB7J2xhbmcnOiAnZXM2JywgJ21vZHVsZSc6ICdnb29nJ30pOwpnb29nLmFkZERlcGVuZGVuY3koJ2RvbS9kb20uanMnLCBbJ2dvb2cuZG9tJywgJ2dvb2cuZG9tLkFwcGVuZGFibGUnLCAnZ29vZy5kb20uRG9tSGVscGVyJ10sIFsnZ29vZy5hcnJheScsICdnb29nLmFzc2VydHMnLCAnZ29vZy5kb20uQnJvd3NlckZlYXR1cmUnLCAnZ29vZy5kb20uTm9kZVR5cGUnLCAnZ29vZy5kb20uVGFnTmFtZScsICdnb29nLmRvbS5zYWZlJywgJ2dvb2cuaHRtbC5TYWZlSHRtbCcsICdnb29nLmh0bWwudW5jaGVja2VkY29udmVyc2lvbnMnLCAnZ29vZy5tYXRoLkNvb3JkaW5hdGUnLCAnZ29vZy5tYXRoLlNpemUnLCAnZ29vZy5vYmplY3QnLCAnZ29vZy5zdHJpbmcnLCAnZ29vZy5zdHJpbmcuVW5pY29kZScsICdnb29nLnVzZXJBZ2VudCddLCB7fSk7Cmdvb2cuYWRkRGVwZW5kZW5jeSgnZG9tL2RvbV9jb21waWxlX3Rlc3QuanMnLCBbJ2dvb2cuZG9tLkRvbUNvbXBpbGVUZXN0J10sIFsnZ29vZy5kb20nLCAnZ29vZy5kb20uVGFnTmFtZScsICdnb29nLnRlc3RpbmcudGVzdFN1aXRlJ10sIHsnbGFuZyc6ICdlczYnLCAnbW9kdWxlJzogJ2dvb2cnfSk7Cmdvb2cuYWRkRGVwZW5kZW5jeSgnZG9tL2RvbV90ZXN0LmpzJywgWydnb29nLmRvbS5kb21fdGVzdCddLCBbJ2dvb2cuYXJyYXknLCAnZ29vZy5hc3NlcnRzJywgJ2dvb2cuZG9tJywgJ2dvb2cuZG9tLkJyb3dzZXJGZWF0dXJlJywgJ2dvb2cuZG9tLkRvbUhlbHBlcicsICdnb29nLmRvbS5JbnB1dFR5cGUnLCAnZ29vZy5kb20uTm9kZVR5cGUnLCAnZ29vZy5kb20uVGFnTmFtZScsICdnb29nLmZ1bmN0aW9ucycsICdnb29nLmh0bWwuU2FmZVVybCcsICdnb29nLmh0bWwudGVzdGluZycsICdnb29nLm9iamVjdCcsICdnb29nLnN0cmluZy5Db25zdCcsICdnb29nLnN0cmluZy5Vbmljb2RlJywgJ2dvb2cudGVzdGluZy5Qcm9wZXJ0eVJlcGxhY2VyJywgJ2dvb2cudGVzdGluZy5hc3NlcnRzJywgJ2dvb2cudGVzdGluZy50ZXN0U3VpdGUnLCAnZ29vZy51c2VyQWdlbnQnLCAnZ29vZy51c2VyQWdlbnQucHJvZHVjdC5pc1ZlcnNpb24nXSwgeydsYW5nJzogJ2VzNicsICdtb2R1bGUnOiAnZ29vZyd9KTsKZ29vZy5hZGREZXBlbmRlbmN5KCdkb20vZm9udHNpemVtb25pdG9yLmpzJywgWydnb29nLmRvbS5Gb250U2l6ZU1vbml0b3InLCAnZ29vZy5kb20uRm9udFNpemVNb25pdG9yLkV2ZW50VHlwZSddLCBbJ2dvb2cuZG9tJywgJ2dvb2cuZG9tLlRhZ05hbWUnLCAnZ29vZy5ldmVudHMnLCAnZ29vZy5ldmVudHMuRXZlbnRUYXJnZXQnLCAnZ29vZy5ldmVudHMuRXZlbnRUeXBlJywgJ2dvb2cudXNlckFnZW50J10sIHt9KTsKZ29vZy5hZGREZXBlbmRlbmN5KCdkb20vZm9udHNpemVtb25pdG9yX3Rlc3QuanMnLCBbJ2dvb2cuZG9tLkZvbnRTaXplTW9uaXRvclRlc3QnXSwgWydnb29nLmRvbScsICdnb29nLmRvbS5Gb250U2l6ZU1vbml0b3InLCAnZ29vZy5kb20uVGFnTmFtZScsICdnb29nLmV2ZW50cycsICdnb29nLmV2ZW50cy5FdmVudCcsICdnb29nLnRlc3RpbmcuUHJvcGVydHlSZXBsYWNlcicsICdnb29nLnRlc3RpbmcuZXZlbnRzJywgJ2dvb2cudGVzdGluZy50ZXN0U3VpdGUnLCAnZ29vZy51c2VyQWdlbnQnXSwgeydsYW5nJzogJ2VzNicsICdtb2R1bGUnOiAnZ29vZyd9KTsKZ29vZy5hZGREZXBlbmRlbmN5KCdkb20vZm9ybXMuanMnLCBbJ2dvb2cuZG9tLmZvcm1zJ10sIFsnZ29vZy5kb20uSW5wdXRUeXBlJywgJ2dvb2cuZG9tLlRhZ05hbWUnLCAnZ29vZy5kb20uc2FmZScsICdnb29nLnN0cnVjdHMuTWFwJywgJ2dvb2cud2luZG93J10sIHt9KTsKZ29vZy5hZGREZXBlbmRlbmN5KCdkb20vZm9ybXNfdGVzdC5qcycsIFsnZ29vZy5kb20uZm9ybXNUZXN0J10sIFsnZ29vZy5kb20nLCAnZ29vZy5kb20uZm9ybXMnLCAnZ29vZy50ZXN0aW5nLlByb3BlcnR5UmVwbGFjZXInLCAnZ29vZy50ZXN0aW5nLnRlc3RTdWl0ZSddLCB7J2xhbmcnOiAnZXM2JywgJ21vZHVsZSc6ICdnb29nJ30pOwpnb29nLmFkZERlcGVuZGVuY3koJ2RvbS9mdWxsc2NyZWVuLmpzJywgWydnb29nLmRvbS5mdWxsc2NyZWVuJywgJ2dvb2cuZG9tLmZ1bGxzY3JlZW4uRXZlbnRUeXBlJ10sIFsnZ29vZy5kb20nXSwge30pOwpnb29nLmFkZERlcGVuZGVuY3koJ2RvbS9mdWxsc2NyZWVuX3Rlc3QuanMnLCBbJ2dvb2cuZG9tLmZ1bGxzY3JlZW5fdGVzdCddLCBbJ2dvb2cuZG9tLkRvbUhlbHBlcicsICdnb29nLmRvbS5mdWxsc2NyZWVuJywgJ2dvb2cudGVzdGluZy5Qcm9wZXJ0eVJlcGxhY2VyJywgJ2dvb2cudGVzdGluZy5hc3NlcnRzJywgJ2dvb2cudGVzdGluZy50ZXN0U3VpdGUnXSwgeydsYW5nJzogJ2VzNicsICdtb2R1bGUnOiAnZ29vZyd9KTsKZ29vZy5hZGREZXBlbmRlbmN5KCdkb20vaHRtbGVsZW1lbnQuanMnLCBbJ2dvb2cuZG9tLkh0bWxFbGVtZW50J10sIFtdLCB7fSk7Cmdvb2cuYWRkRGVwZW5kZW5jeSgnZG9tL2lmcmFtZS5qcycsIFsnZ29vZy5kb20uaWZyYW1lJ10sIFsnZ29vZy5kb20nLCAnZ29vZy5kb20uVGFnTmFtZScsICdnb29nLmRvbS5zYWZlJywgJ2dvb2cuaHRtbC5TYWZlSHRtbCcsICdnb29nLmh0bWwuU2FmZVN0eWxlJywgJ2dvb2cuaHRtbC5UcnVzdGVkUmVzb3VyY2VVcmwnLCAnZ29vZy5zdHJpbmcuQ29uc3QnLCAnZ29vZy51c2VyQWdlbnQnXSwge30pOwpnb29nLmFkZERlcGVuZGVuY3koJ2RvbS9pZnJhbWVfdGVzdC5qcycsIFsnZ29vZy5kb20uaWZyYW1lVGVzdCddLCBbJ2dvb2cuZG9tJywgJ2dvb2cuZG9tLmlmcmFtZScsICdnb29nLmh0bWwuU2FmZUh0bWwnLCAnZ29vZy5odG1sLlNhZmVTdHlsZScsICdnb29nLnN0cmluZy5Db25zdCcsICdnb29nLnRlc3RpbmcudGVzdFN1aXRlJ10sIHsnbGFuZyc6ICdlczYnLCAnbW9kdWxlJzogJ2dvb2cnfSk7Cmdvb2cuYWRkRGVwZW5kZW5jeSgnZG9tL2lucHV0dHlwZS5qcycsIFsnZ29vZy5kb20uSW5wdXRUeXBlJ10sIFtdLCB7fSk7Cmdvb2cuYWRkRGVwZW5kZW5jeSgnZG9tL2lucHV0dHlwZV90ZXN0LmpzJywgWydnb29nLmRvbS5JbnB1dFR5cGVUZXN0J10sIFsnZ29vZy5kb20uSW5wdXRUeXBlJywgJ2dvb2cub2JqZWN0JywgJ2dvb2cudGVzdGluZy50ZXN0U3VpdGUnLCAnZ29vZy51c2VyQWdlbnQnXSwgeydsYW5nJzogJ2VzNicsICdtb2R1bGUnOiAnZ29vZyd9KTsKZ29vZy5hZGREZXBlbmRlbmN5KCdkb20vaXRlci5qcycsIFsnZ29vZy5kb20uaXRlci5BbmNlc3Rvckl0ZXJhdG9yJywgJ2dvb2cuZG9tLml0ZXIuQ2hpbGRJdGVyYXRvcicsICdnb29nLmRvbS5pdGVyLlNpYmxpbmdJdGVyYXRvciddLCBbJ2dvb2cuaXRlci5JdGVyYXRvcicsICdnb29nLml0ZXIuU3RvcEl0ZXJhdGlvbiddLCB7fSk7Cmdvb2cuYWRkRGVwZW5kZW5jeSgnZG9tL2l0ZXJfdGVzdC5qcycsIFsnZ29vZy5kb20uaXRlclRlc3QnXSwgWydnb29nLmRvbScsICdnb29nLmRvbS5Ob2RlVHlwZScsICdnb29nLmRvbS5pdGVyLkFuY2VzdG9ySXRlcmF0b3InLCAnZ29vZy5kb20uaXRlci5DaGlsZEl0ZXJhdG9yJywgJ2dvb2cuZG9tLml0ZXIuU2libGluZ0l0ZXJhdG9yJywgJ2dvb2cudGVzdGluZy5kb20nLCAnZ29vZy50ZXN0aW5nLnRlc3RTdWl0ZSddLCB7J2xhbmcnOiAnZXM2JywgJ21vZHVsZSc6ICdnb29nJ30pOwpnb29nLmFkZERlcGVuZGVuY3koJ2RvbS9tdWx0aXJhbmdlLmpzJywgWydnb29nLmRvbS5NdWx0aVJhbmdlJywgJ2dvb2cuZG9tLk11bHRpUmFuZ2VJdGVyYXRvciddLCBbJ2dvb2cuYXJyYXknLCAnZ29vZy5kb20nLCAnZ29vZy5kb20uQWJzdHJhY3RNdWx0aVJhbmdlJywgJ2dvb2cuZG9tLkFic3RyYWN0UmFuZ2UnLCAnZ29vZy5kb20uUmFuZ2VJdGVyYXRvcicsICdnb29nLmRvbS5SYW5nZVR5cGUnLCAnZ29vZy5kb20uU2F2ZWRSYW5nZScsICdnb29nLmRvbS5UZXh0UmFuZ2UnLCAnZ29vZy5pdGVyJywgJ2dvb2cuaXRlci5TdG9wSXRlcmF0aW9uJywgJ2dvb2cubG9nJ10sIHt9KTsKZ29vZy5hZGREZXBlbmRlbmN5KCdkb20vbXVsdGlyYW5nZV90ZXN0LmpzJywgWydnb29nLmRvbS5NdWx0aVJhbmdlVGVzdCddLCBbJ2dvb2cuZG9tJywgJ2dvb2cuZG9tLk11bHRpUmFuZ2UnLCAnZ29vZy5kb20uUmFuZ2UnLCAnZ29vZy5pdGVyJywgJ2dvb2cudGVzdGluZy50ZXN0U3VpdGUnXSwgeydsYW5nJzogJ2VzNicsICdtb2R1bGUnOiAnZ29vZyd9KTsKZ29vZy5hZGREZXBlbmRlbmN5KCdkb20vbm9kZWl0ZXJhdG9yLmpzJywgWydnb29nLmRvbS5Ob2RlSXRlcmF0b3InXSwgWydnb29nLmRvbS5UYWdJdGVyYXRvciddLCB7fSk7Cmdvb2cuYWRkRGVwZW5kZW5jeSgnZG9tL25vZGVpdGVyYXRvcl90ZXN0LmpzJywgWydnb29nLmRvbS5Ob2RlSXRlcmF0b3JUZXN0J10sIFsnZ29vZy5kb20nLCAnZ29vZy5kb20uTm9kZUl0ZXJhdG9yJywgJ2dvb2cudGVzdGluZy5kb20nLCAnZ29vZy50ZXN0aW5nLnRlc3RTdWl0ZSddLCB7J2xhbmcnOiAnZXM2JywgJ21vZHVsZSc6ICdnb29nJ30pOwpnb29nLmFkZERlcGVuZGVuY3koJ2RvbS9ub2Rlb2Zmc2V0LmpzJywgWydnb29nLmRvbS5Ob2RlT2Zmc2V0J10sIFsnZ29vZy5EaXNwb3NhYmxlJywgJ2dvb2cuZG9tLlRhZ05hbWUnXSwge30pOwpnb29nLmFkZERlcGVuZGVuY3koJ2RvbS9ub2Rlb2Zmc2V0X3Rlc3QuanMnLCBbJ2dvb2cuZG9tLk5vZGVPZmZzZXRUZXN0J10sIFsnZ29vZy5kb20nLCAnZ29vZy5kb20uTm9kZU9mZnNldCcsICdnb29nLmRvbS5Ob2RlVHlwZScsICdnb29nLmRvbS5UYWdOYW1lJywgJ2dvb2cudGVzdGluZy50ZXN0U3VpdGUnXSwgeydsYW5nJzogJ2VzNicsICdtb2R1bGUnOiAnZ29vZyd9KTsKZ29vZy5hZGREZXBlbmRlbmN5KCdkb20vbm9kZXR5cGUuanMnLCBbJ2dvb2cuZG9tLk5vZGVUeXBlJ10sIFtdLCB7fSk7Cmdvb2cuYWRkRGVwZW5kZW5jeSgnZG9tL3BhdHRlcm4vYWJzdHJhY3RwYXR0ZXJuLmpzJywgWydnb29nLmRvbS5wYXR0ZXJuLkFic3RyYWN0UGF0dGVybiddLCBbJ2dvb2cuZG9tLlRhZ1dhbGtUeXBlJywgJ2dvb2cuZG9tLnBhdHRlcm4uTWF0Y2hUeXBlJ10sIHt9KTsKZ29vZy5hZGREZXBlbmRlbmN5KCdkb20vcGF0dGVybi9hbGxjaGlsZHJlbi5qcycsIFsnZ29vZy5kb20ucGF0dGVybi5BbGxDaGlsZHJlbiddLCBbJ2dvb2cuZG9tLnBhdHRlcm4uQWJzdHJhY3RQYXR0ZXJuJywgJ2dvb2cuZG9tLnBhdHRlcm4uTWF0Y2hUeXBlJ10sIHt9KTsKZ29vZy5hZGREZXBlbmRlbmN5KCdkb20vcGF0dGVybi9jYWxsYmFjay9jYWxsYmFjay5qcycsIFsnZ29vZy5kb20ucGF0dGVybi5jYWxsYmFjayddLCBbJ2dvb2cuZG9tJywgJ2dvb2cuZG9tLlRhZ1dhbGtUeXBlJywgJ2dvb2cuaXRlciddLCB7fSk7Cmdvb2cuYWRkRGVwZW5kZW5jeSgnZG9tL3BhdHRlcm4vY2FsbGJhY2svY291bnRlci5qcycsIFsnZ29vZy5kb20ucGF0dGVybi5jYWxsYmFjay5Db3VudGVyJ10sIFtdLCB7fSk7Cmdvb2cuYWRkRGVwZW5kZW5jeSgnZG9tL3BhdHRlcm4vY2FsbGJhY2svdGVzdC5qcycsIFsnZ29vZy5kb20ucGF0dGVybi5jYWxsYmFjay5UZXN0J10sIFsnZ29vZy5pdGVyLlN0b3BJdGVyYXRpb24nXSwge30pOwpnb29nLmFkZERlcGVuZGVuY3koJ2RvbS9wYXR0ZXJuL2NoaWxkbWF0Y2hlcy5qcycsIFsnZ29vZy5kb20ucGF0dGVybi5DaGlsZE1hdGNoZXMnXSwgWydnb29nLmRvbS5wYXR0ZXJuLkFsbENoaWxkcmVuJywgJ2dvb2cuZG9tLnBhdHRlcm4uTWF0Y2hUeXBlJ10sIHt9KTsKZ29vZy5hZGREZXBlbmRlbmN5KCdkb20vcGF0dGVybi9lbmR0YWcuanMnLCBbJ2dvb2cuZG9tLnBhdHRlcm4uRW5kVGFnJ10sIFsnZ29vZy5kb20uVGFnV2Fsa1R5cGUnLCAnZ29vZy5kb20ucGF0dGVybi5UYWcnXSwge30pOwpnb29nLmFkZERlcGVuZGVuY3koJ2RvbS9wYXR0ZXJuL2Z1bGx0YWcuanMnLCBbJ2dvb2cuZG9tLnBhdHRlcm4uRnVsbFRhZyddLCBbJ2dvb2cuZG9tLnBhdHRlcm4uTWF0Y2hUeXBlJywgJ2dvb2cuZG9tLnBhdHRlcm4uU3RhcnRUYWcnLCAnZ29vZy5kb20ucGF0dGVybi5UYWcnXSwge30pOwpnb29nLmFkZERlcGVuZGVuY3koJ2RvbS9wYXR0ZXJuL21hdGNoZXIuanMnLCBbJ2dvb2cuZG9tLnBhdHRlcm4uTWF0Y2hlciddLCBbJ2dvb2cuZG9tLlRhZ0l0ZXJhdG9yJywgJ2dvb2cuZG9tLnBhdHRlcm4uTWF0Y2hUeXBlJywgJ2dvb2cuaXRlciddLCB7fSk7Cmdvb2cuYWRkRGVwZW5kZW5jeSgnZG9tL3BhdHRlcm4vbWF0Y2hlcl90ZXN0LmpzJywgWydnb29nLmRvbS5wYXR0ZXJuLm1hdGNoZXJUZXN0J10sIFsnZ29vZy5kb20nLCAnZ29vZy5kb20uVGFnTmFtZScsICdnb29nLmRvbS5wYXR0ZXJuLkVuZFRhZycsICdnb29nLmRvbS5wYXR0ZXJuLkZ1bGxUYWcnLCAnZ29vZy5kb20ucGF0dGVybi5NYXRjaGVyJywgJ2dvb2cuZG9tLnBhdHRlcm4uUmVwZWF0JywgJ2dvb2cuZG9tLnBhdHRlcm4uU2VxdWVuY2UnLCAnZ29vZy5kb20ucGF0dGVybi5TdGFydFRhZycsICdnb29nLmRvbS5wYXR0ZXJuLmNhbGxiYWNrLkNvdW50ZXInLCAnZ29vZy5kb20ucGF0dGVybi5jYWxsYmFjay5UZXN0JywgJ2dvb2cuaXRlci5TdG9wSXRlcmF0aW9uJywgJ2dvb2cudGVzdGluZy50ZXN0U3VpdGUnXSwgeydsYW5nJzogJ2VzNicsICdtb2R1bGUnOiAnZ29vZyd9KTsKZ29vZy5hZGREZXBlbmRlbmN5KCdkb20vcGF0dGVybi9ub2RldHlwZS5qcycsIFsnZ29vZy5kb20ucGF0dGVybi5Ob2RlVHlwZSddLCBbJ2dvb2cuZG9tLnBhdHRlcm4uQWJzdHJhY3RQYXR0ZXJuJywgJ2dvb2cuZG9tLnBhdHRlcm4uTWF0Y2hUeXBlJ10sIHt9KTsKZ29vZy5hZGREZXBlbmRlbmN5KCdkb20vcGF0dGVybi9wYXR0ZXJuLmpzJywgWydnb29nLmRvbS5wYXR0ZXJuJywgJ2dvb2cuZG9tLnBhdHRlcm4uTWF0Y2hUeXBlJ10sIFtdLCB7fSk7Cmdvb2cuYWRkRGVwZW5kZW5jeSgnZG9tL3BhdHRlcm4vcGF0dGVybl90ZXN0LmpzJywgWydnb29nLmRvbS5wYXR0ZXJuVGVzdCddLCBbJ2dvb2cuZG9tJywgJ2dvb2cuZG9tLk5vZGVUeXBlJywgJ2dvb2cuZG9tLlRhZ1dhbGtUeXBlJywgJ2dvb2cuZG9tLnBhdHRlcm4uQWxsQ2hpbGRyZW4nLCAnZ29vZy5kb20ucGF0dGVybi5DaGlsZE1hdGNoZXMnLCAnZ29vZy5kb20ucGF0dGVybi5FbmRUYWcnLCAnZ29vZy5kb20ucGF0dGVybi5GdWxsVGFnJywgJ2dvb2cuZG9tLnBhdHRlcm4uTWF0Y2hUeXBlJywgJ2dvb2cuZG9tLnBhdHRlcm4uTm9kZVR5cGUnLCAnZ29vZy5kb20ucGF0dGVybi5SZXBlYXQnLCAnZ29vZy5kb20ucGF0dGVybi5TZXF1ZW5jZScsICdnb29nLmRvbS5wYXR0ZXJuLlN0YXJ0VGFnJywgJ2dvb2cuZG9tLnBhdHRlcm4uVGV4dCcsICdnb29nLnRlc3RpbmcudGVzdFN1aXRlJ10sIHsnbGFuZyc6ICdlczYnLCAnbW9kdWxlJzogJ2dvb2cnfSk7Cmdvb2cuYWRkRGVwZW5kZW5jeSgnZG9tL3BhdHRlcm4vcmVwZWF0LmpzJywgWydnb29nLmRvbS5wYXR0ZXJuLlJlcGVhdCddLCBbJ2dvb2cuZG9tLk5vZGVUeXBlJywgJ2dvb2cuZG9tLnBhdHRlcm4uQWJzdHJhY3RQYXR0ZXJuJywgJ2dvb2cuZG9tLnBhdHRlcm4uTWF0Y2hUeXBlJ10sIHt9KTsKZ29vZy5hZGREZXBlbmRlbmN5KCdkb20vcGF0dGVybi9zZXF1ZW5jZS5qcycsIFsnZ29vZy5kb20ucGF0dGVybi5TZXF1ZW5jZSddLCBbJ2dvb2cuZG9tLk5vZGVUeXBlJywgJ2dvb2cuZG9tLnBhdHRlcm4nLCAnZ29vZy5kb20ucGF0dGVybi5BYnN0cmFjdFBhdHRlcm4nLCAnZ29vZy5kb20ucGF0dGVybi5NYXRjaFR5cGUnXSwge30pOwpnb29nLmFkZERlcGVuZGVuY3koJ2RvbS9wYXR0ZXJuL3N0YXJ0dGFnLmpzJywgWydnb29nLmRvbS5wYXR0ZXJuLlN0YXJ0VGFnJ10sIFsnZ29vZy5kb20uVGFnV2Fsa1R5cGUnLCAnZ29vZy5kb20ucGF0dGVybi5UYWcnXSwge30pOwpnb29nLmFkZERlcGVuZGVuY3koJ2RvbS9wYXR0ZXJuL3RhZy5qcycsIFsnZ29vZy5kb20ucGF0dGVybi5UYWcnXSwgWydnb29nLmRvbS5wYXR0ZXJuJywgJ2dvb2cuZG9tLnBhdHRlcm4uQWJzdHJhY3RQYXR0ZXJuJywgJ2dvb2cuZG9tLnBhdHRlcm4uTWF0Y2hUeXBlJywgJ2dvb2cub2JqZWN0J10sIHt9KTsKZ29vZy5hZGREZXBlbmRlbmN5KCdkb20vcGF0dGVybi90ZXh0LmpzJywgWydnb29nLmRvbS5wYXR0ZXJuLlRleHQnXSwgWydnb29nLmRvbS5Ob2RlVHlwZScsICdnb29nLmRvbS5wYXR0ZXJuJywgJ2dvb2cuZG9tLnBhdHRlcm4uQWJzdHJhY3RQYXR0ZXJuJywgJ2dvb2cuZG9tLnBhdHRlcm4uTWF0Y2hUeXBlJ10sIHt9KTsKZ29vZy5hZGREZXBlbmRlbmN5KCdkb20vcmFuZ2UuanMnLCBbJ2dvb2cuZG9tLlJhbmdlJ10sIFsnZ29vZy5kb20nLCAnZ29vZy5kb20uQWJzdHJhY3RSYW5nZScsICdnb29nLmRvbS5Ccm93c2VyRmVhdHVyZScsICdnb29nLmRvbS5Db250cm9sUmFuZ2UnLCAnZ29vZy5kb20uTXVsdGlSYW5nZScsICdnb29nLmRvbS5Ob2RlVHlwZScsICdnb29nLmRvbS5UZXh0UmFuZ2UnXSwge30pOwpnb29nLmFkZERlcGVuZGVuY3koJ2RvbS9yYW5nZV90ZXN0LmpzJywgWydnb29nLmRvbS5SYW5nZVRlc3QnXSwgWydnb29nLmRvbScsICdnb29nLmRvbS5Ob2RlVHlwZScsICdnb29nLmRvbS5SYW5nZScsICdnb29nLmRvbS5SYW5nZVR5cGUnLCAnZ29vZy5kb20uVGFnTmFtZScsICdnb29nLmRvbS5UZXh0UmFuZ2UnLCAnZ29vZy5kb20uYnJvd3NlcnJhbmdlJywgJ2dvb2cudGVzdGluZy5kb20nLCAnZ29vZy50ZXN0aW5nLnRlc3RTdWl0ZScsICdnb29nLnVzZXJBZ2VudCddLCB7J2xhbmcnOiAnZXM2JywgJ21vZHVsZSc6ICdnb29nJ30pOwpnb29nLmFkZERlcGVuZGVuY3koJ2RvbS9yYW5nZWVuZHBvaW50LmpzJywgWydnb29nLmRvbS5SYW5nZUVuZHBvaW50J10sIFtdLCB7fSk7Cmdvb2cuYWRkRGVwZW5kZW5jeSgnZG9tL3NhZmUuanMnLCBbJ2dvb2cuZG9tLnNhZmUnLCAnZ29vZy5kb20uc2FmZS5JbnNlcnRBZGphY2VudEh0bWxQb3NpdGlvbiddLCBbJ2dvb2cuYXNzZXJ0cycsICdnb29nLmRvbS5hc3NlcnRzJywgJ2dvb2cuZnVuY3Rpb25zJywgJ2dvb2cuaHRtbC5TYWZlSHRtbCcsICdnb29nLmh0bWwuU2FmZVNjcmlwdCcsICdnb29nLmh0bWwuU2FmZVN0eWxlJywgJ2dvb2cuaHRtbC5TYWZlVXJsJywgJ2dvb2cuaHRtbC5UcnVzdGVkUmVzb3VyY2VVcmwnLCAnZ29vZy5odG1sLnVuY2hlY2tlZGNvbnZlcnNpb25zJywgJ2dvb2cuc3RyaW5nLkNvbnN0JywgJ2dvb2cuc3RyaW5nLmludGVybmFsJ10sIHt9KTsKZ29vZy5hZGREZXBlbmRlbmN5KCdkb20vc2FmZV90ZXN0LmpzJywgWydnb29nLmRvbS5zYWZlVGVzdCddLCBbJ2dvb2cuYXNzZXJ0cycsICdnb29nLmRvbScsICdnb29nLmRvbS5UYWdOYW1lJywgJ2dvb2cuZG9tLnNhZmUnLCAnZ29vZy5kb20uc2FmZS5JbnNlcnRBZGphY2VudEh0bWxQb3NpdGlvbicsICdnb29nLmh0bWwuU2FmZUh0bWwnLCAnZ29vZy5odG1sLlNhZmVTY3JpcHQnLCAnZ29vZy5odG1sLlNhZmVTdHlsZScsICdnb29nLmh0bWwuU2FmZVVybCcsICdnb29nLmh0bWwuVHJ1c3RlZFJlc291cmNlVXJsJywgJ2dvb2cuaHRtbC50ZXN0aW5nJywgJ2dvb2cuc3RyaW5nJywgJ2dvb2cuc3RyaW5nLkNvbnN0JywgJ2dvb2cudGVzdGluZycsICdnb29nLnRlc3RpbmcudGVzdFN1aXRlJywgJ2dvb2cudXNlckFnZW50J10sIHsnbGFuZyc6ICdlczYnLCAnbW9kdWxlJzogJ2dvb2cnfSk7Cmdvb2cuYWRkRGVwZW5kZW5jeSgnZG9tL3NhdmVkY2FyZXRyYW5nZS5qcycsIFsnZ29vZy5kb20uU2F2ZWRDYXJldFJhbmdlJ10sIFsnZ29vZy5hcnJheScsICdnb29nLmRvbScsICdnb29nLmRvbS5TYXZlZFJhbmdlJywgJ2dvb2cuZG9tLlRhZ05hbWUnLCAnZ29vZy5zdHJpbmcnXSwge30pOwpnb29nLmFkZERlcGVuZGVuY3koJ2RvbS9zYXZlZGNhcmV0cmFuZ2VfdGVzdC5qcycsIFsnZ29vZy5kb20uU2F2ZWRDYXJldFJhbmdlVGVzdCddLCBbJ2dvb2cuZG9tJywgJ2dvb2cuZG9tLlJhbmdlJywgJ2dvb2cuZG9tLlNhdmVkQ2FyZXRSYW5nZScsICdnb29nLnRlc3RpbmcuZG9tJywgJ2dvb2cudGVzdGluZy50ZXN0U3VpdGUnLCAnZ29vZy51c2VyQWdlbnQnXSwgeydsYW5nJzogJ2VzNicsICdtb2R1bGUnOiAnZ29vZyd9KTsKZ29vZy5hZGREZXBlbmRlbmN5KCdkb20vc2F2ZWRyYW5nZS5qcycsIFsnZ29vZy5kb20uU2F2ZWRSYW5nZSddLCBbJ2dvb2cuRGlzcG9zYWJsZScsICdnb29nLmxvZyddLCB7fSk7Cmdvb2cuYWRkRGVwZW5kZW5jeSgnZG9tL3NhdmVkcmFuZ2VfdGVzdC5qcycsIFsnZ29vZy5kb20uU2F2ZWRSYW5nZVRlc3QnXSwgWydnb29nLmRvbScsICdnb29nLmRvbS5SYW5nZScsICdnb29nLnRlc3RpbmcudGVzdFN1aXRlJywgJ2dvb2cudXNlckFnZW50J10sIHsnbGFuZyc6ICdlczYnLCAnbW9kdWxlJzogJ2dvb2cnfSk7Cmdvb2cuYWRkRGVwZW5kZW5jeSgnZG9tL3NlbGVjdGlvbi5qcycsIFsnZ29vZy5kb20uc2VsZWN0aW9uJ10sIFsnZ29vZy5kb20uSW5wdXRUeXBlJywgJ2dvb2cuc3RyaW5nJywgJ2dvb2cudXNlckFnZW50J10sIHt9KTsKZ29vZy5hZGREZXBlbmRlbmN5KCdkb20vc2VsZWN0aW9uX3Rlc3QuanMnLCBbJ2dvb2cuZG9tLnNlbGVjdGlvblRlc3QnXSwgWydnb29nLmRvbScsICdnb29nLmRvbS5JbnB1dFR5cGUnLCAnZ29vZy5kb20uVGFnTmFtZScsICdnb29nLmRvbS5zZWxlY3Rpb24nLCAnZ29vZy50ZXN0aW5nLnRlc3RTdWl0ZScsICdnb29nLnVzZXJBZ2VudCddLCB7J2xhbmcnOiAnZXM2JywgJ21vZHVsZSc6ICdnb29nJ30pOwpnb29nLmFkZERlcGVuZGVuY3koJ2RvbS90YWdpdGVyYXRvci5qcycsIFsnZ29vZy5kb20uVGFnSXRlcmF0b3InLCAnZ29vZy5kb20uVGFnV2Fsa1R5cGUnXSwgWydnb29nLmRvbScsICdnb29nLmRvbS5Ob2RlVHlwZScsICdnb29nLml0ZXIuSXRlcmF0b3InLCAnZ29vZy5pdGVyLlN0b3BJdGVyYXRpb24nXSwge30pOwpnb29nLmFkZERlcGVuZGVuY3koJ2RvbS90YWdpdGVyYXRvcl90ZXN0LmpzJywgWydnb29nLmRvbS5UYWdJdGVyYXRvclRlc3QnXSwgWydnb29nLmRvbScsICdnb29nLmRvbS5UYWdJdGVyYXRvcicsICdnb29nLmRvbS5UYWdOYW1lJywgJ2dvb2cuZG9tLlRhZ1dhbGtUeXBlJywgJ2dvb2cuaXRlcicsICdnb29nLml0ZXIuU3RvcEl0ZXJhdGlvbicsICdnb29nLnRlc3RpbmcuZG9tJywgJ2dvb2cudGVzdGluZy50ZXN0U3VpdGUnXSwgeydsYW5nJzogJ2VzNicsICdtb2R1bGUnOiAnZ29vZyd9KTsKZ29vZy5hZGREZXBlbmRlbmN5KCdkb20vdGFnbmFtZS5qcycsIFsnZ29vZy5kb20uVGFnTmFtZSddLCBbJ2dvb2cuZG9tLkh0bWxFbGVtZW50J10sIHt9KTsKZ29vZy5hZGREZXBlbmRlbmN5KCdkb20vdGFnbmFtZV90ZXN0LmpzJywgWydnb29nLmRvbS5UYWdOYW1lVGVzdCddLCBbJ2dvb2cuZG9tLlRhZ05hbWUnLCAnZ29vZy5vYmplY3QnLCAnZ29vZy50ZXN0aW5nLnRlc3RTdWl0ZSddLCB7J2xhbmcnOiAnZXM2JywgJ21vZHVsZSc6ICdnb29nJ30pOwpnb29nLmFkZERlcGVuZGVuY3koJ2RvbS90YWdzLmpzJywgWydnb29nLmRvbS50YWdzJ10sIFsnZ29vZy5vYmplY3QnXSwge30pOwpnb29nLmFkZERlcGVuZGVuY3koJ2RvbS90YWdzX3Rlc3QuanMnLCBbJ2dvb2cuZG9tLnRhZ3NUZXN0J10sIFsnZ29vZy5kb20udGFncycsICdnb29nLnRlc3RpbmcudGVzdFN1aXRlJ10sIHsnbGFuZyc6ICdlczYnLCAnbW9kdWxlJzogJ2dvb2cnfSk7Cmdvb2cuYWRkRGVwZW5kZW5jeSgnZG9tL3RleHRhc3NlcnQuanMnLCBbJ2dvb2cuZG9tLnRleHRBc3NlcnQnXSwgWydnb29nLmFzc2VydHMnLCAnZ29vZy5kb20nLCAnZ29vZy5kb20uVGFnTmFtZSddLCB7fSk7Cmdvb2cuYWRkRGVwZW5kZW5jeSgnZG9tL3RleHRhc3NlcnRfdGVzdC5qcycsIFsnZ29vZy5kb20udGV4dGFzc2VydF90ZXN0J10sIFsnZ29vZy5kb20udGV4dEFzc2VydCcsICdnb29nLnRlc3RpbmcudGVzdFN1aXRlJywgJ2dvb2cudXNlckFnZW50J10sIHsnbGFuZyc6ICdlczYnLCAnbW9kdWxlJzogJ2dvb2cnfSk7Cmdvb2cuYWRkRGVwZW5kZW5jeSgnZG9tL3RleHRyYW5nZS5qcycsIFsnZ29vZy5kb20uVGV4dFJhbmdlJ10sIFsnZ29vZy5hcnJheScsICdnb29nLmRvbScsICdnb29nLmRvbS5BYnN0cmFjdFJhbmdlJywgJ2dvb2cuZG9tLlJhbmdlVHlwZScsICdnb29nLmRvbS5TYXZlZFJhbmdlJywgJ2dvb2cuZG9tLlRhZ05hbWUnLCAnZ29vZy5kb20uVGV4dFJhbmdlSXRlcmF0b3InLCAnZ29vZy5kb20uYnJvd3NlcnJhbmdlJywgJ2dvb2cuc3RyaW5nJywgJ2dvb2cudXNlckFnZW50J10sIHt9KTsKZ29vZy5hZGREZXBlbmRlbmN5KCdkb20vdGV4dHJhbmdlX3Rlc3QuanMnLCBbJ2dvb2cuZG9tLlRleHRSYW5nZVRlc3QnXSwgWydnb29nLmRvbScsICdnb29nLmRvbS5Db250cm9sUmFuZ2UnLCAnZ29vZy5kb20uUmFuZ2UnLCAnZ29vZy5kb20uVGV4dFJhbmdlJywgJ2dvb2cubWF0aC5Db29yZGluYXRlJywgJ2dvb2cuc3R5bGUnLCAnZ29vZy50ZXN0aW5nLkV4cGVjdGVkRmFpbHVyZXMnLCAnZ29vZy50ZXN0aW5nLnRlc3RTdWl0ZScsICdnb29nLnVzZXJBZ2VudCcsICdnb29nLnVzZXJBZ2VudC5wcm9kdWN0J10sIHsnbGFuZyc6ICdlczYnLCAnbW9kdWxlJzogJ2dvb2cnfSk7Cmdvb2cuYWRkRGVwZW5kZW5jeSgnZG9tL3RleHRyYW5nZWl0ZXJhdG9yLmpzJywgWydnb29nLmRvbS5UZXh0UmFuZ2VJdGVyYXRvciddLCBbJ2dvb2cuYXJyYXknLCAnZ29vZy5kb20nLCAnZ29vZy5kb20uTm9kZVR5cGUnLCAnZ29vZy5kb20uUmFuZ2VJdGVyYXRvcicsICdnb29nLmRvbS5UYWdOYW1lJywgJ2dvb2cuaXRlci5TdG9wSXRlcmF0aW9uJ10sIHt9KTsKZ29vZy5hZGREZXBlbmRlbmN5KCdkb20vdGV4dHJhbmdlaXRlcmF0b3JfdGVzdC5qcycsIFsnZ29vZy5kb20uVGV4dFJhbmdlSXRlcmF0b3JUZXN0J10sIFsnZ29vZy5kb20nLCAnZ29vZy5kb20uVGFnTmFtZScsICdnb29nLmRvbS5UZXh0UmFuZ2VJdGVyYXRvcicsICdnb29nLml0ZXIuU3RvcEl0ZXJhdGlvbicsICdnb29nLnRlc3RpbmcuZG9tJywgJ2dvb2cudGVzdGluZy50ZXN0U3VpdGUnXSwgeydsYW5nJzogJ2VzNicsICdtb2R1bGUnOiAnZ29vZyd9KTsKZ29vZy5hZGREZXBlbmRlbmN5KCdkb20vdXJpLmpzJywgWydnb29nLmRvbS51cmknXSwgWydnb29nLmRvbScsICdnb29nLmRvbS5UYWdOYW1lJywgJ2dvb2cuZG9tLnNhZmUnLCAnZ29vZy5odG1sLnVuY2hlY2tlZGNvbnZlcnNpb25zJywgJ2dvb2cuc3RyaW5nLkNvbnN0J10sIHsnbGFuZyc6ICdlczYnLCAnbW9kdWxlJzogJ2dvb2cnfSk7Cmdvb2cuYWRkRGVwZW5kZW5jeSgnZG9tL3VyaV90ZXN0LmpzJywgWydnb29nLmRvbS51cmlUZXN0J10sIFsnZ29vZy5kb20udXJpJywgJ2dvb2cudGVzdGluZy50ZXN0U3VpdGUnLCAnZ29vZy51c2VyQWdlbnQucHJvZHVjdCddLCB7J2xhbmcnOiAnZXM2JywgJ21vZHVsZSc6ICdnb29nJ30pOwpnb29nLmFkZERlcGVuZGVuY3koJ2RvbS92ZW5kb3IuanMnLCBbJ2dvb2cuZG9tLnZlbmRvciddLCBbJ2dvb2cuc3RyaW5nJywgJ2dvb2cudXNlckFnZW50J10sIHt9KTsKZ29vZy5hZGREZXBlbmRlbmN5KCdkb20vdmVuZG9yX3Rlc3QuanMnLCBbJ2dvb2cuZG9tLnZlbmRvclRlc3QnXSwgWydnb29nLmFycmF5JywgJ2dvb2cuZG9tLnZlbmRvcicsICdnb29nLmxhYnMudXNlckFnZW50LnV0aWwnLCAnZ29vZy50ZXN0aW5nLk1vY2tVc2VyQWdlbnQnLCAnZ29vZy50ZXN0aW5nLlByb3BlcnR5UmVwbGFjZXInLCAnZ29vZy50ZXN0aW5nLnRlc3RTdWl0ZScsICdnb29nLnVzZXJBZ2VudCcsICdnb29nLnVzZXJBZ2VudFRlc3RVdGlsJ10sIHsnbGFuZyc6ICdlczYnLCAnbW9kdWxlJzogJ2dvb2cnfSk7Cmdvb2cuYWRkRGVwZW5kZW5jeSgnZG9tL3ZpZXdwb3J0c2l6ZW1vbml0b3IuanMnLCBbJ2dvb2cuZG9tLlZpZXdwb3J0U2l6ZU1vbml0b3InXSwgWydnb29nLmRvbScsICdnb29nLmV2ZW50cycsICdnb29nLmV2ZW50cy5FdmVudFRhcmdldCcsICdnb29nLmV2ZW50cy5FdmVudFR5cGUnLCAnZ29vZy5tYXRoLlNpemUnXSwge30pOwpnb29nLmFkZERlcGVuZGVuY3koJ2RvbS92aWV3cG9ydHNpemVtb25pdG9yX3Rlc3QuanMnLCBbJ2dvb2cuZG9tLlZpZXdwb3J0U2l6ZU1vbml0b3JUZXN0J10sIFsnZ29vZy5kb20uVmlld3BvcnRTaXplTW9uaXRvcicsICdnb29nLmV2ZW50cycsICdnb29nLmV2ZW50cy5FdmVudCcsICdnb29nLmV2ZW50cy5FdmVudFRhcmdldCcsICdnb29nLmV2ZW50cy5FdmVudFR5cGUnLCAnZ29vZy5tYXRoLlNpemUnLCAnZ29vZy50ZXN0aW5nLk1vY2tDbG9jaycsICdnb29nLnRlc3RpbmcuUHJvcGVydHlSZXBsYWNlcicsICdnb29nLnRlc3RpbmcudGVzdFN1aXRlJ10sIHsnbGFuZyc6ICdlczYnLCAnbW9kdWxlJzogJ2dvb2cnfSk7Cmdvb2cuYWRkRGVwZW5kZW5jeSgnZG9tL3htbC5qcycsIFsnZ29vZy5kb20ueG1sJ10sIFsnZ29vZy5kb20nLCAnZ29vZy5kb20uTm9kZVR5cGUnLCAnZ29vZy5kb20uc2FmZScsICdnb29nLmh0bWwubGVnYWN5Y29udmVyc2lvbnMnLCAnZ29vZy51c2VyQWdlbnQnXSwge30pOwpnb29nLmFkZERlcGVuZGVuY3koJ2RvbS94bWxfdGVzdC5qcycsIFsnZ29vZy5kb20ueG1sVGVzdCddLCBbJ2dvb2cuZG9tJywgJ2dvb2cuZG9tLlRhZ05hbWUnLCAnZ29vZy5kb20ueG1sJywgJ2dvb2cudGVzdGluZy50ZXN0U3VpdGUnLCAnZ29vZy51c2VyQWdlbnQnXSwgeydsYW5nJzogJ2VzNicsICdtb2R1bGUnOiAnZ29vZyd9KTsKZ29vZy5hZGREZXBlbmRlbmN5KCdlZGl0b3IvYnJvd3NlcmZlYXR1cmUuanMnLCBbJ2dvb2cuZWRpdG9yLkJyb3dzZXJGZWF0dXJlJ10sIFsnZ29vZy5lZGl0b3IuZGVmaW5lcycsICdnb29nLmxhYnMudXNlckFnZW50LmJyb3dzZXInLCAnZ29vZy51c2VyQWdlbnQnLCAnZ29vZy51c2VyQWdlbnQucHJvZHVjdCcsICdnb29nLnVzZXJBZ2VudC5wcm9kdWN0LmlzVmVyc2lvbiddLCB7fSk7Cmdvb2cuYWRkRGVwZW5kZW5jeSgnZWRpdG9yL2Jyb3dzZXJmZWF0dXJlX3Rlc3QuanMnLCBbJ2dvb2cuZWRpdG9yLkJyb3dzZXJGZWF0dXJlVGVzdCddLCBbJ2dvb2cuZG9tJywgJ2dvb2cuZG9tLlJhbmdlJywgJ2dvb2cuZG9tLlRhZ05hbWUnLCAnZ29vZy5lZGl0b3IuQnJvd3NlckZlYXR1cmUnLCAnZ29vZy50ZXN0aW5nLkV4cGVjdGVkRmFpbHVyZXMnLCAnZ29vZy50ZXN0aW5nLnRlc3RTdWl0ZSddLCB7J2xhbmcnOiAnZXM2JywgJ21vZHVsZSc6ICdnb29nJ30pOwpnb29nLmFkZERlcGVuZGVuY3koJ2VkaXRvci9jbGlja3RvZWRpdHdyYXBwZXIuanMnLCBbJ2dvb2cuZWRpdG9yLkNsaWNrVG9FZGl0V3JhcHBlciddLCBbJ2dvb2cuRGlzcG9zYWJsZScsICdnb29nLmRvbScsICdnb29nLmRvbS5SYW5nZScsICdnb29nLmRvbS5UYWdOYW1lJywgJ2dvb2cuZWRpdG9yLkJyb3dzZXJGZWF0dXJlJywgJ2dvb2cuZWRpdG9yLkNvbW1hbmQnLCAnZ29vZy5lZGl0b3IuRmllbGQnLCAnZ29vZy5lZGl0b3IucmFuZ2UnLCAnZ29vZy5ldmVudHMuQnJvd3NlckV2ZW50JywgJ2dvb2cuZXZlbnRzLkV2ZW50SGFuZGxlcicsICdnb29nLmV2ZW50cy5FdmVudFR5cGUnXSwge30pOwpnb29nLmFkZERlcGVuZGVuY3koJ2VkaXRvci9jbGlja3RvZWRpdHdyYXBwZXJfdGVzdC5qcycsIFsnZ29vZy5lZGl0b3IuQ2xpY2tUb0VkaXRXcmFwcGVyVGVzdCddLCBbJ2dvb2cuZG9tJywgJ2dvb2cuZG9tLlJhbmdlJywgJ2dvb2cuZG9tLlRhZ05hbWUnLCAnZ29vZy5lZGl0b3IuQ2xpY2tUb0VkaXRXcmFwcGVyJywgJ2dvb2cuZWRpdG9yLlNlYW1sZXNzRmllbGQnLCAnZ29vZy50ZXN0aW5nLk1vY2tDbG9jaycsICdnb29nLnRlc3RpbmcuZXZlbnRzJywgJ2dvb2cudGVzdGluZy50ZXN0U3VpdGUnXSwgeydsYW5nJzogJ2VzNicsICdtb2R1bGUnOiAnZ29vZyd9KTsKZ29vZy5hZGREZXBlbmRlbmN5KCdlZGl0b3IvY29tbWFuZC5qcycsIFsnZ29vZy5lZGl0b3IuQ29tbWFuZCddLCBbXSwge30pOwpnb29nLmFkZERlcGVuZGVuY3koJ2VkaXRvci9jb250ZW50ZWRpdGFibGVmaWVsZC5qcycsIFsnZ29vZy5lZGl0b3IuQ29udGVudEVkaXRhYmxlRmllbGQnXSwgWydnb29nLmFzc2VydHMnLCAnZ29vZy5lZGl0b3IuRmllbGQnLCAnZ29vZy5sb2cnXSwge30pOwpnb29nLmFkZERlcGVuZGVuY3koJ2VkaXRvci9jb250ZW50ZWRpdGFibGVmaWVsZF90ZXN0LmpzJywgWydnb29nLmVkaXRvci5Db250ZW50RWRpdGFibGVGaWVsZFRlc3QnXSwgWydnb29nLmRvbScsICdnb29nLmVkaXRvci5Db250ZW50RWRpdGFibGVGaWVsZCcsICdnb29nLmh0bWwuU2FmZUh0bWwnLCAnZ29vZy50ZXN0aW5nLnRlc3RTdWl0ZSddLCB7J2xhbmcnOiAnZXM2JywgJ21vZHVsZSc6ICdnb29nJ30pOwpnb29nLmFkZERlcGVuZGVuY3koJ2VkaXRvci9kZWZpbmVzLmpzJywgWydnb29nLmVkaXRvci5kZWZpbmVzJ10sIFtdLCB7fSk7Cmdvb2cuYWRkRGVwZW5kZW5jeSgnZWRpdG9yL2ZpZWxkLmpzJywgWydnb29nLmVkaXRvci5GaWVsZCcsICdnb29nLmVkaXRvci5GaWVsZC5FdmVudFR5cGUnXSwgWydnb29nLmExMXkuYXJpYScsICdnb29nLmExMXkuYXJpYS5Sb2xlJywgJ2dvb2cuYXJyYXknLCAnZ29vZy5hc3NlcnRzJywgJ2dvb2cuYXN5bmMuRGVsYXknLCAnZ29vZy5kb20nLCAnZ29vZy5kb20uUmFuZ2UnLCAnZ29vZy5kb20uVGFnTmFtZScsICdnb29nLmRvbS5jbGFzc2xpc3QnLCAnZ29vZy5kb20uc2FmZScsICdnb29nLmVkaXRvci5Ccm93c2VyRmVhdHVyZScsICdnb29nLmVkaXRvci5Db21tYW5kJywgJ2dvb2cuZWRpdG9yLlBsdWdpbkltcGwnLCAnZ29vZy5lZGl0b3IuaWNvbnRlbnQnLCAnZ29vZy5lZGl0b3IuaWNvbnRlbnQuRmllbGRGb3JtYXRJbmZvJywgJ2dvb2cuZWRpdG9yLmljb250ZW50LkZpZWxkU3R5bGVJbmZvJywgJ2dvb2cuZWRpdG9yLm5vZGUnLCAnZ29vZy5lZGl0b3IucmFuZ2UnLCAnZ29vZy5ldmVudHMnLCAnZ29vZy5ldmVudHMuRXZlbnRIYW5kbGVyJywgJ2dvb2cuZXZlbnRzLkV2ZW50VGFyZ2V0JywgJ2dvb2cuZXZlbnRzLkV2ZW50VHlwZScsICdnb29nLmV2ZW50cy5LZXlDb2RlcycsICdnb29nLmZ1bmN0aW9ucycsICdnb29nLmh0bWwuU2FmZUh0bWwnLCAnZ29vZy5odG1sLlNhZmVTdHlsZVNoZWV0JywgJ2dvb2cubG9nJywgJ2dvb2cubG9nLkxldmVsJywgJ2dvb2cuc3RyaW5nJywgJ2dvb2cuc3RyaW5nLlVuaWNvZGUnLCAnZ29vZy5zdHlsZScsICdnb29nLnVzZXJBZ2VudCcsICdnb29nLnVzZXJBZ2VudC5wcm9kdWN0J10sIHt9KTsKZ29vZy5hZGREZXBlbmRlbmN5KCdlZGl0b3IvZmllbGRfdGVzdC5qcycsIFsnZ29vZy5lZGl0b3IuZmllbGRfdGVzdCddLCBbJ2dvb2cuYXJyYXknLCAnZ29vZy5kb20nLCAnZ29vZy5kb20uUmFuZ2UnLCAnZ29vZy5kb20uVGFnTmFtZScsICdnb29nLmRvbS5jbGFzc2xpc3QnLCAnZ29vZy5lZGl0b3IuQnJvd3NlckZlYXR1cmUnLCAnZ29vZy5lZGl0b3IuRmllbGQnLCAnZ29vZy5lZGl0b3IuUGx1Z2luJywgJ2dvb2cuZWRpdG9yLnJhbmdlJywgJ2dvb2cuZXZlbnRzJywgJ2dvb2cuZXZlbnRzLkJyb3dzZXJFdmVudCcsICdnb29nLmV2ZW50cy5FdmVudFR5cGUnLCAnZ29vZy5ldmVudHMuS2V5Q29kZXMnLCAnZ29vZy5mdW5jdGlvbnMnLCAnZ29vZy5odG1sLlNhZmVIdG1sJywgJ2dvb2cudGVzdGluZy5Mb29zZU1vY2snLCAnZ29vZy50ZXN0aW5nLk1vY2tDbG9jaycsICdnb29nLnRlc3RpbmcuZG9tJywgJ2dvb2cudGVzdGluZy5ldmVudHMnLCAnZ29vZy50ZXN0aW5nLmV2ZW50cy5FdmVudCcsICdnb29nLnRlc3RpbmcucmVjb3JkRnVuY3Rpb24nLCAnZ29vZy50ZXN0aW5nLnRlc3RTdWl0ZScsICdnb29nLnVzZXJBZ2VudCddLCB7J2xhbmcnOiAnZXM2JywgJ21vZHVsZSc6ICdnb29nJ30pOwpnb29nLmFkZERlcGVuZGVuY3koJ2VkaXRvci9mb2N1cy5qcycsIFsnZ29vZy5lZGl0b3IuZm9jdXMnXSwgWydnb29nLmRvbS5zZWxlY3Rpb24nXSwge30pOwpnb29nLmFkZERlcGVuZGVuY3koJ2VkaXRvci9mb2N1c190ZXN0LmpzJywgWydnb29nLmVkaXRvci5mb2N1c1Rlc3QnXSwgWydnb29nLmRvbS5zZWxlY3Rpb24nLCAnZ29vZy5lZGl0b3IuQnJvd3NlckZlYXR1cmUnLCAnZ29vZy5lZGl0b3IuZm9jdXMnLCAnZ29vZy50ZXN0aW5nLnRlc3RTdWl0ZSddLCB7J2xhbmcnOiAnZXM2JywgJ21vZHVsZSc6ICdnb29nJ30pOwpnb29nLmFkZERlcGVuZGVuY3koJ2VkaXRvci9pY29udGVudC5qcycsIFsnZ29vZy5lZGl0b3IuaWNvbnRlbnQnLCAnZ29vZy5lZGl0b3IuaWNvbnRlbnQuRmllbGRGb3JtYXRJbmZvJywgJ2dvb2cuZWRpdG9yLmljb250ZW50LkZpZWxkU3R5bGVJbmZvJ10sIFsnZ29vZy5kb20nLCAnZ29vZy5lZGl0b3IuQnJvd3NlckZlYXR1cmUnLCAnZ29vZy5zdHlsZScsICdnb29nLnVzZXJBZ2VudCddLCB7fSk7Cmdvb2cuYWRkRGVwZW5kZW5jeSgnZWRpdG9yL2ljb250ZW50X3Rlc3QuanMnLCBbJ2dvb2cuZWRpdG9yLmljb250ZW50VGVzdCddLCBbJ2dvb2cuZG9tJywgJ2dvb2cuZG9tLlRhZ05hbWUnLCAnZ29vZy5lZGl0b3IuQnJvd3NlckZlYXR1cmUnLCAnZ29vZy5lZGl0b3IuaWNvbnRlbnQnLCAnZ29vZy5lZGl0b3IuaWNvbnRlbnQuRmllbGRGb3JtYXRJbmZvJywgJ2dvb2cuZWRpdG9yLmljb250ZW50LkZpZWxkU3R5bGVJbmZvJywgJ2dvb2cudGVzdGluZy5Qcm9wZXJ0eVJlcGxhY2VyJywgJ2dvb2cudGVzdGluZy50ZXN0U3VpdGUnLCAnZ29vZy51c2VyQWdlbnQnXSwgeydsYW5nJzogJ2VzNicsICdtb2R1bGUnOiAnZ29vZyd9KTsKZ29vZy5hZGREZXBlbmRlbmN5KCdlZGl0b3IvbGluay5qcycsIFsnZ29vZy5lZGl0b3IuTGluayddLCBbJ2dvb2cuYXJyYXknLCAnZ29vZy5kb20nLCAnZ29vZy5kb20uTm9kZVR5cGUnLCAnZ29vZy5kb20uUmFuZ2UnLCAnZ29vZy5kb20uVGFnTmFtZScsICdnb29nLmVkaXRvci5Ccm93c2VyRmVhdHVyZScsICdnb29nLmVkaXRvci5Db21tYW5kJywgJ2dvb2cuZWRpdG9yLkZpZWxkJywgJ2dvb2cuZWRpdG9yLm5vZGUnLCAnZ29vZy5lZGl0b3IucmFuZ2UnLCAnZ29vZy5zdHJpbmcnLCAnZ29vZy5zdHJpbmcuVW5pY29kZScsICdnb29nLnVyaS51dGlscycsICdnb29nLnVyaS51dGlscy5Db21wb25lbnRJbmRleCddLCB7fSk7Cmdvb2cuYWRkRGVwZW5kZW5jeSgnZWRpdG9yL2xpbmtfdGVzdC5qcycsIFsnZ29vZy5lZGl0b3IuTGlua1Rlc3QnXSwgWydnb29nLmRvbScsICdnb29nLmRvbS5Ob2RlVHlwZScsICdnb29nLmRvbS5SYW5nZScsICdnb29nLmRvbS5UYWdOYW1lJywgJ2dvb2cuZWRpdG9yLkxpbmsnLCAnZ29vZy50ZXN0aW5nLnRlc3RTdWl0ZScsICdnb29nLnVzZXJBZ2VudCddLCB7J2xhbmcnOiAnZXM2JywgJ21vZHVsZSc6ICdnb29nJ30pOwpnb29nLmFkZERlcGVuZGVuY3koJ2VkaXRvci9ub2RlLmpzJywgWydnb29nLmVkaXRvci5ub2RlJ10sIFsnZ29vZy5kb20nLCAnZ29vZy5kb20uTm9kZVR5cGUnLCAnZ29vZy5kb20uVGFnTmFtZScsICdnb29nLmRvbS5pdGVyLkNoaWxkSXRlcmF0b3InLCAnZ29vZy5kb20uaXRlci5TaWJsaW5nSXRlcmF0b3InLCAnZ29vZy5pdGVyJywgJ2dvb2cub2JqZWN0JywgJ2dvb2cuc3RyaW5nJywgJ2dvb2cuc3RyaW5nLlVuaWNvZGUnLCAnZ29vZy51c2VyQWdlbnQnXSwge30pOwpnb29nLmFkZERlcGVuZGVuY3koJ2VkaXRvci9ub2RlX3Rlc3QuanMnLCBbJ2dvb2cuZWRpdG9yLm5vZGVUZXN0J10sIFsnZ29vZy5hcnJheScsICdnb29nLmRvbScsICdnb29nLmRvbS5Ob2RlVHlwZScsICdnb29nLmRvbS5UYWdOYW1lJywgJ2dvb2cuZWRpdG9yLm5vZGUnLCAnZ29vZy5zdHlsZScsICdnb29nLnRlc3RpbmcuRXhwZWN0ZWRGYWlsdXJlcycsICdnb29nLnRlc3RpbmcuZG9tJywgJ2dvb2cudGVzdGluZy50ZXN0U3VpdGUnLCAnZ29vZy51c2VyQWdlbnQnXSwgeydsYW5nJzogJ2VzNicsICdtb2R1bGUnOiAnZ29vZyd9KTsKZ29vZy5hZGREZXBlbmRlbmN5KCdlZGl0b3IvcGx1Z2luLmpzJywgWydnb29nLmVkaXRvci5QbHVnaW4nXSwgWydnb29nLmVkaXRvci5GaWVsZCcsICdnb29nLmVkaXRvci5QbHVnaW5JbXBsJ10sIHt9KTsKZ29vZy5hZGREZXBlbmRlbmN5KCdlZGl0b3IvcGx1Z2luX2ltcGwuanMnLCBbJ2dvb2cuZWRpdG9yLlBsdWdpbkltcGwnXSwgWydnb29nLmV2ZW50cy5FdmVudFRhcmdldCcsICdnb29nLmZ1bmN0aW9ucycsICdnb29nLmxvZycsICdnb29nLm9iamVjdCcsICdnb29nLnJlZmxlY3QnLCAnZ29vZy51c2VyQWdlbnQnXSwge30pOwpnb29nLmFkZERlcGVuZGVuY3koJ2VkaXRvci9wbHVnaW5fdGVzdC5qcycsIFsnZ29vZy5lZGl0b3IuUGx1Z2luVGVzdCddLCBbJ2dvb2cuZWRpdG9yLkZpZWxkJywgJ2dvb2cuZWRpdG9yLlBsdWdpbicsICdnb29nLmZ1bmN0aW9ucycsICdnb29nLnRlc3RpbmcuU3RyaWN0TW9jaycsICdnb29nLnRlc3RpbmcudGVzdFN1aXRlJywgJ2dvb2cudXNlckFnZW50J10sIHsnbGFuZyc6ICdlczYnLCAnbW9kdWxlJzogJ2dvb2cnfSk7Cmdvb2cuYWRkRGVwZW5kZW5jeSgnZWRpdG9yL3BsdWdpbnMvYWJzdHJhY3RidWJibGVwbHVnaW4uanMnLCBbJ2dvb2cuZWRpdG9yLnBsdWdpbnMuQWJzdHJhY3RCdWJibGVQbHVnaW4nXSwgWydnb29nLmFycmF5JywgJ2dvb2cuZG9tJywgJ2dvb2cuZG9tLk5vZGVUeXBlJywgJ2dvb2cuZG9tLlJhbmdlJywgJ2dvb2cuZG9tLlRhZ05hbWUnLCAnZ29vZy5kb20uY2xhc3NsaXN0JywgJ2dvb2cuZWRpdG9yLlBsdWdpbicsICdnb29nLmVkaXRvci5zdHlsZScsICdnb29nLmV2ZW50cycsICdnb29nLmV2ZW50cy5FdmVudEhhbmRsZXInLCAnZ29vZy5ldmVudHMuRXZlbnRUeXBlJywgJ2dvb2cuZXZlbnRzLktleUNvZGVzJywgJ2dvb2cuZXZlbnRzLmFjdGlvbkV2ZW50V3JhcHBlcicsICdnb29nLmZ1bmN0aW9ucycsICdnb29nLnN0cmluZy5Vbmljb2RlJywgJ2dvb2cudWkuQ29tcG9uZW50JywgJ2dvb2cudWkuZWRpdG9yLkJ1YmJsZScsICdnb29nLnVzZXJBZ2VudCddLCB7fSk7Cmdvb2cuYWRkRGVwZW5kZW5jeSgnZWRpdG9yL3BsdWdpbnMvYWJzdHJhY3RidWJibGVwbHVnaW5fdGVzdC5qcycsIFsnZ29vZy5lZGl0b3IucGx1Z2lucy5BYnN0cmFjdEJ1YmJsZVBsdWdpblRlc3QnXSwgWydnb29nLmRvbScsICdnb29nLmRvbS5UYWdOYW1lJywgJ2dvb2cuZWRpdG9yLnBsdWdpbnMuQWJzdHJhY3RCdWJibGVQbHVnaW4nLCAnZ29vZy5ldmVudHMuQnJvd3NlckV2ZW50JywgJ2dvb2cuZXZlbnRzLkV2ZW50VHlwZScsICdnb29nLmV2ZW50cy5LZXlDb2RlcycsICdnb29nLmZ1bmN0aW9ucycsICdnb29nLnN0eWxlJywgJ2dvb2cudGVzdGluZy5lZGl0b3IuRmllbGRNb2NrJywgJ2dvb2cudGVzdGluZy5lZGl0b3IuVGVzdEhlbHBlcicsICdnb29nLnRlc3RpbmcuZXZlbnRzJywgJ2dvb2cudGVzdGluZy5ldmVudHMuRXZlbnQnLCAnZ29vZy50ZXN0aW5nLnRlc3RTdWl0ZScsICdnb29nLnVpLmVkaXRvci5CdWJibGUnLCAnZ29vZy51c2VyQWdlbnQnXSwgeydsYW5nJzogJ2VzNicsICdtb2R1bGUnOiAnZ29vZyd9KTsKZ29vZy5hZGREZXBlbmRlbmN5KCdlZGl0b3IvcGx1Z2lucy9hYnN0cmFjdGRpYWxvZ3BsdWdpbi5qcycsIFsnZ29vZy5lZGl0b3IucGx1Z2lucy5BYnN0cmFjdERpYWxvZ1BsdWdpbicsICdnb29nLmVkaXRvci5wbHVnaW5zLkFic3RyYWN0RGlhbG9nUGx1Z2luLkV2ZW50VHlwZSddLCBbJ2dvb2cuZG9tJywgJ2dvb2cuZG9tLlJhbmdlJywgJ2dvb2cuZWRpdG9yLkZpZWxkJywgJ2dvb2cuZWRpdG9yLlBsdWdpbicsICdnb29nLmVkaXRvci5yYW5nZScsICdnb29nLmV2ZW50cycsICdnb29nLnVpLmVkaXRvci5BYnN0cmFjdERpYWxvZyddLCB7fSk7Cmdvb2cuYWRkRGVwZW5kZW5jeSgnZWRpdG9yL3BsdWdpbnMvYWJzdHJhY3RkaWFsb2dwbHVnaW5fdGVzdC5qcycsIFsnZ29vZy5lZGl0b3IucGx1Z2lucy5BYnN0cmFjdERpYWxvZ1BsdWdpblRlc3QnXSwgWydnb29nLmRvbScsICdnb29nLmRvbS5TYXZlZFJhbmdlJywgJ2dvb2cuZG9tLlRhZ05hbWUnLCAnZ29vZy5lZGl0b3IuRmllbGQnLCAnZ29vZy5lZGl0b3IucGx1Z2lucy5BYnN0cmFjdERpYWxvZ1BsdWdpbicsICdnb29nLmV2ZW50cy5FdmVudCcsICdnb29nLmV2ZW50cy5FdmVudEhhbmRsZXInLCAnZ29vZy5mdW5jdGlvbnMnLCAnZ29vZy5odG1sLlNhZmVIdG1sJywgJ2dvb2cudGVzdGluZy5Nb2NrQ2xvY2snLCAnZ29vZy50ZXN0aW5nLk1vY2tDb250cm9sJywgJ2dvb2cudGVzdGluZy5Qcm9wZXJ0eVJlcGxhY2VyJywgJ2dvb2cudGVzdGluZy5lZGl0b3IuRmllbGRNb2NrJywgJ2dvb2cudGVzdGluZy5lZGl0b3IuVGVzdEhlbHBlcicsICdnb29nLnRlc3RpbmcuZXZlbnRzJywgJ2dvb2cudGVzdGluZy5tb2NrbWF0Y2hlcnMuQXJndW1lbnRNYXRjaGVyJywgJ2dvb2cudGVzdGluZy50ZXN0U3VpdGUnLCAnZ29vZy51aS5lZGl0b3IuQWJzdHJhY3REaWFsb2cnLCAnZ29vZy51c2VyQWdlbnQnXSwgeydsYW5nJzogJ2VzNicsICdtb2R1bGUnOiAnZ29vZyd9KTsKZ29vZy5hZGREZXBlbmRlbmN5KCdlZGl0b3IvcGx1Z2lucy9hYnN0cmFjdHRhYmhhbmRsZXIuanMnLCBbJ2dvb2cuZWRpdG9yLnBsdWdpbnMuQWJzdHJhY3RUYWJIYW5kbGVyJ10sIFsnZ29vZy5lZGl0b3IuUGx1Z2luJywgJ2dvb2cuZXZlbnRzLktleUNvZGVzJywgJ2dvb2cudXNlckFnZW50J10sIHt9KTsKZ29vZy5hZGREZXBlbmRlbmN5KCdlZGl0b3IvcGx1Z2lucy9hYnN0cmFjdHRhYmhhbmRsZXJfdGVzdC5qcycsIFsnZ29vZy5lZGl0b3IucGx1Z2lucy5BYnN0cmFjdFRhYkhhbmRsZXJUZXN0J10sIFsnZ29vZy5lZGl0b3IuRmllbGQnLCAnZ29vZy5lZGl0b3IucGx1Z2lucy5BYnN0cmFjdFRhYkhhbmRsZXInLCAnZ29vZy5ldmVudHMuQnJvd3NlckV2ZW50JywgJ2dvb2cuZXZlbnRzLktleUNvZGVzJywgJ2dvb2cudGVzdGluZy5TdHJpY3RNb2NrJywgJ2dvb2cudGVzdGluZy5lZGl0b3IuRmllbGRNb2NrJywgJ2dvb2cudGVzdGluZy50ZXN0U3VpdGUnLCAnZ29vZy51c2VyQWdlbnQnXSwgeydsYW5nJzogJ2VzNicsICdtb2R1bGUnOiAnZ29vZyd9KTsKZ29vZy5hZGREZXBlbmRlbmN5KCdlZGl0b3IvcGx1Z2lucy9iYXNpY3RleHRmb3JtYXR0ZXIuanMnLCBbJ2dvb2cuZWRpdG9yLnBsdWdpbnMuQmFzaWNUZXh0Rm9ybWF0dGVyJywgJ2dvb2cuZWRpdG9yLnBsdWdpbnMuQmFzaWNUZXh0Rm9ybWF0dGVyLkNPTU1BTkQnXSwgWydnb29nLmFycmF5JywgJ2dvb2cuZG9tJywgJ2dvb2cuZG9tLk5vZGVUeXBlJywgJ2dvb2cuZG9tLlJhbmdlJywgJ2dvb2cuZG9tLlRhZ05hbWUnLCAnZ29vZy5lZGl0b3IuQnJvd3NlckZlYXR1cmUnLCAnZ29vZy5lZGl0b3IuQ29tbWFuZCcsICdnb29nLmVkaXRvci5MaW5rJywgJ2dvb2cuZWRpdG9yLlBsdWdpbicsICdnb29nLmVkaXRvci5ub2RlJywgJ2dvb2cuZWRpdG9yLnJhbmdlJywgJ2dvb2cuZWRpdG9yLnN0eWxlJywgJ2dvb2cuaXRlcicsICdnb29nLml0ZXIuU3RvcEl0ZXJhdGlvbicsICdnb29nLmxvZycsICdnb29nLm9iamVjdCcsICdnb29nLnN0cmluZycsICdnb29nLnN0cmluZy5Vbmljb2RlJywgJ2dvb2cuc3R5bGUnLCAnZ29vZy51aS5lZGl0b3IubWVzc2FnZXMnLCAnZ29vZy51c2VyQWdlbnQnXSwge30pOwpnb29nLmFkZERlcGVuZGVuY3koJ2VkaXRvci9wbHVnaW5zL2Jhc2ljdGV4dGZvcm1hdHRlcl90ZXN0LmpzJywgWydnb29nLmVkaXRvci5wbHVnaW5zLkJhc2ljVGV4dEZvcm1hdHRlclRlc3QnXSwgWydnb29nLmFycmF5JywgJ2dvb2cuZG9tJywgJ2dvb2cuZG9tLlJhbmdlJywgJ2dvb2cuZG9tLlRhZ05hbWUnLCAnZ29vZy5lZGl0b3IuQnJvd3NlckZlYXR1cmUnLCAnZ29vZy5lZGl0b3IuQ29tbWFuZCcsICdnb29nLmVkaXRvci5GaWVsZCcsICdnb29nLmVkaXRvci5QbHVnaW4nLCAnZ29vZy5lZGl0b3IucGx1Z2lucy5CYXNpY1RleHRGb3JtYXR0ZXInLCAnZ29vZy5odG1sLlNhZmVIdG1sJywgJ2dvb2cub2JqZWN0JywgJ2dvb2cuc3R5bGUnLCAnZ29vZy50ZXN0aW5nLkV4cGVjdGVkRmFpbHVyZXMnLCAnZ29vZy50ZXN0aW5nLkxvb3NlTW9jaycsICdnb29nLnRlc3RpbmcuUHJvcGVydHlSZXBsYWNlcicsICdnb29nLnRlc3RpbmcuZWRpdG9yLkZpZWxkTW9jaycsICdnb29nLnRlc3RpbmcuZWRpdG9yLlRlc3RIZWxwZXInLCAnZ29vZy50ZXN0aW5nLm1vY2ttYXRjaGVycycsICdnb29nLnRlc3RpbmcudGVzdFN1aXRlJywgJ2dvb2cudXNlckFnZW50JywgJ2dvb2cudXNlckFnZW50LnByb2R1Y3QnXSwgeydsYW5nJzogJ2VzNicsICdtb2R1bGUnOiAnZ29vZyd9KTsKZ29vZy5hZGREZXBlbmRlbmN5KCdlZGl0b3IvcGx1Z2lucy9ibG9ja3F1b3RlLmpzJywgWydnb29nLmVkaXRvci5wbHVnaW5zLkJsb2NrcXVvdGUnXSwgWydnb29nLmRvbScsICdnb29nLmRvbS5Ob2RlVHlwZScsICdnb29nLmRvbS5UYWdOYW1lJywgJ2dvb2cuZG9tLmNsYXNzbGlzdCcsICdnb29nLmVkaXRvci5Ccm93c2VyRmVhdHVyZScsICdnb29nLmVkaXRvci5Db21tYW5kJywgJ2dvb2cuZWRpdG9yLlBsdWdpbicsICdnb29nLmVkaXRvci5ub2RlJywgJ2dvb2cuZnVuY3Rpb25zJywgJ2dvb2cubG9nJ10sIHt9KTsKZ29vZy5hZGREZXBlbmRlbmN5KCdlZGl0b3IvcGx1Z2lucy9ibG9ja3F1b3RlX3Rlc3QuanMnLCBbJ2dvb2cuZWRpdG9yLnBsdWdpbnMuQmxvY2txdW90ZVRlc3QnXSwgWydnb29nLmRvbScsICdnb29nLmRvbS5SYW5nZScsICdnb29nLmRvbS5UYWdOYW1lJywgJ2dvb2cuZWRpdG9yLkJyb3dzZXJGZWF0dXJlJywgJ2dvb2cuZWRpdG9yLnBsdWdpbnMuQmxvY2txdW90ZScsICdnb29nLnRlc3RpbmcuZWRpdG9yLkZpZWxkTW9jaycsICdnb29nLnRlc3RpbmcuZWRpdG9yLlRlc3RIZWxwZXInLCAnZ29vZy50ZXN0aW5nLnRlc3RTdWl0ZSddLCB7J2xhbmcnOiAnZXM2JywgJ21vZHVsZSc6ICdnb29nJ30pOwpnb29nLmFkZERlcGVuZGVuY3koJ2VkaXRvci9wbHVnaW5zL2Vtb3RpY29ucy5qcycsIFsnZ29vZy5lZGl0b3IucGx1Z2lucy5FbW90aWNvbnMnXSwgWydnb29nLmRvbS5UYWdOYW1lJywgJ2dvb2cuZWRpdG9yLlBsdWdpbicsICdnb29nLmVkaXRvci5yYW5nZScsICdnb29nLmZ1bmN0aW9ucycsICdnb29nLnVpLmVtb2ppLkVtb2ppJywgJ2dvb2cudXNlckFnZW50J10sIHt9KTsKZ29vZy5hZGREZXBlbmRlbmN5KCdlZGl0b3IvcGx1Z2lucy9lbW90aWNvbnNfdGVzdC5qcycsIFsnZ29vZy5lZGl0b3IucGx1Z2lucy5FbW90aWNvbnNUZXN0J10sIFsnZ29vZy5VcmknLCAnZ29vZy5hcnJheScsICdnb29nLmRvbScsICdnb29nLmRvbS5UYWdOYW1lJywgJ2dvb2cuZWRpdG9yLkZpZWxkJywgJ2dvb2cuZWRpdG9yLnBsdWdpbnMuRW1vdGljb25zJywgJ2dvb2cudGVzdGluZy50ZXN0U3VpdGUnLCAnZ29vZy51aS5lbW9qaS5FbW9qaScsICdnb29nLnVzZXJBZ2VudCddLCB7J2xhbmcnOiAnZXM2JywgJ21vZHVsZSc6ICdnb29nJ30pOwpnb29nLmFkZERlcGVuZGVuY3koJ2VkaXRvci9wbHVnaW5zL2VudGVyaGFuZGxlci5qcycsIFsnZ29vZy5lZGl0b3IucGx1Z2lucy5FbnRlckhhbmRsZXInXSwgWydnb29nLmRvbScsICdnb29nLmRvbS5Ob2RlT2Zmc2V0JywgJ2dvb2cuZG9tLk5vZGVUeXBlJywgJ2dvb2cuZG9tLlJhbmdlJywgJ2dvb2cuZG9tLlRhZ05hbWUnLCAnZ29vZy5lZGl0b3IuQnJvd3NlckZlYXR1cmUnLCAnZ29vZy5lZGl0b3IuUGx1Z2luJywgJ2dvb2cuZWRpdG9yLm5vZGUnLCAnZ29vZy5lZGl0b3IucGx1Z2lucy5CbG9ja3F1b3RlJywgJ2dvb2cuZWRpdG9yLnJhbmdlJywgJ2dvb2cuZWRpdG9yLnN0eWxlJywgJ2dvb2cuZXZlbnRzLktleUNvZGVzJywgJ2dvb2cuZnVuY3Rpb25zJywgJ2dvb2cub2JqZWN0JywgJ2dvb2cuc3RyaW5nJywgJ2dvb2cudXNlckFnZW50J10sIHt9KTsKZ29vZy5hZGREZXBlbmRlbmN5KCdlZGl0b3IvcGx1Z2lucy9lbnRlcmhhbmRsZXJfdGVzdC5qcycsIFsnZ29vZy5lZGl0b3IucGx1Z2lucy5FbnRlckhhbmRsZXJUZXN0J10sIFsnZ29vZy5kb20nLCAnZ29vZy5kb20uTm9kZVR5cGUnLCAnZ29vZy5kb20uUmFuZ2UnLCAnZ29vZy5kb20uVGFnTmFtZScsICdnb29nLmVkaXRvci5Ccm93c2VyRmVhdHVyZScsICdnb29nLmVkaXRvci5GaWVsZCcsICdnb29nLmVkaXRvci5QbHVnaW4nLCAnZ29vZy5lZGl0b3IucGx1Z2lucy5CbG9ja3F1b3RlJywgJ2dvb2cuZWRpdG9yLnBsdWdpbnMuRW50ZXJIYW5kbGVyJywgJ2dvb2cuZWRpdG9yLnJhbmdlJywgJ2dvb2cuZXZlbnRzJywgJ2dvb2cuZXZlbnRzLktleUNvZGVzJywgJ2dvb2cuaHRtbC50ZXN0aW5nJywgJ2dvb2cudGVzdGluZy5FeHBlY3RlZEZhaWx1cmVzJywgJ2dvb2cudGVzdGluZy5Nb2NrQ2xvY2snLCAnZ29vZy50ZXN0aW5nLmRvbScsICdnb29nLnRlc3RpbmcuZWRpdG9yLlRlc3RIZWxwZXInLCAnZ29vZy50ZXN0aW5nLmV2ZW50cycsICdnb29nLnRlc3RpbmcudGVzdFN1aXRlJywgJ2dvb2cudXNlckFnZW50J10sIHsnbGFuZyc6ICdlczYnLCAnbW9kdWxlJzogJ2dvb2cnfSk7Cmdvb2cuYWRkRGVwZW5kZW5jeSgnZWRpdG9yL3BsdWdpbnMvZmlyc3RzdHJvbmcuanMnLCBbJ2dvb2cuZWRpdG9yLnBsdWdpbnMuRmlyc3RTdHJvbmcnXSwgWydnb29nLmRvbS5Ob2RlVHlwZScsICdnb29nLmRvbS5UYWdJdGVyYXRvcicsICdnb29nLmRvbS5UYWdOYW1lJywgJ2dvb2cuZWRpdG9yLkNvbW1hbmQnLCAnZ29vZy5lZGl0b3IuRmllbGQnLCAnZ29vZy5lZGl0b3IuUGx1Z2luJywgJ2dvb2cuZWRpdG9yLm5vZGUnLCAnZ29vZy5lZGl0b3IucmFuZ2UnLCAnZ29vZy5pMThuLmJpZGknLCAnZ29vZy5pMThuLnVDaGFyJywgJ2dvb2cuaXRlcicsICdnb29nLnVzZXJBZ2VudCddLCB7fSk7Cmdvb2cuYWRkRGVwZW5kZW5jeSgnZWRpdG9yL3BsdWdpbnMvZmlyc3RzdHJvbmdfdGVzdC5qcycsIFsnZ29vZy5lZGl0b3IucGx1Z2lucy5GaXJzdFN0cm9uZ1Rlc3QnXSwgWydnb29nLmRvbS5SYW5nZScsICdnb29nLmVkaXRvci5Db21tYW5kJywgJ2dvb2cuZWRpdG9yLkZpZWxkJywgJ2dvb2cuZWRpdG9yLnBsdWdpbnMuRmlyc3RTdHJvbmcnLCAnZ29vZy5lZGl0b3IucmFuZ2UnLCAnZ29vZy5ldmVudHMuS2V5Q29kZXMnLCAnZ29vZy5odG1sLnRlc3RpbmcnLCAnZ29vZy50ZXN0aW5nLk1vY2tDbG9jaycsICdnb29nLnRlc3RpbmcuZWRpdG9yLlRlc3RIZWxwZXInLCAnZ29vZy50ZXN0aW5nLmV2ZW50cycsICdnb29nLnRlc3RpbmcudGVzdFN1aXRlJywgJ2dvb2cudXNlckFnZW50J10sIHsnbGFuZyc6ICdlczYnLCAnbW9kdWxlJzogJ2dvb2cnfSk7Cmdvb2cuYWRkRGVwZW5kZW5jeSgnZWRpdG9yL3BsdWdpbnMvaGVhZGVyZm9ybWF0dGVyLmpzJywgWydnb29nLmVkaXRvci5wbHVnaW5zLkhlYWRlckZvcm1hdHRlciddLCBbJ2dvb2cuZWRpdG9yLkNvbW1hbmQnLCAnZ29vZy5lZGl0b3IuUGx1Z2luJywgJ2dvb2cudXNlckFnZW50J10sIHt9KTsKZ29vZy5hZGREZXBlbmRlbmN5KCdlZGl0b3IvcGx1Z2lucy9oZWFkZXJmb3JtYXR0ZXJfdGVzdC5qcycsIFsnZ29vZy5lZGl0b3IucGx1Z2lucy5IZWFkZXJGb3JtYXR0ZXJUZXN0J10sIFsnZ29vZy5kb20nLCAnZ29vZy5lZGl0b3IuQ29tbWFuZCcsICdnb29nLmVkaXRvci5wbHVnaW5zLkJhc2ljVGV4dEZvcm1hdHRlcicsICdnb29nLmVkaXRvci5wbHVnaW5zLkhlYWRlckZvcm1hdHRlcicsICdnb29nLmV2ZW50cy5Ccm93c2VyRXZlbnQnLCAnZ29vZy50ZXN0aW5nLkxvb3NlTW9jaycsICdnb29nLnRlc3RpbmcuZWRpdG9yLkZpZWxkTW9jaycsICdnb29nLnRlc3RpbmcuZWRpdG9yLlRlc3RIZWxwZXInLCAnZ29vZy50ZXN0aW5nLnRlc3RTdWl0ZScsICdnb29nLnVzZXJBZ2VudCddLCB7J2xhbmcnOiAnZXM2JywgJ21vZHVsZSc6ICdnb29nJ30pOwpnb29nLmFkZERlcGVuZGVuY3koJ2VkaXRvci9wbHVnaW5zL2xpbmtidWJibGUuanMnLCBbJ2dvb2cuZWRpdG9yLnBsdWdpbnMuTGlua0J1YmJsZScsICdnb29nLmVkaXRvci5wbHVnaW5zLkxpbmtCdWJibGUuQWN0aW9uJ10sIFsnZ29vZy5hcnJheScsICdnb29nLmRvbScsICdnb29nLmRvbS5SYW5nZScsICdnb29nLmRvbS5UYWdOYW1lJywgJ2dvb2cuZWRpdG9yLkNvbW1hbmQnLCAnZ29vZy5lZGl0b3IuTGluaycsICdnb29nLmVkaXRvci5wbHVnaW5zLkFic3RyYWN0QnViYmxlUGx1Z2luJywgJ2dvb2cuZnVuY3Rpb25zJywgJ2dvb2cuc3RyaW5nJywgJ2dvb2cuc3R5bGUnLCAnZ29vZy51aS5lZGl0b3IubWVzc2FnZXMnLCAnZ29vZy51cmkudXRpbHMnLCAnZ29vZy53aW5kb3cnXSwge30pOwpnb29nLmFkZERlcGVuZGVuY3koJ2VkaXRvci9wbHVnaW5zL2xpbmtidWJibGVfdGVzdC5qcycsIFsnZ29vZy5lZGl0b3IucGx1Z2lucy5MaW5rQnViYmxlVGVzdCddLCBbJ2dvb2cuZG9tJywgJ2dvb2cuZG9tLlJhbmdlJywgJ2dvb2cuZG9tLlRhZ05hbWUnLCAnZ29vZy5lZGl0b3IuQ29tbWFuZCcsICdnb29nLmVkaXRvci5MaW5rJywgJ2dvb2cuZWRpdG9yLnBsdWdpbnMuTGlua0J1YmJsZScsICdnb29nLmV2ZW50cy5Ccm93c2VyRXZlbnQnLCAnZ29vZy5ldmVudHMuRXZlbnQnLCAnZ29vZy5ldmVudHMuRXZlbnRUeXBlJywgJ2dvb2cuZXZlbnRzLktleUNvZGVzJywgJ2dvb2cuc3RyaW5nJywgJ2dvb2cuc3R5bGUnLCAnZ29vZy50ZXN0aW5nLkZ1bmN0aW9uTW9jaycsICdnb29nLnRlc3RpbmcuUHJvcGVydHlSZXBsYWNlcicsICdnb29nLnRlc3RpbmcuZWRpdG9yLkZpZWxkTW9jaycsICdnb29nLnRlc3RpbmcuZWRpdG9yLlRlc3RIZWxwZXInLCAnZ29vZy50ZXN0aW5nLmV2ZW50cycsICdnb29nLnRlc3RpbmcudGVzdFN1aXRlJywgJ2dvb2cudXNlckFnZW50J10sIHsnbGFuZyc6ICdlczYnLCAnbW9kdWxlJzogJ2dvb2cnfSk7Cmdvb2cuYWRkRGVwZW5kZW5jeSgnZWRpdG9yL3BsdWdpbnMvbGlua2RpYWxvZ3BsdWdpbi5qcycsIFsnZ29vZy5lZGl0b3IucGx1Z2lucy5MaW5rRGlhbG9nUGx1Z2luJ10sIFsnZ29vZy5hcnJheScsICdnb29nLmRvbScsICdnb29nLmVkaXRvci5Db21tYW5kJywgJ2dvb2cuZWRpdG9yLnBsdWdpbnMuQWJzdHJhY3REaWFsb2dQbHVnaW4nLCAnZ29vZy5ldmVudHMuRXZlbnRIYW5kbGVyJywgJ2dvb2cuZnVuY3Rpb25zJywgJ2dvb2cudWkuZWRpdG9yLkFic3RyYWN0RGlhbG9nJywgJ2dvb2cudWkuZWRpdG9yLkxpbmtEaWFsb2cnLCAnZ29vZy51cmkudXRpbHMnXSwge30pOwpnb29nLmFkZERlcGVuZGVuY3koJ2VkaXRvci9wbHVnaW5zL2xpbmtkaWFsb2dwbHVnaW5fdGVzdC5qcycsIFsnZ29vZy51aS5lZGl0b3IucGx1Z2lucy5MaW5rRGlhbG9nVGVzdCddLCBbJ2dvb2cuZG9tJywgJ2dvb2cuZG9tLkRvbUhlbHBlcicsICdnb29nLmRvbS5Ob2RlVHlwZScsICdnb29nLmRvbS5UYWdOYW1lJywgJ2dvb2cuZWRpdG9yLkJyb3dzZXJGZWF0dXJlJywgJ2dvb2cuZWRpdG9yLkNvbW1hbmQnLCAnZ29vZy5lZGl0b3IuRmllbGQnLCAnZ29vZy5lZGl0b3IuTGluaycsICdnb29nLmVkaXRvci5wbHVnaW5zLkxpbmtEaWFsb2dQbHVnaW4nLCAnZ29vZy5odG1sLlNhZmVIdG1sJywgJ2dvb2cuc3RyaW5nJywgJ2dvb2cuc3RyaW5nLlVuaWNvZGUnLCAnZ29vZy50ZXN0aW5nLk1vY2tDb250cm9sJywgJ2dvb2cudGVzdGluZy5lZGl0b3IuRmllbGRNb2NrJywgJ2dvb2cudGVzdGluZy5lZGl0b3IuVGVzdEhlbHBlcicsICdnb29nLnRlc3RpbmcuZWRpdG9yLmRvbScsICdnb29nLnRlc3RpbmcuZXZlbnRzJywgJ2dvb2cudGVzdGluZy5tb2NrbWF0Y2hlcnMnLCAnZ29vZy50ZXN0aW5nLnRlc3RTdWl0ZScsICdnb29nLnVpLmVkaXRvci5BYnN0cmFjdERpYWxvZycsICdnb29nLnVpLmVkaXRvci5MaW5rRGlhbG9nJywgJ2dvb2cudXNlckFnZW50J10sIHsnbGFuZyc6ICdlczYnLCAnbW9kdWxlJzogJ2dvb2cnfSk7Cmdvb2cuYWRkRGVwZW5kZW5jeSgnZWRpdG9yL3BsdWdpbnMvbGlua3Nob3J0Y3V0cGx1Z2luLmpzJywgWydnb29nLmVkaXRvci5wbHVnaW5zLkxpbmtTaG9ydGN1dFBsdWdpbiddLCBbJ2dvb2cuZWRpdG9yLkNvbW1hbmQnLCAnZ29vZy5lZGl0b3IuUGx1Z2luJ10sIHt9KTsKZ29vZy5hZGREZXBlbmRlbmN5KCdlZGl0b3IvcGx1Z2lucy9saW5rc2hvcnRjdXRwbHVnaW5fdGVzdC5qcycsIFsnZ29vZy5lZGl0b3IucGx1Z2lucy5MaW5rU2hvcnRjdXRQbHVnaW5UZXN0J10sIFsnZ29vZy5kb20nLCAnZ29vZy5kb20uVGFnTmFtZScsICdnb29nLmVkaXRvci5GaWVsZCcsICdnb29nLmVkaXRvci5wbHVnaW5zLkJhc2ljVGV4dEZvcm1hdHRlcicsICdnb29nLmVkaXRvci5wbHVnaW5zLkxpbmtCdWJibGUnLCAnZ29vZy5lZGl0b3IucGx1Z2lucy5MaW5rU2hvcnRjdXRQbHVnaW4nLCAnZ29vZy5ldmVudHMuS2V5Q29kZXMnLCAnZ29vZy50ZXN0aW5nLlByb3BlcnR5UmVwbGFjZXInLCAnZ29vZy50ZXN0aW5nLmRvbScsICdnb29nLnRlc3RpbmcuZXZlbnRzJywgJ2dvb2cudGVzdGluZy50ZXN0U3VpdGUnLCAnZ29vZy51c2VyQWdlbnQucHJvZHVjdCddLCB7J2xhbmcnOiAnZXM2JywgJ21vZHVsZSc6ICdnb29nJ30pOwpnb29nLmFkZERlcGVuZGVuY3koJ2VkaXRvci9wbHVnaW5zL2xpc3R0YWJoYW5kbGVyLmpzJywgWydnb29nLmVkaXRvci5wbHVnaW5zLkxpc3RUYWJIYW5kbGVyJ10sIFsnZ29vZy5kb20nLCAnZ29vZy5kb20uVGFnTmFtZScsICdnb29nLmVkaXRvci5Db21tYW5kJywgJ2dvb2cuZWRpdG9yLnBsdWdpbnMuQWJzdHJhY3RUYWJIYW5kbGVyJywgJ2dvb2cuaXRlciddLCB7fSk7Cmdvb2cuYWRkRGVwZW5kZW5jeSgnZWRpdG9yL3BsdWdpbnMvbGlzdHRhYmhhbmRsZXJfdGVzdC5qcycsIFsnZ29vZy5lZGl0b3IucGx1Z2lucy5MaXN0VGFiSGFuZGxlclRlc3QnXSwgWydnb29nLmRvbScsICdnb29nLmVkaXRvci5Db21tYW5kJywgJ2dvb2cuZWRpdG9yLnBsdWdpbnMuTGlzdFRhYkhhbmRsZXInLCAnZ29vZy5ldmVudHMuQnJvd3NlckV2ZW50JywgJ2dvb2cuZXZlbnRzLktleUNvZGVzJywgJ2dvb2cuZnVuY3Rpb25zJywgJ2dvb2cudGVzdGluZy5TdHJpY3RNb2NrJywgJ2dvb2cudGVzdGluZy5lZGl0b3IuRmllbGRNb2NrJywgJ2dvb2cudGVzdGluZy5lZGl0b3IuVGVzdEhlbHBlcicsICdnb29nLnRlc3RpbmcudGVzdFN1aXRlJ10sIHsnbGFuZyc6ICdlczYnLCAnbW9kdWxlJzogJ2dvb2cnfSk7Cmdvb2cuYWRkRGVwZW5kZW5jeSgnZWRpdG9yL3BsdWdpbnMvbG9yZW1pcHN1bS5qcycsIFsnZ29vZy5lZGl0b3IucGx1Z2lucy5Mb3JlbUlwc3VtJ10sIFsnZ29vZy5hc3NlcnRzJywgJ2dvb2cuZG9tJywgJ2dvb2cuZWRpdG9yLkNvbW1hbmQnLCAnZ29vZy5lZGl0b3IuRmllbGQnLCAnZ29vZy5lZGl0b3IuUGx1Z2luJywgJ2dvb2cuZWRpdG9yLm5vZGUnLCAnZ29vZy5mdW5jdGlvbnMnLCAnZ29vZy5odG1sLlNhZmVIdG1sJywgJ2dvb2cudXNlckFnZW50J10sIHt9KTsKZ29vZy5hZGREZXBlbmRlbmN5KCdlZGl0b3IvcGx1Z2lucy9sb3JlbWlwc3VtX3Rlc3QuanMnLCBbJ2dvb2cuZWRpdG9yLnBsdWdpbnMuTG9yZW1JcHN1bVRlc3QnXSwgWydnb29nLmRvbScsICdnb29nLmVkaXRvci5Db21tYW5kJywgJ2dvb2cuZWRpdG9yLkZpZWxkJywgJ2dvb2cuZWRpdG9yLnBsdWdpbnMuTG9yZW1JcHN1bScsICdnb29nLmh0bWwuU2FmZUh0bWwnLCAnZ29vZy5zdHJpbmcuVW5pY29kZScsICdnb29nLnRlc3RpbmcudGVzdFN1aXRlJywgJ2dvb2cudXNlckFnZW50J10sIHsnbGFuZyc6ICdlczYnLCAnbW9kdWxlJzogJ2dvb2cnfSk7Cmdvb2cuYWRkRGVwZW5kZW5jeSgnZWRpdG9yL3BsdWdpbnMvcmVtb3ZlZm9ybWF0dGluZy5qcycsIFsnZ29vZy5lZGl0b3IucGx1Z2lucy5SZW1vdmVGb3JtYXR0aW5nJ10sIFsnZ29vZy5kb20nLCAnZ29vZy5kb20uTm9kZVR5cGUnLCAnZ29vZy5kb20uUmFuZ2UnLCAnZ29vZy5kb20uVGFnTmFtZScsICdnb29nLmVkaXRvci5Ccm93c2VyRmVhdHVyZScsICdnb29nLmVkaXRvci5QbHVnaW4nLCAnZ29vZy5lZGl0b3Iubm9kZScsICdnb29nLmVkaXRvci5yYW5nZScsICdnb29nLnN0cmluZycsICdnb29nLnVzZXJBZ2VudCddLCB7fSk7Cmdvb2cuYWRkRGVwZW5kZW5jeSgnZWRpdG9yL3BsdWdpbnMvcmVtb3ZlZm9ybWF0dGluZ190ZXN0LmpzJywgWydnb29nLmVkaXRvci5wbHVnaW5zLlJlbW92ZUZvcm1hdHRpbmdUZXN0J10sIFsnZ29vZy5kb20nLCAnZ29vZy5kb20uUmFuZ2UnLCAnZ29vZy5kb20uVGFnTmFtZScsICdnb29nLmVkaXRvci5Ccm93c2VyRmVhdHVyZScsICdnb29nLmVkaXRvci5wbHVnaW5zLlJlbW92ZUZvcm1hdHRpbmcnLCAnZ29vZy5zdHJpbmcnLCAnZ29vZy50ZXN0aW5nLkV4cGVjdGVkRmFpbHVyZXMnLCAnZ29vZy50ZXN0aW5nLmRvbScsICdnb29nLnRlc3RpbmcuZWRpdG9yLkZpZWxkTW9jaycsICdnb29nLnRlc3RpbmcuZWRpdG9yLlRlc3RIZWxwZXInLCAnZ29vZy50ZXN0aW5nLnRlc3RTdWl0ZScsICdnb29nLnVzZXJBZ2VudCcsICdnb29nLnVzZXJBZ2VudC5wcm9kdWN0J10sIHsnbGFuZyc6ICdlczYnLCAnbW9kdWxlJzogJ2dvb2cnfSk7Cmdvb2cuYWRkRGVwZW5kZW5jeSgnZWRpdG9yL3BsdWdpbnMvc3BhY2VzdGFiaGFuZGxlci5qcycsIFsnZ29vZy5lZGl0b3IucGx1Z2lucy5TcGFjZXNUYWJIYW5kbGVyJ10sIFsnZ29vZy5kb20uVGFnTmFtZScsICdnb29nLmVkaXRvci5wbHVnaW5zLkFic3RyYWN0VGFiSGFuZGxlcicsICdnb29nLmVkaXRvci5yYW5nZSddLCB7fSk7Cmdvb2cuYWRkRGVwZW5kZW5jeSgnZWRpdG9yL3BsdWdpbnMvc3BhY2VzdGFiaGFuZGxlcl90ZXN0LmpzJywgWydnb29nLmVkaXRvci5wbHVnaW5zLlNwYWNlc1RhYkhhbmRsZXJUZXN0J10sIFsnZ29vZy5kb20nLCAnZ29vZy5kb20uUmFuZ2UnLCAnZ29vZy5lZGl0b3IucGx1Z2lucy5TcGFjZXNUYWJIYW5kbGVyJywgJ2dvb2cuZXZlbnRzLkJyb3dzZXJFdmVudCcsICdnb29nLmV2ZW50cy5LZXlDb2RlcycsICdnb29nLmZ1bmN0aW9ucycsICdnb29nLnRlc3RpbmcuU3RyaWN0TW9jaycsICdnb29nLnRlc3RpbmcuZWRpdG9yLkZpZWxkTW9jaycsICdnb29nLnRlc3RpbmcuZWRpdG9yLlRlc3RIZWxwZXInLCAnZ29vZy50ZXN0aW5nLnRlc3RTdWl0ZSddLCB7J2xhbmcnOiAnZXM2JywgJ21vZHVsZSc6ICdnb29nJ30pOwpnb29nLmFkZERlcGVuZGVuY3koJ2VkaXRvci9wbHVnaW5zL3RhYmxlZWRpdG9yLmpzJywgWydnb29nLmVkaXRvci5wbHVnaW5zLlRhYmxlRWRpdG9yJ10sIFsnZ29vZy5hcnJheScsICdnb29nLmRvbScsICdnb29nLmRvbS5SYW5nZScsICdnb29nLmRvbS5UYWdOYW1lJywgJ2dvb2cuZWRpdG9yLlBsdWdpbicsICdnb29nLmVkaXRvci5UYWJsZScsICdnb29nLmVkaXRvci5ub2RlJywgJ2dvb2cuZWRpdG9yLnJhbmdlJywgJ2dvb2cub2JqZWN0JywgJ2dvb2cudXNlckFnZW50J10sIHt9KTsKZ29vZy5hZGREZXBlbmRlbmN5KCdlZGl0b3IvcGx1Z2lucy90YWJsZWVkaXRvcl90ZXN0LmpzJywgWydnb29nLmVkaXRvci5wbHVnaW5zLlRhYmxlRWRpdG9yVGVzdCddLCBbJ2dvb2cuZG9tJywgJ2dvb2cuZG9tLlJhbmdlJywgJ2dvb2cuZG9tLlRhZ05hbWUnLCAnZ29vZy5lZGl0b3IucGx1Z2lucy5UYWJsZUVkaXRvcicsICdnb29nLm9iamVjdCcsICdnb29nLnN0cmluZycsICdnb29nLnRlc3RpbmcuRXhwZWN0ZWRGYWlsdXJlcycsICdnb29nLnRlc3RpbmcuVGVzdENhc2UnLCAnZ29vZy50ZXN0aW5nLmVkaXRvci5GaWVsZE1vY2snLCAnZ29vZy50ZXN0aW5nLmVkaXRvci5UZXN0SGVscGVyJywgJ2dvb2cudGVzdGluZy50ZXN0U3VpdGUnLCAnZ29vZy51c2VyQWdlbnQnXSwgeydsYW5nJzogJ2VzNicsICdtb2R1bGUnOiAnZ29vZyd9KTsKZ29vZy5hZGREZXBlbmRlbmN5KCdlZGl0b3IvcGx1Z2lucy90YWdvbmVudGVyaGFuZGxlci5qcycsIFsnZ29vZy5lZGl0b3IucGx1Z2lucy5UYWdPbkVudGVySGFuZGxlciddLCBbJ2dvb2cuZG9tJywgJ2dvb2cuZG9tLk5vZGVUeXBlJywgJ2dvb2cuZG9tLlJhbmdlJywgJ2dvb2cuZG9tLlRhZ05hbWUnLCAnZ29vZy5lZGl0b3IuQ29tbWFuZCcsICdnb29nLmVkaXRvci5ub2RlJywgJ2dvb2cuZWRpdG9yLnBsdWdpbnMuRW50ZXJIYW5kbGVyJywgJ2dvb2cuZWRpdG9yLnJhbmdlJywgJ2dvb2cuZWRpdG9yLnN0eWxlJywgJ2dvb2cuZXZlbnRzLktleUNvZGVzJywgJ2dvb2cuZnVuY3Rpb25zJywgJ2dvb2cuc3RyaW5nLlVuaWNvZGUnLCAnZ29vZy5zdHlsZScsICdnb29nLnVzZXJBZ2VudCddLCB7fSk7Cmdvb2cuYWRkRGVwZW5kZW5jeSgnZWRpdG9yL3BsdWdpbnMvdGFnb25lbnRlcmhhbmRsZXJfdGVzdC5qcycsIFsnZ29vZy5lZGl0b3IucGx1Z2lucy5UYWdPbkVudGVySGFuZGxlclRlc3QnXSwgWydnb29nLmRvbScsICdnb29nLmRvbS5Ob2RlVHlwZScsICdnb29nLmRvbS5SYW5nZScsICdnb29nLmRvbS5UYWdOYW1lJywgJ2dvb2cuZWRpdG9yLkJyb3dzZXJGZWF0dXJlJywgJ2dvb2cuZWRpdG9yLkZpZWxkJywgJ2dvb2cuZWRpdG9yLlBsdWdpbicsICdnb29nLmVkaXRvci5wbHVnaW5zLlRhZ09uRW50ZXJIYW5kbGVyJywgJ2dvb2cuZXZlbnRzLktleUNvZGVzJywgJ2dvb2cuaHRtbC5TYWZlSHRtbCcsICdnb29nLnN0cmluZy5Vbmljb2RlJywgJ2dvb2cudGVzdGluZy5kb20nLCAnZ29vZy50ZXN0aW5nLmVkaXRvci5UZXN0SGVscGVyJywgJ2dvb2cudGVzdGluZy5ldmVudHMnLCAnZ29vZy50ZXN0aW5nLnRlc3RTdWl0ZScsICdnb29nLnVzZXJBZ2VudCddLCB7J2xhbmcnOiAnZXM2JywgJ21vZHVsZSc6ICdnb29nJ30pOwpnb29nLmFkZERlcGVuZGVuY3koJ2VkaXRvci9wbHVnaW5zL3VuZG9yZWRvLmpzJywgWydnb29nLmVkaXRvci5wbHVnaW5zLlVuZG9SZWRvJ10sIFsnZ29vZy5kb20nLCAnZ29vZy5kb20uTm9kZU9mZnNldCcsICdnb29nLmRvbS5SYW5nZScsICdnb29nLmVkaXRvci5Ccm93c2VyRmVhdHVyZScsICdnb29nLmVkaXRvci5Db21tYW5kJywgJ2dvb2cuZWRpdG9yLkZpZWxkJywgJ2dvb2cuZWRpdG9yLlBsdWdpbicsICdnb29nLmVkaXRvci5ub2RlJywgJ2dvb2cuZWRpdG9yLnBsdWdpbnMuVW5kb1JlZG9NYW5hZ2VyJywgJ2dvb2cuZWRpdG9yLnBsdWdpbnMuVW5kb1JlZG9TdGF0ZScsICdnb29nLmV2ZW50cycsICdnb29nLmV2ZW50cy5FdmVudEhhbmRsZXInLCAnZ29vZy5sb2cnLCAnZ29vZy5vYmplY3QnXSwge30pOwpnb29nLmFkZERlcGVuZGVuY3koJ2VkaXRvci9wbHVnaW5zL3VuZG9yZWRvX3Rlc3QuanMnLCBbJ2dvb2cuZWRpdG9yLnBsdWdpbnMuVW5kb1JlZG9UZXN0J10sIFsnZ29vZy5hcnJheScsICdnb29nLmRvbScsICdnb29nLmRvbS5icm93c2VycmFuZ2UnLCAnZ29vZy5lZGl0b3IuRmllbGQnLCAnZ29vZy5lZGl0b3IucGx1Z2lucy5Mb3JlbUlwc3VtJywgJ2dvb2cuZWRpdG9yLnBsdWdpbnMuVW5kb1JlZG8nLCAnZ29vZy5ldmVudHMnLCAnZ29vZy5mdW5jdGlvbnMnLCAnZ29vZy5odG1sLlNhZmVIdG1sJywgJ2dvb2cudGVzdGluZy5Nb2NrQ2xvY2snLCAnZ29vZy50ZXN0aW5nLlByb3BlcnR5UmVwbGFjZXInLCAnZ29vZy50ZXN0aW5nLlN0cmljdE1vY2snLCAnZ29vZy50ZXN0aW5nLnRlc3RTdWl0ZSddLCB7J2xhbmcnOiAnZXM2JywgJ21vZHVsZSc6ICdnb29nJ30pOwpnb29nLmFkZERlcGVuZGVuY3koJ2VkaXRvci9wbHVnaW5zL3VuZG9yZWRvbWFuYWdlci5qcycsIFsnZ29vZy5lZGl0b3IucGx1Z2lucy5VbmRvUmVkb01hbmFnZXInLCAnZ29vZy5lZGl0b3IucGx1Z2lucy5VbmRvUmVkb01hbmFnZXIuRXZlbnRUeXBlJ10sIFsnZ29vZy5lZGl0b3IucGx1Z2lucy5VbmRvUmVkb1N0YXRlJywgJ2dvb2cuZXZlbnRzJywgJ2dvb2cuZXZlbnRzLkV2ZW50VGFyZ2V0J10sIHt9KTsKZ29vZy5hZGREZXBlbmRlbmN5KCdlZGl0b3IvcGx1Z2lucy91bmRvcmVkb21hbmFnZXJfdGVzdC5qcycsIFsnZ29vZy5lZGl0b3IucGx1Z2lucy5VbmRvUmVkb01hbmFnZXJUZXN0J10sIFsnZ29vZy5lZGl0b3IucGx1Z2lucy5VbmRvUmVkb01hbmFnZXInLCAnZ29vZy5lZGl0b3IucGx1Z2lucy5VbmRvUmVkb1N0YXRlJywgJ2dvb2cuZXZlbnRzJywgJ2dvb2cudGVzdGluZy5TdHJpY3RNb2NrJywgJ2dvb2cudGVzdGluZy50ZXN0U3VpdGUnXSwgeydsYW5nJzogJ2VzNicsICdtb2R1bGUnOiAnZ29vZyd9KTsKZ29vZy5hZGREZXBlbmRlbmN5KCdlZGl0b3IvcGx1Z2lucy91bmRvcmVkb3N0YXRlLmpzJywgWydnb29nLmVkaXRvci5wbHVnaW5zLlVuZG9SZWRvU3RhdGUnXSwgWydnb29nLmV2ZW50cy5FdmVudFRhcmdldCddLCB7fSk7Cmdvb2cuYWRkRGVwZW5kZW5jeSgnZWRpdG9yL3BsdWdpbnMvdW5kb3JlZG9zdGF0ZV90ZXN0LmpzJywgWydnb29nLmVkaXRvci5wbHVnaW5zLlVuZG9SZWRvU3RhdGVUZXN0J10sIFsnZ29vZy5lZGl0b3IucGx1Z2lucy5VbmRvUmVkb1N0YXRlJywgJ2dvb2cudGVzdGluZy50ZXN0U3VpdGUnXSwgeydsYW5nJzogJ2VzNicsICdtb2R1bGUnOiAnZ29vZyd9KTsKZ29vZy5hZGREZXBlbmRlbmN5KCdlZGl0b3IvcmFuZ2UuanMnLCBbJ2dvb2cuZWRpdG9yLnJhbmdlJywgJ2dvb2cuZWRpdG9yLnJhbmdlLlBvaW50J10sIFsnZ29vZy5hcnJheScsICdnb29nLmRvbScsICdnb29nLmRvbS5Ob2RlVHlwZScsICdnb29nLmRvbS5SYW5nZScsICdnb29nLmRvbS5SYW5nZUVuZHBvaW50JywgJ2dvb2cuZG9tLlNhdmVkQ2FyZXRSYW5nZScsICdnb29nLmVkaXRvci5ub2RlJywgJ2dvb2cuZWRpdG9yLnN0eWxlJywgJ2dvb2cuaXRlcicsICdnb29nLnVzZXJBZ2VudCddLCB7fSk7Cmdvb2cuYWRkRGVwZW5kZW5jeSgnZWRpdG9yL3JhbmdlX3Rlc3QuanMnLCBbJ2dvb2cuZWRpdG9yLnJhbmdlVGVzdCddLCBbJ2dvb2cuZG9tJywgJ2dvb2cuZG9tLlJhbmdlJywgJ2dvb2cuZG9tLlRhZ05hbWUnLCAnZ29vZy5lZGl0b3IucmFuZ2UnLCAnZ29vZy5lZGl0b3IucmFuZ2UuUG9pbnQnLCAnZ29vZy5zdHJpbmcnLCAnZ29vZy50ZXN0aW5nLmRvbScsICdnb29nLnRlc3RpbmcudGVzdFN1aXRlJywgJ2dvb2cudXNlckFnZW50J10sIHsnbGFuZyc6ICdlczYnLCAnbW9kdWxlJzogJ2dvb2cnfSk7Cmdvb2cuYWRkRGVwZW5kZW5jeSgnZWRpdG9yL3NlYW1sZXNzZmllbGQuanMnLCBbJ2dvb2cuZWRpdG9yLlNlYW1sZXNzRmllbGQnXSwgWydnb29nLmNzc29tLmlmcmFtZS5zdHlsZScsICdnb29nLmRvbScsICdnb29nLmRvbS5SYW5nZScsICdnb29nLmRvbS5UYWdOYW1lJywgJ2dvb2cuZG9tLnNhZmUnLCAnZ29vZy5lZGl0b3IuQnJvd3NlckZlYXR1cmUnLCAnZ29vZy5lZGl0b3IuRmllbGQnLCAnZ29vZy5lZGl0b3IuaWNvbnRlbnQnLCAnZ29vZy5lZGl0b3IuaWNvbnRlbnQuRmllbGRGb3JtYXRJbmZvJywgJ2dvb2cuZWRpdG9yLmljb250ZW50LkZpZWxkU3R5bGVJbmZvJywgJ2dvb2cuZWRpdG9yLm5vZGUnLCAnZ29vZy5ldmVudHMnLCAnZ29vZy5ldmVudHMuRXZlbnRUeXBlJywgJ2dvb2cuaHRtbC5TYWZlSHRtbCcsICdnb29nLmxvZycsICdnb29nLnN0eWxlJ10sIHt9KTsKZ29vZy5hZGREZXBlbmRlbmN5KCdlZGl0b3Ivc2VhbWxlc3NmaWVsZF90ZXN0LmpzJywgWydnb29nLmVkaXRvci5zZWFtbGVzc2ZpZWxkX3Rlc3QnXSwgWydnb29nLmRvbScsICdnb29nLmRvbS5Eb21IZWxwZXInLCAnZ29vZy5kb20uUmFuZ2UnLCAnZ29vZy5kb20uVGFnTmFtZScsICdnb29nLmVkaXRvci5Ccm93c2VyRmVhdHVyZScsICdnb29nLmVkaXRvci5GaWVsZCcsICdnb29nLmVkaXRvci5TZWFtbGVzc0ZpZWxkJywgJ2dvb2cuZXZlbnRzJywgJ2dvb2cuZnVuY3Rpb25zJywgJ2dvb2cuaHRtbC5TYWZlSHRtbCcsICdnb29nLnN0eWxlJywgJ2dvb2cudGVzdGluZy5Nb2NrQ2xvY2snLCAnZ29vZy50ZXN0aW5nLk1vY2tSYW5nZScsICdnb29nLnRlc3RpbmcudGVzdFN1aXRlJ10sIHsnbGFuZyc6ICdlczYnLCAnbW9kdWxlJzogJ2dvb2cnfSk7Cmdvb2cuYWRkRGVwZW5kZW5jeSgnZWRpdG9yL3N0eWxlLmpzJywgWydnb29nLmVkaXRvci5zdHlsZSddLCBbJ2dvb2cuYXJyYXknLCAnZ29vZy5hc3NlcnRzJywgJ2dvb2cuZG9tJywgJ2dvb2cuZG9tLk5vZGVUeXBlJywgJ2dvb2cuZG9tLlRhZ05hbWUnLCAnZ29vZy5lZGl0b3IuQnJvd3NlckZlYXR1cmUnLCAnZ29vZy5ldmVudHMuRXZlbnRIYW5kbGVyJywgJ2dvb2cuZXZlbnRzLkV2ZW50VHlwZScsICdnb29nLm9iamVjdCcsICdnb29nLnN0eWxlJywgJ2dvb2cudXNlckFnZW50J10sIHt9KTsKZ29vZy5hZGREZXBlbmRlbmN5KCdlZGl0b3Ivc3R5bGVfdGVzdC5qcycsIFsnZ29vZy5lZGl0b3Iuc3R5bGVUZXN0J10sIFsnZ29vZy5kb20nLCAnZ29vZy5kb20uVGFnTmFtZScsICdnb29nLmVkaXRvci5Ccm93c2VyRmVhdHVyZScsICdnb29nLmVkaXRvci5zdHlsZScsICdnb29nLmV2ZW50cy5FdmVudEhhbmRsZXInLCAnZ29vZy5ldmVudHMuRXZlbnRUeXBlJywgJ2dvb2cuc3R5bGUnLCAnZ29vZy50ZXN0aW5nLkxvb3NlTW9jaycsICdnb29nLnRlc3RpbmcubW9ja21hdGNoZXJzJywgJ2dvb2cudGVzdGluZy50ZXN0U3VpdGUnXSwgeydsYW5nJzogJ2VzNicsICdtb2R1bGUnOiAnZ29vZyd9KTsKZ29vZy5hZGREZXBlbmRlbmN5KCdlZGl0b3IvdGFibGUuanMnLCBbJ2dvb2cuZWRpdG9yLlRhYmxlJywgJ2dvb2cuZWRpdG9yLlRhYmxlQ2VsbCcsICdnb29nLmVkaXRvci5UYWJsZVJvdyddLCBbJ2dvb2cuYXNzZXJ0cycsICdnb29nLmRvbScsICdnb29nLmRvbS5Eb21IZWxwZXInLCAnZ29vZy5kb20uTm9kZVR5cGUnLCAnZ29vZy5kb20uVGFnTmFtZScsICdnb29nLmxvZycsICdnb29nLnN0cmluZy5Vbmljb2RlJywgJ2dvb2cuc3R5bGUnXSwge30pOwpnb29nLmFkZERlcGVuZGVuY3koJ2VkaXRvci90YWJsZV90ZXN0LmpzJywgWydnb29nLmVkaXRvci5UYWJsZVRlc3QnXSwgWydnb29nLmRvbScsICdnb29nLmRvbS5UYWdOYW1lJywgJ2dvb2cuZWRpdG9yLlRhYmxlJywgJ2dvb2cudGVzdGluZy50ZXN0U3VpdGUnXSwgeydsYW5nJzogJ2VzNicsICdtb2R1bGUnOiAnZ29vZyd9KTsKZ29vZy5hZGREZXBlbmRlbmN5KCdldmVudHMvYWN0aW9uZXZlbnR3cmFwcGVyLmpzJywgWydnb29nLmV2ZW50cy5hY3Rpb25FdmVudFdyYXBwZXInXSwgWydnb29nLmExMXkuYXJpYScsICdnb29nLmExMXkuYXJpYS5Sb2xlJywgJ2dvb2cuZG9tJywgJ2dvb2cuZXZlbnRzJywgJ2dvb2cuZXZlbnRzLkV2ZW50SGFuZGxlcicsICdnb29nLmV2ZW50cy5FdmVudFR5cGUnLCAnZ29vZy5ldmVudHMuRXZlbnRXcmFwcGVyJywgJ2dvb2cuZXZlbnRzLktleUNvZGVzJ10sIHt9KTsKZ29vZy5hZGREZXBlbmRlbmN5KCdldmVudHMvYWN0aW9uZXZlbnR3cmFwcGVyX3Rlc3QuanMnLCBbJ2dvb2cuZXZlbnRzLmFjdGlvbkV2ZW50V3JhcHBlclRlc3QnXSwgWydnb29nLmExMXkuYXJpYScsICdnb29nLmExMXkuYXJpYS5Sb2xlJywgJ2dvb2cuZXZlbnRzJywgJ2dvb2cuZXZlbnRzLkV2ZW50SGFuZGxlcicsICdnb29nLmV2ZW50cy5LZXlDb2RlcycsICdnb29nLmV2ZW50cy5hY3Rpb25FdmVudFdyYXBwZXInLCAnZ29vZy50ZXN0aW5nLmV2ZW50cycsICdnb29nLnRlc3RpbmcudGVzdFN1aXRlJ10sIHsnbGFuZyc6ICdlczYnLCAnbW9kdWxlJzogJ2dvb2cnfSk7Cmdvb2cuYWRkRGVwZW5kZW5jeSgnZXZlbnRzL2FjdGlvbmhhbmRsZXIuanMnLCBbJ2dvb2cuZXZlbnRzLkFjdGlvbkV2ZW50JywgJ2dvb2cuZXZlbnRzLkFjdGlvbkhhbmRsZXInLCAnZ29vZy5ldmVudHMuQWN0aW9uSGFuZGxlci5FdmVudFR5cGUnLCAnZ29vZy5ldmVudHMuQmVmb3JlQWN0aW9uRXZlbnQnXSwgWydnb29nLmV2ZW50cycsICdnb29nLmV2ZW50cy5Ccm93c2VyRXZlbnQnLCAnZ29vZy5ldmVudHMuRXZlbnRUYXJnZXQnLCAnZ29vZy5ldmVudHMuRXZlbnRUeXBlJywgJ2dvb2cuZXZlbnRzLktleUNvZGVzJywgJ2dvb2cudXNlckFnZW50J10sIHt9KTsKZ29vZy5hZGREZXBlbmRlbmN5KCdldmVudHMvYWN0aW9uaGFuZGxlcl90ZXN0LmpzJywgWydnb29nLmV2ZW50cy5BY3Rpb25IYW5kbGVyVGVzdCddLCBbJ2dvb2cuZG9tJywgJ2dvb2cuZXZlbnRzJywgJ2dvb2cuZXZlbnRzLkFjdGlvbkhhbmRsZXInLCAnZ29vZy50ZXN0aW5nLmV2ZW50cycsICdnb29nLnRlc3RpbmcudGVzdFN1aXRlJ10sIHsnbGFuZyc6ICdlczYnLCAnbW9kdWxlJzogJ2dvb2cnfSk7Cmdvb2cuYWRkRGVwZW5kZW5jeSgnZXZlbnRzL2Jyb3dzZXJldmVudC5qcycsIFsnZ29vZy5ldmVudHMuQnJvd3NlckV2ZW50JywgJ2dvb2cuZXZlbnRzLkJyb3dzZXJFdmVudC5Nb3VzZUJ1dHRvbicsICdnb29nLmV2ZW50cy5Ccm93c2VyRXZlbnQuUG9pbnRlclR5cGUnXSwgWydnb29nLmRlYnVnJywgJ2dvb2cuZXZlbnRzLkJyb3dzZXJGZWF0dXJlJywgJ2dvb2cuZXZlbnRzLkV2ZW50JywgJ2dvb2cuZXZlbnRzLkV2ZW50VHlwZScsICdnb29nLnJlZmxlY3QnLCAnZ29vZy51c2VyQWdlbnQnXSwge30pOwpnb29nLmFkZERlcGVuZGVuY3koJ2V2ZW50cy9icm93c2VyZXZlbnRfdGVzdC5qcycsIFsnZ29vZy5ldmVudHMuQnJvd3NlckV2ZW50VGVzdCddLCBbJ2dvb2cuZXZlbnRzLkJyb3dzZXJFdmVudCcsICdnb29nLmV2ZW50cy5Ccm93c2VyRmVhdHVyZScsICdnb29nLm1hdGguQ29vcmRpbmF0ZScsICdnb29nLnRlc3RpbmcuUHJvcGVydHlSZXBsYWNlcicsICdnb29nLnRlc3RpbmcudGVzdFN1aXRlJywgJ2dvb2cudXNlckFnZW50J10sIHsnbGFuZyc6ICdlczYnLCAnbW9kdWxlJzogJ2dvb2cnfSk7Cmdvb2cuYWRkRGVwZW5kZW5jeSgnZXZlbnRzL2Jyb3dzZXJmZWF0dXJlLmpzJywgWydnb29nLmV2ZW50cy5Ccm93c2VyRmVhdHVyZSddLCBbJ2dvb2cudXNlckFnZW50J10sIHt9KTsKZ29vZy5hZGREZXBlbmRlbmN5KCdldmVudHMvZXZlbnQuanMnLCBbJ2dvb2cuZXZlbnRzLkV2ZW50JywgJ2dvb2cuZXZlbnRzLkV2ZW50TGlrZSddLCBbJ2dvb2cuRGlzcG9zYWJsZScsICdnb29nLmV2ZW50cy5FdmVudElkJ10sIHt9KTsKZ29vZy5hZGREZXBlbmRlbmN5KCdldmVudHMvZXZlbnRfdGVzdC5qcycsIFsnZ29vZy5ldmVudHMuRXZlbnRUZXN0J10sIFsnZ29vZy5ldmVudHMuRXZlbnQnLCAnZ29vZy5ldmVudHMuRXZlbnRJZCcsICdnb29nLmV2ZW50cy5FdmVudFRhcmdldCcsICdnb29nLnRlc3RpbmcudGVzdFN1aXRlJ10sIHsnbGFuZyc6ICdlczYnLCAnbW9kdWxlJzogJ2dvb2cnfSk7Cmdvb2cuYWRkRGVwZW5kZW5jeSgnZXZlbnRzL2V2ZW50aGFuZGxlci5qcycsIFsnZ29vZy5ldmVudHMuRXZlbnRIYW5kbGVyJ10sIFsnZ29vZy5EaXNwb3NhYmxlJywgJ2dvb2cuZXZlbnRzJywgJ2dvb2cub2JqZWN0J10sIHt9KTsKZ29vZy5hZGREZXBlbmRlbmN5KCdldmVudHMvZXZlbnRoYW5kbGVyX3Rlc3QuanMnLCBbJ2dvb2cuZXZlbnRzLkV2ZW50SGFuZGxlclRlc3QnXSwgWydnb29nLmV2ZW50cycsICdnb29nLmV2ZW50cy5FdmVudEhhbmRsZXInLCAnZ29vZy5ldmVudHMuRXZlbnRUYXJnZXQnLCAnZ29vZy50ZXN0aW5nLlByb3BlcnR5UmVwbGFjZXInLCAnZ29vZy50ZXN0aW5nLnJlY29yZEZ1bmN0aW9uJywgJ2dvb2cudGVzdGluZy50ZXN0U3VpdGUnXSwgeydsYW5nJzogJ2VzNicsICdtb2R1bGUnOiAnZ29vZyd9KTsKZ29vZy5hZGREZXBlbmRlbmN5KCdldmVudHMvZXZlbnRpZC5qcycsIFsnZ29vZy5ldmVudHMuRXZlbnRJZCddLCBbXSwge30pOwpnb29nLmFkZERlcGVuZGVuY3koJ2V2ZW50cy9ldmVudHMuanMnLCBbJ2dvb2cuZXZlbnRzJywgJ2dvb2cuZXZlbnRzLkNhcHR1cmVTaW11bGF0aW9uTW9kZScsICdnb29nLmV2ZW50cy5LZXknLCAnZ29vZy5ldmVudHMuTGlzdGVuYWJsZVR5cGUnXSwgWydnb29nLmFzc2VydHMnLCAnZ29vZy5kZWJ1Zy5lbnRyeVBvaW50UmVnaXN0cnknLCAnZ29vZy5ldmVudHMuQnJvd3NlckV2ZW50JywgJ2dvb2cuZXZlbnRzLkJyb3dzZXJGZWF0dXJlJywgJ2dvb2cuZXZlbnRzLkxpc3RlbmFibGUnLCAnZ29vZy5ldmVudHMuTGlzdGVuZXJNYXAnXSwge30pOwpnb29nLmFkZERlcGVuZGVuY3koJ2V2ZW50cy9ldmVudHNfdGVzdC5qcycsIFsnZ29vZy5ldmVudHNUZXN0J10sIFsnZ29vZy5hc3NlcnRzLkFzc2VydGlvbkVycm9yJywgJ2dvb2cuZGVidWcuRW50cnlQb2ludE1vbml0b3InLCAnZ29vZy5kZWJ1Zy5FcnJvckhhbmRsZXInLCAnZ29vZy5kZWJ1Zy5lbnRyeVBvaW50UmVnaXN0cnknLCAnZ29vZy5kb20nLCAnZ29vZy5kb20uVGFnTmFtZScsICdnb29nLmV2ZW50cycsICdnb29nLmV2ZW50cy5Ccm93c2VyRmVhdHVyZScsICdnb29nLmV2ZW50cy5DYXB0dXJlU2ltdWxhdGlvbk1vZGUnLCAnZ29vZy5ldmVudHMuRXZlbnQnLCAnZ29vZy5ldmVudHMuRXZlbnRUYXJnZXQnLCAnZ29vZy5ldmVudHMuRXZlbnRUeXBlJywgJ2dvb2cuZXZlbnRzLkxpc3RlbmVyJywgJ2dvb2cuZnVuY3Rpb25zJywgJ2dvb2cudGVzdGluZy5Qcm9wZXJ0eVJlcGxhY2VyJywgJ2dvb2cudGVzdGluZy5yZWNvcmRGdW5jdGlvbicsICdnb29nLnRlc3RpbmcudGVzdFN1aXRlJ10sIHsnbGFuZyc6ICdlczYnLCAnbW9kdWxlJzogJ2dvb2cnfSk7Cmdvb2cuYWRkRGVwZW5kZW5jeSgnZXZlbnRzL2V2ZW50dGFyZ2V0LmpzJywgWydnb29nLmV2ZW50cy5FdmVudFRhcmdldCddLCBbJ2dvb2cuRGlzcG9zYWJsZScsICdnb29nLmFzc2VydHMnLCAnZ29vZy5ldmVudHMnLCAnZ29vZy5ldmVudHMuRXZlbnQnLCAnZ29vZy5ldmVudHMuTGlzdGVuYWJsZScsICdnb29nLmV2ZW50cy5MaXN0ZW5lck1hcCcsICdnb29nLm9iamVjdCddLCB7fSk7Cmdvb2cuYWRkRGVwZW5kZW5jeSgnZXZlbnRzL2V2ZW50dGFyZ2V0X3Rlc3QuanMnLCBbJ2dvb2cuZXZlbnRzLkV2ZW50VGFyZ2V0VGVzdCddLCBbJ2dvb2cuZXZlbnRzLkV2ZW50VGFyZ2V0JywgJ2dvb2cuZXZlbnRzLkxpc3RlbmFibGUnLCAnZ29vZy5ldmVudHMuZXZlbnRUYXJnZXRUZXN0ZXInLCAnZ29vZy50ZXN0aW5nLnRlc3RTdWl0ZSddLCB7J2xhbmcnOiAnZXM2JywgJ21vZHVsZSc6ICdnb29nJ30pOwpnb29nLmFkZERlcGVuZGVuY3koJ2V2ZW50cy9ldmVudHRhcmdldF92aWFfZ29vZ2V2ZW50c190ZXN0LmpzJywgWydnb29nLmV2ZW50cy5FdmVudFRhcmdldEdvb2dFdmVudHNUZXN0J10sIFsnZ29vZy5ldmVudHMnLCAnZ29vZy5ldmVudHMuRXZlbnRUYXJnZXQnLCAnZ29vZy5ldmVudHMuZXZlbnRUYXJnZXRUZXN0ZXInLCAnZ29vZy50ZXN0aW5nJywgJ2dvb2cudGVzdGluZy50ZXN0U3VpdGUnXSwgeydsYW5nJzogJ2VzNicsICdtb2R1bGUnOiAnZ29vZyd9KTsKZ29vZy5hZGREZXBlbmRlbmN5KCdldmVudHMvZXZlbnR0YXJnZXRfdmlhX3czY2ludGVyZmFjZV90ZXN0LmpzJywgWydnb29nLmV2ZW50cy5FdmVudFRhcmdldFczQ1Rlc3QnXSwgWydnb29nLmV2ZW50cy5FdmVudFRhcmdldCcsICdnb29nLmV2ZW50cy5ldmVudFRhcmdldFRlc3RlcicsICdnb29nLnRlc3RpbmcudGVzdFN1aXRlJ10sIHsnbGFuZyc6ICdlczYnLCAnbW9kdWxlJzogJ2dvb2cnfSk7Cmdvb2cuYWRkRGVwZW5kZW5jeSgnZXZlbnRzL2V2ZW50dGFyZ2V0dGVzdGVyLmpzJywgWydnb29nLmV2ZW50cy5ldmVudFRhcmdldFRlc3RlciddLCBbJ2dvb2cuYXJyYXknLCAnZ29vZy5ldmVudHMuRXZlbnQnLCAnZ29vZy5ldmVudHMuRXZlbnRUYXJnZXQnLCAnZ29vZy5ldmVudHMuTGlzdGVuYWJsZScsICdnb29nLnRlc3RpbmcuYXNzZXJ0cycsICdnb29nLnRlc3RpbmcucmVjb3JkRnVuY3Rpb24nXSwgeydsYW5nJzogJ2VzNicsICdtb2R1bGUnOiAnZ29vZyd9KTsKZ29vZy5hZGREZXBlbmRlbmN5KCdldmVudHMvZXZlbnR0eXBlLmpzJywgWydnb29nLmV2ZW50cy5FdmVudFR5cGUnLCAnZ29vZy5ldmVudHMuTW91c2VBc01vdXNlRXZlbnRUeXBlJywgJ2dvb2cuZXZlbnRzLk1vdXNlRXZlbnRzJywgJ2dvb2cuZXZlbnRzLlBvaW50ZXJBc01vdXNlRXZlbnRUeXBlJywgJ2dvb2cuZXZlbnRzLlBvaW50ZXJBc1RvdWNoRXZlbnRUeXBlJywgJ2dvb2cuZXZlbnRzLlBvaW50ZXJGYWxsYmFja0V2ZW50VHlwZScsICdnb29nLmV2ZW50cy5Qb2ludGVyVG91Y2hGYWxsYmFja0V2ZW50VHlwZSddLCBbJ2dvb2cuZXZlbnRzLkJyb3dzZXJGZWF0dXJlJywgJ2dvb2cudXNlckFnZW50J10sIHt9KTsKZ29vZy5hZGREZXBlbmRlbmN5KCdldmVudHMvZXZlbnR0eXBlX3Rlc3QuanMnLCBbJ2dvb2cuZXZlbnRzLkV2ZW50VHlwZVRlc3QnXSwgWydnb29nLmV2ZW50cy5Ccm93c2VyRmVhdHVyZScsICdnb29nLmV2ZW50cy5FdmVudFR5cGUnLCAnZ29vZy5ldmVudHMuUG9pbnRlckZhbGxiYWNrRXZlbnRUeXBlJywgJ2dvb2cuZXZlbnRzLlBvaW50ZXJUb3VjaEZhbGxiYWNrRXZlbnRUeXBlJywgJ2dvb2cudGVzdGluZy50ZXN0U3VpdGUnLCAnZ29vZy51c2VyQWdlbnQnXSwgeydsYW5nJzogJ2VzNicsICdtb2R1bGUnOiAnZ29vZyd9KTsKZ29vZy5hZGREZXBlbmRlbmN5KCdldmVudHMvZXZlbnR3cmFwcGVyLmpzJywgWydnb29nLmV2ZW50cy5FdmVudFdyYXBwZXInXSwgW10sIHt9KTsKZ29vZy5hZGREZXBlbmRlbmN5KCdldmVudHMvZmlsZWRyb3BoYW5kbGVyLmpzJywgWydnb29nLmV2ZW50cy5GaWxlRHJvcEhhbmRsZXInLCAnZ29vZy5ldmVudHMuRmlsZURyb3BIYW5kbGVyLkV2ZW50VHlwZSddLCBbJ2dvb2cuYXJyYXknLCAnZ29vZy5kb20nLCAnZ29vZy5ldmVudHMuQnJvd3NlckV2ZW50JywgJ2dvb2cuZXZlbnRzLkV2ZW50SGFuZGxlcicsICdnb29nLmV2ZW50cy5FdmVudFRhcmdldCcsICdnb29nLmV2ZW50cy5FdmVudFR5cGUnLCAnZ29vZy5sb2cnLCAnZ29vZy5sb2cuTGV2ZWwnXSwge30pOwpnb29nLmFkZERlcGVuZGVuY3koJ2V2ZW50cy9maWxlZHJvcGhhbmRsZXJfdGVzdC5qcycsIFsnZ29vZy5ldmVudHMuRmlsZURyb3BIYW5kbGVyVGVzdCddLCBbJ2dvb2cuZXZlbnRzJywgJ2dvb2cuZXZlbnRzLkJyb3dzZXJFdmVudCcsICdnb29nLmV2ZW50cy5FdmVudFRhcmdldCcsICdnb29nLmV2ZW50cy5FdmVudFR5cGUnLCAnZ29vZy5ldmVudHMuRmlsZURyb3BIYW5kbGVyJywgJ2dvb2cudGVzdGluZy50ZXN0U3VpdGUnLCAnZ29vZy51c2VyQWdlbnQnXSwgeydsYW5nJzogJ2VzNicsICdtb2R1bGUnOiAnZ29vZyd9KTsKZ29vZy5hZGREZXBlbmRlbmN5KCdldmVudHMvZm9jdXNoYW5kbGVyLmpzJywgWydnb29nLmV2ZW50cy5Gb2N1c0hhbmRsZXInLCAnZ29vZy5ldmVudHMuRm9jdXNIYW5kbGVyLkV2ZW50VHlwZSddLCBbJ2dvb2cuZXZlbnRzJywgJ2dvb2cuZXZlbnRzLkJyb3dzZXJFdmVudCcsICdnb29nLmV2ZW50cy5FdmVudFRhcmdldCcsICdnb29nLnVzZXJBZ2VudCddLCB7fSk7Cmdvb2cuYWRkRGVwZW5kZW5jeSgnZXZlbnRzL2ltZWhhbmRsZXIuanMnLCBbJ2dvb2cuZXZlbnRzLkltZUhhbmRsZXInLCAnZ29vZy5ldmVudHMuSW1lSGFuZGxlci5FdmVudCcsICdnb29nLmV2ZW50cy5JbWVIYW5kbGVyLkV2ZW50VHlwZSddLCBbJ2dvb2cuZXZlbnRzLkV2ZW50JywgJ2dvb2cuZXZlbnRzLkV2ZW50SGFuZGxlcicsICdnb29nLmV2ZW50cy5FdmVudFRhcmdldCcsICdnb29nLmV2ZW50cy5FdmVudFR5cGUnLCAnZ29vZy5ldmVudHMuS2V5Q29kZXMnLCAnZ29vZy51c2VyQWdlbnQnXSwge30pOwpnb29nLmFkZERlcGVuZGVuY3koJ2V2ZW50cy9pbWVoYW5kbGVyX3Rlc3QuanMnLCBbJ2dvb2cuZXZlbnRzLkltZUhhbmRsZXJUZXN0J10sIFsnZ29vZy5hcnJheScsICdnb29nLmRvbScsICdnb29nLmV2ZW50cycsICdnb29nLmV2ZW50cy5JbWVIYW5kbGVyJywgJ2dvb2cuZXZlbnRzLktleUNvZGVzJywgJ2dvb2cub2JqZWN0JywgJ2dvb2cuc3RyaW5nJywgJ2dvb2cudGVzdGluZy5Qcm9wZXJ0eVJlcGxhY2VyJywgJ2dvb2cudGVzdGluZy5ldmVudHMnLCAnZ29vZy50ZXN0aW5nLmV2ZW50cy5FdmVudCcsICdnb29nLnRlc3RpbmcudGVzdFN1aXRlJywgJ2dvb2cudXNlckFnZW50J10sIHsnbGFuZyc6ICdlczYnLCAnbW9kdWxlJzogJ2dvb2cnfSk7Cmdvb2cuYWRkRGVwZW5kZW5jeSgnZXZlbnRzL2lucHV0aGFuZGxlci5qcycsIFsnZ29vZy5ldmVudHMuSW5wdXRIYW5kbGVyJywgJ2dvb2cuZXZlbnRzLklucHV0SGFuZGxlci5FdmVudFR5cGUnXSwgWydnb29nLlRpbWVyJywgJ2dvb2cuZG9tLlRhZ05hbWUnLCAnZ29vZy5ldmVudHMuQnJvd3NlckV2ZW50JywgJ2dvb2cuZXZlbnRzLkV2ZW50SGFuZGxlcicsICdnb29nLmV2ZW50cy5FdmVudFRhcmdldCcsICdnb29nLmV2ZW50cy5LZXlDb2RlcycsICdnb29nLnVzZXJBZ2VudCddLCB7fSk7Cmdvb2cuYWRkRGVwZW5kZW5jeSgnZXZlbnRzL2lucHV0aGFuZGxlcl90ZXN0LmpzJywgWydnb29nLmV2ZW50cy5JbnB1dEhhbmRsZXJUZXN0J10sIFsnZ29vZy5kb20nLCAnZ29vZy5ldmVudHMuRXZlbnRIYW5kbGVyJywgJ2dvb2cuZXZlbnRzLkV2ZW50VHlwZScsICdnb29nLmV2ZW50cy5JbnB1dEhhbmRsZXInLCAnZ29vZy5ldmVudHMuS2V5Q29kZXMnLCAnZ29vZy50ZXN0aW5nLmV2ZW50cycsICdnb29nLnRlc3RpbmcuZXZlbnRzLkV2ZW50JywgJ2dvb2cudGVzdGluZy5yZWNvcmRGdW5jdGlvbicsICdnb29nLnRlc3RpbmcudGVzdFN1aXRlJywgJ2dvb2cudXNlckFnZW50J10sIHsnbGFuZyc6ICdlczYnLCAnbW9kdWxlJzogJ2dvb2cnfSk7Cmdvb2cuYWRkRGVwZW5kZW5jeSgnZXZlbnRzL2tleWNvZGVzLmpzJywgWydnb29nLmV2ZW50cy5LZXlDb2RlcyddLCBbJ2dvb2cudXNlckFnZW50J10sIHt9KTsKZ29vZy5hZGREZXBlbmRlbmN5KCdldmVudHMva2V5Y29kZXNfdGVzdC5qcycsIFsnZ29vZy5ldmVudHMuS2V5Q29kZXNUZXN0J10sIFsnZ29vZy5ldmVudHMuQnJvd3NlckV2ZW50JywgJ2dvb2cuZXZlbnRzLktleUNvZGVzJywgJ2dvb2cub2JqZWN0JywgJ2dvb2cudGVzdGluZy5Qcm9wZXJ0eVJlcGxhY2VyJywgJ2dvb2cudGVzdGluZy50ZXN0U3VpdGUnLCAnZ29vZy51c2VyQWdlbnQnXSwgeydsYW5nJzogJ2VzNicsICdtb2R1bGUnOiAnZ29vZyd9KTsKZ29vZy5hZGREZXBlbmRlbmN5KCdldmVudHMva2V5aGFuZGxlci5qcycsIFsnZ29vZy5ldmVudHMuS2V5RXZlbnQnLCAnZ29vZy5ldmVudHMuS2V5SGFuZGxlcicsICdnb29nLmV2ZW50cy5LZXlIYW5kbGVyLkV2ZW50VHlwZSddLCBbJ2dvb2cuZXZlbnRzJywgJ2dvb2cuZXZlbnRzLkJyb3dzZXJFdmVudCcsICdnb29nLmV2ZW50cy5FdmVudFRhcmdldCcsICdnb29nLmV2ZW50cy5FdmVudFR5cGUnLCAnZ29vZy5ldmVudHMuS2V5Q29kZXMnLCAnZ29vZy51c2VyQWdlbnQnXSwge30pOwpnb29nLmFkZERlcGVuZGVuY3koJ2V2ZW50cy9rZXloYW5kbGVyX3Rlc3QuanMnLCBbJ2dvb2cuZXZlbnRzLktleUV2ZW50VGVzdCddLCBbJ2dvb2cuZG9tJywgJ2dvb2cuZG9tLlRhZ05hbWUnLCAnZ29vZy5ldmVudHMnLCAnZ29vZy5ldmVudHMuQnJvd3NlckV2ZW50JywgJ2dvb2cuZXZlbnRzLkV2ZW50VHlwZScsICdnb29nLmV2ZW50cy5LZXlDb2RlcycsICdnb29nLmV2ZW50cy5LZXlIYW5kbGVyJywgJ2dvb2cudGVzdGluZy5ldmVudHMnLCAnZ29vZy50ZXN0aW5nLnRlc3RTdWl0ZScsICdnb29nLnVzZXJBZ2VudCddLCB7J2xhbmcnOiAnZXM2JywgJ21vZHVsZSc6ICdnb29nJ30pOwpnb29nLmFkZERlcGVuZGVuY3koJ2V2ZW50cy9rZXluYW1lcy5qcycsIFsnZ29vZy5ldmVudHMuS2V5TmFtZXMnXSwgW10sIHt9KTsKZ29vZy5hZGREZXBlbmRlbmN5KCdldmVudHMva2V5cy5qcycsIFsnZ29vZy5ldmVudHMuS2V5cyddLCBbXSwgeydsYW5nJzogJ2VzNSd9KTsKZ29vZy5hZGREZXBlbmRlbmN5KCdldmVudHMvbGlzdGVuYWJsZS5qcycsIFsnZ29vZy5ldmVudHMuTGlzdGVuYWJsZScsICdnb29nLmV2ZW50cy5MaXN0ZW5hYmxlS2V5J10sIFsnZ29vZy5ldmVudHMuRXZlbnRJZCddLCB7fSk7Cmdvb2cuYWRkRGVwZW5kZW5jeSgnZXZlbnRzL2xpc3RlbmFibGVfdGVzdC5qcycsIFsnZ29vZy5ldmVudHMuTGlzdGVuYWJsZVRlc3QnXSwgWydnb29nLmV2ZW50cy5MaXN0ZW5hYmxlJywgJ2dvb2cudGVzdGluZy50ZXN0U3VpdGUnXSwgeydsYW5nJzogJ2VzNicsICdtb2R1bGUnOiAnZ29vZyd9KTsKZ29vZy5hZGREZXBlbmRlbmN5KCdldmVudHMvbGlzdGVuZXIuanMnLCBbJ2dvb2cuZXZlbnRzLkxpc3RlbmVyJ10sIFsnZ29vZy5ldmVudHMuTGlzdGVuYWJsZUtleSddLCB7fSk7Cmdvb2cuYWRkRGVwZW5kZW5jeSgnZXZlbnRzL2xpc3RlbmVybWFwLmpzJywgWydnb29nLmV2ZW50cy5MaXN0ZW5lck1hcCddLCBbJ2dvb2cuYXJyYXknLCAnZ29vZy5ldmVudHMuTGlzdGVuZXInLCAnZ29vZy5vYmplY3QnXSwge30pOwpnb29nLmFkZERlcGVuZGVuY3koJ2V2ZW50cy9saXN0ZW5lcm1hcF90ZXN0LmpzJywgWydnb29nLmV2ZW50cy5MaXN0ZW5lck1hcFRlc3QnXSwgWydnb29nLmRpc3Bvc2UnLCAnZ29vZy5ldmVudHMnLCAnZ29vZy5ldmVudHMuRXZlbnRJZCcsICdnb29nLmV2ZW50cy5FdmVudFRhcmdldCcsICdnb29nLmV2ZW50cy5MaXN0ZW5lck1hcCcsICdnb29nLnRlc3RpbmcudGVzdFN1aXRlJ10sIHsnbGFuZyc6ICdlczYnLCAnbW9kdWxlJzogJ2dvb2cnfSk7Cmdvb2cuYWRkRGVwZW5kZW5jeSgnZXZlbnRzL21vdXNld2hlZWxoYW5kbGVyLmpzJywgWydnb29nLmV2ZW50cy5Nb3VzZVdoZWVsRXZlbnQnLCAnZ29vZy5ldmVudHMuTW91c2VXaGVlbEhhbmRsZXInLCAnZ29vZy5ldmVudHMuTW91c2VXaGVlbEhhbmRsZXIuRXZlbnRUeXBlJ10sIFsnZ29vZy5kb20nLCAnZ29vZy5ldmVudHMnLCAnZ29vZy5ldmVudHMuQnJvd3NlckV2ZW50JywgJ2dvb2cuZXZlbnRzLkV2ZW50VGFyZ2V0JywgJ2dvb2cubWF0aCcsICdnb29nLnN0eWxlJywgJ2dvb2cudXNlckFnZW50J10sIHt9KTsKZ29vZy5hZGREZXBlbmRlbmN5KCdldmVudHMvbW91c2V3aGVlbGhhbmRsZXJfdGVzdC5qcycsIFsnZ29vZy5ldmVudHMuTW91c2VXaGVlbEhhbmRsZXJUZXN0J10sIFsnZ29vZy5kb20nLCAnZ29vZy5ldmVudHMnLCAnZ29vZy5ldmVudHMuQnJvd3NlckV2ZW50JywgJ2dvb2cuZXZlbnRzLk1vdXNlV2hlZWxFdmVudCcsICdnb29nLmV2ZW50cy5Nb3VzZVdoZWVsSGFuZGxlcicsICdnb29nLmZ1bmN0aW9ucycsICdnb29nLnN0cmluZycsICdnb29nLnRlc3RpbmcuUHJvcGVydHlSZXBsYWNlcicsICdnb29nLnRlc3RpbmcuZXZlbnRzJywgJ2dvb2cudGVzdGluZy50ZXN0U3VpdGUnLCAnZ29vZy51c2VyQWdlbnQnXSwgeydsYW5nJzogJ2VzNicsICdtb2R1bGUnOiAnZ29vZyd9KTsKZ29vZy5hZGREZXBlbmRlbmN5KCdldmVudHMvb25saW5laGFuZGxlci5qcycsIFsnZ29vZy5ldmVudHMuT25saW5lSGFuZGxlcicsICdnb29nLmV2ZW50cy5PbmxpbmVIYW5kbGVyLkV2ZW50VHlwZSddLCBbJ2dvb2cuVGltZXInLCAnZ29vZy5ldmVudHMuQnJvd3NlckZlYXR1cmUnLCAnZ29vZy5ldmVudHMuRXZlbnRIYW5kbGVyJywgJ2dvb2cuZXZlbnRzLkV2ZW50VGFyZ2V0JywgJ2dvb2cuZXZlbnRzLkV2ZW50VHlwZScsICdnb29nLm5ldC5OZXR3b3JrU3RhdHVzTW9uaXRvciddLCB7fSk7Cmdvb2cuYWRkRGVwZW5kZW5jeSgnZXZlbnRzL29ubGluZWxpc3RlbmVyX3Rlc3QuanMnLCBbJ2dvb2cuZXZlbnRzLk9ubGluZUhhbmRsZXJUZXN0J10sIFsnZ29vZy5ldmVudHMnLCAnZ29vZy5ldmVudHMuQnJvd3NlckZlYXR1cmUnLCAnZ29vZy5ldmVudHMuRXZlbnQnLCAnZ29vZy5ldmVudHMuRXZlbnRIYW5kbGVyJywgJ2dvb2cuZXZlbnRzLk9ubGluZUhhbmRsZXInLCAnZ29vZy5uZXQuTmV0d29ya1N0YXR1c01vbml0b3InLCAnZ29vZy50ZXN0aW5nLk1vY2tDbG9jaycsICdnb29nLnRlc3RpbmcuUHJvcGVydHlSZXBsYWNlcicsICdnb29nLnRlc3RpbmcucmVjb3JkRnVuY3Rpb24nLCAnZ29vZy50ZXN0aW5nLnRlc3RTdWl0ZSddLCB7J2xhbmcnOiAnZXM2JywgJ21vZHVsZSc6ICdnb29nJ30pOwpnb29nLmFkZERlcGVuZGVuY3koJ2V2ZW50cy9wYXN0ZWhhbmRsZXIuanMnLCBbJ2dvb2cuZXZlbnRzLlBhc3RlSGFuZGxlcicsICdnb29nLmV2ZW50cy5QYXN0ZUhhbmRsZXIuRXZlbnRUeXBlJywgJ2dvb2cuZXZlbnRzLlBhc3RlSGFuZGxlci5TdGF0ZSddLCBbJ2dvb2cuVGltZXInLCAnZ29vZy5hc3luYy5Db25kaXRpb25hbERlbGF5JywgJ2dvb2cuZXZlbnRzLkJyb3dzZXJFdmVudCcsICdnb29nLmV2ZW50cy5FdmVudEhhbmRsZXInLCAnZ29vZy5ldmVudHMuRXZlbnRUYXJnZXQnLCAnZ29vZy5ldmVudHMuRXZlbnRUeXBlJywgJ2dvb2cuZXZlbnRzLktleUNvZGVzJywgJ2dvb2cubG9nJywgJ2dvb2cudXNlckFnZW50J10sIHt9KTsKZ29vZy5hZGREZXBlbmRlbmN5KCdldmVudHMvcGFzdGVoYW5kbGVyX3Rlc3QuanMnLCBbJ2dvb2cuZXZlbnRzLlBhc3RlSGFuZGxlclRlc3QnXSwgWydnb29nLmRvbScsICdnb29nLmV2ZW50cycsICdnb29nLmV2ZW50cy5Ccm93c2VyRXZlbnQnLCAnZ29vZy5ldmVudHMuRXZlbnRUYXJnZXQnLCAnZ29vZy5ldmVudHMuRXZlbnRUeXBlJywgJ2dvb2cuZXZlbnRzLktleUNvZGVzJywgJ2dvb2cuZXZlbnRzLlBhc3RlSGFuZGxlcicsICdnb29nLnRlc3RpbmcuTW9ja0Nsb2NrJywgJ2dvb2cudGVzdGluZy50ZXN0U3VpdGUnLCAnZ29vZy51c2VyQWdlbnQnXSwgeydsYW5nJzogJ2VzNicsICdtb2R1bGUnOiAnZ29vZyd9KTsKZ29vZy5hZGREZXBlbmRlbmN5KCdldmVudHMvd2hlZWxldmVudC5qcycsIFsnZ29vZy5ldmVudHMuV2hlZWxFdmVudCddLCBbJ2dvb2cuYXNzZXJ0cycsICdnb29nLmV2ZW50cy5Ccm93c2VyRXZlbnQnXSwge30pOwpnb29nLmFkZERlcGVuZGVuY3koJ2V2ZW50cy93aGVlbGhhbmRsZXIuanMnLCBbJ2dvb2cuZXZlbnRzLldoZWVsSGFuZGxlciddLCBbJ2dvb2cuZG9tJywgJ2dvb2cuZXZlbnRzJywgJ2dvb2cuZXZlbnRzLkV2ZW50VGFyZ2V0JywgJ2dvb2cuZXZlbnRzLldoZWVsRXZlbnQnLCAnZ29vZy5zdHlsZScsICdnb29nLnVzZXJBZ2VudCcsICdnb29nLnVzZXJBZ2VudC5wcm9kdWN0JywgJ2dvb2cudXNlckFnZW50LnByb2R1Y3QuaXNWZXJzaW9uJ10sIHt9KTsKZ29vZy5hZGREZXBlbmRlbmN5KCdldmVudHMvd2hlZWxoYW5kbGVyX3Rlc3QuanMnLCBbJ2dvb2cuZXZlbnRzLldoZWVsSGFuZGxlclRlc3QnXSwgWydnb29nLmRvbScsICdnb29nLmV2ZW50cycsICdnb29nLmV2ZW50cy5Ccm93c2VyRXZlbnQnLCAnZ29vZy5ldmVudHMuV2hlZWxFdmVudCcsICdnb29nLmV2ZW50cy5XaGVlbEhhbmRsZXInLCAnZ29vZy5zdHJpbmcnLCAnZ29vZy50ZXN0aW5nLlByb3BlcnR5UmVwbGFjZXInLCAnZ29vZy50ZXN0aW5nLmV2ZW50cycsICdnb29nLnRlc3RpbmcudGVzdFN1aXRlJywgJ2dvb2cudXNlckFnZW50J10sIHsnbGFuZyc6ICdlczYnLCAnbW9kdWxlJzogJ2dvb2cnfSk7Cmdvb2cuYWRkRGVwZW5kZW5jeSgnZm9ybWF0L2VtYWlsYWRkcmVzcy5qcycsIFsnZ29vZy5mb3JtYXQuRW1haWxBZGRyZXNzJ10sIFsnZ29vZy5zdHJpbmcnXSwge30pOwpnb29nLmFkZERlcGVuZGVuY3koJ2Zvcm1hdC9lbWFpbGFkZHJlc3NfdGVzdC5qcycsIFsnZ29vZy5mb3JtYXQuRW1haWxBZGRyZXNzVGVzdCddLCBbJ2dvb2cuYXJyYXknLCAnZ29vZy5mb3JtYXQuRW1haWxBZGRyZXNzJywgJ2dvb2cudGVzdGluZy50ZXN0U3VpdGUnXSwgeydsYW5nJzogJ2VzNicsICdtb2R1bGUnOiAnZ29vZyd9KTsKZ29vZy5hZGREZXBlbmRlbmN5KCdmb3JtYXQvZm9ybWF0LmpzJywgWydnb29nLmZvcm1hdCddLCBbJ2dvb2cuaTE4bi5HcmFwaGVtZUJyZWFrJywgJ2dvb2cuc3RyaW5nJywgJ2dvb2cudXNlckFnZW50J10sIHt9KTsKZ29vZy5hZGREZXBlbmRlbmN5KCdmb3JtYXQvZm9ybWF0X3Rlc3QuanMnLCBbJ2dvb2cuZm9ybWF0VGVzdCddLCBbJ2dvb2cuZG9tJywgJ2dvb2cuZG9tLlRhZ05hbWUnLCAnZ29vZy5mb3JtYXQnLCAnZ29vZy5zdHJpbmcnLCAnZ29vZy50ZXN0aW5nLlByb3BlcnR5UmVwbGFjZXInLCAnZ29vZy50ZXN0aW5nLnRlc3RTdWl0ZSddLCB7J2xhbmcnOiAnZXM2JywgJ21vZHVsZSc6ICdnb29nJ30pOwpnb29nLmFkZERlcGVuZGVuY3koJ2Zvcm1hdC9odG1scHJldHR5cHJpbnRlci5qcycsIFsnZ29vZy5mb3JtYXQuSHRtbFByZXR0eVByaW50ZXInLCAnZ29vZy5mb3JtYXQuSHRtbFByZXR0eVByaW50ZXIuQnVmZmVyJ10sIFsnZ29vZy5kb20uVGFnTmFtZScsICdnb29nLm9iamVjdCcsICdnb29nLnN0cmluZy5TdHJpbmdCdWZmZXInXSwge30pOwpnb29nLmFkZERlcGVuZGVuY3koJ2Zvcm1hdC9odG1scHJldHR5cHJpbnRlcl90ZXN0LmpzJywgWydnb29nLmZvcm1hdC5IdG1sUHJldHR5UHJpbnRlclRlc3QnXSwgWydnb29nLmZvcm1hdC5IdG1sUHJldHR5UHJpbnRlcicsICdnb29nLnRlc3RpbmcuTW9ja0Nsb2NrJywgJ2dvb2cudGVzdGluZy50ZXN0U3VpdGUnXSwgeydsYW5nJzogJ2VzNicsICdtb2R1bGUnOiAnZ29vZyd9KTsKZ29vZy5hZGREZXBlbmRlbmN5KCdmb3JtYXQvaW50ZXJuYXRpb25hbGl6ZWRlbWFpbGFkZHJlc3MuanMnLCBbJ2dvb2cuZm9ybWF0LkludGVybmF0aW9uYWxpemVkRW1haWxBZGRyZXNzJ10sIFsnZ29vZy5mb3JtYXQuRW1haWxBZGRyZXNzJywgJ2dvb2cuc3RyaW5nJ10sIHt9KTsKZ29vZy5hZGREZXBlbmRlbmN5KCdmb3JtYXQvaW50ZXJuYXRpb25hbGl6ZWRlbWFpbGFkZHJlc3NfdGVzdC5qcycsIFsnZ29vZy5mb3JtYXQuSW50ZXJuYXRpb25hbGl6ZWRFbWFpbEFkZHJlc3NUZXN0J10sIFsnZ29vZy5hcnJheScsICdnb29nLmZvcm1hdC5JbnRlcm5hdGlvbmFsaXplZEVtYWlsQWRkcmVzcycsICdnb29nLnRlc3RpbmcudGVzdFN1aXRlJ10sIHsnbGFuZyc6ICdlczYnLCAnbW9kdWxlJzogJ2dvb2cnfSk7Cmdvb2cuYWRkRGVwZW5kZW5jeSgnZm9ybWF0L2pzb25wcmV0dHlwcmludGVyLmpzJywgWydnb29nLmZvcm1hdC5Kc29uUHJldHR5UHJpbnRlcicsICdnb29nLmZvcm1hdC5Kc29uUHJldHR5UHJpbnRlci5TYWZlSHRtbERlbGltaXRlcnMnLCAnZ29vZy5mb3JtYXQuSnNvblByZXR0eVByaW50ZXIuVGV4dERlbGltaXRlcnMnXSwgWydnb29nLmh0bWwuU2FmZUh0bWwnLCAnZ29vZy5qc29uJywgJ2dvb2cuanNvbi5TZXJpYWxpemVyJywgJ2dvb2cuc3RyaW5nJywgJ2dvb2cuc3RyaW5nLmZvcm1hdCddLCB7fSk7Cmdvb2cuYWRkRGVwZW5kZW5jeSgnZm9ybWF0L2pzb25wcmV0dHlwcmludGVyX3Rlc3QuanMnLCBbJ2dvb2cuZm9ybWF0Lkpzb25QcmV0dHlQcmludGVyVGVzdCddLCBbJ2dvb2cuZm9ybWF0Lkpzb25QcmV0dHlQcmludGVyJywgJ2dvb2cudGVzdGluZy50ZXN0U3VpdGUnXSwgeydsYW5nJzogJ2VzNicsICdtb2R1bGUnOiAnZ29vZyd9KTsKZ29vZy5hZGREZXBlbmRlbmN5KCdmcy9lbnRyeS5qcycsIFsnZ29vZy5mcy5EaXJlY3RvcnlFbnRyeScsICdnb29nLmZzLkRpcmVjdG9yeUVudHJ5LkJlaGF2aW9yJywgJ2dvb2cuZnMuRW50cnknLCAnZ29vZy5mcy5GaWxlRW50cnknXSwgW10sIHt9KTsKZ29vZy5hZGREZXBlbmRlbmN5KCdmcy9lbnRyeWltcGwuanMnLCBbJ2dvb2cuZnMuRGlyZWN0b3J5RW50cnlJbXBsJywgJ2dvb2cuZnMuRW50cnlJbXBsJywgJ2dvb2cuZnMuRmlsZUVudHJ5SW1wbCddLCBbJ2dvb2cuYXJyYXknLCAnZ29vZy5hc3luYy5EZWZlcnJlZCcsICdnb29nLmZzLkRpcmVjdG9yeUVudHJ5JywgJ2dvb2cuZnMuRW50cnknLCAnZ29vZy5mcy5FcnJvcicsICdnb29nLmZzLkZpbGVFbnRyeScsICdnb29nLmZzLkZpbGVXcml0ZXInLCAnZ29vZy5mdW5jdGlvbnMnLCAnZ29vZy5zdHJpbmcnXSwge30pOwpnb29nLmFkZERlcGVuZGVuY3koJ2ZzL2Vycm9yLmpzJywgWydnb29nLmZzLkRPTUVycm9yTGlrZScsICdnb29nLmZzLkVycm9yJywgJ2dvb2cuZnMuRXJyb3IuRXJyb3JDb2RlJ10sIFsnZ29vZy5hc3NlcnRzJywgJ2dvb2cuZGVidWcuRXJyb3InLCAnZ29vZy5vYmplY3QnLCAnZ29vZy5zdHJpbmcnXSwge30pOwpnb29nLmFkZERlcGVuZGVuY3koJ2ZzL2ZpbGVyZWFkZXIuanMnLCBbJ2dvb2cuZnMuRmlsZVJlYWRlcicsICdnb29nLmZzLkZpbGVSZWFkZXIuRXZlbnRUeXBlJywgJ2dvb2cuZnMuRmlsZVJlYWRlci5SZWFkeVN0YXRlJ10sIFsnZ29vZy5hc3luYy5EZWZlcnJlZCcsICdnb29nLmV2ZW50cy5FdmVudFRhcmdldCcsICdnb29nLmZzLkVycm9yJywgJ2dvb2cuZnMuUHJvZ3Jlc3NFdmVudCddLCB7fSk7Cmdvb2cuYWRkRGVwZW5kZW5jeSgnZnMvZmlsZXNhdmVyLmpzJywgWydnb29nLmZzLkZpbGVTYXZlcicsICdnb29nLmZzLkZpbGVTYXZlci5FdmVudFR5cGUnLCAnZ29vZy5mcy5GaWxlU2F2ZXIuUmVhZHlTdGF0ZSddLCBbJ2dvb2cuZXZlbnRzLkV2ZW50VGFyZ2V0JywgJ2dvb2cuZnMuRXJyb3InLCAnZ29vZy5mcy5Qcm9ncmVzc0V2ZW50J10sIHt9KTsKZ29vZy5hZGREZXBlbmRlbmN5KCdmcy9maWxlc3lzdGVtLmpzJywgWydnb29nLmZzLkZpbGVTeXN0ZW0nXSwgW10sIHt9KTsKZ29vZy5hZGREZXBlbmRlbmN5KCdmcy9maWxlc3lzdGVtaW1wbC5qcycsIFsnZ29vZy5mcy5GaWxlU3lzdGVtSW1wbCddLCBbJ2dvb2cuZnMuRGlyZWN0b3J5RW50cnlJbXBsJywgJ2dvb2cuZnMuRmlsZVN5c3RlbSddLCB7fSk7Cmdvb2cuYWRkRGVwZW5kZW5jeSgnZnMvZmlsZXdyaXRlci5qcycsIFsnZ29vZy5mcy5GaWxlV3JpdGVyJ10sIFsnZ29vZy5mcy5FcnJvcicsICdnb29nLmZzLkZpbGVTYXZlciddLCB7fSk7Cmdvb2cuYWRkRGVwZW5kZW5jeSgnZnMvZnMuanMnLCBbJ2dvb2cuZnMnXSwgWydnb29nLmFycmF5JywgJ2dvb2cuYXN5bmMuRGVmZXJyZWQnLCAnZ29vZy5mcy5FcnJvcicsICdnb29nLmZzLkZpbGVSZWFkZXInLCAnZ29vZy5mcy5GaWxlU3lzdGVtSW1wbCcsICdnb29nLmZzLnVybCcsICdnb29nLnVzZXJBZ2VudCddLCB7fSk7Cmdvb2cuYWRkRGVwZW5kZW5jeSgnZnMvZnNfdGVzdC5qcycsIFsnZ29vZy5mc1Rlc3QnXSwgWydnb29nLlByb21pc2UnLCAnZ29vZy5hcnJheScsICdnb29nLmRvbScsICdnb29nLmRvbS5UYWdOYW1lJywgJ2dvb2cuZXZlbnRzJywgJ2dvb2cuZnMnLCAnZ29vZy5mcy5EaXJlY3RvcnlFbnRyeScsICdnb29nLmZzLkVycm9yJywgJ2dvb2cuZnMuRmlsZVJlYWRlcicsICdnb29nLmZzLkZpbGVTYXZlcicsICdnb29nLnN0cmluZycsICdnb29nLnRlc3RpbmcuUHJvcGVydHlSZXBsYWNlcicsICdnb29nLnRlc3RpbmcudGVzdFN1aXRlJ10sIHsnbGFuZyc6ICdlczYnLCAnbW9kdWxlJzogJ2dvb2cnfSk7Cmdvb2cuYWRkRGVwZW5kZW5jeSgnZnMvcHJvZ3Jlc3NldmVudC5qcycsIFsnZ29vZy5mcy5Qcm9ncmVzc0V2ZW50J10sIFsnZ29vZy5ldmVudHMuRXZlbnQnXSwge30pOwpnb29nLmFkZERlcGVuZGVuY3koJ2ZzL3VybC5qcycsIFsnZ29vZy5mcy51cmwnXSwgW10sIHsnbGFuZyc6ICdlczYnfSk7Cmdvb2cuYWRkRGVwZW5kZW5jeSgnZnMvdXJsX3Rlc3QuanMnLCBbJ2dvb2cudXJsVGVzdCddLCBbJ2dvb2cuZnMudXJsJywgJ2dvb2cudGVzdGluZy5Qcm9wZXJ0eVJlcGxhY2VyJywgJ2dvb2cudGVzdGluZy50ZXN0U3VpdGUnXSwgeydsYW5nJzogJ2VzNicsICdtb2R1bGUnOiAnZ29vZyd9KTsKZ29vZy5hZGREZXBlbmRlbmN5KCdmdW5jdGlvbnMvZnVuY3Rpb25zLmpzJywgWydnb29nLmZ1bmN0aW9ucyddLCBbXSwgeydsYW5nJzogJ2VzNid9KTsKZ29vZy5hZGREZXBlbmRlbmN5KCdmdW5jdGlvbnMvZnVuY3Rpb25zX3Rlc3QuanMnLCBbJ2dvb2cuZnVuY3Rpb25zVGVzdCddLCBbJ2dvb2cuYXJyYXknLCAnZ29vZy5mdW5jdGlvbnMnLCAnZ29vZy50ZXN0aW5nLk1vY2tDbG9jaycsICdnb29nLnRlc3RpbmcuUHJvcGVydHlSZXBsYWNlcicsICdnb29nLnRlc3RpbmcucmVjb3JkRnVuY3Rpb24nLCAnZ29vZy50ZXN0aW5nLnRlc3RTdWl0ZSddLCB7J2xhbmcnOiAnZXM2JywgJ21vZHVsZSc6ICdnb29nJ30pOwpnb29nLmFkZERlcGVuZGVuY3koJ2Z4L2Fic3RyYWN0ZHJhZ2Ryb3AuanMnLCBbJ2dvb2cuZnguQWJzdHJhY3REcmFnRHJvcCcsICdnb29nLmZ4LkFic3RyYWN0RHJhZ0Ryb3AuRXZlbnRUeXBlJywgJ2dvb2cuZnguRHJhZ0Ryb3BFdmVudCcsICdnb29nLmZ4LkRyYWdEcm9wSXRlbSddLCBbJ2dvb2cuYXJyYXknLCAnZ29vZy5hc3NlcnRzJywgJ2dvb2cuZG9tJywgJ2dvb2cuZG9tLmNsYXNzbGlzdCcsICdnb29nLmV2ZW50cycsICdnb29nLmV2ZW50cy5FdmVudCcsICdnb29nLmV2ZW50cy5FdmVudEhhbmRsZXInLCAnZ29vZy5ldmVudHMuRXZlbnRUYXJnZXQnLCAnZ29vZy5ldmVudHMuRXZlbnRUeXBlJywgJ2dvb2cuZnguRHJhZ2dlcicsICdnb29nLm1hdGguQm94JywgJ2dvb2cubWF0aC5Db29yZGluYXRlJywgJ2dvb2cuc3R5bGUnXSwge30pOwpnb29nLmFkZERlcGVuZGVuY3koJ2Z4L2Fic3RyYWN0ZHJhZ2Ryb3BfdGVzdC5qcycsIFsnZ29vZy5meC5BYnN0cmFjdERyYWdEcm9wVGVzdCddLCBbJ2dvb2cuYXJyYXknLCAnZ29vZy5kb20nLCAnZ29vZy5kb20uVGFnTmFtZScsICdnb29nLmV2ZW50cycsICdnb29nLmV2ZW50cy5FdmVudFR5cGUnLCAnZ29vZy5mdW5jdGlvbnMnLCAnZ29vZy5meC5BYnN0cmFjdERyYWdEcm9wJywgJ2dvb2cuZnguRHJhZ0Ryb3BJdGVtJywgJ2dvb2cubWF0aC5Cb3gnLCAnZ29vZy5tYXRoLkNvb3JkaW5hdGUnLCAnZ29vZy5zdHlsZScsICdnb29nLnRlc3RpbmcuZXZlbnRzJywgJ2dvb2cudGVzdGluZy5ldmVudHMuRXZlbnQnLCAnZ29vZy50ZXN0aW5nLmpzdW5pdCddLCB7J2xhbmcnOiAnZXM2J30pOwpnb29nLmFkZERlcGVuZGVuY3koJ2Z4L2FuaW0vYW5pbS5qcycsIFsnZ29vZy5meC5hbmltJywgJ2dvb2cuZnguYW5pbS5BbmltYXRlZCddLCBbJ2dvb2cuYXN5bmMuQW5pbWF0aW9uRGVsYXknLCAnZ29vZy5hc3luYy5EZWxheScsICdnb29nLm9iamVjdCddLCB7fSk7Cmdvb2cuYWRkRGVwZW5kZW5jeSgnZngvYW5pbS9hbmltX3Rlc3QuanMnLCBbJ2dvb2cuZnguYW5pbVRlc3QnXSwgWydnb29nLmFzeW5jLkFuaW1hdGlvbkRlbGF5JywgJ2dvb2cuYXN5bmMuRGVsYXknLCAnZ29vZy5ldmVudHMnLCAnZ29vZy5mdW5jdGlvbnMnLCAnZ29vZy5meC5BbmltYXRpb24nLCAnZ29vZy5meC5hbmltJywgJ2dvb2cub2JqZWN0JywgJ2dvb2cudGVzdGluZy5Nb2NrQ2xvY2snLCAnZ29vZy50ZXN0aW5nLlByb3BlcnR5UmVwbGFjZXInLCAnZ29vZy50ZXN0aW5nLnJlY29yZEZ1bmN0aW9uJywgJ2dvb2cudGVzdGluZy50ZXN0U3VpdGUnLCAnZ29vZy51c2VyQWdlbnQnXSwgeydsYW5nJzogJ2VzNicsICdtb2R1bGUnOiAnZ29vZyd9KTsKZ29vZy5hZGREZXBlbmRlbmN5KCdmeC9hbmltYXRpb24uanMnLCBbJ2dvb2cuZnguQW5pbWF0aW9uJywgJ2dvb2cuZnguQW5pbWF0aW9uLkV2ZW50VHlwZScsICdnb29nLmZ4LkFuaW1hdGlvbi5TdGF0ZScsICdnb29nLmZ4LkFuaW1hdGlvbkV2ZW50J10sIFsnZ29vZy5hcnJheScsICdnb29nLmFzc2VydHMnLCAnZ29vZy5ldmVudHMuRXZlbnQnLCAnZ29vZy5meC5UcmFuc2l0aW9uJywgJ2dvb2cuZnguVHJhbnNpdGlvbkJhc2UnLCAnZ29vZy5meC5hbmltJywgJ2dvb2cuZnguYW5pbS5BbmltYXRlZCddLCB7fSk7Cmdvb2cuYWRkRGVwZW5kZW5jeSgnZngvYW5pbWF0aW9uX3Rlc3QuanMnLCBbJ2dvb2cuZnguQW5pbWF0aW9uVGVzdCddLCBbJ2dvb2cuZXZlbnRzJywgJ2dvb2cuZnguQW5pbWF0aW9uJywgJ2dvb2cudGVzdGluZy5Nb2NrQ2xvY2snLCAnZ29vZy50ZXN0aW5nLnRlc3RTdWl0ZSddLCB7J2xhbmcnOiAnZXM2JywgJ21vZHVsZSc6ICdnb29nJ30pOwpnb29nLmFkZERlcGVuZGVuY3koJ2Z4L2FuaW1hdGlvbnF1ZXVlLmpzJywgWydnb29nLmZ4LkFuaW1hdGlvblBhcmFsbGVsUXVldWUnLCAnZ29vZy5meC5BbmltYXRpb25RdWV1ZScsICdnb29nLmZ4LkFuaW1hdGlvblNlcmlhbFF1ZXVlJ10sIFsnZ29vZy5hcnJheScsICdnb29nLmFzc2VydHMnLCAnZ29vZy5ldmVudHMnLCAnZ29vZy5meC5BbmltYXRpb24nLCAnZ29vZy5meC5UcmFuc2l0aW9uJywgJ2dvb2cuZnguVHJhbnNpdGlvbkJhc2UnXSwge30pOwpnb29nLmFkZERlcGVuZGVuY3koJ2Z4L2FuaW1hdGlvbnF1ZXVlX3Rlc3QuanMnLCBbJ2dvb2cuZnguQW5pbWF0aW9uUXVldWVUZXN0J10sIFsnZ29vZy5ldmVudHMnLCAnZ29vZy5meC5BbmltYXRpb24nLCAnZ29vZy5meC5BbmltYXRpb25QYXJhbGxlbFF1ZXVlJywgJ2dvb2cuZnguQW5pbWF0aW9uU2VyaWFsUXVldWUnLCAnZ29vZy5meC5UcmFuc2l0aW9uJywgJ2dvb2cuZnguYW5pbScsICdnb29nLnRlc3RpbmcuTW9ja0Nsb2NrJywgJ2dvb2cudGVzdGluZy50ZXN0U3VpdGUnXSwgeydsYW5nJzogJ2VzNicsICdtb2R1bGUnOiAnZ29vZyd9KTsKZ29vZy5hZGREZXBlbmRlbmN5KCdmeC9jc3MzL2Z4LmpzJywgWydnb29nLmZ4LmNzczMnXSwgWydnb29nLmZ4LmNzczMuVHJhbnNpdGlvbiddLCB7fSk7Cmdvb2cuYWRkRGVwZW5kZW5jeSgnZngvY3NzMy90cmFuc2l0aW9uLmpzJywgWydnb29nLmZ4LmNzczMuVHJhbnNpdGlvbiddLCBbJ2dvb2cuVGltZXInLCAnZ29vZy5hc3NlcnRzJywgJ2dvb2cuZnguVHJhbnNpdGlvbkJhc2UnLCAnZ29vZy5zdHlsZScsICdnb29nLnN0eWxlLnRyYW5zaXRpb24nXSwge30pOwpnb29nLmFkZERlcGVuZGVuY3koJ2Z4L2NzczMvdHJhbnNpdGlvbl90ZXN0LmpzJywgWydnb29nLmZ4LmNzczMuVHJhbnNpdGlvblRlc3QnXSwgWydnb29nLmRpc3Bvc2UnLCAnZ29vZy5kb20nLCAnZ29vZy5kb20uVGFnTmFtZScsICdnb29nLmV2ZW50cycsICdnb29nLmZ4LlRyYW5zaXRpb24nLCAnZ29vZy5meC5jc3MzLlRyYW5zaXRpb24nLCAnZ29vZy5zdHlsZS50cmFuc2l0aW9uJywgJ2dvb2cudGVzdGluZy5Nb2NrQ2xvY2snLCAnZ29vZy50ZXN0aW5nLnJlY29yZEZ1bmN0aW9uJywgJ2dvb2cudGVzdGluZy50ZXN0U3VpdGUnXSwgeydsYW5nJzogJ2VzNicsICdtb2R1bGUnOiAnZ29vZyd9KTsKZ29vZy5hZGREZXBlbmRlbmN5KCdmeC9jc3NzcHJpdGVhbmltYXRpb24uanMnLCBbJ2dvb2cuZnguQ3NzU3ByaXRlQW5pbWF0aW9uJ10sIFsnZ29vZy5meC5BbmltYXRpb24nXSwge30pOwpnb29nLmFkZERlcGVuZGVuY3koJ2Z4L2Nzc3Nwcml0ZWFuaW1hdGlvbl90ZXN0LmpzJywgWydnb29nLmZ4LkNzc1Nwcml0ZUFuaW1hdGlvblRlc3QnXSwgWydnb29nLmZ4LkNzc1Nwcml0ZUFuaW1hdGlvbicsICdnb29nLm1hdGguQm94JywgJ2dvb2cubWF0aC5TaXplJywgJ2dvb2cudGVzdGluZy5Nb2NrQ2xvY2snLCAnZ29vZy50ZXN0aW5nLnRlc3RTdWl0ZSddLCB7J2xhbmcnOiAnZXM2JywgJ21vZHVsZSc6ICdnb29nJ30pOwpnb29nLmFkZERlcGVuZGVuY3koJ2Z4L2RvbS5qcycsIFsnZ29vZy5meC5kb20nLCAnZ29vZy5meC5kb20uQmdDb2xvclRyYW5zZm9ybScsICdnb29nLmZ4LmRvbS5Db2xvclRyYW5zZm9ybScsICdnb29nLmZ4LmRvbS5GYWRlJywgJ2dvb2cuZnguZG9tLkZhZGVJbicsICdnb29nLmZ4LmRvbS5GYWRlSW5BbmRTaG93JywgJ2dvb2cuZnguZG9tLkZhZGVPdXQnLCAnZ29vZy5meC5kb20uRmFkZU91dEFuZEhpZGUnLCAnZ29vZy5meC5kb20uUHJlZGVmaW5lZEVmZmVjdCcsICdnb29nLmZ4LmRvbS5SZXNpemUnLCAnZ29vZy5meC5kb20uUmVzaXplSGVpZ2h0JywgJ2dvb2cuZnguZG9tLlJlc2l6ZVdpZHRoJywgJ2dvb2cuZnguZG9tLlNjcm9sbCcsICdnb29nLmZ4LmRvbS5TbGlkZScsICdnb29nLmZ4LmRvbS5TbGlkZUZyb20nLCAnZ29vZy5meC5kb20uU3dpcGUnXSwgWydnb29nLmNvbG9yJywgJ2dvb2cuZXZlbnRzJywgJ2dvb2cuZnguQW5pbWF0aW9uJywgJ2dvb2cuZnguVHJhbnNpdGlvbicsICdnb29nLnN0eWxlJywgJ2dvb2cuc3R5bGUuYmlkaSddLCB7fSk7Cmdvb2cuYWRkRGVwZW5kZW5jeSgnZngvZHJhZ2Ryb3AuanMnLCBbJ2dvb2cuZnguRHJhZ0Ryb3AnXSwgWydnb29nLmZ4LkFic3RyYWN0RHJhZ0Ryb3AnLCAnZ29vZy5meC5EcmFnRHJvcEl0ZW0nXSwge30pOwpnb29nLmFkZERlcGVuZGVuY3koJ2Z4L2RyYWdkcm9wZ3JvdXAuanMnLCBbJ2dvb2cuZnguRHJhZ0Ryb3BHcm91cCddLCBbJ2dvb2cuZG9tJywgJ2dvb2cuZnguQWJzdHJhY3REcmFnRHJvcCcsICdnb29nLmZ4LkRyYWdEcm9wSXRlbSddLCB7fSk7Cmdvb2cuYWRkRGVwZW5kZW5jeSgnZngvZHJhZ2Ryb3Bncm91cF90ZXN0LmpzJywgWydnb29nLmZ4LkRyYWdEcm9wR3JvdXBUZXN0J10sIFsnZ29vZy5ldmVudHMnLCAnZ29vZy5meC5EcmFnRHJvcEdyb3VwJywgJ2dvb2cudGVzdGluZy50ZXN0U3VpdGUnXSwgeydsYW5nJzogJ2VzNicsICdtb2R1bGUnOiAnZ29vZyd9KTsKZ29vZy5hZGREZXBlbmRlbmN5KCdmeC9kcmFnZ2VyLmpzJywgWydnb29nLmZ4LkRyYWdFdmVudCcsICdnb29nLmZ4LkRyYWdnZXInLCAnZ29vZy5meC5EcmFnZ2VyLkV2ZW50VHlwZSddLCBbJ2dvb2cuZG9tJywgJ2dvb2cuZG9tLlRhZ05hbWUnLCAnZ29vZy5ldmVudHMnLCAnZ29vZy5ldmVudHMuRXZlbnQnLCAnZ29vZy5ldmVudHMuRXZlbnRIYW5kbGVyJywgJ2dvb2cuZXZlbnRzLkV2ZW50VGFyZ2V0JywgJ2dvb2cuZXZlbnRzLkV2ZW50VHlwZScsICdnb29nLm1hdGguQ29vcmRpbmF0ZScsICdnb29nLm1hdGguUmVjdCcsICdnb29nLnN0eWxlJywgJ2dvb2cuc3R5bGUuYmlkaScsICdnb29nLnVzZXJBZ2VudCddLCB7fSk7Cmdvb2cuYWRkRGVwZW5kZW5jeSgnZngvZHJhZ2dlcl90ZXN0LmpzJywgWydnb29nLmZ4LkRyYWdnZXJUZXN0J10sIFsnZ29vZy5kb20nLCAnZ29vZy5kb20uVGFnTmFtZScsICdnb29nLmV2ZW50cycsICdnb29nLmV2ZW50cy5Ccm93c2VyRXZlbnQnLCAnZ29vZy5ldmVudHMuRXZlbnQnLCAnZ29vZy5ldmVudHMuRXZlbnRUeXBlJywgJ2dvb2cuZnguRHJhZ2dlcicsICdnb29nLm1hdGguUmVjdCcsICdnb29nLnN0eWxlLmJpZGknLCAnZ29vZy50ZXN0aW5nLlN0cmljdE1vY2snLCAnZ29vZy50ZXN0aW5nLmV2ZW50cycsICdnb29nLnRlc3RpbmcudGVzdFN1aXRlJywgJ2dvb2cudXNlckFnZW50J10sIHsnbGFuZyc6ICdlczYnLCAnbW9kdWxlJzogJ2dvb2cnfSk7Cmdvb2cuYWRkRGVwZW5kZW5jeSgnZngvZHJhZ2xpc3Rncm91cC5qcycsIFsnZ29vZy5meC5EcmFnTGlzdERpcmVjdGlvbicsICdnb29nLmZ4LkRyYWdMaXN0R3JvdXAnLCAnZ29vZy5meC5EcmFnTGlzdEdyb3VwLkV2ZW50VHlwZScsICdnb29nLmZ4LkRyYWdMaXN0R3JvdXBFdmVudCcsICdnb29nLmZ4LkRyYWdMaXN0UGVybWlzc2lvbiddLCBbJ2dvb2cuYXJyYXknLCAnZ29vZy5hc3NlcnRzJywgJ2dvb2cuZG9tJywgJ2dvb2cuZG9tLmNsYXNzbGlzdCcsICdnb29nLmV2ZW50cycsICdnb29nLmV2ZW50cy5FdmVudCcsICdnb29nLmV2ZW50cy5FdmVudEhhbmRsZXInLCAnZ29vZy5ldmVudHMuRXZlbnRJZCcsICdnb29nLmV2ZW50cy5FdmVudFRhcmdldCcsICdnb29nLmV2ZW50cy5FdmVudFR5cGUnLCAnZ29vZy5meC5EcmFnZ2VyJywgJ2dvb2cubWF0aC5Db29yZGluYXRlJywgJ2dvb2cuc3RyaW5nJywgJ2dvb2cuc3R5bGUnXSwge30pOwpnb29nLmFkZERlcGVuZGVuY3koJ2Z4L2RyYWdsaXN0Z3JvdXBfdGVzdC5qcycsIFsnZ29vZy5meC5EcmFnTGlzdEdyb3VwVGVzdCddLCBbJ2dvb2cuYXJyYXknLCAnZ29vZy5kb20nLCAnZ29vZy5kb20uVGFnTmFtZScsICdnb29nLmRvbS5jbGFzc2xpc3QnLCAnZ29vZy5ldmVudHMnLCAnZ29vZy5ldmVudHMuQnJvd3NlckV2ZW50JywgJ2dvb2cuZXZlbnRzLkJyb3dzZXJGZWF0dXJlJywgJ2dvb2cuZXZlbnRzLkV2ZW50JywgJ2dvb2cuZXZlbnRzLkV2ZW50VHlwZScsICdnb29nLmZ4LkRyYWdFdmVudCcsICdnb29nLmZ4LkRyYWdMaXN0RGlyZWN0aW9uJywgJ2dvb2cuZnguRHJhZ0xpc3RHcm91cCcsICdnb29nLmZ4LkRyYWdMaXN0UGVybWlzc2lvbicsICdnb29nLmZ4LkRyYWdnZXInLCAnZ29vZy5tYXRoLkNvb3JkaW5hdGUnLCAnZ29vZy5vYmplY3QnLCAnZ29vZy5zdHlsZScsICdnb29nLnRlc3RpbmcuZXZlbnRzJywgJ2dvb2cudGVzdGluZy50ZXN0U3VpdGUnXSwgeydsYW5nJzogJ2VzNicsICdtb2R1bGUnOiAnZ29vZyd9KTsKZ29vZy5hZGREZXBlbmRlbmN5KCdmeC9kcmFnc2Nyb2xsc3VwcG9ydC5qcycsIFsnZ29vZy5meC5EcmFnU2Nyb2xsU3VwcG9ydCddLCBbJ2dvb2cuRGlzcG9zYWJsZScsICdnb29nLlRpbWVyJywgJ2dvb2cuZG9tJywgJ2dvb2cuZXZlbnRzLkV2ZW50SGFuZGxlcicsICdnb29nLmV2ZW50cy5FdmVudFR5cGUnLCAnZ29vZy5tYXRoLkNvb3JkaW5hdGUnLCAnZ29vZy5zdHlsZSddLCB7fSk7Cmdvb2cuYWRkRGVwZW5kZW5jeSgnZngvZHJhZ3Njcm9sbHN1cHBvcnRfdGVzdC5qcycsIFsnZ29vZy5meC5EcmFnU2Nyb2xsU3VwcG9ydFRlc3QnXSwgWydnb29nLmZ4LkRyYWdTY3JvbGxTdXBwb3J0JywgJ2dvb2cubWF0aC5Db29yZGluYXRlJywgJ2dvb2cubWF0aC5SZWN0JywgJ2dvb2cudGVzdGluZy5Nb2NrQ2xvY2snLCAnZ29vZy50ZXN0aW5nLmV2ZW50cycsICdnb29nLnRlc3RpbmcudGVzdFN1aXRlJ10sIHsnbGFuZyc6ICdlczYnLCAnbW9kdWxlJzogJ2dvb2cnfSk7Cmdvb2cuYWRkRGVwZW5kZW5jeSgnZngvZWFzaW5nLmpzJywgWydnb29nLmZ4LmVhc2luZyddLCBbXSwge30pOwpnb29nLmFkZERlcGVuZGVuY3koJ2Z4L2Vhc2luZ190ZXN0LmpzJywgWydnb29nLmZ4LmVhc2luZ1Rlc3QnXSwgWydnb29nLmZ4LmVhc2luZycsICdnb29nLnRlc3RpbmcudGVzdFN1aXRlJ10sIHsnbGFuZyc6ICdlczYnLCAnbW9kdWxlJzogJ2dvb2cnfSk7Cmdvb2cuYWRkRGVwZW5kZW5jeSgnZngvZnguanMnLCBbJ2dvb2cuZngnXSwgWydnb29nLmFzc2VydHMnLCAnZ29vZy5meC5BbmltYXRpb24nLCAnZ29vZy5meC5BbmltYXRpb24uRXZlbnRUeXBlJywgJ2dvb2cuZnguQW5pbWF0aW9uLlN0YXRlJywgJ2dvb2cuZnguQW5pbWF0aW9uRXZlbnQnLCAnZ29vZy5meC5UcmFuc2l0aW9uLkV2ZW50VHlwZScsICdnb29nLmZ4LmVhc2luZyddLCB7fSk7Cmdvb2cuYWRkRGVwZW5kZW5jeSgnZngvZnhfdGVzdC5qcycsIFsnZ29vZy5meFRlc3QnXSwgWydnb29nLmZ4LkFuaW1hdGlvbicsICdnb29nLm9iamVjdCcsICdnb29nLnRlc3RpbmcuTW9ja0Nsb2NrJywgJ2dvb2cudGVzdGluZy5Qcm9wZXJ0eVJlcGxhY2VyJywgJ2dvb2cudGVzdGluZy50ZXN0U3VpdGUnXSwgeydsYW5nJzogJ2VzNicsICdtb2R1bGUnOiAnZ29vZyd9KTsKZ29vZy5hZGREZXBlbmRlbmN5KCdmeC90cmFuc2l0aW9uLmpzJywgWydnb29nLmZ4LlRyYW5zaXRpb24nLCAnZ29vZy5meC5UcmFuc2l0aW9uLkV2ZW50VHlwZSddLCBbXSwge30pOwpnb29nLmFkZERlcGVuZGVuY3koJ2Z4L3RyYW5zaXRpb25iYXNlLmpzJywgWydnb29nLmZ4LlRyYW5zaXRpb25CYXNlJywgJ2dvb2cuZnguVHJhbnNpdGlvbkJhc2UuU3RhdGUnXSwgWydnb29nLmV2ZW50cy5FdmVudFRhcmdldCcsICdnb29nLmZ4LlRyYW5zaXRpb24nXSwge30pOwpnb29nLmFkZERlcGVuZGVuY3koJ2dvb2cuanMnLCBbXSwgW10sIHsnbGFuZyc6ICdlczYnLCAnbW9kdWxlJzogJ2VzNid9KTsKZ29vZy5hZGREZXBlbmRlbmN5KCdncmFwaGljcy9hYnN0cmFjdGdyYXBoaWNzLmpzJywgWydnb29nLmdyYXBoaWNzLkFic3RyYWN0R3JhcGhpY3MnXSwgWydnb29nLmRvbScsICdnb29nLmdyYXBoaWNzLkFmZmluZVRyYW5zZm9ybScsICdnb29nLmdyYXBoaWNzLkVsZW1lbnQnLCAnZ29vZy5ncmFwaGljcy5FbGxpcHNlRWxlbWVudCcsICdnb29nLmdyYXBoaWNzLkZpbGwnLCAnZ29vZy5ncmFwaGljcy5Gb250JywgJ2dvb2cuZ3JhcGhpY3MuR3JvdXBFbGVtZW50JywgJ2dvb2cuZ3JhcGhpY3MuUGF0aCcsICdnb29nLmdyYXBoaWNzLlBhdGhFbGVtZW50JywgJ2dvb2cuZ3JhcGhpY3MuUmVjdEVsZW1lbnQnLCAnZ29vZy5ncmFwaGljcy5TdHJva2UnLCAnZ29vZy5ncmFwaGljcy5TdHJva2VBbmRGaWxsRWxlbWVudCcsICdnb29nLmdyYXBoaWNzLlRleHRFbGVtZW50JywgJ2dvb2cubWF0aC5Db29yZGluYXRlJywgJ2dvb2cubWF0aC5TaXplJywgJ2dvb2cuc3R5bGUnLCAnZ29vZy51aS5Db21wb25lbnQnXSwge30pOwpnb29nLmFkZERlcGVuZGVuY3koJ2dyYXBoaWNzL2FmZmluZXRyYW5zZm9ybS5qcycsIFsnZ29vZy5ncmFwaGljcy5BZmZpbmVUcmFuc2Zvcm0nXSwgW10sIHsnbGFuZyc6ICdlczYnfSk7Cmdvb2cuYWRkRGVwZW5kZW5jeSgnZ3JhcGhpY3MvYWZmaW5ldHJhbnNmb3JtX3Rlc3QuanMnLCBbJ2dvb2cuZ3JhcGhpY3MuQWZmaW5lVHJhbnNmb3JtVGVzdCddLCBbJ2dvb2cuYXJyYXknLCAnZ29vZy5ncmFwaGljcycsICdnb29nLmdyYXBoaWNzLkFmZmluZVRyYW5zZm9ybScsICdnb29nLm1hdGgnLCAnZ29vZy50ZXN0aW5nLnRlc3RTdWl0ZSddLCB7J2xhbmcnOiAnZXM2JywgJ21vZHVsZSc6ICdnb29nJ30pOwpnb29nLmFkZERlcGVuZGVuY3koJ2dyYXBoaWNzL2NhbnZhc2VsZW1lbnQuanMnLCBbJ2dvb2cuZ3JhcGhpY3MuQ2FudmFzRWxsaXBzZUVsZW1lbnQnLCAnZ29vZy5ncmFwaGljcy5DYW52YXNHcm91cEVsZW1lbnQnLCAnZ29vZy5ncmFwaGljcy5DYW52YXNJbWFnZUVsZW1lbnQnLCAnZ29vZy5ncmFwaGljcy5DYW52YXNQYXRoRWxlbWVudCcsICdnb29nLmdyYXBoaWNzLkNhbnZhc1JlY3RFbGVtZW50JywgJ2dvb2cuZ3JhcGhpY3MuQ2FudmFzVGV4dEVsZW1lbnQnXSwgWydnb29nLmFycmF5JywgJ2dvb2cuZG9tJywgJ2dvb2cuZG9tLlRhZ05hbWUnLCAnZ29vZy5kb20uc2FmZScsICdnb29nLmdyYXBoaWNzLkVsbGlwc2VFbGVtZW50JywgJ2dvb2cuZ3JhcGhpY3MuRm9udCcsICdnb29nLmdyYXBoaWNzLkdyb3VwRWxlbWVudCcsICdnb29nLmdyYXBoaWNzLkltYWdlRWxlbWVudCcsICdnb29nLmdyYXBoaWNzLlBhdGgnLCAnZ29vZy5ncmFwaGljcy5QYXRoRWxlbWVudCcsICdnb29nLmdyYXBoaWNzLlJlY3RFbGVtZW50JywgJ2dvb2cuZ3JhcGhpY3MuVGV4dEVsZW1lbnQnLCAnZ29vZy5odG1sLlNhZmVIdG1sJywgJ2dvb2cuaHRtbC51bmNoZWNrZWRjb252ZXJzaW9ucycsICdnb29nLm1hdGgnLCAnZ29vZy5zdHJpbmcnLCAnZ29vZy5zdHJpbmcuQ29uc3QnXSwge30pOwpnb29nLmFkZERlcGVuZGVuY3koJ2dyYXBoaWNzL2NhbnZhc2dyYXBoaWNzLmpzJywgWydnb29nLmdyYXBoaWNzLkNhbnZhc0dyYXBoaWNzJ10sIFsnZ29vZy5kb20uVGFnTmFtZScsICdnb29nLmV2ZW50cy5FdmVudFR5cGUnLCAnZ29vZy5ncmFwaGljcy5BYnN0cmFjdEdyYXBoaWNzJywgJ2dvb2cuZ3JhcGhpY3MuQ2FudmFzRWxsaXBzZUVsZW1lbnQnLCAnZ29vZy5ncmFwaGljcy5DYW52YXNHcm91cEVsZW1lbnQnLCAnZ29vZy5ncmFwaGljcy5DYW52YXNJbWFnZUVsZW1lbnQnLCAnZ29vZy5ncmFwaGljcy5DYW52YXNQYXRoRWxlbWVudCcsICdnb29nLmdyYXBoaWNzLkNhbnZhc1JlY3RFbGVtZW50JywgJ2dvb2cuZ3JhcGhpY3MuQ2FudmFzVGV4dEVsZW1lbnQnLCAnZ29vZy5ncmFwaGljcy5Gb250JywgJ2dvb2cuZ3JhcGhpY3MuU29saWRGaWxsJywgJ2dvb2cubWF0aC5TaXplJywgJ2dvb2cuc3R5bGUnXSwge30pOwpnb29nLmFkZERlcGVuZGVuY3koJ2dyYXBoaWNzL2NhbnZhc2dyYXBoaWNzX3Rlc3QuanMnLCBbJ2dvb2cuZ3JhcGhpY3MuQ2FudmFzR3JhcGhpY3NUZXN0J10sIFsnZ29vZy5kb20nLCAnZ29vZy5ncmFwaGljcy5DYW52YXNHcmFwaGljcycsICdnb29nLmdyYXBoaWNzLlNvbGlkRmlsbCcsICdnb29nLmdyYXBoaWNzLlN0cm9rZScsICdnb29nLnRlc3RpbmcudGVzdFN1aXRlJ10sIHsnbGFuZyc6ICdlczYnLCAnbW9kdWxlJzogJ2dvb2cnfSk7Cmdvb2cuYWRkRGVwZW5kZW5jeSgnZ3JhcGhpY3MvZWxlbWVudC5qcycsIFsnZ29vZy5ncmFwaGljcy5FbGVtZW50J10sIFsnZ29vZy5hc3NlcnRzJywgJ2dvb2cuZXZlbnRzJywgJ2dvb2cuZXZlbnRzLkV2ZW50VGFyZ2V0JywgJ2dvb2cuZXZlbnRzLkxpc3RlbmFibGUnLCAnZ29vZy5ncmFwaGljcy5BZmZpbmVUcmFuc2Zvcm0nLCAnZ29vZy5tYXRoJ10sIHt9KTsKZ29vZy5hZGREZXBlbmRlbmN5KCdncmFwaGljcy9lbGxpcHNlZWxlbWVudC5qcycsIFsnZ29vZy5ncmFwaGljcy5FbGxpcHNlRWxlbWVudCddLCBbJ2dvb2cuZ3JhcGhpY3MuU3Ryb2tlQW5kRmlsbEVsZW1lbnQnXSwge30pOwpnb29nLmFkZERlcGVuZGVuY3koJ2dyYXBoaWNzL2V4dC9jb29yZGluYXRlcy5qcycsIFsnZ29vZy5ncmFwaGljcy5leHQuY29vcmRpbmF0ZXMnXSwgWydnb29nLnN0cmluZyddLCB7fSk7Cmdvb2cuYWRkRGVwZW5kZW5jeSgnZ3JhcGhpY3MvZXh0L2Nvb3JkaW5hdGVzX3Rlc3QuanMnLCBbJ2dvb2cuZ3JhcGhpY3MuZXh0LmNvb3JkaW5hdGVzVGVzdCddLCBbJ2dvb2cuZ3JhcGhpY3MnLCAnZ29vZy5ncmFwaGljcy5leHQuY29vcmRpbmF0ZXMnLCAnZ29vZy50ZXN0aW5nLnRlc3RTdWl0ZSddLCB7J2xhbmcnOiAnZXM2JywgJ21vZHVsZSc6ICdnb29nJ30pOwpnb29nLmFkZERlcGVuZGVuY3koJ2dyYXBoaWNzL2V4dC9lbGVtZW50LmpzJywgWydnb29nLmdyYXBoaWNzLmV4dC5FbGVtZW50J10sIFsnZ29vZy5ldmVudHMuRXZlbnRUYXJnZXQnLCAnZ29vZy5mdW5jdGlvbnMnLCAnZ29vZy5ncmFwaGljcy5leHQuY29vcmRpbmF0ZXMnXSwge30pOwpnb29nLmFkZERlcGVuZGVuY3koJ2dyYXBoaWNzL2V4dC9lbGVtZW50X3Rlc3QuanMnLCBbJ2dvb2cuZ3JhcGhpY3MuZXh0LkVsZW1lbnRUZXN0J10sIFsnZ29vZy5ncmFwaGljcycsICdnb29nLmdyYXBoaWNzLmV4dCcsICdnb29nLnRlc3RpbmcuU3RyaWN0TW9jaycsICdnb29nLnRlc3RpbmcudGVzdFN1aXRlJ10sIHsnbGFuZyc6ICdlczYnLCAnbW9kdWxlJzogJ2dvb2cnfSk7Cmdvb2cuYWRkRGVwZW5kZW5jeSgnZ3JhcGhpY3MvZXh0L2VsbGlwc2UuanMnLCBbJ2dvb2cuZ3JhcGhpY3MuZXh0LkVsbGlwc2UnXSwgWydnb29nLmdyYXBoaWNzLmV4dC5TdHJva2VBbmRGaWxsRWxlbWVudCddLCB7fSk7Cmdvb2cuYWRkRGVwZW5kZW5jeSgnZ3JhcGhpY3MvZXh0L2V4dC5qcycsIFsnZ29vZy5ncmFwaGljcy5leHQnXSwgWydnb29nLmdyYXBoaWNzLmV4dC5FbGxpcHNlJywgJ2dvb2cuZ3JhcGhpY3MuZXh0LkdyYXBoaWNzJywgJ2dvb2cuZ3JhcGhpY3MuZXh0Lkdyb3VwJywgJ2dvb2cuZ3JhcGhpY3MuZXh0LkltYWdlJywgJ2dvb2cuZ3JhcGhpY3MuZXh0LlJlY3RhbmdsZScsICdnb29nLmdyYXBoaWNzLmV4dC5TaGFwZScsICdnb29nLmdyYXBoaWNzLmV4dC5jb29yZGluYXRlcyddLCB7fSk7Cmdvb2cuYWRkRGVwZW5kZW5jeSgnZ3JhcGhpY3MvZXh0L2dyYXBoaWNzLmpzJywgWydnb29nLmdyYXBoaWNzLmV4dC5HcmFwaGljcyddLCBbJ2dvb2cuZXZlbnRzJywgJ2dvb2cuZXZlbnRzLkV2ZW50VHlwZScsICdnb29nLmdyYXBoaWNzJywgJ2dvb2cuZ3JhcGhpY3MuZXh0Lkdyb3VwJ10sIHt9KTsKZ29vZy5hZGREZXBlbmRlbmN5KCdncmFwaGljcy9leHQvZ3JvdXAuanMnLCBbJ2dvb2cuZ3JhcGhpY3MuZXh0Lkdyb3VwJ10sIFsnZ29vZy5hcnJheScsICdnb29nLmdyYXBoaWNzLmV4dC5FbGVtZW50J10sIHt9KTsKZ29vZy5hZGREZXBlbmRlbmN5KCdncmFwaGljcy9leHQvaW1hZ2UuanMnLCBbJ2dvb2cuZ3JhcGhpY3MuZXh0LkltYWdlJ10sIFsnZ29vZy5ncmFwaGljcy5leHQuRWxlbWVudCddLCB7fSk7Cmdvb2cuYWRkRGVwZW5kZW5jeSgnZ3JhcGhpY3MvZXh0L3BhdGguanMnLCBbJ2dvb2cuZ3JhcGhpY3MuZXh0LlBhdGgnXSwgWydnb29nLmdyYXBoaWNzLkFmZmluZVRyYW5zZm9ybScsICdnb29nLmdyYXBoaWNzLlBhdGgnLCAnZ29vZy5tYXRoLlJlY3QnXSwge30pOwpnb29nLmFkZERlcGVuZGVuY3koJ2dyYXBoaWNzL2V4dC9wYXRoX3Rlc3QuanMnLCBbJ2dvb2cuZ3JhcGhpY3MuZXh0LlBhdGhUZXN0J10sIFsnZ29vZy5ncmFwaGljcycsICdnb29nLmdyYXBoaWNzLmV4dC5QYXRoJywgJ2dvb2cubWF0aC5SZWN0JywgJ2dvb2cudGVzdGluZy5ncmFwaGljcycsICdnb29nLnRlc3RpbmcudGVzdFN1aXRlJ10sIHsnbGFuZyc6ICdlczYnLCAnbW9kdWxlJzogJ2dvb2cnfSk7Cmdvb2cuYWRkRGVwZW5kZW5jeSgnZ3JhcGhpY3MvZXh0L3JlY3RhbmdsZS5qcycsIFsnZ29vZy5ncmFwaGljcy5leHQuUmVjdGFuZ2xlJ10sIFsnZ29vZy5ncmFwaGljcy5leHQuU3Ryb2tlQW5kRmlsbEVsZW1lbnQnXSwge30pOwpnb29nLmFkZERlcGVuZGVuY3koJ2dyYXBoaWNzL2V4dC9zaGFwZS5qcycsIFsnZ29vZy5ncmFwaGljcy5leHQuU2hhcGUnXSwgWydnb29nLmdyYXBoaWNzLmV4dC5TdHJva2VBbmRGaWxsRWxlbWVudCddLCB7fSk7Cmdvb2cuYWRkRGVwZW5kZW5jeSgnZ3JhcGhpY3MvZXh0L3N0cm9rZWFuZGZpbGxlbGVtZW50LmpzJywgWydnb29nLmdyYXBoaWNzLmV4dC5TdHJva2VBbmRGaWxsRWxlbWVudCddLCBbJ2dvb2cuZ3JhcGhpY3MuZXh0LkVsZW1lbnQnXSwge30pOwpnb29nLmFkZERlcGVuZGVuY3koJ2dyYXBoaWNzL2ZpbGwuanMnLCBbJ2dvb2cuZ3JhcGhpY3MuRmlsbCddLCBbXSwge30pOwpnb29nLmFkZERlcGVuZGVuY3koJ2dyYXBoaWNzL2ZvbnQuanMnLCBbJ2dvb2cuZ3JhcGhpY3MuRm9udCddLCBbXSwge30pOwpnb29nLmFkZERlcGVuZGVuY3koJ2dyYXBoaWNzL2dyYXBoaWNzLmpzJywgWydnb29nLmdyYXBoaWNzJ10sIFsnZ29vZy5kb20nLCAnZ29vZy5ncmFwaGljcy5DYW52YXNHcmFwaGljcycsICdnb29nLmdyYXBoaWNzLlN2Z0dyYXBoaWNzJywgJ2dvb2cuZ3JhcGhpY3MuVm1sR3JhcGhpY3MnLCAnZ29vZy51c2VyQWdlbnQnXSwge30pOwpnb29nLmFkZERlcGVuZGVuY3koJ2dyYXBoaWNzL2dyb3VwZWxlbWVudC5qcycsIFsnZ29vZy5ncmFwaGljcy5Hcm91cEVsZW1lbnQnXSwgWydnb29nLmdyYXBoaWNzLkVsZW1lbnQnXSwge30pOwpnb29nLmFkZERlcGVuZGVuY3koJ2dyYXBoaWNzL2ltYWdlZWxlbWVudC5qcycsIFsnZ29vZy5ncmFwaGljcy5JbWFnZUVsZW1lbnQnXSwgWydnb29nLmdyYXBoaWNzLkVsZW1lbnQnXSwge30pOwpnb29nLmFkZERlcGVuZGVuY3koJ2dyYXBoaWNzL2xpbmVhcmdyYWRpZW50LmpzJywgWydnb29nLmdyYXBoaWNzLkxpbmVhckdyYWRpZW50J10sIFsnZ29vZy5hc3NlcnRzJywgJ2dvb2cuZ3JhcGhpY3MuRmlsbCddLCB7fSk7Cmdvb2cuYWRkRGVwZW5kZW5jeSgnZ3JhcGhpY3MvcGF0aC5qcycsIFsnZ29vZy5ncmFwaGljcy5QYXRoJywgJ2dvb2cuZ3JhcGhpY3MuUGF0aC5TZWdtZW50J10sIFsnZ29vZy5hcnJheScsICdnb29nLmdyYXBoaWNzLkFmZmluZVRyYW5zZm9ybScsICdnb29nLm1hdGgnXSwge30pOwpnb29nLmFkZERlcGVuZGVuY3koJ2dyYXBoaWNzL3BhdGhfdGVzdC5qcycsIFsnZ29vZy5ncmFwaGljcy5QYXRoVGVzdCddLCBbJ2dvb2cuYXJyYXknLCAnZ29vZy5ncmFwaGljcy5BZmZpbmVUcmFuc2Zvcm0nLCAnZ29vZy5ncmFwaGljcy5QYXRoJywgJ2dvb2cudGVzdGluZy5ncmFwaGljcycsICdnb29nLnRlc3RpbmcudGVzdFN1aXRlJ10sIHsnbGFuZyc6ICdlczYnLCAnbW9kdWxlJzogJ2dvb2cnfSk7Cmdvb2cuYWRkRGVwZW5kZW5jeSgnZ3JhcGhpY3MvcGF0aGVsZW1lbnQuanMnLCBbJ2dvb2cuZ3JhcGhpY3MuUGF0aEVsZW1lbnQnXSwgWydnb29nLmdyYXBoaWNzLlN0cm9rZUFuZEZpbGxFbGVtZW50J10sIHt9KTsKZ29vZy5hZGREZXBlbmRlbmN5KCdncmFwaGljcy9wYXRocy5qcycsIFsnZ29vZy5ncmFwaGljcy5wYXRocyddLCBbJ2dvb2cuZ3JhcGhpY3MuUGF0aCcsICdnb29nLm1hdGguQ29vcmRpbmF0ZSddLCB7fSk7Cmdvb2cuYWRkRGVwZW5kZW5jeSgnZ3JhcGhpY3MvcGF0aHNfdGVzdC5qcycsIFsnZ29vZy5ncmFwaGljcy5wYXRoc1Rlc3QnXSwgWydnb29nLmRvbScsICdnb29nLmdyYXBoaWNzJywgJ2dvb2cuZ3JhcGhpY3MucGF0aHMnLCAnZ29vZy5tYXRoLkNvb3JkaW5hdGUnLCAnZ29vZy50ZXN0aW5nLnRlc3RTdWl0ZSddLCB7J2xhbmcnOiAnZXM2JywgJ21vZHVsZSc6ICdnb29nJ30pOwpnb29nLmFkZERlcGVuZGVuY3koJ2dyYXBoaWNzL3JlY3RlbGVtZW50LmpzJywgWydnb29nLmdyYXBoaWNzLlJlY3RFbGVtZW50J10sIFsnZ29vZy5ncmFwaGljcy5TdHJva2VBbmRGaWxsRWxlbWVudCddLCB7fSk7Cmdvb2cuYWRkRGVwZW5kZW5jeSgnZ3JhcGhpY3Mvc29saWRmaWxsLmpzJywgWydnb29nLmdyYXBoaWNzLlNvbGlkRmlsbCddLCBbJ2dvb2cuZ3JhcGhpY3MuRmlsbCddLCB7fSk7Cmdvb2cuYWRkRGVwZW5kZW5jeSgnZ3JhcGhpY3Mvc29saWRmaWxsX3Rlc3QuanMnLCBbJ2dvb2cuZ3JhcGhpY3MuU29saWRGaWxsVGVzdCddLCBbJ2dvb2cuZ3JhcGhpY3MuU29saWRGaWxsJywgJ2dvb2cudGVzdGluZy50ZXN0U3VpdGUnXSwgeydsYW5nJzogJ2VzNicsICdtb2R1bGUnOiAnZ29vZyd9KTsKZ29vZy5hZGREZXBlbmRlbmN5KCdncmFwaGljcy9zdHJva2UuanMnLCBbJ2dvb2cuZ3JhcGhpY3MuU3Ryb2tlJ10sIFtdLCB7fSk7Cmdvb2cuYWRkRGVwZW5kZW5jeSgnZ3JhcGhpY3Mvc3Ryb2tlYW5kZmlsbGVsZW1lbnQuanMnLCBbJ2dvb2cuZ3JhcGhpY3MuU3Ryb2tlQW5kRmlsbEVsZW1lbnQnXSwgWydnb29nLmdyYXBoaWNzLkVsZW1lbnQnXSwge30pOwpnb29nLmFkZERlcGVuZGVuY3koJ2dyYXBoaWNzL3N2Z2VsZW1lbnQuanMnLCBbJ2dvb2cuZ3JhcGhpY3MuU3ZnRWxsaXBzZUVsZW1lbnQnLCAnZ29vZy5ncmFwaGljcy5TdmdHcm91cEVsZW1lbnQnLCAnZ29vZy5ncmFwaGljcy5TdmdJbWFnZUVsZW1lbnQnLCAnZ29vZy5ncmFwaGljcy5TdmdQYXRoRWxlbWVudCcsICdnb29nLmdyYXBoaWNzLlN2Z1JlY3RFbGVtZW50JywgJ2dvb2cuZ3JhcGhpY3MuU3ZnVGV4dEVsZW1lbnQnXSwgWydnb29nLmRvbScsICdnb29nLmdyYXBoaWNzLkVsbGlwc2VFbGVtZW50JywgJ2dvb2cuZ3JhcGhpY3MuR3JvdXBFbGVtZW50JywgJ2dvb2cuZ3JhcGhpY3MuSW1hZ2VFbGVtZW50JywgJ2dvb2cuZ3JhcGhpY3MuUGF0aEVsZW1lbnQnLCAnZ29vZy5ncmFwaGljcy5SZWN0RWxlbWVudCcsICdnb29nLmdyYXBoaWNzLlRleHRFbGVtZW50J10sIHt9KTsKZ29vZy5hZGREZXBlbmRlbmN5KCdncmFwaGljcy9zdmdncmFwaGljcy5qcycsIFsnZ29vZy5ncmFwaGljcy5TdmdHcmFwaGljcyddLCBbJ2dvb2cuVGltZXInLCAnZ29vZy5kb20nLCAnZ29vZy5ldmVudHMuRXZlbnRIYW5kbGVyJywgJ2dvb2cuZXZlbnRzLkV2ZW50VHlwZScsICdnb29nLmdyYXBoaWNzLkFic3RyYWN0R3JhcGhpY3MnLCAnZ29vZy5ncmFwaGljcy5Gb250JywgJ2dvb2cuZ3JhcGhpY3MuTGluZWFyR3JhZGllbnQnLCAnZ29vZy5ncmFwaGljcy5QYXRoJywgJ2dvb2cuZ3JhcGhpY3MuU29saWRGaWxsJywgJ2dvb2cuZ3JhcGhpY3MuU3Ryb2tlJywgJ2dvb2cuZ3JhcGhpY3MuU3ZnRWxsaXBzZUVsZW1lbnQnLCAnZ29vZy5ncmFwaGljcy5TdmdHcm91cEVsZW1lbnQnLCAnZ29vZy5ncmFwaGljcy5TdmdJbWFnZUVsZW1lbnQnLCAnZ29vZy5ncmFwaGljcy5TdmdQYXRoRWxlbWVudCcsICdnb29nLmdyYXBoaWNzLlN2Z1JlY3RFbGVtZW50JywgJ2dvb2cuZ3JhcGhpY3MuU3ZnVGV4dEVsZW1lbnQnLCAnZ29vZy5tYXRoJywgJ2dvb2cubWF0aC5TaXplJywgJ2dvb2cuc3R5bGUnLCAnZ29vZy51c2VyQWdlbnQnXSwge30pOwpnb29nLmFkZERlcGVuZGVuY3koJ2dyYXBoaWNzL3N2Z2dyYXBoaWNzX3Rlc3QuanMnLCBbJ2dvb2cuZ3JhcGhpY3MuU3ZnR3JhcGhpY3NUZXN0J10sIFsnZ29vZy5kb20nLCAnZ29vZy5ncmFwaGljcy5BZmZpbmVUcmFuc2Zvcm0nLCAnZ29vZy5ncmFwaGljcy5Tb2xpZEZpbGwnLCAnZ29vZy5ncmFwaGljcy5TdmdHcmFwaGljcycsICdnb29nLnRlc3RpbmcudGVzdFN1aXRlJ10sIHsnbGFuZyc6ICdlczYnLCAnbW9kdWxlJzogJ2dvb2cnfSk7Cmdvb2cuYWRkRGVwZW5kZW5jeSgnZ3JhcGhpY3MvdGV4dGVsZW1lbnQuanMnLCBbJ2dvb2cuZ3JhcGhpY3MuVGV4dEVsZW1lbnQnXSwgWydnb29nLmdyYXBoaWNzLlN0cm9rZUFuZEZpbGxFbGVtZW50J10sIHt9KTsKZ29vZy5hZGREZXBlbmRlbmN5KCdncmFwaGljcy92bWxlbGVtZW50LmpzJywgWydnb29nLmdyYXBoaWNzLlZtbEVsbGlwc2VFbGVtZW50JywgJ2dvb2cuZ3JhcGhpY3MuVm1sR3JvdXBFbGVtZW50JywgJ2dvb2cuZ3JhcGhpY3MuVm1sSW1hZ2VFbGVtZW50JywgJ2dvb2cuZ3JhcGhpY3MuVm1sUGF0aEVsZW1lbnQnLCAnZ29vZy5ncmFwaGljcy5WbWxSZWN0RWxlbWVudCcsICdnb29nLmdyYXBoaWNzLlZtbFRleHRFbGVtZW50J10sIFsnZ29vZy5kb20nLCAnZ29vZy5ncmFwaGljcy5FbGxpcHNlRWxlbWVudCcsICdnb29nLmdyYXBoaWNzLkdyb3VwRWxlbWVudCcsICdnb29nLmdyYXBoaWNzLkltYWdlRWxlbWVudCcsICdnb29nLmdyYXBoaWNzLlBhdGhFbGVtZW50JywgJ2dvb2cuZ3JhcGhpY3MuUmVjdEVsZW1lbnQnLCAnZ29vZy5ncmFwaGljcy5UZXh0RWxlbWVudCddLCB7fSk7Cmdvb2cuYWRkRGVwZW5kZW5jeSgnZ3JhcGhpY3Mvdm1sZ3JhcGhpY3MuanMnLCBbJ2dvb2cuZ3JhcGhpY3MuVm1sR3JhcGhpY3MnXSwgWydnb29nLmFycmF5JywgJ2dvb2cuZG9tLlRhZ05hbWUnLCAnZ29vZy5kb20uc2FmZScsICdnb29nLmV2ZW50cycsICdnb29nLmV2ZW50cy5FdmVudEhhbmRsZXInLCAnZ29vZy5ldmVudHMuRXZlbnRUeXBlJywgJ2dvb2cuZ3JhcGhpY3MuQWJzdHJhY3RHcmFwaGljcycsICdnb29nLmdyYXBoaWNzLkZvbnQnLCAnZ29vZy5ncmFwaGljcy5MaW5lYXJHcmFkaWVudCcsICdnb29nLmdyYXBoaWNzLlBhdGgnLCAnZ29vZy5ncmFwaGljcy5Tb2xpZEZpbGwnLCAnZ29vZy5ncmFwaGljcy5WbWxFbGxpcHNlRWxlbWVudCcsICdnb29nLmdyYXBoaWNzLlZtbEdyb3VwRWxlbWVudCcsICdnb29nLmdyYXBoaWNzLlZtbEltYWdlRWxlbWVudCcsICdnb29nLmdyYXBoaWNzLlZtbFBhdGhFbGVtZW50JywgJ2dvb2cuZ3JhcGhpY3MuVm1sUmVjdEVsZW1lbnQnLCAnZ29vZy5ncmFwaGljcy5WbWxUZXh0RWxlbWVudCcsICdnb29nLmh0bWwudW5jaGVja2VkY29udmVyc2lvbnMnLCAnZ29vZy5tYXRoJywgJ2dvb2cubWF0aC5TaXplJywgJ2dvb2cucmVmbGVjdCcsICdnb29nLnN0cmluZycsICdnb29nLnN0cmluZy5Db25zdCcsICdnb29nLnN0eWxlJywgJ2dvb2cudXNlckFnZW50J10sIHt9KTsKZ29vZy5hZGREZXBlbmRlbmN5KCdoaXN0b3J5L2V2ZW50LmpzJywgWydnb29nLmhpc3RvcnkuRXZlbnQnXSwgWydnb29nLmV2ZW50cy5FdmVudCcsICdnb29nLmhpc3RvcnkuRXZlbnRUeXBlJ10sIHt9KTsKZ29vZy5hZGREZXBlbmRlbmN5KCdoaXN0b3J5L2V2ZW50dHlwZS5qcycsIFsnZ29vZy5oaXN0b3J5LkV2ZW50VHlwZSddLCBbXSwge30pOwpnb29nLmFkZERlcGVuZGVuY3koJ2hpc3RvcnkvaGlzdG9yeS5qcycsIFsnZ29vZy5IaXN0b3J5JywgJ2dvb2cuSGlzdG9yeS5FdmVudCcsICdnb29nLkhpc3RvcnkuRXZlbnRUeXBlJ10sIFsnZ29vZy5UaW1lcicsICdnb29nLmFzc2VydHMnLCAnZ29vZy5kb20nLCAnZ29vZy5kb20uSW5wdXRUeXBlJywgJ2dvb2cuZG9tLnNhZmUnLCAnZ29vZy5ldmVudHMuRXZlbnQnLCAnZ29vZy5ldmVudHMuRXZlbnRIYW5kbGVyJywgJ2dvb2cuZXZlbnRzLkV2ZW50VGFyZ2V0JywgJ2dvb2cuZXZlbnRzLkV2ZW50VHlwZScsICdnb29nLmhpc3RvcnkuRXZlbnQnLCAnZ29vZy5oaXN0b3J5LkV2ZW50VHlwZScsICdnb29nLmh0bWwuU2FmZUh0bWwnLCAnZ29vZy5odG1sLlRydXN0ZWRSZXNvdXJjZVVybCcsICdnb29nLmh0bWwudW5jaGVja2VkY29udmVyc2lvbnMnLCAnZ29vZy5sYWJzLnVzZXJBZ2VudC5kZXZpY2UnLCAnZ29vZy5tZW1vaXplJywgJ2dvb2cuc3RyaW5nJywgJ2dvb2cuc3RyaW5nLkNvbnN0JywgJ2dvb2cudXNlckFnZW50J10sIHt9KTsKZ29vZy5hZGREZXBlbmRlbmN5KCdoaXN0b3J5L2hpc3RvcnlfdGVzdC5qcycsIFsnZ29vZy5IaXN0b3J5VGVzdCddLCBbJ2dvb2cuSGlzdG9yeScsICdnb29nLmRpc3Bvc2UnLCAnZ29vZy5kb20nLCAnZ29vZy5odG1sLlRydXN0ZWRSZXNvdXJjZVVybCcsICdnb29nLnN0cmluZy5Db25zdCcsICdnb29nLnRlc3RpbmcudGVzdFN1aXRlJywgJ2dvb2cudXNlckFnZW50J10sIHsnbGFuZyc6ICdlczYnLCAnbW9kdWxlJzogJ2dvb2cnfSk7Cmdvb2cuYWRkRGVwZW5kZW5jeSgnaGlzdG9yeS9odG1sNWhpc3RvcnkuanMnLCBbJ2dvb2cuaGlzdG9yeS5IdG1sNUhpc3RvcnknLCAnZ29vZy5oaXN0b3J5Lkh0bWw1SGlzdG9yeS5Ub2tlblRyYW5zZm9ybWVyJ10sIFsnZ29vZy5hc3NlcnRzJywgJ2dvb2cuZXZlbnRzJywgJ2dvb2cuZXZlbnRzLkV2ZW50VGFyZ2V0JywgJ2dvb2cuZXZlbnRzLkV2ZW50VHlwZScsICdnb29nLmhpc3RvcnkuRXZlbnQnXSwge30pOwpnb29nLmFkZERlcGVuZGVuY3koJ2hpc3RvcnkvaHRtbDVoaXN0b3J5X3Rlc3QuanMnLCBbJ2dvb2cuaGlzdG9yeS5IdG1sNUhpc3RvcnlUZXN0J10sIFsnZ29vZy5UaW1lcicsICdnb29nLmV2ZW50cycsICdnb29nLmV2ZW50cy5FdmVudFR5cGUnLCAnZ29vZy5oaXN0b3J5LkV2ZW50VHlwZScsICdnb29nLmhpc3RvcnkuSHRtbDVIaXN0b3J5JywgJ2dvb2cudGVzdGluZy5Nb2NrQ29udHJvbCcsICdnb29nLnRlc3RpbmcubW9ja21hdGNoZXJzJywgJ2dvb2cudGVzdGluZy5yZWNvcmRGdW5jdGlvbicsICdnb29nLnRlc3RpbmcudGVzdFN1aXRlJ10sIHsnbGFuZyc6ICdlczYnLCAnbW9kdWxlJzogJ2dvb2cnfSk7Cmdvb2cuYWRkRGVwZW5kZW5jeSgnaHRtbC9jc3NzcGVjaWZpY2l0eS5qcycsIFsnZ29vZy5odG1sLkNzc1NwZWNpZmljaXR5J10sIFsnZ29vZy51c2VyQWdlbnQnLCAnZ29vZy51c2VyQWdlbnQucHJvZHVjdCddLCB7J21vZHVsZSc6ICdnb29nJ30pOwpnb29nLmFkZERlcGVuZGVuY3koJ2h0bWwvY3Nzc3BlY2lmaWNpdHlfdGVzdC5qcycsIFsnZ29vZy5odG1sLkNzc1NwZWNpZmljaXR5VGVzdCddLCBbJ2dvb2cuaHRtbC5Dc3NTcGVjaWZpY2l0eScsICdnb29nLnRlc3RpbmcudGVzdFN1aXRlJywgJ2dvb2cudXNlckFnZW50JywgJ2dvb2cudXNlckFnZW50LnByb2R1Y3QnXSwgeydsYW5nJzogJ2VzNicsICdtb2R1bGUnOiAnZ29vZyd9KTsKZ29vZy5hZGREZXBlbmRlbmN5KCdodG1sL2ZsYXNoLmpzJywgWydnb29nLmh0bWwuZmxhc2gnXSwgWydnb29nLmFzc2VydHMnLCAnZ29vZy5odG1sLlNhZmVIdG1sJ10sIHt9KTsKZ29vZy5hZGREZXBlbmRlbmN5KCdodG1sL2ZsYXNoX3Rlc3QuanMnLCBbJ2dvb2cuaHRtbC5mbGFzaFRlc3QnXSwgWydnb29nLmh0bWwuU2FmZUh0bWwnLCAnZ29vZy5odG1sLlRydXN0ZWRSZXNvdXJjZVVybCcsICdnb29nLmh0bWwuZmxhc2gnLCAnZ29vZy5zdHJpbmcuQ29uc3QnLCAnZ29vZy50ZXN0aW5nLnRlc3RTdWl0ZSddLCB7J2xhbmcnOiAnZXM2JywgJ21vZHVsZSc6ICdnb29nJ30pOwpnb29nLmFkZERlcGVuZGVuY3koJ2h0bWwvbGVnYWN5Y29udmVyc2lvbnMuanMnLCBbJ2dvb2cuaHRtbC5sZWdhY3ljb252ZXJzaW9ucyddLCBbJ2dvb2cuaHRtbC5TYWZlSHRtbCcsICdnb29nLmh0bWwuU2FmZVNjcmlwdCcsICdnb29nLmh0bWwuU2FmZVN0eWxlJywgJ2dvb2cuaHRtbC5TYWZlU3R5bGVTaGVldCcsICdnb29nLmh0bWwuU2FmZVVybCcsICdnb29nLmh0bWwuVHJ1c3RlZFJlc291cmNlVXJsJ10sIHt9KTsKZ29vZy5hZGREZXBlbmRlbmN5KCdodG1sL2xlZ2FjeWNvbnZlcnNpb25zX3Rlc3QuanMnLCBbJ2dvb2cuaHRtbC5sZWdhY3ljb252ZXJzaW9uc1Rlc3QnXSwgWydnb29nLmh0bWwuU2FmZUh0bWwnLCAnZ29vZy5odG1sLlNhZmVTY3JpcHQnLCAnZ29vZy5odG1sLlNhZmVTdHlsZScsICdnb29nLmh0bWwuU2FmZVN0eWxlU2hlZXQnLCAnZ29vZy5odG1sLlNhZmVVcmwnLCAnZ29vZy5odG1sLlRydXN0ZWRSZXNvdXJjZVVybCcsICdnb29nLmh0bWwubGVnYWN5Y29udmVyc2lvbnMnLCAnZ29vZy50ZXN0aW5nLnRlc3RTdWl0ZSddLCB7J2xhbmcnOiAnZXM2JywgJ21vZHVsZSc6ICdnb29nJ30pOwpnb29nLmFkZERlcGVuZGVuY3koJ2h0bWwvc2FmZWh0bWwuanMnLCBbJ2dvb2cuaHRtbC5TYWZlSHRtbCddLCBbJ2dvb2cuYXJyYXknLCAnZ29vZy5hc3NlcnRzJywgJ2dvb2cuZG9tLlRhZ05hbWUnLCAnZ29vZy5kb20udGFncycsICdnb29nLmh0bWwuU2FmZVNjcmlwdCcsICdnb29nLmh0bWwuU2FmZVN0eWxlJywgJ2dvb2cuaHRtbC5TYWZlU3R5bGVTaGVldCcsICdnb29nLmh0bWwuU2FmZVVybCcsICdnb29nLmh0bWwuVHJ1c3RlZFJlc291cmNlVXJsJywgJ2dvb2cuaHRtbC50cnVzdGVkdHlwZXMnLCAnZ29vZy5pMThuLmJpZGkuRGlyJywgJ2dvb2cuaTE4bi5iaWRpLkRpcmVjdGlvbmFsU3RyaW5nJywgJ2dvb2cubGFicy51c2VyQWdlbnQuYnJvd3NlcicsICdnb29nLm9iamVjdCcsICdnb29nLnN0cmluZy5Db25zdCcsICdnb29nLnN0cmluZy5UeXBlZFN0cmluZycsICdnb29nLnN0cmluZy5pbnRlcm5hbCddLCB7fSk7Cmdvb2cuYWRkRGVwZW5kZW5jeSgnaHRtbC9zYWZlaHRtbF90ZXN0LmpzJywgWydnb29nLmh0bWwuc2FmZUh0bWxUZXN0J10sIFsnZ29vZy5odG1sLlNhZmVIdG1sJywgJ2dvb2cuaHRtbC5TYWZlU2NyaXB0JywgJ2dvb2cuaHRtbC5TYWZlU3R5bGUnLCAnZ29vZy5odG1sLlNhZmVTdHlsZVNoZWV0JywgJ2dvb2cuaHRtbC5TYWZlVXJsJywgJ2dvb2cuaHRtbC5UcnVzdGVkUmVzb3VyY2VVcmwnLCAnZ29vZy5odG1sLnRlc3RpbmcnLCAnZ29vZy5odG1sLnRydXN0ZWR0eXBlcycsICdnb29nLmkxOG4uYmlkaS5EaXInLCAnZ29vZy5sYWJzLnVzZXJBZ2VudC5icm93c2VyJywgJ2dvb2cub2JqZWN0JywgJ2dvb2cuc3RyaW5nLkNvbnN0JywgJ2dvb2cudGVzdGluZy5Qcm9wZXJ0eVJlcGxhY2VyJywgJ2dvb2cudGVzdGluZy50ZXN0U3VpdGUnXSwgeydsYW5nJzogJ2VzNicsICdtb2R1bGUnOiAnZ29vZyd9KTsKZ29vZy5hZGREZXBlbmRlbmN5KCdodG1sL3NhZmVodG1sZm9ybWF0dGVyLmpzJywgWydnb29nLmh0bWwuU2FmZUh0bWxGb3JtYXR0ZXInXSwgWydnb29nLmFzc2VydHMnLCAnZ29vZy5kb20udGFncycsICdnb29nLmh0bWwuU2FmZUh0bWwnLCAnZ29vZy5zdHJpbmcnXSwge30pOwpnb29nLmFkZERlcGVuZGVuY3koJ2h0bWwvc2FmZWh0bWxmb3JtYXR0ZXJfdGVzdC5qcycsIFsnZ29vZy5odG1sLnNhZmVIdG1sRm9ybWF0dGVyVGVzdCddLCBbJ2dvb2cuaHRtbC5TYWZlSHRtbCcsICdnb29nLmh0bWwuU2FmZUh0bWxGb3JtYXR0ZXInLCAnZ29vZy5odG1sLlNhZmVVcmwnLCAnZ29vZy5zdHJpbmcnLCAnZ29vZy50ZXN0aW5nLlByb3BlcnR5UmVwbGFjZXInLCAnZ29vZy50ZXN0aW5nLnRlc3RTdWl0ZSddLCB7J2xhbmcnOiAnZXM2JywgJ21vZHVsZSc6ICdnb29nJ30pOwpnb29nLmFkZERlcGVuZGVuY3koJ2h0bWwvc2FmZXNjcmlwdC5qcycsIFsnZ29vZy5odG1sLlNhZmVTY3JpcHQnXSwgWydnb29nLmFzc2VydHMnLCAnZ29vZy5odG1sLnRydXN0ZWR0eXBlcycsICdnb29nLnN0cmluZy5Db25zdCcsICdnb29nLnN0cmluZy5UeXBlZFN0cmluZyddLCB7fSk7Cmdvb2cuYWRkRGVwZW5kZW5jeSgnaHRtbC9zYWZlc2NyaXB0X3Rlc3QuanMnLCBbJ2dvb2cuaHRtbC5zYWZlU2NyaXB0VGVzdCddLCBbJ2dvb2cuaHRtbC5TYWZlU2NyaXB0JywgJ2dvb2cuaHRtbC50cnVzdGVkdHlwZXMnLCAnZ29vZy5vYmplY3QnLCAnZ29vZy5zdHJpbmcuQ29uc3QnLCAnZ29vZy50ZXN0aW5nLlByb3BlcnR5UmVwbGFjZXInLCAnZ29vZy50ZXN0aW5nLnRlc3RTdWl0ZSddLCB7J2xhbmcnOiAnZXM2JywgJ21vZHVsZSc6ICdnb29nJ30pOwpnb29nLmFkZERlcGVuZGVuY3koJ2h0bWwvc2FmZXN0eWxlLmpzJywgWydnb29nLmh0bWwuU2FmZVN0eWxlJ10sIFsnZ29vZy5hcnJheScsICdnb29nLmFzc2VydHMnLCAnZ29vZy5odG1sLlNhZmVVcmwnLCAnZ29vZy5zdHJpbmcuQ29uc3QnLCAnZ29vZy5zdHJpbmcuVHlwZWRTdHJpbmcnLCAnZ29vZy5zdHJpbmcuaW50ZXJuYWwnXSwgeydsYW5nJzogJ2VzNSd9KTsKZ29vZy5hZGREZXBlbmRlbmN5KCdodG1sL3NhZmVzdHlsZV90ZXN0LmpzJywgWydnb29nLmh0bWwuc2FmZVN0eWxlVGVzdCddLCBbJ2dvb2cuaHRtbC5TYWZlU3R5bGUnLCAnZ29vZy5odG1sLlNhZmVVcmwnLCAnZ29vZy5vYmplY3QnLCAnZ29vZy5zdHJpbmcuQ29uc3QnLCAnZ29vZy50ZXN0aW5nLnRlc3RTdWl0ZSddLCB7J2xhbmcnOiAnZXM2JywgJ21vZHVsZSc6ICdnb29nJ30pOwpnb29nLmFkZERlcGVuZGVuY3koJ2h0bWwvc2FmZXN0eWxlc2hlZXQuanMnLCBbJ2dvb2cuaHRtbC5TYWZlU3R5bGVTaGVldCddLCBbJ2dvb2cuYXJyYXknLCAnZ29vZy5hc3NlcnRzJywgJ2dvb2cuaHRtbC5TYWZlU3R5bGUnLCAnZ29vZy5vYmplY3QnLCAnZ29vZy5zdHJpbmcuQ29uc3QnLCAnZ29vZy5zdHJpbmcuVHlwZWRTdHJpbmcnLCAnZ29vZy5zdHJpbmcuaW50ZXJuYWwnXSwge30pOwpnb29nLmFkZERlcGVuZGVuY3koJ2h0bWwvc2FmZXN0eWxlc2hlZXRfdGVzdC5qcycsIFsnZ29vZy5odG1sLnNhZmVTdHlsZVNoZWV0VGVzdCddLCBbJ2dvb2cuaHRtbC5TYWZlU3R5bGUnLCAnZ29vZy5odG1sLlNhZmVTdHlsZVNoZWV0JywgJ2dvb2cub2JqZWN0JywgJ2dvb2cuc3RyaW5nLkNvbnN0JywgJ2dvb2cudGVzdGluZy50ZXN0U3VpdGUnXSwgeydsYW5nJzogJ2VzNicsICdtb2R1bGUnOiAnZ29vZyd9KTsKZ29vZy5hZGREZXBlbmRlbmN5KCdodG1sL3NhZmV1cmwuanMnLCBbJ2dvb2cuaHRtbC5TYWZlVXJsJ10sIFsnZ29vZy5hc3NlcnRzJywgJ2dvb2cuZnMudXJsJywgJ2dvb2cuaHRtbC5UcnVzdGVkUmVzb3VyY2VVcmwnLCAnZ29vZy5pMThuLmJpZGkuRGlyJywgJ2dvb2cuaTE4bi5iaWRpLkRpcmVjdGlvbmFsU3RyaW5nJywgJ2dvb2cuc3RyaW5nLkNvbnN0JywgJ2dvb2cuc3RyaW5nLlR5cGVkU3RyaW5nJywgJ2dvb2cuc3RyaW5nLmludGVybmFsJ10sIHt9KTsKZ29vZy5hZGREZXBlbmRlbmN5KCdodG1sL3NhZmV1cmxfdGVzdC5qcycsIFsnZ29vZy5odG1sLnNhZmVVcmxUZXN0J10sIFsnZ29vZy5odG1sLlNhZmVVcmwnLCAnZ29vZy5odG1sLlRydXN0ZWRSZXNvdXJjZVVybCcsICdnb29nLmh0bWwuc2FmZVVybFRlc3RWZWN0b3JzJywgJ2dvb2cuaTE4bi5iaWRpLkRpcicsICdnb29nLm9iamVjdCcsICdnb29nLnN0cmluZy5Db25zdCcsICdnb29nLnRlc3RpbmcudGVzdFN1aXRlJywgJ2dvb2cudXNlckFnZW50J10sIHsnbGFuZyc6ICdlczYnLCAnbW9kdWxlJzogJ2dvb2cnfSk7Cmdvb2cuYWRkRGVwZW5kZW5jeSgnaHRtbC9zYWZldXJsX3Rlc3RfdmVjdG9ycy5qcycsIFsnZ29vZy5odG1sLnNhZmVVcmxUZXN0VmVjdG9ycyddLCBbXSwge30pOwpnb29nLmFkZERlcGVuZGVuY3koJ2h0bWwvc2FuaXRpemVyL2F0dHJpYnV0ZXdoaXRlbGlzdC5qcycsIFsnZ29vZy5odG1sLnNhbml0aXplci5BdHRyaWJ1dGVTYW5pdGl6ZWRXaGl0ZWxpc3QnLCAnZ29vZy5odG1sLnNhbml0aXplci5BdHRyaWJ1dGVXaGl0ZWxpc3QnXSwgW10sIHt9KTsKZ29vZy5hZGREZXBlbmRlbmN5KCdodG1sL3Nhbml0aXplci9jc3Nwcm9wZXJ0eXNhbml0aXplci5qcycsIFsnZ29vZy5odG1sLnNhbml0aXplci5Dc3NQcm9wZXJ0eVNhbml0aXplciddLCBbJ2dvb2cuYXNzZXJ0cycsICdnb29nLmh0bWwuU2FmZVVybCcsICdnb29nLm9iamVjdCcsICdnb29nLnN0cmluZyddLCB7J21vZHVsZSc6ICdnb29nJ30pOwpnb29nLmFkZERlcGVuZGVuY3koJ2h0bWwvc2FuaXRpemVyL2Nzc3Byb3BlcnR5c2FuaXRpemVyX3Rlc3QuanMnLCBbJ2dvb2cuaHRtbC5zYW5pdGl6ZXIuQ3NzUHJvcGVydHlTYW5pdGl6ZXJUZXN0J10sIFsnZ29vZy5mdW5jdGlvbnMnLCAnZ29vZy5odG1sLlNhZmVVcmwnLCAnZ29vZy5odG1sLnNhbml0aXplci5Dc3NQcm9wZXJ0eVNhbml0aXplcicsICdnb29nLmh0bWwuc2FuaXRpemVyLm5vY2xvYmJlcicsICdnb29nLnRlc3RpbmcudGVzdFN1aXRlJywgJ2dvb2cudXNlckFnZW50LnByb2R1Y3QnXSwgeydsYW5nJzogJ2VzNicsICdtb2R1bGUnOiAnZ29vZyd9KTsKZ29vZy5hZGREZXBlbmRlbmN5KCdodG1sL3Nhbml0aXplci9jc3NzYW5pdGl6ZXIuanMnLCBbJ2dvb2cuaHRtbC5zYW5pdGl6ZXIuQ3NzU2FuaXRpemVyJ10sIFsnZ29vZy5hcnJheScsICdnb29nLmRvbScsICdnb29nLmRvbS5UYWdOYW1lJywgJ2dvb2cuZG9tLnNhZmUnLCAnZ29vZy5odG1sLkNzc1NwZWNpZmljaXR5JywgJ2dvb2cuaHRtbC5TYWZlU3R5bGUnLCAnZ29vZy5odG1sLlNhZmVTdHlsZVNoZWV0JywgJ2dvb2cuaHRtbC5TYWZlVXJsJywgJ2dvb2cuaHRtbC5zYW5pdGl6ZXIuQ3NzUHJvcGVydHlTYW5pdGl6ZXInLCAnZ29vZy5odG1sLnNhbml0aXplci5ub2Nsb2JiZXInLCAnZ29vZy5odG1sLnVuY2hlY2tlZGNvbnZlcnNpb25zJywgJ2dvb2cub2JqZWN0JywgJ2dvb2cuc3RyaW5nJywgJ2dvb2cuc3RyaW5nLkNvbnN0JywgJ2dvb2cudXNlckFnZW50JywgJ2dvb2cudXNlckFnZW50LnByb2R1Y3QnXSwge30pOwpnb29nLmFkZERlcGVuZGVuY3koJ2h0bWwvc2FuaXRpemVyL2Nzc3Nhbml0aXplcl90ZXN0LmpzJywgWydnb29nLmh0bWwuQ3NzU2FuaXRpemVyVGVzdCddLCBbJ2dvb2cuYXJyYXknLCAnZ29vZy5odG1sLlNhZmVTdHlsZScsICdnb29nLmh0bWwuU2FmZVN0eWxlU2hlZXQnLCAnZ29vZy5odG1sLlNhZmVVcmwnLCAnZ29vZy5odG1sLnNhbml0aXplci5Dc3NTYW5pdGl6ZXInLCAnZ29vZy5odG1sLnRlc3RpbmcnLCAnZ29vZy5zdHJpbmcnLCAnZ29vZy50ZXN0aW5nLmRvbScsICdnb29nLnRlc3RpbmcudGVzdFN1aXRlJywgJ2dvb2cudXNlckFnZW50JywgJ2dvb2cudXNlckFnZW50LnByb2R1Y3QnLCAnZ29vZy51c2VyQWdlbnQucHJvZHVjdC5pc1ZlcnNpb24nXSwgeydsYW5nJzogJ2VzNicsICdtb2R1bGUnOiAnZ29vZyd9KTsKZ29vZy5hZGREZXBlbmRlbmN5KCdodG1sL3Nhbml0aXplci9lbGVtZW50d2Vha21hcC5qcycsIFsnZ29vZy5odG1sLnNhbml0aXplci5FbGVtZW50V2Vha01hcCddLCBbJ2dvb2cuaHRtbC5zYW5pdGl6ZXIubm9jbG9iYmVyJ10sIHsnbW9kdWxlJzogJ2dvb2cnfSk7Cmdvb2cuYWRkRGVwZW5kZW5jeSgnaHRtbC9zYW5pdGl6ZXIvZWxlbWVudHdlYWttYXBfdGVzdC5qcycsIFsnZ29vZy5odG1sLnNhbml0aXplci5FbGVtZW50V2Vha01hcFRlc3QnXSwgWydnb29nLmh0bWwuc2FuaXRpemVyLkVsZW1lbnRXZWFrTWFwJywgJ2dvb2cudGVzdGluZy50ZXN0U3VpdGUnLCAnZ29vZy51c2VyQWdlbnQnXSwgeydsYW5nJzogJ2VzNicsICdtb2R1bGUnOiAnZ29vZyd9KTsKZ29vZy5hZGREZXBlbmRlbmN5KCdodG1sL3Nhbml0aXplci9odG1sX3Rlc3RfdmVjdG9ycy5qcycsIFsnZ29vZy5odG1sLmh0bWxUZXN0VmVjdG9ycyddLCBbXSwgeydsYW5nJzogJ2VzNSd9KTsKZ29vZy5hZGREZXBlbmRlbmN5KCdodG1sL3Nhbml0aXplci9odG1sc2FuaXRpemVyLmpzJywgWydnb29nLmh0bWwuc2FuaXRpemVyLkh0bWxTYW5pdGl6ZXInLCAnZ29vZy5odG1sLnNhbml0aXplci5IdG1sU2FuaXRpemVyLkJ1aWxkZXInLCAnZ29vZy5odG1sLnNhbml0aXplci5IdG1sU2FuaXRpemVyQXR0cmlidXRlUG9saWN5JywgJ2dvb2cuaHRtbC5zYW5pdGl6ZXIuSHRtbFNhbml0aXplclBvbGljeScsICdnb29nLmh0bWwuc2FuaXRpemVyLkh0bWxTYW5pdGl6ZXJQb2xpY3lDb250ZXh0JywgJ2dvb2cuaHRtbC5zYW5pdGl6ZXIuSHRtbFNhbml0aXplclBvbGljeUhpbnRzJywgJ2dvb2cuaHRtbC5zYW5pdGl6ZXIuSHRtbFNhbml0aXplclVybFBvbGljeSddLCBbJ2dvb2cuYXJyYXknLCAnZ29vZy5hc3NlcnRzJywgJ2dvb2cuZG9tJywgJ2dvb2cuZG9tLlRhZ05hbWUnLCAnZ29vZy5mdW5jdGlvbnMnLCAnZ29vZy5odG1sLlNhZmVIdG1sJywgJ2dvb2cuaHRtbC5TYWZlU3R5bGUnLCAnZ29vZy5odG1sLlNhZmVTdHlsZVNoZWV0JywgJ2dvb2cuaHRtbC5TYWZlVXJsJywgJ2dvb2cuaHRtbC5zYW5pdGl6ZXIuQXR0cmlidXRlU2FuaXRpemVkV2hpdGVsaXN0JywgJ2dvb2cuaHRtbC5zYW5pdGl6ZXIuQXR0cmlidXRlV2hpdGVsaXN0JywgJ2dvb2cuaHRtbC5zYW5pdGl6ZXIuQ3NzU2FuaXRpemVyJywgJ2dvb2cuaHRtbC5zYW5pdGl6ZXIuU2FmZURvbVRyZWVQcm9jZXNzb3InLCAnZ29vZy5odG1sLnNhbml0aXplci5UYWdCbGFja2xpc3QnLCAnZ29vZy5odG1sLnNhbml0aXplci5UYWdXaGl0ZWxpc3QnLCAnZ29vZy5odG1sLnNhbml0aXplci5ub2Nsb2JiZXInLCAnZ29vZy5odG1sLnVuY2hlY2tlZGNvbnZlcnNpb25zJywgJ2dvb2cub2JqZWN0JywgJ2dvb2cuc3RyaW5nJywgJ2dvb2cuc3RyaW5nLkNvbnN0J10sIHsnbGFuZyc6ICdlczUnfSk7Cmdvb2cuYWRkRGVwZW5kZW5jeSgnaHRtbC9zYW5pdGl6ZXIvaHRtbHNhbml0aXplcl90ZXN0LmpzJywgWydnb29nLmh0bWwuSHRtbFNhbml0aXplclRlc3QnXSwgWydnb29nLmFycmF5JywgJ2dvb2cuZG9tJywgJ2dvb2cuZnVuY3Rpb25zJywgJ2dvb2cuaHRtbC5TYWZlSHRtbCcsICdnb29nLmh0bWwuU2FmZVVybCcsICdnb29nLmh0bWwuc2FuaXRpemVyLkh0bWxTYW5pdGl6ZXInLCAnZ29vZy5odG1sLnNhbml0aXplci5IdG1sU2FuaXRpemVyLkJ1aWxkZXInLCAnZ29vZy5odG1sLnNhbml0aXplci5UYWdXaGl0ZWxpc3QnLCAnZ29vZy5odG1sLnRlc3RpbmcnLCAnZ29vZy5vYmplY3QnLCAnZ29vZy5zdHJpbmcuQ29uc3QnLCAnZ29vZy50ZXN0aW5nLmRvbScsICdnb29nLnRlc3RpbmcudGVzdFN1aXRlJywgJ2dvb2cudXNlckFnZW50JywgJ2dvb2cudXNlckFnZW50LnByb2R1Y3QnXSwgeydsYW5nJzogJ2VzNicsICdtb2R1bGUnOiAnZ29vZyd9KTsKZ29vZy5hZGREZXBlbmRlbmN5KCdodG1sL3Nhbml0aXplci9odG1sc2FuaXRpemVyX3VuaWZpZWRfdGVzdC5qcycsIFsnZ29vZy5odG1sLkh0bWxTYW5pdGl6ZXJVbmlmaWVkVGVzdCddLCBbJ2dvb2cuaHRtbC5TYWZlSHRtbCcsICdnb29nLmh0bWwuaHRtbFRlc3RWZWN0b3JzJywgJ2dvb2cuaHRtbC5zYW5pdGl6ZXIuSHRtbFNhbml0aXplci5CdWlsZGVyJywgJ2dvb2cudGVzdGluZy50ZXN0U3VpdGUnLCAnZ29vZy51c2VyQWdlbnQnXSwgeydsYW5nJzogJ2VzNicsICdtb2R1bGUnOiAnZ29vZyd9KTsKZ29vZy5hZGREZXBlbmRlbmN5KCdodG1sL3Nhbml0aXplci9ub2Nsb2JiZXIuanMnLCBbJ2dvb2cuaHRtbC5zYW5pdGl6ZXIubm9jbG9iYmVyJ10sIFsnZ29vZy5hc3NlcnRzJywgJ2dvb2cuZG9tLk5vZGVUeXBlJywgJ2dvb2cudXNlckFnZW50LnByb2R1Y3QnXSwgeydsYW5nJzogJ2VzNScsICdtb2R1bGUnOiAnZ29vZyd9KTsKZ29vZy5hZGREZXBlbmRlbmN5KCdodG1sL3Nhbml0aXplci9ub2Nsb2JiZXJfdGVzdC5qcycsIFsnZ29vZy5odG1sLnNhbml0aXplci5ub2Nsb2JiZXJUZXN0J10sIFsnZ29vZy5kb20uTm9kZVR5cGUnLCAnZ29vZy5odG1sLnNhbml0aXplci5ub2Nsb2JiZXInLCAnZ29vZy50ZXN0aW5nLlByb3BlcnR5UmVwbGFjZXInLCAnZ29vZy50ZXN0aW5nLmRvbScsICdnb29nLnRlc3RpbmcudGVzdFN1aXRlJywgJ2dvb2cudXNlckFnZW50LnByb2R1Y3QnXSwgeydsYW5nJzogJ2VzNicsICdtb2R1bGUnOiAnZ29vZyd9KTsKZ29vZy5hZGREZXBlbmRlbmN5KCdodG1sL3Nhbml0aXplci9zYWZlZG9tdHJlZXByb2Nlc3Nvci5qcycsIFsnZ29vZy5odG1sLnNhbml0aXplci5TYWZlRG9tVHJlZVByb2Nlc3NvciddLCBbJ2dvb2cuZG9tJywgJ2dvb2cuZG9tLk5vZGVUeXBlJywgJ2dvb2cuZG9tLlRhZ05hbWUnLCAnZ29vZy5kb20uc2FmZScsICdnb29nLmh0bWwuc2FuaXRpemVyLkVsZW1lbnRXZWFrTWFwJywgJ2dvb2cuaHRtbC5zYW5pdGl6ZXIubm9jbG9iYmVyJywgJ2dvb2cuaHRtbC51bmNoZWNrZWRjb252ZXJzaW9ucycsICdnb29nLmxvZycsICdnb29nLnN0cmluZy5Db25zdCcsICdnb29nLnVzZXJBZ2VudCddLCB7J21vZHVsZSc6ICdnb29nJ30pOwpnb29nLmFkZERlcGVuZGVuY3koJ2h0bWwvc2FuaXRpemVyL3NhZmVkb210cmVlcHJvY2Vzc29yX3Rlc3QuanMnLCBbJ2dvb2cuaHRtbC5zYW5pdGl6ZXIuU2FmZURvbVRyZWVQcm9jZXNzb3JUZXN0J10sIFsnZ29vZy5odG1sLnNhbml0aXplci5TYWZlRG9tVHJlZVByb2Nlc3NvcicsICdnb29nLmh0bWwuc2FuaXRpemVyLm5vY2xvYmJlcicsICdnb29nLnRlc3RpbmcuZG9tJywgJ2dvb2cudGVzdGluZy50ZXN0U3VpdGUnXSwgeydsYW5nJzogJ2VzNicsICdtb2R1bGUnOiAnZ29vZyd9KTsKZ29vZy5hZGREZXBlbmRlbmN5KCdodG1sL3Nhbml0aXplci90YWdibGFja2xpc3QuanMnLCBbJ2dvb2cuaHRtbC5zYW5pdGl6ZXIuVGFnQmxhY2tsaXN0J10sIFtdLCB7fSk7Cmdvb2cuYWRkRGVwZW5kZW5jeSgnaHRtbC9zYW5pdGl6ZXIvdGFnd2hpdGVsaXN0LmpzJywgWydnb29nLmh0bWwuc2FuaXRpemVyLlRhZ1doaXRlbGlzdCddLCBbXSwge30pOwpnb29nLmFkZERlcGVuZGVuY3koJ2h0bWwvc2FuaXRpemVyL3Vuc2FmZS5qcycsIFsnZ29vZy5odG1sLnNhbml0aXplci51bnNhZmUnXSwgWydnb29nLmFzc2VydHMnLCAnZ29vZy5odG1sLnNhbml0aXplci5IdG1sU2FuaXRpemVyLkJ1aWxkZXInLCAnZ29vZy5zdHJpbmcnLCAnZ29vZy5zdHJpbmcuQ29uc3QnXSwge30pOwpnb29nLmFkZERlcGVuZGVuY3koJ2h0bWwvc2FuaXRpemVyL3Vuc2FmZV90ZXN0LmpzJywgWydnb29nLmh0bWwuVW5zYWZlVGVzdCddLCBbJ2dvb2cuaHRtbC5TYWZlSHRtbCcsICdnb29nLmh0bWwuc2FuaXRpemVyLkF0dHJpYnV0ZVdoaXRlbGlzdCcsICdnb29nLmh0bWwuc2FuaXRpemVyLkh0bWxTYW5pdGl6ZXInLCAnZ29vZy5odG1sLnNhbml0aXplci5UYWdXaGl0ZWxpc3QnLCAnZ29vZy5odG1sLnNhbml0aXplci51bnNhZmUnLCAnZ29vZy5zdHJpbmcuQ29uc3QnLCAnZ29vZy50ZXN0aW5nLmRvbScsICdnb29nLnRlc3RpbmcudGVzdFN1aXRlJywgJ2dvb2cudXNlckFnZW50J10sIHsnbGFuZyc6ICdlczYnLCAnbW9kdWxlJzogJ2dvb2cnfSk7Cmdvb2cuYWRkRGVwZW5kZW5jeSgnaHRtbC9zaWx2ZXJsaWdodC5qcycsIFsnZ29vZy5odG1sLnNpbHZlcmxpZ2h0J10sIFsnZ29vZy5odG1sLlNhZmVIdG1sJywgJ2dvb2cuaHRtbC5UcnVzdGVkUmVzb3VyY2VVcmwnLCAnZ29vZy5odG1sLmZsYXNoJywgJ2dvb2cuc3RyaW5nLkNvbnN0J10sIHt9KTsKZ29vZy5hZGREZXBlbmRlbmN5KCdodG1sL3NpbHZlcmxpZ2h0X3Rlc3QuanMnLCBbJ2dvb2cuaHRtbC5zaWx2ZXJsaWdodFRlc3QnXSwgWydnb29nLmh0bWwuU2FmZUh0bWwnLCAnZ29vZy5odG1sLlRydXN0ZWRSZXNvdXJjZVVybCcsICdnb29nLmh0bWwuc2lsdmVybGlnaHQnLCAnZ29vZy5zdHJpbmcuQ29uc3QnLCAnZ29vZy50ZXN0aW5nLnRlc3RTdWl0ZSddLCB7J2xhbmcnOiAnZXM2JywgJ21vZHVsZSc6ICdnb29nJ30pOwpnb29nLmFkZERlcGVuZGVuY3koJ2h0bWwvdGVzdGluZy5qcycsIFsnZ29vZy5odG1sLnRlc3RpbmcnXSwgWydnb29nLmh0bWwuU2FmZUh0bWwnLCAnZ29vZy5odG1sLlNhZmVTY3JpcHQnLCAnZ29vZy5odG1sLlNhZmVTdHlsZScsICdnb29nLmh0bWwuU2FmZVN0eWxlU2hlZXQnLCAnZ29vZy5odG1sLlNhZmVVcmwnLCAnZ29vZy5odG1sLlRydXN0ZWRSZXNvdXJjZVVybCcsICdnb29nLnRlc3RpbmcubW9ja21hdGNoZXJzLkFyZ3VtZW50TWF0Y2hlciddLCB7fSk7Cmdvb2cuYWRkRGVwZW5kZW5jeSgnaHRtbC90ZXh0ZXh0cmFjdG9yLmpzJywgWydnb29nLmh0bWwudGV4dEV4dHJhY3RvciddLCBbJ2dvb2cuYXJyYXknLCAnZ29vZy5kb20uVGFnTmFtZScsICdnb29nLmh0bWwuc2FuaXRpemVyLkh0bWxTYW5pdGl6ZXInLCAnZ29vZy5vYmplY3QnLCAnZ29vZy51c2VyQWdlbnQnXSwge30pOwpnb29nLmFkZERlcGVuZGVuY3koJ2h0bWwvdGV4dGV4dHJhY3Rvcl90ZXN0LmpzJywgWydnb29nLmh0bWwudGV4dEV4dHJhY3RvclRlc3QnXSwgWydnb29nLmh0bWwudGV4dEV4dHJhY3RvcicsICdnb29nLnRlc3RpbmcudGVzdFN1aXRlJ10sIHsnbGFuZyc6ICdlczYnLCAnbW9kdWxlJzogJ2dvb2cnfSk7Cmdvb2cuYWRkRGVwZW5kZW5jeSgnaHRtbC90cnVzdGVkcmVzb3VyY2V1cmwuanMnLCBbJ2dvb2cuaHRtbC5UcnVzdGVkUmVzb3VyY2VVcmwnXSwgWydnb29nLmFzc2VydHMnLCAnZ29vZy5odG1sLnRydXN0ZWR0eXBlcycsICdnb29nLmkxOG4uYmlkaS5EaXInLCAnZ29vZy5pMThuLmJpZGkuRGlyZWN0aW9uYWxTdHJpbmcnLCAnZ29vZy5zdHJpbmcuQ29uc3QnLCAnZ29vZy5zdHJpbmcuVHlwZWRTdHJpbmcnXSwge30pOwpnb29nLmFkZERlcGVuZGVuY3koJ2h0bWwvdHJ1c3RlZHJlc291cmNldXJsX3Rlc3QuanMnLCBbJ2dvb2cuaHRtbC50cnVzdGVkUmVzb3VyY2VVcmxUZXN0J10sIFsnZ29vZy5odG1sLlRydXN0ZWRSZXNvdXJjZVVybCcsICdnb29nLmh0bWwudHJ1c3RlZHR5cGVzJywgJ2dvb2cuaTE4bi5iaWRpLkRpcicsICdnb29nLm9iamVjdCcsICdnb29nLnN0cmluZy5Db25zdCcsICdnb29nLnRlc3RpbmcuUHJvcGVydHlSZXBsYWNlcicsICdnb29nLnRlc3RpbmcudGVzdFN1aXRlJ10sIHsnbGFuZyc6ICdlczYnLCAnbW9kdWxlJzogJ2dvb2cnfSk7Cmdvb2cuYWRkRGVwZW5kZW5jeSgnaHRtbC90cnVzdGVkdHlwZXMuanMnLCBbJ2dvb2cuaHRtbC50cnVzdGVkdHlwZXMnXSwgW10sIHt9KTsKZ29vZy5hZGREZXBlbmRlbmN5KCdodG1sL3VuY2hlY2tlZGNvbnZlcnNpb25zLmpzJywgWydnb29nLmh0bWwudW5jaGVja2VkY29udmVyc2lvbnMnXSwgWydnb29nLmFzc2VydHMnLCAnZ29vZy5odG1sLlNhZmVIdG1sJywgJ2dvb2cuaHRtbC5TYWZlU2NyaXB0JywgJ2dvb2cuaHRtbC5TYWZlU3R5bGUnLCAnZ29vZy5odG1sLlNhZmVTdHlsZVNoZWV0JywgJ2dvb2cuaHRtbC5TYWZlVXJsJywgJ2dvb2cuaHRtbC5UcnVzdGVkUmVzb3VyY2VVcmwnLCAnZ29vZy5zdHJpbmcuQ29uc3QnLCAnZ29vZy5zdHJpbmcuaW50ZXJuYWwnXSwge30pOwpnb29nLmFkZERlcGVuZGVuY3koJ2h0bWwvdW5jaGVja2VkY29udmVyc2lvbnNfdGVzdC5qcycsIFsnZ29vZy5odG1sLnVuY2hlY2tlZGNvbnZlcnNpb25zVGVzdCddLCBbJ2dvb2cuaHRtbC5TYWZlSHRtbCcsICdnb29nLmh0bWwuU2FmZVNjcmlwdCcsICdnb29nLmh0bWwuU2FmZVN0eWxlJywgJ2dvb2cuaHRtbC5TYWZlU3R5bGVTaGVldCcsICdnb29nLmh0bWwuU2FmZVVybCcsICdnb29nLmh0bWwuVHJ1c3RlZFJlc291cmNlVXJsJywgJ2dvb2cuaHRtbC51bmNoZWNrZWRjb252ZXJzaW9ucycsICdnb29nLmkxOG4uYmlkaS5EaXInLCAnZ29vZy5zdHJpbmcuQ29uc3QnLCAnZ29vZy50ZXN0aW5nLnRlc3RTdWl0ZSddLCB7J2xhbmcnOiAnZXM2JywgJ21vZHVsZSc6ICdnb29nJ30pOwpnb29nLmFkZERlcGVuZGVuY3koJ2h0bWwvdXRpbHMuanMnLCBbJ2dvb2cuaHRtbC51dGlscyddLCBbJ2dvb2cuc3RyaW5nJ10sIHt9KTsKZ29vZy5hZGREZXBlbmRlbmN5KCdodG1sL3V0aWxzX3Rlc3QuanMnLCBbJ2dvb2cuaHRtbC5VdGlsc1Rlc3QnXSwgWydnb29nLmFycmF5JywgJ2dvb2cuZG9tLlRhZ05hbWUnLCAnZ29vZy5odG1sLnV0aWxzJywgJ2dvb2cub2JqZWN0JywgJ2dvb2cudGVzdGluZy50ZXN0U3VpdGUnXSwgeydsYW5nJzogJ2VzNicsICdtb2R1bGUnOiAnZ29vZyd9KTsKZ29vZy5hZGREZXBlbmRlbmN5KCdpMThuL2JpZGkuanMnLCBbJ2dvb2cuaTE4bi5iaWRpJywgJ2dvb2cuaTE4bi5iaWRpLkRpcicsICdnb29nLmkxOG4uYmlkaS5EaXJlY3Rpb25hbFN0cmluZycsICdnb29nLmkxOG4uYmlkaS5Gb3JtYXQnXSwgW10sIHsnbGFuZyc6ICdlczYnfSk7Cmdvb2cuYWRkRGVwZW5kZW5jeSgnaTE4bi9iaWRpX3Rlc3QuanMnLCBbJ2dvb2cuaTE4bi5iaWRpVGVzdCddLCBbJ2dvb2cuaTE4bi5iaWRpJywgJ2dvb2cuaTE4bi5iaWRpLkRpcicsICdnb29nLnRlc3RpbmcudGVzdFN1aXRlJ10sIHsnbGFuZyc6ICdlczYnLCAnbW9kdWxlJzogJ2dvb2cnfSk7Cmdvb2cuYWRkRGVwZW5kZW5jeSgnaTE4bi9iaWRpZm9ybWF0dGVyLmpzJywgWydnb29nLmkxOG4uQmlkaUZvcm1hdHRlciddLCBbJ2dvb2cuaHRtbC5TYWZlSHRtbCcsICdnb29nLmkxOG4uYmlkaScsICdnb29nLmkxOG4uYmlkaS5EaXInLCAnZ29vZy5pMThuLmJpZGkuRm9ybWF0J10sIHt9KTsKZ29vZy5hZGREZXBlbmRlbmN5KCdpMThuL2JpZGlmb3JtYXR0ZXJfdGVzdC5qcycsIFsnZ29vZy5pMThuLkJpZGlGb3JtYXR0ZXJUZXN0J10sIFsnZ29vZy5odG1sLlNhZmVIdG1sJywgJ2dvb2cuaHRtbC50ZXN0aW5nJywgJ2dvb2cuaTE4bi5CaWRpRm9ybWF0dGVyJywgJ2dvb2cuaTE4bi5iaWRpLkRpcicsICdnb29nLmkxOG4uYmlkaS5Gb3JtYXQnLCAnZ29vZy50ZXN0aW5nLnRlc3RTdWl0ZSddLCB7J2xhbmcnOiAnZXM2JywgJ21vZHVsZSc6ICdnb29nJ30pOwpnb29nLmFkZERlcGVuZGVuY3koJ2kxOG4vY2hhcmxpc3RkZWNvbXByZXNzb3IuanMnLCBbJ2dvb2cuaTE4bi5DaGFyTGlzdERlY29tcHJlc3NvciddLCBbJ2dvb2cuYXJyYXknLCAnZ29vZy5pMThuLnVDaGFyJ10sIHt9KTsKZ29vZy5hZGREZXBlbmRlbmN5KCdpMThuL2NoYXJsaXN0ZGVjb21wcmVzc29yX3Rlc3QuanMnLCBbJ2dvb2cuaTE4bi5DaGFyTGlzdERlY29tcHJlc3NvclRlc3QnXSwgWydnb29nLmkxOG4uQ2hhckxpc3REZWNvbXByZXNzb3InLCAnZ29vZy50ZXN0aW5nLnRlc3RTdWl0ZSddLCB7J2xhbmcnOiAnZXM2JywgJ21vZHVsZSc6ICdnb29nJ30pOwpnb29nLmFkZERlcGVuZGVuY3koJ2kxOG4vY2hhcnBpY2tlcmRhdGEuanMnLCBbJ2dvb2cuaTE4bi5DaGFyUGlja2VyRGF0YSddLCBbXSwge30pOwpnb29nLmFkZERlcGVuZGVuY3koJ2kxOG4vY29sbGF0aW9uLmpzJywgWydnb29nLmkxOG4uY29sbGF0aW9uJ10sIFtdLCB7J2xhbmcnOiAnZXM2J30pOwpnb29nLmFkZERlcGVuZGVuY3koJ2kxOG4vY29sbGF0aW9uX3Rlc3QuanMnLCBbJ2dvb2cuaTE4bi5jb2xsYXRpb25UZXN0J10sIFsnZ29vZy5pMThuLmNvbGxhdGlvbicsICdnb29nLnRlc3RpbmcuRXhwZWN0ZWRGYWlsdXJlcycsICdnb29nLnRlc3RpbmcuUHJvcGVydHlSZXBsYWNlcicsICdnb29nLnRlc3RpbmcudGVzdFN1aXRlJywgJ2dvb2cudXNlckFnZW50J10sIHsnbGFuZyc6ICdlczYnLCAnbW9kdWxlJzogJ2dvb2cnfSk7Cmdvb2cuYWRkRGVwZW5kZW5jeSgnaTE4bi9jb21wYWN0bnVtYmVyZm9ybWF0c3ltYm9scy5qcycsIFsnZ29vZy5pMThuLkNvbXBhY3ROdW1iZXJGb3JtYXRTeW1ib2xzJywgJ2dvb2cuaTE4bi5Db21wYWN0TnVtYmVyRm9ybWF0U3ltYm9sc19hZicsICdnb29nLmkxOG4uQ29tcGFjdE51bWJlckZvcm1hdFN5bWJvbHNfYW0nLCAnZ29vZy5pMThuLkNvbXBhY3ROdW1iZXJGb3JtYXRTeW1ib2xzX2FyJywgJ2dvb2cuaTE4bi5Db21wYWN0TnVtYmVyRm9ybWF0U3ltYm9sc19hcl9EWicsICdnb29nLmkxOG4uQ29tcGFjdE51bWJlckZvcm1hdFN5bWJvbHNfYXJfRUcnLCAnZ29vZy5pMThuLkNvbXBhY3ROdW1iZXJGb3JtYXRTeW1ib2xzX2F6JywgJ2dvb2cuaTE4bi5Db21wYWN0TnVtYmVyRm9ybWF0U3ltYm9sc19iZScsICdnb29nLmkxOG4uQ29tcGFjdE51bWJlckZvcm1hdFN5bWJvbHNfYmcnLCAnZ29vZy5pMThuLkNvbXBhY3ROdW1iZXJGb3JtYXRTeW1ib2xzX2JuJywgJ2dvb2cuaTE4bi5Db21wYWN0TnVtYmVyRm9ybWF0U3ltYm9sc19icicsICdnb29nLmkxOG4uQ29tcGFjdE51bWJlckZvcm1hdFN5bWJvbHNfYnMnLCAnZ29vZy5pMThuLkNvbXBhY3ROdW1iZXJGb3JtYXRTeW1ib2xzX2NhJywgJ2dvb2cuaTE4bi5Db21wYWN0TnVtYmVyRm9ybWF0U3ltYm9sc19jaHInLCAnZ29vZy5pMThuLkNvbXBhY3ROdW1iZXJGb3JtYXRTeW1ib2xzX2NzJywgJ2dvb2cuaTE4bi5Db21wYWN0TnVtYmVyRm9ybWF0U3ltYm9sc19jeScsICdnb29nLmkxOG4uQ29tcGFjdE51bWJlckZvcm1hdFN5bWJvbHNfZGEnLCAnZ29vZy5pMThuLkNvbXBhY3ROdW1iZXJGb3JtYXRTeW1ib2xzX2RlJywgJ2dvb2cuaTE4bi5Db21wYWN0TnVtYmVyRm9ybWF0U3ltYm9sc19kZV9BVCcsICdnb29nLmkxOG4uQ29tcGFjdE51bWJlckZvcm1hdFN5bWJvbHNfZGVfQ0gnLCAnZ29vZy5pMThuLkNvbXBhY3ROdW1iZXJGb3JtYXRTeW1ib2xzX2VsJywgJ2dvb2cuaTE4bi5Db21wYWN0TnVtYmVyRm9ybWF0U3ltYm9sc19lbicsICdnb29nLmkxOG4uQ29tcGFjdE51bWJlckZvcm1hdFN5bWJvbHNfZW5fQVUnLCAnZ29vZy5pMThuLkNvbXBhY3ROdW1iZXJGb3JtYXRTeW1ib2xzX2VuX0NBJywgJ2dvb2cuaTE4bi5Db21wYWN0TnVtYmVyRm9ybWF0U3ltYm9sc19lbl9HQicsICdnb29nLmkxOG4uQ29tcGFjdE51bWJlckZvcm1hdFN5bWJvbHNfZW5fSUUnLCAnZ29vZy5pMThuLkNvbXBhY3ROdW1iZXJGb3JtYXRTeW1ib2xzX2VuX0lOJywgJ2dvb2cuaTE4bi5Db21wYWN0TnVtYmVyRm9ybWF0U3ltYm9sc19lbl9TRycsICdnb29nLmkxOG4uQ29tcGFjdE51bWJlckZvcm1hdFN5bWJvbHNfZW5fVVMnLCAnZ29vZy5pMThuLkNvbXBhY3ROdW1iZXJGb3JtYXRTeW1ib2xzX2VuX1pBJywgJ2dvb2cuaTE4bi5Db21wYWN0TnVtYmVyRm9ybWF0U3ltYm9sc19lcycsICdnb29nLmkxOG4uQ29tcGFjdE51bWJlckZvcm1hdFN5bWJvbHNfZXNfNDE5JywgJ2dvb2cuaTE4bi5Db21wYWN0TnVtYmVyRm9ybWF0U3ltYm9sc19lc19FUycsICdnb29nLmkxOG4uQ29tcGFjdE51bWJlckZvcm1hdFN5bWJvbHNfZXNfTVgnLCAnZ29vZy5pMThuLkNvbXBhY3ROdW1iZXJGb3JtYXRTeW1ib2xzX2VzX1VTJywgJ2dvb2cuaTE4bi5Db21wYWN0TnVtYmVyRm9ybWF0U3ltYm9sc19ldCcsICdnb29nLmkxOG4uQ29tcGFjdE51bWJlckZvcm1hdFN5bWJvbHNfZXUnLCAnZ29vZy5pMThuLkNvbXBhY3ROdW1iZXJGb3JtYXRTeW1ib2xzX2ZhJywgJ2dvb2cuaTE4bi5Db21wYWN0TnVtYmVyRm9ybWF0U3ltYm9sc19maScsICdnb29nLmkxOG4uQ29tcGFjdE51bWJlckZvcm1hdFN5bWJvbHNfZmlsJywgJ2dvb2cuaTE4bi5Db21wYWN0TnVtYmVyRm9ybWF0U3ltYm9sc19mcicsICdnb29nLmkxOG4uQ29tcGFjdE51bWJlckZvcm1hdFN5bWJvbHNfZnJfQ0EnLCAnZ29vZy5pMThuLkNvbXBhY3ROdW1iZXJGb3JtYXRTeW1ib2xzX2dhJywgJ2dvb2cuaTE4bi5Db21wYWN0TnVtYmVyRm9ybWF0U3ltYm9sc19nbCcsICdnb29nLmkxOG4uQ29tcGFjdE51bWJlckZvcm1hdFN5bWJvbHNfZ3N3JywgJ2dvb2cuaTE4bi5Db21wYWN0TnVtYmVyRm9ybWF0U3ltYm9sc19ndScsICdnb29nLmkxOG4uQ29tcGFjdE51bWJlckZvcm1hdFN5bWJvbHNfaGF3JywgJ2dvb2cuaTE4bi5Db21wYWN0TnVtYmVyRm9ybWF0U3ltYm9sc19oZScsICdnb29nLmkxOG4uQ29tcGFjdE51bWJlckZvcm1hdFN5bWJvbHNfaGknLCAnZ29vZy5pMThuLkNvbXBhY3ROdW1iZXJGb3JtYXRTeW1ib2xzX2hyJywgJ2dvb2cuaTE4bi5Db21wYWN0TnVtYmVyRm9ybWF0U3ltYm9sc19odScsICdnb29nLmkxOG4uQ29tcGFjdE51bWJlckZvcm1hdFN5bWJvbHNfaHknLCAnZ29vZy5pMThuLkNvbXBhY3ROdW1iZXJGb3JtYXRTeW1ib2xzX2lkJywgJ2dvb2cuaTE4bi5Db21wYWN0TnVtYmVyRm9ybWF0U3ltYm9sc19pbicsICdnb29nLmkxOG4uQ29tcGFjdE51bWJlckZvcm1hdFN5bWJvbHNfaXMnLCAnZ29vZy5pMThuLkNvbXBhY3ROdW1iZXJGb3JtYXRTeW1ib2xzX2l0JywgJ2dvb2cuaTE4bi5Db21wYWN0TnVtYmVyRm9ybWF0U3ltYm9sc19pdycsICdnb29nLmkxOG4uQ29tcGFjdE51bWJlckZvcm1hdFN5bWJvbHNfamEnLCAnZ29vZy5pMThuLkNvbXBhY3ROdW1iZXJGb3JtYXRTeW1ib2xzX2thJywgJ2dvb2cuaTE4bi5Db21wYWN0TnVtYmVyRm9ybWF0U3ltYm9sc19raycsICdnb29nLmkxOG4uQ29tcGFjdE51bWJlckZvcm1hdFN5bWJvbHNfa20nLCAnZ29vZy5pMThuLkNvbXBhY3ROdW1iZXJGb3JtYXRTeW1ib2xzX2tuJywgJ2dvb2cuaTE4bi5Db21wYWN0TnVtYmVyRm9ybWF0U3ltYm9sc19rbycsICdnb29nLmkxOG4uQ29tcGFjdE51bWJlckZvcm1hdFN5bWJvbHNfa3knLCAnZ29vZy5pMThuLkNvbXBhY3ROdW1iZXJGb3JtYXRTeW1ib2xzX2xuJywgJ2dvb2cuaTE4bi5Db21wYWN0TnVtYmVyRm9ybWF0U3ltYm9sc19sbycsICdnb29nLmkxOG4uQ29tcGFjdE51bWJlckZvcm1hdFN5bWJvbHNfbHQnLCAnZ29vZy5pMThuLkNvbXBhY3ROdW1iZXJGb3JtYXRTeW1ib2xzX2x2JywgJ2dvb2cuaTE4bi5Db21wYWN0TnVtYmVyRm9ybWF0U3ltYm9sc19taycsICdnb29nLmkxOG4uQ29tcGFjdE51bWJlckZvcm1hdFN5bWJvbHNfbWwnLCAnZ29vZy5pMThuLkNvbXBhY3ROdW1iZXJGb3JtYXRTeW1ib2xzX21uJywgJ2dvb2cuaTE4bi5Db21wYWN0TnVtYmVyRm9ybWF0U3ltYm9sc19tbycsICdnb29nLmkxOG4uQ29tcGFjdE51bWJlckZvcm1hdFN5bWJvbHNfbXInLCAnZ29vZy5pMThuLkNvbXBhY3ROdW1iZXJGb3JtYXRTeW1ib2xzX21zJywgJ2dvb2cuaTE4bi5Db21wYWN0TnVtYmVyRm9ybWF0U3ltYm9sc19tdCcsICdnb29nLmkxOG4uQ29tcGFjdE51bWJlckZvcm1hdFN5bWJvbHNfbXknLCAnZ29vZy5pMThuLkNvbXBhY3ROdW1iZXJGb3JtYXRTeW1ib2xzX25iJywgJ2dvb2cuaTE4bi5Db21wYWN0TnVtYmVyRm9ybWF0U3ltYm9sc19uZScsICdnb29nLmkxOG4uQ29tcGFjdE51bWJlckZvcm1hdFN5bWJvbHNfbmwnLCAnZ29vZy5pMThuLkNvbXBhY3ROdW1iZXJGb3JtYXRTeW1ib2xzX25vJywgJ2dvb2cuaTE4bi5Db21wYWN0TnVtYmVyRm9ybWF0U3ltYm9sc19ub19OTycsICdnb29nLmkxOG4uQ29tcGFjdE51bWJlckZvcm1hdFN5bWJvbHNfb3InLCAnZ29vZy5pMThuLkNvbXBhY3ROdW1iZXJGb3JtYXRTeW1ib2xzX3BhJywgJ2dvb2cuaTE4bi5Db21wYWN0TnVtYmVyRm9ybWF0U3ltYm9sc19wbCcsICdnb29nLmkxOG4uQ29tcGFjdE51bWJlckZvcm1hdFN5bWJvbHNfcHQnLCAnZ29vZy5pMThuLkNvbXBhY3ROdW1iZXJGb3JtYXRTeW1ib2xzX3B0X0JSJywgJ2dvb2cuaTE4bi5Db21wYWN0TnVtYmVyRm9ybWF0U3ltYm9sc19wdF9QVCcsICdnb29nLmkxOG4uQ29tcGFjdE51bWJlckZvcm1hdFN5bWJvbHNfcm8nLCAnZ29vZy5pMThuLkNvbXBhY3ROdW1iZXJGb3JtYXRTeW1ib2xzX3J1JywgJ2dvb2cuaTE4bi5Db21wYWN0TnVtYmVyRm9ybWF0U3ltYm9sc19zaCcsICdnb29nLmkxOG4uQ29tcGFjdE51bWJlckZvcm1hdFN5bWJvbHNfc2knLCAnZ29vZy5pMThuLkNvbXBhY3ROdW1iZXJGb3JtYXRTeW1ib2xzX3NrJywgJ2dvb2cuaTE4bi5Db21wYWN0TnVtYmVyRm9ybWF0U3ltYm9sc19zbCcsICdnb29nLmkxOG4uQ29tcGFjdE51bWJlckZvcm1hdFN5bWJvbHNfc3EnLCAnZ29vZy5pMThuLkNvbXBhY3ROdW1iZXJGb3JtYXRTeW1ib2xzX3NyJywgJ2dvb2cuaTE4bi5Db21wYWN0TnVtYmVyRm9ybWF0U3ltYm9sc19zcl9MYXRuJywgJ2dvb2cuaTE4bi5Db21wYWN0TnVtYmVyRm9ybWF0U3ltYm9sc19zdicsICdnb29nLmkxOG4uQ29tcGFjdE51bWJlckZvcm1hdFN5bWJvbHNfc3cnLCAnZ29vZy5pMThuLkNvbXBhY3ROdW1iZXJGb3JtYXRTeW1ib2xzX3RhJywgJ2dvb2cuaTE4bi5Db21wYWN0TnVtYmVyRm9ybWF0U3ltYm9sc190ZScsICdnb29nLmkxOG4uQ29tcGFjdE51bWJlckZvcm1hdFN5bWJvbHNfdGgnLCAnZ29vZy5pMThuLkNvbXBhY3ROdW1iZXJGb3JtYXRTeW1ib2xzX3RsJywgJ2dvb2cuaTE4bi5Db21wYWN0TnVtYmVyRm9ybWF0U3ltYm9sc190cicsICdnb29nLmkxOG4uQ29tcGFjdE51bWJlckZvcm1hdFN5bWJvbHNfdWsnLCAnZ29vZy5pMThuLkNvbXBhY3ROdW1iZXJGb3JtYXRTeW1ib2xzX3VyJywgJ2dvb2cuaTE4bi5Db21wYWN0TnVtYmVyRm9ybWF0U3ltYm9sc191eicsICdnb29nLmkxOG4uQ29tcGFjdE51bWJlckZvcm1hdFN5bWJvbHNfdmknLCAnZ29vZy5pMThuLkNvbXBhY3ROdW1iZXJGb3JtYXRTeW1ib2xzX3poJywgJ2dvb2cuaTE4bi5Db21wYWN0TnVtYmVyRm9ybWF0U3ltYm9sc196aF9DTicsICdnb29nLmkxOG4uQ29tcGFjdE51bWJlckZvcm1hdFN5bWJvbHNfemhfSEsnLCAnZ29vZy5pMThuLkNvbXBhY3ROdW1iZXJGb3JtYXRTeW1ib2xzX3poX1RXJywgJ2dvb2cuaTE4bi5Db21wYWN0TnVtYmVyRm9ybWF0U3ltYm9sc196dSddLCBbXSwge30pOwpnb29nLmFkZERlcGVuZGVuY3koJ2kxOG4vY29tcGFjdG51bWJlcmZvcm1hdHN5bWJvbHNleHQuanMnLCBbJ2dvb2cuaTE4bi5Db21wYWN0TnVtYmVyRm9ybWF0U3ltYm9sc0V4dCcsICdnb29nLmkxOG4uQ29tcGFjdE51bWJlckZvcm1hdFN5bWJvbHNfYWZfTkEnLCAnZ29vZy5pMThuLkNvbXBhY3ROdW1iZXJGb3JtYXRTeW1ib2xzX2FmX1pBJywgJ2dvb2cuaTE4bi5Db21wYWN0TnVtYmVyRm9ybWF0U3ltYm9sc19hZ3EnLCAnZ29vZy5pMThuLkNvbXBhY3ROdW1iZXJGb3JtYXRTeW1ib2xzX2FncV9DTScsICdnb29nLmkxOG4uQ29tcGFjdE51bWJlckZvcm1hdFN5bWJvbHNfYWsnLCAnZ29vZy5pMThuLkNvbXBhY3ROdW1iZXJGb3JtYXRTeW1ib2xzX2FrX0dIJywgJ2dvb2cuaTE4bi5Db21wYWN0TnVtYmVyRm9ybWF0U3ltYm9sc19hbV9FVCcsICdnb29nLmkxOG4uQ29tcGFjdE51bWJlckZvcm1hdFN5bWJvbHNfYXJfMDAxJywgJ2dvb2cuaTE4bi5Db21wYWN0TnVtYmVyRm9ybWF0U3ltYm9sc19hcl9BRScsICdnb29nLmkxOG4uQ29tcGFjdE51bWJlckZvcm1hdFN5bWJvbHNfYXJfQkgnLCAnZ29vZy5pMThuLkNvbXBhY3ROdW1iZXJGb3JtYXRTeW1ib2xzX2FyX0RKJywgJ2dvb2cuaTE4bi5Db21wYWN0TnVtYmVyRm9ybWF0U3ltYm9sc19hcl9FSCcsICdnb29nLmkxOG4uQ29tcGFjdE51bWJlckZvcm1hdFN5bWJvbHNfYXJfRVInLCAnZ29vZy5pMThuLkNvbXBhY3ROdW1iZXJGb3JtYXRTeW1ib2xzX2FyX0lMJywgJ2dvb2cuaTE4bi5Db21wYWN0TnVtYmVyRm9ybWF0U3ltYm9sc19hcl9JUScsICdnb29nLmkxOG4uQ29tcGFjdE51bWJlckZvcm1hdFN5bWJvbHNfYXJfSk8nLCAnZ29vZy5pMThuLkNvbXBhY3ROdW1iZXJGb3JtYXRTeW1ib2xzX2FyX0tNJywgJ2dvb2cuaTE4bi5Db21wYWN0TnVtYmVyRm9ybWF0U3ltYm9sc19hcl9LVycsICdnb29nLmkxOG4uQ29tcGFjdE51bWJlckZvcm1hdFN5bWJvbHNfYXJfTEInLCAnZ29vZy5pMThuLkNvbXBhY3ROdW1iZXJGb3JtYXRTeW1ib2xzX2FyX0xZJywgJ2dvb2cuaTE4bi5Db21wYWN0TnVtYmVyRm9ybWF0U3ltYm9sc19hcl9NQScsICdnb29nLmkxOG4uQ29tcGFjdE51bWJlckZvcm1hdFN5bWJvbHNfYXJfTVInLCAnZ29vZy5pMThuLkNvbXBhY3ROdW1iZXJGb3JtYXRTeW1ib2xzX2FyX09NJywgJ2dvb2cuaTE4bi5Db21wYWN0TnVtYmVyRm9ybWF0U3ltYm9sc19hcl9QUycsICdnb29nLmkxOG4uQ29tcGFjdE51bWJlckZvcm1hdFN5bWJvbHNfYXJfUUEnLCAnZ29vZy5pMThuLkNvbXBhY3ROdW1iZXJGb3JtYXRTeW1ib2xzX2FyX1NBJywgJ2dvb2cuaTE4bi5Db21wYWN0TnVtYmVyRm9ybWF0U3ltYm9sc19hcl9TRCcsICdnb29nLmkxOG4uQ29tcGFjdE51bWJlckZvcm1hdFN5bWJvbHNfYXJfU08nLCAnZ29vZy5pMThuLkNvbXBhY3ROdW1iZXJGb3JtYXRTeW1ib2xzX2FyX1NTJywgJ2dvb2cuaTE4bi5Db21wYWN0TnVtYmVyRm9ybWF0U3ltYm9sc19hcl9TWScsICdnb29nLmkxOG4uQ29tcGFjdE51bWJlckZvcm1hdFN5bWJvbHNfYXJfVEQnLCAnZ29vZy5pMThuLkNvbXBhY3ROdW1iZXJGb3JtYXRTeW1ib2xzX2FyX1ROJywgJ2dvb2cuaTE4bi5Db21wYWN0TnVtYmVyRm9ybWF0U3ltYm9sc19hcl9YQicsICdnb29nLmkxOG4uQ29tcGFjdE51bWJlckZvcm1hdFN5bWJvbHNfYXJfWUUnLCAnZ29vZy5pMThuLkNvbXBhY3ROdW1iZXJGb3JtYXRTeW1ib2xzX2FzJywgJ2dvb2cuaTE4bi5Db21wYWN0TnVtYmVyRm9ybWF0U3ltYm9sc19hc19JTicsICdnb29nLmkxOG4uQ29tcGFjdE51bWJlckZvcm1hdFN5bWJvbHNfYXNhJywgJ2dvb2cuaTE4bi5Db21wYWN0TnVtYmVyRm9ybWF0U3ltYm9sc19hc2FfVFonLCAnZ29vZy5pMThuLkNvbXBhY3ROdW1iZXJGb3JtYXRTeW1ib2xzX2FzdCcsICdnb29nLmkxOG4uQ29tcGFjdE51bWJlckZvcm1hdFN5bWJvbHNfYXN0X0VTJywgJ2dvb2cuaTE4bi5Db21wYWN0TnVtYmVyRm9ybWF0U3ltYm9sc19hel9DeXJsJywgJ2dvb2cuaTE4bi5Db21wYWN0TnVtYmVyRm9ybWF0U3ltYm9sc19hel9DeXJsX0FaJywgJ2dvb2cuaTE4bi5Db21wYWN0TnVtYmVyRm9ybWF0U3ltYm9sc19hel9MYXRuJywgJ2dvb2cuaTE4bi5Db21wYWN0TnVtYmVyRm9ybWF0U3ltYm9sc19hel9MYXRuX0FaJywgJ2dvb2cuaTE4bi5Db21wYWN0TnVtYmVyRm9ybWF0U3ltYm9sc19iYXMnLCAnZ29vZy5pMThuLkNvbXBhY3ROdW1iZXJGb3JtYXRTeW1ib2xzX2Jhc19DTScsICdnb29nLmkxOG4uQ29tcGFjdE51bWJlckZvcm1hdFN5bWJvbHNfYmVfQlknLCAnZ29vZy5pMThuLkNvbXBhY3ROdW1iZXJGb3JtYXRTeW1ib2xzX2JlbScsICdnb29nLmkxOG4uQ29tcGFjdE51bWJlckZvcm1hdFN5bWJvbHNfYmVtX1pNJywgJ2dvb2cuaTE4bi5Db21wYWN0TnVtYmVyRm9ybWF0U3ltYm9sc19iZXonLCAnZ29vZy5pMThuLkNvbXBhY3ROdW1iZXJGb3JtYXRTeW1ib2xzX2Jlel9UWicsICdnb29nLmkxOG4uQ29tcGFjdE51bWJlckZvcm1hdFN5bWJvbHNfYmdfQkcnLCAnZ29vZy5pMThuLkNvbXBhY3ROdW1iZXJGb3JtYXRTeW1ib2xzX2JtJywgJ2dvb2cuaTE4bi5Db21wYWN0TnVtYmVyRm9ybWF0U3ltYm9sc19ibV9NTCcsICdnb29nLmkxOG4uQ29tcGFjdE51bWJlckZvcm1hdFN5bWJvbHNfYm5fQkQnLCAnZ29vZy5pMThuLkNvbXBhY3ROdW1iZXJGb3JtYXRTeW1ib2xzX2JuX0lOJywgJ2dvb2cuaTE4bi5Db21wYWN0TnVtYmVyRm9ybWF0U3ltYm9sc19ibycsICdnb29nLmkxOG4uQ29tcGFjdE51bWJlckZvcm1hdFN5bWJvbHNfYm9fQ04nLCAnZ29vZy5pMThuLkNvbXBhY3ROdW1iZXJGb3JtYXRTeW1ib2xzX2JvX0lOJywgJ2dvb2cuaTE4bi5Db21wYWN0TnVtYmVyRm9ybWF0U3ltYm9sc19icl9GUicsICdnb29nLmkxOG4uQ29tcGFjdE51bWJlckZvcm1hdFN5bWJvbHNfYnJ4JywgJ2dvb2cuaTE4bi5Db21wYWN0TnVtYmVyRm9ybWF0U3ltYm9sc19icnhfSU4nLCAnZ29vZy5pMThuLkNvbXBhY3ROdW1iZXJGb3JtYXRTeW1ib2xzX2JzX0N5cmwnLCAnZ29vZy5pMThuLkNvbXBhY3ROdW1iZXJGb3JtYXRTeW1ib2xzX2JzX0N5cmxfQkEnLCAnZ29vZy5pMThuLkNvbXBhY3ROdW1iZXJGb3JtYXRTeW1ib2xzX2JzX0xhdG4nLCAnZ29vZy5pMThuLkNvbXBhY3ROdW1iZXJGb3JtYXRTeW1ib2xzX2JzX0xhdG5fQkEnLCAnZ29vZy5pMThuLkNvbXBhY3ROdW1iZXJGb3JtYXRTeW1ib2xzX2NhX0FEJywgJ2dvb2cuaTE4bi5Db21wYWN0TnVtYmVyRm9ybWF0U3ltYm9sc19jYV9FUycsICdnb29nLmkxOG4uQ29tcGFjdE51bWJlckZvcm1hdFN5bWJvbHNfY2FfRlInLCAnZ29vZy5pMThuLkNvbXBhY3ROdW1iZXJGb3JtYXRTeW1ib2xzX2NhX0lUJywgJ2dvb2cuaTE4bi5Db21wYWN0TnVtYmVyRm9ybWF0U3ltYm9sc19jY3AnLCAnZ29vZy5pMThuLkNvbXBhY3ROdW1iZXJGb3JtYXRTeW1ib2xzX2NjcF9CRCcsICdnb29nLmkxOG4uQ29tcGFjdE51bWJlckZvcm1hdFN5bWJvbHNfY2NwX0lOJywgJ2dvb2cuaTE4bi5Db21wYWN0TnVtYmVyRm9ybWF0U3ltYm9sc19jZScsICdnb29nLmkxOG4uQ29tcGFjdE51bWJlckZvcm1hdFN5bWJvbHNfY2VfUlUnLCAnZ29vZy5pMThuLkNvbXBhY3ROdW1iZXJGb3JtYXRTeW1ib2xzX2NlYicsICdnb29nLmkxOG4uQ29tcGFjdE51bWJlckZvcm1hdFN5bWJvbHNfY2ViX1BIJywgJ2dvb2cuaTE4bi5Db21wYWN0TnVtYmVyRm9ybWF0U3ltYm9sc19jZ2cnLCAnZ29vZy5pMThuLkNvbXBhY3ROdW1iZXJGb3JtYXRTeW1ib2xzX2NnZ19VRycsICdnb29nLmkxOG4uQ29tcGFjdE51bWJlckZvcm1hdFN5bWJvbHNfY2hyX1VTJywgJ2dvb2cuaTE4bi5Db21wYWN0TnVtYmVyRm9ybWF0U3ltYm9sc19ja2InLCAnZ29vZy5pMThuLkNvbXBhY3ROdW1iZXJGb3JtYXRTeW1ib2xzX2NrYl9JUScsICdnb29nLmkxOG4uQ29tcGFjdE51bWJlckZvcm1hdFN5bWJvbHNfY2tiX0lSJywgJ2dvb2cuaTE4bi5Db21wYWN0TnVtYmVyRm9ybWF0U3ltYm9sc19jc19DWicsICdnb29nLmkxOG4uQ29tcGFjdE51bWJlckZvcm1hdFN5bWJvbHNfY3lfR0InLCAnZ29vZy5pMThuLkNvbXBhY3ROdW1iZXJGb3JtYXRTeW1ib2xzX2RhX0RLJywgJ2dvb2cuaTE4bi5Db21wYWN0TnVtYmVyRm9ybWF0U3ltYm9sc19kYV9HTCcsICdnb29nLmkxOG4uQ29tcGFjdE51bWJlckZvcm1hdFN5bWJvbHNfZGF2JywgJ2dvb2cuaTE4bi5Db21wYWN0TnVtYmVyRm9ybWF0U3ltYm9sc19kYXZfS0UnLCAnZ29vZy5pMThuLkNvbXBhY3ROdW1iZXJGb3JtYXRTeW1ib2xzX2RlX0JFJywgJ2dvb2cuaTE4bi5Db21wYWN0TnVtYmVyRm9ybWF0U3ltYm9sc19kZV9ERScsICdnb29nLmkxOG4uQ29tcGFjdE51bWJlckZvcm1hdFN5bWJvbHNfZGVfSVQnLCAnZ29vZy5pMThuLkNvbXBhY3ROdW1iZXJGb3JtYXRTeW1ib2xzX2RlX0xJJywgJ2dvb2cuaTE4bi5Db21wYWN0TnVtYmVyRm9ybWF0U3ltYm9sc19kZV9MVScsICdnb29nLmkxOG4uQ29tcGFjdE51bWJlckZvcm1hdFN5bWJvbHNfZGplJywgJ2dvb2cuaTE4bi5Db21wYWN0TnVtYmVyRm9ybWF0U3ltYm9sc19kamVfTkUnLCAnZ29vZy5pMThuLkNvbXBhY3ROdW1iZXJGb3JtYXRTeW1ib2xzX2RzYicsICdnb29nLmkxOG4uQ29tcGFjdE51bWJlckZvcm1hdFN5bWJvbHNfZHNiX0RFJywgJ2dvb2cuaTE4bi5Db21wYWN0TnVtYmVyRm9ybWF0U3ltYm9sc19kdWEnLCAnZ29vZy5pMThuLkNvbXBhY3ROdW1iZXJGb3JtYXRTeW1ib2xzX2R1YV9DTScsICdnb29nLmkxOG4uQ29tcGFjdE51bWJlckZvcm1hdFN5bWJvbHNfZHlvJywgJ2dvb2cuaTE4bi5Db21wYWN0TnVtYmVyRm9ybWF0U3ltYm9sc19keW9fU04nLCAnZ29vZy5pMThuLkNvbXBhY3ROdW1iZXJGb3JtYXRTeW1ib2xzX2R6JywgJ2dvb2cuaTE4bi5Db21wYWN0TnVtYmVyRm9ybWF0U3ltYm9sc19kel9CVCcsICdnb29nLmkxOG4uQ29tcGFjdE51bWJlckZvcm1hdFN5bWJvbHNfZWJ1JywgJ2dvb2cuaTE4bi5Db21wYWN0TnVtYmVyRm9ybWF0U3ltYm9sc19lYnVfS0UnLCAnZ29vZy5pMThuLkNvbXBhY3ROdW1iZXJGb3JtYXRTeW1ib2xzX2VlJywgJ2dvb2cuaTE4bi5Db21wYWN0TnVtYmVyRm9ybWF0U3ltYm9sc19lZV9HSCcsICdnb29nLmkxOG4uQ29tcGFjdE51bWJlckZvcm1hdFN5bWJvbHNfZWVfVEcnLCAnZ29vZy5pMThuLkNvbXBhY3ROdW1iZXJGb3JtYXRTeW1ib2xzX2VsX0NZJywgJ2dvb2cuaTE4bi5Db21wYWN0TnVtYmVyRm9ybWF0U3ltYm9sc19lbF9HUicsICdnb29nLmkxOG4uQ29tcGFjdE51bWJlckZvcm1hdFN5bWJvbHNfZW5fMDAxJywgJ2dvb2cuaTE4bi5Db21wYWN0TnVtYmVyRm9ybWF0U3ltYm9sc19lbl8xNTAnLCAnZ29vZy5pMThuLkNvbXBhY3ROdW1iZXJGb3JtYXRTeW1ib2xzX2VuX0FFJywgJ2dvb2cuaTE4bi5Db21wYWN0TnVtYmVyRm9ybWF0U3ltYm9sc19lbl9BRycsICdnb29nLmkxOG4uQ29tcGFjdE51bWJlckZvcm1hdFN5bWJvbHNfZW5fQUknLCAnZ29vZy5pMThuLkNvbXBhY3ROdW1iZXJGb3JtYXRTeW1ib2xzX2VuX0FTJywgJ2dvb2cuaTE4bi5Db21wYWN0TnVtYmVyRm9ybWF0U3ltYm9sc19lbl9BVCcsICdnb29nLmkxOG4uQ29tcGFjdE51bWJlckZvcm1hdFN5bWJvbHNfZW5fQkInLCAnZ29vZy5pMThuLkNvbXBhY3ROdW1iZXJGb3JtYXRTeW1ib2xzX2VuX0JFJywgJ2dvb2cuaTE4bi5Db21wYWN0TnVtYmVyRm9ybWF0U3ltYm9sc19lbl9CSScsICdnb29nLmkxOG4uQ29tcGFjdE51bWJlckZvcm1hdFN5bWJvbHNfZW5fQk0nLCAnZ29vZy5pMThuLkNvbXBhY3ROdW1iZXJGb3JtYXRTeW1ib2xzX2VuX0JTJywgJ2dvb2cuaTE4bi5Db21wYWN0TnVtYmVyRm9ybWF0U3ltYm9sc19lbl9CVycsICdnb29nLmkxOG4uQ29tcGFjdE51bWJlckZvcm1hdFN5bWJvbHNfZW5fQlonLCAnZ29vZy5pMThuLkNvbXBhY3ROdW1iZXJGb3JtYXRTeW1ib2xzX2VuX0NDJywgJ2dvb2cuaTE4bi5Db21wYWN0TnVtYmVyRm9ybWF0U3ltYm9sc19lbl9DSCcsICdnb29nLmkxOG4uQ29tcGFjdE51bWJlckZvcm1hdFN5bWJvbHNfZW5fQ0snLCAnZ29vZy5pMThuLkNvbXBhY3ROdW1iZXJGb3JtYXRTeW1ib2xzX2VuX0NNJywgJ2dvb2cuaTE4bi5Db21wYWN0TnVtYmVyRm9ybWF0U3ltYm9sc19lbl9DWCcsICdnb29nLmkxOG4uQ29tcGFjdE51bWJlckZvcm1hdFN5bWJvbHNfZW5fQ1knLCAnZ29vZy5pMThuLkNvbXBhY3ROdW1iZXJGb3JtYXRTeW1ib2xzX2VuX0RFJywgJ2dvb2cuaTE4bi5Db21wYWN0TnVtYmVyRm9ybWF0U3ltYm9sc19lbl9ERycsICdnb29nLmkxOG4uQ29tcGFjdE51bWJlckZvcm1hdFN5bWJvbHNfZW5fREsnLCAnZ29vZy5pMThuLkNvbXBhY3ROdW1iZXJGb3JtYXRTeW1ib2xzX2VuX0RNJywgJ2dvb2cuaTE4bi5Db21wYWN0TnVtYmVyRm9ybWF0U3ltYm9sc19lbl9FUicsICdnb29nLmkxOG4uQ29tcGFjdE51bWJlckZvcm1hdFN5bWJvbHNfZW5fRkknLCAnZ29vZy5pMThuLkNvbXBhY3ROdW1iZXJGb3JtYXRTeW1ib2xzX2VuX0ZKJywgJ2dvb2cuaTE4bi5Db21wYWN0TnVtYmVyRm9ybWF0U3ltYm9sc19lbl9GSycsICdnb29nLmkxOG4uQ29tcGFjdE51bWJlckZvcm1hdFN5bWJvbHNfZW5fRk0nLCAnZ29vZy5pMThuLkNvbXBhY3ROdW1iZXJGb3JtYXRTeW1ib2xzX2VuX0dEJywgJ2dvb2cuaTE4bi5Db21wYWN0TnVtYmVyRm9ybWF0U3ltYm9sc19lbl9HRycsICdnb29nLmkxOG4uQ29tcGFjdE51bWJlckZvcm1hdFN5bWJvbHNfZW5fR0gnLCAnZ29vZy5pMThuLkNvbXBhY3ROdW1iZXJGb3JtYXRTeW1ib2xzX2VuX0dJJywgJ2dvb2cuaTE4bi5Db21wYWN0TnVtYmVyRm9ybWF0U3ltYm9sc19lbl9HTScsICdnb29nLmkxOG4uQ29tcGFjdE51bWJlckZvcm1hdFN5bWJvbHNfZW5fR1UnLCAnZ29vZy5pMThuLkNvbXBhY3ROdW1iZXJGb3JtYXRTeW1ib2xzX2VuX0dZJywgJ2dvb2cuaTE4bi5Db21wYWN0TnVtYmVyRm9ybWF0U3ltYm9sc19lbl9ISycsICdnb29nLmkxOG4uQ29tcGFjdE51bWJlckZvcm1hdFN5bWJvbHNfZW5fSUwnLCAnZ29vZy5pMThuLkNvbXBhY3ROdW1iZXJGb3JtYXRTeW1ib2xzX2VuX0lNJywgJ2dvb2cuaTE4bi5Db21wYWN0TnVtYmVyRm9ybWF0U3ltYm9sc19lbl9JTycsICdnb29nLmkxOG4uQ29tcGFjdE51bWJlckZvcm1hdFN5bWJvbHNfZW5fSkUnLCAnZ29vZy5pMThuLkNvbXBhY3ROdW1iZXJGb3JtYXRTeW1ib2xzX2VuX0pNJywgJ2dvb2cuaTE4bi5Db21wYWN0TnVtYmVyRm9ybWF0U3ltYm9sc19lbl9LRScsICdnb29nLmkxOG4uQ29tcGFjdE51bWJlckZvcm1hdFN5bWJvbHNfZW5fS0knLCAnZ29vZy5pMThuLkNvbXBhY3ROdW1iZXJGb3JtYXRTeW1ib2xzX2VuX0tOJywgJ2dvb2cuaTE4bi5Db21wYWN0TnVtYmVyRm9ybWF0U3ltYm9sc19lbl9LWScsICdnb29nLmkxOG4uQ29tcGFjdE51bWJlckZvcm1hdFN5bWJvbHNfZW5fTEMnLCAnZ29vZy5pMThuLkNvbXBhY3ROdW1iZXJGb3JtYXRTeW1ib2xzX2VuX0xSJywgJ2dvb2cuaTE4bi5Db21wYWN0TnVtYmVyRm9ybWF0U3ltYm9sc19lbl9MUycsICdnb29nLmkxOG4uQ29tcGFjdE51bWJlckZvcm1hdFN5bWJvbHNfZW5fTUcnLCAnZ29vZy5pMThuLkNvbXBhY3ROdW1iZXJGb3JtYXRTeW1ib2xzX2VuX01IJywgJ2dvb2cuaTE4bi5Db21wYWN0TnVtYmVyRm9ybWF0U3ltYm9sc19lbl9NTycsICdnb29nLmkxOG4uQ29tcGFjdE51bWJlckZvcm1hdFN5bWJvbHNfZW5fTVAnLCAnZ29vZy5pMThuLkNvbXBhY3ROdW1iZXJGb3JtYXRTeW1ib2xzX2VuX01TJywgJ2dvb2cuaTE4bi5Db21wYWN0TnVtYmVyRm9ybWF0U3ltYm9sc19lbl9NVCcsICdnb29nLmkxOG4uQ29tcGFjdE51bWJlckZvcm1hdFN5bWJvbHNfZW5fTVUnLCAnZ29vZy5pMThuLkNvbXBhY3ROdW1iZXJGb3JtYXRTeW1ib2xzX2VuX01XJywgJ2dvb2cuaTE4bi5Db21wYWN0TnVtYmVyRm9ybWF0U3ltYm9sc19lbl9NWScsICdnb29nLmkxOG4uQ29tcGFjdE51bWJlckZvcm1hdFN5bWJvbHNfZW5fTkEnLCAnZ29vZy5pMThuLkNvbXBhY3ROdW1iZXJGb3JtYXRTeW1ib2xzX2VuX05GJywgJ2dvb2cuaTE4bi5Db21wYWN0TnVtYmVyRm9ybWF0U3ltYm9sc19lbl9ORycsICdnb29nLmkxOG4uQ29tcGFjdE51bWJlckZvcm1hdFN5bWJvbHNfZW5fTkwnLCAnZ29vZy5pMThuLkNvbXBhY3ROdW1iZXJGb3JtYXRTeW1ib2xzX2VuX05SJywgJ2dvb2cuaTE4bi5Db21wYWN0TnVtYmVyRm9ybWF0U3ltYm9sc19lbl9OVScsICdnb29nLmkxOG4uQ29tcGFjdE51bWJlckZvcm1hdFN5bWJvbHNfZW5fTlonLCAnZ29vZy5pMThuLkNvbXBhY3ROdW1iZXJGb3JtYXRTeW1ib2xzX2VuX1BHJywgJ2dvb2cuaTE4bi5Db21wYWN0TnVtYmVyRm9ybWF0U3ltYm9sc19lbl9QSCcsICdnb29nLmkxOG4uQ29tcGFjdE51bWJlckZvcm1hdFN5bWJvbHNfZW5fUEsnLCAnZ29vZy5pMThuLkNvbXBhY3ROdW1iZXJGb3JtYXRTeW1ib2xzX2VuX1BOJywgJ2dvb2cuaTE4bi5Db21wYWN0TnVtYmVyRm9ybWF0U3ltYm9sc19lbl9QUicsICdnb29nLmkxOG4uQ29tcGFjdE51bWJlckZvcm1hdFN5bWJvbHNfZW5fUFcnLCAnZ29vZy5pMThuLkNvbXBhY3ROdW1iZXJGb3JtYXRTeW1ib2xzX2VuX1JXJywgJ2dvb2cuaTE4bi5Db21wYWN0TnVtYmVyRm9ybWF0U3ltYm9sc19lbl9TQicsICdnb29nLmkxOG4uQ29tcGFjdE51bWJlckZvcm1hdFN5bWJvbHNfZW5fU0MnLCAnZ29vZy5pMThuLkNvbXBhY3ROdW1iZXJGb3JtYXRTeW1ib2xzX2VuX1NEJywgJ2dvb2cuaTE4bi5Db21wYWN0TnVtYmVyRm9ybWF0U3ltYm9sc19lbl9TRScsICdnb29nLmkxOG4uQ29tcGFjdE51bWJlckZvcm1hdFN5bWJvbHNfZW5fU0gnLCAnZ29vZy5pMThuLkNvbXBhY3ROdW1iZXJGb3JtYXRTeW1ib2xzX2VuX1NJJywgJ2dvb2cuaTE4bi5Db21wYWN0TnVtYmVyRm9ybWF0U3ltYm9sc19lbl9TTCcsICdnb29nLmkxOG4uQ29tcGFjdE51bWJlckZvcm1hdFN5bWJvbHNfZW5fU1MnLCAnZ29vZy5pMThuLkNvbXBhY3ROdW1iZXJGb3JtYXRTeW1ib2xzX2VuX1NYJywgJ2dvb2cuaTE4bi5Db21wYWN0TnVtYmVyRm9ybWF0U3ltYm9sc19lbl9TWicsICdnb29nLmkxOG4uQ29tcGFjdE51bWJlckZvcm1hdFN5bWJvbHNfZW5fVEMnLCAnZ29vZy5pMThuLkNvbXBhY3ROdW1iZXJGb3JtYXRTeW1ib2xzX2VuX1RLJywgJ2dvb2cuaTE4bi5Db21wYWN0TnVtYmVyRm9ybWF0U3ltYm9sc19lbl9UTycsICdnb29nLmkxOG4uQ29tcGFjdE51bWJlckZvcm1hdFN5bWJvbHNfZW5fVFQnLCAnZ29vZy5pMThuLkNvbXBhY3ROdW1iZXJGb3JtYXRTeW1ib2xzX2VuX1RWJywgJ2dvb2cuaTE4bi5Db21wYWN0TnVtYmVyRm9ybWF0U3ltYm9sc19lbl9UWicsICdnb29nLmkxOG4uQ29tcGFjdE51bWJlckZvcm1hdFN5bWJvbHNfZW5fVUcnLCAnZ29vZy5pMThuLkNvbXBhY3ROdW1iZXJGb3JtYXRTeW1ib2xzX2VuX1VNJywgJ2dvb2cuaTE4bi5Db21wYWN0TnVtYmVyRm9ybWF0U3ltYm9sc19lbl9VU19QT1NJWCcsICdnb29nLmkxOG4uQ29tcGFjdE51bWJlckZvcm1hdFN5bWJvbHNfZW5fVkMnLCAnZ29vZy5pMThuLkNvbXBhY3ROdW1iZXJGb3JtYXRTeW1ib2xzX2VuX1ZHJywgJ2dvb2cuaTE4bi5Db21wYWN0TnVtYmVyRm9ybWF0U3ltYm9sc19lbl9WSScsICdnb29nLmkxOG4uQ29tcGFjdE51bWJlckZvcm1hdFN5bWJvbHNfZW5fVlUnLCAnZ29vZy5pMThuLkNvbXBhY3ROdW1iZXJGb3JtYXRTeW1ib2xzX2VuX1dTJywgJ2dvb2cuaTE4bi5Db21wYWN0TnVtYmVyRm9ybWF0U3ltYm9sc19lbl9YQScsICdnb29nLmkxOG4uQ29tcGFjdE51bWJlckZvcm1hdFN5bWJvbHNfZW5fWk0nLCAnZ29vZy5pMThuLkNvbXBhY3ROdW1iZXJGb3JtYXRTeW1ib2xzX2VuX1pXJywgJ2dvb2cuaTE4bi5Db21wYWN0TnVtYmVyRm9ybWF0U3ltYm9sc19lbycsICdnb29nLmkxOG4uQ29tcGFjdE51bWJlckZvcm1hdFN5bWJvbHNfZW9fMDAxJywgJ2dvb2cuaTE4bi5Db21wYWN0TnVtYmVyRm9ybWF0U3ltYm9sc19lc19BUicsICdnb29nLmkxOG4uQ29tcGFjdE51bWJlckZvcm1hdFN5bWJvbHNfZXNfQk8nLCAnZ29vZy5pMThuLkNvbXBhY3ROdW1iZXJGb3JtYXRTeW1ib2xzX2VzX0JSJywgJ2dvb2cuaTE4bi5Db21wYWN0TnVtYmVyRm9ybWF0U3ltYm9sc19lc19CWicsICdnb29nLmkxOG4uQ29tcGFjdE51bWJlckZvcm1hdFN5bWJvbHNfZXNfQ0wnLCAnZ29vZy5pMThuLkNvbXBhY3ROdW1iZXJGb3JtYXRTeW1ib2xzX2VzX0NPJywgJ2dvb2cuaTE4bi5Db21wYWN0TnVtYmVyRm9ybWF0U3ltYm9sc19lc19DUicsICdnb29nLmkxOG4uQ29tcGFjdE51bWJlckZvcm1hdFN5bWJvbHNfZXNfQ1UnLCAnZ29vZy5pMThuLkNvbXBhY3ROdW1iZXJGb3JtYXRTeW1ib2xzX2VzX0RPJywgJ2dvb2cuaTE4bi5Db21wYWN0TnVtYmVyRm9ybWF0U3ltYm9sc19lc19FQScsICdnb29nLmkxOG4uQ29tcGFjdE51bWJlckZvcm1hdFN5bWJvbHNfZXNfRUMnLCAnZ29vZy5pMThuLkNvbXBhY3ROdW1iZXJGb3JtYXRTeW1ib2xzX2VzX0dRJywgJ2dvb2cuaTE4bi5Db21wYWN0TnVtYmVyRm9ybWF0U3ltYm9sc19lc19HVCcsICdnb29nLmkxOG4uQ29tcGFjdE51bWJlckZvcm1hdFN5bWJvbHNfZXNfSE4nLCAnZ29vZy5pMThuLkNvbXBhY3ROdW1iZXJGb3JtYXRTeW1ib2xzX2VzX0lDJywgJ2dvb2cuaTE4bi5Db21wYWN0TnVtYmVyRm9ybWF0U3ltYm9sc19lc19OSScsICdnb29nLmkxOG4uQ29tcGFjdE51bWJlckZvcm1hdFN5bWJvbHNfZXNfUEEnLCAnZ29vZy5pMThuLkNvbXBhY3ROdW1iZXJGb3JtYXRTeW1ib2xzX2VzX1BFJywgJ2dvb2cuaTE4bi5Db21wYWN0TnVtYmVyRm9ybWF0U3ltYm9sc19lc19QSCcsICdnb29nLmkxOG4uQ29tcGFjdE51bWJlckZvcm1hdFN5bWJvbHNfZXNfUFInLCAnZ29vZy5pMThuLkNvbXBhY3ROdW1iZXJGb3JtYXRTeW1ib2xzX2VzX1BZJywgJ2dvb2cuaTE4bi5Db21wYWN0TnVtYmVyRm9ybWF0U3ltYm9sc19lc19TVicsICdnb29nLmkxOG4uQ29tcGFjdE51bWJlckZvcm1hdFN5bWJvbHNfZXNfVVknLCAnZ29vZy5pMThuLkNvbXBhY3ROdW1iZXJGb3JtYXRTeW1ib2xzX2VzX1ZFJywgJ2dvb2cuaTE4bi5Db21wYWN0TnVtYmVyRm9ybWF0U3ltYm9sc19ldF9FRScsICdnb29nLmkxOG4uQ29tcGFjdE51bWJlckZvcm1hdFN5bWJvbHNfZXVfRVMnLCAnZ29vZy5pMThuLkNvbXBhY3ROdW1iZXJGb3JtYXRTeW1ib2xzX2V3bycsICdnb29nLmkxOG4uQ29tcGFjdE51bWJlckZvcm1hdFN5bWJvbHNfZXdvX0NNJywgJ2dvb2cuaTE4bi5Db21wYWN0TnVtYmVyRm9ybWF0U3ltYm9sc19mYV9BRicsICdnb29nLmkxOG4uQ29tcGFjdE51bWJlckZvcm1hdFN5bWJvbHNfZmFfSVInLCAnZ29vZy5pMThuLkNvbXBhY3ROdW1iZXJGb3JtYXRTeW1ib2xzX2ZmJywgJ2dvb2cuaTE4bi5Db21wYWN0TnVtYmVyRm9ybWF0U3ltYm9sc19mZl9MYXRuJywgJ2dvb2cuaTE4bi5Db21wYWN0TnVtYmVyRm9ybWF0U3ltYm9sc19mZl9MYXRuX0JGJywgJ2dvb2cuaTE4bi5Db21wYWN0TnVtYmVyRm9ybWF0U3ltYm9sc19mZl9MYXRuX0NNJywgJ2dvb2cuaTE4bi5Db21wYWN0TnVtYmVyRm9ybWF0U3ltYm9sc19mZl9MYXRuX0dIJywgJ2dvb2cuaTE4bi5Db21wYWN0TnVtYmVyRm9ybWF0U3ltYm9sc19mZl9MYXRuX0dNJywgJ2dvb2cuaTE4bi5Db21wYWN0TnVtYmVyRm9ybWF0U3ltYm9sc19mZl9MYXRuX0dOJywgJ2dvb2cuaTE4bi5Db21wYWN0TnVtYmVyRm9ybWF0U3ltYm9sc19mZl9MYXRuX0dXJywgJ2dvb2cuaTE4bi5Db21wYWN0TnVtYmVyRm9ybWF0U3ltYm9sc19mZl9MYXRuX0xSJywgJ2dvb2cuaTE4bi5Db21wYWN0TnVtYmVyRm9ybWF0U3ltYm9sc19mZl9MYXRuX01SJywgJ2dvb2cuaTE4bi5Db21wYWN0TnVtYmVyRm9ybWF0U3ltYm9sc19mZl9MYXRuX05FJywgJ2dvb2cuaTE4bi5Db21wYWN0TnVtYmVyRm9ybWF0U3ltYm9sc19mZl9MYXRuX05HJywgJ2dvb2cuaTE4bi5Db21wYWN0TnVtYmVyRm9ybWF0U3ltYm9sc19mZl9MYXRuX1NMJywgJ2dvb2cuaTE4bi5Db21wYWN0TnVtYmVyRm9ybWF0U3ltYm9sc19mZl9MYXRuX1NOJywgJ2dvb2cuaTE4bi5Db21wYWN0TnVtYmVyRm9ybWF0U3ltYm9sc19maV9GSScsICdnb29nLmkxOG4uQ29tcGFjdE51bWJlckZvcm1hdFN5bWJvbHNfZmlsX1BIJywgJ2dvb2cuaTE4bi5Db21wYWN0TnVtYmVyRm9ybWF0U3ltYm9sc19mbycsICdnb29nLmkxOG4uQ29tcGFjdE51bWJlckZvcm1hdFN5bWJvbHNfZm9fREsnLCAnZ29vZy5pMThuLkNvbXBhY3ROdW1iZXJGb3JtYXRTeW1ib2xzX2ZvX0ZPJywgJ2dvb2cuaTE4bi5Db21wYWN0TnVtYmVyRm9ybWF0U3ltYm9sc19mcl9CRScsICdnb29nLmkxOG4uQ29tcGFjdE51bWJlckZvcm1hdFN5bWJvbHNfZnJfQkYnLCAnZ29vZy5pMThuLkNvbXBhY3ROdW1iZXJGb3JtYXRTeW1ib2xzX2ZyX0JJJywgJ2dvb2cuaTE4bi5Db21wYWN0TnVtYmVyRm9ybWF0U3ltYm9sc19mcl9CSicsICdnb29nLmkxOG4uQ29tcGFjdE51bWJlckZvcm1hdFN5bWJvbHNfZnJfQkwnLCAnZ29vZy5pMThuLkNvbXBhY3ROdW1iZXJGb3JtYXRTeW1ib2xzX2ZyX0NEJywgJ2dvb2cuaTE4bi5Db21wYWN0TnVtYmVyRm9ybWF0U3ltYm9sc19mcl9DRicsICdnb29nLmkxOG4uQ29tcGFjdE51bWJlckZvcm1hdFN5bWJvbHNfZnJfQ0cnLCAnZ29vZy5pMThuLkNvbXBhY3ROdW1iZXJGb3JtYXRTeW1ib2xzX2ZyX0NIJywgJ2dvb2cuaTE4bi5Db21wYWN0TnVtYmVyRm9ybWF0U3ltYm9sc19mcl9DSScsICdnb29nLmkxOG4uQ29tcGFjdE51bWJlckZvcm1hdFN5bWJvbHNfZnJfQ00nLCAnZ29vZy5pMThuLkNvbXBhY3ROdW1iZXJGb3JtYXRTeW1ib2xzX2ZyX0RKJywgJ2dvb2cuaTE4bi5Db21wYWN0TnVtYmVyRm9ybWF0U3ltYm9sc19mcl9EWicsICdnb29nLmkxOG4uQ29tcGFjdE51bWJlckZvcm1hdFN5bWJvbHNfZnJfRlInLCAnZ29vZy5pMThuLkNvbXBhY3ROdW1iZXJGb3JtYXRTeW1ib2xzX2ZyX0dBJywgJ2dvb2cuaTE4bi5Db21wYWN0TnVtYmVyRm9ybWF0U3ltYm9sc19mcl9HRicsICdnb29nLmkxOG4uQ29tcGFjdE51bWJlckZvcm1hdFN5bWJvbHNfZnJfR04nLCAnZ29vZy5pMThuLkNvbXBhY3ROdW1iZXJGb3JtYXRTeW1ib2xzX2ZyX0dQJywgJ2dvb2cuaTE4bi5Db21wYWN0TnVtYmVyRm9ybWF0U3ltYm9sc19mcl9HUScsICdnb29nLmkxOG4uQ29tcGFjdE51bWJlckZvcm1hdFN5bWJvbHNfZnJfSFQnLCAnZ29vZy5pMThuLkNvbXBhY3ROdW1iZXJGb3JtYXRTeW1ib2xzX2ZyX0tNJywgJ2dvb2cuaTE4bi5Db21wYWN0TnVtYmVyRm9ybWF0U3ltYm9sc19mcl9MVScsICdnb29nLmkxOG4uQ29tcGFjdE51bWJlckZvcm1hdFN5bWJvbHNfZnJfTUEnLCAnZ29vZy5pMThuLkNvbXBhY3ROdW1iZXJGb3JtYXRTeW1ib2xzX2ZyX01DJywgJ2dvb2cuaTE4bi5Db21wYWN0TnVtYmVyRm9ybWF0U3ltYm9sc19mcl9NRicsICdnb29nLmkxOG4uQ29tcGFjdE51bWJlckZvcm1hdFN5bWJvbHNfZnJfTUcnLCAnZ29vZy5pMThuLkNvbXBhY3ROdW1iZXJGb3JtYXRTeW1ib2xzX2ZyX01MJywgJ2dvb2cuaTE4bi5Db21wYWN0TnVtYmVyRm9ybWF0U3ltYm9sc19mcl9NUScsICdnb29nLmkxOG4uQ29tcGFjdE51bWJlckZvcm1hdFN5bWJvbHNfZnJfTVInLCAnZ29vZy5pMThuLkNvbXBhY3ROdW1iZXJGb3JtYXRTeW1ib2xzX2ZyX01VJywgJ2dvb2cuaTE4bi5Db21wYWN0TnVtYmVyRm9ybWF0U3ltYm9sc19mcl9OQycsICdnb29nLmkxOG4uQ29tcGFjdE51bWJlckZvcm1hdFN5bWJvbHNfZnJfTkUnLCAnZ29vZy5pMThuLkNvbXBhY3ROdW1iZXJGb3JtYXRTeW1ib2xzX2ZyX1BGJywgJ2dvb2cuaTE4bi5Db21wYWN0TnVtYmVyRm9ybWF0U3ltYm9sc19mcl9QTScsICdnb29nLmkxOG4uQ29tcGFjdE51bWJlckZvcm1hdFN5bWJvbHNfZnJfUkUnLCAnZ29vZy5pMThuLkNvbXBhY3ROdW1iZXJGb3JtYXRTeW1ib2xzX2ZyX1JXJywgJ2dvb2cuaTE4bi5Db21wYWN0TnVtYmVyRm9ybWF0U3ltYm9sc19mcl9TQycsICdnb29nLmkxOG4uQ29tcGFjdE51bWJlckZvcm1hdFN5bWJvbHNfZnJfU04nLCAnZ29vZy5pMThuLkNvbXBhY3ROdW1iZXJGb3JtYXRTeW1ib2xzX2ZyX1NZJywgJ2dvb2cuaTE4bi5Db21wYWN0TnVtYmVyRm9ybWF0U3ltYm9sc19mcl9URCcsICdnb29nLmkxOG4uQ29tcGFjdE51bWJlckZvcm1hdFN5bWJvbHNfZnJfVEcnLCAnZ29vZy5pMThuLkNvbXBhY3ROdW1iZXJGb3JtYXRTeW1ib2xzX2ZyX1ROJywgJ2dvb2cuaTE4bi5Db21wYWN0TnVtYmVyRm9ybWF0U3ltYm9sc19mcl9WVScsICdnb29nLmkxOG4uQ29tcGFjdE51bWJlckZvcm1hdFN5bWJvbHNfZnJfV0YnLCAnZ29vZy5pMThuLkNvbXBhY3ROdW1iZXJGb3JtYXRTeW1ib2xzX2ZyX1lUJywgJ2dvb2cuaTE4bi5Db21wYWN0TnVtYmVyRm9ybWF0U3ltYm9sc19mdXInLCAnZ29vZy5pMThuLkNvbXBhY3ROdW1iZXJGb3JtYXRTeW1ib2xzX2Z1cl9JVCcsICdnb29nLmkxOG4uQ29tcGFjdE51bWJlckZvcm1hdFN5bWJvbHNfZnknLCAnZ29vZy5pMThuLkNvbXBhY3ROdW1iZXJGb3JtYXRTeW1ib2xzX2Z5X05MJywgJ2dvb2cuaTE4bi5Db21wYWN0TnVtYmVyRm9ybWF0U3ltYm9sc19nYV9JRScsICdnb29nLmkxOG4uQ29tcGFjdE51bWJlckZvcm1hdFN5bWJvbHNfZ2QnLCAnZ29vZy5pMThuLkNvbXBhY3ROdW1iZXJGb3JtYXRTeW1ib2xzX2dkX0dCJywgJ2dvb2cuaTE4bi5Db21wYWN0TnVtYmVyRm9ybWF0U3ltYm9sc19nbF9FUycsICdnb29nLmkxOG4uQ29tcGFjdE51bWJlckZvcm1hdFN5bWJvbHNfZ3N3X0NIJywgJ2dvb2cuaTE4bi5Db21wYWN0TnVtYmVyRm9ybWF0U3ltYm9sc19nc3dfRlInLCAnZ29vZy5pMThuLkNvbXBhY3ROdW1iZXJGb3JtYXRTeW1ib2xzX2dzd19MSScsICdnb29nLmkxOG4uQ29tcGFjdE51bWJlckZvcm1hdFN5bWJvbHNfZ3VfSU4nLCAnZ29vZy5pMThuLkNvbXBhY3ROdW1iZXJGb3JtYXRTeW1ib2xzX2d1eicsICdnb29nLmkxOG4uQ29tcGFjdE51bWJlckZvcm1hdFN5bWJvbHNfZ3V6X0tFJywgJ2dvb2cuaTE4bi5Db21wYWN0TnVtYmVyRm9ybWF0U3ltYm9sc19ndicsICdnb29nLmkxOG4uQ29tcGFjdE51bWJlckZvcm1hdFN5bWJvbHNfZ3ZfSU0nLCAnZ29vZy5pMThuLkNvbXBhY3ROdW1iZXJGb3JtYXRTeW1ib2xzX2hhJywgJ2dvb2cuaTE4bi5Db21wYWN0TnVtYmVyRm9ybWF0U3ltYm9sc19oYV9HSCcsICdnb29nLmkxOG4uQ29tcGFjdE51bWJlckZvcm1hdFN5bWJvbHNfaGFfTkUnLCAnZ29vZy5pMThuLkNvbXBhY3ROdW1iZXJGb3JtYXRTeW1ib2xzX2hhX05HJywgJ2dvb2cuaTE4bi5Db21wYWN0TnVtYmVyRm9ybWF0U3ltYm9sc19oYXdfVVMnLCAnZ29vZy5pMThuLkNvbXBhY3ROdW1iZXJGb3JtYXRTeW1ib2xzX2hlX0lMJywgJ2dvb2cuaTE4bi5Db21wYWN0TnVtYmVyRm9ybWF0U3ltYm9sc19oaV9JTicsICdnb29nLmkxOG4uQ29tcGFjdE51bWJlckZvcm1hdFN5bWJvbHNfaHJfQkEnLCAnZ29vZy5pMThuLkNvbXBhY3ROdW1iZXJGb3JtYXRTeW1ib2xzX2hyX0hSJywgJ2dvb2cuaTE4bi5Db21wYWN0TnVtYmVyRm9ybWF0U3ltYm9sc19oc2InLCAnZ29vZy5pMThuLkNvbXBhY3ROdW1iZXJGb3JtYXRTeW1ib2xzX2hzYl9ERScsICdnb29nLmkxOG4uQ29tcGFjdE51bWJlckZvcm1hdFN5bWJvbHNfaHVfSFUnLCAnZ29vZy5pMThuLkNvbXBhY3ROdW1iZXJGb3JtYXRTeW1ib2xzX2h5X0FNJywgJ2dvb2cuaTE4bi5Db21wYWN0TnVtYmVyRm9ybWF0U3ltYm9sc19pYScsICdnb29nLmkxOG4uQ29tcGFjdE51bWJlckZvcm1hdFN5bWJvbHNfaWFfMDAxJywgJ2dvb2cuaTE4bi5Db21wYWN0TnVtYmVyRm9ybWF0U3ltYm9sc19pZF9JRCcsICdnb29nLmkxOG4uQ29tcGFjdE51bWJlckZvcm1hdFN5bWJvbHNfaWcnLCAnZ29vZy5pMThuLkNvbXBhY3ROdW1iZXJGb3JtYXRTeW1ib2xzX2lnX05HJywgJ2dvb2cuaTE4bi5Db21wYWN0TnVtYmVyRm9ybWF0U3ltYm9sc19paScsICdnb29nLmkxOG4uQ29tcGFjdE51bWJlckZvcm1hdFN5bWJvbHNfaWlfQ04nLCAnZ29vZy5pMThuLkNvbXBhY3ROdW1iZXJGb3JtYXRTeW1ib2xzX2lzX0lTJywgJ2dvb2cuaTE4bi5Db21wYWN0TnVtYmVyRm9ybWF0U3ltYm9sc19pdF9DSCcsICdnb29nLmkxOG4uQ29tcGFjdE51bWJlckZvcm1hdFN5bWJvbHNfaXRfSVQnLCAnZ29vZy5pMThuLkNvbXBhY3ROdW1iZXJGb3JtYXRTeW1ib2xzX2l0X1NNJywgJ2dvb2cuaTE4bi5Db21wYWN0TnVtYmVyRm9ybWF0U3ltYm9sc19pdF9WQScsICdnb29nLmkxOG4uQ29tcGFjdE51bWJlckZvcm1hdFN5bWJvbHNfamFfSlAnLCAnZ29vZy5pMThuLkNvbXBhY3ROdW1iZXJGb3JtYXRTeW1ib2xzX2pnbycsICdnb29nLmkxOG4uQ29tcGFjdE51bWJlckZvcm1hdFN5bWJvbHNfamdvX0NNJywgJ2dvb2cuaTE4bi5Db21wYWN0TnVtYmVyRm9ybWF0U3ltYm9sc19qbWMnLCAnZ29vZy5pMThuLkNvbXBhY3ROdW1iZXJGb3JtYXRTeW1ib2xzX2ptY19UWicsICdnb29nLmkxOG4uQ29tcGFjdE51bWJlckZvcm1hdFN5bWJvbHNfanYnLCAnZ29vZy5pMThuLkNvbXBhY3ROdW1iZXJGb3JtYXRTeW1ib2xzX2p2X0lEJywgJ2dvb2cuaTE4bi5Db21wYWN0TnVtYmVyRm9ybWF0U3ltYm9sc19rYV9HRScsICdnb29nLmkxOG4uQ29tcGFjdE51bWJlckZvcm1hdFN5bWJvbHNfa2FiJywgJ2dvb2cuaTE4bi5Db21wYWN0TnVtYmVyRm9ybWF0U3ltYm9sc19rYWJfRFonLCAnZ29vZy5pMThuLkNvbXBhY3ROdW1iZXJGb3JtYXRTeW1ib2xzX2thbScsICdnb29nLmkxOG4uQ29tcGFjdE51bWJlckZvcm1hdFN5bWJvbHNfa2FtX0tFJywgJ2dvb2cuaTE4bi5Db21wYWN0TnVtYmVyRm9ybWF0U3ltYm9sc19rZGUnLCAnZ29vZy5pMThuLkNvbXBhY3ROdW1iZXJGb3JtYXRTeW1ib2xzX2tkZV9UWicsICdnb29nLmkxOG4uQ29tcGFjdE51bWJlckZvcm1hdFN5bWJvbHNfa2VhJywgJ2dvb2cuaTE4bi5Db21wYWN0TnVtYmVyRm9ybWF0U3ltYm9sc19rZWFfQ1YnLCAnZ29vZy5pMThuLkNvbXBhY3ROdW1iZXJGb3JtYXRTeW1ib2xzX2tocScsICdnb29nLmkxOG4uQ29tcGFjdE51bWJlckZvcm1hdFN5bWJvbHNfa2hxX01MJywgJ2dvb2cuaTE4bi5Db21wYWN0TnVtYmVyRm9ybWF0U3ltYm9sc19raScsICdnb29nLmkxOG4uQ29tcGFjdE51bWJlckZvcm1hdFN5bWJvbHNfa2lfS0UnLCAnZ29vZy5pMThuLkNvbXBhY3ROdW1iZXJGb3JtYXRTeW1ib2xzX2trX0taJywgJ2dvb2cuaTE4bi5Db21wYWN0TnVtYmVyRm9ybWF0U3ltYm9sc19ra2onLCAnZ29vZy5pMThuLkNvbXBhY3ROdW1iZXJGb3JtYXRTeW1ib2xzX2tral9DTScsICdnb29nLmkxOG4uQ29tcGFjdE51bWJlckZvcm1hdFN5bWJvbHNfa2wnLCAnZ29vZy5pMThuLkNvbXBhY3ROdW1iZXJGb3JtYXRTeW1ib2xzX2tsX0dMJywgJ2dvb2cuaTE4bi5Db21wYWN0TnVtYmVyRm9ybWF0U3ltYm9sc19rbG4nLCAnZ29vZy5pMThuLkNvbXBhY3ROdW1iZXJGb3JtYXRTeW1ib2xzX2tsbl9LRScsICdnb29nLmkxOG4uQ29tcGFjdE51bWJlckZvcm1hdFN5bWJvbHNfa21fS0gnLCAnZ29vZy5pMThuLkNvbXBhY3ROdW1iZXJGb3JtYXRTeW1ib2xzX2tuX0lOJywgJ2dvb2cuaTE4bi5Db21wYWN0TnVtYmVyRm9ybWF0U3ltYm9sc19rb19LUCcsICdnb29nLmkxOG4uQ29tcGFjdE51bWJlckZvcm1hdFN5bWJvbHNfa29fS1InLCAnZ29vZy5pMThuLkNvbXBhY3ROdW1iZXJGb3JtYXRTeW1ib2xzX2tvaycsICdnb29nLmkxOG4uQ29tcGFjdE51bWJlckZvcm1hdFN5bWJvbHNfa29rX0lOJywgJ2dvb2cuaTE4bi5Db21wYWN0TnVtYmVyRm9ybWF0U3ltYm9sc19rcycsICdnb29nLmkxOG4uQ29tcGFjdE51bWJlckZvcm1hdFN5bWJvbHNfa3NfSU4nLCAnZ29vZy5pMThuLkNvbXBhY3ROdW1iZXJGb3JtYXRTeW1ib2xzX2tzYicsICdnb29nLmkxOG4uQ29tcGFjdE51bWJlckZvcm1hdFN5bWJvbHNfa3NiX1RaJywgJ2dvb2cuaTE4bi5Db21wYWN0TnVtYmVyRm9ybWF0U3ltYm9sc19rc2YnLCAnZ29vZy5pMThuLkNvbXBhY3ROdW1iZXJGb3JtYXRTeW1ib2xzX2tzZl9DTScsICdnb29nLmkxOG4uQ29tcGFjdE51bWJlckZvcm1hdFN5bWJvbHNfa3NoJywgJ2dvb2cuaTE4bi5Db21wYWN0TnVtYmVyRm9ybWF0U3ltYm9sc19rc2hfREUnLCAnZ29vZy5pMThuLkNvbXBhY3ROdW1iZXJGb3JtYXRTeW1ib2xzX2t1JywgJ2dvb2cuaTE4bi5Db21wYWN0TnVtYmVyRm9ybWF0U3ltYm9sc19rdV9UUicsICdnb29nLmkxOG4uQ29tcGFjdE51bWJlckZvcm1hdFN5bWJvbHNfa3cnLCAnZ29vZy5pMThuLkNvbXBhY3ROdW1iZXJGb3JtYXRTeW1ib2xzX2t3X0dCJywgJ2dvb2cuaTE4bi5Db21wYWN0TnVtYmVyRm9ybWF0U3ltYm9sc19reV9LRycsICdnb29nLmkxOG4uQ29tcGFjdE51bWJlckZvcm1hdFN5bWJvbHNfbGFnJywgJ2dvb2cuaTE4bi5Db21wYWN0TnVtYmVyRm9ybWF0U3ltYm9sc19sYWdfVFonLCAnZ29vZy5pMThuLkNvbXBhY3ROdW1iZXJGb3JtYXRTeW1ib2xzX2xiJywgJ2dvb2cuaTE4bi5Db21wYWN0TnVtYmVyRm9ybWF0U3ltYm9sc19sYl9MVScsICdnb29nLmkxOG4uQ29tcGFjdE51bWJlckZvcm1hdFN5bWJvbHNfbGcnLCAnZ29vZy5pMThuLkNvbXBhY3ROdW1iZXJGb3JtYXRTeW1ib2xzX2xnX1VHJywgJ2dvb2cuaTE4bi5Db21wYWN0TnVtYmVyRm9ybWF0U3ltYm9sc19sa3QnLCAnZ29vZy5pMThuLkNvbXBhY3ROdW1iZXJGb3JtYXRTeW1ib2xzX2xrdF9VUycsICdnb29nLmkxOG4uQ29tcGFjdE51bWJlckZvcm1hdFN5bWJvbHNfbG5fQU8nLCAnZ29vZy5pMThuLkNvbXBhY3ROdW1iZXJGb3JtYXRTeW1ib2xzX2xuX0NEJywgJ2dvb2cuaTE4bi5Db21wYWN0TnVtYmVyRm9ybWF0U3ltYm9sc19sbl9DRicsICdnb29nLmkxOG4uQ29tcGFjdE51bWJlckZvcm1hdFN5bWJvbHNfbG5fQ0cnLCAnZ29vZy5pMThuLkNvbXBhY3ROdW1iZXJGb3JtYXRTeW1ib2xzX2xvX0xBJywgJ2dvb2cuaTE4bi5Db21wYWN0TnVtYmVyRm9ybWF0U3ltYm9sc19scmMnLCAnZ29vZy5pMThuLkNvbXBhY3ROdW1iZXJGb3JtYXRTeW1ib2xzX2xyY19JUScsICdnb29nLmkxOG4uQ29tcGFjdE51bWJlckZvcm1hdFN5bWJvbHNfbHJjX0lSJywgJ2dvb2cuaTE4bi5Db21wYWN0TnVtYmVyRm9ybWF0U3ltYm9sc19sdF9MVCcsICdnb29nLmkxOG4uQ29tcGFjdE51bWJlckZvcm1hdFN5bWJvbHNfbHUnLCAnZ29vZy5pMThuLkNvbXBhY3ROdW1iZXJGb3JtYXRTeW1ib2xzX2x1X0NEJywgJ2dvb2cuaTE4bi5Db21wYWN0TnVtYmVyRm9ybWF0U3ltYm9sc19sdW8nLCAnZ29vZy5pMThuLkNvbXBhY3ROdW1iZXJGb3JtYXRTeW1ib2xzX2x1b19LRScsICdnb29nLmkxOG4uQ29tcGFjdE51bWJlckZvcm1hdFN5bWJvbHNfbHV5JywgJ2dvb2cuaTE4bi5Db21wYWN0TnVtYmVyRm9ybWF0U3ltYm9sc19sdXlfS0UnLCAnZ29vZy5pMThuLkNvbXBhY3ROdW1iZXJGb3JtYXRTeW1ib2xzX2x2X0xWJywgJ2dvb2cuaTE4bi5Db21wYWN0TnVtYmVyRm9ybWF0U3ltYm9sc19tYXMnLCAnZ29vZy5pMThuLkNvbXBhY3ROdW1iZXJGb3JtYXRTeW1ib2xzX21hc19LRScsICdnb29nLmkxOG4uQ29tcGFjdE51bWJlckZvcm1hdFN5bWJvbHNfbWFzX1RaJywgJ2dvb2cuaTE4bi5Db21wYWN0TnVtYmVyRm9ybWF0U3ltYm9sc19tZXInLCAnZ29vZy5pMThuLkNvbXBhY3ROdW1iZXJGb3JtYXRTeW1ib2xzX21lcl9LRScsICdnb29nLmkxOG4uQ29tcGFjdE51bWJlckZvcm1hdFN5bWJvbHNfbWZlJywgJ2dvb2cuaTE4bi5Db21wYWN0TnVtYmVyRm9ybWF0U3ltYm9sc19tZmVfTVUnLCAnZ29vZy5pMThuLkNvbXBhY3ROdW1iZXJGb3JtYXRTeW1ib2xzX21nJywgJ2dvb2cuaTE4bi5Db21wYWN0TnVtYmVyRm9ybWF0U3ltYm9sc19tZ19NRycsICdnb29nLmkxOG4uQ29tcGFjdE51bWJlckZvcm1hdFN5bWJvbHNfbWdoJywgJ2dvb2cuaTE4bi5Db21wYWN0TnVtYmVyRm9ybWF0U3ltYm9sc19tZ2hfTVonLCAnZ29vZy5pMThuLkNvbXBhY3ROdW1iZXJGb3JtYXRTeW1ib2xzX21nbycsICdnb29nLmkxOG4uQ29tcGFjdE51bWJlckZvcm1hdFN5bWJvbHNfbWdvX0NNJywgJ2dvb2cuaTE4bi5Db21wYWN0TnVtYmVyRm9ybWF0U3ltYm9sc19taScsICdnb29nLmkxOG4uQ29tcGFjdE51bWJlckZvcm1hdFN5bWJvbHNfbWlfTlonLCAnZ29vZy5pMThuLkNvbXBhY3ROdW1iZXJGb3JtYXRTeW1ib2xzX21rX01LJywgJ2dvb2cuaTE4bi5Db21wYWN0TnVtYmVyRm9ybWF0U3ltYm9sc19tbF9JTicsICdnb29nLmkxOG4uQ29tcGFjdE51bWJlckZvcm1hdFN5bWJvbHNfbW5fTU4nLCAnZ29vZy5pMThuLkNvbXBhY3ROdW1iZXJGb3JtYXRTeW1ib2xzX21yX0lOJywgJ2dvb2cuaTE4bi5Db21wYWN0TnVtYmVyRm9ybWF0U3ltYm9sc19tc19CTicsICdnb29nLmkxOG4uQ29tcGFjdE51bWJlckZvcm1hdFN5bWJvbHNfbXNfTVknLCAnZ29vZy5pMThuLkNvbXBhY3ROdW1iZXJGb3JtYXRTeW1ib2xzX21zX1NHJywgJ2dvb2cuaTE4bi5Db21wYWN0TnVtYmVyRm9ybWF0U3ltYm9sc19tdF9NVCcsICdnb29nLmkxOG4uQ29tcGFjdE51bWJlckZvcm1hdFN5bWJvbHNfbXVhJywgJ2dvb2cuaTE4bi5Db21wYWN0TnVtYmVyRm9ybWF0U3ltYm9sc19tdWFfQ00nLCAnZ29vZy5pMThuLkNvbXBhY3ROdW1iZXJGb3JtYXRTeW1ib2xzX215X01NJywgJ2dvb2cuaTE4bi5Db21wYWN0TnVtYmVyRm9ybWF0U3ltYm9sc19tem4nLCAnZ29vZy5pMThuLkNvbXBhY3ROdW1iZXJGb3JtYXRTeW1ib2xzX216bl9JUicsICdnb29nLmkxOG4uQ29tcGFjdE51bWJlckZvcm1hdFN5bWJvbHNfbmFxJywgJ2dvb2cuaTE4bi5Db21wYWN0TnVtYmVyRm9ybWF0U3ltYm9sc19uYXFfTkEnLCAnZ29vZy5pMThuLkNvbXBhY3ROdW1iZXJGb3JtYXRTeW1ib2xzX25iX05PJywgJ2dvb2cuaTE4bi5Db21wYWN0TnVtYmVyRm9ybWF0U3ltYm9sc19uYl9TSicsICdnb29nLmkxOG4uQ29tcGFjdE51bWJlckZvcm1hdFN5bWJvbHNfbmQnLCAnZ29vZy5pMThuLkNvbXBhY3ROdW1iZXJGb3JtYXRTeW1ib2xzX25kX1pXJywgJ2dvb2cuaTE4bi5Db21wYWN0TnVtYmVyRm9ybWF0U3ltYm9sc19uZHMnLCAnZ29vZy5pMThuLkNvbXBhY3ROdW1iZXJGb3JtYXRTeW1ib2xzX25kc19ERScsICdnb29nLmkxOG4uQ29tcGFjdE51bWJlckZvcm1hdFN5bWJvbHNfbmRzX05MJywgJ2dvb2cuaTE4bi5Db21wYWN0TnVtYmVyRm9ybWF0U3ltYm9sc19uZV9JTicsICdnb29nLmkxOG4uQ29tcGFjdE51bWJlckZvcm1hdFN5bWJvbHNfbmVfTlAnLCAnZ29vZy5pMThuLkNvbXBhY3ROdW1iZXJGb3JtYXRTeW1ib2xzX25sX0FXJywgJ2dvb2cuaTE4bi5Db21wYWN0TnVtYmVyRm9ybWF0U3ltYm9sc19ubF9CRScsICdnb29nLmkxOG4uQ29tcGFjdE51bWJlckZvcm1hdFN5bWJvbHNfbmxfQlEnLCAnZ29vZy5pMThuLkNvbXBhY3ROdW1iZXJGb3JtYXRTeW1ib2xzX25sX0NXJywgJ2dvb2cuaTE4bi5Db21wYWN0TnVtYmVyRm9ybWF0U3ltYm9sc19ubF9OTCcsICdnb29nLmkxOG4uQ29tcGFjdE51bWJlckZvcm1hdFN5bWJvbHNfbmxfU1InLCAnZ29vZy5pMThuLkNvbXBhY3ROdW1iZXJGb3JtYXRTeW1ib2xzX25sX1NYJywgJ2dvb2cuaTE4bi5Db21wYWN0TnVtYmVyRm9ybWF0U3ltYm9sc19ubWcnLCAnZ29vZy5pMThuLkNvbXBhY3ROdW1iZXJGb3JtYXRTeW1ib2xzX25tZ19DTScsICdnb29nLmkxOG4uQ29tcGFjdE51bWJlckZvcm1hdFN5bWJvbHNfbm4nLCAnZ29vZy5pMThuLkNvbXBhY3ROdW1iZXJGb3JtYXRTeW1ib2xzX25uX05PJywgJ2dvb2cuaTE4bi5Db21wYWN0TnVtYmVyRm9ybWF0U3ltYm9sc19ubmgnLCAnZ29vZy5pMThuLkNvbXBhY3ROdW1iZXJGb3JtYXRTeW1ib2xzX25uaF9DTScsICdnb29nLmkxOG4uQ29tcGFjdE51bWJlckZvcm1hdFN5bWJvbHNfbnVzJywgJ2dvb2cuaTE4bi5Db21wYWN0TnVtYmVyRm9ybWF0U3ltYm9sc19udXNfU1MnLCAnZ29vZy5pMThuLkNvbXBhY3ROdW1iZXJGb3JtYXRTeW1ib2xzX255bicsICdnb29nLmkxOG4uQ29tcGFjdE51bWJlckZvcm1hdFN5bWJvbHNfbnluX1VHJywgJ2dvb2cuaTE4bi5Db21wYWN0TnVtYmVyRm9ybWF0U3ltYm9sc19vbScsICdnb29nLmkxOG4uQ29tcGFjdE51bWJlckZvcm1hdFN5bWJvbHNfb21fRVQnLCAnZ29vZy5pMThuLkNvbXBhY3ROdW1iZXJGb3JtYXRTeW1ib2xzX29tX0tFJywgJ2dvb2cuaTE4bi5Db21wYWN0TnVtYmVyRm9ybWF0U3ltYm9sc19vcl9JTicsICdnb29nLmkxOG4uQ29tcGFjdE51bWJlckZvcm1hdFN5bWJvbHNfb3MnLCAnZ29vZy5pMThuLkNvbXBhY3ROdW1iZXJGb3JtYXRTeW1ib2xzX29zX0dFJywgJ2dvb2cuaTE4bi5Db21wYWN0TnVtYmVyRm9ybWF0U3ltYm9sc19vc19SVScsICdnb29nLmkxOG4uQ29tcGFjdE51bWJlckZvcm1hdFN5bWJvbHNfcGFfQXJhYicsICdnb29nLmkxOG4uQ29tcGFjdE51bWJlckZvcm1hdFN5bWJvbHNfcGFfQXJhYl9QSycsICdnb29nLmkxOG4uQ29tcGFjdE51bWJlckZvcm1hdFN5bWJvbHNfcGFfR3VydScsICdnb29nLmkxOG4uQ29tcGFjdE51bWJlckZvcm1hdFN5bWJvbHNfcGFfR3VydV9JTicsICdnb29nLmkxOG4uQ29tcGFjdE51bWJlckZvcm1hdFN5bWJvbHNfcGxfUEwnLCAnZ29vZy5pMThuLkNvbXBhY3ROdW1iZXJGb3JtYXRTeW1ib2xzX3BzJywgJ2dvb2cuaTE4bi5Db21wYWN0TnVtYmVyRm9ybWF0U3ltYm9sc19wc19BRicsICdnb29nLmkxOG4uQ29tcGFjdE51bWJlckZvcm1hdFN5bWJvbHNfcHNfUEsnLCAnZ29vZy5pMThuLkNvbXBhY3ROdW1iZXJGb3JtYXRTeW1ib2xzX3B0X0FPJywgJ2dvb2cuaTE4bi5Db21wYWN0TnVtYmVyRm9ybWF0U3ltYm9sc19wdF9DSCcsICdnb29nLmkxOG4uQ29tcGFjdE51bWJlckZvcm1hdFN5bWJvbHNfcHRfQ1YnLCAnZ29vZy5pMThuLkNvbXBhY3ROdW1iZXJGb3JtYXRTeW1ib2xzX3B0X0dRJywgJ2dvb2cuaTE4bi5Db21wYWN0TnVtYmVyRm9ybWF0U3ltYm9sc19wdF9HVycsICdnb29nLmkxOG4uQ29tcGFjdE51bWJlckZvcm1hdFN5bWJvbHNfcHRfTFUnLCAnZ29vZy5pMThuLkNvbXBhY3ROdW1iZXJGb3JtYXRTeW1ib2xzX3B0X01PJywgJ2dvb2cuaTE4bi5Db21wYWN0TnVtYmVyRm9ybWF0U3ltYm9sc19wdF9NWicsICdnb29nLmkxOG4uQ29tcGFjdE51bWJlckZvcm1hdFN5bWJvbHNfcHRfU1QnLCAnZ29vZy5pMThuLkNvbXBhY3ROdW1iZXJGb3JtYXRTeW1ib2xzX3B0X1RMJywgJ2dvb2cuaTE4bi5Db21wYWN0TnVtYmVyRm9ybWF0U3ltYm9sc19xdScsICdnb29nLmkxOG4uQ29tcGFjdE51bWJlckZvcm1hdFN5bWJvbHNfcXVfQk8nLCAnZ29vZy5pMThuLkNvbXBhY3ROdW1iZXJGb3JtYXRTeW1ib2xzX3F1X0VDJywgJ2dvb2cuaTE4bi5Db21wYWN0TnVtYmVyRm9ybWF0U3ltYm9sc19xdV9QRScsICdnb29nLmkxOG4uQ29tcGFjdE51bWJlckZvcm1hdFN5bWJvbHNfcm0nLCAnZ29vZy5pMThuLkNvbXBhY3ROdW1iZXJGb3JtYXRTeW1ib2xzX3JtX0NIJywgJ2dvb2cuaTE4bi5Db21wYWN0TnVtYmVyRm9ybWF0U3ltYm9sc19ybicsICdnb29nLmkxOG4uQ29tcGFjdE51bWJlckZvcm1hdFN5bWJvbHNfcm5fQkknLCAnZ29vZy5pMThuLkNvbXBhY3ROdW1iZXJGb3JtYXRTeW1ib2xzX3JvX01EJywgJ2dvb2cuaTE4bi5Db21wYWN0TnVtYmVyRm9ybWF0U3ltYm9sc19yb19STycsICdnb29nLmkxOG4uQ29tcGFjdE51bWJlckZvcm1hdFN5bWJvbHNfcm9mJywgJ2dvb2cuaTE4bi5Db21wYWN0TnVtYmVyRm9ybWF0U3ltYm9sc19yb2ZfVFonLCAnZ29vZy5pMThuLkNvbXBhY3ROdW1iZXJGb3JtYXRTeW1ib2xzX3J1X0JZJywgJ2dvb2cuaTE4bi5Db21wYWN0TnVtYmVyRm9ybWF0U3ltYm9sc19ydV9LRycsICdnb29nLmkxOG4uQ29tcGFjdE51bWJlckZvcm1hdFN5bWJvbHNfcnVfS1onLCAnZ29vZy5pMThuLkNvbXBhY3ROdW1iZXJGb3JtYXRTeW1ib2xzX3J1X01EJywgJ2dvb2cuaTE4bi5Db21wYWN0TnVtYmVyRm9ybWF0U3ltYm9sc19ydV9SVScsICdnb29nLmkxOG4uQ29tcGFjdE51bWJlckZvcm1hdFN5bWJvbHNfcnVfVUEnLCAnZ29vZy5pMThuLkNvbXBhY3ROdW1iZXJGb3JtYXRTeW1ib2xzX3J3JywgJ2dvb2cuaTE4bi5Db21wYWN0TnVtYmVyRm9ybWF0U3ltYm9sc19yd19SVycsICdnb29nLmkxOG4uQ29tcGFjdE51bWJlckZvcm1hdFN5bWJvbHNfcndrJywgJ2dvb2cuaTE4bi5Db21wYWN0TnVtYmVyRm9ybWF0U3ltYm9sc19yd2tfVFonLCAnZ29vZy5pMThuLkNvbXBhY3ROdW1iZXJGb3JtYXRTeW1ib2xzX3NhaCcsICdnb29nLmkxOG4uQ29tcGFjdE51bWJlckZvcm1hdFN5bWJvbHNfc2FoX1JVJywgJ2dvb2cuaTE4bi5Db21wYWN0TnVtYmVyRm9ybWF0U3ltYm9sc19zYXEnLCAnZ29vZy5pMThuLkNvbXBhY3ROdW1iZXJGb3JtYXRTeW1ib2xzX3NhcV9LRScsICdnb29nLmkxOG4uQ29tcGFjdE51bWJlckZvcm1hdFN5bWJvbHNfc2JwJywgJ2dvb2cuaTE4bi5Db21wYWN0TnVtYmVyRm9ybWF0U3ltYm9sc19zYnBfVFonLCAnZ29vZy5pMThuLkNvbXBhY3ROdW1iZXJGb3JtYXRTeW1ib2xzX3NkJywgJ2dvb2cuaTE4bi5Db21wYWN0TnVtYmVyRm9ybWF0U3ltYm9sc19zZF9QSycsICdnb29nLmkxOG4uQ29tcGFjdE51bWJlckZvcm1hdFN5bWJvbHNfc2UnLCAnZ29vZy5pMThuLkNvbXBhY3ROdW1iZXJGb3JtYXRTeW1ib2xzX3NlX0ZJJywgJ2dvb2cuaTE4bi5Db21wYWN0TnVtYmVyRm9ybWF0U3ltYm9sc19zZV9OTycsICdnb29nLmkxOG4uQ29tcGFjdE51bWJlckZvcm1hdFN5bWJvbHNfc2VfU0UnLCAnZ29vZy5pMThuLkNvbXBhY3ROdW1iZXJGb3JtYXRTeW1ib2xzX3NlaCcsICdnb29nLmkxOG4uQ29tcGFjdE51bWJlckZvcm1hdFN5bWJvbHNfc2VoX01aJywgJ2dvb2cuaTE4bi5Db21wYWN0TnVtYmVyRm9ybWF0U3ltYm9sc19zZXMnLCAnZ29vZy5pMThuLkNvbXBhY3ROdW1iZXJGb3JtYXRTeW1ib2xzX3Nlc19NTCcsICdnb29nLmkxOG4uQ29tcGFjdE51bWJlckZvcm1hdFN5bWJvbHNfc2cnLCAnZ29vZy5pMThuLkNvbXBhY3ROdW1iZXJGb3JtYXRTeW1ib2xzX3NnX0NGJywgJ2dvb2cuaTE4bi5Db21wYWN0TnVtYmVyRm9ybWF0U3ltYm9sc19zaGknLCAnZ29vZy5pMThuLkNvbXBhY3ROdW1iZXJGb3JtYXRTeW1ib2xzX3NoaV9MYXRuJywgJ2dvb2cuaTE4bi5Db21wYWN0TnVtYmVyRm9ybWF0U3ltYm9sc19zaGlfTGF0bl9NQScsICdnb29nLmkxOG4uQ29tcGFjdE51bWJlckZvcm1hdFN5bWJvbHNfc2hpX1RmbmcnLCAnZ29vZy5pMThuLkNvbXBhY3ROdW1iZXJGb3JtYXRTeW1ib2xzX3NoaV9UZm5nX01BJywgJ2dvb2cuaTE4bi5Db21wYWN0TnVtYmVyRm9ybWF0U3ltYm9sc19zaV9MSycsICdnb29nLmkxOG4uQ29tcGFjdE51bWJlckZvcm1hdFN5bWJvbHNfc2tfU0snLCAnZ29vZy5pMThuLkNvbXBhY3ROdW1iZXJGb3JtYXRTeW1ib2xzX3NsX1NJJywgJ2dvb2cuaTE4bi5Db21wYWN0TnVtYmVyRm9ybWF0U3ltYm9sc19zbW4nLCAnZ29vZy5pMThuLkNvbXBhY3ROdW1iZXJGb3JtYXRTeW1ib2xzX3Ntbl9GSScsICdnb29nLmkxOG4uQ29tcGFjdE51bWJlckZvcm1hdFN5bWJvbHNfc24nLCAnZ29vZy5pMThuLkNvbXBhY3ROdW1iZXJGb3JtYXRTeW1ib2xzX3NuX1pXJywgJ2dvb2cuaTE4bi5Db21wYWN0TnVtYmVyRm9ybWF0U3ltYm9sc19zbycsICdnb29nLmkxOG4uQ29tcGFjdE51bWJlckZvcm1hdFN5bWJvbHNfc29fREonLCAnZ29vZy5pMThuLkNvbXBhY3ROdW1iZXJGb3JtYXRTeW1ib2xzX3NvX0VUJywgJ2dvb2cuaTE4bi5Db21wYWN0TnVtYmVyRm9ybWF0U3ltYm9sc19zb19LRScsICdnb29nLmkxOG4uQ29tcGFjdE51bWJlckZvcm1hdFN5bWJvbHNfc29fU08nLCAnZ29vZy5pMThuLkNvbXBhY3ROdW1iZXJGb3JtYXRTeW1ib2xzX3NxX0FMJywgJ2dvb2cuaTE4bi5Db21wYWN0TnVtYmVyRm9ybWF0U3ltYm9sc19zcV9NSycsICdnb29nLmkxOG4uQ29tcGFjdE51bWJlckZvcm1hdFN5bWJvbHNfc3FfWEsnLCAnZ29vZy5pMThuLkNvbXBhY3ROdW1iZXJGb3JtYXRTeW1ib2xzX3NyX0N5cmwnLCAnZ29vZy5pMThuLkNvbXBhY3ROdW1iZXJGb3JtYXRTeW1ib2xzX3NyX0N5cmxfQkEnLCAnZ29vZy5pMThuLkNvbXBhY3ROdW1iZXJGb3JtYXRTeW1ib2xzX3NyX0N5cmxfTUUnLCAnZ29vZy5pMThuLkNvbXBhY3ROdW1iZXJGb3JtYXRTeW1ib2xzX3NyX0N5cmxfUlMnLCAnZ29vZy5pMThuLkNvbXBhY3ROdW1iZXJGb3JtYXRTeW1ib2xzX3NyX0N5cmxfWEsnLCAnZ29vZy5pMThuLkNvbXBhY3ROdW1iZXJGb3JtYXRTeW1ib2xzX3NyX0xhdG5fQkEnLCAnZ29vZy5pMThuLkNvbXBhY3ROdW1iZXJGb3JtYXRTeW1ib2xzX3NyX0xhdG5fTUUnLCAnZ29vZy5pMThuLkNvbXBhY3ROdW1iZXJGb3JtYXRTeW1ib2xzX3NyX0xhdG5fUlMnLCAnZ29vZy5pMThuLkNvbXBhY3ROdW1iZXJGb3JtYXRTeW1ib2xzX3NyX0xhdG5fWEsnLCAnZ29vZy5pMThuLkNvbXBhY3ROdW1iZXJGb3JtYXRTeW1ib2xzX3N2X0FYJywgJ2dvb2cuaTE4bi5Db21wYWN0TnVtYmVyRm9ybWF0U3ltYm9sc19zdl9GSScsICdnb29nLmkxOG4uQ29tcGFjdE51bWJlckZvcm1hdFN5bWJvbHNfc3ZfU0UnLCAnZ29vZy5pMThuLkNvbXBhY3ROdW1iZXJGb3JtYXRTeW1ib2xzX3N3X0NEJywgJ2dvb2cuaTE4bi5Db21wYWN0TnVtYmVyRm9ybWF0U3ltYm9sc19zd19LRScsICdnb29nLmkxOG4uQ29tcGFjdE51bWJlckZvcm1hdFN5bWJvbHNfc3dfVFonLCAnZ29vZy5pMThuLkNvbXBhY3ROdW1iZXJGb3JtYXRTeW1ib2xzX3N3X1VHJywgJ2dvb2cuaTE4bi5Db21wYWN0TnVtYmVyRm9ybWF0U3ltYm9sc190YV9JTicsICdnb29nLmkxOG4uQ29tcGFjdE51bWJlckZvcm1hdFN5bWJvbHNfdGFfTEsnLCAnZ29vZy5pMThuLkNvbXBhY3ROdW1iZXJGb3JtYXRTeW1ib2xzX3RhX01ZJywgJ2dvb2cuaTE4bi5Db21wYWN0TnVtYmVyRm9ybWF0U3ltYm9sc190YV9TRycsICdnb29nLmkxOG4uQ29tcGFjdE51bWJlckZvcm1hdFN5bWJvbHNfdGVfSU4nLCAnZ29vZy5pMThuLkNvbXBhY3ROdW1iZXJGb3JtYXRTeW1ib2xzX3RlbycsICdnb29nLmkxOG4uQ29tcGFjdE51bWJlckZvcm1hdFN5bWJvbHNfdGVvX0tFJywgJ2dvb2cuaTE4bi5Db21wYWN0TnVtYmVyRm9ybWF0U3ltYm9sc190ZW9fVUcnLCAnZ29vZy5pMThuLkNvbXBhY3ROdW1iZXJGb3JtYXRTeW1ib2xzX3RnJywgJ2dvb2cuaTE4bi5Db21wYWN0TnVtYmVyRm9ybWF0U3ltYm9sc190Z19USicsICdnb29nLmkxOG4uQ29tcGFjdE51bWJlckZvcm1hdFN5bWJvbHNfdGhfVEgnLCAnZ29vZy5pMThuLkNvbXBhY3ROdW1iZXJGb3JtYXRTeW1ib2xzX3RpJywgJ2dvb2cuaTE4bi5Db21wYWN0TnVtYmVyRm9ybWF0U3ltYm9sc190aV9FUicsICdnb29nLmkxOG4uQ29tcGFjdE51bWJlckZvcm1hdFN5bWJvbHNfdGlfRVQnLCAnZ29vZy5pMThuLkNvbXBhY3ROdW1iZXJGb3JtYXRTeW1ib2xzX3RrJywgJ2dvb2cuaTE4bi5Db21wYWN0TnVtYmVyRm9ybWF0U3ltYm9sc190a19UTScsICdnb29nLmkxOG4uQ29tcGFjdE51bWJlckZvcm1hdFN5bWJvbHNfdG8nLCAnZ29vZy5pMThuLkNvbXBhY3ROdW1iZXJGb3JtYXRTeW1ib2xzX3RvX1RPJywgJ2dvb2cuaTE4bi5Db21wYWN0TnVtYmVyRm9ybWF0U3ltYm9sc190cl9DWScsICdnb29nLmkxOG4uQ29tcGFjdE51bWJlckZvcm1hdFN5bWJvbHNfdHJfVFInLCAnZ29vZy5pMThuLkNvbXBhY3ROdW1iZXJGb3JtYXRTeW1ib2xzX3R0JywgJ2dvb2cuaTE4bi5Db21wYWN0TnVtYmVyRm9ybWF0U3ltYm9sc190dF9SVScsICdnb29nLmkxOG4uQ29tcGFjdE51bWJlckZvcm1hdFN5bWJvbHNfdHdxJywgJ2dvb2cuaTE4bi5Db21wYWN0TnVtYmVyRm9ybWF0U3ltYm9sc190d3FfTkUnLCAnZ29vZy5pMThuLkNvbXBhY3ROdW1iZXJGb3JtYXRTeW1ib2xzX3R6bScsICdnb29nLmkxOG4uQ29tcGFjdE51bWJlckZvcm1hdFN5bWJvbHNfdHptX01BJywgJ2dvb2cuaTE4bi5Db21wYWN0TnVtYmVyRm9ybWF0U3ltYm9sc191ZycsICdnb29nLmkxOG4uQ29tcGFjdE51bWJlckZvcm1hdFN5bWJvbHNfdWdfQ04nLCAnZ29vZy5pMThuLkNvbXBhY3ROdW1iZXJGb3JtYXRTeW1ib2xzX3VrX1VBJywgJ2dvb2cuaTE4bi5Db21wYWN0TnVtYmVyRm9ybWF0U3ltYm9sc191cl9JTicsICdnb29nLmkxOG4uQ29tcGFjdE51bWJlckZvcm1hdFN5bWJvbHNfdXJfUEsnLCAnZ29vZy5pMThuLkNvbXBhY3ROdW1iZXJGb3JtYXRTeW1ib2xzX3V6X0FyYWInLCAnZ29vZy5pMThuLkNvbXBhY3ROdW1iZXJGb3JtYXRTeW1ib2xzX3V6X0FyYWJfQUYnLCAnZ29vZy5pMThuLkNvbXBhY3ROdW1iZXJGb3JtYXRTeW1ib2xzX3V6X0N5cmwnLCAnZ29vZy5pMThuLkNvbXBhY3ROdW1iZXJGb3JtYXRTeW1ib2xzX3V6X0N5cmxfVVonLCAnZ29vZy5pMThuLkNvbXBhY3ROdW1iZXJGb3JtYXRTeW1ib2xzX3V6X0xhdG4nLCAnZ29vZy5pMThuLkNvbXBhY3ROdW1iZXJGb3JtYXRTeW1ib2xzX3V6X0xhdG5fVVonLCAnZ29vZy5pMThuLkNvbXBhY3ROdW1iZXJGb3JtYXRTeW1ib2xzX3ZhaScsICdnb29nLmkxOG4uQ29tcGFjdE51bWJlckZvcm1hdFN5bWJvbHNfdmFpX0xhdG4nLCAnZ29vZy5pMThuLkNvbXBhY3ROdW1iZXJGb3JtYXRTeW1ib2xzX3ZhaV9MYXRuX0xSJywgJ2dvb2cuaTE4bi5Db21wYWN0TnVtYmVyRm9ybWF0U3ltYm9sc192YWlfVmFpaScsICdnb29nLmkxOG4uQ29tcGFjdE51bWJlckZvcm1hdFN5bWJvbHNfdmFpX1ZhaWlfTFInLCAnZ29vZy5pMThuLkNvbXBhY3ROdW1iZXJGb3JtYXRTeW1ib2xzX3ZpX1ZOJywgJ2dvb2cuaTE4bi5Db21wYWN0TnVtYmVyRm9ybWF0U3ltYm9sc192dW4nLCAnZ29vZy5pMThuLkNvbXBhY3ROdW1iZXJGb3JtYXRTeW1ib2xzX3Z1bl9UWicsICdnb29nLmkxOG4uQ29tcGFjdE51bWJlckZvcm1hdFN5bWJvbHNfd2FlJywgJ2dvb2cuaTE4bi5Db21wYWN0TnVtYmVyRm9ybWF0U3ltYm9sc193YWVfQ0gnLCAnZ29vZy5pMThuLkNvbXBhY3ROdW1iZXJGb3JtYXRTeW1ib2xzX3dvJywgJ2dvb2cuaTE4bi5Db21wYWN0TnVtYmVyRm9ybWF0U3ltYm9sc193b19TTicsICdnb29nLmkxOG4uQ29tcGFjdE51bWJlckZvcm1hdFN5bWJvbHNfeGgnLCAnZ29vZy5pMThuLkNvbXBhY3ROdW1iZXJGb3JtYXRTeW1ib2xzX3hoX1pBJywgJ2dvb2cuaTE4bi5Db21wYWN0TnVtYmVyRm9ybWF0U3ltYm9sc194b2cnLCAnZ29vZy5pMThuLkNvbXBhY3ROdW1iZXJGb3JtYXRTeW1ib2xzX3hvZ19VRycsICdnb29nLmkxOG4uQ29tcGFjdE51bWJlckZvcm1hdFN5bWJvbHNfeWF2JywgJ2dvb2cuaTE4bi5Db21wYWN0TnVtYmVyRm9ybWF0U3ltYm9sc195YXZfQ00nLCAnZ29vZy5pMThuLkNvbXBhY3ROdW1iZXJGb3JtYXRTeW1ib2xzX3lpJywgJ2dvb2cuaTE4bi5Db21wYWN0TnVtYmVyRm9ybWF0U3ltYm9sc195aV8wMDEnLCAnZ29vZy5pMThuLkNvbXBhY3ROdW1iZXJGb3JtYXRTeW1ib2xzX3lvJywgJ2dvb2cuaTE4bi5Db21wYWN0TnVtYmVyRm9ybWF0U3ltYm9sc195b19CSicsICdnb29nLmkxOG4uQ29tcGFjdE51bWJlckZvcm1hdFN5bWJvbHNfeW9fTkcnLCAnZ29vZy5pMThuLkNvbXBhY3ROdW1iZXJGb3JtYXRTeW1ib2xzX3l1ZScsICdnb29nLmkxOG4uQ29tcGFjdE51bWJlckZvcm1hdFN5bWJvbHNfeXVlX0hhbnMnLCAnZ29vZy5pMThuLkNvbXBhY3ROdW1iZXJGb3JtYXRTeW1ib2xzX3l1ZV9IYW5zX0NOJywgJ2dvb2cuaTE4bi5Db21wYWN0TnVtYmVyRm9ybWF0U3ltYm9sc195dWVfSGFudCcsICdnb29nLmkxOG4uQ29tcGFjdE51bWJlckZvcm1hdFN5bWJvbHNfeXVlX0hhbnRfSEsnLCAnZ29vZy5pMThuLkNvbXBhY3ROdW1iZXJGb3JtYXRTeW1ib2xzX3pnaCcsICdnb29nLmkxOG4uQ29tcGFjdE51bWJlckZvcm1hdFN5bWJvbHNfemdoX01BJywgJ2dvb2cuaTE4bi5Db21wYWN0TnVtYmVyRm9ybWF0U3ltYm9sc196aF9IYW5zJywgJ2dvb2cuaTE4bi5Db21wYWN0TnVtYmVyRm9ybWF0U3ltYm9sc196aF9IYW5zX0NOJywgJ2dvb2cuaTE4bi5Db21wYWN0TnVtYmVyRm9ybWF0U3ltYm9sc196aF9IYW5zX0hLJywgJ2dvb2cuaTE4bi5Db21wYWN0TnVtYmVyRm9ybWF0U3ltYm9sc196aF9IYW5zX01PJywgJ2dvb2cuaTE4bi5Db21wYWN0TnVtYmVyRm9ybWF0U3ltYm9sc196aF9IYW5zX1NHJywgJ2dvb2cuaTE4bi5Db21wYWN0TnVtYmVyRm9ybWF0U3ltYm9sc196aF9IYW50JywgJ2dvb2cuaTE4bi5Db21wYWN0TnVtYmVyRm9ybWF0U3ltYm9sc196aF9IYW50X0hLJywgJ2dvb2cuaTE4bi5Db21wYWN0TnVtYmVyRm9ybWF0U3ltYm9sc196aF9IYW50X01PJywgJ2dvb2cuaTE4bi5Db21wYWN0TnVtYmVyRm9ybWF0U3ltYm9sc196aF9IYW50X1RXJywgJ2dvb2cuaTE4bi5Db21wYWN0TnVtYmVyRm9ybWF0U3ltYm9sc196dV9aQSddLCBbJ2dvb2cuaTE4bi5Db21wYWN0TnVtYmVyRm9ybWF0U3ltYm9scyddLCB7fSk7Cmdvb2cuYWRkRGVwZW5kZW5jeSgnaTE4bi9jdXJyZW5jeS5qcycsIFsnZ29vZy5pMThuLmN1cnJlbmN5JywgJ2dvb2cuaTE4bi5jdXJyZW5jeS5DdXJyZW5jeUluZm8nLCAnZ29vZy5pMThuLmN1cnJlbmN5LkN1cnJlbmN5SW5mb1RpZXIyJ10sIFtdLCB7J2xhbmcnOiAnZXM2J30pOwpnb29nLmFkZERlcGVuZGVuY3koJ2kxOG4vY3VycmVuY3lfdGVzdC5qcycsIFsnZ29vZy5pMThuLmN1cnJlbmN5VGVzdCddLCBbJ2dvb2cuaTE4bi5OdW1iZXJGb3JtYXQnLCAnZ29vZy5pMThuLmN1cnJlbmN5JywgJ2dvb2cuaTE4bi5jdXJyZW5jeS5DdXJyZW5jeUluZm8nLCAnZ29vZy5vYmplY3QnLCAnZ29vZy50ZXN0aW5nLlByb3BlcnR5UmVwbGFjZXInLCAnZ29vZy50ZXN0aW5nLnRlc3RTdWl0ZSddLCB7J2xhbmcnOiAnZXM2JywgJ21vZHVsZSc6ICdnb29nJ30pOwpnb29nLmFkZERlcGVuZGVuY3koJ2kxOG4vY3VycmVuY3ljb2RlbWFwLmpzJywgWydnb29nLmkxOG4uY3VycmVuY3lDb2RlTWFwJywgJ2dvb2cuaTE4bi5jdXJyZW5jeUNvZGVNYXBUaWVyMiddLCBbXSwge30pOwpnb29nLmFkZERlcGVuZGVuY3koJ2kxOG4vZGF0ZWludGVydmFsZm9ybWF0LmpzJywgWydnb29nLmkxOG4uRGF0ZUludGVydmFsRm9ybWF0J10sIFsnZ29vZy5hcnJheScsICdnb29nLmFzc2VydHMnLCAnZ29vZy5kYXRlLkRhdGVMaWtlJywgJ2dvb2cuZGF0ZS5EYXRlUmFuZ2UnLCAnZ29vZy5kYXRlLkRhdGVUaW1lJywgJ2dvb2cuZGF0ZS5JbnRlcnZhbCcsICdnb29nLmkxOG4uRGF0ZVRpbWVGb3JtYXQnLCAnZ29vZy5pMThuLkRhdGVUaW1lU3ltYm9scycsICdnb29nLmkxOG4uRGF0ZVRpbWVTeW1ib2xzVHlwZScsICdnb29nLmkxOG4uVGltZVpvbmUnLCAnZ29vZy5pMThuLmRhdGVJbnRlcnZhbFN5bWJvbHMnLCAnZ29vZy5vYmplY3QnXSwgeydsYW5nJzogJ2VzNScsICdtb2R1bGUnOiAnZ29vZyd9KTsKZ29vZy5hZGREZXBlbmRlbmN5KCdpMThuL2RhdGVpbnRlcnZhbGZvcm1hdF90ZXN0LmpzJywgWydnb29nLmkxOG4uRGF0ZUludGVydmFsRm9ybWF0VGVzdCddLCBbJ2dvb2cuZGF0ZS5EYXRlJywgJ2dvb2cuZGF0ZS5EYXRlUmFuZ2UnLCAnZ29vZy5kYXRlLkRhdGVUaW1lJywgJ2dvb2cuZGF0ZS5JbnRlcnZhbCcsICdnb29nLmkxOG4uRGF0ZUludGVydmFsRm9ybWF0JywgJ2dvb2cuaTE4bi5EYXRlVGltZUZvcm1hdCcsICdnb29nLmkxOG4uRGF0ZVRpbWVTeW1ib2xzX2FyX0VHJywgJ2dvb2cuaTE4bi5EYXRlVGltZVN5bWJvbHNfZW4nLCAnZ29vZy5pMThuLkRhdGVUaW1lU3ltYm9sc19mcl9DQScsICdnb29nLmkxOG4uRGF0ZVRpbWVTeW1ib2xzX2dsJywgJ2dvb2cuaTE4bi5EYXRlVGltZVN5bWJvbHNfaGknLCAnZ29vZy5pMThuLkRhdGVUaW1lU3ltYm9sc196aCcsICdnb29nLmkxOG4uVGltZVpvbmUnLCAnZ29vZy5pMThuLmRhdGVJbnRlcnZhbFBhdHRlcm5zJywgJ2dvb2cuaTE4bi5kYXRlSW50ZXJ2YWxTeW1ib2xzJywgJ2dvb2cub2JqZWN0JywgJ2dvb2cudGVzdGluZy50ZXN0U3VpdGUnXSwgeydsYW5nJzogJ2VzNicsICdtb2R1bGUnOiAnZ29vZyd9KTsKZ29vZy5hZGREZXBlbmRlbmN5KCdpMThuL2RhdGVpbnRlcnZhbHBhdHRlcm5zLmpzJywgWydnb29nLmkxOG4uZGF0ZUludGVydmFsUGF0dGVybnMnXSwgWydnb29nLmkxOG4uZGF0ZUludGVydmFsU3ltYm9scyddLCB7J21vZHVsZSc6ICdnb29nJ30pOwpnb29nLmFkZERlcGVuZGVuY3koJ2kxOG4vZGF0ZWludGVydmFscGF0dGVybnNleHQuanMnLCBbJ2dvb2cuaTE4bi5kYXRlSW50ZXJ2YWxQYXR0ZXJuc0V4dCddLCBbJ2dvb2cuaTE4bi5kYXRlSW50ZXJ2YWxQYXR0ZXJucyddLCB7J21vZHVsZSc6ICdnb29nJ30pOwpnb29nLmFkZERlcGVuZGVuY3koJ2kxOG4vZGF0ZWludGVydmFsc3ltYm9scy5qcycsIFsnZ29vZy5pMThuLmRhdGVJbnRlcnZhbFN5bWJvbHMnXSwgW10sIHsnbGFuZyc6ICdlczYnLCAnbW9kdWxlJzogJ2dvb2cnfSk7Cmdvb2cuYWRkRGVwZW5kZW5jeSgnaTE4bi9kYXRlaW50ZXJ2YWxzeW1ib2xzZXh0LmpzJywgWydnb29nLmkxOG4uZGF0ZUludGVydmFsU3ltYm9sc0V4dCddLCBbJ2dvb2cuaTE4bi5kYXRlSW50ZXJ2YWxTeW1ib2xzJ10sIHsnbW9kdWxlJzogJ2dvb2cnfSk7Cmdvb2cuYWRkRGVwZW5kZW5jeSgnaTE4bi9kYXRldGltZWZvcm1hdC5qcycsIFsnZ29vZy5pMThuLkRhdGVUaW1lRm9ybWF0JywgJ2dvb2cuaTE4bi5EYXRlVGltZUZvcm1hdC5Gb3JtYXQnXSwgWydnb29nLmFzc2VydHMnLCAnZ29vZy5kYXRlJywgJ2dvb2cuaTE4bi5EYXRlVGltZVN5bWJvbHMnLCAnZ29vZy5pMThuLlRpbWVab25lJywgJ2dvb2cuc3RyaW5nJ10sIHt9KTsKZ29vZy5hZGREZXBlbmRlbmN5KCdpMThuL2RhdGV0aW1lZm9ybWF0X3Rlc3QuanMnLCBbJ2dvb2cuaTE4bi5EYXRlVGltZUZvcm1hdFRlc3QnXSwgWydnb29nLmRhdGUuRGF0ZScsICdnb29nLmRhdGUuRGF0ZVRpbWUnLCAnZ29vZy5pMThuLkRhdGVUaW1lRm9ybWF0JywgJ2dvb2cuaTE4bi5EYXRlVGltZVBhdHRlcm5zJywgJ2dvb2cuaTE4bi5EYXRlVGltZVBhdHRlcm5zX2FyX0VHJywgJ2dvb2cuaTE4bi5EYXRlVGltZVBhdHRlcm5zX2JnJywgJ2dvb2cuaTE4bi5EYXRlVGltZVBhdHRlcm5zX2RlJywgJ2dvb2cuaTE4bi5EYXRlVGltZVBhdHRlcm5zX2VuJywgJ2dvb2cuaTE4bi5EYXRlVGltZVBhdHRlcm5zX2VuX1hBJywgJ2dvb2cuaTE4bi5EYXRlVGltZVBhdHRlcm5zX2ZhJywgJ2dvb2cuaTE4bi5EYXRlVGltZVBhdHRlcm5zX2ZyJywgJ2dvb2cuaTE4bi5EYXRlVGltZVBhdHRlcm5zX2phJywgJ2dvb2cuaTE4bi5EYXRlVGltZVBhdHRlcm5zX3N2JywgJ2dvb2cuaTE4bi5EYXRlVGltZVBhdHRlcm5zX3poX0hLJywgJ2dvb2cuaTE4bi5EYXRlVGltZVBhdHRlcm5zX3poX0hhbnRfVFcnLCAnZ29vZy5pMThuLkRhdGVUaW1lU3ltYm9scycsICdnb29nLmkxOG4uRGF0ZVRpbWVTeW1ib2xzX2FyX0FFJywgJ2dvb2cuaTE4bi5EYXRlVGltZVN5bWJvbHNfYXJfRUcnLCAnZ29vZy5pMThuLkRhdGVUaW1lU3ltYm9sc19hcl9TQScsICdnb29nLmkxOG4uRGF0ZVRpbWVTeW1ib2xzX2JuX0JEJywgJ2dvb2cuaTE4bi5EYXRlVGltZVN5bWJvbHNfZGUnLCAnZ29vZy5pMThuLkRhdGVUaW1lU3ltYm9sc19lbicsICdnb29nLmkxOG4uRGF0ZVRpbWVTeW1ib2xzX2VuX0dCJywgJ2dvb2cuaTE4bi5EYXRlVGltZVN5bWJvbHNfZW5fSUUnLCAnZ29vZy5pMThuLkRhdGVUaW1lU3ltYm9sc19lbl9JTicsICdnb29nLmkxOG4uRGF0ZVRpbWVTeW1ib2xzX2VuX1VTJywgJ2dvb2cuaTE4bi5EYXRlVGltZVN5bWJvbHNfZmEnLCAnZ29vZy5pMThuLkRhdGVUaW1lU3ltYm9sc19mcicsICdnb29nLmkxOG4uRGF0ZVRpbWVTeW1ib2xzX2ZyX0RKJywgJ2dvb2cuaTE4bi5EYXRlVGltZVN5bWJvbHNfaGVfSUwnLCAnZ29vZy5pMThuLkRhdGVUaW1lU3ltYm9sc19qYScsICdnb29nLmkxOG4uRGF0ZVRpbWVTeW1ib2xzX3JvX1JPJywgJ2dvb2cuaTE4bi5EYXRlVGltZVN5bWJvbHNfc3YnLCAnZ29vZy5pMThuLlRpbWVab25lJywgJ2dvb2cudGVzdGluZy50ZXN0U3VpdGUnXSwgeydsYW5nJzogJ2VzNicsICdtb2R1bGUnOiAnZ29vZyd9KTsKZ29vZy5hZGREZXBlbmRlbmN5KCdpMThuL2RhdGV0aW1lcGFyc2UuanMnLCBbJ2dvb2cuaTE4bi5EYXRlVGltZVBhcnNlJ10sIFsnZ29vZy5hc3NlcnRzJywgJ2dvb2cuZGF0ZScsICdnb29nLmkxOG4uRGF0ZVRpbWVGb3JtYXQnLCAnZ29vZy5pMThuLkRhdGVUaW1lU3ltYm9scyddLCB7fSk7Cmdvb2cuYWRkRGVwZW5kZW5jeSgnaTE4bi9kYXRldGltZXBhcnNlX3Rlc3QuanMnLCBbJ2dvb2cuaTE4bi5EYXRlVGltZVBhcnNlVGVzdCddLCBbJ2dvb2cuZGF0ZS5EYXRlJywgJ2dvb2cuaTE4bi5EYXRlVGltZUZvcm1hdCcsICdnb29nLmkxOG4uRGF0ZVRpbWVQYXJzZScsICdnb29nLmkxOG4uRGF0ZVRpbWVTeW1ib2xzJywgJ2dvb2cuaTE4bi5EYXRlVGltZVN5bWJvbHNfZW4nLCAnZ29vZy5pMThuLkRhdGVUaW1lU3ltYm9sc19mYScsICdnb29nLmkxOG4uRGF0ZVRpbWVTeW1ib2xzX2ZyJywgJ2dvb2cuaTE4bi5EYXRlVGltZVN5bWJvbHNfcGwnLCAnZ29vZy5pMThuLkRhdGVUaW1lU3ltYm9sc196aCcsICdnb29nLnRlc3RpbmcuRXhwZWN0ZWRGYWlsdXJlcycsICdnb29nLnRlc3RpbmcudGVzdFN1aXRlJywgJ2dvb2cudXNlckFnZW50J10sIHsnbGFuZyc6ICdlczYnLCAnbW9kdWxlJzogJ2dvb2cnfSk7Cmdvb2cuYWRkRGVwZW5kZW5jeSgnaTE4bi9kYXRldGltZXBhdHRlcm5zLmpzJywgWydnb29nLmkxOG4uRGF0ZVRpbWVQYXR0ZXJucycsICdnb29nLmkxOG4uRGF0ZVRpbWVQYXR0ZXJuc19hZicsICdnb29nLmkxOG4uRGF0ZVRpbWVQYXR0ZXJuc19hbScsICdnb29nLmkxOG4uRGF0ZVRpbWVQYXR0ZXJuc19hcicsICdnb29nLmkxOG4uRGF0ZVRpbWVQYXR0ZXJuc19hcl9EWicsICdnb29nLmkxOG4uRGF0ZVRpbWVQYXR0ZXJuc19hcl9FRycsICdnb29nLmkxOG4uRGF0ZVRpbWVQYXR0ZXJuc19heicsICdnb29nLmkxOG4uRGF0ZVRpbWVQYXR0ZXJuc19iZScsICdnb29nLmkxOG4uRGF0ZVRpbWVQYXR0ZXJuc19iZycsICdnb29nLmkxOG4uRGF0ZVRpbWVQYXR0ZXJuc19ibicsICdnb29nLmkxOG4uRGF0ZVRpbWVQYXR0ZXJuc19icicsICdnb29nLmkxOG4uRGF0ZVRpbWVQYXR0ZXJuc19icycsICdnb29nLmkxOG4uRGF0ZVRpbWVQYXR0ZXJuc19jYScsICdnb29nLmkxOG4uRGF0ZVRpbWVQYXR0ZXJuc19jaHInLCAnZ29vZy5pMThuLkRhdGVUaW1lUGF0dGVybnNfY3MnLCAnZ29vZy5pMThuLkRhdGVUaW1lUGF0dGVybnNfY3knLCAnZ29vZy5pMThuLkRhdGVUaW1lUGF0dGVybnNfZGEnLCAnZ29vZy5pMThuLkRhdGVUaW1lUGF0dGVybnNfZGUnLCAnZ29vZy5pMThuLkRhdGVUaW1lUGF0dGVybnNfZGVfQVQnLCAnZ29vZy5pMThuLkRhdGVUaW1lUGF0dGVybnNfZGVfQ0gnLCAnZ29vZy5pMThuLkRhdGVUaW1lUGF0dGVybnNfZWwnLCAnZ29vZy5pMThuLkRhdGVUaW1lUGF0dGVybnNfZW4nLCAnZ29vZy5pMThuLkRhdGVUaW1lUGF0dGVybnNfZW5fQVUnLCAnZ29vZy5pMThuLkRhdGVUaW1lUGF0dGVybnNfZW5fQ0EnLCAnZ29vZy5pMThuLkRhdGVUaW1lUGF0dGVybnNfZW5fR0InLCAnZ29vZy5pMThuLkRhdGVUaW1lUGF0dGVybnNfZW5fSUUnLCAnZ29vZy5pMThuLkRhdGVUaW1lUGF0dGVybnNfZW5fSU4nLCAnZ29vZy5pMThuLkRhdGVUaW1lUGF0dGVybnNfZW5fU0cnLCAnZ29vZy5pMThuLkRhdGVUaW1lUGF0dGVybnNfZW5fVVMnLCAnZ29vZy5pMThuLkRhdGVUaW1lUGF0dGVybnNfZW5fWkEnLCAnZ29vZy5pMThuLkRhdGVUaW1lUGF0dGVybnNfZXMnLCAnZ29vZy5pMThuLkRhdGVUaW1lUGF0dGVybnNfZXNfNDE5JywgJ2dvb2cuaTE4bi5EYXRlVGltZVBhdHRlcm5zX2VzX0VTJywgJ2dvb2cuaTE4bi5EYXRlVGltZVBhdHRlcm5zX2VzX01YJywgJ2dvb2cuaTE4bi5EYXRlVGltZVBhdHRlcm5zX2VzX1VTJywgJ2dvb2cuaTE4bi5EYXRlVGltZVBhdHRlcm5zX2V0JywgJ2dvb2cuaTE4bi5EYXRlVGltZVBhdHRlcm5zX2V1JywgJ2dvb2cuaTE4bi5EYXRlVGltZVBhdHRlcm5zX2ZhJywgJ2dvb2cuaTE4bi5EYXRlVGltZVBhdHRlcm5zX2ZpJywgJ2dvb2cuaTE4bi5EYXRlVGltZVBhdHRlcm5zX2ZpbCcsICdnb29nLmkxOG4uRGF0ZVRpbWVQYXR0ZXJuc19mcicsICdnb29nLmkxOG4uRGF0ZVRpbWVQYXR0ZXJuc19mcl9DQScsICdnb29nLmkxOG4uRGF0ZVRpbWVQYXR0ZXJuc19nYScsICdnb29nLmkxOG4uRGF0ZVRpbWVQYXR0ZXJuc19nbCcsICdnb29nLmkxOG4uRGF0ZVRpbWVQYXR0ZXJuc19nc3cnLCAnZ29vZy5pMThuLkRhdGVUaW1lUGF0dGVybnNfZ3UnLCAnZ29vZy5pMThuLkRhdGVUaW1lUGF0dGVybnNfaGF3JywgJ2dvb2cuaTE4bi5EYXRlVGltZVBhdHRlcm5zX2hlJywgJ2dvb2cuaTE4bi5EYXRlVGltZVBhdHRlcm5zX2hpJywgJ2dvb2cuaTE4bi5EYXRlVGltZVBhdHRlcm5zX2hyJywgJ2dvb2cuaTE4bi5EYXRlVGltZVBhdHRlcm5zX2h1JywgJ2dvb2cuaTE4bi5EYXRlVGltZVBhdHRlcm5zX2h5JywgJ2dvb2cuaTE4bi5EYXRlVGltZVBhdHRlcm5zX2lkJywgJ2dvb2cuaTE4bi5EYXRlVGltZVBhdHRlcm5zX2luJywgJ2dvb2cuaTE4bi5EYXRlVGltZVBhdHRlcm5zX2lzJywgJ2dvb2cuaTE4bi5EYXRlVGltZVBhdHRlcm5zX2l0JywgJ2dvb2cuaTE4bi5EYXRlVGltZVBhdHRlcm5zX2l3JywgJ2dvb2cuaTE4bi5EYXRlVGltZVBhdHRlcm5zX2phJywgJ2dvb2cuaTE4bi5EYXRlVGltZVBhdHRlcm5zX2thJywgJ2dvb2cuaTE4bi5EYXRlVGltZVBhdHRlcm5zX2trJywgJ2dvb2cuaTE4bi5EYXRlVGltZVBhdHRlcm5zX2ttJywgJ2dvb2cuaTE4bi5EYXRlVGltZVBhdHRlcm5zX2tuJywgJ2dvb2cuaTE4bi5EYXRlVGltZVBhdHRlcm5zX2tvJywgJ2dvb2cuaTE4bi5EYXRlVGltZVBhdHRlcm5zX2t5JywgJ2dvb2cuaTE4bi5EYXRlVGltZVBhdHRlcm5zX2xuJywgJ2dvb2cuaTE4bi5EYXRlVGltZVBhdHRlcm5zX2xvJywgJ2dvb2cuaTE4bi5EYXRlVGltZVBhdHRlcm5zX2x0JywgJ2dvb2cuaTE4bi5EYXRlVGltZVBhdHRlcm5zX2x2JywgJ2dvb2cuaTE4bi5EYXRlVGltZVBhdHRlcm5zX21rJywgJ2dvb2cuaTE4bi5EYXRlVGltZVBhdHRlcm5zX21sJywgJ2dvb2cuaTE4bi5EYXRlVGltZVBhdHRlcm5zX21uJywgJ2dvb2cuaTE4bi5EYXRlVGltZVBhdHRlcm5zX21vJywgJ2dvb2cuaTE4bi5EYXRlVGltZVBhdHRlcm5zX21yJywgJ2dvb2cuaTE4bi5EYXRlVGltZVBhdHRlcm5zX21zJywgJ2dvb2cuaTE4bi5EYXRlVGltZVBhdHRlcm5zX210JywgJ2dvb2cuaTE4bi5EYXRlVGltZVBhdHRlcm5zX215JywgJ2dvb2cuaTE4bi5EYXRlVGltZVBhdHRlcm5zX25iJywgJ2dvb2cuaTE4bi5EYXRlVGltZVBhdHRlcm5zX25lJywgJ2dvb2cuaTE4bi5EYXRlVGltZVBhdHRlcm5zX25sJywgJ2dvb2cuaTE4bi5EYXRlVGltZVBhdHRlcm5zX25vJywgJ2dvb2cuaTE4bi5EYXRlVGltZVBhdHRlcm5zX25vX05PJywgJ2dvb2cuaTE4bi5EYXRlVGltZVBhdHRlcm5zX29yJywgJ2dvb2cuaTE4bi5EYXRlVGltZVBhdHRlcm5zX3BhJywgJ2dvb2cuaTE4bi5EYXRlVGltZVBhdHRlcm5zX3BsJywgJ2dvb2cuaTE4bi5EYXRlVGltZVBhdHRlcm5zX3B0JywgJ2dvb2cuaTE4bi5EYXRlVGltZVBhdHRlcm5zX3B0X0JSJywgJ2dvb2cuaTE4bi5EYXRlVGltZVBhdHRlcm5zX3B0X1BUJywgJ2dvb2cuaTE4bi5EYXRlVGltZVBhdHRlcm5zX3JvJywgJ2dvb2cuaTE4bi5EYXRlVGltZVBhdHRlcm5zX3J1JywgJ2dvb2cuaTE4bi5EYXRlVGltZVBhdHRlcm5zX3NoJywgJ2dvb2cuaTE4bi5EYXRlVGltZVBhdHRlcm5zX3NpJywgJ2dvb2cuaTE4bi5EYXRlVGltZVBhdHRlcm5zX3NrJywgJ2dvb2cuaTE4bi5EYXRlVGltZVBhdHRlcm5zX3NsJywgJ2dvb2cuaTE4bi5EYXRlVGltZVBhdHRlcm5zX3NxJywgJ2dvb2cuaTE4bi5EYXRlVGltZVBhdHRlcm5zX3NyJywgJ2dvb2cuaTE4bi5EYXRlVGltZVBhdHRlcm5zX3NyX0xhdG4nLCAnZ29vZy5pMThuLkRhdGVUaW1lUGF0dGVybnNfc3YnLCAnZ29vZy5pMThuLkRhdGVUaW1lUGF0dGVybnNfc3cnLCAnZ29vZy5pMThuLkRhdGVUaW1lUGF0dGVybnNfdGEnLCAnZ29vZy5pMThuLkRhdGVUaW1lUGF0dGVybnNfdGUnLCAnZ29vZy5pMThuLkRhdGVUaW1lUGF0dGVybnNfdGgnLCAnZ29vZy5pMThuLkRhdGVUaW1lUGF0dGVybnNfdGwnLCAnZ29vZy5pMThuLkRhdGVUaW1lUGF0dGVybnNfdHInLCAnZ29vZy5pMThuLkRhdGVUaW1lUGF0dGVybnNfdWsnLCAnZ29vZy5pMThuLkRhdGVUaW1lUGF0dGVybnNfdXInLCAnZ29vZy5pMThuLkRhdGVUaW1lUGF0dGVybnNfdXonLCAnZ29vZy5pMThuLkRhdGVUaW1lUGF0dGVybnNfdmknLCAnZ29vZy5pMThuLkRhdGVUaW1lUGF0dGVybnNfemgnLCAnZ29vZy5pMThuLkRhdGVUaW1lUGF0dGVybnNfemhfQ04nLCAnZ29vZy5pMThuLkRhdGVUaW1lUGF0dGVybnNfemhfSEsnLCAnZ29vZy5pMThuLkRhdGVUaW1lUGF0dGVybnNfemhfVFcnLCAnZ29vZy5pMThuLkRhdGVUaW1lUGF0dGVybnNfenUnXSwgW10sIHt9KTsKZ29vZy5hZGREZXBlbmRlbmN5KCdpMThuL2RhdGV0aW1lcGF0dGVybnNleHQuanMnLCBbJ2dvb2cuaTE4bi5EYXRlVGltZVBhdHRlcm5zRXh0JywgJ2dvb2cuaTE4bi5EYXRlVGltZVBhdHRlcm5zX2FmX05BJywgJ2dvb2cuaTE4bi5EYXRlVGltZVBhdHRlcm5zX2FmX1pBJywgJ2dvb2cuaTE4bi5EYXRlVGltZVBhdHRlcm5zX2FncScsICdnb29nLmkxOG4uRGF0ZVRpbWVQYXR0ZXJuc19hZ3FfQ00nLCAnZ29vZy5pMThuLkRhdGVUaW1lUGF0dGVybnNfYWsnLCAnZ29vZy5pMThuLkRhdGVUaW1lUGF0dGVybnNfYWtfR0gnLCAnZ29vZy5pMThuLkRhdGVUaW1lUGF0dGVybnNfYW1fRVQnLCAnZ29vZy5pMThuLkRhdGVUaW1lUGF0dGVybnNfYXJfMDAxJywgJ2dvb2cuaTE4bi5EYXRlVGltZVBhdHRlcm5zX2FyX0FFJywgJ2dvb2cuaTE4bi5EYXRlVGltZVBhdHRlcm5zX2FyX0JIJywgJ2dvb2cuaTE4bi5EYXRlVGltZVBhdHRlcm5zX2FyX0RKJywgJ2dvb2cuaTE4bi5EYXRlVGltZVBhdHRlcm5zX2FyX0VIJywgJ2dvb2cuaTE4bi5EYXRlVGltZVBhdHRlcm5zX2FyX0VSJywgJ2dvb2cuaTE4bi5EYXRlVGltZVBhdHRlcm5zX2FyX0lMJywgJ2dvb2cuaTE4bi5EYXRlVGltZVBhdHRlcm5zX2FyX0lRJywgJ2dvb2cuaTE4bi5EYXRlVGltZVBhdHRlcm5zX2FyX0pPJywgJ2dvb2cuaTE4bi5EYXRlVGltZVBhdHRlcm5zX2FyX0tNJywgJ2dvb2cuaTE4bi5EYXRlVGltZVBhdHRlcm5zX2FyX0tXJywgJ2dvb2cuaTE4bi5EYXRlVGltZVBhdHRlcm5zX2FyX0xCJywgJ2dvb2cuaTE4bi5EYXRlVGltZVBhdHRlcm5zX2FyX0xZJywgJ2dvb2cuaTE4bi5EYXRlVGltZVBhdHRlcm5zX2FyX01BJywgJ2dvb2cuaTE4bi5EYXRlVGltZVBhdHRlcm5zX2FyX01SJywgJ2dvb2cuaTE4bi5EYXRlVGltZVBhdHRlcm5zX2FyX09NJywgJ2dvb2cuaTE4bi5EYXRlVGltZVBhdHRlcm5zX2FyX1BTJywgJ2dvb2cuaTE4bi5EYXRlVGltZVBhdHRlcm5zX2FyX1FBJywgJ2dvb2cuaTE4bi5EYXRlVGltZVBhdHRlcm5zX2FyX1NBJywgJ2dvb2cuaTE4bi5EYXRlVGltZVBhdHRlcm5zX2FyX1NEJywgJ2dvb2cuaTE4bi5EYXRlVGltZVBhdHRlcm5zX2FyX1NPJywgJ2dvb2cuaTE4bi5EYXRlVGltZVBhdHRlcm5zX2FyX1NTJywgJ2dvb2cuaTE4bi5EYXRlVGltZVBhdHRlcm5zX2FyX1NZJywgJ2dvb2cuaTE4bi5EYXRlVGltZVBhdHRlcm5zX2FyX1REJywgJ2dvb2cuaTE4bi5EYXRlVGltZVBhdHRlcm5zX2FyX1ROJywgJ2dvb2cuaTE4bi5EYXRlVGltZVBhdHRlcm5zX2FyX1hCJywgJ2dvb2cuaTE4bi5EYXRlVGltZVBhdHRlcm5zX2FyX1lFJywgJ2dvb2cuaTE4bi5EYXRlVGltZVBhdHRlcm5zX2FzJywgJ2dvb2cuaTE4bi5EYXRlVGltZVBhdHRlcm5zX2FzX0lOJywgJ2dvb2cuaTE4bi5EYXRlVGltZVBhdHRlcm5zX2FzYScsICdnb29nLmkxOG4uRGF0ZVRpbWVQYXR0ZXJuc19hc2FfVFonLCAnZ29vZy5pMThuLkRhdGVUaW1lUGF0dGVybnNfYXN0JywgJ2dvb2cuaTE4bi5EYXRlVGltZVBhdHRlcm5zX2FzdF9FUycsICdnb29nLmkxOG4uRGF0ZVRpbWVQYXR0ZXJuc19hel9DeXJsJywgJ2dvb2cuaTE4bi5EYXRlVGltZVBhdHRlcm5zX2F6X0N5cmxfQVonLCAnZ29vZy5pMThuLkRhdGVUaW1lUGF0dGVybnNfYXpfTGF0bicsICdnb29nLmkxOG4uRGF0ZVRpbWVQYXR0ZXJuc19hel9MYXRuX0FaJywgJ2dvb2cuaTE4bi5EYXRlVGltZVBhdHRlcm5zX2JhcycsICdnb29nLmkxOG4uRGF0ZVRpbWVQYXR0ZXJuc19iYXNfQ00nLCAnZ29vZy5pMThuLkRhdGVUaW1lUGF0dGVybnNfYmVfQlknLCAnZ29vZy5pMThuLkRhdGVUaW1lUGF0dGVybnNfYmVtJywgJ2dvb2cuaTE4bi5EYXRlVGltZVBhdHRlcm5zX2JlbV9aTScsICdnb29nLmkxOG4uRGF0ZVRpbWVQYXR0ZXJuc19iZXonLCAnZ29vZy5pMThuLkRhdGVUaW1lUGF0dGVybnNfYmV6X1RaJywgJ2dvb2cuaTE4bi5EYXRlVGltZVBhdHRlcm5zX2JnX0JHJywgJ2dvb2cuaTE4bi5EYXRlVGltZVBhdHRlcm5zX2JtJywgJ2dvb2cuaTE4bi5EYXRlVGltZVBhdHRlcm5zX2JtX01MJywgJ2dvb2cuaTE4bi5EYXRlVGltZVBhdHRlcm5zX2JuX0JEJywgJ2dvb2cuaTE4bi5EYXRlVGltZVBhdHRlcm5zX2JuX0lOJywgJ2dvb2cuaTE4bi5EYXRlVGltZVBhdHRlcm5zX2JvJywgJ2dvb2cuaTE4bi5EYXRlVGltZVBhdHRlcm5zX2JvX0NOJywgJ2dvb2cuaTE4bi5EYXRlVGltZVBhdHRlcm5zX2JvX0lOJywgJ2dvb2cuaTE4bi5EYXRlVGltZVBhdHRlcm5zX2JyX0ZSJywgJ2dvb2cuaTE4bi5EYXRlVGltZVBhdHRlcm5zX2JyeCcsICdnb29nLmkxOG4uRGF0ZVRpbWVQYXR0ZXJuc19icnhfSU4nLCAnZ29vZy5pMThuLkRhdGVUaW1lUGF0dGVybnNfYnNfQ3lybCcsICdnb29nLmkxOG4uRGF0ZVRpbWVQYXR0ZXJuc19ic19DeXJsX0JBJywgJ2dvb2cuaTE4bi5EYXRlVGltZVBhdHRlcm5zX2JzX0xhdG4nLCAnZ29vZy5pMThuLkRhdGVUaW1lUGF0dGVybnNfYnNfTGF0bl9CQScsICdnb29nLmkxOG4uRGF0ZVRpbWVQYXR0ZXJuc19jYV9BRCcsICdnb29nLmkxOG4uRGF0ZVRpbWVQYXR0ZXJuc19jYV9FUycsICdnb29nLmkxOG4uRGF0ZVRpbWVQYXR0ZXJuc19jYV9GUicsICdnb29nLmkxOG4uRGF0ZVRpbWVQYXR0ZXJuc19jYV9JVCcsICdnb29nLmkxOG4uRGF0ZVRpbWVQYXR0ZXJuc19jY3AnLCAnZ29vZy5pMThuLkRhdGVUaW1lUGF0dGVybnNfY2NwX0JEJywgJ2dvb2cuaTE4bi5EYXRlVGltZVBhdHRlcm5zX2NjcF9JTicsICdnb29nLmkxOG4uRGF0ZVRpbWVQYXR0ZXJuc19jZScsICdnb29nLmkxOG4uRGF0ZVRpbWVQYXR0ZXJuc19jZV9SVScsICdnb29nLmkxOG4uRGF0ZVRpbWVQYXR0ZXJuc19jZWInLCAnZ29vZy5pMThuLkRhdGVUaW1lUGF0dGVybnNfY2ViX1BIJywgJ2dvb2cuaTE4bi5EYXRlVGltZVBhdHRlcm5zX2NnZycsICdnb29nLmkxOG4uRGF0ZVRpbWVQYXR0ZXJuc19jZ2dfVUcnLCAnZ29vZy5pMThuLkRhdGVUaW1lUGF0dGVybnNfY2hyX1VTJywgJ2dvb2cuaTE4bi5EYXRlVGltZVBhdHRlcm5zX2NrYicsICdnb29nLmkxOG4uRGF0ZVRpbWVQYXR0ZXJuc19ja2JfSVEnLCAnZ29vZy5pMThuLkRhdGVUaW1lUGF0dGVybnNfY2tiX0lSJywgJ2dvb2cuaTE4bi5EYXRlVGltZVBhdHRlcm5zX2NzX0NaJywgJ2dvb2cuaTE4bi5EYXRlVGltZVBhdHRlcm5zX2N5X0dCJywgJ2dvb2cuaTE4bi5EYXRlVGltZVBhdHRlcm5zX2RhX0RLJywgJ2dvb2cuaTE4bi5EYXRlVGltZVBhdHRlcm5zX2RhX0dMJywgJ2dvb2cuaTE4bi5EYXRlVGltZVBhdHRlcm5zX2RhdicsICdnb29nLmkxOG4uRGF0ZVRpbWVQYXR0ZXJuc19kYXZfS0UnLCAnZ29vZy5pMThuLkRhdGVUaW1lUGF0dGVybnNfZGVfQkUnLCAnZ29vZy5pMThuLkRhdGVUaW1lUGF0dGVybnNfZGVfREUnLCAnZ29vZy5pMThuLkRhdGVUaW1lUGF0dGVybnNfZGVfSVQnLCAnZ29vZy5pMThuLkRhdGVUaW1lUGF0dGVybnNfZGVfTEknLCAnZ29vZy5pMThuLkRhdGVUaW1lUGF0dGVybnNfZGVfTFUnLCAnZ29vZy5pMThuLkRhdGVUaW1lUGF0dGVybnNfZGplJywgJ2dvb2cuaTE4bi5EYXRlVGltZVBhdHRlcm5zX2RqZV9ORScsICdnb29nLmkxOG4uRGF0ZVRpbWVQYXR0ZXJuc19kc2InLCAnZ29vZy5pMThuLkRhdGVUaW1lUGF0dGVybnNfZHNiX0RFJywgJ2dvb2cuaTE4bi5EYXRlVGltZVBhdHRlcm5zX2R1YScsICdnb29nLmkxOG4uRGF0ZVRpbWVQYXR0ZXJuc19kdWFfQ00nLCAnZ29vZy5pMThuLkRhdGVUaW1lUGF0dGVybnNfZHlvJywgJ2dvb2cuaTE4bi5EYXRlVGltZVBhdHRlcm5zX2R5b19TTicsICdnb29nLmkxOG4uRGF0ZVRpbWVQYXR0ZXJuc19keicsICdnb29nLmkxOG4uRGF0ZVRpbWVQYXR0ZXJuc19kel9CVCcsICdnb29nLmkxOG4uRGF0ZVRpbWVQYXR0ZXJuc19lYnUnLCAnZ29vZy5pMThuLkRhdGVUaW1lUGF0dGVybnNfZWJ1X0tFJywgJ2dvb2cuaTE4bi5EYXRlVGltZVBhdHRlcm5zX2VlJywgJ2dvb2cuaTE4bi5EYXRlVGltZVBhdHRlcm5zX2VlX0dIJywgJ2dvb2cuaTE4bi5EYXRlVGltZVBhdHRlcm5zX2VlX1RHJywgJ2dvb2cuaTE4bi5EYXRlVGltZVBhdHRlcm5zX2VsX0NZJywgJ2dvb2cuaTE4bi5EYXRlVGltZVBhdHRlcm5zX2VsX0dSJywgJ2dvb2cuaTE4bi5EYXRlVGltZVBhdHRlcm5zX2VuXzAwMScsICdnb29nLmkxOG4uRGF0ZVRpbWVQYXR0ZXJuc19lbl8xNTAnLCAnZ29vZy5pMThuLkRhdGVUaW1lUGF0dGVybnNfZW5fQUUnLCAnZ29vZy5pMThuLkRhdGVUaW1lUGF0dGVybnNfZW5fQUcnLCAnZ29vZy5pMThuLkRhdGVUaW1lUGF0dGVybnNfZW5fQUknLCAnZ29vZy5pMThuLkRhdGVUaW1lUGF0dGVybnNfZW5fQVMnLCAnZ29vZy5pMThuLkRhdGVUaW1lUGF0dGVybnNfZW5fQVQnLCAnZ29vZy5pMThuLkRhdGVUaW1lUGF0dGVybnNfZW5fQkInLCAnZ29vZy5pMThuLkRhdGVUaW1lUGF0dGVybnNfZW5fQkUnLCAnZ29vZy5pMThuLkRhdGVUaW1lUGF0dGVybnNfZW5fQkknLCAnZ29vZy5pMThuLkRhdGVUaW1lUGF0dGVybnNfZW5fQk0nLCAnZ29vZy5pMThuLkRhdGVUaW1lUGF0dGVybnNfZW5fQlMnLCAnZ29vZy5pMThuLkRhdGVUaW1lUGF0dGVybnNfZW5fQlcnLCAnZ29vZy5pMThuLkRhdGVUaW1lUGF0dGVybnNfZW5fQlonLCAnZ29vZy5pMThuLkRhdGVUaW1lUGF0dGVybnNfZW5fQ0MnLCAnZ29vZy5pMThuLkRhdGVUaW1lUGF0dGVybnNfZW5fQ0gnLCAnZ29vZy5pMThuLkRhdGVUaW1lUGF0dGVybnNfZW5fQ0snLCAnZ29vZy5pMThuLkRhdGVUaW1lUGF0dGVybnNfZW5fQ00nLCAnZ29vZy5pMThuLkRhdGVUaW1lUGF0dGVybnNfZW5fQ1gnLCAnZ29vZy5pMThuLkRhdGVUaW1lUGF0dGVybnNfZW5fQ1knLCAnZ29vZy5pMThuLkRhdGVUaW1lUGF0dGVybnNfZW5fREUnLCAnZ29vZy5pMThuLkRhdGVUaW1lUGF0dGVybnNfZW5fREcnLCAnZ29vZy5pMThuLkRhdGVUaW1lUGF0dGVybnNfZW5fREsnLCAnZ29vZy5pMThuLkRhdGVUaW1lUGF0dGVybnNfZW5fRE0nLCAnZ29vZy5pMThuLkRhdGVUaW1lUGF0dGVybnNfZW5fRVInLCAnZ29vZy5pMThuLkRhdGVUaW1lUGF0dGVybnNfZW5fRkknLCAnZ29vZy5pMThuLkRhdGVUaW1lUGF0dGVybnNfZW5fRkonLCAnZ29vZy5pMThuLkRhdGVUaW1lUGF0dGVybnNfZW5fRksnLCAnZ29vZy5pMThuLkRhdGVUaW1lUGF0dGVybnNfZW5fRk0nLCAnZ29vZy5pMThuLkRhdGVUaW1lUGF0dGVybnNfZW5fR0QnLCAnZ29vZy5pMThuLkRhdGVUaW1lUGF0dGVybnNfZW5fR0cnLCAnZ29vZy5pMThuLkRhdGVUaW1lUGF0dGVybnNfZW5fR0gnLCAnZ29vZy5pMThuLkRhdGVUaW1lUGF0dGVybnNfZW5fR0knLCAnZ29vZy5pMThuLkRhdGVUaW1lUGF0dGVybnNfZW5fR00nLCAnZ29vZy5pMThuLkRhdGVUaW1lUGF0dGVybnNfZW5fR1UnLCAnZ29vZy5pMThuLkRhdGVUaW1lUGF0dGVybnNfZW5fR1knLCAnZ29vZy5pMThuLkRhdGVUaW1lUGF0dGVybnNfZW5fSEsnLCAnZ29vZy5pMThuLkRhdGVUaW1lUGF0dGVybnNfZW5fSUwnLCAnZ29vZy5pMThuLkRhdGVUaW1lUGF0dGVybnNfZW5fSU0nLCAnZ29vZy5pMThuLkRhdGVUaW1lUGF0dGVybnNfZW5fSU8nLCAnZ29vZy5pMThuLkRhdGVUaW1lUGF0dGVybnNfZW5fSkUnLCAnZ29vZy5pMThuLkRhdGVUaW1lUGF0dGVybnNfZW5fSk0nLCAnZ29vZy5pMThuLkRhdGVUaW1lUGF0dGVybnNfZW5fS0UnLCAnZ29vZy5pMThuLkRhdGVUaW1lUGF0dGVybnNfZW5fS0knLCAnZ29vZy5pMThuLkRhdGVUaW1lUGF0dGVybnNfZW5fS04nLCAnZ29vZy5pMThuLkRhdGVUaW1lUGF0dGVybnNfZW5fS1knLCAnZ29vZy5pMThuLkRhdGVUaW1lUGF0dGVybnNfZW5fTEMnLCAnZ29vZy5pMThuLkRhdGVUaW1lUGF0dGVybnNfZW5fTFInLCAnZ29vZy5pMThuLkRhdGVUaW1lUGF0dGVybnNfZW5fTFMnLCAnZ29vZy5pMThuLkRhdGVUaW1lUGF0dGVybnNfZW5fTUcnLCAnZ29vZy5pMThuLkRhdGVUaW1lUGF0dGVybnNfZW5fTUgnLCAnZ29vZy5pMThuLkRhdGVUaW1lUGF0dGVybnNfZW5fTU8nLCAnZ29vZy5pMThuLkRhdGVUaW1lUGF0dGVybnNfZW5fTVAnLCAnZ29vZy5pMThuLkRhdGVUaW1lUGF0dGVybnNfZW5fTVMnLCAnZ29vZy5pMThuLkRhdGVUaW1lUGF0dGVybnNfZW5fTVQnLCAnZ29vZy5pMThuLkRhdGVUaW1lUGF0dGVybnNfZW5fTVUnLCAnZ29vZy5pMThuLkRhdGVUaW1lUGF0dGVybnNfZW5fTVcnLCAnZ29vZy5pMThuLkRhdGVUaW1lUGF0dGVybnNfZW5fTVknLCAnZ29vZy5pMThuLkRhdGVUaW1lUGF0dGVybnNfZW5fTkEnLCAnZ29vZy5pMThuLkRhdGVUaW1lUGF0dGVybnNfZW5fTkYnLCAnZ29vZy5pMThuLkRhdGVUaW1lUGF0dGVybnNfZW5fTkcnLCAnZ29vZy5pMThuLkRhdGVUaW1lUGF0dGVybnNfZW5fTkwnLCAnZ29vZy5pMThuLkRhdGVUaW1lUGF0dGVybnNfZW5fTlInLCAnZ29vZy5pMThuLkRhdGVUaW1lUGF0dGVybnNfZW5fTlUnLCAnZ29vZy5pMThuLkRhdGVUaW1lUGF0dGVybnNfZW5fTlonLCAnZ29vZy5pMThuLkRhdGVUaW1lUGF0dGVybnNfZW5fUEcnLCAnZ29vZy5pMThuLkRhdGVUaW1lUGF0dGVybnNfZW5fUEgnLCAnZ29vZy5pMThuLkRhdGVUaW1lUGF0dGVybnNfZW5fUEsnLCAnZ29vZy5pMThuLkRhdGVUaW1lUGF0dGVybnNfZW5fUE4nLCAnZ29vZy5pMThuLkRhdGVUaW1lUGF0dGVybnNfZW5fUFInLCAnZ29vZy5pMThuLkRhdGVUaW1lUGF0dGVybnNfZW5fUFcnLCAnZ29vZy5pMThuLkRhdGVUaW1lUGF0dGVybnNfZW5fUlcnLCAnZ29vZy5pMThuLkRhdGVUaW1lUGF0dGVybnNfZW5fU0InLCAnZ29vZy5pMThuLkRhdGVUaW1lUGF0dGVybnNfZW5fU0MnLCAnZ29vZy5pMThuLkRhdGVUaW1lUGF0dGVybnNfZW5fU0QnLCAnZ29vZy5pMThuLkRhdGVUaW1lUGF0dGVybnNfZW5fU0UnLCAnZ29vZy5pMThuLkRhdGVUaW1lUGF0dGVybnNfZW5fU0gnLCAnZ29vZy5pMThuLkRhdGVUaW1lUGF0dGVybnNfZW5fU0knLCAnZ29vZy5pMThuLkRhdGVUaW1lUGF0dGVybnNfZW5fU0wnLCAnZ29vZy5pMThuLkRhdGVUaW1lUGF0dGVybnNfZW5fU1MnLCAnZ29vZy5pMThuLkRhdGVUaW1lUGF0dGVybnNfZW5fU1gnLCAnZ29vZy5pMThuLkRhdGVUaW1lUGF0dGVybnNfZW5fU1onLCAnZ29vZy5pMThuLkRhdGVUaW1lUGF0dGVybnNfZW5fVEMnLCAnZ29vZy5pMThuLkRhdGVUaW1lUGF0dGVybnNfZW5fVEsnLCAnZ29vZy5pMThuLkRhdGVUaW1lUGF0dGVybnNfZW5fVE8nLCAnZ29vZy5pMThuLkRhdGVUaW1lUGF0dGVybnNfZW5fVFQnLCAnZ29vZy5pMThuLkRhdGVUaW1lUGF0dGVybnNfZW5fVFYnLCAnZ29vZy5pMThuLkRhdGVUaW1lUGF0dGVybnNfZW5fVFonLCAnZ29vZy5pMThuLkRhdGVUaW1lUGF0dGVybnNfZW5fVUcnLCAnZ29vZy5pMThuLkRhdGVUaW1lUGF0dGVybnNfZW5fVU0nLCAnZ29vZy5pMThuLkRhdGVUaW1lUGF0dGVybnNfZW5fVVNfUE9TSVgnLCAnZ29vZy5pMThuLkRhdGVUaW1lUGF0dGVybnNfZW5fVkMnLCAnZ29vZy5pMThuLkRhdGVUaW1lUGF0dGVybnNfZW5fVkcnLCAnZ29vZy5pMThuLkRhdGVUaW1lUGF0dGVybnNfZW5fVkknLCAnZ29vZy5pMThuLkRhdGVUaW1lUGF0dGVybnNfZW5fVlUnLCAnZ29vZy5pMThuLkRhdGVUaW1lUGF0dGVybnNfZW5fV1MnLCAnZ29vZy5pMThuLkRhdGVUaW1lUGF0dGVybnNfZW5fWEEnLCAnZ29vZy5pMThuLkRhdGVUaW1lUGF0dGVybnNfZW5fWk0nLCAnZ29vZy5pMThuLkRhdGVUaW1lUGF0dGVybnNfZW5fWlcnLCAnZ29vZy5pMThuLkRhdGVUaW1lUGF0dGVybnNfZW8nLCAnZ29vZy5pMThuLkRhdGVUaW1lUGF0dGVybnNfZW9fMDAxJywgJ2dvb2cuaTE4bi5EYXRlVGltZVBhdHRlcm5zX2VzX0FSJywgJ2dvb2cuaTE4bi5EYXRlVGltZVBhdHRlcm5zX2VzX0JPJywgJ2dvb2cuaTE4bi5EYXRlVGltZVBhdHRlcm5zX2VzX0JSJywgJ2dvb2cuaTE4bi5EYXRlVGltZVBhdHRlcm5zX2VzX0JaJywgJ2dvb2cuaTE4bi5EYXRlVGltZVBhdHRlcm5zX2VzX0NMJywgJ2dvb2cuaTE4bi5EYXRlVGltZVBhdHRlcm5zX2VzX0NPJywgJ2dvb2cuaTE4bi5EYXRlVGltZVBhdHRlcm5zX2VzX0NSJywgJ2dvb2cuaTE4bi5EYXRlVGltZVBhdHRlcm5zX2VzX0NVJywgJ2dvb2cuaTE4bi5EYXRlVGltZVBhdHRlcm5zX2VzX0RPJywgJ2dvb2cuaTE4bi5EYXRlVGltZVBhdHRlcm5zX2VzX0VBJywgJ2dvb2cuaTE4bi5EYXRlVGltZVBhdHRlcm5zX2VzX0VDJywgJ2dvb2cuaTE4bi5EYXRlVGltZVBhdHRlcm5zX2VzX0dRJywgJ2dvb2cuaTE4bi5EYXRlVGltZVBhdHRlcm5zX2VzX0dUJywgJ2dvb2cuaTE4bi5EYXRlVGltZVBhdHRlcm5zX2VzX0hOJywgJ2dvb2cuaTE4bi5EYXRlVGltZVBhdHRlcm5zX2VzX0lDJywgJ2dvb2cuaTE4bi5EYXRlVGltZVBhdHRlcm5zX2VzX05JJywgJ2dvb2cuaTE4bi5EYXRlVGltZVBhdHRlcm5zX2VzX1BBJywgJ2dvb2cuaTE4bi5EYXRlVGltZVBhdHRlcm5zX2VzX1BFJywgJ2dvb2cuaTE4bi5EYXRlVGltZVBhdHRlcm5zX2VzX1BIJywgJ2dvb2cuaTE4bi5EYXRlVGltZVBhdHRlcm5zX2VzX1BSJywgJ2dvb2cuaTE4bi5EYXRlVGltZVBhdHRlcm5zX2VzX1BZJywgJ2dvb2cuaTE4bi5EYXRlVGltZVBhdHRlcm5zX2VzX1NWJywgJ2dvb2cuaTE4bi5EYXRlVGltZVBhdHRlcm5zX2VzX1VZJywgJ2dvb2cuaTE4bi5EYXRlVGltZVBhdHRlcm5zX2VzX1ZFJywgJ2dvb2cuaTE4bi5EYXRlVGltZVBhdHRlcm5zX2V0X0VFJywgJ2dvb2cuaTE4bi5EYXRlVGltZVBhdHRlcm5zX2V1X0VTJywgJ2dvb2cuaTE4bi5EYXRlVGltZVBhdHRlcm5zX2V3bycsICdnb29nLmkxOG4uRGF0ZVRpbWVQYXR0ZXJuc19ld29fQ00nLCAnZ29vZy5pMThuLkRhdGVUaW1lUGF0dGVybnNfZmFfQUYnLCAnZ29vZy5pMThuLkRhdGVUaW1lUGF0dGVybnNfZmFfSVInLCAnZ29vZy5pMThuLkRhdGVUaW1lUGF0dGVybnNfZmYnLCAnZ29vZy5pMThuLkRhdGVUaW1lUGF0dGVybnNfZmZfTGF0bicsICdnb29nLmkxOG4uRGF0ZVRpbWVQYXR0ZXJuc19mZl9MYXRuX0JGJywgJ2dvb2cuaTE4bi5EYXRlVGltZVBhdHRlcm5zX2ZmX0xhdG5fQ00nLCAnZ29vZy5pMThuLkRhdGVUaW1lUGF0dGVybnNfZmZfTGF0bl9HSCcsICdnb29nLmkxOG4uRGF0ZVRpbWVQYXR0ZXJuc19mZl9MYXRuX0dNJywgJ2dvb2cuaTE4bi5EYXRlVGltZVBhdHRlcm5zX2ZmX0xhdG5fR04nLCAnZ29vZy5pMThuLkRhdGVUaW1lUGF0dGVybnNfZmZfTGF0bl9HVycsICdnb29nLmkxOG4uRGF0ZVRpbWVQYXR0ZXJuc19mZl9MYXRuX0xSJywgJ2dvb2cuaTE4bi5EYXRlVGltZVBhdHRlcm5zX2ZmX0xhdG5fTVInLCAnZ29vZy5pMThuLkRhdGVUaW1lUGF0dGVybnNfZmZfTGF0bl9ORScsICdnb29nLmkxOG4uRGF0ZVRpbWVQYXR0ZXJuc19mZl9MYXRuX05HJywgJ2dvb2cuaTE4bi5EYXRlVGltZVBhdHRlcm5zX2ZmX0xhdG5fU0wnLCAnZ29vZy5pMThuLkRhdGVUaW1lUGF0dGVybnNfZmZfTGF0bl9TTicsICdnb29nLmkxOG4uRGF0ZVRpbWVQYXR0ZXJuc19maV9GSScsICdnb29nLmkxOG4uRGF0ZVRpbWVQYXR0ZXJuc19maWxfUEgnLCAnZ29vZy5pMThuLkRhdGVUaW1lUGF0dGVybnNfZm8nLCAnZ29vZy5pMThuLkRhdGVUaW1lUGF0dGVybnNfZm9fREsnLCAnZ29vZy5pMThuLkRhdGVUaW1lUGF0dGVybnNfZm9fRk8nLCAnZ29vZy5pMThuLkRhdGVUaW1lUGF0dGVybnNfZnJfQkUnLCAnZ29vZy5pMThuLkRhdGVUaW1lUGF0dGVybnNfZnJfQkYnLCAnZ29vZy5pMThuLkRhdGVUaW1lUGF0dGVybnNfZnJfQkknLCAnZ29vZy5pMThuLkRhdGVUaW1lUGF0dGVybnNfZnJfQkonLCAnZ29vZy5pMThuLkRhdGVUaW1lUGF0dGVybnNfZnJfQkwnLCAnZ29vZy5pMThuLkRhdGVUaW1lUGF0dGVybnNfZnJfQ0QnLCAnZ29vZy5pMThuLkRhdGVUaW1lUGF0dGVybnNfZnJfQ0YnLCAnZ29vZy5pMThuLkRhdGVUaW1lUGF0dGVybnNfZnJfQ0cnLCAnZ29vZy5pMThuLkRhdGVUaW1lUGF0dGVybnNfZnJfQ0gnLCAnZ29vZy5pMThuLkRhdGVUaW1lUGF0dGVybnNfZnJfQ0knLCAnZ29vZy5pMThuLkRhdGVUaW1lUGF0dGVybnNfZnJfQ00nLCAnZ29vZy5pMThuLkRhdGVUaW1lUGF0dGVybnNfZnJfREonLCAnZ29vZy5pMThuLkRhdGVUaW1lUGF0dGVybnNfZnJfRFonLCAnZ29vZy5pMThuLkRhdGVUaW1lUGF0dGVybnNfZnJfRlInLCAnZ29vZy5pMThuLkRhdGVUaW1lUGF0dGVybnNfZnJfR0EnLCAnZ29vZy5pMThuLkRhdGVUaW1lUGF0dGVybnNfZnJfR0YnLCAnZ29vZy5pMThuLkRhdGVUaW1lUGF0dGVybnNfZnJfR04nLCAnZ29vZy5pMThuLkRhdGVUaW1lUGF0dGVybnNfZnJfR1AnLCAnZ29vZy5pMThuLkRhdGVUaW1lUGF0dGVybnNfZnJfR1EnLCAnZ29vZy5pMThuLkRhdGVUaW1lUGF0dGVybnNfZnJfSFQnLCAnZ29vZy5pMThuLkRhdGVUaW1lUGF0dGVybnNfZnJfS00nLCAnZ29vZy5pMThuLkRhdGVUaW1lUGF0dGVybnNfZnJfTFUnLCAnZ29vZy5pMThuLkRhdGVUaW1lUGF0dGVybnNfZnJfTUEnLCAnZ29vZy5pMThuLkRhdGVUaW1lUGF0dGVybnNfZnJfTUMnLCAnZ29vZy5pMThuLkRhdGVUaW1lUGF0dGVybnNfZnJfTUYnLCAnZ29vZy5pMThuLkRhdGVUaW1lUGF0dGVybnNfZnJfTUcnLCAnZ29vZy5pMThuLkRhdGVUaW1lUGF0dGVybnNfZnJfTUwnLCAnZ29vZy5pMThuLkRhdGVUaW1lUGF0dGVybnNfZnJfTVEnLCAnZ29vZy5pMThuLkRhdGVUaW1lUGF0dGVybnNfZnJfTVInLCAnZ29vZy5pMThuLkRhdGVUaW1lUGF0dGVybnNfZnJfTVUnLCAnZ29vZy5pMThuLkRhdGVUaW1lUGF0dGVybnNfZnJfTkMnLCAnZ29vZy5pMThuLkRhdGVUaW1lUGF0dGVybnNfZnJfTkUnLCAnZ29vZy5pMThuLkRhdGVUaW1lUGF0dGVybnNfZnJfUEYnLCAnZ29vZy5pMThuLkRhdGVUaW1lUGF0dGVybnNfZnJfUE0nLCAnZ29vZy5pMThuLkRhdGVUaW1lUGF0dGVybnNfZnJfUkUnLCAnZ29vZy5pMThuLkRhdGVUaW1lUGF0dGVybnNfZnJfUlcnLCAnZ29vZy5pMThuLkRhdGVUaW1lUGF0dGVybnNfZnJfU0MnLCAnZ29vZy5pMThuLkRhdGVUaW1lUGF0dGVybnNfZnJfU04nLCAnZ29vZy5pMThuLkRhdGVUaW1lUGF0dGVybnNfZnJfU1knLCAnZ29vZy5pMThuLkRhdGVUaW1lUGF0dGVybnNfZnJfVEQnLCAnZ29vZy5pMThuLkRhdGVUaW1lUGF0dGVybnNfZnJfVEcnLCAnZ29vZy5pMThuLkRhdGVUaW1lUGF0dGVybnNfZnJfVE4nLCAnZ29vZy5pMThuLkRhdGVUaW1lUGF0dGVybnNfZnJfVlUnLCAnZ29vZy5pMThuLkRhdGVUaW1lUGF0dGVybnNfZnJfV0YnLCAnZ29vZy5pMThuLkRhdGVUaW1lUGF0dGVybnNfZnJfWVQnLCAnZ29vZy5pMThuLkRhdGVUaW1lUGF0dGVybnNfZnVyJywgJ2dvb2cuaTE4bi5EYXRlVGltZVBhdHRlcm5zX2Z1cl9JVCcsICdnb29nLmkxOG4uRGF0ZVRpbWVQYXR0ZXJuc19meScsICdnb29nLmkxOG4uRGF0ZVRpbWVQYXR0ZXJuc19meV9OTCcsICdnb29nLmkxOG4uRGF0ZVRpbWVQYXR0ZXJuc19nYV9JRScsICdnb29nLmkxOG4uRGF0ZVRpbWVQYXR0ZXJuc19nZCcsICdnb29nLmkxOG4uRGF0ZVRpbWVQYXR0ZXJuc19nZF9HQicsICdnb29nLmkxOG4uRGF0ZVRpbWVQYXR0ZXJuc19nbF9FUycsICdnb29nLmkxOG4uRGF0ZVRpbWVQYXR0ZXJuc19nc3dfQ0gnLCAnZ29vZy5pMThuLkRhdGVUaW1lUGF0dGVybnNfZ3N3X0ZSJywgJ2dvb2cuaTE4bi5EYXRlVGltZVBhdHRlcm5zX2dzd19MSScsICdnb29nLmkxOG4uRGF0ZVRpbWVQYXR0ZXJuc19ndV9JTicsICdnb29nLmkxOG4uRGF0ZVRpbWVQYXR0ZXJuc19ndXonLCAnZ29vZy5pMThuLkRhdGVUaW1lUGF0dGVybnNfZ3V6X0tFJywgJ2dvb2cuaTE4bi5EYXRlVGltZVBhdHRlcm5zX2d2JywgJ2dvb2cuaTE4bi5EYXRlVGltZVBhdHRlcm5zX2d2X0lNJywgJ2dvb2cuaTE4bi5EYXRlVGltZVBhdHRlcm5zX2hhJywgJ2dvb2cuaTE4bi5EYXRlVGltZVBhdHRlcm5zX2hhX0dIJywgJ2dvb2cuaTE4bi5EYXRlVGltZVBhdHRlcm5zX2hhX05FJywgJ2dvb2cuaTE4bi5EYXRlVGltZVBhdHRlcm5zX2hhX05HJywgJ2dvb2cuaTE4bi5EYXRlVGltZVBhdHRlcm5zX2hhd19VUycsICdnb29nLmkxOG4uRGF0ZVRpbWVQYXR0ZXJuc19oZV9JTCcsICdnb29nLmkxOG4uRGF0ZVRpbWVQYXR0ZXJuc19oaV9JTicsICdnb29nLmkxOG4uRGF0ZVRpbWVQYXR0ZXJuc19ocl9CQScsICdnb29nLmkxOG4uRGF0ZVRpbWVQYXR0ZXJuc19ocl9IUicsICdnb29nLmkxOG4uRGF0ZVRpbWVQYXR0ZXJuc19oc2InLCAnZ29vZy5pMThuLkRhdGVUaW1lUGF0dGVybnNfaHNiX0RFJywgJ2dvb2cuaTE4bi5EYXRlVGltZVBhdHRlcm5zX2h1X0hVJywgJ2dvb2cuaTE4bi5EYXRlVGltZVBhdHRlcm5zX2h5X0FNJywgJ2dvb2cuaTE4bi5EYXRlVGltZVBhdHRlcm5zX2lhJywgJ2dvb2cuaTE4bi5EYXRlVGltZVBhdHRlcm5zX2lhXzAwMScsICdnb29nLmkxOG4uRGF0ZVRpbWVQYXR0ZXJuc19pZF9JRCcsICdnb29nLmkxOG4uRGF0ZVRpbWVQYXR0ZXJuc19pZycsICdnb29nLmkxOG4uRGF0ZVRpbWVQYXR0ZXJuc19pZ19ORycsICdnb29nLmkxOG4uRGF0ZVRpbWVQYXR0ZXJuc19paScsICdnb29nLmkxOG4uRGF0ZVRpbWVQYXR0ZXJuc19paV9DTicsICdnb29nLmkxOG4uRGF0ZVRpbWVQYXR0ZXJuc19pc19JUycsICdnb29nLmkxOG4uRGF0ZVRpbWVQYXR0ZXJuc19pdF9DSCcsICdnb29nLmkxOG4uRGF0ZVRpbWVQYXR0ZXJuc19pdF9JVCcsICdnb29nLmkxOG4uRGF0ZVRpbWVQYXR0ZXJuc19pdF9TTScsICdnb29nLmkxOG4uRGF0ZVRpbWVQYXR0ZXJuc19pdF9WQScsICdnb29nLmkxOG4uRGF0ZVRpbWVQYXR0ZXJuc19qYV9KUCcsICdnb29nLmkxOG4uRGF0ZVRpbWVQYXR0ZXJuc19qZ28nLCAnZ29vZy5pMThuLkRhdGVUaW1lUGF0dGVybnNfamdvX0NNJywgJ2dvb2cuaTE4bi5EYXRlVGltZVBhdHRlcm5zX2ptYycsICdnb29nLmkxOG4uRGF0ZVRpbWVQYXR0ZXJuc19qbWNfVFonLCAnZ29vZy5pMThuLkRhdGVUaW1lUGF0dGVybnNfanYnLCAnZ29vZy5pMThuLkRhdGVUaW1lUGF0dGVybnNfanZfSUQnLCAnZ29vZy5pMThuLkRhdGVUaW1lUGF0dGVybnNfa2FfR0UnLCAnZ29vZy5pMThuLkRhdGVUaW1lUGF0dGVybnNfa2FiJywgJ2dvb2cuaTE4bi5EYXRlVGltZVBhdHRlcm5zX2thYl9EWicsICdnb29nLmkxOG4uRGF0ZVRpbWVQYXR0ZXJuc19rYW0nLCAnZ29vZy5pMThuLkRhdGVUaW1lUGF0dGVybnNfa2FtX0tFJywgJ2dvb2cuaTE4bi5EYXRlVGltZVBhdHRlcm5zX2tkZScsICdnb29nLmkxOG4uRGF0ZVRpbWVQYXR0ZXJuc19rZGVfVFonLCAnZ29vZy5pMThuLkRhdGVUaW1lUGF0dGVybnNfa2VhJywgJ2dvb2cuaTE4bi5EYXRlVGltZVBhdHRlcm5zX2tlYV9DVicsICdnb29nLmkxOG4uRGF0ZVRpbWVQYXR0ZXJuc19raHEnLCAnZ29vZy5pMThuLkRhdGVUaW1lUGF0dGVybnNfa2hxX01MJywgJ2dvb2cuaTE4bi5EYXRlVGltZVBhdHRlcm5zX2tpJywgJ2dvb2cuaTE4bi5EYXRlVGltZVBhdHRlcm5zX2tpX0tFJywgJ2dvb2cuaTE4bi5EYXRlVGltZVBhdHRlcm5zX2trX0taJywgJ2dvb2cuaTE4bi5EYXRlVGltZVBhdHRlcm5zX2traicsICdnb29nLmkxOG4uRGF0ZVRpbWVQYXR0ZXJuc19ra2pfQ00nLCAnZ29vZy5pMThuLkRhdGVUaW1lUGF0dGVybnNfa2wnLCAnZ29vZy5pMThuLkRhdGVUaW1lUGF0dGVybnNfa2xfR0wnLCAnZ29vZy5pMThuLkRhdGVUaW1lUGF0dGVybnNfa2xuJywgJ2dvb2cuaTE4bi5EYXRlVGltZVBhdHRlcm5zX2tsbl9LRScsICdnb29nLmkxOG4uRGF0ZVRpbWVQYXR0ZXJuc19rbV9LSCcsICdnb29nLmkxOG4uRGF0ZVRpbWVQYXR0ZXJuc19rbl9JTicsICdnb29nLmkxOG4uRGF0ZVRpbWVQYXR0ZXJuc19rb19LUCcsICdnb29nLmkxOG4uRGF0ZVRpbWVQYXR0ZXJuc19rb19LUicsICdnb29nLmkxOG4uRGF0ZVRpbWVQYXR0ZXJuc19rb2snLCAnZ29vZy5pMThuLkRhdGVUaW1lUGF0dGVybnNfa29rX0lOJywgJ2dvb2cuaTE4bi5EYXRlVGltZVBhdHRlcm5zX2tzJywgJ2dvb2cuaTE4bi5EYXRlVGltZVBhdHRlcm5zX2tzX0lOJywgJ2dvb2cuaTE4bi5EYXRlVGltZVBhdHRlcm5zX2tzYicsICdnb29nLmkxOG4uRGF0ZVRpbWVQYXR0ZXJuc19rc2JfVFonLCAnZ29vZy5pMThuLkRhdGVUaW1lUGF0dGVybnNfa3NmJywgJ2dvb2cuaTE4bi5EYXRlVGltZVBhdHRlcm5zX2tzZl9DTScsICdnb29nLmkxOG4uRGF0ZVRpbWVQYXR0ZXJuc19rc2gnLCAnZ29vZy5pMThuLkRhdGVUaW1lUGF0dGVybnNfa3NoX0RFJywgJ2dvb2cuaTE4bi5EYXRlVGltZVBhdHRlcm5zX2t1JywgJ2dvb2cuaTE4bi5EYXRlVGltZVBhdHRlcm5zX2t1X1RSJywgJ2dvb2cuaTE4bi5EYXRlVGltZVBhdHRlcm5zX2t3JywgJ2dvb2cuaTE4bi5EYXRlVGltZVBhdHRlcm5zX2t3X0dCJywgJ2dvb2cuaTE4bi5EYXRlVGltZVBhdHRlcm5zX2t5X0tHJywgJ2dvb2cuaTE4bi5EYXRlVGltZVBhdHRlcm5zX2xhZycsICdnb29nLmkxOG4uRGF0ZVRpbWVQYXR0ZXJuc19sYWdfVFonLCAnZ29vZy5pMThuLkRhdGVUaW1lUGF0dGVybnNfbGInLCAnZ29vZy5pMThuLkRhdGVUaW1lUGF0dGVybnNfbGJfTFUnLCAnZ29vZy5pMThuLkRhdGVUaW1lUGF0dGVybnNfbGcnLCAnZ29vZy5pMThuLkRhdGVUaW1lUGF0dGVybnNfbGdfVUcnLCAnZ29vZy5pMThuLkRhdGVUaW1lUGF0dGVybnNfbGt0JywgJ2dvb2cuaTE4bi5EYXRlVGltZVBhdHRlcm5zX2xrdF9VUycsICdnb29nLmkxOG4uRGF0ZVRpbWVQYXR0ZXJuc19sbl9BTycsICdnb29nLmkxOG4uRGF0ZVRpbWVQYXR0ZXJuc19sbl9DRCcsICdnb29nLmkxOG4uRGF0ZVRpbWVQYXR0ZXJuc19sbl9DRicsICdnb29nLmkxOG4uRGF0ZVRpbWVQYXR0ZXJuc19sbl9DRycsICdnb29nLmkxOG4uRGF0ZVRpbWVQYXR0ZXJuc19sb19MQScsICdnb29nLmkxOG4uRGF0ZVRpbWVQYXR0ZXJuc19scmMnLCAnZ29vZy5pMThuLkRhdGVUaW1lUGF0dGVybnNfbHJjX0lRJywgJ2dvb2cuaTE4bi5EYXRlVGltZVBhdHRlcm5zX2xyY19JUicsICdnb29nLmkxOG4uRGF0ZVRpbWVQYXR0ZXJuc19sdF9MVCcsICdnb29nLmkxOG4uRGF0ZVRpbWVQYXR0ZXJuc19sdScsICdnb29nLmkxOG4uRGF0ZVRpbWVQYXR0ZXJuc19sdV9DRCcsICdnb29nLmkxOG4uRGF0ZVRpbWVQYXR0ZXJuc19sdW8nLCAnZ29vZy5pMThuLkRhdGVUaW1lUGF0dGVybnNfbHVvX0tFJywgJ2dvb2cuaTE4bi5EYXRlVGltZVBhdHRlcm5zX2x1eScsICdnb29nLmkxOG4uRGF0ZVRpbWVQYXR0ZXJuc19sdXlfS0UnLCAnZ29vZy5pMThuLkRhdGVUaW1lUGF0dGVybnNfbHZfTFYnLCAnZ29vZy5pMThuLkRhdGVUaW1lUGF0dGVybnNfbWFzJywgJ2dvb2cuaTE4bi5EYXRlVGltZVBhdHRlcm5zX21hc19LRScsICdnb29nLmkxOG4uRGF0ZVRpbWVQYXR0ZXJuc19tYXNfVFonLCAnZ29vZy5pMThuLkRhdGVUaW1lUGF0dGVybnNfbWVyJywgJ2dvb2cuaTE4bi5EYXRlVGltZVBhdHRlcm5zX21lcl9LRScsICdnb29nLmkxOG4uRGF0ZVRpbWVQYXR0ZXJuc19tZmUnLCAnZ29vZy5pMThuLkRhdGVUaW1lUGF0dGVybnNfbWZlX01VJywgJ2dvb2cuaTE4bi5EYXRlVGltZVBhdHRlcm5zX21nJywgJ2dvb2cuaTE4bi5EYXRlVGltZVBhdHRlcm5zX21nX01HJywgJ2dvb2cuaTE4bi5EYXRlVGltZVBhdHRlcm5zX21naCcsICdnb29nLmkxOG4uRGF0ZVRpbWVQYXR0ZXJuc19tZ2hfTVonLCAnZ29vZy5pMThuLkRhdGVUaW1lUGF0dGVybnNfbWdvJywgJ2dvb2cuaTE4bi5EYXRlVGltZVBhdHRlcm5zX21nb19DTScsICdnb29nLmkxOG4uRGF0ZVRpbWVQYXR0ZXJuc19taScsICdnb29nLmkxOG4uRGF0ZVRpbWVQYXR0ZXJuc19taV9OWicsICdnb29nLmkxOG4uRGF0ZVRpbWVQYXR0ZXJuc19ta19NSycsICdnb29nLmkxOG4uRGF0ZVRpbWVQYXR0ZXJuc19tbF9JTicsICdnb29nLmkxOG4uRGF0ZVRpbWVQYXR0ZXJuc19tbl9NTicsICdnb29nLmkxOG4uRGF0ZVRpbWVQYXR0ZXJuc19tcl9JTicsICdnb29nLmkxOG4uRGF0ZVRpbWVQYXR0ZXJuc19tc19CTicsICdnb29nLmkxOG4uRGF0ZVRpbWVQYXR0ZXJuc19tc19NWScsICdnb29nLmkxOG4uRGF0ZVRpbWVQYXR0ZXJuc19tc19TRycsICdnb29nLmkxOG4uRGF0ZVRpbWVQYXR0ZXJuc19tdF9NVCcsICdnb29nLmkxOG4uRGF0ZVRpbWVQYXR0ZXJuc19tdWEnLCAnZ29vZy5pMThuLkRhdGVUaW1lUGF0dGVybnNfbXVhX0NNJywgJ2dvb2cuaTE4bi5EYXRlVGltZVBhdHRlcm5zX215X01NJywgJ2dvb2cuaTE4bi5EYXRlVGltZVBhdHRlcm5zX216bicsICdnb29nLmkxOG4uRGF0ZVRpbWVQYXR0ZXJuc19tem5fSVInLCAnZ29vZy5pMThuLkRhdGVUaW1lUGF0dGVybnNfbmFxJywgJ2dvb2cuaTE4bi5EYXRlVGltZVBhdHRlcm5zX25hcV9OQScsICdnb29nLmkxOG4uRGF0ZVRpbWVQYXR0ZXJuc19uYl9OTycsICdnb29nLmkxOG4uRGF0ZVRpbWVQYXR0ZXJuc19uYl9TSicsICdnb29nLmkxOG4uRGF0ZVRpbWVQYXR0ZXJuc19uZCcsICdnb29nLmkxOG4uRGF0ZVRpbWVQYXR0ZXJuc19uZF9aVycsICdnb29nLmkxOG4uRGF0ZVRpbWVQYXR0ZXJuc19uZHMnLCAnZ29vZy5pMThuLkRhdGVUaW1lUGF0dGVybnNfbmRzX0RFJywgJ2dvb2cuaTE4bi5EYXRlVGltZVBhdHRlcm5zX25kc19OTCcsICdnb29nLmkxOG4uRGF0ZVRpbWVQYXR0ZXJuc19uZV9JTicsICdnb29nLmkxOG4uRGF0ZVRpbWVQYXR0ZXJuc19uZV9OUCcsICdnb29nLmkxOG4uRGF0ZVRpbWVQYXR0ZXJuc19ubF9BVycsICdnb29nLmkxOG4uRGF0ZVRpbWVQYXR0ZXJuc19ubF9CRScsICdnb29nLmkxOG4uRGF0ZVRpbWVQYXR0ZXJuc19ubF9CUScsICdnb29nLmkxOG4uRGF0ZVRpbWVQYXR0ZXJuc19ubF9DVycsICdnb29nLmkxOG4uRGF0ZVRpbWVQYXR0ZXJuc19ubF9OTCcsICdnb29nLmkxOG4uRGF0ZVRpbWVQYXR0ZXJuc19ubF9TUicsICdnb29nLmkxOG4uRGF0ZVRpbWVQYXR0ZXJuc19ubF9TWCcsICdnb29nLmkxOG4uRGF0ZVRpbWVQYXR0ZXJuc19ubWcnLCAnZ29vZy5pMThuLkRhdGVUaW1lUGF0dGVybnNfbm1nX0NNJywgJ2dvb2cuaTE4bi5EYXRlVGltZVBhdHRlcm5zX25uJywgJ2dvb2cuaTE4bi5EYXRlVGltZVBhdHRlcm5zX25uX05PJywgJ2dvb2cuaTE4bi5EYXRlVGltZVBhdHRlcm5zX25uaCcsICdnb29nLmkxOG4uRGF0ZVRpbWVQYXR0ZXJuc19ubmhfQ00nLCAnZ29vZy5pMThuLkRhdGVUaW1lUGF0dGVybnNfbnVzJywgJ2dvb2cuaTE4bi5EYXRlVGltZVBhdHRlcm5zX251c19TUycsICdnb29nLmkxOG4uRGF0ZVRpbWVQYXR0ZXJuc19ueW4nLCAnZ29vZy5pMThuLkRhdGVUaW1lUGF0dGVybnNfbnluX1VHJywgJ2dvb2cuaTE4bi5EYXRlVGltZVBhdHRlcm5zX29tJywgJ2dvb2cuaTE4bi5EYXRlVGltZVBhdHRlcm5zX29tX0VUJywgJ2dvb2cuaTE4bi5EYXRlVGltZVBhdHRlcm5zX29tX0tFJywgJ2dvb2cuaTE4bi5EYXRlVGltZVBhdHRlcm5zX29yX0lOJywgJ2dvb2cuaTE4bi5EYXRlVGltZVBhdHRlcm5zX29zJywgJ2dvb2cuaTE4bi5EYXRlVGltZVBhdHRlcm5zX29zX0dFJywgJ2dvb2cuaTE4bi5EYXRlVGltZVBhdHRlcm5zX29zX1JVJywgJ2dvb2cuaTE4bi5EYXRlVGltZVBhdHRlcm5zX3BhX0FyYWInLCAnZ29vZy5pMThuLkRhdGVUaW1lUGF0dGVybnNfcGFfQXJhYl9QSycsICdnb29nLmkxOG4uRGF0ZVRpbWVQYXR0ZXJuc19wYV9HdXJ1JywgJ2dvb2cuaTE4bi5EYXRlVGltZVBhdHRlcm5zX3BhX0d1cnVfSU4nLCAnZ29vZy5pMThuLkRhdGVUaW1lUGF0dGVybnNfcGxfUEwnLCAnZ29vZy5pMThuLkRhdGVUaW1lUGF0dGVybnNfcHMnLCAnZ29vZy5pMThuLkRhdGVUaW1lUGF0dGVybnNfcHNfQUYnLCAnZ29vZy5pMThuLkRhdGVUaW1lUGF0dGVybnNfcHNfUEsnLCAnZ29vZy5pMThuLkRhdGVUaW1lUGF0dGVybnNfcHRfQU8nLCAnZ29vZy5pMThuLkRhdGVUaW1lUGF0dGVybnNfcHRfQ0gnLCAnZ29vZy5pMThuLkRhdGVUaW1lUGF0dGVybnNfcHRfQ1YnLCAnZ29vZy5pMThuLkRhdGVUaW1lUGF0dGVybnNfcHRfR1EnLCAnZ29vZy5pMThuLkRhdGVUaW1lUGF0dGVybnNfcHRfR1cnLCAnZ29vZy5pMThuLkRhdGVUaW1lUGF0dGVybnNfcHRfTFUnLCAnZ29vZy5pMThuLkRhdGVUaW1lUGF0dGVybnNfcHRfTU8nLCAnZ29vZy5pMThuLkRhdGVUaW1lUGF0dGVybnNfcHRfTVonLCAnZ29vZy5pMThuLkRhdGVUaW1lUGF0dGVybnNfcHRfU1QnLCAnZ29vZy5pMThuLkRhdGVUaW1lUGF0dGVybnNfcHRfVEwnLCAnZ29vZy5pMThuLkRhdGVUaW1lUGF0dGVybnNfcXUnLCAnZ29vZy5pMThuLkRhdGVUaW1lUGF0dGVybnNfcXVfQk8nLCAnZ29vZy5pMThuLkRhdGVUaW1lUGF0dGVybnNfcXVfRUMnLCAnZ29vZy5pMThuLkRhdGVUaW1lUGF0dGVybnNfcXVfUEUnLCAnZ29vZy5pMThuLkRhdGVUaW1lUGF0dGVybnNfcm0nLCAnZ29vZy5pMThuLkRhdGVUaW1lUGF0dGVybnNfcm1fQ0gnLCAnZ29vZy5pMThuLkRhdGVUaW1lUGF0dGVybnNfcm4nLCAnZ29vZy5pMThuLkRhdGVUaW1lUGF0dGVybnNfcm5fQkknLCAnZ29vZy5pMThuLkRhdGVUaW1lUGF0dGVybnNfcm9fTUQnLCAnZ29vZy5pMThuLkRhdGVUaW1lUGF0dGVybnNfcm9fUk8nLCAnZ29vZy5pMThuLkRhdGVUaW1lUGF0dGVybnNfcm9mJywgJ2dvb2cuaTE4bi5EYXRlVGltZVBhdHRlcm5zX3JvZl9UWicsICdnb29nLmkxOG4uRGF0ZVRpbWVQYXR0ZXJuc19ydV9CWScsICdnb29nLmkxOG4uRGF0ZVRpbWVQYXR0ZXJuc19ydV9LRycsICdnb29nLmkxOG4uRGF0ZVRpbWVQYXR0ZXJuc19ydV9LWicsICdnb29nLmkxOG4uRGF0ZVRpbWVQYXR0ZXJuc19ydV9NRCcsICdnb29nLmkxOG4uRGF0ZVRpbWVQYXR0ZXJuc19ydV9SVScsICdnb29nLmkxOG4uRGF0ZVRpbWVQYXR0ZXJuc19ydV9VQScsICdnb29nLmkxOG4uRGF0ZVRpbWVQYXR0ZXJuc19ydycsICdnb29nLmkxOG4uRGF0ZVRpbWVQYXR0ZXJuc19yd19SVycsICdnb29nLmkxOG4uRGF0ZVRpbWVQYXR0ZXJuc19yd2snLCAnZ29vZy5pMThuLkRhdGVUaW1lUGF0dGVybnNfcndrX1RaJywgJ2dvb2cuaTE4bi5EYXRlVGltZVBhdHRlcm5zX3NhaCcsICdnb29nLmkxOG4uRGF0ZVRpbWVQYXR0ZXJuc19zYWhfUlUnLCAnZ29vZy5pMThuLkRhdGVUaW1lUGF0dGVybnNfc2FxJywgJ2dvb2cuaTE4bi5EYXRlVGltZVBhdHRlcm5zX3NhcV9LRScsICdnb29nLmkxOG4uRGF0ZVRpbWVQYXR0ZXJuc19zYnAnLCAnZ29vZy5pMThuLkRhdGVUaW1lUGF0dGVybnNfc2JwX1RaJywgJ2dvb2cuaTE4bi5EYXRlVGltZVBhdHRlcm5zX3NkJywgJ2dvb2cuaTE4bi5EYXRlVGltZVBhdHRlcm5zX3NkX1BLJywgJ2dvb2cuaTE4bi5EYXRlVGltZVBhdHRlcm5zX3NlJywgJ2dvb2cuaTE4bi5EYXRlVGltZVBhdHRlcm5zX3NlX0ZJJywgJ2dvb2cuaTE4bi5EYXRlVGltZVBhdHRlcm5zX3NlX05PJywgJ2dvb2cuaTE4bi5EYXRlVGltZVBhdHRlcm5zX3NlX1NFJywgJ2dvb2cuaTE4bi5EYXRlVGltZVBhdHRlcm5zX3NlaCcsICdnb29nLmkxOG4uRGF0ZVRpbWVQYXR0ZXJuc19zZWhfTVonLCAnZ29vZy5pMThuLkRhdGVUaW1lUGF0dGVybnNfc2VzJywgJ2dvb2cuaTE4bi5EYXRlVGltZVBhdHRlcm5zX3Nlc19NTCcsICdnb29nLmkxOG4uRGF0ZVRpbWVQYXR0ZXJuc19zZycsICdnb29nLmkxOG4uRGF0ZVRpbWVQYXR0ZXJuc19zZ19DRicsICdnb29nLmkxOG4uRGF0ZVRpbWVQYXR0ZXJuc19zaGknLCAnZ29vZy5pMThuLkRhdGVUaW1lUGF0dGVybnNfc2hpX0xhdG4nLCAnZ29vZy5pMThuLkRhdGVUaW1lUGF0dGVybnNfc2hpX0xhdG5fTUEnLCAnZ29vZy5pMThuLkRhdGVUaW1lUGF0dGVybnNfc2hpX1RmbmcnLCAnZ29vZy5pMThuLkRhdGVUaW1lUGF0dGVybnNfc2hpX1RmbmdfTUEnLCAnZ29vZy5pMThuLkRhdGVUaW1lUGF0dGVybnNfc2lfTEsnLCAnZ29vZy5pMThuLkRhdGVUaW1lUGF0dGVybnNfc2tfU0snLCAnZ29vZy5pMThuLkRhdGVUaW1lUGF0dGVybnNfc2xfU0knLCAnZ29vZy5pMThuLkRhdGVUaW1lUGF0dGVybnNfc21uJywgJ2dvb2cuaTE4bi5EYXRlVGltZVBhdHRlcm5zX3Ntbl9GSScsICdnb29nLmkxOG4uRGF0ZVRpbWVQYXR0ZXJuc19zbicsICdnb29nLmkxOG4uRGF0ZVRpbWVQYXR0ZXJuc19zbl9aVycsICdnb29nLmkxOG4uRGF0ZVRpbWVQYXR0ZXJuc19zbycsICdnb29nLmkxOG4uRGF0ZVRpbWVQYXR0ZXJuc19zb19ESicsICdnb29nLmkxOG4uRGF0ZVRpbWVQYXR0ZXJuc19zb19FVCcsICdnb29nLmkxOG4uRGF0ZVRpbWVQYXR0ZXJuc19zb19LRScsICdnb29nLmkxOG4uRGF0ZVRpbWVQYXR0ZXJuc19zb19TTycsICdnb29nLmkxOG4uRGF0ZVRpbWVQYXR0ZXJuc19zcV9BTCcsICdnb29nLmkxOG4uRGF0ZVRpbWVQYXR0ZXJuc19zcV9NSycsICdnb29nLmkxOG4uRGF0ZVRpbWVQYXR0ZXJuc19zcV9YSycsICdnb29nLmkxOG4uRGF0ZVRpbWVQYXR0ZXJuc19zcl9DeXJsJywgJ2dvb2cuaTE4bi5EYXRlVGltZVBhdHRlcm5zX3NyX0N5cmxfQkEnLCAnZ29vZy5pMThuLkRhdGVUaW1lUGF0dGVybnNfc3JfQ3lybF9NRScsICdnb29nLmkxOG4uRGF0ZVRpbWVQYXR0ZXJuc19zcl9DeXJsX1JTJywgJ2dvb2cuaTE4bi5EYXRlVGltZVBhdHRlcm5zX3NyX0N5cmxfWEsnLCAnZ29vZy5pMThuLkRhdGVUaW1lUGF0dGVybnNfc3JfTGF0bl9CQScsICdnb29nLmkxOG4uRGF0ZVRpbWVQYXR0ZXJuc19zcl9MYXRuX01FJywgJ2dvb2cuaTE4bi5EYXRlVGltZVBhdHRlcm5zX3NyX0xhdG5fUlMnLCAnZ29vZy5pMThuLkRhdGVUaW1lUGF0dGVybnNfc3JfTGF0bl9YSycsICdnb29nLmkxOG4uRGF0ZVRpbWVQYXR0ZXJuc19zdl9BWCcsICdnb29nLmkxOG4uRGF0ZVRpbWVQYXR0ZXJuc19zdl9GSScsICdnb29nLmkxOG4uRGF0ZVRpbWVQYXR0ZXJuc19zdl9TRScsICdnb29nLmkxOG4uRGF0ZVRpbWVQYXR0ZXJuc19zd19DRCcsICdnb29nLmkxOG4uRGF0ZVRpbWVQYXR0ZXJuc19zd19LRScsICdnb29nLmkxOG4uRGF0ZVRpbWVQYXR0ZXJuc19zd19UWicsICdnb29nLmkxOG4uRGF0ZVRpbWVQYXR0ZXJuc19zd19VRycsICdnb29nLmkxOG4uRGF0ZVRpbWVQYXR0ZXJuc190YV9JTicsICdnb29nLmkxOG4uRGF0ZVRpbWVQYXR0ZXJuc190YV9MSycsICdnb29nLmkxOG4uRGF0ZVRpbWVQYXR0ZXJuc190YV9NWScsICdnb29nLmkxOG4uRGF0ZVRpbWVQYXR0ZXJuc190YV9TRycsICdnb29nLmkxOG4uRGF0ZVRpbWVQYXR0ZXJuc190ZV9JTicsICdnb29nLmkxOG4uRGF0ZVRpbWVQYXR0ZXJuc190ZW8nLCAnZ29vZy5pMThuLkRhdGVUaW1lUGF0dGVybnNfdGVvX0tFJywgJ2dvb2cuaTE4bi5EYXRlVGltZVBhdHRlcm5zX3Rlb19VRycsICdnb29nLmkxOG4uRGF0ZVRpbWVQYXR0ZXJuc190ZycsICdnb29nLmkxOG4uRGF0ZVRpbWVQYXR0ZXJuc190Z19USicsICdnb29nLmkxOG4uRGF0ZVRpbWVQYXR0ZXJuc190aF9USCcsICdnb29nLmkxOG4uRGF0ZVRpbWVQYXR0ZXJuc190aScsICdnb29nLmkxOG4uRGF0ZVRpbWVQYXR0ZXJuc190aV9FUicsICdnb29nLmkxOG4uRGF0ZVRpbWVQYXR0ZXJuc190aV9FVCcsICdnb29nLmkxOG4uRGF0ZVRpbWVQYXR0ZXJuc190aycsICdnb29nLmkxOG4uRGF0ZVRpbWVQYXR0ZXJuc190a19UTScsICdnb29nLmkxOG4uRGF0ZVRpbWVQYXR0ZXJuc190bycsICdnb29nLmkxOG4uRGF0ZVRpbWVQYXR0ZXJuc190b19UTycsICdnb29nLmkxOG4uRGF0ZVRpbWVQYXR0ZXJuc190cl9DWScsICdnb29nLmkxOG4uRGF0ZVRpbWVQYXR0ZXJuc190cl9UUicsICdnb29nLmkxOG4uRGF0ZVRpbWVQYXR0ZXJuc190dCcsICdnb29nLmkxOG4uRGF0ZVRpbWVQYXR0ZXJuc190dF9SVScsICdnb29nLmkxOG4uRGF0ZVRpbWVQYXR0ZXJuc190d3EnLCAnZ29vZy5pMThuLkRhdGVUaW1lUGF0dGVybnNfdHdxX05FJywgJ2dvb2cuaTE4bi5EYXRlVGltZVBhdHRlcm5zX3R6bScsICdnb29nLmkxOG4uRGF0ZVRpbWVQYXR0ZXJuc190em1fTUEnLCAnZ29vZy5pMThuLkRhdGVUaW1lUGF0dGVybnNfdWcnLCAnZ29vZy5pMThuLkRhdGVUaW1lUGF0dGVybnNfdWdfQ04nLCAnZ29vZy5pMThuLkRhdGVUaW1lUGF0dGVybnNfdWtfVUEnLCAnZ29vZy5pMThuLkRhdGVUaW1lUGF0dGVybnNfdXJfSU4nLCAnZ29vZy5pMThuLkRhdGVUaW1lUGF0dGVybnNfdXJfUEsnLCAnZ29vZy5pMThuLkRhdGVUaW1lUGF0dGVybnNfdXpfQXJhYicsICdnb29nLmkxOG4uRGF0ZVRpbWVQYXR0ZXJuc191el9BcmFiX0FGJywgJ2dvb2cuaTE4bi5EYXRlVGltZVBhdHRlcm5zX3V6X0N5cmwnLCAnZ29vZy5pMThuLkRhdGVUaW1lUGF0dGVybnNfdXpfQ3lybF9VWicsICdnb29nLmkxOG4uRGF0ZVRpbWVQYXR0ZXJuc191el9MYXRuJywgJ2dvb2cuaTE4bi5EYXRlVGltZVBhdHRlcm5zX3V6X0xhdG5fVVonLCAnZ29vZy5pMThuLkRhdGVUaW1lUGF0dGVybnNfdmFpJywgJ2dvb2cuaTE4bi5EYXRlVGltZVBhdHRlcm5zX3ZhaV9MYXRuJywgJ2dvb2cuaTE4bi5EYXRlVGltZVBhdHRlcm5zX3ZhaV9MYXRuX0xSJywgJ2dvb2cuaTE4bi5EYXRlVGltZVBhdHRlcm5zX3ZhaV9WYWlpJywgJ2dvb2cuaTE4bi5EYXRlVGltZVBhdHRlcm5zX3ZhaV9WYWlpX0xSJywgJ2dvb2cuaTE4bi5EYXRlVGltZVBhdHRlcm5zX3ZpX1ZOJywgJ2dvb2cuaTE4bi5EYXRlVGltZVBhdHRlcm5zX3Z1bicsICdnb29nLmkxOG4uRGF0ZVRpbWVQYXR0ZXJuc192dW5fVFonLCAnZ29vZy5pMThuLkRhdGVUaW1lUGF0dGVybnNfd2FlJywgJ2dvb2cuaTE4bi5EYXRlVGltZVBhdHRlcm5zX3dhZV9DSCcsICdnb29nLmkxOG4uRGF0ZVRpbWVQYXR0ZXJuc193bycsICdnb29nLmkxOG4uRGF0ZVRpbWVQYXR0ZXJuc193b19TTicsICdnb29nLmkxOG4uRGF0ZVRpbWVQYXR0ZXJuc194aCcsICdnb29nLmkxOG4uRGF0ZVRpbWVQYXR0ZXJuc194aF9aQScsICdnb29nLmkxOG4uRGF0ZVRpbWVQYXR0ZXJuc194b2cnLCAnZ29vZy5pMThuLkRhdGVUaW1lUGF0dGVybnNfeG9nX1VHJywgJ2dvb2cuaTE4bi5EYXRlVGltZVBhdHRlcm5zX3lhdicsICdnb29nLmkxOG4uRGF0ZVRpbWVQYXR0ZXJuc195YXZfQ00nLCAnZ29vZy5pMThuLkRhdGVUaW1lUGF0dGVybnNfeWknLCAnZ29vZy5pMThuLkRhdGVUaW1lUGF0dGVybnNfeWlfMDAxJywgJ2dvb2cuaTE4bi5EYXRlVGltZVBhdHRlcm5zX3lvJywgJ2dvb2cuaTE4bi5EYXRlVGltZVBhdHRlcm5zX3lvX0JKJywgJ2dvb2cuaTE4bi5EYXRlVGltZVBhdHRlcm5zX3lvX05HJywgJ2dvb2cuaTE4bi5EYXRlVGltZVBhdHRlcm5zX3l1ZScsICdnb29nLmkxOG4uRGF0ZVRpbWVQYXR0ZXJuc195dWVfSGFucycsICdnb29nLmkxOG4uRGF0ZVRpbWVQYXR0ZXJuc195dWVfSGFuc19DTicsICdnb29nLmkxOG4uRGF0ZVRpbWVQYXR0ZXJuc195dWVfSGFudCcsICdnb29nLmkxOG4uRGF0ZVRpbWVQYXR0ZXJuc195dWVfSGFudF9ISycsICdnb29nLmkxOG4uRGF0ZVRpbWVQYXR0ZXJuc196Z2gnLCAnZ29vZy5pMThuLkRhdGVUaW1lUGF0dGVybnNfemdoX01BJywgJ2dvb2cuaTE4bi5EYXRlVGltZVBhdHRlcm5zX3poX0hhbnMnLCAnZ29vZy5pMThuLkRhdGVUaW1lUGF0dGVybnNfemhfSGFuc19DTicsICdnb29nLmkxOG4uRGF0ZVRpbWVQYXR0ZXJuc196aF9IYW5zX0hLJywgJ2dvb2cuaTE4bi5EYXRlVGltZVBhdHRlcm5zX3poX0hhbnNfTU8nLCAnZ29vZy5pMThuLkRhdGVUaW1lUGF0dGVybnNfemhfSGFuc19TRycsICdnb29nLmkxOG4uRGF0ZVRpbWVQYXR0ZXJuc196aF9IYW50JywgJ2dvb2cuaTE4bi5EYXRlVGltZVBhdHRlcm5zX3poX0hhbnRfSEsnLCAnZ29vZy5pMThuLkRhdGVUaW1lUGF0dGVybnNfemhfSGFudF9NTycsICdnb29nLmkxOG4uRGF0ZVRpbWVQYXR0ZXJuc196aF9IYW50X1RXJywgJ2dvb2cuaTE4bi5EYXRlVGltZVBhdHRlcm5zX3p1X1pBJ10sIFsnZ29vZy5pMThuLkRhdGVUaW1lUGF0dGVybnMnXSwge30pOwpnb29nLmFkZERlcGVuZGVuY3koJ2kxOG4vZGF0ZXRpbWVzeW1ib2xzLmpzJywgWydnb29nLmkxOG4uRGF0ZVRpbWVTeW1ib2xzJywgJ2dvb2cuaTE4bi5EYXRlVGltZVN5bWJvbHNUeXBlJywgJ2dvb2cuaTE4bi5EYXRlVGltZVN5bWJvbHNfYWYnLCAnZ29vZy5pMThuLkRhdGVUaW1lU3ltYm9sc19hbScsICdnb29nLmkxOG4uRGF0ZVRpbWVTeW1ib2xzX2FyJywgJ2dvb2cuaTE4bi5EYXRlVGltZVN5bWJvbHNfYXJfRFonLCAnZ29vZy5pMThuLkRhdGVUaW1lU3ltYm9sc19hcl9FRycsICdnb29nLmkxOG4uRGF0ZVRpbWVTeW1ib2xzX2F6JywgJ2dvb2cuaTE4bi5EYXRlVGltZVN5bWJvbHNfYmUnLCAnZ29vZy5pMThuLkRhdGVUaW1lU3ltYm9sc19iZycsICdnb29nLmkxOG4uRGF0ZVRpbWVTeW1ib2xzX2JuJywgJ2dvb2cuaTE4bi5EYXRlVGltZVN5bWJvbHNfYnInLCAnZ29vZy5pMThuLkRhdGVUaW1lU3ltYm9sc19icycsICdnb29nLmkxOG4uRGF0ZVRpbWVTeW1ib2xzX2NhJywgJ2dvb2cuaTE4bi5EYXRlVGltZVN5bWJvbHNfY2hyJywgJ2dvb2cuaTE4bi5EYXRlVGltZVN5bWJvbHNfY3MnLCAnZ29vZy5pMThuLkRhdGVUaW1lU3ltYm9sc19jeScsICdnb29nLmkxOG4uRGF0ZVRpbWVTeW1ib2xzX2RhJywgJ2dvb2cuaTE4bi5EYXRlVGltZVN5bWJvbHNfZGUnLCAnZ29vZy5pMThuLkRhdGVUaW1lU3ltYm9sc19kZV9BVCcsICdnb29nLmkxOG4uRGF0ZVRpbWVTeW1ib2xzX2RlX0NIJywgJ2dvb2cuaTE4bi5EYXRlVGltZVN5bWJvbHNfZWwnLCAnZ29vZy5pMThuLkRhdGVUaW1lU3ltYm9sc19lbicsICdnb29nLmkxOG4uRGF0ZVRpbWVTeW1ib2xzX2VuX0FVJywgJ2dvb2cuaTE4bi5EYXRlVGltZVN5bWJvbHNfZW5fQ0EnLCAnZ29vZy5pMThuLkRhdGVUaW1lU3ltYm9sc19lbl9HQicsICdnb29nLmkxOG4uRGF0ZVRpbWVTeW1ib2xzX2VuX0lFJywgJ2dvb2cuaTE4bi5EYXRlVGltZVN5bWJvbHNfZW5fSU4nLCAnZ29vZy5pMThuLkRhdGVUaW1lU3ltYm9sc19lbl9JU08nLCAnZ29vZy5pMThuLkRhdGVUaW1lU3ltYm9sc19lbl9TRycsICdnb29nLmkxOG4uRGF0ZVRpbWVTeW1ib2xzX2VuX1VTJywgJ2dvb2cuaTE4bi5EYXRlVGltZVN5bWJvbHNfZW5fWkEnLCAnZ29vZy5pMThuLkRhdGVUaW1lU3ltYm9sc19lcycsICdnb29nLmkxOG4uRGF0ZVRpbWVTeW1ib2xzX2VzXzQxOScsICdnb29nLmkxOG4uRGF0ZVRpbWVTeW1ib2xzX2VzX0VTJywgJ2dvb2cuaTE4bi5EYXRlVGltZVN5bWJvbHNfZXNfTVgnLCAnZ29vZy5pMThuLkRhdGVUaW1lU3ltYm9sc19lc19VUycsICdnb29nLmkxOG4uRGF0ZVRpbWVTeW1ib2xzX2V0JywgJ2dvb2cuaTE4bi5EYXRlVGltZVN5bWJvbHNfZXUnLCAnZ29vZy5pMThuLkRhdGVUaW1lU3ltYm9sc19mYScsICdnb29nLmkxOG4uRGF0ZVRpbWVTeW1ib2xzX2ZpJywgJ2dvb2cuaTE4bi5EYXRlVGltZVN5bWJvbHNfZmlsJywgJ2dvb2cuaTE4bi5EYXRlVGltZVN5bWJvbHNfZnInLCAnZ29vZy5pMThuLkRhdGVUaW1lU3ltYm9sc19mcl9DQScsICdnb29nLmkxOG4uRGF0ZVRpbWVTeW1ib2xzX2dhJywgJ2dvb2cuaTE4bi5EYXRlVGltZVN5bWJvbHNfZ2wnLCAnZ29vZy5pMThuLkRhdGVUaW1lU3ltYm9sc19nc3cnLCAnZ29vZy5pMThuLkRhdGVUaW1lU3ltYm9sc19ndScsICdnb29nLmkxOG4uRGF0ZVRpbWVTeW1ib2xzX2hhdycsICdnb29nLmkxOG4uRGF0ZVRpbWVTeW1ib2xzX2hlJywgJ2dvb2cuaTE4bi5EYXRlVGltZVN5bWJvbHNfaGknLCAnZ29vZy5pMThuLkRhdGVUaW1lU3ltYm9sc19ocicsICdnb29nLmkxOG4uRGF0ZVRpbWVTeW1ib2xzX2h1JywgJ2dvb2cuaTE4bi5EYXRlVGltZVN5bWJvbHNfaHknLCAnZ29vZy5pMThuLkRhdGVUaW1lU3ltYm9sc19pZCcsICdnb29nLmkxOG4uRGF0ZVRpbWVTeW1ib2xzX2luJywgJ2dvb2cuaTE4bi5EYXRlVGltZVN5bWJvbHNfaXMnLCAnZ29vZy5pMThuLkRhdGVUaW1lU3ltYm9sc19pdCcsICdnb29nLmkxOG4uRGF0ZVRpbWVTeW1ib2xzX2l3JywgJ2dvb2cuaTE4bi5EYXRlVGltZVN5bWJvbHNfamEnLCAnZ29vZy5pMThuLkRhdGVUaW1lU3ltYm9sc19rYScsICdnb29nLmkxOG4uRGF0ZVRpbWVTeW1ib2xzX2trJywgJ2dvb2cuaTE4bi5EYXRlVGltZVN5bWJvbHNfa20nLCAnZ29vZy5pMThuLkRhdGVUaW1lU3ltYm9sc19rbicsICdnb29nLmkxOG4uRGF0ZVRpbWVTeW1ib2xzX2tvJywgJ2dvb2cuaTE4bi5EYXRlVGltZVN5bWJvbHNfa3knLCAnZ29vZy5pMThuLkRhdGVUaW1lU3ltYm9sc19sbicsICdnb29nLmkxOG4uRGF0ZVRpbWVTeW1ib2xzX2xvJywgJ2dvb2cuaTE4bi5EYXRlVGltZVN5bWJvbHNfbHQnLCAnZ29vZy5pMThuLkRhdGVUaW1lU3ltYm9sc19sdicsICdnb29nLmkxOG4uRGF0ZVRpbWVTeW1ib2xzX21rJywgJ2dvb2cuaTE4bi5EYXRlVGltZVN5bWJvbHNfbWwnLCAnZ29vZy5pMThuLkRhdGVUaW1lU3ltYm9sc19tbicsICdnb29nLmkxOG4uRGF0ZVRpbWVTeW1ib2xzX21vJywgJ2dvb2cuaTE4bi5EYXRlVGltZVN5bWJvbHNfbXInLCAnZ29vZy5pMThuLkRhdGVUaW1lU3ltYm9sc19tcycsICdnb29nLmkxOG4uRGF0ZVRpbWVTeW1ib2xzX210JywgJ2dvb2cuaTE4bi5EYXRlVGltZVN5bWJvbHNfbXknLCAnZ29vZy5pMThuLkRhdGVUaW1lU3ltYm9sc19uYicsICdnb29nLmkxOG4uRGF0ZVRpbWVTeW1ib2xzX25lJywgJ2dvb2cuaTE4bi5EYXRlVGltZVN5bWJvbHNfbmwnLCAnZ29vZy5pMThuLkRhdGVUaW1lU3ltYm9sc19ubycsICdnb29nLmkxOG4uRGF0ZVRpbWVTeW1ib2xzX25vX05PJywgJ2dvb2cuaTE4bi5EYXRlVGltZVN5bWJvbHNfb3InLCAnZ29vZy5pMThuLkRhdGVUaW1lU3ltYm9sc19wYScsICdnb29nLmkxOG4uRGF0ZVRpbWVTeW1ib2xzX3BsJywgJ2dvb2cuaTE4bi5EYXRlVGltZVN5bWJvbHNfcHQnLCAnZ29vZy5pMThuLkRhdGVUaW1lU3ltYm9sc19wdF9CUicsICdnb29nLmkxOG4uRGF0ZVRpbWVTeW1ib2xzX3B0X1BUJywgJ2dvb2cuaTE4bi5EYXRlVGltZVN5bWJvbHNfcm8nLCAnZ29vZy5pMThuLkRhdGVUaW1lU3ltYm9sc19ydScsICdnb29nLmkxOG4uRGF0ZVRpbWVTeW1ib2xzX3NoJywgJ2dvb2cuaTE4bi5EYXRlVGltZVN5bWJvbHNfc2knLCAnZ29vZy5pMThuLkRhdGVUaW1lU3ltYm9sc19zaycsICdnb29nLmkxOG4uRGF0ZVRpbWVTeW1ib2xzX3NsJywgJ2dvb2cuaTE4bi5EYXRlVGltZVN5bWJvbHNfc3EnLCAnZ29vZy5pMThuLkRhdGVUaW1lU3ltYm9sc19zcicsICdnb29nLmkxOG4uRGF0ZVRpbWVTeW1ib2xzX3NyX0xhdG4nLCAnZ29vZy5pMThuLkRhdGVUaW1lU3ltYm9sc19zdicsICdnb29nLmkxOG4uRGF0ZVRpbWVTeW1ib2xzX3N3JywgJ2dvb2cuaTE4bi5EYXRlVGltZVN5bWJvbHNfdGEnLCAnZ29vZy5pMThuLkRhdGVUaW1lU3ltYm9sc190ZScsICdnb29nLmkxOG4uRGF0ZVRpbWVTeW1ib2xzX3RoJywgJ2dvb2cuaTE4bi5EYXRlVGltZVN5bWJvbHNfdGwnLCAnZ29vZy5pMThuLkRhdGVUaW1lU3ltYm9sc190cicsICdnb29nLmkxOG4uRGF0ZVRpbWVTeW1ib2xzX3VrJywgJ2dvb2cuaTE4bi5EYXRlVGltZVN5bWJvbHNfdXInLCAnZ29vZy5pMThuLkRhdGVUaW1lU3ltYm9sc191eicsICdnb29nLmkxOG4uRGF0ZVRpbWVTeW1ib2xzX3ZpJywgJ2dvb2cuaTE4bi5EYXRlVGltZVN5bWJvbHNfemgnLCAnZ29vZy5pMThuLkRhdGVUaW1lU3ltYm9sc196aF9DTicsICdnb29nLmkxOG4uRGF0ZVRpbWVTeW1ib2xzX3poX0hLJywgJ2dvb2cuaTE4bi5EYXRlVGltZVN5bWJvbHNfemhfVFcnLCAnZ29vZy5pMThuLkRhdGVUaW1lU3ltYm9sc196dSddLCBbXSwge30pOwpnb29nLmFkZERlcGVuZGVuY3koJ2kxOG4vZGF0ZXRpbWVzeW1ib2xzZXh0LmpzJywgWydnb29nLmkxOG4uRGF0ZVRpbWVTeW1ib2xzRXh0JywgJ2dvb2cuaTE4bi5EYXRlVGltZVN5bWJvbHNfYWZfTkEnLCAnZ29vZy5pMThuLkRhdGVUaW1lU3ltYm9sc19hZl9aQScsICdnb29nLmkxOG4uRGF0ZVRpbWVTeW1ib2xzX2FncScsICdnb29nLmkxOG4uRGF0ZVRpbWVTeW1ib2xzX2FncV9DTScsICdnb29nLmkxOG4uRGF0ZVRpbWVTeW1ib2xzX2FrJywgJ2dvb2cuaTE4bi5EYXRlVGltZVN5bWJvbHNfYWtfR0gnLCAnZ29vZy5pMThuLkRhdGVUaW1lU3ltYm9sc19hbV9FVCcsICdnb29nLmkxOG4uRGF0ZVRpbWVTeW1ib2xzX2FyXzAwMScsICdnb29nLmkxOG4uRGF0ZVRpbWVTeW1ib2xzX2FyX0FFJywgJ2dvb2cuaTE4bi5EYXRlVGltZVN5bWJvbHNfYXJfQkgnLCAnZ29vZy5pMThuLkRhdGVUaW1lU3ltYm9sc19hcl9ESicsICdnb29nLmkxOG4uRGF0ZVRpbWVTeW1ib2xzX2FyX0VIJywgJ2dvb2cuaTE4bi5EYXRlVGltZVN5bWJvbHNfYXJfRVInLCAnZ29vZy5pMThuLkRhdGVUaW1lU3ltYm9sc19hcl9JTCcsICdnb29nLmkxOG4uRGF0ZVRpbWVTeW1ib2xzX2FyX0lRJywgJ2dvb2cuaTE4bi5EYXRlVGltZVN5bWJvbHNfYXJfSk8nLCAnZ29vZy5pMThuLkRhdGVUaW1lU3ltYm9sc19hcl9LTScsICdnb29nLmkxOG4uRGF0ZVRpbWVTeW1ib2xzX2FyX0tXJywgJ2dvb2cuaTE4bi5EYXRlVGltZVN5bWJvbHNfYXJfTEInLCAnZ29vZy5pMThuLkRhdGVUaW1lU3ltYm9sc19hcl9MWScsICdnb29nLmkxOG4uRGF0ZVRpbWVTeW1ib2xzX2FyX01BJywgJ2dvb2cuaTE4bi5EYXRlVGltZVN5bWJvbHNfYXJfTVInLCAnZ29vZy5pMThuLkRhdGVUaW1lU3ltYm9sc19hcl9PTScsICdnb29nLmkxOG4uRGF0ZVRpbWVTeW1ib2xzX2FyX1BTJywgJ2dvb2cuaTE4bi5EYXRlVGltZVN5bWJvbHNfYXJfUUEnLCAnZ29vZy5pMThuLkRhdGVUaW1lU3ltYm9sc19hcl9TQScsICdnb29nLmkxOG4uRGF0ZVRpbWVTeW1ib2xzX2FyX1NEJywgJ2dvb2cuaTE4bi5EYXRlVGltZVN5bWJvbHNfYXJfU08nLCAnZ29vZy5pMThuLkRhdGVUaW1lU3ltYm9sc19hcl9TUycsICdnb29nLmkxOG4uRGF0ZVRpbWVTeW1ib2xzX2FyX1NZJywgJ2dvb2cuaTE4bi5EYXRlVGltZVN5bWJvbHNfYXJfVEQnLCAnZ29vZy5pMThuLkRhdGVUaW1lU3ltYm9sc19hcl9UTicsICdnb29nLmkxOG4uRGF0ZVRpbWVTeW1ib2xzX2FyX1hCJywgJ2dvb2cuaTE4bi5EYXRlVGltZVN5bWJvbHNfYXJfWUUnLCAnZ29vZy5pMThuLkRhdGVUaW1lU3ltYm9sc19hcycsICdnb29nLmkxOG4uRGF0ZVRpbWVTeW1ib2xzX2FzX0lOJywgJ2dvb2cuaTE4bi5EYXRlVGltZVN5bWJvbHNfYXNhJywgJ2dvb2cuaTE4bi5EYXRlVGltZVN5bWJvbHNfYXNhX1RaJywgJ2dvb2cuaTE4bi5EYXRlVGltZVN5bWJvbHNfYXN0JywgJ2dvb2cuaTE4bi5EYXRlVGltZVN5bWJvbHNfYXN0X0VTJywgJ2dvb2cuaTE4bi5EYXRlVGltZVN5bWJvbHNfYXpfQ3lybCcsICdnb29nLmkxOG4uRGF0ZVRpbWVTeW1ib2xzX2F6X0N5cmxfQVonLCAnZ29vZy5pMThuLkRhdGVUaW1lU3ltYm9sc19hel9MYXRuJywgJ2dvb2cuaTE4bi5EYXRlVGltZVN5bWJvbHNfYXpfTGF0bl9BWicsICdnb29nLmkxOG4uRGF0ZVRpbWVTeW1ib2xzX2JhcycsICdnb29nLmkxOG4uRGF0ZVRpbWVTeW1ib2xzX2Jhc19DTScsICdnb29nLmkxOG4uRGF0ZVRpbWVTeW1ib2xzX2JlX0JZJywgJ2dvb2cuaTE4bi5EYXRlVGltZVN5bWJvbHNfYmVtJywgJ2dvb2cuaTE4bi5EYXRlVGltZVN5bWJvbHNfYmVtX1pNJywgJ2dvb2cuaTE4bi5EYXRlVGltZVN5bWJvbHNfYmV6JywgJ2dvb2cuaTE4bi5EYXRlVGltZVN5bWJvbHNfYmV6X1RaJywgJ2dvb2cuaTE4bi5EYXRlVGltZVN5bWJvbHNfYmdfQkcnLCAnZ29vZy5pMThuLkRhdGVUaW1lU3ltYm9sc19ibScsICdnb29nLmkxOG4uRGF0ZVRpbWVTeW1ib2xzX2JtX01MJywgJ2dvb2cuaTE4bi5EYXRlVGltZVN5bWJvbHNfYm5fQkQnLCAnZ29vZy5pMThuLkRhdGVUaW1lU3ltYm9sc19ibl9JTicsICdnb29nLmkxOG4uRGF0ZVRpbWVTeW1ib2xzX2JvJywgJ2dvb2cuaTE4bi5EYXRlVGltZVN5bWJvbHNfYm9fQ04nLCAnZ29vZy5pMThuLkRhdGVUaW1lU3ltYm9sc19ib19JTicsICdnb29nLmkxOG4uRGF0ZVRpbWVTeW1ib2xzX2JyX0ZSJywgJ2dvb2cuaTE4bi5EYXRlVGltZVN5bWJvbHNfYnJ4JywgJ2dvb2cuaTE4bi5EYXRlVGltZVN5bWJvbHNfYnJ4X0lOJywgJ2dvb2cuaTE4bi5EYXRlVGltZVN5bWJvbHNfYnNfQ3lybCcsICdnb29nLmkxOG4uRGF0ZVRpbWVTeW1ib2xzX2JzX0N5cmxfQkEnLCAnZ29vZy5pMThuLkRhdGVUaW1lU3ltYm9sc19ic19MYXRuJywgJ2dvb2cuaTE4bi5EYXRlVGltZVN5bWJvbHNfYnNfTGF0bl9CQScsICdnb29nLmkxOG4uRGF0ZVRpbWVTeW1ib2xzX2NhX0FEJywgJ2dvb2cuaTE4bi5EYXRlVGltZVN5bWJvbHNfY2FfRVMnLCAnZ29vZy5pMThuLkRhdGVUaW1lU3ltYm9sc19jYV9GUicsICdnb29nLmkxOG4uRGF0ZVRpbWVTeW1ib2xzX2NhX0lUJywgJ2dvb2cuaTE4bi5EYXRlVGltZVN5bWJvbHNfY2NwJywgJ2dvb2cuaTE4bi5EYXRlVGltZVN5bWJvbHNfY2NwX0JEJywgJ2dvb2cuaTE4bi5EYXRlVGltZVN5bWJvbHNfY2NwX0lOJywgJ2dvb2cuaTE4bi5EYXRlVGltZVN5bWJvbHNfY2UnLCAnZ29vZy5pMThuLkRhdGVUaW1lU3ltYm9sc19jZV9SVScsICdnb29nLmkxOG4uRGF0ZVRpbWVTeW1ib2xzX2NlYicsICdnb29nLmkxOG4uRGF0ZVRpbWVTeW1ib2xzX2NlYl9QSCcsICdnb29nLmkxOG4uRGF0ZVRpbWVTeW1ib2xzX2NnZycsICdnb29nLmkxOG4uRGF0ZVRpbWVTeW1ib2xzX2NnZ19VRycsICdnb29nLmkxOG4uRGF0ZVRpbWVTeW1ib2xzX2Nocl9VUycsICdnb29nLmkxOG4uRGF0ZVRpbWVTeW1ib2xzX2NrYicsICdnb29nLmkxOG4uRGF0ZVRpbWVTeW1ib2xzX2NrYl9JUScsICdnb29nLmkxOG4uRGF0ZVRpbWVTeW1ib2xzX2NrYl9JUicsICdnb29nLmkxOG4uRGF0ZVRpbWVTeW1ib2xzX2NzX0NaJywgJ2dvb2cuaTE4bi5EYXRlVGltZVN5bWJvbHNfY3lfR0InLCAnZ29vZy5pMThuLkRhdGVUaW1lU3ltYm9sc19kYV9ESycsICdnb29nLmkxOG4uRGF0ZVRpbWVTeW1ib2xzX2RhX0dMJywgJ2dvb2cuaTE4bi5EYXRlVGltZVN5bWJvbHNfZGF2JywgJ2dvb2cuaTE4bi5EYXRlVGltZVN5bWJvbHNfZGF2X0tFJywgJ2dvb2cuaTE4bi5EYXRlVGltZVN5bWJvbHNfZGVfQkUnLCAnZ29vZy5pMThuLkRhdGVUaW1lU3ltYm9sc19kZV9ERScsICdnb29nLmkxOG4uRGF0ZVRpbWVTeW1ib2xzX2RlX0lUJywgJ2dvb2cuaTE4bi5EYXRlVGltZVN5bWJvbHNfZGVfTEknLCAnZ29vZy5pMThuLkRhdGVUaW1lU3ltYm9sc19kZV9MVScsICdnb29nLmkxOG4uRGF0ZVRpbWVTeW1ib2xzX2RqZScsICdnb29nLmkxOG4uRGF0ZVRpbWVTeW1ib2xzX2RqZV9ORScsICdnb29nLmkxOG4uRGF0ZVRpbWVTeW1ib2xzX2RzYicsICdnb29nLmkxOG4uRGF0ZVRpbWVTeW1ib2xzX2RzYl9ERScsICdnb29nLmkxOG4uRGF0ZVRpbWVTeW1ib2xzX2R1YScsICdnb29nLmkxOG4uRGF0ZVRpbWVTeW1ib2xzX2R1YV9DTScsICdnb29nLmkxOG4uRGF0ZVRpbWVTeW1ib2xzX2R5bycsICdnb29nLmkxOG4uRGF0ZVRpbWVTeW1ib2xzX2R5b19TTicsICdnb29nLmkxOG4uRGF0ZVRpbWVTeW1ib2xzX2R6JywgJ2dvb2cuaTE4bi5EYXRlVGltZVN5bWJvbHNfZHpfQlQnLCAnZ29vZy5pMThuLkRhdGVUaW1lU3ltYm9sc19lYnUnLCAnZ29vZy5pMThuLkRhdGVUaW1lU3ltYm9sc19lYnVfS0UnLCAnZ29vZy5pMThuLkRhdGVUaW1lU3ltYm9sc19lZScsICdnb29nLmkxOG4uRGF0ZVRpbWVTeW1ib2xzX2VlX0dIJywgJ2dvb2cuaTE4bi5EYXRlVGltZVN5bWJvbHNfZWVfVEcnLCAnZ29vZy5pMThuLkRhdGVUaW1lU3ltYm9sc19lbF9DWScsICdnb29nLmkxOG4uRGF0ZVRpbWVTeW1ib2xzX2VsX0dSJywgJ2dvb2cuaTE4bi5EYXRlVGltZVN5bWJvbHNfZW5fMDAxJywgJ2dvb2cuaTE4bi5EYXRlVGltZVN5bWJvbHNfZW5fMTUwJywgJ2dvb2cuaTE4bi5EYXRlVGltZVN5bWJvbHNfZW5fQUUnLCAnZ29vZy5pMThuLkRhdGVUaW1lU3ltYm9sc19lbl9BRycsICdnb29nLmkxOG4uRGF0ZVRpbWVTeW1ib2xzX2VuX0FJJywgJ2dvb2cuaTE4bi5EYXRlVGltZVN5bWJvbHNfZW5fQVMnLCAnZ29vZy5pMThuLkRhdGVUaW1lU3ltYm9sc19lbl9BVCcsICdnb29nLmkxOG4uRGF0ZVRpbWVTeW1ib2xzX2VuX0JCJywgJ2dvb2cuaTE4bi5EYXRlVGltZVN5bWJvbHNfZW5fQkUnLCAnZ29vZy5pMThuLkRhdGVUaW1lU3ltYm9sc19lbl9CSScsICdnb29nLmkxOG4uRGF0ZVRpbWVTeW1ib2xzX2VuX0JNJywgJ2dvb2cuaTE4bi5EYXRlVGltZVN5bWJvbHNfZW5fQlMnLCAnZ29vZy5pMThuLkRhdGVUaW1lU3ltYm9sc19lbl9CVycsICdnb29nLmkxOG4uRGF0ZVRpbWVTeW1ib2xzX2VuX0JaJywgJ2dvb2cuaTE4bi5EYXRlVGltZVN5bWJvbHNfZW5fQ0MnLCAnZ29vZy5pMThuLkRhdGVUaW1lU3ltYm9sc19lbl9DSCcsICdnb29nLmkxOG4uRGF0ZVRpbWVTeW1ib2xzX2VuX0NLJywgJ2dvb2cuaTE4bi5EYXRlVGltZVN5bWJvbHNfZW5fQ00nLCAnZ29vZy5pMThuLkRhdGVUaW1lU3ltYm9sc19lbl9DWCcsICdnb29nLmkxOG4uRGF0ZVRpbWVTeW1ib2xzX2VuX0NZJywgJ2dvb2cuaTE4bi5EYXRlVGltZVN5bWJvbHNfZW5fREUnLCAnZ29vZy5pMThuLkRhdGVUaW1lU3ltYm9sc19lbl9ERycsICdnb29nLmkxOG4uRGF0ZVRpbWVTeW1ib2xzX2VuX0RLJywgJ2dvb2cuaTE4bi5EYXRlVGltZVN5bWJvbHNfZW5fRE0nLCAnZ29vZy5pMThuLkRhdGVUaW1lU3ltYm9sc19lbl9FUicsICdnb29nLmkxOG4uRGF0ZVRpbWVTeW1ib2xzX2VuX0ZJJywgJ2dvb2cuaTE4bi5EYXRlVGltZVN5bWJvbHNfZW5fRkonLCAnZ29vZy5pMThuLkRhdGVUaW1lU3ltYm9sc19lbl9GSycsICdnb29nLmkxOG4uRGF0ZVRpbWVTeW1ib2xzX2VuX0ZNJywgJ2dvb2cuaTE4bi5EYXRlVGltZVN5bWJvbHNfZW5fR0QnLCAnZ29vZy5pMThuLkRhdGVUaW1lU3ltYm9sc19lbl9HRycsICdnb29nLmkxOG4uRGF0ZVRpbWVTeW1ib2xzX2VuX0dIJywgJ2dvb2cuaTE4bi5EYXRlVGltZVN5bWJvbHNfZW5fR0knLCAnZ29vZy5pMThuLkRhdGVUaW1lU3ltYm9sc19lbl9HTScsICdnb29nLmkxOG4uRGF0ZVRpbWVTeW1ib2xzX2VuX0dVJywgJ2dvb2cuaTE4bi5EYXRlVGltZVN5bWJvbHNfZW5fR1knLCAnZ29vZy5pMThuLkRhdGVUaW1lU3ltYm9sc19lbl9ISycsICdnb29nLmkxOG4uRGF0ZVRpbWVTeW1ib2xzX2VuX0lMJywgJ2dvb2cuaTE4bi5EYXRlVGltZVN5bWJvbHNfZW5fSU0nLCAnZ29vZy5pMThuLkRhdGVUaW1lU3ltYm9sc19lbl9JTycsICdnb29nLmkxOG4uRGF0ZVRpbWVTeW1ib2xzX2VuX0pFJywgJ2dvb2cuaTE4bi5EYXRlVGltZVN5bWJvbHNfZW5fSk0nLCAnZ29vZy5pMThuLkRhdGVUaW1lU3ltYm9sc19lbl9LRScsICdnb29nLmkxOG4uRGF0ZVRpbWVTeW1ib2xzX2VuX0tJJywgJ2dvb2cuaTE4bi5EYXRlVGltZVN5bWJvbHNfZW5fS04nLCAnZ29vZy5pMThuLkRhdGVUaW1lU3ltYm9sc19lbl9LWScsICdnb29nLmkxOG4uRGF0ZVRpbWVTeW1ib2xzX2VuX0xDJywgJ2dvb2cuaTE4bi5EYXRlVGltZVN5bWJvbHNfZW5fTFInLCAnZ29vZy5pMThuLkRhdGVUaW1lU3ltYm9sc19lbl9MUycsICdnb29nLmkxOG4uRGF0ZVRpbWVTeW1ib2xzX2VuX01HJywgJ2dvb2cuaTE4bi5EYXRlVGltZVN5bWJvbHNfZW5fTUgnLCAnZ29vZy5pMThuLkRhdGVUaW1lU3ltYm9sc19lbl9NTycsICdnb29nLmkxOG4uRGF0ZVRpbWVTeW1ib2xzX2VuX01QJywgJ2dvb2cuaTE4bi5EYXRlVGltZVN5bWJvbHNfZW5fTVMnLCAnZ29vZy5pMThuLkRhdGVUaW1lU3ltYm9sc19lbl9NVCcsICdnb29nLmkxOG4uRGF0ZVRpbWVTeW1ib2xzX2VuX01VJywgJ2dvb2cuaTE4bi5EYXRlVGltZVN5bWJvbHNfZW5fTVcnLCAnZ29vZy5pMThuLkRhdGVUaW1lU3ltYm9sc19lbl9NWScsICdnb29nLmkxOG4uRGF0ZVRpbWVTeW1ib2xzX2VuX05BJywgJ2dvb2cuaTE4bi5EYXRlVGltZVN5bWJvbHNfZW5fTkYnLCAnZ29vZy5pMThuLkRhdGVUaW1lU3ltYm9sc19lbl9ORycsICdnb29nLmkxOG4uRGF0ZVRpbWVTeW1ib2xzX2VuX05MJywgJ2dvb2cuaTE4bi5EYXRlVGltZVN5bWJvbHNfZW5fTlInLCAnZ29vZy5pMThuLkRhdGVUaW1lU3ltYm9sc19lbl9OVScsICdnb29nLmkxOG4uRGF0ZVRpbWVTeW1ib2xzX2VuX05aJywgJ2dvb2cuaTE4bi5EYXRlVGltZVN5bWJvbHNfZW5fUEcnLCAnZ29vZy5pMThuLkRhdGVUaW1lU3ltYm9sc19lbl9QSCcsICdnb29nLmkxOG4uRGF0ZVRpbWVTeW1ib2xzX2VuX1BLJywgJ2dvb2cuaTE4bi5EYXRlVGltZVN5bWJvbHNfZW5fUE4nLCAnZ29vZy5pMThuLkRhdGVUaW1lU3ltYm9sc19lbl9QUicsICdnb29nLmkxOG4uRGF0ZVRpbWVTeW1ib2xzX2VuX1BXJywgJ2dvb2cuaTE4bi5EYXRlVGltZVN5bWJvbHNfZW5fUlcnLCAnZ29vZy5pMThuLkRhdGVUaW1lU3ltYm9sc19lbl9TQicsICdnb29nLmkxOG4uRGF0ZVRpbWVTeW1ib2xzX2VuX1NDJywgJ2dvb2cuaTE4bi5EYXRlVGltZVN5bWJvbHNfZW5fU0QnLCAnZ29vZy5pMThuLkRhdGVUaW1lU3ltYm9sc19lbl9TRScsICdnb29nLmkxOG4uRGF0ZVRpbWVTeW1ib2xzX2VuX1NIJywgJ2dvb2cuaTE4bi5EYXRlVGltZVN5bWJvbHNfZW5fU0knLCAnZ29vZy5pMThuLkRhdGVUaW1lU3ltYm9sc19lbl9TTCcsICdnb29nLmkxOG4uRGF0ZVRpbWVTeW1ib2xzX2VuX1NTJywgJ2dvb2cuaTE4bi5EYXRlVGltZVN5bWJvbHNfZW5fU1gnLCAnZ29vZy5pMThuLkRhdGVUaW1lU3ltYm9sc19lbl9TWicsICdnb29nLmkxOG4uRGF0ZVRpbWVTeW1ib2xzX2VuX1RDJywgJ2dvb2cuaTE4bi5EYXRlVGltZVN5bWJvbHNfZW5fVEsnLCAnZ29vZy5pMThuLkRhdGVUaW1lU3ltYm9sc19lbl9UTycsICdnb29nLmkxOG4uRGF0ZVRpbWVTeW1ib2xzX2VuX1RUJywgJ2dvb2cuaTE4bi5EYXRlVGltZVN5bWJvbHNfZW5fVFYnLCAnZ29vZy5pMThuLkRhdGVUaW1lU3ltYm9sc19lbl9UWicsICdnb29nLmkxOG4uRGF0ZVRpbWVTeW1ib2xzX2VuX1VHJywgJ2dvb2cuaTE4bi5EYXRlVGltZVN5bWJvbHNfZW5fVU0nLCAnZ29vZy5pMThuLkRhdGVUaW1lU3ltYm9sc19lbl9VU19QT1NJWCcsICdnb29nLmkxOG4uRGF0ZVRpbWVTeW1ib2xzX2VuX1ZDJywgJ2dvb2cuaTE4bi5EYXRlVGltZVN5bWJvbHNfZW5fVkcnLCAnZ29vZy5pMThuLkRhdGVUaW1lU3ltYm9sc19lbl9WSScsICdnb29nLmkxOG4uRGF0ZVRpbWVTeW1ib2xzX2VuX1ZVJywgJ2dvb2cuaTE4bi5EYXRlVGltZVN5bWJvbHNfZW5fV1MnLCAnZ29vZy5pMThuLkRhdGVUaW1lU3ltYm9sc19lbl9YQScsICdnb29nLmkxOG4uRGF0ZVRpbWVTeW1ib2xzX2VuX1pNJywgJ2dvb2cuaTE4bi5EYXRlVGltZVN5bWJvbHNfZW5fWlcnLCAnZ29vZy5pMThuLkRhdGVUaW1lU3ltYm9sc19lbycsICdnb29nLmkxOG4uRGF0ZVRpbWVTeW1ib2xzX2VvXzAwMScsICdnb29nLmkxOG4uRGF0ZVRpbWVTeW1ib2xzX2VzX0FSJywgJ2dvb2cuaTE4bi5EYXRlVGltZVN5bWJvbHNfZXNfQk8nLCAnZ29vZy5pMThuLkRhdGVUaW1lU3ltYm9sc19lc19CUicsICdnb29nLmkxOG4uRGF0ZVRpbWVTeW1ib2xzX2VzX0JaJywgJ2dvb2cuaTE4bi5EYXRlVGltZVN5bWJvbHNfZXNfQ0wnLCAnZ29vZy5pMThuLkRhdGVUaW1lU3ltYm9sc19lc19DTycsICdnb29nLmkxOG4uRGF0ZVRpbWVTeW1ib2xzX2VzX0NSJywgJ2dvb2cuaTE4bi5EYXRlVGltZVN5bWJvbHNfZXNfQ1UnLCAnZ29vZy5pMThuLkRhdGVUaW1lU3ltYm9sc19lc19ETycsICdnb29nLmkxOG4uRGF0ZVRpbWVTeW1ib2xzX2VzX0VBJywgJ2dvb2cuaTE4bi5EYXRlVGltZVN5bWJvbHNfZXNfRUMnLCAnZ29vZy5pMThuLkRhdGVUaW1lU3ltYm9sc19lc19HUScsICdnb29nLmkxOG4uRGF0ZVRpbWVTeW1ib2xzX2VzX0dUJywgJ2dvb2cuaTE4bi5EYXRlVGltZVN5bWJvbHNfZXNfSE4nLCAnZ29vZy5pMThuLkRhdGVUaW1lU3ltYm9sc19lc19JQycsICdnb29nLmkxOG4uRGF0ZVRpbWVTeW1ib2xzX2VzX05JJywgJ2dvb2cuaTE4bi5EYXRlVGltZVN5bWJvbHNfZXNfUEEnLCAnZ29vZy5pMThuLkRhdGVUaW1lU3ltYm9sc19lc19QRScsICdnb29nLmkxOG4uRGF0ZVRpbWVTeW1ib2xzX2VzX1BIJywgJ2dvb2cuaTE4bi5EYXRlVGltZVN5bWJvbHNfZXNfUFInLCAnZ29vZy5pMThuLkRhdGVUaW1lU3ltYm9sc19lc19QWScsICdnb29nLmkxOG4uRGF0ZVRpbWVTeW1ib2xzX2VzX1NWJywgJ2dvb2cuaTE4bi5EYXRlVGltZVN5bWJvbHNfZXNfVVknLCAnZ29vZy5pMThuLkRhdGVUaW1lU3ltYm9sc19lc19WRScsICdnb29nLmkxOG4uRGF0ZVRpbWVTeW1ib2xzX2V0X0VFJywgJ2dvb2cuaTE4bi5EYXRlVGltZVN5bWJvbHNfZXVfRVMnLCAnZ29vZy5pMThuLkRhdGVUaW1lU3ltYm9sc19ld28nLCAnZ29vZy5pMThuLkRhdGVUaW1lU3ltYm9sc19ld29fQ00nLCAnZ29vZy5pMThuLkRhdGVUaW1lU3ltYm9sc19mYV9BRicsICdnb29nLmkxOG4uRGF0ZVRpbWVTeW1ib2xzX2ZhX0lSJywgJ2dvb2cuaTE4bi5EYXRlVGltZVN5bWJvbHNfZmYnLCAnZ29vZy5pMThuLkRhdGVUaW1lU3ltYm9sc19mZl9MYXRuJywgJ2dvb2cuaTE4bi5EYXRlVGltZVN5bWJvbHNfZmZfTGF0bl9CRicsICdnb29nLmkxOG4uRGF0ZVRpbWVTeW1ib2xzX2ZmX0xhdG5fQ00nLCAnZ29vZy5pMThuLkRhdGVUaW1lU3ltYm9sc19mZl9MYXRuX0dIJywgJ2dvb2cuaTE4bi5EYXRlVGltZVN5bWJvbHNfZmZfTGF0bl9HTScsICdnb29nLmkxOG4uRGF0ZVRpbWVTeW1ib2xzX2ZmX0xhdG5fR04nLCAnZ29vZy5pMThuLkRhdGVUaW1lU3ltYm9sc19mZl9MYXRuX0dXJywgJ2dvb2cuaTE4bi5EYXRlVGltZVN5bWJvbHNfZmZfTGF0bl9MUicsICdnb29nLmkxOG4uRGF0ZVRpbWVTeW1ib2xzX2ZmX0xhdG5fTVInLCAnZ29vZy5pMThuLkRhdGVUaW1lU3ltYm9sc19mZl9MYXRuX05FJywgJ2dvb2cuaTE4bi5EYXRlVGltZVN5bWJvbHNfZmZfTGF0bl9ORycsICdnb29nLmkxOG4uRGF0ZVRpbWVTeW1ib2xzX2ZmX0xhdG5fU0wnLCAnZ29vZy5pMThuLkRhdGVUaW1lU3ltYm9sc19mZl9MYXRuX1NOJywgJ2dvb2cuaTE4bi5EYXRlVGltZVN5bWJvbHNfZmlfRkknLCAnZ29vZy5pMThuLkRhdGVUaW1lU3ltYm9sc19maWxfUEgnLCAnZ29vZy5pMThuLkRhdGVUaW1lU3ltYm9sc19mbycsICdnb29nLmkxOG4uRGF0ZVRpbWVTeW1ib2xzX2ZvX0RLJywgJ2dvb2cuaTE4bi5EYXRlVGltZVN5bWJvbHNfZm9fRk8nLCAnZ29vZy5pMThuLkRhdGVUaW1lU3ltYm9sc19mcl9CRScsICdnb29nLmkxOG4uRGF0ZVRpbWVTeW1ib2xzX2ZyX0JGJywgJ2dvb2cuaTE4bi5EYXRlVGltZVN5bWJvbHNfZnJfQkknLCAnZ29vZy5pMThuLkRhdGVUaW1lU3ltYm9sc19mcl9CSicsICdnb29nLmkxOG4uRGF0ZVRpbWVTeW1ib2xzX2ZyX0JMJywgJ2dvb2cuaTE4bi5EYXRlVGltZVN5bWJvbHNfZnJfQ0QnLCAnZ29vZy5pMThuLkRhdGVUaW1lU3ltYm9sc19mcl9DRicsICdnb29nLmkxOG4uRGF0ZVRpbWVTeW1ib2xzX2ZyX0NHJywgJ2dvb2cuaTE4bi5EYXRlVGltZVN5bWJvbHNfZnJfQ0gnLCAnZ29vZy5pMThuLkRhdGVUaW1lU3ltYm9sc19mcl9DSScsICdnb29nLmkxOG4uRGF0ZVRpbWVTeW1ib2xzX2ZyX0NNJywgJ2dvb2cuaTE4bi5EYXRlVGltZVN5bWJvbHNfZnJfREonLCAnZ29vZy5pMThuLkRhdGVUaW1lU3ltYm9sc19mcl9EWicsICdnb29nLmkxOG4uRGF0ZVRpbWVTeW1ib2xzX2ZyX0ZSJywgJ2dvb2cuaTE4bi5EYXRlVGltZVN5bWJvbHNfZnJfR0EnLCAnZ29vZy5pMThuLkRhdGVUaW1lU3ltYm9sc19mcl9HRicsICdnb29nLmkxOG4uRGF0ZVRpbWVTeW1ib2xzX2ZyX0dOJywgJ2dvb2cuaTE4bi5EYXRlVGltZVN5bWJvbHNfZnJfR1AnLCAnZ29vZy5pMThuLkRhdGVUaW1lU3ltYm9sc19mcl9HUScsICdnb29nLmkxOG4uRGF0ZVRpbWVTeW1ib2xzX2ZyX0hUJywgJ2dvb2cuaTE4bi5EYXRlVGltZVN5bWJvbHNfZnJfS00nLCAnZ29vZy5pMThuLkRhdGVUaW1lU3ltYm9sc19mcl9MVScsICdnb29nLmkxOG4uRGF0ZVRpbWVTeW1ib2xzX2ZyX01BJywgJ2dvb2cuaTE4bi5EYXRlVGltZVN5bWJvbHNfZnJfTUMnLCAnZ29vZy5pMThuLkRhdGVUaW1lU3ltYm9sc19mcl9NRicsICdnb29nLmkxOG4uRGF0ZVRpbWVTeW1ib2xzX2ZyX01HJywgJ2dvb2cuaTE4bi5EYXRlVGltZVN5bWJvbHNfZnJfTUwnLCAnZ29vZy5pMThuLkRhdGVUaW1lU3ltYm9sc19mcl9NUScsICdnb29nLmkxOG4uRGF0ZVRpbWVTeW1ib2xzX2ZyX01SJywgJ2dvb2cuaTE4bi5EYXRlVGltZVN5bWJvbHNfZnJfTVUnLCAnZ29vZy5pMThuLkRhdGVUaW1lU3ltYm9sc19mcl9OQycsICdnb29nLmkxOG4uRGF0ZVRpbWVTeW1ib2xzX2ZyX05FJywgJ2dvb2cuaTE4bi5EYXRlVGltZVN5bWJvbHNfZnJfUEYnLCAnZ29vZy5pMThuLkRhdGVUaW1lU3ltYm9sc19mcl9QTScsICdnb29nLmkxOG4uRGF0ZVRpbWVTeW1ib2xzX2ZyX1JFJywgJ2dvb2cuaTE4bi5EYXRlVGltZVN5bWJvbHNfZnJfUlcnLCAnZ29vZy5pMThuLkRhdGVUaW1lU3ltYm9sc19mcl9TQycsICdnb29nLmkxOG4uRGF0ZVRpbWVTeW1ib2xzX2ZyX1NOJywgJ2dvb2cuaTE4bi5EYXRlVGltZVN5bWJvbHNfZnJfU1knLCAnZ29vZy5pMThuLkRhdGVUaW1lU3ltYm9sc19mcl9URCcsICdnb29nLmkxOG4uRGF0ZVRpbWVTeW1ib2xzX2ZyX1RHJywgJ2dvb2cuaTE4bi5EYXRlVGltZVN5bWJvbHNfZnJfVE4nLCAnZ29vZy5pMThuLkRhdGVUaW1lU3ltYm9sc19mcl9WVScsICdnb29nLmkxOG4uRGF0ZVRpbWVTeW1ib2xzX2ZyX1dGJywgJ2dvb2cuaTE4bi5EYXRlVGltZVN5bWJvbHNfZnJfWVQnLCAnZ29vZy5pMThuLkRhdGVUaW1lU3ltYm9sc19mdXInLCAnZ29vZy5pMThuLkRhdGVUaW1lU3ltYm9sc19mdXJfSVQnLCAnZ29vZy5pMThuLkRhdGVUaW1lU3ltYm9sc19meScsICdnb29nLmkxOG4uRGF0ZVRpbWVTeW1ib2xzX2Z5X05MJywgJ2dvb2cuaTE4bi5EYXRlVGltZVN5bWJvbHNfZ2FfSUUnLCAnZ29vZy5pMThuLkRhdGVUaW1lU3ltYm9sc19nZCcsICdnb29nLmkxOG4uRGF0ZVRpbWVTeW1ib2xzX2dkX0dCJywgJ2dvb2cuaTE4bi5EYXRlVGltZVN5bWJvbHNfZ2xfRVMnLCAnZ29vZy5pMThuLkRhdGVUaW1lU3ltYm9sc19nc3dfQ0gnLCAnZ29vZy5pMThuLkRhdGVUaW1lU3ltYm9sc19nc3dfRlInLCAnZ29vZy5pMThuLkRhdGVUaW1lU3ltYm9sc19nc3dfTEknLCAnZ29vZy5pMThuLkRhdGVUaW1lU3ltYm9sc19ndV9JTicsICdnb29nLmkxOG4uRGF0ZVRpbWVTeW1ib2xzX2d1eicsICdnb29nLmkxOG4uRGF0ZVRpbWVTeW1ib2xzX2d1el9LRScsICdnb29nLmkxOG4uRGF0ZVRpbWVTeW1ib2xzX2d2JywgJ2dvb2cuaTE4bi5EYXRlVGltZVN5bWJvbHNfZ3ZfSU0nLCAnZ29vZy5pMThuLkRhdGVUaW1lU3ltYm9sc19oYScsICdnb29nLmkxOG4uRGF0ZVRpbWVTeW1ib2xzX2hhX0dIJywgJ2dvb2cuaTE4bi5EYXRlVGltZVN5bWJvbHNfaGFfTkUnLCAnZ29vZy5pMThuLkRhdGVUaW1lU3ltYm9sc19oYV9ORycsICdnb29nLmkxOG4uRGF0ZVRpbWVTeW1ib2xzX2hhd19VUycsICdnb29nLmkxOG4uRGF0ZVRpbWVTeW1ib2xzX2hlX0lMJywgJ2dvb2cuaTE4bi5EYXRlVGltZVN5bWJvbHNfaGlfSU4nLCAnZ29vZy5pMThuLkRhdGVUaW1lU3ltYm9sc19ocl9CQScsICdnb29nLmkxOG4uRGF0ZVRpbWVTeW1ib2xzX2hyX0hSJywgJ2dvb2cuaTE4bi5EYXRlVGltZVN5bWJvbHNfaHNiJywgJ2dvb2cuaTE4bi5EYXRlVGltZVN5bWJvbHNfaHNiX0RFJywgJ2dvb2cuaTE4bi5EYXRlVGltZVN5bWJvbHNfaHVfSFUnLCAnZ29vZy5pMThuLkRhdGVUaW1lU3ltYm9sc19oeV9BTScsICdnb29nLmkxOG4uRGF0ZVRpbWVTeW1ib2xzX2lhJywgJ2dvb2cuaTE4bi5EYXRlVGltZVN5bWJvbHNfaWFfMDAxJywgJ2dvb2cuaTE4bi5EYXRlVGltZVN5bWJvbHNfaWRfSUQnLCAnZ29vZy5pMThuLkRhdGVUaW1lU3ltYm9sc19pZycsICdnb29nLmkxOG4uRGF0ZVRpbWVTeW1ib2xzX2lnX05HJywgJ2dvb2cuaTE4bi5EYXRlVGltZVN5bWJvbHNfaWknLCAnZ29vZy5pMThuLkRhdGVUaW1lU3ltYm9sc19paV9DTicsICdnb29nLmkxOG4uRGF0ZVRpbWVTeW1ib2xzX2lzX0lTJywgJ2dvb2cuaTE4bi5EYXRlVGltZVN5bWJvbHNfaXRfQ0gnLCAnZ29vZy5pMThuLkRhdGVUaW1lU3ltYm9sc19pdF9JVCcsICdnb29nLmkxOG4uRGF0ZVRpbWVTeW1ib2xzX2l0X1NNJywgJ2dvb2cuaTE4bi5EYXRlVGltZVN5bWJvbHNfaXRfVkEnLCAnZ29vZy5pMThuLkRhdGVUaW1lU3ltYm9sc19qYV9KUCcsICdnb29nLmkxOG4uRGF0ZVRpbWVTeW1ib2xzX2pnbycsICdnb29nLmkxOG4uRGF0ZVRpbWVTeW1ib2xzX2pnb19DTScsICdnb29nLmkxOG4uRGF0ZVRpbWVTeW1ib2xzX2ptYycsICdnb29nLmkxOG4uRGF0ZVRpbWVTeW1ib2xzX2ptY19UWicsICdnb29nLmkxOG4uRGF0ZVRpbWVTeW1ib2xzX2p2JywgJ2dvb2cuaTE4bi5EYXRlVGltZVN5bWJvbHNfanZfSUQnLCAnZ29vZy5pMThuLkRhdGVUaW1lU3ltYm9sc19rYV9HRScsICdnb29nLmkxOG4uRGF0ZVRpbWVTeW1ib2xzX2thYicsICdnb29nLmkxOG4uRGF0ZVRpbWVTeW1ib2xzX2thYl9EWicsICdnb29nLmkxOG4uRGF0ZVRpbWVTeW1ib2xzX2thbScsICdnb29nLmkxOG4uRGF0ZVRpbWVTeW1ib2xzX2thbV9LRScsICdnb29nLmkxOG4uRGF0ZVRpbWVTeW1ib2xzX2tkZScsICdnb29nLmkxOG4uRGF0ZVRpbWVTeW1ib2xzX2tkZV9UWicsICdnb29nLmkxOG4uRGF0ZVRpbWVTeW1ib2xzX2tlYScsICdnb29nLmkxOG4uRGF0ZVRpbWVTeW1ib2xzX2tlYV9DVicsICdnb29nLmkxOG4uRGF0ZVRpbWVTeW1ib2xzX2tocScsICdnb29nLmkxOG4uRGF0ZVRpbWVTeW1ib2xzX2tocV9NTCcsICdnb29nLmkxOG4uRGF0ZVRpbWVTeW1ib2xzX2tpJywgJ2dvb2cuaTE4bi5EYXRlVGltZVN5bWJvbHNfa2lfS0UnLCAnZ29vZy5pMThuLkRhdGVUaW1lU3ltYm9sc19ra19LWicsICdnb29nLmkxOG4uRGF0ZVRpbWVTeW1ib2xzX2traicsICdnb29nLmkxOG4uRGF0ZVRpbWVTeW1ib2xzX2tral9DTScsICdnb29nLmkxOG4uRGF0ZVRpbWVTeW1ib2xzX2tsJywgJ2dvb2cuaTE4bi5EYXRlVGltZVN5bWJvbHNfa2xfR0wnLCAnZ29vZy5pMThuLkRhdGVUaW1lU3ltYm9sc19rbG4nLCAnZ29vZy5pMThuLkRhdGVUaW1lU3ltYm9sc19rbG5fS0UnLCAnZ29vZy5pMThuLkRhdGVUaW1lU3ltYm9sc19rbV9LSCcsICdnb29nLmkxOG4uRGF0ZVRpbWVTeW1ib2xzX2tuX0lOJywgJ2dvb2cuaTE4bi5EYXRlVGltZVN5bWJvbHNfa29fS1AnLCAnZ29vZy5pMThuLkRhdGVUaW1lU3ltYm9sc19rb19LUicsICdnb29nLmkxOG4uRGF0ZVRpbWVTeW1ib2xzX2tvaycsICdnb29nLmkxOG4uRGF0ZVRpbWVTeW1ib2xzX2tva19JTicsICdnb29nLmkxOG4uRGF0ZVRpbWVTeW1ib2xzX2tzJywgJ2dvb2cuaTE4bi5EYXRlVGltZVN5bWJvbHNfa3NfSU4nLCAnZ29vZy5pMThuLkRhdGVUaW1lU3ltYm9sc19rc2InLCAnZ29vZy5pMThuLkRhdGVUaW1lU3ltYm9sc19rc2JfVFonLCAnZ29vZy5pMThuLkRhdGVUaW1lU3ltYm9sc19rc2YnLCAnZ29vZy5pMThuLkRhdGVUaW1lU3ltYm9sc19rc2ZfQ00nLCAnZ29vZy5pMThuLkRhdGVUaW1lU3ltYm9sc19rc2gnLCAnZ29vZy5pMThuLkRhdGVUaW1lU3ltYm9sc19rc2hfREUnLCAnZ29vZy5pMThuLkRhdGVUaW1lU3ltYm9sc19rdScsICdnb29nLmkxOG4uRGF0ZVRpbWVTeW1ib2xzX2t1X1RSJywgJ2dvb2cuaTE4bi5EYXRlVGltZVN5bWJvbHNfa3cnLCAnZ29vZy5pMThuLkRhdGVUaW1lU3ltYm9sc19rd19HQicsICdnb29nLmkxOG4uRGF0ZVRpbWVTeW1ib2xzX2t5X0tHJywgJ2dvb2cuaTE4bi5EYXRlVGltZVN5bWJvbHNfbGFnJywgJ2dvb2cuaTE4bi5EYXRlVGltZVN5bWJvbHNfbGFnX1RaJywgJ2dvb2cuaTE4bi5EYXRlVGltZVN5bWJvbHNfbGInLCAnZ29vZy5pMThuLkRhdGVUaW1lU3ltYm9sc19sYl9MVScsICdnb29nLmkxOG4uRGF0ZVRpbWVTeW1ib2xzX2xnJywgJ2dvb2cuaTE4bi5EYXRlVGltZVN5bWJvbHNfbGdfVUcnLCAnZ29vZy5pMThuLkRhdGVUaW1lU3ltYm9sc19sa3QnLCAnZ29vZy5pMThuLkRhdGVUaW1lU3ltYm9sc19sa3RfVVMnLCAnZ29vZy5pMThuLkRhdGVUaW1lU3ltYm9sc19sbl9BTycsICdnb29nLmkxOG4uRGF0ZVRpbWVTeW1ib2xzX2xuX0NEJywgJ2dvb2cuaTE4bi5EYXRlVGltZVN5bWJvbHNfbG5fQ0YnLCAnZ29vZy5pMThuLkRhdGVUaW1lU3ltYm9sc19sbl9DRycsICdnb29nLmkxOG4uRGF0ZVRpbWVTeW1ib2xzX2xvX0xBJywgJ2dvb2cuaTE4bi5EYXRlVGltZVN5bWJvbHNfbHJjJywgJ2dvb2cuaTE4bi5EYXRlVGltZVN5bWJvbHNfbHJjX0lRJywgJ2dvb2cuaTE4bi5EYXRlVGltZVN5bWJvbHNfbHJjX0lSJywgJ2dvb2cuaTE4bi5EYXRlVGltZVN5bWJvbHNfbHRfTFQnLCAnZ29vZy5pMThuLkRhdGVUaW1lU3ltYm9sc19sdScsICdnb29nLmkxOG4uRGF0ZVRpbWVTeW1ib2xzX2x1X0NEJywgJ2dvb2cuaTE4bi5EYXRlVGltZVN5bWJvbHNfbHVvJywgJ2dvb2cuaTE4bi5EYXRlVGltZVN5bWJvbHNfbHVvX0tFJywgJ2dvb2cuaTE4bi5EYXRlVGltZVN5bWJvbHNfbHV5JywgJ2dvb2cuaTE4bi5EYXRlVGltZVN5bWJvbHNfbHV5X0tFJywgJ2dvb2cuaTE4bi5EYXRlVGltZVN5bWJvbHNfbHZfTFYnLCAnZ29vZy5pMThuLkRhdGVUaW1lU3ltYm9sc19tYXMnLCAnZ29vZy5pMThuLkRhdGVUaW1lU3ltYm9sc19tYXNfS0UnLCAnZ29vZy5pMThuLkRhdGVUaW1lU3ltYm9sc19tYXNfVFonLCAnZ29vZy5pMThuLkRhdGVUaW1lU3ltYm9sc19tZXInLCAnZ29vZy5pMThuLkRhdGVUaW1lU3ltYm9sc19tZXJfS0UnLCAnZ29vZy5pMThuLkRhdGVUaW1lU3ltYm9sc19tZmUnLCAnZ29vZy5pMThuLkRhdGVUaW1lU3ltYm9sc19tZmVfTVUnLCAnZ29vZy5pMThuLkRhdGVUaW1lU3ltYm9sc19tZycsICdnb29nLmkxOG4uRGF0ZVRpbWVTeW1ib2xzX21nX01HJywgJ2dvb2cuaTE4bi5EYXRlVGltZVN5bWJvbHNfbWdoJywgJ2dvb2cuaTE4bi5EYXRlVGltZVN5bWJvbHNfbWdoX01aJywgJ2dvb2cuaTE4bi5EYXRlVGltZVN5bWJvbHNfbWdvJywgJ2dvb2cuaTE4bi5EYXRlVGltZVN5bWJvbHNfbWdvX0NNJywgJ2dvb2cuaTE4bi5EYXRlVGltZVN5bWJvbHNfbWknLCAnZ29vZy5pMThuLkRhdGVUaW1lU3ltYm9sc19taV9OWicsICdnb29nLmkxOG4uRGF0ZVRpbWVTeW1ib2xzX21rX01LJywgJ2dvb2cuaTE4bi5EYXRlVGltZVN5bWJvbHNfbWxfSU4nLCAnZ29vZy5pMThuLkRhdGVUaW1lU3ltYm9sc19tbl9NTicsICdnb29nLmkxOG4uRGF0ZVRpbWVTeW1ib2xzX21yX0lOJywgJ2dvb2cuaTE4bi5EYXRlVGltZVN5bWJvbHNfbXNfQk4nLCAnZ29vZy5pMThuLkRhdGVUaW1lU3ltYm9sc19tc19NWScsICdnb29nLmkxOG4uRGF0ZVRpbWVTeW1ib2xzX21zX1NHJywgJ2dvb2cuaTE4bi5EYXRlVGltZVN5bWJvbHNfbXRfTVQnLCAnZ29vZy5pMThuLkRhdGVUaW1lU3ltYm9sc19tdWEnLCAnZ29vZy5pMThuLkRhdGVUaW1lU3ltYm9sc19tdWFfQ00nLCAnZ29vZy5pMThuLkRhdGVUaW1lU3ltYm9sc19teV9NTScsICdnb29nLmkxOG4uRGF0ZVRpbWVTeW1ib2xzX216bicsICdnb29nLmkxOG4uRGF0ZVRpbWVTeW1ib2xzX216bl9JUicsICdnb29nLmkxOG4uRGF0ZVRpbWVTeW1ib2xzX25hcScsICdnb29nLmkxOG4uRGF0ZVRpbWVTeW1ib2xzX25hcV9OQScsICdnb29nLmkxOG4uRGF0ZVRpbWVTeW1ib2xzX25iX05PJywgJ2dvb2cuaTE4bi5EYXRlVGltZVN5bWJvbHNfbmJfU0onLCAnZ29vZy5pMThuLkRhdGVUaW1lU3ltYm9sc19uZCcsICdnb29nLmkxOG4uRGF0ZVRpbWVTeW1ib2xzX25kX1pXJywgJ2dvb2cuaTE4bi5EYXRlVGltZVN5bWJvbHNfbmRzJywgJ2dvb2cuaTE4bi5EYXRlVGltZVN5bWJvbHNfbmRzX0RFJywgJ2dvb2cuaTE4bi5EYXRlVGltZVN5bWJvbHNfbmRzX05MJywgJ2dvb2cuaTE4bi5EYXRlVGltZVN5bWJvbHNfbmVfSU4nLCAnZ29vZy5pMThuLkRhdGVUaW1lU3ltYm9sc19uZV9OUCcsICdnb29nLmkxOG4uRGF0ZVRpbWVTeW1ib2xzX25sX0FXJywgJ2dvb2cuaTE4bi5EYXRlVGltZVN5bWJvbHNfbmxfQkUnLCAnZ29vZy5pMThuLkRhdGVUaW1lU3ltYm9sc19ubF9CUScsICdnb29nLmkxOG4uRGF0ZVRpbWVTeW1ib2xzX25sX0NXJywgJ2dvb2cuaTE4bi5EYXRlVGltZVN5bWJvbHNfbmxfTkwnLCAnZ29vZy5pMThuLkRhdGVUaW1lU3ltYm9sc19ubF9TUicsICdnb29nLmkxOG4uRGF0ZVRpbWVTeW1ib2xzX25sX1NYJywgJ2dvb2cuaTE4bi5EYXRlVGltZVN5bWJvbHNfbm1nJywgJ2dvb2cuaTE4bi5EYXRlVGltZVN5bWJvbHNfbm1nX0NNJywgJ2dvb2cuaTE4bi5EYXRlVGltZVN5bWJvbHNfbm4nLCAnZ29vZy5pMThuLkRhdGVUaW1lU3ltYm9sc19ubl9OTycsICdnb29nLmkxOG4uRGF0ZVRpbWVTeW1ib2xzX25uaCcsICdnb29nLmkxOG4uRGF0ZVRpbWVTeW1ib2xzX25uaF9DTScsICdnb29nLmkxOG4uRGF0ZVRpbWVTeW1ib2xzX251cycsICdnb29nLmkxOG4uRGF0ZVRpbWVTeW1ib2xzX251c19TUycsICdnb29nLmkxOG4uRGF0ZVRpbWVTeW1ib2xzX255bicsICdnb29nLmkxOG4uRGF0ZVRpbWVTeW1ib2xzX255bl9VRycsICdnb29nLmkxOG4uRGF0ZVRpbWVTeW1ib2xzX29tJywgJ2dvb2cuaTE4bi5EYXRlVGltZVN5bWJvbHNfb21fRVQnLCAnZ29vZy5pMThuLkRhdGVUaW1lU3ltYm9sc19vbV9LRScsICdnb29nLmkxOG4uRGF0ZVRpbWVTeW1ib2xzX29yX0lOJywgJ2dvb2cuaTE4bi5EYXRlVGltZVN5bWJvbHNfb3MnLCAnZ29vZy5pMThuLkRhdGVUaW1lU3ltYm9sc19vc19HRScsICdnb29nLmkxOG4uRGF0ZVRpbWVTeW1ib2xzX29zX1JVJywgJ2dvb2cuaTE4bi5EYXRlVGltZVN5bWJvbHNfcGFfQXJhYicsICdnb29nLmkxOG4uRGF0ZVRpbWVTeW1ib2xzX3BhX0FyYWJfUEsnLCAnZ29vZy5pMThuLkRhdGVUaW1lU3ltYm9sc19wYV9HdXJ1JywgJ2dvb2cuaTE4bi5EYXRlVGltZVN5bWJvbHNfcGFfR3VydV9JTicsICdnb29nLmkxOG4uRGF0ZVRpbWVTeW1ib2xzX3BsX1BMJywgJ2dvb2cuaTE4bi5EYXRlVGltZVN5bWJvbHNfcHMnLCAnZ29vZy5pMThuLkRhdGVUaW1lU3ltYm9sc19wc19BRicsICdnb29nLmkxOG4uRGF0ZVRpbWVTeW1ib2xzX3BzX1BLJywgJ2dvb2cuaTE4bi5EYXRlVGltZVN5bWJvbHNfcHRfQU8nLCAnZ29vZy5pMThuLkRhdGVUaW1lU3ltYm9sc19wdF9DSCcsICdnb29nLmkxOG4uRGF0ZVRpbWVTeW1ib2xzX3B0X0NWJywgJ2dvb2cuaTE4bi5EYXRlVGltZVN5bWJvbHNfcHRfR1EnLCAnZ29vZy5pMThuLkRhdGVUaW1lU3ltYm9sc19wdF9HVycsICdnb29nLmkxOG4uRGF0ZVRpbWVTeW1ib2xzX3B0X0xVJywgJ2dvb2cuaTE4bi5EYXRlVGltZVN5bWJvbHNfcHRfTU8nLCAnZ29vZy5pMThuLkRhdGVUaW1lU3ltYm9sc19wdF9NWicsICdnb29nLmkxOG4uRGF0ZVRpbWVTeW1ib2xzX3B0X1NUJywgJ2dvb2cuaTE4bi5EYXRlVGltZVN5bWJvbHNfcHRfVEwnLCAnZ29vZy5pMThuLkRhdGVUaW1lU3ltYm9sc19xdScsICdnb29nLmkxOG4uRGF0ZVRpbWVTeW1ib2xzX3F1X0JPJywgJ2dvb2cuaTE4bi5EYXRlVGltZVN5bWJvbHNfcXVfRUMnLCAnZ29vZy5pMThuLkRhdGVUaW1lU3ltYm9sc19xdV9QRScsICdnb29nLmkxOG4uRGF0ZVRpbWVTeW1ib2xzX3JtJywgJ2dvb2cuaTE4bi5EYXRlVGltZVN5bWJvbHNfcm1fQ0gnLCAnZ29vZy5pMThuLkRhdGVUaW1lU3ltYm9sc19ybicsICdnb29nLmkxOG4uRGF0ZVRpbWVTeW1ib2xzX3JuX0JJJywgJ2dvb2cuaTE4bi5EYXRlVGltZVN5bWJvbHNfcm9fTUQnLCAnZ29vZy5pMThuLkRhdGVUaW1lU3ltYm9sc19yb19STycsICdnb29nLmkxOG4uRGF0ZVRpbWVTeW1ib2xzX3JvZicsICdnb29nLmkxOG4uRGF0ZVRpbWVTeW1ib2xzX3JvZl9UWicsICdnb29nLmkxOG4uRGF0ZVRpbWVTeW1ib2xzX3J1X0JZJywgJ2dvb2cuaTE4bi5EYXRlVGltZVN5bWJvbHNfcnVfS0cnLCAnZ29vZy5pMThuLkRhdGVUaW1lU3ltYm9sc19ydV9LWicsICdnb29nLmkxOG4uRGF0ZVRpbWVTeW1ib2xzX3J1X01EJywgJ2dvb2cuaTE4bi5EYXRlVGltZVN5bWJvbHNfcnVfUlUnLCAnZ29vZy5pMThuLkRhdGVUaW1lU3ltYm9sc19ydV9VQScsICdnb29nLmkxOG4uRGF0ZVRpbWVTeW1ib2xzX3J3JywgJ2dvb2cuaTE4bi5EYXRlVGltZVN5bWJvbHNfcndfUlcnLCAnZ29vZy5pMThuLkRhdGVUaW1lU3ltYm9sc19yd2snLCAnZ29vZy5pMThuLkRhdGVUaW1lU3ltYm9sc19yd2tfVFonLCAnZ29vZy5pMThuLkRhdGVUaW1lU3ltYm9sc19zYWgnLCAnZ29vZy5pMThuLkRhdGVUaW1lU3ltYm9sc19zYWhfUlUnLCAnZ29vZy5pMThuLkRhdGVUaW1lU3ltYm9sc19zYXEnLCAnZ29vZy5pMThuLkRhdGVUaW1lU3ltYm9sc19zYXFfS0UnLCAnZ29vZy5pMThuLkRhdGVUaW1lU3ltYm9sc19zYnAnLCAnZ29vZy5pMThuLkRhdGVUaW1lU3ltYm9sc19zYnBfVFonLCAnZ29vZy5pMThuLkRhdGVUaW1lU3ltYm9sc19zZCcsICdnb29nLmkxOG4uRGF0ZVRpbWVTeW1ib2xzX3NkX1BLJywgJ2dvb2cuaTE4bi5EYXRlVGltZVN5bWJvbHNfc2UnLCAnZ29vZy5pMThuLkRhdGVUaW1lU3ltYm9sc19zZV9GSScsICdnb29nLmkxOG4uRGF0ZVRpbWVTeW1ib2xzX3NlX05PJywgJ2dvb2cuaTE4bi5EYXRlVGltZVN5bWJvbHNfc2VfU0UnLCAnZ29vZy5pMThuLkRhdGVUaW1lU3ltYm9sc19zZWgnLCAnZ29vZy5pMThuLkRhdGVUaW1lU3ltYm9sc19zZWhfTVonLCAnZ29vZy5pMThuLkRhdGVUaW1lU3ltYm9sc19zZXMnLCAnZ29vZy5pMThuLkRhdGVUaW1lU3ltYm9sc19zZXNfTUwnLCAnZ29vZy5pMThuLkRhdGVUaW1lU3ltYm9sc19zZycsICdnb29nLmkxOG4uRGF0ZVRpbWVTeW1ib2xzX3NnX0NGJywgJ2dvb2cuaTE4bi5EYXRlVGltZVN5bWJvbHNfc2hpJywgJ2dvb2cuaTE4bi5EYXRlVGltZVN5bWJvbHNfc2hpX0xhdG4nLCAnZ29vZy5pMThuLkRhdGVUaW1lU3ltYm9sc19zaGlfTGF0bl9NQScsICdnb29nLmkxOG4uRGF0ZVRpbWVTeW1ib2xzX3NoaV9UZm5nJywgJ2dvb2cuaTE4bi5EYXRlVGltZVN5bWJvbHNfc2hpX1RmbmdfTUEnLCAnZ29vZy5pMThuLkRhdGVUaW1lU3ltYm9sc19zaV9MSycsICdnb29nLmkxOG4uRGF0ZVRpbWVTeW1ib2xzX3NrX1NLJywgJ2dvb2cuaTE4bi5EYXRlVGltZVN5bWJvbHNfc2xfU0knLCAnZ29vZy5pMThuLkRhdGVUaW1lU3ltYm9sc19zbW4nLCAnZ29vZy5pMThuLkRhdGVUaW1lU3ltYm9sc19zbW5fRkknLCAnZ29vZy5pMThuLkRhdGVUaW1lU3ltYm9sc19zbicsICdnb29nLmkxOG4uRGF0ZVRpbWVTeW1ib2xzX3NuX1pXJywgJ2dvb2cuaTE4bi5EYXRlVGltZVN5bWJvbHNfc28nLCAnZ29vZy5pMThuLkRhdGVUaW1lU3ltYm9sc19zb19ESicsICdnb29nLmkxOG4uRGF0ZVRpbWVTeW1ib2xzX3NvX0VUJywgJ2dvb2cuaTE4bi5EYXRlVGltZVN5bWJvbHNfc29fS0UnLCAnZ29vZy5pMThuLkRhdGVUaW1lU3ltYm9sc19zb19TTycsICdnb29nLmkxOG4uRGF0ZVRpbWVTeW1ib2xzX3NxX0FMJywgJ2dvb2cuaTE4bi5EYXRlVGltZVN5bWJvbHNfc3FfTUsnLCAnZ29vZy5pMThuLkRhdGVUaW1lU3ltYm9sc19zcV9YSycsICdnb29nLmkxOG4uRGF0ZVRpbWVTeW1ib2xzX3NyX0N5cmwnLCAnZ29vZy5pMThuLkRhdGVUaW1lU3ltYm9sc19zcl9DeXJsX0JBJywgJ2dvb2cuaTE4bi5EYXRlVGltZVN5bWJvbHNfc3JfQ3lybF9NRScsICdnb29nLmkxOG4uRGF0ZVRpbWVTeW1ib2xzX3NyX0N5cmxfUlMnLCAnZ29vZy5pMThuLkRhdGVUaW1lU3ltYm9sc19zcl9DeXJsX1hLJywgJ2dvb2cuaTE4bi5EYXRlVGltZVN5bWJvbHNfc3JfTGF0bl9CQScsICdnb29nLmkxOG4uRGF0ZVRpbWVTeW1ib2xzX3NyX0xhdG5fTUUnLCAnZ29vZy5pMThuLkRhdGVUaW1lU3ltYm9sc19zcl9MYXRuX1JTJywgJ2dvb2cuaTE4bi5EYXRlVGltZVN5bWJvbHNfc3JfTGF0bl9YSycsICdnb29nLmkxOG4uRGF0ZVRpbWVTeW1ib2xzX3N2X0FYJywgJ2dvb2cuaTE4bi5EYXRlVGltZVN5bWJvbHNfc3ZfRkknLCAnZ29vZy5pMThuLkRhdGVUaW1lU3ltYm9sc19zdl9TRScsICdnb29nLmkxOG4uRGF0ZVRpbWVTeW1ib2xzX3N3X0NEJywgJ2dvb2cuaTE4bi5EYXRlVGltZVN5bWJvbHNfc3dfS0UnLCAnZ29vZy5pMThuLkRhdGVUaW1lU3ltYm9sc19zd19UWicsICdnb29nLmkxOG4uRGF0ZVRpbWVTeW1ib2xzX3N3X1VHJywgJ2dvb2cuaTE4bi5EYXRlVGltZVN5bWJvbHNfdGFfSU4nLCAnZ29vZy5pMThuLkRhdGVUaW1lU3ltYm9sc190YV9MSycsICdnb29nLmkxOG4uRGF0ZVRpbWVTeW1ib2xzX3RhX01ZJywgJ2dvb2cuaTE4bi5EYXRlVGltZVN5bWJvbHNfdGFfU0cnLCAnZ29vZy5pMThuLkRhdGVUaW1lU3ltYm9sc190ZV9JTicsICdnb29nLmkxOG4uRGF0ZVRpbWVTeW1ib2xzX3RlbycsICdnb29nLmkxOG4uRGF0ZVRpbWVTeW1ib2xzX3Rlb19LRScsICdnb29nLmkxOG4uRGF0ZVRpbWVTeW1ib2xzX3Rlb19VRycsICdnb29nLmkxOG4uRGF0ZVRpbWVTeW1ib2xzX3RnJywgJ2dvb2cuaTE4bi5EYXRlVGltZVN5bWJvbHNfdGdfVEonLCAnZ29vZy5pMThuLkRhdGVUaW1lU3ltYm9sc190aF9USCcsICdnb29nLmkxOG4uRGF0ZVRpbWVTeW1ib2xzX3RpJywgJ2dvb2cuaTE4bi5EYXRlVGltZVN5bWJvbHNfdGlfRVInLCAnZ29vZy5pMThuLkRhdGVUaW1lU3ltYm9sc190aV9FVCcsICdnb29nLmkxOG4uRGF0ZVRpbWVTeW1ib2xzX3RrJywgJ2dvb2cuaTE4bi5EYXRlVGltZVN5bWJvbHNfdGtfVE0nLCAnZ29vZy5pMThuLkRhdGVUaW1lU3ltYm9sc190bycsICdnb29nLmkxOG4uRGF0ZVRpbWVTeW1ib2xzX3RvX1RPJywgJ2dvb2cuaTE4bi5EYXRlVGltZVN5bWJvbHNfdHJfQ1knLCAnZ29vZy5pMThuLkRhdGVUaW1lU3ltYm9sc190cl9UUicsICdnb29nLmkxOG4uRGF0ZVRpbWVTeW1ib2xzX3R0JywgJ2dvb2cuaTE4bi5EYXRlVGltZVN5bWJvbHNfdHRfUlUnLCAnZ29vZy5pMThuLkRhdGVUaW1lU3ltYm9sc190d3EnLCAnZ29vZy5pMThuLkRhdGVUaW1lU3ltYm9sc190d3FfTkUnLCAnZ29vZy5pMThuLkRhdGVUaW1lU3ltYm9sc190em0nLCAnZ29vZy5pMThuLkRhdGVUaW1lU3ltYm9sc190em1fTUEnLCAnZ29vZy5pMThuLkRhdGVUaW1lU3ltYm9sc191ZycsICdnb29nLmkxOG4uRGF0ZVRpbWVTeW1ib2xzX3VnX0NOJywgJ2dvb2cuaTE4bi5EYXRlVGltZVN5bWJvbHNfdWtfVUEnLCAnZ29vZy5pMThuLkRhdGVUaW1lU3ltYm9sc191cl9JTicsICdnb29nLmkxOG4uRGF0ZVRpbWVTeW1ib2xzX3VyX1BLJywgJ2dvb2cuaTE4bi5EYXRlVGltZVN5bWJvbHNfdXpfQXJhYicsICdnb29nLmkxOG4uRGF0ZVRpbWVTeW1ib2xzX3V6X0FyYWJfQUYnLCAnZ29vZy5pMThuLkRhdGVUaW1lU3ltYm9sc191el9DeXJsJywgJ2dvb2cuaTE4bi5EYXRlVGltZVN5bWJvbHNfdXpfQ3lybF9VWicsICdnb29nLmkxOG4uRGF0ZVRpbWVTeW1ib2xzX3V6X0xhdG4nLCAnZ29vZy5pMThuLkRhdGVUaW1lU3ltYm9sc191el9MYXRuX1VaJywgJ2dvb2cuaTE4bi5EYXRlVGltZVN5bWJvbHNfdmFpJywgJ2dvb2cuaTE4bi5EYXRlVGltZVN5bWJvbHNfdmFpX0xhdG4nLCAnZ29vZy5pMThuLkRhdGVUaW1lU3ltYm9sc192YWlfTGF0bl9MUicsICdnb29nLmkxOG4uRGF0ZVRpbWVTeW1ib2xzX3ZhaV9WYWlpJywgJ2dvb2cuaTE4bi5EYXRlVGltZVN5bWJvbHNfdmFpX1ZhaWlfTFInLCAnZ29vZy5pMThuLkRhdGVUaW1lU3ltYm9sc192aV9WTicsICdnb29nLmkxOG4uRGF0ZVRpbWVTeW1ib2xzX3Z1bicsICdnb29nLmkxOG4uRGF0ZVRpbWVTeW1ib2xzX3Z1bl9UWicsICdnb29nLmkxOG4uRGF0ZVRpbWVTeW1ib2xzX3dhZScsICdnb29nLmkxOG4uRGF0ZVRpbWVTeW1ib2xzX3dhZV9DSCcsICdnb29nLmkxOG4uRGF0ZVRpbWVTeW1ib2xzX3dvJywgJ2dvb2cuaTE4bi5EYXRlVGltZVN5bWJvbHNfd29fU04nLCAnZ29vZy5pMThuLkRhdGVUaW1lU3ltYm9sc194aCcsICdnb29nLmkxOG4uRGF0ZVRpbWVTeW1ib2xzX3hoX1pBJywgJ2dvb2cuaTE4bi5EYXRlVGltZVN5bWJvbHNfeG9nJywgJ2dvb2cuaTE4bi5EYXRlVGltZVN5bWJvbHNfeG9nX1VHJywgJ2dvb2cuaTE4bi5EYXRlVGltZVN5bWJvbHNfeWF2JywgJ2dvb2cuaTE4bi5EYXRlVGltZVN5bWJvbHNfeWF2X0NNJywgJ2dvb2cuaTE4bi5EYXRlVGltZVN5bWJvbHNfeWknLCAnZ29vZy5pMThuLkRhdGVUaW1lU3ltYm9sc195aV8wMDEnLCAnZ29vZy5pMThuLkRhdGVUaW1lU3ltYm9sc195bycsICdnb29nLmkxOG4uRGF0ZVRpbWVTeW1ib2xzX3lvX0JKJywgJ2dvb2cuaTE4bi5EYXRlVGltZVN5bWJvbHNfeW9fTkcnLCAnZ29vZy5pMThuLkRhdGVUaW1lU3ltYm9sc195dWUnLCAnZ29vZy5pMThuLkRhdGVUaW1lU3ltYm9sc195dWVfSGFucycsICdnb29nLmkxOG4uRGF0ZVRpbWVTeW1ib2xzX3l1ZV9IYW5zX0NOJywgJ2dvb2cuaTE4bi5EYXRlVGltZVN5bWJvbHNfeXVlX0hhbnQnLCAnZ29vZy5pMThuLkRhdGVUaW1lU3ltYm9sc195dWVfSGFudF9ISycsICdnb29nLmkxOG4uRGF0ZVRpbWVTeW1ib2xzX3pnaCcsICdnb29nLmkxOG4uRGF0ZVRpbWVTeW1ib2xzX3pnaF9NQScsICdnb29nLmkxOG4uRGF0ZVRpbWVTeW1ib2xzX3poX0hhbnMnLCAnZ29vZy5pMThuLkRhdGVUaW1lU3ltYm9sc196aF9IYW5zX0NOJywgJ2dvb2cuaTE4bi5EYXRlVGltZVN5bWJvbHNfemhfSGFuc19ISycsICdnb29nLmkxOG4uRGF0ZVRpbWVTeW1ib2xzX3poX0hhbnNfTU8nLCAnZ29vZy5pMThuLkRhdGVUaW1lU3ltYm9sc196aF9IYW5zX1NHJywgJ2dvb2cuaTE4bi5EYXRlVGltZVN5bWJvbHNfemhfSGFudCcsICdnb29nLmkxOG4uRGF0ZVRpbWVTeW1ib2xzX3poX0hhbnRfSEsnLCAnZ29vZy5pMThuLkRhdGVUaW1lU3ltYm9sc196aF9IYW50X01PJywgJ2dvb2cuaTE4bi5EYXRlVGltZVN5bWJvbHNfemhfSGFudF9UVycsICdnb29nLmkxOG4uRGF0ZVRpbWVTeW1ib2xzX3p1X1pBJ10sIFsnZ29vZy5pMThuLkRhdGVUaW1lU3ltYm9scyddLCB7fSk7Cmdvb2cuYWRkRGVwZW5kZW5jeSgnaTE4bi9ncmFwaGVtZWJyZWFrLmpzJywgWydnb29nLmkxOG4uR3JhcGhlbWVCcmVhayddLCBbJ2dvb2cuYXNzZXJ0cycsICdnb29nLmkxOG4udUNoYXInLCAnZ29vZy5zdHJ1Y3RzLkludmVyc2lvbk1hcCddLCB7fSk7Cmdvb2cuYWRkRGVwZW5kZW5jeSgnaTE4bi9ncmFwaGVtZWJyZWFrX3Rlc3QuanMnLCBbJ2dvb2cuaTE4bi5HcmFwaGVtZUJyZWFrVGVzdCddLCBbJ2dvb2cuaTE4bi5HcmFwaGVtZUJyZWFrJywgJ2dvb2cuaTE4bi51Q2hhcicsICdnb29nLnRlc3RpbmcudGVzdFN1aXRlJ10sIHsnbGFuZyc6ICdlczYnLCAnbW9kdWxlJzogJ2dvb2cnfSk7Cmdvb2cuYWRkRGVwZW5kZW5jeSgnaTE4bi9sb2NhbGVmZWF0dXJlLmpzJywgWydnb29nLmkxOG4uTG9jYWxlRmVhdHVyZSddLCBbXSwgeydtb2R1bGUnOiAnZ29vZyd9KTsKZ29vZy5hZGREZXBlbmRlbmN5KCdpMThuL2xvY2FsZWZlYXR1cmVfdGVzdC5qcycsIFsnZ29vZy5pMThuLkxvY2FsZUZlYXR1cmVUZXN0J10sIFsnZ29vZy5pMThuLkxvY2FsZUZlYXR1cmUnLCAnZ29vZy50ZXN0aW5nLnRlc3RTdWl0ZSddLCB7J2xhbmcnOiAnZXM2JywgJ21vZHVsZSc6ICdnb29nJ30pOwpnb29nLmFkZERlcGVuZGVuY3koJ2kxOG4vbWVzc2FnZWZvcm1hdC5qcycsIFsnZ29vZy5pMThuLk1lc3NhZ2VGb3JtYXQnXSwgWydnb29nLmFycmF5JywgJ2dvb2cuYXNzZXJ0cycsICdnb29nLmkxOG4uQ29tcGFjdE51bWJlckZvcm1hdFN5bWJvbHMnLCAnZ29vZy5pMThuLk51bWJlckZvcm1hdCcsICdnb29nLmkxOG4uTnVtYmVyRm9ybWF0U3ltYm9scycsICdnb29nLmkxOG4ub3JkaW5hbFJ1bGVzJywgJ2dvb2cuaTE4bi5wbHVyYWxSdWxlcyddLCB7fSk7Cmdvb2cuYWRkRGVwZW5kZW5jeSgnaTE4bi9tZXNzYWdlZm9ybWF0X3Rlc3QuanMnLCBbJ2dvb2cuaTE4bi5NZXNzYWdlRm9ybWF0VGVzdCddLCBbJ2dvb2cuaTE4bi5NZXNzYWdlRm9ybWF0JywgJ2dvb2cuaTE4bi5OdW1iZXJGb3JtYXRTeW1ib2xzX2hyJywgJ2dvb2cuaTE4bi5wbHVyYWxSdWxlcycsICdnb29nLnRlc3RpbmcuUHJvcGVydHlSZXBsYWNlcicsICdnb29nLnRlc3RpbmcudGVzdFN1aXRlJ10sIHsnbGFuZyc6ICdlczYnLCAnbW9kdWxlJzogJ2dvb2cnfSk7Cmdvb2cuYWRkRGVwZW5kZW5jeSgnaTE4bi9taW1lLmpzJywgWydnb29nLmkxOG4ubWltZScsICdnb29nLmkxOG4ubWltZS5lbmNvZGUnXSwgWydnb29nLmFycmF5JywgJ2dvb2cuaTE4bi51Q2hhciddLCB7fSk7Cmdvb2cuYWRkRGVwZW5kZW5jeSgnaTE4bi9taW1lX3Rlc3QuanMnLCBbJ2dvb2cuaTE4bi5taW1lLmVuY29kZVRlc3QnXSwgWydnb29nLmkxOG4ubWltZS5lbmNvZGUnLCAnZ29vZy50ZXN0aW5nLnRlc3RTdWl0ZSddLCB7J2xhbmcnOiAnZXM2JywgJ21vZHVsZSc6ICdnb29nJ30pOwpnb29nLmFkZERlcGVuZGVuY3koJ2kxOG4vbnVtYmVyZm9ybWF0LmpzJywgWydnb29nLmkxOG4uTnVtYmVyRm9ybWF0JywgJ2dvb2cuaTE4bi5OdW1iZXJGb3JtYXQuQ3VycmVuY3lTdHlsZScsICdnb29nLmkxOG4uTnVtYmVyRm9ybWF0LkZvcm1hdCddLCBbJ2dvb2cuYXNzZXJ0cycsICdnb29nLmkxOG4uQ29tcGFjdE51bWJlckZvcm1hdFN5bWJvbHMnLCAnZ29vZy5pMThuLk51bWJlckZvcm1hdFN5bWJvbHMnLCAnZ29vZy5pMThuLk51bWJlckZvcm1hdFN5bWJvbHNfdV9udV9sYXRuJywgJ2dvb2cuaTE4bi5jdXJyZW5jeScsICdnb29nLm1hdGgnLCAnZ29vZy5zdHJpbmcnXSwge30pOwpnb29nLmFkZERlcGVuZGVuY3koJ2kxOG4vbnVtYmVyZm9ybWF0X3Rlc3QuanMnLCBbJ2dvb2cuaTE4bi5OdW1iZXJGb3JtYXRUZXN0J10sIFsnZ29vZy5pMThuLkNvbXBhY3ROdW1iZXJGb3JtYXRTeW1ib2xzJywgJ2dvb2cuaTE4bi5Db21wYWN0TnVtYmVyRm9ybWF0U3ltYm9sc19kZScsICdnb29nLmkxOG4uQ29tcGFjdE51bWJlckZvcm1hdFN5bWJvbHNfZW4nLCAnZ29vZy5pMThuLkNvbXBhY3ROdW1iZXJGb3JtYXRTeW1ib2xzX2ZyJywgJ2dvb2cuaTE4bi5OdW1iZXJGb3JtYXQnLCAnZ29vZy5pMThuLk51bWJlckZvcm1hdFN5bWJvbHMnLCAnZ29vZy5pMThuLk51bWJlckZvcm1hdFN5bWJvbHNfYXJfRUcnLCAnZ29vZy5pMThuLk51bWJlckZvcm1hdFN5bWJvbHNfYXJfRUdfdV9udV9sYXRuJywgJ2dvb2cuaTE4bi5OdW1iZXJGb3JtYXRTeW1ib2xzX2RlJywgJ2dvb2cuaTE4bi5OdW1iZXJGb3JtYXRTeW1ib2xzX2VuJywgJ2dvb2cuaTE4bi5OdW1iZXJGb3JtYXRTeW1ib2xzX2VuX0FVJywgJ2dvb2cuaTE4bi5OdW1iZXJGb3JtYXRTeW1ib2xzX2VuX1VTJywgJ2dvb2cuaTE4bi5OdW1iZXJGb3JtYXRTeW1ib2xzX2ZpJywgJ2dvb2cuaTE4bi5OdW1iZXJGb3JtYXRTeW1ib2xzX2ZyJywgJ2dvb2cuaTE4bi5OdW1iZXJGb3JtYXRTeW1ib2xzX3BsJywgJ2dvb2cuaTE4bi5OdW1iZXJGb3JtYXRTeW1ib2xzX3JvJywgJ2dvb2cuaTE4bi5OdW1iZXJGb3JtYXRTeW1ib2xzX3VfbnVfbGF0bicsICdnb29nLnN0cmluZycsICdnb29nLnRlc3RpbmcuRXhwZWN0ZWRGYWlsdXJlcycsICdnb29nLnRlc3RpbmcuUHJvcGVydHlSZXBsYWNlcicsICdnb29nLnRlc3RpbmcudGVzdFN1aXRlJywgJ2dvb2cudXNlckFnZW50JywgJ2dvb2cudXNlckFnZW50LnByb2R1Y3QnLCAnZ29vZy51c2VyQWdlbnQucHJvZHVjdC5pc1ZlcnNpb24nXSwgeydsYW5nJzogJ2VzNicsICdtb2R1bGUnOiAnZ29vZyd9KTsKZ29vZy5hZGREZXBlbmRlbmN5KCdpMThuL251bWJlcmZvcm1hdHN5bWJvbHMuanMnLCBbJ2dvb2cuaTE4bi5OdW1iZXJGb3JtYXRTeW1ib2xzJywgJ2dvb2cuaTE4bi5OdW1iZXJGb3JtYXRTeW1ib2xzX2FmJywgJ2dvb2cuaTE4bi5OdW1iZXJGb3JtYXRTeW1ib2xzX2FtJywgJ2dvb2cuaTE4bi5OdW1iZXJGb3JtYXRTeW1ib2xzX2FyJywgJ2dvb2cuaTE4bi5OdW1iZXJGb3JtYXRTeW1ib2xzX2FyX0RaJywgJ2dvb2cuaTE4bi5OdW1iZXJGb3JtYXRTeW1ib2xzX2FyX0VHJywgJ2dvb2cuaTE4bi5OdW1iZXJGb3JtYXRTeW1ib2xzX2FyX0VHX3VfbnVfbGF0bicsICdnb29nLmkxOG4uTnVtYmVyRm9ybWF0U3ltYm9sc19heicsICdnb29nLmkxOG4uTnVtYmVyRm9ybWF0U3ltYm9sc19iZScsICdnb29nLmkxOG4uTnVtYmVyRm9ybWF0U3ltYm9sc19iZycsICdnb29nLmkxOG4uTnVtYmVyRm9ybWF0U3ltYm9sc19ibicsICdnb29nLmkxOG4uTnVtYmVyRm9ybWF0U3ltYm9sc19ibl91X251X2xhdG4nLCAnZ29vZy5pMThuLk51bWJlckZvcm1hdFN5bWJvbHNfYnInLCAnZ29vZy5pMThuLk51bWJlckZvcm1hdFN5bWJvbHNfYnMnLCAnZ29vZy5pMThuLk51bWJlckZvcm1hdFN5bWJvbHNfY2EnLCAnZ29vZy5pMThuLk51bWJlckZvcm1hdFN5bWJvbHNfY2hyJywgJ2dvb2cuaTE4bi5OdW1iZXJGb3JtYXRTeW1ib2xzX2NzJywgJ2dvb2cuaTE4bi5OdW1iZXJGb3JtYXRTeW1ib2xzX2N5JywgJ2dvb2cuaTE4bi5OdW1iZXJGb3JtYXRTeW1ib2xzX2RhJywgJ2dvb2cuaTE4bi5OdW1iZXJGb3JtYXRTeW1ib2xzX2RlJywgJ2dvb2cuaTE4bi5OdW1iZXJGb3JtYXRTeW1ib2xzX2RlX0FUJywgJ2dvb2cuaTE4bi5OdW1iZXJGb3JtYXRTeW1ib2xzX2RlX0NIJywgJ2dvb2cuaTE4bi5OdW1iZXJGb3JtYXRTeW1ib2xzX2VsJywgJ2dvb2cuaTE4bi5OdW1iZXJGb3JtYXRTeW1ib2xzX2VuJywgJ2dvb2cuaTE4bi5OdW1iZXJGb3JtYXRTeW1ib2xzX2VuX0FVJywgJ2dvb2cuaTE4bi5OdW1iZXJGb3JtYXRTeW1ib2xzX2VuX0NBJywgJ2dvb2cuaTE4bi5OdW1iZXJGb3JtYXRTeW1ib2xzX2VuX0dCJywgJ2dvb2cuaTE4bi5OdW1iZXJGb3JtYXRTeW1ib2xzX2VuX0lFJywgJ2dvb2cuaTE4bi5OdW1iZXJGb3JtYXRTeW1ib2xzX2VuX0lOJywgJ2dvb2cuaTE4bi5OdW1iZXJGb3JtYXRTeW1ib2xzX2VuX1NHJywgJ2dvb2cuaTE4bi5OdW1iZXJGb3JtYXRTeW1ib2xzX2VuX1VTJywgJ2dvb2cuaTE4bi5OdW1iZXJGb3JtYXRTeW1ib2xzX2VuX1pBJywgJ2dvb2cuaTE4bi5OdW1iZXJGb3JtYXRTeW1ib2xzX2VzJywgJ2dvb2cuaTE4bi5OdW1iZXJGb3JtYXRTeW1ib2xzX2VzXzQxOScsICdnb29nLmkxOG4uTnVtYmVyRm9ybWF0U3ltYm9sc19lc19FUycsICdnb29nLmkxOG4uTnVtYmVyRm9ybWF0U3ltYm9sc19lc19NWCcsICdnb29nLmkxOG4uTnVtYmVyRm9ybWF0U3ltYm9sc19lc19VUycsICdnb29nLmkxOG4uTnVtYmVyRm9ybWF0U3ltYm9sc19ldCcsICdnb29nLmkxOG4uTnVtYmVyRm9ybWF0U3ltYm9sc19ldScsICdnb29nLmkxOG4uTnVtYmVyRm9ybWF0U3ltYm9sc19mYScsICdnb29nLmkxOG4uTnVtYmVyRm9ybWF0U3ltYm9sc19mYV91X251X2xhdG4nLCAnZ29vZy5pMThuLk51bWJlckZvcm1hdFN5bWJvbHNfZmknLCAnZ29vZy5pMThuLk51bWJlckZvcm1hdFN5bWJvbHNfZmlsJywgJ2dvb2cuaTE4bi5OdW1iZXJGb3JtYXRTeW1ib2xzX2ZyJywgJ2dvb2cuaTE4bi5OdW1iZXJGb3JtYXRTeW1ib2xzX2ZyX0NBJywgJ2dvb2cuaTE4bi5OdW1iZXJGb3JtYXRTeW1ib2xzX2dhJywgJ2dvb2cuaTE4bi5OdW1iZXJGb3JtYXRTeW1ib2xzX2dsJywgJ2dvb2cuaTE4bi5OdW1iZXJGb3JtYXRTeW1ib2xzX2dzdycsICdnb29nLmkxOG4uTnVtYmVyRm9ybWF0U3ltYm9sc19ndScsICdnb29nLmkxOG4uTnVtYmVyRm9ybWF0U3ltYm9sc19oYXcnLCAnZ29vZy5pMThuLk51bWJlckZvcm1hdFN5bWJvbHNfaGUnLCAnZ29vZy5pMThuLk51bWJlckZvcm1hdFN5bWJvbHNfaGknLCAnZ29vZy5pMThuLk51bWJlckZvcm1hdFN5bWJvbHNfaHInLCAnZ29vZy5pMThuLk51bWJlckZvcm1hdFN5bWJvbHNfaHUnLCAnZ29vZy5pMThuLk51bWJlckZvcm1hdFN5bWJvbHNfaHknLCAnZ29vZy5pMThuLk51bWJlckZvcm1hdFN5bWJvbHNfaWQnLCAnZ29vZy5pMThuLk51bWJlckZvcm1hdFN5bWJvbHNfaW4nLCAnZ29vZy5pMThuLk51bWJlckZvcm1hdFN5bWJvbHNfaXMnLCAnZ29vZy5pMThuLk51bWJlckZvcm1hdFN5bWJvbHNfaXQnLCAnZ29vZy5pMThuLk51bWJlckZvcm1hdFN5bWJvbHNfaXcnLCAnZ29vZy5pMThuLk51bWJlckZvcm1hdFN5bWJvbHNfamEnLCAnZ29vZy5pMThuLk51bWJlckZvcm1hdFN5bWJvbHNfa2EnLCAnZ29vZy5pMThuLk51bWJlckZvcm1hdFN5bWJvbHNfa2snLCAnZ29vZy5pMThuLk51bWJlckZvcm1hdFN5bWJvbHNfa20nLCAnZ29vZy5pMThuLk51bWJlckZvcm1hdFN5bWJvbHNfa24nLCAnZ29vZy5pMThuLk51bWJlckZvcm1hdFN5bWJvbHNfa28nLCAnZ29vZy5pMThuLk51bWJlckZvcm1hdFN5bWJvbHNfa3knLCAnZ29vZy5pMThuLk51bWJlckZvcm1hdFN5bWJvbHNfbG4nLCAnZ29vZy5pMThuLk51bWJlckZvcm1hdFN5bWJvbHNfbG8nLCAnZ29vZy5pMThuLk51bWJlckZvcm1hdFN5bWJvbHNfbHQnLCAnZ29vZy5pMThuLk51bWJlckZvcm1hdFN5bWJvbHNfbHYnLCAnZ29vZy5pMThuLk51bWJlckZvcm1hdFN5bWJvbHNfbWsnLCAnZ29vZy5pMThuLk51bWJlckZvcm1hdFN5bWJvbHNfbWwnLCAnZ29vZy5pMThuLk51bWJlckZvcm1hdFN5bWJvbHNfbW4nLCAnZ29vZy5pMThuLk51bWJlckZvcm1hdFN5bWJvbHNfbW8nLCAnZ29vZy5pMThuLk51bWJlckZvcm1hdFN5bWJvbHNfbXInLCAnZ29vZy5pMThuLk51bWJlckZvcm1hdFN5bWJvbHNfbXJfdV9udV9sYXRuJywgJ2dvb2cuaTE4bi5OdW1iZXJGb3JtYXRTeW1ib2xzX21zJywgJ2dvb2cuaTE4bi5OdW1iZXJGb3JtYXRTeW1ib2xzX210JywgJ2dvb2cuaTE4bi5OdW1iZXJGb3JtYXRTeW1ib2xzX215JywgJ2dvb2cuaTE4bi5OdW1iZXJGb3JtYXRTeW1ib2xzX215X3VfbnVfbGF0bicsICdnb29nLmkxOG4uTnVtYmVyRm9ybWF0U3ltYm9sc19uYicsICdnb29nLmkxOG4uTnVtYmVyRm9ybWF0U3ltYm9sc19uZScsICdnb29nLmkxOG4uTnVtYmVyRm9ybWF0U3ltYm9sc19uZV91X251X2xhdG4nLCAnZ29vZy5pMThuLk51bWJlckZvcm1hdFN5bWJvbHNfbmwnLCAnZ29vZy5pMThuLk51bWJlckZvcm1hdFN5bWJvbHNfbm8nLCAnZ29vZy5pMThuLk51bWJlckZvcm1hdFN5bWJvbHNfbm9fTk8nLCAnZ29vZy5pMThuLk51bWJlckZvcm1hdFN5bWJvbHNfb3InLCAnZ29vZy5pMThuLk51bWJlckZvcm1hdFN5bWJvbHNfcGEnLCAnZ29vZy5pMThuLk51bWJlckZvcm1hdFN5bWJvbHNfcGwnLCAnZ29vZy5pMThuLk51bWJlckZvcm1hdFN5bWJvbHNfcHQnLCAnZ29vZy5pMThuLk51bWJlckZvcm1hdFN5bWJvbHNfcHRfQlInLCAnZ29vZy5pMThuLk51bWJlckZvcm1hdFN5bWJvbHNfcHRfUFQnLCAnZ29vZy5pMThuLk51bWJlckZvcm1hdFN5bWJvbHNfcm8nLCAnZ29vZy5pMThuLk51bWJlckZvcm1hdFN5bWJvbHNfcnUnLCAnZ29vZy5pMThuLk51bWJlckZvcm1hdFN5bWJvbHNfc2gnLCAnZ29vZy5pMThuLk51bWJlckZvcm1hdFN5bWJvbHNfc2knLCAnZ29vZy5pMThuLk51bWJlckZvcm1hdFN5bWJvbHNfc2snLCAnZ29vZy5pMThuLk51bWJlckZvcm1hdFN5bWJvbHNfc2wnLCAnZ29vZy5pMThuLk51bWJlckZvcm1hdFN5bWJvbHNfc3EnLCAnZ29vZy5pMThuLk51bWJlckZvcm1hdFN5bWJvbHNfc3InLCAnZ29vZy5pMThuLk51bWJlckZvcm1hdFN5bWJvbHNfc3JfTGF0bicsICdnb29nLmkxOG4uTnVtYmVyRm9ybWF0U3ltYm9sc19zdicsICdnb29nLmkxOG4uTnVtYmVyRm9ybWF0U3ltYm9sc19zdycsICdnb29nLmkxOG4uTnVtYmVyRm9ybWF0U3ltYm9sc190YScsICdnb29nLmkxOG4uTnVtYmVyRm9ybWF0U3ltYm9sc190ZScsICdnb29nLmkxOG4uTnVtYmVyRm9ybWF0U3ltYm9sc190aCcsICdnb29nLmkxOG4uTnVtYmVyRm9ybWF0U3ltYm9sc190bCcsICdnb29nLmkxOG4uTnVtYmVyRm9ybWF0U3ltYm9sc190cicsICdnb29nLmkxOG4uTnVtYmVyRm9ybWF0U3ltYm9sc191X251X2xhdG4nLCAnZ29vZy5pMThuLk51bWJlckZvcm1hdFN5bWJvbHNfdWsnLCAnZ29vZy5pMThuLk51bWJlckZvcm1hdFN5bWJvbHNfdXInLCAnZ29vZy5pMThuLk51bWJlckZvcm1hdFN5bWJvbHNfdXonLCAnZ29vZy5pMThuLk51bWJlckZvcm1hdFN5bWJvbHNfdmknLCAnZ29vZy5pMThuLk51bWJlckZvcm1hdFN5bWJvbHNfemgnLCAnZ29vZy5pMThuLk51bWJlckZvcm1hdFN5bWJvbHNfemhfQ04nLCAnZ29vZy5pMThuLk51bWJlckZvcm1hdFN5bWJvbHNfemhfSEsnLCAnZ29vZy5pMThuLk51bWJlckZvcm1hdFN5bWJvbHNfemhfVFcnLCAnZ29vZy5pMThuLk51bWJlckZvcm1hdFN5bWJvbHNfenUnXSwgW10sIHt9KTsKZ29vZy5hZGREZXBlbmRlbmN5KCdpMThuL251bWJlcmZvcm1hdHN5bWJvbHNleHQuanMnLCBbJ2dvb2cuaTE4bi5OdW1iZXJGb3JtYXRTeW1ib2xzRXh0JywgJ2dvb2cuaTE4bi5OdW1iZXJGb3JtYXRTeW1ib2xzX2FmX05BJywgJ2dvb2cuaTE4bi5OdW1iZXJGb3JtYXRTeW1ib2xzX2FmX1pBJywgJ2dvb2cuaTE4bi5OdW1iZXJGb3JtYXRTeW1ib2xzX2FncScsICdnb29nLmkxOG4uTnVtYmVyRm9ybWF0U3ltYm9sc19hZ3FfQ00nLCAnZ29vZy5pMThuLk51bWJlckZvcm1hdFN5bWJvbHNfYWsnLCAnZ29vZy5pMThuLk51bWJlckZvcm1hdFN5bWJvbHNfYWtfR0gnLCAnZ29vZy5pMThuLk51bWJlckZvcm1hdFN5bWJvbHNfYW1fRVQnLCAnZ29vZy5pMThuLk51bWJlckZvcm1hdFN5bWJvbHNfYXJfMDAxJywgJ2dvb2cuaTE4bi5OdW1iZXJGb3JtYXRTeW1ib2xzX2FyX0FFJywgJ2dvb2cuaTE4bi5OdW1iZXJGb3JtYXRTeW1ib2xzX2FyX0FFX3VfbnVfbGF0bicsICdnb29nLmkxOG4uTnVtYmVyRm9ybWF0U3ltYm9sc19hcl9CSCcsICdnb29nLmkxOG4uTnVtYmVyRm9ybWF0U3ltYm9sc19hcl9CSF91X251X2xhdG4nLCAnZ29vZy5pMThuLk51bWJlckZvcm1hdFN5bWJvbHNfYXJfREonLCAnZ29vZy5pMThuLk51bWJlckZvcm1hdFN5bWJvbHNfYXJfREpfdV9udV9sYXRuJywgJ2dvb2cuaTE4bi5OdW1iZXJGb3JtYXRTeW1ib2xzX2FyX0VIJywgJ2dvb2cuaTE4bi5OdW1iZXJGb3JtYXRTeW1ib2xzX2FyX0VSJywgJ2dvb2cuaTE4bi5OdW1iZXJGb3JtYXRTeW1ib2xzX2FyX0VSX3VfbnVfbGF0bicsICdnb29nLmkxOG4uTnVtYmVyRm9ybWF0U3ltYm9sc19hcl9JTCcsICdnb29nLmkxOG4uTnVtYmVyRm9ybWF0U3ltYm9sc19hcl9JTF91X251X2xhdG4nLCAnZ29vZy5pMThuLk51bWJlckZvcm1hdFN5bWJvbHNfYXJfSVEnLCAnZ29vZy5pMThuLk51bWJlckZvcm1hdFN5bWJvbHNfYXJfSVFfdV9udV9sYXRuJywgJ2dvb2cuaTE4bi5OdW1iZXJGb3JtYXRTeW1ib2xzX2FyX0pPJywgJ2dvb2cuaTE4bi5OdW1iZXJGb3JtYXRTeW1ib2xzX2FyX0pPX3VfbnVfbGF0bicsICdnb29nLmkxOG4uTnVtYmVyRm9ybWF0U3ltYm9sc19hcl9LTScsICdnb29nLmkxOG4uTnVtYmVyRm9ybWF0U3ltYm9sc19hcl9LTV91X251X2xhdG4nLCAnZ29vZy5pMThuLk51bWJlckZvcm1hdFN5bWJvbHNfYXJfS1cnLCAnZ29vZy5pMThuLk51bWJlckZvcm1hdFN5bWJvbHNfYXJfS1dfdV9udV9sYXRuJywgJ2dvb2cuaTE4bi5OdW1iZXJGb3JtYXRTeW1ib2xzX2FyX0xCJywgJ2dvb2cuaTE4bi5OdW1iZXJGb3JtYXRTeW1ib2xzX2FyX0xCX3VfbnVfbGF0bicsICdnb29nLmkxOG4uTnVtYmVyRm9ybWF0U3ltYm9sc19hcl9MWScsICdnb29nLmkxOG4uTnVtYmVyRm9ybWF0U3ltYm9sc19hcl9NQScsICdnb29nLmkxOG4uTnVtYmVyRm9ybWF0U3ltYm9sc19hcl9NUicsICdnb29nLmkxOG4uTnVtYmVyRm9ybWF0U3ltYm9sc19hcl9NUl91X251X2xhdG4nLCAnZ29vZy5pMThuLk51bWJlckZvcm1hdFN5bWJvbHNfYXJfT00nLCAnZ29vZy5pMThuLk51bWJlckZvcm1hdFN5bWJvbHNfYXJfT01fdV9udV9sYXRuJywgJ2dvb2cuaTE4bi5OdW1iZXJGb3JtYXRTeW1ib2xzX2FyX1BTJywgJ2dvb2cuaTE4bi5OdW1iZXJGb3JtYXRTeW1ib2xzX2FyX1BTX3VfbnVfbGF0bicsICdnb29nLmkxOG4uTnVtYmVyRm9ybWF0U3ltYm9sc19hcl9RQScsICdnb29nLmkxOG4uTnVtYmVyRm9ybWF0U3ltYm9sc19hcl9RQV91X251X2xhdG4nLCAnZ29vZy5pMThuLk51bWJlckZvcm1hdFN5bWJvbHNfYXJfU0EnLCAnZ29vZy5pMThuLk51bWJlckZvcm1hdFN5bWJvbHNfYXJfU0FfdV9udV9sYXRuJywgJ2dvb2cuaTE4bi5OdW1iZXJGb3JtYXRTeW1ib2xzX2FyX1NEJywgJ2dvb2cuaTE4bi5OdW1iZXJGb3JtYXRTeW1ib2xzX2FyX1NEX3VfbnVfbGF0bicsICdnb29nLmkxOG4uTnVtYmVyRm9ybWF0U3ltYm9sc19hcl9TTycsICdnb29nLmkxOG4uTnVtYmVyRm9ybWF0U3ltYm9sc19hcl9TT191X251X2xhdG4nLCAnZ29vZy5pMThuLk51bWJlckZvcm1hdFN5bWJvbHNfYXJfU1MnLCAnZ29vZy5pMThuLk51bWJlckZvcm1hdFN5bWJvbHNfYXJfU1NfdV9udV9sYXRuJywgJ2dvb2cuaTE4bi5OdW1iZXJGb3JtYXRTeW1ib2xzX2FyX1NZJywgJ2dvb2cuaTE4bi5OdW1iZXJGb3JtYXRTeW1ib2xzX2FyX1NZX3VfbnVfbGF0bicsICdnb29nLmkxOG4uTnVtYmVyRm9ybWF0U3ltYm9sc19hcl9URCcsICdnb29nLmkxOG4uTnVtYmVyRm9ybWF0U3ltYm9sc19hcl9URF91X251X2xhdG4nLCAnZ29vZy5pMThuLk51bWJlckZvcm1hdFN5bWJvbHNfYXJfVE4nLCAnZ29vZy5pMThuLk51bWJlckZvcm1hdFN5bWJvbHNfYXJfWEInLCAnZ29vZy5pMThuLk51bWJlckZvcm1hdFN5bWJvbHNfYXJfWUUnLCAnZ29vZy5pMThuLk51bWJlckZvcm1hdFN5bWJvbHNfYXJfWUVfdV9udV9sYXRuJywgJ2dvb2cuaTE4bi5OdW1iZXJGb3JtYXRTeW1ib2xzX2FzJywgJ2dvb2cuaTE4bi5OdW1iZXJGb3JtYXRTeW1ib2xzX2FzX0lOJywgJ2dvb2cuaTE4bi5OdW1iZXJGb3JtYXRTeW1ib2xzX2FzX0lOX3VfbnVfbGF0bicsICdnb29nLmkxOG4uTnVtYmVyRm9ybWF0U3ltYm9sc19hc191X251X2xhdG4nLCAnZ29vZy5pMThuLk51bWJlckZvcm1hdFN5bWJvbHNfYXNhJywgJ2dvb2cuaTE4bi5OdW1iZXJGb3JtYXRTeW1ib2xzX2FzYV9UWicsICdnb29nLmkxOG4uTnVtYmVyRm9ybWF0U3ltYm9sc19hc3QnLCAnZ29vZy5pMThuLk51bWJlckZvcm1hdFN5bWJvbHNfYXN0X0VTJywgJ2dvb2cuaTE4bi5OdW1iZXJGb3JtYXRTeW1ib2xzX2F6X0N5cmwnLCAnZ29vZy5pMThuLk51bWJlckZvcm1hdFN5bWJvbHNfYXpfQ3lybF9BWicsICdnb29nLmkxOG4uTnVtYmVyRm9ybWF0U3ltYm9sc19hel9MYXRuJywgJ2dvb2cuaTE4bi5OdW1iZXJGb3JtYXRTeW1ib2xzX2F6X0xhdG5fQVonLCAnZ29vZy5pMThuLk51bWJlckZvcm1hdFN5bWJvbHNfYmFzJywgJ2dvb2cuaTE4bi5OdW1iZXJGb3JtYXRTeW1ib2xzX2Jhc19DTScsICdnb29nLmkxOG4uTnVtYmVyRm9ybWF0U3ltYm9sc19iZV9CWScsICdnb29nLmkxOG4uTnVtYmVyRm9ybWF0U3ltYm9sc19iZW0nLCAnZ29vZy5pMThuLk51bWJlckZvcm1hdFN5bWJvbHNfYmVtX1pNJywgJ2dvb2cuaTE4bi5OdW1iZXJGb3JtYXRTeW1ib2xzX2JleicsICdnb29nLmkxOG4uTnVtYmVyRm9ybWF0U3ltYm9sc19iZXpfVFonLCAnZ29vZy5pMThuLk51bWJlckZvcm1hdFN5bWJvbHNfYmdfQkcnLCAnZ29vZy5pMThuLk51bWJlckZvcm1hdFN5bWJvbHNfYm0nLCAnZ29vZy5pMThuLk51bWJlckZvcm1hdFN5bWJvbHNfYm1fTUwnLCAnZ29vZy5pMThuLk51bWJlckZvcm1hdFN5bWJvbHNfYm5fQkQnLCAnZ29vZy5pMThuLk51bWJlckZvcm1hdFN5bWJvbHNfYm5fQkRfdV9udV9sYXRuJywgJ2dvb2cuaTE4bi5OdW1iZXJGb3JtYXRTeW1ib2xzX2JuX0lOJywgJ2dvb2cuaTE4bi5OdW1iZXJGb3JtYXRTeW1ib2xzX2JuX0lOX3VfbnVfbGF0bicsICdnb29nLmkxOG4uTnVtYmVyRm9ybWF0U3ltYm9sc19ibycsICdnb29nLmkxOG4uTnVtYmVyRm9ybWF0U3ltYm9sc19ib19DTicsICdnb29nLmkxOG4uTnVtYmVyRm9ybWF0U3ltYm9sc19ib19JTicsICdnb29nLmkxOG4uTnVtYmVyRm9ybWF0U3ltYm9sc19icl9GUicsICdnb29nLmkxOG4uTnVtYmVyRm9ybWF0U3ltYm9sc19icngnLCAnZ29vZy5pMThuLk51bWJlckZvcm1hdFN5bWJvbHNfYnJ4X0lOJywgJ2dvb2cuaTE4bi5OdW1iZXJGb3JtYXRTeW1ib2xzX2JzX0N5cmwnLCAnZ29vZy5pMThuLk51bWJlckZvcm1hdFN5bWJvbHNfYnNfQ3lybF9CQScsICdnb29nLmkxOG4uTnVtYmVyRm9ybWF0U3ltYm9sc19ic19MYXRuJywgJ2dvb2cuaTE4bi5OdW1iZXJGb3JtYXRTeW1ib2xzX2JzX0xhdG5fQkEnLCAnZ29vZy5pMThuLk51bWJlckZvcm1hdFN5bWJvbHNfY2FfQUQnLCAnZ29vZy5pMThuLk51bWJlckZvcm1hdFN5bWJvbHNfY2FfRVMnLCAnZ29vZy5pMThuLk51bWJlckZvcm1hdFN5bWJvbHNfY2FfRlInLCAnZ29vZy5pMThuLk51bWJlckZvcm1hdFN5bWJvbHNfY2FfSVQnLCAnZ29vZy5pMThuLk51bWJlckZvcm1hdFN5bWJvbHNfY2NwJywgJ2dvb2cuaTE4bi5OdW1iZXJGb3JtYXRTeW1ib2xzX2NjcF9CRCcsICdnb29nLmkxOG4uTnVtYmVyRm9ybWF0U3ltYm9sc19jY3BfQkRfdV9udV9sYXRuJywgJ2dvb2cuaTE4bi5OdW1iZXJGb3JtYXRTeW1ib2xzX2NjcF9JTicsICdnb29nLmkxOG4uTnVtYmVyRm9ybWF0U3ltYm9sc19jY3BfSU5fdV9udV9sYXRuJywgJ2dvb2cuaTE4bi5OdW1iZXJGb3JtYXRTeW1ib2xzX2NjcF91X251X2xhdG4nLCAnZ29vZy5pMThuLk51bWJlckZvcm1hdFN5bWJvbHNfY2UnLCAnZ29vZy5pMThuLk51bWJlckZvcm1hdFN5bWJvbHNfY2VfUlUnLCAnZ29vZy5pMThuLk51bWJlckZvcm1hdFN5bWJvbHNfY2ViJywgJ2dvb2cuaTE4bi5OdW1iZXJGb3JtYXRTeW1ib2xzX2NlYl9QSCcsICdnb29nLmkxOG4uTnVtYmVyRm9ybWF0U3ltYm9sc19jZ2cnLCAnZ29vZy5pMThuLk51bWJlckZvcm1hdFN5bWJvbHNfY2dnX1VHJywgJ2dvb2cuaTE4bi5OdW1iZXJGb3JtYXRTeW1ib2xzX2Nocl9VUycsICdnb29nLmkxOG4uTnVtYmVyRm9ybWF0U3ltYm9sc19ja2InLCAnZ29vZy5pMThuLk51bWJlckZvcm1hdFN5bWJvbHNfY2tiX0lRJywgJ2dvb2cuaTE4bi5OdW1iZXJGb3JtYXRTeW1ib2xzX2NrYl9JUV91X251X2xhdG4nLCAnZ29vZy5pMThuLk51bWJlckZvcm1hdFN5bWJvbHNfY2tiX0lSJywgJ2dvb2cuaTE4bi5OdW1iZXJGb3JtYXRTeW1ib2xzX2NrYl9JUl91X251X2xhdG4nLCAnZ29vZy5pMThuLk51bWJlckZvcm1hdFN5bWJvbHNfY2tiX3VfbnVfbGF0bicsICdnb29nLmkxOG4uTnVtYmVyRm9ybWF0U3ltYm9sc19jc19DWicsICdnb29nLmkxOG4uTnVtYmVyRm9ybWF0U3ltYm9sc19jeV9HQicsICdnb29nLmkxOG4uTnVtYmVyRm9ybWF0U3ltYm9sc19kYV9ESycsICdnb29nLmkxOG4uTnVtYmVyRm9ybWF0U3ltYm9sc19kYV9HTCcsICdnb29nLmkxOG4uTnVtYmVyRm9ybWF0U3ltYm9sc19kYXYnLCAnZ29vZy5pMThuLk51bWJlckZvcm1hdFN5bWJvbHNfZGF2X0tFJywgJ2dvb2cuaTE4bi5OdW1iZXJGb3JtYXRTeW1ib2xzX2RlX0JFJywgJ2dvb2cuaTE4bi5OdW1iZXJGb3JtYXRTeW1ib2xzX2RlX0RFJywgJ2dvb2cuaTE4bi5OdW1iZXJGb3JtYXRTeW1ib2xzX2RlX0lUJywgJ2dvb2cuaTE4bi5OdW1iZXJGb3JtYXRTeW1ib2xzX2RlX0xJJywgJ2dvb2cuaTE4bi5OdW1iZXJGb3JtYXRTeW1ib2xzX2RlX0xVJywgJ2dvb2cuaTE4bi5OdW1iZXJGb3JtYXRTeW1ib2xzX2RqZScsICdnb29nLmkxOG4uTnVtYmVyRm9ybWF0U3ltYm9sc19kamVfTkUnLCAnZ29vZy5pMThuLk51bWJlckZvcm1hdFN5bWJvbHNfZHNiJywgJ2dvb2cuaTE4bi5OdW1iZXJGb3JtYXRTeW1ib2xzX2RzYl9ERScsICdnb29nLmkxOG4uTnVtYmVyRm9ybWF0U3ltYm9sc19kdWEnLCAnZ29vZy5pMThuLk51bWJlckZvcm1hdFN5bWJvbHNfZHVhX0NNJywgJ2dvb2cuaTE4bi5OdW1iZXJGb3JtYXRTeW1ib2xzX2R5bycsICdnb29nLmkxOG4uTnVtYmVyRm9ybWF0U3ltYm9sc19keW9fU04nLCAnZ29vZy5pMThuLk51bWJlckZvcm1hdFN5bWJvbHNfZHonLCAnZ29vZy5pMThuLk51bWJlckZvcm1hdFN5bWJvbHNfZHpfQlQnLCAnZ29vZy5pMThuLk51bWJlckZvcm1hdFN5bWJvbHNfZHpfQlRfdV9udV9sYXRuJywgJ2dvb2cuaTE4bi5OdW1iZXJGb3JtYXRTeW1ib2xzX2R6X3VfbnVfbGF0bicsICdnb29nLmkxOG4uTnVtYmVyRm9ybWF0U3ltYm9sc19lYnUnLCAnZ29vZy5pMThuLk51bWJlckZvcm1hdFN5bWJvbHNfZWJ1X0tFJywgJ2dvb2cuaTE4bi5OdW1iZXJGb3JtYXRTeW1ib2xzX2VlJywgJ2dvb2cuaTE4bi5OdW1iZXJGb3JtYXRTeW1ib2xzX2VlX0dIJywgJ2dvb2cuaTE4bi5OdW1iZXJGb3JtYXRTeW1ib2xzX2VlX1RHJywgJ2dvb2cuaTE4bi5OdW1iZXJGb3JtYXRTeW1ib2xzX2VsX0NZJywgJ2dvb2cuaTE4bi5OdW1iZXJGb3JtYXRTeW1ib2xzX2VsX0dSJywgJ2dvb2cuaTE4bi5OdW1iZXJGb3JtYXRTeW1ib2xzX2VuXzAwMScsICdnb29nLmkxOG4uTnVtYmVyRm9ybWF0U3ltYm9sc19lbl8xNTAnLCAnZ29vZy5pMThuLk51bWJlckZvcm1hdFN5bWJvbHNfZW5fQUUnLCAnZ29vZy5pMThuLk51bWJlckZvcm1hdFN5bWJvbHNfZW5fQUcnLCAnZ29vZy5pMThuLk51bWJlckZvcm1hdFN5bWJvbHNfZW5fQUknLCAnZ29vZy5pMThuLk51bWJlckZvcm1hdFN5bWJvbHNfZW5fQVMnLCAnZ29vZy5pMThuLk51bWJlckZvcm1hdFN5bWJvbHNfZW5fQVQnLCAnZ29vZy5pMThuLk51bWJlckZvcm1hdFN5bWJvbHNfZW5fQkInLCAnZ29vZy5pMThuLk51bWJlckZvcm1hdFN5bWJvbHNfZW5fQkUnLCAnZ29vZy5pMThuLk51bWJlckZvcm1hdFN5bWJvbHNfZW5fQkknLCAnZ29vZy5pMThuLk51bWJlckZvcm1hdFN5bWJvbHNfZW5fQk0nLCAnZ29vZy5pMThuLk51bWJlckZvcm1hdFN5bWJvbHNfZW5fQlMnLCAnZ29vZy5pMThuLk51bWJlckZvcm1hdFN5bWJvbHNfZW5fQlcnLCAnZ29vZy5pMThuLk51bWJlckZvcm1hdFN5bWJvbHNfZW5fQlonLCAnZ29vZy5pMThuLk51bWJlckZvcm1hdFN5bWJvbHNfZW5fQ0MnLCAnZ29vZy5pMThuLk51bWJlckZvcm1hdFN5bWJvbHNfZW5fQ0gnLCAnZ29vZy5pMThuLk51bWJlckZvcm1hdFN5bWJvbHNfZW5fQ0snLCAnZ29vZy5pMThuLk51bWJlckZvcm1hdFN5bWJvbHNfZW5fQ00nLCAnZ29vZy5pMThuLk51bWJlckZvcm1hdFN5bWJvbHNfZW5fQ1gnLCAnZ29vZy5pMThuLk51bWJlckZvcm1hdFN5bWJvbHNfZW5fQ1knLCAnZ29vZy5pMThuLk51bWJlckZvcm1hdFN5bWJvbHNfZW5fREUnLCAnZ29vZy5pMThuLk51bWJlckZvcm1hdFN5bWJvbHNfZW5fREcnLCAnZ29vZy5pMThuLk51bWJlckZvcm1hdFN5bWJvbHNfZW5fREsnLCAnZ29vZy5pMThuLk51bWJlckZvcm1hdFN5bWJvbHNfZW5fRE0nLCAnZ29vZy5pMThuLk51bWJlckZvcm1hdFN5bWJvbHNfZW5fRVInLCAnZ29vZy5pMThuLk51bWJlckZvcm1hdFN5bWJvbHNfZW5fRkknLCAnZ29vZy5pMThuLk51bWJlckZvcm1hdFN5bWJvbHNfZW5fRkonLCAnZ29vZy5pMThuLk51bWJlckZvcm1hdFN5bWJvbHNfZW5fRksnLCAnZ29vZy5pMThuLk51bWJlckZvcm1hdFN5bWJvbHNfZW5fRk0nLCAnZ29vZy5pMThuLk51bWJlckZvcm1hdFN5bWJvbHNfZW5fR0QnLCAnZ29vZy5pMThuLk51bWJlckZvcm1hdFN5bWJvbHNfZW5fR0cnLCAnZ29vZy5pMThuLk51bWJlckZvcm1hdFN5bWJvbHNfZW5fR0gnLCAnZ29vZy5pMThuLk51bWJlckZvcm1hdFN5bWJvbHNfZW5fR0knLCAnZ29vZy5pMThuLk51bWJlckZvcm1hdFN5bWJvbHNfZW5fR00nLCAnZ29vZy5pMThuLk51bWJlckZvcm1hdFN5bWJvbHNfZW5fR1UnLCAnZ29vZy5pMThuLk51bWJlckZvcm1hdFN5bWJvbHNfZW5fR1knLCAnZ29vZy5pMThuLk51bWJlckZvcm1hdFN5bWJvbHNfZW5fSEsnLCAnZ29vZy5pMThuLk51bWJlckZvcm1hdFN5bWJvbHNfZW5fSUwnLCAnZ29vZy5pMThuLk51bWJlckZvcm1hdFN5bWJvbHNfZW5fSU0nLCAnZ29vZy5pMThuLk51bWJlckZvcm1hdFN5bWJvbHNfZW5fSU8nLCAnZ29vZy5pMThuLk51bWJlckZvcm1hdFN5bWJvbHNfZW5fSkUnLCAnZ29vZy5pMThuLk51bWJlckZvcm1hdFN5bWJvbHNfZW5fSk0nLCAnZ29vZy5pMThuLk51bWJlckZvcm1hdFN5bWJvbHNfZW5fS0UnLCAnZ29vZy5pMThuLk51bWJlckZvcm1hdFN5bWJvbHNfZW5fS0knLCAnZ29vZy5pMThuLk51bWJlckZvcm1hdFN5bWJvbHNfZW5fS04nLCAnZ29vZy5pMThuLk51bWJlckZvcm1hdFN5bWJvbHNfZW5fS1knLCAnZ29vZy5pMThuLk51bWJlckZvcm1hdFN5bWJvbHNfZW5fTEMnLCAnZ29vZy5pMThuLk51bWJlckZvcm1hdFN5bWJvbHNfZW5fTFInLCAnZ29vZy5pMThuLk51bWJlckZvcm1hdFN5bWJvbHNfZW5fTFMnLCAnZ29vZy5pMThuLk51bWJlckZvcm1hdFN5bWJvbHNfZW5fTUcnLCAnZ29vZy5pMThuLk51bWJlckZvcm1hdFN5bWJvbHNfZW5fTUgnLCAnZ29vZy5pMThuLk51bWJlckZvcm1hdFN5bWJvbHNfZW5fTU8nLCAnZ29vZy5pMThuLk51bWJlckZvcm1hdFN5bWJvbHNfZW5fTVAnLCAnZ29vZy5pMThuLk51bWJlckZvcm1hdFN5bWJvbHNfZW5fTVMnLCAnZ29vZy5pMThuLk51bWJlckZvcm1hdFN5bWJvbHNfZW5fTVQnLCAnZ29vZy5pMThuLk51bWJlckZvcm1hdFN5bWJvbHNfZW5fTVUnLCAnZ29vZy5pMThuLk51bWJlckZvcm1hdFN5bWJvbHNfZW5fTVcnLCAnZ29vZy5pMThuLk51bWJlckZvcm1hdFN5bWJvbHNfZW5fTVknLCAnZ29vZy5pMThuLk51bWJlckZvcm1hdFN5bWJvbHNfZW5fTkEnLCAnZ29vZy5pMThuLk51bWJlckZvcm1hdFN5bWJvbHNfZW5fTkYnLCAnZ29vZy5pMThuLk51bWJlckZvcm1hdFN5bWJvbHNfZW5fTkcnLCAnZ29vZy5pMThuLk51bWJlckZvcm1hdFN5bWJvbHNfZW5fTkwnLCAnZ29vZy5pMThuLk51bWJlckZvcm1hdFN5bWJvbHNfZW5fTlInLCAnZ29vZy5pMThuLk51bWJlckZvcm1hdFN5bWJvbHNfZW5fTlUnLCAnZ29vZy5pMThuLk51bWJlckZvcm1hdFN5bWJvbHNfZW5fTlonLCAnZ29vZy5pMThuLk51bWJlckZvcm1hdFN5bWJvbHNfZW5fUEcnLCAnZ29vZy5pMThuLk51bWJlckZvcm1hdFN5bWJvbHNfZW5fUEgnLCAnZ29vZy5pMThuLk51bWJlckZvcm1hdFN5bWJvbHNfZW5fUEsnLCAnZ29vZy5pMThuLk51bWJlckZvcm1hdFN5bWJvbHNfZW5fUE4nLCAnZ29vZy5pMThuLk51bWJlckZvcm1hdFN5bWJvbHNfZW5fUFInLCAnZ29vZy5pMThuLk51bWJlckZvcm1hdFN5bWJvbHNfZW5fUFcnLCAnZ29vZy5pMThuLk51bWJlckZvcm1hdFN5bWJvbHNfZW5fUlcnLCAnZ29vZy5pMThuLk51bWJlckZvcm1hdFN5bWJvbHNfZW5fU0InLCAnZ29vZy5pMThuLk51bWJlckZvcm1hdFN5bWJvbHNfZW5fU0MnLCAnZ29vZy5pMThuLk51bWJlckZvcm1hdFN5bWJvbHNfZW5fU0QnLCAnZ29vZy5pMThuLk51bWJlckZvcm1hdFN5bWJvbHNfZW5fU0UnLCAnZ29vZy5pMThuLk51bWJlckZvcm1hdFN5bWJvbHNfZW5fU0gnLCAnZ29vZy5pMThuLk51bWJlckZvcm1hdFN5bWJvbHNfZW5fU0knLCAnZ29vZy5pMThuLk51bWJlckZvcm1hdFN5bWJvbHNfZW5fU0wnLCAnZ29vZy5pMThuLk51bWJlckZvcm1hdFN5bWJvbHNfZW5fU1MnLCAnZ29vZy5pMThuLk51bWJlckZvcm1hdFN5bWJvbHNfZW5fU1gnLCAnZ29vZy5pMThuLk51bWJlckZvcm1hdFN5bWJvbHNfZW5fU1onLCAnZ29vZy5pMThuLk51bWJlckZvcm1hdFN5bWJvbHNfZW5fVEMnLCAnZ29vZy5pMThuLk51bWJlckZvcm1hdFN5bWJvbHNfZW5fVEsnLCAnZ29vZy5pMThuLk51bWJlckZvcm1hdFN5bWJvbHNfZW5fVE8nLCAnZ29vZy5pMThuLk51bWJlckZvcm1hdFN5bWJvbHNfZW5fVFQnLCAnZ29vZy5pMThuLk51bWJlckZvcm1hdFN5bWJvbHNfZW5fVFYnLCAnZ29vZy5pMThuLk51bWJlckZvcm1hdFN5bWJvbHNfZW5fVFonLCAnZ29vZy5pMThuLk51bWJlckZvcm1hdFN5bWJvbHNfZW5fVUcnLCAnZ29vZy5pMThuLk51bWJlckZvcm1hdFN5bWJvbHNfZW5fVU0nLCAnZ29vZy5pMThuLk51bWJlckZvcm1hdFN5bWJvbHNfZW5fVVNfUE9TSVgnLCAnZ29vZy5pMThuLk51bWJlckZvcm1hdFN5bWJvbHNfZW5fVkMnLCAnZ29vZy5pMThuLk51bWJlckZvcm1hdFN5bWJvbHNfZW5fVkcnLCAnZ29vZy5pMThuLk51bWJlckZvcm1hdFN5bWJvbHNfZW5fVkknLCAnZ29vZy5pMThuLk51bWJlckZvcm1hdFN5bWJvbHNfZW5fVlUnLCAnZ29vZy5pMThuLk51bWJlckZvcm1hdFN5bWJvbHNfZW5fV1MnLCAnZ29vZy5pMThuLk51bWJlckZvcm1hdFN5bWJvbHNfZW5fWEEnLCAnZ29vZy5pMThuLk51bWJlckZvcm1hdFN5bWJvbHNfZW5fWk0nLCAnZ29vZy5pMThuLk51bWJlckZvcm1hdFN5bWJvbHNfZW5fWlcnLCAnZ29vZy5pMThuLk51bWJlckZvcm1hdFN5bWJvbHNfZW8nLCAnZ29vZy5pMThuLk51bWJlckZvcm1hdFN5bWJvbHNfZW9fMDAxJywgJ2dvb2cuaTE4bi5OdW1iZXJGb3JtYXRTeW1ib2xzX2VzX0FSJywgJ2dvb2cuaTE4bi5OdW1iZXJGb3JtYXRTeW1ib2xzX2VzX0JPJywgJ2dvb2cuaTE4bi5OdW1iZXJGb3JtYXRTeW1ib2xzX2VzX0JSJywgJ2dvb2cuaTE4bi5OdW1iZXJGb3JtYXRTeW1ib2xzX2VzX0JaJywgJ2dvb2cuaTE4bi5OdW1iZXJGb3JtYXRTeW1ib2xzX2VzX0NMJywgJ2dvb2cuaTE4bi5OdW1iZXJGb3JtYXRTeW1ib2xzX2VzX0NPJywgJ2dvb2cuaTE4bi5OdW1iZXJGb3JtYXRTeW1ib2xzX2VzX0NSJywgJ2dvb2cuaTE4bi5OdW1iZXJGb3JtYXRTeW1ib2xzX2VzX0NVJywgJ2dvb2cuaTE4bi5OdW1iZXJGb3JtYXRTeW1ib2xzX2VzX0RPJywgJ2dvb2cuaTE4bi5OdW1iZXJGb3JtYXRTeW1ib2xzX2VzX0VBJywgJ2dvb2cuaTE4bi5OdW1iZXJGb3JtYXRTeW1ib2xzX2VzX0VDJywgJ2dvb2cuaTE4bi5OdW1iZXJGb3JtYXRTeW1ib2xzX2VzX0dRJywgJ2dvb2cuaTE4bi5OdW1iZXJGb3JtYXRTeW1ib2xzX2VzX0dUJywgJ2dvb2cuaTE4bi5OdW1iZXJGb3JtYXRTeW1ib2xzX2VzX0hOJywgJ2dvb2cuaTE4bi5OdW1iZXJGb3JtYXRTeW1ib2xzX2VzX0lDJywgJ2dvb2cuaTE4bi5OdW1iZXJGb3JtYXRTeW1ib2xzX2VzX05JJywgJ2dvb2cuaTE4bi5OdW1iZXJGb3JtYXRTeW1ib2xzX2VzX1BBJywgJ2dvb2cuaTE4bi5OdW1iZXJGb3JtYXRTeW1ib2xzX2VzX1BFJywgJ2dvb2cuaTE4bi5OdW1iZXJGb3JtYXRTeW1ib2xzX2VzX1BIJywgJ2dvb2cuaTE4bi5OdW1iZXJGb3JtYXRTeW1ib2xzX2VzX1BSJywgJ2dvb2cuaTE4bi5OdW1iZXJGb3JtYXRTeW1ib2xzX2VzX1BZJywgJ2dvb2cuaTE4bi5OdW1iZXJGb3JtYXRTeW1ib2xzX2VzX1NWJywgJ2dvb2cuaTE4bi5OdW1iZXJGb3JtYXRTeW1ib2xzX2VzX1VZJywgJ2dvb2cuaTE4bi5OdW1iZXJGb3JtYXRTeW1ib2xzX2VzX1ZFJywgJ2dvb2cuaTE4bi5OdW1iZXJGb3JtYXRTeW1ib2xzX2V0X0VFJywgJ2dvb2cuaTE4bi5OdW1iZXJGb3JtYXRTeW1ib2xzX2V1X0VTJywgJ2dvb2cuaTE4bi5OdW1iZXJGb3JtYXRTeW1ib2xzX2V3bycsICdnb29nLmkxOG4uTnVtYmVyRm9ybWF0U3ltYm9sc19ld29fQ00nLCAnZ29vZy5pMThuLk51bWJlckZvcm1hdFN5bWJvbHNfZmFfQUYnLCAnZ29vZy5pMThuLk51bWJlckZvcm1hdFN5bWJvbHNfZmFfQUZfdV9udV9sYXRuJywgJ2dvb2cuaTE4bi5OdW1iZXJGb3JtYXRTeW1ib2xzX2ZhX0lSJywgJ2dvb2cuaTE4bi5OdW1iZXJGb3JtYXRTeW1ib2xzX2ZhX0lSX3VfbnVfbGF0bicsICdnb29nLmkxOG4uTnVtYmVyRm9ybWF0U3ltYm9sc19mZicsICdnb29nLmkxOG4uTnVtYmVyRm9ybWF0U3ltYm9sc19mZl9MYXRuJywgJ2dvb2cuaTE4bi5OdW1iZXJGb3JtYXRTeW1ib2xzX2ZmX0xhdG5fQkYnLCAnZ29vZy5pMThuLk51bWJlckZvcm1hdFN5bWJvbHNfZmZfTGF0bl9DTScsICdnb29nLmkxOG4uTnVtYmVyRm9ybWF0U3ltYm9sc19mZl9MYXRuX0dIJywgJ2dvb2cuaTE4bi5OdW1iZXJGb3JtYXRTeW1ib2xzX2ZmX0xhdG5fR00nLCAnZ29vZy5pMThuLk51bWJlckZvcm1hdFN5bWJvbHNfZmZfTGF0bl9HTicsICdnb29nLmkxOG4uTnVtYmVyRm9ybWF0U3ltYm9sc19mZl9MYXRuX0dXJywgJ2dvb2cuaTE4bi5OdW1iZXJGb3JtYXRTeW1ib2xzX2ZmX0xhdG5fTFInLCAnZ29vZy5pMThuLk51bWJlckZvcm1hdFN5bWJvbHNfZmZfTGF0bl9NUicsICdnb29nLmkxOG4uTnVtYmVyRm9ybWF0U3ltYm9sc19mZl9MYXRuX05FJywgJ2dvb2cuaTE4bi5OdW1iZXJGb3JtYXRTeW1ib2xzX2ZmX0xhdG5fTkcnLCAnZ29vZy5pMThuLk51bWJlckZvcm1hdFN5bWJvbHNfZmZfTGF0bl9TTCcsICdnb29nLmkxOG4uTnVtYmVyRm9ybWF0U3ltYm9sc19mZl9MYXRuX1NOJywgJ2dvb2cuaTE4bi5OdW1iZXJGb3JtYXRTeW1ib2xzX2ZpX0ZJJywgJ2dvb2cuaTE4bi5OdW1iZXJGb3JtYXRTeW1ib2xzX2ZpbF9QSCcsICdnb29nLmkxOG4uTnVtYmVyRm9ybWF0U3ltYm9sc19mbycsICdnb29nLmkxOG4uTnVtYmVyRm9ybWF0U3ltYm9sc19mb19ESycsICdnb29nLmkxOG4uTnVtYmVyRm9ybWF0U3ltYm9sc19mb19GTycsICdnb29nLmkxOG4uTnVtYmVyRm9ybWF0U3ltYm9sc19mcl9CRScsICdnb29nLmkxOG4uTnVtYmVyRm9ybWF0U3ltYm9sc19mcl9CRicsICdnb29nLmkxOG4uTnVtYmVyRm9ybWF0U3ltYm9sc19mcl9CSScsICdnb29nLmkxOG4uTnVtYmVyRm9ybWF0U3ltYm9sc19mcl9CSicsICdnb29nLmkxOG4uTnVtYmVyRm9ybWF0U3ltYm9sc19mcl9CTCcsICdnb29nLmkxOG4uTnVtYmVyRm9ybWF0U3ltYm9sc19mcl9DRCcsICdnb29nLmkxOG4uTnVtYmVyRm9ybWF0U3ltYm9sc19mcl9DRicsICdnb29nLmkxOG4uTnVtYmVyRm9ybWF0U3ltYm9sc19mcl9DRycsICdnb29nLmkxOG4uTnVtYmVyRm9ybWF0U3ltYm9sc19mcl9DSCcsICdnb29nLmkxOG4uTnVtYmVyRm9ybWF0U3ltYm9sc19mcl9DSScsICdnb29nLmkxOG4uTnVtYmVyRm9ybWF0U3ltYm9sc19mcl9DTScsICdnb29nLmkxOG4uTnVtYmVyRm9ybWF0U3ltYm9sc19mcl9ESicsICdnb29nLmkxOG4uTnVtYmVyRm9ybWF0U3ltYm9sc19mcl9EWicsICdnb29nLmkxOG4uTnVtYmVyRm9ybWF0U3ltYm9sc19mcl9GUicsICdnb29nLmkxOG4uTnVtYmVyRm9ybWF0U3ltYm9sc19mcl9HQScsICdnb29nLmkxOG4uTnVtYmVyRm9ybWF0U3ltYm9sc19mcl9HRicsICdnb29nLmkxOG4uTnVtYmVyRm9ybWF0U3ltYm9sc19mcl9HTicsICdnb29nLmkxOG4uTnVtYmVyRm9ybWF0U3ltYm9sc19mcl9HUCcsICdnb29nLmkxOG4uTnVtYmVyRm9ybWF0U3ltYm9sc19mcl9HUScsICdnb29nLmkxOG4uTnVtYmVyRm9ybWF0U3ltYm9sc19mcl9IVCcsICdnb29nLmkxOG4uTnVtYmVyRm9ybWF0U3ltYm9sc19mcl9LTScsICdnb29nLmkxOG4uTnVtYmVyRm9ybWF0U3ltYm9sc19mcl9MVScsICdnb29nLmkxOG4uTnVtYmVyRm9ybWF0U3ltYm9sc19mcl9NQScsICdnb29nLmkxOG4uTnVtYmVyRm9ybWF0U3ltYm9sc19mcl9NQycsICdnb29nLmkxOG4uTnVtYmVyRm9ybWF0U3ltYm9sc19mcl9NRicsICdnb29nLmkxOG4uTnVtYmVyRm9ybWF0U3ltYm9sc19mcl9NRycsICdnb29nLmkxOG4uTnVtYmVyRm9ybWF0U3ltYm9sc19mcl9NTCcsICdnb29nLmkxOG4uTnVtYmVyRm9ybWF0U3ltYm9sc19mcl9NUScsICdnb29nLmkxOG4uTnVtYmVyRm9ybWF0U3ltYm9sc19mcl9NUicsICdnb29nLmkxOG4uTnVtYmVyRm9ybWF0U3ltYm9sc19mcl9NVScsICdnb29nLmkxOG4uTnVtYmVyRm9ybWF0U3ltYm9sc19mcl9OQycsICdnb29nLmkxOG4uTnVtYmVyRm9ybWF0U3ltYm9sc19mcl9ORScsICdnb29nLmkxOG4uTnVtYmVyRm9ybWF0U3ltYm9sc19mcl9QRicsICdnb29nLmkxOG4uTnVtYmVyRm9ybWF0U3ltYm9sc19mcl9QTScsICdnb29nLmkxOG4uTnVtYmVyRm9ybWF0U3ltYm9sc19mcl9SRScsICdnb29nLmkxOG4uTnVtYmVyRm9ybWF0U3ltYm9sc19mcl9SVycsICdnb29nLmkxOG4uTnVtYmVyRm9ybWF0U3ltYm9sc19mcl9TQycsICdnb29nLmkxOG4uTnVtYmVyRm9ybWF0U3ltYm9sc19mcl9TTicsICdnb29nLmkxOG4uTnVtYmVyRm9ybWF0U3ltYm9sc19mcl9TWScsICdnb29nLmkxOG4uTnVtYmVyRm9ybWF0U3ltYm9sc19mcl9URCcsICdnb29nLmkxOG4uTnVtYmVyRm9ybWF0U3ltYm9sc19mcl9URycsICdnb29nLmkxOG4uTnVtYmVyRm9ybWF0U3ltYm9sc19mcl9UTicsICdnb29nLmkxOG4uTnVtYmVyRm9ybWF0U3ltYm9sc19mcl9WVScsICdnb29nLmkxOG4uTnVtYmVyRm9ybWF0U3ltYm9sc19mcl9XRicsICdnb29nLmkxOG4uTnVtYmVyRm9ybWF0U3ltYm9sc19mcl9ZVCcsICdnb29nLmkxOG4uTnVtYmVyRm9ybWF0U3ltYm9sc19mdXInLCAnZ29vZy5pMThuLk51bWJlckZvcm1hdFN5bWJvbHNfZnVyX0lUJywgJ2dvb2cuaTE4bi5OdW1iZXJGb3JtYXRTeW1ib2xzX2Z5JywgJ2dvb2cuaTE4bi5OdW1iZXJGb3JtYXRTeW1ib2xzX2Z5X05MJywgJ2dvb2cuaTE4bi5OdW1iZXJGb3JtYXRTeW1ib2xzX2dhX0lFJywgJ2dvb2cuaTE4bi5OdW1iZXJGb3JtYXRTeW1ib2xzX2dkJywgJ2dvb2cuaTE4bi5OdW1iZXJGb3JtYXRTeW1ib2xzX2dkX0dCJywgJ2dvb2cuaTE4bi5OdW1iZXJGb3JtYXRTeW1ib2xzX2dsX0VTJywgJ2dvb2cuaTE4bi5OdW1iZXJGb3JtYXRTeW1ib2xzX2dzd19DSCcsICdnb29nLmkxOG4uTnVtYmVyRm9ybWF0U3ltYm9sc19nc3dfRlInLCAnZ29vZy5pMThuLk51bWJlckZvcm1hdFN5bWJvbHNfZ3N3X0xJJywgJ2dvb2cuaTE4bi5OdW1iZXJGb3JtYXRTeW1ib2xzX2d1X0lOJywgJ2dvb2cuaTE4bi5OdW1iZXJGb3JtYXRTeW1ib2xzX2d1eicsICdnb29nLmkxOG4uTnVtYmVyRm9ybWF0U3ltYm9sc19ndXpfS0UnLCAnZ29vZy5pMThuLk51bWJlckZvcm1hdFN5bWJvbHNfZ3YnLCAnZ29vZy5pMThuLk51bWJlckZvcm1hdFN5bWJvbHNfZ3ZfSU0nLCAnZ29vZy5pMThuLk51bWJlckZvcm1hdFN5bWJvbHNfaGEnLCAnZ29vZy5pMThuLk51bWJlckZvcm1hdFN5bWJvbHNfaGFfR0gnLCAnZ29vZy5pMThuLk51bWJlckZvcm1hdFN5bWJvbHNfaGFfTkUnLCAnZ29vZy5pMThuLk51bWJlckZvcm1hdFN5bWJvbHNfaGFfTkcnLCAnZ29vZy5pMThuLk51bWJlckZvcm1hdFN5bWJvbHNfaGF3X1VTJywgJ2dvb2cuaTE4bi5OdW1iZXJGb3JtYXRTeW1ib2xzX2hlX0lMJywgJ2dvb2cuaTE4bi5OdW1iZXJGb3JtYXRTeW1ib2xzX2hpX0lOJywgJ2dvb2cuaTE4bi5OdW1iZXJGb3JtYXRTeW1ib2xzX2hyX0JBJywgJ2dvb2cuaTE4bi5OdW1iZXJGb3JtYXRTeW1ib2xzX2hyX0hSJywgJ2dvb2cuaTE4bi5OdW1iZXJGb3JtYXRTeW1ib2xzX2hzYicsICdnb29nLmkxOG4uTnVtYmVyRm9ybWF0U3ltYm9sc19oc2JfREUnLCAnZ29vZy5pMThuLk51bWJlckZvcm1hdFN5bWJvbHNfaHVfSFUnLCAnZ29vZy5pMThuLk51bWJlckZvcm1hdFN5bWJvbHNfaHlfQU0nLCAnZ29vZy5pMThuLk51bWJlckZvcm1hdFN5bWJvbHNfaWEnLCAnZ29vZy5pMThuLk51bWJlckZvcm1hdFN5bWJvbHNfaWFfMDAxJywgJ2dvb2cuaTE4bi5OdW1iZXJGb3JtYXRTeW1ib2xzX2lkX0lEJywgJ2dvb2cuaTE4bi5OdW1iZXJGb3JtYXRTeW1ib2xzX2lnJywgJ2dvb2cuaTE4bi5OdW1iZXJGb3JtYXRTeW1ib2xzX2lnX05HJywgJ2dvb2cuaTE4bi5OdW1iZXJGb3JtYXRTeW1ib2xzX2lpJywgJ2dvb2cuaTE4bi5OdW1iZXJGb3JtYXRTeW1ib2xzX2lpX0NOJywgJ2dvb2cuaTE4bi5OdW1iZXJGb3JtYXRTeW1ib2xzX2lzX0lTJywgJ2dvb2cuaTE4bi5OdW1iZXJGb3JtYXRTeW1ib2xzX2l0X0NIJywgJ2dvb2cuaTE4bi5OdW1iZXJGb3JtYXRTeW1ib2xzX2l0X0lUJywgJ2dvb2cuaTE4bi5OdW1iZXJGb3JtYXRTeW1ib2xzX2l0X1NNJywgJ2dvb2cuaTE4bi5OdW1iZXJGb3JtYXRTeW1ib2xzX2l0X1ZBJywgJ2dvb2cuaTE4bi5OdW1iZXJGb3JtYXRTeW1ib2xzX2phX0pQJywgJ2dvb2cuaTE4bi5OdW1iZXJGb3JtYXRTeW1ib2xzX2pnbycsICdnb29nLmkxOG4uTnVtYmVyRm9ybWF0U3ltYm9sc19qZ29fQ00nLCAnZ29vZy5pMThuLk51bWJlckZvcm1hdFN5bWJvbHNfam1jJywgJ2dvb2cuaTE4bi5OdW1iZXJGb3JtYXRTeW1ib2xzX2ptY19UWicsICdnb29nLmkxOG4uTnVtYmVyRm9ybWF0U3ltYm9sc19qdicsICdnb29nLmkxOG4uTnVtYmVyRm9ybWF0U3ltYm9sc19qdl9JRCcsICdnb29nLmkxOG4uTnVtYmVyRm9ybWF0U3ltYm9sc19rYV9HRScsICdnb29nLmkxOG4uTnVtYmVyRm9ybWF0U3ltYm9sc19rYWInLCAnZ29vZy5pMThuLk51bWJlckZvcm1hdFN5bWJvbHNfa2FiX0RaJywgJ2dvb2cuaTE4bi5OdW1iZXJGb3JtYXRTeW1ib2xzX2thbScsICdnb29nLmkxOG4uTnVtYmVyRm9ybWF0U3ltYm9sc19rYW1fS0UnLCAnZ29vZy5pMThuLk51bWJlckZvcm1hdFN5bWJvbHNfa2RlJywgJ2dvb2cuaTE4bi5OdW1iZXJGb3JtYXRTeW1ib2xzX2tkZV9UWicsICdnb29nLmkxOG4uTnVtYmVyRm9ybWF0U3ltYm9sc19rZWEnLCAnZ29vZy5pMThuLk51bWJlckZvcm1hdFN5bWJvbHNfa2VhX0NWJywgJ2dvb2cuaTE4bi5OdW1iZXJGb3JtYXRTeW1ib2xzX2tocScsICdnb29nLmkxOG4uTnVtYmVyRm9ybWF0U3ltYm9sc19raHFfTUwnLCAnZ29vZy5pMThuLk51bWJlckZvcm1hdFN5bWJvbHNfa2knLCAnZ29vZy5pMThuLk51bWJlckZvcm1hdFN5bWJvbHNfa2lfS0UnLCAnZ29vZy5pMThuLk51bWJlckZvcm1hdFN5bWJvbHNfa2tfS1onLCAnZ29vZy5pMThuLk51bWJlckZvcm1hdFN5bWJvbHNfa2tqJywgJ2dvb2cuaTE4bi5OdW1iZXJGb3JtYXRTeW1ib2xzX2tral9DTScsICdnb29nLmkxOG4uTnVtYmVyRm9ybWF0U3ltYm9sc19rbCcsICdnb29nLmkxOG4uTnVtYmVyRm9ybWF0U3ltYm9sc19rbF9HTCcsICdnb29nLmkxOG4uTnVtYmVyRm9ybWF0U3ltYm9sc19rbG4nLCAnZ29vZy5pMThuLk51bWJlckZvcm1hdFN5bWJvbHNfa2xuX0tFJywgJ2dvb2cuaTE4bi5OdW1iZXJGb3JtYXRTeW1ib2xzX2ttX0tIJywgJ2dvb2cuaTE4bi5OdW1iZXJGb3JtYXRTeW1ib2xzX2tuX0lOJywgJ2dvb2cuaTE4bi5OdW1iZXJGb3JtYXRTeW1ib2xzX2tvX0tQJywgJ2dvb2cuaTE4bi5OdW1iZXJGb3JtYXRTeW1ib2xzX2tvX0tSJywgJ2dvb2cuaTE4bi5OdW1iZXJGb3JtYXRTeW1ib2xzX2tvaycsICdnb29nLmkxOG4uTnVtYmVyRm9ybWF0U3ltYm9sc19rb2tfSU4nLCAnZ29vZy5pMThuLk51bWJlckZvcm1hdFN5bWJvbHNfa3MnLCAnZ29vZy5pMThuLk51bWJlckZvcm1hdFN5bWJvbHNfa3NfSU4nLCAnZ29vZy5pMThuLk51bWJlckZvcm1hdFN5bWJvbHNfa3NfSU5fdV9udV9sYXRuJywgJ2dvb2cuaTE4bi5OdW1iZXJGb3JtYXRTeW1ib2xzX2tzX3VfbnVfbGF0bicsICdnb29nLmkxOG4uTnVtYmVyRm9ybWF0U3ltYm9sc19rc2InLCAnZ29vZy5pMThuLk51bWJlckZvcm1hdFN5bWJvbHNfa3NiX1RaJywgJ2dvb2cuaTE4bi5OdW1iZXJGb3JtYXRTeW1ib2xzX2tzZicsICdnb29nLmkxOG4uTnVtYmVyRm9ybWF0U3ltYm9sc19rc2ZfQ00nLCAnZ29vZy5pMThuLk51bWJlckZvcm1hdFN5bWJvbHNfa3NoJywgJ2dvb2cuaTE4bi5OdW1iZXJGb3JtYXRTeW1ib2xzX2tzaF9ERScsICdnb29nLmkxOG4uTnVtYmVyRm9ybWF0U3ltYm9sc19rdScsICdnb29nLmkxOG4uTnVtYmVyRm9ybWF0U3ltYm9sc19rdV9UUicsICdnb29nLmkxOG4uTnVtYmVyRm9ybWF0U3ltYm9sc19rdycsICdnb29nLmkxOG4uTnVtYmVyRm9ybWF0U3ltYm9sc19rd19HQicsICdnb29nLmkxOG4uTnVtYmVyRm9ybWF0U3ltYm9sc19reV9LRycsICdnb29nLmkxOG4uTnVtYmVyRm9ybWF0U3ltYm9sc19sYWcnLCAnZ29vZy5pMThuLk51bWJlckZvcm1hdFN5bWJvbHNfbGFnX1RaJywgJ2dvb2cuaTE4bi5OdW1iZXJGb3JtYXRTeW1ib2xzX2xiJywgJ2dvb2cuaTE4bi5OdW1iZXJGb3JtYXRTeW1ib2xzX2xiX0xVJywgJ2dvb2cuaTE4bi5OdW1iZXJGb3JtYXRTeW1ib2xzX2xnJywgJ2dvb2cuaTE4bi5OdW1iZXJGb3JtYXRTeW1ib2xzX2xnX1VHJywgJ2dvb2cuaTE4bi5OdW1iZXJGb3JtYXRTeW1ib2xzX2xrdCcsICdnb29nLmkxOG4uTnVtYmVyRm9ybWF0U3ltYm9sc19sa3RfVVMnLCAnZ29vZy5pMThuLk51bWJlckZvcm1hdFN5bWJvbHNfbG5fQU8nLCAnZ29vZy5pMThuLk51bWJlckZvcm1hdFN5bWJvbHNfbG5fQ0QnLCAnZ29vZy5pMThuLk51bWJlckZvcm1hdFN5bWJvbHNfbG5fQ0YnLCAnZ29vZy5pMThuLk51bWJlckZvcm1hdFN5bWJvbHNfbG5fQ0cnLCAnZ29vZy5pMThuLk51bWJlckZvcm1hdFN5bWJvbHNfbG9fTEEnLCAnZ29vZy5pMThuLk51bWJlckZvcm1hdFN5bWJvbHNfbHJjJywgJ2dvb2cuaTE4bi5OdW1iZXJGb3JtYXRTeW1ib2xzX2xyY19JUScsICdnb29nLmkxOG4uTnVtYmVyRm9ybWF0U3ltYm9sc19scmNfSVFfdV9udV9sYXRuJywgJ2dvb2cuaTE4bi5OdW1iZXJGb3JtYXRTeW1ib2xzX2xyY19JUicsICdnb29nLmkxOG4uTnVtYmVyRm9ybWF0U3ltYm9sc19scmNfSVJfdV9udV9sYXRuJywgJ2dvb2cuaTE4bi5OdW1iZXJGb3JtYXRTeW1ib2xzX2xyY191X251X2xhdG4nLCAnZ29vZy5pMThuLk51bWJlckZvcm1hdFN5bWJvbHNfbHRfTFQnLCAnZ29vZy5pMThuLk51bWJlckZvcm1hdFN5bWJvbHNfbHUnLCAnZ29vZy5pMThuLk51bWJlckZvcm1hdFN5bWJvbHNfbHVfQ0QnLCAnZ29vZy5pMThuLk51bWJlckZvcm1hdFN5bWJvbHNfbHVvJywgJ2dvb2cuaTE4bi5OdW1iZXJGb3JtYXRTeW1ib2xzX2x1b19LRScsICdnb29nLmkxOG4uTnVtYmVyRm9ybWF0U3ltYm9sc19sdXknLCAnZ29vZy5pMThuLk51bWJlckZvcm1hdFN5bWJvbHNfbHV5X0tFJywgJ2dvb2cuaTE4bi5OdW1iZXJGb3JtYXRTeW1ib2xzX2x2X0xWJywgJ2dvb2cuaTE4bi5OdW1iZXJGb3JtYXRTeW1ib2xzX21hcycsICdnb29nLmkxOG4uTnVtYmVyRm9ybWF0U3ltYm9sc19tYXNfS0UnLCAnZ29vZy5pMThuLk51bWJlckZvcm1hdFN5bWJvbHNfbWFzX1RaJywgJ2dvb2cuaTE4bi5OdW1iZXJGb3JtYXRTeW1ib2xzX21lcicsICdnb29nLmkxOG4uTnVtYmVyRm9ybWF0U3ltYm9sc19tZXJfS0UnLCAnZ29vZy5pMThuLk51bWJlckZvcm1hdFN5bWJvbHNfbWZlJywgJ2dvb2cuaTE4bi5OdW1iZXJGb3JtYXRTeW1ib2xzX21mZV9NVScsICdnb29nLmkxOG4uTnVtYmVyRm9ybWF0U3ltYm9sc19tZycsICdnb29nLmkxOG4uTnVtYmVyRm9ybWF0U3ltYm9sc19tZ19NRycsICdnb29nLmkxOG4uTnVtYmVyRm9ybWF0U3ltYm9sc19tZ2gnLCAnZ29vZy5pMThuLk51bWJlckZvcm1hdFN5bWJvbHNfbWdoX01aJywgJ2dvb2cuaTE4bi5OdW1iZXJGb3JtYXRTeW1ib2xzX21nbycsICdnb29nLmkxOG4uTnVtYmVyRm9ybWF0U3ltYm9sc19tZ29fQ00nLCAnZ29vZy5pMThuLk51bWJlckZvcm1hdFN5bWJvbHNfbWknLCAnZ29vZy5pMThuLk51bWJlckZvcm1hdFN5bWJvbHNfbWlfTlonLCAnZ29vZy5pMThuLk51bWJlckZvcm1hdFN5bWJvbHNfbWtfTUsnLCAnZ29vZy5pMThuLk51bWJlckZvcm1hdFN5bWJvbHNfbWxfSU4nLCAnZ29vZy5pMThuLk51bWJlckZvcm1hdFN5bWJvbHNfbW5fTU4nLCAnZ29vZy5pMThuLk51bWJlckZvcm1hdFN5bWJvbHNfbXJfSU4nLCAnZ29vZy5pMThuLk51bWJlckZvcm1hdFN5bWJvbHNfbXJfSU5fdV9udV9sYXRuJywgJ2dvb2cuaTE4bi5OdW1iZXJGb3JtYXRTeW1ib2xzX21zX0JOJywgJ2dvb2cuaTE4bi5OdW1iZXJGb3JtYXRTeW1ib2xzX21zX01ZJywgJ2dvb2cuaTE4bi5OdW1iZXJGb3JtYXRTeW1ib2xzX21zX1NHJywgJ2dvb2cuaTE4bi5OdW1iZXJGb3JtYXRTeW1ib2xzX210X01UJywgJ2dvb2cuaTE4bi5OdW1iZXJGb3JtYXRTeW1ib2xzX211YScsICdnb29nLmkxOG4uTnVtYmVyRm9ybWF0U3ltYm9sc19tdWFfQ00nLCAnZ29vZy5pMThuLk51bWJlckZvcm1hdFN5bWJvbHNfbXlfTU0nLCAnZ29vZy5pMThuLk51bWJlckZvcm1hdFN5bWJvbHNfbXlfTU1fdV9udV9sYXRuJywgJ2dvb2cuaTE4bi5OdW1iZXJGb3JtYXRTeW1ib2xzX216bicsICdnb29nLmkxOG4uTnVtYmVyRm9ybWF0U3ltYm9sc19tem5fSVInLCAnZ29vZy5pMThuLk51bWJlckZvcm1hdFN5bWJvbHNfbXpuX0lSX3VfbnVfbGF0bicsICdnb29nLmkxOG4uTnVtYmVyRm9ybWF0U3ltYm9sc19tem5fdV9udV9sYXRuJywgJ2dvb2cuaTE4bi5OdW1iZXJGb3JtYXRTeW1ib2xzX25hcScsICdnb29nLmkxOG4uTnVtYmVyRm9ybWF0U3ltYm9sc19uYXFfTkEnLCAnZ29vZy5pMThuLk51bWJlckZvcm1hdFN5bWJvbHNfbmJfTk8nLCAnZ29vZy5pMThuLk51bWJlckZvcm1hdFN5bWJvbHNfbmJfU0onLCAnZ29vZy5pMThuLk51bWJlckZvcm1hdFN5bWJvbHNfbmQnLCAnZ29vZy5pMThuLk51bWJlckZvcm1hdFN5bWJvbHNfbmRfWlcnLCAnZ29vZy5pMThuLk51bWJlckZvcm1hdFN5bWJvbHNfbmRzJywgJ2dvb2cuaTE4bi5OdW1iZXJGb3JtYXRTeW1ib2xzX25kc19ERScsICdnb29nLmkxOG4uTnVtYmVyRm9ybWF0U3ltYm9sc19uZHNfTkwnLCAnZ29vZy5pMThuLk51bWJlckZvcm1hdFN5bWJvbHNfbmVfSU4nLCAnZ29vZy5pMThuLk51bWJlckZvcm1hdFN5bWJvbHNfbmVfSU5fdV9udV9sYXRuJywgJ2dvb2cuaTE4bi5OdW1iZXJGb3JtYXRTeW1ib2xzX25lX05QJywgJ2dvb2cuaTE4bi5OdW1iZXJGb3JtYXRTeW1ib2xzX25lX05QX3VfbnVfbGF0bicsICdnb29nLmkxOG4uTnVtYmVyRm9ybWF0U3ltYm9sc19ubF9BVycsICdnb29nLmkxOG4uTnVtYmVyRm9ybWF0U3ltYm9sc19ubF9CRScsICdnb29nLmkxOG4uTnVtYmVyRm9ybWF0U3ltYm9sc19ubF9CUScsICdnb29nLmkxOG4uTnVtYmVyRm9ybWF0U3ltYm9sc19ubF9DVycsICdnb29nLmkxOG4uTnVtYmVyRm9ybWF0U3ltYm9sc19ubF9OTCcsICdnb29nLmkxOG4uTnVtYmVyRm9ybWF0U3ltYm9sc19ubF9TUicsICdnb29nLmkxOG4uTnVtYmVyRm9ybWF0U3ltYm9sc19ubF9TWCcsICdnb29nLmkxOG4uTnVtYmVyRm9ybWF0U3ltYm9sc19ubWcnLCAnZ29vZy5pMThuLk51bWJlckZvcm1hdFN5bWJvbHNfbm1nX0NNJywgJ2dvb2cuaTE4bi5OdW1iZXJGb3JtYXRTeW1ib2xzX25uJywgJ2dvb2cuaTE4bi5OdW1iZXJGb3JtYXRTeW1ib2xzX25uX05PJywgJ2dvb2cuaTE4bi5OdW1iZXJGb3JtYXRTeW1ib2xzX25uaCcsICdnb29nLmkxOG4uTnVtYmVyRm9ybWF0U3ltYm9sc19ubmhfQ00nLCAnZ29vZy5pMThuLk51bWJlckZvcm1hdFN5bWJvbHNfbnVzJywgJ2dvb2cuaTE4bi5OdW1iZXJGb3JtYXRTeW1ib2xzX251c19TUycsICdnb29nLmkxOG4uTnVtYmVyRm9ybWF0U3ltYm9sc19ueW4nLCAnZ29vZy5pMThuLk51bWJlckZvcm1hdFN5bWJvbHNfbnluX1VHJywgJ2dvb2cuaTE4bi5OdW1iZXJGb3JtYXRTeW1ib2xzX29tJywgJ2dvb2cuaTE4bi5OdW1iZXJGb3JtYXRTeW1ib2xzX29tX0VUJywgJ2dvb2cuaTE4bi5OdW1iZXJGb3JtYXRTeW1ib2xzX29tX0tFJywgJ2dvb2cuaTE4bi5OdW1iZXJGb3JtYXRTeW1ib2xzX29yX0lOJywgJ2dvb2cuaTE4bi5OdW1iZXJGb3JtYXRTeW1ib2xzX29zJywgJ2dvb2cuaTE4bi5OdW1iZXJGb3JtYXRTeW1ib2xzX29zX0dFJywgJ2dvb2cuaTE4bi5OdW1iZXJGb3JtYXRTeW1ib2xzX29zX1JVJywgJ2dvb2cuaTE4bi5OdW1iZXJGb3JtYXRTeW1ib2xzX3BhX0FyYWInLCAnZ29vZy5pMThuLk51bWJlckZvcm1hdFN5bWJvbHNfcGFfQXJhYl9QSycsICdnb29nLmkxOG4uTnVtYmVyRm9ybWF0U3ltYm9sc19wYV9BcmFiX1BLX3VfbnVfbGF0bicsICdnb29nLmkxOG4uTnVtYmVyRm9ybWF0U3ltYm9sc19wYV9BcmFiX3VfbnVfbGF0bicsICdnb29nLmkxOG4uTnVtYmVyRm9ybWF0U3ltYm9sc19wYV9HdXJ1JywgJ2dvb2cuaTE4bi5OdW1iZXJGb3JtYXRTeW1ib2xzX3BhX0d1cnVfSU4nLCAnZ29vZy5pMThuLk51bWJlckZvcm1hdFN5bWJvbHNfcGxfUEwnLCAnZ29vZy5pMThuLk51bWJlckZvcm1hdFN5bWJvbHNfcHMnLCAnZ29vZy5pMThuLk51bWJlckZvcm1hdFN5bWJvbHNfcHNfQUYnLCAnZ29vZy5pMThuLk51bWJlckZvcm1hdFN5bWJvbHNfcHNfQUZfdV9udV9sYXRuJywgJ2dvb2cuaTE4bi5OdW1iZXJGb3JtYXRTeW1ib2xzX3BzX1BLJywgJ2dvb2cuaTE4bi5OdW1iZXJGb3JtYXRTeW1ib2xzX3BzX1BLX3VfbnVfbGF0bicsICdnb29nLmkxOG4uTnVtYmVyRm9ybWF0U3ltYm9sc19wc191X251X2xhdG4nLCAnZ29vZy5pMThuLk51bWJlckZvcm1hdFN5bWJvbHNfcHRfQU8nLCAnZ29vZy5pMThuLk51bWJlckZvcm1hdFN5bWJvbHNfcHRfQ0gnLCAnZ29vZy5pMThuLk51bWJlckZvcm1hdFN5bWJvbHNfcHRfQ1YnLCAnZ29vZy5pMThuLk51bWJlckZvcm1hdFN5bWJvbHNfcHRfR1EnLCAnZ29vZy5pMThuLk51bWJlckZvcm1hdFN5bWJvbHNfcHRfR1cnLCAnZ29vZy5pMThuLk51bWJlckZvcm1hdFN5bWJvbHNfcHRfTFUnLCAnZ29vZy5pMThuLk51bWJlckZvcm1hdFN5bWJvbHNfcHRfTU8nLCAnZ29vZy5pMThuLk51bWJlckZvcm1hdFN5bWJvbHNfcHRfTVonLCAnZ29vZy5pMThuLk51bWJlckZvcm1hdFN5bWJvbHNfcHRfU1QnLCAnZ29vZy5pMThuLk51bWJlckZvcm1hdFN5bWJvbHNfcHRfVEwnLCAnZ29vZy5pMThuLk51bWJlckZvcm1hdFN5bWJvbHNfcXUnLCAnZ29vZy5pMThuLk51bWJlckZvcm1hdFN5bWJvbHNfcXVfQk8nLCAnZ29vZy5pMThuLk51bWJlckZvcm1hdFN5bWJvbHNfcXVfRUMnLCAnZ29vZy5pMThuLk51bWJlckZvcm1hdFN5bWJvbHNfcXVfUEUnLCAnZ29vZy5pMThuLk51bWJlckZvcm1hdFN5bWJvbHNfcm0nLCAnZ29vZy5pMThuLk51bWJlckZvcm1hdFN5bWJvbHNfcm1fQ0gnLCAnZ29vZy5pMThuLk51bWJlckZvcm1hdFN5bWJvbHNfcm4nLCAnZ29vZy5pMThuLk51bWJlckZvcm1hdFN5bWJvbHNfcm5fQkknLCAnZ29vZy5pMThuLk51bWJlckZvcm1hdFN5bWJvbHNfcm9fTUQnLCAnZ29vZy5pMThuLk51bWJlckZvcm1hdFN5bWJvbHNfcm9fUk8nLCAnZ29vZy5pMThuLk51bWJlckZvcm1hdFN5bWJvbHNfcm9mJywgJ2dvb2cuaTE4bi5OdW1iZXJGb3JtYXRTeW1ib2xzX3JvZl9UWicsICdnb29nLmkxOG4uTnVtYmVyRm9ybWF0U3ltYm9sc19ydV9CWScsICdnb29nLmkxOG4uTnVtYmVyRm9ybWF0U3ltYm9sc19ydV9LRycsICdnb29nLmkxOG4uTnVtYmVyRm9ybWF0U3ltYm9sc19ydV9LWicsICdnb29nLmkxOG4uTnVtYmVyRm9ybWF0U3ltYm9sc19ydV9NRCcsICdnb29nLmkxOG4uTnVtYmVyRm9ybWF0U3ltYm9sc19ydV9SVScsICdnb29nLmkxOG4uTnVtYmVyRm9ybWF0U3ltYm9sc19ydV9VQScsICdnb29nLmkxOG4uTnVtYmVyRm9ybWF0U3ltYm9sc19ydycsICdnb29nLmkxOG4uTnVtYmVyRm9ybWF0U3ltYm9sc19yd19SVycsICdnb29nLmkxOG4uTnVtYmVyRm9ybWF0U3ltYm9sc19yd2snLCAnZ29vZy5pMThuLk51bWJlckZvcm1hdFN5bWJvbHNfcndrX1RaJywgJ2dvb2cuaTE4bi5OdW1iZXJGb3JtYXRTeW1ib2xzX3NhaCcsICdnb29nLmkxOG4uTnVtYmVyRm9ybWF0U3ltYm9sc19zYWhfUlUnLCAnZ29vZy5pMThuLk51bWJlckZvcm1hdFN5bWJvbHNfc2FxJywgJ2dvb2cuaTE4bi5OdW1iZXJGb3JtYXRTeW1ib2xzX3NhcV9LRScsICdnb29nLmkxOG4uTnVtYmVyRm9ybWF0U3ltYm9sc19zYnAnLCAnZ29vZy5pMThuLk51bWJlckZvcm1hdFN5bWJvbHNfc2JwX1RaJywgJ2dvb2cuaTE4bi5OdW1iZXJGb3JtYXRTeW1ib2xzX3NkJywgJ2dvb2cuaTE4bi5OdW1iZXJGb3JtYXRTeW1ib2xzX3NkX1BLJywgJ2dvb2cuaTE4bi5OdW1iZXJGb3JtYXRTeW1ib2xzX3NkX1BLX3VfbnVfbGF0bicsICdnb29nLmkxOG4uTnVtYmVyRm9ybWF0U3ltYm9sc19zZF91X251X2xhdG4nLCAnZ29vZy5pMThuLk51bWJlckZvcm1hdFN5bWJvbHNfc2UnLCAnZ29vZy5pMThuLk51bWJlckZvcm1hdFN5bWJvbHNfc2VfRkknLCAnZ29vZy5pMThuLk51bWJlckZvcm1hdFN5bWJvbHNfc2VfTk8nLCAnZ29vZy5pMThuLk51bWJlckZvcm1hdFN5bWJvbHNfc2VfU0UnLCAnZ29vZy5pMThuLk51bWJlckZvcm1hdFN5bWJvbHNfc2VoJywgJ2dvb2cuaTE4bi5OdW1iZXJGb3JtYXRTeW1ib2xzX3NlaF9NWicsICdnb29nLmkxOG4uTnVtYmVyRm9ybWF0U3ltYm9sc19zZXMnLCAnZ29vZy5pMThuLk51bWJlckZvcm1hdFN5bWJvbHNfc2VzX01MJywgJ2dvb2cuaTE4bi5OdW1iZXJGb3JtYXRTeW1ib2xzX3NnJywgJ2dvb2cuaTE4bi5OdW1iZXJGb3JtYXRTeW1ib2xzX3NnX0NGJywgJ2dvb2cuaTE4bi5OdW1iZXJGb3JtYXRTeW1ib2xzX3NoaScsICdnb29nLmkxOG4uTnVtYmVyRm9ybWF0U3ltYm9sc19zaGlfTGF0bicsICdnb29nLmkxOG4uTnVtYmVyRm9ybWF0U3ltYm9sc19zaGlfTGF0bl9NQScsICdnb29nLmkxOG4uTnVtYmVyRm9ybWF0U3ltYm9sc19zaGlfVGZuZycsICdnb29nLmkxOG4uTnVtYmVyRm9ybWF0U3ltYm9sc19zaGlfVGZuZ19NQScsICdnb29nLmkxOG4uTnVtYmVyRm9ybWF0U3ltYm9sc19zaV9MSycsICdnb29nLmkxOG4uTnVtYmVyRm9ybWF0U3ltYm9sc19za19TSycsICdnb29nLmkxOG4uTnVtYmVyRm9ybWF0U3ltYm9sc19zbF9TSScsICdnb29nLmkxOG4uTnVtYmVyRm9ybWF0U3ltYm9sc19zbW4nLCAnZ29vZy5pMThuLk51bWJlckZvcm1hdFN5bWJvbHNfc21uX0ZJJywgJ2dvb2cuaTE4bi5OdW1iZXJGb3JtYXRTeW1ib2xzX3NuJywgJ2dvb2cuaTE4bi5OdW1iZXJGb3JtYXRTeW1ib2xzX3NuX1pXJywgJ2dvb2cuaTE4bi5OdW1iZXJGb3JtYXRTeW1ib2xzX3NvJywgJ2dvb2cuaTE4bi5OdW1iZXJGb3JtYXRTeW1ib2xzX3NvX0RKJywgJ2dvb2cuaTE4bi5OdW1iZXJGb3JtYXRTeW1ib2xzX3NvX0VUJywgJ2dvb2cuaTE4bi5OdW1iZXJGb3JtYXRTeW1ib2xzX3NvX0tFJywgJ2dvb2cuaTE4bi5OdW1iZXJGb3JtYXRTeW1ib2xzX3NvX1NPJywgJ2dvb2cuaTE4bi5OdW1iZXJGb3JtYXRTeW1ib2xzX3NxX0FMJywgJ2dvb2cuaTE4bi5OdW1iZXJGb3JtYXRTeW1ib2xzX3NxX01LJywgJ2dvb2cuaTE4bi5OdW1iZXJGb3JtYXRTeW1ib2xzX3NxX1hLJywgJ2dvb2cuaTE4bi5OdW1iZXJGb3JtYXRTeW1ib2xzX3NyX0N5cmwnLCAnZ29vZy5pMThuLk51bWJlckZvcm1hdFN5bWJvbHNfc3JfQ3lybF9CQScsICdnb29nLmkxOG4uTnVtYmVyRm9ybWF0U3ltYm9sc19zcl9DeXJsX01FJywgJ2dvb2cuaTE4bi5OdW1iZXJGb3JtYXRTeW1ib2xzX3NyX0N5cmxfUlMnLCAnZ29vZy5pMThuLk51bWJlckZvcm1hdFN5bWJvbHNfc3JfQ3lybF9YSycsICdnb29nLmkxOG4uTnVtYmVyRm9ybWF0U3ltYm9sc19zcl9MYXRuX0JBJywgJ2dvb2cuaTE4bi5OdW1iZXJGb3JtYXRTeW1ib2xzX3NyX0xhdG5fTUUnLCAnZ29vZy5pMThuLk51bWJlckZvcm1hdFN5bWJvbHNfc3JfTGF0bl9SUycsICdnb29nLmkxOG4uTnVtYmVyRm9ybWF0U3ltYm9sc19zcl9MYXRuX1hLJywgJ2dvb2cuaTE4bi5OdW1iZXJGb3JtYXRTeW1ib2xzX3N2X0FYJywgJ2dvb2cuaTE4bi5OdW1iZXJGb3JtYXRTeW1ib2xzX3N2X0ZJJywgJ2dvb2cuaTE4bi5OdW1iZXJGb3JtYXRTeW1ib2xzX3N2X1NFJywgJ2dvb2cuaTE4bi5OdW1iZXJGb3JtYXRTeW1ib2xzX3N3X0NEJywgJ2dvb2cuaTE4bi5OdW1iZXJGb3JtYXRTeW1ib2xzX3N3X0tFJywgJ2dvb2cuaTE4bi5OdW1iZXJGb3JtYXRTeW1ib2xzX3N3X1RaJywgJ2dvb2cuaTE4bi5OdW1iZXJGb3JtYXRTeW1ib2xzX3N3X1VHJywgJ2dvb2cuaTE4bi5OdW1iZXJGb3JtYXRTeW1ib2xzX3RhX0lOJywgJ2dvb2cuaTE4bi5OdW1iZXJGb3JtYXRTeW1ib2xzX3RhX0xLJywgJ2dvb2cuaTE4bi5OdW1iZXJGb3JtYXRTeW1ib2xzX3RhX01ZJywgJ2dvb2cuaTE4bi5OdW1iZXJGb3JtYXRTeW1ib2xzX3RhX1NHJywgJ2dvb2cuaTE4bi5OdW1iZXJGb3JtYXRTeW1ib2xzX3RlX0lOJywgJ2dvb2cuaTE4bi5OdW1iZXJGb3JtYXRTeW1ib2xzX3RlbycsICdnb29nLmkxOG4uTnVtYmVyRm9ybWF0U3ltYm9sc190ZW9fS0UnLCAnZ29vZy5pMThuLk51bWJlckZvcm1hdFN5bWJvbHNfdGVvX1VHJywgJ2dvb2cuaTE4bi5OdW1iZXJGb3JtYXRTeW1ib2xzX3RnJywgJ2dvb2cuaTE4bi5OdW1iZXJGb3JtYXRTeW1ib2xzX3RnX1RKJywgJ2dvb2cuaTE4bi5OdW1iZXJGb3JtYXRTeW1ib2xzX3RoX1RIJywgJ2dvb2cuaTE4bi5OdW1iZXJGb3JtYXRTeW1ib2xzX3RpJywgJ2dvb2cuaTE4bi5OdW1iZXJGb3JtYXRTeW1ib2xzX3RpX0VSJywgJ2dvb2cuaTE4bi5OdW1iZXJGb3JtYXRTeW1ib2xzX3RpX0VUJywgJ2dvb2cuaTE4bi5OdW1iZXJGb3JtYXRTeW1ib2xzX3RrJywgJ2dvb2cuaTE4bi5OdW1iZXJGb3JtYXRTeW1ib2xzX3RrX1RNJywgJ2dvb2cuaTE4bi5OdW1iZXJGb3JtYXRTeW1ib2xzX3RvJywgJ2dvb2cuaTE4bi5OdW1iZXJGb3JtYXRTeW1ib2xzX3RvX1RPJywgJ2dvb2cuaTE4bi5OdW1iZXJGb3JtYXRTeW1ib2xzX3RyX0NZJywgJ2dvb2cuaTE4bi5OdW1iZXJGb3JtYXRTeW1ib2xzX3RyX1RSJywgJ2dvb2cuaTE4bi5OdW1iZXJGb3JtYXRTeW1ib2xzX3R0JywgJ2dvb2cuaTE4bi5OdW1iZXJGb3JtYXRTeW1ib2xzX3R0X1JVJywgJ2dvb2cuaTE4bi5OdW1iZXJGb3JtYXRTeW1ib2xzX3R3cScsICdnb29nLmkxOG4uTnVtYmVyRm9ybWF0U3ltYm9sc190d3FfTkUnLCAnZ29vZy5pMThuLk51bWJlckZvcm1hdFN5bWJvbHNfdHptJywgJ2dvb2cuaTE4bi5OdW1iZXJGb3JtYXRTeW1ib2xzX3R6bV9NQScsICdnb29nLmkxOG4uTnVtYmVyRm9ybWF0U3ltYm9sc191ZycsICdnb29nLmkxOG4uTnVtYmVyRm9ybWF0U3ltYm9sc191Z19DTicsICdnb29nLmkxOG4uTnVtYmVyRm9ybWF0U3ltYm9sc191a19VQScsICdnb29nLmkxOG4uTnVtYmVyRm9ybWF0U3ltYm9sc191cl9JTicsICdnb29nLmkxOG4uTnVtYmVyRm9ybWF0U3ltYm9sc191cl9JTl91X251X2xhdG4nLCAnZ29vZy5pMThuLk51bWJlckZvcm1hdFN5bWJvbHNfdXJfUEsnLCAnZ29vZy5pMThuLk51bWJlckZvcm1hdFN5bWJvbHNfdXpfQXJhYicsICdnb29nLmkxOG4uTnVtYmVyRm9ybWF0U3ltYm9sc191el9BcmFiX0FGJywgJ2dvb2cuaTE4bi5OdW1iZXJGb3JtYXRTeW1ib2xzX3V6X0FyYWJfQUZfdV9udV9sYXRuJywgJ2dvb2cuaTE4bi5OdW1iZXJGb3JtYXRTeW1ib2xzX3V6X0FyYWJfdV9udV9sYXRuJywgJ2dvb2cuaTE4bi5OdW1iZXJGb3JtYXRTeW1ib2xzX3V6X0N5cmwnLCAnZ29vZy5pMThuLk51bWJlckZvcm1hdFN5bWJvbHNfdXpfQ3lybF9VWicsICdnb29nLmkxOG4uTnVtYmVyRm9ybWF0U3ltYm9sc191el9MYXRuJywgJ2dvb2cuaTE4bi5OdW1iZXJGb3JtYXRTeW1ib2xzX3V6X0xhdG5fVVonLCAnZ29vZy5pMThuLk51bWJlckZvcm1hdFN5bWJvbHNfdmFpJywgJ2dvb2cuaTE4bi5OdW1iZXJGb3JtYXRTeW1ib2xzX3ZhaV9MYXRuJywgJ2dvb2cuaTE4bi5OdW1iZXJGb3JtYXRTeW1ib2xzX3ZhaV9MYXRuX0xSJywgJ2dvb2cuaTE4bi5OdW1iZXJGb3JtYXRTeW1ib2xzX3ZhaV9WYWlpJywgJ2dvb2cuaTE4bi5OdW1iZXJGb3JtYXRTeW1ib2xzX3ZhaV9WYWlpX0xSJywgJ2dvb2cuaTE4bi5OdW1iZXJGb3JtYXRTeW1ib2xzX3ZpX1ZOJywgJ2dvb2cuaTE4bi5OdW1iZXJGb3JtYXRTeW1ib2xzX3Z1bicsICdnb29nLmkxOG4uTnVtYmVyRm9ybWF0U3ltYm9sc192dW5fVFonLCAnZ29vZy5pMThuLk51bWJlckZvcm1hdFN5bWJvbHNfd2FlJywgJ2dvb2cuaTE4bi5OdW1iZXJGb3JtYXRTeW1ib2xzX3dhZV9DSCcsICdnb29nLmkxOG4uTnVtYmVyRm9ybWF0U3ltYm9sc193bycsICdnb29nLmkxOG4uTnVtYmVyRm9ybWF0U3ltYm9sc193b19TTicsICdnb29nLmkxOG4uTnVtYmVyRm9ybWF0U3ltYm9sc194aCcsICdnb29nLmkxOG4uTnVtYmVyRm9ybWF0U3ltYm9sc194aF9aQScsICdnb29nLmkxOG4uTnVtYmVyRm9ybWF0U3ltYm9sc194b2cnLCAnZ29vZy5pMThuLk51bWJlckZvcm1hdFN5bWJvbHNfeG9nX1VHJywgJ2dvb2cuaTE4bi5OdW1iZXJGb3JtYXRTeW1ib2xzX3lhdicsICdnb29nLmkxOG4uTnVtYmVyRm9ybWF0U3ltYm9sc195YXZfQ00nLCAnZ29vZy5pMThuLk51bWJlckZvcm1hdFN5bWJvbHNfeWknLCAnZ29vZy5pMThuLk51bWJlckZvcm1hdFN5bWJvbHNfeWlfMDAxJywgJ2dvb2cuaTE4bi5OdW1iZXJGb3JtYXRTeW1ib2xzX3lvJywgJ2dvb2cuaTE4bi5OdW1iZXJGb3JtYXRTeW1ib2xzX3lvX0JKJywgJ2dvb2cuaTE4bi5OdW1iZXJGb3JtYXRTeW1ib2xzX3lvX05HJywgJ2dvb2cuaTE4bi5OdW1iZXJGb3JtYXRTeW1ib2xzX3l1ZScsICdnb29nLmkxOG4uTnVtYmVyRm9ybWF0U3ltYm9sc195dWVfSGFucycsICdnb29nLmkxOG4uTnVtYmVyRm9ybWF0U3ltYm9sc195dWVfSGFuc19DTicsICdnb29nLmkxOG4uTnVtYmVyRm9ybWF0U3ltYm9sc195dWVfSGFudCcsICdnb29nLmkxOG4uTnVtYmVyRm9ybWF0U3ltYm9sc195dWVfSGFudF9ISycsICdnb29nLmkxOG4uTnVtYmVyRm9ybWF0U3ltYm9sc196Z2gnLCAnZ29vZy5pMThuLk51bWJlckZvcm1hdFN5bWJvbHNfemdoX01BJywgJ2dvb2cuaTE4bi5OdW1iZXJGb3JtYXRTeW1ib2xzX3poX0hhbnMnLCAnZ29vZy5pMThuLk51bWJlckZvcm1hdFN5bWJvbHNfemhfSGFuc19DTicsICdnb29nLmkxOG4uTnVtYmVyRm9ybWF0U3ltYm9sc196aF9IYW5zX0hLJywgJ2dvb2cuaTE4bi5OdW1iZXJGb3JtYXRTeW1ib2xzX3poX0hhbnNfTU8nLCAnZ29vZy5pMThuLk51bWJlckZvcm1hdFN5bWJvbHNfemhfSGFuc19TRycsICdnb29nLmkxOG4uTnVtYmVyRm9ybWF0U3ltYm9sc196aF9IYW50JywgJ2dvb2cuaTE4bi5OdW1iZXJGb3JtYXRTeW1ib2xzX3poX0hhbnRfSEsnLCAnZ29vZy5pMThuLk51bWJlckZvcm1hdFN5bWJvbHNfemhfSGFudF9NTycsICdnb29nLmkxOG4uTnVtYmVyRm9ybWF0U3ltYm9sc196aF9IYW50X1RXJywgJ2dvb2cuaTE4bi5OdW1iZXJGb3JtYXRTeW1ib2xzX3p1X1pBJ10sIFsnZ29vZy5pMThuLk51bWJlckZvcm1hdFN5bWJvbHMnLCAnZ29vZy5pMThuLk51bWJlckZvcm1hdFN5bWJvbHNfdV9udV9sYXRuJ10sIHt9KTsKZ29vZy5hZGREZXBlbmRlbmN5KCdpMThuL29yZGluYWxydWxlcy5qcycsIFsnZ29vZy5pMThuLm9yZGluYWxSdWxlcyddLCBbXSwgeydsYW5nJzogJ2VzNid9KTsKZ29vZy5hZGREZXBlbmRlbmN5KCdpMThuL3BsdXJhbHJ1bGVzLmpzJywgWydnb29nLmkxOG4ucGx1cmFsUnVsZXMnXSwgW10sIHsnbGFuZyc6ICdlczYnfSk7Cmdvb2cuYWRkRGVwZW5kZW5jeSgnaTE4bi9wbHVyYWxydWxlc190ZXN0LmpzJywgWydnb29nLmkxOG4ucGx1cmFsUnVsZXNUZXN0J10sIFsnZ29vZy5pMThuLnBsdXJhbFJ1bGVzJywgJ2dvb2cudGVzdGluZy50ZXN0U3VpdGUnXSwgeydsYW5nJzogJ2VzNicsICdtb2R1bGUnOiAnZ29vZyd9KTsKZ29vZy5hZGREZXBlbmRlbmN5KCdpMThuL3JlbGF0aXZlZGF0ZXRpbWVmb3JtYXQuanMnLCBbJ2dvb2cuaTE4bi5SZWxhdGl2ZURhdGVUaW1lRm9ybWF0J10sIFsnZ29vZy5hc3NlcnRzJywgJ2dvb2cuaTE4bi5Mb2NhbGVGZWF0dXJlJywgJ2dvb2cuaTE4bi5NZXNzYWdlRm9ybWF0JywgJ2dvb2cuaTE4bi5yZWxhdGl2ZURhdGVUaW1lU3ltYm9scyddLCB7J2xhbmcnOiAnZXM1JywgJ21vZHVsZSc6ICdnb29nJ30pOwpnb29nLmFkZERlcGVuZGVuY3koJ2kxOG4vcmVsYXRpdmVkYXRldGltZWZvcm1hdF90ZXN0LmpzJywgWydnb29nLmkxOG4uUmVsYXRpdmVEYXRlVGltZUZvcm1hdFRlc3QnXSwgWydnb29nLmkxOG4uTG9jYWxlRmVhdHVyZScsICdnb29nLmkxOG4uTnVtYmVyRm9ybWF0U3ltYm9sc19hcl9FRycsICdnb29nLmkxOG4uTnVtYmVyRm9ybWF0U3ltYm9sc19lbicsICdnb29nLmkxOG4uTnVtYmVyRm9ybWF0U3ltYm9sc19lcycsICdnb29nLmkxOG4uTnVtYmVyRm9ybWF0U3ltYm9sc19mYScsICdnb29nLmkxOG4uUmVsYXRpdmVEYXRlVGltZUZvcm1hdCcsICdnb29nLmkxOG4ucmVsYXRpdmVEYXRlVGltZVN5bWJvbHMnLCAnZ29vZy5pMThuLnJlbGF0aXZlRGF0ZVRpbWVTeW1ib2xzRXh0JywgJ2dvb2cudGVzdGluZy50ZXN0U3VpdGUnXSwgeydsYW5nJzogJ2VzNicsICdtb2R1bGUnOiAnZ29vZyd9KTsKZ29vZy5hZGREZXBlbmRlbmN5KCdpMThuL3JlbGF0aXZlZGF0ZXRpbWVzeW1ib2xzLmpzJywgWydnb29nLmkxOG4ucmVsYXRpdmVEYXRlVGltZVN5bWJvbHMnXSwgW10sIHsnbGFuZyc6ICdlczYnLCAnbW9kdWxlJzogJ2dvb2cnfSk7Cmdvb2cuYWRkRGVwZW5kZW5jeSgnaTE4bi9yZWxhdGl2ZWRhdGV0aW1lc3ltYm9sc2V4dC5qcycsIFsnZ29vZy5pMThuLnJlbGF0aXZlRGF0ZVRpbWVTeW1ib2xzRXh0J10sIFsnZ29vZy5pMThuLnJlbGF0aXZlRGF0ZVRpbWVTeW1ib2xzJ10sIHsnbGFuZyc6ICdlczUnLCAnbW9kdWxlJzogJ2dvb2cnfSk7Cmdvb2cuYWRkRGVwZW5kZW5jeSgnaTE4bi90aW1lem9uZS5qcycsIFsnZ29vZy5pMThuLlRpbWVab25lJ10sIFsnZ29vZy5hcnJheScsICdnb29nLmRhdGUuRGF0ZUxpa2UnLCAnZ29vZy5vYmplY3QnLCAnZ29vZy5zdHJpbmcnXSwge30pOwpnb29nLmFkZERlcGVuZGVuY3koJ2kxOG4vdGltZXpvbmVfdGVzdC5qcycsIFsnZ29vZy5pMThuLlRpbWVab25lVGVzdCddLCBbJ2dvb2cuaTE4bi5UaW1lWm9uZScsICdnb29nLnRlc3RpbmcudGVzdFN1aXRlJ10sIHsnbGFuZyc6ICdlczYnLCAnbW9kdWxlJzogJ2dvb2cnfSk7Cmdvb2cuYWRkRGVwZW5kZW5jeSgnaTE4bi91Y2hhci5qcycsIFsnZ29vZy5pMThuLnVDaGFyJ10sIFtdLCB7J2xhbmcnOiAnZXM2J30pOwpnb29nLmFkZERlcGVuZGVuY3koJ2kxOG4vdWNoYXIvbG9jYWxuYW1lZmV0Y2hlci5qcycsIFsnZ29vZy5pMThuLnVDaGFyLkxvY2FsTmFtZUZldGNoZXInXSwgWydnb29nLmkxOG4udUNoYXIuTmFtZUZldGNoZXInLCAnZ29vZy5pMThuLnVDaGFyTmFtZXMnLCAnZ29vZy5sb2cnXSwge30pOwpnb29nLmFkZERlcGVuZGVuY3koJ2kxOG4vdWNoYXIvbG9jYWxuYW1lZmV0Y2hlcl90ZXN0LmpzJywgWydnb29nLmkxOG4udUNoYXIuTG9jYWxOYW1lRmV0Y2hlclRlc3QnXSwgWydnb29nLmkxOG4udUNoYXIuTG9jYWxOYW1lRmV0Y2hlcicsICdnb29nLnRlc3RpbmcucmVjb3JkRnVuY3Rpb24nLCAnZ29vZy50ZXN0aW5nLnRlc3RTdWl0ZSddLCB7J2xhbmcnOiAnZXM2JywgJ21vZHVsZSc6ICdnb29nJ30pOwpnb29nLmFkZERlcGVuZGVuY3koJ2kxOG4vdWNoYXIvbmFtZWZldGNoZXIuanMnLCBbJ2dvb2cuaTE4bi51Q2hhci5OYW1lRmV0Y2hlciddLCBbXSwge30pOwpnb29nLmFkZERlcGVuZGVuY3koJ2kxOG4vdWNoYXIvcmVtb3RlbmFtZWZldGNoZXIuanMnLCBbJ2dvb2cuaTE4bi51Q2hhci5SZW1vdGVOYW1lRmV0Y2hlciddLCBbJ2dvb2cuRGlzcG9zYWJsZScsICdnb29nLlVyaScsICdnb29nLmV2ZW50cycsICdnb29nLmkxOG4udUNoYXInLCAnZ29vZy5pMThuLnVDaGFyLk5hbWVGZXRjaGVyJywgJ2dvb2cubG9nJywgJ2dvb2cubmV0LkV2ZW50VHlwZScsICdnb29nLm5ldC5YaHJJbyddLCB7fSk7Cmdvb2cuYWRkRGVwZW5kZW5jeSgnaTE4bi91Y2hhci9yZW1vdGVuYW1lZmV0Y2hlcl90ZXN0LmpzJywgWydnb29nLmkxOG4udUNoYXIuUmVtb3RlTmFtZUZldGNoZXJUZXN0J10sIFsnZ29vZy5pMThuLnVDaGFyLlJlbW90ZU5hbWVGZXRjaGVyJywgJ2dvb2cubmV0LlhocklvJywgJ2dvb2cudGVzdGluZy5uZXQuWGhySW8nLCAnZ29vZy50ZXN0aW5nLnJlY29yZEZ1bmN0aW9uJywgJ2dvb2cudGVzdGluZy50ZXN0U3VpdGUnXSwgeydsYW5nJzogJ2VzNicsICdtb2R1bGUnOiAnZ29vZyd9KTsKZ29vZy5hZGREZXBlbmRlbmN5KCdpMThuL3VjaGFyX3Rlc3QuanMnLCBbJ2dvb2cuaTE4bi51Q2hhclRlc3QnXSwgWydnb29nLmkxOG4udUNoYXInLCAnZ29vZy50ZXN0aW5nLnRlc3RTdWl0ZSddLCB7J2xhbmcnOiAnZXM2JywgJ21vZHVsZSc6ICdnb29nJ30pOwpnb29nLmFkZERlcGVuZGVuY3koJ2kxOG4vdWNoYXJuYW1lcy5qcycsIFsnZ29vZy5pMThuLnVDaGFyTmFtZXMnXSwgWydnb29nLmkxOG4udUNoYXInXSwge30pOwpnb29nLmFkZERlcGVuZGVuY3koJ2kxOG4vdWNoYXJuYW1lc190ZXN0LmpzJywgWydnb29nLmkxOG4udUNoYXJOYW1lc1Rlc3QnXSwgWydnb29nLmkxOG4udUNoYXJOYW1lcycsICdnb29nLnRlc3RpbmcudGVzdFN1aXRlJ10sIHsnbGFuZyc6ICdlczYnLCAnbW9kdWxlJzogJ2dvb2cnfSk7Cmdvb2cuYWRkRGVwZW5kZW5jeSgnaXRlci9lczYuanMnLCBbJ2dvb2cuaXRlci5lczYnXSwgWydnb29nLml0ZXIuSXRlcmFibGUnLCAnZ29vZy5pdGVyLkl0ZXJhdG9yJywgJ2dvb2cuaXRlci5TdG9wSXRlcmF0aW9uJ10sIHsnbGFuZyc6ICdlczYnLCAnbW9kdWxlJzogJ2dvb2cnfSk7Cmdvb2cuYWRkRGVwZW5kZW5jeSgnaXRlci9lczZfdGVzdC5qcycsIFsnZ29vZy5pdGVyLmVzNlRlc3QnXSwgWydnb29nLml0ZXInLCAnZ29vZy5pdGVyLmVzNicsICdnb29nLnRlc3RpbmcudGVzdFN1aXRlJ10sIHsnbGFuZyc6ICdlczYnLCAnbW9kdWxlJzogJ2dvb2cnfSk7Cmdvb2cuYWRkRGVwZW5kZW5jeSgnaXRlci9pdGVyLmpzJywgWydnb29nLml0ZXInLCAnZ29vZy5pdGVyLkl0ZXJhYmxlJywgJ2dvb2cuaXRlci5JdGVyYXRvcicsICdnb29nLml0ZXIuU3RvcEl0ZXJhdGlvbiddLCBbJ2dvb2cuYXJyYXknLCAnZ29vZy5hc3NlcnRzJywgJ2dvb2cuZnVuY3Rpb25zJywgJ2dvb2cubWF0aCddLCB7fSk7Cmdvb2cuYWRkRGVwZW5kZW5jeSgnaXRlci9pdGVyX3Rlc3QuanMnLCBbJ2dvb2cuaXRlclRlc3QnXSwgWydnb29nLml0ZXInLCAnZ29vZy5pdGVyLkl0ZXJhdG9yJywgJ2dvb2cuaXRlci5TdG9wSXRlcmF0aW9uJywgJ2dvb2cudGVzdGluZy50ZXN0U3VpdGUnXSwgeydsYW5nJzogJ2VzNicsICdtb2R1bGUnOiAnZ29vZyd9KTsKZ29vZy5hZGREZXBlbmRlbmN5KCdqc29uL2h5YnJpZC5qcycsIFsnZ29vZy5qc29uLmh5YnJpZCddLCBbJ2dvb2cuYXNzZXJ0cycsICdnb29nLmpzb24nXSwge30pOwpnb29nLmFkZERlcGVuZGVuY3koJ2pzb24vaHlicmlkX3Rlc3QuanMnLCBbJ2dvb2cuanNvbi5oeWJyaWRUZXN0J10sIFsnZ29vZy5qc29uJywgJ2dvb2cuanNvbi5oeWJyaWQnLCAnZ29vZy50ZXN0aW5nLlByb3BlcnR5UmVwbGFjZXInLCAnZ29vZy50ZXN0aW5nLnJlY29yZEZ1bmN0aW9uJywgJ2dvb2cudGVzdGluZy50ZXN0U3VpdGUnLCAnZ29vZy51c2VyQWdlbnQnXSwgeydsYW5nJzogJ2VzNicsICdtb2R1bGUnOiAnZ29vZyd9KTsKZ29vZy5hZGREZXBlbmRlbmN5KCdqc29uL2pzb24uanMnLCBbJ2dvb2cuanNvbicsICdnb29nLmpzb24uUmVwbGFjZXInLCAnZ29vZy5qc29uLlJldml2ZXInLCAnZ29vZy5qc29uLlNlcmlhbGl6ZXInXSwgW10sIHsnbGFuZyc6ICdlczYnfSk7Cmdvb2cuYWRkRGVwZW5kZW5jeSgnanNvbi9qc29uX3BlcmYuanMnLCBbJ2dvb2cuanNvblBlcmYnXSwgWydnb29nLmRvbScsICdnb29nLmpzb24nLCAnZ29vZy5tYXRoJywgJ2dvb2cuc3RyaW5nJywgJ2dvb2cudGVzdGluZy5QZXJmb3JtYW5jZVRhYmxlJywgJ2dvb2cudGVzdGluZy5Qcm9wZXJ0eVJlcGxhY2VyJywgJ2dvb2cudGVzdGluZy5qc3VuaXQnXSwge30pOwpnb29nLmFkZERlcGVuZGVuY3koJ2pzb24vanNvbl90ZXN0LmpzJywgWydnb29nLmpzb25UZXN0J10sIFsnZ29vZy5mdW5jdGlvbnMnLCAnZ29vZy5qc29uJywgJ2dvb2cudGVzdGluZy50ZXN0U3VpdGUnLCAnZ29vZy51c2VyQWdlbnQnXSwgeydsYW5nJzogJ2VzNicsICdtb2R1bGUnOiAnZ29vZyd9KTsKZ29vZy5hZGREZXBlbmRlbmN5KCdqc29uL2pzb25hYmxlLmpzJywgWydnb29nLmpzb24uSnNvbmFibGUnXSwgW10sIHsnbGFuZyc6ICdlczYnLCAnbW9kdWxlJzogJ2dvb2cnfSk7Cmdvb2cuYWRkRGVwZW5kZW5jeSgnanNvbi9uYXRpdmVqc29ucHJvY2Vzc29yLmpzJywgWydnb29nLmpzb24uTmF0aXZlSnNvblByb2Nlc3NvciddLCBbJ2dvb2cuYXNzZXJ0cycsICdnb29nLmpzb24uUHJvY2Vzc29yJ10sIHt9KTsKZ29vZy5hZGREZXBlbmRlbmN5KCdqc29uL3Byb2Nlc3Nvci5qcycsIFsnZ29vZy5qc29uLlByb2Nlc3NvciddLCBbJ2dvb2cuc3RyaW5nLlBhcnNlcicsICdnb29nLnN0cmluZy5TdHJpbmdpZmllciddLCB7fSk7Cmdvb2cuYWRkRGVwZW5kZW5jeSgnanNvbi9wcm9jZXNzb3JfdGVzdC5qcycsIFsnZ29vZy5qc29uLnByb2Nlc3NvclRlc3QnXSwgWydnb29nLmpzb24uTmF0aXZlSnNvblByb2Nlc3NvcicsICdnb29nLnRlc3RpbmcudGVzdFN1aXRlJywgJ2dvb2cudXNlckFnZW50J10sIHsnbGFuZyc6ICdlczYnLCAnbW9kdWxlJzogJ2dvb2cnfSk7Cmdvb2cuYWRkRGVwZW5kZW5jeSgnbGFicy9jb2xsZWN0aW9ucy9pdGVyYWJsZXMuanMnLCBbJ2dvb2cubGFicy5jb2xsZWN0aW9ucy5pdGVyYWJsZXMnXSwgW10sIHsnbGFuZyc6ICdlczYnLCAnbW9kdWxlJzogJ2dvb2cnfSk7Cmdvb2cuYWRkRGVwZW5kZW5jeSgnbGFicy9jb2xsZWN0aW9ucy9pdGVyYWJsZXNfdGVzdC5qcycsIFsnZ29vZy5sYWJzLml0ZXJhYmxlVGVzdCddLCBbJ2dvb2cubGFicy5jb2xsZWN0aW9ucy5pdGVyYWJsZXMnLCAnZ29vZy50ZXN0aW5nLnJlY29yZEZ1bmN0aW9uJywgJ2dvb2cudGVzdGluZy50ZXN0U3VpdGUnXSwgeydsYW5nJzogJ2VzNicsICdtb2R1bGUnOiAnZ29vZyd9KTsKZ29vZy5hZGREZXBlbmRlbmN5KCdsYWJzL2RvbS9wYWdldmlzaWJpbGl0eW1vbml0b3IuanMnLCBbJ2dvb2cubGFicy5kb20uUGFnZVZpc2liaWxpdHlFdmVudCcsICdnb29nLmxhYnMuZG9tLlBhZ2VWaXNpYmlsaXR5TW9uaXRvcicsICdnb29nLmxhYnMuZG9tLlBhZ2VWaXNpYmlsaXR5U3RhdGUnXSwgWydnb29nLmRvbScsICdnb29nLmRvbS52ZW5kb3InLCAnZ29vZy5ldmVudHMnLCAnZ29vZy5ldmVudHMuRXZlbnQnLCAnZ29vZy5ldmVudHMuRXZlbnRUYXJnZXQnLCAnZ29vZy5ldmVudHMuRXZlbnRUeXBlJywgJ2dvb2cubWVtb2l6ZSddLCB7fSk7Cmdvb2cuYWRkRGVwZW5kZW5jeSgnbGFicy9kb20vcGFnZXZpc2liaWxpdHltb25pdG9yX3Rlc3QuanMnLCBbJ2dvb2cubGFicy5kb20uUGFnZVZpc2liaWxpdHlNb25pdG9yVGVzdCddLCBbJ2dvb2cuZXZlbnRzJywgJ2dvb2cuZnVuY3Rpb25zJywgJ2dvb2cubGFicy5kb20uUGFnZVZpc2liaWxpdHlNb25pdG9yJywgJ2dvb2cudGVzdGluZy5Qcm9wZXJ0eVJlcGxhY2VyJywgJ2dvb2cudGVzdGluZy5ldmVudHMnLCAnZ29vZy50ZXN0aW5nLmV2ZW50cy5FdmVudCcsICdnb29nLnRlc3RpbmcucmVjb3JkRnVuY3Rpb24nLCAnZ29vZy50ZXN0aW5nLnRlc3RTdWl0ZSddLCB7J2xhbmcnOiAnZXM2JywgJ21vZHVsZSc6ICdnb29nJ30pOwpnb29nLmFkZERlcGVuZGVuY3koJ2xhYnMvZXZlbnRzL25vbmRpc3Bvc2FibGVldmVudHRhcmdldC5qcycsIFsnZ29vZy5sYWJzLmV2ZW50cy5Ob25EaXNwb3NhYmxlRXZlbnRUYXJnZXQnXSwgWydnb29nLmFycmF5JywgJ2dvb2cuYXNzZXJ0cycsICdnb29nLmV2ZW50cy5FdmVudCcsICdnb29nLmV2ZW50cy5MaXN0ZW5hYmxlJywgJ2dvb2cuZXZlbnRzLkxpc3RlbmVyTWFwJywgJ2dvb2cub2JqZWN0J10sIHt9KTsKZ29vZy5hZGREZXBlbmRlbmN5KCdsYWJzL2V2ZW50cy9ub25kaXNwb3NhYmxlZXZlbnR0YXJnZXRfdGVzdC5qcycsIFsnZ29vZy5sYWJzLmV2ZW50cy5Ob25EaXNwb3NhYmxlRXZlbnRUYXJnZXRUZXN0J10sIFsnZ29vZy5ldmVudHMuTGlzdGVuYWJsZScsICdnb29nLmV2ZW50cy5ldmVudFRhcmdldFRlc3RlcicsICdnb29nLmxhYnMuZXZlbnRzLk5vbkRpc3Bvc2FibGVFdmVudFRhcmdldCcsICdnb29nLnRlc3RpbmcudGVzdFN1aXRlJ10sIHsnbGFuZyc6ICdlczYnLCAnbW9kdWxlJzogJ2dvb2cnfSk7Cmdvb2cuYWRkRGVwZW5kZW5jeSgnbGFicy9ldmVudHMvbm9uZGlzcG9zYWJsZWV2ZW50dGFyZ2V0X3ZpYV9nb29nZXZlbnRzX3Rlc3QuanMnLCBbJ2dvb2cubGFicy5ldmVudHMuTm9uRGlzcG9zYWJsZUV2ZW50VGFyZ2V0R29vZ0V2ZW50c1Rlc3QnXSwgWydnb29nLmV2ZW50cycsICdnb29nLmV2ZW50cy5ldmVudFRhcmdldFRlc3RlcicsICdnb29nLmxhYnMuZXZlbnRzLk5vbkRpc3Bvc2FibGVFdmVudFRhcmdldCcsICdnb29nLnRlc3RpbmcnLCAnZ29vZy50ZXN0aW5nLnRlc3RTdWl0ZSddLCB7J2xhbmcnOiAnZXM2JywgJ21vZHVsZSc6ICdnb29nJ30pOwpnb29nLmFkZERlcGVuZGVuY3koJ2xhYnMvZXZlbnRzL3RvdWNoLmpzJywgWydnb29nLmxhYnMuZXZlbnRzLnRvdWNoJywgJ2dvb2cubGFicy5ldmVudHMudG91Y2guVG91Y2hEYXRhJ10sIFsnZ29vZy5hcnJheScsICdnb29nLmFzc2VydHMnLCAnZ29vZy5ldmVudHMuRXZlbnRUeXBlJywgJ2dvb2cuc3RyaW5nJ10sIHt9KTsKZ29vZy5hZGREZXBlbmRlbmN5KCdsYWJzL2V2ZW50cy90b3VjaF90ZXN0LmpzJywgWydnb29nLmxhYnMuZXZlbnRzLnRvdWNoVGVzdCddLCBbJ2dvb2cubGFicy5ldmVudHMudG91Y2gnLCAnZ29vZy50ZXN0aW5nLnRlc3RTdWl0ZSddLCB7J2xhbmcnOiAnZXM2JywgJ21vZHVsZSc6ICdnb29nJ30pOwpnb29nLmFkZERlcGVuZGVuY3koJ2xhYnMvZm9ybWF0L2Nzdi5qcycsIFsnZ29vZy5sYWJzLmZvcm1hdC5jc3YnLCAnZ29vZy5sYWJzLmZvcm1hdC5jc3YuUGFyc2VFcnJvcicsICdnb29nLmxhYnMuZm9ybWF0LmNzdi5Ub2tlbiddLCBbJ2dvb2cuYXJyYXknLCAnZ29vZy5hc3NlcnRzJywgJ2dvb2cuZGVidWcuRXJyb3InLCAnZ29vZy5vYmplY3QnLCAnZ29vZy5zdHJpbmcnLCAnZ29vZy5zdHJpbmcubmV3bGluZXMnXSwge30pOwpnb29nLmFkZERlcGVuZGVuY3koJ2xhYnMvZm9ybWF0L2Nzdl90ZXN0LmpzJywgWydnb29nLmxhYnMuZm9ybWF0LmNzdlRlc3QnXSwgWydnb29nLmxhYnMuZm9ybWF0LmNzdicsICdnb29nLmxhYnMuZm9ybWF0LmNzdi5QYXJzZUVycm9yJywgJ2dvb2cub2JqZWN0JywgJ2dvb2cudGVzdGluZy5hc3NlcnRzJywgJ2dvb2cudGVzdGluZy50ZXN0U3VpdGUnXSwgeydsYW5nJzogJ2VzNicsICdtb2R1bGUnOiAnZ29vZyd9KTsKZ29vZy5hZGREZXBlbmRlbmN5KCdsYWJzL2kxOG4vbGlzdGZvcm1hdC5qcycsIFsnZ29vZy5sYWJzLmkxOG4uR2VuZGVySW5mbycsICdnb29nLmxhYnMuaTE4bi5HZW5kZXJJbmZvLkdlbmRlcicsICdnb29nLmxhYnMuaTE4bi5MaXN0Rm9ybWF0J10sIFsnZ29vZy5hc3NlcnRzJywgJ2dvb2cubGFicy5pMThuLkxpc3RGb3JtYXRTeW1ib2xzJ10sIHt9KTsKZ29vZy5hZGREZXBlbmRlbmN5KCdsYWJzL2kxOG4vbGlzdGZvcm1hdF90ZXN0LmpzJywgWydnb29nLmxhYnMuaTE4bi5MaXN0Rm9ybWF0VGVzdCddLCBbJ2dvb2cubGFicy5pMThuLkdlbmRlckluZm8nLCAnZ29vZy5sYWJzLmkxOG4uTGlzdEZvcm1hdCcsICdnb29nLmxhYnMuaTE4bi5MaXN0Rm9ybWF0U3ltYm9scycsICdnb29nLmxhYnMuaTE4bi5MaXN0Rm9ybWF0U3ltYm9sc19lbCcsICdnb29nLmxhYnMuaTE4bi5MaXN0Rm9ybWF0U3ltYm9sc19lbicsICdnb29nLmxhYnMuaTE4bi5MaXN0Rm9ybWF0U3ltYm9sc19mcicsICdnb29nLmxhYnMuaTE4bi5MaXN0Rm9ybWF0U3ltYm9sc19tbCcsICdnb29nLmxhYnMuaTE4bi5MaXN0Rm9ybWF0U3ltYm9sc196dScsICdnb29nLnRlc3RpbmcudGVzdFN1aXRlJ10sIHsnbGFuZyc6ICdlczYnLCAnbW9kdWxlJzogJ2dvb2cnfSk7Cmdvb2cuYWRkRGVwZW5kZW5jeSgnbGFicy9pMThuL2xpc3RzeW1ib2xzLmpzJywgWydnb29nLmxhYnMuaTE4bi5MaXN0Rm9ybWF0U3ltYm9scycsICdnb29nLmxhYnMuaTE4bi5MaXN0Rm9ybWF0U3ltYm9sc19hZicsICdnb29nLmxhYnMuaTE4bi5MaXN0Rm9ybWF0U3ltYm9sc19hbScsICdnb29nLmxhYnMuaTE4bi5MaXN0Rm9ybWF0U3ltYm9sc19hcicsICdnb29nLmxhYnMuaTE4bi5MaXN0Rm9ybWF0U3ltYm9sc19hcl9EWicsICdnb29nLmxhYnMuaTE4bi5MaXN0Rm9ybWF0U3ltYm9sc19hcl9FRycsICdnb29nLmxhYnMuaTE4bi5MaXN0Rm9ybWF0U3ltYm9sc19heicsICdnb29nLmxhYnMuaTE4bi5MaXN0Rm9ybWF0U3ltYm9sc19iZScsICdnb29nLmxhYnMuaTE4bi5MaXN0Rm9ybWF0U3ltYm9sc19iZycsICdnb29nLmxhYnMuaTE4bi5MaXN0Rm9ybWF0U3ltYm9sc19ibicsICdnb29nLmxhYnMuaTE4bi5MaXN0Rm9ybWF0U3ltYm9sc19icicsICdnb29nLmxhYnMuaTE4bi5MaXN0Rm9ybWF0U3ltYm9sc19icycsICdnb29nLmxhYnMuaTE4bi5MaXN0Rm9ybWF0U3ltYm9sc19jYScsICdnb29nLmxhYnMuaTE4bi5MaXN0Rm9ybWF0U3ltYm9sc19jaHInLCAnZ29vZy5sYWJzLmkxOG4uTGlzdEZvcm1hdFN5bWJvbHNfY3MnLCAnZ29vZy5sYWJzLmkxOG4uTGlzdEZvcm1hdFN5bWJvbHNfY3knLCAnZ29vZy5sYWJzLmkxOG4uTGlzdEZvcm1hdFN5bWJvbHNfZGEnLCAnZ29vZy5sYWJzLmkxOG4uTGlzdEZvcm1hdFN5bWJvbHNfZGUnLCAnZ29vZy5sYWJzLmkxOG4uTGlzdEZvcm1hdFN5bWJvbHNfZGVfQVQnLCAnZ29vZy5sYWJzLmkxOG4uTGlzdEZvcm1hdFN5bWJvbHNfZGVfQ0gnLCAnZ29vZy5sYWJzLmkxOG4uTGlzdEZvcm1hdFN5bWJvbHNfZWwnLCAnZ29vZy5sYWJzLmkxOG4uTGlzdEZvcm1hdFN5bWJvbHNfZW4nLCAnZ29vZy5sYWJzLmkxOG4uTGlzdEZvcm1hdFN5bWJvbHNfZW5fQVUnLCAnZ29vZy5sYWJzLmkxOG4uTGlzdEZvcm1hdFN5bWJvbHNfZW5fQ0EnLCAnZ29vZy5sYWJzLmkxOG4uTGlzdEZvcm1hdFN5bWJvbHNfZW5fR0InLCAnZ29vZy5sYWJzLmkxOG4uTGlzdEZvcm1hdFN5bWJvbHNfZW5fSUUnLCAnZ29vZy5sYWJzLmkxOG4uTGlzdEZvcm1hdFN5bWJvbHNfZW5fSU4nLCAnZ29vZy5sYWJzLmkxOG4uTGlzdEZvcm1hdFN5bWJvbHNfZW5fU0cnLCAnZ29vZy5sYWJzLmkxOG4uTGlzdEZvcm1hdFN5bWJvbHNfZW5fVVMnLCAnZ29vZy5sYWJzLmkxOG4uTGlzdEZvcm1hdFN5bWJvbHNfZW5fWkEnLCAnZ29vZy5sYWJzLmkxOG4uTGlzdEZvcm1hdFN5bWJvbHNfZXMnLCAnZ29vZy5sYWJzLmkxOG4uTGlzdEZvcm1hdFN5bWJvbHNfZXNfNDE5JywgJ2dvb2cubGFicy5pMThuLkxpc3RGb3JtYXRTeW1ib2xzX2VzX0VTJywgJ2dvb2cubGFicy5pMThuLkxpc3RGb3JtYXRTeW1ib2xzX2VzX01YJywgJ2dvb2cubGFicy5pMThuLkxpc3RGb3JtYXRTeW1ib2xzX2VzX1VTJywgJ2dvb2cubGFicy5pMThuLkxpc3RGb3JtYXRTeW1ib2xzX2V0JywgJ2dvb2cubGFicy5pMThuLkxpc3RGb3JtYXRTeW1ib2xzX2V1JywgJ2dvb2cubGFicy5pMThuLkxpc3RGb3JtYXRTeW1ib2xzX2ZhJywgJ2dvb2cubGFicy5pMThuLkxpc3RGb3JtYXRTeW1ib2xzX2ZpJywgJ2dvb2cubGFicy5pMThuLkxpc3RGb3JtYXRTeW1ib2xzX2ZpbCcsICdnb29nLmxhYnMuaTE4bi5MaXN0Rm9ybWF0U3ltYm9sc19mcicsICdnb29nLmxhYnMuaTE4bi5MaXN0Rm9ybWF0U3ltYm9sc19mcl9DQScsICdnb29nLmxhYnMuaTE4bi5MaXN0Rm9ybWF0U3ltYm9sc19nYScsICdnb29nLmxhYnMuaTE4bi5MaXN0Rm9ybWF0U3ltYm9sc19nbCcsICdnb29nLmxhYnMuaTE4bi5MaXN0Rm9ybWF0U3ltYm9sc19nc3cnLCAnZ29vZy5sYWJzLmkxOG4uTGlzdEZvcm1hdFN5bWJvbHNfZ3UnLCAnZ29vZy5sYWJzLmkxOG4uTGlzdEZvcm1hdFN5bWJvbHNfaGF3JywgJ2dvb2cubGFicy5pMThuLkxpc3RGb3JtYXRTeW1ib2xzX2hlJywgJ2dvb2cubGFicy5pMThuLkxpc3RGb3JtYXRTeW1ib2xzX2hpJywgJ2dvb2cubGFicy5pMThuLkxpc3RGb3JtYXRTeW1ib2xzX2hyJywgJ2dvb2cubGFicy5pMThuLkxpc3RGb3JtYXRTeW1ib2xzX2h1JywgJ2dvb2cubGFicy5pMThuLkxpc3RGb3JtYXRTeW1ib2xzX2h5JywgJ2dvb2cubGFicy5pMThuLkxpc3RGb3JtYXRTeW1ib2xzX2lkJywgJ2dvb2cubGFicy5pMThuLkxpc3RGb3JtYXRTeW1ib2xzX2luJywgJ2dvb2cubGFicy5pMThuLkxpc3RGb3JtYXRTeW1ib2xzX2lzJywgJ2dvb2cubGFicy5pMThuLkxpc3RGb3JtYXRTeW1ib2xzX2l0JywgJ2dvb2cubGFicy5pMThuLkxpc3RGb3JtYXRTeW1ib2xzX2l3JywgJ2dvb2cubGFicy5pMThuLkxpc3RGb3JtYXRTeW1ib2xzX2phJywgJ2dvb2cubGFicy5pMThuLkxpc3RGb3JtYXRTeW1ib2xzX2thJywgJ2dvb2cubGFicy5pMThuLkxpc3RGb3JtYXRTeW1ib2xzX2trJywgJ2dvb2cubGFicy5pMThuLkxpc3RGb3JtYXRTeW1ib2xzX2ttJywgJ2dvb2cubGFicy5pMThuLkxpc3RGb3JtYXRTeW1ib2xzX2tuJywgJ2dvb2cubGFicy5pMThuLkxpc3RGb3JtYXRTeW1ib2xzX2tvJywgJ2dvb2cubGFicy5pMThuLkxpc3RGb3JtYXRTeW1ib2xzX2t5JywgJ2dvb2cubGFicy5pMThuLkxpc3RGb3JtYXRTeW1ib2xzX2xuJywgJ2dvb2cubGFicy5pMThuLkxpc3RGb3JtYXRTeW1ib2xzX2xvJywgJ2dvb2cubGFicy5pMThuLkxpc3RGb3JtYXRTeW1ib2xzX2x0JywgJ2dvb2cubGFicy5pMThuLkxpc3RGb3JtYXRTeW1ib2xzX2x2JywgJ2dvb2cubGFicy5pMThuLkxpc3RGb3JtYXRTeW1ib2xzX21rJywgJ2dvb2cubGFicy5pMThuLkxpc3RGb3JtYXRTeW1ib2xzX21sJywgJ2dvb2cubGFicy5pMThuLkxpc3RGb3JtYXRTeW1ib2xzX21uJywgJ2dvb2cubGFicy5pMThuLkxpc3RGb3JtYXRTeW1ib2xzX21vJywgJ2dvb2cubGFicy5pMThuLkxpc3RGb3JtYXRTeW1ib2xzX21yJywgJ2dvb2cubGFicy5pMThuLkxpc3RGb3JtYXRTeW1ib2xzX21zJywgJ2dvb2cubGFicy5pMThuLkxpc3RGb3JtYXRTeW1ib2xzX210JywgJ2dvb2cubGFicy5pMThuLkxpc3RGb3JtYXRTeW1ib2xzX215JywgJ2dvb2cubGFicy5pMThuLkxpc3RGb3JtYXRTeW1ib2xzX25iJywgJ2dvb2cubGFicy5pMThuLkxpc3RGb3JtYXRTeW1ib2xzX25lJywgJ2dvb2cubGFicy5pMThuLkxpc3RGb3JtYXRTeW1ib2xzX25sJywgJ2dvb2cubGFicy5pMThuLkxpc3RGb3JtYXRTeW1ib2xzX25vJywgJ2dvb2cubGFicy5pMThuLkxpc3RGb3JtYXRTeW1ib2xzX25vX05PJywgJ2dvb2cubGFicy5pMThuLkxpc3RGb3JtYXRTeW1ib2xzX29yJywgJ2dvb2cubGFicy5pMThuLkxpc3RGb3JtYXRTeW1ib2xzX3BhJywgJ2dvb2cubGFicy5pMThuLkxpc3RGb3JtYXRTeW1ib2xzX3BsJywgJ2dvb2cubGFicy5pMThuLkxpc3RGb3JtYXRTeW1ib2xzX3B0JywgJ2dvb2cubGFicy5pMThuLkxpc3RGb3JtYXRTeW1ib2xzX3B0X0JSJywgJ2dvb2cubGFicy5pMThuLkxpc3RGb3JtYXRTeW1ib2xzX3B0X1BUJywgJ2dvb2cubGFicy5pMThuLkxpc3RGb3JtYXRTeW1ib2xzX3JvJywgJ2dvb2cubGFicy5pMThuLkxpc3RGb3JtYXRTeW1ib2xzX3J1JywgJ2dvb2cubGFicy5pMThuLkxpc3RGb3JtYXRTeW1ib2xzX3NoJywgJ2dvb2cubGFicy5pMThuLkxpc3RGb3JtYXRTeW1ib2xzX3NpJywgJ2dvb2cubGFicy5pMThuLkxpc3RGb3JtYXRTeW1ib2xzX3NrJywgJ2dvb2cubGFicy5pMThuLkxpc3RGb3JtYXRTeW1ib2xzX3NsJywgJ2dvb2cubGFicy5pMThuLkxpc3RGb3JtYXRTeW1ib2xzX3NxJywgJ2dvb2cubGFicy5pMThuLkxpc3RGb3JtYXRTeW1ib2xzX3NyJywgJ2dvb2cubGFicy5pMThuLkxpc3RGb3JtYXRTeW1ib2xzX3NyX0xhdG4nLCAnZ29vZy5sYWJzLmkxOG4uTGlzdEZvcm1hdFN5bWJvbHNfc3YnLCAnZ29vZy5sYWJzLmkxOG4uTGlzdEZvcm1hdFN5bWJvbHNfc3cnLCAnZ29vZy5sYWJzLmkxOG4uTGlzdEZvcm1hdFN5bWJvbHNfdGEnLCAnZ29vZy5sYWJzLmkxOG4uTGlzdEZvcm1hdFN5bWJvbHNfdGUnLCAnZ29vZy5sYWJzLmkxOG4uTGlzdEZvcm1hdFN5bWJvbHNfdGgnLCAnZ29vZy5sYWJzLmkxOG4uTGlzdEZvcm1hdFN5bWJvbHNfdGwnLCAnZ29vZy5sYWJzLmkxOG4uTGlzdEZvcm1hdFN5bWJvbHNfdHInLCAnZ29vZy5sYWJzLmkxOG4uTGlzdEZvcm1hdFN5bWJvbHNfdWsnLCAnZ29vZy5sYWJzLmkxOG4uTGlzdEZvcm1hdFN5bWJvbHNfdXInLCAnZ29vZy5sYWJzLmkxOG4uTGlzdEZvcm1hdFN5bWJvbHNfdXonLCAnZ29vZy5sYWJzLmkxOG4uTGlzdEZvcm1hdFN5bWJvbHNfdmknLCAnZ29vZy5sYWJzLmkxOG4uTGlzdEZvcm1hdFN5bWJvbHNfemgnLCAnZ29vZy5sYWJzLmkxOG4uTGlzdEZvcm1hdFN5bWJvbHNfemhfQ04nLCAnZ29vZy5sYWJzLmkxOG4uTGlzdEZvcm1hdFN5bWJvbHNfemhfSEsnLCAnZ29vZy5sYWJzLmkxOG4uTGlzdEZvcm1hdFN5bWJvbHNfemhfVFcnLCAnZ29vZy5sYWJzLmkxOG4uTGlzdEZvcm1hdFN5bWJvbHNfenUnXSwgW10sIHt9KTsKZ29vZy5hZGREZXBlbmRlbmN5KCdsYWJzL2kxOG4vbGlzdHN5bWJvbHNleHQuanMnLCBbJ2dvb2cubGFicy5pMThuLkxpc3RGb3JtYXRTeW1ib2xzRXh0JywgJ2dvb2cubGFicy5pMThuLkxpc3RGb3JtYXRTeW1ib2xzX2FmX05BJywgJ2dvb2cubGFicy5pMThuLkxpc3RGb3JtYXRTeW1ib2xzX2FmX1pBJywgJ2dvb2cubGFicy5pMThuLkxpc3RGb3JtYXRTeW1ib2xzX2FncScsICdnb29nLmxhYnMuaTE4bi5MaXN0Rm9ybWF0U3ltYm9sc19hZ3FfQ00nLCAnZ29vZy5sYWJzLmkxOG4uTGlzdEZvcm1hdFN5bWJvbHNfYWsnLCAnZ29vZy5sYWJzLmkxOG4uTGlzdEZvcm1hdFN5bWJvbHNfYWtfR0gnLCAnZ29vZy5sYWJzLmkxOG4uTGlzdEZvcm1hdFN5bWJvbHNfYW1fRVQnLCAnZ29vZy5sYWJzLmkxOG4uTGlzdEZvcm1hdFN5bWJvbHNfYXJfMDAxJywgJ2dvb2cubGFicy5pMThuLkxpc3RGb3JtYXRTeW1ib2xzX2FyX0FFJywgJ2dvb2cubGFicy5pMThuLkxpc3RGb3JtYXRTeW1ib2xzX2FyX0JIJywgJ2dvb2cubGFicy5pMThuLkxpc3RGb3JtYXRTeW1ib2xzX2FyX0RKJywgJ2dvb2cubGFicy5pMThuLkxpc3RGb3JtYXRTeW1ib2xzX2FyX0VIJywgJ2dvb2cubGFicy5pMThuLkxpc3RGb3JtYXRTeW1ib2xzX2FyX0VSJywgJ2dvb2cubGFicy5pMThuLkxpc3RGb3JtYXRTeW1ib2xzX2FyX0lMJywgJ2dvb2cubGFicy5pMThuLkxpc3RGb3JtYXRTeW1ib2xzX2FyX0lRJywgJ2dvb2cubGFicy5pMThuLkxpc3RGb3JtYXRTeW1ib2xzX2FyX0pPJywgJ2dvb2cubGFicy5pMThuLkxpc3RGb3JtYXRTeW1ib2xzX2FyX0tNJywgJ2dvb2cubGFicy5pMThuLkxpc3RGb3JtYXRTeW1ib2xzX2FyX0tXJywgJ2dvb2cubGFicy5pMThuLkxpc3RGb3JtYXRTeW1ib2xzX2FyX0xCJywgJ2dvb2cubGFicy5pMThuLkxpc3RGb3JtYXRTeW1ib2xzX2FyX0xZJywgJ2dvb2cubGFicy5pMThuLkxpc3RGb3JtYXRTeW1ib2xzX2FyX01BJywgJ2dvb2cubGFicy5pMThuLkxpc3RGb3JtYXRTeW1ib2xzX2FyX01SJywgJ2dvb2cubGFicy5pMThuLkxpc3RGb3JtYXRTeW1ib2xzX2FyX09NJywgJ2dvb2cubGFicy5pMThuLkxpc3RGb3JtYXRTeW1ib2xzX2FyX1BTJywgJ2dvb2cubGFicy5pMThuLkxpc3RGb3JtYXRTeW1ib2xzX2FyX1FBJywgJ2dvb2cubGFicy5pMThuLkxpc3RGb3JtYXRTeW1ib2xzX2FyX1NBJywgJ2dvb2cubGFicy5pMThuLkxpc3RGb3JtYXRTeW1ib2xzX2FyX1NEJywgJ2dvb2cubGFicy5pMThuLkxpc3RGb3JtYXRTeW1ib2xzX2FyX1NPJywgJ2dvb2cubGFicy5pMThuLkxpc3RGb3JtYXRTeW1ib2xzX2FyX1NTJywgJ2dvb2cubGFicy5pMThuLkxpc3RGb3JtYXRTeW1ib2xzX2FyX1NZJywgJ2dvb2cubGFicy5pMThuLkxpc3RGb3JtYXRTeW1ib2xzX2FyX1REJywgJ2dvb2cubGFicy5pMThuLkxpc3RGb3JtYXRTeW1ib2xzX2FyX1ROJywgJ2dvb2cubGFicy5pMThuLkxpc3RGb3JtYXRTeW1ib2xzX2FyX1hCJywgJ2dvb2cubGFicy5pMThuLkxpc3RGb3JtYXRTeW1ib2xzX2FyX1lFJywgJ2dvb2cubGFicy5pMThuLkxpc3RGb3JtYXRTeW1ib2xzX2FzJywgJ2dvb2cubGFicy5pMThuLkxpc3RGb3JtYXRTeW1ib2xzX2FzX0lOJywgJ2dvb2cubGFicy5pMThuLkxpc3RGb3JtYXRTeW1ib2xzX2FzYScsICdnb29nLmxhYnMuaTE4bi5MaXN0Rm9ybWF0U3ltYm9sc19hc2FfVFonLCAnZ29vZy5sYWJzLmkxOG4uTGlzdEZvcm1hdFN5bWJvbHNfYXN0JywgJ2dvb2cubGFicy5pMThuLkxpc3RGb3JtYXRTeW1ib2xzX2FzdF9FUycsICdnb29nLmxhYnMuaTE4bi5MaXN0Rm9ybWF0U3ltYm9sc19hel9DeXJsJywgJ2dvb2cubGFicy5pMThuLkxpc3RGb3JtYXRTeW1ib2xzX2F6X0N5cmxfQVonLCAnZ29vZy5sYWJzLmkxOG4uTGlzdEZvcm1hdFN5bWJvbHNfYXpfTGF0bicsICdnb29nLmxhYnMuaTE4bi5MaXN0Rm9ybWF0U3ltYm9sc19hel9MYXRuX0FaJywgJ2dvb2cubGFicy5pMThuLkxpc3RGb3JtYXRTeW1ib2xzX2JhcycsICdnb29nLmxhYnMuaTE4bi5MaXN0Rm9ybWF0U3ltYm9sc19iYXNfQ00nLCAnZ29vZy5sYWJzLmkxOG4uTGlzdEZvcm1hdFN5bWJvbHNfYmVfQlknLCAnZ29vZy5sYWJzLmkxOG4uTGlzdEZvcm1hdFN5bWJvbHNfYmVtJywgJ2dvb2cubGFicy5pMThuLkxpc3RGb3JtYXRTeW1ib2xzX2JlbV9aTScsICdnb29nLmxhYnMuaTE4bi5MaXN0Rm9ybWF0U3ltYm9sc19iZXonLCAnZ29vZy5sYWJzLmkxOG4uTGlzdEZvcm1hdFN5bWJvbHNfYmV6X1RaJywgJ2dvb2cubGFicy5pMThuLkxpc3RGb3JtYXRTeW1ib2xzX2JnX0JHJywgJ2dvb2cubGFicy5pMThuLkxpc3RGb3JtYXRTeW1ib2xzX2JtJywgJ2dvb2cubGFicy5pMThuLkxpc3RGb3JtYXRTeW1ib2xzX2JtX01MJywgJ2dvb2cubGFicy5pMThuLkxpc3RGb3JtYXRTeW1ib2xzX2JuX0JEJywgJ2dvb2cubGFicy5pMThuLkxpc3RGb3JtYXRTeW1ib2xzX2JuX0lOJywgJ2dvb2cubGFicy5pMThuLkxpc3RGb3JtYXRTeW1ib2xzX2JvJywgJ2dvb2cubGFicy5pMThuLkxpc3RGb3JtYXRTeW1ib2xzX2JvX0NOJywgJ2dvb2cubGFicy5pMThuLkxpc3RGb3JtYXRTeW1ib2xzX2JvX0lOJywgJ2dvb2cubGFicy5pMThuLkxpc3RGb3JtYXRTeW1ib2xzX2JyX0ZSJywgJ2dvb2cubGFicy5pMThuLkxpc3RGb3JtYXRTeW1ib2xzX2JyeCcsICdnb29nLmxhYnMuaTE4bi5MaXN0Rm9ybWF0U3ltYm9sc19icnhfSU4nLCAnZ29vZy5sYWJzLmkxOG4uTGlzdEZvcm1hdFN5bWJvbHNfYnNfQ3lybCcsICdnb29nLmxhYnMuaTE4bi5MaXN0Rm9ybWF0U3ltYm9sc19ic19DeXJsX0JBJywgJ2dvb2cubGFicy5pMThuLkxpc3RGb3JtYXRTeW1ib2xzX2JzX0xhdG4nLCAnZ29vZy5sYWJzLmkxOG4uTGlzdEZvcm1hdFN5bWJvbHNfYnNfTGF0bl9CQScsICdnb29nLmxhYnMuaTE4bi5MaXN0Rm9ybWF0U3ltYm9sc19jYV9BRCcsICdnb29nLmxhYnMuaTE4bi5MaXN0Rm9ybWF0U3ltYm9sc19jYV9FUycsICdnb29nLmxhYnMuaTE4bi5MaXN0Rm9ybWF0U3ltYm9sc19jYV9GUicsICdnb29nLmxhYnMuaTE4bi5MaXN0Rm9ybWF0U3ltYm9sc19jYV9JVCcsICdnb29nLmxhYnMuaTE4bi5MaXN0Rm9ybWF0U3ltYm9sc19jY3AnLCAnZ29vZy5sYWJzLmkxOG4uTGlzdEZvcm1hdFN5bWJvbHNfY2NwX0JEJywgJ2dvb2cubGFicy5pMThuLkxpc3RGb3JtYXRTeW1ib2xzX2NjcF9JTicsICdnb29nLmxhYnMuaTE4bi5MaXN0Rm9ybWF0U3ltYm9sc19jZScsICdnb29nLmxhYnMuaTE4bi5MaXN0Rm9ybWF0U3ltYm9sc19jZV9SVScsICdnb29nLmxhYnMuaTE4bi5MaXN0Rm9ybWF0U3ltYm9sc19jZWInLCAnZ29vZy5sYWJzLmkxOG4uTGlzdEZvcm1hdFN5bWJvbHNfY2ViX1BIJywgJ2dvb2cubGFicy5pMThuLkxpc3RGb3JtYXRTeW1ib2xzX2NnZycsICdnb29nLmxhYnMuaTE4bi5MaXN0Rm9ybWF0U3ltYm9sc19jZ2dfVUcnLCAnZ29vZy5sYWJzLmkxOG4uTGlzdEZvcm1hdFN5bWJvbHNfY2hyX1VTJywgJ2dvb2cubGFicy5pMThuLkxpc3RGb3JtYXRTeW1ib2xzX2NrYicsICdnb29nLmxhYnMuaTE4bi5MaXN0Rm9ybWF0U3ltYm9sc19ja2JfSVEnLCAnZ29vZy5sYWJzLmkxOG4uTGlzdEZvcm1hdFN5bWJvbHNfY2tiX0lSJywgJ2dvb2cubGFicy5pMThuLkxpc3RGb3JtYXRTeW1ib2xzX2NzX0NaJywgJ2dvb2cubGFicy5pMThuLkxpc3RGb3JtYXRTeW1ib2xzX2N5X0dCJywgJ2dvb2cubGFicy5pMThuLkxpc3RGb3JtYXRTeW1ib2xzX2RhX0RLJywgJ2dvb2cubGFicy5pMThuLkxpc3RGb3JtYXRTeW1ib2xzX2RhX0dMJywgJ2dvb2cubGFicy5pMThuLkxpc3RGb3JtYXRTeW1ib2xzX2RhdicsICdnb29nLmxhYnMuaTE4bi5MaXN0Rm9ybWF0U3ltYm9sc19kYXZfS0UnLCAnZ29vZy5sYWJzLmkxOG4uTGlzdEZvcm1hdFN5bWJvbHNfZGVfQkUnLCAnZ29vZy5sYWJzLmkxOG4uTGlzdEZvcm1hdFN5bWJvbHNfZGVfREUnLCAnZ29vZy5sYWJzLmkxOG4uTGlzdEZvcm1hdFN5bWJvbHNfZGVfSVQnLCAnZ29vZy5sYWJzLmkxOG4uTGlzdEZvcm1hdFN5bWJvbHNfZGVfTEknLCAnZ29vZy5sYWJzLmkxOG4uTGlzdEZvcm1hdFN5bWJvbHNfZGVfTFUnLCAnZ29vZy5sYWJzLmkxOG4uTGlzdEZvcm1hdFN5bWJvbHNfZGplJywgJ2dvb2cubGFicy5pMThuLkxpc3RGb3JtYXRTeW1ib2xzX2RqZV9ORScsICdnb29nLmxhYnMuaTE4bi5MaXN0Rm9ybWF0U3ltYm9sc19kc2InLCAnZ29vZy5sYWJzLmkxOG4uTGlzdEZvcm1hdFN5bWJvbHNfZHNiX0RFJywgJ2dvb2cubGFicy5pMThuLkxpc3RGb3JtYXRTeW1ib2xzX2R1YScsICdnb29nLmxhYnMuaTE4bi5MaXN0Rm9ybWF0U3ltYm9sc19kdWFfQ00nLCAnZ29vZy5sYWJzLmkxOG4uTGlzdEZvcm1hdFN5bWJvbHNfZHlvJywgJ2dvb2cubGFicy5pMThuLkxpc3RGb3JtYXRTeW1ib2xzX2R5b19TTicsICdnb29nLmxhYnMuaTE4bi5MaXN0Rm9ybWF0U3ltYm9sc19keicsICdnb29nLmxhYnMuaTE4bi5MaXN0Rm9ybWF0U3ltYm9sc19kel9CVCcsICdnb29nLmxhYnMuaTE4bi5MaXN0Rm9ybWF0U3ltYm9sc19lYnUnLCAnZ29vZy5sYWJzLmkxOG4uTGlzdEZvcm1hdFN5bWJvbHNfZWJ1X0tFJywgJ2dvb2cubGFicy5pMThuLkxpc3RGb3JtYXRTeW1ib2xzX2VlJywgJ2dvb2cubGFicy5pMThuLkxpc3RGb3JtYXRTeW1ib2xzX2VlX0dIJywgJ2dvb2cubGFicy5pMThuLkxpc3RGb3JtYXRTeW1ib2xzX2VlX1RHJywgJ2dvb2cubGFicy5pMThuLkxpc3RGb3JtYXRTeW1ib2xzX2VsX0NZJywgJ2dvb2cubGFicy5pMThuLkxpc3RGb3JtYXRTeW1ib2xzX2VsX0dSJywgJ2dvb2cubGFicy5pMThuLkxpc3RGb3JtYXRTeW1ib2xzX2VuXzAwMScsICdnb29nLmxhYnMuaTE4bi5MaXN0Rm9ybWF0U3ltYm9sc19lbl8xNTAnLCAnZ29vZy5sYWJzLmkxOG4uTGlzdEZvcm1hdFN5bWJvbHNfZW5fQUUnLCAnZ29vZy5sYWJzLmkxOG4uTGlzdEZvcm1hdFN5bWJvbHNfZW5fQUcnLCAnZ29vZy5sYWJzLmkxOG4uTGlzdEZvcm1hdFN5bWJvbHNfZW5fQUknLCAnZ29vZy5sYWJzLmkxOG4uTGlzdEZvcm1hdFN5bWJvbHNfZW5fQVMnLCAnZ29vZy5sYWJzLmkxOG4uTGlzdEZvcm1hdFN5bWJvbHNfZW5fQVQnLCAnZ29vZy5sYWJzLmkxOG4uTGlzdEZvcm1hdFN5bWJvbHNfZW5fQkInLCAnZ29vZy5sYWJzLmkxOG4uTGlzdEZvcm1hdFN5bWJvbHNfZW5fQkUnLCAnZ29vZy5sYWJzLmkxOG4uTGlzdEZvcm1hdFN5bWJvbHNfZW5fQkknLCAnZ29vZy5sYWJzLmkxOG4uTGlzdEZvcm1hdFN5bWJvbHNfZW5fQk0nLCAnZ29vZy5sYWJzLmkxOG4uTGlzdEZvcm1hdFN5bWJvbHNfZW5fQlMnLCAnZ29vZy5sYWJzLmkxOG4uTGlzdEZvcm1hdFN5bWJvbHNfZW5fQlcnLCAnZ29vZy5sYWJzLmkxOG4uTGlzdEZvcm1hdFN5bWJvbHNfZW5fQlonLCAnZ29vZy5sYWJzLmkxOG4uTGlzdEZvcm1hdFN5bWJvbHNfZW5fQ0MnLCAnZ29vZy5sYWJzLmkxOG4uTGlzdEZvcm1hdFN5bWJvbHNfZW5fQ0gnLCAnZ29vZy5sYWJzLmkxOG4uTGlzdEZvcm1hdFN5bWJvbHNfZW5fQ0snLCAnZ29vZy5sYWJzLmkxOG4uTGlzdEZvcm1hdFN5bWJvbHNfZW5fQ00nLCAnZ29vZy5sYWJzLmkxOG4uTGlzdEZvcm1hdFN5bWJvbHNfZW5fQ1gnLCAnZ29vZy5sYWJzLmkxOG4uTGlzdEZvcm1hdFN5bWJvbHNfZW5fQ1knLCAnZ29vZy5sYWJzLmkxOG4uTGlzdEZvcm1hdFN5bWJvbHNfZW5fREUnLCAnZ29vZy5sYWJzLmkxOG4uTGlzdEZvcm1hdFN5bWJvbHNfZW5fREcnLCAnZ29vZy5sYWJzLmkxOG4uTGlzdEZvcm1hdFN5bWJvbHNfZW5fREsnLCAnZ29vZy5sYWJzLmkxOG4uTGlzdEZvcm1hdFN5bWJvbHNfZW5fRE0nLCAnZ29vZy5sYWJzLmkxOG4uTGlzdEZvcm1hdFN5bWJvbHNfZW5fRVInLCAnZ29vZy5sYWJzLmkxOG4uTGlzdEZvcm1hdFN5bWJvbHNfZW5fRkknLCAnZ29vZy5sYWJzLmkxOG4uTGlzdEZvcm1hdFN5bWJvbHNfZW5fRkonLCAnZ29vZy5sYWJzLmkxOG4uTGlzdEZvcm1hdFN5bWJvbHNfZW5fRksnLCAnZ29vZy5sYWJzLmkxOG4uTGlzdEZvcm1hdFN5bWJvbHNfZW5fRk0nLCAnZ29vZy5sYWJzLmkxOG4uTGlzdEZvcm1hdFN5bWJvbHNfZW5fR0QnLCAnZ29vZy5sYWJzLmkxOG4uTGlzdEZvcm1hdFN5bWJvbHNfZW5fR0cnLCAnZ29vZy5sYWJzLmkxOG4uTGlzdEZvcm1hdFN5bWJvbHNfZW5fR0gnLCAnZ29vZy5sYWJzLmkxOG4uTGlzdEZvcm1hdFN5bWJvbHNfZW5fR0knLCAnZ29vZy5sYWJzLmkxOG4uTGlzdEZvcm1hdFN5bWJvbHNfZW5fR00nLCAnZ29vZy5sYWJzLmkxOG4uTGlzdEZvcm1hdFN5bWJvbHNfZW5fR1UnLCAnZ29vZy5sYWJzLmkxOG4uTGlzdEZvcm1hdFN5bWJvbHNfZW5fR1knLCAnZ29vZy5sYWJzLmkxOG4uTGlzdEZvcm1hdFN5bWJvbHNfZW5fSEsnLCAnZ29vZy5sYWJzLmkxOG4uTGlzdEZvcm1hdFN5bWJvbHNfZW5fSUwnLCAnZ29vZy5sYWJzLmkxOG4uTGlzdEZvcm1hdFN5bWJvbHNfZW5fSU0nLCAnZ29vZy5sYWJzLmkxOG4uTGlzdEZvcm1hdFN5bWJvbHNfZW5fSU8nLCAnZ29vZy5sYWJzLmkxOG4uTGlzdEZvcm1hdFN5bWJvbHNfZW5fSkUnLCAnZ29vZy5sYWJzLmkxOG4uTGlzdEZvcm1hdFN5bWJvbHNfZW5fSk0nLCAnZ29vZy5sYWJzLmkxOG4uTGlzdEZvcm1hdFN5bWJvbHNfZW5fS0UnLCAnZ29vZy5sYWJzLmkxOG4uTGlzdEZvcm1hdFN5bWJvbHNfZW5fS0knLCAnZ29vZy5sYWJzLmkxOG4uTGlzdEZvcm1hdFN5bWJvbHNfZW5fS04nLCAnZ29vZy5sYWJzLmkxOG4uTGlzdEZvcm1hdFN5bWJvbHNfZW5fS1knLCAnZ29vZy5sYWJzLmkxOG4uTGlzdEZvcm1hdFN5bWJvbHNfZW5fTEMnLCAnZ29vZy5sYWJzLmkxOG4uTGlzdEZvcm1hdFN5bWJvbHNfZW5fTFInLCAnZ29vZy5sYWJzLmkxOG4uTGlzdEZvcm1hdFN5bWJvbHNfZW5fTFMnLCAnZ29vZy5sYWJzLmkxOG4uTGlzdEZvcm1hdFN5bWJvbHNfZW5fTUcnLCAnZ29vZy5sYWJzLmkxOG4uTGlzdEZvcm1hdFN5bWJvbHNfZW5fTUgnLCAnZ29vZy5sYWJzLmkxOG4uTGlzdEZvcm1hdFN5bWJvbHNfZW5fTU8nLCAnZ29vZy5sYWJzLmkxOG4uTGlzdEZvcm1hdFN5bWJvbHNfZW5fTVAnLCAnZ29vZy5sYWJzLmkxOG4uTGlzdEZvcm1hdFN5bWJvbHNfZW5fTVMnLCAnZ29vZy5sYWJzLmkxOG4uTGlzdEZvcm1hdFN5bWJvbHNfZW5fTVQnLCAnZ29vZy5sYWJzLmkxOG4uTGlzdEZvcm1hdFN5bWJvbHNfZW5fTVUnLCAnZ29vZy5sYWJzLmkxOG4uTGlzdEZvcm1hdFN5bWJvbHNfZW5fTVcnLCAnZ29vZy5sYWJzLmkxOG4uTGlzdEZvcm1hdFN5bWJvbHNfZW5fTVknLCAnZ29vZy5sYWJzLmkxOG4uTGlzdEZvcm1hdFN5bWJvbHNfZW5fTkEnLCAnZ29vZy5sYWJzLmkxOG4uTGlzdEZvcm1hdFN5bWJvbHNfZW5fTkYnLCAnZ29vZy5sYWJzLmkxOG4uTGlzdEZvcm1hdFN5bWJvbHNfZW5fTkcnLCAnZ29vZy5sYWJzLmkxOG4uTGlzdEZvcm1hdFN5bWJvbHNfZW5fTkwnLCAnZ29vZy5sYWJzLmkxOG4uTGlzdEZvcm1hdFN5bWJvbHNfZW5fTlInLCAnZ29vZy5sYWJzLmkxOG4uTGlzdEZvcm1hdFN5bWJvbHNfZW5fTlUnLCAnZ29vZy5sYWJzLmkxOG4uTGlzdEZvcm1hdFN5bWJvbHNfZW5fTlonLCAnZ29vZy5sYWJzLmkxOG4uTGlzdEZvcm1hdFN5bWJvbHNfZW5fUEcnLCAnZ29vZy5sYWJzLmkxOG4uTGlzdEZvcm1hdFN5bWJvbHNfZW5fUEgnLCAnZ29vZy5sYWJzLmkxOG4uTGlzdEZvcm1hdFN5bWJvbHNfZW5fUEsnLCAnZ29vZy5sYWJzLmkxOG4uTGlzdEZvcm1hdFN5bWJvbHNfZW5fUE4nLCAnZ29vZy5sYWJzLmkxOG4uTGlzdEZvcm1hdFN5bWJvbHNfZW5fUFInLCAnZ29vZy5sYWJzLmkxOG4uTGlzdEZvcm1hdFN5bWJvbHNfZW5fUFcnLCAnZ29vZy5sYWJzLmkxOG4uTGlzdEZvcm1hdFN5bWJvbHNfZW5fUlcnLCAnZ29vZy5sYWJzLmkxOG4uTGlzdEZvcm1hdFN5bWJvbHNfZW5fU0InLCAnZ29vZy5sYWJzLmkxOG4uTGlzdEZvcm1hdFN5bWJvbHNfZW5fU0MnLCAnZ29vZy5sYWJzLmkxOG4uTGlzdEZvcm1hdFN5bWJvbHNfZW5fU0QnLCAnZ29vZy5sYWJzLmkxOG4uTGlzdEZvcm1hdFN5bWJvbHNfZW5fU0UnLCAnZ29vZy5sYWJzLmkxOG4uTGlzdEZvcm1hdFN5bWJvbHNfZW5fU0gnLCAnZ29vZy5sYWJzLmkxOG4uTGlzdEZvcm1hdFN5bWJvbHNfZW5fU0knLCAnZ29vZy5sYWJzLmkxOG4uTGlzdEZvcm1hdFN5bWJvbHNfZW5fU0wnLCAnZ29vZy5sYWJzLmkxOG4uTGlzdEZvcm1hdFN5bWJvbHNfZW5fU1MnLCAnZ29vZy5sYWJzLmkxOG4uTGlzdEZvcm1hdFN5bWJvbHNfZW5fU1gnLCAnZ29vZy5sYWJzLmkxOG4uTGlzdEZvcm1hdFN5bWJvbHNfZW5fU1onLCAnZ29vZy5sYWJzLmkxOG4uTGlzdEZvcm1hdFN5bWJvbHNfZW5fVEMnLCAnZ29vZy5sYWJzLmkxOG4uTGlzdEZvcm1hdFN5bWJvbHNfZW5fVEsnLCAnZ29vZy5sYWJzLmkxOG4uTGlzdEZvcm1hdFN5bWJvbHNfZW5fVE8nLCAnZ29vZy5sYWJzLmkxOG4uTGlzdEZvcm1hdFN5bWJvbHNfZW5fVFQnLCAnZ29vZy5sYWJzLmkxOG4uTGlzdEZvcm1hdFN5bWJvbHNfZW5fVFYnLCAnZ29vZy5sYWJzLmkxOG4uTGlzdEZvcm1hdFN5bWJvbHNfZW5fVFonLCAnZ29vZy5sYWJzLmkxOG4uTGlzdEZvcm1hdFN5bWJvbHNfZW5fVUcnLCAnZ29vZy5sYWJzLmkxOG4uTGlzdEZvcm1hdFN5bWJvbHNfZW5fVU0nLCAnZ29vZy5sYWJzLmkxOG4uTGlzdEZvcm1hdFN5bWJvbHNfZW5fVVNfUE9TSVgnLCAnZ29vZy5sYWJzLmkxOG4uTGlzdEZvcm1hdFN5bWJvbHNfZW5fVkMnLCAnZ29vZy5sYWJzLmkxOG4uTGlzdEZvcm1hdFN5bWJvbHNfZW5fVkcnLCAnZ29vZy5sYWJzLmkxOG4uTGlzdEZvcm1hdFN5bWJvbHNfZW5fVkknLCAnZ29vZy5sYWJzLmkxOG4uTGlzdEZvcm1hdFN5bWJvbHNfZW5fVlUnLCAnZ29vZy5sYWJzLmkxOG4uTGlzdEZvcm1hdFN5bWJvbHNfZW5fV1MnLCAnZ29vZy5sYWJzLmkxOG4uTGlzdEZvcm1hdFN5bWJvbHNfZW5fWEEnLCAnZ29vZy5sYWJzLmkxOG4uTGlzdEZvcm1hdFN5bWJvbHNfZW5fWk0nLCAnZ29vZy5sYWJzLmkxOG4uTGlzdEZvcm1hdFN5bWJvbHNfZW5fWlcnLCAnZ29vZy5sYWJzLmkxOG4uTGlzdEZvcm1hdFN5bWJvbHNfZW8nLCAnZ29vZy5sYWJzLmkxOG4uTGlzdEZvcm1hdFN5bWJvbHNfZW9fMDAxJywgJ2dvb2cubGFicy5pMThuLkxpc3RGb3JtYXRTeW1ib2xzX2VzX0FSJywgJ2dvb2cubGFicy5pMThuLkxpc3RGb3JtYXRTeW1ib2xzX2VzX0JPJywgJ2dvb2cubGFicy5pMThuLkxpc3RGb3JtYXRTeW1ib2xzX2VzX0JSJywgJ2dvb2cubGFicy5pMThuLkxpc3RGb3JtYXRTeW1ib2xzX2VzX0JaJywgJ2dvb2cubGFicy5pMThuLkxpc3RGb3JtYXRTeW1ib2xzX2VzX0NMJywgJ2dvb2cubGFicy5pMThuLkxpc3RGb3JtYXRTeW1ib2xzX2VzX0NPJywgJ2dvb2cubGFicy5pMThuLkxpc3RGb3JtYXRTeW1ib2xzX2VzX0NSJywgJ2dvb2cubGFicy5pMThuLkxpc3RGb3JtYXRTeW1ib2xzX2VzX0NVJywgJ2dvb2cubGFicy5pMThuLkxpc3RGb3JtYXRTeW1ib2xzX2VzX0RPJywgJ2dvb2cubGFicy5pMThuLkxpc3RGb3JtYXRTeW1ib2xzX2VzX0VBJywgJ2dvb2cubGFicy5pMThuLkxpc3RGb3JtYXRTeW1ib2xzX2VzX0VDJywgJ2dvb2cubGFicy5pMThuLkxpc3RGb3JtYXRTeW1ib2xzX2VzX0dRJywgJ2dvb2cubGFicy5pMThuLkxpc3RGb3JtYXRTeW1ib2xzX2VzX0dUJywgJ2dvb2cubGFicy5pMThuLkxpc3RGb3JtYXRTeW1ib2xzX2VzX0hOJywgJ2dvb2cubGFicy5pMThuLkxpc3RGb3JtYXRTeW1ib2xzX2VzX0lDJywgJ2dvb2cubGFicy5pMThuLkxpc3RGb3JtYXRTeW1ib2xzX2VzX05JJywgJ2dvb2cubGFicy5pMThuLkxpc3RGb3JtYXRTeW1ib2xzX2VzX1BBJywgJ2dvb2cubGFicy5pMThuLkxpc3RGb3JtYXRTeW1ib2xzX2VzX1BFJywgJ2dvb2cubGFicy5pMThuLkxpc3RGb3JtYXRTeW1ib2xzX2VzX1BIJywgJ2dvb2cubGFicy5pMThuLkxpc3RGb3JtYXRTeW1ib2xzX2VzX1BSJywgJ2dvb2cubGFicy5pMThuLkxpc3RGb3JtYXRTeW1ib2xzX2VzX1BZJywgJ2dvb2cubGFicy5pMThuLkxpc3RGb3JtYXRTeW1ib2xzX2VzX1NWJywgJ2dvb2cubGFicy5pMThuLkxpc3RGb3JtYXRTeW1ib2xzX2VzX1VZJywgJ2dvb2cubGFicy5pMThuLkxpc3RGb3JtYXRTeW1ib2xzX2VzX1ZFJywgJ2dvb2cubGFicy5pMThuLkxpc3RGb3JtYXRTeW1ib2xzX2V0X0VFJywgJ2dvb2cubGFicy5pMThuLkxpc3RGb3JtYXRTeW1ib2xzX2V1X0VTJywgJ2dvb2cubGFicy5pMThuLkxpc3RGb3JtYXRTeW1ib2xzX2V3bycsICdnb29nLmxhYnMuaTE4bi5MaXN0Rm9ybWF0U3ltYm9sc19ld29fQ00nLCAnZ29vZy5sYWJzLmkxOG4uTGlzdEZvcm1hdFN5bWJvbHNfZmFfQUYnLCAnZ29vZy5sYWJzLmkxOG4uTGlzdEZvcm1hdFN5bWJvbHNfZmFfSVInLCAnZ29vZy5sYWJzLmkxOG4uTGlzdEZvcm1hdFN5bWJvbHNfZmYnLCAnZ29vZy5sYWJzLmkxOG4uTGlzdEZvcm1hdFN5bWJvbHNfZmZfTGF0bicsICdnb29nLmxhYnMuaTE4bi5MaXN0Rm9ybWF0U3ltYm9sc19mZl9MYXRuX0JGJywgJ2dvb2cubGFicy5pMThuLkxpc3RGb3JtYXRTeW1ib2xzX2ZmX0xhdG5fQ00nLCAnZ29vZy5sYWJzLmkxOG4uTGlzdEZvcm1hdFN5bWJvbHNfZmZfTGF0bl9HSCcsICdnb29nLmxhYnMuaTE4bi5MaXN0Rm9ybWF0U3ltYm9sc19mZl9MYXRuX0dNJywgJ2dvb2cubGFicy5pMThuLkxpc3RGb3JtYXRTeW1ib2xzX2ZmX0xhdG5fR04nLCAnZ29vZy5sYWJzLmkxOG4uTGlzdEZvcm1hdFN5bWJvbHNfZmZfTGF0bl9HVycsICdnb29nLmxhYnMuaTE4bi5MaXN0Rm9ybWF0U3ltYm9sc19mZl9MYXRuX0xSJywgJ2dvb2cubGFicy5pMThuLkxpc3RGb3JtYXRTeW1ib2xzX2ZmX0xhdG5fTVInLCAnZ29vZy5sYWJzLmkxOG4uTGlzdEZvcm1hdFN5bWJvbHNfZmZfTGF0bl9ORScsICdnb29nLmxhYnMuaTE4bi5MaXN0Rm9ybWF0U3ltYm9sc19mZl9MYXRuX05HJywgJ2dvb2cubGFicy5pMThuLkxpc3RGb3JtYXRTeW1ib2xzX2ZmX0xhdG5fU0wnLCAnZ29vZy5sYWJzLmkxOG4uTGlzdEZvcm1hdFN5bWJvbHNfZmZfTGF0bl9TTicsICdnb29nLmxhYnMuaTE4bi5MaXN0Rm9ybWF0U3ltYm9sc19maV9GSScsICdnb29nLmxhYnMuaTE4bi5MaXN0Rm9ybWF0U3ltYm9sc19maWxfUEgnLCAnZ29vZy5sYWJzLmkxOG4uTGlzdEZvcm1hdFN5bWJvbHNfZm8nLCAnZ29vZy5sYWJzLmkxOG4uTGlzdEZvcm1hdFN5bWJvbHNfZm9fREsnLCAnZ29vZy5sYWJzLmkxOG4uTGlzdEZvcm1hdFN5bWJvbHNfZm9fRk8nLCAnZ29vZy5sYWJzLmkxOG4uTGlzdEZvcm1hdFN5bWJvbHNfZnJfQkUnLCAnZ29vZy5sYWJzLmkxOG4uTGlzdEZvcm1hdFN5bWJvbHNfZnJfQkYnLCAnZ29vZy5sYWJzLmkxOG4uTGlzdEZvcm1hdFN5bWJvbHNfZnJfQkknLCAnZ29vZy5sYWJzLmkxOG4uTGlzdEZvcm1hdFN5bWJvbHNfZnJfQkonLCAnZ29vZy5sYWJzLmkxOG4uTGlzdEZvcm1hdFN5bWJvbHNfZnJfQkwnLCAnZ29vZy5sYWJzLmkxOG4uTGlzdEZvcm1hdFN5bWJvbHNfZnJfQ0QnLCAnZ29vZy5sYWJzLmkxOG4uTGlzdEZvcm1hdFN5bWJvbHNfZnJfQ0YnLCAnZ29vZy5sYWJzLmkxOG4uTGlzdEZvcm1hdFN5bWJvbHNfZnJfQ0cnLCAnZ29vZy5sYWJzLmkxOG4uTGlzdEZvcm1hdFN5bWJvbHNfZnJfQ0gnLCAnZ29vZy5sYWJzLmkxOG4uTGlzdEZvcm1hdFN5bWJvbHNfZnJfQ0knLCAnZ29vZy5sYWJzLmkxOG4uTGlzdEZvcm1hdFN5bWJvbHNfZnJfQ00nLCAnZ29vZy5sYWJzLmkxOG4uTGlzdEZvcm1hdFN5bWJvbHNfZnJfREonLCAnZ29vZy5sYWJzLmkxOG4uTGlzdEZvcm1hdFN5bWJvbHNfZnJfRFonLCAnZ29vZy5sYWJzLmkxOG4uTGlzdEZvcm1hdFN5bWJvbHNfZnJfRlInLCAnZ29vZy5sYWJzLmkxOG4uTGlzdEZvcm1hdFN5bWJvbHNfZnJfR0EnLCAnZ29vZy5sYWJzLmkxOG4uTGlzdEZvcm1hdFN5bWJvbHNfZnJfR0YnLCAnZ29vZy5sYWJzLmkxOG4uTGlzdEZvcm1hdFN5bWJvbHNfZnJfR04nLCAnZ29vZy5sYWJzLmkxOG4uTGlzdEZvcm1hdFN5bWJvbHNfZnJfR1AnLCAnZ29vZy5sYWJzLmkxOG4uTGlzdEZvcm1hdFN5bWJvbHNfZnJfR1EnLCAnZ29vZy5sYWJzLmkxOG4uTGlzdEZvcm1hdFN5bWJvbHNfZnJfSFQnLCAnZ29vZy5sYWJzLmkxOG4uTGlzdEZvcm1hdFN5bWJvbHNfZnJfS00nLCAnZ29vZy5sYWJzLmkxOG4uTGlzdEZvcm1hdFN5bWJvbHNfZnJfTFUnLCAnZ29vZy5sYWJzLmkxOG4uTGlzdEZvcm1hdFN5bWJvbHNfZnJfTUEnLCAnZ29vZy5sYWJzLmkxOG4uTGlzdEZvcm1hdFN5bWJvbHNfZnJfTUMnLCAnZ29vZy5sYWJzLmkxOG4uTGlzdEZvcm1hdFN5bWJvbHNfZnJfTUYnLCAnZ29vZy5sYWJzLmkxOG4uTGlzdEZvcm1hdFN5bWJvbHNfZnJfTUcnLCAnZ29vZy5sYWJzLmkxOG4uTGlzdEZvcm1hdFN5bWJvbHNfZnJfTUwnLCAnZ29vZy5sYWJzLmkxOG4uTGlzdEZvcm1hdFN5bWJvbHNfZnJfTVEnLCAnZ29vZy5sYWJzLmkxOG4uTGlzdEZvcm1hdFN5bWJvbHNfZnJfTVInLCAnZ29vZy5sYWJzLmkxOG4uTGlzdEZvcm1hdFN5bWJvbHNfZnJfTVUnLCAnZ29vZy5sYWJzLmkxOG4uTGlzdEZvcm1hdFN5bWJvbHNfZnJfTkMnLCAnZ29vZy5sYWJzLmkxOG4uTGlzdEZvcm1hdFN5bWJvbHNfZnJfTkUnLCAnZ29vZy5sYWJzLmkxOG4uTGlzdEZvcm1hdFN5bWJvbHNfZnJfUEYnLCAnZ29vZy5sYWJzLmkxOG4uTGlzdEZvcm1hdFN5bWJvbHNfZnJfUE0nLCAnZ29vZy5sYWJzLmkxOG4uTGlzdEZvcm1hdFN5bWJvbHNfZnJfUkUnLCAnZ29vZy5sYWJzLmkxOG4uTGlzdEZvcm1hdFN5bWJvbHNfZnJfUlcnLCAnZ29vZy5sYWJzLmkxOG4uTGlzdEZvcm1hdFN5bWJvbHNfZnJfU0MnLCAnZ29vZy5sYWJzLmkxOG4uTGlzdEZvcm1hdFN5bWJvbHNfZnJfU04nLCAnZ29vZy5sYWJzLmkxOG4uTGlzdEZvcm1hdFN5bWJvbHNfZnJfU1knLCAnZ29vZy5sYWJzLmkxOG4uTGlzdEZvcm1hdFN5bWJvbHNfZnJfVEQnLCAnZ29vZy5sYWJzLmkxOG4uTGlzdEZvcm1hdFN5bWJvbHNfZnJfVEcnLCAnZ29vZy5sYWJzLmkxOG4uTGlzdEZvcm1hdFN5bWJvbHNfZnJfVE4nLCAnZ29vZy5sYWJzLmkxOG4uTGlzdEZvcm1hdFN5bWJvbHNfZnJfVlUnLCAnZ29vZy5sYWJzLmkxOG4uTGlzdEZvcm1hdFN5bWJvbHNfZnJfV0YnLCAnZ29vZy5sYWJzLmkxOG4uTGlzdEZvcm1hdFN5bWJvbHNfZnJfWVQnLCAnZ29vZy5sYWJzLmkxOG4uTGlzdEZvcm1hdFN5bWJvbHNfZnVyJywgJ2dvb2cubGFicy5pMThuLkxpc3RGb3JtYXRTeW1ib2xzX2Z1cl9JVCcsICdnb29nLmxhYnMuaTE4bi5MaXN0Rm9ybWF0U3ltYm9sc19meScsICdnb29nLmxhYnMuaTE4bi5MaXN0Rm9ybWF0U3ltYm9sc19meV9OTCcsICdnb29nLmxhYnMuaTE4bi5MaXN0Rm9ybWF0U3ltYm9sc19nYV9JRScsICdnb29nLmxhYnMuaTE4bi5MaXN0Rm9ybWF0U3ltYm9sc19nZCcsICdnb29nLmxhYnMuaTE4bi5MaXN0Rm9ybWF0U3ltYm9sc19nZF9HQicsICdnb29nLmxhYnMuaTE4bi5MaXN0Rm9ybWF0U3ltYm9sc19nbF9FUycsICdnb29nLmxhYnMuaTE4bi5MaXN0Rm9ybWF0U3ltYm9sc19nc3dfQ0gnLCAnZ29vZy5sYWJzLmkxOG4uTGlzdEZvcm1hdFN5bWJvbHNfZ3N3X0ZSJywgJ2dvb2cubGFicy5pMThuLkxpc3RGb3JtYXRTeW1ib2xzX2dzd19MSScsICdnb29nLmxhYnMuaTE4bi5MaXN0Rm9ybWF0U3ltYm9sc19ndV9JTicsICdnb29nLmxhYnMuaTE4bi5MaXN0Rm9ybWF0U3ltYm9sc19ndXonLCAnZ29vZy5sYWJzLmkxOG4uTGlzdEZvcm1hdFN5bWJvbHNfZ3V6X0tFJywgJ2dvb2cubGFicy5pMThuLkxpc3RGb3JtYXRTeW1ib2xzX2d2JywgJ2dvb2cubGFicy5pMThuLkxpc3RGb3JtYXRTeW1ib2xzX2d2X0lNJywgJ2dvb2cubGFicy5pMThuLkxpc3RGb3JtYXRTeW1ib2xzX2hhJywgJ2dvb2cubGFicy5pMThuLkxpc3RGb3JtYXRTeW1ib2xzX2hhX0dIJywgJ2dvb2cubGFicy5pMThuLkxpc3RGb3JtYXRTeW1ib2xzX2hhX05FJywgJ2dvb2cubGFicy5pMThuLkxpc3RGb3JtYXRTeW1ib2xzX2hhX05HJywgJ2dvb2cubGFicy5pMThuLkxpc3RGb3JtYXRTeW1ib2xzX2hhd19VUycsICdnb29nLmxhYnMuaTE4bi5MaXN0Rm9ybWF0U3ltYm9sc19oZV9JTCcsICdnb29nLmxhYnMuaTE4bi5MaXN0Rm9ybWF0U3ltYm9sc19oaV9JTicsICdnb29nLmxhYnMuaTE4bi5MaXN0Rm9ybWF0U3ltYm9sc19ocl9CQScsICdnb29nLmxhYnMuaTE4bi5MaXN0Rm9ybWF0U3ltYm9sc19ocl9IUicsICdnb29nLmxhYnMuaTE4bi5MaXN0Rm9ybWF0U3ltYm9sc19oc2InLCAnZ29vZy5sYWJzLmkxOG4uTGlzdEZvcm1hdFN5bWJvbHNfaHNiX0RFJywgJ2dvb2cubGFicy5pMThuLkxpc3RGb3JtYXRTeW1ib2xzX2h1X0hVJywgJ2dvb2cubGFicy5pMThuLkxpc3RGb3JtYXRTeW1ib2xzX2h5X0FNJywgJ2dvb2cubGFicy5pMThuLkxpc3RGb3JtYXRTeW1ib2xzX2lhJywgJ2dvb2cubGFicy5pMThuLkxpc3RGb3JtYXRTeW1ib2xzX2lhXzAwMScsICdnb29nLmxhYnMuaTE4bi5MaXN0Rm9ybWF0U3ltYm9sc19pZF9JRCcsICdnb29nLmxhYnMuaTE4bi5MaXN0Rm9ybWF0U3ltYm9sc19pZycsICdnb29nLmxhYnMuaTE4bi5MaXN0Rm9ybWF0U3ltYm9sc19pZ19ORycsICdnb29nLmxhYnMuaTE4bi5MaXN0Rm9ybWF0U3ltYm9sc19paScsICdnb29nLmxhYnMuaTE4bi5MaXN0Rm9ybWF0U3ltYm9sc19paV9DTicsICdnb29nLmxhYnMuaTE4bi5MaXN0Rm9ybWF0U3ltYm9sc19pc19JUycsICdnb29nLmxhYnMuaTE4bi5MaXN0Rm9ybWF0U3ltYm9sc19pdF9DSCcsICdnb29nLmxhYnMuaTE4bi5MaXN0Rm9ybWF0U3ltYm9sc19pdF9JVCcsICdnb29nLmxhYnMuaTE4bi5MaXN0Rm9ybWF0U3ltYm9sc19pdF9TTScsICdnb29nLmxhYnMuaTE4bi5MaXN0Rm9ybWF0U3ltYm9sc19pdF9WQScsICdnb29nLmxhYnMuaTE4bi5MaXN0Rm9ybWF0U3ltYm9sc19qYV9KUCcsICdnb29nLmxhYnMuaTE4bi5MaXN0Rm9ybWF0U3ltYm9sc19qZ28nLCAnZ29vZy5sYWJzLmkxOG4uTGlzdEZvcm1hdFN5bWJvbHNfamdvX0NNJywgJ2dvb2cubGFicy5pMThuLkxpc3RGb3JtYXRTeW1ib2xzX2ptYycsICdnb29nLmxhYnMuaTE4bi5MaXN0Rm9ybWF0U3ltYm9sc19qbWNfVFonLCAnZ29vZy5sYWJzLmkxOG4uTGlzdEZvcm1hdFN5bWJvbHNfanYnLCAnZ29vZy5sYWJzLmkxOG4uTGlzdEZvcm1hdFN5bWJvbHNfanZfSUQnLCAnZ29vZy5sYWJzLmkxOG4uTGlzdEZvcm1hdFN5bWJvbHNfa2FfR0UnLCAnZ29vZy5sYWJzLmkxOG4uTGlzdEZvcm1hdFN5bWJvbHNfa2FiJywgJ2dvb2cubGFicy5pMThuLkxpc3RGb3JtYXRTeW1ib2xzX2thYl9EWicsICdnb29nLmxhYnMuaTE4bi5MaXN0Rm9ybWF0U3ltYm9sc19rYW0nLCAnZ29vZy5sYWJzLmkxOG4uTGlzdEZvcm1hdFN5bWJvbHNfa2FtX0tFJywgJ2dvb2cubGFicy5pMThuLkxpc3RGb3JtYXRTeW1ib2xzX2tkZScsICdnb29nLmxhYnMuaTE4bi5MaXN0Rm9ybWF0U3ltYm9sc19rZGVfVFonLCAnZ29vZy5sYWJzLmkxOG4uTGlzdEZvcm1hdFN5bWJvbHNfa2VhJywgJ2dvb2cubGFicy5pMThuLkxpc3RGb3JtYXRTeW1ib2xzX2tlYV9DVicsICdnb29nLmxhYnMuaTE4bi5MaXN0Rm9ybWF0U3ltYm9sc19raHEnLCAnZ29vZy5sYWJzLmkxOG4uTGlzdEZvcm1hdFN5bWJvbHNfa2hxX01MJywgJ2dvb2cubGFicy5pMThuLkxpc3RGb3JtYXRTeW1ib2xzX2tpJywgJ2dvb2cubGFicy5pMThuLkxpc3RGb3JtYXRTeW1ib2xzX2tpX0tFJywgJ2dvb2cubGFicy5pMThuLkxpc3RGb3JtYXRTeW1ib2xzX2trX0taJywgJ2dvb2cubGFicy5pMThuLkxpc3RGb3JtYXRTeW1ib2xzX2traicsICdnb29nLmxhYnMuaTE4bi5MaXN0Rm9ybWF0U3ltYm9sc19ra2pfQ00nLCAnZ29vZy5sYWJzLmkxOG4uTGlzdEZvcm1hdFN5bWJvbHNfa2wnLCAnZ29vZy5sYWJzLmkxOG4uTGlzdEZvcm1hdFN5bWJvbHNfa2xfR0wnLCAnZ29vZy5sYWJzLmkxOG4uTGlzdEZvcm1hdFN5bWJvbHNfa2xuJywgJ2dvb2cubGFicy5pMThuLkxpc3RGb3JtYXRTeW1ib2xzX2tsbl9LRScsICdnb29nLmxhYnMuaTE4bi5MaXN0Rm9ybWF0U3ltYm9sc19rbV9LSCcsICdnb29nLmxhYnMuaTE4bi5MaXN0Rm9ybWF0U3ltYm9sc19rbl9JTicsICdnb29nLmxhYnMuaTE4bi5MaXN0Rm9ybWF0U3ltYm9sc19rb19LUCcsICdnb29nLmxhYnMuaTE4bi5MaXN0Rm9ybWF0U3ltYm9sc19rb19LUicsICdnb29nLmxhYnMuaTE4bi5MaXN0Rm9ybWF0U3ltYm9sc19rb2snLCAnZ29vZy5sYWJzLmkxOG4uTGlzdEZvcm1hdFN5bWJvbHNfa29rX0lOJywgJ2dvb2cubGFicy5pMThuLkxpc3RGb3JtYXRTeW1ib2xzX2tzJywgJ2dvb2cubGFicy5pMThuLkxpc3RGb3JtYXRTeW1ib2xzX2tzX0lOJywgJ2dvb2cubGFicy5pMThuLkxpc3RGb3JtYXRTeW1ib2xzX2tzYicsICdnb29nLmxhYnMuaTE4bi5MaXN0Rm9ybWF0U3ltYm9sc19rc2JfVFonLCAnZ29vZy5sYWJzLmkxOG4uTGlzdEZvcm1hdFN5bWJvbHNfa3NmJywgJ2dvb2cubGFicy5pMThuLkxpc3RGb3JtYXRTeW1ib2xzX2tzZl9DTScsICdnb29nLmxhYnMuaTE4bi5MaXN0Rm9ybWF0U3ltYm9sc19rc2gnLCAnZ29vZy5sYWJzLmkxOG4uTGlzdEZvcm1hdFN5bWJvbHNfa3NoX0RFJywgJ2dvb2cubGFicy5pMThuLkxpc3RGb3JtYXRTeW1ib2xzX2t1JywgJ2dvb2cubGFicy5pMThuLkxpc3RGb3JtYXRTeW1ib2xzX2t1X1RSJywgJ2dvb2cubGFicy5pMThuLkxpc3RGb3JtYXRTeW1ib2xzX2t3JywgJ2dvb2cubGFicy5pMThuLkxpc3RGb3JtYXRTeW1ib2xzX2t3X0dCJywgJ2dvb2cubGFicy5pMThuLkxpc3RGb3JtYXRTeW1ib2xzX2t5X0tHJywgJ2dvb2cubGFicy5pMThuLkxpc3RGb3JtYXRTeW1ib2xzX2xhZycsICdnb29nLmxhYnMuaTE4bi5MaXN0Rm9ybWF0U3ltYm9sc19sYWdfVFonLCAnZ29vZy5sYWJzLmkxOG4uTGlzdEZvcm1hdFN5bWJvbHNfbGInLCAnZ29vZy5sYWJzLmkxOG4uTGlzdEZvcm1hdFN5bWJvbHNfbGJfTFUnLCAnZ29vZy5sYWJzLmkxOG4uTGlzdEZvcm1hdFN5bWJvbHNfbGcnLCAnZ29vZy5sYWJzLmkxOG4uTGlzdEZvcm1hdFN5bWJvbHNfbGdfVUcnLCAnZ29vZy5sYWJzLmkxOG4uTGlzdEZvcm1hdFN5bWJvbHNfbGt0JywgJ2dvb2cubGFicy5pMThuLkxpc3RGb3JtYXRTeW1ib2xzX2xrdF9VUycsICdnb29nLmxhYnMuaTE4bi5MaXN0Rm9ybWF0U3ltYm9sc19sbl9BTycsICdnb29nLmxhYnMuaTE4bi5MaXN0Rm9ybWF0U3ltYm9sc19sbl9DRCcsICdnb29nLmxhYnMuaTE4bi5MaXN0Rm9ybWF0U3ltYm9sc19sbl9DRicsICdnb29nLmxhYnMuaTE4bi5MaXN0Rm9ybWF0U3ltYm9sc19sbl9DRycsICdnb29nLmxhYnMuaTE4bi5MaXN0Rm9ybWF0U3ltYm9sc19sb19MQScsICdnb29nLmxhYnMuaTE4bi5MaXN0Rm9ybWF0U3ltYm9sc19scmMnLCAnZ29vZy5sYWJzLmkxOG4uTGlzdEZvcm1hdFN5bWJvbHNfbHJjX0lRJywgJ2dvb2cubGFicy5pMThuLkxpc3RGb3JtYXRTeW1ib2xzX2xyY19JUicsICdnb29nLmxhYnMuaTE4bi5MaXN0Rm9ybWF0U3ltYm9sc19sdF9MVCcsICdnb29nLmxhYnMuaTE4bi5MaXN0Rm9ybWF0U3ltYm9sc19sdScsICdnb29nLmxhYnMuaTE4bi5MaXN0Rm9ybWF0U3ltYm9sc19sdV9DRCcsICdnb29nLmxhYnMuaTE4bi5MaXN0Rm9ybWF0U3ltYm9sc19sdW8nLCAnZ29vZy5sYWJzLmkxOG4uTGlzdEZvcm1hdFN5bWJvbHNfbHVvX0tFJywgJ2dvb2cubGFicy5pMThuLkxpc3RGb3JtYXRTeW1ib2xzX2x1eScsICdnb29nLmxhYnMuaTE4bi5MaXN0Rm9ybWF0U3ltYm9sc19sdXlfS0UnLCAnZ29vZy5sYWJzLmkxOG4uTGlzdEZvcm1hdFN5bWJvbHNfbHZfTFYnLCAnZ29vZy5sYWJzLmkxOG4uTGlzdEZvcm1hdFN5bWJvbHNfbWFzJywgJ2dvb2cubGFicy5pMThuLkxpc3RGb3JtYXRTeW1ib2xzX21hc19LRScsICdnb29nLmxhYnMuaTE4bi5MaXN0Rm9ybWF0U3ltYm9sc19tYXNfVFonLCAnZ29vZy5sYWJzLmkxOG4uTGlzdEZvcm1hdFN5bWJvbHNfbWVyJywgJ2dvb2cubGFicy5pMThuLkxpc3RGb3JtYXRTeW1ib2xzX21lcl9LRScsICdnb29nLmxhYnMuaTE4bi5MaXN0Rm9ybWF0U3ltYm9sc19tZmUnLCAnZ29vZy5sYWJzLmkxOG4uTGlzdEZvcm1hdFN5bWJvbHNfbWZlX01VJywgJ2dvb2cubGFicy5pMThuLkxpc3RGb3JtYXRTeW1ib2xzX21nJywgJ2dvb2cubGFicy5pMThuLkxpc3RGb3JtYXRTeW1ib2xzX21nX01HJywgJ2dvb2cubGFicy5pMThuLkxpc3RGb3JtYXRTeW1ib2xzX21naCcsICdnb29nLmxhYnMuaTE4bi5MaXN0Rm9ybWF0U3ltYm9sc19tZ2hfTVonLCAnZ29vZy5sYWJzLmkxOG4uTGlzdEZvcm1hdFN5bWJvbHNfbWdvJywgJ2dvb2cubGFicy5pMThuLkxpc3RGb3JtYXRTeW1ib2xzX21nb19DTScsICdnb29nLmxhYnMuaTE4bi5MaXN0Rm9ybWF0U3ltYm9sc19taScsICdnb29nLmxhYnMuaTE4bi5MaXN0Rm9ybWF0U3ltYm9sc19taV9OWicsICdnb29nLmxhYnMuaTE4bi5MaXN0Rm9ybWF0U3ltYm9sc19ta19NSycsICdnb29nLmxhYnMuaTE4bi5MaXN0Rm9ybWF0U3ltYm9sc19tbF9JTicsICdnb29nLmxhYnMuaTE4bi5MaXN0Rm9ybWF0U3ltYm9sc19tbl9NTicsICdnb29nLmxhYnMuaTE4bi5MaXN0Rm9ybWF0U3ltYm9sc19tcl9JTicsICdnb29nLmxhYnMuaTE4bi5MaXN0Rm9ybWF0U3ltYm9sc19tc19CTicsICdnb29nLmxhYnMuaTE4bi5MaXN0Rm9ybWF0U3ltYm9sc19tc19NWScsICdnb29nLmxhYnMuaTE4bi5MaXN0Rm9ybWF0U3ltYm9sc19tc19TRycsICdnb29nLmxhYnMuaTE4bi5MaXN0Rm9ybWF0U3ltYm9sc19tdF9NVCcsICdnb29nLmxhYnMuaTE4bi5MaXN0Rm9ybWF0U3ltYm9sc19tdWEnLCAnZ29vZy5sYWJzLmkxOG4uTGlzdEZvcm1hdFN5bWJvbHNfbXVhX0NNJywgJ2dvb2cubGFicy5pMThuLkxpc3RGb3JtYXRTeW1ib2xzX215X01NJywgJ2dvb2cubGFicy5pMThuLkxpc3RGb3JtYXRTeW1ib2xzX216bicsICdnb29nLmxhYnMuaTE4bi5MaXN0Rm9ybWF0U3ltYm9sc19tem5fSVInLCAnZ29vZy5sYWJzLmkxOG4uTGlzdEZvcm1hdFN5bWJvbHNfbmFxJywgJ2dvb2cubGFicy5pMThuLkxpc3RGb3JtYXRTeW1ib2xzX25hcV9OQScsICdnb29nLmxhYnMuaTE4bi5MaXN0Rm9ybWF0U3ltYm9sc19uYl9OTycsICdnb29nLmxhYnMuaTE4bi5MaXN0Rm9ybWF0U3ltYm9sc19uYl9TSicsICdnb29nLmxhYnMuaTE4bi5MaXN0Rm9ybWF0U3ltYm9sc19uZCcsICdnb29nLmxhYnMuaTE4bi5MaXN0Rm9ybWF0U3ltYm9sc19uZF9aVycsICdnb29nLmxhYnMuaTE4bi5MaXN0Rm9ybWF0U3ltYm9sc19uZHMnLCAnZ29vZy5sYWJzLmkxOG4uTGlzdEZvcm1hdFN5bWJvbHNfbmRzX0RFJywgJ2dvb2cubGFicy5pMThuLkxpc3RGb3JtYXRTeW1ib2xzX25kc19OTCcsICdnb29nLmxhYnMuaTE4bi5MaXN0Rm9ybWF0U3ltYm9sc19uZV9JTicsICdnb29nLmxhYnMuaTE4bi5MaXN0Rm9ybWF0U3ltYm9sc19uZV9OUCcsICdnb29nLmxhYnMuaTE4bi5MaXN0Rm9ybWF0U3ltYm9sc19ubF9BVycsICdnb29nLmxhYnMuaTE4bi5MaXN0Rm9ybWF0U3ltYm9sc19ubF9CRScsICdnb29nLmxhYnMuaTE4bi5MaXN0Rm9ybWF0U3ltYm9sc19ubF9CUScsICdnb29nLmxhYnMuaTE4bi5MaXN0Rm9ybWF0U3ltYm9sc19ubF9DVycsICdnb29nLmxhYnMuaTE4bi5MaXN0Rm9ybWF0U3ltYm9sc19ubF9OTCcsICdnb29nLmxhYnMuaTE4bi5MaXN0Rm9ybWF0U3ltYm9sc19ubF9TUicsICdnb29nLmxhYnMuaTE4bi5MaXN0Rm9ybWF0U3ltYm9sc19ubF9TWCcsICdnb29nLmxhYnMuaTE4bi5MaXN0Rm9ybWF0U3ltYm9sc19ubWcnLCAnZ29vZy5sYWJzLmkxOG4uTGlzdEZvcm1hdFN5bWJvbHNfbm1nX0NNJywgJ2dvb2cubGFicy5pMThuLkxpc3RGb3JtYXRTeW1ib2xzX25uJywgJ2dvb2cubGFicy5pMThuLkxpc3RGb3JtYXRTeW1ib2xzX25uX05PJywgJ2dvb2cubGFicy5pMThuLkxpc3RGb3JtYXRTeW1ib2xzX25uaCcsICdnb29nLmxhYnMuaTE4bi5MaXN0Rm9ybWF0U3ltYm9sc19ubmhfQ00nLCAnZ29vZy5sYWJzLmkxOG4uTGlzdEZvcm1hdFN5bWJvbHNfbnVzJywgJ2dvb2cubGFicy5pMThuLkxpc3RGb3JtYXRTeW1ib2xzX251c19TUycsICdnb29nLmxhYnMuaTE4bi5MaXN0Rm9ybWF0U3ltYm9sc19ueW4nLCAnZ29vZy5sYWJzLmkxOG4uTGlzdEZvcm1hdFN5bWJvbHNfbnluX1VHJywgJ2dvb2cubGFicy5pMThuLkxpc3RGb3JtYXRTeW1ib2xzX29tJywgJ2dvb2cubGFicy5pMThuLkxpc3RGb3JtYXRTeW1ib2xzX29tX0VUJywgJ2dvb2cubGFicy5pMThuLkxpc3RGb3JtYXRTeW1ib2xzX29tX0tFJywgJ2dvb2cubGFicy5pMThuLkxpc3RGb3JtYXRTeW1ib2xzX29yX0lOJywgJ2dvb2cubGFicy5pMThuLkxpc3RGb3JtYXRTeW1ib2xzX29zJywgJ2dvb2cubGFicy5pMThuLkxpc3RGb3JtYXRTeW1ib2xzX29zX0dFJywgJ2dvb2cubGFicy5pMThuLkxpc3RGb3JtYXRTeW1ib2xzX29zX1JVJywgJ2dvb2cubGFicy5pMThuLkxpc3RGb3JtYXRTeW1ib2xzX3BhX0FyYWInLCAnZ29vZy5sYWJzLmkxOG4uTGlzdEZvcm1hdFN5bWJvbHNfcGFfQXJhYl9QSycsICdnb29nLmxhYnMuaTE4bi5MaXN0Rm9ybWF0U3ltYm9sc19wYV9HdXJ1JywgJ2dvb2cubGFicy5pMThuLkxpc3RGb3JtYXRTeW1ib2xzX3BhX0d1cnVfSU4nLCAnZ29vZy5sYWJzLmkxOG4uTGlzdEZvcm1hdFN5bWJvbHNfcGxfUEwnLCAnZ29vZy5sYWJzLmkxOG4uTGlzdEZvcm1hdFN5bWJvbHNfcHMnLCAnZ29vZy5sYWJzLmkxOG4uTGlzdEZvcm1hdFN5bWJvbHNfcHNfQUYnLCAnZ29vZy5sYWJzLmkxOG4uTGlzdEZvcm1hdFN5bWJvbHNfcHNfUEsnLCAnZ29vZy5sYWJzLmkxOG4uTGlzdEZvcm1hdFN5bWJvbHNfcHRfQU8nLCAnZ29vZy5sYWJzLmkxOG4uTGlzdEZvcm1hdFN5bWJvbHNfcHRfQ0gnLCAnZ29vZy5sYWJzLmkxOG4uTGlzdEZvcm1hdFN5bWJvbHNfcHRfQ1YnLCAnZ29vZy5sYWJzLmkxOG4uTGlzdEZvcm1hdFN5bWJvbHNfcHRfR1EnLCAnZ29vZy5sYWJzLmkxOG4uTGlzdEZvcm1hdFN5bWJvbHNfcHRfR1cnLCAnZ29vZy5sYWJzLmkxOG4uTGlzdEZvcm1hdFN5bWJvbHNfcHRfTFUnLCAnZ29vZy5sYWJzLmkxOG4uTGlzdEZvcm1hdFN5bWJvbHNfcHRfTU8nLCAnZ29vZy5sYWJzLmkxOG4uTGlzdEZvcm1hdFN5bWJvbHNfcHRfTVonLCAnZ29vZy5sYWJzLmkxOG4uTGlzdEZvcm1hdFN5bWJvbHNfcHRfU1QnLCAnZ29vZy5sYWJzLmkxOG4uTGlzdEZvcm1hdFN5bWJvbHNfcHRfVEwnLCAnZ29vZy5sYWJzLmkxOG4uTGlzdEZvcm1hdFN5bWJvbHNfcXUnLCAnZ29vZy5sYWJzLmkxOG4uTGlzdEZvcm1hdFN5bWJvbHNfcXVfQk8nLCAnZ29vZy5sYWJzLmkxOG4uTGlzdEZvcm1hdFN5bWJvbHNfcXVfRUMnLCAnZ29vZy5sYWJzLmkxOG4uTGlzdEZvcm1hdFN5bWJvbHNfcXVfUEUnLCAnZ29vZy5sYWJzLmkxOG4uTGlzdEZvcm1hdFN5bWJvbHNfcm0nLCAnZ29vZy5sYWJzLmkxOG4uTGlzdEZvcm1hdFN5bWJvbHNfcm1fQ0gnLCAnZ29vZy5sYWJzLmkxOG4uTGlzdEZvcm1hdFN5bWJvbHNfcm4nLCAnZ29vZy5sYWJzLmkxOG4uTGlzdEZvcm1hdFN5bWJvbHNfcm5fQkknLCAnZ29vZy5sYWJzLmkxOG4uTGlzdEZvcm1hdFN5bWJvbHNfcm9fTUQnLCAnZ29vZy5sYWJzLmkxOG4uTGlzdEZvcm1hdFN5bWJvbHNfcm9fUk8nLCAnZ29vZy5sYWJzLmkxOG4uTGlzdEZvcm1hdFN5bWJvbHNfcm9mJywgJ2dvb2cubGFicy5pMThuLkxpc3RGb3JtYXRTeW1ib2xzX3JvZl9UWicsICdnb29nLmxhYnMuaTE4bi5MaXN0Rm9ybWF0U3ltYm9sc19ydV9CWScsICdnb29nLmxhYnMuaTE4bi5MaXN0Rm9ybWF0U3ltYm9sc19ydV9LRycsICdnb29nLmxhYnMuaTE4bi5MaXN0Rm9ybWF0U3ltYm9sc19ydV9LWicsICdnb29nLmxhYnMuaTE4bi5MaXN0Rm9ybWF0U3ltYm9sc19ydV9NRCcsICdnb29nLmxhYnMuaTE4bi5MaXN0Rm9ybWF0U3ltYm9sc19ydV9SVScsICdnb29nLmxhYnMuaTE4bi5MaXN0Rm9ybWF0U3ltYm9sc19ydV9VQScsICdnb29nLmxhYnMuaTE4bi5MaXN0Rm9ybWF0U3ltYm9sc19ydycsICdnb29nLmxhYnMuaTE4bi5MaXN0Rm9ybWF0U3ltYm9sc19yd19SVycsICdnb29nLmxhYnMuaTE4bi5MaXN0Rm9ybWF0U3ltYm9sc19yd2snLCAnZ29vZy5sYWJzLmkxOG4uTGlzdEZvcm1hdFN5bWJvbHNfcndrX1RaJywgJ2dvb2cubGFicy5pMThuLkxpc3RGb3JtYXRTeW1ib2xzX3NhaCcsICdnb29nLmxhYnMuaTE4bi5MaXN0Rm9ybWF0U3ltYm9sc19zYWhfUlUnLCAnZ29vZy5sYWJzLmkxOG4uTGlzdEZvcm1hdFN5bWJvbHNfc2FxJywgJ2dvb2cubGFicy5pMThuLkxpc3RGb3JtYXRTeW1ib2xzX3NhcV9LRScsICdnb29nLmxhYnMuaTE4bi5MaXN0Rm9ybWF0U3ltYm9sc19zYnAnLCAnZ29vZy5sYWJzLmkxOG4uTGlzdEZvcm1hdFN5bWJvbHNfc2JwX1RaJywgJ2dvb2cubGFicy5pMThuLkxpc3RGb3JtYXRTeW1ib2xzX3NkJywgJ2dvb2cubGFicy5pMThuLkxpc3RGb3JtYXRTeW1ib2xzX3NkX1BLJywgJ2dvb2cubGFicy5pMThuLkxpc3RGb3JtYXRTeW1ib2xzX3NlJywgJ2dvb2cubGFicy5pMThuLkxpc3RGb3JtYXRTeW1ib2xzX3NlX0ZJJywgJ2dvb2cubGFicy5pMThuLkxpc3RGb3JtYXRTeW1ib2xzX3NlX05PJywgJ2dvb2cubGFicy5pMThuLkxpc3RGb3JtYXRTeW1ib2xzX3NlX1NFJywgJ2dvb2cubGFicy5pMThuLkxpc3RGb3JtYXRTeW1ib2xzX3NlaCcsICdnb29nLmxhYnMuaTE4bi5MaXN0Rm9ybWF0U3ltYm9sc19zZWhfTVonLCAnZ29vZy5sYWJzLmkxOG4uTGlzdEZvcm1hdFN5bWJvbHNfc2VzJywgJ2dvb2cubGFicy5pMThuLkxpc3RGb3JtYXRTeW1ib2xzX3Nlc19NTCcsICdnb29nLmxhYnMuaTE4bi5MaXN0Rm9ybWF0U3ltYm9sc19zZycsICdnb29nLmxhYnMuaTE4bi5MaXN0Rm9ybWF0U3ltYm9sc19zZ19DRicsICdnb29nLmxhYnMuaTE4bi5MaXN0Rm9ybWF0U3ltYm9sc19zaGknLCAnZ29vZy5sYWJzLmkxOG4uTGlzdEZvcm1hdFN5bWJvbHNfc2hpX0xhdG4nLCAnZ29vZy5sYWJzLmkxOG4uTGlzdEZvcm1hdFN5bWJvbHNfc2hpX0xhdG5fTUEnLCAnZ29vZy5sYWJzLmkxOG4uTGlzdEZvcm1hdFN5bWJvbHNfc2hpX1RmbmcnLCAnZ29vZy5sYWJzLmkxOG4uTGlzdEZvcm1hdFN5bWJvbHNfc2hpX1RmbmdfTUEnLCAnZ29vZy5sYWJzLmkxOG4uTGlzdEZvcm1hdFN5bWJvbHNfc2lfTEsnLCAnZ29vZy5sYWJzLmkxOG4uTGlzdEZvcm1hdFN5bWJvbHNfc2tfU0snLCAnZ29vZy5sYWJzLmkxOG4uTGlzdEZvcm1hdFN5bWJvbHNfc2xfU0knLCAnZ29vZy5sYWJzLmkxOG4uTGlzdEZvcm1hdFN5bWJvbHNfc21uJywgJ2dvb2cubGFicy5pMThuLkxpc3RGb3JtYXRTeW1ib2xzX3Ntbl9GSScsICdnb29nLmxhYnMuaTE4bi5MaXN0Rm9ybWF0U3ltYm9sc19zbicsICdnb29nLmxhYnMuaTE4bi5MaXN0Rm9ybWF0U3ltYm9sc19zbl9aVycsICdnb29nLmxhYnMuaTE4bi5MaXN0Rm9ybWF0U3ltYm9sc19zbycsICdnb29nLmxhYnMuaTE4bi5MaXN0Rm9ybWF0U3ltYm9sc19zb19ESicsICdnb29nLmxhYnMuaTE4bi5MaXN0Rm9ybWF0U3ltYm9sc19zb19FVCcsICdnb29nLmxhYnMuaTE4bi5MaXN0Rm9ybWF0U3ltYm9sc19zb19LRScsICdnb29nLmxhYnMuaTE4bi5MaXN0Rm9ybWF0U3ltYm9sc19zb19TTycsICdnb29nLmxhYnMuaTE4bi5MaXN0Rm9ybWF0U3ltYm9sc19zcV9BTCcsICdnb29nLmxhYnMuaTE4bi5MaXN0Rm9ybWF0U3ltYm9sc19zcV9NSycsICdnb29nLmxhYnMuaTE4bi5MaXN0Rm9ybWF0U3ltYm9sc19zcV9YSycsICdnb29nLmxhYnMuaTE4bi5MaXN0Rm9ybWF0U3ltYm9sc19zcl9DeXJsJywgJ2dvb2cubGFicy5pMThuLkxpc3RGb3JtYXRTeW1ib2xzX3NyX0N5cmxfQkEnLCAnZ29vZy5sYWJzLmkxOG4uTGlzdEZvcm1hdFN5bWJvbHNfc3JfQ3lybF9NRScsICdnb29nLmxhYnMuaTE4bi5MaXN0Rm9ybWF0U3ltYm9sc19zcl9DeXJsX1JTJywgJ2dvb2cubGFicy5pMThuLkxpc3RGb3JtYXRTeW1ib2xzX3NyX0N5cmxfWEsnLCAnZ29vZy5sYWJzLmkxOG4uTGlzdEZvcm1hdFN5bWJvbHNfc3JfTGF0bl9CQScsICdnb29nLmxhYnMuaTE4bi5MaXN0Rm9ybWF0U3ltYm9sc19zcl9MYXRuX01FJywgJ2dvb2cubGFicy5pMThuLkxpc3RGb3JtYXRTeW1ib2xzX3NyX0xhdG5fUlMnLCAnZ29vZy5sYWJzLmkxOG4uTGlzdEZvcm1hdFN5bWJvbHNfc3JfTGF0bl9YSycsICdnb29nLmxhYnMuaTE4bi5MaXN0Rm9ybWF0U3ltYm9sc19zdl9BWCcsICdnb29nLmxhYnMuaTE4bi5MaXN0Rm9ybWF0U3ltYm9sc19zdl9GSScsICdnb29nLmxhYnMuaTE4bi5MaXN0Rm9ybWF0U3ltYm9sc19zdl9TRScsICdnb29nLmxhYnMuaTE4bi5MaXN0Rm9ybWF0U3ltYm9sc19zd19DRCcsICdnb29nLmxhYnMuaTE4bi5MaXN0Rm9ybWF0U3ltYm9sc19zd19LRScsICdnb29nLmxhYnMuaTE4bi5MaXN0Rm9ybWF0U3ltYm9sc19zd19UWicsICdnb29nLmxhYnMuaTE4bi5MaXN0Rm9ybWF0U3ltYm9sc19zd19VRycsICdnb29nLmxhYnMuaTE4bi5MaXN0Rm9ybWF0U3ltYm9sc190YV9JTicsICdnb29nLmxhYnMuaTE4bi5MaXN0Rm9ybWF0U3ltYm9sc190YV9MSycsICdnb29nLmxhYnMuaTE4bi5MaXN0Rm9ybWF0U3ltYm9sc190YV9NWScsICdnb29nLmxhYnMuaTE4bi5MaXN0Rm9ybWF0U3ltYm9sc190YV9TRycsICdnb29nLmxhYnMuaTE4bi5MaXN0Rm9ybWF0U3ltYm9sc190ZV9JTicsICdnb29nLmxhYnMuaTE4bi5MaXN0Rm9ybWF0U3ltYm9sc190ZW8nLCAnZ29vZy5sYWJzLmkxOG4uTGlzdEZvcm1hdFN5bWJvbHNfdGVvX0tFJywgJ2dvb2cubGFicy5pMThuLkxpc3RGb3JtYXRTeW1ib2xzX3Rlb19VRycsICdnb29nLmxhYnMuaTE4bi5MaXN0Rm9ybWF0U3ltYm9sc190ZycsICdnb29nLmxhYnMuaTE4bi5MaXN0Rm9ybWF0U3ltYm9sc190Z19USicsICdnb29nLmxhYnMuaTE4bi5MaXN0Rm9ybWF0U3ltYm9sc190aF9USCcsICdnb29nLmxhYnMuaTE4bi5MaXN0Rm9ybWF0U3ltYm9sc190aScsICdnb29nLmxhYnMuaTE4bi5MaXN0Rm9ybWF0U3ltYm9sc190aV9FUicsICdnb29nLmxhYnMuaTE4bi5MaXN0Rm9ybWF0U3ltYm9sc190aV9FVCcsICdnb29nLmxhYnMuaTE4bi5MaXN0Rm9ybWF0U3ltYm9sc190aycsICdnb29nLmxhYnMuaTE4bi5MaXN0Rm9ybWF0U3ltYm9sc190a19UTScsICdnb29nLmxhYnMuaTE4bi5MaXN0Rm9ybWF0U3ltYm9sc190bycsICdnb29nLmxhYnMuaTE4bi5MaXN0Rm9ybWF0U3ltYm9sc190b19UTycsICdnb29nLmxhYnMuaTE4bi5MaXN0Rm9ybWF0U3ltYm9sc190cl9DWScsICdnb29nLmxhYnMuaTE4bi5MaXN0Rm9ybWF0U3ltYm9sc190cl9UUicsICdnb29nLmxhYnMuaTE4bi5MaXN0Rm9ybWF0U3ltYm9sc190dCcsICdnb29nLmxhYnMuaTE4bi5MaXN0Rm9ybWF0U3ltYm9sc190dF9SVScsICdnb29nLmxhYnMuaTE4bi5MaXN0Rm9ybWF0U3ltYm9sc190d3EnLCAnZ29vZy5sYWJzLmkxOG4uTGlzdEZvcm1hdFN5bWJvbHNfdHdxX05FJywgJ2dvb2cubGFicy5pMThuLkxpc3RGb3JtYXRTeW1ib2xzX3R6bScsICdnb29nLmxhYnMuaTE4bi5MaXN0Rm9ybWF0U3ltYm9sc190em1fTUEnLCAnZ29vZy5sYWJzLmkxOG4uTGlzdEZvcm1hdFN5bWJvbHNfdWcnLCAnZ29vZy5sYWJzLmkxOG4uTGlzdEZvcm1hdFN5bWJvbHNfdWdfQ04nLCAnZ29vZy5sYWJzLmkxOG4uTGlzdEZvcm1hdFN5bWJvbHNfdWtfVUEnLCAnZ29vZy5sYWJzLmkxOG4uTGlzdEZvcm1hdFN5bWJvbHNfdXJfSU4nLCAnZ29vZy5sYWJzLmkxOG4uTGlzdEZvcm1hdFN5bWJvbHNfdXJfUEsnLCAnZ29vZy5sYWJzLmkxOG4uTGlzdEZvcm1hdFN5bWJvbHNfdXpfQXJhYicsICdnb29nLmxhYnMuaTE4bi5MaXN0Rm9ybWF0U3ltYm9sc191el9BcmFiX0FGJywgJ2dvb2cubGFicy5pMThuLkxpc3RGb3JtYXRTeW1ib2xzX3V6X0N5cmwnLCAnZ29vZy5sYWJzLmkxOG4uTGlzdEZvcm1hdFN5bWJvbHNfdXpfQ3lybF9VWicsICdnb29nLmxhYnMuaTE4bi5MaXN0Rm9ybWF0U3ltYm9sc191el9MYXRuJywgJ2dvb2cubGFicy5pMThuLkxpc3RGb3JtYXRTeW1ib2xzX3V6X0xhdG5fVVonLCAnZ29vZy5sYWJzLmkxOG4uTGlzdEZvcm1hdFN5bWJvbHNfdmFpJywgJ2dvb2cubGFicy5pMThuLkxpc3RGb3JtYXRTeW1ib2xzX3ZhaV9MYXRuJywgJ2dvb2cubGFicy5pMThuLkxpc3RGb3JtYXRTeW1ib2xzX3ZhaV9MYXRuX0xSJywgJ2dvb2cubGFicy5pMThuLkxpc3RGb3JtYXRTeW1ib2xzX3ZhaV9WYWlpJywgJ2dvb2cubGFicy5pMThuLkxpc3RGb3JtYXRTeW1ib2xzX3ZhaV9WYWlpX0xSJywgJ2dvb2cubGFicy5pMThuLkxpc3RGb3JtYXRTeW1ib2xzX3ZpX1ZOJywgJ2dvb2cubGFicy5pMThuLkxpc3RGb3JtYXRTeW1ib2xzX3Z1bicsICdnb29nLmxhYnMuaTE4bi5MaXN0Rm9ybWF0U3ltYm9sc192dW5fVFonLCAnZ29vZy5sYWJzLmkxOG4uTGlzdEZvcm1hdFN5bWJvbHNfd2FlJywgJ2dvb2cubGFicy5pMThuLkxpc3RGb3JtYXRTeW1ib2xzX3dhZV9DSCcsICdnb29nLmxhYnMuaTE4bi5MaXN0Rm9ybWF0U3ltYm9sc193bycsICdnb29nLmxhYnMuaTE4bi5MaXN0Rm9ybWF0U3ltYm9sc193b19TTicsICdnb29nLmxhYnMuaTE4bi5MaXN0Rm9ybWF0U3ltYm9sc194aCcsICdnb29nLmxhYnMuaTE4bi5MaXN0Rm9ybWF0U3ltYm9sc194aF9aQScsICdnb29nLmxhYnMuaTE4bi5MaXN0Rm9ybWF0U3ltYm9sc194b2cnLCAnZ29vZy5sYWJzLmkxOG4uTGlzdEZvcm1hdFN5bWJvbHNfeG9nX1VHJywgJ2dvb2cubGFicy5pMThuLkxpc3RGb3JtYXRTeW1ib2xzX3lhdicsICdnb29nLmxhYnMuaTE4bi5MaXN0Rm9ybWF0U3ltYm9sc195YXZfQ00nLCAnZ29vZy5sYWJzLmkxOG4uTGlzdEZvcm1hdFN5bWJvbHNfeWknLCAnZ29vZy5sYWJzLmkxOG4uTGlzdEZvcm1hdFN5bWJvbHNfeWlfMDAxJywgJ2dvb2cubGFicy5pMThuLkxpc3RGb3JtYXRTeW1ib2xzX3lvJywgJ2dvb2cubGFicy5pMThuLkxpc3RGb3JtYXRTeW1ib2xzX3lvX0JKJywgJ2dvb2cubGFicy5pMThuLkxpc3RGb3JtYXRTeW1ib2xzX3lvX05HJywgJ2dvb2cubGFicy5pMThuLkxpc3RGb3JtYXRTeW1ib2xzX3l1ZScsICdnb29nLmxhYnMuaTE4bi5MaXN0Rm9ybWF0U3ltYm9sc195dWVfSGFucycsICdnb29nLmxhYnMuaTE4bi5MaXN0Rm9ybWF0U3ltYm9sc195dWVfSGFuc19DTicsICdnb29nLmxhYnMuaTE4bi5MaXN0Rm9ybWF0U3ltYm9sc195dWVfSGFudCcsICdnb29nLmxhYnMuaTE4bi5MaXN0Rm9ybWF0U3ltYm9sc195dWVfSGFudF9ISycsICdnb29nLmxhYnMuaTE4bi5MaXN0Rm9ybWF0U3ltYm9sc196Z2gnLCAnZ29vZy5sYWJzLmkxOG4uTGlzdEZvcm1hdFN5bWJvbHNfemdoX01BJywgJ2dvb2cubGFicy5pMThuLkxpc3RGb3JtYXRTeW1ib2xzX3poX0hhbnMnLCAnZ29vZy5sYWJzLmkxOG4uTGlzdEZvcm1hdFN5bWJvbHNfemhfSGFuc19DTicsICdnb29nLmxhYnMuaTE4bi5MaXN0Rm9ybWF0U3ltYm9sc196aF9IYW5zX0hLJywgJ2dvb2cubGFicy5pMThuLkxpc3RGb3JtYXRTeW1ib2xzX3poX0hhbnNfTU8nLCAnZ29vZy5sYWJzLmkxOG4uTGlzdEZvcm1hdFN5bWJvbHNfemhfSGFuc19TRycsICdnb29nLmxhYnMuaTE4bi5MaXN0Rm9ybWF0U3ltYm9sc196aF9IYW50JywgJ2dvb2cubGFicy5pMThuLkxpc3RGb3JtYXRTeW1ib2xzX3poX0hhbnRfSEsnLCAnZ29vZy5sYWJzLmkxOG4uTGlzdEZvcm1hdFN5bWJvbHNfemhfSGFudF9NTycsICdnb29nLmxhYnMuaTE4bi5MaXN0Rm9ybWF0U3ltYm9sc196aF9IYW50X1RXJywgJ2dvb2cubGFicy5pMThuLkxpc3RGb3JtYXRTeW1ib2xzX3p1X1pBJ10sIFsnZ29vZy5sYWJzLmkxOG4uTGlzdEZvcm1hdFN5bWJvbHMnXSwge30pOwpnb29nLmFkZERlcGVuZGVuY3koJ2xhYnMvbW9jay9tb2NrLmpzJywgWydnb29nLmxhYnMubW9jaycsICdnb29nLmxhYnMubW9jay5UaW1lb3V0RXJyb3InLCAnZ29vZy5sYWJzLm1vY2suVmVyaWZpY2F0aW9uRXJyb3InXSwgWydnb29nLmFycmF5JywgJ2dvb2cuYXNzZXJ0cycsICdnb29nLmRlYnVnJywgJ2dvb2cuZGVidWcuRXJyb3InLCAnZ29vZy5mdW5jdGlvbnMnLCAnZ29vZy5sYWJzLm1vY2sudGltZW91dCcsICdnb29nLmxhYnMubW9jay50aW1lb3V0LlRpbWVvdXRNb2RlJywgJ2dvb2cubGFicy5tb2NrLnZlcmlmaWNhdGlvbicsICdnb29nLmxhYnMubW9jay52ZXJpZmljYXRpb24uQmFzZVZlcmlmaWNhdGlvbk1vZGUnLCAnZ29vZy5sYWJzLm1vY2sudmVyaWZpY2F0aW9uLlZlcmlmaWNhdGlvbk1vZGUnLCAnZ29vZy5vYmplY3QnXSwgeydsYW5nJzogJ2VzNid9KTsKZ29vZy5hZGREZXBlbmRlbmN5KCdsYWJzL21vY2svbW9ja190ZXN0LmpzJywgWydnb29nLmxhYnMubW9ja1Rlc3QnXSwgWydnb29nLmFycmF5JywgJ2dvb2cubGFicy5tb2NrJywgJ2dvb2cubGFicy5tb2NrLlRpbWVvdXRFcnJvcicsICdnb29nLmxhYnMubW9jay5WZXJpZmljYXRpb25FcnJvcicsICdnb29nLmxhYnMubW9jay50aW1lb3V0JywgJ2dvb2cubGFicy5tb2NrLnZlcmlmaWNhdGlvbicsICdnb29nLmxhYnMudGVzdGluZy5Bbnl0aGluZ01hdGNoZXInLCAnZ29vZy5sYWJzLnRlc3RpbmcuR3JlYXRlclRoYW5NYXRjaGVyJywgJ2dvb2cuc3RyaW5nJywgJ2dvb2cudGVzdGluZy5qc3VuaXQnXSwgeydsYW5nJzogJ2VzOCd9KTsKZ29vZy5hZGREZXBlbmRlbmN5KCdsYWJzL21vY2svdGltZW91dG1vZGUuanMnLCBbJ2dvb2cubGFicy5tb2NrLnRpbWVvdXQnLCAnZ29vZy5sYWJzLm1vY2sudGltZW91dC5UaW1lb3V0TW9kZSddLCBbXSwgeydsYW5nJzogJ2VzNid9KTsKZ29vZy5hZGREZXBlbmRlbmN5KCdsYWJzL21vY2svdmVyaWZpY2F0aW9ubW9kZS5qcycsIFsnZ29vZy5sYWJzLm1vY2sudmVyaWZpY2F0aW9uJywgJ2dvb2cubGFicy5tb2NrLnZlcmlmaWNhdGlvbi5CYXNlVmVyaWZpY2F0aW9uTW9kZScsICdnb29nLmxhYnMubW9jay52ZXJpZmljYXRpb24uVmVyaWZpY2F0aW9uTW9kZSddLCBbXSwgeydsYW5nJzogJ2VzNid9KTsKZ29vZy5hZGREZXBlbmRlbmN5KCdsYWJzL21vY2svdmVyaWZpY2F0aW9ubW9kZV90ZXN0LmpzJywgWydnb29nLmxhYnMubW9jay5WZXJpZmljYXRpb25Nb2RlVGVzdCddLCBbJ2dvb2cubGFicy5tb2NrLnZlcmlmaWNhdGlvbicsICdnb29nLnRlc3RpbmcudGVzdFN1aXRlJ10sIHsnbGFuZyc6ICdlczYnLCAnbW9kdWxlJzogJ2dvb2cnfSk7Cmdvb2cuYWRkRGVwZW5kZW5jeSgnbGFicy9uZXQvaW1hZ2UuanMnLCBbJ2dvb2cubGFicy5uZXQuaW1hZ2UnXSwgWydnb29nLlByb21pc2UnLCAnZ29vZy5kb20uc2FmZScsICdnb29nLmV2ZW50cy5FdmVudEhhbmRsZXInLCAnZ29vZy5ldmVudHMuRXZlbnRUeXBlJywgJ2dvb2cuaHRtbC5TYWZlVXJsJywgJ2dvb2cubmV0LkV2ZW50VHlwZScsICdnb29nLnVzZXJBZ2VudCddLCB7fSk7Cmdvb2cuYWRkRGVwZW5kZW5jeSgnbGFicy9uZXQvaW1hZ2VfdGVzdC5qcycsIFsnZ29vZy5sYWJzLm5ldC5pbWFnZVRlc3QnXSwgWydnb29nLmxhYnMubmV0LmltYWdlJywgJ2dvb2cuc3RyaW5nJywgJ2dvb2cudGVzdGluZy5UZXN0Q2FzZScsICdnb29nLnRlc3RpbmcucmVjb3JkRnVuY3Rpb24nLCAnZ29vZy50ZXN0aW5nLnRlc3RTdWl0ZSddLCB7J2xhbmcnOiAnZXM2JywgJ21vZHVsZSc6ICdnb29nJ30pOwpnb29nLmFkZERlcGVuZGVuY3koJ2xhYnMvbmV0L3dlYmNoYW5uZWwuanMnLCBbJ2dvb2cubmV0LldlYkNoYW5uZWwnXSwgWydnb29nLmV2ZW50cycsICdnb29nLmV2ZW50cy5FdmVudCcsICdnb29nLmV2ZW50cy5MaXN0ZW5hYmxlJywgJ2dvb2cubmV0LlhtbEh0dHBGYWN0b3J5J10sIHt9KTsKZ29vZy5hZGREZXBlbmRlbmN5KCdsYWJzL25ldC93ZWJjaGFubmVsL2Jhc2V0ZXN0Y2hhbm5lbC5qcycsIFsnZ29vZy5sYWJzLm5ldC53ZWJDaGFubmVsLkJhc2VUZXN0Q2hhbm5lbCddLCBbJ2dvb2cubGFicy5uZXQud2ViQ2hhbm5lbC5DaGFubmVsJywgJ2dvb2cubGFicy5uZXQud2ViQ2hhbm5lbC5DaGFubmVsUmVxdWVzdCcsICdnb29nLmxhYnMubmV0LndlYkNoYW5uZWwuV2ViQ2hhbm5lbERlYnVnJywgJ2dvb2cubGFicy5uZXQud2ViQ2hhbm5lbC5yZXF1ZXN0U3RhdHMnLCAnZ29vZy5uZXQuV2ViQ2hhbm5lbCddLCB7fSk7Cmdvb2cuYWRkRGVwZW5kZW5jeSgnbGFicy9uZXQvd2ViY2hhbm5lbC9jaGFubmVsLmpzJywgWydnb29nLmxhYnMubmV0LndlYkNoYW5uZWwuQ2hhbm5lbCddLCBbXSwgeydsYW5nJzogJ2VzNid9KTsKZ29vZy5hZGREZXBlbmRlbmN5KCdsYWJzL25ldC93ZWJjaGFubmVsL2NoYW5uZWxyZXF1ZXN0LmpzJywgWydnb29nLmxhYnMubmV0LndlYkNoYW5uZWwuQ2hhbm5lbFJlcXVlc3QnXSwgWydnb29nLlRpbWVyJywgJ2dvb2cuYXN5bmMuVGhyb3R0bGUnLCAnZ29vZy5ldmVudHMuRXZlbnRIYW5kbGVyJywgJ2dvb2cubGFicy5uZXQud2ViQ2hhbm5lbC5DaGFubmVsJywgJ2dvb2cubGFicy5uZXQud2ViQ2hhbm5lbC5XZWJDaGFubmVsRGVidWcnLCAnZ29vZy5sYWJzLm5ldC53ZWJDaGFubmVsLmVudmlyb25tZW50JywgJ2dvb2cubGFicy5uZXQud2ViQ2hhbm5lbC5yZXF1ZXN0U3RhdHMnLCAnZ29vZy5uZXQuRXJyb3JDb2RlJywgJ2dvb2cubmV0LkV2ZW50VHlwZScsICdnb29nLm5ldC5XZWJDaGFubmVsJywgJ2dvb2cubmV0LlhtbEh0dHAnLCAnZ29vZy5vYmplY3QnLCAnZ29vZy5zdHJpbmcnLCAnZ29vZy51c2VyQWdlbnQnXSwge30pOwpnb29nLmFkZERlcGVuZGVuY3koJ2xhYnMvbmV0L3dlYmNoYW5uZWwvY2hhbm5lbHJlcXVlc3RfdGVzdC5qcycsIFsnZ29vZy5sYWJzLm5ldC53ZWJDaGFubmVsLmNoYW5uZWxSZXF1ZXN0VGVzdCddLCBbJ2dvb2cuVXJpJywgJ2dvb2cuZnVuY3Rpb25zJywgJ2dvb2cubGFicy5uZXQud2ViQ2hhbm5lbC5DaGFubmVsUmVxdWVzdCcsICdnb29nLmxhYnMubmV0LndlYkNoYW5uZWwuV2ViQ2hhbm5lbERlYnVnJywgJ2dvb2cubGFicy5uZXQud2ViQ2hhbm5lbC5yZXF1ZXN0U3RhdHMnLCAnZ29vZy5sYWJzLm5ldC53ZWJDaGFubmVsLnJlcXVlc3RTdGF0cy5TZXJ2ZXJSZWFjaGFiaWxpdHknLCAnZ29vZy50ZXN0aW5nLk1vY2tDbG9jaycsICdnb29nLnRlc3RpbmcuUHJvcGVydHlSZXBsYWNlcicsICdnb29nLnRlc3RpbmcubmV0LlhocklvJywgJ2dvb2cudGVzdGluZy5yZWNvcmRGdW5jdGlvbicsICdnb29nLnRlc3RpbmcudGVzdFN1aXRlJ10sIHsnbGFuZyc6ICdlczYnLCAnbW9kdWxlJzogJ2dvb2cnfSk7Cmdvb2cuYWRkRGVwZW5kZW5jeSgnbGFicy9uZXQvd2ViY2hhbm5lbC9jb25uZWN0aW9uc3RhdGUuanMnLCBbJ2dvb2cubGFicy5uZXQud2ViQ2hhbm5lbC5Db25uZWN0aW9uU3RhdGUnXSwgW10sIHt9KTsKZ29vZy5hZGREZXBlbmRlbmN5KCdsYWJzL25ldC93ZWJjaGFubmVsL2Vudmlyb25tZW50LmpzJywgWydnb29nLmxhYnMubmV0LndlYkNoYW5uZWwuZW52aXJvbm1lbnQnXSwgWydnb29nLnVzZXJBZ2VudCddLCB7J21vZHVsZSc6ICdnb29nJ30pOwpnb29nLmFkZERlcGVuZGVuY3koJ2xhYnMvbmV0L3dlYmNoYW5uZWwvZW52aXJvbm1lbnRfdGVzdC5qcycsIFsnZ29vZy5sYWJzLm5ldC53ZWJDaGFubmVsLkVudmlyb25tZW50VGVzdCddLCBbJ2dvb2cubGFicy5uZXQud2ViQ2hhbm5lbC5lbnZpcm9ubWVudCcsICdnb29nLnRlc3RpbmcudGVzdFN1aXRlJywgJ2dvb2cudXNlckFnZW50J10sIHsnbGFuZyc6ICdlczYnLCAnbW9kdWxlJzogJ2dvb2cnfSk7Cmdvb2cuYWRkRGVwZW5kZW5jeSgnbGFicy9uZXQvd2ViY2hhbm5lbC9mb3J3YXJkY2hhbm5lbHJlcXVlc3Rwb29sLmpzJywgWydnb29nLmxhYnMubmV0LndlYkNoYW5uZWwuRm9yd2FyZENoYW5uZWxSZXF1ZXN0UG9vbCddLCBbJ2dvb2cuYXJyYXknLCAnZ29vZy5sYWJzLm5ldC53ZWJDaGFubmVsLkNoYW5uZWxSZXF1ZXN0JywgJ2dvb2cubGFicy5uZXQud2ViQ2hhbm5lbC5XaXJlJywgJ2dvb2cuc3RyaW5nJywgJ2dvb2cuc3RydWN0cy5TZXQnXSwgeydtb2R1bGUnOiAnZ29vZyd9KTsKZ29vZy5hZGREZXBlbmRlbmN5KCdsYWJzL25ldC93ZWJjaGFubmVsL2ZvcndhcmRjaGFubmVscmVxdWVzdHBvb2xfdGVzdC5qcycsIFsnZ29vZy5sYWJzLm5ldC53ZWJDaGFubmVsLkZvcndhcmRDaGFubmVsUmVxdWVzdFBvb2xUZXN0J10sIFsnZ29vZy5sYWJzLm5ldC53ZWJDaGFubmVsLkNoYW5uZWxSZXF1ZXN0JywgJ2dvb2cubGFicy5uZXQud2ViQ2hhbm5lbC5Gb3J3YXJkQ2hhbm5lbFJlcXVlc3RQb29sJywgJ2dvb2cudGVzdGluZy5Qcm9wZXJ0eVJlcGxhY2VyJywgJ2dvb2cudGVzdGluZy50ZXN0U3VpdGUnXSwgeydsYW5nJzogJ2VzNicsICdtb2R1bGUnOiAnZ29vZyd9KTsKZ29vZy5hZGREZXBlbmRlbmN5KCdsYWJzL25ldC93ZWJjaGFubmVsL25ldHV0aWxzLmpzJywgWydnb29nLmxhYnMubmV0LndlYkNoYW5uZWwubmV0VXRpbHMnXSwgWydnb29nLlVyaScsICdnb29nLmxhYnMubmV0LndlYkNoYW5uZWwuV2ViQ2hhbm5lbERlYnVnJ10sIHt9KTsKZ29vZy5hZGREZXBlbmRlbmN5KCdsYWJzL25ldC93ZWJjaGFubmVsL3JlcXVlc3RzdGF0cy5qcycsIFsnZ29vZy5sYWJzLm5ldC53ZWJDaGFubmVsLnJlcXVlc3RTdGF0cycsICdnb29nLmxhYnMubmV0LndlYkNoYW5uZWwucmVxdWVzdFN0YXRzLkV2ZW50JywgJ2dvb2cubGFicy5uZXQud2ViQ2hhbm5lbC5yZXF1ZXN0U3RhdHMuU2VydmVyUmVhY2hhYmlsaXR5JywgJ2dvb2cubGFicy5uZXQud2ViQ2hhbm5lbC5yZXF1ZXN0U3RhdHMuU2VydmVyUmVhY2hhYmlsaXR5RXZlbnQnLCAnZ29vZy5sYWJzLm5ldC53ZWJDaGFubmVsLnJlcXVlc3RTdGF0cy5TdGF0JywgJ2dvb2cubGFicy5uZXQud2ViQ2hhbm5lbC5yZXF1ZXN0U3RhdHMuU3RhdEV2ZW50JywgJ2dvb2cubGFicy5uZXQud2ViQ2hhbm5lbC5yZXF1ZXN0U3RhdHMuVGltaW5nRXZlbnQnXSwgWydnb29nLmV2ZW50cy5FdmVudCcsICdnb29nLmV2ZW50cy5FdmVudFRhcmdldCddLCB7fSk7Cmdvb2cuYWRkRGVwZW5kZW5jeSgnbGFicy9uZXQvd2ViY2hhbm5lbC93ZWJjaGFubmVsYmFzZS5qcycsIFsnZ29vZy5sYWJzLm5ldC53ZWJDaGFubmVsLldlYkNoYW5uZWxCYXNlJ10sIFsnZ29vZy5VcmknLCAnZ29vZy5hcnJheScsICdnb29nLmFzc2VydHMnLCAnZ29vZy5hc3luYy5ydW4nLCAnZ29vZy5qc29uJywgJ2dvb2cubGFicy5uZXQud2ViQ2hhbm5lbC5CYXNlVGVzdENoYW5uZWwnLCAnZ29vZy5sYWJzLm5ldC53ZWJDaGFubmVsLkNoYW5uZWwnLCAnZ29vZy5sYWJzLm5ldC53ZWJDaGFubmVsLkNoYW5uZWxSZXF1ZXN0JywgJ2dvb2cubGFicy5uZXQud2ViQ2hhbm5lbC5Db25uZWN0aW9uU3RhdGUnLCAnZ29vZy5sYWJzLm5ldC53ZWJDaGFubmVsLkZvcndhcmRDaGFubmVsUmVxdWVzdFBvb2wnLCAnZ29vZy5sYWJzLm5ldC53ZWJDaGFubmVsLldlYkNoYW5uZWxEZWJ1ZycsICdnb29nLmxhYnMubmV0LndlYkNoYW5uZWwuV2lyZScsICdnb29nLmxhYnMubmV0LndlYkNoYW5uZWwuV2lyZVY4JywgJ2dvb2cubGFicy5uZXQud2ViQ2hhbm5lbC5uZXRVdGlscycsICdnb29nLmxhYnMubmV0LndlYkNoYW5uZWwucmVxdWVzdFN0YXRzJywgJ2dvb2cubmV0LldlYkNoYW5uZWwnLCAnZ29vZy5uZXQuWGhySW8nLCAnZ29vZy5uZXQuWG1sSHR0cEZhY3RvcnknLCAnZ29vZy5uZXQucnBjLkh0dHBDb3JzJywgJ2dvb2cub2JqZWN0JywgJ2dvb2cuc3RyaW5nJywgJ2dvb2cuc3RydWN0cyddLCB7fSk7Cmdvb2cuYWRkRGVwZW5kZW5jeSgnbGFicy9uZXQvd2ViY2hhbm5lbC93ZWJjaGFubmVsYmFzZV90ZXN0LmpzJywgWydnb29nLmxhYnMubmV0LndlYkNoYW5uZWwud2ViQ2hhbm5lbEJhc2VUZXN0J10sIFsnZ29vZy5UaW1lcicsICdnb29nLmFycmF5JywgJ2dvb2cuZG9tJywgJ2dvb2cuZnVuY3Rpb25zJywgJ2dvb2cuanNvbicsICdnb29nLmxhYnMubmV0LndlYkNoYW5uZWwuQ2hhbm5lbFJlcXVlc3QnLCAnZ29vZy5sYWJzLm5ldC53ZWJDaGFubmVsLkZvcndhcmRDaGFubmVsUmVxdWVzdFBvb2wnLCAnZ29vZy5sYWJzLm5ldC53ZWJDaGFubmVsLldlYkNoYW5uZWxCYXNlJywgJ2dvb2cubGFicy5uZXQud2ViQ2hhbm5lbC5XZWJDaGFubmVsQmFzZVRyYW5zcG9ydCcsICdnb29nLmxhYnMubmV0LndlYkNoYW5uZWwuV2ViQ2hhbm5lbERlYnVnJywgJ2dvb2cubGFicy5uZXQud2ViQ2hhbm5lbC5XaXJlJywgJ2dvb2cubGFicy5uZXQud2ViQ2hhbm5lbC5uZXRVdGlscycsICdnb29nLmxhYnMubmV0LndlYkNoYW5uZWwucmVxdWVzdFN0YXRzJywgJ2dvb2cubGFicy5uZXQud2ViQ2hhbm5lbC5yZXF1ZXN0U3RhdHMuU3RhdCcsICdnb29nLnN0cnVjdHMuTWFwJywgJ2dvb2cudGVzdGluZy5Nb2NrQ2xvY2snLCAnZ29vZy50ZXN0aW5nLlByb3BlcnR5UmVwbGFjZXInLCAnZ29vZy50ZXN0aW5nLmFzc2VydHMnLCAnZ29vZy50ZXN0aW5nLnRlc3RTdWl0ZSddLCB7J2xhbmcnOiAnZXM2JywgJ21vZHVsZSc6ICdnb29nJ30pOwpnb29nLmFkZERlcGVuZGVuY3koJ2xhYnMvbmV0L3dlYmNoYW5uZWwvd2ViY2hhbm5lbGJhc2V0cmFuc3BvcnQuanMnLCBbJ2dvb2cubGFicy5uZXQud2ViQ2hhbm5lbC5XZWJDaGFubmVsQmFzZVRyYW5zcG9ydCddLCBbJ2dvb2cuYXNzZXJ0cycsICdnb29nLmV2ZW50cy5FdmVudFRhcmdldCcsICdnb29nLmpzb24nLCAnZ29vZy5sYWJzLm5ldC53ZWJDaGFubmVsLkNoYW5uZWxSZXF1ZXN0JywgJ2dvb2cubGFicy5uZXQud2ViQ2hhbm5lbC5XZWJDaGFubmVsQmFzZScsICdnb29nLmxhYnMubmV0LndlYkNoYW5uZWwuV2lyZScsICdnb29nLmxvZycsICdnb29nLm5ldC5XZWJDaGFubmVsJywgJ2dvb2cubmV0LldlYkNoYW5uZWxUcmFuc3BvcnQnLCAnZ29vZy5vYmplY3QnLCAnZ29vZy5zdHJpbmcnLCAnZ29vZy5zdHJpbmcucGF0aCddLCB7fSk7Cmdvb2cuYWRkRGVwZW5kZW5jeSgnbGFicy9uZXQvd2ViY2hhbm5lbC93ZWJjaGFubmVsYmFzZXRyYW5zcG9ydF90ZXN0LmpzJywgWydnb29nLmxhYnMubmV0LndlYkNoYW5uZWwud2ViQ2hhbm5lbEJhc2VUcmFuc3BvcnRUZXN0J10sIFsnZ29vZy5ldmVudHMnLCAnZ29vZy5mdW5jdGlvbnMnLCAnZ29vZy5qc29uJywgJ2dvb2cubGFicy5uZXQud2ViQ2hhbm5lbC5DaGFubmVsUmVxdWVzdCcsICdnb29nLmxhYnMubmV0LndlYkNoYW5uZWwuV2ViQ2hhbm5lbEJhc2UnLCAnZ29vZy5sYWJzLm5ldC53ZWJDaGFubmVsLldlYkNoYW5uZWxCYXNlVHJhbnNwb3J0JywgJ2dvb2cubGFicy5uZXQud2ViQ2hhbm5lbC5XaXJlJywgJ2dvb2cubmV0LldlYkNoYW5uZWwnLCAnZ29vZy50ZXN0aW5nLlByb3BlcnR5UmVwbGFjZXInLCAnZ29vZy50ZXN0aW5nLnRlc3RTdWl0ZSddLCB7J2xhbmcnOiAnZXM2JywgJ21vZHVsZSc6ICdnb29nJ30pOwpnb29nLmFkZERlcGVuZGVuY3koJ2xhYnMvbmV0L3dlYmNoYW5uZWwvd2ViY2hhbm5lbGRlYnVnLmpzJywgWydnb29nLmxhYnMubmV0LndlYkNoYW5uZWwuV2ViQ2hhbm5lbERlYnVnJ10sIFsnZ29vZy5qc29uJywgJ2dvb2cubG9nJ10sIHt9KTsKZ29vZy5hZGREZXBlbmRlbmN5KCdsYWJzL25ldC93ZWJjaGFubmVsL3dpcmUuanMnLCBbJ2dvb2cubGFicy5uZXQud2ViQ2hhbm5lbC5XaXJlJ10sIFtdLCB7J2xhbmcnOiAnZXM2J30pOwpnb29nLmFkZERlcGVuZGVuY3koJ2xhYnMvbmV0L3dlYmNoYW5uZWwvd2lyZXY4LmpzJywgWydnb29nLmxhYnMubmV0LndlYkNoYW5uZWwuV2lyZVY4J10sIFsnZ29vZy5hc3NlcnRzJywgJ2dvb2cuanNvbicsICdnb29nLmpzb24uTmF0aXZlSnNvblByb2Nlc3NvcicsICdnb29nLmxhYnMubmV0LndlYkNoYW5uZWwuV2lyZScsICdnb29nLnN0cnVjdHMnXSwge30pOwpnb29nLmFkZERlcGVuZGVuY3koJ2xhYnMvbmV0L3dlYmNoYW5uZWwvd2lyZXY4X3Rlc3QuanMnLCBbJ2dvb2cubGFicy5uZXQud2ViQ2hhbm5lbC5XaXJlVjhUZXN0J10sIFsnZ29vZy5sYWJzLm5ldC53ZWJDaGFubmVsLldpcmVWOCcsICdnb29nLnRlc3RpbmcudGVzdFN1aXRlJ10sIHsnbGFuZyc6ICdlczYnLCAnbW9kdWxlJzogJ2dvb2cnfSk7Cmdvb2cuYWRkRGVwZW5kZW5jeSgnbGFicy9uZXQvd2ViY2hhbm5lbHRyYW5zcG9ydC5qcycsIFsnZ29vZy5uZXQuV2ViQ2hhbm5lbFRyYW5zcG9ydCddLCBbXSwge30pOwpnb29nLmFkZERlcGVuZGVuY3koJ2xhYnMvbmV0L3dlYmNoYW5uZWx0cmFuc3BvcnRmYWN0b3J5LmpzJywgWydnb29nLm5ldC5jcmVhdGVXZWJDaGFubmVsVHJhbnNwb3J0J10sIFsnZ29vZy5mdW5jdGlvbnMnLCAnZ29vZy5sYWJzLm5ldC53ZWJDaGFubmVsLldlYkNoYW5uZWxCYXNlVHJhbnNwb3J0J10sIHt9KTsKZ29vZy5hZGREZXBlbmRlbmN5KCdsYWJzL25ldC94aHIuanMnLCBbJ2dvb2cubGFicy5uZXQueGhyJywgJ2dvb2cubGFicy5uZXQueGhyLkVycm9yJywgJ2dvb2cubGFicy5uZXQueGhyLkh0dHBFcnJvcicsICdnb29nLmxhYnMubmV0Lnhoci5PcHRpb25zJywgJ2dvb2cubGFicy5uZXQueGhyLlBvc3REYXRhJywgJ2dvb2cubGFicy5uZXQueGhyLlJlc3BvbnNlVHlwZScsICdnb29nLmxhYnMubmV0Lnhoci5UaW1lb3V0RXJyb3InXSwgWydnb29nLlByb21pc2UnLCAnZ29vZy5hc3NlcnRzJywgJ2dvb2cuZGVidWcuRXJyb3InLCAnZ29vZy5uZXQuSHR0cFN0YXR1cycsICdnb29nLm5ldC5YbWxIdHRwJywgJ2dvb2cub2JqZWN0JywgJ2dvb2cuc3RyaW5nJywgJ2dvb2cudXJpLnV0aWxzJywgJ2dvb2cudXNlckFnZW50J10sIHt9KTsKZ29vZy5hZGREZXBlbmRlbmN5KCdsYWJzL25ldC94aHJfdGVzdC5qcycsIFsnZ29vZy5sYWJzLm5ldC54aHJUZXN0J10sIFsnZ29vZy5Qcm9taXNlJywgJ2dvb2cuZXZlbnRzJywgJ2dvb2cuZXZlbnRzLkV2ZW50VHlwZScsICdnb29nLmxhYnMubmV0LnhocicsICdnb29nLm5ldC5XcmFwcGVyWG1sSHR0cEZhY3RvcnknLCAnZ29vZy5uZXQuWGhyTGlrZScsICdnb29nLm5ldC5YbWxIdHRwJywgJ2dvb2cudGVzdGluZy5Nb2NrQ2xvY2snLCAnZ29vZy50ZXN0aW5nLlRlc3RDYXNlJywgJ2dvb2cudGVzdGluZy5qc3VuaXQnLCAnZ29vZy51c2VyQWdlbnQnXSwgeydsYW5nJzogJ2VzNid9KTsKZ29vZy5hZGREZXBlbmRlbmN5KCdsYWJzL3B1YnN1Yi9icm9hZGNhc3RwdWJzdWIuanMnLCBbJ2dvb2cubGFicy5wdWJzdWIuQnJvYWRjYXN0UHViU3ViJ10sIFsnZ29vZy5EaXNwb3NhYmxlJywgJ2dvb2cuVGltZXInLCAnZ29vZy5hcnJheScsICdnb29nLmFzeW5jLnJ1bicsICdnb29nLmV2ZW50cy5FdmVudEhhbmRsZXInLCAnZ29vZy5ldmVudHMuRXZlbnRUeXBlJywgJ2dvb2cubG9nJywgJ2dvb2cubWF0aCcsICdnb29nLnB1YnN1Yi5QdWJTdWInLCAnZ29vZy5zdG9yYWdlLlN0b3JhZ2UnLCAnZ29vZy5zdG9yYWdlLm1lY2hhbmlzbS5IVE1MNUxvY2FsU3RvcmFnZScsICdnb29nLnN0cmluZycsICdnb29nLnVzZXJBZ2VudCddLCB7fSk7Cmdvb2cuYWRkRGVwZW5kZW5jeSgnbGFicy9wdWJzdWIvYnJvYWRjYXN0cHVic3ViX3Rlc3QuanMnLCBbJ2dvb2cubGFicy5wdWJzdWIuQnJvYWRjYXN0UHViU3ViVGVzdCddLCBbJ2dvb2cuYXJyYXknLCAnZ29vZy5kZWJ1Zy5Mb2dnZXInLCAnZ29vZy5qc29uJywgJ2dvb2cubGFicy5wdWJzdWIuQnJvYWRjYXN0UHViU3ViJywgJ2dvb2cuc3RvcmFnZS5TdG9yYWdlJywgJ2dvb2cuc3RydWN0cy5NYXAnLCAnZ29vZy50ZXN0aW5nLk1vY2tDbG9jaycsICdnb29nLnRlc3RpbmcuTW9ja0NvbnRyb2wnLCAnZ29vZy50ZXN0aW5nLmV2ZW50cycsICdnb29nLnRlc3RpbmcuZXZlbnRzLkV2ZW50JywgJ2dvb2cudGVzdGluZy5tb2NrbWF0Y2hlcnMnLCAnZ29vZy50ZXN0aW5nLm1vY2ttYXRjaGVycy5Bcmd1bWVudE1hdGNoZXInLCAnZ29vZy50ZXN0aW5nLnJlY29yZEZ1bmN0aW9uJywgJ2dvb2cudGVzdGluZy50ZXN0U3VpdGUnLCAnZ29vZy51c2VyQWdlbnQnXSwgeydsYW5nJzogJ2VzNicsICdtb2R1bGUnOiAnZ29vZyd9KTsKZ29vZy5hZGREZXBlbmRlbmN5KCdsYWJzL3N0b3JhZ2UvYm91bmRlZGNvbGxlY3RhYmxlc3RvcmFnZS5qcycsIFsnZ29vZy5sYWJzLnN0b3JhZ2UuQm91bmRlZENvbGxlY3RhYmxlU3RvcmFnZSddLCBbJ2dvb2cuYXJyYXknLCAnZ29vZy5hc3NlcnRzJywgJ2dvb2cuaXRlcicsICdnb29nLnN0b3JhZ2UuQ29sbGVjdGFibGVTdG9yYWdlJywgJ2dvb2cuc3RvcmFnZS5FcnJvckNvZGUnLCAnZ29vZy5zdG9yYWdlLkV4cGlyaW5nU3RvcmFnZSddLCB7fSk7Cmdvb2cuYWRkRGVwZW5kZW5jeSgnbGFicy9zdG9yYWdlL2JvdW5kZWRjb2xsZWN0YWJsZXN0b3JhZ2VfdGVzdC5qcycsIFsnZ29vZy5sYWJzLnN0b3JhZ2UuQm91bmRlZENvbGxlY3RhYmxlU3RvcmFnZVRlc3QnXSwgWydnb29nLmxhYnMuc3RvcmFnZS5Cb3VuZGVkQ29sbGVjdGFibGVTdG9yYWdlJywgJ2dvb2cuc3RvcmFnZS5jb2xsZWN0YWJsZVN0b3JhZ2VUZXN0ZXInLCAnZ29vZy5zdG9yYWdlLnN0b3JhZ2VUZXN0ZXInLCAnZ29vZy50ZXN0aW5nLk1vY2tDbG9jaycsICdnb29nLnRlc3Rpbmcuc3RvcmFnZS5GYWtlTWVjaGFuaXNtJywgJ2dvb2cudGVzdGluZy50ZXN0U3VpdGUnXSwgeydsYW5nJzogJ2VzNicsICdtb2R1bGUnOiAnZ29vZyd9KTsKZ29vZy5hZGREZXBlbmRlbmN5KCdsYWJzL3N0cnVjdHMvbXVsdGltYXAuanMnLCBbJ2dvb2cubGFicy5zdHJ1Y3RzLk11bHRpbWFwJ10sIFsnZ29vZy5hcnJheScsICdnb29nLm9iamVjdCddLCB7J2xhbmcnOiAnZXM2J30pOwpnb29nLmFkZERlcGVuZGVuY3koJ2xhYnMvc3RydWN0cy9tdWx0aW1hcF90ZXN0LmpzJywgWydnb29nLmxhYnMuc3RydWN0cy5NdWx0aW1hcFRlc3QnXSwgWydnb29nLmxhYnMuc3RydWN0cy5NdWx0aW1hcCcsICdnb29nLnRlc3RpbmcudGVzdFN1aXRlJywgJ2dvb2cudXNlckFnZW50J10sIHsnbGFuZyc6ICdlczYnLCAnbW9kdWxlJzogJ2dvb2cnfSk7Cmdvb2cuYWRkRGVwZW5kZW5jeSgnbGFicy9zdHlsZS9waXhlbGRlbnNpdHltb25pdG9yLmpzJywgWydnb29nLmxhYnMuc3R5bGUuUGl4ZWxEZW5zaXR5TW9uaXRvcicsICdnb29nLmxhYnMuc3R5bGUuUGl4ZWxEZW5zaXR5TW9uaXRvci5EZW5zaXR5JywgJ2dvb2cubGFicy5zdHlsZS5QaXhlbERlbnNpdHlNb25pdG9yLkV2ZW50VHlwZSddLCBbJ2dvb2cuZXZlbnRzJywgJ2dvb2cuZXZlbnRzLkV2ZW50VGFyZ2V0J10sIHt9KTsKZ29vZy5hZGREZXBlbmRlbmN5KCdsYWJzL3N0eWxlL3BpeGVsZGVuc2l0eW1vbml0b3JfdGVzdC5qcycsIFsnZ29vZy5sYWJzLnN0eWxlLlBpeGVsRGVuc2l0eU1vbml0b3JUZXN0J10sIFsnZ29vZy5hcnJheScsICdnb29nLmRvbS5Eb21IZWxwZXInLCAnZ29vZy5ldmVudHMnLCAnZ29vZy5sYWJzLnN0eWxlLlBpeGVsRGVuc2l0eU1vbml0b3InLCAnZ29vZy50ZXN0aW5nLk1vY2tDb250cm9sJywgJ2dvb2cudGVzdGluZy5yZWNvcmRGdW5jdGlvbicsICdnb29nLnRlc3RpbmcudGVzdFN1aXRlJ10sIHsnbGFuZyc6ICdlczYnLCAnbW9kdWxlJzogJ2dvb2cnfSk7Cmdvb2cuYWRkRGVwZW5kZW5jeSgnbGFicy90ZXN0aW5nL2Fzc2VydHRoYXQuanMnLCBbJ2dvb2cubGFicy50ZXN0aW5nLk1hdGNoZXJFcnJvcicsICdnb29nLmxhYnMudGVzdGluZy5hc3NlcnRUaGF0J10sIFsnZ29vZy5kZWJ1Zy5FcnJvciddLCB7fSk7Cmdvb2cuYWRkRGVwZW5kZW5jeSgnbGFicy90ZXN0aW5nL2Fzc2VydHRoYXRfdGVzdC5qcycsIFsnZ29vZy5sYWJzLnRlc3RpbmcuYXNzZXJ0VGhhdFRlc3QnXSwgWydnb29nLmxhYnMudGVzdGluZy5NYXRjaGVyRXJyb3InLCAnZ29vZy5sYWJzLnRlc3RpbmcuYXNzZXJ0VGhhdCcsICdnb29nLnRlc3RpbmcucmVjb3JkRnVuY3Rpb24nLCAnZ29vZy50ZXN0aW5nLnRlc3RTdWl0ZSddLCB7J2xhbmcnOiAnZXM2JywgJ21vZHVsZSc6ICdnb29nJ30pOwpnb29nLmFkZERlcGVuZGVuY3koJ2xhYnMvdGVzdGluZy9kZWNvcmF0b3JtYXRjaGVyLmpzJywgWydnb29nLmxhYnMudGVzdGluZy5Bbnl0aGluZ01hdGNoZXInXSwgWydnb29nLmxhYnMudGVzdGluZy5NYXRjaGVyJ10sIHt9KTsKZ29vZy5hZGREZXBlbmRlbmN5KCdsYWJzL3Rlc3RpbmcvZGVjb3JhdG9ybWF0Y2hlcl90ZXN0LmpzJywgWydnb29nLmxhYnMudGVzdGluZy5kZWNvcmF0b3JNYXRjaGVyVGVzdCddLCBbJ2dvb2cubGFicy50ZXN0aW5nLkFueXRoaW5nTWF0Y2hlcicsICdnb29nLmxhYnMudGVzdGluZy5HcmVhdGVyVGhhbk1hdGNoZXInLCAnZ29vZy5sYWJzLnRlc3RpbmcuTWF0Y2hlckVycm9yJywgJ2dvb2cubGFicy50ZXN0aW5nLmFzc2VydFRoYXQnLCAnZ29vZy50ZXN0aW5nLnRlc3RTdWl0ZSddLCB7J2xhbmcnOiAnZXM2JywgJ21vZHVsZSc6ICdnb29nJ30pOwpnb29nLmFkZERlcGVuZGVuY3koJ2xhYnMvdGVzdGluZy9kaWN0aW9uYXJ5bWF0Y2hlci5qcycsIFsnZ29vZy5sYWJzLnRlc3RpbmcuSGFzRW50cmllc01hdGNoZXInLCAnZ29vZy5sYWJzLnRlc3RpbmcuSGFzRW50cnlNYXRjaGVyJywgJ2dvb2cubGFicy50ZXN0aW5nLkhhc0tleU1hdGNoZXInLCAnZ29vZy5sYWJzLnRlc3RpbmcuSGFzVmFsdWVNYXRjaGVyJ10sIFsnZ29vZy5hc3NlcnRzJywgJ2dvb2cubGFicy50ZXN0aW5nLk1hdGNoZXInLCAnZ29vZy5vYmplY3QnXSwge30pOwpnb29nLmFkZERlcGVuZGVuY3koJ2xhYnMvdGVzdGluZy9kaWN0aW9uYXJ5bWF0Y2hlcl90ZXN0LmpzJywgWydnb29nLmxhYnMudGVzdGluZy5kaWN0aW9uYXJ5TWF0Y2hlclRlc3QnXSwgWydnb29nLmxhYnMudGVzdGluZy5IYXNFbnRyeU1hdGNoZXInLCAnZ29vZy5sYWJzLnRlc3RpbmcuTWF0Y2hlckVycm9yJywgJ2dvb2cubGFicy50ZXN0aW5nLmFzc2VydFRoYXQnLCAnZ29vZy50ZXN0aW5nLnRlc3RTdWl0ZSddLCB7J2xhbmcnOiAnZXM2JywgJ21vZHVsZSc6ICdnb29nJ30pOwpnb29nLmFkZERlcGVuZGVuY3koJ2xhYnMvdGVzdGluZy9lbnZpcm9ubWVudC5qcycsIFsnZ29vZy5sYWJzLnRlc3RpbmcuRW52aXJvbm1lbnQnXSwgWydnb29nLlRoZW5hYmxlJywgJ2dvb2cuYXJyYXknLCAnZ29vZy5hc3NlcnRzJywgJ2dvb2cuZGVidWcuQ29uc29sZScsICdnb29nLnRlc3RpbmcuTW9ja0Nsb2NrJywgJ2dvb2cudGVzdGluZy5Nb2NrQ29udHJvbCcsICdnb29nLnRlc3RpbmcuUHJvcGVydHlSZXBsYWNlcicsICdnb29nLnRlc3RpbmcuVGVzdENhc2UnLCAnZ29vZy50ZXN0aW5nLmpzdW5pdCddLCB7J2xhbmcnOiAnZXM2J30pOwpnb29nLmFkZERlcGVuZGVuY3koJ2xhYnMvdGVzdGluZy9lbnZpcm9ubWVudF90ZXN0LmpzJywgWydnb29nLmxhYnMudGVzdGluZy5lbnZpcm9ubWVudFRlc3QnXSwgWydnb29nLmFzc2VydHMnLCAnZ29vZy5sYWJzLnRlc3RpbmcuRW52aXJvbm1lbnQnLCAnZ29vZy50ZXN0aW5nLk1vY2tDb250cm9sJywgJ2dvb2cudGVzdGluZy5Qcm9wZXJ0eVJlcGxhY2VyJywgJ2dvb2cudGVzdGluZy5UZXN0Q2FzZScsICdnb29nLnRlc3RpbmcudGVzdFN1aXRlJ10sIHsnbGFuZyc6ICdlczgnLCAnbW9kdWxlJzogJ2dvb2cnfSk7Cmdvb2cuYWRkRGVwZW5kZW5jeSgnbGFicy90ZXN0aW5nL2Vudmlyb25tZW50X3VzYWdlX3Rlc3QuanMnLCBbJ2dvb2cubGFicy50ZXN0aW5nLmVudmlyb25tZW50VXNhZ2VUZXN0J10sIFsnZ29vZy5sYWJzLnRlc3RpbmcuRW52aXJvbm1lbnQnLCAnZ29vZy50ZXN0aW5nLnRlc3RTdWl0ZSddLCB7J2xhbmcnOiAnZXM2JywgJ21vZHVsZSc6ICdnb29nJ30pOwpnb29nLmFkZERlcGVuZGVuY3koJ2xhYnMvdGVzdGluZy9qc29uX2Z1enppbmcuanMnLCBbJ2dvb2cubGFicy50ZXN0aW5nLkpzb25GdXp6aW5nJ10sIFsnZ29vZy5zdHJpbmcnLCAnZ29vZy50ZXN0aW5nLlBzZXVkb1JhbmRvbSddLCB7fSk7Cmdvb2cuYWRkRGVwZW5kZW5jeSgnbGFicy90ZXN0aW5nL2pzb25fZnV6emluZ190ZXN0LmpzJywgWydnb29nLmxhYnMudGVzdGluZy5Kc29uRnV6emluZ1Rlc3QnXSwgWydnb29nLmpzb24nLCAnZ29vZy5sYWJzLnRlc3RpbmcuSnNvbkZ1enppbmcnLCAnZ29vZy50ZXN0aW5nLmFzc2VydHMnLCAnZ29vZy50ZXN0aW5nLnRlc3RTdWl0ZSddLCB7J2xhbmcnOiAnZXM2JywgJ21vZHVsZSc6ICdnb29nJ30pOwpnb29nLmFkZERlcGVuZGVuY3koJ2xhYnMvdGVzdGluZy9sb2dpY21hdGNoZXIuanMnLCBbJ2dvb2cubGFicy50ZXN0aW5nLkFsbE9mTWF0Y2hlcicsICdnb29nLmxhYnMudGVzdGluZy5BbnlPZk1hdGNoZXInLCAnZ29vZy5sYWJzLnRlc3RpbmcuSXNOb3RNYXRjaGVyJywgJ2dvb2cubGFicy50ZXN0aW5nLmxvZ2ljTWF0Y2hlcnMnXSwgWydnb29nLmFycmF5JywgJ2dvb2cubGFicy50ZXN0aW5nLk1hdGNoZXInXSwge30pOwpnb29nLmFkZERlcGVuZGVuY3koJ2xhYnMvdGVzdGluZy9sb2dpY21hdGNoZXJfdGVzdC5qcycsIFsnZ29vZy5sYWJzLnRlc3RpbmcubG9naWNNYXRjaGVyVGVzdCddLCBbJ2dvb2cubGFicy50ZXN0aW5nLkFsbE9mTWF0Y2hlcicsICdnb29nLmxhYnMudGVzdGluZy5HcmVhdGVyVGhhbk1hdGNoZXInLCAnZ29vZy5sYWJzLnRlc3RpbmcuTWF0Y2hlckVycm9yJywgJ2dvb2cubGFicy50ZXN0aW5nLmFzc2VydFRoYXQnLCAnZ29vZy50ZXN0aW5nLnRlc3RTdWl0ZSddLCB7J2xhbmcnOiAnZXM2JywgJ21vZHVsZSc6ICdnb29nJ30pOwpnb29nLmFkZERlcGVuZGVuY3koJ2xhYnMvdGVzdGluZy9tYXRjaGVyLmpzJywgWydnb29nLmxhYnMudGVzdGluZy5NYXRjaGVyJ10sIFtdLCB7J2xhbmcnOiAnZXM2J30pOwpnb29nLmFkZERlcGVuZGVuY3koJ2xhYnMvdGVzdGluZy9udW1iZXJtYXRjaGVyLmpzJywgWydnb29nLmxhYnMudGVzdGluZy5BbnlOdW1iZXJNYXRjaGVyJywgJ2dvb2cubGFicy50ZXN0aW5nLkNsb3NlVG9NYXRjaGVyJywgJ2dvb2cubGFicy50ZXN0aW5nLkVxdWFsVG9NYXRjaGVyJywgJ2dvb2cubGFicy50ZXN0aW5nLkdyZWF0ZXJUaGFuRXF1YWxUb01hdGNoZXInLCAnZ29vZy5sYWJzLnRlc3RpbmcuR3JlYXRlclRoYW5NYXRjaGVyJywgJ2dvb2cubGFicy50ZXN0aW5nLkxlc3NUaGFuRXF1YWxUb01hdGNoZXInLCAnZ29vZy5sYWJzLnRlc3RpbmcuTGVzc1RoYW5NYXRjaGVyJ10sIFsnZ29vZy5hc3NlcnRzJywgJ2dvb2cubGFicy50ZXN0aW5nLk1hdGNoZXInXSwge30pOwpnb29nLmFkZERlcGVuZGVuY3koJ2xhYnMvdGVzdGluZy9udW1iZXJtYXRjaGVyX3Rlc3QuanMnLCBbJ2dvb2cubGFicy50ZXN0aW5nLm51bWJlck1hdGNoZXJUZXN0J10sIFsnZ29vZy5sYWJzLnRlc3RpbmcuTGVzc1RoYW5NYXRjaGVyJywgJ2dvb2cubGFicy50ZXN0aW5nLk1hdGNoZXJFcnJvcicsICdnb29nLmxhYnMudGVzdGluZy5hc3NlcnRUaGF0JywgJ2dvb2cudGVzdGluZy50ZXN0U3VpdGUnXSwgeydsYW5nJzogJ2VzNicsICdtb2R1bGUnOiAnZ29vZyd9KTsKZ29vZy5hZGREZXBlbmRlbmN5KCdsYWJzL3Rlc3Rpbmcvb2JqZWN0bWF0Y2hlci5qcycsIFsnZ29vZy5sYWJzLnRlc3RpbmcuQW55T2JqZWN0TWF0Y2hlcicsICdnb29nLmxhYnMudGVzdGluZy5IYXNQcm9wZXJ0eU1hdGNoZXInLCAnZ29vZy5sYWJzLnRlc3RpbmcuSW5zdGFuY2VPZk1hdGNoZXInLCAnZ29vZy5sYWJzLnRlc3RpbmcuSXNOdWxsTWF0Y2hlcicsICdnb29nLmxhYnMudGVzdGluZy5Jc051bGxPclVuZGVmaW5lZE1hdGNoZXInLCAnZ29vZy5sYWJzLnRlc3RpbmcuSXNVbmRlZmluZWRNYXRjaGVyJywgJ2dvb2cubGFicy50ZXN0aW5nLk9iamVjdEVxdWFsc01hdGNoZXInXSwgWydnb29nLmxhYnMudGVzdGluZy5NYXRjaGVyJ10sIHt9KTsKZ29vZy5hZGREZXBlbmRlbmN5KCdsYWJzL3Rlc3Rpbmcvb2JqZWN0bWF0Y2hlcl90ZXN0LmpzJywgWydnb29nLmxhYnMudGVzdGluZy5vYmplY3RNYXRjaGVyVGVzdCddLCBbJ2dvb2cubGFicy50ZXN0aW5nLk1hdGNoZXJFcnJvcicsICdnb29nLmxhYnMudGVzdGluZy5PYmplY3RFcXVhbHNNYXRjaGVyJywgJ2dvb2cubGFicy50ZXN0aW5nLmFzc2VydFRoYXQnLCAnZ29vZy50ZXN0aW5nLnRlc3RTdWl0ZSddLCB7J2xhbmcnOiAnZXM2JywgJ21vZHVsZSc6ICdnb29nJ30pOwpnb29nLmFkZERlcGVuZGVuY3koJ2xhYnMvdGVzdGluZy9zdHJpbmdtYXRjaGVyLmpzJywgWydnb29nLmxhYnMudGVzdGluZy5BbnlTdHJpbmdNYXRjaGVyJywgJ2dvb2cubGFicy50ZXN0aW5nLkNvbnRhaW5zU3RyaW5nTWF0Y2hlcicsICdnb29nLmxhYnMudGVzdGluZy5FbmRzV2l0aE1hdGNoZXInLCAnZ29vZy5sYWJzLnRlc3RpbmcuRXF1YWxUb0lnbm9yaW5nV2hpdGVzcGFjZU1hdGNoZXInLCAnZ29vZy5sYWJzLnRlc3RpbmcuRXF1YWxzTWF0Y2hlcicsICdnb29nLmxhYnMudGVzdGluZy5SZWdleE1hdGNoZXInLCAnZ29vZy5sYWJzLnRlc3RpbmcuU3RhcnRzV2l0aE1hdGNoZXInLCAnZ29vZy5sYWJzLnRlc3RpbmcuU3RyaW5nQ29udGFpbnNJbk9yZGVyTWF0Y2hlciddLCBbJ2dvb2cuYXNzZXJ0cycsICdnb29nLmxhYnMudGVzdGluZy5NYXRjaGVyJywgJ2dvb2cuc3RyaW5nJ10sIHt9KTsKZ29vZy5hZGREZXBlbmRlbmN5KCdsYWJzL3Rlc3Rpbmcvc3RyaW5nbWF0Y2hlcl90ZXN0LmpzJywgWydnb29nLmxhYnMudGVzdGluZy5zdHJpbmdNYXRjaGVyVGVzdCddLCBbJ2dvb2cubGFicy50ZXN0aW5nLk1hdGNoZXJFcnJvcicsICdnb29nLmxhYnMudGVzdGluZy5TdHJpbmdDb250YWluc0luT3JkZXJNYXRjaGVyJywgJ2dvb2cubGFicy50ZXN0aW5nLmFzc2VydFRoYXQnLCAnZ29vZy50ZXN0aW5nLnRlc3RTdWl0ZSddLCB7J2xhbmcnOiAnZXM2JywgJ21vZHVsZSc6ICdnb29nJ30pOwpnb29nLmFkZERlcGVuZGVuY3koJ2xhYnMvdXNlcmFnZW50L2Jyb3dzZXIuanMnLCBbJ2dvb2cubGFicy51c2VyQWdlbnQuYnJvd3NlciddLCBbJ2dvb2cuYXJyYXknLCAnZ29vZy5sYWJzLnVzZXJBZ2VudC51dGlsJywgJ2dvb2cub2JqZWN0JywgJ2dvb2cuc3RyaW5nLmludGVybmFsJ10sIHt9KTsKZ29vZy5hZGREZXBlbmRlbmN5KCdsYWJzL3VzZXJhZ2VudC9icm93c2VyX3Rlc3QuanMnLCBbJ2dvb2cubGFicy51c2VyQWdlbnQuYnJvd3NlclRlc3QnXSwgWydnb29nLmxhYnMudXNlckFnZW50LmJyb3dzZXInLCAnZ29vZy5sYWJzLnVzZXJBZ2VudC50ZXN0QWdlbnRzJywgJ2dvb2cubGFicy51c2VyQWdlbnQudXRpbCcsICdnb29nLm9iamVjdCcsICdnb29nLnRlc3RpbmcudGVzdFN1aXRlJ10sIHsnbGFuZyc6ICdlczYnLCAnbW9kdWxlJzogJ2dvb2cnfSk7Cmdvb2cuYWRkRGVwZW5kZW5jeSgnbGFicy91c2VyYWdlbnQvZGV2aWNlLmpzJywgWydnb29nLmxhYnMudXNlckFnZW50LmRldmljZSddLCBbJ2dvb2cubGFicy51c2VyQWdlbnQudXRpbCddLCB7fSk7Cmdvb2cuYWRkRGVwZW5kZW5jeSgnbGFicy91c2VyYWdlbnQvZGV2aWNlX3Rlc3QuanMnLCBbJ2dvb2cubGFicy51c2VyQWdlbnQuZGV2aWNlVGVzdCddLCBbJ2dvb2cubGFicy51c2VyQWdlbnQuZGV2aWNlJywgJ2dvb2cubGFicy51c2VyQWdlbnQudGVzdEFnZW50cycsICdnb29nLmxhYnMudXNlckFnZW50LnV0aWwnLCAnZ29vZy50ZXN0aW5nLnRlc3RTdWl0ZSddLCB7J2xhbmcnOiAnZXM2JywgJ21vZHVsZSc6ICdnb29nJ30pOwpnb29nLmFkZERlcGVuZGVuY3koJ2xhYnMvdXNlcmFnZW50L2VuZ2luZS5qcycsIFsnZ29vZy5sYWJzLnVzZXJBZ2VudC5lbmdpbmUnXSwgWydnb29nLmFycmF5JywgJ2dvb2cubGFicy51c2VyQWdlbnQudXRpbCcsICdnb29nLnN0cmluZyddLCB7fSk7Cmdvb2cuYWRkRGVwZW5kZW5jeSgnbGFicy91c2VyYWdlbnQvZW5naW5lX3Rlc3QuanMnLCBbJ2dvb2cubGFicy51c2VyQWdlbnQuZW5naW5lVGVzdCddLCBbJ2dvb2cubGFicy51c2VyQWdlbnQuZW5naW5lJywgJ2dvb2cubGFicy51c2VyQWdlbnQudGVzdEFnZW50cycsICdnb29nLmxhYnMudXNlckFnZW50LnV0aWwnLCAnZ29vZy50ZXN0aW5nLnRlc3RTdWl0ZSddLCB7J2xhbmcnOiAnZXM2JywgJ21vZHVsZSc6ICdnb29nJ30pOwpnb29nLmFkZERlcGVuZGVuY3koJ2xhYnMvdXNlcmFnZW50L2V4dHJhLmpzJywgWydnb29nLmxhYnMudXNlckFnZW50LmV4dHJhJ10sIFsnZ29vZy5sYWJzLnVzZXJBZ2VudC5icm93c2VyJywgJ2dvb2cubGFicy51c2VyQWdlbnQucGxhdGZvcm0nXSwgeydsYW5nJzogJ2VzNicsICdtb2R1bGUnOiAnZ29vZyd9KTsKZ29vZy5hZGREZXBlbmRlbmN5KCdsYWJzL3VzZXJhZ2VudC9leHRyYV90ZXN0LmpzJywgWydnb29nLmxhYnMudXNlckFnZW50LmV4dHJhVGVzdCddLCBbJ2dvb2cubGFicy51c2VyQWdlbnQuYnJvd3NlcicsICdnb29nLmxhYnMudXNlckFnZW50LmV4dHJhJywgJ2dvb2cubGFicy51c2VyQWdlbnQudGVzdEFnZW50cycsICdnb29nLmxhYnMudXNlckFnZW50LnV0aWwnLCAnZ29vZy50ZXN0aW5nLlByb3BlcnR5UmVwbGFjZXInLCAnZ29vZy50ZXN0aW5nLnRlc3RTdWl0ZSddLCB7J2xhbmcnOiAnZXM2JywgJ21vZHVsZSc6ICdnb29nJ30pOwpnb29nLmFkZERlcGVuZGVuY3koJ2xhYnMvdXNlcmFnZW50L3BsYXRmb3JtLmpzJywgWydnb29nLmxhYnMudXNlckFnZW50LnBsYXRmb3JtJ10sIFsnZ29vZy5sYWJzLnVzZXJBZ2VudC51dGlsJywgJ2dvb2cuc3RyaW5nJ10sIHt9KTsKZ29vZy5hZGREZXBlbmRlbmN5KCdsYWJzL3VzZXJhZ2VudC9wbGF0Zm9ybV90ZXN0LmpzJywgWydnb29nLmxhYnMudXNlckFnZW50LnBsYXRmb3JtVGVzdCddLCBbJ2dvb2cubGFicy51c2VyQWdlbnQucGxhdGZvcm0nLCAnZ29vZy5sYWJzLnVzZXJBZ2VudC50ZXN0QWdlbnRzJywgJ2dvb2cubGFicy51c2VyQWdlbnQudXRpbCcsICdnb29nLnRlc3RpbmcudGVzdFN1aXRlJ10sIHsnbGFuZyc6ICdlczYnLCAnbW9kdWxlJzogJ2dvb2cnfSk7Cmdvb2cuYWRkRGVwZW5kZW5jeSgnbGFicy91c2VyYWdlbnQvdGVzdF9hZ2VudHMuanMnLCBbJ2dvb2cubGFicy51c2VyQWdlbnQudGVzdEFnZW50cyddLCBbXSwgeydsYW5nJzogJ2VzNicsICdtb2R1bGUnOiAnZ29vZyd9KTsKZ29vZy5hZGREZXBlbmRlbmN5KCdsYWJzL3VzZXJhZ2VudC91dGlsLmpzJywgWydnb29nLmxhYnMudXNlckFnZW50LnV0aWwnXSwgWydnb29nLnN0cmluZy5pbnRlcm5hbCddLCB7fSk7Cmdvb2cuYWRkRGVwZW5kZW5jeSgnbGFicy91c2VyYWdlbnQvdXRpbF90ZXN0LmpzJywgWydnb29nLmxhYnMudXNlckFnZW50LnV0aWxUZXN0J10sIFsnZ29vZy5mdW5jdGlvbnMnLCAnZ29vZy5sYWJzLnVzZXJBZ2VudC50ZXN0QWdlbnRzJywgJ2dvb2cubGFicy51c2VyQWdlbnQudXRpbCcsICdnb29nLnRlc3RpbmcuUHJvcGVydHlSZXBsYWNlcicsICdnb29nLnRlc3RpbmcudGVzdFN1aXRlJ10sIHsnbGFuZyc6ICdlczYnLCAnbW9kdWxlJzogJ2dvb2cnfSk7Cmdvb2cuYWRkRGVwZW5kZW5jeSgnbGFicy91c2VyYWdlbnQvdmVyaWZpZXIuanMnLCBbJ2dvb2cubGFicy51c2VyYWdlbnQudmVyaWZpZXInXSwgW10sIHsnbGFuZyc6ICdlczYnfSk7Cmdvb2cuYWRkRGVwZW5kZW5jeSgnbGFicy91c2VyYWdlbnQvdmVyaWZpZXJfdGVzdC5qcycsIFsnZ29vZy5sYWJzLnVzZXJhZ2VudC52ZXJpZmllclRlc3QnXSwgWydnb29nLmxhYnMudXNlckFnZW50LmJyb3dzZXInLCAnZ29vZy5sYWJzLnVzZXJhZ2VudC52ZXJpZmllcicsICdnb29nLnRlc3RpbmcudGVzdFN1aXRlJ10sIHsnbGFuZyc6ICdlczYnLCAnbW9kdWxlJzogJ2dvb2cnfSk7Cmdvb2cuYWRkRGVwZW5kZW5jeSgnbG9hZGVyL2Fic3RyYWN0bW9kdWxlbWFuYWdlci5qcycsIFsnZ29vZy5sb2FkZXIuQWJzdHJhY3RNb2R1bGVNYW5hZ2VyJywgJ2dvb2cubG9hZGVyLkFic3RyYWN0TW9kdWxlTWFuYWdlci5DYWxsYmFja1R5cGUnLCAnZ29vZy5sb2FkZXIuQWJzdHJhY3RNb2R1bGVNYW5hZ2VyLkZhaWx1cmVUeXBlJ10sIFsnZ29vZy5tb2R1bGUuQWJzdHJhY3RNb2R1bGVMb2FkZXInLCAnZ29vZy5tb2R1bGUuTW9kdWxlSW5mbycsICdnb29nLm1vZHVsZS5Nb2R1bGVMb2FkQ2FsbGJhY2snXSwge30pOwpnb29nLmFkZERlcGVuZGVuY3koJ2xvYWRlci9hY3RpdmVtb2R1bGVtYW5hZ2VyLmpzJywgWydnb29nLmxvYWRlci5hY3RpdmVNb2R1bGVNYW5hZ2VyJ10sIFsnZ29vZy5hc3NlcnRzJywgJ2dvb2cubG9hZGVyLkFic3RyYWN0TW9kdWxlTWFuYWdlciddLCB7J2xhbmcnOiAnZXM2JywgJ21vZHVsZSc6ICdnb29nJ30pOwpnb29nLmFkZERlcGVuZGVuY3koJ2xvY2FsZS9jb3VudHJpZXMuanMnLCBbJ2dvb2cubG9jYWxlLmNvdW50cmllcyddLCBbXSwge30pOwpnb29nLmFkZERlcGVuZGVuY3koJ2xvY2FsZS9jb3VudHJ5bGFuZ3VhZ2VuYW1lc190ZXN0LmpzJywgWydnb29nLmxvY2FsZS5jb3VudHJ5TGFuZ3VhZ2VOYW1lc1Rlc3QnXSwgWydnb29nLmxvY2FsZScsICdnb29nLnRlc3RpbmcudGVzdFN1aXRlJ10sIHsnbGFuZyc6ICdlczYnLCAnbW9kdWxlJzogJ2dvb2cnfSk7Cmdvb2cuYWRkRGVwZW5kZW5jeSgnbG9jYWxlL2RlZmF1bHRsb2NhbGVuYW1lY29uc3RhbnRzLmpzJywgWydnb29nLmxvY2FsZS5kZWZhdWx0TG9jYWxlTmFtZUNvbnN0YW50cyddLCBbXSwge30pOwpnb29nLmFkZERlcGVuZGVuY3koJ2xvY2FsZS9nZW5lcmljZm9udG5hbWVzLmpzJywgWydnb29nLmxvY2FsZS5nZW5lcmljRm9udE5hbWVzJ10sIFtdLCB7fSk7Cmdvb2cuYWRkRGVwZW5kZW5jeSgnbG9jYWxlL2dlbmVyaWNmb250bmFtZXNfdGVzdC5qcycsIFsnZ29vZy5sb2NhbGUuZ2VuZXJpY0ZvbnROYW1lc1Rlc3QnXSwgWydnb29nLmxvY2FsZS5nZW5lcmljRm9udE5hbWVzJywgJ2dvb2cudGVzdGluZy50ZXN0U3VpdGUnXSwgeydsYW5nJzogJ2VzNicsICdtb2R1bGUnOiAnZ29vZyd9KTsKZ29vZy5hZGREZXBlbmRlbmN5KCdsb2NhbGUvZ2VuZXJpY2ZvbnRuYW1lc2RhdGEuanMnLCBbJ2dvb2cubG9jYWxlLmdlbmVyaWNGb250TmFtZXNEYXRhJ10sIFtdLCB7fSk7Cmdvb2cuYWRkRGVwZW5kZW5jeSgnbG9jYWxlL2xvY2FsZS5qcycsIFsnZ29vZy5sb2NhbGUnXSwgWydnb29nLmxvY2FsZS5uYXRpdmVOYW1lQ29uc3RhbnRzJ10sIHt9KTsKZ29vZy5hZGREZXBlbmRlbmN5KCdsb2NhbGUvbmF0aXZlbmFtZWNvbnN0YW50cy5qcycsIFsnZ29vZy5sb2NhbGUubmF0aXZlTmFtZUNvbnN0YW50cyddLCBbXSwge30pOwpnb29nLmFkZERlcGVuZGVuY3koJ2xvY2FsZS9zY3JpcHRUb0xhbmd1YWdlcy5qcycsIFsnZ29vZy5sb2NhbGUuc2NyaXB0VG9MYW5ndWFnZXMnXSwgWydnb29nLmxvY2FsZSddLCB7fSk7Cmdvb2cuYWRkRGVwZW5kZW5jeSgnbG9jYWxlL3RpbWV6b25lZGV0ZWN0aW9uLmpzJywgWydnb29nLmxvY2FsZS50aW1lWm9uZURldGVjdGlvbiddLCBbJ2dvb2cubG9jYWxlLlRpbWVab25lRmluZ2VycHJpbnQnXSwge30pOwpnb29nLmFkZERlcGVuZGVuY3koJ2xvY2FsZS90aW1lem9uZWRldGVjdGlvbl90ZXN0LmpzJywgWydnb29nLmxvY2FsZS50aW1lWm9uZURldGVjdGlvblRlc3QnXSwgWydnb29nLmxvY2FsZS50aW1lWm9uZURldGVjdGlvbicsICdnb29nLnRlc3RpbmcudGVzdFN1aXRlJ10sIHsnbGFuZyc6ICdlczYnLCAnbW9kdWxlJzogJ2dvb2cnfSk7Cmdvb2cuYWRkRGVwZW5kZW5jeSgnbG9jYWxlL3RpbWV6b25lZmluZ2VycHJpbnQuanMnLCBbJ2dvb2cubG9jYWxlLlRpbWVab25lRmluZ2VycHJpbnQnXSwgW10sIHt9KTsKZ29vZy5hZGREZXBlbmRlbmN5KCdsb2NhbGUvdGltZXpvbmVsaXN0LmpzJywgWydnb29nLmxvY2FsZS5UaW1lWm9uZUxpc3QnLCAnZ29vZy5sb2NhbGUuZ2V0VGltZVpvbmVBbGxMb25nTmFtZXMnLCAnZ29vZy5sb2NhbGUuZ2V0VGltZVpvbmVTZWxlY3RlZExvbmdOYW1lcycsICdnb29nLmxvY2FsZS5nZXRUaW1lWm9uZVNlbGVjdGVkU2hvcnROYW1lcyddLCBbJ2dvb2cubG9jYWxlJ10sIHt9KTsKZ29vZy5hZGREZXBlbmRlbmN5KCdsb2NhbGUvdGltZXpvbmVsaXN0X3Rlc3QuanMnLCBbJ2dvb2cubG9jYWxlLlRpbWVab25lTGlzdFRlc3QnXSwgWydnb29nLmxvY2FsZScsICdnb29nLmxvY2FsZS5UaW1lWm9uZUxpc3QnLCAnZ29vZy50ZXN0aW5nLnRlc3RTdWl0ZSddLCB7J2xhbmcnOiAnZXM2JywgJ21vZHVsZSc6ICdnb29nJ30pOwpnb29nLmFkZERlcGVuZGVuY3koJ2xvZy9sb2cuanMnLCBbJ2dvb2cubG9nJywgJ2dvb2cubG9nLkxldmVsJywgJ2dvb2cubG9nLkxvZ1JlY29yZCcsICdnb29nLmxvZy5Mb2dnZXInXSwgWydnb29nLmRlYnVnJywgJ2dvb2cuZGVidWcuTG9nTWFuYWdlcicsICdnb29nLmRlYnVnLkxvZ1JlY29yZCcsICdnb29nLmRlYnVnLkxvZ2dlciddLCB7fSk7Cmdvb2cuYWRkRGVwZW5kZW5jeSgnbG9nL2xvZ190ZXN0LmpzJywgWydnb29nLmxvZ1Rlc3QnXSwgWydnb29nLmRlYnVnLkxvZ01hbmFnZXInLCAnZ29vZy5sb2cnLCAnZ29vZy5sb2cuTGV2ZWwnLCAnZ29vZy50ZXN0aW5nLnRlc3RTdWl0ZSddLCB7J2xhbmcnOiAnZXM2JywgJ21vZHVsZSc6ICdnb29nJ30pOwpnb29nLmFkZERlcGVuZGVuY3koJ21hdGgvYWZmaW5ldHJhbnNmb3JtLmpzJywgWydnb29nLm1hdGguQWZmaW5lVHJhbnNmb3JtJ10sIFtdLCB7J2xhbmcnOiAnZXM2J30pOwpnb29nLmFkZERlcGVuZGVuY3koJ21hdGgvYWZmaW5ldHJhbnNmb3JtX3Rlc3QuanMnLCBbJ2dvb2cubWF0aC5BZmZpbmVUcmFuc2Zvcm1UZXN0J10sIFsnZ29vZy5hcnJheScsICdnb29nLm1hdGgnLCAnZ29vZy5tYXRoLkFmZmluZVRyYW5zZm9ybScsICdnb29nLnRlc3RpbmcudGVzdFN1aXRlJ10sIHsnbGFuZyc6ICdlczYnLCAnbW9kdWxlJzogJ2dvb2cnfSk7Cmdvb2cuYWRkRGVwZW5kZW5jeSgnbWF0aC9iZXppZXIuanMnLCBbJ2dvb2cubWF0aC5CZXppZXInXSwgWydnb29nLm1hdGgnLCAnZ29vZy5tYXRoLkNvb3JkaW5hdGUnXSwge30pOwpnb29nLmFkZERlcGVuZGVuY3koJ21hdGgvYmV6aWVyX3Rlc3QuanMnLCBbJ2dvb2cubWF0aC5CZXppZXJUZXN0J10sIFsnZ29vZy5tYXRoJywgJ2dvb2cubWF0aC5CZXppZXInLCAnZ29vZy5tYXRoLkNvb3JkaW5hdGUnLCAnZ29vZy50ZXN0aW5nLnRlc3RTdWl0ZSddLCB7J2xhbmcnOiAnZXM2JywgJ21vZHVsZSc6ICdnb29nJ30pOwpnb29nLmFkZERlcGVuZGVuY3koJ21hdGgvYm94LmpzJywgWydnb29nLm1hdGguQm94J10sIFsnZ29vZy5hc3NlcnRzJywgJ2dvb2cubWF0aC5Db29yZGluYXRlJ10sIHt9KTsKZ29vZy5hZGREZXBlbmRlbmN5KCdtYXRoL2JveF90ZXN0LmpzJywgWydnb29nLm1hdGguQm94VGVzdCddLCBbJ2dvb2cubWF0aC5Cb3gnLCAnZ29vZy5tYXRoLkNvb3JkaW5hdGUnLCAnZ29vZy50ZXN0aW5nLnRlc3RTdWl0ZSddLCB7J2xhbmcnOiAnZXM2JywgJ21vZHVsZSc6ICdnb29nJ30pOwpnb29nLmFkZERlcGVuZGVuY3koJ21hdGgvY29vcmRpbmF0ZS5qcycsIFsnZ29vZy5tYXRoLkNvb3JkaW5hdGUnXSwgWydnb29nLm1hdGgnXSwge30pOwpnb29nLmFkZERlcGVuZGVuY3koJ21hdGgvY29vcmRpbmF0ZTMuanMnLCBbJ2dvb2cubWF0aC5Db29yZGluYXRlMyddLCBbXSwgeydsYW5nJzogJ2VzNid9KTsKZ29vZy5hZGREZXBlbmRlbmN5KCdtYXRoL2Nvb3JkaW5hdGUzX3Rlc3QuanMnLCBbJ2dvb2cubWF0aC5Db29yZGluYXRlM1Rlc3QnXSwgWydnb29nLm1hdGguQ29vcmRpbmF0ZTMnLCAnZ29vZy50ZXN0aW5nLnRlc3RTdWl0ZSddLCB7J2xhbmcnOiAnZXM2JywgJ21vZHVsZSc6ICdnb29nJ30pOwpnb29nLmFkZERlcGVuZGVuY3koJ21hdGgvY29vcmRpbmF0ZV90ZXN0LmpzJywgWydnb29nLm1hdGguQ29vcmRpbmF0ZVRlc3QnXSwgWydnb29nLm1hdGguQ29vcmRpbmF0ZScsICdnb29nLnRlc3RpbmcudGVzdFN1aXRlJ10sIHsnbGFuZyc6ICdlczYnLCAnbW9kdWxlJzogJ2dvb2cnfSk7Cmdvb2cuYWRkRGVwZW5kZW5jeSgnbWF0aC9leHBvbmVudGlhbGJhY2tvZmYuanMnLCBbJ2dvb2cubWF0aC5FeHBvbmVudGlhbEJhY2tvZmYnXSwgWydnb29nLmFzc2VydHMnXSwge30pOwpnb29nLmFkZERlcGVuZGVuY3koJ21hdGgvZXhwb25lbnRpYWxiYWNrb2ZmX3Rlc3QuanMnLCBbJ2dvb2cubWF0aC5FeHBvbmVudGlhbEJhY2tvZmZUZXN0J10sIFsnZ29vZy5tYXRoLkV4cG9uZW50aWFsQmFja29mZicsICdnb29nLnRlc3RpbmcudGVzdFN1aXRlJ10sIHsnbGFuZyc6ICdlczYnLCAnbW9kdWxlJzogJ2dvb2cnfSk7Cmdvb2cuYWRkRGVwZW5kZW5jeSgnbWF0aC9pbnRlZ2VyLmpzJywgWydnb29nLm1hdGguSW50ZWdlciddLCBbJ2dvb2cucmVmbGVjdCddLCB7fSk7Cmdvb2cuYWRkRGVwZW5kZW5jeSgnbWF0aC9pbnRlZ2VyX3Rlc3QuanMnLCBbJ2dvb2cubWF0aC5JbnRlZ2VyVGVzdCddLCBbJ2dvb2cubWF0aC5JbnRlZ2VyJywgJ2dvb2cudGVzdGluZy50ZXN0U3VpdGUnXSwgeydsYW5nJzogJ2VzNicsICdtb2R1bGUnOiAnZ29vZyd9KTsKZ29vZy5hZGREZXBlbmRlbmN5KCdtYXRoL2ludGVycG9sYXRvci9pbnRlcnBvbGF0b3IxLmpzJywgWydnb29nLm1hdGguaW50ZXJwb2xhdG9yLkludGVycG9sYXRvcjEnXSwgW10sIHt9KTsKZ29vZy5hZGREZXBlbmRlbmN5KCdtYXRoL2ludGVycG9sYXRvci9saW5lYXIxLmpzJywgWydnb29nLm1hdGguaW50ZXJwb2xhdG9yLkxpbmVhcjEnXSwgWydnb29nLmFycmF5JywgJ2dvb2cuYXNzZXJ0cycsICdnb29nLm1hdGgnLCAnZ29vZy5tYXRoLmludGVycG9sYXRvci5JbnRlcnBvbGF0b3IxJ10sIHt9KTsKZ29vZy5hZGREZXBlbmRlbmN5KCdtYXRoL2ludGVycG9sYXRvci9saW5lYXIxX3Rlc3QuanMnLCBbJ2dvb2cubWF0aC5pbnRlcnBvbGF0b3IuTGluZWFyMVRlc3QnXSwgWydnb29nLm1hdGguaW50ZXJwb2xhdG9yLkxpbmVhcjEnLCAnZ29vZy50ZXN0aW5nLnRlc3RTdWl0ZSddLCB7J2xhbmcnOiAnZXM2JywgJ21vZHVsZSc6ICdnb29nJ30pOwpnb29nLmFkZERlcGVuZGVuY3koJ21hdGgvaW50ZXJwb2xhdG9yL3BjaGlwMS5qcycsIFsnZ29vZy5tYXRoLmludGVycG9sYXRvci5QY2hpcDEnXSwgWydnb29nLm1hdGgnLCAnZ29vZy5tYXRoLmludGVycG9sYXRvci5TcGxpbmUxJ10sIHt9KTsKZ29vZy5hZGREZXBlbmRlbmN5KCdtYXRoL2ludGVycG9sYXRvci9wY2hpcDFfdGVzdC5qcycsIFsnZ29vZy5tYXRoLmludGVycG9sYXRvci5QY2hpcDFUZXN0J10sIFsnZ29vZy5tYXRoLmludGVycG9sYXRvci5QY2hpcDEnLCAnZ29vZy50ZXN0aW5nLnRlc3RTdWl0ZSddLCB7J2xhbmcnOiAnZXM2JywgJ21vZHVsZSc6ICdnb29nJ30pOwpnb29nLmFkZERlcGVuZGVuY3koJ21hdGgvaW50ZXJwb2xhdG9yL3NwbGluZTEuanMnLCBbJ2dvb2cubWF0aC5pbnRlcnBvbGF0b3IuU3BsaW5lMSddLCBbJ2dvb2cuYXJyYXknLCAnZ29vZy5hc3NlcnRzJywgJ2dvb2cubWF0aCcsICdnb29nLm1hdGguaW50ZXJwb2xhdG9yLkludGVycG9sYXRvcjEnLCAnZ29vZy5tYXRoLnRkbWEnXSwge30pOwpnb29nLmFkZERlcGVuZGVuY3koJ21hdGgvaW50ZXJwb2xhdG9yL3NwbGluZTFfdGVzdC5qcycsIFsnZ29vZy5tYXRoLmludGVycG9sYXRvci5TcGxpbmUxVGVzdCddLCBbJ2dvb2cubWF0aC5pbnRlcnBvbGF0b3IuU3BsaW5lMScsICdnb29nLnRlc3RpbmcudGVzdFN1aXRlJ10sIHsnbGFuZyc6ICdlczYnLCAnbW9kdWxlJzogJ2dvb2cnfSk7Cmdvb2cuYWRkRGVwZW5kZW5jeSgnbWF0aC9pcmVjdC5qcycsIFsnZ29vZy5tYXRoLklSZWN0J10sIFtdLCB7fSk7Cmdvb2cuYWRkRGVwZW5kZW5jeSgnbWF0aC9saW5lLmpzJywgWydnb29nLm1hdGguTGluZSddLCBbJ2dvb2cubWF0aCcsICdnb29nLm1hdGguQ29vcmRpbmF0ZSddLCB7fSk7Cmdvb2cuYWRkRGVwZW5kZW5jeSgnbWF0aC9saW5lX3Rlc3QuanMnLCBbJ2dvb2cubWF0aC5MaW5lVGVzdCddLCBbJ2dvb2cubWF0aC5Db29yZGluYXRlJywgJ2dvb2cubWF0aC5MaW5lJywgJ2dvb2cudGVzdGluZy50ZXN0U3VpdGUnXSwgeydsYW5nJzogJ2VzNicsICdtb2R1bGUnOiAnZ29vZyd9KTsKZ29vZy5hZGREZXBlbmRlbmN5KCdtYXRoL2xvbmcuanMnLCBbJ2dvb2cubWF0aC5Mb25nJ10sIFsnZ29vZy5hc3NlcnRzJywgJ2dvb2cucmVmbGVjdCddLCB7J2xhbmcnOiAnZXM2JywgJ21vZHVsZSc6ICdnb29nJ30pOwpnb29nLmFkZERlcGVuZGVuY3koJ21hdGgvbG9uZ190ZXN0LmpzJywgWydnb29nLm1hdGguTG9uZ1Rlc3QnXSwgWydnb29nLmFzc2VydHMnLCAnZ29vZy5tYXRoLkxvbmcnLCAnZ29vZy50ZXN0aW5nLnRlc3RTdWl0ZSddLCB7J2xhbmcnOiAnZXM2JywgJ21vZHVsZSc6ICdnb29nJ30pOwpnb29nLmFkZERlcGVuZGVuY3koJ21hdGgvbWF0aC5qcycsIFsnZ29vZy5tYXRoJ10sIFsnZ29vZy5hcnJheScsICdnb29nLmFzc2VydHMnXSwge30pOwpnb29nLmFkZERlcGVuZGVuY3koJ21hdGgvbWF0aF90ZXN0LmpzJywgWydnb29nLm1hdGhUZXN0J10sIFsnZ29vZy5tYXRoJywgJ2dvb2cudGVzdGluZy50ZXN0U3VpdGUnXSwgeydsYW5nJzogJ2VzNicsICdtb2R1bGUnOiAnZ29vZyd9KTsKZ29vZy5hZGREZXBlbmRlbmN5KCdtYXRoL21hdHJpeC5qcycsIFsnZ29vZy5tYXRoLk1hdHJpeCddLCBbJ2dvb2cuYXJyYXknLCAnZ29vZy5hc3NlcnRzJywgJ2dvb2cubWF0aCcsICdnb29nLm1hdGguU2l6ZScsICdnb29nLnN0cmluZyddLCB7fSk7Cmdvb2cuYWRkRGVwZW5kZW5jeSgnbWF0aC9tYXRyaXhfdGVzdC5qcycsIFsnZ29vZy5tYXRoLk1hdHJpeFRlc3QnXSwgWydnb29nLm1hdGguTWF0cml4JywgJ2dvb2cudGVzdGluZy50ZXN0U3VpdGUnXSwgeydsYW5nJzogJ2VzNicsICdtb2R1bGUnOiAnZ29vZyd9KTsKZ29vZy5hZGREZXBlbmRlbmN5KCdtYXRoL3BhdGguanMnLCBbJ2dvb2cubWF0aC5QYXRoJywgJ2dvb2cubWF0aC5QYXRoLlNlZ21lbnQnXSwgWydnb29nLmFycmF5JywgJ2dvb2cubWF0aCcsICdnb29nLm1hdGguQWZmaW5lVHJhbnNmb3JtJ10sIHt9KTsKZ29vZy5hZGREZXBlbmRlbmN5KCdtYXRoL3BhdGhfdGVzdC5qcycsIFsnZ29vZy5tYXRoLlBhdGhUZXN0J10sIFsnZ29vZy5hcnJheScsICdnb29nLm1hdGguQWZmaW5lVHJhbnNmb3JtJywgJ2dvb2cubWF0aC5QYXRoJywgJ2dvb2cudGVzdGluZy50ZXN0U3VpdGUnXSwgeydsYW5nJzogJ2VzNicsICdtb2R1bGUnOiAnZ29vZyd9KTsKZ29vZy5hZGREZXBlbmRlbmN5KCdtYXRoL3BhdGhzLmpzJywgWydnb29nLm1hdGgucGF0aHMnXSwgWydnb29nLm1hdGguQ29vcmRpbmF0ZScsICdnb29nLm1hdGguUGF0aCddLCB7fSk7Cmdvb2cuYWRkRGVwZW5kZW5jeSgnbWF0aC9wYXRoc190ZXN0LmpzJywgWydnb29nLm1hdGgucGF0aHNUZXN0J10sIFsnZ29vZy5tYXRoLkNvb3JkaW5hdGUnLCAnZ29vZy5tYXRoLnBhdGhzJywgJ2dvb2cudGVzdGluZy50ZXN0U3VpdGUnXSwgeydsYW5nJzogJ2VzNicsICdtb2R1bGUnOiAnZ29vZyd9KTsKZ29vZy5hZGREZXBlbmRlbmN5KCdtYXRoL3JhbmdlLmpzJywgWydnb29nLm1hdGguUmFuZ2UnXSwgWydnb29nLmFzc2VydHMnXSwge30pOwpnb29nLmFkZERlcGVuZGVuY3koJ21hdGgvcmFuZ2VfdGVzdC5qcycsIFsnZ29vZy5tYXRoLlJhbmdlVGVzdCddLCBbJ2dvb2cubWF0aC5SYW5nZScsICdnb29nLnRlc3RpbmcudGVzdFN1aXRlJ10sIHsnbGFuZyc6ICdlczYnLCAnbW9kdWxlJzogJ2dvb2cnfSk7Cmdvb2cuYWRkRGVwZW5kZW5jeSgnbWF0aC9yYW5nZXNldC5qcycsIFsnZ29vZy5tYXRoLlJhbmdlU2V0J10sIFsnZ29vZy5hcnJheScsICdnb29nLml0ZXIuSXRlcmF0b3InLCAnZ29vZy5pdGVyLlN0b3BJdGVyYXRpb24nLCAnZ29vZy5tYXRoLlJhbmdlJ10sIHt9KTsKZ29vZy5hZGREZXBlbmRlbmN5KCdtYXRoL3Jhbmdlc2V0X3Rlc3QuanMnLCBbJ2dvb2cubWF0aC5SYW5nZVNldFRlc3QnXSwgWydnb29nLml0ZXInLCAnZ29vZy5tYXRoLlJhbmdlJywgJ2dvb2cubWF0aC5SYW5nZVNldCcsICdnb29nLnRlc3RpbmcudGVzdFN1aXRlJ10sIHsnbGFuZyc6ICdlczYnLCAnbW9kdWxlJzogJ2dvb2cnfSk7Cmdvb2cuYWRkRGVwZW5kZW5jeSgnbWF0aC9yZWN0LmpzJywgWydnb29nLm1hdGguUmVjdCddLCBbJ2dvb2cuYXNzZXJ0cycsICdnb29nLm1hdGguQm94JywgJ2dvb2cubWF0aC5Db29yZGluYXRlJywgJ2dvb2cubWF0aC5JUmVjdCcsICdnb29nLm1hdGguU2l6ZSddLCB7fSk7Cmdvb2cuYWRkRGVwZW5kZW5jeSgnbWF0aC9yZWN0X3Rlc3QuanMnLCBbJ2dvb2cubWF0aC5SZWN0VGVzdCddLCBbJ2dvb2cubWF0aC5Cb3gnLCAnZ29vZy5tYXRoLkNvb3JkaW5hdGUnLCAnZ29vZy5tYXRoLlJlY3QnLCAnZ29vZy5tYXRoLlNpemUnLCAnZ29vZy50ZXN0aW5nLnRlc3RTdWl0ZSddLCB7J2xhbmcnOiAnZXM2JywgJ21vZHVsZSc6ICdnb29nJ30pOwpnb29nLmFkZERlcGVuZGVuY3koJ21hdGgvc2l6ZS5qcycsIFsnZ29vZy5tYXRoLlNpemUnXSwgW10sIHsnbGFuZyc6ICdlczYnfSk7Cmdvb2cuYWRkRGVwZW5kZW5jeSgnbWF0aC9zaXplX3Rlc3QuanMnLCBbJ2dvb2cubWF0aC5TaXplVGVzdCddLCBbJ2dvb2cubWF0aC5TaXplJywgJ2dvb2cudGVzdGluZy50ZXN0U3VpdGUnXSwgeydsYW5nJzogJ2VzNicsICdtb2R1bGUnOiAnZ29vZyd9KTsKZ29vZy5hZGREZXBlbmRlbmN5KCdtYXRoL3RkbWEuanMnLCBbJ2dvb2cubWF0aC50ZG1hJ10sIFtdLCB7J2xhbmcnOiAnZXM2J30pOwpnb29nLmFkZERlcGVuZGVuY3koJ21hdGgvdGRtYV90ZXN0LmpzJywgWydnb29nLm1hdGgudGRtYVRlc3QnXSwgWydnb29nLm1hdGgudGRtYScsICdnb29nLnRlc3RpbmcudGVzdFN1aXRlJ10sIHsnbGFuZyc6ICdlczYnLCAnbW9kdWxlJzogJ2dvb2cnfSk7Cmdvb2cuYWRkRGVwZW5kZW5jeSgnbWF0aC92ZWMyLmpzJywgWydnb29nLm1hdGguVmVjMiddLCBbJ2dvb2cubWF0aCcsICdnb29nLm1hdGguQ29vcmRpbmF0ZSddLCB7J2xhbmcnOiAnZXM2J30pOwpnb29nLmFkZERlcGVuZGVuY3koJ21hdGgvdmVjMl90ZXN0LmpzJywgWydnb29nLm1hdGguVmVjMlRlc3QnXSwgWydnb29nLm1hdGguVmVjMicsICdnb29nLnRlc3RpbmcudGVzdFN1aXRlJ10sIHsnbGFuZyc6ICdlczYnLCAnbW9kdWxlJzogJ2dvb2cnfSk7Cmdvb2cuYWRkRGVwZW5kZW5jeSgnbWF0aC92ZWMzLmpzJywgWydnb29nLm1hdGguVmVjMyddLCBbJ2dvb2cubWF0aCcsICdnb29nLm1hdGguQ29vcmRpbmF0ZTMnXSwge30pOwpnb29nLmFkZERlcGVuZGVuY3koJ21hdGgvdmVjM190ZXN0LmpzJywgWydnb29nLm1hdGguVmVjM1Rlc3QnXSwgWydnb29nLm1hdGguQ29vcmRpbmF0ZTMnLCAnZ29vZy5tYXRoLlZlYzMnLCAnZ29vZy50ZXN0aW5nLnRlc3RTdWl0ZSddLCB7J2xhbmcnOiAnZXM2JywgJ21vZHVsZSc6ICdnb29nJ30pOwpnb29nLmFkZERlcGVuZGVuY3koJ21lbW9pemUvbWVtb2l6ZS5qcycsIFsnZ29vZy5tZW1vaXplJ10sIFtdLCB7J2xhbmcnOiAnZXM2J30pOwpnb29nLmFkZERlcGVuZGVuY3koJ21lbW9pemUvbWVtb2l6ZV90ZXN0LmpzJywgWydnb29nLm1lbW9pemVUZXN0J10sIFsnZ29vZy5tZW1vaXplJywgJ2dvb2cudGVzdGluZy50ZXN0U3VpdGUnXSwgeydsYW5nJzogJ2VzNicsICdtb2R1bGUnOiAnZ29vZyd9KTsKZ29vZy5hZGREZXBlbmRlbmN5KCdtZXNzYWdpbmcvYWJzdHJhY3RjaGFubmVsLmpzJywgWydnb29nLm1lc3NhZ2luZy5BYnN0cmFjdENoYW5uZWwnXSwgWydnb29nLkRpc3Bvc2FibGUnLCAnZ29vZy5qc29uJywgJ2dvb2cubG9nJywgJ2dvb2cubWVzc2FnaW5nLk1lc3NhZ2VDaGFubmVsJ10sIHt9KTsKZ29vZy5hZGREZXBlbmRlbmN5KCdtZXNzYWdpbmcvYWJzdHJhY3RjaGFubmVsX3Rlc3QuanMnLCBbJ2dvb2cubWVzc2FnaW5nLkFic3RyYWN0Q2hhbm5lbFRlc3QnXSwgWydnb29nLm1lc3NhZ2luZy5BYnN0cmFjdENoYW5uZWwnLCAnZ29vZy50ZXN0aW5nLk1vY2tDb250cm9sJywgJ2dvb2cudGVzdGluZy5hc3luYy5Nb2NrQ29udHJvbCcsICdnb29nLnRlc3RpbmcudGVzdFN1aXRlJ10sIHsnbGFuZyc6ICdlczYnLCAnbW9kdWxlJzogJ2dvb2cnfSk7Cmdvb2cuYWRkRGVwZW5kZW5jeSgnbWVzc2FnaW5nL2J1ZmZlcmVkY2hhbm5lbC5qcycsIFsnZ29vZy5tZXNzYWdpbmcuQnVmZmVyZWRDaGFubmVsJ10sIFsnZ29vZy5EaXNwb3NhYmxlJywgJ2dvb2cuVGltZXInLCAnZ29vZy5ldmVudHMnLCAnZ29vZy5sb2cnLCAnZ29vZy5tZXNzYWdpbmcuTWVzc2FnZUNoYW5uZWwnLCAnZ29vZy5tZXNzYWdpbmcuTXVsdGlDaGFubmVsJ10sIHt9KTsKZ29vZy5hZGREZXBlbmRlbmN5KCdtZXNzYWdpbmcvYnVmZmVyZWRjaGFubmVsX3Rlc3QuanMnLCBbJ2dvb2cubWVzc2FnaW5nLkJ1ZmZlcmVkQ2hhbm5lbFRlc3QnXSwgWydnb29nLmRlYnVnLkNvbnNvbGUnLCAnZ29vZy5kb20nLCAnZ29vZy5kb20uVGFnTmFtZScsICdnb29nLmxvZycsICdnb29nLmxvZy5MZXZlbCcsICdnb29nLm1lc3NhZ2luZy5CdWZmZXJlZENoYW5uZWwnLCAnZ29vZy50ZXN0aW5nLk1vY2tDbG9jaycsICdnb29nLnRlc3RpbmcuTW9ja0NvbnRyb2wnLCAnZ29vZy50ZXN0aW5nLmFzeW5jLk1vY2tDb250cm9sJywgJ2dvb2cudGVzdGluZy5tZXNzYWdpbmcuTW9ja01lc3NhZ2VDaGFubmVsJywgJ2dvb2cudGVzdGluZy50ZXN0U3VpdGUnXSwgeydsYW5nJzogJ2VzNicsICdtb2R1bGUnOiAnZ29vZyd9KTsKZ29vZy5hZGREZXBlbmRlbmN5KCdtZXNzYWdpbmcvZGVmZXJyZWRjaGFubmVsLmpzJywgWydnb29nLm1lc3NhZ2luZy5EZWZlcnJlZENoYW5uZWwnXSwgWydnb29nLkRpc3Bvc2FibGUnLCAnZ29vZy5tZXNzYWdpbmcuTWVzc2FnZUNoYW5uZWwnXSwge30pOwpnb29nLmFkZERlcGVuZGVuY3koJ21lc3NhZ2luZy9kZWZlcnJlZGNoYW5uZWxfdGVzdC5qcycsIFsnZ29vZy5tZXNzYWdpbmcuRGVmZXJyZWRDaGFubmVsVGVzdCddLCBbJ2dvb2cuYXN5bmMuRGVmZXJyZWQnLCAnZ29vZy5tZXNzYWdpbmcuRGVmZXJyZWRDaGFubmVsJywgJ2dvb2cudGVzdGluZy5Nb2NrQ29udHJvbCcsICdnb29nLnRlc3RpbmcuYXN5bmMuTW9ja0NvbnRyb2wnLCAnZ29vZy50ZXN0aW5nLm1lc3NhZ2luZy5Nb2NrTWVzc2FnZUNoYW5uZWwnLCAnZ29vZy50ZXN0aW5nLnRlc3RTdWl0ZSddLCB7J2xhbmcnOiAnZXM2JywgJ21vZHVsZSc6ICdnb29nJ30pOwpnb29nLmFkZERlcGVuZGVuY3koJ21lc3NhZ2luZy9sb2dnZXJjbGllbnQuanMnLCBbJ2dvb2cubWVzc2FnaW5nLkxvZ2dlckNsaWVudCddLCBbJ2dvb2cuRGlzcG9zYWJsZScsICdnb29nLmRlYnVnJywgJ2dvb2cuZGVidWcuTG9nTWFuYWdlcicsICdnb29nLmRlYnVnLkxvZ2dlciddLCB7fSk7Cmdvb2cuYWRkRGVwZW5kZW5jeSgnbWVzc2FnaW5nL2xvZ2dlcmNsaWVudF90ZXN0LmpzJywgWydnb29nLm1lc3NhZ2luZy5Mb2dnZXJDbGllbnRUZXN0J10sIFsnZ29vZy5kZWJ1ZycsICdnb29nLmRlYnVnLkxvZ2dlcicsICdnb29nLm1lc3NhZ2luZy5Mb2dnZXJDbGllbnQnLCAnZ29vZy50ZXN0aW5nLk1vY2tDb250cm9sJywgJ2dvb2cudGVzdGluZy5tZXNzYWdpbmcuTW9ja01lc3NhZ2VDaGFubmVsJywgJ2dvb2cudGVzdGluZy50ZXN0U3VpdGUnXSwgeydsYW5nJzogJ2VzNicsICdtb2R1bGUnOiAnZ29vZyd9KTsKZ29vZy5hZGREZXBlbmRlbmN5KCdtZXNzYWdpbmcvbG9nZ2Vyc2VydmVyLmpzJywgWydnb29nLm1lc3NhZ2luZy5Mb2dnZXJTZXJ2ZXInXSwgWydnb29nLkRpc3Bvc2FibGUnLCAnZ29vZy5sb2cnLCAnZ29vZy5sb2cuTGV2ZWwnXSwge30pOwpnb29nLmFkZERlcGVuZGVuY3koJ21lc3NhZ2luZy9sb2dnZXJzZXJ2ZXJfdGVzdC5qcycsIFsnZ29vZy5tZXNzYWdpbmcuTG9nZ2VyU2VydmVyVGVzdCddLCBbJ2dvb2cuZGVidWcuTG9nTWFuYWdlcicsICdnb29nLmRlYnVnLkxvZ2dlcicsICdnb29nLmxvZycsICdnb29nLmxvZy5MZXZlbCcsICdnb29nLm1lc3NhZ2luZy5Mb2dnZXJTZXJ2ZXInLCAnZ29vZy50ZXN0aW5nLk1vY2tDb250cm9sJywgJ2dvb2cudGVzdGluZy5Qcm9wZXJ0eVJlcGxhY2VyJywgJ2dvb2cudGVzdGluZy5tZXNzYWdpbmcuTW9ja01lc3NhZ2VDaGFubmVsJywgJ2dvb2cudGVzdGluZy50ZXN0U3VpdGUnXSwgeydsYW5nJzogJ2VzNicsICdtb2R1bGUnOiAnZ29vZyd9KTsKZ29vZy5hZGREZXBlbmRlbmN5KCdtZXNzYWdpbmcvbWVzc2FnZWNoYW5uZWwuanMnLCBbJ2dvb2cubWVzc2FnaW5nLk1lc3NhZ2VDaGFubmVsJ10sIFtdLCB7fSk7Cmdvb2cuYWRkRGVwZW5kZW5jeSgnbWVzc2FnaW5nL21lc3NhZ2luZy5qcycsIFsnZ29vZy5tZXNzYWdpbmcnXSwgW10sIHt9KTsKZ29vZy5hZGREZXBlbmRlbmN5KCdtZXNzYWdpbmcvbWVzc2FnaW5nX3Rlc3QuanMnLCBbJ2dvb2cudGVzdGluZy5tZXNzYWdpbmcuTW9ja01lc3NhZ2VDaGFubmVsVGVzdCddLCBbJ2dvb2cubWVzc2FnaW5nJywgJ2dvb2cudGVzdGluZy5Nb2NrQ29udHJvbCcsICdnb29nLnRlc3RpbmcubWVzc2FnaW5nLk1vY2tNZXNzYWdlQ2hhbm5lbCcsICdnb29nLnRlc3RpbmcudGVzdFN1aXRlJ10sIHsnbGFuZyc6ICdlczYnLCAnbW9kdWxlJzogJ2dvb2cnfSk7Cmdvb2cuYWRkRGVwZW5kZW5jeSgnbWVzc2FnaW5nL211bHRpY2hhbm5lbC5qcycsIFsnZ29vZy5tZXNzYWdpbmcuTXVsdGlDaGFubmVsJywgJ2dvb2cubWVzc2FnaW5nLk11bHRpQ2hhbm5lbC5WaXJ0dWFsQ2hhbm5lbCddLCBbJ2dvb2cuRGlzcG9zYWJsZScsICdnb29nLmxvZycsICdnb29nLm1lc3NhZ2luZy5NZXNzYWdlQ2hhbm5lbCcsICdnb29nLm9iamVjdCddLCB7fSk7Cmdvb2cuYWRkRGVwZW5kZW5jeSgnbWVzc2FnaW5nL211bHRpY2hhbm5lbF90ZXN0LmpzJywgWydnb29nLm1lc3NhZ2luZy5NdWx0aUNoYW5uZWxUZXN0J10sIFsnZ29vZy5tZXNzYWdpbmcuTXVsdGlDaGFubmVsJywgJ2dvb2cudGVzdGluZy5Nb2NrQ29udHJvbCcsICdnb29nLnRlc3RpbmcubWVzc2FnaW5nLk1vY2tNZXNzYWdlQ2hhbm5lbCcsICdnb29nLnRlc3RpbmcubW9ja21hdGNoZXJzLklnbm9yZUFyZ3VtZW50JywgJ2dvb2cudGVzdGluZy50ZXN0U3VpdGUnXSwgeydsYW5nJzogJ2VzNicsICdtb2R1bGUnOiAnZ29vZyd9KTsKZ29vZy5hZGREZXBlbmRlbmN5KCdtZXNzYWdpbmcvcG9ydGNhbGxlci5qcycsIFsnZ29vZy5tZXNzYWdpbmcuUG9ydENhbGxlciddLCBbJ2dvb2cuRGlzcG9zYWJsZScsICdnb29nLmFzeW5jLkRlZmVycmVkJywgJ2dvb2cubWVzc2FnaW5nLkRlZmVycmVkQ2hhbm5lbCcsICdnb29nLm1lc3NhZ2luZy5Qb3J0Q2hhbm5lbCcsICdnb29nLm1lc3NhZ2luZy5Qb3J0TmV0d29yaycsICdnb29nLm9iamVjdCddLCB7fSk7Cmdvb2cuYWRkRGVwZW5kZW5jeSgnbWVzc2FnaW5nL3BvcnRjYWxsZXJfdGVzdC5qcycsIFsnZ29vZy5tZXNzYWdpbmcuUG9ydENhbGxlclRlc3QnXSwgWydnb29nLmV2ZW50cy5FdmVudFRhcmdldCcsICdnb29nLm1lc3NhZ2luZy5Qb3J0Q2FsbGVyJywgJ2dvb2cubWVzc2FnaW5nLlBvcnROZXR3b3JrJywgJ2dvb2cudGVzdGluZy5Nb2NrQ29udHJvbCcsICdnb29nLnRlc3RpbmcubWVzc2FnaW5nLk1vY2tNZXNzYWdlQ2hhbm5lbCcsICdnb29nLnRlc3RpbmcudGVzdFN1aXRlJ10sIHsnbGFuZyc6ICdlczYnLCAnbW9kdWxlJzogJ2dvb2cnfSk7Cmdvb2cuYWRkRGVwZW5kZW5jeSgnbWVzc2FnaW5nL3BvcnRjaGFubmVsLmpzJywgWydnb29nLm1lc3NhZ2luZy5Qb3J0Q2hhbm5lbCddLCBbJ2dvb2cuVGltZXInLCAnZ29vZy5hcnJheScsICdnb29nLmFzeW5jLkRlZmVycmVkJywgJ2dvb2cuZGVidWcnLCAnZ29vZy5ldmVudHMnLCAnZ29vZy5ldmVudHMuRXZlbnRUeXBlJywgJ2dvb2cuanNvbicsICdnb29nLmxvZycsICdnb29nLm1lc3NhZ2luZy5BYnN0cmFjdENoYW5uZWwnLCAnZ29vZy5tZXNzYWdpbmcuRGVmZXJyZWRDaGFubmVsJywgJ2dvb2cub2JqZWN0JywgJ2dvb2cuc3RyaW5nJywgJ2dvb2cudXNlckFnZW50J10sIHt9KTsKZ29vZy5hZGREZXBlbmRlbmN5KCdtZXNzYWdpbmcvcG9ydGNoYW5uZWxfdGVzdC5qcycsIFsnZ29vZy5tZXNzYWdpbmcuUG9ydENoYW5uZWxUZXN0J10sIFsnZ29vZy5Qcm9taXNlJywgJ2dvb2cuVGltZXInLCAnZ29vZy5kb20nLCAnZ29vZy5kb20uVGFnTmFtZScsICdnb29nLmV2ZW50cycsICdnb29nLmV2ZW50cy5FdmVudFRhcmdldCcsICdnb29nLmV2ZW50cy5FdmVudFR5cGUnLCAnZ29vZy5qc29uJywgJ2dvb2cubWVzc2FnaW5nLlBvcnRDaGFubmVsJywgJ2dvb2cudGVzdGluZy5Nb2NrQ29udHJvbCcsICdnb29nLnRlc3RpbmcuVGVzdENhc2UnLCAnZ29vZy50ZXN0aW5nLm1lc3NhZ2luZy5Nb2NrTWVzc2FnZUV2ZW50JywgJ2dvb2cudGVzdGluZy50ZXN0U3VpdGUnXSwgeydsYW5nJzogJ2VzNicsICdtb2R1bGUnOiAnZ29vZyd9KTsKZ29vZy5hZGREZXBlbmRlbmN5KCdtZXNzYWdpbmcvcG9ydG5ldHdvcmsuanMnLCBbJ2dvb2cubWVzc2FnaW5nLlBvcnROZXR3b3JrJ10sIFtdLCB7fSk7Cmdvb2cuYWRkRGVwZW5kZW5jeSgnbWVzc2FnaW5nL3BvcnRuZXR3b3JrX3Rlc3QuanMnLCBbJ2dvb2cubWVzc2FnaW5nLlBvcnROZXR3b3JrVGVzdCddLCBbJ2dvb2cuUHJvbWlzZScsICdnb29nLlRpbWVyJywgJ2dvb2cubGFicy51c2VyQWdlbnQuYnJvd3NlcicsICdnb29nLm1lc3NhZ2luZy5Qb3J0Q2hhbm5lbCcsICdnb29nLm1lc3NhZ2luZy5Qb3J0T3BlcmF0b3InLCAnZ29vZy50ZXN0aW5nLlRlc3RDYXNlJywgJ2dvb2cudGVzdGluZy50ZXN0U3VpdGUnXSwgeydsYW5nJzogJ2VzNicsICdtb2R1bGUnOiAnZ29vZyd9KTsKZ29vZy5hZGREZXBlbmRlbmN5KCdtZXNzYWdpbmcvcG9ydG9wZXJhdG9yLmpzJywgWydnb29nLm1lc3NhZ2luZy5Qb3J0T3BlcmF0b3InXSwgWydnb29nLkRpc3Bvc2FibGUnLCAnZ29vZy5hc3NlcnRzJywgJ2dvb2cubG9nJywgJ2dvb2cubWVzc2FnaW5nLlBvcnRDaGFubmVsJywgJ2dvb2cubWVzc2FnaW5nLlBvcnROZXR3b3JrJywgJ2dvb2cub2JqZWN0J10sIHt9KTsKZ29vZy5hZGREZXBlbmRlbmN5KCdtZXNzYWdpbmcvcG9ydG9wZXJhdG9yX3Rlc3QuanMnLCBbJ2dvb2cubWVzc2FnaW5nLlBvcnRPcGVyYXRvclRlc3QnXSwgWydnb29nLm1lc3NhZ2luZy5Qb3J0TmV0d29yaycsICdnb29nLm1lc3NhZ2luZy5Qb3J0T3BlcmF0b3InLCAnZ29vZy50ZXN0aW5nLk1vY2tDb250cm9sJywgJ2dvb2cudGVzdGluZy5Qcm9wZXJ0eVJlcGxhY2VyJywgJ2dvb2cudGVzdGluZy5tZXNzYWdpbmcuTW9ja01lc3NhZ2VDaGFubmVsJywgJ2dvb2cudGVzdGluZy5tZXNzYWdpbmcuTW9ja01lc3NhZ2VQb3J0JywgJ2dvb2cudGVzdGluZy50ZXN0U3VpdGUnXSwgeydsYW5nJzogJ2VzNicsICdtb2R1bGUnOiAnZ29vZyd9KTsKZ29vZy5hZGREZXBlbmRlbmN5KCdtZXNzYWdpbmcvcmVzcG9uZGluZ2NoYW5uZWwuanMnLCBbJ2dvb2cubWVzc2FnaW5nLlJlc3BvbmRpbmdDaGFubmVsJ10sIFsnZ29vZy5EaXNwb3NhYmxlJywgJ2dvb2cuUHJvbWlzZScsICdnb29nLmxvZycsICdnb29nLm1lc3NhZ2luZy5NdWx0aUNoYW5uZWwnXSwge30pOwpnb29nLmFkZERlcGVuZGVuY3koJ21lc3NhZ2luZy9yZXNwb25kaW5nY2hhbm5lbF90ZXN0LmpzJywgWydnb29nLm1lc3NhZ2luZy5SZXNwb25kaW5nQ2hhbm5lbFRlc3QnXSwgWydnb29nLlByb21pc2UnLCAnZ29vZy5tZXNzYWdpbmcuUmVzcG9uZGluZ0NoYW5uZWwnLCAnZ29vZy50ZXN0aW5nLk1vY2tDb250cm9sJywgJ2dvb2cudGVzdGluZy5Qcm9wZXJ0eVJlcGxhY2VyJywgJ2dvb2cudGVzdGluZy5tZXNzYWdpbmcuTW9ja01lc3NhZ2VDaGFubmVsJywgJ2dvb2cudGVzdGluZy5yZWNvcmRGdW5jdGlvbicsICdnb29nLnRlc3RpbmcudGVzdFN1aXRlJ10sIHsnbGFuZyc6ICdlczYnLCAnbW9kdWxlJzogJ2dvb2cnfSk7Cmdvb2cuYWRkRGVwZW5kZW5jeSgnbWVzc2FnaW5nL3Rlc3RkYXRhL3BvcnRjaGFubmVsX3dvcmtlci5qcycsIFsnZ29vZy5tZXNzYWdpbmcudGVzdGRhdGEucG9ydGNoYW5uZWxfd29ya2VyJ10sIFsnZ29vZy5tZXNzYWdpbmcuUG9ydENoYW5uZWwnXSwge30pOwpnb29nLmFkZERlcGVuZGVuY3koJ21lc3NhZ2luZy90ZXN0ZGF0YS9wb3J0bmV0d29ya193b3JrZXIxLmpzJywgWydnb29nLm1lc3NhZ2luZy50ZXN0ZGF0YS5wb3J0bmV0d29ya193b3JrZXIxJ10sIFsnZ29vZy5tZXNzYWdpbmcuUG9ydENhbGxlcicsICdnb29nLm1lc3NhZ2luZy5Qb3J0Q2hhbm5lbCddLCB7fSk7Cmdvb2cuYWRkRGVwZW5kZW5jeSgnbWVzc2FnaW5nL3Rlc3RkYXRhL3BvcnRuZXR3b3JrX3dvcmtlcjIuanMnLCBbJ2dvb2cubWVzc2FnaW5nLnRlc3RkYXRhLnBvcnRuZXR3b3JrX3dvcmtlcjInXSwgWydnb29nLm1lc3NhZ2luZy5Qb3J0Q2FsbGVyJywgJ2dvb2cubWVzc2FnaW5nLlBvcnRDaGFubmVsJ10sIHt9KTsKZ29vZy5hZGREZXBlbmRlbmN5KCdtb2R1bGUvYWJzdHJhY3Rtb2R1bGVsb2FkZXIuanMnLCBbJ2dvb2cubW9kdWxlLkFic3RyYWN0TW9kdWxlTG9hZGVyJ10sIFsnZ29vZy5tb2R1bGUnLCAnZ29vZy5tb2R1bGUuTW9kdWxlSW5mbyddLCB7fSk7Cmdvb2cuYWRkRGVwZW5kZW5jeSgnbW9kdWxlL2Jhc2Vtb2R1bGUuanMnLCBbJ2dvb2cubW9kdWxlLkJhc2VNb2R1bGUnXSwgWydnb29nLkRpc3Bvc2FibGUnLCAnZ29vZy5tb2R1bGUnXSwge30pOwpnb29nLmFkZERlcGVuZGVuY3koJ21vZHVsZS9sb2FkZXIuanMnLCBbJ2dvb2cubW9kdWxlLkxvYWRlciddLCBbJ2dvb2cuVGltZXInLCAnZ29vZy5hcnJheScsICdnb29nLmFzc2VydHMnLCAnZ29vZy5kb20nLCAnZ29vZy5kb20uVGFnTmFtZScsICdnb29nLmRvbS5zYWZlJywgJ2dvb2cuaHRtbC5sZWdhY3ljb252ZXJzaW9ucycsICdnb29nLm1vZHVsZScsICdnb29nLm9iamVjdCddLCB7fSk7Cmdvb2cuYWRkRGVwZW5kZW5jeSgnbW9kdWxlL21vZHVsZS5qcycsIFsnZ29vZy5tb2R1bGUnXSwgW10sIHt9KTsKZ29vZy5hZGREZXBlbmRlbmN5KCdtb2R1bGUvbW9kdWxlaW5mby5qcycsIFsnZ29vZy5tb2R1bGUuTW9kdWxlSW5mbyddLCBbJ2dvb2cuRGlzcG9zYWJsZScsICdnb29nLmFzeW5jLnRocm93RXhjZXB0aW9uJywgJ2dvb2cuZnVuY3Rpb25zJywgJ2dvb2cuaHRtbC5UcnVzdGVkUmVzb3VyY2VVcmwnLCAnZ29vZy5tb2R1bGUnLCAnZ29vZy5tb2R1bGUuQmFzZU1vZHVsZScsICdnb29nLm1vZHVsZS5Nb2R1bGVMb2FkQ2FsbGJhY2snXSwge30pOwpnb29nLmFkZERlcGVuZGVuY3koJ21vZHVsZS9tb2R1bGVpbmZvX3Rlc3QuanMnLCBbJ2dvb2cubW9kdWxlLk1vZHVsZUluZm9UZXN0J10sIFsnZ29vZy5tb2R1bGUuQmFzZU1vZHVsZScsICdnb29nLm1vZHVsZS5Nb2R1bGVJbmZvJywgJ2dvb2cudGVzdGluZy5Nb2NrQ2xvY2snLCAnZ29vZy50ZXN0aW5nLnRlc3RTdWl0ZSddLCB7J2xhbmcnOiAnZXM2JywgJ21vZHVsZSc6ICdnb29nJ30pOwpnb29nLmFkZERlcGVuZGVuY3koJ21vZHVsZS9tb2R1bGVsb2FkY2FsbGJhY2suanMnLCBbJ2dvb2cubW9kdWxlLk1vZHVsZUxvYWRDYWxsYmFjayddLCBbJ2dvb2cuZGVidWcuZW50cnlQb2ludFJlZ2lzdHJ5JywgJ2dvb2cubW9kdWxlJ10sIHt9KTsKZ29vZy5hZGREZXBlbmRlbmN5KCdtb2R1bGUvbW9kdWxlbG9hZGNhbGxiYWNrX3Rlc3QuanMnLCBbJ2dvb2cubW9kdWxlLk1vZHVsZUxvYWRDYWxsYmFja1Rlc3QnXSwgWydnb29nLmRlYnVnLkVycm9ySGFuZGxlcicsICdnb29nLmRlYnVnLmVudHJ5UG9pbnRSZWdpc3RyeScsICdnb29nLmZ1bmN0aW9ucycsICdnb29nLm1vZHVsZS5Nb2R1bGVMb2FkQ2FsbGJhY2snLCAnZ29vZy50ZXN0aW5nLnJlY29yZEZ1bmN0aW9uJywgJ2dvb2cudGVzdGluZy50ZXN0U3VpdGUnXSwgeydsYW5nJzogJ2VzNicsICdtb2R1bGUnOiAnZ29vZyd9KTsKZ29vZy5hZGREZXBlbmRlbmN5KCdtb2R1bGUvbW9kdWxlbG9hZGVyLmpzJywgWydnb29nLm1vZHVsZS5Nb2R1bGVMb2FkZXInXSwgWydnb29nLlRpbWVyJywgJ2dvb2cuYXJyYXknLCAnZ29vZy5hc3NlcnRzJywgJ2dvb2cuZG9tJywgJ2dvb2cuZG9tLnNhZmUnLCAnZ29vZy5ldmVudHMnLCAnZ29vZy5ldmVudHMuRXZlbnQnLCAnZ29vZy5ldmVudHMuRXZlbnRIYW5kbGVyJywgJ2dvb2cuZXZlbnRzLkV2ZW50SWQnLCAnZ29vZy5ldmVudHMuRXZlbnRUYXJnZXQnLCAnZ29vZy5mdW5jdGlvbnMnLCAnZ29vZy5odG1sLlRydXN0ZWRSZXNvdXJjZVVybCcsICdnb29nLmxhYnMudXNlckFnZW50LmJyb3dzZXInLCAnZ29vZy5sb2cnLCAnZ29vZy5tb2R1bGUuQWJzdHJhY3RNb2R1bGVMb2FkZXInLCAnZ29vZy5uZXQuQnVsa0xvYWRlcicsICdnb29nLm5ldC5FdmVudFR5cGUnLCAnZ29vZy5uZXQuanNsb2FkZXInLCAnZ29vZy51c2VyQWdlbnQnLCAnZ29vZy51c2VyQWdlbnQucHJvZHVjdCddLCB7J2xhbmcnOiAnZXM2J30pOwpnb29nLmFkZERlcGVuZGVuY3koJ21vZHVsZS9tb2R1bGVsb2FkZXJfdGVzdC5qcycsIFsnZ29vZy5tb2R1bGUuTW9kdWxlTG9hZGVyVGVzdCddLCBbJ2dvb2cuUHJvbWlzZScsICdnb29nLmFycmF5JywgJ2dvb2cuZG9tJywgJ2dvb2cuZG9tLlRhZ05hbWUnLCAnZ29vZy5ldmVudHMnLCAnZ29vZy5mdW5jdGlvbnMnLCAnZ29vZy5odG1sLlRydXN0ZWRSZXNvdXJjZVVybCcsICdnb29nLmxvYWRlci5hY3RpdmVNb2R1bGVNYW5hZ2VyJywgJ2dvb2cubW9kdWxlLk1vZHVsZUxvYWRlcicsICdnb29nLm1vZHVsZS5Nb2R1bGVNYW5hZ2VyJywgJ2dvb2cubmV0LkJ1bGtMb2FkZXInLCAnZ29vZy5uZXQuWG1sSHR0cCcsICdnb29nLm9iamVjdCcsICdnb29nLnN0cmluZy5Db25zdCcsICdnb29nLnRlc3RpbmcuUHJvcGVydHlSZXBsYWNlcicsICdnb29nLnRlc3RpbmcuVGVzdENhc2UnLCAnZ29vZy50ZXN0aW5nLmV2ZW50cy5FdmVudE9ic2VydmVyJywgJ2dvb2cudGVzdGluZy50ZXN0U3VpdGUnLCAnZ29vZy51c2VyQWdlbnQnXSwgeydsYW5nJzogJ2VzNicsICdtb2R1bGUnOiAnZ29vZyd9KTsKZ29vZy5hZGREZXBlbmRlbmN5KCdtb2R1bGUvbW9kdWxlbWFuYWdlci5qcycsIFsnZ29vZy5tb2R1bGUuTW9kdWxlTWFuYWdlcicsICdnb29nLm1vZHVsZS5Nb2R1bGVNYW5hZ2VyLkNhbGxiYWNrVHlwZScsICdnb29nLm1vZHVsZS5Nb2R1bGVNYW5hZ2VyLkZhaWx1cmVUeXBlJ10sIFsnZ29vZy5hcnJheScsICdnb29nLmFzc2VydHMnLCAnZ29vZy5hc3luYy5EZWZlcnJlZCcsICdnb29nLmRlYnVnLlRyYWNlJywgJ2dvb2cuZGlzcG9zYWJsZS5JRGlzcG9zYWJsZScsICdnb29nLmRpc3Bvc2VBbGwnLCAnZ29vZy5sb2FkZXIuQWJzdHJhY3RNb2R1bGVNYW5hZ2VyJywgJ2dvb2cubG9hZGVyLmFjdGl2ZU1vZHVsZU1hbmFnZXInLCAnZ29vZy5sb2cnLCAnZ29vZy5tb2R1bGUnLCAnZ29vZy5tb2R1bGUuTW9kdWxlSW5mbycsICdnb29nLm1vZHVsZS5Nb2R1bGVMb2FkQ2FsbGJhY2snLCAnZ29vZy5vYmplY3QnXSwgeydsYW5nJzogJ2VzNid9KTsKZ29vZy5hZGREZXBlbmRlbmN5KCdtb2R1bGUvbW9kdWxlbWFuYWdlcl90ZXN0LmpzJywgWydnb29nLm1vZHVsZS5Nb2R1bGVNYW5hZ2VyVGVzdCddLCBbJ2dvb2cuYXJyYXknLCAnZ29vZy5mdW5jdGlvbnMnLCAnZ29vZy5tb2R1bGUuQmFzZU1vZHVsZScsICdnb29nLm1vZHVsZS5Nb2R1bGVNYW5hZ2VyJywgJ2dvb2cudGVzdGluZycsICdnb29nLnRlc3RpbmcuTW9ja0Nsb2NrJywgJ2dvb2cudGVzdGluZy5yZWNvcmRGdW5jdGlvbicsICdnb29nLnRlc3RpbmcudGVzdFN1aXRlJ10sIHsnbGFuZyc6ICdlczYnLCAnbW9kdWxlJzogJ2dvb2cnfSk7Cmdvb2cuYWRkRGVwZW5kZW5jeSgnbW9kdWxlL3Rlc3RkYXRhL21vZEFfMS5qcycsIFsnZ29vZy5tb2R1bGUudGVzdGRhdGEubW9kQV8xJ10sIFtdLCB7fSk7Cmdvb2cuYWRkRGVwZW5kZW5jeSgnbW9kdWxlL3Rlc3RkYXRhL21vZEFfMi5qcycsIFsnZ29vZy5tb2R1bGUudGVzdGRhdGEubW9kQV8yJ10sIFsnZ29vZy5tb2R1bGUuTW9kdWxlTWFuYWdlciddLCB7fSk7Cmdvb2cuYWRkRGVwZW5kZW5jeSgnbW9kdWxlL3Rlc3RkYXRhL21vZEJfMS5qcycsIFsnZ29vZy5tb2R1bGUudGVzdGRhdGEubW9kQl8xJ10sIFsnZ29vZy5tb2R1bGUuTW9kdWxlTWFuYWdlciddLCB7fSk7Cmdvb2cuYWRkRGVwZW5kZW5jeSgnbmV0L2Jyb3dzZXJjaGFubmVsLmpzJywgWydnb29nLm5ldC5Ccm93c2VyQ2hhbm5lbCcsICdnb29nLm5ldC5Ccm93c2VyQ2hhbm5lbC5FcnJvcicsICdnb29nLm5ldC5Ccm93c2VyQ2hhbm5lbC5FdmVudCcsICdnb29nLm5ldC5Ccm93c2VyQ2hhbm5lbC5IYW5kbGVyJywgJ2dvb2cubmV0LkJyb3dzZXJDaGFubmVsLkxvZ1NhdmVyJywgJ2dvb2cubmV0LkJyb3dzZXJDaGFubmVsLlF1ZXVlZE1hcCcsICdnb29nLm5ldC5Ccm93c2VyQ2hhbm5lbC5TZXJ2ZXJSZWFjaGFiaWxpdHknLCAnZ29vZy5uZXQuQnJvd3NlckNoYW5uZWwuU2VydmVyUmVhY2hhYmlsaXR5RXZlbnQnLCAnZ29vZy5uZXQuQnJvd3NlckNoYW5uZWwuU3RhdCcsICdnb29nLm5ldC5Ccm93c2VyQ2hhbm5lbC5TdGF0RXZlbnQnLCAnZ29vZy5uZXQuQnJvd3NlckNoYW5uZWwuU3RhdGUnLCAnZ29vZy5uZXQuQnJvd3NlckNoYW5uZWwuVGltaW5nRXZlbnQnXSwgWydnb29nLlVyaScsICdnb29nLmFycmF5JywgJ2dvb2cuYXNzZXJ0cycsICdnb29nLmRlYnVnLlRleHRGb3JtYXR0ZXInLCAnZ29vZy5ldmVudHMuRXZlbnQnLCAnZ29vZy5ldmVudHMuRXZlbnRUYXJnZXQnLCAnZ29vZy5qc29uJywgJ2dvb2cuanNvbi5OYXRpdmVKc29uUHJvY2Vzc29yJywgJ2dvb2cubG9nJywgJ2dvb2cubmV0LkJyb3dzZXJUZXN0Q2hhbm5lbCcsICdnb29nLm5ldC5DaGFubmVsRGVidWcnLCAnZ29vZy5uZXQuQ2hhbm5lbFJlcXVlc3QnLCAnZ29vZy5uZXQuWGhySW8nLCAnZ29vZy5uZXQudG1wbmV0d29yaycsICdnb29nLm9iamVjdCcsICdnb29nLnN0cmluZycsICdnb29nLnN0cnVjdHMnLCAnZ29vZy5zdHJ1Y3RzLkNpcmN1bGFyQnVmZmVyJ10sIHt9KTsKZ29vZy5hZGREZXBlbmRlbmN5KCduZXQvYnJvd3NlcmNoYW5uZWxfdGVzdC5qcycsIFsnZ29vZy5uZXQuQnJvd3NlckNoYW5uZWxUZXN0J10sIFsnZ29vZy5UaW1lcicsICdnb29nLmFycmF5JywgJ2dvb2cuZG9tJywgJ2dvb2cuZnVuY3Rpb25zJywgJ2dvb2cuanNvbicsICdnb29nLm5ldC5Ccm93c2VyQ2hhbm5lbCcsICdnb29nLm5ldC5DaGFubmVsRGVidWcnLCAnZ29vZy5uZXQuQ2hhbm5lbFJlcXVlc3QnLCAnZ29vZy5uZXQudG1wbmV0d29yaycsICdnb29nLnN0cnVjdHMuTWFwJywgJ2dvb2cudGVzdGluZy5Nb2NrQ2xvY2snLCAnZ29vZy50ZXN0aW5nLlByb3BlcnR5UmVwbGFjZXInLCAnZ29vZy50ZXN0aW5nLnJlY29yZEZ1bmN0aW9uJywgJ2dvb2cudGVzdGluZy50ZXN0U3VpdGUnXSwgeydsYW5nJzogJ2VzNicsICdtb2R1bGUnOiAnZ29vZyd9KTsKZ29vZy5hZGREZXBlbmRlbmN5KCduZXQvYnJvd3NlcnRlc3RjaGFubmVsLmpzJywgWydnb29nLm5ldC5Ccm93c2VyVGVzdENoYW5uZWwnXSwgWydnb29nLmpzb24uTmF0aXZlSnNvblByb2Nlc3NvcicsICdnb29nLm5ldC5DaGFubmVsUmVxdWVzdCcsICdnb29nLm5ldC5DaGFubmVsUmVxdWVzdC5FcnJvcicsICdnb29nLm5ldC50bXBuZXR3b3JrJywgJ2dvb2cuc3RyaW5nLlBhcnNlciddLCB7fSk7Cmdvb2cuYWRkRGVwZW5kZW5jeSgnbmV0L2J1bGtsb2FkZXIuanMnLCBbJ2dvb2cubmV0LkJ1bGtMb2FkZXInXSwgWydnb29nLmV2ZW50cy5FdmVudCcsICdnb29nLmV2ZW50cy5FdmVudEhhbmRsZXInLCAnZ29vZy5ldmVudHMuRXZlbnRUYXJnZXQnLCAnZ29vZy5sb2cnLCAnZ29vZy5uZXQuQnVsa0xvYWRlckhlbHBlcicsICdnb29nLm5ldC5FdmVudFR5cGUnLCAnZ29vZy5uZXQuWGhySW8nXSwge30pOwpnb29nLmFkZERlcGVuZGVuY3koJ25ldC9idWxrbG9hZGVyX3Rlc3QuanMnLCBbJ2dvb2cubmV0LkJ1bGtMb2FkZXJUZXN0J10sIFsnZ29vZy5ldmVudHMuRXZlbnQnLCAnZ29vZy5ldmVudHMuRXZlbnRIYW5kbGVyJywgJ2dvb2cubmV0LkJ1bGtMb2FkZXInLCAnZ29vZy5uZXQuRXZlbnRUeXBlJywgJ2dvb2cudGVzdGluZy5Nb2NrQ2xvY2snLCAnZ29vZy50ZXN0aW5nLnRlc3RTdWl0ZSddLCB7J2xhbmcnOiAnZXM2JywgJ21vZHVsZSc6ICdnb29nJ30pOwpnb29nLmFkZERlcGVuZGVuY3koJ25ldC9idWxrbG9hZGVyaGVscGVyLmpzJywgWydnb29nLm5ldC5CdWxrTG9hZGVySGVscGVyJ10sIFsnZ29vZy5EaXNwb3NhYmxlJ10sIHt9KTsKZ29vZy5hZGREZXBlbmRlbmN5KCduZXQvY2hhbm5lbGRlYnVnLmpzJywgWydnb29nLm5ldC5DaGFubmVsRGVidWcnXSwgWydnb29nLmpzb24nLCAnZ29vZy5sb2cnXSwgeydsYW5nJzogJ2VzNid9KTsKZ29vZy5hZGREZXBlbmRlbmN5KCduZXQvY2hhbm5lbHJlcXVlc3QuanMnLCBbJ2dvb2cubmV0LkNoYW5uZWxSZXF1ZXN0JywgJ2dvb2cubmV0LkNoYW5uZWxSZXF1ZXN0LkVycm9yJ10sIFsnZ29vZy5UaW1lcicsICdnb29nLmFzeW5jLlRocm90dGxlJywgJ2dvb2cuZG9tLlRhZ05hbWUnLCAnZ29vZy5kb20uc2FmZScsICdnb29nLmV2ZW50cy5FdmVudEhhbmRsZXInLCAnZ29vZy5odG1sLlNhZmVVcmwnLCAnZ29vZy5odG1sLnVuY2hlY2tlZGNvbnZlcnNpb25zJywgJ2dvb2cubmV0LkVycm9yQ29kZScsICdnb29nLm5ldC5FdmVudFR5cGUnLCAnZ29vZy5uZXQuWG1sSHR0cCcsICdnb29nLm9iamVjdCcsICdnb29nLnN0cmluZycsICdnb29nLnN0cmluZy5Db25zdCcsICdnb29nLnVzZXJBZ2VudCddLCB7fSk7Cmdvb2cuYWRkRGVwZW5kZW5jeSgnbmV0L2NoYW5uZWxyZXF1ZXN0X3Rlc3QuanMnLCBbJ2dvb2cubmV0LkNoYW5uZWxSZXF1ZXN0VGVzdCddLCBbJ2dvb2cuVXJpJywgJ2dvb2cuZnVuY3Rpb25zJywgJ2dvb2cubmV0LkJyb3dzZXJDaGFubmVsJywgJ2dvb2cubmV0LkNoYW5uZWxEZWJ1ZycsICdnb29nLm5ldC5DaGFubmVsUmVxdWVzdCcsICdnb29nLnRlc3RpbmcuTW9ja0Nsb2NrJywgJ2dvb2cudGVzdGluZy5Qcm9wZXJ0eVJlcGxhY2VyJywgJ2dvb2cudGVzdGluZy5uZXQuWGhySW8nLCAnZ29vZy50ZXN0aW5nLnJlY29yZEZ1bmN0aW9uJywgJ2dvb2cudGVzdGluZy50ZXN0U3VpdGUnXSwgeydsYW5nJzogJ2VzNicsICdtb2R1bGUnOiAnZ29vZyd9KTsKZ29vZy5hZGREZXBlbmRlbmN5KCduZXQvY29va2llcy5qcycsIFsnZ29vZy5uZXQuQ29va2llcycsICdnb29nLm5ldC5jb29raWVzJ10sIFsnZ29vZy5hc3NlcnRzJywgJ2dvb2cuc3RyaW5nJ10sIHsnbGFuZyc6ICdlczUnfSk7Cmdvb2cuYWRkRGVwZW5kZW5jeSgnbmV0L2Nvb2tpZXNfdGVzdC5qcycsIFsnZ29vZy5uZXQuY29va2llc1Rlc3QnXSwgWydnb29nLmFycmF5JywgJ2dvb2cubmV0LkNvb2tpZXMnLCAnZ29vZy5uZXQuY29va2llcycsICdnb29nLnRlc3RpbmcuUHJvcGVydHlSZXBsYWNlcicsICdnb29nLnRlc3RpbmcudGVzdFN1aXRlJ10sIHsnbGFuZyc6ICdlczYnLCAnbW9kdWxlJzogJ2dvb2cnfSk7Cmdvb2cuYWRkRGVwZW5kZW5jeSgnbmV0L2NvcnN4bWxodHRwZmFjdG9yeS5qcycsIFsnZ29vZy5uZXQuQ29yc1htbEh0dHBGYWN0b3J5JywgJ2dvb2cubmV0LkllQ29yc1hockFkYXB0ZXInXSwgWydnb29nLm5ldC5IdHRwU3RhdHVzJywgJ2dvb2cubmV0Llhockxpa2UnLCAnZ29vZy5uZXQuWG1sSHR0cCcsICdnb29nLm5ldC5YbWxIdHRwRmFjdG9yeSddLCB7fSk7Cmdvb2cuYWRkRGVwZW5kZW5jeSgnbmV0L2NvcnN4bWxodHRwZmFjdG9yeV90ZXN0LmpzJywgWydnb29nLm5ldC5Db3JzWG1sSHR0cEZhY3RvcnlUZXN0J10sIFsnZ29vZy5uZXQuQ29yc1htbEh0dHBGYWN0b3J5JywgJ2dvb2cubmV0LkllQ29yc1hockFkYXB0ZXInLCAnZ29vZy50ZXN0aW5nLnRlc3RTdWl0ZScsICdnb29nLnVzZXJBZ2VudCddLCB7J2xhbmcnOiAnZXM2JywgJ21vZHVsZSc6ICdnb29nJ30pOwpnb29nLmFkZERlcGVuZGVuY3koJ25ldC9jcm9zc2RvbWFpbnJwYy5qcycsIFsnZ29vZy5uZXQuQ3Jvc3NEb21haW5ScGMnXSwgWydnb29nLlVyaScsICdnb29nLmRvbScsICdnb29nLmRvbS5UYWdOYW1lJywgJ2dvb2cuZG9tLnNhZmUnLCAnZ29vZy5ldmVudHMnLCAnZ29vZy5ldmVudHMuRXZlbnRUYXJnZXQnLCAnZ29vZy5ldmVudHMuRXZlbnRUeXBlJywgJ2dvb2cuaHRtbC5TYWZlSHRtbCcsICdnb29nLmxvZycsICdnb29nLm5ldC5FdmVudFR5cGUnLCAnZ29vZy5uZXQuSHR0cFN0YXR1cycsICdnb29nLnN0cmluZycsICdnb29nLnVzZXJBZ2VudCddLCB7fSk7Cmdvb2cuYWRkRGVwZW5kZW5jeSgnbmV0L2Nyb3NzZG9tYWlucnBjX3Rlc3QuanMnLCBbJ2dvb2cubmV0LkNyb3NzRG9tYWluUnBjVGVzdCddLCBbJ2dvb2cuUHJvbWlzZScsICdnb29nLmxvZycsICdnb29nLm5ldC5Dcm9zc0RvbWFpblJwYycsICdnb29nLnRlc3RpbmcuVGVzdENhc2UnLCAnZ29vZy50ZXN0aW5nLnRlc3RTdWl0ZScsICdnb29nLnVzZXJBZ2VudCcsICdnb29nLnVzZXJBZ2VudC5wcm9kdWN0J10sIHsnbGFuZyc6ICdlczYnLCAnbW9kdWxlJzogJ2dvb2cnfSk7Cmdvb2cuYWRkRGVwZW5kZW5jeSgnbmV0L2Vycm9yY29kZS5qcycsIFsnZ29vZy5uZXQuRXJyb3JDb2RlJ10sIFtdLCB7fSk7Cmdvb2cuYWRkRGVwZW5kZW5jeSgnbmV0L2V2ZW50dHlwZS5qcycsIFsnZ29vZy5uZXQuRXZlbnRUeXBlJ10sIFtdLCB7fSk7Cmdvb2cuYWRkRGVwZW5kZW5jeSgnbmV0L2ZldGNoeG1saHR0cGZhY3RvcnkuanMnLCBbJ2dvb2cubmV0LkZldGNoWG1sSHR0cCcsICdnb29nLm5ldC5GZXRjaFhtbEh0dHBGYWN0b3J5J10sIFsnZ29vZy5hc3NlcnRzJywgJ2dvb2cuZXZlbnRzLkV2ZW50VGFyZ2V0JywgJ2dvb2cuZnVuY3Rpb25zJywgJ2dvb2cubG9nJywgJ2dvb2cubmV0Llhockxpa2UnLCAnZ29vZy5uZXQuWG1sSHR0cEZhY3RvcnknXSwgeydsYW5nJzogJ2VzNSd9KTsKZ29vZy5hZGREZXBlbmRlbmN5KCduZXQvZmV0Y2h4bWxodHRwZmFjdG9yeV90ZXN0LmpzJywgWydnb29nLm5ldC5GZXRjaFhtbEh0dHBGYWN0b3J5VGVzdCddLCBbJ2dvb2cubmV0LkZldGNoWG1sSHR0cCcsICdnb29nLm5ldC5GZXRjaFhtbEh0dHBGYWN0b3J5JywgJ2dvb2cudGVzdGluZy5Nb2NrQ29udHJvbCcsICdnb29nLnRlc3RpbmcucmVjb3JkRnVuY3Rpb24nLCAnZ29vZy50ZXN0aW5nLnRlc3RTdWl0ZScsICdnb29nLnVzZXJBZ2VudC5wcm9kdWN0JywgJ2dvb2cudXNlckFnZW50LnByb2R1Y3QuaXNWZXJzaW9uJ10sIHsnbGFuZyc6ICdlczYnLCAnbW9kdWxlJzogJ2dvb2cnfSk7Cmdvb2cuYWRkRGVwZW5kZW5jeSgnbmV0L2ZpbGVkb3dubG9hZGVyLmpzJywgWydnb29nLm5ldC5GaWxlRG93bmxvYWRlcicsICdnb29nLm5ldC5GaWxlRG93bmxvYWRlci5FcnJvciddLCBbJ2dvb2cuRGlzcG9zYWJsZScsICdnb29nLmFzc2VydHMnLCAnZ29vZy5hc3luYy5EZWZlcnJlZCcsICdnb29nLmNyeXB0Lmhhc2gzMicsICdnb29nLmRlYnVnLkVycm9yJywgJ2dvb2cuZXZlbnRzJywgJ2dvb2cuZXZlbnRzLkV2ZW50SGFuZGxlcicsICdnb29nLmZzJywgJ2dvb2cuZnMuRGlyZWN0b3J5RW50cnknLCAnZ29vZy5mcy5FcnJvcicsICdnb29nLmZzLkZpbGVTYXZlcicsICdnb29nLm5ldC5FdmVudFR5cGUnLCAnZ29vZy5uZXQuWGhySW8nLCAnZ29vZy5uZXQuWGhySW9Qb29sJywgJ2dvb2cub2JqZWN0J10sIHt9KTsKZ29vZy5hZGREZXBlbmRlbmN5KCduZXQvZmlsZWRvd25sb2FkZXJfdGVzdC5qcycsIFsnZ29vZy5uZXQuRmlsZURvd25sb2FkZXJUZXN0J10sIFsnZ29vZy5mcy5FcnJvcicsICdnb29nLm5ldC5FcnJvckNvZGUnLCAnZ29vZy5uZXQuRmlsZURvd25sb2FkZXInLCAnZ29vZy5uZXQuWGhySW8nLCAnZ29vZy50ZXN0aW5nLlByb3BlcnR5UmVwbGFjZXInLCAnZ29vZy50ZXN0aW5nLlRlc3RDYXNlJywgJ2dvb2cudGVzdGluZy5mcycsICdnb29nLnRlc3RpbmcuZnMuRmlsZVN5c3RlbScsICdnb29nLnRlc3RpbmcubmV0LlhocklvUG9vbCcsICdnb29nLnRlc3RpbmcudGVzdFN1aXRlJ10sIHsnbGFuZyc6ICdlczYnLCAnbW9kdWxlJzogJ2dvb2cnfSk7Cmdvb2cuYWRkRGVwZW5kZW5jeSgnbmV0L2h0dHBzdGF0dXMuanMnLCBbJ2dvb2cubmV0Lkh0dHBTdGF0dXMnXSwgW10sIHt9KTsKZ29vZy5hZGREZXBlbmRlbmN5KCduZXQvaHR0cHN0YXR1c25hbWUuanMnLCBbJ2dvb2cubmV0Lkh0dHBTdGF0dXNOYW1lJ10sIFtdLCB7fSk7Cmdvb2cuYWRkRGVwZW5kZW5jeSgnbmV0L2lmcmFtZWlvLmpzJywgWydnb29nLm5ldC5JZnJhbWVJbycsICdnb29nLm5ldC5JZnJhbWVJby5JbmNyZW1lbnRhbERhdGFFdmVudCddLCBbJ2dvb2cuVGltZXInLCAnZ29vZy5VcmknLCAnZ29vZy5hcnJheScsICdnb29nLmFzc2VydHMnLCAnZ29vZy5kZWJ1Zy5IdG1sRm9ybWF0dGVyJywgJ2dvb2cuZG9tJywgJ2dvb2cuZG9tLklucHV0VHlwZScsICdnb29nLmRvbS5UYWdOYW1lJywgJ2dvb2cuZG9tLnNhZmUnLCAnZ29vZy5ldmVudHMnLCAnZ29vZy5ldmVudHMuRXZlbnQnLCAnZ29vZy5ldmVudHMuRXZlbnRUYXJnZXQnLCAnZ29vZy5ldmVudHMuRXZlbnRUeXBlJywgJ2dvb2cuaHRtbC5TYWZlVXJsJywgJ2dvb2cuaHRtbC5sZWdhY3ljb252ZXJzaW9ucycsICdnb29nLmh0bWwudW5jaGVja2VkY29udmVyc2lvbnMnLCAnZ29vZy5qc29uJywgJ2dvb2cubG9nJywgJ2dvb2cubG9nLkxldmVsJywgJ2dvb2cubmV0LkVycm9yQ29kZScsICdnb29nLm5ldC5FdmVudFR5cGUnLCAnZ29vZy5yZWZsZWN0JywgJ2dvb2cuc3RyaW5nJywgJ2dvb2cuc3RyaW5nLkNvbnN0JywgJ2dvb2cuc3RydWN0cycsICdnb29nLnVzZXJBZ2VudCddLCB7fSk7Cmdvb2cuYWRkRGVwZW5kZW5jeSgnbmV0L2lmcmFtZWlvX3Rlc3QuanMnLCBbJ2dvb2cubmV0LklmcmFtZUlvVGVzdCddLCBbJ2dvb2cuZGVidWcnLCAnZ29vZy5kZWJ1Zy5EaXZDb25zb2xlJywgJ2dvb2cuZGVidWcuTG9nTWFuYWdlcicsICdnb29nLmRvbScsICdnb29nLmRvbS5UYWdOYW1lJywgJ2dvb2cuZXZlbnRzJywgJ2dvb2cuZXZlbnRzLkV2ZW50VHlwZScsICdnb29nLmxvZycsICdnb29nLmxvZy5MZXZlbCcsICdnb29nLm5ldC5JZnJhbWVJbycsICdnb29nLnRlc3RpbmcuZXZlbnRzJywgJ2dvb2cudGVzdGluZy5ldmVudHMuRXZlbnQnLCAnZ29vZy50ZXN0aW5nLmpzdW5pdCcsICdnb29nLnVzZXJBZ2VudCddLCB7J2xhbmcnOiAnZXM2J30pOwpnb29nLmFkZERlcGVuZGVuY3koJ25ldC9pZnJhbWVsb2FkbW9uaXRvci5qcycsIFsnZ29vZy5uZXQuSWZyYW1lTG9hZE1vbml0b3InXSwgWydnb29nLmRvbScsICdnb29nLmV2ZW50cycsICdnb29nLmV2ZW50cy5FdmVudFRhcmdldCcsICdnb29nLmV2ZW50cy5FdmVudFR5cGUnLCAnZ29vZy51c2VyQWdlbnQnXSwge30pOwpnb29nLmFkZERlcGVuZGVuY3koJ25ldC9pZnJhbWVsb2FkbW9uaXRvcl90ZXN0LmpzJywgWydnb29nLm5ldC5JZnJhbWVMb2FkTW9uaXRvclRlc3QnXSwgWydnb29nLlByb21pc2UnLCAnZ29vZy5UaW1lcicsICdnb29nLmRvbScsICdnb29nLmRvbS5UYWdOYW1lJywgJ2dvb2cuZXZlbnRzJywgJ2dvb2cubmV0LklmcmFtZUxvYWRNb25pdG9yJywgJ2dvb2cudGVzdGluZy50ZXN0U3VpdGUnXSwgeydsYW5nJzogJ2VzNicsICdtb2R1bGUnOiAnZ29vZyd9KTsKZ29vZy5hZGREZXBlbmRlbmN5KCduZXQvaW1hZ2Vsb2FkZXIuanMnLCBbJ2dvb2cubmV0LkltYWdlTG9hZGVyJ10sIFsnZ29vZy5hcnJheScsICdnb29nLmRvbScsICdnb29nLmRvbS5UYWdOYW1lJywgJ2dvb2cuZXZlbnRzLkV2ZW50SGFuZGxlcicsICdnb29nLmV2ZW50cy5FdmVudFRhcmdldCcsICdnb29nLmV2ZW50cy5FdmVudFR5cGUnLCAnZ29vZy5uZXQuRXZlbnRUeXBlJywgJ2dvb2cub2JqZWN0JywgJ2dvb2cudXNlckFnZW50J10sIHt9KTsKZ29vZy5hZGREZXBlbmRlbmN5KCduZXQvaW1hZ2Vsb2FkZXJfdGVzdC5qcycsIFsnZ29vZy5uZXQuSW1hZ2VMb2FkZXJUZXN0J10sIFsnZ29vZy5Qcm9taXNlJywgJ2dvb2cuVGltZXInLCAnZ29vZy5hcnJheScsICdnb29nLmRpc3Bvc2UnLCAnZ29vZy5ldmVudHMnLCAnZ29vZy5ldmVudHMuRXZlbnQnLCAnZ29vZy5ldmVudHMuRXZlbnRUeXBlJywgJ2dvb2cubmV0LkV2ZW50VHlwZScsICdnb29nLm5ldC5JbWFnZUxvYWRlcicsICdnb29nLm9iamVjdCcsICdnb29nLnN0cmluZycsICdnb29nLnRlc3RpbmcuVGVzdENhc2UnLCAnZ29vZy50ZXN0aW5nLnJlY29yZEZ1bmN0aW9uJywgJ2dvb2cudGVzdGluZy50ZXN0U3VpdGUnXSwgeydsYW5nJzogJ2VzNicsICdtb2R1bGUnOiAnZ29vZyd9KTsKZ29vZy5hZGREZXBlbmRlbmN5KCduZXQvaXBhZGRyZXNzLmpzJywgWydnb29nLm5ldC5JcEFkZHJlc3MnLCAnZ29vZy5uZXQuSXB2NEFkZHJlc3MnLCAnZ29vZy5uZXQuSXB2NkFkZHJlc3MnXSwgWydnb29nLmFycmF5JywgJ2dvb2cubWF0aC5JbnRlZ2VyJywgJ2dvb2cub2JqZWN0JywgJ2dvb2cuc3RyaW5nJ10sIHt9KTsKZ29vZy5hZGREZXBlbmRlbmN5KCduZXQvaXBhZGRyZXNzX3Rlc3QuanMnLCBbJ2dvb2cubmV0LklwQWRkcmVzc1Rlc3QnXSwgWydnb29nLmFycmF5JywgJ2dvb2cubWF0aC5JbnRlZ2VyJywgJ2dvb2cubmV0LklwQWRkcmVzcycsICdnb29nLm5ldC5JcHY0QWRkcmVzcycsICdnb29nLm5ldC5JcHY2QWRkcmVzcycsICdnb29nLnRlc3RpbmcudGVzdFN1aXRlJ10sIHsnbGFuZyc6ICdlczYnLCAnbW9kdWxlJzogJ2dvb2cnfSk7Cmdvb2cuYWRkRGVwZW5kZW5jeSgnbmV0L2pzbG9hZGVyLmpzJywgWydnb29nLm5ldC5qc2xvYWRlcicsICdnb29nLm5ldC5qc2xvYWRlci5FcnJvcicsICdnb29nLm5ldC5qc2xvYWRlci5FcnJvckNvZGUnLCAnZ29vZy5uZXQuanNsb2FkZXIuT3B0aW9ucyddLCBbJ2dvb2cuYXJyYXknLCAnZ29vZy5hc3luYy5EZWZlcnJlZCcsICdnb29nLmRlYnVnLkVycm9yJywgJ2dvb2cuZG9tJywgJ2dvb2cuZG9tLlRhZ05hbWUnLCAnZ29vZy5kb20uc2FmZScsICdnb29nLmh0bWwuVHJ1c3RlZFJlc291cmNlVXJsJywgJ2dvb2cub2JqZWN0J10sIHt9KTsKZ29vZy5hZGREZXBlbmRlbmN5KCduZXQvanNsb2FkZXJfdGVzdC5qcycsIFsnZ29vZy5uZXQuanNsb2FkZXJUZXN0J10sIFsnZ29vZy5hcnJheScsICdnb29nLmRvbScsICdnb29nLmRvbS5UYWdOYW1lJywgJ2dvb2cuaHRtbC5UcnVzdGVkUmVzb3VyY2VVcmwnLCAnZ29vZy5uZXQuanNsb2FkZXInLCAnZ29vZy5uZXQuanNsb2FkZXIuRXJyb3JDb2RlJywgJ2dvb2cuc3RyaW5nLkNvbnN0JywgJ2dvb2cudGVzdGluZy50ZXN0U3VpdGUnXSwgeydsYW5nJzogJ2VzNicsICdtb2R1bGUnOiAnZ29vZyd9KTsKZ29vZy5hZGREZXBlbmRlbmN5KCduZXQvanNvbnAuanMnLCBbJ2dvb2cubmV0Lkpzb25wJ10sIFsnZ29vZy5odG1sLlRydXN0ZWRSZXNvdXJjZVVybCcsICdnb29nLm5ldC5qc2xvYWRlcicsICdnb29nLm9iamVjdCddLCB7fSk7Cmdvb2cuYWRkRGVwZW5kZW5jeSgnbmV0L2pzb25wX3Rlc3QuanMnLCBbJ2dvb2cubmV0Lkpzb25wVGVzdCddLCBbJ2dvb2cuaHRtbC5UcnVzdGVkUmVzb3VyY2VVcmwnLCAnZ29vZy5uZXQuSnNvbnAnLCAnZ29vZy5zdHJpbmcuQ29uc3QnLCAnZ29vZy50ZXN0aW5nLlByb3BlcnR5UmVwbGFjZXInLCAnZ29vZy50ZXN0aW5nLnJlY29yZEZ1bmN0aW9uJywgJ2dvb2cudGVzdGluZy50ZXN0U3VpdGUnLCAnZ29vZy51c2VyQWdlbnQnXSwgeydsYW5nJzogJ2VzNicsICdtb2R1bGUnOiAnZ29vZyd9KTsKZ29vZy5hZGREZXBlbmRlbmN5KCduZXQvbW9ja2lmcmFtZWlvLmpzJywgWydnb29nLm5ldC5Nb2NrSUZyYW1lSW8nXSwgWydnb29nLmV2ZW50cy5FdmVudFRhcmdldCcsICdnb29nLm5ldC5FcnJvckNvZGUnLCAnZ29vZy5uZXQuRXZlbnRUeXBlJywgJ2dvb2cubmV0LklmcmFtZUlvJ10sIHt9KTsKZ29vZy5hZGREZXBlbmRlbmN5KCduZXQvbXVsdGlpZnJhbWVsb2FkbW9uaXRvci5qcycsIFsnZ29vZy5uZXQuTXVsdGlJZnJhbWVMb2FkTW9uaXRvciddLCBbJ2dvb2cuZXZlbnRzJywgJ2dvb2cubmV0LklmcmFtZUxvYWRNb25pdG9yJ10sIHt9KTsKZ29vZy5hZGREZXBlbmRlbmN5KCduZXQvbXVsdGlpZnJhbWVsb2FkbW9uaXRvcl90ZXN0LmpzJywgWydnb29nLm5ldC5NdWx0aUlmcmFtZUxvYWRNb25pdG9yVGVzdCddLCBbJ2dvb2cuUHJvbWlzZScsICdnb29nLlRpbWVyJywgJ2dvb2cuZG9tJywgJ2dvb2cuZG9tLlRhZ05hbWUnLCAnZ29vZy5uZXQuTXVsdGlJZnJhbWVMb2FkTW9uaXRvcicsICdnb29nLnRlc3RpbmcuUHJvcGVydHlSZXBsYWNlcicsICdnb29nLnRlc3RpbmcudGVzdFN1aXRlJ10sIHsnbGFuZyc6ICdlczYnLCAnbW9kdWxlJzogJ2dvb2cnfSk7Cmdvb2cuYWRkRGVwZW5kZW5jeSgnbmV0L25ldHdvcmtzdGF0dXNtb25pdG9yLmpzJywgWydnb29nLm5ldC5OZXR3b3JrU3RhdHVzTW9uaXRvciddLCBbJ2dvb2cuZXZlbnRzLkxpc3RlbmFibGUnXSwge30pOwpnb29nLmFkZERlcGVuZGVuY3koJ25ldC9uZXR3b3JrdGVzdGVyLmpzJywgWydnb29nLm5ldC5OZXR3b3JrVGVzdGVyJ10sIFsnZ29vZy5UaW1lcicsICdnb29nLlVyaScsICdnb29nLmRvbS5zYWZlJywgJ2dvb2cubG9nJ10sIHt9KTsKZ29vZy5hZGREZXBlbmRlbmN5KCduZXQvbmV0d29ya3Rlc3Rlcl90ZXN0LmpzJywgWydnb29nLm5ldC5OZXR3b3JrVGVzdGVyVGVzdCddLCBbJ2dvb2cuVXJpJywgJ2dvb2cubmV0Lk5ldHdvcmtUZXN0ZXInLCAnZ29vZy50ZXN0aW5nLk1vY2tDbG9jaycsICdnb29nLnRlc3RpbmcudGVzdFN1aXRlJ10sIHsnbGFuZyc6ICdlczYnLCAnbW9kdWxlJzogJ2dvb2cnfSk7Cmdvb2cuYWRkRGVwZW5kZW5jeSgnbmV0L3JwYy9odHRwY29ycy5qcycsIFsnZ29vZy5uZXQucnBjLkh0dHBDb3JzJ10sIFsnZ29vZy5VcmknLCAnZ29vZy5vYmplY3QnLCAnZ29vZy5zdHJpbmcnLCAnZ29vZy51cmkudXRpbHMnXSwgeydtb2R1bGUnOiAnZ29vZyd9KTsKZ29vZy5hZGREZXBlbmRlbmN5KCduZXQvcnBjL2h0dHBjb3JzX3Rlc3QuanMnLCBbJ2dvb2cubmV0LnJwYy5IdHRwQ29yc1Rlc3QnXSwgWydnb29nLlVyaScsICdnb29nLm5ldC5ycGMuSHR0cENvcnMnLCAnZ29vZy50ZXN0aW5nLnRlc3RTdWl0ZSddLCB7J2xhbmcnOiAnZXM2JywgJ21vZHVsZSc6ICdnb29nJ30pOwpnb29nLmFkZERlcGVuZGVuY3koJ25ldC9zdHJlYW1zL2Jhc2U2NHBic3RyZWFtcGFyc2VyLmpzJywgWydnb29nLm5ldC5zdHJlYW1zLkJhc2U2NFBiU3RyZWFtUGFyc2VyJ10sIFsnZ29vZy5hc3NlcnRzJywgJ2dvb2cubmV0LnN0cmVhbXMuQmFzZTY0U3RyZWFtRGVjb2RlcicsICdnb29nLm5ldC5zdHJlYW1zLlBiU3RyZWFtUGFyc2VyJywgJ2dvb2cubmV0LnN0cmVhbXMuU3RyZWFtUGFyc2VyJ10sIHsnbW9kdWxlJzogJ2dvb2cnfSk7Cmdvb2cuYWRkRGVwZW5kZW5jeSgnbmV0L3N0cmVhbXMvYmFzZTY0cGJzdHJlYW1wYXJzZXJfdGVzdC5qcycsIFsnZ29vZy5uZXQuc3RyZWFtcy5CYXNlNjRQYlN0cmVhbVBhcnNlclRlc3QnXSwgWydnb29nLmNyeXB0LmJhc2U2NCcsICdnb29nLm5ldC5zdHJlYW1zLkJhc2U2NFBiU3RyZWFtUGFyc2VyJywgJ2dvb2cub2JqZWN0JywgJ2dvb2cudGVzdGluZy50ZXN0U3VpdGUnXSwgeydsYW5nJzogJ2VzNicsICdtb2R1bGUnOiAnZ29vZyd9KTsKZ29vZy5hZGREZXBlbmRlbmN5KCduZXQvc3RyZWFtcy9iYXNlNjRzdHJlYW1kZWNvZGVyLmpzJywgWydnb29nLm5ldC5zdHJlYW1zLkJhc2U2NFN0cmVhbURlY29kZXInXSwgWydnb29nLmFzc2VydHMnLCAnZ29vZy5jcnlwdC5iYXNlNjQnXSwge30pOwpnb29nLmFkZERlcGVuZGVuY3koJ25ldC9zdHJlYW1zL2Jhc2U2NHN0cmVhbWRlY29kZXJfdGVzdC5qcycsIFsnZ29vZy5uZXQuc3RyZWFtcy5CYXNlNjRTdHJlYW1EZWNvZGVyVGVzdCddLCBbJ2dvb2cubmV0LnN0cmVhbXMuQmFzZTY0U3RyZWFtRGVjb2RlcicsICdnb29nLnRlc3RpbmcuYXNzZXJ0cycsICdnb29nLnRlc3RpbmcudGVzdFN1aXRlJ10sIHsnbGFuZyc6ICdlczYnLCAnbW9kdWxlJzogJ2dvb2cnfSk7Cmdvb2cuYWRkRGVwZW5kZW5jeSgnbmV0L3N0cmVhbXMvanNvbnN0cmVhbXBhcnNlci5qcycsIFsnZ29vZy5uZXQuc3RyZWFtcy5Kc29uU3RyZWFtUGFyc2VyJywgJ2dvb2cubmV0LnN0cmVhbXMuSnNvblN0cmVhbVBhcnNlci5PcHRpb25zJ10sIFsnZ29vZy5hc3NlcnRzJywgJ2dvb2cubmV0LnN0cmVhbXMuU3RyZWFtUGFyc2VyJywgJ2dvb2cubmV0LnN0cmVhbXMudXRpbHMnXSwge30pOwpnb29nLmFkZERlcGVuZGVuY3koJ25ldC9zdHJlYW1zL2pzb25zdHJlYW1wYXJzZXJfdGVzdC5qcycsIFsnZ29vZy5uZXQuc3RyZWFtcy5Kc29uU3RyZWFtUGFyc2VyVGVzdCddLCBbJ2dvb2cuYXJyYXknLCAnZ29vZy5qc29uJywgJ2dvb2cubGFicy50ZXN0aW5nLkpzb25GdXp6aW5nJywgJ2dvb2cubmV0LnN0cmVhbXMuSnNvblN0cmVhbVBhcnNlcicsICdnb29nLnRlc3RpbmcuYXNzZXJ0cycsICdnb29nLnRlc3RpbmcudGVzdFN1aXRlJywgJ2dvb2cudXJpLnV0aWxzJ10sIHsnbGFuZyc6ICdlczYnLCAnbW9kdWxlJzogJ2dvb2cnfSk7Cmdvb2cuYWRkRGVwZW5kZW5jeSgnbmV0L3N0cmVhbXMvbm9kZXJlYWRhYmxlc3RyZWFtLmpzJywgWydnb29nLm5ldC5zdHJlYW1zLk5vZGVSZWFkYWJsZVN0cmVhbSddLCBbXSwge30pOwpnb29nLmFkZERlcGVuZGVuY3koJ25ldC9zdHJlYW1zL3BianNvbnN0cmVhbXBhcnNlci5qcycsIFsnZ29vZy5uZXQuc3RyZWFtcy5QYkpzb25TdHJlYW1QYXJzZXInXSwgWydnb29nLmFzc2VydHMnLCAnZ29vZy5uZXQuc3RyZWFtcy5Kc29uU3RyZWFtUGFyc2VyJywgJ2dvb2cubmV0LnN0cmVhbXMuU3RyZWFtUGFyc2VyJywgJ2dvb2cubmV0LnN0cmVhbXMudXRpbHMnXSwgeydtb2R1bGUnOiAnZ29vZyd9KTsKZ29vZy5hZGREZXBlbmRlbmN5KCduZXQvc3RyZWFtcy9wYmpzb25zdHJlYW1wYXJzZXJfdGVzdC5qcycsIFsnZ29vZy5uZXQuc3RyZWFtcy5QYkpzb25TdHJlYW1QYXJzZXJUZXN0J10sIFsnZ29vZy5uZXQuc3RyZWFtcy5QYkpzb25TdHJlYW1QYXJzZXInLCAnZ29vZy5vYmplY3QnLCAnZ29vZy50ZXN0aW5nLnRlc3RTdWl0ZSddLCB7J2xhbmcnOiAnZXM2JywgJ21vZHVsZSc6ICdnb29nJ30pOwpnb29nLmFkZERlcGVuZGVuY3koJ25ldC9zdHJlYW1zL3Bic3RyZWFtcGFyc2VyLmpzJywgWydnb29nLm5ldC5zdHJlYW1zLlBiU3RyZWFtUGFyc2VyJ10sIFsnZ29vZy5hc3NlcnRzJywgJ2dvb2cubmV0LnN0cmVhbXMuU3RyZWFtUGFyc2VyJ10sIHt9KTsKZ29vZy5hZGREZXBlbmRlbmN5KCduZXQvc3RyZWFtcy9wYnN0cmVhbXBhcnNlcl90ZXN0LmpzJywgWydnb29nLm5ldC5zdHJlYW1zLlBiU3RyZWFtUGFyc2VyVGVzdCddLCBbJ2dvb2cubmV0LnN0cmVhbXMuUGJTdHJlYW1QYXJzZXInLCAnZ29vZy5vYmplY3QnLCAnZ29vZy50ZXN0aW5nLmFzc2VydHMnLCAnZ29vZy50ZXN0aW5nLnRlc3RTdWl0ZSddLCB7J2xhbmcnOiAnZXM2JywgJ21vZHVsZSc6ICdnb29nJ30pOwpnb29nLmFkZERlcGVuZGVuY3koJ25ldC9zdHJlYW1zL3N0cmVhbWZhY3RvcnkuanMnLCBbJ2dvb2cubmV0LnN0cmVhbXMuY3JlYXRlWGhyTm9kZVJlYWRhYmxlU3RyZWFtJ10sIFsnZ29vZy5hc3NlcnRzJywgJ2dvb2cubmV0LnN0cmVhbXMuWGhyTm9kZVJlYWRhYmxlU3RyZWFtJywgJ2dvb2cubmV0LnN0cmVhbXMuWGhyU3RyZWFtUmVhZGVyJ10sIHt9KTsKZ29vZy5hZGREZXBlbmRlbmN5KCduZXQvc3RyZWFtcy9zdHJlYW1wYXJzZXIuanMnLCBbJ2dvb2cubmV0LnN0cmVhbXMuU3RyZWFtUGFyc2VyJ10sIFtdLCB7fSk7Cmdvb2cuYWRkRGVwZW5kZW5jeSgnbmV0L3N0cmVhbXMvdXRpbHMuanMnLCBbJ2dvb2cubmV0LnN0cmVhbXMudXRpbHMnXSwgW10sIHsnbW9kdWxlJzogJ2dvb2cnfSk7Cmdvb2cuYWRkRGVwZW5kZW5jeSgnbmV0L3N0cmVhbXMveGhybm9kZXJlYWRhYmxlc3RyZWFtLmpzJywgWydnb29nLm5ldC5zdHJlYW1zLlhock5vZGVSZWFkYWJsZVN0cmVhbSddLCBbJ2dvb2cuYXJyYXknLCAnZ29vZy5sb2cnLCAnZ29vZy5uZXQuc3RyZWFtcy5Ob2RlUmVhZGFibGVTdHJlYW0nLCAnZ29vZy5uZXQuc3RyZWFtcy5YaHJTdHJlYW1SZWFkZXInXSwge30pOwpnb29nLmFkZERlcGVuZGVuY3koJ25ldC9zdHJlYW1zL3hocm5vZGVyZWFkYWJsZXN0cmVhbV90ZXN0LmpzJywgWydnb29nLm5ldC5zdHJlYW1zLlhock5vZGVSZWFkYWJsZVN0cmVhbVRlc3QnXSwgWydnb29nLm5ldC5zdHJlYW1zLk5vZGVSZWFkYWJsZVN0cmVhbScsICdnb29nLm5ldC5zdHJlYW1zLlhock5vZGVSZWFkYWJsZVN0cmVhbScsICdnb29nLm5ldC5zdHJlYW1zLlhoclN0cmVhbVJlYWRlcicsICdnb29nLnRlc3RpbmcuUHJvcGVydHlSZXBsYWNlcicsICdnb29nLnRlc3RpbmcuYXNzZXJ0cycsICdnb29nLnRlc3RpbmcudGVzdFN1aXRlJ10sIHsnbGFuZyc6ICdlczYnLCAnbW9kdWxlJzogJ2dvb2cnfSk7Cmdvb2cuYWRkRGVwZW5kZW5jeSgnbmV0L3N0cmVhbXMveGhyc3RyZWFtcmVhZGVyLmpzJywgWydnb29nLm5ldC5zdHJlYW1zLlhoclN0cmVhbVJlYWRlciddLCBbJ2dvb2cuZXZlbnRzLkV2ZW50SGFuZGxlcicsICdnb29nLmxvZycsICdnb29nLm5ldC5FcnJvckNvZGUnLCAnZ29vZy5uZXQuRXZlbnRUeXBlJywgJ2dvb2cubmV0Lkh0dHBTdGF0dXMnLCAnZ29vZy5uZXQuWGhySW8nLCAnZ29vZy5uZXQuWG1sSHR0cCcsICdnb29nLm5ldC5zdHJlYW1zLkJhc2U2NFBiU3RyZWFtUGFyc2VyJywgJ2dvb2cubmV0LnN0cmVhbXMuSnNvblN0cmVhbVBhcnNlcicsICdnb29nLm5ldC5zdHJlYW1zLlBiSnNvblN0cmVhbVBhcnNlcicsICdnb29nLm5ldC5zdHJlYW1zLlBiU3RyZWFtUGFyc2VyJywgJ2dvb2cuc3RyaW5nJywgJ2dvb2cudXNlckFnZW50J10sIHt9KTsKZ29vZy5hZGREZXBlbmRlbmN5KCduZXQvc3RyZWFtcy94aHJzdHJlYW1yZWFkZXJfdGVzdC5qcycsIFsnZ29vZy5uZXQuc3RyZWFtcy5YaHJTdHJlYW1SZWFkZXJUZXN0J10sIFsnZ29vZy5uZXQuRXJyb3JDb2RlJywgJ2dvb2cubmV0Lkh0dHBTdGF0dXMnLCAnZ29vZy5uZXQuWGhySW8nLCAnZ29vZy5uZXQuWG1sSHR0cCcsICdnb29nLm5ldC5zdHJlYW1zLkJhc2U2NFBiU3RyZWFtUGFyc2VyJywgJ2dvb2cubmV0LnN0cmVhbXMuSnNvblN0cmVhbVBhcnNlcicsICdnb29nLm5ldC5zdHJlYW1zLlBiSnNvblN0cmVhbVBhcnNlcicsICdnb29nLm5ldC5zdHJlYW1zLlBiU3RyZWFtUGFyc2VyJywgJ2dvb2cubmV0LnN0cmVhbXMuWGhyU3RyZWFtUmVhZGVyJywgJ2dvb2cub2JqZWN0JywgJ2dvb2cudGVzdGluZy5uZXQuWGhySW8nLCAnZ29vZy50ZXN0aW5nLnRlc3RTdWl0ZSddLCB7J2xhbmcnOiAnZXM2JywgJ21vZHVsZSc6ICdnb29nJ30pOwpnb29nLmFkZERlcGVuZGVuY3koJ25ldC90ZXN0ZGF0YS9qc2xvYWRlcl90ZXN0MS5qcycsIFsnZ29vZy5uZXQudGVzdGRhdGEuanNsb2FkZXJfdGVzdDEnXSwgW10sIHt9KTsKZ29vZy5hZGREZXBlbmRlbmN5KCduZXQvdGVzdGRhdGEvanNsb2FkZXJfdGVzdDIuanMnLCBbJ2dvb2cubmV0LnRlc3RkYXRhLmpzbG9hZGVyX3Rlc3QyJ10sIFtdLCB7fSk7Cmdvb2cuYWRkRGVwZW5kZW5jeSgnbmV0L3Rlc3RkYXRhL2pzbG9hZGVyX3Rlc3QzLmpzJywgWydnb29nLm5ldC50ZXN0ZGF0YS5qc2xvYWRlcl90ZXN0MyddLCBbXSwge30pOwpnb29nLmFkZERlcGVuZGVuY3koJ25ldC90ZXN0ZGF0YS9qc2xvYWRlcl90ZXN0NC5qcycsIFsnZ29vZy5uZXQudGVzdGRhdGEuanNsb2FkZXJfdGVzdDQnXSwgW10sIHt9KTsKZ29vZy5hZGREZXBlbmRlbmN5KCduZXQvdG1wbmV0d29yay5qcycsIFsnZ29vZy5uZXQudG1wbmV0d29yayddLCBbJ2dvb2cuVXJpJywgJ2dvb2cuZG9tLnNhZmUnLCAnZ29vZy5uZXQuQ2hhbm5lbERlYnVnJ10sIHt9KTsKZ29vZy5hZGREZXBlbmRlbmN5KCduZXQvd2Vic29ja2V0LmpzJywgWydnb29nLm5ldC5XZWJTb2NrZXQnLCAnZ29vZy5uZXQuV2ViU29ja2V0LkVycm9yRXZlbnQnLCAnZ29vZy5uZXQuV2ViU29ja2V0LkV2ZW50VHlwZScsICdnb29nLm5ldC5XZWJTb2NrZXQuTWVzc2FnZUV2ZW50J10sIFsnZ29vZy5UaW1lcicsICdnb29nLmFzc2VydHMnLCAnZ29vZy5kZWJ1Zy5lbnRyeVBvaW50UmVnaXN0cnknLCAnZ29vZy5ldmVudHMnLCAnZ29vZy5ldmVudHMuRXZlbnQnLCAnZ29vZy5ldmVudHMuRXZlbnRUYXJnZXQnLCAnZ29vZy5sb2cnXSwgeydsYW5nJzogJ2VzNSd9KTsKZ29vZy5hZGREZXBlbmRlbmN5KCduZXQvd2Vic29ja2V0X3Rlc3QuanMnLCBbJ2dvb2cubmV0LldlYlNvY2tldFRlc3QnXSwgWydnb29nLmRlYnVnLkVudHJ5UG9pbnRNb25pdG9yJywgJ2dvb2cuZGVidWcuRXJyb3JIYW5kbGVyJywgJ2dvb2cuZGVidWcuZW50cnlQb2ludFJlZ2lzdHJ5JywgJ2dvb2cuZXZlbnRzJywgJ2dvb2cuZnVuY3Rpb25zJywgJ2dvb2cubmV0LldlYlNvY2tldCcsICdnb29nLnRlc3RpbmcuTW9ja0Nsb2NrJywgJ2dvb2cudGVzdGluZy5Qcm9wZXJ0eVJlcGxhY2VyJywgJ2dvb2cudGVzdGluZy5yZWNvcmRGdW5jdGlvbicsICdnb29nLnRlc3RpbmcudGVzdFN1aXRlJ10sIHsnbGFuZyc6ICdlczYnLCAnbW9kdWxlJzogJ2dvb2cnfSk7Cmdvb2cuYWRkRGVwZW5kZW5jeSgnbmV0L3dyYXBwZXJ4bWxodHRwZmFjdG9yeS5qcycsIFsnZ29vZy5uZXQuV3JhcHBlclhtbEh0dHBGYWN0b3J5J10sIFsnZ29vZy5uZXQuWGhyTGlrZScsICdnb29nLm5ldC5YbWxIdHRwRmFjdG9yeSddLCB7fSk7Cmdvb2cuYWRkRGVwZW5kZW5jeSgnbmV0L3hocmlvLmpzJywgWydnb29nLm5ldC5YaHJJbycsICdnb29nLm5ldC5YaHJJby5SZXNwb25zZVR5cGUnXSwgWydnb29nLlRpbWVyJywgJ2dvb2cuYXJyYXknLCAnZ29vZy5hc3NlcnRzJywgJ2dvb2cuZGVidWcuZW50cnlQb2ludFJlZ2lzdHJ5JywgJ2dvb2cuZXZlbnRzLkV2ZW50VGFyZ2V0JywgJ2dvb2cuanNvbi5oeWJyaWQnLCAnZ29vZy5sb2cnLCAnZ29vZy5uZXQuRXJyb3JDb2RlJywgJ2dvb2cubmV0LkV2ZW50VHlwZScsICdnb29nLm5ldC5IdHRwU3RhdHVzJywgJ2dvb2cubmV0LlhtbEh0dHAnLCAnZ29vZy5vYmplY3QnLCAnZ29vZy5zdHJpbmcnLCAnZ29vZy5zdHJ1Y3RzJywgJ2dvb2cuc3RydWN0cy5NYXAnLCAnZ29vZy51cmkudXRpbHMnLCAnZ29vZy51c2VyQWdlbnQnXSwge30pOwpnb29nLmFkZERlcGVuZGVuY3koJ25ldC94aHJpb190ZXN0LmpzJywgWydnb29nLm5ldC5YaHJJb1Rlc3QnXSwgWydnb29nLlVyaScsICdnb29nLmRlYnVnLkVudHJ5UG9pbnRNb25pdG9yJywgJ2dvb2cuZGVidWcuRXJyb3JIYW5kbGVyJywgJ2dvb2cuZGVidWcuZW50cnlQb2ludFJlZ2lzdHJ5JywgJ2dvb2cuZXZlbnRzJywgJ2dvb2cuZnVuY3Rpb25zJywgJ2dvb2cubmV0LkV2ZW50VHlwZScsICdnb29nLm5ldC5XcmFwcGVyWG1sSHR0cEZhY3RvcnknLCAnZ29vZy5uZXQuWGhySW8nLCAnZ29vZy5uZXQuWG1sSHR0cCcsICdnb29nLm9iamVjdCcsICdnb29nLnN0cmluZycsICdnb29nLnRlc3RpbmcuTW9ja0Nsb2NrJywgJ2dvb2cudGVzdGluZy5Qcm9wZXJ0eVJlcGxhY2VyJywgJ2dvb2cudGVzdGluZy5qc3VuaXQnLCAnZ29vZy50ZXN0aW5nLm5ldC5YaHJJbycsICdnb29nLnRlc3RpbmcucmVjb3JkRnVuY3Rpb24nLCAnZ29vZy51c2VyQWdlbnQucHJvZHVjdCddLCB7J2xhbmcnOiAnZXM2J30pOwpnb29nLmFkZERlcGVuZGVuY3koJ25ldC94aHJpb3Bvb2wuanMnLCBbJ2dvb2cubmV0LlhocklvUG9vbCddLCBbJ2dvb2cubmV0LlhocklvJywgJ2dvb2cuc3RydWN0cy5Qcmlvcml0eVBvb2wnXSwge30pOwpnb29nLmFkZERlcGVuZGVuY3koJ25ldC94aHJpb3Bvb2xfdGVzdC5qcycsIFsnZ29vZy5uZXQuWGhySW9Qb29sVGVzdCddLCBbJ2dvb2cubmV0LlhocklvUG9vbCcsICdnb29nLnN0cnVjdHMuTWFwJywgJ2dvb2cudGVzdGluZy50ZXN0U3VpdGUnXSwgeydsYW5nJzogJ2VzNicsICdtb2R1bGUnOiAnZ29vZyd9KTsKZ29vZy5hZGREZXBlbmRlbmN5KCduZXQveGhybGlrZS5qcycsIFsnZ29vZy5uZXQuWGhyTGlrZSddLCBbXSwge30pOwpnb29nLmFkZERlcGVuZGVuY3koJ25ldC94aHJtYW5hZ2VyLmpzJywgWydnb29nLm5ldC5YaHJNYW5hZ2VyJywgJ2dvb2cubmV0Llhock1hbmFnZXIuRXZlbnQnLCAnZ29vZy5uZXQuWGhyTWFuYWdlci5SZXF1ZXN0J10sIFsnZ29vZy5ldmVudHMnLCAnZ29vZy5ldmVudHMuRXZlbnQnLCAnZ29vZy5ldmVudHMuRXZlbnRIYW5kbGVyJywgJ2dvb2cuZXZlbnRzLkV2ZW50VGFyZ2V0JywgJ2dvb2cubmV0LkVycm9yQ29kZScsICdnb29nLm5ldC5FdmVudFR5cGUnLCAnZ29vZy5uZXQuWGhySW8nLCAnZ29vZy5uZXQuWGhySW9Qb29sJywgJ2dvb2cuc3RydWN0cy5NYXAnXSwge30pOwpnb29nLmFkZERlcGVuZGVuY3koJ25ldC94aHJtYW5hZ2VyX3Rlc3QuanMnLCBbJ2dvb2cubmV0Llhock1hbmFnZXJUZXN0J10sIFsnZ29vZy5ldmVudHMnLCAnZ29vZy5uZXQuRXZlbnRUeXBlJywgJ2dvb2cubmV0LlhocklvJywgJ2dvb2cubmV0Llhock1hbmFnZXInLCAnZ29vZy50ZXN0aW5nLm5ldC5YaHJJb1Bvb2wnLCAnZ29vZy50ZXN0aW5nLnJlY29yZEZ1bmN0aW9uJywgJ2dvb2cudGVzdGluZy50ZXN0U3VpdGUnXSwgeydsYW5nJzogJ2VzNicsICdtb2R1bGUnOiAnZ29vZyd9KTsKZ29vZy5hZGREZXBlbmRlbmN5KCduZXQveG1saHR0cC5qcycsIFsnZ29vZy5uZXQuRGVmYXVsdFhtbEh0dHBGYWN0b3J5JywgJ2dvb2cubmV0LlhtbEh0dHAnLCAnZ29vZy5uZXQuWG1sSHR0cC5PcHRpb25UeXBlJywgJ2dvb2cubmV0LlhtbEh0dHAuUmVhZHlTdGF0ZScsICdnb29nLm5ldC5YbWxIdHRwRGVmaW5lcyddLCBbJ2dvb2cuYXNzZXJ0cycsICdnb29nLm5ldC5XcmFwcGVyWG1sSHR0cEZhY3RvcnknLCAnZ29vZy5uZXQuWG1sSHR0cEZhY3RvcnknXSwge30pOwpnb29nLmFkZERlcGVuZGVuY3koJ25ldC94bWxodHRwZmFjdG9yeS5qcycsIFsnZ29vZy5uZXQuWG1sSHR0cEZhY3RvcnknXSwgWydnb29nLm5ldC5YaHJMaWtlJ10sIHt9KTsKZ29vZy5hZGREZXBlbmRlbmN5KCduZXQveHBjL2Nyb3NzcGFnZWNoYW5uZWwuanMnLCBbJ2dvb2cubmV0LnhwYy5Dcm9zc1BhZ2VDaGFubmVsJ10sIFsnZ29vZy5VcmknLCAnZ29vZy5hc3luYy5EZWZlcnJlZCcsICdnb29nLmFzeW5jLkRlbGF5JywgJ2dvb2cuZGlzcG9zZScsICdnb29nLmRvbScsICdnb29nLmRvbS5UYWdOYW1lJywgJ2dvb2cuZG9tLnNhZmUnLCAnZ29vZy5ldmVudHMnLCAnZ29vZy5ldmVudHMuRXZlbnRIYW5kbGVyJywgJ2dvb2cuZXZlbnRzLkV2ZW50VHlwZScsICdnb29nLmh0bWwubGVnYWN5Y29udmVyc2lvbnMnLCAnZ29vZy5qc29uJywgJ2dvb2cubG9nJywgJ2dvb2cubWVzc2FnaW5nLkFic3RyYWN0Q2hhbm5lbCcsICdnb29nLm5ldC54cGMnLCAnZ29vZy5uZXQueHBjLkNmZ0ZpZWxkcycsICdnb29nLm5ldC54cGMuQ2hhbm5lbFN0YXRlcycsICdnb29nLm5ldC54cGMuQ3Jvc3NQYWdlQ2hhbm5lbFJvbGUnLCAnZ29vZy5uZXQueHBjLkRpcmVjdFRyYW5zcG9ydCcsICdnb29nLm5ldC54cGMuTmF0aXZlTWVzc2FnaW5nVHJhbnNwb3J0JywgJ2dvb2cubmV0LnhwYy5UcmFuc3BvcnRUeXBlcycsICdnb29nLm5ldC54cGMuVXJpQ2ZnRmllbGRzJywgJ2dvb2cuc3RyaW5nJywgJ2dvb2cudXJpLnV0aWxzJywgJ2dvb2cudXNlckFnZW50J10sIHt9KTsKZ29vZy5hZGREZXBlbmRlbmN5KCduZXQveHBjL2Nyb3NzcGFnZWNoYW5uZWxfdGVzdC5qcycsIFsnZ29vZy5uZXQueHBjLkNyb3NzUGFnZUNoYW5uZWxUZXN0J10sIFsnZ29vZy5EaXNwb3NhYmxlJywgJ2dvb2cuUHJvbWlzZScsICdnb29nLlRpbWVyJywgJ2dvb2cuVXJpJywgJ2dvb2cuZG9tJywgJ2dvb2cuZG9tLlRhZ05hbWUnLCAnZ29vZy5sYWJzLnVzZXJBZ2VudC5icm93c2VyJywgJ2dvb2cubG9nJywgJ2dvb2cubG9nLkxldmVsJywgJ2dvb2cubmV0LnhwYycsICdnb29nLm5ldC54cGMuQ2ZnRmllbGRzJywgJ2dvb2cubmV0LnhwYy5Dcm9zc1BhZ2VDaGFubmVsJywgJ2dvb2cubmV0LnhwYy5Dcm9zc1BhZ2VDaGFubmVsUm9sZScsICdnb29nLm5ldC54cGMuVHJhbnNwb3J0VHlwZXMnLCAnZ29vZy5vYmplY3QnLCAnZ29vZy50ZXN0aW5nLlByb3BlcnR5UmVwbGFjZXInLCAnZ29vZy50ZXN0aW5nLlRlc3RDYXNlJywgJ2dvb2cudGVzdGluZy5qc3VuaXQnXSwgeydsYW5nJzogJ2VzOCd9KTsKZ29vZy5hZGREZXBlbmRlbmN5KCduZXQveHBjL2Nyb3NzcGFnZWNoYW5uZWxyb2xlLmpzJywgWydnb29nLm5ldC54cGMuQ3Jvc3NQYWdlQ2hhbm5lbFJvbGUnXSwgW10sIHt9KTsKZ29vZy5hZGREZXBlbmRlbmN5KCduZXQveHBjL2RpcmVjdHRyYW5zcG9ydC5qcycsIFsnZ29vZy5uZXQueHBjLkRpcmVjdFRyYW5zcG9ydCddLCBbJ2dvb2cuVGltZXInLCAnZ29vZy5hc3luYy5EZWZlcnJlZCcsICdnb29nLmV2ZW50cy5FdmVudEhhbmRsZXInLCAnZ29vZy5sb2cnLCAnZ29vZy5uZXQueHBjJywgJ2dvb2cubmV0LnhwYy5DZmdGaWVsZHMnLCAnZ29vZy5uZXQueHBjLkNyb3NzUGFnZUNoYW5uZWxSb2xlJywgJ2dvb2cubmV0LnhwYy5UcmFuc3BvcnQnLCAnZ29vZy5uZXQueHBjLlRyYW5zcG9ydFR5cGVzJywgJ2dvb2cub2JqZWN0J10sIHt9KTsKZ29vZy5hZGREZXBlbmRlbmN5KCduZXQveHBjL2RpcmVjdHRyYW5zcG9ydF90ZXN0LmpzJywgWydnb29nLm5ldC54cGMuRGlyZWN0VHJhbnNwb3J0VGVzdCddLCBbJ2dvb2cuUHJvbWlzZScsICdnb29nLmRvbScsICdnb29nLmRvbS5UYWdOYW1lJywgJ2dvb2cubGFicy51c2VyQWdlbnQuYnJvd3NlcicsICdnb29nLmxvZycsICdnb29nLmxvZy5MZXZlbCcsICdnb29nLm5ldC54cGMnLCAnZ29vZy5uZXQueHBjLkNmZ0ZpZWxkcycsICdnb29nLm5ldC54cGMuQ3Jvc3NQYWdlQ2hhbm5lbCcsICdnb29nLm5ldC54cGMuQ3Jvc3NQYWdlQ2hhbm5lbFJvbGUnLCAnZ29vZy5uZXQueHBjLlRyYW5zcG9ydFR5cGVzJywgJ2dvb2cudGVzdGluZy5UZXN0Q2FzZScsICdnb29nLnRlc3RpbmcudGVzdFN1aXRlJ10sIHsnbGFuZyc6ICdlczYnLCAnbW9kdWxlJzogJ2dvb2cnfSk7Cmdvb2cuYWRkRGVwZW5kZW5jeSgnbmV0L3hwYy9pZnJhbWVwb2xsaW5ndHJhbnNwb3J0LmpzJywgWydnb29nLm5ldC54cGMuSWZyYW1lUG9sbGluZ1RyYW5zcG9ydCcsICdnb29nLm5ldC54cGMuSWZyYW1lUG9sbGluZ1RyYW5zcG9ydC5SZWNlaXZlcicsICdnb29nLm5ldC54cGMuSWZyYW1lUG9sbGluZ1RyYW5zcG9ydC5TZW5kZXInXSwgWydnb29nLmFycmF5JywgJ2dvb2cuZG9tJywgJ2dvb2cuZG9tLlRhZ05hbWUnLCAnZ29vZy5kb20uc2FmZScsICdnb29nLmxvZycsICdnb29nLmxvZy5MZXZlbCcsICdnb29nLm5ldC54cGMnLCAnZ29vZy5uZXQueHBjLkNmZ0ZpZWxkcycsICdnb29nLm5ldC54cGMuQ3Jvc3NQYWdlQ2hhbm5lbFJvbGUnLCAnZ29vZy5uZXQueHBjLlRyYW5zcG9ydCcsICdnb29nLm5ldC54cGMuVHJhbnNwb3J0VHlwZXMnLCAnZ29vZy51c2VyQWdlbnQnXSwge30pOwpnb29nLmFkZERlcGVuZGVuY3koJ25ldC94cGMvaWZyYW1lcG9sbGluZ3RyYW5zcG9ydF90ZXN0LmpzJywgWydnb29nLm5ldC54cGMuSWZyYW1lUG9sbGluZ1RyYW5zcG9ydFRlc3QnXSwgWydnb29nLlRpbWVyJywgJ2dvb2cuZG9tJywgJ2dvb2cuZG9tLlRhZ05hbWUnLCAnZ29vZy5mdW5jdGlvbnMnLCAnZ29vZy5uZXQueHBjLkNmZ0ZpZWxkcycsICdnb29nLm5ldC54cGMuQ3Jvc3NQYWdlQ2hhbm5lbCcsICdnb29nLm5ldC54cGMuQ3Jvc3NQYWdlQ2hhbm5lbFJvbGUnLCAnZ29vZy5uZXQueHBjLklmcmFtZVBvbGxpbmdUcmFuc3BvcnQnLCAnZ29vZy5vYmplY3QnLCAnZ29vZy50ZXN0aW5nLk1vY2tDbG9jaycsICdnb29nLnRlc3RpbmcucmVjb3JkRnVuY3Rpb24nLCAnZ29vZy50ZXN0aW5nLnRlc3RTdWl0ZSddLCB7J2xhbmcnOiAnZXM2JywgJ21vZHVsZSc6ICdnb29nJ30pOwpnb29nLmFkZERlcGVuZGVuY3koJ25ldC94cGMvbmF0aXZlbWVzc2FnaW5ndHJhbnNwb3J0LmpzJywgWydnb29nLm5ldC54cGMuTmF0aXZlTWVzc2FnaW5nVHJhbnNwb3J0J10sIFsnZ29vZy5UaW1lcicsICdnb29nLmFzc2VydHMnLCAnZ29vZy5hc3luYy5EZWZlcnJlZCcsICdnb29nLmV2ZW50cycsICdnb29nLmV2ZW50cy5FdmVudEhhbmRsZXInLCAnZ29vZy5sb2cnLCAnZ29vZy5uZXQueHBjJywgJ2dvb2cubmV0LnhwYy5Dcm9zc1BhZ2VDaGFubmVsUm9sZScsICdnb29nLm5ldC54cGMuVHJhbnNwb3J0JywgJ2dvb2cubmV0LnhwYy5UcmFuc3BvcnRUeXBlcyddLCB7fSk7Cmdvb2cuYWRkRGVwZW5kZW5jeSgnbmV0L3hwYy9uYXRpdmVtZXNzYWdpbmd0cmFuc3BvcnRfdGVzdC5qcycsIFsnZ29vZy5uZXQueHBjLk5hdGl2ZU1lc3NhZ2luZ1RyYW5zcG9ydFRlc3QnXSwgWydnb29nLmRvbScsICdnb29nLmV2ZW50cycsICdnb29nLm5ldC54cGMnLCAnZ29vZy5uZXQueHBjLkNmZ0ZpZWxkcycsICdnb29nLm5ldC54cGMuQ3Jvc3NQYWdlQ2hhbm5lbCcsICdnb29nLm5ldC54cGMuQ3Jvc3NQYWdlQ2hhbm5lbFJvbGUnLCAnZ29vZy5uZXQueHBjLk5hdGl2ZU1lc3NhZ2luZ1RyYW5zcG9ydCcsICdnb29nLnRlc3RpbmcudGVzdFN1aXRlJ10sIHsnbGFuZyc6ICdlczYnLCAnbW9kdWxlJzogJ2dvb2cnfSk7Cmdvb2cuYWRkRGVwZW5kZW5jeSgnbmV0L3hwYy9yZWxheS5qcycsIFsnZ29vZy5uZXQueHBjLnJlbGF5J10sIFtdLCB7J2xhbmcnOiAnZXM2J30pOwpnb29nLmFkZERlcGVuZGVuY3koJ25ldC94cGMvdHJhbnNwb3J0LmpzJywgWydnb29nLm5ldC54cGMuVHJhbnNwb3J0J10sIFsnZ29vZy5EaXNwb3NhYmxlJywgJ2dvb2cuZG9tJywgJ2dvb2cubmV0LnhwYy5UcmFuc3BvcnROYW1lcyddLCB7fSk7Cmdvb2cuYWRkRGVwZW5kZW5jeSgnbmV0L3hwYy94cGMuanMnLCBbJ2dvb2cubmV0LnhwYycsICdnb29nLm5ldC54cGMuQ2ZnRmllbGRzJywgJ2dvb2cubmV0LnhwYy5DaGFubmVsU3RhdGVzJywgJ2dvb2cubmV0LnhwYy5UcmFuc3BvcnROYW1lcycsICdnb29nLm5ldC54cGMuVHJhbnNwb3J0VHlwZXMnLCAnZ29vZy5uZXQueHBjLlVyaUNmZ0ZpZWxkcyddLCBbJ2dvb2cubG9nJ10sIHt9KTsKZ29vZy5hZGREZXBlbmRlbmN5KCdvYmplY3Qvb2JqZWN0LmpzJywgWydnb29nLm9iamVjdCddLCBbXSwgeydsYW5nJzogJ2VzNid9KTsKZ29vZy5hZGREZXBlbmRlbmN5KCdvYmplY3Qvb2JqZWN0X3Rlc3QuanMnLCBbJ2dvb2cub2JqZWN0VGVzdCddLCBbJ2dvb2cuYXJyYXknLCAnZ29vZy5mdW5jdGlvbnMnLCAnZ29vZy5vYmplY3QnLCAnZ29vZy50ZXN0aW5nLnJlY29yZEZ1bmN0aW9uJywgJ2dvb2cudGVzdGluZy50ZXN0U3VpdGUnXSwgeydsYW5nJzogJ2VzNicsICdtb2R1bGUnOiAnZ29vZyd9KTsKZ29vZy5hZGREZXBlbmRlbmN5KCdwb3NpdGlvbmluZy9hYnNvbHV0ZXBvc2l0aW9uLmpzJywgWydnb29nLnBvc2l0aW9uaW5nLkFic29sdXRlUG9zaXRpb24nXSwgWydnb29nLm1hdGguQ29vcmRpbmF0ZScsICdnb29nLnBvc2l0aW9uaW5nJywgJ2dvb2cucG9zaXRpb25pbmcuQWJzdHJhY3RQb3NpdGlvbiddLCB7fSk7Cmdvb2cuYWRkRGVwZW5kZW5jeSgncG9zaXRpb25pbmcvYWJzdHJhY3Rwb3NpdGlvbi5qcycsIFsnZ29vZy5wb3NpdGlvbmluZy5BYnN0cmFjdFBvc2l0aW9uJ10sIFtdLCB7fSk7Cmdvb2cuYWRkRGVwZW5kZW5jeSgncG9zaXRpb25pbmcvYW5jaG9yZWRwb3NpdGlvbi5qcycsIFsnZ29vZy5wb3NpdGlvbmluZy5BbmNob3JlZFBvc2l0aW9uJ10sIFsnZ29vZy5wb3NpdGlvbmluZycsICdnb29nLnBvc2l0aW9uaW5nLkFic3RyYWN0UG9zaXRpb24nXSwge30pOwpnb29nLmFkZERlcGVuZGVuY3koJ3Bvc2l0aW9uaW5nL2FuY2hvcmVkcG9zaXRpb25fdGVzdC5qcycsIFsnZ29vZy5wb3NpdGlvbmluZy5BbmNob3JlZFBvc2l0aW9uVGVzdCddLCBbJ2dvb2cuZG9tJywgJ2dvb2cucG9zaXRpb25pbmcuQW5jaG9yZWRQb3NpdGlvbicsICdnb29nLnBvc2l0aW9uaW5nLkNvcm5lcicsICdnb29nLnBvc2l0aW9uaW5nLk92ZXJmbG93JywgJ2dvb2cuc3R5bGUnLCAnZ29vZy50ZXN0aW5nLnRlc3RTdWl0ZSddLCB7J2xhbmcnOiAnZXM2JywgJ21vZHVsZSc6ICdnb29nJ30pOwpnb29nLmFkZERlcGVuZGVuY3koJ3Bvc2l0aW9uaW5nL2FuY2hvcmVkdmlld3BvcnRwb3NpdGlvbi5qcycsIFsnZ29vZy5wb3NpdGlvbmluZy5BbmNob3JlZFZpZXdwb3J0UG9zaXRpb24nXSwgWydnb29nLnBvc2l0aW9uaW5nJywgJ2dvb2cucG9zaXRpb25pbmcuQW5jaG9yZWRQb3NpdGlvbicsICdnb29nLnBvc2l0aW9uaW5nLk92ZXJmbG93JywgJ2dvb2cucG9zaXRpb25pbmcuT3ZlcmZsb3dTdGF0dXMnXSwge30pOwpnb29nLmFkZERlcGVuZGVuY3koJ3Bvc2l0aW9uaW5nL2FuY2hvcmVkdmlld3BvcnRwb3NpdGlvbl90ZXN0LmpzJywgWydnb29nLnBvc2l0aW9uaW5nLkFuY2hvcmVkVmlld3BvcnRQb3NpdGlvblRlc3QnXSwgWydnb29nLmRvbScsICdnb29nLm1hdGguQm94JywgJ2dvb2cucG9zaXRpb25pbmcuQW5jaG9yZWRWaWV3cG9ydFBvc2l0aW9uJywgJ2dvb2cucG9zaXRpb25pbmcuQ29ybmVyJywgJ2dvb2cucG9zaXRpb25pbmcuT3ZlcmZsb3dTdGF0dXMnLCAnZ29vZy5zdHlsZScsICdnb29nLnRlc3RpbmcudGVzdFN1aXRlJ10sIHsnbGFuZyc6ICdlczYnLCAnbW9kdWxlJzogJ2dvb2cnfSk7Cmdvb2cuYWRkRGVwZW5kZW5jeSgncG9zaXRpb25pbmcvY2xpZW50cG9zaXRpb24uanMnLCBbJ2dvb2cucG9zaXRpb25pbmcuQ2xpZW50UG9zaXRpb24nXSwgWydnb29nLmFzc2VydHMnLCAnZ29vZy5kb20nLCAnZ29vZy5tYXRoLkNvb3JkaW5hdGUnLCAnZ29vZy5wb3NpdGlvbmluZycsICdnb29nLnBvc2l0aW9uaW5nLkFic3RyYWN0UG9zaXRpb24nLCAnZ29vZy5zdHlsZSddLCB7fSk7Cmdvb2cuYWRkRGVwZW5kZW5jeSgncG9zaXRpb25pbmcvY2xpZW50cG9zaXRpb25fdGVzdC5qcycsIFsnZ29vZy5wb3NpdGlvbmluZy5jbGllbnRQb3NpdGlvblRlc3QnXSwgWydnb29nLmRvbScsICdnb29nLmRvbS5UYWdOYW1lJywgJ2dvb2cucG9zaXRpb25pbmcuQ2xpZW50UG9zaXRpb24nLCAnZ29vZy5wb3NpdGlvbmluZy5Db3JuZXInLCAnZ29vZy5zdHlsZScsICdnb29nLnRlc3RpbmcudGVzdFN1aXRlJ10sIHsnbGFuZyc6ICdlczYnLCAnbW9kdWxlJzogJ2dvb2cnfSk7Cmdvb2cuYWRkRGVwZW5kZW5jeSgncG9zaXRpb25pbmcvbWVudWFuY2hvcmVkcG9zaXRpb24uanMnLCBbJ2dvb2cucG9zaXRpb25pbmcuTWVudUFuY2hvcmVkUG9zaXRpb24nXSwgWydnb29nLnBvc2l0aW9uaW5nLkFuY2hvcmVkVmlld3BvcnRQb3NpdGlvbicsICdnb29nLnBvc2l0aW9uaW5nLk92ZXJmbG93J10sIHt9KTsKZ29vZy5hZGREZXBlbmRlbmN5KCdwb3NpdGlvbmluZy9tZW51YW5jaG9yZWRwb3NpdGlvbl90ZXN0LmpzJywgWydnb29nLnBvc2l0aW9uaW5nLk1lbnVBbmNob3JlZFBvc2l0aW9uVGVzdCddLCBbJ2dvb2cuZG9tJywgJ2dvb2cuZG9tLlRhZ05hbWUnLCAnZ29vZy5wb3NpdGlvbmluZy5Db3JuZXInLCAnZ29vZy5wb3NpdGlvbmluZy5NZW51QW5jaG9yZWRQb3NpdGlvbicsICdnb29nLnRlc3RpbmcudGVzdFN1aXRlJ10sIHsnbGFuZyc6ICdlczYnLCAnbW9kdWxlJzogJ2dvb2cnfSk7Cmdvb2cuYWRkRGVwZW5kZW5jeSgncG9zaXRpb25pbmcvcG9zaXRpb25pbmcuanMnLCBbJ2dvb2cucG9zaXRpb25pbmcnLCAnZ29vZy5wb3NpdGlvbmluZy5Db3JuZXInLCAnZ29vZy5wb3NpdGlvbmluZy5Db3JuZXJCaXQnLCAnZ29vZy5wb3NpdGlvbmluZy5PdmVyZmxvdycsICdnb29nLnBvc2l0aW9uaW5nLk92ZXJmbG93U3RhdHVzJ10sIFsnZ29vZy5hc3NlcnRzJywgJ2dvb2cuZG9tJywgJ2dvb2cuZG9tLlRhZ05hbWUnLCAnZ29vZy5tYXRoLkNvb3JkaW5hdGUnLCAnZ29vZy5tYXRoLlJlY3QnLCAnZ29vZy5tYXRoLlNpemUnLCAnZ29vZy5zdHlsZScsICdnb29nLnN0eWxlLmJpZGknXSwge30pOwpnb29nLmFkZERlcGVuZGVuY3koJ3Bvc2l0aW9uaW5nL3Bvc2l0aW9uaW5nX3Rlc3QuanMnLCBbJ2dvb2cucG9zaXRpb25pbmdUZXN0J10sIFsnZ29vZy5kb20nLCAnZ29vZy5kb20uRG9tSGVscGVyJywgJ2dvb2cuZG9tLlRhZ05hbWUnLCAnZ29vZy5sYWJzLnVzZXJBZ2VudC5icm93c2VyJywgJ2dvb2cubWF0aC5Cb3gnLCAnZ29vZy5tYXRoLkNvb3JkaW5hdGUnLCAnZ29vZy5tYXRoLlNpemUnLCAnZ29vZy5wb3NpdGlvbmluZycsICdnb29nLnBvc2l0aW9uaW5nLkNvcm5lcicsICdnb29nLnBvc2l0aW9uaW5nLk92ZXJmbG93JywgJ2dvb2cucG9zaXRpb25pbmcuT3ZlcmZsb3dTdGF0dXMnLCAnZ29vZy5zdHlsZScsICdnb29nLnRlc3RpbmcuRXhwZWN0ZWRGYWlsdXJlcycsICdnb29nLnRlc3RpbmcudGVzdFN1aXRlJywgJ2dvb2cudXNlckFnZW50JywgJ2dvb2cudXNlckFnZW50LnByb2R1Y3QnXSwgeydsYW5nJzogJ2VzNicsICdtb2R1bGUnOiAnZ29vZyd9KTsKZ29vZy5hZGREZXBlbmRlbmN5KCdwb3NpdGlvbmluZy92aWV3cG9ydGNsaWVudHBvc2l0aW9uLmpzJywgWydnb29nLnBvc2l0aW9uaW5nLlZpZXdwb3J0Q2xpZW50UG9zaXRpb24nXSwgWydnb29nLmRvbScsICdnb29nLm1hdGguQ29vcmRpbmF0ZScsICdnb29nLnBvc2l0aW9uaW5nJywgJ2dvb2cucG9zaXRpb25pbmcuQ2xpZW50UG9zaXRpb24nLCAnZ29vZy5wb3NpdGlvbmluZy5PdmVyZmxvdycsICdnb29nLnBvc2l0aW9uaW5nLk92ZXJmbG93U3RhdHVzJywgJ2dvb2cuc3R5bGUnXSwge30pOwpnb29nLmFkZERlcGVuZGVuY3koJ3Bvc2l0aW9uaW5nL3ZpZXdwb3J0Y2xpZW50cG9zaXRpb25fdGVzdC5qcycsIFsnZ29vZy5wb3NpdGlvbmluZy5WaWV3cG9ydENsaWVudFBvc2l0aW9uVGVzdCddLCBbJ2dvb2cuZG9tJywgJ2dvb2cucG9zaXRpb25pbmcuQ29ybmVyJywgJ2dvb2cucG9zaXRpb25pbmcuT3ZlcmZsb3cnLCAnZ29vZy5wb3NpdGlvbmluZy5WaWV3cG9ydENsaWVudFBvc2l0aW9uJywgJ2dvb2cuc3R5bGUnLCAnZ29vZy50ZXN0aW5nLnRlc3RTdWl0ZScsICdnb29nLnVzZXJBZ2VudCddLCB7J2xhbmcnOiAnZXM2JywgJ21vZHVsZSc6ICdnb29nJ30pOwpnb29nLmFkZERlcGVuZGVuY3koJ3Bvc2l0aW9uaW5nL3ZpZXdwb3J0cG9zaXRpb24uanMnLCBbJ2dvb2cucG9zaXRpb25pbmcuVmlld3BvcnRQb3NpdGlvbiddLCBbJ2dvb2cubWF0aC5Db29yZGluYXRlJywgJ2dvb2cucG9zaXRpb25pbmcnLCAnZ29vZy5wb3NpdGlvbmluZy5BYnN0cmFjdFBvc2l0aW9uJywgJ2dvb2cucG9zaXRpb25pbmcuQ29ybmVyJywgJ2dvb2cuc3R5bGUnXSwge30pOwpnb29nLmFkZERlcGVuZGVuY3koJ3Byb21pc2UvbmF0aXZlcmVzb2x2ZXIuanMnLCBbJ2dvb2cucHJvbWlzZS5OYXRpdmVSZXNvbHZlciddLCBbXSwgeydsYW5nJzogJ2VzNicsICdtb2R1bGUnOiAnZ29vZyd9KTsKZ29vZy5hZGREZXBlbmRlbmN5KCdwcm9taXNlL25hdGl2ZXJlc29sdmVyX3Rlc3QuanMnLCBbJ2dvb2cucHJvbWlzZS5uYXRpdmVSZXNvbHZlclRlc3QnXSwgWydnb29nLnByb21pc2UuTmF0aXZlUmVzb2x2ZXInLCAnZ29vZy50ZXN0aW5nLnRlc3RTdWl0ZSddLCB7J2xhbmcnOiAnZXM2JywgJ21vZHVsZSc6ICdnb29nJ30pOwpnb29nLmFkZERlcGVuZGVuY3koJ3Byb21pc2UvcHJvbWlzZS5qcycsIFsnZ29vZy5Qcm9taXNlJ10sIFsnZ29vZy5UaGVuYWJsZScsICdnb29nLmFzc2VydHMnLCAnZ29vZy5hc3luYy5GcmVlTGlzdCcsICdnb29nLmFzeW5jLnJ1bicsICdnb29nLmFzeW5jLnRocm93RXhjZXB0aW9uJywgJ2dvb2cuZGVidWcuRXJyb3InLCAnZ29vZy5wcm9taXNlLlJlc29sdmVyJ10sIHt9KTsKZ29vZy5hZGREZXBlbmRlbmN5KCdwcm9taXNlL3Byb21pc2VfdGVzdC5qcycsIFsnZ29vZy5Qcm9taXNlVGVzdCddLCBbJ2dvb2cuUHJvbWlzZScsICdnb29nLlRoZW5hYmxlJywgJ2dvb2cuVGltZXInLCAnZ29vZy5mdW5jdGlvbnMnLCAnZ29vZy50ZXN0aW5nLk1vY2tDbG9jaycsICdnb29nLnRlc3RpbmcuUHJvcGVydHlSZXBsYWNlcicsICdnb29nLnRlc3RpbmcuVGVzdENhc2UnLCAnZ29vZy50ZXN0aW5nLnJlY29yZEZ1bmN0aW9uJywgJ2dvb2cudGVzdGluZy50ZXN0U3VpdGUnXSwgeydsYW5nJzogJ2VzOCcsICdtb2R1bGUnOiAnZ29vZyd9KTsKZ29vZy5hZGREZXBlbmRlbmN5KCdwcm9taXNlL3Jlc29sdmVyLmpzJywgWydnb29nLnByb21pc2UuUmVzb2x2ZXInXSwgW10sIHt9KTsKZ29vZy5hZGREZXBlbmRlbmN5KCdwcm9taXNlL3Rlc3RzdWl0ZWFkYXB0ZXIuanMnLCBbJ2dvb2cucHJvbWlzZS50ZXN0U3VpdGVBZGFwdGVyJ10sIFsnZ29vZy5Qcm9taXNlJ10sIHt9KTsKZ29vZy5hZGREZXBlbmRlbmN5KCdwcm9taXNlL3RoZW5hYmxlLmpzJywgWydnb29nLlRoZW5hYmxlJ10sIFtdLCB7fSk7Cmdvb2cuYWRkRGVwZW5kZW5jeSgncHJvdG8yL2Rlc2NyaXB0b3IuanMnLCBbJ2dvb2cucHJvdG8yLkRlc2NyaXB0b3InLCAnZ29vZy5wcm90bzIuTWV0YWRhdGEnXSwgWydnb29nLmFycmF5JywgJ2dvb2cuYXNzZXJ0cycsICdnb29nLm9iamVjdCcsICdnb29nLnN0cmluZyddLCB7fSk7Cmdvb2cuYWRkRGVwZW5kZW5jeSgncHJvdG8yL2Rlc2NyaXB0b3JfdGVzdC5qcycsIFsnZ29vZy5wcm90bzIuRGVzY3JpcHRvclRlc3QnXSwgWydnb29nLnByb3RvMi5EZXNjcmlwdG9yJywgJ2dvb2cucHJvdG8yLk1lc3NhZ2UnLCAnZ29vZy50ZXN0aW5nLnRlc3RTdWl0ZSddLCB7J2xhbmcnOiAnZXM2JywgJ21vZHVsZSc6ICdnb29nJ30pOwpnb29nLmFkZERlcGVuZGVuY3koJ3Byb3RvMi9maWVsZGRlc2NyaXB0b3IuanMnLCBbJ2dvb2cucHJvdG8yLkZpZWxkRGVzY3JpcHRvciddLCBbJ2dvb2cuYXNzZXJ0cycsICdnb29nLnN0cmluZyddLCB7fSk7Cmdvb2cuYWRkRGVwZW5kZW5jeSgncHJvdG8yL2ZpZWxkZGVzY3JpcHRvcl90ZXN0LmpzJywgWydnb29nLnByb3RvMi5GaWVsZERlc2NyaXB0b3JUZXN0J10sIFsnZ29vZy5wcm90bzIuRmllbGREZXNjcmlwdG9yJywgJ2dvb2cucHJvdG8yLk1lc3NhZ2UnLCAnZ29vZy50ZXN0aW5nLnRlc3RTdWl0ZSddLCB7J2xhbmcnOiAnZXM2JywgJ21vZHVsZSc6ICdnb29nJ30pOwpnb29nLmFkZERlcGVuZGVuY3koJ3Byb3RvMi9sYXp5ZGVzZXJpYWxpemVyLmpzJywgWydnb29nLnByb3RvMi5MYXp5RGVzZXJpYWxpemVyJ10sIFsnZ29vZy5hc3NlcnRzJywgJ2dvb2cucHJvdG8yLk1lc3NhZ2UnLCAnZ29vZy5wcm90bzIuU2VyaWFsaXplciddLCB7fSk7Cmdvb2cuYWRkRGVwZW5kZW5jeSgncHJvdG8yL21lc3NhZ2UuanMnLCBbJ2dvb2cucHJvdG8yLk1lc3NhZ2UnXSwgWydnb29nLmFzc2VydHMnLCAnZ29vZy5wcm90bzIuRGVzY3JpcHRvcicsICdnb29nLnByb3RvMi5GaWVsZERlc2NyaXB0b3InXSwge30pOwpnb29nLmFkZERlcGVuZGVuY3koJ3Byb3RvMi9tZXNzYWdlX3Rlc3QuanMnLCBbJ2dvb2cucHJvdG8yLk1lc3NhZ2VUZXN0J10sIFsnZ29vZy50ZXN0aW5nLnRlc3RTdWl0ZScsICdwcm90bzIuVGVzdEFsbFR5cGVzJywgJ3Byb3RvMi5UZXN0QWxsVHlwZXMuTmVzdGVkRW51bScsICdwcm90bzIuVGVzdEFsbFR5cGVzLk5lc3RlZE1lc3NhZ2UnLCAncHJvdG8yLlRlc3RBbGxUeXBlcy5PcHRpb25hbEdyb3VwJywgJ3Byb3RvMi5UZXN0QWxsVHlwZXMuUmVwZWF0ZWRHcm91cCddLCB7J2xhbmcnOiAnZXM2JywgJ21vZHVsZSc6ICdnb29nJ30pOwpnb29nLmFkZERlcGVuZGVuY3koJ3Byb3RvMi9vYmplY3RzZXJpYWxpemVyLmpzJywgWydnb29nLnByb3RvMi5PYmplY3RTZXJpYWxpemVyJ10sIFsnZ29vZy5hc3NlcnRzJywgJ2dvb2cucHJvdG8yLkZpZWxkRGVzY3JpcHRvcicsICdnb29nLnByb3RvMi5TZXJpYWxpemVyJywgJ2dvb2cuc3RyaW5nJ10sIHt9KTsKZ29vZy5hZGREZXBlbmRlbmN5KCdwcm90bzIvb2JqZWN0c2VyaWFsaXplcl90ZXN0LmpzJywgWydnb29nLnByb3RvMi5PYmplY3RTZXJpYWxpemVyVGVzdCddLCBbJ2dvb2cucHJvdG8yLk9iamVjdFNlcmlhbGl6ZXInLCAnZ29vZy5wcm90bzIuU2VyaWFsaXplcicsICdnb29nLnRlc3RpbmcuUHJvcGVydHlSZXBsYWNlcicsICdnb29nLnRlc3RpbmcudGVzdFN1aXRlJywgJ3Byb3RvMi5UZXN0QWxsVHlwZXMnXSwgeydsYW5nJzogJ2VzNicsICdtb2R1bGUnOiAnZ29vZyd9KTsKZ29vZy5hZGREZXBlbmRlbmN5KCdwcm90bzIvcGFja2FnZV90ZXN0LnBiLmpzJywgWydzb21lcHJvdG9wYWNrYWdlLlRlc3RQYWNrYWdlVHlwZXMnXSwgWydnb29nLnByb3RvMi5NZXNzYWdlJywgJ3Byb3RvMi5UZXN0QWxsVHlwZXMnXSwgeydsYW5nJzogJ2VzNid9KTsKZ29vZy5hZGREZXBlbmRlbmN5KCdwcm90bzIvcGJsaXRlc2VyaWFsaXplci5qcycsIFsnZ29vZy5wcm90bzIuUGJMaXRlU2VyaWFsaXplciddLCBbJ2dvb2cuYXNzZXJ0cycsICdnb29nLnByb3RvMi5GaWVsZERlc2NyaXB0b3InLCAnZ29vZy5wcm90bzIuTGF6eURlc2VyaWFsaXplcicsICdnb29nLnByb3RvMi5TZXJpYWxpemVyJ10sIHt9KTsKZ29vZy5hZGREZXBlbmRlbmN5KCdwcm90bzIvcGJsaXRlc2VyaWFsaXplcl90ZXN0LmpzJywgWydnb29nLnByb3RvMi5QYkxpdGVTZXJpYWxpemVyVGVzdCddLCBbJ2dvb2cucHJvdG8yLlBiTGl0ZVNlcmlhbGl6ZXInLCAnZ29vZy50ZXN0aW5nLnRlc3RTdWl0ZScsICdwcm90bzIuVGVzdEFsbFR5cGVzJ10sIHsnbGFuZyc6ICdlczYnLCAnbW9kdWxlJzogJ2dvb2cnfSk7Cmdvb2cuYWRkRGVwZW5kZW5jeSgncHJvdG8yL3Byb3RvX3Rlc3QuanMnLCBbJ2dvb2cucHJvdG8yLm1lc3NhZ2VUZXN0J10sIFsnZ29vZy5wcm90bzIuRmllbGREZXNjcmlwdG9yJywgJ2dvb2cudGVzdGluZy50ZXN0U3VpdGUnLCAncHJvdG8yLlRlc3RBbGxUeXBlcycsICdwcm90bzIuVGVzdERlZmF1bHRQYXJlbnQnLCAnc29tZXByb3RvcGFja2FnZS5UZXN0UGFja2FnZVR5cGVzJ10sIHsnbGFuZyc6ICdlczYnLCAnbW9kdWxlJzogJ2dvb2cnfSk7Cmdvb2cuYWRkRGVwZW5kZW5jeSgncHJvdG8yL3NlcmlhbGl6ZXIuanMnLCBbJ2dvb2cucHJvdG8yLlNlcmlhbGl6ZXInXSwgWydnb29nLmFzc2VydHMnLCAnZ29vZy5wcm90bzIuRmllbGREZXNjcmlwdG9yJywgJ2dvb2cucHJvdG8yLk1lc3NhZ2UnXSwge30pOwpnb29nLmFkZERlcGVuZGVuY3koJ3Byb3RvMi90ZXN0LnBiLmpzJywgWydwcm90bzIuVGVzdEFsbFR5cGVzJywgJ3Byb3RvMi5UZXN0QWxsVHlwZXMuTmVzdGVkRW51bScsICdwcm90bzIuVGVzdEFsbFR5cGVzLk5lc3RlZE1lc3NhZ2UnLCAncHJvdG8yLlRlc3RBbGxUeXBlcy5PcHRpb25hbEdyb3VwJywgJ3Byb3RvMi5UZXN0QWxsVHlwZXMuUmVwZWF0ZWRHcm91cCcsICdwcm90bzIuVGVzdERlZmF1bHRDaGlsZCcsICdwcm90bzIuVGVzdERlZmF1bHRQYXJlbnQnXSwgWydnb29nLnByb3RvMi5NZXNzYWdlJ10sIHt9KTsKZ29vZy5hZGREZXBlbmRlbmN5KCdwcm90bzIvdGV4dGZvcm1hdHNlcmlhbGl6ZXIuanMnLCBbJ2dvb2cucHJvdG8yLlRleHRGb3JtYXRTZXJpYWxpemVyJ10sIFsnZ29vZy5hcnJheScsICdnb29nLmFzc2VydHMnLCAnZ29vZy5tYXRoJywgJ2dvb2cub2JqZWN0JywgJ2dvb2cucHJvdG8yLkZpZWxkRGVzY3JpcHRvcicsICdnb29nLnByb3RvMi5NZXNzYWdlJywgJ2dvb2cucHJvdG8yLlNlcmlhbGl6ZXInLCAnZ29vZy5zdHJpbmcnXSwge30pOwpnb29nLmFkZERlcGVuZGVuY3koJ3Byb3RvMi90ZXh0Zm9ybWF0c2VyaWFsaXplcl90ZXN0LmpzJywgWydnb29nLnByb3RvMi5UZXh0Rm9ybWF0U2VyaWFsaXplclRlc3QnXSwgWydnb29nLnByb3RvMi5PYmplY3RTZXJpYWxpemVyJywgJ2dvb2cucHJvdG8yLlRleHRGb3JtYXRTZXJpYWxpemVyJywgJ2dvb2cudGVzdGluZy50ZXN0U3VpdGUnLCAncHJvdG8yLlRlc3RBbGxUeXBlcyddLCB7J2xhbmcnOiAnZXM2JywgJ21vZHVsZSc6ICdnb29nJ30pOwpnb29nLmFkZERlcGVuZGVuY3koJ3Byb3RvMi91dGlsLmpzJywgWydnb29nLnByb3RvMi5VdGlsJ10sIFsnZ29vZy5hc3NlcnRzJ10sIHt9KTsKZ29vZy5hZGREZXBlbmRlbmN5KCdwdWJzdWIvcHVic3ViLmpzJywgWydnb29nLnB1YnN1Yi5QdWJTdWInXSwgWydnb29nLkRpc3Bvc2FibGUnLCAnZ29vZy5hcnJheScsICdnb29nLmFzeW5jLnJ1biddLCB7fSk7Cmdvb2cuYWRkRGVwZW5kZW5jeSgncHVic3ViL3B1YnN1Yl90ZXN0LmpzJywgWydnb29nLnB1YnN1Yi5QdWJTdWJUZXN0J10sIFsnZ29vZy5hcnJheScsICdnb29nLnB1YnN1Yi5QdWJTdWInLCAnZ29vZy50ZXN0aW5nLk1vY2tDbG9jaycsICdnb29nLnRlc3RpbmcudGVzdFN1aXRlJ10sIHsnbGFuZyc6ICdlczYnLCAnbW9kdWxlJzogJ2dvb2cnfSk7Cmdvb2cuYWRkRGVwZW5kZW5jeSgncHVic3ViL3RvcGljaWQuanMnLCBbJ2dvb2cucHVic3ViLlRvcGljSWQnXSwgW10sIHt9KTsKZ29vZy5hZGREZXBlbmRlbmN5KCdwdWJzdWIvdHlwZWRwdWJzdWIuanMnLCBbJ2dvb2cucHVic3ViLlR5cGVkUHViU3ViJ10sIFsnZ29vZy5EaXNwb3NhYmxlJywgJ2dvb2cucHVic3ViLlB1YlN1YiddLCB7fSk7Cmdvb2cuYWRkRGVwZW5kZW5jeSgncHVic3ViL3R5cGVkcHVic3ViX3Rlc3QuanMnLCBbJ2dvb2cucHVic3ViLlR5cGVkUHViU3ViVGVzdCddLCBbJ2dvb2cuYXJyYXknLCAnZ29vZy5wdWJzdWIuVG9waWNJZCcsICdnb29nLnB1YnN1Yi5UeXBlZFB1YlN1YicsICdnb29nLnRlc3RpbmcudGVzdFN1aXRlJ10sIHsnbGFuZyc6ICdlczYnLCAnbW9kdWxlJzogJ2dvb2cnfSk7Cmdvb2cuYWRkRGVwZW5kZW5jeSgncmVmbGVjdC9yZWZsZWN0LmpzJywgWydnb29nLnJlZmxlY3QnXSwgW10sIHsnbGFuZyc6ICdlczYnfSk7Cmdvb2cuYWRkRGVwZW5kZW5jeSgncmVmbGVjdC9yZWZsZWN0X3Rlc3QuanMnLCBbJ2dvb2cucmVmbGVjdFRlc3QnXSwgWydnb29nLm9iamVjdCcsICdnb29nLnJlZmxlY3QnLCAnZ29vZy50ZXN0aW5nLnRlc3RTdWl0ZSddLCB7J2xhbmcnOiAnZXM2JywgJ21vZHVsZSc6ICdnb29nJ30pOwpnb29nLmFkZERlcGVuZGVuY3koJ3Jlc3VsdC9jaGFpbl90ZXN0LmpzJywgWydnb29nLnJlc3VsdC5jaGFpblRlc3QnXSwgWydnb29nLlRpbWVyJywgJ2dvb2cucmVzdWx0JywgJ2dvb2cudGVzdGluZy5Nb2NrQ2xvY2snLCAnZ29vZy50ZXN0aW5nLnJlY29yZEZ1bmN0aW9uJywgJ2dvb2cudGVzdGluZy50ZXN0U3VpdGUnXSwgeydsYW5nJzogJ2VzNicsICdtb2R1bGUnOiAnZ29vZyd9KTsKZ29vZy5hZGREZXBlbmRlbmN5KCdyZXN1bHQvY29tYmluZV90ZXN0LmpzJywgWydnb29nLnJlc3VsdC5jb21iaW5lVGVzdCddLCBbJ2dvb2cuVGltZXInLCAnZ29vZy5hcnJheScsICdnb29nLnJlc3VsdCcsICdnb29nLnRlc3RpbmcuTW9ja0Nsb2NrJywgJ2dvb2cudGVzdGluZy5yZWNvcmRGdW5jdGlvbicsICdnb29nLnRlc3RpbmcudGVzdFN1aXRlJ10sIHsnbGFuZyc6ICdlczYnLCAnbW9kdWxlJzogJ2dvb2cnfSk7Cmdvb2cuYWRkRGVwZW5kZW5jeSgncmVzdWx0L2RlZmVycmVkYWRhcHRvci5qcycsIFsnZ29vZy5yZXN1bHQuRGVmZXJyZWRBZGFwdG9yJ10sIFsnZ29vZy5hc3luYy5EZWZlcnJlZCcsICdnb29nLnJlc3VsdCcsICdnb29nLnJlc3VsdC5SZXN1bHQnXSwge30pOwpnb29nLmFkZERlcGVuZGVuY3koJ3Jlc3VsdC9kZWZlcnJlZGFkYXB0b3JfdGVzdC5qcycsIFsnZ29vZy5yZXN1bHQuRGVmZXJyZWRBZGFwdG9yVGVzdCddLCBbJ2dvb2cuYXN5bmMuRGVmZXJyZWQnLCAnZ29vZy5yZXN1bHQnLCAnZ29vZy5yZXN1bHQuRGVmZXJyZWRBZGFwdG9yJywgJ2dvb2cucmVzdWx0LlNpbXBsZVJlc3VsdCcsICdnb29nLnRlc3RpbmcucmVjb3JkRnVuY3Rpb24nLCAnZ29vZy50ZXN0aW5nLnRlc3RTdWl0ZSddLCB7J2xhbmcnOiAnZXM2JywgJ21vZHVsZSc6ICdnb29nJ30pOwpnb29nLmFkZERlcGVuZGVuY3koJ3Jlc3VsdC9kZXBlbmRlbnRyZXN1bHQuanMnLCBbJ2dvb2cucmVzdWx0LkRlcGVuZGVudFJlc3VsdCddLCBbJ2dvb2cucmVzdWx0LlJlc3VsdCddLCB7fSk7Cmdvb2cuYWRkRGVwZW5kZW5jeSgncmVzdWx0L3Jlc3VsdF9pbnRlcmZhY2UuanMnLCBbJ2dvb2cucmVzdWx0LlJlc3VsdCddLCBbJ2dvb2cuVGhlbmFibGUnXSwge30pOwpnb29nLmFkZERlcGVuZGVuY3koJ3Jlc3VsdC9yZXN1bHR1dGlsLmpzJywgWydnb29nLnJlc3VsdCddLCBbJ2dvb2cuYXJyYXknLCAnZ29vZy5yZXN1bHQuRGVwZW5kZW50UmVzdWx0JywgJ2dvb2cucmVzdWx0LlJlc3VsdCcsICdnb29nLnJlc3VsdC5TaW1wbGVSZXN1bHQnXSwge30pOwpnb29nLmFkZERlcGVuZGVuY3koJ3Jlc3VsdC9yZXN1bHR1dGlsX3Rlc3QuanMnLCBbJ2dvb2cucmVzdWx0VGVzdCddLCBbJ2dvb2cucmVzdWx0JywgJ2dvb2cudGVzdGluZy50ZXN0U3VpdGUnXSwgeydsYW5nJzogJ2VzNicsICdtb2R1bGUnOiAnZ29vZyd9KTsKZ29vZy5hZGREZXBlbmRlbmN5KCdyZXN1bHQvc2ltcGxlcmVzdWx0LmpzJywgWydnb29nLnJlc3VsdC5TaW1wbGVSZXN1bHQnLCAnZ29vZy5yZXN1bHQuU2ltcGxlUmVzdWx0LlN0YXRlRXJyb3InXSwgWydnb29nLlByb21pc2UnLCAnZ29vZy5UaGVuYWJsZScsICdnb29nLmRlYnVnLkVycm9yJywgJ2dvb2cucmVzdWx0LlJlc3VsdCddLCB7fSk7Cmdvb2cuYWRkRGVwZW5kZW5jeSgncmVzdWx0L3NpbXBsZXJlc3VsdF90ZXN0LmpzJywgWydnb29nLnJlc3VsdC5TaW1wbGVSZXN1bHRUZXN0J10sIFsnZ29vZy5Qcm9taXNlJywgJ2dvb2cuVGhlbmFibGUnLCAnZ29vZy5UaW1lcicsICdnb29nLnJlc3VsdCcsICdnb29nLnRlc3RpbmcuTW9ja0Nsb2NrJywgJ2dvb2cudGVzdGluZy5yZWNvcmRGdW5jdGlvbicsICdnb29nLnRlc3RpbmcudGVzdFN1aXRlJ10sIHsnbGFuZyc6ICdlczYnLCAnbW9kdWxlJzogJ2dvb2cnfSk7Cmdvb2cuYWRkRGVwZW5kZW5jeSgncmVzdWx0L3RyYW5zZm9ybV90ZXN0LmpzJywgWydnb29nLnJlc3VsdC50cmFuc2Zvcm1UZXN0J10sIFsnZ29vZy5UaW1lcicsICdnb29nLnJlc3VsdCcsICdnb29nLnJlc3VsdC5TaW1wbGVSZXN1bHQnLCAnZ29vZy50ZXN0aW5nLk1vY2tDbG9jaycsICdnb29nLnRlc3RpbmcucmVjb3JkRnVuY3Rpb24nLCAnZ29vZy50ZXN0aW5nLnRlc3RTdWl0ZSddLCB7J2xhbmcnOiAnZXM2JywgJ21vZHVsZSc6ICdnb29nJ30pOwpnb29nLmFkZERlcGVuZGVuY3koJ3Jlc3VsdC93YWl0X3Rlc3QuanMnLCBbJ2dvb2cucmVzdWx0LndhaXRUZXN0J10sIFsnZ29vZy5UaW1lcicsICdnb29nLnJlc3VsdCcsICdnb29nLnJlc3VsdC5TaW1wbGVSZXN1bHQnLCAnZ29vZy50ZXN0aW5nLk1vY2tDbG9jaycsICdnb29nLnRlc3RpbmcuUHJvcGVydHlSZXBsYWNlcicsICdnb29nLnRlc3RpbmcucmVjb3JkRnVuY3Rpb24nLCAnZ29vZy50ZXN0aW5nLnRlc3RTdWl0ZSddLCB7J2xhbmcnOiAnZXM2JywgJ21vZHVsZSc6ICdnb29nJ30pOwpnb29nLmFkZERlcGVuZGVuY3koJ3NveS9kYXRhLmpzJywgWydnb29nLnNveS5kYXRhLlNhbml0aXplZENvbnRlbnQnLCAnZ29vZy5zb3kuZGF0YS5TYW5pdGl6ZWRDb250ZW50S2luZCcsICdnb29nLnNveS5kYXRhLlNhbml0aXplZENzcycsICdnb29nLnNveS5kYXRhLlNhbml0aXplZEh0bWwnLCAnZ29vZy5zb3kuZGF0YS5TYW5pdGl6ZWRIdG1sQXR0cmlidXRlJywgJ2dvb2cuc295LmRhdGEuU2FuaXRpemVkSnMnLCAnZ29vZy5zb3kuZGF0YS5TYW5pdGl6ZWRUcnVzdGVkUmVzb3VyY2VVcmknLCAnZ29vZy5zb3kuZGF0YS5TYW5pdGl6ZWRVcmknXSwgWydnb29nLlVyaScsICdnb29nLmFzc2VydHMnLCAnZ29vZy5odG1sLlNhZmVIdG1sJywgJ2dvb2cuaHRtbC5TYWZlU2NyaXB0JywgJ2dvb2cuaHRtbC5TYWZlU3R5bGUnLCAnZ29vZy5odG1sLlNhZmVTdHlsZVNoZWV0JywgJ2dvb2cuaHRtbC5TYWZlVXJsJywgJ2dvb2cuaHRtbC5UcnVzdGVkUmVzb3VyY2VVcmwnLCAnZ29vZy5odG1sLnVuY2hlY2tlZGNvbnZlcnNpb25zJywgJ2dvb2cuaTE4bi5iaWRpLkRpcicsICdnb29nLnN0cmluZy5Db25zdCddLCB7fSk7Cmdvb2cuYWRkRGVwZW5kZW5jeSgnc295L2RhdGFfdGVzdC5qcycsIFsnZ29vZy5zb3kuZGF0YVRlc3QnXSwgWydnb29nLmh0bWwuU2FmZUh0bWwnLCAnZ29vZy5odG1sLlNhZmVTdHlsZVNoZWV0JywgJ2dvb2cuaHRtbC5TYWZlVXJsJywgJ2dvb2cuaHRtbC5UcnVzdGVkUmVzb3VyY2VVcmwnLCAnZ29vZy5zb3kudGVzdEhlbHBlcicsICdnb29nLnRlc3RpbmcudGVzdFN1aXRlJ10sIHsnbGFuZyc6ICdlczYnLCAnbW9kdWxlJzogJ2dvb2cnfSk7Cmdvb2cuYWRkRGVwZW5kZW5jeSgnc295L3JlbmRlcmVyLmpzJywgWydnb29nLnNveS5JbmplY3RlZERhdGFTdXBwbGllcicsICdnb29nLnNveS5SZW5kZXJlciddLCBbJ2dvb2cuYXNzZXJ0cycsICdnb29nLmRvbScsICdnb29nLnNveScsICdnb29nLnNveS5kYXRhLlNhbml0aXplZENvbnRlbnQnLCAnZ29vZy5zb3kuZGF0YS5TYW5pdGl6ZWRDb250ZW50S2luZCddLCB7fSk7Cmdvb2cuYWRkRGVwZW5kZW5jeSgnc295L3JlbmRlcmVyX3Rlc3QuanMnLCBbJ2dvb2cuc295LlJlbmRlcmVyVGVzdCddLCBbJ2dvb2cuZG9tJywgJ2dvb2cuZG9tLk5vZGVUeXBlJywgJ2dvb2cuZG9tLlRhZ05hbWUnLCAnZ29vZy5odG1sLlNhZmVIdG1sJywgJ2dvb2cuaTE4bi5iaWRpLkRpcicsICdnb29nLnNveS5SZW5kZXJlcicsICdnb29nLnNveS5kYXRhLlNhbml0aXplZENvbnRlbnRLaW5kJywgJ2dvb2cuc295LnRlc3RIZWxwZXInLCAnZ29vZy50ZXN0aW5nLnJlY29yZEZ1bmN0aW9uJywgJ2dvb2cudGVzdGluZy50ZXN0U3VpdGUnXSwgeydsYW5nJzogJ2VzNicsICdtb2R1bGUnOiAnZ29vZyd9KTsKZ29vZy5hZGREZXBlbmRlbmN5KCdzb3kvc295LmpzJywgWydnb29nLnNveSddLCBbJ2dvb2cuYXNzZXJ0cycsICdnb29nLmRvbScsICdnb29nLmRvbS5Ob2RlVHlwZScsICdnb29nLmRvbS5UYWdOYW1lJywgJ2dvb2cuZG9tLnNhZmUnLCAnZ29vZy5odG1sLlNhZmVIdG1sJywgJ2dvb2cuc295LmRhdGEuU2FuaXRpemVkQ29udGVudCddLCB7fSk7Cmdvb2cuYWRkRGVwZW5kZW5jeSgnc295L3NveV90ZXN0LmpzJywgWydnb29nLnNveVRlc3QnXSwgWydnb29nLmRvbScsICdnb29nLmRvbS5Ob2RlVHlwZScsICdnb29nLmRvbS5UYWdOYW1lJywgJ2dvb2cuZnVuY3Rpb25zJywgJ2dvb2cuc295JywgJ2dvb2cuc295LnRlc3RIZWxwZXInLCAnZ29vZy50ZXN0aW5nLnRlc3RTdWl0ZSddLCB7J2xhbmcnOiAnZXM2JywgJ21vZHVsZSc6ICdnb29nJ30pOwpnb29nLmFkZERlcGVuZGVuY3koJ3NveS9zb3lfdGVzdGhlbHBlci5qcycsIFsnZ29vZy5zb3kudGVzdEhlbHBlciddLCBbJ2dvb2cuZG9tJywgJ2dvb2cuZG9tLlRhZ05hbWUnLCAnZ29vZy5pMThuLmJpZGkuRGlyJywgJ2dvb2cuc295LmRhdGEuU2FuaXRpemVkQ29udGVudCcsICdnb29nLnNveS5kYXRhLlNhbml0aXplZENvbnRlbnRLaW5kJywgJ2dvb2cuc295LmRhdGEuU2FuaXRpemVkQ3NzJywgJ2dvb2cuc295LmRhdGEuU2FuaXRpemVkVHJ1c3RlZFJlc291cmNlVXJpJywgJ2dvb2cuc3RyaW5nJywgJ2dvb2cudXNlckFnZW50J10sIHsnbGFuZyc6ICdlczYnfSk7Cmdvb2cuYWRkRGVwZW5kZW5jeSgnc3BlbGwvc3BlbGxjaGVjay5qcycsIFsnZ29vZy5zcGVsbC5TcGVsbENoZWNrJywgJ2dvb2cuc3BlbGwuU3BlbGxDaGVjay5Xb3JkQ2hhbmdlZEV2ZW50J10sIFsnZ29vZy5UaW1lcicsICdnb29nLmV2ZW50cy5FdmVudCcsICdnb29nLmV2ZW50cy5FdmVudFRhcmdldCcsICdnb29nLnN0cnVjdHMuU2V0J10sIHt9KTsKZ29vZy5hZGREZXBlbmRlbmN5KCdzcGVsbC9zcGVsbGNoZWNrX3Rlc3QuanMnLCBbJ2dvb2cuc3BlbGwuU3BlbGxDaGVja1Rlc3QnXSwgWydnb29nLnNwZWxsLlNwZWxsQ2hlY2snLCAnZ29vZy50ZXN0aW5nLnRlc3RTdWl0ZSddLCB7J2xhbmcnOiAnZXM2JywgJ21vZHVsZSc6ICdnb29nJ30pOwpnb29nLmFkZERlcGVuZGVuY3koJ3N0YXRzL2Jhc2ljc3RhdC5qcycsIFsnZ29vZy5zdGF0cy5CYXNpY1N0YXQnXSwgWydnb29nLmFzc2VydHMnLCAnZ29vZy5sb2cnLCAnZ29vZy5zdHJpbmcuZm9ybWF0JywgJ2dvb2cuc3RydWN0cy5DaXJjdWxhckJ1ZmZlciddLCB7fSk7Cmdvb2cuYWRkRGVwZW5kZW5jeSgnc3RhdHMvYmFzaWNzdGF0X3Rlc3QuanMnLCBbJ2dvb2cuc3RhdHMuQmFzaWNTdGF0VGVzdCddLCBbJ2dvb2cuYXJyYXknLCAnZ29vZy5zdGF0cy5CYXNpY1N0YXQnLCAnZ29vZy5zdHJpbmcuZm9ybWF0JywgJ2dvb2cudGVzdGluZy5Qc2V1ZG9SYW5kb20nLCAnZ29vZy50ZXN0aW5nLnRlc3RTdWl0ZScsICdnb29nLnVzZXJBZ2VudCddLCB7J2xhbmcnOiAnZXM2JywgJ21vZHVsZSc6ICdnb29nJ30pOwpnb29nLmFkZERlcGVuZGVuY3koJ3N0b3JhZ2UvY29sbGVjdGFibGVzdG9yYWdlLmpzJywgWydnb29nLnN0b3JhZ2UuQ29sbGVjdGFibGVTdG9yYWdlJ10sIFsnZ29vZy5hcnJheScsICdnb29nLml0ZXInLCAnZ29vZy5zdG9yYWdlLkVycm9yQ29kZScsICdnb29nLnN0b3JhZ2UuRXhwaXJpbmdTdG9yYWdlJywgJ2dvb2cuc3RvcmFnZS5SaWNoU3RvcmFnZSddLCB7fSk7Cmdvb2cuYWRkRGVwZW5kZW5jeSgnc3RvcmFnZS9jb2xsZWN0YWJsZXN0b3JhZ2VfdGVzdC5qcycsIFsnZ29vZy5zdG9yYWdlLkNvbGxlY3RhYmxlU3RvcmFnZVRlc3QnXSwgWydnb29nLnN0b3JhZ2UuQ29sbGVjdGFibGVTdG9yYWdlJywgJ2dvb2cuc3RvcmFnZS5jb2xsZWN0YWJsZVN0b3JhZ2VUZXN0ZXInLCAnZ29vZy5zdG9yYWdlLnN0b3JhZ2VUZXN0ZXInLCAnZ29vZy50ZXN0aW5nLk1vY2tDbG9jaycsICdnb29nLnRlc3Rpbmcuc3RvcmFnZS5GYWtlTWVjaGFuaXNtJywgJ2dvb2cudGVzdGluZy50ZXN0U3VpdGUnXSwgeydsYW5nJzogJ2VzNicsICdtb2R1bGUnOiAnZ29vZyd9KTsKZ29vZy5hZGREZXBlbmRlbmN5KCdzdG9yYWdlL2NvbGxlY3RhYmxlc3RvcmFnZXRlc3Rlci5qcycsIFsnZ29vZy5zdG9yYWdlLmNvbGxlY3RhYmxlU3RvcmFnZVRlc3RlciddLCBbJ2dvb2cudGVzdGluZy5hc3NlcnRzJ10sIHt9KTsKZ29vZy5hZGREZXBlbmRlbmN5KCdzdG9yYWdlL2VuY3J5cHRlZHN0b3JhZ2UuanMnLCBbJ2dvb2cuc3RvcmFnZS5FbmNyeXB0ZWRTdG9yYWdlJ10sIFsnZ29vZy5jcnlwdCcsICdnb29nLmNyeXB0LkFyYzQnLCAnZ29vZy5jcnlwdC5TaGExJywgJ2dvb2cuY3J5cHQuYmFzZTY0JywgJ2dvb2cuanNvbicsICdnb29nLmpzb24uU2VyaWFsaXplcicsICdnb29nLnN0b3JhZ2UuQ29sbGVjdGFibGVTdG9yYWdlJywgJ2dvb2cuc3RvcmFnZS5FcnJvckNvZGUnLCAnZ29vZy5zdG9yYWdlLlJpY2hTdG9yYWdlJ10sIHt9KTsKZ29vZy5hZGREZXBlbmRlbmN5KCdzdG9yYWdlL2VuY3J5cHRlZHN0b3JhZ2VfdGVzdC5qcycsIFsnZ29vZy5zdG9yYWdlLkVuY3J5cHRlZFN0b3JhZ2VUZXN0J10sIFsnZ29vZy5qc29uJywgJ2dvb2cuc3RvcmFnZS5FbmNyeXB0ZWRTdG9yYWdlJywgJ2dvb2cuc3RvcmFnZS5FcnJvckNvZGUnLCAnZ29vZy5zdG9yYWdlLlJpY2hTdG9yYWdlJywgJ2dvb2cuc3RvcmFnZS5jb2xsZWN0YWJsZVN0b3JhZ2VUZXN0ZXInLCAnZ29vZy5zdG9yYWdlLnN0b3JhZ2VUZXN0ZXInLCAnZ29vZy50ZXN0aW5nLk1vY2tDbG9jaycsICdnb29nLnRlc3RpbmcuUHNldWRvUmFuZG9tJywgJ2dvb2cudGVzdGluZy5zdG9yYWdlLkZha2VNZWNoYW5pc20nLCAnZ29vZy50ZXN0aW5nLnRlc3RTdWl0ZSddLCB7J2xhbmcnOiAnZXM2JywgJ21vZHVsZSc6ICdnb29nJ30pOwpnb29nLmFkZERlcGVuZGVuY3koJ3N0b3JhZ2UvZXJyb3Jjb2RlLmpzJywgWydnb29nLnN0b3JhZ2UuRXJyb3JDb2RlJ10sIFtdLCB7fSk7Cmdvb2cuYWRkRGVwZW5kZW5jeSgnc3RvcmFnZS9leHBpcmluZ3N0b3JhZ2UuanMnLCBbJ2dvb2cuc3RvcmFnZS5FeHBpcmluZ1N0b3JhZ2UnXSwgWydnb29nLnN0b3JhZ2UuUmljaFN0b3JhZ2UnXSwge30pOwpnb29nLmFkZERlcGVuZGVuY3koJ3N0b3JhZ2UvZXhwaXJpbmdzdG9yYWdlX3Rlc3QuanMnLCBbJ2dvb2cuc3RvcmFnZS5FeHBpcmluZ1N0b3JhZ2VUZXN0J10sIFsnZ29vZy5zdG9yYWdlLkV4cGlyaW5nU3RvcmFnZScsICdnb29nLnN0b3JhZ2Uuc3RvcmFnZVRlc3RlcicsICdnb29nLnRlc3RpbmcuTW9ja0Nsb2NrJywgJ2dvb2cudGVzdGluZy5zdG9yYWdlLkZha2VNZWNoYW5pc20nLCAnZ29vZy50ZXN0aW5nLnRlc3RTdWl0ZSddLCB7J2xhbmcnOiAnZXM2JywgJ21vZHVsZSc6ICdnb29nJ30pOwpnb29nLmFkZERlcGVuZGVuY3koJ3N0b3JhZ2UvbWVjaGFuaXNtL2Vycm9yY29kZS5qcycsIFsnZ29vZy5zdG9yYWdlLm1lY2hhbmlzbS5FcnJvckNvZGUnXSwgW10sIHt9KTsKZ29vZy5hZGREZXBlbmRlbmN5KCdzdG9yYWdlL21lY2hhbmlzbS9lcnJvcmhhbmRsaW5nbWVjaGFuaXNtLmpzJywgWydnb29nLnN0b3JhZ2UubWVjaGFuaXNtLkVycm9ySGFuZGxpbmdNZWNoYW5pc20nXSwgWydnb29nLnN0b3JhZ2UubWVjaGFuaXNtLk1lY2hhbmlzbSddLCB7fSk7Cmdvb2cuYWRkRGVwZW5kZW5jeSgnc3RvcmFnZS9tZWNoYW5pc20vZXJyb3JoYW5kbGluZ21lY2hhbmlzbV90ZXN0LmpzJywgWydnb29nLnN0b3JhZ2UubWVjaGFuaXNtLkVycm9ySGFuZGxpbmdNZWNoYW5pc21UZXN0J10sIFsnZ29vZy5zdG9yYWdlLm1lY2hhbmlzbS5FcnJvckhhbmRsaW5nTWVjaGFuaXNtJywgJ2dvb2cudGVzdGluZy5yZWNvcmRGdW5jdGlvbicsICdnb29nLnRlc3RpbmcudGVzdFN1aXRlJ10sIHsnbGFuZyc6ICdlczYnLCAnbW9kdWxlJzogJ2dvb2cnfSk7Cmdvb2cuYWRkRGVwZW5kZW5jeSgnc3RvcmFnZS9tZWNoYW5pc20vaHRtbDVsb2NhbHN0b3JhZ2UuanMnLCBbJ2dvb2cuc3RvcmFnZS5tZWNoYW5pc20uSFRNTDVMb2NhbFN0b3JhZ2UnXSwgWydnb29nLnN0b3JhZ2UubWVjaGFuaXNtLkhUTUw1V2ViU3RvcmFnZSddLCB7fSk7Cmdvb2cuYWRkRGVwZW5kZW5jeSgnc3RvcmFnZS9tZWNoYW5pc20vaHRtbDVsb2NhbHN0b3JhZ2VfdGVzdC5qcycsIFsnZ29vZy5zdG9yYWdlLm1lY2hhbmlzbS5IVE1MNUxvY2FsU3RvcmFnZVRlc3QnXSwgWydnb29nLnN0b3JhZ2UubWVjaGFuaXNtLkhUTUw1TG9jYWxTdG9yYWdlJywgJ2dvb2cuc3RvcmFnZS5tZWNoYW5pc20ubWVjaGFuaXNtU2VwYXJhdGlvblRlc3RlcicsICdnb29nLnN0b3JhZ2UubWVjaGFuaXNtLm1lY2hhbmlzbVNoYXJpbmdUZXN0ZXInLCAnZ29vZy5zdG9yYWdlLm1lY2hhbmlzbS5tZWNoYW5pc21UZXN0RGVmaW5pdGlvbicsICdnb29nLnRlc3RpbmcudGVzdFN1aXRlJywgJ2dvb2cudXNlckFnZW50JywgJ2dvb2cudXNlckFnZW50LnByb2R1Y3QnXSwgeydsYW5nJzogJ2VzNicsICdtb2R1bGUnOiAnZ29vZyd9KTsKZ29vZy5hZGREZXBlbmRlbmN5KCdzdG9yYWdlL21lY2hhbmlzbS9odG1sNXNlc3Npb25zdG9yYWdlLmpzJywgWydnb29nLnN0b3JhZ2UubWVjaGFuaXNtLkhUTUw1U2Vzc2lvblN0b3JhZ2UnXSwgWydnb29nLnN0b3JhZ2UubWVjaGFuaXNtLkhUTUw1V2ViU3RvcmFnZSddLCB7fSk7Cmdvb2cuYWRkRGVwZW5kZW5jeSgnc3RvcmFnZS9tZWNoYW5pc20vaHRtbDVzZXNzaW9uc3RvcmFnZV90ZXN0LmpzJywgWydnb29nLnN0b3JhZ2UubWVjaGFuaXNtLkhUTUw1U2Vzc2lvblN0b3JhZ2VUZXN0J10sIFsnZ29vZy5zdG9yYWdlLm1lY2hhbmlzbS5IVE1MNVNlc3Npb25TdG9yYWdlJywgJ2dvb2cuc3RvcmFnZS5tZWNoYW5pc20ubWVjaGFuaXNtU2VwYXJhdGlvblRlc3RlcicsICdnb29nLnN0b3JhZ2UubWVjaGFuaXNtLm1lY2hhbmlzbVNoYXJpbmdUZXN0ZXInLCAnZ29vZy5zdG9yYWdlLm1lY2hhbmlzbS5tZWNoYW5pc21UZXN0RGVmaW5pdGlvbicsICdnb29nLnRlc3RpbmcudGVzdFN1aXRlJywgJ2dvb2cudXNlckFnZW50JywgJ2dvb2cudXNlckFnZW50LnByb2R1Y3QnXSwgeydsYW5nJzogJ2VzNicsICdtb2R1bGUnOiAnZ29vZyd9KTsKZ29vZy5hZGREZXBlbmRlbmN5KCdzdG9yYWdlL21lY2hhbmlzbS9odG1sNXdlYnN0b3JhZ2UuanMnLCBbJ2dvb2cuc3RvcmFnZS5tZWNoYW5pc20uSFRNTDVXZWJTdG9yYWdlJ10sIFsnZ29vZy5hc3NlcnRzJywgJ2dvb2cuaXRlci5JdGVyYXRvcicsICdnb29nLml0ZXIuU3RvcEl0ZXJhdGlvbicsICdnb29nLnN0b3JhZ2UubWVjaGFuaXNtLkVycm9yQ29kZScsICdnb29nLnN0b3JhZ2UubWVjaGFuaXNtLkl0ZXJhYmxlTWVjaGFuaXNtJ10sIHt9KTsKZ29vZy5hZGREZXBlbmRlbmN5KCdzdG9yYWdlL21lY2hhbmlzbS9odG1sNXdlYnN0b3JhZ2VfdGVzdC5qcycsIFsnZ29vZy5zdG9yYWdlLm1lY2hhbmlzbS5IVE1MNVdlYlN0b3JhZ2VUZXN0J10sIFsnZ29vZy5zdG9yYWdlLm1lY2hhbmlzbS5FcnJvckNvZGUnLCAnZ29vZy5zdG9yYWdlLm1lY2hhbmlzbS5IVE1MNVdlYlN0b3JhZ2UnLCAnZ29vZy50ZXN0aW5nLnRlc3RTdWl0ZSddLCB7J2xhbmcnOiAnZXM2JywgJ21vZHVsZSc6ICdnb29nJ30pOwpnb29nLmFkZERlcGVuZGVuY3koJ3N0b3JhZ2UvbWVjaGFuaXNtL2lldXNlcmRhdGEuanMnLCBbJ2dvb2cuc3RvcmFnZS5tZWNoYW5pc20uSUVVc2VyRGF0YSddLCBbJ2dvb2cuYXNzZXJ0cycsICdnb29nLml0ZXIuSXRlcmF0b3InLCAnZ29vZy5pdGVyLlN0b3BJdGVyYXRpb24nLCAnZ29vZy5zdG9yYWdlLm1lY2hhbmlzbS5FcnJvckNvZGUnLCAnZ29vZy5zdG9yYWdlLm1lY2hhbmlzbS5JdGVyYWJsZU1lY2hhbmlzbScsICdnb29nLnN0cnVjdHMuTWFwJywgJ2dvb2cudXNlckFnZW50J10sIHt9KTsKZ29vZy5hZGREZXBlbmRlbmN5KCdzdG9yYWdlL21lY2hhbmlzbS9pZXVzZXJkYXRhX3Rlc3QuanMnLCBbJ2dvb2cuc3RvcmFnZS5tZWNoYW5pc20uSUVVc2VyRGF0YVRlc3QnXSwgWydnb29nLnN0b3JhZ2UubWVjaGFuaXNtLklFVXNlckRhdGEnLCAnZ29vZy5zdG9yYWdlLm1lY2hhbmlzbS5tZWNoYW5pc21TZXBhcmF0aW9uVGVzdGVyJywgJ2dvb2cuc3RvcmFnZS5tZWNoYW5pc20ubWVjaGFuaXNtU2hhcmluZ1Rlc3RlcicsICdnb29nLnN0b3JhZ2UubWVjaGFuaXNtLm1lY2hhbmlzbVRlc3REZWZpbml0aW9uJywgJ2dvb2cudGVzdGluZy50ZXN0U3VpdGUnLCAnZ29vZy51c2VyQWdlbnQnXSwgeydsYW5nJzogJ2VzNicsICdtb2R1bGUnOiAnZ29vZyd9KTsKZ29vZy5hZGREZXBlbmRlbmN5KCdzdG9yYWdlL21lY2hhbmlzbS9pdGVyYWJsZW1lY2hhbmlzbS5qcycsIFsnZ29vZy5zdG9yYWdlLm1lY2hhbmlzbS5JdGVyYWJsZU1lY2hhbmlzbSddLCBbJ2dvb2cuYXJyYXknLCAnZ29vZy5hc3NlcnRzJywgJ2dvb2cuaXRlcicsICdnb29nLnN0b3JhZ2UubWVjaGFuaXNtLk1lY2hhbmlzbSddLCB7fSk7Cmdvb2cuYWRkRGVwZW5kZW5jeSgnc3RvcmFnZS9tZWNoYW5pc20vaXRlcmFibGVtZWNoYW5pc210ZXN0ZXIuanMnLCBbJ2dvb2cuc3RvcmFnZS5tZWNoYW5pc20uaXRlcmFibGVNZWNoYW5pc21UZXN0ZXInXSwgWydnb29nLml0ZXInLCAnZ29vZy5pdGVyLlN0b3BJdGVyYXRpb24nLCAnZ29vZy50ZXN0aW5nLmFzc2VydHMnXSwge30pOwpnb29nLmFkZERlcGVuZGVuY3koJ3N0b3JhZ2UvbWVjaGFuaXNtL21lY2hhbmlzbS5qcycsIFsnZ29vZy5zdG9yYWdlLm1lY2hhbmlzbS5NZWNoYW5pc20nXSwgW10sIHt9KTsKZ29vZy5hZGREZXBlbmRlbmN5KCdzdG9yYWdlL21lY2hhbmlzbS9tZWNoYW5pc21mYWN0b3J5LmpzJywgWydnb29nLnN0b3JhZ2UubWVjaGFuaXNtLm1lY2hhbmlzbWZhY3RvcnknXSwgWydnb29nLnN0b3JhZ2UubWVjaGFuaXNtLkhUTUw1TG9jYWxTdG9yYWdlJywgJ2dvb2cuc3RvcmFnZS5tZWNoYW5pc20uSFRNTDVTZXNzaW9uU3RvcmFnZScsICdnb29nLnN0b3JhZ2UubWVjaGFuaXNtLklFVXNlckRhdGEnLCAnZ29vZy5zdG9yYWdlLm1lY2hhbmlzbS5QcmVmaXhlZE1lY2hhbmlzbSddLCB7fSk7Cmdvb2cuYWRkRGVwZW5kZW5jeSgnc3RvcmFnZS9tZWNoYW5pc20vbWVjaGFuaXNtZmFjdG9yeV90ZXN0LmpzJywgWydnb29nLnN0b3JhZ2UubWVjaGFuaXNtLm1lY2hhbmlzbWZhY3RvcnlUZXN0J10sIFsnZ29vZy5zdG9yYWdlLm1lY2hhbmlzbS5tZWNoYW5pc21mYWN0b3J5JywgJ2dvb2cudGVzdGluZy50ZXN0U3VpdGUnXSwgeydsYW5nJzogJ2VzNicsICdtb2R1bGUnOiAnZ29vZyd9KTsKZ29vZy5hZGREZXBlbmRlbmN5KCdzdG9yYWdlL21lY2hhbmlzbS9tZWNoYW5pc21zZXBhcmF0aW9udGVzdGVyLmpzJywgWydnb29nLnN0b3JhZ2UubWVjaGFuaXNtLm1lY2hhbmlzbVNlcGFyYXRpb25UZXN0ZXInXSwgWydnb29nLml0ZXIuU3RvcEl0ZXJhdGlvbicsICdnb29nLnN0b3JhZ2UubWVjaGFuaXNtLm1lY2hhbmlzbVRlc3REZWZpbml0aW9uJywgJ2dvb2cudGVzdGluZy5hc3NlcnRzJ10sIHt9KTsKZ29vZy5hZGREZXBlbmRlbmN5KCdzdG9yYWdlL21lY2hhbmlzbS9tZWNoYW5pc21zaGFyaW5ndGVzdGVyLmpzJywgWydnb29nLnN0b3JhZ2UubWVjaGFuaXNtLm1lY2hhbmlzbVNoYXJpbmdUZXN0ZXInXSwgWydnb29nLml0ZXIuU3RvcEl0ZXJhdGlvbicsICdnb29nLnN0b3JhZ2UubWVjaGFuaXNtLm1lY2hhbmlzbVRlc3REZWZpbml0aW9uJywgJ2dvb2cudGVzdGluZy5hc3NlcnRzJ10sIHt9KTsKZ29vZy5hZGREZXBlbmRlbmN5KCdzdG9yYWdlL21lY2hhbmlzbS9tZWNoYW5pc210ZXN0ZGVmaW5pdGlvbi5qcycsIFsnZ29vZy5zdG9yYWdlLm1lY2hhbmlzbS5tZWNoYW5pc21UZXN0RGVmaW5pdGlvbiddLCBbXSwge30pOwpnb29nLmFkZERlcGVuZGVuY3koJ3N0b3JhZ2UvbWVjaGFuaXNtL21lY2hhbmlzbXRlc3Rlci5qcycsIFsnZ29vZy5zdG9yYWdlLm1lY2hhbmlzbS5tZWNoYW5pc21UZXN0ZXInXSwgWydnb29nLnN0b3JhZ2UubWVjaGFuaXNtLkVycm9yQ29kZScsICdnb29nLnRlc3RpbmcuYXNzZXJ0cycsICdnb29nLnVzZXJBZ2VudCcsICdnb29nLnVzZXJBZ2VudC5wcm9kdWN0JywgJ2dvb2cudXNlckFnZW50LnByb2R1Y3QuaXNWZXJzaW9uJ10sIHt9KTsKZ29vZy5hZGREZXBlbmRlbmN5KCdzdG9yYWdlL21lY2hhbmlzbS9wcmVmaXhlZG1lY2hhbmlzbS5qcycsIFsnZ29vZy5zdG9yYWdlLm1lY2hhbmlzbS5QcmVmaXhlZE1lY2hhbmlzbSddLCBbJ2dvb2cuaXRlci5JdGVyYXRvcicsICdnb29nLnN0b3JhZ2UubWVjaGFuaXNtLkl0ZXJhYmxlTWVjaGFuaXNtJ10sIHt9KTsKZ29vZy5hZGREZXBlbmRlbmN5KCdzdG9yYWdlL21lY2hhbmlzbS9wcmVmaXhlZG1lY2hhbmlzbV90ZXN0LmpzJywgWydnb29nLnN0b3JhZ2UubWVjaGFuaXNtLlByZWZpeGVkTWVjaGFuaXNtVGVzdCddLCBbJ2dvb2cuc3RvcmFnZS5tZWNoYW5pc20uSFRNTDVMb2NhbFN0b3JhZ2UnLCAnZ29vZy5zdG9yYWdlLm1lY2hhbmlzbS5QcmVmaXhlZE1lY2hhbmlzbScsICdnb29nLnN0b3JhZ2UubWVjaGFuaXNtLm1lY2hhbmlzbVNlcGFyYXRpb25UZXN0ZXInLCAnZ29vZy5zdG9yYWdlLm1lY2hhbmlzbS5tZWNoYW5pc21TaGFyaW5nVGVzdGVyJywgJ2dvb2cudGVzdGluZy50ZXN0U3VpdGUnXSwgeydsYW5nJzogJ2VzNicsICdtb2R1bGUnOiAnZ29vZyd9KTsKZ29vZy5hZGREZXBlbmRlbmN5KCdzdG9yYWdlL3JpY2hzdG9yYWdlLmpzJywgWydnb29nLnN0b3JhZ2UuUmljaFN0b3JhZ2UnLCAnZ29vZy5zdG9yYWdlLlJpY2hTdG9yYWdlLldyYXBwZXInXSwgWydnb29nLnN0b3JhZ2UuRXJyb3JDb2RlJywgJ2dvb2cuc3RvcmFnZS5TdG9yYWdlJ10sIHt9KTsKZ29vZy5hZGREZXBlbmRlbmN5KCdzdG9yYWdlL3JpY2hzdG9yYWdlX3Rlc3QuanMnLCBbJ2dvb2cuc3RvcmFnZS5SaWNoU3RvcmFnZVRlc3QnXSwgWydnb29nLnN0b3JhZ2UuRXJyb3JDb2RlJywgJ2dvb2cuc3RvcmFnZS5SaWNoU3RvcmFnZScsICdnb29nLnN0b3JhZ2Uuc3RvcmFnZVRlc3RlcicsICdnb29nLnRlc3Rpbmcuc3RvcmFnZS5GYWtlTWVjaGFuaXNtJywgJ2dvb2cudGVzdGluZy50ZXN0U3VpdGUnXSwgeydsYW5nJzogJ2VzNicsICdtb2R1bGUnOiAnZ29vZyd9KTsKZ29vZy5hZGREZXBlbmRlbmN5KCdzdG9yYWdlL3N0b3JhZ2UuanMnLCBbJ2dvb2cuc3RvcmFnZS5TdG9yYWdlJ10sIFsnZ29vZy5qc29uJywgJ2dvb2cuc3RvcmFnZS5FcnJvckNvZGUnXSwge30pOwpnb29nLmFkZERlcGVuZGVuY3koJ3N0b3JhZ2Uvc3RvcmFnZV90ZXN0LmpzJywgWydnb29nLnN0b3JhZ2Uuc3RvcmFnZV90ZXN0J10sIFsnZ29vZy5mdW5jdGlvbnMnLCAnZ29vZy5zdG9yYWdlLkVycm9yQ29kZScsICdnb29nLnN0b3JhZ2UuU3RvcmFnZScsICdnb29nLnN0b3JhZ2Uuc3RvcmFnZVRlc3RlcicsICdnb29nLnRlc3RpbmcuYXNzZXJ0cycsICdnb29nLnRlc3Rpbmcuc3RvcmFnZS5GYWtlTWVjaGFuaXNtJywgJ2dvb2cudGVzdGluZy50ZXN0U3VpdGUnXSwgeydsYW5nJzogJ2VzNicsICdtb2R1bGUnOiAnZ29vZyd9KTsKZ29vZy5hZGREZXBlbmRlbmN5KCdzdG9yYWdlL3N0b3JhZ2V0ZXN0ZXIuanMnLCBbJ2dvb2cuc3RvcmFnZS5zdG9yYWdlVGVzdGVyJ10sIFsnZ29vZy5zdG9yYWdlLlN0b3JhZ2UnLCAnZ29vZy5zdHJ1Y3RzLk1hcCcsICdnb29nLnRlc3RpbmcuYXNzZXJ0cyddLCB7fSk7Cmdvb2cuYWRkRGVwZW5kZW5jeSgnc3RyZWFtcy9kZWZpbmVzLmpzJywgWydnb29nLnN0cmVhbXMuZGVmaW5lcyddLCBbXSwgeydsYW5nJzogJ2VzNicsICdtb2R1bGUnOiAnZ29vZyd9KTsKZ29vZy5hZGREZXBlbmRlbmN5KCdzdHJlYW1zL2Z1bGwuanMnLCBbJ2dvb2cuc3RyZWFtcy5mdWxsJ10sIFsnZ29vZy5zdHJlYW1zLmRlZmluZXMnLCAnZ29vZy5zdHJlYW1zLmZ1bGxJbXBsJywgJ2dvb2cuc3RyZWFtcy5mdWxsTmF0aXZlSW1wbCcsICdnb29nLnN0cmVhbXMuZnVsbFR5cGVzJ10sIHsnbGFuZyc6ICdlczYnLCAnbW9kdWxlJzogJ2dvb2cnfSk7Cmdvb2cuYWRkRGVwZW5kZW5jeSgnc3RyZWFtcy9mdWxsX2ltcGwuanMnLCBbJ2dvb2cuc3RyZWFtcy5mdWxsSW1wbCddLCBbJ2dvb2cuYXNzZXJ0cycsICdnb29nLnByb21pc2UuTmF0aXZlUmVzb2x2ZXInLCAnZ29vZy5zdHJlYW1zLmZ1bGxUeXBlcycsICdnb29nLnN0cmVhbXMubGl0ZUltcGwnXSwgeydsYW5nJzogJ2VzNicsICdtb2R1bGUnOiAnZ29vZyd9KTsKZ29vZy5hZGREZXBlbmRlbmN5KCdzdHJlYW1zL2Z1bGxfaW1wbF90ZXN0LmpzJywgWydnb29nLnN0cmVhbXMuZnVsbEltcGxUZXN0J10sIFsnZ29vZy5zdHJlYW1zLmZ1bGxJbXBsJywgJ2dvb2cuc3RyZWFtcy5mdWxsVGVzdENhc2VzJywgJ2dvb2cudGVzdGluZy50ZXN0U3VpdGUnXSwgeydsYW5nJzogJ2VzNicsICdtb2R1bGUnOiAnZ29vZyd9KTsKZ29vZy5hZGREZXBlbmRlbmN5KCdzdHJlYW1zL2Z1bGxfbmF0aXZlX2ltcGwuanMnLCBbJ2dvb2cuc3RyZWFtcy5mdWxsTmF0aXZlSW1wbCddLCBbJ2dvb2cuc3RyZWFtcy5mdWxsVHlwZXMnLCAnZ29vZy5zdHJlYW1zLmxpdGVOYXRpdmVJbXBsJ10sIHsnbGFuZyc6ICdlczYnLCAnbW9kdWxlJzogJ2dvb2cnfSk7Cmdvb2cuYWRkRGVwZW5kZW5jeSgnc3RyZWFtcy9mdWxsX25hdGl2ZV9pbXBsX3Rlc3QuanMnLCBbJ2dvb2cuc3RyZWFtcy5mdWxsTmF0aXZlSW1wbFRlc3QnXSwgWydnb29nLnN0cmVhbXMuZnVsbE5hdGl2ZUltcGwnLCAnZ29vZy5zdHJlYW1zLmZ1bGxUZXN0Q2FzZXMnLCAnZ29vZy50ZXN0aW5nLnRlc3RTdWl0ZSddLCB7J2xhbmcnOiAnZXM2JywgJ21vZHVsZSc6ICdnb29nJ30pOwpnb29nLmFkZERlcGVuZGVuY3koJ3N0cmVhbXMvZnVsbF90ZXN0X2Nhc2VzLmpzJywgWydnb29nLnN0cmVhbXMuZnVsbFRlc3RDYXNlcyddLCBbJ2dvb2cuc3RyZWFtcy5mdWxsVHlwZXMnLCAnZ29vZy5zdHJlYW1zLmxpdGVUZXN0Q2FzZXMnLCAnZ29vZy50ZXN0aW5nLnJlY29yZEZ1bmN0aW9uJ10sIHsnbGFuZyc6ICdlczknLCAnbW9kdWxlJzogJ2dvb2cnfSk7Cmdvb2cuYWRkRGVwZW5kZW5jeSgnc3RyZWFtcy9mdWxsX3R5cGVzLmpzJywgWydnb29nLnN0cmVhbXMuZnVsbFR5cGVzJ10sIFsnZ29vZy5zdHJlYW1zLmxpdGVUeXBlcyddLCB7J2xhbmcnOiAnZXM2JywgJ21vZHVsZSc6ICdnb29nJ30pOwpnb29nLmFkZERlcGVuZGVuY3koJ3N0cmVhbXMvbGl0ZS5qcycsIFsnZ29vZy5zdHJlYW1zLmxpdGUnXSwgWydnb29nLnN0cmVhbXMuZGVmaW5lcycsICdnb29nLnN0cmVhbXMubGl0ZUltcGwnLCAnZ29vZy5zdHJlYW1zLmxpdGVOYXRpdmVJbXBsJywgJ2dvb2cuc3RyZWFtcy5saXRlVHlwZXMnXSwgeydsYW5nJzogJ2VzNicsICdtb2R1bGUnOiAnZ29vZyd9KTsKZ29vZy5hZGREZXBlbmRlbmN5KCdzdHJlYW1zL2xpdGVfaW1wbC5qcycsIFsnZ29vZy5zdHJlYW1zLmxpdGVJbXBsJ10sIFsnZ29vZy5hc3NlcnRzJywgJ2dvb2cucHJvbWlzZS5OYXRpdmVSZXNvbHZlcicsICdnb29nLnN0cmVhbXMubGl0ZVR5cGVzJ10sIHsnbGFuZyc6ICdlczYnLCAnbW9kdWxlJzogJ2dvb2cnfSk7Cmdvb2cuYWRkRGVwZW5kZW5jeSgnc3RyZWFtcy9saXRlX2ltcGxfdGVzdC5qcycsIFsnZ29vZy5zdHJlYW1zLmxpdGVJbXBsVGVzdCddLCBbJ2dvb2cuc3RyZWFtcy5saXRlSW1wbCcsICdnb29nLnN0cmVhbXMubGl0ZVRlc3RDYXNlcycsICdnb29nLnRlc3RpbmcudGVzdFN1aXRlJ10sIHsnbGFuZyc6ICdlczYnLCAnbW9kdWxlJzogJ2dvb2cnfSk7Cmdvb2cuYWRkRGVwZW5kZW5jeSgnc3RyZWFtcy9saXRlX25hdGl2ZV9pbXBsLmpzJywgWydnb29nLnN0cmVhbXMubGl0ZU5hdGl2ZUltcGwnXSwgWydnb29nLnN0cmVhbXMubGl0ZVR5cGVzJ10sIHsnbGFuZyc6ICdlczYnLCAnbW9kdWxlJzogJ2dvb2cnfSk7Cmdvb2cuYWRkRGVwZW5kZW5jeSgnc3RyZWFtcy9saXRlX25hdGl2ZV9pbXBsX3Rlc3QuanMnLCBbJ2dvb2cuc3RyZWFtcy5saXRlTmF0aXZlSW1wbFRlc3QnXSwgWydnb29nLnN0cmVhbXMubGl0ZU5hdGl2ZUltcGwnLCAnZ29vZy5zdHJlYW1zLmxpdGVUZXN0Q2FzZXMnLCAnZ29vZy50ZXN0aW5nLnRlc3RTdWl0ZSddLCB7J2xhbmcnOiAnZXM2JywgJ21vZHVsZSc6ICdnb29nJ30pOwpnb29nLmFkZERlcGVuZGVuY3koJ3N0cmVhbXMvbGl0ZV90ZXN0X2Nhc2VzLmpzJywgWydnb29nLnN0cmVhbXMubGl0ZVRlc3RDYXNlcyddLCBbJ2dvb2cuc3RyZWFtcy5saXRlVHlwZXMnLCAnZ29vZy50ZXN0aW5nLmpzdW5pdCddLCB7J2xhbmcnOiAnZXM4JywgJ21vZHVsZSc6ICdnb29nJ30pOwpnb29nLmFkZERlcGVuZGVuY3koJ3N0cmVhbXMvbGl0ZV90eXBlcy5qcycsIFsnZ29vZy5zdHJlYW1zLmxpdGVUeXBlcyddLCBbXSwgeydsYW5nJzogJ2VzNicsICdtb2R1bGUnOiAnZ29vZyd9KTsKZ29vZy5hZGREZXBlbmRlbmN5KCdzdHJpbmcvY29uc3QuanMnLCBbJ2dvb2cuc3RyaW5nLkNvbnN0J10sIFsnZ29vZy5hc3NlcnRzJywgJ2dvb2cuc3RyaW5nLlR5cGVkU3RyaW5nJ10sIHt9KTsKZ29vZy5hZGREZXBlbmRlbmN5KCdzdHJpbmcvY29uc3RfdGVzdC5qcycsIFsnZ29vZy5zdHJpbmcuY29uc3RUZXN0J10sIFsnZ29vZy5zdHJpbmcuQ29uc3QnLCAnZ29vZy50ZXN0aW5nLnRlc3RTdWl0ZSddLCB7J2xhbmcnOiAnZXM2JywgJ21vZHVsZSc6ICdnb29nJ30pOwpnb29nLmFkZERlcGVuZGVuY3koJ3N0cmluZy9pbnRlcm5hbC5qcycsIFsnZ29vZy5zdHJpbmcuaW50ZXJuYWwnXSwgW10sIHsnbGFuZyc6ICdlczYnfSk7Cmdvb2cuYWRkRGVwZW5kZW5jeSgnc3RyaW5nL2xpbmtpZnkuanMnLCBbJ2dvb2cuc3RyaW5nLmxpbmtpZnknXSwgWydnb29nLmh0bWwuU2FmZUh0bWwnLCAnZ29vZy5zdHJpbmcnXSwge30pOwpnb29nLmFkZERlcGVuZGVuY3koJ3N0cmluZy9saW5raWZ5X3Rlc3QuanMnLCBbJ2dvb2cuc3RyaW5nLmxpbmtpZnlUZXN0J10sIFsnZ29vZy5kb20nLCAnZ29vZy5kb20uVGFnTmFtZScsICdnb29nLmRvbS5zYWZlJywgJ2dvb2cuaHRtbC5TYWZlSHRtbCcsICdnb29nLnN0cmluZycsICdnb29nLnN0cmluZy5saW5raWZ5JywgJ2dvb2cudGVzdGluZy5kb20nLCAnZ29vZy50ZXN0aW5nLnRlc3RTdWl0ZSddLCB7J2xhbmcnOiAnZXM2JywgJ21vZHVsZSc6ICdnb29nJ30pOwpnb29nLmFkZERlcGVuZGVuY3koJ3N0cmluZy9uZXdsaW5lcy5qcycsIFsnZ29vZy5zdHJpbmcubmV3bGluZXMnLCAnZ29vZy5zdHJpbmcubmV3bGluZXMuTGluZSddLCBbJ2dvb2cuYXJyYXknXSwge30pOwpnb29nLmFkZERlcGVuZGVuY3koJ3N0cmluZy9uZXdsaW5lc190ZXN0LmpzJywgWydnb29nLnN0cmluZy5uZXdsaW5lc1Rlc3QnXSwgWydnb29nLnN0cmluZy5uZXdsaW5lcycsICdnb29nLnRlc3RpbmcudGVzdFN1aXRlJ10sIHsnbGFuZyc6ICdlczYnLCAnbW9kdWxlJzogJ2dvb2cnfSk7Cmdvb2cuYWRkRGVwZW5kZW5jeSgnc3RyaW5nL3BhcnNlci5qcycsIFsnZ29vZy5zdHJpbmcuUGFyc2VyJ10sIFtdLCB7fSk7Cmdvb2cuYWRkRGVwZW5kZW5jeSgnc3RyaW5nL3BhdGguanMnLCBbJ2dvb2cuc3RyaW5nLnBhdGgnXSwgWydnb29nLmFycmF5JywgJ2dvb2cuc3RyaW5nJ10sIHt9KTsKZ29vZy5hZGREZXBlbmRlbmN5KCdzdHJpbmcvcGF0aF90ZXN0LmpzJywgWydnb29nLnN0cmluZy5wYXRoVGVzdCddLCBbJ2dvb2cuc3RyaW5nLnBhdGgnLCAnZ29vZy50ZXN0aW5nLnRlc3RTdWl0ZSddLCB7J2xhbmcnOiAnZXM2JywgJ21vZHVsZSc6ICdnb29nJ30pOwpnb29nLmFkZERlcGVuZGVuY3koJ3N0cmluZy9zdHJpbmcuanMnLCBbJ2dvb2cuc3RyaW5nJywgJ2dvb2cuc3RyaW5nLlVuaWNvZGUnXSwgWydnb29nLmRvbS5zYWZlJywgJ2dvb2cuaHRtbC51bmNoZWNrZWRjb252ZXJzaW9ucycsICdnb29nLnN0cmluZy5Db25zdCcsICdnb29nLnN0cmluZy5pbnRlcm5hbCddLCB7fSk7Cmdvb2cuYWRkRGVwZW5kZW5jeSgnc3RyaW5nL3N0cmluZ190ZXN0LmpzJywgWydnb29nLnN0cmluZ1Rlc3QnXSwgWydnb29nLmRvbScsICdnb29nLmRvbS5UYWdOYW1lJywgJ2dvb2cuZnVuY3Rpb25zJywgJ2dvb2cub2JqZWN0JywgJ2dvb2cuc3RyaW5nJywgJ2dvb2cuc3RyaW5nLlVuaWNvZGUnLCAnZ29vZy50ZXN0aW5nLk1vY2tDb250cm9sJywgJ2dvb2cudGVzdGluZy5Qcm9wZXJ0eVJlcGxhY2VyJywgJ2dvb2cudGVzdGluZy50ZXN0U3VpdGUnXSwgeydsYW5nJzogJ2VzNicsICdtb2R1bGUnOiAnZ29vZyd9KTsKZ29vZy5hZGREZXBlbmRlbmN5KCdzdHJpbmcvc3RyaW5nYnVmZmVyLmpzJywgWydnb29nLnN0cmluZy5TdHJpbmdCdWZmZXInXSwgW10sIHsnbGFuZyc6ICdlczYnfSk7Cmdvb2cuYWRkRGVwZW5kZW5jeSgnc3RyaW5nL3N0cmluZ2J1ZmZlcl90ZXN0LmpzJywgWydnb29nLnN0cmluZy5TdHJpbmdCdWZmZXJUZXN0J10sIFsnZ29vZy5zdHJpbmcuU3RyaW5nQnVmZmVyJywgJ2dvb2cudGVzdGluZy50ZXN0U3VpdGUnXSwgeydsYW5nJzogJ2VzNicsICdtb2R1bGUnOiAnZ29vZyd9KTsKZ29vZy5hZGREZXBlbmRlbmN5KCdzdHJpbmcvc3RyaW5nZm9ybWF0LmpzJywgWydnb29nLnN0cmluZy5mb3JtYXQnXSwgWydnb29nLnN0cmluZyddLCB7fSk7Cmdvb2cuYWRkRGVwZW5kZW5jeSgnc3RyaW5nL3N0cmluZ2Zvcm1hdF90ZXN0LmpzJywgWydnb29nLnN0cmluZy5mb3JtYXRUZXN0J10sIFsnZ29vZy5zdHJpbmcuZm9ybWF0JywgJ2dvb2cudGVzdGluZy50ZXN0U3VpdGUnXSwgeydsYW5nJzogJ2VzNicsICdtb2R1bGUnOiAnZ29vZyd9KTsKZ29vZy5hZGREZXBlbmRlbmN5KCdzdHJpbmcvc3RyaW5naWZpZXIuanMnLCBbJ2dvb2cuc3RyaW5nLlN0cmluZ2lmaWVyJ10sIFtdLCB7fSk7Cmdvb2cuYWRkRGVwZW5kZW5jeSgnc3RyaW5nL3R5cGVkc3RyaW5nLmpzJywgWydnb29nLnN0cmluZy5UeXBlZFN0cmluZyddLCBbXSwge30pOwpnb29nLmFkZERlcGVuZGVuY3koJ3N0cnVjdHMvYXZsdHJlZS5qcycsIFsnZ29vZy5zdHJ1Y3RzLkF2bFRyZWUnXSwgWydnb29nLmFzc2VydHMnLCAnZ29vZy5zdHJ1Y3RzLkNvbGxlY3Rpb24nXSwgeydtb2R1bGUnOiAnZ29vZyd9KTsKZ29vZy5hZGREZXBlbmRlbmN5KCdzdHJ1Y3RzL2F2bHRyZWVfdGVzdC5qcycsIFsnZ29vZy5zdHJ1Y3RzLkF2bFRyZWVUZXN0J10sIFsnZ29vZy5hcnJheScsICdnb29nLnN0cnVjdHMuQXZsVHJlZScsICdnb29nLnRlc3RpbmcudGVzdFN1aXRlJ10sIHsnbGFuZyc6ICdlczYnLCAnbW9kdWxlJzogJ2dvb2cnfSk7Cmdvb2cuYWRkRGVwZW5kZW5jeSgnc3RydWN0cy9jaXJjdWxhcmJ1ZmZlci5qcycsIFsnZ29vZy5zdHJ1Y3RzLkNpcmN1bGFyQnVmZmVyJ10sIFtdLCB7J2xhbmcnOiAnZXM2J30pOwpnb29nLmFkZERlcGVuZGVuY3koJ3N0cnVjdHMvY2lyY3VsYXJidWZmZXJfdGVzdC5qcycsIFsnZ29vZy5zdHJ1Y3RzLkNpcmN1bGFyQnVmZmVyVGVzdCddLCBbJ2dvb2cuc3RydWN0cy5DaXJjdWxhckJ1ZmZlcicsICdnb29nLnRlc3RpbmcudGVzdFN1aXRlJ10sIHsnbGFuZyc6ICdlczYnLCAnbW9kdWxlJzogJ2dvb2cnfSk7Cmdvb2cuYWRkRGVwZW5kZW5jeSgnc3RydWN0cy9jb2xsZWN0aW9uLmpzJywgWydnb29nLnN0cnVjdHMuQ29sbGVjdGlvbiddLCBbXSwge30pOwpnb29nLmFkZERlcGVuZGVuY3koJ3N0cnVjdHMvY29sbGVjdGlvbl90ZXN0LmpzJywgWydnb29nLnN0cnVjdHMuQ29sbGVjdGlvblRlc3QnXSwgWydnb29nLnN0cnVjdHMuQXZsVHJlZScsICdnb29nLnN0cnVjdHMuU2V0JywgJ2dvb2cudGVzdGluZy50ZXN0U3VpdGUnXSwgeydsYW5nJzogJ2VzNicsICdtb2R1bGUnOiAnZ29vZyd9KTsKZ29vZy5hZGREZXBlbmRlbmN5KCdzdHJ1Y3RzL2hlYXAuanMnLCBbJ2dvb2cuc3RydWN0cy5IZWFwJ10sIFsnZ29vZy5hcnJheScsICdnb29nLm9iamVjdCcsICdnb29nLnN0cnVjdHMuTm9kZSddLCB7fSk7Cmdvb2cuYWRkRGVwZW5kZW5jeSgnc3RydWN0cy9oZWFwX3Rlc3QuanMnLCBbJ2dvb2cuc3RydWN0cy5IZWFwVGVzdCddLCBbJ2dvb2cuc3RydWN0cycsICdnb29nLnN0cnVjdHMuSGVhcCcsICdnb29nLnRlc3RpbmcudGVzdFN1aXRlJ10sIHsnbGFuZyc6ICdlczYnLCAnbW9kdWxlJzogJ2dvb2cnfSk7Cmdvb2cuYWRkRGVwZW5kZW5jeSgnc3RydWN0cy9pbnZlcnNpb25tYXAuanMnLCBbJ2dvb2cuc3RydWN0cy5JbnZlcnNpb25NYXAnXSwgWydnb29nLmFycmF5JywgJ2dvb2cuYXNzZXJ0cyddLCB7fSk7Cmdvb2cuYWRkRGVwZW5kZW5jeSgnc3RydWN0cy9pbnZlcnNpb25tYXBfdGVzdC5qcycsIFsnZ29vZy5zdHJ1Y3RzLkludmVyc2lvbk1hcFRlc3QnXSwgWydnb29nLnN0cnVjdHMuSW52ZXJzaW9uTWFwJywgJ2dvb2cudGVzdGluZy50ZXN0U3VpdGUnXSwgeydsYW5nJzogJ2VzNicsICdtb2R1bGUnOiAnZ29vZyd9KTsKZ29vZy5hZGREZXBlbmRlbmN5KCdzdHJ1Y3RzL2xpbmtlZG1hcC5qcycsIFsnZ29vZy5zdHJ1Y3RzLkxpbmtlZE1hcCddLCBbJ2dvb2cuc3RydWN0cy5NYXAnXSwge30pOwpnb29nLmFkZERlcGVuZGVuY3koJ3N0cnVjdHMvbGlua2VkbWFwX3Rlc3QuanMnLCBbJ2dvb2cuc3RydWN0cy5MaW5rZWRNYXBUZXN0J10sIFsnZ29vZy5zdHJ1Y3RzLkxpbmtlZE1hcCcsICdnb29nLnRlc3RpbmcucmVjb3JkRnVuY3Rpb24nLCAnZ29vZy50ZXN0aW5nLnRlc3RTdWl0ZSddLCB7J2xhbmcnOiAnZXM2JywgJ21vZHVsZSc6ICdnb29nJ30pOwpnb29nLmFkZERlcGVuZGVuY3koJ3N0cnVjdHMvbWFwLmpzJywgWydnb29nLnN0cnVjdHMuTWFwJ10sIFsnZ29vZy5pdGVyLkl0ZXJhdG9yJywgJ2dvb2cuaXRlci5TdG9wSXRlcmF0aW9uJ10sIHt9KTsKZ29vZy5hZGREZXBlbmRlbmN5KCdzdHJ1Y3RzL21hcF90ZXN0LmpzJywgWydnb29nLnN0cnVjdHMuTWFwVGVzdCddLCBbJ2dvb2cuaXRlcicsICdnb29nLnN0cnVjdHMnLCAnZ29vZy5zdHJ1Y3RzLk1hcCcsICdnb29nLnRlc3RpbmcudGVzdFN1aXRlJ10sIHsnbGFuZyc6ICdlczYnLCAnbW9kdWxlJzogJ2dvb2cnfSk7Cmdvb2cuYWRkRGVwZW5kZW5jeSgnc3RydWN0cy9ub2RlLmpzJywgWydnb29nLnN0cnVjdHMuTm9kZSddLCBbXSwge30pOwpnb29nLmFkZERlcGVuZGVuY3koJ3N0cnVjdHMvcG9vbC5qcycsIFsnZ29vZy5zdHJ1Y3RzLlBvb2wnXSwgWydnb29nLkRpc3Bvc2FibGUnLCAnZ29vZy5zdHJ1Y3RzLlF1ZXVlJywgJ2dvb2cuc3RydWN0cy5TZXQnXSwge30pOwpnb29nLmFkZERlcGVuZGVuY3koJ3N0cnVjdHMvcG9vbF90ZXN0LmpzJywgWydnb29nLnN0cnVjdHMuUG9vbFRlc3QnXSwgWydnb29nLnN0cnVjdHMuUG9vbCcsICdnb29nLnRlc3RpbmcuTW9ja0Nsb2NrJywgJ2dvb2cudGVzdGluZy50ZXN0U3VpdGUnXSwgeydsYW5nJzogJ2VzNicsICdtb2R1bGUnOiAnZ29vZyd9KTsKZ29vZy5hZGREZXBlbmRlbmN5KCdzdHJ1Y3RzL3ByaW9yaXR5cG9vbC5qcycsIFsnZ29vZy5zdHJ1Y3RzLlByaW9yaXR5UG9vbCddLCBbJ2dvb2cuc3RydWN0cy5Qb29sJywgJ2dvb2cuc3RydWN0cy5Qcmlvcml0eVF1ZXVlJ10sIHt9KTsKZ29vZy5hZGREZXBlbmRlbmN5KCdzdHJ1Y3RzL3ByaW9yaXR5cG9vbF90ZXN0LmpzJywgWydnb29nLnN0cnVjdHMuUHJpb3JpdHlQb29sVGVzdCddLCBbJ2dvb2cuc3RydWN0cy5Qcmlvcml0eVBvb2wnLCAnZ29vZy50ZXN0aW5nLk1vY2tDbG9jaycsICdnb29nLnRlc3RpbmcudGVzdFN1aXRlJ10sIHsnbGFuZyc6ICdlczYnLCAnbW9kdWxlJzogJ2dvb2cnfSk7Cmdvb2cuYWRkRGVwZW5kZW5jeSgnc3RydWN0cy9wcmlvcml0eXF1ZXVlLmpzJywgWydnb29nLnN0cnVjdHMuUHJpb3JpdHlRdWV1ZSddLCBbJ2dvb2cuc3RydWN0cy5IZWFwJ10sIHt9KTsKZ29vZy5hZGREZXBlbmRlbmN5KCdzdHJ1Y3RzL3ByaW9yaXR5cXVldWVfdGVzdC5qcycsIFsnZ29vZy5zdHJ1Y3RzLlByaW9yaXR5UXVldWVUZXN0J10sIFsnZ29vZy5zdHJ1Y3RzJywgJ2dvb2cuc3RydWN0cy5Qcmlvcml0eVF1ZXVlJywgJ2dvb2cudGVzdGluZy50ZXN0U3VpdGUnXSwgeydsYW5nJzogJ2VzNicsICdtb2R1bGUnOiAnZ29vZyd9KTsKZ29vZy5hZGREZXBlbmRlbmN5KCdzdHJ1Y3RzL3F1YWR0cmVlLmpzJywgWydnb29nLnN0cnVjdHMuUXVhZFRyZWUnLCAnZ29vZy5zdHJ1Y3RzLlF1YWRUcmVlLk5vZGUnLCAnZ29vZy5zdHJ1Y3RzLlF1YWRUcmVlLlBvaW50J10sIFsnZ29vZy5tYXRoLkNvb3JkaW5hdGUnXSwge30pOwpnb29nLmFkZERlcGVuZGVuY3koJ3N0cnVjdHMvcXVhZHRyZWVfdGVzdC5qcycsIFsnZ29vZy5zdHJ1Y3RzLlF1YWRUcmVlVGVzdCddLCBbJ2dvb2cuc3RydWN0cycsICdnb29nLnN0cnVjdHMuUXVhZFRyZWUnLCAnZ29vZy50ZXN0aW5nLnRlc3RTdWl0ZSddLCB7J2xhbmcnOiAnZXM2JywgJ21vZHVsZSc6ICdnb29nJ30pOwpnb29nLmFkZERlcGVuZGVuY3koJ3N0cnVjdHMvcXVldWUuanMnLCBbJ2dvb2cuc3RydWN0cy5RdWV1ZSddLCBbJ2dvb2cuYXJyYXknXSwge30pOwpnb29nLmFkZERlcGVuZGVuY3koJ3N0cnVjdHMvcXVldWVfdGVzdC5qcycsIFsnZ29vZy5zdHJ1Y3RzLlF1ZXVlVGVzdCddLCBbJ2dvb2cuc3RydWN0cy5RdWV1ZScsICdnb29nLnRlc3RpbmcudGVzdFN1aXRlJ10sIHsnbGFuZyc6ICdlczYnLCAnbW9kdWxlJzogJ2dvb2cnfSk7Cmdvb2cuYWRkRGVwZW5kZW5jeSgnc3RydWN0cy9zZXQuanMnLCBbJ2dvb2cuc3RydWN0cy5TZXQnXSwgWydnb29nLnN0cnVjdHMnLCAnZ29vZy5zdHJ1Y3RzLkNvbGxlY3Rpb24nLCAnZ29vZy5zdHJ1Y3RzLk1hcCddLCB7fSk7Cmdvb2cuYWRkRGVwZW5kZW5jeSgnc3RydWN0cy9zZXRfdGVzdC5qcycsIFsnZ29vZy5zdHJ1Y3RzLlNldFRlc3QnXSwgWydnb29nLml0ZXInLCAnZ29vZy5zdHJ1Y3RzJywgJ2dvb2cuc3RydWN0cy5TZXQnLCAnZ29vZy50ZXN0aW5nLnRlc3RTdWl0ZSddLCB7J2xhbmcnOiAnZXM2JywgJ21vZHVsZSc6ICdnb29nJ30pOwpnb29nLmFkZERlcGVuZGVuY3koJ3N0cnVjdHMvc2ltcGxlcG9vbC5qcycsIFsnZ29vZy5zdHJ1Y3RzLlNpbXBsZVBvb2wnXSwgWydnb29nLkRpc3Bvc2FibGUnXSwge30pOwpnb29nLmFkZERlcGVuZGVuY3koJ3N0cnVjdHMvc3RyaW5nc2V0LmpzJywgWydnb29nLnN0cnVjdHMuU3RyaW5nU2V0J10sIFsnZ29vZy5hc3NlcnRzJywgJ2dvb2cuaXRlciddLCB7fSk7Cmdvb2cuYWRkRGVwZW5kZW5jeSgnc3RydWN0cy9zdHJpbmdzZXRfdGVzdC5qcycsIFsnZ29vZy5zdHJ1Y3RzLlN0cmluZ1NldFRlc3QnXSwgWydnb29nLmFycmF5JywgJ2dvb2cuaXRlcicsICdnb29nLnN0cnVjdHMuU3RyaW5nU2V0JywgJ2dvb2cudGVzdGluZy5hc3NlcnRzJywgJ2dvb2cudGVzdGluZy50ZXN0U3VpdGUnXSwgeydsYW5nJzogJ2VzNicsICdtb2R1bGUnOiAnZ29vZyd9KTsKZ29vZy5hZGREZXBlbmRlbmN5KCdzdHJ1Y3RzL3N0cnVjdHMuanMnLCBbJ2dvb2cuc3RydWN0cyddLCBbJ2dvb2cuYXJyYXknLCAnZ29vZy5vYmplY3QnXSwge30pOwpnb29nLmFkZERlcGVuZGVuY3koJ3N0cnVjdHMvc3RydWN0c190ZXN0LmpzJywgWydnb29nLnN0cnVjdHNUZXN0J10sIFsnZ29vZy5hcnJheScsICdnb29nLmRvbScsICdnb29nLmRvbS5UYWdOYW1lJywgJ2dvb2cuc3RydWN0cycsICdnb29nLnN0cnVjdHMuTWFwJywgJ2dvb2cuc3RydWN0cy5TZXQnLCAnZ29vZy50ZXN0aW5nLnRlc3RTdWl0ZSddLCB7J2xhbmcnOiAnZXM2JywgJ21vZHVsZSc6ICdnb29nJ30pOwpnb29nLmFkZERlcGVuZGVuY3koJ3N0cnVjdHMvdHJlZW5vZGUuanMnLCBbJ2dvb2cuc3RydWN0cy5UcmVlTm9kZSddLCBbJ2dvb2cuYXJyYXknLCAnZ29vZy5hc3NlcnRzJywgJ2dvb2cuc3RydWN0cy5Ob2RlJ10sIHt9KTsKZ29vZy5hZGREZXBlbmRlbmN5KCdzdHJ1Y3RzL3RyZWVub2RlX3Rlc3QuanMnLCBbJ2dvb2cuc3RydWN0cy5UcmVlTm9kZVRlc3QnXSwgWydnb29nLnN0cnVjdHMuVHJlZU5vZGUnLCAnZ29vZy50ZXN0aW5nLnRlc3RTdWl0ZSddLCB7J2xhbmcnOiAnZXM2JywgJ21vZHVsZSc6ICdnb29nJ30pOwpnb29nLmFkZERlcGVuZGVuY3koJ3N0cnVjdHMvdHJpZS5qcycsIFsnZ29vZy5zdHJ1Y3RzLlRyaWUnXSwgWydnb29nLm9iamVjdCcsICdnb29nLnN0cnVjdHMnXSwge30pOwpnb29nLmFkZERlcGVuZGVuY3koJ3N0cnVjdHMvdHJpZV90ZXN0LmpzJywgWydnb29nLnN0cnVjdHMuVHJpZVRlc3QnXSwgWydnb29nLm9iamVjdCcsICdnb29nLnN0cnVjdHMnLCAnZ29vZy5zdHJ1Y3RzLlRyaWUnLCAnZ29vZy50ZXN0aW5nLnRlc3RTdWl0ZSddLCB7J2xhbmcnOiAnZXM2JywgJ21vZHVsZSc6ICdnb29nJ30pOwpnb29nLmFkZERlcGVuZGVuY3koJ3N0eWxlL2JpZGkuanMnLCBbJ2dvb2cuc3R5bGUuYmlkaSddLCBbJ2dvb2cuZG9tJywgJ2dvb2cuc3R5bGUnLCAnZ29vZy51c2VyQWdlbnQnLCAnZ29vZy51c2VyQWdlbnQucGxhdGZvcm0nLCAnZ29vZy51c2VyQWdlbnQucHJvZHVjdCcsICdnb29nLnVzZXJBZ2VudC5wcm9kdWN0LmlzVmVyc2lvbiddLCB7fSk7Cmdvb2cuYWRkRGVwZW5kZW5jeSgnc3R5bGUvYmlkaV90ZXN0LmpzJywgWydnb29nLnN0eWxlLmJpZGlUZXN0J10sIFsnZ29vZy5kb20nLCAnZ29vZy5zdHlsZScsICdnb29nLnN0eWxlLmJpZGknLCAnZ29vZy50ZXN0aW5nLnRlc3RTdWl0ZScsICdnb29nLnVzZXJBZ2VudCddLCB7J2xhbmcnOiAnZXM2JywgJ21vZHVsZSc6ICdnb29nJ30pOwpnb29nLmFkZERlcGVuZGVuY3koJ3N0eWxlL2N1cnNvci5qcycsIFsnZ29vZy5zdHlsZS5jdXJzb3InXSwgWydnb29nLnVzZXJBZ2VudCddLCB7fSk7Cmdvb2cuYWRkRGVwZW5kZW5jeSgnc3R5bGUvY3Vyc29yX3Rlc3QuanMnLCBbJ2dvb2cuc3R5bGUuY3Vyc29yVGVzdCddLCBbJ2dvb2cuc3R5bGUuY3Vyc29yJywgJ2dvb2cudGVzdGluZy50ZXN0U3VpdGUnLCAnZ29vZy51c2VyQWdlbnQnXSwgeydsYW5nJzogJ2VzNicsICdtb2R1bGUnOiAnZ29vZyd9KTsKZ29vZy5hZGREZXBlbmRlbmN5KCdzdHlsZS9zdHlsZS5qcycsIFsnZ29vZy5zdHlsZSddLCBbJ2dvb2cuYXJyYXknLCAnZ29vZy5hc3NlcnRzJywgJ2dvb2cuZG9tJywgJ2dvb2cuZG9tLk5vZGVUeXBlJywgJ2dvb2cuZG9tLlRhZ05hbWUnLCAnZ29vZy5kb20udmVuZG9yJywgJ2dvb2cuaHRtbC5TYWZlU3R5bGVTaGVldCcsICdnb29nLm1hdGguQm94JywgJ2dvb2cubWF0aC5Db29yZGluYXRlJywgJ2dvb2cubWF0aC5SZWN0JywgJ2dvb2cubWF0aC5TaXplJywgJ2dvb2cub2JqZWN0JywgJ2dvb2cucmVmbGVjdCcsICdnb29nLnN0cmluZycsICdnb29nLnVzZXJBZ2VudCddLCB7fSk7Cmdvb2cuYWRkRGVwZW5kZW5jeSgnc3R5bGUvc3R5bGVfZG9jdW1lbnRfc2Nyb2xsX3Rlc3QuanMnLCBbJ2dvb2cuc3R5bGUuc3R5bGVfZG9jdW1lbnRfc2Nyb2xsX3Rlc3QnXSwgWydnb29nLmRvbScsICdnb29nLnN0eWxlJywgJ2dvb2cudGVzdGluZy50ZXN0U3VpdGUnXSwgeydsYW5nJzogJ2VzNicsICdtb2R1bGUnOiAnZ29vZyd9KTsKZ29vZy5hZGREZXBlbmRlbmN5KCdzdHlsZS9zdHlsZV90ZXN0LmpzJywgWydnb29nLnN0eWxlX3Rlc3QnXSwgWydnb29nLmFycmF5JywgJ2dvb2cuY29sb3InLCAnZ29vZy5kb20nLCAnZ29vZy5kb20uVGFnTmFtZScsICdnb29nLmV2ZW50cy5Ccm93c2VyRXZlbnQnLCAnZ29vZy5odG1sLnRlc3RpbmcnLCAnZ29vZy5sYWJzLnVzZXJBZ2VudC51dGlsJywgJ2dvb2cubWF0aC5Cb3gnLCAnZ29vZy5tYXRoLkNvb3JkaW5hdGUnLCAnZ29vZy5tYXRoLlJlY3QnLCAnZ29vZy5tYXRoLlNpemUnLCAnZ29vZy5vYmplY3QnLCAnZ29vZy5zdHlsZScsICdnb29nLnRlc3RpbmcuRXhwZWN0ZWRGYWlsdXJlcycsICdnb29nLnRlc3RpbmcuTW9ja1VzZXJBZ2VudCcsICdnb29nLnRlc3RpbmcuYXNzZXJ0cycsICdnb29nLnRlc3RpbmcudGVzdFN1aXRlJywgJ2dvb2cudXNlckFnZW50JywgJ2dvb2cudXNlckFnZW50VGVzdFV0aWwnLCAnZ29vZy51c2VyQWdlbnRUZXN0VXRpbC5Vc2VyQWdlbnRzJ10sIHsnbGFuZyc6ICdlczYnLCAnbW9kdWxlJzogJ2dvb2cnfSk7Cmdvb2cuYWRkRGVwZW5kZW5jeSgnc3R5bGUvc3R5bGVfd2Via2l0X3Njcm9sbGJhcnNfdGVzdC5qcycsIFsnZ29vZy5zdHlsZS53ZWJraXRTY3JvbGxiYXJzVGVzdCddLCBbJ2dvb2cuYXNzZXJ0cycsICdnb29nLnN0eWxlJywgJ2dvb2cuc3R5bGVTY3JvbGxiYXJUZXN0ZXInLCAnZ29vZy50ZXN0aW5nLkV4cGVjdGVkRmFpbHVyZXMnLCAnZ29vZy50ZXN0aW5nLnRlc3RTdWl0ZScsICdnb29nLnVzZXJBZ2VudCddLCB7J2xhbmcnOiAnZXM2JywgJ21vZHVsZSc6ICdnb29nJ30pOwpnb29nLmFkZERlcGVuZGVuY3koJ3N0eWxlL3N0eWxlc2Nyb2xsYmFydGVzdGVyLmpzJywgWydnb29nLnN0eWxlU2Nyb2xsYmFyVGVzdGVyJ10sIFsnZ29vZy5kb20nLCAnZ29vZy5kb20uVGFnTmFtZScsICdnb29nLnN0eWxlJywgJ2dvb2cudGVzdGluZy5hc3NlcnRzJ10sIHt9KTsKZ29vZy5hZGREZXBlbmRlbmN5KCdzdHlsZS90cmFuc2Zvcm0uanMnLCBbJ2dvb2cuc3R5bGUudHJhbnNmb3JtJ10sIFsnZ29vZy5mdW5jdGlvbnMnLCAnZ29vZy5tYXRoLkNvb3JkaW5hdGUnLCAnZ29vZy5tYXRoLkNvb3JkaW5hdGUzJywgJ2dvb2cuc3R5bGUnLCAnZ29vZy51c2VyQWdlbnQnLCAnZ29vZy51c2VyQWdlbnQucHJvZHVjdC5pc1ZlcnNpb24nXSwge30pOwpnb29nLmFkZERlcGVuZGVuY3koJ3N0eWxlL3RyYW5zZm9ybV90ZXN0LmpzJywgWydnb29nLnN0eWxlLnRyYW5zZm9ybVRlc3QnXSwgWydnb29nLmRvbScsICdnb29nLmRvbS5UYWdOYW1lJywgJ2dvb2cuc3R5bGUnLCAnZ29vZy5zdHlsZS50cmFuc2Zvcm0nLCAnZ29vZy50ZXN0aW5nLnRlc3RTdWl0ZScsICdnb29nLnVzZXJBZ2VudCcsICdnb29nLnVzZXJBZ2VudC5wcm9kdWN0LmlzVmVyc2lvbiddLCB7J2xhbmcnOiAnZXM2JywgJ21vZHVsZSc6ICdnb29nJ30pOwpnb29nLmFkZERlcGVuZGVuY3koJ3N0eWxlL3RyYW5zaXRpb24uanMnLCBbJ2dvb2cuc3R5bGUudHJhbnNpdGlvbicsICdnb29nLnN0eWxlLnRyYW5zaXRpb24uQ3NzM1Byb3BlcnR5J10sIFsnZ29vZy5hcnJheScsICdnb29nLmFzc2VydHMnLCAnZ29vZy5kb20nLCAnZ29vZy5kb20uVGFnTmFtZScsICdnb29nLmRvbS5zYWZlJywgJ2dvb2cuZG9tLnZlbmRvcicsICdnb29nLmZ1bmN0aW9ucycsICdnb29nLmh0bWwuU2FmZUh0bWwnLCAnZ29vZy5zdHlsZScsICdnb29nLnVzZXJBZ2VudCddLCB7fSk7Cmdvb2cuYWRkRGVwZW5kZW5jeSgnc3R5bGUvdHJhbnNpdGlvbl90ZXN0LmpzJywgWydnb29nLnN0eWxlLnRyYW5zaXRpb25UZXN0J10sIFsnZ29vZy5zdHlsZScsICdnb29nLnN0eWxlLnRyYW5zaXRpb24nLCAnZ29vZy50ZXN0aW5nLnRlc3RTdWl0ZScsICdnb29nLnVzZXJBZ2VudCddLCB7J2xhbmcnOiAnZXM2JywgJ21vZHVsZSc6ICdnb29nJ30pOwpnb29nLmFkZERlcGVuZGVuY3koJ3Rlc3RfbW9kdWxlLmpzJywgWydnb29nLnRlc3RfbW9kdWxlJ10sIFsnZ29vZy50ZXN0X21vZHVsZV9kZXAnXSwgeydtb2R1bGUnOiAnZ29vZyd9KTsKZ29vZy5hZGREZXBlbmRlbmN5KCd0ZXN0X21vZHVsZV9kZXAuanMnLCBbJ2dvb2cudGVzdF9tb2R1bGVfZGVwJ10sIFtdLCB7J21vZHVsZSc6ICdnb29nJ30pOwpnb29nLmFkZERlcGVuZGVuY3koJ3Rlc3RpbmcvYXNzZXJ0aW9uZmFpbHVyZS5qcycsIFsnZ29vZy50ZXN0aW5nLnNhZmUuYXNzZXJ0aW9uRmFpbHVyZSddLCBbJ2dvb2cuYXNzZXJ0cycsICdnb29nLnRlc3RpbmcuYXNzZXJ0cyddLCB7J2xhbmcnOiAnZXM2JywgJ21vZHVsZSc6ICdnb29nJ30pOwpnb29nLmFkZERlcGVuZGVuY3koJ3Rlc3RpbmcvYXNzZXJ0cy5qcycsIFsnZ29vZy50ZXN0aW5nLmFzc2VydHMnXSwgWydnb29nLnRlc3RpbmcuSnNVbml0RXhjZXB0aW9uJ10sIHt9KTsKZ29vZy5hZGREZXBlbmRlbmN5KCd0ZXN0aW5nL2Fzc2VydHNfdGVzdC5qcycsIFsnZ29vZy50ZXN0aW5nLmFzc2VydHNUZXN0J10sIFsnZ29vZy5Qcm9taXNlJywgJ2dvb2cuYXJyYXknLCAnZ29vZy5hc3luYy5EZWZlcnJlZCcsICdnb29nLmRvbScsICdnb29nLml0ZXIuSXRlcmF0b3InLCAnZ29vZy5pdGVyLlN0b3BJdGVyYXRpb24nLCAnZ29vZy5zdHJ1Y3RzLk1hcCcsICdnb29nLnN0cnVjdHMuU2V0JywgJ2dvb2cudGVzdGluZy5UZXN0Q2FzZScsICdnb29nLnRlc3RpbmcuYXNzZXJ0cycsICdnb29nLnRlc3RpbmcudGVzdFN1aXRlJywgJ2dvb2cudXNlckFnZW50JywgJ2dvb2cudXNlckFnZW50LnByb2R1Y3QnXSwgeydsYW5nJzogJ2VzOCcsICdtb2R1bGUnOiAnZ29vZyd9KTsKZ29vZy5hZGREZXBlbmRlbmN5KCd0ZXN0aW5nL2FzeW5jL21vY2tjb250cm9sLmpzJywgWydnb29nLnRlc3RpbmcuYXN5bmMuTW9ja0NvbnRyb2wnXSwgWydnb29nLmFzc2VydHMnLCAnZ29vZy5hc3luYy5EZWZlcnJlZCcsICdnb29nLmRlYnVnJywgJ2dvb2cudGVzdGluZy5Nb2NrQ29udHJvbCcsICdnb29nLnRlc3RpbmcuYXNzZXJ0cycsICdnb29nLnRlc3RpbmcubW9ja21hdGNoZXJzLklnbm9yZUFyZ3VtZW50J10sIHt9KTsKZ29vZy5hZGREZXBlbmRlbmN5KCd0ZXN0aW5nL2FzeW5jL21vY2tjb250cm9sX3Rlc3QuanMnLCBbJ2dvb2cudGVzdGluZy5hc3luYy5Nb2NrQ29udHJvbFRlc3QnXSwgWydnb29nLmFzeW5jLkRlZmVycmVkJywgJ2dvb2cudGVzdGluZy5Nb2NrQ29udHJvbCcsICdnb29nLnRlc3RpbmcuYXNzZXJ0cycsICdnb29nLnRlc3RpbmcuYXN5bmMuTW9ja0NvbnRyb2wnLCAnZ29vZy50ZXN0aW5nLnRlc3RTdWl0ZSddLCB7J2xhbmcnOiAnZXM2JywgJ21vZHVsZSc6ICdnb29nJ30pOwpnb29nLmFkZERlcGVuZGVuY3koJ3Rlc3RpbmcvYXN5bmN0ZXN0Y2FzZS5qcycsIFsnZ29vZy50ZXN0aW5nLkFzeW5jVGVzdENhc2UnLCAnZ29vZy50ZXN0aW5nLkFzeW5jVGVzdENhc2UuQ29udHJvbEJyZWFraW5nRXhjZXB0aW9uJ10sIFsnZ29vZy5hc3NlcnRzJywgJ2dvb2cudGVzdGluZy5UZXN0Q2FzZScsICdnb29nLnRlc3RpbmcuYXNzZXJ0cyddLCB7fSk7Cmdvb2cuYWRkRGVwZW5kZW5jeSgndGVzdGluZy9hc3luY3Rlc3RjYXNlX2FzeW5jX3Rlc3QuanMnLCBbJ2dvb2cudGVzdGluZy5Bc3luY1Rlc3RDYXNlQXN5bmNUZXN0J10sIFsnZ29vZy50ZXN0aW5nLkFzeW5jVGVzdENhc2UnLCAnZ29vZy50ZXN0aW5nLlRlc3RDYXNlJywgJ2dvb2cudGVzdGluZy5qc3VuaXQnXSwgeydsYW5nJzogJ2VzNicsICdtb2R1bGUnOiAnZ29vZyd9KTsKZ29vZy5hZGREZXBlbmRlbmN5KCd0ZXN0aW5nL2FzeW5jdGVzdGNhc2Vfbm9hc3luY190ZXN0LmpzJywgWydnb29nLnRlc3RpbmcuQXN5bmNUZXN0Q2FzZVN5bmNUZXN0J10sIFsnZ29vZy50ZXN0aW5nLkFzeW5jVGVzdENhc2UnLCAnZ29vZy50ZXN0aW5nLnRlc3RTdWl0ZSddLCB7J2xhbmcnOiAnZXM2JywgJ21vZHVsZSc6ICdnb29nJ30pOwpnb29nLmFkZERlcGVuZGVuY3koJ3Rlc3RpbmcvYXN5bmN0ZXN0Y2FzZV90ZXN0LmpzJywgWydnb29nLnRlc3RpbmcuQXN5bmNUZXN0Q2FzZVRlc3QnXSwgWydnb29nLmRlYnVnLkVycm9yJywgJ2dvb2cudGVzdGluZy5Bc3luY1Rlc3RDYXNlJywgJ2dvb2cudGVzdGluZy5hc3NlcnRzJywgJ2dvb2cudGVzdGluZy50ZXN0U3VpdGUnXSwgeydsYW5nJzogJ2VzNicsICdtb2R1bGUnOiAnZ29vZyd9KTsKZ29vZy5hZGREZXBlbmRlbmN5KCd0ZXN0aW5nL2JlbmNobWFyay5qcycsIFsnZ29vZy50ZXN0aW5nLmJlbmNobWFyayddLCBbJ2dvb2cuZG9tJywgJ2dvb2cuZG9tLlRhZ05hbWUnLCAnZ29vZy50ZXN0aW5nLlBlcmZvcm1hbmNlVGFibGUnLCAnZ29vZy50ZXN0aW5nLlBlcmZvcm1hbmNlVGltZXInLCAnZ29vZy50ZXN0aW5nLlRlc3RDYXNlJ10sIHt9KTsKZ29vZy5hZGREZXBlbmRlbmN5KCd0ZXN0aW5nL2NvbnRpbnVhdGlvbnRlc3RjYXNlLmpzJywgWydnb29nLnRlc3RpbmcuQ29udGludWF0aW9uVGVzdENhc2UnLCAnZ29vZy50ZXN0aW5nLkNvbnRpbnVhdGlvblRlc3RDYXNlLkNvbnRpbnVhdGlvblRlc3QnLCAnZ29vZy50ZXN0aW5nLkNvbnRpbnVhdGlvblRlc3RDYXNlLlN0ZXAnXSwgWydnb29nLmFycmF5JywgJ2dvb2cuZXZlbnRzLkV2ZW50SGFuZGxlcicsICdnb29nLmV2ZW50cy5FdmVudFRhcmdldCcsICdnb29nLnRlc3RpbmcuVGVzdENhc2UnLCAnZ29vZy50ZXN0aW5nLmFzc2VydHMnXSwge30pOwpnb29nLmFkZERlcGVuZGVuY3koJ3Rlc3RpbmcvY29udGludWF0aW9udGVzdGNhc2VfdGVzdC5qcycsIFsnZ29vZy50ZXN0aW5nLkNvbnRpbnVhdGlvblRlc3RDYXNlVGVzdCddLCBbJ2dvb2cuZXZlbnRzJywgJ2dvb2cuZXZlbnRzLkV2ZW50VGFyZ2V0JywgJ2dvb2cudGVzdGluZy5Db250aW51YXRpb25UZXN0Q2FzZScsICdnb29nLnRlc3RpbmcuTW9ja0Nsb2NrJywgJ2dvb2cudGVzdGluZy5Qcm9wZXJ0eVJlcGxhY2VyJywgJ2dvb2cudGVzdGluZy5UZXN0Q2FzZScsICdnb29nLnRlc3RpbmcuanN1bml0J10sIHsnbGFuZyc6ICdlczYnLCAnbW9kdWxlJzogJ2dvb2cnfSk7Cmdvb2cuYWRkRGVwZW5kZW5jeSgndGVzdGluZy9kZWZlcnJlZHRlc3RjYXNlLmpzJywgWydnb29nLnRlc3RpbmcuRGVmZXJyZWRUZXN0Q2FzZSddLCBbJ2dvb2cuYXN5bmMuRGVmZXJyZWQnLCAnZ29vZy50ZXN0aW5nLkFzeW5jVGVzdENhc2UnLCAnZ29vZy50ZXN0aW5nLlRlc3RDYXNlJ10sIHt9KTsKZ29vZy5hZGREZXBlbmRlbmN5KCd0ZXN0aW5nL2RlZmVycmVkdGVzdGNhc2VfdGVzdC5qcycsIFsnZ29vZy50ZXN0aW5nLkRlZmVycmVkVGVzdENhc2VUZXN0J10sIFsnZ29vZy5hc3luYy5EZWZlcnJlZCcsICdnb29nLnRlc3RpbmcuRGVmZXJyZWRUZXN0Q2FzZScsICdnb29nLnRlc3RpbmcuVGVzdENhc2UnLCAnZ29vZy50ZXN0aW5nLlRlc3RSdW5uZXInLCAnZ29vZy50ZXN0aW5nLnJlY29yZEZ1bmN0aW9uJywgJ2dvb2cudGVzdGluZy50ZXN0U3VpdGUnXSwgeydsYW5nJzogJ2VzNicsICdtb2R1bGUnOiAnZ29vZyd9KTsKZ29vZy5hZGREZXBlbmRlbmN5KCd0ZXN0aW5nL2RvbS5qcycsIFsnZ29vZy50ZXN0aW5nLmRvbSddLCBbJ2dvb2cuYXJyYXknLCAnZ29vZy5hc3NlcnRzJywgJ2dvb2cuZG9tJywgJ2dvb2cuZG9tLkFic3RyYWN0UmFuZ2UnLCAnZ29vZy5kb20uSW5wdXRUeXBlJywgJ2dvb2cuZG9tLk5vZGVJdGVyYXRvcicsICdnb29nLmRvbS5Ob2RlVHlwZScsICdnb29nLmRvbS5UYWdJdGVyYXRvcicsICdnb29nLmRvbS5UYWdOYW1lJywgJ2dvb2cuZG9tLmNsYXNzbGlzdCcsICdnb29nLml0ZXInLCAnZ29vZy5vYmplY3QnLCAnZ29vZy5zdHJpbmcnLCAnZ29vZy5zdHlsZScsICdnb29nLnRlc3RpbmcuYXNzZXJ0cycsICdnb29nLnVzZXJBZ2VudCddLCB7fSk7Cmdvb2cuYWRkRGVwZW5kZW5jeSgndGVzdGluZy9kb21fdGVzdC5qcycsIFsnZ29vZy50ZXN0aW5nLmRvbVRlc3QnXSwgWydnb29nLmRvbScsICdnb29nLmRvbS5UYWdOYW1lJywgJ2dvb2cudGVzdGluZy5kb20nLCAnZ29vZy50ZXN0aW5nLnRlc3RTdWl0ZScsICdnb29nLnVzZXJBZ2VudCddLCB7J2xhbmcnOiAnZXM2JywgJ21vZHVsZSc6ICdnb29nJ30pOwpnb29nLmFkZERlcGVuZGVuY3koJ3Rlc3RpbmcvZWRpdG9yL2RvbS5qcycsIFsnZ29vZy50ZXN0aW5nLmVkaXRvci5kb20nXSwgWydnb29nLmRvbS5BYnN0cmFjdFJhbmdlJywgJ2dvb2cuZG9tLk5vZGVUeXBlJywgJ2dvb2cuZG9tLlRhZ0l0ZXJhdG9yJywgJ2dvb2cuZG9tLlRhZ1dhbGtUeXBlJywgJ2dvb2cuaXRlcicsICdnb29nLnN0cmluZycsICdnb29nLnRlc3RpbmcuYXNzZXJ0cyddLCB7fSk7Cmdvb2cuYWRkRGVwZW5kZW5jeSgndGVzdGluZy9lZGl0b3IvZG9tX3Rlc3QuanMnLCBbJ2dvb2cudGVzdGluZy5lZGl0b3IuZG9tVGVzdCddLCBbJ2dvb2cuZG9tJywgJ2dvb2cuZG9tLlRhZ05hbWUnLCAnZ29vZy5mdW5jdGlvbnMnLCAnZ29vZy50ZXN0aW5nLmVkaXRvci5kb20nLCAnZ29vZy50ZXN0aW5nLnRlc3RTdWl0ZSddLCB7J2xhbmcnOiAnZXM2JywgJ21vZHVsZSc6ICdnb29nJ30pOwpnb29nLmFkZERlcGVuZGVuY3koJ3Rlc3RpbmcvZWRpdG9yL2ZpZWxkbW9jay5qcycsIFsnZ29vZy50ZXN0aW5nLmVkaXRvci5GaWVsZE1vY2snXSwgWydnb29nLmRvbScsICdnb29nLmRvbS5SYW5nZScsICdnb29nLmVkaXRvci5GaWVsZCcsICdnb29nLnRlc3RpbmcuTG9vc2VNb2NrJywgJ2dvb2cudGVzdGluZy5tb2NrbWF0Y2hlcnMnXSwge30pOwpnb29nLmFkZERlcGVuZGVuY3koJ3Rlc3RpbmcvZWRpdG9yL3Rlc3RoZWxwZXIuanMnLCBbJ2dvb2cudGVzdGluZy5lZGl0b3IuVGVzdEhlbHBlciddLCBbJ2dvb2cuRGlzcG9zYWJsZScsICdnb29nLmRvbScsICdnb29nLmRvbS5SYW5nZScsICdnb29nLmVkaXRvci5Ccm93c2VyRmVhdHVyZScsICdnb29nLmVkaXRvci5ub2RlJywgJ2dvb2cuZWRpdG9yLnBsdWdpbnMuQWJzdHJhY3RCdWJibGVQbHVnaW4nLCAnZ29vZy50ZXN0aW5nLmRvbSddLCB7fSk7Cmdvb2cuYWRkRGVwZW5kZW5jeSgndGVzdGluZy9lZGl0b3IvdGVzdGhlbHBlcl90ZXN0LmpzJywgWydnb29nLnRlc3RpbmcuZWRpdG9yLlRlc3RIZWxwZXJUZXN0J10sIFsnZ29vZy5kb20nLCAnZ29vZy5kb20uVGFnTmFtZScsICdnb29nLmVkaXRvci5ub2RlJywgJ2dvb2cudGVzdGluZy5lZGl0b3IuVGVzdEhlbHBlcicsICdnb29nLnRlc3RpbmcudGVzdFN1aXRlJywgJ2dvb2cudXNlckFnZW50J10sIHsnbGFuZyc6ICdlczYnLCAnbW9kdWxlJzogJ2dvb2cnfSk7Cmdvb2cuYWRkRGVwZW5kZW5jeSgndGVzdGluZy9ldmVudHMvZXZlbnRvYnNlcnZlci5qcycsIFsnZ29vZy50ZXN0aW5nLmV2ZW50cy5FdmVudE9ic2VydmVyJ10sIFsnZ29vZy5hcnJheScsICdnb29nLmV2ZW50cy5FdmVudCddLCB7fSk7Cmdvb2cuYWRkRGVwZW5kZW5jeSgndGVzdGluZy9ldmVudHMvZXZlbnRvYnNlcnZlcl90ZXN0LmpzJywgWydnb29nLnRlc3RpbmcuZXZlbnRzLkV2ZW50T2JzZXJ2ZXJUZXN0J10sIFsnZ29vZy5hcnJheScsICdnb29nLmV2ZW50cycsICdnb29nLmV2ZW50cy5FdmVudCcsICdnb29nLmV2ZW50cy5FdmVudFRhcmdldCcsICdnb29nLnRlc3RpbmcuZXZlbnRzLkV2ZW50T2JzZXJ2ZXInLCAnZ29vZy50ZXN0aW5nLnRlc3RTdWl0ZSddLCB7J2xhbmcnOiAnZXM2JywgJ21vZHVsZSc6ICdnb29nJ30pOwpnb29nLmFkZERlcGVuZGVuY3koJ3Rlc3RpbmcvZXZlbnRzL2V2ZW50cy5qcycsIFsnZ29vZy50ZXN0aW5nLmV2ZW50cycsICdnb29nLnRlc3RpbmcuZXZlbnRzLkV2ZW50J10sIFsnZ29vZy5EaXNwb3NhYmxlJywgJ2dvb2cuYXNzZXJ0cycsICdnb29nLmRvbS5Ob2RlVHlwZScsICdnb29nLmV2ZW50cycsICdnb29nLmV2ZW50cy5Ccm93c2VyRXZlbnQnLCAnZ29vZy5ldmVudHMuQnJvd3NlckZlYXR1cmUnLCAnZ29vZy5ldmVudHMuRXZlbnRUYXJnZXQnLCAnZ29vZy5ldmVudHMuRXZlbnRUeXBlJywgJ2dvb2cuZXZlbnRzLktleUNvZGVzJywgJ2dvb2cub2JqZWN0JywgJ2dvb2cuc3R5bGUnLCAnZ29vZy51c2VyQWdlbnQnXSwge30pOwpnb29nLmFkZERlcGVuZGVuY3koJ3Rlc3RpbmcvZXZlbnRzL2V2ZW50c190ZXN0LmpzJywgWydnb29nLnRlc3RpbmcuZXZlbnRzVGVzdCddLCBbJ2dvb2cuYXJyYXknLCAnZ29vZy5kb20nLCAnZ29vZy5kb20uSW5wdXRUeXBlJywgJ2dvb2cuZG9tLlRhZ05hbWUnLCAnZ29vZy5ldmVudHMnLCAnZ29vZy5ldmVudHMuRXZlbnRUeXBlJywgJ2dvb2cuZXZlbnRzLktleUNvZGVzJywgJ2dvb2cubWF0aC5Db29yZGluYXRlJywgJ2dvb2cuc3RyaW5nJywgJ2dvb2cuc3R5bGUnLCAnZ29vZy50ZXN0aW5nLlByb3BlcnR5UmVwbGFjZXInLCAnZ29vZy50ZXN0aW5nLmV2ZW50cycsICdnb29nLnRlc3RpbmcucmVjb3JkRnVuY3Rpb24nLCAnZ29vZy50ZXN0aW5nLnRlc3RTdWl0ZScsICdnb29nLnVzZXJBZ2VudCddLCB7J2xhbmcnOiAnZXM2JywgJ21vZHVsZSc6ICdnb29nJ30pOwpnb29nLmFkZERlcGVuZGVuY3koJ3Rlc3RpbmcvZXZlbnRzL21hdGNoZXJzLmpzJywgWydnb29nLnRlc3RpbmcuZXZlbnRzLkV2ZW50TWF0Y2hlciddLCBbJ2dvb2cuZXZlbnRzLkV2ZW50JywgJ2dvb2cudGVzdGluZy5tb2NrbWF0Y2hlcnMuQXJndW1lbnRNYXRjaGVyJ10sIHt9KTsKZ29vZy5hZGREZXBlbmRlbmN5KCd0ZXN0aW5nL2V2ZW50cy9tYXRjaGVyc190ZXN0LmpzJywgWydnb29nLnRlc3RpbmcuZXZlbnRzLkV2ZW50TWF0Y2hlclRlc3QnXSwgWydnb29nLmV2ZW50cy5FdmVudCcsICdnb29nLnRlc3RpbmcuZXZlbnRzLkV2ZW50TWF0Y2hlcicsICdnb29nLnRlc3RpbmcudGVzdFN1aXRlJ10sIHsnbGFuZyc6ICdlczYnLCAnbW9kdWxlJzogJ2dvb2cnfSk7Cmdvb2cuYWRkRGVwZW5kZW5jeSgndGVzdGluZy9ldmVudHMvb25saW5laGFuZGxlci5qcycsIFsnZ29vZy50ZXN0aW5nLmV2ZW50cy5PbmxpbmVIYW5kbGVyJ10sIFsnZ29vZy5ldmVudHMuRXZlbnRUYXJnZXQnLCAnZ29vZy5uZXQuTmV0d29ya1N0YXR1c01vbml0b3InXSwge30pOwpnb29nLmFkZERlcGVuZGVuY3koJ3Rlc3RpbmcvZXZlbnRzL29ubGluZWhhbmRsZXJfdGVzdC5qcycsIFsnZ29vZy50ZXN0aW5nLmV2ZW50cy5PbmxpbmVIYW5kbGVyVGVzdCddLCBbJ2dvb2cuZXZlbnRzJywgJ2dvb2cubmV0Lk5ldHdvcmtTdGF0dXNNb25pdG9yJywgJ2dvb2cudGVzdGluZy5ldmVudHMuRXZlbnRPYnNlcnZlcicsICdnb29nLnRlc3RpbmcuZXZlbnRzLk9ubGluZUhhbmRsZXInLCAnZ29vZy50ZXN0aW5nLnRlc3RTdWl0ZSddLCB7J2xhbmcnOiAnZXM2JywgJ21vZHVsZSc6ICdnb29nJ30pOwpnb29nLmFkZERlcGVuZGVuY3koJ3Rlc3RpbmcvZXhwZWN0ZWRmYWlsdXJlcy5qcycsIFsnZ29vZy50ZXN0aW5nLkV4cGVjdGVkRmFpbHVyZXMnXSwgWydnb29nLmFzc2VydHMnLCAnZ29vZy5kZWJ1Zy5EaXZDb25zb2xlJywgJ2dvb2cuZG9tJywgJ2dvb2cuZG9tLlRhZ05hbWUnLCAnZ29vZy5ldmVudHMnLCAnZ29vZy5ldmVudHMuRXZlbnRUeXBlJywgJ2dvb2cubG9nJywgJ2dvb2cuc3R5bGUnLCAnZ29vZy50ZXN0aW5nLkpzVW5pdEV4Y2VwdGlvbicsICdnb29nLnRlc3RpbmcuVGVzdENhc2UnLCAnZ29vZy50ZXN0aW5nLmFzc2VydHMnXSwge30pOwpnb29nLmFkZERlcGVuZGVuY3koJ3Rlc3RpbmcvZXhwZWN0ZWRmYWlsdXJlc190ZXN0LmpzJywgWydnb29nLnRlc3RpbmcuRXhwZWN0ZWRGYWlsdXJlc1Rlc3QnXSwgWydnb29nLmRlYnVnLkxvZ2dlcicsICdnb29nLnRlc3RpbmcuRXhwZWN0ZWRGYWlsdXJlcycsICdnb29nLnRlc3RpbmcuSnNVbml0RXhjZXB0aW9uJywgJ2dvb2cudGVzdGluZy50ZXN0U3VpdGUnXSwgeydsYW5nJzogJ2VzNicsICdtb2R1bGUnOiAnZ29vZyd9KTsKZ29vZy5hZGREZXBlbmRlbmN5KCd0ZXN0aW5nL2ZzL2Jsb2IuanMnLCBbJ2dvb2cudGVzdGluZy5mcy5CbG9iJ10sIFsnZ29vZy5jcnlwdCcsICdnb29nLmNyeXB0LmJhc2U2NCddLCB7fSk7Cmdvb2cuYWRkRGVwZW5kZW5jeSgndGVzdGluZy9mcy9ibG9iX3Rlc3QuanMnLCBbJ2dvb2cudGVzdGluZy5mcy5CbG9iVGVzdCddLCBbJ2dvb2cuZG9tJywgJ2dvb2cudGVzdGluZy5mcy5CbG9iJywgJ2dvb2cudGVzdGluZy50ZXN0U3VpdGUnXSwgeydsYW5nJzogJ2VzNicsICdtb2R1bGUnOiAnZ29vZyd9KTsKZ29vZy5hZGREZXBlbmRlbmN5KCd0ZXN0aW5nL2ZzL2RpcmVjdG9yeWVudHJ5X3Rlc3QuanMnLCBbJ2dvb2cudGVzdGluZy5mcy5EaXJlY3RvcnlFbnRyeVRlc3QnXSwgWydnb29nLmFycmF5JywgJ2dvb2cuZnMuRGlyZWN0b3J5RW50cnknLCAnZ29vZy5mcy5FcnJvcicsICdnb29nLnRlc3RpbmcuTW9ja0Nsb2NrJywgJ2dvb2cudGVzdGluZy5UZXN0Q2FzZScsICdnb29nLnRlc3RpbmcuZnMuRmlsZVN5c3RlbScsICdnb29nLnRlc3RpbmcudGVzdFN1aXRlJ10sIHsnbGFuZyc6ICdlczYnLCAnbW9kdWxlJzogJ2dvb2cnfSk7Cmdvb2cuYWRkRGVwZW5kZW5jeSgndGVzdGluZy9mcy9lbnRyeS5qcycsIFsnZ29vZy50ZXN0aW5nLmZzLkRpcmVjdG9yeUVudHJ5JywgJ2dvb2cudGVzdGluZy5mcy5FbnRyeScsICdnb29nLnRlc3RpbmcuZnMuRmlsZUVudHJ5J10sIFsnZ29vZy5UaW1lcicsICdnb29nLmFycmF5JywgJ2dvb2cuYXNzZXJ0cycsICdnb29nLmFzeW5jLkRlZmVycmVkJywgJ2dvb2cuZnMuRGlyZWN0b3J5RW50cnknLCAnZ29vZy5mcy5EaXJlY3RvcnlFbnRyeUltcGwnLCAnZ29vZy5mcy5FbnRyeScsICdnb29nLmZzLkVycm9yJywgJ2dvb2cuZnMuRmlsZUVudHJ5JywgJ2dvb2cuZnVuY3Rpb25zJywgJ2dvb2cub2JqZWN0JywgJ2dvb2cuc3RyaW5nJywgJ2dvb2cudGVzdGluZy5mcy5GaWxlJywgJ2dvb2cudGVzdGluZy5mcy5GaWxlV3JpdGVyJ10sIHt9KTsKZ29vZy5hZGREZXBlbmRlbmN5KCd0ZXN0aW5nL2ZzL2VudHJ5X3Rlc3QuanMnLCBbJ2dvb2cudGVzdGluZy5mcy5FbnRyeVRlc3QnXSwgWydnb29nLmZzLkRpcmVjdG9yeUVudHJ5JywgJ2dvb2cuZnMuRXJyb3InLCAnZ29vZy50ZXN0aW5nLk1vY2tDbG9jaycsICdnb29nLnRlc3RpbmcuVGVzdENhc2UnLCAnZ29vZy50ZXN0aW5nLmZzLkZpbGVTeXN0ZW0nLCAnZ29vZy50ZXN0aW5nLnRlc3RTdWl0ZSddLCB7J2xhbmcnOiAnZXM2JywgJ21vZHVsZSc6ICdnb29nJ30pOwpnb29nLmFkZERlcGVuZGVuY3koJ3Rlc3RpbmcvZnMvZmlsZS5qcycsIFsnZ29vZy50ZXN0aW5nLmZzLkZpbGUnXSwgWydnb29nLnRlc3RpbmcuZnMuQmxvYiddLCB7fSk7Cmdvb2cuYWRkRGVwZW5kZW5jeSgndGVzdGluZy9mcy9maWxlZW50cnlfdGVzdC5qcycsIFsnZ29vZy50ZXN0aW5nLmZzLkZpbGVFbnRyeVRlc3QnXSwgWydnb29nLnRlc3RpbmcuTW9ja0Nsb2NrJywgJ2dvb2cudGVzdGluZy5mcy5GaWxlRW50cnknLCAnZ29vZy50ZXN0aW5nLmZzLkZpbGVTeXN0ZW0nLCAnZ29vZy50ZXN0aW5nLnRlc3RTdWl0ZSddLCB7J2xhbmcnOiAnZXM2JywgJ21vZHVsZSc6ICdnb29nJ30pOwpnb29nLmFkZERlcGVuZGVuY3koJ3Rlc3RpbmcvZnMvZmlsZXJlYWRlci5qcycsIFsnZ29vZy50ZXN0aW5nLmZzLkZpbGVSZWFkZXInXSwgWydnb29nLlRpbWVyJywgJ2dvb2cuZXZlbnRzLkV2ZW50VGFyZ2V0JywgJ2dvb2cuZnMuRXJyb3InLCAnZ29vZy5mcy5GaWxlUmVhZGVyJywgJ2dvb2cudGVzdGluZy5mcy5CbG9iJywgJ2dvb2cudGVzdGluZy5mcy5Qcm9ncmVzc0V2ZW50J10sIHt9KTsKZ29vZy5hZGREZXBlbmRlbmN5KCd0ZXN0aW5nL2ZzL2ZpbGVyZWFkZXJfdGVzdC5qcycsIFsnZ29vZy50ZXN0aW5nLmZzLkZpbGVSZWFkZXJUZXN0J10sIFsnZ29vZy5Qcm9taXNlJywgJ2dvb2cuYXJyYXknLCAnZ29vZy5ldmVudHMnLCAnZ29vZy5mcy5FcnJvcicsICdnb29nLmZzLkZpbGVSZWFkZXInLCAnZ29vZy5vYmplY3QnLCAnZ29vZy50ZXN0aW5nLmV2ZW50cy5FdmVudE9ic2VydmVyJywgJ2dvb2cudGVzdGluZy5mcy5GaWxlUmVhZGVyJywgJ2dvb2cudGVzdGluZy5mcy5GaWxlU3lzdGVtJywgJ2dvb2cudGVzdGluZy50ZXN0U3VpdGUnXSwgeydsYW5nJzogJ2VzNicsICdtb2R1bGUnOiAnZ29vZyd9KTsKZ29vZy5hZGREZXBlbmRlbmN5KCd0ZXN0aW5nL2ZzL2ZpbGVzeXN0ZW0uanMnLCBbJ2dvb2cudGVzdGluZy5mcy5GaWxlU3lzdGVtJ10sIFsnZ29vZy5mcy5GaWxlU3lzdGVtJywgJ2dvb2cudGVzdGluZy5mcy5EaXJlY3RvcnlFbnRyeSddLCB7fSk7Cmdvb2cuYWRkRGVwZW5kZW5jeSgndGVzdGluZy9mcy9maWxld3JpdGVyLmpzJywgWydnb29nLnRlc3RpbmcuZnMuRmlsZVdyaXRlciddLCBbJ2dvb2cuVGltZXInLCAnZ29vZy5ldmVudHMuRXZlbnRUYXJnZXQnLCAnZ29vZy5mcy5FcnJvcicsICdnb29nLmZzLkZpbGVTYXZlcicsICdnb29nLnN0cmluZycsICdnb29nLnRlc3RpbmcuZnMuQmxvYicsICdnb29nLnRlc3RpbmcuZnMuRmlsZScsICdnb29nLnRlc3RpbmcuZnMuUHJvZ3Jlc3NFdmVudCddLCB7fSk7Cmdvb2cuYWRkRGVwZW5kZW5jeSgndGVzdGluZy9mcy9maWxld3JpdGVyX3Rlc3QuanMnLCBbJ2dvb2cudGVzdGluZy5mcy5GaWxlV3JpdGVyVGVzdCddLCBbJ2dvb2cuUHJvbWlzZScsICdnb29nLmFycmF5JywgJ2dvb2cuZXZlbnRzJywgJ2dvb2cuZnMuRXJyb3InLCAnZ29vZy5mcy5GaWxlU2F2ZXInLCAnZ29vZy5vYmplY3QnLCAnZ29vZy50ZXN0aW5nLk1vY2tDbG9jaycsICdnb29nLnRlc3RpbmcuZXZlbnRzLkV2ZW50T2JzZXJ2ZXInLCAnZ29vZy50ZXN0aW5nLmZzLkJsb2InLCAnZ29vZy50ZXN0aW5nLmZzLkZpbGVTeXN0ZW0nLCAnZ29vZy50ZXN0aW5nLnRlc3RTdWl0ZSddLCB7J2xhbmcnOiAnZXM2JywgJ21vZHVsZSc6ICdnb29nJ30pOwpnb29nLmFkZERlcGVuZGVuY3koJ3Rlc3RpbmcvZnMvZnMuanMnLCBbJ2dvb2cudGVzdGluZy5mcyddLCBbJ2dvb2cuVGltZXInLCAnZ29vZy5hcnJheScsICdnb29nLmFzeW5jLkRlZmVycmVkJywgJ2dvb2cuZnMnLCAnZ29vZy50ZXN0aW5nLlByb3BlcnR5UmVwbGFjZXInLCAnZ29vZy50ZXN0aW5nLmZzLkJsb2InLCAnZ29vZy50ZXN0aW5nLmZzLkZpbGVTeXN0ZW0nXSwge30pOwpnb29nLmFkZERlcGVuZGVuY3koJ3Rlc3RpbmcvZnMvZnNfdGVzdC5qcycsIFsnZ29vZy50ZXN0aW5nLmZzVGVzdCddLCBbJ2dvb2cudGVzdGluZy5mcycsICdnb29nLnRlc3RpbmcuZnMuQmxvYicsICdnb29nLnRlc3RpbmcudGVzdFN1aXRlJ10sIHsnbGFuZyc6ICdlczYnLCAnbW9kdWxlJzogJ2dvb2cnfSk7Cmdvb2cuYWRkRGVwZW5kZW5jeSgndGVzdGluZy9mcy9pbnRlZ3JhdGlvbl90ZXN0LmpzJywgWydnb29nLnRlc3RpbmcuZnMuaW50ZWdyYXRpb25UZXN0J10sIFsnZ29vZy5Qcm9taXNlJywgJ2dvb2cuZXZlbnRzJywgJ2dvb2cuZnMnLCAnZ29vZy5mcy5EaXJlY3RvcnlFbnRyeScsICdnb29nLmZzLkVycm9yJywgJ2dvb2cuZnMuRmlsZVNhdmVyJywgJ2dvb2cudGVzdGluZy5Qcm9wZXJ0eVJlcGxhY2VyJywgJ2dvb2cudGVzdGluZy5mcycsICdnb29nLnRlc3RpbmcudGVzdFN1aXRlJ10sIHsnbGFuZyc6ICdlczYnLCAnbW9kdWxlJzogJ2dvb2cnfSk7Cmdvb2cuYWRkRGVwZW5kZW5jeSgndGVzdGluZy9mcy9wcm9ncmVzc2V2ZW50LmpzJywgWydnb29nLnRlc3RpbmcuZnMuUHJvZ3Jlc3NFdmVudCddLCBbJ2dvb2cuZXZlbnRzLkV2ZW50J10sIHt9KTsKZ29vZy5hZGREZXBlbmRlbmN5KCd0ZXN0aW5nL2Z1bmN0aW9ubW9jay5qcycsIFsnZ29vZy50ZXN0aW5nJywgJ2dvb2cudGVzdGluZy5GdW5jdGlvbk1vY2snLCAnZ29vZy50ZXN0aW5nLkdsb2JhbEZ1bmN0aW9uTW9jaycsICdnb29nLnRlc3RpbmcuTWV0aG9kTW9jayddLCBbJ2dvb2cub2JqZWN0JywgJ2dvb2cudGVzdGluZy5Mb29zZU1vY2snLCAnZ29vZy50ZXN0aW5nLk1vY2snLCAnZ29vZy50ZXN0aW5nLlByb3BlcnR5UmVwbGFjZXInLCAnZ29vZy50ZXN0aW5nLlN0cmljdE1vY2snXSwge30pOwpnb29nLmFkZERlcGVuZGVuY3koJ3Rlc3RpbmcvZnVuY3Rpb25tb2NrX3Rlc3QuanMnLCBbJ2dvb2cudGVzdGluZy5GdW5jdGlvbk1vY2tUZXN0J10sIFsnZ29vZy5hcnJheScsICdnb29nLnN0cmluZycsICdnb29nLnRlc3RpbmcnLCAnZ29vZy50ZXN0aW5nLkZ1bmN0aW9uTW9jaycsICdnb29nLnRlc3RpbmcuTW9jaycsICdnb29nLnRlc3RpbmcuU3RyaWN0TW9jaycsICdnb29nLnRlc3RpbmcuYXNzZXJ0cycsICdnb29nLnRlc3RpbmcubW9ja21hdGNoZXJzJywgJ2dvb2cudGVzdGluZy50ZXN0U3VpdGUnXSwgeydsYW5nJzogJ2VzNicsICdtb2R1bGUnOiAnZ29vZyd9KTsKZ29vZy5hZGREZXBlbmRlbmN5KCd0ZXN0aW5nL2dyYXBoaWNzLmpzJywgWydnb29nLnRlc3RpbmcuZ3JhcGhpY3MnXSwgWydnb29nLmdyYXBoaWNzLlBhdGgnLCAnZ29vZy50ZXN0aW5nLmFzc2VydHMnXSwge30pOwpnb29nLmFkZERlcGVuZGVuY3koJ3Rlc3RpbmcvaTE4bi9hc3NlcnRzLmpzJywgWydnb29nLnRlc3RpbmcuaTE4bi5hc3NlcnRzJ10sIFsnZ29vZy50ZXN0aW5nLmpzdW5pdCddLCB7J2xhbmcnOiAnZXM2J30pOwpnb29nLmFkZERlcGVuZGVuY3koJ3Rlc3RpbmcvaTE4bi9hc3NlcnRzX3Rlc3QuanMnLCBbJ2dvb2cudGVzdGluZy5pMThuLmFzc2VydHNUZXN0J10sIFsnZ29vZy50ZXN0aW5nLkV4cGVjdGVkRmFpbHVyZXMnLCAnZ29vZy50ZXN0aW5nLmkxOG4uYXNzZXJ0cycsICdnb29nLnRlc3RpbmcudGVzdFN1aXRlJ10sIHsnbGFuZyc6ICdlczYnLCAnbW9kdWxlJzogJ2dvb2cnfSk7Cmdvb2cuYWRkRGVwZW5kZW5jeSgndGVzdGluZy9qc3RkYXN5bmN3cmFwcGVyLmpzJywgWydnb29nLnRlc3RpbmcuSnNUZEFzeW5jV3JhcHBlciddLCBbJ2dvb2cuUHJvbWlzZSddLCB7fSk7Cmdvb2cuYWRkRGVwZW5kZW5jeSgndGVzdGluZy9qc3RkdGVzdGNhc2VhZGFwdGVyLmpzJywgWydnb29nLnRlc3RpbmcuSnNUZFRlc3RDYXNlQWRhcHRlciddLCBbJ2dvb2cuYXN5bmMucnVuJywgJ2dvb2cuZnVuY3Rpb25zJywgJ2dvb2cudGVzdGluZy5Kc1RkQXN5bmNXcmFwcGVyJywgJ2dvb2cudGVzdGluZy5UZXN0Q2FzZScsICdnb29nLnRlc3RpbmcuanN1bml0J10sIHt9KTsKZ29vZy5hZGREZXBlbmRlbmN5KCd0ZXN0aW5nL2pzdW5pdC5qcycsIFsnZ29vZy50ZXN0aW5nLmpzdW5pdCddLCBbJ2dvb2cuZG9tLlRhZ05hbWUnLCAnZ29vZy50ZXN0aW5nLlRlc3RDYXNlJywgJ2dvb2cudGVzdGluZy5UZXN0UnVubmVyJywgJ2dvb2cudXNlckFnZW50J10sIHt9KTsKZ29vZy5hZGREZXBlbmRlbmN5KCd0ZXN0aW5nL2pzdW5pdGV4Y2VwdGlvbi5qcycsIFsnZ29vZy50ZXN0aW5nLkpzVW5pdEV4Y2VwdGlvbiddLCBbJ2dvb2cudGVzdGluZy5zdGFja3RyYWNlJ10sIHt9KTsKZ29vZy5hZGREZXBlbmRlbmN5KCd0ZXN0aW5nL2xvb3NlbW9jay5qcycsIFsnZ29vZy50ZXN0aW5nLkxvb3NlRXhwZWN0YXRpb25Db2xsZWN0aW9uJywgJ2dvb2cudGVzdGluZy5Mb29zZU1vY2snXSwgWydnb29nLmFycmF5JywgJ2dvb2cuYXNzZXJ0cycsICdnb29nLnN0cnVjdHMuTWFwJywgJ2dvb2cuc3RydWN0cy5TZXQnLCAnZ29vZy50ZXN0aW5nLk1vY2snXSwge30pOwpnb29nLmFkZERlcGVuZGVuY3koJ3Rlc3RpbmcvbG9vc2Vtb2NrX3Rlc3QuanMnLCBbJ2dvb2cudGVzdGluZy5Mb29zZU1vY2tUZXN0J10sIFsnZ29vZy50ZXN0aW5nLkxvb3NlTW9jaycsICdnb29nLnRlc3RpbmcubW9ja21hdGNoZXJzJywgJ2dvb2cudGVzdGluZy50ZXN0U3VpdGUnXSwgeydsYW5nJzogJ2VzOCcsICdtb2R1bGUnOiAnZ29vZyd9KTsKZ29vZy5hZGREZXBlbmRlbmN5KCd0ZXN0aW5nL21lc3NhZ2luZy9tb2NrbWVzc2FnZWNoYW5uZWwuanMnLCBbJ2dvb2cudGVzdGluZy5tZXNzYWdpbmcuTW9ja01lc3NhZ2VDaGFubmVsJ10sIFsnZ29vZy5tZXNzYWdpbmcuQWJzdHJhY3RDaGFubmVsJywgJ2dvb2cudGVzdGluZy5Nb2NrQ29udHJvbCcsICdnb29nLnRlc3RpbmcuYXNzZXJ0cyddLCB7fSk7Cmdvb2cuYWRkRGVwZW5kZW5jeSgndGVzdGluZy9tZXNzYWdpbmcvbW9ja21lc3NhZ2VldmVudC5qcycsIFsnZ29vZy50ZXN0aW5nLm1lc3NhZ2luZy5Nb2NrTWVzc2FnZUV2ZW50J10sIFsnZ29vZy5ldmVudHMuQnJvd3NlckV2ZW50JywgJ2dvb2cuZXZlbnRzLkV2ZW50VHlwZScsICdnb29nLnRlc3RpbmcuZXZlbnRzLkV2ZW50J10sIHt9KTsKZ29vZy5hZGREZXBlbmRlbmN5KCd0ZXN0aW5nL21lc3NhZ2luZy9tb2NrbWVzc2FnZXBvcnQuanMnLCBbJ2dvb2cudGVzdGluZy5tZXNzYWdpbmcuTW9ja01lc3NhZ2VQb3J0J10sIFsnZ29vZy5ldmVudHMuRXZlbnRUYXJnZXQnLCAnZ29vZy50ZXN0aW5nLk1vY2tDb250cm9sJ10sIHt9KTsKZ29vZy5hZGREZXBlbmRlbmN5KCd0ZXN0aW5nL21lc3NhZ2luZy9tb2NrcG9ydG5ldHdvcmsuanMnLCBbJ2dvb2cudGVzdGluZy5tZXNzYWdpbmcuTW9ja1BvcnROZXR3b3JrJ10sIFsnZ29vZy5tZXNzYWdpbmcuUG9ydE5ldHdvcmsnLCAnZ29vZy50ZXN0aW5nLm1lc3NhZ2luZy5Nb2NrTWVzc2FnZUNoYW5uZWwnXSwge30pOwpnb29nLmFkZERlcGVuZGVuY3koJ3Rlc3RpbmcvbW9jay5qcycsIFsnZ29vZy50ZXN0aW5nLk1vY2snLCAnZ29vZy50ZXN0aW5nLk1vY2tFeHBlY3RhdGlvbiddLCBbJ2dvb2cuUHJvbWlzZScsICdnb29nLmFycmF5JywgJ2dvb2cuYXNzZXJ0cycsICdnb29nLm9iamVjdCcsICdnb29nLnByb21pc2UuUmVzb2x2ZXInLCAnZ29vZy50ZXN0aW5nLkpzVW5pdEV4Y2VwdGlvbicsICdnb29nLnRlc3RpbmcuTW9ja0ludGVyZmFjZScsICdnb29nLnRlc3RpbmcubW9ja21hdGNoZXJzJ10sIHt9KTsKZ29vZy5hZGREZXBlbmRlbmN5KCd0ZXN0aW5nL21vY2tfdGVzdC5qcycsIFsnZ29vZy50ZXN0aW5nLk1vY2tUZXN0J10sIFsnZ29vZy5hcnJheScsICdnb29nLnRlc3RpbmcnLCAnZ29vZy50ZXN0aW5nLk1vY2snLCAnZ29vZy50ZXN0aW5nLk1vY2tDb250cm9sJywgJ2dvb2cudGVzdGluZy5Nb2NrRXhwZWN0YXRpb24nLCAnZ29vZy50ZXN0aW5nLnRlc3RTdWl0ZSddLCB7J2xhbmcnOiAnZXM4JywgJ21vZHVsZSc6ICdnb29nJ30pOwpnb29nLmFkZERlcGVuZGVuY3koJ3Rlc3RpbmcvbW9ja2NsYXNzZmFjdG9yeS5qcycsIFsnZ29vZy50ZXN0aW5nLk1vY2tDbGFzc0ZhY3RvcnknLCAnZ29vZy50ZXN0aW5nLk1vY2tDbGFzc1JlY29yZCddLCBbJ2dvb2cuYXJyYXknLCAnZ29vZy5vYmplY3QnLCAnZ29vZy50ZXN0aW5nLkxvb3NlTW9jaycsICdnb29nLnRlc3RpbmcuU3RyaWN0TW9jaycsICdnb29nLnRlc3RpbmcuVGVzdENhc2UnLCAnZ29vZy50ZXN0aW5nLm1vY2ttYXRjaGVycyddLCB7fSk7Cmdvb2cuYWRkRGVwZW5kZW5jeSgndGVzdGluZy9tb2NrY2xhc3NmYWN0b3J5X3Rlc3QuanMnLCBbJ2Zha2UuQmFzZUNsYXNzJywgJ2Zha2UuQ2hpbGRDbGFzcycsICdnb29nLnRlc3RpbmcuTW9ja0NsYXNzRmFjdG9yeVRlc3QnXSwgWydnb29nLnRlc3RpbmcnLCAnZ29vZy50ZXN0aW5nLk1vY2tDbGFzc0ZhY3RvcnknLCAnZ29vZy50ZXN0aW5nLmpzdW5pdCddLCB7J2xhbmcnOiAnZXM2J30pOwpnb29nLmFkZERlcGVuZGVuY3koJ3Rlc3RpbmcvbW9ja2Nsb2NrLmpzJywgWydnb29nLnRlc3RpbmcuTW9ja0Nsb2NrJ10sIFsnZ29vZy5EaXNwb3NhYmxlJywgJ2dvb2cuUHJvbWlzZScsICdnb29nLlRoZW5hYmxlJywgJ2dvb2cuYXN5bmMucnVuJywgJ2dvb2cudGVzdGluZy5Qcm9wZXJ0eVJlcGxhY2VyJywgJ2dvb2cudGVzdGluZy5ldmVudHMnLCAnZ29vZy50ZXN0aW5nLmV2ZW50cy5FdmVudCddLCB7fSk7Cmdvb2cuYWRkRGVwZW5kZW5jeSgndGVzdGluZy9tb2NrY2xvY2tfdGVzdC5qcycsIFsnZ29vZy50ZXN0aW5nLk1vY2tDbG9ja1Rlc3QnXSwgWydnb29nLlByb21pc2UnLCAnZ29vZy5UaW1lcicsICdnb29nLmV2ZW50cycsICdnb29nLmZ1bmN0aW9ucycsICdnb29nLnRlc3RpbmcuTW9ja0Nsb2NrJywgJ2dvb2cudGVzdGluZy5Qcm9wZXJ0eVJlcGxhY2VyJywgJ2dvb2cudGVzdGluZy5yZWNvcmRGdW5jdGlvbicsICdnb29nLnRlc3RpbmcudGVzdFN1aXRlJ10sIHsnbGFuZyc6ICdlczYnLCAnbW9kdWxlJzogJ2dvb2cnfSk7Cmdvb2cuYWRkRGVwZW5kZW5jeSgndGVzdGluZy9tb2NrY29udHJvbC5qcycsIFsnZ29vZy50ZXN0aW5nLk1vY2tDb250cm9sJ10sIFsnZ29vZy5Qcm9taXNlJywgJ2dvb2cuYXJyYXknLCAnZ29vZy50ZXN0aW5nJywgJ2dvb2cudGVzdGluZy5Mb29zZU1vY2snLCAnZ29vZy50ZXN0aW5nLlN0cmljdE1vY2snXSwge30pOwpnb29nLmFkZERlcGVuZGVuY3koJ3Rlc3RpbmcvbW9ja2NvbnRyb2xfdGVzdC5qcycsIFsnZ29vZy50ZXN0aW5nLk1vY2tDb250cm9sVGVzdCddLCBbJ2dvb2cudGVzdGluZy5Nb2NrJywgJ2dvb2cudGVzdGluZy5Nb2NrQ29udHJvbCcsICdnb29nLnRlc3RpbmcudGVzdFN1aXRlJ10sIHsnbGFuZyc6ICdlczYnLCAnbW9kdWxlJzogJ2dvb2cnfSk7Cmdvb2cuYWRkRGVwZW5kZW5jeSgndGVzdGluZy9tb2NraW50ZXJmYWNlLmpzJywgWydnb29nLnRlc3RpbmcuTW9ja0ludGVyZmFjZSddLCBbJ2dvb2cuUHJvbWlzZSddLCB7fSk7Cmdvb2cuYWRkRGVwZW5kZW5jeSgndGVzdGluZy9tb2NrbWF0Y2hlcnMuanMnLCBbJ2dvb2cudGVzdGluZy5tb2NrbWF0Y2hlcnMnLCAnZ29vZy50ZXN0aW5nLm1vY2ttYXRjaGVycy5Bcmd1bWVudE1hdGNoZXInLCAnZ29vZy50ZXN0aW5nLm1vY2ttYXRjaGVycy5JZ25vcmVBcmd1bWVudCcsICdnb29nLnRlc3RpbmcubW9ja21hdGNoZXJzLkluc3RhbmNlT2YnLCAnZ29vZy50ZXN0aW5nLm1vY2ttYXRjaGVycy5PYmplY3RFcXVhbHMnLCAnZ29vZy50ZXN0aW5nLm1vY2ttYXRjaGVycy5SZWdleHBNYXRjaCcsICdnb29nLnRlc3RpbmcubW9ja21hdGNoZXJzLlNhdmVBcmd1bWVudCcsICdnb29nLnRlc3RpbmcubW9ja21hdGNoZXJzLlR5cGVPZiddLCBbJ2dvb2cuYXJyYXknLCAnZ29vZy5kb20nLCAnZ29vZy50ZXN0aW5nLmFzc2VydHMnXSwge30pOwpnb29nLmFkZERlcGVuZGVuY3koJ3Rlc3RpbmcvbW9ja21hdGNoZXJzX3Rlc3QuanMnLCBbJ2dvb2cudGVzdGluZy5tb2NrbWF0Y2hlcnNUZXN0J10sIFsnZ29vZy5kb20nLCAnZ29vZy5kb20uVGFnTmFtZScsICdnb29nLnRlc3RpbmcuanN1bml0JywgJ2dvb2cudGVzdGluZy5tb2NrbWF0Y2hlcnMnLCAnZ29vZy50ZXN0aW5nLm1vY2ttYXRjaGVycy5Bcmd1bWVudE1hdGNoZXInXSwgeydsYW5nJzogJ2VzNid9KTsKZ29vZy5hZGREZXBlbmRlbmN5KCd0ZXN0aW5nL21vY2tyYW5kb20uanMnLCBbJ2dvb2cudGVzdGluZy5Nb2NrUmFuZG9tJ10sIFsnZ29vZy5EaXNwb3NhYmxlJ10sIHt9KTsKZ29vZy5hZGREZXBlbmRlbmN5KCd0ZXN0aW5nL21vY2tyYW5kb21fdGVzdC5qcycsIFsnZ29vZy50ZXN0aW5nLk1vY2tSYW5kb21UZXN0J10sIFsnZ29vZy50ZXN0aW5nLk1vY2tSYW5kb20nLCAnZ29vZy50ZXN0aW5nLnRlc3RTdWl0ZSddLCB7J2xhbmcnOiAnZXM2JywgJ21vZHVsZSc6ICdnb29nJ30pOwpnb29nLmFkZERlcGVuZGVuY3koJ3Rlc3RpbmcvbW9ja3JhbmdlLmpzJywgWydnb29nLnRlc3RpbmcuTW9ja1JhbmdlJ10sIFsnZ29vZy5kb20uQWJzdHJhY3RSYW5nZScsICdnb29nLnRlc3RpbmcuTG9vc2VNb2NrJ10sIHt9KTsKZ29vZy5hZGREZXBlbmRlbmN5KCd0ZXN0aW5nL21vY2tyYW5nZV90ZXN0LmpzJywgWydnb29nLnRlc3RpbmcuTW9ja1JhbmdlVGVzdCddLCBbJ2dvb2cudGVzdGluZy5Nb2NrUmFuZ2UnLCAnZ29vZy50ZXN0aW5nLnRlc3RTdWl0ZSddLCB7J2xhbmcnOiAnZXM2JywgJ21vZHVsZSc6ICdnb29nJ30pOwpnb29nLmFkZERlcGVuZGVuY3koJ3Rlc3RpbmcvbW9ja3N0b3JhZ2UuanMnLCBbJ2dvb2cudGVzdGluZy5Nb2NrU3RvcmFnZSddLCBbJ2dvb2cuc3RydWN0cy5NYXAnXSwge30pOwpnb29nLmFkZERlcGVuZGVuY3koJ3Rlc3RpbmcvbW9ja3N0b3JhZ2VfdGVzdC5qcycsIFsnZ29vZy50ZXN0aW5nLk1vY2tTdG9yYWdlVGVzdCddLCBbJ2dvb2cudGVzdGluZy5Nb2NrU3RvcmFnZScsICdnb29nLnRlc3RpbmcudGVzdFN1aXRlJ10sIHsnbGFuZyc6ICdlczYnLCAnbW9kdWxlJzogJ2dvb2cnfSk7Cmdvb2cuYWRkRGVwZW5kZW5jeSgndGVzdGluZy9tb2NrdXNlcmFnZW50LmpzJywgWydnb29nLnRlc3RpbmcuTW9ja1VzZXJBZ2VudCddLCBbJ2dvb2cuRGlzcG9zYWJsZScsICdnb29nLmxhYnMudXNlckFnZW50LnV0aWwnLCAnZ29vZy50ZXN0aW5nLlByb3BlcnR5UmVwbGFjZXInLCAnZ29vZy51c2VyQWdlbnQnXSwge30pOwpnb29nLmFkZERlcGVuZGVuY3koJ3Rlc3RpbmcvbW9ja3VzZXJhZ2VudF90ZXN0LmpzJywgWydnb29nLnRlc3RpbmcuTW9ja1VzZXJBZ2VudFRlc3QnXSwgWydnb29nLmRpc3Bvc2UnLCAnZ29vZy50ZXN0aW5nLk1vY2tVc2VyQWdlbnQnLCAnZ29vZy50ZXN0aW5nLnRlc3RTdWl0ZScsICdnb29nLnVzZXJBZ2VudCddLCB7J2xhbmcnOiAnZXM2JywgJ21vZHVsZSc6ICdnb29nJ30pOwpnb29nLmFkZERlcGVuZGVuY3koJ3Rlc3RpbmcvbXVsdGl0ZXN0cnVubmVyLmpzJywgWydnb29nLnRlc3RpbmcuTXVsdGlUZXN0UnVubmVyJywgJ2dvb2cudGVzdGluZy5NdWx0aVRlc3RSdW5uZXIuVGVzdEZyYW1lJ10sIFsnZ29vZy5UaW1lcicsICdnb29nLmFycmF5JywgJ2dvb2cuYXNzZXJ0cycsICdnb29nLmRvbScsICdnb29nLmRvbS5UYWdOYW1lJywgJ2dvb2cuZG9tLmNsYXNzbGlzdCcsICdnb29nLmV2ZW50cy5FdmVudEhhbmRsZXInLCAnZ29vZy5mdW5jdGlvbnMnLCAnZ29vZy5vYmplY3QnLCAnZ29vZy5zdHJpbmcnLCAnZ29vZy50ZXN0aW5nLlRlc3RDYXNlJywgJ2dvb2cudWkuQ29tcG9uZW50JywgJ2dvb2cudWkuU2VydmVyQ2hhcnQnLCAnZ29vZy51aS5UYWJsZVNvcnRlciddLCB7fSk7Cmdvb2cuYWRkRGVwZW5kZW5jeSgndGVzdGluZy9tdWx0aXRlc3RydW5uZXJfdGVzdC5qcycsIFsnZ29vZy50ZXN0aW5nLk11bHRpVGVzdFJ1bm5lclRlc3QnXSwgWydnb29nLlByb21pc2UnLCAnZ29vZy5hcnJheScsICdnb29nLmV2ZW50cycsICdnb29nLnRlc3RpbmcuTW9ja0NvbnRyb2wnLCAnZ29vZy50ZXN0aW5nLk11bHRpVGVzdFJ1bm5lcicsICdnb29nLnRlc3RpbmcuUHJvcGVydHlSZXBsYWNlcicsICdnb29nLnRlc3RpbmcuVGVzdENhc2UnLCAnZ29vZy50ZXN0aW5nLmFzc2VydHMnLCAnZ29vZy50ZXN0aW5nLmV2ZW50cycsICdnb29nLnRlc3RpbmcudGVzdFN1aXRlJ10sIHsnbGFuZyc6ICdlczYnLCAnbW9kdWxlJzogJ2dvb2cnfSk7Cmdvb2cuYWRkRGVwZW5kZW5jeSgndGVzdGluZy9uZXQvbW9ja2lmcmFtZWlvLmpzJywgWydnb29nLnRlc3RpbmcubmV0Lk1vY2tJRnJhbWVJbyddLCBbJ2dvb2cuZXZlbnRzLkV2ZW50VGFyZ2V0JywgJ2dvb2cubmV0LkVycm9yQ29kZScsICdnb29nLm5ldC5FdmVudFR5cGUnLCAnZ29vZy5uZXQuSWZyYW1lSW8nLCAnZ29vZy50ZXN0aW5nLlRlc3RRdWV1ZSddLCB7fSk7Cmdvb2cuYWRkRGVwZW5kZW5jeSgndGVzdGluZy9uZXQveGhyaW8uanMnLCBbJ2dvb2cudGVzdGluZy5uZXQuWGhySW8nXSwgWydnb29nLlVyaScsICdnb29nLmFycmF5JywgJ2dvb2cuZG9tLnhtbCcsICdnb29nLmV2ZW50cycsICdnb29nLm5ldC5FcnJvckNvZGUnLCAnZ29vZy5uZXQuRXZlbnRUeXBlJywgJ2dvb2cubmV0Lkh0dHBTdGF0dXMnLCAnZ29vZy5uZXQuWGhySW8nLCAnZ29vZy5uZXQuWG1sSHR0cCcsICdnb29nLm9iamVjdCcsICdnb29nLnN0cnVjdHMnLCAnZ29vZy5zdHJ1Y3RzLk1hcCcsICdnb29nLnRlc3RpbmcuVGVzdFF1ZXVlJywgJ2dvb2cudXJpLnV0aWxzJ10sIHt9KTsKZ29vZy5hZGREZXBlbmRlbmN5KCd0ZXN0aW5nL25ldC94aHJpb190ZXN0LmpzJywgWydnb29nLnRlc3RpbmcubmV0LlhocklvVGVzdCddLCBbJ2dvb2cuZG9tLnhtbCcsICdnb29nLmV2ZW50cycsICdnb29nLmV2ZW50cy5FdmVudCcsICdnb29nLm5ldC5FcnJvckNvZGUnLCAnZ29vZy5uZXQuRXZlbnRUeXBlJywgJ2dvb2cubmV0LlhtbEh0dHAnLCAnZ29vZy5vYmplY3QnLCAnZ29vZy50ZXN0aW5nLk1vY2tDb250cm9sJywgJ2dvb2cudGVzdGluZy5hc3NlcnRzJywgJ2dvb2cudGVzdGluZy5tb2NrbWF0Y2hlcnMuSW5zdGFuY2VPZicsICdnb29nLnRlc3RpbmcubmV0LlhocklvJywgJ2dvb2cudGVzdGluZy50ZXN0U3VpdGUnXSwgeydsYW5nJzogJ2VzNicsICdtb2R1bGUnOiAnZ29vZyd9KTsKZ29vZy5hZGREZXBlbmRlbmN5KCd0ZXN0aW5nL25ldC94aHJpb3Bvb2wuanMnLCBbJ2dvb2cudGVzdGluZy5uZXQuWGhySW9Qb29sJ10sIFsnZ29vZy5uZXQuWGhySW9Qb29sJywgJ2dvb2cudGVzdGluZy5uZXQuWGhySW8nXSwge30pOwpnb29nLmFkZERlcGVuZGVuY3koJ3Rlc3Rpbmcvb2JqZWN0cHJvcGVydHlzdHJpbmcuanMnLCBbJ2dvb2cudGVzdGluZy5PYmplY3RQcm9wZXJ0eVN0cmluZyddLCBbXSwge30pOwpnb29nLmFkZERlcGVuZGVuY3koJ3Rlc3RpbmcvcGFyYWxsZWxfY2xvc3VyZV90ZXN0X3N1aXRlLmpzJywgWydnb29nLnRlc3RpbmcucGFyYWxsZWxDbG9zdXJlVGVzdFN1aXRlJ10sIFsnZ29vZy5Qcm9taXNlJywgJ2dvb2cuYXNzZXJ0cycsICdnb29nLmV2ZW50cycsICdnb29nLmpzb24nLCAnZ29vZy50ZXN0aW5nLk11bHRpVGVzdFJ1bm5lcicsICdnb29nLnRlc3RpbmcuVGVzdENhc2UnLCAnZ29vZy50ZXN0aW5nLnRlc3RTdWl0ZSddLCB7J2xhbmcnOiAnZXM2JywgJ21vZHVsZSc6ICdnb29nJ30pOwpnb29nLmFkZERlcGVuZGVuY3koJ3Rlc3RpbmcvcGFyYWxsZWxfY2xvc3VyZV90ZXN0X3N1aXRlX3Rlc3QuanMnLCBbJ2dvb2cudGVzdGluZy5wYXJhbGxlbENsb3N1cmVUZXN0U3VpdGVUZXN0J10sIFsnZ29vZy5kb20nLCAnZ29vZy50ZXN0aW5nLk1vY2tDb250cm9sJywgJ2dvb2cudGVzdGluZy5NdWx0aVRlc3RSdW5uZXInLCAnZ29vZy50ZXN0aW5nLlByb3BlcnR5UmVwbGFjZXInLCAnZ29vZy50ZXN0aW5nLlRlc3RDYXNlJywgJ2dvb2cudGVzdGluZy5tb2NrbWF0Y2hlcnMnLCAnZ29vZy50ZXN0aW5nLm1vY2ttYXRjaGVycy5Bcmd1bWVudE1hdGNoZXInLCAnZ29vZy50ZXN0aW5nLnBhcmFsbGVsQ2xvc3VyZVRlc3RTdWl0ZScsICdnb29nLnRlc3RpbmcudGVzdFN1aXRlJ10sIHsnbGFuZyc6ICdlczYnLCAnbW9kdWxlJzogJ2dvb2cnfSk7Cmdvb2cuYWRkRGVwZW5kZW5jeSgndGVzdGluZy9wZXJmb3JtYW5jZXRhYmxlLmpzJywgWydnb29nLnRlc3RpbmcuUGVyZm9ybWFuY2VUYWJsZSddLCBbJ2dvb2cuYXNzZXJ0cycsICdnb29nLmRvbScsICdnb29nLmRvbS5UYWdOYW1lJywgJ2dvb2cudGVzdGluZy5QZXJmb3JtYW5jZVRpbWVyJ10sIHt9KTsKZ29vZy5hZGREZXBlbmRlbmN5KCd0ZXN0aW5nL3BlcmZvcm1hbmNldGltZXIuanMnLCBbJ2dvb2cudGVzdGluZy5QZXJmb3JtYW5jZVRpbWVyJywgJ2dvb2cudGVzdGluZy5QZXJmb3JtYW5jZVRpbWVyLlRhc2snXSwgWydnb29nLmFycmF5JywgJ2dvb2cuYXN5bmMuRGVmZXJyZWQnLCAnZ29vZy5tYXRoJ10sIHsnbGFuZyc6ICdlczYnfSk7Cmdvb2cuYWRkRGVwZW5kZW5jeSgndGVzdGluZy9wZXJmb3JtYW5jZXRpbWVyX3Rlc3QuanMnLCBbJ2dvb2cudGVzdGluZy5QZXJmb3JtYW5jZVRpbWVyVGVzdCddLCBbJ2dvb2cuYXN5bmMuRGVmZXJyZWQnLCAnZ29vZy5kb20nLCAnZ29vZy5tYXRoJywgJ2dvb2cudGVzdGluZy5Nb2NrQ2xvY2snLCAnZ29vZy50ZXN0aW5nLlBlcmZvcm1hbmNlVGltZXInLCAnZ29vZy50ZXN0aW5nLnRlc3RTdWl0ZSddLCB7J2xhbmcnOiAnZXM2JywgJ21vZHVsZSc6ICdnb29nJ30pOwpnb29nLmFkZERlcGVuZGVuY3koJ3Rlc3RpbmcvcHJvcGVydHlyZXBsYWNlci5qcycsIFsnZ29vZy50ZXN0aW5nLlByb3BlcnR5UmVwbGFjZXInXSwgWydnb29nLmFzc2VydHMnLCAnZ29vZy51c2VyQWdlbnQnXSwge30pOwpnb29nLmFkZERlcGVuZGVuY3koJ3Rlc3RpbmcvcHJvcGVydHlyZXBsYWNlcl90ZXN0LmpzJywgWydnb29nLnRlc3RpbmcuUHJvcGVydHlSZXBsYWNlclRlc3QnXSwgWydnb29nLmRvbScsICdnb29nLmRvbS5UYWdOYW1lJywgJ2dvb2cudGVzdGluZy5Qcm9wZXJ0eVJlcGxhY2VyJywgJ2dvb2cudGVzdGluZy5hc3NlcnRzJywgJ2dvb2cudGVzdGluZy50ZXN0U3VpdGUnLCAnZ29vZy51c2VyQWdlbnQucHJvZHVjdCcsICdnb29nLnVzZXJBZ2VudC5wcm9kdWN0LmlzVmVyc2lvbiddLCB7J2xhbmcnOiAnZXM2JywgJ21vZHVsZSc6ICdnb29nJ30pOwpnb29nLmFkZERlcGVuZGVuY3koJ3Rlc3RpbmcvcHJvdG8yL3Byb3RvMi5qcycsIFsnZ29vZy50ZXN0aW5nLnByb3RvMiddLCBbJ2dvb2cucHJvdG8yLk1lc3NhZ2UnLCAnZ29vZy5wcm90bzIuT2JqZWN0U2VyaWFsaXplcicsICdnb29nLnRlc3RpbmcuYXNzZXJ0cyddLCB7fSk7Cmdvb2cuYWRkRGVwZW5kZW5jeSgndGVzdGluZy9wcm90bzIvcHJvdG8yX3Rlc3QuanMnLCBbJ2dvb2cudGVzdGluZy5wcm90bzJUZXN0J10sIFsnZ29vZy50ZXN0aW5nLnByb3RvMicsICdnb29nLnRlc3RpbmcudGVzdFN1aXRlJywgJ3Byb3RvMi5UZXN0QWxsVHlwZXMnXSwgeydsYW5nJzogJ2VzNicsICdtb2R1bGUnOiAnZ29vZyd9KTsKZ29vZy5hZGREZXBlbmRlbmN5KCd0ZXN0aW5nL3BzZXVkb3JhbmRvbS5qcycsIFsnZ29vZy50ZXN0aW5nLlBzZXVkb1JhbmRvbSddLCBbJ2dvb2cuRGlzcG9zYWJsZSddLCB7fSk7Cmdvb2cuYWRkRGVwZW5kZW5jeSgndGVzdGluZy9wc2V1ZG9yYW5kb21fdGVzdC5qcycsIFsnZ29vZy50ZXN0aW5nLlBzZXVkb1JhbmRvbVRlc3QnXSwgWydnb29nLnRlc3RpbmcuUHNldWRvUmFuZG9tJywgJ2dvb2cudGVzdGluZy50ZXN0U3VpdGUnXSwgeydsYW5nJzogJ2VzNicsICdtb2R1bGUnOiAnZ29vZyd9KTsKZ29vZy5hZGREZXBlbmRlbmN5KCd0ZXN0aW5nL3JlY29yZGZ1bmN0aW9uLmpzJywgWydnb29nLnRlc3RpbmcuRnVuY3Rpb25DYWxsJywgJ2dvb2cudGVzdGluZy5yZWNvcmRDb25zdHJ1Y3RvcicsICdnb29nLnRlc3RpbmcucmVjb3JkRnVuY3Rpb24nXSwgWydnb29nLlByb21pc2UnLCAnZ29vZy5wcm9taXNlLlJlc29sdmVyJywgJ2dvb2cudGVzdGluZy5hc3NlcnRzJ10sIHt9KTsKZ29vZy5hZGREZXBlbmRlbmN5KCd0ZXN0aW5nL3JlY29yZGZ1bmN0aW9uX3Rlc3QuanMnLCBbJ2dvb2cudGVzdGluZy5yZWNvcmRGdW5jdGlvblRlc3QnXSwgWydnb29nLmZ1bmN0aW9ucycsICdnb29nLnRlc3RpbmcuUHJvcGVydHlSZXBsYWNlcicsICdnb29nLnRlc3RpbmcucmVjb3JkQ29uc3RydWN0b3InLCAnZ29vZy50ZXN0aW5nLnJlY29yZEZ1bmN0aW9uJywgJ2dvb2cudGVzdGluZy50ZXN0U3VpdGUnXSwgeydsYW5nJzogJ2VzOCcsICdtb2R1bGUnOiAnZ29vZyd9KTsKZ29vZy5hZGREZXBlbmRlbmN5KCd0ZXN0aW5nL3NoYXJkaW5ndGVzdGNhc2UuanMnLCBbJ2dvb2cudGVzdGluZy5TaGFyZGluZ1Rlc3RDYXNlJ10sIFsnZ29vZy5hc3NlcnRzJywgJ2dvb2cudGVzdGluZy5UZXN0Q2FzZSddLCB7fSk7Cmdvb2cuYWRkRGVwZW5kZW5jeSgndGVzdGluZy9zaGFyZGluZ3Rlc3RjYXNlX3Rlc3QuanMnLCBbJ2dvb2cudGVzdGluZy5TaGFyZGluZ1Rlc3RDYXNlVGVzdCddLCBbJ2dvb2cudGVzdGluZy5TaGFyZGluZ1Rlc3RDYXNlJywgJ2dvb2cudGVzdGluZy5UZXN0Q2FzZScsICdnb29nLnRlc3RpbmcuYXNzZXJ0cycsICdnb29nLnRlc3RpbmcuanN1bml0J10sIHsnbGFuZyc6ICdlczYnLCAnbW9kdWxlJzogJ2dvb2cnfSk7Cmdvb2cuYWRkRGVwZW5kZW5jeSgndGVzdGluZy9zaW5nbGV0b24uanMnLCBbJ2dvb2cudGVzdGluZy5zaW5nbGV0b24nXSwgW10sIHsnbGFuZyc6ICdlczYnfSk7Cmdvb2cuYWRkRGVwZW5kZW5jeSgndGVzdGluZy9zaW5nbGV0b25fdGVzdC5qcycsIFsnZ29vZy50ZXN0aW5nLnNpbmdsZXRvblRlc3QnXSwgWydnb29nLnRlc3RpbmcuYXNzZXJ0cycsICdnb29nLnRlc3Rpbmcuc2luZ2xldG9uJywgJ2dvb2cudGVzdGluZy50ZXN0U3VpdGUnXSwgeydsYW5nJzogJ2VzNicsICdtb2R1bGUnOiAnZ29vZyd9KTsKZ29vZy5hZGREZXBlbmRlbmN5KCd0ZXN0aW5nL3N0YWNrdHJhY2UuanMnLCBbJ2dvb2cudGVzdGluZy5zdGFja3RyYWNlJywgJ2dvb2cudGVzdGluZy5zdGFja3RyYWNlLkZyYW1lJ10sIFtdLCB7J2xhbmcnOiAnZXM2J30pOwpnb29nLmFkZERlcGVuZGVuY3koJ3Rlc3Rpbmcvc3RhY2t0cmFjZV90ZXN0LmpzJywgWydnb29nLnRlc3Rpbmcuc3RhY2t0cmFjZVRlc3QnXSwgWydnb29nLmZ1bmN0aW9ucycsICdnb29nLnN0cmluZycsICdnb29nLnRlc3RpbmcuRXhwZWN0ZWRGYWlsdXJlcycsICdnb29nLnRlc3RpbmcuUHJvcGVydHlSZXBsYWNlcicsICdnb29nLnRlc3RpbmcuU3RyaWN0TW9jaycsICdnb29nLnRlc3RpbmcuYXNzZXJ0cycsICdnb29nLnRlc3Rpbmcuc3RhY2t0cmFjZScsICdnb29nLnRlc3Rpbmcuc3RhY2t0cmFjZS5GcmFtZScsICdnb29nLnRlc3RpbmcudGVzdFN1aXRlJywgJ2dvb2cudXNlckFnZW50J10sIHsnbGFuZyc6ICdlczYnLCAnbW9kdWxlJzogJ2dvb2cnfSk7Cmdvb2cuYWRkRGVwZW5kZW5jeSgndGVzdGluZy9zdG9yYWdlL2Zha2VtZWNoYW5pc20uanMnLCBbJ2dvb2cudGVzdGluZy5zdG9yYWdlLkZha2VNZWNoYW5pc20nXSwgWydnb29nLnN0b3JhZ2UubWVjaGFuaXNtLkl0ZXJhYmxlTWVjaGFuaXNtJywgJ2dvb2cuc3RydWN0cy5NYXAnXSwge30pOwpnb29nLmFkZERlcGVuZGVuY3koJ3Rlc3Rpbmcvc3RyaWN0bW9jay5qcycsIFsnZ29vZy50ZXN0aW5nLlN0cmljdE1vY2snXSwgWydnb29nLmFycmF5JywgJ2dvb2cuYXNzZXJ0cycsICdnb29nLnN0cnVjdHMuU2V0JywgJ2dvb2cudGVzdGluZy5Nb2NrJ10sIHt9KTsKZ29vZy5hZGREZXBlbmRlbmN5KCd0ZXN0aW5nL3N0cmljdG1vY2tfdGVzdC5qcycsIFsnZ29vZy50ZXN0aW5nLlN0cmljdE1vY2tUZXN0J10sIFsnZ29vZy50ZXN0aW5nLlN0cmljdE1vY2snLCAnZ29vZy50ZXN0aW5nLnRlc3RTdWl0ZSddLCB7J2xhbmcnOiAnZXM4JywgJ21vZHVsZSc6ICdnb29nJ30pOwpnb29nLmFkZERlcGVuZGVuY3koJ3Rlc3Rpbmcvc3R5bGUvbGF5b3V0YXNzZXJ0cy5qcycsIFsnZ29vZy50ZXN0aW5nLnN0eWxlLmxheW91dGFzc2VydHMnXSwgWydnb29nLnN0eWxlJywgJ2dvb2cudGVzdGluZy5hc3NlcnRzJywgJ2dvb2cudGVzdGluZy5zdHlsZSddLCB7fSk7Cmdvb2cuYWRkRGVwZW5kZW5jeSgndGVzdGluZy9zdHlsZS9sYXlvdXRhc3NlcnRzX3Rlc3QuanMnLCBbJ2dvb2cudGVzdGluZy5zdHlsZS5sYXlvdXRhc3NlcnRzVGVzdCddLCBbJ2dvb2cuZG9tJywgJ2dvb2cuZG9tLlRhZ05hbWUnLCAnZ29vZy5zdHlsZScsICdnb29nLnRlc3Rpbmcuc3R5bGUubGF5b3V0YXNzZXJ0cycsICdnb29nLnRlc3RpbmcudGVzdFN1aXRlJ10sIHsnbGFuZyc6ICdlczYnLCAnbW9kdWxlJzogJ2dvb2cnfSk7Cmdvb2cuYWRkRGVwZW5kZW5jeSgndGVzdGluZy9zdHlsZS9zdHlsZS5qcycsIFsnZ29vZy50ZXN0aW5nLnN0eWxlJ10sIFsnZ29vZy5kb20nLCAnZ29vZy5tYXRoLlJlY3QnLCAnZ29vZy5zdHlsZSddLCB7fSk7Cmdvb2cuYWRkRGVwZW5kZW5jeSgndGVzdGluZy9zdHlsZS9zdHlsZV90ZXN0LmpzJywgWydnb29nLnRlc3Rpbmcuc3R5bGVUZXN0J10sIFsnZ29vZy5kb20nLCAnZ29vZy5kb20uVGFnTmFtZScsICdnb29nLnN0eWxlJywgJ2dvb2cudGVzdGluZy5zdHlsZScsICdnb29nLnRlc3RpbmcudGVzdFN1aXRlJ10sIHsnbGFuZyc6ICdlczYnLCAnbW9kdWxlJzogJ2dvb2cnfSk7Cmdvb2cuYWRkRGVwZW5kZW5jeSgndGVzdGluZy90ZXN0Y2FzZS5qcycsIFsnZ29vZy50ZXN0aW5nLlRlc3RDYXNlJywgJ2dvb2cudGVzdGluZy5UZXN0Q2FzZS5FcnJvcicsICdnb29nLnRlc3RpbmcuVGVzdENhc2UuT3JkZXInLCAnZ29vZy50ZXN0aW5nLlRlc3RDYXNlLlJlc3VsdCcsICdnb29nLnRlc3RpbmcuVGVzdENhc2UuVGVzdCddLCBbJ2dvb2cuUHJvbWlzZScsICdnb29nLlRoZW5hYmxlJywgJ2dvb2cuYXJyYXknLCAnZ29vZy5hc3NlcnRzJywgJ2dvb2cuZG9tJywgJ2dvb2cuZG9tLlRhZ05hbWUnLCAnZ29vZy5vYmplY3QnLCAnZ29vZy50ZXN0aW5nLkpzVW5pdEV4Y2VwdGlvbicsICdnb29nLnRlc3RpbmcuYXNzZXJ0cyddLCB7fSk7Cmdvb2cuYWRkRGVwZW5kZW5jeSgndGVzdGluZy90ZXN0Y2FzZV90ZXN0LmpzJywgWydnb29nLnRlc3RpbmcuVGVzdENhc2VUZXN0J10sIFsnZ29vZy5Qcm9taXNlJywgJ2dvb2cuVGltZXInLCAnZ29vZy5mdW5jdGlvbnMnLCAnZ29vZy5zdHJpbmcnLCAnZ29vZy50ZXN0aW5nLkV4cGVjdGVkRmFpbHVyZXMnLCAnZ29vZy50ZXN0aW5nLkZ1bmN0aW9uTW9jaycsICdnb29nLnRlc3RpbmcuSnNVbml0RXhjZXB0aW9uJywgJ2dvb2cudGVzdGluZy5NZXRob2RNb2NrJywgJ2dvb2cudGVzdGluZy5Nb2NrUmFuZG9tJywgJ2dvb2cudGVzdGluZy5Qcm9wZXJ0eVJlcGxhY2VyJywgJ2dvb2cudGVzdGluZy5UZXN0Q2FzZScsICdnb29nLnRlc3RpbmcudGVzdFN1aXRlJywgJ2dvb2cudXNlckFnZW50J10sIHsnbGFuZyc6ICdlczgnLCAnbW9kdWxlJzogJ2dvb2cnfSk7Cmdvb2cuYWRkRGVwZW5kZW5jeSgndGVzdGluZy90ZXN0cXVldWUuanMnLCBbJ2dvb2cudGVzdGluZy5UZXN0UXVldWUnXSwgW10sIHt9KTsKZ29vZy5hZGREZXBlbmRlbmN5KCd0ZXN0aW5nL3Rlc3RydW5uZXIuanMnLCBbJ2dvb2cudGVzdGluZy5UZXN0UnVubmVyJ10sIFsnZ29vZy5kb20nLCAnZ29vZy5kb20uVGFnTmFtZScsICdnb29nLmRvbS5zYWZlJywgJ2dvb2cuanNvbicsICdnb29nLnRlc3RpbmcuVGVzdENhc2UnLCAnZ29vZy51c2VyQWdlbnQnXSwge30pOwpnb29nLmFkZERlcGVuZGVuY3koJ3Rlc3RpbmcvdGVzdHJ1bm5lcl90ZXN0LmpzJywgWydnb29nLnRlc3RpbmcuVGVzdFJ1bm5lclRlc3QnXSwgWydnb29nLnRlc3RpbmcuVGVzdENhc2UnLCAnZ29vZy50ZXN0aW5nLlRlc3RSdW5uZXInLCAnZ29vZy50ZXN0aW5nLmFzc2VydHMnLCAnZ29vZy50ZXN0aW5nLnRlc3RTdWl0ZSddLCB7J2xhbmcnOiAnZXM2JywgJ21vZHVsZSc6ICdnb29nJ30pOwpnb29nLmFkZERlcGVuZGVuY3koJ3Rlc3RpbmcvdGVzdHN1aXRlLmpzJywgWydnb29nLnRlc3RpbmcudGVzdFN1aXRlJ10sIFsnZ29vZy5sYWJzLnRlc3RpbmcuRW52aXJvbm1lbnQnLCAnZ29vZy50ZXN0aW5nLlRlc3RDYXNlJ10sIHt9KTsKZ29vZy5hZGREZXBlbmRlbmN5KCd0ZXN0aW5nL3Rlc3RzdWl0ZV90ZXN0LmpzJywgWydnb29nLnRlc3RpbmcudGVzdFN1aXRlVGVzdCddLCBbJ2dvb2cudGVzdGluZy5UZXN0Q2FzZScsICdnb29nLnRlc3RpbmcuYXNzZXJ0cycsICdnb29nLnRlc3RpbmcudGVzdFN1aXRlJ10sIHsnbGFuZyc6ICdlczYnLCAnbW9kdWxlJzogJ2dvb2cnfSk7Cmdvb2cuYWRkRGVwZW5kZW5jeSgndGVzdGluZy91aS9yZW5kZXJlcmFzc2VydHMuanMnLCBbJ2dvb2cudGVzdGluZy51aS5yZW5kZXJlcmFzc2VydHMnXSwgWydnb29nLnRlc3RpbmcuYXNzZXJ0cycsICdnb29nLnVpLkNvbnRyb2xSZW5kZXJlciddLCB7fSk7Cmdvb2cuYWRkRGVwZW5kZW5jeSgndGVzdGluZy91aS9yZW5kZXJlcmFzc2VydHNfdGVzdC5qcycsIFsnZ29vZy50ZXN0aW5nLnVpLnJlbmRlcmVyYXNzZXJ0c1Rlc3QnXSwgWydnb29nLnRlc3RpbmcuYXNzZXJ0cycsICdnb29nLnRlc3RpbmcudGVzdFN1aXRlJywgJ2dvb2cudGVzdGluZy51aS5yZW5kZXJlcmFzc2VydHMnLCAnZ29vZy51aS5Db250cm9sUmVuZGVyZXInXSwgeydsYW5nJzogJ2VzNicsICdtb2R1bGUnOiAnZ29vZyd9KTsKZ29vZy5hZGREZXBlbmRlbmN5KCd0ZXN0aW5nL3VpL3JlbmRlcmVyaGFybmVzcy5qcycsIFsnZ29vZy50ZXN0aW5nLnVpLlJlbmRlcmVySGFybmVzcyddLCBbJ2dvb2cuRGlzcG9zYWJsZScsICdnb29nLmRvbS5Ob2RlVHlwZScsICdnb29nLnRlc3RpbmcuYXNzZXJ0cycsICdnb29nLnRlc3RpbmcuZG9tJywgJ2dvb2cudWkuQ29udHJvbCcsICdnb29nLnVpLkNvbnRyb2xSZW5kZXJlciddLCB7fSk7Cmdvb2cuYWRkRGVwZW5kZW5jeSgndGVzdGluZy91aS9zdHlsZS5qcycsIFsnZ29vZy50ZXN0aW5nLnVpLnN0eWxlJ10sIFsnZ29vZy5hcnJheScsICdnb29nLmFzc2VydHMnLCAnZ29vZy5kb20nLCAnZ29vZy5kb20uY2xhc3NsaXN0JywgJ2dvb2cudGVzdGluZy5hc3NlcnRzJ10sIHt9KTsKZ29vZy5hZGREZXBlbmRlbmN5KCd0ZXN0aW5nL3VpL3N0eWxlX3Rlc3QuanMnLCBbJ2dvb2cudGVzdGluZy51aS5zdHlsZVRlc3QnXSwgWydnb29nLmRvbScsICdnb29nLnRlc3RpbmcudGVzdFN1aXRlJywgJ2dvb2cudGVzdGluZy51aS5zdHlsZSddLCB7J2xhbmcnOiAnZXM2JywgJ21vZHVsZSc6ICdnb29nJ30pOwpnb29nLmFkZERlcGVuZGVuY3koJ3RpbWVyL3RpbWVyLmpzJywgWydnb29nLlRpbWVyJ10sIFsnZ29vZy5Qcm9taXNlJywgJ2dvb2cuZXZlbnRzLkV2ZW50VGFyZ2V0J10sIHt9KTsKZ29vZy5hZGREZXBlbmRlbmN5KCd0aW1lci90aW1lcl90ZXN0LmpzJywgWydnb29nLlRpbWVyVGVzdCddLCBbJ2dvb2cuUHJvbWlzZScsICdnb29nLlRpbWVyJywgJ2dvb2cuZXZlbnRzJywgJ2dvb2cudGVzdGluZy5Nb2NrQ2xvY2snLCAnZ29vZy50ZXN0aW5nLnRlc3RTdWl0ZSddLCB7J2xhbmcnOiAnZXM2JywgJ21vZHVsZSc6ICdnb29nJ30pOwpnb29nLmFkZERlcGVuZGVuY3koJ3R3ZWFrL2VudHJpZXMuanMnLCBbJ2dvb2cudHdlYWsuQmFzZUVudHJ5JywgJ2dvb2cudHdlYWsuQmFzZVByaW1pdGl2ZVNldHRpbmcnLCAnZ29vZy50d2Vhay5CYXNlU2V0dGluZycsICdnb29nLnR3ZWFrLkJvb2xlYW5Hcm91cCcsICdnb29nLnR3ZWFrLkJvb2xlYW5Jbkdyb3VwU2V0dGluZycsICdnb29nLnR3ZWFrLkJvb2xlYW5TZXR0aW5nJywgJ2dvb2cudHdlYWsuQnV0dG9uQWN0aW9uJywgJ2dvb2cudHdlYWsuTnVtZXJpY1NldHRpbmcnLCAnZ29vZy50d2Vhay5TdHJpbmdTZXR0aW5nJ10sIFsnZ29vZy5hcnJheScsICdnb29nLmFzc2VydHMnLCAnZ29vZy5sb2cnLCAnZ29vZy5vYmplY3QnXSwge30pOwpnb29nLmFkZERlcGVuZGVuY3koJ3R3ZWFrL2VudHJpZXNfdGVzdC5qcycsIFsnZ29vZy50d2Vhay5CYXNlRW50cnlUZXN0J10sIFsnZ29vZy50ZXN0aW5nLk1vY2tDb250cm9sJywgJ2dvb2cudGVzdGluZy50ZXN0U3VpdGUnLCAnZ29vZy50d2Vhay50ZXN0aGVscGVycyddLCB7J2xhbmcnOiAnZXM2JywgJ21vZHVsZSc6ICdnb29nJ30pOwpnb29nLmFkZERlcGVuZGVuY3koJ3R3ZWFrL3JlZ2lzdHJ5LmpzJywgWydnb29nLnR3ZWFrLlJlZ2lzdHJ5J10sIFsnZ29vZy5hcnJheScsICdnb29nLmFzc2VydHMnLCAnZ29vZy5sb2cnLCAnZ29vZy5zdHJpbmcnLCAnZ29vZy50d2Vhay5CYXNlUHJpbWl0aXZlU2V0dGluZycsICdnb29nLnR3ZWFrLkJhc2VTZXR0aW5nJywgJ2dvb2cudHdlYWsuQm9vbGVhblNldHRpbmcnLCAnZ29vZy50d2Vhay5OdW1lcmljU2V0dGluZycsICdnb29nLnR3ZWFrLlN0cmluZ1NldHRpbmcnLCAnZ29vZy51cmkudXRpbHMnXSwge30pOwpnb29nLmFkZERlcGVuZGVuY3koJ3R3ZWFrL3JlZ2lzdHJ5X3Rlc3QuanMnLCBbJ2dvb2cudHdlYWsuUmVnaXN0cnlUZXN0J10sIFsnZ29vZy5hc3NlcnRzLkFzc2VydGlvbkVycm9yJywgJ2dvb2cudGVzdGluZy50ZXN0U3VpdGUnLCAnZ29vZy50d2VhaycsICdnb29nLnR3ZWFrLnRlc3RoZWxwZXJzJ10sIHsnbGFuZyc6ICdlczYnLCAnbW9kdWxlJzogJ2dvb2cnfSk7Cmdvb2cuYWRkRGVwZW5kZW5jeSgndHdlYWsvdGVzdGhlbHBlcnMuanMnLCBbJ2dvb2cudHdlYWsudGVzdGhlbHBlcnMnXSwgWydnb29nLnR3ZWFrJywgJ2dvb2cudHdlYWsuQm9vbGVhbkdyb3VwJywgJ2dvb2cudHdlYWsuQm9vbGVhbkluR3JvdXBTZXR0aW5nJywgJ2dvb2cudHdlYWsuQm9vbGVhblNldHRpbmcnLCAnZ29vZy50d2Vhay5CdXR0b25BY3Rpb24nLCAnZ29vZy50d2Vhay5OdW1lcmljU2V0dGluZycsICdnb29nLnR3ZWFrLlJlZ2lzdHJ5JywgJ2dvb2cudHdlYWsuU3RyaW5nU2V0dGluZyddLCB7fSk7Cmdvb2cuYWRkRGVwZW5kZW5jeSgndHdlYWsvdHdlYWsuanMnLCBbJ2dvb2cudHdlYWsnLCAnZ29vZy50d2Vhay5Db25maWdQYXJhbXMnXSwgWydnb29nLmFzc2VydHMnLCAnZ29vZy50d2Vhay5CYXNlU2V0dGluZycsICdnb29nLnR3ZWFrLkJvb2xlYW5Hcm91cCcsICdnb29nLnR3ZWFrLkJvb2xlYW5Jbkdyb3VwU2V0dGluZycsICdnb29nLnR3ZWFrLkJvb2xlYW5TZXR0aW5nJywgJ2dvb2cudHdlYWsuQnV0dG9uQWN0aW9uJywgJ2dvb2cudHdlYWsuTnVtZXJpY1NldHRpbmcnLCAnZ29vZy50d2Vhay5SZWdpc3RyeScsICdnb29nLnR3ZWFrLlN0cmluZ1NldHRpbmcnXSwge30pOwpnb29nLmFkZERlcGVuZGVuY3koJ3R3ZWFrL3R3ZWFrdWkuanMnLCBbJ2dvb2cudHdlYWsuRW50cmllc1BhbmVsJywgJ2dvb2cudHdlYWsuVHdlYWtVaSddLCBbJ2dvb2cuYXJyYXknLCAnZ29vZy5hc3NlcnRzJywgJ2dvb2cuZG9tJywgJ2dvb2cuZG9tLlRhZ05hbWUnLCAnZ29vZy5kb20uc2FmZScsICdnb29nLmh0bWwuU2FmZUh0bWwnLCAnZ29vZy5odG1sLlNhZmVTdHlsZVNoZWV0JywgJ2dvb2cub2JqZWN0JywgJ2dvb2cuc3RyaW5nLkNvbnN0JywgJ2dvb2cuc3R5bGUnLCAnZ29vZy50d2VhaycsICdnb29nLnR3ZWFrLkJhc2VFbnRyeScsICdnb29nLnR3ZWFrLkJvb2xlYW5Hcm91cCcsICdnb29nLnR3ZWFrLkJvb2xlYW5Jbkdyb3VwU2V0dGluZycsICdnb29nLnR3ZWFrLkJvb2xlYW5TZXR0aW5nJywgJ2dvb2cudHdlYWsuQnV0dG9uQWN0aW9uJywgJ2dvb2cudHdlYWsuTnVtZXJpY1NldHRpbmcnLCAnZ29vZy50d2Vhay5TdHJpbmdTZXR0aW5nJywgJ2dvb2cudWkuWmlwcHknLCAnZ29vZy51c2VyQWdlbnQnXSwge30pOwpnb29nLmFkZERlcGVuZGVuY3koJ3R3ZWFrL3R3ZWFrdWlfdGVzdC5qcycsIFsnZ29vZy50d2Vhay5Ud2Vha1VpVGVzdCddLCBbJ2dvb2cuZG9tJywgJ2dvb2cuZG9tLlRhZ05hbWUnLCAnZ29vZy5zdHJpbmcnLCAnZ29vZy50ZXN0aW5nLnRlc3RTdWl0ZScsICdnb29nLnR3ZWFrJywgJ2dvb2cudHdlYWsuVHdlYWtVaScsICdnb29nLnR3ZWFrLnRlc3RoZWxwZXJzJ10sIHsnbGFuZyc6ICdlczYnLCAnbW9kdWxlJzogJ2dvb2cnfSk7Cmdvb2cuYWRkRGVwZW5kZW5jeSgndWkvYWJzdHJhY3RzcGVsbGNoZWNrZXIuanMnLCBbJ2dvb2cudWkuQWJzdHJhY3RTcGVsbENoZWNrZXInLCAnZ29vZy51aS5BYnN0cmFjdFNwZWxsQ2hlY2tlci5Bc3luY1Jlc3VsdCddLCBbJ2dvb2cuYTExeS5hcmlhJywgJ2dvb2cuYXJyYXknLCAnZ29vZy5hc3NlcnRzJywgJ2dvb2cuZG9tJywgJ2dvb2cuZG9tLklucHV0VHlwZScsICdnb29nLmRvbS5Ob2RlVHlwZScsICdnb29nLmRvbS5UYWdOYW1lJywgJ2dvb2cuZG9tLmNsYXNzbGlzdCcsICdnb29nLmRvbS5zZWxlY3Rpb24nLCAnZ29vZy5ldmVudHMnLCAnZ29vZy5ldmVudHMuRXZlbnQnLCAnZ29vZy5ldmVudHMuRXZlbnRUeXBlJywgJ2dvb2cubWF0aC5Db29yZGluYXRlJywgJ2dvb2cuc3BlbGwuU3BlbGxDaGVjaycsICdnb29nLnN0cnVjdHMuU2V0JywgJ2dvb2cuc3R5bGUnLCAnZ29vZy51aS5Db21wb25lbnQnLCAnZ29vZy51aS5NZW51SXRlbScsICdnb29nLnVpLk1lbnVTZXBhcmF0b3InLCAnZ29vZy51aS5Qb3B1cE1lbnUnXSwge30pOwpnb29nLmFkZERlcGVuZGVuY3koJ3VpL2FjL2FjLmpzJywgWydnb29nLnVpLmFjJ10sIFsnZ29vZy51aS5hYy5BcnJheU1hdGNoZXInLCAnZ29vZy51aS5hYy5BdXRvQ29tcGxldGUnLCAnZ29vZy51aS5hYy5JbnB1dEhhbmRsZXInLCAnZ29vZy51aS5hYy5SZW5kZXJlciddLCB7fSk7Cmdvb2cuYWRkRGVwZW5kZW5jeSgndWkvYWMvYWNfdGVzdC5qcycsIFsnZ29vZy51aS5hY1Rlc3QnXSwgWydnb29nLmFzc2VydHMnLCAnZ29vZy5kb20nLCAnZ29vZy5kb20uTm9kZVR5cGUnLCAnZ29vZy5kb20uY2xhc3NsaXN0JywgJ2dvb2cuZG9tLnNlbGVjdGlvbicsICdnb29nLmV2ZW50cycsICdnb29nLmV2ZW50cy5Ccm93c2VyRXZlbnQnLCAnZ29vZy5ldmVudHMuRXZlbnQnLCAnZ29vZy5ldmVudHMuRXZlbnRUeXBlJywgJ2dvb2cuZXZlbnRzLktleUNvZGVzJywgJ2dvb2cuc3R5bGUnLCAnZ29vZy50ZXN0aW5nLk1vY2tDbG9jaycsICdnb29nLnRlc3RpbmcuZXZlbnRzJywgJ2dvb2cudGVzdGluZy50ZXN0U3VpdGUnLCAnZ29vZy51aS5hYycsICdnb29nLnVzZXJBZ2VudCddLCB7J2xhbmcnOiAnZXM2JywgJ21vZHVsZSc6ICdnb29nJ30pOwpnb29nLmFkZERlcGVuZGVuY3koJ3VpL2FjL2FycmF5bWF0Y2hlci5qcycsIFsnZ29vZy51aS5hYy5BcnJheU1hdGNoZXInXSwgWydnb29nLnN0cmluZyddLCB7fSk7Cmdvb2cuYWRkRGVwZW5kZW5jeSgndWkvYWMvYXJyYXltYXRjaGVyX3Rlc3QuanMnLCBbJ2dvb2cudWkuYWMuQXJyYXlNYXRjaGVyVGVzdCddLCBbJ2dvb2cudGVzdGluZy50ZXN0U3VpdGUnLCAnZ29vZy51aS5hYy5BcnJheU1hdGNoZXInXSwgeydsYW5nJzogJ2VzNicsICdtb2R1bGUnOiAnZ29vZyd9KTsKZ29vZy5hZGREZXBlbmRlbmN5KCd1aS9hYy9hdXRvY29tcGxldGUuanMnLCBbJ2dvb2cudWkuYWMuQXV0b0NvbXBsZXRlJywgJ2dvb2cudWkuYWMuQXV0b0NvbXBsZXRlLkV2ZW50VHlwZSddLCBbJ2dvb2cuYXJyYXknLCAnZ29vZy5hc3NlcnRzJywgJ2dvb2cuZXZlbnRzJywgJ2dvb2cuZXZlbnRzLkV2ZW50VGFyZ2V0JywgJ2dvb2cub2JqZWN0JywgJ2dvb2cudWkuYWMuUmVuZGVyT3B0aW9ucyddLCB7fSk7Cmdvb2cuYWRkRGVwZW5kZW5jeSgndWkvYWMvYXV0b2NvbXBsZXRlX3Rlc3QuanMnLCBbJ2dvb2cudWkuYWMuQXV0b0NvbXBsZXRlVGVzdCddLCBbJ2dvb2cuYTExeS5hcmlhJywgJ2dvb2cuYTExeS5hcmlhLlJvbGUnLCAnZ29vZy5kb20nLCAnZ29vZy5kb20uSW5wdXRUeXBlJywgJ2dvb2cuZG9tLlRhZ05hbWUnLCAnZ29vZy5ldmVudHMuRXZlbnRIYW5kbGVyJywgJ2dvb2cuZXZlbnRzLkV2ZW50VGFyZ2V0JywgJ2dvb2cuc3RyaW5nJywgJ2dvb2cudGVzdGluZy5Nb2NrQ29udHJvbCcsICdnb29nLnRlc3RpbmcuZXZlbnRzJywgJ2dvb2cudGVzdGluZy5tb2NrbWF0Y2hlcnMnLCAnZ29vZy50ZXN0aW5nLnRlc3RTdWl0ZScsICdnb29nLnVpLmFjLkF1dG9Db21wbGV0ZScsICdnb29nLnVpLmFjLklucHV0SGFuZGxlcicsICdnb29nLnVpLmFjLlJlbmRlck9wdGlvbnMnLCAnZ29vZy51aS5hYy5SZW5kZXJlciddLCB7J2xhbmcnOiAnZXM2JywgJ21vZHVsZSc6ICdnb29nJ30pOwpnb29nLmFkZERlcGVuZGVuY3koJ3VpL2FjL2NhY2hpbmdtYXRjaGVyLmpzJywgWydnb29nLnVpLmFjLkNhY2hpbmdNYXRjaGVyJ10sIFsnZ29vZy5hcnJheScsICdnb29nLmFzeW5jLlRocm90dGxlJywgJ2dvb2cudWkuYWMuQXJyYXlNYXRjaGVyJywgJ2dvb2cudWkuYWMuUmVuZGVyT3B0aW9ucyddLCB7fSk7Cmdvb2cuYWRkRGVwZW5kZW5jeSgndWkvYWMvY2FjaGluZ21hdGNoZXJfdGVzdC5qcycsIFsnZ29vZy51aS5hYy5DYWNoaW5nTWF0Y2hlclRlc3QnXSwgWydnb29nLnRlc3RpbmcuTW9ja0NvbnRyb2wnLCAnZ29vZy50ZXN0aW5nLm1vY2ttYXRjaGVycycsICdnb29nLnRlc3RpbmcudGVzdFN1aXRlJywgJ2dvb2cudWkuYWMuQ2FjaGluZ01hdGNoZXInXSwgeydsYW5nJzogJ2VzNicsICdtb2R1bGUnOiAnZ29vZyd9KTsKZ29vZy5hZGREZXBlbmRlbmN5KCd1aS9hYy9pbnB1dGhhbmRsZXIuanMnLCBbJ2dvb2cudWkuYWMuSW5wdXRIYW5kbGVyJ10sIFsnZ29vZy5EaXNwb3NhYmxlJywgJ2dvb2cuVGltZXInLCAnZ29vZy5hMTF5LmFyaWEnLCAnZ29vZy5hMTF5LmFyaWEuUm9sZScsICdnb29nLmExMXkuYXJpYS5TdGF0ZScsICdnb29nLmRvbScsICdnb29nLmRvbS5zZWxlY3Rpb24nLCAnZ29vZy5ldmVudHMuRXZlbnRIYW5kbGVyJywgJ2dvb2cuZXZlbnRzLkV2ZW50VHlwZScsICdnb29nLmV2ZW50cy5LZXlDb2RlcycsICdnb29nLmV2ZW50cy5LZXlIYW5kbGVyJywgJ2dvb2cuc3RyaW5nJywgJ2dvb2cudXNlckFnZW50JywgJ2dvb2cudXNlckFnZW50LnByb2R1Y3QnXSwge30pOwpnb29nLmFkZERlcGVuZGVuY3koJ3VpL2FjL2lucHV0aGFuZGxlcl90ZXN0LmpzJywgWydnb29nLnVpLmFjLklucHV0SGFuZGxlclRlc3QnXSwgWydnb29nLmExMXkuYXJpYScsICdnb29nLmExMXkuYXJpYS5Sb2xlJywgJ2dvb2cuYTExeS5hcmlhLlN0YXRlJywgJ2dvb2cuZG9tJywgJ2dvb2cuZG9tLlRhZ05hbWUnLCAnZ29vZy5kb20uc2VsZWN0aW9uJywgJ2dvb2cuZXZlbnRzLkJyb3dzZXJFdmVudCcsICdnb29nLmV2ZW50cy5FdmVudCcsICdnb29nLmV2ZW50cy5FdmVudFRhcmdldCcsICdnb29nLmV2ZW50cy5LZXlDb2RlcycsICdnb29nLmV2ZW50cy5LZXlIYW5kbGVyJywgJ2dvb2cuZnVuY3Rpb25zJywgJ2dvb2cub2JqZWN0JywgJ2dvb2cudGVzdGluZy5Nb2NrQ2xvY2snLCAnZ29vZy50ZXN0aW5nLnRlc3RTdWl0ZScsICdnb29nLnVpLmFjLklucHV0SGFuZGxlcicsICdnb29nLnVzZXJBZ2VudCddLCB7J2xhbmcnOiAnZXM2JywgJ21vZHVsZSc6ICdnb29nJ30pOwpnb29nLmFkZERlcGVuZGVuY3koJ3VpL2FjL3JlbW90ZS5qcycsIFsnZ29vZy51aS5hYy5SZW1vdGUnXSwgWydnb29nLnVpLmFjLkF1dG9Db21wbGV0ZScsICdnb29nLnVpLmFjLklucHV0SGFuZGxlcicsICdnb29nLnVpLmFjLlJlbW90ZUFycmF5TWF0Y2hlcicsICdnb29nLnVpLmFjLlJlbmRlcmVyJ10sIHt9KTsKZ29vZy5hZGREZXBlbmRlbmN5KCd1aS9hYy9yZW1vdGVhcnJheW1hdGNoZXIuanMnLCBbJ2dvb2cudWkuYWMuUmVtb3RlQXJyYXlNYXRjaGVyJ10sIFsnZ29vZy5EaXNwb3NhYmxlJywgJ2dvb2cuVXJpJywgJ2dvb2cuZXZlbnRzJywgJ2dvb2cubmV0LkV2ZW50VHlwZScsICdnb29nLm5ldC5YaHJJbyddLCB7fSk7Cmdvb2cuYWRkRGVwZW5kZW5jeSgndWkvYWMvcmVtb3RlYXJyYXltYXRjaGVyX3Rlc3QuanMnLCBbJ2dvb2cudWkuYWMuUmVtb3RlQXJyYXlNYXRjaGVyVGVzdCddLCBbJ2dvb2cubmV0LlhocklvJywgJ2dvb2cudGVzdGluZy5Nb2NrQ29udHJvbCcsICdnb29nLnRlc3RpbmcubmV0LlhocklvJywgJ2dvb2cudGVzdGluZy50ZXN0U3VpdGUnLCAnZ29vZy51aS5hYy5SZW1vdGVBcnJheU1hdGNoZXInXSwgeydsYW5nJzogJ2VzNicsICdtb2R1bGUnOiAnZ29vZyd9KTsKZ29vZy5hZGREZXBlbmRlbmN5KCd1aS9hYy9yZW5kZXJlci5qcycsIFsnZ29vZy51aS5hYy5SZW5kZXJlcicsICdnb29nLnVpLmFjLlJlbmRlcmVyLkN1c3RvbVJlbmRlcmVyJ10sIFsnZ29vZy5hMTF5LmFyaWEnLCAnZ29vZy5hMTF5LmFyaWEuUm9sZScsICdnb29nLmExMXkuYXJpYS5TdGF0ZScsICdnb29nLmFycmF5JywgJ2dvb2cuYXNzZXJ0cycsICdnb29nLmRpc3Bvc2UnLCAnZ29vZy5kb20nLCAnZ29vZy5kb20uTm9kZVR5cGUnLCAnZ29vZy5kb20uVGFnTmFtZScsICdnb29nLmRvbS5jbGFzc2xpc3QnLCAnZ29vZy5ldmVudHMnLCAnZ29vZy5ldmVudHMuRXZlbnRUYXJnZXQnLCAnZ29vZy5ldmVudHMuRXZlbnRUeXBlJywgJ2dvb2cuZnguZG9tLkZhZGVJbkFuZFNob3cnLCAnZ29vZy5meC5kb20uRmFkZU91dEFuZEhpZGUnLCAnZ29vZy5wb3NpdGlvbmluZycsICdnb29nLnBvc2l0aW9uaW5nLkNvcm5lcicsICdnb29nLnBvc2l0aW9uaW5nLk92ZXJmbG93JywgJ2dvb2cuc3RyaW5nJywgJ2dvb2cuc3R5bGUnLCAnZ29vZy51aS5JZEdlbmVyYXRvcicsICdnb29nLnVpLmFjLkF1dG9Db21wbGV0ZSddLCB7J2xhbmcnOiAnZXM2J30pOwpnb29nLmFkZERlcGVuZGVuY3koJ3VpL2FjL3JlbmRlcmVyX3Rlc3QuanMnLCBbJ2dvb2cudWkuYWMuUmVuZGVyZXJUZXN0J10sIFsnZ29vZy5hMTF5LmFyaWEnLCAnZ29vZy5hMTF5LmFyaWEuU3RhdGUnLCAnZ29vZy5kb20nLCAnZ29vZy5kb20uVGFnTmFtZScsICdnb29nLmRvbS5jbGFzc2xpc3QnLCAnZ29vZy5ldmVudHMnLCAnZ29vZy5meC5kb20uRmFkZUluQW5kU2hvdycsICdnb29nLmZ4LmRvbS5GYWRlT3V0QW5kSGlkZScsICdnb29nLnN0cmluZycsICdnb29nLnN0eWxlJywgJ2dvb2cudGVzdGluZy5Qcm9wZXJ0eVJlcGxhY2VyJywgJ2dvb2cudGVzdGluZy50ZXN0U3VpdGUnLCAnZ29vZy51aS5hYy5BdXRvQ29tcGxldGUnLCAnZ29vZy51aS5hYy5SZW5kZXJlciddLCB7J2xhbmcnOiAnZXM2JywgJ21vZHVsZSc6ICdnb29nJ30pOwpnb29nLmFkZERlcGVuZGVuY3koJ3VpL2FjL3JlbmRlcm9wdGlvbnMuanMnLCBbJ2dvb2cudWkuYWMuUmVuZGVyT3B0aW9ucyddLCBbXSwge30pOwpnb29nLmFkZERlcGVuZGVuY3koJ3VpL2FjL3JpY2hpbnB1dGhhbmRsZXIuanMnLCBbJ2dvb2cudWkuYWMuUmljaElucHV0SGFuZGxlciddLCBbJ2dvb2cudWkuYWMuSW5wdXRIYW5kbGVyJ10sIHt9KTsKZ29vZy5hZGREZXBlbmRlbmN5KCd1aS9hYy9yaWNocmVtb3RlLmpzJywgWydnb29nLnVpLmFjLlJpY2hSZW1vdGUnXSwgWydnb29nLnVpLmFjLkF1dG9Db21wbGV0ZScsICdnb29nLnVpLmFjLlJlbW90ZScsICdnb29nLnVpLmFjLlJlbmRlcmVyJywgJ2dvb2cudWkuYWMuUmljaElucHV0SGFuZGxlcicsICdnb29nLnVpLmFjLlJpY2hSZW1vdGVBcnJheU1hdGNoZXInXSwge30pOwpnb29nLmFkZERlcGVuZGVuY3koJ3VpL2FjL3JpY2hyZW1vdGVhcnJheW1hdGNoZXIuanMnLCBbJ2dvb2cudWkuYWMuUmljaFJlbW90ZUFycmF5TWF0Y2hlciddLCBbJ2dvb2cuZG9tJywgJ2dvb2cudWkuYWMuUmVtb3RlQXJyYXlNYXRjaGVyJ10sIHt9KTsKZ29vZy5hZGREZXBlbmRlbmN5KCd1aS9hYy9yaWNocmVtb3RlYXJyYXltYXRjaGVyX3Rlc3QuanMnLCBbJ2dvb2cudWkuYWMuUmljaFJlbW90ZUFycmF5TWF0Y2hlclRlc3QnXSwgWydnb29nLm5ldC5YaHJJbycsICdnb29nLnRlc3RpbmcuTW9ja0NvbnRyb2wnLCAnZ29vZy50ZXN0aW5nLm5ldC5YaHJJbycsICdnb29nLnRlc3RpbmcudGVzdFN1aXRlJywgJ2dvb2cudWkuYWMuUmljaFJlbW90ZUFycmF5TWF0Y2hlciddLCB7J2xhbmcnOiAnZXM2JywgJ21vZHVsZSc6ICdnb29nJ30pOwpnb29nLmFkZERlcGVuZGVuY3koJ3VpL2FjdGl2aXR5bW9uaXRvci5qcycsIFsnZ29vZy51aS5BY3Rpdml0eU1vbml0b3InXSwgWydnb29nLmFycmF5JywgJ2dvb2cuYXNzZXJ0cycsICdnb29nLmRvbScsICdnb29nLmV2ZW50cy5FdmVudEhhbmRsZXInLCAnZ29vZy5ldmVudHMuRXZlbnRUYXJnZXQnLCAnZ29vZy5ldmVudHMuRXZlbnRUeXBlJ10sIHt9KTsKZ29vZy5hZGREZXBlbmRlbmN5KCd1aS9hY3Rpdml0eW1vbml0b3JfdGVzdC5qcycsIFsnZ29vZy51aS5BY3Rpdml0eU1vbml0b3JUZXN0J10sIFsnZ29vZy5kb20nLCAnZ29vZy5ldmVudHMnLCAnZ29vZy5ldmVudHMuRXZlbnQnLCAnZ29vZy5ldmVudHMuRXZlbnRUeXBlJywgJ2dvb2cudGVzdGluZy5Nb2NrQ2xvY2snLCAnZ29vZy50ZXN0aW5nLlByb3BlcnR5UmVwbGFjZXInLCAnZ29vZy50ZXN0aW5nLmV2ZW50cycsICdnb29nLnRlc3RpbmcucmVjb3JkRnVuY3Rpb24nLCAnZ29vZy50ZXN0aW5nLnRlc3RTdWl0ZScsICdnb29nLnVpLkFjdGl2aXR5TW9uaXRvciddLCB7J2xhbmcnOiAnZXM2JywgJ21vZHVsZSc6ICdnb29nJ30pOwpnb29nLmFkZERlcGVuZGVuY3koJ3VpL2FkdmFuY2VkdG9vbHRpcC5qcycsIFsnZ29vZy51aS5BZHZhbmNlZFRvb2x0aXAnXSwgWydnb29nLmV2ZW50cycsICdnb29nLmV2ZW50cy5FdmVudFR5cGUnLCAnZ29vZy5tYXRoLkJveCcsICdnb29nLm1hdGguQ29vcmRpbmF0ZScsICdnb29nLnN0eWxlJywgJ2dvb2cudWkuVG9vbHRpcCcsICdnb29nLnVzZXJBZ2VudCddLCB7fSk7Cmdvb2cuYWRkRGVwZW5kZW5jeSgndWkvYWR2YW5jZWR0b29sdGlwX3Rlc3QuanMnLCBbJ2dvb2cudWkuQWR2YW5jZWRUb29sdGlwVGVzdCddLCBbJ2dvb2cuZG9tJywgJ2dvb2cuZG9tLlRhZ05hbWUnLCAnZ29vZy5ldmVudHMuRXZlbnQnLCAnZ29vZy5ldmVudHMuRXZlbnRUeXBlJywgJ2dvb2cubWF0aC5Cb3gnLCAnZ29vZy5tYXRoLkNvb3JkaW5hdGUnLCAnZ29vZy5zdHlsZScsICdnb29nLnRlc3RpbmcuTW9ja0Nsb2NrJywgJ2dvb2cudGVzdGluZy5ldmVudHMnLCAnZ29vZy50ZXN0aW5nLnRlc3RTdWl0ZScsICdnb29nLnVpLkFkdmFuY2VkVG9vbHRpcCcsICdnb29nLnVpLlRvb2x0aXAnLCAnZ29vZy51c2VyQWdlbnQnXSwgeydsYW5nJzogJ2VzNicsICdtb2R1bGUnOiAnZ29vZyd9KTsKZ29vZy5hZGREZXBlbmRlbmN5KCd1aS9hbmltYXRlZHppcHB5LmpzJywgWydnb29nLnVpLkFuaW1hdGVkWmlwcHknXSwgWydnb29nLmExMXkuYXJpYS5Sb2xlJywgJ2dvb2cuZG9tJywgJ2dvb2cuZG9tLlRhZ05hbWUnLCAnZ29vZy5ldmVudHMnLCAnZ29vZy5meC5BbmltYXRpb24nLCAnZ29vZy5meC5UcmFuc2l0aW9uJywgJ2dvb2cuZnguZWFzaW5nJywgJ2dvb2cudWkuWmlwcHknLCAnZ29vZy51aS5aaXBweUV2ZW50J10sIHt9KTsKZ29vZy5hZGREZXBlbmRlbmN5KCd1aS9hbmltYXRlZHppcHB5X3Rlc3QuanMnLCBbJ2dvb2cudWkuQW5pbWF0ZWRaaXBweVRlc3QnXSwgWydnb29nLmExMXkuYXJpYScsICdnb29nLmExMXkuYXJpYS5Sb2xlJywgJ2dvb2cuYTExeS5hcmlhLlN0YXRlJywgJ2dvb2cuYXNzZXJ0cycsICdnb29nLmRvbScsICdnb29nLmV2ZW50cycsICdnb29nLmZ1bmN0aW9ucycsICdnb29nLmZ4LkFuaW1hdGlvbicsICdnb29nLmZ4LlRyYW5zaXRpb24nLCAnZ29vZy50ZXN0aW5nLlByb3BlcnR5UmVwbGFjZXInLCAnZ29vZy50ZXN0aW5nLmFzc2VydHMnLCAnZ29vZy50ZXN0aW5nLnRlc3RTdWl0ZScsICdnb29nLnVpLkFuaW1hdGVkWmlwcHknLCAnZ29vZy51aS5aaXBweSddLCB7J2xhbmcnOiAnZXM2JywgJ21vZHVsZSc6ICdnb29nJ30pOwpnb29nLmFkZERlcGVuZGVuY3koJ3VpL2F0dGFjaGFibGVtZW51LmpzJywgWydnb29nLnVpLkF0dGFjaGFibGVNZW51J10sIFsnZ29vZy5hMTF5LmFyaWEnLCAnZ29vZy5hMTF5LmFyaWEuU3RhdGUnLCAnZ29vZy5hcnJheScsICdnb29nLmFzc2VydHMnLCAnZ29vZy5kb20nLCAnZ29vZy5kb20uY2xhc3NsaXN0JywgJ2dvb2cuZXZlbnRzLkV2ZW50JywgJ2dvb2cuZXZlbnRzLktleUNvZGVzJywgJ2dvb2cuc3RyaW5nJywgJ2dvb2cuc3R5bGUnLCAnZ29vZy51aS5JdGVtRXZlbnQnLCAnZ29vZy51aS5NZW51QmFzZScsICdnb29nLnVpLlBvcHVwQmFzZScsICdnb29nLnVzZXJBZ2VudCddLCB7fSk7Cmdvb2cuYWRkRGVwZW5kZW5jeSgndWkvYmlkaWlucHV0LmpzJywgWydnb29nLnVpLkJpZGlJbnB1dCddLCBbJ2dvb2cuZG9tJywgJ2dvb2cuZG9tLklucHV0VHlwZScsICdnb29nLmRvbS5UYWdOYW1lJywgJ2dvb2cuZXZlbnRzJywgJ2dvb2cuZXZlbnRzLklucHV0SGFuZGxlcicsICdnb29nLmkxOG4uYmlkaScsICdnb29nLnVpLkNvbXBvbmVudCddLCB7fSk7Cmdvb2cuYWRkRGVwZW5kZW5jeSgndWkvYmlkaWlucHV0X3Rlc3QuanMnLCBbJ2dvb2cudWkuQmlkaUlucHV0VGVzdCddLCBbJ2dvb2cuZG9tJywgJ2dvb2cudGVzdGluZy50ZXN0U3VpdGUnLCAnZ29vZy51aS5CaWRpSW5wdXQnXSwgeydsYW5nJzogJ2VzNicsICdtb2R1bGUnOiAnZ29vZyd9KTsKZ29vZy5hZGREZXBlbmRlbmN5KCd1aS9idWJibGUuanMnLCBbJ2dvb2cudWkuQnViYmxlJ10sIFsnZ29vZy5UaW1lcicsICdnb29nLmRvbS5zYWZlJywgJ2dvb2cuZXZlbnRzJywgJ2dvb2cuZXZlbnRzLkV2ZW50VHlwZScsICdnb29nLmh0bWwuU2FmZUh0bWwnLCAnZ29vZy5tYXRoLkJveCcsICdnb29nLnBvc2l0aW9uaW5nJywgJ2dvb2cucG9zaXRpb25pbmcuQWJzb2x1dGVQb3NpdGlvbicsICdnb29nLnBvc2l0aW9uaW5nLkFuY2hvcmVkUG9zaXRpb24nLCAnZ29vZy5wb3NpdGlvbmluZy5Db3JuZXInLCAnZ29vZy5wb3NpdGlvbmluZy5Db3JuZXJCaXQnLCAnZ29vZy5zdHJpbmcuQ29uc3QnLCAnZ29vZy5zdHlsZScsICdnb29nLnVpLkNvbXBvbmVudCcsICdnb29nLnVpLlBvcHVwJ10sIHt9KTsKZ29vZy5hZGREZXBlbmRlbmN5KCd1aS9idXR0b24uanMnLCBbJ2dvb2cudWkuQnV0dG9uJywgJ2dvb2cudWkuQnV0dG9uLlNpZGUnXSwgWydnb29nLmV2ZW50cy5FdmVudFR5cGUnLCAnZ29vZy5ldmVudHMuS2V5Q29kZXMnLCAnZ29vZy5ldmVudHMuS2V5SGFuZGxlcicsICdnb29nLnVpLkJ1dHRvblJlbmRlcmVyJywgJ2dvb2cudWkuQnV0dG9uU2lkZScsICdnb29nLnVpLkNvbXBvbmVudCcsICdnb29nLnVpLkNvbnRyb2wnLCAnZ29vZy51aS5OYXRpdmVCdXR0b25SZW5kZXJlcicsICdnb29nLnVpLnJlZ2lzdHJ5J10sIHt9KTsKZ29vZy5hZGREZXBlbmRlbmN5KCd1aS9idXR0b25fdGVzdC5qcycsIFsnZ29vZy51aS5CdXR0b25UZXN0J10sIFsnZ29vZy5kb20nLCAnZ29vZy5kb20uY2xhc3NsaXN0JywgJ2dvb2cuZXZlbnRzJywgJ2dvb2cuZXZlbnRzLkV2ZW50JywgJ2dvb2cuZXZlbnRzLkV2ZW50VHlwZScsICdnb29nLmV2ZW50cy5LZXlDb2RlcycsICdnb29nLmV2ZW50cy5LZXlIYW5kbGVyJywgJ2dvb2cudGVzdGluZy5ldmVudHMnLCAnZ29vZy50ZXN0aW5nLnRlc3RTdWl0ZScsICdnb29nLnVpLkJ1dHRvbicsICdnb29nLnVpLkJ1dHRvblJlbmRlcmVyJywgJ2dvb2cudWkuQnV0dG9uU2lkZScsICdnb29nLnVpLkNvbXBvbmVudCcsICdnb29nLnVpLk5hdGl2ZUJ1dHRvblJlbmRlcmVyJ10sIHsnbGFuZyc6ICdlczYnLCAnbW9kdWxlJzogJ2dvb2cnfSk7Cmdvb2cuYWRkRGVwZW5kZW5jeSgndWkvYnV0dG9ucmVuZGVyZXIuanMnLCBbJ2dvb2cudWkuQnV0dG9uUmVuZGVyZXInXSwgWydnb29nLmExMXkuYXJpYScsICdnb29nLmExMXkuYXJpYS5Sb2xlJywgJ2dvb2cuYTExeS5hcmlhLlN0YXRlJywgJ2dvb2cuYXNzZXJ0cycsICdnb29nLnVpLkJ1dHRvblNpZGUnLCAnZ29vZy51aS5Db21wb25lbnQnLCAnZ29vZy51aS5Db250cm9sUmVuZGVyZXInXSwge30pOwpnb29nLmFkZERlcGVuZGVuY3koJ3VpL2J1dHRvbnJlbmRlcmVyX3Rlc3QuanMnLCBbJ2dvb2cudWkuQnV0dG9uUmVuZGVyZXJUZXN0J10sIFsnZ29vZy5hMTF5LmFyaWEnLCAnZ29vZy5hMTF5LmFyaWEuUm9sZScsICdnb29nLmExMXkuYXJpYS5TdGF0ZScsICdnb29nLmRvbScsICdnb29nLmRvbS5UYWdOYW1lJywgJ2dvb2cuZG9tLmNsYXNzbGlzdCcsICdnb29nLnRlc3RpbmcuRXhwZWN0ZWRGYWlsdXJlcycsICdnb29nLnRlc3RpbmcudGVzdFN1aXRlJywgJ2dvb2cudGVzdGluZy51aS5yZW5kZXJlcmFzc2VydHMnLCAnZ29vZy51aS5CdXR0b24nLCAnZ29vZy51aS5CdXR0b25SZW5kZXJlcicsICdnb29nLnVpLkJ1dHRvblNpZGUnLCAnZ29vZy51aS5Db21wb25lbnQnLCAnZ29vZy51aS5Db250cm9sUmVuZGVyZXInXSwgeydsYW5nJzogJ2VzNicsICdtb2R1bGUnOiAnZ29vZyd9KTsKZ29vZy5hZGREZXBlbmRlbmN5KCd1aS9idXR0b25zaWRlLmpzJywgWydnb29nLnVpLkJ1dHRvblNpZGUnXSwgW10sIHt9KTsKZ29vZy5hZGREZXBlbmRlbmN5KCd1aS9jaGFyY291bnRlci5qcycsIFsnZ29vZy51aS5DaGFyQ291bnRlcicsICdnb29nLnVpLkNoYXJDb3VudGVyLkRpc3BsYXknXSwgWydnb29nLmRvbScsICdnb29nLmV2ZW50cycsICdnb29nLmV2ZW50cy5FdmVudFRhcmdldCcsICdnb29nLmV2ZW50cy5JbnB1dEhhbmRsZXInXSwge30pOwpnb29nLmFkZERlcGVuZGVuY3koJ3VpL2NoYXJjb3VudGVyX3Rlc3QuanMnLCBbJ2dvb2cudWkuQ2hhckNvdW50ZXJUZXN0J10sIFsnZ29vZy5kb20nLCAnZ29vZy50ZXN0aW5nLmFzc2VydHMnLCAnZ29vZy50ZXN0aW5nLnRlc3RTdWl0ZScsICdnb29nLnVpLkNoYXJDb3VudGVyJywgJ2dvb2cudXNlckFnZW50J10sIHsnbGFuZyc6ICdlczYnLCAnbW9kdWxlJzogJ2dvb2cnfSk7Cmdvb2cuYWRkRGVwZW5kZW5jeSgndWkvY2hhcnBpY2tlci5qcycsIFsnZ29vZy51aS5DaGFyUGlja2VyJ10sIFsnZ29vZy5hMTF5LmFyaWEnLCAnZ29vZy5hMTF5LmFyaWEuU3RhdGUnLCAnZ29vZy5hcnJheScsICdnb29nLmFzc2VydHMnLCAnZ29vZy5kb20nLCAnZ29vZy5kb20uVGFnTmFtZScsICdnb29nLmRvbS5jbGFzc2xpc3QnLCAnZ29vZy5ldmVudHMnLCAnZ29vZy5ldmVudHMuRXZlbnQnLCAnZ29vZy5ldmVudHMuRXZlbnRIYW5kbGVyJywgJ2dvb2cuZXZlbnRzLkV2ZW50VHlwZScsICdnb29nLmV2ZW50cy5JbnB1dEhhbmRsZXInLCAnZ29vZy5ldmVudHMuS2V5Q29kZXMnLCAnZ29vZy5ldmVudHMuS2V5SGFuZGxlcicsICdnb29nLmkxOG4uQ2hhckxpc3REZWNvbXByZXNzb3InLCAnZ29vZy5pMThuLkNoYXJQaWNrZXJEYXRhJywgJ2dvb2cuaTE4bi51Q2hhcicsICdnb29nLmkxOG4udUNoYXIuTmFtZUZldGNoZXInLCAnZ29vZy5zdHJ1Y3RzLlNldCcsICdnb29nLnN0eWxlJywgJ2dvb2cudWkuQnV0dG9uJywgJ2dvb2cudWkuQ29tcG9uZW50JywgJ2dvb2cudWkuQ29udGFpbmVyU2Nyb2xsZXInLCAnZ29vZy51aS5GbGF0QnV0dG9uUmVuZGVyZXInLCAnZ29vZy51aS5Ib3ZlckNhcmQnLCAnZ29vZy51aS5MYWJlbElucHV0JywgJ2dvb2cudWkuTWVudScsICdnb29nLnVpLk1lbnVCdXR0b24nLCAnZ29vZy51aS5NZW51SXRlbScsICdnb29nLnVpLlRvb2x0aXAnXSwge30pOwpnb29nLmFkZERlcGVuZGVuY3koJ3VpL2NoYXJwaWNrZXJfdGVzdC5qcycsIFsnZ29vZy51aS5DaGFyUGlja2VyVGVzdCddLCBbJ2dvb2cuYTExeS5hcmlhJywgJ2dvb2cuYTExeS5hcmlhLlN0YXRlJywgJ2dvb2cuZGlzcG9zZScsICdnb29nLmRvbScsICdnb29nLmV2ZW50cy5FdmVudCcsICdnb29nLmV2ZW50cy5FdmVudFR5cGUnLCAnZ29vZy5pMThuLkNoYXJQaWNrZXJEYXRhJywgJ2dvb2cuaTE4bi51Q2hhci5OYW1lRmV0Y2hlcicsICdnb29nLnRlc3RpbmcuTW9ja0NvbnRyb2wnLCAnZ29vZy50ZXN0aW5nLmV2ZW50cycsICdnb29nLnRlc3RpbmcubW9ja21hdGNoZXJzJywgJ2dvb2cudGVzdGluZy50ZXN0U3VpdGUnLCAnZ29vZy51aS5DaGFyUGlja2VyJywgJ2dvb2cudWkuRmxhdEJ1dHRvblJlbmRlcmVyJ10sIHsnbGFuZyc6ICdlczYnLCAnbW9kdWxlJzogJ2dvb2cnfSk7Cmdvb2cuYWRkRGVwZW5kZW5jeSgndWkvY2hlY2tib3guanMnLCBbJ2dvb2cudWkuQ2hlY2tib3gnLCAnZ29vZy51aS5DaGVja2JveC5TdGF0ZSddLCBbJ2dvb2cuYTExeS5hcmlhJywgJ2dvb2cuYTExeS5hcmlhLlN0YXRlJywgJ2dvb2cuZXZlbnRzLkV2ZW50VHlwZScsICdnb29nLmV2ZW50cy5LZXlDb2RlcycsICdnb29nLnN0cmluZycsICdnb29nLnVpLkNoZWNrYm94UmVuZGVyZXInLCAnZ29vZy51aS5Db21wb25lbnQnLCAnZ29vZy51aS5Db250cm9sJywgJ2dvb2cudWkucmVnaXN0cnknXSwge30pOwpnb29nLmFkZERlcGVuZGVuY3koJ3VpL2NoZWNrYm94X3Rlc3QuanMnLCBbJ2dvb2cudWkuQ2hlY2tib3hUZXN0J10sIFsnZ29vZy5hMTF5LmFyaWEnLCAnZ29vZy5hMTF5LmFyaWEuUm9sZScsICdnb29nLmExMXkuYXJpYS5TdGF0ZScsICdnb29nLmRvbScsICdnb29nLmRvbS5UYWdOYW1lJywgJ2dvb2cuZG9tLmNsYXNzbGlzdCcsICdnb29nLmV2ZW50cycsICdnb29nLmV2ZW50cy5LZXlDb2RlcycsICdnb29nLnRlc3RpbmcuZXZlbnRzJywgJ2dvb2cudGVzdGluZy50ZXN0U3VpdGUnLCAnZ29vZy51aS5DaGVja2JveCcsICdnb29nLnVpLkNoZWNrYm94UmVuZGVyZXInLCAnZ29vZy51aS5Db21wb25lbnQnLCAnZ29vZy51aS5Db250cm9sUmVuZGVyZXInLCAnZ29vZy51aS5kZWNvcmF0ZSddLCB7J2xhbmcnOiAnZXM2JywgJ21vZHVsZSc6ICdnb29nJ30pOwpnb29nLmFkZERlcGVuZGVuY3koJ3VpL2NoZWNrYm94bWVudWl0ZW0uanMnLCBbJ2dvb2cudWkuQ2hlY2tCb3hNZW51SXRlbSddLCBbJ2dvb2cudWkuTWVudUl0ZW0nLCAnZ29vZy51aS5yZWdpc3RyeSddLCB7fSk7Cmdvb2cuYWRkRGVwZW5kZW5jeSgndWkvY2hlY2tib3hyZW5kZXJlci5qcycsIFsnZ29vZy51aS5DaGVja2JveFJlbmRlcmVyJ10sIFsnZ29vZy5hMTF5LmFyaWEnLCAnZ29vZy5hMTF5LmFyaWEuUm9sZScsICdnb29nLmExMXkuYXJpYS5TdGF0ZScsICdnb29nLmFycmF5JywgJ2dvb2cuYXNzZXJ0cycsICdnb29nLmRvbS5UYWdOYW1lJywgJ2dvb2cuZG9tLmNsYXNzbGlzdCcsICdnb29nLm9iamVjdCcsICdnb29nLnVpLkNvbnRyb2xSZW5kZXJlciddLCB7fSk7Cmdvb2cuYWRkRGVwZW5kZW5jeSgndWkvY29sb3JtZW51YnV0dG9uLmpzJywgWydnb29nLnVpLkNvbG9yTWVudUJ1dHRvbiddLCBbJ2dvb2cuYXJyYXknLCAnZ29vZy5vYmplY3QnLCAnZ29vZy51aS5Db2xvck1lbnVCdXR0b25SZW5kZXJlcicsICdnb29nLnVpLkNvbG9yUGFsZXR0ZScsICdnb29nLnVpLkNvbXBvbmVudCcsICdnb29nLnVpLk1lbnUnLCAnZ29vZy51aS5NZW51QnV0dG9uJywgJ2dvb2cudWkucmVnaXN0cnknXSwge30pOwpnb29nLmFkZERlcGVuZGVuY3koJ3VpL2NvbG9ybWVudWJ1dHRvbnJlbmRlcmVyLmpzJywgWydnb29nLnVpLkNvbG9yTWVudUJ1dHRvblJlbmRlcmVyJ10sIFsnZ29vZy5hc3NlcnRzJywgJ2dvb2cuY29sb3InLCAnZ29vZy5kb20uVGFnTmFtZScsICdnb29nLmRvbS5jbGFzc2xpc3QnLCAnZ29vZy51aS5NZW51QnV0dG9uUmVuZGVyZXInLCAnZ29vZy51c2VyQWdlbnQnXSwge30pOwpnb29nLmFkZERlcGVuZGVuY3koJ3VpL2NvbG9ybWVudWJ1dHRvbnJlbmRlcmVyX3Rlc3QuanMnLCBbJ2dvb2cudWkuQ29sb3JNZW51QnV0dG9uVGVzdCddLCBbJ2dvb2cuZG9tJywgJ2dvb2cuZG9tLlRhZ05hbWUnLCAnZ29vZy50ZXN0aW5nLnRlc3RTdWl0ZScsICdnb29nLnRlc3RpbmcudWkuUmVuZGVyZXJIYXJuZXNzJywgJ2dvb2cudGVzdGluZy51aS5yZW5kZXJlcmFzc2VydHMnLCAnZ29vZy51aS5Db2xvck1lbnVCdXR0b24nLCAnZ29vZy51aS5Db2xvck1lbnVCdXR0b25SZW5kZXJlcicsICdnb29nLnVzZXJBZ2VudCddLCB7J2xhbmcnOiAnZXM2JywgJ21vZHVsZSc6ICdnb29nJ30pOwpnb29nLmFkZERlcGVuZGVuY3koJ3VpL2NvbG9ycGFsZXR0ZS5qcycsIFsnZ29vZy51aS5Db2xvclBhbGV0dGUnXSwgWydnb29nLmFycmF5JywgJ2dvb2cuY29sb3InLCAnZ29vZy5kb20uVGFnTmFtZScsICdnb29nLnN0eWxlJywgJ2dvb2cudWkuUGFsZXR0ZScsICdnb29nLnVpLlBhbGV0dGVSZW5kZXJlciddLCB7fSk7Cmdvb2cuYWRkRGVwZW5kZW5jeSgndWkvY29sb3JwYWxldHRlX3Rlc3QuanMnLCBbJ2dvb2cudWkuQ29sb3JQYWxldHRlVGVzdCddLCBbJ2dvb2cuY29sb3InLCAnZ29vZy5kb20uVGFnTmFtZScsICdnb29nLnRlc3RpbmcudGVzdFN1aXRlJywgJ2dvb2cudWkuQ29sb3JQYWxldHRlJ10sIHsnbGFuZyc6ICdlczYnLCAnbW9kdWxlJzogJ2dvb2cnfSk7Cmdvb2cuYWRkRGVwZW5kZW5jeSgndWkvY29sb3JwaWNrZXIuanMnLCBbJ2dvb2cudWkuQ29sb3JQaWNrZXInLCAnZ29vZy51aS5Db2xvclBpY2tlci5FdmVudFR5cGUnXSwgWydnb29nLnVpLkNvbG9yUGFsZXR0ZScsICdnb29nLnVpLkNvbXBvbmVudCddLCB7fSk7Cmdvb2cuYWRkRGVwZW5kZW5jeSgndWkvY29tYm9ib3guanMnLCBbJ2dvb2cudWkuQ29tYm9Cb3gnLCAnZ29vZy51aS5Db21ib0JveEl0ZW0nXSwgWydnb29nLlRpbWVyJywgJ2dvb2cuYXNzZXJ0cycsICdnb29nLmRvbScsICdnb29nLmRvbS5JbnB1dFR5cGUnLCAnZ29vZy5kb20uVGFnTmFtZScsICdnb29nLmRvbS5jbGFzc2xpc3QnLCAnZ29vZy5ldmVudHMuRXZlbnRUeXBlJywgJ2dvb2cuZXZlbnRzLklucHV0SGFuZGxlcicsICdnb29nLmV2ZW50cy5LZXlDb2RlcycsICdnb29nLmV2ZW50cy5LZXlIYW5kbGVyJywgJ2dvb2cubG9nJywgJ2dvb2cucG9zaXRpb25pbmcuQ29ybmVyJywgJ2dvb2cucG9zaXRpb25pbmcuTWVudUFuY2hvcmVkUG9zaXRpb24nLCAnZ29vZy5zdHJpbmcnLCAnZ29vZy5zdHlsZScsICdnb29nLnVpLkNvbXBvbmVudCcsICdnb29nLnVpLkl0ZW1FdmVudCcsICdnb29nLnVpLkxhYmVsSW5wdXQnLCAnZ29vZy51aS5NZW51JywgJ2dvb2cudWkuTWVudUl0ZW0nLCAnZ29vZy51aS5NZW51U2VwYXJhdG9yJywgJ2dvb2cudWkucmVnaXN0cnknLCAnZ29vZy51c2VyQWdlbnQnXSwge30pOwpnb29nLmFkZERlcGVuZGVuY3koJ3VpL2NvbWJvYm94X3Rlc3QuanMnLCBbJ2dvb2cudWkuQ29tYm9Cb3hUZXN0J10sIFsnZ29vZy5kb20nLCAnZ29vZy5kb20uVGFnTmFtZScsICdnb29nLmRvbS5jbGFzc2xpc3QnLCAnZ29vZy5ldmVudHMuS2V5Q29kZXMnLCAnZ29vZy50ZXN0aW5nLk1vY2tDbG9jaycsICdnb29nLnRlc3RpbmcuZXZlbnRzJywgJ2dvb2cudGVzdGluZy50ZXN0U3VpdGUnLCAnZ29vZy51aS5Db21ib0JveCcsICdnb29nLnVpLkNvbWJvQm94SXRlbScsICdnb29nLnVpLkNvbXBvbmVudCcsICdnb29nLnVpLkNvbnRyb2xSZW5kZXJlcicsICdnb29nLnVpLkxhYmVsSW5wdXQnLCAnZ29vZy51aS5NZW51JywgJ2dvb2cudWkuTWVudUl0ZW0nXSwgeydsYW5nJzogJ2VzNicsICdtb2R1bGUnOiAnZ29vZyd9KTsKZ29vZy5hZGREZXBlbmRlbmN5KCd1aS9jb21wb25lbnQuanMnLCBbJ2dvb2cudWkuQ29tcG9uZW50JywgJ2dvb2cudWkuQ29tcG9uZW50LkVycm9yJywgJ2dvb2cudWkuQ29tcG9uZW50LkV2ZW50VHlwZScsICdnb29nLnVpLkNvbXBvbmVudC5TdGF0ZSddLCBbJ2dvb2cuYXJyYXknLCAnZ29vZy5hc3NlcnRzJywgJ2dvb2cuZG9tJywgJ2dvb2cuZG9tLk5vZGVUeXBlJywgJ2dvb2cuZG9tLlRhZ05hbWUnLCAnZ29vZy5ldmVudHMuRXZlbnRIYW5kbGVyJywgJ2dvb2cuZXZlbnRzLkV2ZW50VGFyZ2V0JywgJ2dvb2cub2JqZWN0JywgJ2dvb2cuc3R5bGUnLCAnZ29vZy51aS5JZEdlbmVyYXRvciddLCB7fSk7Cmdvb2cuYWRkRGVwZW5kZW5jeSgndWkvY29tcG9uZW50X3Rlc3QuanMnLCBbJ2dvb2cudWkuQ29tcG9uZW50VGVzdCddLCBbJ2dvb2cuZG9tJywgJ2dvb2cuZG9tLkRvbUhlbHBlcicsICdnb29nLmRvbS5Ob2RlVHlwZScsICdnb29nLmRvbS5UYWdOYW1lJywgJ2dvb2cuZXZlbnRzLkV2ZW50VGFyZ2V0JywgJ2dvb2cudGVzdGluZy5Qcm9wZXJ0eVJlcGxhY2VyJywgJ2dvb2cudGVzdGluZy50ZXN0U3VpdGUnLCAnZ29vZy51aS5Db21wb25lbnQnXSwgeydsYW5nJzogJ2VzNicsICdtb2R1bGUnOiAnZ29vZyd9KTsKZ29vZy5hZGREZXBlbmRlbmN5KCd1aS9jb21wb25lbnR1dGlsLmpzJywgWydnb29nLnVpLkNvbXBvbmVudFV0aWwnXSwgWydnb29nLmV2ZW50cy5Nb3VzZUFzTW91c2VFdmVudFR5cGUnLCAnZ29vZy5ldmVudHMuTW91c2VFdmVudHMnLCAnZ29vZy5ldmVudHMuUG9pbnRlckFzTW91c2VFdmVudFR5cGUnXSwge30pOwpnb29nLmFkZERlcGVuZGVuY3koJ3VpL2NvbXBvbmVudHV0aWxfdGVzdC5qcycsIFsnZ29vZy51aS5Db21wb25lbnRVdGlsVGVzdCddLCBbJ2dvb2cuZXZlbnRzLk1vdXNlQXNNb3VzZUV2ZW50VHlwZScsICdnb29nLmV2ZW50cy5Qb2ludGVyQXNNb3VzZUV2ZW50VHlwZScsICdnb29nLnRlc3RpbmcudGVzdFN1aXRlJywgJ2dvb2cudWkuQ29tcG9uZW50JywgJ2dvb2cudWkuQ29tcG9uZW50VXRpbCddLCB7J2xhbmcnOiAnZXM2JywgJ21vZHVsZSc6ICdnb29nJ30pOwpnb29nLmFkZERlcGVuZGVuY3koJ3VpL2NvbnRhaW5lci5qcycsIFsnZ29vZy51aS5Db250YWluZXInLCAnZ29vZy51aS5Db250YWluZXIuRXZlbnRUeXBlJywgJ2dvb2cudWkuQ29udGFpbmVyLk9yaWVudGF0aW9uJ10sIFsnZ29vZy5hMTF5LmFyaWEnLCAnZ29vZy5hMTF5LmFyaWEuU3RhdGUnLCAnZ29vZy5hc3NlcnRzJywgJ2dvb2cuZG9tJywgJ2dvb2cuZXZlbnRzLkV2ZW50VHlwZScsICdnb29nLmV2ZW50cy5LZXlDb2RlcycsICdnb29nLmV2ZW50cy5LZXlIYW5kbGVyJywgJ2dvb2cub2JqZWN0JywgJ2dvb2cuc3R5bGUnLCAnZ29vZy51aS5Db21wb25lbnQnLCAnZ29vZy51aS5Db21wb25lbnRVdGlsJywgJ2dvb2cudWkuQ29udGFpbmVyUmVuZGVyZXInLCAnZ29vZy51aS5Db250cm9sJ10sIHt9KTsKZ29vZy5hZGREZXBlbmRlbmN5KCd1aS9jb250YWluZXJfdGVzdC5qcycsIFsnZ29vZy51aS5Db250YWluZXJUZXN0J10sIFsnZ29vZy5hMTF5LmFyaWEnLCAnZ29vZy5kb20nLCAnZ29vZy5kb20uVGFnTmFtZScsICdnb29nLmRvbS5jbGFzc2xpc3QnLCAnZ29vZy5ldmVudHMnLCAnZ29vZy5ldmVudHMuQnJvd3NlckV2ZW50JywgJ2dvb2cuZXZlbnRzLkV2ZW50JywgJ2dvb2cuZXZlbnRzLktleUNvZGVzJywgJ2dvb2cuZXZlbnRzLktleUV2ZW50JywgJ2dvb2cuZXZlbnRzLlBvaW50ZXJGYWxsYmFja0V2ZW50VHlwZScsICdnb29nLnRlc3RpbmcuZXZlbnRzJywgJ2dvb2cudGVzdGluZy5ldmVudHMuRXZlbnQnLCAnZ29vZy50ZXN0aW5nLnRlc3RTdWl0ZScsICdnb29nLnVpLkNvbXBvbmVudCcsICdnb29nLnVpLkNvbnRhaW5lcicsICdnb29nLnVpLkNvbnRyb2wnXSwgeydsYW5nJzogJ2VzNicsICdtb2R1bGUnOiAnZ29vZyd9KTsKZ29vZy5hZGREZXBlbmRlbmN5KCd1aS9jb250YWluZXJyZW5kZXJlci5qcycsIFsnZ29vZy51aS5Db250YWluZXJSZW5kZXJlciddLCBbJ2dvb2cuYTExeS5hcmlhJywgJ2dvb2cuYXJyYXknLCAnZ29vZy5hc3NlcnRzJywgJ2dvb2cuZG9tLk5vZGVUeXBlJywgJ2dvb2cuZG9tLlRhZ05hbWUnLCAnZ29vZy5kb20uY2xhc3NsaXN0JywgJ2dvb2cuc3RyaW5nJywgJ2dvb2cuc3R5bGUnLCAnZ29vZy51aS5yZWdpc3RyeScsICdnb29nLnVzZXJBZ2VudCddLCB7fSk7Cmdvb2cuYWRkRGVwZW5kZW5jeSgndWkvY29udGFpbmVycmVuZGVyZXJfdGVzdC5qcycsIFsnZ29vZy51aS5Db250YWluZXJSZW5kZXJlclRlc3QnXSwgWydnb29nLmRvbScsICdnb29nLmRvbS5UYWdOYW1lJywgJ2dvb2cuc3R5bGUnLCAnZ29vZy50ZXN0aW5nLkV4cGVjdGVkRmFpbHVyZXMnLCAnZ29vZy50ZXN0aW5nLlByb3BlcnR5UmVwbGFjZXInLCAnZ29vZy50ZXN0aW5nLnRlc3RTdWl0ZScsICdnb29nLnRlc3RpbmcudWkucmVuZGVyZXJhc3NlcnRzJywgJ2dvb2cudWkuQ29udGFpbmVyJywgJ2dvb2cudWkuQ29udGFpbmVyUmVuZGVyZXInLCAnZ29vZy51c2VyQWdlbnQnXSwgeydsYW5nJzogJ2VzNicsICdtb2R1bGUnOiAnZ29vZyd9KTsKZ29vZy5hZGREZXBlbmRlbmN5KCd1aS9jb250YWluZXJzY3JvbGxlci5qcycsIFsnZ29vZy51aS5Db250YWluZXJTY3JvbGxlciddLCBbJ2dvb2cuRGlzcG9zYWJsZScsICdnb29nLlRpbWVyJywgJ2dvb2cuZXZlbnRzLkV2ZW50SGFuZGxlcicsICdnb29nLnN0eWxlJywgJ2dvb2cudWkuQ29tcG9uZW50JywgJ2dvb2cudWkuQ29udGFpbmVyJ10sIHt9KTsKZ29vZy5hZGREZXBlbmRlbmN5KCd1aS9jb250YWluZXJzY3JvbGxlcl90ZXN0LmpzJywgWydnb29nLnVpLkNvbnRhaW5lclNjcm9sbGVyVGVzdCddLCBbJ2dvb2cuZG9tJywgJ2dvb2cudGVzdGluZy5Nb2NrQ2xvY2snLCAnZ29vZy50ZXN0aW5nLmV2ZW50cycsICdnb29nLnRlc3RpbmcudGVzdFN1aXRlJywgJ2dvb2cudWkuQ29udGFpbmVyJywgJ2dvb2cudWkuQ29udGFpbmVyU2Nyb2xsZXInXSwgeydsYW5nJzogJ2VzNicsICdtb2R1bGUnOiAnZ29vZyd9KTsKZ29vZy5hZGREZXBlbmRlbmN5KCd1aS9jb250cm9sLmpzJywgWydnb29nLnVpLkNvbnRyb2wnXSwgWydnb29nLkRpc3Bvc2FibGUnLCAnZ29vZy5hcnJheScsICdnb29nLmRvbScsICdnb29nLmV2ZW50cy5Ccm93c2VyRXZlbnQnLCAnZ29vZy5ldmVudHMuRXZlbnQnLCAnZ29vZy5ldmVudHMuRXZlbnRIYW5kbGVyJywgJ2dvb2cuZXZlbnRzLkV2ZW50VHlwZScsICdnb29nLmV2ZW50cy5LZXlDb2RlcycsICdnb29nLmV2ZW50cy5LZXlIYW5kbGVyJywgJ2dvb2cuc3RyaW5nJywgJ2dvb2cudWkuQ29tcG9uZW50JywgJ2dvb2cudWkuQ29tcG9uZW50VXRpbCcsICdnb29nLnVpLkNvbnRyb2xDb250ZW50JywgJ2dvb2cudWkuQ29udHJvbFJlbmRlcmVyJywgJ2dvb2cudWkucmVnaXN0cnknLCAnZ29vZy51c2VyQWdlbnQnXSwge30pOwpnb29nLmFkZERlcGVuZGVuY3koJ3VpL2NvbnRyb2xfdGVzdC5qcycsIFsnZ29vZy51aS5Db250cm9sVGVzdCddLCBbJ2dvb2cuYTExeS5hcmlhJywgJ2dvb2cuYTExeS5hcmlhLlN0YXRlJywgJ2dvb2cuYXJyYXknLCAnZ29vZy5kb20nLCAnZ29vZy5kb20uVGFnTmFtZScsICdnb29nLmRvbS5jbGFzc2xpc3QnLCAnZ29vZy5ldmVudHMnLCAnZ29vZy5ldmVudHMuQnJvd3NlckV2ZW50JywgJ2dvb2cuZXZlbnRzLktleUNvZGVzJywgJ2dvb2cuZXZlbnRzLlBvaW50ZXJGYWxsYmFja0V2ZW50VHlwZScsICdnb29nLmh0bWwudGVzdGluZycsICdnb29nLm9iamVjdCcsICdnb29nLnN0cmluZycsICdnb29nLnN0eWxlJywgJ2dvb2cudGVzdGluZy5FeHBlY3RlZEZhaWx1cmVzJywgJ2dvb2cudGVzdGluZy5ldmVudHMnLCAnZ29vZy50ZXN0aW5nLmV2ZW50cy5FdmVudCcsICdnb29nLnRlc3RpbmcudGVzdFN1aXRlJywgJ2dvb2cudWkuQ29tcG9uZW50JywgJ2dvb2cudWkuQ29udHJvbCcsICdnb29nLnVpLkNvbnRyb2xSZW5kZXJlcicsICdnb29nLnVpLnJlZ2lzdHJ5JywgJ2dvb2cudXNlckFnZW50J10sIHsnbGFuZyc6ICdlczYnLCAnbW9kdWxlJzogJ2dvb2cnfSk7Cmdvb2cuYWRkRGVwZW5kZW5jeSgndWkvY29udHJvbGNvbnRlbnQuanMnLCBbJ2dvb2cudWkuQ29udHJvbENvbnRlbnQnXSwgW10sIHt9KTsKZ29vZy5hZGREZXBlbmRlbmN5KCd1aS9jb250cm9scmVuZGVyZXIuanMnLCBbJ2dvb2cudWkuQ29udHJvbFJlbmRlcmVyJ10sIFsnZ29vZy5hMTF5LmFyaWEnLCAnZ29vZy5hMTF5LmFyaWEuUm9sZScsICdnb29nLmExMXkuYXJpYS5TdGF0ZScsICdnb29nLmFycmF5JywgJ2dvb2cuYXNzZXJ0cycsICdnb29nLmRvbScsICdnb29nLmRvbS5UYWdOYW1lJywgJ2dvb2cuZG9tLmNsYXNzbGlzdCcsICdnb29nLm9iamVjdCcsICdnb29nLnN0cmluZycsICdnb29nLnN0eWxlJywgJ2dvb2cudWkuQ29tcG9uZW50JywgJ2dvb2cudWkuQ29udHJvbENvbnRlbnQnLCAnZ29vZy51c2VyQWdlbnQnXSwge30pOwpnb29nLmFkZERlcGVuZGVuY3koJ3VpL2NvbnRyb2xyZW5kZXJlcl90ZXN0LmpzJywgWydnb29nLnVpLkNvbnRyb2xSZW5kZXJlclRlc3QnXSwgWydnb29nLmExMXkuYXJpYScsICdnb29nLmExMXkuYXJpYS5Sb2xlJywgJ2dvb2cuYTExeS5hcmlhLlN0YXRlJywgJ2dvb2cuZG9tJywgJ2dvb2cuZG9tLk5vZGVUeXBlJywgJ2dvb2cuZG9tLlRhZ05hbWUnLCAnZ29vZy5kb20uY2xhc3NsaXN0JywgJ2dvb2cub2JqZWN0JywgJ2dvb2cuc3R5bGUnLCAnZ29vZy50ZXN0aW5nLkV4cGVjdGVkRmFpbHVyZXMnLCAnZ29vZy50ZXN0aW5nLlByb3BlcnR5UmVwbGFjZXInLCAnZ29vZy50ZXN0aW5nLnRlc3RTdWl0ZScsICdnb29nLnVpLkNvbXBvbmVudCcsICdnb29nLnVpLkNvbnRyb2wnLCAnZ29vZy51aS5Db250cm9sUmVuZGVyZXInLCAnZ29vZy51c2VyQWdlbnQnXSwgeydsYW5nJzogJ2VzNicsICdtb2R1bGUnOiAnZ29vZyd9KTsKZ29vZy5hZGREZXBlbmRlbmN5KCd1aS9jb29raWVlZGl0b3IuanMnLCBbJ2dvb2cudWkuQ29va2llRWRpdG9yJ10sIFsnZ29vZy5hc3NlcnRzJywgJ2dvb2cuZG9tJywgJ2dvb2cuZG9tLlRhZ05hbWUnLCAnZ29vZy5ldmVudHMuRXZlbnRUeXBlJywgJ2dvb2cubmV0LmNvb2tpZXMnLCAnZ29vZy5zdHJpbmcnLCAnZ29vZy5zdHlsZScsICdnb29nLnVpLkNvbXBvbmVudCddLCB7fSk7Cmdvb2cuYWRkRGVwZW5kZW5jeSgndWkvY29va2llZWRpdG9yX3Rlc3QuanMnLCBbJ2dvb2cudWkuQ29va2llRWRpdG9yVGVzdCddLCBbJ2dvb2cuZG9tJywgJ2dvb2cuZXZlbnRzLkV2ZW50JywgJ2dvb2cuZXZlbnRzLkV2ZW50VHlwZScsICdnb29nLm5ldC5jb29raWVzJywgJ2dvb2cudGVzdGluZy5ldmVudHMnLCAnZ29vZy50ZXN0aW5nLnRlc3RTdWl0ZScsICdnb29nLnVpLkNvb2tpZUVkaXRvciddLCB7J2xhbmcnOiAnZXM2JywgJ21vZHVsZSc6ICdnb29nJ30pOwpnb29nLmFkZERlcGVuZGVuY3koJ3VpL2NzczNidXR0b25yZW5kZXJlci5qcycsIFsnZ29vZy51aS5Dc3MzQnV0dG9uUmVuZGVyZXInXSwgWydnb29nLmFzc2VydHMnLCAnZ29vZy5kb20uVGFnTmFtZScsICdnb29nLmRvbS5jbGFzc2xpc3QnLCAnZ29vZy51aS5CdXR0b24nLCAnZ29vZy51aS5CdXR0b25SZW5kZXJlcicsICdnb29nLnVpLkNvbXBvbmVudCcsICdnb29nLnVpLklOTElORV9CTE9DS19DTEFTU05BTUUnLCAnZ29vZy51aS5yZWdpc3RyeSddLCB7fSk7Cmdvb2cuYWRkRGVwZW5kZW5jeSgndWkvY3NzM21lbnVidXR0b25yZW5kZXJlci5qcycsIFsnZ29vZy51aS5Dc3MzTWVudUJ1dHRvblJlbmRlcmVyJ10sIFsnZ29vZy5kb20nLCAnZ29vZy5kb20uVGFnTmFtZScsICdnb29nLnVpLklOTElORV9CTE9DS19DTEFTU05BTUUnLCAnZ29vZy51aS5NZW51QnV0dG9uJywgJ2dvb2cudWkuTWVudUJ1dHRvblJlbmRlcmVyJywgJ2dvb2cudWkucmVnaXN0cnknXSwge30pOwpnb29nLmFkZERlcGVuZGVuY3koJ3VpL2Nzc25hbWVzLmpzJywgWydnb29nLnVpLklOTElORV9CTE9DS19DTEFTU05BTUUnXSwgW10sIHt9KTsKZ29vZy5hZGREZXBlbmRlbmN5KCd1aS9jdXN0b21idXR0b24uanMnLCBbJ2dvb2cudWkuQ3VzdG9tQnV0dG9uJ10sIFsnZ29vZy51aS5CdXR0b24nLCAnZ29vZy51aS5DdXN0b21CdXR0b25SZW5kZXJlcicsICdnb29nLnVpLnJlZ2lzdHJ5J10sIHt9KTsKZ29vZy5hZGREZXBlbmRlbmN5KCd1aS9jdXN0b21idXR0b25yZW5kZXJlci5qcycsIFsnZ29vZy51aS5DdXN0b21CdXR0b25SZW5kZXJlciddLCBbJ2dvb2cuYTExeS5hcmlhLlJvbGUnLCAnZ29vZy5hc3NlcnRzJywgJ2dvb2cuZG9tLk5vZGVUeXBlJywgJ2dvb2cuZG9tLlRhZ05hbWUnLCAnZ29vZy5kb20uY2xhc3NsaXN0JywgJ2dvb2cuc3RyaW5nJywgJ2dvb2cudWkuQnV0dG9uUmVuZGVyZXInLCAnZ29vZy51aS5JTkxJTkVfQkxPQ0tfQ0xBU1NOQU1FJ10sIHt9KTsKZ29vZy5hZGREZXBlbmRlbmN5KCd1aS9jdXN0b21jb2xvcnBhbGV0dGUuanMnLCBbJ2dvb2cudWkuQ3VzdG9tQ29sb3JQYWxldHRlJ10sIFsnZ29vZy5jb2xvcicsICdnb29nLmRvbScsICdnb29nLmRvbS5UYWdOYW1lJywgJ2dvb2cuZG9tLmNsYXNzbGlzdCcsICdnb29nLnVpLkNvbG9yUGFsZXR0ZScsICdnb29nLnVpLkNvbXBvbmVudCddLCB7fSk7Cmdvb2cuYWRkRGVwZW5kZW5jeSgndWkvY3VzdG9tY29sb3JwYWxldHRlX3Rlc3QuanMnLCBbJ2dvb2cudWkuQ3VzdG9tQ29sb3JQYWxldHRlVGVzdCddLCBbJ2dvb2cuZG9tLlRhZ05hbWUnLCAnZ29vZy5kb20uY2xhc3NsaXN0JywgJ2dvb2cudGVzdGluZy50ZXN0U3VpdGUnLCAnZ29vZy51aS5DdXN0b21Db2xvclBhbGV0dGUnXSwgeydsYW5nJzogJ2VzNicsICdtb2R1bGUnOiAnZ29vZyd9KTsKZ29vZy5hZGREZXBlbmRlbmN5KCd1aS9kYXRlcGlja2VyLmpzJywgWydnb29nLnVpLkRhdGVQaWNrZXInLCAnZ29vZy51aS5EYXRlUGlja2VyLkV2ZW50cycsICdnb29nLnVpLkRhdGVQaWNrZXJFdmVudCddLCBbJ2dvb2cuYTExeS5hcmlhJywgJ2dvb2cuYXNzZXJ0cycsICdnb29nLmRhdGUuRGF0ZScsICdnb29nLmRhdGUuRGF0ZVJhbmdlJywgJ2dvb2cuZGF0ZS5JbnRlcnZhbCcsICdnb29nLmRvbScsICdnb29nLmRvbS5Ob2RlVHlwZScsICdnb29nLmRvbS5UYWdOYW1lJywgJ2dvb2cuZG9tLmNsYXNzbGlzdCcsICdnb29nLmV2ZW50cy5FdmVudCcsICdnb29nLmV2ZW50cy5FdmVudFR5cGUnLCAnZ29vZy5ldmVudHMuS2V5SGFuZGxlcicsICdnb29nLmkxOG4uRGF0ZVRpbWVGb3JtYXQnLCAnZ29vZy5pMThuLkRhdGVUaW1lUGF0dGVybnMnLCAnZ29vZy5pMThuLkRhdGVUaW1lU3ltYm9scycsICdnb29nLnN0eWxlJywgJ2dvb2cudWkuQ29tcG9uZW50JywgJ2dvb2cudWkuRGVmYXVsdERhdGVQaWNrZXJSZW5kZXJlcicsICdnb29nLnVpLklkR2VuZXJhdG9yJ10sIHt9KTsKZ29vZy5hZGREZXBlbmRlbmN5KCd1aS9kYXRlcGlja2VyX3Rlc3QuanMnLCBbJ2dvb2cudWkuRGF0ZVBpY2tlclRlc3QnXSwgWydnb29nLmExMXkuYXJpYScsICdnb29nLmExMXkuYXJpYS5Sb2xlJywgJ2dvb2cuZGF0ZS5EYXRlJywgJ2dvb2cuZGF0ZS5EYXRlUmFuZ2UnLCAnZ29vZy5kb20nLCAnZ29vZy5kb20uVGFnTmFtZScsICdnb29nLmRvbS5jbGFzc2xpc3QnLCAnZ29vZy5ldmVudHMnLCAnZ29vZy5ldmVudHMuS2V5Q29kZXMnLCAnZ29vZy5pMThuLkRhdGVUaW1lU3ltYm9scycsICdnb29nLmkxOG4uRGF0ZVRpbWVTeW1ib2xzX2VuX1VTJywgJ2dvb2cuaTE4bi5EYXRlVGltZVN5bWJvbHNfemhfSEsnLCAnZ29vZy5zdHlsZScsICdnb29nLnRlc3RpbmcuZXZlbnRzJywgJ2dvb2cudGVzdGluZy5yZWNvcmRGdW5jdGlvbicsICdnb29nLnRlc3RpbmcudGVzdFN1aXRlJywgJ2dvb2cudWkuRGF0ZVBpY2tlciddLCB7J2xhbmcnOiAnZXM2JywgJ21vZHVsZSc6ICdnb29nJ30pOwpnb29nLmFkZERlcGVuZGVuY3koJ3VpL2RhdGVwaWNrZXJyZW5kZXJlci5qcycsIFsnZ29vZy51aS5EYXRlUGlja2VyUmVuZGVyZXInXSwgW10sIHt9KTsKZ29vZy5hZGREZXBlbmRlbmN5KCd1aS9kZWNvcmF0ZS5qcycsIFsnZ29vZy51aS5kZWNvcmF0ZSddLCBbJ2dvb2cudWkucmVnaXN0cnknXSwge30pOwpnb29nLmFkZERlcGVuZGVuY3koJ3VpL2RlY29yYXRlX3Rlc3QuanMnLCBbJ2dvb2cudWkuZGVjb3JhdGVUZXN0J10sIFsnZ29vZy50ZXN0aW5nLnRlc3RTdWl0ZScsICdnb29nLnVpLmRlY29yYXRlJywgJ2dvb2cudWkucmVnaXN0cnknXSwgeydsYW5nJzogJ2VzNicsICdtb2R1bGUnOiAnZ29vZyd9KTsKZ29vZy5hZGREZXBlbmRlbmN5KCd1aS9kZWZhdWx0ZGF0ZXBpY2tlcnJlbmRlcmVyLmpzJywgWydnb29nLnVpLkRlZmF1bHREYXRlUGlja2VyUmVuZGVyZXInXSwgWydnb29nLmRvbScsICdnb29nLmRvbS5UYWdOYW1lJywgJ2dvb2cudWkuRGF0ZVBpY2tlclJlbmRlcmVyJ10sIHt9KTsKZ29vZy5hZGREZXBlbmRlbmN5KCd1aS9kaWFsb2cuanMnLCBbJ2dvb2cudWkuRGlhbG9nJywgJ2dvb2cudWkuRGlhbG9nLkJ1dHRvblNldCcsICdnb29nLnVpLkRpYWxvZy5CdXR0b25TZXQuRGVmYXVsdEJ1dHRvbnMnLCAnZ29vZy51aS5EaWFsb2cuRGVmYXVsdEJ1dHRvbkNhcHRpb25zJywgJ2dvb2cudWkuRGlhbG9nLkRlZmF1bHRCdXR0b25LZXlzJywgJ2dvb2cudWkuRGlhbG9nLkV2ZW50JywgJ2dvb2cudWkuRGlhbG9nLkV2ZW50VHlwZSddLCBbJ2dvb2cuYTExeS5hcmlhJywgJ2dvb2cuYTExeS5hcmlhLlJvbGUnLCAnZ29vZy5hMTF5LmFyaWEuU3RhdGUnLCAnZ29vZy5hc3NlcnRzJywgJ2dvb2cuZG9tJywgJ2dvb2cuZG9tLk5vZGVUeXBlJywgJ2dvb2cuZG9tLlRhZ05hbWUnLCAnZ29vZy5kb20uY2xhc3NsaXN0JywgJ2dvb2cuZG9tLnNhZmUnLCAnZ29vZy5ldmVudHMnLCAnZ29vZy5ldmVudHMuRXZlbnQnLCAnZ29vZy5ldmVudHMuRXZlbnRUeXBlJywgJ2dvb2cuZXZlbnRzLktleUNvZGVzJywgJ2dvb2cuZXZlbnRzLktleXMnLCAnZ29vZy5meC5EcmFnZ2VyJywgJ2dvb2cuaHRtbC5TYWZlSHRtbCcsICdnb29nLm1hdGguUmVjdCcsICdnb29nLnN0cmluZycsICdnb29nLnN0cnVjdHMuTWFwJywgJ2dvb2cuc3R5bGUnLCAnZ29vZy51aS5Nb2RhbFBvcHVwJ10sIHt9KTsKZ29vZy5hZGREZXBlbmRlbmN5KCd1aS9kaWFsb2dfdGVzdC5qcycsIFsnZ29vZy51aS5EaWFsb2dUZXN0J10sIFsnZ29vZy5hMTF5LmFyaWEnLCAnZ29vZy5hMTF5LmFyaWEuUm9sZScsICdnb29nLmExMXkuYXJpYS5TdGF0ZScsICdnb29nLmRvbScsICdnb29nLmRvbS5UYWdOYW1lJywgJ2dvb2cuZG9tLmNsYXNzbGlzdCcsICdnb29nLmV2ZW50cycsICdnb29nLmV2ZW50cy5FdmVudFR5cGUnLCAnZ29vZy5ldmVudHMuS2V5Q29kZXMnLCAnZ29vZy5meC5jc3MzJywgJ2dvb2cuaHRtbC5TYWZlSHRtbCcsICdnb29nLmh0bWwudGVzdGluZycsICdnb29nLnN0eWxlJywgJ2dvb2cudGVzdGluZy5Nb2NrQ2xvY2snLCAnZ29vZy50ZXN0aW5nLmV2ZW50cycsICdnb29nLnRlc3RpbmcucmVjb3JkRnVuY3Rpb24nLCAnZ29vZy50ZXN0aW5nLnRlc3RTdWl0ZScsICdnb29nLnVpLkRpYWxvZycsICdnb29nLnVzZXJBZ2VudCddLCB7J2xhbmcnOiAnZXM2JywgJ21vZHVsZSc6ICdnb29nJ30pOwpnb29nLmFkZERlcGVuZGVuY3koJ3VpL2RpbWVuc2lvbnBpY2tlci5qcycsIFsnZ29vZy51aS5EaW1lbnNpb25QaWNrZXInXSwgWydnb29nLmV2ZW50cy5Ccm93c2VyRXZlbnQuUG9pbnRlclR5cGUnLCAnZ29vZy5ldmVudHMuRXZlbnRUeXBlJywgJ2dvb2cuZXZlbnRzLktleUNvZGVzJywgJ2dvb2cubWF0aC5TaXplJywgJ2dvb2cudWkuQ29tcG9uZW50JywgJ2dvb2cudWkuQ29tcG9uZW50VXRpbCcsICdnb29nLnVpLkNvbnRyb2wnLCAnZ29vZy51aS5EaW1lbnNpb25QaWNrZXJSZW5kZXJlcicsICdnb29nLnVpLnJlZ2lzdHJ5J10sIHt9KTsKZ29vZy5hZGREZXBlbmRlbmN5KCd1aS9kaW1lbnNpb25waWNrZXJfdGVzdC5qcycsIFsnZ29vZy51aS5EaW1lbnNpb25QaWNrZXJUZXN0J10sIFsnZ29vZy5kb20nLCAnZ29vZy5kb20uVGFnTmFtZScsICdnb29nLmV2ZW50cy5Ccm93c2VyRXZlbnQnLCAnZ29vZy5ldmVudHMuS2V5Q29kZXMnLCAnZ29vZy5tYXRoLlNpemUnLCAnZ29vZy50ZXN0aW5nLnRlc3RTdWl0ZScsICdnb29nLnRlc3RpbmcudWkucmVuZGVyZXJhc3NlcnRzJywgJ2dvb2cudWkuRGltZW5zaW9uUGlja2VyJywgJ2dvb2cudWkuRGltZW5zaW9uUGlja2VyUmVuZGVyZXInXSwgeydsYW5nJzogJ2VzNicsICdtb2R1bGUnOiAnZ29vZyd9KTsKZ29vZy5hZGREZXBlbmRlbmN5KCd1aS9kaW1lbnNpb25waWNrZXJyZW5kZXJlci5qcycsIFsnZ29vZy51aS5EaW1lbnNpb25QaWNrZXJSZW5kZXJlciddLCBbJ2dvb2cuYTExeS5hcmlhLkFubm91bmNlcicsICdnb29nLmExMXkuYXJpYS5MaXZlUHJpb3JpdHknLCAnZ29vZy5kb20nLCAnZ29vZy5kb20uVGFnTmFtZScsICdnb29nLmkxOG4uYmlkaScsICdnb29nLnN0eWxlJywgJ2dvb2cudWkuQ29udHJvbFJlbmRlcmVyJywgJ2dvb2cudXNlckFnZW50J10sIHt9KTsKZ29vZy5hZGREZXBlbmRlbmN5KCd1aS9kaW1lbnNpb25waWNrZXJyZW5kZXJlcl90ZXN0LmpzJywgWydnb29nLnVpLkRpbWVuc2lvblBpY2tlclJlbmRlcmVyVGVzdCddLCBbJ2dvb2cuYTExeS5hcmlhLkxpdmVQcmlvcml0eScsICdnb29nLmFycmF5JywgJ2dvb2cudGVzdGluZy5yZWNvcmRGdW5jdGlvbicsICdnb29nLnRlc3RpbmcudGVzdFN1aXRlJywgJ2dvb2cudWkuRGltZW5zaW9uUGlja2VyJywgJ2dvb2cudWkuRGltZW5zaW9uUGlja2VyUmVuZGVyZXInXSwgeydsYW5nJzogJ2VzNicsICdtb2R1bGUnOiAnZ29vZyd9KTsKZ29vZy5hZGREZXBlbmRlbmN5KCd1aS9kcmFnZHJvcGRldGVjdG9yLmpzJywgWydnb29nLnVpLkRyYWdEcm9wRGV0ZWN0b3InLCAnZ29vZy51aS5EcmFnRHJvcERldGVjdG9yLkV2ZW50VHlwZScsICdnb29nLnVpLkRyYWdEcm9wRGV0ZWN0b3IuSW1hZ2VEcm9wRXZlbnQnLCAnZ29vZy51aS5EcmFnRHJvcERldGVjdG9yLkxpbmtEcm9wRXZlbnQnXSwgWydnb29nLmRvbScsICdnb29nLmRvbS5JbnB1dFR5cGUnLCAnZ29vZy5kb20uVGFnTmFtZScsICdnb29nLmV2ZW50cy5FdmVudCcsICdnb29nLmV2ZW50cy5FdmVudEhhbmRsZXInLCAnZ29vZy5ldmVudHMuRXZlbnRUYXJnZXQnLCAnZ29vZy5ldmVudHMuRXZlbnRUeXBlJywgJ2dvb2cubWF0aC5Db29yZGluYXRlJywgJ2dvb2cuc3RyaW5nJywgJ2dvb2cuc3R5bGUnLCAnZ29vZy51c2VyQWdlbnQnXSwge30pOwpnb29nLmFkZERlcGVuZGVuY3koJ3VpL2RyaWxsZG93bnJvdy5qcycsIFsnZ29vZy51aS5EcmlsbGRvd25Sb3cnXSwgWydnb29nLmFzc2VydHMnLCAnZ29vZy5kb20nLCAnZ29vZy5kb20uVGFnTmFtZScsICdnb29nLmRvbS5jbGFzc2xpc3QnLCAnZ29vZy5kb20uc2FmZScsICdnb29nLmh0bWwuU2FmZUh0bWwnLCAnZ29vZy5zdHJpbmcuVW5pY29kZScsICdnb29nLnVpLkNvbXBvbmVudCddLCB7fSk7Cmdvb2cuYWRkRGVwZW5kZW5jeSgndWkvZHJpbGxkb3ducm93X3Rlc3QuanMnLCBbJ2dvb2cudWkuRHJpbGxkb3duUm93VGVzdCddLCBbJ2dvb2cuZG9tJywgJ2dvb2cuZG9tLlRhZ05hbWUnLCAnZ29vZy5odG1sLlNhZmVIdG1sJywgJ2dvb2cudGVzdGluZy50ZXN0U3VpdGUnLCAnZ29vZy51aS5EcmlsbGRvd25Sb3cnXSwgeydsYW5nJzogJ2VzNicsICdtb2R1bGUnOiAnZ29vZyd9KTsKZ29vZy5hZGREZXBlbmRlbmN5KCd1aS9lZGl0b3IvYWJzdHJhY3RkaWFsb2cuanMnLCBbJ2dvb2cudWkuZWRpdG9yLkFic3RyYWN0RGlhbG9nJywgJ2dvb2cudWkuZWRpdG9yLkFic3RyYWN0RGlhbG9nLkJ1aWxkZXInLCAnZ29vZy51aS5lZGl0b3IuQWJzdHJhY3REaWFsb2cuRXZlbnRUeXBlJ10sIFsnZ29vZy5hc3NlcnRzJywgJ2dvb2cuZG9tJywgJ2dvb2cuZG9tLmNsYXNzbGlzdCcsICdnb29nLmV2ZW50cy5FdmVudFRhcmdldCcsICdnb29nLnN0cmluZycsICdnb29nLnVpLkRpYWxvZycsICdnb29nLnVpLlBvcHVwQmFzZSddLCB7fSk7Cmdvb2cuYWRkRGVwZW5kZW5jeSgndWkvZWRpdG9yL2Fic3RyYWN0ZGlhbG9nX3Rlc3QuanMnLCBbJ2dvb2cudWkuZWRpdG9yLkFic3RyYWN0RGlhbG9nVGVzdCddLCBbJ2dvb2cuZG9tJywgJ2dvb2cuZG9tLkRvbUhlbHBlcicsICdnb29nLmRvbS5UYWdOYW1lJywgJ2dvb2cuZG9tLmNsYXNzbGlzdCcsICdnb29nLmV2ZW50cy5FdmVudCcsICdnb29nLmV2ZW50cy5FdmVudEhhbmRsZXInLCAnZ29vZy5ldmVudHMuS2V5Q29kZXMnLCAnZ29vZy50ZXN0aW5nLk1vY2tDb250cm9sJywgJ2dvb2cudGVzdGluZy5ldmVudHMnLCAnZ29vZy50ZXN0aW5nLm1vY2ttYXRjaGVycy5Bcmd1bWVudE1hdGNoZXInLCAnZ29vZy50ZXN0aW5nLnRlc3RTdWl0ZScsICdnb29nLnVpLmVkaXRvci5BYnN0cmFjdERpYWxvZycsICdnb29nLnVzZXJBZ2VudCddLCB7J2xhbmcnOiAnZXM2JywgJ21vZHVsZSc6ICdnb29nJ30pOwpnb29nLmFkZERlcGVuZGVuY3koJ3VpL2VkaXRvci9idWJibGUuanMnLCBbJ2dvb2cudWkuZWRpdG9yLkJ1YmJsZSddLCBbJ2dvb2cuYXNzZXJ0cycsICdnb29nLmRvbScsICdnb29nLmRvbS5UYWdOYW1lJywgJ2dvb2cuZG9tLlZpZXdwb3J0U2l6ZU1vbml0b3InLCAnZ29vZy5kb20uY2xhc3NsaXN0JywgJ2dvb2cuZWRpdG9yLnN0eWxlJywgJ2dvb2cuZXZlbnRzLkV2ZW50SGFuZGxlcicsICdnb29nLmV2ZW50cy5FdmVudFRhcmdldCcsICdnb29nLmV2ZW50cy5FdmVudFR5cGUnLCAnZ29vZy5mdW5jdGlvbnMnLCAnZ29vZy5sb2cnLCAnZ29vZy5tYXRoLkJveCcsICdnb29nLm9iamVjdCcsICdnb29nLnBvc2l0aW9uaW5nJywgJ2dvb2cucG9zaXRpb25pbmcuQ29ybmVyJywgJ2dvb2cucG9zaXRpb25pbmcuT3ZlcmZsb3cnLCAnZ29vZy5wb3NpdGlvbmluZy5PdmVyZmxvd1N0YXR1cycsICdnb29nLnN0cmluZycsICdnb29nLnN0eWxlJywgJ2dvb2cudWkuQ29tcG9uZW50JywgJ2dvb2cudWkuUG9wdXBCYXNlJywgJ2dvb2cudXNlckFnZW50J10sIHt9KTsKZ29vZy5hZGREZXBlbmRlbmN5KCd1aS9lZGl0b3IvYnViYmxlX3Rlc3QuanMnLCBbJ2dvb2cudWkuZWRpdG9yLkJ1YmJsZVRlc3QnXSwgWydnb29nLmRvbScsICdnb29nLmRvbS5UYWdOYW1lJywgJ2dvb2cuZXZlbnRzJywgJ2dvb2cuZXZlbnRzLkV2ZW50VHlwZScsICdnb29nLnBvc2l0aW9uaW5nLkNvcm5lcicsICdnb29nLnBvc2l0aW9uaW5nLk92ZXJmbG93U3RhdHVzJywgJ2dvb2cuc3RyaW5nJywgJ2dvb2cuc3R5bGUnLCAnZ29vZy50ZXN0aW5nLmVkaXRvci5UZXN0SGVscGVyJywgJ2dvb2cudGVzdGluZy5ldmVudHMnLCAnZ29vZy50ZXN0aW5nLnRlc3RTdWl0ZScsICdnb29nLnVpLkNvbXBvbmVudCcsICdnb29nLnVpLmVkaXRvci5CdWJibGUnLCAnZ29vZy51c2VyQWdlbnQucHJvZHVjdCddLCB7J2xhbmcnOiAnZXM2JywgJ21vZHVsZSc6ICdnb29nJ30pOwpnb29nLmFkZERlcGVuZGVuY3koJ3VpL2VkaXRvci9kZWZhdWx0dG9vbGJhci5qcycsIFsnZ29vZy51aS5lZGl0b3IuQnV0dG9uRGVzY3JpcHRvcicsICdnb29nLnVpLmVkaXRvci5EZWZhdWx0VG9vbGJhciddLCBbJ2dvb2cuYXNzZXJ0cycsICdnb29nLmRvbScsICdnb29nLmRvbS5UYWdOYW1lJywgJ2dvb2cuZG9tLmNsYXNzbGlzdCcsICdnb29nLmVkaXRvci5Db21tYW5kJywgJ2dvb2cuc3R5bGUnLCAnZ29vZy51aS5lZGl0b3IuVG9vbGJhckZhY3RvcnknLCAnZ29vZy51aS5lZGl0b3IubWVzc2FnZXMnLCAnZ29vZy51c2VyQWdlbnQnXSwge30pOwpnb29nLmFkZERlcGVuZGVuY3koJ3VpL2VkaXRvci9saW5rZGlhbG9nLmpzJywgWydnb29nLnVpLmVkaXRvci5MaW5rRGlhbG9nJywgJ2dvb2cudWkuZWRpdG9yLkxpbmtEaWFsb2cuQmVmb3JlVGVzdExpbmtFdmVudCcsICdnb29nLnVpLmVkaXRvci5MaW5rRGlhbG9nLkV2ZW50VHlwZScsICdnb29nLnVpLmVkaXRvci5MaW5rRGlhbG9nLk9rRXZlbnQnXSwgWydnb29nLmExMXkuYXJpYScsICdnb29nLmExMXkuYXJpYS5TdGF0ZScsICdnb29nLmRvbScsICdnb29nLmRvbS5JbnB1dFR5cGUnLCAnZ29vZy5kb20uVGFnTmFtZScsICdnb29nLmRvbS5zYWZlJywgJ2dvb2cuZWRpdG9yLkJyb3dzZXJGZWF0dXJlJywgJ2dvb2cuZWRpdG9yLkxpbmsnLCAnZ29vZy5lZGl0b3IuZm9jdXMnLCAnZ29vZy5lZGl0b3Iubm9kZScsICdnb29nLmV2ZW50cy5FdmVudCcsICdnb29nLmV2ZW50cy5FdmVudEhhbmRsZXInLCAnZ29vZy5ldmVudHMuSW5wdXRIYW5kbGVyJywgJ2dvb2cuaHRtbC5TYWZlSHRtbCcsICdnb29nLmh0bWwuU2FmZUh0bWxGb3JtYXR0ZXInLCAnZ29vZy5zdHJpbmcnLCAnZ29vZy5zdHJpbmcuVW5pY29kZScsICdnb29nLnN0eWxlJywgJ2dvb2cudWkuQnV0dG9uJywgJ2dvb2cudWkuQ29tcG9uZW50JywgJ2dvb2cudWkuTGlua0J1dHRvblJlbmRlcmVyJywgJ2dvb2cudWkuZWRpdG9yLkFic3RyYWN0RGlhbG9nJywgJ2dvb2cudWkuZWRpdG9yLlRhYlBhbmUnLCAnZ29vZy51aS5lZGl0b3IubWVzc2FnZXMnLCAnZ29vZy51c2VyQWdlbnQnLCAnZ29vZy53aW5kb3cnXSwge30pOwpnb29nLmFkZERlcGVuZGVuY3koJ3VpL2VkaXRvci9saW5rZGlhbG9nX3Rlc3QuanMnLCBbJ2dvb2cudWkuZWRpdG9yLkxpbmtEaWFsb2dUZXN0J10sIFsnZ29vZy5kb20nLCAnZ29vZy5kb20uRG9tSGVscGVyJywgJ2dvb2cuZG9tLlRhZ05hbWUnLCAnZ29vZy5lZGl0b3IuQnJvd3NlckZlYXR1cmUnLCAnZ29vZy5lZGl0b3IuTGluaycsICdnb29nLmV2ZW50cycsICdnb29nLmV2ZW50cy5FdmVudEhhbmRsZXInLCAnZ29vZy5ldmVudHMuRXZlbnRUeXBlJywgJ2dvb2cuZXZlbnRzLktleUNvZGVzJywgJ2dvb2cuc3R5bGUnLCAnZ29vZy50ZXN0aW5nLk1vY2tDb250cm9sJywgJ2dvb2cudGVzdGluZy5Qcm9wZXJ0eVJlcGxhY2VyJywgJ2dvb2cudGVzdGluZy5kb20nLCAnZ29vZy50ZXN0aW5nLmV2ZW50cycsICdnb29nLnRlc3RpbmcuZXZlbnRzLkV2ZW50JywgJ2dvb2cudGVzdGluZy5tb2NrbWF0Y2hlcnMnLCAnZ29vZy50ZXN0aW5nLm1vY2ttYXRjaGVycy5Bcmd1bWVudE1hdGNoZXInLCAnZ29vZy50ZXN0aW5nLnRlc3RTdWl0ZScsICdnb29nLnVpLmVkaXRvci5BYnN0cmFjdERpYWxvZycsICdnb29nLnVpLmVkaXRvci5MaW5rRGlhbG9nJywgJ2dvb2cudWkuZWRpdG9yLm1lc3NhZ2VzJywgJ2dvb2cudXNlckFnZW50J10sIHsnbGFuZyc6ICdlczYnLCAnbW9kdWxlJzogJ2dvb2cnfSk7Cmdvb2cuYWRkRGVwZW5kZW5jeSgndWkvZWRpdG9yL21lc3NhZ2VzLmpzJywgWydnb29nLnVpLmVkaXRvci5tZXNzYWdlcyddLCBbJ2dvb2cuaHRtbC5TYWZlSHRtbEZvcm1hdHRlciddLCB7fSk7Cmdvb2cuYWRkRGVwZW5kZW5jeSgndWkvZWRpdG9yL3RhYnBhbmUuanMnLCBbJ2dvb2cudWkuZWRpdG9yLlRhYlBhbmUnXSwgWydnb29nLmFzc2VydHMnLCAnZ29vZy5kb20nLCAnZ29vZy5kb20uSW5wdXRUeXBlJywgJ2dvb2cuZG9tLlRhZ05hbWUnLCAnZ29vZy5kb20uY2xhc3NsaXN0JywgJ2dvb2cuZXZlbnRzLkV2ZW50SGFuZGxlcicsICdnb29nLmV2ZW50cy5FdmVudFR5cGUnLCAnZ29vZy5zdHlsZScsICdnb29nLnVpLkNvbXBvbmVudCcsICdnb29nLnVpLkNvbnRyb2wnLCAnZ29vZy51aS5UYWInLCAnZ29vZy51aS5UYWJCYXInXSwge30pOwpnb29nLmFkZERlcGVuZGVuY3koJ3VpL2VkaXRvci90b29sYmFyY29udHJvbGxlci5qcycsIFsnZ29vZy51aS5lZGl0b3IuVG9vbGJhckNvbnRyb2xsZXInXSwgWydnb29nLmVkaXRvci5GaWVsZCcsICdnb29nLmV2ZW50cy5FdmVudEhhbmRsZXInLCAnZ29vZy5ldmVudHMuRXZlbnRUYXJnZXQnLCAnZ29vZy51aS5Db21wb25lbnQnXSwge30pOwpnb29nLmFkZERlcGVuZGVuY3koJ3VpL2VkaXRvci90b29sYmFyZmFjdG9yeS5qcycsIFsnZ29vZy51aS5lZGl0b3IuVG9vbGJhckZhY3RvcnknXSwgWydnb29nLmFycmF5JywgJ2dvb2cuZG9tJywgJ2dvb2cuZG9tLlRhZ05hbWUnLCAnZ29vZy5zdHJpbmcnLCAnZ29vZy5zdHJpbmcuVW5pY29kZScsICdnb29nLnN0eWxlJywgJ2dvb2cudWkuQ29tcG9uZW50JywgJ2dvb2cudWkuQ29udGFpbmVyJywgJ2dvb2cudWkuT3B0aW9uJywgJ2dvb2cudWkuVG9vbGJhcicsICdnb29nLnVpLlRvb2xiYXJCdXR0b24nLCAnZ29vZy51aS5Ub29sYmFyQ29sb3JNZW51QnV0dG9uJywgJ2dvb2cudWkuVG9vbGJhck1lbnVCdXR0b24nLCAnZ29vZy51aS5Ub29sYmFyUmVuZGVyZXInLCAnZ29vZy51aS5Ub29sYmFyU2VsZWN0JywgJ2dvb2cudXNlckFnZW50J10sIHt9KTsKZ29vZy5hZGREZXBlbmRlbmN5KCd1aS9lZGl0b3IvdG9vbGJhcmZhY3RvcnlfdGVzdC5qcycsIFsnZ29vZy51aS5lZGl0b3IuVG9vbGJhckZhY3RvcnlUZXN0J10sIFsnZ29vZy5kb20nLCAnZ29vZy50ZXN0aW5nLkV4cGVjdGVkRmFpbHVyZXMnLCAnZ29vZy50ZXN0aW5nLmVkaXRvci5UZXN0SGVscGVyJywgJ2dvb2cudGVzdGluZy50ZXN0U3VpdGUnLCAnZ29vZy51aS5lZGl0b3IuVG9vbGJhckZhY3RvcnknLCAnZ29vZy51c2VyQWdlbnQnXSwgeydsYW5nJzogJ2VzNicsICdtb2R1bGUnOiAnZ29vZyd9KTsKZ29vZy5hZGREZXBlbmRlbmN5KCd1aS9lbW9qaS9lbW9qaS5qcycsIFsnZ29vZy51aS5lbW9qaS5FbW9qaSddLCBbXSwge30pOwpnb29nLmFkZERlcGVuZGVuY3koJ3VpL2Vtb2ppL2Vtb2ppcGFsZXR0ZS5qcycsIFsnZ29vZy51aS5lbW9qaS5FbW9qaVBhbGV0dGUnXSwgWydnb29nLmV2ZW50cy5FdmVudFR5cGUnLCAnZ29vZy5uZXQuSW1hZ2VMb2FkZXInLCAnZ29vZy51aS5QYWxldHRlJywgJ2dvb2cudWkuZW1vamkuRW1vamknLCAnZ29vZy51aS5lbW9qaS5FbW9qaVBhbGV0dGVSZW5kZXJlciddLCB7fSk7Cmdvb2cuYWRkRGVwZW5kZW5jeSgndWkvZW1vamkvZW1vamlwYWxldHRlcmVuZGVyZXIuanMnLCBbJ2dvb2cudWkuZW1vamkuRW1vamlQYWxldHRlUmVuZGVyZXInXSwgWydnb29nLmExMXkuYXJpYScsICdnb29nLmFzc2VydHMnLCAnZ29vZy5kb20uTm9kZVR5cGUnLCAnZ29vZy5kb20uVGFnTmFtZScsICdnb29nLmRvbS5jbGFzc2xpc3QnLCAnZ29vZy5zdHlsZScsICdnb29nLnVpLlBhbGV0dGVSZW5kZXJlcicsICdnb29nLnVpLmVtb2ppLkVtb2ppJ10sIHt9KTsKZ29vZy5hZGREZXBlbmRlbmN5KCd1aS9lbW9qaS9lbW9qaXBpY2tlci5qcycsIFsnZ29vZy51aS5lbW9qaS5FbW9qaVBpY2tlciddLCBbJ2dvb2cuZG9tLlRhZ05hbWUnLCAnZ29vZy5zdHlsZScsICdnb29nLnVpLkNvbXBvbmVudCcsICdnb29nLnVpLlRhYlBhbmUnLCAnZ29vZy51aS5lbW9qaS5FbW9qaScsICdnb29nLnVpLmVtb2ppLkVtb2ppUGFsZXR0ZScsICdnb29nLnVpLmVtb2ppLkVtb2ppUGFsZXR0ZVJlbmRlcmVyJywgJ2dvb2cudWkuZW1vamkuUHJvZ3Jlc3NpdmVFbW9qaVBhbGV0dGVSZW5kZXJlciddLCB7fSk7Cmdvb2cuYWRkRGVwZW5kZW5jeSgndWkvZW1vamkvZW1vamlwaWNrZXJfdGVzdC5qcycsIFsnZ29vZy51aS5lbW9qaS5FbW9qaVBpY2tlclRlc3QnXSwgWydnb29nLmRvbS5UYWdOYW1lJywgJ2dvb2cuZG9tLmNsYXNzbGlzdCcsICdnb29nLmV2ZW50cy5FdmVudEhhbmRsZXInLCAnZ29vZy5zdHlsZScsICdnb29nLnRlc3RpbmcuZXZlbnRzJywgJ2dvb2cudGVzdGluZy50ZXN0U3VpdGUnLCAnZ29vZy51aS5Db21wb25lbnQnLCAnZ29vZy51aS5lbW9qaS5FbW9qaScsICdnb29nLnVpLmVtb2ppLkVtb2ppUGlja2VyJywgJ2dvb2cudWkuZW1vamkuU3ByaXRlSW5mbyddLCB7J2xhbmcnOiAnZXM2JywgJ21vZHVsZSc6ICdnb29nJ30pOwpnb29nLmFkZERlcGVuZGVuY3koJ3VpL2Vtb2ppL2Zhc3Rfbm9ucHJvZ3Jlc3NpdmVfZW1vamlwaWNrZXJfdGVzdC5qcycsIFsnZ29vZy51aS5lbW9qaS5GYXN0Tm9uUHJvZ3Jlc3NpdmVFbW9qaVBpY2tlclRlc3QnXSwgWydnb29nLlByb21pc2UnLCAnZ29vZy5kb20uY2xhc3NsaXN0JywgJ2dvb2cuZXZlbnRzJywgJ2dvb2cuZXZlbnRzLkV2ZW50VHlwZScsICdnb29nLm5ldC5FdmVudFR5cGUnLCAnZ29vZy5zdHlsZScsICdnb29nLnRlc3RpbmcuVGVzdENhc2UnLCAnZ29vZy50ZXN0aW5nLnRlc3RTdWl0ZScsICdnb29nLnVpLmVtb2ppLkVtb2ppJywgJ2dvb2cudWkuZW1vamkuRW1vamlQaWNrZXInLCAnZ29vZy51aS5lbW9qaS5TcHJpdGVJbmZvJ10sIHsnbGFuZyc6ICdlczYnLCAnbW9kdWxlJzogJ2dvb2cnfSk7Cmdvb2cuYWRkRGVwZW5kZW5jeSgndWkvZW1vamkvZmFzdF9wcm9ncmVzc2l2ZV9lbW9qaXBpY2tlcl90ZXN0LmpzJywgWydnb29nLnVpLmVtb2ppLkZhc3RQcm9ncmVzc2l2ZUVtb2ppUGlja2VyVGVzdCddLCBbJ2dvb2cuUHJvbWlzZScsICdnb29nLmRvbS5jbGFzc2xpc3QnLCAnZ29vZy5ldmVudHMnLCAnZ29vZy5ldmVudHMuRXZlbnRUeXBlJywgJ2dvb2cubmV0LkV2ZW50VHlwZScsICdnb29nLnN0eWxlJywgJ2dvb2cudGVzdGluZy50ZXN0U3VpdGUnLCAnZ29vZy51aS5lbW9qaS5FbW9qaScsICdnb29nLnVpLmVtb2ppLkVtb2ppUGlja2VyJywgJ2dvb2cudWkuZW1vamkuU3ByaXRlSW5mbyddLCB7J2xhbmcnOiAnZXM2JywgJ21vZHVsZSc6ICdnb29nJ30pOwpnb29nLmFkZERlcGVuZGVuY3koJ3VpL2Vtb2ppL3BvcHVwZW1vamlwaWNrZXIuanMnLCBbJ2dvb2cudWkuZW1vamkuUG9wdXBFbW9qaVBpY2tlciddLCBbJ2dvb2cuZXZlbnRzLkV2ZW50VHlwZScsICdnb29nLnBvc2l0aW9uaW5nLkFuY2hvcmVkUG9zaXRpb24nLCAnZ29vZy5wb3NpdGlvbmluZy5Db3JuZXInLCAnZ29vZy51aS5Db21wb25lbnQnLCAnZ29vZy51aS5Qb3B1cCcsICdnb29nLnVpLmVtb2ppLkVtb2ppUGlja2VyJ10sIHt9KTsKZ29vZy5hZGREZXBlbmRlbmN5KCd1aS9lbW9qaS9wb3B1cGVtb2ppcGlja2VyX3Rlc3QuanMnLCBbJ2dvb2cudWkuZW1vamkuUG9wdXBFbW9qaVBpY2tlclRlc3QnXSwgWydnb29nLmRvbScsICdnb29nLnRlc3RpbmcudGVzdFN1aXRlJywgJ2dvb2cudWkuZW1vamkuUG9wdXBFbW9qaVBpY2tlciddLCB7J2xhbmcnOiAnZXM2JywgJ21vZHVsZSc6ICdnb29nJ30pOwpnb29nLmFkZERlcGVuZGVuY3koJ3VpL2Vtb2ppL3Byb2dyZXNzaXZlZW1vamlwYWxldHRlcmVuZGVyZXIuanMnLCBbJ2dvb2cudWkuZW1vamkuUHJvZ3Jlc3NpdmVFbW9qaVBhbGV0dGVSZW5kZXJlciddLCBbJ2dvb2cuZG9tLlRhZ05hbWUnLCAnZ29vZy5zdHlsZScsICdnb29nLnVpLmVtb2ppLkVtb2ppUGFsZXR0ZVJlbmRlcmVyJ10sIHt9KTsKZ29vZy5hZGREZXBlbmRlbmN5KCd1aS9lbW9qaS9zcHJpdGVpbmZvLmpzJywgWydnb29nLnVpLmVtb2ppLlNwcml0ZUluZm8nXSwgW10sIHsnbGFuZyc6ICdlczYnfSk7Cmdvb2cuYWRkRGVwZW5kZW5jeSgndWkvZW1vamkvc3ByaXRlaW5mb190ZXN0LmpzJywgWydnb29nLnVpLmVtb2ppLlNwcml0ZUluZm9UZXN0J10sIFsnZ29vZy50ZXN0aW5nLnRlc3RTdWl0ZScsICdnb29nLnVpLmVtb2ppLlNwcml0ZUluZm8nXSwgeydsYW5nJzogJ2VzNicsICdtb2R1bGUnOiAnZ29vZyd9KTsKZ29vZy5hZGREZXBlbmRlbmN5KCd1aS9maWx0ZXJlZG1lbnUuanMnLCBbJ2dvb2cudWkuRmlsdGVyZWRNZW51J10sIFsnZ29vZy5hMTF5LmFyaWEnLCAnZ29vZy5hMTF5LmFyaWEuQXV0b0NvbXBsZXRlVmFsdWVzJywgJ2dvb2cuYTExeS5hcmlhLlN0YXRlJywgJ2dvb2cuZG9tJywgJ2dvb2cuZG9tLklucHV0VHlwZScsICdnb29nLmRvbS5UYWdOYW1lJywgJ2dvb2cuZXZlbnRzJywgJ2dvb2cuZXZlbnRzLkV2ZW50VHlwZScsICdnb29nLmV2ZW50cy5JbnB1dEhhbmRsZXInLCAnZ29vZy5ldmVudHMuS2V5Q29kZXMnLCAnZ29vZy5zdHJpbmcnLCAnZ29vZy5zdHlsZScsICdnb29nLnVpLkNvbXBvbmVudCcsICdnb29nLnVpLkZpbHRlck9ic2VydmluZ01lbnVJdGVtJywgJ2dvb2cudWkuTWVudScsICdnb29nLnVpLk1lbnVJdGVtJywgJ2dvb2cudXNlckFnZW50J10sIHt9KTsKZ29vZy5hZGREZXBlbmRlbmN5KCd1aS9maWx0ZXJlZG1lbnVfdGVzdC5qcycsIFsnZ29vZy51aS5GaWx0ZXJlZE1lbnVUZXN0J10sIFsnZ29vZy5hMTF5LmFyaWEnLCAnZ29vZy5hMTF5LmFyaWEuQXV0b0NvbXBsZXRlVmFsdWVzJywgJ2dvb2cuYTExeS5hcmlhLlN0YXRlJywgJ2dvb2cuZG9tJywgJ2dvb2cuZG9tLlRhZ05hbWUnLCAnZ29vZy5ldmVudHMnLCAnZ29vZy5ldmVudHMuRXZlbnRUeXBlJywgJ2dvb2cuZXZlbnRzLktleUNvZGVzJywgJ2dvb2cubWF0aC5SZWN0JywgJ2dvb2cuc3R5bGUnLCAnZ29vZy50ZXN0aW5nLmV2ZW50cycsICdnb29nLnRlc3RpbmcudGVzdFN1aXRlJywgJ2dvb2cudWkuRmlsdGVyZWRNZW51JywgJ2dvb2cudWkuTWVudUl0ZW0nXSwgeydsYW5nJzogJ2VzNicsICdtb2R1bGUnOiAnZ29vZyd9KTsKZ29vZy5hZGREZXBlbmRlbmN5KCd1aS9maWx0ZXJvYnNlcnZpbmdtZW51aXRlbS5qcycsIFsnZ29vZy51aS5GaWx0ZXJPYnNlcnZpbmdNZW51SXRlbSddLCBbJ2dvb2cudWkuRmlsdGVyT2JzZXJ2aW5nTWVudUl0ZW1SZW5kZXJlcicsICdnb29nLnVpLk1lbnVJdGVtJywgJ2dvb2cudWkucmVnaXN0cnknXSwge30pOwpnb29nLmFkZERlcGVuZGVuY3koJ3VpL2ZpbHRlcm9ic2VydmluZ21lbnVpdGVtcmVuZGVyZXIuanMnLCBbJ2dvb2cudWkuRmlsdGVyT2JzZXJ2aW5nTWVudUl0ZW1SZW5kZXJlciddLCBbJ2dvb2cudWkuTWVudUl0ZW1SZW5kZXJlciddLCB7fSk7Cmdvb2cuYWRkRGVwZW5kZW5jeSgndWkvZmxhdGJ1dHRvbnJlbmRlcmVyLmpzJywgWydnb29nLnVpLkZsYXRCdXR0b25SZW5kZXJlciddLCBbJ2dvb2cuYTExeS5hcmlhLlJvbGUnLCAnZ29vZy5hc3NlcnRzJywgJ2dvb2cuZG9tLlRhZ05hbWUnLCAnZ29vZy5kb20uY2xhc3NsaXN0JywgJ2dvb2cudWkuQnV0dG9uJywgJ2dvb2cudWkuQnV0dG9uUmVuZGVyZXInLCAnZ29vZy51aS5JTkxJTkVfQkxPQ0tfQ0xBU1NOQU1FJywgJ2dvb2cudWkucmVnaXN0cnknXSwge30pOwpnb29nLmFkZERlcGVuZGVuY3koJ3VpL2ZsYXRtZW51YnV0dG9ucmVuZGVyZXIuanMnLCBbJ2dvb2cudWkuRmxhdE1lbnVCdXR0b25SZW5kZXJlciddLCBbJ2dvb2cuZG9tJywgJ2dvb2cuZG9tLlRhZ05hbWUnLCAnZ29vZy5zdHlsZScsICdnb29nLnVpLkZsYXRCdXR0b25SZW5kZXJlcicsICdnb29nLnVpLklOTElORV9CTE9DS19DTEFTU05BTUUnLCAnZ29vZy51aS5NZW51JywgJ2dvb2cudWkuTWVudUJ1dHRvbicsICdnb29nLnVpLk1lbnVSZW5kZXJlcicsICdnb29nLnVpLnJlZ2lzdHJ5J10sIHt9KTsKZ29vZy5hZGREZXBlbmRlbmN5KCd1aS9mb3JtcG9zdC5qcycsIFsnZ29vZy51aS5Gb3JtUG9zdCddLCBbJ2dvb2cuYXJyYXknLCAnZ29vZy5kb20uSW5wdXRUeXBlJywgJ2dvb2cuZG9tLlRhZ05hbWUnLCAnZ29vZy5kb20uc2FmZScsICdnb29nLmh0bWwuU2FmZUh0bWwnLCAnZ29vZy51aS5Db21wb25lbnQnXSwge30pOwpnb29nLmFkZERlcGVuZGVuY3koJ3VpL2Zvcm1wb3N0X3Rlc3QuanMnLCBbJ2dvb2cudWkuRm9ybVBvc3RUZXN0J10sIFsnZ29vZy5hcnJheScsICdnb29nLmRvbScsICdnb29nLmRvbS5UYWdOYW1lJywgJ2dvb2cub2JqZWN0JywgJ2dvb2cudGVzdGluZy50ZXN0U3VpdGUnLCAnZ29vZy51aS5Gb3JtUG9zdCcsICdnb29nLnVzZXJBZ2VudC5wcm9kdWN0JywgJ2dvb2cudXNlckFnZW50LnByb2R1Y3QuaXNWZXJzaW9uJ10sIHsnbGFuZyc6ICdlczYnLCAnbW9kdWxlJzogJ2dvb2cnfSk7Cmdvb2cuYWRkRGVwZW5kZW5jeSgndWkvZ2F1Z2UuanMnLCBbJ2dvb2cudWkuR2F1Z2UnLCAnZ29vZy51aS5HYXVnZUNvbG9yZWRSYW5nZSddLCBbJ2dvb2cuYTExeS5hcmlhJywgJ2dvb2cuYXNzZXJ0cycsICdnb29nLmRvbS5UYWdOYW1lJywgJ2dvb2cuZXZlbnRzJywgJ2dvb2cuZnguQW5pbWF0aW9uJywgJ2dvb2cuZnguVHJhbnNpdGlvbicsICdnb29nLmZ4LmVhc2luZycsICdnb29nLmdyYXBoaWNzJywgJ2dvb2cuZ3JhcGhpY3MuRm9udCcsICdnb29nLmdyYXBoaWNzLlBhdGgnLCAnZ29vZy5ncmFwaGljcy5Tb2xpZEZpbGwnLCAnZ29vZy5tYXRoJywgJ2dvb2cudWkuQ29tcG9uZW50JywgJ2dvb2cudWkuR2F1Z2VUaGVtZSddLCB7fSk7Cmdvb2cuYWRkRGVwZW5kZW5jeSgndWkvZ2F1Z2V0aGVtZS5qcycsIFsnZ29vZy51aS5HYXVnZVRoZW1lJ10sIFsnZ29vZy5ncmFwaGljcy5MaW5lYXJHcmFkaWVudCcsICdnb29nLmdyYXBoaWNzLlNvbGlkRmlsbCcsICdnb29nLmdyYXBoaWNzLlN0cm9rZSddLCB7fSk7Cmdvb2cuYWRkRGVwZW5kZW5jeSgndWkvaG92ZXJjYXJkLmpzJywgWydnb29nLnVpLkhvdmVyQ2FyZCcsICdnb29nLnVpLkhvdmVyQ2FyZC5FdmVudFR5cGUnLCAnZ29vZy51aS5Ib3ZlckNhcmQuVHJpZ2dlckV2ZW50J10sIFsnZ29vZy5hcnJheScsICdnb29nLmRvbScsICdnb29nLmV2ZW50cycsICdnb29nLmV2ZW50cy5FdmVudCcsICdnb29nLmV2ZW50cy5FdmVudFR5cGUnLCAnZ29vZy51aS5BZHZhbmNlZFRvb2x0aXAnLCAnZ29vZy51aS5Qb3B1cEJhc2UnLCAnZ29vZy51aS5Ub29sdGlwJ10sIHt9KTsKZ29vZy5hZGREZXBlbmRlbmN5KCd1aS9ob3ZlcmNhcmRfdGVzdC5qcycsIFsnZ29vZy51aS5Ib3ZlckNhcmRUZXN0J10sIFsnZ29vZy5kb20nLCAnZ29vZy5ldmVudHMnLCAnZ29vZy5tYXRoLkNvb3JkaW5hdGUnLCAnZ29vZy5zdHlsZScsICdnb29nLnRlc3RpbmcuTW9ja0Nsb2NrJywgJ2dvb2cudGVzdGluZy5ldmVudHMnLCAnZ29vZy50ZXN0aW5nLmV2ZW50cy5FdmVudCcsICdnb29nLnRlc3RpbmcudGVzdFN1aXRlJywgJ2dvb2cudWkuSG92ZXJDYXJkJ10sIHsnbGFuZyc6ICdlczYnLCAnbW9kdWxlJzogJ2dvb2cnfSk7Cmdvb2cuYWRkRGVwZW5kZW5jeSgndWkvaHN2YXBhbGV0dGUuanMnLCBbJ2dvb2cudWkuSHN2YVBhbGV0dGUnXSwgWydnb29nLmFycmF5JywgJ2dvb2cuY29sb3IuYWxwaGEnLCAnZ29vZy5kb20uVGFnTmFtZScsICdnb29nLmV2ZW50cycsICdnb29nLmV2ZW50cy5FdmVudFR5cGUnLCAnZ29vZy5zdHlsZScsICdnb29nLnVpLkNvbXBvbmVudCcsICdnb29nLnVpLkhzdlBhbGV0dGUnXSwge30pOwpnb29nLmFkZERlcGVuZGVuY3koJ3VpL2hzdmFwYWxldHRlX3Rlc3QuanMnLCBbJ2dvb2cudWkuSHN2YVBhbGV0dGVUZXN0J10sIFsnZ29vZy5jb2xvci5hbHBoYScsICdnb29nLmRvbS5UYWdOYW1lJywgJ2dvb2cuZG9tLmNsYXNzbGlzdCcsICdnb29nLmV2ZW50cy5FdmVudCcsICdnb29nLm1hdGguQ29vcmRpbmF0ZScsICdnb29nLnN0eWxlJywgJ2dvb2cudGVzdGluZy5Qcm9wZXJ0eVJlcGxhY2VyJywgJ2dvb2cudGVzdGluZy50ZXN0U3VpdGUnLCAnZ29vZy51aS5Ic3ZhUGFsZXR0ZScsICdnb29nLnVzZXJBZ2VudCddLCB7J2xhbmcnOiAnZXM2JywgJ21vZHVsZSc6ICdnb29nJ30pOwpnb29nLmFkZERlcGVuZGVuY3koJ3VpL2hzdnBhbGV0dGUuanMnLCBbJ2dvb2cudWkuSHN2UGFsZXR0ZSddLCBbJ2dvb2cuY29sb3InLCAnZ29vZy5kb20uSW5wdXRUeXBlJywgJ2dvb2cuZG9tLlRhZ05hbWUnLCAnZ29vZy5ldmVudHMnLCAnZ29vZy5ldmVudHMuRXZlbnRUeXBlJywgJ2dvb2cuZXZlbnRzLklucHV0SGFuZGxlcicsICdnb29nLnN0eWxlJywgJ2dvb2cuc3R5bGUuYmlkaScsICdnb29nLnVpLkNvbXBvbmVudCcsICdnb29nLnVzZXJBZ2VudCddLCB7fSk7Cmdvb2cuYWRkRGVwZW5kZW5jeSgndWkvaHN2cGFsZXR0ZV90ZXN0LmpzJywgWydnb29nLnVpLkhzdlBhbGV0dGVUZXN0J10sIFsnZ29vZy5jb2xvcicsICdnb29nLmRvbS5UYWdOYW1lJywgJ2dvb2cuZG9tLmNsYXNzbGlzdCcsICdnb29nLmV2ZW50cycsICdnb29nLmV2ZW50cy5FdmVudCcsICdnb29nLm1hdGguQ29vcmRpbmF0ZScsICdnb29nLnN0eWxlJywgJ2dvb2cudGVzdGluZy5Qcm9wZXJ0eVJlcGxhY2VyJywgJ2dvb2cudGVzdGluZy50ZXN0U3VpdGUnLCAnZ29vZy51aS5Db21wb25lbnQnLCAnZ29vZy51aS5Ic3ZQYWxldHRlJywgJ2dvb2cudXNlckFnZW50J10sIHsnbGFuZyc6ICdlczYnLCAnbW9kdWxlJzogJ2dvb2cnfSk7Cmdvb2cuYWRkRGVwZW5kZW5jeSgndWkvaWRnZW5lcmF0b3IuanMnLCBbJ2dvb2cudWkuSWRHZW5lcmF0b3InXSwgW10sIHt9KTsKZ29vZy5hZGREZXBlbmRlbmN5KCd1aS9pZGxldGltZXIuanMnLCBbJ2dvb2cudWkuSWRsZVRpbWVyJ10sIFsnZ29vZy5UaW1lcicsICdnb29nLmV2ZW50cycsICdnb29nLmV2ZW50cy5FdmVudFRhcmdldCcsICdnb29nLnN0cnVjdHMuU2V0JywgJ2dvb2cudWkuQWN0aXZpdHlNb25pdG9yJ10sIHt9KTsKZ29vZy5hZGREZXBlbmRlbmN5KCd1aS9pZGxldGltZXJfdGVzdC5qcycsIFsnZ29vZy51aS5JZGxlVGltZXJUZXN0J10sIFsnZ29vZy5ldmVudHMnLCAnZ29vZy50ZXN0aW5nLk1vY2tDbG9jaycsICdnb29nLnRlc3RpbmcudGVzdFN1aXRlJywgJ2dvb2cudWkuSWRsZVRpbWVyJywgJ2dvb2cudWkuTW9ja0FjdGl2aXR5TW9uaXRvciddLCB7J2xhbmcnOiAnZXM2JywgJ21vZHVsZSc6ICdnb29nJ30pOwpnb29nLmFkZERlcGVuZGVuY3koJ3VpL2lmcmFtZW1hc2suanMnLCBbJ2dvb2cudWkuSWZyYW1lTWFzayddLCBbJ2dvb2cuRGlzcG9zYWJsZScsICdnb29nLlRpbWVyJywgJ2dvb2cuZG9tJywgJ2dvb2cuZG9tLmlmcmFtZScsICdnb29nLmV2ZW50cy5FdmVudEhhbmRsZXInLCAnZ29vZy5zdHJ1Y3RzLlBvb2wnLCAnZ29vZy5zdHlsZSddLCB7fSk7Cmdvb2cuYWRkRGVwZW5kZW5jeSgndWkvaWZyYW1lbWFza190ZXN0LmpzJywgWydnb29nLnVpLklmcmFtZU1hc2tUZXN0J10sIFsnZ29vZy5kb20nLCAnZ29vZy5kb20uVGFnTmFtZScsICdnb29nLmRvbS5pZnJhbWUnLCAnZ29vZy5zdHJ1Y3RzLlBvb2wnLCAnZ29vZy5zdHlsZScsICdnb29nLnRlc3RpbmcuTW9ja0Nsb2NrJywgJ2dvb2cudGVzdGluZy5TdHJpY3RNb2NrJywgJ2dvb2cudGVzdGluZy50ZXN0U3VpdGUnLCAnZ29vZy51aS5JZnJhbWVNYXNrJywgJ2dvb2cudWkuUG9wdXAnLCAnZ29vZy51aS5Qb3B1cEJhc2UnLCAnZ29vZy51c2VyQWdlbnQnXSwgeydsYW5nJzogJ2VzNicsICdtb2R1bGUnOiAnZ29vZyd9KTsKZ29vZy5hZGREZXBlbmRlbmN5KCd1aS9pbWFnZWxlc3NidXR0b25yZW5kZXJlci5qcycsIFsnZ29vZy51aS5JbWFnZWxlc3NCdXR0b25SZW5kZXJlciddLCBbJ2dvb2cuZG9tLlRhZ05hbWUnLCAnZ29vZy5kb20uY2xhc3NsaXN0JywgJ2dvb2cudWkuQnV0dG9uJywgJ2dvb2cudWkuQ29tcG9uZW50JywgJ2dvb2cudWkuQ3VzdG9tQnV0dG9uUmVuZGVyZXInLCAnZ29vZy51aS5JTkxJTkVfQkxPQ0tfQ0xBU1NOQU1FJywgJ2dvb2cudWkucmVnaXN0cnknXSwge30pOwpnb29nLmFkZERlcGVuZGVuY3koJ3VpL2ltYWdlbGVzc21lbnVidXR0b25yZW5kZXJlci5qcycsIFsnZ29vZy51aS5JbWFnZWxlc3NNZW51QnV0dG9uUmVuZGVyZXInXSwgWydnb29nLmRvbScsICdnb29nLmRvbS5UYWdOYW1lJywgJ2dvb2cuZG9tLmNsYXNzbGlzdCcsICdnb29nLnVpLklOTElORV9CTE9DS19DTEFTU05BTUUnLCAnZ29vZy51aS5NZW51QnV0dG9uJywgJ2dvb2cudWkuTWVudUJ1dHRvblJlbmRlcmVyJywgJ2dvb2cudWkucmVnaXN0cnknXSwge30pOwpnb29nLmFkZERlcGVuZGVuY3koJ3VpL2lucHV0ZGF0ZXBpY2tlci5qcycsIFsnZ29vZy51aS5JbnB1dERhdGVQaWNrZXInXSwgWydnb29nLmRhdGUuRGF0ZVRpbWUnLCAnZ29vZy5kb20nLCAnZ29vZy5kb20uSW5wdXRUeXBlJywgJ2dvb2cuZG9tLlRhZ05hbWUnLCAnZ29vZy5pMThuLkRhdGVUaW1lUGFyc2UnLCAnZ29vZy5zdHJpbmcnLCAnZ29vZy51aS5Db21wb25lbnQnLCAnZ29vZy51aS5EYXRlUGlja2VyJywgJ2dvb2cudWkuTGFiZWxJbnB1dCcsICdnb29nLnVpLlBvcHVwQmFzZScsICdnb29nLnVpLlBvcHVwRGF0ZVBpY2tlciddLCB7fSk7Cmdvb2cuYWRkRGVwZW5kZW5jeSgndWkvaW5wdXRkYXRlcGlja2VyX3Rlc3QuanMnLCBbJ2dvb2cudWkuSW5wdXREYXRlUGlja2VyVGVzdCddLCBbJ2dvb2cuZG9tJywgJ2dvb2cuaTE4bi5EYXRlVGltZUZvcm1hdCcsICdnb29nLmkxOG4uRGF0ZVRpbWVQYXJzZScsICdnb29nLnRlc3RpbmcudGVzdFN1aXRlJywgJ2dvb2cudWkuSW5wdXREYXRlUGlja2VyJ10sIHsnbGFuZyc6ICdlczYnLCAnbW9kdWxlJzogJ2dvb2cnfSk7Cmdvb2cuYWRkRGVwZW5kZW5jeSgndWkvaXRlbWV2ZW50LmpzJywgWydnb29nLnVpLkl0ZW1FdmVudCddLCBbJ2dvb2cuZXZlbnRzLkV2ZW50J10sIHt9KTsKZ29vZy5hZGREZXBlbmRlbmN5KCd1aS9rZXlib2FyZGV2ZW50ZGF0YS5qcycsIFsnZ29vZy51aS5LZXlib2FyZEV2ZW50RGF0YSddLCBbJ2dvb2cuYXNzZXJ0cycsICdnb29nLmV2ZW50cy5Ccm93c2VyRXZlbnQnXSwgeydsYW5nJzogJ2VzNid9KTsKZ29vZy5hZGREZXBlbmRlbmN5KCd1aS9rZXlib2FyZHNob3J0Y3V0aGFuZGxlci5qcycsIFsnZ29vZy51aS5LZXlib2FyZFNob3J0Y3V0RXZlbnQnLCAnZ29vZy51aS5LZXlib2FyZFNob3J0Y3V0SGFuZGxlcicsICdnb29nLnVpLktleWJvYXJkU2hvcnRjdXRIYW5kbGVyLkV2ZW50VHlwZScsICdnb29nLnVpLktleWJvYXJkU2hvcnRjdXRIYW5kbGVyLk1vZGlmaWVycyddLCBbJ2dvb2cuYXJyYXknLCAnZ29vZy5hc3NlcnRzJywgJ2dvb2cuZG9tLlRhZ05hbWUnLCAnZ29vZy5ldmVudHMnLCAnZ29vZy5ldmVudHMuRXZlbnQnLCAnZ29vZy5ldmVudHMuRXZlbnRUYXJnZXQnLCAnZ29vZy5ldmVudHMuRXZlbnRUeXBlJywgJ2dvb2cuZXZlbnRzLktleUNvZGVzJywgJ2dvb2cuZXZlbnRzLktleU5hbWVzJywgJ2dvb2cuZXZlbnRzLktleXMnLCAnZ29vZy5vYmplY3QnLCAnZ29vZy51aS5LZXlib2FyZEV2ZW50RGF0YScsICdnb29nLnVpLlN5bnRoZXRpY0tleWJvYXJkRXZlbnQnLCAnZ29vZy51c2VyQWdlbnQnXSwge30pOwpnb29nLmFkZERlcGVuZGVuY3koJ3VpL2tleWJvYXJkc2hvcnRjdXRoYW5kbGVyX3Rlc3QuanMnLCBbJ2dvb2cudWkuS2V5Ym9hcmRTaG9ydGN1dEhhbmRsZXJUZXN0J10sIFsnZ29vZy5kb20nLCAnZ29vZy5ldmVudHMnLCAnZ29vZy5ldmVudHMuQnJvd3NlckV2ZW50JywgJ2dvb2cuZXZlbnRzLktleUNvZGVzJywgJ2dvb2cudGVzdGluZy5Nb2NrQ2xvY2snLCAnZ29vZy50ZXN0aW5nLlByb3BlcnR5UmVwbGFjZXInLCAnZ29vZy50ZXN0aW5nLlN0cmljdE1vY2snLCAnZ29vZy50ZXN0aW5nLmV2ZW50cycsICdnb29nLnRlc3RpbmcudGVzdFN1aXRlJywgJ2dvb2cudWkuS2V5Ym9hcmRTaG9ydGN1dEhhbmRsZXInLCAnZ29vZy51c2VyQWdlbnQnXSwgeydsYW5nJzogJ2VzNicsICdtb2R1bGUnOiAnZ29vZyd9KTsKZ29vZy5hZGREZXBlbmRlbmN5KCd1aS9sYWJlbGlucHV0LmpzJywgWydnb29nLnVpLkxhYmVsSW5wdXQnXSwgWydnb29nLlRpbWVyJywgJ2dvb2cuYTExeS5hcmlhJywgJ2dvb2cuYTExeS5hcmlhLlN0YXRlJywgJ2dvb2cuYXNzZXJ0cycsICdnb29nLmRvbScsICdnb29nLmRvbS5JbnB1dFR5cGUnLCAnZ29vZy5kb20uVGFnTmFtZScsICdnb29nLmRvbS5jbGFzc2xpc3QnLCAnZ29vZy5ldmVudHMuRXZlbnRIYW5kbGVyJywgJ2dvb2cuZXZlbnRzLkV2ZW50VHlwZScsICdnb29nLnVpLkNvbXBvbmVudCcsICdnb29nLnVzZXJBZ2VudCddLCB7fSk7Cmdvb2cuYWRkRGVwZW5kZW5jeSgndWkvbGFiZWxpbnB1dF90ZXN0LmpzJywgWydnb29nLnVpLkxhYmVsSW5wdXRUZXN0J10sIFsnZ29vZy5hMTF5LmFyaWEnLCAnZ29vZy5hMTF5LmFyaWEuU3RhdGUnLCAnZ29vZy5kb20nLCAnZ29vZy5kb20uY2xhc3NsaXN0JywgJ2dvb2cuZXZlbnRzLkV2ZW50VHlwZScsICdnb29nLnRlc3RpbmcuTW9ja0Nsb2NrJywgJ2dvb2cudGVzdGluZy5ldmVudHMnLCAnZ29vZy50ZXN0aW5nLmV2ZW50cy5FdmVudCcsICdnb29nLnRlc3RpbmcudGVzdFN1aXRlJywgJ2dvb2cudWkuTGFiZWxJbnB1dCcsICdnb29nLnVzZXJBZ2VudCddLCB7J2xhbmcnOiAnZXM2JywgJ21vZHVsZSc6ICdnb29nJ30pOwpnb29nLmFkZERlcGVuZGVuY3koJ3VpL2xpbmtidXR0b25yZW5kZXJlci5qcycsIFsnZ29vZy51aS5MaW5rQnV0dG9uUmVuZGVyZXInXSwgWydnb29nLnVpLkJ1dHRvbicsICdnb29nLnVpLkZsYXRCdXR0b25SZW5kZXJlcicsICdnb29nLnVpLnJlZ2lzdHJ5J10sIHt9KTsKZ29vZy5hZGREZXBlbmRlbmN5KCd1aS9tZWRpYS9mbGFzaG9iamVjdC5qcycsIFsnZ29vZy51aS5tZWRpYS5GbGFzaE9iamVjdCcsICdnb29nLnVpLm1lZGlhLkZsYXNoT2JqZWN0LlNjcmlwdEFjY2Vzc0xldmVsJywgJ2dvb2cudWkubWVkaWEuRmxhc2hPYmplY3QuV21vZGVzJ10sIFsnZ29vZy5hc3NlcnRzJywgJ2dvb2cuZG9tLlRhZ05hbWUnLCAnZ29vZy5kb20uc2FmZScsICdnb29nLmV2ZW50cy5FdmVudCcsICdnb29nLmV2ZW50cy5FdmVudEhhbmRsZXInLCAnZ29vZy5ldmVudHMuRXZlbnRUeXBlJywgJ2dvb2cuaHRtbC5UcnVzdGVkUmVzb3VyY2VVcmwnLCAnZ29vZy5odG1sLmZsYXNoJywgJ2dvb2cubG9nJywgJ2dvb2cub2JqZWN0JywgJ2dvb2cuc3RyaW5nJywgJ2dvb2cuc3RydWN0cy5NYXAnLCAnZ29vZy5zdHlsZScsICdnb29nLnVpLkNvbXBvbmVudCcsICdnb29nLnVzZXJBZ2VudCcsICdnb29nLnVzZXJBZ2VudC5mbGFzaCddLCB7fSk7Cmdvb2cuYWRkRGVwZW5kZW5jeSgndWkvbWVkaWEvZmxhc2hvYmplY3RfdGVzdC5qcycsIFsnZ29vZy51aS5tZWRpYS5GbGFzaE9iamVjdFRlc3QnXSwgWydnb29nLmRvbScsICdnb29nLmRvbS5Eb21IZWxwZXInLCAnZ29vZy5kb20uVGFnTmFtZScsICdnb29nLmV2ZW50cycsICdnb29nLmV2ZW50cy5FdmVudCcsICdnb29nLmV2ZW50cy5FdmVudFR5cGUnLCAnZ29vZy5odG1sLnRlc3RpbmcnLCAnZ29vZy50ZXN0aW5nLk1vY2tDb250cm9sJywgJ2dvb2cudGVzdGluZy5ldmVudHMnLCAnZ29vZy50ZXN0aW5nLnRlc3RTdWl0ZScsICdnb29nLnVpLm1lZGlhLkZsYXNoT2JqZWN0JywgJ2dvb2cudXNlckFnZW50J10sIHsnbGFuZyc6ICdlczYnLCAnbW9kdWxlJzogJ2dvb2cnfSk7Cmdvb2cuYWRkRGVwZW5kZW5jeSgndWkvbWVkaWEvZmxpY2tyLmpzJywgWydnb29nLnVpLm1lZGlhLkZsaWNrclNldCcsICdnb29nLnVpLm1lZGlhLkZsaWNrclNldE1vZGVsJ10sIFsnZ29vZy5odG1sLlRydXN0ZWRSZXNvdXJjZVVybCcsICdnb29nLnN0cmluZy5Db25zdCcsICdnb29nLnVpLm1lZGlhLkZsYXNoT2JqZWN0JywgJ2dvb2cudWkubWVkaWEuTWVkaWEnLCAnZ29vZy51aS5tZWRpYS5NZWRpYU1vZGVsJywgJ2dvb2cudWkubWVkaWEuTWVkaWFSZW5kZXJlciddLCB7fSk7Cmdvb2cuYWRkRGVwZW5kZW5jeSgndWkvbWVkaWEvZmxpY2tyX3Rlc3QuanMnLCBbJ2dvb2cudWkubWVkaWEuRmxpY2tyU2V0VGVzdCddLCBbJ2dvb2cuZG9tJywgJ2dvb2cuZG9tLlRhZ05hbWUnLCAnZ29vZy5odG1sLnRlc3RpbmcnLCAnZ29vZy50ZXN0aW5nLnRlc3RTdWl0ZScsICdnb29nLnVpLm1lZGlhLkZsYXNoT2JqZWN0JywgJ2dvb2cudWkubWVkaWEuRmxpY2tyU2V0JywgJ2dvb2cudWkubWVkaWEuRmxpY2tyU2V0TW9kZWwnLCAnZ29vZy51aS5tZWRpYS5NZWRpYSddLCB7J2xhbmcnOiAnZXM2JywgJ21vZHVsZSc6ICdnb29nJ30pOwpnb29nLmFkZERlcGVuZGVuY3koJ3VpL21lZGlhL2dvb2dsZXZpZGVvLmpzJywgWydnb29nLnVpLm1lZGlhLkdvb2dsZVZpZGVvJywgJ2dvb2cudWkubWVkaWEuR29vZ2xlVmlkZW9Nb2RlbCddLCBbJ2dvb2cuaHRtbC5UcnVzdGVkUmVzb3VyY2VVcmwnLCAnZ29vZy5zdHJpbmcnLCAnZ29vZy5zdHJpbmcuQ29uc3QnLCAnZ29vZy51aS5tZWRpYS5GbGFzaE9iamVjdCcsICdnb29nLnVpLm1lZGlhLk1lZGlhJywgJ2dvb2cudWkubWVkaWEuTWVkaWFNb2RlbCcsICdnb29nLnVpLm1lZGlhLk1lZGlhUmVuZGVyZXInXSwge30pOwpnb29nLmFkZERlcGVuZGVuY3koJ3VpL21lZGlhL2dvb2dsZXZpZGVvX3Rlc3QuanMnLCBbJ2dvb2cudWkubWVkaWEuR29vZ2xlVmlkZW9UZXN0J10sIFsnZ29vZy5kb20nLCAnZ29vZy5kb20uVGFnTmFtZScsICdnb29nLnRlc3RpbmcudGVzdFN1aXRlJywgJ2dvb2cudWkubWVkaWEuRmxhc2hPYmplY3QnLCAnZ29vZy51aS5tZWRpYS5Hb29nbGVWaWRlbycsICdnb29nLnVpLm1lZGlhLkdvb2dsZVZpZGVvTW9kZWwnLCAnZ29vZy51aS5tZWRpYS5NZWRpYSddLCB7J2xhbmcnOiAnZXM2JywgJ21vZHVsZSc6ICdnb29nJ30pOwpnb29nLmFkZERlcGVuZGVuY3koJ3VpL21lZGlhL21lZGlhLmpzJywgWydnb29nLnVpLm1lZGlhLk1lZGlhJywgJ2dvb2cudWkubWVkaWEuTWVkaWFSZW5kZXJlciddLCBbJ2dvb2cuYXNzZXJ0cycsICdnb29nLmRvbS5UYWdOYW1lJywgJ2dvb2cuc3R5bGUnLCAnZ29vZy51aS5Db21wb25lbnQnLCAnZ29vZy51aS5Db250cm9sJywgJ2dvb2cudWkuQ29udHJvbFJlbmRlcmVyJ10sIHt9KTsKZ29vZy5hZGREZXBlbmRlbmN5KCd1aS9tZWRpYS9tZWRpYV90ZXN0LmpzJywgWydnb29nLnVpLm1lZGlhLk1lZGlhVGVzdCddLCBbJ2dvb2cuZG9tJywgJ2dvb2cuZG9tLlRhZ05hbWUnLCAnZ29vZy5odG1sLnRlc3RpbmcnLCAnZ29vZy5tYXRoLlNpemUnLCAnZ29vZy50ZXN0aW5nLnRlc3RTdWl0ZScsICdnb29nLnVpLkNvbnRyb2xSZW5kZXJlcicsICdnb29nLnVpLm1lZGlhLk1lZGlhJywgJ2dvb2cudWkubWVkaWEuTWVkaWFNb2RlbCcsICdnb29nLnVpLm1lZGlhLk1lZGlhUmVuZGVyZXInXSwgeydsYW5nJzogJ2VzNicsICdtb2R1bGUnOiAnZ29vZyd9KTsKZ29vZy5hZGREZXBlbmRlbmN5KCd1aS9tZWRpYS9tZWRpYW1vZGVsLmpzJywgWydnb29nLnVpLm1lZGlhLk1lZGlhTW9kZWwnLCAnZ29vZy51aS5tZWRpYS5NZWRpYU1vZGVsLkNhdGVnb3J5JywgJ2dvb2cudWkubWVkaWEuTWVkaWFNb2RlbC5DcmVkaXQnLCAnZ29vZy51aS5tZWRpYS5NZWRpYU1vZGVsLkNyZWRpdC5Sb2xlJywgJ2dvb2cudWkubWVkaWEuTWVkaWFNb2RlbC5DcmVkaXQuU2NoZW1lJywgJ2dvb2cudWkubWVkaWEuTWVkaWFNb2RlbC5NZWRpdW0nLCAnZ29vZy51aS5tZWRpYS5NZWRpYU1vZGVsLk1pbWVUeXBlJywgJ2dvb2cudWkubWVkaWEuTWVkaWFNb2RlbC5QbGF5ZXInLCAnZ29vZy51aS5tZWRpYS5NZWRpYU1vZGVsLlN1YlRpdGxlJywgJ2dvb2cudWkubWVkaWEuTWVkaWFNb2RlbC5UaHVtYm5haWwnXSwgWydnb29nLmFycmF5JywgJ2dvb2cuaHRtbC5UcnVzdGVkUmVzb3VyY2VVcmwnXSwge30pOwpnb29nLmFkZERlcGVuZGVuY3koJ3VpL21lZGlhL21lZGlhbW9kZWxfdGVzdC5qcycsIFsnZ29vZy51aS5tZWRpYS5NZWRpYU1vZGVsVGVzdCddLCBbJ2dvb2cudGVzdGluZy50ZXN0U3VpdGUnLCAnZ29vZy51aS5tZWRpYS5NZWRpYU1vZGVsJ10sIHsnbGFuZyc6ICdlczYnLCAnbW9kdWxlJzogJ2dvb2cnfSk7Cmdvb2cuYWRkRGVwZW5kZW5jeSgndWkvbWVkaWEvbXAzLmpzJywgWydnb29nLnVpLm1lZGlhLk1wMyddLCBbJ2dvb2cuc3RyaW5nJywgJ2dvb2cudWkubWVkaWEuRmxhc2hPYmplY3QnLCAnZ29vZy51aS5tZWRpYS5NZWRpYScsICdnb29nLnVpLm1lZGlhLk1lZGlhUmVuZGVyZXInXSwge30pOwpnb29nLmFkZERlcGVuZGVuY3koJ3VpL21lZGlhL21wM190ZXN0LmpzJywgWydnb29nLnVpLm1lZGlhLk1wM1Rlc3QnXSwgWydnb29nLmRvbScsICdnb29nLmRvbS5UYWdOYW1lJywgJ2dvb2cuaHRtbC50ZXN0aW5nJywgJ2dvb2cudGVzdGluZy50ZXN0U3VpdGUnLCAnZ29vZy51aS5tZWRpYS5GbGFzaE9iamVjdCcsICdnb29nLnVpLm1lZGlhLk1lZGlhJywgJ2dvb2cudWkubWVkaWEuTWVkaWFNb2RlbCcsICdnb29nLnVpLm1lZGlhLk1wMyddLCB7J2xhbmcnOiAnZXM2JywgJ21vZHVsZSc6ICdnb29nJ30pOwpnb29nLmFkZERlcGVuZGVuY3koJ3VpL21lZGlhL3Bob3RvLmpzJywgWydnb29nLnVpLm1lZGlhLlBob3RvJ10sIFsnZ29vZy5kb20uVGFnTmFtZScsICdnb29nLnVpLm1lZGlhLk1lZGlhJywgJ2dvb2cudWkubWVkaWEuTWVkaWFSZW5kZXJlciddLCB7fSk7Cmdvb2cuYWRkRGVwZW5kZW5jeSgndWkvbWVkaWEvcGhvdG9fdGVzdC5qcycsIFsnZ29vZy51aS5tZWRpYS5QaG90b1Rlc3QnXSwgWydnb29nLmRvbScsICdnb29nLmRvbS5UYWdOYW1lJywgJ2dvb2cuaHRtbC50ZXN0aW5nJywgJ2dvb2cudGVzdGluZy50ZXN0U3VpdGUnLCAnZ29vZy51aS5tZWRpYS5NZWRpYU1vZGVsJywgJ2dvb2cudWkubWVkaWEuUGhvdG8nXSwgeydsYW5nJzogJ2VzNicsICdtb2R1bGUnOiAnZ29vZyd9KTsKZ29vZy5hZGREZXBlbmRlbmN5KCd1aS9tZWRpYS9waWNhc2EuanMnLCBbJ2dvb2cudWkubWVkaWEuUGljYXNhQWxidW0nLCAnZ29vZy51aS5tZWRpYS5QaWNhc2FBbGJ1bU1vZGVsJ10sIFsnZ29vZy5odG1sLlRydXN0ZWRSZXNvdXJjZVVybCcsICdnb29nLnN0cmluZy5Db25zdCcsICdnb29nLnVpLm1lZGlhLkZsYXNoT2JqZWN0JywgJ2dvb2cudWkubWVkaWEuTWVkaWEnLCAnZ29vZy51aS5tZWRpYS5NZWRpYU1vZGVsJywgJ2dvb2cudWkubWVkaWEuTWVkaWFSZW5kZXJlciddLCB7fSk7Cmdvb2cuYWRkRGVwZW5kZW5jeSgndWkvbWVkaWEvcGljYXNhX3Rlc3QuanMnLCBbJ2dvb2cudWkubWVkaWEuUGljYXNhVGVzdCddLCBbJ2dvb2cuZG9tJywgJ2dvb2cuZG9tLlRhZ05hbWUnLCAnZ29vZy50ZXN0aW5nLnRlc3RTdWl0ZScsICdnb29nLnVpLm1lZGlhLkZsYXNoT2JqZWN0JywgJ2dvb2cudWkubWVkaWEuTWVkaWEnLCAnZ29vZy51aS5tZWRpYS5QaWNhc2FBbGJ1bScsICdnb29nLnVpLm1lZGlhLlBpY2FzYUFsYnVtTW9kZWwnXSwgeydsYW5nJzogJ2VzNicsICdtb2R1bGUnOiAnZ29vZyd9KTsKZ29vZy5hZGREZXBlbmRlbmN5KCd1aS9tZWRpYS92aW1lby5qcycsIFsnZ29vZy51aS5tZWRpYS5WaW1lbycsICdnb29nLnVpLm1lZGlhLlZpbWVvTW9kZWwnXSwgWydnb29nLmh0bWwuVHJ1c3RlZFJlc291cmNlVXJsJywgJ2dvb2cuc3RyaW5nJywgJ2dvb2cuc3RyaW5nLkNvbnN0JywgJ2dvb2cudWkubWVkaWEuRmxhc2hPYmplY3QnLCAnZ29vZy51aS5tZWRpYS5NZWRpYScsICdnb29nLnVpLm1lZGlhLk1lZGlhTW9kZWwnLCAnZ29vZy51aS5tZWRpYS5NZWRpYVJlbmRlcmVyJ10sIHt9KTsKZ29vZy5hZGREZXBlbmRlbmN5KCd1aS9tZWRpYS92aW1lb190ZXN0LmpzJywgWydnb29nLnVpLm1lZGlhLlZpbWVvVGVzdCddLCBbJ2dvb2cuZG9tJywgJ2dvb2cuZG9tLlRhZ05hbWUnLCAnZ29vZy50ZXN0aW5nLnRlc3RTdWl0ZScsICdnb29nLnVpLm1lZGlhLkZsYXNoT2JqZWN0JywgJ2dvb2cudWkubWVkaWEuTWVkaWEnLCAnZ29vZy51aS5tZWRpYS5WaW1lbycsICdnb29nLnVpLm1lZGlhLlZpbWVvTW9kZWwnXSwgeydsYW5nJzogJ2VzNicsICdtb2R1bGUnOiAnZ29vZyd9KTsKZ29vZy5hZGREZXBlbmRlbmN5KCd1aS9tZWRpYS95b3V0dWJlLmpzJywgWydnb29nLnVpLm1lZGlhLllvdXR1YmUnLCAnZ29vZy51aS5tZWRpYS5Zb3V0dWJlTW9kZWwnXSwgWydnb29nLmRvbS5UYWdOYW1lJywgJ2dvb2cuaHRtbC5UcnVzdGVkUmVzb3VyY2VVcmwnLCAnZ29vZy5zdHJpbmcnLCAnZ29vZy5zdHJpbmcuQ29uc3QnLCAnZ29vZy51aS5Db21wb25lbnQnLCAnZ29vZy51aS5tZWRpYS5GbGFzaE9iamVjdCcsICdnb29nLnVpLm1lZGlhLk1lZGlhJywgJ2dvb2cudWkubWVkaWEuTWVkaWFNb2RlbCcsICdnb29nLnVpLm1lZGlhLk1lZGlhUmVuZGVyZXInXSwge30pOwpnb29nLmFkZERlcGVuZGVuY3koJ3VpL21lZGlhL3lvdXR1YmVfdGVzdC5qcycsIFsnZ29vZy51aS5tZWRpYS5Zb3V0dWJlVGVzdCddLCBbJ2dvb2cuZG9tJywgJ2dvb2cuZG9tLlRhZ05hbWUnLCAnZ29vZy50ZXN0aW5nLnRlc3RTdWl0ZScsICdnb29nLnVpLm1lZGlhLkZsYXNoT2JqZWN0JywgJ2dvb2cudWkubWVkaWEuWW91dHViZScsICdnb29nLnVpLm1lZGlhLllvdXR1YmVNb2RlbCddLCB7J2xhbmcnOiAnZXM2JywgJ21vZHVsZSc6ICdnb29nJ30pOwpnb29nLmFkZERlcGVuZGVuY3koJ3VpL21lbnUuanMnLCBbJ2dvb2cudWkuTWVudScsICdnb29nLnVpLk1lbnUuRXZlbnRUeXBlJ10sIFsnZ29vZy5kb20uVGFnTmFtZScsICdnb29nLm1hdGguQ29vcmRpbmF0ZScsICdnb29nLnN0cmluZycsICdnb29nLnN0eWxlJywgJ2dvb2cudWkuQ29tcG9uZW50LkV2ZW50VHlwZScsICdnb29nLnVpLkNvbXBvbmVudC5TdGF0ZScsICdnb29nLnVpLkNvbnRhaW5lcicsICdnb29nLnVpLkNvbnRhaW5lci5PcmllbnRhdGlvbicsICdnb29nLnVpLk1lbnVIZWFkZXInLCAnZ29vZy51aS5NZW51SXRlbScsICdnb29nLnVpLk1lbnVSZW5kZXJlcicsICdnb29nLnVpLk1lbnVTZXBhcmF0b3InXSwge30pOwpnb29nLmFkZERlcGVuZGVuY3koJ3VpL21lbnVfdGVzdC5qcycsIFsnZ29vZy51aS5NZW51VGVzdCddLCBbJ2dvb2cuZG9tJywgJ2dvb2cuZXZlbnRzJywgJ2dvb2cubWF0aC5Db29yZGluYXRlJywgJ2dvb2cudGVzdGluZy5ldmVudHMnLCAnZ29vZy50ZXN0aW5nLnRlc3RTdWl0ZScsICdnb29nLnVpLkNvbXBvbmVudCcsICdnb29nLnVpLk1lbnUnXSwgeydsYW5nJzogJ2VzNicsICdtb2R1bGUnOiAnZ29vZyd9KTsKZ29vZy5hZGREZXBlbmRlbmN5KCd1aS9tZW51YmFyLmpzJywgWydnb29nLnVpLm1lbnVCYXInXSwgWydnb29nLnVpLkNvbnRhaW5lcicsICdnb29nLnVpLk1lbnVCYXJSZW5kZXJlciddLCB7fSk7Cmdvb2cuYWRkRGVwZW5kZW5jeSgndWkvbWVudWJhcmRlY29yYXRvci5qcycsIFsnZ29vZy51aS5tZW51QmFyRGVjb3JhdG9yJ10sIFsnZ29vZy51aS5NZW51QmFyUmVuZGVyZXInLCAnZ29vZy51aS5tZW51QmFyJywgJ2dvb2cudWkucmVnaXN0cnknXSwge30pOwpnb29nLmFkZERlcGVuZGVuY3koJ3VpL21lbnViYXJyZW5kZXJlci5qcycsIFsnZ29vZy51aS5NZW51QmFyUmVuZGVyZXInXSwgWydnb29nLmExMXkuYXJpYS5Sb2xlJywgJ2dvb2cudWkuQ29udGFpbmVyJywgJ2dvb2cudWkuQ29udGFpbmVyUmVuZGVyZXInXSwge30pOwpnb29nLmFkZERlcGVuZGVuY3koJ3VpL21lbnViYXNlLmpzJywgWydnb29nLnVpLk1lbnVCYXNlJ10sIFsnZ29vZy5ldmVudHMuRXZlbnRIYW5kbGVyJywgJ2dvb2cuZXZlbnRzLkV2ZW50VHlwZScsICdnb29nLmV2ZW50cy5LZXlIYW5kbGVyJywgJ2dvb2cudWkuUG9wdXAnXSwge30pOwpnb29nLmFkZERlcGVuZGVuY3koJ3VpL21lbnVidXR0b24uanMnLCBbJ2dvb2cudWkuTWVudUJ1dHRvbiddLCBbJ2dvb2cuVGltZXInLCAnZ29vZy5hMTF5LmFyaWEnLCAnZ29vZy5hMTF5LmFyaWEuU3RhdGUnLCAnZ29vZy5hc3NlcnRzJywgJ2dvb2cuZG9tJywgJ2dvb2cuZXZlbnRzLkV2ZW50VHlwZScsICdnb29nLmV2ZW50cy5LZXlDb2RlcycsICdnb29nLmV2ZW50cy5LZXlIYW5kbGVyJywgJ2dvb2cubWF0aC5Cb3gnLCAnZ29vZy5tYXRoLkNvb3JkaW5hdGUnLCAnZ29vZy5tYXRoLlJlY3QnLCAnZ29vZy5wb3NpdGlvbmluZycsICdnb29nLnBvc2l0aW9uaW5nLkNvcm5lcicsICdnb29nLnBvc2l0aW9uaW5nLk1lbnVBbmNob3JlZFBvc2l0aW9uJywgJ2dvb2cucG9zaXRpb25pbmcuT3ZlcmZsb3cnLCAnZ29vZy5zdHlsZScsICdnb29nLnVpLkJ1dHRvbicsICdnb29nLnVpLkNvbXBvbmVudCcsICdnb29nLnVpLklkR2VuZXJhdG9yJywgJ2dvb2cudWkuTWVudScsICdnb29nLnVpLk1lbnVCdXR0b25SZW5kZXJlcicsICdnb29nLnVpLk1lbnVJdGVtJywgJ2dvb2cudWkuTWVudVJlbmRlcmVyJywgJ2dvb2cudWkuU3ViTWVudScsICdnb29nLnVpLnJlZ2lzdHJ5JywgJ2dvb2cudXNlckFnZW50JywgJ2dvb2cudXNlckFnZW50LnByb2R1Y3QnXSwgeydsYW5nJzogJ2VzNid9KTsKZ29vZy5hZGREZXBlbmRlbmN5KCd1aS9tZW51YnV0dG9uX3Rlc3QuanMnLCBbJ2dvb2cudWkuTWVudUJ1dHRvblRlc3QnXSwgWydnb29nLlRpbWVyJywgJ2dvb2cuYTExeS5hcmlhJywgJ2dvb2cuYTExeS5hcmlhLlN0YXRlJywgJ2dvb2cuZG9tJywgJ2dvb2cuZG9tLlRhZ05hbWUnLCAnZ29vZy5ldmVudHMnLCAnZ29vZy5ldmVudHMuRXZlbnQnLCAnZ29vZy5ldmVudHMuRXZlbnRUeXBlJywgJ2dvb2cuZXZlbnRzLktleUNvZGVzJywgJ2dvb2cuZXZlbnRzLktleUhhbmRsZXInLCAnZ29vZy5wb3NpdGlvbmluZycsICdnb29nLnBvc2l0aW9uaW5nLkNvcm5lcicsICdnb29nLnBvc2l0aW9uaW5nLk1lbnVBbmNob3JlZFBvc2l0aW9uJywgJ2dvb2cucG9zaXRpb25pbmcuT3ZlcmZsb3cnLCAnZ29vZy5zdHlsZScsICdnb29nLnRlc3RpbmcuRXhwZWN0ZWRGYWlsdXJlcycsICdnb29nLnRlc3RpbmcuUHJvcGVydHlSZXBsYWNlcicsICdnb29nLnRlc3RpbmcuZXZlbnRzJywgJ2dvb2cudGVzdGluZy5yZWNvcmRGdW5jdGlvbicsICdnb29nLnRlc3RpbmcudGVzdFN1aXRlJywgJ2dvb2cudWkuQ29tcG9uZW50JywgJ2dvb2cudWkuTWVudScsICdnb29nLnVpLk1lbnVCdXR0b24nLCAnZ29vZy51aS5NZW51SXRlbScsICdnb29nLnVpLlN1Yk1lbnUnLCAnZ29vZy51c2VyQWdlbnQnLCAnZ29vZy51c2VyQWdlbnQucHJvZHVjdCcsICdnb29nLnVzZXJBZ2VudC5wcm9kdWN0LmlzVmVyc2lvbiddLCB7J2xhbmcnOiAnZXM2JywgJ21vZHVsZSc6ICdnb29nJ30pOwpnb29nLmFkZERlcGVuZGVuY3koJ3VpL21lbnVidXR0b25yZW5kZXJlci5qcycsIFsnZ29vZy51aS5NZW51QnV0dG9uUmVuZGVyZXInXSwgWydnb29nLmRvbScsICdnb29nLmRvbS5UYWdOYW1lJywgJ2dvb2cuc3R5bGUnLCAnZ29vZy51aS5DdXN0b21CdXR0b25SZW5kZXJlcicsICdnb29nLnVpLklOTElORV9CTE9DS19DTEFTU05BTUUnLCAnZ29vZy51aS5NZW51JywgJ2dvb2cudWkuTWVudVJlbmRlcmVyJ10sIHt9KTsKZ29vZy5hZGREZXBlbmRlbmN5KCd1aS9tZW51YnV0dG9ucmVuZGVyZXJfdGVzdC5qcycsIFsnZ29vZy51aS5NZW51QnV0dG9uUmVuZGVyZXJUZXN0J10sIFsnZ29vZy5hMTF5LmFyaWEnLCAnZ29vZy5hMTF5LmFyaWEuU3RhdGUnLCAnZ29vZy5kb20nLCAnZ29vZy5kb20uVGFnTmFtZScsICdnb29nLmRvbS5jbGFzc2xpc3QnLCAnZ29vZy50ZXN0aW5nLnRlc3RTdWl0ZScsICdnb29nLnRlc3RpbmcudWkucmVuZGVyZXJhc3NlcnRzJywgJ2dvb2cudWkuTWVudUJ1dHRvbicsICdnb29nLnVpLk1lbnVCdXR0b25SZW5kZXJlcicsICdnb29nLnVzZXJBZ2VudCddLCB7J2xhbmcnOiAnZXM2JywgJ21vZHVsZSc6ICdnb29nJ30pOwpnb29nLmFkZERlcGVuZGVuY3koJ3VpL21lbnVoZWFkZXIuanMnLCBbJ2dvb2cudWkuTWVudUhlYWRlciddLCBbJ2dvb2cudWkuQ29tcG9uZW50JywgJ2dvb2cudWkuQ29udHJvbCcsICdnb29nLnVpLk1lbnVIZWFkZXJSZW5kZXJlcicsICdnb29nLnVpLnJlZ2lzdHJ5J10sIHt9KTsKZ29vZy5hZGREZXBlbmRlbmN5KCd1aS9tZW51aGVhZGVycmVuZGVyZXIuanMnLCBbJ2dvb2cudWkuTWVudUhlYWRlclJlbmRlcmVyJ10sIFsnZ29vZy51aS5Db250cm9sUmVuZGVyZXInXSwge30pOwpnb29nLmFkZERlcGVuZGVuY3koJ3VpL21lbnVpdGVtLmpzJywgWydnb29nLnVpLk1lbnVJdGVtJ10sIFsnZ29vZy5hMTF5LmFyaWEuUm9sZScsICdnb29nLmFycmF5JywgJ2dvb2cuZG9tJywgJ2dvb2cuZG9tLmNsYXNzbGlzdCcsICdnb29nLm1hdGguQ29vcmRpbmF0ZScsICdnb29nLnN0cmluZycsICdnb29nLnVpLkNvbXBvbmVudCcsICdnb29nLnVpLkNvbnRyb2wnLCAnZ29vZy51aS5NZW51SXRlbVJlbmRlcmVyJywgJ2dvb2cudWkucmVnaXN0cnknXSwge30pOwpnb29nLmFkZERlcGVuZGVuY3koJ3VpL21lbnVpdGVtX3Rlc3QuanMnLCBbJ2dvb2cudWkuTWVudUl0ZW1UZXN0J10sIFsnZ29vZy5hMTF5LmFyaWEnLCAnZ29vZy5hMTF5LmFyaWEuUm9sZScsICdnb29nLmFycmF5JywgJ2dvb2cuZG9tJywgJ2dvb2cuZG9tLk5vZGVUeXBlJywgJ2dvb2cuZG9tLlRhZ05hbWUnLCAnZ29vZy5kb20uY2xhc3NsaXN0JywgJ2dvb2cuZXZlbnRzLktleUNvZGVzJywgJ2dvb2cuaHRtbC50ZXN0aW5nJywgJ2dvb2cubWF0aC5Db29yZGluYXRlJywgJ2dvb2cudGVzdGluZy5ldmVudHMnLCAnZ29vZy50ZXN0aW5nLnJlY29yZEZ1bmN0aW9uJywgJ2dvb2cudGVzdGluZy50ZXN0U3VpdGUnLCAnZ29vZy51aS5Db21wb25lbnQnLCAnZ29vZy51aS5NZW51SXRlbScsICdnb29nLnVpLk1lbnVJdGVtUmVuZGVyZXInXSwgeydsYW5nJzogJ2VzNicsICdtb2R1bGUnOiAnZ29vZyd9KTsKZ29vZy5hZGREZXBlbmRlbmN5KCd1aS9tZW51aXRlbXJlbmRlcmVyLmpzJywgWydnb29nLnVpLk1lbnVJdGVtUmVuZGVyZXInXSwgWydnb29nLmExMXkuYXJpYS5Sb2xlJywgJ2dvb2cuYXNzZXJ0cycsICdnb29nLmRvbScsICdnb29nLmRvbS5UYWdOYW1lJywgJ2dvb2cuZG9tLmNsYXNzbGlzdCcsICdnb29nLnVpLkNvbXBvbmVudCcsICdnb29nLnVpLkNvbnRyb2xSZW5kZXJlciddLCB7fSk7Cmdvb2cuYWRkRGVwZW5kZW5jeSgndWkvbWVudWl0ZW1yZW5kZXJlcl90ZXN0LmpzJywgWydnb29nLnVpLk1lbnVJdGVtUmVuZGVyZXJUZXN0J10sIFsnZ29vZy5hMTF5LmFyaWEnLCAnZ29vZy5hMTF5LmFyaWEuUm9sZScsICdnb29nLmExMXkuYXJpYS5TdGF0ZScsICdnb29nLmRvbScsICdnb29nLmRvbS5jbGFzc2xpc3QnLCAnZ29vZy50ZXN0aW5nLnRlc3RTdWl0ZScsICdnb29nLnRlc3RpbmcudWkucmVuZGVyZXJhc3NlcnRzJywgJ2dvb2cudWkuQ29tcG9uZW50JywgJ2dvb2cudWkuTWVudUl0ZW0nLCAnZ29vZy51aS5NZW51SXRlbVJlbmRlcmVyJ10sIHsnbGFuZyc6ICdlczYnLCAnbW9kdWxlJzogJ2dvb2cnfSk7Cmdvb2cuYWRkRGVwZW5kZW5jeSgndWkvbWVudXJlbmRlcmVyLmpzJywgWydnb29nLnVpLk1lbnVSZW5kZXJlciddLCBbJ2dvb2cuYTExeS5hcmlhJywgJ2dvb2cuYTExeS5hcmlhLlJvbGUnLCAnZ29vZy5hMTF5LmFyaWEuU3RhdGUnLCAnZ29vZy5hc3NlcnRzJywgJ2dvb2cuZG9tJywgJ2dvb2cuZG9tLlRhZ05hbWUnLCAnZ29vZy51aS5Db250YWluZXJSZW5kZXJlcicsICdnb29nLnVpLlNlcGFyYXRvciddLCB7fSk7Cmdvb2cuYWRkRGVwZW5kZW5jeSgndWkvbWVudXNlcGFyYXRvci5qcycsIFsnZ29vZy51aS5NZW51U2VwYXJhdG9yJ10sIFsnZ29vZy51aS5NZW51U2VwYXJhdG9yUmVuZGVyZXInLCAnZ29vZy51aS5TZXBhcmF0b3InLCAnZ29vZy51aS5yZWdpc3RyeSddLCB7fSk7Cmdvb2cuYWRkRGVwZW5kZW5jeSgndWkvbWVudXNlcGFyYXRvcnJlbmRlcmVyLmpzJywgWydnb29nLnVpLk1lbnVTZXBhcmF0b3JSZW5kZXJlciddLCBbJ2dvb2cuZG9tJywgJ2dvb2cuZG9tLlRhZ05hbWUnLCAnZ29vZy5kb20uY2xhc3NsaXN0JywgJ2dvb2cudWkuQ29udHJvbFJlbmRlcmVyJ10sIHt9KTsKZ29vZy5hZGREZXBlbmRlbmN5KCd1aS9tZW51c2VwYXJhdG9ycmVuZGVyZXJfdGVzdC5qcycsIFsnZ29vZy51aS5NZW51U2VwYXJhdG9yUmVuZGVyZXJUZXN0J10sIFsnZ29vZy5kb20nLCAnZ29vZy50ZXN0aW5nLnRlc3RTdWl0ZScsICdnb29nLnVpLk1lbnVTZXBhcmF0b3InLCAnZ29vZy51aS5NZW51U2VwYXJhdG9yUmVuZGVyZXInXSwgeydsYW5nJzogJ2VzNicsICdtb2R1bGUnOiAnZ29vZyd9KTsKZ29vZy5hZGREZXBlbmRlbmN5KCd1aS9tb2NrYWN0aXZpdHltb25pdG9yLmpzJywgWydnb29nLnVpLk1vY2tBY3Rpdml0eU1vbml0b3InXSwgWydnb29nLmV2ZW50cy5FdmVudFR5cGUnLCAnZ29vZy51aS5BY3Rpdml0eU1vbml0b3InXSwge30pOwpnb29nLmFkZERlcGVuZGVuY3koJ3VpL21vY2thY3Rpdml0eW1vbml0b3JfdGVzdC5qcycsIFsnZ29vZy51aS5Nb2NrQWN0aXZpdHlNb25pdG9yVGVzdCddLCBbJ2dvb2cuZXZlbnRzJywgJ2dvb2cuZnVuY3Rpb25zJywgJ2dvb2cudGVzdGluZy5yZWNvcmRGdW5jdGlvbicsICdnb29nLnRlc3RpbmcudGVzdFN1aXRlJywgJ2dvb2cudWkuQWN0aXZpdHlNb25pdG9yJywgJ2dvb2cudWkuTW9ja0FjdGl2aXR5TW9uaXRvciddLCB7J2xhbmcnOiAnZXM2JywgJ21vZHVsZSc6ICdnb29nJ30pOwpnb29nLmFkZERlcGVuZGVuY3koJ3VpL21vZGFsYXJpYXZpc2liaWxpdHloZWxwZXIuanMnLCBbJ2dvb2cudWkuTW9kYWxBcmlhVmlzaWJpbGl0eUhlbHBlciddLCBbJ2dvb2cuYTExeS5hcmlhJywgJ2dvb2cuYTExeS5hcmlhLlN0YXRlJ10sIHt9KTsKZ29vZy5hZGREZXBlbmRlbmN5KCd1aS9tb2RhbGFyaWF2aXNpYmlsaXR5aGVscGVyX3Rlc3QuanMnLCBbJ2dvb2cudWkuTW9kYWxBcmlhVmlzaWJpbGl0eUhlbHBlclRlc3QnXSwgWydnb29nLmExMXkuYXJpYScsICdnb29nLmExMXkuYXJpYS5TdGF0ZScsICdnb29nLmRvbScsICdnb29nLnN0cmluZycsICdnb29nLnRlc3RpbmcudGVzdFN1aXRlJywgJ2dvb2cudWkuTW9kYWxBcmlhVmlzaWJpbGl0eUhlbHBlciddLCB7J2xhbmcnOiAnZXM2JywgJ21vZHVsZSc6ICdnb29nJ30pOwpnb29nLmFkZERlcGVuZGVuY3koJ3VpL21vZGFscG9wdXAuanMnLCBbJ2dvb2cudWkuTW9kYWxQb3B1cCddLCBbJ2dvb2cuVGltZXInLCAnZ29vZy5hc3NlcnRzJywgJ2dvb2cuZG9tJywgJ2dvb2cuZG9tLlRhZ05hbWUnLCAnZ29vZy5kb20uYW5pbWF0aW9uRnJhbWUnLCAnZ29vZy5kb20uY2xhc3NsaXN0JywgJ2dvb2cuZG9tLmlmcmFtZScsICdnb29nLmV2ZW50cycsICdnb29nLmV2ZW50cy5FdmVudFR5cGUnLCAnZ29vZy5ldmVudHMuRm9jdXNIYW5kbGVyJywgJ2dvb2cuZnguVHJhbnNpdGlvbicsICdnb29nLnN0cmluZycsICdnb29nLnN0eWxlJywgJ2dvb2cudWkuQ29tcG9uZW50JywgJ2dvb2cudWkuTW9kYWxBcmlhVmlzaWJpbGl0eUhlbHBlcicsICdnb29nLnVpLlBvcHVwQmFzZScsICdnb29nLnVzZXJBZ2VudCddLCB7fSk7Cmdvb2cuYWRkRGVwZW5kZW5jeSgndWkvbW9kYWxwb3B1cF90ZXN0LmpzJywgWydnb29nLnVpLk1vZGFsUG9wdXBUZXN0J10sIFsnZ29vZy5hMTF5LmFyaWEnLCAnZ29vZy5hMTF5LmFyaWEuU3RhdGUnLCAnZ29vZy5kaXNwb3NlJywgJ2dvb2cuZG9tJywgJ2dvb2cuZG9tLlRhZ05hbWUnLCAnZ29vZy5ldmVudHMnLCAnZ29vZy5ldmVudHMuRXZlbnRUYXJnZXQnLCAnZ29vZy5ldmVudHMuRXZlbnRUeXBlJywgJ2dvb2cuZnguVHJhbnNpdGlvbicsICdnb29nLmZ4LmNzczMnLCAnZ29vZy5zdHJpbmcnLCAnZ29vZy5zdHlsZScsICdnb29nLnRlc3RpbmcuTW9ja0Nsb2NrJywgJ2dvb2cudGVzdGluZy5ldmVudHMnLCAnZ29vZy50ZXN0aW5nLnRlc3RTdWl0ZScsICdnb29nLnVpLk1vZGFsUG9wdXAnLCAnZ29vZy51aS5Qb3B1cEJhc2UnXSwgeydsYW5nJzogJ2VzNicsICdtb2R1bGUnOiAnZ29vZyd9KTsKZ29vZy5hZGREZXBlbmRlbmN5KCd1aS9uYXRpdmVidXR0b25yZW5kZXJlci5qcycsIFsnZ29vZy51aS5OYXRpdmVCdXR0b25SZW5kZXJlciddLCBbJ2dvb2cuYXNzZXJ0cycsICdnb29nLmRvbS5JbnB1dFR5cGUnLCAnZ29vZy5kb20uVGFnTmFtZScsICdnb29nLmRvbS5jbGFzc2xpc3QnLCAnZ29vZy5ldmVudHMuRXZlbnRUeXBlJywgJ2dvb2cudWkuQnV0dG9uUmVuZGVyZXInLCAnZ29vZy51aS5Db21wb25lbnQnXSwge30pOwpnb29nLmFkZERlcGVuZGVuY3koJ3VpL25hdGl2ZWJ1dHRvbnJlbmRlcmVyX3Rlc3QuanMnLCBbJ2dvb2cudWkuTmF0aXZlQnV0dG9uUmVuZGVyZXJUZXN0J10sIFsnZ29vZy5kb20nLCAnZ29vZy5kb20uVGFnTmFtZScsICdnb29nLmRvbS5jbGFzc2xpc3QnLCAnZ29vZy5ldmVudHMnLCAnZ29vZy50ZXN0aW5nLkV4cGVjdGVkRmFpbHVyZXMnLCAnZ29vZy50ZXN0aW5nLmV2ZW50cycsICdnb29nLnRlc3RpbmcudGVzdFN1aXRlJywgJ2dvb2cudGVzdGluZy51aS5yZW5kZXJlcmFzc2VydHMnLCAnZ29vZy51aS5CdXR0b24nLCAnZ29vZy51aS5Db21wb25lbnQnLCAnZ29vZy51aS5OYXRpdmVCdXR0b25SZW5kZXJlcicsICdnb29nLnVzZXJBZ2VudCddLCB7J2xhbmcnOiAnZXM2JywgJ21vZHVsZSc6ICdnb29nJ30pOwpnb29nLmFkZERlcGVuZGVuY3koJ3VpL29wdGlvbi5qcycsIFsnZ29vZy51aS5PcHRpb24nXSwgWydnb29nLnVpLkNvbXBvbmVudCcsICdnb29nLnVpLk1lbnVJdGVtJywgJ2dvb2cudWkucmVnaXN0cnknXSwge30pOwpnb29nLmFkZERlcGVuZGVuY3koJ3VpL3BhbGV0dGUuanMnLCBbJ2dvb2cudWkuUGFsZXR0ZSddLCBbJ2dvb2cuYXJyYXknLCAnZ29vZy5kb20nLCAnZ29vZy5ldmVudHMnLCAnZ29vZy5ldmVudHMuRXZlbnRUeXBlJywgJ2dvb2cuZXZlbnRzLktleUNvZGVzJywgJ2dvb2cubWF0aC5TaXplJywgJ2dvb2cudWkuQ29tcG9uZW50JywgJ2dvb2cudWkuQ29udHJvbCcsICdnb29nLnVpLlBhbGV0dGVSZW5kZXJlcicsICdnb29nLnVpLlNlbGVjdGlvbk1vZGVsJ10sIHt9KTsKZ29vZy5hZGREZXBlbmRlbmN5KCd1aS9wYWxldHRlX3Rlc3QuanMnLCBbJ2dvb2cudWkuUGFsZXR0ZVRlc3QnXSwgWydnb29nLmExMXkuYXJpYScsICdnb29nLmRvbScsICdnb29nLmV2ZW50cycsICdnb29nLmV2ZW50cy5FdmVudFR5cGUnLCAnZ29vZy5ldmVudHMuS2V5Q29kZXMnLCAnZ29vZy5ldmVudHMuS2V5RXZlbnQnLCAnZ29vZy50ZXN0aW5nLmV2ZW50cy5FdmVudCcsICdnb29nLnRlc3RpbmcucmVjb3JkRnVuY3Rpb24nLCAnZ29vZy50ZXN0aW5nLnRlc3RTdWl0ZScsICdnb29nLnVpLkNvbXBvbmVudCcsICdnb29nLnVpLkNvbnRhaW5lcicsICdnb29nLnVpLlBhbGV0dGUnXSwgeydsYW5nJzogJ2VzNicsICdtb2R1bGUnOiAnZ29vZyd9KTsKZ29vZy5hZGREZXBlbmRlbmN5KCd1aS9wYWxldHRlcmVuZGVyZXIuanMnLCBbJ2dvb2cudWkuUGFsZXR0ZVJlbmRlcmVyJ10sIFsnZ29vZy5hMTF5LmFyaWEnLCAnZ29vZy5hMTF5LmFyaWEuUm9sZScsICdnb29nLmExMXkuYXJpYS5TdGF0ZScsICdnb29nLmFycmF5JywgJ2dvb2cuYXNzZXJ0cycsICdnb29nLmRvbScsICdnb29nLmRvbS5Ob2RlSXRlcmF0b3InLCAnZ29vZy5kb20uTm9kZVR5cGUnLCAnZ29vZy5kb20uVGFnTmFtZScsICdnb29nLmRvbS5jbGFzc2xpc3QnLCAnZ29vZy5kb20uZGF0YXNldCcsICdnb29nLml0ZXInLCAnZ29vZy5zdHlsZScsICdnb29nLnVpLkNvbnRyb2xSZW5kZXJlcicsICdnb29nLnVzZXJBZ2VudCddLCB7fSk7Cmdvb2cuYWRkRGVwZW5kZW5jeSgndWkvcGFsZXR0ZXJlbmRlcmVyX3Rlc3QuanMnLCBbJ2dvb2cudWkuUGFsZXR0ZVJlbmRlcmVyVGVzdCddLCBbJ2dvb2cuYTExeS5hcmlhJywgJ2dvb2cuYTExeS5hcmlhLlJvbGUnLCAnZ29vZy5hMTF5LmFyaWEuU3RhdGUnLCAnZ29vZy5hcnJheScsICdnb29nLmRvbScsICdnb29nLmRvbS5UYWdOYW1lJywgJ2dvb2cuaHRtbC50ZXN0aW5nJywgJ2dvb2cudGVzdGluZy50ZXN0U3VpdGUnLCAnZ29vZy51aS5QYWxldHRlJywgJ2dvb2cudWkuUGFsZXR0ZVJlbmRlcmVyJ10sIHsnbGFuZyc6ICdlczYnLCAnbW9kdWxlJzogJ2dvb2cnfSk7Cmdvb2cuYWRkRGVwZW5kZW5jeSgndWkvcGxhaW50ZXh0c3BlbGxjaGVja2VyLmpzJywgWydnb29nLnVpLlBsYWluVGV4dFNwZWxsQ2hlY2tlciddLCBbJ2dvb2cuVGltZXInLCAnZ29vZy5hMTF5LmFyaWEnLCAnZ29vZy5hc3NlcnRzJywgJ2dvb2cuZG9tJywgJ2dvb2cuZG9tLlRhZ05hbWUnLCAnZ29vZy5ldmVudHMuRXZlbnRIYW5kbGVyJywgJ2dvb2cuZXZlbnRzLkV2ZW50VHlwZScsICdnb29nLmV2ZW50cy5LZXlDb2RlcycsICdnb29nLmV2ZW50cy5LZXlIYW5kbGVyJywgJ2dvb2cuc3BlbGwuU3BlbGxDaGVjaycsICdnb29nLnN0eWxlJywgJ2dvb2cudWkuQWJzdHJhY3RTcGVsbENoZWNrZXInLCAnZ29vZy51aS5Db21wb25lbnQnLCAnZ29vZy51c2VyQWdlbnQnXSwge30pOwpnb29nLmFkZERlcGVuZGVuY3koJ3VpL3BsYWludGV4dHNwZWxsY2hlY2tlcl90ZXN0LmpzJywgWydnb29nLnVpLlBsYWluVGV4dFNwZWxsQ2hlY2tlclRlc3QnXSwgWydnb29nLlRpbWVyJywgJ2dvb2cuZG9tJywgJ2dvb2cuZXZlbnRzLktleUNvZGVzJywgJ2dvb2cuc3BlbGwuU3BlbGxDaGVjaycsICdnb29nLnRlc3RpbmcuZXZlbnRzJywgJ2dvb2cudGVzdGluZy50ZXN0U3VpdGUnLCAnZ29vZy51aS5BYnN0cmFjdFNwZWxsQ2hlY2tlcicsICdnb29nLnVpLlBsYWluVGV4dFNwZWxsQ2hlY2tlciddLCB7J2xhbmcnOiAnZXM2JywgJ21vZHVsZSc6ICdnb29nJ30pOwpnb29nLmFkZERlcGVuZGVuY3koJ3VpL3BvcHVwLmpzJywgWydnb29nLnVpLlBvcHVwJ10sIFsnZ29vZy5tYXRoLkJveCcsICdnb29nLnBvc2l0aW9uaW5nLkFic3RyYWN0UG9zaXRpb24nLCAnZ29vZy5wb3NpdGlvbmluZy5Db3JuZXInLCAnZ29vZy5zdHlsZScsICdnb29nLnVpLlBvcHVwQmFzZSddLCB7fSk7Cmdvb2cuYWRkRGVwZW5kZW5jeSgndWkvcG9wdXBfdGVzdC5qcycsIFsnZ29vZy51aS5Qb3B1cFRlc3QnXSwgWydnb29nLnBvc2l0aW9uaW5nLkFuY2hvcmVkUG9zaXRpb24nLCAnZ29vZy5wb3NpdGlvbmluZy5Db3JuZXInLCAnZ29vZy5zdHlsZScsICdnb29nLnRlc3RpbmcudGVzdFN1aXRlJywgJ2dvb2cudWkuUG9wdXAnLCAnZ29vZy51c2VyQWdlbnQnXSwgeydsYW5nJzogJ2VzNicsICdtb2R1bGUnOiAnZ29vZyd9KTsKZ29vZy5hZGREZXBlbmRlbmN5KCd1aS9wb3B1cGJhc2UuanMnLCBbJ2dvb2cudWkuUG9wdXBCYXNlJywgJ2dvb2cudWkuUG9wdXBCYXNlLkV2ZW50VHlwZScsICdnb29nLnVpLlBvcHVwQmFzZS5UeXBlJ10sIFsnZ29vZy5UaW1lcicsICdnb29nLmFycmF5JywgJ2dvb2cuZG9tJywgJ2dvb2cuZG9tLlRhZ05hbWUnLCAnZ29vZy5ldmVudHMnLCAnZ29vZy5ldmVudHMuRXZlbnRIYW5kbGVyJywgJ2dvb2cuZXZlbnRzLkV2ZW50VGFyZ2V0JywgJ2dvb2cuZXZlbnRzLkV2ZW50VHlwZScsICdnb29nLmV2ZW50cy5LZXlDb2RlcycsICdnb29nLmZ4LlRyYW5zaXRpb24nLCAnZ29vZy5zdHlsZScsICdnb29nLnVzZXJBZ2VudCddLCB7fSk7Cmdvb2cuYWRkRGVwZW5kZW5jeSgndWkvcG9wdXBiYXNlX3Rlc3QuanMnLCBbJ2dvb2cudWkuUG9wdXBCYXNlVGVzdCddLCBbJ2dvb2cuZG9tJywgJ2dvb2cuZG9tLlRhZ05hbWUnLCAnZ29vZy5ldmVudHMnLCAnZ29vZy5ldmVudHMuRXZlbnRUYXJnZXQnLCAnZ29vZy5ldmVudHMuRXZlbnRUeXBlJywgJ2dvb2cuZXZlbnRzLktleUNvZGVzJywgJ2dvb2cuZnguVHJhbnNpdGlvbicsICdnb29nLmZ4LmNzczMnLCAnZ29vZy50ZXN0aW5nLk1vY2tDbG9jaycsICdnb29nLnRlc3RpbmcuZXZlbnRzJywgJ2dvb2cudGVzdGluZy5ldmVudHMuRXZlbnQnLCAnZ29vZy50ZXN0aW5nLnRlc3RTdWl0ZScsICdnb29nLnVpLlBvcHVwQmFzZSddLCB7J2xhbmcnOiAnZXM2JywgJ21vZHVsZSc6ICdnb29nJ30pOwpnb29nLmFkZERlcGVuZGVuY3koJ3VpL3BvcHVwY29sb3JwaWNrZXIuanMnLCBbJ2dvb2cudWkuUG9wdXBDb2xvclBpY2tlciddLCBbJ2dvb2cuYXNzZXJ0cycsICdnb29nLmRvbS5jbGFzc2xpc3QnLCAnZ29vZy5ldmVudHMuRXZlbnRUeXBlJywgJ2dvb2cucG9zaXRpb25pbmcuQW5jaG9yZWRQb3NpdGlvbicsICdnb29nLnBvc2l0aW9uaW5nLkNvcm5lcicsICdnb29nLnVpLkNvbG9yUGlja2VyJywgJ2dvb2cudWkuQ29tcG9uZW50JywgJ2dvb2cudWkuUG9wdXAnXSwge30pOwpnb29nLmFkZERlcGVuZGVuY3koJ3VpL3BvcHVwY29sb3JwaWNrZXJfdGVzdC5qcycsIFsnZ29vZy51aS5Qb3B1cENvbG9yUGlja2VyVGVzdCddLCBbJ2dvb2cuZG9tJywgJ2dvb2cuZXZlbnRzJywgJ2dvb2cudGVzdGluZy5ldmVudHMnLCAnZ29vZy50ZXN0aW5nLnRlc3RTdWl0ZScsICdnb29nLnVpLkNvbG9yUGlja2VyJywgJ2dvb2cudWkuUG9wdXBDb2xvclBpY2tlciddLCB7J2xhbmcnOiAnZXM2JywgJ21vZHVsZSc6ICdnb29nJ30pOwpnb29nLmFkZERlcGVuZGVuY3koJ3VpL3BvcHVwZGF0ZXBpY2tlci5qcycsIFsnZ29vZy51aS5Qb3B1cERhdGVQaWNrZXInXSwgWydnb29nLmV2ZW50cy5FdmVudFR5cGUnLCAnZ29vZy5wb3NpdGlvbmluZy5BbmNob3JlZFZpZXdwb3J0UG9zaXRpb24nLCAnZ29vZy5wb3NpdGlvbmluZy5Db3JuZXInLCAnZ29vZy5zdHlsZScsICdnb29nLnVpLkNvbXBvbmVudCcsICdnb29nLnVpLkRhdGVQaWNrZXInLCAnZ29vZy51aS5Qb3B1cCcsICdnb29nLnVpLlBvcHVwQmFzZSddLCB7fSk7Cmdvb2cuYWRkRGVwZW5kZW5jeSgndWkvcG9wdXBkYXRlcGlja2VyX3Rlc3QuanMnLCBbJ2dvb2cudWkuUG9wdXBEYXRlUGlja2VyVGVzdCddLCBbJ2dvb2cuZGF0ZS5EYXRlJywgJ2dvb2cuZG9tJywgJ2dvb2cuZG9tLlRhZ05hbWUnLCAnZ29vZy5ldmVudHMnLCAnZ29vZy5zdHlsZScsICdnb29nLnRlc3RpbmcuTW9ja0NvbnRyb2wnLCAnZ29vZy50ZXN0aW5nLnJlY29yZEZ1bmN0aW9uJywgJ2dvb2cudGVzdGluZy50ZXN0U3VpdGUnLCAnZ29vZy51aS5EYXRlUGlja2VyJywgJ2dvb2cudWkuUG9wdXBCYXNlJywgJ2dvb2cudWkuUG9wdXBEYXRlUGlja2VyJ10sIHsnbGFuZyc6ICdlczYnLCAnbW9kdWxlJzogJ2dvb2cnfSk7Cmdvb2cuYWRkRGVwZW5kZW5jeSgndWkvcG9wdXBtZW51LmpzJywgWydnb29nLnVpLlBvcHVwTWVudSddLCBbJ2dvb2cuZXZlbnRzJywgJ2dvb2cuZXZlbnRzLkJyb3dzZXJFdmVudCcsICdnb29nLmV2ZW50cy5Ccm93c2VyRXZlbnQuTW91c2VCdXR0b24nLCAnZ29vZy5ldmVudHMuRXZlbnRUeXBlJywgJ2dvb2cuZXZlbnRzLktleUNvZGVzJywgJ2dvb2cucG9zaXRpb25pbmcuQW5jaG9yZWRWaWV3cG9ydFBvc2l0aW9uJywgJ2dvb2cucG9zaXRpb25pbmcuQ29ybmVyJywgJ2dvb2cucG9zaXRpb25pbmcuTWVudUFuY2hvcmVkUG9zaXRpb24nLCAnZ29vZy5wb3NpdGlvbmluZy5PdmVyZmxvdycsICdnb29nLnBvc2l0aW9uaW5nLlZpZXdwb3J0Q2xpZW50UG9zaXRpb24nLCAnZ29vZy5zdHJ1Y3RzLk1hcCcsICdnb29nLnN0eWxlJywgJ2dvb2cudWkuQ29tcG9uZW50JywgJ2dvb2cudWkuTWVudScsICdnb29nLnVpLlBvcHVwQmFzZSddLCB7fSk7Cmdvb2cuYWRkRGVwZW5kZW5jeSgndWkvcG9wdXBtZW51X3Rlc3QuanMnLCBbJ2dvb2cudWkuUG9wdXBNZW51VGVzdCddLCBbJ2dvb2cuZG9tJywgJ2dvb2cuZXZlbnRzLkJyb3dzZXJFdmVudCcsICdnb29nLmV2ZW50cy5FdmVudEhhbmRsZXInLCAnZ29vZy5ldmVudHMuRXZlbnRUeXBlJywgJ2dvb2cuZXZlbnRzLktleUNvZGVzJywgJ2dvb2cubWF0aC5Cb3gnLCAnZ29vZy5tYXRoLkNvb3JkaW5hdGUnLCAnZ29vZy5wb3NpdGlvbmluZy5Db3JuZXInLCAnZ29vZy5zdHlsZScsICdnb29nLnRlc3RpbmcuZXZlbnRzJywgJ2dvb2cudGVzdGluZy50ZXN0U3VpdGUnLCAnZ29vZy51aS5NZW51JywgJ2dvb2cudWkuTWVudUl0ZW0nLCAnZ29vZy51aS5Qb3B1cE1lbnUnXSwgeydsYW5nJzogJ2VzNicsICdtb2R1bGUnOiAnZ29vZyd9KTsKZ29vZy5hZGREZXBlbmRlbmN5KCd1aS9wcm9ncmVzc2Jhci5qcycsIFsnZ29vZy51aS5Qcm9ncmVzc0JhcicsICdnb29nLnVpLlByb2dyZXNzQmFyLk9yaWVudGF0aW9uJ10sIFsnZ29vZy5hMTF5LmFyaWEnLCAnZ29vZy5hc3NlcnRzJywgJ2dvb2cuZG9tJywgJ2dvb2cuZG9tLlRhZ05hbWUnLCAnZ29vZy5kb20uY2xhc3NsaXN0JywgJ2dvb2cuZXZlbnRzJywgJ2dvb2cuZXZlbnRzLkV2ZW50VHlwZScsICdnb29nLnVpLkNvbXBvbmVudCcsICdnb29nLnVpLlJhbmdlTW9kZWwnLCAnZ29vZy51c2VyQWdlbnQnXSwge30pOwpnb29nLmFkZERlcGVuZGVuY3koJ3VpL3Byb21wdC5qcycsIFsnZ29vZy51aS5Qcm9tcHQnXSwgWydnb29nLlRpbWVyJywgJ2dvb2cuZG9tJywgJ2dvb2cuZG9tLklucHV0VHlwZScsICdnb29nLmRvbS5UYWdOYW1lJywgJ2dvb2cuZXZlbnRzJywgJ2dvb2cuZXZlbnRzLkV2ZW50VHlwZScsICdnb29nLmZ1bmN0aW9ucycsICdnb29nLmh0bWwuU2FmZUh0bWwnLCAnZ29vZy51aS5Db21wb25lbnQnLCAnZ29vZy51aS5EaWFsb2cnLCAnZ29vZy51c2VyQWdlbnQnXSwge30pOwpnb29nLmFkZERlcGVuZGVuY3koJ3VpL3Byb21wdF90ZXN0LmpzJywgWydnb29nLnVpLlByb21wdFRlc3QnXSwgWydnb29nLmRvbS5zZWxlY3Rpb24nLCAnZ29vZy5ldmVudHMuSW5wdXRIYW5kbGVyJywgJ2dvb2cuZXZlbnRzLktleUNvZGVzJywgJ2dvb2cuZnVuY3Rpb25zJywgJ2dvb2cuc3RyaW5nJywgJ2dvb2cudGVzdGluZy5ldmVudHMnLCAnZ29vZy50ZXN0aW5nLnRlc3RTdWl0ZScsICdnb29nLnVpLkJpZGlJbnB1dCcsICdnb29nLnVpLkRpYWxvZycsICdnb29nLnVpLlByb21wdCcsICdnb29nLnVzZXJBZ2VudCcsICdnb29nLnVzZXJBZ2VudC5wcm9kdWN0J10sIHsnbGFuZyc6ICdlczYnLCAnbW9kdWxlJzogJ2dvb2cnfSk7Cmdvb2cuYWRkRGVwZW5kZW5jeSgndWkvcmFuZ2Vtb2RlbC5qcycsIFsnZ29vZy51aS5SYW5nZU1vZGVsJ10sIFsnZ29vZy5ldmVudHMuRXZlbnRUYXJnZXQnLCAnZ29vZy51aS5Db21wb25lbnQnXSwge30pOwpnb29nLmFkZERlcGVuZGVuY3koJ3VpL3JhbmdlbW9kZWxfdGVzdC5qcycsIFsnZ29vZy51aS5SYW5nZU1vZGVsVGVzdCddLCBbJ2dvb2cudGVzdGluZy50ZXN0U3VpdGUnLCAnZ29vZy51aS5SYW5nZU1vZGVsJ10sIHsnbGFuZyc6ICdlczYnLCAnbW9kdWxlJzogJ2dvb2cnfSk7Cmdvb2cuYWRkRGVwZW5kZW5jeSgndWkvcmF0aW5ncy5qcycsIFsnZ29vZy51aS5SYXRpbmdzJywgJ2dvb2cudWkuUmF0aW5ncy5FdmVudFR5cGUnXSwgWydnb29nLmExMXkuYXJpYScsICdnb29nLmExMXkuYXJpYS5Sb2xlJywgJ2dvb2cuYTExeS5hcmlhLlN0YXRlJywgJ2dvb2cuYXNzZXJ0cycsICdnb29nLmRvbScsICdnb29nLmRvbS5UYWdOYW1lJywgJ2dvb2cuZG9tLmNsYXNzbGlzdCcsICdnb29nLmV2ZW50cy5FdmVudFR5cGUnLCAnZ29vZy51aS5Db21wb25lbnQnXSwge30pOwpnb29nLmFkZERlcGVuZGVuY3koJ3VpL3JlZ2lzdHJ5LmpzJywgWydnb29nLnVpLnJlZ2lzdHJ5J10sIFsnZ29vZy5hc3NlcnRzJywgJ2dvb2cuZG9tLmNsYXNzbGlzdCddLCB7fSk7Cmdvb2cuYWRkRGVwZW5kZW5jeSgndWkvcmVnaXN0cnlfdGVzdC5qcycsIFsnZ29vZy51aS5yZWdpc3RyeVRlc3QnXSwgWydnb29nLm9iamVjdCcsICdnb29nLnRlc3RpbmcudGVzdFN1aXRlJywgJ2dvb2cudWkucmVnaXN0cnknXSwgeydsYW5nJzogJ2VzNicsICdtb2R1bGUnOiAnZ29vZyd9KTsKZ29vZy5hZGREZXBlbmRlbmN5KCd1aS9yaWNodGV4dHNwZWxsY2hlY2tlci5qcycsIFsnZ29vZy51aS5SaWNoVGV4dFNwZWxsQ2hlY2tlciddLCBbJ2dvb2cuVGltZXInLCAnZ29vZy5hc3NlcnRzJywgJ2dvb2cuZG9tJywgJ2dvb2cuZG9tLk5vZGVUeXBlJywgJ2dvb2cuZG9tLlJhbmdlJywgJ2dvb2cuZXZlbnRzLkV2ZW50SGFuZGxlcicsICdnb29nLmV2ZW50cy5FdmVudFR5cGUnLCAnZ29vZy5ldmVudHMuS2V5Q29kZXMnLCAnZ29vZy5ldmVudHMuS2V5SGFuZGxlcicsICdnb29nLm1hdGguQ29vcmRpbmF0ZScsICdnb29nLnNwZWxsLlNwZWxsQ2hlY2snLCAnZ29vZy5zdHJpbmcuU3RyaW5nQnVmZmVyJywgJ2dvb2cuc3R5bGUnLCAnZ29vZy51aS5BYnN0cmFjdFNwZWxsQ2hlY2tlcicsICdnb29nLnVpLkNvbXBvbmVudCcsICdnb29nLnVpLlBvcHVwTWVudSddLCB7fSk7Cmdvb2cuYWRkRGVwZW5kZW5jeSgndWkvcmljaHRleHRzcGVsbGNoZWNrZXJfdGVzdC5qcycsIFsnZ29vZy51aS5SaWNoVGV4dFNwZWxsQ2hlY2tlclRlc3QnXSwgWydnb29nLmRvbS5SYW5nZScsICdnb29nLmRvbS5UYWdOYW1lJywgJ2dvb2cuZG9tLmNsYXNzbGlzdCcsICdnb29nLmV2ZW50cy5LZXlDb2RlcycsICdnb29nLm9iamVjdCcsICdnb29nLnNwZWxsLlNwZWxsQ2hlY2snLCAnZ29vZy50ZXN0aW5nLk1vY2tDbG9jaycsICdnb29nLnRlc3RpbmcuZXZlbnRzJywgJ2dvb2cudGVzdGluZy50ZXN0U3VpdGUnLCAnZ29vZy51aS5SaWNoVGV4dFNwZWxsQ2hlY2tlciddLCB7J2xhbmcnOiAnZXM2JywgJ21vZHVsZSc6ICdnb29nJ30pOwpnb29nLmFkZERlcGVuZGVuY3koJ3VpL3JvdW5kZWRwYW5lbC5qcycsIFsnZ29vZy51aS5CYXNlUm91bmRlZFBhbmVsJywgJ2dvb2cudWkuQ3NzUm91bmRlZFBhbmVsJywgJ2dvb2cudWkuR3JhcGhpY3NSb3VuZGVkUGFuZWwnLCAnZ29vZy51aS5Sb3VuZGVkUGFuZWwnLCAnZ29vZy51aS5Sb3VuZGVkUGFuZWwuQ29ybmVyJ10sIFsnZ29vZy5hc3NlcnRzJywgJ2dvb2cuZG9tJywgJ2dvb2cuZG9tLlRhZ05hbWUnLCAnZ29vZy5kb20uY2xhc3NsaXN0JywgJ2dvb2cuZ3JhcGhpY3MnLCAnZ29vZy5ncmFwaGljcy5QYXRoJywgJ2dvb2cuZ3JhcGhpY3MuU29saWRGaWxsJywgJ2dvb2cuZ3JhcGhpY3MuU3Ryb2tlJywgJ2dvb2cubWF0aCcsICdnb29nLm1hdGguQ29vcmRpbmF0ZScsICdnb29nLnN0eWxlJywgJ2dvb2cudWkuQ29tcG9uZW50JywgJ2dvb2cudXNlckFnZW50J10sIHt9KTsKZ29vZy5hZGREZXBlbmRlbmN5KCd1aS9yb3VuZGVkcGFuZWxfdGVzdC5qcycsIFsnZ29vZy51aS5Sb3VuZGVkUGFuZWxUZXN0J10sIFsnZ29vZy50ZXN0aW5nLnRlc3RTdWl0ZScsICdnb29nLnVpLkNzc1JvdW5kZWRQYW5lbCcsICdnb29nLnVpLkdyYXBoaWNzUm91bmRlZFBhbmVsJywgJ2dvb2cudWkuUm91bmRlZFBhbmVsJywgJ2dvb2cudXNlckFnZW50J10sIHsnbGFuZyc6ICdlczYnLCAnbW9kdWxlJzogJ2dvb2cnfSk7Cmdvb2cuYWRkRGVwZW5kZW5jeSgndWkvcm91bmRlZHRhYnJlbmRlcmVyLmpzJywgWydnb29nLnVpLlJvdW5kZWRUYWJSZW5kZXJlciddLCBbJ2dvb2cuZG9tJywgJ2dvb2cuZG9tLlRhZ05hbWUnLCAnZ29vZy51aS5UYWInLCAnZ29vZy51aS5UYWJCYXInLCAnZ29vZy51aS5UYWJSZW5kZXJlcicsICdnb29nLnVpLnJlZ2lzdHJ5J10sIHt9KTsKZ29vZy5hZGREZXBlbmRlbmN5KCd1aS9zY3JvbGxmbG9hdGVyLmpzJywgWydnb29nLnVpLlNjcm9sbEZsb2F0ZXInLCAnZ29vZy51aS5TY3JvbGxGbG9hdGVyLkV2ZW50VHlwZSddLCBbJ2dvb2cuYXJyYXknLCAnZ29vZy5hc3NlcnRzJywgJ2dvb2cuZG9tJywgJ2dvb2cuZG9tLlRhZ05hbWUnLCAnZ29vZy5kb20uY2xhc3NsaXN0JywgJ2dvb2cuZXZlbnRzLkV2ZW50VHlwZScsICdnb29nLnN0eWxlJywgJ2dvb2cudWkuQ29tcG9uZW50JywgJ2dvb2cudXNlckFnZW50J10sIHt9KTsKZ29vZy5hZGREZXBlbmRlbmN5KCd1aS9zY3JvbGxmbG9hdGVyX3Rlc3QuanMnLCBbJ2dvb2cudWkuU2Nyb2xsRmxvYXRlclRlc3QnXSwgWydnb29nLmRvbScsICdnb29nLmV2ZW50cycsICdnb29nLnN0eWxlJywgJ2dvb2cudGVzdGluZy5Qcm9wZXJ0eVJlcGxhY2VyJywgJ2dvb2cudGVzdGluZy50ZXN0U3VpdGUnLCAnZ29vZy51aS5TY3JvbGxGbG9hdGVyJ10sIHsnbGFuZyc6ICdlczYnLCAnbW9kdWxlJzogJ2dvb2cnfSk7Cmdvb2cuYWRkRGVwZW5kZW5jeSgndWkvc2VsZWN0LmpzJywgWydnb29nLnVpLlNlbGVjdCddLCBbJ2dvb2cuYTExeS5hcmlhJywgJ2dvb2cuYTExeS5hcmlhLlJvbGUnLCAnZ29vZy5hMTF5LmFyaWEuU3RhdGUnLCAnZ29vZy5hcnJheScsICdnb29nLmV2ZW50cy5FdmVudFR5cGUnLCAnZ29vZy51aS5Db21wb25lbnQnLCAnZ29vZy51aS5JZEdlbmVyYXRvcicsICdnb29nLnVpLk1lbnVCdXR0b24nLCAnZ29vZy51aS5NZW51SXRlbScsICdnb29nLnVpLk1lbnVSZW5kZXJlcicsICdnb29nLnVpLlNlbGVjdGlvbk1vZGVsJywgJ2dvb2cudWkucmVnaXN0cnknXSwge30pOwpnb29nLmFkZERlcGVuZGVuY3koJ3VpL3NlbGVjdF90ZXN0LmpzJywgWydnb29nLnVpLlNlbGVjdFRlc3QnXSwgWydnb29nLmExMXkuYXJpYScsICdnb29nLmExMXkuYXJpYS5Sb2xlJywgJ2dvb2cuYTExeS5hcmlhLlN0YXRlJywgJ2dvb2cuZG9tJywgJ2dvb2cuZXZlbnRzJywgJ2dvb2cudGVzdGluZy5yZWNvcmRGdW5jdGlvbicsICdnb29nLnRlc3RpbmcudGVzdFN1aXRlJywgJ2dvb2cudWkuQ29tcG9uZW50JywgJ2dvb2cudWkuQ3VzdG9tQnV0dG9uUmVuZGVyZXInLCAnZ29vZy51aS5NZW51JywgJ2dvb2cudWkuTWVudUl0ZW0nLCAnZ29vZy51aS5TZWxlY3QnLCAnZ29vZy51aS5TZXBhcmF0b3InXSwgeydsYW5nJzogJ2VzNicsICdtb2R1bGUnOiAnZ29vZyd9KTsKZ29vZy5hZGREZXBlbmRlbmN5KCd1aS9zZWxlY3Rpb25tZW51YnV0dG9uLmpzJywgWydnb29nLnVpLlNlbGVjdGlvbk1lbnVCdXR0b24nLCAnZ29vZy51aS5TZWxlY3Rpb25NZW51QnV0dG9uLlNlbGVjdGlvblN0YXRlJ10sIFsnZ29vZy5kb20uSW5wdXRUeXBlJywgJ2dvb2cuZG9tLlRhZ05hbWUnLCAnZ29vZy5ldmVudHMuRXZlbnRUeXBlJywgJ2dvb2cuc3R5bGUnLCAnZ29vZy51aS5Db21wb25lbnQnLCAnZ29vZy51aS5NZW51QnV0dG9uJywgJ2dvb2cudWkuTWVudUl0ZW0nLCAnZ29vZy51aS5yZWdpc3RyeSddLCB7fSk7Cmdvb2cuYWRkRGVwZW5kZW5jeSgndWkvc2VsZWN0aW9ubWVudWJ1dHRvbl90ZXN0LmpzJywgWydnb29nLnVpLlNlbGVjdGlvbk1lbnVCdXR0b25UZXN0J10sIFsnZ29vZy5kb20nLCAnZ29vZy5ldmVudHMnLCAnZ29vZy50ZXN0aW5nLmV2ZW50cycsICdnb29nLnRlc3RpbmcudGVzdFN1aXRlJywgJ2dvb2cudWkuQ29tcG9uZW50JywgJ2dvb2cudWkuU2VsZWN0aW9uTWVudUJ1dHRvbiddLCB7J2xhbmcnOiAnZXM2JywgJ21vZHVsZSc6ICdnb29nJ30pOwpnb29nLmFkZERlcGVuZGVuY3koJ3VpL3NlbGVjdGlvbm1vZGVsLmpzJywgWydnb29nLnVpLlNlbGVjdGlvbk1vZGVsJ10sIFsnZ29vZy5hcnJheScsICdnb29nLmV2ZW50cy5FdmVudFRhcmdldCcsICdnb29nLmV2ZW50cy5FdmVudFR5cGUnXSwge30pOwpnb29nLmFkZERlcGVuZGVuY3koJ3VpL3NlbGVjdGlvbm1vZGVsX3Rlc3QuanMnLCBbJ2dvb2cudWkuU2VsZWN0aW9uTW9kZWxUZXN0J10sIFsnZ29vZy5hcnJheScsICdnb29nLnRlc3RpbmcucmVjb3JkRnVuY3Rpb24nLCAnZ29vZy50ZXN0aW5nLnRlc3RTdWl0ZScsICdnb29nLnVpLlNlbGVjdGlvbk1vZGVsJ10sIHsnbGFuZyc6ICdlczYnLCAnbW9kdWxlJzogJ2dvb2cnfSk7Cmdvb2cuYWRkRGVwZW5kZW5jeSgndWkvc2VwYXJhdG9yLmpzJywgWydnb29nLnVpLlNlcGFyYXRvciddLCBbJ2dvb2cuYTExeS5hcmlhJywgJ2dvb2cuYXNzZXJ0cycsICdnb29nLnVpLkNvbXBvbmVudCcsICdnb29nLnVpLkNvbnRyb2wnLCAnZ29vZy51aS5NZW51U2VwYXJhdG9yUmVuZGVyZXInLCAnZ29vZy51aS5yZWdpc3RyeSddLCB7fSk7Cmdvb2cuYWRkRGVwZW5kZW5jeSgndWkvc2VydmVyY2hhcnQuanMnLCBbJ2dvb2cudWkuU2VydmVyQ2hhcnQnLCAnZ29vZy51aS5TZXJ2ZXJDaGFydC5BeGlzRGlzcGxheVR5cGUnLCAnZ29vZy51aS5TZXJ2ZXJDaGFydC5DaGFydFR5cGUnLCAnZ29vZy51aS5TZXJ2ZXJDaGFydC5FbmNvZGluZ1R5cGUnLCAnZ29vZy51aS5TZXJ2ZXJDaGFydC5FdmVudCcsICdnb29nLnVpLlNlcnZlckNoYXJ0LkxlZ2VuZFBvc2l0aW9uJywgJ2dvb2cudWkuU2VydmVyQ2hhcnQuTWF4aW11bVZhbHVlJywgJ2dvb2cudWkuU2VydmVyQ2hhcnQuTXVsdGlBeGlzQWxpZ25tZW50JywgJ2dvb2cudWkuU2VydmVyQ2hhcnQuTXVsdGlBeGlzVHlwZScsICdnb29nLnVpLlNlcnZlckNoYXJ0LlVyaVBhcmFtJywgJ2dvb2cudWkuU2VydmVyQ2hhcnQuVXJpVG9vTG9uZ0V2ZW50J10sIFsnZ29vZy5VcmknLCAnZ29vZy5hcnJheScsICdnb29nLmFzc2VydHMnLCAnZ29vZy5kb20uVGFnTmFtZScsICdnb29nLmRvbS5zYWZlJywgJ2dvb2cuZXZlbnRzLkV2ZW50JywgJ2dvb2cuc3RyaW5nJywgJ2dvb2cudWkuQ29tcG9uZW50J10sIHt9KTsKZ29vZy5hZGREZXBlbmRlbmN5KCd1aS9zZXJ2ZXJjaGFydF90ZXN0LmpzJywgWydnb29nLnVpLlNlcnZlckNoYXJ0VGVzdCddLCBbJ2dvb2cuVXJpJywgJ2dvb2cuZXZlbnRzJywgJ2dvb2cudGVzdGluZy50ZXN0U3VpdGUnLCAnZ29vZy51aS5TZXJ2ZXJDaGFydCddLCB7J2xhbmcnOiAnZXM2JywgJ21vZHVsZSc6ICdnb29nJ30pOwpnb29nLmFkZERlcGVuZGVuY3koJ3VpL3NsaWRlci5qcycsIFsnZ29vZy51aS5TbGlkZXInLCAnZ29vZy51aS5TbGlkZXIuT3JpZW50YXRpb24nXSwgWydnb29nLmExMXkuYXJpYScsICdnb29nLmExMXkuYXJpYS5Sb2xlJywgJ2dvb2cuZG9tJywgJ2dvb2cuZG9tLlRhZ05hbWUnLCAnZ29vZy51aS5TbGlkZXJCYXNlJ10sIHt9KTsKZ29vZy5hZGREZXBlbmRlbmN5KCd1aS9zbGlkZXJiYXNlLmpzJywgWydnb29nLnVpLlNsaWRlckJhc2UnLCAnZ29vZy51aS5TbGlkZXJCYXNlLkFuaW1hdGlvbkZhY3RvcnknLCAnZ29vZy51aS5TbGlkZXJCYXNlLk9yaWVudGF0aW9uJ10sIFsnZ29vZy5UaW1lcicsICdnb29nLmExMXkuYXJpYScsICdnb29nLmExMXkuYXJpYS5Sb2xlJywgJ2dvb2cuYTExeS5hcmlhLlN0YXRlJywgJ2dvb2cuYXJyYXknLCAnZ29vZy5hc3NlcnRzJywgJ2dvb2cuZG9tJywgJ2dvb2cuZG9tLlRhZ05hbWUnLCAnZ29vZy5kb20uY2xhc3NsaXN0JywgJ2dvb2cuZXZlbnRzJywgJ2dvb2cuZXZlbnRzLkV2ZW50VHlwZScsICdnb29nLmV2ZW50cy5LZXlDb2RlcycsICdnb29nLmV2ZW50cy5LZXlIYW5kbGVyJywgJ2dvb2cuZXZlbnRzLk1vdXNlV2hlZWxIYW5kbGVyJywgJ2dvb2cuZnVuY3Rpb25zJywgJ2dvb2cuZnguQW5pbWF0aW9uUGFyYWxsZWxRdWV1ZScsICdnb29nLmZ4LkRyYWdnZXInLCAnZ29vZy5meC5UcmFuc2l0aW9uJywgJ2dvb2cuZnguZG9tLlJlc2l6ZUhlaWdodCcsICdnb29nLmZ4LmRvbS5SZXNpemVXaWR0aCcsICdnb29nLmZ4LmRvbS5TbGlkZScsICdnb29nLm1hdGgnLCAnZ29vZy5tYXRoLkNvb3JkaW5hdGUnLCAnZ29vZy5zdHlsZScsICdnb29nLnN0eWxlLmJpZGknLCAnZ29vZy51aS5Db21wb25lbnQnLCAnZ29vZy51aS5SYW5nZU1vZGVsJ10sIHt9KTsKZ29vZy5hZGREZXBlbmRlbmN5KCd1aS9zbGlkZXJiYXNlX3Rlc3QuanMnLCBbJ2dvb2cudWkuU2xpZGVyQmFzZVRlc3QnXSwgWydnb29nLmExMXkuYXJpYScsICdnb29nLmExMXkuYXJpYS5TdGF0ZScsICdnb29nLmRvbScsICdnb29nLmRvbS5UYWdOYW1lJywgJ2dvb2cuZG9tLmNsYXNzbGlzdCcsICdnb29nLmV2ZW50cycsICdnb29nLmV2ZW50cy5FdmVudFR5cGUnLCAnZ29vZy5ldmVudHMuS2V5Q29kZXMnLCAnZ29vZy5meC5BbmltYXRpb24nLCAnZ29vZy5tYXRoLkNvb3JkaW5hdGUnLCAnZ29vZy5zdHlsZScsICdnb29nLnN0eWxlLmJpZGknLCAnZ29vZy50ZXN0aW5nLk1vY2tDbG9jaycsICdnb29nLnRlc3RpbmcuTW9ja0NvbnRyb2wnLCAnZ29vZy50ZXN0aW5nLmV2ZW50cycsICdnb29nLnRlc3RpbmcubW9ja21hdGNoZXJzJywgJ2dvb2cudGVzdGluZy5yZWNvcmRGdW5jdGlvbicsICdnb29nLnRlc3RpbmcudGVzdFN1aXRlJywgJ2dvb2cudWkuQ29tcG9uZW50JywgJ2dvb2cudWkuU2xpZGVyQmFzZScsICdnb29nLnVzZXJBZ2VudCddLCB7J2xhbmcnOiAnZXM2JywgJ21vZHVsZSc6ICdnb29nJ30pOwpnb29nLmFkZERlcGVuZGVuY3koJ3VpL3NwbGl0cGFuZS5qcycsIFsnZ29vZy51aS5TcGxpdFBhbmUnLCAnZ29vZy51aS5TcGxpdFBhbmUuT3JpZW50YXRpb24nXSwgWydnb29nLmFzc2VydHMnLCAnZ29vZy5kb20nLCAnZ29vZy5kb20uVGFnTmFtZScsICdnb29nLmRvbS5jbGFzc2xpc3QnLCAnZ29vZy5ldmVudHMuRXZlbnRUeXBlJywgJ2dvb2cuZnguRHJhZ2dlcicsICdnb29nLm1hdGguUmVjdCcsICdnb29nLm1hdGguU2l6ZScsICdnb29nLnN0eWxlJywgJ2dvb2cudWkuQ29tcG9uZW50JywgJ2dvb2cudXNlckFnZW50J10sIHt9KTsKZ29vZy5hZGREZXBlbmRlbmN5KCd1aS9zcGxpdHBhbmVfdGVzdC5qcycsIFsnZ29vZy51aS5TcGxpdFBhbmVUZXN0J10sIFsnZ29vZy5kb20nLCAnZ29vZy5kb20uVGFnTmFtZScsICdnb29nLmRvbS5jbGFzc2xpc3QnLCAnZ29vZy5ldmVudHMnLCAnZ29vZy5tYXRoLlNpemUnLCAnZ29vZy5zdHlsZScsICdnb29nLnRlc3RpbmcuZXZlbnRzJywgJ2dvb2cudGVzdGluZy5yZWNvcmRGdW5jdGlvbicsICdnb29nLnRlc3RpbmcudGVzdFN1aXRlJywgJ2dvb2cudWkuQ29tcG9uZW50JywgJ2dvb2cudWkuU3BsaXRQYW5lJ10sIHsnbGFuZyc6ICdlczYnLCAnbW9kdWxlJzogJ2dvb2cnfSk7Cmdvb2cuYWRkRGVwZW5kZW5jeSgndWkvc3R5bGUvYXBwL2J1dHRvbnJlbmRlcmVyLmpzJywgWydnb29nLnVpLnN0eWxlLmFwcC5CdXR0b25SZW5kZXJlciddLCBbJ2dvb2cuZG9tLlRhZ05hbWUnLCAnZ29vZy5kb20uY2xhc3NsaXN0JywgJ2dvb2cudWkuQnV0dG9uJywgJ2dvb2cudWkuQ3VzdG9tQnV0dG9uUmVuZGVyZXInLCAnZ29vZy51aS5JTkxJTkVfQkxPQ0tfQ0xBU1NOQU1FJywgJ2dvb2cudWkucmVnaXN0cnknXSwge30pOwpnb29nLmFkZERlcGVuZGVuY3koJ3VpL3N0eWxlL2FwcC9idXR0b25yZW5kZXJlcl90ZXN0LmpzJywgWydnb29nLnVpLnN0eWxlLmFwcC5CdXR0b25SZW5kZXJlclRlc3QnXSwgWydnb29nLmRvbScsICdnb29nLnRlc3RpbmcudGVzdFN1aXRlJywgJ2dvb2cudGVzdGluZy51aS5zdHlsZScsICdnb29nLnVpLkJ1dHRvbicsICdnb29nLnVpLkNvbXBvbmVudCcsICdnb29nLnVpLnN0eWxlLmFwcC5CdXR0b25SZW5kZXJlcicsICdnb29nLnVzZXJBZ2VudCddLCB7J2xhbmcnOiAnZXM2JywgJ21vZHVsZSc6ICdnb29nJ30pOwpnb29nLmFkZERlcGVuZGVuY3koJ3VpL3N0eWxlL2FwcC9tZW51YnV0dG9ucmVuZGVyZXIuanMnLCBbJ2dvb2cudWkuc3R5bGUuYXBwLk1lbnVCdXR0b25SZW5kZXJlciddLCBbJ2dvb2cuYTExeS5hcmlhLlJvbGUnLCAnZ29vZy5hcnJheScsICdnb29nLmRvbScsICdnb29nLmRvbS5UYWdOYW1lJywgJ2dvb2cuc3R5bGUnLCAnZ29vZy51aS5NZW51JywgJ2dvb2cudWkuTWVudVJlbmRlcmVyJywgJ2dvb2cudWkuc3R5bGUuYXBwLkJ1dHRvblJlbmRlcmVyJ10sIHt9KTsKZ29vZy5hZGREZXBlbmRlbmN5KCd1aS9zdHlsZS9hcHAvbWVudWJ1dHRvbnJlbmRlcmVyX3Rlc3QuanMnLCBbJ2dvb2cudWkuc3R5bGUuYXBwLk1lbnVCdXR0b25SZW5kZXJlclRlc3QnXSwgWydnb29nLmRvbScsICdnb29nLnRlc3RpbmcudGVzdFN1aXRlJywgJ2dvb2cudGVzdGluZy51aS5zdHlsZScsICdnb29nLnVpLkNvbXBvbmVudCcsICdnb29nLnVpLk1lbnVCdXR0b24nLCAnZ29vZy51aS5zdHlsZS5hcHAuTWVudUJ1dHRvblJlbmRlcmVyJ10sIHsnbGFuZyc6ICdlczYnLCAnbW9kdWxlJzogJ2dvb2cnfSk7Cmdvb2cuYWRkRGVwZW5kZW5jeSgndWkvc3R5bGUvYXBwL3ByaW1hcnlhY3Rpb25idXR0b25yZW5kZXJlci5qcycsIFsnZ29vZy51aS5zdHlsZS5hcHAuUHJpbWFyeUFjdGlvbkJ1dHRvblJlbmRlcmVyJ10sIFsnZ29vZy51aS5CdXR0b24nLCAnZ29vZy51aS5yZWdpc3RyeScsICdnb29nLnVpLnN0eWxlLmFwcC5CdXR0b25SZW5kZXJlciddLCB7fSk7Cmdvb2cuYWRkRGVwZW5kZW5jeSgndWkvc3R5bGUvYXBwL3ByaW1hcnlhY3Rpb25idXR0b25yZW5kZXJlcl90ZXN0LmpzJywgWydnb29nLnVpLnN0eWxlLmFwcC5QcmltYXJ5QWN0aW9uQnV0dG9uUmVuZGVyZXJUZXN0J10sIFsnZ29vZy5kb20nLCAnZ29vZy50ZXN0aW5nLnRlc3RTdWl0ZScsICdnb29nLnRlc3RpbmcudWkuc3R5bGUnLCAnZ29vZy51aS5CdXR0b24nLCAnZ29vZy51aS5Db21wb25lbnQnLCAnZ29vZy51aS5zdHlsZS5hcHAuUHJpbWFyeUFjdGlvbkJ1dHRvblJlbmRlcmVyJ10sIHsnbGFuZyc6ICdlczYnLCAnbW9kdWxlJzogJ2dvb2cnfSk7Cmdvb2cuYWRkRGVwZW5kZW5jeSgndWkvc3VibWVudS5qcycsIFsnZ29vZy51aS5TdWJNZW51J10sIFsnZ29vZy5UaW1lcicsICdnb29nLmFzc2VydHMnLCAnZ29vZy5kb20nLCAnZ29vZy5kb20uY2xhc3NsaXN0JywgJ2dvb2cuZXZlbnRzLktleUNvZGVzJywgJ2dvb2cucG9zaXRpb25pbmcuQW5jaG9yZWRWaWV3cG9ydFBvc2l0aW9uJywgJ2dvb2cucG9zaXRpb25pbmcuQ29ybmVyJywgJ2dvb2cuc3R5bGUnLCAnZ29vZy51aS5Db21wb25lbnQnLCAnZ29vZy51aS5NZW51JywgJ2dvb2cudWkuTWVudUl0ZW0nLCAnZ29vZy51aS5TdWJNZW51UmVuZGVyZXInLCAnZ29vZy51aS5yZWdpc3RyeSddLCB7fSk7Cmdvb2cuYWRkRGVwZW5kZW5jeSgndWkvc3VibWVudV90ZXN0LmpzJywgWydnb29nLnVpLlN1Yk1lbnVUZXN0J10sIFsnZ29vZy5hMTF5LmFyaWEnLCAnZ29vZy5hMTF5LmFyaWEuU3RhdGUnLCAnZ29vZy5kb20nLCAnZ29vZy5kb20uY2xhc3NsaXN0JywgJ2dvb2cuZXZlbnRzJywgJ2dvb2cuZXZlbnRzLkV2ZW50JywgJ2dvb2cuZXZlbnRzLktleUNvZGVzJywgJ2dvb2cuZXZlbnRzLktleUhhbmRsZXInLCAnZ29vZy5mdW5jdGlvbnMnLCAnZ29vZy5wb3NpdGlvbmluZycsICdnb29nLnBvc2l0aW9uaW5nLk92ZXJmbG93JywgJ2dvb2cuc3R5bGUnLCAnZ29vZy50ZXN0aW5nLk1vY2tDbG9jaycsICdnb29nLnRlc3RpbmcuZXZlbnRzJywgJ2dvb2cudGVzdGluZy50ZXN0U3VpdGUnLCAnZ29vZy51aS5Db21wb25lbnQnLCAnZ29vZy51aS5NZW51JywgJ2dvb2cudWkuTWVudUl0ZW0nLCAnZ29vZy51aS5TdWJNZW51JywgJ2dvb2cudWkuU3ViTWVudVJlbmRlcmVyJ10sIHsnbGFuZyc6ICdlczYnLCAnbW9kdWxlJzogJ2dvb2cnfSk7Cmdvb2cuYWRkRGVwZW5kZW5jeSgndWkvc3VibWVudXJlbmRlcmVyLmpzJywgWydnb29nLnVpLlN1Yk1lbnVSZW5kZXJlciddLCBbJ2dvb2cuYTExeS5hcmlhJywgJ2dvb2cuYTExeS5hcmlhLlN0YXRlJywgJ2dvb2cuYXNzZXJ0cycsICdnb29nLmRvbScsICdnb29nLmRvbS5UYWdOYW1lJywgJ2dvb2cuZG9tLmNsYXNzbGlzdCcsICdnb29nLnN0eWxlJywgJ2dvb2cudWkuTWVudScsICdnb29nLnVpLk1lbnVJdGVtUmVuZGVyZXInXSwge30pOwpnb29nLmFkZERlcGVuZGVuY3koJ3VpL3N5bnRoZXRpY2tleWJvYXJkZXZlbnQuanMnLCBbJ2dvb2cudWkuU3ludGhldGljS2V5Ym9hcmRFdmVudCddLCBbJ2dvb2cuZXZlbnRzLkV2ZW50JywgJ2dvb2cudWkuS2V5Ym9hcmRFdmVudERhdGEnXSwge30pOwpnb29nLmFkZERlcGVuZGVuY3koJ3VpL3RhYi5qcycsIFsnZ29vZy51aS5UYWInXSwgWydnb29nLnVpLkNvbXBvbmVudCcsICdnb29nLnVpLkNvbnRyb2wnLCAnZ29vZy51aS5UYWJSZW5kZXJlcicsICdnb29nLnVpLnJlZ2lzdHJ5J10sIHt9KTsKZ29vZy5hZGREZXBlbmRlbmN5KCd1aS90YWJfdGVzdC5qcycsIFsnZ29vZy51aS5UYWJUZXN0J10sIFsnZ29vZy5kb20nLCAnZ29vZy50ZXN0aW5nLnRlc3RTdWl0ZScsICdnb29nLnVpLkNvbXBvbmVudCcsICdnb29nLnVpLlRhYicsICdnb29nLnVpLlRhYlJlbmRlcmVyJ10sIHsnbGFuZyc6ICdlczYnLCAnbW9kdWxlJzogJ2dvb2cnfSk7Cmdvb2cuYWRkRGVwZW5kZW5jeSgndWkvdGFiYmFyLmpzJywgWydnb29nLnVpLlRhYkJhcicsICdnb29nLnVpLlRhYkJhci5Mb2NhdGlvbiddLCBbJ2dvb2cudWkuQ29tcG9uZW50LkV2ZW50VHlwZScsICdnb29nLnVpLkNvbnRhaW5lcicsICdnb29nLnVpLkNvbnRhaW5lci5PcmllbnRhdGlvbicsICdnb29nLnVpLlRhYicsICdnb29nLnVpLlRhYkJhclJlbmRlcmVyJywgJ2dvb2cudWkucmVnaXN0cnknXSwge30pOwpnb29nLmFkZERlcGVuZGVuY3koJ3VpL3RhYmJhcl90ZXN0LmpzJywgWydnb29nLnVpLlRhYkJhclRlc3QnXSwgWydnb29nLmRvbScsICdnb29nLmV2ZW50cycsICdnb29nLmV2ZW50cy5FdmVudCcsICdnb29nLmV2ZW50cy5FdmVudFR5cGUnLCAnZ29vZy5ldmVudHMuS2V5Q29kZXMnLCAnZ29vZy50ZXN0aW5nLnRlc3RTdWl0ZScsICdnb29nLnVpLkNvbXBvbmVudCcsICdnb29nLnVpLkNvbnRhaW5lcicsICdnb29nLnVpLlRhYicsICdnb29nLnVpLlRhYkJhcicsICdnb29nLnVpLlRhYkJhclJlbmRlcmVyJ10sIHsnbGFuZyc6ICdlczYnLCAnbW9kdWxlJzogJ2dvb2cnfSk7Cmdvb2cuYWRkRGVwZW5kZW5jeSgndWkvdGFiYmFycmVuZGVyZXIuanMnLCBbJ2dvb2cudWkuVGFiQmFyUmVuZGVyZXInXSwgWydnb29nLmExMXkuYXJpYS5Sb2xlJywgJ2dvb2cub2JqZWN0JywgJ2dvb2cudWkuQ29udGFpbmVyUmVuZGVyZXInXSwge30pOwpnb29nLmFkZERlcGVuZGVuY3koJ3VpL3RhYmJhcnJlbmRlcmVyX3Rlc3QuanMnLCBbJ2dvb2cudWkuVGFiQmFyUmVuZGVyZXJUZXN0J10sIFsnZ29vZy5hMTF5LmFyaWEuUm9sZScsICdnb29nLmRvbScsICdnb29nLmRvbS5UYWdOYW1lJywgJ2dvb2cuZG9tLmNsYXNzbGlzdCcsICdnb29nLnRlc3RpbmcudGVzdFN1aXRlJywgJ2dvb2cudGVzdGluZy51aS5yZW5kZXJlcmFzc2VydHMnLCAnZ29vZy51aS5Db250YWluZXInLCAnZ29vZy51aS5UYWJCYXInLCAnZ29vZy51aS5UYWJCYXJSZW5kZXJlciddLCB7J2xhbmcnOiAnZXM2JywgJ21vZHVsZSc6ICdnb29nJ30pOwpnb29nLmFkZERlcGVuZGVuY3koJ3VpL3RhYmxlc29ydGVyLmpzJywgWydnb29nLnVpLlRhYmxlU29ydGVyJywgJ2dvb2cudWkuVGFibGVTb3J0ZXIuRXZlbnRUeXBlJ10sIFsnZ29vZy5hcnJheScsICdnb29nLmRvbScsICdnb29nLmRvbS5UYWdOYW1lJywgJ2dvb2cuZG9tLmNsYXNzbGlzdCcsICdnb29nLmV2ZW50cy5FdmVudFR5cGUnLCAnZ29vZy5mdW5jdGlvbnMnLCAnZ29vZy51aS5Db21wb25lbnQnXSwge30pOwpnb29nLmFkZERlcGVuZGVuY3koJ3VpL3RhYmxlc29ydGVyX3Rlc3QuanMnLCBbJ2dvb2cudWkuVGFibGVTb3J0ZXJUZXN0J10sIFsnZ29vZy5hcnJheScsICdnb29nLmRvbScsICdnb29nLmRvbS5UYWdOYW1lJywgJ2dvb2cuZG9tLmNsYXNzbGlzdCcsICdnb29nLnRlc3RpbmcuZXZlbnRzJywgJ2dvb2cudGVzdGluZy50ZXN0U3VpdGUnLCAnZ29vZy51aS5UYWJsZVNvcnRlciddLCB7J2xhbmcnOiAnZXM2JywgJ21vZHVsZSc6ICdnb29nJ30pOwpnb29nLmFkZERlcGVuZGVuY3koJ3VpL3RhYnBhbmUuanMnLCBbJ2dvb2cudWkuVGFiUGFuZScsICdnb29nLnVpLlRhYlBhbmUuRXZlbnRzJywgJ2dvb2cudWkuVGFiUGFuZS5UYWJMb2NhdGlvbicsICdnb29nLnVpLlRhYlBhbmUuVGFiUGFnZScsICdnb29nLnVpLlRhYlBhbmVFdmVudCddLCBbJ2dvb2cuYXNzZXJ0cycsICdnb29nLmRvbScsICdnb29nLmRvbS5UYWdOYW1lJywgJ2dvb2cuZG9tLmNsYXNzbGlzdCcsICdnb29nLmV2ZW50cycsICdnb29nLmV2ZW50cy5FdmVudCcsICdnb29nLmV2ZW50cy5FdmVudFRhcmdldCcsICdnb29nLmV2ZW50cy5FdmVudFR5cGUnLCAnZ29vZy5ldmVudHMuS2V5Q29kZXMnLCAnZ29vZy5odG1sLlNhZmVTdHlsZVNoZWV0JywgJ2dvb2cuc3R5bGUnXSwge30pOwpnb29nLmFkZERlcGVuZGVuY3koJ3VpL3RhYnBhbmVfdGVzdC5qcycsIFsnZ29vZy51aS5UYWJQYW5lVGVzdCddLCBbJ2dvb2cuZG9tJywgJ2dvb2cudGVzdGluZy50ZXN0U3VpdGUnLCAnZ29vZy51aS5UYWJQYW5lJ10sIHsnbGFuZyc6ICdlczYnLCAnbW9kdWxlJzogJ2dvb2cnfSk7Cmdvb2cuYWRkRGVwZW5kZW5jeSgndWkvdGFicmVuZGVyZXIuanMnLCBbJ2dvb2cudWkuVGFiUmVuZGVyZXInXSwgWydnb29nLmExMXkuYXJpYS5Sb2xlJywgJ2dvb2cudWkuQ29tcG9uZW50JywgJ2dvb2cudWkuQ29udHJvbFJlbmRlcmVyJ10sIHt9KTsKZ29vZy5hZGREZXBlbmRlbmN5KCd1aS90YWJyZW5kZXJlcl90ZXN0LmpzJywgWydnb29nLnVpLlRhYlJlbmRlcmVyVGVzdCddLCBbJ2dvb2cuYTExeS5hcmlhLlJvbGUnLCAnZ29vZy5kb20nLCAnZ29vZy5kb20uY2xhc3NsaXN0JywgJ2dvb2cudGVzdGluZy5kb20nLCAnZ29vZy50ZXN0aW5nLnRlc3RTdWl0ZScsICdnb29nLnRlc3RpbmcudWkucmVuZGVyZXJhc3NlcnRzJywgJ2dvb2cudWkuVGFiJywgJ2dvb2cudWkuVGFiUmVuZGVyZXInXSwgeydsYW5nJzogJ2VzNicsICdtb2R1bGUnOiAnZ29vZyd9KTsKZ29vZy5hZGREZXBlbmRlbmN5KCd1aS90ZXh0YXJlYS5qcycsIFsnZ29vZy51aS5UZXh0YXJlYScsICdnb29nLnVpLlRleHRhcmVhLkV2ZW50VHlwZSddLCBbJ2dvb2cuYXNzZXJ0cycsICdnb29nLmRvbScsICdnb29nLmRvbS5jbGFzc2xpc3QnLCAnZ29vZy5ldmVudHMuRXZlbnRUeXBlJywgJ2dvb2cuc3R5bGUnLCAnZ29vZy51aS5Db250cm9sJywgJ2dvb2cudWkuVGV4dGFyZWFSZW5kZXJlcicsICdnb29nLnVzZXJBZ2VudCddLCB7fSk7Cmdvb2cuYWRkRGVwZW5kZW5jeSgndWkvdGV4dGFyZWFfdGVzdC5qcycsIFsnZ29vZy51aS5UZXh0YXJlYVRlc3QnXSwgWydnb29nLmRvbScsICdnb29nLmRvbS5jbGFzc2xpc3QnLCAnZ29vZy5ldmVudHMnLCAnZ29vZy5zdHlsZScsICdnb29nLnRlc3RpbmcuRXhwZWN0ZWRGYWlsdXJlcycsICdnb29nLnRlc3RpbmcuZXZlbnRzLkV2ZW50T2JzZXJ2ZXInLCAnZ29vZy50ZXN0aW5nLnRlc3RTdWl0ZScsICdnb29nLnVpLlRleHRhcmVhJywgJ2dvb2cudWkuVGV4dGFyZWFSZW5kZXJlcicsICdnb29nLnVzZXJBZ2VudCcsICdnb29nLnVzZXJBZ2VudC5wcm9kdWN0J10sIHsnbGFuZyc6ICdlczYnLCAnbW9kdWxlJzogJ2dvb2cnfSk7Cmdvb2cuYWRkRGVwZW5kZW5jeSgndWkvdGV4dGFyZWFyZW5kZXJlci5qcycsIFsnZ29vZy51aS5UZXh0YXJlYVJlbmRlcmVyJ10sIFsnZ29vZy5kb20uVGFnTmFtZScsICdnb29nLnVpLkNvbXBvbmVudCcsICdnb29nLnVpLkNvbnRyb2xSZW5kZXJlciddLCB7fSk7Cmdvb2cuYWRkRGVwZW5kZW5jeSgndWkvdG9nZ2xlYnV0dG9uLmpzJywgWydnb29nLnVpLlRvZ2dsZUJ1dHRvbiddLCBbJ2dvb2cudWkuQnV0dG9uJywgJ2dvb2cudWkuQ29tcG9uZW50JywgJ2dvb2cudWkuQ3VzdG9tQnV0dG9uUmVuZGVyZXInLCAnZ29vZy51aS5yZWdpc3RyeSddLCB7fSk7Cmdvb2cuYWRkRGVwZW5kZW5jeSgndWkvdG9vbGJhci5qcycsIFsnZ29vZy51aS5Ub29sYmFyJ10sIFsnZ29vZy51aS5Db250YWluZXInLCAnZ29vZy51aS5Ub29sYmFyUmVuZGVyZXInXSwge30pOwpnb29nLmFkZERlcGVuZGVuY3koJ3VpL3Rvb2xiYXJfdGVzdC5qcycsIFsnZ29vZy51aS5Ub29sYmFyVGVzdCddLCBbJ2dvb2cuYTExeS5hcmlhJywgJ2dvb2cuZG9tJywgJ2dvb2cuZXZlbnRzLkV2ZW50VHlwZScsICdnb29nLnRlc3RpbmcuZXZlbnRzJywgJ2dvb2cudGVzdGluZy5ldmVudHMuRXZlbnQnLCAnZ29vZy50ZXN0aW5nLnRlc3RTdWl0ZScsICdnb29nLnVpLlRvb2xiYXInLCAnZ29vZy51aS5Ub29sYmFyTWVudUJ1dHRvbiddLCB7J2xhbmcnOiAnZXM2JywgJ21vZHVsZSc6ICdnb29nJ30pOwpnb29nLmFkZERlcGVuZGVuY3koJ3VpL3Rvb2xiYXJidXR0b24uanMnLCBbJ2dvb2cudWkuVG9vbGJhckJ1dHRvbiddLCBbJ2dvb2cudWkuQnV0dG9uJywgJ2dvb2cudWkuVG9vbGJhckJ1dHRvblJlbmRlcmVyJywgJ2dvb2cudWkucmVnaXN0cnknXSwge30pOwpnb29nLmFkZERlcGVuZGVuY3koJ3VpL3Rvb2xiYXJidXR0b25yZW5kZXJlci5qcycsIFsnZ29vZy51aS5Ub29sYmFyQnV0dG9uUmVuZGVyZXInXSwgWydnb29nLnVpLkN1c3RvbUJ1dHRvblJlbmRlcmVyJ10sIHt9KTsKZ29vZy5hZGREZXBlbmRlbmN5KCd1aS90b29sYmFyY29sb3JtZW51YnV0dG9uLmpzJywgWydnb29nLnVpLlRvb2xiYXJDb2xvck1lbnVCdXR0b24nXSwgWydnb29nLnVpLkNvbG9yTWVudUJ1dHRvbicsICdnb29nLnVpLlRvb2xiYXJDb2xvck1lbnVCdXR0b25SZW5kZXJlcicsICdnb29nLnVpLnJlZ2lzdHJ5J10sIHt9KTsKZ29vZy5hZGREZXBlbmRlbmN5KCd1aS90b29sYmFyY29sb3JtZW51YnV0dG9ucmVuZGVyZXIuanMnLCBbJ2dvb2cudWkuVG9vbGJhckNvbG9yTWVudUJ1dHRvblJlbmRlcmVyJ10sIFsnZ29vZy5hc3NlcnRzJywgJ2dvb2cuZG9tLmNsYXNzbGlzdCcsICdnb29nLnVpLkNvbG9yTWVudUJ1dHRvblJlbmRlcmVyJywgJ2dvb2cudWkuTWVudUJ1dHRvblJlbmRlcmVyJywgJ2dvb2cudWkuVG9vbGJhck1lbnVCdXR0b25SZW5kZXJlciddLCB7fSk7Cmdvb2cuYWRkRGVwZW5kZW5jeSgndWkvdG9vbGJhcmNvbG9ybWVudWJ1dHRvbnJlbmRlcmVyX3Rlc3QuanMnLCBbJ2dvb2cudWkuVG9vbGJhckNvbG9yTWVudUJ1dHRvblJlbmRlcmVyVGVzdCddLCBbJ2dvb2cuZG9tJywgJ2dvb2cudGVzdGluZy50ZXN0U3VpdGUnLCAnZ29vZy50ZXN0aW5nLnVpLlJlbmRlcmVySGFybmVzcycsICdnb29nLnRlc3RpbmcudWkucmVuZGVyZXJhc3NlcnRzJywgJ2dvb2cudWkuVG9vbGJhckNvbG9yTWVudUJ1dHRvbicsICdnb29nLnVpLlRvb2xiYXJDb2xvck1lbnVCdXR0b25SZW5kZXJlciddLCB7J2xhbmcnOiAnZXM2JywgJ21vZHVsZSc6ICdnb29nJ30pOwpnb29nLmFkZERlcGVuZGVuY3koJ3VpL3Rvb2xiYXJtZW51YnV0dG9uLmpzJywgWydnb29nLnVpLlRvb2xiYXJNZW51QnV0dG9uJ10sIFsnZ29vZy51aS5NZW51QnV0dG9uJywgJ2dvb2cudWkuVG9vbGJhck1lbnVCdXR0b25SZW5kZXJlcicsICdnb29nLnVpLnJlZ2lzdHJ5J10sIHt9KTsKZ29vZy5hZGREZXBlbmRlbmN5KCd1aS90b29sYmFybWVudWJ1dHRvbnJlbmRlcmVyLmpzJywgWydnb29nLnVpLlRvb2xiYXJNZW51QnV0dG9uUmVuZGVyZXInXSwgWydnb29nLnVpLk1lbnVCdXR0b25SZW5kZXJlciddLCB7fSk7Cmdvb2cuYWRkRGVwZW5kZW5jeSgndWkvdG9vbGJhcnJlbmRlcmVyLmpzJywgWydnb29nLnVpLlRvb2xiYXJSZW5kZXJlciddLCBbJ2dvb2cuYTExeS5hcmlhLlJvbGUnLCAnZ29vZy5kb20uVGFnTmFtZScsICdnb29nLnVpLkNvbnRhaW5lcicsICdnb29nLnVpLkNvbnRhaW5lclJlbmRlcmVyJywgJ2dvb2cudWkuU2VwYXJhdG9yJywgJ2dvb2cudWkuVG9vbGJhclNlcGFyYXRvclJlbmRlcmVyJ10sIHt9KTsKZ29vZy5hZGREZXBlbmRlbmN5KCd1aS90b29sYmFyc2VsZWN0LmpzJywgWydnb29nLnVpLlRvb2xiYXJTZWxlY3QnXSwgWydnb29nLnVpLlNlbGVjdCcsICdnb29nLnVpLlRvb2xiYXJNZW51QnV0dG9uUmVuZGVyZXInLCAnZ29vZy51aS5yZWdpc3RyeSddLCB7fSk7Cmdvb2cuYWRkRGVwZW5kZW5jeSgndWkvdG9vbGJhcnNlcGFyYXRvci5qcycsIFsnZ29vZy51aS5Ub29sYmFyU2VwYXJhdG9yJ10sIFsnZ29vZy51aS5TZXBhcmF0b3InLCAnZ29vZy51aS5Ub29sYmFyU2VwYXJhdG9yUmVuZGVyZXInLCAnZ29vZy51aS5yZWdpc3RyeSddLCB7fSk7Cmdvb2cuYWRkRGVwZW5kZW5jeSgndWkvdG9vbGJhcnNlcGFyYXRvcnJlbmRlcmVyLmpzJywgWydnb29nLnVpLlRvb2xiYXJTZXBhcmF0b3JSZW5kZXJlciddLCBbJ2dvb2cuYXNzZXJ0cycsICdnb29nLmRvbS5UYWdOYW1lJywgJ2dvb2cuZG9tLmNsYXNzbGlzdCcsICdnb29nLnVpLklOTElORV9CTE9DS19DTEFTU05BTUUnLCAnZ29vZy51aS5NZW51U2VwYXJhdG9yUmVuZGVyZXInXSwge30pOwpnb29nLmFkZERlcGVuZGVuY3koJ3VpL3Rvb2xiYXJzZXBhcmF0b3JyZW5kZXJlcl90ZXN0LmpzJywgWydnb29nLnVpLlRvb2xiYXJTZXBhcmF0b3JSZW5kZXJlclRlc3QnXSwgWydnb29nLmRvbScsICdnb29nLmRvbS5UYWdOYW1lJywgJ2dvb2cuZG9tLmNsYXNzbGlzdCcsICdnb29nLnRlc3RpbmcudGVzdFN1aXRlJywgJ2dvb2cudWkuQ29tcG9uZW50JywgJ2dvb2cudWkuSU5MSU5FX0JMT0NLX0NMQVNTTkFNRScsICdnb29nLnVpLlRvb2xiYXJTZXBhcmF0b3InLCAnZ29vZy51aS5Ub29sYmFyU2VwYXJhdG9yUmVuZGVyZXInXSwgeydsYW5nJzogJ2VzNicsICdtb2R1bGUnOiAnZ29vZyd9KTsKZ29vZy5hZGREZXBlbmRlbmN5KCd1aS90b29sYmFydG9nZ2xlYnV0dG9uLmpzJywgWydnb29nLnVpLlRvb2xiYXJUb2dnbGVCdXR0b24nXSwgWydnb29nLnVpLlRvZ2dsZUJ1dHRvbicsICdnb29nLnVpLlRvb2xiYXJCdXR0b25SZW5kZXJlcicsICdnb29nLnVpLnJlZ2lzdHJ5J10sIHt9KTsKZ29vZy5hZGREZXBlbmRlbmN5KCd1aS90b29sdGlwLmpzJywgWydnb29nLnVpLlRvb2x0aXAnLCAnZ29vZy51aS5Ub29sdGlwLkN1cnNvclRvb2x0aXBQb3NpdGlvbicsICdnb29nLnVpLlRvb2x0aXAuRWxlbWVudFRvb2x0aXBQb3NpdGlvbicsICdnb29nLnVpLlRvb2x0aXAuU3RhdGUnXSwgWydnb29nLlRpbWVyJywgJ2dvb2cuYXJyYXknLCAnZ29vZy5hc3NlcnRzJywgJ2dvb2cuZG9tJywgJ2dvb2cuZG9tLlRhZ05hbWUnLCAnZ29vZy5kb20uc2FmZScsICdnb29nLmV2ZW50cycsICdnb29nLmV2ZW50cy5FdmVudFR5cGUnLCAnZ29vZy5ldmVudHMuRm9jdXNIYW5kbGVyJywgJ2dvb2cubWF0aC5Cb3gnLCAnZ29vZy5tYXRoLkNvb3JkaW5hdGUnLCAnZ29vZy5wb3NpdGlvbmluZycsICdnb29nLnBvc2l0aW9uaW5nLkFuY2hvcmVkUG9zaXRpb24nLCAnZ29vZy5wb3NpdGlvbmluZy5Db3JuZXInLCAnZ29vZy5wb3NpdGlvbmluZy5PdmVyZmxvdycsICdnb29nLnBvc2l0aW9uaW5nLk92ZXJmbG93U3RhdHVzJywgJ2dvb2cucG9zaXRpb25pbmcuVmlld3BvcnRQb3NpdGlvbicsICdnb29nLnN0cnVjdHMuU2V0JywgJ2dvb2cuc3R5bGUnLCAnZ29vZy51aS5Qb3B1cCcsICdnb29nLnVpLlBvcHVwQmFzZSddLCB7fSk7Cmdvb2cuYWRkRGVwZW5kZW5jeSgndWkvdG9vbHRpcF90ZXN0LmpzJywgWydnb29nLnVpLlRvb2x0aXBUZXN0J10sIFsnZ29vZy5kb20nLCAnZ29vZy5kb20uVGFnTmFtZScsICdnb29nLmV2ZW50cy5FdmVudCcsICdnb29nLmV2ZW50cy5FdmVudEhhbmRsZXInLCAnZ29vZy5ldmVudHMuRXZlbnRUeXBlJywgJ2dvb2cuZXZlbnRzLkZvY3VzSGFuZGxlcicsICdnb29nLmh0bWwudGVzdGluZycsICdnb29nLm1hdGguQ29vcmRpbmF0ZScsICdnb29nLnBvc2l0aW9uaW5nLkFic29sdXRlUG9zaXRpb24nLCAnZ29vZy5zdHlsZScsICdnb29nLnRlc3RpbmcuTW9ja0Nsb2NrJywgJ2dvb2cudGVzdGluZy5UZXN0UXVldWUnLCAnZ29vZy50ZXN0aW5nLmV2ZW50cycsICdnb29nLnRlc3RpbmcudGVzdFN1aXRlJywgJ2dvb2cudWkuUG9wdXBCYXNlJywgJ2dvb2cudWkuVG9vbHRpcCcsICdnb29nLnVzZXJBZ2VudCddLCB7J2xhbmcnOiAnZXM2JywgJ21vZHVsZSc6ICdnb29nJ30pOwpnb29nLmFkZERlcGVuZGVuY3koJ3VpL3RyZWUvYmFzZW5vZGUuanMnLCBbJ2dvb2cudWkudHJlZS5CYXNlTm9kZScsICdnb29nLnVpLnRyZWUuQmFzZU5vZGUuRXZlbnRUeXBlJ10sIFsnZ29vZy5UaW1lcicsICdnb29nLmExMXkuYXJpYScsICdnb29nLmExMXkuYXJpYS5TdGF0ZScsICdnb29nLmFzc2VydHMnLCAnZ29vZy5kb20uc2FmZScsICdnb29nLmV2ZW50cy5FdmVudCcsICdnb29nLmV2ZW50cy5LZXlDb2RlcycsICdnb29nLmh0bWwuU2FmZUh0bWwnLCAnZ29vZy5odG1sLlNhZmVTdHlsZScsICdnb29nLnN0cmluZycsICdnb29nLnN0cmluZy5TdHJpbmdCdWZmZXInLCAnZ29vZy5zdHlsZScsICdnb29nLnVpLkNvbXBvbmVudCddLCB7fSk7Cmdvb2cuYWRkRGVwZW5kZW5jeSgndWkvdHJlZS9iYXNlbm9kZV90ZXN0LmpzJywgWydnb29nLnVpLnRyZWUuQmFzZU5vZGVUZXN0J10sIFsnZ29vZy5hMTF5LmFyaWEnLCAnZ29vZy5kb20nLCAnZ29vZy5kb20uVGFnTmFtZScsICdnb29nLmRvbS5jbGFzc2xpc3QnLCAnZ29vZy5odG1sLnRlc3RpbmcnLCAnZ29vZy50ZXN0aW5nLnRlc3RTdWl0ZScsICdnb29nLnVpLkNvbXBvbmVudCcsICdnb29nLnVpLnRyZWUuQmFzZU5vZGUnLCAnZ29vZy51aS50cmVlLlRyZWVDb250cm9sJywgJ2dvb2cudWkudHJlZS5UcmVlTm9kZSddLCB7J2xhbmcnOiAnZXM2JywgJ21vZHVsZSc6ICdnb29nJ30pOwpnb29nLmFkZERlcGVuZGVuY3koJ3VpL3RyZWUvdHJlZWNvbnRyb2wuanMnLCBbJ2dvb2cudWkudHJlZS5UcmVlQ29udHJvbCddLCBbJ2dvb2cuYTExeS5hcmlhJywgJ2dvb2cuYXNzZXJ0cycsICdnb29nLmRvbS5jbGFzc2xpc3QnLCAnZ29vZy5ldmVudHMuRXZlbnRUeXBlJywgJ2dvb2cuZXZlbnRzLkZvY3VzSGFuZGxlcicsICdnb29nLmV2ZW50cy5LZXlIYW5kbGVyJywgJ2dvb2cuaHRtbC5TYWZlSHRtbCcsICdnb29nLmxvZycsICdnb29nLnVpLnRyZWUuQmFzZU5vZGUnLCAnZ29vZy51aS50cmVlLlRyZWVOb2RlJywgJ2dvb2cudWkudHJlZS5UeXBlQWhlYWQnLCAnZ29vZy51c2VyQWdlbnQnXSwge30pOwpnb29nLmFkZERlcGVuZGVuY3koJ3VpL3RyZWUvdHJlZWNvbnRyb2xfdGVzdC5qcycsIFsnZ29vZy51aS50cmVlLlRyZWVDb250cm9sVGVzdCddLCBbJ2dvb2cuZG9tJywgJ2dvb2cudGVzdGluZy50ZXN0U3VpdGUnLCAnZ29vZy51aS50cmVlLlRyZWVDb250cm9sJ10sIHsnbGFuZyc6ICdlczYnLCAnbW9kdWxlJzogJ2dvb2cnfSk7Cmdvb2cuYWRkRGVwZW5kZW5jeSgndWkvdHJlZS90cmVlbm9kZS5qcycsIFsnZ29vZy51aS50cmVlLlRyZWVOb2RlJ10sIFsnZ29vZy51aS50cmVlLkJhc2VOb2RlJ10sIHt9KTsKZ29vZy5hZGREZXBlbmRlbmN5KCd1aS90cmVlL3R5cGVhaGVhZC5qcycsIFsnZ29vZy51aS50cmVlLlR5cGVBaGVhZCcsICdnb29nLnVpLnRyZWUuVHlwZUFoZWFkLk9mZnNldCddLCBbJ2dvb2cuYXJyYXknLCAnZ29vZy5ldmVudHMuS2V5Q29kZXMnLCAnZ29vZy5zdHJpbmcnLCAnZ29vZy5zdHJ1Y3RzLlRyaWUnXSwge30pOwpnb29nLmFkZERlcGVuZGVuY3koJ3VpL3RyZWUvdHlwZWFoZWFkX3Rlc3QuanMnLCBbJ2dvb2cudWkudHJlZS5UeXBlQWhlYWRUZXN0J10sIFsnZ29vZy5kb20nLCAnZ29vZy5ldmVudHMuS2V5Q29kZXMnLCAnZ29vZy50ZXN0aW5nLnRlc3RTdWl0ZScsICdnb29nLnVpLnRyZWUuVHJlZUNvbnRyb2wnLCAnZ29vZy51aS50cmVlLlR5cGVBaGVhZCddLCB7J2xhbmcnOiAnZXM2JywgJ21vZHVsZSc6ICdnb29nJ30pOwpnb29nLmFkZERlcGVuZGVuY3koJ3VpL3RyaXN0YXRlbWVudWl0ZW0uanMnLCBbJ2dvb2cudWkuVHJpU3RhdGVNZW51SXRlbScsICdnb29nLnVpLlRyaVN0YXRlTWVudUl0ZW0uU3RhdGUnXSwgWydnb29nLmRvbS5jbGFzc2xpc3QnLCAnZ29vZy51aS5Db21wb25lbnQnLCAnZ29vZy51aS5NZW51SXRlbScsICdnb29nLnVpLlRyaVN0YXRlTWVudUl0ZW1SZW5kZXJlcicsICdnb29nLnVpLnJlZ2lzdHJ5J10sIHt9KTsKZ29vZy5hZGREZXBlbmRlbmN5KCd1aS90cmlzdGF0ZW1lbnVpdGVtcmVuZGVyZXIuanMnLCBbJ2dvb2cudWkuVHJpU3RhdGVNZW51SXRlbVJlbmRlcmVyJ10sIFsnZ29vZy5hc3NlcnRzJywgJ2dvb2cuZG9tLmNsYXNzbGlzdCcsICdnb29nLnVpLk1lbnVJdGVtUmVuZGVyZXInXSwge30pOwpnb29nLmFkZERlcGVuZGVuY3koJ3VpL3R3b3RodW1ic2xpZGVyLmpzJywgWydnb29nLnVpLlR3b1RodW1iU2xpZGVyJ10sIFsnZ29vZy5hMTF5LmFyaWEnLCAnZ29vZy5hMTF5LmFyaWEuUm9sZScsICdnb29nLmRvbScsICdnb29nLmRvbS5UYWdOYW1lJywgJ2dvb2cudWkuU2xpZGVyQmFzZSddLCB7fSk7Cmdvb2cuYWRkRGVwZW5kZW5jeSgndWkvdHdvdGh1bWJzbGlkZXJfdGVzdC5qcycsIFsnZ29vZy51aS5Ud29UaHVtYlNsaWRlclRlc3QnXSwgWydnb29nLnRlc3RpbmcudGVzdFN1aXRlJywgJ2dvb2cudWkuU2xpZGVyQmFzZScsICdnb29nLnVpLlR3b1RodW1iU2xpZGVyJ10sIHsnbGFuZyc6ICdlczYnLCAnbW9kdWxlJzogJ2dvb2cnfSk7Cmdvb2cuYWRkRGVwZW5kZW5jeSgndWkvemlwcHkuanMnLCBbJ2dvb2cudWkuWmlwcHknLCAnZ29vZy51aS5aaXBweS5FdmVudHMnLCAnZ29vZy51aS5aaXBweUV2ZW50J10sIFsnZ29vZy5hMTF5LmFyaWEnLCAnZ29vZy5hMTF5LmFyaWEuUm9sZScsICdnb29nLmExMXkuYXJpYS5TdGF0ZScsICdnb29nLmRvbScsICdnb29nLmRvbS5jbGFzc2xpc3QnLCAnZ29vZy5ldmVudHMuRXZlbnQnLCAnZ29vZy5ldmVudHMuRXZlbnRIYW5kbGVyJywgJ2dvb2cuZXZlbnRzLkV2ZW50VGFyZ2V0JywgJ2dvb2cuZXZlbnRzLkV2ZW50VHlwZScsICdnb29nLmV2ZW50cy5LZXlDb2RlcycsICdnb29nLmV2ZW50cy5LZXlIYW5kbGVyJywgJ2dvb2cuc3R5bGUnXSwge30pOwpnb29nLmFkZERlcGVuZGVuY3koJ3VpL3ppcHB5X3Rlc3QuanMnLCBbJ2dvb2cudWkuWmlwcHlUZXN0J10sIFsnZ29vZy5hMTF5LmFyaWEnLCAnZ29vZy5kb20nLCAnZ29vZy5kb20uVGFnTmFtZScsICdnb29nLmRvbS5jbGFzc2xpc3QnLCAnZ29vZy5ldmVudHMnLCAnZ29vZy5ldmVudHMuS2V5Q29kZXMnLCAnZ29vZy5vYmplY3QnLCAnZ29vZy50ZXN0aW5nLmV2ZW50cycsICdnb29nLnRlc3RpbmcudGVzdFN1aXRlJywgJ2dvb2cudWkuWmlwcHknXSwgeydsYW5nJzogJ2VzNicsICdtb2R1bGUnOiAnZ29vZyd9KTsKZ29vZy5hZGREZXBlbmRlbmN5KCd1cmkvdXJpLmpzJywgWydnb29nLlVyaScsICdnb29nLlVyaS5RdWVyeURhdGEnXSwgWydnb29nLmFycmF5JywgJ2dvb2cuYXNzZXJ0cycsICdnb29nLnN0cmluZycsICdnb29nLnN0cnVjdHMnLCAnZ29vZy5zdHJ1Y3RzLk1hcCcsICdnb29nLnVyaS51dGlscycsICdnb29nLnVyaS51dGlscy5Db21wb25lbnRJbmRleCcsICdnb29nLnVyaS51dGlscy5TdGFuZGFyZFF1ZXJ5UGFyYW0nXSwge30pOwpnb29nLmFkZERlcGVuZGVuY3koJ3VyaS91cmlfdGVzdC5qcycsIFsnZ29vZy5VcmlUZXN0J10sIFsnZ29vZy5VcmknLCAnZ29vZy50ZXN0aW5nLnRlc3RTdWl0ZSddLCB7J2xhbmcnOiAnZXM2JywgJ21vZHVsZSc6ICdnb29nJ30pOwpnb29nLmFkZERlcGVuZGVuY3koJ3VyaS91dGlscy5qcycsIFsnZ29vZy51cmkudXRpbHMnLCAnZ29vZy51cmkudXRpbHMuQ29tcG9uZW50SW5kZXgnLCAnZ29vZy51cmkudXRpbHMuUXVlcnlBcnJheScsICdnb29nLnVyaS51dGlscy5RdWVyeVZhbHVlJywgJ2dvb2cudXJpLnV0aWxzLlN0YW5kYXJkUXVlcnlQYXJhbSddLCBbJ2dvb2cuYXJyYXknLCAnZ29vZy5hc3NlcnRzJywgJ2dvb2cuc3RyaW5nJ10sIHt9KTsKZ29vZy5hZGREZXBlbmRlbmN5KCd1cmkvdXRpbHNfdGVzdC5qcycsIFsnZ29vZy51cmkudXRpbHNUZXN0J10sIFsnZ29vZy5mdW5jdGlvbnMnLCAnZ29vZy5zdHJpbmcnLCAnZ29vZy50ZXN0aW5nLnRlc3RTdWl0ZScsICdnb29nLnVyaS51dGlscyddLCB7J2xhbmcnOiAnZXM2JywgJ21vZHVsZSc6ICdnb29nJ30pOwpnb29nLmFkZERlcGVuZGVuY3koJ3VzZXJhZ2VudC9hZG9iZXJlYWRlci5qcycsIFsnZ29vZy51c2VyQWdlbnQuYWRvYmVSZWFkZXInXSwgWydnb29nLnN0cmluZycsICdnb29nLnVzZXJBZ2VudCddLCB7J21vZHVsZSc6ICdnb29nJ30pOwpnb29nLmFkZERlcGVuZGVuY3koJ3VzZXJhZ2VudC9hZG9iZXJlYWRlcl90ZXN0LmpzJywgWydnb29nLnVzZXJBZ2VudC5hZG9iZVJlYWRlclRlc3QnXSwgWydnb29nLnRlc3RpbmcudGVzdFN1aXRlJywgJ2dvb2cudXNlckFnZW50LmFkb2JlUmVhZGVyJ10sIHsnbGFuZyc6ICdlczYnLCAnbW9kdWxlJzogJ2dvb2cnfSk7Cmdvb2cuYWRkRGVwZW5kZW5jeSgndXNlcmFnZW50L2ZsYXNoLmpzJywgWydnb29nLnVzZXJBZ2VudC5mbGFzaCddLCBbJ2dvb2cuc3RyaW5nJ10sIHt9KTsKZ29vZy5hZGREZXBlbmRlbmN5KCd1c2VyYWdlbnQvZmxhc2hfdGVzdC5qcycsIFsnZ29vZy51c2VyQWdlbnQuZmxhc2hUZXN0J10sIFsnZ29vZy50ZXN0aW5nLnRlc3RTdWl0ZScsICdnb29nLnVzZXJBZ2VudC5mbGFzaCddLCB7J2xhbmcnOiAnZXM2JywgJ21vZHVsZSc6ICdnb29nJ30pOwpnb29nLmFkZERlcGVuZGVuY3koJ3VzZXJhZ2VudC9pcGhvdG8uanMnLCBbJ2dvb2cudXNlckFnZW50LmlwaG90byddLCBbJ2dvb2cuc3RyaW5nJywgJ2dvb2cudXNlckFnZW50J10sIHt9KTsKZ29vZy5hZGREZXBlbmRlbmN5KCd1c2VyYWdlbnQvanNjcmlwdC5qcycsIFsnZ29vZy51c2VyQWdlbnQuanNjcmlwdCddLCBbJ2dvb2cuc3RyaW5nJ10sIHt9KTsKZ29vZy5hZGREZXBlbmRlbmN5KCd1c2VyYWdlbnQvanNjcmlwdF90ZXN0LmpzJywgWydnb29nLnVzZXJBZ2VudC5qc2NyaXB0VGVzdCddLCBbJ2dvb2cudGVzdGluZy50ZXN0U3VpdGUnLCAnZ29vZy51c2VyQWdlbnQuanNjcmlwdCddLCB7J2xhbmcnOiAnZXM2JywgJ21vZHVsZSc6ICdnb29nJ30pOwpnb29nLmFkZERlcGVuZGVuY3koJ3VzZXJhZ2VudC9rZXlib2FyZC5qcycsIFsnZ29vZy51c2VyQWdlbnQua2V5Ym9hcmQnXSwgWydnb29nLmxhYnMudXNlckFnZW50LnBsYXRmb3JtJ10sIHt9KTsKZ29vZy5hZGREZXBlbmRlbmN5KCd1c2VyYWdlbnQva2V5Ym9hcmRfdGVzdC5qcycsIFsnZ29vZy51c2VyQWdlbnQua2V5Ym9hcmRUZXN0J10sIFsnZ29vZy5sYWJzLnVzZXJBZ2VudC50ZXN0QWdlbnRzJywgJ2dvb2cubGFicy51c2VyQWdlbnQudXRpbCcsICdnb29nLnRlc3RpbmcuTW9ja1VzZXJBZ2VudCcsICdnb29nLnRlc3RpbmcudGVzdFN1aXRlJywgJ2dvb2cudXNlckFnZW50LmtleWJvYXJkJywgJ2dvb2cudXNlckFnZW50VGVzdFV0aWwnXSwgeydsYW5nJzogJ2VzNicsICdtb2R1bGUnOiAnZ29vZyd9KTsKZ29vZy5hZGREZXBlbmRlbmN5KCd1c2VyYWdlbnQvcGxhdGZvcm0uanMnLCBbJ2dvb2cudXNlckFnZW50LnBsYXRmb3JtJ10sIFsnZ29vZy5zdHJpbmcnLCAnZ29vZy51c2VyQWdlbnQnXSwge30pOwpnb29nLmFkZERlcGVuZGVuY3koJ3VzZXJhZ2VudC9wbGF0Zm9ybV90ZXN0LmpzJywgWydnb29nLnVzZXJBZ2VudC5wbGF0Zm9ybVRlc3QnXSwgWydnb29nLnRlc3RpbmcuTW9ja1VzZXJBZ2VudCcsICdnb29nLnRlc3RpbmcudGVzdFN1aXRlJywgJ2dvb2cudXNlckFnZW50JywgJ2dvb2cudXNlckFnZW50LnBsYXRmb3JtJywgJ2dvb2cudXNlckFnZW50VGVzdFV0aWwnXSwgeydsYW5nJzogJ2VzNicsICdtb2R1bGUnOiAnZ29vZyd9KTsKZ29vZy5hZGREZXBlbmRlbmN5KCd1c2VyYWdlbnQvcHJvZHVjdC5qcycsIFsnZ29vZy51c2VyQWdlbnQucHJvZHVjdCddLCBbJ2dvb2cubGFicy51c2VyQWdlbnQuYnJvd3NlcicsICdnb29nLmxhYnMudXNlckFnZW50LnBsYXRmb3JtJywgJ2dvb2cudXNlckFnZW50J10sIHt9KTsKZ29vZy5hZGREZXBlbmRlbmN5KCd1c2VyYWdlbnQvcHJvZHVjdF9pc3ZlcnNpb24uanMnLCBbJ2dvb2cudXNlckFnZW50LnByb2R1Y3QuaXNWZXJzaW9uJ10sIFsnZ29vZy5sYWJzLnVzZXJBZ2VudC5wbGF0Zm9ybScsICdnb29nLnN0cmluZycsICdnb29nLnVzZXJBZ2VudCcsICdnb29nLnVzZXJBZ2VudC5wcm9kdWN0J10sIHt9KTsKZ29vZy5hZGREZXBlbmRlbmN5KCd1c2VyYWdlbnQvcHJvZHVjdF90ZXN0LmpzJywgWydnb29nLnVzZXJBZ2VudC5wcm9kdWN0VGVzdCddLCBbJ2dvb2cuYXJyYXknLCAnZ29vZy5sYWJzLnVzZXJBZ2VudC50ZXN0QWdlbnRzJywgJ2dvb2cubGFicy51c2VyQWdlbnQudXRpbCcsICdnb29nLnRlc3RpbmcuTW9ja1VzZXJBZ2VudCcsICdnb29nLnRlc3RpbmcuUHJvcGVydHlSZXBsYWNlcicsICdnb29nLnRlc3RpbmcudGVzdFN1aXRlJywgJ2dvb2cudXNlckFnZW50JywgJ2dvb2cudXNlckFnZW50LnByb2R1Y3QnLCAnZ29vZy51c2VyQWdlbnQucHJvZHVjdC5pc1ZlcnNpb24nLCAnZ29vZy51c2VyQWdlbnRUZXN0VXRpbCddLCB7J2xhbmcnOiAnZXM2JywgJ21vZHVsZSc6ICdnb29nJ30pOwpnb29nLmFkZERlcGVuZGVuY3koJ3VzZXJhZ2VudC91c2VyYWdlbnQuanMnLCBbJ2dvb2cudXNlckFnZW50J10sIFsnZ29vZy5sYWJzLnVzZXJBZ2VudC5icm93c2VyJywgJ2dvb2cubGFicy51c2VyQWdlbnQuZW5naW5lJywgJ2dvb2cubGFicy51c2VyQWdlbnQucGxhdGZvcm0nLCAnZ29vZy5sYWJzLnVzZXJBZ2VudC51dGlsJywgJ2dvb2cucmVmbGVjdCcsICdnb29nLnN0cmluZyddLCB7fSk7Cmdvb2cuYWRkRGVwZW5kZW5jeSgndXNlcmFnZW50L3VzZXJhZ2VudF9xdWlya3NfdGVzdC5qcycsIFsnZ29vZy51c2VyQWdlbnRRdWlya3NUZXN0J10sIFsnZ29vZy50ZXN0aW5nLnRlc3RTdWl0ZScsICdnb29nLnVzZXJBZ2VudCddLCB7J2xhbmcnOiAnZXM2JywgJ21vZHVsZSc6ICdnb29nJ30pOwpnb29nLmFkZERlcGVuZGVuY3koJ3VzZXJhZ2VudC91c2VyYWdlbnRfdGVzdC5qcycsIFsnZ29vZy51c2VyQWdlbnRUZXN0J10sIFsnZ29vZy5hcnJheScsICdnb29nLmxhYnMudXNlckFnZW50LnBsYXRmb3JtJywgJ2dvb2cubGFicy51c2VyQWdlbnQudGVzdEFnZW50cycsICdnb29nLmxhYnMudXNlckFnZW50LnV0aWwnLCAnZ29vZy50ZXN0aW5nLlByb3BlcnR5UmVwbGFjZXInLCAnZ29vZy50ZXN0aW5nLnRlc3RTdWl0ZScsICdnb29nLnVzZXJBZ2VudCcsICdnb29nLnVzZXJBZ2VudFRlc3RVdGlsJ10sIHsnbGFuZyc6ICdlczYnLCAnbW9kdWxlJzogJ2dvb2cnfSk7Cmdvb2cuYWRkRGVwZW5kZW5jeSgndXNlcmFnZW50L3VzZXJhZ2VudHRlc3R1dGlsLmpzJywgWydnb29nLnVzZXJBZ2VudFRlc3RVdGlsJywgJ2dvb2cudXNlckFnZW50VGVzdFV0aWwuVXNlckFnZW50cyddLCBbJ2dvb2cubGFicy51c2VyQWdlbnQuYnJvd3NlcicsICdnb29nLmxhYnMudXNlckFnZW50LmVuZ2luZScsICdnb29nLmxhYnMudXNlckFnZW50LnBsYXRmb3JtJywgJ2dvb2cub2JqZWN0JywgJ2dvb2cudXNlckFnZW50JywgJ2dvb2cudXNlckFnZW50LmtleWJvYXJkJywgJ2dvb2cudXNlckFnZW50LnBsYXRmb3JtJywgJ2dvb2cudXNlckFnZW50LnByb2R1Y3QnLCAnZ29vZy51c2VyQWdlbnQucHJvZHVjdC5pc1ZlcnNpb24nXSwge30pOwpnb29nLmFkZERlcGVuZGVuY3koJ3ZlYy9mbG9hdDMyYXJyYXkuanMnLCBbJ2dvb2cudmVjLkZsb2F0MzJBcnJheSddLCBbXSwgeydsYW5nJzogJ2VzNid9KTsKZ29vZy5hZGREZXBlbmRlbmN5KCd2ZWMvZmxvYXQzMmFycmF5X3Rlc3QuanMnLCBbJ2dvb2cudmVjLkZsb2F0MzJBcnJheVRlc3QnXSwgWydnb29nLnRlc3RpbmcudGVzdFN1aXRlJywgJ2dvb2cudmVjLkZsb2F0MzJBcnJheSddLCB7J2xhbmcnOiAnZXM2JywgJ21vZHVsZSc6ICdnb29nJ30pOwpnb29nLmFkZERlcGVuZGVuY3koJ3ZlYy9mbG9hdDY0YXJyYXkuanMnLCBbJ2dvb2cudmVjLkZsb2F0NjRBcnJheSddLCBbXSwgeydsYW5nJzogJ2VzNid9KTsKZ29vZy5hZGREZXBlbmRlbmN5KCd2ZWMvZmxvYXQ2NGFycmF5X3Rlc3QuanMnLCBbJ2dvb2cudmVjLkZsb2F0NjRBcnJheVRlc3QnXSwgWydnb29nLnRlc3RpbmcudGVzdFN1aXRlJywgJ2dvb2cudmVjLkZsb2F0NjRBcnJheSddLCB7J2xhbmcnOiAnZXM2JywgJ21vZHVsZSc6ICdnb29nJ30pOwpnb29nLmFkZERlcGVuZGVuY3koJ3ZlYy9tYXQzLmpzJywgWydnb29nLnZlYy5NYXQzJ10sIFsnZ29vZy52ZWMnXSwge30pOwpnb29nLmFkZERlcGVuZGVuY3koJ3ZlYy9tYXQzX3Rlc3QuanMnLCBbJ2dvb2cudmVjLk1hdDNUZXN0J10sIFsnZ29vZy50ZXN0aW5nLnRlc3RTdWl0ZScsICdnb29nLnZlYy5NYXQzJ10sIHsnbGFuZyc6ICdlczYnLCAnbW9kdWxlJzogJ2dvb2cnfSk7Cmdvb2cuYWRkRGVwZW5kZW5jeSgndmVjL21hdDNkLmpzJywgWydnb29nLnZlYy5tYXQzZCcsICdnb29nLnZlYy5tYXQzZC5UeXBlJ10sIFsnZ29vZy52ZWMnLCAnZ29vZy52ZWMudmVjM2QuVHlwZSddLCB7fSk7Cmdvb2cuYWRkRGVwZW5kZW5jeSgndmVjL21hdDNkX3Rlc3QuanMnLCBbJ2dvb2cudmVjLm1hdDNkVGVzdCddLCBbJ2dvb2cudGVzdGluZy50ZXN0U3VpdGUnLCAnZ29vZy52ZWMubWF0M2QnXSwgeydsYW5nJzogJ2VzNicsICdtb2R1bGUnOiAnZ29vZyd9KTsKZ29vZy5hZGREZXBlbmRlbmN5KCd2ZWMvbWF0M2YuanMnLCBbJ2dvb2cudmVjLm1hdDNmJywgJ2dvb2cudmVjLm1hdDNmLlR5cGUnXSwgWydnb29nLnZlYycsICdnb29nLnZlYy52ZWMzZi5UeXBlJ10sIHt9KTsKZ29vZy5hZGREZXBlbmRlbmN5KCd2ZWMvbWF0M2ZfdGVzdC5qcycsIFsnZ29vZy52ZWMubWF0M2ZUZXN0J10sIFsnZ29vZy50ZXN0aW5nLnRlc3RTdWl0ZScsICdnb29nLnZlYy5tYXQzZiddLCB7J2xhbmcnOiAnZXM2JywgJ21vZHVsZSc6ICdnb29nJ30pOwpnb29nLmFkZERlcGVuZGVuY3koJ3ZlYy9tYXQ0LmpzJywgWydnb29nLnZlYy5NYXQ0J10sIFsnZ29vZy52ZWMnLCAnZ29vZy52ZWMuVmVjMycsICdnb29nLnZlYy5WZWM0J10sIHt9KTsKZ29vZy5hZGREZXBlbmRlbmN5KCd2ZWMvbWF0NF90ZXN0LmpzJywgWydnb29nLnZlYy5NYXQ0VGVzdCddLCBbJ2dvb2cudGVzdGluZy50ZXN0U3VpdGUnLCAnZ29vZy52ZWMuTWF0NCcsICdnb29nLnZlYy5WZWMzJywgJ2dvb2cudmVjLlZlYzQnXSwgeydsYW5nJzogJ2VzNicsICdtb2R1bGUnOiAnZ29vZyd9KTsKZ29vZy5hZGREZXBlbmRlbmN5KCd2ZWMvbWF0NGQuanMnLCBbJ2dvb2cudmVjLm1hdDRkJywgJ2dvb2cudmVjLm1hdDRkLlR5cGUnXSwgWydnb29nLnZlYycsICdnb29nLnZlYy5RdWF0ZXJuaW9uJywgJ2dvb2cudmVjLnZlYzNkJywgJ2dvb2cudmVjLnZlYzRkJ10sIHt9KTsKZ29vZy5hZGREZXBlbmRlbmN5KCd2ZWMvbWF0NGRfdGVzdC5qcycsIFsnZ29vZy52ZWMubWF0NGRUZXN0J10sIFsnZ29vZy50ZXN0aW5nLnRlc3RTdWl0ZScsICdnb29nLnZlYy5RdWF0ZXJuaW9uJywgJ2dvb2cudmVjLm1hdDRkJywgJ2dvb2cudmVjLnZlYzNkJywgJ2dvb2cudmVjLnZlYzRkJ10sIHsnbGFuZyc6ICdlczYnLCAnbW9kdWxlJzogJ2dvb2cnfSk7Cmdvb2cuYWRkRGVwZW5kZW5jeSgndmVjL21hdDRmLmpzJywgWydnb29nLnZlYy5tYXQ0ZicsICdnb29nLnZlYy5tYXQ0Zi5UeXBlJ10sIFsnZ29vZy52ZWMnLCAnZ29vZy52ZWMuUXVhdGVybmlvbicsICdnb29nLnZlYy52ZWMzZicsICdnb29nLnZlYy52ZWM0ZiddLCB7fSk7Cmdvb2cuYWRkRGVwZW5kZW5jeSgndmVjL21hdDRmX3Rlc3QuanMnLCBbJ2dvb2cudmVjLm1hdDRmVGVzdCddLCBbJ2dvb2cudGVzdGluZy50ZXN0U3VpdGUnLCAnZ29vZy52ZWMuUXVhdGVybmlvbicsICdnb29nLnZlYy5tYXQ0ZicsICdnb29nLnZlYy52ZWMzZicsICdnb29nLnZlYy52ZWM0ZiddLCB7J2xhbmcnOiAnZXM2JywgJ21vZHVsZSc6ICdnb29nJ30pOwpnb29nLmFkZERlcGVuZGVuY3koJ3ZlYy9xdWF0ZXJuaW9uLmpzJywgWydnb29nLnZlYy5RdWF0ZXJuaW9uJywgJ2dvb2cudmVjLlF1YXRlcm5pb24uQW55VHlwZSddLCBbJ2dvb2cudmVjJywgJ2dvb2cudmVjLlZlYzMnLCAnZ29vZy52ZWMuVmVjNCddLCB7fSk7Cmdvb2cuYWRkRGVwZW5kZW5jeSgndmVjL3F1YXRlcm5pb25fdGVzdC5qcycsIFsnZ29vZy52ZWMuUXVhdGVybmlvblRlc3QnXSwgWydnb29nLnRlc3RpbmcudGVzdFN1aXRlJywgJ2dvb2cudmVjLk1hdDMnLCAnZ29vZy52ZWMuTWF0NCcsICdnb29nLnZlYy5RdWF0ZXJuaW9uJywgJ2dvb2cudmVjLlZlYzMnLCAnZ29vZy52ZWMudmVjM2YnXSwgeydsYW5nJzogJ2VzNicsICdtb2R1bGUnOiAnZ29vZyd9KTsKZ29vZy5hZGREZXBlbmRlbmN5KCd2ZWMvcmF5LmpzJywgWydnb29nLnZlYy5SYXknXSwgWydnb29nLnZlYy5WZWMzJ10sIHt9KTsKZ29vZy5hZGREZXBlbmRlbmN5KCd2ZWMvcmF5X3Rlc3QuanMnLCBbJ2dvb2cudmVjLlJheVRlc3QnXSwgWydnb29nLnRlc3RpbmcudGVzdFN1aXRlJywgJ2dvb2cudmVjLlJheSddLCB7J2xhbmcnOiAnZXM2JywgJ21vZHVsZSc6ICdnb29nJ30pOwpnb29nLmFkZERlcGVuZGVuY3koJ3ZlYy92ZWMuanMnLCBbJ2dvb2cudmVjJywgJ2dvb2cudmVjLkFueVR5cGUnLCAnZ29vZy52ZWMuQXJyYXlUeXBlJywgJ2dvb2cudmVjLkZsb2F0MzInLCAnZ29vZy52ZWMuRmxvYXQ2NCcsICdnb29nLnZlYy5OdW1iZXInXSwgWydnb29nLnZlYy5GbG9hdDMyQXJyYXknLCAnZ29vZy52ZWMuRmxvYXQ2NEFycmF5J10sIHt9KTsKZ29vZy5hZGREZXBlbmRlbmN5KCd2ZWMvdmVjMi5qcycsIFsnZ29vZy52ZWMuVmVjMiddLCBbJ2dvb2cudmVjJ10sIHt9KTsKZ29vZy5hZGREZXBlbmRlbmN5KCd2ZWMvdmVjMl90ZXN0LmpzJywgWydnb29nLnZlYy5WZWMyVGVzdCddLCBbJ2dvb2cudGVzdGluZy50ZXN0U3VpdGUnLCAnZ29vZy52ZWMuVmVjMiddLCB7J2xhbmcnOiAnZXM2JywgJ21vZHVsZSc6ICdnb29nJ30pOwpnb29nLmFkZERlcGVuZGVuY3koJ3ZlYy92ZWMyZC5qcycsIFsnZ29vZy52ZWMudmVjMmQnLCAnZ29vZy52ZWMudmVjMmQuVHlwZSddLCBbJ2dvb2cudmVjJ10sIHt9KTsKZ29vZy5hZGREZXBlbmRlbmN5KCd2ZWMvdmVjMmRfdGVzdC5qcycsIFsnZ29vZy52ZWMudmVjMmRUZXN0J10sIFsnZ29vZy50ZXN0aW5nLnRlc3RTdWl0ZScsICdnb29nLnZlYy52ZWMyZCddLCB7J2xhbmcnOiAnZXM2JywgJ21vZHVsZSc6ICdnb29nJ30pOwpnb29nLmFkZERlcGVuZGVuY3koJ3ZlYy92ZWMyZi5qcycsIFsnZ29vZy52ZWMudmVjMmYnLCAnZ29vZy52ZWMudmVjMmYuVHlwZSddLCBbJ2dvb2cudmVjJ10sIHt9KTsKZ29vZy5hZGREZXBlbmRlbmN5KCd2ZWMvdmVjMmZfdGVzdC5qcycsIFsnZ29vZy52ZWMudmVjMmZUZXN0J10sIFsnZ29vZy50ZXN0aW5nLnRlc3RTdWl0ZScsICdnb29nLnZlYy52ZWMyZiddLCB7J2xhbmcnOiAnZXM2JywgJ21vZHVsZSc6ICdnb29nJ30pOwpnb29nLmFkZERlcGVuZGVuY3koJ3ZlYy92ZWMzLmpzJywgWydnb29nLnZlYy5WZWMzJ10sIFsnZ29vZy52ZWMnXSwge30pOwpnb29nLmFkZERlcGVuZGVuY3koJ3ZlYy92ZWMzX3Rlc3QuanMnLCBbJ2dvb2cudmVjLlZlYzNUZXN0J10sIFsnZ29vZy50ZXN0aW5nLnRlc3RTdWl0ZScsICdnb29nLnZlYy5WZWMzJ10sIHsnbGFuZyc6ICdlczYnLCAnbW9kdWxlJzogJ2dvb2cnfSk7Cmdvb2cuYWRkRGVwZW5kZW5jeSgndmVjL3ZlYzNkLmpzJywgWydnb29nLnZlYy52ZWMzZCcsICdnb29nLnZlYy52ZWMzZC5UeXBlJ10sIFsnZ29vZy52ZWMnXSwge30pOwpnb29nLmFkZERlcGVuZGVuY3koJ3ZlYy92ZWMzZF90ZXN0LmpzJywgWydnb29nLnZlYy52ZWMzZFRlc3QnXSwgWydnb29nLnRlc3RpbmcudGVzdFN1aXRlJywgJ2dvb2cudmVjLnZlYzNkJ10sIHsnbGFuZyc6ICdlczYnLCAnbW9kdWxlJzogJ2dvb2cnfSk7Cmdvb2cuYWRkRGVwZW5kZW5jeSgndmVjL3ZlYzNmLmpzJywgWydnb29nLnZlYy52ZWMzZicsICdnb29nLnZlYy52ZWMzZi5UeXBlJ10sIFsnZ29vZy52ZWMnXSwge30pOwpnb29nLmFkZERlcGVuZGVuY3koJ3ZlYy92ZWMzZl90ZXN0LmpzJywgWydnb29nLnZlYy52ZWMzZlRlc3QnXSwgWydnb29nLnRlc3RpbmcudGVzdFN1aXRlJywgJ2dvb2cudmVjLnZlYzNmJ10sIHsnbGFuZyc6ICdlczYnLCAnbW9kdWxlJzogJ2dvb2cnfSk7Cmdvb2cuYWRkRGVwZW5kZW5jeSgndmVjL3ZlYzQuanMnLCBbJ2dvb2cudmVjLlZlYzQnXSwgWydnb29nLnZlYyddLCB7fSk7Cmdvb2cuYWRkRGVwZW5kZW5jeSgndmVjL3ZlYzRfdGVzdC5qcycsIFsnZ29vZy52ZWMuVmVjNFRlc3QnXSwgWydnb29nLnRlc3RpbmcudGVzdFN1aXRlJywgJ2dvb2cudmVjLlZlYzQnXSwgeydsYW5nJzogJ2VzNicsICdtb2R1bGUnOiAnZ29vZyd9KTsKZ29vZy5hZGREZXBlbmRlbmN5KCd2ZWMvdmVjNGQuanMnLCBbJ2dvb2cudmVjLnZlYzRkJywgJ2dvb2cudmVjLnZlYzRkLlR5cGUnXSwgWydnb29nLnZlYyddLCB7fSk7Cmdvb2cuYWRkRGVwZW5kZW5jeSgndmVjL3ZlYzRkX3Rlc3QuanMnLCBbJ2dvb2cudmVjLnZlYzRkVGVzdCddLCBbJ2dvb2cudGVzdGluZy50ZXN0U3VpdGUnLCAnZ29vZy52ZWMudmVjNGQnXSwgeydsYW5nJzogJ2VzNicsICdtb2R1bGUnOiAnZ29vZyd9KTsKZ29vZy5hZGREZXBlbmRlbmN5KCd2ZWMvdmVjNGYuanMnLCBbJ2dvb2cudmVjLnZlYzRmJywgJ2dvb2cudmVjLnZlYzRmLlR5cGUnXSwgWydnb29nLnZlYyddLCB7fSk7Cmdvb2cuYWRkRGVwZW5kZW5jeSgndmVjL3ZlYzRmX3Rlc3QuanMnLCBbJ2dvb2cudmVjLnZlYzRmVGVzdCddLCBbJ2dvb2cudGVzdGluZy50ZXN0U3VpdGUnLCAnZ29vZy52ZWMudmVjNGYnXSwgeydsYW5nJzogJ2VzNicsICdtb2R1bGUnOiAnZ29vZyd9KTsKZ29vZy5hZGREZXBlbmRlbmN5KCd3ZWJnbC93ZWJnbC5qcycsIFsnZ29vZy53ZWJnbCddLCBbXSwge30pOwpnb29nLmFkZERlcGVuZGVuY3koJ3dpbmRvdy93aW5kb3cuanMnLCBbJ2dvb2cud2luZG93J10sIFsnZ29vZy5kb20nLCAnZ29vZy5kb20uVGFnTmFtZScsICdnb29nLmRvbS5zYWZlJywgJ2dvb2cuaHRtbC5TYWZlVXJsJywgJ2dvb2cuaHRtbC51bmNoZWNrZWRjb252ZXJzaW9ucycsICdnb29nLmxhYnMudXNlckFnZW50LnBsYXRmb3JtJywgJ2dvb2cuc3RyaW5nJywgJ2dvb2cuc3RyaW5nLkNvbnN0JywgJ2dvb2cudXNlckFnZW50J10sIHt9KTsKZ29vZy5hZGREZXBlbmRlbmN5KCd3aW5kb3cvd2luZG93X3Rlc3QuanMnLCBbJ2dvb2cud2luZG93VGVzdCddLCBbJ2dvb2cuUHJvbWlzZScsICdnb29nLmRvbScsICdnb29nLmRvbS5UYWdOYW1lJywgJ2dvb2cuZXZlbnRzJywgJ2dvb2cuZnVuY3Rpb25zJywgJ2dvb2cuaHRtbC5TYWZlVXJsJywgJ2dvb2cubGFicy51c2VyQWdlbnQuYnJvd3NlcicsICdnb29nLmxhYnMudXNlckFnZW50LmVuZ2luZScsICdnb29nLmxhYnMudXNlckFnZW50LnBsYXRmb3JtJywgJ2dvb2cuc3RyaW5nJywgJ2dvb2cudGVzdGluZy5Qcm9wZXJ0eVJlcGxhY2VyJywgJ2dvb2cudGVzdGluZy5UZXN0Q2FzZScsICdnb29nLnRlc3RpbmcudGVzdFN1aXRlJywgJ2dvb2cud2luZG93J10sIHsnbGFuZyc6ICdlczYnLCAnbW9kdWxlJzogJ2dvb2cnfSk7Cgp3aW5kb3cucG9seW1lclNraXBMb2FkaW5nRm9udFJvYm90byA9IHRydWU7Ci8qKiB2aW06IGV0OnRzPTQ6c3c9NDpzdHM9NAogKiBAbGljZW5zZSBSZXF1aXJlSlMgMi4zLjYgQ29weXJpZ2h0IGpRdWVyeSBGb3VuZGF0aW9uIGFuZCBvdGhlciBjb250cmlidXRvcnMuCiAqIFJlbGVhc2VkIHVuZGVyIE1JVCBsaWNlbnNlLCBodHRwczovL2dpdGh1Yi5jb20vcmVxdWlyZWpzL3JlcXVpcmVqcy9ibG9iL21hc3Rlci9MSUNFTlNFCiAqLwovL05vdCB1c2luZyBzdHJpY3Q6IHVuZXZlbiBzdHJpY3Qgc3VwcG9ydCBpbiBicm93c2VycywgIzM5MiwgYW5kIGNhdXNlcwovL3Byb2JsZW1zIHdpdGggcmVxdWlyZWpzLmV4ZWMoKS90cmFuc3BpbGVyIHBsdWdpbnMgdGhhdCBtYXkgbm90IGJlIHN0cmljdC4KLypqc2xpbnQgcmVnZXhwOiB0cnVlLCBub21lbjogdHJ1ZSwgc2xvcHB5OiB0cnVlICovCi8qZ2xvYmFsIHdpbmRvdywgbmF2aWdhdG9yLCBkb2N1bWVudCwgaW1wb3J0U2NyaXB0cywgc2V0VGltZW91dCwgb3BlcmEgKi8KCnZhciByZXF1aXJlanMsIHJlcXVpcmUsIGRlZmluZTsKKGZ1bmN0aW9uIChnbG9iYWwsIHNldFRpbWVvdXQpIHsKICAgIHZhciByZXEsIHMsIGhlYWQsIGJhc2VFbGVtZW50LCBkYXRhTWFpbiwgc3JjLAogICAgICAgIGludGVyYWN0aXZlU2NyaXB0LCBjdXJyZW50bHlBZGRpbmdTY3JpcHQsIG1haW5TY3JpcHQsIHN1YlBhdGgsCiAgICAgICAgdmVyc2lvbiA9ICcyLjMuNicsCiAgICAgICAgY29tbWVudFJlZ0V4cCA9IC9cL1wqW1xzXFNdKj9cKlwvfChbXjoiJz1dfF4pXC9cLy4qJC9tZywKICAgICAgICBjanNSZXF1aXJlUmVnRXhwID0gL1teLl1ccypyZXF1aXJlXHMqXChccypbIiddKFteJyJcc10rKVsiJ11ccypcKS9nLAogICAgICAgIGpzU3VmZml4UmVnRXhwID0gL1wuanMkLywKICAgICAgICBjdXJyRGlyUmVnRXhwID0gL15cLlwvLywKICAgICAgICBvcCA9IE9iamVjdC5wcm90b3R5cGUsCiAgICAgICAgb3N0cmluZyA9IG9wLnRvU3RyaW5nLAogICAgICAgIGhhc093biA9IG9wLmhhc093blByb3BlcnR5LAogICAgICAgIGlzQnJvd3NlciA9ICEhKHR5cGVvZiB3aW5kb3cgIT09ICd1bmRlZmluZWQnICYmIHR5cGVvZiBuYXZpZ2F0b3IgIT09ICd1bmRlZmluZWQnICYmIHdpbmRvdy5kb2N1bWVudCksCiAgICAgICAgaXNXZWJXb3JrZXIgPSAhaXNCcm93c2VyICYmIHR5cGVvZiBpbXBvcnRTY3JpcHRzICE9PSAndW5kZWZpbmVkJywKICAgICAgICAvL1BTMyBpbmRpY2F0ZXMgbG9hZGVkIGFuZCBjb21wbGV0ZSwgYnV0IG5lZWQgdG8gd2FpdCBmb3IgY29tcGxldGUKICAgICAgICAvL3NwZWNpZmljYWxseS4gU2VxdWVuY2UgaXMgJ2xvYWRpbmcnLCAnbG9hZGVkJywgZXhlY3V0aW9uLAogICAgICAgIC8vIHRoZW4gJ2NvbXBsZXRlJy4gVGhlIFVBIGNoZWNrIGlzIHVuZm9ydHVuYXRlLCBidXQgbm90IHN1cmUgaG93CiAgICAgICAgLy90byBmZWF0dXJlIHRlc3Qgdy9vIGNhdXNpbmcgcGVyZiBpc3N1ZXMuCiAgICAgICAgcmVhZHlSZWdFeHAgPSBpc0Jyb3dzZXIgJiYgbmF2aWdhdG9yLnBsYXRmb3JtID09PSAnUExBWVNUQVRJT04gMycgPwogICAgICAgICAgICAgICAgICAgICAgL15jb21wbGV0ZSQvIDogL14oY29tcGxldGV8bG9hZGVkKSQvLAogICAgICAgIGRlZkNvbnRleHROYW1lID0gJ18nLAogICAgICAgIC8vT2ggdGhlIHRyYWdlZHksIGRldGVjdGluZyBvcGVyYS4gU2VlIHRoZSB1c2FnZSBvZiBpc09wZXJhIGZvciByZWFzb24uCiAgICAgICAgaXNPcGVyYSA9IHR5cGVvZiBvcGVyYSAhPT0gJ3VuZGVmaW5lZCcgJiYgb3BlcmEudG9TdHJpbmcoKSA9PT0gJ1tvYmplY3QgT3BlcmFdJywKICAgICAgICBjb250ZXh0cyA9IHt9LAogICAgICAgIGNmZyA9IHt9LAogICAgICAgIGdsb2JhbERlZlF1ZXVlID0gW10sCiAgICAgICAgdXNlSW50ZXJhY3RpdmUgPSBmYWxzZTsKCiAgICAvL0NvdWxkIG1hdGNoIHNvbWV0aGluZyBsaWtlICcpLy9jb21tZW50JywgZG8gbm90IGxvc2UgdGhlIHByZWZpeCB0byBjb21tZW50LgogICAgZnVuY3Rpb24gY29tbWVudFJlcGxhY2UobWF0Y2gsIHNpbmdsZVByZWZpeCkgewogICAgICAgIHJldHVybiBzaW5nbGVQcmVmaXggfHwgJyc7CiAgICB9CgogICAgZnVuY3Rpb24gaXNGdW5jdGlvbihpdCkgewogICAgICAgIHJldHVybiBvc3RyaW5nLmNhbGwoaXQpID09PSAnW29iamVjdCBGdW5jdGlvbl0nOwogICAgfQoKICAgIGZ1bmN0aW9uIGlzQXJyYXkoaXQpIHsKICAgICAgICByZXR1cm4gb3N0cmluZy5jYWxsKGl0KSA9PT0gJ1tvYmplY3QgQXJyYXldJzsKICAgIH0KCiAgICAvKioKICAgICAqIEhlbHBlciBmdW5jdGlvbiBmb3IgaXRlcmF0aW5nIG92ZXIgYW4gYXJyYXkuIElmIHRoZSBmdW5jIHJldHVybnMKICAgICAqIGEgdHJ1ZSB2YWx1ZSwgaXQgd2lsbCBicmVhayBvdXQgb2YgdGhlIGxvb3AuCiAgICAgKi8KICAgIGZ1bmN0aW9uIGVhY2goYXJ5LCBmdW5jKSB7CiAgICAgICAgaWYgKGFyeSkgewogICAgICAgICAgICB2YXIgaTsKICAgICAgICAgICAgZm9yIChpID0gMDsgaSA8IGFyeS5sZW5ndGg7IGkgKz0gMSkgewogICAgICAgICAgICAgICAgaWYgKGFyeVtpXSAmJiBmdW5jKGFyeVtpXSwgaSwgYXJ5KSkgewogICAgICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9CiAgICAgICAgfQogICAgfQoKICAgIC8qKgogICAgICogSGVscGVyIGZ1bmN0aW9uIGZvciBpdGVyYXRpbmcgb3ZlciBhbiBhcnJheSBiYWNrd2FyZHMuIElmIHRoZSBmdW5jCiAgICAgKiByZXR1cm5zIGEgdHJ1ZSB2YWx1ZSwgaXQgd2lsbCBicmVhayBvdXQgb2YgdGhlIGxvb3AuCiAgICAgKi8KICAgIGZ1bmN0aW9uIGVhY2hSZXZlcnNlKGFyeSwgZnVuYykgewogICAgICAgIGlmIChhcnkpIHsKICAgICAgICAgICAgdmFyIGk7CiAgICAgICAgICAgIGZvciAoaSA9IGFyeS5sZW5ndGggLSAxOyBpID4gLTE7IGkgLT0gMSkgewogICAgICAgICAgICAgICAgaWYgKGFyeVtpXSAmJiBmdW5jKGFyeVtpXSwgaSwgYXJ5KSkgewogICAgICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9CiAgICAgICAgfQogICAgfQoKICAgIGZ1bmN0aW9uIGhhc1Byb3Aob2JqLCBwcm9wKSB7CiAgICAgICAgcmV0dXJuIGhhc093bi5jYWxsKG9iaiwgcHJvcCk7CiAgICB9CgogICAgZnVuY3Rpb24gZ2V0T3duKG9iaiwgcHJvcCkgewogICAgICAgIHJldHVybiBoYXNQcm9wKG9iaiwgcHJvcCkgJiYgb2JqW3Byb3BdOwogICAgfQoKICAgIC8qKgogICAgICogQ3ljbGVzIG92ZXIgcHJvcGVydGllcyBpbiBhbiBvYmplY3QgYW5kIGNhbGxzIGEgZnVuY3Rpb24gZm9yIGVhY2gKICAgICAqIHByb3BlcnR5IHZhbHVlLiBJZiB0aGUgZnVuY3Rpb24gcmV0dXJucyBhIHRydXRoeSB2YWx1ZSwgdGhlbiB0aGUKICAgICAqIGl0ZXJhdGlvbiBpcyBzdG9wcGVkLgogICAgICovCiAgICBmdW5jdGlvbiBlYWNoUHJvcChvYmosIGZ1bmMpIHsKICAgICAgICB2YXIgcHJvcDsKICAgICAgICBmb3IgKHByb3AgaW4gb2JqKSB7CiAgICAgICAgICAgIGlmIChoYXNQcm9wKG9iaiwgcHJvcCkpIHsKICAgICAgICAgICAgICAgIGlmIChmdW5jKG9ialtwcm9wXSwgcHJvcCkpIHsKICAgICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfQogICAgICAgIH0KICAgIH0KCiAgICAvKioKICAgICAqIFNpbXBsZSBmdW5jdGlvbiB0byBtaXggaW4gcHJvcGVydGllcyBmcm9tIHNvdXJjZSBpbnRvIHRhcmdldCwKICAgICAqIGJ1dCBvbmx5IGlmIHRhcmdldCBkb2VzIG5vdCBhbHJlYWR5IGhhdmUgYSBwcm9wZXJ0eSBvZiB0aGUgc2FtZSBuYW1lLgogICAgICovCiAgICBmdW5jdGlvbiBtaXhpbih0YXJnZXQsIHNvdXJjZSwgZm9yY2UsIGRlZXBTdHJpbmdNaXhpbikgewogICAgICAgIGlmIChzb3VyY2UpIHsKICAgICAgICAgICAgZWFjaFByb3Aoc291cmNlLCBmdW5jdGlvbiAodmFsdWUsIHByb3ApIHsKICAgICAgICAgICAgICAgIGlmIChmb3JjZSB8fCAhaGFzUHJvcCh0YXJnZXQsIHByb3ApKSB7CiAgICAgICAgICAgICAgICAgICAgaWYgKGRlZXBTdHJpbmdNaXhpbiAmJiB0eXBlb2YgdmFsdWUgPT09ICdvYmplY3QnICYmIHZhbHVlICYmCiAgICAgICAgICAgICAgICAgICAgICAgICFpc0FycmF5KHZhbHVlKSAmJiAhaXNGdW5jdGlvbih2YWx1ZSkgJiYKICAgICAgICAgICAgICAgICAgICAgICAgISh2YWx1ZSBpbnN0YW5jZW9mIFJlZ0V4cCkpIHsKCiAgICAgICAgICAgICAgICAgICAgICAgIGlmICghdGFyZ2V0W3Byb3BdKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0YXJnZXRbcHJvcF0gPSB7fTsKICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICBtaXhpbih0YXJnZXRbcHJvcF0sIHZhbHVlLCBmb3JjZSwgZGVlcFN0cmluZ01peGluKTsKICAgICAgICAgICAgICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgICAgICAgICAgICB0YXJnZXRbcHJvcF0gPSB2YWx1ZTsKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0pOwogICAgICAgIH0KICAgICAgICByZXR1cm4gdGFyZ2V0OwogICAgfQoKICAgIC8vU2ltaWxhciB0byBGdW5jdGlvbi5wcm90b3R5cGUuYmluZCwgYnV0IHRoZSAndGhpcycgb2JqZWN0IGlzIHNwZWNpZmllZAogICAgLy9maXJzdCwgc2luY2UgaXQgaXMgZWFzaWVyIHRvIHJlYWQvZmlndXJlIG91dCB3aGF0ICd0aGlzJyB3aWxsIGJlLgogICAgZnVuY3Rpb24gYmluZChvYmosIGZuKSB7CiAgICAgICAgcmV0dXJuIGZ1bmN0aW9uICgpIHsKICAgICAgICAgICAgcmV0dXJuIGZuLmFwcGx5KG9iaiwgYXJndW1lbnRzKTsKICAgICAgICB9OwogICAgfQoKICAgIGZ1bmN0aW9uIHNjcmlwdHMoKSB7CiAgICAgICAgcmV0dXJuIGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCdzY3JpcHQnKTsKICAgIH0KCiAgICBmdW5jdGlvbiBkZWZhdWx0T25FcnJvcihlcnIpIHsKICAgICAgICB0aHJvdyBlcnI7CiAgICB9CgogICAgLy9BbGxvdyBnZXR0aW5nIGEgZ2xvYmFsIHRoYXQgaXMgZXhwcmVzc2VkIGluCiAgICAvL2RvdCBub3RhdGlvbiwgbGlrZSAnYS5iLmMnLgogICAgZnVuY3Rpb24gZ2V0R2xvYmFsKHZhbHVlKSB7CiAgICAgICAgaWYgKCF2YWx1ZSkgewogICAgICAgICAgICByZXR1cm4gdmFsdWU7CiAgICAgICAgfQogICAgICAgIHZhciBnID0gZ2xvYmFsOwogICAgICAgIGVhY2godmFsdWUuc3BsaXQoJy4nKSwgZnVuY3Rpb24gKHBhcnQpIHsKICAgICAgICAgICAgZyA9IGdbcGFydF07CiAgICAgICAgfSk7CiAgICAgICAgcmV0dXJuIGc7CiAgICB9CgogICAgLyoqCiAgICAgKiBDb25zdHJ1Y3RzIGFuIGVycm9yIHdpdGggYSBwb2ludGVyIHRvIGFuIFVSTCB3aXRoIG1vcmUgaW5mb3JtYXRpb24uCiAgICAgKiBAcGFyYW0ge1N0cmluZ30gaWQgdGhlIGVycm9yIElEIHRoYXQgbWFwcyB0byBhbiBJRCBvbiBhIHdlYiBwYWdlLgogICAgICogQHBhcmFtIHtTdHJpbmd9IG1lc3NhZ2UgaHVtYW4gcmVhZGFibGUgZXJyb3IuCiAgICAgKiBAcGFyYW0ge0Vycm9yfSBbZXJyXSB0aGUgb3JpZ2luYWwgZXJyb3IsIGlmIHRoZXJlIGlzIG9uZS4KICAgICAqCiAgICAgKiBAcmV0dXJucyB7RXJyb3J9CiAgICAgKi8KICAgIGZ1bmN0aW9uIG1ha2VFcnJvcihpZCwgbXNnLCBlcnIsIHJlcXVpcmVNb2R1bGVzKSB7CiAgICAgICAgdmFyIGUgPSBuZXcgRXJyb3IobXNnICsgJ1xuaHR0cHM6Ly9yZXF1aXJlanMub3JnL2RvY3MvZXJyb3JzLmh0bWwjJyArIGlkKTsKICAgICAgICBlLnJlcXVpcmVUeXBlID0gaWQ7CiAgICAgICAgZS5yZXF1aXJlTW9kdWxlcyA9IHJlcXVpcmVNb2R1bGVzOwogICAgICAgIGlmIChlcnIpIHsKICAgICAgICAgICAgZS5vcmlnaW5hbEVycm9yID0gZXJyOwogICAgICAgIH0KICAgICAgICByZXR1cm4gZTsKICAgIH0KCiAgICBpZiAodHlwZW9mIGRlZmluZSAhPT0gJ3VuZGVmaW5lZCcpIHsKICAgICAgICAvL0lmIGEgZGVmaW5lIGlzIGFscmVhZHkgaW4gcGxheSB2aWEgYW5vdGhlciBBTUQgbG9hZGVyLAogICAgICAgIC8vZG8gbm90IG92ZXJ3cml0ZS4KICAgICAgICByZXR1cm47CiAgICB9CgogICAgaWYgKHR5cGVvZiByZXF1aXJlanMgIT09ICd1bmRlZmluZWQnKSB7CiAgICAgICAgaWYgKGlzRnVuY3Rpb24ocmVxdWlyZWpzKSkgewogICAgICAgICAgICAvL0RvIG5vdCBvdmVyd3JpdGUgYW4gZXhpc3RpbmcgcmVxdWlyZWpzIGluc3RhbmNlLgogICAgICAgICAgICByZXR1cm47CiAgICAgICAgfQogICAgICAgIGNmZyA9IHJlcXVpcmVqczsKICAgICAgICByZXF1aXJlanMgPSB1bmRlZmluZWQ7CiAgICB9CgogICAgLy9BbGxvdyBmb3IgYSByZXF1aXJlIGNvbmZpZyBvYmplY3QKICAgIGlmICh0eXBlb2YgcmVxdWlyZSAhPT0gJ3VuZGVmaW5lZCcgJiYgIWlzRnVuY3Rpb24ocmVxdWlyZSkpIHsKICAgICAgICAvL2Fzc3VtZSBpdCBpcyBhIGNvbmZpZyBvYmplY3QuCiAgICAgICAgY2ZnID0gcmVxdWlyZTsKICAgICAgICByZXF1aXJlID0gdW5kZWZpbmVkOwogICAgfQoKICAgIGZ1bmN0aW9uIG5ld0NvbnRleHQoY29udGV4dE5hbWUpIHsKICAgICAgICB2YXIgaW5DaGVja0xvYWRlZCwgTW9kdWxlLCBjb250ZXh0LCBoYW5kbGVycywKICAgICAgICAgICAgY2hlY2tMb2FkZWRUaW1lb3V0SWQsCiAgICAgICAgICAgIGNvbmZpZyA9IHsKICAgICAgICAgICAgICAgIC8vRGVmYXVsdHMuIERvIG5vdCBzZXQgYSBkZWZhdWx0IGZvciBtYXAKICAgICAgICAgICAgICAgIC8vY29uZmlnIHRvIHNwZWVkIHVwIG5vcm1hbGl6ZSgpLCB3aGljaAogICAgICAgICAgICAgICAgLy93aWxsIHJ1biBmYXN0ZXIgaWYgdGhlcmUgaXMgbm8gZGVmYXVsdC4KICAgICAgICAgICAgICAgIHdhaXRTZWNvbmRzOiA3LAogICAgICAgICAgICAgICAgYmFzZVVybDogJy4vJywKICAgICAgICAgICAgICAgIHBhdGhzOiB7fSwKICAgICAgICAgICAgICAgIGJ1bmRsZXM6IHt9LAogICAgICAgICAgICAgICAgcGtnczoge30sCiAgICAgICAgICAgICAgICBzaGltOiB7fSwKICAgICAgICAgICAgICAgIGNvbmZpZzoge30KICAgICAgICAgICAgfSwKICAgICAgICAgICAgcmVnaXN0cnkgPSB7fSwKICAgICAgICAgICAgLy9yZWdpc3RyeSBvZiBqdXN0IGVuYWJsZWQgbW9kdWxlcywgdG8gc3BlZWQKICAgICAgICAgICAgLy9jeWNsZSBicmVha2luZyBjb2RlIHdoZW4gbG90cyBvZiBtb2R1bGVzCiAgICAgICAgICAgIC8vYXJlIHJlZ2lzdGVyZWQsIGJ1dCBub3QgYWN0aXZhdGVkLgogICAgICAgICAgICBlbmFibGVkUmVnaXN0cnkgPSB7fSwKICAgICAgICAgICAgdW5kZWZFdmVudHMgPSB7fSwKICAgICAgICAgICAgZGVmUXVldWUgPSBbXSwKICAgICAgICAgICAgZGVmaW5lZCA9IHt9LAogICAgICAgICAgICB1cmxGZXRjaGVkID0ge30sCiAgICAgICAgICAgIGJ1bmRsZXNNYXAgPSB7fSwKICAgICAgICAgICAgcmVxdWlyZUNvdW50ZXIgPSAxLAogICAgICAgICAgICB1bm5vcm1hbGl6ZWRDb3VudGVyID0gMTsKCiAgICAgICAgLyoqCiAgICAgICAgICogVHJpbXMgdGhlIC4gYW5kIC4uIGZyb20gYW4gYXJyYXkgb2YgcGF0aCBzZWdtZW50cy4KICAgICAgICAgKiBJdCB3aWxsIGtlZXAgYSBsZWFkaW5nIHBhdGggc2VnbWVudCBpZiBhIC4uIHdpbGwgYmVjb21lCiAgICAgICAgICogdGhlIGZpcnN0IHBhdGggc2VnbWVudCwgdG8gaGVscCB3aXRoIG1vZHVsZSBuYW1lIGxvb2t1cHMsCiAgICAgICAgICogd2hpY2ggYWN0IGxpa2UgcGF0aHMsIGJ1dCBjYW4gYmUgcmVtYXBwZWQuIEJ1dCB0aGUgZW5kIHJlc3VsdCwKICAgICAgICAgKiBhbGwgcGF0aHMgdGhhdCB1c2UgdGhpcyBmdW5jdGlvbiBzaG91bGQgbG9vayBub3JtYWxpemVkLgogICAgICAgICAqIE5PVEU6IHRoaXMgbWV0aG9kIE1PRElGSUVTIHRoZSBpbnB1dCBhcnJheS4KICAgICAgICAgKiBAcGFyYW0ge0FycmF5fSBhcnkgdGhlIGFycmF5IG9mIHBhdGggc2VnbWVudHMuCiAgICAgICAgICovCiAgICAgICAgZnVuY3Rpb24gdHJpbURvdHMoYXJ5KSB7CiAgICAgICAgICAgIHZhciBpLCBwYXJ0OwogICAgICAgICAgICBmb3IgKGkgPSAwOyBpIDwgYXJ5Lmxlbmd0aDsgaSsrKSB7CiAgICAgICAgICAgICAgICBwYXJ0ID0gYXJ5W2ldOwogICAgICAgICAgICAgICAgaWYgKHBhcnQgPT09ICcuJykgewogICAgICAgICAgICAgICAgICAgIGFyeS5zcGxpY2UoaSwgMSk7CiAgICAgICAgICAgICAgICAgICAgaSAtPSAxOwogICAgICAgICAgICAgICAgfSBlbHNlIGlmIChwYXJ0ID09PSAnLi4nKSB7CiAgICAgICAgICAgICAgICAgICAgLy8gSWYgYXQgdGhlIHN0YXJ0LCBvciBwcmV2aW91cyB2YWx1ZSBpcyBzdGlsbCAuLiwKICAgICAgICAgICAgICAgICAgICAvLyBrZWVwIHRoZW0gc28gdGhhdCB3aGVuIGNvbnZlcnRlZCB0byBhIHBhdGggaXQgbWF5CiAgICAgICAgICAgICAgICAgICAgLy8gc3RpbGwgd29yayB3aGVuIGNvbnZlcnRlZCB0byBhIHBhdGgsIGV2ZW4gdGhvdWdoCiAgICAgICAgICAgICAgICAgICAgLy8gYXMgYW4gSUQgaXQgaXMgbGVzcyB0aGFuIGlkZWFsLiBJbiBsYXJnZXIgcG9pbnQKICAgICAgICAgICAgICAgICAgICAvLyByZWxlYXNlcywgbWF5IGJlIGJldHRlciB0byBqdXN0IGtpY2sgb3V0IGFuIGVycm9yLgogICAgICAgICAgICAgICAgICAgIGlmIChpID09PSAwIHx8IChpID09PSAxICYmIGFyeVsyXSA9PT0gJy4uJykgfHwgYXJ5W2kgLSAxXSA9PT0gJy4uJykgewogICAgICAgICAgICAgICAgICAgICAgICBjb250aW51ZTsKICAgICAgICAgICAgICAgICAgICB9IGVsc2UgaWYgKGkgPiAwKSB7CiAgICAgICAgICAgICAgICAgICAgICAgIGFyeS5zcGxpY2UoaSAtIDEsIDIpOwogICAgICAgICAgICAgICAgICAgICAgICBpIC09IDI7CiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9CiAgICAgICAgfQoKICAgICAgICAvKioKICAgICAgICAgKiBHaXZlbiBhIHJlbGF0aXZlIG1vZHVsZSBuYW1lLCBsaWtlIC4vc29tZXRoaW5nLCBub3JtYWxpemUgaXQgdG8KICAgICAgICAgKiBhIHJlYWwgbmFtZSB0aGF0IGNhbiBiZSBtYXBwZWQgdG8gYSBwYXRoLgogICAgICAgICAqIEBwYXJhbSB7U3RyaW5nfSBuYW1lIHRoZSByZWxhdGl2ZSBuYW1lCiAgICAgICAgICogQHBhcmFtIHtTdHJpbmd9IGJhc2VOYW1lIGEgcmVhbCBuYW1lIHRoYXQgdGhlIG5hbWUgYXJnIGlzIHJlbGF0aXZlCiAgICAgICAgICogdG8uCiAgICAgICAgICogQHBhcmFtIHtCb29sZWFufSBhcHBseU1hcCBhcHBseSB0aGUgbWFwIGNvbmZpZyB0byB0aGUgdmFsdWUuIFNob3VsZAogICAgICAgICAqIG9ubHkgYmUgZG9uZSBpZiB0aGlzIG5vcm1hbGl6YXRpb24gaXMgZm9yIGEgZGVwZW5kZW5jeSBJRC4KICAgICAgICAgKiBAcmV0dXJucyB7U3RyaW5nfSBub3JtYWxpemVkIG5hbWUKICAgICAgICAgKi8KICAgICAgICBmdW5jdGlvbiBub3JtYWxpemUobmFtZSwgYmFzZU5hbWUsIGFwcGx5TWFwKSB7CiAgICAgICAgICAgIHZhciBwa2dNYWluLCBtYXBWYWx1ZSwgbmFtZVBhcnRzLCBpLCBqLCBuYW1lU2VnbWVudCwgbGFzdEluZGV4LAogICAgICAgICAgICAgICAgZm91bmRNYXAsIGZvdW5kSSwgZm91bmRTdGFyTWFwLCBzdGFySSwgbm9ybWFsaXplZEJhc2VQYXJ0cywKICAgICAgICAgICAgICAgIGJhc2VQYXJ0cyA9IChiYXNlTmFtZSAmJiBiYXNlTmFtZS5zcGxpdCgnLycpKSwKICAgICAgICAgICAgICAgIG1hcCA9IGNvbmZpZy5tYXAsCiAgICAgICAgICAgICAgICBzdGFyTWFwID0gbWFwICYmIG1hcFsnKiddOwoKICAgICAgICAgICAgLy9BZGp1c3QgYW55IHJlbGF0aXZlIHBhdGhzLgogICAgICAgICAgICBpZiAobmFtZSkgewogICAgICAgICAgICAgICAgbmFtZSA9IG5hbWUuc3BsaXQoJy8nKTsKICAgICAgICAgICAgICAgIGxhc3RJbmRleCA9IG5hbWUubGVuZ3RoIC0gMTsKCiAgICAgICAgICAgICAgICAvLyBJZiB3YW50aW5nIG5vZGUgSUQgY29tcGF0aWJpbGl0eSwgc3RyaXAgLmpzIGZyb20gZW5kCiAgICAgICAgICAgICAgICAvLyBvZiBJRHMuIEhhdmUgdG8gZG8gdGhpcyBoZXJlLCBhbmQgbm90IGluIG5hbWVUb1VybAogICAgICAgICAgICAgICAgLy8gYmVjYXVzZSBub2RlIGFsbG93cyBlaXRoZXIgLmpzIG9yIG5vbiAuanMgdG8gbWFwCiAgICAgICAgICAgICAgICAvLyB0byBzYW1lIGZpbGUuCiAgICAgICAgICAgICAgICBpZiAoY29uZmlnLm5vZGVJZENvbXBhdCAmJiBqc1N1ZmZpeFJlZ0V4cC50ZXN0KG5hbWVbbGFzdEluZGV4XSkpIHsKICAgICAgICAgICAgICAgICAgICBuYW1lW2xhc3RJbmRleF0gPSBuYW1lW2xhc3RJbmRleF0ucmVwbGFjZShqc1N1ZmZpeFJlZ0V4cCwgJycpOwogICAgICAgICAgICAgICAgfQoKICAgICAgICAgICAgICAgIC8vIFN0YXJ0cyB3aXRoIGEgJy4nIHNvIG5lZWQgdGhlIGJhc2VOYW1lCiAgICAgICAgICAgICAgICBpZiAobmFtZVswXS5jaGFyQXQoMCkgPT09ICcuJyAmJiBiYXNlUGFydHMpIHsKICAgICAgICAgICAgICAgICAgICAvL0NvbnZlcnQgYmFzZU5hbWUgdG8gYXJyYXksIGFuZCBsb3Agb2ZmIHRoZSBsYXN0IHBhcnQsCiAgICAgICAgICAgICAgICAgICAgLy9zbyB0aGF0IC4gbWF0Y2hlcyB0aGF0ICdkaXJlY3RvcnknIGFuZCBub3QgbmFtZSBvZiB0aGUgYmFzZU5hbWUncwogICAgICAgICAgICAgICAgICAgIC8vbW9kdWxlLiBGb3IgaW5zdGFuY2UsIGJhc2VOYW1lIG9mICdvbmUvdHdvL3RocmVlJywgbWFwcyB0bwogICAgICAgICAgICAgICAgICAgIC8vJ29uZS90d28vdGhyZWUuanMnLCBidXQgd2Ugd2FudCB0aGUgZGlyZWN0b3J5LCAnb25lL3R3bycgZm9yCiAgICAgICAgICAgICAgICAgICAgLy90aGlzIG5vcm1hbGl6YXRpb24uCiAgICAgICAgICAgICAgICAgICAgbm9ybWFsaXplZEJhc2VQYXJ0cyA9IGJhc2VQYXJ0cy5zbGljZSgwLCBiYXNlUGFydHMubGVuZ3RoIC0gMSk7CiAgICAgICAgICAgICAgICAgICAgbmFtZSA9IG5vcm1hbGl6ZWRCYXNlUGFydHMuY29uY2F0KG5hbWUpOwogICAgICAgICAgICAgICAgfQoKICAgICAgICAgICAgICAgIHRyaW1Eb3RzKG5hbWUpOwogICAgICAgICAgICAgICAgbmFtZSA9IG5hbWUuam9pbignLycpOwogICAgICAgICAgICB9CgogICAgICAgICAgICAvL0FwcGx5IG1hcCBjb25maWcgaWYgYXZhaWxhYmxlLgogICAgICAgICAgICBpZiAoYXBwbHlNYXAgJiYgbWFwICYmIChiYXNlUGFydHMgfHwgc3Rhck1hcCkpIHsKICAgICAgICAgICAgICAgIG5hbWVQYXJ0cyA9IG5hbWUuc3BsaXQoJy8nKTsKCiAgICAgICAgICAgICAgICBvdXRlckxvb3A6IGZvciAoaSA9IG5hbWVQYXJ0cy5sZW5ndGg7IGkgPiAwOyBpIC09IDEpIHsKICAgICAgICAgICAgICAgICAgICBuYW1lU2VnbWVudCA9IG5hbWVQYXJ0cy5zbGljZSgwLCBpKS5qb2luKCcvJyk7CgogICAgICAgICAgICAgICAgICAgIGlmIChiYXNlUGFydHMpIHsKICAgICAgICAgICAgICAgICAgICAgICAgLy9GaW5kIHRoZSBsb25nZXN0IGJhc2VOYW1lIHNlZ21lbnQgbWF0Y2ggaW4gdGhlIGNvbmZpZy4KICAgICAgICAgICAgICAgICAgICAgICAgLy9TbywgZG8gam9pbnMgb24gdGhlIGJpZ2dlc3QgdG8gc21hbGxlc3QgbGVuZ3RocyBvZiBiYXNlUGFydHMuCiAgICAgICAgICAgICAgICAgICAgICAgIGZvciAoaiA9IGJhc2VQYXJ0cy5sZW5ndGg7IGogPiAwOyBqIC09IDEpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1hcFZhbHVlID0gZ2V0T3duKG1hcCwgYmFzZVBhcnRzLnNsaWNlKDAsIGopLmpvaW4oJy8nKSk7CgogICAgICAgICAgICAgICAgICAgICAgICAgICAgLy9iYXNlTmFtZSBzZWdtZW50IGhhcyBjb25maWcsIGZpbmQgaWYgaXQgaGFzIG9uZSBmb3IKICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vdGhpcyBuYW1lLgogICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKG1hcFZhbHVlKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbWFwVmFsdWUgPSBnZXRPd24obWFwVmFsdWUsIG5hbWVTZWdtZW50KTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAobWFwVmFsdWUpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy9NYXRjaCwgdXBkYXRlIG5hbWUgdG8gdGhlIG5ldyB2YWx1ZS4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZm91bmRNYXAgPSBtYXBWYWx1ZTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZm91bmRJID0gaTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWsgb3V0ZXJMb29wOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgIH0KCiAgICAgICAgICAgICAgICAgICAgLy9DaGVjayBmb3IgYSBzdGFyIG1hcCBtYXRjaCwgYnV0IGp1c3QgaG9sZCBvbiB0byBpdCwKICAgICAgICAgICAgICAgICAgICAvL2lmIHRoZXJlIGlzIGEgc2hvcnRlciBzZWdtZW50IG1hdGNoIGxhdGVyIGluIGEgbWF0Y2hpbmcKICAgICAgICAgICAgICAgICAgICAvL2NvbmZpZywgdGhlbiBmYXZvciBvdmVyIHRoaXMgc3RhciBtYXAuCiAgICAgICAgICAgICAgICAgICAgaWYgKCFmb3VuZFN0YXJNYXAgJiYgc3Rhck1hcCAmJiBnZXRPd24oc3Rhck1hcCwgbmFtZVNlZ21lbnQpKSB7CiAgICAgICAgICAgICAgICAgICAgICAgIGZvdW5kU3Rhck1hcCA9IGdldE93bihzdGFyTWFwLCBuYW1lU2VnbWVudCk7CiAgICAgICAgICAgICAgICAgICAgICAgIHN0YXJJID0gaTsKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICB9CgogICAgICAgICAgICAgICAgaWYgKCFmb3VuZE1hcCAmJiBmb3VuZFN0YXJNYXApIHsKICAgICAgICAgICAgICAgICAgICBmb3VuZE1hcCA9IGZvdW5kU3Rhck1hcDsKICAgICAgICAgICAgICAgICAgICBmb3VuZEkgPSBzdGFySTsKICAgICAgICAgICAgICAgIH0KCiAgICAgICAgICAgICAgICBpZiAoZm91bmRNYXApIHsKICAgICAgICAgICAgICAgICAgICBuYW1lUGFydHMuc3BsaWNlKDAsIGZvdW5kSSwgZm91bmRNYXApOwogICAgICAgICAgICAgICAgICAgIG5hbWUgPSBuYW1lUGFydHMuam9pbignLycpOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9CgogICAgICAgICAgICAvLyBJZiB0aGUgbmFtZSBwb2ludHMgdG8gYSBwYWNrYWdlJ3MgbmFtZSwgdXNlCiAgICAgICAgICAgIC8vIHRoZSBwYWNrYWdlIG1haW4gaW5zdGVhZC4KICAgICAgICAgICAgcGtnTWFpbiA9IGdldE93bihjb25maWcucGtncywgbmFtZSk7CgogICAgICAgICAgICByZXR1cm4gcGtnTWFpbiA/IHBrZ01haW4gOiBuYW1lOwogICAgICAgIH0KCiAgICAgICAgZnVuY3Rpb24gcmVtb3ZlU2NyaXB0KG5hbWUpIHsKICAgICAgICAgICAgaWYgKGlzQnJvd3NlcikgewogICAgICAgICAgICAgICAgZWFjaChzY3JpcHRzKCksIGZ1bmN0aW9uIChzY3JpcHROb2RlKSB7CiAgICAgICAgICAgICAgICAgICAgaWYgKHNjcmlwdE5vZGUuZ2V0QXR0cmlidXRlKCdkYXRhLXJlcXVpcmVtb2R1bGUnKSA9PT0gbmFtZSAmJgogICAgICAgICAgICAgICAgICAgICAgICAgICAgc2NyaXB0Tm9kZS5nZXRBdHRyaWJ1dGUoJ2RhdGEtcmVxdWlyZWNvbnRleHQnKSA9PT0gY29udGV4dC5jb250ZXh0TmFtZSkgewogICAgICAgICAgICAgICAgICAgICAgICBzY3JpcHROb2RlLnBhcmVudE5vZGUucmVtb3ZlQ2hpbGQoc2NyaXB0Tm9kZSk7CiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiB0cnVlOwogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIH0pOwogICAgICAgICAgICB9CiAgICAgICAgfQoKICAgICAgICBmdW5jdGlvbiBoYXNQYXRoRmFsbGJhY2soaWQpIHsKICAgICAgICAgICAgdmFyIHBhdGhDb25maWcgPSBnZXRPd24oY29uZmlnLnBhdGhzLCBpZCk7CiAgICAgICAgICAgIGlmIChwYXRoQ29uZmlnICYmIGlzQXJyYXkocGF0aENvbmZpZykgJiYgcGF0aENvbmZpZy5sZW5ndGggPiAxKSB7CiAgICAgICAgICAgICAgICAvL1BvcCBvZmYgdGhlIGZpcnN0IGFycmF5IHZhbHVlLCBzaW5jZSBpdCBmYWlsZWQsIGFuZAogICAgICAgICAgICAgICAgLy9yZXRyeQogICAgICAgICAgICAgICAgcGF0aENvbmZpZy5zaGlmdCgpOwogICAgICAgICAgICAgICAgY29udGV4dC5yZXF1aXJlLnVuZGVmKGlkKTsKCiAgICAgICAgICAgICAgICAvL0N1c3RvbSByZXF1aXJlIHRoYXQgZG9lcyBub3QgZG8gbWFwIHRyYW5zbGF0aW9uLCBzaW5jZQogICAgICAgICAgICAgICAgLy9JRCBpcyAiYWJzb2x1dGUiLCBhbHJlYWR5IG1hcHBlZC9yZXNvbHZlZC4KICAgICAgICAgICAgICAgIGNvbnRleHQubWFrZVJlcXVpcmUobnVsbCwgewogICAgICAgICAgICAgICAgICAgIHNraXBNYXA6IHRydWUKICAgICAgICAgICAgICAgIH0pKFtpZF0pOwoKICAgICAgICAgICAgICAgIHJldHVybiB0cnVlOwogICAgICAgICAgICB9CiAgICAgICAgfQoKICAgICAgICAvL1R1cm5zIGEgcGx1Z2luIXJlc291cmNlIHRvIFtwbHVnaW4sIHJlc291cmNlXQogICAgICAgIC8vd2l0aCB0aGUgcGx1Z2luIGJlaW5nIHVuZGVmaW5lZCBpZiB0aGUgbmFtZQogICAgICAgIC8vZGlkIG5vdCBoYXZlIGEgcGx1Z2luIHByZWZpeC4KICAgICAgICBmdW5jdGlvbiBzcGxpdFByZWZpeChuYW1lKSB7CiAgICAgICAgICAgIHZhciBwcmVmaXgsCiAgICAgICAgICAgICAgICBpbmRleCA9IG5hbWUgPyBuYW1lLmluZGV4T2YoJyEnKSA6IC0xOwogICAgICAgICAgICBpZiAoaW5kZXggPiAtMSkgewogICAgICAgICAgICAgICAgcHJlZml4ID0gbmFtZS5zdWJzdHJpbmcoMCwgaW5kZXgpOwogICAgICAgICAgICAgICAgbmFtZSA9IG5hbWUuc3Vic3RyaW5nKGluZGV4ICsgMSwgbmFtZS5sZW5ndGgpOwogICAgICAgICAgICB9CiAgICAgICAgICAgIHJldHVybiBbcHJlZml4LCBuYW1lXTsKICAgICAgICB9CgogICAgICAgIC8qKgogICAgICAgICAqIENyZWF0ZXMgYSBtb2R1bGUgbWFwcGluZyB0aGF0IGluY2x1ZGVzIHBsdWdpbiBwcmVmaXgsIG1vZHVsZQogICAgICAgICAqIG5hbWUsIGFuZCBwYXRoLiBJZiBwYXJlbnRNb2R1bGVNYXAgaXMgcHJvdmlkZWQgaXQgd2lsbAogICAgICAgICAqIGFsc28gbm9ybWFsaXplIHRoZSBuYW1lIHZpYSByZXF1aXJlLm5vcm1hbGl6ZSgpCiAgICAgICAgICoKICAgICAgICAgKiBAcGFyYW0ge1N0cmluZ30gbmFtZSB0aGUgbW9kdWxlIG5hbWUKICAgICAgICAgKiBAcGFyYW0ge1N0cmluZ30gW3BhcmVudE1vZHVsZU1hcF0gcGFyZW50IG1vZHVsZSBtYXAKICAgICAgICAgKiBmb3IgdGhlIG1vZHVsZSBuYW1lLCB1c2VkIHRvIHJlc29sdmUgcmVsYXRpdmUgbmFtZXMuCiAgICAgICAgICogQHBhcmFtIHtCb29sZWFufSBpc05vcm1hbGl6ZWQ6IGlzIHRoZSBJRCBhbHJlYWR5IG5vcm1hbGl6ZWQuCiAgICAgICAgICogVGhpcyBpcyB0cnVlIGlmIHRoaXMgY2FsbCBpcyBkb25lIGZvciBhIGRlZmluZSgpIG1vZHVsZSBJRC4KICAgICAgICAgKiBAcGFyYW0ge0Jvb2xlYW59IGFwcGx5TWFwOiBhcHBseSB0aGUgbWFwIGNvbmZpZyB0byB0aGUgSUQuCiAgICAgICAgICogU2hvdWxkIG9ubHkgYmUgdHJ1ZSBpZiB0aGlzIG1hcCBpcyBmb3IgYSBkZXBlbmRlbmN5LgogICAgICAgICAqCiAgICAgICAgICogQHJldHVybnMge09iamVjdH0KICAgICAgICAgKi8KICAgICAgICBmdW5jdGlvbiBtYWtlTW9kdWxlTWFwKG5hbWUsIHBhcmVudE1vZHVsZU1hcCwgaXNOb3JtYWxpemVkLCBhcHBseU1hcCkgewogICAgICAgICAgICB2YXIgdXJsLCBwbHVnaW5Nb2R1bGUsIHN1ZmZpeCwgbmFtZVBhcnRzLAogICAgICAgICAgICAgICAgcHJlZml4ID0gbnVsbCwKICAgICAgICAgICAgICAgIHBhcmVudE5hbWUgPSBwYXJlbnRNb2R1bGVNYXAgPyBwYXJlbnRNb2R1bGVNYXAubmFtZSA6IG51bGwsCiAgICAgICAgICAgICAgICBvcmlnaW5hbE5hbWUgPSBuYW1lLAogICAgICAgICAgICAgICAgaXNEZWZpbmUgPSB0cnVlLAogICAgICAgICAgICAgICAgbm9ybWFsaXplZE5hbWUgPSAnJzsKCiAgICAgICAgICAgIC8vSWYgbm8gbmFtZSwgdGhlbiBpdCBtZWFucyBpdCBpcyBhIHJlcXVpcmUgY2FsbCwgZ2VuZXJhdGUgYW4KICAgICAgICAgICAgLy9pbnRlcm5hbCBuYW1lLgogICAgICAgICAgICBpZiAoIW5hbWUpIHsKICAgICAgICAgICAgICAgIGlzRGVmaW5lID0gZmFsc2U7CiAgICAgICAgICAgICAgICBuYW1lID0gJ19AcicgKyAocmVxdWlyZUNvdW50ZXIgKz0gMSk7CiAgICAgICAgICAgIH0KCiAgICAgICAgICAgIG5hbWVQYXJ0cyA9IHNwbGl0UHJlZml4KG5hbWUpOwogICAgICAgICAgICBwcmVmaXggPSBuYW1lUGFydHNbMF07CiAgICAgICAgICAgIG5hbWUgPSBuYW1lUGFydHNbMV07CgogICAgICAgICAgICBpZiAocHJlZml4KSB7CiAgICAgICAgICAgICAgICBwcmVmaXggPSBub3JtYWxpemUocHJlZml4LCBwYXJlbnROYW1lLCBhcHBseU1hcCk7CiAgICAgICAgICAgICAgICBwbHVnaW5Nb2R1bGUgPSBnZXRPd24oZGVmaW5lZCwgcHJlZml4KTsKICAgICAgICAgICAgfQoKICAgICAgICAgICAgLy9BY2NvdW50IGZvciByZWxhdGl2ZSBwYXRocyBpZiB0aGVyZSBpcyBhIGJhc2UgbmFtZS4KICAgICAgICAgICAgaWYgKG5hbWUpIHsKICAgICAgICAgICAgICAgIGlmIChwcmVmaXgpIHsKICAgICAgICAgICAgICAgICAgICBpZiAoaXNOb3JtYWxpemVkKSB7CiAgICAgICAgICAgICAgICAgICAgICAgIG5vcm1hbGl6ZWROYW1lID0gbmFtZTsKICAgICAgICAgICAgICAgICAgICB9IGVsc2UgaWYgKHBsdWdpbk1vZHVsZSAmJiBwbHVnaW5Nb2R1bGUubm9ybWFsaXplKSB7CiAgICAgICAgICAgICAgICAgICAgICAgIC8vUGx1Z2luIGlzIGxvYWRlZCwgdXNlIGl0cyBub3JtYWxpemUgbWV0aG9kLgogICAgICAgICAgICAgICAgICAgICAgICBub3JtYWxpemVkTmFtZSA9IHBsdWdpbk1vZHVsZS5ub3JtYWxpemUobmFtZSwgZnVuY3Rpb24gKG5hbWUpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBub3JtYWxpemUobmFtZSwgcGFyZW50TmFtZSwgYXBwbHlNYXApOwogICAgICAgICAgICAgICAgICAgICAgICB9KTsKICAgICAgICAgICAgICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgICAgICAgICAgICAvLyBJZiBuZXN0ZWQgcGx1Z2luIHJlZmVyZW5jZXMsIHRoZW4gZG8gbm90IHRyeSB0bwogICAgICAgICAgICAgICAgICAgICAgICAvLyBub3JtYWxpemUsIGFzIGl0IHdpbGwgbm90IG5vcm1hbGl6ZSBjb3JyZWN0bHkuIFRoaXMKICAgICAgICAgICAgICAgICAgICAgICAgLy8gcGxhY2VzIGEgcmVzdHJpY3Rpb24gb24gcmVzb3VyY2VJZHMsIGFuZCB0aGUgbG9uZ2VyCiAgICAgICAgICAgICAgICAgICAgICAgIC8vIHRlcm0gc29sdXRpb24gaXMgbm90IHRvIG5vcm1hbGl6ZSB1bnRpbCBwbHVnaW5zIGFyZQogICAgICAgICAgICAgICAgICAgICAgICAvLyBsb2FkZWQgYW5kIGFsbCBub3JtYWxpemF0aW9ucyB0byBhbGxvdyBmb3IgYXN5bmMKICAgICAgICAgICAgICAgICAgICAgICAgLy8gbG9hZGluZyBvZiBhIGxvYWRlciBwbHVnaW4uIEJ1dCBmb3Igbm93LCBmaXhlcyB0aGUKICAgICAgICAgICAgICAgICAgICAgICAgLy8gY29tbW9uIHVzZXMuIERldGFpbHMgaW4gIzExMzEKICAgICAgICAgICAgICAgICAgICAgICAgbm9ybWFsaXplZE5hbWUgPSBuYW1lLmluZGV4T2YoJyEnKSA9PT0gLTEgPwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5vcm1hbGl6ZShuYW1lLCBwYXJlbnROYW1lLCBhcHBseU1hcCkgOgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5hbWU7CiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgICAgICAgICAvL0EgcmVndWxhciBtb2R1bGUuCiAgICAgICAgICAgICAgICAgICAgbm9ybWFsaXplZE5hbWUgPSBub3JtYWxpemUobmFtZSwgcGFyZW50TmFtZSwgYXBwbHlNYXApOwoKICAgICAgICAgICAgICAgICAgICAvL05vcm1hbGl6ZWQgbmFtZSBtYXkgYmUgYSBwbHVnaW4gSUQgZHVlIHRvIG1hcCBjb25maWcKICAgICAgICAgICAgICAgICAgICAvL2FwcGxpY2F0aW9uIGluIG5vcm1hbGl6ZS4gVGhlIG1hcCBjb25maWcgdmFsdWVzIG11c3QKICAgICAgICAgICAgICAgICAgICAvL2FscmVhZHkgYmUgbm9ybWFsaXplZCwgc28gZG8gbm90IG5lZWQgdG8gcmVkbyB0aGF0IHBhcnQuCiAgICAgICAgICAgICAgICAgICAgbmFtZVBhcnRzID0gc3BsaXRQcmVmaXgobm9ybWFsaXplZE5hbWUpOwogICAgICAgICAgICAgICAgICAgIHByZWZpeCA9IG5hbWVQYXJ0c1swXTsKICAgICAgICAgICAgICAgICAgICBub3JtYWxpemVkTmFtZSA9IG5hbWVQYXJ0c1sxXTsKICAgICAgICAgICAgICAgICAgICBpc05vcm1hbGl6ZWQgPSB0cnVlOwoKICAgICAgICAgICAgICAgICAgICB1cmwgPSBjb250ZXh0Lm5hbWVUb1VybChub3JtYWxpemVkTmFtZSk7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0KCiAgICAgICAgICAgIC8vSWYgdGhlIGlkIGlzIGEgcGx1Z2luIGlkIHRoYXQgY2Fubm90IGJlIGRldGVybWluZWQgaWYgaXQgbmVlZHMKICAgICAgICAgICAgLy9ub3JtYWxpemF0aW9uLCBzdGFtcCBpdCB3aXRoIGEgdW5pcXVlIElEIHNvIHR3byBtYXRjaGluZyByZWxhdGl2ZQogICAgICAgICAgICAvL2lkcyB0aGF0IG1heSBjb25mbGljdCBjYW4gYmUgc2VwYXJhdGUuCiAgICAgICAgICAgIHN1ZmZpeCA9IHByZWZpeCAmJiAhcGx1Z2luTW9kdWxlICYmICFpc05vcm1hbGl6ZWQgPwogICAgICAgICAgICAgICAgICAgICAnX3Vubm9ybWFsaXplZCcgKyAodW5ub3JtYWxpemVkQ291bnRlciArPSAxKSA6CiAgICAgICAgICAgICAgICAgICAgICcnOwoKICAgICAgICAgICAgcmV0dXJuIHsKICAgICAgICAgICAgICAgIHByZWZpeDogcHJlZml4LAogICAgICAgICAgICAgICAgbmFtZTogbm9ybWFsaXplZE5hbWUsCiAgICAgICAgICAgICAgICBwYXJlbnRNYXA6IHBhcmVudE1vZHVsZU1hcCwKICAgICAgICAgICAgICAgIHVubm9ybWFsaXplZDogISFzdWZmaXgsCiAgICAgICAgICAgICAgICB1cmw6IHVybCwKICAgICAgICAgICAgICAgIG9yaWdpbmFsTmFtZTogb3JpZ2luYWxOYW1lLAogICAgICAgICAgICAgICAgaXNEZWZpbmU6IGlzRGVmaW5lLAogICAgICAgICAgICAgICAgaWQ6IChwcmVmaXggPwogICAgICAgICAgICAgICAgICAgICAgICBwcmVmaXggKyAnIScgKyBub3JtYWxpemVkTmFtZSA6CiAgICAgICAgICAgICAgICAgICAgICAgIG5vcm1hbGl6ZWROYW1lKSArIHN1ZmZpeAogICAgICAgICAgICB9OwogICAgICAgIH0KCiAgICAgICAgZnVuY3Rpb24gZ2V0TW9kdWxlKGRlcE1hcCkgewogICAgICAgICAgICB2YXIgaWQgPSBkZXBNYXAuaWQsCiAgICAgICAgICAgICAgICBtb2QgPSBnZXRPd24ocmVnaXN0cnksIGlkKTsKCiAgICAgICAgICAgIGlmICghbW9kKSB7CiAgICAgICAgICAgICAgICBtb2QgPSByZWdpc3RyeVtpZF0gPSBuZXcgY29udGV4dC5Nb2R1bGUoZGVwTWFwKTsKICAgICAgICAgICAgfQoKICAgICAgICAgICAgcmV0dXJuIG1vZDsKICAgICAgICB9CgogICAgICAgIGZ1bmN0aW9uIG9uKGRlcE1hcCwgbmFtZSwgZm4pIHsKICAgICAgICAgICAgdmFyIGlkID0gZGVwTWFwLmlkLAogICAgICAgICAgICAgICAgbW9kID0gZ2V0T3duKHJlZ2lzdHJ5LCBpZCk7CgogICAgICAgICAgICBpZiAoaGFzUHJvcChkZWZpbmVkLCBpZCkgJiYKICAgICAgICAgICAgICAgICAgICAoIW1vZCB8fCBtb2QuZGVmaW5lRW1pdENvbXBsZXRlKSkgewogICAgICAgICAgICAgICAgaWYgKG5hbWUgPT09ICdkZWZpbmVkJykgewogICAgICAgICAgICAgICAgICAgIGZuKGRlZmluZWRbaWRdKTsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgICAgIG1vZCA9IGdldE1vZHVsZShkZXBNYXApOwogICAgICAgICAgICAgICAgaWYgKG1vZC5lcnJvciAmJiBuYW1lID09PSAnZXJyb3InKSB7CiAgICAgICAgICAgICAgICAgICAgZm4obW9kLmVycm9yKTsKICAgICAgICAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICAgICAgICAgbW9kLm9uKG5hbWUsIGZuKTsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfQogICAgICAgIH0KCiAgICAgICAgZnVuY3Rpb24gb25FcnJvcihlcnIsIGVycmJhY2spIHsKICAgICAgICAgICAgdmFyIGlkcyA9IGVyci5yZXF1aXJlTW9kdWxlcywKICAgICAgICAgICAgICAgIG5vdGlmaWVkID0gZmFsc2U7CgogICAgICAgICAgICBpZiAoZXJyYmFjaykgewogICAgICAgICAgICAgICAgZXJyYmFjayhlcnIpOwogICAgICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgICAgZWFjaChpZHMsIGZ1bmN0aW9uIChpZCkgewogICAgICAgICAgICAgICAgICAgIHZhciBtb2QgPSBnZXRPd24ocmVnaXN0cnksIGlkKTsKICAgICAgICAgICAgICAgICAgICBpZiAobW9kKSB7CiAgICAgICAgICAgICAgICAgICAgICAgIC8vU2V0IGVycm9yIG9uIG1vZHVsZSwgc28gaXQgc2tpcHMgdGltZW91dCBjaGVja3MuCiAgICAgICAgICAgICAgICAgICAgICAgIG1vZC5lcnJvciA9IGVycjsKICAgICAgICAgICAgICAgICAgICAgICAgaWYgKG1vZC5ldmVudHMuZXJyb3IpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5vdGlmaWVkID0gdHJ1ZTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1vZC5lbWl0KCdlcnJvcicsIGVycik7CiAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICB9KTsKCiAgICAgICAgICAgICAgICBpZiAoIW5vdGlmaWVkKSB7CiAgICAgICAgICAgICAgICAgICAgcmVxLm9uRXJyb3IoZXJyKTsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfQogICAgICAgIH0KCiAgICAgICAgLyoqCiAgICAgICAgICogSW50ZXJuYWwgbWV0aG9kIHRvIHRyYW5zZmVyIGdsb2JhbFF1ZXVlIGl0ZW1zIHRvIHRoaXMgY29udGV4dCdzCiAgICAgICAgICogZGVmUXVldWUuCiAgICAgICAgICovCiAgICAgICAgZnVuY3Rpb24gdGFrZUdsb2JhbFF1ZXVlKCkgewogICAgICAgICAgICAvL1B1c2ggYWxsIHRoZSBnbG9iYWxEZWZRdWV1ZSBpdGVtcyBpbnRvIHRoZSBjb250ZXh0J3MgZGVmUXVldWUKICAgICAgICAgICAgaWYgKGdsb2JhbERlZlF1ZXVlLmxlbmd0aCkgewogICAgICAgICAgICAgICAgZWFjaChnbG9iYWxEZWZRdWV1ZSwgZnVuY3Rpb24ocXVldWVJdGVtKSB7CiAgICAgICAgICAgICAgICAgICAgdmFyIGlkID0gcXVldWVJdGVtWzBdOwogICAgICAgICAgICAgICAgICAgIGlmICh0eXBlb2YgaWQgPT09ICdzdHJpbmcnKSB7CiAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRleHQuZGVmUXVldWVNYXBbaWRdID0gdHJ1ZTsKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgZGVmUXVldWUucHVzaChxdWV1ZUl0ZW0pOwogICAgICAgICAgICAgICAgfSk7CiAgICAgICAgICAgICAgICBnbG9iYWxEZWZRdWV1ZSA9IFtdOwogICAgICAgICAgICB9CiAgICAgICAgfQoKICAgICAgICBoYW5kbGVycyA9IHsKICAgICAgICAgICAgJ3JlcXVpcmUnOiBmdW5jdGlvbiAobW9kKSB7CiAgICAgICAgICAgICAgICBpZiAobW9kLnJlcXVpcmUpIHsKICAgICAgICAgICAgICAgICAgICByZXR1cm4gbW9kLnJlcXVpcmU7CiAgICAgICAgICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgICAgICAgIHJldHVybiAobW9kLnJlcXVpcmUgPSBjb250ZXh0Lm1ha2VSZXF1aXJlKG1vZC5tYXApKTsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfSwKICAgICAgICAgICAgJ2V4cG9ydHMnOiBmdW5jdGlvbiAobW9kKSB7CiAgICAgICAgICAgICAgICBtb2QudXNpbmdFeHBvcnRzID0gdHJ1ZTsKICAgICAgICAgICAgICAgIGlmIChtb2QubWFwLmlzRGVmaW5lKSB7CiAgICAgICAgICAgICAgICAgICAgaWYgKG1vZC5leHBvcnRzKSB7CiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiAoZGVmaW5lZFttb2QubWFwLmlkXSA9IG1vZC5leHBvcnRzKTsKICAgICAgICAgICAgICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gKG1vZC5leHBvcnRzID0gZGVmaW5lZFttb2QubWFwLmlkXSA9IHt9KTsKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0sCiAgICAgICAgICAgICdtb2R1bGUnOiBmdW5jdGlvbiAobW9kKSB7CiAgICAgICAgICAgICAgICBpZiAobW9kLm1vZHVsZSkgewogICAgICAgICAgICAgICAgICAgIHJldHVybiBtb2QubW9kdWxlOwogICAgICAgICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgICAgICAgICByZXR1cm4gKG1vZC5tb2R1bGUgPSB7CiAgICAgICAgICAgICAgICAgICAgICAgIGlkOiBtb2QubWFwLmlkLAogICAgICAgICAgICAgICAgICAgICAgICB1cmk6IG1vZC5tYXAudXJsLAogICAgICAgICAgICAgICAgICAgICAgICBjb25maWc6IGZ1bmN0aW9uICgpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBnZXRPd24oY29uZmlnLmNvbmZpZywgbW9kLm1hcC5pZCkgfHwge307CiAgICAgICAgICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICAgICAgICAgIGV4cG9ydHM6IG1vZC5leHBvcnRzIHx8IChtb2QuZXhwb3J0cyA9IHt9KQogICAgICAgICAgICAgICAgICAgIH0pOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9CiAgICAgICAgfTsKCiAgICAgICAgZnVuY3Rpb24gY2xlYW5SZWdpc3RyeShpZCkgewogICAgICAgICAgICAvL0NsZWFuIHVwIG1hY2hpbmVyeSB1c2VkIGZvciB3YWl0aW5nIG1vZHVsZXMuCiAgICAgICAgICAgIGRlbGV0ZSByZWdpc3RyeVtpZF07CiAgICAgICAgICAgIGRlbGV0ZSBlbmFibGVkUmVnaXN0cnlbaWRdOwogICAgICAgIH0KCiAgICAgICAgZnVuY3Rpb24gYnJlYWtDeWNsZShtb2QsIHRyYWNlZCwgcHJvY2Vzc2VkKSB7CiAgICAgICAgICAgIHZhciBpZCA9IG1vZC5tYXAuaWQ7CgogICAgICAgICAgICBpZiAobW9kLmVycm9yKSB7CiAgICAgICAgICAgICAgICBtb2QuZW1pdCgnZXJyb3InLCBtb2QuZXJyb3IpOwogICAgICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgICAgdHJhY2VkW2lkXSA9IHRydWU7CiAgICAgICAgICAgICAgICBlYWNoKG1vZC5kZXBNYXBzLCBmdW5jdGlvbiAoZGVwTWFwLCBpKSB7CiAgICAgICAgICAgICAgICAgICAgdmFyIGRlcElkID0gZGVwTWFwLmlkLAogICAgICAgICAgICAgICAgICAgICAgICBkZXAgPSBnZXRPd24ocmVnaXN0cnksIGRlcElkKTsKCiAgICAgICAgICAgICAgICAgICAgLy9Pbmx5IGZvcmNlIHRoaW5ncyB0aGF0IGhhdmUgbm90IGNvbXBsZXRlZAogICAgICAgICAgICAgICAgICAgIC8vYmVpbmcgZGVmaW5lZCwgc28gc3RpbGwgaW4gdGhlIHJlZ2lzdHJ5LAogICAgICAgICAgICAgICAgICAgIC8vYW5kIG9ubHkgaWYgaXQgaGFzIG5vdCBiZWVuIG1hdGNoZWQgdXAKICAgICAgICAgICAgICAgICAgICAvL2luIHRoZSBtb2R1bGUgYWxyZWFkeS4KICAgICAgICAgICAgICAgICAgICBpZiAoZGVwICYmICFtb2QuZGVwTWF0Y2hlZFtpXSAmJiAhcHJvY2Vzc2VkW2RlcElkXSkgewogICAgICAgICAgICAgICAgICAgICAgICBpZiAoZ2V0T3duKHRyYWNlZCwgZGVwSWQpKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBtb2QuZGVmaW5lRGVwKGksIGRlZmluZWRbZGVwSWRdKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1vZC5jaGVjaygpOyAvL3Bhc3MgZmFsc2U/CiAgICAgICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVha0N5Y2xlKGRlcCwgdHJhY2VkLCBwcm9jZXNzZWQpOwogICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgfSk7CiAgICAgICAgICAgICAgICBwcm9jZXNzZWRbaWRdID0gdHJ1ZTsKICAgICAgICAgICAgfQogICAgICAgIH0KCiAgICAgICAgZnVuY3Rpb24gY2hlY2tMb2FkZWQoKSB7CiAgICAgICAgICAgIHZhciBlcnIsIHVzaW5nUGF0aEZhbGxiYWNrLAogICAgICAgICAgICAgICAgd2FpdEludGVydmFsID0gY29uZmlnLndhaXRTZWNvbmRzICogMTAwMCwKICAgICAgICAgICAgICAgIC8vSXQgaXMgcG9zc2libGUgdG8gZGlzYWJsZSB0aGUgd2FpdCBpbnRlcnZhbCBieSB1c2luZyB3YWl0U2Vjb25kcyBvZiAwLgogICAgICAgICAgICAgICAgZXhwaXJlZCA9IHdhaXRJbnRlcnZhbCAmJiAoY29udGV4dC5zdGFydFRpbWUgKyB3YWl0SW50ZXJ2YWwpIDwgbmV3IERhdGUoKS5nZXRUaW1lKCksCiAgICAgICAgICAgICAgICBub0xvYWRzID0gW10sCiAgICAgICAgICAgICAgICByZXFDYWxscyA9IFtdLAogICAgICAgICAgICAgICAgc3RpbGxMb2FkaW5nID0gZmFsc2UsCiAgICAgICAgICAgICAgICBuZWVkQ3ljbGVDaGVjayA9IHRydWU7CgogICAgICAgICAgICAvL0RvIG5vdCBib3RoZXIgaWYgdGhpcyBjYWxsIHdhcyBhIHJlc3VsdCBvZiBhIGN5Y2xlIGJyZWFrLgogICAgICAgICAgICBpZiAoaW5DaGVja0xvYWRlZCkgewogICAgICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICAgICB9CgogICAgICAgICAgICBpbkNoZWNrTG9hZGVkID0gdHJ1ZTsKCiAgICAgICAgICAgIC8vRmlndXJlIG91dCB0aGUgc3RhdGUgb2YgYWxsIHRoZSBtb2R1bGVzLgogICAgICAgICAgICBlYWNoUHJvcChlbmFibGVkUmVnaXN0cnksIGZ1bmN0aW9uIChtb2QpIHsKICAgICAgICAgICAgICAgIHZhciBtYXAgPSBtb2QubWFwLAogICAgICAgICAgICAgICAgICAgIG1vZElkID0gbWFwLmlkOwoKICAgICAgICAgICAgICAgIC8vU2tpcCB0aGluZ3MgdGhhdCBhcmUgbm90IGVuYWJsZWQgb3IgaW4gZXJyb3Igc3RhdGUuCiAgICAgICAgICAgICAgICBpZiAoIW1vZC5lbmFibGVkKSB7CiAgICAgICAgICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICAgICAgICAgfQoKICAgICAgICAgICAgICAgIGlmICghbWFwLmlzRGVmaW5lKSB7CiAgICAgICAgICAgICAgICAgICAgcmVxQ2FsbHMucHVzaChtb2QpOwogICAgICAgICAgICAgICAgfQoKICAgICAgICAgICAgICAgIGlmICghbW9kLmVycm9yKSB7CiAgICAgICAgICAgICAgICAgICAgLy9JZiB0aGUgbW9kdWxlIHNob3VsZCBiZSBleGVjdXRlZCwgYW5kIGl0IGhhcyBub3QKICAgICAgICAgICAgICAgICAgICAvL2JlZW4gaW5pdGVkIGFuZCB0aW1lIGlzIHVwLCByZW1lbWJlciBpdC4KICAgICAgICAgICAgICAgICAgICBpZiAoIW1vZC5pbml0ZWQgJiYgZXhwaXJlZCkgewogICAgICAgICAgICAgICAgICAgICAgICBpZiAoaGFzUGF0aEZhbGxiYWNrKG1vZElkKSkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgdXNpbmdQYXRoRmFsbGJhY2sgPSB0cnVlOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RpbGxMb2FkaW5nID0gdHJ1ZTsKICAgICAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5vTG9hZHMucHVzaChtb2RJZCk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICByZW1vdmVTY3JpcHQobW9kSWQpOwogICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgfSBlbHNlIGlmICghbW9kLmluaXRlZCAmJiBtb2QuZmV0Y2hlZCAmJiBtYXAuaXNEZWZpbmUpIHsKICAgICAgICAgICAgICAgICAgICAgICAgc3RpbGxMb2FkaW5nID0gdHJ1ZTsKICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCFtYXAucHJlZml4KSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAvL05vIHJlYXNvbiB0byBrZWVwIGxvb2tpbmcgZm9yIHVuZmluaXNoZWQKICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vbG9hZGluZy4gSWYgdGhlIG9ubHkgc3RpbGxMb2FkaW5nIGlzIGEKICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vcGx1Z2luIHJlc291cmNlIHRob3VnaCwga2VlcCBnb2luZywKICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vYmVjYXVzZSBpdCBtYXkgYmUgdGhhdCBhIHBsdWdpbiByZXNvdXJjZQogICAgICAgICAgICAgICAgICAgICAgICAgICAgLy9pcyB3YWl0aW5nIG9uIGEgbm9uLXBsdWdpbiBjeWNsZS4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiAobmVlZEN5Y2xlQ2hlY2sgPSBmYWxzZSk7CiAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0pOwoKICAgICAgICAgICAgaWYgKGV4cGlyZWQgJiYgbm9Mb2Fkcy5sZW5ndGgpIHsKICAgICAgICAgICAgICAgIC8vSWYgd2FpdCB0aW1lIGV4cGlyZWQsIHRocm93IGVycm9yIG9mIHVubG9hZGVkIG1vZHVsZXMuCiAgICAgICAgICAgICAgICBlcnIgPSBtYWtlRXJyb3IoJ3RpbWVvdXQnLCAnTG9hZCB0aW1lb3V0IGZvciBtb2R1bGVzOiAnICsgbm9Mb2FkcywgbnVsbCwgbm9Mb2Fkcyk7CiAgICAgICAgICAgICAgICBlcnIuY29udGV4dE5hbWUgPSBjb250ZXh0LmNvbnRleHROYW1lOwogICAgICAgICAgICAgICAgcmV0dXJuIG9uRXJyb3IoZXJyKTsKICAgICAgICAgICAgfQoKICAgICAgICAgICAgLy9Ob3QgZXhwaXJlZCwgY2hlY2sgZm9yIGEgY3ljbGUuCiAgICAgICAgICAgIGlmIChuZWVkQ3ljbGVDaGVjaykgewogICAgICAgICAgICAgICAgZWFjaChyZXFDYWxscywgZnVuY3Rpb24gKG1vZCkgewogICAgICAgICAgICAgICAgICAgIGJyZWFrQ3ljbGUobW9kLCB7fSwge30pOwogICAgICAgICAgICAgICAgfSk7CiAgICAgICAgICAgIH0KCiAgICAgICAgICAgIC8vSWYgc3RpbGwgd2FpdGluZyBvbiBsb2FkcywgYW5kIHRoZSB3YWl0aW5nIGxvYWQgaXMgc29tZXRoaW5nCiAgICAgICAgICAgIC8vb3RoZXIgdGhhbiBhIHBsdWdpbiByZXNvdXJjZSwgb3IgdGhlcmUgYXJlIHN0aWxsIG91dHN0YW5kaW5nCiAgICAgICAgICAgIC8vc2NyaXB0cywgdGhlbiBqdXN0IHRyeSBiYWNrIGxhdGVyLgogICAgICAgICAgICBpZiAoKCFleHBpcmVkIHx8IHVzaW5nUGF0aEZhbGxiYWNrKSAmJiBzdGlsbExvYWRpbmcpIHsKICAgICAgICAgICAgICAgIC8vU29tZXRoaW5nIGlzIHN0aWxsIHdhaXRpbmcgdG8gbG9hZC4gV2FpdCBmb3IgaXQsIGJ1dCBvbmx5CiAgICAgICAgICAgICAgICAvL2lmIGEgdGltZW91dCBpcyBub3QgYWxyZWFkeSBpbiBlZmZlY3QuCiAgICAgICAgICAgICAgICBpZiAoKGlzQnJvd3NlciB8fCBpc1dlYldvcmtlcikgJiYgIWNoZWNrTG9hZGVkVGltZW91dElkKSB7CiAgICAgICAgICAgICAgICAgICAgY2hlY2tMb2FkZWRUaW1lb3V0SWQgPSBzZXRUaW1lb3V0KGZ1bmN0aW9uICgpIHsKICAgICAgICAgICAgICAgICAgICAgICAgY2hlY2tMb2FkZWRUaW1lb3V0SWQgPSAwOwogICAgICAgICAgICAgICAgICAgICAgICBjaGVja0xvYWRlZCgpOwogICAgICAgICAgICAgICAgICAgIH0sIDUwKTsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfQoKICAgICAgICAgICAgaW5DaGVja0xvYWRlZCA9IGZhbHNlOwogICAgICAgIH0KCiAgICAgICAgTW9kdWxlID0gZnVuY3Rpb24gKG1hcCkgewogICAgICAgICAgICB0aGlzLmV2ZW50cyA9IGdldE93bih1bmRlZkV2ZW50cywgbWFwLmlkKSB8fCB7fTsKICAgICAgICAgICAgdGhpcy5tYXAgPSBtYXA7CiAgICAgICAgICAgIHRoaXMuc2hpbSA9IGdldE93bihjb25maWcuc2hpbSwgbWFwLmlkKTsKICAgICAgICAgICAgdGhpcy5kZXBFeHBvcnRzID0gW107CiAgICAgICAgICAgIHRoaXMuZGVwTWFwcyA9IFtdOwogICAgICAgICAgICB0aGlzLmRlcE1hdGNoZWQgPSBbXTsKICAgICAgICAgICAgdGhpcy5wbHVnaW5NYXBzID0ge307CiAgICAgICAgICAgIHRoaXMuZGVwQ291bnQgPSAwOwoKICAgICAgICAgICAgLyogdGhpcy5leHBvcnRzIHRoaXMuZmFjdG9yeQogICAgICAgICAgICAgICB0aGlzLmRlcE1hcHMgPSBbXSwKICAgICAgICAgICAgICAgdGhpcy5lbmFibGVkLCB0aGlzLmZldGNoZWQKICAgICAgICAgICAgKi8KICAgICAgICB9OwoKICAgICAgICBNb2R1bGUucHJvdG90eXBlID0gewogICAgICAgICAgICBpbml0OiBmdW5jdGlvbiAoZGVwTWFwcywgZmFjdG9yeSwgZXJyYmFjaywgb3B0aW9ucykgewogICAgICAgICAgICAgICAgb3B0aW9ucyA9IG9wdGlvbnMgfHwge307CgogICAgICAgICAgICAgICAgLy9EbyBub3QgZG8gbW9yZSBpbml0cyBpZiBhbHJlYWR5IGRvbmUuIENhbiBoYXBwZW4gaWYgdGhlcmUKICAgICAgICAgICAgICAgIC8vYXJlIG11bHRpcGxlIGRlZmluZSBjYWxscyBmb3IgdGhlIHNhbWUgbW9kdWxlLiBUaGF0IGlzIG5vdAogICAgICAgICAgICAgICAgLy9hIG5vcm1hbCwgY29tbW9uIGNhc2UsIGJ1dCBpdCBpcyBhbHNvIG5vdCB1bmV4cGVjdGVkLgogICAgICAgICAgICAgICAgaWYgKHRoaXMuaW5pdGVkKSB7CiAgICAgICAgICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICAgICAgICAgfQoKICAgICAgICAgICAgICAgIHRoaXMuZmFjdG9yeSA9IGZhY3Rvcnk7CgogICAgICAgICAgICAgICAgaWYgKGVycmJhY2spIHsKICAgICAgICAgICAgICAgICAgICAvL1JlZ2lzdGVyIGZvciBlcnJvcnMgb24gdGhpcyBtb2R1bGUuCiAgICAgICAgICAgICAgICAgICAgdGhpcy5vbignZXJyb3InLCBlcnJiYWNrKTsKICAgICAgICAgICAgICAgIH0gZWxzZSBpZiAodGhpcy5ldmVudHMuZXJyb3IpIHsKICAgICAgICAgICAgICAgICAgICAvL0lmIG5vIGVycmJhY2sgYWxyZWFkeSwgYnV0IHRoZXJlIGFyZSBlcnJvciBsaXN0ZW5lcnMKICAgICAgICAgICAgICAgICAgICAvL29uIHRoaXMgbW9kdWxlLCBzZXQgdXAgYW4gZXJyYmFjayB0byBwYXNzIHRvIHRoZSBkZXBzLgogICAgICAgICAgICAgICAgICAgIGVycmJhY2sgPSBiaW5kKHRoaXMsIGZ1bmN0aW9uIChlcnIpIHsKICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5lbWl0KCdlcnJvcicsIGVycik7CiAgICAgICAgICAgICAgICAgICAgfSk7CiAgICAgICAgICAgICAgICB9CgogICAgICAgICAgICAgICAgLy9EbyBhIGNvcHkgb2YgdGhlIGRlcGVuZGVuY3kgYXJyYXksIHNvIHRoYXQKICAgICAgICAgICAgICAgIC8vc291cmNlIGlucHV0cyBhcmUgbm90IG1vZGlmaWVkLiBGb3IgZXhhbXBsZQogICAgICAgICAgICAgICAgLy8ic2hpbSIgZGVwcyBhcmUgcGFzc2VkIGluIGhlcmUgZGlyZWN0bHksIGFuZAogICAgICAgICAgICAgICAgLy9kb2luZyBhIGRpcmVjdCBtb2RpZmljYXRpb24gb2YgdGhlIGRlcE1hcHMgYXJyYXkKICAgICAgICAgICAgICAgIC8vd291bGQgYWZmZWN0IHRoYXQgY29uZmlnLgogICAgICAgICAgICAgICAgdGhpcy5kZXBNYXBzID0gZGVwTWFwcyAmJiBkZXBNYXBzLnNsaWNlKDApOwoKICAgICAgICAgICAgICAgIHRoaXMuZXJyYmFjayA9IGVycmJhY2s7CgogICAgICAgICAgICAgICAgLy9JbmRpY2F0ZSB0aGlzIG1vZHVsZSBoYXMgYmUgaW5pdGlhbGl6ZWQKICAgICAgICAgICAgICAgIHRoaXMuaW5pdGVkID0gdHJ1ZTsKCiAgICAgICAgICAgICAgICB0aGlzLmlnbm9yZSA9IG9wdGlvbnMuaWdub3JlOwoKICAgICAgICAgICAgICAgIC8vQ291bGQgaGF2ZSBvcHRpb24gdG8gaW5pdCB0aGlzIG1vZHVsZSBpbiBlbmFibGVkIG1vZGUsCiAgICAgICAgICAgICAgICAvL29yIGNvdWxkIGhhdmUgYmVlbiBwcmV2aW91c2x5IG1hcmtlZCBhcyBlbmFibGVkLiBIb3dldmVyLAogICAgICAgICAgICAgICAgLy90aGUgZGVwZW5kZW5jaWVzIGFyZSBub3Qga25vd24gdW50aWwgaW5pdCBpcyBjYWxsZWQuIFNvCiAgICAgICAgICAgICAgICAvL2lmIGVuYWJsZWQgcHJldmlvdXNseSwgbm93IHRyaWdnZXIgZGVwZW5kZW5jaWVzIGFzIGVuYWJsZWQuCiAgICAgICAgICAgICAgICBpZiAob3B0aW9ucy5lbmFibGVkIHx8IHRoaXMuZW5hYmxlZCkgewogICAgICAgICAgICAgICAgICAgIC8vRW5hYmxlIHRoaXMgbW9kdWxlIGFuZCBkZXBlbmRlbmNpZXMuCiAgICAgICAgICAgICAgICAgICAgLy9XaWxsIGNhbGwgdGhpcy5jaGVjaygpCiAgICAgICAgICAgICAgICAgICAgdGhpcy5lbmFibGUoKTsKICAgICAgICAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICAgICAgICAgdGhpcy5jaGVjaygpOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9LAoKICAgICAgICAgICAgZGVmaW5lRGVwOiBmdW5jdGlvbiAoaSwgZGVwRXhwb3J0cykgewogICAgICAgICAgICAgICAgLy9CZWNhdXNlIG9mIGN5Y2xlcywgZGVmaW5lZCBjYWxsYmFjayBmb3IgYSBnaXZlbgogICAgICAgICAgICAgICAgLy9leHBvcnQgY2FuIGJlIGNhbGxlZCBtb3JlIHRoYW4gb25jZS4KICAgICAgICAgICAgICAgIGlmICghdGhpcy5kZXBNYXRjaGVkW2ldKSB7CiAgICAgICAgICAgICAgICAgICAgdGhpcy5kZXBNYXRjaGVkW2ldID0gdHJ1ZTsKICAgICAgICAgICAgICAgICAgICB0aGlzLmRlcENvdW50IC09IDE7CiAgICAgICAgICAgICAgICAgICAgdGhpcy5kZXBFeHBvcnRzW2ldID0gZGVwRXhwb3J0czsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfSwKCiAgICAgICAgICAgIGZldGNoOiBmdW5jdGlvbiAoKSB7CiAgICAgICAgICAgICAgICBpZiAodGhpcy5mZXRjaGVkKSB7CiAgICAgICAgICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgdGhpcy5mZXRjaGVkID0gdHJ1ZTsKCiAgICAgICAgICAgICAgICBjb250ZXh0LnN0YXJ0VGltZSA9IChuZXcgRGF0ZSgpKS5nZXRUaW1lKCk7CgogICAgICAgICAgICAgICAgdmFyIG1hcCA9IHRoaXMubWFwOwoKICAgICAgICAgICAgICAgIC8vSWYgdGhlIG1hbmFnZXIgaXMgZm9yIGEgcGx1Z2luIG1hbmFnZWQgcmVzb3VyY2UsCiAgICAgICAgICAgICAgICAvL2FzayB0aGUgcGx1Z2luIHRvIGxvYWQgaXQgbm93LgogICAgICAgICAgICAgICAgaWYgKHRoaXMuc2hpbSkgewogICAgICAgICAgICAgICAgICAgIGNvbnRleHQubWFrZVJlcXVpcmUodGhpcy5tYXAsIHsKICAgICAgICAgICAgICAgICAgICAgICAgZW5hYmxlQnVpbGRDYWxsYmFjazogdHJ1ZQogICAgICAgICAgICAgICAgICAgIH0pKHRoaXMuc2hpbS5kZXBzIHx8IFtdLCBiaW5kKHRoaXMsIGZ1bmN0aW9uICgpIHsKICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIG1hcC5wcmVmaXggPyB0aGlzLmNhbGxQbHVnaW4oKSA6IHRoaXMubG9hZCgpOwogICAgICAgICAgICAgICAgICAgIH0pKTsKICAgICAgICAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICAgICAgICAgLy9SZWd1bGFyIGRlcGVuZGVuY3kuCiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIG1hcC5wcmVmaXggPyB0aGlzLmNhbGxQbHVnaW4oKSA6IHRoaXMubG9hZCgpOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9LAoKICAgICAgICAgICAgbG9hZDogZnVuY3Rpb24gKCkgewogICAgICAgICAgICAgICAgdmFyIHVybCA9IHRoaXMubWFwLnVybDsKCiAgICAgICAgICAgICAgICAvL1JlZ3VsYXIgZGVwZW5kZW5jeS4KICAgICAgICAgICAgICAgIGlmICghdXJsRmV0Y2hlZFt1cmxdKSB7CiAgICAgICAgICAgICAgICAgICAgdXJsRmV0Y2hlZFt1cmxdID0gdHJ1ZTsKICAgICAgICAgICAgICAgICAgICBjb250ZXh0LmxvYWQodGhpcy5tYXAuaWQsIHVybCk7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0sCgogICAgICAgICAgICAvKioKICAgICAgICAgICAgICogQ2hlY2tzIGlmIHRoZSBtb2R1bGUgaXMgcmVhZHkgdG8gZGVmaW5lIGl0c2VsZiwgYW5kIGlmIHNvLAogICAgICAgICAgICAgKiBkZWZpbmUgaXQuCiAgICAgICAgICAgICAqLwogICAgICAgICAgICBjaGVjazogZnVuY3Rpb24gKCkgewogICAgICAgICAgICAgICAgaWYgKCF0aGlzLmVuYWJsZWQgfHwgdGhpcy5lbmFibGluZykgewogICAgICAgICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgICAgICAgIH0KCiAgICAgICAgICAgICAgICB2YXIgZXJyLCBjanNNb2R1bGUsCiAgICAgICAgICAgICAgICAgICAgaWQgPSB0aGlzLm1hcC5pZCwKICAgICAgICAgICAgICAgICAgICBkZXBFeHBvcnRzID0gdGhpcy5kZXBFeHBvcnRzLAogICAgICAgICAgICAgICAgICAgIGV4cG9ydHMgPSB0aGlzLmV4cG9ydHMsCiAgICAgICAgICAgICAgICAgICAgZmFjdG9yeSA9IHRoaXMuZmFjdG9yeTsKCiAgICAgICAgICAgICAgICBpZiAoIXRoaXMuaW5pdGVkKSB7CiAgICAgICAgICAgICAgICAgICAgLy8gT25seSBmZXRjaCBpZiBub3QgYWxyZWFkeSBpbiB0aGUgZGVmUXVldWUuCiAgICAgICAgICAgICAgICAgICAgaWYgKCFoYXNQcm9wKGNvbnRleHQuZGVmUXVldWVNYXAsIGlkKSkgewogICAgICAgICAgICAgICAgICAgICAgICB0aGlzLmZldGNoKCk7CiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgfSBlbHNlIGlmICh0aGlzLmVycm9yKSB7CiAgICAgICAgICAgICAgICAgICAgdGhpcy5lbWl0KCdlcnJvcicsIHRoaXMuZXJyb3IpOwogICAgICAgICAgICAgICAgfSBlbHNlIGlmICghdGhpcy5kZWZpbmluZykgewogICAgICAgICAgICAgICAgICAgIC8vVGhlIGZhY3RvcnkgY291bGQgdHJpZ2dlciBhbm90aGVyIHJlcXVpcmUgY2FsbAogICAgICAgICAgICAgICAgICAgIC8vdGhhdCB3b3VsZCByZXN1bHQgaW4gY2hlY2tpbmcgdGhpcyBtb2R1bGUgdG8KICAgICAgICAgICAgICAgICAgICAvL2RlZmluZSBpdHNlbGYgYWdhaW4uIElmIGFscmVhZHkgaW4gdGhlIHByb2Nlc3MKICAgICAgICAgICAgICAgICAgICAvL29mIGRvaW5nIHRoYXQsIHNraXAgdGhpcyB3b3JrLgogICAgICAgICAgICAgICAgICAgIHRoaXMuZGVmaW5pbmcgPSB0cnVlOwoKICAgICAgICAgICAgICAgICAgICBpZiAodGhpcy5kZXBDb3VudCA8IDEgJiYgIXRoaXMuZGVmaW5lZCkgewogICAgICAgICAgICAgICAgICAgICAgICBpZiAoaXNGdW5jdGlvbihmYWN0b3J5KSkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgLy9JZiB0aGVyZSBpcyBhbiBlcnJvciBsaXN0ZW5lciwgZmF2b3IgcGFzc2luZwogICAgICAgICAgICAgICAgICAgICAgICAgICAgLy90byB0aGF0IGluc3RlYWQgb2YgdGhyb3dpbmcgYW4gZXJyb3IuIEhvd2V2ZXIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAvL29ubHkgZG8gaXQgZm9yIGRlZmluZSgpJ2QgIG1vZHVsZXMuIHJlcXVpcmUKICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vZXJyYmFja3Mgc2hvdWxkIG5vdCBiZSBjYWxsZWQgZm9yIGZhaWx1cmVzIGluCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAvL3RoZWlyIGNhbGxiYWNrcyAoIzY5OSkuIEhvd2V2ZXIgaWYgYSBnbG9iYWwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vb25FcnJvciBpcyBzZXQsIHVzZSB0aGF0LgogICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCh0aGlzLmV2ZW50cy5lcnJvciAmJiB0aGlzLm1hcC5pc0RlZmluZSkgfHwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXEub25FcnJvciAhPT0gZGVmYXVsdE9uRXJyb3IpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0cnkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBleHBvcnRzID0gY29udGV4dC5leGVjQ2IoaWQsIGZhY3RvcnksIGRlcEV4cG9ydHMsIGV4cG9ydHMpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0gY2F0Y2ggKGUpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZXJyID0gZTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGV4cG9ydHMgPSBjb250ZXh0LmV4ZWNDYihpZCwgZmFjdG9yeSwgZGVwRXhwb3J0cywgZXhwb3J0cyk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CgogICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gRmF2b3IgcmV0dXJuIHZhbHVlIG92ZXIgZXhwb3J0cy4gSWYgbm9kZS9janMgaW4gcGxheSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIHRoZW4gd2lsbCBub3QgaGF2ZSBhIHJldHVybiB2YWx1ZSBhbnl3YXkuIEZhdm9yCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBtb2R1bGUuZXhwb3J0cyBhc3NpZ25tZW50IG92ZXIgZXhwb3J0cyBvYmplY3QuCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAodGhpcy5tYXAuaXNEZWZpbmUgJiYgZXhwb3J0cyA9PT0gdW5kZWZpbmVkKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2pzTW9kdWxlID0gdGhpcy5tb2R1bGU7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGNqc01vZHVsZSkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBleHBvcnRzID0gY2pzTW9kdWxlLmV4cG9ydHM7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSBlbHNlIGlmICh0aGlzLnVzaW5nRXhwb3J0cykgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvL2V4cG9ydHMgYWxyZWFkeSBzZXQgdGhlIGRlZmluZWQgdmFsdWUuCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGV4cG9ydHMgPSB0aGlzLmV4cG9ydHM7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgfQoKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChlcnIpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlcnIucmVxdWlyZU1hcCA9IHRoaXMubWFwOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVyci5yZXF1aXJlTW9kdWxlcyA9IHRoaXMubWFwLmlzRGVmaW5lID8gW3RoaXMubWFwLmlkXSA6IG51bGw7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZXJyLnJlcXVpcmVUeXBlID0gdGhpcy5tYXAuaXNEZWZpbmUgPyAnZGVmaW5lJyA6ICdyZXF1aXJlJzsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gb25FcnJvcigodGhpcy5lcnJvciA9IGVycikpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgfQoKICAgICAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vSnVzdCBhIGxpdGVyYWwgdmFsdWUKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGV4cG9ydHMgPSBmYWN0b3J5OwogICAgICAgICAgICAgICAgICAgICAgICB9CgogICAgICAgICAgICAgICAgICAgICAgICB0aGlzLmV4cG9ydHMgPSBleHBvcnRzOwoKICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHRoaXMubWFwLmlzRGVmaW5lICYmICF0aGlzLmlnbm9yZSkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgZGVmaW5lZFtpZF0gPSBleHBvcnRzOwoKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChyZXEub25SZXNvdXJjZUxvYWQpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXIgcmVzTG9hZE1hcHMgPSBbXTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlYWNoKHRoaXMuZGVwTWFwcywgZnVuY3Rpb24gKGRlcE1hcCkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXNMb2FkTWFwcy5wdXNoKGRlcE1hcC5ub3JtYWxpemVkTWFwIHx8IGRlcE1hcCk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVxLm9uUmVzb3VyY2VMb2FkKGNvbnRleHQsIHRoaXMubWFwLCByZXNMb2FkTWFwcyk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgIH0KCiAgICAgICAgICAgICAgICAgICAgICAgIC8vQ2xlYW4gdXAKICAgICAgICAgICAgICAgICAgICAgICAgY2xlYW5SZWdpc3RyeShpZCk7CgogICAgICAgICAgICAgICAgICAgICAgICB0aGlzLmRlZmluZWQgPSB0cnVlOwogICAgICAgICAgICAgICAgICAgIH0KCiAgICAgICAgICAgICAgICAgICAgLy9GaW5pc2hlZCB0aGUgZGVmaW5lIHN0YWdlLiBBbGxvdyBjYWxsaW5nIGNoZWNrIGFnYWluCiAgICAgICAgICAgICAgICAgICAgLy90byBhbGxvdyBkZWZpbmUgbm90aWZpY2F0aW9ucyBiZWxvdyBpbiB0aGUgY2FzZSBvZiBhCiAgICAgICAgICAgICAgICAgICAgLy9jeWNsZS4KICAgICAgICAgICAgICAgICAgICB0aGlzLmRlZmluaW5nID0gZmFsc2U7CgogICAgICAgICAgICAgICAgICAgIGlmICh0aGlzLmRlZmluZWQgJiYgIXRoaXMuZGVmaW5lRW1pdHRlZCkgewogICAgICAgICAgICAgICAgICAgICAgICB0aGlzLmRlZmluZUVtaXR0ZWQgPSB0cnVlOwogICAgICAgICAgICAgICAgICAgICAgICB0aGlzLmVtaXQoJ2RlZmluZWQnLCB0aGlzLmV4cG9ydHMpOwogICAgICAgICAgICAgICAgICAgICAgICB0aGlzLmRlZmluZUVtaXRDb21wbGV0ZSA9IHRydWU7CiAgICAgICAgICAgICAgICAgICAgfQoKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfSwKCiAgICAgICAgICAgIGNhbGxQbHVnaW46IGZ1bmN0aW9uICgpIHsKICAgICAgICAgICAgICAgIHZhciBtYXAgPSB0aGlzLm1hcCwKICAgICAgICAgICAgICAgICAgICBpZCA9IG1hcC5pZCwKICAgICAgICAgICAgICAgICAgICAvL01hcCBhbHJlYWR5IG5vcm1hbGl6ZWQgdGhlIHByZWZpeC4KICAgICAgICAgICAgICAgICAgICBwbHVnaW5NYXAgPSBtYWtlTW9kdWxlTWFwKG1hcC5wcmVmaXgpOwoKICAgICAgICAgICAgICAgIC8vTWFyayB0aGlzIGFzIGEgZGVwZW5kZW5jeSBmb3IgdGhpcyBwbHVnaW4sIHNvIGl0CiAgICAgICAgICAgICAgICAvL2NhbiBiZSB0cmFjZWQgZm9yIGN5Y2xlcy4KICAgICAgICAgICAgICAgIHRoaXMuZGVwTWFwcy5wdXNoKHBsdWdpbk1hcCk7CgogICAgICAgICAgICAgICAgb24ocGx1Z2luTWFwLCAnZGVmaW5lZCcsIGJpbmQodGhpcywgZnVuY3Rpb24gKHBsdWdpbikgewogICAgICAgICAgICAgICAgICAgIHZhciBsb2FkLCBub3JtYWxpemVkTWFwLCBub3JtYWxpemVkTW9kLAogICAgICAgICAgICAgICAgICAgICAgICBidW5kbGVJZCA9IGdldE93bihidW5kbGVzTWFwLCB0aGlzLm1hcC5pZCksCiAgICAgICAgICAgICAgICAgICAgICAgIG5hbWUgPSB0aGlzLm1hcC5uYW1lLAogICAgICAgICAgICAgICAgICAgICAgICBwYXJlbnROYW1lID0gdGhpcy5tYXAucGFyZW50TWFwID8gdGhpcy5tYXAucGFyZW50TWFwLm5hbWUgOiBudWxsLAogICAgICAgICAgICAgICAgICAgICAgICBsb2NhbFJlcXVpcmUgPSBjb250ZXh0Lm1ha2VSZXF1aXJlKG1hcC5wYXJlbnRNYXAsIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVuYWJsZUJ1aWxkQ2FsbGJhY2s6IHRydWUKICAgICAgICAgICAgICAgICAgICAgICAgfSk7CgogICAgICAgICAgICAgICAgICAgIC8vSWYgY3VycmVudCBtYXAgaXMgbm90IG5vcm1hbGl6ZWQsIHdhaXQgZm9yIHRoYXQKICAgICAgICAgICAgICAgICAgICAvL25vcm1hbGl6ZWQgbmFtZSB0byBsb2FkIGluc3RlYWQgb2YgY29udGludWluZy4KICAgICAgICAgICAgICAgICAgICBpZiAodGhpcy5tYXAudW5ub3JtYWxpemVkKSB7CiAgICAgICAgICAgICAgICAgICAgICAgIC8vTm9ybWFsaXplIHRoZSBJRCBpZiB0aGUgcGx1Z2luIGFsbG93cyBpdC4KICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHBsdWdpbi5ub3JtYWxpemUpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5hbWUgPSBwbHVnaW4ubm9ybWFsaXplKG5hbWUsIGZ1bmN0aW9uIChuYW1lKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIG5vcm1hbGl6ZShuYW1lLCBwYXJlbnROYW1lLCB0cnVlKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pIHx8ICcnOwogICAgICAgICAgICAgICAgICAgICAgICB9CgogICAgICAgICAgICAgICAgICAgICAgICAvL3ByZWZpeCBhbmQgbmFtZSBzaG91bGQgYWxyZWFkeSBiZSBub3JtYWxpemVkLCBubyBuZWVkCiAgICAgICAgICAgICAgICAgICAgICAgIC8vZm9yIGFwcGx5aW5nIG1hcCBjb25maWcgYWdhaW4gZWl0aGVyLgogICAgICAgICAgICAgICAgICAgICAgICBub3JtYWxpemVkTWFwID0gbWFrZU1vZHVsZU1hcChtYXAucHJlZml4ICsgJyEnICsgbmFtZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5tYXAucGFyZW50TWFwLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0cnVlKTsKICAgICAgICAgICAgICAgICAgICAgICAgb24obm9ybWFsaXplZE1hcCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICdkZWZpbmVkJywgYmluZCh0aGlzLCBmdW5jdGlvbiAodmFsdWUpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLm1hcC5ub3JtYWxpemVkTWFwID0gbm9ybWFsaXplZE1hcDsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLmluaXQoW10sIGZ1bmN0aW9uICgpIHsgcmV0dXJuIHZhbHVlOyB9LCBudWxsLCB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVuYWJsZWQ6IHRydWUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlnbm9yZTogdHJ1ZQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgfSkpOwoKICAgICAgICAgICAgICAgICAgICAgICAgbm9ybWFsaXplZE1vZCA9IGdldE93bihyZWdpc3RyeSwgbm9ybWFsaXplZE1hcC5pZCk7CiAgICAgICAgICAgICAgICAgICAgICAgIGlmIChub3JtYWxpemVkTW9kKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAvL01hcmsgdGhpcyBhcyBhIGRlcGVuZGVuY3kgZm9yIHRoaXMgcGx1Z2luLCBzbyBpdAogICAgICAgICAgICAgICAgICAgICAgICAgICAgLy9jYW4gYmUgdHJhY2VkIGZvciBjeWNsZXMuCiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLmRlcE1hcHMucHVzaChub3JtYWxpemVkTWFwKTsKCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAodGhpcy5ldmVudHMuZXJyb3IpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBub3JtYWxpemVkTW9kLm9uKCdlcnJvcicsIGJpbmQodGhpcywgZnVuY3Rpb24gKGVycikgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLmVtaXQoJ2Vycm9yJywgZXJyKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KSk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBub3JtYWxpemVkTW9kLmVuYWJsZSgpOwogICAgICAgICAgICAgICAgICAgICAgICB9CgogICAgICAgICAgICAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgICAgICAgICAgICAgfQoKICAgICAgICAgICAgICAgICAgICAvL0lmIGEgcGF0aHMgY29uZmlnLCB0aGVuIGp1c3QgbG9hZCB0aGF0IGZpbGUgaW5zdGVhZCB0bwogICAgICAgICAgICAgICAgICAgIC8vcmVzb2x2ZSB0aGUgcGx1Z2luLCBhcyBpdCBpcyBidWlsdCBpbnRvIHRoYXQgcGF0aHMgbGF5ZXIuCiAgICAgICAgICAgICAgICAgICAgaWYgKGJ1bmRsZUlkKSB7CiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMubWFwLnVybCA9IGNvbnRleHQubmFtZVRvVXJsKGJ1bmRsZUlkKTsKICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5sb2FkKCk7CiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgICAgICAgICAgICB9CgogICAgICAgICAgICAgICAgICAgIGxvYWQgPSBiaW5kKHRoaXMsIGZ1bmN0aW9uICh2YWx1ZSkgewogICAgICAgICAgICAgICAgICAgICAgICB0aGlzLmluaXQoW10sIGZ1bmN0aW9uICgpIHsgcmV0dXJuIHZhbHVlOyB9LCBudWxsLCB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbmFibGVkOiB0cnVlCiAgICAgICAgICAgICAgICAgICAgICAgIH0pOwogICAgICAgICAgICAgICAgICAgIH0pOwoKICAgICAgICAgICAgICAgICAgICBsb2FkLmVycm9yID0gYmluZCh0aGlzLCBmdW5jdGlvbiAoZXJyKSB7CiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuaW5pdGVkID0gdHJ1ZTsKICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5lcnJvciA9IGVycjsKICAgICAgICAgICAgICAgICAgICAgICAgZXJyLnJlcXVpcmVNb2R1bGVzID0gW2lkXTsKCiAgICAgICAgICAgICAgICAgICAgICAgIC8vUmVtb3ZlIHRlbXAgdW5ub3JtYWxpemVkIG1vZHVsZXMgZm9yIHRoaXMgbW9kdWxlLAogICAgICAgICAgICAgICAgICAgICAgICAvL3NpbmNlIHRoZXkgd2lsbCBuZXZlciBiZSByZXNvbHZlZCBvdGhlcndpc2Ugbm93LgogICAgICAgICAgICAgICAgICAgICAgICBlYWNoUHJvcChyZWdpc3RyeSwgZnVuY3Rpb24gKG1vZCkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKG1vZC5tYXAuaWQuaW5kZXhPZihpZCArICdfdW5ub3JtYWxpemVkJykgPT09IDApIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGVhblJlZ2lzdHJ5KG1vZC5tYXAuaWQpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICB9KTsKCiAgICAgICAgICAgICAgICAgICAgICAgIG9uRXJyb3IoZXJyKTsKICAgICAgICAgICAgICAgICAgICB9KTsKCiAgICAgICAgICAgICAgICAgICAgLy9BbGxvdyBwbHVnaW5zIHRvIGxvYWQgb3RoZXIgY29kZSB3aXRob3V0IGhhdmluZyB0byBrbm93IHRoZQogICAgICAgICAgICAgICAgICAgIC8vY29udGV4dCBvciBob3cgdG8gJ2NvbXBsZXRlJyB0aGUgbG9hZC4KICAgICAgICAgICAgICAgICAgICBsb2FkLmZyb21UZXh0ID0gYmluZCh0aGlzLCBmdW5jdGlvbiAodGV4dCwgdGV4dEFsdCkgewogICAgICAgICAgICAgICAgICAgICAgICAvKmpzbGludCBldmlsOiB0cnVlICovCiAgICAgICAgICAgICAgICAgICAgICAgIHZhciBtb2R1bGVOYW1lID0gbWFwLm5hbWUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBtb2R1bGVNYXAgPSBtYWtlTW9kdWxlTWFwKG1vZHVsZU5hbWUpLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgaGFzSW50ZXJhY3RpdmUgPSB1c2VJbnRlcmFjdGl2ZTsKCiAgICAgICAgICAgICAgICAgICAgICAgIC8vQXMgb2YgMi4xLjAsIHN1cHBvcnQganVzdCBwYXNzaW5nIHRoZSB0ZXh0LCB0byByZWluZm9yY2UKICAgICAgICAgICAgICAgICAgICAgICAgLy9mcm9tVGV4dCBvbmx5IGJlaW5nIGNhbGxlZCBvbmNlIHBlciByZXNvdXJjZS4gU3RpbGwKICAgICAgICAgICAgICAgICAgICAgICAgLy9zdXBwb3J0IG9sZCBzdHlsZSBvZiBwYXNzaW5nIG1vZHVsZU5hbWUgYnV0IGRpc2NhcmQKICAgICAgICAgICAgICAgICAgICAgICAgLy90aGF0IG1vZHVsZU5hbWUgaW4gZmF2b3Igb2YgdGhlIGludGVybmFsIHJlZi4KICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHRleHRBbHQpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRleHQgPSB0ZXh0QWx0OwogICAgICAgICAgICAgICAgICAgICAgICB9CgogICAgICAgICAgICAgICAgICAgICAgICAvL1R1cm4gb2ZmIGludGVyYWN0aXZlIHNjcmlwdCBtYXRjaGluZyBmb3IgSUUgZm9yIGFueSBkZWZpbmUKICAgICAgICAgICAgICAgICAgICAgICAgLy9jYWxscyBpbiB0aGUgdGV4dCwgdGhlbiB0dXJuIGl0IGJhY2sgb24gYXQgdGhlIGVuZC4KICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGhhc0ludGVyYWN0aXZlKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICB1c2VJbnRlcmFjdGl2ZSA9IGZhbHNlOwogICAgICAgICAgICAgICAgICAgICAgICB9CgogICAgICAgICAgICAgICAgICAgICAgICAvL1ByaW1lIHRoZSBzeXN0ZW0gYnkgY3JlYXRpbmcgYSBtb2R1bGUgaW5zdGFuY2UgZm9yCiAgICAgICAgICAgICAgICAgICAgICAgIC8vaXQuCiAgICAgICAgICAgICAgICAgICAgICAgIGdldE1vZHVsZShtb2R1bGVNYXApOwoKICAgICAgICAgICAgICAgICAgICAgICAgLy9UcmFuc2ZlciBhbnkgY29uZmlnIHRvIHRoaXMgb3RoZXIgbW9kdWxlLgogICAgICAgICAgICAgICAgICAgICAgICBpZiAoaGFzUHJvcChjb25maWcuY29uZmlnLCBpZCkpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbmZpZy5jb25maWdbbW9kdWxlTmFtZV0gPSBjb25maWcuY29uZmlnW2lkXTsKICAgICAgICAgICAgICAgICAgICAgICAgfQoKICAgICAgICAgICAgICAgICAgICAgICAgdHJ5IHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlcS5leGVjKHRleHQpOwogICAgICAgICAgICAgICAgICAgICAgICB9IGNhdGNoIChlKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gb25FcnJvcihtYWtlRXJyb3IoJ2Zyb210ZXh0ZXZhbCcsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdmcm9tVGV4dCBldmFsIGZvciAnICsgaWQgKwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICcgZmFpbGVkOiAnICsgZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW2lkXSkpOwogICAgICAgICAgICAgICAgICAgICAgICB9CgogICAgICAgICAgICAgICAgICAgICAgICBpZiAoaGFzSW50ZXJhY3RpdmUpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVzZUludGVyYWN0aXZlID0gdHJ1ZTsKICAgICAgICAgICAgICAgICAgICAgICAgfQoKICAgICAgICAgICAgICAgICAgICAgICAgLy9NYXJrIHRoaXMgYXMgYSBkZXBlbmRlbmN5IGZvciB0aGUgcGx1Z2luCiAgICAgICAgICAgICAgICAgICAgICAgIC8vcmVzb3VyY2UKICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5kZXBNYXBzLnB1c2gobW9kdWxlTWFwKTsKCiAgICAgICAgICAgICAgICAgICAgICAgIC8vU3VwcG9ydCBhbm9ueW1vdXMgbW9kdWxlcy4KICAgICAgICAgICAgICAgICAgICAgICAgY29udGV4dC5jb21wbGV0ZUxvYWQobW9kdWxlTmFtZSk7CgogICAgICAgICAgICAgICAgICAgICAgICAvL0JpbmQgdGhlIHZhbHVlIG9mIHRoYXQgbW9kdWxlIHRvIHRoZSB2YWx1ZSBmb3IgdGhpcwogICAgICAgICAgICAgICAgICAgICAgICAvL3Jlc291cmNlIElELgogICAgICAgICAgICAgICAgICAgICAgICBsb2NhbFJlcXVpcmUoW21vZHVsZU5hbWVdLCBsb2FkKTsKICAgICAgICAgICAgICAgICAgICB9KTsKCiAgICAgICAgICAgICAgICAgICAgLy9Vc2UgcGFyZW50TmFtZSBoZXJlIHNpbmNlIHRoZSBwbHVnaW4ncyBuYW1lIGlzIG5vdCByZWxpYWJsZSwKICAgICAgICAgICAgICAgICAgICAvL2NvdWxkIGJlIHNvbWUgd2VpcmQgc3RyaW5nIHdpdGggbm8gcGF0aCB0aGF0IGFjdHVhbGx5IHdhbnRzIHRvCiAgICAgICAgICAgICAgICAgICAgLy9yZWZlcmVuY2UgdGhlIHBhcmVudE5hbWUncyBwYXRoLgogICAgICAgICAgICAgICAgICAgIHBsdWdpbi5sb2FkKG1hcC5uYW1lLCBsb2NhbFJlcXVpcmUsIGxvYWQsIGNvbmZpZyk7CiAgICAgICAgICAgICAgICB9KSk7CgogICAgICAgICAgICAgICAgY29udGV4dC5lbmFibGUocGx1Z2luTWFwLCB0aGlzKTsKICAgICAgICAgICAgICAgIHRoaXMucGx1Z2luTWFwc1twbHVnaW5NYXAuaWRdID0gcGx1Z2luTWFwOwogICAgICAgICAgICB9LAoKICAgICAgICAgICAgZW5hYmxlOiBmdW5jdGlvbiAoKSB7CiAgICAgICAgICAgICAgICBlbmFibGVkUmVnaXN0cnlbdGhpcy5tYXAuaWRdID0gdGhpczsKICAgICAgICAgICAgICAgIHRoaXMuZW5hYmxlZCA9IHRydWU7CgogICAgICAgICAgICAgICAgLy9TZXQgZmxhZyBtZW50aW9uaW5nIHRoYXQgdGhlIG1vZHVsZSBpcyBlbmFibGluZywKICAgICAgICAgICAgICAgIC8vc28gdGhhdCBpbW1lZGlhdGUgY2FsbHMgdG8gdGhlIGRlZmluZWQgY2FsbGJhY2tzCiAgICAgICAgICAgICAgICAvL2ZvciBkZXBlbmRlbmNpZXMgZG8gbm90IHRyaWdnZXIgaW5hZHZlcnRlbnQgbG9hZAogICAgICAgICAgICAgICAgLy93aXRoIHRoZSBkZXBDb3VudCBzdGlsbCBiZWluZyB6ZXJvLgogICAgICAgICAgICAgICAgdGhpcy5lbmFibGluZyA9IHRydWU7CgogICAgICAgICAgICAgICAgLy9FbmFibGUgZWFjaCBkZXBlbmRlbmN5CiAgICAgICAgICAgICAgICBlYWNoKHRoaXMuZGVwTWFwcywgYmluZCh0aGlzLCBmdW5jdGlvbiAoZGVwTWFwLCBpKSB7CiAgICAgICAgICAgICAgICAgICAgdmFyIGlkLCBtb2QsIGhhbmRsZXI7CgogICAgICAgICAgICAgICAgICAgIGlmICh0eXBlb2YgZGVwTWFwID09PSAnc3RyaW5nJykgewogICAgICAgICAgICAgICAgICAgICAgICAvL0RlcGVuZGVuY3kgbmVlZHMgdG8gYmUgY29udmVydGVkIHRvIGEgZGVwTWFwCiAgICAgICAgICAgICAgICAgICAgICAgIC8vYW5kIHdpcmVkIHVwIHRvIHRoaXMgbW9kdWxlLgogICAgICAgICAgICAgICAgICAgICAgICBkZXBNYXAgPSBtYWtlTW9kdWxlTWFwKGRlcE1hcCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAodGhpcy5tYXAuaXNEZWZpbmUgPyB0aGlzLm1hcCA6IHRoaXMubWFwLnBhcmVudE1hcCksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmFsc2UsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIXRoaXMuc2tpcE1hcCk7CiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuZGVwTWFwc1tpXSA9IGRlcE1hcDsKCiAgICAgICAgICAgICAgICAgICAgICAgIGhhbmRsZXIgPSBnZXRPd24oaGFuZGxlcnMsIGRlcE1hcC5pZCk7CgogICAgICAgICAgICAgICAgICAgICAgICBpZiAoaGFuZGxlcikgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5kZXBFeHBvcnRzW2ldID0gaGFuZGxlcih0aGlzKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgICAgICAgICAgICAgICAgfQoKICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5kZXBDb3VudCArPSAxOwoKICAgICAgICAgICAgICAgICAgICAgICAgb24oZGVwTWFwLCAnZGVmaW5lZCcsIGJpbmQodGhpcywgZnVuY3Rpb24gKGRlcEV4cG9ydHMpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICh0aGlzLnVuZGVmZWQpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLmRlZmluZURlcChpLCBkZXBFeHBvcnRzKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuY2hlY2soKTsKICAgICAgICAgICAgICAgICAgICAgICAgfSkpOwoKICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHRoaXMuZXJyYmFjaykgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgb24oZGVwTWFwLCAnZXJyb3InLCBiaW5kKHRoaXMsIHRoaXMuZXJyYmFjaykpOwogICAgICAgICAgICAgICAgICAgICAgICB9IGVsc2UgaWYgKHRoaXMuZXZlbnRzLmVycm9yKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBObyBkaXJlY3QgZXJyYmFjayBvbiB0aGlzIG1vZHVsZSwgYnV0IHNvbWV0aGluZwogICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gZWxzZSBpcyBsaXN0ZW5pbmcgZm9yIGVycm9ycywgc28gYmUgc3VyZSB0bwogICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gcHJvcGFnYXRlIHRoZSBlcnJvciBjb3JyZWN0bHkuCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBvbihkZXBNYXAsICdlcnJvcicsIGJpbmQodGhpcywgZnVuY3Rpb24oZXJyKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5lbWl0KCdlcnJvcicsIGVycik7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KSk7CiAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICB9CgogICAgICAgICAgICAgICAgICAgIGlkID0gZGVwTWFwLmlkOwogICAgICAgICAgICAgICAgICAgIG1vZCA9IHJlZ2lzdHJ5W2lkXTsKCiAgICAgICAgICAgICAgICAgICAgLy9Ta2lwIHNwZWNpYWwgbW9kdWxlcyBsaWtlICdyZXF1aXJlJywgJ2V4cG9ydHMnLCAnbW9kdWxlJwogICAgICAgICAgICAgICAgICAgIC8vQWxzbywgZG9uJ3QgY2FsbCBlbmFibGUgaWYgaXQgaXMgYWxyZWFkeSBlbmFibGVkLAogICAgICAgICAgICAgICAgICAgIC8vaW1wb3J0YW50IGluIGNpcmN1bGFyIGRlcGVuZGVuY3kgY2FzZXMuCiAgICAgICAgICAgICAgICAgICAgaWYgKCFoYXNQcm9wKGhhbmRsZXJzLCBpZCkgJiYgbW9kICYmICFtb2QuZW5hYmxlZCkgewogICAgICAgICAgICAgICAgICAgICAgICBjb250ZXh0LmVuYWJsZShkZXBNYXAsIHRoaXMpOwogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIH0pKTsKCiAgICAgICAgICAgICAgICAvL0VuYWJsZSBlYWNoIHBsdWdpbiB0aGF0IGlzIHVzZWQgaW4KICAgICAgICAgICAgICAgIC8vYSBkZXBlbmRlbmN5CiAgICAgICAgICAgICAgICBlYWNoUHJvcCh0aGlzLnBsdWdpbk1hcHMsIGJpbmQodGhpcywgZnVuY3Rpb24gKHBsdWdpbk1hcCkgewogICAgICAgICAgICAgICAgICAgIHZhciBtb2QgPSBnZXRPd24ocmVnaXN0cnksIHBsdWdpbk1hcC5pZCk7CiAgICAgICAgICAgICAgICAgICAgaWYgKG1vZCAmJiAhbW9kLmVuYWJsZWQpIHsKICAgICAgICAgICAgICAgICAgICAgICAgY29udGV4dC5lbmFibGUocGx1Z2luTWFwLCB0aGlzKTsKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICB9KSk7CgogICAgICAgICAgICAgICAgdGhpcy5lbmFibGluZyA9IGZhbHNlOwoKICAgICAgICAgICAgICAgIHRoaXMuY2hlY2soKTsKICAgICAgICAgICAgfSwKCiAgICAgICAgICAgIG9uOiBmdW5jdGlvbiAobmFtZSwgY2IpIHsKICAgICAgICAgICAgICAgIHZhciBjYnMgPSB0aGlzLmV2ZW50c1tuYW1lXTsKICAgICAgICAgICAgICAgIGlmICghY2JzKSB7CiAgICAgICAgICAgICAgICAgICAgY2JzID0gdGhpcy5ldmVudHNbbmFtZV0gPSBbXTsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIGNicy5wdXNoKGNiKTsKICAgICAgICAgICAgfSwKCiAgICAgICAgICAgIGVtaXQ6IGZ1bmN0aW9uIChuYW1lLCBldnQpIHsKICAgICAgICAgICAgICAgIGVhY2godGhpcy5ldmVudHNbbmFtZV0sIGZ1bmN0aW9uIChjYikgewogICAgICAgICAgICAgICAgICAgIGNiKGV2dCk7CiAgICAgICAgICAgICAgICB9KTsKICAgICAgICAgICAgICAgIGlmIChuYW1lID09PSAnZXJyb3InKSB7CiAgICAgICAgICAgICAgICAgICAgLy9Ob3cgdGhhdCB0aGUgZXJyb3IgaGFuZGxlciB3YXMgdHJpZ2dlcmVkLCByZW1vdmUKICAgICAgICAgICAgICAgICAgICAvL3RoZSBsaXN0ZW5lcnMsIHNpbmNlIHRoaXMgYnJva2VuIE1vZHVsZSBpbnN0YW5jZQogICAgICAgICAgICAgICAgICAgIC8vY2FuIHN0YXkgYXJvdW5kIGZvciBhIHdoaWxlIGluIHRoZSByZWdpc3RyeS4KICAgICAgICAgICAgICAgICAgICBkZWxldGUgdGhpcy5ldmVudHNbbmFtZV07CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0KICAgICAgICB9OwoKICAgICAgICBmdW5jdGlvbiBjYWxsR2V0TW9kdWxlKGFyZ3MpIHsKICAgICAgICAgICAgLy9Ta2lwIG1vZHVsZXMgYWxyZWFkeSBkZWZpbmVkLgogICAgICAgICAgICBpZiAoIWhhc1Byb3AoZGVmaW5lZCwgYXJnc1swXSkpIHsKICAgICAgICAgICAgICAgIGdldE1vZHVsZShtYWtlTW9kdWxlTWFwKGFyZ3NbMF0sIG51bGwsIHRydWUpKS5pbml0KGFyZ3NbMV0sIGFyZ3NbMl0pOwogICAgICAgICAgICB9CiAgICAgICAgfQoKICAgICAgICBmdW5jdGlvbiByZW1vdmVMaXN0ZW5lcihub2RlLCBmdW5jLCBuYW1lLCBpZU5hbWUpIHsKICAgICAgICAgICAgLy9GYXZvciBkZXRhY2hFdmVudCBiZWNhdXNlIG9mIElFOQogICAgICAgICAgICAvL2lzc3VlLCBzZWUgYXR0YWNoRXZlbnQvYWRkRXZlbnRMaXN0ZW5lciBjb21tZW50IGVsc2V3aGVyZQogICAgICAgICAgICAvL2luIHRoaXMgZmlsZS4KICAgICAgICAgICAgaWYgKG5vZGUuZGV0YWNoRXZlbnQgJiYgIWlzT3BlcmEpIHsKICAgICAgICAgICAgICAgIC8vUHJvYmFibHkgSUUuIElmIG5vdCBpdCB3aWxsIHRocm93IGFuIGVycm9yLCB3aGljaCB3aWxsIGJlCiAgICAgICAgICAgICAgICAvL3VzZWZ1bCB0byBrbm93LgogICAgICAgICAgICAgICAgaWYgKGllTmFtZSkgewogICAgICAgICAgICAgICAgICAgIG5vZGUuZGV0YWNoRXZlbnQoaWVOYW1lLCBmdW5jKTsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgICAgIG5vZGUucmVtb3ZlRXZlbnRMaXN0ZW5lcihuYW1lLCBmdW5jLCBmYWxzZSk7CiAgICAgICAgICAgIH0KICAgICAgICB9CgogICAgICAgIC8qKgogICAgICAgICAqIEdpdmVuIGFuIGV2ZW50IGZyb20gYSBzY3JpcHQgbm9kZSwgZ2V0IHRoZSByZXF1aXJlanMgaW5mbyBmcm9tIGl0LAogICAgICAgICAqIGFuZCB0aGVuIHJlbW92ZXMgdGhlIGV2ZW50IGxpc3RlbmVycyBvbiB0aGUgbm9kZS4KICAgICAgICAgKiBAcGFyYW0ge0V2ZW50fSBldnQKICAgICAgICAgKiBAcmV0dXJucyB7T2JqZWN0fQogICAgICAgICAqLwogICAgICAgIGZ1bmN0aW9uIGdldFNjcmlwdERhdGEoZXZ0KSB7CiAgICAgICAgICAgIC8vVXNpbmcgY3VycmVudFRhcmdldCBpbnN0ZWFkIG9mIHRhcmdldCBmb3IgRmlyZWZveCAyLjAncyBzYWtlLiBOb3QKICAgICAgICAgICAgLy9hbGwgb2xkIGJyb3dzZXJzIHdpbGwgYmUgc3VwcG9ydGVkLCBidXQgdGhpcyBvbmUgd2FzIGVhc3kgZW5vdWdoCiAgICAgICAgICAgIC8vdG8gc3VwcG9ydCBhbmQgc3RpbGwgbWFrZXMgc2Vuc2UuCiAgICAgICAgICAgIHZhciBub2RlID0gZXZ0LmN1cnJlbnRUYXJnZXQgfHwgZXZ0LnNyY0VsZW1lbnQ7CgogICAgICAgICAgICAvL1JlbW92ZSB0aGUgbGlzdGVuZXJzIG9uY2UgaGVyZS4KICAgICAgICAgICAgcmVtb3ZlTGlzdGVuZXIobm9kZSwgY29udGV4dC5vblNjcmlwdExvYWQsICdsb2FkJywgJ29ucmVhZHlzdGF0ZWNoYW5nZScpOwogICAgICAgICAgICByZW1vdmVMaXN0ZW5lcihub2RlLCBjb250ZXh0Lm9uU2NyaXB0RXJyb3IsICdlcnJvcicpOwoKICAgICAgICAgICAgcmV0dXJuIHsKICAgICAgICAgICAgICAgIG5vZGU6IG5vZGUsCiAgICAgICAgICAgICAgICBpZDogbm9kZSAmJiBub2RlLmdldEF0dHJpYnV0ZSgnZGF0YS1yZXF1aXJlbW9kdWxlJykKICAgICAgICAgICAgfTsKICAgICAgICB9CgogICAgICAgIGZ1bmN0aW9uIGludGFrZURlZmluZXMoKSB7CiAgICAgICAgICAgIHZhciBhcmdzOwoKICAgICAgICAgICAgLy9BbnkgZGVmaW5lZCBtb2R1bGVzIGluIHRoZSBnbG9iYWwgcXVldWUsIGludGFrZSB0aGVtIG5vdy4KICAgICAgICAgICAgdGFrZUdsb2JhbFF1ZXVlKCk7CgogICAgICAgICAgICAvL01ha2Ugc3VyZSBhbnkgcmVtYWluaW5nIGRlZlF1ZXVlIGl0ZW1zIGdldCBwcm9wZXJseSBwcm9jZXNzZWQuCiAgICAgICAgICAgIHdoaWxlIChkZWZRdWV1ZS5sZW5ndGgpIHsKICAgICAgICAgICAgICAgIGFyZ3MgPSBkZWZRdWV1ZS5zaGlmdCgpOwogICAgICAgICAgICAgICAgaWYgKGFyZ3NbMF0gPT09IG51bGwpIHsKICAgICAgICAgICAgICAgICAgICByZXR1cm4gb25FcnJvcihtYWtlRXJyb3IoJ21pc21hdGNoJywgJ01pc21hdGNoZWQgYW5vbnltb3VzIGRlZmluZSgpIG1vZHVsZTogJyArCiAgICAgICAgICAgICAgICAgICAgICAgIGFyZ3NbYXJncy5sZW5ndGggLSAxXSkpOwogICAgICAgICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgICAgICAgICAvL2FyZ3MgYXJlIGlkLCBkZXBzLCBmYWN0b3J5LiBTaG91bGQgYmUgbm9ybWFsaXplZCBieSB0aGUKICAgICAgICAgICAgICAgICAgICAvL2RlZmluZSgpIGZ1bmN0aW9uLgogICAgICAgICAgICAgICAgICAgIGNhbGxHZXRNb2R1bGUoYXJncyk7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0KICAgICAgICAgICAgY29udGV4dC5kZWZRdWV1ZU1hcCA9IHt9OwogICAgICAgIH0KCiAgICAgICAgY29udGV4dCA9IHsKICAgICAgICAgICAgY29uZmlnOiBjb25maWcsCiAgICAgICAgICAgIGNvbnRleHROYW1lOiBjb250ZXh0TmFtZSwKICAgICAgICAgICAgcmVnaXN0cnk6IHJlZ2lzdHJ5LAogICAgICAgICAgICBkZWZpbmVkOiBkZWZpbmVkLAogICAgICAgICAgICB1cmxGZXRjaGVkOiB1cmxGZXRjaGVkLAogICAgICAgICAgICBkZWZRdWV1ZTogZGVmUXVldWUsCiAgICAgICAgICAgIGRlZlF1ZXVlTWFwOiB7fSwKICAgICAgICAgICAgTW9kdWxlOiBNb2R1bGUsCiAgICAgICAgICAgIG1ha2VNb2R1bGVNYXA6IG1ha2VNb2R1bGVNYXAsCiAgICAgICAgICAgIG5leHRUaWNrOiByZXEubmV4dFRpY2ssCiAgICAgICAgICAgIG9uRXJyb3I6IG9uRXJyb3IsCgogICAgICAgICAgICAvKioKICAgICAgICAgICAgICogU2V0IGEgY29uZmlndXJhdGlvbiBmb3IgdGhlIGNvbnRleHQuCiAgICAgICAgICAgICAqIEBwYXJhbSB7T2JqZWN0fSBjZmcgY29uZmlnIG9iamVjdCB0byBpbnRlZ3JhdGUuCiAgICAgICAgICAgICAqLwogICAgICAgICAgICBjb25maWd1cmU6IGZ1bmN0aW9uIChjZmcpIHsKICAgICAgICAgICAgICAgIC8vTWFrZSBzdXJlIHRoZSBiYXNlVXJsIGVuZHMgaW4gYSBzbGFzaC4KICAgICAgICAgICAgICAgIGlmIChjZmcuYmFzZVVybCkgewogICAgICAgICAgICAgICAgICAgIGlmIChjZmcuYmFzZVVybC5jaGFyQXQoY2ZnLmJhc2VVcmwubGVuZ3RoIC0gMSkgIT09ICcvJykgewogICAgICAgICAgICAgICAgICAgICAgICBjZmcuYmFzZVVybCArPSAnLyc7CiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgfQoKICAgICAgICAgICAgICAgIC8vIENvbnZlcnQgb2xkIHN0eWxlIHVybEFyZ3Mgc3RyaW5nIHRvIGEgZnVuY3Rpb24uCiAgICAgICAgICAgICAgICBpZiAodHlwZW9mIGNmZy51cmxBcmdzID09PSAnc3RyaW5nJykgewogICAgICAgICAgICAgICAgICAgIHZhciB1cmxBcmdzID0gY2ZnLnVybEFyZ3M7CiAgICAgICAgICAgICAgICAgICAgY2ZnLnVybEFyZ3MgPSBmdW5jdGlvbihpZCwgdXJsKSB7CiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiAodXJsLmluZGV4T2YoJz8nKSA9PT0gLTEgPyAnPycgOiAnJicpICsgdXJsQXJnczsKICAgICAgICAgICAgICAgICAgICB9OwogICAgICAgICAgICAgICAgfQoKICAgICAgICAgICAgICAgIC8vU2F2ZSBvZmYgdGhlIHBhdGhzIHNpbmNlIHRoZXkgcmVxdWlyZSBzcGVjaWFsIHByb2Nlc3NpbmcsCiAgICAgICAgICAgICAgICAvL3RoZXkgYXJlIGFkZGl0aXZlLgogICAgICAgICAgICAgICAgdmFyIHNoaW0gPSBjb25maWcuc2hpbSwKICAgICAgICAgICAgICAgICAgICBvYmpzID0gewogICAgICAgICAgICAgICAgICAgICAgICBwYXRoczogdHJ1ZSwKICAgICAgICAgICAgICAgICAgICAgICAgYnVuZGxlczogdHJ1ZSwKICAgICAgICAgICAgICAgICAgICAgICAgY29uZmlnOiB0cnVlLAogICAgICAgICAgICAgICAgICAgICAgICBtYXA6IHRydWUKICAgICAgICAgICAgICAgICAgICB9OwoKICAgICAgICAgICAgICAgIGVhY2hQcm9wKGNmZywgZnVuY3Rpb24gKHZhbHVlLCBwcm9wKSB7CiAgICAgICAgICAgICAgICAgICAgaWYgKG9ianNbcHJvcF0pIHsKICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCFjb25maWdbcHJvcF0pIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbmZpZ1twcm9wXSA9IHt9OwogICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgIG1peGluKGNvbmZpZ1twcm9wXSwgdmFsdWUsIHRydWUsIHRydWUpOwogICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICAgICAgICAgICAgIGNvbmZpZ1twcm9wXSA9IHZhbHVlOwogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIH0pOwoKICAgICAgICAgICAgICAgIC8vUmV2ZXJzZSBtYXAgdGhlIGJ1bmRsZXMKICAgICAgICAgICAgICAgIGlmIChjZmcuYnVuZGxlcykgewogICAgICAgICAgICAgICAgICAgIGVhY2hQcm9wKGNmZy5idW5kbGVzLCBmdW5jdGlvbiAodmFsdWUsIHByb3ApIHsKICAgICAgICAgICAgICAgICAgICAgICAgZWFjaCh2YWx1ZSwgZnVuY3Rpb24gKHYpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICh2ICE9PSBwcm9wKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnVuZGxlc01hcFt2XSA9IHByb3A7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgIH0pOwogICAgICAgICAgICAgICAgICAgIH0pOwogICAgICAgICAgICAgICAgfQoKICAgICAgICAgICAgICAgIC8vTWVyZ2Ugc2hpbQogICAgICAgICAgICAgICAgaWYgKGNmZy5zaGltKSB7CiAgICAgICAgICAgICAgICAgICAgZWFjaFByb3AoY2ZnLnNoaW0sIGZ1bmN0aW9uICh2YWx1ZSwgaWQpIHsKICAgICAgICAgICAgICAgICAgICAgICAgLy9Ob3JtYWxpemUgdGhlIHN0cnVjdHVyZQogICAgICAgICAgICAgICAgICAgICAgICBpZiAoaXNBcnJheSh2YWx1ZSkpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhbHVlID0gewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRlcHM6IHZhbHVlCiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9OwogICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgIGlmICgodmFsdWUuZXhwb3J0cyB8fCB2YWx1ZS5pbml0KSAmJiAhdmFsdWUuZXhwb3J0c0ZuKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YWx1ZS5leHBvcnRzRm4gPSBjb250ZXh0Lm1ha2VTaGltRXhwb3J0cyh2YWx1ZSk7CiAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgc2hpbVtpZF0gPSB2YWx1ZTsKICAgICAgICAgICAgICAgICAgICB9KTsKICAgICAgICAgICAgICAgICAgICBjb25maWcuc2hpbSA9IHNoaW07CiAgICAgICAgICAgICAgICB9CgogICAgICAgICAgICAgICAgLy9BZGp1c3QgcGFja2FnZXMgaWYgbmVjZXNzYXJ5LgogICAgICAgICAgICAgICAgaWYgKGNmZy5wYWNrYWdlcykgewogICAgICAgICAgICAgICAgICAgIGVhY2goY2ZnLnBhY2thZ2VzLCBmdW5jdGlvbiAocGtnT2JqKSB7CiAgICAgICAgICAgICAgICAgICAgICAgIHZhciBsb2NhdGlvbiwgbmFtZTsKCiAgICAgICAgICAgICAgICAgICAgICAgIHBrZ09iaiA9IHR5cGVvZiBwa2dPYmogPT09ICdzdHJpbmcnID8ge25hbWU6IHBrZ09ian0gOiBwa2dPYmo7CgogICAgICAgICAgICAgICAgICAgICAgICBuYW1lID0gcGtnT2JqLm5hbWU7CiAgICAgICAgICAgICAgICAgICAgICAgIGxvY2F0aW9uID0gcGtnT2JqLmxvY2F0aW9uOwogICAgICAgICAgICAgICAgICAgICAgICBpZiAobG9jYXRpb24pIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbmZpZy5wYXRoc1tuYW1lXSA9IHBrZ09iai5sb2NhdGlvbjsKICAgICAgICAgICAgICAgICAgICAgICAgfQoKICAgICAgICAgICAgICAgICAgICAgICAgLy9TYXZlIHBvaW50ZXIgdG8gbWFpbiBtb2R1bGUgSUQgZm9yIHBrZyBuYW1lLgogICAgICAgICAgICAgICAgICAgICAgICAvL1JlbW92ZSBsZWFkaW5nIGRvdCBpbiBtYWluLCBzbyBtYWluIHBhdGhzIGFyZSBub3JtYWxpemVkLAogICAgICAgICAgICAgICAgICAgICAgICAvL2FuZCByZW1vdmUgYW55IHRyYWlsaW5nIC5qcywgc2luY2UgZGlmZmVyZW50IHBhY2thZ2UKICAgICAgICAgICAgICAgICAgICAgICAgLy9lbnZzIGhhdmUgZGlmZmVyZW50IGNvbnZlbnRpb25zOiBzb21lIHVzZSBhIG1vZHVsZSBuYW1lLAogICAgICAgICAgICAgICAgICAgICAgICAvL3NvbWUgdXNlIGEgZmlsZSBuYW1lLgogICAgICAgICAgICAgICAgICAgICAgICBjb25maWcucGtnc1tuYW1lXSA9IHBrZ09iai5uYW1lICsgJy8nICsgKHBrZ09iai5tYWluIHx8ICdtYWluJykKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC5yZXBsYWNlKGN1cnJEaXJSZWdFeHAsICcnKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLnJlcGxhY2UoanNTdWZmaXhSZWdFeHAsICcnKTsKICAgICAgICAgICAgICAgICAgICB9KTsKICAgICAgICAgICAgICAgIH0KCiAgICAgICAgICAgICAgICAvL0lmIHRoZXJlIGFyZSBhbnkgIndhaXRpbmcgdG8gZXhlY3V0ZSIgbW9kdWxlcyBpbiB0aGUgcmVnaXN0cnksCiAgICAgICAgICAgICAgICAvL3VwZGF0ZSB0aGUgbWFwcyBmb3IgdGhlbSwgc2luY2UgdGhlaXIgaW5mbywgbGlrZSBVUkxzIHRvIGxvYWQsCiAgICAgICAgICAgICAgICAvL21heSBoYXZlIGNoYW5nZWQuCiAgICAgICAgICAgICAgICBlYWNoUHJvcChyZWdpc3RyeSwgZnVuY3Rpb24gKG1vZCwgaWQpIHsKICAgICAgICAgICAgICAgICAgICAvL0lmIG1vZHVsZSBhbHJlYWR5IGhhcyBpbml0IGNhbGxlZCwgc2luY2UgaXQgaXMgdG9vCiAgICAgICAgICAgICAgICAgICAgLy9sYXRlIHRvIG1vZGlmeSB0aGVtLCBhbmQgaWdub3JlIHVubm9ybWFsaXplZCBvbmVzCiAgICAgICAgICAgICAgICAgICAgLy9zaW5jZSB0aGV5IGFyZSB0cmFuc2llbnQuCiAgICAgICAgICAgICAgICAgICAgaWYgKCFtb2QuaW5pdGVkICYmICFtb2QubWFwLnVubm9ybWFsaXplZCkgewogICAgICAgICAgICAgICAgICAgICAgICBtb2QubWFwID0gbWFrZU1vZHVsZU1hcChpZCwgbnVsbCwgdHJ1ZSk7CiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgfSk7CgogICAgICAgICAgICAgICAgLy9JZiBhIGRlcHMgYXJyYXkgb3IgYSBjb25maWcgY2FsbGJhY2sgaXMgc3BlY2lmaWVkLCB0aGVuIGNhbGwKICAgICAgICAgICAgICAgIC8vcmVxdWlyZSB3aXRoIHRob3NlIGFyZ3MuIFRoaXMgaXMgdXNlZnVsIHdoZW4gcmVxdWlyZSBpcyBkZWZpbmVkIGFzIGEKICAgICAgICAgICAgICAgIC8vY29uZmlnIG9iamVjdCBiZWZvcmUgcmVxdWlyZS5qcyBpcyBsb2FkZWQuCiAgICAgICAgICAgICAgICBpZiAoY2ZnLmRlcHMgfHwgY2ZnLmNhbGxiYWNrKSB7CiAgICAgICAgICAgICAgICAgICAgY29udGV4dC5yZXF1aXJlKGNmZy5kZXBzIHx8IFtdLCBjZmcuY2FsbGJhY2spOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9LAoKICAgICAgICAgICAgbWFrZVNoaW1FeHBvcnRzOiBmdW5jdGlvbiAodmFsdWUpIHsKICAgICAgICAgICAgICAgIGZ1bmN0aW9uIGZuKCkgewogICAgICAgICAgICAgICAgICAgIHZhciByZXQ7CiAgICAgICAgICAgICAgICAgICAgaWYgKHZhbHVlLmluaXQpIHsKICAgICAgICAgICAgICAgICAgICAgICAgcmV0ID0gdmFsdWUuaW5pdC5hcHBseShnbG9iYWwsIGFyZ3VtZW50cyk7CiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgIHJldHVybiByZXQgfHwgKHZhbHVlLmV4cG9ydHMgJiYgZ2V0R2xvYmFsKHZhbHVlLmV4cG9ydHMpKTsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIHJldHVybiBmbjsKICAgICAgICAgICAgfSwKCiAgICAgICAgICAgIG1ha2VSZXF1aXJlOiBmdW5jdGlvbiAocmVsTWFwLCBvcHRpb25zKSB7CiAgICAgICAgICAgICAgICBvcHRpb25zID0gb3B0aW9ucyB8fCB7fTsKCiAgICAgICAgICAgICAgICBmdW5jdGlvbiBsb2NhbFJlcXVpcmUoZGVwcywgY2FsbGJhY2ssIGVycmJhY2spIHsKICAgICAgICAgICAgICAgICAgICB2YXIgaWQsIG1hcCwgcmVxdWlyZU1vZDsKCiAgICAgICAgICAgICAgICAgICAgaWYgKG9wdGlvbnMuZW5hYmxlQnVpbGRDYWxsYmFjayAmJiBjYWxsYmFjayAmJiBpc0Z1bmN0aW9uKGNhbGxiYWNrKSkgewogICAgICAgICAgICAgICAgICAgICAgICBjYWxsYmFjay5fX3JlcXVpcmVKc0J1aWxkID0gdHJ1ZTsKICAgICAgICAgICAgICAgICAgICB9CgogICAgICAgICAgICAgICAgICAgIGlmICh0eXBlb2YgZGVwcyA9PT0gJ3N0cmluZycpIHsKICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGlzRnVuY3Rpb24oY2FsbGJhY2spKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAvL0ludmFsaWQgY2FsbAogICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIG9uRXJyb3IobWFrZUVycm9yKCdyZXF1aXJlYXJncycsICdJbnZhbGlkIHJlcXVpcmUgY2FsbCcpLCBlcnJiYWNrKTsKICAgICAgICAgICAgICAgICAgICAgICAgfQoKICAgICAgICAgICAgICAgICAgICAgICAgLy9JZiByZXF1aXJlfGV4cG9ydHN8bW9kdWxlIGFyZSByZXF1ZXN0ZWQsIGdldCB0aGUKICAgICAgICAgICAgICAgICAgICAgICAgLy92YWx1ZSBmb3IgdGhlbSBmcm9tIHRoZSBzcGVjaWFsIGhhbmRsZXJzLiBDYXZlYXQ6CiAgICAgICAgICAgICAgICAgICAgICAgIC8vdGhpcyBvbmx5IHdvcmtzIHdoaWxlIG1vZHVsZSBpcyBiZWluZyBkZWZpbmVkLgogICAgICAgICAgICAgICAgICAgICAgICBpZiAocmVsTWFwICYmIGhhc1Byb3AoaGFuZGxlcnMsIGRlcHMpKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gaGFuZGxlcnNbZGVwc10ocmVnaXN0cnlbcmVsTWFwLmlkXSk7CiAgICAgICAgICAgICAgICAgICAgICAgIH0KCiAgICAgICAgICAgICAgICAgICAgICAgIC8vU3luY2hyb25vdXMgYWNjZXNzIHRvIG9uZSBtb2R1bGUuIElmIHJlcXVpcmUuZ2V0IGlzCiAgICAgICAgICAgICAgICAgICAgICAgIC8vYXZhaWxhYmxlIChhcyBpbiB0aGUgTm9kZSBhZGFwdGVyKSwgcHJlZmVyIHRoYXQuCiAgICAgICAgICAgICAgICAgICAgICAgIGlmIChyZXEuZ2V0KSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gcmVxLmdldChjb250ZXh0LCBkZXBzLCByZWxNYXAsIGxvY2FsUmVxdWlyZSk7CiAgICAgICAgICAgICAgICAgICAgICAgIH0KCiAgICAgICAgICAgICAgICAgICAgICAgIC8vTm9ybWFsaXplIG1vZHVsZSBuYW1lLCBpZiBpdCBjb250YWlucyAuIG9yIC4uCiAgICAgICAgICAgICAgICAgICAgICAgIG1hcCA9IG1ha2VNb2R1bGVNYXAoZGVwcywgcmVsTWFwLCBmYWxzZSwgdHJ1ZSk7CiAgICAgICAgICAgICAgICAgICAgICAgIGlkID0gbWFwLmlkOwoKICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCFoYXNQcm9wKGRlZmluZWQsIGlkKSkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIG9uRXJyb3IobWFrZUVycm9yKCdub3Rsb2FkZWQnLCAnTW9kdWxlIG5hbWUgIicgKwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWQgKwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJyIgaGFzIG5vdCBiZWVuIGxvYWRlZCB5ZXQgZm9yIGNvbnRleHQ6ICcgKwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29udGV4dE5hbWUgKwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKHJlbE1hcCA/ICcnIDogJy4gVXNlIHJlcXVpcmUoW10pJykpKTsKICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gZGVmaW5lZFtpZF07CiAgICAgICAgICAgICAgICAgICAgfQoKICAgICAgICAgICAgICAgICAgICAvL0dyYWIgZGVmaW5lcyB3YWl0aW5nIGluIHRoZSBnbG9iYWwgcXVldWUuCiAgICAgICAgICAgICAgICAgICAgaW50YWtlRGVmaW5lcygpOwoKICAgICAgICAgICAgICAgICAgICAvL01hcmsgYWxsIHRoZSBkZXBlbmRlbmNpZXMgYXMgbmVlZGluZyB0byBiZSBsb2FkZWQuCiAgICAgICAgICAgICAgICAgICAgY29udGV4dC5uZXh0VGljayhmdW5jdGlvbiAoKSB7CiAgICAgICAgICAgICAgICAgICAgICAgIC8vU29tZSBkZWZpbmVzIGNvdWxkIGhhdmUgYmVlbiBhZGRlZCBzaW5jZSB0aGUKICAgICAgICAgICAgICAgICAgICAgICAgLy9yZXF1aXJlIGNhbGwsIGNvbGxlY3QgdGhlbS4KICAgICAgICAgICAgICAgICAgICAgICAgaW50YWtlRGVmaW5lcygpOwoKICAgICAgICAgICAgICAgICAgICAgICAgcmVxdWlyZU1vZCA9IGdldE1vZHVsZShtYWtlTW9kdWxlTWFwKG51bGwsIHJlbE1hcCkpOwoKICAgICAgICAgICAgICAgICAgICAgICAgLy9TdG9yZSBpZiBtYXAgY29uZmlnIHNob3VsZCBiZSBhcHBsaWVkIHRvIHRoaXMgcmVxdWlyZQogICAgICAgICAgICAgICAgICAgICAgICAvL2NhbGwgZm9yIGRlcGVuZGVuY2llcy4KICAgICAgICAgICAgICAgICAgICAgICAgcmVxdWlyZU1vZC5za2lwTWFwID0gb3B0aW9ucy5za2lwTWFwOwoKICAgICAgICAgICAgICAgICAgICAgICAgcmVxdWlyZU1vZC5pbml0KGRlcHMsIGNhbGxiYWNrLCBlcnJiYWNrLCB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbmFibGVkOiB0cnVlCiAgICAgICAgICAgICAgICAgICAgICAgIH0pOwoKICAgICAgICAgICAgICAgICAgICAgICAgY2hlY2tMb2FkZWQoKTsKICAgICAgICAgICAgICAgICAgICB9KTsKCiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGxvY2FsUmVxdWlyZTsKICAgICAgICAgICAgICAgIH0KCiAgICAgICAgICAgICAgICBtaXhpbihsb2NhbFJlcXVpcmUsIHsKICAgICAgICAgICAgICAgICAgICBpc0Jyb3dzZXI6IGlzQnJvd3NlciwKCiAgICAgICAgICAgICAgICAgICAgLyoqCiAgICAgICAgICAgICAgICAgICAgICogQ29udmVydHMgYSBtb2R1bGUgbmFtZSArIC5leHRlbnNpb24gaW50byBhbiBVUkwgcGF0aC4KICAgICAgICAgICAgICAgICAgICAgKiAqUmVxdWlyZXMqIHRoZSB1c2Ugb2YgYSBtb2R1bGUgbmFtZS4gSXQgZG9lcyBub3Qgc3VwcG9ydCB1c2luZwogICAgICAgICAgICAgICAgICAgICAqIHBsYWluIFVSTHMgbGlrZSBuYW1lVG9VcmwuCiAgICAgICAgICAgICAgICAgICAgICovCiAgICAgICAgICAgICAgICAgICAgdG9Vcmw6IGZ1bmN0aW9uIChtb2R1bGVOYW1lUGx1c0V4dCkgewogICAgICAgICAgICAgICAgICAgICAgICB2YXIgZXh0LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgaW5kZXggPSBtb2R1bGVOYW1lUGx1c0V4dC5sYXN0SW5kZXhPZignLicpLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgc2VnbWVudCA9IG1vZHVsZU5hbWVQbHVzRXh0LnNwbGl0KCcvJylbMF0sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpc1JlbGF0aXZlID0gc2VnbWVudCA9PT0gJy4nIHx8IHNlZ21lbnQgPT09ICcuLic7CgogICAgICAgICAgICAgICAgICAgICAgICAvL0hhdmUgYSBmaWxlIGV4dGVuc2lvbiBhbGlhcywgYW5kIGl0IGlzIG5vdCB0aGUKICAgICAgICAgICAgICAgICAgICAgICAgLy9kb3RzIGZyb20gYSByZWxhdGl2ZSBwYXRoLgogICAgICAgICAgICAgICAgICAgICAgICBpZiAoaW5kZXggIT09IC0xICYmICghaXNSZWxhdGl2ZSB8fCBpbmRleCA+IDEpKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBleHQgPSBtb2R1bGVOYW1lUGx1c0V4dC5zdWJzdHJpbmcoaW5kZXgsIG1vZHVsZU5hbWVQbHVzRXh0Lmxlbmd0aCk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBtb2R1bGVOYW1lUGx1c0V4dCA9IG1vZHVsZU5hbWVQbHVzRXh0LnN1YnN0cmluZygwLCBpbmRleCk7CiAgICAgICAgICAgICAgICAgICAgICAgIH0KCiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBjb250ZXh0Lm5hbWVUb1VybChub3JtYWxpemUobW9kdWxlTmFtZVBsdXNFeHQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlbE1hcCAmJiByZWxNYXAuaWQsIHRydWUpLCBleHQsICB0cnVlKTsKICAgICAgICAgICAgICAgICAgICB9LAoKICAgICAgICAgICAgICAgICAgICBkZWZpbmVkOiBmdW5jdGlvbiAoaWQpIHsKICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGhhc1Byb3AoZGVmaW5lZCwgbWFrZU1vZHVsZU1hcChpZCwgcmVsTWFwLCBmYWxzZSwgdHJ1ZSkuaWQpOwogICAgICAgICAgICAgICAgICAgIH0sCgogICAgICAgICAgICAgICAgICAgIHNwZWNpZmllZDogZnVuY3Rpb24gKGlkKSB7CiAgICAgICAgICAgICAgICAgICAgICAgIGlkID0gbWFrZU1vZHVsZU1hcChpZCwgcmVsTWFwLCBmYWxzZSwgdHJ1ZSkuaWQ7CiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBoYXNQcm9wKGRlZmluZWQsIGlkKSB8fCBoYXNQcm9wKHJlZ2lzdHJ5LCBpZCk7CiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgfSk7CgogICAgICAgICAgICAgICAgLy9Pbmx5IGFsbG93IHVuZGVmIG9uIHRvcCBsZXZlbCByZXF1aXJlIGNhbGxzCiAgICAgICAgICAgICAgICBpZiAoIXJlbE1hcCkgewogICAgICAgICAgICAgICAgICAgIGxvY2FsUmVxdWlyZS51bmRlZiA9IGZ1bmN0aW9uIChpZCkgewogICAgICAgICAgICAgICAgICAgICAgICAvL0JpbmQgYW55IHdhaXRpbmcgZGVmaW5lKCkgY2FsbHMgdG8gdGhpcyBjb250ZXh0LAogICAgICAgICAgICAgICAgICAgICAgICAvL2ZpeCBmb3IgIzQwOAogICAgICAgICAgICAgICAgICAgICAgICB0YWtlR2xvYmFsUXVldWUoKTsKCiAgICAgICAgICAgICAgICAgICAgICAgIHZhciBtYXAgPSBtYWtlTW9kdWxlTWFwKGlkLCByZWxNYXAsIHRydWUpLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgbW9kID0gZ2V0T3duKHJlZ2lzdHJ5LCBpZCk7CgogICAgICAgICAgICAgICAgICAgICAgICBtb2QudW5kZWZlZCA9IHRydWU7CiAgICAgICAgICAgICAgICAgICAgICAgIHJlbW92ZVNjcmlwdChpZCk7CgogICAgICAgICAgICAgICAgICAgICAgICBkZWxldGUgZGVmaW5lZFtpZF07CiAgICAgICAgICAgICAgICAgICAgICAgIGRlbGV0ZSB1cmxGZXRjaGVkW21hcC51cmxdOwogICAgICAgICAgICAgICAgICAgICAgICBkZWxldGUgdW5kZWZFdmVudHNbaWRdOwoKICAgICAgICAgICAgICAgICAgICAgICAgLy9DbGVhbiBxdWV1ZWQgZGVmaW5lcyB0b28uIEdvIGJhY2t3YXJkcwogICAgICAgICAgICAgICAgICAgICAgICAvL2luIGFycmF5IHNvIHRoYXQgdGhlIHNwbGljZXMgZG8gbm90CiAgICAgICAgICAgICAgICAgICAgICAgIC8vbWVzcyB1cCB0aGUgaXRlcmF0aW9uLgogICAgICAgICAgICAgICAgICAgICAgICBlYWNoUmV2ZXJzZShkZWZRdWV1ZSwgZnVuY3Rpb24oYXJncywgaSkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGFyZ3NbMF0gPT09IGlkKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGVmUXVldWUuc3BsaWNlKGksIDEpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICB9KTsKICAgICAgICAgICAgICAgICAgICAgICAgZGVsZXRlIGNvbnRleHQuZGVmUXVldWVNYXBbaWRdOwoKICAgICAgICAgICAgICAgICAgICAgICAgaWYgKG1vZCkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgLy9Ib2xkIG9uIHRvIGxpc3RlbmVycyBpbiBjYXNlIHRoZQogICAgICAgICAgICAgICAgICAgICAgICAgICAgLy9tb2R1bGUgd2lsbCBiZSBhdHRlbXB0ZWQgdG8gYmUgcmVsb2FkZWQKICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vdXNpbmcgYSBkaWZmZXJlbnQgY29uZmlnLgogICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKG1vZC5ldmVudHMuZGVmaW5lZCkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVuZGVmRXZlbnRzW2lkXSA9IG1vZC5ldmVudHM7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CgogICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xlYW5SZWdpc3RyeShpZCk7CiAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICB9OwogICAgICAgICAgICAgICAgfQoKICAgICAgICAgICAgICAgIHJldHVybiBsb2NhbFJlcXVpcmU7CiAgICAgICAgICAgIH0sCgogICAgICAgICAgICAvKioKICAgICAgICAgICAgICogQ2FsbGVkIHRvIGVuYWJsZSBhIG1vZHVsZSBpZiBpdCBpcyBzdGlsbCBpbiB0aGUgcmVnaXN0cnkKICAgICAgICAgICAgICogYXdhaXRpbmcgZW5hYmxlbWVudC4gQSBzZWNvbmQgYXJnLCBwYXJlbnQsIHRoZSBwYXJlbnQgbW9kdWxlLAogICAgICAgICAgICAgKiBpcyBwYXNzZWQgaW4gZm9yIGNvbnRleHQsIHdoZW4gdGhpcyBtZXRob2QgaXMgb3ZlcnJpZGRlbiBieQogICAgICAgICAgICAgKiB0aGUgb3B0aW1pemVyLiBOb3Qgc2hvd24gaGVyZSB0byBrZWVwIGNvZGUgY29tcGFjdC4KICAgICAgICAgICAgICovCiAgICAgICAgICAgIGVuYWJsZTogZnVuY3Rpb24gKGRlcE1hcCkgewogICAgICAgICAgICAgICAgdmFyIG1vZCA9IGdldE93bihyZWdpc3RyeSwgZGVwTWFwLmlkKTsKICAgICAgICAgICAgICAgIGlmIChtb2QpIHsKICAgICAgICAgICAgICAgICAgICBnZXRNb2R1bGUoZGVwTWFwKS5lbmFibGUoKTsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfSwKCiAgICAgICAgICAgIC8qKgogICAgICAgICAgICAgKiBJbnRlcm5hbCBtZXRob2QgdXNlZCBieSBlbnZpcm9ubWVudCBhZGFwdGVycyB0byBjb21wbGV0ZSBhIGxvYWQgZXZlbnQuCiAgICAgICAgICAgICAqIEEgbG9hZCBldmVudCBjb3VsZCBiZSBhIHNjcmlwdCBsb2FkIG9yIGp1c3QgYSBsb2FkIHBhc3MgZnJvbSBhIHN5bmNocm9ub3VzCiAgICAgICAgICAgICAqIGxvYWQgY2FsbC4KICAgICAgICAgICAgICogQHBhcmFtIHtTdHJpbmd9IG1vZHVsZU5hbWUgdGhlIG5hbWUgb2YgdGhlIG1vZHVsZSB0byBwb3RlbnRpYWxseSBjb21wbGV0ZS4KICAgICAgICAgICAgICovCiAgICAgICAgICAgIGNvbXBsZXRlTG9hZDogZnVuY3Rpb24gKG1vZHVsZU5hbWUpIHsKICAgICAgICAgICAgICAgIHZhciBmb3VuZCwgYXJncywgbW9kLAogICAgICAgICAgICAgICAgICAgIHNoaW0gPSBnZXRPd24oY29uZmlnLnNoaW0sIG1vZHVsZU5hbWUpIHx8IHt9LAogICAgICAgICAgICAgICAgICAgIHNoRXhwb3J0cyA9IHNoaW0uZXhwb3J0czsKCiAgICAgICAgICAgICAgICB0YWtlR2xvYmFsUXVldWUoKTsKCiAgICAgICAgICAgICAgICB3aGlsZSAoZGVmUXVldWUubGVuZ3RoKSB7CiAgICAgICAgICAgICAgICAgICAgYXJncyA9IGRlZlF1ZXVlLnNoaWZ0KCk7CiAgICAgICAgICAgICAgICAgICAgaWYgKGFyZ3NbMF0gPT09IG51bGwpIHsKICAgICAgICAgICAgICAgICAgICAgICAgYXJnc1swXSA9IG1vZHVsZU5hbWU7CiAgICAgICAgICAgICAgICAgICAgICAgIC8vSWYgYWxyZWFkeSBmb3VuZCBhbiBhbm9ueW1vdXMgbW9kdWxlIGFuZCBib3VuZCBpdAogICAgICAgICAgICAgICAgICAgICAgICAvL3RvIHRoaXMgbmFtZSwgdGhlbiB0aGlzIGlzIHNvbWUgb3RoZXIgYW5vbiBtb2R1bGUKICAgICAgICAgICAgICAgICAgICAgICAgLy93YWl0aW5nIGZvciBpdHMgY29tcGxldGVMb2FkIHRvIGZpcmUuCiAgICAgICAgICAgICAgICAgICAgICAgIGlmIChmb3VuZCkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgZm91bmQgPSB0cnVlOwogICAgICAgICAgICAgICAgICAgIH0gZWxzZSBpZiAoYXJnc1swXSA9PT0gbW9kdWxlTmFtZSkgewogICAgICAgICAgICAgICAgICAgICAgICAvL0ZvdW5kIG1hdGNoaW5nIGRlZmluZSBjYWxsIGZvciB0aGlzIHNjcmlwdCEKICAgICAgICAgICAgICAgICAgICAgICAgZm91bmQgPSB0cnVlOwogICAgICAgICAgICAgICAgICAgIH0KCiAgICAgICAgICAgICAgICAgICAgY2FsbEdldE1vZHVsZShhcmdzKTsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIGNvbnRleHQuZGVmUXVldWVNYXAgPSB7fTsKCiAgICAgICAgICAgICAgICAvL0RvIHRoaXMgYWZ0ZXIgdGhlIGN5Y2xlIG9mIGNhbGxHZXRNb2R1bGUgaW4gY2FzZSB0aGUgcmVzdWx0CiAgICAgICAgICAgICAgICAvL29mIHRob3NlIGNhbGxzL2luaXQgY2FsbHMgY2hhbmdlcyB0aGUgcmVnaXN0cnkuCiAgICAgICAgICAgICAgICBtb2QgPSBnZXRPd24ocmVnaXN0cnksIG1vZHVsZU5hbWUpOwoKICAgICAgICAgICAgICAgIGlmICghZm91bmQgJiYgIWhhc1Byb3AoZGVmaW5lZCwgbW9kdWxlTmFtZSkgJiYgbW9kICYmICFtb2QuaW5pdGVkKSB7CiAgICAgICAgICAgICAgICAgICAgaWYgKGNvbmZpZy5lbmZvcmNlRGVmaW5lICYmICghc2hFeHBvcnRzIHx8ICFnZXRHbG9iYWwoc2hFeHBvcnRzKSkpIHsKICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGhhc1BhdGhGYWxsYmFjayhtb2R1bGVOYW1lKSkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICAgICAgICAgICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIG9uRXJyb3IobWFrZUVycm9yKCdub2RlZmluZScsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdObyBkZWZpbmUgY2FsbCBmb3IgJyArIG1vZHVsZU5hbWUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG51bGwsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFttb2R1bGVOYW1lXSkpOwogICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgICAgICAgICAgICAgLy9BIHNjcmlwdCB0aGF0IGRvZXMgbm90IGNhbGwgZGVmaW5lKCksIHNvIGp1c3Qgc2ltdWxhdGUKICAgICAgICAgICAgICAgICAgICAgICAgLy90aGUgY2FsbCBmb3IgaXQuCiAgICAgICAgICAgICAgICAgICAgICAgIGNhbGxHZXRNb2R1bGUoW21vZHVsZU5hbWUsIChzaGltLmRlcHMgfHwgW10pLCBzaGltLmV4cG9ydHNGbl0pOwogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIH0KCiAgICAgICAgICAgICAgICBjaGVja0xvYWRlZCgpOwogICAgICAgICAgICB9LAoKICAgICAgICAgICAgLyoqCiAgICAgICAgICAgICAqIENvbnZlcnRzIGEgbW9kdWxlIG5hbWUgdG8gYSBmaWxlIHBhdGguIFN1cHBvcnRzIGNhc2VzIHdoZXJlCiAgICAgICAgICAgICAqIG1vZHVsZU5hbWUgbWF5IGFjdHVhbGx5IGJlIGp1c3QgYW4gVVJMLgogICAgICAgICAgICAgKiBOb3RlIHRoYXQgaXQgKipkb2VzIG5vdCoqIGNhbGwgbm9ybWFsaXplIG9uIHRoZSBtb2R1bGVOYW1lLAogICAgICAgICAgICAgKiBpdCBpcyBhc3N1bWVkIHRvIGhhdmUgYWxyZWFkeSBiZWVuIG5vcm1hbGl6ZWQuIFRoaXMgaXMgYW4KICAgICAgICAgICAgICogaW50ZXJuYWwgQVBJLCBub3QgYSBwdWJsaWMgb25lLiBVc2UgdG9VcmwgZm9yIHRoZSBwdWJsaWMgQVBJLgogICAgICAgICAgICAgKi8KICAgICAgICAgICAgbmFtZVRvVXJsOiBmdW5jdGlvbiAobW9kdWxlTmFtZSwgZXh0LCBza2lwRXh0KSB7CiAgICAgICAgICAgICAgICB2YXIgcGF0aHMsIHN5bXMsIGksIHBhcmVudE1vZHVsZSwgdXJsLAogICAgICAgICAgICAgICAgICAgIHBhcmVudFBhdGgsIGJ1bmRsZUlkLAogICAgICAgICAgICAgICAgICAgIHBrZ01haW4gPSBnZXRPd24oY29uZmlnLnBrZ3MsIG1vZHVsZU5hbWUpOwoKICAgICAgICAgICAgICAgIGlmIChwa2dNYWluKSB7CiAgICAgICAgICAgICAgICAgICAgbW9kdWxlTmFtZSA9IHBrZ01haW47CiAgICAgICAgICAgICAgICB9CgogICAgICAgICAgICAgICAgYnVuZGxlSWQgPSBnZXRPd24oYnVuZGxlc01hcCwgbW9kdWxlTmFtZSk7CgogICAgICAgICAgICAgICAgaWYgKGJ1bmRsZUlkKSB7CiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGNvbnRleHQubmFtZVRvVXJsKGJ1bmRsZUlkLCBleHQsIHNraXBFeHQpOwogICAgICAgICAgICAgICAgfQoKICAgICAgICAgICAgICAgIC8vSWYgYSBjb2xvbiBpcyBpbiB0aGUgVVJMLCBpdCBpbmRpY2F0ZXMgYSBwcm90b2NvbCBpcyB1c2VkIGFuZCBpdCBpcyBqdXN0CiAgICAgICAgICAgICAgICAvL2FuIFVSTCB0byBhIGZpbGUsIG9yIGlmIGl0IHN0YXJ0cyB3aXRoIGEgc2xhc2gsIGNvbnRhaW5zIGEgcXVlcnkgYXJnIChpLmUuID8pCiAgICAgICAgICAgICAgICAvL29yIGVuZHMgd2l0aCAuanMsIHRoZW4gYXNzdW1lIHRoZSB1c2VyIG1lYW50IHRvIHVzZSBhbiB1cmwgYW5kIG5vdCBhIG1vZHVsZSBpZC4KICAgICAgICAgICAgICAgIC8vVGhlIHNsYXNoIGlzIGltcG9ydGFudCBmb3IgcHJvdG9jb2wtbGVzcyBVUkxzIGFzIHdlbGwgYXMgZnVsbCBwYXRocy4KICAgICAgICAgICAgICAgIGlmIChyZXEuanNFeHRSZWdFeHAudGVzdChtb2R1bGVOYW1lKSkgewogICAgICAgICAgICAgICAgICAgIC8vSnVzdCBhIHBsYWluIHBhdGgsIG5vdCBtb2R1bGUgbmFtZSBsb29rdXAsIHNvIGp1c3QgcmV0dXJuIGl0LgogICAgICAgICAgICAgICAgICAgIC8vQWRkIGV4dGVuc2lvbiBpZiBpdCBpcyBpbmNsdWRlZC4gVGhpcyBpcyBhIGJpdCB3b25reSwgb25seSBub24tLmpzIHRoaW5ncyBwYXNzCiAgICAgICAgICAgICAgICAgICAgLy9hbiBleHRlbnNpb24sIHRoaXMgbWV0aG9kIHByb2JhYmx5IG5lZWRzIHRvIGJlIHJld29ya2VkLgogICAgICAgICAgICAgICAgICAgIHVybCA9IG1vZHVsZU5hbWUgKyAoZXh0IHx8ICcnKTsKICAgICAgICAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICAgICAgICAgLy9BIG1vZHVsZSB0aGF0IG5lZWRzIHRvIGJlIGNvbnZlcnRlZCB0byBhIHBhdGguCiAgICAgICAgICAgICAgICAgICAgcGF0aHMgPSBjb25maWcucGF0aHM7CgogICAgICAgICAgICAgICAgICAgIHN5bXMgPSBtb2R1bGVOYW1lLnNwbGl0KCcvJyk7CiAgICAgICAgICAgICAgICAgICAgLy9Gb3IgZWFjaCBtb2R1bGUgbmFtZSBzZWdtZW50LCBzZWUgaWYgdGhlcmUgaXMgYSBwYXRoCiAgICAgICAgICAgICAgICAgICAgLy9yZWdpc3RlcmVkIGZvciBpdC4gU3RhcnQgd2l0aCBtb3N0IHNwZWNpZmljIG5hbWUKICAgICAgICAgICAgICAgICAgICAvL2FuZCB3b3JrIHVwIGZyb20gaXQuCiAgICAgICAgICAgICAgICAgICAgZm9yIChpID0gc3ltcy5sZW5ndGg7IGkgPiAwOyBpIC09IDEpIHsKICAgICAgICAgICAgICAgICAgICAgICAgcGFyZW50TW9kdWxlID0gc3ltcy5zbGljZSgwLCBpKS5qb2luKCcvJyk7CgogICAgICAgICAgICAgICAgICAgICAgICBwYXJlbnRQYXRoID0gZ2V0T3duKHBhdGhzLCBwYXJlbnRNb2R1bGUpOwogICAgICAgICAgICAgICAgICAgICAgICBpZiAocGFyZW50UGF0aCkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgLy9JZiBhbiBhcnJheSwgaXQgbWVhbnMgdGhlcmUgYXJlIGEgZmV3IGNob2ljZXMsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAvL0Nob29zZSB0aGUgb25lIHRoYXQgaXMgZGVzaXJlZAogICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGlzQXJyYXkocGFyZW50UGF0aCkpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwYXJlbnRQYXRoID0gcGFyZW50UGF0aFswXTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN5bXMuc3BsaWNlKDAsIGksIHBhcmVudFBhdGgpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICB9CgogICAgICAgICAgICAgICAgICAgIC8vSm9pbiB0aGUgcGF0aCBwYXJ0cyB0b2dldGhlciwgdGhlbiBmaWd1cmUgb3V0IGlmIGJhc2VVcmwgaXMgbmVlZGVkLgogICAgICAgICAgICAgICAgICAgIHVybCA9IHN5bXMuam9pbignLycpOwogICAgICAgICAgICAgICAgICAgIHVybCArPSAoZXh0IHx8ICgvXmRhdGFcOnxeYmxvYlw6fFw/Ly50ZXN0KHVybCkgfHwgc2tpcEV4dCA/ICcnIDogJy5qcycpKTsKICAgICAgICAgICAgICAgICAgICB1cmwgPSAodXJsLmNoYXJBdCgwKSA9PT0gJy8nIHx8IHVybC5tYXRjaCgvXltcd1wrXC5cLV0rOi8pID8gJycgOiBjb25maWcuYmFzZVVybCkgKyB1cmw7CiAgICAgICAgICAgICAgICB9CgogICAgICAgICAgICAgICAgcmV0dXJuIGNvbmZpZy51cmxBcmdzICYmICEvXmJsb2JcOi8udGVzdCh1cmwpID8KICAgICAgICAgICAgICAgICAgICAgICB1cmwgKyBjb25maWcudXJsQXJncyhtb2R1bGVOYW1lLCB1cmwpIDogdXJsOwogICAgICAgICAgICB9LAoKICAgICAgICAgICAgLy9EZWxlZ2F0ZXMgdG8gcmVxLmxvYWQuIEJyb2tlbiBvdXQgYXMgYSBzZXBhcmF0ZSBmdW5jdGlvbiB0bwogICAgICAgICAgICAvL2FsbG93IG92ZXJyaWRpbmcgaW4gdGhlIG9wdGltaXplci4KICAgICAgICAgICAgbG9hZDogZnVuY3Rpb24gKGlkLCB1cmwpIHsKICAgICAgICAgICAgICAgIHJlcS5sb2FkKGNvbnRleHQsIGlkLCB1cmwpOwogICAgICAgICAgICB9LAoKICAgICAgICAgICAgLyoqCiAgICAgICAgICAgICAqIEV4ZWN1dGVzIGEgbW9kdWxlIGNhbGxiYWNrIGZ1bmN0aW9uLiBCcm9rZW4gb3V0IGFzIGEgc2VwYXJhdGUgZnVuY3Rpb24KICAgICAgICAgICAgICogc29sZWx5IHRvIGFsbG93IHRoZSBidWlsZCBzeXN0ZW0gdG8gc2VxdWVuY2UgdGhlIGZpbGVzIGluIHRoZSBidWlsdAogICAgICAgICAgICAgKiBsYXllciBpbiB0aGUgcmlnaHQgc2VxdWVuY2UuCiAgICAgICAgICAgICAqCiAgICAgICAgICAgICAqIEBwcml2YXRlCiAgICAgICAgICAgICAqLwogICAgICAgICAgICBleGVjQ2I6IGZ1bmN0aW9uIChuYW1lLCBjYWxsYmFjaywgYXJncywgZXhwb3J0cykgewogICAgICAgICAgICAgICAgcmV0dXJuIGNhbGxiYWNrLmFwcGx5KGV4cG9ydHMsIGFyZ3MpOwogICAgICAgICAgICB9LAoKICAgICAgICAgICAgLyoqCiAgICAgICAgICAgICAqIGNhbGxiYWNrIGZvciBzY3JpcHQgbG9hZHMsIHVzZWQgdG8gY2hlY2sgc3RhdHVzIG9mIGxvYWRpbmcuCiAgICAgICAgICAgICAqCiAgICAgICAgICAgICAqIEBwYXJhbSB7RXZlbnR9IGV2dCB0aGUgZXZlbnQgZnJvbSB0aGUgYnJvd3NlciBmb3IgdGhlIHNjcmlwdAogICAgICAgICAgICAgKiB0aGF0IHdhcyBsb2FkZWQuCiAgICAgICAgICAgICAqLwogICAgICAgICAgICBvblNjcmlwdExvYWQ6IGZ1bmN0aW9uIChldnQpIHsKICAgICAgICAgICAgICAgIC8vVXNpbmcgY3VycmVudFRhcmdldCBpbnN0ZWFkIG9mIHRhcmdldCBmb3IgRmlyZWZveCAyLjAncyBzYWtlLiBOb3QKICAgICAgICAgICAgICAgIC8vYWxsIG9sZCBicm93c2VycyB3aWxsIGJlIHN1cHBvcnRlZCwgYnV0IHRoaXMgb25lIHdhcyBlYXN5IGVub3VnaAogICAgICAgICAgICAgICAgLy90byBzdXBwb3J0IGFuZCBzdGlsbCBtYWtlcyBzZW5zZS4KICAgICAgICAgICAgICAgIGlmIChldnQudHlwZSA9PT0gJ2xvYWQnIHx8CiAgICAgICAgICAgICAgICAgICAgICAgIChyZWFkeVJlZ0V4cC50ZXN0KChldnQuY3VycmVudFRhcmdldCB8fCBldnQuc3JjRWxlbWVudCkucmVhZHlTdGF0ZSkpKSB7CiAgICAgICAgICAgICAgICAgICAgLy9SZXNldCBpbnRlcmFjdGl2ZSBzY3JpcHQgc28gYSBzY3JpcHQgbm9kZSBpcyBub3QgaGVsZCBvbnRvIGZvcgogICAgICAgICAgICAgICAgICAgIC8vdG8gbG9uZy4KICAgICAgICAgICAgICAgICAgICBpbnRlcmFjdGl2ZVNjcmlwdCA9IG51bGw7CgogICAgICAgICAgICAgICAgICAgIC8vUHVsbCBvdXQgdGhlIG5hbWUgb2YgdGhlIG1vZHVsZSBhbmQgdGhlIGNvbnRleHQuCiAgICAgICAgICAgICAgICAgICAgdmFyIGRhdGEgPSBnZXRTY3JpcHREYXRhKGV2dCk7CiAgICAgICAgICAgICAgICAgICAgY29udGV4dC5jb21wbGV0ZUxvYWQoZGF0YS5pZCk7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0sCgogICAgICAgICAgICAvKioKICAgICAgICAgICAgICogQ2FsbGJhY2sgZm9yIHNjcmlwdCBlcnJvcnMuCiAgICAgICAgICAgICAqLwogICAgICAgICAgICBvblNjcmlwdEVycm9yOiBmdW5jdGlvbiAoZXZ0KSB7CiAgICAgICAgICAgICAgICB2YXIgZGF0YSA9IGdldFNjcmlwdERhdGEoZXZ0KTsKICAgICAgICAgICAgICAgIGlmICghaGFzUGF0aEZhbGxiYWNrKGRhdGEuaWQpKSB7CiAgICAgICAgICAgICAgICAgICAgdmFyIHBhcmVudHMgPSBbXTsKICAgICAgICAgICAgICAgICAgICBlYWNoUHJvcChyZWdpc3RyeSwgZnVuY3Rpb24odmFsdWUsIGtleSkgewogICAgICAgICAgICAgICAgICAgICAgICBpZiAoa2V5LmluZGV4T2YoJ19AcicpICE9PSAwKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBlYWNoKHZhbHVlLmRlcE1hcHMsIGZ1bmN0aW9uKGRlcE1hcCkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChkZXBNYXAuaWQgPT09IGRhdGEuaWQpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcGFyZW50cy5wdXNoKGtleSk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiB0cnVlOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pOwogICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgfSk7CiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIG9uRXJyb3IobWFrZUVycm9yKCdzY3JpcHRlcnJvcicsICdTY3JpcHQgZXJyb3IgZm9yICInICsgZGF0YS5pZCArCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChwYXJlbnRzLmxlbmd0aCA/CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICciLCBuZWVkZWQgYnk6ICcgKyBwYXJlbnRzLmpvaW4oJywgJykgOgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnIicpLCBldnQsIFtkYXRhLmlkXSkpOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9CiAgICAgICAgfTsKCiAgICAgICAgY29udGV4dC5yZXF1aXJlID0gY29udGV4dC5tYWtlUmVxdWlyZSgpOwogICAgICAgIHJldHVybiBjb250ZXh0OwogICAgfQoKICAgIC8qKgogICAgICogTWFpbiBlbnRyeSBwb2ludC4KICAgICAqCiAgICAgKiBJZiB0aGUgb25seSBhcmd1bWVudCB0byByZXF1aXJlIGlzIGEgc3RyaW5nLCB0aGVuIHRoZSBtb2R1bGUgdGhhdAogICAgICogaXMgcmVwcmVzZW50ZWQgYnkgdGhhdCBzdHJpbmcgaXMgZmV0Y2hlZCBmb3IgdGhlIGFwcHJvcHJpYXRlIGNvbnRleHQuCiAgICAgKgogICAgICogSWYgdGhlIGZpcnN0IGFyZ3VtZW50IGlzIGFuIGFycmF5LCB0aGVuIGl0IHdpbGwgYmUgdHJlYXRlZCBhcyBhbiBhcnJheQogICAgICogb2YgZGVwZW5kZW5jeSBzdHJpbmcgbmFtZXMgdG8gZmV0Y2guIEFuIG9wdGlvbmFsIGZ1bmN0aW9uIGNhbGxiYWNrIGNhbgogICAgICogYmUgc3BlY2lmaWVkIHRvIGV4ZWN1dGUgd2hlbiBhbGwgb2YgdGhvc2UgZGVwZW5kZW5jaWVzIGFyZSBhdmFpbGFibGUuCiAgICAgKgogICAgICogTWFrZSBhIGxvY2FsIHJlcSB2YXJpYWJsZSB0byBoZWxwIENhamEgY29tcGxpYW5jZSAoaXQgYXNzdW1lcyB0aGluZ3MKICAgICAqIG9uIGEgcmVxdWlyZSB0aGF0IGFyZSBub3Qgc3RhbmRhcmRpemVkKSwgYW5kIHRvIGdpdmUgYSBzaG9ydAogICAgICogbmFtZSBmb3IgbWluaWZpY2F0aW9uL2xvY2FsIHNjb3BlIHVzZS4KICAgICAqLwogICAgcmVxID0gcmVxdWlyZWpzID0gZnVuY3Rpb24gKGRlcHMsIGNhbGxiYWNrLCBlcnJiYWNrLCBvcHRpb25hbCkgewoKICAgICAgICAvL0ZpbmQgdGhlIHJpZ2h0IGNvbnRleHQsIHVzZSBkZWZhdWx0CiAgICAgICAgdmFyIGNvbnRleHQsIGNvbmZpZywKICAgICAgICAgICAgY29udGV4dE5hbWUgPSBkZWZDb250ZXh0TmFtZTsKCiAgICAgICAgLy8gRGV0ZXJtaW5lIGlmIGhhdmUgY29uZmlnIG9iamVjdCBpbiB0aGUgY2FsbC4KICAgICAgICBpZiAoIWlzQXJyYXkoZGVwcykgJiYgdHlwZW9mIGRlcHMgIT09ICdzdHJpbmcnKSB7CiAgICAgICAgICAgIC8vIGRlcHMgaXMgYSBjb25maWcgb2JqZWN0CiAgICAgICAgICAgIGNvbmZpZyA9IGRlcHM7CiAgICAgICAgICAgIGlmIChpc0FycmF5KGNhbGxiYWNrKSkgewogICAgICAgICAgICAgICAgLy8gQWRqdXN0IGFyZ3MgaWYgdGhlcmUgYXJlIGRlcGVuZGVuY2llcwogICAgICAgICAgICAgICAgZGVwcyA9IGNhbGxiYWNrOwogICAgICAgICAgICAgICAgY2FsbGJhY2sgPSBlcnJiYWNrOwogICAgICAgICAgICAgICAgZXJyYmFjayA9IG9wdGlvbmFsOwogICAgICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgICAgZGVwcyA9IFtdOwogICAgICAgICAgICB9CiAgICAgICAgfQoKICAgICAgICBpZiAoY29uZmlnICYmIGNvbmZpZy5jb250ZXh0KSB7CiAgICAgICAgICAgIGNvbnRleHROYW1lID0gY29uZmlnLmNvbnRleHQ7CiAgICAgICAgfQoKICAgICAgICBjb250ZXh0ID0gZ2V0T3duKGNvbnRleHRzLCBjb250ZXh0TmFtZSk7CiAgICAgICAgaWYgKCFjb250ZXh0KSB7CiAgICAgICAgICAgIGNvbnRleHQgPSBjb250ZXh0c1tjb250ZXh0TmFtZV0gPSByZXEucy5uZXdDb250ZXh0KGNvbnRleHROYW1lKTsKICAgICAgICB9CgogICAgICAgIGlmIChjb25maWcpIHsKICAgICAgICAgICAgY29udGV4dC5jb25maWd1cmUoY29uZmlnKTsKICAgICAgICB9CgogICAgICAgIHJldHVybiBjb250ZXh0LnJlcXVpcmUoZGVwcywgY2FsbGJhY2ssIGVycmJhY2spOwogICAgfTsKCiAgICAvKioKICAgICAqIFN1cHBvcnQgcmVxdWlyZS5jb25maWcoKSB0byBtYWtlIGl0IGVhc2llciB0byBjb29wZXJhdGUgd2l0aCBvdGhlcgogICAgICogQU1EIGxvYWRlcnMgb24gZ2xvYmFsbHkgYWdyZWVkIG5hbWVzLgogICAgICovCiAgICByZXEuY29uZmlnID0gZnVuY3Rpb24gKGNvbmZpZykgewogICAgICAgIHJldHVybiByZXEoY29uZmlnKTsKICAgIH07CgogICAgLyoqCiAgICAgKiBFeGVjdXRlIHNvbWV0aGluZyBhZnRlciB0aGUgY3VycmVudCB0aWNrCiAgICAgKiBvZiB0aGUgZXZlbnQgbG9vcC4gT3ZlcnJpZGUgZm9yIG90aGVyIGVudnMKICAgICAqIHRoYXQgaGF2ZSBhIGJldHRlciBzb2x1dGlvbiB0aGFuIHNldFRpbWVvdXQuCiAgICAgKiBAcGFyYW0gIHtGdW5jdGlvbn0gZm4gZnVuY3Rpb24gdG8gZXhlY3V0ZSBsYXRlci4KICAgICAqLwogICAgcmVxLm5leHRUaWNrID0gdHlwZW9mIHNldFRpbWVvdXQgIT09ICd1bmRlZmluZWQnID8gZnVuY3Rpb24gKGZuKSB7CiAgICAgICAgc2V0VGltZW91dChmbiwgNCk7CiAgICB9IDogZnVuY3Rpb24gKGZuKSB7IGZuKCk7IH07CgogICAgLyoqCiAgICAgKiBFeHBvcnQgcmVxdWlyZSBhcyBhIGdsb2JhbCwgYnV0IG9ubHkgaWYgaXQgZG9lcyBub3QgYWxyZWFkeSBleGlzdC4KICAgICAqLwogICAgaWYgKCFyZXF1aXJlKSB7CiAgICAgICAgcmVxdWlyZSA9IHJlcTsKICAgIH0KCiAgICByZXEudmVyc2lvbiA9IHZlcnNpb247CgogICAgLy9Vc2VkIHRvIGZpbHRlciBvdXQgZGVwZW5kZW5jaWVzIHRoYXQgYXJlIGFscmVhZHkgcGF0aHMuCiAgICByZXEuanNFeHRSZWdFeHAgPSAvXlwvfDp8XD98XC5qcyQvOwogICAgcmVxLmlzQnJvd3NlciA9IGlzQnJvd3NlcjsKICAgIHMgPSByZXEucyA9IHsKICAgICAgICBjb250ZXh0czogY29udGV4dHMsCiAgICAgICAgbmV3Q29udGV4dDogbmV3Q29udGV4dAogICAgfTsKCiAgICAvL0NyZWF0ZSBkZWZhdWx0IGNvbnRleHQuCiAgICByZXEoe30pOwoKICAgIC8vRXhwb3J0cyBzb21lIGNvbnRleHQtc2Vuc2l0aXZlIG1ldGhvZHMgb24gZ2xvYmFsIHJlcXVpcmUuCiAgICBlYWNoKFsKICAgICAgICAndG9VcmwnLAogICAgICAgICd1bmRlZicsCiAgICAgICAgJ2RlZmluZWQnLAogICAgICAgICdzcGVjaWZpZWQnCiAgICBdLCBmdW5jdGlvbiAocHJvcCkgewogICAgICAgIC8vUmVmZXJlbmNlIGZyb20gY29udGV4dHMgaW5zdGVhZCBvZiBlYXJseSBiaW5kaW5nIHRvIGRlZmF1bHQgY29udGV4dCwKICAgICAgICAvL3NvIHRoYXQgZHVyaW5nIGJ1aWxkcywgdGhlIGxhdGVzdCBpbnN0YW5jZSBvZiB0aGUgZGVmYXVsdCBjb250ZXh0CiAgICAgICAgLy93aXRoIGl0cyBjb25maWcgZ2V0cyB1c2VkLgogICAgICAgIHJlcVtwcm9wXSA9IGZ1bmN0aW9uICgpIHsKICAgICAgICAgICAgdmFyIGN0eCA9IGNvbnRleHRzW2RlZkNvbnRleHROYW1lXTsKICAgICAgICAgICAgcmV0dXJuIGN0eC5yZXF1aXJlW3Byb3BdLmFwcGx5KGN0eCwgYXJndW1lbnRzKTsKICAgICAgICB9OwogICAgfSk7CgogICAgaWYgKGlzQnJvd3NlcikgewogICAgICAgIGhlYWQgPSBzLmhlYWQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgnaGVhZCcpWzBdOwogICAgICAgIC8vSWYgQkFTRSB0YWcgaXMgaW4gcGxheSwgdXNpbmcgYXBwZW5kQ2hpbGQgaXMgYSBwcm9ibGVtIGZvciBJRTYuCiAgICAgICAgLy9XaGVuIHRoYXQgYnJvd3NlciBkaWVzLCB0aGlzIGNhbiBiZSByZW1vdmVkLiBEZXRhaWxzIGluIHRoaXMgalF1ZXJ5IGJ1ZzoKICAgICAgICAvL2h0dHA6Ly9kZXYuanF1ZXJ5LmNvbS90aWNrZXQvMjcwOQogICAgICAgIGJhc2VFbGVtZW50ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoJ2Jhc2UnKVswXTsKICAgICAgICBpZiAoYmFzZUVsZW1lbnQpIHsKICAgICAgICAgICAgaGVhZCA9IHMuaGVhZCA9IGJhc2VFbGVtZW50LnBhcmVudE5vZGU7CiAgICAgICAgfQogICAgfQoKICAgIC8qKgogICAgICogQW55IGVycm9ycyB0aGF0IHJlcXVpcmUgZXhwbGljaXRseSBnZW5lcmF0ZXMgd2lsbCBiZSBwYXNzZWQgdG8gdGhpcwogICAgICogZnVuY3Rpb24uIEludGVyY2VwdC9vdmVycmlkZSBpdCBpZiB5b3Ugd2FudCBjdXN0b20gZXJyb3IgaGFuZGxpbmcuCiAgICAgKiBAcGFyYW0ge0Vycm9yfSBlcnIgdGhlIGVycm9yIG9iamVjdC4KICAgICAqLwogICAgcmVxLm9uRXJyb3IgPSBkZWZhdWx0T25FcnJvcjsKCiAgICAvKioKICAgICAqIENyZWF0ZXMgdGhlIG5vZGUgZm9yIHRoZSBsb2FkIGNvbW1hbmQuIE9ubHkgdXNlZCBpbiBicm93c2VyIGVudnMuCiAgICAgKi8KICAgIHJlcS5jcmVhdGVOb2RlID0gZnVuY3Rpb24gKGNvbmZpZywgbW9kdWxlTmFtZSwgdXJsKSB7CiAgICAgICAgdmFyIG5vZGUgPSBjb25maWcueGh0bWwgPwogICAgICAgICAgICAgICAgZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKCdodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hodG1sJywgJ2h0bWw6c2NyaXB0JykgOgogICAgICAgICAgICAgICAgZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnc2NyaXB0Jyk7CiAgICAgICAgbm9kZS50eXBlID0gY29uZmlnLnNjcmlwdFR5cGUgfHwgJ3RleHQvamF2YXNjcmlwdCc7CiAgICAgICAgbm9kZS5jaGFyc2V0ID0gJ3V0Zi04JzsKICAgICAgICBub2RlLmFzeW5jID0gdHJ1ZTsKICAgICAgICByZXR1cm4gbm9kZTsKICAgIH07CgogICAgLyoqCiAgICAgKiBEb2VzIHRoZSByZXF1ZXN0IHRvIGxvYWQgYSBtb2R1bGUgZm9yIHRoZSBicm93c2VyIGNhc2UuCiAgICAgKiBNYWtlIHRoaXMgYSBzZXBhcmF0ZSBmdW5jdGlvbiB0byBhbGxvdyBvdGhlciBlbnZpcm9ubWVudHMKICAgICAqIHRvIG92ZXJyaWRlIGl0LgogICAgICoKICAgICAqIEBwYXJhbSB7T2JqZWN0fSBjb250ZXh0IHRoZSByZXF1aXJlIGNvbnRleHQgdG8gZmluZCBzdGF0ZS4KICAgICAqIEBwYXJhbSB7U3RyaW5nfSBtb2R1bGVOYW1lIHRoZSBuYW1lIG9mIHRoZSBtb2R1bGUuCiAgICAgKiBAcGFyYW0ge09iamVjdH0gdXJsIHRoZSBVUkwgdG8gdGhlIG1vZHVsZS4KICAgICAqLwogICAgcmVxLmxvYWQgPSBmdW5jdGlvbiAoY29udGV4dCwgbW9kdWxlTmFtZSwgdXJsKSB7CiAgICAgICAgdmFyIGNvbmZpZyA9IChjb250ZXh0ICYmIGNvbnRleHQuY29uZmlnKSB8fCB7fSwKICAgICAgICAgICAgbm9kZTsKICAgICAgICBpZiAoaXNCcm93c2VyKSB7CiAgICAgICAgICAgIC8vSW4gdGhlIGJyb3dzZXIgc28gdXNlIGEgc2NyaXB0IHRhZwogICAgICAgICAgICBub2RlID0gcmVxLmNyZWF0ZU5vZGUoY29uZmlnLCBtb2R1bGVOYW1lLCB1cmwpOwoKICAgICAgICAgICAgbm9kZS5zZXRBdHRyaWJ1dGUoJ2RhdGEtcmVxdWlyZWNvbnRleHQnLCBjb250ZXh0LmNvbnRleHROYW1lKTsKICAgICAgICAgICAgbm9kZS5zZXRBdHRyaWJ1dGUoJ2RhdGEtcmVxdWlyZW1vZHVsZScsIG1vZHVsZU5hbWUpOwoKICAgICAgICAgICAgLy9TZXQgdXAgbG9hZCBsaXN0ZW5lci4gVGVzdCBhdHRhY2hFdmVudCBmaXJzdCBiZWNhdXNlIElFOSBoYXMKICAgICAgICAgICAgLy9hIHN1YnRsZSBpc3N1ZSBpbiBpdHMgYWRkRXZlbnRMaXN0ZW5lciBhbmQgc2NyaXB0IG9ubG9hZCBmaXJpbmdzCiAgICAgICAgICAgIC8vdGhhdCBkbyBub3QgbWF0Y2ggdGhlIGJlaGF2aW9yIG9mIGFsbCBvdGhlciBicm93c2VycyB3aXRoCiAgICAgICAgICAgIC8vYWRkRXZlbnRMaXN0ZW5lciBzdXBwb3J0LCB3aGljaCBmaXJlIHRoZSBvbmxvYWQgZXZlbnQgZm9yIGEKICAgICAgICAgICAgLy9zY3JpcHQgcmlnaHQgYWZ0ZXIgdGhlIHNjcmlwdCBleGVjdXRpb24uIFNlZToKICAgICAgICAgICAgLy9odHRwczovL2Nvbm5lY3QubWljcm9zb2Z0LmNvbS9JRS9mZWVkYmFjay9kZXRhaWxzLzY0ODA1Ny9zY3JpcHQtb25sb2FkLWV2ZW50LWlzLW5vdC1maXJlZC1pbW1lZGlhdGVseS1hZnRlci1zY3JpcHQtZXhlY3V0aW9uCiAgICAgICAgICAgIC8vVU5GT1JUVU5BVEVMWSBPcGVyYSBpbXBsZW1lbnRzIGF0dGFjaEV2ZW50IGJ1dCBkb2VzIG5vdCBmb2xsb3cgdGhlIHNjcmlwdAogICAgICAgICAgICAvL3NjcmlwdCBleGVjdXRpb24gbW9kZS4KICAgICAgICAgICAgaWYgKG5vZGUuYXR0YWNoRXZlbnQgJiYKICAgICAgICAgICAgICAgICAgICAvL0NoZWNrIGlmIG5vZGUuYXR0YWNoRXZlbnQgaXMgYXJ0aWZpY2lhbGx5IGFkZGVkIGJ5IGN1c3RvbSBzY3JpcHQgb3IKICAgICAgICAgICAgICAgICAgICAvL25hdGl2ZWx5IHN1cHBvcnRlZCBieSBicm93c2VyCiAgICAgICAgICAgICAgICAgICAgLy9yZWFkIGh0dHBzOi8vZ2l0aHViLmNvbS9yZXF1aXJlanMvcmVxdWlyZWpzL2lzc3Vlcy8xODcKICAgICAgICAgICAgICAgICAgICAvL2lmIHdlIGNhbiBOT1QgZmluZCBbbmF0aXZlIGNvZGVdIHRoZW4gaXQgbXVzdCBOT1QgbmF0aXZlbHkgc3VwcG9ydGVkLgogICAgICAgICAgICAgICAgICAgIC8vaW4gSUU4LCBub2RlLmF0dGFjaEV2ZW50IGRvZXMgbm90IGhhdmUgdG9TdHJpbmcoKQogICAgICAgICAgICAgICAgICAgIC8vTm90ZSB0aGUgdGVzdCBmb3IgIltuYXRpdmUgY29kZSIgd2l0aCBubyBjbG9zaW5nIGJyYWNlLCBzZWU6CiAgICAgICAgICAgICAgICAgICAgLy9odHRwczovL2dpdGh1Yi5jb20vcmVxdWlyZWpzL3JlcXVpcmVqcy9pc3N1ZXMvMjczCiAgICAgICAgICAgICAgICAgICAgIShub2RlLmF0dGFjaEV2ZW50LnRvU3RyaW5nICYmIG5vZGUuYXR0YWNoRXZlbnQudG9TdHJpbmcoKS5pbmRleE9mKCdbbmF0aXZlIGNvZGUnKSA8IDApICYmCiAgICAgICAgICAgICAgICAgICAgIWlzT3BlcmEpIHsKICAgICAgICAgICAgICAgIC8vUHJvYmFibHkgSUUuIElFIChhdCBsZWFzdCA2LTgpIGRvIG5vdCBmaXJlCiAgICAgICAgICAgICAgICAvL3NjcmlwdCBvbmxvYWQgcmlnaHQgYWZ0ZXIgZXhlY3V0aW5nIHRoZSBzY3JpcHQsIHNvCiAgICAgICAgICAgICAgICAvL3dlIGNhbm5vdCB0aWUgdGhlIGFub255bW91cyBkZWZpbmUgY2FsbCB0byBhIG5hbWUuCiAgICAgICAgICAgICAgICAvL0hvd2V2ZXIsIElFIHJlcG9ydHMgdGhlIHNjcmlwdCBhcyBiZWluZyBpbiAnaW50ZXJhY3RpdmUnCiAgICAgICAgICAgICAgICAvL3JlYWR5U3RhdGUgYXQgdGhlIHRpbWUgb2YgdGhlIGRlZmluZSBjYWxsLgogICAgICAgICAgICAgICAgdXNlSW50ZXJhY3RpdmUgPSB0cnVlOwoKICAgICAgICAgICAgICAgIG5vZGUuYXR0YWNoRXZlbnQoJ29ucmVhZHlzdGF0ZWNoYW5nZScsIGNvbnRleHQub25TY3JpcHRMb2FkKTsKICAgICAgICAgICAgICAgIC8vSXQgd291bGQgYmUgZ3JlYXQgdG8gYWRkIGFuIGVycm9yIGhhbmRsZXIgaGVyZSB0byBjYXRjaAogICAgICAgICAgICAgICAgLy80MDRzIGluIElFOSsuIEhvd2V2ZXIsIG9ucmVhZHlzdGF0ZWNoYW5nZSB3aWxsIGZpcmUgYmVmb3JlCiAgICAgICAgICAgICAgICAvL3RoZSBlcnJvciBoYW5kbGVyLCBzbyB0aGF0IGRvZXMgbm90IGhlbHAuIElmIGFkZEV2ZW50TGlzdGVuZXIKICAgICAgICAgICAgICAgIC8vaXMgdXNlZCwgdGhlbiBJRSB3aWxsIGZpcmUgZXJyb3IgYmVmb3JlIGxvYWQsIGJ1dCB3ZSBjYW5ub3QKICAgICAgICAgICAgICAgIC8vdXNlIHRoYXQgcGF0aHdheSBnaXZlbiB0aGUgY29ubmVjdC5taWNyb3NvZnQuY29tIGlzc3VlCiAgICAgICAgICAgICAgICAvL21lbnRpb25lZCBhYm92ZSBhYm91dCBub3QgZG9pbmcgdGhlICdzY3JpcHQgZXhlY3V0ZSwKICAgICAgICAgICAgICAgIC8vdGhlbiBmaXJlIHRoZSBzY3JpcHQgbG9hZCBldmVudCBsaXN0ZW5lciBiZWZvcmUgZXhlY3V0ZQogICAgICAgICAgICAgICAgLy9uZXh0IHNjcmlwdCcgdGhhdCBvdGhlciBicm93c2VycyBkby4KICAgICAgICAgICAgICAgIC8vQmVzdCBob3BlOiBJRTEwIGZpeGVzIHRoZSBpc3N1ZXMsCiAgICAgICAgICAgICAgICAvL2FuZCB0aGVuIGRlc3Ryb3lzIGFsbCBpbnN0YWxscyBvZiBJRSA2LTkuCiAgICAgICAgICAgICAgICAvL25vZGUuYXR0YWNoRXZlbnQoJ29uZXJyb3InLCBjb250ZXh0Lm9uU2NyaXB0RXJyb3IpOwogICAgICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgICAgbm9kZS5hZGRFdmVudExpc3RlbmVyKCdsb2FkJywgY29udGV4dC5vblNjcmlwdExvYWQsIGZhbHNlKTsKICAgICAgICAgICAgICAgIG5vZGUuYWRkRXZlbnRMaXN0ZW5lcignZXJyb3InLCBjb250ZXh0Lm9uU2NyaXB0RXJyb3IsIGZhbHNlKTsKICAgICAgICAgICAgfQogICAgICAgICAgICBub2RlLnNyYyA9IHVybDsKCiAgICAgICAgICAgIC8vQ2FsbGluZyBvbk5vZGVDcmVhdGVkIGFmdGVyIGFsbCBwcm9wZXJ0aWVzIG9uIHRoZSBub2RlIGhhdmUgYmVlbgogICAgICAgICAgICAvL3NldCwgYnV0IGJlZm9yZSBpdCBpcyBwbGFjZWQgaW4gdGhlIERPTS4KICAgICAgICAgICAgaWYgKGNvbmZpZy5vbk5vZGVDcmVhdGVkKSB7CiAgICAgICAgICAgICAgICBjb25maWcub25Ob2RlQ3JlYXRlZChub2RlLCBjb25maWcsIG1vZHVsZU5hbWUsIHVybCk7CiAgICAgICAgICAgIH0KCiAgICAgICAgICAgIC8vRm9yIHNvbWUgY2FjaGUgY2FzZXMgaW4gSUUgNi04LCB0aGUgc2NyaXB0IGV4ZWN1dGVzIGJlZm9yZSB0aGUgZW5kCiAgICAgICAgICAgIC8vb2YgdGhlIGFwcGVuZENoaWxkIGV4ZWN1dGlvbiwgc28gdG8gdGllIGFuIGFub255bW91cyBkZWZpbmUKICAgICAgICAgICAgLy9jYWxsIHRvIHRoZSBtb2R1bGUgbmFtZSAod2hpY2ggaXMgc3RvcmVkIG9uIHRoZSBub2RlKSwgaG9sZCBvbgogICAgICAgICAgICAvL3RvIGEgcmVmZXJlbmNlIHRvIHRoaXMgbm9kZSwgYnV0IGNsZWFyIGFmdGVyIHRoZSBET00gaW5zZXJ0aW9uLgogICAgICAgICAgICBjdXJyZW50bHlBZGRpbmdTY3JpcHQgPSBub2RlOwogICAgICAgICAgICBpZiAoYmFzZUVsZW1lbnQpIHsKICAgICAgICAgICAgICAgIGhlYWQuaW5zZXJ0QmVmb3JlKG5vZGUsIGJhc2VFbGVtZW50KTsKICAgICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgICAgIGhlYWQuYXBwZW5kQ2hpbGQobm9kZSk7CiAgICAgICAgICAgIH0KICAgICAgICAgICAgY3VycmVudGx5QWRkaW5nU2NyaXB0ID0gbnVsbDsKCiAgICAgICAgICAgIHJldHVybiBub2RlOwogICAgICAgIH0gZWxzZSBpZiAoaXNXZWJXb3JrZXIpIHsKICAgICAgICAgICAgdHJ5IHsKICAgICAgICAgICAgICAgIC8vSW4gYSB3ZWIgd29ya2VyLCB1c2UgaW1wb3J0U2NyaXB0cy4gVGhpcyBpcyBub3QgYSB2ZXJ5CiAgICAgICAgICAgICAgICAvL2VmZmljaWVudCB1c2Ugb2YgaW1wb3J0U2NyaXB0cywgaW1wb3J0U2NyaXB0cyB3aWxsIGJsb2NrIHVudGlsCiAgICAgICAgICAgICAgICAvL2l0cyBzY3JpcHQgaXMgZG93bmxvYWRlZCBhbmQgZXZhbHVhdGVkLiBIb3dldmVyLCBpZiB3ZWIgd29ya2VycwogICAgICAgICAgICAgICAgLy9hcmUgaW4gcGxheSwgdGhlIGV4cGVjdGF0aW9uIGlzIHRoYXQgYSBidWlsZCBoYXMgYmVlbiBkb25lIHNvCiAgICAgICAgICAgICAgICAvL3RoYXQgb25seSBvbmUgc2NyaXB0IG5lZWRzIHRvIGJlIGxvYWRlZCBhbnl3YXkuIFRoaXMgbWF5IG5lZWQKICAgICAgICAgICAgICAgIC8vdG8gYmUgcmVldmFsdWF0ZWQgaWYgb3RoZXIgdXNlIGNhc2VzIGJlY29tZSBjb21tb24uCgogICAgICAgICAgICAgICAgLy8gUG9zdCBhIHRhc2sgdG8gdGhlIGV2ZW50IGxvb3AgdG8gd29yayBhcm91bmQgYSBidWcgaW4gV2ViS2l0CiAgICAgICAgICAgICAgICAvLyB3aGVyZSB0aGUgd29ya2VyIGdldHMgZ2FyYmFnZS1jb2xsZWN0ZWQgYWZ0ZXIgY2FsbGluZwogICAgICAgICAgICAgICAgLy8gaW1wb3J0U2NyaXB0cygpOiBodHRwczovL3dlYmtpdC5vcmcvYi8xNTMzMTcKICAgICAgICAgICAgICAgIHNldFRpbWVvdXQoZnVuY3Rpb24oKSB7fSwgMCk7CiAgICAgICAgICAgICAgICBpbXBvcnRTY3JpcHRzKHVybCk7CgogICAgICAgICAgICAgICAgLy9BY2NvdW50IGZvciBhbm9ueW1vdXMgbW9kdWxlcwogICAgICAgICAgICAgICAgY29udGV4dC5jb21wbGV0ZUxvYWQobW9kdWxlTmFtZSk7CiAgICAgICAgICAgIH0gY2F0Y2ggKGUpIHsKICAgICAgICAgICAgICAgIGNvbnRleHQub25FcnJvcihtYWtlRXJyb3IoJ2ltcG9ydHNjcmlwdHMnLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdpbXBvcnRTY3JpcHRzIGZhaWxlZCBmb3IgJyArCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1vZHVsZU5hbWUgKyAnIGF0ICcgKyB1cmwsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbbW9kdWxlTmFtZV0pKTsKICAgICAgICAgICAgfQogICAgICAgIH0KICAgIH07CgogICAgZnVuY3Rpb24gZ2V0SW50ZXJhY3RpdmVTY3JpcHQoKSB7CiAgICAgICAgaWYgKGludGVyYWN0aXZlU2NyaXB0ICYmIGludGVyYWN0aXZlU2NyaXB0LnJlYWR5U3RhdGUgPT09ICdpbnRlcmFjdGl2ZScpIHsKICAgICAgICAgICAgcmV0dXJuIGludGVyYWN0aXZlU2NyaXB0OwogICAgICAgIH0KCiAgICAgICAgZWFjaFJldmVyc2Uoc2NyaXB0cygpLCBmdW5jdGlvbiAoc2NyaXB0KSB7CiAgICAgICAgICAgIGlmIChzY3JpcHQucmVhZHlTdGF0ZSA9PT0gJ2ludGVyYWN0aXZlJykgewogICAgICAgICAgICAgICAgcmV0dXJuIChpbnRlcmFjdGl2ZVNjcmlwdCA9IHNjcmlwdCk7CiAgICAgICAgICAgIH0KICAgICAgICB9KTsKICAgICAgICByZXR1cm4gaW50ZXJhY3RpdmVTY3JpcHQ7CiAgICB9CgogICAgLy9Mb29rIGZvciBhIGRhdGEtbWFpbiBzY3JpcHQgYXR0cmlidXRlLCB3aGljaCBjb3VsZCBhbHNvIGFkanVzdCB0aGUgYmFzZVVybC4KICAgIGlmIChpc0Jyb3dzZXIgJiYgIWNmZy5za2lwRGF0YU1haW4pIHsKICAgICAgICAvL0ZpZ3VyZSBvdXQgYmFzZVVybC4gR2V0IGl0IGZyb20gdGhlIHNjcmlwdCB0YWcgd2l0aCByZXF1aXJlLmpzIGluIGl0LgogICAgICAgIGVhY2hSZXZlcnNlKHNjcmlwdHMoKSwgZnVuY3Rpb24gKHNjcmlwdCkgewogICAgICAgICAgICAvL1NldCB0aGUgJ2hlYWQnIHdoZXJlIHdlIGNhbiBhcHBlbmQgY2hpbGRyZW4gYnkKICAgICAgICAgICAgLy91c2luZyB0aGUgc2NyaXB0J3MgcGFyZW50LgogICAgICAgICAgICBpZiAoIWhlYWQpIHsKICAgICAgICAgICAgICAgIGhlYWQgPSBzY3JpcHQucGFyZW50Tm9kZTsKICAgICAgICAgICAgfQoKICAgICAgICAgICAgLy9Mb29rIGZvciBhIGRhdGEtbWFpbiBhdHRyaWJ1dGUgdG8gc2V0IG1haW4gc2NyaXB0IGZvciB0aGUgcGFnZQogICAgICAgICAgICAvL3RvIGxvYWQuIElmIGl0IGlzIHRoZXJlLCB0aGUgcGF0aCB0byBkYXRhIG1haW4gYmVjb21lcyB0aGUKICAgICAgICAgICAgLy9iYXNlVXJsLCBpZiBpdCBpcyBub3QgYWxyZWFkeSBzZXQuCiAgICAgICAgICAgIGRhdGFNYWluID0gc2NyaXB0LmdldEF0dHJpYnV0ZSgnZGF0YS1tYWluJyk7CiAgICAgICAgICAgIGlmIChkYXRhTWFpbikgewogICAgICAgICAgICAgICAgLy9QcmVzZXJ2ZSBkYXRhTWFpbiBpbiBjYXNlIGl0IGlzIGEgcGF0aCAoaS5lLiBjb250YWlucyAnPycpCiAgICAgICAgICAgICAgICBtYWluU2NyaXB0ID0gZGF0YU1haW47CgogICAgICAgICAgICAgICAgLy9TZXQgZmluYWwgYmFzZVVybCBpZiB0aGVyZSBpcyBub3QgYWxyZWFkeSBhbiBleHBsaWNpdCBvbmUsCiAgICAgICAgICAgICAgICAvL2J1dCBvbmx5IGRvIHNvIGlmIHRoZSBkYXRhLW1haW4gdmFsdWUgaXMgbm90IGEgbG9hZGVyIHBsdWdpbgogICAgICAgICAgICAgICAgLy9tb2R1bGUgSUQuCiAgICAgICAgICAgICAgICBpZiAoIWNmZy5iYXNlVXJsICYmIG1haW5TY3JpcHQuaW5kZXhPZignIScpID09PSAtMSkgewogICAgICAgICAgICAgICAgICAgIC8vUHVsbCBvZmYgdGhlIGRpcmVjdG9yeSBvZiBkYXRhLW1haW4gZm9yIHVzZSBhcyB0aGUKICAgICAgICAgICAgICAgICAgICAvL2Jhc2VVcmwuCiAgICAgICAgICAgICAgICAgICAgc3JjID0gbWFpblNjcmlwdC5zcGxpdCgnLycpOwogICAgICAgICAgICAgICAgICAgIG1haW5TY3JpcHQgPSBzcmMucG9wKCk7CiAgICAgICAgICAgICAgICAgICAgc3ViUGF0aCA9IHNyYy5sZW5ndGggPyBzcmMuam9pbignLycpICArICcvJyA6ICcuLyc7CgogICAgICAgICAgICAgICAgICAgIGNmZy5iYXNlVXJsID0gc3ViUGF0aDsKICAgICAgICAgICAgICAgIH0KCiAgICAgICAgICAgICAgICAvL1N0cmlwIG9mZiBhbnkgdHJhaWxpbmcgLmpzIHNpbmNlIG1haW5TY3JpcHQgaXMgbm93CiAgICAgICAgICAgICAgICAvL2xpa2UgYSBtb2R1bGUgbmFtZS4KICAgICAgICAgICAgICAgIG1haW5TY3JpcHQgPSBtYWluU2NyaXB0LnJlcGxhY2UoanNTdWZmaXhSZWdFeHAsICcnKTsKCiAgICAgICAgICAgICAgICAvL0lmIG1haW5TY3JpcHQgaXMgc3RpbGwgYSBwYXRoLCBmYWxsIGJhY2sgdG8gZGF0YU1haW4KICAgICAgICAgICAgICAgIGlmIChyZXEuanNFeHRSZWdFeHAudGVzdChtYWluU2NyaXB0KSkgewogICAgICAgICAgICAgICAgICAgIG1haW5TY3JpcHQgPSBkYXRhTWFpbjsKICAgICAgICAgICAgICAgIH0KCiAgICAgICAgICAgICAgICAvL1B1dCB0aGUgZGF0YS1tYWluIHNjcmlwdCBpbiB0aGUgZmlsZXMgdG8gbG9hZC4KICAgICAgICAgICAgICAgIGNmZy5kZXBzID0gY2ZnLmRlcHMgPyBjZmcuZGVwcy5jb25jYXQobWFpblNjcmlwdCkgOiBbbWFpblNjcmlwdF07CgogICAgICAgICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgICAgICAgIH0KICAgICAgICB9KTsKICAgIH0KCiAgICAvKioKICAgICAqIFRoZSBmdW5jdGlvbiB0aGF0IGhhbmRsZXMgZGVmaW5pdGlvbnMgb2YgbW9kdWxlcy4gRGlmZmVycyBmcm9tCiAgICAgKiByZXF1aXJlKCkgaW4gdGhhdCBhIHN0cmluZyBmb3IgdGhlIG1vZHVsZSBzaG91bGQgYmUgdGhlIGZpcnN0IGFyZ3VtZW50LAogICAgICogYW5kIHRoZSBmdW5jdGlvbiB0byBleGVjdXRlIGFmdGVyIGRlcGVuZGVuY2llcyBhcmUgbG9hZGVkIHNob3VsZAogICAgICogcmV0dXJuIGEgdmFsdWUgdG8gZGVmaW5lIHRoZSBtb2R1bGUgY29ycmVzcG9uZGluZyB0byB0aGUgZmlyc3QgYXJndW1lbnQncwogICAgICogbmFtZS4KICAgICAqLwogICAgZGVmaW5lID0gZnVuY3Rpb24gKG5hbWUsIGRlcHMsIGNhbGxiYWNrKSB7CiAgICAgICAgdmFyIG5vZGUsIGNvbnRleHQ7CgogICAgICAgIC8vQWxsb3cgZm9yIGFub255bW91cyBtb2R1bGVzCiAgICAgICAgaWYgKHR5cGVvZiBuYW1lICE9PSAnc3RyaW5nJykgewogICAgICAgICAgICAvL0FkanVzdCBhcmdzIGFwcHJvcHJpYXRlbHkKICAgICAgICAgICAgY2FsbGJhY2sgPSBkZXBzOwogICAgICAgICAgICBkZXBzID0gbmFtZTsKICAgICAgICAgICAgbmFtZSA9IG51bGw7CiAgICAgICAgfQoKICAgICAgICAvL1RoaXMgbW9kdWxlIG1heSBub3QgaGF2ZSBkZXBlbmRlbmNpZXMKICAgICAgICBpZiAoIWlzQXJyYXkoZGVwcykpIHsKICAgICAgICAgICAgY2FsbGJhY2sgPSBkZXBzOwogICAgICAgICAgICBkZXBzID0gbnVsbDsKICAgICAgICB9CgogICAgICAgIC8vSWYgbm8gbmFtZSwgYW5kIGNhbGxiYWNrIGlzIGEgZnVuY3Rpb24sIHRoZW4gZmlndXJlIG91dCBpZiBpdCBhCiAgICAgICAgLy9Db21tb25KUyB0aGluZyB3aXRoIGRlcGVuZGVuY2llcy4KICAgICAgICBpZiAoIWRlcHMgJiYgaXNGdW5jdGlvbihjYWxsYmFjaykpIHsKICAgICAgICAgICAgZGVwcyA9IFtdOwogICAgICAgICAgICAvL1JlbW92ZSBjb21tZW50cyBmcm9tIHRoZSBjYWxsYmFjayBzdHJpbmcsCiAgICAgICAgICAgIC8vbG9vayBmb3IgcmVxdWlyZSBjYWxscywgYW5kIHB1bGwgdGhlbSBpbnRvIHRoZSBkZXBlbmRlbmNpZXMsCiAgICAgICAgICAgIC8vYnV0IG9ubHkgaWYgdGhlcmUgYXJlIGZ1bmN0aW9uIGFyZ3MuCiAgICAgICAgICAgIGlmIChjYWxsYmFjay5sZW5ndGgpIHsKICAgICAgICAgICAgICAgIGNhbGxiYWNrCiAgICAgICAgICAgICAgICAgICAgLnRvU3RyaW5nKCkKICAgICAgICAgICAgICAgICAgICAucmVwbGFjZShjb21tZW50UmVnRXhwLCBjb21tZW50UmVwbGFjZSkKICAgICAgICAgICAgICAgICAgICAucmVwbGFjZShjanNSZXF1aXJlUmVnRXhwLCBmdW5jdGlvbiAobWF0Y2gsIGRlcCkgewogICAgICAgICAgICAgICAgICAgICAgICBkZXBzLnB1c2goZGVwKTsKICAgICAgICAgICAgICAgICAgICB9KTsKCiAgICAgICAgICAgICAgICAvL01heSBiZSBhIENvbW1vbkpTIHRoaW5nIGV2ZW4gd2l0aG91dCByZXF1aXJlIGNhbGxzLCBidXQgc3RpbGwKICAgICAgICAgICAgICAgIC8vY291bGQgdXNlIGV4cG9ydHMsIGFuZCBtb2R1bGUuIEF2b2lkIGRvaW5nIGV4cG9ydHMgYW5kIG1vZHVsZQogICAgICAgICAgICAgICAgLy93b3JrIHRob3VnaCBpZiBpdCBqdXN0IG5lZWRzIHJlcXVpcmUuCiAgICAgICAgICAgICAgICAvL1JFUVVJUkVTIHRoZSBmdW5jdGlvbiB0byBleHBlY3QgdGhlIENvbW1vbkpTIHZhcmlhYmxlcyBpbiB0aGUKICAgICAgICAgICAgICAgIC8vb3JkZXIgbGlzdGVkIGJlbG93LgogICAgICAgICAgICAgICAgZGVwcyA9IChjYWxsYmFjay5sZW5ndGggPT09IDEgPyBbJ3JlcXVpcmUnXSA6IFsncmVxdWlyZScsICdleHBvcnRzJywgJ21vZHVsZSddKS5jb25jYXQoZGVwcyk7CiAgICAgICAgICAgIH0KICAgICAgICB9CgogICAgICAgIC8vSWYgaW4gSUUgNi04IGFuZCBoaXQgYW4gYW5vbnltb3VzIGRlZmluZSgpIGNhbGwsIGRvIHRoZSBpbnRlcmFjdGl2ZQogICAgICAgIC8vd29yay4KICAgICAgICBpZiAodXNlSW50ZXJhY3RpdmUpIHsKICAgICAgICAgICAgbm9kZSA9IGN1cnJlbnRseUFkZGluZ1NjcmlwdCB8fCBnZXRJbnRlcmFjdGl2ZVNjcmlwdCgpOwogICAgICAgICAgICBpZiAobm9kZSkgewogICAgICAgICAgICAgICAgaWYgKCFuYW1lKSB7CiAgICAgICAgICAgICAgICAgICAgbmFtZSA9IG5vZGUuZ2V0QXR0cmlidXRlKCdkYXRhLXJlcXVpcmVtb2R1bGUnKTsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIGNvbnRleHQgPSBjb250ZXh0c1tub2RlLmdldEF0dHJpYnV0ZSgnZGF0YS1yZXF1aXJlY29udGV4dCcpXTsKICAgICAgICAgICAgfQogICAgICAgIH0KCiAgICAgICAgLy9BbHdheXMgc2F2ZSBvZmYgZXZhbHVhdGluZyB0aGUgZGVmIGNhbGwgdW50aWwgdGhlIHNjcmlwdCBvbmxvYWQgaGFuZGxlci4KICAgICAgICAvL1RoaXMgYWxsb3dzIG11bHRpcGxlIG1vZHVsZXMgdG8gYmUgaW4gYSBmaWxlIHdpdGhvdXQgcHJlbWF0dXJlbHkKICAgICAgICAvL3RyYWNpbmcgZGVwZW5kZW5jaWVzLCBhbmQgYWxsb3dzIGZvciBhbm9ueW1vdXMgbW9kdWxlIHN1cHBvcnQsCiAgICAgICAgLy93aGVyZSB0aGUgbW9kdWxlIG5hbWUgaXMgbm90IGtub3duIHVudGlsIHRoZSBzY3JpcHQgb25sb2FkIGV2ZW50CiAgICAgICAgLy9vY2N1cnMuIElmIG5vIGNvbnRleHQsIHVzZSB0aGUgZ2xvYmFsIHF1ZXVlLCBhbmQgZ2V0IGl0IHByb2Nlc3NlZAogICAgICAgIC8vaW4gdGhlIG9uc2NyaXB0IGxvYWQgY2FsbGJhY2suCiAgICAgICAgaWYgKGNvbnRleHQpIHsKICAgICAgICAgICAgY29udGV4dC5kZWZRdWV1ZS5wdXNoKFtuYW1lLCBkZXBzLCBjYWxsYmFja10pOwogICAgICAgICAgICBjb250ZXh0LmRlZlF1ZXVlTWFwW25hbWVdID0gdHJ1ZTsKICAgICAgICB9IGVsc2UgewogICAgICAgICAgICBnbG9iYWxEZWZRdWV1ZS5wdXNoKFtuYW1lLCBkZXBzLCBjYWxsYmFja10pOwogICAgICAgIH0KICAgIH07CgogICAgZGVmaW5lLmFtZCA9IHsKICAgICAgICBqUXVlcnk6IHRydWUKICAgIH07CgogICAgLyoqCiAgICAgKiBFeGVjdXRlcyB0aGUgdGV4dC4gTm9ybWFsbHkganVzdCB1c2VzIGV2YWwsIGJ1dCBjYW4gYmUgbW9kaWZpZWQKICAgICAqIHRvIHVzZSBhIGJldHRlciwgZW52aXJvbm1lbnQtc3BlY2lmaWMgY2FsbC4gT25seSB1c2VkIGZvciB0cmFuc3BpbGluZwogICAgICogbG9hZGVyIHBsdWdpbnMsIG5vdCBmb3IgcGxhaW4gSlMgbW9kdWxlcy4KICAgICAqIEBwYXJhbSB7U3RyaW5nfSB0ZXh0IHRoZSB0ZXh0IHRvIGV4ZWN1dGUvZXZhbHVhdGUuCiAgICAgKi8KICAgIHJlcS5leGVjID0gZnVuY3Rpb24gKHRleHQpIHsKICAgICAgICAvKmpzbGludCBldmlsOiB0cnVlICovCiAgICAgICAgcmV0dXJuIGV2YWwodGV4dCk7CiAgICB9OwoKICAgIC8vU2V0IHVwIHdpdGggY29uZmlnIGluZm8uCiAgICByZXEoY2ZnKTsKfSh0aGlzLCAodHlwZW9mIHNldFRpbWVvdXQgPT09ICd1bmRlZmluZWQnID8gdW5kZWZpbmVkIDogc2V0VGltZW91dCkpKTsKCi8vIENvcHlyaWdodCAyMDE0IEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi8vCi8vIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSAiTGljZW5zZSIpOwovLyB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuCi8vICAgICBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQKLy8KLy8gaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wCi8vCi8vIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmUKLy8gZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gIkFTIElTIiBCQVNJUywKLy8gV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuCi8vICAgICBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kCi8vIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLgoKIWZ1bmN0aW9uKCl7dmFyIGE9e30sYj17fSxjPXt9OyFmdW5jdGlvbihhLGIpe2Z1bmN0aW9uIGMoYSl7aWYoIm51bWJlciI9PXR5cGVvZiBhKXJldHVybiBhO3ZhciBiPXt9O2Zvcih2YXIgYyBpbiBhKWJbY109YVtjXTtyZXR1cm4gYn1mdW5jdGlvbiBkKCl7dGhpcy5fZGVsYXk9MCx0aGlzLl9lbmREZWxheT0wLHRoaXMuX2ZpbGw9Im5vbmUiLHRoaXMuX2l0ZXJhdGlvblN0YXJ0PTAsdGhpcy5faXRlcmF0aW9ucz0xLHRoaXMuX2R1cmF0aW9uPTAsdGhpcy5fcGxheWJhY2tSYXRlPTEsdGhpcy5fZGlyZWN0aW9uPSJub3JtYWwiLHRoaXMuX2Vhc2luZz0ibGluZWFyIix0aGlzLl9lYXNpbmdGdW5jdGlvbj14fWZ1bmN0aW9uIGUoKXtyZXR1cm4gYS5pc0RlcHJlY2F0ZWQoIkludmFsaWQgdGltaW5nIGlucHV0cyIsIjIwMTYtMDMtMDIiLCJUeXBlRXJyb3IgZXhjZXB0aW9ucyB3aWxsIGJlIHRocm93biBpbnN0ZWFkLiIsITApfWZ1bmN0aW9uIGYoYixjLGUpe3ZhciBmPW5ldyBkO3JldHVybiBjJiYoZi5maWxsPSJib3RoIixmLmR1cmF0aW9uPSJhdXRvIiksIm51bWJlciIhPXR5cGVvZiBifHxpc05hTihiKT92b2lkIDAhPT1iJiZPYmplY3QuZ2V0T3duUHJvcGVydHlOYW1lcyhiKS5mb3JFYWNoKGZ1bmN0aW9uKGMpe2lmKCJhdXRvIiE9YltjXSl7aWYoKCJudW1iZXIiPT10eXBlb2YgZltjXXx8ImR1cmF0aW9uIj09YykmJigibnVtYmVyIiE9dHlwZW9mIGJbY118fGlzTmFOKGJbY10pKSlyZXR1cm47aWYoImZpbGwiPT1jJiYtMT09di5pbmRleE9mKGJbY10pKXJldHVybjtpZigiZGlyZWN0aW9uIj09YyYmLTE9PXcuaW5kZXhPZihiW2NdKSlyZXR1cm47aWYoInBsYXliYWNrUmF0ZSI9PWMmJjEhPT1iW2NdJiZhLmlzRGVwcmVjYXRlZCgiQW5pbWF0aW9uRWZmZWN0VGltaW5nLnBsYXliYWNrUmF0ZSIsIjIwMTQtMTEtMjgiLCJVc2UgQW5pbWF0aW9uLnBsYXliYWNrUmF0ZSBpbnN0ZWFkLiIpKXJldHVybjtmW2NdPWJbY119fSk6Zi5kdXJhdGlvbj1iLGZ9ZnVuY3Rpb24gZyhhKXtyZXR1cm4ibnVtYmVyIj09dHlwZW9mIGEmJihhPWlzTmFOKGEpP3tkdXJhdGlvbjowfTp7ZHVyYXRpb246YX0pLGF9ZnVuY3Rpb24gaChiLGMpe3JldHVybiBiPWEubnVtZXJpY1RpbWluZ1RvT2JqZWN0KGIpLGYoYixjKX1mdW5jdGlvbiBpKGEsYixjLGQpe3JldHVybiBhPDB8fGE+MXx8YzwwfHxjPjE/eDpmdW5jdGlvbihlKXtmdW5jdGlvbiBmKGEsYixjKXtyZXR1cm4gMyphKigxLWMpKigxLWMpKmMrMypiKigxLWMpKmMqYytjKmMqY31pZihlPD0wKXt2YXIgZz0wO3JldHVybiBhPjA/Zz1iL2E6IWImJmM+MCYmKGc9ZC9jKSxnKmV9aWYoZT49MSl7dmFyIGg9MDtyZXR1cm4gYzwxP2g9KGQtMSkvKGMtMSk6MT09YyYmYTwxJiYoaD0oYi0xKS8oYS0xKSksMStoKihlLTEpfWZvcih2YXIgaT0wLGo9MTtpPGo7KXt2YXIgaz0oaStqKS8yLGw9ZihhLGMsayk7aWYoTWF0aC5hYnMoZS1sKTwxZS01KXJldHVybiBmKGIsZCxrKTtsPGU/aT1rOmo9a31yZXR1cm4gZihiLGQsayl9fWZ1bmN0aW9uIGooYSxiKXtyZXR1cm4gZnVuY3Rpb24oYyl7aWYoYz49MSlyZXR1cm4gMTt2YXIgZD0xL2E7cmV0dXJuKGMrPWIqZCktYyVkfX1mdW5jdGlvbiBrKGEpe0N8fChDPWRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoImRpdiIpLnN0eWxlKSxDLmFuaW1hdGlvblRpbWluZ0Z1bmN0aW9uPSIiLEMuYW5pbWF0aW9uVGltaW5nRnVuY3Rpb249YTt2YXIgYj1DLmFuaW1hdGlvblRpbWluZ0Z1bmN0aW9uO2lmKCIiPT1iJiZlKCkpdGhyb3cgbmV3IFR5cGVFcnJvcihhKyIgaXMgbm90IGEgdmFsaWQgdmFsdWUgZm9yIGVhc2luZyIpO3JldHVybiBifWZ1bmN0aW9uIGwoYSl7aWYoImxpbmVhciI9PWEpcmV0dXJuIHg7dmFyIGI9RS5leGVjKGEpO2lmKGIpcmV0dXJuIGkuYXBwbHkodGhpcyxiLnNsaWNlKDEpLm1hcChOdW1iZXIpKTt2YXIgYz1GLmV4ZWMoYSk7aWYoYylyZXR1cm4gaihOdW1iZXIoY1sxXSksQSk7dmFyIGQ9Ry5leGVjKGEpO3JldHVybiBkP2ooTnVtYmVyKGRbMV0pLHtzdGFydDp5LG1pZGRsZTp6LGVuZDpBfVtkWzJdXSk6QlthXXx8eH1mdW5jdGlvbiBtKGEpe3JldHVybiBNYXRoLmFicyhuKGEpL2EucGxheWJhY2tSYXRlKX1mdW5jdGlvbiBuKGEpe3JldHVybiAwPT09YS5kdXJhdGlvbnx8MD09PWEuaXRlcmF0aW9ucz8wOmEuZHVyYXRpb24qYS5pdGVyYXRpb25zfWZ1bmN0aW9uIG8oYSxiLGMpe2lmKG51bGw9PWIpcmV0dXJuIEg7dmFyIGQ9Yy5kZWxheSthK2MuZW5kRGVsYXk7cmV0dXJuIGI8TWF0aC5taW4oYy5kZWxheSxkKT9JOmI+PU1hdGgubWluKGMuZGVsYXkrYSxkKT9KOkt9ZnVuY3Rpb24gcChhLGIsYyxkLGUpe3N3aXRjaChkKXtjYXNlIEk6cmV0dXJuImJhY2t3YXJkcyI9PWJ8fCJib3RoIj09Yj8wOm51bGw7Y2FzZSBLOnJldHVybiBjLWU7Y2FzZSBKOnJldHVybiJmb3J3YXJkcyI9PWJ8fCJib3RoIj09Yj9hOm51bGw7Y2FzZSBIOnJldHVybiBudWxsfX1mdW5jdGlvbiBxKGEsYixjLGQsZSl7dmFyIGY9ZTtyZXR1cm4gMD09PWE/YiE9PUkmJihmKz1jKTpmKz1kL2EsZn1mdW5jdGlvbiByKGEsYixjLGQsZSxmKXt2YXIgZz1hPT09MS8wP2IlMTphJTE7cmV0dXJuIDAhPT1nfHxjIT09Snx8MD09PWR8fDA9PT1lJiYwIT09Znx8KGc9MSksZ31mdW5jdGlvbiBzKGEsYixjLGQpe3JldHVybiBhPT09SiYmYj09PTEvMD8xLzA6MT09PWM/TWF0aC5mbG9vcihkKS0xOk1hdGguZmxvb3IoZCl9ZnVuY3Rpb24gdChhLGIsYyl7dmFyIGQ9YTtpZigibm9ybWFsIiE9PWEmJiJyZXZlcnNlIiE9PWEpe3ZhciBlPWI7ImFsdGVybmF0ZS1yZXZlcnNlIj09PWEmJihlKz0xKSxkPSJub3JtYWwiLGUhPT0xLzAmJmUlMiE9MCYmKGQ9InJldmVyc2UiKX1yZXR1cm4ibm9ybWFsIj09PWQ/YzoxLWN9ZnVuY3Rpb24gdShhLGIsYyl7dmFyIGQ9byhhLGIsYyksZT1wKGEsYy5maWxsLGIsZCxjLmRlbGF5KTtpZihudWxsPT09ZSlyZXR1cm4gbnVsbDt2YXIgZj1xKGMuZHVyYXRpb24sZCxjLml0ZXJhdGlvbnMsZSxjLml0ZXJhdGlvblN0YXJ0KSxnPXIoZixjLml0ZXJhdGlvblN0YXJ0LGQsYy5pdGVyYXRpb25zLGUsYy5kdXJhdGlvbiksaD1zKGQsYy5pdGVyYXRpb25zLGcsZiksaT10KGMuZGlyZWN0aW9uLGgsZyk7cmV0dXJuIGMuX2Vhc2luZ0Z1bmN0aW9uKGkpfXZhciB2PSJiYWNrd2FyZHN8Zm9yd2FyZHN8Ym90aHxub25lIi5zcGxpdCgifCIpLHc9InJldmVyc2V8YWx0ZXJuYXRlfGFsdGVybmF0ZS1yZXZlcnNlIi5zcGxpdCgifCIpLHg9ZnVuY3Rpb24oYSl7cmV0dXJuIGF9O2QucHJvdG90eXBlPXtfc2V0TWVtYmVyOmZ1bmN0aW9uKGIsYyl7dGhpc1siXyIrYl09Yyx0aGlzLl9lZmZlY3QmJih0aGlzLl9lZmZlY3QuX3RpbWluZ0lucHV0W2JdPWMsdGhpcy5fZWZmZWN0Ll90aW1pbmc9YS5ub3JtYWxpemVUaW1pbmdJbnB1dCh0aGlzLl9lZmZlY3QuX3RpbWluZ0lucHV0KSx0aGlzLl9lZmZlY3QuYWN0aXZlRHVyYXRpb249YS5jYWxjdWxhdGVBY3RpdmVEdXJhdGlvbih0aGlzLl9lZmZlY3QuX3RpbWluZyksdGhpcy5fZWZmZWN0Ll9hbmltYXRpb24mJnRoaXMuX2VmZmVjdC5fYW5pbWF0aW9uLl9yZWJ1aWxkVW5kZXJseWluZ0FuaW1hdGlvbigpKX0sZ2V0IHBsYXliYWNrUmF0ZSgpe3JldHVybiB0aGlzLl9wbGF5YmFja1JhdGV9LHNldCBkZWxheShhKXt0aGlzLl9zZXRNZW1iZXIoImRlbGF5IixhKX0sZ2V0IGRlbGF5KCl7cmV0dXJuIHRoaXMuX2RlbGF5fSxzZXQgZW5kRGVsYXkoYSl7dGhpcy5fc2V0TWVtYmVyKCJlbmREZWxheSIsYSl9LGdldCBlbmREZWxheSgpe3JldHVybiB0aGlzLl9lbmREZWxheX0sc2V0IGZpbGwoYSl7dGhpcy5fc2V0TWVtYmVyKCJmaWxsIixhKX0sZ2V0IGZpbGwoKXtyZXR1cm4gdGhpcy5fZmlsbH0sc2V0IGl0ZXJhdGlvblN0YXJ0KGEpe2lmKChpc05hTihhKXx8YTwwKSYmZSgpKXRocm93IG5ldyBUeXBlRXJyb3IoIml0ZXJhdGlvblN0YXJ0IG11c3QgYmUgYSBub24tbmVnYXRpdmUgbnVtYmVyLCByZWNlaXZlZDogIithKTt0aGlzLl9zZXRNZW1iZXIoIml0ZXJhdGlvblN0YXJ0IixhKX0sZ2V0IGl0ZXJhdGlvblN0YXJ0KCl7cmV0dXJuIHRoaXMuX2l0ZXJhdGlvblN0YXJ0fSxzZXQgZHVyYXRpb24oYSl7aWYoImF1dG8iIT1hJiYoaXNOYU4oYSl8fGE8MCkmJmUoKSl0aHJvdyBuZXcgVHlwZUVycm9yKCJkdXJhdGlvbiBtdXN0IGJlIG5vbi1uZWdhdGl2ZSBvciBhdXRvLCByZWNlaXZlZDogIithKTt0aGlzLl9zZXRNZW1iZXIoImR1cmF0aW9uIixhKX0sZ2V0IGR1cmF0aW9uKCl7cmV0dXJuIHRoaXMuX2R1cmF0aW9ufSxzZXQgZGlyZWN0aW9uKGEpe3RoaXMuX3NldE1lbWJlcigiZGlyZWN0aW9uIixhKX0sZ2V0IGRpcmVjdGlvbigpe3JldHVybiB0aGlzLl9kaXJlY3Rpb259LHNldCBlYXNpbmcoYSl7dGhpcy5fZWFzaW5nRnVuY3Rpb249bChrKGEpKSx0aGlzLl9zZXRNZW1iZXIoImVhc2luZyIsYSl9LGdldCBlYXNpbmcoKXtyZXR1cm4gdGhpcy5fZWFzaW5nfSxzZXQgaXRlcmF0aW9ucyhhKXtpZigoaXNOYU4oYSl8fGE8MCkmJmUoKSl0aHJvdyBuZXcgVHlwZUVycm9yKCJpdGVyYXRpb25zIG11c3QgYmUgbm9uLW5lZ2F0aXZlLCByZWNlaXZlZDogIithKTt0aGlzLl9zZXRNZW1iZXIoIml0ZXJhdGlvbnMiLGEpfSxnZXQgaXRlcmF0aW9ucygpe3JldHVybiB0aGlzLl9pdGVyYXRpb25zfX07dmFyIHk9MSx6PS41LEE9MCxCPXtlYXNlOmkoLjI1LC4xLC4yNSwxKSwiZWFzZS1pbiI6aSguNDIsMCwxLDEpLCJlYXNlLW91dCI6aSgwLDAsLjU4LDEpLCJlYXNlLWluLW91dCI6aSguNDIsMCwuNTgsMSksInN0ZXAtc3RhcnQiOmooMSx5KSwic3RlcC1taWRkbGUiOmooMSx6KSwic3RlcC1lbmQiOmooMSxBKX0sQz1udWxsLEQ9IlxccyooLT9cXGQrXFwuP1xcZCp8LT9cXC5cXGQrKVxccyoiLEU9bmV3IFJlZ0V4cCgiY3ViaWMtYmV6aWVyXFwoIitEKyIsIitEKyIsIitEKyIsIitEKyJcXCkiKSxGPS9zdGVwc1woXHMqKFxkKylccypcKS8sRz0vc3RlcHNcKFxzKihcZCspXHMqLFxzKihzdGFydHxtaWRkbGV8ZW5kKVxzKlwpLyxIPTAsST0xLEo9MixLPTM7YS5jbG9uZVRpbWluZ0lucHV0PWMsYS5tYWtlVGltaW5nPWYsYS5udW1lcmljVGltaW5nVG9PYmplY3Q9ZyxhLm5vcm1hbGl6ZVRpbWluZ0lucHV0PWgsYS5jYWxjdWxhdGVBY3RpdmVEdXJhdGlvbj1tLGEuY2FsY3VsYXRlSXRlcmF0aW9uUHJvZ3Jlc3M9dSxhLmNhbGN1bGF0ZVBoYXNlPW8sYS5ub3JtYWxpemVFYXNpbmc9ayxhLnBhcnNlRWFzaW5nRnVuY3Rpb249bH0oYSksZnVuY3Rpb24oYSxiKXtmdW5jdGlvbiBjKGEsYil7cmV0dXJuIGEgaW4gaz9rW2FdW2JdfHxiOmJ9ZnVuY3Rpb24gZChhKXtyZXR1cm4iZGlzcGxheSI9PT1hfHwwPT09YS5sYXN0SW5kZXhPZigiYW5pbWF0aW9uIiwwKXx8MD09PWEubGFzdEluZGV4T2YoInRyYW5zaXRpb24iLDApfWZ1bmN0aW9uIGUoYSxiLGUpe2lmKCFkKGEpKXt2YXIgZj1oW2FdO2lmKGYpe2kuc3R5bGVbYV09Yjtmb3IodmFyIGcgaW4gZil7dmFyIGo9ZltnXSxrPWkuc3R5bGVbal07ZVtqXT1jKGosayl9fWVsc2UgZVthXT1jKGEsYil9fWZ1bmN0aW9uIGYoYSl7dmFyIGI9W107Zm9yKHZhciBjIGluIGEpaWYoIShjIGluWyJlYXNpbmciLCJvZmZzZXQiLCJjb21wb3NpdGUiXSkpe3ZhciBkPWFbY107QXJyYXkuaXNBcnJheShkKXx8KGQ9W2RdKTtmb3IodmFyIGUsZj1kLmxlbmd0aCxnPTA7ZzxmO2crKyllPXt9LGUub2Zmc2V0PSJvZmZzZXQiaW4gYT9hLm9mZnNldDoxPT1mPzE6Zy8oZi0xKSwiZWFzaW5nImluIGEmJihlLmVhc2luZz1hLmVhc2luZyksImNvbXBvc2l0ZSJpbiBhJiYoZS5jb21wb3NpdGU9YS5jb21wb3NpdGUpLGVbY109ZFtnXSxiLnB1c2goZSl9cmV0dXJuIGIuc29ydChmdW5jdGlvbihhLGIpe3JldHVybiBhLm9mZnNldC1iLm9mZnNldH0pLGJ9ZnVuY3Rpb24gZyhiKXtmdW5jdGlvbiBjKCl7dmFyIGE9ZC5sZW5ndGg7bnVsbD09ZFthLTFdLm9mZnNldCYmKGRbYS0xXS5vZmZzZXQ9MSksYT4xJiZudWxsPT1kWzBdLm9mZnNldCYmKGRbMF0ub2Zmc2V0PTApO2Zvcih2YXIgYj0wLGM9ZFswXS5vZmZzZXQsZT0xO2U8YTtlKyspe3ZhciBmPWRbZV0ub2Zmc2V0O2lmKG51bGwhPWYpe2Zvcih2YXIgZz0xO2c8ZS1iO2crKylkW2IrZ10ub2Zmc2V0PWMrKGYtYykqZy8oZS1iKTtiPWUsYz1mfX19aWYobnVsbD09YilyZXR1cm5bXTt3aW5kb3cuU3ltYm9sJiZTeW1ib2wuaXRlcmF0b3ImJkFycmF5LnByb3RvdHlwZS5mcm9tJiZiW1N5bWJvbC5pdGVyYXRvcl0mJihiPUFycmF5LmZyb20oYikpLEFycmF5LmlzQXJyYXkoYil8fChiPWYoYikpO2Zvcih2YXIgZD1iLm1hcChmdW5jdGlvbihiKXt2YXIgYz17fTtmb3IodmFyIGQgaW4gYil7dmFyIGY9YltkXTtpZigib2Zmc2V0Ij09ZCl7aWYobnVsbCE9Zil7aWYoZj1OdW1iZXIoZiksIWlzRmluaXRlKGYpKXRocm93IG5ldyBUeXBlRXJyb3IoIktleWZyYW1lIG9mZnNldHMgbXVzdCBiZSBudW1iZXJzLiIpO2lmKGY8MHx8Zj4xKXRocm93IG5ldyBUeXBlRXJyb3IoIktleWZyYW1lIG9mZnNldHMgbXVzdCBiZSBiZXR3ZWVuIDAgYW5kIDEuIil9fWVsc2UgaWYoImNvbXBvc2l0ZSI9PWQpe2lmKCJhZGQiPT1mfHwiYWNjdW11bGF0ZSI9PWYpdGhyb3d7dHlwZTpET01FeGNlcHRpb24uTk9UX1NVUFBPUlRFRF9FUlIsbmFtZToiTm90U3VwcG9ydGVkRXJyb3IiLG1lc3NhZ2U6ImFkZCBjb21wb3NpdGluZyBpcyBub3Qgc3VwcG9ydGVkIn07aWYoInJlcGxhY2UiIT1mKXRocm93IG5ldyBUeXBlRXJyb3IoIkludmFsaWQgY29tcG9zaXRlIG1vZGUgIitmKyIuIil9ZWxzZSBmPSJlYXNpbmciPT1kP2Eubm9ybWFsaXplRWFzaW5nKGYpOiIiK2Y7ZShkLGYsYyl9cmV0dXJuIHZvaWQgMD09Yy5vZmZzZXQmJihjLm9mZnNldD1udWxsKSx2b2lkIDA9PWMuZWFzaW5nJiYoYy5lYXNpbmc9ImxpbmVhciIpLGN9KSxnPSEwLGg9LTEvMCxpPTA7aTxkLmxlbmd0aDtpKyspe3ZhciBqPWRbaV0ub2Zmc2V0O2lmKG51bGwhPWope2lmKGo8aCl0aHJvdyBuZXcgVHlwZUVycm9yKCJLZXlmcmFtZXMgYXJlIG5vdCBsb29zZWx5IHNvcnRlZCBieSBvZmZzZXQuIFNvcnQgb3Igc3BlY2lmeSBvZmZzZXRzLiIpO2g9an1lbHNlIGc9ITF9cmV0dXJuIGQ9ZC5maWx0ZXIoZnVuY3Rpb24oYSl7cmV0dXJuIGEub2Zmc2V0Pj0wJiZhLm9mZnNldDw9MX0pLGd8fGMoKSxkfXZhciBoPXtiYWNrZ3JvdW5kOlsiYmFja2dyb3VuZEltYWdlIiwiYmFja2dyb3VuZFBvc2l0aW9uIiwiYmFja2dyb3VuZFNpemUiLCJiYWNrZ3JvdW5kUmVwZWF0IiwiYmFja2dyb3VuZEF0dGFjaG1lbnQiLCJiYWNrZ3JvdW5kT3JpZ2luIiwiYmFja2dyb3VuZENsaXAiLCJiYWNrZ3JvdW5kQ29sb3IiXSxib3JkZXI6WyJib3JkZXJUb3BDb2xvciIsImJvcmRlclRvcFN0eWxlIiwiYm9yZGVyVG9wV2lkdGgiLCJib3JkZXJSaWdodENvbG9yIiwiYm9yZGVyUmlnaHRTdHlsZSIsImJvcmRlclJpZ2h0V2lkdGgiLCJib3JkZXJCb3R0b21Db2xvciIsImJvcmRlckJvdHRvbVN0eWxlIiwiYm9yZGVyQm90dG9tV2lkdGgiLCJib3JkZXJMZWZ0Q29sb3IiLCJib3JkZXJMZWZ0U3R5bGUiLCJib3JkZXJMZWZ0V2lkdGgiXSxib3JkZXJCb3R0b206WyJib3JkZXJCb3R0b21XaWR0aCIsImJvcmRlckJvdHRvbVN0eWxlIiwiYm9yZGVyQm90dG9tQ29sb3IiXSxib3JkZXJDb2xvcjpbImJvcmRlclRvcENvbG9yIiwiYm9yZGVyUmlnaHRDb2xvciIsImJvcmRlckJvdHRvbUNvbG9yIiwiYm9yZGVyTGVmdENvbG9yIl0sYm9yZGVyTGVmdDpbImJvcmRlckxlZnRXaWR0aCIsImJvcmRlckxlZnRTdHlsZSIsImJvcmRlckxlZnRDb2xvciJdLGJvcmRlclJhZGl1czpbImJvcmRlclRvcExlZnRSYWRpdXMiLCJib3JkZXJUb3BSaWdodFJhZGl1cyIsImJvcmRlckJvdHRvbVJpZ2h0UmFkaXVzIiwiYm9yZGVyQm90dG9tTGVmdFJhZGl1cyJdLGJvcmRlclJpZ2h0OlsiYm9yZGVyUmlnaHRXaWR0aCIsImJvcmRlclJpZ2h0U3R5bGUiLCJib3JkZXJSaWdodENvbG9yIl0sYm9yZGVyVG9wOlsiYm9yZGVyVG9wV2lkdGgiLCJib3JkZXJUb3BTdHlsZSIsImJvcmRlclRvcENvbG9yIl0sYm9yZGVyV2lkdGg6WyJib3JkZXJUb3BXaWR0aCIsImJvcmRlclJpZ2h0V2lkdGgiLCJib3JkZXJCb3R0b21XaWR0aCIsImJvcmRlckxlZnRXaWR0aCJdLGZsZXg6WyJmbGV4R3JvdyIsImZsZXhTaHJpbmsiLCJmbGV4QmFzaXMiXSxmb250OlsiZm9udEZhbWlseSIsImZvbnRTaXplIiwiZm9udFN0eWxlIiwiZm9udFZhcmlhbnQiLCJmb250V2VpZ2h0IiwibGluZUhlaWdodCJdLG1hcmdpbjpbIm1hcmdpblRvcCIsIm1hcmdpblJpZ2h0IiwibWFyZ2luQm90dG9tIiwibWFyZ2luTGVmdCJdLG91dGxpbmU6WyJvdXRsaW5lQ29sb3IiLCJvdXRsaW5lU3R5bGUiLCJvdXRsaW5lV2lkdGgiXSxwYWRkaW5nOlsicGFkZGluZ1RvcCIsInBhZGRpbmdSaWdodCIsInBhZGRpbmdCb3R0b20iLCJwYWRkaW5nTGVmdCJdfSxpPWRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3dy53My5vcmcvMTk5OS94aHRtbCIsImRpdiIpLGo9e3RoaW46IjFweCIsbWVkaXVtOiIzcHgiLHRoaWNrOiI1cHgifSxrPXtib3JkZXJCb3R0b21XaWR0aDpqLGJvcmRlckxlZnRXaWR0aDpqLGJvcmRlclJpZ2h0V2lkdGg6aixib3JkZXJUb3BXaWR0aDpqLGZvbnRTaXplOnsieHgtc21hbGwiOiI2MCUiLCJ4LXNtYWxsIjoiNzUlIixzbWFsbDoiODklIixtZWRpdW06IjEwMCUiLGxhcmdlOiIxMjAlIiwieC1sYXJnZSI6IjE1MCUiLCJ4eC1sYXJnZSI6IjIwMCUifSxmb250V2VpZ2h0Ontub3JtYWw6IjQwMCIsYm9sZDoiNzAwIn0sb3V0bGluZVdpZHRoOmosdGV4dFNoYWRvdzp7bm9uZToiMHB4IDBweCAwcHggdHJhbnNwYXJlbnQifSxib3hTaGFkb3c6e25vbmU6IjBweCAwcHggMHB4IDBweCB0cmFuc3BhcmVudCJ9fTthLmNvbnZlcnRUb0FycmF5Rm9ybT1mLGEubm9ybWFsaXplS2V5ZnJhbWVzPWd9KGEpLGZ1bmN0aW9uKGEpe3ZhciBiPXt9O2EuaXNEZXByZWNhdGVkPWZ1bmN0aW9uKGEsYyxkLGUpe3ZhciBmPWU/ImFyZSI6ImlzIixnPW5ldyBEYXRlLGg9bmV3IERhdGUoYyk7cmV0dXJuIGguc2V0TW9udGgoaC5nZXRNb250aCgpKzMpLCEoZzxoJiYoYSBpbiBifHxjb25zb2xlLndhcm4oIldlYiBBbmltYXRpb25zOiAiK2ErIiAiK2YrIiBkZXByZWNhdGVkIGFuZCB3aWxsIHN0b3Agd29ya2luZyBvbiAiK2gudG9EYXRlU3RyaW5nKCkrIi4gIitkKSxiW2FdPSEwLDEpKX0sYS5kZXByZWNhdGVkPWZ1bmN0aW9uKGIsYyxkLGUpe3ZhciBmPWU/ImFyZSI6ImlzIjtpZihhLmlzRGVwcmVjYXRlZChiLGMsZCxlKSl0aHJvdyBuZXcgRXJyb3IoYisiICIrZisiIG5vIGxvbmdlciBzdXBwb3J0ZWQuICIrZCl9fShhKSxmdW5jdGlvbigpe2lmKGRvY3VtZW50LmRvY3VtZW50RWxlbWVudC5hbmltYXRlKXt2YXIgYz1kb2N1bWVudC5kb2N1bWVudEVsZW1lbnQuYW5pbWF0ZShbXSwwKSxkPSEwO2lmKGMmJihkPSExLCJwbGF5fGN1cnJlbnRUaW1lfHBhdXNlfHJldmVyc2V8cGxheWJhY2tSYXRlfGNhbmNlbHxmaW5pc2h8c3RhcnRUaW1lfHBsYXlTdGF0ZSIuc3BsaXQoInwiKS5mb3JFYWNoKGZ1bmN0aW9uKGEpe3ZvaWQgMD09PWNbYV0mJihkPSEwKX0pKSwhZClyZXR1cm59IWZ1bmN0aW9uKGEsYixjKXtmdW5jdGlvbiBkKGEpe2Zvcih2YXIgYj17fSxjPTA7YzxhLmxlbmd0aDtjKyspZm9yKHZhciBkIGluIGFbY10paWYoIm9mZnNldCIhPWQmJiJlYXNpbmciIT1kJiYiY29tcG9zaXRlIiE9ZCl7dmFyIGU9e29mZnNldDphW2NdLm9mZnNldCxlYXNpbmc6YVtjXS5lYXNpbmcsdmFsdWU6YVtjXVtkXX07YltkXT1iW2RdfHxbXSxiW2RdLnB1c2goZSl9Zm9yKHZhciBmIGluIGIpe3ZhciBnPWJbZl07aWYoMCE9Z1swXS5vZmZzZXR8fDEhPWdbZy5sZW5ndGgtMV0ub2Zmc2V0KXRocm93e3R5cGU6RE9NRXhjZXB0aW9uLk5PVF9TVVBQT1JURURfRVJSLG5hbWU6Ik5vdFN1cHBvcnRlZEVycm9yIixtZXNzYWdlOiJQYXJ0aWFsIGtleWZyYW1lcyBhcmUgbm90IHN1cHBvcnRlZCJ9fXJldHVybiBifWZ1bmN0aW9uIGUoYyl7dmFyIGQ9W107Zm9yKHZhciBlIGluIGMpZm9yKHZhciBmPWNbZV0sZz0wO2c8Zi5sZW5ndGgtMTtnKyspe3ZhciBoPWcsaT1nKzEsaj1mW2hdLm9mZnNldCxrPWZbaV0ub2Zmc2V0LGw9aixtPWs7MD09ZyYmKGw9LTEvMCwwPT1rJiYoaT1oKSksZz09Zi5sZW5ndGgtMiYmKG09MS8wLDE9PWomJihoPWkpKSxkLnB1c2goe2FwcGx5RnJvbTpsLGFwcGx5VG86bSxzdGFydE9mZnNldDpmW2hdLm9mZnNldCxlbmRPZmZzZXQ6ZltpXS5vZmZzZXQsZWFzaW5nRnVuY3Rpb246YS5wYXJzZUVhc2luZ0Z1bmN0aW9uKGZbaF0uZWFzaW5nKSxwcm9wZXJ0eTplLGludGVycG9sYXRpb246Yi5wcm9wZXJ0eUludGVycG9sYXRpb24oZSxmW2hdLnZhbHVlLGZbaV0udmFsdWUpfSl9cmV0dXJuIGQuc29ydChmdW5jdGlvbihhLGIpe3JldHVybiBhLnN0YXJ0T2Zmc2V0LWIuc3RhcnRPZmZzZXR9KSxkfWIuY29udmVydEVmZmVjdElucHV0PWZ1bmN0aW9uKGMpe3ZhciBmPWEubm9ybWFsaXplS2V5ZnJhbWVzKGMpLGc9ZChmKSxoPWUoZyk7cmV0dXJuIGZ1bmN0aW9uKGEsYyl7aWYobnVsbCE9YyloLmZpbHRlcihmdW5jdGlvbihhKXtyZXR1cm4gYz49YS5hcHBseUZyb20mJmM8YS5hcHBseVRvfSkuZm9yRWFjaChmdW5jdGlvbihkKXt2YXIgZT1jLWQuc3RhcnRPZmZzZXQsZj1kLmVuZE9mZnNldC1kLnN0YXJ0T2Zmc2V0LGc9MD09Zj8wOmQuZWFzaW5nRnVuY3Rpb24oZS9mKTtiLmFwcGx5KGEsZC5wcm9wZXJ0eSxkLmludGVycG9sYXRpb24oZykpfSk7ZWxzZSBmb3IodmFyIGQgaW4gZykib2Zmc2V0IiE9ZCYmImVhc2luZyIhPWQmJiJjb21wb3NpdGUiIT1kJiZiLmNsZWFyKGEsZCl9fX0oYSxiKSxmdW5jdGlvbihhLGIsYyl7ZnVuY3Rpb24gZChhKXtyZXR1cm4gYS5yZXBsYWNlKC8tKC4pL2csZnVuY3Rpb24oYSxiKXtyZXR1cm4gYi50b1VwcGVyQ2FzZSgpfSl9ZnVuY3Rpb24gZShhLGIsYyl7aFtjXT1oW2NdfHxbXSxoW2NdLnB1c2goW2EsYl0pfWZ1bmN0aW9uIGYoYSxiLGMpe2Zvcih2YXIgZj0wO2Y8Yy5sZW5ndGg7ZisrKXtlKGEsYixkKGNbZl0pKX19ZnVuY3Rpb24gZyhjLGUsZil7dmFyIGc9YzsvLS8udGVzdChjKSYmIWEuaXNEZXByZWNhdGVkKCJIeXBoZW5hdGVkIHByb3BlcnR5IG5hbWVzIiwiMjAxNi0wMy0yMiIsIlVzZSBjYW1lbENhc2UgaW5zdGVhZC4iLCEwKSYmKGc9ZChjKSksImluaXRpYWwiIT1lJiYiaW5pdGlhbCIhPWZ8fCgiaW5pdGlhbCI9PWUmJihlPWlbZ10pLCJpbml0aWFsIj09ZiYmKGY9aVtnXSkpO2Zvcih2YXIgaj1lPT1mP1tdOmhbZ10saz0wO2omJms8ai5sZW5ndGg7aysrKXt2YXIgbD1qW2tdWzBdKGUpLG09altrXVswXShmKTtpZih2b2lkIDAhPT1sJiZ2b2lkIDAhPT1tKXt2YXIgbj1qW2tdWzFdKGwsbSk7aWYobil7dmFyIG89Yi5JbnRlcnBvbGF0aW9uLmFwcGx5KG51bGwsbik7cmV0dXJuIGZ1bmN0aW9uKGEpe3JldHVybiAwPT1hP2U6MT09YT9mOm8oYSl9fX19cmV0dXJuIGIuSW50ZXJwb2xhdGlvbighMSwhMCxmdW5jdGlvbihhKXtyZXR1cm4gYT9mOmV9KX12YXIgaD17fTtiLmFkZFByb3BlcnRpZXNIYW5kbGVyPWY7dmFyIGk9e2JhY2tncm91bmRDb2xvcjoidHJhbnNwYXJlbnQiLGJhY2tncm91bmRQb3NpdGlvbjoiMCUgMCUiLGJvcmRlckJvdHRvbUNvbG9yOiJjdXJyZW50Q29sb3IiLGJvcmRlckJvdHRvbUxlZnRSYWRpdXM6IjBweCIsYm9yZGVyQm90dG9tUmlnaHRSYWRpdXM6IjBweCIsYm9yZGVyQm90dG9tV2lkdGg6IjNweCIsYm9yZGVyTGVmdENvbG9yOiJjdXJyZW50Q29sb3IiLGJvcmRlckxlZnRXaWR0aDoiM3B4Iixib3JkZXJSaWdodENvbG9yOiJjdXJyZW50Q29sb3IiLGJvcmRlclJpZ2h0V2lkdGg6IjNweCIsYm9yZGVyU3BhY2luZzoiMnB4Iixib3JkZXJUb3BDb2xvcjoiY3VycmVudENvbG9yIixib3JkZXJUb3BMZWZ0UmFkaXVzOiIwcHgiLGJvcmRlclRvcFJpZ2h0UmFkaXVzOiIwcHgiLGJvcmRlclRvcFdpZHRoOiIzcHgiLGJvdHRvbToiYXV0byIsY2xpcDoicmVjdCgwcHgsIDBweCwgMHB4LCAwcHgpIixjb2xvcjoiYmxhY2siLGZvbnRTaXplOiIxMDAlIixmb250V2VpZ2h0OiI0MDAiLGhlaWdodDoiYXV0byIsbGVmdDoiYXV0byIsbGV0dGVyU3BhY2luZzoibm9ybWFsIixsaW5lSGVpZ2h0OiIxMjAlIixtYXJnaW5Cb3R0b206IjBweCIsbWFyZ2luTGVmdDoiMHB4IixtYXJnaW5SaWdodDoiMHB4IixtYXJnaW5Ub3A6IjBweCIsbWF4SGVpZ2h0OiJub25lIixtYXhXaWR0aDoibm9uZSIsbWluSGVpZ2h0OiIwcHgiLG1pbldpZHRoOiIwcHgiLG9wYWNpdHk6IjEuMCIsb3V0bGluZUNvbG9yOiJpbnZlcnQiLG91dGxpbmVPZmZzZXQ6IjBweCIsb3V0bGluZVdpZHRoOiIzcHgiLHBhZGRpbmdCb3R0b206IjBweCIscGFkZGluZ0xlZnQ6IjBweCIscGFkZGluZ1JpZ2h0OiIwcHgiLHBhZGRpbmdUb3A6IjBweCIscmlnaHQ6ImF1dG8iLHN0cm9rZURhc2hhcnJheToibm9uZSIsc3Ryb2tlRGFzaG9mZnNldDoiMHB4Iix0ZXh0SW5kZW50OiIwcHgiLHRleHRTaGFkb3c6IjBweCAwcHggMHB4IHRyYW5zcGFyZW50Iix0b3A6ImF1dG8iLHRyYW5zZm9ybToiIix2ZXJ0aWNhbEFsaWduOiIwcHgiLHZpc2liaWxpdHk6InZpc2libGUiLHdpZHRoOiJhdXRvIix3b3JkU3BhY2luZzoibm9ybWFsIix6SW5kZXg6ImF1dG8ifTtiLnByb3BlcnR5SW50ZXJwb2xhdGlvbj1nfShhLGIpLGZ1bmN0aW9uKGEsYixjKXtmdW5jdGlvbiBkKGIpe3ZhciBjPWEuY2FsY3VsYXRlQWN0aXZlRHVyYXRpb24oYiksZD1mdW5jdGlvbihkKXtyZXR1cm4gYS5jYWxjdWxhdGVJdGVyYXRpb25Qcm9ncmVzcyhjLGQsYil9O3JldHVybiBkLl90b3RhbER1cmF0aW9uPWIuZGVsYXkrYytiLmVuZERlbGF5LGR9Yi5LZXlmcmFtZUVmZmVjdD1mdW5jdGlvbihjLGUsZixnKXt2YXIgaCxpPWQoYS5ub3JtYWxpemVUaW1pbmdJbnB1dChmKSksaj1iLmNvbnZlcnRFZmZlY3RJbnB1dChlKSxrPWZ1bmN0aW9uKCl7aihjLGgpfTtyZXR1cm4gay5fdXBkYXRlPWZ1bmN0aW9uKGEpe3JldHVybiBudWxsIT09KGg9aShhKSl9LGsuX2NsZWFyPWZ1bmN0aW9uKCl7aihjLG51bGwpfSxrLl9oYXNTYW1lVGFyZ2V0PWZ1bmN0aW9uKGEpe3JldHVybiBjPT09YX0say5fdGFyZ2V0PWMsay5fdG90YWxEdXJhdGlvbj1pLl90b3RhbER1cmF0aW9uLGsuX2lkPWcsa319KGEsYiksZnVuY3Rpb24oYSxiKXthLmFwcGx5PWZ1bmN0aW9uKGIsYyxkKXtiLnN0eWxlW2EucHJvcGVydHlOYW1lKGMpXT1kfSxhLmNsZWFyPWZ1bmN0aW9uKGIsYyl7Yi5zdHlsZVthLnByb3BlcnR5TmFtZShjKV09IiJ9fShiKSxmdW5jdGlvbihhKXt3aW5kb3cuRWxlbWVudC5wcm90b3R5cGUuYW5pbWF0ZT1mdW5jdGlvbihiLGMpe3ZhciBkPSIiO3JldHVybiBjJiZjLmlkJiYoZD1jLmlkKSxhLnRpbWVsaW5lLl9wbGF5KGEuS2V5ZnJhbWVFZmZlY3QodGhpcyxiLGMsZCkpfX0oYiksZnVuY3Rpb24oYSxiKXtmdW5jdGlvbiBjKGEsYixkKXtpZigibnVtYmVyIj09dHlwZW9mIGEmJiJudW1iZXIiPT10eXBlb2YgYilyZXR1cm4gYSooMS1kKStiKmQ7aWYoImJvb2xlYW4iPT10eXBlb2YgYSYmImJvb2xlYW4iPT10eXBlb2YgYilyZXR1cm4gZDwuNT9hOmI7aWYoYS5sZW5ndGg9PWIubGVuZ3RoKXtmb3IodmFyIGU9W10sZj0wO2Y8YS5sZW5ndGg7ZisrKWUucHVzaChjKGFbZl0sYltmXSxkKSk7cmV0dXJuIGV9dGhyb3ciTWlzbWF0Y2hlZCBpbnRlcnBvbGF0aW9uIGFyZ3VtZW50cyAiK2ErIjoiK2J9YS5JbnRlcnBvbGF0aW9uPWZ1bmN0aW9uKGEsYixkKXtyZXR1cm4gZnVuY3Rpb24oZSl7cmV0dXJuIGQoYyhhLGIsZSkpfX19KGIpLGZ1bmN0aW9uKGEsYixjKXthLnNlcXVlbmNlTnVtYmVyPTA7dmFyIGQ9ZnVuY3Rpb24oYSxiLGMpe3RoaXMudGFyZ2V0PWEsdGhpcy5jdXJyZW50VGltZT1iLHRoaXMudGltZWxpbmVUaW1lPWMsdGhpcy50eXBlPSJmaW5pc2giLHRoaXMuYnViYmxlcz0hMSx0aGlzLmNhbmNlbGFibGU9ITEsdGhpcy5jdXJyZW50VGFyZ2V0PWEsdGhpcy5kZWZhdWx0UHJldmVudGVkPSExLHRoaXMuZXZlbnRQaGFzZT1FdmVudC5BVF9UQVJHRVQsdGhpcy50aW1lU3RhbXA9RGF0ZS5ub3coKX07Yi5BbmltYXRpb249ZnVuY3Rpb24oYil7dGhpcy5pZD0iIixiJiZiLl9pZCYmKHRoaXMuaWQ9Yi5faWQpLHRoaXMuX3NlcXVlbmNlTnVtYmVyPWEuc2VxdWVuY2VOdW1iZXIrKyx0aGlzLl9jdXJyZW50VGltZT0wLHRoaXMuX3N0YXJ0VGltZT1udWxsLHRoaXMuX3BhdXNlZD0hMSx0aGlzLl9wbGF5YmFja1JhdGU9MSx0aGlzLl9pblRpbWVsaW5lPSEwLHRoaXMuX2ZpbmlzaGVkRmxhZz0hMCx0aGlzLm9uZmluaXNoPW51bGwsdGhpcy5fZmluaXNoSGFuZGxlcnM9W10sdGhpcy5fZWZmZWN0PWIsdGhpcy5faW5FZmZlY3Q9dGhpcy5fZWZmZWN0Ll91cGRhdGUoMCksdGhpcy5faWRsZT0hMCx0aGlzLl9jdXJyZW50VGltZVBlbmRpbmc9ITF9LGIuQW5pbWF0aW9uLnByb3RvdHlwZT17X2Vuc3VyZUFsaXZlOmZ1bmN0aW9uKCl7dGhpcy5wbGF5YmFja1JhdGU8MCYmMD09PXRoaXMuY3VycmVudFRpbWU/dGhpcy5faW5FZmZlY3Q9dGhpcy5fZWZmZWN0Ll91cGRhdGUoLTEpOnRoaXMuX2luRWZmZWN0PXRoaXMuX2VmZmVjdC5fdXBkYXRlKHRoaXMuY3VycmVudFRpbWUpLHRoaXMuX2luVGltZWxpbmV8fCF0aGlzLl9pbkVmZmVjdCYmdGhpcy5fZmluaXNoZWRGbGFnfHwodGhpcy5faW5UaW1lbGluZT0hMCxiLnRpbWVsaW5lLl9hbmltYXRpb25zLnB1c2godGhpcykpfSxfdGlja0N1cnJlbnRUaW1lOmZ1bmN0aW9uKGEsYil7YSE9dGhpcy5fY3VycmVudFRpbWUmJih0aGlzLl9jdXJyZW50VGltZT1hLHRoaXMuX2lzRmluaXNoZWQmJiFiJiYodGhpcy5fY3VycmVudFRpbWU9dGhpcy5fcGxheWJhY2tSYXRlPjA/dGhpcy5fdG90YWxEdXJhdGlvbjowKSx0aGlzLl9lbnN1cmVBbGl2ZSgpKX0sZ2V0IGN1cnJlbnRUaW1lKCl7cmV0dXJuIHRoaXMuX2lkbGV8fHRoaXMuX2N1cnJlbnRUaW1lUGVuZGluZz9udWxsOnRoaXMuX2N1cnJlbnRUaW1lfSxzZXQgY3VycmVudFRpbWUoYSl7YT0rYSxpc05hTihhKXx8KGIucmVzdGFydCgpLHRoaXMuX3BhdXNlZHx8bnVsbD09dGhpcy5fc3RhcnRUaW1lfHwodGhpcy5fc3RhcnRUaW1lPXRoaXMuX3RpbWVsaW5lLmN1cnJlbnRUaW1lLWEvdGhpcy5fcGxheWJhY2tSYXRlKSx0aGlzLl9jdXJyZW50VGltZVBlbmRpbmc9ITEsdGhpcy5fY3VycmVudFRpbWUhPWEmJih0aGlzLl9pZGxlJiYodGhpcy5faWRsZT0hMSx0aGlzLl9wYXVzZWQ9ITApLHRoaXMuX3RpY2tDdXJyZW50VGltZShhLCEwKSxiLmFwcGx5RGlydGllZEFuaW1hdGlvbih0aGlzKSkpfSxnZXQgc3RhcnRUaW1lKCl7cmV0dXJuIHRoaXMuX3N0YXJ0VGltZX0sc2V0IHN0YXJ0VGltZShhKXthPSthLGlzTmFOKGEpfHx0aGlzLl9wYXVzZWR8fHRoaXMuX2lkbGV8fCh0aGlzLl9zdGFydFRpbWU9YSx0aGlzLl90aWNrQ3VycmVudFRpbWUoKHRoaXMuX3RpbWVsaW5lLmN1cnJlbnRUaW1lLXRoaXMuX3N0YXJ0VGltZSkqdGhpcy5wbGF5YmFja1JhdGUpLGIuYXBwbHlEaXJ0aWVkQW5pbWF0aW9uKHRoaXMpKX0sZ2V0IHBsYXliYWNrUmF0ZSgpe3JldHVybiB0aGlzLl9wbGF5YmFja1JhdGV9LHNldCBwbGF5YmFja1JhdGUoYSl7aWYoYSE9dGhpcy5fcGxheWJhY2tSYXRlKXt2YXIgYz10aGlzLmN1cnJlbnRUaW1lO3RoaXMuX3BsYXliYWNrUmF0ZT1hLHRoaXMuX3N0YXJ0VGltZT1udWxsLCJwYXVzZWQiIT10aGlzLnBsYXlTdGF0ZSYmImlkbGUiIT10aGlzLnBsYXlTdGF0ZSYmKHRoaXMuX2ZpbmlzaGVkRmxhZz0hMSx0aGlzLl9pZGxlPSExLHRoaXMuX2Vuc3VyZUFsaXZlKCksYi5hcHBseURpcnRpZWRBbmltYXRpb24odGhpcykpLG51bGwhPWMmJih0aGlzLmN1cnJlbnRUaW1lPWMpfX0sZ2V0IF9pc0ZpbmlzaGVkKCl7cmV0dXJuIXRoaXMuX2lkbGUmJih0aGlzLl9wbGF5YmFja1JhdGU+MCYmdGhpcy5fY3VycmVudFRpbWU+PXRoaXMuX3RvdGFsRHVyYXRpb258fHRoaXMuX3BsYXliYWNrUmF0ZTwwJiZ0aGlzLl9jdXJyZW50VGltZTw9MCl9LGdldCBfdG90YWxEdXJhdGlvbigpe3JldHVybiB0aGlzLl9lZmZlY3QuX3RvdGFsRHVyYXRpb259LGdldCBwbGF5U3RhdGUoKXtyZXR1cm4gdGhpcy5faWRsZT8iaWRsZSI6bnVsbD09dGhpcy5fc3RhcnRUaW1lJiYhdGhpcy5fcGF1c2VkJiYwIT10aGlzLnBsYXliYWNrUmF0ZXx8dGhpcy5fY3VycmVudFRpbWVQZW5kaW5nPyJwZW5kaW5nIjp0aGlzLl9wYXVzZWQ/InBhdXNlZCI6dGhpcy5faXNGaW5pc2hlZD8iZmluaXNoZWQiOiJydW5uaW5nIn0sX3Jld2luZDpmdW5jdGlvbigpe2lmKHRoaXMuX3BsYXliYWNrUmF0ZT49MCl0aGlzLl9jdXJyZW50VGltZT0wO2Vsc2V7aWYoISh0aGlzLl90b3RhbER1cmF0aW9uPDEvMCkpdGhyb3cgbmV3IERPTUV4Y2VwdGlvbigiVW5hYmxlIHRvIHJld2luZCBuZWdhdGl2ZSBwbGF5YmFjayByYXRlIGFuaW1hdGlvbiB3aXRoIGluZmluaXRlIGR1cmF0aW9uIiwiSW52YWxpZFN0YXRlRXJyb3IiKTt0aGlzLl9jdXJyZW50VGltZT10aGlzLl90b3RhbER1cmF0aW9ufX0scGxheTpmdW5jdGlvbigpe3RoaXMuX3BhdXNlZD0hMSwodGhpcy5faXNGaW5pc2hlZHx8dGhpcy5faWRsZSkmJih0aGlzLl9yZXdpbmQoKSx0aGlzLl9zdGFydFRpbWU9bnVsbCksdGhpcy5fZmluaXNoZWRGbGFnPSExLHRoaXMuX2lkbGU9ITEsdGhpcy5fZW5zdXJlQWxpdmUoKSxiLmFwcGx5RGlydGllZEFuaW1hdGlvbih0aGlzKX0scGF1c2U6ZnVuY3Rpb24oKXt0aGlzLl9pc0ZpbmlzaGVkfHx0aGlzLl9wYXVzZWR8fHRoaXMuX2lkbGU/dGhpcy5faWRsZSYmKHRoaXMuX3Jld2luZCgpLHRoaXMuX2lkbGU9ITEpOnRoaXMuX2N1cnJlbnRUaW1lUGVuZGluZz0hMCx0aGlzLl9zdGFydFRpbWU9bnVsbCx0aGlzLl9wYXVzZWQ9ITB9LGZpbmlzaDpmdW5jdGlvbigpe3RoaXMuX2lkbGV8fCh0aGlzLmN1cnJlbnRUaW1lPXRoaXMuX3BsYXliYWNrUmF0ZT4wP3RoaXMuX3RvdGFsRHVyYXRpb246MCx0aGlzLl9zdGFydFRpbWU9dGhpcy5fdG90YWxEdXJhdGlvbi10aGlzLmN1cnJlbnRUaW1lLHRoaXMuX2N1cnJlbnRUaW1lUGVuZGluZz0hMSxiLmFwcGx5RGlydGllZEFuaW1hdGlvbih0aGlzKSl9LGNhbmNlbDpmdW5jdGlvbigpe3RoaXMuX2luRWZmZWN0JiYodGhpcy5faW5FZmZlY3Q9ITEsdGhpcy5faWRsZT0hMCx0aGlzLl9wYXVzZWQ9ITEsdGhpcy5fZmluaXNoZWRGbGFnPSEwLHRoaXMuX2N1cnJlbnRUaW1lPTAsdGhpcy5fc3RhcnRUaW1lPW51bGwsdGhpcy5fZWZmZWN0Ll91cGRhdGUobnVsbCksYi5hcHBseURpcnRpZWRBbmltYXRpb24odGhpcykpfSxyZXZlcnNlOmZ1bmN0aW9uKCl7dGhpcy5wbGF5YmFja1JhdGUqPS0xLHRoaXMucGxheSgpfSxhZGRFdmVudExpc3RlbmVyOmZ1bmN0aW9uKGEsYil7ImZ1bmN0aW9uIj09dHlwZW9mIGImJiJmaW5pc2giPT1hJiZ0aGlzLl9maW5pc2hIYW5kbGVycy5wdXNoKGIpfSxyZW1vdmVFdmVudExpc3RlbmVyOmZ1bmN0aW9uKGEsYil7aWYoImZpbmlzaCI9PWEpe3ZhciBjPXRoaXMuX2ZpbmlzaEhhbmRsZXJzLmluZGV4T2YoYik7Yz49MCYmdGhpcy5fZmluaXNoSGFuZGxlcnMuc3BsaWNlKGMsMSl9fSxfZmlyZUV2ZW50czpmdW5jdGlvbihhKXtpZih0aGlzLl9pc0ZpbmlzaGVkKXtpZighdGhpcy5fZmluaXNoZWRGbGFnKXt2YXIgYj1uZXcgZCh0aGlzLHRoaXMuX2N1cnJlbnRUaW1lLGEpLGM9dGhpcy5fZmluaXNoSGFuZGxlcnMuY29uY2F0KHRoaXMub25maW5pc2g/W3RoaXMub25maW5pc2hdOltdKTtzZXRUaW1lb3V0KGZ1bmN0aW9uKCl7Yy5mb3JFYWNoKGZ1bmN0aW9uKGEpe2EuY2FsbChiLnRhcmdldCxiKX0pfSwwKSx0aGlzLl9maW5pc2hlZEZsYWc9ITB9fWVsc2UgdGhpcy5fZmluaXNoZWRGbGFnPSExfSxfdGljazpmdW5jdGlvbihhLGIpe3RoaXMuX2lkbGV8fHRoaXMuX3BhdXNlZHx8KG51bGw9PXRoaXMuX3N0YXJ0VGltZT9iJiYodGhpcy5zdGFydFRpbWU9YS10aGlzLl9jdXJyZW50VGltZS90aGlzLnBsYXliYWNrUmF0ZSk6dGhpcy5faXNGaW5pc2hlZHx8dGhpcy5fdGlja0N1cnJlbnRUaW1lKChhLXRoaXMuX3N0YXJ0VGltZSkqdGhpcy5wbGF5YmFja1JhdGUpKSxiJiYodGhpcy5fY3VycmVudFRpbWVQZW5kaW5nPSExLHRoaXMuX2ZpcmVFdmVudHMoYSkpfSxnZXQgX25lZWRzVGljaygpe3JldHVybiB0aGlzLnBsYXlTdGF0ZSBpbntwZW5kaW5nOjEscnVubmluZzoxfXx8IXRoaXMuX2ZpbmlzaGVkRmxhZ30sX3RhcmdldEFuaW1hdGlvbnM6ZnVuY3Rpb24oKXt2YXIgYT10aGlzLl9lZmZlY3QuX3RhcmdldDtyZXR1cm4gYS5fYWN0aXZlQW5pbWF0aW9uc3x8KGEuX2FjdGl2ZUFuaW1hdGlvbnM9W10pLGEuX2FjdGl2ZUFuaW1hdGlvbnN9LF9tYXJrVGFyZ2V0OmZ1bmN0aW9uKCl7dmFyIGE9dGhpcy5fdGFyZ2V0QW5pbWF0aW9ucygpOy0xPT09YS5pbmRleE9mKHRoaXMpJiZhLnB1c2godGhpcyl9LF91bm1hcmtUYXJnZXQ6ZnVuY3Rpb24oKXt2YXIgYT10aGlzLl90YXJnZXRBbmltYXRpb25zKCksYj1hLmluZGV4T2YodGhpcyk7LTEhPT1iJiZhLnNwbGljZShiLDEpfX19KGEsYiksZnVuY3Rpb24oYSxiLGMpe2Z1bmN0aW9uIGQoYSl7dmFyIGI9ajtqPVtdLGE8cS5jdXJyZW50VGltZSYmKGE9cS5jdXJyZW50VGltZSkscS5fYW5pbWF0aW9ucy5zb3J0KGUpLHEuX2FuaW1hdGlvbnM9aChhLCEwLHEuX2FuaW1hdGlvbnMpWzBdLGIuZm9yRWFjaChmdW5jdGlvbihiKXtiWzFdKGEpfSksZygpLGw9dm9pZCAwfWZ1bmN0aW9uIGUoYSxiKXtyZXR1cm4gYS5fc2VxdWVuY2VOdW1iZXItYi5fc2VxdWVuY2VOdW1iZXJ9ZnVuY3Rpb24gZigpe3RoaXMuX2FuaW1hdGlvbnM9W10sdGhpcy5jdXJyZW50VGltZT13aW5kb3cucGVyZm9ybWFuY2UmJnBlcmZvcm1hbmNlLm5vdz9wZXJmb3JtYW5jZS5ub3coKTowfWZ1bmN0aW9uIGcoKXtvLmZvckVhY2goZnVuY3Rpb24oYSl7YSgpfSksby5sZW5ndGg9MH1mdW5jdGlvbiBoKGEsYyxkKXtwPSEwLG49ITEsYi50aW1lbGluZS5jdXJyZW50VGltZT1hLG09ITE7dmFyIGU9W10sZj1bXSxnPVtdLGg9W107cmV0dXJuIGQuZm9yRWFjaChmdW5jdGlvbihiKXtiLl90aWNrKGEsYyksYi5faW5FZmZlY3Q/KGYucHVzaChiLl9lZmZlY3QpLGIuX21hcmtUYXJnZXQoKSk6KGUucHVzaChiLl9lZmZlY3QpLGIuX3VubWFya1RhcmdldCgpKSxiLl9uZWVkc1RpY2smJihtPSEwKTt2YXIgZD1iLl9pbkVmZmVjdHx8Yi5fbmVlZHNUaWNrO2IuX2luVGltZWxpbmU9ZCxkP2cucHVzaChiKTpoLnB1c2goYil9KSxvLnB1c2guYXBwbHkobyxlKSxvLnB1c2guYXBwbHkobyxmKSxtJiZyZXF1ZXN0QW5pbWF0aW9uRnJhbWUoZnVuY3Rpb24oKXt9KSxwPSExLFtnLGhdfXZhciBpPXdpbmRvdy5yZXF1ZXN0QW5pbWF0aW9uRnJhbWUsaj1bXSxrPTA7d2luZG93LnJlcXVlc3RBbmltYXRpb25GcmFtZT1mdW5jdGlvbihhKXt2YXIgYj1rKys7cmV0dXJuIDA9PWoubGVuZ3RoJiZpKGQpLGoucHVzaChbYixhXSksYn0sd2luZG93LmNhbmNlbEFuaW1hdGlvbkZyYW1lPWZ1bmN0aW9uKGEpe2ouZm9yRWFjaChmdW5jdGlvbihiKXtiWzBdPT1hJiYoYlsxXT1mdW5jdGlvbigpe30pfSl9LGYucHJvdG90eXBlPXtfcGxheTpmdW5jdGlvbihjKXtjLl90aW1pbmc9YS5ub3JtYWxpemVUaW1pbmdJbnB1dChjLnRpbWluZyk7dmFyIGQ9bmV3IGIuQW5pbWF0aW9uKGMpO3JldHVybiBkLl9pZGxlPSExLGQuX3RpbWVsaW5lPXRoaXMsdGhpcy5fYW5pbWF0aW9ucy5wdXNoKGQpLGIucmVzdGFydCgpLGIuYXBwbHlEaXJ0aWVkQW5pbWF0aW9uKGQpLGR9fTt2YXIgbD12b2lkIDAsbT0hMSxuPSExO2IucmVzdGFydD1mdW5jdGlvbigpe3JldHVybiBtfHwobT0hMCxyZXF1ZXN0QW5pbWF0aW9uRnJhbWUoZnVuY3Rpb24oKXt9KSxuPSEwKSxufSxiLmFwcGx5RGlydGllZEFuaW1hdGlvbj1mdW5jdGlvbihhKXtpZighcCl7YS5fbWFya1RhcmdldCgpO3ZhciBjPWEuX3RhcmdldEFuaW1hdGlvbnMoKTtjLnNvcnQoZSksaChiLnRpbWVsaW5lLmN1cnJlbnRUaW1lLCExLGMuc2xpY2UoKSlbMV0uZm9yRWFjaChmdW5jdGlvbihhKXt2YXIgYj1xLl9hbmltYXRpb25zLmluZGV4T2YoYSk7LTEhPT1iJiZxLl9hbmltYXRpb25zLnNwbGljZShiLDEpfSksZygpfX07dmFyIG89W10scD0hMSxxPW5ldyBmO2IudGltZWxpbmU9cX0oYSxiKSxmdW5jdGlvbihhKXtmdW5jdGlvbiBiKGEsYil7dmFyIGM9YS5leGVjKGIpO2lmKGMpcmV0dXJuIGM9YS5pZ25vcmVDYXNlP2NbMF0udG9Mb3dlckNhc2UoKTpjWzBdLFtjLGIuc3Vic3RyKGMubGVuZ3RoKV19ZnVuY3Rpb24gYyhhLGIpe2I9Yi5yZXBsYWNlKC9eXHMqLywiIik7dmFyIGM9YShiKTtpZihjKXJldHVybltjWzBdLGNbMV0ucmVwbGFjZSgvXlxzKi8sIiIpXX1mdW5jdGlvbiBkKGEsZCxlKXthPWMuYmluZChudWxsLGEpO2Zvcih2YXIgZj1bXTs7KXt2YXIgZz1hKGUpO2lmKCFnKXJldHVybltmLGVdO2lmKGYucHVzaChnWzBdKSxlPWdbMV0sIShnPWIoZCxlKSl8fCIiPT1nWzFdKXJldHVybltmLGVdO2U9Z1sxXX19ZnVuY3Rpb24gZShhLGIpe2Zvcih2YXIgYz0wLGQ9MDtkPGIubGVuZ3RoJiYoIS9cc3wsLy50ZXN0KGJbZF0pfHwwIT1jKTtkKyspaWYoIigiPT1iW2RdKWMrKztlbHNlIGlmKCIpIj09YltkXSYmKGMtLSwwPT1jJiZkKyssYzw9MCkpYnJlYWs7dmFyIGU9YShiLnN1YnN0cigwLGQpKTtyZXR1cm4gdm9pZCAwPT1lP3ZvaWQgMDpbZSxiLnN1YnN0cihkKV19ZnVuY3Rpb24gZihhLGIpe2Zvcih2YXIgYz1hLGQ9YjtjJiZkOyljPmQ/YyU9ZDpkJT1jO3JldHVybiBjPWEqYi8oYytkKX1mdW5jdGlvbiBnKGEpe3JldHVybiBmdW5jdGlvbihiKXt2YXIgYz1hKGIpO3JldHVybiBjJiYoY1swXT12b2lkIDApLGN9fWZ1bmN0aW9uIGgoYSxiKXtyZXR1cm4gZnVuY3Rpb24oYyl7cmV0dXJuIGEoYyl8fFtiLGNdfX1mdW5jdGlvbiBpKGIsYyl7Zm9yKHZhciBkPVtdLGU9MDtlPGIubGVuZ3RoO2UrKyl7dmFyIGY9YS5jb25zdW1lVHJpbW1lZChiW2VdLGMpO2lmKCFmfHwiIj09ZlswXSlyZXR1cm47dm9pZCAwIT09ZlswXSYmZC5wdXNoKGZbMF0pLGM9ZlsxXX1pZigiIj09YylyZXR1cm4gZH1mdW5jdGlvbiBqKGEsYixjLGQsZSl7Zm9yKHZhciBnPVtdLGg9W10saT1bXSxqPWYoZC5sZW5ndGgsZS5sZW5ndGgpLGs9MDtrPGo7aysrKXt2YXIgbD1iKGRbayVkLmxlbmd0aF0sZVtrJWUubGVuZ3RoXSk7aWYoIWwpcmV0dXJuO2cucHVzaChsWzBdKSxoLnB1c2gobFsxXSksaS5wdXNoKGxbMl0pfXJldHVybltnLGgsZnVuY3Rpb24oYil7dmFyIGQ9Yi5tYXAoZnVuY3Rpb24oYSxiKXtyZXR1cm4gaVtiXShhKX0pLmpvaW4oYyk7cmV0dXJuIGE/YShkKTpkfV19ZnVuY3Rpb24gayhhLGIsYyl7Zm9yKHZhciBkPVtdLGU9W10sZj1bXSxnPTAsaD0wO2g8Yy5sZW5ndGg7aCsrKWlmKCJmdW5jdGlvbiI9PXR5cGVvZiBjW2hdKXt2YXIgaT1jW2hdKGFbZ10sYltnKytdKTtkLnB1c2goaVswXSksZS5wdXNoKGlbMV0pLGYucHVzaChpWzJdKX1lbHNlIWZ1bmN0aW9uKGEpe2QucHVzaCghMSksZS5wdXNoKCExKSxmLnB1c2goZnVuY3Rpb24oKXtyZXR1cm4gY1thXX0pfShoKTtyZXR1cm5bZCxlLGZ1bmN0aW9uKGEpe2Zvcih2YXIgYj0iIixjPTA7YzxhLmxlbmd0aDtjKyspYis9ZltjXShhW2NdKTtyZXR1cm4gYn1dfWEuY29uc3VtZVRva2VuPWIsYS5jb25zdW1lVHJpbW1lZD1jLGEuY29uc3VtZVJlcGVhdGVkPWQsYS5jb25zdW1lUGFyZW50aGVzaXNlZD1lLGEuaWdub3JlPWcsYS5vcHRpb25hbD1oLGEuY29uc3VtZUxpc3Q9aSxhLm1lcmdlTmVzdGVkUmVwZWF0ZWQ9ai5iaW5kKG51bGwsbnVsbCksYS5tZXJnZVdyYXBwZWROZXN0ZWRSZXBlYXRlZD1qLGEubWVyZ2VMaXN0PWt9KGIpLGZ1bmN0aW9uKGEpe2Z1bmN0aW9uIGIoYil7ZnVuY3Rpb24gYyhiKXt2YXIgYz1hLmNvbnN1bWVUb2tlbigvXmluc2V0L2ksYik7cmV0dXJuIGM/KGQuaW5zZXQ9ITAsYyk6KGM9YS5jb25zdW1lTGVuZ3RoT3JQZXJjZW50KGIpKT8oZC5sZW5ndGhzLnB1c2goY1swXSksYyk6KGM9YS5jb25zdW1lQ29sb3IoYiksYz8oZC5jb2xvcj1jWzBdLGMpOnZvaWQgMCl9dmFyIGQ9e2luc2V0OiExLGxlbmd0aHM6W10sY29sb3I6bnVsbH0sZT1hLmNvbnN1bWVSZXBlYXRlZChjLC9eLyxiKTtpZihlJiZlWzBdLmxlbmd0aClyZXR1cm5bZCxlWzFdXX1mdW5jdGlvbiBjKGMpe3ZhciBkPWEuY29uc3VtZVJlcGVhdGVkKGIsL14sLyxjKTtpZihkJiYiIj09ZFsxXSlyZXR1cm4gZFswXX1mdW5jdGlvbiBkKGIsYyl7Zm9yKDtiLmxlbmd0aHMubGVuZ3RoPE1hdGgubWF4KGIubGVuZ3Rocy5sZW5ndGgsYy5sZW5ndGhzLmxlbmd0aCk7KWIubGVuZ3Rocy5wdXNoKHtweDowfSk7Zm9yKDtjLmxlbmd0aHMubGVuZ3RoPE1hdGgubWF4KGIubGVuZ3Rocy5sZW5ndGgsYy5sZW5ndGhzLmxlbmd0aCk7KWMubGVuZ3Rocy5wdXNoKHtweDowfSk7aWYoYi5pbnNldD09Yy5pbnNldCYmISFiLmNvbG9yPT0hIWMuY29sb3Ipe2Zvcih2YXIgZCxlPVtdLGY9W1tdLDBdLGc9W1tdLDBdLGg9MDtoPGIubGVuZ3Rocy5sZW5ndGg7aCsrKXt2YXIgaT1hLm1lcmdlRGltZW5zaW9ucyhiLmxlbmd0aHNbaF0sYy5sZW5ndGhzW2hdLDI9PWgpO2ZbMF0ucHVzaChpWzBdKSxnWzBdLnB1c2goaVsxXSksZS5wdXNoKGlbMl0pfWlmKGIuY29sb3ImJmMuY29sb3Ipe3ZhciBqPWEubWVyZ2VDb2xvcnMoYi5jb2xvcixjLmNvbG9yKTtmWzFdPWpbMF0sZ1sxXT1qWzFdLGQ9alsyXX1yZXR1cm5bZixnLGZ1bmN0aW9uKGEpe2Zvcih2YXIgYz1iLmluc2V0PyJpbnNldCAiOiIgIixmPTA7ZjxlLmxlbmd0aDtmKyspYys9ZVtmXShhWzBdW2ZdKSsiICI7cmV0dXJuIGQmJihjKz1kKGFbMV0pKSxjfV19fWZ1bmN0aW9uIGUoYixjLGQsZSl7ZnVuY3Rpb24gZihhKXtyZXR1cm57aW5zZXQ6YSxjb2xvcjpbMCwwLDAsMF0sbGVuZ3Roczpbe3B4OjB9LHtweDowfSx7cHg6MH0se3B4OjB9XX19Zm9yKHZhciBnPVtdLGg9W10saT0wO2k8ZC5sZW5ndGh8fGk8ZS5sZW5ndGg7aSsrKXt2YXIgaj1kW2ldfHxmKGVbaV0uaW5zZXQpLGs9ZVtpXXx8ZihkW2ldLmluc2V0KTtnLnB1c2goaiksaC5wdXNoKGspfXJldHVybiBhLm1lcmdlTmVzdGVkUmVwZWF0ZWQoYixjLGcsaCl9dmFyIGY9ZS5iaW5kKG51bGwsZCwiLCAiKTthLmFkZFByb3BlcnRpZXNIYW5kbGVyKGMsZixbImJveC1zaGFkb3ciLCJ0ZXh0LXNoYWRvdyJdKX0oYiksZnVuY3Rpb24oYSxiKXtmdW5jdGlvbiBjKGEpe3JldHVybiBhLnRvRml4ZWQoMykucmVwbGFjZSgvMCskLywiIikucmVwbGFjZSgvXC4kLywiIil9ZnVuY3Rpb24gZChhLGIsYyl7cmV0dXJuIE1hdGgubWluKGIsTWF0aC5tYXgoYSxjKSl9ZnVuY3Rpb24gZShhKXtpZigvXlxzKlstK10/KFxkKlwuKT9cZCtccyokLy50ZXN0KGEpKXJldHVybiBOdW1iZXIoYSl9ZnVuY3Rpb24gZihhLGIpe3JldHVyblthLGIsY119ZnVuY3Rpb24gZyhhLGIpe2lmKDAhPWEpcmV0dXJuIGkoMCwxLzApKGEsYil9ZnVuY3Rpb24gaChhLGIpe3JldHVyblthLGIsZnVuY3Rpb24oYSl7cmV0dXJuIE1hdGgucm91bmQoZCgxLDEvMCxhKSl9XX1mdW5jdGlvbiBpKGEsYil7cmV0dXJuIGZ1bmN0aW9uKGUsZil7cmV0dXJuW2UsZixmdW5jdGlvbihlKXtyZXR1cm4gYyhkKGEsYixlKSl9XX19ZnVuY3Rpb24gaihhKXt2YXIgYj1hLnRyaW0oKS5zcGxpdCgvXHMqW1xzLF1ccyovKTtpZigwIT09Yi5sZW5ndGgpe2Zvcih2YXIgYz1bXSxkPTA7ZDxiLmxlbmd0aDtkKyspe3ZhciBmPWUoYltkXSk7aWYodm9pZCAwPT09ZilyZXR1cm47Yy5wdXNoKGYpfXJldHVybiBjfX1mdW5jdGlvbiBrKGEsYil7aWYoYS5sZW5ndGg9PWIubGVuZ3RoKXJldHVyblthLGIsZnVuY3Rpb24oYSl7cmV0dXJuIGEubWFwKGMpLmpvaW4oIiAiKX1dfWZ1bmN0aW9uIGwoYSxiKXtyZXR1cm5bYSxiLE1hdGgucm91bmRdfWEuY2xhbXA9ZCxhLmFkZFByb3BlcnRpZXNIYW5kbGVyKGosayxbInN0cm9rZS1kYXNoYXJyYXkiXSksYS5hZGRQcm9wZXJ0aWVzSGFuZGxlcihlLGkoMCwxLzApLFsiYm9yZGVyLWltYWdlLXdpZHRoIiwibGluZS1oZWlnaHQiXSksYS5hZGRQcm9wZXJ0aWVzSGFuZGxlcihlLGkoMCwxKSxbIm9wYWNpdHkiLCJzaGFwZS1pbWFnZS10aHJlc2hvbGQiXSksYS5hZGRQcm9wZXJ0aWVzSGFuZGxlcihlLGcsWyJmbGV4LWdyb3ciLCJmbGV4LXNocmluayJdKSxhLmFkZFByb3BlcnRpZXNIYW5kbGVyKGUsaCxbIm9ycGhhbnMiLCJ3aWRvd3MiXSksYS5hZGRQcm9wZXJ0aWVzSGFuZGxlcihlLGwsWyJ6LWluZGV4Il0pLGEucGFyc2VOdW1iZXI9ZSxhLnBhcnNlTnVtYmVyTGlzdD1qLGEubWVyZ2VOdW1iZXJzPWYsYS5udW1iZXJUb1N0cmluZz1jfShiKSxmdW5jdGlvbihhLGIpe2Z1bmN0aW9uIGMoYSxiKXtpZigidmlzaWJsZSI9PWF8fCJ2aXNpYmxlIj09YilyZXR1cm5bMCwxLGZ1bmN0aW9uKGMpe3JldHVybiBjPD0wP2E6Yz49MT9iOiJ2aXNpYmxlIn1dfWEuYWRkUHJvcGVydGllc0hhbmRsZXIoU3RyaW5nLGMsWyJ2aXNpYmlsaXR5Il0pfShiKSxmdW5jdGlvbihhLGIpe2Z1bmN0aW9uIGMoYSl7YT1hLnRyaW0oKSxmLmZpbGxTdHlsZT0iIzAwMCIsZi5maWxsU3R5bGU9YTt2YXIgYj1mLmZpbGxTdHlsZTtpZihmLmZpbGxTdHlsZT0iI2ZmZiIsZi5maWxsU3R5bGU9YSxiPT1mLmZpbGxTdHlsZSl7Zi5maWxsUmVjdCgwLDAsMSwxKTt2YXIgYz1mLmdldEltYWdlRGF0YSgwLDAsMSwxKS5kYXRhO2YuY2xlYXJSZWN0KDAsMCwxLDEpO3ZhciBkPWNbM10vMjU1O3JldHVybltjWzBdKmQsY1sxXSpkLGNbMl0qZCxkXX19ZnVuY3Rpb24gZChiLGMpe3JldHVybltiLGMsZnVuY3Rpb24oYil7ZnVuY3Rpb24gYyhhKXtyZXR1cm4gTWF0aC5tYXgoMCxNYXRoLm1pbigyNTUsYSkpfWlmKGJbM10pZm9yKHZhciBkPTA7ZDwzO2QrKyliW2RdPU1hdGgucm91bmQoYyhiW2RdL2JbM10pKTtyZXR1cm4gYlszXT1hLm51bWJlclRvU3RyaW5nKGEuY2xhbXAoMCwxLGJbM10pKSwicmdiYSgiK2Iuam9pbigiLCIpKyIpIn1dfXZhciBlPWRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3dy53My5vcmcvMTk5OS94aHRtbCIsImNhbnZhcyIpO2Uud2lkdGg9ZS5oZWlnaHQ9MTt2YXIgZj1lLmdldENvbnRleHQoIjJkIik7YS5hZGRQcm9wZXJ0aWVzSGFuZGxlcihjLGQsWyJiYWNrZ3JvdW5kLWNvbG9yIiwiYm9yZGVyLWJvdHRvbS1jb2xvciIsImJvcmRlci1sZWZ0LWNvbG9yIiwiYm9yZGVyLXJpZ2h0LWNvbG9yIiwiYm9yZGVyLXRvcC1jb2xvciIsImNvbG9yIiwiZmlsbCIsImZsb29kLWNvbG9yIiwibGlnaHRpbmctY29sb3IiLCJvdXRsaW5lLWNvbG9yIiwic3RvcC1jb2xvciIsInN0cm9rZSIsInRleHQtZGVjb3JhdGlvbi1jb2xvciJdKSxhLmNvbnN1bWVDb2xvcj1hLmNvbnN1bWVQYXJlbnRoZXNpc2VkLmJpbmQobnVsbCxjKSxhLm1lcmdlQ29sb3JzPWR9KGIpLGZ1bmN0aW9uKGEsYil7ZnVuY3Rpb24gYyhhKXtmdW5jdGlvbiBiKCl7dmFyIGI9aC5leGVjKGEpO2c9Yj9iWzBdOnZvaWQgMH1mdW5jdGlvbiBjKCl7dmFyIGE9TnVtYmVyKGcpO3JldHVybiBiKCksYX1mdW5jdGlvbiBkKCl7aWYoIigiIT09ZylyZXR1cm4gYygpO2IoKTt2YXIgYT1mKCk7cmV0dXJuIikiIT09Zz9OYU46KGIoKSxhKX1mdW5jdGlvbiBlKCl7Zm9yKHZhciBhPWQoKTsiKiI9PT1nfHwiLyI9PT1nOyl7dmFyIGM9ZztiKCk7dmFyIGU9ZCgpOyIqIj09PWM/YSo9ZTphLz1lfXJldHVybiBhfWZ1bmN0aW9uIGYoKXtmb3IodmFyIGE9ZSgpOyIrIj09PWd8fCItIj09PWc7KXt2YXIgYz1nO2IoKTt2YXIgZD1lKCk7IisiPT09Yz9hKz1kOmEtPWR9cmV0dXJuIGF9dmFyIGcsaD0vKFtcK1wtXHdcLl0rfFtcKFwpXCpcL10pL2c7cmV0dXJuIGIoKSxmKCl9ZnVuY3Rpb24gZChhLGIpe2lmKCIwIj09KGI9Yi50cmltKCkudG9Mb3dlckNhc2UoKSkmJiJweCIuc2VhcmNoKGEpPj0wKXJldHVybntweDowfTtpZigvXlteKF0qJHxeY2FsYy8udGVzdChiKSl7Yj1iLnJlcGxhY2UoL2NhbGNcKC9nLCIoIik7dmFyIGQ9e307Yj1iLnJlcGxhY2UoYSxmdW5jdGlvbihhKXtyZXR1cm4gZFthXT1udWxsLCJVIithfSk7Zm9yKHZhciBlPSJVKCIrYS5zb3VyY2UrIikiLGY9Yi5yZXBsYWNlKC9bLStdPyhcZCpcLik/XGQrKFtFZV1bLStdP1xkKyk/L2csIk4iKS5yZXBsYWNlKG5ldyBSZWdFeHAoIk4iK2UsImciKSwiRCIpLnJlcGxhY2UoL1xzWystXVxzL2csIk8iKS5yZXBsYWNlKC9ccy9nLCIiKSxnPVsvTlwqKEQpL2csLyhOfEQpWypcL11OL2csLyhOfEQpT1wxL2csL1woKE58RClcKS9nXSxoPTA7aDxnLmxlbmd0aDspZ1toXS50ZXN0KGYpPyhmPWYucmVwbGFjZShnW2hdLCIkMSIpLGg9MCk6aCsrO2lmKCJEIj09Zil7Zm9yKHZhciBpIGluIGQpe3ZhciBqPWMoYi5yZXBsYWNlKG5ldyBSZWdFeHAoIlUiK2ksImciKSwiIikucmVwbGFjZShuZXcgUmVnRXhwKGUsImciKSwiKjAiKSk7aWYoIWlzRmluaXRlKGopKXJldHVybjtkW2ldPWp9cmV0dXJuIGR9fX1mdW5jdGlvbiBlKGEsYil7cmV0dXJuIGYoYSxiLCEwKX1mdW5jdGlvbiBmKGIsYyxkKXt2YXIgZSxmPVtdO2ZvcihlIGluIGIpZi5wdXNoKGUpO2ZvcihlIGluIGMpZi5pbmRleE9mKGUpPDAmJmYucHVzaChlKTtyZXR1cm4gYj1mLm1hcChmdW5jdGlvbihhKXtyZXR1cm4gYlthXXx8MH0pLGM9Zi5tYXAoZnVuY3Rpb24oYSl7cmV0dXJuIGNbYV18fDB9KSxbYixjLGZ1bmN0aW9uKGIpe3ZhciBjPWIubWFwKGZ1bmN0aW9uKGMsZSl7cmV0dXJuIDE9PWIubGVuZ3RoJiZkJiYoYz1NYXRoLm1heChjLDApKSxhLm51bWJlclRvU3RyaW5nKGMpK2ZbZV19KS5qb2luKCIgKyAiKTtyZXR1cm4gYi5sZW5ndGg+MT8iY2FsYygiK2MrIikiOmN9XX12YXIgZz0icHh8ZW18ZXh8Y2h8cmVtfHZ3fHZofHZtaW58dm1heHxjbXxtbXxpbnxwdHxwYyIsaD1kLmJpbmQobnVsbCxuZXcgUmVnRXhwKGcsImciKSksaT1kLmJpbmQobnVsbCxuZXcgUmVnRXhwKGcrInwlIiwiZyIpKSxqPWQuYmluZChudWxsLC9kZWd8cmFkfGdyYWR8dHVybi9nKTthLnBhcnNlTGVuZ3RoPWgsYS5wYXJzZUxlbmd0aE9yUGVyY2VudD1pLGEuY29uc3VtZUxlbmd0aE9yUGVyY2VudD1hLmNvbnN1bWVQYXJlbnRoZXNpc2VkLmJpbmQobnVsbCxpKSxhLnBhcnNlQW5nbGU9aixhLm1lcmdlRGltZW5zaW9ucz1mO3ZhciBrPWEuY29uc3VtZVBhcmVudGhlc2lzZWQuYmluZChudWxsLGgpLGw9YS5jb25zdW1lUmVwZWF0ZWQuYmluZCh2b2lkIDAsaywvXi8pLG09YS5jb25zdW1lUmVwZWF0ZWQuYmluZCh2b2lkIDAsbCwvXiwvKTthLmNvbnN1bWVTaXplUGFpckxpc3Q9bTt2YXIgbj1mdW5jdGlvbihhKXt2YXIgYj1tKGEpO2lmKGImJiIiPT1iWzFdKXJldHVybiBiWzBdfSxvPWEubWVyZ2VOZXN0ZWRSZXBlYXRlZC5iaW5kKHZvaWQgMCxlLCIgIikscD1hLm1lcmdlTmVzdGVkUmVwZWF0ZWQuYmluZCh2b2lkIDAsbywiLCIpO2EubWVyZ2VOb25OZWdhdGl2ZVNpemVQYWlyPW8sYS5hZGRQcm9wZXJ0aWVzSGFuZGxlcihuLHAsWyJiYWNrZ3JvdW5kLXNpemUiXSksYS5hZGRQcm9wZXJ0aWVzSGFuZGxlcihpLGUsWyJib3JkZXItYm90dG9tLXdpZHRoIiwiYm9yZGVyLWltYWdlLXdpZHRoIiwiYm9yZGVyLWxlZnQtd2lkdGgiLCJib3JkZXItcmlnaHQtd2lkdGgiLCJib3JkZXItdG9wLXdpZHRoIiwiZmxleC1iYXNpcyIsImZvbnQtc2l6ZSIsImhlaWdodCIsImxpbmUtaGVpZ2h0IiwibWF4LWhlaWdodCIsIm1heC13aWR0aCIsIm91dGxpbmUtd2lkdGgiLCJ3aWR0aCJdKSxhLmFkZFByb3BlcnRpZXNIYW5kbGVyKGksZixbImJvcmRlci1ib3R0b20tbGVmdC1yYWRpdXMiLCJib3JkZXItYm90dG9tLXJpZ2h0LXJhZGl1cyIsImJvcmRlci10b3AtbGVmdC1yYWRpdXMiLCJib3JkZXItdG9wLXJpZ2h0LXJhZGl1cyIsImJvdHRvbSIsImxlZnQiLCJsZXR0ZXItc3BhY2luZyIsIm1hcmdpbi1ib3R0b20iLCJtYXJnaW4tbGVmdCIsIm1hcmdpbi1yaWdodCIsIm1hcmdpbi10b3AiLCJtaW4taGVpZ2h0IiwibWluLXdpZHRoIiwib3V0bGluZS1vZmZzZXQiLCJwYWRkaW5nLWJvdHRvbSIsInBhZGRpbmctbGVmdCIsInBhZGRpbmctcmlnaHQiLCJwYWRkaW5nLXRvcCIsInBlcnNwZWN0aXZlIiwicmlnaHQiLCJzaGFwZS1tYXJnaW4iLCJzdHJva2UtZGFzaG9mZnNldCIsInRleHQtaW5kZW50IiwidG9wIiwidmVydGljYWwtYWxpZ24iLCJ3b3JkLXNwYWNpbmciXSl9KGIpLGZ1bmN0aW9uKGEsYil7ZnVuY3Rpb24gYyhiKXtyZXR1cm4gYS5jb25zdW1lTGVuZ3RoT3JQZXJjZW50KGIpfHxhLmNvbnN1bWVUb2tlbigvXmF1dG8vLGIpfWZ1bmN0aW9uIGQoYil7dmFyIGQ9YS5jb25zdW1lTGlzdChbYS5pZ25vcmUoYS5jb25zdW1lVG9rZW4uYmluZChudWxsLC9ecmVjdC8pKSxhLmlnbm9yZShhLmNvbnN1bWVUb2tlbi5iaW5kKG51bGwsL15cKC8pKSxhLmNvbnN1bWVSZXBlYXRlZC5iaW5kKG51bGwsYywvXiwvKSxhLmlnbm9yZShhLmNvbnN1bWVUb2tlbi5iaW5kKG51bGwsL15cKS8pKV0sYik7aWYoZCYmND09ZFswXS5sZW5ndGgpcmV0dXJuIGRbMF19ZnVuY3Rpb24gZShiLGMpe3JldHVybiJhdXRvIj09Ynx8ImF1dG8iPT1jP1shMCwhMSxmdW5jdGlvbihkKXt2YXIgZT1kP2I6YztpZigiYXV0byI9PWUpcmV0dXJuImF1dG8iO3ZhciBmPWEubWVyZ2VEaW1lbnNpb25zKGUsZSk7cmV0dXJuIGZbMl0oZlswXSl9XTphLm1lcmdlRGltZW5zaW9ucyhiLGMpfWZ1bmN0aW9uIGYoYSl7cmV0dXJuInJlY3QoIithKyIpIn12YXIgZz1hLm1lcmdlV3JhcHBlZE5lc3RlZFJlcGVhdGVkLmJpbmQobnVsbCxmLGUsIiwgIik7YS5wYXJzZUJveD1kLGEubWVyZ2VCb3hlcz1nLGEuYWRkUHJvcGVydGllc0hhbmRsZXIoZCxnLFsiY2xpcCJdKX0oYiksZnVuY3Rpb24oYSxiKXtmdW5jdGlvbiBjKGEpe3JldHVybiBmdW5jdGlvbihiKXt2YXIgYz0wO3JldHVybiBhLm1hcChmdW5jdGlvbihhKXtyZXR1cm4gYT09PWs/YltjKytdOmF9KX19ZnVuY3Rpb24gZChhKXtyZXR1cm4gYX1mdW5jdGlvbiBlKGIpe2lmKCJub25lIj09KGI9Yi50b0xvd2VyQ2FzZSgpLnRyaW0oKSkpcmV0dXJuW107Zm9yKHZhciBjLGQ9L1xzKihcdyspXCgoW14pXSopXCkvZyxlPVtdLGY9MDtjPWQuZXhlYyhiKTspe2lmKGMuaW5kZXghPWYpcmV0dXJuO2Y9Yy5pbmRleCtjWzBdLmxlbmd0aDt2YXIgZz1jWzFdLGg9bltnXTtpZighaClyZXR1cm47dmFyIGk9Y1syXS5zcGxpdCgiLCIpLGo9aFswXTtpZihqLmxlbmd0aDxpLmxlbmd0aClyZXR1cm47Zm9yKHZhciBrPVtdLG89MDtvPGoubGVuZ3RoO28rKyl7dmFyIHAscT1pW29dLHI9altvXTtpZih2b2lkIDA9PT0ocD1xP3tBOmZ1bmN0aW9uKGIpe3JldHVybiIwIj09Yi50cmltKCk/bTphLnBhcnNlQW5nbGUoYil9LE46YS5wYXJzZU51bWJlcixUOmEucGFyc2VMZW5ndGhPclBlcmNlbnQsTDphLnBhcnNlTGVuZ3RofVtyLnRvVXBwZXJDYXNlKCldKHEpOnthOm0sbjprWzBdLHQ6bH1bcl0pKXJldHVybjtrLnB1c2gocCl9aWYoZS5wdXNoKHt0OmcsZDprfSksZC5sYXN0SW5kZXg9PWIubGVuZ3RoKXJldHVybiBlfX1mdW5jdGlvbiBmKGEpe3JldHVybiBhLnRvRml4ZWQoNikucmVwbGFjZSgiLjAwMDAwMCIsIiIpfWZ1bmN0aW9uIGcoYixjKXtpZihiLmRlY29tcG9zaXRpb25QYWlyIT09Yyl7Yi5kZWNvbXBvc2l0aW9uUGFpcj1jO3ZhciBkPWEubWFrZU1hdHJpeERlY29tcG9zaXRpb24oYil9aWYoYy5kZWNvbXBvc2l0aW9uUGFpciE9PWIpe2MuZGVjb21wb3NpdGlvblBhaXI9Yjt2YXIgZT1hLm1ha2VNYXRyaXhEZWNvbXBvc2l0aW9uKGMpfXJldHVybiBudWxsPT1kWzBdfHxudWxsPT1lWzBdP1tbITFdLFshMF0sZnVuY3Rpb24oYSl7cmV0dXJuIGE/Y1swXS5kOmJbMF0uZH1dOihkWzBdLnB1c2goMCksZVswXS5wdXNoKDEpLFtkLGUsZnVuY3Rpb24oYil7dmFyIGM9YS5xdWF0KGRbMF1bM10sZVswXVszXSxiWzVdKTtyZXR1cm4gYS5jb21wb3NlTWF0cml4KGJbMF0sYlsxXSxiWzJdLGMsYls0XSkubWFwKGYpLmpvaW4oIiwiKX1dKX1mdW5jdGlvbiBoKGEpe3JldHVybiBhLnJlcGxhY2UoL1t4eV0vLCIiKX1mdW5jdGlvbiBpKGEpe3JldHVybiBhLnJlcGxhY2UoLyh4fHl8enwzZCk/JC8sIjNkIil9ZnVuY3Rpb24gaihiLGMpe3ZhciBkPWEubWFrZU1hdHJpeERlY29tcG9zaXRpb24mJiEwLGU9ITE7aWYoIWIubGVuZ3RofHwhYy5sZW5ndGgpe2IubGVuZ3RofHwoZT0hMCxiPWMsYz1bXSk7Zm9yKHZhciBmPTA7ZjxiLmxlbmd0aDtmKyspe3ZhciBqPWJbZl0udCxrPWJbZl0uZCxsPSJzY2FsZSI9PWouc3Vic3RyKDAsNSk/MTowO2MucHVzaCh7dDpqLGQ6ay5tYXAoZnVuY3Rpb24oYSl7aWYoIm51bWJlciI9PXR5cGVvZiBhKXJldHVybiBsO3ZhciBiPXt9O2Zvcih2YXIgYyBpbiBhKWJbY109bDtyZXR1cm4gYn0pfSl9fXZhciBtPWZ1bmN0aW9uKGEsYil7cmV0dXJuInBlcnNwZWN0aXZlIj09YSYmInBlcnNwZWN0aXZlIj09Ynx8KCJtYXRyaXgiPT1hfHwibWF0cml4M2QiPT1hKSYmKCJtYXRyaXgiPT1ifHwibWF0cml4M2QiPT1iKX0sbz1bXSxwPVtdLHE9W107aWYoYi5sZW5ndGghPWMubGVuZ3RoKXtpZighZClyZXR1cm47dmFyIHI9ZyhiLGMpO289W3JbMF1dLHA9W3JbMV1dLHE9W1sibWF0cml4IixbclsyXV1dXX1lbHNlIGZvcih2YXIgZj0wO2Y8Yi5sZW5ndGg7ZisrKXt2YXIgaixzPWJbZl0udCx0PWNbZl0udCx1PWJbZl0uZCx2PWNbZl0uZCx3PW5bc10seD1uW3RdO2lmKG0ocyx0KSl7aWYoIWQpcmV0dXJuO3ZhciByPWcoW2JbZl1dLFtjW2ZdXSk7by5wdXNoKHJbMF0pLHAucHVzaChyWzFdKSxxLnB1c2goWyJtYXRyaXgiLFtyWzJdXV0pfWVsc2V7aWYocz09dClqPXM7ZWxzZSBpZih3WzJdJiZ4WzJdJiZoKHMpPT1oKHQpKWo9aChzKSx1PXdbMl0odSksdj14WzJdKHYpO2Vsc2V7aWYoIXdbMV18fCF4WzFdfHxpKHMpIT1pKHQpKXtpZighZClyZXR1cm47dmFyIHI9ZyhiLGMpO289W3JbMF1dLHA9W3JbMV1dLHE9W1sibWF0cml4IixbclsyXV1dXTticmVha31qPWkocyksdT13WzFdKHUpLHY9eFsxXSh2KX1mb3IodmFyIHk9W10sej1bXSxBPVtdLEI9MDtCPHUubGVuZ3RoO0IrKyl7dmFyIEM9Im51bWJlciI9PXR5cGVvZiB1W0JdP2EubWVyZ2VOdW1iZXJzOmEubWVyZ2VEaW1lbnNpb25zLHI9Qyh1W0JdLHZbQl0pO3lbQl09clswXSx6W0JdPXJbMV0sQS5wdXNoKHJbMl0pfW8ucHVzaCh5KSxwLnB1c2goeikscS5wdXNoKFtqLEFdKX19aWYoZSl7dmFyIEQ9bztvPXAscD1EfXJldHVybltvLHAsZnVuY3Rpb24oYSl7cmV0dXJuIGEubWFwKGZ1bmN0aW9uKGEsYil7dmFyIGM9YS5tYXAoZnVuY3Rpb24oYSxjKXtyZXR1cm4gcVtiXVsxXVtjXShhKX0pLmpvaW4oIiwiKTtyZXR1cm4ibWF0cml4Ij09cVtiXVswXSYmMTY9PWMuc3BsaXQoIiwiKS5sZW5ndGgmJihxW2JdWzBdPSJtYXRyaXgzZCIpLHFbYl1bMF0rIigiK2MrIikifSkuam9pbigiICIpfV19dmFyIGs9bnVsbCxsPXtweDowfSxtPXtkZWc6MH0sbj17bWF0cml4OlsiTk5OTk5OIixbayxrLDAsMCxrLGssMCwwLDAsMCwxLDAsayxrLDAsMV0sZF0sbWF0cml4M2Q6WyJOTk5OTk5OTk5OTk5OTk5OIixkXSxyb3RhdGU6WyJBIl0scm90YXRleDpbIkEiXSxyb3RhdGV5OlsiQSJdLHJvdGF0ZXo6WyJBIl0scm90YXRlM2Q6WyJOTk5BIl0scGVyc3BlY3RpdmU6WyJMIl0sc2NhbGU6WyJObiIsYyhbayxrLDFdKSxkXSxzY2FsZXg6WyJOIixjKFtrLDEsMV0pLGMoW2ssMV0pXSxzY2FsZXk6WyJOIixjKFsxLGssMV0pLGMoWzEsa10pXSxzY2FsZXo6WyJOIixjKFsxLDEsa10pXSxzY2FsZTNkOlsiTk5OIixkXSxza2V3OlsiQWEiLG51bGwsZF0sc2tld3g6WyJBIixudWxsLGMoW2ssbV0pXSxza2V3eTpbIkEiLG51bGwsYyhbbSxrXSldLHRyYW5zbGF0ZTpbIlR0IixjKFtrLGssbF0pLGRdLHRyYW5zbGF0ZXg6WyJUIixjKFtrLGwsbF0pLGMoW2ssbF0pXSx0cmFuc2xhdGV5OlsiVCIsYyhbbCxrLGxdKSxjKFtsLGtdKV0sdHJhbnNsYXRlejpbIkwiLGMoW2wsbCxrXSldLHRyYW5zbGF0ZTNkOlsiVFRMIixkXX07YS5hZGRQcm9wZXJ0aWVzSGFuZGxlcihlLGosWyJ0cmFuc2Zvcm0iXSksYS50cmFuc2Zvcm1Ub1N2Z01hdHJpeD1mdW5jdGlvbihiKXt2YXIgYz1hLnRyYW5zZm9ybUxpc3RUb01hdHJpeChlKGIpKTtyZXR1cm4ibWF0cml4KCIrZihjWzBdKSsiICIrZihjWzFdKSsiICIrZihjWzRdKSsiICIrZihjWzVdKSsiICIrZihjWzEyXSkrIiAiK2YoY1sxM10pKyIpIn19KGIpLGZ1bmN0aW9uKGEsYil7ZnVuY3Rpb24gYyhhLGIpe2IuY29uY2F0KFthXSkuZm9yRWFjaChmdW5jdGlvbihiKXtiIGluIGRvY3VtZW50LmRvY3VtZW50RWxlbWVudC5zdHlsZSYmKGRbYV09YiksZVtiXT1hfSl9dmFyIGQ9e30sZT17fTtjKCJ0cmFuc2Zvcm0iLFsid2Via2l0VHJhbnNmb3JtIiwibXNUcmFuc2Zvcm0iXSksYygidHJhbnNmb3JtT3JpZ2luIixbIndlYmtpdFRyYW5zZm9ybU9yaWdpbiJdKSxjKCJwZXJzcGVjdGl2ZSIsWyJ3ZWJraXRQZXJzcGVjdGl2ZSJdKSxjKCJwZXJzcGVjdGl2ZU9yaWdpbiIsWyJ3ZWJraXRQZXJzcGVjdGl2ZU9yaWdpbiJdKSxhLnByb3BlcnR5TmFtZT1mdW5jdGlvbihhKXtyZXR1cm4gZFthXXx8YX0sYS51bnByZWZpeGVkUHJvcGVydHlOYW1lPWZ1bmN0aW9uKGEpe3JldHVybiBlW2FdfHxhfX0oYil9KCksZnVuY3Rpb24oKXtpZih2b2lkIDA9PT1kb2N1bWVudC5jcmVhdGVFbGVtZW50KCJkaXYiKS5hbmltYXRlKFtdKS5vbmNhbmNlbCl7dmFyIGE7aWYod2luZG93LnBlcmZvcm1hbmNlJiZwZXJmb3JtYW5jZS5ub3cpdmFyIGE9ZnVuY3Rpb24oKXtyZXR1cm4gcGVyZm9ybWFuY2Uubm93KCl9O2Vsc2UgdmFyIGE9ZnVuY3Rpb24oKXtyZXR1cm4gRGF0ZS5ub3coKX07dmFyIGI9ZnVuY3Rpb24oYSxiLGMpe3RoaXMudGFyZ2V0PWEsdGhpcy5jdXJyZW50VGltZT1iLHRoaXMudGltZWxpbmVUaW1lPWMsdGhpcy50eXBlPSJjYW5jZWwiLHRoaXMuYnViYmxlcz0hMSx0aGlzLmNhbmNlbGFibGU9ITEsdGhpcy5jdXJyZW50VGFyZ2V0PWEsdGhpcy5kZWZhdWx0UHJldmVudGVkPSExLHRoaXMuZXZlbnRQaGFzZT1FdmVudC5BVF9UQVJHRVQsdGhpcy50aW1lU3RhbXA9RGF0ZS5ub3coKX0sYz13aW5kb3cuRWxlbWVudC5wcm90b3R5cGUuYW5pbWF0ZTt3aW5kb3cuRWxlbWVudC5wcm90b3R5cGUuYW5pbWF0ZT1mdW5jdGlvbihkLGUpe3ZhciBmPWMuY2FsbCh0aGlzLGQsZSk7Zi5fY2FuY2VsSGFuZGxlcnM9W10sZi5vbmNhbmNlbD1udWxsO3ZhciBnPWYuY2FuY2VsO2YuY2FuY2VsPWZ1bmN0aW9uKCl7Zy5jYWxsKHRoaXMpO3ZhciBjPW5ldyBiKHRoaXMsbnVsbCxhKCkpLGQ9dGhpcy5fY2FuY2VsSGFuZGxlcnMuY29uY2F0KHRoaXMub25jYW5jZWw/W3RoaXMub25jYW5jZWxdOltdKTtzZXRUaW1lb3V0KGZ1bmN0aW9uKCl7ZC5mb3JFYWNoKGZ1bmN0aW9uKGEpe2EuY2FsbChjLnRhcmdldCxjKX0pfSwwKX07dmFyIGg9Zi5hZGRFdmVudExpc3RlbmVyO2YuYWRkRXZlbnRMaXN0ZW5lcj1mdW5jdGlvbihhLGIpeyJmdW5jdGlvbiI9PXR5cGVvZiBiJiYiY2FuY2VsIj09YT90aGlzLl9jYW5jZWxIYW5kbGVycy5wdXNoKGIpOmguY2FsbCh0aGlzLGEsYil9O3ZhciBpPWYucmVtb3ZlRXZlbnRMaXN0ZW5lcjtyZXR1cm4gZi5yZW1vdmVFdmVudExpc3RlbmVyPWZ1bmN0aW9uKGEsYil7aWYoImNhbmNlbCI9PWEpe3ZhciBjPXRoaXMuX2NhbmNlbEhhbmRsZXJzLmluZGV4T2YoYik7Yz49MCYmdGhpcy5fY2FuY2VsSGFuZGxlcnMuc3BsaWNlKGMsMSl9ZWxzZSBpLmNhbGwodGhpcyxhLGIpfSxmfX19KCksZnVuY3Rpb24oYSl7dmFyIGI9ZG9jdW1lbnQuZG9jdW1lbnRFbGVtZW50LGM9bnVsbCxkPSExO3RyeXt2YXIgZT1nZXRDb21wdXRlZFN0eWxlKGIpLmdldFByb3BlcnR5VmFsdWUoIm9wYWNpdHkiKSxmPSIwIj09ZT8iMSI6IjAiO2M9Yi5hbmltYXRlKHtvcGFjaXR5OltmLGZdfSx7ZHVyYXRpb246MX0pLGMuY3VycmVudFRpbWU9MCxkPWdldENvbXB1dGVkU3R5bGUoYikuZ2V0UHJvcGVydHlWYWx1ZSgib3BhY2l0eSIpPT1mfWNhdGNoKGEpe31maW5hbGx5e2MmJmMuY2FuY2VsKCl9aWYoIWQpe3ZhciBnPXdpbmRvdy5FbGVtZW50LnByb3RvdHlwZS5hbmltYXRlO3dpbmRvdy5FbGVtZW50LnByb3RvdHlwZS5hbmltYXRlPWZ1bmN0aW9uKGIsYyl7cmV0dXJuIHdpbmRvdy5TeW1ib2wmJlN5bWJvbC5pdGVyYXRvciYmQXJyYXkucHJvdG90eXBlLmZyb20mJmJbU3ltYm9sLml0ZXJhdG9yXSYmKGI9QXJyYXkuZnJvbShiKSksQXJyYXkuaXNBcnJheShiKXx8bnVsbD09PWJ8fChiPWEuY29udmVydFRvQXJyYXlGb3JtKGIpKSxnLmNhbGwodGhpcyxiLGMpfX19KGEpLGZ1bmN0aW9uKGEsYixjKXtmdW5jdGlvbiBkKGEpe3ZhciBjPWIudGltZWxpbmU7Yy5jdXJyZW50VGltZT1hLGMuX2Rpc2NhcmRBbmltYXRpb25zKCksMD09Yy5fYW5pbWF0aW9ucy5sZW5ndGg/Zj0hMTpyZXF1ZXN0QW5pbWF0aW9uRnJhbWUoZCl9dmFyIGU9d2luZG93LnJlcXVlc3RBbmltYXRpb25GcmFtZTt3aW5kb3cucmVxdWVzdEFuaW1hdGlvbkZyYW1lPWZ1bmN0aW9uKGEpe3JldHVybiBlKGZ1bmN0aW9uKGMpe2IudGltZWxpbmUuX3VwZGF0ZUFuaW1hdGlvbnNQcm9taXNlcygpLGEoYyksYi50aW1lbGluZS5fdXBkYXRlQW5pbWF0aW9uc1Byb21pc2VzKCl9KX0sYi5BbmltYXRpb25UaW1lbGluZT1mdW5jdGlvbigpe3RoaXMuX2FuaW1hdGlvbnM9W10sdGhpcy5jdXJyZW50VGltZT12b2lkIDB9LGIuQW5pbWF0aW9uVGltZWxpbmUucHJvdG90eXBlPXtnZXRBbmltYXRpb25zOmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuX2Rpc2NhcmRBbmltYXRpb25zKCksdGhpcy5fYW5pbWF0aW9ucy5zbGljZSgpfSxfdXBkYXRlQW5pbWF0aW9uc1Byb21pc2VzOmZ1bmN0aW9uKCl7Yi5hbmltYXRpb25zV2l0aFByb21pc2VzPWIuYW5pbWF0aW9uc1dpdGhQcm9taXNlcy5maWx0ZXIoZnVuY3Rpb24oYSl7cmV0dXJuIGEuX3VwZGF0ZVByb21pc2VzKCl9KX0sX2Rpc2NhcmRBbmltYXRpb25zOmZ1bmN0aW9uKCl7dGhpcy5fdXBkYXRlQW5pbWF0aW9uc1Byb21pc2VzKCksdGhpcy5fYW5pbWF0aW9ucz10aGlzLl9hbmltYXRpb25zLmZpbHRlcihmdW5jdGlvbihhKXtyZXR1cm4iZmluaXNoZWQiIT1hLnBsYXlTdGF0ZSYmImlkbGUiIT1hLnBsYXlTdGF0ZX0pfSxfcGxheTpmdW5jdGlvbihhKXt2YXIgYz1uZXcgYi5BbmltYXRpb24oYSx0aGlzKTtyZXR1cm4gdGhpcy5fYW5pbWF0aW9ucy5wdXNoKGMpLGIucmVzdGFydFdlYkFuaW1hdGlvbnNOZXh0VGljaygpLGMuX3VwZGF0ZVByb21pc2VzKCksYy5fYW5pbWF0aW9uLnBsYXkoKSxjLl91cGRhdGVQcm9taXNlcygpLGN9LHBsYXk6ZnVuY3Rpb24oYSl7cmV0dXJuIGEmJmEucmVtb3ZlKCksdGhpcy5fcGxheShhKX19O3ZhciBmPSExO2IucmVzdGFydFdlYkFuaW1hdGlvbnNOZXh0VGljaz1mdW5jdGlvbigpe2Z8fChmPSEwLHJlcXVlc3RBbmltYXRpb25GcmFtZShkKSl9O3ZhciBnPW5ldyBiLkFuaW1hdGlvblRpbWVsaW5lO2IudGltZWxpbmU9Zzt0cnl7T2JqZWN0LmRlZmluZVByb3BlcnR5KHdpbmRvdy5kb2N1bWVudCwidGltZWxpbmUiLHtjb25maWd1cmFibGU6ITAsZ2V0OmZ1bmN0aW9uKCl7cmV0dXJuIGd9fSl9Y2F0Y2goYSl7fXRyeXt3aW5kb3cuZG9jdW1lbnQudGltZWxpbmU9Z31jYXRjaChhKXt9fSgwLGMpLGZ1bmN0aW9uKGEsYixjKXtiLmFuaW1hdGlvbnNXaXRoUHJvbWlzZXM9W10sYi5BbmltYXRpb249ZnVuY3Rpb24oYixjKXtpZih0aGlzLmlkPSIiLGImJmIuX2lkJiYodGhpcy5pZD1iLl9pZCksdGhpcy5lZmZlY3Q9YixiJiYoYi5fYW5pbWF0aW9uPXRoaXMpLCFjKXRocm93IG5ldyBFcnJvcigiQW5pbWF0aW9uIHdpdGggbnVsbCB0aW1lbGluZSBpcyBub3Qgc3VwcG9ydGVkIik7dGhpcy5fdGltZWxpbmU9Yyx0aGlzLl9zZXF1ZW5jZU51bWJlcj1hLnNlcXVlbmNlTnVtYmVyKyssdGhpcy5faG9sZFRpbWU9MCx0aGlzLl9wYXVzZWQ9ITEsdGhpcy5faXNHcm91cD0hMSx0aGlzLl9hbmltYXRpb249bnVsbCx0aGlzLl9jaGlsZEFuaW1hdGlvbnM9W10sdGhpcy5fY2FsbGJhY2s9bnVsbCx0aGlzLl9vbGRQbGF5U3RhdGU9ImlkbGUiLHRoaXMuX3JlYnVpbGRVbmRlcmx5aW5nQW5pbWF0aW9uKCksdGhpcy5fYW5pbWF0aW9uLmNhbmNlbCgpLHRoaXMuX3VwZGF0ZVByb21pc2VzKCl9LGIuQW5pbWF0aW9uLnByb3RvdHlwZT17X3VwZGF0ZVByb21pc2VzOmZ1bmN0aW9uKCl7dmFyIGE9dGhpcy5fb2xkUGxheVN0YXRlLGI9dGhpcy5wbGF5U3RhdGU7cmV0dXJuIHRoaXMuX3JlYWR5UHJvbWlzZSYmYiE9PWEmJigiaWRsZSI9PWI/KHRoaXMuX3JlamVjdFJlYWR5UHJvbWlzZSgpLHRoaXMuX3JlYWR5UHJvbWlzZT12b2lkIDApOiJwZW5kaW5nIj09YT90aGlzLl9yZXNvbHZlUmVhZHlQcm9taXNlKCk6InBlbmRpbmciPT1iJiYodGhpcy5fcmVhZHlQcm9taXNlPXZvaWQgMCkpLHRoaXMuX2ZpbmlzaGVkUHJvbWlzZSYmYiE9PWEmJigiaWRsZSI9PWI/KHRoaXMuX3JlamVjdEZpbmlzaGVkUHJvbWlzZSgpLHRoaXMuX2ZpbmlzaGVkUHJvbWlzZT12b2lkIDApOiJmaW5pc2hlZCI9PWI/dGhpcy5fcmVzb2x2ZUZpbmlzaGVkUHJvbWlzZSgpOiJmaW5pc2hlZCI9PWEmJih0aGlzLl9maW5pc2hlZFByb21pc2U9dm9pZCAwKSksdGhpcy5fb2xkUGxheVN0YXRlPXRoaXMucGxheVN0YXRlLHRoaXMuX3JlYWR5UHJvbWlzZXx8dGhpcy5fZmluaXNoZWRQcm9taXNlfSxfcmVidWlsZFVuZGVybHlpbmdBbmltYXRpb246ZnVuY3Rpb24oKXt0aGlzLl91cGRhdGVQcm9taXNlcygpO3ZhciBhLGMsZCxlLGY9ISF0aGlzLl9hbmltYXRpb247ZiYmKGE9dGhpcy5wbGF5YmFja1JhdGUsYz10aGlzLl9wYXVzZWQsZD10aGlzLnN0YXJ0VGltZSxlPXRoaXMuY3VycmVudFRpbWUsdGhpcy5fYW5pbWF0aW9uLmNhbmNlbCgpLHRoaXMuX2FuaW1hdGlvbi5fd3JhcHBlcj1udWxsLHRoaXMuX2FuaW1hdGlvbj1udWxsKSwoIXRoaXMuZWZmZWN0fHx0aGlzLmVmZmVjdCBpbnN0YW5jZW9mIHdpbmRvdy5LZXlmcmFtZUVmZmVjdCkmJih0aGlzLl9hbmltYXRpb249Yi5uZXdVbmRlcmx5aW5nQW5pbWF0aW9uRm9yS2V5ZnJhbWVFZmZlY3QodGhpcy5lZmZlY3QpLGIuYmluZEFuaW1hdGlvbkZvcktleWZyYW1lRWZmZWN0KHRoaXMpKSwodGhpcy5lZmZlY3QgaW5zdGFuY2VvZiB3aW5kb3cuU2VxdWVuY2VFZmZlY3R8fHRoaXMuZWZmZWN0IGluc3RhbmNlb2Ygd2luZG93Lkdyb3VwRWZmZWN0KSYmKHRoaXMuX2FuaW1hdGlvbj1iLm5ld1VuZGVybHlpbmdBbmltYXRpb25Gb3JHcm91cCh0aGlzLmVmZmVjdCksYi5iaW5kQW5pbWF0aW9uRm9yR3JvdXAodGhpcykpLHRoaXMuZWZmZWN0JiZ0aGlzLmVmZmVjdC5fb25zYW1wbGUmJmIuYmluZEFuaW1hdGlvbkZvckN1c3RvbUVmZmVjdCh0aGlzKSxmJiYoMSE9YSYmKHRoaXMucGxheWJhY2tSYXRlPWEpLG51bGwhPT1kP3RoaXMuc3RhcnRUaW1lPWQ6bnVsbCE9PWU/dGhpcy5jdXJyZW50VGltZT1lOm51bGwhPT10aGlzLl9ob2xkVGltZSYmKHRoaXMuY3VycmVudFRpbWU9dGhpcy5faG9sZFRpbWUpLGMmJnRoaXMucGF1c2UoKSksdGhpcy5fdXBkYXRlUHJvbWlzZXMoKX0sX3VwZGF0ZUNoaWxkcmVuOmZ1bmN0aW9uKCl7aWYodGhpcy5lZmZlY3QmJiJpZGxlIiE9dGhpcy5wbGF5U3RhdGUpe3ZhciBhPXRoaXMuZWZmZWN0Ll90aW1pbmcuZGVsYXk7dGhpcy5fY2hpbGRBbmltYXRpb25zLmZvckVhY2goZnVuY3Rpb24oYyl7dGhpcy5fYXJyYW5nZUNoaWxkcmVuKGMsYSksdGhpcy5lZmZlY3QgaW5zdGFuY2VvZiB3aW5kb3cuU2VxdWVuY2VFZmZlY3QmJihhKz1iLmdyb3VwQ2hpbGREdXJhdGlvbihjLmVmZmVjdCkpfS5iaW5kKHRoaXMpKX19LF9zZXRFeHRlcm5hbEFuaW1hdGlvbjpmdW5jdGlvbihhKXtpZih0aGlzLmVmZmVjdCYmdGhpcy5faXNHcm91cClmb3IodmFyIGI9MDtiPHRoaXMuZWZmZWN0LmNoaWxkcmVuLmxlbmd0aDtiKyspdGhpcy5lZmZlY3QuY2hpbGRyZW5bYl0uX2FuaW1hdGlvbj1hLHRoaXMuX2NoaWxkQW5pbWF0aW9uc1tiXS5fc2V0RXh0ZXJuYWxBbmltYXRpb24oYSl9LF9jb25zdHJ1Y3RDaGlsZEFuaW1hdGlvbnM6ZnVuY3Rpb24oKXtpZih0aGlzLmVmZmVjdCYmdGhpcy5faXNHcm91cCl7dmFyIGE9dGhpcy5lZmZlY3QuX3RpbWluZy5kZWxheTt0aGlzLl9yZW1vdmVDaGlsZEFuaW1hdGlvbnMoKSx0aGlzLmVmZmVjdC5jaGlsZHJlbi5mb3JFYWNoKGZ1bmN0aW9uKGMpe3ZhciBkPWIudGltZWxpbmUuX3BsYXkoYyk7dGhpcy5fY2hpbGRBbmltYXRpb25zLnB1c2goZCksZC5wbGF5YmFja1JhdGU9dGhpcy5wbGF5YmFja1JhdGUsdGhpcy5fcGF1c2VkJiZkLnBhdXNlKCksYy5fYW5pbWF0aW9uPXRoaXMuZWZmZWN0Ll9hbmltYXRpb24sdGhpcy5fYXJyYW5nZUNoaWxkcmVuKGQsYSksdGhpcy5lZmZlY3QgaW5zdGFuY2VvZiB3aW5kb3cuU2VxdWVuY2VFZmZlY3QmJihhKz1iLmdyb3VwQ2hpbGREdXJhdGlvbihjKSl9LmJpbmQodGhpcykpfX0sX2FycmFuZ2VDaGlsZHJlbjpmdW5jdGlvbihhLGIpe251bGw9PT10aGlzLnN0YXJ0VGltZT9hLmN1cnJlbnRUaW1lPXRoaXMuY3VycmVudFRpbWUtYi90aGlzLnBsYXliYWNrUmF0ZTphLnN0YXJ0VGltZSE9PXRoaXMuc3RhcnRUaW1lK2IvdGhpcy5wbGF5YmFja1JhdGUmJihhLnN0YXJ0VGltZT10aGlzLnN0YXJ0VGltZStiL3RoaXMucGxheWJhY2tSYXRlKX0sZ2V0IHRpbWVsaW5lKCl7cmV0dXJuIHRoaXMuX3RpbWVsaW5lfSxnZXQgcGxheVN0YXRlKCl7cmV0dXJuIHRoaXMuX2FuaW1hdGlvbj90aGlzLl9hbmltYXRpb24ucGxheVN0YXRlOiJpZGxlIn0sZ2V0IGZpbmlzaGVkKCl7cmV0dXJuIHdpbmRvdy5Qcm9taXNlPyh0aGlzLl9maW5pc2hlZFByb21pc2V8fCgtMT09Yi5hbmltYXRpb25zV2l0aFByb21pc2VzLmluZGV4T2YodGhpcykmJmIuYW5pbWF0aW9uc1dpdGhQcm9taXNlcy5wdXNoKHRoaXMpLHRoaXMuX2ZpbmlzaGVkUHJvbWlzZT1uZXcgUHJvbWlzZShmdW5jdGlvbihhLGIpe3RoaXMuX3Jlc29sdmVGaW5pc2hlZFByb21pc2U9ZnVuY3Rpb24oKXthKHRoaXMpfSx0aGlzLl9yZWplY3RGaW5pc2hlZFByb21pc2U9ZnVuY3Rpb24oKXtiKHt0eXBlOkRPTUV4Y2VwdGlvbi5BQk9SVF9FUlIsbmFtZToiQWJvcnRFcnJvciJ9KX19LmJpbmQodGhpcykpLCJmaW5pc2hlZCI9PXRoaXMucGxheVN0YXRlJiZ0aGlzLl9yZXNvbHZlRmluaXNoZWRQcm9taXNlKCkpLHRoaXMuX2ZpbmlzaGVkUHJvbWlzZSk6KGNvbnNvbGUud2FybigiQW5pbWF0aW9uIFByb21pc2VzIHJlcXVpcmUgSmF2YVNjcmlwdCBQcm9taXNlIGNvbnN0cnVjdG9yIiksbnVsbCl9LGdldCByZWFkeSgpe3JldHVybiB3aW5kb3cuUHJvbWlzZT8odGhpcy5fcmVhZHlQcm9taXNlfHwoLTE9PWIuYW5pbWF0aW9uc1dpdGhQcm9taXNlcy5pbmRleE9mKHRoaXMpJiZiLmFuaW1hdGlvbnNXaXRoUHJvbWlzZXMucHVzaCh0aGlzKSx0aGlzLl9yZWFkeVByb21pc2U9bmV3IFByb21pc2UoZnVuY3Rpb24oYSxiKXt0aGlzLl9yZXNvbHZlUmVhZHlQcm9taXNlPWZ1bmN0aW9uKCl7YSh0aGlzKX0sdGhpcy5fcmVqZWN0UmVhZHlQcm9taXNlPWZ1bmN0aW9uKCl7Yih7dHlwZTpET01FeGNlcHRpb24uQUJPUlRfRVJSLG5hbWU6IkFib3J0RXJyb3IifSl9fS5iaW5kKHRoaXMpKSwicGVuZGluZyIhPT10aGlzLnBsYXlTdGF0ZSYmdGhpcy5fcmVzb2x2ZVJlYWR5UHJvbWlzZSgpKSx0aGlzLl9yZWFkeVByb21pc2UpOihjb25zb2xlLndhcm4oIkFuaW1hdGlvbiBQcm9taXNlcyByZXF1aXJlIEphdmFTY3JpcHQgUHJvbWlzZSBjb25zdHJ1Y3RvciIpLG51bGwpfSxnZXQgb25maW5pc2goKXtyZXR1cm4gdGhpcy5fYW5pbWF0aW9uLm9uZmluaXNofSxzZXQgb25maW5pc2goYSl7dGhpcy5fYW5pbWF0aW9uLm9uZmluaXNoPSJmdW5jdGlvbiI9PXR5cGVvZiBhP2Z1bmN0aW9uKGIpe2IudGFyZ2V0PXRoaXMsYS5jYWxsKHRoaXMsYil9LmJpbmQodGhpcyk6YX0sZ2V0IG9uY2FuY2VsKCl7cmV0dXJuIHRoaXMuX2FuaW1hdGlvbi5vbmNhbmNlbH0sc2V0IG9uY2FuY2VsKGEpe3RoaXMuX2FuaW1hdGlvbi5vbmNhbmNlbD0iZnVuY3Rpb24iPT10eXBlb2YgYT9mdW5jdGlvbihiKXtiLnRhcmdldD10aGlzLGEuY2FsbCh0aGlzLGIpfS5iaW5kKHRoaXMpOmF9LGdldCBjdXJyZW50VGltZSgpe3RoaXMuX3VwZGF0ZVByb21pc2VzKCk7dmFyIGE9dGhpcy5fYW5pbWF0aW9uLmN1cnJlbnRUaW1lO3JldHVybiB0aGlzLl91cGRhdGVQcm9taXNlcygpLGF9LHNldCBjdXJyZW50VGltZShhKXt0aGlzLl91cGRhdGVQcm9taXNlcygpLHRoaXMuX2FuaW1hdGlvbi5jdXJyZW50VGltZT1pc0Zpbml0ZShhKT9hOk1hdGguc2lnbihhKSpOdW1iZXIuTUFYX1ZBTFVFLHRoaXMuX3JlZ2lzdGVyKCksdGhpcy5fZm9yRWFjaENoaWxkKGZ1bmN0aW9uKGIsYyl7Yi5jdXJyZW50VGltZT1hLWN9KSx0aGlzLl91cGRhdGVQcm9taXNlcygpfSxnZXQgc3RhcnRUaW1lKCl7cmV0dXJuIHRoaXMuX2FuaW1hdGlvbi5zdGFydFRpbWV9LHNldCBzdGFydFRpbWUoYSl7dGhpcy5fdXBkYXRlUHJvbWlzZXMoKSx0aGlzLl9hbmltYXRpb24uc3RhcnRUaW1lPWlzRmluaXRlKGEpP2E6TWF0aC5zaWduKGEpKk51bWJlci5NQVhfVkFMVUUsdGhpcy5fcmVnaXN0ZXIoKSx0aGlzLl9mb3JFYWNoQ2hpbGQoZnVuY3Rpb24oYixjKXtiLnN0YXJ0VGltZT1hK2N9KSx0aGlzLl91cGRhdGVQcm9taXNlcygpfSxnZXQgcGxheWJhY2tSYXRlKCl7cmV0dXJuIHRoaXMuX2FuaW1hdGlvbi5wbGF5YmFja1JhdGV9LHNldCBwbGF5YmFja1JhdGUoYSl7dGhpcy5fdXBkYXRlUHJvbWlzZXMoKTt2YXIgYj10aGlzLmN1cnJlbnRUaW1lO3RoaXMuX2FuaW1hdGlvbi5wbGF5YmFja1JhdGU9YSx0aGlzLl9mb3JFYWNoQ2hpbGQoZnVuY3Rpb24oYil7Yi5wbGF5YmFja1JhdGU9YX0pLG51bGwhPT1iJiYodGhpcy5jdXJyZW50VGltZT1iKSx0aGlzLl91cGRhdGVQcm9taXNlcygpfSxwbGF5OmZ1bmN0aW9uKCl7dGhpcy5fdXBkYXRlUHJvbWlzZXMoKSx0aGlzLl9wYXVzZWQ9ITEsdGhpcy5fYW5pbWF0aW9uLnBsYXkoKSwtMT09dGhpcy5fdGltZWxpbmUuX2FuaW1hdGlvbnMuaW5kZXhPZih0aGlzKSYmdGhpcy5fdGltZWxpbmUuX2FuaW1hdGlvbnMucHVzaCh0aGlzKSx0aGlzLl9yZWdpc3RlcigpLGIuYXdhaXRTdGFydFRpbWUodGhpcyksdGhpcy5fZm9yRWFjaENoaWxkKGZ1bmN0aW9uKGEpe3ZhciBiPWEuY3VycmVudFRpbWU7YS5wbGF5KCksYS5jdXJyZW50VGltZT1ifSksdGhpcy5fdXBkYXRlUHJvbWlzZXMoKX0scGF1c2U6ZnVuY3Rpb24oKXt0aGlzLl91cGRhdGVQcm9taXNlcygpLHRoaXMuY3VycmVudFRpbWUmJih0aGlzLl9ob2xkVGltZT10aGlzLmN1cnJlbnRUaW1lKSx0aGlzLl9hbmltYXRpb24ucGF1c2UoKSx0aGlzLl9yZWdpc3RlcigpLHRoaXMuX2ZvckVhY2hDaGlsZChmdW5jdGlvbihhKXthLnBhdXNlKCl9KSx0aGlzLl9wYXVzZWQ9ITAsdGhpcy5fdXBkYXRlUHJvbWlzZXMoKX0sZmluaXNoOmZ1bmN0aW9uKCl7dGhpcy5fdXBkYXRlUHJvbWlzZXMoKSx0aGlzLl9hbmltYXRpb24uZmluaXNoKCksdGhpcy5fcmVnaXN0ZXIoKSx0aGlzLl91cGRhdGVQcm9taXNlcygpfSxjYW5jZWw6ZnVuY3Rpb24oKXt0aGlzLl91cGRhdGVQcm9taXNlcygpLHRoaXMuX2FuaW1hdGlvbi5jYW5jZWwoKSx0aGlzLl9yZWdpc3RlcigpLHRoaXMuX3JlbW92ZUNoaWxkQW5pbWF0aW9ucygpLHRoaXMuX3VwZGF0ZVByb21pc2VzKCl9LHJldmVyc2U6ZnVuY3Rpb24oKXt0aGlzLl91cGRhdGVQcm9taXNlcygpO3ZhciBhPXRoaXMuY3VycmVudFRpbWU7dGhpcy5fYW5pbWF0aW9uLnJldmVyc2UoKSx0aGlzLl9mb3JFYWNoQ2hpbGQoZnVuY3Rpb24oYSl7YS5yZXZlcnNlKCl9KSxudWxsIT09YSYmKHRoaXMuY3VycmVudFRpbWU9YSksdGhpcy5fdXBkYXRlUHJvbWlzZXMoKX0sYWRkRXZlbnRMaXN0ZW5lcjpmdW5jdGlvbihhLGIpe3ZhciBjPWI7ImZ1bmN0aW9uIj09dHlwZW9mIGImJihjPWZ1bmN0aW9uKGEpe2EudGFyZ2V0PXRoaXMsYi5jYWxsKHRoaXMsYSl9LmJpbmQodGhpcyksYi5fd3JhcHBlcj1jKSx0aGlzLl9hbmltYXRpb24uYWRkRXZlbnRMaXN0ZW5lcihhLGMpfSxyZW1vdmVFdmVudExpc3RlbmVyOmZ1bmN0aW9uKGEsYil7dGhpcy5fYW5pbWF0aW9uLnJlbW92ZUV2ZW50TGlzdGVuZXIoYSxiJiZiLl93cmFwcGVyfHxiKX0sX3JlbW92ZUNoaWxkQW5pbWF0aW9uczpmdW5jdGlvbigpe2Zvcig7dGhpcy5fY2hpbGRBbmltYXRpb25zLmxlbmd0aDspdGhpcy5fY2hpbGRBbmltYXRpb25zLnBvcCgpLmNhbmNlbCgpfSxfZm9yRWFjaENoaWxkOmZ1bmN0aW9uKGIpe3ZhciBjPTA7aWYodGhpcy5lZmZlY3QuY2hpbGRyZW4mJnRoaXMuX2NoaWxkQW5pbWF0aW9ucy5sZW5ndGg8dGhpcy5lZmZlY3QuY2hpbGRyZW4ubGVuZ3RoJiZ0aGlzLl9jb25zdHJ1Y3RDaGlsZEFuaW1hdGlvbnMoKSx0aGlzLl9jaGlsZEFuaW1hdGlvbnMuZm9yRWFjaChmdW5jdGlvbihhKXtiLmNhbGwodGhpcyxhLGMpLHRoaXMuZWZmZWN0IGluc3RhbmNlb2Ygd2luZG93LlNlcXVlbmNlRWZmZWN0JiYoYys9YS5lZmZlY3QuYWN0aXZlRHVyYXRpb24pfS5iaW5kKHRoaXMpKSwicGVuZGluZyIhPXRoaXMucGxheVN0YXRlKXt2YXIgZD10aGlzLmVmZmVjdC5fdGltaW5nLGU9dGhpcy5jdXJyZW50VGltZTtudWxsIT09ZSYmKGU9YS5jYWxjdWxhdGVJdGVyYXRpb25Qcm9ncmVzcyhhLmNhbGN1bGF0ZUFjdGl2ZUR1cmF0aW9uKGQpLGUsZCkpLChudWxsPT1lfHxpc05hTihlKSkmJnRoaXMuX3JlbW92ZUNoaWxkQW5pbWF0aW9ucygpfX19LHdpbmRvdy5BbmltYXRpb249Yi5BbmltYXRpb259KGEsYyksZnVuY3Rpb24oYSxiLGMpe2Z1bmN0aW9uIGQoYil7dGhpcy5fZnJhbWVzPWEubm9ybWFsaXplS2V5ZnJhbWVzKGIpfWZ1bmN0aW9uIGUoKXtmb3IodmFyIGE9ITE7aS5sZW5ndGg7KWkuc2hpZnQoKS5fdXBkYXRlQ2hpbGRyZW4oKSxhPSEwO3JldHVybiBhfXZhciBmPWZ1bmN0aW9uKGEpe2lmKGEuX2FuaW1hdGlvbj12b2lkIDAsYSBpbnN0YW5jZW9mIHdpbmRvdy5TZXF1ZW5jZUVmZmVjdHx8YSBpbnN0YW5jZW9mIHdpbmRvdy5Hcm91cEVmZmVjdClmb3IodmFyIGI9MDtiPGEuY2hpbGRyZW4ubGVuZ3RoO2IrKylmKGEuY2hpbGRyZW5bYl0pfTtiLnJlbW92ZU11bHRpPWZ1bmN0aW9uKGEpe2Zvcih2YXIgYj1bXSxjPTA7YzxhLmxlbmd0aDtjKyspe3ZhciBkPWFbY107ZC5fcGFyZW50PygtMT09Yi5pbmRleE9mKGQuX3BhcmVudCkmJmIucHVzaChkLl9wYXJlbnQpLGQuX3BhcmVudC5jaGlsZHJlbi5zcGxpY2UoZC5fcGFyZW50LmNoaWxkcmVuLmluZGV4T2YoZCksMSksZC5fcGFyZW50PW51bGwsZihkKSk6ZC5fYW5pbWF0aW9uJiZkLl9hbmltYXRpb24uZWZmZWN0PT1kJiYoZC5fYW5pbWF0aW9uLmNhbmNlbCgpLGQuX2FuaW1hdGlvbi5lZmZlY3Q9bmV3IEtleWZyYW1lRWZmZWN0KG51bGwsW10pLGQuX2FuaW1hdGlvbi5fY2FsbGJhY2smJihkLl9hbmltYXRpb24uX2NhbGxiYWNrLl9hbmltYXRpb249bnVsbCksZC5fYW5pbWF0aW9uLl9yZWJ1aWxkVW5kZXJseWluZ0FuaW1hdGlvbigpLGYoZCkpfWZvcihjPTA7YzxiLmxlbmd0aDtjKyspYltjXS5fcmVidWlsZCgpfSxiLktleWZyYW1lRWZmZWN0PWZ1bmN0aW9uKGIsYyxlLGYpe3JldHVybiB0aGlzLnRhcmdldD1iLHRoaXMuX3BhcmVudD1udWxsLGU9YS5udW1lcmljVGltaW5nVG9PYmplY3QoZSksdGhpcy5fdGltaW5nSW5wdXQ9YS5jbG9uZVRpbWluZ0lucHV0KGUpLHRoaXMuX3RpbWluZz1hLm5vcm1hbGl6ZVRpbWluZ0lucHV0KGUpLHRoaXMudGltaW5nPWEubWFrZVRpbWluZyhlLCExLHRoaXMpLHRoaXMudGltaW5nLl9lZmZlY3Q9dGhpcywiZnVuY3Rpb24iPT10eXBlb2YgYz8oYS5kZXByZWNhdGVkKCJDdXN0b20gS2V5ZnJhbWVFZmZlY3QiLCIyMDE1LTA2LTIyIiwiVXNlIEtleWZyYW1lRWZmZWN0Lm9uc2FtcGxlIGluc3RlYWQuIiksdGhpcy5fbm9ybWFsaXplZEtleWZyYW1lcz1jKTp0aGlzLl9ub3JtYWxpemVkS2V5ZnJhbWVzPW5ldyBkKGMpLHRoaXMuX2tleWZyYW1lcz1jLHRoaXMuYWN0aXZlRHVyYXRpb249YS5jYWxjdWxhdGVBY3RpdmVEdXJhdGlvbih0aGlzLl90aW1pbmcpLHRoaXMuX2lkPWYsdGhpc30sYi5LZXlmcmFtZUVmZmVjdC5wcm90b3R5cGU9e2dldEZyYW1lczpmdW5jdGlvbigpe3JldHVybiJmdW5jdGlvbiI9PXR5cGVvZiB0aGlzLl9ub3JtYWxpemVkS2V5ZnJhbWVzP3RoaXMuX25vcm1hbGl6ZWRLZXlmcmFtZXM6dGhpcy5fbm9ybWFsaXplZEtleWZyYW1lcy5fZnJhbWVzfSxzZXQgb25zYW1wbGUoYSl7aWYoImZ1bmN0aW9uIj09dHlwZW9mIHRoaXMuZ2V0RnJhbWVzKCkpdGhyb3cgbmV3IEVycm9yKCJTZXR0aW5nIG9uc2FtcGxlIG9uIGN1c3RvbSBlZmZlY3QgS2V5ZnJhbWVFZmZlY3QgaXMgbm90IHN1cHBvcnRlZC4iKTt0aGlzLl9vbnNhbXBsZT1hLHRoaXMuX2FuaW1hdGlvbiYmdGhpcy5fYW5pbWF0aW9uLl9yZWJ1aWxkVW5kZXJseWluZ0FuaW1hdGlvbigpfSxnZXQgcGFyZW50KCl7cmV0dXJuIHRoaXMuX3BhcmVudH0sY2xvbmU6ZnVuY3Rpb24oKXtpZigiZnVuY3Rpb24iPT10eXBlb2YgdGhpcy5nZXRGcmFtZXMoKSl0aHJvdyBuZXcgRXJyb3IoIkNsb25pbmcgY3VzdG9tIGVmZmVjdHMgaXMgbm90IHN1cHBvcnRlZC4iKTt2YXIgYj1uZXcgS2V5ZnJhbWVFZmZlY3QodGhpcy50YXJnZXQsW10sYS5jbG9uZVRpbWluZ0lucHV0KHRoaXMuX3RpbWluZ0lucHV0KSx0aGlzLl9pZCk7cmV0dXJuIGIuX25vcm1hbGl6ZWRLZXlmcmFtZXM9dGhpcy5fbm9ybWFsaXplZEtleWZyYW1lcyxiLl9rZXlmcmFtZXM9dGhpcy5fa2V5ZnJhbWVzLGJ9LHJlbW92ZTpmdW5jdGlvbigpe2IucmVtb3ZlTXVsdGkoW3RoaXNdKX19O3ZhciBnPUVsZW1lbnQucHJvdG90eXBlLmFuaW1hdGU7RWxlbWVudC5wcm90b3R5cGUuYW5pbWF0ZT1mdW5jdGlvbihhLGMpe3ZhciBkPSIiO3JldHVybiBjJiZjLmlkJiYoZD1jLmlkKSxiLnRpbWVsaW5lLl9wbGF5KG5ldyBiLktleWZyYW1lRWZmZWN0KHRoaXMsYSxjLGQpKX07dmFyIGg9ZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKCJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hodG1sIiwiZGl2Iik7Yi5uZXdVbmRlcmx5aW5nQW5pbWF0aW9uRm9yS2V5ZnJhbWVFZmZlY3Q9ZnVuY3Rpb24oYSl7aWYoYSl7dmFyIGI9YS50YXJnZXR8fGgsYz1hLl9rZXlmcmFtZXM7ImZ1bmN0aW9uIj09dHlwZW9mIGMmJihjPVtdKTt2YXIgZD1hLl90aW1pbmdJbnB1dDtkLmlkPWEuX2lkfWVsc2UgdmFyIGI9aCxjPVtdLGQ9MDtyZXR1cm4gZy5hcHBseShiLFtjLGRdKX0sYi5iaW5kQW5pbWF0aW9uRm9yS2V5ZnJhbWVFZmZlY3Q9ZnVuY3Rpb24oYSl7YS5lZmZlY3QmJiJmdW5jdGlvbiI9PXR5cGVvZiBhLmVmZmVjdC5fbm9ybWFsaXplZEtleWZyYW1lcyYmYi5iaW5kQW5pbWF0aW9uRm9yQ3VzdG9tRWZmZWN0KGEpfTt2YXIgaT1bXTtiLmF3YWl0U3RhcnRUaW1lPWZ1bmN0aW9uKGEpe251bGw9PT1hLnN0YXJ0VGltZSYmYS5faXNHcm91cCYmKDA9PWkubGVuZ3RoJiZyZXF1ZXN0QW5pbWF0aW9uRnJhbWUoZSksaS5wdXNoKGEpKX07dmFyIGo9d2luZG93LmdldENvbXB1dGVkU3R5bGU7T2JqZWN0LmRlZmluZVByb3BlcnR5KHdpbmRvdywiZ2V0Q29tcHV0ZWRTdHlsZSIse2NvbmZpZ3VyYWJsZTohMCxlbnVtZXJhYmxlOiEwLHZhbHVlOmZ1bmN0aW9uKCl7Yi50aW1lbGluZS5fdXBkYXRlQW5pbWF0aW9uc1Byb21pc2VzKCk7dmFyIGE9ai5hcHBseSh0aGlzLGFyZ3VtZW50cyk7cmV0dXJuIGUoKSYmKGE9ai5hcHBseSh0aGlzLGFyZ3VtZW50cykpLGIudGltZWxpbmUuX3VwZGF0ZUFuaW1hdGlvbnNQcm9taXNlcygpLGF9fSksd2luZG93LktleWZyYW1lRWZmZWN0PWIuS2V5ZnJhbWVFZmZlY3Qsd2luZG93LkVsZW1lbnQucHJvdG90eXBlLmdldEFuaW1hdGlvbnM9ZnVuY3Rpb24oKXtyZXR1cm4gZG9jdW1lbnQudGltZWxpbmUuZ2V0QW5pbWF0aW9ucygpLmZpbHRlcihmdW5jdGlvbihhKXtyZXR1cm4gbnVsbCE9PWEuZWZmZWN0JiZhLmVmZmVjdC50YXJnZXQ9PXRoaXN9LmJpbmQodGhpcykpfX0oYSxjKSxmdW5jdGlvbihhLGIsYyl7ZnVuY3Rpb24gZChhKXthLl9yZWdpc3RlcmVkfHwoYS5fcmVnaXN0ZXJlZD0hMCxnLnB1c2goYSksaHx8KGg9ITAscmVxdWVzdEFuaW1hdGlvbkZyYW1lKGUpKSl9ZnVuY3Rpb24gZShhKXt2YXIgYj1nO2c9W10sYi5zb3J0KGZ1bmN0aW9uKGEsYil7cmV0dXJuIGEuX3NlcXVlbmNlTnVtYmVyLWIuX3NlcXVlbmNlTnVtYmVyfSksYj1iLmZpbHRlcihmdW5jdGlvbihhKXthKCk7dmFyIGI9YS5fYW5pbWF0aW9uP2EuX2FuaW1hdGlvbi5wbGF5U3RhdGU6ImlkbGUiO3JldHVybiJydW5uaW5nIiE9YiYmInBlbmRpbmciIT1iJiYoYS5fcmVnaXN0ZXJlZD0hMSksYS5fcmVnaXN0ZXJlZH0pLGcucHVzaC5hcHBseShnLGIpLGcubGVuZ3RoPyhoPSEwLHJlcXVlc3RBbmltYXRpb25GcmFtZShlKSk6aD0hMX12YXIgZj0oZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKCJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hodG1sIiwiZGl2IiksMCk7Yi5iaW5kQW5pbWF0aW9uRm9yQ3VzdG9tRWZmZWN0PWZ1bmN0aW9uKGIpe3ZhciBjLGU9Yi5lZmZlY3QudGFyZ2V0LGc9ImZ1bmN0aW9uIj09dHlwZW9mIGIuZWZmZWN0LmdldEZyYW1lcygpO2M9Zz9iLmVmZmVjdC5nZXRGcmFtZXMoKTpiLmVmZmVjdC5fb25zYW1wbGU7dmFyIGg9Yi5lZmZlY3QudGltaW5nLGk9bnVsbDtoPWEubm9ybWFsaXplVGltaW5nSW5wdXQoaCk7dmFyIGo9ZnVuY3Rpb24oKXt2YXIgZD1qLl9hbmltYXRpb24/ai5fYW5pbWF0aW9uLmN1cnJlbnRUaW1lOm51bGw7bnVsbCE9PWQmJihkPWEuY2FsY3VsYXRlSXRlcmF0aW9uUHJvZ3Jlc3MoYS5jYWxjdWxhdGVBY3RpdmVEdXJhdGlvbihoKSxkLGgpLGlzTmFOKGQpJiYoZD1udWxsKSksZCE9PWkmJihnP2MoZCxlLGIuZWZmZWN0KTpjKGQsYi5lZmZlY3QsYi5lZmZlY3QuX2FuaW1hdGlvbikpLGk9ZH07ai5fYW5pbWF0aW9uPWIsai5fcmVnaXN0ZXJlZD0hMSxqLl9zZXF1ZW5jZU51bWJlcj1mKyssYi5fY2FsbGJhY2s9aixkKGopfTt2YXIgZz1bXSxoPSExO2IuQW5pbWF0aW9uLnByb3RvdHlwZS5fcmVnaXN0ZXI9ZnVuY3Rpb24oKXt0aGlzLl9jYWxsYmFjayYmZCh0aGlzLl9jYWxsYmFjayl9fShhLGMpLGZ1bmN0aW9uKGEsYixjKXtmdW5jdGlvbiBkKGEpe3JldHVybiBhLl90aW1pbmcuZGVsYXkrYS5hY3RpdmVEdXJhdGlvbithLl90aW1pbmcuZW5kRGVsYXl9ZnVuY3Rpb24gZShiLGMsZCl7dGhpcy5faWQ9ZCx0aGlzLl9wYXJlbnQ9bnVsbCx0aGlzLmNoaWxkcmVuPWJ8fFtdLHRoaXMuX3JlcGFyZW50KHRoaXMuY2hpbGRyZW4pLGM9YS5udW1lcmljVGltaW5nVG9PYmplY3QoYyksdGhpcy5fdGltaW5nSW5wdXQ9YS5jbG9uZVRpbWluZ0lucHV0KGMpLHRoaXMuX3RpbWluZz1hLm5vcm1hbGl6ZVRpbWluZ0lucHV0KGMsITApLHRoaXMudGltaW5nPWEubWFrZVRpbWluZyhjLCEwLHRoaXMpLHRoaXMudGltaW5nLl9lZmZlY3Q9dGhpcywiYXV0byI9PT10aGlzLl90aW1pbmcuZHVyYXRpb24mJih0aGlzLl90aW1pbmcuZHVyYXRpb249dGhpcy5hY3RpdmVEdXJhdGlvbil9d2luZG93LlNlcXVlbmNlRWZmZWN0PWZ1bmN0aW9uKCl7ZS5hcHBseSh0aGlzLGFyZ3VtZW50cyl9LHdpbmRvdy5Hcm91cEVmZmVjdD1mdW5jdGlvbigpe2UuYXBwbHkodGhpcyxhcmd1bWVudHMpfSxlLnByb3RvdHlwZT17X2lzQW5jZXN0b3I6ZnVuY3Rpb24oYSl7Zm9yKHZhciBiPXRoaXM7bnVsbCE9PWI7KXtpZihiPT1hKXJldHVybiEwO2I9Yi5fcGFyZW50fXJldHVybiExfSxfcmVidWlsZDpmdW5jdGlvbigpe2Zvcih2YXIgYT10aGlzO2E7KSJhdXRvIj09PWEudGltaW5nLmR1cmF0aW9uJiYoYS5fdGltaW5nLmR1cmF0aW9uPWEuYWN0aXZlRHVyYXRpb24pLGE9YS5fcGFyZW50O3RoaXMuX2FuaW1hdGlvbiYmdGhpcy5fYW5pbWF0aW9uLl9yZWJ1aWxkVW5kZXJseWluZ0FuaW1hdGlvbigpfSxfcmVwYXJlbnQ6ZnVuY3Rpb24oYSl7Yi5yZW1vdmVNdWx0aShhKTtmb3IodmFyIGM9MDtjPGEubGVuZ3RoO2MrKylhW2NdLl9wYXJlbnQ9dGhpc30sX3B1dENoaWxkOmZ1bmN0aW9uKGEsYil7Zm9yKHZhciBjPWI/IkNhbm5vdCBhcHBlbmQgYW4gYW5jZXN0b3Igb3Igc2VsZiI6IkNhbm5vdCBwcmVwZW5kIGFuIGFuY2VzdG9yIG9yIHNlbGYiLGQ9MDtkPGEubGVuZ3RoO2QrKylpZih0aGlzLl9pc0FuY2VzdG9yKGFbZF0pKXRocm93e3R5cGU6RE9NRXhjZXB0aW9uLkhJRVJBUkNIWV9SRVFVRVNUX0VSUixuYW1lOiJIaWVyYXJjaHlSZXF1ZXN0RXJyb3IiLG1lc3NhZ2U6Y307Zm9yKHZhciBkPTA7ZDxhLmxlbmd0aDtkKyspYj90aGlzLmNoaWxkcmVuLnB1c2goYVtkXSk6dGhpcy5jaGlsZHJlbi51bnNoaWZ0KGFbZF0pO3RoaXMuX3JlcGFyZW50KGEpLHRoaXMuX3JlYnVpbGQoKX0sYXBwZW5kOmZ1bmN0aW9uKCl7dGhpcy5fcHV0Q2hpbGQoYXJndW1lbnRzLCEwKX0scHJlcGVuZDpmdW5jdGlvbigpe3RoaXMuX3B1dENoaWxkKGFyZ3VtZW50cywhMSl9LGdldCBwYXJlbnQoKXtyZXR1cm4gdGhpcy5fcGFyZW50fSxnZXQgZmlyc3RDaGlsZCgpe3JldHVybiB0aGlzLmNoaWxkcmVuLmxlbmd0aD90aGlzLmNoaWxkcmVuWzBdOm51bGx9LGdldCBsYXN0Q2hpbGQoKXtyZXR1cm4gdGhpcy5jaGlsZHJlbi5sZW5ndGg/dGhpcy5jaGlsZHJlblt0aGlzLmNoaWxkcmVuLmxlbmd0aC0xXTpudWxsfSxjbG9uZTpmdW5jdGlvbigpe2Zvcih2YXIgYj1hLmNsb25lVGltaW5nSW5wdXQodGhpcy5fdGltaW5nSW5wdXQpLGM9W10sZD0wO2Q8dGhpcy5jaGlsZHJlbi5sZW5ndGg7ZCsrKWMucHVzaCh0aGlzLmNoaWxkcmVuW2RdLmNsb25lKCkpO3JldHVybiB0aGlzIGluc3RhbmNlb2YgR3JvdXBFZmZlY3Q/bmV3IEdyb3VwRWZmZWN0KGMsYik6bmV3IFNlcXVlbmNlRWZmZWN0KGMsYil9LHJlbW92ZTpmdW5jdGlvbigpe2IucmVtb3ZlTXVsdGkoW3RoaXNdKX19LHdpbmRvdy5TZXF1ZW5jZUVmZmVjdC5wcm90b3R5cGU9T2JqZWN0LmNyZWF0ZShlLnByb3RvdHlwZSksT2JqZWN0LmRlZmluZVByb3BlcnR5KHdpbmRvdy5TZXF1ZW5jZUVmZmVjdC5wcm90b3R5cGUsImFjdGl2ZUR1cmF0aW9uIix7Z2V0OmZ1bmN0aW9uKCl7dmFyIGE9MDtyZXR1cm4gdGhpcy5jaGlsZHJlbi5mb3JFYWNoKGZ1bmN0aW9uKGIpe2ErPWQoYil9KSxNYXRoLm1heChhLDApfX0pLHdpbmRvdy5Hcm91cEVmZmVjdC5wcm90b3R5cGU9T2JqZWN0LmNyZWF0ZShlLnByb3RvdHlwZSksT2JqZWN0LmRlZmluZVByb3BlcnR5KHdpbmRvdy5Hcm91cEVmZmVjdC5wcm90b3R5cGUsImFjdGl2ZUR1cmF0aW9uIix7Z2V0OmZ1bmN0aW9uKCl7dmFyIGE9MDtyZXR1cm4gdGhpcy5jaGlsZHJlbi5mb3JFYWNoKGZ1bmN0aW9uKGIpe2E9TWF0aC5tYXgoYSxkKGIpKX0pLGF9fSksYi5uZXdVbmRlcmx5aW5nQW5pbWF0aW9uRm9yR3JvdXA9ZnVuY3Rpb24oYyl7dmFyIGQsZT1udWxsLGY9ZnVuY3Rpb24oYil7dmFyIGM9ZC5fd3JhcHBlcjtpZihjJiYicGVuZGluZyIhPWMucGxheVN0YXRlJiZjLmVmZmVjdClyZXR1cm4gbnVsbD09Yj92b2lkIGMuX3JlbW92ZUNoaWxkQW5pbWF0aW9ucygpOjA9PWImJmMucGxheWJhY2tSYXRlPDAmJihlfHwoZT1hLm5vcm1hbGl6ZVRpbWluZ0lucHV0KGMuZWZmZWN0LnRpbWluZykpLGI9YS5jYWxjdWxhdGVJdGVyYXRpb25Qcm9ncmVzcyhhLmNhbGN1bGF0ZUFjdGl2ZUR1cmF0aW9uKGUpLC0xLGUpLGlzTmFOKGIpfHxudWxsPT1iKT8oYy5fZm9yRWFjaENoaWxkKGZ1bmN0aW9uKGEpe2EuY3VycmVudFRpbWU9LTF9KSx2b2lkIGMuX3JlbW92ZUNoaWxkQW5pbWF0aW9ucygpKTp2b2lkIDB9LGc9bmV3IEtleWZyYW1lRWZmZWN0KG51bGwsW10sYy5fdGltaW5nLGMuX2lkKTtyZXR1cm4gZy5vbnNhbXBsZT1mLGQ9Yi50aW1lbGluZS5fcGxheShnKX0sYi5iaW5kQW5pbWF0aW9uRm9yR3JvdXA9ZnVuY3Rpb24oYSl7YS5fYW5pbWF0aW9uLl93cmFwcGVyPWEsYS5faXNHcm91cD0hMCxiLmF3YWl0U3RhcnRUaW1lKGEpLGEuX2NvbnN0cnVjdENoaWxkQW5pbWF0aW9ucygpLGEuX3NldEV4dGVybmFsQW5pbWF0aW9uKGEpfSxiLmdyb3VwQ2hpbGREdXJhdGlvbj1kfShhLGMpfSgpOwoKIShmdW5jdGlvbigpewovKiEgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKICAgIENvcHlyaWdodCAoYykgTWljcm9zb2Z0IENvcnBvcmF0aW9uLgoKICAgIFBlcm1pc3Npb24gdG8gdXNlLCBjb3B5LCBtb2RpZnksIGFuZC9vciBkaXN0cmlidXRlIHRoaXMgc29mdHdhcmUgZm9yIGFueQogICAgcHVycG9zZSB3aXRoIG9yIHdpdGhvdXQgZmVlIGlzIGhlcmVieSBncmFudGVkLgoKICAgIFRIRSBTT0ZUV0FSRSBJUyBQUk9WSURFRCAiQVMgSVMiIEFORCBUSEUgQVVUSE9SIERJU0NMQUlNUyBBTEwgV0FSUkFOVElFUyBXSVRICiAgICBSRUdBUkQgVE8gVEhJUyBTT0ZUV0FSRSBJTkNMVURJTkcgQUxMIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkKICAgIEFORCBGSVRORVNTLiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQVVUSE9SIEJFIExJQUJMRSBGT1IgQU5ZIFNQRUNJQUwsIERJUkVDVCwKICAgIElORElSRUNULCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgT1IgQU5ZIERBTUFHRVMgV0hBVFNPRVZFUiBSRVNVTFRJTkcgRlJPTQogICAgTE9TUyBPRiBVU0UsIERBVEEgT1IgUFJPRklUUywgV0hFVEhFUiBJTiBBTiBBQ1RJT04gT0YgQ09OVFJBQ1QsIE5FR0xJR0VOQ0UgT1IKICAgIE9USEVSIFRPUlRJT1VTIEFDVElPTiwgQVJJU0lORyBPVVQgT0YgT1IgSU4gQ09OTkVDVElPTiBXSVRIIFRIRSBVU0UgT1IKICAgIFBFUkZPUk1BTkNFIE9GIFRISVMgU09GVFdBUkUuCiAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiAqLwpmdW5jdGlvbiB0KHQsZSxuLGkpe3ZhciByLG89YXJndW1lbnRzLmxlbmd0aCxhPW88Mz9lOm51bGw9PT1pP2k9T2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcihlLG4pOmk7aWYoIm9iamVjdCI9PXR5cGVvZiBSZWZsZWN0JiYiZnVuY3Rpb24iPT10eXBlb2YgUmVmbGVjdC5kZWNvcmF0ZSlhPVJlZmxlY3QuZGVjb3JhdGUodCxlLG4saSk7ZWxzZSBmb3IodmFyIHM9dC5sZW5ndGgtMTtzPj0wO3MtLSkocj10W3NdKSYmKGE9KG88Mz9yKGEpOm8+Mz9yKGUsbixhKTpyKGUsbikpfHxhKTtyZXR1cm4gbz4zJiZhJiZPYmplY3QuZGVmaW5lUHJvcGVydHkoZSxuLGEpLGF9ZnVuY3Rpb24gZSh0LGUpe2lmKCJvYmplY3QiPT10eXBlb2YgUmVmbGVjdCYmImZ1bmN0aW9uIj09dHlwZW9mIFJlZmxlY3QubWV0YWRhdGEpcmV0dXJuIFJlZmxlY3QubWV0YWRhdGEodCxlKX1mdW5jdGlvbiBuKHQsZSxuLGkpe3JldHVybiBuZXcobnx8KG49UHJvbWlzZSkpKChmdW5jdGlvbihyLG8pe2Z1bmN0aW9uIGEodCl7dHJ5e2woaS5uZXh0KHQpKX1jYXRjaCh0KXtvKHQpfX1mdW5jdGlvbiBzKHQpe3RyeXtsKGkudGhyb3codCkpfWNhdGNoKHQpe28odCl9fWZ1bmN0aW9uIGwodCl7dC5kb25lP3IodC52YWx1ZSk6KGZ1bmN0aW9uIGUodCl7cmV0dXJuIHQgaW5zdGFuY2VvZiBuP3Q6bmV3IG4oKGZ1bmN0aW9uKGUpe2UodCl9KSl9KSh0LnZhbHVlKS50aGVuKGEscyl9bCgoaT1pLmFwcGx5KHQsZXx8W10pKS5uZXh0KCkpfSkpfQovKioKICAgICAqIEBsaWNlbnNlCiAgICAgKiBDb3B5cmlnaHQgKGMpIDIwMTYgVGhlIFBvbHltZXIgUHJvamVjdCBBdXRob3JzLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICAgICogVGhpcyBjb2RlIG1heSBvbmx5IGJlIHVzZWQgdW5kZXIgdGhlIEJTRCBzdHlsZSBsaWNlbnNlIGZvdW5kIGF0CiAgICAgKiBodHRwOi8vcG9seW1lci5naXRodWIuaW8vTElDRU5TRS50eHQgVGhlIGNvbXBsZXRlIHNldCBvZiBhdXRob3JzIG1heSBiZSBmb3VuZAogICAgICogYXQgaHR0cDovL3BvbHltZXIuZ2l0aHViLmlvL0FVVEhPUlMudHh0IFRoZSBjb21wbGV0ZSBzZXQgb2YgY29udHJpYnV0b3JzIG1heQogICAgICogYmUgZm91bmQgYXQgaHR0cDovL3BvbHltZXIuZ2l0aHViLmlvL0NPTlRSSUJVVE9SUy50eHQgQ29kZSBkaXN0cmlidXRlZCBieQogICAgICogR29vZ2xlIGFzIHBhcnQgb2YgdGhlIHBvbHltZXIgcHJvamVjdCBpcyBhbHNvIHN1YmplY3QgdG8gYW4gYWRkaXRpb25hbCBJUAogICAgICogcmlnaHRzIGdyYW50IGZvdW5kIGF0IGh0dHA6Ly9wb2x5bWVyLmdpdGh1Yi5pby9QQVRFTlRTLnR4dAogICAgICovZnVuY3Rpb24gaSh0KXtyZXR1cm4gZT0+e2lmKHQpaWYoZS5oYXNPd25Qcm9wZXJ0eSgiaXMiKSl7aWYodCE9PWUuaXMpdGhyb3cgbmV3IEVycm9yKGBjdXN0b20gZWxlbWVudCB0YWcgbmFtZXMgZG8gbm90IG1hdGNoOiAoJHt0fSAhPT0gJHtlLmlzfSlgKX1lbHNlIE9iamVjdC5kZWZpbmVQcm9wZXJ0eShlLCJpcyIse3ZhbHVlOnR9KTt3aW5kb3cuY3VzdG9tRWxlbWVudHMuZGVmaW5lKGUuaXMsZSl9fWZ1bmN0aW9uIHIodCxlLG4pe3QuY29uc3RydWN0b3IuaGFzT3duUHJvcGVydHkoInByb3BlcnRpZXMiKXx8T2JqZWN0LmRlZmluZVByb3BlcnR5KHQuY29uc3RydWN0b3IsInByb3BlcnRpZXMiLHt2YWx1ZTp7fX0pLHQuY29uc3RydWN0b3IucHJvcGVydGllc1tlXT1PYmplY3QuYXNzaWduKHt9LHQuY29uc3RydWN0b3IucHJvcGVydGllc1tlXSxuKX1mdW5jdGlvbiBvKHQpe3JldHVybihlLG4pPT57cihlLG4sdCl9fWZ1bmN0aW9uIGEoLi4udCl7cmV0dXJuKGUsbik9PntlLmNvbnN0cnVjdG9yLmhhc093blByb3BlcnR5KCJvYnNlcnZlcnMiKXx8T2JqZWN0LmRlZmluZVByb3BlcnR5KGUuY29uc3RydWN0b3IsIm9ic2VydmVycyIse3ZhbHVlOltdfSksZS5jb25zdHJ1Y3Rvci5vYnNlcnZlcnMucHVzaChgJHtufSgke3Quam9pbigiLCIpfSlgKX19ZnVuY3Rpb24gcyh0LC4uLmUpe3JldHVybihuLGksbyk9Pntjb25zdCBhPWBfX2NvbXB1dGUke2l9YDtPYmplY3QuZGVmaW5lUHJvcGVydHkobixhLHt2YWx1ZTpvLmdldH0pLG8uZ2V0PXZvaWQgMCxyKG4saSx7Y29tcHV0ZWQ6YCR7YX0oJHtbdCwuLi5lXS5qb2luKCIsIil9KWB9KX19Ci8qKgogICAgQGxpY2Vuc2UKICAgIENvcHlyaWdodCAoYykgMjAxNyBUaGUgUG9seW1lciBQcm9qZWN0IEF1dGhvcnMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgICBUaGlzIGNvZGUgbWF5IG9ubHkgYmUgdXNlZCB1bmRlciB0aGUgQlNEIHN0eWxlIGxpY2Vuc2UgZm91bmQgYXQgaHR0cDovL3BvbHltZXIuZ2l0aHViLmlvL0xJQ0VOU0UudHh0CiAgICBUaGUgY29tcGxldGUgc2V0IG9mIGF1dGhvcnMgbWF5IGJlIGZvdW5kIGF0IGh0dHA6Ly9wb2x5bWVyLmdpdGh1Yi5pby9BVVRIT1JTLnR4dAogICAgVGhlIGNvbXBsZXRlIHNldCBvZiBjb250cmlidXRvcnMgbWF5IGJlIGZvdW5kIGF0IGh0dHA6Ly9wb2x5bWVyLmdpdGh1Yi5pby9DT05UUklCVVRPUlMudHh0CiAgICBDb2RlIGRpc3RyaWJ1dGVkIGJ5IEdvb2dsZSBhcyBwYXJ0IG9mIHRoZSBwb2x5bWVyIHByb2plY3QgaXMgYWxzbwogICAgc3ViamVjdCB0byBhbiBhZGRpdGlvbmFsIElQIHJpZ2h0cyBncmFudCBmb3VuZCBhdCBodHRwOi8vcG9seW1lci5naXRodWIuaW8vUEFURU5UUy50eHQKICAgICovd2luZG93LkpTQ29tcGlsZXJfcmVuYW1lUHJvcGVydHk9ZnVuY3Rpb24odCxlKXtyZXR1cm4gdH07Ci8qKgogICAgQGxpY2Vuc2UKICAgIENvcHlyaWdodCAoYykgMjAxNyBUaGUgUG9seW1lciBQcm9qZWN0IEF1dGhvcnMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgICBUaGlzIGNvZGUgbWF5IG9ubHkgYmUgdXNlZCB1bmRlciB0aGUgQlNEIHN0eWxlIGxpY2Vuc2UgZm91bmQgYXQgaHR0cDovL3BvbHltZXIuZ2l0aHViLmlvL0xJQ0VOU0UudHh0CiAgICBUaGUgY29tcGxldGUgc2V0IG9mIGF1dGhvcnMgbWF5IGJlIGZvdW5kIGF0IGh0dHA6Ly9wb2x5bWVyLmdpdGh1Yi5pby9BVVRIT1JTLnR4dAogICAgVGhlIGNvbXBsZXRlIHNldCBvZiBjb250cmlidXRvcnMgbWF5IGJlIGZvdW5kIGF0IGh0dHA6Ly9wb2x5bWVyLmdpdGh1Yi5pby9DT05UUklCVVRPUlMudHh0CiAgICBDb2RlIGRpc3RyaWJ1dGVkIGJ5IEdvb2dsZSBhcyBwYXJ0IG9mIHRoZSBwb2x5bWVyIHByb2plY3QgaXMgYWxzbwogICAgc3ViamVjdCB0byBhbiBhZGRpdGlvbmFsIElQIHJpZ2h0cyBncmFudCBmb3VuZCBhdCBodHRwOi8vcG9seW1lci5naXRodWIuaW8vUEFURU5UUy50eHQKICAgICovCmxldCBsLGMsdT0vKHVybFwoKShbXildKikoXCkpL2csaD0vKF5cL1teXC9dKXwoXiMpfCheW1x3LVxkXSo6KS87ZnVuY3Rpb24gZCh0LGUpe2lmKHQmJmgudGVzdCh0KSlyZXR1cm4gdDtpZigiLy8iPT09dClyZXR1cm4gdDtpZih2b2lkIDA9PT1sKXtsPSExO3RyeXtjb25zdCB0PW5ldyBVUkwoImIiLCJodHRwOi8vYSIpO3QucGF0aG5hbWU9ImMlMjBkIixsPSJodHRwOi8vYS9jJTIwZCI9PT10LmhyZWZ9Y2F0Y2godCl7fX1pZihlfHwoZT1kb2N1bWVudC5iYXNlVVJJfHx3aW5kb3cubG9jYXRpb24uaHJlZiksbCl0cnl7cmV0dXJuIG5ldyBVUkwodCxlKS5ocmVmfWNhdGNoKGUpe3JldHVybiB0fXJldHVybiBjfHwoYz1kb2N1bWVudC5pbXBsZW1lbnRhdGlvbi5jcmVhdGVIVE1MRG9jdW1lbnQoInRlbXAiKSxjLmJhc2U9Yy5jcmVhdGVFbGVtZW50KCJiYXNlIiksYy5oZWFkLmFwcGVuZENoaWxkKGMuYmFzZSksYy5hbmNob3I9Yy5jcmVhdGVFbGVtZW50KCJhIiksYy5ib2R5LmFwcGVuZENoaWxkKGMuYW5jaG9yKSksYy5iYXNlLmhyZWY9ZSxjLmFuY2hvci5ocmVmPXQsYy5hbmNob3IuaHJlZnx8dH1mdW5jdGlvbiBwKHQsZSl7cmV0dXJuIHQucmVwbGFjZSh1LChmdW5jdGlvbih0LG4saSxyKXtyZXR1cm4gbisiJyIrZChpLnJlcGxhY2UoL1siJ10vZywiIiksZSkrIiciK3J9KSl9ZnVuY3Rpb24gZih0KXtyZXR1cm4gdC5zdWJzdHJpbmcoMCx0Lmxhc3RJbmRleE9mKCIvIikrMSl9Ci8qKgogICAgQGxpY2Vuc2UKICAgIENvcHlyaWdodCAoYykgMjAxNyBUaGUgUG9seW1lciBQcm9qZWN0IEF1dGhvcnMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgICBUaGlzIGNvZGUgbWF5IG9ubHkgYmUgdXNlZCB1bmRlciB0aGUgQlNEIHN0eWxlIGxpY2Vuc2UgZm91bmQgYXQgaHR0cDovL3BvbHltZXIuZ2l0aHViLmlvL0xJQ0VOU0UudHh0CiAgICBUaGUgY29tcGxldGUgc2V0IG9mIGF1dGhvcnMgbWF5IGJlIGZvdW5kIGF0IGh0dHA6Ly9wb2x5bWVyLmdpdGh1Yi5pby9BVVRIT1JTLnR4dAogICAgVGhlIGNvbXBsZXRlIHNldCBvZiBjb250cmlidXRvcnMgbWF5IGJlIGZvdW5kIGF0IGh0dHA6Ly9wb2x5bWVyLmdpdGh1Yi5pby9DT05UUklCVVRPUlMudHh0CiAgICBDb2RlIGRpc3RyaWJ1dGVkIGJ5IEdvb2dsZSBhcyBwYXJ0IG9mIHRoZSBwb2x5bWVyIHByb2plY3QgaXMgYWxzbwogICAgc3ViamVjdCB0byBhbiBhZGRpdGlvbmFsIElQIHJpZ2h0cyBncmFudCBmb3VuZCBhdCBodHRwOi8vcG9seW1lci5naXRodWIuaW8vUEFURU5UUy50eHQKICAgICovY29uc3QgbT0hd2luZG93LlNoYWR5RE9NfHwhd2luZG93LlNoYWR5RE9NLmluVXNlO0Jvb2xlYW4oIXdpbmRvdy5TaGFkeUNTU3x8d2luZG93LlNoYWR5Q1NTLm5hdGl2ZUNzcyk7Y29uc3QgZz1tJiYiYWRvcHRlZFN0eWxlU2hlZXRzImluIERvY3VtZW50LnByb3RvdHlwZSYmInJlcGxhY2VTeW5jImluIENTU1N0eWxlU2hlZXQucHJvdG90eXBlJiYoKCk9Pnt0cnl7Y29uc3QgdD1uZXcgQ1NTU3R5bGVTaGVldDt0LnJlcGxhY2VTeW5jKCIiKTtjb25zdCBlPWRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoImRpdiIpO3JldHVybiBlLmF0dGFjaFNoYWRvdyh7bW9kZToib3BlbiJ9KSxlLnNoYWRvd1Jvb3QuYWRvcHRlZFN0eWxlU2hlZXRzPVt0XSxlLnNoYWRvd1Jvb3QuYWRvcHRlZFN0eWxlU2hlZXRzWzBdPT09dH1jYXRjaCh0KXtyZXR1cm4hMX19KSgpO2xldCBfPXdpbmRvdy5Qb2x5bWVyJiZ3aW5kb3cuUG9seW1lci5yb290UGF0aHx8Zihkb2N1bWVudC5iYXNlVVJJfHx3aW5kb3cubG9jYXRpb24uaHJlZikseT13aW5kb3cuUG9seW1lciYmd2luZG93LlBvbHltZXIuc2FuaXRpemVET01WYWx1ZXx8dm9pZCAwLHY9d2luZG93LlBvbHltZXImJndpbmRvdy5Qb2x5bWVyLnNldFBhc3NpdmVUb3VjaEdlc3R1cmVzfHwhMSxiPXdpbmRvdy5Qb2x5bWVyJiZ3aW5kb3cuUG9seW1lci5zdHJpY3RUZW1wbGF0ZVBvbGljeXx8ITEseD13aW5kb3cuUG9seW1lciYmd2luZG93LlBvbHltZXIuYWxsb3dUZW1wbGF0ZUZyb21Eb21Nb2R1bGV8fCExLHc9d2luZG93LlBvbHltZXImJndpbmRvdy5Qb2x5bWVyLmxlZ2FjeU9wdGltaXphdGlvbnN8fCExLFM9d2luZG93LlBvbHltZXImJndpbmRvdy5Qb2x5bWVyLmxlZ2FjeVdhcm5pbmdzfHwhMSxNPXdpbmRvdy5Qb2x5bWVyJiZ3aW5kb3cuUG9seW1lci5zeW5jSW5pdGlhbFJlbmRlcnx8ITEsRT13aW5kb3cuUG9seW1lciYmd2luZG93LlBvbHltZXIubGVnYWN5VW5kZWZpbmVkfHwhMSxUPXdpbmRvdy5Qb2x5bWVyJiZ3aW5kb3cuUG9seW1lci5vcmRlcmVkQ29tcHV0ZWR8fCExLEE9d2luZG93LlBvbHltZXImJndpbmRvdy5Qb2x5bWVyLnJlbW92ZU5lc3RlZFRlbXBsYXRlc3x8ITEsQz13aW5kb3cuUG9seW1lciYmd2luZG93LlBvbHltZXIuZmFzdERvbUlmfHwhMSxrPXdpbmRvdy5Qb2x5bWVyJiZ3aW5kb3cuUG9seW1lci5zdXBwcmVzc1RlbXBsYXRlTm90aWZpY2F0aW9uc3x8ITEsTD13aW5kb3cuUG9seW1lciYmd2luZG93LlBvbHltZXIubGVnYWN5Tm9PYnNlcnZlZEF0dHJpYnV0ZXN8fCExLFA9d2luZG93LlBvbHltZXImJndpbmRvdy5Qb2x5bWVyLnVzZUFkb3B0ZWRTdHlsZVNoZWV0c1dpdGhCdWlsdENTU3x8ITEsST0wO2NvbnN0IE49ZnVuY3Rpb24odCl7bGV0IGU9dC5fX21peGluQXBwbGljYXRpb25zO2V8fChlPW5ldyBXZWFrTWFwLHQuX19taXhpbkFwcGxpY2F0aW9ucz1lKTtsZXQgbj1JKys7cmV0dXJuIGZ1bmN0aW9uIGkocil7bGV0IG89ci5fX21peGluU2V0O2lmKG8mJm9bbl0pcmV0dXJuIHI7bGV0IGE9ZSxzPWEuZ2V0KHIpO2lmKCFzKXtzPXQociksYS5zZXQocixzKTtsZXQgZT1PYmplY3QuY3JlYXRlKHMuX19taXhpblNldHx8b3x8bnVsbCk7ZVtuXT0hMCxzLl9fbWl4aW5TZXQ9ZX1yZXR1cm4gc319OwovKioKICAgIEBsaWNlbnNlCiAgICBDb3B5cmlnaHQgKGMpIDIwMTcgVGhlIFBvbHltZXIgUHJvamVjdCBBdXRob3JzLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICAgVGhpcyBjb2RlIG1heSBvbmx5IGJlIHVzZWQgdW5kZXIgdGhlIEJTRCBzdHlsZSBsaWNlbnNlIGZvdW5kIGF0IGh0dHA6Ly9wb2x5bWVyLmdpdGh1Yi5pby9MSUNFTlNFLnR4dAogICAgVGhlIGNvbXBsZXRlIHNldCBvZiBhdXRob3JzIG1heSBiZSBmb3VuZCBhdCBodHRwOi8vcG9seW1lci5naXRodWIuaW8vQVVUSE9SUy50eHQKICAgIFRoZSBjb21wbGV0ZSBzZXQgb2YgY29udHJpYnV0b3JzIG1heSBiZSBmb3VuZCBhdCBodHRwOi8vcG9seW1lci5naXRodWIuaW8vQ09OVFJJQlVUT1JTLnR4dAogICAgQ29kZSBkaXN0cmlidXRlZCBieSBHb29nbGUgYXMgcGFydCBvZiB0aGUgcG9seW1lciBwcm9qZWN0IGlzIGFsc28KICAgIHN1YmplY3QgdG8gYW4gYWRkaXRpb25hbCBJUCByaWdodHMgZ3JhbnQgZm91bmQgYXQgaHR0cDovL3BvbHltZXIuZ2l0aHViLmlvL1BBVEVOVFMudHh0CiAgICAqL2xldCBPPXt9LFI9e307ZnVuY3Rpb24geih0LGUpe09bdF09Ult0LnRvTG93ZXJDYXNlKCldPWV9ZnVuY3Rpb24gRCh0KXtyZXR1cm4gT1t0XXx8Ult0LnRvTG93ZXJDYXNlKCldfWNsYXNzIEIgZXh0ZW5kcyBIVE1MRWxlbWVudHtzdGF0aWMgZ2V0IG9ic2VydmVkQXR0cmlidXRlcygpe3JldHVyblsiaWQiXX1zdGF0aWMgaW1wb3J0KHQsZSl7aWYodCl7bGV0IG49RCh0KTtyZXR1cm4gbiYmZT9uLnF1ZXJ5U2VsZWN0b3IoZSk6bn1yZXR1cm4gbnVsbH1hdHRyaWJ1dGVDaGFuZ2VkQ2FsbGJhY2sodCxlLG4saSl7ZSE9PW4mJnRoaXMucmVnaXN0ZXIoKX1nZXQgYXNzZXRwYXRoKCl7aWYoIXRoaXMuX19hc3NldHBhdGgpe2NvbnN0IHQ9d2luZG93LkhUTUxJbXBvcnRzJiZIVE1MSW1wb3J0cy5pbXBvcnRGb3JFbGVtZW50P0hUTUxJbXBvcnRzLmltcG9ydEZvckVsZW1lbnQodGhpcyl8fGRvY3VtZW50OnRoaXMub3duZXJEb2N1bWVudCxlPWQodGhpcy5nZXRBdHRyaWJ1dGUoImFzc2V0cGF0aCIpfHwiIix0LmJhc2VVUkkpO3RoaXMuX19hc3NldHBhdGg9ZihlKX1yZXR1cm4gdGhpcy5fX2Fzc2V0cGF0aH1yZWdpc3Rlcih0KXtpZih0PXR8fHRoaXMuaWQpe2lmKGImJnZvaWQgMCE9PUQodCkpdGhyb3cgeih0LG51bGwpLG5ldyBFcnJvcihgc3RyaWN0VGVtcGxhdGVQb2xpY3k6IGRvbS1tb2R1bGUgJHt0fSByZS1yZWdpc3RlcmVkYCk7dGhpcy5pZD10LHoodCx0aGlzKSwoZnVuY3Rpb24gZSh0KXt0LnF1ZXJ5U2VsZWN0b3IoInN0eWxlIikmJmNvbnNvbGUud2FybigiZG9tLW1vZHVsZSAlcyBoYXMgc3R5bGUgb3V0c2lkZSB0ZW1wbGF0ZSIsdC5pZCl9KSh0aGlzKX19fUIucHJvdG90eXBlLm1vZHVsZXM9TyxjdXN0b21FbGVtZW50cy5kZWZpbmUoImRvbS1tb2R1bGUiLEIpOwovKioKICAgIEBsaWNlbnNlCiAgICBDb3B5cmlnaHQgKGMpIDIwMTcgVGhlIFBvbHltZXIgUHJvamVjdCBBdXRob3JzLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICAgVGhpcyBjb2RlIG1heSBvbmx5IGJlIHVzZWQgdW5kZXIgdGhlIEJTRCBzdHlsZSBsaWNlbnNlIGZvdW5kIGF0IGh0dHA6Ly9wb2x5bWVyLmdpdGh1Yi5pby9MSUNFTlNFLnR4dAogICAgVGhlIGNvbXBsZXRlIHNldCBvZiBhdXRob3JzIG1heSBiZSBmb3VuZCBhdCBodHRwOi8vcG9seW1lci5naXRodWIuaW8vQVVUSE9SUy50eHQKICAgIFRoZSBjb21wbGV0ZSBzZXQgb2YgY29udHJpYnV0b3JzIG1heSBiZSBmb3VuZCBhdCBodHRwOi8vcG9seW1lci5naXRodWIuaW8vQ09OVFJJQlVUT1JTLnR4dAogICAgQ29kZSBkaXN0cmlidXRlZCBieSBHb29nbGUgYXMgcGFydCBvZiB0aGUgcG9seW1lciBwcm9qZWN0IGlzIGFsc28KICAgIHN1YmplY3QgdG8gYW4gYWRkaXRpb25hbCBJUCByaWdodHMgZ3JhbnQgZm91bmQgYXQgaHR0cDovL3BvbHltZXIuZ2l0aHViLmlvL1BBVEVOVFMudHh0CiAgICAqLwpjb25zdCBIPSJzaGFkeS11bnNjb3BlZCI7ZnVuY3Rpb24gRih0KXtyZXR1cm4gQi5pbXBvcnQodCl9ZnVuY3Rpb24gVih0KXtjb25zdCBlPXAoKHQuYm9keT90LmJvZHk6dCkudGV4dENvbnRlbnQsdC5iYXNlVVJJKSxuPWRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoInN0eWxlIik7cmV0dXJuIG4udGV4dENvbnRlbnQ9ZSxufWZ1bmN0aW9uIGoodCl7Y29uc3QgZT10LnRyaW0oKS5zcGxpdCgvXHMrLyksbj1bXTtmb3IobGV0IHQ9MDt0PGUubGVuZ3RoO3QrKyluLnB1c2goLi4uVShlW3RdKSk7cmV0dXJuIG59ZnVuY3Rpb24gVSh0KXtjb25zdCBlPUYodCk7aWYoIWUpcmV0dXJuIGNvbnNvbGUud2FybigiQ291bGQgbm90IGZpbmQgc3R5bGUgZGF0YSBpbiBtb2R1bGUgbmFtZWQiLHQpLFtdO2lmKHZvaWQgMD09PWUuX3N0eWxlcyl7Y29uc3QgdD1bXTt0LnB1c2goLi4uVyhlKSk7Y29uc3Qgbj1lLnF1ZXJ5U2VsZWN0b3IoInRlbXBsYXRlIik7biYmdC5wdXNoKC4uLkcobixlLmFzc2V0cGF0aCkpLGUuX3N0eWxlcz10fXJldHVybiBlLl9zdHlsZXN9ZnVuY3Rpb24gRyh0LGUpe2lmKCF0Ll9zdHlsZXMpe2NvbnN0IG49W10saT10LmNvbnRlbnQucXVlcnlTZWxlY3RvckFsbCgic3R5bGUiKTtmb3IobGV0IHQ9MDt0PGkubGVuZ3RoO3QrKyl7bGV0IHI9aVt0XSxvPXIuZ2V0QXR0cmlidXRlKCJpbmNsdWRlIik7byYmbi5wdXNoKC4uLmoobykuZmlsdGVyKChmdW5jdGlvbih0LGUsbil7cmV0dXJuIG4uaW5kZXhPZih0KT09PWV9KSkpLGUmJihyLnRleHRDb250ZW50PXAoci50ZXh0Q29udGVudCxlKSksbi5wdXNoKHIpfXQuX3N0eWxlcz1ufXJldHVybiB0Ll9zdHlsZXN9ZnVuY3Rpb24gVyh0KXtjb25zdCBlPVtdLG49dC5xdWVyeVNlbGVjdG9yQWxsKCJsaW5rW3JlbD1pbXBvcnRdW3R5cGV+PWNzc10iKTtmb3IobGV0IHQ9MDt0PG4ubGVuZ3RoO3QrKyl7bGV0IGk9blt0XTtpZihpLmltcG9ydCl7Y29uc3QgdD1pLmltcG9ydCxuPWkuaGFzQXR0cmlidXRlKEgpO2lmKG4mJiF0Ll91bnNjb3BlZFN0eWxlKXtjb25zdCBlPVYodCk7ZS5zZXRBdHRyaWJ1dGUoSCwiIiksdC5fdW5zY29wZWRTdHlsZT1lfWVsc2UgdC5fc3R5bGV8fCh0Ll9zdHlsZT1WKHQpKTtlLnB1c2gobj90Ll91bnNjb3BlZFN0eWxlOnQuX3N0eWxlKX19cmV0dXJuIGV9ZnVuY3Rpb24gcSh0KXtsZXQgZT1GKHQpO2lmKGUmJnZvaWQgMD09PWUuX2Nzc1RleHQpe2xldCB0PShmdW5jdGlvbiBuKHQpe2xldCBlPSIiLG49Vyh0KTtmb3IobGV0IHQ9MDt0PG4ubGVuZ3RoO3QrKyllKz1uW3RdLnRleHRDb250ZW50O3JldHVybiBlfQovKioKICAgIEBsaWNlbnNlCiAgICBDb3B5cmlnaHQgKGMpIDIwMTcgVGhlIFBvbHltZXIgUHJvamVjdCBBdXRob3JzLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICAgVGhpcyBjb2RlIG1heSBvbmx5IGJlIHVzZWQgdW5kZXIgdGhlIEJTRCBzdHlsZSBsaWNlbnNlIGZvdW5kIGF0IGh0dHA6Ly9wb2x5bWVyLmdpdGh1Yi5pby9MSUNFTlNFLnR4dAogICAgVGhlIGNvbXBsZXRlIHNldCBvZiBhdXRob3JzIG1heSBiZSBmb3VuZCBhdCBodHRwOi8vcG9seW1lci5naXRodWIuaW8vQVVUSE9SUy50eHQKICAgIFRoZSBjb21wbGV0ZSBzZXQgb2YgY29udHJpYnV0b3JzIG1heSBiZSBmb3VuZCBhdCBodHRwOi8vcG9seW1lci5naXRodWIuaW8vQ09OVFJJQlVUT1JTLnR4dAogICAgQ29kZSBkaXN0cmlidXRlZCBieSBHb29nbGUgYXMgcGFydCBvZiB0aGUgcG9seW1lciBwcm9qZWN0IGlzIGFsc28KICAgIHN1YmplY3QgdG8gYW4gYWRkaXRpb25hbCBJUCByaWdodHMgZ3JhbnQgZm91bmQgYXQgaHR0cDovL3BvbHltZXIuZ2l0aHViLmlvL1BBVEVOVFMudHh0CiAgICAqLykoZSksbj1lLnF1ZXJ5U2VsZWN0b3IoInRlbXBsYXRlIik7biYmKHQrPShmdW5jdGlvbiBpKHQsZSl7bGV0IG49IiI7Y29uc3QgaT1HKHQsZSk7Zm9yKGxldCB0PTA7dDxpLmxlbmd0aDt0Kyspe2xldCBlPWlbdF07ZS5wYXJlbnROb2RlJiZlLnBhcmVudE5vZGUucmVtb3ZlQ2hpbGQoZSksbis9ZS50ZXh0Q29udGVudH1yZXR1cm4gbn0pKG4sZS5hc3NldHBhdGgpKSxlLl9jc3NUZXh0PXR8fG51bGx9cmV0dXJuIGV8fGNvbnNvbGUud2FybigiQ291bGQgbm90IGZpbmQgc3R5bGUgZGF0YSBpbiBtb2R1bGUgbmFtZWQiLHQpLGUmJmUuX2Nzc1RleHR8fCIifWNvbnN0IFk9d2luZG93LlNoYWR5RE9NJiZ3aW5kb3cuU2hhZHlET00ubm9QYXRjaCYmd2luZG93LlNoYWR5RE9NLndyYXA/d2luZG93LlNoYWR5RE9NLndyYXA6d2luZG93LlNoYWR5RE9NP3Q9PlNoYWR5RE9NLnBhdGNoKHQpOnQ9PnQ7Ci8qKgogICAgQGxpY2Vuc2UKICAgIENvcHlyaWdodCAoYykgMjAxNyBUaGUgUG9seW1lciBQcm9qZWN0IEF1dGhvcnMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgICBUaGlzIGNvZGUgbWF5IG9ubHkgYmUgdXNlZCB1bmRlciB0aGUgQlNEIHN0eWxlIGxpY2Vuc2UgZm91bmQgYXQgaHR0cDovL3BvbHltZXIuZ2l0aHViLmlvL0xJQ0VOU0UudHh0CiAgICBUaGUgY29tcGxldGUgc2V0IG9mIGF1dGhvcnMgbWF5IGJlIGZvdW5kIGF0IGh0dHA6Ly9wb2x5bWVyLmdpdGh1Yi5pby9BVVRIT1JTLnR4dAogICAgVGhlIGNvbXBsZXRlIHNldCBvZiBjb250cmlidXRvcnMgbWF5IGJlIGZvdW5kIGF0IGh0dHA6Ly9wb2x5bWVyLmdpdGh1Yi5pby9DT05UUklCVVRPUlMudHh0CiAgICBDb2RlIGRpc3RyaWJ1dGVkIGJ5IEdvb2dsZSBhcyBwYXJ0IG9mIHRoZSBwb2x5bWVyIHByb2plY3QgaXMgYWxzbwogICAgc3ViamVjdCB0byBhbiBhZGRpdGlvbmFsIElQIHJpZ2h0cyBncmFudCBmb3VuZCBhdCBodHRwOi8vcG9seW1lci5naXRodWIuaW8vUEFURU5UUy50eHQKICAgICovZnVuY3Rpb24gWCh0KXtyZXR1cm4gdC5pbmRleE9mKCIuIik+PTB9ZnVuY3Rpb24gJCh0KXtsZXQgZT10LmluZGV4T2YoIi4iKTtyZXR1cm4tMT09PWU/dDp0LnNsaWNlKDAsZSl9ZnVuY3Rpb24gSyh0LGUpe3JldHVybiAwPT09dC5pbmRleE9mKGUrIi4iKX1mdW5jdGlvbiBaKHQsZSl7cmV0dXJuIDA9PT1lLmluZGV4T2YodCsiLiIpfWZ1bmN0aW9uIEoodCxlLG4pe3JldHVybiBlK24uc2xpY2UodC5sZW5ndGgpfWZ1bmN0aW9uIFEodCxlKXtyZXR1cm4gdD09PWV8fEsodCxlKXx8Wih0LGUpfWZ1bmN0aW9uIHR0KHQpe2lmKEFycmF5LmlzQXJyYXkodCkpe2xldCBlPVtdO2ZvcihsZXQgbj0wO248dC5sZW5ndGg7bisrKXtsZXQgaT10W25dLnRvU3RyaW5nKCkuc3BsaXQoIi4iKTtmb3IobGV0IHQ9MDt0PGkubGVuZ3RoO3QrKyllLnB1c2goaVt0XSl9cmV0dXJuIGUuam9pbigiLiIpfXJldHVybiB0fWZ1bmN0aW9uIGV0KHQpe3JldHVybiBBcnJheS5pc0FycmF5KHQpP3R0KHQpLnNwbGl0KCIuIik6dC50b1N0cmluZygpLnNwbGl0KCIuIil9ZnVuY3Rpb24gbnQodCxlLG4pe2xldCBpPXQscj1ldChlKTtmb3IobGV0IHQ9MDt0PHIubGVuZ3RoO3QrKyl7aWYoIWkpcmV0dXJuO2k9aVtyW3RdXX1yZXR1cm4gbiYmKG4ucGF0aD1yLmpvaW4oIi4iKSksaX1mdW5jdGlvbiBpdCh0LGUsbil7bGV0IGk9dCxyPWV0KGUpLG89cltyLmxlbmd0aC0xXTtpZihyLmxlbmd0aD4xKXtmb3IobGV0IHQ9MDt0PHIubGVuZ3RoLTE7dCsrKWlmKGk9aVtyW3RdXSwhaSlyZXR1cm47aVtvXT1ufWVsc2UgaVtlXT1uO3JldHVybiByLmpvaW4oIi4iKX0KLyoqCiAgICBAbGljZW5zZQogICAgQ29weXJpZ2h0IChjKSAyMDE3IFRoZSBQb2x5bWVyIFByb2plY3QgQXV0aG9ycy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAgIFRoaXMgY29kZSBtYXkgb25seSBiZSB1c2VkIHVuZGVyIHRoZSBCU0Qgc3R5bGUgbGljZW5zZSBmb3VuZCBhdCBodHRwOi8vcG9seW1lci5naXRodWIuaW8vTElDRU5TRS50eHQKICAgIFRoZSBjb21wbGV0ZSBzZXQgb2YgYXV0aG9ycyBtYXkgYmUgZm91bmQgYXQgaHR0cDovL3BvbHltZXIuZ2l0aHViLmlvL0FVVEhPUlMudHh0CiAgICBUaGUgY29tcGxldGUgc2V0IG9mIGNvbnRyaWJ1dG9ycyBtYXkgYmUgZm91bmQgYXQgaHR0cDovL3BvbHltZXIuZ2l0aHViLmlvL0NPTlRSSUJVVE9SUy50eHQKICAgIENvZGUgZGlzdHJpYnV0ZWQgYnkgR29vZ2xlIGFzIHBhcnQgb2YgdGhlIHBvbHltZXIgcHJvamVjdCBpcyBhbHNvCiAgICBzdWJqZWN0IHRvIGFuIGFkZGl0aW9uYWwgSVAgcmlnaHRzIGdyYW50IGZvdW5kIGF0IGh0dHA6Ly9wb2x5bWVyLmdpdGh1Yi5pby9QQVRFTlRTLnR4dAogICAgKi9jb25zdCBydD17fSxvdD0vLVthLXpdL2csYXQ9LyhbQS1aXSkvZztmdW5jdGlvbiBzdCh0KXtyZXR1cm4gcnRbdF18fChydFt0XT10LmluZGV4T2YoIi0iKTwwP3Q6dC5yZXBsYWNlKG90LCh0PT50WzFdLnRvVXBwZXJDYXNlKCkpKSl9ZnVuY3Rpb24gbHQodCl7cmV0dXJuIHJ0W3RdfHwocnRbdF09dC5yZXBsYWNlKGF0LCItJDEiKS50b0xvd2VyQ2FzZSgpKX0KLyoqCiAgICBAbGljZW5zZQogICAgQ29weXJpZ2h0IChjKSAyMDE3IFRoZSBQb2x5bWVyIFByb2plY3QgQXV0aG9ycy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAgIFRoaXMgY29kZSBtYXkgb25seSBiZSB1c2VkIHVuZGVyIHRoZSBCU0Qgc3R5bGUgbGljZW5zZSBmb3VuZCBhdCBodHRwOi8vcG9seW1lci5naXRodWIuaW8vTElDRU5TRS50eHQKICAgIFRoZSBjb21wbGV0ZSBzZXQgb2YgYXV0aG9ycyBtYXkgYmUgZm91bmQgYXQgaHR0cDovL3BvbHltZXIuZ2l0aHViLmlvL0FVVEhPUlMudHh0CiAgICBUaGUgY29tcGxldGUgc2V0IG9mIGNvbnRyaWJ1dG9ycyBtYXkgYmUgZm91bmQgYXQgaHR0cDovL3BvbHltZXIuZ2l0aHViLmlvL0NPTlRSSUJVVE9SUy50eHQKICAgIENvZGUgZGlzdHJpYnV0ZWQgYnkgR29vZ2xlIGFzIHBhcnQgb2YgdGhlIHBvbHltZXIgcHJvamVjdCBpcyBhbHNvCiAgICBzdWJqZWN0IHRvIGFuIGFkZGl0aW9uYWwgSVAgcmlnaHRzIGdyYW50IGZvdW5kIGF0IGh0dHA6Ly9wb2x5bWVyLmdpdGh1Yi5pby9QQVRFTlRTLnR4dAogICAgKi9sZXQgY3Q9MCx1dD0wLGh0PVtdLGR0PTAscHQ9ITEsZnQ9ZG9jdW1lbnQuY3JlYXRlVGV4dE5vZGUoIiIpO25ldyB3aW5kb3cuTXV0YXRpb25PYnNlcnZlcigoZnVuY3Rpb24gbXQoKXtwdD0hMTtjb25zdCB0PWh0Lmxlbmd0aDtmb3IobGV0IGU9MDtlPHQ7ZSsrKXtsZXQgdD1odFtlXTtpZih0KXRyeXt0KCl9Y2F0Y2godCl7c2V0VGltZW91dCgoKCk9Pnt0aHJvdyB0fSkpfX1odC5zcGxpY2UoMCx0KSx1dCs9dH0pKS5vYnNlcnZlKGZ0LHtjaGFyYWN0ZXJEYXRhOiEwfSk7Y29uc3QgZ3Q9e2FmdGVyOnQ9Pih7cnVuOmU9PndpbmRvdy5zZXRUaW1lb3V0KGUsdCksY2FuY2VsKHQpe3dpbmRvdy5jbGVhclRpbWVvdXQodCl9fSkscnVuOih0LGUpPT53aW5kb3cuc2V0VGltZW91dCh0LGUpLGNhbmNlbCh0KXt3aW5kb3cuY2xlYXJUaW1lb3V0KHQpfX0sX3Q9e3J1bjp0PT53aW5kb3cucmVxdWVzdEFuaW1hdGlvbkZyYW1lKHQpLGNhbmNlbCh0KXt3aW5kb3cuY2FuY2VsQW5pbWF0aW9uRnJhbWUodCl9fSx5dD17cnVuOnQ9PndpbmRvdy5yZXF1ZXN0SWRsZUNhbGxiYWNrP3dpbmRvdy5yZXF1ZXN0SWRsZUNhbGxiYWNrKHQpOndpbmRvdy5zZXRUaW1lb3V0KHQsMTYpLGNhbmNlbCh0KXt3aW5kb3cuY2FuY2VsSWRsZUNhbGxiYWNrP3dpbmRvdy5jYW5jZWxJZGxlQ2FsbGJhY2sodCk6d2luZG93LmNsZWFyVGltZW91dCh0KX19LHZ0PXtydW46dD0+KHB0fHwocHQ9ITAsZnQudGV4dENvbnRlbnQ9ZHQrKyksaHQucHVzaCh0KSxjdCsrKSxjYW5jZWwodCl7Y29uc3QgZT10LXV0O2lmKGU+PTApe2lmKCFodFtlXSl0aHJvdyBuZXcgRXJyb3IoImludmFsaWQgYXN5bmMgaGFuZGxlOiAiK3QpO2h0W2VdPW51bGx9fX0sYnQ9dnQseHQ9TigodD0+Y2xhc3MgZXh0ZW5kcyB0e3N0YXRpYyBjcmVhdGVQcm9wZXJ0aWVzKHQpe2NvbnN0IGU9dGhpcy5wcm90b3R5cGU7Zm9yKGxldCBuIGluIHQpbiBpbiBlfHxlLl9jcmVhdGVQcm9wZXJ0eUFjY2Vzc29yKG4pfXN0YXRpYyBhdHRyaWJ1dGVOYW1lRm9yUHJvcGVydHkodCl7cmV0dXJuIHQudG9Mb3dlckNhc2UoKX1zdGF0aWMgdHlwZUZvclByb3BlcnR5KHQpe31fY3JlYXRlUHJvcGVydHlBY2Nlc3Nvcih0LGUpe3RoaXMuX2FkZFByb3BlcnR5VG9BdHRyaWJ1dGVNYXAodCksdGhpcy5oYXNPd25Qcm9wZXJ0eShKU0NvbXBpbGVyX3JlbmFtZVByb3BlcnR5KCJfX2RhdGFIYXNBY2Nlc3NvciIsdGhpcykpfHwodGhpcy5fX2RhdGFIYXNBY2Nlc3Nvcj1PYmplY3QuYXNzaWduKHt9LHRoaXMuX19kYXRhSGFzQWNjZXNzb3IpKSx0aGlzLl9fZGF0YUhhc0FjY2Vzc29yW3RdfHwodGhpcy5fX2RhdGFIYXNBY2Nlc3Nvclt0XT0hMCx0aGlzLl9kZWZpbmVQcm9wZXJ0eUFjY2Vzc29yKHQsZSkpfV9hZGRQcm9wZXJ0eVRvQXR0cmlidXRlTWFwKHQpe3RoaXMuaGFzT3duUHJvcGVydHkoSlNDb21waWxlcl9yZW5hbWVQcm9wZXJ0eSgiX19kYXRhQXR0cmlidXRlcyIsdGhpcykpfHwodGhpcy5fX2RhdGFBdHRyaWJ1dGVzPU9iamVjdC5hc3NpZ24oe30sdGhpcy5fX2RhdGFBdHRyaWJ1dGVzKSk7bGV0IGU9dGhpcy5fX2RhdGFBdHRyaWJ1dGVzW3RdO3JldHVybiBlfHwoZT10aGlzLmNvbnN0cnVjdG9yLmF0dHJpYnV0ZU5hbWVGb3JQcm9wZXJ0eSh0KSx0aGlzLl9fZGF0YUF0dHJpYnV0ZXNbZV09dCksZX1fZGVmaW5lUHJvcGVydHlBY2Nlc3Nvcih0LGUpe09iamVjdC5kZWZpbmVQcm9wZXJ0eSh0aGlzLHQse2dldCgpe3JldHVybiB0aGlzLl9fZGF0YVt0XX0sc2V0OmU/ZnVuY3Rpb24oKXt9OmZ1bmN0aW9uKGUpe3RoaXMuX3NldFBlbmRpbmdQcm9wZXJ0eSh0LGUsITApJiZ0aGlzLl9pbnZhbGlkYXRlUHJvcGVydGllcygpfX0pfWNvbnN0cnVjdG9yKCl7c3VwZXIoKSx0aGlzLl9fZGF0YUVuYWJsZWQ9ITEsdGhpcy5fX2RhdGFSZWFkeT0hMSx0aGlzLl9fZGF0YUludmFsaWQ9ITEsdGhpcy5fX2RhdGE9e30sdGhpcy5fX2RhdGFQZW5kaW5nPW51bGwsdGhpcy5fX2RhdGFPbGQ9bnVsbCx0aGlzLl9fZGF0YUluc3RhbmNlUHJvcHM9bnVsbCx0aGlzLl9fZGF0YUNvdW50ZXI9MCx0aGlzLl9fc2VyaWFsaXppbmc9ITEsdGhpcy5faW5pdGlhbGl6ZVByb3BlcnRpZXMoKX1yZWFkeSgpe3RoaXMuX19kYXRhUmVhZHk9ITAsdGhpcy5fZmx1c2hQcm9wZXJ0aWVzKCl9X2luaXRpYWxpemVQcm9wZXJ0aWVzKCl7Zm9yKGxldCB0IGluIHRoaXMuX19kYXRhSGFzQWNjZXNzb3IpdGhpcy5oYXNPd25Qcm9wZXJ0eSh0KSYmKHRoaXMuX19kYXRhSW5zdGFuY2VQcm9wcz10aGlzLl9fZGF0YUluc3RhbmNlUHJvcHN8fHt9LHRoaXMuX19kYXRhSW5zdGFuY2VQcm9wc1t0XT10aGlzW3RdLGRlbGV0ZSB0aGlzW3RdKX1faW5pdGlhbGl6ZUluc3RhbmNlUHJvcGVydGllcyh0KXtPYmplY3QuYXNzaWduKHRoaXMsdCl9X3NldFByb3BlcnR5KHQsZSl7dGhpcy5fc2V0UGVuZGluZ1Byb3BlcnR5KHQsZSkmJnRoaXMuX2ludmFsaWRhdGVQcm9wZXJ0aWVzKCl9X2dldFByb3BlcnR5KHQpe3JldHVybiB0aGlzLl9fZGF0YVt0XX1fc2V0UGVuZGluZ1Byb3BlcnR5KHQsZSxuKXtsZXQgaT10aGlzLl9fZGF0YVt0XSxyPXRoaXMuX3Nob3VsZFByb3BlcnR5Q2hhbmdlKHQsZSxpKTtyZXR1cm4gciYmKHRoaXMuX19kYXRhUGVuZGluZ3x8KHRoaXMuX19kYXRhUGVuZGluZz17fSx0aGlzLl9fZGF0YU9sZD17fSksdGhpcy5fX2RhdGFPbGQmJiEodCBpbiB0aGlzLl9fZGF0YU9sZCkmJih0aGlzLl9fZGF0YU9sZFt0XT1pKSx0aGlzLl9fZGF0YVt0XT1lLHRoaXMuX19kYXRhUGVuZGluZ1t0XT1lKSxyfV9pc1Byb3BlcnR5UGVuZGluZyh0KXtyZXR1cm4hKCF0aGlzLl9fZGF0YVBlbmRpbmd8fCF0aGlzLl9fZGF0YVBlbmRpbmcuaGFzT3duUHJvcGVydHkodCkpfV9pbnZhbGlkYXRlUHJvcGVydGllcygpeyF0aGlzLl9fZGF0YUludmFsaWQmJnRoaXMuX19kYXRhUmVhZHkmJih0aGlzLl9fZGF0YUludmFsaWQ9ITAsYnQucnVuKCgoKT0+e3RoaXMuX19kYXRhSW52YWxpZCYmKHRoaXMuX19kYXRhSW52YWxpZD0hMSx0aGlzLl9mbHVzaFByb3BlcnRpZXMoKSl9KSkpfV9lbmFibGVQcm9wZXJ0aWVzKCl7dGhpcy5fX2RhdGFFbmFibGVkfHwodGhpcy5fX2RhdGFFbmFibGVkPSEwLHRoaXMuX19kYXRhSW5zdGFuY2VQcm9wcyYmKHRoaXMuX2luaXRpYWxpemVJbnN0YW5jZVByb3BlcnRpZXModGhpcy5fX2RhdGFJbnN0YW5jZVByb3BzKSx0aGlzLl9fZGF0YUluc3RhbmNlUHJvcHM9bnVsbCksdGhpcy5yZWFkeSgpKX1fZmx1c2hQcm9wZXJ0aWVzKCl7dGhpcy5fX2RhdGFDb3VudGVyKys7Y29uc3QgdD10aGlzLl9fZGF0YSxlPXRoaXMuX19kYXRhUGVuZGluZyxuPXRoaXMuX19kYXRhT2xkO3RoaXMuX3Nob3VsZFByb3BlcnRpZXNDaGFuZ2UodCxlLG4pJiYodGhpcy5fX2RhdGFQZW5kaW5nPW51bGwsdGhpcy5fX2RhdGFPbGQ9bnVsbCx0aGlzLl9wcm9wZXJ0aWVzQ2hhbmdlZCh0LGUsbikpLHRoaXMuX19kYXRhQ291bnRlci0tfV9zaG91bGRQcm9wZXJ0aWVzQ2hhbmdlKHQsZSxuKXtyZXR1cm4gQm9vbGVhbihlKX1fcHJvcGVydGllc0NoYW5nZWQodCxlLG4pe31fc2hvdWxkUHJvcGVydHlDaGFuZ2UodCxlLG4pe3JldHVybiBuIT09ZSYmKG49PW58fGU9PWUpfWF0dHJpYnV0ZUNoYW5nZWRDYWxsYmFjayh0LGUsbixpKXtlIT09biYmdGhpcy5fYXR0cmlidXRlVG9Qcm9wZXJ0eSh0LG4pLHN1cGVyLmF0dHJpYnV0ZUNoYW5nZWRDYWxsYmFjayYmc3VwZXIuYXR0cmlidXRlQ2hhbmdlZENhbGxiYWNrKHQsZSxuLGkpfV9hdHRyaWJ1dGVUb1Byb3BlcnR5KHQsZSxuKXtpZighdGhpcy5fX3NlcmlhbGl6aW5nKXtjb25zdCBpPXRoaXMuX19kYXRhQXR0cmlidXRlcyxyPWkmJmlbdF18fHQ7dGhpc1tyXT10aGlzLl9kZXNlcmlhbGl6ZVZhbHVlKGUsbnx8dGhpcy5jb25zdHJ1Y3Rvci50eXBlRm9yUHJvcGVydHkocikpfX1fcHJvcGVydHlUb0F0dHJpYnV0ZSh0LGUsbil7dGhpcy5fX3NlcmlhbGl6aW5nPSEwLHRoaXMuX3ZhbHVlVG9Ob2RlQXR0cmlidXRlKHRoaXMsbj1hcmd1bWVudHMubGVuZ3RoPDM/dGhpc1t0XTpuLGV8fHRoaXMuY29uc3RydWN0b3IuYXR0cmlidXRlTmFtZUZvclByb3BlcnR5KHQpKSx0aGlzLl9fc2VyaWFsaXppbmc9ITF9X3ZhbHVlVG9Ob2RlQXR0cmlidXRlKHQsZSxuKXtjb25zdCBpPXRoaXMuX3NlcmlhbGl6ZVZhbHVlKGUpOyJjbGFzcyIhPT1uJiYibmFtZSIhPT1uJiYic2xvdCIhPT1ufHwodD1ZKHQpKSx2b2lkIDA9PT1pP3QucmVtb3ZlQXR0cmlidXRlKG4pOnQuc2V0QXR0cmlidXRlKG4saSl9X3NlcmlhbGl6ZVZhbHVlKHQpe3N3aXRjaCh0eXBlb2YgdCl7Y2FzZSJib29sZWFuIjpyZXR1cm4gdD8iIjp2b2lkIDA7ZGVmYXVsdDpyZXR1cm4gbnVsbCE9dD90LnRvU3RyaW5nKCk6dm9pZCAwfX1fZGVzZXJpYWxpemVWYWx1ZSh0LGUpe3N3aXRjaChlKXtjYXNlIEJvb2xlYW46cmV0dXJuIG51bGwhPT10O2Nhc2UgTnVtYmVyOnJldHVybiBOdW1iZXIodCk7ZGVmYXVsdDpyZXR1cm4gdH19fSkpLHd0PXt9O2xldCBTdD1IVE1MRWxlbWVudC5wcm90b3R5cGU7Zm9yKDtTdDspe2xldCB0PU9iamVjdC5nZXRPd25Qcm9wZXJ0eU5hbWVzKFN0KTtmb3IobGV0IGU9MDtlPHQubGVuZ3RoO2UrKyl3dFt0W2VdXT0hMDtTdD1PYmplY3QuZ2V0UHJvdG90eXBlT2YoU3QpfWNvbnN0IE10PU4oKHQ9Pntjb25zdCBlPXh0KHQpO3JldHVybiBjbGFzcyBleHRlbmRzIGV7c3RhdGljIGNyZWF0ZVByb3BlcnRpZXNGb3JBdHRyaWJ1dGVzKCl7bGV0IHQ9dGhpcy5vYnNlcnZlZEF0dHJpYnV0ZXM7Zm9yKGxldCBlPTA7ZTx0Lmxlbmd0aDtlKyspdGhpcy5wcm90b3R5cGUuX2NyZWF0ZVByb3BlcnR5QWNjZXNzb3Ioc3QodFtlXSkpfXN0YXRpYyBhdHRyaWJ1dGVOYW1lRm9yUHJvcGVydHkodCl7cmV0dXJuIGx0KHQpfV9pbml0aWFsaXplUHJvcGVydGllcygpe3RoaXMuX19kYXRhUHJvdG8mJih0aGlzLl9pbml0aWFsaXplUHJvdG9Qcm9wZXJ0aWVzKHRoaXMuX19kYXRhUHJvdG8pLHRoaXMuX19kYXRhUHJvdG89bnVsbCksc3VwZXIuX2luaXRpYWxpemVQcm9wZXJ0aWVzKCl9X2luaXRpYWxpemVQcm90b1Byb3BlcnRpZXModCl7Zm9yKGxldCBlIGluIHQpdGhpcy5fc2V0UHJvcGVydHkoZSx0W2VdKX1fZW5zdXJlQXR0cmlidXRlKHQsZSl7dGhpcy5oYXNBdHRyaWJ1dGUodCl8fHRoaXMuX3ZhbHVlVG9Ob2RlQXR0cmlidXRlKHRoaXMsZSx0KX1fc2VyaWFsaXplVmFsdWUodCl7c3dpdGNoKHR5cGVvZiB0KXtjYXNlIm9iamVjdCI6aWYodCBpbnN0YW5jZW9mIERhdGUpcmV0dXJuIHQudG9TdHJpbmcoKTtpZih0KXRyeXtyZXR1cm4gSlNPTi5zdHJpbmdpZnkodCl9Y2F0Y2godCl7cmV0dXJuIiJ9ZGVmYXVsdDpyZXR1cm4gc3VwZXIuX3NlcmlhbGl6ZVZhbHVlKHQpfX1fZGVzZXJpYWxpemVWYWx1ZSh0LGUpe2xldCBuO3N3aXRjaChlKXtjYXNlIE9iamVjdDp0cnl7bj1KU09OLnBhcnNlKHQpfWNhdGNoKGUpe249dH1icmVhaztjYXNlIEFycmF5OnRyeXtuPUpTT04ucGFyc2UodCl9Y2F0Y2goZSl7bj1udWxsLGNvbnNvbGUud2FybihgUG9seW1lcjo6QXR0cmlidXRlczogY291bGRuJ3QgZGVjb2RlIEFycmF5IGFzIEpTT046ICR7dH1gKX1icmVhaztjYXNlIERhdGU6bj1pc05hTih0KT9TdHJpbmcodCk6TnVtYmVyKHQpLG49bmV3IERhdGUobik7YnJlYWs7ZGVmYXVsdDpuPXN1cGVyLl9kZXNlcmlhbGl6ZVZhbHVlKHQsZSl9cmV0dXJuIG59X2RlZmluZVByb3BlcnR5QWNjZXNzb3IodCxlKXshKGZ1bmN0aW9uIG4odCxlKXtpZighd3RbZV0pe2xldCBuPXRbZV07dm9pZCAwIT09biYmKHQuX19kYXRhP3QuX3NldFBlbmRpbmdQcm9wZXJ0eShlLG4pOih0Ll9fZGF0YVByb3RvP3QuaGFzT3duUHJvcGVydHkoSlNDb21waWxlcl9yZW5hbWVQcm9wZXJ0eSgiX19kYXRhUHJvdG8iLHQpKXx8KHQuX19kYXRhUHJvdG89T2JqZWN0LmNyZWF0ZSh0Ll9fZGF0YVByb3RvKSk6dC5fX2RhdGFQcm90bz17fSx0Ll9fZGF0YVByb3RvW2VdPW4pKX19KSh0aGlzLHQpLHN1cGVyLl9kZWZpbmVQcm9wZXJ0eUFjY2Vzc29yKHQsZSl9X2hhc0FjY2Vzc29yKHQpe3JldHVybiB0aGlzLl9fZGF0YUhhc0FjY2Vzc29yJiZ0aGlzLl9fZGF0YUhhc0FjY2Vzc29yW3RdfV9pc1Byb3BlcnR5UGVuZGluZyh0KXtyZXR1cm4gQm9vbGVhbih0aGlzLl9fZGF0YVBlbmRpbmcmJnQgaW4gdGhpcy5fX2RhdGFQZW5kaW5nKX19fSkpLEV0PXsiZG9tLWlmIjohMCwiZG9tLXJlcGVhdCI6ITB9OwovKioKICAgIEBsaWNlbnNlCiAgICBDb3B5cmlnaHQgKGMpIDIwMTcgVGhlIFBvbHltZXIgUHJvamVjdCBBdXRob3JzLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICAgVGhpcyBjb2RlIG1heSBvbmx5IGJlIHVzZWQgdW5kZXIgdGhlIEJTRCBzdHlsZSBsaWNlbnNlIGZvdW5kIGF0IGh0dHA6Ly9wb2x5bWVyLmdpdGh1Yi5pby9MSUNFTlNFLnR4dAogICAgVGhlIGNvbXBsZXRlIHNldCBvZiBhdXRob3JzIG1heSBiZSBmb3VuZCBhdCBodHRwOi8vcG9seW1lci5naXRodWIuaW8vQVVUSE9SUy50eHQKICAgIFRoZSBjb21wbGV0ZSBzZXQgb2YgY29udHJpYnV0b3JzIG1heSBiZSBmb3VuZCBhdCBodHRwOi8vcG9seW1lci5naXRodWIuaW8vQ09OVFJJQlVUT1JTLnR4dAogICAgQ29kZSBkaXN0cmlidXRlZCBieSBHb29nbGUgYXMgcGFydCBvZiB0aGUgcG9seW1lciBwcm9qZWN0IGlzIGFsc28KICAgIHN1YmplY3QgdG8gYW4gYWRkaXRpb25hbCBJUCByaWdodHMgZ3JhbnQgZm91bmQgYXQgaHR0cDovL3BvbHltZXIuZ2l0aHViLmlvL1BBVEVOVFMudHh0CiAgICAqL2xldCBUdD0hMSxBdD0hMTtmdW5jdGlvbiBDdCh0KXtsZXQgZT10LmdldEF0dHJpYnV0ZSgiaXMiKTtpZihlJiZFdFtlXSl7bGV0IG49dDtmb3Iobi5yZW1vdmVBdHRyaWJ1dGUoImlzIiksdD1uLm93bmVyRG9jdW1lbnQuY3JlYXRlRWxlbWVudChlKSxuLnBhcmVudE5vZGUucmVwbGFjZUNoaWxkKHQsbiksdC5hcHBlbmRDaGlsZChuKTtuLmF0dHJpYnV0ZXMubGVuZ3RoOyl0LnNldEF0dHJpYnV0ZShuLmF0dHJpYnV0ZXNbMF0ubmFtZSxuLmF0dHJpYnV0ZXNbMF0udmFsdWUpLG4ucmVtb3ZlQXR0cmlidXRlKG4uYXR0cmlidXRlc1swXS5uYW1lKX1yZXR1cm4gdH1mdW5jdGlvbiBrdCh0LGUpe2xldCBuPWUucGFyZW50SW5mbyYma3QodCxlLnBhcmVudEluZm8pO2lmKCFuKXJldHVybiB0O2ZvcihsZXQgdD1uLmZpcnN0Q2hpbGQsaT0wO3Q7dD10Lm5leHRTaWJsaW5nKWlmKGUucGFyZW50SW5kZXg9PT1pKyspcmV0dXJuIHR9ZnVuY3Rpb24gTHQodCxlLG4saSl7aS5pZCYmKGVbaS5pZF09bil9ZnVuY3Rpb24gUHQodCxlLG4pe2lmKG4uZXZlbnRzJiZuLmV2ZW50cy5sZW5ndGgpZm9yKGxldCBpLHI9MCxvPW4uZXZlbnRzO3I8by5sZW5ndGgmJihpPW9bcl0pO3IrKyl0Ll9hZGRNZXRob2RFdmVudExpc3RlbmVyVG9Ob2RlKGUsaS5uYW1lLGkudmFsdWUsdCl9ZnVuY3Rpb24gSXQodCxlLG4saSl7bi50ZW1wbGF0ZUluZm8mJihlLl90ZW1wbGF0ZUluZm89bi50ZW1wbGF0ZUluZm8sZS5fcGFyZW50VGVtcGxhdGVJbmZvPWkpfWNvbnN0IE50PU4oKHQ9PmNsYXNzIGV4dGVuZHMgdHtzdGF0aWMgX3BhcnNlVGVtcGxhdGUodCxlKXtpZighdC5fdGVtcGxhdGVJbmZvKXtsZXQgbj10Ll90ZW1wbGF0ZUluZm89e307bi5ub2RlSW5mb0xpc3Q9W10sbi5uZXN0ZWRUZW1wbGF0ZT1Cb29sZWFuKGUpLG4uc3RyaXBXaGl0ZVNwYWNlPWUmJmUuc3RyaXBXaGl0ZVNwYWNlfHx0Lmhhc0F0dHJpYnV0ZSgic3RyaXAtd2hpdGVzcGFjZSIpLHRoaXMuX3BhcnNlVGVtcGxhdGVDb250ZW50KHQsbix7cGFyZW50Om51bGx9KX1yZXR1cm4gdC5fdGVtcGxhdGVJbmZvfXN0YXRpYyBfcGFyc2VUZW1wbGF0ZUNvbnRlbnQodCxlLG4pe3JldHVybiB0aGlzLl9wYXJzZVRlbXBsYXRlTm9kZSh0LmNvbnRlbnQsZSxuKX1zdGF0aWMgX3BhcnNlVGVtcGxhdGVOb2RlKHQsZSxuKXtsZXQgaT0hMSxyPXQ7cmV0dXJuInRlbXBsYXRlIiE9ci5sb2NhbE5hbWV8fHIuaGFzQXR0cmlidXRlKCJwcmVzZXJ2ZS1jb250ZW50Iik/InNsb3QiPT09ci5sb2NhbE5hbWUmJihlLmhhc0luc2VydGlvblBvaW50PSEwKTppPXRoaXMuX3BhcnNlVGVtcGxhdGVOZXN0ZWRUZW1wbGF0ZShyLGUsbil8fGksKGZ1bmN0aW9uIG8odCl7KGZ1bmN0aW9uIGUoKXtpZighVHQpe1R0PSEwO2NvbnN0IHQ9ZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgidGV4dGFyZWEiKTt0LnBsYWNlaG9sZGVyPSJhIixBdD10LnBsYWNlaG9sZGVyPT09dC50ZXh0Q29udGVudH1yZXR1cm4gQXR9KSgpJiYidGV4dGFyZWEiPT09dC5sb2NhbE5hbWUmJnQucGxhY2Vob2xkZXImJnQucGxhY2Vob2xkZXI9PT10LnRleHRDb250ZW50JiYodC50ZXh0Q29udGVudD1udWxsKX0pKHIpLHIuZmlyc3RDaGlsZCYmdGhpcy5fcGFyc2VUZW1wbGF0ZUNoaWxkTm9kZXMocixlLG4pLHIuaGFzQXR0cmlidXRlcyYmci5oYXNBdHRyaWJ1dGVzKCkmJihpPXRoaXMuX3BhcnNlVGVtcGxhdGVOb2RlQXR0cmlidXRlcyhyLGUsbil8fGkpLGl8fG4ubm90ZWR9c3RhdGljIF9wYXJzZVRlbXBsYXRlQ2hpbGROb2Rlcyh0LGUsbil7aWYoInNjcmlwdCIhPT10LmxvY2FsTmFtZSYmInN0eWxlIiE9PXQubG9jYWxOYW1lKWZvcihsZXQgaSxyPXQuZmlyc3RDaGlsZCxvPTA7cjtyPWkpe2lmKCJ0ZW1wbGF0ZSI9PXIubG9jYWxOYW1lJiYocj1DdChyKSksaT1yLm5leHRTaWJsaW5nLHIubm9kZVR5cGU9PT1Ob2RlLlRFWFRfTk9ERSl7bGV0IG49aTtmb3IoO24mJm4ubm9kZVR5cGU9PT1Ob2RlLlRFWFRfTk9ERTspci50ZXh0Q29udGVudCs9bi50ZXh0Q29udGVudCxpPW4ubmV4dFNpYmxpbmcsdC5yZW1vdmVDaGlsZChuKSxuPWk7aWYoZS5zdHJpcFdoaXRlU3BhY2UmJiFyLnRleHRDb250ZW50LnRyaW0oKSl7dC5yZW1vdmVDaGlsZChyKTtjb250aW51ZX19bGV0IGE9e3BhcmVudEluZGV4Om8scGFyZW50SW5mbzpufTt0aGlzLl9wYXJzZVRlbXBsYXRlTm9kZShyLGUsYSkmJihhLmluZm9JbmRleD1lLm5vZGVJbmZvTGlzdC5wdXNoKGEpLTEpLHIucGFyZW50Tm9kZSYmbysrfX1zdGF0aWMgX3BhcnNlVGVtcGxhdGVOZXN0ZWRUZW1wbGF0ZSh0LGUsbil7bGV0IGk9dCxyPXRoaXMuX3BhcnNlVGVtcGxhdGUoaSxlKTtyZXR1cm4oci5jb250ZW50PWkuY29udGVudC5vd25lckRvY3VtZW50LmNyZWF0ZURvY3VtZW50RnJhZ21lbnQoKSkuYXBwZW5kQ2hpbGQoaS5jb250ZW50KSxuLnRlbXBsYXRlSW5mbz1yLCEwfXN0YXRpYyBfcGFyc2VUZW1wbGF0ZU5vZGVBdHRyaWJ1dGVzKHQsZSxuKXtsZXQgaT0hMSxyPUFycmF5LmZyb20odC5hdHRyaWJ1dGVzKTtmb3IobGV0IG8sYT1yLmxlbmd0aC0xO289clthXTthLS0paT10aGlzLl9wYXJzZVRlbXBsYXRlTm9kZUF0dHJpYnV0ZSh0LGUsbixvLm5hbWUsby52YWx1ZSl8fGk7cmV0dXJuIGl9c3RhdGljIF9wYXJzZVRlbXBsYXRlTm9kZUF0dHJpYnV0ZSh0LGUsbixpLHIpe3JldHVybiJvbi0iPT09aS5zbGljZSgwLDMpPyh0LnJlbW92ZUF0dHJpYnV0ZShpKSxuLmV2ZW50cz1uLmV2ZW50c3x8W10sbi5ldmVudHMucHVzaCh7bmFtZTppLnNsaWNlKDMpLHZhbHVlOnJ9KSwhMCk6ImlkIj09PWkmJihuLmlkPXIsITApfXN0YXRpYyBfY29udGVudEZvclRlbXBsYXRlKHQpe2xldCBlPXQuX3RlbXBsYXRlSW5mbztyZXR1cm4gZSYmZS5jb250ZW50fHx0LmNvbnRlbnR9X3N0YW1wVGVtcGxhdGUodCxlKXt0JiYhdC5jb250ZW50JiZ3aW5kb3cuSFRNTFRlbXBsYXRlRWxlbWVudCYmSFRNTFRlbXBsYXRlRWxlbWVudC5kZWNvcmF0ZSYmSFRNTFRlbXBsYXRlRWxlbWVudC5kZWNvcmF0ZSh0KTtsZXQgbj0oZT1lfHx0aGlzLmNvbnN0cnVjdG9yLl9wYXJzZVRlbXBsYXRlKHQpKS5ub2RlSW5mb0xpc3QsaT1kb2N1bWVudC5pbXBvcnROb2RlKGUuY29udGVudHx8dC5jb250ZW50LCEwKTtpLl9fbm9JbnNlcnRpb25Qb2ludD0hZS5oYXNJbnNlcnRpb25Qb2ludDtsZXQgcj1pLm5vZGVMaXN0PW5ldyBBcnJheShuLmxlbmd0aCk7aS4kPXt9O2ZvcihsZXQgdCxvPTAsYT1uLmxlbmd0aDtvPGEmJih0PW5bb10pO28rKyl7bGV0IG49cltvXT1rdChpLHQpO0x0KDAsaS4kLG4sdCksSXQoMCxuLHQsZSksUHQodGhpcyxuLHQpfXJldHVybiBpPWksaX1fYWRkTWV0aG9kRXZlbnRMaXN0ZW5lclRvTm9kZSh0LGUsbixpKXtsZXQgcj0oZnVuY3Rpb24gbyh0LGUsbil7cmV0dXJuIHQ9dC5fbWV0aG9kSG9zdHx8dCxmdW5jdGlvbihlKXt0W25dP3Rbbl0oZSxlLmRldGFpbCk6Y29uc29sZS53YXJuKCJsaXN0ZW5lciBtZXRob2QgYCIrbisiYCBub3QgZGVmaW5lZCIpfX0pKGk9aXx8dCwwLG4pO3JldHVybiB0aGlzLl9hZGRFdmVudExpc3RlbmVyVG9Ob2RlKHQsZSxyKSxyfV9hZGRFdmVudExpc3RlbmVyVG9Ob2RlKHQsZSxuKXt0LmFkZEV2ZW50TGlzdGVuZXIoZSxuKX1fcmVtb3ZlRXZlbnRMaXN0ZW5lckZyb21Ob2RlKHQsZSxuKXt0LnJlbW92ZUV2ZW50TGlzdGVuZXIoZSxuKX19KSk7Ci8qKgogICAgICogQGZpbGVvdmVydmlldwogICAgICogQHN1cHByZXNzIHtjaGVja1Byb3RvdHlwYWxUeXBlc30KICAgICAqIEBsaWNlbnNlIENvcHlyaWdodCAoYykgMjAxNyBUaGUgUG9seW1lciBQcm9qZWN0IEF1dGhvcnMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgICAgKiBUaGlzIGNvZGUgbWF5IG9ubHkgYmUgdXNlZCB1bmRlciB0aGUgQlNEIHN0eWxlIGxpY2Vuc2UgZm91bmQgYXQKICAgICAqIGh0dHA6Ly9wb2x5bWVyLmdpdGh1Yi5pby9MSUNFTlNFLnR4dCBUaGUgY29tcGxldGUgc2V0IG9mIGF1dGhvcnMgbWF5IGJlIGZvdW5kCiAgICAgKiBhdCBodHRwOi8vcG9seW1lci5naXRodWIuaW8vQVVUSE9SUy50eHQgVGhlIGNvbXBsZXRlIHNldCBvZiBjb250cmlidXRvcnMgbWF5CiAgICAgKiBiZSBmb3VuZCBhdCBodHRwOi8vcG9seW1lci5naXRodWIuaW8vQ09OVFJJQlVUT1JTLnR4dCBDb2RlIGRpc3RyaWJ1dGVkIGJ5CiAgICAgKiBHb29nbGUgYXMgcGFydCBvZiB0aGUgcG9seW1lciBwcm9qZWN0IGlzIGFsc28gc3ViamVjdCB0byBhbiBhZGRpdGlvbmFsIElQCiAgICAgKiByaWdodHMgZ3JhbnQgZm91bmQgYXQgaHR0cDovL3BvbHltZXIuZ2l0aHViLmlvL1BBVEVOVFMudHh0CiAgICAgKi9sZXQgT3Q9MDtjb25zdCBSdD1bXSx6dD17Q09NUFVURToiX19jb21wdXRlRWZmZWN0cyIsUkVGTEVDVDoiX19yZWZsZWN0RWZmZWN0cyIsTk9USUZZOiJfX25vdGlmeUVmZmVjdHMiLFBST1BBR0FURToiX19wcm9wYWdhdGVFZmZlY3RzIixPQlNFUlZFOiJfX29ic2VydmVFZmZlY3RzIixSRUFEX09OTFk6Il9fcmVhZE9ubHkifSxEdD0vW0EtWl0vO2Z1bmN0aW9uIEJ0KHQsZSxuKXtsZXQgaT10W2VdO2lmKGkpe2lmKCF0Lmhhc093blByb3BlcnR5KGUpJiYoaT10W2VdPU9iamVjdC5jcmVhdGUodFtlXSksbikpZm9yKGxldCB0IGluIGkpe2xldCBlPWlbdF0sbj1pW3RdPUFycmF5KGUubGVuZ3RoKTtmb3IobGV0IHQ9MDt0PGUubGVuZ3RoO3QrKyluW3RdPWVbdF19fWVsc2UgaT10W2VdPXt9O3JldHVybiBpfWZ1bmN0aW9uIEh0KHQsZSxuLGkscixvKXtpZihlKXtsZXQgYT0hMTtjb25zdCBzPU90Kys7Zm9yKGxldCBsIGluIG4pe2xldCBjPWVbcj8kKGwpOmxdO2lmKGMpZm9yKGxldCBlLHU9MCxoPWMubGVuZ3RoO3U8aCYmKGU9Y1t1XSk7dSsrKWUuaW5mbyYmZS5pbmZvLmxhc3RSdW49PT1zfHxyJiYhVnQobCxlLnRyaWdnZXIpfHwoZS5pbmZvJiYoZS5pbmZvLmxhc3RSdW49cyksZS5mbih0LGwsbixpLGUuaW5mbyxyLG8pLGE9ITApfXJldHVybiBhfXJldHVybiExfWZ1bmN0aW9uIEZ0KHQsZSxuLGkscixvLGEscyl7bGV0IGw9ITEsYz1lW2E/JChpKTppXTtpZihjKWZvcihsZXQgZSx1PTAsaD1jLmxlbmd0aDt1PGgmJihlPWNbdV0pO3UrKyllLmluZm8mJmUuaW5mby5sYXN0UnVuPT09bnx8YSYmIVZ0KGksZS50cmlnZ2VyKXx8KGUuaW5mbyYmKGUuaW5mby5sYXN0UnVuPW4pLGUuZm4odCxpLHIsbyxlLmluZm8sYSxzKSxsPSEwKTtyZXR1cm4gbH1mdW5jdGlvbiBWdCh0LGUpe2lmKGUpe2xldCBuPWUubmFtZTtyZXR1cm4gbj09dHx8ISghZS5zdHJ1Y3R1cmVkfHwhSyhuLHQpKXx8ISghZS53aWxkY2FyZHx8IVoobix0KSl9cmV0dXJuITB9ZnVuY3Rpb24ganQodCxlLG4saSxyKXtsZXQgbz0ic3RyaW5nIj09dHlwZW9mIHIubWV0aG9kP3Rbci5tZXRob2RdOnIubWV0aG9kLGE9ci5wcm9wZXJ0eTtvP28uY2FsbCh0LHQuX19kYXRhW2FdLGlbYV0pOnIuZHluYW1pY0ZufHxjb25zb2xlLndhcm4oIm9ic2VydmVyIG1ldGhvZCBgIityLm1ldGhvZCsiYCBub3QgZGVmaW5lZCIpfWZ1bmN0aW9uIFV0KHQsZSxuKXtsZXQgaT0kKGUpO3JldHVybiBpIT09ZSYmKEd0KHQsbHQoaSkrIi1jaGFuZ2VkIixuW2VdLGUpLCEwKX1mdW5jdGlvbiBHdCh0LGUsbixpKXtsZXQgcj17dmFsdWU6bixxdWV1ZVByb3BlcnR5OiEwfTtpJiYoci5wYXRoPWkpLFkodCkuZGlzcGF0Y2hFdmVudChuZXcgQ3VzdG9tRXZlbnQoZSx7ZGV0YWlsOnJ9KSl9ZnVuY3Rpb24gV3QodCxlLG4saSxyLG8pe2xldCBhPShvPyQoZSk6ZSkhPWU/ZTpudWxsLHM9YT9udCh0LGEpOnQuX19kYXRhW2VdO2EmJnZvaWQgMD09PXMmJihzPW5bZV0pLEd0KHQsci5ldmVudE5hbWUscyxhKX1mdW5jdGlvbiBxdCh0LGUsbixpLHIpe2xldCBvPXQuX19kYXRhW2VdO3kmJihvPXkobyxyLmF0dHJOYW1lLCJhdHRyaWJ1dGUiLHQpKSx0Ll9wcm9wZXJ0eVRvQXR0cmlidXRlKGUsci5hdHRyTmFtZSxvKX1jb25zdCBZdD0odCxlLG4pPT57bGV0IGk9MCxyPWUubGVuZ3RoLTEsbz0tMTtmb3IoO2k8PXI7KXtjb25zdCBhPWkrcj4+MSxzPW4uZ2V0KGVbYV0ubWV0aG9kSW5mbyktbi5nZXQodC5tZXRob2RJbmZvKTtpZihzPDApaT1hKzE7ZWxzZXtpZighKHM+MCkpe289YTticmVha31yPWEtMX19bzwwJiYobz1yKzEpLGUuc3BsaWNlKG8sMCx0KX0sWHQ9KHQsZSxuLGkscik9Pntjb25zdCBvPWVbcj8kKHQpOnRdO2lmKG8pZm9yKGxldCBlPTA7ZTxvLmxlbmd0aDtlKyspe2NvbnN0IGE9b1tlXTthLmluZm8ubGFzdFJ1bj09PU90fHxyJiYhVnQodCxhLnRyaWdnZXIpfHwoYS5pbmZvLmxhc3RSdW49T3QsWXQoYS5pbmZvLG4saSkpfX07ZnVuY3Rpb24gJHQodCxlLG4saSxyKXtsZXQgbz1uZSh0LGUsbiwwLHIpO2lmKG89PT1SdClyZXR1cm4hMTtsZXQgYT1yLm1ldGhvZEluZm87cmV0dXJuIHQuX19kYXRhSGFzQWNjZXNzb3ImJnQuX19kYXRhSGFzQWNjZXNzb3JbYV0/dC5fc2V0UGVuZGluZ1Byb3BlcnR5KGEsbywhMCk6KHRbYV09bywhMSl9ZnVuY3Rpb24gS3QodCxlLG4saSxyLG8sYSl7bi5iaW5kaW5ncz1uLmJpbmRpbmdzfHxbXTtsZXQgcz17a2luZDppLHRhcmdldDpyLHBhcnRzOm8sbGl0ZXJhbDphLGlzQ29tcG91bmQ6MSE9PW8ubGVuZ3RofTtpZihuLmJpbmRpbmdzLnB1c2gocyksKGZ1bmN0aW9uIGwodCl7cmV0dXJuIEJvb2xlYW4odC50YXJnZXQpJiYiYXR0cmlidXRlIiE9dC5raW5kJiYidGV4dCIhPXQua2luZCYmIXQuaXNDb21wb3VuZCYmInsiPT09dC5wYXJ0c1swXS5tb2RlfSkocykpe2xldHtldmVudDp0LG5lZ2F0ZTplfT1zLnBhcnRzWzBdO3MubGlzdGVuZXJFdmVudD10fHxsdChyKSsiLWNoYW5nZWQiLHMubGlzdGVuZXJOZWdhdGU9ZX1sZXQgYz1lLm5vZGVJbmZvTGlzdC5sZW5ndGg7Zm9yKGxldCBuPTA7bjxzLnBhcnRzLmxlbmd0aDtuKyspe2xldCBpPXMucGFydHNbbl07aS5jb21wb3VuZEluZGV4PW4sWnQodCxlLHMsaSxjKX19ZnVuY3Rpb24gWnQodCxlLG4saSxyKXtpZighaS5saXRlcmFsKWlmKCJhdHRyaWJ1dGUiPT09bi5raW5kJiYiLSI9PT1uLnRhcmdldFswXSljb25zb2xlLndhcm4oIkNhbm5vdCBzZXQgYXR0cmlidXRlICIrbi50YXJnZXQrJyBiZWNhdXNlICItIiBpcyBub3QgYSB2YWxpZCBhdHRyaWJ1dGUgc3RhcnRpbmcgY2hhcmFjdGVyJyk7ZWxzZXtsZXQgbz1pLmRlcGVuZGVuY2llcyxhPXtpbmRleDpyLGJpbmRpbmc6bixwYXJ0OmksZXZhbHVhdG9yOnR9O2ZvcihsZXQgbj0wO248by5sZW5ndGg7bisrKXtsZXQgaT1vW25dOyJzdHJpbmciPT10eXBlb2YgaSYmKGk9c2UoaSksaS53aWxkY2FyZD0hMCksdC5fYWRkVGVtcGxhdGVQcm9wZXJ0eUVmZmVjdChlLGkucm9vdFByb3BlcnR5LHtmbjpKdCxpbmZvOmEsdHJpZ2dlcjppfSl9fX1mdW5jdGlvbiBKdCh0LGUsbixpLHIsbyxhKXtsZXQgcz1hW3IuaW5kZXhdLGw9ci5iaW5kaW5nLGM9ci5wYXJ0O2lmKG8mJmMuc291cmNlJiZlLmxlbmd0aD5jLnNvdXJjZS5sZW5ndGgmJiJwcm9wZXJ0eSI9PWwua2luZCYmIWwuaXNDb21wb3VuZCYmcy5fX2lzUHJvcGVydHlFZmZlY3RzQ2xpZW50JiZzLl9fZGF0YUhhc0FjY2Vzc29yJiZzLl9fZGF0YUhhc0FjY2Vzc29yW2wudGFyZ2V0XSl7bGV0IGk9bltlXTtlPUooYy5zb3VyY2UsbC50YXJnZXQsZSkscy5fc2V0UGVuZGluZ1Byb3BlcnR5T3JQYXRoKGUsaSwhMSwhMCkmJnQuX2VucXVldWVDbGllbnQocyl9ZWxzZXtsZXQgYT1yLmV2YWx1YXRvci5fZXZhbHVhdGVCaW5kaW5nKHQsYyxlLG4saSxvKTthIT09UnQmJihmdW5jdGlvbiB1KHQsZSxuLGkscil7aWYocj0oZnVuY3Rpb24gbyh0LGUsbixpKXtpZihuLmlzQ29tcG91bmQpe2xldCByPXQuX19kYXRhQ29tcG91bmRTdG9yYWdlW24udGFyZ2V0XTtyW2kuY29tcG91bmRJbmRleF09ZSxlPXIuam9pbigiIil9cmV0dXJuImF0dHJpYnV0ZSIhPT1uLmtpbmQmJigidGV4dENvbnRlbnQiIT09bi50YXJnZXQmJigidmFsdWUiIT09bi50YXJnZXR8fCJpbnB1dCIhPT10LmxvY2FsTmFtZSYmInRleHRhcmVhIiE9PXQubG9jYWxOYW1lKXx8KGU9bnVsbD09ZT8iIjplKSksZX0pKGUscixuLGkpLHkmJihyPXkocixuLnRhcmdldCxuLmtpbmQsZSkpLCJhdHRyaWJ1dGUiPT1uLmtpbmQpdC5fdmFsdWVUb05vZGVBdHRyaWJ1dGUoZSxyLG4udGFyZ2V0KTtlbHNle2xldCBpPW4udGFyZ2V0O2UuX19pc1Byb3BlcnR5RWZmZWN0c0NsaWVudCYmZS5fX2RhdGFIYXNBY2Nlc3NvciYmZS5fX2RhdGFIYXNBY2Nlc3NvcltpXT9lW3p0LlJFQURfT05MWV0mJmVbenQuUkVBRF9PTkxZXVtpXXx8ZS5fc2V0UGVuZGluZ1Byb3BlcnR5KGkscikmJnQuX2VucXVldWVDbGllbnQoZSk6dC5fc2V0VW5tYW5hZ2VkUHJvcGVydHlUb05vZGUoZSxpLHIpfX0pKHQscyxsLGMsYSl9fWZ1bmN0aW9uIFF0KHQsZSl7aWYoZS5pc0NvbXBvdW5kKXtsZXQgbj10Ll9fZGF0YUNvbXBvdW5kU3RvcmFnZXx8KHQuX19kYXRhQ29tcG91bmRTdG9yYWdlPXt9KSxpPWUucGFydHMscj1uZXcgQXJyYXkoaS5sZW5ndGgpO2ZvcihsZXQgdD0wO3Q8aS5sZW5ndGg7dCsrKXJbdF09aVt0XS5saXRlcmFsO2xldCBvPWUudGFyZ2V0O25bb109cixlLmxpdGVyYWwmJiJwcm9wZXJ0eSI9PWUua2luZCYmKCJjbGFzc05hbWUiPT09byYmKHQ9WSh0KSksdFtvXT1lLmxpdGVyYWwpfX1mdW5jdGlvbiB0ZSh0LGUsbil7aWYobi5saXN0ZW5lckV2ZW50KXtsZXQgaT1uLnBhcnRzWzBdO3QuYWRkRXZlbnRMaXN0ZW5lcihuLmxpc3RlbmVyRXZlbnQsKGZ1bmN0aW9uKHQpeyEoZnVuY3Rpb24gcih0LGUsbixpLG8pe2xldCBhLHM9dC5kZXRhaWwsbD1zJiZzLnBhdGg7bD8oaT1KKG4saSxsKSxhPXMmJnMudmFsdWUpOmE9dC5jdXJyZW50VGFyZ2V0W25dLGE9bz8hYTphLGVbenQuUkVBRF9PTkxZXSYmZVt6dC5SRUFEX09OTFldW2ldfHwhZS5fc2V0UGVuZGluZ1Byb3BlcnR5T3JQYXRoKGksYSwhMCxCb29sZWFuKGwpKXx8cyYmcy5xdWV1ZVByb3BlcnR5fHxlLl9pbnZhbGlkYXRlUHJvcGVydGllcygpfSkodCxlLG4udGFyZ2V0LGkuc291cmNlLGkubmVnYXRlKX0pKX19ZnVuY3Rpb24gZWUodCxlLG4saSxyLG8pe2xldCBhPXttZXRob2ROYW1lOmUubWV0aG9kTmFtZSxhcmdzOmUuYXJncyxtZXRob2RJbmZvOnIsZHluYW1pY0ZuOm89ZS5zdGF0aWN8fG8mJigib2JqZWN0IiE9dHlwZW9mIG98fG9bZS5tZXRob2ROYW1lXSl9O2ZvcihsZXQgcixvPTA7bzxlLmFyZ3MubGVuZ3RoJiYocj1lLmFyZ3Nbb10pO28rKylyLmxpdGVyYWx8fHQuX2FkZFByb3BlcnR5RWZmZWN0KHIucm9vdFByb3BlcnR5LG4se2ZuOmksaW5mbzphLHRyaWdnZXI6cn0pO3JldHVybiBvJiZ0Ll9hZGRQcm9wZXJ0eUVmZmVjdChlLm1ldGhvZE5hbWUsbix7Zm46aSxpbmZvOmF9KSxhfWZ1bmN0aW9uIG5lKHQsZSxuLGkscil7bGV0IG89dC5fbWV0aG9kSG9zdHx8dCxhPW9bci5tZXRob2ROYW1lXTtpZihhKXtsZXQgaT10Ll9tYXJzaGFsQXJncyhyLmFyZ3MsZSxuKTtyZXR1cm4gaT09PVJ0P1J0OmEuYXBwbHkobyxpKX1yLmR5bmFtaWNGbnx8Y29uc29sZS53YXJuKCJtZXRob2QgYCIrci5tZXRob2ROYW1lKyJgIG5vdCBkZWZpbmVkIil9Y29uc3QgaWU9W10scmU9bmV3IFJlZ0V4cCgiKFxcW1xcW3x7eylcXHMqKD86KCEpXFxzKik/KCg/OlthLXpBLVpfJF1bXFx3LjokXFwtKl0qKVxccyooPzpcXChcXHMqKD86KD86KD86KCg/OlthLXpBLVpfJF1bXFx3LjokXFwtKl0qKXwoPzpbLStdP1swLTldKlxcLj9bMC05XSsoPzpbZUVdWy0rXT9bMC05XSspPyl8KD86KD86Jyg/OlteJ1xcXFxdfFxcXFwuKSonKXwoPzpcIig/OlteXCJcXFxcXXxcXFxcLikqXCIpKSlcXHMqKSg/OixcXHMqKD86KCg/OlthLXpBLVpfJF1bXFx3LjokXFwtKl0qKXwoPzpbLStdP1swLTldKlxcLj9bMC05XSsoPzpbZUVdWy0rXT9bMC05XSspPyl8KD86KD86Jyg/OlteJ1xcXFxdfFxcXFwuKSonKXwoPzpcIig/OlteXCJcXFxcXXxcXFxcLikqXCIpKSlcXHMqKSkqKT8pXFwpXFxzKik/KSg/Ol1dfH19KSIsImciKTtmdW5jdGlvbiBvZSh0KXtsZXQgZT0iIjtmb3IobGV0IG49MDtuPHQubGVuZ3RoO24rKyllKz10W25dLmxpdGVyYWx8fCIiO3JldHVybiBlfWZ1bmN0aW9uIGFlKHQpe2xldCBlPXQubWF0Y2goLyhbXlxzXSs/KVwoKFtcc1xTXSopXCkvKTtpZihlKXtsZXQgdD17bWV0aG9kTmFtZTplWzFdLHN0YXRpYzohMCxhcmdzOmllfTtyZXR1cm4gZVsyXS50cmltKCk/KGZ1bmN0aW9uIG4odCxlKXtyZXR1cm4gZS5hcmdzPXQubWFwKChmdW5jdGlvbih0KXtsZXQgbj1zZSh0KTtyZXR1cm4gbi5saXRlcmFsfHwoZS5zdGF0aWM9ITEpLG59KSx0aGlzKSxlfSkoZVsyXS5yZXBsYWNlKC9cXCwvZywiJmNvbW1hOyIpLnNwbGl0KCIsIiksdCk6dH1yZXR1cm4gbnVsbH1mdW5jdGlvbiBzZSh0KXtsZXQgZT10LnRyaW0oKS5yZXBsYWNlKC8mY29tbWE7L2csIiwiKS5yZXBsYWNlKC9cXCguKS9nLCIkMSIpLG49e25hbWU6ZSx2YWx1ZToiIixsaXRlcmFsOiExfSxpPWVbMF07c3dpdGNoKCItIj09PWkmJihpPWVbMV0pLGk+PSIwIiYmaTw9IjkiJiYoaT0iIyIpLGkpe2Nhc2UiJyI6Y2FzZSciJzpuLnZhbHVlPWUuc2xpY2UoMSwtMSksbi5saXRlcmFsPSEwO2JyZWFrO2Nhc2UiIyI6bi52YWx1ZT1OdW1iZXIoZSksbi5saXRlcmFsPSEwfXJldHVybiBuLmxpdGVyYWx8fChuLnJvb3RQcm9wZXJ0eT0kKGUpLG4uc3RydWN0dXJlZD1YKGUpLG4uc3RydWN0dXJlZCYmKG4ud2lsZGNhcmQ9Ii4qIj09ZS5zbGljZSgtMiksbi53aWxkY2FyZCYmKG4ubmFtZT1lLnNsaWNlKDAsLTIpKSkpLG59ZnVuY3Rpb24gbGUodCxlLG4pe2xldCBpPW50KHQsbik7cmV0dXJuIHZvaWQgMD09PWkmJihpPWVbbl0pLGl9ZnVuY3Rpb24gY2UodCxlLG4saSl7Y29uc3Qgcj17aW5kZXhTcGxpY2VzOml9O0UmJiF0Ll9vdmVycmlkZUxlZ2FjeVVuZGVmaW5lZCYmKGUuc3BsaWNlcz1yKSx0Lm5vdGlmeVBhdGgobisiLnNwbGljZXMiLHIpLHQubm90aWZ5UGF0aChuKyIubGVuZ3RoIixlLmxlbmd0aCksRSYmIXQuX292ZXJyaWRlTGVnYWN5VW5kZWZpbmVkJiYoci5pbmRleFNwbGljZXM9W10pfWZ1bmN0aW9uIHVlKHQsZSxuLGkscixvKXtjZSh0LGUsbixbe2luZGV4OmksYWRkZWRDb3VudDpyLHJlbW92ZWQ6byxvYmplY3Q6ZSx0eXBlOiJzcGxpY2UifV0pfWNvbnN0IGhlPU4oKHQ9Pntjb25zdCBlPU50KE10KHQpKTtyZXR1cm4gY2xhc3MgZXh0ZW5kcyBle2NvbnN0cnVjdG9yKCl7c3VwZXIoKSx0aGlzLl9faXNQcm9wZXJ0eUVmZmVjdHNDbGllbnQ9ITB9Z2V0IFBST1BFUlRZX0VGRkVDVF9UWVBFUygpe3JldHVybiB6dH1faW5pdGlhbGl6ZVByb3BlcnRpZXMoKXtzdXBlci5faW5pdGlhbGl6ZVByb3BlcnRpZXMoKSx0aGlzLl9yZWdpc3Rlckhvc3QoKSx0aGlzLl9fZGF0YUNsaWVudHNSZWFkeT0hMSx0aGlzLl9fZGF0YVBlbmRpbmdDbGllbnRzPW51bGwsdGhpcy5fX2RhdGFUb05vdGlmeT1udWxsLHRoaXMuX19kYXRhTGlua2VkUGF0aHM9bnVsbCx0aGlzLl9fZGF0YUhhc1BhdGhzPSExLHRoaXMuX19kYXRhQ29tcG91bmRTdG9yYWdlPXRoaXMuX19kYXRhQ29tcG91bmRTdG9yYWdlfHxudWxsLHRoaXMuX19kYXRhSG9zdD10aGlzLl9fZGF0YUhvc3R8fG51bGwsdGhpcy5fX2RhdGFUZW1wPXt9LHRoaXMuX19kYXRhQ2xpZW50c0luaXRpYWxpemVkPSExfV9yZWdpc3Rlckhvc3QoKXtpZihkZS5sZW5ndGgpe2xldCB0PWRlW2RlLmxlbmd0aC0xXTt0Ll9lbnF1ZXVlQ2xpZW50KHRoaXMpLHRoaXMuX19kYXRhSG9zdD10fX1faW5pdGlhbGl6ZVByb3RvUHJvcGVydGllcyh0KXt0aGlzLl9fZGF0YT1PYmplY3QuY3JlYXRlKHQpLHRoaXMuX19kYXRhUGVuZGluZz1PYmplY3QuY3JlYXRlKHQpLHRoaXMuX19kYXRhT2xkPXt9fV9pbml0aWFsaXplSW5zdGFuY2VQcm9wZXJ0aWVzKHQpe2xldCBlPXRoaXNbenQuUkVBRF9PTkxZXTtmb3IobGV0IG4gaW4gdCllJiZlW25dfHwodGhpcy5fX2RhdGFQZW5kaW5nPXRoaXMuX19kYXRhUGVuZGluZ3x8e30sdGhpcy5fX2RhdGFPbGQ9dGhpcy5fX2RhdGFPbGR8fHt9LHRoaXMuX19kYXRhW25dPXRoaXMuX19kYXRhUGVuZGluZ1tuXT10W25dKX1fYWRkUHJvcGVydHlFZmZlY3QodCxlLG4pe3RoaXMuX2NyZWF0ZVByb3BlcnR5QWNjZXNzb3IodCxlPT16dC5SRUFEX09OTFkpO2xldCBpPUJ0KHRoaXMsZSwhMClbdF07aXx8KGk9dGhpc1tlXVt0XT1bXSksaS5wdXNoKG4pfV9yZW1vdmVQcm9wZXJ0eUVmZmVjdCh0LGUsbil7bGV0IGk9QnQodGhpcyxlLCEwKVt0XSxyPWkuaW5kZXhPZihuKTtyPj0wJiZpLnNwbGljZShyLDEpfV9oYXNQcm9wZXJ0eUVmZmVjdCh0LGUpe2xldCBuPXRoaXNbZV07cmV0dXJuIEJvb2xlYW4obiYmblt0XSl9X2hhc1JlYWRPbmx5RWZmZWN0KHQpe3JldHVybiB0aGlzLl9oYXNQcm9wZXJ0eUVmZmVjdCh0LHp0LlJFQURfT05MWSl9X2hhc05vdGlmeUVmZmVjdCh0KXtyZXR1cm4gdGhpcy5faGFzUHJvcGVydHlFZmZlY3QodCx6dC5OT1RJRlkpfV9oYXNSZWZsZWN0RWZmZWN0KHQpe3JldHVybiB0aGlzLl9oYXNQcm9wZXJ0eUVmZmVjdCh0LHp0LlJFRkxFQ1QpfV9oYXNDb21wdXRlZEVmZmVjdCh0KXtyZXR1cm4gdGhpcy5faGFzUHJvcGVydHlFZmZlY3QodCx6dC5DT01QVVRFKX1fc2V0UGVuZGluZ1Byb3BlcnR5T3JQYXRoKHQsZSxuLGkpe2lmKGl8fCQoQXJyYXkuaXNBcnJheSh0KT90WzBdOnQpIT09dCl7aWYoIWkpe2xldCBuPW50KHRoaXMsdCk7aWYoISh0PWl0KHRoaXMsdCxlKSl8fCFzdXBlci5fc2hvdWxkUHJvcGVydHlDaGFuZ2UodCxlLG4pKXJldHVybiExfWlmKHRoaXMuX19kYXRhSGFzUGF0aHM9ITAsdGhpcy5fc2V0UGVuZGluZ1Byb3BlcnR5KHQsZSxuKSlyZXR1cm4oZnVuY3Rpb24gcih0LGUsbil7bGV0IGk9dC5fX2RhdGFMaW5rZWRQYXRocztpZihpKXtsZXQgcjtmb3IobGV0IG8gaW4gaSl7bGV0IGE9aVtvXTtaKG8sZSk/KHI9SihvLGEsZSksdC5fc2V0UGVuZGluZ1Byb3BlcnR5T3JQYXRoKHIsbiwhMCwhMCkpOlooYSxlKSYmKHI9SihhLG8sZSksdC5fc2V0UGVuZGluZ1Byb3BlcnR5T3JQYXRoKHIsbiwhMCwhMCkpfX19KSh0aGlzLHQsZSksITB9ZWxzZXtpZih0aGlzLl9fZGF0YUhhc0FjY2Vzc29yJiZ0aGlzLl9fZGF0YUhhc0FjY2Vzc29yW3RdKXJldHVybiB0aGlzLl9zZXRQZW5kaW5nUHJvcGVydHkodCxlLG4pO3RoaXNbdF09ZX1yZXR1cm4hMX1fc2V0VW5tYW5hZ2VkUHJvcGVydHlUb05vZGUodCxlLG4pe249PT10W2VdJiYib2JqZWN0IiE9dHlwZW9mIG58fCgiY2xhc3NOYW1lIj09PWUmJih0PVkodCkpLHRbZV09bil9X3NldFBlbmRpbmdQcm9wZXJ0eSh0LGUsbil7bGV0IGk9dGhpcy5fX2RhdGFIYXNQYXRocyYmWCh0KTtyZXR1cm4hIXRoaXMuX3Nob3VsZFByb3BlcnR5Q2hhbmdlKHQsZSwoaT90aGlzLl9fZGF0YVRlbXA6dGhpcy5fX2RhdGEpW3RdKSYmKHRoaXMuX19kYXRhUGVuZGluZ3x8KHRoaXMuX19kYXRhUGVuZGluZz17fSx0aGlzLl9fZGF0YU9sZD17fSksdCBpbiB0aGlzLl9fZGF0YU9sZHx8KHRoaXMuX19kYXRhT2xkW3RdPXRoaXMuX19kYXRhW3RdKSxpP3RoaXMuX19kYXRhVGVtcFt0XT1lOnRoaXMuX19kYXRhW3RdPWUsdGhpcy5fX2RhdGFQZW5kaW5nW3RdPWUsKGl8fHRoaXNbenQuTk9USUZZXSYmdGhpc1t6dC5OT1RJRlldW3RdKSYmKHRoaXMuX19kYXRhVG9Ob3RpZnk9dGhpcy5fX2RhdGFUb05vdGlmeXx8e30sdGhpcy5fX2RhdGFUb05vdGlmeVt0XT1uKSwhMCl9X3NldFByb3BlcnR5KHQsZSl7dGhpcy5fc2V0UGVuZGluZ1Byb3BlcnR5KHQsZSwhMCkmJnRoaXMuX2ludmFsaWRhdGVQcm9wZXJ0aWVzKCl9X2ludmFsaWRhdGVQcm9wZXJ0aWVzKCl7dGhpcy5fX2RhdGFSZWFkeSYmdGhpcy5fZmx1c2hQcm9wZXJ0aWVzKCl9X2VucXVldWVDbGllbnQodCl7dGhpcy5fX2RhdGFQZW5kaW5nQ2xpZW50cz10aGlzLl9fZGF0YVBlbmRpbmdDbGllbnRzfHxbXSx0IT09dGhpcyYmdGhpcy5fX2RhdGFQZW5kaW5nQ2xpZW50cy5wdXNoKHQpfV9mbHVzaENsaWVudHMoKXt0aGlzLl9fZGF0YUNsaWVudHNSZWFkeT90aGlzLl9fZW5hYmxlT3JGbHVzaENsaWVudHMoKToodGhpcy5fX2RhdGFDbGllbnRzUmVhZHk9ITAsdGhpcy5fcmVhZHlDbGllbnRzKCksdGhpcy5fX2RhdGFSZWFkeT0hMCl9X19lbmFibGVPckZsdXNoQ2xpZW50cygpe2xldCB0PXRoaXMuX19kYXRhUGVuZGluZ0NsaWVudHM7aWYodCl7dGhpcy5fX2RhdGFQZW5kaW5nQ2xpZW50cz1udWxsO2ZvcihsZXQgZT0wO2U8dC5sZW5ndGg7ZSsrKXtsZXQgbj10W2VdO24uX19kYXRhRW5hYmxlZD9uLl9fZGF0YVBlbmRpbmcmJm4uX2ZsdXNoUHJvcGVydGllcygpOm4uX2VuYWJsZVByb3BlcnRpZXMoKX19fV9yZWFkeUNsaWVudHMoKXt0aGlzLl9fZW5hYmxlT3JGbHVzaENsaWVudHMoKX1zZXRQcm9wZXJ0aWVzKHQsZSl7Zm9yKGxldCBuIGluIHQpIWUmJnRoaXNbenQuUkVBRF9PTkxZXSYmdGhpc1t6dC5SRUFEX09OTFldW25dfHx0aGlzLl9zZXRQZW5kaW5nUHJvcGVydHlPclBhdGgobix0W25dLCEwKTt0aGlzLl9pbnZhbGlkYXRlUHJvcGVydGllcygpfXJlYWR5KCl7dGhpcy5fZmx1c2hQcm9wZXJ0aWVzKCksdGhpcy5fX2RhdGFDbGllbnRzUmVhZHl8fHRoaXMuX2ZsdXNoQ2xpZW50cygpLHRoaXMuX19kYXRhUGVuZGluZyYmdGhpcy5fZmx1c2hQcm9wZXJ0aWVzKCl9X3Byb3BlcnRpZXNDaGFuZ2VkKHQsZSxuKXtsZXQgaSxyPXRoaXMuX19kYXRhSGFzUGF0aHM7dGhpcy5fX2RhdGFIYXNQYXRocz0hMSwoZnVuY3Rpb24gbyh0LGUsbixpKXtsZXQgcj10W3p0LkNPTVBVVEVdO2lmKHIpaWYoVCl7T3QrKztjb25zdCBvPShmdW5jdGlvbiBvKHQpe2xldCBlPXQuY29uc3RydWN0b3IuX19vcmRlcmVkQ29tcHV0ZWREZXBzO2lmKCFlKXtlPW5ldyBNYXA7Y29uc3Qgbj10W3p0LkNPTVBVVEVdO2xldCBpLHtjb3VudHM6cixyZWFkeTpvLHRvdGFsOmF9PShmdW5jdGlvbiBuKHQpe2NvbnN0IGU9dC5fX2NvbXB1dGVJbmZvLG49e30saT10W3p0LkNPTVBVVEVdLHI9W107bGV0IG89MDtmb3IobGV0IHQgaW4gZSl7Y29uc3QgaT1lW3RdO28rPW5bdF09aS5hcmdzLmZpbHRlcigodD0+IXQubGl0ZXJhbCkpLmxlbmd0aCsoaS5keW5hbWljRm4/MTowKX1mb3IobGV0IHQgaW4gaSllW3RdfHxyLnB1c2godCk7cmV0dXJue2NvdW50czpuLHJlYWR5OnIsdG90YWw6b319KSh0KTtmb3IoO2k9by5zaGlmdCgpOyl7ZS5zZXQoaSxlLnNpemUpO2NvbnN0IHQ9bltpXTt0JiZ0LmZvckVhY2goKHQ9Pntjb25zdCBlPXQuaW5mby5tZXRob2RJbmZvOy0tYSwwPT0tLXJbZV0mJm8ucHVzaChlKX0pKX0wIT09YSYmY29uc29sZS53YXJuKGBDb21wdXRlZCBncmFwaCBmb3IgJHt0LmxvY2FsTmFtZX0gaW5jb21wbGV0ZTsgY2lyY3VsYXI/YCksdC5jb25zdHJ1Y3Rvci5fX29yZGVyZWRDb21wdXRlZERlcHM9ZX1yZXR1cm4gZX0pKHQpLGE9W107Zm9yKGxldCB0IGluIGUpWHQodCxyLGEsbyxpKTtsZXQgcztmb3IoO3M9YS5zaGlmdCgpOykkdCh0LCIiLGUsMCxzKSYmWHQocy5tZXRob2RJbmZvLHIsYSxvLGkpO09iamVjdC5hc3NpZ24obix0Ll9fZGF0YU9sZCksT2JqZWN0LmFzc2lnbihlLHQuX19kYXRhUGVuZGluZyksdC5fX2RhdGFQZW5kaW5nPW51bGx9ZWxzZXtsZXQgbz1lO2Zvcig7SHQodCxyLG8sbixpKTspT2JqZWN0LmFzc2lnbihuLHQuX19kYXRhT2xkKSxPYmplY3QuYXNzaWduKGUsdC5fX2RhdGFQZW5kaW5nKSxvPXQuX19kYXRhUGVuZGluZyx0Ll9fZGF0YVBlbmRpbmc9bnVsbH19KSh0aGlzLGUsbixyKSxpPXRoaXMuX19kYXRhVG9Ob3RpZnksdGhpcy5fX2RhdGFUb05vdGlmeT1udWxsLHRoaXMuX3Byb3BhZ2F0ZVByb3BlcnR5Q2hhbmdlcyhlLG4sciksdGhpcy5fZmx1c2hDbGllbnRzKCksSHQodGhpcyx0aGlzW3p0LlJFRkxFQ1RdLGUsbixyKSxIdCh0aGlzLHRoaXNbenQuT0JTRVJWRV0sZSxuLHIpLGkmJihmdW5jdGlvbiBhKHQsZSxuLGkscil7bGV0IG8sYSxzPXRbenQuTk9USUZZXSxsPU90Kys7Zm9yKGxldCBhIGluIGUpZVthXSYmKHMmJkZ0KHQscyxsLGEsbixpLHIpfHxyJiZVdCh0LGEsbikpJiYobz0hMCk7byYmKGE9dC5fX2RhdGFIb3N0KSYmYS5faW52YWxpZGF0ZVByb3BlcnRpZXMmJmEuX2ludmFsaWRhdGVQcm9wZXJ0aWVzKCl9KSh0aGlzLGksZSxuLHIpLDE9PXRoaXMuX19kYXRhQ291bnRlciYmKHRoaXMuX19kYXRhVGVtcD17fSl9X3Byb3BhZ2F0ZVByb3BlcnR5Q2hhbmdlcyh0LGUsbil7dGhpc1t6dC5QUk9QQUdBVEVdJiZIdCh0aGlzLHRoaXNbenQuUFJPUEFHQVRFXSx0LGUsbiksdGhpcy5fX3RlbXBsYXRlSW5mbyYmdGhpcy5fcnVuRWZmZWN0c0ZvclRlbXBsYXRlKHRoaXMuX190ZW1wbGF0ZUluZm8sdCxlLG4pfV9ydW5FZmZlY3RzRm9yVGVtcGxhdGUodCxlLG4saSl7Y29uc3Qgcj0oZSxpKT0+e0h0KHRoaXMsdC5wcm9wZXJ0eUVmZmVjdHMsZSxuLGksdC5ub2RlTGlzdCk7Zm9yKGxldCByPXQuZmlyc3RDaGlsZDtyO3I9ci5uZXh0U2libGluZyl0aGlzLl9ydW5FZmZlY3RzRm9yVGVtcGxhdGUocixlLG4saSl9O3QucnVuRWZmZWN0cz90LnJ1bkVmZmVjdHMocixlLGkpOnIoZSxpKX1saW5rUGF0aHModCxlKXt0PXR0KHQpLGU9dHQoZSksdGhpcy5fX2RhdGFMaW5rZWRQYXRocz10aGlzLl9fZGF0YUxpbmtlZFBhdGhzfHx7fSx0aGlzLl9fZGF0YUxpbmtlZFBhdGhzW3RdPWV9dW5saW5rUGF0aHModCl7dD10dCh0KSx0aGlzLl9fZGF0YUxpbmtlZFBhdGhzJiZkZWxldGUgdGhpcy5fX2RhdGFMaW5rZWRQYXRoc1t0XX1ub3RpZnlTcGxpY2VzKHQsZSl7bGV0IG49e3BhdGg6IiJ9O2NlKHRoaXMsbnQodGhpcyx0LG4pLG4ucGF0aCxlKX1nZXQodCxlKXtyZXR1cm4gbnQoZXx8dGhpcyx0KX1zZXQodCxlLG4pe24/aXQobix0LGUpOnRoaXNbenQuUkVBRF9PTkxZXSYmdGhpc1t6dC5SRUFEX09OTFldW3RdfHx0aGlzLl9zZXRQZW5kaW5nUHJvcGVydHlPclBhdGgodCxlLCEwKSYmdGhpcy5faW52YWxpZGF0ZVByb3BlcnRpZXMoKX1wdXNoKHQsLi4uZSl7bGV0IG49e3BhdGg6IiJ9LGk9bnQodGhpcyx0LG4pLHI9aS5sZW5ndGgsbz1pLnB1c2goLi4uZSk7cmV0dXJuIGUubGVuZ3RoJiZ1ZSh0aGlzLGksbi5wYXRoLHIsZS5sZW5ndGgsW10pLG99cG9wKHQpe2xldCBlPXtwYXRoOiIifSxuPW50KHRoaXMsdCxlKSxpPUJvb2xlYW4obi5sZW5ndGgpLHI9bi5wb3AoKTtyZXR1cm4gaSYmdWUodGhpcyxuLGUucGF0aCxuLmxlbmd0aCwwLFtyXSkscn1zcGxpY2UodCxlLG4sLi4uaSl7bGV0IHIsbz17cGF0aDoiIn0sYT1udCh0aGlzLHQsbyk7cmV0dXJuIGU8MD9lPWEubGVuZ3RoLU1hdGguZmxvb3IoLWUpOmUmJihlPU1hdGguZmxvb3IoZSkpLHI9Mj09PWFyZ3VtZW50cy5sZW5ndGg/YS5zcGxpY2UoZSk6YS5zcGxpY2UoZSxuLC4uLmkpLChpLmxlbmd0aHx8ci5sZW5ndGgpJiZ1ZSh0aGlzLGEsby5wYXRoLGUsaS5sZW5ndGgscikscn1zaGlmdCh0KXtsZXQgZT17cGF0aDoiIn0sbj1udCh0aGlzLHQsZSksaT1Cb29sZWFuKG4ubGVuZ3RoKSxyPW4uc2hpZnQoKTtyZXR1cm4gaSYmdWUodGhpcyxuLGUucGF0aCwwLDAsW3JdKSxyfXVuc2hpZnQodCwuLi5lKXtsZXQgbj17cGF0aDoiIn0saT1udCh0aGlzLHQsbikscj1pLnVuc2hpZnQoLi4uZSk7cmV0dXJuIGUubGVuZ3RoJiZ1ZSh0aGlzLGksbi5wYXRoLDAsZS5sZW5ndGgsW10pLHJ9bm90aWZ5UGF0aCh0LGUpe2xldCBuO2lmKDE9PWFyZ3VtZW50cy5sZW5ndGgpe2xldCBpPXtwYXRoOiIifTtlPW50KHRoaXMsdCxpKSxuPWkucGF0aH1lbHNlIG49QXJyYXkuaXNBcnJheSh0KT90dCh0KTp0O3RoaXMuX3NldFBlbmRpbmdQcm9wZXJ0eU9yUGF0aChuLGUsITAsITApJiZ0aGlzLl9pbnZhbGlkYXRlUHJvcGVydGllcygpfV9jcmVhdGVSZWFkT25seVByb3BlcnR5KHQsZSl7dGhpcy5fYWRkUHJvcGVydHlFZmZlY3QodCx6dC5SRUFEX09OTFkpLGUmJih0aGlzWyJfc2V0IisoZnVuY3Rpb24gbih0KXtyZXR1cm4gdFswXS50b1VwcGVyQ2FzZSgpK3Quc3Vic3RyaW5nKDEpfSkodCldPWZ1bmN0aW9uKGUpe3RoaXMuX3NldFByb3BlcnR5KHQsZSl9KX1fY3JlYXRlUHJvcGVydHlPYnNlcnZlcih0LGUsbil7bGV0IGk9e3Byb3BlcnR5OnQsbWV0aG9kOmUsZHluYW1pY0ZuOkJvb2xlYW4obil9O3RoaXMuX2FkZFByb3BlcnR5RWZmZWN0KHQsenQuT0JTRVJWRSx7Zm46anQsaW5mbzppLHRyaWdnZXI6e25hbWU6dH19KSxuJiZ0aGlzLl9hZGRQcm9wZXJ0eUVmZmVjdChlLHp0Lk9CU0VSVkUse2ZuOmp0LGluZm86aSx0cmlnZ2VyOntuYW1lOmV9fSl9X2NyZWF0ZU1ldGhvZE9ic2VydmVyKHQsZSl7bGV0IG49YWUodCk7aWYoIW4pdGhyb3cgbmV3IEVycm9yKCJNYWxmb3JtZWQgb2JzZXJ2ZXIgZXhwcmVzc2lvbiAnIit0KyInIik7ZWUodGhpcyxuLHp0Lk9CU0VSVkUsbmUsbnVsbCxlKX1fY3JlYXRlTm90aWZ5aW5nUHJvcGVydHkodCl7dGhpcy5fYWRkUHJvcGVydHlFZmZlY3QodCx6dC5OT1RJRlkse2ZuOld0LGluZm86e2V2ZW50TmFtZTpsdCh0KSsiLWNoYW5nZWQiLHByb3BlcnR5OnR9fSl9X2NyZWF0ZVJlZmxlY3RlZFByb3BlcnR5KHQpe2xldCBlPXRoaXMuY29uc3RydWN0b3IuYXR0cmlidXRlTmFtZUZvclByb3BlcnR5KHQpOyItIj09PWVbMF0/Y29uc29sZS53YXJuKCJQcm9wZXJ0eSAiK3QrIiBjYW5ub3QgYmUgcmVmbGVjdGVkIHRvIGF0dHJpYnV0ZSAiK2UrJyBiZWNhdXNlICItIiBpcyBub3QgYSB2YWxpZCBzdGFydGluZyBhdHRyaWJ1dGUgbmFtZS4gVXNlIGEgbG93ZXJjYXNlIGZpcnN0IGxldHRlciBmb3IgdGhlIHByb3BlcnR5IGluc3RlYWQuJyk6dGhpcy5fYWRkUHJvcGVydHlFZmZlY3QodCx6dC5SRUZMRUNULHtmbjpxdCxpbmZvOnthdHRyTmFtZTplfX0pfV9jcmVhdGVDb21wdXRlZFByb3BlcnR5KHQsZSxuKXtsZXQgaT1hZShlKTtpZighaSl0aHJvdyBuZXcgRXJyb3IoIk1hbGZvcm1lZCBjb21wdXRlZCBleHByZXNzaW9uICciK2UrIiciKTtjb25zdCByPWVlKHRoaXMsaSx6dC5DT01QVVRFLCR0LHQsbik7QnQodGhpcywiX19jb21wdXRlSW5mbyIpW3RdPXJ9X21hcnNoYWxBcmdzKHQsZSxuKXtjb25zdCBpPXRoaXMuX19kYXRhLHI9W107Zm9yKGxldCBvPTAsYT10Lmxlbmd0aDtvPGE7bysrKXtsZXR7bmFtZTphLHN0cnVjdHVyZWQ6cyx3aWxkY2FyZDpsLHZhbHVlOmMsbGl0ZXJhbDp1fT10W29dO2lmKCF1KWlmKGwpe2NvbnN0IHQ9WihhLGUpLHI9bGUoaSxuLHQ/ZTphKTtjPXtwYXRoOnQ/ZTphLHZhbHVlOnIsYmFzZTp0P250KGksYSk6cn19ZWxzZSBjPXM/bGUoaSxuLGEpOmlbYV07aWYoRSYmIXRoaXMuX292ZXJyaWRlTGVnYWN5VW5kZWZpbmVkJiZ2b2lkIDA9PT1jJiZ0Lmxlbmd0aD4xKXJldHVybiBSdDtyW29dPWN9cmV0dXJuIHJ9c3RhdGljIGFkZFByb3BlcnR5RWZmZWN0KHQsZSxuKXt0aGlzLnByb3RvdHlwZS5fYWRkUHJvcGVydHlFZmZlY3QodCxlLG4pfXN0YXRpYyBjcmVhdGVQcm9wZXJ0eU9ic2VydmVyKHQsZSxuKXt0aGlzLnByb3RvdHlwZS5fY3JlYXRlUHJvcGVydHlPYnNlcnZlcih0LGUsbil9c3RhdGljIGNyZWF0ZU1ldGhvZE9ic2VydmVyKHQsZSl7dGhpcy5wcm90b3R5cGUuX2NyZWF0ZU1ldGhvZE9ic2VydmVyKHQsZSl9c3RhdGljIGNyZWF0ZU5vdGlmeWluZ1Byb3BlcnR5KHQpe3RoaXMucHJvdG90eXBlLl9jcmVhdGVOb3RpZnlpbmdQcm9wZXJ0eSh0KX1zdGF0aWMgY3JlYXRlUmVhZE9ubHlQcm9wZXJ0eSh0LGUpe3RoaXMucHJvdG90eXBlLl9jcmVhdGVSZWFkT25seVByb3BlcnR5KHQsZSl9c3RhdGljIGNyZWF0ZVJlZmxlY3RlZFByb3BlcnR5KHQpe3RoaXMucHJvdG90eXBlLl9jcmVhdGVSZWZsZWN0ZWRQcm9wZXJ0eSh0KX1zdGF0aWMgY3JlYXRlQ29tcHV0ZWRQcm9wZXJ0eSh0LGUsbil7dGhpcy5wcm90b3R5cGUuX2NyZWF0ZUNvbXB1dGVkUHJvcGVydHkodCxlLG4pfXN0YXRpYyBiaW5kVGVtcGxhdGUodCl7cmV0dXJuIHRoaXMucHJvdG90eXBlLl9iaW5kVGVtcGxhdGUodCl9X2JpbmRUZW1wbGF0ZSh0LGUpe2xldCBuPXRoaXMuY29uc3RydWN0b3IuX3BhcnNlVGVtcGxhdGUodCksaT10aGlzLl9fcHJlQm91bmRUZW1wbGF0ZUluZm89PW47aWYoIWkpZm9yKGxldCB0IGluIG4ucHJvcGVydHlFZmZlY3RzKXRoaXMuX2NyZWF0ZVByb3BlcnR5QWNjZXNzb3IodCk7aWYoZSlpZihuPU9iamVjdC5jcmVhdGUobiksbi53YXNQcmVCb3VuZD1pLHRoaXMuX190ZW1wbGF0ZUluZm8pe2NvbnN0IGU9dC5fcGFyZW50VGVtcGxhdGVJbmZvfHx0aGlzLl9fdGVtcGxhdGVJbmZvLGk9ZS5sYXN0Q2hpbGQ7bi5wYXJlbnQ9ZSxlLmxhc3RDaGlsZD1uLG4ucHJldmlvdXNTaWJsaW5nPWksaT9pLm5leHRTaWJsaW5nPW46ZS5maXJzdENoaWxkPW59ZWxzZSB0aGlzLl9fdGVtcGxhdGVJbmZvPW47ZWxzZSB0aGlzLl9fcHJlQm91bmRUZW1wbGF0ZUluZm89bjtyZXR1cm4gbn1zdGF0aWMgX2FkZFRlbXBsYXRlUHJvcGVydHlFZmZlY3QodCxlLG4peyh0Lmhvc3RQcm9wcz10Lmhvc3RQcm9wc3x8e30pW2VdPSEwO2xldCBpPXQucHJvcGVydHlFZmZlY3RzPXQucHJvcGVydHlFZmZlY3RzfHx7fTsoaVtlXT1pW2VdfHxbXSkucHVzaChuKX1fc3RhbXBUZW1wbGF0ZSh0LGUpe2U9ZXx8dGhpcy5fYmluZFRlbXBsYXRlKHQsITApLGRlLnB1c2godGhpcyk7bGV0IG49c3VwZXIuX3N0YW1wVGVtcGxhdGUodCxlKTtpZihkZS5wb3AoKSxlLm5vZGVMaXN0PW4ubm9kZUxpc3QsIWUud2FzUHJlQm91bmQpe2xldCB0PWUuY2hpbGROb2Rlcz1bXTtmb3IobGV0IGU9bi5maXJzdENoaWxkO2U7ZT1lLm5leHRTaWJsaW5nKXQucHVzaChlKX1yZXR1cm4gbi50ZW1wbGF0ZUluZm89ZSwoZnVuY3Rpb24gaSh0LGUpe2xldHtub2RlTGlzdDpuLG5vZGVJbmZvTGlzdDppfT1lO2lmKGkubGVuZ3RoKWZvcihsZXQgZT0wO2U8aS5sZW5ndGg7ZSsrKXtsZXQgcj1uW2VdLG89aVtlXS5iaW5kaW5ncztpZihvKWZvcihsZXQgZT0wO2U8by5sZW5ndGg7ZSsrKXtsZXQgbj1vW2VdO1F0KHIsbiksdGUocix0LG4pfXIuX19kYXRhSG9zdD10fX0pKHRoaXMsZSksdGhpcy5fX2RhdGFDbGllbnRzUmVhZHkmJih0aGlzLl9ydW5FZmZlY3RzRm9yVGVtcGxhdGUoZSx0aGlzLl9fZGF0YSxudWxsLCExKSx0aGlzLl9mbHVzaENsaWVudHMoKSksbn1fcmVtb3ZlQm91bmREb20odCl7Y29uc3QgZT10LnRlbXBsYXRlSW5mbyx7cHJldmlvdXNTaWJsaW5nOm4sbmV4dFNpYmxpbmc6aSxwYXJlbnQ6cn09ZTtuP24ubmV4dFNpYmxpbmc9aTpyJiYoci5maXJzdENoaWxkPWkpLGk/aS5wcmV2aW91c1NpYmxpbmc9bjpyJiYoci5sYXN0Q2hpbGQ9biksZS5uZXh0U2libGluZz1lLnByZXZpb3VzU2libGluZz1udWxsO2xldCBvPWUuY2hpbGROb2Rlcztmb3IobGV0IHQ9MDt0PG8ubGVuZ3RoO3QrKyl7bGV0IGU9b1t0XTtZKFkoZSkucGFyZW50Tm9kZSkucmVtb3ZlQ2hpbGQoZSl9fXN0YXRpYyBfcGFyc2VUZW1wbGF0ZU5vZGUodCxuLGkpe2xldCByPWUuX3BhcnNlVGVtcGxhdGVOb2RlLmNhbGwodGhpcyx0LG4saSk7aWYodC5ub2RlVHlwZT09PU5vZGUuVEVYVF9OT0RFKXtsZXQgZT10aGlzLl9wYXJzZUJpbmRpbmdzKHQudGV4dENvbnRlbnQsbik7ZSYmKHQudGV4dENvbnRlbnQ9b2UoZSl8fCIgIixLdCh0aGlzLG4saSwidGV4dCIsInRleHRDb250ZW50IixlKSxyPSEwKX1yZXR1cm4gcn1zdGF0aWMgX3BhcnNlVGVtcGxhdGVOb2RlQXR0cmlidXRlKHQsbixpLHIsbyl7bGV0IGE9dGhpcy5fcGFyc2VCaW5kaW5ncyhvLG4pO2lmKGEpe2xldCBlPXIsbz0icHJvcGVydHkiO0R0LnRlc3Qocik/bz0iYXR0cmlidXRlIjoiJCI9PXJbci5sZW5ndGgtMV0mJihyPXIuc2xpY2UoMCwtMSksbz0iYXR0cmlidXRlIik7bGV0IHM9b2UoYSk7cmV0dXJuIHMmJiJhdHRyaWJ1dGUiPT1vJiYoImNsYXNzIj09ciYmdC5oYXNBdHRyaWJ1dGUoImNsYXNzIikmJihzKz0iICIrdC5nZXRBdHRyaWJ1dGUocikpLHQuc2V0QXR0cmlidXRlKHIscykpLCJhdHRyaWJ1dGUiPT1vJiYiZGlzYWJsZS11cGdyYWRlJCI9PWUmJnQuc2V0QXR0cmlidXRlKHIsIiIpLCJpbnB1dCI9PT10LmxvY2FsTmFtZSYmInZhbHVlIj09PWUmJnQuc2V0QXR0cmlidXRlKGUsIiIpLHQucmVtb3ZlQXR0cmlidXRlKGUpLCJwcm9wZXJ0eSI9PT1vJiYocj1zdChyKSksS3QodGhpcyxuLGksbyxyLGEscyksITB9cmV0dXJuIGUuX3BhcnNlVGVtcGxhdGVOb2RlQXR0cmlidXRlLmNhbGwodGhpcyx0LG4saSxyLG8pfXN0YXRpYyBfcGFyc2VUZW1wbGF0ZU5lc3RlZFRlbXBsYXRlKHQsbixpKXtsZXQgcj1lLl9wYXJzZVRlbXBsYXRlTmVzdGVkVGVtcGxhdGUuY2FsbCh0aGlzLHQsbixpKTtjb25zdCBvPXQucGFyZW50Tm9kZSxhPWkudGVtcGxhdGVJbmZvLHM9ImRvbS1pZiI9PT1vLmxvY2FsTmFtZTtBJiYoc3x8ImRvbS1yZXBlYXQiPT09by5sb2NhbE5hbWUpJiYoby5yZW1vdmVDaGlsZCh0KSwoaT1pLnBhcmVudEluZm8pLnRlbXBsYXRlSW5mbz1hLGkubm90ZWQ9ITAscj0hMSk7bGV0IGw9YS5ob3N0UHJvcHM7aWYoQyYmcylsJiYobi5ob3N0UHJvcHM9T2JqZWN0LmFzc2lnbihuLmhvc3RQcm9wc3x8e30sbCksQXx8KGkucGFyZW50SW5mby5ub3RlZD0hMCkpO2Vsc2V7bGV0IHQ9InsiO2ZvcihsZXQgZSBpbiBsKUt0KHRoaXMsbixpLCJwcm9wZXJ0eSIsIl9ob3N0XyIrZSxbe21vZGU6dCxzb3VyY2U6ZSxkZXBlbmRlbmNpZXM6W2VdLGhvc3RQcm9wOiEwfV0pfXJldHVybiByfXN0YXRpYyBfcGFyc2VCaW5kaW5ncyh0LGUpe2xldCBuLGk9W10scj0wO2Zvcig7bnVsbCE9PShuPXJlLmV4ZWModCkpOyl7bi5pbmRleD5yJiZpLnB1c2goe2xpdGVyYWw6dC5zbGljZShyLG4uaW5kZXgpfSk7bGV0IG89blsxXVswXSxhPUJvb2xlYW4oblsyXSkscz1uWzNdLnRyaW0oKSxsPSExLGM9IiIsdT0tMTsieyI9PW8mJih1PXMuaW5kZXhPZigiOjoiKSk+MCYmKGM9cy5zdWJzdHJpbmcodSsyKSxzPXMuc3Vic3RyaW5nKDAsdSksbD0hMCk7bGV0IGg9YWUocyksZD1bXTtpZihoKXtsZXR7YXJnczp0LG1ldGhvZE5hbWU6bn09aDtmb3IobGV0IGU9MDtlPHQubGVuZ3RoO2UrKyl7bGV0IG49dFtlXTtuLmxpdGVyYWx8fGQucHVzaChuKX1sZXQgaT1lLmR5bmFtaWNGbnM7KGkmJmlbbl18fGguc3RhdGljKSYmKGQucHVzaChuKSxoLmR5bmFtaWNGbj0hMCl9ZWxzZSBkLnB1c2gocyk7aS5wdXNoKHtzb3VyY2U6cyxtb2RlOm8sbmVnYXRlOmEsY3VzdG9tRXZlbnQ6bCxzaWduYXR1cmU6aCxkZXBlbmRlbmNpZXM6ZCxldmVudDpjfSkscj1yZS5sYXN0SW5kZXh9aWYociYmcjx0Lmxlbmd0aCl7bGV0IGU9dC5zdWJzdHJpbmcocik7ZSYmaS5wdXNoKHtsaXRlcmFsOmV9KX1yZXR1cm4gaS5sZW5ndGg/aTpudWxsfXN0YXRpYyBfZXZhbHVhdGVCaW5kaW5nKHQsZSxuLGkscixvKXtsZXQgYTtyZXR1cm4gYT1lLnNpZ25hdHVyZT9uZSh0LG4saSwwLGUuc2lnbmF0dXJlKTpuIT1lLnNvdXJjZT9udCh0LGUuc291cmNlKTpvJiZYKG4pP250KHQsbik6dC5fX2RhdGFbbl0sZS5uZWdhdGUmJihhPSFhKSxhfX19KSksZGU9W10scGU9TigodD0+e2NvbnN0IGU9eHQodCk7ZnVuY3Rpb24gbih0KXtjb25zdCBlPU9iamVjdC5nZXRQcm90b3R5cGVPZih0KTtyZXR1cm4gZS5wcm90b3R5cGUgaW5zdGFuY2VvZiByP2U6bnVsbH1mdW5jdGlvbiBpKHQpe2lmKCF0Lmhhc093blByb3BlcnR5KEpTQ29tcGlsZXJfcmVuYW1lUHJvcGVydHkoIl9fb3duUHJvcGVydGllcyIsdCkpKXtsZXQgZT1udWxsO2lmKHQuaGFzT3duUHJvcGVydHkoSlNDb21waWxlcl9yZW5hbWVQcm9wZXJ0eSgicHJvcGVydGllcyIsdCkpKXtjb25zdCBuPXQucHJvcGVydGllcztuJiYoZT0oCi8qKgogICAgQGxpY2Vuc2UKICAgIENvcHlyaWdodCAoYykgMjAxNyBUaGUgUG9seW1lciBQcm9qZWN0IEF1dGhvcnMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgICBUaGlzIGNvZGUgbWF5IG9ubHkgYmUgdXNlZCB1bmRlciB0aGUgQlNEIHN0eWxlIGxpY2Vuc2UgZm91bmQgYXQgaHR0cDovL3BvbHltZXIuZ2l0aHViLmlvL0xJQ0VOU0UudHh0CiAgICBUaGUgY29tcGxldGUgc2V0IG9mIGF1dGhvcnMgbWF5IGJlIGZvdW5kIGF0IGh0dHA6Ly9wb2x5bWVyLmdpdGh1Yi5pby9BVVRIT1JTLnR4dAogICAgVGhlIGNvbXBsZXRlIHNldCBvZiBjb250cmlidXRvcnMgbWF5IGJlIGZvdW5kIGF0IGh0dHA6Ly9wb2x5bWVyLmdpdGh1Yi5pby9DT05UUklCVVRPUlMudHh0CiAgICBDb2RlIGRpc3RyaWJ1dGVkIGJ5IEdvb2dsZSBhcyBwYXJ0IG9mIHRoZSBwb2x5bWVyIHByb2plY3QgaXMgYWxzbwogICAgc3ViamVjdCB0byBhbiBhZGRpdGlvbmFsIElQIHJpZ2h0cyBncmFudCBmb3VuZCBhdCBodHRwOi8vcG9seW1lci5naXRodWIuaW8vUEFURU5UUy50eHQKICAgICovCmZ1bmN0aW9uIGUodCl7Y29uc3QgZT17fTtmb3IobGV0IG4gaW4gdCl7Y29uc3QgaT10W25dO2Vbbl09ImZ1bmN0aW9uIj09dHlwZW9mIGk/e3R5cGU6aX06aX1yZXR1cm4gZX0pKG4pKX10Ll9fb3duUHJvcGVydGllcz1lfXJldHVybiB0Ll9fb3duUHJvcGVydGllc31jbGFzcyByIGV4dGVuZHMgZXtzdGF0aWMgZ2V0IG9ic2VydmVkQXR0cmlidXRlcygpe2lmKCF0aGlzLmhhc093blByb3BlcnR5KEpTQ29tcGlsZXJfcmVuYW1lUHJvcGVydHkoIl9fb2JzZXJ2ZWRBdHRyaWJ1dGVzIix0aGlzKSkpe2NvbnN0IHQ9dGhpcy5fcHJvcGVydGllczt0aGlzLl9fb2JzZXJ2ZWRBdHRyaWJ1dGVzPXQ/T2JqZWN0LmtleXModCkubWFwKCh0PT50aGlzLnByb3RvdHlwZS5fYWRkUHJvcGVydHlUb0F0dHJpYnV0ZU1hcCh0KSkpOltdfXJldHVybiB0aGlzLl9fb2JzZXJ2ZWRBdHRyaWJ1dGVzfXN0YXRpYyBmaW5hbGl6ZSgpe2lmKCF0aGlzLmhhc093blByb3BlcnR5KEpTQ29tcGlsZXJfcmVuYW1lUHJvcGVydHkoIl9fZmluYWxpemVkIix0aGlzKSkpe2NvbnN0IHQ9bih0aGlzKTt0JiZ0LmZpbmFsaXplKCksdGhpcy5fX2ZpbmFsaXplZD0hMCx0aGlzLl9maW5hbGl6ZUNsYXNzKCl9fXN0YXRpYyBfZmluYWxpemVDbGFzcygpe2NvbnN0IHQ9aSh0aGlzKTt0JiZ0aGlzLmNyZWF0ZVByb3BlcnRpZXModCl9c3RhdGljIGdldCBfcHJvcGVydGllcygpe2lmKCF0aGlzLmhhc093blByb3BlcnR5KEpTQ29tcGlsZXJfcmVuYW1lUHJvcGVydHkoIl9fcHJvcGVydGllcyIsdGhpcykpKXtjb25zdCB0PW4odGhpcyk7dGhpcy5fX3Byb3BlcnRpZXM9T2JqZWN0LmFzc2lnbih7fSx0JiZ0Ll9wcm9wZXJ0aWVzLGkodGhpcykpfXJldHVybiB0aGlzLl9fcHJvcGVydGllc31zdGF0aWMgdHlwZUZvclByb3BlcnR5KHQpe2NvbnN0IGU9dGhpcy5fcHJvcGVydGllc1t0XTtyZXR1cm4gZSYmZS50eXBlfV9pbml0aWFsaXplUHJvcGVydGllcygpe3RoaXMuY29uc3RydWN0b3IuZmluYWxpemUoKSxzdXBlci5faW5pdGlhbGl6ZVByb3BlcnRpZXMoKX1jb25uZWN0ZWRDYWxsYmFjaygpe3N1cGVyLmNvbm5lY3RlZENhbGxiYWNrJiZzdXBlci5jb25uZWN0ZWRDYWxsYmFjaygpLHRoaXMuX2VuYWJsZVByb3BlcnRpZXMoKX1kaXNjb25uZWN0ZWRDYWxsYmFjaygpe3N1cGVyLmRpc2Nvbm5lY3RlZENhbGxiYWNrJiZzdXBlci5kaXNjb25uZWN0ZWRDYWxsYmFjaygpfX1yZXR1cm4gcn0pKSxmZT13aW5kb3cuU2hhZHlDU1MmJndpbmRvdy5TaGFkeUNTUy5jc3NCdWlsZCxtZT1OKCh0PT57Y29uc3QgZT1wZShoZSh0KSk7ZnVuY3Rpb24gbih0LGUsbixpKXtuLmNvbXB1dGVkJiYobi5yZWFkT25seT0hMCksbi5jb21wdXRlZCYmKHQuX2hhc1JlYWRPbmx5RWZmZWN0KGUpP2NvbnNvbGUud2FybihgQ2Fubm90IHJlZGVmaW5lIGNvbXB1dGVkIHByb3BlcnR5ICcke2V9Jy5gKTp0Ll9jcmVhdGVDb21wdXRlZFByb3BlcnR5KGUsbi5jb21wdXRlZCxpKSksbi5yZWFkT25seSYmIXQuX2hhc1JlYWRPbmx5RWZmZWN0KGUpP3QuX2NyZWF0ZVJlYWRPbmx5UHJvcGVydHkoZSwhbi5jb21wdXRlZCk6ITE9PT1uLnJlYWRPbmx5JiZ0Ll9oYXNSZWFkT25seUVmZmVjdChlKSYmY29uc29sZS53YXJuKGBDYW5ub3QgbWFrZSByZWFkT25seSBwcm9wZXJ0eSAnJHtlfScgbm9uLXJlYWRPbmx5LmApLG4ucmVmbGVjdFRvQXR0cmlidXRlJiYhdC5faGFzUmVmbGVjdEVmZmVjdChlKT90Ll9jcmVhdGVSZWZsZWN0ZWRQcm9wZXJ0eShlKTohMT09PW4ucmVmbGVjdFRvQXR0cmlidXRlJiZ0Ll9oYXNSZWZsZWN0RWZmZWN0KGUpJiZjb25zb2xlLndhcm4oYENhbm5vdCBtYWtlIHJlZmxlY3RlZCBwcm9wZXJ0eSAnJHtlfScgbm9uLXJlZmxlY3RlZC5gKSxuLm5vdGlmeSYmIXQuX2hhc05vdGlmeUVmZmVjdChlKT90Ll9jcmVhdGVOb3RpZnlpbmdQcm9wZXJ0eShlKTohMT09PW4ubm90aWZ5JiZ0Ll9oYXNOb3RpZnlFZmZlY3QoZSkmJmNvbnNvbGUud2FybihgQ2Fubm90IG1ha2Ugbm90aWZ5IHByb3BlcnR5ICcke2V9JyBub24tbm90aWZ5LmApLG4ub2JzZXJ2ZXImJnQuX2NyZWF0ZVByb3BlcnR5T2JzZXJ2ZXIoZSxuLm9ic2VydmVyLGlbbi5vYnNlcnZlcl0pLHQuX2FkZFByb3BlcnR5VG9BdHRyaWJ1dGVNYXAoZSl9cmV0dXJuIGNsYXNzIGV4dGVuZHMgZXtzdGF0aWMgZ2V0IHBvbHltZXJFbGVtZW50VmVyc2lvbigpe3JldHVybiIzLjQuMSJ9c3RhdGljIF9maW5hbGl6ZUNsYXNzKCl7ZS5fZmluYWxpemVDbGFzcy5jYWxsKHRoaXMpO2NvbnN0IHQ9KGZ1bmN0aW9uIG4odCl7cmV0dXJuIHQuaGFzT3duUHJvcGVydHkoSlNDb21waWxlcl9yZW5hbWVQcm9wZXJ0eSgiX19vd25PYnNlcnZlcnMiLHQpKXx8KHQuX19vd25PYnNlcnZlcnM9dC5oYXNPd25Qcm9wZXJ0eShKU0NvbXBpbGVyX3JlbmFtZVByb3BlcnR5KCJvYnNlcnZlcnMiLHQpKT90Lm9ic2VydmVyczpudWxsKSx0Ll9fb3duT2JzZXJ2ZXJzfSkodGhpcyk7dCYmdGhpcy5jcmVhdGVPYnNlcnZlcnModCx0aGlzLl9wcm9wZXJ0aWVzKSx0aGlzLl9wcmVwYXJlVGVtcGxhdGUoKX1zdGF0aWMgX3ByZXBhcmVUZW1wbGF0ZSgpe2xldCB0PXRoaXMudGVtcGxhdGU7dCYmKCJzdHJpbmciPT10eXBlb2YgdD8oY29uc29sZS5lcnJvcigidGVtcGxhdGUgZ2V0dGVyIG11c3QgcmV0dXJuIEhUTUxUZW1wbGF0ZUVsZW1lbnQiKSx0PW51bGwpOnd8fCh0PXQuY2xvbmVOb2RlKCEwKSkpLHRoaXMucHJvdG90eXBlLl90ZW1wbGF0ZT10fXN0YXRpYyBjcmVhdGVQcm9wZXJ0aWVzKHQpe2ZvcihsZXQgZSBpbiB0KW4odGhpcy5wcm90b3R5cGUsZSx0W2VdLHQpfXN0YXRpYyBjcmVhdGVPYnNlcnZlcnModCxlKXtjb25zdCBuPXRoaXMucHJvdG90eXBlO2ZvcihsZXQgaT0wO2k8dC5sZW5ndGg7aSsrKW4uX2NyZWF0ZU1ldGhvZE9ic2VydmVyKHRbaV0sZSl9c3RhdGljIGdldCB0ZW1wbGF0ZSgpe2lmKCF0aGlzLmhhc093blByb3BlcnR5KEpTQ29tcGlsZXJfcmVuYW1lUHJvcGVydHkoIl90ZW1wbGF0ZSIsdGhpcykpKXtjb25zdCB0PXRoaXMucHJvdG90eXBlLmhhc093blByb3BlcnR5KEpTQ29tcGlsZXJfcmVuYW1lUHJvcGVydHkoIl90ZW1wbGF0ZSIsdGhpcy5wcm90b3R5cGUpKT90aGlzLnByb3RvdHlwZS5fdGVtcGxhdGU6dm9pZCAwO3RoaXMuX3RlbXBsYXRlPXZvaWQgMCE9PXQ/dDp0aGlzLmhhc093blByb3BlcnR5KEpTQ29tcGlsZXJfcmVuYW1lUHJvcGVydHkoImlzIix0aGlzKSkmJihmdW5jdGlvbiB0KGUpe2xldCBuPW51bGw7aWYoZSYmKCFifHx4KSYmKG49Qi5pbXBvcnQoZSwidGVtcGxhdGUiKSxiJiYhbikpdGhyb3cgbmV3IEVycm9yKGBzdHJpY3RUZW1wbGF0ZVBvbGljeTogZXhwZWN0aW5nIGRvbS1tb2R1bGUgb3IgbnVsbCB0ZW1wbGF0ZSBmb3IgJHtlfWApO3JldHVybiBufSkodGhpcy5pcyl8fE9iamVjdC5nZXRQcm90b3R5cGVPZih0aGlzLnByb3RvdHlwZSkuY29uc3RydWN0b3IudGVtcGxhdGV9cmV0dXJuIHRoaXMuX3RlbXBsYXRlfXN0YXRpYyBzZXQgdGVtcGxhdGUodCl7dGhpcy5fdGVtcGxhdGU9dH1zdGF0aWMgZ2V0IGltcG9ydFBhdGgoKXtpZighdGhpcy5oYXNPd25Qcm9wZXJ0eShKU0NvbXBpbGVyX3JlbmFtZVByb3BlcnR5KCJfaW1wb3J0UGF0aCIsdGhpcykpKXtjb25zdCB0PXRoaXMuaW1wb3J0TWV0YTtpZih0KXRoaXMuX2ltcG9ydFBhdGg9Zih0LnVybCk7ZWxzZXtjb25zdCB0PUIuaW1wb3J0KHRoaXMuaXMpO3RoaXMuX2ltcG9ydFBhdGg9dCYmdC5hc3NldHBhdGh8fE9iamVjdC5nZXRQcm90b3R5cGVPZih0aGlzLnByb3RvdHlwZSkuY29uc3RydWN0b3IuaW1wb3J0UGF0aH19cmV0dXJuIHRoaXMuX2ltcG9ydFBhdGh9Y29uc3RydWN0b3IoKXtzdXBlcigpfV9pbml0aWFsaXplUHJvcGVydGllcygpe3RoaXMuY29uc3RydWN0b3IuZmluYWxpemUoKSx0aGlzLmNvbnN0cnVjdG9yLl9maW5hbGl6ZVRlbXBsYXRlKHRoaXMubG9jYWxOYW1lKSxzdXBlci5faW5pdGlhbGl6ZVByb3BlcnRpZXMoKSx0aGlzLnJvb3RQYXRoPV8sdGhpcy5pbXBvcnRQYXRoPXRoaXMuY29uc3RydWN0b3IuaW1wb3J0UGF0aDtsZXQgdD0oZnVuY3Rpb24gZSh0KXtpZighdC5oYXNPd25Qcm9wZXJ0eShKU0NvbXBpbGVyX3JlbmFtZVByb3BlcnR5KCJfX3Byb3BlcnR5RGVmYXVsdHMiLHQpKSl7dC5fX3Byb3BlcnR5RGVmYXVsdHM9bnVsbDtsZXQgZT10Ll9wcm9wZXJ0aWVzO2ZvcihsZXQgbiBpbiBlKXtsZXQgaT1lW25dOyJ2YWx1ZSJpbiBpJiYodC5fX3Byb3BlcnR5RGVmYXVsdHM9dC5fX3Byb3BlcnR5RGVmYXVsdHN8fHt9LHQuX19wcm9wZXJ0eURlZmF1bHRzW25dPWkpfX1yZXR1cm4gdC5fX3Byb3BlcnR5RGVmYXVsdHN9KSh0aGlzLmNvbnN0cnVjdG9yKTtpZih0KWZvcihsZXQgZSBpbiB0KXtsZXQgbj10W2VdO2lmKHRoaXMuX2NhbkFwcGx5UHJvcGVydHlEZWZhdWx0KGUpKXtsZXQgdD0iZnVuY3Rpb24iPT10eXBlb2Ygbi52YWx1ZT9uLnZhbHVlLmNhbGwodGhpcyk6bi52YWx1ZTt0aGlzLl9oYXNBY2Nlc3NvcihlKT90aGlzLl9zZXRQZW5kaW5nUHJvcGVydHkoZSx0LCEwKTp0aGlzW2VdPXR9fX1fY2FuQXBwbHlQcm9wZXJ0eURlZmF1bHQodCl7cmV0dXJuIXRoaXMuaGFzT3duUHJvcGVydHkodCl9c3RhdGljIF9wcm9jZXNzU3R5bGVUZXh0KHQsZSl7cmV0dXJuIHAodCxlKX1zdGF0aWMgX2ZpbmFsaXplVGVtcGxhdGUodCl7Y29uc3QgZT10aGlzLnByb3RvdHlwZS5fdGVtcGxhdGU7aWYoZSYmIWUuX19wb2x5bWVyRmluYWxpemVkKXtlLl9fcG9seW1lckZpbmFsaXplZD0hMDtjb25zdCBuPXRoaXMuaW1wb3J0UGF0aDsoZnVuY3Rpb24gbih0LGUsaSxyKXtpZighZmUpe2NvbnN0IG49ZS5jb250ZW50LnF1ZXJ5U2VsZWN0b3JBbGwoInN0eWxlIiksbz1HKGUpLGE9KGZ1bmN0aW9uIG8odCl7bGV0IGU9Rih0KTtyZXR1cm4gZT9XKGUpOltdfSkoaSkscz1lLmNvbnRlbnQuZmlyc3RFbGVtZW50Q2hpbGQ7Zm9yKGxldCBuPTA7bjxhLmxlbmd0aDtuKyspe2xldCBpPWFbbl07aS50ZXh0Q29udGVudD10Ll9wcm9jZXNzU3R5bGVUZXh0KGkudGV4dENvbnRlbnQsciksZS5jb250ZW50Lmluc2VydEJlZm9yZShpLHMpfWxldCBsPTA7Zm9yKGxldCBlPTA7ZTxvLmxlbmd0aDtlKyspe2xldCBpPW9bZV0sYT1uW2xdO2EhPT1pPyhpPWkuY2xvbmVOb2RlKCEwKSxhLnBhcmVudE5vZGUuaW5zZXJ0QmVmb3JlKGksYSkpOmwrKyxpLnRleHRDb250ZW50PXQuX3Byb2Nlc3NTdHlsZVRleHQoaS50ZXh0Q29udGVudCxyKX19aWYod2luZG93LlNoYWR5Q1NTJiZ3aW5kb3cuU2hhZHlDU1MucHJlcGFyZVRlbXBsYXRlKGUsaSksUCYmZmUmJmcpe2NvbnN0IG49ZS5jb250ZW50LnF1ZXJ5U2VsZWN0b3JBbGwoInN0eWxlIik7aWYobil7bGV0IGU9IiI7QXJyYXkuZnJvbShuKS5mb3JFYWNoKCh0PT57ZSs9dC50ZXh0Q29udGVudCx0LnBhcmVudE5vZGUucmVtb3ZlQ2hpbGQodCl9KSksdC5fc3R5bGVTaGVldD1uZXcgQ1NTU3R5bGVTaGVldCx0Ll9zdHlsZVNoZWV0LnJlcGxhY2VTeW5jKGUpfX19KSh0aGlzLGUsdCxuP2Qobik6IiIpLHRoaXMucHJvdG90eXBlLl9iaW5kVGVtcGxhdGUoZSl9fWNvbm5lY3RlZENhbGxiYWNrKCl7d2luZG93LlNoYWR5Q1NTJiZ0aGlzLl90ZW1wbGF0ZSYmd2luZG93LlNoYWR5Q1NTLnN0eWxlRWxlbWVudCh0aGlzKSxzdXBlci5jb25uZWN0ZWRDYWxsYmFjaygpfXJlYWR5KCl7dGhpcy5fdGVtcGxhdGUmJih0aGlzLnJvb3Q9dGhpcy5fc3RhbXBUZW1wbGF0ZSh0aGlzLl90ZW1wbGF0ZSksdGhpcy4kPXRoaXMucm9vdC4kKSxzdXBlci5yZWFkeSgpfV9yZWFkeUNsaWVudHMoKXt0aGlzLl90ZW1wbGF0ZSYmKHRoaXMucm9vdD10aGlzLl9hdHRhY2hEb20odGhpcy5yb290KSksc3VwZXIuX3JlYWR5Q2xpZW50cygpfV9hdHRhY2hEb20odCl7Y29uc3QgZT1ZKHRoaXMpO2lmKGUuYXR0YWNoU2hhZG93KXJldHVybiB0PyhlLnNoYWRvd1Jvb3R8fChlLmF0dGFjaFNoYWRvdyh7bW9kZToib3BlbiIsc2hhZHlVcGdyYWRlRnJhZ21lbnQ6dH0pLGUuc2hhZG93Um9vdC5hcHBlbmRDaGlsZCh0KSx0aGlzLmNvbnN0cnVjdG9yLl9zdHlsZVNoZWV0JiYoZS5zaGFkb3dSb290LmFkb3B0ZWRTdHlsZVNoZWV0cz1bdGhpcy5jb25zdHJ1Y3Rvci5fc3R5bGVTaGVldF0pKSxNJiZ3aW5kb3cuU2hhZHlET00mJndpbmRvdy5TaGFkeURPTS5mbHVzaEluaXRpYWwoZS5zaGFkb3dSb290KSxlLnNoYWRvd1Jvb3QpOm51bGw7dGhyb3cgbmV3IEVycm9yKCJTaGFkb3dET00gbm90IGF2YWlsYWJsZS4gUG9seW1lckVsZW1lbnQgY2FuIGNyZWF0ZSBkb20gYXMgY2hpbGRyZW4gaW5zdGVhZCBvZiBpbiBTaGFkb3dET00gYnkgc2V0dGluZyBgdGhpcy5yb290ID0gdGhpcztgIGJlZm9yZSBgcmVhZHlgLiIpfXVwZGF0ZVN0eWxlcyh0KXt3aW5kb3cuU2hhZHlDU1MmJndpbmRvdy5TaGFkeUNTUy5zdHlsZVN1YnRyZWUodGhpcyx0KX1yZXNvbHZlVXJsKHQsZSl7cmV0dXJuIWUmJnRoaXMuaW1wb3J0UGF0aCYmKGU9ZCh0aGlzLmltcG9ydFBhdGgpKSxkKHQsZSl9c3RhdGljIF9wYXJzZVRlbXBsYXRlQ29udGVudCh0LG4saSl7cmV0dXJuIG4uZHluYW1pY0Zucz1uLmR5bmFtaWNGbnN8fHRoaXMuX3Byb3BlcnRpZXMsZS5fcGFyc2VUZW1wbGF0ZUNvbnRlbnQuY2FsbCh0aGlzLHQsbixpKX1zdGF0aWMgX2FkZFRlbXBsYXRlUHJvcGVydHlFZmZlY3QodCxuLGkpe3JldHVybiFTfHxuIGluIHRoaXMuX3Byb3BlcnRpZXN8fGkuaW5mby5wYXJ0LnNpZ25hdHVyZSYmaS5pbmZvLnBhcnQuc2lnbmF0dXJlLnN0YXRpY3x8aS5pbmZvLnBhcnQuaG9zdFByb3B8fHQubmVzdGVkVGVtcGxhdGV8fGNvbnNvbGUud2FybihgUHJvcGVydHkgJyR7bn0nIHVzZWQgaW4gdGVtcGxhdGUgYnV0IG5vdCBkZWNsYXJlZCBpbiAncHJvcGVydGllcyc7IGF0dHJpYnV0ZSB3aWxsIG5vdCBiZSBvYnNlcnZlZC5gKSxlLl9hZGRUZW1wbGF0ZVByb3BlcnR5RWZmZWN0LmNhbGwodGhpcyx0LG4saSl9fX0pKTsKLyoqCiAgICBAbGljZW5zZQogICAgQ29weXJpZ2h0IChjKSAyMDE3IFRoZSBQb2x5bWVyIFByb2plY3QgQXV0aG9ycy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAgIFRoaXMgY29kZSBtYXkgb25seSBiZSB1c2VkIHVuZGVyIHRoZSBCU0Qgc3R5bGUgbGljZW5zZSBmb3VuZCBhdCBodHRwOi8vcG9seW1lci5naXRodWIuaW8vTElDRU5TRS50eHQKICAgIFRoZSBjb21wbGV0ZSBzZXQgb2YgYXV0aG9ycyBtYXkgYmUgZm91bmQgYXQgaHR0cDovL3BvbHltZXIuZ2l0aHViLmlvL0FVVEhPUlMudHh0CiAgICBUaGUgY29tcGxldGUgc2V0IG9mIGNvbnRyaWJ1dG9ycyBtYXkgYmUgZm91bmQgYXQgaHR0cDovL3BvbHltZXIuZ2l0aHViLmlvL0NPTlRSSUJVVE9SUy50eHQKICAgIENvZGUgZGlzdHJpYnV0ZWQgYnkgR29vZ2xlIGFzIHBhcnQgb2YgdGhlIHBvbHltZXIgcHJvamVjdCBpcyBhbHNvCiAgICBzdWJqZWN0IHRvIGFuIGFkZGl0aW9uYWwgSVAgcmlnaHRzIGdyYW50IGZvdW5kIGF0IGh0dHA6Ly9wb2x5bWVyLmdpdGh1Yi5pby9QQVRFTlRTLnR4dAogICAgKi8KY2xhc3MgZ2V7Y29uc3RydWN0b3IodCl7dGhpcy52YWx1ZT10LnRvU3RyaW5nKCl9dG9TdHJpbmcoKXtyZXR1cm4gdGhpcy52YWx1ZX19Y29uc3QgX2U9ZnVuY3Rpb24gdChlLC4uLm4pe2NvbnN0IGk9ZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgidGVtcGxhdGUiKTtyZXR1cm4gaS5pbm5lckhUTUw9bi5yZWR1Y2UoKCh0LG4saSk9PnQrKGZ1bmN0aW9uIHIodCl7aWYodCBpbnN0YW5jZW9mIEhUTUxUZW1wbGF0ZUVsZW1lbnQpcmV0dXJuIHQuaW5uZXJIVE1MO2lmKHQgaW5zdGFuY2VvZiBnZSlyZXR1cm4oZnVuY3Rpb24gZSh0KXtpZih0IGluc3RhbmNlb2YgZ2UpcmV0dXJuIHQudmFsdWU7dGhyb3cgbmV3IEVycm9yKGBub24tbGl0ZXJhbCB2YWx1ZSBwYXNzZWQgdG8gUG9seW1lcidzIGh0bWxMaXRlcmFsIGZ1bmN0aW9uOiAke3R9YCl9KSh0KTt0aHJvdyBuZXcgRXJyb3IoYG5vbi10ZW1wbGF0ZSB2YWx1ZSBwYXNzZWQgdG8gUG9seW1lcidzIGh0bWwgZnVuY3Rpb246ICR7dH1gKX0pKG4pK2VbaSsxXSksZVswXSksaX0seWU9bWUoSFRNTEVsZW1lbnQpOwovKioKICAgIEBsaWNlbnNlCiAgICBDb3B5cmlnaHQgKGMpIDIwMTcgVGhlIFBvbHltZXIgUHJvamVjdCBBdXRob3JzLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICAgVGhpcyBjb2RlIG1heSBvbmx5IGJlIHVzZWQgdW5kZXIgdGhlIEJTRCBzdHlsZSBsaWNlbnNlIGZvdW5kIGF0IGh0dHA6Ly9wb2x5bWVyLmdpdGh1Yi5pby9MSUNFTlNFLnR4dAogICAgVGhlIGNvbXBsZXRlIHNldCBvZiBhdXRob3JzIG1heSBiZSBmb3VuZCBhdCBodHRwOi8vcG9seW1lci5naXRodWIuaW8vQVVUSE9SUy50eHQKICAgIFRoZSBjb21wbGV0ZSBzZXQgb2YgY29udHJpYnV0b3JzIG1heSBiZSBmb3VuZCBhdCBodHRwOi8vcG9seW1lci5naXRodWIuaW8vQ09OVFJJQlVUT1JTLnR4dAogICAgQ29kZSBkaXN0cmlidXRlZCBieSBHb29nbGUgYXMgcGFydCBvZiB0aGUgcG9seW1lciBwcm9qZWN0IGlzIGFsc28KICAgIHN1YmplY3QgdG8gYW4gYWRkaXRpb25hbCBJUCByaWdodHMgZ3JhbnQgZm91bmQgYXQgaHR0cDovL3BvbHltZXIuZ2l0aHViLmlvL1BBVEVOVFMudHh0CiAgICAqL3ZhciB2ZT0idW5kZWZpbmVkIiE9dHlwZW9mIGdsb2JhbFRoaXM/Z2xvYmFsVGhpczoidW5kZWZpbmVkIiE9dHlwZW9mIHdpbmRvdz93aW5kb3c6InVuZGVmaW5lZCIhPXR5cGVvZiBnbG9iYWw/Z2xvYmFsOiJ1bmRlZmluZWQiIT10eXBlb2Ygc2VsZj9zZWxmOnt9O2Z1bmN0aW9uIGJlKHQsZSxuKXtyZXR1cm4gdChuPXtwYXRoOmUsZXhwb3J0czp7fSxyZXF1aXJlOmZ1bmN0aW9uKHQsZSl7cmV0dXJuKGZ1bmN0aW9uIG4oKXt0aHJvdyBuZXcgRXJyb3IoIkR5bmFtaWMgcmVxdWlyZXMgYXJlIG5vdCBjdXJyZW50bHkgc3VwcG9ydGVkIGJ5IEByb2xsdXAvcGx1Z2luLWNvbW1vbmpzIil9KSgpfX0sbi5leHBvcnRzKSxuLmV4cG9ydHN9ZnVuY3Rpb24geGUodCl7aWYodC5fX2VzTW9kdWxlKXJldHVybiB0O3ZhciBlPU9iamVjdC5kZWZpbmVQcm9wZXJ0eSh7fSwiX19lc01vZHVsZSIse3ZhbHVlOiEwfSk7cmV0dXJuIE9iamVjdC5rZXlzKHQpLmZvckVhY2goKGZ1bmN0aW9uKG4pe3ZhciBpPU9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IodCxuKTtPYmplY3QuZGVmaW5lUHJvcGVydHkoZSxuLGkuZ2V0P2k6e2VudW1lcmFibGU6ITAsZ2V0OmZ1bmN0aW9uKCl7cmV0dXJuIHRbbl19fSl9KSksZX12YXIgd2U9YmUoKGZ1bmN0aW9uKHQsZSl7KGZ1bmN0aW9uKCl7dmFyIG4saT0iRXhwZWN0ZWQgYSBmdW5jdGlvbiIscj0iX19sb2Rhc2hfaGFzaF91bmRlZmluZWRfXyIsbz0iX19sb2Rhc2hfcGxhY2Vob2xkZXJfXyIsYT0zMixzPTEyOCxsPTEvMCxjPTkwMDcxOTkyNTQ3NDA5OTEsdT1OYU4saD00Mjk0OTY3Mjk1LGQ9W1siYXJ5IixzXSxbImJpbmQiLDFdLFsiYmluZEtleSIsMl0sWyJjdXJyeSIsOF0sWyJjdXJyeVJpZ2h0IiwxNl0sWyJmbGlwIiw1MTJdLFsicGFydGlhbCIsYV0sWyJwYXJ0aWFsUmlnaHQiLDY0XSxbInJlYXJnIiwyNTZdXSxwPSJbb2JqZWN0IEFyZ3VtZW50c10iLGY9IltvYmplY3QgQXJyYXldIixtPSJbb2JqZWN0IEJvb2xlYW5dIixnPSJbb2JqZWN0IERhdGVdIixfPSJbb2JqZWN0IEVycm9yXSIseT0iW29iamVjdCBGdW5jdGlvbl0iLHY9IltvYmplY3QgR2VuZXJhdG9yRnVuY3Rpb25dIixiPSJbb2JqZWN0IE1hcF0iLHg9IltvYmplY3QgTnVtYmVyXSIsdz0iW29iamVjdCBPYmplY3RdIixTPSJbb2JqZWN0IFByb21pc2VdIixNPSJbb2JqZWN0IFJlZ0V4cF0iLEU9IltvYmplY3QgU2V0XSIsVD0iW29iamVjdCBTdHJpbmddIixBPSJbb2JqZWN0IFN5bWJvbF0iLEM9IltvYmplY3QgV2Vha01hcF0iLGs9IltvYmplY3QgQXJyYXlCdWZmZXJdIixMPSJbb2JqZWN0IERhdGFWaWV3XSIsUD0iW29iamVjdCBGbG9hdDMyQXJyYXldIixJPSJbb2JqZWN0IEZsb2F0NjRBcnJheV0iLE49IltvYmplY3QgSW50OEFycmF5XSIsTz0iW29iamVjdCBJbnQxNkFycmF5XSIsUj0iW29iamVjdCBJbnQzMkFycmF5XSIsej0iW29iamVjdCBVaW50OEFycmF5XSIsRD0iW29iamVjdCBVaW50OENsYW1wZWRBcnJheV0iLEI9IltvYmplY3QgVWludDE2QXJyYXldIixIPSJbb2JqZWN0IFVpbnQzMkFycmF5XSIsRj0vXGJfX3AgXCs9ICcnOy9nLFY9L1xiKF9fcCBcKz0pICcnIFwrL2csaj0vKF9fZVwoLio/XCl8XGJfX3RcKSkgXCtcbicnOy9nLFU9LyYoPzphbXB8bHR8Z3R8cXVvdHwjMzkpOy9nLEc9L1smPD4iJ10vZyxXPVJlZ0V4cChVLnNvdXJjZSkscT1SZWdFeHAoRy5zb3VyY2UpLFk9LzwlLShbXHNcU10rPyklPi9nLFg9LzwlKFtcc1xTXSs/KSU+L2csJD0vPCU9KFtcc1xTXSs/KSU+L2csSz0vXC58XFsoPzpbXltcXV0qfChbIiddKSg/Oig/IVwxKVteXFxdfFxcLikqP1wxKVxdLyxaPS9eXHcqJC8sSj0vW14uW1xdXSt8XFsoPzooLT9cZCsoPzpcLlxkKyk/KXwoWyInXSkoKD86KD8hXDIpW15cXF18XFwuKSo/KVwyKVxdfCg/PSg/OlwufFxbXF0pKD86XC58XFtcXXwkKSkvZyxRPS9bXFxeJC4qKz8oKVtcXXt9fF0vZyx0dD1SZWdFeHAoUS5zb3VyY2UpLGV0PS9eXHMrLyxudD0vXHMvLGl0PS9ceyg/OlxuXC9cKiBcW3dyYXBwZWQgd2l0aCAuK1xdIFwqXC8pP1xuPy8scnQ9L1x7XG5cL1wqIFxbd3JhcHBlZCB3aXRoICguKylcXSBcKi8sb3Q9Lyw/ICYgLyxhdD0vW15ceDAwLVx4MmZceDNhLVx4NDBceDViLVx4NjBceDdiLVx4N2ZdKy9nLHN0PS9bKCk9LHt9XFtcXVwvXHNdLyxsdD0vXFwoXFwpPy9nLGN0PS9cJFx7KFteXFx9XSooPzpcXC5bXlxcfV0qKSopXH0vZyx1dD0vXHcqJC8saHQ9L15bLStdMHhbMC05YS1mXSskL2ksZHQ9L14wYlswMV0rJC9pLHB0PS9eXFtvYmplY3QgLis/Q29uc3RydWN0b3JcXSQvLGZ0PS9eMG9bMC03XSskL2ksbXQ9L14oPzowfFsxLTldXGQqKSQvLGd0PS9bXHhjMC1ceGQ2XHhkOC1ceGY2XHhmOC1ceGZmXHUwMTAwLVx1MDE3Zl0vZyxfdD0vKCReKS8seXQ9L1snXG5cclx1MjAyOFx1MjAyOVxcXS9nLHZ0PSJcXHUwMzAwLVxcdTAzNmZcXHVmZTIwLVxcdWZlMmZcXHUyMGQwLVxcdTIwZmYiLGJ0PSJhLXpcXHhkZi1cXHhmNlxceGY4LVxceGZmIix4dD0iQS1aXFx4YzAtXFx4ZDZcXHhkOC1cXHhkZSIsd3Q9IlxceGFjXFx4YjFcXHhkN1xceGY3XFx4MDAtXFx4MmZcXHgzYS1cXHg0MFxceDViLVxceDYwXFx4N2ItXFx4YmZcXHUyMDAwLVxcdTIwNmYgXFx0XFx4MGJcXGZcXHhhMFxcdWZlZmZcXG5cXHJcXHUyMDI4XFx1MjAyOVxcdTE2ODBcXHUxODBlXFx1MjAwMFxcdTIwMDFcXHUyMDAyXFx1MjAwM1xcdTIwMDRcXHUyMDA1XFx1MjAwNlxcdTIwMDdcXHUyMDA4XFx1MjAwOVxcdTIwMGFcXHUyMDJmXFx1MjA1ZlxcdTMwMDAiLFN0PSJbIit3dCsiXSIsTXQ9IlsiK3Z0KyJdIixFdD0iXFxkKyIsVHQ9IlsiK2J0KyJdIixBdD0iW15cXHVkODAwLVxcdWRmZmYiK3d0K0V0KyJcXHUyNzAwLVxcdTI3YmYiK2J0K3h0KyJdIixDdD0iXFx1ZDgzY1tcXHVkZmZiLVxcdWRmZmZdIixrdD0iW15cXHVkODAwLVxcdWRmZmZdIixMdD0iKD86XFx1ZDgzY1tcXHVkZGU2LVxcdWRkZmZdKXsyfSIsUHQ9IltcXHVkODAwLVxcdWRiZmZdW1xcdWRjMDAtXFx1ZGZmZl0iLEl0PSJbIit4dCsiXSIsTnQ9Iig/OiIrVHQrInwiK0F0KyIpIixPdD0iKD86IitJdCsifCIrQXQrIikiLFJ0PSIoPzpbJ+KAmV0oPzpkfGxsfG18cmV8c3x0fHZlKSk/Iix6dD0iKD86WyfigJldKD86RHxMTHxNfFJFfFN8VHxWRSkpPyIsRHQ9Iig/OiIrTXQrInwiK0N0KyIpPyIsQnQ9IltcXHVmZTBlXFx1ZmUwZl0/IixIdD1CdCtEdCsiKD86XFx1MjAwZCg/OiIrW2t0LEx0LFB0XS5qb2luKCJ8IikrIikiK0J0K0R0KyIpKiIsRnQ9Iig/OiIrWyJbXFx1MjcwMC1cXHUyN2JmXSIsTHQsUHRdLmpvaW4oInwiKSsiKSIrSHQsVnQ9Iig/OiIrW2t0K010KyI/IixNdCxMdCxQdCwiW1xcdWQ4MDAtXFx1ZGZmZl0iXS5qb2luKCJ8IikrIikiLGp0PVJlZ0V4cCgiWyfigJldIiwiZyIpLFV0PVJlZ0V4cChNdCwiZyIpLEd0PVJlZ0V4cChDdCsiKD89IitDdCsiKXwiK1Z0K0h0LCJnIiksV3Q9UmVnRXhwKFtJdCsiPyIrVHQrIisiK1J0KyIoPz0iK1tTdCxJdCwiJCJdLmpvaW4oInwiKSsiKSIsT3QrIisiK3p0KyIoPz0iK1tTdCxJdCtOdCwiJCJdLmpvaW4oInwiKSsiKSIsSXQrIj8iK050KyIrIitSdCxJdCsiKyIrenQsIlxcZCooPzoxU1R8Mk5EfDNSRHwoPyFbMTIzXSlcXGRUSCkoPz1cXGJ8W2Etel9dKSIsIlxcZCooPzoxc3R8Mm5kfDNyZHwoPyFbMTIzXSlcXGR0aCkoPz1cXGJ8W0EtWl9dKSIsRXQsRnRdLmpvaW4oInwiKSwiZyIpLHF0PVJlZ0V4cCgiW1xcdTIwMGRcXHVkODAwLVxcdWRmZmYiK3Z0KyJcXHVmZTBlXFx1ZmUwZl0iKSxZdD0vW2Etel1bQS1aXXxbQS1aXXsyfVthLXpdfFswLTldW2EtekEtWl18W2EtekEtWl1bMC05XXxbXmEtekEtWjAtOSBdLyxYdD1bIkFycmF5IiwiQnVmZmVyIiwiRGF0YVZpZXciLCJEYXRlIiwiRXJyb3IiLCJGbG9hdDMyQXJyYXkiLCJGbG9hdDY0QXJyYXkiLCJGdW5jdGlvbiIsIkludDhBcnJheSIsIkludDE2QXJyYXkiLCJJbnQzMkFycmF5IiwiTWFwIiwiTWF0aCIsIk9iamVjdCIsIlByb21pc2UiLCJSZWdFeHAiLCJTZXQiLCJTdHJpbmciLCJTeW1ib2wiLCJUeXBlRXJyb3IiLCJVaW50OEFycmF5IiwiVWludDhDbGFtcGVkQXJyYXkiLCJVaW50MTZBcnJheSIsIlVpbnQzMkFycmF5IiwiV2Vha01hcCIsIl8iLCJjbGVhclRpbWVvdXQiLCJpc0Zpbml0ZSIsInBhcnNlSW50Iiwic2V0VGltZW91dCJdLCR0PS0xLEt0PXt9O0t0W1BdPUt0W0ldPUt0W05dPUt0W09dPUt0W1JdPUt0W3pdPUt0W0RdPUt0W0JdPUt0W0hdPSEwLEt0W3BdPUt0W2ZdPUt0W2tdPUt0W21dPUt0W0xdPUt0W2ddPUt0W19dPUt0W3ldPUt0W2JdPUt0W3hdPUt0W3ddPUt0W01dPUt0W0VdPUt0W1RdPUt0W0NdPSExO3ZhciBadD17fTtadFtwXT1adFtmXT1adFtrXT1adFtMXT1adFttXT1adFtnXT1adFtQXT1adFtJXT1adFtOXT1adFtPXT1adFtSXT1adFtiXT1adFt4XT1adFt3XT1adFtNXT1adFtFXT1adFtUXT1adFtBXT1adFt6XT1adFtEXT1adFtCXT1adFtIXT0hMCxadFtfXT1adFt5XT1adFtDXT0hMTt2YXIgSnQ9eyJcXCI6IlxcIiwiJyI6IiciLCJcbiI6Im4iLCJcciI6InIiLCJcdTIwMjgiOiJ1MjAyOCIsIlx1MjAyOSI6InUyMDI5In0sUXQ9cGFyc2VGbG9hdCx0ZT1wYXJzZUludCxlZT0ib2JqZWN0Ij09dHlwZW9mIHZlJiZ2ZSYmdmUuT2JqZWN0PT09T2JqZWN0JiZ2ZSxuZT0ib2JqZWN0Ij09dHlwZW9mIHNlbGYmJnNlbGYmJnNlbGYuT2JqZWN0PT09T2JqZWN0JiZzZWxmLGllPWVlfHxuZXx8RnVuY3Rpb24oInJldHVybiB0aGlzIikoKSxyZT1lJiYhZS5ub2RlVHlwZSYmZSxvZT1yZSYmdCYmIXQubm9kZVR5cGUmJnQsYWU9b2UmJm9lLmV4cG9ydHM9PT1yZSxzZT1hZSYmZWUucHJvY2VzcyxsZT0oZnVuY3Rpb24oKXt0cnl7cmV0dXJuIG9lJiZvZS5yZXF1aXJlJiZvZS5yZXF1aXJlKCJ1dGlsIikudHlwZXN8fHNlJiZzZS5iaW5kaW5nJiZzZS5iaW5kaW5nKCJ1dGlsIil9Y2F0Y2godCl7fX0pKCksY2U9bGUmJmxlLmlzQXJyYXlCdWZmZXIsdWU9bGUmJmxlLmlzRGF0ZSxoZT1sZSYmbGUuaXNNYXAsZGU9bGUmJmxlLmlzUmVnRXhwLHBlPWxlJiZsZS5pc1NldCxmZT1sZSYmbGUuaXNUeXBlZEFycmF5O2Z1bmN0aW9uIG1lKHQsZSxuKXtzd2l0Y2gobi5sZW5ndGgpe2Nhc2UgMDpyZXR1cm4gdC5jYWxsKGUpO2Nhc2UgMTpyZXR1cm4gdC5jYWxsKGUsblswXSk7Y2FzZSAyOnJldHVybiB0LmNhbGwoZSxuWzBdLG5bMV0pO2Nhc2UgMzpyZXR1cm4gdC5jYWxsKGUsblswXSxuWzFdLG5bMl0pfXJldHVybiB0LmFwcGx5KGUsbil9ZnVuY3Rpb24gZ2UodCxlLG4saSl7Zm9yKHZhciByPS0xLG89bnVsbD09dD8wOnQubGVuZ3RoOysrcjxvOyl7dmFyIGE9dFtyXTtlKGksYSxuKGEpLHQpfXJldHVybiBpfWZ1bmN0aW9uIF9lKHQsZSl7Zm9yKHZhciBuPS0xLGk9bnVsbD09dD8wOnQubGVuZ3RoOysrbjxpJiYhMSE9PWUodFtuXSxuLHQpOyk7cmV0dXJuIHR9ZnVuY3Rpb24geWUodCxlKXtmb3IodmFyIG49bnVsbD09dD8wOnQubGVuZ3RoO24tLSYmITEhPT1lKHRbbl0sbix0KTspO3JldHVybiB0fWZ1bmN0aW9uIGJlKHQsZSl7Zm9yKHZhciBuPS0xLGk9bnVsbD09dD8wOnQubGVuZ3RoOysrbjxpOylpZighZSh0W25dLG4sdCkpcmV0dXJuITE7cmV0dXJuITB9ZnVuY3Rpb24geGUodCxlKXtmb3IodmFyIG49LTEsaT1udWxsPT10PzA6dC5sZW5ndGgscj0wLG89W107KytuPGk7KXt2YXIgYT10W25dO2UoYSxuLHQpJiYob1tyKytdPWEpfXJldHVybiBvfWZ1bmN0aW9uIHdlKHQsZSl7cmV0dXJuIShudWxsPT10fHwhdC5sZW5ndGgpJiZJZSh0LGUsMCk+LTF9ZnVuY3Rpb24gU2UodCxlLG4pe2Zvcih2YXIgaT0tMSxyPW51bGw9PXQ/MDp0Lmxlbmd0aDsrK2k8cjspaWYobihlLHRbaV0pKXJldHVybiEwO3JldHVybiExfWZ1bmN0aW9uIE1lKHQsZSl7Zm9yKHZhciBuPS0xLGk9bnVsbD09dD8wOnQubGVuZ3RoLHI9QXJyYXkoaSk7KytuPGk7KXJbbl09ZSh0W25dLG4sdCk7cmV0dXJuIHJ9ZnVuY3Rpb24gRWUodCxlKXtmb3IodmFyIG49LTEsaT1lLmxlbmd0aCxyPXQubGVuZ3RoOysrbjxpOyl0W3Irbl09ZVtuXTtyZXR1cm4gdH1mdW5jdGlvbiBUZSh0LGUsbixpKXt2YXIgcj0tMSxvPW51bGw9PXQ/MDp0Lmxlbmd0aDtmb3IoaSYmbyYmKG49dFsrK3JdKTsrK3I8bzspbj1lKG4sdFtyXSxyLHQpO3JldHVybiBufWZ1bmN0aW9uIEFlKHQsZSxuLGkpe3ZhciByPW51bGw9PXQ/MDp0Lmxlbmd0aDtmb3IoaSYmciYmKG49dFstLXJdKTtyLS07KW49ZShuLHRbcl0scix0KTtyZXR1cm4gbn1mdW5jdGlvbiBDZSh0LGUpe2Zvcih2YXIgbj0tMSxpPW51bGw9PXQ/MDp0Lmxlbmd0aDsrK248aTspaWYoZSh0W25dLG4sdCkpcmV0dXJuITA7cmV0dXJuITF9dmFyIGtlPXplKCJsZW5ndGgiKTtmdW5jdGlvbiBMZSh0LGUsbil7dmFyIGk7cmV0dXJuIG4odCwoZnVuY3Rpb24odCxuLHIpe2lmKGUodCxuLHIpKXJldHVybiBpPW4sITF9KSksaX1mdW5jdGlvbiBQZSh0LGUsbixpKXtmb3IodmFyIHI9dC5sZW5ndGgsbz1uKyhpPzE6LTEpO2k/by0tOisrbzxyOylpZihlKHRbb10sbyx0KSlyZXR1cm4gbztyZXR1cm4tMX1mdW5jdGlvbiBJZSh0LGUsbil7cmV0dXJuIGU9PWU/KGZ1bmN0aW9uIGkodCxlLG4pe2Zvcih2YXIgaT1uLTEscj10Lmxlbmd0aDsrK2k8cjspaWYodFtpXT09PWUpcmV0dXJuIGk7cmV0dXJuLTF9KSh0LGUsbik6UGUodCxPZSxuKX1mdW5jdGlvbiBOZSh0LGUsbixpKXtmb3IodmFyIHI9bi0xLG89dC5sZW5ndGg7KytyPG87KWlmKGkodFtyXSxlKSlyZXR1cm4gcjtyZXR1cm4tMX1mdW5jdGlvbiBPZSh0KXtyZXR1cm4gdCE9dH1mdW5jdGlvbiBSZSh0LGUpe3ZhciBuPW51bGw9PXQ/MDp0Lmxlbmd0aDtyZXR1cm4gbj9IZSh0LGUpL246dX1mdW5jdGlvbiB6ZSh0KXtyZXR1cm4gZnVuY3Rpb24oZSl7cmV0dXJuIG51bGw9PWU/bjplW3RdfX1mdW5jdGlvbiBEZSh0KXtyZXR1cm4gZnVuY3Rpb24oZSl7cmV0dXJuIG51bGw9PXQ/bjp0W2VdfX1mdW5jdGlvbiBCZSh0LGUsbixpLHIpe3JldHVybiByKHQsKGZ1bmN0aW9uKHQscixvKXtuPWk/KGk9ITEsdCk6ZShuLHQscixvKX0pKSxufWZ1bmN0aW9uIEhlKHQsZSl7Zm9yKHZhciBpLHI9LTEsbz10Lmxlbmd0aDsrK3I8bzspe3ZhciBhPWUodFtyXSk7YSE9PW4mJihpPWk9PT1uP2E6aSthKX1yZXR1cm4gaX1mdW5jdGlvbiBGZSh0LGUpe2Zvcih2YXIgbj0tMSxpPUFycmF5KHQpOysrbjx0OylpW25dPWUobik7cmV0dXJuIGl9ZnVuY3Rpb24gVmUodCl7cmV0dXJuIHQ/dC5zbGljZSgwLGFuKHQpKzEpLnJlcGxhY2UoZXQsIiIpOnR9ZnVuY3Rpb24gamUodCl7cmV0dXJuIGZ1bmN0aW9uKGUpe3JldHVybiB0KGUpfX1mdW5jdGlvbiBVZSh0LGUpe3JldHVybiBNZShlLChmdW5jdGlvbihlKXtyZXR1cm4gdFtlXX0pKX1mdW5jdGlvbiBHZSh0LGUpe3JldHVybiB0LmhhcyhlKX1mdW5jdGlvbiBXZSh0LGUpe2Zvcih2YXIgbj0tMSxpPXQubGVuZ3RoOysrbjxpJiZJZShlLHRbbl0sMCk+LTE7KTtyZXR1cm4gbn1mdW5jdGlvbiBxZSh0LGUpe2Zvcih2YXIgbj10Lmxlbmd0aDtuLS0mJkllKGUsdFtuXSwwKT4tMTspO3JldHVybiBufWZ1bmN0aW9uIFllKHQsZSl7Zm9yKHZhciBuPXQubGVuZ3RoLGk9MDtuLS07KXRbbl09PT1lJiYrK2k7cmV0dXJuIGl9dmFyIFhlPURlKHsiw4AiOiJBIiwiw4EiOiJBIiwiw4IiOiJBIiwiw4MiOiJBIiwiw4QiOiJBIiwiw4UiOiJBIiwiw6AiOiJhIiwiw6EiOiJhIiwiw6IiOiJhIiwiw6MiOiJhIiwiw6QiOiJhIiwiw6UiOiJhIiwiw4ciOiJDIiwiw6ciOiJjIiwiw5AiOiJEIiwiw7AiOiJkIiwiw4giOiJFIiwiw4kiOiJFIiwiw4oiOiJFIiwiw4siOiJFIiwiw6giOiJlIiwiw6kiOiJlIiwiw6oiOiJlIiwiw6siOiJlIiwiw4wiOiJJIiwiw40iOiJJIiwiw44iOiJJIiwiw48iOiJJIiwiw6wiOiJpIiwiw60iOiJpIiwiw64iOiJpIiwiw68iOiJpIiwiw5EiOiJOIiwiw7EiOiJuIiwiw5IiOiJPIiwiw5MiOiJPIiwiw5QiOiJPIiwiw5UiOiJPIiwiw5YiOiJPIiwiw5giOiJPIiwiw7IiOiJvIiwiw7MiOiJvIiwiw7QiOiJvIiwiw7UiOiJvIiwiw7YiOiJvIiwiw7giOiJvIiwiw5kiOiJVIiwiw5oiOiJVIiwiw5siOiJVIiwiw5wiOiJVIiwiw7kiOiJ1Iiwiw7oiOiJ1Iiwiw7siOiJ1Iiwiw7wiOiJ1Iiwiw50iOiJZIiwiw70iOiJ5Iiwiw78iOiJ5Iiwiw4YiOiJBZSIsIsOmIjoiYWUiLCLDniI6IlRoIiwiw74iOiJ0aCIsIsOfIjoic3MiLCLEgCI6IkEiLCLEgiI6IkEiLCLEhCI6IkEiLCLEgSI6ImEiLCLEgyI6ImEiLCLEhSI6ImEiLCLEhiI6IkMiLCLEiCI6IkMiLCLEiiI6IkMiLCLEjCI6IkMiLCLEhyI6ImMiLCLEiSI6ImMiLCLEiyI6ImMiLCLEjSI6ImMiLCLEjiI6IkQiLCLEkCI6IkQiLCLEjyI6ImQiLCLEkSI6ImQiLCLEkiI6IkUiLCLElCI6IkUiLCLEliI6IkUiLCLEmCI6IkUiLCLEmiI6IkUiLCLEkyI6ImUiLCLElSI6ImUiLCLElyI6ImUiLCLEmSI6ImUiLCLEmyI6ImUiLCLEnCI6IkciLCLEniI6IkciLCLEoCI6IkciLCLEoiI6IkciLCLEnSI6ImciLCLEnyI6ImciLCLEoSI6ImciLCLEoyI6ImciLCLEpCI6IkgiLCLEpiI6IkgiLCLEpSI6ImgiLCLEpyI6ImgiLCLEqCI6IkkiLCLEqiI6IkkiLCLErCI6IkkiLCLEriI6IkkiLCLEsCI6IkkiLCLEqSI6ImkiLCLEqyI6ImkiLCLErSI6ImkiLCLEryI6ImkiLCLEsSI6ImkiLCLEtCI6IkoiLCLEtSI6ImoiLCLEtiI6IksiLCLEtyI6ImsiLCLEuCI6ImsiLCLEuSI6IkwiLCLEuyI6IkwiLCLEvSI6IkwiLCLEvyI6IkwiLCLFgSI6IkwiLCLEuiI6ImwiLCLEvCI6ImwiLCLEviI6ImwiLCLFgCI6ImwiLCLFgiI6ImwiLCLFgyI6Ik4iLCLFhSI6Ik4iLCLFhyI6Ik4iLCLFiiI6Ik4iLCLFhCI6Im4iLCLFhiI6Im4iLCLFiCI6Im4iLCLFiyI6Im4iLCLFjCI6Ik8iLCLFjiI6Ik8iLCLFkCI6Ik8iLCLFjSI6Im8iLCLFjyI6Im8iLCLFkSI6Im8iLCLFlCI6IlIiLCLFliI6IlIiLCLFmCI6IlIiLCLFlSI6InIiLCLFlyI6InIiLCLFmSI6InIiLCLFmiI6IlMiLCLFnCI6IlMiLCLFniI6IlMiLCLFoCI6IlMiLCLFmyI6InMiLCLFnSI6InMiLCLFnyI6InMiLCLFoSI6InMiLCLFoiI6IlQiLCLFpCI6IlQiLCLFpiI6IlQiLCLFoyI6InQiLCLFpSI6InQiLCLFpyI6InQiLCLFqCI6IlUiLCLFqiI6IlUiLCLFrCI6IlUiLCLFriI6IlUiLCLFsCI6IlUiLCLFsiI6IlUiLCLFqSI6InUiLCLFqyI6InUiLCLFrSI6InUiLCLFryI6InUiLCLFsSI6InUiLCLFsyI6InUiLCLFtCI6IlciLCLFtSI6InciLCLFtiI6IlkiLCLFtyI6InkiLCLFuCI6IlkiLCLFuSI6IloiLCLFuyI6IloiLCLFvSI6IloiLCLFuiI6InoiLCLFvCI6InoiLCLFviI6InoiLCLEsiI6IklKIiwixLMiOiJpaiIsIsWSIjoiT2UiLCLFkyI6Im9lIiwixYkiOiInbiIsIsW/IjoicyJ9KSwkZT1EZSh7IiYiOiImYW1wOyIsIjwiOiImbHQ7IiwiPiI6IiZndDsiLCciJzoiJnF1b3Q7IiwiJyI6IiYjMzk7In0pO2Z1bmN0aW9uIEtlKHQpe3JldHVybiJcXCIrSnRbdF19ZnVuY3Rpb24gWmUodCl7cmV0dXJuIHF0LnRlc3QodCl9ZnVuY3Rpb24gSmUodCl7dmFyIGU9LTEsbj1BcnJheSh0LnNpemUpO3JldHVybiB0LmZvckVhY2goKGZ1bmN0aW9uKHQsaSl7blsrK2VdPVtpLHRdfSkpLG59ZnVuY3Rpb24gUWUodCxlKXtyZXR1cm4gZnVuY3Rpb24obil7cmV0dXJuIHQoZShuKSl9fWZ1bmN0aW9uIHRuKHQsZSl7Zm9yKHZhciBuPS0xLGk9dC5sZW5ndGgscj0wLGE9W107KytuPGk7KXt2YXIgcz10W25dO3MhPT1lJiZzIT09b3x8KHRbbl09byxhW3IrK109bil9cmV0dXJuIGF9ZnVuY3Rpb24gZW4odCl7dmFyIGU9LTEsbj1BcnJheSh0LnNpemUpO3JldHVybiB0LmZvckVhY2goKGZ1bmN0aW9uKHQpe25bKytlXT10fSkpLG59ZnVuY3Rpb24gbm4odCl7dmFyIGU9LTEsbj1BcnJheSh0LnNpemUpO3JldHVybiB0LmZvckVhY2goKGZ1bmN0aW9uKHQpe25bKytlXT1bdCx0XX0pKSxufWZ1bmN0aW9uIHJuKHQpe3JldHVybiBaZSh0KT8oZnVuY3Rpb24gZSh0KXtmb3IodmFyIGU9R3QubGFzdEluZGV4PTA7R3QudGVzdCh0KTspKytlO3JldHVybiBlfSkodCk6a2UodCl9ZnVuY3Rpb24gb24odCl7cmV0dXJuIFplKHQpPyhmdW5jdGlvbiBlKHQpe3JldHVybiB0Lm1hdGNoKEd0KXx8W119KSh0KTooZnVuY3Rpb24gbih0KXtyZXR1cm4gdC5zcGxpdCgiIil9KSh0KX1mdW5jdGlvbiBhbih0KXtmb3IodmFyIGU9dC5sZW5ndGg7ZS0tJiZudC50ZXN0KHQuY2hhckF0KGUpKTspO3JldHVybiBlfXZhciBzbj1EZSh7IiZhbXA7IjoiJiIsIiZsdDsiOiI8IiwiJmd0OyI6Ij4iLCImcXVvdDsiOiciJywiJiMzOTsiOiInIn0pLGxuPShmdW5jdGlvbiB0KGUpe3ZhciBudCx2dD0oZT1udWxsPT1lP2llOmxuLmRlZmF1bHRzKGllLk9iamVjdCgpLGUsbG4ucGljayhpZSxYdCkpKS5BcnJheSxidD1lLkRhdGUseHQ9ZS5FcnJvcix3dD1lLkZ1bmN0aW9uLFN0PWUuTWF0aCxNdD1lLk9iamVjdCxFdD1lLlJlZ0V4cCxUdD1lLlN0cmluZyxBdD1lLlR5cGVFcnJvcixDdD12dC5wcm90b3R5cGUsa3Q9TXQucHJvdG90eXBlLEx0PWVbIl9fY29yZS1qc19zaGFyZWRfXyJdLFB0PXd0LnByb3RvdHlwZS50b1N0cmluZyxJdD1rdC5oYXNPd25Qcm9wZXJ0eSxOdD0wLE90PShudD0vW14uXSskLy5leGVjKEx0JiZMdC5rZXlzJiZMdC5rZXlzLklFX1BST1RPfHwiIikpPyJTeW1ib2woc3JjKV8xLiIrbnQ6IiIsUnQ9a3QudG9TdHJpbmcsenQ9UHQuY2FsbChNdCksRHQ9aWUuXyxCdD1FdCgiXiIrUHQuY2FsbChJdCkucmVwbGFjZShRLCJcXCQmIikucmVwbGFjZSgvaGFzT3duUHJvcGVydHl8KGZ1bmN0aW9uKS4qPyg/PVxcXCgpfCBmb3IgLis/KD89XFxcXSkvZywiJDEuKj8iKSsiJCIpLEh0PWFlP2UuQnVmZmVyOm4sRnQ9ZS5TeW1ib2wsVnQ9ZS5VaW50OEFycmF5LEd0PUh0P0h0LmFsbG9jVW5zYWZlOm4scXQ9UWUoTXQuZ2V0UHJvdG90eXBlT2YsTXQpLEp0PU10LmNyZWF0ZSxlZT1rdC5wcm9wZXJ0eUlzRW51bWVyYWJsZSxuZT1DdC5zcGxpY2UscmU9RnQ/RnQuaXNDb25jYXRTcHJlYWRhYmxlOm4sb2U9RnQ/RnQuaXRlcmF0b3I6bixzZT1GdD9GdC50b1N0cmluZ1RhZzpuLGxlPShmdW5jdGlvbigpe3RyeXt2YXIgdD1QbyhNdCwiZGVmaW5lUHJvcGVydHkiKTtyZXR1cm4gdCh7fSwiIix7fSksdH1jYXRjaCh0KXt9fSkoKSx2ZT1lLmNsZWFyVGltZW91dCE9PWllLmNsZWFyVGltZW91dCYmZS5jbGVhclRpbWVvdXQsa2U9YnQmJmJ0Lm5vdyE9PWllLkRhdGUubm93JiZidC5ub3csRGU9ZS5zZXRUaW1lb3V0IT09aWUuc2V0VGltZW91dCYmZS5zZXRUaW1lb3V0LGNuPVN0LmNlaWwsdW49U3QuZmxvb3IsaG49TXQuZ2V0T3duUHJvcGVydHlTeW1ib2xzLGRuPUh0P0h0LmlzQnVmZmVyOm4scG49ZS5pc0Zpbml0ZSxmbj1DdC5qb2luLG1uPVFlKE10LmtleXMsTXQpLGduPVN0Lm1heCxfbj1TdC5taW4seW49YnQubm93LHZuPWUucGFyc2VJbnQsYm49U3QucmFuZG9tLHhuPUN0LnJldmVyc2Usd249UG8oZSwiRGF0YVZpZXciKSxTbj1QbyhlLCJNYXAiKSxNbj1QbyhlLCJQcm9taXNlIiksRW49UG8oZSwiU2V0IiksVG49UG8oZSwiV2Vha01hcCIpLEFuPVBvKE10LCJjcmVhdGUiKSxDbj1UbiYmbmV3IFRuLGtuPXt9LExuPW9hKHduKSxQbj1vYShTbiksSW49b2EoTW4pLE5uPW9hKEVuKSxPbj1vYShUbiksUm49RnQ/RnQucHJvdG90eXBlOm4sem49Um4/Um4udmFsdWVPZjpuLERuPVJuP1JuLnRvU3RyaW5nOm47ZnVuY3Rpb24gQm4odCl7aWYoTXModCkmJiFocyh0KSYmISh0IGluc3RhbmNlb2Ygam4pKXtpZih0IGluc3RhbmNlb2YgVm4pcmV0dXJuIHQ7aWYoSXQuY2FsbCh0LCJfX3dyYXBwZWRfXyIpKXJldHVybiBhYSh0KX1yZXR1cm4gbmV3IFZuKHQpfXZhciBIbj0oZnVuY3Rpb24oKXtmdW5jdGlvbiB0KCl7fXJldHVybiBmdW5jdGlvbihlKXtpZighU3MoZSkpcmV0dXJue307aWYoSnQpcmV0dXJuIEp0KGUpO3QucHJvdG90eXBlPWU7dmFyIGk9bmV3IHQ7cmV0dXJuIHQucHJvdG90eXBlPW4saX19KSgpO2Z1bmN0aW9uIEZuKCl7fWZ1bmN0aW9uIFZuKHQsZSl7dGhpcy5fX3dyYXBwZWRfXz10LHRoaXMuX19hY3Rpb25zX189W10sdGhpcy5fX2NoYWluX189ISFlLHRoaXMuX19pbmRleF9fPTAsdGhpcy5fX3ZhbHVlc19fPW59ZnVuY3Rpb24gam4odCl7dGhpcy5fX3dyYXBwZWRfXz10LHRoaXMuX19hY3Rpb25zX189W10sdGhpcy5fX2Rpcl9fPTEsdGhpcy5fX2ZpbHRlcmVkX189ITEsdGhpcy5fX2l0ZXJhdGVlc19fPVtdLHRoaXMuX190YWtlQ291bnRfXz1oLHRoaXMuX192aWV3c19fPVtdfWZ1bmN0aW9uIFVuKHQpe3ZhciBlPS0xLG49bnVsbD09dD8wOnQubGVuZ3RoO2Zvcih0aGlzLmNsZWFyKCk7KytlPG47KXt2YXIgaT10W2VdO3RoaXMuc2V0KGlbMF0saVsxXSl9fWZ1bmN0aW9uIEduKHQpe3ZhciBlPS0xLG49bnVsbD09dD8wOnQubGVuZ3RoO2Zvcih0aGlzLmNsZWFyKCk7KytlPG47KXt2YXIgaT10W2VdO3RoaXMuc2V0KGlbMF0saVsxXSl9fWZ1bmN0aW9uIFduKHQpe3ZhciBlPS0xLG49bnVsbD09dD8wOnQubGVuZ3RoO2Zvcih0aGlzLmNsZWFyKCk7KytlPG47KXt2YXIgaT10W2VdO3RoaXMuc2V0KGlbMF0saVsxXSl9fWZ1bmN0aW9uIHFuKHQpe3ZhciBlPS0xLG49bnVsbD09dD8wOnQubGVuZ3RoO2Zvcih0aGlzLl9fZGF0YV9fPW5ldyBXbjsrK2U8bjspdGhpcy5hZGQodFtlXSl9ZnVuY3Rpb24gWW4odCl7dmFyIGU9dGhpcy5fX2RhdGFfXz1uZXcgR24odCk7dGhpcy5zaXplPWUuc2l6ZX1mdW5jdGlvbiBYbih0LGUpe3ZhciBuPWhzKHQpLGk9IW4mJnVzKHQpLHI9IW4mJiFpJiZncyh0KSxvPSFuJiYhaSYmIXImJlJzKHQpLGE9bnx8aXx8cnx8byxzPWE/RmUodC5sZW5ndGgsVHQpOltdLGw9cy5sZW5ndGg7Zm9yKHZhciBjIGluIHQpIWUmJiFJdC5jYWxsKHQsYyl8fGEmJigibGVuZ3RoIj09Y3x8ciYmKCJvZmZzZXQiPT1jfHwicGFyZW50Ij09Yyl8fG8mJigiYnVmZmVyIj09Y3x8ImJ5dGVMZW5ndGgiPT1jfHwiYnl0ZU9mZnNldCI9PWMpfHxCbyhjLGwpKXx8cy5wdXNoKGMpO3JldHVybiBzfWZ1bmN0aW9uICRuKHQpe3ZhciBlPXQubGVuZ3RoO3JldHVybiBlP3RbcHIoMCxlLTEpXTpufWZ1bmN0aW9uIEtuKHQsZSl7cmV0dXJuIGVhKFhyKHQpLG9pKGUsMCx0Lmxlbmd0aCkpfWZ1bmN0aW9uIFpuKHQpe3JldHVybiBlYShYcih0KSl9ZnVuY3Rpb24gSm4odCxlLGkpeyhpIT09biYmIXNzKHRbZV0saSl8fGk9PT1uJiYhKGUgaW4gdCkpJiZpaSh0LGUsaSl9ZnVuY3Rpb24gUW4odCxlLGkpe3ZhciByPXRbZV07SXQuY2FsbCh0LGUpJiZzcyhyLGkpJiYoaSE9PW58fGUgaW4gdCl8fGlpKHQsZSxpKX1mdW5jdGlvbiB0aSh0LGUpe2Zvcih2YXIgbj10Lmxlbmd0aDtuLS07KWlmKHNzKHRbbl1bMF0sZSkpcmV0dXJuIG47cmV0dXJuLTF9ZnVuY3Rpb24gZWkodCxlLG4saSl7cmV0dXJuIElpKHQsKGZ1bmN0aW9uKHQscixvKXtlKGksdCxuKHQpLG8pfSkpLGl9ZnVuY3Rpb24gbmkodCxlKXtyZXR1cm4gdCYmJHIoZSxybChlKSx0KX1mdW5jdGlvbiBpaSh0LGUsbil7Il9fcHJvdG9fXyI9PWUmJmxlP2xlKHQsZSx7Y29uZmlndXJhYmxlOiEwLGVudW1lcmFibGU6ITAsdmFsdWU6bix3cml0YWJsZTohMH0pOnRbZV09bn1mdW5jdGlvbiByaSh0LGUpe2Zvcih2YXIgaT0tMSxyPWUubGVuZ3RoLG89dnQociksYT1udWxsPT10OysraTxyOylvW2ldPWE/bjpRcyh0LGVbaV0pO3JldHVybiBvfWZ1bmN0aW9uIG9pKHQsZSxpKXtyZXR1cm4gdD09dCYmKGkhPT1uJiYodD10PD1pP3Q6aSksZSE9PW4mJih0PXQ+PWU/dDplKSksdH1mdW5jdGlvbiBhaSh0LGUsaSxyLG8sYSl7dmFyIHMsbD0xJmUsYz0yJmUsdT00JmU7aWYoaSYmKHM9bz9pKHQscixvLGEpOmkodCkpLHMhPT1uKXJldHVybiBzO2lmKCFTcyh0KSlyZXR1cm4gdDt2YXIgaD1ocyh0KTtpZihoKXtpZihzPShmdW5jdGlvbiBkKHQpe3ZhciBlPXQubGVuZ3RoLG49bmV3IHQuY29uc3RydWN0b3IoZSk7cmV0dXJuIGUmJiJzdHJpbmciPT10eXBlb2YgdFswXSYmSXQuY2FsbCh0LCJpbmRleCIpJiYobi5pbmRleD10LmluZGV4LG4uaW5wdXQ9dC5pbnB1dCksbn0pKHQpLCFsKXJldHVybiBYcih0LHMpfWVsc2V7dmFyIGY9T28odCksXz1mPT15fHxmPT12O2lmKGdzKHQpKXJldHVybiBqcih0LGwpO2lmKGY9PXd8fGY9PXB8fF8mJiFvKXtpZihzPWN8fF8/e306em8odCksIWwpcmV0dXJuIGM/KGZ1bmN0aW9uIEModCxlKXtyZXR1cm4gJHIodCxObyh0KSxlKX0pKHQsKGZ1bmN0aW9uIFModCxlKXtyZXR1cm4gdCYmJHIoZSxvbChlKSx0KX0pKHMsdCkpOihmdW5jdGlvbiBGKHQsZSl7cmV0dXJuICRyKHQsSW8odCksZSl9KSh0LG5pKHMsdCkpfWVsc2V7aWYoIVp0W2ZdKXJldHVybiBvP3Q6e307cz0oZnVuY3Rpb24gVih0LGUsbil7dmFyIGk9dC5jb25zdHJ1Y3Rvcjtzd2l0Y2goZSl7Y2FzZSBrOnJldHVybiBVcih0KTtjYXNlIG06Y2FzZSBnOnJldHVybiBuZXcgaSgrdCk7Y2FzZSBMOnJldHVybihmdW5jdGlvbiByKHQsZSl7dmFyIG49ZT9Vcih0LmJ1ZmZlcik6dC5idWZmZXI7cmV0dXJuIG5ldyB0LmNvbnN0cnVjdG9yKG4sdC5ieXRlT2Zmc2V0LHQuYnl0ZUxlbmd0aCl9KSh0LG4pO2Nhc2UgUDpjYXNlIEk6Y2FzZSBOOmNhc2UgTzpjYXNlIFI6Y2FzZSB6OmNhc2UgRDpjYXNlIEI6Y2FzZSBIOnJldHVybiBHcih0LG4pO2Nhc2UgYjpyZXR1cm4gbmV3IGk7Y2FzZSB4OmNhc2UgVDpyZXR1cm4gbmV3IGkodCk7Y2FzZSBNOnJldHVybihmdW5jdGlvbiBvKHQpe3ZhciBlPW5ldyB0LmNvbnN0cnVjdG9yKHQuc291cmNlLHV0LmV4ZWModCkpO3JldHVybiBlLmxhc3RJbmRleD10Lmxhc3RJbmRleCxlfSkodCk7Y2FzZSBFOnJldHVybiBuZXcgaTtjYXNlIEE6cmV0dXJuKGZ1bmN0aW9uIGEodCl7cmV0dXJuIHpuP010KHpuLmNhbGwodCkpOnt9fSkodCl9fSkodCxmLGwpfX1hfHwoYT1uZXcgWW4pO3ZhciBqPWEuZ2V0KHQpO2lmKGopcmV0dXJuIGo7YS5zZXQodCxzKSxQcyh0KT90LmZvckVhY2goKGZ1bmN0aW9uKG4pe3MuYWRkKGFpKG4sZSxpLG4sdCxhKSl9KSk6RXModCkmJnQuZm9yRWFjaCgoZnVuY3Rpb24obixyKXtzLnNldChyLGFpKG4sZSxpLHIsdCxhKSl9KSk7dmFyIFU9aD9uOih1P2M/TW86U286Yz9vbDpybCkodCk7cmV0dXJuIF9lKFV8fHQsKGZ1bmN0aW9uKG4scil7VSYmKG49dFtyPW5dKSxRbihzLHIsYWkobixlLGkscix0LGEpKX0pKSxzfWZ1bmN0aW9uIHNpKHQsZSxpKXt2YXIgcj1pLmxlbmd0aDtpZihudWxsPT10KXJldHVybiFyO2Zvcih0PU10KHQpO3ItLTspe3ZhciBvPWlbcl0sYT10W29dO2lmKGE9PT1uJiYhKG8gaW4gdCl8fCEoMCxlW29dKShhKSlyZXR1cm4hMX1yZXR1cm4hMH1mdW5jdGlvbiBsaSh0LGUscil7aWYoImZ1bmN0aW9uIiE9dHlwZW9mIHQpdGhyb3cgbmV3IEF0KGkpO3JldHVybiBabygoZnVuY3Rpb24oKXt0LmFwcGx5KG4scil9KSxlKX1mdW5jdGlvbiBjaSh0LGUsbixpKXt2YXIgcj0tMSxvPXdlLGE9ITAscz10Lmxlbmd0aCxsPVtdLGM9ZS5sZW5ndGg7aWYoIXMpcmV0dXJuIGw7biYmKGU9TWUoZSxqZShuKSkpLGk/KG89U2UsYT0hMSk6ZS5sZW5ndGg+PTIwMCYmKG89R2UsYT0hMSxlPW5ldyBxbihlKSk7dDpmb3IoOysrcjxzOyl7dmFyIHU9dFtyXSxoPW51bGw9PW4/dTpuKHUpO2lmKHU9aXx8MCE9PXU/dTowLGEmJmg9PWgpe2Zvcih2YXIgZD1jO2QtLTspaWYoZVtkXT09PWgpY29udGludWUgdDtsLnB1c2godSl9ZWxzZSBvKGUsaCxpKXx8bC5wdXNoKHUpfXJldHVybiBsfUJuLnRlbXBsYXRlU2V0dGluZ3M9e2VzY2FwZTpZLGV2YWx1YXRlOlgsaW50ZXJwb2xhdGU6JCx2YXJpYWJsZToiIixpbXBvcnRzOntfOkJufX0sKEJuLnByb3RvdHlwZT1Gbi5wcm90b3R5cGUpLmNvbnN0cnVjdG9yPUJuLChWbi5wcm90b3R5cGU9SG4oRm4ucHJvdG90eXBlKSkuY29uc3RydWN0b3I9Vm4sKGpuLnByb3RvdHlwZT1IbihGbi5wcm90b3R5cGUpKS5jb25zdHJ1Y3Rvcj1qbixVbi5wcm90b3R5cGUuY2xlYXI9ZnVuY3Rpb24gdWkoKXt0aGlzLl9fZGF0YV9fPUFuP0FuKG51bGwpOnt9LHRoaXMuc2l6ZT0wfSxVbi5wcm90b3R5cGUuZGVsZXRlPWZ1bmN0aW9uIGhpKHQpe3ZhciBlPXRoaXMuaGFzKHQpJiZkZWxldGUgdGhpcy5fX2RhdGFfX1t0XTtyZXR1cm4gdGhpcy5zaXplLT1lPzE6MCxlfSxVbi5wcm90b3R5cGUuZ2V0PWZ1bmN0aW9uIGRpKHQpe3ZhciBlPXRoaXMuX19kYXRhX187aWYoQW4pe3ZhciBpPWVbdF07cmV0dXJuIGk9PT1yP246aX1yZXR1cm4gSXQuY2FsbChlLHQpP2VbdF06bn0sVW4ucHJvdG90eXBlLmhhcz1mdW5jdGlvbiBwaSh0KXt2YXIgZT10aGlzLl9fZGF0YV9fO3JldHVybiBBbj9lW3RdIT09bjpJdC5jYWxsKGUsdCl9LFVuLnByb3RvdHlwZS5zZXQ9ZnVuY3Rpb24gZmkodCxlKXt2YXIgaT10aGlzLl9fZGF0YV9fO3JldHVybiB0aGlzLnNpemUrPXRoaXMuaGFzKHQpPzA6MSxpW3RdPUFuJiZlPT09bj9yOmUsdGhpc30sR24ucHJvdG90eXBlLmNsZWFyPWZ1bmN0aW9uIG1pKCl7dGhpcy5fX2RhdGFfXz1bXSx0aGlzLnNpemU9MH0sR24ucHJvdG90eXBlLmRlbGV0ZT1mdW5jdGlvbiBnaSh0KXt2YXIgZT10aGlzLl9fZGF0YV9fLG49dGkoZSx0KTtyZXR1cm4hKG48MHx8KG49PWUubGVuZ3RoLTE/ZS5wb3AoKTpuZS5jYWxsKGUsbiwxKSwtLXRoaXMuc2l6ZSwwKSl9LEduLnByb3RvdHlwZS5nZXQ9ZnVuY3Rpb24gX2kodCl7dmFyIGU9dGhpcy5fX2RhdGFfXyxpPXRpKGUsdCk7cmV0dXJuIGk8MD9uOmVbaV1bMV19LEduLnByb3RvdHlwZS5oYXM9ZnVuY3Rpb24geWkodCl7cmV0dXJuIHRpKHRoaXMuX19kYXRhX18sdCk+LTF9LEduLnByb3RvdHlwZS5zZXQ9ZnVuY3Rpb24gdmkodCxlKXt2YXIgbj10aGlzLl9fZGF0YV9fLGk9dGkobix0KTtyZXR1cm4gaTwwPygrK3RoaXMuc2l6ZSxuLnB1c2goW3QsZV0pKTpuW2ldWzFdPWUsdGhpc30sV24ucHJvdG90eXBlLmNsZWFyPWZ1bmN0aW9uIGJpKCl7dGhpcy5zaXplPTAsdGhpcy5fX2RhdGFfXz17aGFzaDpuZXcgVW4sbWFwOm5ldyhTbnx8R24pLHN0cmluZzpuZXcgVW59fSxXbi5wcm90b3R5cGUuZGVsZXRlPWZ1bmN0aW9uIHhpKHQpe3ZhciBlPWtvKHRoaXMsdCkuZGVsZXRlKHQpO3JldHVybiB0aGlzLnNpemUtPWU/MTowLGV9LFduLnByb3RvdHlwZS5nZXQ9ZnVuY3Rpb24gd2kodCl7cmV0dXJuIGtvKHRoaXMsdCkuZ2V0KHQpfSxXbi5wcm90b3R5cGUuaGFzPWZ1bmN0aW9uIFNpKHQpe3JldHVybiBrbyh0aGlzLHQpLmhhcyh0KX0sV24ucHJvdG90eXBlLnNldD1mdW5jdGlvbiBNaSh0LGUpe3ZhciBuPWtvKHRoaXMsdCksaT1uLnNpemU7cmV0dXJuIG4uc2V0KHQsZSksdGhpcy5zaXplKz1uLnNpemU9PWk/MDoxLHRoaXN9LHFuLnByb3RvdHlwZS5hZGQ9cW4ucHJvdG90eXBlLnB1c2g9ZnVuY3Rpb24gRWkodCl7cmV0dXJuIHRoaXMuX19kYXRhX18uc2V0KHQsciksdGhpc30scW4ucHJvdG90eXBlLmhhcz1mdW5jdGlvbiBUaSh0KXtyZXR1cm4gdGhpcy5fX2RhdGFfXy5oYXModCl9LFluLnByb3RvdHlwZS5jbGVhcj1mdW5jdGlvbiBBaSgpe3RoaXMuX19kYXRhX189bmV3IEduLHRoaXMuc2l6ZT0wfSxZbi5wcm90b3R5cGUuZGVsZXRlPWZ1bmN0aW9uIENpKHQpe3ZhciBlPXRoaXMuX19kYXRhX18sbj1lLmRlbGV0ZSh0KTtyZXR1cm4gdGhpcy5zaXplPWUuc2l6ZSxufSxZbi5wcm90b3R5cGUuZ2V0PWZ1bmN0aW9uIGtpKHQpe3JldHVybiB0aGlzLl9fZGF0YV9fLmdldCh0KX0sWW4ucHJvdG90eXBlLmhhcz1mdW5jdGlvbiBMaSh0KXtyZXR1cm4gdGhpcy5fX2RhdGFfXy5oYXModCl9LFluLnByb3RvdHlwZS5zZXQ9ZnVuY3Rpb24gUGkodCxlKXt2YXIgbj10aGlzLl9fZGF0YV9fO2lmKG4gaW5zdGFuY2VvZiBHbil7dmFyIGk9bi5fX2RhdGFfXztpZighU258fGkubGVuZ3RoPDE5OSlyZXR1cm4gaS5wdXNoKFt0LGVdKSx0aGlzLnNpemU9KytuLnNpemUsdGhpcztuPXRoaXMuX19kYXRhX189bmV3IFduKGkpfXJldHVybiBuLnNldCh0LGUpLHRoaXMuc2l6ZT1uLnNpemUsdGhpc307dmFyIElpPUpyKEZpKSxOaT1KcihWaSwhMCk7ZnVuY3Rpb24gT2kodCxlKXt2YXIgbj0hMDtyZXR1cm4gSWkodCwoZnVuY3Rpb24odCxpLHIpe3JldHVybiBuPSEhZSh0LGkscil9KSksbn1mdW5jdGlvbiBSaSh0LGUsaSl7Zm9yKHZhciByPS0xLG89dC5sZW5ndGg7KytyPG87KXt2YXIgYT10W3JdLHM9ZShhKTtpZihudWxsIT1zJiYobD09PW4/cz09cyYmIU9zKHMpOmkocyxsKSkpdmFyIGw9cyxjPWF9cmV0dXJuIGN9ZnVuY3Rpb24gemkodCxlKXt2YXIgbj1bXTtyZXR1cm4gSWkodCwoZnVuY3Rpb24odCxpLHIpe2UodCxpLHIpJiZuLnB1c2godCl9KSksbn1mdW5jdGlvbiBEaSh0LGUsbixpLHIpe3ZhciBvPS0xLGE9dC5sZW5ndGg7Zm9yKG58fChuPURvKSxyfHwocj1bXSk7KytvPGE7KXt2YXIgcz10W29dO2U+MCYmbihzKT9lPjE/RGkocyxlLTEsbixpLHIpOkVlKHIscyk6aXx8KHJbci5sZW5ndGhdPXMpfXJldHVybiByfXZhciBCaT1RcigpLEhpPVFyKCEwKTtmdW5jdGlvbiBGaSh0LGUpe3JldHVybiB0JiZCaSh0LGUscmwpfWZ1bmN0aW9uIFZpKHQsZSl7cmV0dXJuIHQmJkhpKHQsZSxybCl9ZnVuY3Rpb24gamkodCxlKXtyZXR1cm4geGUoZSwoZnVuY3Rpb24oZSl7cmV0dXJuIGJzKHRbZV0pfSkpfWZ1bmN0aW9uIFVpKHQsZSl7Zm9yKHZhciBpPTAscj0oZT1CcihlLHQpKS5sZW5ndGg7bnVsbCE9dCYmaTxyOyl0PXRbcmEoZVtpKytdKV07cmV0dXJuIGkmJmk9PXI/dDpufWZ1bmN0aW9uIEdpKHQsZSxuKXt2YXIgaT1lKHQpO3JldHVybiBocyh0KT9pOkVlKGksbih0KSl9ZnVuY3Rpb24gV2kodCl7cmV0dXJuIG51bGw9PXQ/dD09PW4/IltvYmplY3QgVW5kZWZpbmVkXSI6IltvYmplY3QgTnVsbF0iOnNlJiZzZSBpbiBNdCh0KT8oZnVuY3Rpb24gZSh0KXt2YXIgZT1JdC5jYWxsKHQsc2UpLGk9dFtzZV07dHJ5e3Rbc2VdPW47dmFyIHI9ITB9Y2F0Y2godCl7fXZhciBvPVJ0LmNhbGwodCk7cmV0dXJuIHImJihlP3Rbc2VdPWk6ZGVsZXRlIHRbc2VdKSxvfSkodCk6KGZ1bmN0aW9uIGkodCl7cmV0dXJuIFJ0LmNhbGwodCl9KSh0KX1mdW5jdGlvbiBxaSh0LGUpe3JldHVybiB0PmV9ZnVuY3Rpb24gWWkodCxlKXtyZXR1cm4gbnVsbCE9dCYmSXQuY2FsbCh0LGUpfWZ1bmN0aW9uIFhpKHQsZSl7cmV0dXJuIG51bGwhPXQmJmUgaW4gTXQodCl9ZnVuY3Rpb24gJGkodCxlLGkpe2Zvcih2YXIgcj1pP1NlOndlLG89dFswXS5sZW5ndGgsYT10Lmxlbmd0aCxzPWEsbD12dChhKSxjPTEvMCx1PVtdO3MtLTspe3ZhciBoPXRbc107cyYmZSYmKGg9TWUoaCxqZShlKSkpLGM9X24oaC5sZW5ndGgsYyksbFtzXT0haSYmKGV8fG8+PTEyMCYmaC5sZW5ndGg+PTEyMCk/bmV3IHFuKHMmJmgpOm59aD10WzBdO3ZhciBkPS0xLHA9bFswXTt0OmZvcig7KytkPG8mJnUubGVuZ3RoPGM7KXt2YXIgZj1oW2RdLG09ZT9lKGYpOmY7aWYoZj1pfHwwIT09Zj9mOjAsIShwP0dlKHAsbSk6cih1LG0saSkpKXtmb3Iocz1hOy0tczspe3ZhciBnPWxbc107aWYoIShnP0dlKGcsbSk6cih0W3NdLG0saSkpKWNvbnRpbnVlIHR9cCYmcC5wdXNoKG0pLHUucHVzaChmKX19cmV0dXJuIHV9ZnVuY3Rpb24gS2kodCxlLGkpe3ZhciByPW51bGw9PSh0PVlvKHQsZT1CcihlLHQpKSk/dDp0W3JhKF9hKGUpKV07cmV0dXJuIG51bGw9PXI/bjptZShyLHQsaSl9ZnVuY3Rpb24gWmkodCl7cmV0dXJuIE1zKHQpJiZXaSh0KT09cH1mdW5jdGlvbiBKaSh0LGUsaSxyLG8pe3JldHVybiB0PT09ZXx8KG51bGw9PXR8fG51bGw9PWV8fCFNcyh0KSYmIU1zKGUpP3QhPXQmJmUhPWU6KGZ1bmN0aW9uIGEodCxlLGkscixvLHMpe3ZhciBsPWhzKHQpLGM9aHMoZSksdT1sP2Y6T28odCksaD1jP2Y6T28oZSksZD0odT11PT1wP3c6dSk9PXcseT0oaD1oPT1wP3c6aCk9PXcsdj11PT1oO2lmKHYmJmdzKHQpKXtpZighZ3MoZSkpcmV0dXJuITE7bD0hMCxkPSExfWlmKHYmJiFkKXJldHVybiBzfHwocz1uZXcgWW4pLGx8fFJzKHQpP3hvKHQsZSxpLHIsbyxzKTooZnVuY3Rpb24gUyh0LGUsbixpLHIsbyxhKXtzd2l0Y2gobil7Y2FzZSBMOmlmKHQuYnl0ZUxlbmd0aCE9ZS5ieXRlTGVuZ3RofHx0LmJ5dGVPZmZzZXQhPWUuYnl0ZU9mZnNldClyZXR1cm4hMTt0PXQuYnVmZmVyLGU9ZS5idWZmZXI7Y2FzZSBrOnJldHVybiEodC5ieXRlTGVuZ3RoIT1lLmJ5dGVMZW5ndGh8fCFvKG5ldyBWdCh0KSxuZXcgVnQoZSkpKTtjYXNlIG06Y2FzZSBnOmNhc2UgeDpyZXR1cm4gc3MoK3QsK2UpO2Nhc2UgXzpyZXR1cm4gdC5uYW1lPT1lLm5hbWUmJnQubWVzc2FnZT09ZS5tZXNzYWdlO2Nhc2UgTTpjYXNlIFQ6cmV0dXJuIHQ9PWUrIiI7Y2FzZSBiOnZhciBzPUplO2Nhc2UgRTppZihzfHwocz1lbiksdC5zaXplIT1lLnNpemUmJiEoMSZpKSlyZXR1cm4hMTt2YXIgbD1hLmdldCh0KTtpZihsKXJldHVybiBsPT1lO2l8PTIsYS5zZXQodCxlKTt2YXIgYz14byhzKHQpLHMoZSksaSxyLG8sYSk7cmV0dXJuIGEuZGVsZXRlKHQpLGM7Y2FzZSBBOmlmKHpuKXJldHVybiB6bi5jYWxsKHQpPT16bi5jYWxsKGUpfXJldHVybiExfSkodCxlLHUsaSxyLG8scyk7aWYoISgxJmkpKXt2YXIgQz1kJiZJdC5jYWxsKHQsIl9fd3JhcHBlZF9fIiksUD15JiZJdC5jYWxsKGUsIl9fd3JhcHBlZF9fIik7aWYoQ3x8UCl7dmFyIEk9Qz90LnZhbHVlKCk6dCxOPVA/ZS52YWx1ZSgpOmU7cmV0dXJuIHN8fChzPW5ldyBZbiksbyhJLE4saSxyLHMpfX1yZXR1cm4hIXYmJihzfHwocz1uZXcgWW4pLChmdW5jdGlvbiBPKHQsZSxpLHIsbyxhKXt2YXIgcz0xJmksbD1Tbyh0KSxjPWwubGVuZ3RoO2lmKGMhPVNvKGUpLmxlbmd0aCYmIXMpcmV0dXJuITE7Zm9yKHZhciB1PWM7dS0tOyl7dmFyIGg9bFt1XTtpZighKHM/aCBpbiBlOkl0LmNhbGwoZSxoKSkpcmV0dXJuITF9dmFyIGQ9YS5nZXQodCkscD1hLmdldChlKTtpZihkJiZwKXJldHVybiBkPT1lJiZwPT10O3ZhciBmPSEwO2Euc2V0KHQsZSksYS5zZXQoZSx0KTtmb3IodmFyIG09czsrK3U8Yzspe3ZhciBnPXRbaD1sW3VdXSxfPWVbaF07aWYocil2YXIgeT1zP3IoXyxnLGgsZSx0LGEpOnIoZyxfLGgsdCxlLGEpO2lmKCEoeT09PW4/Zz09PV98fG8oZyxfLGkscixhKTp5KSl7Zj0hMTticmVha31tfHwobT0iY29uc3RydWN0b3IiPT1oKX1pZihmJiYhbSl7dmFyIHY9dC5jb25zdHJ1Y3RvcixiPWUuY29uc3RydWN0b3I7dj09Ynx8ISgiY29uc3RydWN0b3IiaW4gdCl8fCEoImNvbnN0cnVjdG9yImluIGUpfHwiZnVuY3Rpb24iPT10eXBlb2YgdiYmdiBpbnN0YW5jZW9mIHYmJiJmdW5jdGlvbiI9PXR5cGVvZiBiJiZiIGluc3RhbmNlb2YgYnx8KGY9ITEpfXJldHVybiBhLmRlbGV0ZSh0KSxhLmRlbGV0ZShlKSxmfSkodCxlLGkscixvLHMpKX0pKHQsZSxpLHIsSmksbykpfWZ1bmN0aW9uIFFpKHQsZSxpLHIpe3ZhciBvPWkubGVuZ3RoLGE9byxzPSFyO2lmKG51bGw9PXQpcmV0dXJuIWE7Zm9yKHQ9TXQodCk7by0tOyl7dmFyIGw9aVtvXTtpZihzJiZsWzJdP2xbMV0hPT10W2xbMF1dOiEobFswXWluIHQpKXJldHVybiExfWZvcig7KytvPGE7KXt2YXIgYz0obD1pW29dKVswXSx1PXRbY10saD1sWzFdO2lmKHMmJmxbMl0pe2lmKHU9PT1uJiYhKGMgaW4gdCkpcmV0dXJuITF9ZWxzZXt2YXIgZD1uZXcgWW47aWYocil2YXIgcD1yKHUsaCxjLHQsZSxkKTtpZighKHA9PT1uP0ppKGgsdSwzLHIsZCk6cCkpcmV0dXJuITF9fXJldHVybiEwfWZ1bmN0aW9uIHRyKHQpe3JldHVybiEoIVNzKHQpfHwoZnVuY3Rpb24gZSh0KXtyZXR1cm4hIU90JiZPdCBpbiB0fSkodCkpJiYoYnModCk/QnQ6cHQpLnRlc3Qob2EodCkpfWZ1bmN0aW9uIGVyKHQpe3JldHVybiJmdW5jdGlvbiI9PXR5cGVvZiB0P3Q6bnVsbD09dD9MbDoib2JqZWN0Ij09dHlwZW9mIHQ/aHModCk/YXIodFswXSx0WzFdKTpvcih0KTpIbCh0KX1mdW5jdGlvbiBucih0KXtpZighVW8odCkpcmV0dXJuIG1uKHQpO3ZhciBlPVtdO2Zvcih2YXIgbiBpbiBNdCh0KSlJdC5jYWxsKHQsbikmJiJjb25zdHJ1Y3RvciIhPW4mJmUucHVzaChuKTtyZXR1cm4gZX1mdW5jdGlvbiBpcih0LGUpe3JldHVybiB0PGV9ZnVuY3Rpb24gcnIodCxlKXt2YXIgbj0tMSxpPWZzKHQpP3Z0KHQubGVuZ3RoKTpbXTtyZXR1cm4gSWkodCwoZnVuY3Rpb24odCxyLG8pe2lbKytuXT1lKHQscixvKX0pKSxpfWZ1bmN0aW9uIG9yKHQpe3ZhciBlPUxvKHQpO3JldHVybiAxPT1lLmxlbmd0aCYmZVswXVsyXT9XbyhlWzBdWzBdLGVbMF1bMV0pOmZ1bmN0aW9uKG4pe3JldHVybiBuPT09dHx8UWkobix0LGUpfX1mdW5jdGlvbiBhcih0LGUpe3JldHVybiBGbyh0KSYmR28oZSk/V28ocmEodCksZSk6ZnVuY3Rpb24oaSl7dmFyIHI9UXMoaSx0KTtyZXR1cm4gcj09PW4mJnI9PT1lP3RsKGksdCk6SmkoZSxyLDMpfX1mdW5jdGlvbiBzcih0LGUsaSxyLG8pe3QhPT1lJiZCaShlLChmdW5jdGlvbihhLHMpe2lmKG98fChvPW5ldyBZbiksU3MoYSkpIShmdW5jdGlvbiBsKHQsZSxpLHIsbyxhLHMpe3ZhciBsPSRvKHQsaSksYz0kbyhlLGkpLHU9cy5nZXQoYyk7aWYodSlKbih0LGksdSk7ZWxzZXt2YXIgaD1hP2EobCxjLGkrIiIsdCxlLHMpOm4sZD1oPT09bjtpZihkKXt2YXIgcD1ocyhjKSxmPSFwJiZncyhjKSxtPSFwJiYhZiYmUnMoYyk7aD1jLHB8fGZ8fG0/aHMobCk/aD1sOm1zKGwpP2g9WHIobCk6Zj8oZD0hMSxoPWpyKGMsITApKTptPyhkPSExLGg9R3IoYywhMCkpOmg9W106Q3MoYyl8fHVzKGMpPyhoPWwsdXMobCk/aD1HcyhsKTpTcyhsKSYmIWJzKGwpfHwoaD16byhjKSkpOmQ9ITF9ZCYmKHMuc2V0KGMsaCksbyhoLGMscixhLHMpLHMuZGVsZXRlKGMpKSxKbih0LGksaCl9fSkodCxlLHMsaSxzcixyLG8pO2Vsc2V7dmFyIGM9cj9yKCRvKHQscyksYSxzKyIiLHQsZSxvKTpuO2M9PT1uJiYoYz1hKSxKbih0LHMsYyl9fSksb2wpfWZ1bmN0aW9uIGxyKHQsZSl7dmFyIGk9dC5sZW5ndGg7aWYoaSlyZXR1cm4gQm8oZSs9ZTwwP2k6MCxpKT90W2VdOm59ZnVuY3Rpb24gY3IodCxlLG4pe2U9ZS5sZW5ndGg/TWUoZSwoZnVuY3Rpb24odCl7cmV0dXJuIGhzKHQpP2Z1bmN0aW9uKGUpe3JldHVybiBVaShlLDE9PT10Lmxlbmd0aD90WzBdOnQpfTp0fSkpOltMbF07dmFyIGk9LTE7cmV0dXJuIGU9TWUoZSxqZShDbygpKSksKGZ1bmN0aW9uIHIodCxlKXt2YXIgbj10Lmxlbmd0aDtmb3IodC5zb3J0KGUpO24tLTspdFtuXT10W25dLnZhbHVlO3JldHVybiB0fSkocnIodCwoZnVuY3Rpb24odCxuLHIpe3JldHVybntjcml0ZXJpYTpNZShlLChmdW5jdGlvbihlKXtyZXR1cm4gZSh0KX0pKSxpbmRleDorK2ksdmFsdWU6dH19KSksKGZ1bmN0aW9uKHQsZSl7cmV0dXJuKGZ1bmN0aW9uIGkodCxlLG4pe2Zvcih2YXIgaT0tMSxyPXQuY3JpdGVyaWEsbz1lLmNyaXRlcmlhLGE9ci5sZW5ndGgscz1uLmxlbmd0aDsrK2k8YTspe3ZhciBsPVdyKHJbaV0sb1tpXSk7aWYobClyZXR1cm4gaT49cz9sOmwqKCJkZXNjIj09bltpXT8tMToxKX1yZXR1cm4gdC5pbmRleC1lLmluZGV4fSkodCxlLG4pfSkpfWZ1bmN0aW9uIHVyKHQsZSxuKXtmb3IodmFyIGk9LTEscj1lLmxlbmd0aCxvPXt9OysraTxyOyl7dmFyIGE9ZVtpXSxzPVVpKHQsYSk7bihzLGEpJiZ5cihvLEJyKGEsdCkscyl9cmV0dXJuIG99ZnVuY3Rpb24gaHIodCxlLG4saSl7dmFyIHI9aT9OZTpJZSxvPS0xLGE9ZS5sZW5ndGgscz10O2Zvcih0PT09ZSYmKGU9WHIoZSkpLG4mJihzPU1lKHQsamUobikpKTsrK288YTspZm9yKHZhciBsPTAsYz1lW29dLHU9bj9uKGMpOmM7KGw9cihzLHUsbCxpKSk+LTE7KXMhPT10JiZuZS5jYWxsKHMsbCwxKSxuZS5jYWxsKHQsbCwxKTtyZXR1cm4gdH1mdW5jdGlvbiBkcih0LGUpe2Zvcih2YXIgbj10P2UubGVuZ3RoOjAsaT1uLTE7bi0tOyl7dmFyIHI9ZVtuXTtpZihuPT1pfHxyIT09byl7dmFyIG89cjtCbyhyKT9uZS5jYWxsKHQsciwxKTpMcih0LHIpfX1yZXR1cm4gdH1mdW5jdGlvbiBwcih0LGUpe3JldHVybiB0K3VuKGJuKCkqKGUtdCsxKSl9ZnVuY3Rpb24gZnIodCxlKXt2YXIgbj0iIjtpZighdHx8ZTwxfHxlPmMpcmV0dXJuIG47ZG97ZSUyJiYobis9dCksKGU9dW4oZS8yKSkmJih0Kz10KX13aGlsZShlKTtyZXR1cm4gbn1mdW5jdGlvbiBtcih0LGUpe3JldHVybiBKbyhxbyh0LGUsTGwpLHQrIiIpfWZ1bmN0aW9uIGdyKHQpe3JldHVybiAkbihwbCh0KSl9ZnVuY3Rpb24gX3IodCxlKXt2YXIgbj1wbCh0KTtyZXR1cm4gZWEobixvaShlLDAsbi5sZW5ndGgpKX1mdW5jdGlvbiB5cih0LGUsaSxyKXtpZighU3ModCkpcmV0dXJuIHQ7Zm9yKHZhciBvPS0xLGE9KGU9QnIoZSx0KSkubGVuZ3RoLHM9YS0xLGw9dDtudWxsIT1sJiYrK288YTspe3ZhciBjPXJhKGVbb10pLHU9aTtpZigiX19wcm90b19fIj09PWN8fCJjb25zdHJ1Y3RvciI9PT1jfHwicHJvdG90eXBlIj09PWMpcmV0dXJuIHQ7aWYobyE9cyl7dmFyIGg9bFtjXTsodT1yP3IoaCxjLGwpOm4pPT09biYmKHU9U3MoaCk/aDpCbyhlW28rMV0pP1tdOnt9KX1RbihsLGMsdSksbD1sW2NdfXJldHVybiB0fXZhciB2cj1Dbj9mdW5jdGlvbih0LGUpe3JldHVybiBDbi5zZXQodCxlKSx0fTpMbCxicj1sZT9mdW5jdGlvbih0LGUpe3JldHVybiBsZSh0LCJ0b1N0cmluZyIse2NvbmZpZ3VyYWJsZTohMCxlbnVtZXJhYmxlOiExLHZhbHVlOkFsKGUpLHdyaXRhYmxlOiEwfSl9OkxsO2Z1bmN0aW9uIHhyKHQpe3JldHVybiBlYShwbCh0KSl9ZnVuY3Rpb24gd3IodCxlLG4pe3ZhciBpPS0xLHI9dC5sZW5ndGg7ZTwwJiYoZT0tZT5yPzA6citlKSwobj1uPnI/cjpuKTwwJiYobis9cikscj1lPm4/MDpuLWU+Pj4wLGU+Pj49MDtmb3IodmFyIG89dnQocik7KytpPHI7KW9baV09dFtpK2VdO3JldHVybiBvfWZ1bmN0aW9uIFNyKHQsZSl7dmFyIG47cmV0dXJuIElpKHQsKGZ1bmN0aW9uKHQsaSxyKXtyZXR1cm4hKG49ZSh0LGkscikpfSkpLCEhbn1mdW5jdGlvbiBNcih0LGUsbil7dmFyIGk9MCxyPW51bGw9PXQ/aTp0Lmxlbmd0aDtpZigibnVtYmVyIj09dHlwZW9mIGUmJmU9PWUmJnI8PTIxNDc0ODM2NDcpe2Zvcig7aTxyOyl7dmFyIG89aStyPj4+MSxhPXRbb107bnVsbCE9PWEmJiFPcyhhKSYmKG4/YTw9ZTphPGUpP2k9bysxOnI9b31yZXR1cm4gcn1yZXR1cm4gRXIodCxlLExsLG4pfWZ1bmN0aW9uIEVyKHQsZSxpLHIpe3ZhciBvPTAsYT1udWxsPT10PzA6dC5sZW5ndGg7aWYoMD09PWEpcmV0dXJuIDA7Zm9yKHZhciBzPShlPWkoZSkpIT1lLGw9bnVsbD09PWUsYz1PcyhlKSx1PWU9PT1uO288YTspe3ZhciBoPXVuKChvK2EpLzIpLGQ9aSh0W2hdKSxwPWQhPT1uLGY9bnVsbD09PWQsbT1kPT1kLGc9T3MoZCk7aWYocyl2YXIgXz1yfHxtO2Vsc2UgXz11P20mJihyfHxwKTpsP20mJnAmJihyfHwhZik6Yz9tJiZwJiYhZiYmKHJ8fCFnKTohZiYmIWcmJihyP2Q8PWU6ZDxlKTtfP289aCsxOmE9aH1yZXR1cm4gX24oYSw0Mjk0OTY3Mjk0KX1mdW5jdGlvbiBUcih0LGUpe2Zvcih2YXIgbj0tMSxpPXQubGVuZ3RoLHI9MCxvPVtdOysrbjxpOyl7dmFyIGE9dFtuXSxzPWU/ZShhKTphO2lmKCFufHwhc3MocyxsKSl7dmFyIGw9cztvW3IrK109MD09PWE/MDphfX1yZXR1cm4gb31mdW5jdGlvbiBBcih0KXtyZXR1cm4ibnVtYmVyIj09dHlwZW9mIHQ/dDpPcyh0KT91Oit0fWZ1bmN0aW9uIENyKHQpe2lmKCJzdHJpbmciPT10eXBlb2YgdClyZXR1cm4gdDtpZihocyh0KSlyZXR1cm4gTWUodCxDcikrIiI7aWYoT3ModCkpcmV0dXJuIERuP0RuLmNhbGwodCk6IiI7dmFyIGU9dCsiIjtyZXR1cm4iMCI9PWUmJjEvdD09LTEvMD8iLTAiOmV9ZnVuY3Rpb24ga3IodCxlLG4pe3ZhciBpPS0xLHI9d2Usbz10Lmxlbmd0aCxhPSEwLHM9W10sbD1zO2lmKG4pYT0hMSxyPVNlO2Vsc2UgaWYobz49MjAwKXt2YXIgYz1lP251bGw6bW8odCk7aWYoYylyZXR1cm4gZW4oYyk7YT0hMSxyPUdlLGw9bmV3IHFufWVsc2UgbD1lP1tdOnM7dDpmb3IoOysraTxvOyl7dmFyIHU9dFtpXSxoPWU/ZSh1KTp1O2lmKHU9bnx8MCE9PXU/dTowLGEmJmg9PWgpe2Zvcih2YXIgZD1sLmxlbmd0aDtkLS07KWlmKGxbZF09PT1oKWNvbnRpbnVlIHQ7ZSYmbC5wdXNoKGgpLHMucHVzaCh1KX1lbHNlIHIobCxoLG4pfHwobCE9PXMmJmwucHVzaChoKSxzLnB1c2godSkpfXJldHVybiBzfWZ1bmN0aW9uIExyKHQsZSl7cmV0dXJuIG51bGw9PSh0PVlvKHQsZT1CcihlLHQpKSl8fGRlbGV0ZSB0W3JhKF9hKGUpKV19ZnVuY3Rpb24gUHIodCxlLG4saSl7cmV0dXJuIHlyKHQsZSxuKFVpKHQsZSkpLGkpfWZ1bmN0aW9uIElyKHQsZSxuLGkpe2Zvcih2YXIgcj10Lmxlbmd0aCxvPWk/cjotMTsoaT9vLS06KytvPHIpJiZlKHRbb10sbyx0KTspO3JldHVybiBuP3dyKHQsaT8wOm8saT9vKzE6cik6d3IodCxpP28rMTowLGk/cjpvKX1mdW5jdGlvbiBOcih0LGUpe3ZhciBuPXQ7cmV0dXJuIG4gaW5zdGFuY2VvZiBqbiYmKG49bi52YWx1ZSgpKSxUZShlLChmdW5jdGlvbih0LGUpe3JldHVybiBlLmZ1bmMuYXBwbHkoZS50aGlzQXJnLEVlKFt0XSxlLmFyZ3MpKX0pLG4pfWZ1bmN0aW9uIE9yKHQsZSxuKXt2YXIgaT10Lmxlbmd0aDtpZihpPDIpcmV0dXJuIGk/a3IodFswXSk6W107Zm9yKHZhciByPS0xLG89dnQoaSk7KytyPGk7KWZvcih2YXIgYT10W3JdLHM9LTE7KytzPGk7KXMhPXImJihvW3JdPWNpKG9bcl18fGEsdFtzXSxlLG4pKTtyZXR1cm4ga3IoRGkobywxKSxlLG4pfWZ1bmN0aW9uIFJyKHQsZSxpKXtmb3IodmFyIHI9LTEsbz10Lmxlbmd0aCxhPWUubGVuZ3RoLHM9e307KytyPG87KWkocyx0W3JdLHI8YT9lW3JdOm4pO3JldHVybiBzfWZ1bmN0aW9uIHpyKHQpe3JldHVybiBtcyh0KT90OltdfWZ1bmN0aW9uIERyKHQpe3JldHVybiJmdW5jdGlvbiI9PXR5cGVvZiB0P3Q6TGx9ZnVuY3Rpb24gQnIodCxlKXtyZXR1cm4gaHModCk/dDpGbyh0LGUpP1t0XTpuYShXcyh0KSl9dmFyIEhyPW1yO2Z1bmN0aW9uIEZyKHQsZSxpKXt2YXIgcj10Lmxlbmd0aDtyZXR1cm4gaT1pPT09bj9yOmksIWUmJmk+PXI/dDp3cih0LGUsaSl9dmFyIFZyPXZlfHxmdW5jdGlvbih0KXtyZXR1cm4gaWUuY2xlYXJUaW1lb3V0KHQpfTtmdW5jdGlvbiBqcih0LGUpe2lmKGUpcmV0dXJuIHQuc2xpY2UoKTt2YXIgbj10Lmxlbmd0aCxpPUd0P0d0KG4pOm5ldyB0LmNvbnN0cnVjdG9yKG4pO3JldHVybiB0LmNvcHkoaSksaX1mdW5jdGlvbiBVcih0KXt2YXIgZT1uZXcgdC5jb25zdHJ1Y3Rvcih0LmJ5dGVMZW5ndGgpO3JldHVybiBuZXcgVnQoZSkuc2V0KG5ldyBWdCh0KSksZX1mdW5jdGlvbiBHcih0LGUpe3ZhciBuPWU/VXIodC5idWZmZXIpOnQuYnVmZmVyO3JldHVybiBuZXcgdC5jb25zdHJ1Y3RvcihuLHQuYnl0ZU9mZnNldCx0Lmxlbmd0aCl9ZnVuY3Rpb24gV3IodCxlKXtpZih0IT09ZSl7dmFyIGk9dCE9PW4scj1udWxsPT09dCxvPXQ9PXQsYT1Pcyh0KSxzPWUhPT1uLGw9bnVsbD09PWUsYz1lPT1lLHU9T3MoZSk7aWYoIWwmJiF1JiYhYSYmdD5lfHxhJiZzJiZjJiYhbCYmIXV8fHImJnMmJmN8fCFpJiZjfHwhbylyZXR1cm4gMTtpZighciYmIWEmJiF1JiZ0PGV8fHUmJmkmJm8mJiFyJiYhYXx8bCYmaSYmb3x8IXMmJm98fCFjKXJldHVybi0xfXJldHVybiAwfWZ1bmN0aW9uIHFyKHQsZSxuLGkpe2Zvcih2YXIgcj0tMSxvPXQubGVuZ3RoLGE9bi5sZW5ndGgscz0tMSxsPWUubGVuZ3RoLGM9Z24oby1hLDApLHU9dnQobCtjKSxoPSFpOysrczxsOyl1W3NdPWVbc107Zm9yKDsrK3I8YTspKGh8fHI8bykmJih1W25bcl1dPXRbcl0pO2Zvcig7Yy0tOyl1W3MrK109dFtyKytdO3JldHVybiB1fWZ1bmN0aW9uIFlyKHQsZSxuLGkpe2Zvcih2YXIgcj0tMSxvPXQubGVuZ3RoLGE9LTEscz1uLmxlbmd0aCxsPS0xLGM9ZS5sZW5ndGgsdT1nbihvLXMsMCksaD12dCh1K2MpLGQ9IWk7KytyPHU7KWhbcl09dFtyXTtmb3IodmFyIHA9cjsrK2w8YzspaFtwK2xdPWVbbF07Zm9yKDsrK2E8czspKGR8fHI8bykmJihoW3ArblthXV09dFtyKytdKTtyZXR1cm4gaH1mdW5jdGlvbiBYcih0LGUpe3ZhciBuPS0xLGk9dC5sZW5ndGg7Zm9yKGV8fChlPXZ0KGkpKTsrK248aTspZVtuXT10W25dO3JldHVybiBlfWZ1bmN0aW9uICRyKHQsZSxpLHIpe3ZhciBvPSFpO2l8fChpPXt9KTtmb3IodmFyIGE9LTEscz1lLmxlbmd0aDsrK2E8czspe3ZhciBsPWVbYV0sYz1yP3IoaVtsXSx0W2xdLGwsaSx0KTpuO2M9PT1uJiYoYz10W2xdKSxvP2lpKGksbCxjKTpRbihpLGwsYyl9cmV0dXJuIGl9ZnVuY3Rpb24gS3IodCxlKXtyZXR1cm4gZnVuY3Rpb24obixpKXt2YXIgcj1ocyhuKT9nZTplaSxvPWU/ZSgpOnt9O3JldHVybiByKG4sdCxDbyhpLDIpLG8pfX1mdW5jdGlvbiBacih0KXtyZXR1cm4gbXIoKGZ1bmN0aW9uKGUsaSl7dmFyIHI9LTEsbz1pLmxlbmd0aCxhPW8+MT9pW28tMV06bixzPW8+Mj9pWzJdOm47Zm9yKGE9dC5sZW5ndGg+MyYmImZ1bmN0aW9uIj09dHlwZW9mIGE/KG8tLSxhKTpuLHMmJkhvKGlbMF0saVsxXSxzKSYmKGE9bzwzP246YSxvPTEpLGU9TXQoZSk7KytyPG87KXt2YXIgbD1pW3JdO2wmJnQoZSxsLHIsYSl9cmV0dXJuIGV9KSl9ZnVuY3Rpb24gSnIodCxlKXtyZXR1cm4gZnVuY3Rpb24obixpKXtpZihudWxsPT1uKXJldHVybiBuO2lmKCFmcyhuKSlyZXR1cm4gdChuLGkpO2Zvcih2YXIgcj1uLmxlbmd0aCxvPWU/cjotMSxhPU10KG4pOyhlP28tLTorK288cikmJiExIT09aShhW29dLG8sYSk7KTtyZXR1cm4gbn19ZnVuY3Rpb24gUXIodCl7cmV0dXJuIGZ1bmN0aW9uKGUsbixpKXtmb3IodmFyIHI9LTEsbz1NdChlKSxhPWkoZSkscz1hLmxlbmd0aDtzLS07KXt2YXIgbD1hW3Q/czorK3JdO2lmKCExPT09bihvW2xdLGwsbykpYnJlYWt9cmV0dXJuIGV9fWZ1bmN0aW9uIHRvKHQpe3JldHVybiBmdW5jdGlvbihlKXt2YXIgaT1aZShlPVdzKGUpKT9vbihlKTpuLHI9aT9pWzBdOmUuY2hhckF0KDApLG89aT9GcihpLDEpLmpvaW4oIiIpOmUuc2xpY2UoMSk7cmV0dXJuIHJbdF0oKStvfX1mdW5jdGlvbiBlbyh0KXtyZXR1cm4gZnVuY3Rpb24oZSl7cmV0dXJuIFRlKE1sKGdsKGUpLnJlcGxhY2UoanQsIiIpKSx0LCIiKX19ZnVuY3Rpb24gbm8odCl7cmV0dXJuIGZ1bmN0aW9uKCl7dmFyIGU9YXJndW1lbnRzO3N3aXRjaChlLmxlbmd0aCl7Y2FzZSAwOnJldHVybiBuZXcgdDtjYXNlIDE6cmV0dXJuIG5ldyB0KGVbMF0pO2Nhc2UgMjpyZXR1cm4gbmV3IHQoZVswXSxlWzFdKTtjYXNlIDM6cmV0dXJuIG5ldyB0KGVbMF0sZVsxXSxlWzJdKTtjYXNlIDQ6cmV0dXJuIG5ldyB0KGVbMF0sZVsxXSxlWzJdLGVbM10pO2Nhc2UgNTpyZXR1cm4gbmV3IHQoZVswXSxlWzFdLGVbMl0sZVszXSxlWzRdKTtjYXNlIDY6cmV0dXJuIG5ldyB0KGVbMF0sZVsxXSxlWzJdLGVbM10sZVs0XSxlWzVdKTtjYXNlIDc6cmV0dXJuIG5ldyB0KGVbMF0sZVsxXSxlWzJdLGVbM10sZVs0XSxlWzVdLGVbNl0pfXZhciBuPUhuKHQucHJvdG90eXBlKSxpPXQuYXBwbHkobixlKTtyZXR1cm4gU3MoaSk/aTpufX1mdW5jdGlvbiBpbyh0KXtyZXR1cm4gZnVuY3Rpb24oZSxpLHIpe3ZhciBvPU10KGUpO2lmKCFmcyhlKSl7dmFyIGE9Q28oaSwzKTtlPXJsKGUpLGk9ZnVuY3Rpb24odCl7cmV0dXJuIGEob1t0XSx0LG8pfX12YXIgcz10KGUsaSxyKTtyZXR1cm4gcz4tMT9vW2E/ZVtzXTpzXTpufX1mdW5jdGlvbiBybyh0KXtyZXR1cm4gd28oKGZ1bmN0aW9uKGUpe3ZhciByPWUubGVuZ3RoLG89cixhPVZuLnByb3RvdHlwZS50aHJ1O2Zvcih0JiZlLnJldmVyc2UoKTtvLS07KXt2YXIgcz1lW29dO2lmKCJmdW5jdGlvbiIhPXR5cGVvZiBzKXRocm93IG5ldyBBdChpKTtpZihhJiYhbCYmIndyYXBwZXIiPT1UbyhzKSl2YXIgbD1uZXcgVm4oW10sITApfWZvcihvPWw/bzpyOysrbzxyOyl7dmFyIGM9VG8ocz1lW29dKSx1PSJ3cmFwcGVyIj09Yz9FbyhzKTpuO2w9dSYmVm8odVswXSkmJjQyND09dVsxXSYmIXVbNF0ubGVuZ3RoJiYxPT11WzldP2xbVG8odVswXSldLmFwcGx5KGwsdVszXSk6MT09cy5sZW5ndGgmJlZvKHMpP2xbY10oKTpsLnRocnUocyl9cmV0dXJuIGZ1bmN0aW9uKCl7dmFyIHQ9YXJndW1lbnRzLG49dFswXTtpZihsJiYxPT10Lmxlbmd0aCYmaHMobikpcmV0dXJuIGwucGxhbnQobikudmFsdWUoKTtmb3IodmFyIGk9MCxvPXI/ZVtpXS5hcHBseSh0aGlzLHQpOm47KytpPHI7KW89ZVtpXS5jYWxsKHRoaXMsbyk7cmV0dXJuIG99fSkpfWZ1bmN0aW9uIG9vKHQsZSxpLHIsbyxhLGwsYyx1LGgpe3ZhciBkPWUmcyxwPTEmZSxmPTImZSxtPTI0JmUsZz01MTImZSxfPWY/bjpubyh0KTtyZXR1cm4gZnVuY3Rpb24gbigpe2Zvcih2YXIgcz1hcmd1bWVudHMubGVuZ3RoLHk9dnQocyksdj1zO3YtLTspeVt2XT1hcmd1bWVudHNbdl07aWYobSl2YXIgYj1BbyhuKSx4PVllKHksYik7aWYociYmKHk9cXIoeSxyLG8sbSkpLGEmJih5PVlyKHksYSxsLG0pKSxzLT14LG0mJnM8aCl7dmFyIHc9dG4oeSxiKTtyZXR1cm4gcG8odCxlLG9vLG4ucGxhY2Vob2xkZXIsaSx5LHcsYyx1LGgtcyl9dmFyIFM9cD9pOnRoaXMsTT1mP1NbdF06dDtyZXR1cm4gcz15Lmxlbmd0aCxjP3k9WG8oeSxjKTpnJiZzPjEmJnkucmV2ZXJzZSgpLGQmJnU8cyYmKHkubGVuZ3RoPXUpLHRoaXMmJnRoaXMhPT1pZSYmdGhpcyBpbnN0YW5jZW9mIG4mJihNPV98fG5vKE0pKSxNLmFwcGx5KFMseSl9fWZ1bmN0aW9uIGFvKHQsZSl7cmV0dXJuIGZ1bmN0aW9uKG4saSl7cmV0dXJuKGZ1bmN0aW9uIHIodCxlLG4saSl7cmV0dXJuIEZpKHQsKGZ1bmN0aW9uKHQscixvKXtlKGksbih0KSxyLG8pfSkpLGl9KShuLHQsZShpKSx7fSl9fWZ1bmN0aW9uIHNvKHQsZSl7cmV0dXJuIGZ1bmN0aW9uKGkscil7dmFyIG87aWYoaT09PW4mJnI9PT1uKXJldHVybiBlO2lmKGkhPT1uJiYobz1pKSxyIT09bil7aWYobz09PW4pcmV0dXJuIHI7InN0cmluZyI9PXR5cGVvZiBpfHwic3RyaW5nIj09dHlwZW9mIHI/KGk9Q3IoaSkscj1DcihyKSk6KGk9QXIoaSkscj1BcihyKSksbz10KGkscil9cmV0dXJuIG99fWZ1bmN0aW9uIGxvKHQpe3JldHVybiB3bygoZnVuY3Rpb24oZSl7cmV0dXJuIGU9TWUoZSxqZShDbygpKSksbXIoKGZ1bmN0aW9uKG4pe3ZhciBpPXRoaXM7cmV0dXJuIHQoZSwoZnVuY3Rpb24odCl7cmV0dXJuIG1lKHQsaSxuKX0pKX0pKX0pKX1mdW5jdGlvbiBjbyh0LGUpe3ZhciBpPShlPWU9PT1uPyIgIjpDcihlKSkubGVuZ3RoO2lmKGk8MilyZXR1cm4gaT9mcihlLHQpOmU7dmFyIHI9ZnIoZSxjbih0L3JuKGUpKSk7cmV0dXJuIFplKGUpP0ZyKG9uKHIpLDAsdCkuam9pbigiIik6ci5zbGljZSgwLHQpfWZ1bmN0aW9uIHVvKHQpe3JldHVybiBmdW5jdGlvbihlLGkscil7cmV0dXJuIHImJiJudW1iZXIiIT10eXBlb2YgciYmSG8oZSxpLHIpJiYoaT1yPW4pLGU9RnMoZSksaT09PW4/KGk9ZSxlPTApOmk9RnMoaSksKGZ1bmN0aW9uIG8odCxlLG4saSl7Zm9yKHZhciByPS0xLG89Z24oY24oKGUtdCkvKG58fDEpKSwwKSxhPXZ0KG8pO28tLTspYVtpP286KytyXT10LHQrPW47cmV0dXJuIGF9KShlLGkscj1yPT09bj9lPGk/MTotMTpGcyhyKSx0KX19ZnVuY3Rpb24gaG8odCl7cmV0dXJuIGZ1bmN0aW9uKGUsbil7cmV0dXJuInN0cmluZyI9PXR5cGVvZiBlJiYic3RyaW5nIj09dHlwZW9mIG58fChlPVVzKGUpLG49VXMobikpLHQoZSxuKX19ZnVuY3Rpb24gcG8odCxlLGkscixvLHMsbCxjLHUsaCl7dmFyIGQ9OCZlO2V8PWQ/YTo2NCw0JihlJj1+KGQ/NjQ6YSkpfHwoZSY9LTQpO3ZhciBwPVt0LGUsbyxkP3M6bixkP2w6bixkP246cyxkP246bCxjLHUsaF0sZj1pLmFwcGx5KG4scCk7cmV0dXJuIFZvKHQpJiZLbyhmLHApLGYucGxhY2Vob2xkZXI9cixRbyhmLHQsZSl9ZnVuY3Rpb24gZm8odCl7dmFyIGU9U3RbdF07cmV0dXJuIGZ1bmN0aW9uKHQsbil7aWYodD1Vcyh0KSwobj1udWxsPT1uPzA6X24oVnMobiksMjkyKSkmJnBuKHQpKXt2YXIgaT0oV3ModCkrImUiKS5zcGxpdCgiZSIpO3JldHVybisoKGk9KFdzKGUoaVswXSsiZSIrKCtpWzFdK24pKSkrImUiKS5zcGxpdCgiZSIpKVswXSsiZSIrKCtpWzFdLW4pKX1yZXR1cm4gZSh0KX19dmFyIG1vPUVuJiYxL2VuKG5ldyBFbihbLC0wXSkpWzFdPT1sP2Z1bmN0aW9uKHQpe3JldHVybiBuZXcgRW4odCl9OlJsO2Z1bmN0aW9uIGdvKHQpe3JldHVybiBmdW5jdGlvbihlKXt2YXIgbj1PbyhlKTtyZXR1cm4gbj09Yj9KZShlKTpuPT1FP25uKGUpOihmdW5jdGlvbiBpKHQsZSl7cmV0dXJuIE1lKGUsKGZ1bmN0aW9uKGUpe3JldHVybltlLHRbZV1dfSkpfSkoZSx0KGUpKX19ZnVuY3Rpb24gX28odCxlLHIsbCxjLHUsaCxkKXt2YXIgcD0yJmU7aWYoIXAmJiJmdW5jdGlvbiIhPXR5cGVvZiB0KXRocm93IG5ldyBBdChpKTt2YXIgZj1sP2wubGVuZ3RoOjA7aWYoZnx8KGUmPS05NyxsPWM9biksaD1oPT09bj9oOmduKFZzKGgpLDApLGQ9ZD09PW4/ZDpWcyhkKSxmLT1jP2MubGVuZ3RoOjAsNjQmZSl7dmFyIG09bCxnPWM7bD1jPW59dmFyIF89cD9uOkVvKHQpLHk9W3QsZSxyLGwsYyxtLGcsdSxoLGRdO2lmKF8mJihmdW5jdGlvbiB2KHQsZSl7dmFyIG49dFsxXSxpPWVbMV0scj1ufGk7aWYoIShyPDEzMXx8aT09cyYmOD09bnx8aT09cyYmMjU2PT1uJiZ0WzddLmxlbmd0aDw9ZVs4XXx8Mzg0PT1pJiZlWzddLmxlbmd0aDw9ZVs4XSYmOD09bikpcmV0dXJuIHQ7MSZpJiYodFsyXT1lWzJdLHJ8PTEmbj8wOjQpO3ZhciBhPWVbM107aWYoYSl7dmFyIGw9dFszXTt0WzNdPWw/cXIobCxhLGVbNF0pOmEsdFs0XT1sP3RuKHRbM10sbyk6ZVs0XX0oYT1lWzVdKSYmKHRbNV09KGw9dFs1XSk/WXIobCxhLGVbNl0pOmEsdFs2XT1sP3RuKHRbNV0sbyk6ZVs2XSksKGE9ZVs3XSkmJih0WzddPWEpLGkmcyYmKHRbOF09bnVsbD09dFs4XT9lWzhdOl9uKHRbOF0sZVs4XSkpLG51bGw9PXRbOV0mJih0WzldPWVbOV0pLHRbMF09ZVswXSx0WzFdPXJ9KSh5LF8pLHQ9eVswXSxlPXlbMV0scj15WzJdLGw9eVszXSxjPXlbNF0sIShkPXlbOV09eVs5XT09PW4/cD8wOnQubGVuZ3RoOmduKHlbOV0tZiwwKSkmJjI0JmUmJihlJj0tMjUpLGUmJjEhPWUpdz04PT1lfHwxNj09ZT8oZnVuY3Rpb24gYih0LGUsaSl7dmFyIHI9bm8odCk7cmV0dXJuIGZ1bmN0aW9uIG8oKXtmb3IodmFyIGE9YXJndW1lbnRzLmxlbmd0aCxzPXZ0KGEpLGw9YSxjPUFvKG8pO2wtLTspc1tsXT1hcmd1bWVudHNbbF07dmFyIHU9YTwzJiZzWzBdIT09YyYmc1thLTFdIT09Yz9bXTp0bihzLGMpO3JldHVybihhLT11Lmxlbmd0aCk8aT9wbyh0LGUsb28sby5wbGFjZWhvbGRlcixuLHMsdSxuLG4saS1hKTptZSh0aGlzJiZ0aGlzIT09aWUmJnRoaXMgaW5zdGFuY2VvZiBvP3I6dCx0aGlzLHMpfX0pKHQsZSxkKTplIT1hJiYzMyE9ZXx8Yy5sZW5ndGg/b28uYXBwbHkobix5KTooZnVuY3Rpb24geCh0LGUsbixpKXt2YXIgcj0xJmUsbz1ubyh0KTtyZXR1cm4gZnVuY3Rpb24gZSgpe2Zvcih2YXIgYT0tMSxzPWFyZ3VtZW50cy5sZW5ndGgsbD0tMSxjPWkubGVuZ3RoLHU9dnQoYytzKSxoPXRoaXMmJnRoaXMhPT1pZSYmdGhpcyBpbnN0YW5jZW9mIGU/bzp0OysrbDxjOyl1W2xdPWlbbF07Zm9yKDtzLS07KXVbbCsrXT1hcmd1bWVudHNbKythXTtyZXR1cm4gbWUoaCxyP246dGhpcyx1KX19KSh0LGUscixsKTtlbHNlIHZhciB3PShmdW5jdGlvbiBTKHQsZSxuKXt2YXIgaT0xJmUscj1ubyh0KTtyZXR1cm4gZnVuY3Rpb24gZSgpe3JldHVybih0aGlzJiZ0aGlzIT09aWUmJnRoaXMgaW5zdGFuY2VvZiBlP3I6dCkuYXBwbHkoaT9uOnRoaXMsYXJndW1lbnRzKX19KSh0LGUscik7cmV0dXJuIFFvKChfP3ZyOktvKSh3LHkpLHQsZSl9ZnVuY3Rpb24geW8odCxlLGkscil7cmV0dXJuIHQ9PT1ufHxzcyh0LGt0W2ldKSYmIUl0LmNhbGwocixpKT9lOnR9ZnVuY3Rpb24gdm8odCxlLGkscixvLGEpe3JldHVybiBTcyh0KSYmU3MoZSkmJihhLnNldChlLHQpLHNyKHQsZSxuLHZvLGEpLGEuZGVsZXRlKGUpKSx0fWZ1bmN0aW9uIGJvKHQpe3JldHVybiBDcyh0KT9uOnR9ZnVuY3Rpb24geG8odCxlLGkscixvLGEpe3ZhciBzPTEmaSxsPXQubGVuZ3RoLGM9ZS5sZW5ndGg7aWYobCE9YyYmIShzJiZjPmwpKXJldHVybiExO3ZhciB1PWEuZ2V0KHQpLGg9YS5nZXQoZSk7aWYodSYmaClyZXR1cm4gdT09ZSYmaD09dDt2YXIgZD0tMSxwPSEwLGY9MiZpP25ldyBxbjpuO2ZvcihhLnNldCh0LGUpLGEuc2V0KGUsdCk7KytkPGw7KXt2YXIgbT10W2RdLGc9ZVtkXTtpZihyKXZhciBfPXM/cihnLG0sZCxlLHQsYSk6cihtLGcsZCx0LGUsYSk7aWYoXyE9PW4pe2lmKF8pY29udGludWU7cD0hMTticmVha31pZihmKXtpZighQ2UoZSwoZnVuY3Rpb24odCxlKXtpZighR2UoZixlKSYmKG09PT10fHxvKG0sdCxpLHIsYSkpKXJldHVybiBmLnB1c2goZSl9KSkpe3A9ITE7YnJlYWt9fWVsc2UgaWYobSE9PWcmJiFvKG0sZyxpLHIsYSkpe3A9ITE7YnJlYWt9fXJldHVybiBhLmRlbGV0ZSh0KSxhLmRlbGV0ZShlKSxwfWZ1bmN0aW9uIHdvKHQpe3JldHVybiBKbyhxbyh0LG4sZGEpLHQrIiIpfWZ1bmN0aW9uIFNvKHQpe3JldHVybiBHaSh0LHJsLElvKX1mdW5jdGlvbiBNbyh0KXtyZXR1cm4gR2kodCxvbCxObyl9dmFyIEVvPUNuP2Z1bmN0aW9uKHQpe3JldHVybiBDbi5nZXQodCl9OlJsO2Z1bmN0aW9uIFRvKHQpe2Zvcih2YXIgZT10Lm5hbWUrIiIsbj1rbltlXSxpPUl0LmNhbGwoa24sZSk/bi5sZW5ndGg6MDtpLS07KXt2YXIgcj1uW2ldLG89ci5mdW5jO2lmKG51bGw9PW98fG89PXQpcmV0dXJuIHIubmFtZX1yZXR1cm4gZX1mdW5jdGlvbiBBbyh0KXtyZXR1cm4oSXQuY2FsbChCbiwicGxhY2Vob2xkZXIiKT9Cbjp0KS5wbGFjZWhvbGRlcn1mdW5jdGlvbiBDbygpe3ZhciB0PUJuLml0ZXJhdGVlfHxQbDtyZXR1cm4gdD10PT09UGw/ZXI6dCxhcmd1bWVudHMubGVuZ3RoP3QoYXJndW1lbnRzWzBdLGFyZ3VtZW50c1sxXSk6dH1mdW5jdGlvbiBrbyh0LGUpe3ZhciBuPXQuX19kYXRhX187cmV0dXJuKGZ1bmN0aW9uIGkodCl7dmFyIGU9dHlwZW9mIHQ7cmV0dXJuInN0cmluZyI9PWV8fCJudW1iZXIiPT1lfHwic3ltYm9sIj09ZXx8ImJvb2xlYW4iPT1lPyJfX3Byb3RvX18iIT09dDpudWxsPT09dH0pKGUpP25bInN0cmluZyI9PXR5cGVvZiBlPyJzdHJpbmciOiJoYXNoIl06bi5tYXB9ZnVuY3Rpb24gTG8odCl7Zm9yKHZhciBlPXJsKHQpLG49ZS5sZW5ndGg7bi0tOyl7dmFyIGk9ZVtuXSxyPXRbaV07ZVtuXT1baSxyLEdvKHIpXX1yZXR1cm4gZX1mdW5jdGlvbiBQbyh0LGUpe3ZhciBpPShmdW5jdGlvbiByKHQsZSl7cmV0dXJuIG51bGw9PXQ/bjp0W2VdfSkodCxlKTtyZXR1cm4gdHIoaSk/aTpufXZhciBJbz1obj9mdW5jdGlvbih0KXtyZXR1cm4gbnVsbD09dD9bXToodD1NdCh0KSx4ZShobih0KSwoZnVuY3Rpb24oZSl7cmV0dXJuIGVlLmNhbGwodCxlKX0pKSl9OmpsLE5vPWhuP2Z1bmN0aW9uKHQpe2Zvcih2YXIgZT1bXTt0OylFZShlLElvKHQpKSx0PXF0KHQpO3JldHVybiBlfTpqbCxPbz1XaTtmdW5jdGlvbiBSbyh0LGUsbil7Zm9yKHZhciBpPS0xLHI9KGU9QnIoZSx0KSkubGVuZ3RoLG89ITE7KytpPHI7KXt2YXIgYT1yYShlW2ldKTtpZighKG89bnVsbCE9dCYmbih0LGEpKSlicmVhazt0PXRbYV19cmV0dXJuIG98fCsraSE9cj9vOiEhKHI9bnVsbD09dD8wOnQubGVuZ3RoKSYmd3MocikmJkJvKGEscikmJihocyh0KXx8dXModCkpfWZ1bmN0aW9uIHpvKHQpe3JldHVybiJmdW5jdGlvbiIhPXR5cGVvZiB0LmNvbnN0cnVjdG9yfHxVbyh0KT97fTpIbihxdCh0KSl9ZnVuY3Rpb24gRG8odCl7cmV0dXJuIGhzKHQpfHx1cyh0KXx8ISEocmUmJnQmJnRbcmVdKX1mdW5jdGlvbiBCbyh0LGUpe3ZhciBuPXR5cGVvZiB0O3JldHVybiEhKGU9bnVsbD09ZT9jOmUpJiYoIm51bWJlciI9PW58fCJzeW1ib2wiIT1uJiZtdC50ZXN0KHQpKSYmdD4tMSYmdCUxPT0wJiZ0PGV9ZnVuY3Rpb24gSG8odCxlLG4pe2lmKCFTcyhuKSlyZXR1cm4hMTt2YXIgaT10eXBlb2YgZTtyZXR1cm4hISgibnVtYmVyIj09aT9mcyhuKSYmQm8oZSxuLmxlbmd0aCk6InN0cmluZyI9PWkmJmUgaW4gbikmJnNzKG5bZV0sdCl9ZnVuY3Rpb24gRm8odCxlKXtpZihocyh0KSlyZXR1cm4hMTt2YXIgbj10eXBlb2YgdDtyZXR1cm4hKCJudW1iZXIiIT1uJiYic3ltYm9sIiE9biYmImJvb2xlYW4iIT1uJiZudWxsIT10JiYhT3ModCkpfHxaLnRlc3QodCl8fCFLLnRlc3QodCl8fG51bGwhPWUmJnQgaW4gTXQoZSl9ZnVuY3Rpb24gVm8odCl7dmFyIGU9VG8odCksbj1CbltlXTtpZigiZnVuY3Rpb24iIT10eXBlb2Ygbnx8IShlIGluIGpuLnByb3RvdHlwZSkpcmV0dXJuITE7aWYodD09PW4pcmV0dXJuITA7dmFyIGk9RW8obik7cmV0dXJuISFpJiZ0PT09aVswXX0od24mJk9vKG5ldyB3bihuZXcgQXJyYXlCdWZmZXIoMSkpKSE9THx8U24mJk9vKG5ldyBTbikhPWJ8fE1uJiZPbyhNbi5yZXNvbHZlKCkpIT1TfHxFbiYmT28obmV3IEVuKSE9RXx8VG4mJk9vKG5ldyBUbikhPUMpJiYoT289ZnVuY3Rpb24odCl7dmFyIGU9V2kodCksaT1lPT13P3QuY29uc3RydWN0b3I6bixyPWk/b2EoaSk6IiI7aWYocilzd2l0Y2gocil7Y2FzZSBMbjpyZXR1cm4gTDtjYXNlIFBuOnJldHVybiBiO2Nhc2UgSW46cmV0dXJuIFM7Y2FzZSBObjpyZXR1cm4gRTtjYXNlIE9uOnJldHVybiBDfXJldHVybiBlfSk7dmFyIGpvPUx0P2JzOlVsO2Z1bmN0aW9uIFVvKHQpe3ZhciBlPXQmJnQuY29uc3RydWN0b3I7cmV0dXJuIHQ9PT0oImZ1bmN0aW9uIj09dHlwZW9mIGUmJmUucHJvdG90eXBlfHxrdCl9ZnVuY3Rpb24gR28odCl7cmV0dXJuIHQ9PXQmJiFTcyh0KX1mdW5jdGlvbiBXbyh0LGUpe3JldHVybiBmdW5jdGlvbihpKXtyZXR1cm4gbnVsbCE9aSYmaVt0XT09PWUmJihlIT09bnx8dCBpbiBNdChpKSl9fWZ1bmN0aW9uIHFvKHQsZSxpKXtyZXR1cm4gZT1nbihlPT09bj90Lmxlbmd0aC0xOmUsMCksZnVuY3Rpb24oKXtmb3IodmFyIG49YXJndW1lbnRzLHI9LTEsbz1nbihuLmxlbmd0aC1lLDApLGE9dnQobyk7KytyPG87KWFbcl09bltlK3JdO3I9LTE7Zm9yKHZhciBzPXZ0KGUrMSk7KytyPGU7KXNbcl09bltyXTtyZXR1cm4gc1tlXT1pKGEpLG1lKHQsdGhpcyxzKX19ZnVuY3Rpb24gWW8odCxlKXtyZXR1cm4gZS5sZW5ndGg8Mj90OlVpKHQsd3IoZSwwLC0xKSl9ZnVuY3Rpb24gWG8odCxlKXtmb3IodmFyIGk9dC5sZW5ndGgscj1fbihlLmxlbmd0aCxpKSxvPVhyKHQpO3ItLTspe3ZhciBhPWVbcl07dFtyXT1CbyhhLGkpP29bYV06bn1yZXR1cm4gdH1mdW5jdGlvbiAkbyh0LGUpe2lmKCgiY29uc3RydWN0b3IiIT09ZXx8ImZ1bmN0aW9uIiE9dHlwZW9mIHRbZV0pJiYiX19wcm90b19fIiE9ZSlyZXR1cm4gdFtlXX12YXIgS289dGEodnIpLFpvPURlfHxmdW5jdGlvbih0LGUpe3JldHVybiBpZS5zZXRUaW1lb3V0KHQsZSl9LEpvPXRhKGJyKTtmdW5jdGlvbiBRbyh0LGUsbil7dmFyIGk9ZSsiIjtyZXR1cm4gSm8odCwoZnVuY3Rpb24gYSh0LGUpe3ZhciBuPWUubGVuZ3RoO2lmKCFuKXJldHVybiB0O3ZhciBpPW4tMTtyZXR1cm4gZVtpXT0obj4xPyImICI6IiIpK2VbaV0sZT1lLmpvaW4obj4yPyIsICI6IiAiKSx0LnJlcGxhY2UoaXQsIntcbi8qIFt3cmFwcGVkIHdpdGggIitlKyJdICovXG4iKX0pKGksKGZ1bmN0aW9uIG8odCxlKXtyZXR1cm4gX2UoZCwoZnVuY3Rpb24obil7dmFyIGk9Il8uIituWzBdO2UmblsxXSYmIXdlKHQsaSkmJnQucHVzaChpKX0pKSx0LnNvcnQoKX0pKChmdW5jdGlvbiByKHQpe3ZhciBlPXQubWF0Y2gocnQpO3JldHVybiBlP2VbMV0uc3BsaXQob3QpOltdfSkoaSksbikpKX1mdW5jdGlvbiB0YSh0KXt2YXIgZT0wLGk9MDtyZXR1cm4gZnVuY3Rpb24oKXt2YXIgcj15bigpLG89MTYtKHItaSk7aWYoaT1yLG8+MCl7aWYoKytlPj04MDApcmV0dXJuIGFyZ3VtZW50c1swXX1lbHNlIGU9MDtyZXR1cm4gdC5hcHBseShuLGFyZ3VtZW50cyl9fWZ1bmN0aW9uIGVhKHQsZSl7dmFyIGk9LTEscj10Lmxlbmd0aCxvPXItMTtmb3IoZT1lPT09bj9yOmU7KytpPGU7KXt2YXIgYT1wcihpLG8pLHM9dFthXTt0W2FdPXRbaV0sdFtpXT1zfXJldHVybiB0Lmxlbmd0aD1lLHR9dmFyIG5hPShmdW5jdGlvbiBpYSh0KXt2YXIgZT1lcyh0LChmdW5jdGlvbih0KXtyZXR1cm4gNTAwPT09bi5zaXplJiZuLmNsZWFyKCksdH0pKSxuPWUuY2FjaGU7cmV0dXJuIGV9KSgoZnVuY3Rpb24odCl7dmFyIGU9W107cmV0dXJuIDQ2PT09dC5jaGFyQ29kZUF0KDApJiZlLnB1c2goIiIpLHQucmVwbGFjZShKLChmdW5jdGlvbih0LG4saSxyKXtlLnB1c2goaT9yLnJlcGxhY2UobHQsIiQxIik6bnx8dCl9KSksZX0pKTtmdW5jdGlvbiByYSh0KXtpZigic3RyaW5nIj09dHlwZW9mIHR8fE9zKHQpKXJldHVybiB0O3ZhciBlPXQrIiI7cmV0dXJuIjAiPT1lJiYxL3Q9PS0xLzA/Ii0wIjplfWZ1bmN0aW9uIG9hKHQpe2lmKG51bGwhPXQpe3RyeXtyZXR1cm4gUHQuY2FsbCh0KX1jYXRjaCh0KXt9dHJ5e3JldHVybiB0KyIifWNhdGNoKHQpe319cmV0dXJuIiJ9ZnVuY3Rpb24gYWEodCl7aWYodCBpbnN0YW5jZW9mIGpuKXJldHVybiB0LmNsb25lKCk7dmFyIGU9bmV3IFZuKHQuX193cmFwcGVkX18sdC5fX2NoYWluX18pO3JldHVybiBlLl9fYWN0aW9uc19fPVhyKHQuX19hY3Rpb25zX18pLGUuX19pbmRleF9fPXQuX19pbmRleF9fLGUuX192YWx1ZXNfXz10Ll9fdmFsdWVzX18sZX12YXIgc2E9bXIoKGZ1bmN0aW9uKHQsZSl7cmV0dXJuIG1zKHQpP2NpKHQsRGkoZSwxLG1zLCEwKSk6W119KSksbGE9bXIoKGZ1bmN0aW9uKHQsZSl7dmFyIGk9X2EoZSk7cmV0dXJuIG1zKGkpJiYoaT1uKSxtcyh0KT9jaSh0LERpKGUsMSxtcywhMCksQ28oaSwyKSk6W119KSksY2E9bXIoKGZ1bmN0aW9uKHQsZSl7dmFyIGk9X2EoZSk7cmV0dXJuIG1zKGkpJiYoaT1uKSxtcyh0KT9jaSh0LERpKGUsMSxtcywhMCksbixpKTpbXX0pKTtmdW5jdGlvbiB1YSh0LGUsbil7dmFyIGk9bnVsbD09dD8wOnQubGVuZ3RoO2lmKCFpKXJldHVybi0xO3ZhciByPW51bGw9PW4/MDpWcyhuKTtyZXR1cm4gcjwwJiYocj1nbihpK3IsMCkpLFBlKHQsQ28oZSwzKSxyKX1mdW5jdGlvbiBoYSh0LGUsaSl7dmFyIHI9bnVsbD09dD8wOnQubGVuZ3RoO2lmKCFyKXJldHVybi0xO3ZhciBvPXItMTtyZXR1cm4gaSE9PW4mJihvPVZzKGkpLG89aTwwP2duKHIrbywwKTpfbihvLHItMSkpLFBlKHQsQ28oZSwzKSxvLCEwKX1mdW5jdGlvbiBkYSh0KXtyZXR1cm4gbnVsbCE9dCYmdC5sZW5ndGg/RGkodCwxKTpbXX1mdW5jdGlvbiBwYSh0KXtyZXR1cm4gdCYmdC5sZW5ndGg/dFswXTpufXZhciBmYT1tcigoZnVuY3Rpb24odCl7dmFyIGU9TWUodCx6cik7cmV0dXJuIGUubGVuZ3RoJiZlWzBdPT09dFswXT8kaShlKTpbXX0pKSxtYT1tcigoZnVuY3Rpb24odCl7dmFyIGU9X2EodCksaT1NZSh0LHpyKTtyZXR1cm4gZT09PV9hKGkpP2U9bjppLnBvcCgpLGkubGVuZ3RoJiZpWzBdPT09dFswXT8kaShpLENvKGUsMikpOltdfSkpLGdhPW1yKChmdW5jdGlvbih0KXt2YXIgZT1fYSh0KSxpPU1lKHQsenIpO3JldHVybihlPSJmdW5jdGlvbiI9PXR5cGVvZiBlP2U6bikmJmkucG9wKCksaS5sZW5ndGgmJmlbMF09PT10WzBdPyRpKGksbixlKTpbXX0pKTtmdW5jdGlvbiBfYSh0KXt2YXIgZT1udWxsPT10PzA6dC5sZW5ndGg7cmV0dXJuIGU/dFtlLTFdOm59dmFyIHlhPW1yKHZhKTtmdW5jdGlvbiB2YSh0LGUpe3JldHVybiB0JiZ0Lmxlbmd0aCYmZSYmZS5sZW5ndGg/aHIodCxlKTp0fXZhciBiYT13bygoZnVuY3Rpb24odCxlKXt2YXIgbj1udWxsPT10PzA6dC5sZW5ndGgsaT1yaSh0LGUpO3JldHVybiBkcih0LE1lKGUsKGZ1bmN0aW9uKHQpe3JldHVybiBCbyh0LG4pPyt0OnR9KSkuc29ydChXcikpLGl9KSk7ZnVuY3Rpb24geGEodCl7cmV0dXJuIG51bGw9PXQ/dDp4bi5jYWxsKHQpfXZhciB3YT1tcigoZnVuY3Rpb24odCl7cmV0dXJuIGtyKERpKHQsMSxtcywhMCkpfSkpLFNhPW1yKChmdW5jdGlvbih0KXt2YXIgZT1fYSh0KTtyZXR1cm4gbXMoZSkmJihlPW4pLGtyKERpKHQsMSxtcywhMCksQ28oZSwyKSl9KSksTWE9bXIoKGZ1bmN0aW9uKHQpe3ZhciBlPV9hKHQpO3JldHVybiBlPSJmdW5jdGlvbiI9PXR5cGVvZiBlP2U6bixrcihEaSh0LDEsbXMsITApLG4sZSl9KSk7ZnVuY3Rpb24gRWEodCl7aWYoIXR8fCF0Lmxlbmd0aClyZXR1cm5bXTt2YXIgZT0wO3JldHVybiB0PXhlKHQsKGZ1bmN0aW9uKHQpe2lmKG1zKHQpKXJldHVybiBlPWduKHQubGVuZ3RoLGUpLCEwfSkpLEZlKGUsKGZ1bmN0aW9uKGUpe3JldHVybiBNZSh0LHplKGUpKX0pKX1mdW5jdGlvbiBUYSh0LGUpe2lmKCF0fHwhdC5sZW5ndGgpcmV0dXJuW107dmFyIGk9RWEodCk7cmV0dXJuIG51bGw9PWU/aTpNZShpLChmdW5jdGlvbih0KXtyZXR1cm4gbWUoZSxuLHQpfSkpfXZhciBBYT1tcigoZnVuY3Rpb24odCxlKXtyZXR1cm4gbXModCk/Y2kodCxlKTpbXX0pKSxDYT1tcigoZnVuY3Rpb24odCl7cmV0dXJuIE9yKHhlKHQsbXMpKX0pKSxrYT1tcigoZnVuY3Rpb24odCl7dmFyIGU9X2EodCk7cmV0dXJuIG1zKGUpJiYoZT1uKSxPcih4ZSh0LG1zKSxDbyhlLDIpKX0pKSxMYT1tcigoZnVuY3Rpb24odCl7dmFyIGU9X2EodCk7cmV0dXJuIGU9ImZ1bmN0aW9uIj09dHlwZW9mIGU/ZTpuLE9yKHhlKHQsbXMpLG4sZSl9KSksUGE9bXIoRWEpLElhPW1yKChmdW5jdGlvbih0KXt2YXIgZT10Lmxlbmd0aCxpPWU+MT90W2UtMV06bjtyZXR1cm4gaT0iZnVuY3Rpb24iPT10eXBlb2YgaT8odC5wb3AoKSxpKTpuLFRhKHQsaSl9KSk7ZnVuY3Rpb24gTmEodCl7dmFyIGU9Qm4odCk7cmV0dXJuIGUuX19jaGFpbl9fPSEwLGV9ZnVuY3Rpb24gT2EodCxlKXtyZXR1cm4gZSh0KX12YXIgUmE9d28oKGZ1bmN0aW9uKHQpe3ZhciBlPXQubGVuZ3RoLGk9ZT90WzBdOjAscj10aGlzLl9fd3JhcHBlZF9fLG89ZnVuY3Rpb24oZSl7cmV0dXJuIHJpKGUsdCl9O3JldHVybiEoZT4xfHx0aGlzLl9fYWN0aW9uc19fLmxlbmd0aCkmJnIgaW5zdGFuY2VvZiBqbiYmQm8oaSk/KChyPXIuc2xpY2UoaSwraSsoZT8xOjApKSkuX19hY3Rpb25zX18ucHVzaCh7ZnVuYzpPYSxhcmdzOltvXSx0aGlzQXJnOm59KSxuZXcgVm4ocix0aGlzLl9fY2hhaW5fXykudGhydSgoZnVuY3Rpb24odCl7cmV0dXJuIGUmJiF0Lmxlbmd0aCYmdC5wdXNoKG4pLHR9KSkpOnRoaXMudGhydShvKX0pKSx6YT1LcigoZnVuY3Rpb24odCxlLG4pe0l0LmNhbGwodCxuKT8rK3Rbbl06aWkodCxuLDEpfSkpLERhPWlvKHVhKSxCYT1pbyhoYSk7ZnVuY3Rpb24gSGEodCxlKXtyZXR1cm4oaHModCk/X2U6SWkpKHQsQ28oZSwzKSl9ZnVuY3Rpb24gRmEodCxlKXtyZXR1cm4oaHModCk/eWU6TmkpKHQsQ28oZSwzKSl9dmFyIFZhPUtyKChmdW5jdGlvbih0LGUsbil7SXQuY2FsbCh0LG4pP3Rbbl0ucHVzaChlKTppaSh0LG4sW2VdKX0pKSxqYT1tcigoZnVuY3Rpb24odCxlLG4pe3ZhciBpPS0xLHI9ImZ1bmN0aW9uIj09dHlwZW9mIGUsbz1mcyh0KT92dCh0Lmxlbmd0aCk6W107cmV0dXJuIElpKHQsKGZ1bmN0aW9uKHQpe29bKytpXT1yP21lKGUsdCxuKTpLaSh0LGUsbil9KSksb30pKSxVYT1LcigoZnVuY3Rpb24odCxlLG4pe2lpKHQsbixlKX0pKTtmdW5jdGlvbiBHYSh0LGUpe3JldHVybihocyh0KT9NZTpycikodCxDbyhlLDMpKX12YXIgV2E9S3IoKGZ1bmN0aW9uKHQsZSxuKXt0W24/MDoxXS5wdXNoKGUpfSksKGZ1bmN0aW9uKCl7cmV0dXJuW1tdLFtdXX0pKSxxYT1tcigoZnVuY3Rpb24odCxlKXtpZihudWxsPT10KXJldHVybltdO3ZhciBuPWUubGVuZ3RoO3JldHVybiBuPjEmJkhvKHQsZVswXSxlWzFdKT9lPVtdOm4+MiYmSG8oZVswXSxlWzFdLGVbMl0pJiYoZT1bZVswXV0pLGNyKHQsRGkoZSwxKSxbXSl9KSksWWE9a2V8fGZ1bmN0aW9uKCl7cmV0dXJuIGllLkRhdGUubm93KCl9O2Z1bmN0aW9uIFhhKHQsZSxpKXtyZXR1cm4gZT1pP246ZSxfbyh0LHMsbixuLG4sbixlPXQmJm51bGw9PWU/dC5sZW5ndGg6ZSl9ZnVuY3Rpb24gJGEodCxlKXt2YXIgcjtpZigiZnVuY3Rpb24iIT10eXBlb2YgZSl0aHJvdyBuZXcgQXQoaSk7cmV0dXJuIHQ9VnModCksZnVuY3Rpb24oKXtyZXR1cm4tLXQ+MCYmKHI9ZS5hcHBseSh0aGlzLGFyZ3VtZW50cykpLHQ8PTEmJihlPW4pLHJ9fXZhciBLYT1tcigoZnVuY3Rpb24odCxlLG4pe3ZhciBpPTE7aWYobi5sZW5ndGgpe3ZhciByPXRuKG4sQW8oS2EpKTtpfD1hfXJldHVybiBfbyh0LGksZSxuLHIpfSkpLFphPW1yKChmdW5jdGlvbih0LGUsbil7dmFyIGk9MztpZihuLmxlbmd0aCl7dmFyIHI9dG4obixBbyhaYSkpO2l8PWF9cmV0dXJuIF9vKGUsaSx0LG4scil9KSk7ZnVuY3Rpb24gSmEodCxlLHIpe3ZhciBvLGEscyxsLGMsdSxoPTAsZD0hMSxwPSExLGY9ITA7aWYoImZ1bmN0aW9uIiE9dHlwZW9mIHQpdGhyb3cgbmV3IEF0KGkpO2Z1bmN0aW9uIG0oZSl7dmFyIGk9byxyPWE7cmV0dXJuIG89YT1uLGg9ZSxsPXQuYXBwbHkocixpKX1mdW5jdGlvbiBnKHQpe3JldHVybiBoPXQsYz1abyh5LGUpLGQ/bSh0KTpsfWZ1bmN0aW9uIF8odCl7dmFyIGk9dC11O3JldHVybiB1PT09bnx8aT49ZXx8aTwwfHxwJiZ0LWg+PXN9ZnVuY3Rpb24geSgpe3ZhciB0PVlhKCk7aWYoXyh0KSlyZXR1cm4gdih0KTtjPVpvKHksKGZ1bmN0aW9uIG4odCl7dmFyIG49ZS0odC11KTtyZXR1cm4gcD9fbihuLHMtKHQtaCkpOm59KSh0KSl9ZnVuY3Rpb24gdih0KXtyZXR1cm4gYz1uLGYmJm8/bSh0KToobz1hPW4sbCl9ZnVuY3Rpb24gYigpe3ZhciB0PVlhKCksaT1fKHQpO2lmKG89YXJndW1lbnRzLGE9dGhpcyx1PXQsaSl7aWYoYz09PW4pcmV0dXJuIGcodSk7aWYocClyZXR1cm4gVnIoYyksYz1abyh5LGUpLG0odSl9cmV0dXJuIGM9PT1uJiYoYz1abyh5LGUpKSxsfXJldHVybiBlPVVzKGUpfHwwLFNzKHIpJiYoZD0hIXIubGVhZGluZyxzPShwPSJtYXhXYWl0ImluIHIpP2duKFVzKHIubWF4V2FpdCl8fDAsZSk6cyxmPSJ0cmFpbGluZyJpbiByPyEhci50cmFpbGluZzpmKSxiLmNhbmNlbD1mdW5jdGlvbiB4KCl7YyE9PW4mJlZyKGMpLGg9MCxvPXU9YT1jPW59LGIuZmx1c2g9ZnVuY3Rpb24gdygpe3JldHVybiBjPT09bj9sOnYoWWEoKSl9LGJ9dmFyIFFhPW1yKChmdW5jdGlvbih0LGUpe3JldHVybiBsaSh0LDEsZSl9KSksdHM9bXIoKGZ1bmN0aW9uKHQsZSxuKXtyZXR1cm4gbGkodCxVcyhlKXx8MCxuKX0pKTtmdW5jdGlvbiBlcyh0LGUpe2lmKCJmdW5jdGlvbiIhPXR5cGVvZiB0fHxudWxsIT1lJiYiZnVuY3Rpb24iIT10eXBlb2YgZSl0aHJvdyBuZXcgQXQoaSk7dmFyIG49ZnVuY3Rpb24oKXt2YXIgaT1hcmd1bWVudHMscj1lP2UuYXBwbHkodGhpcyxpKTppWzBdLG89bi5jYWNoZTtpZihvLmhhcyhyKSlyZXR1cm4gby5nZXQocik7dmFyIGE9dC5hcHBseSh0aGlzLGkpO3JldHVybiBuLmNhY2hlPW8uc2V0KHIsYSl8fG8sYX07cmV0dXJuIG4uY2FjaGU9bmV3KGVzLkNhY2hlfHxXbiksbn1mdW5jdGlvbiBucyh0KXtpZigiZnVuY3Rpb24iIT10eXBlb2YgdCl0aHJvdyBuZXcgQXQoaSk7cmV0dXJuIGZ1bmN0aW9uKCl7dmFyIGU9YXJndW1lbnRzO3N3aXRjaChlLmxlbmd0aCl7Y2FzZSAwOnJldHVybiF0LmNhbGwodGhpcyk7Y2FzZSAxOnJldHVybiF0LmNhbGwodGhpcyxlWzBdKTtjYXNlIDI6cmV0dXJuIXQuY2FsbCh0aGlzLGVbMF0sZVsxXSk7Y2FzZSAzOnJldHVybiF0LmNhbGwodGhpcyxlWzBdLGVbMV0sZVsyXSl9cmV0dXJuIXQuYXBwbHkodGhpcyxlKX19ZXMuQ2FjaGU9V247dmFyIGlzPUhyKChmdW5jdGlvbih0LGUpe3ZhciBuPShlPTE9PWUubGVuZ3RoJiZocyhlWzBdKT9NZShlWzBdLGplKENvKCkpKTpNZShEaShlLDEpLGplKENvKCkpKSkubGVuZ3RoO3JldHVybiBtcigoZnVuY3Rpb24oaSl7Zm9yKHZhciByPS0xLG89X24oaS5sZW5ndGgsbik7KytyPG87KWlbcl09ZVtyXS5jYWxsKHRoaXMsaVtyXSk7cmV0dXJuIG1lKHQsdGhpcyxpKX0pKX0pKSxycz1tcigoZnVuY3Rpb24odCxlKXt2YXIgaT10bihlLEFvKHJzKSk7cmV0dXJuIF9vKHQsYSxuLGUsaSl9KSksb3M9bXIoKGZ1bmN0aW9uKHQsZSl7dmFyIGk9dG4oZSxBbyhvcykpO3JldHVybiBfbyh0LDY0LG4sZSxpKX0pKSxhcz13bygoZnVuY3Rpb24odCxlKXtyZXR1cm4gX28odCwyNTYsbixuLG4sZSl9KSk7ZnVuY3Rpb24gc3ModCxlKXtyZXR1cm4gdD09PWV8fHQhPXQmJmUhPWV9dmFyIGxzPWhvKHFpKSxjcz1obygoZnVuY3Rpb24odCxlKXtyZXR1cm4gdD49ZX0pKSx1cz1aaSgoZnVuY3Rpb24oKXtyZXR1cm4gYXJndW1lbnRzfSkoKSk/Wmk6ZnVuY3Rpb24odCl7cmV0dXJuIE1zKHQpJiZJdC5jYWxsKHQsImNhbGxlZSIpJiYhZWUuY2FsbCh0LCJjYWxsZWUiKX0saHM9dnQuaXNBcnJheSxkcz1jZT9qZShjZSk6ZnVuY3Rpb24gcHModCl7cmV0dXJuIE1zKHQpJiZXaSh0KT09a307ZnVuY3Rpb24gZnModCl7cmV0dXJuIG51bGwhPXQmJndzKHQubGVuZ3RoKSYmIWJzKHQpfWZ1bmN0aW9uIG1zKHQpe3JldHVybiBNcyh0KSYmZnModCl9dmFyIGdzPWRufHxVbCxfcz11ZT9qZSh1ZSk6ZnVuY3Rpb24geXModCl7cmV0dXJuIE1zKHQpJiZXaSh0KT09Z307ZnVuY3Rpb24gdnModCl7aWYoIU1zKHQpKXJldHVybiExO3ZhciBlPVdpKHQpO3JldHVybiBlPT1ffHwiW29iamVjdCBET01FeGNlcHRpb25dIj09ZXx8InN0cmluZyI9PXR5cGVvZiB0Lm1lc3NhZ2UmJiJzdHJpbmciPT10eXBlb2YgdC5uYW1lJiYhQ3ModCl9ZnVuY3Rpb24gYnModCl7aWYoIVNzKHQpKXJldHVybiExO3ZhciBlPVdpKHQpO3JldHVybiBlPT15fHxlPT12fHwiW29iamVjdCBBc3luY0Z1bmN0aW9uXSI9PWV8fCJbb2JqZWN0IFByb3h5XSI9PWV9ZnVuY3Rpb24geHModCl7cmV0dXJuIm51bWJlciI9PXR5cGVvZiB0JiZ0PT1Wcyh0KX1mdW5jdGlvbiB3cyh0KXtyZXR1cm4ibnVtYmVyIj09dHlwZW9mIHQmJnQ+LTEmJnQlMT09MCYmdDw9Y31mdW5jdGlvbiBTcyh0KXt2YXIgZT10eXBlb2YgdDtyZXR1cm4gbnVsbCE9dCYmKCJvYmplY3QiPT1lfHwiZnVuY3Rpb24iPT1lKX1mdW5jdGlvbiBNcyh0KXtyZXR1cm4gbnVsbCE9dCYmIm9iamVjdCI9PXR5cGVvZiB0fXZhciBFcz1oZT9qZShoZSk6ZnVuY3Rpb24gVHModCl7cmV0dXJuIE1zKHQpJiZPbyh0KT09Yn07ZnVuY3Rpb24gQXModCl7cmV0dXJuIm51bWJlciI9PXR5cGVvZiB0fHxNcyh0KSYmV2kodCk9PXh9ZnVuY3Rpb24gQ3ModCl7aWYoIU1zKHQpfHxXaSh0KSE9dylyZXR1cm4hMTt2YXIgZT1xdCh0KTtpZihudWxsPT09ZSlyZXR1cm4hMDt2YXIgbj1JdC5jYWxsKGUsImNvbnN0cnVjdG9yIikmJmUuY29uc3RydWN0b3I7cmV0dXJuImZ1bmN0aW9uIj09dHlwZW9mIG4mJm4gaW5zdGFuY2VvZiBuJiZQdC5jYWxsKG4pPT16dH12YXIga3M9ZGU/amUoZGUpOmZ1bmN0aW9uIExzKHQpe3JldHVybiBNcyh0KSYmV2kodCk9PU19LFBzPXBlP2plKHBlKTpmdW5jdGlvbiBJcyh0KXtyZXR1cm4gTXModCkmJk9vKHQpPT1FfTtmdW5jdGlvbiBOcyh0KXtyZXR1cm4ic3RyaW5nIj09dHlwZW9mIHR8fCFocyh0KSYmTXModCkmJldpKHQpPT1UfWZ1bmN0aW9uIE9zKHQpe3JldHVybiJzeW1ib2wiPT10eXBlb2YgdHx8TXModCkmJldpKHQpPT1BfXZhciBScz1mZT9qZShmZSk6ZnVuY3Rpb24genModCl7cmV0dXJuIE1zKHQpJiZ3cyh0Lmxlbmd0aCkmJiEhS3RbV2kodCldfSxEcz1obyhpciksQnM9aG8oKGZ1bmN0aW9uKHQsZSl7cmV0dXJuIHQ8PWV9KSk7ZnVuY3Rpb24gSHModCl7aWYoIXQpcmV0dXJuW107aWYoZnModCkpcmV0dXJuIE5zKHQpP29uKHQpOlhyKHQpO2lmKG9lJiZ0W29lXSlyZXR1cm4oZnVuY3Rpb24gZSh0KXtmb3IodmFyIGUsbj1bXTshKGU9dC5uZXh0KCkpLmRvbmU7KW4ucHVzaChlLnZhbHVlKTtyZXR1cm4gbn0pKHRbb2VdKCkpO3ZhciBuPU9vKHQpO3JldHVybihuPT1iP0plOm49PUU/ZW46cGwpKHQpfWZ1bmN0aW9uIEZzKHQpe3JldHVybiB0Pyh0PVVzKHQpKT09PWx8fHQ9PT0tMS8wPzE3OTc2OTMxMzQ4NjIzMTU3ZTI5MioodDwwPy0xOjEpOnQ9PXQ/dDowOjA9PT10P3Q6MH1mdW5jdGlvbiBWcyh0KXt2YXIgZT1Gcyh0KSxuPWUlMTtyZXR1cm4gZT09ZT9uP2UtbjplOjB9ZnVuY3Rpb24ganModCl7cmV0dXJuIHQ/b2koVnModCksMCxoKTowfWZ1bmN0aW9uIFVzKHQpe2lmKCJudW1iZXIiPT10eXBlb2YgdClyZXR1cm4gdDtpZihPcyh0KSlyZXR1cm4gdTtpZihTcyh0KSl7dmFyIGU9ImZ1bmN0aW9uIj09dHlwZW9mIHQudmFsdWVPZj90LnZhbHVlT2YoKTp0O3Q9U3MoZSk/ZSsiIjplfWlmKCJzdHJpbmciIT10eXBlb2YgdClyZXR1cm4gMD09PXQ/dDordDt0PVZlKHQpO3ZhciBuPWR0LnRlc3QodCk7cmV0dXJuIG58fGZ0LnRlc3QodCk/dGUodC5zbGljZSgyKSxuPzI6OCk6aHQudGVzdCh0KT91Oit0fWZ1bmN0aW9uIEdzKHQpe3JldHVybiAkcih0LG9sKHQpKX1mdW5jdGlvbiBXcyh0KXtyZXR1cm4gbnVsbD09dD8iIjpDcih0KX12YXIgcXM9WnIoKGZ1bmN0aW9uKHQsZSl7aWYoVW8oZSl8fGZzKGUpKSRyKGUscmwoZSksdCk7ZWxzZSBmb3IodmFyIG4gaW4gZSlJdC5jYWxsKGUsbikmJlFuKHQsbixlW25dKX0pKSxZcz1acigoZnVuY3Rpb24odCxlKXskcihlLG9sKGUpLHQpfSkpLFhzPVpyKChmdW5jdGlvbih0LGUsbixpKXskcihlLG9sKGUpLHQsaSl9KSksJHM9WnIoKGZ1bmN0aW9uKHQsZSxuLGkpeyRyKGUscmwoZSksdCxpKX0pKSxLcz13byhyaSksWnM9bXIoKGZ1bmN0aW9uKHQsZSl7dD1NdCh0KTt2YXIgaT0tMSxyPWUubGVuZ3RoLG89cj4yP2VbMl06bjtmb3IobyYmSG8oZVswXSxlWzFdLG8pJiYocj0xKTsrK2k8cjspZm9yKHZhciBhPWVbaV0scz1vbChhKSxsPS0xLGM9cy5sZW5ndGg7KytsPGM7KXt2YXIgdT1zW2xdLGg9dFt1XTsoaD09PW58fHNzKGgsa3RbdV0pJiYhSXQuY2FsbCh0LHUpKSYmKHRbdV09YVt1XSl9cmV0dXJuIHR9KSksSnM9bXIoKGZ1bmN0aW9uKHQpe3JldHVybiB0LnB1c2gobix2byksbWUoc2wsbix0KX0pKTtmdW5jdGlvbiBRcyh0LGUsaSl7dmFyIHI9bnVsbD09dD9uOlVpKHQsZSk7cmV0dXJuIHI9PT1uP2k6cn1mdW5jdGlvbiB0bCh0LGUpe3JldHVybiBudWxsIT10JiZSbyh0LGUsWGkpfXZhciBlbD1hbygoZnVuY3Rpb24odCxlLG4pe251bGwhPWUmJiJmdW5jdGlvbiIhPXR5cGVvZiBlLnRvU3RyaW5nJiYoZT1SdC5jYWxsKGUpKSx0W2VdPW59KSxBbChMbCkpLG5sPWFvKChmdW5jdGlvbih0LGUsbil7bnVsbCE9ZSYmImZ1bmN0aW9uIiE9dHlwZW9mIGUudG9TdHJpbmcmJihlPVJ0LmNhbGwoZSkpLEl0LmNhbGwodCxlKT90W2VdLnB1c2gobik6dFtlXT1bbl19KSxDbyksaWw9bXIoS2kpO2Z1bmN0aW9uIHJsKHQpe3JldHVybiBmcyh0KT9Ybih0KTpucih0KX1mdW5jdGlvbiBvbCh0KXtyZXR1cm4gZnModCk/WG4odCwhMCk6KGZ1bmN0aW9uIGUodCl7aWYoIVNzKHQpKXJldHVybihmdW5jdGlvbiBlKHQpe3ZhciBlPVtdO2lmKG51bGwhPXQpZm9yKHZhciBuIGluIE10KHQpKWUucHVzaChuKTtyZXR1cm4gZX0pKHQpO3ZhciBuPVVvKHQpLGk9W107Zm9yKHZhciByIGluIHQpKCJjb25zdHJ1Y3RvciIhPXJ8fCFuJiZJdC5jYWxsKHQscikpJiZpLnB1c2gocik7cmV0dXJuIGl9KSh0KX12YXIgYWw9WnIoKGZ1bmN0aW9uKHQsZSxuKXtzcih0LGUsbil9KSksc2w9WnIoKGZ1bmN0aW9uKHQsZSxuLGkpe3NyKHQsZSxuLGkpfSkpLGxsPXdvKChmdW5jdGlvbih0LGUpe3ZhciBuPXt9O2lmKG51bGw9PXQpcmV0dXJuIG47dmFyIGk9ITE7ZT1NZShlLChmdW5jdGlvbihlKXtyZXR1cm4gZT1CcihlLHQpLGl8fChpPWUubGVuZ3RoPjEpLGV9KSksJHIodCxNbyh0KSxuKSxpJiYobj1haShuLDcsYm8pKTtmb3IodmFyIHI9ZS5sZW5ndGg7ci0tOylMcihuLGVbcl0pO3JldHVybiBufSkpLGNsPXdvKChmdW5jdGlvbih0LGUpe3JldHVybiBudWxsPT10P3t9OihmdW5jdGlvbiBuKHQsZSl7cmV0dXJuIHVyKHQsZSwoZnVuY3Rpb24oZSxuKXtyZXR1cm4gdGwodCxuKX0pKX0pKHQsZSl9KSk7ZnVuY3Rpb24gdWwodCxlKXtpZihudWxsPT10KXJldHVybnt9O3ZhciBuPU1lKE1vKHQpLChmdW5jdGlvbih0KXtyZXR1cm5bdF19KSk7cmV0dXJuIGU9Q28oZSksdXIodCxuLChmdW5jdGlvbih0LG4pe3JldHVybiBlKHQsblswXSl9KSl9dmFyIGhsPWdvKHJsKSxkbD1nbyhvbCk7ZnVuY3Rpb24gcGwodCl7cmV0dXJuIG51bGw9PXQ/W106VWUodCxybCh0KSl9dmFyIGZsPWVvKChmdW5jdGlvbih0LGUsbil7cmV0dXJuIGU9ZS50b0xvd2VyQ2FzZSgpLHQrKG4/bWwoZSk6ZSl9KSk7ZnVuY3Rpb24gbWwodCl7cmV0dXJuIFNsKFdzKHQpLnRvTG93ZXJDYXNlKCkpfWZ1bmN0aW9uIGdsKHQpe3JldHVybih0PVdzKHQpKSYmdC5yZXBsYWNlKGd0LFhlKS5yZXBsYWNlKFV0LCIiKX12YXIgX2w9ZW8oKGZ1bmN0aW9uKHQsZSxuKXtyZXR1cm4gdCsobj8iLSI6IiIpK2UudG9Mb3dlckNhc2UoKX0pKSx5bD1lbygoZnVuY3Rpb24odCxlLG4pe3JldHVybiB0KyhuPyIgIjoiIikrZS50b0xvd2VyQ2FzZSgpfSkpLHZsPXRvKCJ0b0xvd2VyQ2FzZSIpLGJsPWVvKChmdW5jdGlvbih0LGUsbil7cmV0dXJuIHQrKG4/Il8iOiIiKStlLnRvTG93ZXJDYXNlKCl9KSkseGw9ZW8oKGZ1bmN0aW9uKHQsZSxuKXtyZXR1cm4gdCsobj8iICI6IiIpK1NsKGUpfSkpLHdsPWVvKChmdW5jdGlvbih0LGUsbil7cmV0dXJuIHQrKG4/IiAiOiIiKStlLnRvVXBwZXJDYXNlKCl9KSksU2w9dG8oInRvVXBwZXJDYXNlIik7ZnVuY3Rpb24gTWwodCxlLGkpe3JldHVybiB0PVdzKHQpLChlPWk/bjplKT09PW4/KGZ1bmN0aW9uIHIodCl7cmV0dXJuIFl0LnRlc3QodCl9KSh0KT8oZnVuY3Rpb24gbyh0KXtyZXR1cm4gdC5tYXRjaChXdCl8fFtdfSkodCk6KGZ1bmN0aW9uIGEodCl7cmV0dXJuIHQubWF0Y2goYXQpfHxbXX0pKHQpOnQubWF0Y2goZSl8fFtdfXZhciBFbD1tcigoZnVuY3Rpb24odCxlKXt0cnl7cmV0dXJuIG1lKHQsbixlKX1jYXRjaCh0KXtyZXR1cm4gdnModCk/dDpuZXcgeHQodCl9fSkpLFRsPXdvKChmdW5jdGlvbih0LGUpe3JldHVybiBfZShlLChmdW5jdGlvbihlKXtlPXJhKGUpLGlpKHQsZSxLYSh0W2VdLHQpKX0pKSx0fSkpO2Z1bmN0aW9uIEFsKHQpe3JldHVybiBmdW5jdGlvbigpe3JldHVybiB0fX12YXIgQ2w9cm8oKSxrbD1ybyghMCk7ZnVuY3Rpb24gTGwodCl7cmV0dXJuIHR9ZnVuY3Rpb24gUGwodCl7cmV0dXJuIGVyKCJmdW5jdGlvbiI9PXR5cGVvZiB0P3Q6YWkodCwxKSl9dmFyIElsPW1yKChmdW5jdGlvbih0LGUpe3JldHVybiBmdW5jdGlvbihuKXtyZXR1cm4gS2kobix0LGUpfX0pKSxObD1tcigoZnVuY3Rpb24odCxlKXtyZXR1cm4gZnVuY3Rpb24obil7cmV0dXJuIEtpKHQsbixlKX19KSk7ZnVuY3Rpb24gT2wodCxlLG4pe3ZhciBpPXJsKGUpLHI9amkoZSxpKTtudWxsIT1ufHxTcyhlKSYmKHIubGVuZ3RofHwhaS5sZW5ndGgpfHwobj1lLGU9dCx0PXRoaXMscj1qaShlLHJsKGUpKSk7dmFyIG89IShTcyhuKSYmImNoYWluImluIG4mJiFuLmNoYWluKSxhPWJzKHQpO3JldHVybiBfZShyLChmdW5jdGlvbihuKXt2YXIgaT1lW25dO3Rbbl09aSxhJiYodC5wcm90b3R5cGVbbl09ZnVuY3Rpb24oKXt2YXIgZT10aGlzLl9fY2hhaW5fXztpZihvfHxlKXt2YXIgbj10KHRoaXMuX193cmFwcGVkX18pLHI9bi5fX2FjdGlvbnNfXz1Ycih0aGlzLl9fYWN0aW9uc19fKTtyZXR1cm4gci5wdXNoKHtmdW5jOmksYXJnczphcmd1bWVudHMsdGhpc0FyZzp0fSksbi5fX2NoYWluX189ZSxufXJldHVybiBpLmFwcGx5KHQsRWUoW3RoaXMudmFsdWUoKV0sYXJndW1lbnRzKSl9KX0pKSx0fWZ1bmN0aW9uIFJsKCl7fXZhciB6bD1sbyhNZSksRGw9bG8oYmUpLEJsPWxvKENlKTtmdW5jdGlvbiBIbCh0KXtyZXR1cm4gRm8odCk/emUocmEodCkpOihmdW5jdGlvbiBlKHQpe3JldHVybiBmdW5jdGlvbihlKXtyZXR1cm4gVWkoZSx0KX19KSh0KX12YXIgRmw9dW8oKSxWbD11byghMCk7ZnVuY3Rpb24gamwoKXtyZXR1cm5bXX1mdW5jdGlvbiBVbCgpe3JldHVybiExfXZhciBHbCxXbD1zbygoZnVuY3Rpb24odCxlKXtyZXR1cm4gdCtlfSksMCkscWw9Zm8oImNlaWwiKSxZbD1zbygoZnVuY3Rpb24odCxlKXtyZXR1cm4gdC9lfSksMSksWGw9Zm8oImZsb29yIiksJGw9c28oKGZ1bmN0aW9uKHQsZSl7cmV0dXJuIHQqZX0pLDEpLEtsPWZvKCJyb3VuZCIpLFpsPXNvKChmdW5jdGlvbih0LGUpe3JldHVybiB0LWV9KSwwKTtyZXR1cm4gQm4uYWZ0ZXI9ZnVuY3Rpb24gSmwodCxlKXtpZigiZnVuY3Rpb24iIT10eXBlb2YgZSl0aHJvdyBuZXcgQXQoaSk7cmV0dXJuIHQ9VnModCksZnVuY3Rpb24oKXtpZigtLXQ8MSlyZXR1cm4gZS5hcHBseSh0aGlzLGFyZ3VtZW50cyl9fSxCbi5hcnk9WGEsQm4uYXNzaWduPXFzLEJuLmFzc2lnbkluPVlzLEJuLmFzc2lnbkluV2l0aD1YcyxCbi5hc3NpZ25XaXRoPSRzLEJuLmF0PUtzLEJuLmJlZm9yZT0kYSxCbi5iaW5kPUthLEJuLmJpbmRBbGw9VGwsQm4uYmluZEtleT1aYSxCbi5jYXN0QXJyYXk9ZnVuY3Rpb24gUWwoKXtpZighYXJndW1lbnRzLmxlbmd0aClyZXR1cm5bXTt2YXIgdD1hcmd1bWVudHNbMF07cmV0dXJuIGhzKHQpP3Q6W3RdfSxCbi5jaGFpbj1OYSxCbi5jaHVuaz1mdW5jdGlvbiB0Yyh0LGUsaSl7ZT0oaT9Ibyh0LGUsaSk6ZT09PW4pPzE6Z24oVnMoZSksMCk7dmFyIHI9bnVsbD09dD8wOnQubGVuZ3RoO2lmKCFyfHxlPDEpcmV0dXJuW107Zm9yKHZhciBvPTAsYT0wLHM9dnQoY24oci9lKSk7bzxyOylzW2ErK109d3IodCxvLG8rPWUpO3JldHVybiBzfSxCbi5jb21wYWN0PWZ1bmN0aW9uIGVjKHQpe2Zvcih2YXIgZT0tMSxuPW51bGw9PXQ/MDp0Lmxlbmd0aCxpPTAscj1bXTsrK2U8bjspe3ZhciBvPXRbZV07byYmKHJbaSsrXT1vKX1yZXR1cm4gcn0sQm4uY29uY2F0PWZ1bmN0aW9uIG5jKCl7dmFyIHQ9YXJndW1lbnRzLmxlbmd0aDtpZighdClyZXR1cm5bXTtmb3IodmFyIGU9dnQodC0xKSxuPWFyZ3VtZW50c1swXSxpPXQ7aS0tOyllW2ktMV09YXJndW1lbnRzW2ldO3JldHVybiBFZShocyhuKT9YcihuKTpbbl0sRGkoZSwxKSl9LEJuLmNvbmQ9ZnVuY3Rpb24gaWModCl7dmFyIGU9bnVsbD09dD8wOnQubGVuZ3RoLG49Q28oKTtyZXR1cm4gdD1lP01lKHQsKGZ1bmN0aW9uKHQpe2lmKCJmdW5jdGlvbiIhPXR5cGVvZiB0WzFdKXRocm93IG5ldyBBdChpKTtyZXR1cm5bbih0WzBdKSx0WzFdXX0pKTpbXSxtcigoZnVuY3Rpb24obil7Zm9yKHZhciBpPS0xOysraTxlOyl7dmFyIHI9dFtpXTtpZihtZShyWzBdLHRoaXMsbikpcmV0dXJuIG1lKHJbMV0sdGhpcyxuKX19KSl9LEJuLmNvbmZvcm1zPWZ1bmN0aW9uIHJjKHQpe3JldHVybihmdW5jdGlvbiBlKHQpe3ZhciBlPXJsKHQpO3JldHVybiBmdW5jdGlvbihuKXtyZXR1cm4gc2kobix0LGUpfX0pKGFpKHQsMSkpfSxCbi5jb25zdGFudD1BbCxCbi5jb3VudEJ5PXphLEJuLmNyZWF0ZT1mdW5jdGlvbiBvYyh0LGUpe3ZhciBuPUhuKHQpO3JldHVybiBudWxsPT1lP246bmkobixlKX0sQm4uY3Vycnk9ZnVuY3Rpb24gdChlLGkscil7dmFyIG89X28oZSw4LG4sbixuLG4sbixpPXI/bjppKTtyZXR1cm4gby5wbGFjZWhvbGRlcj10LnBsYWNlaG9sZGVyLG99LEJuLmN1cnJ5UmlnaHQ9ZnVuY3Rpb24gdChlLGkscil7dmFyIG89X28oZSwxNixuLG4sbixuLG4saT1yP246aSk7cmV0dXJuIG8ucGxhY2Vob2xkZXI9dC5wbGFjZWhvbGRlcixvfSxCbi5kZWJvdW5jZT1KYSxCbi5kZWZhdWx0cz1acyxCbi5kZWZhdWx0c0RlZXA9SnMsQm4uZGVmZXI9UWEsQm4uZGVsYXk9dHMsQm4uZGlmZmVyZW5jZT1zYSxCbi5kaWZmZXJlbmNlQnk9bGEsQm4uZGlmZmVyZW5jZVdpdGg9Y2EsQm4uZHJvcD1mdW5jdGlvbiBhYyh0LGUsaSl7dmFyIHI9bnVsbD09dD8wOnQubGVuZ3RoO3JldHVybiByP3dyKHQsKGU9aXx8ZT09PW4/MTpWcyhlKSk8MD8wOmUscik6W119LEJuLmRyb3BSaWdodD1mdW5jdGlvbiBzYyh0LGUsaSl7dmFyIHI9bnVsbD09dD8wOnQubGVuZ3RoO3JldHVybiByP3dyKHQsMCwoZT1yLShlPWl8fGU9PT1uPzE6VnMoZSkpKTwwPzA6ZSk6W119LEJuLmRyb3BSaWdodFdoaWxlPWZ1bmN0aW9uIGxjKHQsZSl7cmV0dXJuIHQmJnQubGVuZ3RoP0lyKHQsQ28oZSwzKSwhMCwhMCk6W119LEJuLmRyb3BXaGlsZT1mdW5jdGlvbiBjYyh0LGUpe3JldHVybiB0JiZ0Lmxlbmd0aD9Jcih0LENvKGUsMyksITApOltdfSxCbi5maWxsPWZ1bmN0aW9uIHVjKHQsZSxpLHIpe3ZhciBvPW51bGw9PXQ/MDp0Lmxlbmd0aDtyZXR1cm4gbz8oaSYmIm51bWJlciIhPXR5cGVvZiBpJiZIbyh0LGUsaSkmJihpPTAscj1vKSwoZnVuY3Rpb24gYSh0LGUsaSxyKXt2YXIgbz10Lmxlbmd0aDtmb3IoKGk9VnMoaSkpPDAmJihpPS1pPm8/MDpvK2kpLChyPXI9PT1ufHxyPm8/bzpWcyhyKSk8MCYmKHIrPW8pLHI9aT5yPzA6anMocik7aTxyOyl0W2krK109ZTtyZXR1cm4gdH0pKHQsZSxpLHIpKTpbXX0sQm4uZmlsdGVyPWZ1bmN0aW9uIGhjKHQsZSl7cmV0dXJuKGhzKHQpP3hlOnppKSh0LENvKGUsMykpfSxCbi5mbGF0TWFwPWZ1bmN0aW9uIGRjKHQsZSl7cmV0dXJuIERpKEdhKHQsZSksMSl9LEJuLmZsYXRNYXBEZWVwPWZ1bmN0aW9uIHBjKHQsZSl7cmV0dXJuIERpKEdhKHQsZSksbCl9LEJuLmZsYXRNYXBEZXB0aD1mdW5jdGlvbiBmYyh0LGUsaSl7cmV0dXJuIGk9aT09PW4/MTpWcyhpKSxEaShHYSh0LGUpLGkpfSxCbi5mbGF0dGVuPWRhLEJuLmZsYXR0ZW5EZWVwPWZ1bmN0aW9uIG1jKHQpe3JldHVybiBudWxsIT10JiZ0Lmxlbmd0aD9EaSh0LGwpOltdfSxCbi5mbGF0dGVuRGVwdGg9ZnVuY3Rpb24gZ2ModCxlKXtyZXR1cm4gbnVsbCE9dCYmdC5sZW5ndGg/RGkodCxlPWU9PT1uPzE6VnMoZSkpOltdfSxCbi5mbGlwPWZ1bmN0aW9uIF9jKHQpe3JldHVybiBfbyh0LDUxMil9LEJuLmZsb3c9Q2wsQm4uZmxvd1JpZ2h0PWtsLEJuLmZyb21QYWlycz1mdW5jdGlvbiB5Yyh0KXtmb3IodmFyIGU9LTEsbj1udWxsPT10PzA6dC5sZW5ndGgsaT17fTsrK2U8bjspe3ZhciByPXRbZV07aVtyWzBdXT1yWzFdfXJldHVybiBpfSxCbi5mdW5jdGlvbnM9ZnVuY3Rpb24gdmModCl7cmV0dXJuIG51bGw9PXQ/W106amkodCxybCh0KSl9LEJuLmZ1bmN0aW9uc0luPWZ1bmN0aW9uIGJjKHQpe3JldHVybiBudWxsPT10P1tdOmppKHQsb2wodCkpfSxCbi5ncm91cEJ5PVZhLEJuLmluaXRpYWw9ZnVuY3Rpb24geGModCl7cmV0dXJuIG51bGwhPXQmJnQubGVuZ3RoP3dyKHQsMCwtMSk6W119LEJuLmludGVyc2VjdGlvbj1mYSxCbi5pbnRlcnNlY3Rpb25CeT1tYSxCbi5pbnRlcnNlY3Rpb25XaXRoPWdhLEJuLmludmVydD1lbCxCbi5pbnZlcnRCeT1ubCxCbi5pbnZva2VNYXA9amEsQm4uaXRlcmF0ZWU9UGwsQm4ua2V5Qnk9VWEsQm4ua2V5cz1ybCxCbi5rZXlzSW49b2wsQm4ubWFwPUdhLEJuLm1hcEtleXM9ZnVuY3Rpb24gd2ModCxlKXt2YXIgbj17fTtyZXR1cm4gZT1DbyhlLDMpLEZpKHQsKGZ1bmN0aW9uKHQsaSxyKXtpaShuLGUodCxpLHIpLHQpfSkpLG59LEJuLm1hcFZhbHVlcz1mdW5jdGlvbiBTYyh0LGUpe3ZhciBuPXt9O3JldHVybiBlPUNvKGUsMyksRmkodCwoZnVuY3Rpb24odCxpLHIpe2lpKG4saSxlKHQsaSxyKSl9KSksbn0sQm4ubWF0Y2hlcz1mdW5jdGlvbiBNYyh0KXtyZXR1cm4gb3IoYWkodCwxKSl9LEJuLm1hdGNoZXNQcm9wZXJ0eT1mdW5jdGlvbiBFYyh0LGUpe3JldHVybiBhcih0LGFpKGUsMSkpfSxCbi5tZW1vaXplPWVzLEJuLm1lcmdlPWFsLEJuLm1lcmdlV2l0aD1zbCxCbi5tZXRob2Q9SWwsQm4ubWV0aG9kT2Y9TmwsQm4ubWl4aW49T2wsQm4ubmVnYXRlPW5zLEJuLm50aEFyZz1mdW5jdGlvbiBUYyh0KXtyZXR1cm4gdD1Wcyh0KSxtcigoZnVuY3Rpb24oZSl7cmV0dXJuIGxyKGUsdCl9KSl9LEJuLm9taXQ9bGwsQm4ub21pdEJ5PWZ1bmN0aW9uIEFjKHQsZSl7cmV0dXJuIHVsKHQsbnMoQ28oZSkpKX0sQm4ub25jZT1mdW5jdGlvbiBDYyh0KXtyZXR1cm4gJGEoMix0KX0sQm4ub3JkZXJCeT1mdW5jdGlvbiBrYyh0LGUsaSxyKXtyZXR1cm4gbnVsbD09dD9bXTooaHMoZSl8fChlPW51bGw9PWU/W106W2VdKSxocyhpPXI/bjppKXx8KGk9bnVsbD09aT9bXTpbaV0pLGNyKHQsZSxpKSl9LEJuLm92ZXI9emwsQm4ub3ZlckFyZ3M9aXMsQm4ub3ZlckV2ZXJ5PURsLEJuLm92ZXJTb21lPUJsLEJuLnBhcnRpYWw9cnMsQm4ucGFydGlhbFJpZ2h0PW9zLEJuLnBhcnRpdGlvbj1XYSxCbi5waWNrPWNsLEJuLnBpY2tCeT11bCxCbi5wcm9wZXJ0eT1IbCxCbi5wcm9wZXJ0eU9mPWZ1bmN0aW9uIExjKHQpe3JldHVybiBmdW5jdGlvbihlKXtyZXR1cm4gbnVsbD09dD9uOlVpKHQsZSl9fSxCbi5wdWxsPXlhLEJuLnB1bGxBbGw9dmEsQm4ucHVsbEFsbEJ5PWZ1bmN0aW9uIFBjKHQsZSxuKXtyZXR1cm4gdCYmdC5sZW5ndGgmJmUmJmUubGVuZ3RoP2hyKHQsZSxDbyhuLDIpKTp0fSxCbi5wdWxsQWxsV2l0aD1mdW5jdGlvbiBJYyh0LGUsaSl7cmV0dXJuIHQmJnQubGVuZ3RoJiZlJiZlLmxlbmd0aD9ocih0LGUsbixpKTp0fSxCbi5wdWxsQXQ9YmEsQm4ucmFuZ2U9RmwsQm4ucmFuZ2VSaWdodD1WbCxCbi5yZWFyZz1hcyxCbi5yZWplY3Q9ZnVuY3Rpb24gTmModCxlKXtyZXR1cm4oaHModCk/eGU6emkpKHQsbnMoQ28oZSwzKSkpfSxCbi5yZW1vdmU9ZnVuY3Rpb24gT2ModCxlKXt2YXIgbj1bXTtpZighdHx8IXQubGVuZ3RoKXJldHVybiBuO3ZhciBpPS0xLHI9W10sbz10Lmxlbmd0aDtmb3IoZT1DbyhlLDMpOysraTxvOyl7dmFyIGE9dFtpXTtlKGEsaSx0KSYmKG4ucHVzaChhKSxyLnB1c2goaSkpfXJldHVybiBkcih0LHIpLG59LEJuLnJlc3Q9ZnVuY3Rpb24gUmModCxlKXtpZigiZnVuY3Rpb24iIT10eXBlb2YgdCl0aHJvdyBuZXcgQXQoaSk7cmV0dXJuIG1yKHQsZT1lPT09bj9lOlZzKGUpKX0sQm4ucmV2ZXJzZT14YSxCbi5zYW1wbGVTaXplPWZ1bmN0aW9uIHpjKHQsZSxpKXtyZXR1cm4gZT0oaT9Ibyh0LGUsaSk6ZT09PW4pPzE6VnMoZSksKGhzKHQpP0tuOl9yKSh0LGUpfSxCbi5zZXQ9ZnVuY3Rpb24gRGModCxlLG4pe3JldHVybiBudWxsPT10P3Q6eXIodCxlLG4pfSxCbi5zZXRXaXRoPWZ1bmN0aW9uIEJjKHQsZSxpLHIpe3JldHVybiByPSJmdW5jdGlvbiI9PXR5cGVvZiByP3I6bixudWxsPT10P3Q6eXIodCxlLGkscil9LEJuLnNodWZmbGU9ZnVuY3Rpb24gSGModCl7cmV0dXJuKGhzKHQpP1puOnhyKSh0KX0sQm4uc2xpY2U9ZnVuY3Rpb24gRmModCxlLGkpe3ZhciByPW51bGw9PXQ/MDp0Lmxlbmd0aDtyZXR1cm4gcj8oaSYmIm51bWJlciIhPXR5cGVvZiBpJiZIbyh0LGUsaSk/KGU9MCxpPXIpOihlPW51bGw9PWU/MDpWcyhlKSxpPWk9PT1uP3I6VnMoaSkpLHdyKHQsZSxpKSk6W119LEJuLnNvcnRCeT1xYSxCbi5zb3J0ZWRVbmlxPWZ1bmN0aW9uIFZjKHQpe3JldHVybiB0JiZ0Lmxlbmd0aD9Ucih0KTpbXX0sQm4uc29ydGVkVW5pcUJ5PWZ1bmN0aW9uIGpjKHQsZSl7cmV0dXJuIHQmJnQubGVuZ3RoP1RyKHQsQ28oZSwyKSk6W119LEJuLnNwbGl0PWZ1bmN0aW9uIFVjKHQsZSxpKXtyZXR1cm4gaSYmIm51bWJlciIhPXR5cGVvZiBpJiZIbyh0LGUsaSkmJihlPWk9biksKGk9aT09PW4/aDppPj4+MCk/KHQ9V3ModCkpJiYoInN0cmluZyI9PXR5cGVvZiBlfHxudWxsIT1lJiYha3MoZSkpJiYhKGU9Q3IoZSkpJiZaZSh0KT9Gcihvbih0KSwwLGkpOnQuc3BsaXQoZSxpKTpbXX0sQm4uc3ByZWFkPWZ1bmN0aW9uIEdjKHQsZSl7aWYoImZ1bmN0aW9uIiE9dHlwZW9mIHQpdGhyb3cgbmV3IEF0KGkpO3JldHVybiBlPW51bGw9PWU/MDpnbihWcyhlKSwwKSxtcigoZnVuY3Rpb24obil7dmFyIGk9bltlXSxyPUZyKG4sMCxlKTtyZXR1cm4gaSYmRWUocixpKSxtZSh0LHRoaXMscil9KSl9LEJuLnRhaWw9ZnVuY3Rpb24gV2ModCl7dmFyIGU9bnVsbD09dD8wOnQubGVuZ3RoO3JldHVybiBlP3dyKHQsMSxlKTpbXX0sQm4udGFrZT1mdW5jdGlvbiBxYyh0LGUsaSl7cmV0dXJuIHQmJnQubGVuZ3RoP3dyKHQsMCwoZT1pfHxlPT09bj8xOlZzKGUpKTwwPzA6ZSk6W119LEJuLnRha2VSaWdodD1mdW5jdGlvbiBZYyh0LGUsaSl7dmFyIHI9bnVsbD09dD8wOnQubGVuZ3RoO3JldHVybiByP3dyKHQsKGU9ci0oZT1pfHxlPT09bj8xOlZzKGUpKSk8MD8wOmUscik6W119LEJuLnRha2VSaWdodFdoaWxlPWZ1bmN0aW9uIFhjKHQsZSl7cmV0dXJuIHQmJnQubGVuZ3RoP0lyKHQsQ28oZSwzKSwhMSwhMCk6W119LEJuLnRha2VXaGlsZT1mdW5jdGlvbiAkYyh0LGUpe3JldHVybiB0JiZ0Lmxlbmd0aD9Jcih0LENvKGUsMykpOltdfSxCbi50YXA9ZnVuY3Rpb24gS2ModCxlKXtyZXR1cm4gZSh0KSx0fSxCbi50aHJvdHRsZT1mdW5jdGlvbiBaYyh0LGUsbil7dmFyIHI9ITAsbz0hMDtpZigiZnVuY3Rpb24iIT10eXBlb2YgdCl0aHJvdyBuZXcgQXQoaSk7cmV0dXJuIFNzKG4pJiYocj0ibGVhZGluZyJpbiBuPyEhbi5sZWFkaW5nOnIsbz0idHJhaWxpbmciaW4gbj8hIW4udHJhaWxpbmc6byksSmEodCxlLHtsZWFkaW5nOnIsbWF4V2FpdDplLHRyYWlsaW5nOm99KX0sQm4udGhydT1PYSxCbi50b0FycmF5PUhzLEJuLnRvUGFpcnM9aGwsQm4udG9QYWlyc0luPWRsLEJuLnRvUGF0aD1mdW5jdGlvbiBKYyh0KXtyZXR1cm4gaHModCk/TWUodCxyYSk6T3ModCk/W3RdOlhyKG5hKFdzKHQpKSl9LEJuLnRvUGxhaW5PYmplY3Q9R3MsQm4udHJhbnNmb3JtPWZ1bmN0aW9uIFFjKHQsZSxuKXt2YXIgaT1ocyh0KSxyPWl8fGdzKHQpfHxScyh0KTtpZihlPUNvKGUsNCksbnVsbD09bil7dmFyIG89dCYmdC5jb25zdHJ1Y3RvcjtuPXI/aT9uZXcgbzpbXTpTcyh0KSYmYnMobyk/SG4ocXQodCkpOnt9fXJldHVybihyP19lOkZpKSh0LChmdW5jdGlvbih0LGkscil7cmV0dXJuIGUobix0LGkscil9KSksbn0sQm4udW5hcnk9ZnVuY3Rpb24gdHUodCl7cmV0dXJuIFhhKHQsMSl9LEJuLnVuaW9uPXdhLEJuLnVuaW9uQnk9U2EsQm4udW5pb25XaXRoPU1hLEJuLnVuaXE9ZnVuY3Rpb24gZXUodCl7cmV0dXJuIHQmJnQubGVuZ3RoP2tyKHQpOltdfSxCbi51bmlxQnk9ZnVuY3Rpb24gbnUodCxlKXtyZXR1cm4gdCYmdC5sZW5ndGg/a3IodCxDbyhlLDIpKTpbXX0sQm4udW5pcVdpdGg9ZnVuY3Rpb24gaXUodCxlKXtyZXR1cm4gZT0iZnVuY3Rpb24iPT10eXBlb2YgZT9lOm4sdCYmdC5sZW5ndGg/a3IodCxuLGUpOltdfSxCbi51bnNldD1mdW5jdGlvbiBydSh0LGUpe3JldHVybiBudWxsPT10fHxMcih0LGUpfSxCbi51bnppcD1FYSxCbi51bnppcFdpdGg9VGEsQm4udXBkYXRlPWZ1bmN0aW9uIG91KHQsZSxuKXtyZXR1cm4gbnVsbD09dD90OlByKHQsZSxEcihuKSl9LEJuLnVwZGF0ZVdpdGg9ZnVuY3Rpb24gYXUodCxlLGkscil7cmV0dXJuIHI9ImZ1bmN0aW9uIj09dHlwZW9mIHI/cjpuLG51bGw9PXQ/dDpQcih0LGUsRHIoaSkscil9LEJuLnZhbHVlcz1wbCxCbi52YWx1ZXNJbj1mdW5jdGlvbiBzdSh0KXtyZXR1cm4gbnVsbD09dD9bXTpVZSh0LG9sKHQpKX0sQm4ud2l0aG91dD1BYSxCbi53b3Jkcz1NbCxCbi53cmFwPWZ1bmN0aW9uIGx1KHQsZSl7cmV0dXJuIHJzKERyKGUpLHQpfSxCbi54b3I9Q2EsQm4ueG9yQnk9a2EsQm4ueG9yV2l0aD1MYSxCbi56aXA9UGEsQm4uemlwT2JqZWN0PWZ1bmN0aW9uIGN1KHQsZSl7cmV0dXJuIFJyKHR8fFtdLGV8fFtdLFFuKX0sQm4uemlwT2JqZWN0RGVlcD1mdW5jdGlvbiB1dSh0LGUpe3JldHVybiBScih0fHxbXSxlfHxbXSx5cil9LEJuLnppcFdpdGg9SWEsQm4uZW50cmllcz1obCxCbi5lbnRyaWVzSW49ZGwsQm4uZXh0ZW5kPVlzLEJuLmV4dGVuZFdpdGg9WHMsT2woQm4sQm4pLEJuLmFkZD1XbCxCbi5hdHRlbXB0PUVsLEJuLmNhbWVsQ2FzZT1mbCxCbi5jYXBpdGFsaXplPW1sLEJuLmNlaWw9cWwsQm4uY2xhbXA9ZnVuY3Rpb24gaHUodCxlLGkpe3JldHVybiBpPT09biYmKGk9ZSxlPW4pLGkhPT1uJiYoaT0oaT1VcyhpKSk9PWk/aTowKSxlIT09biYmKGU9KGU9VXMoZSkpPT1lP2U6MCksb2koVXModCksZSxpKX0sQm4uY2xvbmU9ZnVuY3Rpb24gZHUodCl7cmV0dXJuIGFpKHQsNCl9LEJuLmNsb25lRGVlcD1mdW5jdGlvbiBwdSh0KXtyZXR1cm4gYWkodCw1KX0sQm4uY2xvbmVEZWVwV2l0aD1mdW5jdGlvbiBmdSh0LGUpe3JldHVybiBhaSh0LDUsZT0iZnVuY3Rpb24iPT10eXBlb2YgZT9lOm4pfSxCbi5jbG9uZVdpdGg9ZnVuY3Rpb24gbXUodCxlKXtyZXR1cm4gYWkodCw0LGU9ImZ1bmN0aW9uIj09dHlwZW9mIGU/ZTpuKX0sQm4uY29uZm9ybXNUbz1mdW5jdGlvbiBndSh0LGUpe3JldHVybiBudWxsPT1lfHxzaSh0LGUscmwoZSkpfSxCbi5kZWJ1cnI9Z2wsQm4uZGVmYXVsdFRvPWZ1bmN0aW9uIF91KHQsZSl7cmV0dXJuIG51bGw9PXR8fHQhPXQ/ZTp0fSxCbi5kaXZpZGU9WWwsQm4uZW5kc1dpdGg9ZnVuY3Rpb24geXUodCxlLGkpe3Q9V3ModCksZT1DcihlKTt2YXIgcj10Lmxlbmd0aCxvPWk9aT09PW4/cjpvaShWcyhpKSwwLHIpO3JldHVybihpLT1lLmxlbmd0aCk+PTAmJnQuc2xpY2UoaSxvKT09ZX0sQm4uZXE9c3MsQm4uZXNjYXBlPWZ1bmN0aW9uIHZ1KHQpe3JldHVybih0PVdzKHQpKSYmcS50ZXN0KHQpP3QucmVwbGFjZShHLCRlKTp0fSxCbi5lc2NhcGVSZWdFeHA9ZnVuY3Rpb24gYnUodCl7cmV0dXJuKHQ9V3ModCkpJiZ0dC50ZXN0KHQpP3QucmVwbGFjZShRLCJcXCQmIik6dH0sQm4uZXZlcnk9ZnVuY3Rpb24geHUodCxlLGkpe3ZhciByPWhzKHQpP2JlOk9pO3JldHVybiBpJiZIbyh0LGUsaSkmJihlPW4pLHIodCxDbyhlLDMpKX0sQm4uZmluZD1EYSxCbi5maW5kSW5kZXg9dWEsQm4uZmluZEtleT1mdW5jdGlvbiB3dSh0LGUpe3JldHVybiBMZSh0LENvKGUsMyksRmkpfSxCbi5maW5kTGFzdD1CYSxCbi5maW5kTGFzdEluZGV4PWhhLEJuLmZpbmRMYXN0S2V5PWZ1bmN0aW9uIFN1KHQsZSl7cmV0dXJuIExlKHQsQ28oZSwzKSxWaSl9LEJuLmZsb29yPVhsLEJuLmZvckVhY2g9SGEsQm4uZm9yRWFjaFJpZ2h0PUZhLEJuLmZvckluPWZ1bmN0aW9uIE11KHQsZSl7cmV0dXJuIG51bGw9PXQ/dDpCaSh0LENvKGUsMyksb2wpfSxCbi5mb3JJblJpZ2h0PWZ1bmN0aW9uIEV1KHQsZSl7cmV0dXJuIG51bGw9PXQ/dDpIaSh0LENvKGUsMyksb2wpfSxCbi5mb3JPd249ZnVuY3Rpb24gVHUodCxlKXtyZXR1cm4gdCYmRmkodCxDbyhlLDMpKX0sQm4uZm9yT3duUmlnaHQ9ZnVuY3Rpb24gQXUodCxlKXtyZXR1cm4gdCYmVmkodCxDbyhlLDMpKX0sQm4uZ2V0PVFzLEJuLmd0PWxzLEJuLmd0ZT1jcyxCbi5oYXM9ZnVuY3Rpb24gQ3UodCxlKXtyZXR1cm4gbnVsbCE9dCYmUm8odCxlLFlpKX0sQm4uaGFzSW49dGwsQm4uaGVhZD1wYSxCbi5pZGVudGl0eT1MbCxCbi5pbmNsdWRlcz1mdW5jdGlvbiBrdSh0LGUsbixpKXt0PWZzKHQpP3Q6cGwodCksbj1uJiYhaT9WcyhuKTowO3ZhciByPXQubGVuZ3RoO3JldHVybiBuPDAmJihuPWduKHIrbiwwKSksTnModCk/bjw9ciYmdC5pbmRleE9mKGUsbik+LTE6ISFyJiZJZSh0LGUsbik+LTF9LEJuLmluZGV4T2Y9ZnVuY3Rpb24gTHUodCxlLG4pe3ZhciBpPW51bGw9PXQ/MDp0Lmxlbmd0aDtpZighaSlyZXR1cm4tMTt2YXIgcj1udWxsPT1uPzA6VnMobik7cmV0dXJuIHI8MCYmKHI9Z24oaStyLDApKSxJZSh0LGUscil9LEJuLmluUmFuZ2U9ZnVuY3Rpb24gUHUodCxlLGkpe3JldHVybiBlPUZzKGUpLGk9PT1uPyhpPWUsZT0wKTppPUZzKGkpLChmdW5jdGlvbiByKHQsZSxuKXtyZXR1cm4gdD49X24oZSxuKSYmdDxnbihlLG4pfSkodD1Vcyh0KSxlLGkpfSxCbi5pbnZva2U9aWwsQm4uaXNBcmd1bWVudHM9dXMsQm4uaXNBcnJheT1ocyxCbi5pc0FycmF5QnVmZmVyPWRzLEJuLmlzQXJyYXlMaWtlPWZzLEJuLmlzQXJyYXlMaWtlT2JqZWN0PW1zLEJuLmlzQm9vbGVhbj1mdW5jdGlvbiBJdSh0KXtyZXR1cm4hMD09PXR8fCExPT09dHx8TXModCkmJldpKHQpPT1tfSxCbi5pc0J1ZmZlcj1ncyxCbi5pc0RhdGU9X3MsQm4uaXNFbGVtZW50PWZ1bmN0aW9uIE51KHQpe3JldHVybiBNcyh0KSYmMT09PXQubm9kZVR5cGUmJiFDcyh0KX0sQm4uaXNFbXB0eT1mdW5jdGlvbiBPdSh0KXtpZihudWxsPT10KXJldHVybiEwO2lmKGZzKHQpJiYoaHModCl8fCJzdHJpbmciPT10eXBlb2YgdHx8ImZ1bmN0aW9uIj09dHlwZW9mIHQuc3BsaWNlfHxncyh0KXx8UnModCl8fHVzKHQpKSlyZXR1cm4hdC5sZW5ndGg7dmFyIGU9T28odCk7aWYoZT09Ynx8ZT09RSlyZXR1cm4hdC5zaXplO2lmKFVvKHQpKXJldHVybiFucih0KS5sZW5ndGg7Zm9yKHZhciBuIGluIHQpaWYoSXQuY2FsbCh0LG4pKXJldHVybiExO3JldHVybiEwfSxCbi5pc0VxdWFsPWZ1bmN0aW9uIFJ1KHQsZSl7cmV0dXJuIEppKHQsZSl9LEJuLmlzRXF1YWxXaXRoPWZ1bmN0aW9uIHp1KHQsZSxpKXt2YXIgcj0oaT0iZnVuY3Rpb24iPT10eXBlb2YgaT9pOm4pP2kodCxlKTpuO3JldHVybiByPT09bj9KaSh0LGUsbixpKTohIXJ9LEJuLmlzRXJyb3I9dnMsQm4uaXNGaW5pdGU9ZnVuY3Rpb24gRHUodCl7cmV0dXJuIm51bWJlciI9PXR5cGVvZiB0JiZwbih0KX0sQm4uaXNGdW5jdGlvbj1icyxCbi5pc0ludGVnZXI9eHMsQm4uaXNMZW5ndGg9d3MsQm4uaXNNYXA9RXMsQm4uaXNNYXRjaD1mdW5jdGlvbiBCdSh0LGUpe3JldHVybiB0PT09ZXx8UWkodCxlLExvKGUpKX0sQm4uaXNNYXRjaFdpdGg9ZnVuY3Rpb24gSHUodCxlLGkpe3JldHVybiBpPSJmdW5jdGlvbiI9PXR5cGVvZiBpP2k6bixRaSh0LGUsTG8oZSksaSl9LEJuLmlzTmFOPWZ1bmN0aW9uIEZ1KHQpe3JldHVybiBBcyh0KSYmdCE9K3R9LEJuLmlzTmF0aXZlPWZ1bmN0aW9uIFZ1KHQpe2lmKGpvKHQpKXRocm93IG5ldyB4dCgiVW5zdXBwb3J0ZWQgY29yZS1qcyB1c2UuIFRyeSBodHRwczovL25wbXMuaW8vc2VhcmNoP3E9cG9ueWZpbGwuIik7cmV0dXJuIHRyKHQpfSxCbi5pc05pbD1mdW5jdGlvbiBqdSh0KXtyZXR1cm4gbnVsbD09dH0sQm4uaXNOdWxsPWZ1bmN0aW9uIFV1KHQpe3JldHVybiBudWxsPT09dH0sQm4uaXNOdW1iZXI9QXMsQm4uaXNPYmplY3Q9U3MsQm4uaXNPYmplY3RMaWtlPU1zLEJuLmlzUGxhaW5PYmplY3Q9Q3MsQm4uaXNSZWdFeHA9a3MsQm4uaXNTYWZlSW50ZWdlcj1mdW5jdGlvbiBHdSh0KXtyZXR1cm4geHModCkmJnQ+PS05MDA3MTk5MjU0NzQwOTkxJiZ0PD1jfSxCbi5pc1NldD1QcyxCbi5pc1N0cmluZz1OcyxCbi5pc1N5bWJvbD1PcyxCbi5pc1R5cGVkQXJyYXk9UnMsQm4uaXNVbmRlZmluZWQ9ZnVuY3Rpb24gV3UodCl7cmV0dXJuIHQ9PT1ufSxCbi5pc1dlYWtNYXA9ZnVuY3Rpb24gcXUodCl7cmV0dXJuIE1zKHQpJiZPbyh0KT09Q30sQm4uaXNXZWFrU2V0PWZ1bmN0aW9uIFl1KHQpe3JldHVybiBNcyh0KSYmIltvYmplY3QgV2Vha1NldF0iPT1XaSh0KX0sQm4uam9pbj1mdW5jdGlvbiBYdSh0LGUpe3JldHVybiBudWxsPT10PyIiOmZuLmNhbGwodCxlKX0sQm4ua2ViYWJDYXNlPV9sLEJuLmxhc3Q9X2EsQm4ubGFzdEluZGV4T2Y9ZnVuY3Rpb24gJHUodCxlLGkpe3ZhciByPW51bGw9PXQ/MDp0Lmxlbmd0aDtpZighcilyZXR1cm4tMTt2YXIgbz1yO3JldHVybiBpIT09biYmKG89KG89VnMoaSkpPDA/Z24ocitvLDApOl9uKG8sci0xKSksZT09ZT8oZnVuY3Rpb24gYSh0LGUsbil7Zm9yKHZhciBpPW4rMTtpLS07KWlmKHRbaV09PT1lKXJldHVybiBpO3JldHVybiBpfSkodCxlLG8pOlBlKHQsT2UsbywhMCl9LEJuLmxvd2VyQ2FzZT15bCxCbi5sb3dlckZpcnN0PXZsLEJuLmx0PURzLEJuLmx0ZT1CcyxCbi5tYXg9ZnVuY3Rpb24gS3UodCl7cmV0dXJuIHQmJnQubGVuZ3RoP1JpKHQsTGwscWkpOm59LEJuLm1heEJ5PWZ1bmN0aW9uIFp1KHQsZSl7cmV0dXJuIHQmJnQubGVuZ3RoP1JpKHQsQ28oZSwyKSxxaSk6bn0sQm4ubWVhbj1mdW5jdGlvbiBKdSh0KXtyZXR1cm4gUmUodCxMbCl9LEJuLm1lYW5CeT1mdW5jdGlvbiBRdSh0LGUpe3JldHVybiBSZSh0LENvKGUsMikpfSxCbi5taW49ZnVuY3Rpb24gdGgodCl7cmV0dXJuIHQmJnQubGVuZ3RoP1JpKHQsTGwsaXIpOm59LEJuLm1pbkJ5PWZ1bmN0aW9uIGVoKHQsZSl7cmV0dXJuIHQmJnQubGVuZ3RoP1JpKHQsQ28oZSwyKSxpcik6bn0sQm4uc3R1YkFycmF5PWpsLEJuLnN0dWJGYWxzZT1VbCxCbi5zdHViT2JqZWN0PWZ1bmN0aW9uIG5oKCl7cmV0dXJue319LEJuLnN0dWJTdHJpbmc9ZnVuY3Rpb24gaWgoKXtyZXR1cm4iIn0sQm4uc3R1YlRydWU9ZnVuY3Rpb24gcmgoKXtyZXR1cm4hMH0sQm4ubXVsdGlwbHk9JGwsQm4ubnRoPWZ1bmN0aW9uIG9oKHQsZSl7cmV0dXJuIHQmJnQubGVuZ3RoP2xyKHQsVnMoZSkpOm59LEJuLm5vQ29uZmxpY3Q9ZnVuY3Rpb24gYWgoKXtyZXR1cm4gaWUuXz09PXRoaXMmJihpZS5fPUR0KSx0aGlzfSxCbi5ub29wPVJsLEJuLm5vdz1ZYSxCbi5wYWQ9ZnVuY3Rpb24gc2godCxlLG4pe3Q9V3ModCk7dmFyIGk9KGU9VnMoZSkpP3JuKHQpOjA7aWYoIWV8fGk+PWUpcmV0dXJuIHQ7dmFyIHI9KGUtaSkvMjtyZXR1cm4gY28odW4ociksbikrdCtjbyhjbihyKSxuKX0sQm4ucGFkRW5kPWZ1bmN0aW9uIGxoKHQsZSxuKXt0PVdzKHQpO3ZhciBpPShlPVZzKGUpKT9ybih0KTowO3JldHVybiBlJiZpPGU/dCtjbyhlLWksbik6dH0sQm4ucGFkU3RhcnQ9ZnVuY3Rpb24gY2godCxlLG4pe3Q9V3ModCk7dmFyIGk9KGU9VnMoZSkpP3JuKHQpOjA7cmV0dXJuIGUmJmk8ZT9jbyhlLWksbikrdDp0fSxCbi5wYXJzZUludD1mdW5jdGlvbiB1aCh0LGUsbil7cmV0dXJuIG58fG51bGw9PWU/ZT0wOmUmJihlPStlKSx2bihXcyh0KS5yZXBsYWNlKGV0LCIiKSxlfHwwKX0sQm4ucmFuZG9tPWZ1bmN0aW9uIGhoKHQsZSxpKXtpZihpJiYiYm9vbGVhbiIhPXR5cGVvZiBpJiZIbyh0LGUsaSkmJihlPWk9biksaT09PW4mJigiYm9vbGVhbiI9PXR5cGVvZiBlPyhpPWUsZT1uKToiYm9vbGVhbiI9PXR5cGVvZiB0JiYoaT10LHQ9bikpLHQ9PT1uJiZlPT09bj8odD0wLGU9MSk6KHQ9RnModCksZT09PW4/KGU9dCx0PTApOmU9RnMoZSkpLHQ+ZSl7dmFyIHI9dDt0PWUsZT1yfWlmKGl8fHQlMXx8ZSUxKXt2YXIgbz1ibigpO3JldHVybiBfbih0K28qKGUtdCtRdCgiMWUtIisoKG8rIiIpLmxlbmd0aC0xKSkpLGUpfXJldHVybiBwcih0LGUpfSxCbi5yZWR1Y2U9ZnVuY3Rpb24gZGgodCxlLG4pe3ZhciBpPWhzKHQpP1RlOkJlLHI9YXJndW1lbnRzLmxlbmd0aDwzO3JldHVybiBpKHQsQ28oZSw0KSxuLHIsSWkpfSxCbi5yZWR1Y2VSaWdodD1mdW5jdGlvbiBwaCh0LGUsbil7dmFyIGk9aHModCk/QWU6QmUscj1hcmd1bWVudHMubGVuZ3RoPDM7cmV0dXJuIGkodCxDbyhlLDQpLG4scixOaSl9LEJuLnJlcGVhdD1mdW5jdGlvbiBmaCh0LGUsaSl7cmV0dXJuIGU9KGk/SG8odCxlLGkpOmU9PT1uKT8xOlZzKGUpLGZyKFdzKHQpLGUpfSxCbi5yZXBsYWNlPWZ1bmN0aW9uIG1oKCl7dmFyIHQ9YXJndW1lbnRzLGU9V3ModFswXSk7cmV0dXJuIHQubGVuZ3RoPDM/ZTplLnJlcGxhY2UodFsxXSx0WzJdKX0sQm4ucmVzdWx0PWZ1bmN0aW9uIGdoKHQsZSxpKXt2YXIgcj0tMSxvPShlPUJyKGUsdCkpLmxlbmd0aDtmb3Iob3x8KG89MSx0PW4pOysrcjxvOyl7dmFyIGE9bnVsbD09dD9uOnRbcmEoZVtyXSldO2E9PT1uJiYocj1vLGE9aSksdD1icyhhKT9hLmNhbGwodCk6YX1yZXR1cm4gdH0sQm4ucm91bmQ9S2wsQm4ucnVuSW5Db250ZXh0PXQsQm4uc2FtcGxlPWZ1bmN0aW9uIF9oKHQpe3JldHVybihocyh0KT8kbjpncikodCl9LEJuLnNpemU9ZnVuY3Rpb24geWgodCl7aWYobnVsbD09dClyZXR1cm4gMDtpZihmcyh0KSlyZXR1cm4gTnModCk/cm4odCk6dC5sZW5ndGg7dmFyIGU9T28odCk7cmV0dXJuIGU9PWJ8fGU9PUU/dC5zaXplOm5yKHQpLmxlbmd0aH0sQm4uc25ha2VDYXNlPWJsLEJuLnNvbWU9ZnVuY3Rpb24gdmgodCxlLGkpe3ZhciByPWhzKHQpP0NlOlNyO3JldHVybiBpJiZIbyh0LGUsaSkmJihlPW4pLHIodCxDbyhlLDMpKX0sQm4uc29ydGVkSW5kZXg9ZnVuY3Rpb24gYmgodCxlKXtyZXR1cm4gTXIodCxlKX0sQm4uc29ydGVkSW5kZXhCeT1mdW5jdGlvbiB4aCh0LGUsbil7cmV0dXJuIEVyKHQsZSxDbyhuLDIpKX0sQm4uc29ydGVkSW5kZXhPZj1mdW5jdGlvbiB3aCh0LGUpe3ZhciBuPW51bGw9PXQ/MDp0Lmxlbmd0aDtpZihuKXt2YXIgaT1Ncih0LGUpO2lmKGk8biYmc3ModFtpXSxlKSlyZXR1cm4gaX1yZXR1cm4tMX0sQm4uc29ydGVkTGFzdEluZGV4PWZ1bmN0aW9uIFNoKHQsZSl7cmV0dXJuIE1yKHQsZSwhMCl9LEJuLnNvcnRlZExhc3RJbmRleEJ5PWZ1bmN0aW9uIE1oKHQsZSxuKXtyZXR1cm4gRXIodCxlLENvKG4sMiksITApfSxCbi5zb3J0ZWRMYXN0SW5kZXhPZj1mdW5jdGlvbiBFaCh0LGUpe2lmKG51bGwhPXQmJnQubGVuZ3RoKXt2YXIgbj1Ncih0LGUsITApLTE7aWYoc3ModFtuXSxlKSlyZXR1cm4gbn1yZXR1cm4tMX0sQm4uc3RhcnRDYXNlPXhsLEJuLnN0YXJ0c1dpdGg9ZnVuY3Rpb24gVGgodCxlLG4pe3JldHVybiB0PVdzKHQpLG49bnVsbD09bj8wOm9pKFZzKG4pLDAsdC5sZW5ndGgpLGU9Q3IoZSksdC5zbGljZShuLG4rZS5sZW5ndGgpPT1lfSxCbi5zdWJ0cmFjdD1abCxCbi5zdW09ZnVuY3Rpb24gQWgodCl7cmV0dXJuIHQmJnQubGVuZ3RoP0hlKHQsTGwpOjB9LEJuLnN1bUJ5PWZ1bmN0aW9uIENoKHQsZSl7cmV0dXJuIHQmJnQubGVuZ3RoP0hlKHQsQ28oZSwyKSk6MH0sQm4udGVtcGxhdGU9ZnVuY3Rpb24ga2godCxlLGkpe3ZhciByPUJuLnRlbXBsYXRlU2V0dGluZ3M7aSYmSG8odCxlLGkpJiYoZT1uKSx0PVdzKHQpLGU9WHMoe30sZSxyLHlvKTt2YXIgbyxhLHM9WHMoe30sZS5pbXBvcnRzLHIuaW1wb3J0cyx5byksbD1ybChzKSxjPVVlKHMsbCksdT0wLGg9ZS5pbnRlcnBvbGF0ZXx8X3QsZD0iX19wICs9ICciLHA9RXQoKGUuZXNjYXBlfHxfdCkuc291cmNlKyJ8IitoLnNvdXJjZSsifCIrKGg9PT0kP2N0Ol90KS5zb3VyY2UrInwiKyhlLmV2YWx1YXRlfHxfdCkuc291cmNlKyJ8JCIsImciKSxmPSIvLyMgc291cmNlVVJMPSIrKEl0LmNhbGwoZSwic291cmNlVVJMIik/KGUuc291cmNlVVJMKyIiKS5yZXBsYWNlKC9ccy9nLCIgIik6ImxvZGFzaC50ZW1wbGF0ZVNvdXJjZXNbIisgKyskdCsiXSIpKyJcbiI7dC5yZXBsYWNlKHAsKGZ1bmN0aW9uKGUsbixpLHIscyxsKXtyZXR1cm4gaXx8KGk9ciksZCs9dC5zbGljZSh1LGwpLnJlcGxhY2UoeXQsS2UpLG4mJihvPSEwLGQrPSInICtcbl9fZSgiK24rIikgK1xuJyIpLHMmJihhPSEwLGQrPSInO1xuIitzKyI7XG5fX3AgKz0gJyIpLGkmJihkKz0iJyArXG4oKF9fdCA9ICgiK2krIikpID09IG51bGwgPyAnJyA6IF9fdCkgK1xuJyIpLHU9bCtlLmxlbmd0aCxlfSkpLGQrPSInO1xuIjt2YXIgbT1JdC5jYWxsKGUsInZhcmlhYmxlIikmJmUudmFyaWFibGU7aWYobSl7aWYoc3QudGVzdChtKSl0aHJvdyBuZXcgeHQoIkludmFsaWQgYHZhcmlhYmxlYCBvcHRpb24gcGFzc2VkIGludG8gYF8udGVtcGxhdGVgIil9ZWxzZSBkPSJ3aXRoIChvYmopIHtcbiIrZCsiXG59XG4iO2Q9KGE/ZC5yZXBsYWNlKEYsIiIpOmQpLnJlcGxhY2UoViwiJDEiKS5yZXBsYWNlKGosIiQxOyIpLGQ9ImZ1bmN0aW9uKCIrKG18fCJvYmoiKSsiKSB7XG4iKyhtPyIiOiJvYmogfHwgKG9iaiA9IHt9KTtcbiIpKyJ2YXIgX190LCBfX3AgPSAnJyIrKG8/IiwgX19lID0gXy5lc2NhcGUiOiIiKSsoYT8iLCBfX2ogPSBBcnJheS5wcm90b3R5cGUuam9pbjtcbmZ1bmN0aW9uIHByaW50KCkgeyBfX3AgKz0gX19qLmNhbGwoYXJndW1lbnRzLCAnJykgfVxuIjoiO1xuIikrZCsicmV0dXJuIF9fcFxufSI7dmFyIGc9RWwoKGZ1bmN0aW9uKCl7cmV0dXJuIHd0KGwsZisicmV0dXJuICIrZCkuYXBwbHkobixjKX0pKTtpZihnLnNvdXJjZT1kLHZzKGcpKXRocm93IGc7cmV0dXJuIGd9LEJuLnRpbWVzPWZ1bmN0aW9uIExoKHQsZSl7aWYoKHQ9VnModCkpPDF8fHQ+YylyZXR1cm5bXTt2YXIgbj1oLGk9X24odCxoKTtlPUNvKGUpLHQtPWg7Zm9yKHZhciByPUZlKGksZSk7KytuPHQ7KWUobik7cmV0dXJuIHJ9LEJuLnRvRmluaXRlPUZzLEJuLnRvSW50ZWdlcj1WcyxCbi50b0xlbmd0aD1qcyxCbi50b0xvd2VyPWZ1bmN0aW9uIFBoKHQpe3JldHVybiBXcyh0KS50b0xvd2VyQ2FzZSgpfSxCbi50b051bWJlcj1VcyxCbi50b1NhZmVJbnRlZ2VyPWZ1bmN0aW9uIEloKHQpe3JldHVybiB0P29pKFZzKHQpLC05MDA3MTk5MjU0NzQwOTkxLGMpOjA9PT10P3Q6MH0sQm4udG9TdHJpbmc9V3MsQm4udG9VcHBlcj1mdW5jdGlvbiBOaCh0KXtyZXR1cm4gV3ModCkudG9VcHBlckNhc2UoKX0sQm4udHJpbT1mdW5jdGlvbiBPaCh0LGUsaSl7aWYoKHQ9V3ModCkpJiYoaXx8ZT09PW4pKXJldHVybiBWZSh0KTtpZighdHx8IShlPUNyKGUpKSlyZXR1cm4gdDt2YXIgcj1vbih0KSxvPW9uKGUpO3JldHVybiBGcihyLFdlKHIsbykscWUocixvKSsxKS5qb2luKCIiKX0sQm4udHJpbUVuZD1mdW5jdGlvbiBSaCh0LGUsaSl7aWYoKHQ9V3ModCkpJiYoaXx8ZT09PW4pKXJldHVybiB0LnNsaWNlKDAsYW4odCkrMSk7aWYoIXR8fCEoZT1DcihlKSkpcmV0dXJuIHQ7dmFyIHI9b24odCk7cmV0dXJuIEZyKHIsMCxxZShyLG9uKGUpKSsxKS5qb2luKCIiKX0sQm4udHJpbVN0YXJ0PWZ1bmN0aW9uIHpoKHQsZSxpKXtpZigodD1Xcyh0KSkmJihpfHxlPT09bikpcmV0dXJuIHQucmVwbGFjZShldCwiIik7aWYoIXR8fCEoZT1DcihlKSkpcmV0dXJuIHQ7dmFyIHI9b24odCk7cmV0dXJuIEZyKHIsV2UocixvbihlKSkpLmpvaW4oIiIpfSxCbi50cnVuY2F0ZT1mdW5jdGlvbiBEaCh0LGUpe3ZhciBpPTMwLHI9Ii4uLiI7aWYoU3MoZSkpe3ZhciBvPSJzZXBhcmF0b3IiaW4gZT9lLnNlcGFyYXRvcjpvO2k9Imxlbmd0aCJpbiBlP1ZzKGUubGVuZ3RoKTppLHI9Im9taXNzaW9uImluIGU/Q3IoZS5vbWlzc2lvbik6cn12YXIgYT0odD1Xcyh0KSkubGVuZ3RoO2lmKFplKHQpKXt2YXIgcz1vbih0KTthPXMubGVuZ3RofWlmKGk+PWEpcmV0dXJuIHQ7dmFyIGw9aS1ybihyKTtpZihsPDEpcmV0dXJuIHI7dmFyIGM9cz9GcihzLDAsbCkuam9pbigiIik6dC5zbGljZSgwLGwpO2lmKG89PT1uKXJldHVybiBjK3I7aWYocyYmKGwrPWMubGVuZ3RoLWwpLGtzKG8pKXtpZih0LnNsaWNlKGwpLnNlYXJjaChvKSl7dmFyIHUsaD1jO2ZvcihvLmdsb2JhbHx8KG89RXQoby5zb3VyY2UsV3ModXQuZXhlYyhvKSkrImciKSksby5sYXN0SW5kZXg9MDt1PW8uZXhlYyhoKTspdmFyIGQ9dS5pbmRleDtjPWMuc2xpY2UoMCxkPT09bj9sOmQpfX1lbHNlIGlmKHQuaW5kZXhPZihDcihvKSxsKSE9bCl7dmFyIHA9Yy5sYXN0SW5kZXhPZihvKTtwPi0xJiYoYz1jLnNsaWNlKDAscCkpfXJldHVybiBjK3J9LEJuLnVuZXNjYXBlPWZ1bmN0aW9uIEJoKHQpe3JldHVybih0PVdzKHQpKSYmVy50ZXN0KHQpP3QucmVwbGFjZShVLHNuKTp0fSxCbi51bmlxdWVJZD1mdW5jdGlvbiBIaCh0KXt2YXIgZT0rK050O3JldHVybiBXcyh0KStlfSxCbi51cHBlckNhc2U9d2wsQm4udXBwZXJGaXJzdD1TbCxCbi5lYWNoPUhhLEJuLmVhY2hSaWdodD1GYSxCbi5maXJzdD1wYSxPbChCbiwoR2w9e30sRmkoQm4sKGZ1bmN0aW9uKHQsZSl7SXQuY2FsbChCbi5wcm90b3R5cGUsZSl8fChHbFtlXT10KX0pKSxHbCkse2NoYWluOiExfSksQm4uVkVSU0lPTj0iNC4xNy4yMSIsX2UoWyJiaW5kIiwiYmluZEtleSIsImN1cnJ5IiwiY3VycnlSaWdodCIsInBhcnRpYWwiLCJwYXJ0aWFsUmlnaHQiXSwoZnVuY3Rpb24odCl7Qm5bdF0ucGxhY2Vob2xkZXI9Qm59KSksX2UoWyJkcm9wIiwidGFrZSJdLChmdW5jdGlvbih0LGUpe2puLnByb3RvdHlwZVt0XT1mdW5jdGlvbihpKXtpPWk9PT1uPzE6Z24oVnMoaSksMCk7dmFyIHI9dGhpcy5fX2ZpbHRlcmVkX18mJiFlP25ldyBqbih0aGlzKTp0aGlzLmNsb25lKCk7cmV0dXJuIHIuX19maWx0ZXJlZF9fP3IuX190YWtlQ291bnRfXz1fbihpLHIuX190YWtlQ291bnRfXyk6ci5fX3ZpZXdzX18ucHVzaCh7c2l6ZTpfbihpLGgpLHR5cGU6dCsoci5fX2Rpcl9fPDA/IlJpZ2h0IjoiIil9KSxyfSxqbi5wcm90b3R5cGVbdCsiUmlnaHQiXT1mdW5jdGlvbihlKXtyZXR1cm4gdGhpcy5yZXZlcnNlKClbdF0oZSkucmV2ZXJzZSgpfX0pKSxfZShbImZpbHRlciIsIm1hcCIsInRha2VXaGlsZSJdLChmdW5jdGlvbih0LGUpe3ZhciBuPWUrMSxpPTE9PW58fDM9PW47am4ucHJvdG90eXBlW3RdPWZ1bmN0aW9uKHQpe3ZhciBlPXRoaXMuY2xvbmUoKTtyZXR1cm4gZS5fX2l0ZXJhdGVlc19fLnB1c2goe2l0ZXJhdGVlOkNvKHQsMyksdHlwZTpufSksZS5fX2ZpbHRlcmVkX189ZS5fX2ZpbHRlcmVkX198fGksZX19KSksX2UoWyJoZWFkIiwibGFzdCJdLChmdW5jdGlvbih0LGUpe3ZhciBuPSJ0YWtlIisoZT8iUmlnaHQiOiIiKTtqbi5wcm90b3R5cGVbdF09ZnVuY3Rpb24oKXtyZXR1cm4gdGhpc1tuXSgxKS52YWx1ZSgpWzBdfX0pKSxfZShbImluaXRpYWwiLCJ0YWlsIl0sKGZ1bmN0aW9uKHQsZSl7dmFyIG49ImRyb3AiKyhlPyIiOiJSaWdodCIpO2puLnByb3RvdHlwZVt0XT1mdW5jdGlvbigpe3JldHVybiB0aGlzLl9fZmlsdGVyZWRfXz9uZXcgam4odGhpcyk6dGhpc1tuXSgxKX19KSksam4ucHJvdG90eXBlLmNvbXBhY3Q9ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5maWx0ZXIoTGwpfSxqbi5wcm90b3R5cGUuZmluZD1mdW5jdGlvbih0KXtyZXR1cm4gdGhpcy5maWx0ZXIodCkuaGVhZCgpfSxqbi5wcm90b3R5cGUuZmluZExhc3Q9ZnVuY3Rpb24odCl7cmV0dXJuIHRoaXMucmV2ZXJzZSgpLmZpbmQodCl9LGpuLnByb3RvdHlwZS5pbnZva2VNYXA9bXIoKGZ1bmN0aW9uKHQsZSl7cmV0dXJuImZ1bmN0aW9uIj09dHlwZW9mIHQ/bmV3IGpuKHRoaXMpOnRoaXMubWFwKChmdW5jdGlvbihuKXtyZXR1cm4gS2kobix0LGUpfSkpfSkpLGpuLnByb3RvdHlwZS5yZWplY3Q9ZnVuY3Rpb24odCl7cmV0dXJuIHRoaXMuZmlsdGVyKG5zKENvKHQpKSl9LGpuLnByb3RvdHlwZS5zbGljZT1mdW5jdGlvbih0LGUpe3Q9VnModCk7dmFyIGk9dGhpcztyZXR1cm4gaS5fX2ZpbHRlcmVkX18mJih0PjB8fGU8MCk/bmV3IGpuKGkpOih0PDA/aT1pLnRha2VSaWdodCgtdCk6dCYmKGk9aS5kcm9wKHQpKSxlIT09biYmKGk9KGU9VnMoZSkpPDA/aS5kcm9wUmlnaHQoLWUpOmkudGFrZShlLXQpKSxpKX0sam4ucHJvdG90eXBlLnRha2VSaWdodFdoaWxlPWZ1bmN0aW9uKHQpe3JldHVybiB0aGlzLnJldmVyc2UoKS50YWtlV2hpbGUodCkucmV2ZXJzZSgpfSxqbi5wcm90b3R5cGUudG9BcnJheT1mdW5jdGlvbigpe3JldHVybiB0aGlzLnRha2UoaCl9LEZpKGpuLnByb3RvdHlwZSwoZnVuY3Rpb24odCxlKXt2YXIgaT0vXig/OmZpbHRlcnxmaW5kfG1hcHxyZWplY3QpfFdoaWxlJC8udGVzdChlKSxyPS9eKD86aGVhZHxsYXN0KSQvLnRlc3QoZSksbz1CbltyPyJ0YWtlIisoImxhc3QiPT1lPyJSaWdodCI6IiIpOmVdLGE9cnx8L15maW5kLy50ZXN0KGUpO28mJihCbi5wcm90b3R5cGVbZV09ZnVuY3Rpb24oKXt2YXIgZT10aGlzLl9fd3JhcHBlZF9fLHM9cj9bMV06YXJndW1lbnRzLGw9ZSBpbnN0YW5jZW9mIGpuLGM9c1swXSx1PWx8fGhzKGUpLGg9ZnVuY3Rpb24odCl7dmFyIGU9by5hcHBseShCbixFZShbdF0scykpO3JldHVybiByJiZkP2VbMF06ZX07dSYmaSYmImZ1bmN0aW9uIj09dHlwZW9mIGMmJjEhPWMubGVuZ3RoJiYobD11PSExKTt2YXIgZD10aGlzLl9fY2hhaW5fXyxwPSEhdGhpcy5fX2FjdGlvbnNfXy5sZW5ndGgsZj1hJiYhZCxtPWwmJiFwO2lmKCFhJiZ1KXtlPW0/ZTpuZXcgam4odGhpcyk7dmFyIGc9dC5hcHBseShlLHMpO3JldHVybiBnLl9fYWN0aW9uc19fLnB1c2goe2Z1bmM6T2EsYXJnczpbaF0sdGhpc0FyZzpufSksbmV3IFZuKGcsZCl9cmV0dXJuIGYmJm0/dC5hcHBseSh0aGlzLHMpOihnPXRoaXMudGhydShoKSxmP3I/Zy52YWx1ZSgpWzBdOmcudmFsdWUoKTpnKX0pfSkpLF9lKFsicG9wIiwicHVzaCIsInNoaWZ0Iiwic29ydCIsInNwbGljZSIsInVuc2hpZnQiXSwoZnVuY3Rpb24odCl7dmFyIGU9Q3RbdF0sbj0vXig/OnB1c2h8c29ydHx1bnNoaWZ0KSQvLnRlc3QodCk/InRhcCI6InRocnUiLGk9L14oPzpwb3B8c2hpZnQpJC8udGVzdCh0KTtCbi5wcm90b3R5cGVbdF09ZnVuY3Rpb24oKXt2YXIgdD1hcmd1bWVudHM7aWYoaSYmIXRoaXMuX19jaGFpbl9fKXt2YXIgcj10aGlzLnZhbHVlKCk7cmV0dXJuIGUuYXBwbHkoaHMocik/cjpbXSx0KX1yZXR1cm4gdGhpc1tuXSgoZnVuY3Rpb24obil7cmV0dXJuIGUuYXBwbHkoaHMobik/bjpbXSx0KX0pKX19KSksRmkoam4ucHJvdG90eXBlLChmdW5jdGlvbih0LGUpe3ZhciBuPUJuW2VdO2lmKG4pe3ZhciBpPW4ubmFtZSsiIjtJdC5jYWxsKGtuLGkpfHwoa25baV09W10pLGtuW2ldLnB1c2goe25hbWU6ZSxmdW5jOm59KX19KSksa25bb28obiwyKS5uYW1lXT1be25hbWU6IndyYXBwZXIiLGZ1bmM6bn1dLGpuLnByb3RvdHlwZS5jbG9uZT1mdW5jdGlvbiBGaCgpe3ZhciB0PW5ldyBqbih0aGlzLl9fd3JhcHBlZF9fKTtyZXR1cm4gdC5fX2FjdGlvbnNfXz1Ycih0aGlzLl9fYWN0aW9uc19fKSx0Ll9fZGlyX189dGhpcy5fX2Rpcl9fLHQuX19maWx0ZXJlZF9fPXRoaXMuX19maWx0ZXJlZF9fLHQuX19pdGVyYXRlZXNfXz1Ycih0aGlzLl9faXRlcmF0ZWVzX18pLHQuX190YWtlQ291bnRfXz10aGlzLl9fdGFrZUNvdW50X18sdC5fX3ZpZXdzX189WHIodGhpcy5fX3ZpZXdzX18pLHR9LGpuLnByb3RvdHlwZS5yZXZlcnNlPWZ1bmN0aW9uIFZoKCl7aWYodGhpcy5fX2ZpbHRlcmVkX18pe3ZhciB0PW5ldyBqbih0aGlzKTt0Ll9fZGlyX189LTEsdC5fX2ZpbHRlcmVkX189ITB9ZWxzZSh0PXRoaXMuY2xvbmUoKSkuX19kaXJfXyo9LTE7cmV0dXJuIHR9LGpuLnByb3RvdHlwZS52YWx1ZT1mdW5jdGlvbiBqaCgpe3ZhciB0PXRoaXMuX193cmFwcGVkX18udmFsdWUoKSxlPXRoaXMuX19kaXJfXyxuPWhzKHQpLGk9ZTwwLHI9bj90Lmxlbmd0aDowLG89KGZ1bmN0aW9uIGEodCxlLG4pe2Zvcih2YXIgaT0tMSxyPW4ubGVuZ3RoOysraTxyOyl7dmFyIG89bltpXSxhPW8uc2l6ZTtzd2l0Y2goby50eXBlKXtjYXNlImRyb3AiOnQrPWE7YnJlYWs7Y2FzZSJkcm9wUmlnaHQiOmUtPWE7YnJlYWs7Y2FzZSJ0YWtlIjplPV9uKGUsdCthKTticmVhaztjYXNlInRha2VSaWdodCI6dD1nbih0LGUtYSl9fXJldHVybntzdGFydDp0LGVuZDplfX0pKDAscix0aGlzLl9fdmlld3NfXykscz1vLnN0YXJ0LGw9by5lbmQsYz1sLXMsdT1pP2w6cy0xLGg9dGhpcy5fX2l0ZXJhdGVlc19fLGQ9aC5sZW5ndGgscD0wLGY9X24oYyx0aGlzLl9fdGFrZUNvdW50X18pO2lmKCFufHwhaSYmcj09YyYmZj09YylyZXR1cm4gTnIodCx0aGlzLl9fYWN0aW9uc19fKTt2YXIgbT1bXTt0OmZvcig7Yy0tJiZwPGY7KXtmb3IodmFyIGc9LTEsXz10W3UrPWVdOysrZzxkOyl7dmFyIHk9aFtnXSx2PXkudHlwZSxiPSgwLHkuaXRlcmF0ZWUpKF8pO2lmKDI9PXYpXz1iO2Vsc2UgaWYoIWIpe2lmKDE9PXYpY29udGludWUgdDticmVhayB0fX1tW3ArK109X31yZXR1cm4gbX0sQm4ucHJvdG90eXBlLmF0PVJhLEJuLnByb3RvdHlwZS5jaGFpbj1mdW5jdGlvbiBVaCgpe3JldHVybiBOYSh0aGlzKX0sQm4ucHJvdG90eXBlLmNvbW1pdD1mdW5jdGlvbiBHaCgpe3JldHVybiBuZXcgVm4odGhpcy52YWx1ZSgpLHRoaXMuX19jaGFpbl9fKX0sQm4ucHJvdG90eXBlLm5leHQ9ZnVuY3Rpb24gV2goKXt0aGlzLl9fdmFsdWVzX189PT1uJiYodGhpcy5fX3ZhbHVlc19fPUhzKHRoaXMudmFsdWUoKSkpO3ZhciB0PXRoaXMuX19pbmRleF9fPj10aGlzLl9fdmFsdWVzX18ubGVuZ3RoO3JldHVybntkb25lOnQsdmFsdWU6dD9uOnRoaXMuX192YWx1ZXNfX1t0aGlzLl9faW5kZXhfXysrXX19LEJuLnByb3RvdHlwZS5wbGFudD1mdW5jdGlvbiBxaCh0KXtmb3IodmFyIGUsaT10aGlzO2kgaW5zdGFuY2VvZiBGbjspe3ZhciByPWFhKGkpO3IuX19pbmRleF9fPTAsci5fX3ZhbHVlc19fPW4sZT9vLl9fd3JhcHBlZF9fPXI6ZT1yO3ZhciBvPXI7aT1pLl9fd3JhcHBlZF9ffXJldHVybiBvLl9fd3JhcHBlZF9fPXQsZX0sQm4ucHJvdG90eXBlLnJldmVyc2U9ZnVuY3Rpb24gWWgoKXt2YXIgdD10aGlzLl9fd3JhcHBlZF9fO2lmKHQgaW5zdGFuY2VvZiBqbil7dmFyIGU9dDtyZXR1cm4gdGhpcy5fX2FjdGlvbnNfXy5sZW5ndGgmJihlPW5ldyBqbih0aGlzKSksKGU9ZS5yZXZlcnNlKCkpLl9fYWN0aW9uc19fLnB1c2goe2Z1bmM6T2EsYXJnczpbeGFdLHRoaXNBcmc6bn0pLG5ldyBWbihlLHRoaXMuX19jaGFpbl9fKX1yZXR1cm4gdGhpcy50aHJ1KHhhKX0sQm4ucHJvdG90eXBlLnRvSlNPTj1Cbi5wcm90b3R5cGUudmFsdWVPZj1Cbi5wcm90b3R5cGUudmFsdWU9ZnVuY3Rpb24gWGgoKXtyZXR1cm4gTnIodGhpcy5fX3dyYXBwZWRfXyx0aGlzLl9fYWN0aW9uc19fKX0sQm4ucHJvdG90eXBlLmZpcnN0PUJuLnByb3RvdHlwZS5oZWFkLG9lJiYoQm4ucHJvdG90eXBlW29lXT1mdW5jdGlvbiAkaCgpe3JldHVybiB0aGlzfSksQm59KSgpO29lPygob2UuZXhwb3J0cz1sbikuXz1sbixyZS5fPWxuKTppZS5fPWxufSkuY2FsbCh2ZSl9KSk7Ci8qKgogICAgQGxpY2Vuc2UKICAgIENvcHlyaWdodCAoYykgMjAxNyBUaGUgUG9seW1lciBQcm9qZWN0IEF1dGhvcnMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgICBUaGlzIGNvZGUgbWF5IG9ubHkgYmUgdXNlZCB1bmRlciB0aGUgQlNEIHN0eWxlIGxpY2Vuc2UgZm91bmQgYXQgaHR0cDovL3BvbHltZXIuZ2l0aHViLmlvL0xJQ0VOU0UudHh0CiAgICBUaGUgY29tcGxldGUgc2V0IG9mIGF1dGhvcnMgbWF5IGJlIGZvdW5kIGF0IGh0dHA6Ly9wb2x5bWVyLmdpdGh1Yi5pby9BVVRIT1JTLnR4dAogICAgVGhlIGNvbXBsZXRlIHNldCBvZiBjb250cmlidXRvcnMgbWF5IGJlIGZvdW5kIGF0IGh0dHA6Ly9wb2x5bWVyLmdpdGh1Yi5pby9DT05UUklCVVRPUlMudHh0CiAgICBDb2RlIGRpc3RyaWJ1dGVkIGJ5IEdvb2dsZSBhcyBwYXJ0IG9mIHRoZSBwb2x5bWVyIHByb2plY3QgaXMgYWxzbwogICAgc3ViamVjdCB0byBhbiBhZGRpdGlvbmFsIElQIHJpZ2h0cyBncmFudCBmb3VuZCBhdCBodHRwOi8vcG9seW1lci5naXRodWIuaW8vUEFURU5UUy50eHQKICAgICovY29uc3QgU2U9ISh3aW5kb3cuU2hhZHlET00mJndpbmRvdy5TaGFkeURPTS5pblVzZSk7bGV0IE1lLEVlO2Z1bmN0aW9uIFRlKHQpe01lPSghdHx8IXQuc2hpbWNzc3Byb3BlcnRpZXMpJiYoU2V8fEJvb2xlYW4oIW5hdmlnYXRvci51c2VyQWdlbnQubWF0Y2goL0FwcGxlV2ViS2l0XC82MDF8RWRnZVwvMTUvKSYmd2luZG93LkNTUyYmQ1NTLnN1cHBvcnRzJiZDU1Muc3VwcG9ydHMoImJveC1zaGFkb3ciLCIwIDAgMCB2YXIoLS1mb28pIikpKX13aW5kb3cuU2hhZHlDU1MmJnZvaWQgMCE9PXdpbmRvdy5TaGFkeUNTUy5jc3NCdWlsZCYmKEVlPXdpbmRvdy5TaGFkeUNTUy5jc3NCdWlsZCk7Y29uc3QgQWU9Qm9vbGVhbih3aW5kb3cuU2hhZHlDU1MmJndpbmRvdy5TaGFkeUNTUy5kaXNhYmxlUnVudGltZSk7d2luZG93LlNoYWR5Q1NTJiZ2b2lkIDAhPT13aW5kb3cuU2hhZHlDU1MubmF0aXZlQ3NzP01lPXdpbmRvdy5TaGFkeUNTUy5uYXRpdmVDc3M6d2luZG93LlNoYWR5Q1NTPyhUZSh3aW5kb3cuU2hhZHlDU1MpLHdpbmRvdy5TaGFkeUNTUz12b2lkIDApOlRlKHdpbmRvdy5XZWJDb21wb25lbnRzJiZ3aW5kb3cuV2ViQ29tcG9uZW50cy5mbGFncyk7Y29uc3QgQ2U9TWU7Ci8qKgogICAgQGxpY2Vuc2UKICAgIENvcHlyaWdodCAoYykgMjAxNyBUaGUgUG9seW1lciBQcm9qZWN0IEF1dGhvcnMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgICBUaGlzIGNvZGUgbWF5IG9ubHkgYmUgdXNlZCB1bmRlciB0aGUgQlNEIHN0eWxlIGxpY2Vuc2UgZm91bmQgYXQgaHR0cDovL3BvbHltZXIuZ2l0aHViLmlvL0xJQ0VOU0UudHh0CiAgICBUaGUgY29tcGxldGUgc2V0IG9mIGF1dGhvcnMgbWF5IGJlIGZvdW5kIGF0IGh0dHA6Ly9wb2x5bWVyLmdpdGh1Yi5pby9BVVRIT1JTLnR4dAogICAgVGhlIGNvbXBsZXRlIHNldCBvZiBjb250cmlidXRvcnMgbWF5IGJlIGZvdW5kIGF0IGh0dHA6Ly9wb2x5bWVyLmdpdGh1Yi5pby9DT05UUklCVVRPUlMudHh0CiAgICBDb2RlIGRpc3RyaWJ1dGVkIGJ5IEdvb2dsZSBhcyBwYXJ0IG9mIHRoZSBwb2x5bWVyIHByb2plY3QgaXMgYWxzbwogICAgc3ViamVjdCB0byBhbiBhZGRpdGlvbmFsIElQIHJpZ2h0cyBncmFudCBmb3VuZCBhdCBodHRwOi8vcG9seW1lci5naXRodWIuaW8vUEFURU5UUy50eHQKICAgICovY2xhc3Mga2V7Y29uc3RydWN0b3IoKXt0aGlzLnN0YXJ0PTAsdGhpcy5lbmQ9MCx0aGlzLnByZXZpb3VzPW51bGwsdGhpcy5wYXJlbnQ9bnVsbCx0aGlzLnJ1bGVzPW51bGwsdGhpcy5wYXJzZWRDc3NUZXh0PSIiLHRoaXMuY3NzVGV4dD0iIix0aGlzLmF0UnVsZT0hMSx0aGlzLnR5cGU9MCx0aGlzLmtleWZyYW1lc05hbWU9IiIsdGhpcy5zZWxlY3Rvcj0iIix0aGlzLnBhcnNlZFNlbGVjdG9yPSIifX1mdW5jdGlvbiBMZSh0KXtyZXR1cm4gUGUoKGZ1bmN0aW9uIG4odCl7bGV0IGU9bmV3IGtlO2Uuc3RhcnQ9MCxlLmVuZD10Lmxlbmd0aDtsZXQgbj1lO2ZvcihsZXQgaT0wLHI9dC5sZW5ndGg7aTxyO2krKylpZih0W2ldPT09T2Upe24ucnVsZXN8fChuLnJ1bGVzPVtdKTtsZXQgdD1uLGU9dC5ydWxlc1t0LnJ1bGVzLmxlbmd0aC0xXXx8bnVsbDtuPW5ldyBrZSxuLnN0YXJ0PWkrMSxuLnBhcmVudD10LG4ucHJldmlvdXM9ZSx0LnJ1bGVzLnB1c2gobil9ZWxzZSB0W2ldPT09UmUmJihuLmVuZD1pKzEsbj1uLnBhcmVudHx8ZSk7cmV0dXJuIGV9KSh0PShmdW5jdGlvbiBlKHQpe3JldHVybiB0LnJlcGxhY2UoemUuY29tbWVudHMsIiIpLnJlcGxhY2UoemUucG9ydCwiIil9KSh0KSksdCl9ZnVuY3Rpb24gUGUodCxlKXtsZXQgbj1lLnN1YnN0cmluZyh0LnN0YXJ0LHQuZW5kLTEpO2lmKHQucGFyc2VkQ3NzVGV4dD10LmNzc1RleHQ9bi50cmltKCksdC5wYXJlbnQpe249ZS5zdWJzdHJpbmcodC5wcmV2aW91cz90LnByZXZpb3VzLmVuZDp0LnBhcmVudC5zdGFydCx0LnN0YXJ0LTEpLG49KGZ1bmN0aW9uIGkodCl7cmV0dXJuIHQucmVwbGFjZSgvXFwoWzAtOWEtZl17MSw2fSlccy9naSwoZnVuY3Rpb24oKXtsZXQgdD1hcmd1bWVudHNbMV0sZT02LXQubGVuZ3RoO2Zvcig7ZS0tOyl0PSIwIit0O3JldHVybiJcXCIrdH0pKX0pKG4pLG49bi5yZXBsYWNlKHplLm11bHRpcGxlU3BhY2VzLCIgIiksbj1uLnN1YnN0cmluZyhuLmxhc3RJbmRleE9mKCI7IikrMSk7bGV0IGk9dC5wYXJzZWRTZWxlY3Rvcj10LnNlbGVjdG9yPW4udHJpbSgpO3QuYXRSdWxlPTA9PT1pLmluZGV4T2YoSGUpLHQuYXRSdWxlPzA9PT1pLmluZGV4T2YoQmUpP3QudHlwZT1OZS5NRURJQV9SVUxFOmkubWF0Y2goemUua2V5ZnJhbWVzUnVsZSkmJih0LnR5cGU9TmUuS0VZRlJBTUVTX1JVTEUsdC5rZXlmcmFtZXNOYW1lPXQuc2VsZWN0b3Iuc3BsaXQoemUubXVsdGlwbGVTcGFjZXMpLnBvcCgpKTp0LnR5cGU9MD09PWkuaW5kZXhPZihEZSk/TmUuTUlYSU5fUlVMRTpOZS5TVFlMRV9SVUxFfWxldCByPXQucnVsZXM7aWYocilmb3IobGV0IHQsbj0wLGk9ci5sZW5ndGg7bjxpJiYodD1yW25dKTtuKyspUGUodCxlKTtyZXR1cm4gdH1mdW5jdGlvbiBJZSh0LGUsbj0iIil7bGV0IGk9IiI7aWYodC5jc3NUZXh0fHx0LnJ1bGVzKXtsZXQgbj10LnJ1bGVzO2lmKG4mJiEoZnVuY3Rpb24gcih0KXtsZXQgZT10WzBdO3JldHVybiBCb29sZWFuKGUpJiZCb29sZWFuKGUuc2VsZWN0b3IpJiYwPT09ZS5zZWxlY3Rvci5pbmRleE9mKERlKX0pKG4pKWZvcihsZXQgdCxyPTAsbz1uLmxlbmd0aDtyPG8mJih0PW5bcl0pO3IrKylpPUllKHQsZSxpKTtlbHNlIGk9ZT90LmNzc1RleHQ6KGZ1bmN0aW9uIG8odCl7cmV0dXJuKGZ1bmN0aW9uIG4odCl7cmV0dXJuIHQucmVwbGFjZSh6ZS5taXhpbkFwcGx5LCIiKS5yZXBsYWNlKHplLnZhckFwcGx5LCIiKX0pKHQ9KGZ1bmN0aW9uIGUodCl7cmV0dXJuIHQucmVwbGFjZSh6ZS5jdXN0b21Qcm9wLCIiKS5yZXBsYWNlKHplLm1peGluUHJvcCwiIil9KSh0KSl9KSh0LmNzc1RleHQpLGk9aS50cmltKCksaSYmKGk9IiAgIitpKyJcbiIpfXJldHVybiBpJiYodC5zZWxlY3RvciYmKG4rPXQuc2VsZWN0b3IrIiAiK09lKyJcbiIpLG4rPWksdC5zZWxlY3RvciYmKG4rPVJlKyJcblxuIikpLG59Y29uc3QgTmU9e1NUWUxFX1JVTEU6MSxLRVlGUkFNRVNfUlVMRTo3LE1FRElBX1JVTEU6NCxNSVhJTl9SVUxFOjFlM30sT2U9InsiLFJlPSJ9Iix6ZT17Y29tbWVudHM6L1wvXCpbXipdKlwqKyhbXi8qXVteKl0qXCorKSpcLy9naW0scG9ydDovQGltcG9ydFteO10qOy9naW0sY3VzdG9tUHJvcDovKD86XlteO1wtXHN9XSspPy0tW147e31dKj86W157fTtdKj8oPzpbO1xuXXwkKS9naW0sbWl4aW5Qcm9wOi8oPzpeW147XC1cc31dKyk/LS1bXjt7fV0qPzpbXnt9O10qP3tbXn1dKj99KD86Wztcbl18JCk/L2dpbSxtaXhpbkFwcGx5Oi9AYXBwbHlccypcKD9bXik7XSpcKT9ccyooPzpbO1xuXXwkKT8vZ2ltLHZhckFwcGx5Oi9bXjs6XSo/OlteO10qP3ZhclwoW147XSpcKSg/Ols7XG5dfCQpPy9naW0sa2V5ZnJhbWVzUnVsZTovXkBbXlxzXSprZXlmcmFtZXMvLG11bHRpcGxlU3BhY2VzOi9ccysvZ30sRGU9Ii0tIixCZT0iQG1lZGlhIixIZT0iQCIsRmU9Lyg/Ol58Wztcc3tdXHMqKSgtLVtcdy1dKj8pXHMqOlxzKig/OigoPzonKD86XFwnfC4pKj8nfCIoPzpcXCJ8LikqPyJ8XChbXildKj9cKXxbXn07e10pKyl8XHsoW159XSopXH0oPzooPz1bO1xzfV0pfCQpKS9naSxWZT0vKD86XnxcVyspQGFwcGx5XHMqXCg/KFteKTtcbl0qKVwpPy9naSxqZT0vQG1lZGlhXHMoLiopLyxVZT1uZXcgU2V0O2Z1bmN0aW9uIEdlKHQpe2NvbnN0IGU9dC50ZXh0Q29udGVudDtpZighVWUuaGFzKGUpKXtVZS5hZGQoZSk7Y29uc3QgdD1kb2N1bWVudC5jcmVhdGVFbGVtZW50KCJzdHlsZSIpO3Quc2V0QXR0cmlidXRlKCJzaGFkeS11bnNjb3BlZCIsIiIpLHQudGV4dENvbnRlbnQ9ZSxkb2N1bWVudC5oZWFkLmFwcGVuZENoaWxkKHQpfX1mdW5jdGlvbiBXZSh0KXtyZXR1cm4gdC5oYXNBdHRyaWJ1dGUoInNoYWR5LXVuc2NvcGVkIil9Ci8qKgogICAgQGxpY2Vuc2UKICAgIENvcHlyaWdodCAoYykgMjAxNyBUaGUgUG9seW1lciBQcm9qZWN0IEF1dGhvcnMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgICBUaGlzIGNvZGUgbWF5IG9ubHkgYmUgdXNlZCB1bmRlciB0aGUgQlNEIHN0eWxlIGxpY2Vuc2UgZm91bmQgYXQgaHR0cDovL3BvbHltZXIuZ2l0aHViLmlvL0xJQ0VOU0UudHh0CiAgICBUaGUgY29tcGxldGUgc2V0IG9mIGF1dGhvcnMgbWF5IGJlIGZvdW5kIGF0IGh0dHA6Ly9wb2x5bWVyLmdpdGh1Yi5pby9BVVRIT1JTLnR4dAogICAgVGhlIGNvbXBsZXRlIHNldCBvZiBjb250cmlidXRvcnMgbWF5IGJlIGZvdW5kIGF0IGh0dHA6Ly9wb2x5bWVyLmdpdGh1Yi5pby9DT05UUklCVVRPUlMudHh0CiAgICBDb2RlIGRpc3RyaWJ1dGVkIGJ5IEdvb2dsZSBhcyBwYXJ0IG9mIHRoZSBwb2x5bWVyIHByb2plY3QgaXMgYWxzbwogICAgc3ViamVjdCB0byBhbiBhZGRpdGlvbmFsIElQIHJpZ2h0cyBncmFudCBmb3VuZCBhdCBodHRwOi8vcG9seW1lci5naXRodWIuaW8vUEFURU5UUy50eHQKICAgICovZnVuY3Rpb24gcWUodCxlKXtyZXR1cm4gdD8oInN0cmluZyI9PXR5cGVvZiB0JiYodD1MZSh0KSksZSYmWGUodCxlKSxJZSh0LENlKSk6IiJ9ZnVuY3Rpb24gWWUodCl7cmV0dXJuIXQuX19jc3NSdWxlcyYmdC50ZXh0Q29udGVudCYmKHQuX19jc3NSdWxlcz1MZSh0LnRleHRDb250ZW50KSksdC5fX2Nzc1J1bGVzfHxudWxsfWZ1bmN0aW9uIFhlKHQsZSxuLGkpe2lmKCF0KXJldHVybjtsZXQgcj0hMSxvPXQudHlwZTtpZihpJiZvPT09TmUuTUVESUFfUlVMRSl7bGV0IGU9dC5zZWxlY3Rvci5tYXRjaChqZSk7ZSYmKHdpbmRvdy5tYXRjaE1lZGlhKGVbMV0pLm1hdGNoZXN8fChyPSEwKSl9bz09PU5lLlNUWUxFX1JVTEU/ZSh0KTpuJiZvPT09TmUuS0VZRlJBTUVTX1JVTEU/bih0KTpvPT09TmUuTUlYSU5fUlVMRSYmKHI9ITApO2xldCBhPXQucnVsZXM7aWYoYSYmIXIpZm9yKGxldCB0LHI9MCxvPWEubGVuZ3RoO3I8byYmKHQ9YVtyXSk7cisrKVhlKHQsZSxuLGkpfWZ1bmN0aW9uICRlKHQsZSl7bGV0IG49dC5pbmRleE9mKCJ2YXIoIik7aWYoLTE9PT1uKXJldHVybiBlKHQsIiIsIiIsIiIpO2xldCBpPShmdW5jdGlvbiByKHQsZSl7bGV0IG49MDtmb3IobGV0IGk9ZSxyPXQubGVuZ3RoO2k8cjtpKyspaWYoIigiPT09dFtpXSluKys7ZWxzZSBpZigiKSI9PT10W2ldJiYwPT0tLW4pcmV0dXJuIGk7cmV0dXJuLTF9KSh0LG4rMyksbz10LnN1YnN0cmluZyhuKzQsaSksYT10LnN1YnN0cmluZygwLG4pLHM9JGUodC5zdWJzdHJpbmcoaSsxKSxlKSxsPW8uaW5kZXhPZigiLCIpO3JldHVybi0xPT09bD9lKGEsby50cmltKCksIiIscyk6ZShhLG8uc3Vic3RyaW5nKDAsbCkudHJpbSgpLG8uc3Vic3RyaW5nKGwrMSkudHJpbSgpLHMpfXdpbmRvdy5TaGFkeURPTSYmd2luZG93O2NvbnN0IEtlPSJjc3MtYnVpbGQiO2Z1bmN0aW9uIFplKHQpe3JldHVybiIiIT09KGZ1bmN0aW9uIGUodCl7aWYodm9pZCAwIT09RWUpcmV0dXJuIEVlO2lmKHZvaWQgMD09PXQuX19jc3NCdWlsZCl7Y29uc3QgZT10LmdldEF0dHJpYnV0ZShLZSk7aWYoZSl0Ll9fY3NzQnVpbGQ9ZTtlbHNle2NvbnN0IGU9KGZ1bmN0aW9uIGUodCl7Y29uc3QgZT0idGVtcGxhdGUiPT09dC5sb2NhbE5hbWU/dC5jb250ZW50LmZpcnN0Q2hpbGQ6dC5maXJzdENoaWxkO2lmKGUgaW5zdGFuY2VvZiBDb21tZW50KXtjb25zdCB0PWUudGV4dENvbnRlbnQudHJpbSgpLnNwbGl0KCI6Iik7aWYodFswXT09PUtlKXJldHVybiB0WzFdfXJldHVybiIifSkodCk7IiIhPT1lJiYoZnVuY3Rpb24gbih0KXtjb25zdCBlPSJ0ZW1wbGF0ZSI9PT10LmxvY2FsTmFtZT90LmNvbnRlbnQuZmlyc3RDaGlsZDp0LmZpcnN0Q2hpbGQ7ZS5wYXJlbnROb2RlLnJlbW92ZUNoaWxkKGUpfQovKioKICAgIEBsaWNlbnNlCiAgICBDb3B5cmlnaHQgKGMpIDIwMTcgVGhlIFBvbHltZXIgUHJvamVjdCBBdXRob3JzLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICAgVGhpcyBjb2RlIG1heSBvbmx5IGJlIHVzZWQgdW5kZXIgdGhlIEJTRCBzdHlsZSBsaWNlbnNlIGZvdW5kIGF0IGh0dHA6Ly9wb2x5bWVyLmdpdGh1Yi5pby9MSUNFTlNFLnR4dAogICAgVGhlIGNvbXBsZXRlIHNldCBvZiBhdXRob3JzIG1heSBiZSBmb3VuZCBhdCBodHRwOi8vcG9seW1lci5naXRodWIuaW8vQVVUSE9SUy50eHQKICAgIFRoZSBjb21wbGV0ZSBzZXQgb2YgY29udHJpYnV0b3JzIG1heSBiZSBmb3VuZCBhdCBodHRwOi8vcG9seW1lci5naXRodWIuaW8vQ09OVFJJQlVUT1JTLnR4dAogICAgQ29kZSBkaXN0cmlidXRlZCBieSBHb29nbGUgYXMgcGFydCBvZiB0aGUgcG9seW1lciBwcm9qZWN0IGlzIGFsc28KICAgIHN1YmplY3QgdG8gYW4gYWRkaXRpb25hbCBJUCByaWdodHMgZ3JhbnQgZm91bmQgYXQgaHR0cDovL3BvbHltZXIuZ2l0aHViLmlvL1BBVEVOVFMudHh0CiAgICAqLykodCksdC5fX2Nzc0J1aWxkPWV9fXJldHVybiB0Ll9fY3NzQnVpbGR8fCIifSkodCl9ZnVuY3Rpb24gSmUodCxlKXtmb3IobGV0IG4gaW4gZSludWxsPT09bj90LnN0eWxlLnJlbW92ZVByb3BlcnR5KG4pOnQuc3R5bGUuc2V0UHJvcGVydHkobixlW25dKX1mdW5jdGlvbiBRZSh0LGUpe2NvbnN0IG49d2luZG93LmdldENvbXB1dGVkU3R5bGUodCkuZ2V0UHJvcGVydHlWYWx1ZShlKTtyZXR1cm4gbj9uLnRyaW0oKToiIn0KLyoqCiAgICBAbGljZW5zZQogICAgQ29weXJpZ2h0IChjKSAyMDE3IFRoZSBQb2x5bWVyIFByb2plY3QgQXV0aG9ycy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAgIFRoaXMgY29kZSBtYXkgb25seSBiZSB1c2VkIHVuZGVyIHRoZSBCU0Qgc3R5bGUgbGljZW5zZSBmb3VuZCBhdCBodHRwOi8vcG9seW1lci5naXRodWIuaW8vTElDRU5TRS50eHQKICAgIFRoZSBjb21wbGV0ZSBzZXQgb2YgYXV0aG9ycyBtYXkgYmUgZm91bmQgYXQgaHR0cDovL3BvbHltZXIuZ2l0aHViLmlvL0FVVEhPUlMudHh0CiAgICBUaGUgY29tcGxldGUgc2V0IG9mIGNvbnRyaWJ1dG9ycyBtYXkgYmUgZm91bmQgYXQgaHR0cDovL3BvbHltZXIuZ2l0aHViLmlvL0NPTlRSSUJVVE9SUy50eHQKICAgIENvZGUgZGlzdHJpYnV0ZWQgYnkgR29vZ2xlIGFzIHBhcnQgb2YgdGhlIHBvbHltZXIgcHJvamVjdCBpcyBhbHNvCiAgICBzdWJqZWN0IHRvIGFuIGFkZGl0aW9uYWwgSVAgcmlnaHRzIGdyYW50IGZvdW5kIGF0IGh0dHA6Ly9wb2x5bWVyLmdpdGh1Yi5pby9QQVRFTlRTLnR4dAogICAgKi8KY29uc3QgdG49LztccyovbSxlbj0vXlxzKihpbml0aWFsKXwoaW5oZXJpdClccyokLyxubj0vXHMqIWltcG9ydGFudC87Y2xhc3Mgcm57Y29uc3RydWN0b3IoKXt0aGlzLl9tYXA9e319c2V0KHQsZSl7dD10LnRyaW0oKSx0aGlzLl9tYXBbdF09e3Byb3BlcnRpZXM6ZSxkZXBlbmRhbnRzOnt9fX1nZXQodCl7cmV0dXJuIHQ9dC50cmltKCksdGhpcy5fbWFwW3RdfHxudWxsfX1sZXQgb249bnVsbDtjbGFzcyBhbntjb25zdHJ1Y3Rvcigpe3RoaXMuX2N1cnJlbnRFbGVtZW50PW51bGwsdGhpcy5fbWVhc3VyZUVsZW1lbnQ9bnVsbCx0aGlzLl9tYXA9bmV3IHJufWRldGVjdE1peGluKHQpe3JldHVybihmdW5jdGlvbiBlKHQpe2NvbnN0IGU9VmUudGVzdCh0KXx8RmUudGVzdCh0KTtyZXR1cm4gVmUubGFzdEluZGV4PTAsRmUubGFzdEluZGV4PTAsZX0pKHQpfWdhdGhlclN0eWxlcyh0KXtjb25zdCBlPShmdW5jdGlvbiBuKHQpe2NvbnN0IGU9W10sbj10LnF1ZXJ5U2VsZWN0b3JBbGwoInN0eWxlIik7Zm9yKGxldCB0PTA7dDxuLmxlbmd0aDt0Kyspe2NvbnN0IGk9blt0XTtXZShpKT9TZXx8KEdlKGkpLGkucGFyZW50Tm9kZS5yZW1vdmVDaGlsZChpKSk6KGUucHVzaChpLnRleHRDb250ZW50KSxpLnBhcmVudE5vZGUucmVtb3ZlQ2hpbGQoaSkpfXJldHVybiBlLmpvaW4oIiIpLnRyaW0oKX0pKHQuY29udGVudCk7aWYoZSl7Y29uc3Qgbj1kb2N1bWVudC5jcmVhdGVFbGVtZW50KCJzdHlsZSIpO3JldHVybiBuLnRleHRDb250ZW50PWUsdC5jb250ZW50Lmluc2VydEJlZm9yZShuLHQuY29udGVudC5maXJzdENoaWxkKSxufXJldHVybiBudWxsfXRyYW5zZm9ybVRlbXBsYXRlKHQsZSl7dm9pZCAwPT09dC5fZ2F0aGVyZWRTdHlsZSYmKHQuX2dhdGhlcmVkU3R5bGU9dGhpcy5nYXRoZXJTdHlsZXModCkpO2NvbnN0IG49dC5fZ2F0aGVyZWRTdHlsZTtyZXR1cm4gbj90aGlzLnRyYW5zZm9ybVN0eWxlKG4sZSk6bnVsbH10cmFuc2Zvcm1TdHlsZSh0LGU9IiIpe2xldCBuPVllKHQpO3JldHVybiB0aGlzLnRyYW5zZm9ybVJ1bGVzKG4sZSksdC50ZXh0Q29udGVudD1xZShuKSxufXRyYW5zZm9ybUN1c3RvbVN0eWxlKHQpe2xldCBlPVllKHQpO3JldHVybiBYZShlLCh0PT57Ijpyb290Ij09PXQuc2VsZWN0b3ImJih0LnNlbGVjdG9yPSJodG1sIiksdGhpcy50cmFuc2Zvcm1SdWxlKHQpfSkpLHQudGV4dENvbnRlbnQ9cWUoZSksZX10cmFuc2Zvcm1SdWxlcyh0LGUpe3RoaXMuX2N1cnJlbnRFbGVtZW50PWUsWGUodCwodD0+e3RoaXMudHJhbnNmb3JtUnVsZSh0KX0pKSx0aGlzLl9jdXJyZW50RWxlbWVudD1udWxsfXRyYW5zZm9ybVJ1bGUodCl7dC5jc3NUZXh0PXRoaXMudHJhbnNmb3JtQ3NzVGV4dCh0LnBhcnNlZENzc1RleHQsdCksIjpyb290Ij09PXQuc2VsZWN0b3ImJih0LnNlbGVjdG9yPSI6aG9zdCA+ICoiKX10cmFuc2Zvcm1Dc3NUZXh0KHQsZSl7cmV0dXJuIHQ9dC5yZXBsYWNlKEZlLCgodCxuLGkscik9PnRoaXMuX3Byb2R1Y2VDc3NQcm9wZXJ0aWVzKHQsbixpLHIsZSkpKSx0aGlzLl9jb25zdW1lQ3NzUHJvcGVydGllcyh0LGUpfV9nZXRJbml0aWFsVmFsdWVGb3JQcm9wZXJ0eSh0KXtyZXR1cm4gdGhpcy5fbWVhc3VyZUVsZW1lbnR8fCh0aGlzLl9tZWFzdXJlRWxlbWVudD1kb2N1bWVudC5jcmVhdGVFbGVtZW50KCJtZXRhIiksdGhpcy5fbWVhc3VyZUVsZW1lbnQuc2V0QXR0cmlidXRlKCJhcHBseS1zaGltLW1lYXN1cmUiLCIiKSx0aGlzLl9tZWFzdXJlRWxlbWVudC5zdHlsZS5hbGw9ImluaXRpYWwiLGRvY3VtZW50LmhlYWQuYXBwZW5kQ2hpbGQodGhpcy5fbWVhc3VyZUVsZW1lbnQpKSx3aW5kb3cuZ2V0Q29tcHV0ZWRTdHlsZSh0aGlzLl9tZWFzdXJlRWxlbWVudCkuZ2V0UHJvcGVydHlWYWx1ZSh0KX1fZmFsbGJhY2tzRnJvbVByZXZpb3VzUnVsZXModCl7bGV0IGU9dDtmb3IoO2UucGFyZW50OyllPWUucGFyZW50O2NvbnN0IG49e307bGV0IGk9ITE7cmV0dXJuIFhlKGUsKGU9PntpPWl8fGU9PT10LGl8fGUuc2VsZWN0b3I9PT10LnNlbGVjdG9yJiZPYmplY3QuYXNzaWduKG4sdGhpcy5fY3NzVGV4dFRvTWFwKGUucGFyc2VkQ3NzVGV4dCkpfSkpLG59X2NvbnN1bWVDc3NQcm9wZXJ0aWVzKHQsZSl7bGV0IG49bnVsbDtmb3IoO249VmUuZXhlYyh0KTspe2xldCBpPW5bMF0scj1uWzFdLG89bi5pbmRleCxhPW8raS5pbmRleE9mKCJAYXBwbHkiKSxzPW8raS5sZW5ndGgsbD10LnNsaWNlKDAsYSksYz10LnNsaWNlKHMpLHU9ZT90aGlzLl9mYWxsYmFja3NGcm9tUHJldmlvdXNSdWxlcyhlKTp7fTtPYmplY3QuYXNzaWduKHUsdGhpcy5fY3NzVGV4dFRvTWFwKGwpKTtsZXQgaD10aGlzLl9hdEFwcGx5VG9Dc3NQcm9wZXJ0aWVzKHIsdSk7dD1gJHtsfSR7aH0ke2N9YCxWZS5sYXN0SW5kZXg9bytoLmxlbmd0aH1yZXR1cm4gdH1fYXRBcHBseVRvQ3NzUHJvcGVydGllcyh0LGUpe3Q9dC5yZXBsYWNlKHRuLCIiKTtsZXQgbj1bXSxpPXRoaXMuX21hcC5nZXQodCk7aWYoaXx8KHRoaXMuX21hcC5zZXQodCx7fSksaT10aGlzLl9tYXAuZ2V0KHQpKSxpKXtsZXQgcixvLGE7dGhpcy5fY3VycmVudEVsZW1lbnQmJihpLmRlcGVuZGFudHNbdGhpcy5fY3VycmVudEVsZW1lbnRdPSEwKTtjb25zdCBzPWkucHJvcGVydGllcztmb3IociBpbiBzKWE9ZSYmZVtyXSxvPVtyLCI6IHZhcigiLHQsIl8tXyIscl0sYSYmby5wdXNoKCIsIixhLnJlcGxhY2Uobm4sIiIpKSxvLnB1c2goIikiKSxubi50ZXN0KHNbcl0pJiZvLnB1c2goIiAhaW1wb3J0YW50Iiksbi5wdXNoKG8uam9pbigiIikpfXJldHVybiBuLmpvaW4oIjsgIil9X3JlcGxhY2VJbml0aWFsT3JJbmhlcml0KHQsZSl7bGV0IG49ZW4uZXhlYyhlKTtyZXR1cm4gbiYmKGU9blsxXT90aGlzLl9nZXRJbml0aWFsVmFsdWVGb3JQcm9wZXJ0eSh0KToiYXBwbHktc2hpbS1pbmhlcml0IiksZX1fY3NzVGV4dFRvTWFwKHQsZT0hMSl7bGV0IG4saSxyPXQuc3BsaXQoIjsiKSxvPXt9O2ZvcihsZXQgdCxhLHM9MDtzPHIubGVuZ3RoO3MrKyl0PXJbc10sdCYmKGE9dC5zcGxpdCgiOiIpLGEubGVuZ3RoPjEmJihuPWFbMF0udHJpbSgpLGk9YS5zbGljZSgxKS5qb2luKCI6IiksZSYmKGk9dGhpcy5fcmVwbGFjZUluaXRpYWxPckluaGVyaXQobixpKSksb1tuXT1pKSk7cmV0dXJuIG99X2ludmFsaWRhdGVNaXhpbkVudHJ5KHQpe2lmKG9uKWZvcihsZXQgZSBpbiB0LmRlcGVuZGFudHMpZSE9PXRoaXMuX2N1cnJlbnRFbGVtZW50JiZvbihlKX1fcHJvZHVjZUNzc1Byb3BlcnRpZXModCxlLG4saSxyKXtpZihuJiYkZShuLCgodCxlKT0+e2UmJnRoaXMuX21hcC5nZXQoZSkmJihpPWBAYXBwbHkgJHtlfTtgKX0pKSwhaSlyZXR1cm4gdDtsZXQgbz10aGlzLl9jb25zdW1lQ3NzUHJvcGVydGllcygiIitpLHIpLGE9dC5zbGljZSgwLHQuaW5kZXhPZigiLS0iKSkscz10aGlzLl9jc3NUZXh0VG9NYXAobywhMCksbD1zLGM9dGhpcy5fbWFwLmdldChlKSx1PWMmJmMucHJvcGVydGllczt1P2w9T2JqZWN0LmFzc2lnbihPYmplY3QuY3JlYXRlKHUpLHMpOnRoaXMuX21hcC5zZXQoZSxsKTtsZXQgaCxkLHA9W10sZj0hMTtmb3IoaCBpbiBsKWQ9c1toXSx2b2lkIDA9PT1kJiYoZD0iaW5pdGlhbCIpLHUmJiEoaCBpbiB1KSYmKGY9ITApLHAucHVzaChgJHtlfV8tXyR7aH06ICR7ZH1gKTtyZXR1cm4gZiYmdGhpcy5faW52YWxpZGF0ZU1peGluRW50cnkoYyksYyYmKGMucHJvcGVydGllcz1sKSxuJiYoYT1gJHt0fTske2F9YCksYCR7YX0ke3Auam9pbigiOyAiKX07YH19YW4ucHJvdG90eXBlLmRldGVjdE1peGluPWFuLnByb3RvdHlwZS5kZXRlY3RNaXhpbixhbi5wcm90b3R5cGUudHJhbnNmb3JtU3R5bGU9YW4ucHJvdG90eXBlLnRyYW5zZm9ybVN0eWxlLGFuLnByb3RvdHlwZS50cmFuc2Zvcm1DdXN0b21TdHlsZT1hbi5wcm90b3R5cGUudHJhbnNmb3JtQ3VzdG9tU3R5bGUsYW4ucHJvdG90eXBlLnRyYW5zZm9ybVJ1bGVzPWFuLnByb3RvdHlwZS50cmFuc2Zvcm1SdWxlcyxhbi5wcm90b3R5cGUudHJhbnNmb3JtUnVsZT1hbi5wcm90b3R5cGUudHJhbnNmb3JtUnVsZSxhbi5wcm90b3R5cGUudHJhbnNmb3JtVGVtcGxhdGU9YW4ucHJvdG90eXBlLnRyYW5zZm9ybVRlbXBsYXRlLGFuLnByb3RvdHlwZS5fc2VwYXJhdG9yPSJfLV8iLE9iamVjdC5kZWZpbmVQcm9wZXJ0eShhbi5wcm90b3R5cGUsImludmFsaWRDYWxsYmFjayIse2dldDooKT0+b24sc2V0KHQpe29uPXR9fSk7Ci8qKgogICAgQGxpY2Vuc2UKICAgIENvcHlyaWdodCAoYykgMjAxNyBUaGUgUG9seW1lciBQcm9qZWN0IEF1dGhvcnMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgICBUaGlzIGNvZGUgbWF5IG9ubHkgYmUgdXNlZCB1bmRlciB0aGUgQlNEIHN0eWxlIGxpY2Vuc2UgZm91bmQgYXQgaHR0cDovL3BvbHltZXIuZ2l0aHViLmlvL0xJQ0VOU0UudHh0CiAgICBUaGUgY29tcGxldGUgc2V0IG9mIGF1dGhvcnMgbWF5IGJlIGZvdW5kIGF0IGh0dHA6Ly9wb2x5bWVyLmdpdGh1Yi5pby9BVVRIT1JTLnR4dAogICAgVGhlIGNvbXBsZXRlIHNldCBvZiBjb250cmlidXRvcnMgbWF5IGJlIGZvdW5kIGF0IGh0dHA6Ly9wb2x5bWVyLmdpdGh1Yi5pby9DT05UUklCVVRPUlMudHh0CiAgICBDb2RlIGRpc3RyaWJ1dGVkIGJ5IEdvb2dsZSBhcyBwYXJ0IG9mIHRoZSBwb2x5bWVyIHByb2plY3QgaXMgYWxzbwogICAgc3ViamVjdCB0byBhbiBhZGRpdGlvbmFsIElQIHJpZ2h0cyBncmFudCBmb3VuZCBhdCBodHRwOi8vcG9seW1lci5naXRodWIuaW8vUEFURU5UUy50eHQKICAgICovCmNvbnN0IHNuPXt9LGxuPSJfYXBwbHlTaGltQ3VycmVudFZlcnNpb24iLGNuPSJfYXBwbHlTaGltTmV4dFZlcnNpb24iLHVuPSJfYXBwbHlTaGltVmFsaWRhdGluZ1ZlcnNpb24iLGhuPVByb21pc2UucmVzb2x2ZSgpOwovKioKICAgIEBsaWNlbnNlCiAgICBDb3B5cmlnaHQgKGMpIDIwMTcgVGhlIFBvbHltZXIgUHJvamVjdCBBdXRob3JzLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICAgVGhpcyBjb2RlIG1heSBvbmx5IGJlIHVzZWQgdW5kZXIgdGhlIEJTRCBzdHlsZSBsaWNlbnNlIGZvdW5kIGF0IGh0dHA6Ly9wb2x5bWVyLmdpdGh1Yi5pby9MSUNFTlNFLnR4dAogICAgVGhlIGNvbXBsZXRlIHNldCBvZiBhdXRob3JzIG1heSBiZSBmb3VuZCBhdCBodHRwOi8vcG9seW1lci5naXRodWIuaW8vQVVUSE9SUy50eHQKICAgIFRoZSBjb21wbGV0ZSBzZXQgb2YgY29udHJpYnV0b3JzIG1heSBiZSBmb3VuZCBhdCBodHRwOi8vcG9seW1lci5naXRodWIuaW8vQ09OVFJJQlVUT1JTLnR4dAogICAgQ29kZSBkaXN0cmlidXRlZCBieSBHb29nbGUgYXMgcGFydCBvZiB0aGUgcG9seW1lciBwcm9qZWN0IGlzIGFsc28KICAgIHN1YmplY3QgdG8gYW4gYWRkaXRpb25hbCBJUCByaWdodHMgZ3JhbnQgZm91bmQgYXQgaHR0cDovL3BvbHltZXIuZ2l0aHViLmlvL1BBVEVOVFMudHh0CiAgICAqL2Z1bmN0aW9uIGRuKHQpe2xldCBlPXNuW3RdO2UmJihmdW5jdGlvbiBuKHQpe3RbbG5dPXRbbG5dfHwwLHRbdW5dPXRbdW5dfHwwLHRbY25dPSh0W2NuXXx8MCkrMX0pKGUpfWZ1bmN0aW9uIHBuKHQpe3JldHVybiB0W2xuXT09PXRbY25dfQovKioKICAgIEBsaWNlbnNlCiAgICBDb3B5cmlnaHQgKGMpIDIwMTcgVGhlIFBvbHltZXIgUHJvamVjdCBBdXRob3JzLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICAgVGhpcyBjb2RlIG1heSBvbmx5IGJlIHVzZWQgdW5kZXIgdGhlIEJTRCBzdHlsZSBsaWNlbnNlIGZvdW5kIGF0IGh0dHA6Ly9wb2x5bWVyLmdpdGh1Yi5pby9MSUNFTlNFLnR4dAogICAgVGhlIGNvbXBsZXRlIHNldCBvZiBhdXRob3JzIG1heSBiZSBmb3VuZCBhdCBodHRwOi8vcG9seW1lci5naXRodWIuaW8vQVVUSE9SUy50eHQKICAgIFRoZSBjb21wbGV0ZSBzZXQgb2YgY29udHJpYnV0b3JzIG1heSBiZSBmb3VuZCBhdCBodHRwOi8vcG9seW1lci5naXRodWIuaW8vQ09OVFJJQlVUT1JTLnR4dAogICAgQ29kZSBkaXN0cmlidXRlZCBieSBHb29nbGUgYXMgcGFydCBvZiB0aGUgcG9seW1lciBwcm9qZWN0IGlzIGFsc28KICAgIHN1YmplY3QgdG8gYW4gYWRkaXRpb25hbCBJUCByaWdodHMgZ3JhbnQgZm91bmQgYXQgaHR0cDovL3BvbHltZXIuZ2l0aHViLmlvL1BBVEVOVFMudHh0CiAgICAqLwpsZXQgZm4sbW49bnVsbCxnbj13aW5kb3cuSFRNTEltcG9ydHMmJndpbmRvdy5IVE1MSW1wb3J0cy53aGVuUmVhZHl8fG51bGw7ZnVuY3Rpb24gX24odCl7cmVxdWVzdEFuaW1hdGlvbkZyYW1lKChmdW5jdGlvbigpe2duP2duKHQpOihtbnx8KG1uPW5ldyBQcm9taXNlKCh0PT57Zm49dH0pKSwiY29tcGxldGUiPT09ZG9jdW1lbnQucmVhZHlTdGF0ZT9mbigpOmRvY3VtZW50LmFkZEV2ZW50TGlzdGVuZXIoInJlYWR5c3RhdGVjaGFuZ2UiLCgoKT0+eyJjb21wbGV0ZSI9PT1kb2N1bWVudC5yZWFkeVN0YXRlJiZmbigpfSkpKSxtbi50aGVuKChmdW5jdGlvbigpe3QmJnQoKX0pKSl9KSl9Ci8qKgogICAgQGxpY2Vuc2UKICAgIENvcHlyaWdodCAoYykgMjAxNyBUaGUgUG9seW1lciBQcm9qZWN0IEF1dGhvcnMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgICBUaGlzIGNvZGUgbWF5IG9ubHkgYmUgdXNlZCB1bmRlciB0aGUgQlNEIHN0eWxlIGxpY2Vuc2UgZm91bmQgYXQgaHR0cDovL3BvbHltZXIuZ2l0aHViLmlvL0xJQ0VOU0UudHh0CiAgICBUaGUgY29tcGxldGUgc2V0IG9mIGF1dGhvcnMgbWF5IGJlIGZvdW5kIGF0IGh0dHA6Ly9wb2x5bWVyLmdpdGh1Yi5pby9BVVRIT1JTLnR4dAogICAgVGhlIGNvbXBsZXRlIHNldCBvZiBjb250cmlidXRvcnMgbWF5IGJlIGZvdW5kIGF0IGh0dHA6Ly9wb2x5bWVyLmdpdGh1Yi5pby9DT05UUklCVVRPUlMudHh0CiAgICBDb2RlIGRpc3RyaWJ1dGVkIGJ5IEdvb2dsZSBhcyBwYXJ0IG9mIHRoZSBwb2x5bWVyIHByb2plY3QgaXMgYWxzbwogICAgc3ViamVjdCB0byBhbiBhZGRpdGlvbmFsIElQIHJpZ2h0cyBncmFudCBmb3VuZCBhdCBodHRwOi8vcG9seW1lci5naXRodWIuaW8vUEFURU5UUy50eHQKICAgICovY29uc3QgeW49Il9fc2VlbkJ5U2hhZHlDU1MiLHZuPSJfX3NoYWR5Q1NTQ2FjaGVkU3R5bGUiO2xldCBibj1udWxsLHhuPW51bGw7Y2xhc3Mgd257Y29uc3RydWN0b3IoKXt0aGlzLmN1c3RvbVN0eWxlcz1bXSx0aGlzLmVucXVldWVkPSExLF9uKCgoKT0+e3dpbmRvdy5TaGFkeUNTUy5mbHVzaEN1c3RvbVN0eWxlcyYmd2luZG93LlNoYWR5Q1NTLmZsdXNoQ3VzdG9tU3R5bGVzKCl9KSl9ZW5xdWV1ZURvY3VtZW50VmFsaWRhdGlvbigpeyF0aGlzLmVucXVldWVkJiZ4biYmKHRoaXMuZW5xdWV1ZWQ9ITAsX24oeG4pKX1hZGRDdXN0b21TdHlsZSh0KXt0W3luXXx8KHRbeW5dPSEwLHRoaXMuY3VzdG9tU3R5bGVzLnB1c2godCksdGhpcy5lbnF1ZXVlRG9jdW1lbnRWYWxpZGF0aW9uKCkpfWdldFN0eWxlRm9yQ3VzdG9tU3R5bGUodCl7aWYodFt2bl0pcmV0dXJuIHRbdm5dO2xldCBlO3JldHVybiBlPXQuZ2V0U3R5bGU/dC5nZXRTdHlsZSgpOnQsZX1wcm9jZXNzU3R5bGVzKCl7Y29uc3QgdD10aGlzLmN1c3RvbVN0eWxlcztmb3IobGV0IGU9MDtlPHQubGVuZ3RoO2UrKyl7Y29uc3Qgbj10W2VdO2lmKG5bdm5dKWNvbnRpbnVlO2NvbnN0IGk9dGhpcy5nZXRTdHlsZUZvckN1c3RvbVN0eWxlKG4pO2lmKGkpe2NvbnN0IHQ9aS5fX2FwcGxpZWRFbGVtZW50fHxpO2JuJiZibih0KSxuW3ZuXT10fX1yZXR1cm4gdH19d24ucHJvdG90eXBlLmFkZEN1c3RvbVN0eWxlPXduLnByb3RvdHlwZS5hZGRDdXN0b21TdHlsZSx3bi5wcm90b3R5cGUuZ2V0U3R5bGVGb3JDdXN0b21TdHlsZT13bi5wcm90b3R5cGUuZ2V0U3R5bGVGb3JDdXN0b21TdHlsZSx3bi5wcm90b3R5cGUucHJvY2Vzc1N0eWxlcz13bi5wcm90b3R5cGUucHJvY2Vzc1N0eWxlcyxPYmplY3QuZGVmaW5lUHJvcGVydGllcyh3bi5wcm90b3R5cGUse3RyYW5zZm9ybUNhbGxiYWNrOntnZXQ6KCk9PmJuLHNldCh0KXtibj10fX0sdmFsaWRhdGVDYWxsYmFjazp7Z2V0OigpPT54bixzZXQodCl7bGV0IGU9ITE7eG58fChlPSEwKSx4bj10LGUmJnRoaXMuZW5xdWV1ZURvY3VtZW50VmFsaWRhdGlvbigpfX19KTsKLyoqCiAgICBAbGljZW5zZQogICAgQ29weXJpZ2h0IChjKSAyMDE3IFRoZSBQb2x5bWVyIFByb2plY3QgQXV0aG9ycy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAgIFRoaXMgY29kZSBtYXkgb25seSBiZSB1c2VkIHVuZGVyIHRoZSBCU0Qgc3R5bGUgbGljZW5zZSBmb3VuZCBhdCBodHRwOi8vcG9seW1lci5naXRodWIuaW8vTElDRU5TRS50eHQKICAgIFRoZSBjb21wbGV0ZSBzZXQgb2YgYXV0aG9ycyBtYXkgYmUgZm91bmQgYXQgaHR0cDovL3BvbHltZXIuZ2l0aHViLmlvL0FVVEhPUlMudHh0CiAgICBUaGUgY29tcGxldGUgc2V0IG9mIGNvbnRyaWJ1dG9ycyBtYXkgYmUgZm91bmQgYXQgaHR0cDovL3BvbHltZXIuZ2l0aHViLmlvL0NPTlRSSUJVVE9SUy50eHQKICAgIENvZGUgZGlzdHJpYnV0ZWQgYnkgR29vZ2xlIGFzIHBhcnQgb2YgdGhlIHBvbHltZXIgcHJvamVjdCBpcyBhbHNvCiAgICBzdWJqZWN0IHRvIGFuIGFkZGl0aW9uYWwgSVAgcmlnaHRzIGdyYW50IGZvdW5kIGF0IGh0dHA6Ly9wb2x5bWVyLmdpdGh1Yi5pby9QQVRFTlRTLnR4dAogICAgKi8KY29uc3QgU249bmV3IGFuO2NsYXNzIE1ue2NvbnN0cnVjdG9yKCl7dGhpcy5jdXN0b21TdHlsZUludGVyZmFjZT1udWxsLFNuLmludmFsaWRDYWxsYmFjaz1kbn1lbnN1cmUoKXt0aGlzLmN1c3RvbVN0eWxlSW50ZXJmYWNlfHx3aW5kb3cuU2hhZHlDU1MuQ3VzdG9tU3R5bGVJbnRlcmZhY2UmJih0aGlzLmN1c3RvbVN0eWxlSW50ZXJmYWNlPXdpbmRvdy5TaGFkeUNTUy5DdXN0b21TdHlsZUludGVyZmFjZSx0aGlzLmN1c3RvbVN0eWxlSW50ZXJmYWNlLnRyYW5zZm9ybUNhbGxiYWNrPXQ9PntTbi50cmFuc2Zvcm1DdXN0b21TdHlsZSh0KX0sdGhpcy5jdXN0b21TdHlsZUludGVyZmFjZS52YWxpZGF0ZUNhbGxiYWNrPSgpPT57cmVxdWVzdEFuaW1hdGlvbkZyYW1lKCgoKT0+e3RoaXMuY3VzdG9tU3R5bGVJbnRlcmZhY2UuZW5xdWV1ZWQmJnRoaXMuZmx1c2hDdXN0b21TdHlsZXMoKX0pKX0pfXByZXBhcmVUZW1wbGF0ZSh0LGUpe2lmKHRoaXMuZW5zdXJlKCksWmUodCkpcmV0dXJuO3NuW2VdPXQ7bGV0IG49U24udHJhbnNmb3JtVGVtcGxhdGUodCxlKTt0Ll9zdHlsZUFzdD1ufWZsdXNoQ3VzdG9tU3R5bGVzKCl7aWYodGhpcy5lbnN1cmUoKSwhdGhpcy5jdXN0b21TdHlsZUludGVyZmFjZSlyZXR1cm47bGV0IHQ9dGhpcy5jdXN0b21TdHlsZUludGVyZmFjZS5wcm9jZXNzU3R5bGVzKCk7aWYodGhpcy5jdXN0b21TdHlsZUludGVyZmFjZS5lbnF1ZXVlZCl7Zm9yKGxldCBlPTA7ZTx0Lmxlbmd0aDtlKyspe2xldCBuPXRoaXMuY3VzdG9tU3R5bGVJbnRlcmZhY2UuZ2V0U3R5bGVGb3JDdXN0b21TdHlsZSh0W2VdKTtuJiZTbi50cmFuc2Zvcm1DdXN0b21TdHlsZShuKX10aGlzLmN1c3RvbVN0eWxlSW50ZXJmYWNlLmVucXVldWVkPSExfX1zdHlsZVN1YnRyZWUodCxlKXtpZih0aGlzLmVuc3VyZSgpLGUmJkplKHQsZSksdC5zaGFkb3dSb290KXt0aGlzLnN0eWxlRWxlbWVudCh0KTtsZXQgZT10LnNoYWRvd1Jvb3QuY2hpbGRyZW58fHQuc2hhZG93Um9vdC5jaGlsZE5vZGVzO2ZvcihsZXQgdD0wO3Q8ZS5sZW5ndGg7dCsrKXRoaXMuc3R5bGVTdWJ0cmVlKGVbdF0pfWVsc2V7bGV0IGU9dC5jaGlsZHJlbnx8dC5jaGlsZE5vZGVzO2ZvcihsZXQgdD0wO3Q8ZS5sZW5ndGg7dCsrKXRoaXMuc3R5bGVTdWJ0cmVlKGVbdF0pfX1zdHlsZUVsZW1lbnQodCl7dGhpcy5lbnN1cmUoKTtsZXR7aXM6ZX09KGZ1bmN0aW9uIG4odCl7bGV0IGU9dC5sb2NhbE5hbWUsbj0iIixpPSIiO3JldHVybiBlP2UuaW5kZXhPZigiLSIpPi0xP249ZTooaT1lLG49dC5nZXRBdHRyaWJ1dGUmJnQuZ2V0QXR0cmlidXRlKCJpcyIpfHwiIik6KG49dC5pcyxpPXQuZXh0ZW5kcykse2lzOm4sdHlwZUV4dGVuc2lvbjppfX0pKHQpLGk9c25bZV07aWYoKCFpfHwhWmUoaSkpJiZpJiYhcG4oaSkpeyhmdW5jdGlvbiByKHQpe3JldHVybiFwbih0KSYmdFt1bl09PT10W2NuXX0pKGkpfHwodGhpcy5wcmVwYXJlVGVtcGxhdGUoaSxlKSwoZnVuY3Rpb24gbyh0KXt0W3VuXT10W2NuXSx0Ll92YWxpZGF0aW5nfHwodC5fdmFsaWRhdGluZz0hMCxobi50aGVuKChmdW5jdGlvbigpe3RbbG5dPXRbY25dLHQuX3ZhbGlkYXRpbmc9ITF9KSkpfSkoaSkpO2xldCBuPXQuc2hhZG93Um9vdDtpZihuKXtsZXQgdD1uLnF1ZXJ5U2VsZWN0b3IoInN0eWxlIik7dCYmKHQuX19jc3NSdWxlcz1pLl9zdHlsZUFzdCx0LnRleHRDb250ZW50PXFlKGkuX3N0eWxlQXN0KSl9fX1zdHlsZURvY3VtZW50KHQpe3RoaXMuZW5zdXJlKCksdGhpcy5zdHlsZVN1YnRyZWUoZG9jdW1lbnQuYm9keSx0KX19aWYoIXdpbmRvdy5TaGFkeUNTU3x8IXdpbmRvdy5TaGFkeUNTUy5TY29waW5nU2hpbSl7Y29uc3QgdD1uZXcgTW47bGV0IGU9d2luZG93LlNoYWR5Q1NTJiZ3aW5kb3cuU2hhZHlDU1MuQ3VzdG9tU3R5bGVJbnRlcmZhY2U7d2luZG93LlNoYWR5Q1NTPXtwcmVwYXJlVGVtcGxhdGUoZSxuLGkpe3QuZmx1c2hDdXN0b21TdHlsZXMoKSx0LnByZXBhcmVUZW1wbGF0ZShlLG4pfSxwcmVwYXJlVGVtcGxhdGVTdHlsZXModCxlLG4pe3dpbmRvdy5TaGFkeUNTUy5wcmVwYXJlVGVtcGxhdGUodCxlLG4pfSxwcmVwYXJlVGVtcGxhdGVEb20odCxlKXt9LHN0eWxlU3VidHJlZShlLG4pe3QuZmx1c2hDdXN0b21TdHlsZXMoKSx0LnN0eWxlU3VidHJlZShlLG4pfSxzdHlsZUVsZW1lbnQoZSl7dC5mbHVzaEN1c3RvbVN0eWxlcygpLHQuc3R5bGVFbGVtZW50KGUpfSxzdHlsZURvY3VtZW50KGUpe3QuZmx1c2hDdXN0b21TdHlsZXMoKSx0LnN0eWxlRG9jdW1lbnQoZSl9LGdldENvbXB1dGVkU3R5bGVWYWx1ZToodCxlKT0+UWUodCxlKSxmbHVzaEN1c3RvbVN0eWxlcygpe3QuZmx1c2hDdXN0b21TdHlsZXMoKX0sbmF0aXZlQ3NzOkNlLG5hdGl2ZVNoYWRvdzpTZSxjc3NCdWlsZDpFZSxkaXNhYmxlUnVudGltZTpBZX0sZSYmKHdpbmRvdy5TaGFkeUNTUy5DdXN0b21TdHlsZUludGVyZmFjZT1lKX13aW5kb3cuU2hhZHlDU1MuQXBwbHlTaGltPVNuOwovKioKICAgIEBsaWNlbnNlCiAgICBDb3B5cmlnaHQgKGMpIDIwMTcgVGhlIFBvbHltZXIgUHJvamVjdCBBdXRob3JzLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICAgVGhpcyBjb2RlIG1heSBvbmx5IGJlIHVzZWQgdW5kZXIgdGhlIEJTRCBzdHlsZSBsaWNlbnNlIGZvdW5kIGF0IGh0dHA6Ly9wb2x5bWVyLmdpdGh1Yi5pby9MSUNFTlNFLnR4dAogICAgVGhlIGNvbXBsZXRlIHNldCBvZiBhdXRob3JzIG1heSBiZSBmb3VuZCBhdCBodHRwOi8vcG9seW1lci5naXRodWIuaW8vQVVUSE9SUy50eHQKICAgIFRoZSBjb21wbGV0ZSBzZXQgb2YgY29udHJpYnV0b3JzIG1heSBiZSBmb3VuZCBhdCBodHRwOi8vcG9seW1lci5naXRodWIuaW8vQ09OVFJJQlVUT1JTLnR4dAogICAgQ29kZSBkaXN0cmlidXRlZCBieSBHb29nbGUgYXMgcGFydCBvZiB0aGUgcG9seW1lciBwcm9qZWN0IGlzIGFsc28KICAgIHN1YmplY3QgdG8gYW4gYWRkaXRpb25hbCBJUCByaWdodHMgZ3JhbnQgZm91bmQgYXQgaHR0cDovL3BvbHltZXIuZ2l0aHViLmlvL1BBVEVOVFMudHh0CiAgICAqLwpjbGFzcyBFbntjb25zdHJ1Y3Rvcigpe3RoaXMuX2FzeW5jTW9kdWxlPW51bGwsdGhpcy5fY2FsbGJhY2s9bnVsbCx0aGlzLl90aW1lcj1udWxsfXNldENvbmZpZyh0LGUpe3RoaXMuX2FzeW5jTW9kdWxlPXQsdGhpcy5fY2FsbGJhY2s9ZSx0aGlzLl90aW1lcj10aGlzLl9hc3luY01vZHVsZS5ydW4oKCgpPT57dGhpcy5fdGltZXI9bnVsbCxUbi5kZWxldGUodGhpcyksdGhpcy5fY2FsbGJhY2soKX0pKX1jYW5jZWwoKXt0aGlzLmlzQWN0aXZlKCkmJih0aGlzLl9jYW5jZWxBc3luYygpLFRuLmRlbGV0ZSh0aGlzKSl9X2NhbmNlbEFzeW5jKCl7dGhpcy5pc0FjdGl2ZSgpJiYodGhpcy5fYXN5bmNNb2R1bGUuY2FuY2VsKHRoaXMuX3RpbWVyKSx0aGlzLl90aW1lcj1udWxsKX1mbHVzaCgpe3RoaXMuaXNBY3RpdmUoKSYmKHRoaXMuY2FuY2VsKCksdGhpcy5fY2FsbGJhY2soKSl9aXNBY3RpdmUoKXtyZXR1cm4gbnVsbCE9dGhpcy5fdGltZXJ9c3RhdGljIGRlYm91bmNlKHQsZSxuKXtyZXR1cm4gdCBpbnN0YW5jZW9mIEVuP3QuX2NhbmNlbEFzeW5jKCk6dD1uZXcgRW4sdC5zZXRDb25maWcoZSxuKSx0fX1sZXQgVG49bmV3IFNldDtjb25zdCBBbj1mdW5jdGlvbih0KXtUbi5hZGQodCl9LENuPWZ1bmN0aW9uKCl7Y29uc3QgdD1Cb29sZWFuKFRuLnNpemUpO3JldHVybiBUbi5mb3JFYWNoKCh0PT57dHJ5e3QuZmx1c2goKX1jYXRjaCh0KXtzZXRUaW1lb3V0KCgoKT0+e3Rocm93IHR9KSl9fSkpLHR9OwovKioKICAgIEBsaWNlbnNlCiAgICBDb3B5cmlnaHQgKGMpIDIwMTcgVGhlIFBvbHltZXIgUHJvamVjdCBBdXRob3JzLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICAgVGhpcyBjb2RlIG1heSBvbmx5IGJlIHVzZWQgdW5kZXIgdGhlIEJTRCBzdHlsZSBsaWNlbnNlIGZvdW5kIGF0IGh0dHA6Ly9wb2x5bWVyLmdpdGh1Yi5pby9MSUNFTlNFLnR4dAogICAgVGhlIGNvbXBsZXRlIHNldCBvZiBhdXRob3JzIG1heSBiZSBmb3VuZCBhdCBodHRwOi8vcG9seW1lci5naXRodWIuaW8vQVVUSE9SUy50eHQKICAgIFRoZSBjb21wbGV0ZSBzZXQgb2YgY29udHJpYnV0b3JzIG1heSBiZSBmb3VuZCBhdCBodHRwOi8vcG9seW1lci5naXRodWIuaW8vQ09OVFJJQlVUT1JTLnR4dAogICAgQ29kZSBkaXN0cmlidXRlZCBieSBHb29nbGUgYXMgcGFydCBvZiB0aGUgcG9seW1lciBwcm9qZWN0IGlzIGFsc28KICAgIHN1YmplY3QgdG8gYW4gYWRkaXRpb25hbCBJUCByaWdodHMgZ3JhbnQgZm91bmQgYXQgaHR0cDovL3BvbHltZXIuZ2l0aHViLmlvL1BBVEVOVFMudHh0CiAgICAqLwpsZXQga249InN0cmluZyI9PXR5cGVvZiBkb2N1bWVudC5oZWFkLnN0eWxlLnRvdWNoQWN0aW9uLExuPSJfX3BvbHltZXJHZXN0dXJlcyIsUG49Il9fcG9seW1lckdlc3R1cmVzSGFuZGxlZCIsSW49Il9fcG9seW1lckdlc3R1cmVzVG91Y2hBY3Rpb24iLE5uPVsibW91c2Vkb3duIiwibW91c2Vtb3ZlIiwibW91c2V1cCIsImNsaWNrIl0sT249WzAsMSw0LDJdLFJuPShmdW5jdGlvbigpe3RyeXtyZXR1cm4gMT09PW5ldyBNb3VzZUV2ZW50KCJ0ZXN0Iix7YnV0dG9uczoxfSkuYnV0dG9uc31jYXRjaCh0KXtyZXR1cm4hMX19KSgpO2Z1bmN0aW9uIHpuKHQpe3JldHVybiBObi5pbmRleE9mKHQpPi0xfWxldCBEbj0hMTtmdW5jdGlvbiBCbih0KXtpZighem4odCkmJiJ0b3VjaGVuZCIhPT10KXJldHVybiBrbiYmRG4mJnY/e3Bhc3NpdmU6ITB9OnZvaWQgMH0hKGZ1bmN0aW9uKCl7dHJ5e2xldCB0PU9iamVjdC5kZWZpbmVQcm9wZXJ0eSh7fSwicGFzc2l2ZSIse2dldCgpe0RuPSEwfX0pO3dpbmRvdy5hZGRFdmVudExpc3RlbmVyKCJ0ZXN0IixudWxsLHQpLHdpbmRvdy5yZW1vdmVFdmVudExpc3RlbmVyKCJ0ZXN0IixudWxsLHQpfWNhdGNoKHQpe319KSgpO2xldCBIbj1uYXZpZ2F0b3IudXNlckFnZW50Lm1hdGNoKC9pUCg/OltvYV1kfGhvbmUpfEFuZHJvaWQvKTtjb25zdCBGbj1bXSxWbj17YnV0dG9uOiEwLGlucHV0OiEwLGtleWdlbjohMCxtZXRlcjohMCxvdXRwdXQ6ITAsdGV4dGFyZWE6ITAscHJvZ3Jlc3M6ITAsc2VsZWN0OiEwfSxqbj17YnV0dG9uOiEwLGNvbW1hbmQ6ITAsZmllbGRzZXQ6ITAsaW5wdXQ6ITAsa2V5Z2VuOiEwLG9wdGdyb3VwOiEwLG9wdGlvbjohMCxzZWxlY3Q6ITAsdGV4dGFyZWE6ITB9O2Z1bmN0aW9uIFVuKHQpe2xldCBlPUFycmF5LnByb3RvdHlwZS5zbGljZS5jYWxsKHQubGFiZWxzfHxbXSk7aWYoIWUubGVuZ3RoKXtlPVtdO2xldCBuPXQuZ2V0Um9vdE5vZGUoKTtpZih0LmlkKXtsZXQgaT1uLnF1ZXJ5U2VsZWN0b3JBbGwoYGxhYmVsW2ZvciA9ICR7dC5pZH1dYCk7Zm9yKGxldCB0PTA7dDxpLmxlbmd0aDt0KyspZS5wdXNoKGlbdF0pfX1yZXR1cm4gZX1sZXQgR249ZnVuY3Rpb24odCl7bGV0IGU9dC5zb3VyY2VDYXBhYmlsaXRpZXM7aWYoKCFlfHxlLmZpcmVzVG91Y2hFdmVudHMpJiYodFtQbl09e3NraXA6ITB9LCJjbGljayI9PT10LnR5cGUpKXtsZXQgZT0hMSxuPVpuKHQpO2ZvcihsZXQgdD0wO3Q8bi5sZW5ndGg7dCsrKXtpZihuW3RdLm5vZGVUeXBlPT09Tm9kZS5FTEVNRU5UX05PREUpaWYoImxhYmVsIj09PW5bdF0ubG9jYWxOYW1lKUZuLnB1c2goblt0XSk7ZWxzZSBpZihWbltuW3RdLmxvY2FsTmFtZV0pe2xldCBpPVVuKG5bdF0pO2ZvcihsZXQgdD0wO3Q8aS5sZW5ndGg7dCsrKWU9ZXx8Rm4uaW5kZXhPZihpW3RdKT4tMX1pZihuW3RdPT09WW4ubW91c2UudGFyZ2V0KXJldHVybn1pZihlKXJldHVybjt0LnByZXZlbnREZWZhdWx0KCksdC5zdG9wUHJvcGFnYXRpb24oKX19O2Z1bmN0aW9uIFduKHQpe2xldCBlPUhuP1siY2xpY2siXTpObjtmb3IobGV0IG4saT0wO2k8ZS5sZW5ndGg7aSsrKW49ZVtpXSx0PyhGbi5sZW5ndGg9MCxkb2N1bWVudC5hZGRFdmVudExpc3RlbmVyKG4sR24sITApKTpkb2N1bWVudC5yZW1vdmVFdmVudExpc3RlbmVyKG4sR24sITApfWZ1bmN0aW9uIHFuKHQpe2xldCBlPXQudHlwZTtpZighem4oZSkpcmV0dXJuITE7aWYoIm1vdXNlbW92ZSI9PT1lKXtsZXQgZT12b2lkIDA9PT10LmJ1dHRvbnM/MTp0LmJ1dHRvbnM7cmV0dXJuIHQgaW5zdGFuY2VvZiB3aW5kb3cuTW91c2VFdmVudCYmIVJuJiYoZT1Pblt0LndoaWNoXXx8MCksQm9vbGVhbigxJmUpfXJldHVybiAwPT09KHZvaWQgMD09PXQuYnV0dG9uPzA6dC5idXR0b24pfWxldCBZbj17bW91c2U6e3RhcmdldDpudWxsLG1vdXNlSWdub3JlSm9iOm51bGx9LHRvdWNoOnt4OjAseTowLGlkOi0xLHNjcm9sbERlY2lkZWQ6ITF9fTtmdW5jdGlvbiBYbih0LGUsbil7dC5tb3ZlZm49ZSx0LnVwZm49bixkb2N1bWVudC5hZGRFdmVudExpc3RlbmVyKCJtb3VzZW1vdmUiLGUpLGRvY3VtZW50LmFkZEV2ZW50TGlzdGVuZXIoIm1vdXNldXAiLG4pfWZ1bmN0aW9uICRuKHQpe2RvY3VtZW50LnJlbW92ZUV2ZW50TGlzdGVuZXIoIm1vdXNlbW92ZSIsdC5tb3ZlZm4pLGRvY3VtZW50LnJlbW92ZUV2ZW50TGlzdGVuZXIoIm1vdXNldXAiLHQudXBmbiksdC5tb3ZlZm49bnVsbCx0LnVwZm49bnVsbH1kb2N1bWVudC5hZGRFdmVudExpc3RlbmVyKCJ0b3VjaGVuZCIsKGZ1bmN0aW9uIEtuKHQpe1luLm1vdXNlLm1vdXNlSWdub3JlSm9ifHxXbighMCksWW4ubW91c2UudGFyZ2V0PVpuKHQpWzBdLFluLm1vdXNlLm1vdXNlSWdub3JlSm9iPUVuLmRlYm91bmNlKFluLm1vdXNlLm1vdXNlSWdub3JlSm9iLGd0LmFmdGVyKDI1MDApLChmdW5jdGlvbigpe1duKCksWW4ubW91c2UudGFyZ2V0PW51bGwsWW4ubW91c2UubW91c2VJZ25vcmVKb2I9bnVsbH0pKX0pLCEhRG4mJntwYXNzaXZlOiEwfSk7Y29uc3QgWm49d2luZG93LlNoYWR5RE9NJiZ3aW5kb3cuU2hhZHlET00ubm9QYXRjaD93aW5kb3cuU2hhZHlET00uY29tcG9zZWRQYXRoOnQ9PnQuY29tcG9zZWRQYXRoJiZ0LmNvbXBvc2VkUGF0aCgpfHxbXSxKbj17fSxRbj1bXTtmdW5jdGlvbiB0aSh0KXtjb25zdCBlPVpuKHQpO3JldHVybiBlLmxlbmd0aD4wP2VbMF06dC50YXJnZXR9ZnVuY3Rpb24gZWkodCl7bGV0IGUsbj10LnR5cGUsaT10LmN1cnJlbnRUYXJnZXRbTG5dO2lmKCFpKXJldHVybjtsZXQgcj1pW25dO2lmKHIpe2lmKCF0W1BuXSYmKHRbUG5dPXt9LCJ0b3VjaCI9PT1uLnNsaWNlKDAsNSkpKXtsZXQgZT0odD10KS5jaGFuZ2VkVG91Y2hlc1swXTtpZigidG91Y2hzdGFydCI9PT1uJiYxPT09dC50b3VjaGVzLmxlbmd0aCYmKFluLnRvdWNoLmlkPWUuaWRlbnRpZmllciksWW4udG91Y2guaWQhPT1lLmlkZW50aWZpZXIpcmV0dXJuO2tufHwidG91Y2hzdGFydCIhPT1uJiYidG91Y2htb3ZlIiE9PW58fChmdW5jdGlvbiBvKHQpe2xldCBlPXQuY2hhbmdlZFRvdWNoZXNbMF0sbj10LnR5cGU7aWYoInRvdWNoc3RhcnQiPT09bilZbi50b3VjaC54PWUuY2xpZW50WCxZbi50b3VjaC55PWUuY2xpZW50WSxZbi50b3VjaC5zY3JvbGxEZWNpZGVkPSExO2Vsc2UgaWYoInRvdWNobW92ZSI9PT1uKXtpZihZbi50b3VjaC5zY3JvbGxEZWNpZGVkKXJldHVybjtZbi50b3VjaC5zY3JvbGxEZWNpZGVkPSEwO2xldCBuPShmdW5jdGlvbiBpKHQpe2xldCBlPSJhdXRvIixuPVpuKHQpO2ZvcihsZXQgdCxpPTA7aTxuLmxlbmd0aDtpKyspaWYodD1uW2ldLHRbSW5dKXtlPXRbSW5dO2JyZWFrfXJldHVybiBlfSkodCksaT0hMSxyPU1hdGguYWJzKFluLnRvdWNoLngtZS5jbGllbnRYKSxvPU1hdGguYWJzKFluLnRvdWNoLnktZS5jbGllbnRZKTt0LmNhbmNlbGFibGUmJigibm9uZSI9PT1uP2k9ITA6InBhbi14Ij09PW4/aT1vPnI6InBhbi15Ij09PW4mJihpPXI+bykpLGk/dC5wcmV2ZW50RGVmYXVsdCgpOmFpKCJ0cmFjayIpfX0pKHQpfWlmKGU9dFtQbl0sIWUuc2tpcCl7Zm9yKGxldCBuLGk9MDtpPFFuLmxlbmd0aDtpKyspbj1RbltpXSxyW24ubmFtZV0mJiFlW24ubmFtZV0mJm4uZmxvdyYmbi5mbG93LnN0YXJ0LmluZGV4T2YodC50eXBlKT4tMSYmbi5yZXNldCYmbi5yZXNldCgpO2ZvcihsZXQgaSxvPTA7bzxRbi5sZW5ndGg7bysrKWk9UW5bb10scltpLm5hbWVdJiYhZVtpLm5hbWVdJiYoZVtpLm5hbWVdPSEwLGlbbl0odCkpfX19ZnVuY3Rpb24gbmkodCxlLG4pe3JldHVybiEhSm5bZV0mJigoZnVuY3Rpb24gaSh0LGUsbil7bGV0IGk9Sm5bZV0scj1pLmRlcHMsbz1pLm5hbWUsYT10W0xuXTthfHwodFtMbl09YT17fSk7Zm9yKGxldCBlLG4saT0wO2k8ci5sZW5ndGg7aSsrKWU9cltpXSxIbiYmem4oZSkmJiJjbGljayIhPT1lfHwobj1hW2VdLG58fChhW2VdPW49e19jb3VudDowfSksMD09PW4uX2NvdW50JiZ0LmFkZEV2ZW50TGlzdGVuZXIoZSxlaSxCbihlKSksbltvXT0obltvXXx8MCkrMSxuLl9jb3VudD0obi5fY291bnR8fDApKzEpO3QuYWRkRXZlbnRMaXN0ZW5lcihlLG4pLGkudG91Y2hBY3Rpb24mJnJpKHQsaS50b3VjaEFjdGlvbil9KSh0LGUsbiksITApfWZ1bmN0aW9uIGlpKHQpe1FuLnB1c2godCk7Zm9yKGxldCBlPTA7ZTx0LmVtaXRzLmxlbmd0aDtlKyspSm5bdC5lbWl0c1tlXV09dH1mdW5jdGlvbiByaSh0LGUpe2tuJiZ0IGluc3RhbmNlb2YgSFRNTEVsZW1lbnQmJnZ0LnJ1bigoKCk9Pnt0LnN0eWxlLnRvdWNoQWN0aW9uPWV9KSksdFtJbl09ZX1mdW5jdGlvbiBvaSh0LGUsbil7bGV0IGk9bmV3IEV2ZW50KGUse2J1YmJsZXM6ITAsY2FuY2VsYWJsZTohMCxjb21wb3NlZDohMH0pO2lmKGkuZGV0YWlsPW4sWSh0KS5kaXNwYXRjaEV2ZW50KGkpLGkuZGVmYXVsdFByZXZlbnRlZCl7bGV0IHQ9bi5wcmV2ZW50ZXJ8fG4uc291cmNlRXZlbnQ7dCYmdC5wcmV2ZW50RGVmYXVsdCYmdC5wcmV2ZW50RGVmYXVsdCgpfX1mdW5jdGlvbiBhaSh0KXtsZXQgZT0oZnVuY3Rpb24gbih0KXtmb3IobGV0IGUsbj0wO248UW4ubGVuZ3RoO24rKyl7ZT1RbltuXTtmb3IobGV0IG4saT0wO2k8ZS5lbWl0cy5sZW5ndGg7aSsrKWlmKG49ZS5lbWl0c1tpXSxuPT09dClyZXR1cm4gZX1yZXR1cm4gbnVsbH0pKHQpO2UuaW5mbyYmKGUuaW5mby5wcmV2ZW50PSEwKX1mdW5jdGlvbiBzaSh0LGUsbixpKXtlJiZvaShlLHQse3g6bi5jbGllbnRYLHk6bi5jbGllbnRZLHNvdXJjZUV2ZW50Om4scHJldmVudGVyOmkscHJldmVudDpmdW5jdGlvbih0KXtyZXR1cm4gYWkodCl9fSl9ZnVuY3Rpb24gbGkodCxlLG4pe2lmKHQucHJldmVudClyZXR1cm4hMTtpZih0LnN0YXJ0ZWQpcmV0dXJuITA7bGV0IGk9TWF0aC5hYnModC54LWUpLHI9TWF0aC5hYnModC55LW4pO3JldHVybiBpPj01fHxyPj01fWZ1bmN0aW9uIGNpKHQsZSxuKXtpZighZSlyZXR1cm47bGV0IGkscj10Lm1vdmVzW3QubW92ZXMubGVuZ3RoLTJdLG89dC5tb3Zlc1t0Lm1vdmVzLmxlbmd0aC0xXSxhPTA7ciYmKGk9by54LXIueCxhPW8ueS1yLnkpLG9pKGUsInRyYWNrIix7c3RhdGU6dC5zdGF0ZSx4Om4uY2xpZW50WCx5Om4uY2xpZW50WSxkeDpvLngtdC54LGR5Om8ueS10LnksZGR4OmksZGR5OmEsc291cmNlRXZlbnQ6bixob3ZlcjpmdW5jdGlvbigpe3JldHVybihmdW5jdGlvbiB0KGUsbil7bGV0IGk9ZG9jdW1lbnQuZWxlbWVudEZyb21Qb2ludChlLG4pLHI9aTtmb3IoO3ImJnIuc2hhZG93Um9vdCYmIXdpbmRvdy5TaGFkeURPTTspe2xldCB0PXI7aWYocj1yLnNoYWRvd1Jvb3QuZWxlbWVudEZyb21Qb2ludChlLG4pLHQ9PT1yKWJyZWFrO3ImJihpPXIpfXJldHVybiBpfSkobi5jbGllbnRYLG4uY2xpZW50WSl9fSl9ZnVuY3Rpb24gdWkodCxlLG4pe2xldCBpPU1hdGguYWJzKGUuY2xpZW50WC10LngpLHI9TWF0aC5hYnMoZS5jbGllbnRZLXQueSksbz10aShufHxlKTshb3x8am5bby5sb2NhbE5hbWVdJiZvLmhhc0F0dHJpYnV0ZSgiZGlzYWJsZWQiKXx8KGlzTmFOKGkpfHxpc05hTihyKXx8aTw9MjUmJnI8PTI1fHwoZnVuY3Rpb24gYSh0KXtpZigiY2xpY2siPT09dC50eXBlKXtpZigwPT09dC5kZXRhaWwpcmV0dXJuITA7bGV0IGU9dGkodCk7aWYoIWUubm9kZVR5cGV8fGUubm9kZVR5cGUhPT1Ob2RlLkVMRU1FTlRfTk9ERSlyZXR1cm4hMDtsZXQgbj1lLmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpLGk9dC5wYWdlWCxyPXQucGFnZVk7cmV0dXJuIShpPj1uLmxlZnQmJmk8PW4ucmlnaHQmJnI+PW4udG9wJiZyPD1uLmJvdHRvbSl9cmV0dXJuITF9KShlKSkmJih0LnByZXZlbnR8fG9pKG8sInRhcCIse3g6ZS5jbGllbnRYLHk6ZS5jbGllbnRZLHNvdXJjZUV2ZW50OmUscHJldmVudGVyOm59KSl9aWkoe25hbWU6ImRvd251cCIsZGVwczpbIm1vdXNlZG93biIsInRvdWNoc3RhcnQiLCJ0b3VjaGVuZCJdLGZsb3c6e3N0YXJ0OlsibW91c2Vkb3duIiwidG91Y2hzdGFydCJdLGVuZDpbIm1vdXNldXAiLCJ0b3VjaGVuZCJdfSxlbWl0czpbImRvd24iLCJ1cCJdLGluZm86e21vdmVmbjpudWxsLHVwZm46bnVsbH0scmVzZXQ6ZnVuY3Rpb24oKXskbih0aGlzLmluZm8pfSxtb3VzZWRvd246ZnVuY3Rpb24odCl7aWYoIXFuKHQpKXJldHVybjtsZXQgZT10aSh0KSxuPXRoaXM7WG4odGhpcy5pbmZvLChmdW5jdGlvbiB0KGkpe3FuKGkpfHwoc2koInVwIixlLGkpLCRuKG4uaW5mbykpfSksKGZ1bmN0aW9uIHQoaSl7cW4oaSkmJnNpKCJ1cCIsZSxpKSwkbihuLmluZm8pfSkpLHNpKCJkb3duIixlLHQpfSx0b3VjaHN0YXJ0OmZ1bmN0aW9uKHQpe3NpKCJkb3duIix0aSh0KSx0LmNoYW5nZWRUb3VjaGVzWzBdLHQpfSx0b3VjaGVuZDpmdW5jdGlvbih0KXtzaSgidXAiLHRpKHQpLHQuY2hhbmdlZFRvdWNoZXNbMF0sdCl9fSksaWkoe25hbWU6InRyYWNrIix0b3VjaEFjdGlvbjoibm9uZSIsZGVwczpbIm1vdXNlZG93biIsInRvdWNoc3RhcnQiLCJ0b3VjaG1vdmUiLCJ0b3VjaGVuZCJdLGZsb3c6e3N0YXJ0OlsibW91c2Vkb3duIiwidG91Y2hzdGFydCJdLGVuZDpbIm1vdXNldXAiLCJ0b3VjaGVuZCJdfSxlbWl0czpbInRyYWNrIl0saW5mbzp7eDowLHk6MCxzdGF0ZToic3RhcnQiLHN0YXJ0ZWQ6ITEsbW92ZXM6W10sYWRkTW92ZTpmdW5jdGlvbih0KXt0aGlzLm1vdmVzLmxlbmd0aD4yJiZ0aGlzLm1vdmVzLnNoaWZ0KCksdGhpcy5tb3Zlcy5wdXNoKHQpfSxtb3ZlZm46bnVsbCx1cGZuOm51bGwscHJldmVudDohMX0scmVzZXQ6ZnVuY3Rpb24oKXt0aGlzLmluZm8uc3RhdGU9InN0YXJ0Iix0aGlzLmluZm8uc3RhcnRlZD0hMSx0aGlzLmluZm8ubW92ZXM9W10sdGhpcy5pbmZvLng9MCx0aGlzLmluZm8ueT0wLHRoaXMuaW5mby5wcmV2ZW50PSExLCRuKHRoaXMuaW5mbyl9LG1vdXNlZG93bjpmdW5jdGlvbih0KXtpZighcW4odCkpcmV0dXJuO2xldCBlPXRpKHQpLG49dGhpcyxpPWZ1bmN0aW9uIHQoaSl7bGV0IHI9aS5jbGllbnRYLG89aS5jbGllbnRZO2xpKG4uaW5mbyxyLG8pJiYobi5pbmZvLnN0YXRlPW4uaW5mby5zdGFydGVkPyJtb3VzZXVwIj09PWkudHlwZT8iZW5kIjoidHJhY2siOiJzdGFydCIsInN0YXJ0Ij09PW4uaW5mby5zdGF0ZSYmYWkoInRhcCIpLG4uaW5mby5hZGRNb3ZlKHt4OnIseTpvfSkscW4oaSl8fChuLmluZm8uc3RhdGU9ImVuZCIsJG4obi5pbmZvKSksZSYmY2kobi5pbmZvLGUsaSksbi5pbmZvLnN0YXJ0ZWQ9ITApfTtYbih0aGlzLmluZm8saSwoZnVuY3Rpb24gdChlKXtuLmluZm8uc3RhcnRlZCYmaShlKSwkbihuLmluZm8pfSkpLHRoaXMuaW5mby54PXQuY2xpZW50WCx0aGlzLmluZm8ueT10LmNsaWVudFl9LHRvdWNoc3RhcnQ6ZnVuY3Rpb24odCl7bGV0IGU9dC5jaGFuZ2VkVG91Y2hlc1swXTt0aGlzLmluZm8ueD1lLmNsaWVudFgsdGhpcy5pbmZvLnk9ZS5jbGllbnRZfSx0b3VjaG1vdmU6ZnVuY3Rpb24odCl7bGV0IGU9dGkodCksbj10LmNoYW5nZWRUb3VjaGVzWzBdLGk9bi5jbGllbnRYLHI9bi5jbGllbnRZO2xpKHRoaXMuaW5mbyxpLHIpJiYoInN0YXJ0Ij09PXRoaXMuaW5mby5zdGF0ZSYmYWkoInRhcCIpLHRoaXMuaW5mby5hZGRNb3ZlKHt4OmkseTpyfSksY2kodGhpcy5pbmZvLGUsbiksdGhpcy5pbmZvLnN0YXRlPSJ0cmFjayIsdGhpcy5pbmZvLnN0YXJ0ZWQ9ITApfSx0b3VjaGVuZDpmdW5jdGlvbih0KXtsZXQgZT10aSh0KSxuPXQuY2hhbmdlZFRvdWNoZXNbMF07dGhpcy5pbmZvLnN0YXJ0ZWQmJih0aGlzLmluZm8uc3RhdGU9ImVuZCIsdGhpcy5pbmZvLmFkZE1vdmUoe3g6bi5jbGllbnRYLHk6bi5jbGllbnRZfSksY2kodGhpcy5pbmZvLGUsbikpfX0pLGlpKHtuYW1lOiJ0YXAiLGRlcHM6WyJtb3VzZWRvd24iLCJjbGljayIsInRvdWNoc3RhcnQiLCJ0b3VjaGVuZCJdLGZsb3c6e3N0YXJ0OlsibW91c2Vkb3duIiwidG91Y2hzdGFydCJdLGVuZDpbImNsaWNrIiwidG91Y2hlbmQiXX0sZW1pdHM6WyJ0YXAiXSxpbmZvOnt4Ok5hTix5Ok5hTixwcmV2ZW50OiExfSxyZXNldDpmdW5jdGlvbigpe3RoaXMuaW5mby54PU5hTix0aGlzLmluZm8ueT1OYU4sdGhpcy5pbmZvLnByZXZlbnQ9ITF9LG1vdXNlZG93bjpmdW5jdGlvbih0KXtxbih0KSYmKHRoaXMuaW5mby54PXQuY2xpZW50WCx0aGlzLmluZm8ueT10LmNsaWVudFkpfSxjbGljazpmdW5jdGlvbih0KXtxbih0KSYmdWkodGhpcy5pbmZvLHQpfSx0b3VjaHN0YXJ0OmZ1bmN0aW9uKHQpe2NvbnN0IGU9dC5jaGFuZ2VkVG91Y2hlc1swXTt0aGlzLmluZm8ueD1lLmNsaWVudFgsdGhpcy5pbmZvLnk9ZS5jbGllbnRZfSx0b3VjaGVuZDpmdW5jdGlvbih0KXt1aSh0aGlzLmluZm8sdC5jaGFuZ2VkVG91Y2hlc1swXSx0KX19KTtjb25zdCBoaT10aSxkaT1OKCh0PT5jbGFzcyBleHRlbmRzIHR7X2FkZEV2ZW50TGlzdGVuZXJUb05vZGUodCxlLG4pe25pKHQsZSxuKXx8c3VwZXIuX2FkZEV2ZW50TGlzdGVuZXJUb05vZGUodCxlLG4pfV9yZW1vdmVFdmVudExpc3RlbmVyRnJvbU5vZGUodCxlLG4peyhmdW5jdGlvbiBpKHQsZSxuKXtyZXR1cm4hIUpuW2VdJiYoKGZ1bmN0aW9uIGkodCxlLG4pe2xldCBpPUpuW2VdLHI9aS5kZXBzLG89aS5uYW1lLGE9dFtMbl07aWYoYSlmb3IobGV0IGUsbixpPTA7aTxyLmxlbmd0aDtpKyspZT1yW2ldLG49YVtlXSxuJiZuW29dJiYobltvXT0obltvXXx8MSktMSxuLl9jb3VudD0obi5fY291bnR8fDEpLTEsMD09PW4uX2NvdW50JiZ0LnJlbW92ZUV2ZW50TGlzdGVuZXIoZSxlaSxCbihlKSkpO3QucmVtb3ZlRXZlbnRMaXN0ZW5lcihlLG4pfSkodCxlLG4pLCEwKX0pKHQsZSxuKXx8c3VwZXIuX3JlbW92ZUV2ZW50TGlzdGVuZXJGcm9tTm9kZSh0LGUsbil9fSkpLHBpPS86aG9zdFwoOmRpclwoKGx0cnxydGwpXClcKS9nLGZpPS8oW1xzXHctI1wuXFtcXVwqXSopOmRpclwoKGx0cnxydGwpXCkvZyxtaT0vOmRpclwoKD86bHRyfHJ0bClcKS8sZ2k9Qm9vbGVhbih3aW5kb3cuU2hhZHlET00mJndpbmRvdy5TaGFkeURPTS5pblVzZSksX2k9W107Ci8qKgogICAgQGxpY2Vuc2UKICAgIENvcHlyaWdodCAoYykgMjAxNyBUaGUgUG9seW1lciBQcm9qZWN0IEF1dGhvcnMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgICBUaGlzIGNvZGUgbWF5IG9ubHkgYmUgdXNlZCB1bmRlciB0aGUgQlNEIHN0eWxlIGxpY2Vuc2UgZm91bmQgYXQgaHR0cDovL3BvbHltZXIuZ2l0aHViLmlvL0xJQ0VOU0UudHh0CiAgICBUaGUgY29tcGxldGUgc2V0IG9mIGF1dGhvcnMgbWF5IGJlIGZvdW5kIGF0IGh0dHA6Ly9wb2x5bWVyLmdpdGh1Yi5pby9BVVRIT1JTLnR4dAogICAgVGhlIGNvbXBsZXRlIHNldCBvZiBjb250cmlidXRvcnMgbWF5IGJlIGZvdW5kIGF0IGh0dHA6Ly9wb2x5bWVyLmdpdGh1Yi5pby9DT05UUklCVVRPUlMudHh0CiAgICBDb2RlIGRpc3RyaWJ1dGVkIGJ5IEdvb2dsZSBhcyBwYXJ0IG9mIHRoZSBwb2x5bWVyIHByb2plY3QgaXMgYWxzbwogICAgc3ViamVjdCB0byBhbiBhZGRpdGlvbmFsIElQIHJpZ2h0cyBncmFudCBmb3VuZCBhdCBodHRwOi8vcG9seW1lci5naXRodWIuaW8vUEFURU5UUy50eHQKICAgICovbGV0IHlpPW51bGwsdmk9IiI7ZnVuY3Rpb24gYmkoKXt2aT1kb2N1bWVudC5kb2N1bWVudEVsZW1lbnQuZ2V0QXR0cmlidXRlKCJkaXIiKX1mdW5jdGlvbiB4aSh0KXt0Ll9fYXV0b0Rpck9wdE91dHx8dC5zZXRBdHRyaWJ1dGUoImRpciIsdmkpfWZ1bmN0aW9uIHdpKCl7YmkoKSx2aT1kb2N1bWVudC5kb2N1bWVudEVsZW1lbnQuZ2V0QXR0cmlidXRlKCJkaXIiKTtmb3IobGV0IHQ9MDt0PF9pLmxlbmd0aDt0KyspeGkoX2lbdF0pfWNvbnN0IFNpPU4oKHQ9PntnaXx8eWl8fChiaSgpLHlpPW5ldyBNdXRhdGlvbk9ic2VydmVyKHdpKSx5aS5vYnNlcnZlKGRvY3VtZW50LmRvY3VtZW50RWxlbWVudCx7YXR0cmlidXRlczohMCxhdHRyaWJ1dGVGaWx0ZXI6WyJkaXIiXX0pKTtjb25zdCBlPU10KHQpO2NsYXNzIG4gZXh0ZW5kcyBle3N0YXRpYyBfcHJvY2Vzc1N0eWxlVGV4dCh0LG4pe3JldHVybiB0PWUuX3Byb2Nlc3NTdHlsZVRleHQuY2FsbCh0aGlzLHQsbiksIWdpJiZtaS50ZXN0KHQpJiYodD10aGlzLl9yZXBsYWNlRGlySW5Dc3NUZXh0KHQpLHRoaXMuX19hY3RpdmF0ZURpcj0hMCksdH1zdGF0aWMgX3JlcGxhY2VEaXJJbkNzc1RleHQodCl7bGV0IGU9dDtyZXR1cm4gZT1lLnJlcGxhY2UocGksJzpob3N0KFtkaXI9IiQxIl0pJyksZT1lLnJlcGxhY2UoZmksJzpob3N0KFtkaXI9IiQyIl0pICQxJyksZX1jb25zdHJ1Y3Rvcigpe3N1cGVyKCksdGhpcy5fX2F1dG9EaXJPcHRPdXQ9ITF9cmVhZHkoKXtzdXBlci5yZWFkeSgpLHRoaXMuX19hdXRvRGlyT3B0T3V0PXRoaXMuaGFzQXR0cmlidXRlKCJkaXIiKX1jb25uZWN0ZWRDYWxsYmFjaygpe2UucHJvdG90eXBlLmNvbm5lY3RlZENhbGxiYWNrJiZzdXBlci5jb25uZWN0ZWRDYWxsYmFjaygpLHRoaXMuY29uc3RydWN0b3IuX19hY3RpdmF0ZURpciYmKChmdW5jdGlvbiB0KCl7eWkmJnlpLnRha2VSZWNvcmRzKCkubGVuZ3RoJiZ3aSgpfSkoKSxfaS5wdXNoKHRoaXMpLHhpKHRoaXMpKX1kaXNjb25uZWN0ZWRDYWxsYmFjaygpe2lmKGUucHJvdG90eXBlLmRpc2Nvbm5lY3RlZENhbGxiYWNrJiZzdXBlci5kaXNjb25uZWN0ZWRDYWxsYmFjaygpLHRoaXMuY29uc3RydWN0b3IuX19hY3RpdmF0ZURpcil7Y29uc3QgdD1faS5pbmRleE9mKHRoaXMpO3Q+LTEmJl9pLnNwbGljZSh0LDEpfX19cmV0dXJuIG4uX19hY3RpdmF0ZURpcj0hMSxufSkpOwovKioKICAgIEBsaWNlbnNlCiAgICBDb3B5cmlnaHQgKGMpIDIwMTcgVGhlIFBvbHltZXIgUHJvamVjdCBBdXRob3JzLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICAgVGhpcyBjb2RlIG1heSBvbmx5IGJlIHVzZWQgdW5kZXIgdGhlIEJTRCBzdHlsZSBsaWNlbnNlIGZvdW5kIGF0IGh0dHA6Ly9wb2x5bWVyLmdpdGh1Yi5pby9MSUNFTlNFLnR4dAogICAgVGhlIGNvbXBsZXRlIHNldCBvZiBhdXRob3JzIG1heSBiZSBmb3VuZCBhdCBodHRwOi8vcG9seW1lci5naXRodWIuaW8vQVVUSE9SUy50eHQKICAgIFRoZSBjb21wbGV0ZSBzZXQgb2YgY29udHJpYnV0b3JzIG1heSBiZSBmb3VuZCBhdCBodHRwOi8vcG9seW1lci5naXRodWIuaW8vQ09OVFJJQlVUT1JTLnR4dAogICAgQ29kZSBkaXN0cmlidXRlZCBieSBHb29nbGUgYXMgcGFydCBvZiB0aGUgcG9seW1lciBwcm9qZWN0IGlzIGFsc28KICAgIHN1YmplY3QgdG8gYW4gYWRkaXRpb25hbCBJUCByaWdodHMgZ3JhbnQgZm91bmQgYXQgaHR0cDovL3BvbHltZXIuZ2l0aHViLmlvL1BBVEVOVFMudHh0CiAgICAqL2xldCBNaT0hMSxFaT1bXSxUaT1bXTtmdW5jdGlvbiBBaSgpe01pPSEwLHJlcXVlc3RBbmltYXRpb25GcmFtZSgoZnVuY3Rpb24oKXtNaT0hMSwoZnVuY3Rpb24gdChlKXtmb3IoO2UubGVuZ3RoOylDaShlLnNoaWZ0KCkpfSkoRWkpLHNldFRpbWVvdXQoKGZ1bmN0aW9uKCl7IShmdW5jdGlvbiB0KGUpe2ZvcihsZXQgdD0wLG49ZS5sZW5ndGg7dDxuO3QrKylDaShlLnNoaWZ0KCkpfSkoVGkpfSkpfSkpfWZ1bmN0aW9uIENpKHQpe2NvbnN0IGU9dFswXSxuPXRbMV0saT10WzJdO3RyeXtuLmFwcGx5KGUsaSl9Y2F0Y2godCl7c2V0VGltZW91dCgoKCk9Pnt0aHJvdyB0fSkpfX1mdW5jdGlvbiBraSh0LGUsbil7TWl8fEFpKCksVGkucHVzaChbdCxlLG5dKX0KLyoqCiAgICBAbGljZW5zZQogICAgQ29weXJpZ2h0IChjKSAyMDE3IFRoZSBQb2x5bWVyIFByb2plY3QgQXV0aG9ycy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAgIFRoaXMgY29kZSBtYXkgb25seSBiZSB1c2VkIHVuZGVyIHRoZSBCU0Qgc3R5bGUgbGljZW5zZSBmb3VuZCBhdCBodHRwOi8vcG9seW1lci5naXRodWIuaW8vTElDRU5TRS50eHQKICAgIFRoZSBjb21wbGV0ZSBzZXQgb2YgYXV0aG9ycyBtYXkgYmUgZm91bmQgYXQgaHR0cDovL3BvbHltZXIuZ2l0aHViLmlvL0FVVEhPUlMudHh0CiAgICBUaGUgY29tcGxldGUgc2V0IG9mIGNvbnRyaWJ1dG9ycyBtYXkgYmUgZm91bmQgYXQgaHR0cDovL3BvbHltZXIuZ2l0aHViLmlvL0NPTlRSSUJVVE9SUy50eHQKICAgIENvZGUgZGlzdHJpYnV0ZWQgYnkgR29vZ2xlIGFzIHBhcnQgb2YgdGhlIHBvbHltZXIgcHJvamVjdCBpcyBhbHNvCiAgICBzdWJqZWN0IHRvIGFuIGFkZGl0aW9uYWwgSVAgcmlnaHRzIGdyYW50IGZvdW5kIGF0IGh0dHA6Ly9wb2x5bWVyLmdpdGh1Yi5pby9QQVRFTlRTLnR4dAogICAgKi9mdW5jdGlvbiBMaSgpe2RvY3VtZW50LmJvZHkucmVtb3ZlQXR0cmlidXRlKCJ1bnJlc29sdmVkIil9Ci8qKgogICAgQGxpY2Vuc2UKICAgIENvcHlyaWdodCAoYykgMjAxNyBUaGUgUG9seW1lciBQcm9qZWN0IEF1dGhvcnMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgICBUaGlzIGNvZGUgbWF5IG9ubHkgYmUgdXNlZCB1bmRlciB0aGUgQlNEIHN0eWxlIGxpY2Vuc2UgZm91bmQgYXQgaHR0cDovL3BvbHltZXIuZ2l0aHViLmlvL0xJQ0VOU0UudHh0CiAgICBUaGUgY29tcGxldGUgc2V0IG9mIGF1dGhvcnMgbWF5IGJlIGZvdW5kIGF0IGh0dHA6Ly9wb2x5bWVyLmdpdGh1Yi5pby9BVVRIT1JTLnR4dAogICAgVGhlIGNvbXBsZXRlIHNldCBvZiBjb250cmlidXRvcnMgbWF5IGJlIGZvdW5kIGF0IGh0dHA6Ly9wb2x5bWVyLmdpdGh1Yi5pby9DT05UUklCVVRPUlMudHh0CiAgICBDb2RlIGRpc3RyaWJ1dGVkIGJ5IEdvb2dsZSBhcyBwYXJ0IG9mIHRoZSBwb2x5bWVyIHByb2plY3QgaXMgYWxzbwogICAgc3ViamVjdCB0byBhbiBhZGRpdGlvbmFsIElQIHJpZ2h0cyBncmFudCBmb3VuZCBhdCBodHRwOi8vcG9seW1lci5naXRodWIuaW8vUEFURU5UUy50eHQKICAgICovCmZ1bmN0aW9uIFBpKHQsZSxuKXtyZXR1cm57aW5kZXg6dCxyZW1vdmVkOmUsYWRkZWRDb3VudDpufX1mdW5jdGlvbiBJaSh0LGUpe3JldHVybihmdW5jdGlvbiBuKHQsZSxpLHIsbyxhKXtsZXQgcyxsPTAsYz0wLHU9TWF0aC5taW4oaS1lLGEtbyk7aWYoMD09ZSYmMD09byYmKGw9KGZ1bmN0aW9uIGgodCxlLG4pe2ZvcihsZXQgaT0wO2k8bjtpKyspaWYoIU5pKHRbaV0sZVtpXSkpcmV0dXJuIGk7cmV0dXJuIG59KSh0LHIsdSkpLGk9PXQubGVuZ3RoJiZhPT1yLmxlbmd0aCYmKGM9KGZ1bmN0aW9uIGQodCxlLG4pe2xldCBpPXQubGVuZ3RoLHI9ZS5sZW5ndGgsbz0wO2Zvcig7bzxuJiZOaSh0Wy0taV0sZVstLXJdKTspbysrO3JldHVybiBvfSkodCxyLHUtbCkpLG8rPWwsYS09YywoaS09YyktKGUrPWwpPT0wJiZhLW89PTApcmV0dXJuW107aWYoZT09aSl7Zm9yKHM9UGkoZSxbXSwwKTtvPGE7KXMucmVtb3ZlZC5wdXNoKHJbbysrXSk7cmV0dXJuW3NdfWlmKG89PWEpcmV0dXJuW1BpKGUsW10saS1lKV07bGV0IHA9KGZ1bmN0aW9uIG0odCl7bGV0IGU9dC5sZW5ndGgtMSxuPXRbMF0ubGVuZ3RoLTEsaT10W2VdW25dLHI9W107Zm9yKDtlPjB8fG4+MDspe2lmKDA9PWUpe3IucHVzaCgyKSxuLS07Y29udGludWV9aWYoMD09bil7ci5wdXNoKDMpLGUtLTtjb250aW51ZX1sZXQgbyxhPXRbZS0xXVtuLTFdLHM9dFtlLTFdW25dLGw9dFtlXVtuLTFdO289czxsP3M8YT9zOmE6bDxhP2w6YSxvPT1hPyhhPT1pP3IucHVzaCgwKTooci5wdXNoKDEpLGk9YSksZS0tLG4tLSk6bz09cz8oci5wdXNoKDMpLGUtLSxpPXMpOihyLnB1c2goMiksbi0tLGk9bCl9cmV0dXJuIHIucmV2ZXJzZSgpLHJ9KSgoZnVuY3Rpb24gZih0LGUsbixpLHIsbyl7bGV0IGE9by1yKzEscz1uLWUrMSxsPW5ldyBBcnJheShhKTtmb3IobGV0IHQ9MDt0PGE7dCsrKWxbdF09bmV3IEFycmF5KHMpLGxbdF1bMF09dDtmb3IobGV0IHQ9MDt0PHM7dCsrKWxbMF1bdF09dDtmb3IobGV0IG49MTtuPGE7bisrKWZvcihsZXQgbz0xO288cztvKyspaWYoTmkodFtlK28tMV0saVtyK24tMV0pKWxbbl1bb109bFtuLTFdW28tMV07ZWxzZXtsZXQgdD1sW24tMV1bb10rMSxlPWxbbl1bby0xXSsxO2xbbl1bb109dDxlP3Q6ZX1yZXR1cm4gbH0pKHQsZSxpLHIsbyxhKSk7cz12b2lkIDA7bGV0IGc9W10sXz1lLHk9bztmb3IobGV0IHQ9MDt0PHAubGVuZ3RoO3QrKylzd2l0Y2gocFt0XSl7Y2FzZSAwOnMmJihnLnB1c2gocykscz12b2lkIDApLF8rKyx5Kys7YnJlYWs7Y2FzZSAxOnN8fChzPVBpKF8sW10sMCkpLHMuYWRkZWRDb3VudCsrLF8rKyxzLnJlbW92ZWQucHVzaChyW3ldKSx5Kys7YnJlYWs7Y2FzZSAyOnN8fChzPVBpKF8sW10sMCkpLHMuYWRkZWRDb3VudCsrLF8rKzticmVhaztjYXNlIDM6c3x8KHM9UGkoXyxbXSwwKSkscy5yZW1vdmVkLnB1c2goclt5XSkseSsrfXJldHVybiBzJiZnLnB1c2gocyksZ30pKHQsMCx0Lmxlbmd0aCxlLDAsZS5sZW5ndGgpfWZ1bmN0aW9uIE5pKHQsZSl7cmV0dXJuIHQ9PT1lfQovKioKICAgIEBsaWNlbnNlCiAgICBDb3B5cmlnaHQgKGMpIDIwMTcgVGhlIFBvbHltZXIgUHJvamVjdCBBdXRob3JzLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICAgVGhpcyBjb2RlIG1heSBvbmx5IGJlIHVzZWQgdW5kZXIgdGhlIEJTRCBzdHlsZSBsaWNlbnNlIGZvdW5kIGF0IGh0dHA6Ly9wb2x5bWVyLmdpdGh1Yi5pby9MSUNFTlNFLnR4dAogICAgVGhlIGNvbXBsZXRlIHNldCBvZiBhdXRob3JzIG1heSBiZSBmb3VuZCBhdCBodHRwOi8vcG9seW1lci5naXRodWIuaW8vQVVUSE9SUy50eHQKICAgIFRoZSBjb21wbGV0ZSBzZXQgb2YgY29udHJpYnV0b3JzIG1heSBiZSBmb3VuZCBhdCBodHRwOi8vcG9seW1lci5naXRodWIuaW8vQ09OVFJJQlVUT1JTLnR4dAogICAgQ29kZSBkaXN0cmlidXRlZCBieSBHb29nbGUgYXMgcGFydCBvZiB0aGUgcG9seW1lciBwcm9qZWN0IGlzIGFsc28KICAgIHN1YmplY3QgdG8gYW4gYWRkaXRpb25hbCBJUCByaWdodHMgZ3JhbnQgZm91bmQgYXQgaHR0cDovL3BvbHltZXIuZ2l0aHViLmlvL1BBVEVOVFMudHh0CiAgICAqL2Z1bmN0aW9uIE9pKHQpe3JldHVybiJzbG90Ij09PXQubG9jYWxOYW1lfSJpbnRlcmFjdGl2ZSI9PT1kb2N1bWVudC5yZWFkeVN0YXRlfHwiY29tcGxldGUiPT09ZG9jdW1lbnQucmVhZHlTdGF0ZT9MaSgpOndpbmRvdy5hZGRFdmVudExpc3RlbmVyKCJET01Db250ZW50TG9hZGVkIixMaSk7bGV0IFJpPWNsYXNze3N0YXRpYyBnZXRGbGF0dGVuZWROb2Rlcyh0KXtjb25zdCBlPVkodCk7cmV0dXJuIE9pKHQpPyh0PXQsZS5hc3NpZ25lZE5vZGVzKHtmbGF0dGVuOiEwfSkpOkFycmF5LmZyb20oZS5jaGlsZE5vZGVzKS5tYXAoKHQ9Pk9pKHQpP1kodD10KS5hc3NpZ25lZE5vZGVzKHtmbGF0dGVuOiEwfSk6W3RdKSkucmVkdWNlKCgodCxlKT0+dC5jb25jYXQoZSkpLFtdKX1jb25zdHJ1Y3Rvcih0LGUpe3RoaXMuX3NoYWR5Q2hpbGRyZW5PYnNlcnZlcj1udWxsLHRoaXMuX25hdGl2ZUNoaWxkcmVuT2JzZXJ2ZXI9bnVsbCx0aGlzLl9jb25uZWN0ZWQ9ITEsdGhpcy5fdGFyZ2V0PXQsdGhpcy5jYWxsYmFjaz1lLHRoaXMuX2VmZmVjdGl2ZU5vZGVzPVtdLHRoaXMuX29ic2VydmVyPW51bGwsdGhpcy5fc2NoZWR1bGVkPSExLHRoaXMuX2JvdW5kU2NoZWR1bGU9KCk9Pnt0aGlzLl9zY2hlZHVsZSgpfSx0aGlzLmNvbm5lY3QoKSx0aGlzLl9zY2hlZHVsZSgpfWNvbm5lY3QoKXtPaSh0aGlzLl90YXJnZXQpP3RoaXMuX2xpc3RlblNsb3RzKFt0aGlzLl90YXJnZXRdKTpZKHRoaXMuX3RhcmdldCkuY2hpbGRyZW4mJih0aGlzLl9saXN0ZW5TbG90cyhZKHRoaXMuX3RhcmdldCkuY2hpbGRyZW4pLHdpbmRvdy5TaGFkeURPTT90aGlzLl9zaGFkeUNoaWxkcmVuT2JzZXJ2ZXI9d2luZG93LlNoYWR5RE9NLm9ic2VydmVDaGlsZHJlbih0aGlzLl90YXJnZXQsKHQ9Pnt0aGlzLl9wcm9jZXNzTXV0YXRpb25zKHQpfSkpOih0aGlzLl9uYXRpdmVDaGlsZHJlbk9ic2VydmVyPW5ldyBNdXRhdGlvbk9ic2VydmVyKCh0PT57dGhpcy5fcHJvY2Vzc011dGF0aW9ucyh0KX0pKSx0aGlzLl9uYXRpdmVDaGlsZHJlbk9ic2VydmVyLm9ic2VydmUodGhpcy5fdGFyZ2V0LHtjaGlsZExpc3Q6ITB9KSkpLHRoaXMuX2Nvbm5lY3RlZD0hMH1kaXNjb25uZWN0KCl7T2kodGhpcy5fdGFyZ2V0KT90aGlzLl91bmxpc3RlblNsb3RzKFt0aGlzLl90YXJnZXRdKTpZKHRoaXMuX3RhcmdldCkuY2hpbGRyZW4mJih0aGlzLl91bmxpc3RlblNsb3RzKFkodGhpcy5fdGFyZ2V0KS5jaGlsZHJlbiksd2luZG93LlNoYWR5RE9NJiZ0aGlzLl9zaGFkeUNoaWxkcmVuT2JzZXJ2ZXI/KHdpbmRvdy5TaGFkeURPTS51bm9ic2VydmVDaGlsZHJlbih0aGlzLl9zaGFkeUNoaWxkcmVuT2JzZXJ2ZXIpLHRoaXMuX3NoYWR5Q2hpbGRyZW5PYnNlcnZlcj1udWxsKTp0aGlzLl9uYXRpdmVDaGlsZHJlbk9ic2VydmVyJiYodGhpcy5fbmF0aXZlQ2hpbGRyZW5PYnNlcnZlci5kaXNjb25uZWN0KCksdGhpcy5fbmF0aXZlQ2hpbGRyZW5PYnNlcnZlcj1udWxsKSksdGhpcy5fY29ubmVjdGVkPSExfV9zY2hlZHVsZSgpe3RoaXMuX3NjaGVkdWxlZHx8KHRoaXMuX3NjaGVkdWxlZD0hMCx2dC5ydW4oKCgpPT50aGlzLmZsdXNoKCkpKSl9X3Byb2Nlc3NNdXRhdGlvbnModCl7dGhpcy5fcHJvY2Vzc1Nsb3RNdXRhdGlvbnModCksdGhpcy5mbHVzaCgpfV9wcm9jZXNzU2xvdE11dGF0aW9ucyh0KXtpZih0KWZvcihsZXQgZT0wO2U8dC5sZW5ndGg7ZSsrKXtsZXQgbj10W2VdO24uYWRkZWROb2RlcyYmdGhpcy5fbGlzdGVuU2xvdHMobi5hZGRlZE5vZGVzKSxuLnJlbW92ZWROb2RlcyYmdGhpcy5fdW5saXN0ZW5TbG90cyhuLnJlbW92ZWROb2Rlcyl9fWZsdXNoKCl7aWYoIXRoaXMuX2Nvbm5lY3RlZClyZXR1cm4hMTt3aW5kb3cuU2hhZHlET00mJlNoYWR5RE9NLmZsdXNoKCksdGhpcy5fbmF0aXZlQ2hpbGRyZW5PYnNlcnZlcj90aGlzLl9wcm9jZXNzU2xvdE11dGF0aW9ucyh0aGlzLl9uYXRpdmVDaGlsZHJlbk9ic2VydmVyLnRha2VSZWNvcmRzKCkpOnRoaXMuX3NoYWR5Q2hpbGRyZW5PYnNlcnZlciYmdGhpcy5fcHJvY2Vzc1Nsb3RNdXRhdGlvbnModGhpcy5fc2hhZHlDaGlsZHJlbk9ic2VydmVyLnRha2VSZWNvcmRzKCkpLHRoaXMuX3NjaGVkdWxlZD0hMTtsZXQgdD17dGFyZ2V0OnRoaXMuX3RhcmdldCxhZGRlZE5vZGVzOltdLHJlbW92ZWROb2RlczpbXX0sZT10aGlzLmNvbnN0cnVjdG9yLmdldEZsYXR0ZW5lZE5vZGVzKHRoaXMuX3RhcmdldCksbj1JaShlLHRoaXMuX2VmZmVjdGl2ZU5vZGVzKTtmb3IobGV0IGUsaT0wO2k8bi5sZW5ndGgmJihlPW5baV0pO2krKylmb3IobGV0IG4saT0wO2k8ZS5yZW1vdmVkLmxlbmd0aCYmKG49ZS5yZW1vdmVkW2ldKTtpKyspdC5yZW1vdmVkTm9kZXMucHVzaChuKTtmb3IobGV0IGkscj0wO3I8bi5sZW5ndGgmJihpPW5bcl0pO3IrKylmb3IobGV0IG49aS5pbmRleDtuPGkuaW5kZXgraS5hZGRlZENvdW50O24rKyl0LmFkZGVkTm9kZXMucHVzaChlW25dKTt0aGlzLl9lZmZlY3RpdmVOb2Rlcz1lO2xldCBpPSExO3JldHVybih0LmFkZGVkTm9kZXMubGVuZ3RofHx0LnJlbW92ZWROb2Rlcy5sZW5ndGgpJiYoaT0hMCx0aGlzLmNhbGxiYWNrLmNhbGwodGhpcy5fdGFyZ2V0LHQpKSxpfV9saXN0ZW5TbG90cyh0KXtmb3IobGV0IGU9MDtlPHQubGVuZ3RoO2UrKyl7bGV0IG49dFtlXTtPaShuKSYmbi5hZGRFdmVudExpc3RlbmVyKCJzbG90Y2hhbmdlIix0aGlzLl9ib3VuZFNjaGVkdWxlKX19X3VubGlzdGVuU2xvdHModCl7Zm9yKGxldCBlPTA7ZTx0Lmxlbmd0aDtlKyspe2xldCBuPXRbZV07T2kobikmJm4ucmVtb3ZlRXZlbnRMaXN0ZW5lcigic2xvdGNoYW5nZSIsdGhpcy5fYm91bmRTY2hlZHVsZSl9fX07Ci8qKgogICAgQGxpY2Vuc2UKICAgIENvcHlyaWdodCAoYykgMjAxNyBUaGUgUG9seW1lciBQcm9qZWN0IEF1dGhvcnMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgICBUaGlzIGNvZGUgbWF5IG9ubHkgYmUgdXNlZCB1bmRlciB0aGUgQlNEIHN0eWxlIGxpY2Vuc2UgZm91bmQgYXQgaHR0cDovL3BvbHltZXIuZ2l0aHViLmlvL0xJQ0VOU0UudHh0CiAgICBUaGUgY29tcGxldGUgc2V0IG9mIGF1dGhvcnMgbWF5IGJlIGZvdW5kIGF0IGh0dHA6Ly9wb2x5bWVyLmdpdGh1Yi5pby9BVVRIT1JTLnR4dAogICAgVGhlIGNvbXBsZXRlIHNldCBvZiBjb250cmlidXRvcnMgbWF5IGJlIGZvdW5kIGF0IGh0dHA6Ly9wb2x5bWVyLmdpdGh1Yi5pby9DT05UUklCVVRPUlMudHh0CiAgICBDb2RlIGRpc3RyaWJ1dGVkIGJ5IEdvb2dsZSBhcyBwYXJ0IG9mIHRoZSBwb2x5bWVyIHByb2plY3QgaXMgYWxzbwogICAgc3ViamVjdCB0byBhbiBhZGRpdGlvbmFsIElQIHJpZ2h0cyBncmFudCBmb3VuZCBhdCBodHRwOi8vcG9seW1lci5naXRodWIuaW8vUEFURU5UUy50eHQKICAgICovY29uc3Qgemk9ZnVuY3Rpb24oKXtsZXQgdCxlO2Rve3Q9d2luZG93LlNoYWR5RE9NJiZTaGFkeURPTS5mbHVzaCgpLHdpbmRvdy5TaGFkeUNTUyYmd2luZG93LlNoYWR5Q1NTLlNjb3BpbmdTaGltJiZ3aW5kb3cuU2hhZHlDU1MuU2NvcGluZ1NoaW0uZmx1c2goKSxlPUNuKCl9d2hpbGUodHx8ZSl9LERpPUVsZW1lbnQucHJvdG90eXBlLEJpPURpLm1hdGNoZXN8fERpLm1hdGNoZXNTZWxlY3Rvcnx8RGkubW96TWF0Y2hlc1NlbGVjdG9yfHxEaS5tc01hdGNoZXNTZWxlY3Rvcnx8RGkub01hdGNoZXNTZWxlY3Rvcnx8RGkud2Via2l0TWF0Y2hlc1NlbGVjdG9yLEhpPWZ1bmN0aW9uKHQsZSl7cmV0dXJuIEJpLmNhbGwodCxlKX07Ci8qKgogICAgQGxpY2Vuc2UKICAgIENvcHlyaWdodCAoYykgMjAxNyBUaGUgUG9seW1lciBQcm9qZWN0IEF1dGhvcnMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgICBUaGlzIGNvZGUgbWF5IG9ubHkgYmUgdXNlZCB1bmRlciB0aGUgQlNEIHN0eWxlIGxpY2Vuc2UgZm91bmQgYXQgaHR0cDovL3BvbHltZXIuZ2l0aHViLmlvL0xJQ0VOU0UudHh0CiAgICBUaGUgY29tcGxldGUgc2V0IG9mIGF1dGhvcnMgbWF5IGJlIGZvdW5kIGF0IGh0dHA6Ly9wb2x5bWVyLmdpdGh1Yi5pby9BVVRIT1JTLnR4dAogICAgVGhlIGNvbXBsZXRlIHNldCBvZiBjb250cmlidXRvcnMgbWF5IGJlIGZvdW5kIGF0IGh0dHA6Ly9wb2x5bWVyLmdpdGh1Yi5pby9DT05UUklCVVRPUlMudHh0CiAgICBDb2RlIGRpc3RyaWJ1dGVkIGJ5IEdvb2dsZSBhcyBwYXJ0IG9mIHRoZSBwb2x5bWVyIHByb2plY3QgaXMgYWxzbwogICAgc3ViamVjdCB0byBhbiBhZGRpdGlvbmFsIElQIHJpZ2h0cyBncmFudCBmb3VuZCBhdCBodHRwOi8vcG9seW1lci5naXRodWIuaW8vUEFURU5UUy50eHQKICAgICovY2xhc3MgRml7Y29uc3RydWN0b3IodCl7d2luZG93LlNoYWR5RE9NJiZ3aW5kb3cuU2hhZHlET00uaW5Vc2UmJndpbmRvdy5TaGFkeURPTS5wYXRjaCh0KSx0aGlzLm5vZGU9dH1vYnNlcnZlTm9kZXModCl7cmV0dXJuIG5ldyBSaSh0aGlzLm5vZGUsdCl9dW5vYnNlcnZlTm9kZXModCl7dC5kaXNjb25uZWN0KCl9bm90aWZ5T2JzZXJ2ZXIoKXt9ZGVlcENvbnRhaW5zKHQpe2lmKFkodGhpcy5ub2RlKS5jb250YWlucyh0KSlyZXR1cm4hMDtsZXQgZT10LG49dC5vd25lckRvY3VtZW50O2Zvcig7ZSYmZSE9PW4mJmUhPT10aGlzLm5vZGU7KWU9WShlKS5wYXJlbnROb2RlfHxZKGUpLmhvc3Q7cmV0dXJuIGU9PT10aGlzLm5vZGV9Z2V0T3duZXJSb290KCl7cmV0dXJuIFkodGhpcy5ub2RlKS5nZXRSb290Tm9kZSgpfWdldERpc3RyaWJ1dGVkTm9kZXMoKXtyZXR1cm4ic2xvdCI9PT10aGlzLm5vZGUubG9jYWxOYW1lP1kodGhpcy5ub2RlKS5hc3NpZ25lZE5vZGVzKHtmbGF0dGVuOiEwfSk6W119Z2V0RGVzdGluYXRpb25JbnNlcnRpb25Qb2ludHMoKXtsZXQgdD1bXSxlPVkodGhpcy5ub2RlKS5hc3NpZ25lZFNsb3Q7Zm9yKDtlOyl0LnB1c2goZSksZT1ZKGUpLmFzc2lnbmVkU2xvdDtyZXR1cm4gdH1pbXBvcnROb2RlKHQsZSl7bGV0IG49dGhpcy5ub2RlIGluc3RhbmNlb2YgRG9jdW1lbnQ/dGhpcy5ub2RlOnRoaXMubm9kZS5vd25lckRvY3VtZW50O3JldHVybiBZKG4pLmltcG9ydE5vZGUodCxlKX1nZXRFZmZlY3RpdmVDaGlsZE5vZGVzKCl7cmV0dXJuIFJpLmdldEZsYXR0ZW5lZE5vZGVzKHRoaXMubm9kZSl9cXVlcnlEaXN0cmlidXRlZEVsZW1lbnRzKHQpe2xldCBlPXRoaXMuZ2V0RWZmZWN0aXZlQ2hpbGROb2RlcygpLG49W107Zm9yKGxldCBpLHI9MCxvPWUubGVuZ3RoO3I8byYmKGk9ZVtyXSk7cisrKWkubm9kZVR5cGU9PT1Ob2RlLkVMRU1FTlRfTk9ERSYmSGkoaSx0KSYmbi5wdXNoKGkpO3JldHVybiBufWdldCBhY3RpdmVFbGVtZW50KCl7bGV0IHQ9dGhpcy5ub2RlO3JldHVybiB2b2lkIDAhPT10Ll9hY3RpdmVFbGVtZW50P3QuX2FjdGl2ZUVsZW1lbnQ6dC5hY3RpdmVFbGVtZW50fX1mdW5jdGlvbiBWaSh0LGUpe2ZvcihsZXQgbj0wO248ZS5sZW5ndGg7bisrKXtsZXQgaT1lW25dO09iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LGkse2dldDpmdW5jdGlvbigpe3JldHVybiB0aGlzLm5vZGVbaV19LGNvbmZpZ3VyYWJsZTohMH0pfX1jbGFzcyBqaXtjb25zdHJ1Y3Rvcih0KXt0aGlzLmV2ZW50PXR9Z2V0IHJvb3RUYXJnZXQoKXtyZXR1cm4gdGhpcy5wYXRoWzBdfWdldCBsb2NhbFRhcmdldCgpe3JldHVybiB0aGlzLmV2ZW50LnRhcmdldH1nZXQgcGF0aCgpe3JldHVybiB0aGlzLmV2ZW50LmNvbXBvc2VkUGF0aCgpfX1sZXQgVWk9Rmk7aWYod2luZG93LlNoYWR5RE9NJiZ3aW5kb3cuU2hhZHlET00uaW5Vc2UmJndpbmRvdy5TaGFkeURPTS5ub1BhdGNoJiZ3aW5kb3cuU2hhZHlET00uV3JhcHBlcil7Y2xhc3MgdCBleHRlbmRzIHdpbmRvdy5TaGFkeURPTS5XcmFwcGVye31PYmplY3QuZ2V0T3duUHJvcGVydHlOYW1lcyhGaS5wcm90b3R5cGUpLmZvckVhY2goKGU9PnsiYWN0aXZlRWxlbWVudCIhPWUmJih0LnByb3RvdHlwZVtlXT1GaS5wcm90b3R5cGVbZV0pfSkpLFZpKHQucHJvdG90eXBlLFsiY2xhc3NMaXN0Il0pLFVpPXQsT2JqZWN0LmRlZmluZVByb3BlcnRpZXMoamkucHJvdG90eXBlLHtsb2NhbFRhcmdldDp7Z2V0KCl7Y29uc3QgdD10aGlzLmV2ZW50LmN1cnJlbnRUYXJnZXQsZT10JiZxaSh0KS5nZXRPd25lclJvb3QoKSxuPXRoaXMucGF0aDtmb3IobGV0IHQ9MDt0PG4ubGVuZ3RoO3QrKyl7Y29uc3QgaT1uW3RdO2lmKHFpKGkpLmdldE93bmVyUm9vdCgpPT09ZSlyZXR1cm4gaX19LGNvbmZpZ3VyYWJsZTohMH0scGF0aDp7Z2V0KCl7cmV0dXJuIHdpbmRvdy5TaGFkeURPTS5jb21wb3NlZFBhdGgodGhpcy5ldmVudCl9LGNvbmZpZ3VyYWJsZTohMH19KX1lbHNlIShmdW5jdGlvbiBHaSh0LGUpe2ZvcihsZXQgbj0wO248ZS5sZW5ndGg7bisrKXtsZXQgaT1lW25dO3RbaV09ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5ub2RlW2ldLmFwcGx5KHRoaXMubm9kZSxhcmd1bWVudHMpfX19KShGaS5wcm90b3R5cGUsWyJjbG9uZU5vZGUiLCJhcHBlbmRDaGlsZCIsImluc2VydEJlZm9yZSIsInJlbW92ZUNoaWxkIiwicmVwbGFjZUNoaWxkIiwic2V0QXR0cmlidXRlIiwicmVtb3ZlQXR0cmlidXRlIiwicXVlcnlTZWxlY3RvciIsInF1ZXJ5U2VsZWN0b3JBbGwiXSksVmkoRmkucHJvdG90eXBlLFsicGFyZW50Tm9kZSIsImZpcnN0Q2hpbGQiLCJsYXN0Q2hpbGQiLCJuZXh0U2libGluZyIsInByZXZpb3VzU2libGluZyIsImZpcnN0RWxlbWVudENoaWxkIiwibGFzdEVsZW1lbnRDaGlsZCIsIm5leHRFbGVtZW50U2libGluZyIsInByZXZpb3VzRWxlbWVudFNpYmxpbmciLCJjaGlsZE5vZGVzIiwiY2hpbGRyZW4iLCJjbGFzc0xpc3QiXSksKGZ1bmN0aW9uIFdpKHQsZSl7Zm9yKGxldCBuPTA7bjxlLmxlbmd0aDtuKyspe2xldCBpPWVbbl07T2JqZWN0LmRlZmluZVByb3BlcnR5KHQsaSx7Z2V0OmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMubm9kZVtpXX0sc2V0OmZ1bmN0aW9uKHQpe3RoaXMubm9kZVtpXT10fSxjb25maWd1cmFibGU6ITB9KX19KShGaS5wcm90b3R5cGUsWyJ0ZXh0Q29udGVudCIsImlubmVySFRNTCIsImNsYXNzTmFtZSJdKTtjb25zdCBxaT1mdW5jdGlvbih0KXtpZigodD10fHxkb2N1bWVudClpbnN0YW5jZW9mIFVpKXJldHVybiB0O2lmKHQgaW5zdGFuY2VvZiBqaSlyZXR1cm4gdDtsZXQgZT10Ll9fZG9tQXBpO3JldHVybiBlfHwoZT10IGluc3RhbmNlb2YgRXZlbnQ/bmV3IGppKHQpOm5ldyBVaSh0KSx0Ll9fZG9tQXBpPWUpLGV9LFlpPXdpbmRvdy5TaGFkeURPTSxYaT13aW5kb3cuU2hhZHlDU1M7Ci8qKgogICAgQGxpY2Vuc2UKICAgIENvcHlyaWdodCAoYykgMjAxOSBUaGUgUG9seW1lciBQcm9qZWN0IEF1dGhvcnMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgICBUaGlzIGNvZGUgbWF5IG9ubHkgYmUgdXNlZCB1bmRlciB0aGUgQlNEIHN0eWxlIGxpY2Vuc2UgZm91bmQgYXQgaHR0cDovL3BvbHltZXIuZ2l0aHViLmlvL0xJQ0VOU0UudHh0CiAgICBUaGUgY29tcGxldGUgc2V0IG9mIGF1dGhvcnMgbWF5IGJlIGZvdW5kIGF0IGh0dHA6Ly9wb2x5bWVyLmdpdGh1Yi5pby9BVVRIT1JTLnR4dAogICAgVGhlIGNvbXBsZXRlIHNldCBvZiBjb250cmlidXRvcnMgbWF5IGJlIGZvdW5kIGF0IGh0dHA6Ly9wb2x5bWVyLmdpdGh1Yi5pby9DT05UUklCVVRPUlMudHh0CiAgICBDb2RlIGRpc3RyaWJ1dGVkIGJ5IEdvb2dsZSBhcyBwYXJ0IG9mIHRoZSBwb2x5bWVyIHByb2plY3QgaXMgYWxzbwogICAgc3ViamVjdCB0byBhbiBhZGRpdGlvbmFsIElQIHJpZ2h0cyBncmFudCBmb3VuZCBhdCBodHRwOi8vcG9seW1lci5naXRodWIuaW8vUEFURU5UUy50eHQKICAgICovZnVuY3Rpb24gJGkodCxlKXtyZXR1cm4gWSh0KS5nZXRSb290Tm9kZSgpPT09ZX0KLyoqCiAgICAgKiBAZmlsZW92ZXJ2aWV3CiAgICAgKiBAc3VwcHJlc3Mge2NoZWNrUHJvdG90eXBhbFR5cGVzfQogICAgICogQGxpY2Vuc2UgQ29weXJpZ2h0IChjKSAyMDE3IFRoZSBQb2x5bWVyIFByb2plY3QgQXV0aG9ycy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAgICAqIFRoaXMgY29kZSBtYXkgb25seSBiZSB1c2VkIHVuZGVyIHRoZSBCU0Qgc3R5bGUgbGljZW5zZSBmb3VuZCBhdAogICAgICogaHR0cDovL3BvbHltZXIuZ2l0aHViLmlvL0xJQ0VOU0UudHh0IFRoZSBjb21wbGV0ZSBzZXQgb2YgYXV0aG9ycyBtYXkgYmUgZm91bmQKICAgICAqIGF0IGh0dHA6Ly9wb2x5bWVyLmdpdGh1Yi5pby9BVVRIT1JTLnR4dCBUaGUgY29tcGxldGUgc2V0IG9mIGNvbnRyaWJ1dG9ycyBtYXkKICAgICAqIGJlIGZvdW5kIGF0IGh0dHA6Ly9wb2x5bWVyLmdpdGh1Yi5pby9DT05UUklCVVRPUlMudHh0IENvZGUgZGlzdHJpYnV0ZWQgYnkKICAgICAqIEdvb2dsZSBhcyBwYXJ0IG9mIHRoZSBwb2x5bWVyIHByb2plY3QgaXMgYWxzbyBzdWJqZWN0IHRvIGFuIGFkZGl0aW9uYWwgSVAKICAgICAqIHJpZ2h0cyBncmFudCBmb3VuZCBhdCBodHRwOi8vcG9seW1lci5naXRodWIuaW8vUEFURU5UUy50eHQKICAgICAqLwpjb25zdCBLaT0iZGlzYWJsZS11cGdyYWRlIixaaT10PT57Zm9yKDt0Oyl7Y29uc3QgZT1PYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKHQsIm9ic2VydmVkQXR0cmlidXRlcyIpO2lmKGUpcmV0dXJuIGUuZ2V0O3Q9T2JqZWN0LmdldFByb3RvdHlwZU9mKHQucHJvdG90eXBlKS5jb25zdHJ1Y3Rvcn1yZXR1cm4oKT0+W119O04oKHQ9Pntjb25zdCBlPW1lKHQpO2xldCBuPVppKGUpO3JldHVybiBjbGFzcyBleHRlbmRzIGV7Y29uc3RydWN0b3IoKXtzdXBlcigpfXN0YXRpYyBnZXQgb2JzZXJ2ZWRBdHRyaWJ1dGVzKCl7cmV0dXJuIG4uY2FsbCh0aGlzKS5jb25jYXQoS2kpfV9pbml0aWFsaXplUHJvcGVydGllcygpe3RoaXMuaGFzQXR0cmlidXRlKEtpKT90aGlzLl9faXNVcGdyYWRlRGlzYWJsZWQ9ITA6c3VwZXIuX2luaXRpYWxpemVQcm9wZXJ0aWVzKCl9X2VuYWJsZVByb3BlcnRpZXMoKXt0aGlzLl9faXNVcGdyYWRlRGlzYWJsZWR8fHN1cGVyLl9lbmFibGVQcm9wZXJ0aWVzKCl9X2NhbkFwcGx5UHJvcGVydHlEZWZhdWx0KHQpe3JldHVybiBzdXBlci5fY2FuQXBwbHlQcm9wZXJ0eURlZmF1bHQodCkmJiEodGhpcy5fX2lzVXBncmFkZURpc2FibGVkJiZ0aGlzLl9pc1Byb3BlcnR5UGVuZGluZyh0KSl9YXR0cmlidXRlQ2hhbmdlZENhbGxiYWNrKHQsZSxuLGkpe3Q9PUtpP3RoaXMuX19pc1VwZ3JhZGVEaXNhYmxlZCYmbnVsbD09biYmKHN1cGVyLl9pbml0aWFsaXplUHJvcGVydGllcygpLHRoaXMuX19pc1VwZ3JhZGVEaXNhYmxlZD0hMSxZKHRoaXMpLmlzQ29ubmVjdGVkJiZzdXBlci5jb25uZWN0ZWRDYWxsYmFjaygpKTpzdXBlci5hdHRyaWJ1dGVDaGFuZ2VkQ2FsbGJhY2sodCxlLG4saSl9Y29ubmVjdGVkQ2FsbGJhY2soKXt0aGlzLl9faXNVcGdyYWRlRGlzYWJsZWR8fHN1cGVyLmNvbm5lY3RlZENhbGxiYWNrKCl9ZGlzY29ubmVjdGVkQ2FsbGJhY2soKXt0aGlzLl9faXNVcGdyYWRlRGlzYWJsZWR8fHN1cGVyLmRpc2Nvbm5lY3RlZENhbGxiYWNrKCl9fX0pKTsKLyoqCiAgICBAbGljZW5zZQogICAgQ29weXJpZ2h0IChjKSAyMDE3IFRoZSBQb2x5bWVyIFByb2plY3QgQXV0aG9ycy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAgIFRoaXMgY29kZSBtYXkgb25seSBiZSB1c2VkIHVuZGVyIHRoZSBCU0Qgc3R5bGUgbGljZW5zZSBmb3VuZCBhdCBodHRwOi8vcG9seW1lci5naXRodWIuaW8vTElDRU5TRS50eHQKICAgIFRoZSBjb21wbGV0ZSBzZXQgb2YgYXV0aG9ycyBtYXkgYmUgZm91bmQgYXQgaHR0cDovL3BvbHltZXIuZ2l0aHViLmlvL0FVVEhPUlMudHh0CiAgICBUaGUgY29tcGxldGUgc2V0IG9mIGNvbnRyaWJ1dG9ycyBtYXkgYmUgZm91bmQgYXQgaHR0cDovL3BvbHltZXIuZ2l0aHViLmlvL0NPTlRSSUJVVE9SUy50eHQKICAgIENvZGUgZGlzdHJpYnV0ZWQgYnkgR29vZ2xlIGFzIHBhcnQgb2YgdGhlIHBvbHltZXIgcHJvamVjdCBpcyBhbHNvCiAgICBzdWJqZWN0IHRvIGFuIGFkZGl0aW9uYWwgSVAgcmlnaHRzIGdyYW50IGZvdW5kIGF0IGh0dHA6Ly9wb2x5bWVyLmdpdGh1Yi5pby9QQVRFTlRTLnR4dAogICAgKi8KY29uc3QgSmk9ImRpc2FibGUtdXBncmFkZSI7bGV0IFFpPXdpbmRvdy5TaGFkeUNTUztjb25zdCB0cj1OKCh0PT57Y29uc3QgZT1kaShtZSh0KSksbj1mZT9lOlNpKGUpLGk9Wmkobikscj17eDoicGFuLXgiLHk6InBhbi15Iixub25lOiJub25lIixhbGw6ImF1dG8ifTtjbGFzcyBvIGV4dGVuZHMgbntjb25zdHJ1Y3Rvcigpe3N1cGVyKCl9c3RhdGljIGdldCBpbXBvcnRNZXRhKCl7cmV0dXJuIHRoaXMucHJvdG90eXBlLmltcG9ydE1ldGF9Y3JlYXRlZCgpe31fX2F0dHJpYnV0ZVJlYWN0aW9uKHQsZSxuKXsodGhpcy5fX2RhdGFBdHRyaWJ1dGVzJiZ0aGlzLl9fZGF0YUF0dHJpYnV0ZXNbdF18fHQ9PT1KaSkmJnRoaXMuYXR0cmlidXRlQ2hhbmdlZENhbGxiYWNrKHQsZSxuLG51bGwpfXNldEF0dHJpYnV0ZSh0LGUpe2lmKEwmJiF0aGlzLl9sZWdhY3lGb3JjZU9ic2VydmVkQXR0cmlidXRlcyl7Y29uc3Qgbj10aGlzLmdldEF0dHJpYnV0ZSh0KTtzdXBlci5zZXRBdHRyaWJ1dGUodCxlKSx0aGlzLl9fYXR0cmlidXRlUmVhY3Rpb24odCxuLFN0cmluZyhlKSl9ZWxzZSBzdXBlci5zZXRBdHRyaWJ1dGUodCxlKX1yZW1vdmVBdHRyaWJ1dGUodCl7aWYoTCYmIXRoaXMuX2xlZ2FjeUZvcmNlT2JzZXJ2ZWRBdHRyaWJ1dGVzKXtjb25zdCBlPXRoaXMuZ2V0QXR0cmlidXRlKHQpO3N1cGVyLnJlbW92ZUF0dHJpYnV0ZSh0KSx0aGlzLl9fYXR0cmlidXRlUmVhY3Rpb24odCxlLG51bGwpfWVsc2Ugc3VwZXIucmVtb3ZlQXR0cmlidXRlKHQpfXN0YXRpYyBnZXQgb2JzZXJ2ZWRBdHRyaWJ1dGVzKCl7cmV0dXJuIEwmJiF0aGlzLnByb3RvdHlwZS5fbGVnYWN5Rm9yY2VPYnNlcnZlZEF0dHJpYnV0ZXM/KHRoaXMuaGFzT3duUHJvcGVydHkoSlNDb21waWxlcl9yZW5hbWVQcm9wZXJ0eSgiX19vYnNlcnZlZEF0dHJpYnV0ZXMiLHRoaXMpKXx8KHRoaXMuX19vYnNlcnZlZEF0dHJpYnV0ZXM9W10pLHRoaXMuX19vYnNlcnZlZEF0dHJpYnV0ZXMpOmkuY2FsbCh0aGlzKS5jb25jYXQoSmkpfV9lbmFibGVQcm9wZXJ0aWVzKCl7dGhpcy5fX2lzVXBncmFkZURpc2FibGVkfHxzdXBlci5fZW5hYmxlUHJvcGVydGllcygpfV9jYW5BcHBseVByb3BlcnR5RGVmYXVsdCh0KXtyZXR1cm4gc3VwZXIuX2NhbkFwcGx5UHJvcGVydHlEZWZhdWx0KHQpJiYhKHRoaXMuX19pc1VwZ3JhZGVEaXNhYmxlZCYmdGhpcy5faXNQcm9wZXJ0eVBlbmRpbmcodCkpfWNvbm5lY3RlZENhbGxiYWNrKCl7dGhpcy5fX25lZWRzQXR0cmlidXRlc0F0Q29ubmVjdGVkJiZ0aGlzLl90YWtlQXR0cmlidXRlcygpLHRoaXMuX19pc1VwZ3JhZGVEaXNhYmxlZHx8KHN1cGVyLmNvbm5lY3RlZENhbGxiYWNrKCksdGhpcy5pc0F0dGFjaGVkPSEwLHRoaXMuYXR0YWNoZWQoKSl9YXR0YWNoZWQoKXt9ZGlzY29ubmVjdGVkQ2FsbGJhY2soKXt0aGlzLl9faXNVcGdyYWRlRGlzYWJsZWR8fChzdXBlci5kaXNjb25uZWN0ZWRDYWxsYmFjaygpLHRoaXMuaXNBdHRhY2hlZD0hMSx0aGlzLmRldGFjaGVkKCkpfWRldGFjaGVkKCl7fWF0dHJpYnV0ZUNoYW5nZWRDYWxsYmFjayh0LGUsbixpKXtlIT09biYmKHQ9PUppP3RoaXMuX19pc1VwZ3JhZGVEaXNhYmxlZCYmbnVsbD09biYmKHRoaXMuX2luaXRpYWxpemVQcm9wZXJ0aWVzKCksdGhpcy5fX2lzVXBncmFkZURpc2FibGVkPSExLFkodGhpcykuaXNDb25uZWN0ZWQmJnRoaXMuY29ubmVjdGVkQ2FsbGJhY2soKSk6KHN1cGVyLmF0dHJpYnV0ZUNoYW5nZWRDYWxsYmFjayh0LGUsbixpKSx0aGlzLmF0dHJpYnV0ZUNoYW5nZWQodCxlLG4pKSl9YXR0cmlidXRlQ2hhbmdlZCh0LGUsbil7fV9pbml0aWFsaXplUHJvcGVydGllcygpe2lmKHcmJnRoaXMuaGFzQXR0cmlidXRlKEppKSl0aGlzLl9faXNVcGdyYWRlRGlzYWJsZWQ9ITA7ZWxzZXtsZXQgdD1PYmplY3QuZ2V0UHJvdG90eXBlT2YodGhpcyk7dC5oYXNPd25Qcm9wZXJ0eShKU0NvbXBpbGVyX3JlbmFtZVByb3BlcnR5KCJfX2hhc1JlZ2lzdGVyRmluaXNoZWQiLHQpKXx8KHRoaXMuX3JlZ2lzdGVyZWQoKSx0Ll9faGFzUmVnaXN0ZXJGaW5pc2hlZD0hMCksc3VwZXIuX2luaXRpYWxpemVQcm9wZXJ0aWVzKCksdGhpcy5yb290PXRoaXMsdGhpcy5jcmVhdGVkKCksTCYmIXRoaXMuX2xlZ2FjeUZvcmNlT2JzZXJ2ZWRBdHRyaWJ1dGVzJiYodGhpcy5oYXNBdHRyaWJ1dGVzKCk/dGhpcy5fdGFrZUF0dHJpYnV0ZXMoKTp0aGlzLnBhcmVudE5vZGV8fCh0aGlzLl9fbmVlZHNBdHRyaWJ1dGVzQXRDb25uZWN0ZWQ9ITApKSx0aGlzLl9hcHBseUxpc3RlbmVycygpfX1fdGFrZUF0dHJpYnV0ZXMoKXtjb25zdCB0PXRoaXMuYXR0cmlidXRlcztmb3IobGV0IGU9MCxuPXQubGVuZ3RoO2U8bjtlKyspe2NvbnN0IG49dFtlXTt0aGlzLl9fYXR0cmlidXRlUmVhY3Rpb24obi5uYW1lLG51bGwsbi52YWx1ZSl9fV9yZWdpc3RlcmVkKCl7fXJlYWR5KCl7dGhpcy5fZW5zdXJlQXR0cmlidXRlcygpLHN1cGVyLnJlYWR5KCl9X2Vuc3VyZUF0dHJpYnV0ZXMoKXt9X2FwcGx5TGlzdGVuZXJzKCl7fXNlcmlhbGl6ZSh0KXtyZXR1cm4gdGhpcy5fc2VyaWFsaXplVmFsdWUodCl9ZGVzZXJpYWxpemUodCxlKXtyZXR1cm4gdGhpcy5fZGVzZXJpYWxpemVWYWx1ZSh0LGUpfXJlZmxlY3RQcm9wZXJ0eVRvQXR0cmlidXRlKHQsZSxuKXt0aGlzLl9wcm9wZXJ0eVRvQXR0cmlidXRlKHQsZSxuKX1zZXJpYWxpemVWYWx1ZVRvQXR0cmlidXRlKHQsZSxuKXt0aGlzLl92YWx1ZVRvTm9kZUF0dHJpYnV0ZShufHx0aGlzLHQsZSl9ZXh0ZW5kKHQsZSl7aWYoIXR8fCFlKXJldHVybiB0fHxlO2xldCBuPU9iamVjdC5nZXRPd25Qcm9wZXJ0eU5hbWVzKGUpO2ZvcihsZXQgaSxyPTA7cjxuLmxlbmd0aCYmKGk9bltyXSk7cisrKXtsZXQgbj1PYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKGUsaSk7biYmT2JqZWN0LmRlZmluZVByb3BlcnR5KHQsaSxuKX1yZXR1cm4gdH1taXhpbih0LGUpe2ZvcihsZXQgbiBpbiBlKXRbbl09ZVtuXTtyZXR1cm4gdH1jaGFpbk9iamVjdCh0LGUpe3JldHVybiB0JiZlJiZ0IT09ZSYmKHQuX19wcm90b19fPWUpLHR9aW5zdGFuY2VUZW1wbGF0ZSh0KXtsZXQgZT10aGlzLmNvbnN0cnVjdG9yLl9jb250ZW50Rm9yVGVtcGxhdGUodCk7cmV0dXJuIGRvY3VtZW50LmltcG9ydE5vZGUoZSwhMCl9ZmlyZSh0LGUsbil7bj1ufHx7fSxlPW51bGw9PWU/e306ZTtsZXQgaT1uZXcgRXZlbnQodCx7YnViYmxlczp2b2lkIDA9PT1uLmJ1YmJsZXN8fG4uYnViYmxlcyxjYW5jZWxhYmxlOkJvb2xlYW4obi5jYW5jZWxhYmxlKSxjb21wb3NlZDp2b2lkIDA9PT1uLmNvbXBvc2VkfHxuLmNvbXBvc2VkfSk7cmV0dXJuIGkuZGV0YWlsPWUsWShuLm5vZGV8fHRoaXMpLmRpc3BhdGNoRXZlbnQoaSksaX1saXN0ZW4odCxlLG4pe3Q9dHx8dGhpcztsZXQgaT10aGlzLl9fYm91bmRMaXN0ZW5lcnN8fCh0aGlzLl9fYm91bmRMaXN0ZW5lcnM9bmV3IFdlYWtNYXApLHI9aS5nZXQodCk7cnx8KHI9e30saS5zZXQodCxyKSk7bGV0IG89ZStuO3Jbb118fChyW29dPXRoaXMuX2FkZE1ldGhvZEV2ZW50TGlzdGVuZXJUb05vZGUodCxlLG4sdGhpcykpfXVubGlzdGVuKHQsZSxuKXt0PXR8fHRoaXM7bGV0IGk9dGhpcy5fX2JvdW5kTGlzdGVuZXJzJiZ0aGlzLl9fYm91bmRMaXN0ZW5lcnMuZ2V0KHQpLHI9ZStuLG89aSYmaVtyXTtvJiYodGhpcy5fcmVtb3ZlRXZlbnRMaXN0ZW5lckZyb21Ob2RlKHQsZSxvKSxpW3JdPW51bGwpfXNldFNjcm9sbERpcmVjdGlvbih0LGUpe3JpKGV8fHRoaXMsclt0XXx8ImF1dG8iKX0kJCh0KXtyZXR1cm4gdGhpcy5yb290LnF1ZXJ5U2VsZWN0b3IodCl9Z2V0IGRvbUhvc3QoKXtsZXQgdD1ZKHRoaXMpLmdldFJvb3ROb2RlKCk7cmV0dXJuIHQgaW5zdGFuY2VvZiBEb2N1bWVudEZyYWdtZW50P3QuaG9zdDp0fWRpc3RyaWJ1dGVDb250ZW50KCl7Y29uc3QgdD1xaSh0aGlzKTt3aW5kb3cuU2hhZHlET00mJnQuc2hhZG93Um9vdCYmU2hhZHlET00uZmx1c2goKX1nZXRFZmZlY3RpdmVDaGlsZE5vZGVzKCl7cmV0dXJuIHFpKHRoaXMpLmdldEVmZmVjdGl2ZUNoaWxkTm9kZXMoKX1xdWVyeURpc3RyaWJ1dGVkRWxlbWVudHModCl7cmV0dXJuIHFpKHRoaXMpLnF1ZXJ5RGlzdHJpYnV0ZWRFbGVtZW50cyh0KX1nZXRFZmZlY3RpdmVDaGlsZHJlbigpe3JldHVybiB0aGlzLmdldEVmZmVjdGl2ZUNoaWxkTm9kZXMoKS5maWx0ZXIoKGZ1bmN0aW9uKHQpe3JldHVybiB0Lm5vZGVUeXBlPT09Tm9kZS5FTEVNRU5UX05PREV9KSl9Z2V0RWZmZWN0aXZlVGV4dENvbnRlbnQoKXtsZXQgdD10aGlzLmdldEVmZmVjdGl2ZUNoaWxkTm9kZXMoKSxlPVtdO2ZvcihsZXQgbixpPTA7bj10W2ldO2krKyluLm5vZGVUeXBlIT09Tm9kZS5DT01NRU5UX05PREUmJmUucHVzaChuLnRleHRDb250ZW50KTtyZXR1cm4gZS5qb2luKCIiKX1xdWVyeUVmZmVjdGl2ZUNoaWxkcmVuKHQpe2xldCBlPXRoaXMucXVlcnlEaXN0cmlidXRlZEVsZW1lbnRzKHQpO3JldHVybiBlJiZlWzBdfXF1ZXJ5QWxsRWZmZWN0aXZlQ2hpbGRyZW4odCl7cmV0dXJuIHRoaXMucXVlcnlEaXN0cmlidXRlZEVsZW1lbnRzKHQpfWdldENvbnRlbnRDaGlsZE5vZGVzKHQpe2xldCBlPXRoaXMucm9vdC5xdWVyeVNlbGVjdG9yKHR8fCJzbG90Iik7cmV0dXJuIGU/cWkoZSkuZ2V0RGlzdHJpYnV0ZWROb2RlcygpOltdfWdldENvbnRlbnRDaGlsZHJlbih0KXtyZXR1cm4gdGhpcy5nZXRDb250ZW50Q2hpbGROb2Rlcyh0KS5maWx0ZXIoKGZ1bmN0aW9uKHQpe3JldHVybiB0Lm5vZGVUeXBlPT09Tm9kZS5FTEVNRU5UX05PREV9KSl9aXNMaWdodERlc2NlbmRhbnQodCl7Y29uc3QgZT10aGlzO3JldHVybiBlIT09dCYmWShlKS5jb250YWlucyh0KSYmWShlKS5nZXRSb290Tm9kZSgpPT09WSh0KS5nZXRSb290Tm9kZSgpfWlzTG9jYWxEZXNjZW5kYW50KHQpe3JldHVybiB0aGlzLnJvb3Q9PT1ZKHQpLmdldFJvb3ROb2RlKCl9c2NvcGVTdWJ0cmVlKHQsZT0hMSl7cmV0dXJuKGZ1bmN0aW9uIG4odCxlPSExKXtpZighWWl8fCFYaSlyZXR1cm4gbnVsbDtpZighWWkuaGFuZGxlc0R5bmFtaWNTY29waW5nKXJldHVybiBudWxsO2NvbnN0IG49WGkuU2NvcGluZ1NoaW07aWYoIW4pcmV0dXJuIG51bGw7Y29uc3QgaT1uLnNjb3BlRm9yTm9kZSh0KSxyPVkodCkuZ2V0Um9vdE5vZGUoKSxvPXQ9PntpZighJGkodCxyKSlyZXR1cm47Y29uc3QgZT1BcnJheS5mcm9tKFlpLm5hdGl2ZU1ldGhvZHMucXVlcnlTZWxlY3RvckFsbC5jYWxsKHQsIioiKSk7ZS5wdXNoKHQpO2ZvcihsZXQgdD0wO3Q8ZS5sZW5ndGg7dCsrKXtjb25zdCBvPWVbdF07aWYoISRpKG8scikpY29udGludWU7Y29uc3QgYT1uLmN1cnJlbnRTY29wZUZvck5vZGUobyk7YSE9PWkmJigiIiE9PWEmJm4udW5zY29wZU5vZGUobyxhKSxuLnNjb3BlTm9kZShvLGkpKX19O2lmKG8odCksZSl7Y29uc3QgZT1uZXcgTXV0YXRpb25PYnNlcnZlcigodD0+e2ZvcihsZXQgZT0wO2U8dC5sZW5ndGg7ZSsrKXtjb25zdCBuPXRbZV07Zm9yKGxldCB0PTA7dDxuLmFkZGVkTm9kZXMubGVuZ3RoO3QrKyl7Y29uc3QgZT1uLmFkZGVkTm9kZXNbdF07ZS5ub2RlVHlwZT09PU5vZGUuRUxFTUVOVF9OT0RFJiZvKGUpfX19KSk7cmV0dXJuIGUub2JzZXJ2ZSh0LHtjaGlsZExpc3Q6ITAsc3VidHJlZTohMH0pLGV9cmV0dXJuIG51bGx9KSh0LGUpfWdldENvbXB1dGVkU3R5bGVWYWx1ZSh0KXtyZXR1cm4gUWkuZ2V0Q29tcHV0ZWRTdHlsZVZhbHVlKHRoaXMsdCl9ZGVib3VuY2UodCxlLG4pe3JldHVybiB0aGlzLl9kZWJvdW5jZXJzPXRoaXMuX2RlYm91bmNlcnN8fHt9LHRoaXMuX2RlYm91bmNlcnNbdF09RW4uZGVib3VuY2UodGhpcy5fZGVib3VuY2Vyc1t0XSxuPjA/Z3QuYWZ0ZXIobik6dnQsZS5iaW5kKHRoaXMpKX1pc0RlYm91bmNlckFjdGl2ZSh0KXt0aGlzLl9kZWJvdW5jZXJzPXRoaXMuX2RlYm91bmNlcnN8fHt9O2xldCBlPXRoaXMuX2RlYm91bmNlcnNbdF07cmV0dXJuISghZXx8IWUuaXNBY3RpdmUoKSl9Zmx1c2hEZWJvdW5jZXIodCl7dGhpcy5fZGVib3VuY2Vycz10aGlzLl9kZWJvdW5jZXJzfHx7fTtsZXQgZT10aGlzLl9kZWJvdW5jZXJzW3RdO2UmJmUuZmx1c2goKX1jYW5jZWxEZWJvdW5jZXIodCl7dGhpcy5fZGVib3VuY2Vycz10aGlzLl9kZWJvdW5jZXJzfHx7fTtsZXQgZT10aGlzLl9kZWJvdW5jZXJzW3RdO2UmJmUuY2FuY2VsKCl9YXN5bmModCxlKXtyZXR1cm4gZT4wP2d0LnJ1bih0LmJpbmQodGhpcyksZSk6fnZ0LnJ1bih0LmJpbmQodGhpcykpfWNhbmNlbEFzeW5jKHQpe3Q8MD92dC5jYW5jZWwofnQpOmd0LmNhbmNlbCh0KX1jcmVhdGUodCxlKXtsZXQgbj1kb2N1bWVudC5jcmVhdGVFbGVtZW50KHQpO2lmKGUpaWYobi5zZXRQcm9wZXJ0aWVzKW4uc2V0UHJvcGVydGllcyhlKTtlbHNlIGZvcihsZXQgdCBpbiBlKW5bdF09ZVt0XTtyZXR1cm4gbn1lbGVtZW50TWF0Y2hlcyh0LGUpe3JldHVybiBIaShlfHx0aGlzLHQpfXRvZ2dsZUF0dHJpYnV0ZSh0LGUpe2xldCBuPXRoaXM7cmV0dXJuIDM9PT1hcmd1bWVudHMubGVuZ3RoJiYobj1hcmd1bWVudHNbMl0pLDE9PWFyZ3VtZW50cy5sZW5ndGgmJihlPSFuLmhhc0F0dHJpYnV0ZSh0KSksZT8oWShuKS5zZXRBdHRyaWJ1dGUodCwiIiksITApOihZKG4pLnJlbW92ZUF0dHJpYnV0ZSh0KSwhMSl9dG9nZ2xlQ2xhc3ModCxlLG4pe249bnx8dGhpcywxPT1hcmd1bWVudHMubGVuZ3RoJiYoZT0hbi5jbGFzc0xpc3QuY29udGFpbnModCkpLGU/bi5jbGFzc0xpc3QuYWRkKHQpOm4uY2xhc3NMaXN0LnJlbW92ZSh0KX10cmFuc2Zvcm0odCxlKXsoZT1lfHx0aGlzKS5zdHlsZS53ZWJraXRUcmFuc2Zvcm09dCxlLnN0eWxlLnRyYW5zZm9ybT10fXRyYW5zbGF0ZTNkKHQsZSxuLGkpe3RoaXMudHJhbnNmb3JtKCJ0cmFuc2xhdGUzZCgiK3QrIiwiK2UrIiwiK24rIikiLGk9aXx8dGhpcyl9YXJyYXlEZWxldGUodCxlKXtsZXQgbjtpZihBcnJheS5pc0FycmF5KHQpKXtpZihuPXQuaW5kZXhPZihlKSxuPj0wKXJldHVybiB0LnNwbGljZShuLDEpfWVsc2UgaWYobj1udCh0aGlzLHQpLmluZGV4T2YoZSksbj49MClyZXR1cm4gdGhpcy5zcGxpY2UodCxuLDEpO3JldHVybiBudWxsfV9sb2dnZXIodCxlKXtzd2l0Y2goQXJyYXkuaXNBcnJheShlKSYmMT09PWUubGVuZ3RoJiZBcnJheS5pc0FycmF5KGVbMF0pJiYoZT1lWzBdKSx0KXtjYXNlImxvZyI6Y2FzZSJ3YXJuIjpjYXNlImVycm9yIjpjb25zb2xlW3RdKC4uLmUpfX1fbG9nKC4uLnQpe3RoaXMuX2xvZ2dlcigibG9nIix0KX1fd2FybiguLi50KXt0aGlzLl9sb2dnZXIoIndhcm4iLHQpfV9lcnJvciguLi50KXt0aGlzLl9sb2dnZXIoImVycm9yIix0KX1fbG9nZih0LC4uLmUpe3JldHVyblsiWyVzOjolc10iLHRoaXMuaXMsdCwuLi5lXX19cmV0dXJuIG8ucHJvdG90eXBlLmlzPSIiLG99KSk7ZnVuY3Rpb24gZXIodCxlKXtsZXQgbj0wLGk9MDtmb3IoOzspe2lmKG49PT10Lmxlbmd0aClyZXR1cm4gaT09PWUubGVuZ3RoPzA6LTE7aWYoaT09PWUubGVuZ3RoKXJldHVybiAxO2lmKGlyKHRbbl0pJiZpcihlW2ldKSl7Y29uc3Qgcj1uLG89aTtuPW5yKHQsbisxKSxpPW5yKGUsaSsxKTtjb25zdCBhPXBhcnNlRmxvYXQodC5zbGljZShyLG4pKSxzPXBhcnNlRmxvYXQoZS5zbGljZShvLGkpKTtpZihhPHMpcmV0dXJuLTE7aWYoYT5zKXJldHVybiAxfWVsc2V7aWYocnIodFtuXSkpe2lmKCFycihlW2ldKSlyZXR1cm4tMX1lbHNle2lmKHJyKGVbaV0pKXJldHVybiAxO2lmKHRbbl08ZVtpXSlyZXR1cm4tMTtpZih0W25dPmVbaV0pcmV0dXJuIDF9bisrLGkrK319fWZ1bmN0aW9uIG5yKHQsZSl7bGV0IG47IShmdW5jdGlvbih0KXt0W3QuTkFUVVJBTD0wXT0iTkFUVVJBTCIsdFt0LlJFQUw9MV09IlJFQUwiLHRbdC5FWFBPTkVOVF9TSUdOPTJdPSJFWFBPTkVOVF9TSUdOIix0W3QuRVhQT05FTlQ9M109IkVYUE9ORU5UIn0pKG58fChuPXt9KSk7bGV0IGk9bi5OQVRVUkFMO2Zvcig7ZTx0Lmxlbmd0aDtlKyspaWYoaT09PW4uTkFUVVJBTCl7aWYoIi4iPT09dFtlXSlpPW4uUkVBTDtlbHNlIGlmKCJlIj09PXRbZV18fCJFIj09PXRbZV0paT1uLkVYUE9ORU5UX1NJR047ZWxzZSBpZighaXIodFtlXSkpYnJlYWt9ZWxzZSBpZihpPT09bi5SRUFMKXtpZigiZSI9PT10W2VdfHwiRSI9PT10W2VdKWk9bi5FWFBPTkVOVF9TSUdOO2Vsc2UgaWYoIWlyKHRbZV0pKWJyZWFrfWVsc2UgaWYoaT09PW4uRVhQT05FTlRfU0lHTil7aWYoIWlyKHRbZV0pJiYiKyIhPT10W2VdJiYiLSIhPT10W2VdKWJyZWFrO2k9bi5FWFBPTkVOVH1lbHNlIGlmKGk9PT1uLkVYUE9ORU5UJiYhaXIodFtlXSkpYnJlYWs7cmV0dXJuIGV9ZnVuY3Rpb24gaXIodCl7cmV0dXJuIjAiPD10JiZ0PD0iOSJ9ZnVuY3Rpb24gcnIodCl7cmV0dXJuIi8iPT09dHx8Il8iPT09dHx8aXIodCl9ZnVuY3Rpb24gb3IodCl7cmV0dXJuIHdlLnVuaW9uLmFwcGx5KG51bGwsd2UudmFsdWVzKHQpKS5zb3J0KGVyKX1jbGFzcyBhciBleHRlbmRzIEVycm9ye2NvbnN0cnVjdG9yKCl7c3VwZXIoLi4uYXJndW1lbnRzKSx0aGlzLm5hbWU9IlJlcXVlc3RDYW5jZWxsYXRpb25FcnJvciJ9fWNsYXNzIHNyIGV4dGVuZHMgRXJyb3J7Y29uc3RydWN0b3IodCl7c3VwZXIodCksdGhpcy5uYW1lPSJJbnZhbGlkUmVxdWVzdE9wdGlvbnNFcnJvciIsT2JqZWN0LnNldFByb3RvdHlwZU9mKHRoaXMsc3IucHJvdG90eXBlKX19Y2xhc3MgbHIgZXh0ZW5kcyBFcnJvcntjb25zdHJ1Y3Rvcih0LGUpe3N1cGVyKCksdGhpcy5tZXNzYWdlPWBSZXF1ZXN0TmV0d29ya0Vycm9yOiAke3Quc3RhdHVzfSBhdCAke2V9YCx0aGlzLm5hbWU9IlJlcXVlc3ROZXR3b3JrRXJyb3IiLHRoaXMucmVxPXQsdGhpcy51cmw9ZX19dmFyIGNyOyEoZnVuY3Rpb24odCl7dC5HRVQ9IkdFVCIsdC5QT1NUPSJQT1NUIn0pKGNyfHwoY3I9e30pKTtjbGFzcyB1cnt2YWxpZGF0ZSgpe2lmKHRoaXMubWV0aG9kVHlwZT09PWNyLkdFVCYmdGhpcy5ib2R5KXRocm93IG5ldyBzcigiYm9keSBtdXN0IGJlIG1pc3NpbmcgZm9yIGEgR0VUIHJlcXVlc3QuIil9fWNsYXNzIGhye2NvbnN0cnVjdG9yKHQ9MWUzLGU9Myl7dGhpcy5fcXVldWU9W10sdGhpcy5fbkFjdGl2ZVJlcXVlc3RzPTAsdGhpcy5fblNpbXVsdGFuZW91c1JlcXVlc3RzPXQsdGhpcy5fbWF4UmV0cmllcz1lfXJlcXVlc3QodCxlKXtjb25zdCBuPShmdW5jdGlvbiBpKHQpe2NvbnN0IGU9bmV3IHVyO3JldHVybiB0PyhlLm1ldGhvZFR5cGU9Y3IuUE9TVCxlLmJvZHk9KGZ1bmN0aW9uIG4odCl7Y29uc3QgZT1uZXcgRm9ybURhdGE7Zm9yKGNvbnN0W24saV1vZiBPYmplY3QuZW50cmllcyh0KSl7Y29uc3QgdD1BcnJheS5pc0FycmF5KGkpP2k6W2ldO2Zvcihjb25zdCBpIG9mIHQpZS5hcHBlbmQobixpKX1yZXR1cm4gZX0pKHQpLGUpOihlLm1ldGhvZFR5cGU9Y3IuR0VULGUpfSkoZSk7cmV0dXJuIHRoaXMucmVxdWVzdFdpdGhPcHRpb25zKHQsbil9cmVxdWVzdFdpdGhPcHRpb25zKHQsZSl7cmV0dXJuIGUudmFsaWRhdGUoKSxuZXcgUHJvbWlzZSgoKHQsZSk9Pnt0aGlzLl9xdWV1ZS5wdXNoKHtyZXNvbHZlOnQscmVqZWN0OmV9KSx0aGlzLmxhdW5jaFJlcXVlc3RzKCl9KSkudGhlbigoKCk9PnRoaXMucHJvbWlzZVdpdGhSZXRyaWVzKHQsdGhpcy5fbWF4UmV0cmllcyxlKSkpLnRoZW4oKHQ9Pih0aGlzLl9uQWN0aXZlUmVxdWVzdHMtLSx0aGlzLmxhdW5jaFJlcXVlc3RzKCksdCkpLCh0PT4oIlJlcXVlc3ROZXR3b3JrRXJyb3IiPT09dC5uYW1lJiYodGhpcy5fbkFjdGl2ZVJlcXVlc3RzLS0sdGhpcy5sYXVuY2hSZXF1ZXN0cygpKSxQcm9taXNlLnJlamVjdCh0KSkpKX1mZXRjaCh0LGUpe3JldHVybiBuZXcgUHJvbWlzZSgoKHQsZSk9Pnt0aGlzLl9xdWV1ZS5wdXNoKHtyZXNvbHZlOnQscmVqZWN0OmV9KSx0aGlzLmxhdW5jaFJlcXVlc3RzKCl9KSkudGhlbigoKCk9PntsZXQgbj0xO3JldHVybiBuZXcgUHJvbWlzZSgoaT0+e2NvbnN0IHI9KCk9PntmZXRjaCh0LGUpLnRoZW4oKHQ9PntpZighdC5vayYmdGhpcy5fbWF4UmV0cmllcz5uKXJldHVybiBuKyssdm9pZCByKCk7aSh0KSx0aGlzLl9uQWN0aXZlUmVxdWVzdHMtLSx0aGlzLmxhdW5jaFJlcXVlc3RzKCl9KSl9O3IoKX0pKX0pKX1jbGVhclF1ZXVlKCl7Zm9yKDt0aGlzLl9xdWV1ZS5sZW5ndGg+MDspdGhpcy5fcXVldWUucG9wKCkucmVqZWN0KG5ldyBhcigiUmVxdWVzdCBjYW5jZWxsZWQgYnkgY2xlYXJRdWV1ZSIpKX1hY3RpdmVSZXF1ZXN0cygpe3JldHVybiB0aGlzLl9uQWN0aXZlUmVxdWVzdHN9b3V0c3RhbmRpbmdSZXF1ZXN0cygpe3JldHVybiB0aGlzLl9uQWN0aXZlUmVxdWVzdHMrdGhpcy5fcXVldWUubGVuZ3RofWxhdW5jaFJlcXVlc3RzKCl7Zm9yKDt0aGlzLl9uQWN0aXZlUmVxdWVzdHM8dGhpcy5fblNpbXVsdGFuZW91c1JlcXVlc3RzJiZ0aGlzLl9xdWV1ZS5sZW5ndGg+MDspdGhpcy5fbkFjdGl2ZVJlcXVlc3RzKyssdGhpcy5fcXVldWUucG9wKCkucmVzb2x2ZSh2b2lkIDApfXByb21pc2VXaXRoUmV0cmllcyh0LGUsbil7cmV0dXJuIHRoaXMuX3Byb21pc2VGcm9tVXJsKHQsbikudGhlbigodD0+dCksKGk9PmU+MD90aGlzLnByb21pc2VXaXRoUmV0cmllcyh0LGUtMSxuKTpQcm9taXNlLnJlamVjdChpKSkpfV9wcm9taXNlRnJvbVVybCh0LGUpe3JldHVybiBuZXcgUHJvbWlzZSgoKG4saSk9Pntjb25zdCByPShmdW5jdGlvbiBvKHQsZSxuLGkpe2NvbnN0IHI9bmV3IFhNTEh0dHBSZXF1ZXN0O3JldHVybiByLm9wZW4odCxlKSxuJiYoci53aXRoQ3JlZGVudGlhbHM9biksaSYmci5zZXRSZXF1ZXN0SGVhZGVyKCJDb250ZW50LVR5cGUiLGkpLHJ9KShlLm1ldGhvZFR5cGUsdCxlLndpdGhDcmVkZW50aWFscyxlLmNvbnRlbnRUeXBlKTtyLm9ubG9hZD1mdW5jdGlvbigpezIwMD09PXIuc3RhdHVzP24oSlNPTi5wYXJzZShyLnJlc3BvbnNlVGV4dCkpOmkobmV3IGxyKHIsdCkpfSxyLm9uZXJyb3I9ZnVuY3Rpb24oKXtpKG5ldyBscihyLHQpKX0sZS5ib2R5P3Iuc2VuZChlLmJvZHkpOnIuc2VuZCgpfSkpfX1jb25zdCBkcj0iZXhwZXJpbWVudGFsUGx1Z2luIixwcj1uZXcgVVJMU2VhcmNoUGFyYW1zKHdpbmRvdy5sb2NhdGlvbi5zZWFyY2gpO2xldCBmcj1tcigpO2Z1bmN0aW9uIG1yKHQ9ImRhdGEiLGU9cHIpe3JldHVybiIvIj09PXRbdC5sZW5ndGgtMV0mJih0PXQuc2xpY2UoMCx0Lmxlbmd0aC0xKSkse2Vudmlyb25tZW50OigpPT5fcih0LCIvZW52aXJvbm1lbnQiKSxleHBlcmltZW50czooKT0+X3IodCwiL2V4cGVyaW1lbnRzIikscGx1Z2luUm91dGU6KGUsbixpKT0+X3IodCsiL3BsdWdpbiIsYC8ke2V9JHtufWAsaSkscGx1Z2luc0xpc3Rpbmc6KCk9Pl9yKHQsIi9wbHVnaW5zX2xpc3RpbmciLHlyKHtbZHJdOmUuZ2V0QWxsKGRyKX0pKSxydW5zOigpPT5fcih0LCIvcnVucyIpLHJ1bnNGb3JFeHBlcmltZW50OmU9Pl9yKHQsIi9leHBlcmltZW50X3J1bnMiLHlyKHtleHBlcmltZW50OlN0cmluZyhlKX0pKX19ZnVuY3Rpb24gZ3IoKXtyZXR1cm4gZnJ9ZnVuY3Rpb24gX3IodCxlLG49bmV3IFVSTFNlYXJjaFBhcmFtcyl7bGV0IGk9dCtlO3JldHVybiBTdHJpbmcobikmJihpKz0oZS5pbmNsdWRlcygiPyIpPyImIjoiPyIpK1N0cmluZyhuKSksaX1mdW5jdGlvbiB5cih0PXt9KXtjb25zdCBlPU9iamVjdC5rZXlzKHQpLnNvcnQoKS5maWx0ZXIoKGU9PnRbZV0pKSxuPW5ldyBVUkxTZWFyY2hQYXJhbXM7cmV0dXJuIGUuZm9yRWFjaCgoZT0+e2NvbnN0IGk9dFtlXTsoQXJyYXkuaXNBcnJheShpKT9pOltpXSkuZm9yRWFjaCgodD0+bi5hcHBlbmQoZSx0KSkpfSkpLG59dmFyIHZyO2Z1bmN0aW9uIGJyKHQsZSl7Y29uc3Qgbj0oKCk9Pnt0cnl7cmV0dXJuIG5ldyBSZWdFeHAoZSl9Y2F0Y2godCl7cmV0dXJuIG51bGx9fSkoKTtyZXR1cm57bmFtZTplLG1ldGFkYXRhOnt0eXBlOnZyLlNFQVJDSF9SRVNVTFRTLHZhbGlkUmVnZXg6ISFuLHVuaXZlcnNhbFJlZ2V4OiIuKiI9PT1lfSxpdGVtczpuP3QuZmlsdGVyKCh0PT50Lm1hdGNoKG4pKSk6W119fWZ1bmN0aW9uIHhyKHQsZSxuKXtjb25zdCBpPShmdW5jdGlvbiByKHQsZT0iIil7Y29uc3Qgbj1bYnIodCxlKV0saT0oZnVuY3Rpb24gcih0LGU9Ii8iKXtjb25zdCBuPVtdLGk9e307cmV0dXJuIHQuZm9yRWFjaCgodD0+e2NvbnN0IHI9dC5pbmRleE9mKGUpLG89cj49MD90LnNsaWNlKDAscik6dDtpZighaVtvXSl7Y29uc3QgdD17bmFtZTpvLG1ldGFkYXRhOnt0eXBlOnZyLlBSRUZJWF9HUk9VUH0saXRlbXM6W119O2lbb109dCxuLnB1c2godCl9aVtvXS5pdGVtcy5wdXNoKHQpfSkpLG59KSh0KTtyZXR1cm5bXS5jb25jYXQobixpKX0pKG9yKHQpLG4pLG89KGZ1bmN0aW9uIGEodCl7Y29uc3QgZT1uZXcgTWFwO3JldHVybiBPYmplY3Qua2V5cyh0KS5mb3JFYWNoKChuPT57dFtuXS5mb3JFYWNoKCh0PT57Y29uc3QgaT1lLmdldCh0KXx8W107aS5wdXNoKG4pLGUuc2V0KHQsaSl9KSl9KSksZX0pKHdlLnBpY2sodCxlKSk7cmV0dXJuIGkubWFwKCgoe25hbWU6dCxtZXRhZGF0YTplLGl0ZW1zOm59KT0+KHtuYW1lOnQsbWV0YWRhdGE6ZSxpdGVtczpuLm1hcCgodD0+KHt0YWc6dCxydW5zOihvLmdldCh0KXx8W10pLnNsaWNlKCl9KSkpfSkpKX1mdW5jdGlvbiB3cih0LGUpe2NvbnN0IG49ZXIodC50YWcsZS50YWcpO3JldHVybiAwIT1uP246ZXIodC5ydW4sZS5ydW4pfWZ1bmN0aW9uIFNyKHQsZSxuKXtyZXR1cm4geHIodCxlLG4pLm1hcCgoZnVuY3Rpb24gaSh0KXtjb25zdCBlPXdlLmZsYXR0ZW4odC5pdGVtcy5tYXAoKCh7dGFnOnQscnVuczplfSk9PmUubWFwKChlPT4oe3RhZzp0LHJ1bjplfSkpKSkpKTtyZXR1cm4gZS5zb3J0KHdyKSx7bmFtZTp0Lm5hbWUsbWV0YWRhdGE6dC5tZXRhZGF0YSxpdGVtczplfX0pKX0KLyoqCiAgICBAbGljZW5zZQogICAgQ29weXJpZ2h0IChjKSAyMDE3IFRoZSBQb2x5bWVyIFByb2plY3QgQXV0aG9ycy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAgIFRoaXMgY29kZSBtYXkgb25seSBiZSB1c2VkIHVuZGVyIHRoZSBCU0Qgc3R5bGUgbGljZW5zZSBmb3VuZCBhdCBodHRwOi8vcG9seW1lci5naXRodWIuaW8vTElDRU5TRS50eHQKICAgIFRoZSBjb21wbGV0ZSBzZXQgb2YgYXV0aG9ycyBtYXkgYmUgZm91bmQgYXQgaHR0cDovL3BvbHltZXIuZ2l0aHViLmlvL0FVVEhPUlMudHh0CiAgICBUaGUgY29tcGxldGUgc2V0IG9mIGNvbnRyaWJ1dG9ycyBtYXkgYmUgZm91bmQgYXQgaHR0cDovL3BvbHltZXIuZ2l0aHViLmlvL0NPTlRSSUJVVE9SUy50eHQKICAgIENvZGUgZGlzdHJpYnV0ZWQgYnkgR29vZ2xlIGFzIHBhcnQgb2YgdGhlIHBvbHltZXIgcHJvamVjdCBpcyBhbHNvCiAgICBzdWJqZWN0IHRvIGFuIGFkZGl0aW9uYWwgSVAgcmlnaHRzIGdyYW50IGZvdW5kIGF0IGh0dHA6Ly9wb2x5bWVyLmdpdGh1Yi5pby9QQVRFTlRTLnR4dAogICAgKi8hKGZ1bmN0aW9uKHQpe3RbdC5TRUFSQ0hfUkVTVUxUUz0wXT0iU0VBUkNIX1JFU1VMVFMiLHRbdC5QUkVGSVhfR1JPVVA9MV09IlBSRUZJWF9HUk9VUCJ9KSh2cnx8KHZyPXt9KSk7Y29uc3QgTXI9e2F0dGFjaGVkOiEwLGRldGFjaGVkOiEwLHJlYWR5OiEwLGNyZWF0ZWQ6ITAsYmVmb3JlUmVnaXN0ZXI6ITAscmVnaXN0ZXJlZDohMCxhdHRyaWJ1dGVDaGFuZ2VkOiEwLGxpc3RlbmVyczohMCxob3N0QXR0cmlidXRlczohMH0sRXI9e2F0dGFjaGVkOiEwLGRldGFjaGVkOiEwLHJlYWR5OiEwLGNyZWF0ZWQ6ITAsYmVmb3JlUmVnaXN0ZXI6ITAscmVnaXN0ZXJlZDohMCxhdHRyaWJ1dGVDaGFuZ2VkOiEwLGJlaGF2aW9yczohMCxfbm9BY2Nlc3NvcnM6ITB9LFRyPU9iamVjdC5hc3NpZ24oe2xpc3RlbmVyczohMCxob3N0QXR0cmlidXRlczohMCxwcm9wZXJ0aWVzOiEwLG9ic2VydmVyczohMH0sRXIpO2Z1bmN0aW9uIEFyKHQsZSxuLGkpeyEoZnVuY3Rpb24gcih0LGUsbil7Y29uc3QgaT10Ll9ub0FjY2Vzc29ycyxyPU9iamVjdC5nZXRPd25Qcm9wZXJ0eU5hbWVzKHQpO2ZvcihsZXQgbz0wO288ci5sZW5ndGg7bysrKXtsZXQgYT1yW29dO2lmKCEoYSBpbiBuKSlpZihpKWVbYV09dFthXTtlbHNle2xldCBuPU9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IodCxhKTtuJiYobi5jb25maWd1cmFibGU9ITAsT2JqZWN0LmRlZmluZVByb3BlcnR5KGUsYSxuKSl9fX0pKGUsdCxpKTtmb3IobGV0IHQgaW4gTXIpZVt0XSYmKG5bdF09blt0XXx8W10sblt0XS5wdXNoKGVbdF0pKX1mdW5jdGlvbiBDcih0LGUsbil7ZT1lfHxbXTtmb3IobGV0IGk9dC5sZW5ndGgtMTtpPj0wO2ktLSl7bGV0IHI9dFtpXTtyP0FycmF5LmlzQXJyYXkocik/Q3IocixlKTplLmluZGV4T2Yocik8MCYmKCFufHxuLmluZGV4T2Yocik8MCkmJmUudW5zaGlmdChyKTpjb25zb2xlLndhcm4oImJlaGF2aW9yIGlzIG51bGwsIGNoZWNrIGZvciBtaXNzaW5nIG9yIDQwNCBpbXBvcnQiKX1yZXR1cm4gZX1mdW5jdGlvbiBrcih0LGUpe2Zvcihjb25zdCBuIGluIGUpe2NvbnN0IGk9dFtuXSxyPWVbbl07dFtuXT0hKCJ2YWx1ZSJpbiByKSYmaSYmInZhbHVlImluIGk/T2JqZWN0LmFzc2lnbih7dmFsdWU6aS52YWx1ZX0scik6cn19Y29uc3QgTHI9dHIoSFRNTEVsZW1lbnQpO2Z1bmN0aW9uIFByKHQsZSxuKXtsZXQgaTtjb25zdCByPXt9O2NsYXNzIG8gZXh0ZW5kcyBle3N0YXRpYyBfZmluYWxpemVDbGFzcygpe2lmKHRoaXMuaGFzT3duUHJvcGVydHkoSlNDb21waWxlcl9yZW5hbWVQcm9wZXJ0eSgiZ2VuZXJhdGVkRnJvbSIsdGhpcykpKXtpZihpKWZvcihsZXQgdCxlPTA7ZTxpLmxlbmd0aDtlKyspdD1pW2VdLHQucHJvcGVydGllcyYmdGhpcy5jcmVhdGVQcm9wZXJ0aWVzKHQucHJvcGVydGllcyksdC5vYnNlcnZlcnMmJnRoaXMuY3JlYXRlT2JzZXJ2ZXJzKHQub2JzZXJ2ZXJzLHQucHJvcGVydGllcyk7dC5wcm9wZXJ0aWVzJiZ0aGlzLmNyZWF0ZVByb3BlcnRpZXModC5wcm9wZXJ0aWVzKSx0Lm9ic2VydmVycyYmdGhpcy5jcmVhdGVPYnNlcnZlcnModC5vYnNlcnZlcnMsdC5wcm9wZXJ0aWVzKSx0aGlzLl9wcmVwYXJlVGVtcGxhdGUoKX1lbHNlIGUuX2ZpbmFsaXplQ2xhc3MuY2FsbCh0aGlzKX1zdGF0aWMgZ2V0IHByb3BlcnRpZXMoKXtjb25zdCBlPXt9O2lmKGkpZm9yKGxldCB0PTA7dDxpLmxlbmd0aDt0Kyspa3IoZSxpW3RdLnByb3BlcnRpZXMpO3JldHVybiBrcihlLHQucHJvcGVydGllcyksZX1zdGF0aWMgZ2V0IG9ic2VydmVycygpe2xldCBlPVtdO2lmKGkpZm9yKGxldCB0LG49MDtuPGkubGVuZ3RoO24rKyl0PWlbbl0sdC5vYnNlcnZlcnMmJihlPWUuY29uY2F0KHQub2JzZXJ2ZXJzKSk7cmV0dXJuIHQub2JzZXJ2ZXJzJiYoZT1lLmNvbmNhdCh0Lm9ic2VydmVycykpLGV9Y3JlYXRlZCgpe3N1cGVyLmNyZWF0ZWQoKTtjb25zdCB0PXIuY3JlYXRlZDtpZih0KWZvcihsZXQgZT0wO2U8dC5sZW5ndGg7ZSsrKXRbZV0uY2FsbCh0aGlzKX1fcmVnaXN0ZXJlZCgpe2NvbnN0IHQ9by5wcm90b3R5cGU7aWYoIXQuaGFzT3duUHJvcGVydHkoSlNDb21waWxlcl9yZW5hbWVQcm9wZXJ0eSgiX19oYXNSZWdpc3RlckZpbmlzaGVkIix0KSkpe3QuX19oYXNSZWdpc3RlckZpbmlzaGVkPSEwLHN1cGVyLl9yZWdpc3RlcmVkKCksdyYmYSh0KTtjb25zdCBlPU9iamVjdC5nZXRQcm90b3R5cGVPZih0aGlzKTtsZXQgbj1yLmJlZm9yZVJlZ2lzdGVyO2lmKG4pZm9yKGxldCB0PTA7dDxuLmxlbmd0aDt0Kyspblt0XS5jYWxsKGUpO2lmKG49ci5yZWdpc3RlcmVkLG4pZm9yKGxldCB0PTA7dDxuLmxlbmd0aDt0Kyspblt0XS5jYWxsKGUpfX1fYXBwbHlMaXN0ZW5lcnMoKXtzdXBlci5fYXBwbHlMaXN0ZW5lcnMoKTtjb25zdCB0PXIubGlzdGVuZXJzO2lmKHQpZm9yKGxldCBlPTA7ZTx0Lmxlbmd0aDtlKyspe2NvbnN0IG49dFtlXTtpZihuKWZvcihsZXQgdCBpbiBuKXRoaXMuX2FkZE1ldGhvZEV2ZW50TGlzdGVuZXJUb05vZGUodGhpcyx0LG5bdF0pfX1fZW5zdXJlQXR0cmlidXRlcygpe2NvbnN0IHQ9ci5ob3N0QXR0cmlidXRlcztpZih0KWZvcihsZXQgZT10Lmxlbmd0aC0xO2U+PTA7ZS0tKXtjb25zdCBuPXRbZV07Zm9yKGxldCB0IGluIG4pdGhpcy5fZW5zdXJlQXR0cmlidXRlKHQsblt0XSl9c3VwZXIuX2Vuc3VyZUF0dHJpYnV0ZXMoKX1yZWFkeSgpe3N1cGVyLnJlYWR5KCk7bGV0IHQ9ci5yZWFkeTtpZih0KWZvcihsZXQgZT0wO2U8dC5sZW5ndGg7ZSsrKXRbZV0uY2FsbCh0aGlzKX1hdHRhY2hlZCgpe3N1cGVyLmF0dGFjaGVkKCk7bGV0IHQ9ci5hdHRhY2hlZDtpZih0KWZvcihsZXQgZT0wO2U8dC5sZW5ndGg7ZSsrKXRbZV0uY2FsbCh0aGlzKX1kZXRhY2hlZCgpe3N1cGVyLmRldGFjaGVkKCk7bGV0IHQ9ci5kZXRhY2hlZDtpZih0KWZvcihsZXQgZT0wO2U8dC5sZW5ndGg7ZSsrKXRbZV0uY2FsbCh0aGlzKX1hdHRyaWJ1dGVDaGFuZ2VkKHQsZSxuKXtzdXBlci5hdHRyaWJ1dGVDaGFuZ2VkKCk7bGV0IGk9ci5hdHRyaWJ1dGVDaGFuZ2VkO2lmKGkpZm9yKGxldCByPTA7cjxpLmxlbmd0aDtyKyspaVtyXS5jYWxsKHRoaXMsdCxlLG4pfX1pZihuKXtBcnJheS5pc0FycmF5KG4pfHwobj1bbl0pO2xldCB0PWUucHJvdG90eXBlLmJlaGF2aW9ycztpPUNyKG4sbnVsbCx0KSxvLnByb3RvdHlwZS5iZWhhdmlvcnM9dD90LmNvbmNhdChuKTppfWNvbnN0IGE9ZT0+e2kmJihmdW5jdGlvbiBuKHQsZSxpKXtmb3IobGV0IG49MDtuPGUubGVuZ3RoO24rKylBcih0LGVbbl0saSxUcil9KShlLGksciksQXIoZSx0LHIsRXIpfTtyZXR1cm4gd3x8YShvLnByb3RvdHlwZSksby5nZW5lcmF0ZWRGcm9tPXQsb31jb25zdCBJcj1mdW5jdGlvbih0LGUpe3R8fGNvbnNvbGUud2FybigiUG9seW1lci5DbGFzcyByZXF1aXJlcyBgaW5mb2AgYXJndW1lbnQiKTtsZXQgbj1lP2UoTHIpOkxyO3JldHVybiBuPVByKHQsbix0LmJlaGF2aW9ycyksbi5pcz1uLnByb3RvdHlwZS5pcz10LmlzLG59LE5yPWZ1bmN0aW9uKHQpe2xldCBlO3JldHVybiBlPSJmdW5jdGlvbiI9PXR5cGVvZiB0P3Q6TnIuQ2xhc3ModCksdC5fbGVnYWN5Rm9yY2VPYnNlcnZlZEF0dHJpYnV0ZXMmJihlLnByb3RvdHlwZS5fbGVnYWN5Rm9yY2VPYnNlcnZlZEF0dHJpYnV0ZXM9dC5fbGVnYWN5Rm9yY2VPYnNlcnZlZEF0dHJpYnV0ZXMpLGN1c3RvbUVsZW1lbnRzLmRlZmluZShlLmlzLGUpLGV9OwovKioKICAgIEBsaWNlbnNlCiAgICBDb3B5cmlnaHQgKGMpIDIwMTcgVGhlIFBvbHltZXIgUHJvamVjdCBBdXRob3JzLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICAgVGhpcyBjb2RlIG1heSBvbmx5IGJlIHVzZWQgdW5kZXIgdGhlIEJTRCBzdHlsZSBsaWNlbnNlIGZvdW5kIGF0IGh0dHA6Ly9wb2x5bWVyLmdpdGh1Yi5pby9MSUNFTlNFLnR4dAogICAgVGhlIGNvbXBsZXRlIHNldCBvZiBhdXRob3JzIG1heSBiZSBmb3VuZCBhdCBodHRwOi8vcG9seW1lci5naXRodWIuaW8vQVVUSE9SUy50eHQKICAgIFRoZSBjb21wbGV0ZSBzZXQgb2YgY29udHJpYnV0b3JzIG1heSBiZSBmb3VuZCBhdCBodHRwOi8vcG9seW1lci5naXRodWIuaW8vQ09OVFJJQlVUT1JTLnR4dAogICAgQ29kZSBkaXN0cmlidXRlZCBieSBHb29nbGUgYXMgcGFydCBvZiB0aGUgcG9seW1lciBwcm9qZWN0IGlzIGFsc28KICAgIHN1YmplY3QgdG8gYW4gYWRkaXRpb25hbCBJUCByaWdodHMgZ3JhbnQgZm91bmQgYXQgaHR0cDovL3BvbHltZXIuZ2l0aHViLmlvL1BBVEVOVFMudHh0CiAgICAqLwovKioKICAgIEBsaWNlbnNlCiAgICBDb3B5cmlnaHQgKGMpIDIwMTcgVGhlIFBvbHltZXIgUHJvamVjdCBBdXRob3JzLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICAgVGhpcyBjb2RlIG1heSBvbmx5IGJlIHVzZWQgdW5kZXIgdGhlIEJTRCBzdHlsZSBsaWNlbnNlIGZvdW5kIGF0IGh0dHA6Ly9wb2x5bWVyLmdpdGh1Yi5pby9MSUNFTlNFLnR4dAogICAgVGhlIGNvbXBsZXRlIHNldCBvZiBhdXRob3JzIG1heSBiZSBmb3VuZCBhdCBodHRwOi8vcG9seW1lci5naXRodWIuaW8vQVVUSE9SUy50eHQKICAgIFRoZSBjb21wbGV0ZSBzZXQgb2YgY29udHJpYnV0b3JzIG1heSBiZSBmb3VuZCBhdCBodHRwOi8vcG9seW1lci5naXRodWIuaW8vQ09OVFJJQlVUT1JTLnR4dAogICAgQ29kZSBkaXN0cmlidXRlZCBieSBHb29nbGUgYXMgcGFydCBvZiB0aGUgcG9seW1lciBwcm9qZWN0IGlzIGFsc28KICAgIHN1YmplY3QgdG8gYW4gYWRkaXRpb25hbCBJUCByaWdodHMgZ3JhbnQgZm91bmQgYXQgaHR0cDovL3BvbHltZXIuZ2l0aHViLmlvL1BBVEVOVFMudHh0CiAgICAqLwpmdW5jdGlvbiBPcih0LGUsbixpLHIpe2xldCBvO3ImJihvPSJvYmplY3QiPT10eXBlb2YgbiYmbnVsbCE9PW4sbyYmKGk9dC5fX2RhdGFUZW1wW2VdKSk7bGV0IGE9aSE9PW4mJihpPT1pfHxuPT1uKTtyZXR1cm4gbyYmYSYmKHQuX19kYXRhVGVtcFtlXT1uKSxhfU5yLkNsYXNzPUlyO2NvbnN0IFJyPU4oKHQ9PmNsYXNzIGV4dGVuZHMgdHtfc2hvdWxkUHJvcGVydHlDaGFuZ2UodCxlLG4pe3JldHVybiBPcih0aGlzLHQsZSxuLCEwKX19KSksenI9TigodD0+Y2xhc3MgZXh0ZW5kcyB0e3N0YXRpYyBnZXQgcHJvcGVydGllcygpe3JldHVybnttdXRhYmxlRGF0YTpCb29sZWFufX1fc2hvdWxkUHJvcGVydHlDaGFuZ2UodCxlLG4pe3JldHVybiBPcih0aGlzLHQsZSxuLHRoaXMubXV0YWJsZURhdGEpfX0pKTtSci5fbXV0YWJsZVByb3BlcnR5Q2hhbmdlPU9yOwovKioKICAgIEBsaWNlbnNlCiAgICBDb3B5cmlnaHQgKGMpIDIwMTcgVGhlIFBvbHltZXIgUHJvamVjdCBBdXRob3JzLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICAgVGhpcyBjb2RlIG1heSBvbmx5IGJlIHVzZWQgdW5kZXIgdGhlIEJTRCBzdHlsZSBsaWNlbnNlIGZvdW5kIGF0IGh0dHA6Ly9wb2x5bWVyLmdpdGh1Yi5pby9MSUNFTlNFLnR4dAogICAgVGhlIGNvbXBsZXRlIHNldCBvZiBhdXRob3JzIG1heSBiZSBmb3VuZCBhdCBodHRwOi8vcG9seW1lci5naXRodWIuaW8vQVVUSE9SUy50eHQKICAgIFRoZSBjb21wbGV0ZSBzZXQgb2YgY29udHJpYnV0b3JzIG1heSBiZSBmb3VuZCBhdCBodHRwOi8vcG9seW1lci5naXRodWIuaW8vQ09OVFJJQlVUT1JTLnR4dAogICAgQ29kZSBkaXN0cmlidXRlZCBieSBHb29nbGUgYXMgcGFydCBvZiB0aGUgcG9seW1lciBwcm9qZWN0IGlzIGFsc28KICAgIHN1YmplY3QgdG8gYW4gYWRkaXRpb25hbCBJUCByaWdodHMgZ3JhbnQgZm91bmQgYXQgaHR0cDovL3BvbHltZXIuZ2l0aHViLmlvL1BBVEVOVFMudHh0CiAgICAqLwpsZXQgRHI9bnVsbDtmdW5jdGlvbiBCcigpe3JldHVybiBEcn1Cci5wcm90b3R5cGU9T2JqZWN0LmNyZWF0ZShIVE1MVGVtcGxhdGVFbGVtZW50LnByb3RvdHlwZSx7Y29uc3RydWN0b3I6e3ZhbHVlOkJyLHdyaXRhYmxlOiEwfX0pO2NvbnN0IEhyPWhlKEJyKSxGcj1ScihIciksVnI9aGUoY2xhc3N7fSk7ZnVuY3Rpb24ganIodCxlKXtmb3IobGV0IG49MDtuPGUubGVuZ3RoO24rKyl7bGV0IGk9ZVtuXTtpZihCb29sZWFuKHQpIT1Cb29sZWFuKGkuX19oaWRlVGVtcGxhdGVDaGlsZHJlbl9fKSlpZihpLm5vZGVUeXBlPT09Tm9kZS5URVhUX05PREUpdD8oaS5fX3BvbHltZXJUZXh0Q29udGVudF9fPWkudGV4dENvbnRlbnQsaS50ZXh0Q29udGVudD0iIik6aS50ZXh0Q29udGVudD1pLl9fcG9seW1lclRleHRDb250ZW50X187ZWxzZSBpZigic2xvdCI9PT1pLmxvY2FsTmFtZSlpZih0KWkuX19wb2x5bWVyUmVwbGFjZWRfXz1kb2N1bWVudC5jcmVhdGVDb21tZW50KCJoaWRkZW4tc2xvdCIpLFkoWShpKS5wYXJlbnROb2RlKS5yZXBsYWNlQ2hpbGQoaS5fX3BvbHltZXJSZXBsYWNlZF9fLGkpO2Vsc2V7Y29uc3QgdD1pLl9fcG9seW1lclJlcGxhY2VkX187dCYmWShZKHQpLnBhcmVudE5vZGUpLnJlcGxhY2VDaGlsZChpLHQpfWVsc2UgaS5zdHlsZSYmKHQ/KGkuX19wb2x5bWVyRGlzcGxheV9fPWkuc3R5bGUuZGlzcGxheSxpLnN0eWxlLmRpc3BsYXk9Im5vbmUiKTppLnN0eWxlLmRpc3BsYXk9aS5fX3BvbHltZXJEaXNwbGF5X18pO2kuX19oaWRlVGVtcGxhdGVDaGlsZHJlbl9fPXQsaS5fc2hvd0hpZGVDaGlsZHJlbiYmaS5fc2hvd0hpZGVDaGlsZHJlbih0KX19Y2xhc3MgVXIgZXh0ZW5kcyBWcntjb25zdHJ1Y3Rvcih0KXtzdXBlcigpLHRoaXMuX2NvbmZpZ3VyZVByb3BlcnRpZXModCksdGhpcy5yb290PXRoaXMuX3N0YW1wVGVtcGxhdGUodGhpcy5fX2RhdGFIb3N0KTtsZXQgZT1bXTt0aGlzLmNoaWxkcmVuPWU7Zm9yKGxldCB0PXRoaXMucm9vdC5maXJzdENoaWxkO3Q7dD10Lm5leHRTaWJsaW5nKWUucHVzaCh0KSx0Ll9fdGVtcGxhdGl6ZUluc3RhbmNlPXRoaXM7dGhpcy5fX3RlbXBsYXRpemVPd25lciYmdGhpcy5fX3RlbXBsYXRpemVPd25lci5fX2hpZGVUZW1wbGF0ZUNoaWxkcmVuX18mJnRoaXMuX3Nob3dIaWRlQ2hpbGRyZW4oITApO2xldCBuPXRoaXMuX190ZW1wbGF0aXplT3B0aW9uczsodCYmbi5pbnN0YW5jZVByb3BzfHwhbi5pbnN0YW5jZVByb3BzKSYmdGhpcy5fZW5hYmxlUHJvcGVydGllcygpfV9jb25maWd1cmVQcm9wZXJ0aWVzKHQpe2lmKHRoaXMuX190ZW1wbGF0aXplT3B0aW9ucy5mb3J3YXJkSG9zdFByb3ApZm9yKGxldCB0IGluIHRoaXMuX19ob3N0UHJvcHMpdGhpcy5fc2V0UGVuZGluZ1Byb3BlcnR5KHQsdGhpcy5fX2RhdGFIb3N0WyJfaG9zdF8iK3RdKTtmb3IobGV0IGUgaW4gdCl0aGlzLl9zZXRQZW5kaW5nUHJvcGVydHkoZSx0W2VdKX1mb3J3YXJkSG9zdFByb3AodCxlKXt0aGlzLl9zZXRQZW5kaW5nUHJvcGVydHlPclBhdGgodCxlLCExLCEwKSYmdGhpcy5fX2RhdGFIb3N0Ll9lbnF1ZXVlQ2xpZW50KHRoaXMpfV9hZGRFdmVudExpc3RlbmVyVG9Ob2RlKHQsZSxuKXtpZih0aGlzLl9tZXRob2RIb3N0JiZ0aGlzLl9fdGVtcGxhdGl6ZU9wdGlvbnMucGFyZW50TW9kZWwpdGhpcy5fbWV0aG9kSG9zdC5fYWRkRXZlbnRMaXN0ZW5lclRvTm9kZSh0LGUsKHQ9Pnt0Lm1vZGVsPXRoaXMsbih0KX0pKTtlbHNle2xldCBpPXRoaXMuX19kYXRhSG9zdC5fX2RhdGFIb3N0O2kmJmkuX2FkZEV2ZW50TGlzdGVuZXJUb05vZGUodCxlLG4pfX1fc2hvd0hpZGVDaGlsZHJlbih0KXtqcih0LHRoaXMuY2hpbGRyZW4pfV9zZXRVbm1hbmFnZWRQcm9wZXJ0eVRvTm9kZSh0LGUsbil7dC5fX2hpZGVUZW1wbGF0ZUNoaWxkcmVuX18mJnQubm9kZVR5cGU9PU5vZGUuVEVYVF9OT0RFJiYidGV4dENvbnRlbnQiPT1lP3QuX19wb2x5bWVyVGV4dENvbnRlbnRfXz1uOnN1cGVyLl9zZXRVbm1hbmFnZWRQcm9wZXJ0eVRvTm9kZSh0LGUsbil9Z2V0IHBhcmVudE1vZGVsKCl7bGV0IHQ9dGhpcy5fX3BhcmVudE1vZGVsO2lmKCF0KXtsZXQgZTt0PXRoaXM7ZG97dD10Ll9fZGF0YUhvc3QuX19kYXRhSG9zdH13aGlsZSgoZT10Ll9fdGVtcGxhdGl6ZU9wdGlvbnMpJiYhZS5wYXJlbnRNb2RlbCk7dGhpcy5fX3BhcmVudE1vZGVsPXR9cmV0dXJuIHR9ZGlzcGF0Y2hFdmVudCh0KXtyZXR1cm4hMH19Y29uc3QgR3I9UnIoVXIpO2Z1bmN0aW9uIFdyKHQpe2xldCBlPXQuX19kYXRhSG9zdDtyZXR1cm4gZSYmZS5fbWV0aG9kSG9zdHx8ZX1mdW5jdGlvbiBxcih0LGUpe3JldHVybiBmdW5jdGlvbiB0KG4saSxyKXtlLmNhbGwobi5fX3RlbXBsYXRpemVPd25lcixpLnN1YnN0cmluZygiX2hvc3RfIi5sZW5ndGgpLHJbaV0pfX1mdW5jdGlvbiBZcih0LGUpe3JldHVybiBmdW5jdGlvbiB0KG4saSxyKXtlLmNhbGwobi5fX3RlbXBsYXRpemVPd25lcixuLGkscltpXSl9fWZ1bmN0aW9uIFhyKHQsZSxuKXtpZihiJiYhV3IodCkpdGhyb3cgbmV3IEVycm9yKCJzdHJpY3RUZW1wbGF0ZVBvbGljeTogdGVtcGxhdGUgb3duZXIgbm90IHRydXN0ZWQiKTtpZihuPW58fHt9LHQuX190ZW1wbGF0aXplT3duZXIpdGhyb3cgbmV3IEVycm9yKCJBIDx0ZW1wbGF0ZT4gY2FuIG9ubHkgYmUgdGVtcGxhdGl6ZWQgb25jZSIpO3QuX190ZW1wbGF0aXplT3duZXI9ZTtsZXQgaT0oZT9lLmNvbnN0cnVjdG9yOlVyKS5fcGFyc2VUZW1wbGF0ZSh0KSxyPWkudGVtcGxhdGl6ZUluc3RhbmNlQ2xhc3M7cnx8KHI9KGZ1bmN0aW9uIG8odCxlLG4pe2xldCBpPW4ubXV0YWJsZURhdGE/R3I6VXI7WHIubWl4aW4mJihpPVhyLm1peGluKGkpKTtsZXQgcj1jbGFzcyBleHRlbmRzIGl7fTtyZXR1cm4gci5wcm90b3R5cGUuX190ZW1wbGF0aXplT3B0aW9ucz1uLHIucHJvdG90eXBlLl9iaW5kVGVtcGxhdGUodCksKGZ1bmN0aW9uIG8odCxlLG4saSl7bGV0IHI9bi5ob3N0UHJvcHN8fHt9O2ZvcihsZXQgZSBpbiBpLmluc3RhbmNlUHJvcHMpe2RlbGV0ZSByW2VdO2xldCBuPWkubm90aWZ5SW5zdGFuY2VQcm9wO24mJnQucHJvdG90eXBlLl9hZGRQcm9wZXJ0eUVmZmVjdChlLHQucHJvdG90eXBlLlBST1BFUlRZX0VGRkVDVF9UWVBFUy5OT1RJRlkse2ZuOllyKDAsbil9KX1pZihpLmZvcndhcmRIb3N0UHJvcCYmZS5fX2RhdGFIb3N0KWZvcihsZXQgZSBpbiByKW4uaGFzSG9zdFByb3BzfHwobi5oYXNIb3N0UHJvcHM9ITApLHQucHJvdG90eXBlLl9hZGRQcm9wZXJ0eUVmZmVjdChlLHQucHJvdG90eXBlLlBST1BFUlRZX0VGRkVDVF9UWVBFUy5OT1RJRlkse2ZuOmZ1bmN0aW9uIHQoZSxuLGkpe2UuX19kYXRhSG9zdC5fc2V0UGVuZGluZ1Byb3BlcnR5T3JQYXRoKCJfaG9zdF8iK24saVtuXSwhMCwhMCl9fSl9KShyLHQsZSxuKSxyfSkodCxpLG4pLGkudGVtcGxhdGl6ZUluc3RhbmNlQ2xhc3M9cik7Y29uc3QgYT1Xcih0KTshKGZ1bmN0aW9uIHModCxlLG4saSl7bGV0IHI9bi5mb3J3YXJkSG9zdFByb3A7aWYociYmZS5oYXNIb3N0UHJvcHMpe2NvbnN0IG89InRlbXBsYXRlIj09dC5sb2NhbE5hbWU7bGV0IGE9ZS50ZW1wbGF0aXplVGVtcGxhdGVDbGFzcztpZighYSl7aWYobyl7bGV0IHQ9bi5tdXRhYmxlRGF0YT9GcjpIcjtjbGFzcyBpIGV4dGVuZHMgdHt9YT1lLnRlbXBsYXRpemVUZW1wbGF0ZUNsYXNzPWl9ZWxzZXtjb25zdCBuPXQuY29uc3RydWN0b3I7Y2xhc3MgaSBleHRlbmRzIG57fWE9ZS50ZW1wbGF0aXplVGVtcGxhdGVDbGFzcz1pfWxldCBzPWUuaG9zdFByb3BzO2ZvcihsZXQgdCBpbiBzKWEucHJvdG90eXBlLl9hZGRQcm9wZXJ0eUVmZmVjdCgiX2hvc3RfIit0LGEucHJvdG90eXBlLlBST1BFUlRZX0VGRkVDVF9UWVBFUy5QUk9QQUdBVEUse2ZuOnFyKDAscil9KSxhLnByb3RvdHlwZS5fY3JlYXRlTm90aWZ5aW5nUHJvcGVydHkoIl9ob3N0XyIrdCk7UyYmaSYmKGZ1bmN0aW9uIG8odCxlLG4pe2NvbnN0IGk9bi5jb25zdHJ1Y3Rvci5fcHJvcGVydGllcyx7cHJvcGVydHlFZmZlY3RzOnJ9PXQse2luc3RhbmNlUHJvcHM6b309ZTtmb3IobGV0IHQgaW4gcilpZighKGlbdF18fG8mJm9bdF0pKXtjb25zdCBlPXJbdF07Zm9yKGxldCBuPTA7bjxlLmxlbmd0aDtuKyspe2NvbnN0e3BhcnQ6aX09ZVtuXS5pbmZvO2lmKCFpLnNpZ25hdHVyZXx8IWkuc2lnbmF0dXJlLnN0YXRpYyl7Y29uc29sZS53YXJuKGBQcm9wZXJ0eSAnJHt0fScgdXNlZCBpbiB0ZW1wbGF0ZSBidXQgbm90IGRlY2xhcmVkIGluICdwcm9wZXJ0aWVzJzsgYXR0cmlidXRlIHdpbGwgbm90IGJlIG9ic2VydmVkLmApO2JyZWFrfX19fSkoZSxuLGkpfWlmKHQuX19kYXRhUHJvdG8mJk9iamVjdC5hc3NpZ24odC5fX2RhdGEsdC5fX2RhdGFQcm90byksbykhKGZ1bmN0aW9uIGEodCxlKXtEcj10LE9iamVjdC5zZXRQcm90b3R5cGVPZih0LGUucHJvdG90eXBlKSxuZXcgZSxEcj1udWxsfSkodCxhKSx0Ll9fZGF0YVRlbXA9e30sdC5fX2RhdGFQZW5kaW5nPW51bGwsdC5fX2RhdGFPbGQ9bnVsbCx0Ll9lbmFibGVQcm9wZXJ0aWVzKCk7ZWxzZXtPYmplY3Quc2V0UHJvdG90eXBlT2YodCxhLnByb3RvdHlwZSk7Y29uc3Qgbj1lLmhvc3RQcm9wcztmb3IobGV0IGUgaW4gbilpZihlPSJfaG9zdF8iK2UsZSBpbiB0KXtjb25zdCBuPXRbZV07ZGVsZXRlIHRbZV0sdC5fX2RhdGFbZV09bn19fX0pKHQsaSxuLGEpO2xldCBsPWNsYXNzIGV4dGVuZHMgcnt9O3JldHVybiBsLnByb3RvdHlwZS5fbWV0aG9kSG9zdD1hLGwucHJvdG90eXBlLl9fZGF0YUhvc3Q9dCxsLnByb3RvdHlwZS5fX3RlbXBsYXRpemVPd25lcj1lLGwucHJvdG90eXBlLl9faG9zdFByb3BzPWkuaG9zdFByb3BzLGw9bCxsfWZ1bmN0aW9uICRyKHQsZSl7bGV0IG47Zm9yKDtlOylpZihuPWUuX19kYXRhSG9zdD9lOmUuX190ZW1wbGF0aXplSW5zdGFuY2Upe2lmKG4uX19kYXRhSG9zdD09dClyZXR1cm4gbjtlPW4uX19kYXRhSG9zdH1lbHNlIGU9WShlKS5wYXJlbnROb2RlO3JldHVybiBudWxsfQovKioKICAgIEBsaWNlbnNlCiAgICBDb3B5cmlnaHQgKGMpIDIwMTcgVGhlIFBvbHltZXIgUHJvamVjdCBBdXRob3JzLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICAgVGhpcyBjb2RlIG1heSBvbmx5IGJlIHVzZWQgdW5kZXIgdGhlIEJTRCBzdHlsZSBsaWNlbnNlIGZvdW5kIGF0IGh0dHA6Ly9wb2x5bWVyLmdpdGh1Yi5pby9MSUNFTlNFLnR4dAogICAgVGhlIGNvbXBsZXRlIHNldCBvZiBhdXRob3JzIG1heSBiZSBmb3VuZCBhdCBodHRwOi8vcG9seW1lci5naXRodWIuaW8vQVVUSE9SUy50eHQKICAgIFRoZSBjb21wbGV0ZSBzZXQgb2YgY29udHJpYnV0b3JzIG1heSBiZSBmb3VuZCBhdCBodHRwOi8vcG9seW1lci5naXRodWIuaW8vQ09OVFJJQlVUT1JTLnR4dAogICAgQ29kZSBkaXN0cmlidXRlZCBieSBHb29nbGUgYXMgcGFydCBvZiB0aGUgcG9seW1lciBwcm9qZWN0IGlzIGFsc28KICAgIHN1YmplY3QgdG8gYW4gYWRkaXRpb25hbCBJUCByaWdodHMgZ3JhbnQgZm91bmQgYXQgaHR0cDovL3BvbHltZXIuZ2l0aHViLmlvL1BBVEVOVFMudHh0CiAgICAqL2NvbnN0IEtyPXt0ZW1wbGF0aXplKHQsZSl7dGhpcy5fdGVtcGxhdGl6ZXJUZW1wbGF0ZT10LHRoaXMuY3Rvcj1Ycih0LHRoaXMse211dGFibGVEYXRhOkJvb2xlYW4oZSkscGFyZW50TW9kZWw6dGhpcy5fcGFyZW50TW9kZWwsaW5zdGFuY2VQcm9wczp0aGlzLl9pbnN0YW5jZVByb3BzLGZvcndhcmRIb3N0UHJvcDp0aGlzLl9mb3J3YXJkSG9zdFByb3BWMixub3RpZnlJbnN0YW5jZVByb3A6dGhpcy5fbm90aWZ5SW5zdGFuY2VQcm9wVjJ9KX0sc3RhbXAodCl7cmV0dXJuIG5ldyB0aGlzLmN0b3IodCl9LG1vZGVsRm9yRWxlbWVudCh0KXtyZXR1cm4gJHIodGhpcy5fdGVtcGxhdGl6ZXJUZW1wbGF0ZSx0KX19OwovKioKICAgIEBsaWNlbnNlCiAgICBDb3B5cmlnaHQgKGMpIDIwMTcgVGhlIFBvbHltZXIgUHJvamVjdCBBdXRob3JzLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICAgVGhpcyBjb2RlIG1heSBvbmx5IGJlIHVzZWQgdW5kZXIgdGhlIEJTRCBzdHlsZSBsaWNlbnNlIGZvdW5kIGF0IGh0dHA6Ly9wb2x5bWVyLmdpdGh1Yi5pby9MSUNFTlNFLnR4dAogICAgVGhlIGNvbXBsZXRlIHNldCBvZiBhdXRob3JzIG1heSBiZSBmb3VuZCBhdCBodHRwOi8vcG9seW1lci5naXRodWIuaW8vQVVUSE9SUy50eHQKICAgIFRoZSBjb21wbGV0ZSBzZXQgb2YgY29udHJpYnV0b3JzIG1heSBiZSBmb3VuZCBhdCBodHRwOi8vcG9seW1lci5naXRodWIuaW8vQ09OVFJJQlVUT1JTLnR4dAogICAgQ29kZSBkaXN0cmlidXRlZCBieSBHb29nbGUgYXMgcGFydCBvZiB0aGUgcG9seW1lciBwcm9qZWN0IGlzIGFsc28KICAgIHN1YmplY3QgdG8gYW4gYWRkaXRpb25hbCBJUCByaWdodHMgZ3JhbnQgZm91bmQgYXQgaHR0cDovL3BvbHltZXIuZ2l0aHViLmlvL1BBVEVOVFMudHh0CiAgICAqL2xldCBacj0hMTtmdW5jdGlvbiBKcigpe2lmKHcmJiFtKXtpZighWnIpe1pyPSEwO2NvbnN0IHQ9ZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgic3R5bGUiKTt0LnRleHRDb250ZW50PSJkb20tYmluZCxkb20taWYsZG9tLXJlcGVhdHtkaXNwbGF5Om5vbmU7fSIsZG9jdW1lbnQuaGVhZC5hcHBlbmRDaGlsZCh0KX1yZXR1cm4hMH1yZXR1cm4hMX0KLyoqCiAgICBAbGljZW5zZQogICAgQ29weXJpZ2h0IChjKSAyMDE3IFRoZSBQb2x5bWVyIFByb2plY3QgQXV0aG9ycy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAgIFRoaXMgY29kZSBtYXkgb25seSBiZSB1c2VkIHVuZGVyIHRoZSBCU0Qgc3R5bGUgbGljZW5zZSBmb3VuZCBhdCBodHRwOi8vcG9seW1lci5naXRodWIuaW8vTElDRU5TRS50eHQKICAgIFRoZSBjb21wbGV0ZSBzZXQgb2YgYXV0aG9ycyBtYXkgYmUgZm91bmQgYXQgaHR0cDovL3BvbHltZXIuZ2l0aHViLmlvL0FVVEhPUlMudHh0CiAgICBUaGUgY29tcGxldGUgc2V0IG9mIGNvbnRyaWJ1dG9ycyBtYXkgYmUgZm91bmQgYXQgaHR0cDovL3BvbHltZXIuZ2l0aHViLmlvL0NPTlRSSUJVVE9SUy50eHQKICAgIENvZGUgZGlzdHJpYnV0ZWQgYnkgR29vZ2xlIGFzIHBhcnQgb2YgdGhlIHBvbHltZXIgcHJvamVjdCBpcyBhbHNvCiAgICBzdWJqZWN0IHRvIGFuIGFkZGl0aW9uYWwgSVAgcmlnaHRzIGdyYW50IGZvdW5kIGF0IGh0dHA6Ly9wb2x5bWVyLmdpdGh1Yi5pby9QQVRFTlRTLnR4dAogICAgKi9jb25zdCBRcj1kaSh6cihoZShIVE1MRWxlbWVudCkpKTtjdXN0b21FbGVtZW50cy5kZWZpbmUoImRvbS1iaW5kIixjbGFzcyBleHRlbmRzIFFye3N0YXRpYyBnZXQgb2JzZXJ2ZWRBdHRyaWJ1dGVzKCl7cmV0dXJuWyJtdXRhYmxlLWRhdGEiXX1jb25zdHJ1Y3Rvcigpe2lmKHN1cGVyKCksYil0aHJvdyBuZXcgRXJyb3IoInN0cmljdFRlbXBsYXRlUG9saWN5OiBkb20tYmluZCBub3QgYWxsb3dlZCIpO3RoaXMucm9vdD1udWxsLHRoaXMuJD1udWxsLHRoaXMuX19jaGlsZHJlbj1udWxsfWF0dHJpYnV0ZUNoYW5nZWRDYWxsYmFjayh0LGUsbixpKXt0aGlzLm11dGFibGVEYXRhPSEwfWNvbm5lY3RlZENhbGxiYWNrKCl7SnIoKXx8KHRoaXMuc3R5bGUuZGlzcGxheT0ibm9uZSIpLHRoaXMucmVuZGVyKCl9ZGlzY29ubmVjdGVkQ2FsbGJhY2soKXt0aGlzLl9fcmVtb3ZlQ2hpbGRyZW4oKX1fX2luc2VydENoaWxkcmVuKCl7WShZKHRoaXMpLnBhcmVudE5vZGUpLmluc2VydEJlZm9yZSh0aGlzLnJvb3QsdGhpcyl9X19yZW1vdmVDaGlsZHJlbigpe2lmKHRoaXMuX19jaGlsZHJlbilmb3IobGV0IHQ9MDt0PHRoaXMuX19jaGlsZHJlbi5sZW5ndGg7dCsrKXRoaXMucm9vdC5hcHBlbmRDaGlsZCh0aGlzLl9fY2hpbGRyZW5bdF0pfXJlbmRlcigpe2xldCB0O2lmKCF0aGlzLl9fY2hpbGRyZW4pe2lmKHQ9dHx8dGhpcy5xdWVyeVNlbGVjdG9yKCJ0ZW1wbGF0ZSIpLCF0KXtsZXQgZT1uZXcgTXV0YXRpb25PYnNlcnZlcigoKCk9PntpZih0PXRoaXMucXVlcnlTZWxlY3RvcigidGVtcGxhdGUiKSwhdCl0aHJvdyBuZXcgRXJyb3IoImRvbS1iaW5kIHJlcXVpcmVzIGEgPHRlbXBsYXRlPiBjaGlsZCIpO2UuZGlzY29ubmVjdCgpLHRoaXMucmVuZGVyKCl9KSk7cmV0dXJuIHZvaWQgZS5vYnNlcnZlKHRoaXMse2NoaWxkTGlzdDohMH0pfXRoaXMucm9vdD10aGlzLl9zdGFtcFRlbXBsYXRlKHQpLHRoaXMuJD10aGlzLnJvb3QuJCx0aGlzLl9fY2hpbGRyZW49W107Zm9yKGxldCB0PXRoaXMucm9vdC5maXJzdENoaWxkO3Q7dD10Lm5leHRTaWJsaW5nKXRoaXMuX19jaGlsZHJlblt0aGlzLl9fY2hpbGRyZW4ubGVuZ3RoXT10O3RoaXMuX2VuYWJsZVByb3BlcnRpZXMoKX10aGlzLl9faW5zZXJ0Q2hpbGRyZW4oKSx0aGlzLmRpc3BhdGNoRXZlbnQobmV3IEN1c3RvbUV2ZW50KCJkb20tY2hhbmdlIix7YnViYmxlczohMCxjb21wb3NlZDohMH0pKX19KTsKLyoqCiAgICBAbGljZW5zZQogICAgQ29weXJpZ2h0IChjKSAyMDE3IFRoZSBQb2x5bWVyIFByb2plY3QgQXV0aG9ycy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAgIFRoaXMgY29kZSBtYXkgb25seSBiZSB1c2VkIHVuZGVyIHRoZSBCU0Qgc3R5bGUgbGljZW5zZSBmb3VuZCBhdCBodHRwOi8vcG9seW1lci5naXRodWIuaW8vTElDRU5TRS50eHQKICAgIFRoZSBjb21wbGV0ZSBzZXQgb2YgYXV0aG9ycyBtYXkgYmUgZm91bmQgYXQgaHR0cDovL3BvbHltZXIuZ2l0aHViLmlvL0FVVEhPUlMudHh0CiAgICBUaGUgY29tcGxldGUgc2V0IG9mIGNvbnRyaWJ1dG9ycyBtYXkgYmUgZm91bmQgYXQgaHR0cDovL3BvbHltZXIuZ2l0aHViLmlvL0NPTlRSSUJVVE9SUy50eHQKICAgIENvZGUgZGlzdHJpYnV0ZWQgYnkgR29vZ2xlIGFzIHBhcnQgb2YgdGhlIHBvbHltZXIgcHJvamVjdCBpcyBhbHNvCiAgICBzdWJqZWN0IHRvIGFuIGFkZGl0aW9uYWwgSVAgcmlnaHRzIGdyYW50IGZvdW5kIGF0IGh0dHA6Ly9wb2x5bWVyLmdpdGh1Yi5pby9QQVRFTlRTLnR4dAogICAgKi8KY29uc3QgdG89enIoeWUpO2NsYXNzIGVvIGV4dGVuZHMgdG97c3RhdGljIGdldCBpcygpe3JldHVybiJkb20tcmVwZWF0In1zdGF0aWMgZ2V0IHRlbXBsYXRlKCl7cmV0dXJuIG51bGx9c3RhdGljIGdldCBwcm9wZXJ0aWVzKCl7cmV0dXJue2l0ZW1zOnt0eXBlOkFycmF5fSxhczp7dHlwZTpTdHJpbmcsdmFsdWU6Iml0ZW0ifSxpbmRleEFzOnt0eXBlOlN0cmluZyx2YWx1ZToiaW5kZXgifSxpdGVtc0luZGV4QXM6e3R5cGU6U3RyaW5nLHZhbHVlOiJpdGVtc0luZGV4In0sc29ydDp7dHlwZTpGdW5jdGlvbixvYnNlcnZlcjoiX19zb3J0Q2hhbmdlZCJ9LGZpbHRlcjp7dHlwZTpGdW5jdGlvbixvYnNlcnZlcjoiX19maWx0ZXJDaGFuZ2VkIn0sb2JzZXJ2ZTp7dHlwZTpTdHJpbmcsb2JzZXJ2ZXI6Il9fb2JzZXJ2ZUNoYW5nZWQifSxkZWxheTpOdW1iZXIscmVuZGVyZWRJdGVtQ291bnQ6e3R5cGU6TnVtYmVyLG5vdGlmeTohayxyZWFkT25seTohMH0saW5pdGlhbENvdW50Ont0eXBlOk51bWJlcn0sdGFyZ2V0RnJhbWVyYXRlOnt0eXBlOk51bWJlcix2YWx1ZToyMH0sX3RhcmdldEZyYW1lVGltZTp7dHlwZTpOdW1iZXIsY29tcHV0ZWQ6Il9fY29tcHV0ZUZyYW1lVGltZSh0YXJnZXRGcmFtZXJhdGUpIn0sbm90aWZ5RG9tQ2hhbmdlOnt0eXBlOkJvb2xlYW59LHJldXNlQ2h1bmtlZEluc3RhbmNlczp7dHlwZTpCb29sZWFufX19c3RhdGljIGdldCBvYnNlcnZlcnMoKXtyZXR1cm5bIl9faXRlbXNDaGFuZ2VkKGl0ZW1zLiopIl19Y29uc3RydWN0b3IoKXtzdXBlcigpLHRoaXMuX19pbnN0YW5jZXM9W10sdGhpcy5fX3JlbmRlckRlYm91bmNlcj1udWxsLHRoaXMuX19pdGVtc0lkeFRvSW5zdElkeD17fSx0aGlzLl9fY2h1bmtDb3VudD1udWxsLHRoaXMuX19yZW5kZXJTdGFydFRpbWU9bnVsbCx0aGlzLl9faXRlbXNBcnJheUNoYW5nZWQ9ITEsdGhpcy5fX3Nob3VsZE1lYXN1cmVDaHVuaz0hMSx0aGlzLl9fc2hvdWxkQ29udGludWVDaHVua2luZz0hMSx0aGlzLl9fY2h1bmtpbmdJZD0wLHRoaXMuX19zb3J0Rm49bnVsbCx0aGlzLl9fZmlsdGVyRm49bnVsbCx0aGlzLl9fb2JzZXJ2ZVBhdGhzPW51bGwsdGhpcy5fX2N0b3I9bnVsbCx0aGlzLl9faXNEZXRhY2hlZD0hMCx0aGlzLnRlbXBsYXRlPW51bGx9ZGlzY29ubmVjdGVkQ2FsbGJhY2soKXtzdXBlci5kaXNjb25uZWN0ZWRDYWxsYmFjaygpLHRoaXMuX19pc0RldGFjaGVkPSEwO2ZvcihsZXQgdD0wO3Q8dGhpcy5fX2luc3RhbmNlcy5sZW5ndGg7dCsrKXRoaXMuX19kZXRhY2hJbnN0YW5jZSh0KX1jb25uZWN0ZWRDYWxsYmFjaygpe2lmKHN1cGVyLmNvbm5lY3RlZENhbGxiYWNrKCksSnIoKXx8KHRoaXMuc3R5bGUuZGlzcGxheT0ibm9uZSIpLHRoaXMuX19pc0RldGFjaGVkKXt0aGlzLl9faXNEZXRhY2hlZD0hMTtsZXQgdD1ZKFkodGhpcykucGFyZW50Tm9kZSk7Zm9yKGxldCBlPTA7ZTx0aGlzLl9faW5zdGFuY2VzLmxlbmd0aDtlKyspdGhpcy5fX2F0dGFjaEluc3RhbmNlKGUsdCl9fV9fZW5zdXJlVGVtcGxhdGl6ZWQoKXtpZighdGhpcy5fX2N0b3Ipe2NvbnN0IHQ9dGhpcztsZXQgZT10aGlzLnRlbXBsYXRlPXQuX3RlbXBsYXRlSW5mbz90OnRoaXMucXVlcnlTZWxlY3RvcigidGVtcGxhdGUiKTtpZighZSl7bGV0IHQ9bmV3IE11dGF0aW9uT2JzZXJ2ZXIoKCgpPT57aWYoIXRoaXMucXVlcnlTZWxlY3RvcigidGVtcGxhdGUiKSl0aHJvdyBuZXcgRXJyb3IoImRvbS1yZXBlYXQgcmVxdWlyZXMgYSA8dGVtcGxhdGU+IGNoaWxkIik7dC5kaXNjb25uZWN0KCksdGhpcy5fX3JlbmRlcigpfSkpO3JldHVybiB0Lm9ic2VydmUodGhpcyx7Y2hpbGRMaXN0OiEwfSksITF9bGV0IG49e307blt0aGlzLmFzXT0hMCxuW3RoaXMuaW5kZXhBc109ITAsblt0aGlzLml0ZW1zSW5kZXhBc109ITAsdGhpcy5fX2N0b3I9WHIoZSx0aGlzLHttdXRhYmxlRGF0YTp0aGlzLm11dGFibGVEYXRhLHBhcmVudE1vZGVsOiEwLGluc3RhbmNlUHJvcHM6bixmb3J3YXJkSG9zdFByb3A6ZnVuY3Rpb24odCxlKXtsZXQgbj10aGlzLl9faW5zdGFuY2VzO2ZvcihsZXQgaSxyPTA7cjxuLmxlbmd0aCYmKGk9bltyXSk7cisrKWkuZm9yd2FyZEhvc3RQcm9wKHQsZSl9LG5vdGlmeUluc3RhbmNlUHJvcDpmdW5jdGlvbih0LGUsbil7aWYoUSh0aGlzLmFzLGUpKXtsZXQgaT10W3RoaXMuaXRlbXNJbmRleEFzXTtlPT10aGlzLmFzJiYodGhpcy5pdGVtc1tpXT1uKTtsZXQgcj1KKHRoaXMuYXMsYCR7SlNDb21waWxlcl9yZW5hbWVQcm9wZXJ0eSgiaXRlbXMiLHRoaXMpfS4ke2l9YCxlKTt0aGlzLm5vdGlmeVBhdGgocixuKX19fSl9cmV0dXJuITB9X19nZXRNZXRob2RIb3N0KCl7cmV0dXJuIHRoaXMuX19kYXRhSG9zdC5fbWV0aG9kSG9zdHx8dGhpcy5fX2RhdGFIb3N0fV9fZnVuY3Rpb25Gcm9tUHJvcGVydHlWYWx1ZSh0KXtpZigic3RyaW5nIj09dHlwZW9mIHQpe2xldCBlPXQsbj10aGlzLl9fZ2V0TWV0aG9kSG9zdCgpO3JldHVybiBmdW5jdGlvbigpe3JldHVybiBuW2VdLmFwcGx5KG4sYXJndW1lbnRzKX19cmV0dXJuIHR9X19zb3J0Q2hhbmdlZCh0KXt0aGlzLl9fc29ydEZuPXRoaXMuX19mdW5jdGlvbkZyb21Qcm9wZXJ0eVZhbHVlKHQpLHRoaXMuaXRlbXMmJnRoaXMuX19kZWJvdW5jZVJlbmRlcih0aGlzLl9fcmVuZGVyKX1fX2ZpbHRlckNoYW5nZWQodCl7dGhpcy5fX2ZpbHRlckZuPXRoaXMuX19mdW5jdGlvbkZyb21Qcm9wZXJ0eVZhbHVlKHQpLHRoaXMuaXRlbXMmJnRoaXMuX19kZWJvdW5jZVJlbmRlcih0aGlzLl9fcmVuZGVyKX1fX2NvbXB1dGVGcmFtZVRpbWUodCl7cmV0dXJuIE1hdGguY2VpbCgxZTMvdCl9X19vYnNlcnZlQ2hhbmdlZCgpe3RoaXMuX19vYnNlcnZlUGF0aHM9dGhpcy5vYnNlcnZlJiZ0aGlzLm9ic2VydmUucmVwbGFjZSgiLioiLCIuIikuc3BsaXQoIiAiKX1fX2hhbmRsZU9ic2VydmVkUGF0aHModCl7aWYodGhpcy5fX3NvcnRGbnx8dGhpcy5fX2ZpbHRlckZuKWlmKHQpe2lmKHRoaXMuX19vYnNlcnZlUGF0aHMpe2xldCBlPXRoaXMuX19vYnNlcnZlUGF0aHM7Zm9yKGxldCBuPTA7bjxlLmxlbmd0aDtuKyspMD09PXQuaW5kZXhPZihlW25dKSYmdGhpcy5fX2RlYm91bmNlUmVuZGVyKHRoaXMuX19yZW5kZXIsdGhpcy5kZWxheSl9fWVsc2UgdGhpcy5fX2RlYm91bmNlUmVuZGVyKHRoaXMuX19yZW5kZXIsdGhpcy5kZWxheSl9X19pdGVtc0NoYW5nZWQodCl7dGhpcy5pdGVtcyYmIUFycmF5LmlzQXJyYXkodGhpcy5pdGVtcykmJmNvbnNvbGUud2FybigiZG9tLXJlcGVhdCBleHBlY3RlZCBhcnJheSBmb3IgYGl0ZW1zYCwgZm91bmQiLHRoaXMuaXRlbXMpLHRoaXMuX19oYW5kbGVJdGVtUGF0aCh0LnBhdGgsdC52YWx1ZSl8fCgiaXRlbXMiPT09dC5wYXRoJiYodGhpcy5fX2l0ZW1zQXJyYXlDaGFuZ2VkPSEwKSx0aGlzLl9fZGVib3VuY2VSZW5kZXIodGhpcy5fX3JlbmRlcikpfV9fZGVib3VuY2VSZW5kZXIodCxlPTApe3RoaXMuX19yZW5kZXJEZWJvdW5jZXI9RW4uZGVib3VuY2UodGhpcy5fX3JlbmRlckRlYm91bmNlcixlPjA/Z3QuYWZ0ZXIoZSk6dnQsdC5iaW5kKHRoaXMpKSxBbih0aGlzLl9fcmVuZGVyRGVib3VuY2VyKX1yZW5kZXIoKXt0aGlzLl9fZGVib3VuY2VSZW5kZXIodGhpcy5fX3JlbmRlciksemkoKX1fX3JlbmRlcigpe2lmKCF0aGlzLl9fZW5zdXJlVGVtcGxhdGl6ZWQoKSlyZXR1cm47bGV0IHQ9dGhpcy5pdGVtc3x8W107Y29uc3QgZT10aGlzLl9fc29ydEFuZEZpbHRlckl0ZW1zKHQpLG49dGhpcy5fX2NhbGN1bGF0ZUxpbWl0KGUubGVuZ3RoKTt0aGlzLl9fdXBkYXRlSW5zdGFuY2VzKHQsbixlKSx0aGlzLmluaXRpYWxDb3VudCYmKHRoaXMuX19zaG91bGRNZWFzdXJlQ2h1bmt8fHRoaXMuX19zaG91bGRDb250aW51ZUNodW5raW5nKSYmKGNhbmNlbEFuaW1hdGlvbkZyYW1lKHRoaXMuX19jaHVua2luZ0lkKSx0aGlzLl9fY2h1bmtpbmdJZD1yZXF1ZXN0QW5pbWF0aW9uRnJhbWUoKCgpPT50aGlzLl9fY29udGludWVDaHVua2luZygpKSkpLHRoaXMuX3NldFJlbmRlcmVkSXRlbUNvdW50KHRoaXMuX19pbnN0YW5jZXMubGVuZ3RoKSxrJiYhdGhpcy5ub3RpZnlEb21DaGFuZ2V8fHRoaXMuZGlzcGF0Y2hFdmVudChuZXcgQ3VzdG9tRXZlbnQoImRvbS1jaGFuZ2UiLHtidWJibGVzOiEwLGNvbXBvc2VkOiEwfSkpfV9fc29ydEFuZEZpbHRlckl0ZW1zKHQpe2xldCBlPW5ldyBBcnJheSh0Lmxlbmd0aCk7Zm9yKGxldCBuPTA7bjx0Lmxlbmd0aDtuKyspZVtuXT1uO3JldHVybiB0aGlzLl9fZmlsdGVyRm4mJihlPWUuZmlsdGVyKCgoZSxuLGkpPT50aGlzLl9fZmlsdGVyRm4odFtlXSxuLGkpKSkpLHRoaXMuX19zb3J0Rm4mJmUuc29ydCgoKGUsbik9PnRoaXMuX19zb3J0Rm4odFtlXSx0W25dKSkpLGV9X19jYWxjdWxhdGVMaW1pdCh0KXtsZXQgZT10O2NvbnN0IG49dGhpcy5fX2luc3RhbmNlcy5sZW5ndGg7aWYodGhpcy5pbml0aWFsQ291bnQpe2xldCBpOyF0aGlzLl9fY2h1bmtDb3VudHx8dGhpcy5fX2l0ZW1zQXJyYXlDaGFuZ2VkJiYhdGhpcy5yZXVzZUNodW5rZWRJbnN0YW5jZXM/KGU9TWF0aC5taW4odCx0aGlzLmluaXRpYWxDb3VudCksaT1NYXRoLm1heChlLW4sMCksdGhpcy5fX2NodW5rQ291bnQ9aXx8MSk6KGk9TWF0aC5taW4oTWF0aC5tYXgodC1uLDApLHRoaXMuX19jaHVua0NvdW50KSxlPU1hdGgubWluKG4raSx0KSksdGhpcy5fX3Nob3VsZE1lYXN1cmVDaHVuaz1pPT09dGhpcy5fX2NodW5rQ291bnQsdGhpcy5fX3Nob3VsZENvbnRpbnVlQ2h1bmtpbmc9ZTx0LHRoaXMuX19yZW5kZXJTdGFydFRpbWU9cGVyZm9ybWFuY2Uubm93KCl9cmV0dXJuIHRoaXMuX19pdGVtc0FycmF5Q2hhbmdlZD0hMSxlfV9fY29udGludWVDaHVua2luZygpe2lmKHRoaXMuX19zaG91bGRNZWFzdXJlQ2h1bmspe2NvbnN0IHQ9cGVyZm9ybWFuY2Uubm93KCktdGhpcy5fX3JlbmRlclN0YXJ0VGltZTt0aGlzLl9fY2h1bmtDb3VudD1NYXRoLnJvdW5kKHRoaXMuX19jaHVua0NvdW50Kih0aGlzLl90YXJnZXRGcmFtZVRpbWUvdCkpfHwxfXRoaXMuX19zaG91bGRDb250aW51ZUNodW5raW5nJiZ0aGlzLl9fZGVib3VuY2VSZW5kZXIodGhpcy5fX3JlbmRlcil9X191cGRhdGVJbnN0YW5jZXModCxlLG4pe2NvbnN0IGk9dGhpcy5fX2l0ZW1zSWR4VG9JbnN0SWR4PXt9O2xldCByO2ZvcihyPTA7cjxlO3IrKyl7bGV0IGU9dGhpcy5fX2luc3RhbmNlc1tyXSxvPW5bcl0sYT10W29dO2lbb109cixlPyhlLl9zZXRQZW5kaW5nUHJvcGVydHkodGhpcy5hcyxhKSxlLl9zZXRQZW5kaW5nUHJvcGVydHkodGhpcy5pbmRleEFzLHIpLGUuX3NldFBlbmRpbmdQcm9wZXJ0eSh0aGlzLml0ZW1zSW5kZXhBcyxvKSxlLl9mbHVzaFByb3BlcnRpZXMoKSk6dGhpcy5fX2luc2VydEluc3RhbmNlKGEscixvKX1mb3IobGV0IHQ9dGhpcy5fX2luc3RhbmNlcy5sZW5ndGgtMTt0Pj1yO3QtLSl0aGlzLl9fZGV0YWNoQW5kUmVtb3ZlSW5zdGFuY2UodCl9X19kZXRhY2hJbnN0YW5jZSh0KXtsZXQgZT10aGlzLl9faW5zdGFuY2VzW3RdO2NvbnN0IG49WShlLnJvb3QpO2ZvcihsZXQgdD0wO3Q8ZS5jaGlsZHJlbi5sZW5ndGg7dCsrKW4uYXBwZW5kQ2hpbGQoZS5jaGlsZHJlblt0XSk7cmV0dXJuIGV9X19hdHRhY2hJbnN0YW5jZSh0LGUpe2UuaW5zZXJ0QmVmb3JlKHRoaXMuX19pbnN0YW5jZXNbdF0ucm9vdCx0aGlzKX1fX2RldGFjaEFuZFJlbW92ZUluc3RhbmNlKHQpe3RoaXMuX19kZXRhY2hJbnN0YW5jZSh0KSx0aGlzLl9faW5zdGFuY2VzLnNwbGljZSh0LDEpfV9fc3RhbXBJbnN0YW5jZSh0LGUsbil7bGV0IGk9e307cmV0dXJuIGlbdGhpcy5hc109dCxpW3RoaXMuaW5kZXhBc109ZSxpW3RoaXMuaXRlbXNJbmRleEFzXT1uLG5ldyB0aGlzLl9fY3RvcihpKX1fX2luc2VydEluc3RhbmNlKHQsZSxuKXtjb25zdCBpPXRoaXMuX19zdGFtcEluc3RhbmNlKHQsZSxuKTtsZXQgcj10aGlzLl9faW5zdGFuY2VzW2UrMV0sbz1yP3IuY2hpbGRyZW5bMF06dGhpcztyZXR1cm4gWShZKHRoaXMpLnBhcmVudE5vZGUpLmluc2VydEJlZm9yZShpLnJvb3QsbyksdGhpcy5fX2luc3RhbmNlc1tlXT1pLGl9X3Nob3dIaWRlQ2hpbGRyZW4odCl7Zm9yKGxldCBlPTA7ZTx0aGlzLl9faW5zdGFuY2VzLmxlbmd0aDtlKyspdGhpcy5fX2luc3RhbmNlc1tlXS5fc2hvd0hpZGVDaGlsZHJlbih0KX1fX2hhbmRsZUl0ZW1QYXRoKHQsZSl7bGV0IG49dC5zbGljZSg2KSxpPW4uaW5kZXhPZigiLiIpLHI9aTwwP246bi5zdWJzdHJpbmcoMCxpKTtpZihyPT1wYXJzZUludChyLDEwKSl7bGV0IHQ9aTwwPyIiOm4uc3Vic3RyaW5nKGkrMSk7dGhpcy5fX2hhbmRsZU9ic2VydmVkUGF0aHModCk7bGV0IG89dGhpcy5fX2luc3RhbmNlc1t0aGlzLl9faXRlbXNJZHhUb0luc3RJZHhbcl1dO3JldHVybiBvJiYoby5fc2V0UGVuZGluZ1Byb3BlcnR5T3JQYXRoKHRoaXMuYXMrKHQ/Ii4iK3Q6IiIpLGUsITEsITApLG8uX2ZsdXNoUHJvcGVydGllcygpKSwhMH19aXRlbUZvckVsZW1lbnQodCl7bGV0IGU9dGhpcy5tb2RlbEZvckVsZW1lbnQodCk7cmV0dXJuIGUmJmVbdGhpcy5hc119aW5kZXhGb3JFbGVtZW50KHQpe2xldCBlPXRoaXMubW9kZWxGb3JFbGVtZW50KHQpO3JldHVybiBlJiZlW3RoaXMuaW5kZXhBc119bW9kZWxGb3JFbGVtZW50KHQpe3JldHVybiAkcih0aGlzLnRlbXBsYXRlLHQpfX1jdXN0b21FbGVtZW50cy5kZWZpbmUoZW8uaXMsZW8pOwovKioKICAgIEBsaWNlbnNlCiAgICBDb3B5cmlnaHQgKGMpIDIwMTcgVGhlIFBvbHltZXIgUHJvamVjdCBBdXRob3JzLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICAgVGhpcyBjb2RlIG1heSBvbmx5IGJlIHVzZWQgdW5kZXIgdGhlIEJTRCBzdHlsZSBsaWNlbnNlIGZvdW5kIGF0IGh0dHA6Ly9wb2x5bWVyLmdpdGh1Yi5pby9MSUNFTlNFLnR4dAogICAgVGhlIGNvbXBsZXRlIHNldCBvZiBhdXRob3JzIG1heSBiZSBmb3VuZCBhdCBodHRwOi8vcG9seW1lci5naXRodWIuaW8vQVVUSE9SUy50eHQKICAgIFRoZSBjb21wbGV0ZSBzZXQgb2YgY29udHJpYnV0b3JzIG1heSBiZSBmb3VuZCBhdCBodHRwOi8vcG9seW1lci5naXRodWIuaW8vQ09OVFJJQlVUT1JTLnR4dAogICAgQ29kZSBkaXN0cmlidXRlZCBieSBHb29nbGUgYXMgcGFydCBvZiB0aGUgcG9seW1lciBwcm9qZWN0IGlzIGFsc28KICAgIHN1YmplY3QgdG8gYW4gYWRkaXRpb25hbCBJUCByaWdodHMgZ3JhbnQgZm91bmQgYXQgaHR0cDovL3BvbHltZXIuZ2l0aHViLmlvL1BBVEVOVFMudHh0CiAgICAqLwpjbGFzcyBubyBleHRlbmRzIHlle3N0YXRpYyBnZXQgaXMoKXtyZXR1cm4iZG9tLWlmIn1zdGF0aWMgZ2V0IHRlbXBsYXRlKCl7cmV0dXJuIG51bGx9c3RhdGljIGdldCBwcm9wZXJ0aWVzKCl7cmV0dXJue2lmOnt0eXBlOkJvb2xlYW4sb2JzZXJ2ZXI6Il9fZGVib3VuY2VSZW5kZXIifSxyZXN0YW1wOnt0eXBlOkJvb2xlYW4sb2JzZXJ2ZXI6Il9fZGVib3VuY2VSZW5kZXIifSxub3RpZnlEb21DaGFuZ2U6e3R5cGU6Qm9vbGVhbn19fWNvbnN0cnVjdG9yKCl7c3VwZXIoKSx0aGlzLl9fcmVuZGVyRGVib3VuY2VyPW51bGwsdGhpcy5fbGFzdElmPSExLHRoaXMuX19oaWRlVGVtcGxhdGVDaGlsZHJlbl9fPSExfV9fZGVib3VuY2VSZW5kZXIoKXt0aGlzLl9fcmVuZGVyRGVib3VuY2VyPUVuLmRlYm91bmNlKHRoaXMuX19yZW5kZXJEZWJvdW5jZXIsdnQsKCgpPT50aGlzLl9fcmVuZGVyKCkpKSxBbih0aGlzLl9fcmVuZGVyRGVib3VuY2VyKX1kaXNjb25uZWN0ZWRDYWxsYmFjaygpe3N1cGVyLmRpc2Nvbm5lY3RlZENhbGxiYWNrKCk7Y29uc3QgdD1ZKHRoaXMpLnBhcmVudE5vZGU7dCYmKHQubm9kZVR5cGUhPU5vZGUuRE9DVU1FTlRfRlJBR01FTlRfTk9ERXx8WSh0KS5ob3N0KXx8dGhpcy5fX3RlYXJkb3duSW5zdGFuY2UoKX1jb25uZWN0ZWRDYWxsYmFjaygpe3N1cGVyLmNvbm5lY3RlZENhbGxiYWNrKCksSnIoKXx8KHRoaXMuc3R5bGUuZGlzcGxheT0ibm9uZSIpLHRoaXMuaWYmJnRoaXMuX19kZWJvdW5jZVJlbmRlcigpfV9fZW5zdXJlVGVtcGxhdGUoKXtpZighdGhpcy5fX3RlbXBsYXRlKXtjb25zdCB0PXRoaXM7bGV0IGU9dC5fdGVtcGxhdGVJbmZvP3Q6WSh0KS5xdWVyeVNlbGVjdG9yKCJ0ZW1wbGF0ZSIpO2lmKCFlKXtsZXQgdD1uZXcgTXV0YXRpb25PYnNlcnZlcigoKCk9PntpZighWSh0aGlzKS5xdWVyeVNlbGVjdG9yKCJ0ZW1wbGF0ZSIpKXRocm93IG5ldyBFcnJvcigiZG9tLWlmIHJlcXVpcmVzIGEgPHRlbXBsYXRlPiBjaGlsZCIpO3QuZGlzY29ubmVjdCgpLHRoaXMuX19yZW5kZXIoKX0pKTtyZXR1cm4gdC5vYnNlcnZlKHRoaXMse2NoaWxkTGlzdDohMH0pLCExfXRoaXMuX190ZW1wbGF0ZT1lfXJldHVybiEwfV9fZW5zdXJlSW5zdGFuY2UoKXtsZXQgdD1ZKHRoaXMpLnBhcmVudE5vZGU7aWYodGhpcy5fX2hhc0luc3RhbmNlKCkpe2xldCBlPXRoaXMuX19nZXRJbnN0YW5jZU5vZGVzKCk7aWYoZSYmZS5sZW5ndGgmJlkodGhpcykucHJldmlvdXNTaWJsaW5nIT09ZVtlLmxlbmd0aC0xXSlmb3IobGV0IG4saT0wO2k8ZS5sZW5ndGgmJihuPWVbaV0pO2krKylZKHQpLmluc2VydEJlZm9yZShuLHRoaXMpfWVsc2V7aWYoIXQpcmV0dXJuITE7aWYoIXRoaXMuX19lbnN1cmVUZW1wbGF0ZSgpKXJldHVybiExO3RoaXMuX19jcmVhdGVBbmRJbnNlcnRJbnN0YW5jZSh0KX1yZXR1cm4hMH1yZW5kZXIoKXt6aSgpfV9fcmVuZGVyKCl7aWYodGhpcy5pZil7aWYoIXRoaXMuX19lbnN1cmVJbnN0YW5jZSgpKXJldHVybn1lbHNlIHRoaXMucmVzdGFtcCYmdGhpcy5fX3RlYXJkb3duSW5zdGFuY2UoKTt0aGlzLl9zaG93SGlkZUNoaWxkcmVuKCksayYmIXRoaXMubm90aWZ5RG9tQ2hhbmdlfHx0aGlzLmlmPT10aGlzLl9sYXN0SWZ8fCh0aGlzLmRpc3BhdGNoRXZlbnQobmV3IEN1c3RvbUV2ZW50KCJkb20tY2hhbmdlIix7YnViYmxlczohMCxjb21wb3NlZDohMH0pKSx0aGlzLl9sYXN0SWY9dGhpcy5pZil9X19oYXNJbnN0YW5jZSgpe31fX2dldEluc3RhbmNlTm9kZXMoKXt9X19jcmVhdGVBbmRJbnNlcnRJbnN0YW5jZSh0KXt9X190ZWFyZG93bkluc3RhbmNlKCl7fV9zaG93SGlkZUNoaWxkcmVuKCl7fX1jb25zdCBpbz1DP2NsYXNzIGV4dGVuZHMgbm97Y29uc3RydWN0b3IoKXtzdXBlcigpLHRoaXMuX19pbnN0YW5jZT1udWxsLHRoaXMuX19zeW5jSW5mbz1udWxsfV9faGFzSW5zdGFuY2UoKXtyZXR1cm4gQm9vbGVhbih0aGlzLl9faW5zdGFuY2UpfV9fZ2V0SW5zdGFuY2VOb2Rlcygpe3JldHVybiB0aGlzLl9faW5zdGFuY2UudGVtcGxhdGVJbmZvLmNoaWxkTm9kZXN9X19jcmVhdGVBbmRJbnNlcnRJbnN0YW5jZSh0KXtjb25zdCBlPXRoaXMuX19kYXRhSG9zdHx8dGhpcztpZihiJiYhdGhpcy5fX2RhdGFIb3N0KXRocm93IG5ldyBFcnJvcigic3RyaWN0VGVtcGxhdGVQb2xpY3k6IHRlbXBsYXRlIG93bmVyIG5vdCB0cnVzdGVkIik7Y29uc3Qgbj1lLl9iaW5kVGVtcGxhdGUodGhpcy5fX3RlbXBsYXRlLCEwKTtuLnJ1bkVmZmVjdHM9KHQsZSxuKT0+e2xldCBpPXRoaXMuX19zeW5jSW5mbztpZih0aGlzLmlmKWkmJih0aGlzLl9fc3luY0luZm89bnVsbCx0aGlzLl9zaG93SGlkZUNoaWxkcmVuKCksZT1PYmplY3QuYXNzaWduKGkuY2hhbmdlZFByb3BzLGUpKSx0KGUsbik7ZWxzZSBpZih0aGlzLl9faW5zdGFuY2UpaWYoaXx8KGk9dGhpcy5fX3N5bmNJbmZvPXtydW5FZmZlY3RzOnQsY2hhbmdlZFByb3BzOnt9fSksbilmb3IoY29uc3QgdCBpbiBlKXtjb25zdCBlPSQodCk7aS5jaGFuZ2VkUHJvcHNbZV09dGhpcy5fX2RhdGFIb3N0W2VdfWVsc2UgT2JqZWN0LmFzc2lnbihpLmNoYW5nZWRQcm9wcyxlKX0sdGhpcy5fX2luc3RhbmNlPWUuX3N0YW1wVGVtcGxhdGUodGhpcy5fX3RlbXBsYXRlLG4pLFkodCkuaW5zZXJ0QmVmb3JlKHRoaXMuX19pbnN0YW5jZSx0aGlzKX1fX3N5bmNIb3N0UHJvcGVydGllcygpe2NvbnN0IHQ9dGhpcy5fX3N5bmNJbmZvO3QmJih0aGlzLl9fc3luY0luZm89bnVsbCx0LnJ1bkVmZmVjdHModC5jaGFuZ2VkUHJvcHMsITEpKX1fX3RlYXJkb3duSW5zdGFuY2UoKXt0aGlzLl9faW5zdGFuY2UmJigodGhpcy5fX2RhdGFIb3N0fHx0aGlzKS5fcmVtb3ZlQm91bmREb20odGhpcy5fX2luc3RhbmNlKSx0aGlzLl9faW5zdGFuY2U9bnVsbCx0aGlzLl9fc3luY0luZm89bnVsbCl9X3Nob3dIaWRlQ2hpbGRyZW4oKXtjb25zdCB0PXRoaXMuX19oaWRlVGVtcGxhdGVDaGlsZHJlbl9ffHwhdGhpcy5pZjt0aGlzLl9faW5zdGFuY2UmJkJvb2xlYW4odGhpcy5fX2luc3RhbmNlLl9faGlkZGVuKSE9PXQmJih0aGlzLl9faW5zdGFuY2UuX19oaWRkZW49dCxqcih0LHRoaXMuX19pbnN0YW5jZS50ZW1wbGF0ZUluZm8uY2hpbGROb2RlcykpLHR8fHRoaXMuX19zeW5jSG9zdFByb3BlcnRpZXMoKX19OmNsYXNzIGV4dGVuZHMgbm97Y29uc3RydWN0b3IoKXtzdXBlcigpLHRoaXMuX19jdG9yPW51bGwsdGhpcy5fX2luc3RhbmNlPW51bGwsdGhpcy5fX2ludmFsaWRQcm9wcz1udWxsfV9faGFzSW5zdGFuY2UoKXtyZXR1cm4gQm9vbGVhbih0aGlzLl9faW5zdGFuY2UpfV9fZ2V0SW5zdGFuY2VOb2Rlcygpe3JldHVybiB0aGlzLl9faW5zdGFuY2UuY2hpbGRyZW59X19jcmVhdGVBbmRJbnNlcnRJbnN0YW5jZSh0KXt0aGlzLl9fY3Rvcnx8KHRoaXMuX19jdG9yPVhyKHRoaXMuX190ZW1wbGF0ZSx0aGlzLHttdXRhYmxlRGF0YTohMCxmb3J3YXJkSG9zdFByb3A6ZnVuY3Rpb24odCxlKXt0aGlzLl9faW5zdGFuY2UmJih0aGlzLmlmP3RoaXMuX19pbnN0YW5jZS5mb3J3YXJkSG9zdFByb3AodCxlKToodGhpcy5fX2ludmFsaWRQcm9wcz10aGlzLl9faW52YWxpZFByb3BzfHxPYmplY3QuY3JlYXRlKG51bGwpLHRoaXMuX19pbnZhbGlkUHJvcHNbJCh0KV09ITApKX19KSksdGhpcy5fX2luc3RhbmNlPW5ldyB0aGlzLl9fY3RvcixZKHQpLmluc2VydEJlZm9yZSh0aGlzLl9faW5zdGFuY2Uucm9vdCx0aGlzKX1fX3RlYXJkb3duSW5zdGFuY2UoKXtpZih0aGlzLl9faW5zdGFuY2Upe2xldCB0PXRoaXMuX19pbnN0YW5jZS5jaGlsZHJlbjtpZih0JiZ0Lmxlbmd0aCl7bGV0IGU9WSh0WzBdKS5wYXJlbnROb2RlO2lmKGUpe2U9WShlKTtmb3IobGV0IG4saT0wO2k8dC5sZW5ndGgmJihuPXRbaV0pO2krKyllLnJlbW92ZUNoaWxkKG4pfX10aGlzLl9faW52YWxpZFByb3BzPW51bGwsdGhpcy5fX2luc3RhbmNlPW51bGx9fV9fc3luY0hvc3RQcm9wZXJ0aWVzKCl7bGV0IHQ9dGhpcy5fX2ludmFsaWRQcm9wcztpZih0KXt0aGlzLl9faW52YWxpZFByb3BzPW51bGw7Zm9yKGxldCBlIGluIHQpdGhpcy5fX2luc3RhbmNlLl9zZXRQZW5kaW5nUHJvcGVydHkoZSx0aGlzLl9fZGF0YUhvc3RbZV0pO3RoaXMuX19pbnN0YW5jZS5fZmx1c2hQcm9wZXJ0aWVzKCl9fV9zaG93SGlkZUNoaWxkcmVuKCl7Y29uc3QgdD10aGlzLl9faGlkZVRlbXBsYXRlQ2hpbGRyZW5fX3x8IXRoaXMuaWY7dGhpcy5fX2luc3RhbmNlJiZCb29sZWFuKHRoaXMuX19pbnN0YW5jZS5fX2hpZGRlbikhPT10JiYodGhpcy5fX2luc3RhbmNlLl9faGlkZGVuPXQsdGhpcy5fX2luc3RhbmNlLl9zaG93SGlkZUNoaWxkcmVuKHQpKSx0fHx0aGlzLl9fc3luY0hvc3RQcm9wZXJ0aWVzKCl9fTtjdXN0b21FbGVtZW50cy5kZWZpbmUoaW8uaXMsaW8pOwovKioKICAgIEBsaWNlbnNlCiAgICBDb3B5cmlnaHQgKGMpIDIwMTcgVGhlIFBvbHltZXIgUHJvamVjdCBBdXRob3JzLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICAgVGhpcyBjb2RlIG1heSBvbmx5IGJlIHVzZWQgdW5kZXIgdGhlIEJTRCBzdHlsZSBsaWNlbnNlIGZvdW5kIGF0IGh0dHA6Ly9wb2x5bWVyLmdpdGh1Yi5pby9MSUNFTlNFLnR4dAogICAgVGhlIGNvbXBsZXRlIHNldCBvZiBhdXRob3JzIG1heSBiZSBmb3VuZCBhdCBodHRwOi8vcG9seW1lci5naXRodWIuaW8vQVVUSE9SUy50eHQKICAgIFRoZSBjb21wbGV0ZSBzZXQgb2YgY29udHJpYnV0b3JzIG1heSBiZSBmb3VuZCBhdCBodHRwOi8vcG9seW1lci5naXRodWIuaW8vQ09OVFJJQlVUT1JTLnR4dAogICAgQ29kZSBkaXN0cmlidXRlZCBieSBHb29nbGUgYXMgcGFydCBvZiB0aGUgcG9seW1lciBwcm9qZWN0IGlzIGFsc28KICAgIHN1YmplY3QgdG8gYW4gYWRkaXRpb25hbCBJUCByaWdodHMgZ3JhbnQgZm91bmQgYXQgaHR0cDovL3BvbHltZXIuZ2l0aHViLmlvL1BBVEVOVFMudHh0CiAgICAqLwpsZXQgcm89TigodD0+e2xldCBlPW1lKHQpO3JldHVybiBjbGFzcyBleHRlbmRzIGV7c3RhdGljIGdldCBwcm9wZXJ0aWVzKCl7cmV0dXJue2l0ZW1zOnt0eXBlOkFycmF5fSxtdWx0aTp7dHlwZTpCb29sZWFuLHZhbHVlOiExfSxzZWxlY3RlZDp7dHlwZTpPYmplY3Qsbm90aWZ5OiEwfSxzZWxlY3RlZEl0ZW06e3R5cGU6T2JqZWN0LG5vdGlmeTohMH0sdG9nZ2xlOnt0eXBlOkJvb2xlYW4sdmFsdWU6ITF9fX1zdGF0aWMgZ2V0IG9ic2VydmVycygpe3JldHVyblsiX191cGRhdGVTZWxlY3Rpb24obXVsdGksIGl0ZW1zLiopIl19Y29uc3RydWN0b3IoKXtzdXBlcigpLHRoaXMuX19sYXN0SXRlbXM9bnVsbCx0aGlzLl9fbGFzdE11bHRpPW51bGwsdGhpcy5fX3NlbGVjdGVkTWFwPW51bGx9X191cGRhdGVTZWxlY3Rpb24odCxlKXtsZXQgbj1lLnBhdGg7aWYobj09SlNDb21waWxlcl9yZW5hbWVQcm9wZXJ0eSgiaXRlbXMiLHRoaXMpKXtsZXQgbj1lLmJhc2V8fFtdLGk9dGhpcy5fX2xhc3RJdGVtcztpZih0IT09dGhpcy5fX2xhc3RNdWx0aSYmdGhpcy5jbGVhclNlbGVjdGlvbigpLGkpe2xldCB0PUlpKG4saSk7dGhpcy5fX2FwcGx5U3BsaWNlcyh0KX10aGlzLl9fbGFzdEl0ZW1zPW4sdGhpcy5fX2xhc3RNdWx0aT10fWVsc2UgaWYoZS5wYXRoPT1gJHtKU0NvbXBpbGVyX3JlbmFtZVByb3BlcnR5KCJpdGVtcyIsdGhpcyl9LnNwbGljZXNgKXRoaXMuX19hcHBseVNwbGljZXMoZS52YWx1ZS5pbmRleFNwbGljZXMpO2Vsc2V7bGV0IHQ9bi5zbGljZShgJHtKU0NvbXBpbGVyX3JlbmFtZVByb3BlcnR5KCJpdGVtcyIsdGhpcyl9LmAubGVuZ3RoKSxlPXBhcnNlSW50KHQsMTApO3QuaW5kZXhPZigiLiIpPDAmJnQ9PWUmJnRoaXMuX19kZXNlbGVjdENoYW5nZWRJZHgoZSl9fV9fYXBwbHlTcGxpY2VzKHQpe2xldCBlPXRoaXMuX19zZWxlY3RlZE1hcDtmb3IobGV0IG49MDtuPHQubGVuZ3RoO24rKyl7bGV0IGk9dFtuXTtlLmZvckVhY2goKCh0LG4pPT57dDxpLmluZGV4fHxlLnNldChuLHQ+PWkuaW5kZXgraS5yZW1vdmVkLmxlbmd0aD90K2kuYWRkZWRDb3VudC1pLnJlbW92ZWQubGVuZ3RoOi0xKX0pKTtmb3IobGV0IHQ9MDt0PGkuYWRkZWRDb3VudDt0Kyspe2xldCBuPWkuaW5kZXgrdDtlLmhhcyh0aGlzLml0ZW1zW25dKSYmZS5zZXQodGhpcy5pdGVtc1tuXSxuKX19dGhpcy5fX3VwZGF0ZUxpbmtzKCk7bGV0IG49MDtlLmZvckVhY2goKCh0LGkpPT57dDwwPyh0aGlzLm11bHRpP3RoaXMuc3BsaWNlKEpTQ29tcGlsZXJfcmVuYW1lUHJvcGVydHkoInNlbGVjdGVkIix0aGlzKSxuLDEpOnRoaXMuc2VsZWN0ZWQ9dGhpcy5zZWxlY3RlZEl0ZW09bnVsbCxlLmRlbGV0ZShpKSk6bisrfSkpfV9fdXBkYXRlTGlua3MoKXtpZih0aGlzLl9fZGF0YUxpbmtlZFBhdGhzPXt9LHRoaXMubXVsdGkpe2xldCB0PTA7dGhpcy5fX3NlbGVjdGVkTWFwLmZvckVhY2goKGU9PntlPj0wJiZ0aGlzLmxpbmtQYXRocyhgJHtKU0NvbXBpbGVyX3JlbmFtZVByb3BlcnR5KCJpdGVtcyIsdGhpcyl9LiR7ZX1gLGAke0pTQ29tcGlsZXJfcmVuYW1lUHJvcGVydHkoInNlbGVjdGVkIix0aGlzKX0uJHt0Kyt9YCl9KSl9ZWxzZSB0aGlzLl9fc2VsZWN0ZWRNYXAuZm9yRWFjaCgodD0+e3RoaXMubGlua1BhdGhzKEpTQ29tcGlsZXJfcmVuYW1lUHJvcGVydHkoInNlbGVjdGVkIix0aGlzKSxgJHtKU0NvbXBpbGVyX3JlbmFtZVByb3BlcnR5KCJpdGVtcyIsdGhpcyl9LiR7dH1gKSx0aGlzLmxpbmtQYXRocyhKU0NvbXBpbGVyX3JlbmFtZVByb3BlcnR5KCJzZWxlY3RlZEl0ZW0iLHRoaXMpLGAke0pTQ29tcGlsZXJfcmVuYW1lUHJvcGVydHkoIml0ZW1zIix0aGlzKX0uJHt0fWApfSkpfWNsZWFyU2VsZWN0aW9uKCl7dGhpcy5fX2RhdGFMaW5rZWRQYXRocz17fSx0aGlzLl9fc2VsZWN0ZWRNYXA9bmV3IE1hcCx0aGlzLnNlbGVjdGVkPXRoaXMubXVsdGk/W106bnVsbCx0aGlzLnNlbGVjdGVkSXRlbT1udWxsfWlzU2VsZWN0ZWQodCl7cmV0dXJuIHRoaXMuX19zZWxlY3RlZE1hcC5oYXModCl9aXNJbmRleFNlbGVjdGVkKHQpe3JldHVybiB0aGlzLmlzU2VsZWN0ZWQodGhpcy5pdGVtc1t0XSl9X19kZXNlbGVjdENoYW5nZWRJZHgodCl7bGV0IGU9dGhpcy5fX3NlbGVjdGVkSW5kZXhGb3JJdGVtSW5kZXgodCk7aWYoZT49MCl7bGV0IHQ9MDt0aGlzLl9fc2VsZWN0ZWRNYXAuZm9yRWFjaCgoKG4saSk9PntlPT10KysmJnRoaXMuZGVzZWxlY3QoaSl9KSl9fV9fc2VsZWN0ZWRJbmRleEZvckl0ZW1JbmRleCh0KXtsZXQgZT10aGlzLl9fZGF0YUxpbmtlZFBhdGhzW2Ake0pTQ29tcGlsZXJfcmVuYW1lUHJvcGVydHkoIml0ZW1zIix0aGlzKX0uJHt0fWBdO2lmKGUpcmV0dXJuIHBhcnNlSW50KGUuc2xpY2UoYCR7SlNDb21waWxlcl9yZW5hbWVQcm9wZXJ0eSgic2VsZWN0ZWQiLHRoaXMpfS5gLmxlbmd0aCksMTApfWRlc2VsZWN0KHQpe2xldCBlPXRoaXMuX19zZWxlY3RlZE1hcC5nZXQodCk7aWYoZT49MCl7bGV0IG47dGhpcy5fX3NlbGVjdGVkTWFwLmRlbGV0ZSh0KSx0aGlzLm11bHRpJiYobj10aGlzLl9fc2VsZWN0ZWRJbmRleEZvckl0ZW1JbmRleChlKSksdGhpcy5fX3VwZGF0ZUxpbmtzKCksdGhpcy5tdWx0aT90aGlzLnNwbGljZShKU0NvbXBpbGVyX3JlbmFtZVByb3BlcnR5KCJzZWxlY3RlZCIsdGhpcyksbiwxKTp0aGlzLnNlbGVjdGVkPXRoaXMuc2VsZWN0ZWRJdGVtPW51bGx9fWRlc2VsZWN0SW5kZXgodCl7dGhpcy5kZXNlbGVjdCh0aGlzLml0ZW1zW3RdKX1zZWxlY3QodCl7dGhpcy5zZWxlY3RJbmRleCh0aGlzLml0ZW1zLmluZGV4T2YodCkpfXNlbGVjdEluZGV4KHQpe2xldCBlPXRoaXMuaXRlbXNbdF07dGhpcy5pc1NlbGVjdGVkKGUpP3RoaXMudG9nZ2xlJiZ0aGlzLmRlc2VsZWN0SW5kZXgodCk6KHRoaXMubXVsdGl8fHRoaXMuX19zZWxlY3RlZE1hcC5jbGVhcigpLHRoaXMuX19zZWxlY3RlZE1hcC5zZXQoZSx0KSx0aGlzLl9fdXBkYXRlTGlua3MoKSx0aGlzLm11bHRpP3RoaXMucHVzaChKU0NvbXBpbGVyX3JlbmFtZVByb3BlcnR5KCJzZWxlY3RlZCIsdGhpcyksZSk6dGhpcy5zZWxlY3RlZD10aGlzLnNlbGVjdGVkSXRlbT1lKX19fSkpKHllKTtjbGFzcyBvbyBleHRlbmRzIHJve3N0YXRpYyBnZXQgaXMoKXtyZXR1cm4iYXJyYXktc2VsZWN0b3IifXN0YXRpYyBnZXQgdGVtcGxhdGUoKXtyZXR1cm4gbnVsbH19Y3VzdG9tRWxlbWVudHMuZGVmaW5lKG9vLmlzLG9vKTsKLyoqCiAgICBAbGljZW5zZQogICAgQ29weXJpZ2h0IChjKSAyMDE3IFRoZSBQb2x5bWVyIFByb2plY3QgQXV0aG9ycy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAgIFRoaXMgY29kZSBtYXkgb25seSBiZSB1c2VkIHVuZGVyIHRoZSBCU0Qgc3R5bGUgbGljZW5zZSBmb3VuZCBhdCBodHRwOi8vcG9seW1lci5naXRodWIuaW8vTElDRU5TRS50eHQKICAgIFRoZSBjb21wbGV0ZSBzZXQgb2YgYXV0aG9ycyBtYXkgYmUgZm91bmQgYXQgaHR0cDovL3BvbHltZXIuZ2l0aHViLmlvL0FVVEhPUlMudHh0CiAgICBUaGUgY29tcGxldGUgc2V0IG9mIGNvbnRyaWJ1dG9ycyBtYXkgYmUgZm91bmQgYXQgaHR0cDovL3BvbHltZXIuZ2l0aHViLmlvL0NPTlRSSUJVVE9SUy50eHQKICAgIENvZGUgZGlzdHJpYnV0ZWQgYnkgR29vZ2xlIGFzIHBhcnQgb2YgdGhlIHBvbHltZXIgcHJvamVjdCBpcyBhbHNvCiAgICBzdWJqZWN0IHRvIGFuIGFkZGl0aW9uYWwgSVAgcmlnaHRzIGdyYW50IGZvdW5kIGF0IGh0dHA6Ly9wb2x5bWVyLmdpdGh1Yi5pby9QQVRFTlRTLnR4dAogICAgKi8KY29uc3QgYW89bmV3IHduO3dpbmRvdy5TaGFkeUNTU3x8KHdpbmRvdy5TaGFkeUNTUz17cHJlcGFyZVRlbXBsYXRlKHQsZSxuKXt9LHByZXBhcmVUZW1wbGF0ZURvbSh0LGUpe30scHJlcGFyZVRlbXBsYXRlU3R5bGVzKHQsZSxuKXt9LHN0eWxlU3VidHJlZSh0LGUpe2FvLnByb2Nlc3NTdHlsZXMoKSxKZSh0LGUpfSxzdHlsZUVsZW1lbnQodCl7YW8ucHJvY2Vzc1N0eWxlcygpfSxzdHlsZURvY3VtZW50KHQpe2FvLnByb2Nlc3NTdHlsZXMoKSxKZShkb2N1bWVudC5ib2R5LHQpfSxnZXRDb21wdXRlZFN0eWxlVmFsdWU6KHQsZSk9PlFlKHQsZSksZmx1c2hDdXN0b21TdHlsZXMoKXt9LG5hdGl2ZUNzczpDZSxuYXRpdmVTaGFkb3c6U2UsY3NzQnVpbGQ6RWUsZGlzYWJsZVJ1bnRpbWU6QWV9KSx3aW5kb3cuU2hhZHlDU1MuQ3VzdG9tU3R5bGVJbnRlcmZhY2U9YW87Ci8qKgogICAgQGxpY2Vuc2UKICAgIENvcHlyaWdodCAoYykgMjAxNyBUaGUgUG9seW1lciBQcm9qZWN0IEF1dGhvcnMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgICBUaGlzIGNvZGUgbWF5IG9ubHkgYmUgdXNlZCB1bmRlciB0aGUgQlNEIHN0eWxlIGxpY2Vuc2UgZm91bmQgYXQgaHR0cDovL3BvbHltZXIuZ2l0aHViLmlvL0xJQ0VOU0UudHh0CiAgICBUaGUgY29tcGxldGUgc2V0IG9mIGF1dGhvcnMgbWF5IGJlIGZvdW5kIGF0IGh0dHA6Ly9wb2x5bWVyLmdpdGh1Yi5pby9BVVRIT1JTLnR4dAogICAgVGhlIGNvbXBsZXRlIHNldCBvZiBjb250cmlidXRvcnMgbWF5IGJlIGZvdW5kIGF0IGh0dHA6Ly9wb2x5bWVyLmdpdGh1Yi5pby9DT05UUklCVVRPUlMudHh0CiAgICBDb2RlIGRpc3RyaWJ1dGVkIGJ5IEdvb2dsZSBhcyBwYXJ0IG9mIHRoZSBwb2x5bWVyIHByb2plY3QgaXMgYWxzbwogICAgc3ViamVjdCB0byBhbiBhZGRpdGlvbmFsIElQIHJpZ2h0cyBncmFudCBmb3VuZCBhdCBodHRwOi8vcG9seW1lci5naXRodWIuaW8vUEFURU5UUy50eHQKICAgICovCmNvbnN0IHNvPSJpbmNsdWRlIixsbz13aW5kb3cuU2hhZHlDU1MuQ3VzdG9tU3R5bGVJbnRlcmZhY2U7Y2xhc3MgY28gZXh0ZW5kcyBIVE1MRWxlbWVudHtjb25zdHJ1Y3Rvcigpe3N1cGVyKCksdGhpcy5fc3R5bGU9bnVsbCxsby5hZGRDdXN0b21TdHlsZSh0aGlzKX1nZXRTdHlsZSgpe2lmKHRoaXMuX3N0eWxlKXJldHVybiB0aGlzLl9zdHlsZTtjb25zdCB0PXRoaXMucXVlcnlTZWxlY3Rvcigic3R5bGUiKTtpZighdClyZXR1cm4gbnVsbDt0aGlzLl9zdHlsZT10O2NvbnN0IGU9dC5nZXRBdHRyaWJ1dGUoc28pO3JldHVybiBlJiYodC5yZW1vdmVBdHRyaWJ1dGUoc28pLHQudGV4dENvbnRlbnQ9KGZ1bmN0aW9uIG4odCl7bGV0IGU9dC50cmltKCkuc3BsaXQoL1xzKy8pLG49IiI7Zm9yKGxldCB0PTA7dDxlLmxlbmd0aDt0Kyspbis9cShlW3RdKTtyZXR1cm4gbn0pKGUpK3QudGV4dENvbnRlbnQpLHRoaXMub3duZXJEb2N1bWVudCE9PXdpbmRvdy5kb2N1bWVudCYmd2luZG93LmRvY3VtZW50LmhlYWQuYXBwZW5kQ2hpbGQodGhpcyksdGhpcy5fc3R5bGV9fQovKioKICAgIEBsaWNlbnNlCiAgICBDb3B5cmlnaHQgKGMpIDIwMTcgVGhlIFBvbHltZXIgUHJvamVjdCBBdXRob3JzLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICAgVGhpcyBjb2RlIG1heSBvbmx5IGJlIHVzZWQgdW5kZXIgdGhlIEJTRCBzdHlsZSBsaWNlbnNlIGZvdW5kIGF0IGh0dHA6Ly9wb2x5bWVyLmdpdGh1Yi5pby9MSUNFTlNFLnR4dAogICAgVGhlIGNvbXBsZXRlIHNldCBvZiBhdXRob3JzIG1heSBiZSBmb3VuZCBhdCBodHRwOi8vcG9seW1lci5naXRodWIuaW8vQVVUSE9SUy50eHQKICAgIFRoZSBjb21wbGV0ZSBzZXQgb2YgY29udHJpYnV0b3JzIG1heSBiZSBmb3VuZCBhdCBodHRwOi8vcG9seW1lci5naXRodWIuaW8vQ09OVFJJQlVUT1JTLnR4dAogICAgQ29kZSBkaXN0cmlidXRlZCBieSBHb29nbGUgYXMgcGFydCBvZiB0aGUgcG9seW1lciBwcm9qZWN0IGlzIGFsc28KICAgIHN1YmplY3QgdG8gYW4gYWRkaXRpb25hbCBJUCByaWdodHMgZ3JhbnQgZm91bmQgYXQgaHR0cDovL3BvbHltZXIuZ2l0aHViLmlvL1BBVEVOVFMudHh0CiAgICAqLwpsZXQgdW87d2luZG93LmN1c3RvbUVsZW1lbnRzLmRlZmluZSgiY3VzdG9tLXN0eWxlIixjbyksdW89UnIuX211dGFibGVQcm9wZXJ0eUNoYW5nZTtjb25zdCBobz17cHJvcGVydGllczp7bXV0YWJsZURhdGE6Qm9vbGVhbn0sX3Nob3VsZFByb3BlcnR5Q2hhbmdlKHQsZSxuKXtyZXR1cm4gdW8odGhpcyx0LGUsbix0aGlzLm11dGFibGVEYXRhKX19LHBvPXRyKEhUTUxFbGVtZW50KS5wcm90b3R5cGU7Ci8qKgogICAgQGxpY2Vuc2UKICAgIENvcHlyaWdodCAoYykgMjAxNyBUaGUgUG9seW1lciBQcm9qZWN0IEF1dGhvcnMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgICBUaGlzIGNvZGUgbWF5IG9ubHkgYmUgdXNlZCB1bmRlciB0aGUgQlNEIHN0eWxlIGxpY2Vuc2UgZm91bmQgYXQgaHR0cDovL3BvbHltZXIuZ2l0aHViLmlvL0xJQ0VOU0UudHh0CiAgICBUaGUgY29tcGxldGUgc2V0IG9mIGF1dGhvcnMgbWF5IGJlIGZvdW5kIGF0IGh0dHA6Ly9wb2x5bWVyLmdpdGh1Yi5pby9BVVRIT1JTLnR4dAogICAgVGhlIGNvbXBsZXRlIHNldCBvZiBjb250cmlidXRvcnMgbWF5IGJlIGZvdW5kIGF0IGh0dHA6Ly9wb2x5bWVyLmdpdGh1Yi5pby9DT05UUklCVVRPUlMudHh0CiAgICBDb2RlIGRpc3RyaWJ1dGVkIGJ5IEdvb2dsZSBhcyBwYXJ0IG9mIHRoZSBwb2x5bWVyIHByb2plY3QgaXMgYWxzbwogICAgc3ViamVjdCB0byBhbiBhZGRpdGlvbmFsIElQIHJpZ2h0cyBncmFudCBmb3VuZCBhdCBodHRwOi8vcG9seW1lci5naXRodWIuaW8vUEFURU5UUy50eHQKICAgICovCi8qKgogICAgQGxpY2Vuc2UKICAgIENvcHlyaWdodCAoYykgMjAxNSBUaGUgUG9seW1lciBQcm9qZWN0IEF1dGhvcnMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgICBUaGlzIGNvZGUgbWF5IG9ubHkgYmUgdXNlZCB1bmRlciB0aGUgQlNEIHN0eWxlIGxpY2Vuc2UgZm91bmQgYXQKICAgIGh0dHA6Ly9wb2x5bWVyLmdpdGh1Yi5pby9MSUNFTlNFLnR4dCBUaGUgY29tcGxldGUgc2V0IG9mIGF1dGhvcnMgbWF5IGJlIGZvdW5kIGF0CiAgICBodHRwOi8vcG9seW1lci5naXRodWIuaW8vQVVUSE9SUy50eHQgVGhlIGNvbXBsZXRlIHNldCBvZiBjb250cmlidXRvcnMgbWF5IGJlCiAgICBmb3VuZCBhdCBodHRwOi8vcG9seW1lci5naXRodWIuaW8vQ09OVFJJQlVUT1JTLnR4dCBDb2RlIGRpc3RyaWJ1dGVkIGJ5IEdvb2dsZSBhcwogICAgcGFydCBvZiB0aGUgcG9seW1lciBwcm9qZWN0IGlzIGFsc28gc3ViamVjdCB0byBhbiBhZGRpdGlvbmFsIElQIHJpZ2h0cyBncmFudAogICAgZm91bmQgYXQgaHR0cDovL3BvbHltZXIuZ2l0aHViLmlvL1BBVEVOVFMudHh0CiAgICAqLwp2YXIgZm89bmV3IFNldDtjb25zdCBtbz17cHJvcGVydGllczp7X3BhcmVudFJlc2l6YWJsZTp7dHlwZTpPYmplY3Qsb2JzZXJ2ZXI6Il9wYXJlbnRSZXNpemFibGVDaGFuZ2VkIn0sX25vdGlmeWluZ0Rlc2NlbmRhbnQ6e3R5cGU6Qm9vbGVhbix2YWx1ZTohMX19LGxpc3RlbmVyczp7Imlyb24tcmVxdWVzdC1yZXNpemUtbm90aWZpY2F0aW9ucyI6Il9vbklyb25SZXF1ZXN0UmVzaXplTm90aWZpY2F0aW9ucyJ9LGNyZWF0ZWQ6ZnVuY3Rpb24oKXt0aGlzLl9pbnRlcmVzdGVkUmVzaXphYmxlcz1bXSx0aGlzLl9ib3VuZE5vdGlmeVJlc2l6ZT10aGlzLm5vdGlmeVJlc2l6ZS5iaW5kKHRoaXMpLHRoaXMuX2JvdW5kT25EZXNjZW5kYW50SXJvblJlc2l6ZT10aGlzLl9vbkRlc2NlbmRhbnRJcm9uUmVzaXplLmJpbmQodGhpcyl9LGF0dGFjaGVkOmZ1bmN0aW9uKCl7dGhpcy5fcmVxdWVzdFJlc2l6ZU5vdGlmaWNhdGlvbnMoKX0sZGV0YWNoZWQ6ZnVuY3Rpb24oKXt0aGlzLl9wYXJlbnRSZXNpemFibGU/dGhpcy5fcGFyZW50UmVzaXphYmxlLnN0b3BSZXNpemVOb3RpZmljYXRpb25zRm9yKHRoaXMpOihmby5kZWxldGUodGhpcyksd2luZG93LnJlbW92ZUV2ZW50TGlzdGVuZXIoInJlc2l6ZSIsdGhpcy5fYm91bmROb3RpZnlSZXNpemUpKSx0aGlzLl9wYXJlbnRSZXNpemFibGU9bnVsbH0sbm90aWZ5UmVzaXplOmZ1bmN0aW9uKCl7dGhpcy5pc0F0dGFjaGVkJiYodGhpcy5faW50ZXJlc3RlZFJlc2l6YWJsZXMuZm9yRWFjaCgoZnVuY3Rpb24odCl7dGhpcy5yZXNpemVyU2hvdWxkTm90aWZ5KHQpJiZ0aGlzLl9ub3RpZnlEZXNjZW5kYW50KHQpfSksdGhpcyksdGhpcy5fZmlyZVJlc2l6ZSgpKX0sYXNzaWduUGFyZW50UmVzaXphYmxlOmZ1bmN0aW9uKHQpe3RoaXMuX3BhcmVudFJlc2l6YWJsZSYmdGhpcy5fcGFyZW50UmVzaXphYmxlLnN0b3BSZXNpemVOb3RpZmljYXRpb25zRm9yKHRoaXMpLHRoaXMuX3BhcmVudFJlc2l6YWJsZT10LHQmJi0xPT09dC5faW50ZXJlc3RlZFJlc2l6YWJsZXMuaW5kZXhPZih0aGlzKSYmKHQuX2ludGVyZXN0ZWRSZXNpemFibGVzLnB1c2godGhpcyksdC5fc3Vic2NyaWJlSXJvblJlc2l6ZSh0aGlzKSl9LHN0b3BSZXNpemVOb3RpZmljYXRpb25zRm9yOmZ1bmN0aW9uKHQpe3ZhciBlPXRoaXMuX2ludGVyZXN0ZWRSZXNpemFibGVzLmluZGV4T2YodCk7ZT4tMSYmKHRoaXMuX2ludGVyZXN0ZWRSZXNpemFibGVzLnNwbGljZShlLDEpLHRoaXMuX3Vuc3Vic2NyaWJlSXJvblJlc2l6ZSh0KSl9LF9zdWJzY3JpYmVJcm9uUmVzaXplOmZ1bmN0aW9uKHQpe3QuYWRkRXZlbnRMaXN0ZW5lcigiaXJvbi1yZXNpemUiLHRoaXMuX2JvdW5kT25EZXNjZW5kYW50SXJvblJlc2l6ZSl9LF91bnN1YnNjcmliZUlyb25SZXNpemU6ZnVuY3Rpb24odCl7dC5yZW1vdmVFdmVudExpc3RlbmVyKCJpcm9uLXJlc2l6ZSIsdGhpcy5fYm91bmRPbkRlc2NlbmRhbnRJcm9uUmVzaXplKX0scmVzaXplclNob3VsZE5vdGlmeTpmdW5jdGlvbih0KXtyZXR1cm4hMH0sX29uRGVzY2VuZGFudElyb25SZXNpemU6ZnVuY3Rpb24odCl7dGhpcy5fbm90aWZ5aW5nRGVzY2VuZGFudD90LnN0b3BQcm9wYWdhdGlvbigpOm18fHRoaXMuX2ZpcmVSZXNpemUoKX0sX2ZpcmVSZXNpemU6ZnVuY3Rpb24oKXt0aGlzLmZpcmUoImlyb24tcmVzaXplIixudWxsLHtub2RlOnRoaXMsYnViYmxlczohMX0pfSxfb25Jcm9uUmVxdWVzdFJlc2l6ZU5vdGlmaWNhdGlvbnM6ZnVuY3Rpb24odCl7dmFyIGU9cWkodCkucm9vdFRhcmdldDtlIT09dGhpcyYmKGUuYXNzaWduUGFyZW50UmVzaXphYmxlKHRoaXMpLHRoaXMuX25vdGlmeURlc2NlbmRhbnQoZSksdC5zdG9wUHJvcGFnYXRpb24oKSl9LF9wYXJlbnRSZXNpemFibGVDaGFuZ2VkOmZ1bmN0aW9uKHQpe3QmJndpbmRvdy5yZW1vdmVFdmVudExpc3RlbmVyKCJyZXNpemUiLHRoaXMuX2JvdW5kTm90aWZ5UmVzaXplKX0sX25vdGlmeURlc2NlbmRhbnQ6ZnVuY3Rpb24odCl7dGhpcy5pc0F0dGFjaGVkJiYodGhpcy5fbm90aWZ5aW5nRGVzY2VuZGFudD0hMCx0Lm5vdGlmeVJlc2l6ZSgpLHRoaXMuX25vdGlmeWluZ0Rlc2NlbmRhbnQ9ITEpfSxfcmVxdWVzdFJlc2l6ZU5vdGlmaWNhdGlvbnM6ZnVuY3Rpb24oKXtpZih0aGlzLmlzQXR0YWNoZWQpaWYoImxvYWRpbmciPT09ZG9jdW1lbnQucmVhZHlTdGF0ZSl7dmFyIHQ9dGhpcy5fcmVxdWVzdFJlc2l6ZU5vdGlmaWNhdGlvbnMuYmluZCh0aGlzKTtkb2N1bWVudC5hZGRFdmVudExpc3RlbmVyKCJyZWFkeXN0YXRlY2hhbmdlIiwoZnVuY3Rpb24gZSgpe2RvY3VtZW50LnJlbW92ZUV2ZW50TGlzdGVuZXIoInJlYWR5c3RhdGVjaGFuZ2UiLGUpLHQoKX0pKX1lbHNlIHRoaXMuX2ZpbmRQYXJlbnQoKSx0aGlzLl9wYXJlbnRSZXNpemFibGU/dGhpcy5fcGFyZW50UmVzaXphYmxlLl9pbnRlcmVzdGVkUmVzaXphYmxlcy5mb3JFYWNoKChmdW5jdGlvbih0KXt0IT09dGhpcyYmdC5fZmluZFBhcmVudCgpfSksdGhpcyk6KGZvLmZvckVhY2goKGZ1bmN0aW9uKHQpe3QhPT10aGlzJiZ0Ll9maW5kUGFyZW50KCl9KSx0aGlzKSx3aW5kb3cuYWRkRXZlbnRMaXN0ZW5lcigicmVzaXplIix0aGlzLl9ib3VuZE5vdGlmeVJlc2l6ZSksdGhpcy5ub3RpZnlSZXNpemUoKSl9LF9maW5kUGFyZW50OmZ1bmN0aW9uKCl7dGhpcy5hc3NpZ25QYXJlbnRSZXNpemFibGUobnVsbCksdGhpcy5maXJlKCJpcm9uLXJlcXVlc3QtcmVzaXplLW5vdGlmaWNhdGlvbnMiLG51bGwse25vZGU6dGhpcyxidWJibGVzOiEwLGNhbmNlbGFibGU6ITB9KSx0aGlzLl9wYXJlbnRSZXNpemFibGU/Zm8uZGVsZXRlKHRoaXMpOmZvLmFkZCh0aGlzKX19O3ZhciBnbz1PYmplY3QuZnJlZXplKHtfX3Byb3RvX186bnVsbCxJcm9uUmVzaXphYmxlQmVoYXZpb3I6bW99KTsKLyoqCiAgICBAbGljZW5zZQogICAgQ29weXJpZ2h0IChjKSAyMDE1IFRoZSBQb2x5bWVyIFByb2plY3QgQXV0aG9ycy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAgIFRoaXMgY29kZSBtYXkgb25seSBiZSB1c2VkIHVuZGVyIHRoZSBCU0Qgc3R5bGUgbGljZW5zZSBmb3VuZCBhdAogICAgaHR0cDovL3BvbHltZXIuZ2l0aHViLmlvL0xJQ0VOU0UudHh0IFRoZSBjb21wbGV0ZSBzZXQgb2YgYXV0aG9ycyBtYXkgYmUgZm91bmQgYXQKICAgIGh0dHA6Ly9wb2x5bWVyLmdpdGh1Yi5pby9BVVRIT1JTLnR4dCBUaGUgY29tcGxldGUgc2V0IG9mIGNvbnRyaWJ1dG9ycyBtYXkgYmUKICAgIGZvdW5kIGF0IGh0dHA6Ly9wb2x5bWVyLmdpdGh1Yi5pby9DT05UUklCVVRPUlMudHh0IENvZGUgZGlzdHJpYnV0ZWQgYnkgR29vZ2xlIGFzCiAgICBwYXJ0IG9mIHRoZSBwb2x5bWVyIHByb2plY3QgaXMgYWxzbyBzdWJqZWN0IHRvIGFuIGFkZGl0aW9uYWwgSVAgcmlnaHRzIGdyYW50CiAgICBmb3VuZCBhdCBodHRwOi8vcG9seW1lci5naXRodWIuaW8vUEFURU5UUy50eHQKICAgICovTnIoe190ZW1wbGF0ZTpfZWAKICAgIDxzdHlsZT4KICAgICAgOmhvc3QgewogICAgICAgIGRpc3BsYXk6IGJsb2NrOwogICAgICAgIHRyYW5zaXRpb24tZHVyYXRpb246IHZhcigtLWlyb24tY29sbGFwc2UtdHJhbnNpdGlvbi1kdXJhdGlvbiwgMzAwbXMpOwogICAgICAgIC8qIFNhZmFyaSAxMCBuZWVkcyB0aGlzIHByb3BlcnR5IHByZWZpeGVkIHRvIGNvcnJlY3RseSBhcHBseSB0aGUgY3VzdG9tIHByb3BlcnR5ICovCiAgICAgICAgLXdlYmtpdC10cmFuc2l0aW9uLWR1cmF0aW9uOiB2YXIoLS1pcm9uLWNvbGxhcHNlLXRyYW5zaXRpb24tZHVyYXRpb24sIDMwMG1zKTsKICAgICAgICBvdmVyZmxvdzogdmlzaWJsZTsKICAgICAgfQoKICAgICAgOmhvc3QoLmlyb24tY29sbGFwc2UtY2xvc2VkKSB7CiAgICAgICAgZGlzcGxheTogbm9uZTsKICAgICAgfQoKICAgICAgOmhvc3QoOm5vdCguaXJvbi1jb2xsYXBzZS1vcGVuZWQpKSB7CiAgICAgICAgb3ZlcmZsb3c6IGhpZGRlbjsKICAgICAgfQogICAgPC9zdHlsZT4KCiAgICA8c2xvdD48L3Nsb3Q+CmAsaXM6Imlyb24tY29sbGFwc2UiLGJlaGF2aW9yczpbbW9dLHByb3BlcnRpZXM6e2hvcml6b250YWw6e3R5cGU6Qm9vbGVhbix2YWx1ZTohMSxvYnNlcnZlcjoiX2hvcml6b250YWxDaGFuZ2VkIn0sb3BlbmVkOnt0eXBlOkJvb2xlYW4sdmFsdWU6ITEsbm90aWZ5OiEwLG9ic2VydmVyOiJfb3BlbmVkQ2hhbmdlZCJ9LHRyYW5zaXRpb25pbmc6e3R5cGU6Qm9vbGVhbixub3RpZnk6ITAscmVhZE9ubHk6ITB9LG5vQW5pbWF0aW9uOnt0eXBlOkJvb2xlYW59LF9kZXNpcmVkU2l6ZTp7dHlwZTpTdHJpbmcsdmFsdWU6IiJ9fSxnZXQgZGltZW5zaW9uKCl7cmV0dXJuIHRoaXMuaG9yaXpvbnRhbD8id2lkdGgiOiJoZWlnaHQifSxnZXQgX2RpbWVuc2lvbk1heCgpe3JldHVybiB0aGlzLmhvcml6b250YWw/Im1heFdpZHRoIjoibWF4SGVpZ2h0In0sZ2V0IF9kaW1lbnNpb25NYXhDc3MoKXtyZXR1cm4gdGhpcy5ob3Jpem9udGFsPyJtYXgtd2lkdGgiOiJtYXgtaGVpZ2h0In0saG9zdEF0dHJpYnV0ZXM6e3JvbGU6Imdyb3VwIiwiYXJpYS1oaWRkZW4iOiJ0cnVlIn0sbGlzdGVuZXJzOnt0cmFuc2l0aW9uZW5kOiJfb25UcmFuc2l0aW9uRW5kIn0sdG9nZ2xlOmZ1bmN0aW9uKCl7dGhpcy5vcGVuZWQ9IXRoaXMub3BlbmVkfSxzaG93OmZ1bmN0aW9uKCl7dGhpcy5vcGVuZWQ9ITB9LGhpZGU6ZnVuY3Rpb24oKXt0aGlzLm9wZW5lZD0hMX0sdXBkYXRlU2l6ZTpmdW5jdGlvbih0LGUpe3Q9ImF1dG8iPT09dD8iIjp0O3ZhciBuPWUmJiF0aGlzLm5vQW5pbWF0aW9uJiZ0aGlzLmlzQXR0YWNoZWQmJnRoaXMuX2Rlc2lyZWRTaXplIT09dDtpZih0aGlzLl9kZXNpcmVkU2l6ZT10LHRoaXMuX3VwZGF0ZVRyYW5zaXRpb24oITEpLG4pe3ZhciBpPXRoaXMuX2NhbGNTaXplKCk7IiI9PT10JiYodGhpcy5zdHlsZVt0aGlzLl9kaW1lbnNpb25NYXhdPSIiLHQ9dGhpcy5fY2FsY1NpemUoKSksdGhpcy5zdHlsZVt0aGlzLl9kaW1lbnNpb25NYXhdPWksdGhpcy5zY3JvbGxUb3A9dGhpcy5zY3JvbGxUb3AsdGhpcy5fdXBkYXRlVHJhbnNpdGlvbighMCksbj10IT09aX10aGlzLnN0eWxlW3RoaXMuX2RpbWVuc2lvbk1heF09dCxufHx0aGlzLl90cmFuc2l0aW9uRW5kKCl9LGVuYWJsZVRyYW5zaXRpb246ZnVuY3Rpb24odCl7cG8uX3dhcm4oImBlbmFibGVUcmFuc2l0aW9uKClgIGlzIGRlcHJlY2F0ZWQsIHVzZSBgbm9BbmltYXRpb25gIGluc3RlYWQuIiksdGhpcy5ub0FuaW1hdGlvbj0hdH0sX3VwZGF0ZVRyYW5zaXRpb246ZnVuY3Rpb24odCl7dGhpcy5zdHlsZS50cmFuc2l0aW9uRHVyYXRpb249dCYmIXRoaXMubm9BbmltYXRpb24/IiI6IjBzIn0sX2hvcml6b250YWxDaGFuZ2VkOmZ1bmN0aW9uKCl7dGhpcy5zdHlsZS50cmFuc2l0aW9uUHJvcGVydHk9dGhpcy5fZGltZW5zaW9uTWF4Q3NzLHRoaXMuc3R5bGVbIm1heFdpZHRoIj09PXRoaXMuX2RpbWVuc2lvbk1heD8ibWF4SGVpZ2h0IjoibWF4V2lkdGgiXT0iIix0aGlzLnVwZGF0ZVNpemUodGhpcy5vcGVuZWQ/ImF1dG8iOiIwcHgiLCExKX0sX29wZW5lZENoYW5nZWQ6ZnVuY3Rpb24oKXt0aGlzLnNldEF0dHJpYnV0ZSgiYXJpYS1oaWRkZW4iLCF0aGlzLm9wZW5lZCksdGhpcy5fc2V0VHJhbnNpdGlvbmluZyghMCksdGhpcy50b2dnbGVDbGFzcygiaXJvbi1jb2xsYXBzZS1jbG9zZWQiLCExKSx0aGlzLnRvZ2dsZUNsYXNzKCJpcm9uLWNvbGxhcHNlLW9wZW5lZCIsITEpLHRoaXMudXBkYXRlU2l6ZSh0aGlzLm9wZW5lZD8iYXV0byI6IjBweCIsITApLHRoaXMub3BlbmVkJiZ0aGlzLmZvY3VzKCl9LF90cmFuc2l0aW9uRW5kOmZ1bmN0aW9uKCl7dGhpcy5zdHlsZVt0aGlzLl9kaW1lbnNpb25NYXhdPXRoaXMuX2Rlc2lyZWRTaXplLHRoaXMudG9nZ2xlQ2xhc3MoImlyb24tY29sbGFwc2UtY2xvc2VkIiwhdGhpcy5vcGVuZWQpLHRoaXMudG9nZ2xlQ2xhc3MoImlyb24tY29sbGFwc2Utb3BlbmVkIix0aGlzLm9wZW5lZCksdGhpcy5fdXBkYXRlVHJhbnNpdGlvbighMSksdGhpcy5ub3RpZnlSZXNpemUoKSx0aGlzLl9zZXRUcmFuc2l0aW9uaW5nKCExKX0sX29uVHJhbnNpdGlvbkVuZDpmdW5jdGlvbih0KXtxaSh0KS5yb290VGFyZ2V0PT09dGhpcyYmdGhpcy5fdHJhbnNpdGlvbkVuZCgpfSxfY2FsY1NpemU6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKVt0aGlzLmRpbWVuc2lvbl0rInB4In19KTsKLyoqCiAgICBAbGljZW5zZQogICAgQ29weXJpZ2h0IChjKSAyMDE1IFRoZSBQb2x5bWVyIFByb2plY3QgQXV0aG9ycy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAgIFRoaXMgY29kZSBtYXkgb25seSBiZSB1c2VkIHVuZGVyIHRoZSBCU0Qgc3R5bGUgbGljZW5zZSBmb3VuZCBhdAogICAgaHR0cDovL3BvbHltZXIuZ2l0aHViLmlvL0xJQ0VOU0UudHh0IFRoZSBjb21wbGV0ZSBzZXQgb2YgYXV0aG9ycyBtYXkgYmUgZm91bmQgYXQKICAgIGh0dHA6Ly9wb2x5bWVyLmdpdGh1Yi5pby9BVVRIT1JTLnR4dCBUaGUgY29tcGxldGUgc2V0IG9mIGNvbnRyaWJ1dG9ycyBtYXkgYmUKICAgIGZvdW5kIGF0IGh0dHA6Ly9wb2x5bWVyLmdpdGh1Yi5pby9DT05UUklCVVRPUlMudHh0IENvZGUgZGlzdHJpYnV0ZWQgYnkgR29vZ2xlIGFzCiAgICBwYXJ0IG9mIHRoZSBwb2x5bWVyIHByb2plY3QgaXMgYWxzbyBzdWJqZWN0IHRvIGFuIGFkZGl0aW9uYWwgSVAgcmlnaHRzIGdyYW50CiAgICBmb3VuZCBhdCBodHRwOi8vcG9seW1lci5naXRodWIuaW8vUEFURU5UUy50eHQKICAgICovCmNvbnN0IF9vPV9lYAovKiBNb3N0IGNvbW1vbiB1c2VkIGZsZXggc3R5bGVzKi8KPGRvbS1tb2R1bGUgaWQ9Imlyb24tZmxleCI+CiAgPHRlbXBsYXRlPgogICAgPHN0eWxlPgogICAgICAubGF5b3V0Lmhvcml6b250YWwsCiAgICAgIC5sYXlvdXQudmVydGljYWwgewogICAgICAgIGRpc3BsYXk6IC1tcy1mbGV4Ym94OwogICAgICAgIGRpc3BsYXk6IC13ZWJraXQtZmxleDsKICAgICAgICBkaXNwbGF5OiBmbGV4OwogICAgICB9CgogICAgICAubGF5b3V0LmlubGluZSB7CiAgICAgICAgZGlzcGxheTogLW1zLWlubGluZS1mbGV4Ym94OwogICAgICAgIGRpc3BsYXk6IC13ZWJraXQtaW5saW5lLWZsZXg7CiAgICAgICAgZGlzcGxheTogaW5saW5lLWZsZXg7CiAgICAgIH0KCiAgICAgIC5sYXlvdXQuaG9yaXpvbnRhbCB7CiAgICAgICAgLW1zLWZsZXgtZGlyZWN0aW9uOiByb3c7CiAgICAgICAgLXdlYmtpdC1mbGV4LWRpcmVjdGlvbjogcm93OwogICAgICAgIGZsZXgtZGlyZWN0aW9uOiByb3c7CiAgICAgIH0KCiAgICAgIC5sYXlvdXQudmVydGljYWwgewogICAgICAgIC1tcy1mbGV4LWRpcmVjdGlvbjogY29sdW1uOwogICAgICAgIC13ZWJraXQtZmxleC1kaXJlY3Rpb246IGNvbHVtbjsKICAgICAgICBmbGV4LWRpcmVjdGlvbjogY29sdW1uOwogICAgICB9CgogICAgICAubGF5b3V0LndyYXAgewogICAgICAgIC1tcy1mbGV4LXdyYXA6IHdyYXA7CiAgICAgICAgLXdlYmtpdC1mbGV4LXdyYXA6IHdyYXA7CiAgICAgICAgZmxleC13cmFwOiB3cmFwOwogICAgICB9CgogICAgICAubGF5b3V0Lm5vLXdyYXAgewogICAgICAgIC1tcy1mbGV4LXdyYXA6IG5vd3JhcDsKICAgICAgICAtd2Via2l0LWZsZXgtd3JhcDogbm93cmFwOwogICAgICAgIGZsZXgtd3JhcDogbm93cmFwOwogICAgICB9CgogICAgICAubGF5b3V0LmNlbnRlciwKICAgICAgLmxheW91dC5jZW50ZXItY2VudGVyIHsKICAgICAgICAtbXMtZmxleC1hbGlnbjogY2VudGVyOwogICAgICAgIC13ZWJraXQtYWxpZ24taXRlbXM6IGNlbnRlcjsKICAgICAgICBhbGlnbi1pdGVtczogY2VudGVyOwogICAgICB9CgogICAgICAubGF5b3V0LmNlbnRlci1qdXN0aWZpZWQsCiAgICAgIC5sYXlvdXQuY2VudGVyLWNlbnRlciB7CiAgICAgICAgLW1zLWZsZXgtcGFjazogY2VudGVyOwogICAgICAgIC13ZWJraXQtanVzdGlmeS1jb250ZW50OiBjZW50ZXI7CiAgICAgICAganVzdGlmeS1jb250ZW50OiBjZW50ZXI7CiAgICAgIH0KCiAgICAgIC5mbGV4IHsKICAgICAgICAtbXMtZmxleDogMSAxIDAuMDAwMDAwMDAxcHg7CiAgICAgICAgLXdlYmtpdC1mbGV4OiAxOwogICAgICAgIGZsZXg6IDE7CiAgICAgICAgLXdlYmtpdC1mbGV4LWJhc2lzOiAwLjAwMDAwMDAwMXB4OwogICAgICAgIGZsZXgtYmFzaXM6IDAuMDAwMDAwMDAxcHg7CiAgICAgIH0KCiAgICAgIC5mbGV4LWF1dG8gewogICAgICAgIC1tcy1mbGV4OiAxIDEgYXV0bzsKICAgICAgICAtd2Via2l0LWZsZXg6IDEgMSBhdXRvOwogICAgICAgIGZsZXg6IDEgMSBhdXRvOwogICAgICB9CgogICAgICAuZmxleC1ub25lIHsKICAgICAgICAtbXMtZmxleDogbm9uZTsKICAgICAgICAtd2Via2l0LWZsZXg6IG5vbmU7CiAgICAgICAgZmxleDogbm9uZTsKICAgICAgfQogICAgPC9zdHlsZT4KICA8L3RlbXBsYXRlPgo8L2RvbS1tb2R1bGU+Ci8qIEJhc2ljIGZsZXhib3ggcmV2ZXJzZSBzdHlsZXMgKi8KPGRvbS1tb2R1bGUgaWQ9Imlyb24tZmxleC1yZXZlcnNlIj4KICA8dGVtcGxhdGU+CiAgICA8c3R5bGU+CiAgICAgIC5sYXlvdXQuaG9yaXpvbnRhbC1yZXZlcnNlLAogICAgICAubGF5b3V0LnZlcnRpY2FsLXJldmVyc2UgewogICAgICAgIGRpc3BsYXk6IC1tcy1mbGV4Ym94OwogICAgICAgIGRpc3BsYXk6IC13ZWJraXQtZmxleDsKICAgICAgICBkaXNwbGF5OiBmbGV4OwogICAgICB9CgogICAgICAubGF5b3V0Lmhvcml6b250YWwtcmV2ZXJzZSB7CiAgICAgICAgLW1zLWZsZXgtZGlyZWN0aW9uOiByb3ctcmV2ZXJzZTsKICAgICAgICAtd2Via2l0LWZsZXgtZGlyZWN0aW9uOiByb3ctcmV2ZXJzZTsKICAgICAgICBmbGV4LWRpcmVjdGlvbjogcm93LXJldmVyc2U7CiAgICAgIH0KCiAgICAgIC5sYXlvdXQudmVydGljYWwtcmV2ZXJzZSB7CiAgICAgICAgLW1zLWZsZXgtZGlyZWN0aW9uOiBjb2x1bW4tcmV2ZXJzZTsKICAgICAgICAtd2Via2l0LWZsZXgtZGlyZWN0aW9uOiBjb2x1bW4tcmV2ZXJzZTsKICAgICAgICBmbGV4LWRpcmVjdGlvbjogY29sdW1uLXJldmVyc2U7CiAgICAgIH0KCiAgICAgIC5sYXlvdXQud3JhcC1yZXZlcnNlIHsKICAgICAgICAtbXMtZmxleC13cmFwOiB3cmFwLXJldmVyc2U7CiAgICAgICAgLXdlYmtpdC1mbGV4LXdyYXA6IHdyYXAtcmV2ZXJzZTsKICAgICAgICBmbGV4LXdyYXA6IHdyYXAtcmV2ZXJzZTsKICAgICAgfQogICAgPC9zdHlsZT4KICA8L3RlbXBsYXRlPgo8L2RvbS1tb2R1bGU+Ci8qIEZsZXhib3ggYWxpZ25tZW50ICovCjxkb20tbW9kdWxlIGlkPSJpcm9uLWZsZXgtYWxpZ25tZW50Ij4KICA8dGVtcGxhdGU+CiAgICA8c3R5bGU+CiAgICAgIC8qKgogICAgICAgKiBBbGlnbm1lbnQgaW4gY3Jvc3MgYXhpcy4KICAgICAgICovCiAgICAgIC5sYXlvdXQuc3RhcnQgewogICAgICAgIC1tcy1mbGV4LWFsaWduOiBzdGFydDsKICAgICAgICAtd2Via2l0LWFsaWduLWl0ZW1zOiBmbGV4LXN0YXJ0OwogICAgICAgIGFsaWduLWl0ZW1zOiBmbGV4LXN0YXJ0OwogICAgICB9CgogICAgICAubGF5b3V0LmNlbnRlciwKICAgICAgLmxheW91dC5jZW50ZXItY2VudGVyIHsKICAgICAgICAtbXMtZmxleC1hbGlnbjogY2VudGVyOwogICAgICAgIC13ZWJraXQtYWxpZ24taXRlbXM6IGNlbnRlcjsKICAgICAgICBhbGlnbi1pdGVtczogY2VudGVyOwogICAgICB9CgogICAgICAubGF5b3V0LmVuZCB7CiAgICAgICAgLW1zLWZsZXgtYWxpZ246IGVuZDsKICAgICAgICAtd2Via2l0LWFsaWduLWl0ZW1zOiBmbGV4LWVuZDsKICAgICAgICBhbGlnbi1pdGVtczogZmxleC1lbmQ7CiAgICAgIH0KCiAgICAgIC5sYXlvdXQuYmFzZWxpbmUgewogICAgICAgIC1tcy1mbGV4LWFsaWduOiBiYXNlbGluZTsKICAgICAgICAtd2Via2l0LWFsaWduLWl0ZW1zOiBiYXNlbGluZTsKICAgICAgICBhbGlnbi1pdGVtczogYmFzZWxpbmU7CiAgICAgIH0KCiAgICAgIC8qKgogICAgICAgKiBBbGlnbm1lbnQgaW4gbWFpbiBheGlzLgogICAgICAgKi8KICAgICAgLmxheW91dC5zdGFydC1qdXN0aWZpZWQgewogICAgICAgIC1tcy1mbGV4LXBhY2s6IHN0YXJ0OwogICAgICAgIC13ZWJraXQtanVzdGlmeS1jb250ZW50OiBmbGV4LXN0YXJ0OwogICAgICAgIGp1c3RpZnktY29udGVudDogZmxleC1zdGFydDsKICAgICAgfQoKICAgICAgLmxheW91dC5jZW50ZXItanVzdGlmaWVkLAogICAgICAubGF5b3V0LmNlbnRlci1jZW50ZXIgewogICAgICAgIC1tcy1mbGV4LXBhY2s6IGNlbnRlcjsKICAgICAgICAtd2Via2l0LWp1c3RpZnktY29udGVudDogY2VudGVyOwogICAgICAgIGp1c3RpZnktY29udGVudDogY2VudGVyOwogICAgICB9CgogICAgICAubGF5b3V0LmVuZC1qdXN0aWZpZWQgewogICAgICAgIC1tcy1mbGV4LXBhY2s6IGVuZDsKICAgICAgICAtd2Via2l0LWp1c3RpZnktY29udGVudDogZmxleC1lbmQ7CiAgICAgICAganVzdGlmeS1jb250ZW50OiBmbGV4LWVuZDsKICAgICAgfQoKICAgICAgLmxheW91dC5hcm91bmQtanVzdGlmaWVkIHsKICAgICAgICAtbXMtZmxleC1wYWNrOiBkaXN0cmlidXRlOwogICAgICAgIC13ZWJraXQtanVzdGlmeS1jb250ZW50OiBzcGFjZS1hcm91bmQ7CiAgICAgICAganVzdGlmeS1jb250ZW50OiBzcGFjZS1hcm91bmQ7CiAgICAgIH0KCiAgICAgIC5sYXlvdXQuanVzdGlmaWVkIHsKICAgICAgICAtbXMtZmxleC1wYWNrOiBqdXN0aWZ5OwogICAgICAgIC13ZWJraXQtanVzdGlmeS1jb250ZW50OiBzcGFjZS1iZXR3ZWVuOwogICAgICAgIGp1c3RpZnktY29udGVudDogc3BhY2UtYmV0d2VlbjsKICAgICAgfQoKICAgICAgLyoqCiAgICAgICAqIFNlbGYgYWxpZ25tZW50LgogICAgICAgKi8KICAgICAgLnNlbGYtc3RhcnQgewogICAgICAgIC1tcy1hbGlnbi1zZWxmOiBmbGV4LXN0YXJ0OwogICAgICAgIC13ZWJraXQtYWxpZ24tc2VsZjogZmxleC1zdGFydDsKICAgICAgICBhbGlnbi1zZWxmOiBmbGV4LXN0YXJ0OwogICAgICB9CgogICAgICAuc2VsZi1jZW50ZXIgewogICAgICAgIC1tcy1hbGlnbi1zZWxmOiBjZW50ZXI7CiAgICAgICAgLXdlYmtpdC1hbGlnbi1zZWxmOiBjZW50ZXI7CiAgICAgICAgYWxpZ24tc2VsZjogY2VudGVyOwogICAgICB9CgogICAgICAuc2VsZi1lbmQgewogICAgICAgIC1tcy1hbGlnbi1zZWxmOiBmbGV4LWVuZDsKICAgICAgICAtd2Via2l0LWFsaWduLXNlbGY6IGZsZXgtZW5kOwogICAgICAgIGFsaWduLXNlbGY6IGZsZXgtZW5kOwogICAgICB9CgogICAgICAuc2VsZi1zdHJldGNoIHsKICAgICAgICAtbXMtYWxpZ24tc2VsZjogc3RyZXRjaDsKICAgICAgICAtd2Via2l0LWFsaWduLXNlbGY6IHN0cmV0Y2g7CiAgICAgICAgYWxpZ24tc2VsZjogc3RyZXRjaDsKICAgICAgfQoKICAgICAgLnNlbGYtYmFzZWxpbmUgewogICAgICAgIC1tcy1hbGlnbi1zZWxmOiBiYXNlbGluZTsKICAgICAgICAtd2Via2l0LWFsaWduLXNlbGY6IGJhc2VsaW5lOwogICAgICAgIGFsaWduLXNlbGY6IGJhc2VsaW5lOwogICAgICB9CgogICAgICAvKioKICAgICAgICogbXVsdGktbGluZSBhbGlnbm1lbnQgaW4gbWFpbiBheGlzLgogICAgICAgKi8KICAgICAgLmxheW91dC5zdGFydC1hbGlnbmVkIHsKICAgICAgICAtbXMtZmxleC1saW5lLXBhY2s6IHN0YXJ0OyAgLyogSUUxMCAqLwogICAgICAgIC1tcy1hbGlnbi1jb250ZW50OiBmbGV4LXN0YXJ0OwogICAgICAgIC13ZWJraXQtYWxpZ24tY29udGVudDogZmxleC1zdGFydDsKICAgICAgICBhbGlnbi1jb250ZW50OiBmbGV4LXN0YXJ0OwogICAgICB9CgogICAgICAubGF5b3V0LmVuZC1hbGlnbmVkIHsKICAgICAgICAtbXMtZmxleC1saW5lLXBhY2s6IGVuZDsgIC8qIElFMTAgKi8KICAgICAgICAtbXMtYWxpZ24tY29udGVudDogZmxleC1lbmQ7CiAgICAgICAgLXdlYmtpdC1hbGlnbi1jb250ZW50OiBmbGV4LWVuZDsKICAgICAgICBhbGlnbi1jb250ZW50OiBmbGV4LWVuZDsKICAgICAgfQoKICAgICAgLmxheW91dC5jZW50ZXItYWxpZ25lZCB7CiAgICAgICAgLW1zLWZsZXgtbGluZS1wYWNrOiBjZW50ZXI7ICAvKiBJRTEwICovCiAgICAgICAgLW1zLWFsaWduLWNvbnRlbnQ6IGNlbnRlcjsKICAgICAgICAtd2Via2l0LWFsaWduLWNvbnRlbnQ6IGNlbnRlcjsKICAgICAgICBhbGlnbi1jb250ZW50OiBjZW50ZXI7CiAgICAgIH0KCiAgICAgIC5sYXlvdXQuYmV0d2Vlbi1hbGlnbmVkIHsKICAgICAgICAtbXMtZmxleC1saW5lLXBhY2s6IGp1c3RpZnk7ICAvKiBJRTEwICovCiAgICAgICAgLW1zLWFsaWduLWNvbnRlbnQ6IHNwYWNlLWJldHdlZW47CiAgICAgICAgLXdlYmtpdC1hbGlnbi1jb250ZW50OiBzcGFjZS1iZXR3ZWVuOwogICAgICAgIGFsaWduLWNvbnRlbnQ6IHNwYWNlLWJldHdlZW47CiAgICAgIH0KCiAgICAgIC5sYXlvdXQuYXJvdW5kLWFsaWduZWQgewogICAgICAgIC1tcy1mbGV4LWxpbmUtcGFjazogZGlzdHJpYnV0ZTsgIC8qIElFMTAgKi8KICAgICAgICAtbXMtYWxpZ24tY29udGVudDogc3BhY2UtYXJvdW5kOwogICAgICAgIC13ZWJraXQtYWxpZ24tY29udGVudDogc3BhY2UtYXJvdW5kOwogICAgICAgIGFsaWduLWNvbnRlbnQ6IHNwYWNlLWFyb3VuZDsKICAgICAgfQogICAgPC9zdHlsZT4KICA8L3RlbXBsYXRlPgo8L2RvbS1tb2R1bGU+Ci8qIE5vbi1mbGV4Ym94IHBvc2l0aW9uaW5nIGhlbHBlciBzdHlsZXMgKi8KPGRvbS1tb2R1bGUgaWQ9Imlyb24tZmxleC1mYWN0b3JzIj4KICA8dGVtcGxhdGU+CiAgICA8c3R5bGU+CiAgICAgIC5mbGV4LAogICAgICAuZmxleC0xIHsKICAgICAgICAtbXMtZmxleDogMSAxIDAuMDAwMDAwMDAxcHg7CiAgICAgICAgLXdlYmtpdC1mbGV4OiAxOwogICAgICAgIGZsZXg6IDE7CiAgICAgICAgLXdlYmtpdC1mbGV4LWJhc2lzOiAwLjAwMDAwMDAwMXB4OwogICAgICAgIGZsZXgtYmFzaXM6IDAuMDAwMDAwMDAxcHg7CiAgICAgIH0KCiAgICAgIC5mbGV4LTIgewogICAgICAgIC1tcy1mbGV4OiAyOwogICAgICAgIC13ZWJraXQtZmxleDogMjsKICAgICAgICBmbGV4OiAyOwogICAgICB9CgogICAgICAuZmxleC0zIHsKICAgICAgICAtbXMtZmxleDogMzsKICAgICAgICAtd2Via2l0LWZsZXg6IDM7CiAgICAgICAgZmxleDogMzsKICAgICAgfQoKICAgICAgLmZsZXgtNCB7CiAgICAgICAgLW1zLWZsZXg6IDQ7CiAgICAgICAgLXdlYmtpdC1mbGV4OiA0OwogICAgICAgIGZsZXg6IDQ7CiAgICAgIH0KCiAgICAgIC5mbGV4LTUgewogICAgICAgIC1tcy1mbGV4OiA1OwogICAgICAgIC13ZWJraXQtZmxleDogNTsKICAgICAgICBmbGV4OiA1OwogICAgICB9CgogICAgICAuZmxleC02IHsKICAgICAgICAtbXMtZmxleDogNjsKICAgICAgICAtd2Via2l0LWZsZXg6IDY7CiAgICAgICAgZmxleDogNjsKICAgICAgfQoKICAgICAgLmZsZXgtNyB7CiAgICAgICAgLW1zLWZsZXg6IDc7CiAgICAgICAgLXdlYmtpdC1mbGV4OiA3OwogICAgICAgIGZsZXg6IDc7CiAgICAgIH0KCiAgICAgIC5mbGV4LTggewogICAgICAgIC1tcy1mbGV4OiA4OwogICAgICAgIC13ZWJraXQtZmxleDogODsKICAgICAgICBmbGV4OiA4OwogICAgICB9CgogICAgICAuZmxleC05IHsKICAgICAgICAtbXMtZmxleDogOTsKICAgICAgICAtd2Via2l0LWZsZXg6IDk7CiAgICAgICAgZmxleDogOTsKICAgICAgfQoKICAgICAgLmZsZXgtMTAgewogICAgICAgIC1tcy1mbGV4OiAxMDsKICAgICAgICAtd2Via2l0LWZsZXg6IDEwOwogICAgICAgIGZsZXg6IDEwOwogICAgICB9CgogICAgICAuZmxleC0xMSB7CiAgICAgICAgLW1zLWZsZXg6IDExOwogICAgICAgIC13ZWJraXQtZmxleDogMTE7CiAgICAgICAgZmxleDogMTE7CiAgICAgIH0KCiAgICAgIC5mbGV4LTEyIHsKICAgICAgICAtbXMtZmxleDogMTI7CiAgICAgICAgLXdlYmtpdC1mbGV4OiAxMjsKICAgICAgICBmbGV4OiAxMjsKICAgICAgfQogICAgPC9zdHlsZT4KICA8L3RlbXBsYXRlPgo8L2RvbS1tb2R1bGU+Cjxkb20tbW9kdWxlIGlkPSJpcm9uLXBvc2l0aW9uaW5nIj4KICA8dGVtcGxhdGU+CiAgICA8c3R5bGU+CiAgICAgIC5ibG9jayB7CiAgICAgICAgZGlzcGxheTogYmxvY2s7CiAgICAgIH0KCiAgICAgIFtoaWRkZW5dIHsKICAgICAgICBkaXNwbGF5OiBub25lICFpbXBvcnRhbnQ7CiAgICAgIH0KCiAgICAgIC5pbnZpc2libGUgewogICAgICAgIHZpc2liaWxpdHk6IGhpZGRlbiAhaW1wb3J0YW50OwogICAgICB9CgogICAgICAucmVsYXRpdmUgewogICAgICAgIHBvc2l0aW9uOiByZWxhdGl2ZTsKICAgICAgfQoKICAgICAgLmZpdCB7CiAgICAgICAgcG9zaXRpb246IGFic29sdXRlOwogICAgICAgIHRvcDogMDsKICAgICAgICByaWdodDogMDsKICAgICAgICBib3R0b206IDA7CiAgICAgICAgbGVmdDogMDsKICAgICAgfQoKICAgICAgYm9keS5mdWxsYmxlZWQgewogICAgICAgIG1hcmdpbjogMDsKICAgICAgICBoZWlnaHQ6IDEwMHZoOwogICAgICB9CgogICAgICAuc2Nyb2xsIHsKICAgICAgICAtd2Via2l0LW92ZXJmbG93LXNjcm9sbGluZzogdG91Y2g7CiAgICAgICAgb3ZlcmZsb3c6IGF1dG87CiAgICAgIH0KCiAgICAgIC8qIGZpeGVkIHBvc2l0aW9uICovCiAgICAgIC5maXhlZC1ib3R0b20sCiAgICAgIC5maXhlZC1sZWZ0LAogICAgICAuZml4ZWQtcmlnaHQsCiAgICAgIC5maXhlZC10b3AgewogICAgICAgIHBvc2l0aW9uOiBmaXhlZDsKICAgICAgfQoKICAgICAgLmZpeGVkLXRvcCB7CiAgICAgICAgdG9wOiAwOwogICAgICAgIGxlZnQ6IDA7CiAgICAgICAgcmlnaHQ6IDA7CiAgICAgIH0KCiAgICAgIC5maXhlZC1yaWdodCB7CiAgICAgICAgdG9wOiAwOwogICAgICAgIHJpZ2h0OiAwOwogICAgICAgIGJvdHRvbTogMDsKICAgICAgfQoKICAgICAgLmZpeGVkLWJvdHRvbSB7CiAgICAgICAgcmlnaHQ6IDA7CiAgICAgICAgYm90dG9tOiAwOwogICAgICAgIGxlZnQ6IDA7CiAgICAgIH0KCiAgICAgIC5maXhlZC1sZWZ0IHsKICAgICAgICB0b3A6IDA7CiAgICAgICAgYm90dG9tOiAwOwogICAgICAgIGxlZnQ6IDA7CiAgICAgIH0KICAgIDwvc3R5bGU+CiAgPC90ZW1wbGF0ZT4KPC9kb20tbW9kdWxlPgpgO19vLnNldEF0dHJpYnV0ZSgic3R5bGUiLCJkaXNwbGF5OiBub25lOyIpLGRvY3VtZW50LmhlYWQuYXBwZW5kQ2hpbGQoX28uY29udGVudCk7Ci8qKgogICAgQGxpY2Vuc2UKICAgIENvcHlyaWdodCAoYykgMjAxNSBUaGUgUG9seW1lciBQcm9qZWN0IEF1dGhvcnMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgICBUaGlzIGNvZGUgbWF5IG9ubHkgYmUgdXNlZCB1bmRlciB0aGUgQlNEIHN0eWxlIGxpY2Vuc2UgZm91bmQgYXQKICAgIGh0dHA6Ly9wb2x5bWVyLmdpdGh1Yi5pby9MSUNFTlNFLnR4dCBUaGUgY29tcGxldGUgc2V0IG9mIGF1dGhvcnMgbWF5IGJlIGZvdW5kIGF0CiAgICBodHRwOi8vcG9seW1lci5naXRodWIuaW8vQVVUSE9SUy50eHQgVGhlIGNvbXBsZXRlIHNldCBvZiBjb250cmlidXRvcnMgbWF5IGJlCiAgICBmb3VuZCBhdCBodHRwOi8vcG9seW1lci5naXRodWIuaW8vQ09OVFJJQlVUT1JTLnR4dCBDb2RlIGRpc3RyaWJ1dGVkIGJ5IEdvb2dsZSBhcwogICAgcGFydCBvZiB0aGUgcG9seW1lciBwcm9qZWN0IGlzIGFsc28gc3ViamVjdCB0byBhbiBhZGRpdGlvbmFsIElQIHJpZ2h0cyBncmFudAogICAgZm91bmQgYXQgaHR0cDovL3BvbHltZXIuZ2l0aHViLmlvL1BBVEVOVFMudHh0CiAgICAqLwpjb25zdCB5bz1fZWAKPGN1c3RvbS1zdHlsZT4KICA8c3R5bGUgaXM9ImN1c3RvbS1zdHlsZSI+CiAgICBbaGlkZGVuXSB7CiAgICAgIGRpc3BsYXk6IG5vbmUgIWltcG9ydGFudDsKICAgIH0KICA8L3N0eWxlPgo8L2N1c3RvbS1zdHlsZT4KPGN1c3RvbS1zdHlsZT4KICA8c3R5bGUgaXM9ImN1c3RvbS1zdHlsZSI+CiAgICBodG1sIHsKCiAgICAgIC0tbGF5b3V0OiB7CiAgICAgICAgZGlzcGxheTogLW1zLWZsZXhib3g7CiAgICAgICAgZGlzcGxheTogLXdlYmtpdC1mbGV4OwogICAgICAgIGRpc3BsYXk6IGZsZXg7CiAgICAgIH07CgogICAgICAtLWxheW91dC1pbmxpbmU6IHsKICAgICAgICBkaXNwbGF5OiAtbXMtaW5saW5lLWZsZXhib3g7CiAgICAgICAgZGlzcGxheTogLXdlYmtpdC1pbmxpbmUtZmxleDsKICAgICAgICBkaXNwbGF5OiBpbmxpbmUtZmxleDsKICAgICAgfTsKCiAgICAgIC0tbGF5b3V0LWhvcml6b250YWw6IHsKICAgICAgICBAYXBwbHkgLS1sYXlvdXQ7CgogICAgICAgIC1tcy1mbGV4LWRpcmVjdGlvbjogcm93OwogICAgICAgIC13ZWJraXQtZmxleC1kaXJlY3Rpb246IHJvdzsKICAgICAgICBmbGV4LWRpcmVjdGlvbjogcm93OwogICAgICB9OwoKICAgICAgLS1sYXlvdXQtaG9yaXpvbnRhbC1yZXZlcnNlOiB7CiAgICAgICAgQGFwcGx5IC0tbGF5b3V0OwoKICAgICAgICAtbXMtZmxleC1kaXJlY3Rpb246IHJvdy1yZXZlcnNlOwogICAgICAgIC13ZWJraXQtZmxleC1kaXJlY3Rpb246IHJvdy1yZXZlcnNlOwogICAgICAgIGZsZXgtZGlyZWN0aW9uOiByb3ctcmV2ZXJzZTsKICAgICAgfTsKCiAgICAgIC0tbGF5b3V0LXZlcnRpY2FsOiB7CiAgICAgICAgQGFwcGx5IC0tbGF5b3V0OwoKICAgICAgICAtbXMtZmxleC1kaXJlY3Rpb246IGNvbHVtbjsKICAgICAgICAtd2Via2l0LWZsZXgtZGlyZWN0aW9uOiBjb2x1bW47CiAgICAgICAgZmxleC1kaXJlY3Rpb246IGNvbHVtbjsKICAgICAgfTsKCiAgICAgIC0tbGF5b3V0LXZlcnRpY2FsLXJldmVyc2U6IHsKICAgICAgICBAYXBwbHkgLS1sYXlvdXQ7CgogICAgICAgIC1tcy1mbGV4LWRpcmVjdGlvbjogY29sdW1uLXJldmVyc2U7CiAgICAgICAgLXdlYmtpdC1mbGV4LWRpcmVjdGlvbjogY29sdW1uLXJldmVyc2U7CiAgICAgICAgZmxleC1kaXJlY3Rpb246IGNvbHVtbi1yZXZlcnNlOwogICAgICB9OwoKICAgICAgLS1sYXlvdXQtd3JhcDogewogICAgICAgIC1tcy1mbGV4LXdyYXA6IHdyYXA7CiAgICAgICAgLXdlYmtpdC1mbGV4LXdyYXA6IHdyYXA7CiAgICAgICAgZmxleC13cmFwOiB3cmFwOwogICAgICB9OwoKICAgICAgLS1sYXlvdXQtd3JhcC1yZXZlcnNlOiB7CiAgICAgICAgLW1zLWZsZXgtd3JhcDogd3JhcC1yZXZlcnNlOwogICAgICAgIC13ZWJraXQtZmxleC13cmFwOiB3cmFwLXJldmVyc2U7CiAgICAgICAgZmxleC13cmFwOiB3cmFwLXJldmVyc2U7CiAgICAgIH07CgogICAgICAtLWxheW91dC1mbGV4LWF1dG86IHsKICAgICAgICAtbXMtZmxleDogMSAxIGF1dG87CiAgICAgICAgLXdlYmtpdC1mbGV4OiAxIDEgYXV0bzsKICAgICAgICBmbGV4OiAxIDEgYXV0bzsKICAgICAgfTsKCiAgICAgIC0tbGF5b3V0LWZsZXgtbm9uZTogewogICAgICAgIC1tcy1mbGV4OiBub25lOwogICAgICAgIC13ZWJraXQtZmxleDogbm9uZTsKICAgICAgICBmbGV4OiBub25lOwogICAgICB9OwoKICAgICAgLS1sYXlvdXQtZmxleDogewogICAgICAgIC1tcy1mbGV4OiAxIDEgMC4wMDAwMDAwMDFweDsKICAgICAgICAtd2Via2l0LWZsZXg6IDE7CiAgICAgICAgZmxleDogMTsKICAgICAgICAtd2Via2l0LWZsZXgtYmFzaXM6IDAuMDAwMDAwMDAxcHg7CiAgICAgICAgZmxleC1iYXNpczogMC4wMDAwMDAwMDFweDsKICAgICAgfTsKCiAgICAgIC0tbGF5b3V0LWZsZXgtMjogewogICAgICAgIC1tcy1mbGV4OiAyOwogICAgICAgIC13ZWJraXQtZmxleDogMjsKICAgICAgICBmbGV4OiAyOwogICAgICB9OwoKICAgICAgLS1sYXlvdXQtZmxleC0zOiB7CiAgICAgICAgLW1zLWZsZXg6IDM7CiAgICAgICAgLXdlYmtpdC1mbGV4OiAzOwogICAgICAgIGZsZXg6IDM7CiAgICAgIH07CgogICAgICAtLWxheW91dC1mbGV4LTQ6IHsKICAgICAgICAtbXMtZmxleDogNDsKICAgICAgICAtd2Via2l0LWZsZXg6IDQ7CiAgICAgICAgZmxleDogNDsKICAgICAgfTsKCiAgICAgIC0tbGF5b3V0LWZsZXgtNTogewogICAgICAgIC1tcy1mbGV4OiA1OwogICAgICAgIC13ZWJraXQtZmxleDogNTsKICAgICAgICBmbGV4OiA1OwogICAgICB9OwoKICAgICAgLS1sYXlvdXQtZmxleC02OiB7CiAgICAgICAgLW1zLWZsZXg6IDY7CiAgICAgICAgLXdlYmtpdC1mbGV4OiA2OwogICAgICAgIGZsZXg6IDY7CiAgICAgIH07CgogICAgICAtLWxheW91dC1mbGV4LTc6IHsKICAgICAgICAtbXMtZmxleDogNzsKICAgICAgICAtd2Via2l0LWZsZXg6IDc7CiAgICAgICAgZmxleDogNzsKICAgICAgfTsKCiAgICAgIC0tbGF5b3V0LWZsZXgtODogewogICAgICAgIC1tcy1mbGV4OiA4OwogICAgICAgIC13ZWJraXQtZmxleDogODsKICAgICAgICBmbGV4OiA4OwogICAgICB9OwoKICAgICAgLS1sYXlvdXQtZmxleC05OiB7CiAgICAgICAgLW1zLWZsZXg6IDk7CiAgICAgICAgLXdlYmtpdC1mbGV4OiA5OwogICAgICAgIGZsZXg6IDk7CiAgICAgIH07CgogICAgICAtLWxheW91dC1mbGV4LTEwOiB7CiAgICAgICAgLW1zLWZsZXg6IDEwOwogICAgICAgIC13ZWJraXQtZmxleDogMTA7CiAgICAgICAgZmxleDogMTA7CiAgICAgIH07CgogICAgICAtLWxheW91dC1mbGV4LTExOiB7CiAgICAgICAgLW1zLWZsZXg6IDExOwogICAgICAgIC13ZWJraXQtZmxleDogMTE7CiAgICAgICAgZmxleDogMTE7CiAgICAgIH07CgogICAgICAtLWxheW91dC1mbGV4LTEyOiB7CiAgICAgICAgLW1zLWZsZXg6IDEyOwogICAgICAgIC13ZWJraXQtZmxleDogMTI7CiAgICAgICAgZmxleDogMTI7CiAgICAgIH07CgogICAgICAvKiBhbGlnbm1lbnQgaW4gY3Jvc3MgYXhpcyAqLwoKICAgICAgLS1sYXlvdXQtc3RhcnQ6IHsKICAgICAgICAtbXMtZmxleC1hbGlnbjogc3RhcnQ7CiAgICAgICAgLXdlYmtpdC1hbGlnbi1pdGVtczogZmxleC1zdGFydDsKICAgICAgICBhbGlnbi1pdGVtczogZmxleC1zdGFydDsKICAgICAgfTsKCiAgICAgIC0tbGF5b3V0LWNlbnRlcjogewogICAgICAgIC1tcy1mbGV4LWFsaWduOiBjZW50ZXI7CiAgICAgICAgLXdlYmtpdC1hbGlnbi1pdGVtczogY2VudGVyOwogICAgICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7CiAgICAgIH07CgogICAgICAtLWxheW91dC1lbmQ6IHsKICAgICAgICAtbXMtZmxleC1hbGlnbjogZW5kOwogICAgICAgIC13ZWJraXQtYWxpZ24taXRlbXM6IGZsZXgtZW5kOwogICAgICAgIGFsaWduLWl0ZW1zOiBmbGV4LWVuZDsKICAgICAgfTsKCiAgICAgIC0tbGF5b3V0LWJhc2VsaW5lOiB7CiAgICAgICAgLW1zLWZsZXgtYWxpZ246IGJhc2VsaW5lOwogICAgICAgIC13ZWJraXQtYWxpZ24taXRlbXM6IGJhc2VsaW5lOwogICAgICAgIGFsaWduLWl0ZW1zOiBiYXNlbGluZTsKICAgICAgfTsKCiAgICAgIC8qIGFsaWdubWVudCBpbiBtYWluIGF4aXMgKi8KCiAgICAgIC0tbGF5b3V0LXN0YXJ0LWp1c3RpZmllZDogewogICAgICAgIC1tcy1mbGV4LXBhY2s6IHN0YXJ0OwogICAgICAgIC13ZWJraXQtanVzdGlmeS1jb250ZW50OiBmbGV4LXN0YXJ0OwogICAgICAgIGp1c3RpZnktY29udGVudDogZmxleC1zdGFydDsKICAgICAgfTsKCiAgICAgIC0tbGF5b3V0LWNlbnRlci1qdXN0aWZpZWQ6IHsKICAgICAgICAtbXMtZmxleC1wYWNrOiBjZW50ZXI7CiAgICAgICAgLXdlYmtpdC1qdXN0aWZ5LWNvbnRlbnQ6IGNlbnRlcjsKICAgICAgICBqdXN0aWZ5LWNvbnRlbnQ6IGNlbnRlcjsKICAgICAgfTsKCiAgICAgIC0tbGF5b3V0LWVuZC1qdXN0aWZpZWQ6IHsKICAgICAgICAtbXMtZmxleC1wYWNrOiBlbmQ7CiAgICAgICAgLXdlYmtpdC1qdXN0aWZ5LWNvbnRlbnQ6IGZsZXgtZW5kOwogICAgICAgIGp1c3RpZnktY29udGVudDogZmxleC1lbmQ7CiAgICAgIH07CgogICAgICAtLWxheW91dC1hcm91bmQtanVzdGlmaWVkOiB7CiAgICAgICAgLW1zLWZsZXgtcGFjazogZGlzdHJpYnV0ZTsKICAgICAgICAtd2Via2l0LWp1c3RpZnktY29udGVudDogc3BhY2UtYXJvdW5kOwogICAgICAgIGp1c3RpZnktY29udGVudDogc3BhY2UtYXJvdW5kOwogICAgICB9OwoKICAgICAgLS1sYXlvdXQtanVzdGlmaWVkOiB7CiAgICAgICAgLW1zLWZsZXgtcGFjazoganVzdGlmeTsKICAgICAgICAtd2Via2l0LWp1c3RpZnktY29udGVudDogc3BhY2UtYmV0d2VlbjsKICAgICAgICBqdXN0aWZ5LWNvbnRlbnQ6IHNwYWNlLWJldHdlZW47CiAgICAgIH07CgogICAgICAtLWxheW91dC1jZW50ZXItY2VudGVyOiB7CiAgICAgICAgQGFwcGx5IC0tbGF5b3V0LWNlbnRlcjsKICAgICAgICBAYXBwbHkgLS1sYXlvdXQtY2VudGVyLWp1c3RpZmllZDsKICAgICAgfTsKCiAgICAgIC8qIHNlbGYgYWxpZ25tZW50ICovCgogICAgICAtLWxheW91dC1zZWxmLXN0YXJ0OiB7CiAgICAgICAgLW1zLWFsaWduLXNlbGY6IGZsZXgtc3RhcnQ7CiAgICAgICAgLXdlYmtpdC1hbGlnbi1zZWxmOiBmbGV4LXN0YXJ0OwogICAgICAgIGFsaWduLXNlbGY6IGZsZXgtc3RhcnQ7CiAgICAgIH07CgogICAgICAtLWxheW91dC1zZWxmLWNlbnRlcjogewogICAgICAgIC1tcy1hbGlnbi1zZWxmOiBjZW50ZXI7CiAgICAgICAgLXdlYmtpdC1hbGlnbi1zZWxmOiBjZW50ZXI7CiAgICAgICAgYWxpZ24tc2VsZjogY2VudGVyOwogICAgICB9OwoKICAgICAgLS1sYXlvdXQtc2VsZi1lbmQ6IHsKICAgICAgICAtbXMtYWxpZ24tc2VsZjogZmxleC1lbmQ7CiAgICAgICAgLXdlYmtpdC1hbGlnbi1zZWxmOiBmbGV4LWVuZDsKICAgICAgICBhbGlnbi1zZWxmOiBmbGV4LWVuZDsKICAgICAgfTsKCiAgICAgIC0tbGF5b3V0LXNlbGYtc3RyZXRjaDogewogICAgICAgIC1tcy1hbGlnbi1zZWxmOiBzdHJldGNoOwogICAgICAgIC13ZWJraXQtYWxpZ24tc2VsZjogc3RyZXRjaDsKICAgICAgICBhbGlnbi1zZWxmOiBzdHJldGNoOwogICAgICB9OwoKICAgICAgLS1sYXlvdXQtc2VsZi1iYXNlbGluZTogewogICAgICAgIC1tcy1hbGlnbi1zZWxmOiBiYXNlbGluZTsKICAgICAgICAtd2Via2l0LWFsaWduLXNlbGY6IGJhc2VsaW5lOwogICAgICAgIGFsaWduLXNlbGY6IGJhc2VsaW5lOwogICAgICB9OwoKICAgICAgLyogbXVsdGktbGluZSBhbGlnbm1lbnQgaW4gbWFpbiBheGlzICovCgogICAgICAtLWxheW91dC1zdGFydC1hbGlnbmVkOiB7CiAgICAgICAgLW1zLWZsZXgtbGluZS1wYWNrOiBzdGFydDsgIC8qIElFMTAgKi8KICAgICAgICAtbXMtYWxpZ24tY29udGVudDogZmxleC1zdGFydDsKICAgICAgICAtd2Via2l0LWFsaWduLWNvbnRlbnQ6IGZsZXgtc3RhcnQ7CiAgICAgICAgYWxpZ24tY29udGVudDogZmxleC1zdGFydDsKICAgICAgfTsKCiAgICAgIC0tbGF5b3V0LWVuZC1hbGlnbmVkOiB7CiAgICAgICAgLW1zLWZsZXgtbGluZS1wYWNrOiBlbmQ7ICAvKiBJRTEwICovCiAgICAgICAgLW1zLWFsaWduLWNvbnRlbnQ6IGZsZXgtZW5kOwogICAgICAgIC13ZWJraXQtYWxpZ24tY29udGVudDogZmxleC1lbmQ7CiAgICAgICAgYWxpZ24tY29udGVudDogZmxleC1lbmQ7CiAgICAgIH07CgogICAgICAtLWxheW91dC1jZW50ZXItYWxpZ25lZDogewogICAgICAgIC1tcy1mbGV4LWxpbmUtcGFjazogY2VudGVyOyAgLyogSUUxMCAqLwogICAgICAgIC1tcy1hbGlnbi1jb250ZW50OiBjZW50ZXI7CiAgICAgICAgLXdlYmtpdC1hbGlnbi1jb250ZW50OiBjZW50ZXI7CiAgICAgICAgYWxpZ24tY29udGVudDogY2VudGVyOwogICAgICB9OwoKICAgICAgLS1sYXlvdXQtYmV0d2Vlbi1hbGlnbmVkOiB7CiAgICAgICAgLW1zLWZsZXgtbGluZS1wYWNrOiBqdXN0aWZ5OyAgLyogSUUxMCAqLwogICAgICAgIC1tcy1hbGlnbi1jb250ZW50OiBzcGFjZS1iZXR3ZWVuOwogICAgICAgIC13ZWJraXQtYWxpZ24tY29udGVudDogc3BhY2UtYmV0d2VlbjsKICAgICAgICBhbGlnbi1jb250ZW50OiBzcGFjZS1iZXR3ZWVuOwogICAgICB9OwoKICAgICAgLS1sYXlvdXQtYXJvdW5kLWFsaWduZWQ6IHsKICAgICAgICAtbXMtZmxleC1saW5lLXBhY2s6IGRpc3RyaWJ1dGU7ICAvKiBJRTEwICovCiAgICAgICAgLW1zLWFsaWduLWNvbnRlbnQ6IHNwYWNlLWFyb3VuZDsKICAgICAgICAtd2Via2l0LWFsaWduLWNvbnRlbnQ6IHNwYWNlLWFyb3VuZDsKICAgICAgICBhbGlnbi1jb250ZW50OiBzcGFjZS1hcm91bmQ7CiAgICAgIH07CgogICAgICAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgogICAgICAgICAgICAgICAgT3RoZXIgTGF5b3V0CiAgICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCgogICAgICAtLWxheW91dC1ibG9jazogewogICAgICAgIGRpc3BsYXk6IGJsb2NrOwogICAgICB9OwoKICAgICAgLS1sYXlvdXQtaW52aXNpYmxlOiB7CiAgICAgICAgdmlzaWJpbGl0eTogaGlkZGVuICFpbXBvcnRhbnQ7CiAgICAgIH07CgogICAgICAtLWxheW91dC1yZWxhdGl2ZTogewogICAgICAgIHBvc2l0aW9uOiByZWxhdGl2ZTsKICAgICAgfTsKCiAgICAgIC0tbGF5b3V0LWZpdDogewogICAgICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTsKICAgICAgICB0b3A6IDA7CiAgICAgICAgcmlnaHQ6IDA7CiAgICAgICAgYm90dG9tOiAwOwogICAgICAgIGxlZnQ6IDA7CiAgICAgIH07CgogICAgICAtLWxheW91dC1zY3JvbGw6IHsKICAgICAgICAtd2Via2l0LW92ZXJmbG93LXNjcm9sbGluZzogdG91Y2g7CiAgICAgICAgb3ZlcmZsb3c6IGF1dG87CiAgICAgIH07CgogICAgICAtLWxheW91dC1mdWxsYmxlZWQ6IHsKICAgICAgICBtYXJnaW46IDA7CiAgICAgICAgaGVpZ2h0OiAxMDB2aDsKICAgICAgfTsKCiAgICAgIC8qIGZpeGVkIHBvc2l0aW9uICovCgogICAgICAtLWxheW91dC1maXhlZC10b3A6IHsKICAgICAgICBwb3NpdGlvbjogZml4ZWQ7CiAgICAgICAgdG9wOiAwOwogICAgICAgIGxlZnQ6IDA7CiAgICAgICAgcmlnaHQ6IDA7CiAgICAgIH07CgogICAgICAtLWxheW91dC1maXhlZC1yaWdodDogewogICAgICAgIHBvc2l0aW9uOiBmaXhlZDsKICAgICAgICB0b3A6IDA7CiAgICAgICAgcmlnaHQ6IDA7CiAgICAgICAgYm90dG9tOiAwOwogICAgICB9OwoKICAgICAgLS1sYXlvdXQtZml4ZWQtYm90dG9tOiB7CiAgICAgICAgcG9zaXRpb246IGZpeGVkOwogICAgICAgIHJpZ2h0OiAwOwogICAgICAgIGJvdHRvbTogMDsKICAgICAgICBsZWZ0OiAwOwogICAgICB9OwoKICAgICAgLS1sYXlvdXQtZml4ZWQtbGVmdDogewogICAgICAgIHBvc2l0aW9uOiBmaXhlZDsKICAgICAgICB0b3A6IDA7CiAgICAgICAgYm90dG9tOiAwOwogICAgICAgIGxlZnQ6IDA7CiAgICAgIH07CgogICAgfQogIDwvc3R5bGU+CjwvY3VzdG9tLXN0eWxlPmA7eW8uc2V0QXR0cmlidXRlKCJzdHlsZSIsImRpc3BsYXk6IG5vbmU7IiksZG9jdW1lbnQuaGVhZC5hcHBlbmRDaGlsZCh5by5jb250ZW50KTt2YXIgdm89ZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgic3R5bGUiKTt2by50ZXh0Q29udGVudD0iW2hpZGRlbl0geyBkaXNwbGF5OiBub25lICFpbXBvcnRhbnQ7IH0iLGRvY3VtZW50LmhlYWQuYXBwZW5kQ2hpbGQodm8pOwovKioKICAgIEBsaWNlbnNlCiAgICBDb3B5cmlnaHQgKGMpIDIwMTUgVGhlIFBvbHltZXIgUHJvamVjdCBBdXRob3JzLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICAgVGhpcyBjb2RlIG1heSBvbmx5IGJlIHVzZWQgdW5kZXIgdGhlIEJTRCBzdHlsZSBsaWNlbnNlIGZvdW5kIGF0CiAgICBodHRwOi8vcG9seW1lci5naXRodWIuaW8vTElDRU5TRS50eHQgVGhlIGNvbXBsZXRlIHNldCBvZiBhdXRob3JzIG1heSBiZSBmb3VuZCBhdAogICAgaHR0cDovL3BvbHltZXIuZ2l0aHViLmlvL0FVVEhPUlMudHh0IFRoZSBjb21wbGV0ZSBzZXQgb2YgY29udHJpYnV0b3JzIG1heSBiZQogICAgZm91bmQgYXQgaHR0cDovL3BvbHltZXIuZ2l0aHViLmlvL0NPTlRSSUJVVE9SUy50eHQgQ29kZSBkaXN0cmlidXRlZCBieSBHb29nbGUgYXMKICAgIHBhcnQgb2YgdGhlIHBvbHltZXIgcHJvamVjdCBpcyBhbHNvIHN1YmplY3QgdG8gYW4gYWRkaXRpb25hbCBJUCByaWdodHMgZ3JhbnQKICAgIGZvdW5kIGF0IGh0dHA6Ly9wb2x5bWVyLmdpdGh1Yi5pby9QQVRFTlRTLnR4dAogICAgKi8KY2xhc3MgYm97Y29uc3RydWN0b3IodCl7Ym9bIiAiXSh0KSx0aGlzLnR5cGU9dCYmdC50eXBlfHwiZGVmYXVsdCIsdGhpcy5rZXk9dCYmdC5rZXksdCYmInZhbHVlImluIHQmJih0aGlzLnZhbHVlPXQudmFsdWUpfWdldCB2YWx1ZSgpe3ZhciB0PXRoaXMudHlwZSxlPXRoaXMua2V5O2lmKHQmJmUpcmV0dXJuIGJvLnR5cGVzW3RdJiZiby50eXBlc1t0XVtlXX1zZXQgdmFsdWUodCl7dmFyIGU9dGhpcy50eXBlLG49dGhpcy5rZXk7ZSYmbiYmKGU9Ym8udHlwZXNbZV09Ym8udHlwZXNbZV18fHt9LG51bGw9PXQ/ZGVsZXRlIGVbbl06ZVtuXT10KX1nZXQgbGlzdCgpe2lmKHRoaXMudHlwZSl7dmFyIHQ9Ym8udHlwZXNbdGhpcy50eXBlXTtyZXR1cm4gdD9PYmplY3Qua2V5cyh0KS5tYXAoKGZ1bmN0aW9uKHQpe3JldHVybiB4b1t0aGlzLnR5cGVdW3RdfSksdGhpcyk6W119fWJ5S2V5KHQpe3JldHVybiB0aGlzLmtleT10LHRoaXMudmFsdWV9fWJvWyIgIl09ZnVuY3Rpb24oKXt9LGJvLnR5cGVzPXt9O3ZhciB4bz1iby50eXBlcztOcih7aXM6Imlyb24tbWV0YSIscHJvcGVydGllczp7dHlwZTp7dHlwZTpTdHJpbmcsdmFsdWU6ImRlZmF1bHQifSxrZXk6e3R5cGU6U3RyaW5nfSx2YWx1ZTp7dHlwZTpTdHJpbmcsbm90aWZ5OiEwfSxzZWxmOnt0eXBlOkJvb2xlYW4sb2JzZXJ2ZXI6Il9zZWxmQ2hhbmdlZCJ9LF9fbWV0YTp7dHlwZTpCb29sZWFuLGNvbXB1dGVkOiJfX2NvbXB1dGVNZXRhKHR5cGUsIGtleSwgdmFsdWUpIn19LGhvc3RBdHRyaWJ1dGVzOntoaWRkZW46ITB9LF9fY29tcHV0ZU1ldGE6ZnVuY3Rpb24odCxlLG4pe3ZhciBpPW5ldyBibyh7dHlwZTp0LGtleTplfSk7cmV0dXJuIHZvaWQgMCE9PW4mJm4hPT1pLnZhbHVlP2kudmFsdWU9bjp0aGlzLnZhbHVlIT09aS52YWx1ZSYmKHRoaXMudmFsdWU9aS52YWx1ZSksaX0sZ2V0IGxpc3QoKXtyZXR1cm4gdGhpcy5fX21ldGEmJnRoaXMuX19tZXRhLmxpc3R9LF9zZWxmQ2hhbmdlZDpmdW5jdGlvbih0KXt0JiYodGhpcy52YWx1ZT10aGlzKX0sYnlLZXk6ZnVuY3Rpb24odCl7cmV0dXJuIG5ldyBibyh7dHlwZTp0aGlzLnR5cGUsa2V5OnR9KS52YWx1ZX19KSwKLyoqCiAgICBAbGljZW5zZQogICAgQ29weXJpZ2h0IChjKSAyMDE1IFRoZSBQb2x5bWVyIFByb2plY3QgQXV0aG9ycy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAgIFRoaXMgY29kZSBtYXkgb25seSBiZSB1c2VkIHVuZGVyIHRoZSBCU0Qgc3R5bGUgbGljZW5zZSBmb3VuZCBhdAogICAgaHR0cDovL3BvbHltZXIuZ2l0aHViLmlvL0xJQ0VOU0UudHh0IFRoZSBjb21wbGV0ZSBzZXQgb2YgYXV0aG9ycyBtYXkgYmUgZm91bmQgYXQKICAgIGh0dHA6Ly9wb2x5bWVyLmdpdGh1Yi5pby9BVVRIT1JTLnR4dCBUaGUgY29tcGxldGUgc2V0IG9mIGNvbnRyaWJ1dG9ycyBtYXkgYmUKICAgIGZvdW5kIGF0IGh0dHA6Ly9wb2x5bWVyLmdpdGh1Yi5pby9DT05UUklCVVRPUlMudHh0IENvZGUgZGlzdHJpYnV0ZWQgYnkgR29vZ2xlIGFzCiAgICBwYXJ0IG9mIHRoZSBwb2x5bWVyIHByb2plY3QgaXMgYWxzbyBzdWJqZWN0IHRvIGFuIGFkZGl0aW9uYWwgSVAgcmlnaHRzIGdyYW50CiAgICBmb3VuZCBhdCBodHRwOi8vcG9seW1lci5naXRodWIuaW8vUEFURU5UUy50eHQKICAgICovCk5yKHtfdGVtcGxhdGU6X2VgCiAgICA8c3R5bGU+CiAgICAgIDpob3N0IHsKICAgICAgICBAYXBwbHkgLS1sYXlvdXQtaW5saW5lOwogICAgICAgIEBhcHBseSAtLWxheW91dC1jZW50ZXItY2VudGVyOwogICAgICAgIHBvc2l0aW9uOiByZWxhdGl2ZTsKCiAgICAgICAgdmVydGljYWwtYWxpZ246IG1pZGRsZTsKCiAgICAgICAgZmlsbDogdmFyKC0taXJvbi1pY29uLWZpbGwtY29sb3IsIGN1cnJlbnRjb2xvcik7CiAgICAgICAgc3Ryb2tlOiB2YXIoLS1pcm9uLWljb24tc3Ryb2tlLWNvbG9yLCBub25lKTsKCiAgICAgICAgd2lkdGg6IHZhcigtLWlyb24taWNvbi13aWR0aCwgMjRweCk7CiAgICAgICAgaGVpZ2h0OiB2YXIoLS1pcm9uLWljb24taGVpZ2h0LCAyNHB4KTsKICAgICAgICBAYXBwbHkgLS1pcm9uLWljb247CiAgICAgIH0KCiAgICAgIDpob3N0KFtoaWRkZW5dKSB7CiAgICAgICAgZGlzcGxheTogbm9uZTsKICAgICAgfQogICAgPC9zdHlsZT4KYCxpczoiaXJvbi1pY29uIixwcm9wZXJ0aWVzOntpY29uOnt0eXBlOlN0cmluZ30sdGhlbWU6e3R5cGU6U3RyaW5nfSxzcmM6e3R5cGU6U3RyaW5nfSxfbWV0YTp7dmFsdWU6cG8uY3JlYXRlKCJpcm9uLW1ldGEiLHt0eXBlOiJpY29uc2V0In0pfX0sb2JzZXJ2ZXJzOlsiX3VwZGF0ZUljb24oX21ldGEsIGlzQXR0YWNoZWQpIiwiX3VwZGF0ZUljb24odGhlbWUsIGlzQXR0YWNoZWQpIiwiX3NyY0NoYW5nZWQoc3JjLCBpc0F0dGFjaGVkKSIsIl9pY29uQ2hhbmdlZChpY29uLCBpc0F0dGFjaGVkKSJdLF9ERUZBVUxUX0lDT05TRVQ6Imljb25zIixfaWNvbkNoYW5nZWQ6ZnVuY3Rpb24odCl7dmFyIGU9KHR8fCIiKS5zcGxpdCgiOiIpO3RoaXMuX2ljb25OYW1lPWUucG9wKCksdGhpcy5faWNvbnNldE5hbWU9ZS5wb3AoKXx8dGhpcy5fREVGQVVMVF9JQ09OU0VULHRoaXMuX3VwZGF0ZUljb24oKX0sX3NyY0NoYW5nZWQ6ZnVuY3Rpb24odCl7dGhpcy5fdXBkYXRlSWNvbigpfSxfdXNlc0ljb25zZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5pY29ufHwhdGhpcy5zcmN9LF91cGRhdGVJY29uOmZ1bmN0aW9uKCl7dGhpcy5fdXNlc0ljb25zZXQoKT8odGhpcy5faW1nJiZ0aGlzLl9pbWcucGFyZW50Tm9kZSYmcWkodGhpcy5yb290KS5yZW1vdmVDaGlsZCh0aGlzLl9pbWcpLCIiPT09dGhpcy5faWNvbk5hbWU/dGhpcy5faWNvbnNldCYmdGhpcy5faWNvbnNldC5yZW1vdmVJY29uKHRoaXMpOnRoaXMuX2ljb25zZXROYW1lJiZ0aGlzLl9tZXRhJiYodGhpcy5faWNvbnNldD10aGlzLl9tZXRhLmJ5S2V5KHRoaXMuX2ljb25zZXROYW1lKSx0aGlzLl9pY29uc2V0Pyh0aGlzLl9pY29uc2V0LmFwcGx5SWNvbih0aGlzLHRoaXMuX2ljb25OYW1lLHRoaXMudGhlbWUpLHRoaXMudW5saXN0ZW4od2luZG93LCJpcm9uLWljb25zZXQtYWRkZWQiLCJfdXBkYXRlSWNvbiIpKTp0aGlzLmxpc3Rlbih3aW5kb3csImlyb24taWNvbnNldC1hZGRlZCIsIl91cGRhdGVJY29uIikpKToodGhpcy5faWNvbnNldCYmdGhpcy5faWNvbnNldC5yZW1vdmVJY29uKHRoaXMpLHRoaXMuX2ltZ3x8KHRoaXMuX2ltZz1kb2N1bWVudC5jcmVhdGVFbGVtZW50KCJpbWciKSx0aGlzLl9pbWcuc3R5bGUud2lkdGg9IjEwMCUiLHRoaXMuX2ltZy5zdHlsZS5oZWlnaHQ9IjEwMCUiLHRoaXMuX2ltZy5kcmFnZ2FibGU9ITEpLHRoaXMuX2ltZy5zcmM9dGhpcy5zcmMscWkodGhpcy5yb290KS5hcHBlbmRDaGlsZCh0aGlzLl9pbWcpKX19KSwKLyoqCiAgICBAbGljZW5zZQogICAgQ29weXJpZ2h0IChjKSAyMDE1IFRoZSBQb2x5bWVyIFByb2plY3QgQXV0aG9ycy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAgIFRoaXMgY29kZSBtYXkgb25seSBiZSB1c2VkIHVuZGVyIHRoZSBCU0Qgc3R5bGUgbGljZW5zZSBmb3VuZCBhdAogICAgaHR0cDovL3BvbHltZXIuZ2l0aHViLmlvL0xJQ0VOU0UudHh0IFRoZSBjb21wbGV0ZSBzZXQgb2YgYXV0aG9ycyBtYXkgYmUgZm91bmQgYXQKICAgIGh0dHA6Ly9wb2x5bWVyLmdpdGh1Yi5pby9BVVRIT1JTLnR4dCBUaGUgY29tcGxldGUgc2V0IG9mIGNvbnRyaWJ1dG9ycyBtYXkgYmUKICAgIGZvdW5kIGF0IGh0dHA6Ly9wb2x5bWVyLmdpdGh1Yi5pby9DT05UUklCVVRPUlMudHh0IENvZGUgZGlzdHJpYnV0ZWQgYnkgR29vZ2xlIGFzCiAgICBwYXJ0IG9mIHRoZSBwb2x5bWVyIHByb2plY3QgaXMgYWxzbyBzdWJqZWN0IHRvIGFuIGFkZGl0aW9uYWwgSVAgcmlnaHRzIGdyYW50CiAgICBmb3VuZCBhdCBodHRwOi8vcG9seW1lci5naXRodWIuaW8vUEFURU5UUy50eHQKICAgICovCk5yKHtpczoiaXJvbi1pY29uc2V0LXN2ZyIscHJvcGVydGllczp7bmFtZTp7dHlwZTpTdHJpbmcsb2JzZXJ2ZXI6Il9uYW1lQ2hhbmdlZCJ9LHNpemU6e3R5cGU6TnVtYmVyLHZhbHVlOjI0fSxydGxNaXJyb3Jpbmc6e3R5cGU6Qm9vbGVhbix2YWx1ZTohMX0sdXNlR2xvYmFsUnRsQXR0cmlidXRlOnt0eXBlOkJvb2xlYW4sdmFsdWU6ITF9fSxjcmVhdGVkOmZ1bmN0aW9uKCl7dGhpcy5fbWV0YT1uZXcgYm8oe3R5cGU6Imljb25zZXQiLGtleTpudWxsLHZhbHVlOm51bGx9KX0sYXR0YWNoZWQ6ZnVuY3Rpb24oKXt0aGlzLnN0eWxlLmRpc3BsYXk9Im5vbmUifSxnZXRJY29uTmFtZXM6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5faWNvbnM9dGhpcy5fY3JlYXRlSWNvbk1hcCgpLE9iamVjdC5rZXlzKHRoaXMuX2ljb25zKS5tYXAoKGZ1bmN0aW9uKHQpe3JldHVybiB0aGlzLm5hbWUrIjoiK3R9KSx0aGlzKX0sYXBwbHlJY29uOmZ1bmN0aW9uKHQsZSl7dGhpcy5yZW1vdmVJY29uKHQpO3ZhciBuPXRoaXMuX2Nsb25lSWNvbihlLHRoaXMucnRsTWlycm9yaW5nJiZ0aGlzLl90YXJnZXRJc1JUTCh0KSk7aWYobil7dmFyIGk9cWkodC5yb290fHx0KTtyZXR1cm4gaS5pbnNlcnRCZWZvcmUobixpLmNoaWxkTm9kZXNbMF0pLHQuX3N2Z0ljb249bn1yZXR1cm4gbnVsbH0scmVtb3ZlSWNvbjpmdW5jdGlvbih0KXt0Ll9zdmdJY29uJiYocWkodC5yb290fHx0KS5yZW1vdmVDaGlsZCh0Ll9zdmdJY29uKSx0Ll9zdmdJY29uPW51bGwpfSxfdGFyZ2V0SXNSVEw6ZnVuY3Rpb24odCl7aWYobnVsbD09dGhpcy5fX3RhcmdldElzUlRMKWlmKHRoaXMudXNlR2xvYmFsUnRsQXR0cmlidXRlKXt2YXIgZT1kb2N1bWVudC5ib2R5JiZkb2N1bWVudC5ib2R5Lmhhc0F0dHJpYnV0ZSgiZGlyIik/ZG9jdW1lbnQuYm9keTpkb2N1bWVudC5kb2N1bWVudEVsZW1lbnQ7dGhpcy5fX3RhcmdldElzUlRMPSJydGwiPT09ZS5nZXRBdHRyaWJ1dGUoImRpciIpfWVsc2UgdCYmdC5ub2RlVHlwZSE9PU5vZGUuRUxFTUVOVF9OT0RFJiYodD10Lmhvc3QpLHRoaXMuX190YXJnZXRJc1JUTD10JiYicnRsIj09PXdpbmRvdy5nZXRDb21wdXRlZFN0eWxlKHQpLmRpcmVjdGlvbjtyZXR1cm4gdGhpcy5fX3RhcmdldElzUlRMfSxfbmFtZUNoYW5nZWQ6ZnVuY3Rpb24oKXt0aGlzLl9tZXRhLnZhbHVlPW51bGwsdGhpcy5fbWV0YS5rZXk9dGhpcy5uYW1lLHRoaXMuX21ldGEudmFsdWU9dGhpcyx0aGlzLmFzeW5jKChmdW5jdGlvbigpe3RoaXMuZmlyZSgiaXJvbi1pY29uc2V0LWFkZGVkIix0aGlzLHtub2RlOndpbmRvd30pfSkpfSxfY3JlYXRlSWNvbk1hcDpmdW5jdGlvbigpe3ZhciB0PU9iamVjdC5jcmVhdGUobnVsbCk7cmV0dXJuIHFpKHRoaXMpLnF1ZXJ5U2VsZWN0b3JBbGwoIltpZF0iKS5mb3JFYWNoKChmdW5jdGlvbihlKXt0W2UuaWRdPWV9KSksdH0sX2Nsb25lSWNvbjpmdW5jdGlvbih0LGUpe3JldHVybiB0aGlzLl9pY29ucz10aGlzLl9pY29uc3x8dGhpcy5fY3JlYXRlSWNvbk1hcCgpLHRoaXMuX3ByZXBhcmVTdmdDbG9uZSh0aGlzLl9pY29uc1t0XSx0aGlzLnNpemUsZSl9LF9wcmVwYXJlU3ZnQ2xvbmU6ZnVuY3Rpb24odCxlLG4pe2lmKHQpe3ZhciBpPXQuY2xvbmVOb2RlKCEwKSxyPWRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciLCJzdmciKSxvPWkuZ2V0QXR0cmlidXRlKCJ2aWV3Qm94Iil8fCIwIDAgIitlKyIgIitlLGE9InBvaW50ZXItZXZlbnRzOiBub25lOyBkaXNwbGF5OiBibG9jazsgd2lkdGg6IDEwMCU7IGhlaWdodDogMTAwJTsiO3JldHVybiBuJiZpLmhhc0F0dHJpYnV0ZSgibWlycm9yLWluLXJ0bCIpJiYoYSs9Ii13ZWJraXQtdHJhbnNmb3JtOnNjYWxlKC0xLDEpO3RyYW5zZm9ybTpzY2FsZSgtMSwxKTt0cmFuc2Zvcm0tb3JpZ2luOmNlbnRlcjsiKSxyLnNldEF0dHJpYnV0ZSgidmlld0JveCIsbyksci5zZXRBdHRyaWJ1dGUoInByZXNlcnZlQXNwZWN0UmF0aW8iLCJ4TWlkWU1pZCBtZWV0Iiksci5zZXRBdHRyaWJ1dGUoImZvY3VzYWJsZSIsImZhbHNlIiksci5zdHlsZS5jc3NUZXh0PWEsci5hcHBlbmRDaGlsZChpKS5yZW1vdmVBdHRyaWJ1dGUoImlkIikscn1yZXR1cm4gbnVsbH19KTsKLyoqCiAgICBAbGljZW5zZQogICAgQ29weXJpZ2h0IChjKSAyMDE0IFRoZSBQb2x5bWVyIFByb2plY3QgQXV0aG9ycy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAgIFRoaXMgY29kZSBtYXkgb25seSBiZSB1c2VkIHVuZGVyIHRoZSBCU0Qgc3R5bGUgbGljZW5zZSBmb3VuZCBhdAogICAgaHR0cDovL3BvbHltZXIuZ2l0aHViLmlvL0xJQ0VOU0UudHh0IFRoZSBjb21wbGV0ZSBzZXQgb2YgYXV0aG9ycyBtYXkgYmUgZm91bmQgYXQKICAgIGh0dHA6Ly9wb2x5bWVyLmdpdGh1Yi5pby9BVVRIT1JTLnR4dCBUaGUgY29tcGxldGUgc2V0IG9mIGNvbnRyaWJ1dG9ycyBtYXkgYmUKICAgIGZvdW5kIGF0IGh0dHA6Ly9wb2x5bWVyLmdpdGh1Yi5pby9DT05UUklCVVRPUlMudHh0IENvZGUgZGlzdHJpYnV0ZWQgYnkgR29vZ2xlIGFzCiAgICBwYXJ0IG9mIHRoZSBwb2x5bWVyIHByb2plY3QgaXMgYWxzbyBzdWJqZWN0IHRvIGFuIGFkZGl0aW9uYWwgSVAgcmlnaHRzIGdyYW50CiAgICBmb3VuZCBhdCBodHRwOi8vcG9seW1lci5naXRodWIuaW8vUEFURU5UUy50eHQKICAgICovCmNvbnN0IHdvPV9lYDxpcm9uLWljb25zZXQtc3ZnIG5hbWU9ImltYWdlIiBzaXplPSIyNCI+Cjxzdmc+PGRlZnM+CjxnIGlkPSJhZGQtYS1waG90byI+PHBhdGggZD0iTTMgNFYxaDJ2M2gzdjJINXYzSDNWNkgwVjRoM3ptMyA2VjdoM1Y0aDdsMS44MyAySDIxYzEuMSAwIDIgLjkgMiAydjEyYzAgMS4xLS45IDItMiAySDVjLTEuMSAwLTItLjktMi0yVjEwaDN6bTcgOWMyLjc2IDAgNS0yLjI0IDUtNXMtMi4yNC01LTUtNS01IDIuMjQtNSA1IDIuMjQgNSA1IDV6bS0zLjItNWMwIDEuNzcgMS40MyAzLjIgMy4yIDMuMnMzLjItMS40MyAzLjItMy4yLTEuNDMtMy4yLTMuMi0zLjItMy4yIDEuNDMtMy4yIDMuMnoiPjwvcGF0aD48L2c+CjxnIGlkPSJhZGQtdG8tcGhvdG9zIj48cGF0aCBkPSJNNCA2SDJ2MTRjMCAxLjEuOSAyIDIgMmgxNHYtMkg0VjZ6bTE2LTRIOGMtMS4xIDAtMiAuOS0yIDJ2MTJjMCAxLjEuOSAyIDIgMmgxMmMxLjEgMCAyLS45IDItMlY0YzAtMS4xLS45LTItMi0yem0tMSA5aC00djRoLTJ2LTRIOVY5aDRWNWgydjRoNHYyeiI+PC9wYXRoPjwvZz4KPGcgaWQ9ImFkanVzdCI+PHBhdGggZD0iTTEyIDJDNi40OSAyIDIgNi40OSAyIDEyczQuNDkgMTAgMTAgMTAgMTAtNC40OSAxMC0xMFMxNy41MSAyIDEyIDJ6bTAgMThjLTQuNDEgMC04LTMuNTktOC04czMuNTktOCA4LTggOCAzLjU5IDggOC0zLjU5IDgtOCA4em0zLThjMCAxLjY2LTEuMzQgMy0zIDNzLTMtMS4zNC0zLTMgMS4zNC0zIDMtMyAzIDEuMzQgMyAzeiI+PC9wYXRoPjwvZz4KPGcgaWQ9ImFzc2lzdGFudCI+PHBhdGggZD0iTTE5IDJINWMtMS4xIDAtMiAuOS0yIDJ2MTRjMCAxLjEuOSAyIDIgMmg0bDMgMyAzLTNoNGMxLjEgMCAyLS45IDItMlY0YzAtMS4xLS45LTItMi0yem0tNS4xMiAxMC44OEwxMiAxN2wtMS44OC00LjEyTDYgMTFsNC4xMi0xLjg4TDEyIDVsMS44OCA0LjEyTDE4IDExbC00LjEyIDEuODh6Ij48L3BhdGg+PC9nPgo8ZyBpZD0iYXNzaXN0YW50LXBob3RvIj48cGF0aCBkPSJNMTQuNCA2TDE0IDRINXYxN2gydi03aDUuNmwuNCAyaDdWNnoiPjwvcGF0aD48L2c+CjxnIGlkPSJhdWRpb3RyYWNrIj48cGF0aCBkPSJNMTIgM3Y5LjI4Yy0uNDctLjE3LS45Ny0uMjgtMS41LS4yOEM4LjAxIDEyIDYgMTQuMDEgNiAxNi41UzguMDEgMjEgMTAuNSAyMWMyLjMxIDAgNC4yLTEuNzUgNC40NS00SDE1VjZoNFYzaC03eiI+PC9wYXRoPjwvZz4KPGcgaWQ9ImJsdXItY2lyY3VsYXIiPjxwYXRoIGQ9Ik0xMCA5Yy0uNTUgMC0xIC40NS0xIDFzLjQ1IDEgMSAxIDEtLjQ1IDEtMS0uNDUtMS0xLTF6bTAgNGMtLjU1IDAtMSAuNDUtMSAxcy40NSAxIDEgMSAxLS40NSAxLTEtLjQ1LTEtMS0xek03IDkuNWMtLjI4IDAtLjUuMjItLjUuNXMuMjIuNS41LjUuNS0uMjIuNS0uNS0uMjItLjUtLjUtLjV6bTMgN2MtLjI4IDAtLjUuMjItLjUuNXMuMjIuNS41LjUuNS0uMjIuNS0uNS0uMjItLjUtLjUtLjV6bS0zLTNjLS4yOCAwLS41LjIyLS41LjVzLjIyLjUuNS41LjUtLjIyLjUtLjUtLjIyLS41LS41LS41em0zLTZjLjI4IDAgLjUtLjIyLjUtLjVzLS4yMi0uNS0uNS0uNS0uNS4yMi0uNS41LjIyLjUuNS41ek0xNCA5Yy0uNTUgMC0xIC40NS0xIDFzLjQ1IDEgMSAxIDEtLjQ1IDEtMS0uNDUtMS0xLTF6bTAtMS41Yy4yOCAwIC41LS4yMi41LS41cy0uMjItLjUtLjUtLjUtLjUuMjItLjUuNS4yMi41LjUuNXptMyA2Yy0uMjggMC0uNS4yMi0uNS41cy4yMi41LjUuNS41LS4yMi41LS41LS4yMi0uNS0uNS0uNXptMC00Yy0uMjggMC0uNS4yMi0uNS41cy4yMi41LjUuNS41LS4yMi41LS41LS4yMi0uNS0uNS0uNXpNMTIgMkM2LjQ4IDIgMiA2LjQ4IDIgMTJzNC40OCAxMCAxMCAxMCAxMC00LjQ4IDEwLTEwUzE3LjUyIDIgMTIgMnptMCAxOGMtNC40MiAwLTgtMy41OC04LThzMy41OC04IDgtOCA4IDMuNTggOCA4LTMuNTggOC04IDh6bTItMy41Yy0uMjggMC0uNS4yMi0uNS41cy4yMi41LjUuNS41LS4yMi41LS41LS4yMi0uNS0uNS0uNXptMC0zLjVjLS41NSAwLTEgLjQ1LTEgMXMuNDUgMSAxIDEgMS0uNDUgMS0xLS40NS0xLTEtMXoiPjwvcGF0aD48L2c+CjxnIGlkPSJibHVyLWxpbmVhciI+PHBhdGggZD0iTTUgMTcuNWMuODMgMCAxLjUtLjY3IDEuNS0xLjVzLS42Ny0xLjUtMS41LTEuNS0xLjUuNjctMS41IDEuNS42NyAxLjUgMS41IDEuNXpNOSAxM2MuNTUgMCAxLS40NSAxLTFzLS40NS0xLTEtMS0xIC40NS0xIDEgLjQ1IDEgMSAxem0wLTRjLjU1IDAgMS0uNDUgMS0xcy0uNDUtMS0xLTEtMSAuNDUtMSAxIC40NSAxIDEgMXpNMyAyMWgxOHYtMkgzdjJ6TTUgOS41Yy44MyAwIDEuNS0uNjcgMS41LTEuNVM1LjgzIDYuNSA1IDYuNSAzLjUgNy4xNyAzLjUgOCA0LjE3IDkuNSA1IDkuNXptMCA0Yy44MyAwIDEuNS0uNjcgMS41LTEuNXMtLjY3LTEuNS0xLjUtMS41LTEuNS42Ny0xLjUgMS41LjY3IDEuNSAxLjUgMS41ek05IDE3Yy41NSAwIDEtLjQ1IDEtMXMtLjQ1LTEtMS0xLTEgLjQ1LTEgMSAuNDUgMSAxIDF6bTgtLjVjLjI4IDAgLjUtLjIyLjUtLjVzLS4yMi0uNS0uNS0uNS0uNS4yMi0uNS41LjIyLjUuNS41ek0zIDN2MmgxOFYzSDN6bTE0IDUuNWMuMjggMCAuNS0uMjIuNS0uNXMtLjIyLS41LS41LS41LS41LjIyLS41LjUuMjIuNS41LjV6bTAgNGMuMjggMCAuNS0uMjIuNS0uNXMtLjIyLS41LS41LS41LS41LjIyLS41LjUuMjIuNS41LjV6TTEzIDljLjU1IDAgMS0uNDUgMS0xcy0uNDUtMS0xLTEtMSAuNDUtMSAxIC40NSAxIDEgMXptMCA0Yy41NSAwIDEtLjQ1IDEtMXMtLjQ1LTEtMS0xLTEgLjQ1LTEgMSAuNDUgMSAxIDF6bTAgNGMuNTUgMCAxLS40NSAxLTFzLS40NS0xLTEtMS0xIC40NS0xIDEgLjQ1IDEgMSAxeiI+PC9wYXRoPjwvZz4KPGcgaWQ9ImJsdXItb2ZmIj48cGF0aCBkPSJNMTQgN2MuNTUgMCAxLS40NSAxLTFzLS40NS0xLTEtMS0xIC40NS0xIDEgLjQ1IDEgMSAxem0tLjIgNC40OGwuMi4wMmMuODMgMCAxLjUtLjY3IDEuNS0xLjVzLS42Ny0xLjUtMS41LTEuNS0xLjUuNjctMS41IDEuNWwuMDIuMmMuMDkuNjcuNjEgMS4xOSAxLjI4IDEuMjh6TTE0IDMuNWMuMjggMCAuNS0uMjIuNS0uNXMtLjIyLS41LS41LS41LS41LjIyLS41LjUuMjIuNS41LjV6bS00IDBjLjI4IDAgLjUtLjIyLjUtLjVzLS4yMi0uNS0uNS0uNS0uNS4yMi0uNS41LjIyLjUuNS41em0xMSA3Yy4yOCAwIC41LS4yMi41LS41cy0uMjItLjUtLjUtLjUtLjUuMjItLjUuNS4yMi41LjUuNXpNMTAgN2MuNTUgMCAxLS40NSAxLTFzLS40NS0xLTEtMS0xIC40NS0xIDEgLjQ1IDEgMSAxem04IDhjLjU1IDAgMS0uNDUgMS0xcy0uNDUtMS0xLTEtMSAuNDUtMSAxIC40NSAxIDEgMXptMC00Yy41NSAwIDEtLjQ1IDEtMXMtLjQ1LTEtMS0xLTEgLjQ1LTEgMSAuNDUgMSAxIDF6bTAtNGMuNTUgMCAxLS40NSAxLTFzLS40NS0xLTEtMS0xIC40NS0xIDEgLjQ1IDEgMSAxem0tNCAxMy41Yy0uMjggMC0uNS4yMi0uNS41cy4yMi41LjUuNS41LS4yMi41LS41LS4yMi0uNS0uNS0uNXpNMi41IDUuMjdsMy43OCAzLjc4TDYgOWMtLjU1IDAtMSAuNDUtMSAxcy40NSAxIDEgMSAxLS40NSAxLTFjMC0uMS0uMDMtLjE5LS4wNi0uMjhsMi44MSAyLjgxYy0uNzEuMTEtMS4yNS43My0xLjI1IDEuNDcgMCAuODMuNjcgMS41IDEuNSAxLjUuNzQgMCAxLjM2LS41NCAxLjQ3LTEuMjVsMi44MSAyLjgxYy0uMDktLjAzLS4xOC0uMDYtLjI4LS4wNi0uNTUgMC0xIC40NS0xIDFzLjQ1IDEgMSAxIDEtLjQ1IDEtMWMwLS4xLS4wMy0uMTktLjA2LS4yOGwzLjc4IDMuNzhMMjAgMjAuMjMgMy43NyA0IDIuNSA1LjI3ek0xMCAxN2MtLjU1IDAtMSAuNDUtMSAxcy40NSAxIDEgMSAxLS40NSAxLTEtLjQ1LTEtMS0xem0xMS0zLjVjLS4yOCAwLS41LjIyLS41LjVzLjIyLjUuNS41LjUtLjIyLjUtLjUtLjIyLS41LS41LS41ek02IDEzYy0uNTUgMC0xIC40NS0xIDFzLjQ1IDEgMSAxIDEtLjQ1IDEtMS0uNDUtMS0xLTF6TTMgOS41Yy0uMjggMC0uNS4yMi0uNS41cy4yMi41LjUuNS41LS4yMi41LS41LS4yMi0uNS0uNS0uNXptNyAxMWMtLjI4IDAtLjUuMjItLjUuNXMuMjIuNS41LjUuNS0uMjIuNS0uNS0uMjItLjUtLjUtLjV6TTYgMTdjLS41NSAwLTEgLjQ1LTEgMXMuNDUgMSAxIDEgMS0uNDUgMS0xLS40NS0xLTEtMXptLTMtMy41Yy0uMjggMC0uNS4yMi0uNS41cy4yMi41LjUuNS41LS4yMi41LS41LS4yMi0uNS0uNS0uNXoiPjwvcGF0aD48L2c+CjxnIGlkPSJibHVyLW9uIj48cGF0aCBkPSJNNiAxM2MtLjU1IDAtMSAuNDUtMSAxcy40NSAxIDEgMSAxLS40NSAxLTEtLjQ1LTEtMS0xem0wIDRjLS41NSAwLTEgLjQ1LTEgMXMuNDUgMSAxIDEgMS0uNDUgMS0xLS40NS0xLTEtMXptMC04Yy0uNTUgMC0xIC40NS0xIDFzLjQ1IDEgMSAxIDEtLjQ1IDEtMS0uNDUtMS0xLTF6bS0zIC41Yy0uMjggMC0uNS4yMi0uNS41cy4yMi41LjUuNS41LS4yMi41LS41LS4yMi0uNS0uNS0uNXpNNiA1Yy0uNTUgMC0xIC40NS0xIDFzLjQ1IDEgMSAxIDEtLjQ1IDEtMS0uNDUtMS0xLTF6bTE1IDUuNWMuMjggMCAuNS0uMjIuNS0uNXMtLjIyLS41LS41LS41LS41LjIyLS41LjUuMjIuNS41LjV6TTE0IDdjLjU1IDAgMS0uNDUgMS0xcy0uNDUtMS0xLTEtMSAuNDUtMSAxIC40NSAxIDEgMXptMC0zLjVjLjI4IDAgLjUtLjIyLjUtLjVzLS4yMi0uNS0uNS0uNS0uNS4yMi0uNS41LjIyLjUuNS41em0tMTEgMTBjLS4yOCAwLS41LjIyLS41LjVzLjIyLjUuNS41LjUtLjIyLjUtLjUtLjIyLS41LS41LS41em03IDdjLS4yOCAwLS41LjIyLS41LjVzLjIyLjUuNS41LjUtLjIyLjUtLjUtLjIyLS41LS41LS41em0wLTE3Yy4yOCAwIC41LS4yMi41LS41cy0uMjItLjUtLjUtLjUtLjUuMjItLjUuNS4yMi41LjUuNXpNMTAgN2MuNTUgMCAxLS40NSAxLTFzLS40NS0xLTEtMS0xIC40NS0xIDEgLjQ1IDEgMSAxem0wIDUuNWMtLjgzIDAtMS41LjY3LTEuNSAxLjVzLjY3IDEuNSAxLjUgMS41IDEuNS0uNjcgMS41LTEuNS0uNjctMS41LTEuNS0xLjV6bTggLjVjLS41NSAwLTEgLjQ1LTEgMXMuNDUgMSAxIDEgMS0uNDUgMS0xLS40NS0xLTEtMXptMCA0Yy0uNTUgMC0xIC40NS0xIDFzLjQ1IDEgMSAxIDEtLjQ1IDEtMS0uNDUtMS0xLTF6bTAtOGMtLjU1IDAtMSAuNDUtMSAxcy40NSAxIDEgMSAxLS40NSAxLTEtLjQ1LTEtMS0xem0wLTRjLS41NSAwLTEgLjQ1LTEgMXMuNDUgMSAxIDEgMS0uNDUgMS0xLS40NS0xLTEtMXptMyA4LjVjLS4yOCAwLS41LjIyLS41LjVzLjIyLjUuNS41LjUtLjIyLjUtLjUtLjIyLS41LS41LS41ek0xNCAxN2MtLjU1IDAtMSAuNDUtMSAxcy40NSAxIDEgMSAxLS40NSAxLTEtLjQ1LTEtMS0xem0wIDMuNWMtLjI4IDAtLjUuMjItLjUuNXMuMjIuNS41LjUuNS0uMjIuNS0uNS0uMjItLjUtLjUtLjV6bS00LTEyYy0uODMgMC0xLjUuNjctMS41IDEuNXMuNjcgMS41IDEuNSAxLjUgMS41LS42NyAxLjUtMS41LS42Ny0xLjUtMS41LTEuNXptMCA4LjVjLS41NSAwLTEgLjQ1LTEgMXMuNDUgMSAxIDEgMS0uNDUgMS0xLS40NS0xLTEtMXptNC00LjVjLS44MyAwLTEuNS42Ny0xLjUgMS41cy42NyAxLjUgMS41IDEuNSAxLjUtLjY3IDEuNS0xLjUtLjY3LTEuNS0xLjUtMS41em0wLTRjLS44MyAwLTEuNS42Ny0xLjUgMS41cy42NyAxLjUgMS41IDEuNSAxLjUtLjY3IDEuNS0xLjUtLjY3LTEuNS0xLjUtMS41eiI+PC9wYXRoPjwvZz4KPGcgaWQ9ImJyaWdodG5lc3MtMSI+PGNpcmNsZSBjeD0iMTIiIGN5PSIxMiIgcj0iMTAiPjwvY2lyY2xlPjwvZz4KPGcgaWQ9ImJyaWdodG5lc3MtMiI+PHBhdGggZD0iTTEwIDJjLTEuODIgMC0zLjUzLjUtNSAxLjM1QzcuOTkgNS4wOCAxMCA4LjMgMTAgMTJzLTIuMDEgNi45Mi01IDguNjVDNi40NyAyMS41IDguMTggMjIgMTAgMjJjNS41MiAwIDEwLTQuNDggMTAtMTBTMTUuNTIgMiAxMCAyeiI+PC9wYXRoPjwvZz4KPGcgaWQ9ImJyaWdodG5lc3MtMyI+PHBhdGggZD0iTTkgMmMtMS4wNSAwLTIuMDUuMTYtMyAuNDYgNC4wNiAxLjI3IDcgNS4wNiA3IDkuNTQgMCA0LjQ4LTIuOTQgOC4yNy03IDkuNTQuOTUuMyAxLjk1LjQ2IDMgLjQ2IDUuNTIgMCAxMC00LjQ4IDEwLTEwUzE0LjUyIDIgOSAyeiI+PC9wYXRoPjwvZz4KPGcgaWQ9ImJyaWdodG5lc3MtNCI+PHBhdGggZD0iTTIwIDguNjlWNGgtNC42OUwxMiAuNjkgOC42OSA0SDR2NC42OUwuNjkgMTIgNCAxNS4zMVYyMGg0LjY5TDEyIDIzLjMxIDE1LjMxIDIwSDIwdi00LjY5TDIzLjMxIDEyIDIwIDguNjl6TTEyIDE4Yy0uODkgMC0xLjc0LS4yLTIuNS0uNTVDMTEuNTYgMTYuNSAxMyAxNC40MiAxMyAxMnMtMS40NC00LjUtMy41LTUuNDVDMTAuMjYgNi4yIDExLjExIDYgMTIgNmMzLjMxIDAgNiAyLjY5IDYgNnMtMi42OSA2LTYgNnoiPjwvcGF0aD48L2c+CjxnIGlkPSJicmlnaHRuZXNzLTUiPjxwYXRoIGQ9Ik0yMCAxNS4zMUwyMy4zMSAxMiAyMCA4LjY5VjRoLTQuNjlMMTIgLjY5IDguNjkgNEg0djQuNjlMLjY5IDEyIDQgMTUuMzFWMjBoNC42OUwxMiAyMy4zMSAxNS4zMSAyMEgyMHYtNC42OXpNMTIgMThjLTMuMzEgMC02LTIuNjktNi02czIuNjktNiA2LTYgNiAyLjY5IDYgNi0yLjY5IDYtNiA2eiI+PC9wYXRoPjwvZz4KPGcgaWQ9ImJyaWdodG5lc3MtNiI+PHBhdGggZD0iTTIwIDE1LjMxTDIzLjMxIDEyIDIwIDguNjlWNGgtNC42OUwxMiAuNjkgOC42OSA0SDR2NC42OUwuNjkgMTIgNCAxNS4zMVYyMGg0LjY5TDEyIDIzLjMxIDE1LjMxIDIwSDIwdi00LjY5ek0xMiAxOFY2YzMuMzEgMCA2IDIuNjkgNiA2cy0yLjY5IDYtNiA2eiI+PC9wYXRoPjwvZz4KPGcgaWQ9ImJyaWdodG5lc3MtNyI+PHBhdGggZD0iTTIwIDguNjlWNGgtNC42OUwxMiAuNjkgOC42OSA0SDR2NC42OUwuNjkgMTIgNCAxNS4zMVYyMGg0LjY5TDEyIDIzLjMxIDE1LjMxIDIwSDIwdi00LjY5TDIzLjMxIDEyIDIwIDguNjl6TTEyIDE4Yy0zLjMxIDAtNi0yLjY5LTYtNnMyLjY5LTYgNi02IDYgMi42OSA2IDYtMi42OSA2LTYgNnptMC0xMGMtMi4yMSAwLTQgMS43OS00IDRzMS43OSA0IDQgNCA0LTEuNzkgNC00LTEuNzktNC00LTR6Ij48L3BhdGg+PC9nPgo8ZyBpZD0iYnJva2VuLWltYWdlIj48cGF0aCBkPSJNMjEgNXY2LjU5bC0zLTMuMDEtNCA0LjAxLTQtNC00IDQtMy0zLjAxVjVjMC0xLjEuOS0yIDItMmgxNGMxLjEgMCAyIC45IDIgMnptLTMgNi40MmwzIDMuMDFWMTljMCAxLjEtLjkgMi0yIDJINWMtMS4xIDAtMi0uOS0yLTJ2LTYuNThsMyAyLjk5IDQtNCA0IDQgNC0zLjk5eiI+PC9wYXRoPjwvZz4KPGcgaWQ9ImJydXNoIj48cGF0aCBkPSJNNyAxNGMtMS42NiAwLTMgMS4zNC0zIDMgMCAxLjMxLTEuMTYgMi0yIDIgLjkyIDEuMjIgMi40OSAyIDQgMiAyLjIxIDAgNC0xLjc5IDQtNCAwLTEuNjYtMS4zNC0zLTMtM3ptMTMuNzEtOS4zN2wtMS4zNC0xLjM0Yy0uMzktLjM5LTEuMDItLjM5LTEuNDEgMEw5IDEyLjI1IDExLjc1IDE1bDguOTYtOC45NmMuMzktLjM5LjM5LTEuMDIgMC0xLjQxeiI+PC9wYXRoPjwvZz4KPGcgaWQ9ImJ1cnN0LW1vZGUiPjxwYXRoIGQ9Ik0xIDVoMnYxNEgxem00IDBoMnYxNEg1em0xNyAwSDEwYy0uNTUgMC0xIC40NS0xIDF2MTJjMCAuNTUuNDUgMSAxIDFoMTJjLjU1IDAgMS0uNDUgMS0xVjZjMC0uNTUtLjQ1LTEtMS0xek0xMSAxN2wyLjUtMy4xNUwxNS4yOSAxNmwyLjUtMy4yMkwyMSAxN0gxMXoiPjwvcGF0aD48L2c+CjxnIGlkPSJjYW1lcmEiPjxwYXRoIGQ9Ik05LjQgMTAuNWw0Ljc3LTguMjZDMTMuNDcgMi4wOSAxMi43NSAyIDEyIDJjLTIuNCAwLTQuNi44NS02LjMyIDIuMjVsMy42NiA2LjM1LjA2LS4xek0yMS41NCA5Yy0uOTItMi45Mi0zLjE1LTUuMjYtNi02LjM0TDExLjg4IDloOS42NnptLjI2IDFoLTcuNDlsLjI5LjUgNC43NiA4LjI1QzIxIDE2Ljk3IDIyIDE0LjYxIDIyIDEyYzAtLjY5LS4wNy0xLjM1LS4yLTJ6TTguNTQgMTJsLTMuOS02Ljc1QzMuMDEgNy4wMyAyIDkuMzkgMiAxMmMwIC42OS4wNyAxLjM1LjIgMmg3LjQ5bC0xLjE1LTJ6bS02LjA4IDNjLjkyIDIuOTIgMy4xNSA1LjI2IDYgNi4zNEwxMi4xMiAxNUgyLjQ2em0xMS4yNyAwbC0zLjkgNi43NmMuNy4xNSAxLjQyLjI0IDIuMTcuMjQgMi40IDAgNC42LS44NSA2LjMyLTIuMjVsLTMuNjYtNi4zNS0uOTMgMS42eiI+PC9wYXRoPjwvZz4KPGcgaWQ9ImNhbWVyYS1hbHQiPjxjaXJjbGUgY3g9IjEyIiBjeT0iMTIiIHI9IjMuMiI+PC9jaXJjbGU+PHBhdGggZD0iTTkgMkw3LjE3IDRINGMtMS4xIDAtMiAuOS0yIDJ2MTJjMCAxLjEuOSAyIDIgMmgxNmMxLjEgMCAyLS45IDItMlY2YzAtMS4xLS45LTItMi0yaC0zLjE3TDE1IDJIOXptMyAxNWMtMi43NiAwLTUtMi4yNC01LTVzMi4yNC01IDUtNSA1IDIuMjQgNSA1LTIuMjQgNS01IDV6Ij48L3BhdGg+PC9nPgo8ZyBpZD0iY2FtZXJhLWZyb250Ij48cGF0aCBkPSJNMTAgMjBINXYyaDV2MmwzLTMtMy0zdjJ6bTQgMHYyaDV2LTJoLTV6TTEyIDhjMS4xIDAgMi0uOSAyLTJzLS45LTItMi0yLTEuOTkuOS0xLjk5IDJTMTAuOSA4IDEyIDh6bTUtOEg3QzUuOSAwIDUgLjkgNSAydjE0YzAgMS4xLjkgMiAyIDJoMTBjMS4xIDAgMi0uOSAyLTJWMmMwLTEuMS0uOS0yLTItMnpNNyAyaDEwdjEwLjVjMC0xLjY3LTMuMzMtMi41LTUtMi41cy01IC44My01IDIuNVYyeiI+PC9wYXRoPjwvZz4KPGcgaWQ9ImNhbWVyYS1yZWFyIj48cGF0aCBkPSJNMTAgMjBINXYyaDV2MmwzLTMtMy0zdjJ6bTQgMHYyaDV2LTJoLTV6bTMtMjBIN0M1LjkgMCA1IC45IDUgMnYxNGMwIDEuMS45IDIgMiAyaDEwYzEuMSAwIDItLjkgMi0yVjJjMC0xLjEtLjktMi0yLTJ6bS01IDZjLTEuMTEgMC0yLS45LTItMnMuODktMiAxLjk5LTIgMiAuOSAyIDJDMTQgNS4xIDEzLjEgNiAxMiA2eiI+PC9wYXRoPjwvZz4KPGcgaWQ9ImNhbWVyYS1yb2xsIj48cGF0aCBkPSJNMTQgNWMwLTEuMS0uOS0yLTItMmgtMVYyYzAtLjU1LS40NS0xLTEtMUg2Yy0uNTUgMC0xIC40NS0xIDF2MUg0Yy0xLjEgMC0yIC45LTIgMnYxNWMwIDEuMS45IDIgMiAyaDhjMS4xIDAgMi0uOSAyLTJoOFY1aC04em0tMiAxM2gtMnYtMmgydjJ6bTAtOWgtMlY3aDJ2MnptNCA5aC0ydi0yaDJ2MnptMC05aC0yVjdoMnYyem00IDloLTJ2LTJoMnYyem0wLTloLTJWN2gydjJ6Ij48L3BhdGg+PC9nPgo8ZyBpZD0iY2VudGVyLWZvY3VzLXN0cm9uZyI+PHBhdGggZD0iTTEyIDhjLTIuMjEgMC00IDEuNzktNCA0czEuNzkgNCA0IDQgNC0xLjc5IDQtNC0xLjc5LTQtNC00em0tNyA3SDN2NGMwIDEuMS45IDIgMiAyaDR2LTJINXYtNHpNNSA1aDRWM0g1Yy0xLjEgMC0yIC45LTIgMnY0aDJWNXptMTQtMmgtNHYyaDR2NGgyVjVjMC0xLjEtLjktMi0yLTJ6bTAgMTZoLTR2Mmg0YzEuMSAwIDItLjkgMi0ydi00aC0ydjR6Ij48L3BhdGg+PC9nPgo8ZyBpZD0iY2VudGVyLWZvY3VzLXdlYWsiPjxwYXRoIGQ9Ik01IDE1SDN2NGMwIDEuMS45IDIgMiAyaDR2LTJINXYtNHpNNSA1aDRWM0g1Yy0xLjEgMC0yIC45LTIgMnY0aDJWNXptMTQtMmgtNHYyaDR2NGgyVjVjMC0xLjEtLjktMi0yLTJ6bTAgMTZoLTR2Mmg0YzEuMSAwIDItLjkgMi0ydi00aC0ydjR6TTEyIDhjLTIuMjEgMC00IDEuNzktNCA0czEuNzkgNCA0IDQgNC0xLjc5IDQtNC0xLjc5LTQtNC00em0wIDZjLTEuMSAwLTItLjktMi0ycy45LTIgMi0yIDIgLjkgMiAyLS45IDItMiAyeiI+PC9wYXRoPjwvZz4KPGcgaWQ9ImNvbGxlY3Rpb25zIj48cGF0aCBkPSJNMjIgMTZWNGMwLTEuMS0uOS0yLTItMkg4Yy0xLjEgMC0yIC45LTIgMnYxMmMwIDEuMS45IDIgMiAyaDEyYzEuMSAwIDItLjkgMi0yem0tMTEtNGwyLjAzIDIuNzFMMTYgMTFsNCA1SDhsMy00ek0yIDZ2MTRjMCAxLjEuOSAyIDIgMmgxNHYtMkg0VjZIMnoiPjwvcGF0aD48L2c+CjxnIGlkPSJjb2xsZWN0aW9ucy1ib29rbWFyayI+PHBhdGggZD0iTTQgNkgydjE0YzAgMS4xLjkgMiAyIDJoMTR2LTJINFY2em0xNi00SDhjLTEuMSAwLTIgLjktMiAydjEyYzAgMS4xLjkgMiAyIDJoMTJjMS4xIDAgMi0uOSAyLTJWNGMwLTEuMS0uOS0yLTItMnptMCAxMGwtMi41LTEuNUwxNSAxMlY0aDV2OHoiPjwvcGF0aD48L2c+CjxnIGlkPSJjb2xvci1sZW5zIj48cGF0aCBkPSJNMTIgM2MtNC45NyAwLTkgNC4wMy05IDlzNC4wMyA5IDkgOWMuODMgMCAxLjUtLjY3IDEuNS0xLjUgMC0uMzktLjE1LS43NC0uMzktMS4wMS0uMjMtLjI2LS4zOC0uNjEtLjM4LS45OSAwLS44My42Ny0xLjUgMS41LTEuNUgxNmMyLjc2IDAgNS0yLjI0IDUtNSAwLTQuNDItNC4wMy04LTktOHptLTUuNSA5Yy0uODMgMC0xLjUtLjY3LTEuNS0xLjVTNS42NyA5IDYuNSA5IDggOS42NyA4IDEwLjUgNy4zMyAxMiA2LjUgMTJ6bTMtNEM4LjY3IDggOCA3LjMzIDggNi41UzguNjcgNSA5LjUgNXMxLjUuNjcgMS41IDEuNVMxMC4zMyA4IDkuNSA4em01IDBjLS44MyAwLTEuNS0uNjctMS41LTEuNVMxMy42NyA1IDE0LjUgNXMxLjUuNjcgMS41IDEuNVMxNS4zMyA4IDE0LjUgOHptMyA0Yy0uODMgMC0xLjUtLjY3LTEuNS0xLjVTMTYuNjcgOSAxNy41IDlzMS41LjY3IDEuNSAxLjUtLjY3IDEuNS0xLjUgMS41eiI+PC9wYXRoPjwvZz4KPGcgaWQ9ImNvbG9yaXplIj48cGF0aCBkPSJNMjAuNzEgNS42M2wtMi4zNC0yLjM0Yy0uMzktLjM5LTEuMDItLjM5LTEuNDEgMGwtMy4xMiAzLjEyLTEuOTMtMS45MS0xLjQxIDEuNDEgMS40MiAxLjQyTDMgMTYuMjVWMjFoNC43NWw4LjkyLTguOTIgMS40MiAxLjQyIDEuNDEtMS40MS0xLjkyLTEuOTIgMy4xMi0zLjEyYy40LS40LjQtMS4wMy4wMS0xLjQyek02LjkyIDE5TDUgMTcuMDhsOC4wNi04LjA2IDEuOTIgMS45Mkw2LjkyIDE5eiI+PC9wYXRoPjwvZz4KPGcgaWQ9ImNvbXBhcmUiPjxwYXRoIGQ9Ik0xMCAzSDVjLTEuMSAwLTIgLjktMiAydjE0YzAgMS4xLjkgMiAyIDJoNXYyaDJWMWgtMnYyem0wIDE1SDVsNS02djZ6bTktMTVoLTV2Mmg1djEzbC01LTZ2OWg1YzEuMSAwIDItLjkgMi0yVjVjMC0xLjEtLjktMi0yLTJ6Ij48L3BhdGg+PC9nPgo8ZyBpZD0iY29udHJvbC1wb2ludCI+PHBhdGggZD0iTTEzIDdoLTJ2NEg3djJoNHY0aDJ2LTRoNHYtMmgtNFY3em0tMS01QzYuNDkgMiAyIDYuNDkgMiAxMnM0LjQ5IDEwIDEwIDEwIDEwLTQuNDkgMTAtMTBTMTcuNTEgMiAxMiAyem0wIDE4Yy00LjQxIDAtOC0zLjU5LTgtOHMzLjU5LTggOC04IDggMy41OSA4IDgtMy41OSA4LTggOHoiPjwvcGF0aD48L2c+CjxnIGlkPSJjb250cm9sLXBvaW50LWR1cGxpY2F0ZSI+PHBhdGggZD0iTTE2IDhoLTJ2M2gtM3YyaDN2M2gydi0zaDN2LTJoLTN6TTIgMTJjMC0yLjc5IDEuNjQtNS4yIDQuMDEtNi4zMlYzLjUyQzIuNTIgNC43NiAwIDguMDkgMCAxMnMyLjUyIDcuMjQgNi4wMSA4LjQ4di0yLjE2QzMuNjQgMTcuMiAyIDE0Ljc5IDIgMTJ6bTEzLTljLTQuOTYgMC05IDQuMDQtOSA5czQuMDQgOSA5IDkgOS00LjA0IDktOS00LjA0LTktOS05em0wIDE2Yy0zLjg2IDAtNy0zLjE0LTctN3MzLjE0LTcgNy03IDcgMy4xNCA3IDctMy4xNCA3LTcgN3oiPjwvcGF0aD48L2c+CjxnIGlkPSJjcm9wIj48cGF0aCBkPSJNMTcgMTVoMlY3YzAtMS4xLS45LTItMi0ySDl2Mmg4djh6TTcgMTdWMUg1djRIMXYyaDR2MTBjMCAxLjEuOSAyIDIgMmgxMHY0aDJ2LTRoNHYtMkg3eiI+PC9wYXRoPjwvZz4KPGcgaWQ9ImNyb3AtMTYtOSI+PHBhdGggZD0iTTE5IDZINWMtMS4xIDAtMiAuOS0yIDJ2OGMwIDEuMS45IDIgMiAyaDE0YzEuMSAwIDItLjkgMi0yVjhjMC0xLjEtLjktMi0yLTJ6bTAgMTBINVY4aDE0djh6Ij48L3BhdGg+PC9nPgo8ZyBpZD0iY3JvcC0zLTIiPjxwYXRoIGQ9Ik0xOSA0SDVjLTEuMSAwLTIgLjktMiAydjEyYzAgMS4xLjkgMiAyIDJoMTRjMS4xIDAgMi0uOSAyLTJWNmMwLTEuMS0uOS0yLTItMnptMCAxNEg1VjZoMTR2MTJ6Ij48L3BhdGg+PC9nPgo8ZyBpZD0iY3JvcC01LTQiPjxwYXRoIGQ9Ik0xOSA1SDVjLTEuMSAwLTIgLjktMiAydjEwYzAgMS4xLjkgMiAyIDJoMTRjMS4xIDAgMi0uOSAyLTJWN2MwLTEuMS0uOS0yLTItMnptMCAxMkg1VjdoMTR2MTB6Ij48L3BhdGg+PC9nPgo8ZyBpZD0iY3JvcC03LTUiPjxwYXRoIGQ9Ik0xOSA3SDVjLTEuMSAwLTIgLjktMiAydjZjMCAxLjEuOSAyIDIgMmgxNGMxLjEgMCAyLS45IDItMlY5YzAtMS4xLS45LTItMi0yem0wIDhINVY5aDE0djZ6Ij48L3BhdGg+PC9nPgo8ZyBpZD0iY3JvcC1kaW4iPjxwYXRoIGQ9Ik0xOSAzSDVjLTEuMSAwLTIgLjktMiAydjE0YzAgMS4xLjkgMiAyIDJoMTRjMS4xIDAgMi0uOSAyLTJWNWMwLTEuMS0uOS0yLTItMnptMCAxNkg1VjVoMTR2MTR6Ij48L3BhdGg+PC9nPgo8ZyBpZD0iY3JvcC1mcmVlIj48cGF0aCBkPSJNMyA1djRoMlY1aDRWM0g1Yy0xLjEgMC0yIC45LTIgMnptMiAxMEgzdjRjMCAxLjEuOSAyIDIgMmg0di0ySDV2LTR6bTE0IDRoLTR2Mmg0YzEuMSAwIDItLjkgMi0ydi00aC0ydjR6bTAtMTZoLTR2Mmg0djRoMlY1YzAtMS4xLS45LTItMi0yeiI+PC9wYXRoPjwvZz4KPGcgaWQ9ImNyb3AtbGFuZHNjYXBlIj48cGF0aCBkPSJNMTkgNUg1Yy0xLjEgMC0yIC45LTIgMnYxMGMwIDEuMS45IDIgMiAyaDE0YzEuMSAwIDItLjkgMi0yVjdjMC0xLjEtLjktMi0yLTJ6bTAgMTJINVY3aDE0djEweiI+PC9wYXRoPjwvZz4KPGcgaWQ9ImNyb3Atb3JpZ2luYWwiPjxwYXRoIGQ9Ik0xOSAzSDVjLTEuMSAwLTIgLjktMiAydjE0YzAgMS4xLjkgMiAyIDJoMTRjMS4xIDAgMi0uOSAyLTJWNWMwLTEuMS0uOS0yLTItMnptMCAxNkg1VjVoMTR2MTR6bS01LjA0LTYuNzFsLTIuNzUgMy41NC0xLjk2LTIuMzZMNi41IDE3aDExbC0zLjU0LTQuNzF6Ij48L3BhdGg+PC9nPgo8ZyBpZD0iY3JvcC1wb3J0cmFpdCI+PHBhdGggZD0iTTE3IDNIN2MtMS4xIDAtMiAuOS0yIDJ2MTRjMCAxLjEuOSAyIDIgMmgxMGMxLjEgMCAyLS45IDItMlY1YzAtMS4xLS45LTItMi0yem0wIDE2SDdWNWgxMHYxNHoiPjwvcGF0aD48L2c+CjxnIGlkPSJjcm9wLXJvdGF0ZSI+PHBhdGggZD0iTTcuNDcgMjEuNDlDNC4yIDE5LjkzIDEuODYgMTYuNzYgMS41IDEzSDBjLjUxIDYuMTYgNS42NiAxMSAxMS45NSAxMSAuMjMgMCAuNDQtLjAyLjY2LS4wM0w4LjggMjAuMTVsLTEuMzMgMS4zNHpNMTIuMDUgMGMtLjIzIDAtLjQ0LjAyLS42Ni4wNGwzLjgxIDMuODEgMS4zMy0xLjMzQzE5LjggNC4wNyAyMi4xNCA3LjI0IDIyLjUgMTFIMjRjLS41MS02LjE2LTUuNjYtMTEtMTEuOTUtMTF6TTE2IDE0aDJWOGMwLTEuMTEtLjktMi0yLTJoLTZ2Mmg2djZ6bS04IDJWNEg2djJINHYyaDJ2OGMwIDEuMS44OSAyIDIgMmg4djJoMnYtMmgydi0ySDh6Ij48L3BhdGg+PC9nPgo8ZyBpZD0iY3JvcC1zcXVhcmUiPjxwYXRoIGQ9Ik0xOCA0SDZjLTEuMSAwLTIgLjktMiAydjEyYzAgMS4xLjkgMiAyIDJoMTJjMS4xIDAgMi0uOSAyLTJWNmMwLTEuMS0uOS0yLTItMnptMCAxNEg2VjZoMTJ2MTJ6Ij48L3BhdGg+PC9nPgo8ZyBpZD0iZGVoYXplIj48cGF0aCBkPSJNMiAxNS41djJoMjB2LTJIMnptMC01djJoMjB2LTJIMnptMC01djJoMjB2LTJIMnoiPjwvcGF0aD48L2c+CjxnIGlkPSJkZXRhaWxzIj48cGF0aCBkPSJNMyA0bDkgMTYgOS0xNkgzem0zLjM4IDJoMTEuMjVMMTIgMTYgNi4zOCA2eiI+PC9wYXRoPjwvZz4KPGcgaWQ9ImVkaXQiPjxwYXRoIGQ9Ik0zIDE3LjI1VjIxaDMuNzVMMTcuODEgOS45NGwtMy43NS0zLjc1TDMgMTcuMjV6TTIwLjcxIDcuMDRjLjM5LS4zOS4zOS0xLjAyIDAtMS40MWwtMi4zNC0yLjM0Yy0uMzktLjM5LTEuMDItLjM5LTEuNDEgMGwtMS44MyAxLjgzIDMuNzUgMy43NSAxLjgzLTEuODN6Ij48L3BhdGg+PC9nPgo8ZyBpZD0iZXhwb3N1cmUiPjxwYXRoIGQ9Ik0xNSAxN3YyaDJ2LTJoMnYtMmgtMnYtMmgtMnYyaC0ydjJoMnptNS0xNUg0Yy0xLjEgMC0yIC45LTIgMnYxNmMwIDEuMS45IDIgMiAyaDE2YzEuMSAwIDItLjkgMi0yVjRjMC0xLjEtLjktMi0yLTJ6TTUgNWg2djJINVY1em0xNSAxNUg0TDIwIDR2MTZ6Ij48L3BhdGg+PC9nPgo8ZyBpZD0iZXhwb3N1cmUtbmVnLTEiPjxwYXRoIGQ9Ik00IDExdjJoOHYtMkg0em0xNSA3aC0yVjcuMzhMMTQgOC40VjYuN0wxOC43IDVoLjN2MTN6Ij48L3BhdGg+PC9nPgo8ZyBpZD0iZXhwb3N1cmUtbmVnLTIiPjxwYXRoIGQ9Ik0xNS4wNSAxNi4yOWwyLjg2LTMuMDdjLjM4LS4zOS43Mi0uNzkgMS4wNC0xLjE4LjMyLS4zOS41OS0uNzguODItMS4xNy4yMy0uMzkuNDEtLjc4LjU0LTEuMTdzLjE5LS43OS4xOS0xLjE4YzAtLjUzLS4wOS0xLjAyLS4yNy0xLjQ2LS4xOC0uNDQtLjQ0LS44MS0uNzgtMS4xMS0uMzQtLjMxLS43Ny0uNTQtMS4yNi0uNzEtLjUxLS4xNi0xLjA4LS4yNC0xLjcyLS4yNC0uNjkgMC0xLjMxLjExLTEuODUuMzItLjU0LjIxLTEgLjUxLTEuMzYuODgtLjM3LjM3LS42NS44LS44NCAxLjMtLjE4LjQ3LS4yNy45Ny0uMjggMS41aDIuMTRjLjAxLS4zMS4wNS0uNi4xMy0uODcuMDktLjI5LjIzLS41NC40LS43NS4xOC0uMjEuNDEtLjM3LjY4LS40OS4yNy0uMTIuNi0uMTguOTYtLjE4LjMxIDAgLjU4LjA1LjgxLjE1LjIzLjEuNDMuMjUuNTkuNDMuMTYuMTguMjguNC4zNy42NS4wOC4yNS4xMy41Mi4xMy44MSAwIC4yMi0uMDMuNDMtLjA4LjY1LS4wNi4yMi0uMTUuNDUtLjI5LjctLjE0LjI1LS4zMi41My0uNTYuODMtLjIzLjMtLjUyLjY1LS44OCAxLjAzbC00LjE3IDQuNTVWMThIMjF2LTEuNzFoLTUuOTV6TTIgMTF2Mmg4di0ySDJ6Ij48L3BhdGg+PC9nPgo8ZyBpZD0iZXhwb3N1cmUtcGx1cy0xIj48cGF0aCBkPSJNMTAgN0g4djRINHYyaDR2NGgydi00aDR2LTJoLTRWN3ptMTAgMTFoLTJWNy4zOEwxNSA4LjRWNi43TDE5LjcgNWguM3YxM3oiPjwvcGF0aD48L2c+CjxnIGlkPSJleHBvc3VyZS1wbHVzLTIiPjxwYXRoIGQ9Ik0xNi4wNSAxNi4yOWwyLjg2LTMuMDdjLjM4LS4zOS43Mi0uNzkgMS4wNC0xLjE4LjMyLS4zOS41OS0uNzguODItMS4xNy4yMy0uMzkuNDEtLjc4LjU0LTEuMTcuMTMtLjM5LjE5LS43OS4xOS0xLjE4IDAtLjUzLS4wOS0xLjAyLS4yNy0xLjQ2LS4xOC0uNDQtLjQ0LS44MS0uNzgtMS4xMS0uMzQtLjMxLS43Ny0uNTQtMS4yNi0uNzEtLjUxLS4xNi0xLjA4LS4yNC0xLjcyLS4yNC0uNjkgMC0xLjMxLjExLTEuODUuMzItLjU0LjIxLTEgLjUxLTEuMzYuODgtLjM3LjM3LS42NS44LS44NCAxLjMtLjE4LjQ3LS4yNy45Ny0uMjggMS41aDIuMTRjLjAxLS4zMS4wNS0uNi4xMy0uODcuMDktLjI5LjIzLS41NC40LS43NS4xOC0uMjEuNDEtLjM3LjY4LS40OS4yNy0uMTIuNi0uMTguOTYtLjE4LjMxIDAgLjU4LjA1LjgxLjE1LjIzLjEuNDMuMjUuNTkuNDMuMTYuMTguMjguNC4zNy42NS4wOC4yNS4xMy41Mi4xMy44MSAwIC4yMi0uMDMuNDMtLjA4LjY1LS4wNi4yMi0uMTUuNDUtLjI5LjctLjE0LjI1LS4zMi41My0uNTYuODMtLjIzLjMtLjUyLjY1LS44OCAxLjAzbC00LjE3IDQuNTVWMThIMjJ2LTEuNzFoLTUuOTV6TTggN0g2djRIMnYyaDR2NGgydi00aDR2LTJIOFY3eiI+PC9wYXRoPjwvZz4KPGcgaWQ9ImV4cG9zdXJlLXplcm8iPjxwYXRoIGQ9Ik0xNi4xNCAxMi41YzAgMS0uMSAxLjg1LS4zIDIuNTUtLjIuNy0uNDggMS4yNy0uODMgMS43LS4zNi40NC0uNzkuNzUtMS4zLjk1LS41MS4yLTEuMDcuMy0xLjcuMy0uNjIgMC0xLjE4LS4xLTEuNjktLjMtLjUxLS4yLS45NS0uNTEtMS4zMS0uOTUtLjM2LS40NC0uNjUtMS4wMS0uODUtMS43LS4yLS43LS4zLTEuNTUtLjMtMi41NXYtMi4wNGMwLTEgLjEtMS44NS4zLTIuNTUuMi0uNy40OC0xLjI2Ljg0LTEuNjkuMzYtLjQzLjgtLjc0IDEuMzEtLjkzQzEwLjgxIDUuMSAxMS4zOCA1IDEyIDVjLjYzIDAgMS4xOS4xIDEuNy4yOS41MS4xOS45NS41IDEuMzEuOTMuMzYuNDMuNjQuOTkuODQgMS42OS4yLjcuMyAxLjU0LjMgMi41NXYyLjA0em0tMi4xMS0yLjM2YzAtLjY0LS4wNS0xLjE4LS4xMy0xLjYyLS4wOS0uNDQtLjIyLS43OS0uNC0xLjA2LS4xNy0uMjctLjM5LS40Ni0uNjQtLjU4LS4yNS0uMTMtLjU0LS4xOS0uODYtLjE5LS4zMiAwLS42MS4wNi0uODYuMThzLS40Ny4zMS0uNjQuNThjLS4xNy4yNy0uMzEuNjItLjQgMS4wNnMtLjEzLjk4LS4xMyAxLjYydjIuNjdjMCAuNjQuMDUgMS4xOC4xNCAxLjYyLjA5LjQ1LjIzLjgxLjQgMS4wOXMuMzkuNDguNjQuNjEuNTQuMTkuODcuMTljLjMzIDAgLjYyLS4wNi44Ny0uMTlzLjQ2LS4zMy42My0uNjFjLjE3LS4yOC4zLS42NC4zOS0xLjA5LjA5LS40NS4xMy0uOTkuMTMtMS42MnYtMi42NnoiPjwvcGF0aD48L2c+CjxnIGlkPSJmaWx0ZXIiPjxwYXRoIGQ9Ik0xNS45NiAxMC4yOWwtMi43NSAzLjU0LTEuOTYtMi4zNkw4LjUgMTVoMTFsLTMuNTQtNC43MXpNMyA1SDF2MTZjMCAxLjEuOSAyIDIgMmgxNnYtMkgzVjV6bTE4LTRIN2MtMS4xIDAtMiAuOS0yIDJ2MTRjMCAxLjEuOSAyIDIgMmgxNGMxLjEgMCAyLS45IDItMlYzYzAtMS4xLS45LTItMi0yem0wIDE2SDdWM2gxNHYxNHoiPjwvcGF0aD48L2c+CjxnIGlkPSJmaWx0ZXItMSI+PHBhdGggZD0iTTMgNUgxdjE2YzAgMS4xLjkgMiAyIDJoMTZ2LTJIM1Y1em0xMSAxMGgyVjVoLTR2Mmgydjh6bTctMTRIN2MtMS4xIDAtMiAuOS0yIDJ2MTRjMCAxLjEuOSAyIDIgMmgxNGMxLjEgMCAyLS45IDItMlYzYzAtMS4xLS45LTItMi0yem0wIDE2SDdWM2gxNHYxNHoiPjwvcGF0aD48L2c+CjxnIGlkPSJmaWx0ZXItMiI+PHBhdGggZD0iTTMgNUgxdjE2YzAgMS4xLjkgMiAyIDJoMTZ2LTJIM1Y1em0xOC00SDdjLTEuMSAwLTIgLjktMiAydjE0YzAgMS4xLjkgMiAyIDJoMTRjMS4xIDAgMi0uOSAyLTJWM2MwLTEuMS0uOS0yLTItMnptMCAxNkg3VjNoMTR2MTR6bS00LTRoLTR2LTJoMmMxLjEgMCAyLS44OSAyLTJWN2MwLTEuMTEtLjktMi0yLTJoLTR2Mmg0djJoLTJjLTEuMSAwLTIgLjg5LTIgMnY0aDZ2LTJ6Ij48L3BhdGg+PC9nPgo8ZyBpZD0iZmlsdGVyLTMiPjxwYXRoIGQ9Ik0yMSAxSDdjLTEuMSAwLTIgLjktMiAydjE0YzAgMS4xLjkgMiAyIDJoMTRjMS4xIDAgMi0uOSAyLTJWM2MwLTEuMS0uOS0yLTItMnptMCAxNkg3VjNoMTR2MTR6TTMgNUgxdjE2YzAgMS4xLjkgMiAyIDJoMTZ2LTJIM1Y1em0xNCA4di0xLjVjMC0uODMtLjY3LTEuNS0xLjUtMS41LjgzIDAgMS41LS42NyAxLjUtMS41VjdjMC0xLjExLS45LTItMi0yaC00djJoNHYyaC0ydjJoMnYyaC00djJoNGMxLjEgMCAyLS44OSAyLTJ6Ij48L3BhdGg+PC9nPgo8ZyBpZD0iZmlsdGVyLTQiPjxwYXRoIGQ9Ik0zIDVIMXYxNmMwIDEuMS45IDIgMiAyaDE2di0ySDNWNXptMTIgMTBoMlY1aC0ydjRoLTJWNWgtMnY2aDR2NHptNi0xNEg3Yy0xLjEgMC0yIC45LTIgMnYxNGMwIDEuMS45IDIgMiAyaDE0YzEuMSAwIDItLjkgMi0yVjNjMC0xLjEtLjktMi0yLTJ6bTAgMTZIN1YzaDE0djE0eiI+PC9wYXRoPjwvZz4KPGcgaWQ9ImZpbHRlci01Ij48cGF0aCBkPSJNMjEgMUg3Yy0xLjEgMC0yIC45LTIgMnYxNGMwIDEuMS45IDIgMiAyaDE0YzEuMSAwIDItLjkgMi0yVjNjMC0xLjEtLjktMi0yLTJ6bTAgMTZIN1YzaDE0djE0ek0zIDVIMXYxNmMwIDEuMS45IDIgMiAyaDE2di0ySDNWNXptMTQgOHYtMmMwLTEuMTEtLjktMi0yLTJoLTJWN2g0VjVoLTZ2Nmg0djJoLTR2Mmg0YzEuMSAwIDItLjg5IDItMnoiPjwvcGF0aD48L2c+CjxnIGlkPSJmaWx0ZXItNiI+PHBhdGggZD0iTTMgNUgxdjE2YzAgMS4xLjkgMiAyIDJoMTZ2LTJIM1Y1em0xOC00SDdjLTEuMSAwLTIgLjktMiAydjE0YzAgMS4xLjkgMiAyIDJoMTRjMS4xIDAgMi0uOSAyLTJWM2MwLTEuMS0uOS0yLTItMnptMCAxNkg3VjNoMTR2MTR6bS04LTJoMmMxLjEgMCAyLS44OSAyLTJ2LTJjMC0xLjExLS45LTItMi0yaC0yVjdoNFY1aC00Yy0xLjEgMC0yIC44OS0yIDJ2NmMwIDEuMTEuOSAyIDIgMnptMC00aDJ2MmgtMnYtMnoiPjwvcGF0aD48L2c+CjxnIGlkPSJmaWx0ZXItNyI+PHBhdGggZD0iTTMgNUgxdjE2YzAgMS4xLjkgMiAyIDJoMTZ2LTJIM1Y1em0xOC00SDdjLTEuMSAwLTIgLjktMiAydjE0YzAgMS4xLjkgMiAyIDJoMTRjMS4xIDAgMi0uOSAyLTJWM2MwLTEuMS0uOS0yLTItMnptMCAxNkg3VjNoMTR2MTR6bS04LTJsNC04VjVoLTZ2Mmg0bC00IDhoMnoiPjwvcGF0aD48L2c+CjxnIGlkPSJmaWx0ZXItOCI+PHBhdGggZD0iTTMgNUgxdjE2YzAgMS4xLjkgMiAyIDJoMTZ2LTJIM1Y1em0xOC00SDdjLTEuMSAwLTIgLjktMiAydjE0YzAgMS4xLjkgMiAyIDJoMTRjMS4xIDAgMi0uOSAyLTJWM2MwLTEuMS0uOS0yLTItMnptMCAxNkg3VjNoMTR2MTR6bS04LTJoMmMxLjEgMCAyLS44OSAyLTJ2LTEuNWMwLS44My0uNjctMS41LTEuNS0xLjUuODMgMCAxLjUtLjY3IDEuNS0xLjVWN2MwLTEuMTEtLjktMi0yLTJoLTJjLTEuMSAwLTIgLjg5LTIgMnYxLjVjMCAuODMuNjcgMS41IDEuNSAxLjUtLjgzIDAtMS41LjY3LTEuNSAxLjVWMTNjMCAxLjExLjkgMiAyIDJ6bTAtOGgydjJoLTJWN3ptMCA0aDJ2MmgtMnYtMnoiPjwvcGF0aD48L2c+CjxnIGlkPSJmaWx0ZXItOSI+PHBhdGggZD0iTTMgNUgxdjE2YzAgMS4xLjkgMiAyIDJoMTZ2LTJIM1Y1em0xOC00SDdjLTEuMSAwLTIgLjktMiAydjE0YzAgMS4xLjkgMiAyIDJoMTRjMS4xIDAgMi0uOSAyLTJWM2MwLTEuMS0uOS0yLTItMnptMCAxNkg3VjNoMTR2MTR6TTE1IDVoLTJjLTEuMSAwLTIgLjg5LTIgMnYyYzAgMS4xMS45IDIgMiAyaDJ2MmgtNHYyaDRjMS4xIDAgMi0uODkgMi0yVjdjMC0xLjExLS45LTItMi0yem0wIDRoLTJWN2gydjJ6Ij48L3BhdGg+PC9nPgo8ZyBpZD0iZmlsdGVyLTktcGx1cyI+PHBhdGggZD0iTTMgNUgxdjE2YzAgMS4xLjkgMiAyIDJoMTZ2LTJIM1Y1em0xMSA3VjhjMC0xLjExLS45LTItMi0yaC0xYy0xLjEgMC0yIC44OS0yIDJ2MWMwIDEuMTEuOSAyIDIgMmgxdjFIOXYyaDNjMS4xIDAgMi0uODkgMi0yem0tMy0zVjhoMXYxaC0xem0xMC04SDdjLTEuMSAwLTIgLjktMiAydjE0YzAgMS4xLjkgMiAyIDJoMTRjMS4xIDAgMi0uOSAyLTJWM2MwLTEuMS0uOS0yLTItMnptMCA4aC0yVjdoLTJ2MmgtMnYyaDJ2Mmgydi0yaDJ2Nkg3VjNoMTR2NnoiPjwvcGF0aD48L2c+CjxnIGlkPSJmaWx0ZXItYi1hbmQtdyI+PHBhdGggZD0iTTE5IDNINWMtMS4xIDAtMiAuOS0yIDJ2MTRjMCAxLjEuOSAyIDIgMmgxNGMxLjEgMCAyLS45IDItMlY1YzAtMS4xLS45LTItMi0yem0wIDE2bC03LTh2OEg1bDctOFY1aDd2MTR6Ij48L3BhdGg+PC9nPgo8ZyBpZD0iZmlsdGVyLWNlbnRlci1mb2N1cyI+PHBhdGggZD0iTTUgMTVIM3Y0YzAgMS4xLjkgMiAyIDJoNHYtMkg1di00ek01IDVoNFYzSDVjLTEuMSAwLTIgLjktMiAydjRoMlY1em0xNC0yaC00djJoNHY0aDJWNWMwLTEuMS0uOS0yLTItMnptMCAxNmgtNHYyaDRjMS4xIDAgMi0uOSAyLTJ2LTRoLTJ2NHpNMTIgOWMtMS42NiAwLTMgMS4zNC0zIDNzMS4zNCAzIDMgMyAzLTEuMzQgMy0zLTEuMzQtMy0zLTN6Ij48L3BhdGg+PC9nPgo8ZyBpZD0iZmlsdGVyLWRyYW1hIj48cGF0aCBkPSJNMTkuMzUgMTAuMDRDMTguNjcgNi41OSAxNS42NCA0IDEyIDQgOS4xMSA0IDYuNjEgNS42NCA1LjM2IDguMDQgMi4zNSA4LjM2IDAgMTAuOSAwIDE0YzAgMy4zMSAyLjY5IDYgNiA2aDEzYzIuNzYgMCA1LTIuMjQgNS01IDAtMi42NC0yLjA1LTQuNzgtNC42NS00Ljk2ek0xOSAxOEg2Yy0yLjIxIDAtNC0xLjc5LTQtNHMxLjc5LTQgNC00IDQgMS43OSA0IDRoMmMwLTIuNzYtMS44Ni01LjA4LTQuNC01Ljc4QzguNjEgNi44OCAxMC4yIDYgMTIgNmMzLjAzIDAgNS41IDIuNDcgNS41IDUuNXYuNUgxOWMxLjY1IDAgMyAxLjM1IDMgM3MtMS4zNSAzLTMgM3oiPjwvcGF0aD48L2c+CjxnIGlkPSJmaWx0ZXItZnJhbWVzIj48cGF0aCBkPSJNMjAgNGgtNGwtNC00LTQgNEg0Yy0xLjEgMC0yIC45LTIgMnYxNGMwIDEuMS45IDIgMiAyaDE2YzEuMSAwIDItLjkgMi0yVjZjMC0xLjEtLjktMi0yLTJ6bTAgMTZINFY2aDQuNTJsMy41Mi0zLjVMMTUuNTIgNkgyMHYxNHpNMTggOEg2djEwaDEyIj48L3BhdGg+PC9nPgo8ZyBpZD0iZmlsdGVyLWhkciI+PHBhdGggZD0iTTE0IDZsLTMuNzUgNSAyLjg1IDMuOC0xLjYgMS4yQzkuODEgMTMuNzUgNyAxMCA3IDEwbC02IDhoMjJMMTQgNnoiPjwvcGF0aD48L2c+CjxnIGlkPSJmaWx0ZXItbm9uZSI+PHBhdGggZD0iTTMgNUgxdjE2YzAgMS4xLjkgMiAyIDJoMTZ2LTJIM1Y1em0xOC00SDdjLTEuMSAwLTIgLjktMiAydjE0YzAgMS4xLjkgMiAyIDJoMTRjMS4xIDAgMi0uOSAyLTJWM2MwLTEuMS0uOS0yLTItMnptMCAxNkg3VjNoMTR2MTR6Ij48L3BhdGg+PC9nPgo8ZyBpZD0iZmlsdGVyLXRpbHQtc2hpZnQiPjxwYXRoIGQ9Ik0xMSA0LjA3VjIuMDVjLTIuMDEuMi0zLjg0IDEtNS4zMiAyLjIxTDcuMSA1LjY5YzEuMTEtLjg2IDIuNDQtMS40NCAzLjktMS42MnptNy4zMi4xOUMxNi44NCAzLjA1IDE1LjAxIDIuMjUgMTMgMi4wNXYyLjAyYzEuNDYuMTggMi43OS43NiAzLjkgMS42MmwxLjQyLTEuNDN6TTE5LjkzIDExaDIuMDJjLS4yLTIuMDEtMS0zLjg0LTIuMjEtNS4zMkwxOC4zMSA3LjFjLjg2IDEuMTEgMS40NCAyLjQ0IDEuNjIgMy45ek01LjY5IDcuMUw0LjI2IDUuNjhDMy4wNSA3LjE2IDIuMjUgOC45OSAyLjA1IDExaDIuMDJjLjE4LTEuNDYuNzYtMi43OSAxLjYyLTMuOXpNNC4wNyAxM0gyLjA1Yy4yIDIuMDEgMSAzLjg0IDIuMjEgNS4zMmwxLjQzLTEuNDNjLS44Ni0xLjEtMS40NC0yLjQzLTEuNjItMy44OXpNMTUgMTJjMC0xLjY2LTEuMzQtMy0zLTNzLTMgMS4zNC0zIDMgMS4zNCAzIDMgMyAzLTEuMzQgMy0zem0zLjMxIDQuOWwxLjQzIDEuNDNjMS4yMS0xLjQ4IDIuMDEtMy4zMiAyLjIxLTUuMzJoLTIuMDJjLS4xOCAxLjQ1LS43NiAyLjc4LTEuNjIgMy44OXpNMTMgMTkuOTN2Mi4wMmMyLjAxLS4yIDMuODQtMSA1LjMyLTIuMjFsLTEuNDMtMS40M2MtMS4xLjg2LTIuNDMgMS40NC0zLjg5IDEuNjJ6bS03LjMyLS4xOUM3LjE2IDIwLjk1IDkgMjEuNzUgMTEgMjEuOTV2LTIuMDJjLTEuNDYtLjE4LTIuNzktLjc2LTMuOS0xLjYybC0xLjQyIDEuNDN6Ij48L3BhdGg+PC9nPgo8ZyBpZD0iZmlsdGVyLXZpbnRhZ2UiPjxwYXRoIGQ9Ik0xOC43IDEyLjRjLS4yOC0uMTYtLjU3LS4yOS0uODYtLjQuMjktLjExLjU4LS4yNC44Ni0uNCAxLjkyLTEuMTEgMi45OS0zLjEyIDMtNS4xOS0xLjc5LTEuMDMtNC4wNy0xLjExLTYgMC0uMjguMTYtLjU0LjM1LS43OC41NC4wNS0uMzEuMDgtLjYzLjA4LS45NSAwLTIuMjItMS4yMS00LjE1LTMtNS4xOUMxMC4yMSAxLjg1IDkgMy43OCA5IDZjMCAuMzIuMDMuNjQuMDguOTUtLjI0LS4yLS41LS4zOS0uNzgtLjU1LTEuOTItMS4xMS00LjItMS4wMy02IDAgMCAyLjA3IDEuMDcgNC4wOCAzIDUuMTkuMjguMTYuNTcuMjkuODYuNC0uMjkuMTEtLjU4LjI0LS44Ni40LTEuOTIgMS4xMS0yLjk5IDMuMTItMyA1LjE5IDEuNzkgMS4wMyA0LjA3IDEuMTEgNiAwIC4yOC0uMTYuNTQtLjM1Ljc4LS41NC0uMDUuMzItLjA4LjY0LS4wOC45NiAwIDIuMjIgMS4yMSA0LjE1IDMgNS4xOSAxLjc5LTEuMDQgMy0yLjk3IDMtNS4xOSAwLS4zMi0uMDMtLjY0LS4wOC0uOTUuMjQuMi41LjM4Ljc4LjU0IDEuOTIgMS4xMSA0LjIgMS4wMyA2IDAtLjAxLTIuMDctMS4wOC00LjA4LTMtNS4xOXpNMTIgMTZjLTIuMjEgMC00LTEuNzktNC00czEuNzktNCA0LTQgNCAxLjc5IDQgNC0xLjc5IDQtNCA0eiI+PC9wYXRoPjwvZz4KPGcgaWQ9ImZsYXJlIj48cGF0aCBkPSJNNyAxMUgxdjJoNnYtMnptMi4xNy0zLjI0TDcuMDUgNS42NCA1LjY0IDcuMDVsMi4xMiAyLjEyIDEuNDEtMS40MXpNMTMgMWgtMnY2aDJWMXptNS4zNiA2LjA1bC0xLjQxLTEuNDEtMi4xMiAyLjEyIDEuNDEgMS40MSAyLjEyLTIuMTJ6TTE3IDExdjJoNnYtMmgtNnptLTUtMmMtMS42NiAwLTMgMS4zNC0zIDNzMS4zNCAzIDMgMyAzLTEuMzQgMy0zLTEuMzQtMy0zLTN6bTIuODMgNy4yNGwyLjEyIDIuMTIgMS40MS0xLjQxLTIuMTItMi4xMi0xLjQxIDEuNDF6bS05LjE5LjcxbDEuNDEgMS40MSAyLjEyLTIuMTItMS40MS0xLjQxLTIuMTIgMi4xMnpNMTEgMjNoMnYtNmgtMnY2eiI+PC9wYXRoPjwvZz4KPGcgaWQ9ImZsYXNoLWF1dG8iPjxwYXRoIGQ9Ik0zIDJ2MTJoM3Y5bDctMTJIOWw0LTlIM3ptMTYgMGgtMmwtMy4yIDloMS45bC43LTJoMy4ybC43IDJoMS45TDE5IDJ6bS0yLjE1IDUuNjVMMTggNGwxLjE1IDMuNjVoLTIuM3oiPjwvcGF0aD48L2c+CjxnIGlkPSJmbGFzaC1vZmYiPjxwYXRoIGQ9Ik0zLjI3IDNMMiA0LjI3bDUgNVYxM2gzdjlsMy41OC02LjE0TDE3LjczIDIwIDE5IDE4LjczIDMuMjcgM3pNMTcgMTBoLTRsNC04SDd2Mi4xOGw4LjQ2IDguNDZMMTcgMTB6Ij48L3BhdGg+PC9nPgo8ZyBpZD0iZmxhc2gtb24iPjxwYXRoIGQ9Ik03IDJ2MTFoM3Y5bDctMTJoLTRsNC04eiI+PC9wYXRoPjwvZz4KPGcgaWQ9ImZsaXAiPjxwYXRoIGQ9Ik0xNSAyMWgydi0yaC0ydjJ6bTQtMTJoMlY3aC0ydjJ6TTMgNXYxNGMwIDEuMS45IDIgMiAyaDR2LTJINVY1aDRWM0g1Yy0xLjEgMC0yIC45LTIgMnptMTYtMnYyaDJjMC0xLjEtLjktMi0yLTJ6bS04IDIwaDJWMWgtMnYyMnptOC02aDJ2LTJoLTJ2MnpNMTUgNWgyVjNoLTJ2MnptNCA4aDJ2LTJoLTJ2MnptMCA4YzEuMSAwIDItLjkgMi0yaC0ydjJ6Ij48L3BhdGg+PC9nPgo8ZyBpZD0iZ3JhZGllbnQiPjxwYXRoIGQ9Ik0xMSA5aDJ2MmgtMnptLTIgMmgydjJIOXptNCAwaDJ2MmgtMnptMi0yaDJ2MmgtMnpNNyA5aDJ2Mkg3em0xMi02SDVjLTEuMSAwLTIgLjktMiAydjE0YzAgMS4xLjkgMiAyIDJoMTRjMS4xIDAgMi0uOSAyLTJWNWMwLTEuMS0uOS0yLTItMnpNOSAxOEg3di0yaDJ2MnptNCAwaC0ydi0yaDJ2MnptNCAwaC0ydi0yaDJ2MnptMi03aC0ydjJoMnYyaC0ydi0yaC0ydjJoLTJ2LTJoLTJ2Mkg5di0ySDd2Mkg1di0yaDJ2LTJINVY1aDE0djZ6Ij48L3BhdGg+PC9nPgo8ZyBpZD0iZ3JhaW4iPjxwYXRoIGQ9Ik0xMCAxMmMtMS4xIDAtMiAuOS0yIDJzLjkgMiAyIDIgMi0uOSAyLTItLjktMi0yLTJ6TTYgOGMtMS4xIDAtMiAuOS0yIDJzLjkgMiAyIDIgMi0uOSAyLTItLjktMi0yLTJ6bTAgOGMtMS4xIDAtMiAuOS0yIDJzLjkgMiAyIDIgMi0uOSAyLTItLjktMi0yLTJ6bTEyLThjMS4xIDAgMi0uOSAyLTJzLS45LTItMi0yLTIgLjktMiAyIC45IDIgMiAyem0tNCA4Yy0xLjEgMC0yIC45LTIgMnMuOSAyIDIgMiAyLS45IDItMi0uOS0yLTItMnptNC00Yy0xLjEgMC0yIC45LTIgMnMuOSAyIDIgMiAyLS45IDItMi0uOS0yLTItMnptLTQtNGMtMS4xIDAtMiAuOS0yIDJzLjkgMiAyIDIgMi0uOSAyLTItLjktMi0yLTJ6bS00LTRjLTEuMSAwLTIgLjktMiAycy45IDIgMiAyIDItLjkgMi0yLS45LTItMi0yeiI+PC9wYXRoPjwvZz4KPGcgaWQ9ImdyaWQtb2ZmIj48cGF0aCBkPSJNOCA0djEuNDVsMiAyVjRoNHY0aC0zLjQ1bDIgMkgxNHYxLjQ1bDIgMlYxMGg0djRoLTMuNDVsMiAySDIwdjEuNDVsMiAyVjRjMC0xLjEtLjktMi0yLTJINC41NWwyIDJIOHptOCAwaDR2NGgtNFY0ek0xLjI3IDEuMjdMMCAyLjU1bDIgMlYyMGMwIDEuMS45IDIgMiAyaDE1LjQ2bDIgMiAxLjI3LTEuMjdMMS4yNyAxLjI3ek0xMCAxMi41NUwxMS40NSAxNEgxMHYtMS40NXptLTYtNkw1LjQ1IDhINFY2LjU1ek04IDIwSDR2LTRoNHY0em0wLTZINHYtNGgzLjQ1bC41NS41NVYxNHptNiA2aC00di00aDMuNDVsLjU1LjU0VjIwem0yIDB2LTEuNDZMMTcuNDYgMjBIMTZ6Ij48L3BhdGg+PC9nPgo8ZyBpZD0iZ3JpZC1vbiI+PHBhdGggZD0iTTIwIDJINGMtMS4xIDAtMiAuOS0yIDJ2MTZjMCAxLjEuOSAyIDIgMmgxNmMxLjEgMCAyLS45IDItMlY0YzAtMS4xLS45LTItMi0yek04IDIwSDR2LTRoNHY0em0wLTZINHYtNGg0djR6bTAtNkg0VjRoNHY0em02IDEyaC00di00aDR2NHptMC02aC00di00aDR2NHptMC02aC00VjRoNHY0em02IDEyaC00di00aDR2NHptMC02aC00di00aDR2NHptMC02aC00VjRoNHY0eiI+PC9wYXRoPjwvZz4KPGcgaWQ9Imhkci1vZmYiPjxwYXRoIGQ9Ik0xNy41IDE1di0yaDEuMWwuOSAySDIxbC0uOS0yLjFjLjUtLjIuOS0uOC45LTEuNHYtMWMwLS44LS43LTEuNS0xLjUtMS41SDE2djQuOWwxLjEgMS4xaC40em0wLTQuNWgydjFoLTJ2LTF6bS00LjUgMHYuNGwxLjUgMS41di0xLjljMC0uOC0uNy0xLjUtMS41LTEuNWgtMS45bDEuNSAxLjVoLjR6bS0zLjUtMWwtNy03LTEuMSAxTDYuOSA5aC0uNHYyaC0yVjlIM3Y2aDEuNXYtMi41aDJWMTVIOHYtNC45bDEuNSAxLjVWMTVoMy40bDcuNiA3LjYgMS4xLTEuMS0xMi4xLTEyeiI+PC9wYXRoPjwvZz4KPGcgaWQ9Imhkci1vbiI+PHBhdGggZD0iTTIxIDExLjV2LTFjMC0uOC0uNy0xLjUtMS41LTEuNUgxNnY2aDEuNXYtMmgxLjFsLjkgMkgyMWwtLjktMi4xYy41LS4zLjktLjguOS0xLjR6bS0xLjUgMGgtMnYtMWgydjF6bS0xMy0uNWgtMlY5SDN2NmgxLjV2LTIuNWgyVjE1SDhWOUg2LjV2MnpNMTMgOUg5LjV2NkgxM2MuOCAwIDEuNS0uNyAxLjUtMS41di0zYzAtLjgtLjctMS41LTEuNS0xLjV6bTAgNC41aC0ydi0zaDJ2M3oiPjwvcGF0aD48L2c+CjxnIGlkPSJoZHItc3Ryb25nIj48cGF0aCBkPSJNMTcgNmMtMy4zMSAwLTYgMi42OS02IDZzMi42OSA2IDYgNiA2LTIuNjkgNi02LTIuNjktNi02LTZ6TTUgOGMtMi4yMSAwLTQgMS43OS00IDRzMS43OSA0IDQgNCA0LTEuNzkgNC00LTEuNzktNC00LTR6bTAgNmMtMS4xIDAtMi0uOS0yLTJzLjktMiAyLTIgMiAuOSAyIDItLjkgMi0yIDJ6Ij48L3BhdGg+PC9nPgo8ZyBpZD0iaGRyLXdlYWsiPjxwYXRoIGQ9Ik01IDhjLTIuMjEgMC00IDEuNzktNCA0czEuNzkgNCA0IDQgNC0xLjc5IDQtNC0xLjc5LTQtNC00em0xMi0yYy0zLjMxIDAtNiAyLjY5LTYgNnMyLjY5IDYgNiA2IDYtMi42OSA2LTYtMi42OS02LTYtNnptMCAxMGMtMi4yMSAwLTQtMS43OS00LTRzMS43OS00IDQtNCA0IDEuNzkgNCA0LTEuNzkgNC00IDR6Ij48L3BhdGg+PC9nPgo8ZyBpZD0iaGVhbGluZyI+PHBhdGggZD0iTTE3LjczIDEyLjAybDMuOTgtMy45OGMuMzktLjM5LjM5LTEuMDIgMC0xLjQxbC00LjM0LTQuMzRjLS4zOS0uMzktMS4wMi0uMzktMS40MSAwbC0zLjk4IDMuOThMOCAyLjI5QzcuOCAyLjEgNy41NSAyIDcuMjkgMmMtLjI1IDAtLjUxLjEtLjcuMjlMMi4yNSA2LjYzYy0uMzkuMzktLjM5IDEuMDIgMCAxLjQxbDMuOTggMy45OEwyLjI1IDE2Yy0uMzkuMzktLjM5IDEuMDIgMCAxLjQxbDQuMzQgNC4zNGMuMzkuMzkgMS4wMi4zOSAxLjQxIDBsMy45OC0zLjk4IDMuOTggMy45OGMuMi4yLjQ1LjI5LjcxLjI5LjI2IDAgLjUxLS4xLjcxLS4yOWw0LjM0LTQuMzRjLjM5LS4zOS4zOS0xLjAyIDAtMS40MWwtMy45OS0zLjk4ek0xMiA5Yy41NSAwIDEgLjQ1IDEgMXMtLjQ1IDEtMSAxLTEtLjQ1LTEtMSAuNDUtMSAxLTF6bS00LjcxIDEuOTZMMy42NiA3LjM0bDMuNjMtMy42MyAzLjYyIDMuNjItMy42MiAzLjYzek0xMCAxM2MtLjU1IDAtMS0uNDUtMS0xcy40NS0xIDEtMSAxIC40NSAxIDEtLjQ1IDEtMSAxem0yIDJjLS41NSAwLTEtLjQ1LTEtMXMuNDUtMSAxLTEgMSAuNDUgMSAxLS40NSAxLTEgMXptMi00Yy41NSAwIDEgLjQ1IDEgMXMtLjQ1IDEtMSAxLTEtLjQ1LTEtMSAuNDUtMSAxLTF6bTIuNjYgOS4zNGwtMy42My0zLjYyIDMuNjMtMy42MyAzLjYyIDMuNjItMy42MiAzLjYzeiI+PC9wYXRoPjwvZz4KPGcgaWQ9ImltYWdlIj48cGF0aCBkPSJNMjEgMTlWNWMwLTEuMS0uOS0yLTItMkg1Yy0xLjEgMC0yIC45LTIgMnYxNGMwIDEuMS45IDIgMiAyaDE0YzEuMSAwIDItLjkgMi0yek04LjUgMTMuNWwyLjUgMy4wMUwxNC41IDEybDQuNSA2SDVsMy41LTQuNXoiPjwvcGF0aD48L2c+CjxnIGlkPSJpbWFnZS1hc3BlY3QtcmF0aW8iPjxwYXRoIGQ9Ik0xNiAxMGgtMnYyaDJ2LTJ6bTAgNGgtMnYyaDJ2LTJ6bS04LTRINnYyaDJ2LTJ6bTQgMGgtMnYyaDJ2LTJ6bTgtNkg0Yy0xLjEgMC0yIC45LTIgMnYxMmMwIDEuMS45IDIgMiAyaDE2YzEuMSAwIDItLjkgMi0yVjZjMC0xLjEtLjktMi0yLTJ6bTAgMTRINFY2aDE2djEyeiI+PC9wYXRoPjwvZz4KPGcgaWQ9ImlzbyI+PHBhdGggZD0iTTE5IDNINWMtMS4xIDAtMiAuOS0yIDJ2MTRjMCAxLjEuOSAyIDIgMmgxNGMxLjEgMCAyLS45IDItMlY1YzAtMS4xLS45LTItMi0yek01LjUgNy41aDJ2LTJIOXYyaDJWOUg5djJINy41VjloLTJWNy41ek0xOSAxOUg1TDE5IDV2MTR6bS0yLTJ2LTEuNWgtNVYxN2g1eiI+PC9wYXRoPjwvZz4KPGcgaWQ9ImxhbmRzY2FwZSI+PHBhdGggZD0iTTE0IDZsLTMuNzUgNSAyLjg1IDMuOC0xLjYgMS4yQzkuODEgMTMuNzUgNyAxMCA3IDEwbC02IDhoMjJMMTQgNnoiPjwvcGF0aD48L2c+CjxnIGlkPSJsZWFrLWFkZCI+PHBhdGggZD0iTTYgM0gzdjNjMS42NiAwIDMtMS4zNCAzLTN6bTggMGgtMmMwIDQuOTctNC4wMyA5LTkgOXYyYzYuMDggMCAxMS00LjkzIDExLTExem0tNCAwSDhjMCAyLjc2LTIuMjQgNS01IDV2MmMzLjg3IDAgNy0zLjEzIDctN3ptMCAxOGgyYzAtNC45NyA0LjAzLTkgOS05di0yYy02LjA3IDAtMTEgNC45My0xMSAxMXptOCAwaDN2LTNjLTEuNjYgMC0zIDEuMzQtMyAzem0tNCAwaDJjMC0yLjc2IDIuMjQtNSA1LTV2LTJjLTMuODcgMC03IDMuMTMtNyA3eiI+PC9wYXRoPjwvZz4KPGcgaWQ9ImxlYWstcmVtb3ZlIj48cGF0aCBkPSJNMTAgM0g4YzAgLjM3LS4wNC43Mi0uMTIgMS4wNmwxLjU5IDEuNTlDOS44MSA0Ljg0IDEwIDMuOTQgMTAgM3pNMyA0LjI3bDIuODQgMi44NEM1LjAzIDcuNjcgNC4wNiA4IDMgOHYyYzEuNjEgMCAzLjA5LS41NSA0LjI3LTEuNDZMOC43IDkuOTdDNy4xNCAxMS4yNCA1LjE2IDEyIDMgMTJ2MmMyLjcxIDAgNS4xOS0uOTkgNy4xMS0yLjYybDIuNSAyLjVDMTAuOTkgMTUuODEgMTAgMTguMjkgMTAgMjFoMmMwLTIuMTYuNzYtNC4xNCAyLjAzLTUuNjlsMS40MyAxLjQzQzE0LjU1IDE3LjkxIDE0IDE5LjM5IDE0IDIxaDJjMC0xLjA2LjMzLTIuMDMuODktMi44NEwxOS43MyAyMSAyMSAxOS43MyA0LjI3IDMgMyA0LjI3ek0xNCAzaC0yYzAgMS41LS4zNyAyLjkxLTEuMDIgNC4xNmwxLjQ2IDEuNDZDMTMuNDIgNi45OCAxNCA1LjA2IDE0IDN6bTUuOTQgMTMuMTJjLjM0LS4wOC42OS0uMTIgMS4wNi0uMTJ2LTJjLS45NCAwLTEuODQuMTktMi42Ni41MmwxLjYgMS42em0tNC41Ni00LjU2bDEuNDYgMS40NkMxOC4wOSAxMi4zNyAxOS41IDEyIDIxIDEydi0yYy0yLjA2IDAtMy45OC41OC01LjYyIDEuNTZ6Ij48L3BhdGg+PC9nPgo8ZyBpZD0ibGVucyI+PHBhdGggZD0iTTEyIDJDNi40OCAyIDIgNi40OCAyIDEyczQuNDggMTAgMTAgMTAgMTAtNC40OCAxMC0xMFMxNy41MiAyIDEyIDJ6Ij48L3BhdGg+PC9nPgo8ZyBpZD0ibGlua2VkLWNhbWVyYSI+PGNpcmNsZSBjeD0iMTIiIGN5PSIxNCIgcj0iMy4yIj48L2NpcmNsZT48cGF0aCBkPSJNMTYgMy4zM2MyLjU4IDAgNC42NyAyLjA5IDQuNjcgNC42N0gyMmMwLTMuMzEtMi42OS02LTYtNnYxLjMzTTE2IDZjMS4xMSAwIDIgLjg5IDIgMmgxLjMzYzAtMS44NC0xLjQ5LTMuMzMtMy4zMy0zLjMzVjYiPjwvcGF0aD48cGF0aCBkPSJNMTcgOWMwLTEuMTEtLjg5LTItMi0yVjRIOUw3LjE3IDZINGMtMS4xIDAtMiAuOS0yIDJ2MTJjMCAxLjEuOSAyIDIgMmgxNmMxLjEgMCAyLS45IDItMlY5aC01em0tNSAxMGMtMi43NiAwLTUtMi4yNC01LTVzMi4yNC01IDUtNSA1IDIuMjQgNSA1LTIuMjQgNS01IDV6Ij48L3BhdGg+PC9nPgo8ZyBpZD0ibG9va3MiPjxwYXRoIGQ9Ik0xMiAxMGMtMy44NiAwLTcgMy4xNC03IDdoMmMwLTIuNzYgMi4yNC01IDUtNXM1IDIuMjQgNSA1aDJjMC0zLjg2LTMuMTQtNy03LTd6bTAtNEM1LjkzIDYgMSAxMC45MyAxIDE3aDJjMC00Ljk2IDQuMDQtOSA5LTlzOSA0LjA0IDkgOWgyYzAtNi4wNy00LjkzLTExLTExLTExeiI+PC9wYXRoPjwvZz4KPGcgaWQ9Imxvb2tzLTMiPjxwYXRoIGQ9Ik0xOS4wMSAzaC0xNGMtMS4xIDAtMiAuOS0yIDJ2MTRjMCAxLjEuOSAyIDIgMmgxNGMxLjEgMCAyLS45IDItMlY1YzAtMS4xLS45LTItMi0yem0tNCA3LjVjMCAuODMtLjY3IDEuNS0xLjUgMS41LjgzIDAgMS41LjY3IDEuNSAxLjVWMTVjMCAxLjExLS45IDItMiAyaC00di0yaDR2LTJoLTJ2LTJoMlY5aC00VjdoNGMxLjEgMCAyIC44OSAyIDJ2MS41eiI+PC9wYXRoPjwvZz4KPGcgaWQ9Imxvb2tzLTQiPjxwYXRoIGQ9Ik0xOSAzSDVjLTEuMSAwLTIgLjktMiAydjE0YzAgMS4xLjkgMiAyIDJoMTRjMS4xIDAgMi0uOSAyLTJWNWMwLTEuMS0uOS0yLTItMnptLTQgMTRoLTJ2LTRIOVY3aDJ2NGgyVjdoMnYxMHoiPjwvcGF0aD48L2c+CjxnIGlkPSJsb29rcy01Ij48cGF0aCBkPSJNMTkgM0g1Yy0xLjEgMC0yIC45LTIgMnYxNGMwIDEuMS45IDIgMiAyaDE0YzEuMSAwIDItLjkgMi0yVjVjMC0xLjEtLjktMi0yLTJ6bS00IDZoLTR2MmgyYzEuMSAwIDIgLjg5IDIgMnYyYzAgMS4xMS0uOSAyLTIgMkg5di0yaDR2LTJIOVY3aDZ2MnoiPjwvcGF0aD48L2c+CjxnIGlkPSJsb29rcy02Ij48cGF0aCBkPSJNMTEgMTVoMnYtMmgtMnYyem04LTEySDVjLTEuMSAwLTIgLjktMiAydjE0YzAgMS4xLjkgMiAyIDJoMTRjMS4xIDAgMi0uOSAyLTJWNWMwLTEuMS0uOS0yLTItMnptLTQgNmgtNHYyaDJjMS4xIDAgMiAuODkgMiAydjJjMCAxLjExLS45IDItMiAyaC0yYy0xLjEgMC0yLS44OS0yLTJWOWMwLTEuMTEuOS0yIDItMmg0djJ6Ij48L3BhdGg+PC9nPgo8ZyBpZD0ibG9va3Mtb25lIj48cGF0aCBkPSJNMTkgM0g1Yy0xLjEgMC0yIC45LTIgMnYxNGMwIDEuMS45IDIgMiAyaDE0YzEuMSAwIDItLjkgMi0yVjVjMC0xLjEtLjktMi0yLTJ6bS01IDE0aC0yVjloLTJWN2g0djEweiI+PC9wYXRoPjwvZz4KPGcgaWQ9Imxvb2tzLXR3byI+PHBhdGggZD0iTTE5IDNINWMtMS4xIDAtMiAuOS0yIDJ2MTRjMCAxLjEuOSAyIDIgMmgxNGMxLjEgMCAyLS45IDItMlY1YzAtMS4xLS45LTItMi0yem0tNCA4YzAgMS4xMS0uOSAyLTIgMmgtMnYyaDR2Mkg5di00YzAtMS4xMS45LTIgMi0yaDJWOUg5VjdoNGMxLjEgMCAyIC44OSAyIDJ2MnoiPjwvcGF0aD48L2c+CjxnIGlkPSJsb3VwZSI+PHBhdGggZD0iTTEzIDdoLTJ2NEg3djJoNHY0aDJ2LTRoNHYtMmgtNFY3em0tMS01QzYuNDkgMiAyIDYuNDkgMiAxMnM0LjQ5IDEwIDEwIDEwaDhjMS4xIDAgMi0uOSAyLTJ2LThjMC01LjUxLTQuNDktMTAtMTAtMTB6bTAgMThjLTQuNDEgMC04LTMuNTktOC04czMuNTktOCA4LTggOCAzLjU5IDggOC0zLjU5IDgtOCA4eiI+PC9wYXRoPjwvZz4KPGcgaWQ9Im1vbm9jaHJvbWUtcGhvdG9zIj48cGF0aCBkPSJNMjAgNWgtMy4yTDE1IDNIOUw3LjIgNUg0Yy0xLjEgMC0yIC45LTIgMnYxMmMwIDEuMS45IDIgMiAyaDE2YzEuMSAwIDItLjkgMi0yVjdjMC0xLjEtLjktMi0yLTJ6bTAgMTRoLTh2LTFjLTIuOCAwLTUtMi4yLTUtNXMyLjItNSA1LTVWN2g4djEyem0tMy02YzAtMi44LTIuMi01LTUtNXYxLjhjMS44IDAgMy4yIDEuNCAzLjIgMy4ycy0xLjQgMy4yLTMuMiAzLjJWMThjMi44IDAgNS0yLjIgNS01em0tOC4yIDBjMCAxLjggMS40IDMuMiAzLjIgMy4yVjkuOGMtMS44IDAtMy4yIDEuNC0zLjIgMy4yeiI+PC9wYXRoPjwvZz4KPGcgaWQ9Im1vdmllLWNyZWF0aW9uIj48cGF0aCBkPSJNMTggNGwyIDRoLTNsLTItNGgtMmwyIDRoLTNsLTItNEg4bDIgNEg3TDUgNEg0Yy0xLjEgMC0xLjk5LjktMS45OSAyTDIgMThjMCAxLjEuOSAyIDIgMmgxNmMxLjEgMCAyLS45IDItMlY0aC00eiI+PC9wYXRoPjwvZz4KPGcgaWQ9Im1vdmllLWZpbHRlciI+PHBhdGggZD0iTTE4IDRsMiAzaC0zbC0yLTNoLTJsMiAzaC0zbC0yLTNIOGwyIDNIN0w1IDRINGMtMS4xIDAtMS45OS45LTEuOTkgMkwyIDE4YzAgMS4xLjkgMiAyIDJoMTZjMS4xIDAgMi0uOSAyLTJWNGgtNHptLTYuNzUgMTEuMjVMMTAgMThsLTEuMjUtMi43NUw2IDE0bDIuNzUtMS4yNUwxMCAxMGwxLjI1IDIuNzVMMTQgMTRsLTIuNzUgMS4yNXptNS42OS0zLjMxTDE2IDE0bC0uOTQtMi4wNkwxMyAxMWwyLjA2LS45NEwxNiA4bC45NCAyLjA2TDE5IDExbC0yLjA2Ljk0eiI+PC9wYXRoPjwvZz4KPGcgaWQ9Im11c2ljLW5vdGUiPjxwYXRoIGQ9Ik0xMiAzdjEwLjU1Yy0uNTktLjM0LTEuMjctLjU1LTItLjU1LTIuMjEgMC00IDEuNzktNCA0czEuNzkgNCA0IDQgNC0xLjc5IDQtNFY3aDRWM2gtNnoiPjwvcGF0aD48L2c+CjxnIGlkPSJuYXR1cmUiPjxwYXRoIGQ9Ik0xMyAxNi4xMmMzLjQ3LS40MSA2LjE3LTMuMzYgNi4xNy02Ljk1IDAtMy44Ny0zLjEzLTctNy03cy03IDMuMTMtNyA3YzAgMy40NyAyLjUyIDYuMzQgNS44MyA2Ljg5VjIwSDV2MmgxNHYtMmgtNnYtMy44OHoiPjwvcGF0aD48L2c+CjxnIGlkPSJuYXR1cmUtcGVvcGxlIj48cGF0aCBkPSJNMjIuMTcgOS4xN2MwLTMuODctMy4xMy03LTctN3MtNyAzLjEzLTcgN2MwIDMuNDcgMi41MiA2LjM0IDUuODMgNi44OVYyMEg2di0zaDF2LTRjMC0uNTUtLjQ1LTEtMS0xSDNjLS41NSAwLTEgLjQ1LTEgMXY0aDF2NWgxNnYtMmgtM3YtMy44OGMzLjQ3LS40MSA2LjE3LTMuMzYgNi4xNy02Ljk1ek00LjUgMTFjLjgzIDAgMS41LS42NyAxLjUtMS41UzUuMzMgOCA0LjUgOCAzIDguNjcgMyA5LjUgMy42NyAxMSA0LjUgMTF6Ij48L3BhdGg+PC9nPgo8ZyBpZD0ibmF2aWdhdGUtYmVmb3JlIj48cGF0aCBkPSJNMTUuNDEgNy40MUwxNCA2bC02IDYgNiA2IDEuNDEtMS40MUwxMC44MyAxMnoiPjwvcGF0aD48L2c+CjxnIGlkPSJuYXZpZ2F0ZS1uZXh0Ij48cGF0aCBkPSJNMTAgNkw4LjU5IDcuNDEgMTMuMTcgMTJsLTQuNTggNC41OUwxMCAxOGw2LTZ6Ij48L3BhdGg+PC9nPgo8ZyBpZD0icGFsZXR0ZSI+PHBhdGggZD0iTTEyIDNjLTQuOTcgMC05IDQuMDMtOSA5czQuMDMgOSA5IDljLjgzIDAgMS41LS42NyAxLjUtMS41IDAtLjM5LS4xNS0uNzQtLjM5LTEuMDEtLjIzLS4yNi0uMzgtLjYxLS4zOC0uOTkgMC0uODMuNjctMS41IDEuNS0xLjVIMTZjMi43NiAwIDUtMi4yNCA1LTUgMC00LjQyLTQuMDMtOC05LTh6bS01LjUgOWMtLjgzIDAtMS41LS42Ny0xLjUtMS41UzUuNjcgOSA2LjUgOSA4IDkuNjcgOCAxMC41IDcuMzMgMTIgNi41IDEyem0zLTRDOC42NyA4IDggNy4zMyA4IDYuNVM4LjY3IDUgOS41IDVzMS41LjY3IDEuNSAxLjVTMTAuMzMgOCA5LjUgOHptNSAwYy0uODMgMC0xLjUtLjY3LTEuNS0xLjVTMTMuNjcgNSAxNC41IDVzMS41LjY3IDEuNSAxLjVTMTUuMzMgOCAxNC41IDh6bTMgNGMtLjgzIDAtMS41LS42Ny0xLjUtMS41UzE2LjY3IDkgMTcuNSA5czEuNS42NyAxLjUgMS41LS42NyAxLjUtMS41IDEuNXoiPjwvcGF0aD48L2c+CjxnIGlkPSJwYW5vcmFtYSI+PHBhdGggZD0iTTIzIDE4VjZjMC0xLjEtLjktMi0yLTJIM2MtMS4xIDAtMiAuOS0yIDJ2MTJjMCAxLjEuOSAyIDIgMmgxOGMxLjEgMCAyLS45IDItMnpNOC41IDEyLjVsMi41IDMuMDFMMTQuNSAxMWw0LjUgNkg1bDMuNS00LjV6Ij48L3BhdGg+PC9nPgo8ZyBpZD0icGFub3JhbWEtZmlzaC1leWUiPjxwYXRoIGQ9Ik0xMiAyQzYuNDcgMiAyIDYuNDcgMiAxMnM0LjQ3IDEwIDEwIDEwIDEwLTQuNDcgMTAtMTBTMTcuNTMgMiAxMiAyem0wIDE4Yy00LjQxIDAtOC0zLjU5LTgtOHMzLjU5LTggOC04IDggMy41OSA4IDgtMy41OSA4LTggOHoiPjwvcGF0aD48L2c+CjxnIGlkPSJwYW5vcmFtYS1ob3Jpem9udGFsIj48cGF0aCBkPSJNMjAgNi41NHYxMC45MWMtMi42LS43Ny01LjI4LTEuMTYtOC0xLjE2LTIuNzIgMC01LjQuMzktOCAxLjE2VjYuNTRjMi42Ljc3IDUuMjggMS4xNiA4IDEuMTYgMi43Mi4wMSA1LjQtLjM4IDgtMS4xNk0yMS40MyA0Yy0uMSAwLS4yLjAyLS4zMS4wNkMxOC4xOCA1LjE2IDE1LjA5IDUuNyAxMiA1LjdjLTMuMDkgMC02LjE4LS41NS05LjEyLTEuNjQtLjExLS4wNC0uMjItLjA2LS4zMS0uMDYtLjM0IDAtLjU3LjIzLS41Ny42M3YxNC43NWMwIC4zOS4yMy42Mi41Ny42Mi4xIDAgLjItLjAyLjMxLS4wNiAyLjk0LTEuMSA2LjAzLTEuNjQgOS4xMi0xLjY0IDMuMDkgMCA2LjE4LjU1IDkuMTIgMS42NC4xMS4wNC4yMS4wNi4zMS4wNi4zMyAwIC41Ny0uMjMuNTctLjYzVjQuNjNjMC0uNC0uMjQtLjYzLS41Ny0uNjN6Ij48L3BhdGg+PC9nPgo8ZyBpZD0icGFub3JhbWEtdmVydGljYWwiPjxwYXRoIGQ9Ik0xOS45NCAyMS4xMmMtMS4xLTIuOTQtMS42NC02LjAzLTEuNjQtOS4xMiAwLTMuMDkuNTUtNi4xOCAxLjY0LTkuMTIuMDQtLjExLjA2LS4yMi4wNi0uMzEgMC0uMzQtLjIzLS41Ny0uNjMtLjU3SDQuNjNjLS40IDAtLjYzLjIzLS42My41NyAwIC4xLjAyLjIuMDYuMzFDNS4xNiA1LjgyIDUuNzEgOC45MSA1LjcxIDEyYzAgMy4wOS0uNTUgNi4xOC0xLjY0IDkuMTItLjA1LjExLS4wNy4yMi0uMDcuMzEgMCAuMzMuMjMuNTcuNjMuNTdoMTQuNzVjLjM5IDAgLjYzLS4yNC42My0uNTctLjAxLS4xLS4wMy0uMi0uMDctLjMxek02LjU0IDIwYy43Ny0yLjYgMS4xNi01LjI4IDEuMTYtOCAwLTIuNzItLjM5LTUuNC0xLjE2LThoMTAuOTFjLS43NyAyLjYtMS4xNiA1LjI4LTEuMTYgOCAwIDIuNzIuMzkgNS40IDEuMTYgOEg2LjU0eiI+PC9wYXRoPjwvZz4KPGcgaWQ9InBhbm9yYW1hLXdpZGUtYW5nbGUiPjxwYXRoIGQ9Ik0xMiA2YzIuNDUgMCA0LjcxLjIgNy4yOS42NC40NyAxLjc4LjcxIDMuNTguNzEgNS4zNiAwIDEuNzgtLjI0IDMuNTgtLjcxIDUuMzYtMi41OC40NC00Ljg0LjY0LTcuMjkuNjRzLTQuNzEtLjItNy4yOS0uNjRDNC4yNCAxNS41OCA0IDEzLjc4IDQgMTJjMC0xLjc4LjI0LTMuNTguNzEtNS4zNkM3LjI5IDYuMiA5LjU1IDYgMTIgNm0wLTJjLTIuNzMgMC01LjIyLjI0LTcuOTUuNzJsLS45My4xNi0uMjUuOUMyLjI5IDcuODUgMiA5LjkzIDIgMTJzLjI5IDQuMTUuODcgNi4yMmwuMjUuODkuOTMuMTZjMi43My40OSA1LjIyLjczIDcuOTUuNzNzNS4yMi0uMjQgNy45NS0uNzJsLjkzLS4xNi4yNS0uODljLjU4LTIuMDguODctNC4xNi44Ny02LjIzcy0uMjktNC4xNS0uODctNi4yMmwtLjI1LS44OS0uOTMtLjE2QzE3LjIyIDQuMjQgMTQuNzMgNCAxMiA0eiI+PC9wYXRoPjwvZz4KPGcgaWQ9InBob3RvIj48cGF0aCBkPSJNMjEgMTlWNWMwLTEuMS0uOS0yLTItMkg1Yy0xLjEgMC0yIC45LTIgMnYxNGMwIDEuMS45IDIgMiAyaDE0YzEuMSAwIDItLjkgMi0yek04LjUgMTMuNWwyLjUgMy4wMUwxNC41IDEybDQuNSA2SDVsMy41LTQuNXoiPjwvcGF0aD48L2c+CjxnIGlkPSJwaG90by1hbGJ1bSI+PHBhdGggZD0iTTE4IDJINmMtMS4xIDAtMiAuOS0yIDJ2MTZjMCAxLjEuOSAyIDIgMmgxMmMxLjEgMCAyLS45IDItMlY0YzAtMS4xLS45LTItMi0yek02IDRoNXY4bC0yLjUtMS41TDYgMTJWNHptMCAxNWwzLTMuODYgMi4xNCAyLjU4IDMtMy44NkwxOCAxOUg2eiI+PC9wYXRoPjwvZz4KPGcgaWQ9InBob3RvLWNhbWVyYSI+PGNpcmNsZSBjeD0iMTIiIGN5PSIxMiIgcj0iMy4yIj48L2NpcmNsZT48cGF0aCBkPSJNOSAyTDcuMTcgNEg0Yy0xLjEgMC0yIC45LTIgMnYxMmMwIDEuMS45IDIgMiAyaDE2YzEuMSAwIDItLjkgMi0yVjZjMC0xLjEtLjktMi0yLTJoLTMuMTdMMTUgMkg5em0zIDE1Yy0yLjc2IDAtNS0yLjI0LTUtNXMyLjI0LTUgNS01IDUgMi4yNCA1IDUtMi4yNCA1LTUgNXoiPjwvcGF0aD48L2c+CjxnIGlkPSJwaG90by1maWx0ZXIiPjxwYXRoIGQ9Ik0xOS4wMiAxMHY5SDVWNWg5VjNINS4wMmMtMS4xIDAtMiAuOS0yIDJ2MTRjMCAxLjEuOSAyIDIgMmgxNGMxLjEgMCAyLS45IDItMnYtOWgtMnpNMTcgMTBsLjk0LTIuMDZMMjAgN2wtMi4wNi0uOTRMMTcgNGwtLjk0IDIuMDZMMTQgN2wyLjA2Ljk0em0tMy43NS43NUwxMiA4bC0xLjI1IDIuNzVMOCAxMmwyLjc1IDEuMjVMMTIgMTZsMS4yNS0yLjc1TDE2IDEyeiI+PC9wYXRoPjwvZz4KPGcgaWQ9InBob3RvLWxpYnJhcnkiPjxwYXRoIGQ9Ik0yMiAxNlY0YzAtMS4xLS45LTItMi0ySDhjLTEuMSAwLTIgLjktMiAydjEyYzAgMS4xLjkgMiAyIDJoMTJjMS4xIDAgMi0uOSAyLTJ6bS0xMS00bDIuMDMgMi43MUwxNiAxMWw0IDVIOGwzLTR6TTIgNnYxNGMwIDEuMS45IDIgMiAyaDE0di0ySDRWNkgyeiI+PC9wYXRoPjwvZz4KPGcgaWQ9InBob3RvLXNpemUtc2VsZWN0LWFjdHVhbCI+PHBhdGggZD0iTTIxIDNIM0MyIDMgMSA0IDEgNXYxNGMwIDEuMS45IDIgMiAyaDE4YzEgMCAyLTEgMi0yVjVjMC0xLTEtMi0yLTJ6TTUgMTdsMy41LTQuNSAyLjUgMy4wMUwxNC41IDExbDQuNSA2SDV6Ij48L3BhdGg+PC9nPgo8ZyBpZD0icGhvdG8tc2l6ZS1zZWxlY3QtbGFyZ2UiPjxwYXRoIGQ9Ik0yMSAxNWgydjJoLTJ2LTJ6bTAtNGgydjJoLTJ2LTJ6bTIgOGgtMnYyYzEgMCAyLTEgMi0yek0xMyAzaDJ2MmgtMlYzem04IDRoMnYyaC0yVjd6bTAtNHYyaDJjMC0xLTEtMi0yLTJ6TTEgN2gydjJIMVY3em0xNi00aDJ2MmgtMlYzem0wIDE2aDJ2MmgtMnYtMnpNMyAzQzIgMyAxIDQgMSA1aDJWM3ptNiAwaDJ2Mkg5VjN6TTUgM2gydjJINVYzem0tNCA4djhjMCAxLjEuOSAyIDIgMmgxMlYxMUgxem0yIDhsMi41LTMuMjEgMS43OSAyLjE1IDIuNS0zLjIyTDEzIDE5SDN6Ij48L3BhdGg+PC9nPgo8ZyBpZD0icGhvdG8tc2l6ZS1zZWxlY3Qtc21hbGwiPjxwYXRoIGQ9Ik0yMyAxNWgtMnYyaDJ2LTJ6bTAtNGgtMnYyaDJ2LTJ6bTAgOGgtMnYyYzEgMCAyLTEgMi0yek0xNSAzaC0ydjJoMlYzem04IDRoLTJ2MmgyVjd6bS0yLTR2MmgyYzAtMS0xLTItMi0yek0zIDIxaDh2LTZIMXY0YzAgMS4xLjkgMiAyIDJ6TTMgN0gxdjJoMlY3em0xMiAxMmgtMnYyaDJ2LTJ6bTQtMTZoLTJ2MmgyVjN6bTAgMTZoLTJ2Mmgydi0yek0zIDNDMiAzIDEgNCAxIDVoMlYzem0wIDhIMXYyaDJ2LTJ6bTgtOEg5djJoMlYzek03IDNINXYyaDJWM3oiPjwvcGF0aD48L2c+CjxnIGlkPSJwaWN0dXJlLWFzLXBkZiI+PHBhdGggZD0iTTIwIDJIOGMtMS4xIDAtMiAuOS0yIDJ2MTJjMCAxLjEuOSAyIDIgMmgxMmMxLjEgMCAyLS45IDItMlY0YzAtMS4xLS45LTItMi0yem0tOC41IDcuNWMwIC44My0uNjcgMS41LTEuNSAxLjVIOXYySDcuNVY3SDEwYy44MyAwIDEuNS42NyAxLjUgMS41djF6bTUgMmMwIC44My0uNjcgMS41LTEuNSAxLjVoLTIuNVY3SDE1Yy44MyAwIDEuNS42NyAxLjUgMS41djN6bTQtM0gxOXYxaDEuNVYxMUgxOXYyaC0xLjVWN2gzdjEuNXpNOSA5LjVoMXYtMUg5djF6TTQgNkgydjE0YzAgMS4xLjkgMiAyIDJoMTR2LTJINFY2em0xMCA1LjVoMXYtM2gtMXYzeiI+PC9wYXRoPjwvZz4KPGcgaWQ9InBvcnRyYWl0Ij48cGF0aCBkPSJNMTIgMTIuMjVjMS4yNCAwIDIuMjUtMS4wMSAyLjI1LTIuMjVTMTMuMjQgNy43NSAxMiA3Ljc1IDkuNzUgOC43NiA5Ljc1IDEwczEuMDEgMi4yNSAyLjI1IDIuMjV6bTQuNSA0YzAtMS41LTMtMi4yNS00LjUtMi4yNXMtNC41Ljc1LTQuNSAyLjI1VjE3aDl2LS43NXpNMTkgM0g1Yy0xLjEgMC0yIC45LTIgMnYxNGMwIDEuMS45IDIgMiAyaDE0YzEuMSAwIDItLjkgMi0yVjVjMC0xLjEtLjktMi0yLTJ6bTAgMTZINVY1aDE0djE0eiI+PC9wYXRoPjwvZz4KPGcgaWQ9InJlbW92ZS1yZWQtZXllIj48cGF0aCBkPSJNMTIgNC41QzcgNC41IDIuNzMgNy42MSAxIDEyYzEuNzMgNC4zOSA2IDcuNSAxMSA3LjVzOS4yNy0zLjExIDExLTcuNWMtMS43My00LjM5LTYtNy41LTExLTcuNXpNMTIgMTdjLTIuNzYgMC01LTIuMjQtNS01czIuMjQtNSA1LTUgNSAyLjI0IDUgNS0yLjI0IDUtNSA1em0wLThjLTEuNjYgMC0zIDEuMzQtMyAzczEuMzQgMyAzIDMgMy0xLjM0IDMtMy0xLjM0LTMtMy0zeiI+PC9wYXRoPjwvZz4KPGcgaWQ9InJvdGF0ZS05MC1kZWdyZWVzLWNjdyI+PHBhdGggZD0iTTcuMzQgNi40MUwuODYgMTIuOWw2LjQ5IDYuNDggNi40OS02LjQ4LTYuNS02LjQ5ek0zLjY5IDEyLjlsMy42Ni0zLjY2TDExIDEyLjlsLTMuNjYgMy42Ni0zLjY1LTMuNjZ6bTE1LjY3LTYuMjZDMTcuNjEgNC44OCAxNS4zIDQgMTMgNFYuNzZMOC43NiA1IDEzIDkuMjRWNmMxLjc5IDAgMy41OC42OCA0Ljk1IDIuMDUgMi43MyAyLjczIDIuNzMgNy4xNyAwIDkuOUMxNi41OCAxOS4zMiAxNC43OSAyMCAxMyAyMGMtLjk3IDAtMS45NC0uMjEtMi44NC0uNjFsLTEuNDkgMS40OUMxMC4wMiAyMS42MiAxMS41MSAyMiAxMyAyMmMyLjMgMCA0LjYxLS44OCA2LjM2LTIuNjQgMy41Mi0zLjUxIDMuNTItOS4yMSAwLTEyLjcyeiI+PC9wYXRoPjwvZz4KPGcgaWQ9InJvdGF0ZS1sZWZ0Ij48cGF0aCBkPSJNNy4xMSA4LjUzTDUuNyA3LjExQzQuOCA4LjI3IDQuMjQgOS42MSA0LjA3IDExaDIuMDJjLjE0LS44Ny40OS0xLjcyIDEuMDItMi40N3pNNi4wOSAxM0g0LjA3Yy4xNyAxLjM5LjcyIDIuNzMgMS42MiAzLjg5bDEuNDEtMS40MmMtLjUyLS43NS0uODctMS41OS0xLjAxLTIuNDd6bTEuMDEgNS4zMmMxLjE2LjkgMi41MSAxLjQ0IDMuOSAxLjYxVjE3LjljLS44Ny0uMTUtMS43MS0uNDktMi40Ni0xLjAzTDcuMSAxOC4zMnpNMTMgNC4wN1YxTDguNDUgNS41NSAxMyAxMFY2LjA5YzIuODQuNDggNSAyLjk0IDUgNS45MXMtMi4xNiA1LjQzLTUgNS45MXYyLjAyYzMuOTUtLjQ5IDctMy44NSA3LTcuOTNzLTMuMDUtNy40NC03LTcuOTN6Ij48L3BhdGg+PC9nPgo8ZyBpZD0icm90YXRlLXJpZ2h0Ij48cGF0aCBkPSJNMTUuNTUgNS41NUwxMSAxdjMuMDdDNy4wNiA0LjU2IDQgNy45MiA0IDEyczMuMDUgNy40NCA3IDcuOTN2LTIuMDJjLTIuODQtLjQ4LTUtMi45NC01LTUuOTFzMi4xNi01LjQzIDUtNS45MVYxMGw0LjU1LTQuNDV6TTE5LjkzIDExYy0uMTctMS4zOS0uNzItMi43My0xLjYyLTMuODlsLTEuNDIgMS40MmMuNTQuNzUuODggMS42IDEuMDIgMi40N2gyLjAyek0xMyAxNy45djIuMDJjMS4zOS0uMTcgMi43NC0uNzEgMy45LTEuNjFsLTEuNDQtMS40NGMtLjc1LjU0LTEuNTkuODktMi40NiAxLjAzem0zLjg5LTIuNDJsMS40MiAxLjQxYy45LTEuMTYgMS40NS0yLjUgMS42Mi0zLjg5aC0yLjAyYy0uMTQuODctLjQ4IDEuNzItMS4wMiAyLjQ4eiI+PC9wYXRoPjwvZz4KPGcgaWQ9InNsaWRlc2hvdyI+PHBhdGggZD0iTTEwIDh2OGw1LTQtNS00em05LTVINWMtMS4xIDAtMiAuOS0yIDJ2MTRjMCAxLjEuOSAyIDIgMmgxNGMxLjEgMCAyLS45IDItMlY1YzAtMS4xLS45LTItMi0yem0wIDE2SDVWNWgxNHYxNHoiPjwvcGF0aD48L2c+CjxnIGlkPSJzdHJhaWdodGVuIj48cGF0aCBkPSJNMjEgNkgzYy0xLjEgMC0yIC45LTIgMnY4YzAgMS4xLjkgMiAyIDJoMThjMS4xIDAgMi0uOSAyLTJWOGMwLTEuMS0uOS0yLTItMnptMCAxMEgzVjhoMnY0aDJWOGgydjRoMlY4aDJ2NGgyVjhoMnY0aDJWOGgydjh6Ij48L3BhdGg+PC9nPgo8ZyBpZD0ic3R5bGUiPjxwYXRoIGQ9Ik0yLjUzIDE5LjY1bDEuMzQuNTZ2LTkuMDNsLTIuNDMgNS44NmMtLjQxIDEuMDIuMDggMi4xOSAxLjA5IDIuNjF6bTE5LjUtMy43TDE3LjA3IDMuOThjLS4zMS0uNzUtMS4wNC0xLjIxLTEuODEtMS4yMy0uMjYgMC0uNTMuMDQtLjc5LjE1TDcuMSA1Ljk1Yy0uNzUuMzEtMS4yMSAxLjAzLTEuMjMgMS44LS4wMS4yNy4wNC41NC4xNS44bDQuOTYgMTEuOTdjLjMxLjc2IDEuMDUgMS4yMiAxLjgzIDEuMjMuMjYgMCAuNTItLjA1Ljc3LS4xNWw3LjM2LTMuMDVjMS4wMi0uNDIgMS41MS0xLjU5IDEuMDktMi42ek03Ljg4IDguNzVjLS41NSAwLTEtLjQ1LTEtMXMuNDUtMSAxLTEgMSAuNDUgMSAxLS40NSAxLTEgMXptLTIgMTFjMCAxLjEuOSAyIDIgMmgxLjQ1bC0zLjQ1LTguMzR2Ni4zNHoiPjwvcGF0aD48L2c+CjxnIGlkPSJzd2l0Y2gtY2FtZXJhIj48cGF0aCBkPSJNMjAgNGgtMy4xN0wxNSAySDlMNy4xNyA0SDRjLTEuMSAwLTIgLjktMiAydjEyYzAgMS4xLjkgMiAyIDJoMTZjMS4xIDAgMi0uOSAyLTJWNmMwLTEuMS0uOS0yLTItMnptLTUgMTEuNVYxM0g5djIuNUw1LjUgMTIgOSA4LjVWMTFoNlY4LjVsMy41IDMuNS0zLjUgMy41eiI+PC9wYXRoPjwvZz4KPGcgaWQ9InN3aXRjaC12aWRlbyI+PHBhdGggZD0iTTE4IDkuNVY2YzAtLjU1LS40NS0xLTEtMUgzYy0uNTUgMC0xIC40NS0xIDF2MTJjMCAuNTUuNDUgMSAxIDFoMTRjLjU1IDAgMS0uNDUgMS0xdi0zLjVsNCA0di0xM2wtNCA0em0tNSA2VjEzSDd2Mi41TDMuNSAxMiA3IDguNVYxMWg2VjguNWwzLjUgMy41LTMuNSAzLjV6Ij48L3BhdGg+PC9nPgo8ZyBpZD0idGFnLWZhY2VzIj48cGF0aCBkPSJNMTEuOTkgMkM2LjQ3IDIgMiA2LjQ4IDIgMTJzNC40NyAxMCA5Ljk5IDEwQzE3LjUyIDIyIDIyIDE3LjUyIDIyIDEyUzE3LjUyIDIgMTEuOTkgMnpNMTIgMjBjLTQuNDIgMC04LTMuNTgtOC04czMuNTgtOCA4LTggOCAzLjU4IDggOC0zLjU4IDgtOCA4em0zLjUtOWMuODMgMCAxLjUtLjY3IDEuNS0xLjVTMTYuMzMgOCAxNS41IDggMTQgOC42NyAxNCA5LjVzLjY3IDEuNSAxLjUgMS41em0tNyAwYy44MyAwIDEuNS0uNjcgMS41LTEuNVM5LjMzIDggOC41IDggNyA4LjY3IDcgOS41IDcuNjcgMTEgOC41IDExem0zLjUgNi41YzIuMzMgMCA0LjMxLTEuNDYgNS4xMS0zLjVINi44OWMuOCAyLjA0IDIuNzggMy41IDUuMTEgMy41eiI+PC9wYXRoPjwvZz4KPGcgaWQ9InRleHR1cmUiPjxwYXRoIGQ9Ik0xOS41MSAzLjA4TDMuMDggMTkuNTFjLjA5LjM0LjI3LjY1LjUxLjkuMjUuMjQuNTYuNDIuOS41MUwyMC45MyA0LjQ5Yy0uMTktLjY5LS43My0xLjIzLTEuNDItMS40MXpNMTEuODggM0wzIDExLjg4djIuODNMMTQuNzEgM2gtMi44M3pNNSAzYy0xLjEgMC0yIC45LTIgMnYybDQtNEg1em0xNCAxOGMuNTUgMCAxLjA1LS4yMiAxLjQxLS41OS4zNy0uMzYuNTktLjg2LjU5LTEuNDF2LTJsLTQgNGgyem0tOS43MSAwaDIuODNMMjEgMTIuMTJWOS4yOUw5LjI5IDIxeiI+PC9wYXRoPjwvZz4KPGcgaWQ9InRpbWVsYXBzZSI+PHBhdGggZD0iTTE2LjI0IDcuNzZDMTUuMDcgNi41OSAxMy41NCA2IDEyIDZ2NmwtNC4yNCA0LjI0YzIuMzQgMi4zNCA2LjE0IDIuMzQgOC40OSAwIDIuMzQtMi4zNCAyLjM0LTYuMTQtLjAxLTguNDh6TTEyIDJDNi40OCAyIDIgNi40OCAyIDEyczQuNDggMTAgMTAgMTAgMTAtNC40OCAxMC0xMFMxNy41MiAyIDEyIDJ6bTAgMThjLTQuNDIgMC04LTMuNTgtOC04czMuNTgtOCA4LTggOCAzLjU4IDggOC0zLjU4IDgtOCA4eiI+PC9wYXRoPjwvZz4KPGcgaWQ9InRpbWVyIj48cGF0aCBkPSJNMTUgMUg5djJoNlYxem0tNCAxM2gyVjhoLTJ2NnptOC4wMy02LjYxbDEuNDItMS40MmMtLjQzLS41MS0uOS0uOTktMS40MS0xLjQxbC0xLjQyIDEuNDJDMTYuMDcgNC43NCAxNC4xMiA0IDEyIDRjLTQuOTcgMC05IDQuMDMtOSA5czQuMDIgOSA5IDkgOS00LjAzIDktOWMwLTIuMTItLjc0LTQuMDctMS45Ny01LjYxek0xMiAyMGMtMy44NyAwLTctMy4xMy03LTdzMy4xMy03IDctNyA3IDMuMTMgNyA3LTMuMTMgNy03IDd6Ij48L3BhdGg+PC9nPgo8ZyBpZD0idGltZXItMTAiPjxwYXRoIGQ9Ik0wIDcuNzJWOS40bDMtMVYxOGgyVjZoLS4yNUwwIDcuNzJ6bTIzLjc4IDYuNjVjLS4xNC0uMjgtLjM1LS41My0uNjMtLjc0LS4yOC0uMjEtLjYxLS4zOS0xLjAxLS41M3MtLjg1LS4yNy0xLjM1LS4zOGMtLjM1LS4wNy0uNjQtLjE1LS44Ny0uMjMtLjIzLS4wOC0uNDEtLjE2LS41NS0uMjUtLjE0LS4wOS0uMjMtLjE5LS4yOC0uMy0uMDUtLjExLS4wOC0uMjQtLjA4LS4zOSAwLS4xNC4wMy0uMjguMDktLjQxLjA2LS4xMy4xNS0uMjUuMjctLjM0LjEyLS4xLjI3LS4xOC40NS0uMjRzLjQtLjA5LjY0LS4wOWMuMjUgMCAuNDcuMDQuNjYuMTEuMTkuMDcuMzUuMTcuNDguMjkuMTMuMTIuMjIuMjYuMjkuNDIuMDYuMTYuMS4zMi4xLjQ5aDEuOTVjMC0uMzktLjA4LS43NS0uMjQtMS4wOS0uMTYtLjM0LS4zOS0uNjMtLjY5LS44OC0uMy0uMjUtLjY2LS40NC0xLjA5LS41OUMyMS40OSA5LjA3IDIxIDkgMjAuNDYgOWMtLjUxIDAtLjk4LjA3LTEuMzkuMjEtLjQxLjE0LS43Ny4zMy0xLjA2LjU3LS4yOS4yNC0uNTEuNTItLjY3Ljg0LS4xNi4zMi0uMjMuNjUtLjIzIDEuMDFzLjA4LjY5LjIzLjk2Yy4xNS4yOC4zNi41Mi42NC43My4yNy4yMS42LjM4Ljk4LjUzLjM4LjE0LjgxLjI2IDEuMjcuMzYuMzkuMDguNzEuMTcuOTUuMjZzLjQzLjE5LjU3LjI5Yy4xMy4xLjIyLjIyLjI3LjM0LjA1LjEyLjA3LjI1LjA3LjM5IDAgLjMyLS4xMy41Ny0uNC43Ny0uMjcuMi0uNjYuMjktMS4xNy4yOS0uMjIgMC0uNDMtLjAyLS42NC0uMDgtLjIxLS4wNS0uNC0uMTMtLjU2LS4yNC0uMTctLjExLS4zLS4yNi0uNDEtLjQ0LS4xMS0uMTgtLjE3LS40MS0uMTgtLjY3aC0xLjg5YzAgLjM2LjA4LjcxLjI0IDEuMDUuMTYuMzQuMzkuNjUuNy45My4zMS4yNy42OS40OSAxLjE1LjY2LjQ2LjE3Ljk4LjI1IDEuNTguMjUuNTMgMCAxLjAxLS4wNiAxLjQ0LS4xOS40My0uMTMuOC0uMzEgMS4xMS0uNTQuMzEtLjIzLjU0LS41MS43MS0uODMuMTctLjMyLjI1LS42Ny4yNS0xLjA2LS4wMi0uNC0uMDktLjc0LS4yNC0xLjAyem0tOS45Ni03LjMyYy0uMzQtLjQtLjc1LS43LTEuMjMtLjg4LS40Ny0uMTgtMS4wMS0uMjctMS41OS0uMjctLjU4IDAtMS4xMS4wOS0xLjU5LjI3LS40OC4xOC0uODkuNDctMS4yMy44OC0uMzQuNDEtLjYuOTMtLjc5IDEuNTktLjE4LjY1LS4yOCAxLjQ1LS4yOCAyLjM5djEuOTJjMCAuOTQuMDkgMS43NC4yOCAyLjM5LjE5LjY2LjQ1IDEuMTkuOCAxLjYuMzQuNDEuNzUuNzEgMS4yMy44OS40OC4xOCAxLjAxLjI4IDEuNTkuMjguNTkgMCAxLjEyLS4wOSAxLjU5LS4yOC40OC0uMTguODgtLjQ4IDEuMjItLjg5LjM0LS40MS42LS45NC43OC0xLjYuMTgtLjY1LjI4LTEuNDUuMjgtMi4zOXYtMS45MmMwLS45NC0uMDktMS43NC0uMjgtMi4zOS0uMTgtLjY2LS40NC0xLjE5LS43OC0xLjU5em0tLjkyIDYuMTdjMCAuNi0uMDQgMS4xMS0uMTIgMS41My0uMDguNDItLjIuNzYtLjM2IDEuMDItLjE2LjI2LS4zNi40NS0uNTkuNTctLjIzLjEyLS41MS4xOC0uODIuMTgtLjMgMC0uNTgtLjA2LS44Mi0uMThzLS40NC0uMzEtLjYtLjU3Yy0uMTYtLjI2LS4yOS0uNi0uMzgtMS4wMi0uMDktLjQyLS4xMy0uOTMtLjEzLTEuNTN2LTIuNWMwLS42LjA0LTEuMTEuMTMtMS41Mi4wOS0uNDEuMjEtLjc0LjM4LTEgLjE2LS4yNS4zNi0uNDMuNi0uNTUuMjQtLjExLjUxLS4xNy44MS0uMTcuMzEgMCAuNTguMDYuODEuMTcuMjQuMTEuNDQuMjkuNi41NS4xNi4yNS4yOS41OC4zNy45OS4wOC40MS4xMy45Mi4xMyAxLjUydjIuNTF6Ij48L3BhdGg+PC9nPgo8ZyBpZD0idGltZXItMyI+PHBhdGggZD0iTTExLjYxIDEyLjk3Yy0uMTYtLjI0LS4zNi0uNDYtLjYyLS42NS0uMjUtLjE5LS41Ni0uMzUtLjkzLS40OC4zLS4xNC41Ny0uMy44LS41LjIzLS4yLjQyLS40MS41Ny0uNjQuMTUtLjIzLjI3LS40Ni4zNC0uNzEuMDgtLjI0LjExLS40OS4xMS0uNzMgMC0uNTUtLjA5LTEuMDQtLjI4LTEuNDYtLjE4LS40Mi0uNDQtLjc3LS43OC0xLjA2LS4zMy0uMjgtLjczLS41LTEuMi0uNjQtLjQ1LS4xMy0uOTctLjItMS41My0uMi0uNTUgMC0xLjA2LjA4LTEuNTIuMjQtLjQ3LjE3LS44Ny40LTEuMi42OS0uMzMuMjktLjYuNjMtLjc4IDEuMDMtLjIuMzktLjI5LjgzLS4yOSAxLjI5aDEuOThjMC0uMjYuMDUtLjQ5LjE0LS42OS4wOS0uMi4yMi0uMzguMzgtLjUyLjE3LS4xNC4zNi0uMjUuNTgtLjMzLjIyLS4wOC40Ni0uMTIuNzMtLjEyLjYxIDAgMS4wNi4xNiAxLjM2LjQ3LjMuMzEuNDQuNzUuNDQgMS4zMiAwIC4yNy0uMDQuNTItLjEyLjc0LS4wOC4yMi0uMjEuNDEtLjM4LjU3LS4xNy4xNi0uMzguMjgtLjYzLjM3LS4yNS4wOS0uNTUuMTMtLjg5LjEzSDYuNzJ2MS41N0g3LjljLjM0IDAgLjY0LjA0LjkxLjExLjI3LjA4LjUuMTkuNjkuMzUuMTkuMTYuMzQuMzYuNDQuNjEuMS4yNC4xNi41NC4xNi44NyAwIC42Mi0uMTggMS4wOS0uNTMgMS40Mi0uMzUuMzMtLjg0LjQ5LTEuNDUuNDktLjI5IDAtLjU2LS4wNC0uOC0uMTMtLjI0LS4wOC0uNDQtLjItLjYxLS4zNi0uMTctLjE2LS4zLS4zNC0uMzktLjU2LS4wOS0uMjItLjE0LS40Ni0uMTQtLjcySDQuMTljMCAuNTUuMTEgMS4wMy4zMiAxLjQ1LjIxLjQyLjUuNzcuODYgMS4wNXMuNzcuNDkgMS4yNC42My45Ni4yMSAxLjQ4LjIxYy41NyAwIDEuMDktLjA4IDEuNTgtLjIzLjQ5LS4xNS45MS0uMzggMS4yNi0uNjguMzYtLjMuNjQtLjY2Ljg0LTEuMS4yLS40My4zLS45My4zLTEuNDggMC0uMjktLjA0LS41OC0uMTEtLjg2LS4wOC0uMjUtLjE5LS41MS0uMzUtLjc2em05LjI2IDEuNGMtLjE0LS4yOC0uMzUtLjUzLS42My0uNzQtLjI4LS4yMS0uNjEtLjM5LTEuMDEtLjUzcy0uODUtLjI3LTEuMzUtLjM4Yy0uMzUtLjA3LS42NC0uMTUtLjg3LS4yMy0uMjMtLjA4LS40MS0uMTYtLjU1LS4yNS0uMTQtLjA5LS4yMy0uMTktLjI4LS4zLS4wNS0uMTEtLjA4LS4yNC0uMDgtLjM5cy4wMy0uMjguMDktLjQxYy4wNi0uMTMuMTUtLjI1LjI3LS4zNC4xMi0uMS4yNy0uMTguNDUtLjI0cy40LS4wOS42NC0uMDljLjI1IDAgLjQ3LjA0LjY2LjExLjE5LjA3LjM1LjE3LjQ4LjI5LjEzLjEyLjIyLjI2LjI5LjQyLjA2LjE2LjEuMzIuMS40OWgxLjk1YzAtLjM5LS4wOC0uNzUtLjI0LTEuMDktLjE2LS4zNC0uMzktLjYzLS42OS0uODgtLjMtLjI1LS42Ni0uNDQtMS4wOS0uNTktLjQzLS4xNS0uOTItLjIyLTEuNDYtLjIyLS41MSAwLS45OC4wNy0xLjM5LjIxLS40MS4xNC0uNzcuMzMtMS4wNi41Ny0uMjkuMjQtLjUxLjUyLS42Ny44NC0uMTYuMzItLjIzLjY1LS4yMyAxLjAxcy4wOC42OC4yMy45NmMuMTUuMjguMzcuNTIuNjQuNzMuMjcuMjEuNi4zOC45OC41My4zOC4xNC44MS4yNiAxLjI3LjM2LjM5LjA4LjcxLjE3Ljk1LjI2cy40My4xOS41Ny4yOWMuMTMuMS4yMi4yMi4yNy4zNC4wNS4xMi4wNy4yNS4wNy4zOSAwIC4zMi0uMTMuNTctLjQuNzctLjI3LjItLjY2LjI5LTEuMTcuMjktLjIyIDAtLjQzLS4wMi0uNjQtLjA4LS4yMS0uMDUtLjQtLjEzLS41Ni0uMjQtLjE3LS4xMS0uMy0uMjYtLjQxLS40NC0uMTEtLjE4LS4xNy0uNDEtLjE4LS42N2gtMS44OWMwIC4zNi4wOC43MS4yNCAxLjA1LjE2LjM0LjM5LjY1LjcuOTMuMzEuMjcuNjkuNDkgMS4xNS42Ni40Ni4xNy45OC4yNSAxLjU4LjI1LjUzIDAgMS4wMS0uMDYgMS40NC0uMTkuNDMtLjEzLjgtLjMxIDEuMTEtLjU0LjMxLS4yMy41NC0uNTEuNzEtLjgzLjE3LS4zMi4yNS0uNjcuMjUtMS4wNi0uMDItLjQtLjA5LS43NC0uMjQtMS4wMnoiPjwvcGF0aD48L2c+CjxnIGlkPSJ0aW1lci1vZmYiPjxwYXRoIGQ9Ik0xOS4wNCA0LjU1bC0xLjQyIDEuNDJDMTYuMDcgNC43NCAxNC4xMiA0IDEyIDRjLTEuODMgMC0zLjUzLjU1LTQuOTUgMS40OGwxLjQ2IDEuNDZDOS41MyA2LjM1IDEwLjczIDYgMTIgNmMzLjg3IDAgNyAzLjEzIDcgNyAwIDEuMjctLjM1IDIuNDctLjk0IDMuNDlsMS40NSAxLjQ1QzIwLjQ1IDE2LjUzIDIxIDE0LjgzIDIxIDEzYzAtMi4xMi0uNzQtNC4wNy0xLjk3LTUuNjFsMS40Mi0xLjQyLTEuNDEtMS40MnpNMTUgMUg5djJoNlYxem0tNCA4LjQ0bDIgMlY4aC0ydjEuNDR6TTMuMDIgNEwxLjc1IDUuMjcgNC41IDguMDNDMy41NSA5LjQ1IDMgMTEuMTYgMyAxM2MwIDQuOTcgNC4wMiA5IDkgOSAxLjg0IDAgMy41NS0uNTUgNC45OC0xLjVsMi41IDIuNSAxLjI3LTEuMjctNy43MS03LjcxTDMuMDIgNHpNMTIgMjBjLTMuODcgMC03LTMuMTMtNy03IDAtMS4yOC4zNS0yLjQ4Ljk1LTMuNTJsOS41NiA5LjU2Yy0xLjAzLjYxLTIuMjMuOTYtMy41MS45NnoiPjwvcGF0aD48L2c+CjxnIGlkPSJ0b25hbGl0eSI+PHBhdGggZD0iTTEyIDJDNi40OCAyIDIgNi40OCAyIDEyczQuNDggMTAgMTAgMTAgMTAtNC40OCAxMC0xMFMxNy41MiAyIDEyIDJ6bS0xIDE3LjkzYy0zLjk0LS40OS03LTMuODUtNy03LjkzczMuMDUtNy40NCA3LTcuOTN2MTUuODZ6bTItMTUuODZjMS4wMy4xMyAyIC40NSAyLjg3LjkzSDEzdi0uOTN6TTEzIDdoNS4yNGMuMjUuMzEuNDguNjUuNjggMUgxM1Y3em0wIDNoNi43NGMuMDguMzMuMTUuNjYuMTkgMUgxM3YtMXptMCA5LjkzVjE5aDIuODdjLS44Ny40OC0xLjg0LjgtMi44Ny45M3pNMTguMjQgMTdIMTN2LTFoNS45MmMtLjIuMzUtLjQzLjY5LS42OCAxem0xLjUtM0gxM3YtMWg2LjkzYy0uMDQuMzQtLjExLjY3LS4xOSAxeiI+PC9wYXRoPjwvZz4KPGcgaWQ9InRyYW5zZm9ybSI+PHBhdGggZD0iTTIyIDE4di0ySDhWNGgyTDcgMSA0IDRoMnYySDJ2Mmg0djhjMCAxLjEuOSAyIDIgMmg4djJoLTJsMyAzIDMtM2gtMnYtMmg0ek0xMCA4aDZ2NmgyVjhjMC0xLjEtLjktMi0yLTJoLTZ2MnoiPjwvcGF0aD48L2c+CjxnIGlkPSJ0dW5lIj48cGF0aCBkPSJNMyAxN3YyaDZ2LTJIM3pNMyA1djJoMTBWNUgzem0xMCAxNnYtMmg4di0yaC04di0yaC0ydjZoMnpNNyA5djJIM3YyaDR2MmgyVjlIN3ptMTQgNHYtMkgxMXYyaDEwem0tNi00aDJWN2g0VjVoLTRWM2gtMnY2eiI+PC9wYXRoPjwvZz4KPGcgaWQ9InZpZXctY29tZnkiPjxwYXRoIGQ9Ik0zIDloNFY1SDN2NHptMCA1aDR2LTRIM3Y0em01IDBoNHYtNEg4djR6bTUgMGg0di00aC00djR6TTggOWg0VjVIOHY0em01LTR2NGg0VjVoLTR6bTUgOWg0di00aC00djR6TTMgMTloNHYtNEgzdjR6bTUgMGg0di00SDh2NHptNSAwaDR2LTRoLTR2NHptNSAwaDR2LTRoLTR2NHptMC0xNHY0aDRWNWgtNHoiPjwvcGF0aD48L2c+CjxnIGlkPSJ2aWV3LWNvbXBhY3QiPjxwYXRoIGQ9Ik0zIDE5aDZ2LTdIM3Y3em03IDBoMTJ2LTdIMTB2N3pNMyA1djZoMTlWNUgzeiI+PC9wYXRoPjwvZz4KPGcgaWQ9InZpZ25ldHRlIj48cGF0aCBkPSJNMjEgM0gzYy0xLjEgMC0yIC45LTIgMnYxNGMwIDEuMS45IDIgMiAyaDE4YzEuMSAwIDItLjkgMi0yVjVjMC0xLjEtLjktMi0yLTJ6bS05IDE1Yy00LjQyIDAtOC0yLjY5LTgtNnMzLjU4LTYgOC02IDggMi42OSA4IDYtMy41OCA2LTggNnoiPjwvcGF0aD48L2c+CjxnIGlkPSJ3Yi1hdXRvIj48cGF0aCBkPSJNNi44NSAxMi42NWgyLjNMOCA5bC0xLjE1IDMuNjV6TTIyIDdsLTEuMiA2LjI5TDE5LjMgN2gtMS42bC0xLjQ5IDYuMjlMMTUgN2gtLjc2QzEyLjc3IDUuMTcgMTAuNTMgNCA4IDRjLTQuNDIgMC04IDMuNTgtOCA4czMuNTggOCA4IDhjMy4xMyAwIDUuODQtMS44MSA3LjE1LTQuNDNsLjEuNDNIMTdsMS41LTYuMUwyMCAxNmgxLjc1bDIuMDUtOUgyMnptLTExLjcgOWwtLjctMkg2LjRsLS43IDJIMy44TDcgN2gybDMuMiA5aC0xLjl6Ij48L3BhdGg+PC9nPgo8ZyBpZD0id2ItY2xvdWR5Ij48cGF0aCBkPSJNMTkuMzYgMTAuMDRDMTguNjcgNi41OSAxNS42NCA0IDEyIDQgOS4xMSA0IDYuNiA1LjY0IDUuMzUgOC4wNCAyLjM0IDguMzYgMCAxMC45MSAwIDE0YzAgMy4zMSAyLjY5IDYgNiA2aDEzYzIuNzYgMCA1LTIuMjQgNS01IDAtMi42NC0yLjA1LTQuNzgtNC42NC00Ljk2eiI+PC9wYXRoPjwvZz4KPGcgaWQ9IndiLWluY2FuZGVzY2VudCI+PHBhdGggZD0iTTMuNTUgMTguNTRsMS40MSAxLjQxIDEuNzktMS44LTEuNDEtMS40MS0xLjc5IDEuOHpNMTEgMjIuNDVoMlYxOS41aC0ydjIuOTV6TTQgMTAuNUgxdjJoM3YtMnptMTEtNC4xOVYxLjVIOXY0LjgxQzcuMjEgNy4zNSA2IDkuMjggNiAxMS41YzAgMy4zMSAyLjY5IDYgNiA2czYtMi42OSA2LTZjMC0yLjIyLTEuMjEtNC4xNS0zLTUuMTl6bTUgNC4xOXYyaDN2LTJoLTN6bS0yLjc2IDcuNjZsMS43OSAxLjggMS40MS0xLjQxLTEuOC0xLjc5LTEuNCAxLjR6Ij48L3BhdGg+PC9nPgo8ZyBpZD0id2ItaXJpZGVzY2VudCI+PHBhdGggZD0iTTUgMTQuNWgxNHYtNkg1djZ6TTExIC41NVYzLjVoMlYuNTVoLTJ6bTguMDQgMi41bC0xLjc5IDEuNzkgMS40MSAxLjQxIDEuOC0xLjc5LTEuNDItMS40MXpNMTMgMjIuNDVWMTkuNWgtMnYyLjk1aDJ6bTcuNDUtMy45MWwtMS44LTEuNzktMS40MSAxLjQxIDEuNzkgMS44IDEuNDItMS40MnpNMy41NSA0LjQ2bDEuNzkgMS43OSAxLjQxLTEuNDEtMS43OS0xLjc5LTEuNDEgMS40MXptMS40MSAxNS40OWwxLjc5LTEuOC0xLjQxLTEuNDEtMS43OSAxLjc5IDEuNDEgMS40MnoiPjwvcGF0aD48L2c+CjxnIGlkPSJ3Yi1zdW5ueSI+PHBhdGggZD0iTTYuNzYgNC44NGwtMS44LTEuNzktMS40MSAxLjQxIDEuNzkgMS43OSAxLjQyLTEuNDF6TTQgMTAuNUgxdjJoM3YtMnptOS05Ljk1aC0yVjMuNWgyVi41NXptNy40NSAzLjkxbC0xLjQxLTEuNDEtMS43OSAxLjc5IDEuNDEgMS40MSAxLjc5LTEuNzl6bS0zLjIxIDEzLjdsMS43OSAxLjggMS40MS0xLjQxLTEuOC0xLjc5LTEuNCAxLjR6TTIwIDEwLjV2Mmgzdi0yaC0zem0tOC01Yy0zLjMxIDAtNiAyLjY5LTYgNnMyLjY5IDYgNiA2IDYtMi42OSA2LTYtMi42OS02LTYtNnptLTEgMTYuOTVoMlYxOS41aC0ydjIuOTV6bS03LjQ1LTMuOTFsMS40MSAxLjQxIDEuNzktMS44LTEuNDEtMS40MS0xLjc5IDEuOHoiPjwvcGF0aD48L2c+CjwvZGVmcz48L3N2Zz4KPC9pcm9uLWljb25zZXQtc3ZnPmA7ZG9jdW1lbnQuaGVhZC5hcHBlbmRDaGlsZCh3by5jb250ZW50KTsKLyoqCiAgICBAbGljZW5zZQogICAgQ29weXJpZ2h0IChjKSAyMDE0IFRoZSBQb2x5bWVyIFByb2plY3QgQXV0aG9ycy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAgIFRoaXMgY29kZSBtYXkgb25seSBiZSB1c2VkIHVuZGVyIHRoZSBCU0Qgc3R5bGUgbGljZW5zZSBmb3VuZCBhdAogICAgaHR0cDovL3BvbHltZXIuZ2l0aHViLmlvL0xJQ0VOU0UudHh0IFRoZSBjb21wbGV0ZSBzZXQgb2YgYXV0aG9ycyBtYXkgYmUgZm91bmQgYXQKICAgIGh0dHA6Ly9wb2x5bWVyLmdpdGh1Yi5pby9BVVRIT1JTLnR4dCBUaGUgY29tcGxldGUgc2V0IG9mIGNvbnRyaWJ1dG9ycyBtYXkgYmUKICAgIGZvdW5kIGF0IGh0dHA6Ly9wb2x5bWVyLmdpdGh1Yi5pby9DT05UUklCVVRPUlMudHh0IENvZGUgZGlzdHJpYnV0ZWQgYnkgR29vZ2xlIGFzCiAgICBwYXJ0IG9mIHRoZSBwb2x5bWVyIHByb2plY3QgaXMgYWxzbyBzdWJqZWN0IHRvIGFuIGFkZGl0aW9uYWwgSVAgcmlnaHRzIGdyYW50CiAgICBmb3VuZCBhdCBodHRwOi8vcG9seW1lci5naXRodWIuaW8vUEFURU5UUy50eHQKICAgICovCmNvbnN0IFNvPV9lYDxpcm9uLWljb25zZXQtc3ZnIG5hbWU9Imljb25zIiBzaXplPSIyNCI+Cjxzdmc+PGRlZnM+CjxnIGlkPSIzZC1yb3RhdGlvbiI+PHBhdGggZD0iTTcuNTIgMjEuNDhDNC4yNSAxOS45NCAxLjkxIDE2Ljc2IDEuNTUgMTNILjA1Qy41NiAxOS4xNiA1LjcxIDI0IDEyIDI0bC42Ni0uMDMtMy44MS0zLjgxLTEuMzMgMS4zMnptLjg5LTYuNTJjLS4xOSAwLS4zNy0uMDMtLjUyLS4wOC0uMTYtLjA2LS4yOS0uMTMtLjQtLjI0LS4xMS0uMS0uMi0uMjItLjI2LS4zNy0uMDYtLjE0LS4wOS0uMy0uMDktLjQ3aC0xLjNjMCAuMzYuMDcuNjguMjEuOTUuMTQuMjcuMzMuNS41Ni42OS4yNC4xOC41MS4zMi44Mi40MS4zLjEuNjIuMTUuOTYuMTUuMzcgMCAuNzItLjA1IDEuMDMtLjE1LjMyLS4xLjYtLjI1LjgzLS40NHMuNDItLjQzLjU1LS43MmMuMTMtLjI5LjItLjYxLjItLjk3IDAtLjE5LS4wMi0uMzgtLjA3LS41Ni0uMDUtLjE4LS4xMi0uMzUtLjIzLS41MS0uMS0uMTYtLjI0LS4zLS40LS40My0uMTctLjEzLS4zNy0uMjMtLjYxLS4zMS4yLS4wOS4zNy0uMi41Mi0uMzMuMTUtLjEzLjI3LS4yNy4zNy0uNDIuMS0uMTUuMTctLjMuMjItLjQ2LjA1LS4xNi4wNy0uMzIuMDctLjQ4IDAtLjM2LS4wNi0uNjgtLjE4LS45Ni0uMTItLjI4LS4yOS0uNTEtLjUxLS42OS0uMi0uMTktLjQ3LS4zMy0uNzctLjQzQzkuMSA4LjA1IDguNzYgOCA4LjM5IDhjLS4zNiAwLS42OS4wNS0xIC4xNi0uMy4xMS0uNTcuMjYtLjc5LjQ1LS4yMS4xOS0uMzguNDEtLjUxLjY3LS4xMi4yNi0uMTguNTQtLjE4Ljg1aDEuM2MwLS4xNy4wMy0uMzIuMDktLjQ1cy4xNC0uMjUuMjUtLjM0Yy4xMS0uMDkuMjMtLjE3LjM4LS4yMi4xNS0uMDUuMy0uMDguNDgtLjA4LjQgMCAuNy4xLjg5LjMxLjE5LjIuMjkuNDkuMjkuODYgMCAuMTgtLjAzLjM0LS4wOC40OS0uMDUuMTUtLjE0LjI3LS4yNS4zNy0uMTEuMS0uMjUuMTgtLjQxLjI0LS4xNi4wNi0uMzYuMDktLjU4LjA5SDcuNXYxLjAzaC43N2MuMjIgMCAuNDIuMDIuNi4wN3MuMzMuMTMuNDUuMjNjLjEyLjExLjIyLjI0LjI5LjQuMDcuMTYuMS4zNS4xLjU3IDAgLjQxLS4xMi43Mi0uMzUuOTMtLjIzLjIzLS41NS4zMy0uOTUuMzN6bTguNTUtNS45MmMtLjMyLS4zMy0uNy0uNTktMS4xNC0uNzctLjQzLS4xOC0uOTItLjI3LTEuNDYtLjI3SDEydjhoMi4zYy41NSAwIDEuMDYtLjA5IDEuNTEtLjI3LjQ1LS4xOC44NC0uNDMgMS4xNi0uNzYuMzItLjMzLjU3LS43My43NC0xLjE5LjE3LS40Ny4yNi0uOTkuMjYtMS41N3YtLjRjMC0uNTgtLjA5LTEuMS0uMjYtMS41Ny0uMTgtLjQ3LS40My0uODctLjc1LTEuMnptLS4zOSAzLjE2YzAgLjQyLS4wNS43OS0uMTQgMS4xMy0uMS4zMy0uMjQuNjItLjQzLjg1LS4xOS4yMy0uNDMuNDEtLjcxLjUzLS4yOS4xMi0uNjIuMTgtLjk5LjE4aC0uOTFWOS4xMmguOTdjLjcyIDAgMS4yNy4yMyAxLjY0LjY5LjM4LjQ2LjU3IDEuMTIuNTcgMS45OXYuNHpNMTIgMGwtLjY2LjAzIDMuODEgMy44MSAxLjMzLTEuMzNjMy4yNyAxLjU1IDUuNjEgNC43MiA1Ljk2IDguNDhoMS41QzIzLjQ0IDQuODQgMTguMjkgMCAxMiAweiI+PC9wYXRoPjwvZz4KPGcgaWQ9ImFjY2Vzc2liaWxpdHkiPjxwYXRoIGQ9Ik0xMiAyYzEuMSAwIDIgLjkgMiAycy0uOSAyLTIgMi0yLS45LTItMiAuOS0yIDItMnptOSA3aC02djEzaC0ydi02aC0ydjZIOVY5SDNWN2gxOHYyeiI+PC9wYXRoPjwvZz4KPGcgaWQ9ImFjY2Vzc2libGUiPjxjaXJjbGUgY3g9IjEyIiBjeT0iNCIgcj0iMiI+PC9jaXJjbGU+PHBhdGggZD0iTTE5IDEzdi0yYy0xLjU0LjAyLTMuMDktLjc1LTQuMDctMS44M2wtMS4yOS0xLjQzYy0uMTctLjE5LS4zOC0uMzQtLjYxLS40NS0uMDEgMC0uMDEtLjAxLS4wMi0uMDFIMTNjLS4zNS0uMi0uNzUtLjMtMS4xOS0uMjZDMTAuNzYgNy4xMSAxMCA4LjA0IDEwIDkuMDlWMTVjMCAxLjEuOSAyIDIgMmg1djVoMnYtNS41YzAtMS4xLS45LTItMi0yaC0zdi0zLjQ1YzEuMjkgMS4wNyAzLjI1IDEuOTQgNSAxLjk1em0tNi4xNyA1Yy0uNDEgMS4xNi0xLjUyIDItMi44MyAyLTEuNjYgMC0zLTEuMzQtMy0zIDAtMS4zMS44NC0yLjQxIDItMi44M1YxMi4xYy0yLjI4LjQ2LTQgMi40OC00IDQuOSAwIDIuNzYgMi4yNCA1IDUgNSAyLjQyIDAgNC40NC0xLjcyIDQuOS00aC0yLjA3eiI+PC9wYXRoPjwvZz4KPGcgaWQ9ImFjY291bnQtYmFsYW5jZSI+PHBhdGggZD0iTTQgMTB2N2gzdi03SDR6bTYgMHY3aDN2LTdoLTN6TTIgMjJoMTl2LTNIMnYzem0xNC0xMnY3aDN2LTdoLTN6bS00LjUtOUwyIDZ2MmgxOVY2bC05LjUtNXoiPjwvcGF0aD48L2c+CjxnIGlkPSJhY2NvdW50LWJhbGFuY2Utd2FsbGV0Ij48cGF0aCBkPSJNMjEgMTh2MWMwIDEuMS0uOSAyLTIgMkg1Yy0xLjExIDAtMi0uOS0yLTJWNWMwLTEuMS44OS0yIDItMmgxNGMxLjEgMCAyIC45IDIgMnYxaC05Yy0xLjExIDAtMiAuOS0yIDJ2OGMwIDEuMS44OSAyIDIgMmg5em0tOS0yaDEwVjhIMTJ2OHptNC0yLjVjLS44MyAwLTEuNS0uNjctMS41LTEuNXMuNjctMS41IDEuNS0xLjUgMS41LjY3IDEuNSAxLjUtLjY3IDEuNS0xLjUgMS41eiI+PC9wYXRoPjwvZz4KPGcgaWQ9ImFjY291bnQtYm94Ij48cGF0aCBkPSJNMyA1djE0YzAgMS4xLjg5IDIgMiAyaDE0YzEuMSAwIDItLjkgMi0yVjVjMC0xLjEtLjktMi0yLTJINWMtMS4xMSAwLTIgLjktMiAyem0xMiA0YzAgMS42Ni0xLjM0IDMtMyAzcy0zLTEuMzQtMy0zIDEuMzQtMyAzLTMgMyAxLjM0IDMgM3ptLTkgOGMwLTIgNC0zLjEgNi0zLjFzNiAxLjEgNiAzLjF2MUg2di0xeiI+PC9wYXRoPjwvZz4KPGcgaWQ9ImFjY291bnQtY2lyY2xlIj48cGF0aCBkPSJNMTIgMkM2LjQ4IDIgMiA2LjQ4IDIgMTJzNC40OCAxMCAxMCAxMCAxMC00LjQ4IDEwLTEwUzE3LjUyIDIgMTIgMnptMCAzYzEuNjYgMCAzIDEuMzQgMyAzcy0xLjM0IDMtMyAzLTMtMS4zNC0zLTMgMS4zNC0zIDMtM3ptMCAxNC4yYy0yLjUgMC00LjcxLTEuMjgtNi0zLjIyLjAzLTEuOTkgNC0zLjA4IDYtMy4wOCAxLjk5IDAgNS45NyAxLjA5IDYgMy4wOC0xLjI5IDEuOTQtMy41IDMuMjItNiAzLjIyeiI+PC9wYXRoPjwvZz4KPGcgaWQ9ImFkZCI+PHBhdGggZD0iTTE5IDEzaC02djZoLTJ2LTZINXYtMmg2VjVoMnY2aDZ2MnoiPjwvcGF0aD48L2c+CjxnIGlkPSJhZGQtYWxlcnQiPjxwYXRoIGQ9Ik0xMC4wMSAyMS4wMWMwIDEuMS44OSAxLjk5IDEuOTkgMS45OXMxLjk5LS44OSAxLjk5LTEuOTloLTMuOTh6bTguODctNC4xOVYxMWMwLTMuMjUtMi4yNS01Ljk3LTUuMjktNi42OXYtLjcyQzEzLjU5IDIuNzEgMTIuODggMiAxMiAycy0xLjU5LjcxLTEuNTkgMS41OXYuNzJDNy4zNyA1LjAzIDUuMTIgNy43NSA1LjEyIDExdjUuODJMMyAxOC45NFYyMGgxOHYtMS4wNmwtMi4xMi0yLjEyek0xNiAxMy4wMWgtM3YzaC0ydi0zSDhWMTFoM1Y4aDJ2M2gzdjIuMDF6Ij48L3BhdGg+PC9nPgo8ZyBpZD0iYWRkLWJveCI+PHBhdGggZD0iTTE5IDNINWMtMS4xMSAwLTIgLjktMiAydjE0YzAgMS4xLjg5IDIgMiAyaDE0YzEuMSAwIDItLjkgMi0yVjVjMC0xLjEtLjktMi0yLTJ6bS0yIDEwaC00djRoLTJ2LTRIN3YtMmg0VjdoMnY0aDR2MnoiPjwvcGF0aD48L2c+CjxnIGlkPSJhZGQtY2lyY2xlIj48cGF0aCBkPSJNMTIgMkM2LjQ4IDIgMiA2LjQ4IDIgMTJzNC40OCAxMCAxMCAxMCAxMC00LjQ4IDEwLTEwUzE3LjUyIDIgMTIgMnptNSAxMWgtNHY0aC0ydi00SDd2LTJoNFY3aDJ2NGg0djJ6Ij48L3BhdGg+PC9nPgo8ZyBpZD0iYWRkLWNpcmNsZS1vdXRsaW5lIj48cGF0aCBkPSJNMTMgN2gtMnY0SDd2Mmg0djRoMnYtNGg0di0yaC00Vjd6bS0xLTVDNi40OCAyIDIgNi40OCAyIDEyczQuNDggMTAgMTAgMTAgMTAtNC40OCAxMC0xMFMxNy41MiAyIDEyIDJ6bTAgMThjLTQuNDEgMC04LTMuNTktOC04czMuNTktOCA4LTggOCAzLjU5IDggOC0zLjU5IDgtOCA4eiI+PC9wYXRoPjwvZz4KPGcgaWQ9ImFkZC1zaG9wcGluZy1jYXJ0Ij48cGF0aCBkPSJNMTEgOWgyVjZoM1Y0aC0zVjFoLTJ2M0g4djJoM3Yzem0tNCA5Yy0xLjEgMC0xLjk5LjktMS45OSAyUzUuOSAyMiA3IDIyczItLjkgMi0yLS45LTItMi0yem0xMCAwYy0xLjEgMC0xLjk5LjktMS45OSAycy44OSAyIDEuOTkgMiAyLS45IDItMi0uOS0yLTItMnptLTkuODMtMy4yNWwuMDMtLjEyLjktMS42M2g3LjQ1Yy43NSAwIDEuNDEtLjQxIDEuNzUtMS4wM2wzLjg2LTcuMDFMMTkuNDIgNGgtLjAxbC0xLjEgMi0yLjc2IDVIOC41M2wtLjEzLS4yN0w2LjE2IDZsLS45NS0yLS45NC0ySDF2MmgybDMuNiA3LjU5LTEuMzUgMi40NWMtLjE2LjI4LS4yNS42MS0uMjUuOTYgMCAxLjEuOSAyIDIgMmgxMnYtMkg3LjQyYy0uMTMgMC0uMjUtLjExLS4yNS0uMjV6Ij48L3BhdGg+PC9nPgo8ZyBpZD0iYWxhcm0iPjxwYXRoIGQ9Ik0yMiA1LjcybC00LjYtMy44Ni0xLjI5IDEuNTMgNC42IDMuODZMMjIgNS43MnpNNy44OCAzLjM5TDYuNiAxLjg2IDIgNS43MWwxLjI5IDEuNTMgNC41OS0zLjg1ek0xMi41IDhIMTF2Nmw0Ljc1IDIuODUuNzUtMS4yMy00LTIuMzdWOHpNMTIgNGMtNC45NyAwLTkgNC4wMy05IDlzNC4wMiA5IDkgOWM0Ljk3IDAgOS00LjAzIDktOXMtNC4wMy05LTktOXptMCAxNmMtMy44NyAwLTctMy4xMy03LTdzMy4xMy03IDctNyA3IDMuMTMgNyA3LTMuMTMgNy03IDd6Ij48L3BhdGg+PC9nPgo8ZyBpZD0iYWxhcm0tYWRkIj48cGF0aCBkPSJNNy44OCAzLjM5TDYuNiAxLjg2IDIgNS43MWwxLjI5IDEuNTMgNC41OS0zLjg1ek0yMiA1LjcybC00LjYtMy44Ni0xLjI5IDEuNTMgNC42IDMuODZMMjIgNS43MnpNMTIgNGMtNC45NyAwLTkgNC4wMy05IDlzNC4wMiA5IDkgOWM0Ljk3IDAgOS00LjAzIDktOXMtNC4wMy05LTktOXptMCAxNmMtMy44NyAwLTctMy4xMy03LTdzMy4xMy03IDctNyA3IDMuMTMgNyA3LTMuMTMgNy03IDd6bTEtMTFoLTJ2M0g4djJoM3YzaDJ2LTNoM3YtMmgtM1Y5eiI+PC9wYXRoPjwvZz4KPGcgaWQ9ImFsYXJtLW9mZiI+PHBhdGggZD0iTTEyIDZjMy44NyAwIDcgMy4xMyA3IDcgMCAuODQtLjE2IDEuNjUtLjQzIDIuNGwxLjUyIDEuNTJjLjU4LTEuMTkuOTEtMi41MS45MS0zLjkyIDAtNC45Ny00LjAzLTktOS05LTEuNDEgMC0yLjczLjMzLTMuOTIuOTFMOS42IDYuNDNDMTAuMzUgNi4xNiAxMS4xNiA2IDEyIDZ6bTEwLS4yOGwtNC42LTMuODYtMS4yOSAxLjUzIDQuNiAzLjg2TDIyIDUuNzJ6TTIuOTIgMi4yOUwxLjY1IDMuNTcgMi45OCA0LjlsLTEuMTEuOTMgMS40MiAxLjQyIDEuMTEtLjk0LjguOEMzLjgzIDguNjkgMyAxMC43NSAzIDEzYzAgNC45NyA0LjAyIDkgOSA5IDIuMjUgMCA0LjMxLS44MyA1Ljg5LTIuMmwyLjIgMi4yIDEuMjctMS4yN0wzLjg5IDMuMjdsLS45Ny0uOTh6bTEzLjU1IDE2LjFDMTUuMjYgMTkuMzkgMTMuNyAyMCAxMiAyMGMtMy44NyAwLTctMy4xMy03LTcgMC0xLjcuNjEtMy4yNiAxLjYxLTQuNDdsOS44NiA5Ljg2ek04LjAyIDMuMjhMNi42IDEuODZsLS44Ni43MSAxLjQyIDEuNDIuODYtLjcxeiI+PC9wYXRoPjwvZz4KPGcgaWQ9ImFsYXJtLW9uIj48cGF0aCBkPSJNMjIgNS43MmwtNC42LTMuODYtMS4yOSAxLjUzIDQuNiAzLjg2TDIyIDUuNzJ6TTcuODggMy4zOUw2LjYgMS44NiAyIDUuNzFsMS4yOSAxLjUzIDQuNTktMy44NXpNMTIgNGMtNC45NyAwLTkgNC4wMy05IDlzNC4wMiA5IDkgOWM0Ljk3IDAgOS00LjAzIDktOXMtNC4wMy05LTktOXptMCAxNmMtMy44NyAwLTctMy4xMy03LTdzMy4xMy03IDctNyA3IDMuMTMgNyA3LTMuMTMgNy03IDd6bS0xLjQ2LTUuNDdMOC40MSAxMi40bC0xLjA2IDEuMDYgMy4xOCAzLjE4IDYtNi0xLjA2LTEuMDYtNC45MyA0Ljk1eiI+PC9wYXRoPjwvZz4KPGcgaWQ9ImFsbC1vdXQiPjxwYXRoIGQ9Ik0xNi4yMSA0LjE2bDQgNHYtNHptNCAxMmwtNCA0aDR6bS0xMiA0bC00LTR2NHptLTQtMTJsNC00aC00em0xMi45NS0uOTVjLTIuNzMtMi43My03LjE3LTIuNzMtOS45IDBzLTIuNzMgNy4xNyAwIDkuOSA3LjE3IDIuNzMgOS45IDAgMi43My03LjE2IDAtOS45em0tMS4xIDguOGMtMi4xMyAyLjEzLTUuNTcgMi4xMy03LjcgMHMtMi4xMy01LjU3IDAtNy43IDUuNTctMi4xMyA3LjcgMCAyLjEzIDUuNTcgMCA3Ljd6Ij48L3BhdGg+PC9nPgo8ZyBpZD0iYW5kcm9pZCI+PHBhdGggZD0iTTYgMThjMCAuNTUuNDUgMSAxIDFoMXYzLjVjMCAuODMuNjcgMS41IDEuNSAxLjVzMS41LS42NyAxLjUtMS41VjE5aDJ2My41YzAgLjgzLjY3IDEuNSAxLjUgMS41czEuNS0uNjcgMS41LTEuNVYxOWgxYy41NSAwIDEtLjQ1IDEtMVY4SDZ2MTB6TTMuNSA4QzIuNjcgOCAyIDguNjcgMiA5LjV2N2MwIC44My42NyAxLjUgMS41IDEuNVM1IDE3LjMzIDUgMTYuNXYtN0M1IDguNjcgNC4zMyA4IDMuNSA4em0xNyAwYy0uODMgMC0xLjUuNjctMS41IDEuNXY3YzAgLjgzLjY3IDEuNSAxLjUgMS41czEuNS0uNjcgMS41LTEuNXYtN2MwLS44My0uNjctMS41LTEuNS0xLjV6bS00Ljk3LTUuODRsMS4zLTEuM2MuMi0uMi4yLS41MSAwLS43MS0uMi0uMi0uNTEtLjItLjcxIDBsLTEuNDggMS40OEMxMy44NSAxLjIzIDEyLjk1IDEgMTIgMWMtLjk2IDAtMS44Ni4yMy0yLjY2LjYzTDcuODUuMTVjLS4yLS4yLS41MS0uMi0uNzEgMC0uMi4yLS4yLjUxIDAgLjcxbDEuMzEgMS4zMUM2Ljk3IDMuMjYgNiA1LjAxIDYgN2gxMmMwLTEuOTktLjk3LTMuNzUtMi40Ny00Ljg0ek0xMCA1SDlWNGgxdjF6bTUgMGgtMVY0aDF2MXoiPjwvcGF0aD48L2c+CjxnIGlkPSJhbm5vdW5jZW1lbnQiPjxwYXRoIGQ9Ik0yMCAySDRjLTEuMSAwLTEuOTkuOS0xLjk5IDJMMiAyMmw0LTRoMTRjMS4xIDAgMi0uOSAyLTJWNGMwLTEuMS0uOS0yLTItMnptLTcgOWgtMlY1aDJ2NnptMCA0aC0ydi0yaDJ2MnoiPjwvcGF0aD48L2c+CjxnIGlkPSJhcHBzIj48cGF0aCBkPSJNNCA4aDRWNEg0djR6bTYgMTJoNHYtNGgtNHY0em0tNiAwaDR2LTRINHY0em0wLTZoNHYtNEg0djR6bTYgMGg0di00aC00djR6bTYtMTB2NGg0VjRoLTR6bS02IDRoNFY0aC00djR6bTYgNmg0di00aC00djR6bTAgNmg0di00aC00djR6Ij48L3BhdGg+PC9nPgo8ZyBpZD0iYXJjaGl2ZSI+PHBhdGggZD0iTTIwLjU0IDUuMjNsLTEuMzktMS42OEMxOC44OCAzLjIxIDE4LjQ3IDMgMTggM0g2Yy0uNDcgMC0uODguMjEtMS4xNi41NUwzLjQ2IDUuMjNDMy4xNyA1LjU3IDMgNi4wMiAzIDYuNVYxOWMwIDEuMS45IDIgMiAyaDE0YzEuMSAwIDItLjkgMi0yVjYuNWMwLS40OC0uMTctLjkzLS40Ni0xLjI3ek0xMiAxNy41TDYuNSAxMkgxMHYtMmg0djJoMy41TDEyIDE3LjV6TTUuMTIgNWwuODEtMWgxMmwuOTQgMUg1LjEyeiI+PC9wYXRoPjwvZz4KPGcgaWQ9ImFycm93LWJhY2siPjxwYXRoIGQ9Ik0yMCAxMUg3LjgzbDUuNTktNS41OUwxMiA0bC04IDggOCA4IDEuNDEtMS40MUw3LjgzIDEzSDIwdi0yeiI+PC9wYXRoPjwvZz4KPGcgaWQ9ImFycm93LWRvd253YXJkIj48cGF0aCBkPSJNMjAgMTJsLTEuNDEtMS40MUwxMyAxNi4xN1Y0aC0ydjEyLjE3bC01LjU4LTUuNTlMNCAxMmw4IDggOC04eiI+PC9wYXRoPjwvZz4KPGcgaWQ9ImFycm93LWRyb3AtZG93biI+PHBhdGggZD0iTTcgMTBsNSA1IDUtNXoiPjwvcGF0aD48L2c+CjxnIGlkPSJhcnJvdy1kcm9wLWRvd24tY2lyY2xlIj48cGF0aCBkPSJNMTIgMkM2LjQ4IDIgMiA2LjQ4IDIgMTJzNC40OCAxMCAxMCAxMCAxMC00LjQ4IDEwLTEwUzE3LjUyIDIgMTIgMnptMCAxMmwtNC00aDhsLTQgNHoiPjwvcGF0aD48L2c+CjxnIGlkPSJhcnJvdy1kcm9wLXVwIj48cGF0aCBkPSJNNyAxNGw1LTUgNSA1eiI+PC9wYXRoPjwvZz4KPGcgaWQ9ImFycm93LWZvcndhcmQiPjxwYXRoIGQ9Ik0xMiA0bC0xLjQxIDEuNDFMMTYuMTcgMTFINHYyaDEyLjE3bC01LjU4IDUuNTlMMTIgMjBsOC04eiI+PC9wYXRoPjwvZz4KPGcgaWQ9ImFycm93LXVwd2FyZCI+PHBhdGggZD0iTTQgMTJsMS40MSAxLjQxTDExIDcuODNWMjBoMlY3LjgzbDUuNTggNS41OUwyMCAxMmwtOC04LTggOHoiPjwvcGF0aD48L2c+CjxnIGlkPSJhc3BlY3QtcmF0aW8iPjxwYXRoIGQ9Ik0xOSAxMmgtMnYzaC0zdjJoNXYtNXpNNyA5aDNWN0g1djVoMlY5em0xNC02SDNjLTEuMSAwLTIgLjktMiAydjE0YzAgMS4xLjkgMiAyIDJoMThjMS4xIDAgMi0uOSAyLTJWNWMwLTEuMS0uOS0yLTItMnptMCAxNi4wMUgzVjQuOTloMTh2MTQuMDJ6Ij48L3BhdGg+PC9nPgo8ZyBpZD0iYXNzZXNzbWVudCI+PHBhdGggZD0iTTE5IDNINWMtMS4xIDAtMiAuOS0yIDJ2MTRjMCAxLjEuOSAyIDIgMmgxNGMxLjEgMCAyLS45IDItMlY1YzAtMS4xLS45LTItMi0yek05IDE3SDd2LTdoMnY3em00IDBoLTJWN2gydjEwem00IDBoLTJ2LTRoMnY0eiI+PC9wYXRoPjwvZz4KPGcgaWQ9ImFzc2lnbm1lbnQiPjxwYXRoIGQ9Ik0xOSAzaC00LjE4QzE0LjQgMS44NCAxMy4zIDEgMTIgMWMtMS4zIDAtMi40Ljg0LTIuODIgMkg1Yy0xLjEgMC0yIC45LTIgMnYxNGMwIDEuMS45IDIgMiAyaDE0YzEuMSAwIDItLjkgMi0yVjVjMC0xLjEtLjktMi0yLTJ6bS03IDBjLjU1IDAgMSAuNDUgMSAxcy0uNDUgMS0xIDEtMS0uNDUtMS0xIC40NS0xIDEtMXptMiAxNEg3di0yaDd2MnptMy00SDd2LTJoMTB2MnptMC00SDdWN2gxMHYyeiI+PC9wYXRoPjwvZz4KPGcgaWQ9ImFzc2lnbm1lbnQtaW5kIj48cGF0aCBkPSJNMTkgM2gtNC4xOEMxNC40IDEuODQgMTMuMyAxIDEyIDFjLTEuMyAwLTIuNC44NC0yLjgyIDJINWMtMS4xIDAtMiAuOS0yIDJ2MTRjMCAxLjEuOSAyIDIgMmgxNGMxLjEgMCAyLS45IDItMlY1YzAtMS4xLS45LTItMi0yem0tNyAwYy41NSAwIDEgLjQ1IDEgMXMtLjQ1IDEtMSAxLTEtLjQ1LTEtMSAuNDUtMSAxLTF6bTAgNGMxLjY2IDAgMyAxLjM0IDMgM3MtMS4zNCAzLTMgMy0zLTEuMzQtMy0zIDEuMzQtMyAzLTN6bTYgMTJINnYtMS40YzAtMiA0LTMuMSA2LTMuMXM2IDEuMSA2IDMuMVYxOXoiPjwvcGF0aD48L2c+CjxnIGlkPSJhc3NpZ25tZW50LWxhdGUiPjxwYXRoIGQ9Ik0xOSAzaC00LjE4QzE0LjQgMS44NCAxMy4zIDEgMTIgMWMtMS4zIDAtMi40Ljg0LTIuODIgMkg1Yy0xLjEgMC0yIC45LTIgMnYxNGMwIDEuMS45IDIgMiAyaDE0YzEuMSAwIDItLjkgMi0yVjVjMC0xLjEtLjktMi0yLTJ6bS02IDE1aC0ydi0yaDJ2MnptMC00aC0yVjhoMnY2em0tMS05Yy0uNTUgMC0xLS40NS0xLTFzLjQ1LTEgMS0xIDEgLjQ1IDEgMS0uNDUgMS0xIDF6Ij48L3BhdGg+PC9nPgo8ZyBpZD0iYXNzaWdubWVudC1yZXR1cm4iPjxwYXRoIGQ9Ik0xOSAzaC00LjE4QzE0LjQgMS44NCAxMy4zIDEgMTIgMWMtMS4zIDAtMi40Ljg0LTIuODIgMkg1Yy0xLjEgMC0yIC45LTIgMnYxNGMwIDEuMS45IDIgMiAyaDE0YzEuMSAwIDItLjkgMi0yVjVjMC0xLjEtLjktMi0yLTJ6bS03IDBjLjU1IDAgMSAuNDUgMSAxcy0uNDUgMS0xIDEtMS0uNDUtMS0xIC40NS0xIDEtMXptNCAxMmgtNHYzbC01LTUgNS01djNoNHY0eiI+PC9wYXRoPjwvZz4KPGcgaWQ9ImFzc2lnbm1lbnQtcmV0dXJuZWQiPjxwYXRoIGQ9Ik0xOSAzaC00LjE4QzE0LjQgMS44NCAxMy4zIDEgMTIgMWMtMS4zIDAtMi40Ljg0LTIuODIgMkg1Yy0xLjEgMC0yIC45LTIgMnYxNGMwIDEuMS45IDIgMiAyaDE0YzEuMSAwIDItLjkgMi0yVjVjMC0xLjEtLjktMi0yLTJ6bS03IDBjLjU1IDAgMSAuNDUgMSAxcy0uNDUgMS0xIDEtMS0uNDUtMS0xIC40NS0xIDEtMXptMCAxNWwtNS01aDNWOWg0djRoM2wtNSA1eiI+PC9wYXRoPjwvZz4KPGcgaWQ9ImFzc2lnbm1lbnQtdHVybmVkLWluIj48cGF0aCBkPSJNMTkgM2gtNC4xOEMxNC40IDEuODQgMTMuMyAxIDEyIDFjLTEuMyAwLTIuNC44NC0yLjgyIDJINWMtMS4xIDAtMiAuOS0yIDJ2MTRjMCAxLjEuOSAyIDIgMmgxNGMxLjEgMCAyLS45IDItMlY1YzAtMS4xLS45LTItMi0yem0tNyAwYy41NSAwIDEgLjQ1IDEgMXMtLjQ1IDEtMSAxLTEtLjQ1LTEtMSAuNDUtMSAxLTF6bS0yIDE0bC00LTQgMS40MS0xLjQxTDEwIDE0LjE3bDYuNTktNi41OUwxOCA5bC04IDh6Ij48L3BhdGg+PC9nPgo8ZyBpZD0iYXR0YWNobWVudCI+PHBhdGggZD0iTTIgMTIuNUMyIDkuNDYgNC40NiA3IDcuNSA3SDE4YzIuMjEgMCA0IDEuNzkgNCA0cy0xLjc5IDQtNCA0SDkuNUM4LjEyIDE1IDcgMTMuODggNyAxMi41UzguMTIgMTAgOS41IDEwSDE3djJIOS40MWMtLjU1IDAtLjU1IDEgMCAxSDE4YzEuMSAwIDItLjkgMi0ycy0uOS0yLTItMkg3LjVDNS41NyA5IDQgMTAuNTcgNCAxMi41UzUuNTcgMTYgNy41IDE2SDE3djJINy41QzQuNDYgMTggMiAxNS41NCAyIDEyLjV6Ij48L3BhdGg+PC9nPgo8ZyBpZD0iYXV0b3JlbmV3Ij48cGF0aCBkPSJNMTIgNnYzbDQtNC00LTR2M2MtNC40MiAwLTggMy41OC04IDggMCAxLjU3LjQ2IDMuMDMgMS4yNCA0LjI2TDYuNyAxNC44Yy0uNDUtLjgzLS43LTEuNzktLjctMi44IDAtMy4zMSAyLjY5LTYgNi02em02Ljc2IDEuNzRMMTcuMyA5LjJjLjQ0Ljg0LjcgMS43OS43IDIuOCAwIDMuMzEtMi42OSA2LTYgNnYtM2wtNCA0IDQgNHYtM2M0LjQyIDAgOC0zLjU4IDgtOCAwLTEuNTctLjQ2LTMuMDMtMS4yNC00LjI2eiI+PC9wYXRoPjwvZz4KPGcgaWQ9ImJhY2tzcGFjZSI+PHBhdGggZD0iTTIyIDNIN2MtLjY5IDAtMS4yMy4zNS0xLjU5Ljg4TDAgMTJsNS40MSA4LjExYy4zNi41My45Ljg5IDEuNTkuODloMTVjMS4xIDAgMi0uOSAyLTJWNWMwLTEuMS0uOS0yLTItMnptLTMgMTIuNTlMMTcuNTkgMTcgMTQgMTMuNDEgMTAuNDEgMTcgOSAxNS41OSAxMi41OSAxMiA5IDguNDEgMTAuNDEgNyAxNCAxMC41OSAxNy41OSA3IDE5IDguNDEgMTUuNDEgMTIgMTkgMTUuNTl6Ij48L3BhdGg+PC9nPgo8ZyBpZD0iYmFja3VwIj48cGF0aCBkPSJNMTkuMzUgMTAuMDRDMTguNjcgNi41OSAxNS42NCA0IDEyIDQgOS4xMSA0IDYuNiA1LjY0IDUuMzUgOC4wNCAyLjM0IDguMzYgMCAxMC45MSAwIDE0YzAgMy4zMSAyLjY5IDYgNiA2aDEzYzIuNzYgMCA1LTIuMjQgNS01IDAtMi42NC0yLjA1LTQuNzgtNC42NS00Ljk2ek0xNCAxM3Y0aC00di00SDdsNS01IDUgNWgtM3oiPjwvcGF0aD48L2c+CjxnIGlkPSJibG9jayI+PHBhdGggZD0iTTEyIDJDNi40OCAyIDIgNi40OCAyIDEyczQuNDggMTAgMTAgMTAgMTAtNC40OCAxMC0xMFMxNy41MiAyIDEyIDJ6TTQgMTJjMC00LjQyIDMuNTgtOCA4LTggMS44NSAwIDMuNTUuNjMgNC45IDEuNjlMNS42OSAxNi45QzQuNjMgMTUuNTUgNCAxMy44NSA0IDEyem04IDhjLTEuODUgMC0zLjU1LS42My00LjktMS42OUwxOC4zMSA3LjFDMTkuMzcgOC40NSAyMCAxMC4xNSAyMCAxMmMwIDQuNDItMy41OCA4LTggOHoiPjwvcGF0aD48L2c+CjxnIGlkPSJib29rIj48cGF0aCBkPSJNMTggMkg2Yy0xLjEgMC0yIC45LTIgMnYxNmMwIDEuMS45IDIgMiAyaDEyYzEuMSAwIDItLjkgMi0yVjRjMC0xLjEtLjktMi0yLTJ6TTYgNGg1djhsLTIuNS0xLjVMNiAxMlY0eiI+PC9wYXRoPjwvZz4KPGcgaWQ9ImJvb2ttYXJrIj48cGF0aCBkPSJNMTcgM0g3Yy0xLjEgMC0xLjk5LjktMS45OSAyTDUgMjFsNy0zIDcgM1Y1YzAtMS4xLS45LTItMi0yeiI+PC9wYXRoPjwvZz4KPGcgaWQ9ImJvb2ttYXJrLWJvcmRlciI+PHBhdGggZD0iTTE3IDNIN2MtMS4xIDAtMS45OS45LTEuOTkgMkw1IDIxbDctMyA3IDNWNWMwLTEuMS0uOS0yLTItMnptMCAxNWwtNS0yLjE4TDcgMThWNWgxMHYxM3oiPjwvcGF0aD48L2c+CjxnIGlkPSJidWctcmVwb3J0Ij48cGF0aCBkPSJNMjAgOGgtMi44MWMtLjQ1LS43OC0xLjA3LTEuNDUtMS44Mi0xLjk2TDE3IDQuNDEgMTUuNTkgM2wtMi4xNyAyLjE3QzEyLjk2IDUuMDYgMTIuNDkgNSAxMiA1Yy0uNDkgMC0uOTYuMDYtMS40MS4xN0w4LjQxIDMgNyA0LjQxbDEuNjIgMS42M0M3Ljg4IDYuNTUgNy4yNiA3LjIyIDYuODEgOEg0djJoMi4wOWMtLjA1LjMzLS4wOS42Ni0uMDkgMXYxSDR2MmgydjFjMCAuMzQuMDQuNjcuMDkgMUg0djJoMi44MWMxLjA0IDEuNzkgMi45NyAzIDUuMTkgM3M0LjE1LTEuMjEgNS4xOS0zSDIwdi0yaC0yLjA5Yy4wNS0uMzMuMDktLjY2LjA5LTF2LTFoMnYtMmgtMnYtMWMwLS4zNC0uMDQtLjY3LS4wOS0xSDIwVjh6bS02IDhoLTR2LTJoNHYyem0wLTRoLTR2LTJoNHYyeiI+PC9wYXRoPjwvZz4KPGcgaWQ9ImJ1aWxkIj48cGF0aCBkPSJNMjIuNyAxOWwtOS4xLTkuMWMuOS0yLjMuNC01LTEuNS02LjktMi0yLTUtMi40LTcuNC0xLjNMOSA2IDYgOSAxLjYgNC43Qy40IDcuMS45IDEwLjEgMi45IDEyLjFjMS45IDEuOSA0LjYgMi40IDYuOSAxLjVsOS4xIDkuMWMuNC40IDEgLjQgMS40IDBsMi4zLTIuM2MuNS0uNC41LTEuMS4xLTEuNHoiPjwvcGF0aD48L2c+CjxnIGlkPSJjYWNoZWQiPjxwYXRoIGQ9Ik0xOSA4bC00IDRoM2MwIDMuMzEtMi42OSA2LTYgNi0xLjAxIDAtMS45Ny0uMjUtMi44LS43bC0xLjQ2IDEuNDZDOC45NyAxOS41NCAxMC40MyAyMCAxMiAyMGM0LjQyIDAgOC0zLjU4IDgtOGgzbC00LTR6TTYgMTJjMC0zLjMxIDIuNjktNiA2LTYgMS4wMSAwIDEuOTcuMjUgMi44LjdsMS40Ni0xLjQ2QzE1LjAzIDQuNDYgMTMuNTcgNCAxMiA0Yy00LjQyIDAtOCAzLjU4LTggOEgxbDQgNCA0LTRINnoiPjwvcGF0aD48L2c+CjxnIGlkPSJjYW1lcmEtZW5oYW5jZSI+PHBhdGggZD0iTTkgM0w3LjE3IDVINGMtMS4xIDAtMiAuOS0yIDJ2MTJjMCAxLjEuOSAyIDIgMmgxNmMxLjEgMCAyLS45IDItMlY3YzAtMS4xLS45LTItMi0yaC0zLjE3TDE1IDNIOXptMyAxNWMtMi43NiAwLTUtMi4yNC01LTVzMi4yNC01IDUtNSA1IDIuMjQgNSA1LTIuMjQgNS01IDV6bTAtMWwxLjI1LTIuNzVMMTYgMTNsLTIuNzUtMS4yNUwxMiA5bC0xLjI1IDIuNzVMOCAxM2wyLjc1IDEuMjV6Ij48L3BhdGg+PC9nPgo8ZyBpZD0iY2FuY2VsIj48cGF0aCBkPSJNMTIgMkM2LjQ3IDIgMiA2LjQ3IDIgMTJzNC40NyAxMCAxMCAxMCAxMC00LjQ3IDEwLTEwUzE3LjUzIDIgMTIgMnptNSAxMy41OUwxNS41OSAxNyAxMiAxMy40MSA4LjQxIDE3IDcgMTUuNTkgMTAuNTkgMTIgNyA4LjQxIDguNDEgNyAxMiAxMC41OSAxNS41OSA3IDE3IDguNDEgMTMuNDEgMTIgMTcgMTUuNTl6Ij48L3BhdGg+PC9nPgo8ZyBpZD0iY2FyZC1naWZ0Y2FyZCI+PHBhdGggZD0iTTIwIDZoLTIuMThjLjExLS4zMS4xOC0uNjUuMTgtMSAwLTEuNjYtMS4zNC0zLTMtMy0xLjA1IDAtMS45Ni41NC0yLjUgMS4zNWwtLjUuNjctLjUtLjY4QzEwLjk2IDIuNTQgMTAuMDUgMiA5IDIgNy4zNCAyIDYgMy4zNCA2IDVjMCAuMzUuMDcuNjkuMTggMUg0Yy0xLjExIDAtMS45OS44OS0xLjk5IDJMMiAxOWMwIDEuMTEuODkgMiAyIDJoMTZjMS4xMSAwIDItLjg5IDItMlY4YzAtMS4xMS0uODktMi0yLTJ6bS01LTJjLjU1IDAgMSAuNDUgMSAxcy0uNDUgMS0xIDEtMS0uNDUtMS0xIC40NS0xIDEtMXpNOSA0Yy41NSAwIDEgLjQ1IDEgMXMtLjQ1IDEtMSAxLTEtLjQ1LTEtMSAuNDUtMSAxLTF6bTExIDE1SDR2LTJoMTZ2MnptMC01SDRWOGg1LjA4TDcgMTAuODMgOC42MiAxMiAxMSA4Ljc2bDEtMS4zNiAxIDEuMzZMMTUuMzggMTIgMTcgMTAuODMgMTQuOTIgOEgyMHY2eiI+PC9wYXRoPjwvZz4KPGcgaWQ9ImNhcmQtbWVtYmVyc2hpcCI+PHBhdGggZD0iTTIwIDJINGMtMS4xMSAwLTIgLjg5LTIgMnYxMWMwIDEuMTEuODkgMiAyIDJoNHY1bDQtMiA0IDJ2LTVoNGMxLjExIDAgMi0uODkgMi0yVjRjMC0xLjExLS44OS0yLTItMnptMCAxM0g0di0yaDE2djJ6bTAtNUg0VjRoMTZ2NnoiPjwvcGF0aD48L2c+CjxnIGlkPSJjYXJkLXRyYXZlbCI+PHBhdGggZD0iTTIwIDZoLTNWNGMwLTEuMTEtLjg5LTItMi0ySDljLTEuMTEgMC0yIC44OS0yIDJ2Mkg0Yy0xLjExIDAtMiAuODktMiAydjExYzAgMS4xMS44OSAyIDIgMmgxNmMxLjExIDAgMi0uODkgMi0yVjhjMC0xLjExLS44OS0yLTItMnpNOSA0aDZ2Mkg5VjR6bTExIDE1SDR2LTJoMTZ2MnptMC01SDRWOGgzdjJoMlY4aDZ2MmgyVjhoM3Y2eiI+PC9wYXRoPjwvZz4KPGcgaWQ9ImNoYW5nZS1oaXN0b3J5Ij48cGF0aCBkPSJNMTIgNy43N0wxOC4zOSAxOEg1LjYxTDEyIDcuNzdNMTIgNEwyIDIwaDIwTDEyIDR6Ij48L3BhdGg+PC9nPgo8ZyBpZD0iY2hlY2siPjxwYXRoIGQ9Ik05IDE2LjE3TDQuODMgMTJsLTEuNDIgMS40MUw5IDE5IDIxIDdsLTEuNDEtMS40MXoiPjwvcGF0aD48L2c+CjxnIGlkPSJjaGVjay1ib3giPjxwYXRoIGQ9Ik0xOSAzSDVjLTEuMTEgMC0yIC45LTIgMnYxNGMwIDEuMS44OSAyIDIgMmgxNGMxLjExIDAgMi0uOSAyLTJWNWMwLTEuMS0uODktMi0yLTJ6bS05IDE0bC01LTUgMS40MS0xLjQxTDEwIDE0LjE3bDcuNTktNy41OUwxOSA4bC05IDl6Ij48L3BhdGg+PC9nPgo8ZyBpZD0iY2hlY2stYm94LW91dGxpbmUtYmxhbmsiPjxwYXRoIGQ9Ik0xOSA1djE0SDVWNWgxNG0wLTJINWMtMS4xIDAtMiAuOS0yIDJ2MTRjMCAxLjEuOSAyIDIgMmgxNGMxLjEgMCAyLS45IDItMlY1YzAtMS4xLS45LTItMi0yeiI+PC9wYXRoPjwvZz4KPGcgaWQ9ImNoZWNrLWNpcmNsZSI+PHBhdGggZD0iTTEyIDJDNi40OCAyIDIgNi40OCAyIDEyczQuNDggMTAgMTAgMTAgMTAtNC40OCAxMC0xMFMxNy41MiAyIDEyIDJ6bS0yIDE1bC01LTUgMS40MS0xLjQxTDEwIDE0LjE3bDcuNTktNy41OUwxOSA4bC05IDl6Ij48L3BhdGg+PC9nPgo8ZyBpZD0iY2hldnJvbi1sZWZ0Ij48cGF0aCBkPSJNMTUuNDEgNy40MUwxNCA2bC02IDYgNiA2IDEuNDEtMS40MUwxMC44MyAxMnoiPjwvcGF0aD48L2c+CjxnIGlkPSJjaGV2cm9uLXJpZ2h0Ij48cGF0aCBkPSJNMTAgNkw4LjU5IDcuNDEgMTMuMTcgMTJsLTQuNTggNC41OUwxMCAxOGw2LTZ6Ij48L3BhdGg+PC9nPgo8ZyBpZD0iY2hyb21lLXJlYWRlci1tb2RlIj48cGF0aCBkPSJNMTMgMTJoN3YxLjVoLTd6bTAtMi41aDdWMTFoLTd6bTAgNWg3VjE2aC03ek0yMSA0SDNjLTEuMSAwLTIgLjktMiAydjEzYzAgMS4xLjkgMiAyIDJoMThjMS4xIDAgMi0uOSAyLTJWNmMwLTEuMS0uOS0yLTItMnptMCAxNWgtOVY2aDl2MTN6Ij48L3BhdGg+PC9nPgo8ZyBpZD0iY2xhc3MiPjxwYXRoIGQ9Ik0xOCAySDZjLTEuMSAwLTIgLjktMiAydjE2YzAgMS4xLjkgMiAyIDJoMTJjMS4xIDAgMi0uOSAyLTJWNGMwLTEuMS0uOS0yLTItMnpNNiA0aDV2OGwtMi41LTEuNUw2IDEyVjR6Ij48L3BhdGg+PC9nPgo8ZyBpZD0iY2xlYXIiPjxwYXRoIGQ9Ik0xOSA2LjQxTDE3LjU5IDUgMTIgMTAuNTkgNi40MSA1IDUgNi40MSAxMC41OSAxMiA1IDE3LjU5IDYuNDEgMTkgMTIgMTMuNDEgMTcuNTkgMTkgMTkgMTcuNTkgMTMuNDEgMTJ6Ij48L3BhdGg+PC9nPgo8ZyBpZD0iY2xvc2UiPjxwYXRoIGQ9Ik0xOSA2LjQxTDE3LjU5IDUgMTIgMTAuNTkgNi40MSA1IDUgNi40MSAxMC41OSAxMiA1IDE3LjU5IDYuNDEgMTkgMTIgMTMuNDEgMTcuNTkgMTkgMTkgMTcuNTkgMTMuNDEgMTJ6Ij48L3BhdGg+PC9nPgo8ZyBpZD0iY2xvdWQiPjxwYXRoIGQ9Ik0xOS4zNSAxMC4wNEMxOC42NyA2LjU5IDE1LjY0IDQgMTIgNCA5LjExIDQgNi42IDUuNjQgNS4zNSA4LjA0IDIuMzQgOC4zNiAwIDEwLjkxIDAgMTRjMCAzLjMxIDIuNjkgNiA2IDZoMTNjMi43NiAwIDUtMi4yNCA1LTUgMC0yLjY0LTIuMDUtNC43OC00LjY1LTQuOTZ6Ij48L3BhdGg+PC9nPgo8ZyBpZD0iY2xvdWQtY2lyY2xlIj48cGF0aCBkPSJNMTIgMkM2LjQ4IDIgMiA2LjQ4IDIgMTJzNC40OCAxMCAxMCAxMCAxMC00LjQ4IDEwLTEwUzE3LjUyIDIgMTIgMnptNC41IDE0SDhjLTEuNjYgMC0zLTEuMzQtMy0zczEuMzQtMyAzLTNsLjE0LjAxQzguNTggOC4yOCAxMC4xMyA3IDEyIDdjMi4yMSAwIDQgMS43OSA0IDRoLjVjMS4zOCAwIDIuNSAxLjEyIDIuNSAyLjVTMTcuODggMTYgMTYuNSAxNnoiPjwvcGF0aD48L2c+CjxnIGlkPSJjbG91ZC1kb25lIj48cGF0aCBkPSJNMTkuMzUgMTAuMDRDMTguNjcgNi41OSAxNS42NCA0IDEyIDQgOS4xMSA0IDYuNiA1LjY0IDUuMzUgOC4wNCAyLjM0IDguMzYgMCAxMC45MSAwIDE0YzAgMy4zMSAyLjY5IDYgNiA2aDEzYzIuNzYgMCA1LTIuMjQgNS01IDAtMi42NC0yLjA1LTQuNzgtNC42NS00Ljk2ek0xMCAxN2wtMy41LTMuNSAxLjQxLTEuNDFMMTAgMTQuMTcgMTUuMTggOWwxLjQxIDEuNDFMMTAgMTd6Ij48L3BhdGg+PC9nPgo8ZyBpZD0iY2xvdWQtZG93bmxvYWQiPjxwYXRoIGQ9Ik0xOS4zNSAxMC4wNEMxOC42NyA2LjU5IDE1LjY0IDQgMTIgNCA5LjExIDQgNi42IDUuNjQgNS4zNSA4LjA0IDIuMzQgOC4zNiAwIDEwLjkxIDAgMTRjMCAzLjMxIDIuNjkgNiA2IDZoMTNjMi43NiAwIDUtMi4yNCA1LTUgMC0yLjY0LTIuMDUtNC43OC00LjY1LTQuOTZ6TTE3IDEzbC01IDUtNS01aDNWOWg0djRoM3oiPjwvcGF0aD48L2c+CjxnIGlkPSJjbG91ZC1vZmYiPjxwYXRoIGQ9Ik0xOS4zNSAxMC4wNEMxOC42NyA2LjU5IDE1LjY0IDQgMTIgNGMtMS40OCAwLTIuODUuNDMtNC4wMSAxLjE3bDEuNDYgMS40NkMxMC4yMSA2LjIzIDExLjA4IDYgMTIgNmMzLjA0IDAgNS41IDIuNDYgNS41IDUuNXYuNUgxOWMxLjY2IDAgMyAxLjM0IDMgMyAwIDEuMTMtLjY0IDIuMTEtMS41NiAyLjYybDEuNDUgMS40NUMyMy4xNiAxOC4xNiAyNCAxNi42OCAyNCAxNWMwLTIuNjQtMi4wNS00Ljc4LTQuNjUtNC45NnpNMyA1LjI3bDIuNzUgMi43NEMyLjU2IDguMTUgMCAxMC43NyAwIDE0YzAgMy4zMSAyLjY5IDYgNiA2aDExLjczbDIgMkwyMSAyMC43MyA0LjI3IDQgMyA1LjI3ek03LjczIDEwbDggOEg2Yy0yLjIxIDAtNC0xLjc5LTQtNHMxLjc5LTQgNC00aDEuNzN6Ij48L3BhdGg+PC9nPgo8ZyBpZD0iY2xvdWQtcXVldWUiPjxwYXRoIGQ9Ik0xOS4zNSAxMC4wNEMxOC42NyA2LjU5IDE1LjY0IDQgMTIgNCA5LjExIDQgNi42IDUuNjQgNS4zNSA4LjA0IDIuMzQgOC4zNiAwIDEwLjkxIDAgMTRjMCAzLjMxIDIuNjkgNiA2IDZoMTNjMi43NiAwIDUtMi4yNCA1LTUgMC0yLjY0LTIuMDUtNC43OC00LjY1LTQuOTZ6TTE5IDE4SDZjLTIuMjEgMC00LTEuNzktNC00czEuNzktNCA0LTRoLjcxQzcuMzcgNy42OSA5LjQ4IDYgMTIgNmMzLjA0IDAgNS41IDIuNDYgNS41IDUuNXYuNUgxOWMxLjY2IDAgMyAxLjM0IDMgM3MtMS4zNCAzLTMgM3oiPjwvcGF0aD48L2c+CjxnIGlkPSJjbG91ZC11cGxvYWQiPjxwYXRoIGQ9Ik0xOS4zNSAxMC4wNEMxOC42NyA2LjU5IDE1LjY0IDQgMTIgNCA5LjExIDQgNi42IDUuNjQgNS4zNSA4LjA0IDIuMzQgOC4zNiAwIDEwLjkxIDAgMTRjMCAzLjMxIDIuNjkgNiA2IDZoMTNjMi43NiAwIDUtMi4yNCA1LTUgMC0yLjY0LTIuMDUtNC43OC00LjY1LTQuOTZ6TTE0IDEzdjRoLTR2LTRIN2w1LTUgNSA1aC0zeiI+PC9wYXRoPjwvZz4KPGcgaWQ9ImNvZGUiPjxwYXRoIGQ9Ik05LjQgMTYuNkw0LjggMTJsNC42LTQuNkw4IDZsLTYgNiA2IDYgMS40LTEuNHptNS4yIDBsNC42LTQuNi00LjYtNC42TDE2IDZsNiA2LTYgNi0xLjQtMS40eiI+PC9wYXRoPjwvZz4KPGcgaWQ9ImNvbXBhcmUtYXJyb3dzIj48cGF0aCBkPSJNOS4wMSAxNEgydjJoNy4wMXYzTDEzIDE1bC0zLjk5LTR2M3ptNS45OC0xdi0zSDIyVjhoLTcuMDFWNUwxMSA5bDMuOTkgNHoiPjwvcGF0aD48L2c+CjxnIGlkPSJjb250ZW50LWNvcHkiPjxwYXRoIGQ9Ik0xNiAxSDRjLTEuMSAwLTIgLjktMiAydjE0aDJWM2gxMlYxem0zIDRIOGMtMS4xIDAtMiAuOS0yIDJ2MTRjMCAxLjEuOSAyIDIgMmgxMWMxLjEgMCAyLS45IDItMlY3YzAtMS4xLS45LTItMi0yem0wIDE2SDhWN2gxMXYxNHoiPjwvcGF0aD48L2c+CjxnIGlkPSJjb250ZW50LWN1dCI+PHBhdGggZD0iTTkuNjQgNy42NGMuMjMtLjUuMzYtMS4wNS4zNi0xLjY0IDAtMi4yMS0xLjc5LTQtNC00UzIgMy43OSAyIDZzMS43OSA0IDQgNGMuNTkgMCAxLjE0LS4xMyAxLjY0LS4zNkwxMCAxMmwtMi4zNiAyLjM2QzcuMTQgMTQuMTMgNi41OSAxNCA2IDE0Yy0yLjIxIDAtNCAxLjc5LTQgNHMxLjc5IDQgNCA0IDQtMS43OSA0LTRjMC0uNTktLjEzLTEuMTQtLjM2LTEuNjRMMTIgMTRsNyA3aDN2LTFMOS42NCA3LjY0ek02IDhjLTEuMSAwLTItLjg5LTItMnMuOS0yIDItMiAyIC44OSAyIDItLjkgMi0yIDJ6bTAgMTJjLTEuMSAwLTItLjg5LTItMnMuOS0yIDItMiAyIC44OSAyIDItLjkgMi0yIDJ6bTYtNy41Yy0uMjggMC0uNS0uMjItLjUtLjVzLjIyLS41LjUtLjUuNS4yMi41LjUtLjIyLjUtLjUuNXpNMTkgM2wtNiA2IDIgMiA3LTdWM3oiPjwvcGF0aD48L2c+CjxnIGlkPSJjb250ZW50LXBhc3RlIj48cGF0aCBkPSJNMTkgMmgtNC4xOEMxNC40Ljg0IDEzLjMgMCAxMiAwYy0xLjMgMC0yLjQuODQtMi44MiAySDVjLTEuMSAwLTIgLjktMiAydjE2YzAgMS4xLjkgMiAyIDJoMTRjMS4xIDAgMi0uOSAyLTJWNGMwLTEuMS0uOS0yLTItMnptLTcgMGMuNTUgMCAxIC40NSAxIDFzLS40NSAxLTEgMS0xLS40NS0xLTEgLjQ1LTEgMS0xem03IDE4SDVWNGgydjNoMTBWNGgydjE2eiI+PC9wYXRoPjwvZz4KPGcgaWQ9ImNvcHlyaWdodCI+PHBhdGggZD0iTTEwLjA4IDEwLjg2Yy4wNS0uMzMuMTYtLjYyLjMtLjg3cy4zNC0uNDYuNTktLjYyYy4yNC0uMTUuNTQtLjIyLjkxLS4yMy4yMy4wMS40NC4wNS42My4xMy4yLjA5LjM4LjIxLjUyLjM2cy4yNS4zMy4zNC41My4xMy40Mi4xNC42NGgxLjc5Yy0uMDItLjQ3LS4xMS0uOS0uMjgtMS4yOXMtLjQtLjczLS43LTEuMDEtLjY2LS41LTEuMDgtLjY2LS44OC0uMjMtMS4zOS0uMjNjLS42NSAwLTEuMjIuMTEtMS43LjM0cy0uODguNTMtMS4yLjkyLS41Ni44NC0uNzEgMS4zNlM4IDExLjI5IDggMTEuODd2LjI3YzAgLjU4LjA4IDEuMTIuMjMgMS42NHMuMzkuOTcuNzEgMS4zNS43Mi42OSAxLjIuOTEgMS4wNS4zNCAxLjcuMzRjLjQ3IDAgLjkxLS4wOCAxLjMyLS4yM3MuNzctLjM2IDEuMDgtLjYzLjU2LS41OC43NC0uOTQuMjktLjc0LjMtMS4xNWgtMS43OWMtLjAxLjIxLS4wNi40LS4xNS41OHMtLjIxLjMzLS4zNi40Ni0uMzIuMjMtLjUyLjNjLS4xOS4wNy0uMzkuMDktLjYuMS0uMzYtLjAxLS42Ni0uMDgtLjg5LS4yMy0uMjUtLjE2LS40NS0uMzctLjU5LS42MnMtLjI1LS41NS0uMy0uODgtLjA4LS42Ny0uMDgtMXYtLjI3YzAtLjM1LjAzLS42OC4wOC0xLjAxek0xMiAyQzYuNDggMiAyIDYuNDggMiAxMnM0LjQ4IDEwIDEwIDEwIDEwLTQuNDggMTAtMTBTMTcuNTIgMiAxMiAyem0wIDE4Yy00LjQxIDAtOC0zLjU5LTgtOHMzLjU5LTggOC04IDggMy41OSA4IDgtMy41OSA4LTggOHoiPjwvcGF0aD48L2c+CjxnIGlkPSJjcmVhdGUiPjxwYXRoIGQ9Ik0zIDE3LjI1VjIxaDMuNzVMMTcuODEgOS45NGwtMy43NS0zLjc1TDMgMTcuMjV6TTIwLjcxIDcuMDRjLjM5LS4zOS4zOS0xLjAyIDAtMS40MWwtMi4zNC0yLjM0Yy0uMzktLjM5LTEuMDItLjM5LTEuNDEgMGwtMS44MyAxLjgzIDMuNzUgMy43NSAxLjgzLTEuODN6Ij48L3BhdGg+PC9nPgo8ZyBpZD0iY3JlYXRlLW5ldy1mb2xkZXIiPjxwYXRoIGQ9Ik0yMCA2aC04bC0yLTJINGMtMS4xMSAwLTEuOTkuODktMS45OSAyTDIgMThjMCAxLjExLjg5IDIgMiAyaDE2YzEuMTEgMCAyLS44OSAyLTJWOGMwLTEuMTEtLjg5LTItMi0yem0tMSA4aC0zdjNoLTJ2LTNoLTN2LTJoM1Y5aDJ2M2gzdjJ6Ij48L3BhdGg+PC9nPgo8ZyBpZD0iY3JlZGl0LWNhcmQiPjxwYXRoIGQ9Ik0yMCA0SDRjLTEuMTEgMC0xLjk5Ljg5LTEuOTkgMkwyIDE4YzAgMS4xMS44OSAyIDIgMmgxNmMxLjExIDAgMi0uODkgMi0yVjZjMC0xLjExLS44OS0yLTItMnptMCAxNEg0di02aDE2djZ6bTAtMTBINFY2aDE2djJ6Ij48L3BhdGg+PC9nPgo8ZyBpZD0iZGFzaGJvYXJkIj48cGF0aCBkPSJNMyAxM2g4VjNIM3YxMHptMCA4aDh2LTZIM3Y2em0xMCAwaDhWMTFoLTh2MTB6bTAtMTh2Nmg4VjNoLTh6Ij48L3BhdGg+PC9nPgo8ZyBpZD0iZGF0ZS1yYW5nZSI+PHBhdGggZD0iTTkgMTFIN3YyaDJ2LTJ6bTQgMGgtMnYyaDJ2LTJ6bTQgMGgtMnYyaDJ2LTJ6bTItN2gtMVYyaC0ydjJIOFYySDZ2Mkg1Yy0xLjExIDAtMS45OS45LTEuOTkgMkwzIDIwYzAgMS4xLjg5IDIgMiAyaDE0YzEuMSAwIDItLjkgMi0yVjZjMC0xLjEtLjktMi0yLTJ6bTAgMTZINVY5aDE0djExeiI+PC9wYXRoPjwvZz4KPGcgaWQ9ImRlbGV0ZSI+PHBhdGggZD0iTTYgMTljMCAxLjEuOSAyIDIgMmg4YzEuMSAwIDItLjkgMi0yVjdINnYxMnpNMTkgNGgtMy41bC0xLTFoLTVsLTEgMUg1djJoMTRWNHoiPjwvcGF0aD48L2c+CjxnIGlkPSJkZWxldGUtZm9yZXZlciI+PHBhdGggZD0iTTYgMTljMCAxLjEuOSAyIDIgMmg4YzEuMSAwIDItLjkgMi0yVjdINnYxMnptMi40Ni03LjEybDEuNDEtMS40MUwxMiAxMi41OWwyLjEyLTIuMTIgMS40MSAxLjQxTDEzLjQxIDE0bDIuMTIgMi4xMi0xLjQxIDEuNDFMMTIgMTUuNDFsLTIuMTIgMi4xMi0xLjQxLTEuNDFMMTAuNTkgMTRsLTIuMTMtMi4xMnpNMTUuNSA0bC0xLTFoLTVsLTEgMUg1djJoMTRWNHoiPjwvcGF0aD48L2c+CjxnIGlkPSJkZWxldGUtc3dlZXAiPjxwYXRoIGQ9Ik0xNSAxNmg0djJoLTR6bTAtOGg3djJoLTd6bTAgNGg2djJoLTZ6TTMgMThjMCAxLjEuOSAyIDIgMmg2YzEuMSAwIDItLjkgMi0yVjhIM3YxMHpNMTQgNWgtM2wtMS0xSDZMNSA1SDJ2MmgxMnoiPjwvcGF0aD48L2c+CjxnIGlkPSJkZXNjcmlwdGlvbiI+PHBhdGggZD0iTTE0IDJINmMtMS4xIDAtMS45OS45LTEuOTkgMkw0IDIwYzAgMS4xLjg5IDIgMS45OSAySDE4YzEuMSAwIDItLjkgMi0yVjhsLTYtNnptMiAxNkg4di0yaDh2MnptMC00SDh2LTJoOHYyem0tMy01VjMuNUwxOC41IDlIMTN6Ij48L3BhdGg+PC9nPgo8ZyBpZD0iZG5zIj48cGF0aCBkPSJNMjAgMTNINGMtLjU1IDAtMSAuNDUtMSAxdjZjMCAuNTUuNDUgMSAxIDFoMTZjLjU1IDAgMS0uNDUgMS0xdi02YzAtLjU1LS40NS0xLTEtMXpNNyAxOWMtMS4xIDAtMi0uOS0yLTJzLjktMiAyLTIgMiAuOSAyIDItLjkgMi0yIDJ6TTIwIDNINGMtLjU1IDAtMSAuNDUtMSAxdjZjMCAuNTUuNDUgMSAxIDFoMTZjLjU1IDAgMS0uNDUgMS0xVjRjMC0uNTUtLjQ1LTEtMS0xek03IDljLTEuMSAwLTItLjktMi0ycy45LTIgMi0yIDIgLjkgMiAyLS45IDItMiAyeiI+PC9wYXRoPjwvZz4KPGcgaWQ9ImRvbmUiPjxwYXRoIGQ9Ik05IDE2LjJMNC44IDEybC0xLjQgMS40TDkgMTkgMjEgN2wtMS40LTEuNEw5IDE2LjJ6Ij48L3BhdGg+PC9nPgo8ZyBpZD0iZG9uZS1hbGwiPjxwYXRoIGQ9Ik0xOCA3bC0xLjQxLTEuNDEtNi4zNCA2LjM0IDEuNDEgMS40MUwxOCA3em00LjI0LTEuNDFMMTEuNjYgMTYuMTcgNy40OCAxMmwtMS40MSAxLjQxTDExLjY2IDE5bDEyLTEyLTEuNDItMS40MXpNLjQxIDEzLjQxTDYgMTlsMS40MS0xLjQxTDEuODMgMTIgLjQxIDEzLjQxeiI+PC9wYXRoPjwvZz4KPGcgaWQ9ImRvbnV0LWxhcmdlIj48cGF0aCBkPSJNMTEgNS4wOFYyYy01IC41LTkgNC44MS05IDEwczQgOS41IDkgMTB2LTMuMDhjLTMtLjQ4LTYtMy40LTYtNi45MnMzLTYuNDQgNi02Ljkyek0xOC45NyAxMUgyMmMtLjQ3LTUtNC04LjUzLTktOXYzLjA4QzE2IDUuNTEgMTguNTQgOCAxOC45NyAxMXpNMTMgMTguOTJWMjJjNS0uNDcgOC41My00IDktOWgtMy4wM2MtLjQzIDMtMi45NyA1LjQ5LTUuOTcgNS45MnoiPjwvcGF0aD48L2c+CjxnIGlkPSJkb251dC1zbWFsbCI+PHBhdGggZD0iTTExIDkuMTZWMmMtNSAuNS05IDQuNzktOSAxMHM0IDkuNSA5IDEwdi03LjE2Yy0xLS40MS0yLTEuNTItMi0yLjg0czEtMi40MyAyLTIuODR6TTE0Ljg2IDExSDIyYy0uNDgtNC43NS00LTguNTMtOS05djcuMTZjMSAuMyAxLjUyLjk4IDEuODYgMS44NHpNMTMgMTQuODRWMjJjNS0uNDcgOC41Mi00LjI1IDktOWgtNy4xNGMtLjM0Ljg2LS44NiAxLjU0LTEuODYgMS44NHoiPjwvcGF0aD48L2c+CjxnIGlkPSJkcmFmdHMiPjxwYXRoIGQ9Ik0yMS45OSA4YzAtLjcyLS4zNy0xLjM1LS45NC0xLjdMMTIgMSAyLjk1IDYuM0MyLjM4IDYuNjUgMiA3LjI4IDIgOHYxMGMwIDEuMS45IDIgMiAyaDE2YzEuMSAwIDItLjkgMi0ybC0uMDEtMTB6TTEyIDEzTDMuNzQgNy44NCAxMiAzbDguMjYgNC44NEwxMiAxM3oiPjwvcGF0aD48L2c+CjxnIGlkPSJlamVjdCI+PHBhdGggZD0iTTUgMTdoMTR2Mkg1em03LTEyTDUuMzMgMTVoMTMuMzR6Ij48L3BhdGg+PC9nPgo8ZyBpZD0iZXJyb3IiPjxwYXRoIGQ9Ik0xMiAyQzYuNDggMiAyIDYuNDggMiAxMnM0LjQ4IDEwIDEwIDEwIDEwLTQuNDggMTAtMTBTMTcuNTIgMiAxMiAyem0xIDE1aC0ydi0yaDJ2MnptMC00aC0yVjdoMnY2eiI+PC9wYXRoPjwvZz4KPGcgaWQ9ImVycm9yLW91dGxpbmUiPjxwYXRoIGQ9Ik0xMSAxNWgydjJoLTJ6bTAtOGgydjZoLTJ6bS45OS01QzYuNDcgMiAyIDYuNDggMiAxMnM0LjQ3IDEwIDkuOTkgMTBDMTcuNTIgMjIgMjIgMTcuNTIgMjIgMTJTMTcuNTIgMiAxMS45OSAyek0xMiAyMGMtNC40MiAwLTgtMy41OC04LThzMy41OC04IDgtOCA4IDMuNTggOCA4LTMuNTggOC04IDh6Ij48L3BhdGg+PC9nPgo8ZyBpZD0iZXVyby1zeW1ib2wiPjxwYXRoIGQ9Ik0xNSAxOC41Yy0yLjUxIDAtNC42OC0xLjQyLTUuNzYtMy41SDE1di0ySDguNThjLS4wNS0uMzMtLjA4LS42Ni0uMDgtMXMuMDMtLjY3LjA4LTFIMTVWOUg5LjI0QzEwLjMyIDYuOTIgMTIuNSA1LjUgMTUgNS41YzEuNjEgMCAzLjA5LjU5IDQuMjMgMS41N0wyMSA1LjNDMTkuNDEgMy44NyAxNy4zIDMgMTUgM2MtMy45MiAwLTcuMjQgMi41MS04LjQ4IDZIM3YyaDMuMDZjLS4wNC4zMy0uMDYuNjYtLjA2IDEgMCAuMzQuMDIuNjcuMDYgMUgzdjJoMy41MmMxLjI0IDMuNDkgNC41NiA2IDguNDggNiAyLjMxIDAgNC40MS0uODcgNi0yLjNsLTEuNzgtMS43N2MtMS4xMy45OC0yLjYgMS41Ny00LjIyIDEuNTd6Ij48L3BhdGg+PC9nPgo8ZyBpZD0iZXZlbnQiPjxwYXRoIGQ9Ik0xNyAxMmgtNXY1aDV2LTV6TTE2IDF2Mkg4VjFINnYySDVjLTEuMTEgMC0xLjk5LjktMS45OSAyTDMgMTljMCAxLjEuODkgMiAyIDJoMTRjMS4xIDAgMi0uOSAyLTJWNWMwLTEuMS0uOS0yLTItMmgtMVYxaC0yem0zIDE4SDVWOGgxNHYxMXoiPjwvcGF0aD48L2c+CjxnIGlkPSJldmVudC1zZWF0Ij48cGF0aCBkPSJNNCAxOHYzaDN2LTNoMTB2M2gzdi02SDR6bTE1LThoM3YzaC0zek0yIDEwaDN2M0gyem0xNSAzSDdWNWMwLTEuMS45LTIgMi0yaDZjMS4xIDAgMiAuOSAyIDJ2OHoiPjwvcGF0aD48L2c+CjxnIGlkPSJleGl0LXRvLWFwcCI+PHBhdGggZD0iTTEwLjA5IDE1LjU5TDExLjUgMTdsNS01LTUtNS0xLjQxIDEuNDFMMTIuNjcgMTFIM3YyaDkuNjdsLTIuNTggMi41OXpNMTkgM0g1Yy0xLjExIDAtMiAuOS0yIDJ2NGgyVjVoMTR2MTRINXYtNEgzdjRjMCAxLjEuODkgMiAyIDJoMTRjMS4xIDAgMi0uOSAyLTJWNWMwLTEuMS0uOS0yLTItMnoiPjwvcGF0aD48L2c+CjxnIGlkPSJleHBhbmQtbGVzcyI+PHBhdGggZD0iTTEyIDhsLTYgNiAxLjQxIDEuNDFMMTIgMTAuODNsNC41OSA0LjU4TDE4IDE0eiI+PC9wYXRoPjwvZz4KPGcgaWQ9ImV4cGFuZC1tb3JlIj48cGF0aCBkPSJNMTYuNTkgOC41OUwxMiAxMy4xNyA3LjQxIDguNTkgNiAxMGw2IDYgNi02eiI+PC9wYXRoPjwvZz4KPGcgaWQ9ImV4cGxvcmUiPjxwYXRoIGQ9Ik0xMiAxMC45Yy0uNjEgMC0xLjEuNDktMS4xIDEuMXMuNDkgMS4xIDEuMSAxLjFjLjYxIDAgMS4xLS40OSAxLjEtMS4xcy0uNDktMS4xLTEuMS0xLjF6TTEyIDJDNi40OCAyIDIgNi40OCAyIDEyczQuNDggMTAgMTAgMTAgMTAtNC40OCAxMC0xMFMxNy41MiAyIDEyIDJ6bTIuMTkgMTIuMTlMNiAxOGwzLjgxLTguMTlMMTggNmwtMy44MSA4LjE5eiI+PC9wYXRoPjwvZz4KPGcgaWQ9ImV4dGVuc2lvbiI+PHBhdGggZD0iTTIwLjUgMTFIMTlWN2MwLTEuMS0uOS0yLTItMmgtNFYzLjVDMTMgMi4xMiAxMS44OCAxIDEwLjUgMVM4IDIuMTIgOCAzLjVWNUg0Yy0xLjEgMC0xLjk5LjktMS45OSAydjMuOEgzLjVjMS40OSAwIDIuNyAxLjIxIDIuNyAyLjdzLTEuMjEgMi43LTIuNyAyLjdIMlYyMGMwIDEuMS45IDIgMiAyaDMuOHYtMS41YzAtMS40OSAxLjIxLTIuNyAyLjctMi43IDEuNDkgMCAyLjcgMS4yMSAyLjcgMi43VjIySDE3YzEuMSAwIDItLjkgMi0ydi00aDEuNWMxLjM4IDAgMi41LTEuMTIgMi41LTIuNVMyMS44OCAxMSAyMC41IDExeiI+PC9wYXRoPjwvZz4KPGcgaWQ9ImZhY2UiPjxwYXRoIGQ9Ik05IDExLjc1Yy0uNjkgMC0xLjI1LjU2LTEuMjUgMS4yNXMuNTYgMS4yNSAxLjI1IDEuMjUgMS4yNS0uNTYgMS4yNS0xLjI1LS41Ni0xLjI1LTEuMjUtMS4yNXptNiAwYy0uNjkgMC0xLjI1LjU2LTEuMjUgMS4yNXMuNTYgMS4yNSAxLjI1IDEuMjUgMS4yNS0uNTYgMS4yNS0xLjI1LS41Ni0xLjI1LTEuMjUtMS4yNXpNMTIgMkM2LjQ4IDIgMiA2LjQ4IDIgMTJzNC40OCAxMCAxMCAxMCAxMC00LjQ4IDEwLTEwUzE3LjUyIDIgMTIgMnptMCAxOGMtNC40MSAwLTgtMy41OS04LTggMC0uMjkuMDItLjU4LjA1LS44NiAyLjM2LTEuMDUgNC4yMy0yLjk4IDUuMjEtNS4zN0MxMS4wNyA4LjMzIDE0LjA1IDEwIDE3LjQyIDEwYy43OCAwIDEuNTMtLjA5IDIuMjUtLjI2LjIxLjcxLjMzIDEuNDcuMzMgMi4yNiAwIDQuNDEtMy41OSA4LTggOHoiPjwvcGF0aD48L2c+CjxnIGlkPSJmYXZvcml0ZSI+PHBhdGggZD0iTTEyIDIxLjM1bC0xLjQ1LTEuMzJDNS40IDE1LjM2IDIgMTIuMjggMiA4LjUgMiA1LjQyIDQuNDIgMyA3LjUgM2MxLjc0IDAgMy40MS44MSA0LjUgMi4wOUMxMy4wOSAzLjgxIDE0Ljc2IDMgMTYuNSAzIDE5LjU4IDMgMjIgNS40MiAyMiA4LjVjMCAzLjc4LTMuNCA2Ljg2LTguNTUgMTEuNTRMMTIgMjEuMzV6Ij48L3BhdGg+PC9nPgo8ZyBpZD0iZmF2b3JpdGUtYm9yZGVyIj48cGF0aCBkPSJNMTYuNSAzYy0xLjc0IDAtMy40MS44MS00LjUgMi4wOUMxMC45MSAzLjgxIDkuMjQgMyA3LjUgMyA0LjQyIDMgMiA1LjQyIDIgOC41YzAgMy43OCAzLjQgNi44NiA4LjU1IDExLjU0TDEyIDIxLjM1bDEuNDUtMS4zMkMxOC42IDE1LjM2IDIyIDEyLjI4IDIyIDguNSAyMiA1LjQyIDE5LjU4IDMgMTYuNSAzem0tNC40IDE1LjU1bC0uMS4xLS4xLS4xQzcuMTQgMTQuMjQgNCAxMS4zOSA0IDguNSA0IDYuNSA1LjUgNSA3LjUgNWMxLjU0IDAgMy4wNC45OSAzLjU3IDIuMzZoMS44N0MxMy40NiA1Ljk5IDE0Ljk2IDUgMTYuNSA1YzIgMCAzLjUgMS41IDMuNSAzLjUgMCAyLjg5LTMuMTQgNS43NC03LjkgMTAuMDV6Ij48L3BhdGg+PC9nPgo8ZyBpZD0iZmVlZGJhY2siPjxwYXRoIGQ9Ik0yMCAySDRjLTEuMSAwLTEuOTkuOS0xLjk5IDJMMiAyMmw0LTRoMTRjMS4xIDAgMi0uOSAyLTJWNGMwLTEuMS0uOS0yLTItMnptLTcgMTJoLTJ2LTJoMnYyem0wLTRoLTJWNmgydjR6Ij48L3BhdGg+PC9nPgo8ZyBpZD0iZmlsZS1kb3dubG9hZCI+PHBhdGggZD0iTTE5IDloLTRWM0g5djZINWw3IDcgNy03ek01IDE4djJoMTR2LTJINXoiPjwvcGF0aD48L2c+CjxnIGlkPSJmaWxlLXVwbG9hZCI+PHBhdGggZD0iTTkgMTZoNnYtNmg0bC03LTctNyA3aDR6bS00IDJoMTR2Mkg1eiI+PC9wYXRoPjwvZz4KPGcgaWQ9ImZpbHRlci1saXN0Ij48cGF0aCBkPSJNMTAgMThoNHYtMmgtNHYyek0zIDZ2MmgxOFY2SDN6bTMgN2gxMnYtMkg2djJ6Ij48L3BhdGg+PC9nPgo8ZyBpZD0iZmluZC1pbi1wYWdlIj48cGF0aCBkPSJNMjAgMTkuNTlWOGwtNi02SDZjLTEuMSAwLTEuOTkuOS0xLjk5IDJMNCAyMGMwIDEuMS44OSAyIDEuOTkgMkgxOGMuNDUgMCAuODUtLjE1IDEuMTktLjRsLTQuNDMtNC40M2MtLjguNTItMS43NC44My0yLjc2LjgzLTIuNzYgMC01LTIuMjQtNS01czIuMjQtNSA1LTUgNSAyLjI0IDUgNWMwIDEuMDItLjMxIDEuOTYtLjgzIDIuNzVMMjAgMTkuNTl6TTkgMTNjMCAxLjY2IDEuMzQgMyAzIDNzMy0xLjM0IDMtMy0xLjM0LTMtMy0zLTMgMS4zNC0zIDN6Ij48L3BhdGg+PC9nPgo8ZyBpZD0iZmluZC1yZXBsYWNlIj48cGF0aCBkPSJNMTEgNmMxLjM4IDAgMi42My41NiAzLjU0IDEuNDZMMTIgMTBoNlY0bC0yLjA1IDIuMDVDMTQuNjggNC43OCAxMi45MyA0IDExIDRjLTMuNTMgMC02LjQzIDIuNjEtNi45MiA2SDYuMWMuNDYtMi4yOCAyLjQ4LTQgNC45LTR6bTUuNjQgOS4xNGMuNjYtLjkgMS4xMi0xLjk3IDEuMjgtMy4xNEgxNS45Yy0uNDYgMi4yOC0yLjQ4IDQtNC45IDQtMS4zOCAwLTIuNjMtLjU2LTMuNTQtMS40NkwxMCAxMkg0djZsMi4wNS0yLjA1QzcuMzIgMTcuMjIgOS4wNyAxOCAxMSAxOGMxLjU1IDAgMi45OC0uNTEgNC4xNC0xLjM2TDIwIDIxLjQ5IDIxLjQ5IDIwbC00Ljg1LTQuODZ6Ij48L3BhdGg+PC9nPgo8ZyBpZD0iZmluZ2VycHJpbnQiPjxwYXRoIGQ9Ik0xNy44MSA0LjQ3Yy0uMDggMC0uMTYtLjAyLS4yMy0uMDZDMTUuNjYgMy40MiAxNCAzIDEyLjAxIDNjLTEuOTggMC0zLjg2LjQ3LTUuNTcgMS40MS0uMjQuMTMtLjU0LjA0LS42OC0uMi0uMTMtLjI0LS4wNC0uNTUuMi0uNjhDNy44MiAyLjUyIDkuODYgMiAxMi4wMSAyYzIuMTMgMCAzLjk5LjQ3IDYuMDMgMS41Mi4yNS4xMy4zNC40My4yMS42Ny0uMDkuMTgtLjI2LjI4LS40NC4yOHpNMy41IDkuNzJjLS4xIDAtLjItLjAzLS4yOS0uMDktLjIzLS4xNi0uMjgtLjQ3LS4xMi0uNy45OS0xLjQgMi4yNS0yLjUgMy43NS0zLjI3QzkuOTggNC4wNCAxNCA0LjAzIDE3LjE1IDUuNjVjMS41Ljc3IDIuNzYgMS44NiAzLjc1IDMuMjUuMTYuMjIuMTEuNTQtLjEyLjctLjIzLjE2LS41NC4xMS0uNy0uMTItLjktMS4yNi0yLjA0LTIuMjUtMy4zOS0yLjk0LTIuODctMS40Ny02LjU0LTEuNDctOS40LjAxLTEuMzYuNy0yLjUgMS43LTMuNCAyLjk2LS4wOC4xNC0uMjMuMjEtLjM5LjIxem02LjI1IDEyLjA3Yy0uMTMgMC0uMjYtLjA1LS4zNS0uMTUtLjg3LS44Ny0xLjM0LTEuNDMtMi4wMS0yLjY0LS42OS0xLjIzLTEuMDUtMi43My0xLjA1LTQuMzQgMC0yLjk3IDIuNTQtNS4zOSA1LjY2LTUuMzlzNS42NiAyLjQyIDUuNjYgNS4zOWMwIC4yOC0uMjIuNS0uNS41cy0uNS0uMjItLjUtLjVjMC0yLjQyLTIuMDktNC4zOS00LjY2LTQuMzktMi41NyAwLTQuNjYgMS45Ny00LjY2IDQuMzkgMCAxLjQ0LjMyIDIuNzcuOTMgMy44NS42NCAxLjE1IDEuMDggMS42NCAxLjg1IDIuNDIuMTkuMi4xOS41MSAwIC43MS0uMTEuMS0uMjQuMTUtLjM3LjE1em03LjE3LTEuODVjLTEuMTkgMC0yLjI0LS4zLTMuMS0uODktMS40OS0xLjAxLTIuMzgtMi42NS0yLjM4LTQuMzkgMC0uMjguMjItLjUuNS0uNXMuNS4yMi41LjVjMCAxLjQxLjcyIDIuNzQgMS45NCAzLjU2LjcxLjQ4IDEuNTQuNzEgMi41NC43MS4yNCAwIC42NC0uMDMgMS4wNC0uMS4yNy0uMDUuNTMuMTMuNTguNDEuMDUuMjctLjEzLjUzLS40MS41OC0uNTcuMTEtMS4wNy4xMi0xLjIxLjEyek0xNC45MSAyMmMtLjA0IDAtLjA5LS4wMS0uMTMtLjAyLTEuNTktLjQ0LTIuNjMtMS4wMy0zLjcyLTIuMS0xLjQtMS4zOS0yLjE3LTMuMjQtMi4xNy01LjIyIDAtMS42MiAxLjM4LTIuOTQgMy4wOC0yLjk0IDEuNyAwIDMuMDggMS4zMiAzLjA4IDIuOTQgMCAxLjA3LjkzIDEuOTQgMi4wOCAxLjk0czIuMDgtLjg3IDIuMDgtMS45NGMwLTMuNzctMy4yNS02LjgzLTcuMjUtNi44My0yLjg0IDAtNS40NCAxLjU4LTYuNjEgNC4wMy0uMzkuODEtLjU5IDEuNzYtLjU5IDIuOCAwIC43OC4wNyAyLjAxLjY3IDMuNjEuMS4yNi0uMDMuNTUtLjI5LjY0LS4yNi4xLS41NS0uMDQtLjY0LS4yOS0uNDktMS4zMS0uNzMtMi42MS0uNzMtMy45NiAwLTEuMi4yMy0yLjI5LjY4LTMuMjQgMS4zMy0yLjc5IDQuMjgtNC42IDcuNTEtNC42IDQuNTUgMCA4LjI1IDMuNTEgOC4yNSA3LjgzIDAgMS42Mi0xLjM4IDIuOTQtMy4wOCAyLjk0cy0zLjA4LTEuMzItMy4wOC0yLjk0YzAtMS4wNy0uOTMtMS45NC0yLjA4LTEuOTRzLTIuMDguODctMi4wOCAxLjk0YzAgMS43MS42NiAzLjMxIDEuODcgNC41MS45NS45NCAxLjg2IDEuNDYgMy4yNyAxLjg1LjI3LjA3LjQyLjM1LjM1LjYxLS4wNS4yMy0uMjYuMzgtLjQ3LjM4eiI+PC9wYXRoPjwvZz4KPGcgaWQ9ImZpcnN0LXBhZ2UiPjxwYXRoIGQ9Ik0xOC40MSAxNi41OUwxMy44MiAxMmw0LjU5LTQuNTlMMTcgNmwtNiA2IDYgNnpNNiA2aDJ2MTJINnoiPjwvcGF0aD48L2c+CjxnIGlkPSJmbGFnIj48cGF0aCBkPSJNMTQuNCA2TDE0IDRINXYxN2gydi03aDUuNmwuNCAyaDdWNnoiPjwvcGF0aD48L2c+CjxnIGlkPSJmbGlnaHQtbGFuZCI+PHBhdGggZD0iTTIuNSAxOWgxOXYyaC0xOXptNy4xOC01LjczbDQuMzUgMS4xNiA1LjMxIDEuNDJjLjguMjEgMS42Mi0uMjYgMS44NC0xLjA2LjIxLS44LS4yNi0xLjYyLTEuMDYtMS44NGwtNS4zMS0xLjQyLTIuNzYtOS4wMkwxMC4xMiAydjguMjhMNS4xNSA4Ljk1bC0uOTMtMi4zMi0xLjQ1LS4zOXY1LjE3bDEuNi40MyA1LjMxIDEuNDN6Ij48L3BhdGg+PC9nPgo8ZyBpZD0iZmxpZ2h0LXRha2VvZmYiPjxwYXRoIGQ9Ik0yLjUgMTloMTl2MmgtMTl6bTE5LjU3LTkuMzZjLS4yMS0uOC0xLjA0LTEuMjgtMS44NC0xLjA2TDE0LjkyIDEwbC02LjktNi40My0xLjkzLjUxIDQuMTQgNy4xNy00Ljk3IDEuMzMtMS45Ny0xLjU0LTEuNDUuMzkgMS44MiAzLjE2Ljc3IDEuMzMgMS42LS40MyA1LjMxLTEuNDIgNC4zNS0xLjE2TDIxIDExLjQ5Yy44MS0uMjMgMS4yOC0xLjA1IDEuMDctMS44NXoiPjwvcGF0aD48L2c+CjxnIGlkPSJmbGlwLXRvLWJhY2siPjxwYXRoIGQ9Ik05IDdIN3YyaDJWN3ptMCA0SDd2Mmgydi0yem0wLThjLTEuMTEgMC0yIC45LTIgMmgyVjN6bTQgMTJoLTJ2Mmgydi0yem02LTEydjJoMmMwLTEuMS0uOS0yLTItMnptLTYgMGgtMnYyaDJWM3pNOSAxN3YtMkg3YzAgMS4xLjg5IDIgMiAyem0xMC00aDJ2LTJoLTJ2MnptMC00aDJWN2gtMnYyem0wIDhjMS4xIDAgMi0uOSAyLTJoLTJ2MnpNNSA3SDN2MTJjMCAxLjEuODkgMiAyIDJoMTJ2LTJINVY3em0xMC0yaDJWM2gtMnYyem0wIDEyaDJ2LTJoLTJ2MnoiPjwvcGF0aD48L2c+CjxnIGlkPSJmbGlwLXRvLWZyb250Ij48cGF0aCBkPSJNMyAxM2gydi0ySDN2MnptMCA0aDJ2LTJIM3Yyem0yIDR2LTJIM2MwIDEuMS44OSAyIDIgMnpNMyA5aDJWN0gzdjJ6bTEyIDEyaDJ2LTJoLTJ2MnptNC0xOEg5Yy0xLjExIDAtMiAuOS0yIDJ2MTBjMCAxLjEuODkgMiAyIDJoMTBjMS4xIDAgMi0uOSAyLTJWNWMwLTEuMS0uOS0yLTItMnptMCAxMkg5VjVoMTB2MTB6bS04IDZoMnYtMmgtMnYyem0tNCAwaDJ2LTJIN3YyeiI+PC9wYXRoPjwvZz4KPGcgaWQ9ImZvbGRlciI+PHBhdGggZD0iTTEwIDRINGMtMS4xIDAtMS45OS45LTEuOTkgMkwyIDE4YzAgMS4xLjkgMiAyIDJoMTZjMS4xIDAgMi0uOSAyLTJWOGMwLTEuMS0uOS0yLTItMmgtOGwtMi0yeiI+PC9wYXRoPjwvZz4KPGcgaWQ9ImZvbGRlci1vcGVuIj48cGF0aCBkPSJNMjAgNmgtOGwtMi0ySDRjLTEuMSAwLTEuOTkuOS0xLjk5IDJMMiAxOGMwIDEuMS45IDIgMiAyaDE2YzEuMSAwIDItLjkgMi0yVjhjMC0xLjEtLjktMi0yLTJ6bTAgMTJINFY4aDE2djEweiI+PC9wYXRoPjwvZz4KPGcgaWQ9ImZvbGRlci1zaGFyZWQiPjxwYXRoIGQ9Ik0yMCA2aC04bC0yLTJINGMtMS4xIDAtMS45OS45LTEuOTkgMkwyIDE4YzAgMS4xLjkgMiAyIDJoMTZjMS4xIDAgMi0uOSAyLTJWOGMwLTEuMS0uOS0yLTItMnptLTUgM2MxLjEgMCAyIC45IDIgMnMtLjkgMi0yIDItMi0uOS0yLTIgLjktMiAyLTJ6bTQgOGgtOHYtMWMwLTEuMzMgMi42Ny0yIDQtMnM0IC42NyA0IDJ2MXoiPjwvcGF0aD48L2c+CjxnIGlkPSJmb250LWRvd25sb2FkIj48cGF0aCBkPSJNOS45MyAxMy41aDQuMTRMMTIgNy45OHpNMjAgMkg0Yy0xLjEgMC0yIC45LTIgMnYxNmMwIDEuMS45IDIgMiAyaDE2YzEuMSAwIDItLjkgMi0yVjRjMC0xLjEtLjktMi0yLTJ6bS00LjA1IDE2LjVsLTEuMTQtM0g5LjE3bC0xLjEyIDNINS45Nmw1LjExLTEzaDEuODZsNS4xMSAxM2gtMi4wOXoiPjwvcGF0aD48L2c+CjxnIGlkPSJmb3J3YXJkIj48cGF0aCBkPSJNMTIgOFY0bDggOC04IDh2LTRINFY4eiI+PC9wYXRoPjwvZz4KPGcgaWQ9ImZ1bGxzY3JlZW4iPjxwYXRoIGQ9Ik03IDE0SDV2NWg1di0ySDd2LTN6bS0yLTRoMlY3aDNWNUg1djV6bTEyIDdoLTN2Mmg1di01aC0ydjN6TTE0IDV2MmgzdjNoMlY1aC01eiI+PC9wYXRoPjwvZz4KPGcgaWQ9ImZ1bGxzY3JlZW4tZXhpdCI+PHBhdGggZD0iTTUgMTZoM3YzaDJ2LTVINXYyem0zLThINXYyaDVWNUg4djN6bTYgMTFoMnYtM2gzdi0yaC01djV6bTItMTFWNWgtMnY1aDVWOGgtM3oiPjwvcGF0aD48L2c+CjxnIGlkPSJnLXRyYW5zbGF0ZSI+PHBhdGggZD0iTTIwIDVoLTkuMTJMMTAgMkg0Yy0xLjEgMC0yIC45LTIgMnYxM2MwIDEuMS45IDIgMiAyaDdsMSAzaDhjMS4xIDAgMi0uOSAyLTJWN2MwLTEuMS0uOS0yLTItMnpNNy4xNyAxNC41OWMtMi4yNSAwLTQuMDktMS44My00LjA5LTQuMDlzMS44My00LjA5IDQuMDktNC4wOWMxLjA0IDAgMS45OS4zNyAyLjc0IDEuMDdsLjA3LjA2LTEuMjMgMS4xOC0uMDYtLjA1Yy0uMjktLjI3LS43OC0uNTktMS41Mi0uNTktMS4zMSAwLTIuMzggMS4wOS0yLjM4IDIuNDJzMS4wNyAyLjQyIDIuMzggMi40MmMxLjM3IDAgMS45Ni0uODcgMi4xMi0xLjQ2SDcuMDhWOS45MWgzLjk1bC4wMS4wN2MuMDQuMjEuMDUuNC4wNS42MSAwIDIuMzUtMS42MSA0LTMuOTIgNHptNi4wMy0xLjcxYy4zMy42Ljc0IDEuMTggMS4xOSAxLjdsLS41NC41My0uNjUtMi4yM3ptLjc3LS43NmgtLjk5bC0uMzEtMS4wNGgzLjk5cy0uMzQgMS4zMS0xLjU2IDIuNzRjLS41Mi0uNjItLjg5LTEuMjMtMS4xMy0xLjd6TTIxIDIwYzAgLjU1LS40NSAxLTEgMWgtN2wyLTItLjgxLTIuNzcuOTItLjkyTDE3Ljc5IDE4bC43My0uNzMtMi43MS0yLjY4Yy45LTEuMDMgMS42LTIuMjUgMS45Mi0zLjUxSDE5di0xLjA0aC0zLjY0VjloLTEuMDR2MS4wNGgtMS45NkwxMS4xOCA2SDIwYy41NSAwIDEgLjQ1IDEgMXYxM3oiPjwvcGF0aD48L2c+CjxnIGlkPSJnYXZlbCI+PHBhdGggZD0iTTEgMjFoMTJ2Mkgxek01LjI0NSA4LjA3bDIuODMtMi44MjcgMTQuMTQgMTQuMTQyLTIuODI4IDIuODI4ek0xMi4zMTcgMWw1LjY1NyA1LjY1Ni0yLjgzIDIuODMtNS42NTQtNS42NnpNMy44MjUgOS40ODVsNS42NTcgNS42NTctMi44MjggMi44MjgtNS42NTctNS42NTd6Ij48L3BhdGg+PC9nPgo8ZyBpZD0iZ2VzdHVyZSI+PHBhdGggZD0iTTQuNTkgNi44OWMuNy0uNzEgMS40LTEuMzUgMS43MS0xLjIyLjUuMiAwIDEuMDMtLjMgMS41Mi0uMjUuNDItMi44NiAzLjg5LTIuODYgNi4zMSAwIDEuMjguNDggMi4zNCAxLjM0IDIuOTguNzUuNTYgMS43NC43MyAyLjY0LjQ2IDEuMDctLjMxIDEuOTUtMS40IDMuMDYtMi43NyAxLjIxLTEuNDkgMi44My0zLjQ0IDQuMDgtMy40NCAxLjYzIDAgMS42NSAxLjAxIDEuNzYgMS43OS0zLjc4LjY0LTUuMzggMy42Ny01LjM4IDUuMzcgMCAxLjcgMS40NCAzLjA5IDMuMjEgMy4wOSAxLjYzIDAgNC4yOS0xLjMzIDQuNjktNi4xSDIxdi0yLjVoLTIuNDdjLS4xNS0xLjY1LTEuMDktNC4yLTQuMDMtNC4yLTIuMjUgMC00LjE4IDEuOTEtNC45NCAyLjg0LS41OC43My0yLjA2IDIuNDgtMi4yOSAyLjcyLS4yNS4zLS42OC44NC0xLjExLjg0LS40NSAwLS43Mi0uODMtLjM2LTEuOTIuMzUtMS4wOSAxLjQtMi44NiAxLjg1LTMuNTIuNzgtMS4xNCAxLjMtMS45MiAxLjMtMy4yOEM4Ljk1IDMuNjkgNy4zMSAzIDYuNDQgMyA1LjEyIDMgMy45NyA0IDMuNzIgNC4yNWMtLjM2LjM2LS42Ni42Ni0uODguOTNsMS43NSAxLjcxem05LjI5IDExLjY2Yy0uMzEgMC0uNzQtLjI2LS43NC0uNzIgMC0uNi43My0yLjIgMi44Ny0yLjc2LS4zIDIuNjktMS40MyAzLjQ4LTIuMTMgMy40OHoiPjwvcGF0aD48L2c+CjxnIGlkPSJnZXQtYXBwIj48cGF0aCBkPSJNMTkgOWgtNFYzSDl2Nkg1bDcgNyA3LTd6TTUgMTh2MmgxNHYtMkg1eiI+PC9wYXRoPjwvZz4KPGcgaWQ9ImdpZiI+PHBhdGggZD0iTTExLjUgOUgxM3Y2aC0xLjV6TTkgOUg2Yy0uNiAwLTEgLjUtMSAxdjRjMCAuNS40IDEgMSAxaDNjLjYgMCAxLS41IDEtMXYtMkg4LjV2MS41aC0ydi0zSDEwVjEwYzAtLjUtLjQtMS0xLTF6bTEwIDEuNVY5aC00LjV2NkgxNnYtMmgydi0xLjVoLTJ2LTF6Ij48L3BhdGg+PC9nPgo8ZyBpZD0iZ3JhZGUiPjxwYXRoIGQ9Ik0xMiAxNy4yN0wxOC4xOCAyMWwtMS42NC03LjAzTDIyIDkuMjRsLTcuMTktLjYxTDEyIDIgOS4xOSA4LjYzIDIgOS4yNGw1LjQ2IDQuNzNMNS44MiAyMXoiPjwvcGF0aD48L2c+CjxnIGlkPSJncm91cC13b3JrIj48cGF0aCBkPSJNMTIgMkM2LjQ4IDIgMiA2LjQ4IDIgMTJzNC40OCAxMCAxMCAxMCAxMC00LjQ4IDEwLTEwUzE3LjUyIDIgMTIgMnpNOCAxNy41Yy0xLjM4IDAtMi41LTEuMTItMi41LTIuNXMxLjEyLTIuNSAyLjUtMi41IDIuNSAxLjEyIDIuNSAyLjUtMS4xMiAyLjUtMi41IDIuNXpNOS41IDhjMC0xLjM4IDEuMTItMi41IDIuNS0yLjVzMi41IDEuMTIgMi41IDIuNS0xLjEyIDIuNS0yLjUgMi41UzkuNSA5LjM4IDkuNSA4em02LjUgOS41Yy0xLjM4IDAtMi41LTEuMTItMi41LTIuNXMxLjEyLTIuNSAyLjUtMi41IDIuNSAxLjEyIDIuNSAyLjUtMS4xMiAyLjUtMi41IDIuNXoiPjwvcGF0aD48L2c+CjxnIGlkPSJoZWxwIj48cGF0aCBkPSJNMTIgMkM2LjQ4IDIgMiA2LjQ4IDIgMTJzNC40OCAxMCAxMCAxMCAxMC00LjQ4IDEwLTEwUzE3LjUyIDIgMTIgMnptMSAxN2gtMnYtMmgydjJ6bTIuMDctNy43NWwtLjkuOTJDMTMuNDUgMTIuOSAxMyAxMy41IDEzIDE1aC0ydi0uNWMwLTEuMS40NS0yLjEgMS4xNy0yLjgzbDEuMjQtMS4yNmMuMzctLjM2LjU5LS44Ni41OS0xLjQxIDAtMS4xLS45LTItMi0ycy0yIC45LTIgMkg4YzAtMi4yMSAxLjc5LTQgNC00czQgMS43OSA0IDRjMCAuODgtLjM2IDEuNjgtLjkzIDIuMjV6Ij48L3BhdGg+PC9nPgo8ZyBpZD0iaGVscC1vdXRsaW5lIj48cGF0aCBkPSJNMTEgMThoMnYtMmgtMnYyem0xLTE2QzYuNDggMiAyIDYuNDggMiAxMnM0LjQ4IDEwIDEwIDEwIDEwLTQuNDggMTAtMTBTMTcuNTIgMiAxMiAyem0wIDE4Yy00LjQxIDAtOC0zLjU5LTgtOHMzLjU5LTggOC04IDggMy41OSA4IDgtMy41OSA4LTggOHptMC0xNGMtMi4yMSAwLTQgMS43OS00IDRoMmMwLTEuMS45LTIgMi0yczIgLjkgMiAyYzAgMi0zIDEuNzUtMyA1aDJjMC0yLjI1IDMtMi41IDMtNSAwLTIuMjEtMS43OS00LTQtNHoiPjwvcGF0aD48L2c+CjxnIGlkPSJoaWdobGlnaHQtb2ZmIj48cGF0aCBkPSJNMTQuNTkgOEwxMiAxMC41OSA5LjQxIDggOCA5LjQxIDEwLjU5IDEyIDggMTQuNTkgOS40MSAxNiAxMiAxMy40MSAxNC41OSAxNiAxNiAxNC41OSAxMy40MSAxMiAxNiA5LjQxIDE0LjU5IDh6TTEyIDJDNi40NyAyIDIgNi40NyAyIDEyczQuNDcgMTAgMTAgMTAgMTAtNC40NyAxMC0xMFMxNy41MyAyIDEyIDJ6bTAgMThjLTQuNDEgMC04LTMuNTktOC04czMuNTktOCA4LTggOCAzLjU5IDggOC0zLjU5IDgtOCA4eiI+PC9wYXRoPjwvZz4KPGcgaWQ9Imhpc3RvcnkiPjxwYXRoIGQ9Ik0xMyAzYy00Ljk3IDAtOSA0LjAzLTkgOUgxbDMuODkgMy44OS4wNy4xNEw5IDEySDZjMC0zLjg3IDMuMTMtNyA3LTdzNyAzLjEzIDcgNy0zLjEzIDctNyA3Yy0xLjkzIDAtMy42OC0uNzktNC45NC0yLjA2bC0xLjQyIDEuNDJDOC4yNyAxOS45OSAxMC41MSAyMSAxMyAyMWM0Ljk3IDAgOS00LjAzIDktOXMtNC4wMy05LTktOXptLTEgNXY1bDQuMjggMi41NC43Mi0xLjIxLTMuNS0yLjA4VjhIMTJ6Ij48L3BhdGg+PC9nPgo8ZyBpZD0iaG9tZSI+PHBhdGggZD0iTTEwIDIwdi02aDR2Nmg1di04aDNMMTIgMyAyIDEyaDN2OHoiPjwvcGF0aD48L2c+CjxnIGlkPSJob3VyZ2xhc3MtZW1wdHkiPjxwYXRoIGQ9Ik02IDJ2NmguMDFMNiA4LjAxIDEwIDEybC00IDQgLjAxLjAxSDZWMjJoMTJ2LTUuOTloLS4wMUwxOCAxNmwtNC00IDQtMy45OS0uMDEtLjAxSDE4VjJINnptMTAgMTQuNVYyMEg4di0zLjVsNC00IDQgNHptLTQtNWwtNC00VjRoOHYzLjVsLTQgNHoiPjwvcGF0aD48L2c+CjxnIGlkPSJob3VyZ2xhc3MtZnVsbCI+PHBhdGggZD0iTTYgMnY2aC4wMUw2IDguMDEgMTAgMTJsLTQgNCAuMDEuMDFINlYyMmgxMnYtNS45OWgtLjAxTDE4IDE2bC00LTQgNC0zLjk5LS4wMS0uMDFIMThWMkg2eiI+PC9wYXRoPjwvZz4KPGcgaWQ9Imh0dHAiPjxwYXRoIGQ9Ik00LjUgMTFoLTJWOUgxdjZoMS41di0yLjVoMlYxNUg2VjlINC41djJ6bTIuNS0uNWgxLjVWMTVIMTB2LTQuNWgxLjVWOUg3djEuNXptNS41IDBIMTRWMTVoMS41di00LjVIMTdWOWgtNC41djEuNXptOS0xLjVIMTh2NmgxLjV2LTJoMmMuOCAwIDEuNS0uNyAxLjUtMS41di0xYzAtLjgtLjctMS41LTEuNS0xLjV6bTAgMi41aC0ydi0xaDJ2MXoiPjwvcGF0aD48L2c+CjxnIGlkPSJodHRwcyI+PHBhdGggZD0iTTE4IDhoLTFWNmMwLTIuNzYtMi4yNC01LTUtNVM3IDMuMjQgNyA2djJINmMtMS4xIDAtMiAuOS0yIDJ2MTBjMCAxLjEuOSAyIDIgMmgxMmMxLjEgMCAyLS45IDItMlYxMGMwLTEuMS0uOS0yLTItMnptLTYgOWMtMS4xIDAtMi0uOS0yLTJzLjktMiAyLTIgMiAuOSAyIDItLjkgMi0yIDJ6bTMuMS05SDguOVY2YzAtMS43MSAxLjM5LTMuMSAzLjEtMy4xIDEuNzEgMCAzLjEgMS4zOSAzLjEgMy4xdjJ6Ij48L3BhdGg+PC9nPgo8ZyBpZD0iaW1wb3J0YW50LWRldmljZXMiPjxwYXRoIGQ9Ik0yMyAxMS4wMUwxOCAxMWMtLjU1IDAtMSAuNDUtMSAxdjljMCAuNTUuNDUgMSAxIDFoNWMuNTUgMCAxLS40NSAxLTF2LTljMC0uNTUtLjQ1LS45OS0xLS45OXpNMjMgMjBoLTV2LTdoNXY3ek0yMCAySDJDLjg5IDIgMCAyLjg5IDAgNHYxMmMwIDEuMS44OSAyIDIgMmg3djJIN3YyaDh2LTJoLTJ2LTJoMnYtMkgyVjRoMTh2NWgyVjRjMC0xLjExLS45LTItMi0yem0tOC4wMyA3TDExIDZsLS45NyAzSDdsMi40NyAxLjc2LS45NCAyLjkxIDIuNDctMS44IDIuNDcgMS44LS45NC0yLjkxTDE1IDloLTMuMDN6Ij48L3BhdGg+PC9nPgo8ZyBpZD0iaW5ib3giPjxwYXRoIGQ9Ik0xOSAzSDQuOTljLTEuMTEgMC0xLjk4Ljg5LTEuOTggMkwzIDE5YzAgMS4xLjg4IDIgMS45OSAySDE5YzEuMSAwIDItLjkgMi0yVjVjMC0xLjExLS45LTItMi0yem0wIDEyaC00YzAgMS42Ni0xLjM1IDMtMyAzcy0zLTEuMzQtMy0zSDQuOTlWNUgxOXYxMHoiPjwvcGF0aD48L2c+CjxnIGlkPSJpbmRldGVybWluYXRlLWNoZWNrLWJveCI+PHBhdGggZD0iTTE5IDNINWMtMS4xIDAtMiAuOS0yIDJ2MTRjMCAxLjEuOSAyIDIgMmgxNGMxLjEgMCAyLS45IDItMlY1YzAtMS4xLS45LTItMi0yem0tMiAxMEg3di0yaDEwdjJ6Ij48L3BhdGg+PC9nPgo8ZyBpZD0iaW5mbyI+PHBhdGggZD0iTTEyIDJDNi40OCAyIDIgNi40OCAyIDEyczQuNDggMTAgMTAgMTAgMTAtNC40OCAxMC0xMFMxNy41MiAyIDEyIDJ6bTEgMTVoLTJ2LTZoMnY2em0wLThoLTJWN2gydjJ6Ij48L3BhdGg+PC9nPgo8ZyBpZD0iaW5mby1vdXRsaW5lIj48cGF0aCBkPSJNMTEgMTdoMnYtNmgtMnY2em0xLTE1QzYuNDggMiAyIDYuNDggMiAxMnM0LjQ4IDEwIDEwIDEwIDEwLTQuNDggMTAtMTBTMTcuNTIgMiAxMiAyem0wIDE4Yy00LjQxIDAtOC0zLjU5LTgtOHMzLjU5LTggOC04IDggMy41OSA4IDgtMy41OSA4LTggOHpNMTEgOWgyVjdoLTJ2MnoiPjwvcGF0aD48L2c+CjxnIGlkPSJpbnB1dCI+PHBhdGggZD0iTTIxIDMuMDFIM2MtMS4xIDAtMiAuOS0yIDJWOWgyVjQuOTloMTh2MTQuMDNIM1YxNUgxdjQuMDFjMCAxLjEuOSAxLjk4IDIgMS45OGgxOGMxLjEgMCAyLS44OCAyLTEuOTh2LTE0YzAtMS4xMS0uOS0yLTItMnpNMTEgMTZsNC00LTQtNHYzSDF2MmgxMHYzeiI+PC9wYXRoPjwvZz4KPGcgaWQ9ImludmVydC1jb2xvcnMiPjxwYXRoIGQ9Ik0xNy42NiA3LjkzTDEyIDIuMjcgNi4zNCA3LjkzYy0zLjEyIDMuMTItMy4xMiA4LjE5IDAgMTEuMzFDNy45IDIwLjggOS45NSAyMS41OCAxMiAyMS41OGMyLjA1IDAgNC4xLS43OCA1LjY2LTIuMzQgMy4xMi0zLjEyIDMuMTItOC4xOSAwLTExLjMxek0xMiAxOS41OWMtMS42IDAtMy4xMS0uNjItNC4yNC0xLjc2QzYuNjIgMTYuNjkgNiAxNS4xOSA2IDEzLjU5cy42Mi0zLjExIDEuNzYtNC4yNEwxMiA1LjF2MTQuNDl6Ij48L3BhdGg+PC9nPgo8ZyBpZD0ibGFiZWwiPjxwYXRoIGQ9Ik0xNy42MyA1Ljg0QzE3LjI3IDUuMzMgMTYuNjcgNSAxNiA1TDUgNS4wMUMzLjkgNS4wMSAzIDUuOSAzIDd2MTBjMCAxLjEuOSAxLjk5IDIgMS45OUwxNiAxOWMuNjcgMCAxLjI3LS4zMyAxLjYzLS44NEwyMiAxMmwtNC4zNy02LjE2eiI+PC9wYXRoPjwvZz4KPGcgaWQ9ImxhYmVsLW91dGxpbmUiPjxwYXRoIGQ9Ik0xNy42MyA1Ljg0QzE3LjI3IDUuMzMgMTYuNjcgNSAxNiA1TDUgNS4wMUMzLjkgNS4wMSAzIDUuOSAzIDd2MTBjMCAxLjEuOSAxLjk5IDIgMS45OUwxNiAxOWMuNjcgMCAxLjI3LS4zMyAxLjYzLS44NEwyMiAxMmwtNC4zNy02LjE2ek0xNiAxN0g1VjdoMTFsMy41NSA1TDE2IDE3eiI+PC9wYXRoPjwvZz4KPGcgaWQ9Imxhbmd1YWdlIj48cGF0aCBkPSJNMTEuOTkgMkM2LjQ3IDIgMiA2LjQ4IDIgMTJzNC40NyAxMCA5Ljk5IDEwQzE3LjUyIDIyIDIyIDE3LjUyIDIyIDEyUzE3LjUyIDIgMTEuOTkgMnptNi45MyA2aC0yLjk1Yy0uMzItMS4yNS0uNzgtMi40NS0xLjM4LTMuNTYgMS44NC42MyAzLjM3IDEuOTEgNC4zMyAzLjU2ek0xMiA0LjA0Yy44MyAxLjIgMS40OCAyLjUzIDEuOTEgMy45NmgtMy44MmMuNDMtMS40MyAxLjA4LTIuNzYgMS45MS0zLjk2ek00LjI2IDE0QzQuMSAxMy4zNiA0IDEyLjY5IDQgMTJzLjEtMS4zNi4yNi0yaDMuMzhjLS4wOC42Ni0uMTQgMS4zMi0uMTQgMiAwIC42OC4wNiAxLjM0LjE0IDJINC4yNnptLjgyIDJoMi45NWMuMzIgMS4yNS43OCAyLjQ1IDEuMzggMy41Ni0xLjg0LS42My0zLjM3LTEuOS00LjMzLTMuNTZ6bTIuOTUtOEg1LjA4Yy45Ni0xLjY2IDIuNDktMi45MyA0LjMzLTMuNTZDOC44MSA1LjU1IDguMzUgNi43NSA4LjAzIDh6TTEyIDE5Ljk2Yy0uODMtMS4yLTEuNDgtMi41My0xLjkxLTMuOTZoMy44MmMtLjQzIDEuNDMtMS4wOCAyLjc2LTEuOTEgMy45NnpNMTQuMzQgMTRIOS42NmMtLjA5LS42Ni0uMTYtMS4zMi0uMTYtMiAwLS42OC4wNy0xLjM1LjE2LTJoNC42OGMuMDkuNjUuMTYgMS4zMi4xNiAyIDAgLjY4LS4wNyAxLjM0LS4xNiAyem0uMjUgNS41NmMuNi0xLjExIDEuMDYtMi4zMSAxLjM4LTMuNTZoMi45NWMtLjk2IDEuNjUtMi40OSAyLjkzLTQuMzMgMy41NnpNMTYuMzYgMTRjLjA4LS42Ni4xNC0xLjMyLjE0LTIgMC0uNjgtLjA2LTEuMzQtLjE0LTJoMy4zOGMuMTYuNjQuMjYgMS4zMS4yNiAycy0uMSAxLjM2LS4yNiAyaC0zLjM4eiI+PC9wYXRoPjwvZz4KPGcgaWQ9Imxhc3QtcGFnZSI+PHBhdGggZD0iTTUuNTkgNy40MUwxMC4xOCAxMmwtNC41OSA0LjU5TDcgMThsNi02LTYtNnpNMTYgNmgydjEyaC0yeiI+PC9wYXRoPjwvZz4KPGcgaWQ9ImxhdW5jaCI+PHBhdGggZD0iTTE5IDE5SDVWNWg3VjNINWMtMS4xMSAwLTIgLjktMiAydjE0YzAgMS4xLjg5IDIgMiAyaDE0YzEuMSAwIDItLjkgMi0ydi03aC0ydjd6TTE0IDN2MmgzLjU5bC05LjgzIDkuODMgMS40MSAxLjQxTDE5IDYuNDFWMTBoMlYzaC03eiI+PC9wYXRoPjwvZz4KPGcgaWQ9ImxpZ2h0YnVsYi1vdXRsaW5lIj48cGF0aCBkPSJNOSAyMWMwIC41NS40NSAxIDEgMWg0Yy41NSAwIDEtLjQ1IDEtMXYtMUg5djF6bTMtMTlDOC4xNCAyIDUgNS4xNCA1IDljMCAyLjM4IDEuMTkgNC40NyAzIDUuNzRWMTdjMCAuNTUuNDUgMSAxIDFoNmMuNTUgMCAxLS40NSAxLTF2LTIuMjZjMS44MS0xLjI3IDMtMy4zNiAzLTUuNzQgMC0zLjg2LTMuMTQtNy03LTd6bTIuODUgMTEuMWwtLjg1LjZWMTZoLTR2LTIuM2wtLjg1LS42QzcuOCAxMi4xNiA3IDEwLjYzIDcgOWMwLTIuNzYgMi4yNC01IDUtNXM1IDIuMjQgNSA1YzAgMS42My0uOCAzLjE2LTIuMTUgNC4xeiI+PC9wYXRoPjwvZz4KPGcgaWQ9ImxpbmUtc3R5bGUiPjxwYXRoIGQ9Ik0zIDE2aDV2LTJIM3Yyem02LjUgMGg1di0yaC01djJ6bTYuNSAwaDV2LTJoLTV2MnpNMyAyMGgydi0ySDN2MnptNCAwaDJ2LTJIN3Yyem00IDBoMnYtMmgtMnYyem00IDBoMnYtMmgtMnYyem00IDBoMnYtMmgtMnYyek0zIDEyaDh2LTJIM3Yyem0xMCAwaDh2LTJoLTh2MnpNMyA0djRoMThWNEgzeiI+PC9wYXRoPjwvZz4KPGcgaWQ9ImxpbmUtd2VpZ2h0Ij48cGF0aCBkPSJNMyAxN2gxOHYtMkgzdjJ6bTAgM2gxOHYtMUgzdjF6bTAtN2gxOHYtM0gzdjN6bTAtOXY0aDE4VjRIM3oiPjwvcGF0aD48L2c+CjxnIGlkPSJsaW5rIj48cGF0aCBkPSJNMy45IDEyYzAtMS43MSAxLjM5LTMuMSAzLjEtMy4xaDRWN0g3Yy0yLjc2IDAtNSAyLjI0LTUgNXMyLjI0IDUgNSA1aDR2LTEuOUg3Yy0xLjcxIDAtMy4xLTEuMzktMy4xLTMuMXpNOCAxM2g4di0ySDh2MnptOS02aC00djEuOWg0YzEuNzEgMCAzLjEgMS4zOSAzLjEgMy4xcy0xLjM5IDMuMS0zLjEgMy4xaC00VjE3aDRjMi43NiAwIDUtMi4yNCA1LTVzLTIuMjQtNS01LTV6Ij48L3BhdGg+PC9nPgo8ZyBpZD0ibGlzdCI+PHBhdGggZD0iTTMgMTNoMnYtMkgzdjJ6bTAgNGgydi0ySDN2MnptMC04aDJWN0gzdjJ6bTQgNGgxNHYtMkg3djJ6bTAgNGgxNHYtMkg3djJ6TTcgN3YyaDE0VjdIN3oiPjwvcGF0aD48L2c+CjxnIGlkPSJsb2NrIj48cGF0aCBkPSJNMTggOGgtMVY2YzAtMi43Ni0yLjI0LTUtNS01UzcgMy4yNCA3IDZ2Mkg2Yy0xLjEgMC0yIC45LTIgMnYxMGMwIDEuMS45IDIgMiAyaDEyYzEuMSAwIDItLjkgMi0yVjEwYzAtMS4xLS45LTItMi0yem0tNiA5Yy0xLjEgMC0yLS45LTItMnMuOS0yIDItMiAyIC45IDIgMi0uOSAyLTIgMnptMy4xLTlIOC45VjZjMC0xLjcxIDEuMzktMy4xIDMuMS0zLjEgMS43MSAwIDMuMSAxLjM5IDMuMSAzLjF2MnoiPjwvcGF0aD48L2c+CjxnIGlkPSJsb2NrLW9wZW4iPjxwYXRoIGQ9Ik0xMiAxN2MxLjEgMCAyLS45IDItMnMtLjktMi0yLTItMiAuOS0yIDIgLjkgMiAyIDJ6bTYtOWgtMVY2YzAtMi43Ni0yLjI0LTUtNS01UzcgMy4yNCA3IDZoMS45YzAtMS43MSAxLjM5LTMuMSAzLjEtMy4xIDEuNzEgMCAzLjEgMS4zOSAzLjEgMy4xdjJINmMtMS4xIDAtMiAuOS0yIDJ2MTBjMCAxLjEuOSAyIDIgMmgxMmMxLjEgMCAyLS45IDItMlYxMGMwLTEuMS0uOS0yLTItMnptMCAxMkg2VjEwaDEydjEweiI+PC9wYXRoPjwvZz4KPGcgaWQ9ImxvY2stb3V0bGluZSI+PHBhdGggZD0iTTEyIDE3YzEuMSAwIDItLjkgMi0ycy0uOS0yLTItMi0yIC45LTIgMiAuOSAyIDIgMnptNi05aC0xVjZjMC0yLjc2LTIuMjQtNS01LTVTNyAzLjI0IDcgNnYySDZjLTEuMSAwLTIgLjktMiAydjEwYzAgMS4xLjkgMiAyIDJoMTJjMS4xIDAgMi0uOSAyLTJWMTBjMC0xLjEtLjktMi0yLTJ6TTguOSA2YzAtMS43MSAxLjM5LTMuMSAzLjEtMy4xczMuMSAxLjM5IDMuMSAzLjF2Mkg4LjlWNnpNMTggMjBINlYxMGgxMnYxMHoiPjwvcGF0aD48L2c+CjxnIGlkPSJsb3ctcHJpb3JpdHkiPjxwYXRoIGQ9Ik0xNCA1aDh2MmgtOHptMCA1LjVoOHYyaC04em0wIDUuNWg4djJoLTh6TTIgMTEuNUMyIDE1LjA4IDQuOTIgMTggOC41IDE4SDl2MmwzLTMtMy0zdjJoLS41QzYuMDIgMTYgNCAxMy45OCA0IDExLjVTNi4wMiA3IDguNSA3SDEyVjVIOC41QzQuOTIgNSAyIDcuOTIgMiAxMS41eiI+PC9wYXRoPjwvZz4KPGcgaWQ9ImxveWFsdHkiPjxwYXRoIGQ9Ik0yMS40MSAxMS41OGwtOS05QzEyLjA1IDIuMjIgMTEuNTUgMiAxMSAySDRjLTEuMSAwLTIgLjktMiAydjdjMCAuNTUuMjIgMS4wNS41OSAxLjQybDkgOWMuMzYuMzYuODYuNTggMS40MS41OC41NSAwIDEuMDUtLjIyIDEuNDEtLjU5bDctN2MuMzctLjM2LjU5LS44Ni41OS0xLjQxIDAtLjU1LS4yMy0xLjA2LS41OS0xLjQyek01LjUgN0M0LjY3IDcgNCA2LjMzIDQgNS41UzQuNjcgNCA1LjUgNCA3IDQuNjcgNyA1LjUgNi4zMyA3IDUuNSA3em0xMS43NyA4LjI3TDEzIDE5LjU0bC00LjI3LTQuMjdDOC4yOCAxNC44MSA4IDE0LjE5IDggMTMuNWMwLTEuMzggMS4xMi0yLjUgMi41LTIuNS42OSAwIDEuMzIuMjggMS43Ny43NGwuNzMuNzIuNzMtLjczYy40NS0uNDUgMS4wOC0uNzMgMS43Ny0uNzMgMS4zOCAwIDIuNSAxLjEyIDIuNSAyLjUgMCAuNjktLjI4IDEuMzItLjczIDEuNzd6Ij48L3BhdGg+PC9nPgo8ZyBpZD0ibWFpbCI+PHBhdGggZD0iTTIwIDRINGMtMS4xIDAtMS45OS45LTEuOTkgMkwyIDE4YzAgMS4xLjkgMiAyIDJoMTZjMS4xIDAgMi0uOSAyLTJWNmMwLTEuMS0uOS0yLTItMnptMCA0bC04IDUtOC01VjZsOCA1IDgtNXYyeiI+PC9wYXRoPjwvZz4KPGcgaWQ9Im1hcmt1bnJlYWQiPjxwYXRoIGQ9Ik0yMCA0SDRjLTEuMSAwLTEuOTkuOS0xLjk5IDJMMiAxOGMwIDEuMS45IDIgMiAyaDE2YzEuMSAwIDItLjkgMi0yVjZjMC0xLjEtLjktMi0yLTJ6bTAgNGwtOCA1LTgtNVY2bDggNSA4LTV2MnoiPjwvcGF0aD48L2c+CjxnIGlkPSJtYXJrdW5yZWFkLW1haWxib3giPjxwYXRoIGQ9Ik0yMCA2SDEwdjZIOFY0aDZWMEg2djZINGMtMS4xIDAtMiAuOS0yIDJ2MTJjMCAxLjEuOSAyIDIgMmgxNmMxLjEgMCAyLS45IDItMlY4YzAtMS4xLS45LTItMi0yeiI+PC9wYXRoPjwvZz4KPGcgaWQ9Im1lbnUiPjxwYXRoIGQ9Ik0zIDE4aDE4di0ySDN2MnptMC01aDE4di0ySDN2MnptMC03djJoMThWNkgzeiI+PC9wYXRoPjwvZz4KPGcgaWQ9Im1vcmUtaG9yaXoiPjxwYXRoIGQ9Ik02IDEwYy0xLjEgMC0yIC45LTIgMnMuOSAyIDIgMiAyLS45IDItMi0uOS0yLTItMnptMTIgMGMtMS4xIDAtMiAuOS0yIDJzLjkgMiAyIDIgMi0uOSAyLTItLjktMi0yLTJ6bS02IDBjLTEuMSAwLTIgLjktMiAycy45IDIgMiAyIDItLjkgMi0yLS45LTItMi0yeiI+PC9wYXRoPjwvZz4KPGcgaWQ9Im1vcmUtdmVydCI+PHBhdGggZD0iTTEyIDhjMS4xIDAgMi0uOSAyLTJzLS45LTItMi0yLTIgLjktMiAyIC45IDIgMiAyem0wIDJjLTEuMSAwLTIgLjktMiAycy45IDIgMiAyIDItLjkgMi0yLS45LTItMi0yem0wIDZjLTEuMSAwLTIgLjktMiAycy45IDIgMiAyIDItLjkgMi0yLS45LTItMi0yeiI+PC9wYXRoPjwvZz4KPGcgaWQ9Im1vdG9yY3ljbGUiPjxwYXRoIGQ9Ik0xOS40NCA5LjAzTDE1LjQxIDVIMTF2MmgzLjU5bDIgMkg1Yy0yLjggMC01IDIuMi01IDVzMi4yIDUgNSA1YzIuNDYgMCA0LjQ1LTEuNjkgNC45LTRoMS42NWwyLjc3LTIuNzdjLS4yMS41NC0uMzIgMS4xNC0uMzIgMS43NyAwIDIuOCAyLjIgNSA1IDVzNS0yLjIgNS01YzAtMi42NS0xLjk3LTQuNzctNC41Ni00Ljk3ek03LjgyIDE1QzcuNCAxNi4xNSA2LjI4IDE3IDUgMTdjLTEuNjMgMC0zLTEuMzctMy0zczEuMzctMyAzLTNjMS4yOCAwIDIuNC44NSAyLjgyIDJINXYyaDIuODJ6TTE5IDE3Yy0xLjY2IDAtMy0xLjM0LTMtM3MxLjM0LTMgMy0zIDMgMS4zNCAzIDMtMS4zNCAzLTMgM3oiPjwvcGF0aD48L2c+CjxnIGlkPSJtb3ZlLXRvLWluYm94Ij48cGF0aCBkPSJNMTkgM0g0Ljk5Yy0xLjExIDAtMS45OC45LTEuOTggMkwzIDE5YzAgMS4xLjg4IDIgMS45OSAySDE5YzEuMSAwIDItLjkgMi0yVjVjMC0xLjEtLjktMi0yLTJ6bTAgMTJoLTRjMCAxLjY2LTEuMzUgMy0zIDNzLTMtMS4zNC0zLTNINC45OVY1SDE5djEwem0tMy01aC0yVjdoLTR2M0g4bDQgNCA0LTR6Ij48L3BhdGg+PC9nPgo8ZyBpZD0ibmV4dC13ZWVrIj48cGF0aCBkPSJNMjAgN2gtNFY1YzAtLjU1LS4yMi0xLjA1LS41OS0xLjQxQzE1LjA1IDMuMjIgMTQuNTUgMyAxNCAzaC00Yy0xLjEgMC0yIC45LTIgMnYySDRjLTEuMSAwLTIgLjktMiAydjExYzAgMS4xLjkgMiAyIDJoMTZjMS4xIDAgMi0uOSAyLTJWOWMwLTEuMS0uOS0yLTItMnpNMTAgNWg0djJoLTRWNXptMSAxMy41bC0xLTEgMy0zLTMtMyAxLTEgNCA0LTQgNHoiPjwvcGF0aD48L2c+CjxnIGlkPSJub3RlLWFkZCI+PHBhdGggZD0iTTE0IDJINmMtMS4xIDAtMS45OS45LTEuOTkgMkw0IDIwYzAgMS4xLjg5IDIgMS45OSAySDE4YzEuMSAwIDItLjkgMi0yVjhsLTYtNnptMiAxNGgtM3YzaC0ydi0zSDh2LTJoM3YtM2gydjNoM3Yyem0tMy03VjMuNUwxOC41IDlIMTN6Ij48L3BhdGg+PC9nPgo8ZyBpZD0ib2ZmbGluZS1waW4iPjxwYXRoIGQ9Ik0xMiAyQzYuNSAyIDIgNi41IDIgMTJzNC41IDEwIDEwIDEwIDEwLTQuNSAxMC0xMFMxNy41IDIgMTIgMnptNSAxNkg3di0yaDEwdjJ6bS02LjctNEw3IDEwLjdsMS40LTEuNCAxLjkgMS45IDUuMy01LjNMMTcgNy4zIDEwLjMgMTR6Ij48L3BhdGg+PC9nPgo8ZyBpZD0ib3BhY2l0eSI+PHBhdGggZD0iTTE3LjY2IDhMMTIgMi4zNSA2LjM0IDhDNC43OCA5LjU2IDQgMTEuNjQgNCAxMy42NHMuNzggNC4xMSAyLjM0IDUuNjcgMy42MSAyLjM1IDUuNjYgMi4zNSA0LjEtLjc5IDUuNjYtMi4zNVMyMCAxNS42NCAyMCAxMy42NCAxOS4yMiA5LjU2IDE3LjY2IDh6TTYgMTRjLjAxLTIgLjYyLTMuMjcgMS43Ni00LjRMMTIgNS4yN2w0LjI0IDQuMzhDMTcuMzggMTAuNzcgMTcuOTkgMTIgMTggMTRINnoiPjwvcGF0aD48L2c+CjxnIGlkPSJvcGVuLWluLWJyb3dzZXIiPjxwYXRoIGQ9Ik0xOSA0SDVjLTEuMTEgMC0yIC45LTIgMnYxMmMwIDEuMS44OSAyIDIgMmg0di0ySDVWOGgxNHYxMGgtNHYyaDRjMS4xIDAgMi0uOSAyLTJWNmMwLTEuMS0uODktMi0yLTJ6bS03IDZsLTQgNGgzdjZoMnYtNmgzbC00LTR6Ij48L3BhdGg+PC9nPgo8ZyBpZD0ib3Blbi1pbi1uZXciPjxwYXRoIGQ9Ik0xOSAxOUg1VjVoN1YzSDVjLTEuMTEgMC0yIC45LTIgMnYxNGMwIDEuMS44OSAyIDIgMmgxNGMxLjEgMCAyLS45IDItMnYtN2gtMnY3ek0xNCAzdjJoMy41OWwtOS44MyA5LjgzIDEuNDEgMS40MUwxOSA2LjQxVjEwaDJWM2gtN3oiPjwvcGF0aD48L2c+CjxnIGlkPSJvcGVuLXdpdGgiPjxwYXRoIGQ9Ik0xMCA5aDRWNmgzbC01LTUtNSA1aDN2M3ptLTEgMUg2VjdsLTUgNSA1IDV2LTNoM3YtNHptMTQgMmwtNS01djNoLTN2NGgzdjNsNS01em0tOSAzaC00djNIN2w1IDUgNS01aC0zdi0zeiI+PC9wYXRoPjwvZz4KPGcgaWQ9InBhZ2V2aWV3Ij48cGF0aCBkPSJNMTEuNSA5QzEwLjEyIDkgOSAxMC4xMiA5IDExLjVzMS4xMiAyLjUgMi41IDIuNSAyLjUtMS4xMiAyLjUtMi41UzEyLjg4IDkgMTEuNSA5ek0yMCA0SDRjLTEuMSAwLTIgLjktMiAydjEyYzAgMS4xLjkgMiAyIDJoMTZjMS4xIDAgMi0uOSAyLTJWNmMwLTEuMS0uOS0yLTItMnptLTMuMjEgMTQuMjFsLTIuOTEtMi45MWMtLjY5LjQ0LTEuNTEuNy0yLjM5LjdDOS4wMSAxNiA3IDEzLjk5IDcgMTEuNVM5LjAxIDcgMTEuNSA3IDE2IDkuMDEgMTYgMTEuNWMwIC44OC0uMjYgMS42OS0uNyAyLjM5bDIuOTEgMi45LTEuNDIgMS40MnoiPjwvcGF0aD48L2c+CjxnIGlkPSJwYW4tdG9vbCI+PHBhdGggZD0iTTIzIDUuNVYyMGMwIDIuMi0xLjggNC00IDRoLTcuM2MtMS4wOCAwLTIuMS0uNDMtMi44NS0xLjE5TDEgMTQuODNzMS4yNi0xLjIzIDEuMy0xLjI1Yy4yMi0uMTkuNDktLjI5Ljc5LS4yOS4yMiAwIC40Mi4wNi42LjE2LjA0LjAxIDQuMzEgMi40NiA0LjMxIDIuNDZWNGMwLS44My42Ny0xLjUgMS41LTEuNVMxMSAzLjE3IDExIDR2N2gxVjEuNWMwLS44My42Ny0xLjUgMS41LTEuNVMxNSAuNjcgMTUgMS41VjExaDFWMi41YzAtLjgzLjY3LTEuNSAxLjUtMS41czEuNS42NyAxLjUgMS41VjExaDFWNS41YzAtLjgzLjY3LTEuNSAxLjUtMS41czEuNS42NyAxLjUgMS41eiI+PC9wYXRoPjwvZz4KPGcgaWQ9InBheW1lbnQiPjxwYXRoIGQ9Ik0yMCA0SDRjLTEuMTEgMC0xLjk5Ljg5LTEuOTkgMkwyIDE4YzAgMS4xMS44OSAyIDIgMmgxNmMxLjExIDAgMi0uODkgMi0yVjZjMC0xLjExLS44OS0yLTItMnptMCAxNEg0di02aDE2djZ6bTAtMTBINFY2aDE2djJ6Ij48L3BhdGg+PC9nPgo8ZyBpZD0icGVybS1jYW1lcmEtbWljIj48cGF0aCBkPSJNMjAgNWgtMy4xN0wxNSAzSDlMNy4xNyA1SDRjLTEuMSAwLTIgLjktMiAydjEyYzAgMS4xLjkgMiAyIDJoN3YtMi4wOWMtMi44My0uNDgtNS0yLjk0LTUtNS45MWgyYzAgMi4yMSAxLjc5IDQgNCA0czQtMS43OSA0LTRoMmMwIDIuOTctMi4xNyA1LjQzLTUgNS45MVYyMWg3YzEuMSAwIDItLjkgMi0yVjdjMC0xLjEtLjktMi0yLTJ6bS02IDhjMCAxLjEtLjkgMi0yIDJzLTItLjktMi0yVjljMC0xLjEuOS0yIDItMnMyIC45IDIgMnY0eiI+PC9wYXRoPjwvZz4KPGcgaWQ9InBlcm0tY29udGFjdC1jYWxlbmRhciI+PHBhdGggZD0iTTE5IDNoLTFWMWgtMnYySDhWMUg2djJINWMtMS4xMSAwLTIgLjktMiAydjE0YzAgMS4xLjg5IDIgMiAyaDE0YzEuMSAwIDItLjkgMi0yVjVjMC0xLjEtLjktMi0yLTJ6bS03IDNjMS42NiAwIDMgMS4zNCAzIDNzLTEuMzQgMy0zIDMtMy0xLjM0LTMtMyAxLjM0LTMgMy0zem02IDEySDZ2LTFjMC0yIDQtMy4xIDYtMy4xczYgMS4xIDYgMy4xdjF6Ij48L3BhdGg+PC9nPgo8ZyBpZD0icGVybS1kYXRhLXNldHRpbmciPjxwYXRoIGQ9Ik0xOC45OSAxMS41Yy4zNCAwIC42Ny4wMyAxIC4wN0wyMCAwIDAgMjBoMTEuNTZjLS4wNC0uMzMtLjA3LS42Ni0uMDctMSAwLTQuMTQgMy4zNi03LjUgNy41LTcuNXptMy43MSA3Ljk5Yy4wMi0uMTYuMDQtLjMyLjA0LS40OSAwLS4xNy0uMDEtLjMzLS4wNC0uNDlsMS4wNi0uODNjLjA5LS4wOC4xMi0uMjEuMDYtLjMybC0xLTEuNzNjLS4wNi0uMTEtLjE5LS4xNS0uMzEtLjExbC0xLjI0LjVjLS4yNi0uMi0uNTQtLjM3LS44NS0uNDlsLS4xOS0xLjMyYy0uMDEtLjEyLS4xMi0uMjEtLjI0LS4yMWgtMmMtLjEyIDAtLjIzLjA5LS4yNS4yMWwtLjE5IDEuMzJjLS4zLjEzLS41OS4yOS0uODUuNDlsLTEuMjQtLjVjLS4xMS0uMDQtLjI0IDAtLjMxLjExbC0xIDEuNzNjLS4wNi4xMS0uMDQuMjQuMDYuMzJsMS4wNi44M2MtLjAyLjE2LS4wMy4zMi0uMDMuNDkgMCAuMTcuMDEuMzMuMDMuNDlsLTEuMDYuODNjLS4wOS4wOC0uMTIuMjEtLjA2LjMybDEgMS43M2MuMDYuMTEuMTkuMTUuMzEuMTFsMS4yNC0uNWMuMjYuMi41NC4zNy44NS40OWwuMTkgMS4zMmMuMDIuMTIuMTIuMjEuMjUuMjFoMmMuMTIgMCAuMjMtLjA5LjI1LS4yMWwuMTktMS4zMmMuMy0uMTMuNTktLjI5Ljg0LS40OWwxLjI1LjVjLjExLjA0LjI0IDAgLjMxLS4xMWwxLTEuNzNjLjA2LS4xMS4wMy0uMjQtLjA2LS4zMmwtMS4wNy0uODN6bS0zLjcxIDEuMDFjLS44MyAwLTEuNS0uNjctMS41LTEuNXMuNjctMS41IDEuNS0xLjUgMS41LjY3IDEuNSAxLjUtLjY3IDEuNS0xLjUgMS41eiI+PC9wYXRoPjwvZz4KPGcgaWQ9InBlcm0tZGV2aWNlLWluZm9ybWF0aW9uIj48cGF0aCBkPSJNMTMgN2gtMnYyaDJWN3ptMCA0aC0ydjZoMnYtNnptNC05Ljk5TDcgMWMtMS4xIDAtMiAuOS0yIDJ2MThjMCAxLjEuOSAyIDIgMmgxMGMxLjEgMCAyLS45IDItMlYzYzAtMS4xLS45LTEuOTktMi0xLjk5ek0xNyAxOUg3VjVoMTB2MTR6Ij48L3BhdGg+PC9nPgo8ZyBpZD0icGVybS1pZGVudGl0eSI+PHBhdGggZD0iTTEyIDUuOWMxLjE2IDAgMi4xLjk0IDIuMSAyLjFzLS45NCAyLjEtMi4xIDIuMVM5LjkgOS4xNiA5LjkgOHMuOTQtMi4xIDIuMS0yLjFtMCA5YzIuOTcgMCA2LjEgMS40NiA2LjEgMi4xdjEuMUg1LjlWMTdjMC0uNjQgMy4xMy0yLjEgNi4xLTIuMU0xMiA0QzkuNzkgNCA4IDUuNzkgOCA4czEuNzkgNCA0IDQgNC0xLjc5IDQtNC0xLjc5LTQtNC00em0wIDljLTIuNjcgMC04IDEuMzQtOCA0djNoMTZ2LTNjMC0yLjY2LTUuMzMtNC04LTR6Ij48L3BhdGg+PC9nPgo8ZyBpZD0icGVybS1tZWRpYSI+PHBhdGggZD0iTTIgNkgwdjVoLjAxTDAgMjBjMCAxLjEuOSAyIDIgMmgxOHYtMkgyVjZ6bTIwLTJoLThsLTItMkg2Yy0xLjEgMC0xLjk5LjktMS45OSAyTDQgMTZjMCAxLjEuOSAyIDIgMmgxNmMxLjEgMCAyLS45IDItMlY2YzAtMS4xLS45LTItMi0yek03IDE1bDQuNS02IDMuNSA0LjUxIDIuNS0zLjAxTDIxIDE1SDd6Ij48L3BhdGg+PC9nPgo8ZyBpZD0icGVybS1waG9uZS1tc2ciPjxwYXRoIGQ9Ik0yMCAxNS41Yy0xLjI1IDAtMi40NS0uMi0zLjU3LS41Ny0uMzUtLjExLS43NC0uMDMtMS4wMi4yNGwtMi4yIDIuMmMtMi44My0xLjQ0LTUuMTUtMy43NS02LjU5LTYuNThsMi4yLTIuMjFjLjI4LS4yNy4zNi0uNjYuMjUtMS4wMUM4LjcgNi40NSA4LjUgNS4yNSA4LjUgNGMwLS41NS0uNDUtMS0xLTFINGMtLjU1IDAtMSAuNDUtMSAxIDAgOS4zOSA3LjYxIDE3IDE3IDE3IC41NSAwIDEtLjQ1IDEtMXYtMy41YzAtLjU1LS40NS0xLTEtMXpNMTIgM3YxMGwzLTNoNlYzaC05eiI+PC9wYXRoPjwvZz4KPGcgaWQ9InBlcm0tc2Nhbi13aWZpIj48cGF0aCBkPSJNMTIgM0M2Ljk1IDMgMy4xNSA0Ljg1IDAgNy4yM0wxMiAyMiAyNCA3LjI1QzIwLjg1IDQuODcgMTcuMDUgMyAxMiAzem0xIDEzaC0ydi02aDJ2NnptLTItOFY2aDJ2MmgtMnoiPjwvcGF0aD48L2c+CjxnIGlkPSJwZXRzIj48Y2lyY2xlIGN4PSI0LjUiIGN5PSI5LjUiIHI9IjIuNSI+PC9jaXJjbGU+PGNpcmNsZSBjeD0iOSIgY3k9IjUuNSIgcj0iMi41Ij48L2NpcmNsZT48Y2lyY2xlIGN4PSIxNSIgY3k9IjUuNSIgcj0iMi41Ij48L2NpcmNsZT48Y2lyY2xlIGN4PSIxOS41IiBjeT0iOS41IiByPSIyLjUiPjwvY2lyY2xlPjxwYXRoIGQ9Ik0xNy4zNCAxNC44NmMtLjg3LTEuMDItMS42LTEuODktMi40OC0yLjkxLS40Ni0uNTQtMS4wNS0xLjA4LTEuNzUtMS4zMi0uMTEtLjA0LS4yMi0uMDctLjMzLS4wOS0uMjUtLjA0LS41Mi0uMDQtLjc4LS4wNHMtLjUzIDAtLjc5LjA1Yy0uMTEuMDItLjIyLjA1LS4zMy4wOS0uNy4yNC0xLjI4Ljc4LTEuNzUgMS4zMi0uODcgMS4wMi0xLjYgMS44OS0yLjQ4IDIuOTEtMS4zMSAxLjMxLTIuOTIgMi43Ni0yLjYyIDQuNzkuMjkgMS4wMiAxLjAyIDIuMDMgMi4zMyAyLjMyLjczLjE1IDMuMDYtLjQ0IDUuNTQtLjQ0aC4xOGMyLjQ4IDAgNC44MS41OCA1LjU0LjQ0IDEuMzEtLjI5IDIuMDQtMS4zMSAyLjMzLTIuMzIuMzEtMi4wNC0xLjMtMy40OS0yLjYxLTQuOHoiPjwvcGF0aD48L2c+CjxnIGlkPSJwaWN0dXJlLWluLXBpY3R1cmUiPjxwYXRoIGQ9Ik0xOSA3aC04djZoOFY3em0yLTRIM2MtMS4xIDAtMiAuOS0yIDJ2MTRjMCAxLjEuOSAxLjk4IDIgMS45OGgxOGMxLjEgMCAyLS44OCAyLTEuOThWNWMwLTEuMS0uOS0yLTItMnptMCAxNi4wMUgzVjQuOThoMTh2MTQuMDN6Ij48L3BhdGg+PC9nPgo8ZyBpZD0icGljdHVyZS1pbi1waWN0dXJlLWFsdCI+PHBhdGggZD0iTTE5IDExaC04djZoOHYtNnptNCA4VjQuOThDMjMgMy44OCAyMi4xIDMgMjEgM0gzYy0xLjEgMC0yIC44OC0yIDEuOThWMTljMCAxLjEuOSAyIDIgMmgxOGMxLjEgMCAyLS45IDItMnptLTIgLjAySDNWNC45N2gxOHYxNC4wNXoiPjwvcGF0aD48L2c+CjxnIGlkPSJwbGF5LWZvci13b3JrIj48cGF0aCBkPSJNMTEgNXY1LjU5SDcuNWw0LjUgNC41IDQuNS00LjVIMTNWNWgtMnptLTUgOWMwIDMuMzEgMi42OSA2IDYgNnM2LTIuNjkgNi02aC0yYzAgMi4yMS0xLjc5IDQtNCA0cy00LTEuNzktNC00SDZ6Ij48L3BhdGg+PC9nPgo8ZyBpZD0icG9seW1lciI+PHBhdGggZD0iTTE5IDRoLTRMNy4xMSAxNi42MyA0LjUgMTIgOSA0SDVMLjUgMTIgNSAyMGg0bDcuODktMTIuNjNMMTkuNSAxMiAxNSAyMGg0bDQuNS04eiI+PC9wYXRoPjwvZz4KPGcgaWQ9InBvd2VyLXNldHRpbmdzLW5ldyI+PHBhdGggZD0iTTEzIDNoLTJ2MTBoMlYzem00LjgzIDIuMTdsLTEuNDIgMS40MkMxNy45OSA3Ljg2IDE5IDkuODEgMTkgMTJjMCAzLjg3LTMuMTMgNy03IDdzLTctMy4xMy03LTdjMC0yLjE5IDEuMDEtNC4xNCAyLjU4LTUuNDJMNi4xNyA1LjE3QzQuMjMgNi44MiAzIDkuMjYgMyAxMmMwIDQuOTcgNC4wMyA5IDkgOXM5LTQuMDMgOS05YzAtMi43NC0xLjIzLTUuMTgtMy4xNy02LjgzeiI+PC9wYXRoPjwvZz4KPGcgaWQ9InByZWduYW50LXdvbWFuIj48cGF0aCBkPSJNOSA0YzAtMS4xMS44OS0yIDItMnMyIC44OSAyIDItLjg5IDItMiAyLTItLjg5LTItMnptNyA5Yy0uMDEtMS4zNC0uODMtMi41MS0yLTMgMC0xLjY2LTEuMzQtMy0zLTNzLTMgMS4zNC0zIDN2N2gydjVoM3YtNWgzdi00eiI+PC9wYXRoPjwvZz4KPGcgaWQ9InByaW50Ij48cGF0aCBkPSJNMTkgOEg1Yy0xLjY2IDAtMyAxLjM0LTMgM3Y2aDR2NGgxMnYtNGg0di02YzAtMS42Ni0xLjM0LTMtMy0zem0tMyAxMUg4di01aDh2NXptMy03Yy0uNTUgMC0xLS40NS0xLTFzLjQ1LTEgMS0xIDEgLjQ1IDEgMS0uNDUgMS0xIDF6bS0xLTlINnY0aDEyVjN6Ij48L3BhdGg+PC9nPgo8ZyBpZD0icXVlcnktYnVpbGRlciI+PHBhdGggZD0iTTExLjk5IDJDNi40NyAyIDIgNi40OCAyIDEyczQuNDcgMTAgOS45OSAxMEMxNy41MiAyMiAyMiAxNy41MiAyMiAxMlMxNy41MiAyIDExLjk5IDJ6TTEyIDIwYy00LjQyIDAtOC0zLjU4LTgtOHMzLjU4LTggOC04IDggMy41OCA4IDgtMy41OCA4LTggOHptLjUtMTNIMTF2Nmw1LjI1IDMuMTUuNzUtMS4yMy00LjUtMi42N3oiPjwvcGF0aD48L2c+CjxnIGlkPSJxdWVzdGlvbi1hbnN3ZXIiPjxwYXRoIGQ9Ik0yMSA2aC0ydjlINnYyYzAgLjU1LjQ1IDEgMSAxaDExbDQgNFY3YzAtLjU1LS40NS0xLTEtMXptLTQgNlYzYzAtLjU1LS40NS0xLTEtMUgzYy0uNTUgMC0xIC40NS0xIDF2MTRsNC00aDEwYy41NSAwIDEtLjQ1IDEtMXoiPjwvcGF0aD48L2c+CjxnIGlkPSJyYWRpby1idXR0b24tY2hlY2tlZCI+PHBhdGggZD0iTTEyIDdjLTIuNzYgMC01IDIuMjQtNSA1czIuMjQgNSA1IDUgNS0yLjI0IDUtNS0yLjI0LTUtNS01em0wLTVDNi40OCAyIDIgNi40OCAyIDEyczQuNDggMTAgMTAgMTAgMTAtNC40OCAxMC0xMFMxNy41MiAyIDEyIDJ6bTAgMThjLTQuNDIgMC04LTMuNTgtOC04czMuNTgtOCA4LTggOCAzLjU4IDggOC0zLjU4IDgtOCA4eiI+PC9wYXRoPjwvZz4KPGcgaWQ9InJhZGlvLWJ1dHRvbi11bmNoZWNrZWQiPjxwYXRoIGQ9Ik0xMiAyQzYuNDggMiAyIDYuNDggMiAxMnM0LjQ4IDEwIDEwIDEwIDEwLTQuNDggMTAtMTBTMTcuNTIgMiAxMiAyem0wIDE4Yy00LjQyIDAtOC0zLjU4LTgtOHMzLjU4LTggOC04IDggMy41OCA4IDgtMy41OCA4LTggOHoiPjwvcGF0aD48L2c+CjxnIGlkPSJyZWNlaXB0Ij48cGF0aCBkPSJNMTggMTdINnYtMmgxMnYyem0wLTRINnYtMmgxMnYyem0wLTRINlY3aDEydjJ6TTMgMjJsMS41LTEuNUw2IDIybDEuNS0xLjVMOSAyMmwxLjUtMS41TDEyIDIybDEuNS0xLjVMMTUgMjJsMS41LTEuNUwxOCAyMmwxLjUtMS41TDIxIDIyVjJsLTEuNSAxLjVMMTggMmwtMS41IDEuNUwxNSAybC0xLjUgMS41TDEyIDJsLTEuNSAxLjVMOSAyIDcuNSAzLjUgNiAyIDQuNSAzLjUgMyAydjIweiI+PC9wYXRoPjwvZz4KPGcgaWQ9InJlY29yZC12b2ljZS1vdmVyIj48Y2lyY2xlIGN4PSI5IiBjeT0iOSIgcj0iNCI+PC9jaXJjbGU+PHBhdGggZD0iTTkgMTVjLTIuNjcgMC04IDEuMzQtOCA0djJoMTZ2LTJjMC0yLjY2LTUuMzMtNC04LTR6bTcuNzYtOS42NGwtMS42OCAxLjY5Yy44NCAxLjE4Ljg0IDIuNzEgMCAzLjg5bDEuNjggMS42OWMyLjAyLTIuMDIgMi4wMi01LjA3IDAtNy4yN3pNMjAuMDcgMmwtMS42MyAxLjYzYzIuNzcgMy4wMiAyLjc3IDcuNTYgMCAxMC43NEwyMC4wNyAxNmMzLjktMy44OSAzLjkxLTkuOTUgMC0xNHoiPjwvcGF0aD48L2c+CjxnIGlkPSJyZWRlZW0iPjxwYXRoIGQ9Ik0yMCA2aC0yLjE4Yy4xMS0uMzEuMTgtLjY1LjE4LTEgMC0xLjY2LTEuMzQtMy0zLTMtMS4wNSAwLTEuOTYuNTQtMi41IDEuMzVsLS41LjY3LS41LS42OEMxMC45NiAyLjU0IDEwLjA1IDIgOSAyIDcuMzQgMiA2IDMuMzQgNiA1YzAgLjM1LjA3LjY5LjE4IDFINGMtMS4xMSAwLTEuOTkuODktMS45OSAyTDIgMTljMCAxLjExLjg5IDIgMiAyaDE2YzEuMTEgMCAyLS44OSAyLTJWOGMwLTEuMTEtLjg5LTItMi0yem0tNS0yYy41NSAwIDEgLjQ1IDEgMXMtLjQ1IDEtMSAxLTEtLjQ1LTEtMSAuNDUtMSAxLTF6TTkgNGMuNTUgMCAxIC40NSAxIDFzLS40NSAxLTEgMS0xLS40NS0xLTEgLjQ1LTEgMS0xem0xMSAxNUg0di0yaDE2djJ6bTAtNUg0VjhoNS4wOEw3IDEwLjgzIDguNjIgMTIgMTEgOC43NmwxLTEuMzYgMSAxLjM2TDE1LjM4IDEyIDE3IDEwLjgzIDE0LjkyIDhIMjB2NnoiPjwvcGF0aD48L2c+CjxnIGlkPSJyZWRvIj48cGF0aCBkPSJNMTguNCAxMC42QzE2LjU1IDguOTkgMTQuMTUgOCAxMS41IDhjLTQuNjUgMC04LjU4IDMuMDMtOS45NiA3LjIyTDMuOSAxNmMxLjA1LTMuMTkgNC4wNS01LjUgNy42LTUuNSAxLjk1IDAgMy43My43MiA1LjEyIDEuODhMMTMgMTZoOVY3bC0zLjYgMy42eiI+PC9wYXRoPjwvZz4KPGcgaWQ9InJlZnJlc2giPjxwYXRoIGQ9Ik0xNy42NSA2LjM1QzE2LjIgNC45IDE0LjIxIDQgMTIgNGMtNC40MiAwLTcuOTkgMy41OC03Ljk5IDhzMy41NyA4IDcuOTkgOGMzLjczIDAgNi44NC0yLjU1IDcuNzMtNmgtMi4wOGMtLjgyIDIuMzMtMy4wNCA0LTUuNjUgNC0zLjMxIDAtNi0yLjY5LTYtNnMyLjY5LTYgNi02YzEuNjYgMCAzLjE0LjY5IDQuMjIgMS43OEwxMyAxMWg3VjRsLTIuMzUgMi4zNXoiPjwvcGF0aD48L2c+CjxnIGlkPSJyZW1vdmUiPjxwYXRoIGQ9Ik0xOSAxM0g1di0yaDE0djJ6Ij48L3BhdGg+PC9nPgo8ZyBpZD0icmVtb3ZlLWNpcmNsZSI+PHBhdGggZD0iTTEyIDJDNi40OCAyIDIgNi40OCAyIDEyczQuNDggMTAgMTAgMTAgMTAtNC40OCAxMC0xMFMxNy41MiAyIDEyIDJ6bTUgMTFIN3YtMmgxMHYyeiI+PC9wYXRoPjwvZz4KPGcgaWQ9InJlbW92ZS1jaXJjbGUtb3V0bGluZSI+PHBhdGggZD0iTTcgMTF2MmgxMHYtMkg3em01LTlDNi40OCAyIDIgNi40OCAyIDEyczQuNDggMTAgMTAgMTAgMTAtNC40OCAxMC0xMFMxNy41MiAyIDEyIDJ6bTAgMThjLTQuNDEgMC04LTMuNTktOC04czMuNTktOCA4LTggOCAzLjU5IDggOC0zLjU5IDgtOCA4eiI+PC9wYXRoPjwvZz4KPGcgaWQ9InJlbW92ZS1zaG9wcGluZy1jYXJ0Ij48cGF0aCBkPSJNMjIuNzMgMjIuNzNMMi43NyAyLjc3IDIgMmwtLjczLS43M0wwIDIuNTRsNC4zOSA0LjM5IDIuMjEgNC42Ni0xLjM1IDIuNDVjLS4xNi4yOC0uMjUuNjEtLjI1Ljk2IDAgMS4xLjkgMiAyIDJoNy40NmwxLjM4IDEuMzhjLS41LjM2LS44My45NS0uODMgMS42MiAwIDEuMS44OSAyIDEuOTkgMiAuNjcgMCAxLjI2LS4zMyAxLjYyLS44NEwyMS40NiAyNGwxLjI3LTEuMjd6TTcuNDIgMTVjLS4xNCAwLS4yNS0uMTEtLjI1LS4yNWwuMDMtLjEyLjktMS42M2gyLjM2bDIgMkg3LjQyem04LjEzLTJjLjc1IDAgMS40MS0uNDEgMS43NS0xLjAzbDMuNTgtNi40OWMuMDgtLjE0LjEyLS4zMS4xMi0uNDggMC0uNTUtLjQ1LTEtMS0xSDYuNTRsOS4wMSA5ek03IDE4Yy0xLjEgMC0xLjk5LjktMS45OSAyUzUuOSAyMiA3IDIyczItLjkgMi0yLS45LTItMi0yeiI+PC9wYXRoPjwvZz4KPGcgaWQ9InJlb3JkZXIiPjxwYXRoIGQ9Ik0zIDE1aDE4di0ySDN2MnptMCA0aDE4di0ySDN2MnptMC04aDE4VjlIM3Yyem0wLTZ2MmgxOFY1SDN6Ij48L3BhdGg+PC9nPgo8ZyBpZD0icmVwbHkiPjxwYXRoIGQ9Ik0xMCA5VjVsLTcgNyA3IDd2LTQuMWM1IDAgOC41IDEuNiAxMSA1LjEtMS01LTQtMTAtMTEtMTF6Ij48L3BhdGg+PC9nPgo8ZyBpZD0icmVwbHktYWxsIj48cGF0aCBkPSJNNyA4VjVsLTcgNyA3IDd2LTNsLTQtNCA0LTR6bTYgMVY1bC03IDcgNyA3di00LjFjNSAwIDguNSAxLjYgMTEgNS4xLTEtNS00LTEwLTExLTExeiI+PC9wYXRoPjwvZz4KPGcgaWQ9InJlcG9ydCI+PHBhdGggZD0iTTE1LjczIDNIOC4yN0wzIDguMjd2Ny40Nkw4LjI3IDIxaDcuNDZMMjEgMTUuNzNWOC4yN0wxNS43MyAzek0xMiAxNy4zYy0uNzIgMC0xLjMtLjU4LTEuMy0xLjMgMC0uNzIuNTgtMS4zIDEuMy0xLjMuNzIgMCAxLjMuNTggMS4zIDEuMyAwIC43Mi0uNTggMS4zLTEuMyAxLjN6bTEtNC4zaC0yVjdoMnY2eiI+PC9wYXRoPjwvZz4KPGcgaWQ9InJlcG9ydC1wcm9ibGVtIj48cGF0aCBkPSJNMSAyMWgyMkwxMiAyIDEgMjF6bTEyLTNoLTJ2LTJoMnYyem0wLTRoLTJ2LTRoMnY0eiI+PC9wYXRoPjwvZz4KPGcgaWQ9InJlc3RvcmUiPjxwYXRoIGQ9Ik0xMyAzYy00Ljk3IDAtOSA0LjAzLTkgOUgxbDMuODkgMy44OS4wNy4xNEw5IDEySDZjMC0zLjg3IDMuMTMtNyA3LTdzNyAzLjEzIDcgNy0zLjEzIDctNyA3Yy0xLjkzIDAtMy42OC0uNzktNC45NC0yLjA2bC0xLjQyIDEuNDJDOC4yNyAxOS45OSAxMC41MSAyMSAxMyAyMWM0Ljk3IDAgOS00LjAzIDktOXMtNC4wMy05LTktOXptLTEgNXY1bDQuMjggMi41NC43Mi0xLjIxLTMuNS0yLjA4VjhIMTJ6Ij48L3BhdGg+PC9nPgo8ZyBpZD0icmVzdG9yZS1wYWdlIj48cGF0aCBkPSJNMTQgMkg2Yy0xLjEgMC0xLjk5LjktMS45OSAyTDQgMjBjMCAxLjEuODkgMiAxLjk5IDJIMThjMS4xIDAgMi0uOSAyLTJWOGwtNi02em0tMiAxNmMtMi4wNSAwLTMuODEtMS4yNC00LjU4LTNoMS43MWMuNjMuOSAxLjY4IDEuNSAyLjg3IDEuNSAxLjkzIDAgMy41LTEuNTcgMy41LTMuNVMxMy45MyA5LjUgMTIgOS41Yy0xLjM1IDAtMi41Mi43OC0zLjEgMS45bDEuNiAxLjZoLTRWOWwxLjMgMS4zQzguNjkgOC45MiAxMC4yMyA4IDEyIDhjMi43NiAwIDUgMi4yNCA1IDVzLTIuMjQgNS01IDV6Ij48L3BhdGg+PC9nPgo8ZyBpZD0icm9vbSI+PHBhdGggZD0iTTEyIDJDOC4xMyAyIDUgNS4xMyA1IDljMCA1LjI1IDcgMTMgNyAxM3M3LTcuNzUgNy0xM2MwLTMuODctMy4xMy03LTctN3ptMCA5LjVjLTEuMzggMC0yLjUtMS4xMi0yLjUtMi41czEuMTItMi41IDIuNS0yLjUgMi41IDEuMTIgMi41IDIuNS0xLjEyIDIuNS0yLjUgMi41eiI+PC9wYXRoPjwvZz4KPGcgaWQ9InJvdW5kZWQtY29ybmVyIj48cGF0aCBkPSJNMTkgMTloMnYyaC0ydi0yem0wLTJoMnYtMmgtMnYyek0zIDEzaDJ2LTJIM3Yyem0wIDRoMnYtMkgzdjJ6bTAtOGgyVjdIM3Yyem0wLTRoMlYzSDN2MnptNCAwaDJWM0g3djJ6bTggMTZoMnYtMmgtMnYyem0tNCAwaDJ2LTJoLTJ2MnptNCAwaDJ2LTJoLTJ2MnptLTggMGgydi0ySDd2MnptLTQgMGgydi0ySDN2MnpNMjEgOGMwLTIuNzYtMi4yNC01LTUtNWgtNXYyaDVjMS42NSAwIDMgMS4zNSAzIDN2NWgyVjh6Ij48L3BhdGg+PC9nPgo8ZyBpZD0icm93aW5nIj48cGF0aCBkPSJNOC41IDE0LjVMNCAxOWwxLjUgMS41TDkgMTdoMmwtMi41LTIuNXpNMTUgMWMtMS4xIDAtMiAuOS0yIDJzLjkgMiAyIDIgMi0uOSAyLTItLjktMi0yLTJ6bTYgMjAuMDFMMTggMjRsLTIuOTktMy4wMVYxOS41bC03LjEtNy4wOWMtLjMxLjA1LS42MS4wNy0uOTEuMDd2LTIuMTZjMS42Ni4wMyAzLjYxLS44NyA0LjY3LTIuMDRsMS40LTEuNTVjLjE5LS4yMS40My0uMzguNjktLjUuMjktLjE0LjYyLS4yMy45Ni0uMjNoLjAzQzE1Ljk5IDYuMDEgMTcgNy4wMiAxNyA4LjI2djUuNzVjMCAuODQtLjM1IDEuNjEtLjkyIDIuMTZsLTMuNTgtMy41OHYtMi4yN2MtLjYzLjUyLTEuNDMgMS4wMi0yLjI5IDEuMzlMMTYuNSAxOEgxOGwzIDMuMDF6Ij48L3BhdGg+PC9nPgo8ZyBpZD0ic2F2ZSI+PHBhdGggZD0iTTE3IDNINWMtMS4xMSAwLTIgLjktMiAydjE0YzAgMS4xLjg5IDIgMiAyaDE0YzEuMSAwIDItLjkgMi0yVjdsLTQtNHptLTUgMTZjLTEuNjYgMC0zLTEuMzQtMy0zczEuMzQtMyAzLTMgMyAxLjM0IDMgMy0xLjM0IDMtMyAzem0zLTEwSDVWNWgxMHY0eiI+PC9wYXRoPjwvZz4KPGcgaWQ9InNjaGVkdWxlIj48cGF0aCBkPSJNMTEuOTkgMkM2LjQ3IDIgMiA2LjQ4IDIgMTJzNC40NyAxMCA5Ljk5IDEwQzE3LjUyIDIyIDIyIDE3LjUyIDIyIDEyUzE3LjUyIDIgMTEuOTkgMnpNMTIgMjBjLTQuNDIgMC04LTMuNTgtOC04czMuNTgtOCA4LTggOCAzLjU4IDggOC0zLjU4IDgtOCA4em0uNS0xM0gxMXY2bDUuMjUgMy4xNS43NS0xLjIzLTQuNS0yLjY3eiI+PC9wYXRoPjwvZz4KPGcgaWQ9InNlYXJjaCI+PHBhdGggZD0iTTE1LjUgMTRoLS43OWwtLjI4LS4yN0MxNS40MSAxMi41OSAxNiAxMS4xMSAxNiA5LjUgMTYgNS45MSAxMy4wOSAzIDkuNSAzUzMgNS45MSAzIDkuNSA1LjkxIDE2IDkuNSAxNmMxLjYxIDAgMy4wOS0uNTkgNC4yMy0xLjU3bC4yNy4yOHYuNzlsNSA0Ljk5TDIwLjQ5IDE5bC00Ljk5LTV6bS02IDBDNy4wMSAxNCA1IDExLjk5IDUgOS41UzcuMDEgNSA5LjUgNSAxNCA3LjAxIDE0IDkuNSAxMS45OSAxNCA5LjUgMTR6Ij48L3BhdGg+PC9nPgo8ZyBpZD0ic2VsZWN0LWFsbCI+PHBhdGggZD0iTTMgNWgyVjNjLTEuMSAwLTIgLjktMiAyem0wIDhoMnYtMkgzdjJ6bTQgOGgydi0ySDd2MnpNMyA5aDJWN0gzdjJ6bTEwLTZoLTJ2MmgyVjN6bTYgMHYyaDJjMC0xLjEtLjktMi0yLTJ6TTUgMjF2LTJIM2MwIDEuMS45IDIgMiAyem0tMi00aDJ2LTJIM3Yyek05IDNIN3YyaDJWM3ptMiAxOGgydi0yaC0ydjJ6bTgtOGgydi0yaC0ydjJ6bTAgOGMxLjEgMCAyLS45IDItMmgtMnYyem0wLTEyaDJWN2gtMnYyem0wIDhoMnYtMmgtMnYyem0tNCA0aDJ2LTJoLTJ2MnptMC0xNmgyVjNoLTJ2MnpNNyAxN2gxMFY3SDd2MTB6bTItOGg2djZIOVY5eiI+PC9wYXRoPjwvZz4KPGcgaWQ9InNlbmQiPjxwYXRoIGQ9Ik0yLjAxIDIxTDIzIDEyIDIuMDEgMyAyIDEwbDE1IDItMTUgMnoiPjwvcGF0aD48L2c+CjxnIGlkPSJzZXR0aW5ncyI+PHBhdGggZD0iTTE5LjQzIDEyLjk4Yy4wNC0uMzIuMDctLjY0LjA3LS45OHMtLjAzLS42Ni0uMDctLjk4bDIuMTEtMS42NWMuMTktLjE1LjI0LS40Mi4xMi0uNjRsLTItMy40NmMtLjEyLS4yMi0uMzktLjMtLjYxLS4yMmwtMi40OSAxYy0uNTItLjQtMS4wOC0uNzMtMS42OS0uOThsLS4zOC0yLjY1QzE0LjQ2IDIuMTggMTQuMjUgMiAxNCAyaC00Yy0uMjUgMC0uNDYuMTgtLjQ5LjQybC0uMzggMi42NWMtLjYxLjI1LTEuMTcuNTktMS42OS45OGwtMi40OS0xYy0uMjMtLjA5LS40OSAwLS42MS4yMmwtMiAzLjQ2Yy0uMTMuMjItLjA3LjQ5LjEyLjY0bDIuMTEgMS42NWMtLjA0LjMyLS4wNy42NS0uMDcuOThzLjAzLjY2LjA3Ljk4bC0yLjExIDEuNjVjLS4xOS4xNS0uMjQuNDItLjEyLjY0bDIgMy40NmMuMTIuMjIuMzkuMy42MS4yMmwyLjQ5LTFjLjUyLjQgMS4wOC43MyAxLjY5Ljk4bC4zOCAyLjY1Yy4wMy4yNC4yNC40Mi40OS40Mmg0Yy4yNSAwIC40Ni0uMTguNDktLjQybC4zOC0yLjY1Yy42MS0uMjUgMS4xNy0uNTkgMS42OS0uOThsMi40OSAxYy4yMy4wOS40OSAwIC42MS0uMjJsMi0zLjQ2Yy4xMi0uMjIuMDctLjQ5LS4xMi0uNjRsLTIuMTEtMS42NXpNMTIgMTUuNWMtMS45MyAwLTMuNS0xLjU3LTMuNS0zLjVzMS41Ny0zLjUgMy41LTMuNSAzLjUgMS41NyAzLjUgMy41LTEuNTcgMy41LTMuNSAzLjV6Ij48L3BhdGg+PC9nPgo8ZyBpZD0ic2V0dGluZ3MtYXBwbGljYXRpb25zIj48cGF0aCBkPSJNMTIgMTBjLTEuMSAwLTIgLjktMiAycy45IDIgMiAyIDItLjkgMi0yLS45LTItMi0yem03LTdINWMtMS4xMSAwLTIgLjktMiAydjE0YzAgMS4xLjg5IDIgMiAyaDE0YzEuMTEgMCAyLS45IDItMlY1YzAtMS4xLS44OS0yLTItMnptLTEuNzUgOWMwIC4yMy0uMDIuNDYtLjA1LjY4bDEuNDggMS4xNmMuMTMuMTEuMTcuMy4wOC40NWwtMS40IDIuNDJjLS4wOS4xNS0uMjcuMjEtLjQzLjE1bC0xLjc0LS43Yy0uMzYuMjgtLjc2LjUxLTEuMTguNjlsLS4yNiAxLjg1Yy0uMDMuMTctLjE4LjMtLjM1LjNoLTIuOGMtLjE3IDAtLjMyLS4xMy0uMzUtLjI5bC0uMjYtMS44NWMtLjQzLS4xOC0uODItLjQxLTEuMTgtLjY5bC0xLjc0LjdjLS4xNi4wNi0uMzQgMC0uNDMtLjE1bC0xLjQtMi40MmMtLjA5LS4xNS0uMDUtLjM0LjA4LS40NWwxLjQ4LTEuMTZjLS4wMy0uMjMtLjA1LS40Ni0uMDUtLjY5IDAtLjIzLjAyLS40Ni4wNS0uNjhsLTEuNDgtMS4xNmMtLjEzLS4xMS0uMTctLjMtLjA4LS40NWwxLjQtMi40MmMuMDktLjE1LjI3LS4yMS40My0uMTVsMS43NC43Yy4zNi0uMjguNzYtLjUxIDEuMTgtLjY5bC4yNi0xLjg1Yy4wMy0uMTcuMTgtLjMuMzUtLjNoMi44Yy4xNyAwIC4zMi4xMy4zNS4yOWwuMjYgMS44NWMuNDMuMTguODIuNDEgMS4xOC42OWwxLjc0LS43Yy4xNi0uMDYuMzQgMCAuNDMuMTVsMS40IDIuNDJjLjA5LjE1LjA1LjM0LS4wOC40NWwtMS40OCAxLjE2Yy4wMy4yMy4wNS40Ni4wNS42OXoiPjwvcGF0aD48L2c+CjxnIGlkPSJzZXR0aW5ncy1iYWNrdXAtcmVzdG9yZSI+PHBhdGggZD0iTTE0IDEyYzAtMS4xLS45LTItMi0ycy0yIC45LTIgMiAuOSAyIDIgMiAyLS45IDItMnptLTItOWMtNC45NyAwLTkgNC4wMy05IDlIMGw0IDQgNC00SDVjMC0zLjg3IDMuMTMtNyA3LTdzNyAzLjEzIDcgNy0zLjEzIDctNyA3Yy0xLjUxIDAtMi45MS0uNDktNC4wNi0xLjNsLTEuNDIgMS40NEM4LjA0IDIwLjMgOS45NCAyMSAxMiAyMWM0Ljk3IDAgOS00LjAzIDktOXMtNC4wMy05LTktOXoiPjwvcGF0aD48L2c+CjxnIGlkPSJzZXR0aW5ncy1ibHVldG9vdGgiPjxwYXRoIGQ9Ik0xMSAyNGgydi0yaC0ydjJ6bS00IDBoMnYtMkg3djJ6bTggMGgydi0yaC0ydjJ6bTIuNzEtMTguMjlMMTIgMGgtMXY3LjU5TDYuNDEgMyA1IDQuNDEgMTAuNTkgMTAgNSAxNS41OSA2LjQxIDE3IDExIDEyLjQxVjIwaDFsNS43MS01LjcxLTQuMy00LjI5IDQuMy00LjI5ek0xMyAzLjgzbDEuODggMS44OEwxMyA3LjU5VjMuODN6bTEuODggMTAuNDZMMTMgMTYuMTd2LTMuNzZsMS44OCAxLjg4eiI+PC9wYXRoPjwvZz4KPGcgaWQ9InNldHRpbmdzLWJyaWdodG5lc3MiPjxwYXRoIGQ9Ik0yMSAzSDNjLTEuMSAwLTIgLjktMiAydjE0YzAgMS4xLjkgMiAyIDJoMThjMS4xIDAgMi0uOSAyLTJWNWMwLTEuMS0uOS0yLTItMnptMCAxNi4wMUgzVjQuOTloMTh2MTQuMDJ6TTggMTZoMi41bDEuNSAxLjUgMS41LTEuNUgxNnYtMi41bDEuNS0xLjUtMS41LTEuNVY4aC0yLjVMMTIgNi41IDEwLjUgOEg4djIuNUw2LjUgMTIgOCAxMy41VjE2em00LTdjMS42NiAwIDMgMS4zNCAzIDNzLTEuMzQgMy0zIDNWOXoiPjwvcGF0aD48L2c+CjxnIGlkPSJzZXR0aW5ncy1jZWxsIj48cGF0aCBkPSJNNyAyNGgydi0ySDd2MnptNCAwaDJ2LTJoLTJ2MnptNCAwaDJ2LTJoLTJ2MnpNMTYgLjAxTDggMEM2LjkgMCA2IC45IDYgMnYxNmMwIDEuMS45IDIgMiAyaDhjMS4xIDAgMi0uOSAyLTJWMmMwLTEuMS0uOS0xLjk5LTItMS45OXpNMTYgMTZIOFY0aDh2MTJ6Ij48L3BhdGg+PC9nPgo8ZyBpZD0ic2V0dGluZ3MtZXRoZXJuZXQiPjxwYXRoIGQ9Ik03Ljc3IDYuNzZMNi4yMyA1LjQ4LjgyIDEybDUuNDEgNi41MiAxLjU0LTEuMjhMMy40MiAxMmw0LjM1LTUuMjR6TTcgMTNoMnYtMkg3djJ6bTEwLTJoLTJ2Mmgydi0yem0tNiAyaDJ2LTJoLTJ2MnptNi43Ny03LjUybC0xLjU0IDEuMjhMMjAuNTggMTJsLTQuMzUgNS4yNCAxLjU0IDEuMjhMMjMuMTggMTJsLTUuNDEtNi41MnoiPjwvcGF0aD48L2c+CjxnIGlkPSJzZXR0aW5ncy1pbnB1dC1hbnRlbm5hIj48cGF0aCBkPSJNMTIgNWMtMy44NyAwLTcgMy4xMy03IDdoMmMwLTIuNzYgMi4yNC01IDUtNXM1IDIuMjQgNSA1aDJjMC0zLjg3LTMuMTMtNy03LTd6bTEgOS4yOWMuODgtLjM5IDEuNS0xLjI2IDEuNS0yLjI5IDAtMS4zOC0xLjEyLTIuNS0yLjUtMi41UzkuNSAxMC42MiA5LjUgMTJjMCAxLjAyLjYyIDEuOSAxLjUgMi4yOXYzLjNMNy41OSAyMSA5IDIyLjQxbDMtMyAzIDNMMTYuNDEgMjEgMTMgMTcuNTl2LTMuM3pNMTIgMUM1LjkzIDEgMSA1LjkzIDEgMTJoMmMwLTQuOTcgNC4wMy05IDktOXM5IDQuMDMgOSA5aDJjMC02LjA3LTQuOTMtMTEtMTEtMTF6Ij48L3BhdGg+PC9nPgo8ZyBpZD0ic2V0dGluZ3MtaW5wdXQtY29tcG9uZW50Ij48cGF0aCBkPSJNNSAyYzAtLjU1LS40NS0xLTEtMXMtMSAuNDUtMSAxdjRIMXY2aDZWNkg1VjJ6bTQgMTRjMCAxLjMuODQgMi40IDIgMi44MlYyM2gydi00LjE4YzEuMTYtLjQxIDItMS41MSAyLTIuODJ2LTJIOXYyem0tOCAwYzAgMS4zLjg0IDIuNCAyIDIuODJWMjNoMnYtNC4xOEM2LjE2IDE4LjQgNyAxNy4zIDcgMTZ2LTJIMXYyek0yMSA2VjJjMC0uNTUtLjQ1LTEtMS0xcy0xIC40NS0xIDF2NGgtMnY2aDZWNmgtMnptLTgtNGMwLS41NS0uNDUtMS0xLTFzLTEgLjQ1LTEgMXY0SDl2Nmg2VjZoLTJWMnptNCAxNGMwIDEuMy44NCAyLjQgMiAyLjgyVjIzaDJ2LTQuMThjMS4xNi0uNDEgMi0xLjUxIDItMi44MnYtMmgtNnYyeiI+PC9wYXRoPjwvZz4KPGcgaWQ9InNldHRpbmdzLWlucHV0LWNvbXBvc2l0ZSI+PHBhdGggZD0iTTUgMmMwLS41NS0uNDUtMS0xLTFzLTEgLjQ1LTEgMXY0SDF2Nmg2VjZINVYyem00IDE0YzAgMS4zLjg0IDIuNCAyIDIuODJWMjNoMnYtNC4xOGMxLjE2LS40MSAyLTEuNTEgMi0yLjgydi0ySDl2MnptLTggMGMwIDEuMy44NCAyLjQgMiAyLjgyVjIzaDJ2LTQuMThDNi4xNiAxOC40IDcgMTcuMyA3IDE2di0ySDF2MnpNMjEgNlYyYzAtLjU1LS40NS0xLTEtMXMtMSAuNDUtMSAxdjRoLTJ2Nmg2VjZoLTJ6bS04LTRjMC0uNTUtLjQ1LTEtMS0xcy0xIC40NS0xIDF2NEg5djZoNlY2aC0yVjJ6bTQgMTRjMCAxLjMuODQgMi40IDIgMi44MlYyM2gydi00LjE4YzEuMTYtLjQxIDItMS41MSAyLTIuODJ2LTJoLTZ2MnoiPjwvcGF0aD48L2c+CjxnIGlkPSJzZXR0aW5ncy1pbnB1dC1oZG1pIj48cGF0aCBkPSJNMTggN1Y0YzAtMS4xLS45LTItMi0ySDhjLTEuMSAwLTIgLjktMiAydjNINXY2bDMgNnYzaDh2LTNsMy02VjdoLTF6TTggNGg4djNoLTJWNWgtMXYyaC0yVjVoLTF2Mkg4VjR6Ij48L3BhdGg+PC9nPgo8ZyBpZD0ic2V0dGluZ3MtaW5wdXQtc3ZpZGVvIj48cGF0aCBkPSJNOCAxMS41YzAtLjgzLS42Ny0xLjUtMS41LTEuNVM1IDEwLjY3IDUgMTEuNSA1LjY3IDEzIDYuNSAxMyA4IDEyLjMzIDggMTEuNXptNy01YzAtLjgzLS42Ny0xLjUtMS41LTEuNWgtM0M5LjY3IDUgOSA1LjY3IDkgNi41UzkuNjcgOCAxMC41IDhoM2MuODMgMCAxLjUtLjY3IDEuNS0xLjV6TTguNSAxNWMtLjgzIDAtMS41LjY3LTEuNSAxLjVTNy42NyAxOCA4LjUgMThzMS41LS42NyAxLjUtMS41UzkuMzMgMTUgOC41IDE1ek0xMiAxQzUuOTMgMSAxIDUuOTMgMSAxMnM0LjkzIDExIDExIDExIDExLTQuOTMgMTEtMTFTMTguMDcgMSAxMiAxem0wIDIwYy00Ljk2IDAtOS00LjA0LTktOXM0LjA0LTkgOS05IDkgNC4wNCA5IDktNC4wNCA5LTkgOXptNS41LTExYy0uODMgMC0xLjUuNjctMS41IDEuNXMuNjcgMS41IDEuNSAxLjUgMS41LS42NyAxLjUtMS41LS42Ny0xLjUtMS41LTEuNXptLTIgNWMtLjgzIDAtMS41LjY3LTEuNSAxLjVzLjY3IDEuNSAxLjUgMS41IDEuNS0uNjcgMS41LTEuNS0uNjctMS41LTEuNS0xLjV6Ij48L3BhdGg+PC9nPgo8ZyBpZD0ic2V0dGluZ3Mtb3ZlcnNjYW4iPjxwYXRoIGQ9Ik0xMi4wMSA1LjVMMTAgOGg0bC0xLjk5LTIuNXpNMTggMTB2NGwyLjUtMS45OUwxOCAxMHpNNiAxMGwtMi41IDIuMDFMNiAxNHYtNHptOCA2aC00bDIuMDEgMi41TDE0IDE2em03LTEzSDNjLTEuMSAwLTIgLjktMiAydjE0YzAgMS4xLjkgMiAyIDJoMThjMS4xIDAgMi0uOSAyLTJWNWMwLTEuMS0uOS0yLTItMnptMCAxNi4wMUgzVjQuOTloMTh2MTQuMDJ6Ij48L3BhdGg+PC9nPgo8ZyBpZD0ic2V0dGluZ3MtcGhvbmUiPjxwYXRoIGQ9Ik0xMyA5aC0ydjJoMlY5em00IDBoLTJ2MmgyVjl6bTMgNi41Yy0xLjI1IDAtMi40NS0uMi0zLjU3LS41Ny0uMzUtLjExLS43NC0uMDMtMS4wMi4yNGwtMi4yIDIuMmMtMi44My0xLjQ0LTUuMTUtMy43NS02LjU5LTYuNThsMi4yLTIuMjFjLjI4LS4yNy4zNi0uNjYuMjUtMS4wMUM4LjcgNi40NSA4LjUgNS4yNSA4LjUgNGMwLS41NS0uNDUtMS0xLTFINGMtLjU1IDAtMSAuNDUtMSAxIDAgOS4zOSA3LjYxIDE3IDE3IDE3IC41NSAwIDEtLjQ1IDEtMXYtMy41YzAtLjU1LS40NS0xLTEtMXpNMTkgOXYyaDJWOWgtMnoiPjwvcGF0aD48L2c+CjxnIGlkPSJzZXR0aW5ncy1wb3dlciI+PHBhdGggZD0iTTcgMjRoMnYtMkg3djJ6bTQgMGgydi0yaC0ydjJ6bTItMjJoLTJ2MTBoMlYyem0zLjU2IDIuNDRsLTEuNDUgMS40NUMxNi44NCA2Ljk0IDE4IDguODMgMTggMTFjMCAzLjMxLTIuNjkgNi02IDZzLTYtMi42OS02LTZjMC0yLjE3IDEuMTYtNC4wNiAyLjg4LTUuMTJMNy40NCA0LjQ0QzUuMzYgNS44OCA0IDguMjggNCAxMWMwIDQuNDIgMy41OCA4IDggOHM4LTMuNTggOC04YzAtMi43Mi0xLjM2LTUuMTItMy40NC02LjU2ek0xNSAyNGgydi0yaC0ydjJ6Ij48L3BhdGg+PC9nPgo8ZyBpZD0ic2V0dGluZ3MtcmVtb3RlIj48cGF0aCBkPSJNMTUgOUg5Yy0uNTUgMC0xIC40NS0xIDF2MTJjMCAuNTUuNDUgMSAxIDFoNmMuNTUgMCAxLS40NSAxLTFWMTBjMC0uNTUtLjQ1LTEtMS0xem0tMyA2Yy0xLjEgMC0yLS45LTItMnMuOS0yIDItMiAyIC45IDIgMi0uOSAyLTIgMnpNNy4wNSA2LjA1bDEuNDEgMS40MUM5LjM3IDYuNTYgMTAuNjIgNiAxMiA2czIuNjMuNTYgMy41NCAxLjQ2bDEuNDEtMS40MUMxNS42OCA0Ljc4IDEzLjkzIDQgMTIgNHMtMy42OC43OC00Ljk1IDIuMDV6TTEyIDBDOC45NiAwIDYuMjEgMS4yMyA0LjIyIDMuMjJsMS40MSAxLjQxQzcuMjYgMy4wMSA5LjUxIDIgMTIgMnM0Ljc0IDEuMDEgNi4zNiAyLjY0bDEuNDEtMS40MUMxNy43OSAxLjIzIDE1LjA0IDAgMTIgMHoiPjwvcGF0aD48L2c+CjxnIGlkPSJzZXR0aW5ncy12b2ljZSI+PHBhdGggZD0iTTcgMjRoMnYtMkg3djJ6bTUtMTFjMS42NiAwIDIuOTktMS4zNCAyLjk5LTNMMTUgNGMwLTEuNjYtMS4zNC0zLTMtM1M5IDIuMzQgOSA0djZjMCAxLjY2IDEuMzQgMyAzIDN6bS0xIDExaDJ2LTJoLTJ2MnptNCAwaDJ2LTJoLTJ2MnptNC0xNGgtMS43YzAgMy0yLjU0IDUuMS01LjMgNS4xUzYuNyAxMyA2LjcgMTBINWMwIDMuNDEgMi43MiA2LjIzIDYgNi43MlYyMGgydi0zLjI4YzMuMjgtLjQ5IDYtMy4zMSA2LTYuNzJ6Ij48L3BhdGg+PC9nPgo8ZyBpZD0ic2hvcCI+PHBhdGggZD0iTTE2IDZWNGMwLTEuMTEtLjg5LTItMi0yaC00Yy0xLjExIDAtMiAuODktMiAydjJIMnYxM2MwIDEuMTEuODkgMiAyIDJoMTZjMS4xMSAwIDItLjg5IDItMlY2aC02em0tNi0yaDR2MmgtNFY0ek05IDE4VjlsNy41IDRMOSAxOHoiPjwvcGF0aD48L2c+CjxnIGlkPSJzaG9wLXR3byI+PHBhdGggZD0iTTMgOUgxdjExYzAgMS4xMS44OSAyIDIgMmgxNGMxLjExIDAgMi0uODkgMi0ySDNWOXptMTUtNFYzYzAtMS4xMS0uODktMi0yLTJoLTRjLTEuMTEgMC0yIC44OS0yIDJ2Mkg1djExYzAgMS4xMS44OSAyIDIgMmgxNGMxLjExIDAgMi0uODkgMi0yVjVoLTV6bS02LTJoNHYyaC00VjN6bTAgMTJWOGw1LjUgMy01LjUgNHoiPjwvcGF0aD48L2c+CjxnIGlkPSJzaG9wcGluZy1iYXNrZXQiPjxwYXRoIGQ9Ik0xNy4yMSA5bC00LjM4LTYuNTZjLS4xOS0uMjgtLjUxLS40Mi0uODMtLjQyLS4zMiAwLS42NC4xNC0uODMuNDNMNi43OSA5SDJjLS41NSAwLTEgLjQ1LTEgMSAwIC4wOS4wMS4xOC4wNC4yN2wyLjU0IDkuMjdjLjIzLjg0IDEgMS40NiAxLjkyIDEuNDZoMTNjLjkyIDAgMS42OS0uNjIgMS45My0xLjQ2bDIuNTQtOS4yN0wyMyAxMGMwLS41NS0uNDUtMS0xLTFoLTQuNzl6TTkgOWwzLTQuNEwxNSA5SDl6bTMgOGMtMS4xIDAtMi0uOS0yLTJzLjktMiAyLTIgMiAuOSAyIDItLjkgMi0yIDJ6Ij48L3BhdGg+PC9nPgo8ZyBpZD0ic2hvcHBpbmctY2FydCI+PHBhdGggZD0iTTcgMThjLTEuMSAwLTEuOTkuOS0xLjk5IDJTNS45IDIyIDcgMjJzMi0uOSAyLTItLjktMi0yLTJ6TTEgMnYyaDJsMy42IDcuNTktMS4zNSAyLjQ1Yy0uMTYuMjgtLjI1LjYxLS4yNS45NiAwIDEuMS45IDIgMiAyaDEydi0ySDcuNDJjLS4xNCAwLS4yNS0uMTEtLjI1LS4yNWwuMDMtLjEyLjktMS42M2g3LjQ1Yy43NSAwIDEuNDEtLjQxIDEuNzUtMS4wM2wzLjU4LTYuNDljLjA4LS4xNC4xMi0uMzEuMTItLjQ4IDAtLjU1LS40NS0xLTEtMUg1LjIxbC0uOTQtMkgxem0xNiAxNmMtMS4xIDAtMS45OS45LTEuOTkgMnMuODkgMiAxLjk5IDIgMi0uOSAyLTItLjktMi0yLTJ6Ij48L3BhdGg+PC9nPgo8ZyBpZD0ic29ydCI+PHBhdGggZD0iTTMgMThoNnYtMkgzdjJ6TTMgNnYyaDE4VjZIM3ptMCA3aDEydi0ySDN2MnoiPjwvcGF0aD48L2c+CjxnIGlkPSJzcGVha2VyLW5vdGVzIj48cGF0aCBkPSJNMjAgMkg0Yy0xLjEgMC0xLjk5LjktMS45OSAyTDIgMjJsNC00aDE0YzEuMSAwIDItLjkgMi0yVjRjMC0xLjEtLjktMi0yLTJ6TTggMTRINnYtMmgydjJ6bTAtM0g2VjloMnYyem0wLTNINlY2aDJ2MnptNyA2aC01di0yaDV2MnptMy0zaC04VjloOHYyem0wLTNoLThWNmg4djJ6Ij48L3BhdGg+PC9nPgo8ZyBpZD0ic3BlYWtlci1ub3Rlcy1vZmYiPjxwYXRoIGQ9Ik0xMC41NCAxMWwtLjU0LS41NEw3LjU0IDggNiA2LjQ2IDIuMzggMi44NCAxLjI3IDEuNzMgMCAzbDIuMDEgMi4wMUwyIDIybDQtNGg5bDUuNzMgNS43M0wyMiAyMi40NiAxNy41NCAxOGwtNy03ek04IDE0SDZ2LTJoMnYyem0tMi0zVjlsMiAySDZ6bTE0LTlINC4wOEwxMCA3LjkyVjZoOHYyaC03LjkybDEgMUgxOHYyaC00LjkybDYuOTkgNi45OUMyMS4xNCAxNy45NSAyMiAxNy4wOCAyMiAxNlY0YzAtMS4xLS45LTItMi0yeiI+PC9wYXRoPjwvZz4KPGcgaWQ9InNwZWxsY2hlY2siPjxwYXRoIGQ9Ik0xMi40NSAxNmgyLjA5TDkuNDMgM0g3LjU3TDIuNDYgMTZoMi4wOWwxLjEyLTNoNS42NGwxLjE0IDN6bS02LjAyLTVMOC41IDUuNDggMTAuNTcgMTFINi40M3ptMTUuMTYuNTlsLTguMDkgOC4wOUw5LjgzIDE2bC0xLjQxIDEuNDEgNS4wOSA1LjA5TDIzIDEzbC0xLjQxLTEuNDF6Ij48L3BhdGg+PC9nPgo8ZyBpZD0ic3RhciI+PHBhdGggZD0iTTEyIDE3LjI3TDE4LjE4IDIxbC0xLjY0LTcuMDNMMjIgOS4yNGwtNy4xOS0uNjFMMTIgMiA5LjE5IDguNjMgMiA5LjI0bDUuNDYgNC43M0w1LjgyIDIxeiI+PC9wYXRoPjwvZz4KPGcgaWQ9InN0YXItYm9yZGVyIj48cGF0aCBkPSJNMjIgOS4yNGwtNy4xOS0uNjJMMTIgMiA5LjE5IDguNjMgMiA5LjI0bDUuNDYgNC43M0w1LjgyIDIxIDEyIDE3LjI3IDE4LjE4IDIxbC0xLjYzLTcuMDNMMjIgOS4yNHpNMTIgMTUuNGwtMy43NiAyLjI3IDEtNC4yOC0zLjMyLTIuODggNC4zOC0uMzhMMTIgNi4xbDEuNzEgNC4wNCA0LjM4LjM4LTMuMzIgMi44OCAxIDQuMjhMMTIgMTUuNHoiPjwvcGF0aD48L2c+CjxnIGlkPSJzdGFyLWhhbGYiPjxwYXRoIGQ9Ik0yMiA5LjI0bC03LjE5LS42MkwxMiAyIDkuMTkgOC42MyAyIDkuMjRsNS40NiA0LjczTDUuODIgMjEgMTIgMTcuMjcgMTguMTggMjFsLTEuNjMtNy4wM0wyMiA5LjI0ek0xMiAxNS40VjYuMWwxLjcxIDQuMDQgNC4zOC4zOC0zLjMyIDIuODggMSA0LjI4TDEyIDE1LjR6Ij48L3BhdGg+PC9nPgo8ZyBpZD0ic3RhcnMiPjxwYXRoIGQ9Ik0xMS45OSAyQzYuNDcgMiAyIDYuNDggMiAxMnM0LjQ3IDEwIDkuOTkgMTBDMTcuNTIgMjIgMjIgMTcuNTIgMjIgMTJTMTcuNTIgMiAxMS45OSAyem00LjI0IDE2TDEyIDE1LjQ1IDcuNzcgMThsMS4xMi00LjgxLTMuNzMtMy4yMyA0LjkyLS40MkwxMiA1bDEuOTIgNC41MyA0LjkyLjQyLTMuNzMgMy4yM0wxNi4yMyAxOHoiPjwvcGF0aD48L2c+CjxnIGlkPSJzdG9yZSI+PHBhdGggZD0iTTIwIDRINHYyaDE2VjR6bTEgMTB2LTJsLTEtNUg0bC0xIDV2MmgxdjZoMTB2LTZoNHY2aDJ2LTZoMXptLTkgNEg2di00aDZ2NHoiPjwvcGF0aD48L2c+CjxnIGlkPSJzdWJkaXJlY3RvcnktYXJyb3ctbGVmdCI+PHBhdGggZD0iTTExIDlsMS40MiAxLjQyTDguODMgMTRIMThWNGgydjEySDguODNsMy41OSAzLjU4TDExIDIxbC02LTYgNi02eiI+PC9wYXRoPjwvZz4KPGcgaWQ9InN1YmRpcmVjdG9yeS1hcnJvdy1yaWdodCI+PHBhdGggZD0iTTE5IDE1bC02IDYtMS40Mi0xLjQyTDE1LjE3IDE2SDRWNGgydjEwaDkuMTdsLTMuNTktMy41OEwxMyA5bDYgNnoiPjwvcGF0aD48L2c+CjxnIGlkPSJzdWJqZWN0Ij48cGF0aCBkPSJNMTQgMTdINHYyaDEwdi0yem02LThINHYyaDE2Vjl6TTQgMTVoMTZ2LTJINHYyek00IDV2MmgxNlY1SDR6Ij48L3BhdGg+PC9nPgo8ZyBpZD0ic3VwZXJ2aXNvci1hY2NvdW50Ij48cGF0aCBkPSJNMTYuNSAxMmMxLjM4IDAgMi40OS0xLjEyIDIuNDktMi41UzE3Ljg4IDcgMTYuNSA3QzE1LjEyIDcgMTQgOC4xMiAxNCA5LjVzMS4xMiAyLjUgMi41IDIuNXpNOSAxMWMxLjY2IDAgMi45OS0xLjM0IDIuOTktM1MxMC42NiA1IDkgNUM3LjM0IDUgNiA2LjM0IDYgOHMxLjM0IDMgMyAzem03LjUgM2MtMS44MyAwLTUuNS45Mi01LjUgMi43NVYxOWgxMXYtMi4yNWMwLTEuODMtMy42Ny0yLjc1LTUuNS0yLjc1ek05IDEzYy0yLjMzIDAtNyAxLjE3LTcgMy41VjE5aDd2LTIuMjVjMC0uODUuMzMtMi4zNCAyLjM3LTMuNDdDMTAuNSAxMy4xIDkuNjYgMTMgOSAxM3oiPjwvcGF0aD48L2c+CjxnIGlkPSJzd2FwLWhvcml6Ij48cGF0aCBkPSJNNi45OSAxMUwzIDE1bDMuOTkgNHYtM0gxNHYtMkg2Ljk5di0zek0yMSA5bC0zLjk5LTR2M0gxMHYyaDcuMDF2M0wyMSA5eiI+PC9wYXRoPjwvZz4KPGcgaWQ9InN3YXAtdmVydCI+PHBhdGggZD0iTTE2IDE3LjAxVjEwaC0ydjcuMDFoLTNMMTUgMjFsNC0zLjk5aC0zek05IDNMNSA2Ljk5aDNWMTRoMlY2Ljk5aDNMOSAzeiI+PC9wYXRoPjwvZz4KPGcgaWQ9InN3YXAtdmVydGljYWwtY2lyY2xlIj48cGF0aCBkPSJNMTIgMkM2LjQ4IDIgMiA2LjQ4IDIgMTJzNC40OCAxMCAxMCAxMCAxMC00LjQ4IDEwLTEwUzE3LjUyIDIgMTIgMnpNNi41IDlMMTAgNS41IDEzLjUgOUgxMXY0SDlWOUg2LjV6bTExIDZMMTQgMTguNSAxMC41IDE1SDEzdi00aDJ2NGgyLjV6Ij48L3BhdGg+PC9nPgo8ZyBpZD0ic3lzdGVtLXVwZGF0ZS1hbHQiPjxwYXRoIGQ9Ik0xMiAxNi41bDQtNGgtM3YtOWgtMnY5SDhsNCA0em05LTEzaC02djEuOTloNnYxNC4wM0gzVjUuNDloNlYzLjVIM2MtMS4xIDAtMiAuOS0yIDJ2MTRjMCAxLjEuOSAyIDIgMmgxOGMxLjEgMCAyLS45IDItMnYtMTRjMC0xLjEtLjktMi0yLTJ6Ij48L3BhdGg+PC9nPgo8ZyBpZD0idGFiIj48cGF0aCBkPSJNMjEgM0gzYy0xLjEgMC0yIC45LTIgMnYxNGMwIDEuMS45IDIgMiAyaDE4YzEuMSAwIDItLjkgMi0yVjVjMC0xLjEtLjktMi0yLTJ6bTAgMTZIM1Y1aDEwdjRoOHYxMHoiPjwvcGF0aD48L2c+CjxnIGlkPSJ0YWItdW5zZWxlY3RlZCI+PHBhdGggZD0iTTEgOWgyVjdIMXYyem0wIDRoMnYtMkgxdjJ6bTAtOGgyVjNjLTEuMSAwLTIgLjktMiAyem04IDE2aDJ2LTJIOXYyem0tOC00aDJ2LTJIMXYyem0yIDR2LTJIMWMwIDEuMS45IDIgMiAyek0yMSAzaC04djZoMTBWNWMwLTEuMS0uOS0yLTItMnptMCAxNGgydi0yaC0ydjJ6TTkgNWgyVjNIOXYyek01IDIxaDJ2LTJINXYyek01IDVoMlYzSDV2MnptMTYgMTZjMS4xIDAgMi0uOSAyLTJoLTJ2MnptMC04aDJ2LTJoLTJ2MnptLTggOGgydi0yaC0ydjJ6bTQgMGgydi0yaC0ydjJ6Ij48L3BhdGg+PC9nPgo8ZyBpZD0idGV4dC1mb3JtYXQiPjxwYXRoIGQ9Ik01IDE3djJoMTR2LTJINXptNC41LTQuMmg1bC45IDIuMmgyLjFMMTIuNzUgNGgtMS41TDYuNSAxNWgyLjFsLjktMi4yek0xMiA1Ljk4TDEzLjg3IDExaC0zLjc0TDEyIDUuOTh6Ij48L3BhdGg+PC9nPgo8ZyBpZD0idGhlYXRlcnMiPjxwYXRoIGQ9Ik0xOCAzdjJoLTJWM0g4djJINlYzSDR2MThoMnYtMmgydjJoOHYtMmgydjJoMlYzaC0yek04IDE3SDZ2LTJoMnYyem0wLTRINnYtMmgydjJ6bTAtNEg2VjdoMnYyem0xMCA4aC0ydi0yaDJ2MnptMC00aC0ydi0yaDJ2MnptMC00aC0yVjdoMnYyeiI+PC9wYXRoPjwvZz4KPGcgaWQ9InRodW1iLWRvd24iPjxwYXRoIGQ9Ik0xNSAzSDZjLS44MyAwLTEuNTQuNS0xLjg0IDEuMjJsLTMuMDIgNy4wNWMtLjA5LjIzLS4xNC40Ny0uMTQuNzN2MS45MWwuMDEuMDFMMSAxNGMwIDEuMS45IDIgMiAyaDYuMzFsLS45NSA0LjU3LS4wMy4zMmMwIC40MS4xNy43OS40NCAxLjA2TDkuODMgMjNsNi41OS02LjU5Yy4zNi0uMzYuNTgtLjg2LjU4LTEuNDFWNWMwLTEuMS0uOS0yLTItMnptNCAwdjEyaDRWM2gtNHoiPjwvcGF0aD48L2c+CjxnIGlkPSJ0aHVtYi11cCI+PHBhdGggZD0iTTEgMjFoNFY5SDF2MTJ6bTIyLTExYzAtMS4xLS45LTItMi0yaC02LjMxbC45NS00LjU3LjAzLS4zMmMwLS40MS0uMTctLjc5LS40NC0xLjA2TDE0LjE3IDEgNy41OSA3LjU5QzcuMjIgNy45NSA3IDguNDUgNyA5djEwYzAgMS4xLjkgMiAyIDJoOWMuODMgMCAxLjU0LS41IDEuODQtMS4yMmwzLjAyLTcuMDVjLjA5LS4yMy4xNC0uNDcuMTQtLjczdi0xLjkxbC0uMDEtLjAxTDIzIDEweiI+PC9wYXRoPjwvZz4KPGcgaWQ9InRodW1icy11cC1kb3duIj48cGF0aCBkPSJNMTIgNmMwLS41NS0uNDUtMS0xLTFINS44MmwuNjYtMy4xOC4wMi0uMjNjMC0uMzEtLjEzLS41OS0uMzMtLjhMNS4zOCAwIC40NCA0Ljk0Qy4xNyA1LjIxIDAgNS41OSAwIDZ2Ni41YzAgLjgzLjY3IDEuNSAxLjUgMS41aDYuNzVjLjYyIDAgMS4xNS0uMzggMS4zOC0uOTFsMi4yNi01LjI5Yy4wNy0uMTcuMTEtLjM2LjExLS41NVY2em0xMC41IDRoLTYuNzVjLS42MiAwLTEuMTUuMzgtMS4zOC45MWwtMi4yNiA1LjI5Yy0uMDcuMTctLjExLjM2LS4xMS41NVYxOGMwIC41NS40NSAxIDEgMWg1LjE4bC0uNjYgMy4xOC0uMDIuMjRjMCAuMzEuMTMuNTkuMzMuOGwuNzkuNzggNC45NC00Ljk0Yy4yNy0uMjcuNDQtLjY1LjQ0LTEuMDZ2LTYuNWMwLS44My0uNjctMS41LTEuNS0xLjV6Ij48L3BhdGg+PC9nPgo8ZyBpZD0idGltZWxpbmUiPjxwYXRoIGQ9Ik0yMyA4YzAgMS4xLS45IDItMiAyLS4xOCAwLS4zNS0uMDItLjUxLS4wN2wtMy41NiAzLjU1Yy4wNS4xNi4wNy4zNC4wNy41MiAwIDEuMS0uOSAyLTIgMnMtMi0uOS0yLTJjMC0uMTguMDItLjM2LjA3LS41MmwtMi41NS0yLjU1Yy0uMTYuMDUtLjM0LjA3LS41Mi4wN3MtLjM2LS4wMi0uNTItLjA3bC00LjU1IDQuNTZjLjA1LjE2LjA3LjMzLjA3LjUxIDAgMS4xLS45IDItMiAycy0yLS45LTItMiAuOS0yIDItMmMuMTggMCAuMzUuMDIuNTEuMDdsNC41Ni00LjU1QzguMDIgOS4zNiA4IDkuMTggOCA5YzAtMS4xLjktMiAyLTJzMiAuOSAyIDJjMCAuMTgtLjAyLjM2LS4wNy41MmwyLjU1IDIuNTVjLjE2LS4wNS4zNC0uMDcuNTItLjA3cy4zNi4wMi41Mi4wN2wzLjU1LTMuNTZDMTkuMDIgOC4zNSAxOSA4LjE4IDE5IDhjMC0xLjEuOS0yIDItMnMyIC45IDIgMnoiPjwvcGF0aD48L2c+CjxnIGlkPSJ0b2MiPjxwYXRoIGQ9Ik0zIDloMTRWN0gzdjJ6bTAgNGgxNHYtMkgzdjJ6bTAgNGgxNHYtMkgzdjJ6bTE2IDBoMnYtMmgtMnYyem0wLTEwdjJoMlY3aC0yem0wIDZoMnYtMmgtMnYyeiI+PC9wYXRoPjwvZz4KPGcgaWQ9InRvZGF5Ij48cGF0aCBkPSJNMTkgM2gtMVYxaC0ydjJIOFYxSDZ2Mkg1Yy0xLjExIDAtMS45OS45LTEuOTkgMkwzIDE5YzAgMS4xLjg5IDIgMiAyaDE0YzEuMSAwIDItLjkgMi0yVjVjMC0xLjEtLjktMi0yLTJ6bTAgMTZINVY4aDE0djExek03IDEwaDV2NUg3eiI+PC9wYXRoPjwvZz4KPGcgaWQ9InRvbGwiPjxwYXRoIGQ9Ik0xNSA0Yy00LjQyIDAtOCAzLjU4LTggOHMzLjU4IDggOCA4IDgtMy41OCA4LTgtMy41OC04LTgtOHptMCAxNGMtMy4zMSAwLTYtMi42OS02LTZzMi42OS02IDYtNiA2IDIuNjkgNiA2LTIuNjkgNi02IDZ6TTMgMTJjMC0yLjYxIDEuNjctNC44MyA0LTUuNjVWNC4yNkMzLjU1IDUuMTUgMSA4LjI3IDEgMTJzMi41NSA2Ljg1IDYgNy43NHYtMi4wOWMtMi4zMy0uODItNC0zLjA0LTQtNS42NXoiPjwvcGF0aD48L2c+CjxnIGlkPSJ0b3VjaC1hcHAiPjxwYXRoIGQ9Ik05IDExLjI0VjcuNUM5IDYuMTIgMTAuMTIgNSAxMS41IDVTMTQgNi4xMiAxNCA3LjV2My43NGMxLjIxLS44MSAyLTIuMTggMi0zLjc0QzE2IDUuMDEgMTMuOTkgMyAxMS41IDNTNyA1LjAxIDcgNy41YzAgMS41Ni43OSAyLjkzIDIgMy43NHptOS44NCA0LjYzbC00LjU0LTIuMjZjLS4xNy0uMDctLjM1LS4xMS0uNTQtLjExSDEzdi02YzAtLjgzLS42Ny0xLjUtMS41LTEuNVMxMCA2LjY3IDEwIDcuNXYxMC43NGwtMy40My0uNzJjLS4wOC0uMDEtLjE1LS4wMy0uMjQtLjAzLS4zMSAwLS41OS4xMy0uNzkuMzNsLS43OS44IDQuOTQgNC45NGMuMjcuMjcuNjUuNDQgMS4wNi40NGg2Ljc5Yy43NSAwIDEuMzMtLjU1IDEuNDQtMS4yOGwuNzUtNS4yN2MuMDEtLjA3LjAyLS4xNC4wMi0uMiAwLS42Mi0uMzgtMS4xNi0uOTEtMS4zOHoiPjwvcGF0aD48L2c+CjxnIGlkPSJ0cmFjay1jaGFuZ2VzIj48cGF0aCBkPSJNMTkuMDcgNC45M2wtMS40MSAxLjQxQzE5LjEgNy43OSAyMCA5Ljc5IDIwIDEyYzAgNC40Mi0zLjU4IDgtOCA4cy04LTMuNTgtOC04YzAtNC4wOCAzLjA1LTcuNDQgNy03LjkzdjIuMDJDOC4xNiA2LjU3IDYgOS4wMyA2IDEyYzAgMy4zMSAyLjY5IDYgNiA2czYtMi42OSA2LTZjMC0xLjY2LS42Ny0zLjE2LTEuNzYtNC4yNGwtMS40MSAxLjQxQzE1LjU1IDkuOSAxNiAxMC45IDE2IDEyYzAgMi4yMS0xLjc5IDQtNCA0cy00LTEuNzktNC00YzAtMS44NiAxLjI4LTMuNDEgMy0zLjg2djIuMTRjLS42LjM1LTEgLjk4LTEgMS43MiAwIDEuMS45IDIgMiAyczItLjkgMi0yYzAtLjc0LS40LTEuMzgtMS0xLjcyVjJoLTFDNi40OCAyIDIgNi40OCAyIDEyczQuNDggMTAgMTAgMTAgMTAtNC40OCAxMC0xMGMwLTIuNzYtMS4xMi01LjI2LTIuOTMtNy4wN3oiPjwvcGF0aD48L2c+CjxnIGlkPSJ0cmFuc2xhdGUiPjxwYXRoIGQ9Ik0xMi44NyAxNS4wN2wtMi41NC0yLjUxLjAzLS4wM2MxLjc0LTEuOTQgMi45OC00LjE3IDMuNzEtNi41M0gxN1Y0aC03VjJIOHYySDF2MS45OWgxMS4xN0MxMS41IDcuOTIgMTAuNDQgOS43NSA5IDExLjM1IDguMDcgMTAuMzIgNy4zIDkuMTkgNi42OSA4aC0yYy43MyAxLjYzIDEuNzMgMy4xNyAyLjk4IDQuNTZsLTUuMDkgNS4wMkw0IDE5bDUtNSAzLjExIDMuMTEuNzYtMi4wNHpNMTguNSAxMGgtMkwxMiAyMmgybDEuMTItM2g0Ljc1TDIxIDIyaDJsLTQuNS0xMnptLTIuNjIgN2wxLjYyLTQuMzNMMTkuMTIgMTdoLTMuMjR6Ij48L3BhdGg+PC9nPgo8ZyBpZD0idHJlbmRpbmctZG93biI+PHBhdGggZD0iTTE2IDE4bDIuMjktMi4yOS00Ljg4LTQuODgtNCA0TDIgNy40MSAzLjQxIDZsNiA2IDQtNCA2LjMgNi4yOUwyMiAxMnY2eiI+PC9wYXRoPjwvZz4KPGcgaWQ9InRyZW5kaW5nLWZsYXQiPjxwYXRoIGQ9Ik0yMiAxMmwtNC00djNIM3YyaDE1djN6Ij48L3BhdGg+PC9nPgo8ZyBpZD0idHJlbmRpbmctdXAiPjxwYXRoIGQ9Ik0xNiA2bDIuMjkgMi4yOS00Ljg4IDQuODgtNC00TDIgMTYuNTkgMy40MSAxOGw2LTYgNCA0IDYuMy02LjI5TDIyIDEyVjZ6Ij48L3BhdGg+PC9nPgo8ZyBpZD0idHVybmVkLWluIj48cGF0aCBkPSJNMTcgM0g3Yy0xLjEgMC0xLjk5LjktMS45OSAyTDUgMjFsNy0zIDcgM1Y1YzAtMS4xLS45LTItMi0yeiI+PC9wYXRoPjwvZz4KPGcgaWQ9InR1cm5lZC1pbi1ub3QiPjxwYXRoIGQ9Ik0xNyAzSDdjLTEuMSAwLTEuOTkuOS0xLjk5IDJMNSAyMWw3LTMgNyAzVjVjMC0xLjEtLjktMi0yLTJ6bTAgMTVsLTUtMi4xOEw3IDE4VjVoMTB2MTN6Ij48L3BhdGg+PC9nPgo8ZyBpZD0idW5hcmNoaXZlIj48cGF0aCBkPSJNMjAuNTUgNS4yMmwtMS4zOS0xLjY4QzE4Ljg4IDMuMjEgMTguNDcgMyAxOCAzSDZjLS40NyAwLS44OC4yMS0xLjE1LjU1TDMuNDYgNS4yMkMzLjE3IDUuNTcgMyA2LjAxIDMgNi41VjE5YzAgMS4xLjg5IDIgMiAyaDE0YzEuMSAwIDItLjkgMi0yVjYuNWMwLS40OS0uMTctLjkzLS40NS0xLjI4ek0xMiA5LjVsNS41IDUuNUgxNHYyaC00di0ySDYuNUwxMiA5LjV6TTUuMTIgNWwuODItMWgxMmwuOTMgMUg1LjEyeiI+PC9wYXRoPjwvZz4KPGcgaWQ9InVuZG8iPjxwYXRoIGQ9Ik0xMi41IDhjLTIuNjUgMC01LjA1Ljk5LTYuOSAyLjZMMiA3djloOWwtMy42Mi0zLjYyYzEuMzktMS4xNiAzLjE2LTEuODggNS4xMi0xLjg4IDMuNTQgMCA2LjU1IDIuMzEgNy42IDUuNWwyLjM3LS43OEMyMS4wOCAxMS4wMyAxNy4xNSA4IDEyLjUgOHoiPjwvcGF0aD48L2c+CjxnIGlkPSJ1bmZvbGQtbGVzcyI+PHBhdGggZD0iTTcuNDEgMTguNTlMOC44MyAyMCAxMiAxNi44MyAxNS4xNyAyMGwxLjQxLTEuNDFMMTIgMTRsLTQuNTkgNC41OXptOS4xOC0xMy4xOEwxNS4xNyA0IDEyIDcuMTcgOC44MyA0IDcuNDEgNS40MSAxMiAxMGw0LjU5LTQuNTl6Ij48L3BhdGg+PC9nPgo8ZyBpZD0idW5mb2xkLW1vcmUiPjxwYXRoIGQ9Ik0xMiA1LjgzTDE1LjE3IDlsMS40MS0xLjQxTDEyIDMgNy40MSA3LjU5IDguODMgOSAxMiA1Ljgzem0wIDEyLjM0TDguODMgMTVsLTEuNDEgMS40MUwxMiAyMWw0LjU5LTQuNTlMMTUuMTcgMTUgMTIgMTguMTd6Ij48L3BhdGg+PC9nPgo8ZyBpZD0idXBkYXRlIj48cGF0aCBkPSJNMjEgMTAuMTJoLTYuNzhsMi43NC0yLjgyYy0yLjczLTIuNy03LjE1LTIuOC05Ljg4LS4xLTIuNzMgMi43MS0yLjczIDcuMDggMCA5Ljc5IDIuNzMgMi43MSA3LjE1IDIuNzEgOS44OCAwQzE4LjMyIDE1LjY1IDE5IDE0LjA4IDE5IDEyLjFoMmMwIDEuOTgtLjg4IDQuNTUtMi42NCA2LjI5LTMuNTEgMy40OC05LjIxIDMuNDgtMTIuNzIgMC0zLjUtMy40Ny0zLjUzLTkuMTEtLjAyLTEyLjU4IDMuNTEtMy40NyA5LjE0LTMuNDcgMTIuNjUgMEwyMSAzdjcuMTJ6TTEyLjUgOHY0LjI1bDMuNSAyLjA4LS43MiAxLjIxTDExIDEzVjhoMS41eiI+PC9wYXRoPjwvZz4KPGcgaWQ9InZlcmlmaWVkLXVzZXIiPjxwYXRoIGQ9Ik0xMiAxTDMgNXY2YzAgNS41NSAzLjg0IDEwLjc0IDkgMTIgNS4xNi0xLjI2IDktNi40NSA5LTEyVjVsLTktNHptLTIgMTZsLTQtNCAxLjQxLTEuNDFMMTAgMTQuMTdsNi41OS02LjU5TDE4IDlsLTggOHoiPjwvcGF0aD48L2c+CjxnIGlkPSJ2aWV3LWFnZW5kYSI+PHBhdGggZD0iTTIwIDEzSDNjLS41NSAwLTEgLjQ1LTEgMXY2YzAgLjU1LjQ1IDEgMSAxaDE3Yy41NSAwIDEtLjQ1IDEtMXYtNmMwLS41NS0uNDUtMS0xLTF6bTAtMTBIM2MtLjU1IDAtMSAuNDUtMSAxdjZjMCAuNTUuNDUgMSAxIDFoMTdjLjU1IDAgMS0uNDUgMS0xVjRjMC0uNTUtLjQ1LTEtMS0xeiI+PC9wYXRoPjwvZz4KPGcgaWQ9InZpZXctYXJyYXkiPjxwYXRoIGQ9Ik00IDE4aDNWNUg0djEzek0xOCA1djEzaDNWNWgtM3pNOCAxOGg5VjVIOHYxM3oiPjwvcGF0aD48L2c+CjxnIGlkPSJ2aWV3LWNhcm91c2VsIj48cGF0aCBkPSJNNyAxOWgxMFY0SDd2MTV6bS01LTJoNFY2SDJ2MTF6TTE4IDZ2MTFoNFY2aC00eiI+PC9wYXRoPjwvZz4KPGcgaWQ9InZpZXctY29sdW1uIj48cGF0aCBkPSJNMTAgMThoNVY1aC01djEzem0tNiAwaDVWNUg0djEzek0xNiA1djEzaDVWNWgtNXoiPjwvcGF0aD48L2c+CjxnIGlkPSJ2aWV3LWRheSI+PHBhdGggZD0iTTIgMjFoMTl2LTNIMnYzek0yMCA4SDNjLS41NSAwLTEgLjQ1LTEgMXY2YzAgLjU1LjQ1IDEgMSAxaDE3Yy41NSAwIDEtLjQ1IDEtMVY5YzAtLjU1LS40NS0xLTEtMXpNMiAzdjNoMTlWM0gyeiI+PC9wYXRoPjwvZz4KPGcgaWQ9InZpZXctaGVhZGxpbmUiPjxwYXRoIGQ9Ik00IDE1aDE2di0ySDR2MnptMCA0aDE2di0ySDR2MnptMC04aDE2VjlINHYyem0wLTZ2MmgxNlY1SDR6Ij48L3BhdGg+PC9nPgo8ZyBpZD0idmlldy1saXN0Ij48cGF0aCBkPSJNNCAxNGg0di00SDR2NHptMCA1aDR2LTRINHY0ek00IDloNFY1SDR2NHptNSA1aDEydi00SDl2NHptMCA1aDEydi00SDl2NHpNOSA1djRoMTJWNUg5eiI+PC9wYXRoPjwvZz4KPGcgaWQ9InZpZXctbW9kdWxlIj48cGF0aCBkPSJNNCAxMWg1VjVINHY2em0wIDdoNXYtNkg0djZ6bTYgMGg1di02aC01djZ6bTYgMGg1di02aC01djZ6bS02LTdoNVY1aC01djZ6bTYtNnY2aDVWNWgtNXoiPjwvcGF0aD48L2c+CjxnIGlkPSJ2aWV3LXF1aWx0Ij48cGF0aCBkPSJNMTAgMThoNXYtNmgtNXY2em0tNiAwaDVWNUg0djEzem0xMiAwaDV2LTZoLTV2NnpNMTAgNXY2aDExVjVIMTB6Ij48L3BhdGg+PC9nPgo8ZyBpZD0idmlldy1zdHJlYW0iPjxwYXRoIGQ9Ik00IDE4aDE3di02SDR2NnpNNCA1djZoMTdWNUg0eiI+PC9wYXRoPjwvZz4KPGcgaWQ9InZpZXctd2VlayI+PHBhdGggZD0iTTYgNUgzYy0uNTUgMC0xIC40NS0xIDF2MTJjMCAuNTUuNDUgMSAxIDFoM2MuNTUgMCAxLS40NSAxLTFWNmMwLS41NS0uNDUtMS0xLTF6bTE0IDBoLTNjLS41NSAwLTEgLjQ1LTEgMXYxMmMwIC41NS40NSAxIDEgMWgzYy41NSAwIDEtLjQ1IDEtMVY2YzAtLjU1LS40NS0xLTEtMXptLTcgMGgtM2MtLjU1IDAtMSAuNDUtMSAxdjEyYzAgLjU1LjQ1IDEgMSAxaDNjLjU1IDAgMS0uNDUgMS0xVjZjMC0uNTUtLjQ1LTEtMS0xeiI+PC9wYXRoPjwvZz4KPGcgaWQ9InZpc2liaWxpdHkiPjxwYXRoIGQ9Ik0xMiA0LjVDNyA0LjUgMi43MyA3LjYxIDEgMTJjMS43MyA0LjM5IDYgNy41IDExIDcuNXM5LjI3LTMuMTEgMTEtNy41Yy0xLjczLTQuMzktNi03LjUtMTEtNy41ek0xMiAxN2MtMi43NiAwLTUtMi4yNC01LTVzMi4yNC01IDUtNSA1IDIuMjQgNSA1LTIuMjQgNS01IDV6bTAtOGMtMS42NiAwLTMgMS4zNC0zIDNzMS4zNCAzIDMgMyAzLTEuMzQgMy0zLTEuMzQtMy0zLTN6Ij48L3BhdGg+PC9nPgo8ZyBpZD0idmlzaWJpbGl0eS1vZmYiPjxwYXRoIGQ9Ik0xMiA3YzIuNzYgMCA1IDIuMjQgNSA1IDAgLjY1LS4xMyAxLjI2LS4zNiAxLjgzbDIuOTIgMi45MmMxLjUxLTEuMjYgMi43LTIuODkgMy40My00Ljc1LTEuNzMtNC4zOS02LTcuNS0xMS03LjUtMS40IDAtMi43NC4yNS0zLjk4LjdsMi4xNiAyLjE2QzEwLjc0IDcuMTMgMTEuMzUgNyAxMiA3ek0yIDQuMjdsMi4yOCAyLjI4LjQ2LjQ2QzMuMDggOC4zIDEuNzggMTAuMDIgMSAxMmMxLjczIDQuMzkgNiA3LjUgMTEgNy41IDEuNTUgMCAzLjAzLS4zIDQuMzgtLjg0bC40Mi40MkwxOS43MyAyMiAyMSAyMC43MyAzLjI3IDMgMiA0LjI3ek03LjUzIDkuOGwxLjU1IDEuNTVjLS4wNS4yMS0uMDguNDMtLjA4LjY1IDAgMS42NiAxLjM0IDMgMyAzIC4yMiAwIC40NC0uMDMuNjUtLjA4bDEuNTUgMS41NWMtLjY3LjMzLTEuNDEuNTMtMi4yLjUzLTIuNzYgMC01LTIuMjQtNS01IDAtLjc5LjItMS41My41My0yLjJ6bTQuMzEtLjc4bDMuMTUgMy4xNS4wMi0uMTZjMC0xLjY2LTEuMzQtMy0zLTNsLS4xNy4wMXoiPjwvcGF0aD48L2c+CjxnIGlkPSJ3YXJuaW5nIj48cGF0aCBkPSJNMSAyMWgyMkwxMiAyIDEgMjF6bTEyLTNoLTJ2LTJoMnYyem0wLTRoLTJ2LTRoMnY0eiI+PC9wYXRoPjwvZz4KPGcgaWQ9IndhdGNoLWxhdGVyIj48cGF0aCBkPSJNMTIgMkM2LjUgMiAyIDYuNSAyIDEyczQuNSAxMCAxMCAxMCAxMC00LjUgMTAtMTBTMTcuNSAyIDEyIDJ6bTQuMiAxNC4yTDExIDEzVjdoMS41djUuMmw0LjUgMi43LS44IDEuM3oiPjwvcGF0aD48L2c+CjxnIGlkPSJ3ZWVrZW5kIj48cGF0aCBkPSJNMjEgMTBjLTEuMSAwLTIgLjktMiAydjNINXYtM2MwLTEuMS0uOS0yLTItMnMtMiAuOS0yIDJ2NWMwIDEuMS45IDIgMiAyaDE4YzEuMSAwIDItLjkgMi0ydi01YzAtMS4xLS45LTItMi0yem0tMy01SDZjLTEuMSAwLTIgLjktMiAydjIuMTVjMS4xNi40MSAyIDEuNTEgMiAyLjgyVjE0aDEydi0yLjAzYzAtMS4zLjg0LTIuNCAyLTIuODJWN2MwLTEuMS0uOS0yLTItMnoiPjwvcGF0aD48L2c+CjxnIGlkPSJ3b3JrIj48cGF0aCBkPSJNMjAgNmgtNFY0YzAtMS4xMS0uODktMi0yLTJoLTRjLTEuMTEgMC0yIC44OS0yIDJ2Mkg0Yy0xLjExIDAtMS45OS44OS0xLjk5IDJMMiAxOWMwIDEuMTEuODkgMiAyIDJoMTZjMS4xMSAwIDItLjg5IDItMlY4YzAtMS4xMS0uODktMi0yLTJ6bS02IDBoLTRWNGg0djJ6Ij48L3BhdGg+PC9nPgo8ZyBpZD0ieW91dHViZS1zZWFyY2hlZC1mb3IiPjxwYXRoIGQ9Ik0xNy4wMSAxNGgtLjhsLS4yNy0uMjdjLjk4LTEuMTQgMS41Ny0yLjYxIDEuNTctNC4yMyAwLTMuNTktMi45MS02LjUtNi41LTYuNXMtNi41IDMtNi41IDYuNUgybDMuODQgNCA0LjE2LTRINi41MUM2LjUxIDcgOC41MyA1IDExLjAxIDVzNC41IDIuMDEgNC41IDQuNWMwIDIuNDgtMi4wMiA0LjUtNC41IDQuNS0uNjUgMC0xLjI2LS4xNC0xLjgyLS4zOEw3LjcxIDE1LjFjLjk3LjU3IDIuMDkuOSAzLjMuOSAxLjYxIDAgMy4wOC0uNTkgNC4yMi0xLjU3bC4yNy4yN3YuNzlsNS4wMSA0Ljk5TDIyIDE5bC00Ljk5LTV6Ij48L3BhdGg+PC9nPgo8ZyBpZD0iem9vbS1pbiI+PHBhdGggZD0iTTE1LjUgMTRoLS43OWwtLjI4LS4yN0MxNS40MSAxMi41OSAxNiAxMS4xMSAxNiA5LjUgMTYgNS45MSAxMy4wOSAzIDkuNSAzUzMgNS45MSAzIDkuNSA1LjkxIDE2IDkuNSAxNmMxLjYxIDAgMy4wOS0uNTkgNC4yMy0xLjU3bC4yNy4yOHYuNzlsNSA0Ljk5TDIwLjQ5IDE5bC00Ljk5LTV6bS02IDBDNy4wMSAxNCA1IDExLjk5IDUgOS41UzcuMDEgNSA5LjUgNSAxNCA3LjAxIDE0IDkuNSAxMS45OSAxNCA5LjUgMTR6bTIuNS00aC0ydjJIOXYtMkg3VjloMlY3aDF2MmgydjF6Ij48L3BhdGg+PC9nPgo8ZyBpZD0iem9vbS1vdXQiPjxwYXRoIGQ9Ik0xNS41IDE0aC0uNzlsLS4yOC0uMjdDMTUuNDEgMTIuNTkgMTYgMTEuMTEgMTYgOS41IDE2IDUuOTEgMTMuMDkgMyA5LjUgM1MzIDUuOTEgMyA5LjUgNS45MSAxNiA5LjUgMTZjMS42MSAwIDMuMDktLjU5IDQuMjMtMS41N2wuMjcuMjh2Ljc5bDUgNC45OUwyMC40OSAxOWwtNC45OS01em0tNiAwQzcuMDEgMTQgNSAxMS45OSA1IDkuNVM3LjAxIDUgOS41IDUgMTQgNy4wMSAxNCA5LjUgMTEuOTkgMTQgOS41IDE0ek03IDloNXYxSDd6Ij48L3BhdGg+PC9nPgo8L2RlZnM+PC9zdmc+CjwvaXJvbi1pY29uc2V0LXN2Zz5gO2RvY3VtZW50LmhlYWQuYXBwZW5kQ2hpbGQoU28uY29udGVudCk7Ci8qKgogICAgQGxpY2Vuc2UKICAgIENvcHlyaWdodCAoYykgMjAxNSBUaGUgUG9seW1lciBQcm9qZWN0IEF1dGhvcnMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgICBUaGlzIGNvZGUgbWF5IG9ubHkgYmUgdXNlZCB1bmRlciB0aGUgQlNEIHN0eWxlIGxpY2Vuc2UgZm91bmQgYXQKICAgIGh0dHA6Ly9wb2x5bWVyLmdpdGh1Yi5pby9MSUNFTlNFLnR4dCBUaGUgY29tcGxldGUgc2V0IG9mIGF1dGhvcnMgbWF5IGJlIGZvdW5kIGF0CiAgICBodHRwOi8vcG9seW1lci5naXRodWIuaW8vQVVUSE9SUy50eHQgVGhlIGNvbXBsZXRlIHNldCBvZiBjb250cmlidXRvcnMgbWF5IGJlCiAgICBmb3VuZCBhdCBodHRwOi8vcG9seW1lci5naXRodWIuaW8vQ09OVFJJQlVUT1JTLnR4dCBDb2RlIGRpc3RyaWJ1dGVkIGJ5IEdvb2dsZSBhcwogICAgcGFydCBvZiB0aGUgcG9seW1lciBwcm9qZWN0IGlzIGFsc28gc3ViamVjdCB0byBhbiBhZGRpdGlvbmFsIElQIHJpZ2h0cyBncmFudAogICAgZm91bmQgYXQgaHR0cDovL3BvbHltZXIuZ2l0aHViLmlvL1BBVEVOVFMudHh0CiAgICAqLwp2YXIgTW89eyJVKzAwMDgiOiJiYWNrc3BhY2UiLCJVKzAwMDkiOiJ0YWIiLCJVKzAwMUIiOiJlc2MiLCJVKzAwMjAiOiJzcGFjZSIsIlUrMDA3RiI6ImRlbCJ9LEVvPXs4OiJiYWNrc3BhY2UiLDk6InRhYiIsMTM6ImVudGVyIiwyNzoiZXNjIiwzMzoicGFnZXVwIiwzNDoicGFnZWRvd24iLDM1OiJlbmQiLDM2OiJob21lIiwzMjoic3BhY2UiLDM3OiJsZWZ0IiwzODoidXAiLDM5OiJyaWdodCIsNDA6ImRvd24iLDQ2OiJkZWwiLDEwNjoiKiJ9LFRvPXtzaGlmdDoic2hpZnRLZXkiLGN0cmw6ImN0cmxLZXkiLGFsdDoiYWx0S2V5IixtZXRhOiJtZXRhS2V5In0sQW89L1thLXowLTkqXS8sQ289L1VcKy8sa289L15hcnJvdy8sTG89L15zcGFjZShiYXIpPy8sUG89L15lc2NhcGUkLztmdW5jdGlvbiBJbyh0LGUpe3ZhciBuPSIiO2lmKHQpe3ZhciBpPXQudG9Mb3dlckNhc2UoKTsiICI9PT1pfHxMby50ZXN0KGkpP249InNwYWNlIjpQby50ZXN0KGkpP249ImVzYyI6MT09aS5sZW5ndGg/ZSYmIUFvLnRlc3QoaSl8fChuPWkpOm49a28udGVzdChpKT9pLnJlcGxhY2UoImFycm93IiwiIik6Im11bHRpcGx5Ij09aT8iKiI6aX1yZXR1cm4gbn1mdW5jdGlvbiBObyh0LGUpe3JldHVybihmdW5jdGlvbiBuKHQsZSl7cmV0dXJuIHQua2V5P0lvKHQua2V5LGUpOnQuZGV0YWlsJiZ0LmRldGFpbC5rZXk/SW8odC5kZXRhaWwua2V5LGUpOihmdW5jdGlvbiBuKHQpe3ZhciBlPSIiO3JldHVybiB0JiYodCBpbiBNbz9lPU1vW3RdOkNvLnRlc3QodCk/KHQ9cGFyc2VJbnQodC5yZXBsYWNlKCJVKyIsIjB4IiksMTYpLGU9U3RyaW5nLmZyb21DaGFyQ29kZSh0KS50b0xvd2VyQ2FzZSgpKTplPXQudG9Mb3dlckNhc2UoKSksZX0pKHQua2V5SWRlbnRpZmllcil8fChmdW5jdGlvbiBpKHQpe3ZhciBlPSIiO3JldHVybiBOdW1iZXIodCkmJihlPXQ+PTY1JiZ0PD05MD9TdHJpbmcuZnJvbUNoYXJDb2RlKDMyK3QpOnQ+PTExMiYmdDw9MTIzPyJmIisodC0xMTIrMSk6dD49NDgmJnQ8PTU3P1N0cmluZyh0LTQ4KTp0Pj05NiYmdDw9MTA1P1N0cmluZyh0LTk2KTpFb1t0XSksZX0pKHQua2V5Q29kZSl8fCIifSkoZSx0Lmhhc01vZGlmaWVycyk9PT10LmtleSYmKCF0Lmhhc01vZGlmaWVyc3x8ISFlLnNoaWZ0S2V5PT0hIXQuc2hpZnRLZXkmJiEhZS5jdHJsS2V5PT0hIXQuY3RybEtleSYmISFlLmFsdEtleT09ISF0LmFsdEtleSYmISFlLm1ldGFLZXk9PSEhdC5tZXRhS2V5KX1mdW5jdGlvbiBPbyh0KXtyZXR1cm4gdC50cmltKCkuc3BsaXQoIiAiKS5tYXAoKGZ1bmN0aW9uKHQpe3JldHVybihmdW5jdGlvbiBlKHQpe3JldHVybiAxPT09dC5sZW5ndGg/e2NvbWJvOnQsa2V5OnQsZXZlbnQ6ImtleWRvd24ifTp0LnNwbGl0KCIrIikucmVkdWNlKChmdW5jdGlvbih0LGUpe3ZhciBuPWUuc3BsaXQoIjoiKSxpPW5bMF0scj1uWzFdO3JldHVybiBpIGluIFRvPyh0W1RvW2ldXT0hMCx0Lmhhc01vZGlmaWVycz0hMCk6KHQua2V5PWksdC5ldmVudD1yfHwia2V5ZG93biIpLHR9KSx7Y29tYm86dC5zcGxpdCgiOiIpLnNoaWZ0KCl9KX0pKHQpfSkpfWNvbnN0IFJvPXtwcm9wZXJ0aWVzOntrZXlFdmVudFRhcmdldDp7dHlwZTpPYmplY3QsdmFsdWU6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpc319LHN0b3BLZXlib2FyZEV2ZW50UHJvcGFnYXRpb246e3R5cGU6Qm9vbGVhbix2YWx1ZTohMX0sX2JvdW5kS2V5SGFuZGxlcnM6e3R5cGU6QXJyYXksdmFsdWU6ZnVuY3Rpb24oKXtyZXR1cm5bXX19LF9pbXBlcmF0aXZlS2V5QmluZGluZ3M6e3R5cGU6T2JqZWN0LHZhbHVlOmZ1bmN0aW9uKCl7cmV0dXJue319fX0sb2JzZXJ2ZXJzOlsiX3Jlc2V0S2V5RXZlbnRMaXN0ZW5lcnMoa2V5RXZlbnRUYXJnZXQsIF9ib3VuZEtleUhhbmRsZXJzKSJdLGtleUJpbmRpbmdzOnt9LHJlZ2lzdGVyZWQ6ZnVuY3Rpb24oKXt0aGlzLl9wcmVwS2V5QmluZGluZ3MoKX0sYXR0YWNoZWQ6ZnVuY3Rpb24oKXt0aGlzLl9saXN0ZW5LZXlFdmVudExpc3RlbmVycygpfSxkZXRhY2hlZDpmdW5jdGlvbigpe3RoaXMuX3VubGlzdGVuS2V5RXZlbnRMaXN0ZW5lcnMoKX0sYWRkT3duS2V5QmluZGluZzpmdW5jdGlvbih0LGUpe3RoaXMuX2ltcGVyYXRpdmVLZXlCaW5kaW5nc1t0XT1lLHRoaXMuX3ByZXBLZXlCaW5kaW5ncygpLHRoaXMuX3Jlc2V0S2V5RXZlbnRMaXN0ZW5lcnMoKX0scmVtb3ZlT3duS2V5QmluZGluZ3M6ZnVuY3Rpb24oKXt0aGlzLl9pbXBlcmF0aXZlS2V5QmluZGluZ3M9e30sdGhpcy5fcHJlcEtleUJpbmRpbmdzKCksdGhpcy5fcmVzZXRLZXlFdmVudExpc3RlbmVycygpfSxrZXlib2FyZEV2ZW50TWF0Y2hlc0tleXM6ZnVuY3Rpb24odCxlKXtmb3IodmFyIG49T28oZSksaT0wO2k8bi5sZW5ndGg7KytpKWlmKE5vKG5baV0sdCkpcmV0dXJuITA7cmV0dXJuITF9LF9jb2xsZWN0S2V5QmluZGluZ3M6ZnVuY3Rpb24oKXt2YXIgdD10aGlzLmJlaGF2aW9ycy5tYXAoKGZ1bmN0aW9uKHQpe3JldHVybiB0LmtleUJpbmRpbmdzfSkpO3JldHVybi0xPT09dC5pbmRleE9mKHRoaXMua2V5QmluZGluZ3MpJiZ0LnB1c2godGhpcy5rZXlCaW5kaW5ncyksdH0sX3ByZXBLZXlCaW5kaW5nczpmdW5jdGlvbigpe2Zvcih2YXIgdCBpbiB0aGlzLl9rZXlCaW5kaW5ncz17fSx0aGlzLl9jb2xsZWN0S2V5QmluZGluZ3MoKS5mb3JFYWNoKChmdW5jdGlvbih0KXtmb3IodmFyIGUgaW4gdCl0aGlzLl9hZGRLZXlCaW5kaW5nKGUsdFtlXSl9KSx0aGlzKSx0aGlzLl9pbXBlcmF0aXZlS2V5QmluZGluZ3MpdGhpcy5fYWRkS2V5QmluZGluZyh0LHRoaXMuX2ltcGVyYXRpdmVLZXlCaW5kaW5nc1t0XSk7Zm9yKHZhciBlIGluIHRoaXMuX2tleUJpbmRpbmdzKXRoaXMuX2tleUJpbmRpbmdzW2VdLnNvcnQoKGZ1bmN0aW9uKHQsZSl7dmFyIG49dFswXS5oYXNNb2RpZmllcnM7cmV0dXJuIG49PT1lWzBdLmhhc01vZGlmaWVycz8wOm4/LTE6MX0pKX0sX2FkZEtleUJpbmRpbmc6ZnVuY3Rpb24odCxlKXtPbyh0KS5mb3JFYWNoKChmdW5jdGlvbih0KXt0aGlzLl9rZXlCaW5kaW5nc1t0LmV2ZW50XT10aGlzLl9rZXlCaW5kaW5nc1t0LmV2ZW50XXx8W10sdGhpcy5fa2V5QmluZGluZ3NbdC5ldmVudF0ucHVzaChbdCxlXSl9KSx0aGlzKX0sX3Jlc2V0S2V5RXZlbnRMaXN0ZW5lcnM6ZnVuY3Rpb24oKXt0aGlzLl91bmxpc3RlbktleUV2ZW50TGlzdGVuZXJzKCksdGhpcy5pc0F0dGFjaGVkJiZ0aGlzLl9saXN0ZW5LZXlFdmVudExpc3RlbmVycygpfSxfbGlzdGVuS2V5RXZlbnRMaXN0ZW5lcnM6ZnVuY3Rpb24oKXt0aGlzLmtleUV2ZW50VGFyZ2V0JiZPYmplY3Qua2V5cyh0aGlzLl9rZXlCaW5kaW5ncykuZm9yRWFjaCgoZnVuY3Rpb24odCl7dmFyIGU9dGhpcy5fb25LZXlCaW5kaW5nRXZlbnQuYmluZCh0aGlzLHRoaXMuX2tleUJpbmRpbmdzW3RdKTt0aGlzLl9ib3VuZEtleUhhbmRsZXJzLnB1c2goW3RoaXMua2V5RXZlbnRUYXJnZXQsdCxlXSksdGhpcy5rZXlFdmVudFRhcmdldC5hZGRFdmVudExpc3RlbmVyKHQsZSl9KSx0aGlzKX0sX3VubGlzdGVuS2V5RXZlbnRMaXN0ZW5lcnM6ZnVuY3Rpb24oKXtmb3IodmFyIHQ7dGhpcy5fYm91bmRLZXlIYW5kbGVycy5sZW5ndGg7KSh0PXRoaXMuX2JvdW5kS2V5SGFuZGxlcnMucG9wKCkpWzBdLnJlbW92ZUV2ZW50TGlzdGVuZXIodFsxXSx0WzJdKX0sX29uS2V5QmluZGluZ0V2ZW50OmZ1bmN0aW9uKHQsZSl7aWYodGhpcy5zdG9wS2V5Ym9hcmRFdmVudFByb3BhZ2F0aW9uJiZlLnN0b3BQcm9wYWdhdGlvbigpLCFlLmRlZmF1bHRQcmV2ZW50ZWQpZm9yKHZhciBuPTA7bjx0Lmxlbmd0aDtuKyspe3ZhciBpPXRbbl1bMF0scj10W25dWzFdO2lmKE5vKGksZSkmJih0aGlzLl90cmlnZ2VyS2V5SGFuZGxlcihpLHIsZSksZS5kZWZhdWx0UHJldmVudGVkKSlyZXR1cm59fSxfdHJpZ2dlcktleUhhbmRsZXI6ZnVuY3Rpb24odCxlLG4pe3ZhciBpPU9iamVjdC5jcmVhdGUodCk7aS5rZXlib2FyZEV2ZW50PW47dmFyIHI9bmV3IEN1c3RvbUV2ZW50KHQuZXZlbnQse2RldGFpbDppLGNhbmNlbGFibGU6ITB9KTt0aGlzW2VdLmNhbGwodGhpcyxyKSxyLmRlZmF1bHRQcmV2ZW50ZWQmJm4ucHJldmVudERlZmF1bHQoKX19LHpvPXtwcm9wZXJ0aWVzOntzY3JvbGxUYXJnZXQ6e3R5cGU6SFRNTEVsZW1lbnQsdmFsdWU6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5fZGVmYXVsdFNjcm9sbFRhcmdldH19fSxvYnNlcnZlcnM6WyJfc2Nyb2xsVGFyZ2V0Q2hhbmdlZChzY3JvbGxUYXJnZXQsIGlzQXR0YWNoZWQpIl0sX3Nob3VsZEhhdmVMaXN0ZW5lcjohMCxfc2Nyb2xsVGFyZ2V0Q2hhbmdlZDpmdW5jdGlvbih0LGUpe2lmKHRoaXMuX29sZFNjcm9sbFRhcmdldCYmKHRoaXMuX3RvZ2dsZVNjcm9sbExpc3RlbmVyKCExLHRoaXMuX29sZFNjcm9sbFRhcmdldCksdGhpcy5fb2xkU2Nyb2xsVGFyZ2V0PW51bGwpLGUpaWYoImRvY3VtZW50Ij09PXQpdGhpcy5zY3JvbGxUYXJnZXQ9dGhpcy5fZG9jO2Vsc2UgaWYoInN0cmluZyI9PXR5cGVvZiB0KXt2YXIgbj10aGlzLmRvbUhvc3Q7dGhpcy5zY3JvbGxUYXJnZXQ9biYmbi4kP24uJFt0XTpxaSh0aGlzLm93bmVyRG9jdW1lbnQpLnF1ZXJ5U2VsZWN0b3IoIiMiK3QpfWVsc2UgdGhpcy5faXNWYWxpZFNjcm9sbFRhcmdldCgpJiYodGhpcy5fb2xkU2Nyb2xsVGFyZ2V0PXQsdGhpcy5fdG9nZ2xlU2Nyb2xsTGlzdGVuZXIodGhpcy5fc2hvdWxkSGF2ZUxpc3RlbmVyLHQpKX0sX3Njcm9sbEhhbmRsZXI6ZnVuY3Rpb24gdCgpe30sZ2V0IF9kZWZhdWx0U2Nyb2xsVGFyZ2V0KCl7cmV0dXJuIHRoaXMuX2RvY30sZ2V0IF9kb2MoKXtyZXR1cm4gdGhpcy5vd25lckRvY3VtZW50LmRvY3VtZW50RWxlbWVudH0sZ2V0IF9zY3JvbGxUb3AoKXtyZXR1cm4gdGhpcy5faXNWYWxpZFNjcm9sbFRhcmdldCgpP3RoaXMuc2Nyb2xsVGFyZ2V0PT09dGhpcy5fZG9jP3dpbmRvdy5wYWdlWU9mZnNldDp0aGlzLnNjcm9sbFRhcmdldC5zY3JvbGxUb3A6MH0sZ2V0IF9zY3JvbGxMZWZ0KCl7cmV0dXJuIHRoaXMuX2lzVmFsaWRTY3JvbGxUYXJnZXQoKT90aGlzLnNjcm9sbFRhcmdldD09PXRoaXMuX2RvYz93aW5kb3cucGFnZVhPZmZzZXQ6dGhpcy5zY3JvbGxUYXJnZXQuc2Nyb2xsTGVmdDowfSxzZXQgX3Njcm9sbFRvcCh0KXt0aGlzLnNjcm9sbFRhcmdldD09PXRoaXMuX2RvYz93aW5kb3cuc2Nyb2xsVG8od2luZG93LnBhZ2VYT2Zmc2V0LHQpOnRoaXMuX2lzVmFsaWRTY3JvbGxUYXJnZXQoKSYmKHRoaXMuc2Nyb2xsVGFyZ2V0LnNjcm9sbFRvcD10KX0sc2V0IF9zY3JvbGxMZWZ0KHQpe3RoaXMuc2Nyb2xsVGFyZ2V0PT09dGhpcy5fZG9jP3dpbmRvdy5zY3JvbGxUbyh0LHdpbmRvdy5wYWdlWU9mZnNldCk6dGhpcy5faXNWYWxpZFNjcm9sbFRhcmdldCgpJiYodGhpcy5zY3JvbGxUYXJnZXQuc2Nyb2xsTGVmdD10KX0sc2Nyb2xsOmZ1bmN0aW9uKHQsZSl7dmFyIG47Im9iamVjdCI9PXR5cGVvZiB0PyhuPXQubGVmdCxlPXQudG9wKTpuPXQsbj1ufHwwLGU9ZXx8MCx0aGlzLnNjcm9sbFRhcmdldD09PXRoaXMuX2RvYz93aW5kb3cuc2Nyb2xsVG8obixlKTp0aGlzLl9pc1ZhbGlkU2Nyb2xsVGFyZ2V0KCkmJih0aGlzLnNjcm9sbFRhcmdldC5zY3JvbGxMZWZ0PW4sdGhpcy5zY3JvbGxUYXJnZXQuc2Nyb2xsVG9wPWUpfSxnZXQgX3Njcm9sbFRhcmdldFdpZHRoKCl7cmV0dXJuIHRoaXMuX2lzVmFsaWRTY3JvbGxUYXJnZXQoKT90aGlzLnNjcm9sbFRhcmdldD09PXRoaXMuX2RvYz93aW5kb3cuaW5uZXJXaWR0aDp0aGlzLnNjcm9sbFRhcmdldC5vZmZzZXRXaWR0aDowfSxnZXQgX3Njcm9sbFRhcmdldEhlaWdodCgpe3JldHVybiB0aGlzLl9pc1ZhbGlkU2Nyb2xsVGFyZ2V0KCk/dGhpcy5zY3JvbGxUYXJnZXQ9PT10aGlzLl9kb2M/d2luZG93LmlubmVySGVpZ2h0OnRoaXMuc2Nyb2xsVGFyZ2V0Lm9mZnNldEhlaWdodDowfSxfaXNWYWxpZFNjcm9sbFRhcmdldDpmdW5jdGlvbigpe3JldHVybiB0aGlzLnNjcm9sbFRhcmdldCBpbnN0YW5jZW9mIEhUTUxFbGVtZW50fSxfdG9nZ2xlU2Nyb2xsTGlzdGVuZXI6ZnVuY3Rpb24odCxlKXt2YXIgbj1lPT09dGhpcy5fZG9jP3dpbmRvdzplO3Q/dGhpcy5fYm91bmRTY3JvbGxIYW5kbGVyfHwodGhpcy5fYm91bmRTY3JvbGxIYW5kbGVyPXRoaXMuX3Njcm9sbEhhbmRsZXIuYmluZCh0aGlzKSxuLmFkZEV2ZW50TGlzdGVuZXIoInNjcm9sbCIsdGhpcy5fYm91bmRTY3JvbGxIYW5kbGVyKSk6dGhpcy5fYm91bmRTY3JvbGxIYW5kbGVyJiYobi5yZW1vdmVFdmVudExpc3RlbmVyKCJzY3JvbGwiLHRoaXMuX2JvdW5kU2Nyb2xsSGFuZGxlciksdGhpcy5fYm91bmRTY3JvbGxIYW5kbGVyPW51bGwpfSx0b2dnbGVTY3JvbGxMaXN0ZW5lcjpmdW5jdGlvbih0KXt0aGlzLl9zaG91bGRIYXZlTGlzdGVuZXI9dCx0aGlzLl90b2dnbGVTY3JvbGxMaXN0ZW5lcih0LHRoaXMuc2Nyb2xsVGFyZ2V0KX19OwovKioKICAgIEBsaWNlbnNlCiAgICBDb3B5cmlnaHQgKGMpIDIwMTYgVGhlIFBvbHltZXIgUHJvamVjdCBBdXRob3JzLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICAgVGhpcyBjb2RlIG1heSBvbmx5IGJlIHVzZWQgdW5kZXIgdGhlIEJTRCBzdHlsZSBsaWNlbnNlIGZvdW5kIGF0CiAgICBodHRwOi8vcG9seW1lci5naXRodWIuaW8vTElDRU5TRS50eHQgVGhlIGNvbXBsZXRlIHNldCBvZiBhdXRob3JzIG1heSBiZSBmb3VuZCBhdAogICAgaHR0cDovL3BvbHltZXIuZ2l0aHViLmlvL0FVVEhPUlMudHh0IFRoZSBjb21wbGV0ZSBzZXQgb2YgY29udHJpYnV0b3JzIG1heSBiZQogICAgZm91bmQgYXQgaHR0cDovL3BvbHltZXIuZ2l0aHViLmlvL0NPTlRSSUJVVE9SUy50eHQgQ29kZSBkaXN0cmlidXRlZCBieSBHb29nbGUgYXMKICAgIHBhcnQgb2YgdGhlIHBvbHltZXIgcHJvamVjdCBpcyBhbHNvIHN1YmplY3QgdG8gYW4gYWRkaXRpb25hbCBJUCByaWdodHMgZ3JhbnQKICAgIGZvdW5kIGF0IGh0dHA6Ly9wb2x5bWVyLmdpdGh1Yi5pby9QQVRFTlRTLnR4dAogICAgKi8KLyoqCiAgICBAbGljZW5zZQogICAgQ29weXJpZ2h0IChjKSAyMDE2IFRoZSBQb2x5bWVyIFByb2plY3QgQXV0aG9ycy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAgIFRoaXMgY29kZSBtYXkgb25seSBiZSB1c2VkIHVuZGVyIHRoZSBCU0Qgc3R5bGUgbGljZW5zZSBmb3VuZCBhdAogICAgaHR0cDovL3BvbHltZXIuZ2l0aHViLmlvL0xJQ0VOU0UudHh0IFRoZSBjb21wbGV0ZSBzZXQgb2YgYXV0aG9ycyBtYXkgYmUgZm91bmQgYXQKICAgIGh0dHA6Ly9wb2x5bWVyLmdpdGh1Yi5pby9BVVRIT1JTLnR4dCBUaGUgY29tcGxldGUgc2V0IG9mIGNvbnRyaWJ1dG9ycyBtYXkgYmUKICAgIGZvdW5kIGF0IGh0dHA6Ly9wb2x5bWVyLmdpdGh1Yi5pby9DT05UUklCVVRPUlMudHh0IENvZGUgZGlzdHJpYnV0ZWQgYnkgR29vZ2xlIGFzCiAgICBwYXJ0IG9mIHRoZSBwb2x5bWVyIHByb2plY3QgaXMgYWxzbyBzdWJqZWN0IHRvIGFuIGFkZGl0aW9uYWwgSVAgcmlnaHRzIGdyYW50CiAgICBmb3VuZCBhdCBodHRwOi8vcG9seW1lci5naXRodWIuaW8vUEFURU5UUy50eHQKICAgICovCnZhciBEbz1uYXZpZ2F0b3IudXNlckFnZW50Lm1hdGNoKC9pUCg/OmhvbmV8YWQ7KD86IFU7KT8gQ1BVKSBPUyAoXGQrKS8pLEJvPURvJiZEb1sxXT49OCxIbz0iLTEwMDAwcHgiLEZvPS0xMDA7TnIoe190ZW1wbGF0ZTpfZWAKICAgIDxzdHlsZT4KICAgICAgOmhvc3QgewogICAgICAgIGRpc3BsYXk6IGJsb2NrOwogICAgICB9CgogICAgICBAbWVkaWEgb25seSBzY3JlZW4gYW5kICgtd2Via2l0LW1heC1kZXZpY2UtcGl4ZWwtcmF0aW86IDEpIHsKICAgICAgICA6aG9zdCB7CiAgICAgICAgICB3aWxsLWNoYW5nZTogdHJhbnNmb3JtOwogICAgICAgIH0KICAgICAgfQoKICAgICAgI2l0ZW1zIHsKICAgICAgICBAYXBwbHkgLS1pcm9uLWxpc3QtaXRlbXMtY29udGFpbmVyOwogICAgICAgIHBvc2l0aW9uOiByZWxhdGl2ZTsKICAgICAgfQoKICAgICAgOmhvc3QoOm5vdChbZ3JpZF0pKSAjaXRlbXMgPiA6OnNsb3R0ZWQoKikgewogICAgICAgIHdpZHRoOiAxMDAlOwogICAgICB9CgogICAgICAjaXRlbXMgPiA6OnNsb3R0ZWQoKikgewogICAgICAgIGJveC1zaXppbmc6IGJvcmRlci1ib3g7CiAgICAgICAgbWFyZ2luOiAwOwogICAgICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTsKICAgICAgICB0b3A6IDA7CiAgICAgICAgd2lsbC1jaGFuZ2U6IHRyYW5zZm9ybTsKICAgICAgfQogICAgPC9zdHlsZT4KCiAgICA8YXJyYXktc2VsZWN0b3IgaWQ9InNlbGVjdG9yIiBpdGVtcz0ie3tpdGVtc319IiBzZWxlY3RlZD0ie3tzZWxlY3RlZEl0ZW1zfX0iIHNlbGVjdGVkLWl0ZW09Int7c2VsZWN0ZWRJdGVtfX0iPjwvYXJyYXktc2VsZWN0b3I+CgogICAgPGRpdiBpZD0iaXRlbXMiPgogICAgICA8c2xvdD48L3Nsb3Q+CiAgICA8L2Rpdj4KYCxpczoiaXJvbi1saXN0Iixwcm9wZXJ0aWVzOntpdGVtczp7dHlwZTpBcnJheX0sYXM6e3R5cGU6U3RyaW5nLHZhbHVlOiJpdGVtIn0saW5kZXhBczp7dHlwZTpTdHJpbmcsdmFsdWU6ImluZGV4In0sc2VsZWN0ZWRBczp7dHlwZTpTdHJpbmcsdmFsdWU6InNlbGVjdGVkIn0sZ3JpZDp7dHlwZTpCb29sZWFuLHZhbHVlOiExLHJlZmxlY3RUb0F0dHJpYnV0ZTohMCxvYnNlcnZlcjoiX2dyaWRDaGFuZ2VkIn0sc2VsZWN0aW9uRW5hYmxlZDp7dHlwZTpCb29sZWFuLHZhbHVlOiExfSxzZWxlY3RlZEl0ZW06e3R5cGU6T2JqZWN0LG5vdGlmeTohMH0sc2VsZWN0ZWRJdGVtczp7dHlwZTpPYmplY3Qsbm90aWZ5OiEwfSxtdWx0aVNlbGVjdGlvbjp7dHlwZTpCb29sZWFuLHZhbHVlOiExfSxzY3JvbGxPZmZzZXQ6e3R5cGU6TnVtYmVyLHZhbHVlOjB9fSxvYnNlcnZlcnM6WyJfaXRlbXNDaGFuZ2VkKGl0ZW1zLiopIiwiX3NlbGVjdGlvbkVuYWJsZWRDaGFuZ2VkKHNlbGVjdGlvbkVuYWJsZWQpIiwiX211bHRpU2VsZWN0aW9uQ2hhbmdlZChtdWx0aVNlbGVjdGlvbikiLCJfc2V0T3ZlcmZsb3coc2Nyb2xsVGFyZ2V0LCBzY3JvbGxPZmZzZXQpIl0sYmVoYXZpb3JzOltLcixtbyx6byxob10sX3JhdGlvOi41LF9zY3JvbGxlclBhZGRpbmdUb3A6MCxfc2Nyb2xsUG9zaXRpb246MCxfcGh5c2ljYWxTaXplOjAsX3BoeXNpY2FsQXZlcmFnZTowLF9waHlzaWNhbEF2ZXJhZ2VDb3VudDowLF9waHlzaWNhbFRvcDowLF92aXJ0dWFsQ291bnQ6MCxfZXN0U2Nyb2xsSGVpZ2h0OjAsX3Njcm9sbEhlaWdodDowLF92aWV3cG9ydEhlaWdodDowLF92aWV3cG9ydFdpZHRoOjAsX3BoeXNpY2FsSXRlbXM6bnVsbCxfcGh5c2ljYWxTaXplczpudWxsLF9maXJzdFZpc2libGVJbmRleFZhbDpudWxsLF9sYXN0VmlzaWJsZUluZGV4VmFsOm51bGwsX21heFBhZ2VzOjIsX2ZvY3VzZWRJdGVtOm51bGwsX2ZvY3VzZWRWaXJ0dWFsSW5kZXg6LTEsX2ZvY3VzZWRQaHlzaWNhbEluZGV4Oi0xLF9vZmZzY3JlZW5Gb2N1c2VkSXRlbTpudWxsLF9mb2N1c0JhY2tmaWxsSXRlbTpudWxsLF9pdGVtc1BlclJvdzoxLF9pdGVtV2lkdGg6MCxfcm93SGVpZ2h0OjAsX3RlbXBsYXRlQ29zdDowLF9wYXJlbnRNb2RlbDohMCxnZXQgX3BoeXNpY2FsQm90dG9tKCl7cmV0dXJuIHRoaXMuX3BoeXNpY2FsVG9wK3RoaXMuX3BoeXNpY2FsU2l6ZX0sZ2V0IF9zY3JvbGxCb3R0b20oKXtyZXR1cm4gdGhpcy5fc2Nyb2xsUG9zaXRpb24rdGhpcy5fdmlld3BvcnRIZWlnaHR9LGdldCBfdmlydHVhbEVuZCgpe3JldHVybiB0aGlzLl92aXJ0dWFsU3RhcnQrdGhpcy5fcGh5c2ljYWxDb3VudC0xfSxnZXQgX2hpZGRlbkNvbnRlbnRTaXplKCl7cmV0dXJuKHRoaXMuZ3JpZD90aGlzLl9waHlzaWNhbFJvd3MqdGhpcy5fcm93SGVpZ2h0OnRoaXMuX3BoeXNpY2FsU2l6ZSktdGhpcy5fdmlld3BvcnRIZWlnaHR9LGdldCBfaXRlbXNQYXJlbnQoKXtyZXR1cm4gcWkocWkodGhpcy5fdXNlclRlbXBsYXRlKS5wYXJlbnROb2RlKX0sZ2V0IF9tYXhTY3JvbGxUb3AoKXtyZXR1cm4gdGhpcy5fZXN0U2Nyb2xsSGVpZ2h0LXRoaXMuX3ZpZXdwb3J0SGVpZ2h0K3RoaXMuX3Njcm9sbE9mZnNldH0sZ2V0IF9tYXhWaXJ0dWFsU3RhcnQoKXt2YXIgdD10aGlzLl9jb252ZXJ0SW5kZXhUb0NvbXBsZXRlUm93KHRoaXMuX3ZpcnR1YWxDb3VudCk7cmV0dXJuIE1hdGgubWF4KDAsdC10aGlzLl9waHlzaWNhbENvdW50KX0sc2V0IF92aXJ0dWFsU3RhcnQodCl7dD10aGlzLl9jbGFtcCh0LDAsdGhpcy5fbWF4VmlydHVhbFN0YXJ0KSx0aGlzLmdyaWQmJih0LT10JXRoaXMuX2l0ZW1zUGVyUm93KSx0aGlzLl92aXJ0dWFsU3RhcnRWYWw9dH0sZ2V0IF92aXJ0dWFsU3RhcnQoKXtyZXR1cm4gdGhpcy5fdmlydHVhbFN0YXJ0VmFsfHwwfSxzZXQgX3BoeXNpY2FsU3RhcnQodCl7KHQlPXRoaXMuX3BoeXNpY2FsQ291bnQpPDAmJih0PXRoaXMuX3BoeXNpY2FsQ291bnQrdCksdGhpcy5ncmlkJiYodC09dCV0aGlzLl9pdGVtc1BlclJvdyksdGhpcy5fcGh5c2ljYWxTdGFydFZhbD10fSxnZXQgX3BoeXNpY2FsU3RhcnQoKXtyZXR1cm4gdGhpcy5fcGh5c2ljYWxTdGFydFZhbHx8MH0sZ2V0IF9waHlzaWNhbEVuZCgpe3JldHVybih0aGlzLl9waHlzaWNhbFN0YXJ0K3RoaXMuX3BoeXNpY2FsQ291bnQtMSkldGhpcy5fcGh5c2ljYWxDb3VudH0sc2V0IF9waHlzaWNhbENvdW50KHQpe3RoaXMuX3BoeXNpY2FsQ291bnRWYWw9dH0sZ2V0IF9waHlzaWNhbENvdW50KCl7cmV0dXJuIHRoaXMuX3BoeXNpY2FsQ291bnRWYWx8fDB9LGdldCBfb3B0UGh5c2ljYWxTaXplKCl7cmV0dXJuIDA9PT10aGlzLl92aWV3cG9ydEhlaWdodD8xLzA6dGhpcy5fdmlld3BvcnRIZWlnaHQqdGhpcy5fbWF4UGFnZXN9LGdldCBfaXNWaXNpYmxlKCl7cmV0dXJuIEJvb2xlYW4odGhpcy5vZmZzZXRXaWR0aHx8dGhpcy5vZmZzZXRIZWlnaHQpfSxnZXQgZmlyc3RWaXNpYmxlSW5kZXgoKXt2YXIgdD10aGlzLl9maXJzdFZpc2libGVJbmRleFZhbDtpZihudWxsPT10KXt2YXIgZT10aGlzLl9waHlzaWNhbFRvcCt0aGlzLl9zY3JvbGxPZmZzZXQ7dD10aGlzLl9pdGVyYXRlSXRlbXMoKGZ1bmN0aW9uKHQsbil7cmV0dXJuKGUrPXRoaXMuX2dldFBoeXNpY2FsU2l6ZUluY3JlbWVudCh0KSk+dGhpcy5fc2Nyb2xsUG9zaXRpb24/dGhpcy5ncmlkP24tbiV0aGlzLl9pdGVtc1BlclJvdzpuOnRoaXMuZ3JpZCYmdGhpcy5fdmlydHVhbENvdW50LTE9PT1uP24tbiV0aGlzLl9pdGVtc1BlclJvdzp2b2lkIDB9KSl8fDAsdGhpcy5fZmlyc3RWaXNpYmxlSW5kZXhWYWw9dH1yZXR1cm4gdH0sZ2V0IGxhc3RWaXNpYmxlSW5kZXgoKXt2YXIgdD10aGlzLl9sYXN0VmlzaWJsZUluZGV4VmFsO2lmKG51bGw9PXQpe2lmKHRoaXMuZ3JpZCl0PU1hdGgubWluKHRoaXMuX3ZpcnR1YWxDb3VudCx0aGlzLmZpcnN0VmlzaWJsZUluZGV4K3RoaXMuX2VzdFJvd3NJblZpZXcqdGhpcy5faXRlbXNQZXJSb3ctMSk7ZWxzZXt2YXIgZT10aGlzLl9waHlzaWNhbFRvcCt0aGlzLl9zY3JvbGxPZmZzZXQ7dGhpcy5faXRlcmF0ZUl0ZW1zKChmdW5jdGlvbihuLGkpe2U8dGhpcy5fc2Nyb2xsQm90dG9tJiYodD1pKSxlKz10aGlzLl9nZXRQaHlzaWNhbFNpemVJbmNyZW1lbnQobil9KSl9dGhpcy5fbGFzdFZpc2libGVJbmRleFZhbD10fXJldHVybiB0fSxnZXQgX2RlZmF1bHRTY3JvbGxUYXJnZXQoKXtyZXR1cm4gdGhpc30sZ2V0IF92aXJ0dWFsUm93Q291bnQoKXtyZXR1cm4gTWF0aC5jZWlsKHRoaXMuX3ZpcnR1YWxDb3VudC90aGlzLl9pdGVtc1BlclJvdyl9LGdldCBfZXN0Um93c0luVmlldygpe3JldHVybiBNYXRoLmNlaWwodGhpcy5fdmlld3BvcnRIZWlnaHQvdGhpcy5fcm93SGVpZ2h0KX0sZ2V0IF9waHlzaWNhbFJvd3MoKXtyZXR1cm4gTWF0aC5jZWlsKHRoaXMuX3BoeXNpY2FsQ291bnQvdGhpcy5faXRlbXNQZXJSb3cpfSxnZXQgX3Njcm9sbE9mZnNldCgpe3JldHVybiB0aGlzLl9zY3JvbGxlclBhZGRpbmdUb3ArdGhpcy5zY3JvbGxPZmZzZXR9LHJlYWR5OmZ1bmN0aW9uKCl7dGhpcy5hZGRFdmVudExpc3RlbmVyKCJmb2N1cyIsdGhpcy5fZGlkRm9jdXMuYmluZCh0aGlzKSwhMCl9LGF0dGFjaGVkOmZ1bmN0aW9uKCl7dGhpcy5fZGVib3VuY2UoIl9yZW5kZXIiLHRoaXMuX3JlbmRlcixfdCksdGhpcy5saXN0ZW4odGhpcywiaXJvbi1yZXNpemUiLCJfcmVzaXplSGFuZGxlciIpLHRoaXMubGlzdGVuKHRoaXMsImtleWRvd24iLCJfa2V5ZG93bkhhbmRsZXIiKX0sZGV0YWNoZWQ6ZnVuY3Rpb24oKXt0aGlzLnVubGlzdGVuKHRoaXMsImlyb24tcmVzaXplIiwiX3Jlc2l6ZUhhbmRsZXIiKSx0aGlzLnVubGlzdGVuKHRoaXMsImtleWRvd24iLCJfa2V5ZG93bkhhbmRsZXIiKX0sX3NldE92ZXJmbG93OmZ1bmN0aW9uKHQpe3RoaXMuc3R5bGUud2Via2l0T3ZlcmZsb3dTY3JvbGxpbmc9dD09PXRoaXM/InRvdWNoIjoiIix0aGlzLnN0eWxlLm92ZXJmbG93WT10PT09dGhpcz8iYXV0byI6IiIsdGhpcy5fbGFzdFZpc2libGVJbmRleFZhbD1udWxsLHRoaXMuX2ZpcnN0VmlzaWJsZUluZGV4VmFsPW51bGwsdGhpcy5fZGVib3VuY2UoIl9yZW5kZXIiLHRoaXMuX3JlbmRlcixfdCl9LHVwZGF0ZVZpZXdwb3J0Qm91bmRhcmllczpmdW5jdGlvbigpe3ZhciB0PXdpbmRvdy5nZXRDb21wdXRlZFN0eWxlKHRoaXMpO3RoaXMuX3Njcm9sbGVyUGFkZGluZ1RvcD10aGlzLnNjcm9sbFRhcmdldD09PXRoaXM/MDpwYXJzZUludCh0WyJwYWRkaW5nLXRvcCJdLDEwKSx0aGlzLl9pc1JUTD1Cb29sZWFuKCJydGwiPT09dC5kaXJlY3Rpb24pLHRoaXMuX3ZpZXdwb3J0V2lkdGg9dGhpcy4kLml0ZW1zLm9mZnNldFdpZHRoLHRoaXMuX3ZpZXdwb3J0SGVpZ2h0PXRoaXMuX3Njcm9sbFRhcmdldEhlaWdodCx0aGlzLmdyaWQmJnRoaXMuX3VwZGF0ZUdyaWRNZXRyaWNzKCl9LF9zY3JvbGxIYW5kbGVyOmZ1bmN0aW9uKCl7dmFyIHQ9TWF0aC5tYXgoMCxNYXRoLm1pbih0aGlzLl9tYXhTY3JvbGxUb3AsdGhpcy5fc2Nyb2xsVG9wKSksZT10LXRoaXMuX3Njcm9sbFBvc2l0aW9uLG49ZT49MDtpZih0aGlzLl9zY3JvbGxQb3NpdGlvbj10LHRoaXMuX2ZpcnN0VmlzaWJsZUluZGV4VmFsPW51bGwsdGhpcy5fbGFzdFZpc2libGVJbmRleFZhbD1udWxsLE1hdGguYWJzKGUpPnRoaXMuX3BoeXNpY2FsU2l6ZSYmdGhpcy5fcGh5c2ljYWxTaXplPjApe2UtPXRoaXMuX3Njcm9sbE9mZnNldDt2YXIgaT1NYXRoLnJvdW5kKGUvdGhpcy5fcGh5c2ljYWxBdmVyYWdlKSp0aGlzLl9pdGVtc1BlclJvdzt0aGlzLl92aXJ0dWFsU3RhcnQ9dGhpcy5fdmlydHVhbFN0YXJ0K2ksdGhpcy5fcGh5c2ljYWxTdGFydD10aGlzLl9waHlzaWNhbFN0YXJ0K2ksdGhpcy5fcGh5c2ljYWxUb3A9TWF0aC5taW4oTWF0aC5mbG9vcih0aGlzLl92aXJ0dWFsU3RhcnQvdGhpcy5faXRlbXNQZXJSb3cpKnRoaXMuX3BoeXNpY2FsQXZlcmFnZSx0aGlzLl9zY3JvbGxQb3NpdGlvbiksdGhpcy5fdXBkYXRlKCl9ZWxzZSBpZih0aGlzLl9waHlzaWNhbENvdW50PjApe3ZhciByPXRoaXMuX2dldFJldXNhYmxlcyhuKTtuPyh0aGlzLl9waHlzaWNhbFRvcD1yLnBoeXNpY2FsVG9wLHRoaXMuX3ZpcnR1YWxTdGFydD10aGlzLl92aXJ0dWFsU3RhcnQrci5pbmRleGVzLmxlbmd0aCx0aGlzLl9waHlzaWNhbFN0YXJ0PXRoaXMuX3BoeXNpY2FsU3RhcnQrci5pbmRleGVzLmxlbmd0aCk6KHRoaXMuX3ZpcnR1YWxTdGFydD10aGlzLl92aXJ0dWFsU3RhcnQtci5pbmRleGVzLmxlbmd0aCx0aGlzLl9waHlzaWNhbFN0YXJ0PXRoaXMuX3BoeXNpY2FsU3RhcnQtci5pbmRleGVzLmxlbmd0aCksdGhpcy5fdXBkYXRlKHIuaW5kZXhlcyxuP251bGw6ci5pbmRleGVzKSx0aGlzLl9kZWJvdW5jZSgiX2luY3JlYXNlUG9vbElmTmVlZGVkIix0aGlzLl9pbmNyZWFzZVBvb2xJZk5lZWRlZC5iaW5kKHRoaXMsMCksdnQpfX0sX2dldFJldXNhYmxlczpmdW5jdGlvbih0KXt2YXIgZSxuLGkscj1bXSxvPXRoaXMuX2hpZGRlbkNvbnRlbnRTaXplKnRoaXMuX3JhdGlvLGE9dGhpcy5fdmlydHVhbFN0YXJ0LHM9dGhpcy5fdmlydHVhbEVuZCxsPXRoaXMuX3BoeXNpY2FsQ291bnQsYz10aGlzLl9waHlzaWNhbFRvcCt0aGlzLl9zY3JvbGxPZmZzZXQsdT10aGlzLl9zY3JvbGxQb3NpdGlvbixoPXRoaXMuX3Njcm9sbEJvdHRvbTtmb3IodD8oZT10aGlzLl9waHlzaWNhbFN0YXJ0LG49dS1jKTooZT10aGlzLl9waHlzaWNhbEVuZCxuPXRoaXMuX3BoeXNpY2FsQm90dG9tK3RoaXMuX3Njcm9sbE9mZnNldC1oKTtuLT1pPXRoaXMuX2dldFBoeXNpY2FsU2l6ZUluY3JlbWVudChlKSwhKHIubGVuZ3RoPj1sfHxuPD1vKTspaWYodCl7aWYocytyLmxlbmd0aCsxPj10aGlzLl92aXJ0dWFsQ291bnQpYnJlYWs7aWYoYytpPj11LXRoaXMuX3Njcm9sbE9mZnNldClicmVhaztyLnB1c2goZSksYys9aSxlPShlKzEpJWx9ZWxzZXtpZihhLXIubGVuZ3RoPD0wKWJyZWFrO2lmKGMrdGhpcy5fcGh5c2ljYWxTaXplLWk8PWgpYnJlYWs7ci5wdXNoKGUpLGMtPWksZT0wPT09ZT9sLTE6ZS0xfXJldHVybntpbmRleGVzOnIscGh5c2ljYWxUb3A6Yy10aGlzLl9zY3JvbGxPZmZzZXR9fSxfdXBkYXRlOmZ1bmN0aW9uKHQsZSl7aWYoISh0JiYwPT09dC5sZW5ndGh8fDA9PT10aGlzLl9waHlzaWNhbENvdW50KSl7aWYodGhpcy5fbWFuYWdlRm9jdXMoKSx0aGlzLl9hc3NpZ25Nb2RlbHModCksdGhpcy5fdXBkYXRlTWV0cmljcyh0KSxlKWZvcig7ZS5sZW5ndGg7KXt2YXIgbj1lLnBvcCgpO3RoaXMuX3BoeXNpY2FsVG9wLT10aGlzLl9nZXRQaHlzaWNhbFNpemVJbmNyZW1lbnQobil9dGhpcy5fcG9zaXRpb25JdGVtcygpLHRoaXMuX3VwZGF0ZVNjcm9sbGVyU2l6ZSgpfX0sX2NyZWF0ZVBvb2w6ZnVuY3Rpb24odCl7dmFyIGUsbjt0aGlzLl9lbnN1cmVUZW1wbGF0aXplZCgpO3ZhciBpPW5ldyBBcnJheSh0KTtmb3IoZT0wO2U8dDtlKyspbj10aGlzLnN0YW1wKG51bGwpLGlbZV09bi5yb290LnF1ZXJ5U2VsZWN0b3IoIioiKSx0aGlzLl9pdGVtc1BhcmVudC5hcHBlbmRDaGlsZChuLnJvb3QpO3JldHVybiBpfSxfaXNDbGllbnRGdWxsOmZ1bmN0aW9uKCl7cmV0dXJuIDAhPXRoaXMuX3Njcm9sbEJvdHRvbSYmdGhpcy5fcGh5c2ljYWxCb3R0b20tMT49dGhpcy5fc2Nyb2xsQm90dG9tJiZ0aGlzLl9waHlzaWNhbFRvcDw9dGhpcy5fc2Nyb2xsUG9zaXRpb259LF9pbmNyZWFzZVBvb2xJZk5lZWRlZDpmdW5jdGlvbih0KXt2YXIgZT10aGlzLl9jbGFtcCh0aGlzLl9waHlzaWNhbENvdW50K3QsMyx0aGlzLl92aXJ0dWFsQ291bnQtdGhpcy5fdmlydHVhbFN0YXJ0KTtpZihlPXRoaXMuX2NvbnZlcnRJbmRleFRvQ29tcGxldGVSb3coZSksdGhpcy5ncmlkKXt2YXIgbj1lJXRoaXMuX2l0ZW1zUGVyUm93O24mJmUtbjw9dGhpcy5fcGh5c2ljYWxDb3VudCYmKGUrPXRoaXMuX2l0ZW1zUGVyUm93KSxlLT1ufXZhciBpPWUtdGhpcy5fcGh5c2ljYWxDb3VudCxyPU1hdGgucm91bmQoLjUqdGhpcy5fcGh5c2ljYWxDb3VudCk7aWYoIShpPDApKXtpZihpPjApe3ZhciBvPXdpbmRvdy5wZXJmb3JtYW5jZS5ub3coKTtbXS5wdXNoLmFwcGx5KHRoaXMuX3BoeXNpY2FsSXRlbXMsdGhpcy5fY3JlYXRlUG9vbChpKSk7Zm9yKHZhciBhPTA7YTxpO2ErKyl0aGlzLl9waHlzaWNhbFNpemVzLnB1c2goMCk7dGhpcy5fcGh5c2ljYWxDb3VudD10aGlzLl9waHlzaWNhbENvdW50K2ksdGhpcy5fcGh5c2ljYWxTdGFydD50aGlzLl9waHlzaWNhbEVuZCYmdGhpcy5faXNJbmRleFJlbmRlcmVkKHRoaXMuX2ZvY3VzZWRWaXJ0dWFsSW5kZXgpJiZ0aGlzLl9nZXRQaHlzaWNhbEluZGV4KHRoaXMuX2ZvY3VzZWRWaXJ0dWFsSW5kZXgpPHRoaXMuX3BoeXNpY2FsRW5kJiYodGhpcy5fcGh5c2ljYWxTdGFydD10aGlzLl9waHlzaWNhbFN0YXJ0K2kpLHRoaXMuX3VwZGF0ZSgpLHRoaXMuX3RlbXBsYXRlQ29zdD0od2luZG93LnBlcmZvcm1hbmNlLm5vdygpLW8pL2kscj1NYXRoLnJvdW5kKC41KnRoaXMuX3BoeXNpY2FsQ291bnQpfXRoaXMuX3ZpcnR1YWxFbmQ+PXRoaXMuX3ZpcnR1YWxDb3VudC0xfHwwPT09cnx8KHRoaXMuX2lzQ2xpZW50RnVsbCgpP3RoaXMuX3BoeXNpY2FsU2l6ZTx0aGlzLl9vcHRQaHlzaWNhbFNpemUmJnRoaXMuX2RlYm91bmNlKCJfaW5jcmVhc2VQb29sSWZOZWVkZWQiLHRoaXMuX2luY3JlYXNlUG9vbElmTmVlZGVkLmJpbmQodGhpcyx0aGlzLl9jbGFtcChNYXRoLnJvdW5kKDUwL3RoaXMuX3RlbXBsYXRlQ29zdCksMSxyKSkseXQpOnRoaXMuX2RlYm91bmNlKCJfaW5jcmVhc2VQb29sSWZOZWVkZWQiLHRoaXMuX2luY3JlYXNlUG9vbElmTmVlZGVkLmJpbmQodGhpcyxyKSx2dCkpfX0sX3JlbmRlcjpmdW5jdGlvbigpe2lmKHRoaXMuaXNBdHRhY2hlZCYmdGhpcy5faXNWaXNpYmxlKWlmKDAhPT10aGlzLl9waHlzaWNhbENvdW50KXt2YXIgdD10aGlzLl9nZXRSZXVzYWJsZXMoITApO3RoaXMuX3BoeXNpY2FsVG9wPXQucGh5c2ljYWxUb3AsdGhpcy5fdmlydHVhbFN0YXJ0PXRoaXMuX3ZpcnR1YWxTdGFydCt0LmluZGV4ZXMubGVuZ3RoLHRoaXMuX3BoeXNpY2FsU3RhcnQ9dGhpcy5fcGh5c2ljYWxTdGFydCt0LmluZGV4ZXMubGVuZ3RoLHRoaXMuX3VwZGF0ZSh0LmluZGV4ZXMpLHRoaXMuX3VwZGF0ZSgpLHRoaXMuX2luY3JlYXNlUG9vbElmTmVlZGVkKDApfWVsc2UgdGhpcy5fdmlydHVhbENvdW50PjAmJih0aGlzLnVwZGF0ZVZpZXdwb3J0Qm91bmRhcmllcygpLHRoaXMuX2luY3JlYXNlUG9vbElmTmVlZGVkKDMpKX0sX2Vuc3VyZVRlbXBsYXRpemVkOmZ1bmN0aW9uKCl7aWYoIXRoaXMuY3Rvcil7dGhpcy5fdXNlclRlbXBsYXRlPXRoaXMucXVlcnlFZmZlY3RpdmVDaGlsZHJlbigidGVtcGxhdGUiKSx0aGlzLl91c2VyVGVtcGxhdGV8fGNvbnNvbGUud2FybigiaXJvbi1saXN0IHJlcXVpcmVzIGEgdGVtcGxhdGUgdG8gYmUgcHJvdmlkZWQgaW4gbGlnaHQtZG9tIik7dmFyIHQ9e19fa2V5X186ITB9O3RbdGhpcy5hc109ITAsdFt0aGlzLmluZGV4QXNdPSEwLHRbdGhpcy5zZWxlY3RlZEFzXT0hMCx0LnRhYkluZGV4PSEwLHRoaXMuX2luc3RhbmNlUHJvcHM9dCx0aGlzLnRlbXBsYXRpemUodGhpcy5fdXNlclRlbXBsYXRlLHRoaXMubXV0YWJsZURhdGEpfX0sX2dyaWRDaGFuZ2VkOmZ1bmN0aW9uKHQsZSl7dm9pZCAwIT09ZSYmKHRoaXMubm90aWZ5UmVzaXplKCksemkoKSx0JiZ0aGlzLl91cGRhdGVHcmlkTWV0cmljcygpKX0sX2l0ZW1zQ2hhbmdlZDpmdW5jdGlvbih0KXtpZigiaXRlbXMiPT09dC5wYXRoKXRoaXMuX3ZpcnR1YWxTdGFydD0wLHRoaXMuX3BoeXNpY2FsVG9wPTAsdGhpcy5fdmlydHVhbENvdW50PXRoaXMuaXRlbXM/dGhpcy5pdGVtcy5sZW5ndGg6MCx0aGlzLl9waHlzaWNhbEluZGV4Rm9yS2V5PXt9LHRoaXMuX2ZpcnN0VmlzaWJsZUluZGV4VmFsPW51bGwsdGhpcy5fbGFzdFZpc2libGVJbmRleFZhbD1udWxsLHRoaXMuX3BoeXNpY2FsQ291bnQ9dGhpcy5fcGh5c2ljYWxDb3VudHx8MCx0aGlzLl9waHlzaWNhbEl0ZW1zPXRoaXMuX3BoeXNpY2FsSXRlbXN8fFtdLHRoaXMuX3BoeXNpY2FsU2l6ZXM9dGhpcy5fcGh5c2ljYWxTaXplc3x8W10sdGhpcy5fcGh5c2ljYWxTdGFydD0wLHRoaXMuX3Njcm9sbFRvcD50aGlzLl9zY3JvbGxPZmZzZXQmJnRoaXMuX3Jlc2V0U2Nyb2xsUG9zaXRpb24oMCksdGhpcy5fcmVtb3ZlRm9jdXNlZEl0ZW0oKSx0aGlzLl9kZWJvdW5jZSgiX3JlbmRlciIsdGhpcy5fcmVuZGVyLF90KTtlbHNlIGlmKCJpdGVtcy5zcGxpY2VzIj09PXQucGF0aCl7aWYodGhpcy5fYWRqdXN0VmlydHVhbEluZGV4KHQudmFsdWUuaW5kZXhTcGxpY2VzKSx0aGlzLl92aXJ0dWFsQ291bnQ9dGhpcy5pdGVtcz90aGlzLml0ZW1zLmxlbmd0aDowLHQudmFsdWUuaW5kZXhTcGxpY2VzLnNvbWUoKGZ1bmN0aW9uKHQpe3JldHVybiB0LmFkZGVkQ291bnQ+MHx8dC5yZW1vdmVkLmxlbmd0aD4wfSkpKXt2YXIgZT10aGlzLl9nZXRBY3RpdmVFbGVtZW50KCk7dGhpcy5jb250YWlucyhlKSYmZS5ibHVyKCl9dmFyIG49dC52YWx1ZS5pbmRleFNwbGljZXMuc29tZSgoZnVuY3Rpb24odCl7cmV0dXJuIHQuaW5kZXgrdC5hZGRlZENvdW50Pj10aGlzLl92aXJ0dWFsU3RhcnQmJnQuaW5kZXg8PXRoaXMuX3ZpcnR1YWxFbmR9KSx0aGlzKTt0aGlzLl9pc0NsaWVudEZ1bGwoKSYmIW58fHRoaXMuX2RlYm91bmNlKCJfcmVuZGVyIix0aGlzLl9yZW5kZXIsX3QpfWVsc2UiaXRlbXMubGVuZ3RoIiE9PXQucGF0aCYmdGhpcy5fZm9yd2FyZEl0ZW1QYXRoKHQucGF0aCx0LnZhbHVlKX0sX2ZvcndhcmRJdGVtUGF0aDpmdW5jdGlvbih0LGUpe3ZhciBuLGkscixvPSh0PXQuc2xpY2UoNikpLmluZGV4T2YoIi4iKTstMT09PW8mJihvPXQubGVuZ3RoKTt2YXIgYT10aGlzLm1vZGVsRm9yRWxlbWVudCh0aGlzLl9vZmZzY3JlZW5Gb2N1c2VkSXRlbSkscz1wYXJzZUludCh0LnN1YnN0cmluZygwLG8pLDEwKTsobj10aGlzLl9pc0luZGV4UmVuZGVyZWQocykpPyhpPXRoaXMuX2dldFBoeXNpY2FsSW5kZXgocykscj10aGlzLm1vZGVsRm9yRWxlbWVudCh0aGlzLl9waHlzaWNhbEl0ZW1zW2ldKSk6YSYmKHI9YSksciYmclt0aGlzLmluZGV4QXNdPT09cyYmKHQ9dC5zdWJzdHJpbmcobysxKSxyLl9zZXRQZW5kaW5nUHJvcGVydHlPclBhdGgodD10aGlzLmFzKyh0PyIuIit0OiIiKSxlLCExLCEwKSxyLl9mbHVzaFByb3BlcnRpZXMmJnIuX2ZsdXNoUHJvcGVydGllcygpLG4mJih0aGlzLl91cGRhdGVNZXRyaWNzKFtpXSksdGhpcy5fcG9zaXRpb25JdGVtcygpLHRoaXMuX3VwZGF0ZVNjcm9sbGVyU2l6ZSgpKSl9LF9hZGp1c3RWaXJ0dWFsSW5kZXg6ZnVuY3Rpb24odCl7dC5mb3JFYWNoKChmdW5jdGlvbih0KXtpZih0LnJlbW92ZWQuZm9yRWFjaCh0aGlzLl9yZW1vdmVJdGVtLHRoaXMpLHQuaW5kZXg8dGhpcy5fdmlydHVhbFN0YXJ0KXt2YXIgZT1NYXRoLm1heCh0LmFkZGVkQ291bnQtdC5yZW1vdmVkLmxlbmd0aCx0LmluZGV4LXRoaXMuX3ZpcnR1YWxTdGFydCk7dGhpcy5fdmlydHVhbFN0YXJ0PXRoaXMuX3ZpcnR1YWxTdGFydCtlLHRoaXMuX2ZvY3VzZWRWaXJ0dWFsSW5kZXg+PTAmJih0aGlzLl9mb2N1c2VkVmlydHVhbEluZGV4PXRoaXMuX2ZvY3VzZWRWaXJ0dWFsSW5kZXgrZSl9fSksdGhpcyl9LF9yZW1vdmVJdGVtOmZ1bmN0aW9uKHQpe3RoaXMuJC5zZWxlY3Rvci5kZXNlbGVjdCh0KSx0aGlzLl9mb2N1c2VkSXRlbSYmdGhpcy5tb2RlbEZvckVsZW1lbnQodGhpcy5fZm9jdXNlZEl0ZW0pW3RoaXMuYXNdPT09dCYmdGhpcy5fcmVtb3ZlRm9jdXNlZEl0ZW0oKX0sX2l0ZXJhdGVJdGVtczpmdW5jdGlvbih0LGUpe3ZhciBuLGkscixvO2lmKDI9PT1hcmd1bWVudHMubGVuZ3RoJiZlKXtmb3Iobz0wO288ZS5sZW5ndGg7bysrKWlmKGk9dGhpcy5fY29tcHV0ZVZpZHgobj1lW29dKSxudWxsIT0ocj10LmNhbGwodGhpcyxuLGkpKSlyZXR1cm4gcn1lbHNle2ZvcihuPXRoaXMuX3BoeXNpY2FsU3RhcnQsaT10aGlzLl92aXJ0dWFsU3RhcnQ7bjx0aGlzLl9waHlzaWNhbENvdW50O24rKyxpKyspaWYobnVsbCE9KHI9dC5jYWxsKHRoaXMsbixpKSkpcmV0dXJuIHI7Zm9yKG49MDtuPHRoaXMuX3BoeXNpY2FsU3RhcnQ7bisrLGkrKylpZihudWxsIT0ocj10LmNhbGwodGhpcyxuLGkpKSlyZXR1cm4gcn19LF9jb21wdXRlVmlkeDpmdW5jdGlvbih0KXtyZXR1cm4gdD49dGhpcy5fcGh5c2ljYWxTdGFydD90aGlzLl92aXJ0dWFsU3RhcnQrKHQtdGhpcy5fcGh5c2ljYWxTdGFydCk6dGhpcy5fdmlydHVhbFN0YXJ0Kyh0aGlzLl9waHlzaWNhbENvdW50LXRoaXMuX3BoeXNpY2FsU3RhcnQpK3R9LF9hc3NpZ25Nb2RlbHM6ZnVuY3Rpb24odCl7dGhpcy5faXRlcmF0ZUl0ZW1zKChmdW5jdGlvbih0LGUpe3ZhciBuPXRoaXMuX3BoeXNpY2FsSXRlbXNbdF0saT10aGlzLml0ZW1zJiZ0aGlzLml0ZW1zW2VdO2lmKG51bGwhPWkpe3ZhciByPXRoaXMubW9kZWxGb3JFbGVtZW50KG4pO3IuX19rZXlfXz1udWxsLHRoaXMuX2ZvcndhcmRQcm9wZXJ0eShyLHRoaXMuYXMsaSksdGhpcy5fZm9yd2FyZFByb3BlcnR5KHIsdGhpcy5zZWxlY3RlZEFzLHRoaXMuJC5zZWxlY3Rvci5pc1NlbGVjdGVkKGkpKSx0aGlzLl9mb3J3YXJkUHJvcGVydHkocix0aGlzLmluZGV4QXMsZSksdGhpcy5fZm9yd2FyZFByb3BlcnR5KHIsInRhYkluZGV4Iix0aGlzLl9mb2N1c2VkVmlydHVhbEluZGV4PT09ZT8wOi0xKSx0aGlzLl9waHlzaWNhbEluZGV4Rm9yS2V5W3IuX19rZXlfX109dCxyLl9mbHVzaFByb3BlcnRpZXMmJnIuX2ZsdXNoUHJvcGVydGllcyghMCksbi5yZW1vdmVBdHRyaWJ1dGUoImhpZGRlbiIpfWVsc2Ugbi5zZXRBdHRyaWJ1dGUoImhpZGRlbiIsIiIpfSksdCl9LF91cGRhdGVNZXRyaWNzOmZ1bmN0aW9uKHQpe3ppKCk7dmFyIGU9MCxuPTAsaT10aGlzLl9waHlzaWNhbEF2ZXJhZ2VDb3VudCxyPXRoaXMuX3BoeXNpY2FsQXZlcmFnZTt0aGlzLl9pdGVyYXRlSXRlbXMoKGZ1bmN0aW9uKHQsaSl7bis9dGhpcy5fcGh5c2ljYWxTaXplc1t0XSx0aGlzLl9waHlzaWNhbFNpemVzW3RdPXRoaXMuX3BoeXNpY2FsSXRlbXNbdF0ub2Zmc2V0SGVpZ2h0LGUrPXRoaXMuX3BoeXNpY2FsU2l6ZXNbdF0sdGhpcy5fcGh5c2ljYWxBdmVyYWdlQ291bnQrPXRoaXMuX3BoeXNpY2FsU2l6ZXNbdF0/MTowfSksdCksdGhpcy5ncmlkPyh0aGlzLl91cGRhdGVHcmlkTWV0cmljcygpLHRoaXMuX3BoeXNpY2FsU2l6ZT1NYXRoLmNlaWwodGhpcy5fcGh5c2ljYWxDb3VudC90aGlzLl9pdGVtc1BlclJvdykqdGhpcy5fcm93SGVpZ2h0KToobj0xPT09dGhpcy5faXRlbXNQZXJSb3c/bjpNYXRoLmNlaWwodGhpcy5fcGh5c2ljYWxDb3VudC90aGlzLl9pdGVtc1BlclJvdykqdGhpcy5fcm93SGVpZ2h0LHRoaXMuX3BoeXNpY2FsU2l6ZT10aGlzLl9waHlzaWNhbFNpemUrZS1uLHRoaXMuX2l0ZW1zUGVyUm93PTEpLHRoaXMuX3BoeXNpY2FsQXZlcmFnZUNvdW50IT09aSYmKHRoaXMuX3BoeXNpY2FsQXZlcmFnZT1NYXRoLnJvdW5kKChyKmkrZSkvdGhpcy5fcGh5c2ljYWxBdmVyYWdlQ291bnQpKX0sX3VwZGF0ZUdyaWRNZXRyaWNzOmZ1bmN0aW9uKCl7dGhpcy5faXRlbVdpZHRoPXRoaXMuX3BoeXNpY2FsQ291bnQ+MD90aGlzLl9waHlzaWNhbEl0ZW1zWzBdLmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpLndpZHRoOjIwMCx0aGlzLl9yb3dIZWlnaHQ9dGhpcy5fcGh5c2ljYWxDb3VudD4wP3RoaXMuX3BoeXNpY2FsSXRlbXNbMF0ub2Zmc2V0SGVpZ2h0OjIwMCx0aGlzLl9pdGVtc1BlclJvdz10aGlzLl9pdGVtV2lkdGg/TWF0aC5mbG9vcih0aGlzLl92aWV3cG9ydFdpZHRoL3RoaXMuX2l0ZW1XaWR0aCk6dGhpcy5faXRlbXNQZXJSb3d9LF9wb3NpdGlvbkl0ZW1zOmZ1bmN0aW9uKCl7dGhpcy5fYWRqdXN0U2Nyb2xsUG9zaXRpb24oKTt2YXIgdD10aGlzLl9waHlzaWNhbFRvcDtpZih0aGlzLmdyaWQpe3ZhciBlPSh0aGlzLl92aWV3cG9ydFdpZHRoLXRoaXMuX2l0ZW1zUGVyUm93KnRoaXMuX2l0ZW1XaWR0aCkvMjt0aGlzLl9pdGVyYXRlSXRlbXMoKGZ1bmN0aW9uKG4saSl7dmFyIHI9TWF0aC5mbG9vcihpJXRoaXMuX2l0ZW1zUGVyUm93KnRoaXMuX2l0ZW1XaWR0aCtlKTt0aGlzLl9pc1JUTCYmKHIqPS0xKSx0aGlzLnRyYW5zbGF0ZTNkKHIrInB4Iix0KyJweCIsMCx0aGlzLl9waHlzaWNhbEl0ZW1zW25dKSx0aGlzLl9zaG91bGRSZW5kZXJOZXh0Um93KGkpJiYodCs9dGhpcy5fcm93SGVpZ2h0KX0pKX1lbHNle2NvbnN0IGU9W107dGhpcy5faXRlcmF0ZUl0ZW1zKChmdW5jdGlvbihuLGkpe2NvbnN0IHI9dGhpcy5fcGh5c2ljYWxJdGVtc1tuXTt0aGlzLnRyYW5zbGF0ZTNkKDAsdCsicHgiLDAsciksdCs9dGhpcy5fcGh5c2ljYWxTaXplc1tuXTtjb25zdCBvPXIuaWQ7byYmZS5wdXNoKG8pfSkpLGUubGVuZ3RoJiZ0aGlzLnNldEF0dHJpYnV0ZSgiYXJpYS1vd25zIixlLmpvaW4oIiAiKSl9fSxfZ2V0UGh5c2ljYWxTaXplSW5jcmVtZW50OmZ1bmN0aW9uKHQpe3JldHVybiB0aGlzLmdyaWQ/dGhpcy5fY29tcHV0ZVZpZHgodCkldGhpcy5faXRlbXNQZXJSb3chPXRoaXMuX2l0ZW1zUGVyUm93LTE/MDp0aGlzLl9yb3dIZWlnaHQ6dGhpcy5fcGh5c2ljYWxTaXplc1t0XX0sX3Nob3VsZFJlbmRlck5leHRSb3c6ZnVuY3Rpb24odCl7cmV0dXJuIHQldGhpcy5faXRlbXNQZXJSb3c9PXRoaXMuX2l0ZW1zUGVyUm93LTF9LF9hZGp1c3RTY3JvbGxQb3NpdGlvbjpmdW5jdGlvbigpe3ZhciB0PTA9PT10aGlzLl92aXJ0dWFsU3RhcnQ/dGhpcy5fcGh5c2ljYWxUb3A6TWF0aC5taW4odGhpcy5fc2Nyb2xsUG9zaXRpb24rdGhpcy5fcGh5c2ljYWxUb3AsMCk7aWYoMCE9PXQpe3RoaXMuX3BoeXNpY2FsVG9wPXRoaXMuX3BoeXNpY2FsVG9wLXQ7dmFyIGU9dGhpcy5fc2Nyb2xsUG9zaXRpb247IUJvJiZlPjAmJnRoaXMuX3Jlc2V0U2Nyb2xsUG9zaXRpb24oZS10KX19LF9yZXNldFNjcm9sbFBvc2l0aW9uOmZ1bmN0aW9uKHQpe3RoaXMuc2Nyb2xsVGFyZ2V0JiZ0Pj0wJiYodGhpcy5fc2Nyb2xsVG9wPXQsdGhpcy5fc2Nyb2xsUG9zaXRpb249dGhpcy5fc2Nyb2xsVG9wKX0sX3VwZGF0ZVNjcm9sbGVyU2l6ZTpmdW5jdGlvbih0KXt0aGlzLl9lc3RTY3JvbGxIZWlnaHQ9dGhpcy5ncmlkP3RoaXMuX3ZpcnR1YWxSb3dDb3VudCp0aGlzLl9yb3dIZWlnaHQ6dGhpcy5fcGh5c2ljYWxCb3R0b20rTWF0aC5tYXgodGhpcy5fdmlydHVhbENvdW50LXRoaXMuX3BoeXNpY2FsQ291bnQtdGhpcy5fdmlydHVhbFN0YXJ0LDApKnRoaXMuX3BoeXNpY2FsQXZlcmFnZSwoKHQ9KHQ9KHQ9dHx8MD09PXRoaXMuX3Njcm9sbEhlaWdodCl8fHRoaXMuX3Njcm9sbFBvc2l0aW9uPj10aGlzLl9lc3RTY3JvbGxIZWlnaHQtdGhpcy5fcGh5c2ljYWxTaXplKXx8dGhpcy5ncmlkJiZ0aGlzLiQuaXRlbXMuc3R5bGUuaGVpZ2h0PHRoaXMuX2VzdFNjcm9sbEhlaWdodCl8fE1hdGguYWJzKHRoaXMuX2VzdFNjcm9sbEhlaWdodC10aGlzLl9zY3JvbGxIZWlnaHQpPj10aGlzLl92aWV3cG9ydEhlaWdodCkmJih0aGlzLiQuaXRlbXMuc3R5bGUuaGVpZ2h0PXRoaXMuX2VzdFNjcm9sbEhlaWdodCsicHgiLHRoaXMuX3Njcm9sbEhlaWdodD10aGlzLl9lc3RTY3JvbGxIZWlnaHQpfSxzY3JvbGxUb0l0ZW06ZnVuY3Rpb24odCl7cmV0dXJuIHRoaXMuc2Nyb2xsVG9JbmRleCh0aGlzLml0ZW1zLmluZGV4T2YodCkpfSxzY3JvbGxUb0luZGV4OmZ1bmN0aW9uKHQpe2lmKCEoIm51bWJlciIhPXR5cGVvZiB0fHx0PDB8fHQ+dGhpcy5pdGVtcy5sZW5ndGgtMSkmJih6aSgpLDAhPT10aGlzLl9waHlzaWNhbENvdW50KSl7dD10aGlzLl9jbGFtcCh0LDAsdGhpcy5fdmlydHVhbENvdW50LTEpLCghdGhpcy5faXNJbmRleFJlbmRlcmVkKHQpfHx0Pj10aGlzLl9tYXhWaXJ0dWFsU3RhcnQpJiYodGhpcy5fdmlydHVhbFN0YXJ0PXRoaXMuZ3JpZD90LTIqdGhpcy5faXRlbXNQZXJSb3c6dC0xKSx0aGlzLl9tYW5hZ2VGb2N1cygpLHRoaXMuX2Fzc2lnbk1vZGVscygpLHRoaXMuX3VwZGF0ZU1ldHJpY3MoKSx0aGlzLl9waHlzaWNhbFRvcD1NYXRoLmZsb29yKHRoaXMuX3ZpcnR1YWxTdGFydC90aGlzLl9pdGVtc1BlclJvdykqdGhpcy5fcGh5c2ljYWxBdmVyYWdlO2Zvcih2YXIgZT10aGlzLl9waHlzaWNhbFN0YXJ0LG49dGhpcy5fdmlydHVhbFN0YXJ0LGk9MCxyPXRoaXMuX2hpZGRlbkNvbnRlbnRTaXplO248dCYmaTw9cjspaSs9dGhpcy5fZ2V0UGh5c2ljYWxTaXplSW5jcmVtZW50KGUpLGU9KGUrMSkldGhpcy5fcGh5c2ljYWxDb3VudCxuKys7dGhpcy5fdXBkYXRlU2Nyb2xsZXJTaXplKCEwKSx0aGlzLl9wb3NpdGlvbkl0ZW1zKCksdGhpcy5fcmVzZXRTY3JvbGxQb3NpdGlvbih0aGlzLl9waHlzaWNhbFRvcCt0aGlzLl9zY3JvbGxPZmZzZXQraSksdGhpcy5faW5jcmVhc2VQb29sSWZOZWVkZWQoMCksdGhpcy5fZmlyc3RWaXNpYmxlSW5kZXhWYWw9bnVsbCx0aGlzLl9sYXN0VmlzaWJsZUluZGV4VmFsPW51bGx9fSxfcmVzZXRBdmVyYWdlOmZ1bmN0aW9uKCl7dGhpcy5fcGh5c2ljYWxBdmVyYWdlPTAsdGhpcy5fcGh5c2ljYWxBdmVyYWdlQ291bnQ9MH0sX3Jlc2l6ZUhhbmRsZXI6ZnVuY3Rpb24oKXt0aGlzLl9kZWJvdW5jZSgiX3JlbmRlciIsKGZ1bmN0aW9uKCl7dGhpcy5fZmlyc3RWaXNpYmxlSW5kZXhWYWw9bnVsbCx0aGlzLl9sYXN0VmlzaWJsZUluZGV4VmFsPW51bGwsdGhpcy5faXNWaXNpYmxlPyh0aGlzLnVwZGF0ZVZpZXdwb3J0Qm91bmRhcmllcygpLHRoaXMudG9nZ2xlU2Nyb2xsTGlzdGVuZXIoITApLHRoaXMuX3Jlc2V0QXZlcmFnZSgpLHRoaXMuX3JlbmRlcigpKTp0aGlzLnRvZ2dsZVNjcm9sbExpc3RlbmVyKCExKX0pLF90KX0sc2VsZWN0SXRlbTpmdW5jdGlvbih0KXtyZXR1cm4gdGhpcy5zZWxlY3RJbmRleCh0aGlzLml0ZW1zLmluZGV4T2YodCkpfSxzZWxlY3RJbmRleDpmdW5jdGlvbih0KXtpZighKHQ8MHx8dD49dGhpcy5fdmlydHVhbENvdW50KSl7aWYoIXRoaXMubXVsdGlTZWxlY3Rpb24mJnRoaXMuc2VsZWN0ZWRJdGVtJiZ0aGlzLmNsZWFyU2VsZWN0aW9uKCksdGhpcy5faXNJbmRleFJlbmRlcmVkKHQpKXt2YXIgZT10aGlzLm1vZGVsRm9yRWxlbWVudCh0aGlzLl9waHlzaWNhbEl0ZW1zW3RoaXMuX2dldFBoeXNpY2FsSW5kZXgodCldKTtlJiYoZVt0aGlzLnNlbGVjdGVkQXNdPSEwKSx0aGlzLnVwZGF0ZVNpemVGb3JJbmRleCh0KX10aGlzLiQuc2VsZWN0b3Iuc2VsZWN0SW5kZXgodCl9fSxkZXNlbGVjdEl0ZW06ZnVuY3Rpb24odCl7cmV0dXJuIHRoaXMuZGVzZWxlY3RJbmRleCh0aGlzLml0ZW1zLmluZGV4T2YodCkpfSxkZXNlbGVjdEluZGV4OmZ1bmN0aW9uKHQpe3Q8MHx8dD49dGhpcy5fdmlydHVhbENvdW50fHwodGhpcy5faXNJbmRleFJlbmRlcmVkKHQpJiYodGhpcy5tb2RlbEZvckVsZW1lbnQodGhpcy5fcGh5c2ljYWxJdGVtc1t0aGlzLl9nZXRQaHlzaWNhbEluZGV4KHQpXSlbdGhpcy5zZWxlY3RlZEFzXT0hMSx0aGlzLnVwZGF0ZVNpemVGb3JJbmRleCh0KSksdGhpcy4kLnNlbGVjdG9yLmRlc2VsZWN0SW5kZXgodCkpfSx0b2dnbGVTZWxlY3Rpb25Gb3JJdGVtOmZ1bmN0aW9uKHQpe3JldHVybiB0aGlzLnRvZ2dsZVNlbGVjdGlvbkZvckluZGV4KHRoaXMuaXRlbXMuaW5kZXhPZih0KSl9LHRvZ2dsZVNlbGVjdGlvbkZvckluZGV4OmZ1bmN0aW9uKHQpeyh0aGlzLiQuc2VsZWN0b3IuaXNJbmRleFNlbGVjdGVkP3RoaXMuJC5zZWxlY3Rvci5pc0luZGV4U2VsZWN0ZWQodCk6dGhpcy4kLnNlbGVjdG9yLmlzU2VsZWN0ZWQodGhpcy5pdGVtc1t0XSkpP3RoaXMuZGVzZWxlY3RJbmRleCh0KTp0aGlzLnNlbGVjdEluZGV4KHQpfSxjbGVhclNlbGVjdGlvbjpmdW5jdGlvbigpe3RoaXMuX2l0ZXJhdGVJdGVtcygoZnVuY3Rpb24odCxlKXt0aGlzLm1vZGVsRm9yRWxlbWVudCh0aGlzLl9waHlzaWNhbEl0ZW1zW3RdKVt0aGlzLnNlbGVjdGVkQXNdPSExfSkpLHRoaXMuJC5zZWxlY3Rvci5jbGVhclNlbGVjdGlvbigpfSxfc2VsZWN0aW9uRW5hYmxlZENoYW5nZWQ6ZnVuY3Rpb24odCl7KHQ/dGhpcy5saXN0ZW46dGhpcy51bmxpc3RlbikuY2FsbCh0aGlzLHRoaXMsInRhcCIsIl9zZWxlY3Rpb25IYW5kbGVyIil9LF9zZWxlY3Rpb25IYW5kbGVyOmZ1bmN0aW9uKHQpe3ZhciBlPXRoaXMubW9kZWxGb3JFbGVtZW50KHQudGFyZ2V0KTtpZihlKXt2YXIgbixpLHI9cWkodCkucGF0aFswXSxvPXRoaXMuX2dldEFjdGl2ZUVsZW1lbnQoKSxhPXRoaXMuX3BoeXNpY2FsSXRlbXNbdGhpcy5fZ2V0UGh5c2ljYWxJbmRleChlW3RoaXMuaW5kZXhBc10pXTsiaW5wdXQiIT09ci5sb2NhbE5hbWUmJiJidXR0b24iIT09ci5sb2NhbE5hbWUmJiJzZWxlY3QiIT09ci5sb2NhbE5hbWUmJihuPWUudGFiSW5kZXgsZS50YWJJbmRleD1GbyxpPW8/by50YWJJbmRleDotMSxlLnRhYkluZGV4PW4sbyYmYSE9PW8mJmEuY29udGFpbnMobykmJmkhPT1Gb3x8dGhpcy50b2dnbGVTZWxlY3Rpb25Gb3JJdGVtKGVbdGhpcy5hc10pKX19LF9tdWx0aVNlbGVjdGlvbkNoYW5nZWQ6ZnVuY3Rpb24odCl7dGhpcy5jbGVhclNlbGVjdGlvbigpLHRoaXMuJC5zZWxlY3Rvci5tdWx0aT10fSx1cGRhdGVTaXplRm9ySXRlbTpmdW5jdGlvbih0KXtyZXR1cm4gdGhpcy51cGRhdGVTaXplRm9ySW5kZXgodGhpcy5pdGVtcy5pbmRleE9mKHQpKX0sdXBkYXRlU2l6ZUZvckluZGV4OmZ1bmN0aW9uKHQpe3JldHVybiB0aGlzLl9pc0luZGV4UmVuZGVyZWQodCk/KHRoaXMuX3VwZGF0ZU1ldHJpY3MoW3RoaXMuX2dldFBoeXNpY2FsSW5kZXgodCldKSx0aGlzLl9wb3NpdGlvbkl0ZW1zKCksbnVsbCk6bnVsbH0sX21hbmFnZUZvY3VzOmZ1bmN0aW9uKCl7dmFyIHQ9dGhpcy5fZm9jdXNlZFZpcnR1YWxJbmRleDt0Pj0wJiZ0PHRoaXMuX3ZpcnR1YWxDb3VudD90aGlzLl9pc0luZGV4UmVuZGVyZWQodCk/dGhpcy5fcmVzdG9yZUZvY3VzZWRJdGVtKCk6dGhpcy5fY3JlYXRlRm9jdXNCYWNrZmlsbEl0ZW0oKTp0aGlzLl92aXJ0dWFsQ291bnQ+MCYmdGhpcy5fcGh5c2ljYWxDb3VudD4wJiYodGhpcy5fZm9jdXNlZFBoeXNpY2FsSW5kZXg9dGhpcy5fcGh5c2ljYWxTdGFydCx0aGlzLl9mb2N1c2VkVmlydHVhbEluZGV4PXRoaXMuX3ZpcnR1YWxTdGFydCx0aGlzLl9mb2N1c2VkSXRlbT10aGlzLl9waHlzaWNhbEl0ZW1zW3RoaXMuX3BoeXNpY2FsU3RhcnRdKX0sX2NvbnZlcnRJbmRleFRvQ29tcGxldGVSb3c6ZnVuY3Rpb24odCl7cmV0dXJuIHRoaXMuX2l0ZW1zUGVyUm93PXRoaXMuX2l0ZW1zUGVyUm93fHwxLHRoaXMuZ3JpZD9NYXRoLmNlaWwodC90aGlzLl9pdGVtc1BlclJvdykqdGhpcy5faXRlbXNQZXJSb3c6dH0sX2lzSW5kZXhSZW5kZXJlZDpmdW5jdGlvbih0KXtyZXR1cm4gdD49dGhpcy5fdmlydHVhbFN0YXJ0JiZ0PD10aGlzLl92aXJ0dWFsRW5kfSxfaXNJbmRleFZpc2libGU6ZnVuY3Rpb24odCl7cmV0dXJuIHQ+PXRoaXMuZmlyc3RWaXNpYmxlSW5kZXgmJnQ8PXRoaXMubGFzdFZpc2libGVJbmRleH0sX2dldFBoeXNpY2FsSW5kZXg6ZnVuY3Rpb24odCl7cmV0dXJuKHRoaXMuX3BoeXNpY2FsU3RhcnQrKHQtdGhpcy5fdmlydHVhbFN0YXJ0KSkldGhpcy5fcGh5c2ljYWxDb3VudH0sZm9jdXNJdGVtOmZ1bmN0aW9uKHQpe3RoaXMuX2ZvY3VzUGh5c2ljYWxJdGVtKHQpfSxfZm9jdXNQaHlzaWNhbEl0ZW06ZnVuY3Rpb24odCl7aWYoISh0PDB8fHQ+PXRoaXMuX3ZpcnR1YWxDb3VudCkpe3RoaXMuX3Jlc3RvcmVGb2N1c2VkSXRlbSgpLHRoaXMuX2lzSW5kZXhSZW5kZXJlZCh0KXx8dGhpcy5zY3JvbGxUb0luZGV4KHQpO3ZhciBlLG49dGhpcy5fcGh5c2ljYWxJdGVtc1t0aGlzLl9nZXRQaHlzaWNhbEluZGV4KHQpXSxpPXRoaXMubW9kZWxGb3JFbGVtZW50KG4pO2kudGFiSW5kZXg9Rm8sbi50YWJJbmRleD09PUZvJiYoZT1uKSxlfHwoZT1xaShuKS5xdWVyeVNlbGVjdG9yKCdbdGFiaW5kZXg9Ii0xMDAiXScpKSxpLnRhYkluZGV4PTAsdGhpcy5fZm9jdXNlZFZpcnR1YWxJbmRleD10LGUmJmUuZm9jdXMoKX19LF9yZW1vdmVGb2N1c2VkSXRlbTpmdW5jdGlvbigpe3RoaXMuX29mZnNjcmVlbkZvY3VzZWRJdGVtJiZ0aGlzLl9pdGVtc1BhcmVudC5yZW1vdmVDaGlsZCh0aGlzLl9vZmZzY3JlZW5Gb2N1c2VkSXRlbSksdGhpcy5fb2Zmc2NyZWVuRm9jdXNlZEl0ZW09bnVsbCx0aGlzLl9mb2N1c0JhY2tmaWxsSXRlbT1udWxsLHRoaXMuX2ZvY3VzZWRJdGVtPW51bGwsdGhpcy5fZm9jdXNlZFZpcnR1YWxJbmRleD0tMSx0aGlzLl9mb2N1c2VkUGh5c2ljYWxJbmRleD0tMX0sX2NyZWF0ZUZvY3VzQmFja2ZpbGxJdGVtOmZ1bmN0aW9uKCl7dmFyIHQ9dGhpcy5fZm9jdXNlZFBoeXNpY2FsSW5kZXg7aWYoISh0aGlzLl9vZmZzY3JlZW5Gb2N1c2VkSXRlbXx8dGhpcy5fZm9jdXNlZFZpcnR1YWxJbmRleDwwKSl7aWYoIXRoaXMuX2ZvY3VzQmFja2ZpbGxJdGVtKXt2YXIgZT10aGlzLnN0YW1wKG51bGwpO3RoaXMuX2ZvY3VzQmFja2ZpbGxJdGVtPWUucm9vdC5xdWVyeVNlbGVjdG9yKCIqIiksdGhpcy5faXRlbXNQYXJlbnQuYXBwZW5kQ2hpbGQoZS5yb290KX10aGlzLl9vZmZzY3JlZW5Gb2N1c2VkSXRlbT10aGlzLl9waHlzaWNhbEl0ZW1zW3RdLHRoaXMubW9kZWxGb3JFbGVtZW50KHRoaXMuX29mZnNjcmVlbkZvY3VzZWRJdGVtKS50YWJJbmRleD0wLHRoaXMuX3BoeXNpY2FsSXRlbXNbdF09dGhpcy5fZm9jdXNCYWNrZmlsbEl0ZW0sdGhpcy5fZm9jdXNlZFBoeXNpY2FsSW5kZXg9dCx0aGlzLnRyYW5zbGF0ZTNkKDAsSG8sMCx0aGlzLl9vZmZzY3JlZW5Gb2N1c2VkSXRlbSl9fSxfcmVzdG9yZUZvY3VzZWRJdGVtOmZ1bmN0aW9uKCl7aWYodGhpcy5fb2Zmc2NyZWVuRm9jdXNlZEl0ZW0mJiEodGhpcy5fZm9jdXNlZFZpcnR1YWxJbmRleDwwKSl7dGhpcy5fYXNzaWduTW9kZWxzKCk7dmFyIHQ9dGhpcy5fZm9jdXNlZFBoeXNpY2FsSW5kZXg9dGhpcy5fZ2V0UGh5c2ljYWxJbmRleCh0aGlzLl9mb2N1c2VkVmlydHVhbEluZGV4KSxlPXRoaXMuX3BoeXNpY2FsSXRlbXNbdF07aWYoZSl7dmFyIG49dGhpcy5tb2RlbEZvckVsZW1lbnQoZSksaT10aGlzLm1vZGVsRm9yRWxlbWVudCh0aGlzLl9vZmZzY3JlZW5Gb2N1c2VkSXRlbSk7blt0aGlzLmFzXT09PWlbdGhpcy5hc10/KHRoaXMuX2ZvY3VzQmFja2ZpbGxJdGVtPWUsbi50YWJJbmRleD0tMSx0aGlzLl9waHlzaWNhbEl0ZW1zW3RdPXRoaXMuX29mZnNjcmVlbkZvY3VzZWRJdGVtLHRoaXMudHJhbnNsYXRlM2QoMCxIbywwLHRoaXMuX2ZvY3VzQmFja2ZpbGxJdGVtKSk6KHRoaXMuX3JlbW92ZUZvY3VzZWRJdGVtKCksdGhpcy5fZm9jdXNCYWNrZmlsbEl0ZW09bnVsbCksdGhpcy5fb2Zmc2NyZWVuRm9jdXNlZEl0ZW09bnVsbH19fSxfZGlkRm9jdXM6ZnVuY3Rpb24odCl7dmFyIGU9dGhpcy5tb2RlbEZvckVsZW1lbnQodC50YXJnZXQpLG49dGhpcy5tb2RlbEZvckVsZW1lbnQodGhpcy5fZm9jdXNlZEl0ZW0pLGk9bnVsbCE9PXRoaXMuX29mZnNjcmVlbkZvY3VzZWRJdGVtLHI9dGhpcy5fZm9jdXNlZFZpcnR1YWxJbmRleDtlJiYobj09PWU/dGhpcy5faXNJbmRleFZpc2libGUocil8fHRoaXMuc2Nyb2xsVG9JbmRleChyKToodGhpcy5fcmVzdG9yZUZvY3VzZWRJdGVtKCksbiYmKG4udGFiSW5kZXg9LTEpLGUudGFiSW5kZXg9MCx0aGlzLl9mb2N1c2VkVmlydHVhbEluZGV4PXI9ZVt0aGlzLmluZGV4QXNdLHRoaXMuX2ZvY3VzZWRQaHlzaWNhbEluZGV4PXRoaXMuX2dldFBoeXNpY2FsSW5kZXgociksdGhpcy5fZm9jdXNlZEl0ZW09dGhpcy5fcGh5c2ljYWxJdGVtc1t0aGlzLl9mb2N1c2VkUGh5c2ljYWxJbmRleF0saSYmIXRoaXMuX29mZnNjcmVlbkZvY3VzZWRJdGVtJiZ0aGlzLl91cGRhdGUoKSkpfSxfa2V5ZG93bkhhbmRsZXI6ZnVuY3Rpb24odCl7c3dpdGNoKHQua2V5Q29kZSl7Y2FzZSA0MDp0aGlzLl9mb2N1c2VkVmlydHVhbEluZGV4PHRoaXMuX3ZpcnR1YWxDb3VudC0xJiZ0LnByZXZlbnREZWZhdWx0KCksdGhpcy5fZm9jdXNQaHlzaWNhbEl0ZW0odGhpcy5fZm9jdXNlZFZpcnR1YWxJbmRleCsodGhpcy5ncmlkP3RoaXMuX2l0ZW1zUGVyUm93OjEpKTticmVhaztjYXNlIDM5OnRoaXMuZ3JpZCYmdGhpcy5fZm9jdXNQaHlzaWNhbEl0ZW0odGhpcy5fZm9jdXNlZFZpcnR1YWxJbmRleCsodGhpcy5faXNSVEw/LTE6MSkpO2JyZWFrO2Nhc2UgMzg6dGhpcy5fZm9jdXNlZFZpcnR1YWxJbmRleD4wJiZ0LnByZXZlbnREZWZhdWx0KCksdGhpcy5fZm9jdXNQaHlzaWNhbEl0ZW0odGhpcy5fZm9jdXNlZFZpcnR1YWxJbmRleC0odGhpcy5ncmlkP3RoaXMuX2l0ZW1zUGVyUm93OjEpKTticmVhaztjYXNlIDM3OnRoaXMuZ3JpZCYmdGhpcy5fZm9jdXNQaHlzaWNhbEl0ZW0odGhpcy5fZm9jdXNlZFZpcnR1YWxJbmRleCsodGhpcy5faXNSVEw/MTotMSkpO2JyZWFrO2Nhc2UgMTM6dGhpcy5fZm9jdXNQaHlzaWNhbEl0ZW0odGhpcy5fZm9jdXNlZFZpcnR1YWxJbmRleCksdGhpcy5zZWxlY3Rpb25FbmFibGVkJiZ0aGlzLl9zZWxlY3Rpb25IYW5kbGVyKHQpfX0sX2NsYW1wOmZ1bmN0aW9uKHQsZSxuKXtyZXR1cm4gTWF0aC5taW4obixNYXRoLm1heChlLHQpKX0sX2RlYm91bmNlOmZ1bmN0aW9uKHQsZSxuKXt0aGlzLl9kZWJvdW5jZXJzPXRoaXMuX2RlYm91bmNlcnN8fHt9LHRoaXMuX2RlYm91bmNlcnNbdF09RW4uZGVib3VuY2UodGhpcy5fZGVib3VuY2Vyc1t0XSxuLGUuYmluZCh0aGlzKSksQW4odGhpcy5fZGVib3VuY2Vyc1t0XSl9LF9mb3J3YXJkUHJvcGVydHk6ZnVuY3Rpb24odCxlLG4pe3QuX3NldFBlbmRpbmdQcm9wZXJ0eShlLG4pfSxfZm9yd2FyZEhvc3RQcm9wVjI6ZnVuY3Rpb24odCxlKXsodGhpcy5fcGh5c2ljYWxJdGVtc3x8W10pLmNvbmNhdChbdGhpcy5fb2Zmc2NyZWVuRm9jdXNlZEl0ZW0sdGhpcy5fZm9jdXNCYWNrZmlsbEl0ZW1dKS5mb3JFYWNoKChmdW5jdGlvbihuKXtuJiZ0aGlzLm1vZGVsRm9yRWxlbWVudChuKS5mb3J3YXJkSG9zdFByb3AodCxlKX0pLHRoaXMpfSxfbm90aWZ5SW5zdGFuY2VQcm9wVjI6ZnVuY3Rpb24odCxlLG4pe2lmKFEodGhpcy5hcyxlKSl7dmFyIGk9dFt0aGlzLmluZGV4QXNdO2U9PXRoaXMuYXMmJih0aGlzLml0ZW1zW2ldPW4pLHRoaXMubm90aWZ5UGF0aChKKHRoaXMuYXMsIml0ZW1zLiIraSxlKSxuKX19LF9nZXRTdGFtcGVkQ2hpbGRyZW46ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5fcGh5c2ljYWxJdGVtc30sX2ZvcndhcmRJbnN0YW5jZVBhdGg6ZnVuY3Rpb24odCxlLG4pezA9PT1lLmluZGV4T2YodGhpcy5hcysiLiIpJiZ0aGlzLm5vdGlmeVBhdGgoIml0ZW1zLiIrdC5fX2tleV9fKyIuIitlLnNsaWNlKHRoaXMuYXMubGVuZ3RoKzEpLG4pfSxfZm9yd2FyZFBhcmVudFBhdGg6ZnVuY3Rpb24odCxlKXsodGhpcy5fcGh5c2ljYWxJdGVtc3x8W10pLmNvbmNhdChbdGhpcy5fb2Zmc2NyZWVuRm9jdXNlZEl0ZW0sdGhpcy5fZm9jdXNCYWNrZmlsbEl0ZW1dKS5mb3JFYWNoKChmdW5jdGlvbihuKXtuJiZ0aGlzLm1vZGVsRm9yRWxlbWVudChuKS5ub3RpZnlQYXRoKHQsZSl9KSx0aGlzKX0sX2ZvcndhcmRQYXJlbnRQcm9wOmZ1bmN0aW9uKHQsZSl7KHRoaXMuX3BoeXNpY2FsSXRlbXN8fFtdKS5jb25jYXQoW3RoaXMuX29mZnNjcmVlbkZvY3VzZWRJdGVtLHRoaXMuX2ZvY3VzQmFja2ZpbGxJdGVtXSkuZm9yRWFjaCgoZnVuY3Rpb24obil7biYmKHRoaXMubW9kZWxGb3JFbGVtZW50KG4pW3RdPWUpfSksdGhpcyl9LF9nZXRBY3RpdmVFbGVtZW50OmZ1bmN0aW9uKCl7dmFyIHQ9dGhpcy5faXRlbXNQYXJlbnQubm9kZS5kb21Ib3N0O3JldHVybiBxaSh0P3Qucm9vdDpkb2N1bWVudCkuYWN0aXZlRWxlbWVudH19KTsKLyoqCiAgICBAbGljZW5zZQogICAgQ29weXJpZ2h0IChjKSAyMDE1IFRoZSBQb2x5bWVyIFByb2plY3QgQXV0aG9ycy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAgIFRoaXMgY29kZSBtYXkgb25seSBiZSB1c2VkIHVuZGVyIHRoZSBCU0Qgc3R5bGUgbGljZW5zZSBmb3VuZCBhdAogICAgaHR0cDovL3BvbHltZXIuZ2l0aHViLmlvL0xJQ0VOU0UudHh0IFRoZSBjb21wbGV0ZSBzZXQgb2YgYXV0aG9ycyBtYXkgYmUgZm91bmQgYXQKICAgIGh0dHA6Ly9wb2x5bWVyLmdpdGh1Yi5pby9BVVRIT1JTLnR4dCBUaGUgY29tcGxldGUgc2V0IG9mIGNvbnRyaWJ1dG9ycyBtYXkgYmUKICAgIGZvdW5kIGF0IGh0dHA6Ly9wb2x5bWVyLmdpdGh1Yi5pby9DT05UUklCVVRPUlMudHh0IENvZGUgZGlzdHJpYnV0ZWQgYnkgR29vZ2xlIGFzCiAgICBwYXJ0IG9mIHRoZSBwb2x5bWVyIHByb2plY3QgaXMgYWxzbyBzdWJqZWN0IHRvIGFuIGFkZGl0aW9uYWwgSVAgcmlnaHRzIGdyYW50CiAgICBmb3VuZCBhdCBodHRwOi8vcG9seW1lci5naXRodWIuaW8vUEFURU5UUy50eHQKICAgICovCmNsYXNzIFZve2NvbnN0cnVjdG9yKHQpe3RoaXMuc2VsZWN0aW9uPVtdLHRoaXMuc2VsZWN0Q2FsbGJhY2s9dH1nZXQoKXtyZXR1cm4gdGhpcy5tdWx0aT90aGlzLnNlbGVjdGlvbi5zbGljZSgpOnRoaXMuc2VsZWN0aW9uWzBdfWNsZWFyKHQpe3RoaXMuc2VsZWN0aW9uLnNsaWNlKCkuZm9yRWFjaCgoZnVuY3Rpb24oZSl7KCF0fHx0LmluZGV4T2YoZSk8MCkmJnRoaXMuc2V0SXRlbVNlbGVjdGVkKGUsITEpfSksdGhpcyl9aXNTZWxlY3RlZCh0KXtyZXR1cm4gdGhpcy5zZWxlY3Rpb24uaW5kZXhPZih0KT49MH1zZXRJdGVtU2VsZWN0ZWQodCxlKXtpZihudWxsIT10JiZlIT09dGhpcy5pc1NlbGVjdGVkKHQpKXtpZihlKXRoaXMuc2VsZWN0aW9uLnB1c2godCk7ZWxzZXt2YXIgbj10aGlzLnNlbGVjdGlvbi5pbmRleE9mKHQpO24+PTAmJnRoaXMuc2VsZWN0aW9uLnNwbGljZShuLDEpfXRoaXMuc2VsZWN0Q2FsbGJhY2smJnRoaXMuc2VsZWN0Q2FsbGJhY2sodCxlKX19c2VsZWN0KHQpe3RoaXMubXVsdGk/dGhpcy50b2dnbGUodCk6dGhpcy5nZXQoKSE9PXQmJih0aGlzLnNldEl0ZW1TZWxlY3RlZCh0aGlzLmdldCgpLCExKSx0aGlzLnNldEl0ZW1TZWxlY3RlZCh0LCEwKSl9dG9nZ2xlKHQpe3RoaXMuc2V0SXRlbVNlbGVjdGVkKHQsIXRoaXMuaXNTZWxlY3RlZCh0KSl9fQovKioKICAgIEBsaWNlbnNlCiAgICBDb3B5cmlnaHQgKGMpIDIwMTUgVGhlIFBvbHltZXIgUHJvamVjdCBBdXRob3JzLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICAgVGhpcyBjb2RlIG1heSBvbmx5IGJlIHVzZWQgdW5kZXIgdGhlIEJTRCBzdHlsZSBsaWNlbnNlIGZvdW5kIGF0CiAgICBodHRwOi8vcG9seW1lci5naXRodWIuaW8vTElDRU5TRS50eHQgVGhlIGNvbXBsZXRlIHNldCBvZiBhdXRob3JzIG1heSBiZSBmb3VuZCBhdAogICAgaHR0cDovL3BvbHltZXIuZ2l0aHViLmlvL0FVVEhPUlMudHh0IFRoZSBjb21wbGV0ZSBzZXQgb2YgY29udHJpYnV0b3JzIG1heSBiZQogICAgZm91bmQgYXQgaHR0cDovL3BvbHltZXIuZ2l0aHViLmlvL0NPTlRSSUJVVE9SUy50eHQgQ29kZSBkaXN0cmlidXRlZCBieSBHb29nbGUgYXMKICAgIHBhcnQgb2YgdGhlIHBvbHltZXIgcHJvamVjdCBpcyBhbHNvIHN1YmplY3QgdG8gYW4gYWRkaXRpb25hbCBJUCByaWdodHMgZ3JhbnQKICAgIGZvdW5kIGF0IGh0dHA6Ly9wb2x5bWVyLmdpdGh1Yi5pby9QQVRFTlRTLnR4dAogICAgKi9jb25zdCBqbz17cHJvcGVydGllczp7YXR0ckZvclNlbGVjdGVkOnt0eXBlOlN0cmluZyx2YWx1ZTpudWxsfSxzZWxlY3RlZDp7dHlwZTpTdHJpbmcsbm90aWZ5OiEwfSxzZWxlY3RlZEl0ZW06e3R5cGU6T2JqZWN0LHJlYWRPbmx5OiEwLG5vdGlmeTohMH0sYWN0aXZhdGVFdmVudDp7dHlwZTpTdHJpbmcsdmFsdWU6InRhcCIsb2JzZXJ2ZXI6Il9hY3RpdmF0ZUV2ZW50Q2hhbmdlZCJ9LHNlbGVjdGFibGU6U3RyaW5nLHNlbGVjdGVkQ2xhc3M6e3R5cGU6U3RyaW5nLHZhbHVlOiJpcm9uLXNlbGVjdGVkIn0sc2VsZWN0ZWRBdHRyaWJ1dGU6e3R5cGU6U3RyaW5nLHZhbHVlOm51bGx9LGZhbGxiYWNrU2VsZWN0aW9uOnt0eXBlOlN0cmluZyx2YWx1ZTpudWxsfSxpdGVtczp7dHlwZTpBcnJheSxyZWFkT25seTohMCxub3RpZnk6ITAsdmFsdWU6ZnVuY3Rpb24oKXtyZXR1cm5bXX19LF9leGNsdWRlZExvY2FsTmFtZXM6e3R5cGU6T2JqZWN0LHZhbHVlOmZ1bmN0aW9uKCl7cmV0dXJue3RlbXBsYXRlOjEsImRvbS1iaW5kIjoxLCJkb20taWYiOjEsImRvbS1yZXBlYXQiOjF9fX19LG9ic2VydmVyczpbIl91cGRhdGVBdHRyRm9yU2VsZWN0ZWQoYXR0ckZvclNlbGVjdGVkKSIsIl91cGRhdGVTZWxlY3RlZChzZWxlY3RlZCkiLCJfY2hlY2tGYWxsYmFjayhmYWxsYmFja1NlbGVjdGlvbikiXSxjcmVhdGVkOmZ1bmN0aW9uKCl7dGhpcy5fYmluZEZpbHRlckl0ZW09dGhpcy5fZmlsdGVySXRlbS5iaW5kKHRoaXMpLHRoaXMuX3NlbGVjdGlvbj1uZXcgVm8odGhpcy5fYXBwbHlTZWxlY3Rpb24uYmluZCh0aGlzKSl9LGF0dGFjaGVkOmZ1bmN0aW9uKCl7dGhpcy5fb2JzZXJ2ZXI9dGhpcy5fb2JzZXJ2ZUl0ZW1zKHRoaXMpLHRoaXMuX2FkZExpc3RlbmVyKHRoaXMuYWN0aXZhdGVFdmVudCl9LGRldGFjaGVkOmZ1bmN0aW9uKCl7dGhpcy5fb2JzZXJ2ZXImJnFpKHRoaXMpLnVub2JzZXJ2ZU5vZGVzKHRoaXMuX29ic2VydmVyKSx0aGlzLl9yZW1vdmVMaXN0ZW5lcih0aGlzLmFjdGl2YXRlRXZlbnQpfSxpbmRleE9mOmZ1bmN0aW9uKHQpe3JldHVybiB0aGlzLml0ZW1zP3RoaXMuaXRlbXMuaW5kZXhPZih0KTotMX0sc2VsZWN0OmZ1bmN0aW9uKHQpe3RoaXMuc2VsZWN0ZWQ9dH0sc2VsZWN0UHJldmlvdXM6ZnVuY3Rpb24oKXt2YXIgdD10aGlzLml0ZW1zLmxlbmd0aCxlPXQtMTt2b2lkIDAhPT10aGlzLnNlbGVjdGVkJiYoZT0oTnVtYmVyKHRoaXMuX3ZhbHVlVG9JbmRleCh0aGlzLnNlbGVjdGVkKSktMSt0KSV0KSx0aGlzLnNlbGVjdGVkPXRoaXMuX2luZGV4VG9WYWx1ZShlKX0sc2VsZWN0TmV4dDpmdW5jdGlvbigpe3ZhciB0PTA7dm9pZCAwIT09dGhpcy5zZWxlY3RlZCYmKHQ9KE51bWJlcih0aGlzLl92YWx1ZVRvSW5kZXgodGhpcy5zZWxlY3RlZCkpKzEpJXRoaXMuaXRlbXMubGVuZ3RoKSx0aGlzLnNlbGVjdGVkPXRoaXMuX2luZGV4VG9WYWx1ZSh0KX0sc2VsZWN0SW5kZXg6ZnVuY3Rpb24odCl7dGhpcy5zZWxlY3QodGhpcy5faW5kZXhUb1ZhbHVlKHQpKX0sZm9yY2VTeW5jaHJvbm91c0l0ZW1VcGRhdGU6ZnVuY3Rpb24oKXt0aGlzLl9vYnNlcnZlciYmImZ1bmN0aW9uIj09dHlwZW9mIHRoaXMuX29ic2VydmVyLmZsdXNoP3RoaXMuX29ic2VydmVyLmZsdXNoKCk6dGhpcy5fdXBkYXRlSXRlbXMoKX0sZ2V0IF9zaG91bGRVcGRhdGVTZWxlY3Rpb24oKXtyZXR1cm4gbnVsbCE9dGhpcy5zZWxlY3RlZH0sX2NoZWNrRmFsbGJhY2s6ZnVuY3Rpb24oKXt0aGlzLl91cGRhdGVTZWxlY3RlZCgpfSxfYWRkTGlzdGVuZXI6ZnVuY3Rpb24odCl7dGhpcy5saXN0ZW4odGhpcyx0LCJfYWN0aXZhdGVIYW5kbGVyIil9LF9yZW1vdmVMaXN0ZW5lcjpmdW5jdGlvbih0KXt0aGlzLnVubGlzdGVuKHRoaXMsdCwiX2FjdGl2YXRlSGFuZGxlciIpfSxfYWN0aXZhdGVFdmVudENoYW5nZWQ6ZnVuY3Rpb24odCxlKXt0aGlzLl9yZW1vdmVMaXN0ZW5lcihlKSx0aGlzLl9hZGRMaXN0ZW5lcih0KX0sX3VwZGF0ZUl0ZW1zOmZ1bmN0aW9uKCl7dmFyIHQ9cWkodGhpcykucXVlcnlEaXN0cmlidXRlZEVsZW1lbnRzKHRoaXMuc2VsZWN0YWJsZXx8IioiKTt0PUFycmF5LnByb3RvdHlwZS5maWx0ZXIuY2FsbCh0LHRoaXMuX2JpbmRGaWx0ZXJJdGVtKSx0aGlzLl9zZXRJdGVtcyh0KX0sX3VwZGF0ZUF0dHJGb3JTZWxlY3RlZDpmdW5jdGlvbigpe3RoaXMuc2VsZWN0ZWRJdGVtJiYodGhpcy5zZWxlY3RlZD10aGlzLl92YWx1ZUZvckl0ZW0odGhpcy5zZWxlY3RlZEl0ZW0pKX0sX3VwZGF0ZVNlbGVjdGVkOmZ1bmN0aW9uKCl7dGhpcy5fc2VsZWN0U2VsZWN0ZWQodGhpcy5zZWxlY3RlZCl9LF9zZWxlY3RTZWxlY3RlZDpmdW5jdGlvbih0KXtpZih0aGlzLml0ZW1zKXt2YXIgZT10aGlzLl92YWx1ZVRvSXRlbSh0aGlzLnNlbGVjdGVkKTtlP3RoaXMuX3NlbGVjdGlvbi5zZWxlY3QoZSk6dGhpcy5fc2VsZWN0aW9uLmNsZWFyKCksdGhpcy5mYWxsYmFja1NlbGVjdGlvbiYmdGhpcy5pdGVtcy5sZW5ndGgmJnZvaWQgMD09PXRoaXMuX3NlbGVjdGlvbi5nZXQoKSYmKHRoaXMuc2VsZWN0ZWQ9dGhpcy5mYWxsYmFja1NlbGVjdGlvbil9fSxfZmlsdGVySXRlbTpmdW5jdGlvbih0KXtyZXR1cm4hdGhpcy5fZXhjbHVkZWRMb2NhbE5hbWVzW3QubG9jYWxOYW1lXX0sX3ZhbHVlVG9JdGVtOmZ1bmN0aW9uKHQpe3JldHVybiBudWxsPT10P251bGw6dGhpcy5pdGVtc1t0aGlzLl92YWx1ZVRvSW5kZXgodCldfSxfdmFsdWVUb0luZGV4OmZ1bmN0aW9uKHQpe2lmKCF0aGlzLmF0dHJGb3JTZWxlY3RlZClyZXR1cm4gTnVtYmVyKHQpO2Zvcih2YXIgZSxuPTA7ZT10aGlzLml0ZW1zW25dO24rKylpZih0aGlzLl92YWx1ZUZvckl0ZW0oZSk9PXQpcmV0dXJuIG59LF9pbmRleFRvVmFsdWU6ZnVuY3Rpb24odCl7aWYoIXRoaXMuYXR0ckZvclNlbGVjdGVkKXJldHVybiB0O3ZhciBlPXRoaXMuaXRlbXNbdF07cmV0dXJuIGU/dGhpcy5fdmFsdWVGb3JJdGVtKGUpOnZvaWQgMH0sX3ZhbHVlRm9ySXRlbTpmdW5jdGlvbih0KXtpZighdClyZXR1cm4gbnVsbDtpZighdGhpcy5hdHRyRm9yU2VsZWN0ZWQpe3ZhciBlPXRoaXMuaW5kZXhPZih0KTtyZXR1cm4tMT09PWU/bnVsbDplfXZhciBuPXRbc3QodGhpcy5hdHRyRm9yU2VsZWN0ZWQpXTtyZXR1cm4gbnVsbCE9bj9uOnQuZ2V0QXR0cmlidXRlKHRoaXMuYXR0ckZvclNlbGVjdGVkKX0sX2FwcGx5U2VsZWN0aW9uOmZ1bmN0aW9uKHQsZSl7dGhpcy5zZWxlY3RlZENsYXNzJiZ0aGlzLnRvZ2dsZUNsYXNzKHRoaXMuc2VsZWN0ZWRDbGFzcyxlLHQpLHRoaXMuc2VsZWN0ZWRBdHRyaWJ1dGUmJnRoaXMudG9nZ2xlQXR0cmlidXRlKHRoaXMuc2VsZWN0ZWRBdHRyaWJ1dGUsZSx0KSx0aGlzLl9zZWxlY3Rpb25DaGFuZ2UoKSx0aGlzLmZpcmUoImlyb24tIisoZT8ic2VsZWN0IjoiZGVzZWxlY3QiKSx7aXRlbTp0fSl9LF9zZWxlY3Rpb25DaGFuZ2U6ZnVuY3Rpb24oKXt0aGlzLl9zZXRTZWxlY3RlZEl0ZW0odGhpcy5fc2VsZWN0aW9uLmdldCgpKX0sX29ic2VydmVJdGVtczpmdW5jdGlvbih0KXtyZXR1cm4gcWkodCkub2JzZXJ2ZU5vZGVzKChmdW5jdGlvbih0KXt0aGlzLl91cGRhdGVJdGVtcygpLHRoaXMuX3VwZGF0ZVNlbGVjdGVkKCksdGhpcy5maXJlKCJpcm9uLWl0ZW1zLWNoYW5nZWQiLHQse2J1YmJsZXM6ITEsY2FuY2VsYWJsZTohMX0pfSkpfSxfYWN0aXZhdGVIYW5kbGVyOmZ1bmN0aW9uKHQpe2Zvcih2YXIgZT10LnRhcmdldCxuPXRoaXMuaXRlbXM7ZSYmZSE9dGhpczspe3ZhciBpPW4uaW5kZXhPZihlKTtpZihpPj0wKXt2YXIgcj10aGlzLl9pbmRleFRvVmFsdWUoaSk7cmV0dXJuIHZvaWQgdGhpcy5faXRlbUFjdGl2YXRlKHIsZSl9ZT1lLnBhcmVudE5vZGV9fSxfaXRlbUFjdGl2YXRlOmZ1bmN0aW9uKHQsZSl7dGhpcy5maXJlKCJpcm9uLWFjdGl2YXRlIix7c2VsZWN0ZWQ6dCxpdGVtOmV9LHtjYW5jZWxhYmxlOiEwfSkuZGVmYXVsdFByZXZlbnRlZHx8dGhpcy5zZWxlY3QodCl9fTsKLyoqCiAgICBAbGljZW5zZQogICAgQ29weXJpZ2h0IChjKSAyMDE1IFRoZSBQb2x5bWVyIFByb2plY3QgQXV0aG9ycy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAgIFRoaXMgY29kZSBtYXkgb25seSBiZSB1c2VkIHVuZGVyIHRoZSBCU0Qgc3R5bGUgbGljZW5zZSBmb3VuZCBhdAogICAgaHR0cDovL3BvbHltZXIuZ2l0aHViLmlvL0xJQ0VOU0UudHh0IFRoZSBjb21wbGV0ZSBzZXQgb2YgYXV0aG9ycyBtYXkgYmUgZm91bmQgYXQKICAgIGh0dHA6Ly9wb2x5bWVyLmdpdGh1Yi5pby9BVVRIT1JTLnR4dCBUaGUgY29tcGxldGUgc2V0IG9mIGNvbnRyaWJ1dG9ycyBtYXkgYmUKICAgIGZvdW5kIGF0IGh0dHA6Ly9wb2x5bWVyLmdpdGh1Yi5pby9DT05UUklCVVRPUlMudHh0IENvZGUgZGlzdHJpYnV0ZWQgYnkgR29vZ2xlIGFzCiAgICBwYXJ0IG9mIHRoZSBwb2x5bWVyIHByb2plY3QgaXMgYWxzbyBzdWJqZWN0IHRvIGFuIGFkZGl0aW9uYWwgSVAgcmlnaHRzIGdyYW50CiAgICBmb3VuZCBhdCBodHRwOi8vcG9seW1lci5naXRodWIuaW8vUEFURU5UUy50eHQKICAgICovTnIoe190ZW1wbGF0ZTpfZWAKICAgIDxzdHlsZT4KICAgICAgOmhvc3QgewogICAgICAgIGRpc3BsYXk6IGJsb2NrOwogICAgICB9CgogICAgICA6aG9zdCA+IDo6c2xvdHRlZCg6bm90KHNsb3QpOm5vdCguaXJvbi1zZWxlY3RlZCkpIHsKICAgICAgICBkaXNwbGF5OiBub25lICFpbXBvcnRhbnQ7CiAgICAgIH0KICAgIDwvc3R5bGU+CgogICAgPHNsb3Q+PC9zbG90PgpgLGlzOiJpcm9uLXBhZ2VzIixiZWhhdmlvcnM6W21vLGpvXSxwcm9wZXJ0aWVzOnthY3RpdmF0ZUV2ZW50Ont0eXBlOlN0cmluZyx2YWx1ZTpudWxsfX0sb2JzZXJ2ZXJzOlsiX3NlbGVjdGVkUGFnZUNoYW5nZWQoc2VsZWN0ZWQpIl0sX3NlbGVjdGVkUGFnZUNoYW5nZWQ6ZnVuY3Rpb24odCxlKXt0aGlzLmFzeW5jKHRoaXMubm90aWZ5UmVzaXplKX19KTsKLyoqCiAgICBAbGljZW5zZQogICAgQ29weXJpZ2h0IChjKSAyMDE1IFRoZSBQb2x5bWVyIFByb2plY3QgQXV0aG9ycy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAgIFRoaXMgY29kZSBtYXkgb25seSBiZSB1c2VkIHVuZGVyIHRoZSBCU0Qgc3R5bGUgbGljZW5zZSBmb3VuZCBhdAogICAgaHR0cDovL3BvbHltZXIuZ2l0aHViLmlvL0xJQ0VOU0UudHh0IFRoZSBjb21wbGV0ZSBzZXQgb2YgYXV0aG9ycyBtYXkgYmUgZm91bmQgYXQKICAgIGh0dHA6Ly9wb2x5bWVyLmdpdGh1Yi5pby9BVVRIT1JTLnR4dCBUaGUgY29tcGxldGUgc2V0IG9mIGNvbnRyaWJ1dG9ycyBtYXkgYmUKICAgIGZvdW5kIGF0IGh0dHA6Ly9wb2x5bWVyLmdpdGh1Yi5pby9DT05UUklCVVRPUlMudHh0IENvZGUgZGlzdHJpYnV0ZWQgYnkgR29vZ2xlIGFzCiAgICBwYXJ0IG9mIHRoZSBwb2x5bWVyIHByb2plY3QgaXMgYWxzbyBzdWJqZWN0IHRvIGFuIGFkZGl0aW9uYWwgSVAgcmlnaHRzIGdyYW50CiAgICBmb3VuZCBhdCBodHRwOi8vcG9seW1lci5naXRodWIuaW8vUEFURU5UUy50eHQKICAgICovCmNvbnN0IFVvPV9lYAo8Y3VzdG9tLXN0eWxlPgogIDxzdHlsZSBpcz0iY3VzdG9tLXN0eWxlIj4KICAgIGh0bWwgewoKICAgICAgLS1zaGFkb3ctdHJhbnNpdGlvbjogewogICAgICAgIHRyYW5zaXRpb246IGJveC1zaGFkb3cgMC4yOHMgY3ViaWMtYmV6aWVyKDAuNCwgMCwgMC4yLCAxKTsKICAgICAgfTsKCiAgICAgIC0tc2hhZG93LW5vbmU6IHsKICAgICAgICBib3gtc2hhZG93OiBub25lOwogICAgICB9OwoKICAgICAgLyogZnJvbSBodHRwOi8vY29kZXBlbi5pby9zaHluZG1hbi9wZW4vYzUzOTRkZGYyZThiMmE1YzkxODU5MDRiNTc0MjFjZGIgKi8KCiAgICAgIC0tc2hhZG93LWVsZXZhdGlvbi0yZHA6IHsKICAgICAgICBib3gtc2hhZG93OiAwIDJweCAycHggMCByZ2JhKDAsIDAsIDAsIDAuMTQpLAogICAgICAgICAgICAgICAgICAgIDAgMXB4IDVweCAwIHJnYmEoMCwgMCwgMCwgMC4xMiksCiAgICAgICAgICAgICAgICAgICAgMCAzcHggMXB4IC0ycHggcmdiYSgwLCAwLCAwLCAwLjIpOwogICAgICB9OwoKICAgICAgLS1zaGFkb3ctZWxldmF0aW9uLTNkcDogewogICAgICAgIGJveC1zaGFkb3c6IDAgM3B4IDRweCAwIHJnYmEoMCwgMCwgMCwgMC4xNCksCiAgICAgICAgICAgICAgICAgICAgMCAxcHggOHB4IDAgcmdiYSgwLCAwLCAwLCAwLjEyKSwKICAgICAgICAgICAgICAgICAgICAwIDNweCAzcHggLTJweCByZ2JhKDAsIDAsIDAsIDAuNCk7CiAgICAgIH07CgogICAgICAtLXNoYWRvdy1lbGV2YXRpb24tNGRwOiB7CiAgICAgICAgYm94LXNoYWRvdzogMCA0cHggNXB4IDAgcmdiYSgwLCAwLCAwLCAwLjE0KSwKICAgICAgICAgICAgICAgICAgICAwIDFweCAxMHB4IDAgcmdiYSgwLCAwLCAwLCAwLjEyKSwKICAgICAgICAgICAgICAgICAgICAwIDJweCA0cHggLTFweCByZ2JhKDAsIDAsIDAsIDAuNCk7CiAgICAgIH07CgogICAgICAtLXNoYWRvdy1lbGV2YXRpb24tNmRwOiB7CiAgICAgICAgYm94LXNoYWRvdzogMCA2cHggMTBweCAwIHJnYmEoMCwgMCwgMCwgMC4xNCksCiAgICAgICAgICAgICAgICAgICAgMCAxcHggMThweCAwIHJnYmEoMCwgMCwgMCwgMC4xMiksCiAgICAgICAgICAgICAgICAgICAgMCAzcHggNXB4IC0xcHggcmdiYSgwLCAwLCAwLCAwLjQpOwogICAgICB9OwoKICAgICAgLS1zaGFkb3ctZWxldmF0aW9uLThkcDogewogICAgICAgIGJveC1zaGFkb3c6IDAgOHB4IDEwcHggMXB4IHJnYmEoMCwgMCwgMCwgMC4xNCksCiAgICAgICAgICAgICAgICAgICAgMCAzcHggMTRweCAycHggcmdiYSgwLCAwLCAwLCAwLjEyKSwKICAgICAgICAgICAgICAgICAgICAwIDVweCA1cHggLTNweCByZ2JhKDAsIDAsIDAsIDAuNCk7CiAgICAgIH07CgogICAgICAtLXNoYWRvdy1lbGV2YXRpb24tMTJkcDogewogICAgICAgIGJveC1zaGFkb3c6IDAgMTJweCAxNnB4IDFweCByZ2JhKDAsIDAsIDAsIDAuMTQpLAogICAgICAgICAgICAgICAgICAgIDAgNHB4IDIycHggM3B4IHJnYmEoMCwgMCwgMCwgMC4xMiksCiAgICAgICAgICAgICAgICAgICAgMCA2cHggN3B4IC00cHggcmdiYSgwLCAwLCAwLCAwLjQpOwogICAgICB9OwoKICAgICAgLS1zaGFkb3ctZWxldmF0aW9uLTE2ZHA6IHsKICAgICAgICBib3gtc2hhZG93OiAwIDE2cHggMjRweCAycHggcmdiYSgwLCAwLCAwLCAwLjE0KSwKICAgICAgICAgICAgICAgICAgICAwICA2cHggMzBweCA1cHggcmdiYSgwLCAwLCAwLCAwLjEyKSwKICAgICAgICAgICAgICAgICAgICAwICA4cHggMTBweCAtNXB4IHJnYmEoMCwgMCwgMCwgMC40KTsKICAgICAgfTsKCiAgICAgIC0tc2hhZG93LWVsZXZhdGlvbi0yNGRwOiB7CiAgICAgICAgYm94LXNoYWRvdzogMCAyNHB4IDM4cHggM3B4IHJnYmEoMCwgMCwgMCwgMC4xNCksCiAgICAgICAgICAgICAgICAgICAgMCA5cHggNDZweCA4cHggcmdiYSgwLCAwLCAwLCAwLjEyKSwKICAgICAgICAgICAgICAgICAgICAwIDExcHggMTVweCAtN3B4IHJnYmEoMCwgMCwgMCwgMC40KTsKICAgICAgfTsKICAgIH0KICA8L3N0eWxlPgo8L2N1c3RvbS1zdHlsZT5gO1VvLnNldEF0dHJpYnV0ZSgic3R5bGUiLCJkaXNwbGF5OiBub25lOyIpLGRvY3VtZW50LmhlYWQuYXBwZW5kQ2hpbGQoVW8uY29udGVudCk7Ci8qKgogICAgQGxpY2Vuc2UKICAgIENvcHlyaWdodCAoYykgMjAxNyBUaGUgUG9seW1lciBQcm9qZWN0IEF1dGhvcnMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgICBUaGlzIGNvZGUgbWF5IG9ubHkgYmUgdXNlZCB1bmRlciB0aGUgQlNEIHN0eWxlIGxpY2Vuc2UgZm91bmQgYXQKICAgIGh0dHA6Ly9wb2x5bWVyLmdpdGh1Yi5pby9MSUNFTlNFLnR4dCBUaGUgY29tcGxldGUgc2V0IG9mIGF1dGhvcnMgbWF5IGJlIGZvdW5kIGF0CiAgICBodHRwOi8vcG9seW1lci5naXRodWIuaW8vQVVUSE9SUy50eHQgVGhlIGNvbXBsZXRlIHNldCBvZiBjb250cmlidXRvcnMgbWF5IGJlCiAgICBmb3VuZCBhdCBodHRwOi8vcG9seW1lci5naXRodWIuaW8vQ09OVFJJQlVUT1JTLnR4dCBDb2RlIGRpc3RyaWJ1dGVkIGJ5IEdvb2dsZSBhcwogICAgcGFydCBvZiB0aGUgcG9seW1lciBwcm9qZWN0IGlzIGFsc28gc3ViamVjdCB0byBhbiBhZGRpdGlvbmFsIElQIHJpZ2h0cyBncmFudAogICAgZm91bmQgYXQgaHR0cDovL3BvbHltZXIuZ2l0aHViLmlvL1BBVEVOVFMudHh0CiAgICAqLwpjb25zdCBHbz1fZWAKPGRvbS1tb2R1bGUgaWQ9InBhcGVyLW1hdGVyaWFsLXN0eWxlcyI+CiAgPHRlbXBsYXRlPgogICAgPHN0eWxlPgogICAgICBodG1sIHsKICAgICAgICAtLXBhcGVyLW1hdGVyaWFsOiB7CiAgICAgICAgICBkaXNwbGF5OiBibG9jazsKICAgICAgICAgIHBvc2l0aW9uOiByZWxhdGl2ZTsKICAgICAgICB9OwogICAgICAgIC0tcGFwZXItbWF0ZXJpYWwtZWxldmF0aW9uLTE6IHsKICAgICAgICAgIEBhcHBseSAtLXNoYWRvdy1lbGV2YXRpb24tMmRwOwogICAgICAgIH07CiAgICAgICAgLS1wYXBlci1tYXRlcmlhbC1lbGV2YXRpb24tMjogewogICAgICAgICAgQGFwcGx5IC0tc2hhZG93LWVsZXZhdGlvbi00ZHA7CiAgICAgICAgfTsKICAgICAgICAtLXBhcGVyLW1hdGVyaWFsLWVsZXZhdGlvbi0zOiB7CiAgICAgICAgICBAYXBwbHkgLS1zaGFkb3ctZWxldmF0aW9uLTZkcDsKICAgICAgICB9OwogICAgICAgIC0tcGFwZXItbWF0ZXJpYWwtZWxldmF0aW9uLTQ6IHsKICAgICAgICAgIEBhcHBseSAtLXNoYWRvdy1lbGV2YXRpb24tOGRwOwogICAgICAgIH07CiAgICAgICAgLS1wYXBlci1tYXRlcmlhbC1lbGV2YXRpb24tNTogewogICAgICAgICAgQGFwcGx5IC0tc2hhZG93LWVsZXZhdGlvbi0xNmRwOwogICAgICAgIH07CiAgICAgIH0KICAgICAgLnBhcGVyLW1hdGVyaWFsIHsKICAgICAgICBAYXBwbHkgLS1wYXBlci1tYXRlcmlhbDsKICAgICAgfQogICAgICAucGFwZXItbWF0ZXJpYWxbZWxldmF0aW9uPSIxIl0gewogICAgICAgIEBhcHBseSAtLXBhcGVyLW1hdGVyaWFsLWVsZXZhdGlvbi0xOwogICAgICB9CiAgICAgIC5wYXBlci1tYXRlcmlhbFtlbGV2YXRpb249IjIiXSB7CiAgICAgICAgQGFwcGx5IC0tcGFwZXItbWF0ZXJpYWwtZWxldmF0aW9uLTI7CiAgICAgIH0KICAgICAgLnBhcGVyLW1hdGVyaWFsW2VsZXZhdGlvbj0iMyJdIHsKICAgICAgICBAYXBwbHkgLS1wYXBlci1tYXRlcmlhbC1lbGV2YXRpb24tMzsKICAgICAgfQogICAgICAucGFwZXItbWF0ZXJpYWxbZWxldmF0aW9uPSI0Il0gewogICAgICAgIEBhcHBseSAtLXBhcGVyLW1hdGVyaWFsLWVsZXZhdGlvbi00OwogICAgICB9CiAgICAgIC5wYXBlci1tYXRlcmlhbFtlbGV2YXRpb249IjUiXSB7CiAgICAgICAgQGFwcGx5IC0tcGFwZXItbWF0ZXJpYWwtZWxldmF0aW9uLTU7CiAgICAgIH0KCiAgICAgIC8qIER1cGxpY2F0ZSB0aGUgc3R5bGVzIGJlY2F1c2Ugb2YgaHR0cHM6Ly9naXRodWIuY29tL3dlYmNvbXBvbmVudHMvc2hhZHljc3MvaXNzdWVzLzE5MyAqLwogICAgICA6aG9zdCB7CiAgICAgICAgLS1wYXBlci1tYXRlcmlhbDogewogICAgICAgICAgZGlzcGxheTogYmxvY2s7CiAgICAgICAgICBwb3NpdGlvbjogcmVsYXRpdmU7CiAgICAgICAgfTsKICAgICAgICAtLXBhcGVyLW1hdGVyaWFsLWVsZXZhdGlvbi0xOiB7CiAgICAgICAgICBAYXBwbHkgLS1zaGFkb3ctZWxldmF0aW9uLTJkcDsKICAgICAgICB9OwogICAgICAgIC0tcGFwZXItbWF0ZXJpYWwtZWxldmF0aW9uLTI6IHsKICAgICAgICAgIEBhcHBseSAtLXNoYWRvdy1lbGV2YXRpb24tNGRwOwogICAgICAgIH07CiAgICAgICAgLS1wYXBlci1tYXRlcmlhbC1lbGV2YXRpb24tMzogewogICAgICAgICAgQGFwcGx5IC0tc2hhZG93LWVsZXZhdGlvbi02ZHA7CiAgICAgICAgfTsKICAgICAgICAtLXBhcGVyLW1hdGVyaWFsLWVsZXZhdGlvbi00OiB7CiAgICAgICAgICBAYXBwbHkgLS1zaGFkb3ctZWxldmF0aW9uLThkcDsKICAgICAgICB9OwogICAgICAgIC0tcGFwZXItbWF0ZXJpYWwtZWxldmF0aW9uLTU6IHsKICAgICAgICAgIEBhcHBseSAtLXNoYWRvdy1lbGV2YXRpb24tMTZkcDsKICAgICAgICB9OwogICAgICB9CiAgICAgIDpob3N0KC5wYXBlci1tYXRlcmlhbCkgewogICAgICAgIEBhcHBseSAtLXBhcGVyLW1hdGVyaWFsOwogICAgICB9CiAgICAgIDpob3N0KC5wYXBlci1tYXRlcmlhbFtlbGV2YXRpb249IjEiXSkgewogICAgICAgIEBhcHBseSAtLXBhcGVyLW1hdGVyaWFsLWVsZXZhdGlvbi0xOwogICAgICB9CiAgICAgIDpob3N0KC5wYXBlci1tYXRlcmlhbFtlbGV2YXRpb249IjIiXSkgewogICAgICAgIEBhcHBseSAtLXBhcGVyLW1hdGVyaWFsLWVsZXZhdGlvbi0yOwogICAgICB9CiAgICAgIDpob3N0KC5wYXBlci1tYXRlcmlhbFtlbGV2YXRpb249IjMiXSkgewogICAgICAgIEBhcHBseSAtLXBhcGVyLW1hdGVyaWFsLWVsZXZhdGlvbi0zOwogICAgICB9CiAgICAgIDpob3N0KC5wYXBlci1tYXRlcmlhbFtlbGV2YXRpb249IjQiXSkgewogICAgICAgIEBhcHBseSAtLXBhcGVyLW1hdGVyaWFsLWVsZXZhdGlvbi00OwogICAgICB9CiAgICAgIDpob3N0KC5wYXBlci1tYXRlcmlhbFtlbGV2YXRpb249IjUiXSkgewogICAgICAgIEBhcHBseSAtLXBhcGVyLW1hdGVyaWFsLWVsZXZhdGlvbi01OwogICAgICB9CiAgICA8L3N0eWxlPgogIDwvdGVtcGxhdGU+CjwvZG9tLW1vZHVsZT5gO0dvLnNldEF0dHJpYnV0ZSgic3R5bGUiLCJkaXNwbGF5OiBub25lOyIpLGRvY3VtZW50LmhlYWQuYXBwZW5kQ2hpbGQoR28uY29udGVudCk7Ci8qKgogICAgQGxpY2Vuc2UKICAgIENvcHlyaWdodCAoYykgMjAxNSBUaGUgUG9seW1lciBQcm9qZWN0IEF1dGhvcnMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgICBUaGlzIGNvZGUgbWF5IG9ubHkgYmUgdXNlZCB1bmRlciB0aGUgQlNEIHN0eWxlIGxpY2Vuc2UgZm91bmQgYXQKICAgIGh0dHA6Ly9wb2x5bWVyLmdpdGh1Yi5pby9MSUNFTlNFLnR4dCBUaGUgY29tcGxldGUgc2V0IG9mIGF1dGhvcnMgbWF5IGJlIGZvdW5kIGF0CiAgICBodHRwOi8vcG9seW1lci5naXRodWIuaW8vQVVUSE9SUy50eHQgVGhlIGNvbXBsZXRlIHNldCBvZiBjb250cmlidXRvcnMgbWF5IGJlCiAgICBmb3VuZCBhdCBodHRwOi8vcG9seW1lci5naXRodWIuaW8vQ09OVFJJQlVUT1JTLnR4dCBDb2RlIGRpc3RyaWJ1dGVkIGJ5IEdvb2dsZSBhcwogICAgcGFydCBvZiB0aGUgcG9seW1lciBwcm9qZWN0IGlzIGFsc28gc3ViamVjdCB0byBhbiBhZGRpdGlvbmFsIElQIHJpZ2h0cyBncmFudAogICAgZm91bmQgYXQgaHR0cDovL3BvbHltZXIuZ2l0aHViLmlvL1BBVEVOVFMudHh0CiAgICAqLwpjb25zdCBXbz17cHJvcGVydGllczp7Zm9jdXNlZDp7dHlwZTpCb29sZWFuLHZhbHVlOiExLG5vdGlmeTohMCxyZWFkT25seTohMCxyZWZsZWN0VG9BdHRyaWJ1dGU6ITB9LGRpc2FibGVkOnt0eXBlOkJvb2xlYW4sdmFsdWU6ITEsbm90aWZ5OiEwLG9ic2VydmVyOiJfZGlzYWJsZWRDaGFuZ2VkIixyZWZsZWN0VG9BdHRyaWJ1dGU6ITB9LF9vbGRUYWJJbmRleDp7dHlwZTpTdHJpbmd9LF9ib3VuZEZvY3VzQmx1ckhhbmRsZXI6e3R5cGU6RnVuY3Rpb24sdmFsdWU6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5fZm9jdXNCbHVySGFuZGxlci5iaW5kKHRoaXMpfX19LG9ic2VydmVyczpbIl9jaGFuZ2VkQ29udHJvbFN0YXRlKGZvY3VzZWQsIGRpc2FibGVkKSJdLHJlYWR5OmZ1bmN0aW9uKCl7dGhpcy5hZGRFdmVudExpc3RlbmVyKCJmb2N1cyIsdGhpcy5fYm91bmRGb2N1c0JsdXJIYW5kbGVyLCEwKSx0aGlzLmFkZEV2ZW50TGlzdGVuZXIoImJsdXIiLHRoaXMuX2JvdW5kRm9jdXNCbHVySGFuZGxlciwhMCl9LF9mb2N1c0JsdXJIYW5kbGVyOmZ1bmN0aW9uKHQpe3RoaXMuX3NldEZvY3VzZWQoImZvY3VzIj09PXQudHlwZSl9LF9kaXNhYmxlZENoYW5nZWQ6ZnVuY3Rpb24odCxlKXt0aGlzLnNldEF0dHJpYnV0ZSgiYXJpYS1kaXNhYmxlZCIsdD8idHJ1ZSI6ImZhbHNlIiksdGhpcy5zdHlsZS5wb2ludGVyRXZlbnRzPXQ/Im5vbmUiOiIiLHQ/KHRoaXMuX29sZFRhYkluZGV4PXRoaXMuZ2V0QXR0cmlidXRlKCJ0YWJpbmRleCIpLHRoaXMuX3NldEZvY3VzZWQoITEpLHRoaXMudGFiSW5kZXg9LTEsdGhpcy5ibHVyKCkpOnZvaWQgMCE9PXRoaXMuX29sZFRhYkluZGV4JiYobnVsbD09PXRoaXMuX29sZFRhYkluZGV4P3RoaXMucmVtb3ZlQXR0cmlidXRlKCJ0YWJpbmRleCIpOnRoaXMuc2V0QXR0cmlidXRlKCJ0YWJpbmRleCIsdGhpcy5fb2xkVGFiSW5kZXgpKX0sX2NoYW5nZWRDb250cm9sU3RhdGU6ZnVuY3Rpb24oKXt0aGlzLl9jb250cm9sU3RhdGVDaGFuZ2VkJiZ0aGlzLl9jb250cm9sU3RhdGVDaGFuZ2VkKCl9fSxxbz17cHJvcGVydGllczp7cHJlc3NlZDp7dHlwZTpCb29sZWFuLHJlYWRPbmx5OiEwLHZhbHVlOiExLHJlZmxlY3RUb0F0dHJpYnV0ZTohMCxvYnNlcnZlcjoiX3ByZXNzZWRDaGFuZ2VkIn0sdG9nZ2xlczp7dHlwZTpCb29sZWFuLHZhbHVlOiExLHJlZmxlY3RUb0F0dHJpYnV0ZTohMH0sYWN0aXZlOnt0eXBlOkJvb2xlYW4sdmFsdWU6ITEsbm90aWZ5OiEwLHJlZmxlY3RUb0F0dHJpYnV0ZTohMH0scG9pbnRlckRvd246e3R5cGU6Qm9vbGVhbixyZWFkT25seTohMCx2YWx1ZTohMX0scmVjZWl2ZWRGb2N1c0Zyb21LZXlib2FyZDp7dHlwZTpCb29sZWFuLHJlYWRPbmx5OiEwfSxhcmlhQWN0aXZlQXR0cmlidXRlOnt0eXBlOlN0cmluZyx2YWx1ZToiYXJpYS1wcmVzc2VkIixvYnNlcnZlcjoiX2FyaWFBY3RpdmVBdHRyaWJ1dGVDaGFuZ2VkIn19LGxpc3RlbmVyczp7ZG93bjoiX2Rvd25IYW5kbGVyIix1cDoiX3VwSGFuZGxlciIsdGFwOiJfdGFwSGFuZGxlciJ9LG9ic2VydmVyczpbIl9mb2N1c0NoYW5nZWQoZm9jdXNlZCkiLCJfYWN0aXZlQ2hhbmdlZChhY3RpdmUsIGFyaWFBY3RpdmVBdHRyaWJ1dGUpIl0sa2V5QmluZGluZ3M6eyJlbnRlcjprZXlkb3duIjoiX2FzeW5jQ2xpY2siLCJzcGFjZTprZXlkb3duIjoiX3NwYWNlS2V5RG93bkhhbmRsZXIiLCJzcGFjZTprZXl1cCI6Il9zcGFjZUtleVVwSGFuZGxlciJ9LF9tb3VzZUV2ZW50UmU6L15tb3VzZS8sX3RhcEhhbmRsZXI6ZnVuY3Rpb24oKXt0aGlzLnRvZ2dsZXM/dGhpcy5fdXNlckFjdGl2YXRlKCF0aGlzLmFjdGl2ZSk6dGhpcy5hY3RpdmU9ITF9LF9mb2N1c0NoYW5nZWQ6ZnVuY3Rpb24odCl7dGhpcy5fZGV0ZWN0S2V5Ym9hcmRGb2N1cyh0KSx0fHx0aGlzLl9zZXRQcmVzc2VkKCExKX0sX2RldGVjdEtleWJvYXJkRm9jdXM6ZnVuY3Rpb24odCl7dGhpcy5fc2V0UmVjZWl2ZWRGb2N1c0Zyb21LZXlib2FyZCghdGhpcy5wb2ludGVyRG93biYmdCl9LF91c2VyQWN0aXZhdGU6ZnVuY3Rpb24odCl7dGhpcy5hY3RpdmUhPT10JiYodGhpcy5hY3RpdmU9dCx0aGlzLmZpcmUoImNoYW5nZSIpKX0sX2Rvd25IYW5kbGVyOmZ1bmN0aW9uKHQpe3RoaXMuX3NldFBvaW50ZXJEb3duKCEwKSx0aGlzLl9zZXRQcmVzc2VkKCEwKSx0aGlzLl9zZXRSZWNlaXZlZEZvY3VzRnJvbUtleWJvYXJkKCExKX0sX3VwSGFuZGxlcjpmdW5jdGlvbigpe3RoaXMuX3NldFBvaW50ZXJEb3duKCExKSx0aGlzLl9zZXRQcmVzc2VkKCExKX0sX3NwYWNlS2V5RG93bkhhbmRsZXI6ZnVuY3Rpb24odCl7dmFyIGU9dC5kZXRhaWwua2V5Ym9hcmRFdmVudCxuPXFpKGUpLmxvY2FsVGFyZ2V0O3RoaXMuaXNMaWdodERlc2NlbmRhbnQobil8fChlLnByZXZlbnREZWZhdWx0KCksZS5zdG9wSW1tZWRpYXRlUHJvcGFnYXRpb24oKSx0aGlzLl9zZXRQcmVzc2VkKCEwKSl9LF9zcGFjZUtleVVwSGFuZGxlcjpmdW5jdGlvbih0KXt2YXIgZT1xaSh0LmRldGFpbC5rZXlib2FyZEV2ZW50KS5sb2NhbFRhcmdldDt0aGlzLmlzTGlnaHREZXNjZW5kYW50KGUpfHwodGhpcy5wcmVzc2VkJiZ0aGlzLl9hc3luY0NsaWNrKCksdGhpcy5fc2V0UHJlc3NlZCghMSkpfSxfYXN5bmNDbGljazpmdW5jdGlvbigpe3RoaXMuYXN5bmMoKGZ1bmN0aW9uKCl7dGhpcy5jbGljaygpfSksMSl9LF9wcmVzc2VkQ2hhbmdlZDpmdW5jdGlvbih0KXt0aGlzLl9jaGFuZ2VkQnV0dG9uU3RhdGUoKX0sX2FyaWFBY3RpdmVBdHRyaWJ1dGVDaGFuZ2VkOmZ1bmN0aW9uKHQsZSl7ZSYmZSE9dCYmdGhpcy5oYXNBdHRyaWJ1dGUoZSkmJnRoaXMucmVtb3ZlQXR0cmlidXRlKGUpfSxfYWN0aXZlQ2hhbmdlZDpmdW5jdGlvbih0LGUpe3RoaXMudG9nZ2xlcz90aGlzLnNldEF0dHJpYnV0ZSh0aGlzLmFyaWFBY3RpdmVBdHRyaWJ1dGUsdD8idHJ1ZSI6ImZhbHNlIik6dGhpcy5yZW1vdmVBdHRyaWJ1dGUodGhpcy5hcmlhQWN0aXZlQXR0cmlidXRlKSx0aGlzLl9jaGFuZ2VkQnV0dG9uU3RhdGUoKX0sX2NvbnRyb2xTdGF0ZUNoYW5nZWQ6ZnVuY3Rpb24oKXt0aGlzLmRpc2FibGVkP3RoaXMuX3NldFByZXNzZWQoITEpOnRoaXMuX2NoYW5nZWRCdXR0b25TdGF0ZSgpfSxfY2hhbmdlZEJ1dHRvblN0YXRlOmZ1bmN0aW9uKCl7dGhpcy5fYnV0dG9uU3RhdGVDaGFuZ2VkJiZ0aGlzLl9idXR0b25TdGF0ZUNoYW5nZWQoKX19LFlvPVtSbyxxb107Ci8qKgogICAgQGxpY2Vuc2UKICAgIENvcHlyaWdodCAoYykgMjAxNSBUaGUgUG9seW1lciBQcm9qZWN0IEF1dGhvcnMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgICBUaGlzIGNvZGUgbWF5IG9ubHkgYmUgdXNlZCB1bmRlciB0aGUgQlNEIHN0eWxlIGxpY2Vuc2UgZm91bmQgYXQKICAgIGh0dHA6Ly9wb2x5bWVyLmdpdGh1Yi5pby9MSUNFTlNFLnR4dCBUaGUgY29tcGxldGUgc2V0IG9mIGF1dGhvcnMgbWF5IGJlIGZvdW5kIGF0CiAgICBodHRwOi8vcG9seW1lci5naXRodWIuaW8vQVVUSE9SUy50eHQgVGhlIGNvbXBsZXRlIHNldCBvZiBjb250cmlidXRvcnMgbWF5IGJlCiAgICBmb3VuZCBhdCBodHRwOi8vcG9seW1lci5naXRodWIuaW8vQ09OVFJJQlVUT1JTLnR4dCBDb2RlIGRpc3RyaWJ1dGVkIGJ5IEdvb2dsZSBhcwogICAgcGFydCBvZiB0aGUgcG9seW1lciBwcm9qZWN0IGlzIGFsc28gc3ViamVjdCB0byBhbiBhZGRpdGlvbmFsIElQIHJpZ2h0cyBncmFudAogICAgZm91bmQgYXQgaHR0cDovL3BvbHltZXIuZ2l0aHViLmlvL1BBVEVOVFMudHh0CiAgICAqLwovKioKICAgIEBsaWNlbnNlCiAgICBDb3B5cmlnaHQgKGMpIDIwMTQgVGhlIFBvbHltZXIgUHJvamVjdCBBdXRob3JzLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICAgVGhpcyBjb2RlIG1heSBvbmx5IGJlIHVzZWQgdW5kZXIgdGhlIEJTRCBzdHlsZSBsaWNlbnNlIGZvdW5kIGF0CiAgICBodHRwOi8vcG9seW1lci5naXRodWIuaW8vTElDRU5TRS50eHQgVGhlIGNvbXBsZXRlIHNldCBvZiBhdXRob3JzIG1heSBiZSBmb3VuZCBhdAogICAgaHR0cDovL3BvbHltZXIuZ2l0aHViLmlvL0FVVEhPUlMudHh0IFRoZSBjb21wbGV0ZSBzZXQgb2YgY29udHJpYnV0b3JzIG1heSBiZQogICAgZm91bmQgYXQgaHR0cDovL3BvbHltZXIuZ2l0aHViLmlvL0NPTlRSSUJVVE9SUy50eHQgQ29kZSBkaXN0cmlidXRlZCBieSBHb29nbGUgYXMKICAgIHBhcnQgb2YgdGhlIHBvbHltZXIgcHJvamVjdCBpcyBhbHNvIHN1YmplY3QgdG8gYW4gYWRkaXRpb25hbCBJUCByaWdodHMgZ3JhbnQKICAgIGZvdW5kIGF0IGh0dHA6Ly9wb2x5bWVyLmdpdGh1Yi5pby9QQVRFTlRTLnR4dAogICAgKi8KdmFyIFhvPXtkaXN0YW5jZTpmdW5jdGlvbih0LGUsbixpKXt2YXIgcj10LW4sbz1lLWk7cmV0dXJuIE1hdGguc3FydChyKnIrbypvKX0sbm93OndpbmRvdy5wZXJmb3JtYW5jZSYmd2luZG93LnBlcmZvcm1hbmNlLm5vdz93aW5kb3cucGVyZm9ybWFuY2Uubm93LmJpbmQod2luZG93LnBlcmZvcm1hbmNlKTpEYXRlLm5vd307ZnVuY3Rpb24gJG8odCl7dGhpcy5lbGVtZW50PXQsdGhpcy53aWR0aD10aGlzLmJvdW5kaW5nUmVjdC53aWR0aCx0aGlzLmhlaWdodD10aGlzLmJvdW5kaW5nUmVjdC5oZWlnaHQsdGhpcy5zaXplPU1hdGgubWF4KHRoaXMud2lkdGgsdGhpcy5oZWlnaHQpfWZ1bmN0aW9uIEtvKHQpe3RoaXMuZWxlbWVudD10LHRoaXMuY29sb3I9d2luZG93LmdldENvbXB1dGVkU3R5bGUodCkuY29sb3IsdGhpcy53YXZlPWRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoImRpdiIpLHRoaXMud2F2ZUNvbnRhaW5lcj1kb2N1bWVudC5jcmVhdGVFbGVtZW50KCJkaXYiKSx0aGlzLndhdmUuc3R5bGUuYmFja2dyb3VuZENvbG9yPXRoaXMuY29sb3IsdGhpcy53YXZlLmNsYXNzTGlzdC5hZGQoIndhdmUiKSx0aGlzLndhdmVDb250YWluZXIuY2xhc3NMaXN0LmFkZCgid2F2ZS1jb250YWluZXIiKSxxaSh0aGlzLndhdmVDb250YWluZXIpLmFwcGVuZENoaWxkKHRoaXMud2F2ZSksdGhpcy5yZXNldEludGVyYWN0aW9uU3RhdGUoKX0kby5wcm90b3R5cGU9e2dldCBib3VuZGluZ1JlY3QoKXtyZXR1cm4gdGhpcy5lbGVtZW50LmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpfSxmdXJ0aGVzdENvcm5lckRpc3RhbmNlRnJvbTpmdW5jdGlvbih0LGUpe3ZhciBuPVhvLmRpc3RhbmNlKHQsZSwwLDApLGk9WG8uZGlzdGFuY2UodCxlLHRoaXMud2lkdGgsMCkscj1Yby5kaXN0YW5jZSh0LGUsMCx0aGlzLmhlaWdodCksbz1Yby5kaXN0YW5jZSh0LGUsdGhpcy53aWR0aCx0aGlzLmhlaWdodCk7cmV0dXJuIE1hdGgubWF4KG4saSxyLG8pfX0sS28uTUFYX1JBRElVUz0zMDAsS28ucHJvdG90eXBlPXtnZXQgcmVjZW50ZXJzKCl7cmV0dXJuIHRoaXMuZWxlbWVudC5yZWNlbnRlcnN9LGdldCBjZW50ZXIoKXtyZXR1cm4gdGhpcy5lbGVtZW50LmNlbnRlcn0sZ2V0IG1vdXNlRG93bkVsYXBzZWQoKXt2YXIgdDtyZXR1cm4gdGhpcy5tb3VzZURvd25TdGFydD8odD1Yby5ub3coKS10aGlzLm1vdXNlRG93blN0YXJ0LHRoaXMubW91c2VVcFN0YXJ0JiYodC09dGhpcy5tb3VzZVVwRWxhcHNlZCksdCk6MH0sZ2V0IG1vdXNlVXBFbGFwc2VkKCl7cmV0dXJuIHRoaXMubW91c2VVcFN0YXJ0P1hvLm5vdygpLXRoaXMubW91c2VVcFN0YXJ0OjB9LGdldCBtb3VzZURvd25FbGFwc2VkU2Vjb25kcygpe3JldHVybiB0aGlzLm1vdXNlRG93bkVsYXBzZWQvMWUzfSxnZXQgbW91c2VVcEVsYXBzZWRTZWNvbmRzKCl7cmV0dXJuIHRoaXMubW91c2VVcEVsYXBzZWQvMWUzfSxnZXQgbW91c2VJbnRlcmFjdGlvblNlY29uZHMoKXtyZXR1cm4gdGhpcy5tb3VzZURvd25FbGFwc2VkU2Vjb25kcyt0aGlzLm1vdXNlVXBFbGFwc2VkU2Vjb25kc30sZ2V0IGluaXRpYWxPcGFjaXR5KCl7cmV0dXJuIHRoaXMuZWxlbWVudC5pbml0aWFsT3BhY2l0eX0sZ2V0IG9wYWNpdHlEZWNheVZlbG9jaXR5KCl7cmV0dXJuIHRoaXMuZWxlbWVudC5vcGFjaXR5RGVjYXlWZWxvY2l0eX0sZ2V0IHJhZGl1cygpe3ZhciB0PTEuMSpNYXRoLm1pbihNYXRoLnNxcnQodGhpcy5jb250YWluZXJNZXRyaWNzLndpZHRoKnRoaXMuY29udGFpbmVyTWV0cmljcy53aWR0aCt0aGlzLmNvbnRhaW5lck1ldHJpY3MuaGVpZ2h0KnRoaXMuY29udGFpbmVyTWV0cmljcy5oZWlnaHQpLEtvLk1BWF9SQURJVVMpKzUsZT10KigxLU1hdGgucG93KDgwLC10aGlzLm1vdXNlSW50ZXJhY3Rpb25TZWNvbmRzLygxLjEtdC9Lby5NQVhfUkFESVVTKi4yKSkpO3JldHVybiBNYXRoLmFicyhlKX0sZ2V0IG9wYWNpdHkoKXtyZXR1cm4gdGhpcy5tb3VzZVVwU3RhcnQ/TWF0aC5tYXgoMCx0aGlzLmluaXRpYWxPcGFjaXR5LXRoaXMubW91c2VVcEVsYXBzZWRTZWNvbmRzKnRoaXMub3BhY2l0eURlY2F5VmVsb2NpdHkpOnRoaXMuaW5pdGlhbE9wYWNpdHl9LGdldCBvdXRlck9wYWNpdHkoKXtyZXR1cm4gTWF0aC5tYXgoMCxNYXRoLm1pbiguMyp0aGlzLm1vdXNlVXBFbGFwc2VkU2Vjb25kcyx0aGlzLm9wYWNpdHkpKX0sZ2V0IGlzT3BhY2l0eUZ1bGx5RGVjYXllZCgpe3JldHVybiB0aGlzLm9wYWNpdHk8LjAxJiZ0aGlzLnJhZGl1cz49TWF0aC5taW4odGhpcy5tYXhSYWRpdXMsS28uTUFYX1JBRElVUyl9LGdldCBpc1Jlc3RpbmdBdE1heFJhZGl1cygpe3JldHVybiB0aGlzLm9wYWNpdHk+PXRoaXMuaW5pdGlhbE9wYWNpdHkmJnRoaXMucmFkaXVzPj1NYXRoLm1pbih0aGlzLm1heFJhZGl1cyxLby5NQVhfUkFESVVTKX0sZ2V0IGlzQW5pbWF0aW9uQ29tcGxldGUoKXtyZXR1cm4gdGhpcy5tb3VzZVVwU3RhcnQ/dGhpcy5pc09wYWNpdHlGdWxseURlY2F5ZWQ6dGhpcy5pc1Jlc3RpbmdBdE1heFJhZGl1c30sZ2V0IHRyYW5zbGF0aW9uRnJhY3Rpb24oKXtyZXR1cm4gTWF0aC5taW4oMSx0aGlzLnJhZGl1cy90aGlzLmNvbnRhaW5lck1ldHJpY3Muc2l6ZSoyL01hdGguc3FydCgyKSl9LGdldCB4Tm93KCl7cmV0dXJuIHRoaXMueEVuZD90aGlzLnhTdGFydCt0aGlzLnRyYW5zbGF0aW9uRnJhY3Rpb24qKHRoaXMueEVuZC10aGlzLnhTdGFydCk6dGhpcy54U3RhcnR9LGdldCB5Tm93KCl7cmV0dXJuIHRoaXMueUVuZD90aGlzLnlTdGFydCt0aGlzLnRyYW5zbGF0aW9uRnJhY3Rpb24qKHRoaXMueUVuZC10aGlzLnlTdGFydCk6dGhpcy55U3RhcnR9LGdldCBpc01vdXNlRG93bigpe3JldHVybiB0aGlzLm1vdXNlRG93blN0YXJ0JiYhdGhpcy5tb3VzZVVwU3RhcnR9LHJlc2V0SW50ZXJhY3Rpb25TdGF0ZTpmdW5jdGlvbigpe3RoaXMubWF4UmFkaXVzPTAsdGhpcy5tb3VzZURvd25TdGFydD0wLHRoaXMubW91c2VVcFN0YXJ0PTAsdGhpcy54U3RhcnQ9MCx0aGlzLnlTdGFydD0wLHRoaXMueEVuZD0wLHRoaXMueUVuZD0wLHRoaXMuc2xpZGVEaXN0YW5jZT0wLHRoaXMuY29udGFpbmVyTWV0cmljcz1uZXcgJG8odGhpcy5lbGVtZW50KX0sZHJhdzpmdW5jdGlvbigpe3ZhciB0LGUsbjt0aGlzLndhdmUuc3R5bGUub3BhY2l0eT10aGlzLm9wYWNpdHksdD10aGlzLnJhZGl1cy8odGhpcy5jb250YWluZXJNZXRyaWNzLnNpemUvMiksdGhpcy53YXZlQ29udGFpbmVyLnN0eWxlLndlYmtpdFRyYW5zZm9ybT0idHJhbnNsYXRlKCIrKGU9dGhpcy54Tm93LXRoaXMuY29udGFpbmVyTWV0cmljcy53aWR0aC8yKSsicHgsICIrKG49dGhpcy55Tm93LXRoaXMuY29udGFpbmVyTWV0cmljcy5oZWlnaHQvMikrInB4KSIsdGhpcy53YXZlQ29udGFpbmVyLnN0eWxlLnRyYW5zZm9ybT0idHJhbnNsYXRlM2QoIitlKyJweCwgIituKyJweCwgMCkiLHRoaXMud2F2ZS5zdHlsZS53ZWJraXRUcmFuc2Zvcm09InNjYWxlKCIrdCsiLCIrdCsiKSIsdGhpcy53YXZlLnN0eWxlLnRyYW5zZm9ybT0ic2NhbGUzZCgiK3QrIiwiK3QrIiwxKSJ9LGRvd25BY3Rpb246ZnVuY3Rpb24odCl7dmFyIGU9dGhpcy5jb250YWluZXJNZXRyaWNzLndpZHRoLzIsbj10aGlzLmNvbnRhaW5lck1ldHJpY3MuaGVpZ2h0LzI7dGhpcy5yZXNldEludGVyYWN0aW9uU3RhdGUoKSx0aGlzLm1vdXNlRG93blN0YXJ0PVhvLm5vdygpLHRoaXMuY2VudGVyPyh0aGlzLnhTdGFydD1lLHRoaXMueVN0YXJ0PW4sdGhpcy5zbGlkZURpc3RhbmNlPVhvLmRpc3RhbmNlKHRoaXMueFN0YXJ0LHRoaXMueVN0YXJ0LHRoaXMueEVuZCx0aGlzLnlFbmQpKToodGhpcy54U3RhcnQ9dD90LmRldGFpbC54LXRoaXMuY29udGFpbmVyTWV0cmljcy5ib3VuZGluZ1JlY3QubGVmdDp0aGlzLmNvbnRhaW5lck1ldHJpY3Mud2lkdGgvMix0aGlzLnlTdGFydD10P3QuZGV0YWlsLnktdGhpcy5jb250YWluZXJNZXRyaWNzLmJvdW5kaW5nUmVjdC50b3A6dGhpcy5jb250YWluZXJNZXRyaWNzLmhlaWdodC8yKSx0aGlzLnJlY2VudGVycyYmKHRoaXMueEVuZD1lLHRoaXMueUVuZD1uLHRoaXMuc2xpZGVEaXN0YW5jZT1Yby5kaXN0YW5jZSh0aGlzLnhTdGFydCx0aGlzLnlTdGFydCx0aGlzLnhFbmQsdGhpcy55RW5kKSksdGhpcy5tYXhSYWRpdXM9dGhpcy5jb250YWluZXJNZXRyaWNzLmZ1cnRoZXN0Q29ybmVyRGlzdGFuY2VGcm9tKHRoaXMueFN0YXJ0LHRoaXMueVN0YXJ0KSx0aGlzLndhdmVDb250YWluZXIuc3R5bGUudG9wPSh0aGlzLmNvbnRhaW5lck1ldHJpY3MuaGVpZ2h0LXRoaXMuY29udGFpbmVyTWV0cmljcy5zaXplKS8yKyJweCIsdGhpcy53YXZlQ29udGFpbmVyLnN0eWxlLmxlZnQ9KHRoaXMuY29udGFpbmVyTWV0cmljcy53aWR0aC10aGlzLmNvbnRhaW5lck1ldHJpY3Muc2l6ZSkvMisicHgiLHRoaXMud2F2ZUNvbnRhaW5lci5zdHlsZS53aWR0aD10aGlzLmNvbnRhaW5lck1ldHJpY3Muc2l6ZSsicHgiLHRoaXMud2F2ZUNvbnRhaW5lci5zdHlsZS5oZWlnaHQ9dGhpcy5jb250YWluZXJNZXRyaWNzLnNpemUrInB4In0sdXBBY3Rpb246ZnVuY3Rpb24odCl7dGhpcy5pc01vdXNlRG93biYmKHRoaXMubW91c2VVcFN0YXJ0PVhvLm5vdygpKX0scmVtb3ZlOmZ1bmN0aW9uKCl7cWkocWkodGhpcy53YXZlQ29udGFpbmVyKS5wYXJlbnROb2RlKS5yZW1vdmVDaGlsZCh0aGlzLndhdmVDb250YWluZXIpfX0sTnIoe190ZW1wbGF0ZTpfZWAKICAgIDxzdHlsZT4KICAgICAgOmhvc3QgewogICAgICAgIGRpc3BsYXk6IGJsb2NrOwogICAgICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTsKICAgICAgICBib3JkZXItcmFkaXVzOiBpbmhlcml0OwogICAgICAgIG92ZXJmbG93OiBoaWRkZW47CiAgICAgICAgdG9wOiAwOwogICAgICAgIGxlZnQ6IDA7CiAgICAgICAgcmlnaHQ6IDA7CiAgICAgICAgYm90dG9tOiAwOwoKICAgICAgICAvKiBTZWUgUG9seW1lckVsZW1lbnRzL3BhcGVyLWJlaGF2aW9ycy9pc3N1ZXMvMzQuIE9uIG5vbi1DaHJvbWUgYnJvd3NlcnMsCiAgICAgICAgICogY3JlYXRpbmcgYSBub2RlICh3aXRoIGEgcG9zaXRpb246YWJzb2x1dGUpIGluIHRoZSBtaWRkbGUgb2YgYW4gZXZlbnQKICAgICAgICAgKiBoYW5kbGVyICJpbnRlcnJ1cHRzIiB0aGF0IGV2ZW50IGhhbmRsZXIgKHdoaWNoIGhhcHBlbnMgd2hlbiB0aGUKICAgICAgICAgKiByaXBwbGUgaXMgY3JlYXRlZCBvbiBkZW1hbmQpICovCiAgICAgICAgcG9pbnRlci1ldmVudHM6IG5vbmU7CiAgICAgIH0KCiAgICAgIDpob3N0KFthbmltYXRpbmddKSB7CiAgICAgICAgLyogVGhpcyByZXNvbHZlcyBhIHJlbmRlcmluZyBpc3N1ZSBpbiBDaHJvbWUgKGFzIG9mIDQwKSB3aGVyZSB0aGUKICAgICAgICAgICByaXBwbGUgaXMgbm90IHByb3Blcmx5IGNsaXBwZWQgYnkgaXRzIHBhcmVudCAod2hpY2ggbWF5IGhhdmUKICAgICAgICAgICByb3VuZGVkIGNvcm5lcnMpLiBTZWU6IGh0dHA6Ly9qc2Jpbi5jb20vdGVtZXhhLzQKCiAgICAgICAgICAgTm90ZTogV2Ugb25seSBhcHBseSB0aGlzIHN0eWxlIGNvbmRpdGlvbmFsbHkuIE90aGVyd2lzZSwgdGhlIGJyb3dzZXIKICAgICAgICAgICB3aWxsIGNyZWF0ZSBhIG5ldyBjb21wb3NpdGluZyBsYXllciBmb3IgZXZlcnkgcmlwcGxlIGVsZW1lbnQgb24gdGhlCiAgICAgICAgICAgcGFnZSwgYW5kIHRoYXQgd291bGQgYmUgYmFkLiAqLwogICAgICAgIC13ZWJraXQtdHJhbnNmb3JtOiB0cmFuc2xhdGUoMCwgMCk7CiAgICAgICAgdHJhbnNmb3JtOiB0cmFuc2xhdGUzZCgwLCAwLCAwKTsKICAgICAgfQoKICAgICAgI2JhY2tncm91bmQsCiAgICAgICN3YXZlcywKICAgICAgLndhdmUtY29udGFpbmVyLAogICAgICAud2F2ZSB7CiAgICAgICAgcG9pbnRlci1ldmVudHM6IG5vbmU7CiAgICAgICAgcG9zaXRpb246IGFic29sdXRlOwogICAgICAgIHRvcDogMDsKICAgICAgICBsZWZ0OiAwOwogICAgICAgIHdpZHRoOiAxMDAlOwogICAgICAgIGhlaWdodDogMTAwJTsKICAgICAgfQoKICAgICAgI2JhY2tncm91bmQsCiAgICAgIC53YXZlIHsKICAgICAgICBvcGFjaXR5OiAwOwogICAgICB9CgogICAgICAjd2F2ZXMsCiAgICAgIC53YXZlIHsKICAgICAgICBvdmVyZmxvdzogaGlkZGVuOwogICAgICB9CgogICAgICAud2F2ZS1jb250YWluZXIsCiAgICAgIC53YXZlIHsKICAgICAgICBib3JkZXItcmFkaXVzOiA1MCU7CiAgICAgIH0KCiAgICAgIDpob3N0KC5jaXJjbGUpICNiYWNrZ3JvdW5kLAogICAgICA6aG9zdCguY2lyY2xlKSAjd2F2ZXMgewogICAgICAgIGJvcmRlci1yYWRpdXM6IDUwJTsKICAgICAgfQoKICAgICAgOmhvc3QoLmNpcmNsZSkgLndhdmUtY29udGFpbmVyIHsKICAgICAgICBvdmVyZmxvdzogaGlkZGVuOwogICAgICB9CiAgICA8L3N0eWxlPgoKICAgIDxkaXYgaWQ9ImJhY2tncm91bmQiPjwvZGl2PgogICAgPGRpdiBpZD0id2F2ZXMiPjwvZGl2PgpgLGlzOiJwYXBlci1yaXBwbGUiLGJlaGF2aW9yczpbUm9dLHByb3BlcnRpZXM6e2luaXRpYWxPcGFjaXR5Ont0eXBlOk51bWJlcix2YWx1ZTouMjV9LG9wYWNpdHlEZWNheVZlbG9jaXR5Ont0eXBlOk51bWJlcix2YWx1ZTouOH0scmVjZW50ZXJzOnt0eXBlOkJvb2xlYW4sdmFsdWU6ITF9LGNlbnRlcjp7dHlwZTpCb29sZWFuLHZhbHVlOiExfSxyaXBwbGVzOnt0eXBlOkFycmF5LHZhbHVlOmZ1bmN0aW9uKCl7cmV0dXJuW119fSxhbmltYXRpbmc6e3R5cGU6Qm9vbGVhbixyZWFkT25seTohMCxyZWZsZWN0VG9BdHRyaWJ1dGU6ITAsdmFsdWU6ITF9LGhvbGREb3duOnt0eXBlOkJvb2xlYW4sdmFsdWU6ITEsb2JzZXJ2ZXI6Il9ob2xkRG93bkNoYW5nZWQifSxub2luazp7dHlwZTpCb29sZWFuLHZhbHVlOiExfSxfYW5pbWF0aW5nOnt0eXBlOkJvb2xlYW59LF9ib3VuZEFuaW1hdGU6e3R5cGU6RnVuY3Rpb24sdmFsdWU6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5hbmltYXRlLmJpbmQodGhpcyl9fX0sZ2V0IHRhcmdldCgpe3JldHVybiB0aGlzLmtleUV2ZW50VGFyZ2V0fSxrZXlCaW5kaW5nczp7ImVudGVyOmtleWRvd24iOiJfb25FbnRlcktleWRvd24iLCJzcGFjZTprZXlkb3duIjoiX29uU3BhY2VLZXlkb3duIiwic3BhY2U6a2V5dXAiOiJfb25TcGFjZUtleXVwIn0sYXR0YWNoZWQ6ZnVuY3Rpb24oKXt0aGlzLmtleUV2ZW50VGFyZ2V0PTExPT1xaSh0aGlzKS5wYXJlbnROb2RlLm5vZGVUeXBlP3FpKHRoaXMpLmdldE93bmVyUm9vdCgpLmhvc3Q6cWkodGhpcykucGFyZW50Tm9kZTt2YXIgdD10aGlzLmtleUV2ZW50VGFyZ2V0O3RoaXMubGlzdGVuKHQsInVwIiwidWlVcEFjdGlvbiIpLHRoaXMubGlzdGVuKHQsImRvd24iLCJ1aURvd25BY3Rpb24iKX0sZGV0YWNoZWQ6ZnVuY3Rpb24oKXt0aGlzLnVubGlzdGVuKHRoaXMua2V5RXZlbnRUYXJnZXQsInVwIiwidWlVcEFjdGlvbiIpLHRoaXMudW5saXN0ZW4odGhpcy5rZXlFdmVudFRhcmdldCwiZG93biIsInVpRG93bkFjdGlvbiIpLHRoaXMua2V5RXZlbnRUYXJnZXQ9bnVsbH0sZ2V0IHNob3VsZEtlZXBBbmltYXRpbmcoKXtmb3IodmFyIHQ9MDt0PHRoaXMucmlwcGxlcy5sZW5ndGg7Kyt0KWlmKCF0aGlzLnJpcHBsZXNbdF0uaXNBbmltYXRpb25Db21wbGV0ZSlyZXR1cm4hMDtyZXR1cm4hMX0sc2ltdWxhdGVkUmlwcGxlOmZ1bmN0aW9uKCl7dGhpcy5kb3duQWN0aW9uKG51bGwpLHRoaXMuYXN5bmMoKGZ1bmN0aW9uKCl7dGhpcy51cEFjdGlvbigpfSksMSl9LHVpRG93bkFjdGlvbjpmdW5jdGlvbih0KXt0aGlzLm5vaW5rfHx0aGlzLmRvd25BY3Rpb24odCl9LGRvd25BY3Rpb246ZnVuY3Rpb24odCl7dGhpcy5ob2xkRG93biYmdGhpcy5yaXBwbGVzLmxlbmd0aD4wfHwodGhpcy5hZGRSaXBwbGUoKS5kb3duQWN0aW9uKHQpLHRoaXMuX2FuaW1hdGluZ3x8KHRoaXMuX2FuaW1hdGluZz0hMCx0aGlzLmFuaW1hdGUoKSkpfSx1aVVwQWN0aW9uOmZ1bmN0aW9uKHQpe3RoaXMubm9pbmt8fHRoaXMudXBBY3Rpb24odCl9LHVwQWN0aW9uOmZ1bmN0aW9uKHQpe3RoaXMuaG9sZERvd258fCh0aGlzLnJpcHBsZXMuZm9yRWFjaCgoZnVuY3Rpb24oZSl7ZS51cEFjdGlvbih0KX0pKSx0aGlzLl9hbmltYXRpbmc9ITAsdGhpcy5hbmltYXRlKCkpfSxvbkFuaW1hdGlvbkNvbXBsZXRlOmZ1bmN0aW9uKCl7dGhpcy5fYW5pbWF0aW5nPSExLHRoaXMuJC5iYWNrZ3JvdW5kLnN0eWxlLmJhY2tncm91bmRDb2xvcj0iIix0aGlzLmZpcmUoInRyYW5zaXRpb25lbmQiKX0sYWRkUmlwcGxlOmZ1bmN0aW9uKCl7dmFyIHQ9bmV3IEtvKHRoaXMpO3JldHVybiBxaSh0aGlzLiQud2F2ZXMpLmFwcGVuZENoaWxkKHQud2F2ZUNvbnRhaW5lciksdGhpcy4kLmJhY2tncm91bmQuc3R5bGUuYmFja2dyb3VuZENvbG9yPXQuY29sb3IsdGhpcy5yaXBwbGVzLnB1c2godCksdGhpcy5fc2V0QW5pbWF0aW5nKCEwKSx0fSxyZW1vdmVSaXBwbGU6ZnVuY3Rpb24odCl7dmFyIGU9dGhpcy5yaXBwbGVzLmluZGV4T2YodCk7ZTwwfHwodGhpcy5yaXBwbGVzLnNwbGljZShlLDEpLHQucmVtb3ZlKCksdGhpcy5yaXBwbGVzLmxlbmd0aHx8dGhpcy5fc2V0QW5pbWF0aW5nKCExKSl9LGFuaW1hdGU6ZnVuY3Rpb24oKXtpZih0aGlzLl9hbmltYXRpbmcpe3ZhciB0LGU7Zm9yKHQ9MDt0PHRoaXMucmlwcGxlcy5sZW5ndGg7Kyt0KShlPXRoaXMucmlwcGxlc1t0XSkuZHJhdygpLHRoaXMuJC5iYWNrZ3JvdW5kLnN0eWxlLm9wYWNpdHk9ZS5vdXRlck9wYWNpdHksZS5pc09wYWNpdHlGdWxseURlY2F5ZWQmJiFlLmlzUmVzdGluZ0F0TWF4UmFkaXVzJiZ0aGlzLnJlbW92ZVJpcHBsZShlKTt0aGlzLnNob3VsZEtlZXBBbmltYXRpbmd8fDAhPT10aGlzLnJpcHBsZXMubGVuZ3RoP3dpbmRvdy5yZXF1ZXN0QW5pbWF0aW9uRnJhbWUodGhpcy5fYm91bmRBbmltYXRlKTp0aGlzLm9uQW5pbWF0aW9uQ29tcGxldGUoKX19LGFuaW1hdGVSaXBwbGU6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5hbmltYXRlKCl9LF9vbkVudGVyS2V5ZG93bjpmdW5jdGlvbigpe3RoaXMudWlEb3duQWN0aW9uKCksdGhpcy5hc3luYyh0aGlzLnVpVXBBY3Rpb24sMSl9LF9vblNwYWNlS2V5ZG93bjpmdW5jdGlvbigpe3RoaXMudWlEb3duQWN0aW9uKCl9LF9vblNwYWNlS2V5dXA6ZnVuY3Rpb24oKXt0aGlzLnVpVXBBY3Rpb24oKX0sX2hvbGREb3duQ2hhbmdlZDpmdW5jdGlvbih0LGUpe3ZvaWQgMCE9PWUmJih0P3RoaXMuZG93bkFjdGlvbigpOnRoaXMudXBBY3Rpb24oKSl9fSk7Ci8qKgogICAgQGxpY2Vuc2UKICAgIENvcHlyaWdodCAoYykgMjAxNSBUaGUgUG9seW1lciBQcm9qZWN0IEF1dGhvcnMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgICBUaGlzIGNvZGUgbWF5IG9ubHkgYmUgdXNlZCB1bmRlciB0aGUgQlNEIHN0eWxlIGxpY2Vuc2UgZm91bmQgYXQKICAgIGh0dHA6Ly9wb2x5bWVyLmdpdGh1Yi5pby9MSUNFTlNFLnR4dCBUaGUgY29tcGxldGUgc2V0IG9mIGF1dGhvcnMgbWF5IGJlIGZvdW5kIGF0CiAgICBodHRwOi8vcG9seW1lci5naXRodWIuaW8vQVVUSE9SUy50eHQgVGhlIGNvbXBsZXRlIHNldCBvZiBjb250cmlidXRvcnMgbWF5IGJlCiAgICBmb3VuZCBhdCBodHRwOi8vcG9seW1lci5naXRodWIuaW8vQ09OVFJJQlVUT1JTLnR4dCBDb2RlIGRpc3RyaWJ1dGVkIGJ5IEdvb2dsZSBhcwogICAgcGFydCBvZiB0aGUgcG9seW1lciBwcm9qZWN0IGlzIGFsc28gc3ViamVjdCB0byBhbiBhZGRpdGlvbmFsIElQIHJpZ2h0cyBncmFudAogICAgZm91bmQgYXQgaHR0cDovL3BvbHltZXIuZ2l0aHViLmlvL1BBVEVOVFMudHh0CiAgICAqLwpjb25zdCBabz17cHJvcGVydGllczp7bm9pbms6e3R5cGU6Qm9vbGVhbixvYnNlcnZlcjoiX25vaW5rQ2hhbmdlZCJ9LF9yaXBwbGVDb250YWluZXI6e3R5cGU6T2JqZWN0fX0sX2J1dHRvblN0YXRlQ2hhbmdlZDpmdW5jdGlvbigpe3RoaXMuZm9jdXNlZCYmdGhpcy5lbnN1cmVSaXBwbGUoKX0sX2Rvd25IYW5kbGVyOmZ1bmN0aW9uKHQpe3FvLl9kb3duSGFuZGxlci5jYWxsKHRoaXMsdCksdGhpcy5wcmVzc2VkJiZ0aGlzLmVuc3VyZVJpcHBsZSh0KX0sZW5zdXJlUmlwcGxlOmZ1bmN0aW9uKHQpe2lmKCF0aGlzLmhhc1JpcHBsZSgpKXt0aGlzLl9yaXBwbGU9dGhpcy5fY3JlYXRlUmlwcGxlKCksdGhpcy5fcmlwcGxlLm5vaW5rPXRoaXMubm9pbms7dmFyIGU9dGhpcy5fcmlwcGxlQ29udGFpbmVyfHx0aGlzLnJvb3Q7aWYoZSYmcWkoZSkuYXBwZW5kQ2hpbGQodGhpcy5fcmlwcGxlKSx0KXt2YXIgbj1xaSh0aGlzLl9yaXBwbGVDb250YWluZXJ8fHRoaXMpLGk9cWkodCkucm9vdFRhcmdldDtuLmRlZXBDb250YWlucyhpKSYmdGhpcy5fcmlwcGxlLnVpRG93bkFjdGlvbih0KX19fSxnZXRSaXBwbGU6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5lbnN1cmVSaXBwbGUoKSx0aGlzLl9yaXBwbGV9LGhhc1JpcHBsZTpmdW5jdGlvbigpe3JldHVybiBCb29sZWFuKHRoaXMuX3JpcHBsZSl9LF9jcmVhdGVSaXBwbGU6ZnVuY3Rpb24oKXtyZXR1cm4gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgicGFwZXItcmlwcGxlIil9LF9ub2lua0NoYW5nZWQ6ZnVuY3Rpb24odCl7dGhpcy5oYXNSaXBwbGUoKSYmKHRoaXMuX3JpcHBsZS5ub2luaz10KX19LEpvPXtwcm9wZXJ0aWVzOntlbGV2YXRpb246e3R5cGU6TnVtYmVyLHJlZmxlY3RUb0F0dHJpYnV0ZTohMCxyZWFkT25seTohMH19LG9ic2VydmVyczpbIl9jYWxjdWxhdGVFbGV2YXRpb24oZm9jdXNlZCwgZGlzYWJsZWQsIGFjdGl2ZSwgcHJlc3NlZCwgcmVjZWl2ZWRGb2N1c0Zyb21LZXlib2FyZCkiLCJfY29tcHV0ZUtleWJvYXJkQ2xhc3MocmVjZWl2ZWRGb2N1c0Zyb21LZXlib2FyZCkiXSxob3N0QXR0cmlidXRlczp7cm9sZToiYnV0dG9uIix0YWJpbmRleDoiMCIsYW5pbWF0ZWQ6ITB9LF9jYWxjdWxhdGVFbGV2YXRpb246ZnVuY3Rpb24oKXt2YXIgdD0xO3RoaXMuZGlzYWJsZWQ/dD0wOnRoaXMuYWN0aXZlfHx0aGlzLnByZXNzZWQ/dD00OnRoaXMucmVjZWl2ZWRGb2N1c0Zyb21LZXlib2FyZCYmKHQ9MyksdGhpcy5fc2V0RWxldmF0aW9uKHQpfSxfY29tcHV0ZUtleWJvYXJkQ2xhc3M6ZnVuY3Rpb24odCl7dGhpcy50b2dnbGVDbGFzcygia2V5Ym9hcmQtZm9jdXMiLHQpfSxfc3BhY2VLZXlEb3duSGFuZGxlcjpmdW5jdGlvbih0KXtxby5fc3BhY2VLZXlEb3duSGFuZGxlci5jYWxsKHRoaXMsdCksdGhpcy5oYXNSaXBwbGUoKSYmdGhpcy5nZXRSaXBwbGUoKS5yaXBwbGVzLmxlbmd0aDwxJiZ0aGlzLl9yaXBwbGUudWlEb3duQWN0aW9uKCl9LF9zcGFjZUtleVVwSGFuZGxlcjpmdW5jdGlvbih0KXtxby5fc3BhY2VLZXlVcEhhbmRsZXIuY2FsbCh0aGlzLHQpLHRoaXMuaGFzUmlwcGxlKCkmJnRoaXMuX3JpcHBsZS51aVVwQWN0aW9uKCl9fSxRbz1bWW8sV28sWm8sSm9dLHRhPV9lYAogIDxzdHlsZSBpbmNsdWRlPSJwYXBlci1tYXRlcmlhbC1zdHlsZXMiPgogICAgLyogTmVlZCB0byBzcGVjaWZ5IHRoZSBzYW1lIHNwZWNpZmljaXR5IGFzIHRoZSBzdHlsZXMgaW1wb3J0ZWQgZnJvbSBwYXBlci1tYXRlcmlhbC4gKi8KICAgIDpob3N0IHsKICAgICAgQGFwcGx5IC0tbGF5b3V0LWlubGluZTsKICAgICAgQGFwcGx5IC0tbGF5b3V0LWNlbnRlci1jZW50ZXI7CiAgICAgIHBvc2l0aW9uOiByZWxhdGl2ZTsKICAgICAgYm94LXNpemluZzogYm9yZGVyLWJveDsKICAgICAgbWluLXdpZHRoOiA1LjE0ZW07CiAgICAgIG1hcmdpbjogMCAwLjI5ZW07CiAgICAgIGJhY2tncm91bmQ6IHRyYW5zcGFyZW50OwogICAgICAtd2Via2l0LXRhcC1oaWdobGlnaHQtY29sb3I6IHJnYmEoMCwgMCwgMCwgMCk7CiAgICAgIC13ZWJraXQtdGFwLWhpZ2hsaWdodC1jb2xvcjogdHJhbnNwYXJlbnQ7CiAgICAgIGZvbnQ6IGluaGVyaXQ7CiAgICAgIHRleHQtdHJhbnNmb3JtOiB1cHBlcmNhc2U7CiAgICAgIG91dGxpbmUtd2lkdGg6IDA7CiAgICAgIGJvcmRlci1yYWRpdXM6IDNweDsKICAgICAgLW1vei11c2VyLXNlbGVjdDogbm9uZTsKICAgICAgLW1zLXVzZXItc2VsZWN0OiBub25lOwogICAgICAtd2Via2l0LXVzZXItc2VsZWN0OiBub25lOwogICAgICB1c2VyLXNlbGVjdDogbm9uZTsKICAgICAgY3Vyc29yOiBwb2ludGVyOwogICAgICB6LWluZGV4OiAwOwogICAgICBwYWRkaW5nOiAwLjdlbSAwLjU3ZW07CgogICAgICBAYXBwbHkgLS1wYXBlci1mb250LWNvbW1vbi1iYXNlOwogICAgICBAYXBwbHkgLS1wYXBlci1idXR0b247CiAgICB9CgogICAgOmhvc3QoW2VsZXZhdGlvbj0iMSJdKSB7CiAgICAgIEBhcHBseSAtLXBhcGVyLW1hdGVyaWFsLWVsZXZhdGlvbi0xOwogICAgfQoKICAgIDpob3N0KFtlbGV2YXRpb249IjIiXSkgewogICAgICBAYXBwbHkgLS1wYXBlci1tYXRlcmlhbC1lbGV2YXRpb24tMjsKICAgIH0KCiAgICA6aG9zdChbZWxldmF0aW9uPSIzIl0pIHsKICAgICAgQGFwcGx5IC0tcGFwZXItbWF0ZXJpYWwtZWxldmF0aW9uLTM7CiAgICB9CgogICAgOmhvc3QoW2VsZXZhdGlvbj0iNCJdKSB7CiAgICAgIEBhcHBseSAtLXBhcGVyLW1hdGVyaWFsLWVsZXZhdGlvbi00OwogICAgfQoKICAgIDpob3N0KFtlbGV2YXRpb249IjUiXSkgewogICAgICBAYXBwbHkgLS1wYXBlci1tYXRlcmlhbC1lbGV2YXRpb24tNTsKICAgIH0KCiAgICA6aG9zdChbaGlkZGVuXSkgewogICAgICBkaXNwbGF5OiBub25lICFpbXBvcnRhbnQ7CiAgICB9CgogICAgOmhvc3QoW3JhaXNlZF0ua2V5Ym9hcmQtZm9jdXMpIHsKICAgICAgZm9udC13ZWlnaHQ6IGJvbGQ7CiAgICAgIEBhcHBseSAtLXBhcGVyLWJ1dHRvbi1yYWlzZWQta2V5Ym9hcmQtZm9jdXM7CiAgICB9CgogICAgOmhvc3QoOm5vdChbcmFpc2VkXSkua2V5Ym9hcmQtZm9jdXMpIHsKICAgICAgZm9udC13ZWlnaHQ6IGJvbGQ7CiAgICAgIEBhcHBseSAtLXBhcGVyLWJ1dHRvbi1mbGF0LWtleWJvYXJkLWZvY3VzOwogICAgfQoKICAgIDpob3N0KFtkaXNhYmxlZF0pIHsKICAgICAgYmFja2dyb3VuZDogbm9uZTsKICAgICAgY29sb3I6ICNhOGE4YTg7CiAgICAgIGN1cnNvcjogYXV0bzsKICAgICAgcG9pbnRlci1ldmVudHM6IG5vbmU7CgogICAgICBAYXBwbHkgLS1wYXBlci1idXR0b24tZGlzYWJsZWQ7CiAgICB9CgogICAgOmhvc3QoW2Rpc2FibGVkXVtyYWlzZWRdKSB7CiAgICAgIGJhY2tncm91bmQ6ICNlYWVhZWE7CiAgICB9CgoKICAgIDpob3N0KFthbmltYXRlZF0pIHsKICAgICAgQGFwcGx5IC0tc2hhZG93LXRyYW5zaXRpb247CiAgICB9CgogICAgcGFwZXItcmlwcGxlIHsKICAgICAgY29sb3I6IHZhcigtLXBhcGVyLWJ1dHRvbi1pbmstY29sb3IpOwogICAgfQogIDwvc3R5bGU+CgogIDxzbG90Pjwvc2xvdD5gOwovKioKICAgIEBsaWNlbnNlCiAgICBDb3B5cmlnaHQgKGMpIDIwMTUgVGhlIFBvbHltZXIgUHJvamVjdCBBdXRob3JzLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICAgVGhpcyBjb2RlIG1heSBvbmx5IGJlIHVzZWQgdW5kZXIgdGhlIEJTRCBzdHlsZSBsaWNlbnNlIGZvdW5kIGF0CiAgICBodHRwOi8vcG9seW1lci5naXRodWIuaW8vTElDRU5TRS50eHQgVGhlIGNvbXBsZXRlIHNldCBvZiBhdXRob3JzIG1heSBiZSBmb3VuZCBhdAogICAgaHR0cDovL3BvbHltZXIuZ2l0aHViLmlvL0FVVEhPUlMudHh0IFRoZSBjb21wbGV0ZSBzZXQgb2YgY29udHJpYnV0b3JzIG1heSBiZQogICAgZm91bmQgYXQgaHR0cDovL3BvbHltZXIuZ2l0aHViLmlvL0NPTlRSSUJVVE9SUy50eHQgQ29kZSBkaXN0cmlidXRlZCBieSBHb29nbGUgYXMKICAgIHBhcnQgb2YgdGhlIHBvbHltZXIgcHJvamVjdCBpcyBhbHNvIHN1YmplY3QgdG8gYW4gYWRkaXRpb25hbCBJUCByaWdodHMgZ3JhbnQKICAgIGZvdW5kIGF0IGh0dHA6Ly9wb2x5bWVyLmdpdGh1Yi5pby9QQVRFTlRTLnR4dAogICAgKi90YS5zZXRBdHRyaWJ1dGUoInN0cmlwLXdoaXRlc3BhY2UiLCIiKSxOcih7X3RlbXBsYXRlOnRhLGlzOiJwYXBlci1idXR0b24iLGJlaGF2aW9yczpbUW9dLHByb3BlcnRpZXM6e3JhaXNlZDp7dHlwZTpCb29sZWFuLHJlZmxlY3RUb0F0dHJpYnV0ZTohMCx2YWx1ZTohMSxvYnNlcnZlcjoiX2NhbGN1bGF0ZUVsZXZhdGlvbiJ9fSxfY2FsY3VsYXRlRWxldmF0aW9uOmZ1bmN0aW9uKCl7dGhpcy5yYWlzZWQ/Sm8uX2NhbGN1bGF0ZUVsZXZhdGlvbi5hcHBseSh0aGlzKTp0aGlzLl9zZXRFbGV2YXRpb24oMCl9fSk7Ci8qKgogICAgQGxpY2Vuc2UKICAgIENvcHlyaWdodCAoYykgMjAxNSBUaGUgUG9seW1lciBQcm9qZWN0IEF1dGhvcnMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgICBUaGlzIGNvZGUgbWF5IG9ubHkgYmUgdXNlZCB1bmRlciB0aGUgQlNEIHN0eWxlIGxpY2Vuc2UgZm91bmQgYXQKICAgIGh0dHA6Ly9wb2x5bWVyLmdpdGh1Yi5pby9MSUNFTlNFLnR4dCBUaGUgY29tcGxldGUgc2V0IG9mIGF1dGhvcnMgbWF5IGJlIGZvdW5kIGF0CiAgICBodHRwOi8vcG9seW1lci5naXRodWIuaW8vQVVUSE9SUy50eHQgVGhlIGNvbXBsZXRlIHNldCBvZiBjb250cmlidXRvcnMgbWF5IGJlCiAgICBmb3VuZCBhdCBodHRwOi8vcG9seW1lci5naXRodWIuaW8vQ09OVFJJQlVUT1JTLnR4dCBDb2RlIGRpc3RyaWJ1dGVkIGJ5IEdvb2dsZSBhcwogICAgcGFydCBvZiB0aGUgcG9seW1lciBwcm9qZWN0IGlzIGFsc28gc3ViamVjdCB0byBhbiBhZGRpdGlvbmFsIElQIHJpZ2h0cyBncmFudAogICAgZm91bmQgYXQgaHR0cDovL3BvbHltZXIuZ2l0aHViLmlvL1BBVEVOVFMudHh0CiAgICAqLwpjb25zdCBlYT1fZWAKPGN1c3RvbS1zdHlsZT4KICA8c3R5bGUgaXM9ImN1c3RvbS1zdHlsZSI+CiAgICBodG1sIHsKCiAgICAgIC8qIE1hdGVyaWFsIERlc2lnbiBjb2xvciBwYWxldHRlIGZvciBHb29nbGUgcHJvZHVjdHMgKi8KCiAgICAgIC0tZ29vZ2xlLXJlZC0xMDA6ICNmNGM3YzM7CiAgICAgIC0tZ29vZ2xlLXJlZC0zMDA6ICNlNjdjNzM7CiAgICAgIC0tZ29vZ2xlLXJlZC01MDA6ICNkYjQ0Mzc7CiAgICAgIC0tZ29vZ2xlLXJlZC03MDA6ICNjNTM5Mjk7CgogICAgICAtLWdvb2dsZS1ibHVlLTEwMDogI2M2ZGFmYzsKICAgICAgLS1nb29nbGUtYmx1ZS0zMDA6ICM3YmFhZjc7CiAgICAgIC0tZ29vZ2xlLWJsdWUtNTAwOiAjNDI4NWY0OwogICAgICAtLWdvb2dsZS1ibHVlLTcwMDogIzMzNjdkNjsKCiAgICAgIC0tZ29vZ2xlLWdyZWVuLTEwMDogI2I3ZTFjZDsKICAgICAgLS1nb29nbGUtZ3JlZW4tMzAwOiAjNTdiYjhhOwogICAgICAtLWdvb2dsZS1ncmVlbi01MDA6ICMwZjlkNTg7CiAgICAgIC0tZ29vZ2xlLWdyZWVuLTcwMDogIzBiODA0MzsKCiAgICAgIC0tZ29vZ2xlLXllbGxvdy0xMDA6ICNmY2U4YjI7CiAgICAgIC0tZ29vZ2xlLXllbGxvdy0zMDA6ICNmN2NiNGQ7CiAgICAgIC0tZ29vZ2xlLXllbGxvdy01MDA6ICNmNGI0MDA7CiAgICAgIC0tZ29vZ2xlLXllbGxvdy03MDA6ICNmMDkzMDA7CgogICAgICAtLWdvb2dsZS1ncmV5LTEwMDogI2Y1ZjVmNTsKICAgICAgLS1nb29nbGUtZ3JleS0zMDA6ICNlMGUwZTA7CiAgICAgIC0tZ29vZ2xlLWdyZXktNTAwOiAjOWU5ZTllOwogICAgICAtLWdvb2dsZS1ncmV5LTcwMDogIzYxNjE2MTsKCiAgICAgIC8qIE1hdGVyaWFsIERlc2lnbiBjb2xvciBwYWxldHRlIGZyb20gb25saW5lIHNwZWMgZG9jdW1lbnQgKi8KCiAgICAgIC0tcGFwZXItcmVkLTUwOiAjZmZlYmVlOwogICAgICAtLXBhcGVyLXJlZC0xMDA6ICNmZmNkZDI7CiAgICAgIC0tcGFwZXItcmVkLTIwMDogI2VmOWE5YTsKICAgICAgLS1wYXBlci1yZWQtMzAwOiAjZTU3MzczOwogICAgICAtLXBhcGVyLXJlZC00MDA6ICNlZjUzNTA7CiAgICAgIC0tcGFwZXItcmVkLTUwMDogI2Y0NDMzNjsKICAgICAgLS1wYXBlci1yZWQtNjAwOiAjZTUzOTM1OwogICAgICAtLXBhcGVyLXJlZC03MDA6ICNkMzJmMmY7CiAgICAgIC0tcGFwZXItcmVkLTgwMDogI2M2MjgyODsKICAgICAgLS1wYXBlci1yZWQtOTAwOiAjYjcxYzFjOwogICAgICAtLXBhcGVyLXJlZC1hMTAwOiAjZmY4YTgwOwogICAgICAtLXBhcGVyLXJlZC1hMjAwOiAjZmY1MjUyOwogICAgICAtLXBhcGVyLXJlZC1hNDAwOiAjZmYxNzQ0OwogICAgICAtLXBhcGVyLXJlZC1hNzAwOiAjZDUwMDAwOwoKICAgICAgLS1wYXBlci1waW5rLTUwOiAjZmNlNGVjOwogICAgICAtLXBhcGVyLXBpbmstMTAwOiAjZjhiYmQwOwogICAgICAtLXBhcGVyLXBpbmstMjAwOiAjZjQ4ZmIxOwogICAgICAtLXBhcGVyLXBpbmstMzAwOiAjZjA2MjkyOwogICAgICAtLXBhcGVyLXBpbmstNDAwOiAjZWM0MDdhOwogICAgICAtLXBhcGVyLXBpbmstNTAwOiAjZTkxZTYzOwogICAgICAtLXBhcGVyLXBpbmstNjAwOiAjZDgxYjYwOwogICAgICAtLXBhcGVyLXBpbmstNzAwOiAjYzIxODViOwogICAgICAtLXBhcGVyLXBpbmstODAwOiAjYWQxNDU3OwogICAgICAtLXBhcGVyLXBpbmstOTAwOiAjODgwZTRmOwogICAgICAtLXBhcGVyLXBpbmstYTEwMDogI2ZmODBhYjsKICAgICAgLS1wYXBlci1waW5rLWEyMDA6ICNmZjQwODE7CiAgICAgIC0tcGFwZXItcGluay1hNDAwOiAjZjUwMDU3OwogICAgICAtLXBhcGVyLXBpbmstYTcwMDogI2M1MTE2MjsKCiAgICAgIC0tcGFwZXItcHVycGxlLTUwOiAjZjNlNWY1OwogICAgICAtLXBhcGVyLXB1cnBsZS0xMDA6ICNlMWJlZTc7CiAgICAgIC0tcGFwZXItcHVycGxlLTIwMDogI2NlOTNkODsKICAgICAgLS1wYXBlci1wdXJwbGUtMzAwOiAjYmE2OGM4OwogICAgICAtLXBhcGVyLXB1cnBsZS00MDA6ICNhYjQ3YmM7CiAgICAgIC0tcGFwZXItcHVycGxlLTUwMDogIzljMjdiMDsKICAgICAgLS1wYXBlci1wdXJwbGUtNjAwOiAjOGUyNGFhOwogICAgICAtLXBhcGVyLXB1cnBsZS03MDA6ICM3YjFmYTI7CiAgICAgIC0tcGFwZXItcHVycGxlLTgwMDogIzZhMWI5YTsKICAgICAgLS1wYXBlci1wdXJwbGUtOTAwOiAjNGExNDhjOwogICAgICAtLXBhcGVyLXB1cnBsZS1hMTAwOiAjZWE4MGZjOwogICAgICAtLXBhcGVyLXB1cnBsZS1hMjAwOiAjZTA0MGZiOwogICAgICAtLXBhcGVyLXB1cnBsZS1hNDAwOiAjZDUwMGY5OwogICAgICAtLXBhcGVyLXB1cnBsZS1hNzAwOiAjYWEwMGZmOwoKICAgICAgLS1wYXBlci1kZWVwLXB1cnBsZS01MDogI2VkZTdmNjsKICAgICAgLS1wYXBlci1kZWVwLXB1cnBsZS0xMDA6ICNkMWM0ZTk7CiAgICAgIC0tcGFwZXItZGVlcC1wdXJwbGUtMjAwOiAjYjM5ZGRiOwogICAgICAtLXBhcGVyLWRlZXAtcHVycGxlLTMwMDogIzk1NzVjZDsKICAgICAgLS1wYXBlci1kZWVwLXB1cnBsZS00MDA6ICM3ZTU3YzI7CiAgICAgIC0tcGFwZXItZGVlcC1wdXJwbGUtNTAwOiAjNjczYWI3OwogICAgICAtLXBhcGVyLWRlZXAtcHVycGxlLTYwMDogIzVlMzViMTsKICAgICAgLS1wYXBlci1kZWVwLXB1cnBsZS03MDA6ICM1MTJkYTg7CiAgICAgIC0tcGFwZXItZGVlcC1wdXJwbGUtODAwOiAjNDUyN2EwOwogICAgICAtLXBhcGVyLWRlZXAtcHVycGxlLTkwMDogIzMxMWI5MjsKICAgICAgLS1wYXBlci1kZWVwLXB1cnBsZS1hMTAwOiAjYjM4OGZmOwogICAgICAtLXBhcGVyLWRlZXAtcHVycGxlLWEyMDA6ICM3YzRkZmY7CiAgICAgIC0tcGFwZXItZGVlcC1wdXJwbGUtYTQwMDogIzY1MWZmZjsKICAgICAgLS1wYXBlci1kZWVwLXB1cnBsZS1hNzAwOiAjNjIwMGVhOwoKICAgICAgLS1wYXBlci1pbmRpZ28tNTA6ICNlOGVhZjY7CiAgICAgIC0tcGFwZXItaW5kaWdvLTEwMDogI2M1Y2FlOTsKICAgICAgLS1wYXBlci1pbmRpZ28tMjAwOiAjOWZhOGRhOwogICAgICAtLXBhcGVyLWluZGlnby0zMDA6ICM3OTg2Y2I7CiAgICAgIC0tcGFwZXItaW5kaWdvLTQwMDogIzVjNmJjMDsKICAgICAgLS1wYXBlci1pbmRpZ28tNTAwOiAjM2Y1MWI1OwogICAgICAtLXBhcGVyLWluZGlnby02MDA6ICMzOTQ5YWI7CiAgICAgIC0tcGFwZXItaW5kaWdvLTcwMDogIzMwM2Y5ZjsKICAgICAgLS1wYXBlci1pbmRpZ28tODAwOiAjMjgzNTkzOwogICAgICAtLXBhcGVyLWluZGlnby05MDA6ICMxYTIzN2U7CiAgICAgIC0tcGFwZXItaW5kaWdvLWExMDA6ICM4YzllZmY7CiAgICAgIC0tcGFwZXItaW5kaWdvLWEyMDA6ICM1MzZkZmU7CiAgICAgIC0tcGFwZXItaW5kaWdvLWE0MDA6ICMzZDVhZmU7CiAgICAgIC0tcGFwZXItaW5kaWdvLWE3MDA6ICMzMDRmZmU7CgogICAgICAtLXBhcGVyLWJsdWUtNTA6ICNlM2YyZmQ7CiAgICAgIC0tcGFwZXItYmx1ZS0xMDA6ICNiYmRlZmI7CiAgICAgIC0tcGFwZXItYmx1ZS0yMDA6ICM5MGNhZjk7CiAgICAgIC0tcGFwZXItYmx1ZS0zMDA6ICM2NGI1ZjY7CiAgICAgIC0tcGFwZXItYmx1ZS00MDA6ICM0MmE1ZjU7CiAgICAgIC0tcGFwZXItYmx1ZS01MDA6ICMyMTk2ZjM7CiAgICAgIC0tcGFwZXItYmx1ZS02MDA6ICMxZTg4ZTU7CiAgICAgIC0tcGFwZXItYmx1ZS03MDA6ICMxOTc2ZDI7CiAgICAgIC0tcGFwZXItYmx1ZS04MDA6ICMxNTY1YzA7CiAgICAgIC0tcGFwZXItYmx1ZS05MDA6ICMwZDQ3YTE7CiAgICAgIC0tcGFwZXItYmx1ZS1hMTAwOiAjODJiMWZmOwogICAgICAtLXBhcGVyLWJsdWUtYTIwMDogIzQ0OGFmZjsKICAgICAgLS1wYXBlci1ibHVlLWE0MDA6ICMyOTc5ZmY7CiAgICAgIC0tcGFwZXItYmx1ZS1hNzAwOiAjMjk2MmZmOwoKICAgICAgLS1wYXBlci1saWdodC1ibHVlLTUwOiAjZTFmNWZlOwogICAgICAtLXBhcGVyLWxpZ2h0LWJsdWUtMTAwOiAjYjNlNWZjOwogICAgICAtLXBhcGVyLWxpZ2h0LWJsdWUtMjAwOiAjODFkNGZhOwogICAgICAtLXBhcGVyLWxpZ2h0LWJsdWUtMzAwOiAjNGZjM2Y3OwogICAgICAtLXBhcGVyLWxpZ2h0LWJsdWUtNDAwOiAjMjliNmY2OwogICAgICAtLXBhcGVyLWxpZ2h0LWJsdWUtNTAwOiAjMDNhOWY0OwogICAgICAtLXBhcGVyLWxpZ2h0LWJsdWUtNjAwOiAjMDM5YmU1OwogICAgICAtLXBhcGVyLWxpZ2h0LWJsdWUtNzAwOiAjMDI4OGQxOwogICAgICAtLXBhcGVyLWxpZ2h0LWJsdWUtODAwOiAjMDI3N2JkOwogICAgICAtLXBhcGVyLWxpZ2h0LWJsdWUtOTAwOiAjMDE1NzliOwogICAgICAtLXBhcGVyLWxpZ2h0LWJsdWUtYTEwMDogIzgwZDhmZjsKICAgICAgLS1wYXBlci1saWdodC1ibHVlLWEyMDA6ICM0MGM0ZmY7CiAgICAgIC0tcGFwZXItbGlnaHQtYmx1ZS1hNDAwOiAjMDBiMGZmOwogICAgICAtLXBhcGVyLWxpZ2h0LWJsdWUtYTcwMDogIzAwOTFlYTsKCiAgICAgIC0tcGFwZXItY3lhbi01MDogI2UwZjdmYTsKICAgICAgLS1wYXBlci1jeWFuLTEwMDogI2IyZWJmMjsKICAgICAgLS1wYXBlci1jeWFuLTIwMDogIzgwZGVlYTsKICAgICAgLS1wYXBlci1jeWFuLTMwMDogIzRkZDBlMTsKICAgICAgLS1wYXBlci1jeWFuLTQwMDogIzI2YzZkYTsKICAgICAgLS1wYXBlci1jeWFuLTUwMDogIzAwYmNkNDsKICAgICAgLS1wYXBlci1jeWFuLTYwMDogIzAwYWNjMTsKICAgICAgLS1wYXBlci1jeWFuLTcwMDogIzAwOTdhNzsKICAgICAgLS1wYXBlci1jeWFuLTgwMDogIzAwODM4ZjsKICAgICAgLS1wYXBlci1jeWFuLTkwMDogIzAwNjA2NDsKICAgICAgLS1wYXBlci1jeWFuLWExMDA6ICM4NGZmZmY7CiAgICAgIC0tcGFwZXItY3lhbi1hMjAwOiAjMThmZmZmOwogICAgICAtLXBhcGVyLWN5YW4tYTQwMDogIzAwZTVmZjsKICAgICAgLS1wYXBlci1jeWFuLWE3MDA6ICMwMGI4ZDQ7CgogICAgICAtLXBhcGVyLXRlYWwtNTA6ICNlMGYyZjE7CiAgICAgIC0tcGFwZXItdGVhbC0xMDA6ICNiMmRmZGI7CiAgICAgIC0tcGFwZXItdGVhbC0yMDA6ICM4MGNiYzQ7CiAgICAgIC0tcGFwZXItdGVhbC0zMDA6ICM0ZGI2YWM7CiAgICAgIC0tcGFwZXItdGVhbC00MDA6ICMyNmE2OWE7CiAgICAgIC0tcGFwZXItdGVhbC01MDA6ICMwMDk2ODg7CiAgICAgIC0tcGFwZXItdGVhbC02MDA6ICMwMDg5N2I7CiAgICAgIC0tcGFwZXItdGVhbC03MDA6ICMwMDc5NmI7CiAgICAgIC0tcGFwZXItdGVhbC04MDA6ICMwMDY5NWM7CiAgICAgIC0tcGFwZXItdGVhbC05MDA6ICMwMDRkNDA7CiAgICAgIC0tcGFwZXItdGVhbC1hMTAwOiAjYTdmZmViOwogICAgICAtLXBhcGVyLXRlYWwtYTIwMDogIzY0ZmZkYTsKICAgICAgLS1wYXBlci10ZWFsLWE0MDA6ICMxZGU5YjY7CiAgICAgIC0tcGFwZXItdGVhbC1hNzAwOiAjMDBiZmE1OwoKICAgICAgLS1wYXBlci1ncmVlbi01MDogI2U4ZjVlOTsKICAgICAgLS1wYXBlci1ncmVlbi0xMDA6ICNjOGU2Yzk7CiAgICAgIC0tcGFwZXItZ3JlZW4tMjAwOiAjYTVkNmE3OwogICAgICAtLXBhcGVyLWdyZWVuLTMwMDogIzgxYzc4NDsKICAgICAgLS1wYXBlci1ncmVlbi00MDA6ICM2NmJiNmE7CiAgICAgIC0tcGFwZXItZ3JlZW4tNTAwOiAjNGNhZjUwOwogICAgICAtLXBhcGVyLWdyZWVuLTYwMDogIzQzYTA0NzsKICAgICAgLS1wYXBlci1ncmVlbi03MDA6ICMzODhlM2M7CiAgICAgIC0tcGFwZXItZ3JlZW4tODAwOiAjMmU3ZDMyOwogICAgICAtLXBhcGVyLWdyZWVuLTkwMDogIzFiNWUyMDsKICAgICAgLS1wYXBlci1ncmVlbi1hMTAwOiAjYjlmNmNhOwogICAgICAtLXBhcGVyLWdyZWVuLWEyMDA6ICM2OWYwYWU7CiAgICAgIC0tcGFwZXItZ3JlZW4tYTQwMDogIzAwZTY3NjsKICAgICAgLS1wYXBlci1ncmVlbi1hNzAwOiAjMDBjODUzOwoKICAgICAgLS1wYXBlci1saWdodC1ncmVlbi01MDogI2YxZjhlOTsKICAgICAgLS1wYXBlci1saWdodC1ncmVlbi0xMDA6ICNkY2VkYzg7CiAgICAgIC0tcGFwZXItbGlnaHQtZ3JlZW4tMjAwOiAjYzVlMWE1OwogICAgICAtLXBhcGVyLWxpZ2h0LWdyZWVuLTMwMDogI2FlZDU4MTsKICAgICAgLS1wYXBlci1saWdodC1ncmVlbi00MDA6ICM5Y2NjNjU7CiAgICAgIC0tcGFwZXItbGlnaHQtZ3JlZW4tNTAwOiAjOGJjMzRhOwogICAgICAtLXBhcGVyLWxpZ2h0LWdyZWVuLTYwMDogIzdjYjM0MjsKICAgICAgLS1wYXBlci1saWdodC1ncmVlbi03MDA6ICM2ODlmMzg7CiAgICAgIC0tcGFwZXItbGlnaHQtZ3JlZW4tODAwOiAjNTU4YjJmOwogICAgICAtLXBhcGVyLWxpZ2h0LWdyZWVuLTkwMDogIzMzNjkxZTsKICAgICAgLS1wYXBlci1saWdodC1ncmVlbi1hMTAwOiAjY2NmZjkwOwogICAgICAtLXBhcGVyLWxpZ2h0LWdyZWVuLWEyMDA6ICNiMmZmNTk7CiAgICAgIC0tcGFwZXItbGlnaHQtZ3JlZW4tYTQwMDogIzc2ZmYwMzsKICAgICAgLS1wYXBlci1saWdodC1ncmVlbi1hNzAwOiAjNjRkZDE3OwoKICAgICAgLS1wYXBlci1saW1lLTUwOiAjZjlmYmU3OwogICAgICAtLXBhcGVyLWxpbWUtMTAwOiAjZjBmNGMzOwogICAgICAtLXBhcGVyLWxpbWUtMjAwOiAjZTZlZTljOwogICAgICAtLXBhcGVyLWxpbWUtMzAwOiAjZGNlNzc1OwogICAgICAtLXBhcGVyLWxpbWUtNDAwOiAjZDRlMTU3OwogICAgICAtLXBhcGVyLWxpbWUtNTAwOiAjY2RkYzM5OwogICAgICAtLXBhcGVyLWxpbWUtNjAwOiAjYzBjYTMzOwogICAgICAtLXBhcGVyLWxpbWUtNzAwOiAjYWZiNDJiOwogICAgICAtLXBhcGVyLWxpbWUtODAwOiAjOWU5ZDI0OwogICAgICAtLXBhcGVyLWxpbWUtOTAwOiAjODI3NzE3OwogICAgICAtLXBhcGVyLWxpbWUtYTEwMDogI2Y0ZmY4MTsKICAgICAgLS1wYXBlci1saW1lLWEyMDA6ICNlZWZmNDE7CiAgICAgIC0tcGFwZXItbGltZS1hNDAwOiAjYzZmZjAwOwogICAgICAtLXBhcGVyLWxpbWUtYTcwMDogI2FlZWEwMDsKCiAgICAgIC0tcGFwZXIteWVsbG93LTUwOiAjZmZmZGU3OwogICAgICAtLXBhcGVyLXllbGxvdy0xMDA6ICNmZmY5YzQ7CiAgICAgIC0tcGFwZXIteWVsbG93LTIwMDogI2ZmZjU5ZDsKICAgICAgLS1wYXBlci15ZWxsb3ctMzAwOiAjZmZmMTc2OwogICAgICAtLXBhcGVyLXllbGxvdy00MDA6ICNmZmVlNTg7CiAgICAgIC0tcGFwZXIteWVsbG93LTUwMDogI2ZmZWIzYjsKICAgICAgLS1wYXBlci15ZWxsb3ctNjAwOiAjZmRkODM1OwogICAgICAtLXBhcGVyLXllbGxvdy03MDA6ICNmYmMwMmQ7CiAgICAgIC0tcGFwZXIteWVsbG93LTgwMDogI2Y5YTgyNTsKICAgICAgLS1wYXBlci15ZWxsb3ctOTAwOiAjZjU3ZjE3OwogICAgICAtLXBhcGVyLXllbGxvdy1hMTAwOiAjZmZmZjhkOwogICAgICAtLXBhcGVyLXllbGxvdy1hMjAwOiAjZmZmZjAwOwogICAgICAtLXBhcGVyLXllbGxvdy1hNDAwOiAjZmZlYTAwOwogICAgICAtLXBhcGVyLXllbGxvdy1hNzAwOiAjZmZkNjAwOwoKICAgICAgLS1wYXBlci1hbWJlci01MDogI2ZmZjhlMTsKICAgICAgLS1wYXBlci1hbWJlci0xMDA6ICNmZmVjYjM7CiAgICAgIC0tcGFwZXItYW1iZXItMjAwOiAjZmZlMDgyOwogICAgICAtLXBhcGVyLWFtYmVyLTMwMDogI2ZmZDU0ZjsKICAgICAgLS1wYXBlci1hbWJlci00MDA6ICNmZmNhMjg7CiAgICAgIC0tcGFwZXItYW1iZXItNTAwOiAjZmZjMTA3OwogICAgICAtLXBhcGVyLWFtYmVyLTYwMDogI2ZmYjMwMDsKICAgICAgLS1wYXBlci1hbWJlci03MDA6ICNmZmEwMDA7CiAgICAgIC0tcGFwZXItYW1iZXItODAwOiAjZmY4ZjAwOwogICAgICAtLXBhcGVyLWFtYmVyLTkwMDogI2ZmNmYwMDsKICAgICAgLS1wYXBlci1hbWJlci1hMTAwOiAjZmZlNTdmOwogICAgICAtLXBhcGVyLWFtYmVyLWEyMDA6ICNmZmQ3NDA7CiAgICAgIC0tcGFwZXItYW1iZXItYTQwMDogI2ZmYzQwMDsKICAgICAgLS1wYXBlci1hbWJlci1hNzAwOiAjZmZhYjAwOwoKICAgICAgLS1wYXBlci1vcmFuZ2UtNTA6ICNmZmYzZTA7CiAgICAgIC0tcGFwZXItb3JhbmdlLTEwMDogI2ZmZTBiMjsKICAgICAgLS1wYXBlci1vcmFuZ2UtMjAwOiAjZmZjYzgwOwogICAgICAtLXBhcGVyLW9yYW5nZS0zMDA6ICNmZmI3NGQ7CiAgICAgIC0tcGFwZXItb3JhbmdlLTQwMDogI2ZmYTcyNjsKICAgICAgLS1wYXBlci1vcmFuZ2UtNTAwOiAjZmY5ODAwOwogICAgICAtLXBhcGVyLW9yYW5nZS02MDA6ICNmYjhjMDA7CiAgICAgIC0tcGFwZXItb3JhbmdlLTcwMDogI2Y1N2MwMDsKICAgICAgLS1wYXBlci1vcmFuZ2UtODAwOiAjZWY2YzAwOwogICAgICAtLXBhcGVyLW9yYW5nZS05MDA6ICNlNjUxMDA7CiAgICAgIC0tcGFwZXItb3JhbmdlLWExMDA6ICNmZmQxODA7CiAgICAgIC0tcGFwZXItb3JhbmdlLWEyMDA6ICNmZmFiNDA7CiAgICAgIC0tcGFwZXItb3JhbmdlLWE0MDA6ICNmZjkxMDA7CiAgICAgIC0tcGFwZXItb3JhbmdlLWE3MDA6ICNmZjY1MDA7CgogICAgICAtLXBhcGVyLWRlZXAtb3JhbmdlLTUwOiAjZmJlOWU3OwogICAgICAtLXBhcGVyLWRlZXAtb3JhbmdlLTEwMDogI2ZmY2NiYzsKICAgICAgLS1wYXBlci1kZWVwLW9yYW5nZS0yMDA6ICNmZmFiOTE7CiAgICAgIC0tcGFwZXItZGVlcC1vcmFuZ2UtMzAwOiAjZmY4YTY1OwogICAgICAtLXBhcGVyLWRlZXAtb3JhbmdlLTQwMDogI2ZmNzA0MzsKICAgICAgLS1wYXBlci1kZWVwLW9yYW5nZS01MDA6ICNmZjU3MjI7CiAgICAgIC0tcGFwZXItZGVlcC1vcmFuZ2UtNjAwOiAjZjQ1MTFlOwogICAgICAtLXBhcGVyLWRlZXAtb3JhbmdlLTcwMDogI2U2NGExOTsKICAgICAgLS1wYXBlci1kZWVwLW9yYW5nZS04MDA6ICNkODQzMTU7CiAgICAgIC0tcGFwZXItZGVlcC1vcmFuZ2UtOTAwOiAjYmYzNjBjOwogICAgICAtLXBhcGVyLWRlZXAtb3JhbmdlLWExMDA6ICNmZjllODA7CiAgICAgIC0tcGFwZXItZGVlcC1vcmFuZ2UtYTIwMDogI2ZmNmU0MDsKICAgICAgLS1wYXBlci1kZWVwLW9yYW5nZS1hNDAwOiAjZmYzZDAwOwogICAgICAtLXBhcGVyLWRlZXAtb3JhbmdlLWE3MDA6ICNkZDJjMDA7CgogICAgICAtLXBhcGVyLWJyb3duLTUwOiAjZWZlYmU5OwogICAgICAtLXBhcGVyLWJyb3duLTEwMDogI2Q3Y2NjODsKICAgICAgLS1wYXBlci1icm93bi0yMDA6ICNiY2FhYTQ7CiAgICAgIC0tcGFwZXItYnJvd24tMzAwOiAjYTE4ODdmOwogICAgICAtLXBhcGVyLWJyb3duLTQwMDogIzhkNmU2MzsKICAgICAgLS1wYXBlci1icm93bi01MDA6ICM3OTU1NDg7CiAgICAgIC0tcGFwZXItYnJvd24tNjAwOiAjNmQ0YzQxOwogICAgICAtLXBhcGVyLWJyb3duLTcwMDogIzVkNDAzNzsKICAgICAgLS1wYXBlci1icm93bi04MDA6ICM0ZTM0MmU7CiAgICAgIC0tcGFwZXItYnJvd24tOTAwOiAjM2UyNzIzOwoKICAgICAgLS1wYXBlci1ncmV5LTUwOiAjZmFmYWZhOwogICAgICAtLXBhcGVyLWdyZXktMTAwOiAjZjVmNWY1OwogICAgICAtLXBhcGVyLWdyZXktMjAwOiAjZWVlZWVlOwogICAgICAtLXBhcGVyLWdyZXktMzAwOiAjZTBlMGUwOwogICAgICAtLXBhcGVyLWdyZXktNDAwOiAjYmRiZGJkOwogICAgICAtLXBhcGVyLWdyZXktNTAwOiAjOWU5ZTllOwogICAgICAtLXBhcGVyLWdyZXktNjAwOiAjNzU3NTc1OwogICAgICAtLXBhcGVyLWdyZXktNzAwOiAjNjE2MTYxOwogICAgICAtLXBhcGVyLWdyZXktODAwOiAjNDI0MjQyOwogICAgICAtLXBhcGVyLWdyZXktOTAwOiAjMjEyMTIxOwoKICAgICAgLS1wYXBlci1ibHVlLWdyZXktNTA6ICNlY2VmZjE7CiAgICAgIC0tcGFwZXItYmx1ZS1ncmV5LTEwMDogI2NmZDhkYzsKICAgICAgLS1wYXBlci1ibHVlLWdyZXktMjAwOiAjYjBiZWM1OwogICAgICAtLXBhcGVyLWJsdWUtZ3JleS0zMDA6ICM5MGE0YWU7CiAgICAgIC0tcGFwZXItYmx1ZS1ncmV5LTQwMDogIzc4OTA5YzsKICAgICAgLS1wYXBlci1ibHVlLWdyZXktNTAwOiAjNjA3ZDhiOwogICAgICAtLXBhcGVyLWJsdWUtZ3JleS02MDA6ICM1NDZlN2E7CiAgICAgIC0tcGFwZXItYmx1ZS1ncmV5LTcwMDogIzQ1NWE2NDsKICAgICAgLS1wYXBlci1ibHVlLWdyZXktODAwOiAjMzc0NzRmOwogICAgICAtLXBhcGVyLWJsdWUtZ3JleS05MDA6ICMyNjMyMzg7CgogICAgICAvKiBvcGFjaXR5IGZvciBkYXJrIHRleHQgb24gYSBsaWdodCBiYWNrZ3JvdW5kICovCiAgICAgIC0tZGFyay1kaXZpZGVyLW9wYWNpdHk6IDAuMTI7CiAgICAgIC0tZGFyay1kaXNhYmxlZC1vcGFjaXR5OiAwLjM4OyAvKiBvciBoaW50IHRleHQgb3IgaWNvbiAqLwogICAgICAtLWRhcmstc2Vjb25kYXJ5LW9wYWNpdHk6IDAuNTQ7CiAgICAgIC0tZGFyay1wcmltYXJ5LW9wYWNpdHk6IDAuODc7CgogICAgICAvKiBvcGFjaXR5IGZvciBsaWdodCB0ZXh0IG9uIGEgZGFyayBiYWNrZ3JvdW5kICovCiAgICAgIC0tbGlnaHQtZGl2aWRlci1vcGFjaXR5OiAwLjEyOwogICAgICAtLWxpZ2h0LWRpc2FibGVkLW9wYWNpdHk6IDAuMzsgLyogb3IgaGludCB0ZXh0IG9yIGljb24gKi8KICAgICAgLS1saWdodC1zZWNvbmRhcnktb3BhY2l0eTogMC43OwogICAgICAtLWxpZ2h0LXByaW1hcnktb3BhY2l0eTogMS4wOwoKICAgIH0KCiAgPC9zdHlsZT4KPC9jdXN0b20tc3R5bGU+CmA7ZWEuc2V0QXR0cmlidXRlKCJzdHlsZSIsImRpc3BsYXk6IG5vbmU7IiksZG9jdW1lbnQuaGVhZC5hcHBlbmRDaGlsZChlYS5jb250ZW50KTsKLyoqCiAgICBAbGljZW5zZQogICAgQ29weXJpZ2h0IChjKSAyMDE1IFRoZSBQb2x5bWVyIFByb2plY3QgQXV0aG9ycy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAgIFRoaXMgY29kZSBtYXkgb25seSBiZSB1c2VkIHVuZGVyIHRoZSBCU0Qgc3R5bGUgbGljZW5zZSBmb3VuZCBhdAogICAgaHR0cDovL3BvbHltZXIuZ2l0aHViLmlvL0xJQ0VOU0UudHh0IFRoZSBjb21wbGV0ZSBzZXQgb2YgYXV0aG9ycyBtYXkgYmUgZm91bmQgYXQKICAgIGh0dHA6Ly9wb2x5bWVyLmdpdGh1Yi5pby9BVVRIT1JTLnR4dCBUaGUgY29tcGxldGUgc2V0IG9mIGNvbnRyaWJ1dG9ycyBtYXkgYmUKICAgIGZvdW5kIGF0IGh0dHA6Ly9wb2x5bWVyLmdpdGh1Yi5pby9DT05UUklCVVRPUlMudHh0IENvZGUgZGlzdHJpYnV0ZWQgYnkgR29vZ2xlIGFzCiAgICBwYXJ0IG9mIHRoZSBwb2x5bWVyIHByb2plY3QgaXMgYWxzbyBzdWJqZWN0IHRvIGFuIGFkZGl0aW9uYWwgSVAgcmlnaHRzIGdyYW50CiAgICBmb3VuZCBhdCBodHRwOi8vcG9seW1lci5naXRodWIuaW8vUEFURU5UUy50eHQKICAgICovCmNvbnN0IG5hPV9lYAo8Y3VzdG9tLXN0eWxlPgogIDxzdHlsZSBpcz0iY3VzdG9tLXN0eWxlIj4KICAgIGh0bWwgewogICAgICAvKgogICAgICAgKiBZb3UgY2FuIHVzZSB0aGVzZSBnZW5lcmljIHZhcmlhYmxlcyBpbiB5b3VyIGVsZW1lbnRzIGZvciBlYXN5IHRoZW1pbmcuCiAgICAgICAqIEZvciBleGFtcGxlLCBpZiBhbGwgeW91ciBlbGVtZW50cyB1c2UgXGAtLXByaW1hcnktdGV4dC1jb2xvclxgIGFzIGl0cyBtYWluCiAgICAgICAqIGNvbG9yLCB0aGVuIHN3aXRjaGluZyBmcm9tIGEgbGlnaHQgdG8gYSBkYXJrIHRoZW1lIGlzIGp1c3QgYSBtYXR0ZXIgb2YKICAgICAgICogY2hhbmdpbmcgdGhlIHZhbHVlIG9mIFxgLS1wcmltYXJ5LXRleHQtY29sb3JcYCBpbiB5b3VyIGFwcGxpY2F0aW9uLgogICAgICAgKi8KICAgICAgLS1wcmltYXJ5LXRleHQtY29sb3I6IHZhcigtLWxpZ2h0LXRoZW1lLXRleHQtY29sb3IpOwogICAgICAtLXByaW1hcnktYmFja2dyb3VuZC1jb2xvcjogdmFyKC0tbGlnaHQtdGhlbWUtYmFja2dyb3VuZC1jb2xvcik7CiAgICAgIC0tc2Vjb25kYXJ5LXRleHQtY29sb3I6IHZhcigtLWxpZ2h0LXRoZW1lLXNlY29uZGFyeS1jb2xvcik7CiAgICAgIC0tZGlzYWJsZWQtdGV4dC1jb2xvcjogdmFyKC0tbGlnaHQtdGhlbWUtZGlzYWJsZWQtY29sb3IpOwogICAgICAtLWRpdmlkZXItY29sb3I6IHZhcigtLWxpZ2h0LXRoZW1lLWRpdmlkZXItY29sb3IpOwogICAgICAtLWVycm9yLWNvbG9yOiB2YXIoLS1wYXBlci1kZWVwLW9yYW5nZS1hNzAwKTsKCiAgICAgIC8qCiAgICAgICAqIFByaW1hcnkgYW5kIGFjY2VudCBjb2xvcnMuIEFsc28gc2VlIGNvbG9yLmpzIGZvciBtb3JlIGNvbG9ycy4KICAgICAgICovCiAgICAgIC0tcHJpbWFyeS1jb2xvcjogdmFyKC0tcGFwZXItaW5kaWdvLTUwMCk7CiAgICAgIC0tbGlnaHQtcHJpbWFyeS1jb2xvcjogdmFyKC0tcGFwZXItaW5kaWdvLTEwMCk7CiAgICAgIC0tZGFyay1wcmltYXJ5LWNvbG9yOiB2YXIoLS1wYXBlci1pbmRpZ28tNzAwKTsKCiAgICAgIC0tYWNjZW50LWNvbG9yOiB2YXIoLS1wYXBlci1waW5rLWEyMDApOwogICAgICAtLWxpZ2h0LWFjY2VudC1jb2xvcjogdmFyKC0tcGFwZXItcGluay1hMTAwKTsKICAgICAgLS1kYXJrLWFjY2VudC1jb2xvcjogdmFyKC0tcGFwZXItcGluay1hNDAwKTsKCgogICAgICAvKgogICAgICAgKiBNYXRlcmlhbCBEZXNpZ24gTGlnaHQgYmFja2dyb3VuZCB0aGVtZQogICAgICAgKi8KICAgICAgLS1saWdodC10aGVtZS1iYWNrZ3JvdW5kLWNvbG9yOiAjZmZmZmZmOwogICAgICAtLWxpZ2h0LXRoZW1lLWJhc2UtY29sb3I6ICMwMDAwMDA7CiAgICAgIC0tbGlnaHQtdGhlbWUtdGV4dC1jb2xvcjogdmFyKC0tcGFwZXItZ3JleS05MDApOwogICAgICAtLWxpZ2h0LXRoZW1lLXNlY29uZGFyeS1jb2xvcjogIzczNzM3MzsgIC8qIGZvciBzZWNvbmRhcnkgdGV4dCBhbmQgaWNvbnMgKi8KICAgICAgLS1saWdodC10aGVtZS1kaXNhYmxlZC1jb2xvcjogIzliOWI5YjsgIC8qIGRpc2FibGVkL2hpbnQgdGV4dCAqLwogICAgICAtLWxpZ2h0LXRoZW1lLWRpdmlkZXItY29sb3I6ICNkYmRiZGI7CgogICAgICAvKgogICAgICAgKiBNYXRlcmlhbCBEZXNpZ24gRGFyayBiYWNrZ3JvdW5kIHRoZW1lCiAgICAgICAqLwogICAgICAtLWRhcmstdGhlbWUtYmFja2dyb3VuZC1jb2xvcjogdmFyKC0tcGFwZXItZ3JleS05MDApOwogICAgICAtLWRhcmstdGhlbWUtYmFzZS1jb2xvcjogI2ZmZmZmZjsKICAgICAgLS1kYXJrLXRoZW1lLXRleHQtY29sb3I6ICNmZmZmZmY7CiAgICAgIC0tZGFyay10aGVtZS1zZWNvbmRhcnktY29sb3I6ICNiY2JjYmM7ICAvKiBmb3Igc2Vjb25kYXJ5IHRleHQgYW5kIGljb25zICovCiAgICAgIC0tZGFyay10aGVtZS1kaXNhYmxlZC1jb2xvcjogIzY0NjQ2NDsgIC8qIGRpc2FibGVkL2hpbnQgdGV4dCAqLwogICAgICAtLWRhcmstdGhlbWUtZGl2aWRlci1jb2xvcjogIzNjM2MzYzsKCiAgICAgIC8qCiAgICAgICAqIERlcHJlY2F0ZWQgdmFsdWVzIGJlY2F1c2Ugb2YgdGhlaXIgY29uZnVzaW5nIG5hbWVzLgogICAgICAgKi8KICAgICAgLS10ZXh0LXByaW1hcnktY29sb3I6IHZhcigtLWRhcmstdGhlbWUtdGV4dC1jb2xvcik7CiAgICAgIC0tZGVmYXVsdC1wcmltYXJ5LWNvbG9yOiB2YXIoLS1wcmltYXJ5LWNvbG9yKTsKICAgIH0KICA8L3N0eWxlPgo8L2N1c3RvbS1zdHlsZT5gO25hLnNldEF0dHJpYnV0ZSgic3R5bGUiLCJkaXNwbGF5OiBub25lOyIpLGRvY3VtZW50LmhlYWQuYXBwZW5kQ2hpbGQobmEuY29udGVudCk7Ci8qKgogICAgQGxpY2Vuc2UKICAgIENvcHlyaWdodCAoYykgMjAxNSBUaGUgUG9seW1lciBQcm9qZWN0IEF1dGhvcnMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgICBUaGlzIGNvZGUgbWF5IG9ubHkgYmUgdXNlZCB1bmRlciB0aGUgQlNEIHN0eWxlIGxpY2Vuc2UgZm91bmQgYXQKICAgIGh0dHA6Ly9wb2x5bWVyLmdpdGh1Yi5pby9MSUNFTlNFLnR4dCBUaGUgY29tcGxldGUgc2V0IG9mIGF1dGhvcnMgbWF5IGJlIGZvdW5kIGF0CiAgICBodHRwOi8vcG9seW1lci5naXRodWIuaW8vQVVUSE9SUy50eHQgVGhlIGNvbXBsZXRlIHNldCBvZiBjb250cmlidXRvcnMgbWF5IGJlCiAgICBmb3VuZCBhdCBodHRwOi8vcG9seW1lci5naXRodWIuaW8vQ09OVFJJQlVUT1JTLnR4dCBDb2RlIGRpc3RyaWJ1dGVkIGJ5IEdvb2dsZSBhcwogICAgcGFydCBvZiB0aGUgcG9seW1lciBwcm9qZWN0IGlzIGFsc28gc3ViamVjdCB0byBhbiBhZGRpdGlvbmFsIElQIHJpZ2h0cyBncmFudAogICAgZm91bmQgYXQgaHR0cDovL3BvbHltZXIuZ2l0aHViLmlvL1BBVEVOVFMudHh0CiAgICAqLwpjb25zdCBpYT17cHJvcGVydGllczp7bmFtZTp7dHlwZTpTdHJpbmd9LHZhbHVlOntub3RpZnk6ITAsdHlwZTpTdHJpbmd9LHJlcXVpcmVkOnt0eXBlOkJvb2xlYW4sdmFsdWU6ITF9fSxhdHRhY2hlZDpmdW5jdGlvbigpe30sZGV0YWNoZWQ6ZnVuY3Rpb24oKXt9fTsKLyoqCiAgICBAbGljZW5zZQogICAgQ29weXJpZ2h0IChjKSAyMDE1IFRoZSBQb2x5bWVyIFByb2plY3QgQXV0aG9ycy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAgIFRoaXMgY29kZSBtYXkgb25seSBiZSB1c2VkIHVuZGVyIHRoZSBCU0Qgc3R5bGUgbGljZW5zZSBmb3VuZCBhdAogICAgaHR0cDovL3BvbHltZXIuZ2l0aHViLmlvL0xJQ0VOU0UudHh0IFRoZSBjb21wbGV0ZSBzZXQgb2YgYXV0aG9ycyBtYXkgYmUgZm91bmQgYXQKICAgIGh0dHA6Ly9wb2x5bWVyLmdpdGh1Yi5pby9BVVRIT1JTLnR4dCBUaGUgY29tcGxldGUgc2V0IG9mIGNvbnRyaWJ1dG9ycyBtYXkgYmUKICAgIGZvdW5kIGF0IGh0dHA6Ly9wb2x5bWVyLmdpdGh1Yi5pby9DT05UUklCVVRPUlMudHh0IENvZGUgZGlzdHJpYnV0ZWQgYnkgR29vZ2xlIGFzCiAgICBwYXJ0IG9mIHRoZSBwb2x5bWVyIHByb2plY3QgaXMgYWxzbyBzdWJqZWN0IHRvIGFuIGFkZGl0aW9uYWwgSVAgcmlnaHRzIGdyYW50CiAgICBmb3VuZCBhdCBodHRwOi8vcG9seW1lci5naXRodWIuaW8vUEFURU5UUy50eHQKICAgICovbGV0IHJhPW51bGw7Y29uc3Qgb2E9e3Byb3BlcnRpZXM6e3ZhbGlkYXRvcjp7dHlwZTpTdHJpbmd9LGludmFsaWQ6e25vdGlmeTohMCxyZWZsZWN0VG9BdHRyaWJ1dGU6ITAsdHlwZTpCb29sZWFuLHZhbHVlOiExLG9ic2VydmVyOiJfaW52YWxpZENoYW5nZWQifX0scmVnaXN0ZXJlZDpmdW5jdGlvbigpe3JhPW5ldyBibyh7dHlwZToidmFsaWRhdG9yIn0pfSxfaW52YWxpZENoYW5nZWQ6ZnVuY3Rpb24oKXt0aGlzLmludmFsaWQ/dGhpcy5zZXRBdHRyaWJ1dGUoImFyaWEtaW52YWxpZCIsInRydWUiKTp0aGlzLnJlbW92ZUF0dHJpYnV0ZSgiYXJpYS1pbnZhbGlkIil9LGdldCBfdmFsaWRhdG9yKCl7cmV0dXJuIHJhJiZyYS5ieUtleSh0aGlzLnZhbGlkYXRvcil9LGhhc1ZhbGlkYXRvcjpmdW5jdGlvbigpe3JldHVybiBudWxsIT10aGlzLl92YWxpZGF0b3J9LHZhbGlkYXRlOmZ1bmN0aW9uKHQpe3JldHVybiB0aGlzLmludmFsaWQ9dm9pZCAwPT09dCYmdm9pZCAwIT09dGhpcy52YWx1ZT8hdGhpcy5fZ2V0VmFsaWRpdHkodGhpcy52YWx1ZSk6IXRoaXMuX2dldFZhbGlkaXR5KHQpLCF0aGlzLmludmFsaWR9LF9nZXRWYWxpZGl0eTpmdW5jdGlvbih0KXtyZXR1cm4hdGhpcy5oYXNWYWxpZGF0b3IoKXx8dGhpcy5fdmFsaWRhdG9yLnZhbGlkYXRlKHQpfX0sYWE9e3Byb3BlcnRpZXM6e2NoZWNrZWQ6e3R5cGU6Qm9vbGVhbix2YWx1ZTohMSxyZWZsZWN0VG9BdHRyaWJ1dGU6ITAsbm90aWZ5OiEwLG9ic2VydmVyOiJfY2hlY2tlZENoYW5nZWQifSx0b2dnbGVzOnt0eXBlOkJvb2xlYW4sdmFsdWU6ITAscmVmbGVjdFRvQXR0cmlidXRlOiEwfSx2YWx1ZTp7dHlwZTpTdHJpbmcsdmFsdWU6Im9uIixvYnNlcnZlcjoiX3ZhbHVlQ2hhbmdlZCJ9fSxvYnNlcnZlcnM6WyJfcmVxdWlyZWRDaGFuZ2VkKHJlcXVpcmVkKSJdLGNyZWF0ZWQ6ZnVuY3Rpb24oKXt0aGlzLl9oYXNJcm9uQ2hlY2tlZEVsZW1lbnRCZWhhdmlvcj0hMH0sX2dldFZhbGlkaXR5OmZ1bmN0aW9uKHQpe3JldHVybiB0aGlzLmRpc2FibGVkfHwhdGhpcy5yZXF1aXJlZHx8dGhpcy5jaGVja2VkfSxfcmVxdWlyZWRDaGFuZ2VkOmZ1bmN0aW9uKCl7dGhpcy5yZXF1aXJlZD90aGlzLnNldEF0dHJpYnV0ZSgiYXJpYS1yZXF1aXJlZCIsInRydWUiKTp0aGlzLnJlbW92ZUF0dHJpYnV0ZSgiYXJpYS1yZXF1aXJlZCIpfSxfY2hlY2tlZENoYW5nZWQ6ZnVuY3Rpb24oKXt0aGlzLmFjdGl2ZT10aGlzLmNoZWNrZWQsdGhpcy5maXJlKCJpcm9uLWNoYW5nZSIpfSxfdmFsdWVDaGFuZ2VkOmZ1bmN0aW9uKCl7bnVsbD09dGhpcy52YWx1ZSYmKHRoaXMudmFsdWU9Im9uIil9fSxzYT17b2JzZXJ2ZXJzOlsiX2ZvY3VzZWRDaGFuZ2VkKHJlY2VpdmVkRm9jdXNGcm9tS2V5Ym9hcmQpIl0sX2ZvY3VzZWRDaGFuZ2VkOmZ1bmN0aW9uKHQpe3QmJnRoaXMuZW5zdXJlUmlwcGxlKCksdGhpcy5oYXNSaXBwbGUoKSYmKHRoaXMuX3JpcHBsZS5ob2xkRG93bj10KX0sX2NyZWF0ZVJpcHBsZTpmdW5jdGlvbigpe3ZhciB0PVpvLl9jcmVhdGVSaXBwbGUoKTtyZXR1cm4gdC5pZD0iaW5rIix0LnNldEF0dHJpYnV0ZSgiY2VudGVyIiwiIiksdC5jbGFzc0xpc3QuYWRkKCJjaXJjbGUiKSx0fX0sbGE9W1lvLFdvLFpvLHNhXSxjYT1bbGEsW2lhLG9hLGFhXSx7X2NoZWNrZWRDaGFuZ2VkOmZ1bmN0aW9uKCl7YWEuX2NoZWNrZWRDaGFuZ2VkLmNhbGwodGhpcyksdGhpcy5oYXNSaXBwbGUoKSYmKHRoaXMuY2hlY2tlZD90aGlzLl9yaXBwbGUuc2V0QXR0cmlidXRlKCJjaGVja2VkIiwiIik6dGhpcy5fcmlwcGxlLnJlbW92ZUF0dHJpYnV0ZSgiY2hlY2tlZCIpKX0sX2J1dHRvblN0YXRlQ2hhbmdlZDpmdW5jdGlvbigpe1pvLl9idXR0b25TdGF0ZUNoYW5nZWQuY2FsbCh0aGlzKSx0aGlzLmRpc2FibGVkfHx0aGlzLmlzQXR0YWNoZWQmJih0aGlzLmNoZWNrZWQ9dGhpcy5hY3RpdmUpfX1dLHVhPV9lYDxzdHlsZT4KICA6aG9zdCB7CiAgICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7CiAgICB3aGl0ZS1zcGFjZTogbm93cmFwOwogICAgY3Vyc29yOiBwb2ludGVyOwogICAgLS1jYWxjdWxhdGVkLXBhcGVyLWNoZWNrYm94LXNpemU6IHZhcigtLXBhcGVyLWNoZWNrYm94LXNpemUsIDE4cHgpOwogICAgLyogLTFweCBpcyBhIHNlbnRpbmVsIGZvciB0aGUgZGVmYXVsdCBhbmQgaXMgcmVwbGFjZWQgaW4gXGBhdHRhY2hlZFxgLiAqLwogICAgLS1jYWxjdWxhdGVkLXBhcGVyLWNoZWNrYm94LWluay1zaXplOiB2YXIoLS1wYXBlci1jaGVja2JveC1pbmstc2l6ZSwgLTFweCk7CiAgICBAYXBwbHkgLS1wYXBlci1mb250LWNvbW1vbi1iYXNlOwogICAgbGluZS1oZWlnaHQ6IDA7CiAgICAtd2Via2l0LXRhcC1oaWdobGlnaHQtY29sb3I6IHRyYW5zcGFyZW50OwogIH0KCiAgOmhvc3QoW2hpZGRlbl0pIHsKICAgIGRpc3BsYXk6IG5vbmUgIWltcG9ydGFudDsKICB9CgogIDpob3N0KDpmb2N1cykgewogICAgb3V0bGluZTogbm9uZTsKICB9CgogIC5oaWRkZW4gewogICAgZGlzcGxheTogbm9uZTsKICB9CgogICNjaGVja2JveENvbnRhaW5lciB7CiAgICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7CiAgICBwb3NpdGlvbjogcmVsYXRpdmU7CiAgICB3aWR0aDogdmFyKC0tY2FsY3VsYXRlZC1wYXBlci1jaGVja2JveC1zaXplKTsKICAgIGhlaWdodDogdmFyKC0tY2FsY3VsYXRlZC1wYXBlci1jaGVja2JveC1zaXplKTsKICAgIG1pbi13aWR0aDogdmFyKC0tY2FsY3VsYXRlZC1wYXBlci1jaGVja2JveC1zaXplKTsKICAgIG1hcmdpbjogdmFyKC0tcGFwZXItY2hlY2tib3gtbWFyZ2luLCBpbml0aWFsKTsKICAgIHZlcnRpY2FsLWFsaWduOiB2YXIoLS1wYXBlci1jaGVja2JveC12ZXJ0aWNhbC1hbGlnbiwgbWlkZGxlKTsKICAgIGJhY2tncm91bmQtY29sb3I6IHZhcigtLXBhcGVyLWNoZWNrYm94LXVuY2hlY2tlZC1iYWNrZ3JvdW5kLWNvbG9yLCB0cmFuc3BhcmVudCk7CiAgfQoKICAjaW5rIHsKICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTsKCiAgICAvKiBDZW50ZXIgdGhlIHJpcHBsZSBpbiB0aGUgY2hlY2tib3ggYnkgbmVnYXRpdmUgb2Zmc2V0dGluZyBpdCBieQogICAgICogKGlua1dpZHRoIC0gcmlwcGxlV2lkdGgpIC8gMiAqLwogICAgdG9wOiBjYWxjKDBweCAtICh2YXIoLS1jYWxjdWxhdGVkLXBhcGVyLWNoZWNrYm94LWluay1zaXplKSAtIHZhcigtLWNhbGN1bGF0ZWQtcGFwZXItY2hlY2tib3gtc2l6ZSkpIC8gMik7CiAgICBsZWZ0OiBjYWxjKDBweCAtICh2YXIoLS1jYWxjdWxhdGVkLXBhcGVyLWNoZWNrYm94LWluay1zaXplKSAtIHZhcigtLWNhbGN1bGF0ZWQtcGFwZXItY2hlY2tib3gtc2l6ZSkpIC8gMik7CiAgICB3aWR0aDogdmFyKC0tY2FsY3VsYXRlZC1wYXBlci1jaGVja2JveC1pbmstc2l6ZSk7CiAgICBoZWlnaHQ6IHZhcigtLWNhbGN1bGF0ZWQtcGFwZXItY2hlY2tib3gtaW5rLXNpemUpOwogICAgY29sb3I6IHZhcigtLXBhcGVyLWNoZWNrYm94LXVuY2hlY2tlZC1pbmstY29sb3IsIHZhcigtLXByaW1hcnktdGV4dC1jb2xvcikpOwogICAgb3BhY2l0eTogMC42OwogICAgcG9pbnRlci1ldmVudHM6IG5vbmU7CiAgfQoKICAjaW5rOmRpcihydGwpIHsKICAgIHJpZ2h0OiBjYWxjKDBweCAtICh2YXIoLS1jYWxjdWxhdGVkLXBhcGVyLWNoZWNrYm94LWluay1zaXplKSAtIHZhcigtLWNhbGN1bGF0ZWQtcGFwZXItY2hlY2tib3gtc2l6ZSkpIC8gMik7CiAgICBsZWZ0OiBhdXRvOwogIH0KCiAgI2lua1tjaGVja2VkXSB7CiAgICBjb2xvcjogdmFyKC0tcGFwZXItY2hlY2tib3gtY2hlY2tlZC1pbmstY29sb3IsIHZhcigtLXByaW1hcnktY29sb3IpKTsKICB9CgogICNjaGVja2JveCB7CiAgICBwb3NpdGlvbjogcmVsYXRpdmU7CiAgICBib3gtc2l6aW5nOiBib3JkZXItYm94OwogICAgaGVpZ2h0OiAxMDAlOwogICAgYm9yZGVyOiBzb2xpZCAycHg7CiAgICBib3JkZXItY29sb3I6IHZhcigtLXBhcGVyLWNoZWNrYm94LXVuY2hlY2tlZC1jb2xvciwgdmFyKC0tcHJpbWFyeS10ZXh0LWNvbG9yKSk7CiAgICBib3JkZXItcmFkaXVzOiAycHg7CiAgICBwb2ludGVyLWV2ZW50czogbm9uZTsKICAgIC13ZWJraXQtdHJhbnNpdGlvbjogYmFja2dyb3VuZC1jb2xvciAxNDBtcywgYm9yZGVyLWNvbG9yIDE0MG1zOwogICAgdHJhbnNpdGlvbjogYmFja2dyb3VuZC1jb2xvciAxNDBtcywgYm9yZGVyLWNvbG9yIDE0MG1zOwoKICAgIC13ZWJraXQtdHJhbnNpdGlvbi1kdXJhdGlvbjogdmFyKC0tcGFwZXItY2hlY2tib3gtYW5pbWF0aW9uLWR1cmF0aW9uLCAxNDBtcyk7CiAgICB0cmFuc2l0aW9uLWR1cmF0aW9uOiB2YXIoLS1wYXBlci1jaGVja2JveC1hbmltYXRpb24tZHVyYXRpb24sIDE0MG1zKTsKICB9CgogIC8qIGNoZWNrYm94IGNoZWNrZWQgYW5pbWF0aW9ucyAqLwogICNjaGVja2JveC5jaGVja2VkICNjaGVja21hcmsgewogICAgLXdlYmtpdC1hbmltYXRpb246IGNoZWNrbWFyay1leHBhbmQgMTQwbXMgZWFzZS1vdXQgZm9yd2FyZHM7CiAgICBhbmltYXRpb246IGNoZWNrbWFyay1leHBhbmQgMTQwbXMgZWFzZS1vdXQgZm9yd2FyZHM7CgogICAgLXdlYmtpdC1hbmltYXRpb24tZHVyYXRpb246IHZhcigtLXBhcGVyLWNoZWNrYm94LWFuaW1hdGlvbi1kdXJhdGlvbiwgMTQwbXMpOwogICAgYW5pbWF0aW9uLWR1cmF0aW9uOiB2YXIoLS1wYXBlci1jaGVja2JveC1hbmltYXRpb24tZHVyYXRpb24sIDE0MG1zKTsKICB9CgogIEAtd2Via2l0LWtleWZyYW1lcyBjaGVja21hcmstZXhwYW5kIHsKICAgIDAlIHsKICAgICAgLXdlYmtpdC10cmFuc2Zvcm06IHNjYWxlKDAsIDApIHJvdGF0ZSg0NWRlZyk7CiAgICB9CiAgICAxMDAlIHsKICAgICAgLXdlYmtpdC10cmFuc2Zvcm06IHNjYWxlKDEsIDEpIHJvdGF0ZSg0NWRlZyk7CiAgICB9CiAgfQoKICBAa2V5ZnJhbWVzIGNoZWNrbWFyay1leHBhbmQgewogICAgMCUgewogICAgICB0cmFuc2Zvcm06IHNjYWxlKDAsIDApIHJvdGF0ZSg0NWRlZyk7CiAgICB9CiAgICAxMDAlIHsKICAgICAgdHJhbnNmb3JtOiBzY2FsZSgxLCAxKSByb3RhdGUoNDVkZWcpOwogICAgfQogIH0KCiAgI2NoZWNrYm94LmNoZWNrZWQgewogICAgYmFja2dyb3VuZC1jb2xvcjogdmFyKC0tcGFwZXItY2hlY2tib3gtY2hlY2tlZC1jb2xvciwgdmFyKC0tcHJpbWFyeS1jb2xvcikpOwogICAgYm9yZGVyLWNvbG9yOiB2YXIoLS1wYXBlci1jaGVja2JveC1jaGVja2VkLWNvbG9yLCB2YXIoLS1wcmltYXJ5LWNvbG9yKSk7CiAgfQoKICAjY2hlY2ttYXJrIHsKICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTsKICAgIHdpZHRoOiAzNiU7CiAgICBoZWlnaHQ6IDcwJTsKICAgIGJvcmRlci1zdHlsZTogc29saWQ7CiAgICBib3JkZXItdG9wOiBub25lOwogICAgYm9yZGVyLWxlZnQ6IG5vbmU7CiAgICBib3JkZXItcmlnaHQtd2lkdGg6IGNhbGMoMi8xNSAqIHZhcigtLWNhbGN1bGF0ZWQtcGFwZXItY2hlY2tib3gtc2l6ZSkpOwogICAgYm9yZGVyLWJvdHRvbS13aWR0aDogY2FsYygyLzE1ICogdmFyKC0tY2FsY3VsYXRlZC1wYXBlci1jaGVja2JveC1zaXplKSk7CiAgICBib3JkZXItY29sb3I6IHZhcigtLXBhcGVyLWNoZWNrYm94LWNoZWNrbWFyay1jb2xvciwgd2hpdGUpOwogICAgLXdlYmtpdC10cmFuc2Zvcm0tb3JpZ2luOiA5NyUgODYlOwogICAgdHJhbnNmb3JtLW9yaWdpbjogOTclIDg2JTsKICAgIGJveC1zaXppbmc6IGNvbnRlbnQtYm94OyAvKiBwcm90ZWN0IGFnYWluc3QgcGFnZS1sZXZlbCBib3gtc2l6aW5nICovCiAgfQoKICAjY2hlY2ttYXJrOmRpcihydGwpIHsKICAgIC13ZWJraXQtdHJhbnNmb3JtLW9yaWdpbjogNTAlIDE0JTsKICAgIHRyYW5zZm9ybS1vcmlnaW46IDUwJSAxNCU7CiAgfQoKICAvKiBsYWJlbCAqLwogICNjaGVja2JveExhYmVsIHsKICAgIHBvc2l0aW9uOiByZWxhdGl2ZTsKICAgIGRpc3BsYXk6IGlubGluZS1ibG9jazsKICAgIHZlcnRpY2FsLWFsaWduOiBtaWRkbGU7CiAgICBwYWRkaW5nLWxlZnQ6IHZhcigtLXBhcGVyLWNoZWNrYm94LWxhYmVsLXNwYWNpbmcsIDhweCk7CiAgICB3aGl0ZS1zcGFjZTogbm9ybWFsOwogICAgbGluZS1oZWlnaHQ6IG5vcm1hbDsKICAgIGNvbG9yOiB2YXIoLS1wYXBlci1jaGVja2JveC1sYWJlbC1jb2xvciwgdmFyKC0tcHJpbWFyeS10ZXh0LWNvbG9yKSk7CiAgICBAYXBwbHkgLS1wYXBlci1jaGVja2JveC1sYWJlbDsKICB9CgogIDpob3N0KFtjaGVja2VkXSkgI2NoZWNrYm94TGFiZWwgewogICAgY29sb3I6IHZhcigtLXBhcGVyLWNoZWNrYm94LWxhYmVsLWNoZWNrZWQtY29sb3IsIHZhcigtLXBhcGVyLWNoZWNrYm94LWxhYmVsLWNvbG9yLCB2YXIoLS1wcmltYXJ5LXRleHQtY29sb3IpKSk7CiAgICBAYXBwbHkgLS1wYXBlci1jaGVja2JveC1sYWJlbC1jaGVja2VkOwogIH0KCiAgI2NoZWNrYm94TGFiZWw6ZGlyKHJ0bCkgewogICAgcGFkZGluZy1yaWdodDogdmFyKC0tcGFwZXItY2hlY2tib3gtbGFiZWwtc3BhY2luZywgOHB4KTsKICAgIHBhZGRpbmctbGVmdDogMDsKICB9CgogICNjaGVja2JveExhYmVsW2hpZGRlbl0gewogICAgZGlzcGxheTogbm9uZTsKICB9CgogIC8qIGRpc2FibGVkIHN0YXRlICovCgogIDpob3N0KFtkaXNhYmxlZF0pICNjaGVja2JveCB7CiAgICBvcGFjaXR5OiAwLjU7CiAgICBib3JkZXItY29sb3I6IHZhcigtLXBhcGVyLWNoZWNrYm94LXVuY2hlY2tlZC1jb2xvciwgdmFyKC0tcHJpbWFyeS10ZXh0LWNvbG9yKSk7CiAgfQoKICA6aG9zdChbZGlzYWJsZWRdW2NoZWNrZWRdKSAjY2hlY2tib3ggewogICAgYmFja2dyb3VuZC1jb2xvcjogdmFyKC0tcGFwZXItY2hlY2tib3gtdW5jaGVja2VkLWNvbG9yLCB2YXIoLS1wcmltYXJ5LXRleHQtY29sb3IpKTsKICAgIG9wYWNpdHk6IDAuNTsKICB9CgogIDpob3N0KFtkaXNhYmxlZF0pICNjaGVja2JveExhYmVsICB7CiAgICBvcGFjaXR5OiAwLjY1OwogIH0KCiAgLyogaW52YWxpZCBzdGF0ZSAqLwogICNjaGVja2JveC5pbnZhbGlkOm5vdCguY2hlY2tlZCkgewogICAgYm9yZGVyLWNvbG9yOiB2YXIoLS1wYXBlci1jaGVja2JveC1lcnJvci1jb2xvciwgdmFyKC0tZXJyb3ItY29sb3IpKTsKICB9Cjwvc3R5bGU+Cgo8ZGl2IGlkPSJjaGVja2JveENvbnRhaW5lciI+CiAgPGRpdiBpZD0iY2hlY2tib3giIGNsYXNzJD0iW1tfY29tcHV0ZUNoZWNrYm94Q2xhc3MoY2hlY2tlZCwgaW52YWxpZCldXSI+CiAgICA8ZGl2IGlkPSJjaGVja21hcmsiIGNsYXNzJD0iW1tfY29tcHV0ZUNoZWNrbWFya0NsYXNzKGNoZWNrZWQpXV0iPjwvZGl2PgogIDwvZGl2Pgo8L2Rpdj4KCjxkaXYgaWQ9ImNoZWNrYm94TGFiZWwiPjxzbG90Pjwvc2xvdD48L2Rpdj5gOwovKioKICAgIEBsaWNlbnNlCiAgICBDb3B5cmlnaHQgKGMpIDIwMTUgVGhlIFBvbHltZXIgUHJvamVjdCBBdXRob3JzLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICAgVGhpcyBjb2RlIG1heSBvbmx5IGJlIHVzZWQgdW5kZXIgdGhlIEJTRCBzdHlsZSBsaWNlbnNlIGZvdW5kIGF0CiAgICBodHRwOi8vcG9seW1lci5naXRodWIuaW8vTElDRU5TRS50eHQgVGhlIGNvbXBsZXRlIHNldCBvZiBhdXRob3JzIG1heSBiZSBmb3VuZCBhdAogICAgaHR0cDovL3BvbHltZXIuZ2l0aHViLmlvL0FVVEhPUlMudHh0IFRoZSBjb21wbGV0ZSBzZXQgb2YgY29udHJpYnV0b3JzIG1heSBiZQogICAgZm91bmQgYXQgaHR0cDovL3BvbHltZXIuZ2l0aHViLmlvL0NPTlRSSUJVVE9SUy50eHQgQ29kZSBkaXN0cmlidXRlZCBieSBHb29nbGUgYXMKICAgIHBhcnQgb2YgdGhlIHBvbHltZXIgcHJvamVjdCBpcyBhbHNvIHN1YmplY3QgdG8gYW4gYWRkaXRpb25hbCBJUCByaWdodHMgZ3JhbnQKICAgIGZvdW5kIGF0IGh0dHA6Ly9wb2x5bWVyLmdpdGh1Yi5pby9QQVRFTlRTLnR4dAogICAgKi8KLyoqCiAgICBAbGljZW5zZQogICAgQ29weXJpZ2h0IChjKSAyMDE1IFRoZSBQb2x5bWVyIFByb2plY3QgQXV0aG9ycy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAgIFRoaXMgY29kZSBtYXkgb25seSBiZSB1c2VkIHVuZGVyIHRoZSBCU0Qgc3R5bGUgbGljZW5zZSBmb3VuZCBhdAogICAgaHR0cDovL3BvbHltZXIuZ2l0aHViLmlvL0xJQ0VOU0UudHh0IFRoZSBjb21wbGV0ZSBzZXQgb2YgYXV0aG9ycyBtYXkgYmUgZm91bmQgYXQKICAgIGh0dHA6Ly9wb2x5bWVyLmdpdGh1Yi5pby9BVVRIT1JTLnR4dCBUaGUgY29tcGxldGUgc2V0IG9mIGNvbnRyaWJ1dG9ycyBtYXkgYmUKICAgIGZvdW5kIGF0IGh0dHA6Ly9wb2x5bWVyLmdpdGh1Yi5pby9DT05UUklCVVRPUlMudHh0IENvZGUgZGlzdHJpYnV0ZWQgYnkgR29vZ2xlIGFzCiAgICBwYXJ0IG9mIHRoZSBwb2x5bWVyIHByb2plY3QgaXMgYWxzbyBzdWJqZWN0IHRvIGFuIGFkZGl0aW9uYWwgSVAgcmlnaHRzIGdyYW50CiAgICBmb3VuZCBhdCBodHRwOi8vcG9seW1lci5naXRodWIuaW8vUEFURU5UUy50eHQKICAgICovCmxldCBoYTt1YS5zZXRBdHRyaWJ1dGUoInN0cmlwLXdoaXRlc3BhY2UiLCIiKSxOcih7X3RlbXBsYXRlOnVhLGlzOiJwYXBlci1jaGVja2JveCIsYmVoYXZpb3JzOltjYV0saG9zdEF0dHJpYnV0ZXM6e3JvbGU6ImNoZWNrYm94IiwiYXJpYS1jaGVja2VkIjohMSx0YWJpbmRleDowfSxwcm9wZXJ0aWVzOnthcmlhQWN0aXZlQXR0cmlidXRlOnt0eXBlOlN0cmluZyx2YWx1ZToiYXJpYS1jaGVja2VkIn19LGF0dGFjaGVkOmZ1bmN0aW9uKCl7a2kodGhpcywoZnVuY3Rpb24oKXtpZigiLTFweCI9PT10aGlzLmdldENvbXB1dGVkU3R5bGVWYWx1ZSgiLS1jYWxjdWxhdGVkLXBhcGVyLWNoZWNrYm94LWluay1zaXplIikudHJpbSgpKXt2YXIgdD10aGlzLmdldENvbXB1dGVkU3R5bGVWYWx1ZSgiLS1jYWxjdWxhdGVkLXBhcGVyLWNoZWNrYm94LXNpemUiKS50cmltKCksZT0icHgiLG49dC5tYXRjaCgvW0EtWmEtel0rJC8pO251bGwhPT1uJiYoZT1uWzBdKTt2YXIgaT1wYXJzZUZsb2F0KHQpLHI9OC8zKmk7InB4Ij09PWUmJihyPU1hdGguZmxvb3IocikpJTIhPWklMiYmcisrLHRoaXMudXBkYXRlU3R5bGVzKHsiLS1wYXBlci1jaGVja2JveC1pbmstc2l6ZSI6citlfSl9fSkpfSxfY29tcHV0ZUNoZWNrYm94Q2xhc3M6ZnVuY3Rpb24odCxlKXt2YXIgbj0iIjtyZXR1cm4gdCYmKG4rPSJjaGVja2VkICIpLGUmJihuKz0iaW52YWxpZCIpLG59LF9jb21wdXRlQ2hlY2ttYXJrQ2xhc3M6ZnVuY3Rpb24odCl7cmV0dXJuIHQ/IiI6ImhpZGRlbiJ9LF9jcmVhdGVSaXBwbGU6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5fcmlwcGxlQ29udGFpbmVyPXRoaXMuJC5jaGVja2JveENvbnRhaW5lcixzYS5fY3JlYXRlUmlwcGxlLmNhbGwodGhpcyl9fSk7Y29uc3QgZGE9e3Byb3BlcnRpZXM6e3NpemluZ1RhcmdldDp7dHlwZTpPYmplY3QsdmFsdWU6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpc319LGZpdEludG86e3R5cGU6T2JqZWN0LHZhbHVlOndpbmRvd30sbm9PdmVybGFwOnt0eXBlOkJvb2xlYW59LHBvc2l0aW9uVGFyZ2V0Ont0eXBlOkVsZW1lbnR9LGhvcml6b250YWxBbGlnbjp7dHlwZTpTdHJpbmd9LHZlcnRpY2FsQWxpZ246e3R5cGU6U3RyaW5nfSxkeW5hbWljQWxpZ246e3R5cGU6Qm9vbGVhbn0saG9yaXpvbnRhbE9mZnNldDp7dHlwZTpOdW1iZXIsdmFsdWU6MCxub3RpZnk6ITB9LHZlcnRpY2FsT2Zmc2V0Ont0eXBlOk51bWJlcix2YWx1ZTowLG5vdGlmeTohMH0sYXV0b0ZpdE9uQXR0YWNoOnt0eXBlOkJvb2xlYW4sdmFsdWU6ITF9LGV4cGFuZFNpemluZ1RhcmdldEZvclNjcm9sbGJhcnM6e3R5cGU6Qm9vbGVhbix2YWx1ZTohMX0sX2ZpdEluZm86e3R5cGU6T2JqZWN0fX0sZ2V0IF9maXRXaWR0aCgpe3JldHVybiB0aGlzLmZpdEludG89PT13aW5kb3c/dGhpcy5maXRJbnRvLmlubmVyV2lkdGg6dGhpcy5maXRJbnRvLmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpLndpZHRofSxnZXQgX2ZpdEhlaWdodCgpe3JldHVybiB0aGlzLmZpdEludG89PT13aW5kb3c/dGhpcy5maXRJbnRvLmlubmVySGVpZ2h0OnRoaXMuZml0SW50by5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKS5oZWlnaHR9LGdldCBfZml0TGVmdCgpe3JldHVybiB0aGlzLmZpdEludG89PT13aW5kb3c/MDp0aGlzLmZpdEludG8uZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCkubGVmdH0sZ2V0IF9maXRUb3AoKXtyZXR1cm4gdGhpcy5maXRJbnRvPT09d2luZG93PzA6dGhpcy5maXRJbnRvLmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpLnRvcH0sZ2V0IF9kZWZhdWx0UG9zaXRpb25UYXJnZXQoKXt2YXIgdD1xaSh0aGlzKS5wYXJlbnROb2RlO3JldHVybiB0JiZ0Lm5vZGVUeXBlPT09Tm9kZS5ET0NVTUVOVF9GUkFHTUVOVF9OT0RFJiYodD10Lmhvc3QpLHR9LGdldCBfbG9jYWxlSG9yaXpvbnRhbEFsaWduKCl7aWYodGhpcy5faXNSVEwpe2lmKCJyaWdodCI9PT10aGlzLmhvcml6b250YWxBbGlnbilyZXR1cm4ibGVmdCI7aWYoImxlZnQiPT09dGhpcy5ob3Jpem9udGFsQWxpZ24pcmV0dXJuInJpZ2h0In1yZXR1cm4gdGhpcy5ob3Jpem9udGFsQWxpZ259LGdldCBfX3Nob3VsZFBvc2l0aW9uKCl7cmV0dXJuKHRoaXMuaG9yaXpvbnRhbEFsaWdufHx0aGlzLnZlcnRpY2FsQWxpZ24pJiZ0aGlzLnBvc2l0aW9uVGFyZ2V0fSxnZXQgX2lzUlRMKCl7cmV0dXJuIHZvaWQgMD09PXRoaXMuX21lbW9pemVkSXNSVEwmJih0aGlzLl9tZW1vaXplZElzUlRMPSJydGwiPT13aW5kb3cuZ2V0Q29tcHV0ZWRTdHlsZSh0aGlzKS5kaXJlY3Rpb24pLHRoaXMuX21lbW9pemVkSXNSVEx9LGF0dGFjaGVkOmZ1bmN0aW9uKCl7dGhpcy5wb3NpdGlvblRhcmdldD10aGlzLnBvc2l0aW9uVGFyZ2V0fHx0aGlzLl9kZWZhdWx0UG9zaXRpb25UYXJnZXQsdGhpcy5hdXRvRml0T25BdHRhY2gmJigibm9uZSI9PT13aW5kb3cuZ2V0Q29tcHV0ZWRTdHlsZSh0aGlzKS5kaXNwbGF5P3NldFRpbWVvdXQoZnVuY3Rpb24oKXt0aGlzLmZpdCgpfS5iaW5kKHRoaXMpKTood2luZG93LlNoYWR5RE9NJiZTaGFkeURPTS5mbHVzaCgpLHRoaXMuZml0KCkpKX0sZGV0YWNoZWQ6ZnVuY3Rpb24oKXt0aGlzLl9fZGVmZXJyZWRGaXQmJihjbGVhclRpbWVvdXQodGhpcy5fX2RlZmVycmVkRml0KSx0aGlzLl9fZGVmZXJyZWRGaXQ9bnVsbCl9LGZpdDpmdW5jdGlvbigpe3RoaXMucG9zaXRpb24oKSx0aGlzLmNvbnN0cmFpbigpLHRoaXMuY2VudGVyKCl9LF9kaXNjb3ZlckluZm86ZnVuY3Rpb24oKXtpZighdGhpcy5fZml0SW5mbyl7dmFyIHQ9d2luZG93LmdldENvbXB1dGVkU3R5bGUodGhpcyksZT13aW5kb3cuZ2V0Q29tcHV0ZWRTdHlsZSh0aGlzLnNpemluZ1RhcmdldCk7dGhpcy5fZml0SW5mbz17aW5saW5lU3R5bGU6e3RvcDp0aGlzLnN0eWxlLnRvcHx8IiIsbGVmdDp0aGlzLnN0eWxlLmxlZnR8fCIiLHBvc2l0aW9uOnRoaXMuc3R5bGUucG9zaXRpb258fCIifSxzaXplcklubGluZVN0eWxlOnttYXhXaWR0aDp0aGlzLnNpemluZ1RhcmdldC5zdHlsZS5tYXhXaWR0aHx8IiIsbWF4SGVpZ2h0OnRoaXMuc2l6aW5nVGFyZ2V0LnN0eWxlLm1heEhlaWdodHx8IiIsYm94U2l6aW5nOnRoaXMuc2l6aW5nVGFyZ2V0LnN0eWxlLmJveFNpemluZ3x8IiJ9LHBvc2l0aW9uZWRCeTp7dmVydGljYWxseToiYXV0byIhPT10LnRvcD8idG9wIjoiYXV0byIhPT10LmJvdHRvbT8iYm90dG9tIjpudWxsLGhvcml6b250YWxseToiYXV0byIhPT10LmxlZnQ/ImxlZnQiOiJhdXRvIiE9PXQucmlnaHQ/InJpZ2h0IjpudWxsfSxzaXplZEJ5OntoZWlnaHQ6Im5vbmUiIT09ZS5tYXhIZWlnaHQsd2lkdGg6Im5vbmUiIT09ZS5tYXhXaWR0aCxtaW5XaWR0aDpwYXJzZUludChlLm1pbldpZHRoLDEwKXx8MCxtaW5IZWlnaHQ6cGFyc2VJbnQoZS5taW5IZWlnaHQsMTApfHwwfSxtYXJnaW46e3RvcDpwYXJzZUludCh0Lm1hcmdpblRvcCwxMCl8fDAscmlnaHQ6cGFyc2VJbnQodC5tYXJnaW5SaWdodCwxMCl8fDAsYm90dG9tOnBhcnNlSW50KHQubWFyZ2luQm90dG9tLDEwKXx8MCxsZWZ0OnBhcnNlSW50KHQubWFyZ2luTGVmdCwxMCl8fDB9fX19LHJlc2V0Rml0OmZ1bmN0aW9uKCl7dmFyIHQ9dGhpcy5fZml0SW5mb3x8e307Zm9yKHZhciBlIGluIHQuc2l6ZXJJbmxpbmVTdHlsZSl0aGlzLnNpemluZ1RhcmdldC5zdHlsZVtlXT10LnNpemVySW5saW5lU3R5bGVbZV07Zm9yKHZhciBlIGluIHQuaW5saW5lU3R5bGUpdGhpcy5zdHlsZVtlXT10LmlubGluZVN0eWxlW2VdO3RoaXMuX2ZpdEluZm89bnVsbH0scmVmaXQ6ZnVuY3Rpb24oKXt2YXIgdD10aGlzLnNpemluZ1RhcmdldC5zY3JvbGxMZWZ0LGU9dGhpcy5zaXppbmdUYXJnZXQuc2Nyb2xsVG9wO3RoaXMucmVzZXRGaXQoKSx0aGlzLmZpdCgpLHRoaXMuc2l6aW5nVGFyZ2V0LnNjcm9sbExlZnQ9dCx0aGlzLnNpemluZ1RhcmdldC5zY3JvbGxUb3A9ZX0scG9zaXRpb246ZnVuY3Rpb24oKXtpZighdGhpcy5fX3Nob3VsZFBvc2l0aW9uKXJldHVybjt0aGlzLl9kaXNjb3ZlckluZm8oKSx3aW5kb3cuU2hhZHlET00mJndpbmRvdy5TaGFkeURPTS5mbHVzaCgpLHRoaXMuc3R5bGUucG9zaXRpb249ImZpeGVkIix0aGlzLnNpemluZ1RhcmdldC5zdHlsZS5ib3hTaXppbmc9ImJvcmRlci1ib3giLHRoaXMuc3R5bGUubGVmdD0iMHB4Iix0aGlzLnN0eWxlLnRvcD0iMHB4Ijt2YXIgdD10aGlzLmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpLGU9dGhpcy5fX2dldE5vcm1hbGl6ZWRSZWN0KHRoaXMucG9zaXRpb25UYXJnZXQpLG49dGhpcy5fX2dldE5vcm1hbGl6ZWRSZWN0KHRoaXMuZml0SW50byk7bGV0IGkscixvLGE7dGhpcy5leHBhbmRTaXppbmdUYXJnZXRGb3JTY3JvbGxiYXJzJiYoaT10aGlzLnNpemluZ1RhcmdldC5vZmZzZXRXaWR0aCxyPXRoaXMuc2l6aW5nVGFyZ2V0Lm9mZnNldEhlaWdodCxvPXRoaXMuc2l6aW5nVGFyZ2V0LmNsaWVudFdpZHRoLGE9dGhpcy5zaXppbmdUYXJnZXQuY2xpZW50SGVpZ2h0KTt2YXIgcz10aGlzLl9maXRJbmZvLm1hcmdpbixsPXRoaXMuX19nZXRQb3NpdGlvbih0aGlzLl9sb2NhbGVIb3Jpem9udGFsQWxpZ24sdGhpcy52ZXJ0aWNhbEFsaWduLHt3aWR0aDp0LndpZHRoK3MubGVmdCtzLnJpZ2h0LGhlaWdodDp0LmhlaWdodCtzLnRvcCtzLmJvdHRvbX0sdCxlLG4pLGM9bC5sZWZ0K3MubGVmdCx1PWwudG9wK3MudG9wLGg9TWF0aC5taW4obi5yaWdodC1zLnJpZ2h0LGMrdC53aWR0aCksZD1NYXRoLm1pbihuLmJvdHRvbS1zLmJvdHRvbSx1K3QuaGVpZ2h0KTtjPU1hdGgubWF4KG4ubGVmdCtzLmxlZnQsTWF0aC5taW4oYyxoLXRoaXMuX2ZpdEluZm8uc2l6ZWRCeS5taW5XaWR0aCkpLHU9TWF0aC5tYXgobi50b3Arcy50b3AsTWF0aC5taW4odSxkLXRoaXMuX2ZpdEluZm8uc2l6ZWRCeS5taW5IZWlnaHQpKTtjb25zdCBwPU1hdGgubWF4KGgtYyx0aGlzLl9maXRJbmZvLnNpemVkQnkubWluV2lkdGgpLGY9TWF0aC5tYXgoZC11LHRoaXMuX2ZpdEluZm8uc2l6ZWRCeS5taW5IZWlnaHQpO3RoaXMuc2l6aW5nVGFyZ2V0LnN0eWxlLm1heFdpZHRoPXArInB4Iix0aGlzLnNpemluZ1RhcmdldC5zdHlsZS5tYXhIZWlnaHQ9ZisicHgiO2NvbnN0IG09Yy10LmxlZnQsZz11LXQudG9wO2lmKHRoaXMuc3R5bGUubGVmdD1gJHttfXB4YCx0aGlzLnN0eWxlLnRvcD1gJHtnfXB4YCx0aGlzLmV4cGFuZFNpemluZ1RhcmdldEZvclNjcm9sbGJhcnMpe2NvbnN0IHQ9dGhpcy5zaXppbmdUYXJnZXQub2Zmc2V0SGVpZ2h0LGU9dC10aGlzLnNpemluZ1RhcmdldC5jbGllbnRIZWlnaHQtKHItYSk7aWYoZT4wKXtjb25zdCBpPU1hdGgubWluKG4uaGVpZ2h0LXMudG9wLXMuYm90dG9tLGYrZSk7dGhpcy5zaXppbmdUYXJnZXQuc3R5bGUubWF4SGVpZ2h0PWAke2l9cHhgO2NvbnN0IHI9dGhpcy5zaXppbmdUYXJnZXQub2Zmc2V0SGVpZ2h0LG89ci10O2xldCBhOyJ0b3AiPT09bC52ZXJ0aWNhbEFsaWduP2E9ZzoibWlkZGxlIj09PWwudmVydGljYWxBbGlnbj9hPWctby8yOiJib3R0b20iPT09bC52ZXJ0aWNhbEFsaWduJiYoYT1nLW8pLGE9TWF0aC5tYXgobi50b3Arcy50b3AsTWF0aC5taW4oYSxuLmJvdHRvbS1zLmJvdHRvbS1yKSksdGhpcy5zdHlsZS50b3A9YCR7YX1weGB9Y29uc3QgYz10aGlzLnNpemluZ1RhcmdldC5vZmZzZXRXaWR0aCx1PWMtdGhpcy5zaXppbmdUYXJnZXQuY2xpZW50V2lkdGgtKGktbyk7aWYodT4wKXtjb25zdCB0PSgoKT0+e2lmKHZvaWQgMCE9PWhhKXJldHVybiBoYTtjb25zdCB0PWRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoImRpdiIpO09iamVjdC5hc3NpZ24odC5zdHlsZSx7b3ZlcmZsb3c6ImF1dG8iLHBvc2l0aW9uOiJmaXhlZCIsbGVmdDoiMHB4Iix0b3A6IjBweCIsbWF4V2lkdGg6IjEwMHB4IixtYXhIZWlnaHQ6IjEwMHB4In0pO2NvbnN0IGU9ZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgiZGl2Iik7cmV0dXJuIGUuc3R5bGUud2lkdGg9IjIwMHB4IixlLnN0eWxlLmhlaWdodD0iMjAwcHgiLHQuYXBwZW5kQ2hpbGQoZSksZG9jdW1lbnQuYm9keS5hcHBlbmRDaGlsZCh0KSxoYT1NYXRoLmFicyh0Lm9mZnNldFdpZHRoLTEwMCk+MT90Lm9mZnNldFdpZHRoLXQuY2xpZW50V2lkdGg6MCxkb2N1bWVudC5ib2R5LnJlbW92ZUNoaWxkKHQpLGhhfSkoKSxlPU1hdGgubWluKG4ud2lkdGgtcy5sZWZ0LXMucmlnaHQscCt1LXQpO3RoaXMuc2l6aW5nVGFyZ2V0LnN0eWxlLm1heFdpZHRoPWAke2V9cHhgO2NvbnN0IGk9dGhpcy5zaXppbmdUYXJnZXQub2Zmc2V0V2lkdGgrdCxyPWktYztsZXQgbzsibGVmdCI9PT1sLmhvcml6b250YWxBbGlnbj9vPW06ImNlbnRlciI9PT1sLmhvcml6b250YWxBbGlnbj9vPW0tci8yOiJyaWdodCI9PT1sLmhvcml6b250YWxBbGlnbiYmKG89bS1yKSxvPU1hdGgubWF4KG4ubGVmdCtzLmxlZnQsTWF0aC5taW4obyxuLnJpZ2h0LXMucmlnaHQtaSkpLHRoaXMuc3R5bGUubGVmdD1gJHtvfXB4YH19fSxjb25zdHJhaW46ZnVuY3Rpb24oKXtpZighdGhpcy5fX3Nob3VsZFBvc2l0aW9uKXt0aGlzLl9kaXNjb3ZlckluZm8oKTt2YXIgdD10aGlzLl9maXRJbmZvO3QucG9zaXRpb25lZEJ5LnZlcnRpY2FsbHl8fCh0aGlzLnN0eWxlLnBvc2l0aW9uPSJmaXhlZCIsdGhpcy5zdHlsZS50b3A9IjBweCIpLHQucG9zaXRpb25lZEJ5Lmhvcml6b250YWxseXx8KHRoaXMuc3R5bGUucG9zaXRpb249ImZpeGVkIix0aGlzLnN0eWxlLmxlZnQ9IjBweCIpLHRoaXMuc2l6aW5nVGFyZ2V0LnN0eWxlLmJveFNpemluZz0iYm9yZGVyLWJveCI7dmFyIGU9dGhpcy5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKTt0LnNpemVkQnkuaGVpZ2h0fHx0aGlzLl9fc2l6ZURpbWVuc2lvbihlLHQucG9zaXRpb25lZEJ5LnZlcnRpY2FsbHksInRvcCIsImJvdHRvbSIsIkhlaWdodCIpLHQuc2l6ZWRCeS53aWR0aHx8dGhpcy5fX3NpemVEaW1lbnNpb24oZSx0LnBvc2l0aW9uZWRCeS5ob3Jpem9udGFsbHksImxlZnQiLCJyaWdodCIsIldpZHRoIil9fSxfc2l6ZURpbWVuc2lvbjpmdW5jdGlvbih0LGUsbixpLHIpe3RoaXMuX19zaXplRGltZW5zaW9uKHQsZSxuLGkscil9LF9fc2l6ZURpbWVuc2lvbjpmdW5jdGlvbih0LGUsbixpLHIpe3ZhciBvPXRoaXMuX2ZpdEluZm8sYT10aGlzLl9fZ2V0Tm9ybWFsaXplZFJlY3QodGhpcy5maXRJbnRvKSxzPSJXaWR0aCI9PT1yP2Eud2lkdGg6YS5oZWlnaHQsbD1lPT09aSxjPSJvZmZzZXQiK3I7dGhpcy5zaXppbmdUYXJnZXQuc3R5bGVbIm1heCIrcl09cy1vLm1hcmdpbltsP246aV0tKGw/cy10W2ldOnRbbl0pLSh0aGlzW2NdLXRoaXMuc2l6aW5nVGFyZ2V0W2NdKSsicHgifSxjZW50ZXI6ZnVuY3Rpb24oKXtpZighdGhpcy5fX3Nob3VsZFBvc2l0aW9uKXt0aGlzLl9kaXNjb3ZlckluZm8oKTt2YXIgdD10aGlzLl9maXRJbmZvLnBvc2l0aW9uZWRCeTtpZighdC52ZXJ0aWNhbGx5fHwhdC5ob3Jpem9udGFsbHkpe3RoaXMuc3R5bGUucG9zaXRpb249ImZpeGVkIix0LnZlcnRpY2FsbHl8fCh0aGlzLnN0eWxlLnRvcD0iMHB4IiksdC5ob3Jpem9udGFsbHl8fCh0aGlzLnN0eWxlLmxlZnQ9IjBweCIpO3ZhciBlPXRoaXMuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCksbj10aGlzLl9fZ2V0Tm9ybWFsaXplZFJlY3QodGhpcy5maXRJbnRvKTt0LnZlcnRpY2FsbHl8fCh0aGlzLnN0eWxlLnRvcD1uLnRvcC1lLnRvcCsobi5oZWlnaHQtZS5oZWlnaHQpLzIrInB4IiksdC5ob3Jpem9udGFsbHl8fCh0aGlzLnN0eWxlLmxlZnQ9bi5sZWZ0LWUubGVmdCsobi53aWR0aC1lLndpZHRoKS8yKyJweCIpfX19LF9fZ2V0Tm9ybWFsaXplZFJlY3Q6ZnVuY3Rpb24odCl7cmV0dXJuIHQ9PT1kb2N1bWVudC5kb2N1bWVudEVsZW1lbnR8fHQ9PT13aW5kb3c/e3RvcDowLGxlZnQ6MCx3aWR0aDp3aW5kb3cuaW5uZXJXaWR0aCxoZWlnaHQ6d2luZG93LmlubmVySGVpZ2h0LHJpZ2h0OndpbmRvdy5pbm5lcldpZHRoLGJvdHRvbTp3aW5kb3cuaW5uZXJIZWlnaHR9OnQuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCl9LF9fZ2V0T2Zmc2NyZWVuQXJlYTpmdW5jdGlvbih0LGUsbil7dmFyIGk9TWF0aC5taW4oMCx0LnRvcCkrTWF0aC5taW4oMCxuLmJvdHRvbS0odC50b3ArZS5oZWlnaHQpKSxyPU1hdGgubWluKDAsdC5sZWZ0KStNYXRoLm1pbigwLG4ucmlnaHQtKHQubGVmdCtlLndpZHRoKSk7cmV0dXJuIE1hdGguYWJzKGkpKmUud2lkdGgrTWF0aC5hYnMocikqZS5oZWlnaHR9LF9fZ2V0UG9zaXRpb246ZnVuY3Rpb24odCxlLG4saSxyLG8pe3ZhciBhLHM9W3t2ZXJ0aWNhbEFsaWduOiJ0b3AiLGhvcml6b250YWxBbGlnbjoibGVmdCIsdG9wOnIudG9wK3RoaXMudmVydGljYWxPZmZzZXQsbGVmdDpyLmxlZnQrdGhpcy5ob3Jpem9udGFsT2Zmc2V0fSx7dmVydGljYWxBbGlnbjoidG9wIixob3Jpem9udGFsQWxpZ246InJpZ2h0Iix0b3A6ci50b3ArdGhpcy52ZXJ0aWNhbE9mZnNldCxsZWZ0OnIucmlnaHQtbi53aWR0aC10aGlzLmhvcml6b250YWxPZmZzZXR9LHt2ZXJ0aWNhbEFsaWduOiJib3R0b20iLGhvcml6b250YWxBbGlnbjoibGVmdCIsdG9wOnIuYm90dG9tLW4uaGVpZ2h0LXRoaXMudmVydGljYWxPZmZzZXQsbGVmdDpyLmxlZnQrdGhpcy5ob3Jpem9udGFsT2Zmc2V0fSx7dmVydGljYWxBbGlnbjoiYm90dG9tIixob3Jpem9udGFsQWxpZ246InJpZ2h0Iix0b3A6ci5ib3R0b20tbi5oZWlnaHQtdGhpcy52ZXJ0aWNhbE9mZnNldCxsZWZ0OnIucmlnaHQtbi53aWR0aC10aGlzLmhvcml6b250YWxPZmZzZXR9XTtpZih0aGlzLm5vT3ZlcmxhcCl7Zm9yKHZhciBsPTAsYz1zLmxlbmd0aDtsPGM7bCsrKXt2YXIgdT17fTtmb3IodmFyIGggaW4gc1tsXSl1W2hdPXNbbF1baF07cy5wdXNoKHUpfXNbMF0udG9wPXNbMV0udG9wKz1yLmhlaWdodCxzWzJdLnRvcD1zWzNdLnRvcC09ci5oZWlnaHQsc1s0XS5sZWZ0PXNbNl0ubGVmdCs9ci53aWR0aCxzWzVdLmxlZnQ9c1s3XS5sZWZ0LT1yLndpZHRofWZvcihlPSJhdXRvIj09PWU/bnVsbDplLCh0PSJhdXRvIj09PXQ/bnVsbDp0KSYmImNlbnRlciIhPT10fHwocy5wdXNoKHt2ZXJ0aWNhbEFsaWduOiJ0b3AiLGhvcml6b250YWxBbGlnbjoiY2VudGVyIix0b3A6ci50b3ArdGhpcy52ZXJ0aWNhbE9mZnNldCsodGhpcy5ub092ZXJsYXA/ci5oZWlnaHQ6MCksbGVmdDpyLmxlZnQtaS53aWR0aC8yK3Iud2lkdGgvMit0aGlzLmhvcml6b250YWxPZmZzZXR9KSxzLnB1c2goe3ZlcnRpY2FsQWxpZ246ImJvdHRvbSIsaG9yaXpvbnRhbEFsaWduOiJjZW50ZXIiLHRvcDpyLmJvdHRvbS1uLmhlaWdodC10aGlzLnZlcnRpY2FsT2Zmc2V0LSh0aGlzLm5vT3ZlcmxhcD9yLmhlaWdodDowKSxsZWZ0OnIubGVmdC1pLndpZHRoLzIrci53aWR0aC8yK3RoaXMuaG9yaXpvbnRhbE9mZnNldH0pKSxlJiYibWlkZGxlIiE9PWV8fChzLnB1c2goe3ZlcnRpY2FsQWxpZ246Im1pZGRsZSIsaG9yaXpvbnRhbEFsaWduOiJsZWZ0Iix0b3A6ci50b3AtaS5oZWlnaHQvMityLmhlaWdodC8yK3RoaXMudmVydGljYWxPZmZzZXQsbGVmdDpyLmxlZnQrdGhpcy5ob3Jpem9udGFsT2Zmc2V0Kyh0aGlzLm5vT3ZlcmxhcD9yLndpZHRoOjApfSkscy5wdXNoKHt2ZXJ0aWNhbEFsaWduOiJtaWRkbGUiLGhvcml6b250YWxBbGlnbjoicmlnaHQiLHRvcDpyLnRvcC1pLmhlaWdodC8yK3IuaGVpZ2h0LzIrdGhpcy52ZXJ0aWNhbE9mZnNldCxsZWZ0OnIucmlnaHQtbi53aWR0aC10aGlzLmhvcml6b250YWxPZmZzZXQtKHRoaXMubm9PdmVybGFwP3Iud2lkdGg6MCl9KSksIm1pZGRsZSI9PT1lJiYiY2VudGVyIj09PXQmJnMucHVzaCh7dmVydGljYWxBbGlnbjoibWlkZGxlIixob3Jpem9udGFsQWxpZ246ImNlbnRlciIsdG9wOnIudG9wLWkuaGVpZ2h0LzIrci5oZWlnaHQvMit0aGlzLnZlcnRpY2FsT2Zmc2V0LGxlZnQ6ci5sZWZ0LWkud2lkdGgvMityLndpZHRoLzIrdGhpcy5ob3Jpem9udGFsT2Zmc2V0fSksbD0wO2w8cy5sZW5ndGg7bCsrKXt2YXIgZD1zW2xdLHA9ZC52ZXJ0aWNhbEFsaWduPT09ZSxmPWQuaG9yaXpvbnRhbEFsaWduPT09dDtpZighdGhpcy5keW5hbWljQWxpZ24mJiF0aGlzLm5vT3ZlcmxhcCYmcCYmZil7YT1kO2JyZWFrfXZhciBtPSghZXx8cCkmJighdHx8Zik7aWYodGhpcy5keW5hbWljQWxpZ258fG0pe2lmKGQub2Zmc2NyZWVuQXJlYT10aGlzLl9fZ2V0T2Zmc2NyZWVuQXJlYShkLG4sbyksMD09PWQub2Zmc2NyZWVuQXJlYSYmbSl7YT1kO2JyZWFrfXZhciBnPWQub2Zmc2NyZWVuQXJlYS0oYT1hfHxkKS5vZmZzY3JlZW5BcmVhOyhnPDB8fDA9PT1nJiYocHx8ZikpJiYoYT1kKX19cmV0dXJuIGF9fTsKLyoqCiAgICBAbGljZW5zZQogICAgQ29weXJpZ2h0IChjKSAyMDE2IFRoZSBQb2x5bWVyIFByb2plY3QgQXV0aG9ycy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAgIFRoaXMgY29kZSBtYXkgb25seSBiZSB1c2VkIHVuZGVyIHRoZSBCU0Qgc3R5bGUgbGljZW5zZSBmb3VuZCBhdAogICAgaHR0cDovL3BvbHltZXIuZ2l0aHViLmlvL0xJQ0VOU0UudHh0IFRoZSBjb21wbGV0ZSBzZXQgb2YgYXV0aG9ycyBtYXkgYmUgZm91bmQgYXQKICAgIGh0dHA6Ly9wb2x5bWVyLmdpdGh1Yi5pby9BVVRIT1JTLnR4dCBUaGUgY29tcGxldGUgc2V0IG9mIGNvbnRyaWJ1dG9ycyBtYXkgYmUKICAgIGZvdW5kIGF0IGh0dHA6Ly9wb2x5bWVyLmdpdGh1Yi5pby9DT05UUklCVVRPUlMudHh0IENvZGUgZGlzdHJpYnV0ZWQgYnkgR29vZ2xlIGFzCiAgICBwYXJ0IG9mIHRoZSBwb2x5bWVyIHByb2plY3QgaXMgYWxzbyBzdWJqZWN0IHRvIGFuIGFkZGl0aW9uYWwgSVAgcmlnaHRzIGdyYW50CiAgICBmb3VuZCBhdCBodHRwOi8vcG9seW1lci5naXRodWIuaW8vUEFURU5UUy50eHQKICAgICovCnZhciBwYT1FbGVtZW50LnByb3RvdHlwZSxmYT1wYS5tYXRjaGVzfHxwYS5tYXRjaGVzU2VsZWN0b3J8fHBhLm1vek1hdGNoZXNTZWxlY3Rvcnx8cGEubXNNYXRjaGVzU2VsZWN0b3J8fHBhLm9NYXRjaGVzU2VsZWN0b3J8fHBhLndlYmtpdE1hdGNoZXNTZWxlY3Rvcjtjb25zdCBtYT1uZXcgY2xhc3N7Z2V0VGFiYmFibGVOb2Rlcyh0KXt2YXIgZT1bXTtyZXR1cm4gdGhpcy5fY29sbGVjdFRhYmJhYmxlTm9kZXModCxlKT90aGlzLl9zb3J0QnlUYWJJbmRleChlKTplfWlzRm9jdXNhYmxlKHQpe3JldHVybiBmYS5jYWxsKHQsImlucHV0LCBzZWxlY3QsIHRleHRhcmVhLCBidXR0b24sIG9iamVjdCIpP2ZhLmNhbGwodCwiOm5vdChbZGlzYWJsZWRdKSIpOmZhLmNhbGwodCwiYVtocmVmXSwgYXJlYVtocmVmXSwgaWZyYW1lLCBbdGFiaW5kZXhdLCBbY29udGVudEVkaXRhYmxlXSIpfWlzVGFiYmFibGUodCl7cmV0dXJuIHRoaXMuaXNGb2N1c2FibGUodCkmJmZhLmNhbGwodCwnOm5vdChbdGFiaW5kZXg9Ii0xIl0pJykmJnRoaXMuX2lzVmlzaWJsZSh0KX1fbm9ybWFsaXplZFRhYkluZGV4KHQpe2lmKHRoaXMuaXNGb2N1c2FibGUodCkpe3ZhciBlPXQuZ2V0QXR0cmlidXRlKCJ0YWJpbmRleCIpfHwwO3JldHVybiBOdW1iZXIoZSl9cmV0dXJuLTF9X2NvbGxlY3RUYWJiYWJsZU5vZGVzKHQsZSl7aWYodC5ub2RlVHlwZSE9PU5vZGUuRUxFTUVOVF9OT0RFKXJldHVybiExO3ZhciBuPXQ7aWYoIXRoaXMuX2lzVmlzaWJsZShuKSlyZXR1cm4hMTt2YXIgaSxyPXRoaXMuX25vcm1hbGl6ZWRUYWJJbmRleChuKSxvPXI+MDtyPj0wJiZlLnB1c2gobiksaT0iY29udGVudCI9PT1uLmxvY2FsTmFtZXx8InNsb3QiPT09bi5sb2NhbE5hbWU/cWkobikuZ2V0RGlzdHJpYnV0ZWROb2RlcygpOnFpKG4ucm9vdHx8bikuY2hpbGRyZW47Zm9yKHZhciBhPTA7YTxpLmxlbmd0aDthKyspbz10aGlzLl9jb2xsZWN0VGFiYmFibGVOb2RlcyhpW2FdLGUpfHxvO3JldHVybiBvfV9pc1Zpc2libGUodCl7dmFyIGU9dC5zdHlsZTtyZXR1cm4iaGlkZGVuIiE9PWUudmlzaWJpbGl0eSYmIm5vbmUiIT09ZS5kaXNwbGF5JiYiaGlkZGVuIiE9PShlPXdpbmRvdy5nZXRDb21wdXRlZFN0eWxlKHQpKS52aXNpYmlsaXR5JiYibm9uZSIhPT1lLmRpc3BsYXl9X3NvcnRCeVRhYkluZGV4KHQpe3ZhciBlPXQubGVuZ3RoO2lmKGU8MilyZXR1cm4gdDt2YXIgbj1NYXRoLmNlaWwoZS8yKSxpPXRoaXMuX3NvcnRCeVRhYkluZGV4KHQuc2xpY2UoMCxuKSkscj10aGlzLl9zb3J0QnlUYWJJbmRleCh0LnNsaWNlKG4pKTtyZXR1cm4gdGhpcy5fbWVyZ2VTb3J0QnlUYWJJbmRleChpLHIpfV9tZXJnZVNvcnRCeVRhYkluZGV4KHQsZSl7Zm9yKHZhciBuPVtdO3QubGVuZ3RoPjAmJmUubGVuZ3RoPjA7KXRoaXMuX2hhc0xvd2VyVGFiT3JkZXIodFswXSxlWzBdKT9uLnB1c2goZS5zaGlmdCgpKTpuLnB1c2godC5zaGlmdCgpKTtyZXR1cm4gbi5jb25jYXQodCxlKX1faGFzTG93ZXJUYWJPcmRlcih0LGUpe3ZhciBuPU1hdGgubWF4KHQudGFiSW5kZXgsMCksaT1NYXRoLm1heChlLnRhYkluZGV4LDApO3JldHVybiAwPT09bnx8MD09PWk/aT5uOm4+aX19OwovKioKICAgIEBsaWNlbnNlCiAgICBDb3B5cmlnaHQgKGMpIDIwMTUgVGhlIFBvbHltZXIgUHJvamVjdCBBdXRob3JzLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICAgVGhpcyBjb2RlIG1heSBvbmx5IGJlIHVzZWQgdW5kZXIgdGhlIEJTRCBzdHlsZSBsaWNlbnNlIGZvdW5kIGF0CiAgICBodHRwOi8vcG9seW1lci5naXRodWIuaW8vTElDRU5TRS50eHQgVGhlIGNvbXBsZXRlIHNldCBvZiBhdXRob3JzIG1heSBiZSBmb3VuZCBhdAogICAgaHR0cDovL3BvbHltZXIuZ2l0aHViLmlvL0FVVEhPUlMudHh0IFRoZSBjb21wbGV0ZSBzZXQgb2YgY29udHJpYnV0b3JzIG1heSBiZQogICAgZm91bmQgYXQgaHR0cDovL3BvbHltZXIuZ2l0aHViLmlvL0NPTlRSSUJVVE9SUy50eHQgQ29kZSBkaXN0cmlidXRlZCBieSBHb29nbGUgYXMKICAgIHBhcnQgb2YgdGhlIHBvbHltZXIgcHJvamVjdCBpcyBhbHNvIHN1YmplY3QgdG8gYW4gYWRkaXRpb25hbCBJUCByaWdodHMgZ3JhbnQKICAgIGZvdW5kIGF0IGh0dHA6Ly9wb2x5bWVyLmdpdGh1Yi5pby9QQVRFTlRTLnR4dAogICAgKi9Ocih7X3RlbXBsYXRlOl9lYAogICAgPHN0eWxlPgogICAgICA6aG9zdCB7CiAgICAgICAgcG9zaXRpb246IGZpeGVkOwogICAgICAgIHRvcDogMDsKICAgICAgICBsZWZ0OiAwOwogICAgICAgIHdpZHRoOiAxMDAlOwogICAgICAgIGhlaWdodDogMTAwJTsKICAgICAgICBiYWNrZ3JvdW5kLWNvbG9yOiB2YXIoLS1pcm9uLW92ZXJsYXktYmFja2Ryb3AtYmFja2dyb3VuZC1jb2xvciwgIzAwMCk7CiAgICAgICAgb3BhY2l0eTogMDsKICAgICAgICB0cmFuc2l0aW9uOiBvcGFjaXR5IDAuMnM7CiAgICAgICAgcG9pbnRlci1ldmVudHM6IG5vbmU7CiAgICAgICAgQGFwcGx5IC0taXJvbi1vdmVybGF5LWJhY2tkcm9wOwogICAgICB9CgogICAgICA6aG9zdCgub3BlbmVkKSB7CiAgICAgICAgb3BhY2l0eTogdmFyKC0taXJvbi1vdmVybGF5LWJhY2tkcm9wLW9wYWNpdHksIDAuNik7CiAgICAgICAgcG9pbnRlci1ldmVudHM6IGF1dG87CiAgICAgICAgQGFwcGx5IC0taXJvbi1vdmVybGF5LWJhY2tkcm9wLW9wZW5lZDsKICAgICAgfQogICAgPC9zdHlsZT4KCiAgICA8c2xvdD48L3Nsb3Q+CmAsaXM6Imlyb24tb3ZlcmxheS1iYWNrZHJvcCIscHJvcGVydGllczp7b3BlbmVkOntyZWZsZWN0VG9BdHRyaWJ1dGU6ITAsdHlwZTpCb29sZWFuLHZhbHVlOiExLG9ic2VydmVyOiJfb3BlbmVkQ2hhbmdlZCJ9fSxsaXN0ZW5lcnM6e3RyYW5zaXRpb25lbmQ6Il9vblRyYW5zaXRpb25lbmQifSxjcmVhdGVkOmZ1bmN0aW9uKCl7dGhpcy5fX29wZW5lZFJhZj1udWxsfSxhdHRhY2hlZDpmdW5jdGlvbigpe3RoaXMub3BlbmVkJiZ0aGlzLl9vcGVuZWRDaGFuZ2VkKHRoaXMub3BlbmVkKX0scHJlcGFyZTpmdW5jdGlvbigpe3RoaXMub3BlbmVkJiYhdGhpcy5wYXJlbnROb2RlJiZxaShkb2N1bWVudC5ib2R5KS5hcHBlbmRDaGlsZCh0aGlzKX0sb3BlbjpmdW5jdGlvbigpe3RoaXMub3BlbmVkPSEwfSxjbG9zZTpmdW5jdGlvbigpe3RoaXMub3BlbmVkPSExfSxjb21wbGV0ZTpmdW5jdGlvbigpe3RoaXMub3BlbmVkfHx0aGlzLnBhcmVudE5vZGUhPT1kb2N1bWVudC5ib2R5fHxxaSh0aGlzLnBhcmVudE5vZGUpLnJlbW92ZUNoaWxkKHRoaXMpfSxfb25UcmFuc2l0aW9uZW5kOmZ1bmN0aW9uKHQpe3QmJnQudGFyZ2V0PT09dGhpcyYmdGhpcy5jb21wbGV0ZSgpfSxfb3BlbmVkQ2hhbmdlZDpmdW5jdGlvbih0KXtpZih0KXRoaXMucHJlcGFyZSgpO2Vsc2V7dmFyIGU9d2luZG93LmdldENvbXB1dGVkU3R5bGUodGhpcyk7IjBzIiE9PWUudHJhbnNpdGlvbkR1cmF0aW9uJiYwIT1lLm9wYWNpdHl8fHRoaXMuY29tcGxldGUoKX10aGlzLmlzQXR0YWNoZWQmJih0aGlzLl9fb3BlbmVkUmFmJiYod2luZG93LmNhbmNlbEFuaW1hdGlvbkZyYW1lKHRoaXMuX19vcGVuZWRSYWYpLHRoaXMuX19vcGVuZWRSYWY9bnVsbCksdGhpcy5zY3JvbGxUb3A9dGhpcy5zY3JvbGxUb3AsdGhpcy5fX29wZW5lZFJhZj13aW5kb3cucmVxdWVzdEFuaW1hdGlvbkZyYW1lKGZ1bmN0aW9uKCl7dGhpcy5fX29wZW5lZFJhZj1udWxsLHRoaXMudG9nZ2xlQ2xhc3MoIm9wZW5lZCIsdGhpcy5vcGVuZWQpfS5iaW5kKHRoaXMpKSl9fSk7Y29uc3QgZ2E9bmV3Ci8qKgogICAgQGxpY2Vuc2UKICAgIENvcHlyaWdodCAoYykgMjAxNSBUaGUgUG9seW1lciBQcm9qZWN0IEF1dGhvcnMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgICBUaGlzIGNvZGUgbWF5IG9ubHkgYmUgdXNlZCB1bmRlciB0aGUgQlNEIHN0eWxlIGxpY2Vuc2UgZm91bmQgYXQKICAgIGh0dHA6Ly9wb2x5bWVyLmdpdGh1Yi5pby9MSUNFTlNFLnR4dCBUaGUgY29tcGxldGUgc2V0IG9mIGF1dGhvcnMgbWF5IGJlIGZvdW5kIGF0CiAgICBodHRwOi8vcG9seW1lci5naXRodWIuaW8vQVVUSE9SUy50eHQgVGhlIGNvbXBsZXRlIHNldCBvZiBjb250cmlidXRvcnMgbWF5IGJlCiAgICBmb3VuZCBhdCBodHRwOi8vcG9seW1lci5naXRodWIuaW8vQ09OVFJJQlVUT1JTLnR4dCBDb2RlIGRpc3RyaWJ1dGVkIGJ5IEdvb2dsZSBhcwogICAgcGFydCBvZiB0aGUgcG9seW1lciBwcm9qZWN0IGlzIGFsc28gc3ViamVjdCB0byBhbiBhZGRpdGlvbmFsIElQIHJpZ2h0cyBncmFudAogICAgZm91bmQgYXQgaHR0cDovL3BvbHltZXIuZ2l0aHViLmlvL1BBVEVOVFMudHh0CiAgICAqLwpjbGFzc3tjb25zdHJ1Y3Rvcigpe3RoaXMuX292ZXJsYXlzPVtdLHRoaXMuX21pbmltdW1aPTEwMSx0aGlzLl9iYWNrZHJvcEVsZW1lbnQ9bnVsbCxuaShkb2N1bWVudC5kb2N1bWVudEVsZW1lbnQsInRhcCIsKGZ1bmN0aW9uKCl7fSkpLGRvY3VtZW50LmFkZEV2ZW50TGlzdGVuZXIoInRhcCIsdGhpcy5fb25DYXB0dXJlQ2xpY2suYmluZCh0aGlzKSwhMCksZG9jdW1lbnQuYWRkRXZlbnRMaXN0ZW5lcigiZm9jdXMiLHRoaXMuX29uQ2FwdHVyZUZvY3VzLmJpbmQodGhpcyksITApLGRvY3VtZW50LmFkZEV2ZW50TGlzdGVuZXIoImtleWRvd24iLHRoaXMuX29uQ2FwdHVyZUtleURvd24uYmluZCh0aGlzKSwhMCl9Z2V0IGJhY2tkcm9wRWxlbWVudCgpe3JldHVybiB0aGlzLl9iYWNrZHJvcEVsZW1lbnR8fCh0aGlzLl9iYWNrZHJvcEVsZW1lbnQ9ZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgiaXJvbi1vdmVybGF5LWJhY2tkcm9wIikpLHRoaXMuX2JhY2tkcm9wRWxlbWVudH1nZXQgZGVlcEFjdGl2ZUVsZW1lbnQoKXt2YXIgdD1kb2N1bWVudC5hY3RpdmVFbGVtZW50O2Zvcih0JiZ0IGluc3RhbmNlb2YgRWxlbWVudCE9MHx8KHQ9ZG9jdW1lbnQuYm9keSk7dC5yb290JiZxaSh0LnJvb3QpLmFjdGl2ZUVsZW1lbnQ7KXQ9cWkodC5yb290KS5hY3RpdmVFbGVtZW50O3JldHVybiB0fV9icmluZ092ZXJsYXlBdEluZGV4VG9Gcm9udCh0KXt2YXIgZT10aGlzLl9vdmVybGF5c1t0XTtpZihlKXt2YXIgbj10aGlzLl9vdmVybGF5cy5sZW5ndGgtMSxpPXRoaXMuX292ZXJsYXlzW25dO2lmKGkmJnRoaXMuX3Nob3VsZEJlQmVoaW5kT3ZlcmxheShlLGkpJiZuLS0sISh0Pj1uKSl7dmFyIHI9TWF0aC5tYXgodGhpcy5jdXJyZW50T3ZlcmxheVooKSx0aGlzLl9taW5pbXVtWik7Zm9yKHRoaXMuX2dldFooZSk8PXImJnRoaXMuX2FwcGx5T3ZlcmxheVooZSxyKTt0PG47KXRoaXMuX292ZXJsYXlzW3RdPXRoaXMuX292ZXJsYXlzW3QrMV0sdCsrO3RoaXMuX292ZXJsYXlzW25dPWV9fX1hZGRPclJlbW92ZU92ZXJsYXkodCl7dC5vcGVuZWQ/dGhpcy5hZGRPdmVybGF5KHQpOnRoaXMucmVtb3ZlT3ZlcmxheSh0KX1hZGRPdmVybGF5KHQpe3ZhciBlPXRoaXMuX292ZXJsYXlzLmluZGV4T2YodCk7aWYoZT49MClyZXR1cm4gdGhpcy5fYnJpbmdPdmVybGF5QXRJbmRleFRvRnJvbnQoZSksdm9pZCB0aGlzLnRyYWNrQmFja2Ryb3AoKTt2YXIgbj10aGlzLl9vdmVybGF5cy5sZW5ndGgsaT10aGlzLl9vdmVybGF5c1tuLTFdLHI9TWF0aC5tYXgodGhpcy5fZ2V0WihpKSx0aGlzLl9taW5pbXVtWiksbz10aGlzLl9nZXRaKHQpO2kmJnRoaXMuX3Nob3VsZEJlQmVoaW5kT3ZlcmxheSh0LGkpJiYodGhpcy5fYXBwbHlPdmVybGF5WihpLHIpLG4tLSxyPU1hdGgubWF4KHRoaXMuX2dldFoodGhpcy5fb3ZlcmxheXNbbi0xXSksdGhpcy5fbWluaW11bVopKSxvPD1yJiZ0aGlzLl9hcHBseU92ZXJsYXlaKHQsciksdGhpcy5fb3ZlcmxheXMuc3BsaWNlKG4sMCx0KSx0aGlzLnRyYWNrQmFja2Ryb3AoKX1yZW1vdmVPdmVybGF5KHQpe3ZhciBlPXRoaXMuX292ZXJsYXlzLmluZGV4T2YodCk7LTEhPT1lJiYodGhpcy5fb3ZlcmxheXMuc3BsaWNlKGUsMSksdGhpcy50cmFja0JhY2tkcm9wKCkpfWN1cnJlbnRPdmVybGF5KCl7cmV0dXJuIHRoaXMuX292ZXJsYXlzW3RoaXMuX292ZXJsYXlzLmxlbmd0aC0xXX1jdXJyZW50T3ZlcmxheVooKXtyZXR1cm4gdGhpcy5fZ2V0Wih0aGlzLmN1cnJlbnRPdmVybGF5KCkpfWVuc3VyZU1pbmltdW1aKHQpe3RoaXMuX21pbmltdW1aPU1hdGgubWF4KHRoaXMuX21pbmltdW1aLHQpfWZvY3VzT3ZlcmxheSgpe3ZhciB0PXRoaXMuY3VycmVudE92ZXJsYXkoKTt0JiZ0Ll9hcHBseUZvY3VzKCl9dHJhY2tCYWNrZHJvcCgpe3ZhciB0PXRoaXMuX292ZXJsYXlXaXRoQmFja2Ryb3AoKTsodHx8dGhpcy5fYmFja2Ryb3BFbGVtZW50KSYmKHRoaXMuYmFja2Ryb3BFbGVtZW50LnN0eWxlLnpJbmRleD10aGlzLl9nZXRaKHQpLTEsdGhpcy5iYWNrZHJvcEVsZW1lbnQub3BlbmVkPSEhdCx0aGlzLmJhY2tkcm9wRWxlbWVudC5wcmVwYXJlKCkpfWdldEJhY2tkcm9wcygpe2Zvcih2YXIgdD1bXSxlPTA7ZTx0aGlzLl9vdmVybGF5cy5sZW5ndGg7ZSsrKXRoaXMuX292ZXJsYXlzW2VdLndpdGhCYWNrZHJvcCYmdC5wdXNoKHRoaXMuX292ZXJsYXlzW2VdKTtyZXR1cm4gdH1iYWNrZHJvcFooKXtyZXR1cm4gdGhpcy5fZ2V0Wih0aGlzLl9vdmVybGF5V2l0aEJhY2tkcm9wKCkpLTF9X292ZXJsYXlXaXRoQmFja2Ryb3AoKXtmb3IodmFyIHQ9dGhpcy5fb3ZlcmxheXMubGVuZ3RoLTE7dD49MDt0LS0paWYodGhpcy5fb3ZlcmxheXNbdF0ud2l0aEJhY2tkcm9wKXJldHVybiB0aGlzLl9vdmVybGF5c1t0XX1fZ2V0Wih0KXt2YXIgZT10aGlzLl9taW5pbXVtWjtpZih0KXt2YXIgbj1OdW1iZXIodC5zdHlsZS56SW5kZXh8fHdpbmRvdy5nZXRDb21wdXRlZFN0eWxlKHQpLnpJbmRleCk7bj09biYmKGU9bil9cmV0dXJuIGV9X3NldFoodCxlKXt0LnN0eWxlLnpJbmRleD1lfV9hcHBseU92ZXJsYXlaKHQsZSl7dGhpcy5fc2V0Wih0LGUrMil9X292ZXJsYXlJblBhdGgodCl7dD10fHxbXTtmb3IodmFyIGU9MDtlPHQubGVuZ3RoO2UrKylpZih0W2VdLl9tYW5hZ2VyPT09dGhpcylyZXR1cm4gdFtlXX1fb25DYXB0dXJlQ2xpY2sodCl7dmFyIGU9dGhpcy5fb3ZlcmxheXMubGVuZ3RoLTE7aWYoLTEhPT1lKWZvcih2YXIgbixpPXFpKHQpLnBhdGg7KG49dGhpcy5fb3ZlcmxheXNbZV0pJiZ0aGlzLl9vdmVybGF5SW5QYXRoKGkpIT09biYmKG4uX29uQ2FwdHVyZUNsaWNrKHQpLG4uYWxsb3dDbGlja1Rocm91Z2gpOyllLS19X29uQ2FwdHVyZUZvY3VzKHQpe3ZhciBlPXRoaXMuY3VycmVudE92ZXJsYXkoKTtlJiZlLl9vbkNhcHR1cmVGb2N1cyh0KX1fb25DYXB0dXJlS2V5RG93bih0KXt2YXIgZT10aGlzLmN1cnJlbnRPdmVybGF5KCk7ZSYmKFJvLmtleWJvYXJkRXZlbnRNYXRjaGVzS2V5cyh0LCJlc2MiKT9lLl9vbkNhcHR1cmVFc2ModCk6Um8ua2V5Ym9hcmRFdmVudE1hdGNoZXNLZXlzKHQsInRhYiIpJiZlLl9vbkNhcHR1cmVUYWIodCkpfV9zaG91bGRCZUJlaGluZE92ZXJsYXkodCxlKXtyZXR1cm4hdC5hbHdheXNPblRvcCYmZS5hbHdheXNPblRvcH19OwovKioKICAgIEBsaWNlbnNlCiAgICBDb3B5cmlnaHQgKGMpIDIwMTcgVGhlIFBvbHltZXIgUHJvamVjdCBBdXRob3JzLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICAgVGhpcyBjb2RlIG1heSBvbmx5IGJlIHVzZWQgdW5kZXIgdGhlIEJTRCBzdHlsZSBsaWNlbnNlIGZvdW5kIGF0CiAgICBodHRwOi8vcG9seW1lci5naXRodWIuaW8vTElDRU5TRS50eHQgVGhlIGNvbXBsZXRlIHNldCBvZiBhdXRob3JzIG1heSBiZSBmb3VuZCBhdAogICAgaHR0cDovL3BvbHltZXIuZ2l0aHViLmlvL0FVVEhPUlMudHh0IFRoZSBjb21wbGV0ZSBzZXQgb2YgY29udHJpYnV0b3JzIG1heSBiZQogICAgZm91bmQgYXQgaHR0cDovL3BvbHltZXIuZ2l0aHViLmlvL0NPTlRSSUJVVE9SUy50eHQgQ29kZSBkaXN0cmlidXRlZCBieSBHb29nbGUgYXMKICAgIHBhcnQgb2YgdGhlIHBvbHltZXIgcHJvamVjdCBpcyBhbHNvIHN1YmplY3QgdG8gYW4gYWRkaXRpb25hbCBJUCByaWdodHMgZ3JhbnQKICAgIGZvdW5kIGF0IGh0dHA6Ly9wb2x5bWVyLmdpdGh1Yi5pby9QQVRFTlRTLnR4dAogICAgKi92YXIgX2EseWEsdmE9e3BhZ2VYOjAscGFnZVk6MH0sYmE9bnVsbCx4YT1bXSx3YT1bIndoZWVsIiwibW91c2V3aGVlbCIsIkRPTU1vdXNlU2Nyb2xsIiwidG91Y2hzdGFydCIsInRvdWNobW92ZSJdO2Z1bmN0aW9uIFNhKHQpe01hLmluZGV4T2YodCk+PTB8fCgwPT09TWEubGVuZ3RoJiYoZnVuY3Rpb24gZSgpe19hPV9hfHxFYS5iaW5kKHZvaWQgMCk7Zm9yKHZhciB0PTAsZT13YS5sZW5ndGg7dDxlO3QrKylkb2N1bWVudC5hZGRFdmVudExpc3RlbmVyKHdhW3RdLF9hLHtjYXB0dXJlOiEwLHBhc3NpdmU6ITF9KX0pKCksTWEucHVzaCh0KSx5YT1NYVtNYS5sZW5ndGgtMV0pfWNvbnN0IE1hPVtdO2Z1bmN0aW9uIEVhKHQpe2lmKHQuY2FuY2VsYWJsZSYmKGZ1bmN0aW9uIGUodCl7dmFyIGU9cWkodCkucm9vdFRhcmdldDtpZigidG91Y2htb3ZlIiE9PXQudHlwZSYmYmEhPT1lJiYoYmE9ZSx4YT0oZnVuY3Rpb24gbih0KXtmb3IodmFyIGU9W10sbj10LmluZGV4T2YoeWEpLGk9MDtpPD1uO2krKylpZih0W2ldLm5vZGVUeXBlPT09Tm9kZS5FTEVNRU5UX05PREUpe3ZhciByPXRbaV0sbz1yLnN0eWxlOyJzY3JvbGwiIT09by5vdmVyZmxvdyYmImF1dG8iIT09by5vdmVyZmxvdyYmKG89d2luZG93LmdldENvbXB1dGVkU3R5bGUocikpLCJzY3JvbGwiIT09by5vdmVyZmxvdyYmImF1dG8iIT09by5vdmVyZmxvd3x8ZS5wdXNoKHIpfXJldHVybiBlfSkocWkodCkucGF0aCkpLCF4YS5sZW5ndGgpcmV0dXJuITA7aWYoInRvdWNoc3RhcnQiPT09dC50eXBlKXJldHVybiExO3ZhciBpPShmdW5jdGlvbiByKHQpe3ZhciBlPXtkZWx0YVg6dC5kZWx0YVgsZGVsdGFZOnQuZGVsdGFZfTtpZigiZGVsdGFYImluIHQpO2Vsc2UgaWYoIndoZWVsRGVsdGFYImluIHQmJiJ3aGVlbERlbHRhWSJpbiB0KWUuZGVsdGFYPS10LndoZWVsRGVsdGFYLGUuZGVsdGFZPS10LndoZWVsRGVsdGFZO2Vsc2UgaWYoIndoZWVsRGVsdGEiaW4gdCllLmRlbHRhWD0wLGUuZGVsdGFZPS10LndoZWVsRGVsdGE7ZWxzZSBpZigiYXhpcyJpbiB0KWUuZGVsdGFYPTE9PT10LmF4aXM/dC5kZXRhaWw6MCxlLmRlbHRhWT0yPT09dC5heGlzP3QuZGV0YWlsOjA7ZWxzZSBpZih0LnRhcmdldFRvdWNoZXMpe3ZhciBuPXQudGFyZ2V0VG91Y2hlc1swXTtlLmRlbHRhWD12YS5wYWdlWC1uLnBhZ2VYLGUuZGVsdGFZPXZhLnBhZ2VZLW4ucGFnZVl9cmV0dXJuIGV9Ci8qKgogICAgQGxpY2Vuc2UKICAgIENvcHlyaWdodCAoYykgMjAxNSBUaGUgUG9seW1lciBQcm9qZWN0IEF1dGhvcnMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgICBUaGlzIGNvZGUgbWF5IG9ubHkgYmUgdXNlZCB1bmRlciB0aGUgQlNEIHN0eWxlIGxpY2Vuc2UgZm91bmQgYXQKICAgIGh0dHA6Ly9wb2x5bWVyLmdpdGh1Yi5pby9MSUNFTlNFLnR4dCBUaGUgY29tcGxldGUgc2V0IG9mIGF1dGhvcnMgbWF5IGJlIGZvdW5kIGF0CiAgICBodHRwOi8vcG9seW1lci5naXRodWIuaW8vQVVUSE9SUy50eHQgVGhlIGNvbXBsZXRlIHNldCBvZiBjb250cmlidXRvcnMgbWF5IGJlCiAgICBmb3VuZCBhdCBodHRwOi8vcG9seW1lci5naXRodWIuaW8vQ09OVFJJQlVUT1JTLnR4dCBDb2RlIGRpc3RyaWJ1dGVkIGJ5IEdvb2dsZSBhcwogICAgcGFydCBvZiB0aGUgcG9seW1lciBwcm9qZWN0IGlzIGFsc28gc3ViamVjdCB0byBhbiBhZGRpdGlvbmFsIElQIHJpZ2h0cyBncmFudAogICAgZm91bmQgYXQgaHR0cDovL3BvbHltZXIuZ2l0aHViLmlvL1BBVEVOVFMudHh0CiAgICAqLykodCk7cmV0dXJuIShmdW5jdGlvbiBvKHQsZSxuKXtpZihlfHxuKWZvcih2YXIgaT1NYXRoLmFicyhuKT49TWF0aC5hYnMoZSkscj0wO3I8dC5sZW5ndGg7cisrKXt2YXIgbz10W3JdO2lmKGk/bjwwP28uc2Nyb2xsVG9wPjA6by5zY3JvbGxUb3A8by5zY3JvbGxIZWlnaHQtby5jbGllbnRIZWlnaHQ6ZTwwP28uc2Nyb2xsTGVmdD4wOm8uc2Nyb2xsTGVmdDxvLnNjcm9sbFdpZHRoLW8uY2xpZW50V2lkdGgpcmV0dXJuIG99fSkoeGEsaS5kZWx0YVgsaS5kZWx0YVkpfSkodCkmJnQucHJldmVudERlZmF1bHQoKSx0LnRhcmdldFRvdWNoZXMpe3ZhciBuPXQudGFyZ2V0VG91Y2hlc1swXTt2YS5wYWdlWD1uLnBhZ2VYLHZhLnBhZ2VZPW4ucGFnZVl9fWNvbnN0IFRhPXtwcm9wZXJ0aWVzOntvcGVuZWQ6e29ic2VydmVyOiJfb3BlbmVkQ2hhbmdlZCIsdHlwZTpCb29sZWFuLHZhbHVlOiExLG5vdGlmeTohMH0sY2FuY2VsZWQ6e29ic2VydmVyOiJfY2FuY2VsZWRDaGFuZ2VkIixyZWFkT25seTohMCx0eXBlOkJvb2xlYW4sdmFsdWU6ITF9LHdpdGhCYWNrZHJvcDp7b2JzZXJ2ZXI6Il93aXRoQmFja2Ryb3BDaGFuZ2VkIix0eXBlOkJvb2xlYW59LG5vQXV0b0ZvY3VzOnt0eXBlOkJvb2xlYW4sdmFsdWU6ITF9LG5vQ2FuY2VsT25Fc2NLZXk6e3R5cGU6Qm9vbGVhbix2YWx1ZTohMX0sbm9DYW5jZWxPbk91dHNpZGVDbGljazp7dHlwZTpCb29sZWFuLHZhbHVlOiExfSxjbG9zaW5nUmVhc29uOnt0eXBlOk9iamVjdH0scmVzdG9yZUZvY3VzT25DbG9zZTp7dHlwZTpCb29sZWFuLHZhbHVlOiExfSxhbGxvd0NsaWNrVGhyb3VnaDp7dHlwZTpCb29sZWFufSxhbHdheXNPblRvcDp7dHlwZTpCb29sZWFufSxzY3JvbGxBY3Rpb246e3R5cGU6U3RyaW5nfSxfbWFuYWdlcjp7dHlwZTpPYmplY3QsdmFsdWU6Z2F9LF9mb2N1c2VkQ2hpbGQ6e3R5cGU6T2JqZWN0fX0sbGlzdGVuZXJzOnsiaXJvbi1yZXNpemUiOiJfb25Jcm9uUmVzaXplIn0sb2JzZXJ2ZXJzOlsiX191cGRhdGVTY3JvbGxPYnNlcnZlcnMoaXNBdHRhY2hlZCwgb3BlbmVkLCBzY3JvbGxBY3Rpb24pIl0sZ2V0IGJhY2tkcm9wRWxlbWVudCgpe3JldHVybiB0aGlzLl9tYW5hZ2VyLmJhY2tkcm9wRWxlbWVudH0sZ2V0IF9mb2N1c05vZGUoKXtyZXR1cm4gdGhpcy5fZm9jdXNlZENoaWxkfHxxaSh0aGlzKS5xdWVyeVNlbGVjdG9yKCJbYXV0b2ZvY3VzXSIpfHx0aGlzfSxnZXQgX2ZvY3VzYWJsZU5vZGVzKCl7cmV0dXJuIG1hLmdldFRhYmJhYmxlTm9kZXModGhpcyl9LHJlYWR5OmZ1bmN0aW9uKCl7dGhpcy5fX2lzQW5pbWF0aW5nPSExLHRoaXMuX19zaG91bGRSZW1vdmVUYWJJbmRleD0hMSx0aGlzLl9fZmlyc3RGb2N1c2FibGVOb2RlPXRoaXMuX19sYXN0Rm9jdXNhYmxlTm9kZT1udWxsLHRoaXMuX19yYWZzPXt9LHRoaXMuX19yZXN0b3JlRm9jdXNOb2RlPW51bGwsdGhpcy5fX3Njcm9sbFRvcD10aGlzLl9fc2Nyb2xsTGVmdD1udWxsLHRoaXMuX19vbkNhcHR1cmVTY3JvbGw9dGhpcy5fX29uQ2FwdHVyZVNjcm9sbC5iaW5kKHRoaXMpLHRoaXMuX19yb290Tm9kZXM9bnVsbCx0aGlzLl9lbnN1cmVTZXR1cCgpfSxhdHRhY2hlZDpmdW5jdGlvbigpe3RoaXMub3BlbmVkJiZ0aGlzLl9vcGVuZWRDaGFuZ2VkKHRoaXMub3BlbmVkKSx0aGlzLl9vYnNlcnZlcj1xaSh0aGlzKS5vYnNlcnZlTm9kZXModGhpcy5fb25Ob2Rlc0NoYW5nZSl9LGRldGFjaGVkOmZ1bmN0aW9uKCl7Zm9yKHZhciB0IGluIHRoaXMuX29ic2VydmVyJiZxaSh0aGlzKS51bm9ic2VydmVOb2Rlcyh0aGlzLl9vYnNlcnZlciksdGhpcy5fb2JzZXJ2ZXI9bnVsbCx0aGlzLl9fcmFmcyludWxsIT09dGhpcy5fX3JhZnNbdF0mJmNhbmNlbEFuaW1hdGlvbkZyYW1lKHRoaXMuX19yYWZzW3RdKTt0aGlzLl9fcmFmcz17fSx0aGlzLl9tYW5hZ2VyLnJlbW92ZU92ZXJsYXkodGhpcyksdGhpcy5fX2lzQW5pbWF0aW5nJiYodGhpcy5vcGVuZWQ/dGhpcy5fZmluaXNoUmVuZGVyT3BlbmVkKCk6KHRoaXMuX2FwcGx5Rm9jdXMoKSx0aGlzLl9maW5pc2hSZW5kZXJDbG9zZWQoKSkpfSx0b2dnbGU6ZnVuY3Rpb24oKXt0aGlzLl9zZXRDYW5jZWxlZCghMSksdGhpcy5vcGVuZWQ9IXRoaXMub3BlbmVkfSxvcGVuOmZ1bmN0aW9uKCl7dGhpcy5fc2V0Q2FuY2VsZWQoITEpLHRoaXMub3BlbmVkPSEwfSxjbG9zZTpmdW5jdGlvbigpe3RoaXMuX3NldENhbmNlbGVkKCExKSx0aGlzLm9wZW5lZD0hMX0sY2FuY2VsOmZ1bmN0aW9uKHQpe3RoaXMuZmlyZSgiaXJvbi1vdmVybGF5LWNhbmNlbGVkIix0LHtjYW5jZWxhYmxlOiEwfSkuZGVmYXVsdFByZXZlbnRlZHx8KHRoaXMuX3NldENhbmNlbGVkKCEwKSx0aGlzLm9wZW5lZD0hMSl9LGludmFsaWRhdGVUYWJiYWJsZXM6ZnVuY3Rpb24oKXt0aGlzLl9fZmlyc3RGb2N1c2FibGVOb2RlPXRoaXMuX19sYXN0Rm9jdXNhYmxlTm9kZT1udWxsfSxfZW5zdXJlU2V0dXA6ZnVuY3Rpb24oKXt0aGlzLl9vdmVybGF5U2V0dXB8fCh0aGlzLl9vdmVybGF5U2V0dXA9ITAsdGhpcy5zdHlsZS5vdXRsaW5lPSJub25lIix0aGlzLnN0eWxlLmRpc3BsYXk9Im5vbmUiKX0sX29wZW5lZENoYW5nZWQ6ZnVuY3Rpb24odCl7dD90aGlzLnJlbW92ZUF0dHJpYnV0ZSgiYXJpYS1oaWRkZW4iKTp0aGlzLnNldEF0dHJpYnV0ZSgiYXJpYS1oaWRkZW4iLCJ0cnVlIiksdGhpcy5pc0F0dGFjaGVkJiYodGhpcy5fX2lzQW5pbWF0aW5nPSEwLHRoaXMuX19kZXJhZigiX19vcGVuZWRDaGFuZ2VkIix0aGlzLl9fb3BlbmVkQ2hhbmdlZCkpfSxfY2FuY2VsZWRDaGFuZ2VkOmZ1bmN0aW9uKCl7dGhpcy5jbG9zaW5nUmVhc29uPXRoaXMuY2xvc2luZ1JlYXNvbnx8e30sdGhpcy5jbG9zaW5nUmVhc29uLmNhbmNlbGVkPXRoaXMuY2FuY2VsZWR9LF93aXRoQmFja2Ryb3BDaGFuZ2VkOmZ1bmN0aW9uKCl7dGhpcy53aXRoQmFja2Ryb3AmJiF0aGlzLmhhc0F0dHJpYnV0ZSgidGFiaW5kZXgiKT8odGhpcy5zZXRBdHRyaWJ1dGUoInRhYmluZGV4IiwiLTEiKSx0aGlzLl9fc2hvdWxkUmVtb3ZlVGFiSW5kZXg9ITApOnRoaXMuX19zaG91bGRSZW1vdmVUYWJJbmRleCYmKHRoaXMucmVtb3ZlQXR0cmlidXRlKCJ0YWJpbmRleCIpLHRoaXMuX19zaG91bGRSZW1vdmVUYWJJbmRleD0hMSksdGhpcy5vcGVuZWQmJnRoaXMuaXNBdHRhY2hlZCYmdGhpcy5fbWFuYWdlci50cmFja0JhY2tkcm9wKCl9LF9wcmVwYXJlUmVuZGVyT3BlbmVkOmZ1bmN0aW9uKCl7dGhpcy5fX3Jlc3RvcmVGb2N1c05vZGU9dGhpcy5fbWFuYWdlci5kZWVwQWN0aXZlRWxlbWVudCx0aGlzLl9wcmVwYXJlUG9zaXRpb25pbmcoKSx0aGlzLnJlZml0KCksdGhpcy5fZmluaXNoUG9zaXRpb25pbmcoKSx0aGlzLm5vQXV0b0ZvY3VzJiZkb2N1bWVudC5hY3RpdmVFbGVtZW50PT09dGhpcy5fZm9jdXNOb2RlJiYodGhpcy5fZm9jdXNOb2RlLmJsdXIoKSx0aGlzLl9fcmVzdG9yZUZvY3VzTm9kZS5mb2N1cygpKX0sX3JlbmRlck9wZW5lZDpmdW5jdGlvbigpe3RoaXMuX2ZpbmlzaFJlbmRlck9wZW5lZCgpfSxfcmVuZGVyQ2xvc2VkOmZ1bmN0aW9uKCl7dGhpcy5fZmluaXNoUmVuZGVyQ2xvc2VkKCl9LF9maW5pc2hSZW5kZXJPcGVuZWQ6ZnVuY3Rpb24oKXt0aGlzLm5vdGlmeVJlc2l6ZSgpLHRoaXMuX19pc0FuaW1hdGluZz0hMSx0aGlzLmZpcmUoImlyb24tb3ZlcmxheS1vcGVuZWQiKX0sX2ZpbmlzaFJlbmRlckNsb3NlZDpmdW5jdGlvbigpe3RoaXMuc3R5bGUuZGlzcGxheT0ibm9uZSIsdGhpcy5zdHlsZS56SW5kZXg9IiIsdGhpcy5ub3RpZnlSZXNpemUoKSx0aGlzLl9faXNBbmltYXRpbmc9ITEsdGhpcy5maXJlKCJpcm9uLW92ZXJsYXktY2xvc2VkIix0aGlzLmNsb3NpbmdSZWFzb24pfSxfcHJlcGFyZVBvc2l0aW9uaW5nOmZ1bmN0aW9uKCl7dGhpcy5zdHlsZS50cmFuc2l0aW9uPXRoaXMuc3R5bGUud2Via2l0VHJhbnNpdGlvbj0ibm9uZSIsdGhpcy5zdHlsZS50cmFuc2Zvcm09dGhpcy5zdHlsZS53ZWJraXRUcmFuc2Zvcm09Im5vbmUiLHRoaXMuc3R5bGUuZGlzcGxheT0iIn0sX2ZpbmlzaFBvc2l0aW9uaW5nOmZ1bmN0aW9uKCl7dGhpcy5zdHlsZS5kaXNwbGF5PSJub25lIix0aGlzLnNjcm9sbFRvcD10aGlzLnNjcm9sbFRvcCx0aGlzLnN0eWxlLnRyYW5zaXRpb249dGhpcy5zdHlsZS53ZWJraXRUcmFuc2l0aW9uPSIiLHRoaXMuc3R5bGUudHJhbnNmb3JtPXRoaXMuc3R5bGUud2Via2l0VHJhbnNmb3JtPSIiLHRoaXMuc3R5bGUuZGlzcGxheT0iIix0aGlzLnNjcm9sbFRvcD10aGlzLnNjcm9sbFRvcH0sX2FwcGx5Rm9jdXM6ZnVuY3Rpb24oKXtpZih0aGlzLm9wZW5lZCl0aGlzLm5vQXV0b0ZvY3VzfHx0aGlzLl9mb2N1c05vZGUuZm9jdXMoKTtlbHNle2lmKHRoaXMucmVzdG9yZUZvY3VzT25DbG9zZSYmdGhpcy5fX3Jlc3RvcmVGb2N1c05vZGUpe3ZhciB0PXRoaXMuX21hbmFnZXIuZGVlcEFjdGl2ZUVsZW1lbnQ7KHQ9PT1kb2N1bWVudC5ib2R5fHxBYSh0aGlzLHQpKSYmdGhpcy5fX3Jlc3RvcmVGb2N1c05vZGUuZm9jdXMoKX10aGlzLl9fcmVzdG9yZUZvY3VzTm9kZT1udWxsLHRoaXMuX2ZvY3VzTm9kZS5ibHVyKCksdGhpcy5fZm9jdXNlZENoaWxkPW51bGx9fSxfb25DYXB0dXJlQ2xpY2s6ZnVuY3Rpb24odCl7dGhpcy5ub0NhbmNlbE9uT3V0c2lkZUNsaWNrfHx0aGlzLmNhbmNlbCh0KX0sX29uQ2FwdHVyZUZvY3VzOmZ1bmN0aW9uKHQpe2lmKHRoaXMud2l0aEJhY2tkcm9wKXt2YXIgZT1xaSh0KS5wYXRoOy0xPT09ZS5pbmRleE9mKHRoaXMpPyh0LnN0b3BQcm9wYWdhdGlvbigpLHRoaXMuX2FwcGx5Rm9jdXMoKSk6dGhpcy5fZm9jdXNlZENoaWxkPWVbMF19fSxfb25DYXB0dXJlRXNjOmZ1bmN0aW9uKHQpe3RoaXMubm9DYW5jZWxPbkVzY0tleXx8dGhpcy5jYW5jZWwodCl9LF9vbkNhcHR1cmVUYWI6ZnVuY3Rpb24odCl7aWYodGhpcy53aXRoQmFja2Ryb3Ape3RoaXMuX19lbnN1cmVGaXJzdExhc3RGb2N1c2FibGVzKCk7dmFyIGU9dC5zaGlmdEtleSxuPWU/dGhpcy5fX2ZpcnN0Rm9jdXNhYmxlTm9kZTp0aGlzLl9fbGFzdEZvY3VzYWJsZU5vZGUsaT1lP3RoaXMuX19sYXN0Rm9jdXNhYmxlTm9kZTp0aGlzLl9fZmlyc3RGb2N1c2FibGVOb2RlLHI9ITE7aWYobj09PWkpcj0hMDtlbHNle3ZhciBvPXRoaXMuX21hbmFnZXIuZGVlcEFjdGl2ZUVsZW1lbnQ7cj1vPT09bnx8bz09PXRoaXN9ciYmKHQucHJldmVudERlZmF1bHQoKSx0aGlzLl9mb2N1c2VkQ2hpbGQ9aSx0aGlzLl9hcHBseUZvY3VzKCkpfX0sX29uSXJvblJlc2l6ZTpmdW5jdGlvbigpe3RoaXMub3BlbmVkJiYhdGhpcy5fX2lzQW5pbWF0aW5nJiZ0aGlzLl9fZGVyYWYoInJlZml0Iix0aGlzLnJlZml0KX0sX29uTm9kZXNDaGFuZ2U6ZnVuY3Rpb24oKXt0aGlzLm9wZW5lZCYmIXRoaXMuX19pc0FuaW1hdGluZyYmKHRoaXMuaW52YWxpZGF0ZVRhYmJhYmxlcygpLHRoaXMubm90aWZ5UmVzaXplKCkpfSxfX2Vuc3VyZUZpcnN0TGFzdEZvY3VzYWJsZXM6ZnVuY3Rpb24oKXt2YXIgdD10aGlzLl9mb2N1c2FibGVOb2Rlczt0aGlzLl9fZmlyc3RGb2N1c2FibGVOb2RlPXRbMF0sdGhpcy5fX2xhc3RGb2N1c2FibGVOb2RlPXRbdC5sZW5ndGgtMV19LF9fb3BlbmVkQ2hhbmdlZDpmdW5jdGlvbigpe3RoaXMub3BlbmVkPyh0aGlzLl9wcmVwYXJlUmVuZGVyT3BlbmVkKCksdGhpcy5fbWFuYWdlci5hZGRPdmVybGF5KHRoaXMpLHRoaXMuX2FwcGx5Rm9jdXMoKSx0aGlzLl9yZW5kZXJPcGVuZWQoKSk6KHRoaXMuX21hbmFnZXIucmVtb3ZlT3ZlcmxheSh0aGlzKSx0aGlzLl9hcHBseUZvY3VzKCksdGhpcy5fcmVuZGVyQ2xvc2VkKCkpfSxfX2RlcmFmOmZ1bmN0aW9uKHQsZSl7dmFyIG49dGhpcy5fX3JhZnM7bnVsbCE9PW5bdF0mJmNhbmNlbEFuaW1hdGlvbkZyYW1lKG5bdF0pLG5bdF09cmVxdWVzdEFuaW1hdGlvbkZyYW1lKGZ1bmN0aW9uIGkoKXtuW3RdPW51bGwsZS5jYWxsKHRoaXMpfS5iaW5kKHRoaXMpKX0sX191cGRhdGVTY3JvbGxPYnNlcnZlcnM6ZnVuY3Rpb24odCxlLG4pe3QmJmUmJnRoaXMuX19pc1ZhbGlkU2Nyb2xsQWN0aW9uKG4pPygibG9jayI9PT1uJiYodGhpcy5fX3NhdmVTY3JvbGxQb3NpdGlvbigpLFNhKHRoaXMpKSx0aGlzLl9fYWRkU2Nyb2xsTGlzdGVuZXJzKCkpOigoZnVuY3Rpb24gaSh0KXt2YXIgZT1NYS5pbmRleE9mKHQpOy0xIT09ZSYmKE1hLnNwbGljZShlLDEpLHlhPU1hW01hLmxlbmd0aC0xXSwwPT09TWEubGVuZ3RoJiYoZnVuY3Rpb24gbigpe2Zvcih2YXIgdD0wLGU9d2EubGVuZ3RoO3Q8ZTt0KyspZG9jdW1lbnQucmVtb3ZlRXZlbnRMaXN0ZW5lcih3YVt0XSxfYSx7Y2FwdHVyZTohMCxwYXNzaXZlOiExfSl9KSgpKX0pKHRoaXMpLHRoaXMuX19yZW1vdmVTY3JvbGxMaXN0ZW5lcnMoKSl9LF9fYWRkU2Nyb2xsTGlzdGVuZXJzOmZ1bmN0aW9uKCl7aWYoIXRoaXMuX19yb290Tm9kZXMpe2lmKHRoaXMuX19yb290Tm9kZXM9W10sbSlmb3IodmFyIHQ9dGhpczt0Oyl0Lm5vZGVUeXBlPT09Tm9kZS5ET0NVTUVOVF9GUkFHTUVOVF9OT0RFJiZ0Lmhvc3QmJnRoaXMuX19yb290Tm9kZXMucHVzaCh0KSx0PXQuaG9zdHx8dC5hc3NpZ25lZFNsb3R8fHQucGFyZW50Tm9kZTt0aGlzLl9fcm9vdE5vZGVzLnB1c2goZG9jdW1lbnQpfXRoaXMuX19yb290Tm9kZXMuZm9yRWFjaCgoZnVuY3Rpb24odCl7dC5hZGRFdmVudExpc3RlbmVyKCJzY3JvbGwiLHRoaXMuX19vbkNhcHR1cmVTY3JvbGwse2NhcHR1cmU6ITAscGFzc2l2ZTohMH0pfSksdGhpcyl9LF9fcmVtb3ZlU2Nyb2xsTGlzdGVuZXJzOmZ1bmN0aW9uKCl7dGhpcy5fX3Jvb3ROb2RlcyYmdGhpcy5fX3Jvb3ROb2Rlcy5mb3JFYWNoKChmdW5jdGlvbih0KXt0LnJlbW92ZUV2ZW50TGlzdGVuZXIoInNjcm9sbCIsdGhpcy5fX29uQ2FwdHVyZVNjcm9sbCx7Y2FwdHVyZTohMCxwYXNzaXZlOiEwfSl9KSx0aGlzKSx0aGlzLmlzQXR0YWNoZWR8fCh0aGlzLl9fcm9vdE5vZGVzPW51bGwpfSxfX2lzVmFsaWRTY3JvbGxBY3Rpb246ZnVuY3Rpb24odCl7cmV0dXJuImxvY2siPT09dHx8InJlZml0Ij09PXR8fCJjYW5jZWwiPT09dH0sX19vbkNhcHR1cmVTY3JvbGw6ZnVuY3Rpb24odCl7aWYoISh0aGlzLl9faXNBbmltYXRpbmd8fHFpKHQpLnBhdGguaW5kZXhPZih0aGlzKT49MCkpc3dpdGNoKHRoaXMuc2Nyb2xsQWN0aW9uKXtjYXNlImxvY2siOnRoaXMuX19yZXN0b3JlU2Nyb2xsUG9zaXRpb24oKTticmVhaztjYXNlInJlZml0Ijp0aGlzLl9fZGVyYWYoInJlZml0Iix0aGlzLnJlZml0KTticmVhaztjYXNlImNhbmNlbCI6dGhpcy5jYW5jZWwodCl9fSxfX3NhdmVTY3JvbGxQb3NpdGlvbjpmdW5jdGlvbigpe2RvY3VtZW50LnNjcm9sbGluZ0VsZW1lbnQ/KHRoaXMuX19zY3JvbGxUb3A9ZG9jdW1lbnQuc2Nyb2xsaW5nRWxlbWVudC5zY3JvbGxUb3AsdGhpcy5fX3Njcm9sbExlZnQ9ZG9jdW1lbnQuc2Nyb2xsaW5nRWxlbWVudC5zY3JvbGxMZWZ0KToodGhpcy5fX3Njcm9sbFRvcD1NYXRoLm1heChkb2N1bWVudC5kb2N1bWVudEVsZW1lbnQuc2Nyb2xsVG9wLGRvY3VtZW50LmJvZHkuc2Nyb2xsVG9wKSx0aGlzLl9fc2Nyb2xsTGVmdD1NYXRoLm1heChkb2N1bWVudC5kb2N1bWVudEVsZW1lbnQuc2Nyb2xsTGVmdCxkb2N1bWVudC5ib2R5LnNjcm9sbExlZnQpKX0sX19yZXN0b3JlU2Nyb2xsUG9zaXRpb246ZnVuY3Rpb24oKXtkb2N1bWVudC5zY3JvbGxpbmdFbGVtZW50Pyhkb2N1bWVudC5zY3JvbGxpbmdFbGVtZW50LnNjcm9sbFRvcD10aGlzLl9fc2Nyb2xsVG9wLGRvY3VtZW50LnNjcm9sbGluZ0VsZW1lbnQuc2Nyb2xsTGVmdD10aGlzLl9fc2Nyb2xsTGVmdCk6KGRvY3VtZW50LmRvY3VtZW50RWxlbWVudC5zY3JvbGxUb3A9ZG9jdW1lbnQuYm9keS5zY3JvbGxUb3A9dGhpcy5fX3Njcm9sbFRvcCxkb2N1bWVudC5kb2N1bWVudEVsZW1lbnQuc2Nyb2xsTGVmdD1kb2N1bWVudC5ib2R5LnNjcm9sbExlZnQ9dGhpcy5fX3Njcm9sbExlZnQpfX0sQWE9KHQsZSk9Pntmb3IobGV0IGk9ZTtpO2k9KG49aSkuYXNzaWduZWRTbG90fHxuLnBhcmVudE5vZGV8fG4uaG9zdClpZihpPT09dClyZXR1cm4hMDt2YXIgbjtyZXR1cm4hMX0sQ2E9W2RhLG1vLFRhXSxrYT17aG9zdEF0dHJpYnV0ZXM6e3JvbGU6ImRpYWxvZyIsdGFiaW5kZXg6Ii0xIn0scHJvcGVydGllczp7bW9kYWw6e3R5cGU6Qm9vbGVhbix2YWx1ZTohMX0sX19yZWFkaWVkOnt0eXBlOkJvb2xlYW4sdmFsdWU6ITF9fSxvYnNlcnZlcnM6WyJfbW9kYWxDaGFuZ2VkKG1vZGFsLCBfX3JlYWRpZWQpIl0sbGlzdGVuZXJzOnt0YXA6Il9vbkRpYWxvZ0NsaWNrIn0scmVhZHk6ZnVuY3Rpb24oKXt0aGlzLl9fcHJldk5vQ2FuY2VsT25PdXRzaWRlQ2xpY2s9dGhpcy5ub0NhbmNlbE9uT3V0c2lkZUNsaWNrLHRoaXMuX19wcmV2Tm9DYW5jZWxPbkVzY0tleT10aGlzLm5vQ2FuY2VsT25Fc2NLZXksdGhpcy5fX3ByZXZXaXRoQmFja2Ryb3A9dGhpcy53aXRoQmFja2Ryb3AsdGhpcy5fX3JlYWRpZWQ9ITB9LF9tb2RhbENoYW5nZWQ6ZnVuY3Rpb24odCxlKXtlJiYodD8odGhpcy5fX3ByZXZOb0NhbmNlbE9uT3V0c2lkZUNsaWNrPXRoaXMubm9DYW5jZWxPbk91dHNpZGVDbGljayx0aGlzLl9fcHJldk5vQ2FuY2VsT25Fc2NLZXk9dGhpcy5ub0NhbmNlbE9uRXNjS2V5LHRoaXMuX19wcmV2V2l0aEJhY2tkcm9wPXRoaXMud2l0aEJhY2tkcm9wLHRoaXMubm9DYW5jZWxPbk91dHNpZGVDbGljaz0hMCx0aGlzLm5vQ2FuY2VsT25Fc2NLZXk9ITAsdGhpcy53aXRoQmFja2Ryb3A9ITApOih0aGlzLm5vQ2FuY2VsT25PdXRzaWRlQ2xpY2s9dGhpcy5ub0NhbmNlbE9uT3V0c2lkZUNsaWNrJiZ0aGlzLl9fcHJldk5vQ2FuY2VsT25PdXRzaWRlQ2xpY2ssdGhpcy5ub0NhbmNlbE9uRXNjS2V5PXRoaXMubm9DYW5jZWxPbkVzY0tleSYmdGhpcy5fX3ByZXZOb0NhbmNlbE9uRXNjS2V5LHRoaXMud2l0aEJhY2tkcm9wPXRoaXMud2l0aEJhY2tkcm9wJiZ0aGlzLl9fcHJldldpdGhCYWNrZHJvcCkpfSxfdXBkYXRlQ2xvc2luZ1JlYXNvbkNvbmZpcm1lZDpmdW5jdGlvbih0KXt0aGlzLmNsb3NpbmdSZWFzb249dGhpcy5jbG9zaW5nUmVhc29ufHx7fSx0aGlzLmNsb3NpbmdSZWFzb24uY29uZmlybWVkPXR9LF9vbkRpYWxvZ0NsaWNrOmZ1bmN0aW9uKHQpe2Zvcih2YXIgZT1xaSh0KS5wYXRoLG49MCxpPWUuaW5kZXhPZih0aGlzKTtuPGk7bisrKXt2YXIgcj1lW25dO2lmKHIuaGFzQXR0cmlidXRlJiYoci5oYXNBdHRyaWJ1dGUoImRpYWxvZy1kaXNtaXNzIil8fHIuaGFzQXR0cmlidXRlKCJkaWFsb2ctY29uZmlybSIpKSl7dGhpcy5fdXBkYXRlQ2xvc2luZ1JlYXNvbkNvbmZpcm1lZChyLmhhc0F0dHJpYnV0ZSgiZGlhbG9nLWNvbmZpcm0iKSksdGhpcy5jbG9zZSgpLHQuc3RvcFByb3BhZ2F0aW9uKCk7YnJlYWt9fX19LExhPVtDYSxrYV07Ci8qKgogICAgQGxpY2Vuc2UKICAgIENvcHlyaWdodCAoYykgMjAxNSBUaGUgUG9seW1lciBQcm9qZWN0IEF1dGhvcnMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgICBUaGlzIGNvZGUgbWF5IG9ubHkgYmUgdXNlZCB1bmRlciB0aGUgQlNEIHN0eWxlIGxpY2Vuc2UgZm91bmQgYXQKICAgIGh0dHA6Ly9wb2x5bWVyLmdpdGh1Yi5pby9MSUNFTlNFLnR4dCBUaGUgY29tcGxldGUgc2V0IG9mIGF1dGhvcnMgbWF5IGJlIGZvdW5kIGF0CiAgICBodHRwOi8vcG9seW1lci5naXRodWIuaW8vQVVUSE9SUy50eHQgVGhlIGNvbXBsZXRlIHNldCBvZiBjb250cmlidXRvcnMgbWF5IGJlCiAgICBmb3VuZCBhdCBodHRwOi8vcG9seW1lci5naXRodWIuaW8vQ09OVFJJQlVUT1JTLnR4dCBDb2RlIGRpc3RyaWJ1dGVkIGJ5IEdvb2dsZSBhcwogICAgcGFydCBvZiB0aGUgcG9seW1lciBwcm9qZWN0IGlzIGFsc28gc3ViamVjdCB0byBhbiBhZGRpdGlvbmFsIElQIHJpZ2h0cyBncmFudAogICAgZm91bmQgYXQgaHR0cDovL3BvbHltZXIuZ2l0aHViLmlvL1BBVEVOVFMudHh0CiAgICAqLwppZigKLyoqCiAgICBAbGljZW5zZQogICAgQ29weXJpZ2h0IChjKSAyMDE1IFRoZSBQb2x5bWVyIFByb2plY3QgQXV0aG9ycy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAgIFRoaXMgY29kZSBtYXkgb25seSBiZSB1c2VkIHVuZGVyIHRoZSBCU0Qgc3R5bGUgbGljZW5zZSBmb3VuZCBhdAogICAgaHR0cDovL3BvbHltZXIuZ2l0aHViLmlvL0xJQ0VOU0UudHh0IFRoZSBjb21wbGV0ZSBzZXQgb2YgYXV0aG9ycyBtYXkgYmUgZm91bmQgYXQKICAgIGh0dHA6Ly9wb2x5bWVyLmdpdGh1Yi5pby9BVVRIT1JTLnR4dCBUaGUgY29tcGxldGUgc2V0IG9mIGNvbnRyaWJ1dG9ycyBtYXkgYmUKICAgIGZvdW5kIGF0IGh0dHA6Ly9wb2x5bWVyLmdpdGh1Yi5pby9DT05UUklCVVRPUlMudHh0IENvZGUgZGlzdHJpYnV0ZWQgYnkgR29vZ2xlIGFzCiAgICBwYXJ0IG9mIHRoZSBwb2x5bWVyIHByb2plY3QgaXMgYWxzbyBzdWJqZWN0IHRvIGFuIGFkZGl0aW9uYWwgSVAgcmlnaHRzIGdyYW50CiAgICBmb3VuZCBhdCBodHRwOi8vcG9seW1lci5naXRodWIuaW8vUEFURU5UUy50eHQKICAgICovCk5yKHtfdGVtcGxhdGU6X2VgCiAgICA8c3R5bGU+CgogICAgICA6aG9zdCB7CiAgICAgICAgZGlzcGxheTogYmxvY2s7CiAgICAgICAgQGFwcGx5IC0tbGF5b3V0LXJlbGF0aXZlOwogICAgICB9CgogICAgICA6aG9zdCguaXMtc2Nyb2xsZWQ6bm90KDpmaXJzdC1jaGlsZCkpOjpiZWZvcmUgewogICAgICAgIGNvbnRlbnQ6ICcnOwogICAgICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTsKICAgICAgICB0b3A6IDA7CiAgICAgICAgbGVmdDogMDsKICAgICAgICByaWdodDogMDsKICAgICAgICBoZWlnaHQ6IDFweDsKICAgICAgICBiYWNrZ3JvdW5kOiB2YXIoLS1kaXZpZGVyLWNvbG9yKTsKICAgICAgfQoKICAgICAgOmhvc3QoLmNhbi1zY3JvbGw6bm90KC5zY3JvbGxlZC10by1ib3R0b20pOm5vdCg6bGFzdC1jaGlsZCkpOjphZnRlciB7CiAgICAgICAgY29udGVudDogJyc7CiAgICAgICAgcG9zaXRpb246IGFic29sdXRlOwogICAgICAgIGJvdHRvbTogMDsKICAgICAgICBsZWZ0OiAwOwogICAgICAgIHJpZ2h0OiAwOwogICAgICAgIGhlaWdodDogMXB4OwogICAgICAgIGJhY2tncm91bmQ6IHZhcigtLWRpdmlkZXItY29sb3IpOwogICAgICB9CgogICAgICAuc2Nyb2xsYWJsZSB7CiAgICAgICAgcGFkZGluZzogMCAyNHB4OwoKICAgICAgICBAYXBwbHkgLS1sYXlvdXQtc2Nyb2xsOwogICAgICAgIEBhcHBseSAtLXBhcGVyLWRpYWxvZy1zY3JvbGxhYmxlOwogICAgICB9CgogICAgICAuZml0IHsKICAgICAgICBAYXBwbHkgLS1sYXlvdXQtZml0OwogICAgICB9CiAgICA8L3N0eWxlPgoKICAgIDxkaXYgaWQ9InNjcm9sbGFibGUiIGNsYXNzPSJzY3JvbGxhYmxlIiBvbi1zY3JvbGw9InVwZGF0ZVNjcm9sbFN0YXRlIj4KICAgICAgPHNsb3Q+PC9zbG90PgogICAgPC9kaXY+CmAsaXM6InBhcGVyLWRpYWxvZy1zY3JvbGxhYmxlIixwcm9wZXJ0aWVzOntkaWFsb2dFbGVtZW50Ont0eXBlOk9iamVjdH19LGdldCBzY3JvbGxUYXJnZXQoKXtyZXR1cm4gdGhpcy4kLnNjcm9sbGFibGV9LHJlYWR5OmZ1bmN0aW9uKCl7dGhpcy5fZW5zdXJlVGFyZ2V0KCksdGhpcy5jbGFzc0xpc3QuYWRkKCJuby1wYWRkaW5nIil9LGF0dGFjaGVkOmZ1bmN0aW9uKCl7dGhpcy5fZW5zdXJlVGFyZ2V0KCkscmVxdWVzdEFuaW1hdGlvbkZyYW1lKHRoaXMudXBkYXRlU2Nyb2xsU3RhdGUuYmluZCh0aGlzKSl9LHVwZGF0ZVNjcm9sbFN0YXRlOmZ1bmN0aW9uKCl7dGhpcy50b2dnbGVDbGFzcygiaXMtc2Nyb2xsZWQiLHRoaXMuc2Nyb2xsVGFyZ2V0LnNjcm9sbFRvcD4wKSx0aGlzLnRvZ2dsZUNsYXNzKCJjYW4tc2Nyb2xsIix0aGlzLnNjcm9sbFRhcmdldC5vZmZzZXRIZWlnaHQ8dGhpcy5zY3JvbGxUYXJnZXQuc2Nyb2xsSGVpZ2h0KSx0aGlzLnRvZ2dsZUNsYXNzKCJzY3JvbGxlZC10by1ib3R0b20iLHRoaXMuc2Nyb2xsVGFyZ2V0LnNjcm9sbFRvcCt0aGlzLnNjcm9sbFRhcmdldC5vZmZzZXRIZWlnaHQ+PXRoaXMuc2Nyb2xsVGFyZ2V0LnNjcm9sbEhlaWdodCl9LF9lbnN1cmVUYXJnZXQ6ZnVuY3Rpb24oKXt0aGlzLmRpYWxvZ0VsZW1lbnQ9dGhpcy5kaWFsb2dFbGVtZW50fHx0aGlzLnBhcmVudEVsZW1lbnQsdGhpcy5kaWFsb2dFbGVtZW50JiZ0aGlzLmRpYWxvZ0VsZW1lbnQuYmVoYXZpb3JzJiZ0aGlzLmRpYWxvZ0VsZW1lbnQuYmVoYXZpb3JzLmluZGV4T2Yoa2EpPj0wPyh0aGlzLmRpYWxvZ0VsZW1lbnQuc2l6aW5nVGFyZ2V0PXRoaXMuc2Nyb2xsVGFyZ2V0LHRoaXMuc2Nyb2xsVGFyZ2V0LmNsYXNzTGlzdC5yZW1vdmUoImZpdCIpKTp0aGlzLmRpYWxvZ0VsZW1lbnQmJnRoaXMuc2Nyb2xsVGFyZ2V0LmNsYXNzTGlzdC5hZGQoImZpdCIpfX0pLCF3aW5kb3cucG9seW1lclNraXBMb2FkaW5nRm9udFJvYm90byl7Y29uc3QgdD1kb2N1bWVudC5jcmVhdGVFbGVtZW50KCJsaW5rIik7dC5yZWw9InN0eWxlc2hlZXQiLHQudHlwZT0idGV4dC9jc3MiLHQuY3Jvc3NPcmlnaW49ImFub255bW91cyIsdC5ocmVmPSJodHRwczovL2ZvbnRzLmdvb2dsZWFwaXMuY29tL2Nzcz9mYW1pbHk9Um9ib3RvK01vbm86NDAwLDcwMHxSb2JvdG86NDAwLDMwMCwzMDBpdGFsaWMsNDAwaXRhbGljLDUwMCw1MDBpdGFsaWMsNzAwLDcwMGl0YWxpYyIsZG9jdW1lbnQuaGVhZC5hcHBlbmRDaGlsZCh0KX0KLyoqCiAgICBAbGljZW5zZQogICAgQ29weXJpZ2h0IChjKSAyMDE1IFRoZSBQb2x5bWVyIFByb2plY3QgQXV0aG9ycy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAgIFRoaXMgY29kZSBtYXkgb25seSBiZSB1c2VkIHVuZGVyIHRoZSBCU0Qgc3R5bGUgbGljZW5zZSBmb3VuZCBhdAogICAgaHR0cDovL3BvbHltZXIuZ2l0aHViLmlvL0xJQ0VOU0UudHh0IFRoZSBjb21wbGV0ZSBzZXQgb2YgYXV0aG9ycyBtYXkgYmUgZm91bmQgYXQKICAgIGh0dHA6Ly9wb2x5bWVyLmdpdGh1Yi5pby9BVVRIT1JTLnR4dCBUaGUgY29tcGxldGUgc2V0IG9mIGNvbnRyaWJ1dG9ycyBtYXkgYmUKICAgIGZvdW5kIGF0IGh0dHA6Ly9wb2x5bWVyLmdpdGh1Yi5pby9DT05UUklCVVRPUlMudHh0IENvZGUgZGlzdHJpYnV0ZWQgYnkgR29vZ2xlIGFzCiAgICBwYXJ0IG9mIHRoZSBwb2x5bWVyIHByb2plY3QgaXMgYWxzbyBzdWJqZWN0IHRvIGFuIGFkZGl0aW9uYWwgSVAgcmlnaHRzIGdyYW50CiAgICBmb3VuZCBhdCBodHRwOi8vcG9seW1lci5naXRodWIuaW8vUEFURU5UUy50eHQKICAgICovY29uc3QgUGE9X2VgPGN1c3RvbS1zdHlsZT4KICA8c3R5bGUgaXM9ImN1c3RvbS1zdHlsZSI+CiAgICBodG1sIHsKCiAgICAgIC8qIFNoYXJlZCBTdHlsZXMgKi8KICAgICAgLS1wYXBlci1mb250LWNvbW1vbi1iYXNlOiB7CiAgICAgICAgZm9udC1mYW1pbHk6ICdSb2JvdG8nLCAnTm90bycsIHNhbnMtc2VyaWY7CiAgICAgICAgLXdlYmtpdC1mb250LXNtb290aGluZzogYW50aWFsaWFzZWQ7CiAgICAgIH07CgogICAgICAtLXBhcGVyLWZvbnQtY29tbW9uLWNvZGU6IHsKICAgICAgICBmb250LWZhbWlseTogJ1JvYm90byBNb25vJywgJ0NvbnNvbGFzJywgJ01lbmxvJywgbW9ub3NwYWNlOwogICAgICAgIC13ZWJraXQtZm9udC1zbW9vdGhpbmc6IGFudGlhbGlhc2VkOwogICAgICB9OwoKICAgICAgLS1wYXBlci1mb250LWNvbW1vbi1leHBlbnNpdmUta2VybmluZzogewogICAgICAgIHRleHQtcmVuZGVyaW5nOiBvcHRpbWl6ZUxlZ2liaWxpdHk7CiAgICAgIH07CgogICAgICAtLXBhcGVyLWZvbnQtY29tbW9uLW5vd3JhcDogewogICAgICAgIHdoaXRlLXNwYWNlOiBub3dyYXA7CiAgICAgICAgb3ZlcmZsb3c6IGhpZGRlbjsKICAgICAgICB0ZXh0LW92ZXJmbG93OiBlbGxpcHNpczsKICAgICAgfTsKCiAgICAgIC8qIE1hdGVyaWFsIEZvbnQgU3R5bGVzICovCgogICAgICAtLXBhcGVyLWZvbnQtZGlzcGxheTQ6IHsKICAgICAgICBAYXBwbHkgLS1wYXBlci1mb250LWNvbW1vbi1iYXNlOwogICAgICAgIEBhcHBseSAtLXBhcGVyLWZvbnQtY29tbW9uLW5vd3JhcDsKCiAgICAgICAgZm9udC1zaXplOiAxMTJweDsKICAgICAgICBmb250LXdlaWdodDogMzAwOwogICAgICAgIGxldHRlci1zcGFjaW5nOiAtLjA0NGVtOwogICAgICAgIGxpbmUtaGVpZ2h0OiAxMjBweDsKICAgICAgfTsKCiAgICAgIC0tcGFwZXItZm9udC1kaXNwbGF5MzogewogICAgICAgIEBhcHBseSAtLXBhcGVyLWZvbnQtY29tbW9uLWJhc2U7CiAgICAgICAgQGFwcGx5IC0tcGFwZXItZm9udC1jb21tb24tbm93cmFwOwoKICAgICAgICBmb250LXNpemU6IDU2cHg7CiAgICAgICAgZm9udC13ZWlnaHQ6IDQwMDsKICAgICAgICBsZXR0ZXItc3BhY2luZzogLS4wMjZlbTsKICAgICAgICBsaW5lLWhlaWdodDogNjBweDsKICAgICAgfTsKCiAgICAgIC0tcGFwZXItZm9udC1kaXNwbGF5MjogewogICAgICAgIEBhcHBseSAtLXBhcGVyLWZvbnQtY29tbW9uLWJhc2U7CgogICAgICAgIGZvbnQtc2l6ZTogNDVweDsKICAgICAgICBmb250LXdlaWdodDogNDAwOwogICAgICAgIGxldHRlci1zcGFjaW5nOiAtLjAxOGVtOwogICAgICAgIGxpbmUtaGVpZ2h0OiA0OHB4OwogICAgICB9OwoKICAgICAgLS1wYXBlci1mb250LWRpc3BsYXkxOiB7CiAgICAgICAgQGFwcGx5IC0tcGFwZXItZm9udC1jb21tb24tYmFzZTsKCiAgICAgICAgZm9udC1zaXplOiAzNHB4OwogICAgICAgIGZvbnQtd2VpZ2h0OiA0MDA7CiAgICAgICAgbGV0dGVyLXNwYWNpbmc6IC0uMDFlbTsKICAgICAgICBsaW5lLWhlaWdodDogNDBweDsKICAgICAgfTsKCiAgICAgIC0tcGFwZXItZm9udC1oZWFkbGluZTogewogICAgICAgIEBhcHBseSAtLXBhcGVyLWZvbnQtY29tbW9uLWJhc2U7CgogICAgICAgIGZvbnQtc2l6ZTogMjRweDsKICAgICAgICBmb250LXdlaWdodDogNDAwOwogICAgICAgIGxldHRlci1zcGFjaW5nOiAtLjAxMmVtOwogICAgICAgIGxpbmUtaGVpZ2h0OiAzMnB4OwogICAgICB9OwoKICAgICAgLS1wYXBlci1mb250LXRpdGxlOiB7CiAgICAgICAgQGFwcGx5IC0tcGFwZXItZm9udC1jb21tb24tYmFzZTsKICAgICAgICBAYXBwbHkgLS1wYXBlci1mb250LWNvbW1vbi1ub3dyYXA7CgogICAgICAgIGZvbnQtc2l6ZTogMjBweDsKICAgICAgICBmb250LXdlaWdodDogNTAwOwogICAgICAgIGxpbmUtaGVpZ2h0OiAyOHB4OwogICAgICB9OwoKICAgICAgLS1wYXBlci1mb250LXN1YmhlYWQ6IHsKICAgICAgICBAYXBwbHkgLS1wYXBlci1mb250LWNvbW1vbi1iYXNlOwoKICAgICAgICBmb250LXNpemU6IDE2cHg7CiAgICAgICAgZm9udC13ZWlnaHQ6IDQwMDsKICAgICAgICBsaW5lLWhlaWdodDogMjRweDsKICAgICAgfTsKCiAgICAgIC0tcGFwZXItZm9udC1ib2R5MjogewogICAgICAgIEBhcHBseSAtLXBhcGVyLWZvbnQtY29tbW9uLWJhc2U7CgogICAgICAgIGZvbnQtc2l6ZTogMTRweDsKICAgICAgICBmb250LXdlaWdodDogNTAwOwogICAgICAgIGxpbmUtaGVpZ2h0OiAyNHB4OwogICAgICB9OwoKICAgICAgLS1wYXBlci1mb250LWJvZHkxOiB7CiAgICAgICAgQGFwcGx5IC0tcGFwZXItZm9udC1jb21tb24tYmFzZTsKCiAgICAgICAgZm9udC1zaXplOiAxNHB4OwogICAgICAgIGZvbnQtd2VpZ2h0OiA0MDA7CiAgICAgICAgbGluZS1oZWlnaHQ6IDIwcHg7CiAgICAgIH07CgogICAgICAtLXBhcGVyLWZvbnQtY2FwdGlvbjogewogICAgICAgIEBhcHBseSAtLXBhcGVyLWZvbnQtY29tbW9uLWJhc2U7CiAgICAgICAgQGFwcGx5IC0tcGFwZXItZm9udC1jb21tb24tbm93cmFwOwoKICAgICAgICBmb250LXNpemU6IDEycHg7CiAgICAgICAgZm9udC13ZWlnaHQ6IDQwMDsKICAgICAgICBsZXR0ZXItc3BhY2luZzogMC4wMTFlbTsKICAgICAgICBsaW5lLWhlaWdodDogMjBweDsKICAgICAgfTsKCiAgICAgIC0tcGFwZXItZm9udC1tZW51OiB7CiAgICAgICAgQGFwcGx5IC0tcGFwZXItZm9udC1jb21tb24tYmFzZTsKICAgICAgICBAYXBwbHkgLS1wYXBlci1mb250LWNvbW1vbi1ub3dyYXA7CgogICAgICAgIGZvbnQtc2l6ZTogMTNweDsKICAgICAgICBmb250LXdlaWdodDogNTAwOwogICAgICAgIGxpbmUtaGVpZ2h0OiAyNHB4OwogICAgICB9OwoKICAgICAgLS1wYXBlci1mb250LWJ1dHRvbjogewogICAgICAgIEBhcHBseSAtLXBhcGVyLWZvbnQtY29tbW9uLWJhc2U7CiAgICAgICAgQGFwcGx5IC0tcGFwZXItZm9udC1jb21tb24tbm93cmFwOwoKICAgICAgICBmb250LXNpemU6IDE0cHg7CiAgICAgICAgZm9udC13ZWlnaHQ6IDUwMDsKICAgICAgICBsZXR0ZXItc3BhY2luZzogMC4wMThlbTsKICAgICAgICBsaW5lLWhlaWdodDogMjRweDsKICAgICAgICB0ZXh0LXRyYW5zZm9ybTogdXBwZXJjYXNlOwogICAgICB9OwoKICAgICAgLS1wYXBlci1mb250LWNvZGUyOiB7CiAgICAgICAgQGFwcGx5IC0tcGFwZXItZm9udC1jb21tb24tY29kZTsKCiAgICAgICAgZm9udC1zaXplOiAxNHB4OwogICAgICAgIGZvbnQtd2VpZ2h0OiA3MDA7CiAgICAgICAgbGluZS1oZWlnaHQ6IDIwcHg7CiAgICAgIH07CgogICAgICAtLXBhcGVyLWZvbnQtY29kZTE6IHsKICAgICAgICBAYXBwbHkgLS1wYXBlci1mb250LWNvbW1vbi1jb2RlOwoKICAgICAgICBmb250LXNpemU6IDE0cHg7CiAgICAgICAgZm9udC13ZWlnaHQ6IDUwMDsKICAgICAgICBsaW5lLWhlaWdodDogMjBweDsKICAgICAgfTsKCiAgICB9CgogIDwvc3R5bGU+CjwvY3VzdG9tLXN0eWxlPmA7UGEuc2V0QXR0cmlidXRlKCJzdHlsZSIsImRpc3BsYXk6IG5vbmU7IiksZG9jdW1lbnQuaGVhZC5hcHBlbmRDaGlsZChQYS5jb250ZW50KTsKLyoqCiAgICBAbGljZW5zZQogICAgQ29weXJpZ2h0IChjKSAyMDE1IFRoZSBQb2x5bWVyIFByb2plY3QgQXV0aG9ycy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAgIFRoaXMgY29kZSBtYXkgb25seSBiZSB1c2VkIHVuZGVyIHRoZSBCU0Qgc3R5bGUgbGljZW5zZSBmb3VuZCBhdAogICAgaHR0cDovL3BvbHltZXIuZ2l0aHViLmlvL0xJQ0VOU0UudHh0IFRoZSBjb21wbGV0ZSBzZXQgb2YgYXV0aG9ycyBtYXkgYmUgZm91bmQgYXQKICAgIGh0dHA6Ly9wb2x5bWVyLmdpdGh1Yi5pby9BVVRIT1JTLnR4dCBUaGUgY29tcGxldGUgc2V0IG9mIGNvbnRyaWJ1dG9ycyBtYXkgYmUKICAgIGZvdW5kIGF0IGh0dHA6Ly9wb2x5bWVyLmdpdGh1Yi5pby9DT05UUklCVVRPUlMudHh0IENvZGUgZGlzdHJpYnV0ZWQgYnkgR29vZ2xlIGFzCiAgICBwYXJ0IG9mIHRoZSBwb2x5bWVyIHByb2plY3QgaXMgYWxzbyBzdWJqZWN0IHRvIGFuIGFkZGl0aW9uYWwgSVAgcmlnaHRzIGdyYW50CiAgICBmb3VuZCBhdCBodHRwOi8vcG9seW1lci5naXRodWIuaW8vUEFURU5UUy50eHQKICAgICovCmNvbnN0IElhPWRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoInRlbXBsYXRlIik7SWEuc2V0QXR0cmlidXRlKCJzdHlsZSIsImRpc3BsYXk6IG5vbmU7IiksSWEuaW5uZXJIVE1MPSc8ZG9tLW1vZHVsZSBpZD0icGFwZXItZGlhbG9nLXNoYXJlZC1zdHlsZXMiPlxuICA8dGVtcGxhdGU+XG4gICAgPHN0eWxlPlxuICAgICAgOmhvc3Qge1xuICAgICAgICBkaXNwbGF5OiBibG9jaztcbiAgICAgICAgbWFyZ2luOiAyNHB4IDQwcHg7XG5cbiAgICAgICAgYmFja2dyb3VuZDogdmFyKC0tcGFwZXItZGlhbG9nLWJhY2tncm91bmQtY29sb3IsIHZhcigtLXByaW1hcnktYmFja2dyb3VuZC1jb2xvcikpO1xuICAgICAgICBjb2xvcjogdmFyKC0tcGFwZXItZGlhbG9nLWNvbG9yLCB2YXIoLS1wcmltYXJ5LXRleHQtY29sb3IpKTtcblxuICAgICAgICBAYXBwbHkgLS1wYXBlci1mb250LWJvZHkxO1xuICAgICAgICBAYXBwbHkgLS1zaGFkb3ctZWxldmF0aW9uLTE2ZHA7XG4gICAgICAgIEBhcHBseSAtLXBhcGVyLWRpYWxvZztcbiAgICAgIH1cblxuICAgICAgOmhvc3QgPiA6OnNsb3R0ZWQoKikge1xuICAgICAgICBtYXJnaW4tdG9wOiAyMHB4O1xuICAgICAgICBwYWRkaW5nOiAwIDI0cHg7XG4gICAgICB9XG5cbiAgICAgIDpob3N0ID4gOjpzbG90dGVkKC5uby1wYWRkaW5nKSB7XG4gICAgICAgIHBhZGRpbmc6IDA7XG4gICAgICB9XG5cbiAgICAgIFxuICAgICAgOmhvc3QgPiA6OnNsb3R0ZWQoKjpmaXJzdC1jaGlsZCkge1xuICAgICAgICBtYXJnaW4tdG9wOiAyNHB4O1xuICAgICAgfVxuXG4gICAgICA6aG9zdCA+IDo6c2xvdHRlZCgqOmxhc3QtY2hpbGQpIHtcbiAgICAgICAgbWFyZ2luLWJvdHRvbTogMjRweDtcbiAgICAgIH1cblxuICAgICAgLyogSW4gMS54LCB0aGlzIHNlbGVjdG9yIHdhcyBgOmhvc3QgPiA6OmNvbnRlbnQgaDJgLiBJbiAyLnggPHNsb3Q+IGFsbG93c1xuICAgICAgdG8gc2VsZWN0IGRpcmVjdCBjaGlsZHJlbiBvbmx5LCB3aGljaCBpbmNyZWFzZXMgdGhlIHdlaWdodCBvZiB0aGlzXG4gICAgICBzZWxlY3Rvciwgc28gd2UgaGF2ZSB0byByZS1kZWZpbmUgZmlyc3QtY2hpbGQvbGFzdC1jaGlsZCBtYXJnaW5zIGJlbG93LiAqL1xuICAgICAgOmhvc3QgPiA6OnNsb3R0ZWQoaDIpIHtcbiAgICAgICAgcG9zaXRpb246IHJlbGF0aXZlO1xuICAgICAgICBtYXJnaW46IDA7XG5cbiAgICAgICAgQGFwcGx5IC0tcGFwZXItZm9udC10aXRsZTtcbiAgICAgICAgQGFwcGx5IC0tcGFwZXItZGlhbG9nLXRpdGxlO1xuICAgICAgfVxuXG4gICAgICAvKiBBcHBseSBtaXhpbiBhZ2FpbiwgaW4gY2FzZSBpdCBzZXRzIG1hcmdpbi10b3AuICovXG4gICAgICA6aG9zdCA+IDo6c2xvdHRlZChoMjpmaXJzdC1jaGlsZCkge1xuICAgICAgICBtYXJnaW4tdG9wOiAyNHB4O1xuICAgICAgICBAYXBwbHkgLS1wYXBlci1kaWFsb2ctdGl0bGU7XG4gICAgICB9XG5cbiAgICAgIC8qIEFwcGx5IG1peGluIGFnYWluLCBpbiBjYXNlIGl0IHNldHMgbWFyZ2luLWJvdHRvbS4gKi9cbiAgICAgIDpob3N0ID4gOjpzbG90dGVkKGgyOmxhc3QtY2hpbGQpIHtcbiAgICAgICAgbWFyZ2luLWJvdHRvbTogMjRweDtcbiAgICAgICAgQGFwcGx5IC0tcGFwZXItZGlhbG9nLXRpdGxlO1xuICAgICAgfVxuXG4gICAgICA6aG9zdCA+IDo6c2xvdHRlZCgucGFwZXItZGlhbG9nLWJ1dHRvbnMpLFxuICAgICAgOmhvc3QgPiA6OnNsb3R0ZWQoLmJ1dHRvbnMpIHtcbiAgICAgICAgcG9zaXRpb246IHJlbGF0aXZlO1xuICAgICAgICBwYWRkaW5nOiA4cHggOHB4IDhweCAyNHB4O1xuICAgICAgICBtYXJnaW46IDA7XG5cbiAgICAgICAgY29sb3I6IHZhcigtLXBhcGVyLWRpYWxvZy1idXR0b24tY29sb3IsIHZhcigtLXByaW1hcnktY29sb3IpKTtcblxuICAgICAgICBAYXBwbHkgLS1sYXlvdXQtaG9yaXpvbnRhbDtcbiAgICAgICAgQGFwcGx5IC0tbGF5b3V0LWVuZC1qdXN0aWZpZWQ7XG4gICAgICB9XG4gICAgPC9zdHlsZT5cbiAgPC90ZW1wbGF0ZT5cbjwvZG9tLW1vZHVsZT4nLGRvY3VtZW50LmhlYWQuYXBwZW5kQ2hpbGQoSWEuY29udGVudCk7Ci8qKgogICAgQGxpY2Vuc2UKICAgIENvcHlyaWdodCAoYykgMjAxNSBUaGUgUG9seW1lciBQcm9qZWN0IEF1dGhvcnMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgICBUaGlzIGNvZGUgbWF5IG9ubHkgYmUgdXNlZCB1bmRlciB0aGUgQlNEIHN0eWxlIGxpY2Vuc2UgZm91bmQgYXQKICAgIGh0dHA6Ly9wb2x5bWVyLmdpdGh1Yi5pby9MSUNFTlNFLnR4dCBUaGUgY29tcGxldGUgc2V0IG9mIGF1dGhvcnMgbWF5IGJlIGZvdW5kIGF0CiAgICBodHRwOi8vcG9seW1lci5naXRodWIuaW8vQVVUSE9SUy50eHQgVGhlIGNvbXBsZXRlIHNldCBvZiBjb250cmlidXRvcnMgbWF5IGJlCiAgICBmb3VuZCBhdCBodHRwOi8vcG9seW1lci5naXRodWIuaW8vQ09OVFJJQlVUT1JTLnR4dCBDb2RlIGRpc3RyaWJ1dGVkIGJ5IEdvb2dsZSBhcwogICAgcGFydCBvZiB0aGUgcG9seW1lciBwcm9qZWN0IGlzIGFsc28gc3ViamVjdCB0byBhbiBhZGRpdGlvbmFsIElQIHJpZ2h0cyBncmFudAogICAgZm91bmQgYXQgaHR0cDovL3BvbHltZXIuZ2l0aHViLmlvL1BBVEVOVFMudHh0CiAgICAqLwpjb25zdCBOYT1be3Byb3BlcnRpZXM6e2FuaW1hdGlvbkNvbmZpZzp7dHlwZTpPYmplY3R9LGVudHJ5QW5pbWF0aW9uOntvYnNlcnZlcjoiX2VudHJ5QW5pbWF0aW9uQ2hhbmdlZCIsdHlwZTpTdHJpbmd9LGV4aXRBbmltYXRpb246e29ic2VydmVyOiJfZXhpdEFuaW1hdGlvbkNoYW5nZWQiLHR5cGU6U3RyaW5nfX0sX2VudHJ5QW5pbWF0aW9uQ2hhbmdlZDpmdW5jdGlvbigpe3RoaXMuYW5pbWF0aW9uQ29uZmlnPXRoaXMuYW5pbWF0aW9uQ29uZmlnfHx7fSx0aGlzLmFuaW1hdGlvbkNvbmZpZy5lbnRyeT1be25hbWU6dGhpcy5lbnRyeUFuaW1hdGlvbixub2RlOnRoaXN9XX0sX2V4aXRBbmltYXRpb25DaGFuZ2VkOmZ1bmN0aW9uKCl7dGhpcy5hbmltYXRpb25Db25maWc9dGhpcy5hbmltYXRpb25Db25maWd8fHt9LHRoaXMuYW5pbWF0aW9uQ29uZmlnLmV4aXQ9W3tuYW1lOnRoaXMuZXhpdEFuaW1hdGlvbixub2RlOnRoaXN9XX0sX2NvcHlQcm9wZXJ0aWVzOmZ1bmN0aW9uKHQsZSl7Zm9yKHZhciBuIGluIGUpdFtuXT1lW25dfSxfY2xvbmVDb25maWc6ZnVuY3Rpb24odCl7dmFyIGU9e2lzQ2xvbmU6ITB9O3JldHVybiB0aGlzLl9jb3B5UHJvcGVydGllcyhlLHQpLGV9LF9nZXRBbmltYXRpb25Db25maWdSZWN1cnNpdmU6ZnVuY3Rpb24odCxlLG4pe3ZhciBpO2lmKHRoaXMuYW5pbWF0aW9uQ29uZmlnKWlmKHRoaXMuYW5pbWF0aW9uQ29uZmlnLnZhbHVlJiYiZnVuY3Rpb24iPT10eXBlb2YgdGhpcy5hbmltYXRpb25Db25maWcudmFsdWUpdGhpcy5fd2Fybih0aGlzLl9sb2dmKCJwbGF5QW5pbWF0aW9uIiwiUGxlYXNlIHB1dCAnYW5pbWF0aW9uQ29uZmlnJyBpbnNpZGUgb2YgeW91ciBjb21wb25lbnRzICdwcm9wZXJ0aWVzJyBvYmplY3QgaW5zdGVhZCBvZiBvdXRzaWRlIG9mIGl0LiIpKTtlbHNlIGlmKGk9dD90aGlzLmFuaW1hdGlvbkNvbmZpZ1t0XTp0aGlzLmFuaW1hdGlvbkNvbmZpZyxBcnJheS5pc0FycmF5KGkpfHwoaT1baV0pLGkpZm9yKHZhciByLG89MDtyPWlbb107bysrKWlmKHIuYW5pbWF0YWJsZSlyLmFuaW1hdGFibGUuX2dldEFuaW1hdGlvbkNvbmZpZ1JlY3Vyc2l2ZShyLnR5cGV8fHQsZSxuKTtlbHNlIGlmKHIuaWQpe3ZhciBhPWVbci5pZF07YT8oYS5pc0Nsb25lfHwoZVtyLmlkXT10aGlzLl9jbG9uZUNvbmZpZyhhKSxhPWVbci5pZF0pLHRoaXMuX2NvcHlQcm9wZXJ0aWVzKGEscikpOmVbci5pZF09cn1lbHNlIG4ucHVzaChyKX0sZ2V0QW5pbWF0aW9uQ29uZmlnOmZ1bmN0aW9uKHQpe3ZhciBlPXt9LG49W107Zm9yKHZhciBpIGluIHRoaXMuX2dldEFuaW1hdGlvbkNvbmZpZ1JlY3Vyc2l2ZSh0LGUsbiksZSluLnB1c2goZVtpXSk7cmV0dXJuIG59fSx7X2NvbmZpZ3VyZUFuaW1hdGlvbnM6ZnVuY3Rpb24odCl7dmFyIGU9W10sbj1bXTtpZih0Lmxlbmd0aD4wKWZvcihsZXQgZSxpPTA7ZT10W2ldO2krKyl7bGV0IHQ9ZG9jdW1lbnQuY3JlYXRlRWxlbWVudChlLm5hbWUpO2lmKHQuaXNOZW9uQW5pbWF0aW9uKXtsZXQgaT1udWxsO3QuY29uZmlndXJlfHwodC5jb25maWd1cmU9ZnVuY3Rpb24odCl7cmV0dXJuIG51bGx9KSxpPXQuY29uZmlndXJlKGUpLG4ucHVzaCh7cmVzdWx0OmksY29uZmlnOmUsbmVvbkFuaW1hdGlvbjp0fSl9ZWxzZSBjb25zb2xlLndhcm4odGhpcy5pcysiOiIsZS5uYW1lLCJub3QgZm91bmQhIil9Zm9yKHZhciBpPTA7aTxuLmxlbmd0aDtpKyspe2xldCB0PW5baV0ucmVzdWx0LHI9bltpXS5jb25maWcsbz1uW2ldLm5lb25BbmltYXRpb247dHJ5eyJmdW5jdGlvbiIhPXR5cGVvZiB0LmNhbmNlbCYmKHQ9ZG9jdW1lbnQudGltZWxpbmUucGxheSh0KSl9Y2F0Y2goZSl7dD1udWxsLGNvbnNvbGUud2FybigiQ291bGRudCBwbGF5IiwiKCIsci5uYW1lLCIpLiIsZSl9dCYmZS5wdXNoKHtuZW9uQW5pbWF0aW9uOm8sY29uZmlnOnIsYW5pbWF0aW9uOnR9KX1yZXR1cm4gZX0sX3Nob3VsZENvbXBsZXRlOmZ1bmN0aW9uKHQpe2Zvcih2YXIgZT0hMCxuPTA7bjx0Lmxlbmd0aDtuKyspaWYoImZpbmlzaGVkIiE9dFtuXS5hbmltYXRpb24ucGxheVN0YXRlKXtlPSExO2JyZWFrfXJldHVybiBlfSxfY29tcGxldGU6ZnVuY3Rpb24odCl7Zm9yKHZhciBlPTA7ZTx0Lmxlbmd0aDtlKyspdFtlXS5uZW9uQW5pbWF0aW9uLmNvbXBsZXRlKHRbZV0uY29uZmlnKTtmb3IoZT0wO2U8dC5sZW5ndGg7ZSsrKXRbZV0uYW5pbWF0aW9uLmNhbmNlbCgpfSxwbGF5QW5pbWF0aW9uOmZ1bmN0aW9uKHQsZSl7dmFyIG49dGhpcy5nZXRBbmltYXRpb25Db25maWcodCk7aWYobil7dGhpcy5fYWN0aXZlPXRoaXMuX2FjdGl2ZXx8e30sdGhpcy5fYWN0aXZlW3RdJiYodGhpcy5fY29tcGxldGUodGhpcy5fYWN0aXZlW3RdKSxkZWxldGUgdGhpcy5fYWN0aXZlW3RdKTt2YXIgaT10aGlzLl9jb25maWd1cmVBbmltYXRpb25zKG4pO2lmKDAhPWkubGVuZ3RoKXt0aGlzLl9hY3RpdmVbdF09aTtmb3IodmFyIHI9MDtyPGkubGVuZ3RoO3IrKylpW3JdLmFuaW1hdGlvbi5vbmZpbmlzaD1mdW5jdGlvbigpe3RoaXMuX3Nob3VsZENvbXBsZXRlKGkpJiYodGhpcy5fY29tcGxldGUoaSksZGVsZXRlIHRoaXMuX2FjdGl2ZVt0XSx0aGlzLmZpcmUoIm5lb24tYW5pbWF0aW9uLWZpbmlzaCIsZSx7YnViYmxlczohMX0pKX0uYmluZCh0aGlzKX1lbHNlIHRoaXMuZmlyZSgibmVvbi1hbmltYXRpb24tZmluaXNoIixlLHtidWJibGVzOiExfSl9fSxjYW5jZWxBbmltYXRpb246ZnVuY3Rpb24oKXtmb3IodmFyIHQgaW4gdGhpcy5fYWN0aXZlKXt2YXIgZT10aGlzLl9hY3RpdmVbdF07Zm9yKHZhciBuIGluIGUpZVtuXS5hbmltYXRpb24uY2FuY2VsKCl9dGhpcy5fYWN0aXZlPXt9fX1dOwovKioKICAgIEBsaWNlbnNlCiAgICBDb3B5cmlnaHQgKGMpIDIwMTUgVGhlIFBvbHltZXIgUHJvamVjdCBBdXRob3JzLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICAgVGhpcyBjb2RlIG1heSBvbmx5IGJlIHVzZWQgdW5kZXIgdGhlIEJTRCBzdHlsZSBsaWNlbnNlIGZvdW5kIGF0CiAgICBodHRwOi8vcG9seW1lci5naXRodWIuaW8vTElDRU5TRS50eHQgVGhlIGNvbXBsZXRlIHNldCBvZiBhdXRob3JzIG1heSBiZSBmb3VuZCBhdAogICAgaHR0cDovL3BvbHltZXIuZ2l0aHViLmlvL0FVVEhPUlMudHh0IFRoZSBjb21wbGV0ZSBzZXQgb2YgY29udHJpYnV0b3JzIG1heSBiZQogICAgZm91bmQgYXQgaHR0cDovL3BvbHltZXIuZ2l0aHViLmlvL0NPTlRSSUJVVE9SUy50eHQgQ29kZSBkaXN0cmlidXRlZCBieSBHb29nbGUgYXMKICAgIHBhcnQgb2YgdGhlIHBvbHltZXIgcHJvamVjdCBpcyBhbHNvIHN1YmplY3QgdG8gYW4gYWRkaXRpb25hbCBJUCByaWdodHMgZ3JhbnQKICAgIGZvdW5kIGF0IGh0dHA6Ly9wb2x5bWVyLmdpdGh1Yi5pby9QQVRFTlRTLnR4dAogICAgKi8KLyoqCiAgICBAbGljZW5zZQogICAgQ29weXJpZ2h0IChjKSAyMDE1IFRoZSBQb2x5bWVyIFByb2plY3QgQXV0aG9ycy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAgIFRoaXMgY29kZSBtYXkgb25seSBiZSB1c2VkIHVuZGVyIHRoZSBCU0Qgc3R5bGUgbGljZW5zZSBmb3VuZCBhdAogICAgaHR0cDovL3BvbHltZXIuZ2l0aHViLmlvL0xJQ0VOU0UudHh0IFRoZSBjb21wbGV0ZSBzZXQgb2YgYXV0aG9ycyBtYXkgYmUgZm91bmQgYXQKICAgIGh0dHA6Ly9wb2x5bWVyLmdpdGh1Yi5pby9BVVRIT1JTLnR4dCBUaGUgY29tcGxldGUgc2V0IG9mIGNvbnRyaWJ1dG9ycyBtYXkgYmUKICAgIGZvdW5kIGF0IGh0dHA6Ly9wb2x5bWVyLmdpdGh1Yi5pby9DT05UUklCVVRPUlMudHh0IENvZGUgZGlzdHJpYnV0ZWQgYnkgR29vZ2xlIGFzCiAgICBwYXJ0IG9mIHRoZSBwb2x5bWVyIHByb2plY3QgaXMgYWxzbyBzdWJqZWN0IHRvIGFuIGFkZGl0aW9uYWwgSVAgcmlnaHRzIGdyYW50CiAgICBmb3VuZCBhdCBodHRwOi8vcG9seW1lci5naXRodWIuaW8vUEFURU5UUy50eHQKICAgICovCk5yKHtfdGVtcGxhdGU6X2VgCiAgICA8c3R5bGUgaW5jbHVkZT0icGFwZXItZGlhbG9nLXNoYXJlZC1zdHlsZXMiPjwvc3R5bGU+CiAgICA8c2xvdD48L3Nsb3Q+CmAsaXM6InBhcGVyLWRpYWxvZyIsYmVoYXZpb3JzOltMYSxOYV0sbGlzdGVuZXJzOnsibmVvbi1hbmltYXRpb24tZmluaXNoIjoiX29uTmVvbkFuaW1hdGlvbkZpbmlzaCJ9LF9yZW5kZXJPcGVuZWQ6ZnVuY3Rpb24oKXt0aGlzLmNhbmNlbEFuaW1hdGlvbigpLHRoaXMucGxheUFuaW1hdGlvbigiZW50cnkiKX0sX3JlbmRlckNsb3NlZDpmdW5jdGlvbigpe3RoaXMuY2FuY2VsQW5pbWF0aW9uKCksdGhpcy5wbGF5QW5pbWF0aW9uKCJleGl0Iil9LF9vbk5lb25BbmltYXRpb25GaW5pc2g6ZnVuY3Rpb24oKXt0aGlzLm9wZW5lZD90aGlzLl9maW5pc2hSZW5kZXJPcGVuZWQoKTp0aGlzLl9maW5pc2hSZW5kZXJDbG9zZWQoKX19KTsKLyoqCiAgICBAbGljZW5zZQogICAgQ29weXJpZ2h0IChjKSAyMDE1IFRoZSBQb2x5bWVyIFByb2plY3QgQXV0aG9ycy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAgIFRoaXMgY29kZSBtYXkgb25seSBiZSB1c2VkIHVuZGVyIHRoZSBCU0Qgc3R5bGUgbGljZW5zZSBmb3VuZCBhdAogICAgaHR0cDovL3BvbHltZXIuZ2l0aHViLmlvL0xJQ0VOU0UudHh0IFRoZSBjb21wbGV0ZSBzZXQgb2YgYXV0aG9ycyBtYXkgYmUgZm91bmQgYXQKICAgIGh0dHA6Ly9wb2x5bWVyLmdpdGh1Yi5pby9BVVRIT1JTLnR4dCBUaGUgY29tcGxldGUgc2V0IG9mIGNvbnRyaWJ1dG9ycyBtYXkgYmUKICAgIGZvdW5kIGF0IGh0dHA6Ly9wb2x5bWVyLmdpdGh1Yi5pby9DT05UUklCVVRPUlMudHh0IENvZGUgZGlzdHJpYnV0ZWQgYnkgR29vZ2xlIGFzCiAgICBwYXJ0IG9mIHRoZSBwb2x5bWVyIHByb2plY3QgaXMgYWxzbyBzdWJqZWN0IHRvIGFuIGFkZGl0aW9uYWwgSVAgcmlnaHRzIGdyYW50CiAgICBmb3VuZCBhdCBodHRwOi8vcG9seW1lci5naXRodWIuaW8vUEFURU5UUy50eHQKICAgICovCmNvbnN0IE9hPU5yKHtfdGVtcGxhdGU6X2VgCiAgICA8c3R5bGU+CiAgICAgIDpob3N0IHsKICAgICAgICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7CiAgICAgICAgcG9zaXRpb246IGZpeGVkOwogICAgICAgIGNsaXA6IHJlY3QoMHB4LDBweCwwcHgsMHB4KTsKICAgICAgfQogICAgPC9zdHlsZT4KICAgIDxkaXYgYXJpYS1saXZlJD0iW1ttb2RlXV0iPltbX3RleHRdXTwvZGl2PgpgLGlzOiJpcm9uLWExMXktYW5ub3VuY2VyIixwcm9wZXJ0aWVzOnttb2RlOnt0eXBlOlN0cmluZyx2YWx1ZToicG9saXRlIn0sdGltZW91dDp7dHlwZTpOdW1iZXIsdmFsdWU6MTUwfSxfdGV4dDp7dHlwZTpTdHJpbmcsdmFsdWU6IiJ9fSxjcmVhdGVkOmZ1bmN0aW9uKCl7T2EuaW5zdGFuY2V8fChPYS5pbnN0YW5jZT10aGlzKSxkb2N1bWVudC5hZGRFdmVudExpc3RlbmVyKCJpcm9uLWFubm91bmNlIix0aGlzLl9vbklyb25Bbm5vdW5jZS5iaW5kKHRoaXMpKX0sYW5ub3VuY2U6ZnVuY3Rpb24odCl7dGhpcy5fdGV4dD0iIix0aGlzLmFzeW5jKChmdW5jdGlvbigpe3RoaXMuX3RleHQ9dH0pLHRoaXMudGltZW91dCl9LF9vbklyb25Bbm5vdW5jZTpmdW5jdGlvbih0KXt0LmRldGFpbCYmdC5kZXRhaWwudGV4dCYmdGhpcy5hbm5vdW5jZSh0LmRldGFpbC50ZXh0KX19KTtPYS5pbnN0YW5jZT1udWxsLE9hLnJlcXVlc3RBdmFpbGFiaWxpdHk9ZnVuY3Rpb24oKXtPYS5pbnN0YW5jZXx8KE9hLmluc3RhbmNlPWRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoImlyb24tYTExeS1hbm5vdW5jZXIiKSksZG9jdW1lbnQuYm9keT9kb2N1bWVudC5ib2R5LmFwcGVuZENoaWxkKE9hLmluc3RhbmNlKTpkb2N1bWVudC5hZGRFdmVudExpc3RlbmVyKCJsb2FkIiwoZnVuY3Rpb24oKXtkb2N1bWVudC5ib2R5LmFwcGVuZENoaWxkKE9hLmluc3RhbmNlKX0pKX0sCi8qKgogICAgQGxpY2Vuc2UKICAgIENvcHlyaWdodCAoYykgMjAxNSBUaGUgUG9seW1lciBQcm9qZWN0IEF1dGhvcnMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgICBUaGlzIGNvZGUgbWF5IG9ubHkgYmUgdXNlZCB1bmRlciB0aGUgQlNEIHN0eWxlIGxpY2Vuc2UgZm91bmQgYXQKICAgIGh0dHA6Ly9wb2x5bWVyLmdpdGh1Yi5pby9MSUNFTlNFLnR4dCBUaGUgY29tcGxldGUgc2V0IG9mIGF1dGhvcnMgbWF5IGJlIGZvdW5kIGF0CiAgICBodHRwOi8vcG9seW1lci5naXRodWIuaW8vQVVUSE9SUy50eHQgVGhlIGNvbXBsZXRlIHNldCBvZiBjb250cmlidXRvcnMgbWF5IGJlCiAgICBmb3VuZCBhdCBodHRwOi8vcG9seW1lci5naXRodWIuaW8vQ09OVFJJQlVUT1JTLnR4dCBDb2RlIGRpc3RyaWJ1dGVkIGJ5IEdvb2dsZSBhcwogICAgcGFydCBvZiB0aGUgcG9seW1lciBwcm9qZWN0IGlzIGFsc28gc3ViamVjdCB0byBhbiBhZGRpdGlvbmFsIElQIHJpZ2h0cyBncmFudAogICAgZm91bmQgYXQgaHR0cDovL3BvbHltZXIuZ2l0aHViLmlvL1BBVEVOVFMudHh0CiAgICAqLwpOcih7X3RlbXBsYXRlOl9lYAogICAgPHN0eWxlPgogICAgICA6aG9zdCB7CiAgICAgICAgZGlzcGxheTogaW5saW5lLWJsb2NrOwogICAgICB9CiAgICA8L3N0eWxlPgogICAgPHNsb3QgaWQ9ImNvbnRlbnQiPjwvc2xvdD4KYCxpczoiaXJvbi1pbnB1dCIsYmVoYXZpb3JzOltvYV0scHJvcGVydGllczp7YmluZFZhbHVlOnt0eXBlOlN0cmluZyx2YWx1ZToiIn0sdmFsdWU6e3R5cGU6U3RyaW5nLGNvbXB1dGVkOiJfY29tcHV0ZVZhbHVlKGJpbmRWYWx1ZSkifSxhbGxvd2VkUGF0dGVybjp7dHlwZTpTdHJpbmd9LGF1dG9WYWxpZGF0ZTp7dHlwZTpCb29sZWFuLHZhbHVlOiExfSxfaW5wdXRFbGVtZW50Ok9iamVjdH0sb2JzZXJ2ZXJzOlsiX2JpbmRWYWx1ZUNoYW5nZWQoYmluZFZhbHVlLCBfaW5wdXRFbGVtZW50KSJdLGxpc3RlbmVyczp7aW5wdXQ6Il9vbklucHV0IixrZXlwcmVzczoiX29uS2V5cHJlc3MifSxjcmVhdGVkOmZ1bmN0aW9uKCl7T2EucmVxdWVzdEF2YWlsYWJpbGl0eSgpLHRoaXMuX3ByZXZpb3VzVmFsaWRJbnB1dD0iIix0aGlzLl9wYXR0ZXJuQWxyZWFkeUNoZWNrZWQ9ITF9LGF0dGFjaGVkOmZ1bmN0aW9uKCl7dGhpcy5fb2JzZXJ2ZXI9cWkodGhpcykub2JzZXJ2ZU5vZGVzKGZ1bmN0aW9uKHQpe3RoaXMuX2luaXRTbG90dGVkSW5wdXQoKX0uYmluZCh0aGlzKSl9LGRldGFjaGVkOmZ1bmN0aW9uKCl7dGhpcy5fb2JzZXJ2ZXImJihxaSh0aGlzKS51bm9ic2VydmVOb2Rlcyh0aGlzLl9vYnNlcnZlciksdGhpcy5fb2JzZXJ2ZXI9bnVsbCl9LGdldCBpbnB1dEVsZW1lbnQoKXtyZXR1cm4gdGhpcy5faW5wdXRFbGVtZW50fSxfaW5pdFNsb3R0ZWRJbnB1dDpmdW5jdGlvbigpe3RoaXMuX2lucHV0RWxlbWVudD10aGlzLmdldEVmZmVjdGl2ZUNoaWxkcmVuKClbMF0sdGhpcy5pbnB1dEVsZW1lbnQmJnRoaXMuaW5wdXRFbGVtZW50LnZhbHVlJiYodGhpcy5iaW5kVmFsdWU9dGhpcy5pbnB1dEVsZW1lbnQudmFsdWUpLHRoaXMuZmlyZSgiaXJvbi1pbnB1dC1yZWFkeSIpfSxnZXQgX3BhdHRlcm5SZWdFeHAoKXt2YXIgdDtpZih0aGlzLmFsbG93ZWRQYXR0ZXJuKXQ9bmV3IFJlZ0V4cCh0aGlzLmFsbG93ZWRQYXR0ZXJuKTtlbHNlIHN3aXRjaCh0aGlzLmlucHV0RWxlbWVudC50eXBlKXtjYXNlIm51bWJlciI6dD0vWzAtOS4sZS1dL31yZXR1cm4gdH0sX2JpbmRWYWx1ZUNoYW5nZWQ6ZnVuY3Rpb24odCxlKXtlJiYodm9pZCAwPT09dD9lLnZhbHVlPW51bGw6dCE9PWUudmFsdWUmJih0aGlzLmlucHV0RWxlbWVudC52YWx1ZT10KSx0aGlzLmF1dG9WYWxpZGF0ZSYmdGhpcy52YWxpZGF0ZSgpLHRoaXMuZmlyZSgiYmluZC12YWx1ZS1jaGFuZ2VkIix7dmFsdWU6dH0pKX0sX29uSW5wdXQ6ZnVuY3Rpb24oKXt0aGlzLmFsbG93ZWRQYXR0ZXJuJiYhdGhpcy5fcGF0dGVybkFscmVhZHlDaGVja2VkJiYodGhpcy5fY2hlY2tQYXR0ZXJuVmFsaWRpdHkoKXx8KHRoaXMuX2Fubm91bmNlSW52YWxpZENoYXJhY3RlcigiSW52YWxpZCBzdHJpbmcgb2YgY2hhcmFjdGVycyBub3QgZW50ZXJlZC4iKSx0aGlzLmlucHV0RWxlbWVudC52YWx1ZT10aGlzLl9wcmV2aW91c1ZhbGlkSW5wdXQpKSx0aGlzLmJpbmRWYWx1ZT10aGlzLl9wcmV2aW91c1ZhbGlkSW5wdXQ9dGhpcy5pbnB1dEVsZW1lbnQudmFsdWUsdGhpcy5fcGF0dGVybkFscmVhZHlDaGVja2VkPSExfSxfaXNQcmludGFibGU6ZnVuY3Rpb24odCl7cmV0dXJuISg4PT10LmtleUNvZGV8fDk9PXQua2V5Q29kZXx8MTM9PXQua2V5Q29kZXx8Mjc9PXQua2V5Q29kZXx8MD09dC5jaGFyQ29kZSYmKDE5PT10LmtleUNvZGV8fDIwPT10LmtleUNvZGV8fDQ1PT10LmtleUNvZGV8fDQ2PT10LmtleUNvZGV8fDE0ND09dC5rZXlDb2RlfHwxNDU9PXQua2V5Q29kZXx8dC5rZXlDb2RlPjMyJiZ0LmtleUNvZGU8NDF8fHQua2V5Q29kZT4xMTEmJnQua2V5Q29kZTwxMjQpKX0sX29uS2V5cHJlc3M6ZnVuY3Rpb24odCl7aWYodGhpcy5hbGxvd2VkUGF0dGVybnx8Im51bWJlciI9PT10aGlzLmlucHV0RWxlbWVudC50eXBlKXt2YXIgZT10aGlzLl9wYXR0ZXJuUmVnRXhwO2lmKGUmJiEodC5tZXRhS2V5fHx0LmN0cmxLZXl8fHQuYWx0S2V5KSl7dGhpcy5fcGF0dGVybkFscmVhZHlDaGVja2VkPSEwO3ZhciBuPVN0cmluZy5mcm9tQ2hhckNvZGUodC5jaGFyQ29kZSk7dGhpcy5faXNQcmludGFibGUodCkmJiFlLnRlc3QobikmJih0LnByZXZlbnREZWZhdWx0KCksdGhpcy5fYW5ub3VuY2VJbnZhbGlkQ2hhcmFjdGVyKCJJbnZhbGlkIGNoYXJhY3RlciAiK24rIiBub3QgZW50ZXJlZC4iKSl9fX0sX2NoZWNrUGF0dGVyblZhbGlkaXR5OmZ1bmN0aW9uKCl7dmFyIHQ9dGhpcy5fcGF0dGVyblJlZ0V4cDtpZighdClyZXR1cm4hMDtmb3IodmFyIGU9MDtlPHRoaXMuaW5wdXRFbGVtZW50LnZhbHVlLmxlbmd0aDtlKyspaWYoIXQudGVzdCh0aGlzLmlucHV0RWxlbWVudC52YWx1ZVtlXSkpcmV0dXJuITE7cmV0dXJuITB9LHZhbGlkYXRlOmZ1bmN0aW9uKCl7aWYoIXRoaXMuaW5wdXRFbGVtZW50KXJldHVybiB0aGlzLmludmFsaWQ9ITEsITA7dmFyIHQ9dGhpcy5pbnB1dEVsZW1lbnQuY2hlY2tWYWxpZGl0eSgpO3JldHVybiB0JiYodGhpcy5yZXF1aXJlZCYmIiI9PT10aGlzLmJpbmRWYWx1ZT90PSExOnRoaXMuaGFzVmFsaWRhdG9yKCkmJih0PW9hLnZhbGlkYXRlLmNhbGwodGhpcyx0aGlzLmJpbmRWYWx1ZSkpKSx0aGlzLmludmFsaWQ9IXQsdGhpcy5maXJlKCJpcm9uLWlucHV0LXZhbGlkYXRlIiksdH0sX2Fubm91bmNlSW52YWxpZENoYXJhY3RlcjpmdW5jdGlvbih0KXt0aGlzLmZpcmUoImlyb24tYW5ub3VuY2UiLHt0ZXh0OnR9KX0sX2NvbXB1dGVWYWx1ZTpmdW5jdGlvbih0KXtyZXR1cm4gdH19KTsKLyoqCiAgICBAbGljZW5zZQogICAgQ29weXJpZ2h0IChjKSAyMDE1IFRoZSBQb2x5bWVyIFByb2plY3QgQXV0aG9ycy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAgIFRoaXMgY29kZSBtYXkgb25seSBiZSB1c2VkIHVuZGVyIHRoZSBCU0Qgc3R5bGUgbGljZW5zZSBmb3VuZCBhdAogICAgaHR0cDovL3BvbHltZXIuZ2l0aHViLmlvL0xJQ0VOU0UudHh0IFRoZSBjb21wbGV0ZSBzZXQgb2YgYXV0aG9ycyBtYXkgYmUgZm91bmQgYXQKICAgIGh0dHA6Ly9wb2x5bWVyLmdpdGh1Yi5pby9BVVRIT1JTLnR4dCBUaGUgY29tcGxldGUgc2V0IG9mIGNvbnRyaWJ1dG9ycyBtYXkgYmUKICAgIGZvdW5kIGF0IGh0dHA6Ly9wb2x5bWVyLmdpdGh1Yi5pby9DT05UUklCVVRPUlMudHh0IENvZGUgZGlzdHJpYnV0ZWQgYnkgR29vZ2xlIGFzCiAgICBwYXJ0IG9mIHRoZSBwb2x5bWVyIHByb2plY3QgaXMgYWxzbyBzdWJqZWN0IHRvIGFuIGFkZGl0aW9uYWwgSVAgcmlnaHRzIGdyYW50CiAgICBmb3VuZCBhdCBodHRwOi8vcG9seW1lci5naXRodWIuaW8vUEFURU5UUy50eHQKICAgICovCmNvbnN0IFJhPXthdHRhY2hlZDpmdW5jdGlvbigpe3RoaXMuZmlyZSgiYWRkb24tYXR0YWNoZWQiKX0sdXBkYXRlOmZ1bmN0aW9uKHQpe319OwovKioKICAgIEBsaWNlbnNlCiAgICBDb3B5cmlnaHQgKGMpIDIwMTUgVGhlIFBvbHltZXIgUHJvamVjdCBBdXRob3JzLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICAgVGhpcyBjb2RlIG1heSBvbmx5IGJlIHVzZWQgdW5kZXIgdGhlIEJTRCBzdHlsZSBsaWNlbnNlIGZvdW5kIGF0CiAgICBodHRwOi8vcG9seW1lci5naXRodWIuaW8vTElDRU5TRS50eHQgVGhlIGNvbXBsZXRlIHNldCBvZiBhdXRob3JzIG1heSBiZSBmb3VuZCBhdAogICAgaHR0cDovL3BvbHltZXIuZ2l0aHViLmlvL0FVVEhPUlMudHh0IFRoZSBjb21wbGV0ZSBzZXQgb2YgY29udHJpYnV0b3JzIG1heSBiZQogICAgZm91bmQgYXQgaHR0cDovL3BvbHltZXIuZ2l0aHViLmlvL0NPTlRSSUJVVE9SUy50eHQgQ29kZSBkaXN0cmlidXRlZCBieSBHb29nbGUgYXMKICAgIHBhcnQgb2YgdGhlIHBvbHltZXIgcHJvamVjdCBpcyBhbHNvIHN1YmplY3QgdG8gYW4gYWRkaXRpb25hbCBJUCByaWdodHMgZ3JhbnQKICAgIGZvdW5kIGF0IGh0dHA6Ly9wb2x5bWVyLmdpdGh1Yi5pby9QQVRFTlRTLnR4dAogICAgKi9Ocih7X3RlbXBsYXRlOl9lYAogICAgPHN0eWxlPgogICAgICA6aG9zdCB7CiAgICAgICAgZGlzcGxheTogaW5saW5lLWJsb2NrOwogICAgICAgIGZsb2F0OiByaWdodDsKCiAgICAgICAgQGFwcGx5IC0tcGFwZXItZm9udC1jYXB0aW9uOwogICAgICAgIEBhcHBseSAtLXBhcGVyLWlucHV0LWNoYXItY291bnRlcjsKICAgICAgfQoKICAgICAgOmhvc3QoW2hpZGRlbl0pIHsKICAgICAgICBkaXNwbGF5OiBub25lICFpbXBvcnRhbnQ7CiAgICAgIH0KCiAgICAgIDpob3N0KDpkaXIocnRsKSkgewogICAgICAgIGZsb2F0OiBsZWZ0OwogICAgICB9CiAgICA8L3N0eWxlPgoKICAgIDxzcGFuPltbX2NoYXJDb3VudGVyU3RyXV08L3NwYW4+CmAsaXM6InBhcGVyLWlucHV0LWNoYXItY291bnRlciIsYmVoYXZpb3JzOltSYV0scHJvcGVydGllczp7X2NoYXJDb3VudGVyU3RyOnt0eXBlOlN0cmluZyx2YWx1ZToiMCJ9fSx1cGRhdGU6ZnVuY3Rpb24odCl7aWYodC5pbnB1dEVsZW1lbnQpe3QudmFsdWU9dC52YWx1ZXx8IiI7dmFyIGU9dC52YWx1ZS50b1N0cmluZygpLmxlbmd0aC50b1N0cmluZygpO3QuaW5wdXRFbGVtZW50Lmhhc0F0dHJpYnV0ZSgibWF4bGVuZ3RoIikmJihlKz0iLyIrdC5pbnB1dEVsZW1lbnQuZ2V0QXR0cmlidXRlKCJtYXhsZW5ndGgiKSksdGhpcy5fY2hhckNvdW50ZXJTdHI9ZX19fSk7Ci8qKgogICAgQGxpY2Vuc2UKICAgIENvcHlyaWdodCAoYykgMjAxNSBUaGUgUG9seW1lciBQcm9qZWN0IEF1dGhvcnMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgICBUaGlzIGNvZGUgbWF5IG9ubHkgYmUgdXNlZCB1bmRlciB0aGUgQlNEIHN0eWxlIGxpY2Vuc2UgZm91bmQgYXQKICAgIGh0dHA6Ly9wb2x5bWVyLmdpdGh1Yi5pby9MSUNFTlNFLnR4dCBUaGUgY29tcGxldGUgc2V0IG9mIGF1dGhvcnMgbWF5IGJlIGZvdW5kIGF0CiAgICBodHRwOi8vcG9seW1lci5naXRodWIuaW8vQVVUSE9SUy50eHQgVGhlIGNvbXBsZXRlIHNldCBvZiBjb250cmlidXRvcnMgbWF5IGJlCiAgICBmb3VuZCBhdCBodHRwOi8vcG9seW1lci5naXRodWIuaW8vQ09OVFJJQlVUT1JTLnR4dCBDb2RlIGRpc3RyaWJ1dGVkIGJ5IEdvb2dsZSBhcwogICAgcGFydCBvZiB0aGUgcG9seW1lciBwcm9qZWN0IGlzIGFsc28gc3ViamVjdCB0byBhbiBhZGRpdGlvbmFsIElQIHJpZ2h0cyBncmFudAogICAgZm91bmQgYXQgaHR0cDovL3BvbHltZXIuZ2l0aHViLmlvL1BBVEVOVFMudHh0CiAgICAqLwpjb25zdCB6YT1fZWAKPGN1c3RvbS1zdHlsZT4KICA8c3R5bGUgaXM9ImN1c3RvbS1zdHlsZSI+CiAgICBodG1sIHsKICAgICAgLS1wYXBlci1pbnB1dC1jb250YWluZXItc2hhcmVkLWlucHV0LXN0eWxlOiB7CiAgICAgICAgcG9zaXRpb246IHJlbGF0aXZlOyAvKiB0byBtYWtlIGEgc3RhY2tpbmcgY29udGV4dCAqLwogICAgICAgIG91dGxpbmU6IG5vbmU7CiAgICAgICAgYm94LXNoYWRvdzogbm9uZTsKICAgICAgICBwYWRkaW5nOiAwOwogICAgICAgIG1hcmdpbjogMDsKICAgICAgICB3aWR0aDogMTAwJTsKICAgICAgICBtYXgtd2lkdGg6IDEwMCU7CiAgICAgICAgYmFja2dyb3VuZDogdHJhbnNwYXJlbnQ7CiAgICAgICAgYm9yZGVyOiBub25lOwogICAgICAgIGNvbG9yOiB2YXIoLS1wYXBlci1pbnB1dC1jb250YWluZXItaW5wdXQtY29sb3IsIHZhcigtLXByaW1hcnktdGV4dC1jb2xvcikpOwogICAgICAgIC13ZWJraXQtYXBwZWFyYW5jZTogbm9uZTsKICAgICAgICB0ZXh0LWFsaWduOiBpbmhlcml0OwogICAgICAgIHZlcnRpY2FsLWFsaWduOiB2YXIoLS1wYXBlci1pbnB1dC1jb250YWluZXItaW5wdXQtYWxpZ24sIGJvdHRvbSk7CgogICAgICAgIEBhcHBseSAtLXBhcGVyLWZvbnQtc3ViaGVhZDsKICAgICAgfTsKICAgIH0KICA8L3N0eWxlPgo8L2N1c3RvbS1zdHlsZT4KYDt6YS5zZXRBdHRyaWJ1dGUoInN0eWxlIiwiZGlzcGxheTogbm9uZTsiKSxkb2N1bWVudC5oZWFkLmFwcGVuZENoaWxkKHphLmNvbnRlbnQpLE5yKHtfdGVtcGxhdGU6X2VgCiAgICA8c3R5bGU+CiAgICAgIDpob3N0IHsKICAgICAgICBkaXNwbGF5OiBibG9jazsKICAgICAgICBwYWRkaW5nOiA4cHggMDsKICAgICAgICBAYXBwbHkgLS1wYXBlci1pbnB1dC1jb250YWluZXI7CiAgICAgIH0KCiAgICAgIDpob3N0KFtpbmxpbmVdKSB7CiAgICAgICAgZGlzcGxheTogaW5saW5lLWJsb2NrOwogICAgICB9CgogICAgICA6aG9zdChbZGlzYWJsZWRdKSB7CiAgICAgICAgcG9pbnRlci1ldmVudHM6IG5vbmU7CiAgICAgICAgb3BhY2l0eTogMC4zMzsKCiAgICAgICAgQGFwcGx5IC0tcGFwZXItaW5wdXQtY29udGFpbmVyLWRpc2FibGVkOwogICAgICB9CgogICAgICA6aG9zdChbaGlkZGVuXSkgewogICAgICAgIGRpc3BsYXk6IG5vbmUgIWltcG9ydGFudDsKICAgICAgfQoKICAgICAgW2hpZGRlbl0gewogICAgICAgIGRpc3BsYXk6IG5vbmUgIWltcG9ydGFudDsKICAgICAgfQoKICAgICAgLmZsb2F0ZWQtbGFiZWwtcGxhY2Vob2xkZXIgewogICAgICAgIEBhcHBseSAtLXBhcGVyLWZvbnQtY2FwdGlvbjsKICAgICAgfQoKICAgICAgLnVuZGVybGluZSB7CiAgICAgICAgaGVpZ2h0OiAycHg7CiAgICAgICAgcG9zaXRpb246IHJlbGF0aXZlOwogICAgICB9CgogICAgICAuZm9jdXNlZC1saW5lIHsKICAgICAgICBAYXBwbHkgLS1sYXlvdXQtZml0OwogICAgICAgIGJvcmRlci1ib3R0b206IDJweCBzb2xpZCB2YXIoLS1wYXBlci1pbnB1dC1jb250YWluZXItZm9jdXMtY29sb3IsIHZhcigtLXByaW1hcnktY29sb3IpKTsKCiAgICAgICAgLXdlYmtpdC10cmFuc2Zvcm0tb3JpZ2luOiBjZW50ZXIgY2VudGVyOwogICAgICAgIHRyYW5zZm9ybS1vcmlnaW46IGNlbnRlciBjZW50ZXI7CiAgICAgICAgLXdlYmtpdC10cmFuc2Zvcm06IHNjYWxlM2QoMCwxLDEpOwogICAgICAgIHRyYW5zZm9ybTogc2NhbGUzZCgwLDEsMSk7CgogICAgICAgIEBhcHBseSAtLXBhcGVyLWlucHV0LWNvbnRhaW5lci11bmRlcmxpbmUtZm9jdXM7CiAgICAgIH0KCiAgICAgIC51bmRlcmxpbmUuaXMtaGlnaGxpZ2h0ZWQgLmZvY3VzZWQtbGluZSB7CiAgICAgICAgLXdlYmtpdC10cmFuc2Zvcm06IG5vbmU7CiAgICAgICAgdHJhbnNmb3JtOiBub25lOwogICAgICAgIC13ZWJraXQtdHJhbnNpdGlvbjogLXdlYmtpdC10cmFuc2Zvcm0gMC4yNXM7CiAgICAgICAgdHJhbnNpdGlvbjogdHJhbnNmb3JtIDAuMjVzOwoKICAgICAgICBAYXBwbHkgLS1wYXBlci10cmFuc2l0aW9uLWVhc2luZzsKICAgICAgfQoKICAgICAgLnVuZGVybGluZS5pcy1pbnZhbGlkIC5mb2N1c2VkLWxpbmUgewogICAgICAgIGJvcmRlci1jb2xvcjogdmFyKC0tcGFwZXItaW5wdXQtY29udGFpbmVyLWludmFsaWQtY29sb3IsIHZhcigtLWVycm9yLWNvbG9yKSk7CiAgICAgICAgLXdlYmtpdC10cmFuc2Zvcm06IG5vbmU7CiAgICAgICAgdHJhbnNmb3JtOiBub25lOwogICAgICAgIC13ZWJraXQtdHJhbnNpdGlvbjogLXdlYmtpdC10cmFuc2Zvcm0gMC4yNXM7CiAgICAgICAgdHJhbnNpdGlvbjogdHJhbnNmb3JtIDAuMjVzOwoKICAgICAgICBAYXBwbHkgLS1wYXBlci10cmFuc2l0aW9uLWVhc2luZzsKICAgICAgfQoKICAgICAgLnVuZm9jdXNlZC1saW5lIHsKICAgICAgICBAYXBwbHkgLS1sYXlvdXQtZml0OwogICAgICAgIGJvcmRlci1ib3R0b206IDFweCBzb2xpZCB2YXIoLS1wYXBlci1pbnB1dC1jb250YWluZXItY29sb3IsIHZhcigtLXNlY29uZGFyeS10ZXh0LWNvbG9yKSk7CiAgICAgICAgQGFwcGx5IC0tcGFwZXItaW5wdXQtY29udGFpbmVyLXVuZGVybGluZTsKICAgICAgfQoKICAgICAgOmhvc3QoW2Rpc2FibGVkXSkgLnVuZm9jdXNlZC1saW5lIHsKICAgICAgICBib3JkZXItYm90dG9tOiAxcHggZGFzaGVkOwogICAgICAgIGJvcmRlci1jb2xvcjogdmFyKC0tcGFwZXItaW5wdXQtY29udGFpbmVyLWNvbG9yLCB2YXIoLS1zZWNvbmRhcnktdGV4dC1jb2xvcikpOwogICAgICAgIEBhcHBseSAtLXBhcGVyLWlucHV0LWNvbnRhaW5lci11bmRlcmxpbmUtZGlzYWJsZWQ7CiAgICAgIH0KCiAgICAgIC5pbnB1dC13cmFwcGVyIHsKICAgICAgICBAYXBwbHkgLS1sYXlvdXQtaG9yaXpvbnRhbDsKICAgICAgICBAYXBwbHkgLS1sYXlvdXQtY2VudGVyOwogICAgICAgIHBvc2l0aW9uOiByZWxhdGl2ZTsKICAgICAgfQoKICAgICAgLmlucHV0LWNvbnRlbnQgewogICAgICAgIEBhcHBseSAtLWxheW91dC1mbGV4LWF1dG87CiAgICAgICAgQGFwcGx5IC0tbGF5b3V0LXJlbGF0aXZlOwogICAgICAgIG1heC13aWR0aDogMTAwJTsKICAgICAgfQoKICAgICAgLmlucHV0LWNvbnRlbnQgOjpzbG90dGVkKGxhYmVsKSwKICAgICAgLmlucHV0LWNvbnRlbnQgOjpzbG90dGVkKC5wYXBlci1pbnB1dC1sYWJlbCkgewogICAgICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTsKICAgICAgICB0b3A6IDA7CiAgICAgICAgbGVmdDogMDsKICAgICAgICB3aWR0aDogMTAwJTsKICAgICAgICBmb250OiBpbmhlcml0OwogICAgICAgIGNvbG9yOiB2YXIoLS1wYXBlci1pbnB1dC1jb250YWluZXItY29sb3IsIHZhcigtLXNlY29uZGFyeS10ZXh0LWNvbG9yKSk7CiAgICAgICAgLXdlYmtpdC10cmFuc2l0aW9uOiAtd2Via2l0LXRyYW5zZm9ybSAwLjI1cywgd2lkdGggMC4yNXM7CiAgICAgICAgdHJhbnNpdGlvbjogdHJhbnNmb3JtIDAuMjVzLCB3aWR0aCAwLjI1czsKICAgICAgICAtd2Via2l0LXRyYW5zZm9ybS1vcmlnaW46IGxlZnQgdG9wOwogICAgICAgIHRyYW5zZm9ybS1vcmlnaW46IGxlZnQgdG9wOwogICAgICAgIC8qIEZpeCBmb3Igc2FmYXJpIG5vdCBmb2N1c2luZyAwLWhlaWdodCBkYXRlL3RpbWUgaW5wdXRzIHdpdGggLXdlYmtpdC1hcHBlcmFuY2U6IG5vbmU7ICovCiAgICAgICAgbWluLWhlaWdodDogMXB4OwoKICAgICAgICBAYXBwbHkgLS1wYXBlci1mb250LWNvbW1vbi1ub3dyYXA7CiAgICAgICAgQGFwcGx5IC0tcGFwZXItZm9udC1zdWJoZWFkOwogICAgICAgIEBhcHBseSAtLXBhcGVyLWlucHV0LWNvbnRhaW5lci1sYWJlbDsKICAgICAgICBAYXBwbHkgLS1wYXBlci10cmFuc2l0aW9uLWVhc2luZzsKICAgICAgfQoKCiAgICAgIC5pbnB1dC1jb250ZW50IDo6c2xvdHRlZChsYWJlbCk6YmVmb3JlLAogICAgICAuaW5wdXQtY29udGVudCA6OnNsb3R0ZWQoLnBhcGVyLWlucHV0LWxhYmVsKTpiZWZvcmUgewogICAgICAgIEBhcHBseSAtLXBhcGVyLWlucHV0LWNvbnRhaW5lci1sYWJlbC1iZWZvcmU7CiAgICAgIH0KCiAgICAgIC5pbnB1dC1jb250ZW50IDo6c2xvdHRlZChsYWJlbCk6YWZ0ZXIsCiAgICAgIC5pbnB1dC1jb250ZW50IDo6c2xvdHRlZCgucGFwZXItaW5wdXQtbGFiZWwpOmFmdGVyIHsKICAgICAgICBAYXBwbHkgLS1wYXBlci1pbnB1dC1jb250YWluZXItbGFiZWwtYWZ0ZXI7CiAgICAgIH0KCiAgICAgIC5pbnB1dC1jb250ZW50LmxhYmVsLWlzLWZsb2F0aW5nIDo6c2xvdHRlZChsYWJlbCksCiAgICAgIC5pbnB1dC1jb250ZW50LmxhYmVsLWlzLWZsb2F0aW5nIDo6c2xvdHRlZCgucGFwZXItaW5wdXQtbGFiZWwpIHsKICAgICAgICAtd2Via2l0LXRyYW5zZm9ybTogdHJhbnNsYXRlWSgtNzUlKSBzY2FsZSgwLjc1KTsKICAgICAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZVkoLTc1JSkgc2NhbGUoMC43NSk7CgogICAgICAgIC8qIFNpbmNlIHdlIHNjYWxlIHRvIDc1LzEwMCBvZiB0aGUgc2l6ZSwgd2UgYWN0dWFsbHkgaGF2ZSAxMDAvNzUgb2YgdGhlCiAgICAgICAgb3JpZ2luYWwgc3BhY2Ugbm93IGF2YWlsYWJsZSAqLwogICAgICAgIHdpZHRoOiAxMzMlOwoKICAgICAgICBAYXBwbHkgLS1wYXBlci1pbnB1dC1jb250YWluZXItbGFiZWwtZmxvYXRpbmc7CiAgICAgIH0KCiAgICAgIDpob3N0KDpkaXIocnRsKSkgLmlucHV0LWNvbnRlbnQubGFiZWwtaXMtZmxvYXRpbmcgOjpzbG90dGVkKGxhYmVsKSwKICAgICAgOmhvc3QoOmRpcihydGwpKSAuaW5wdXQtY29udGVudC5sYWJlbC1pcy1mbG9hdGluZyA6OnNsb3R0ZWQoLnBhcGVyLWlucHV0LWxhYmVsKSB7CiAgICAgICAgcmlnaHQ6IDA7CiAgICAgICAgbGVmdDogYXV0bzsKICAgICAgICAtd2Via2l0LXRyYW5zZm9ybS1vcmlnaW46IHJpZ2h0IHRvcDsKICAgICAgICB0cmFuc2Zvcm0tb3JpZ2luOiByaWdodCB0b3A7CiAgICAgIH0KCiAgICAgIC5pbnB1dC1jb250ZW50LmxhYmVsLWlzLWhpZ2hsaWdodGVkIDo6c2xvdHRlZChsYWJlbCksCiAgICAgIC5pbnB1dC1jb250ZW50LmxhYmVsLWlzLWhpZ2hsaWdodGVkIDo6c2xvdHRlZCgucGFwZXItaW5wdXQtbGFiZWwpIHsKICAgICAgICBjb2xvcjogdmFyKC0tcGFwZXItaW5wdXQtY29udGFpbmVyLWZvY3VzLWNvbG9yLCB2YXIoLS1wcmltYXJ5LWNvbG9yKSk7CgogICAgICAgIEBhcHBseSAtLXBhcGVyLWlucHV0LWNvbnRhaW5lci1sYWJlbC1mb2N1czsKICAgICAgfQoKICAgICAgLmlucHV0LWNvbnRlbnQuaXMtaW52YWxpZCA6OnNsb3R0ZWQobGFiZWwpLAogICAgICAuaW5wdXQtY29udGVudC5pcy1pbnZhbGlkIDo6c2xvdHRlZCgucGFwZXItaW5wdXQtbGFiZWwpIHsKICAgICAgICBjb2xvcjogdmFyKC0tcGFwZXItaW5wdXQtY29udGFpbmVyLWludmFsaWQtY29sb3IsIHZhcigtLWVycm9yLWNvbG9yKSk7CiAgICAgIH0KCiAgICAgIC5pbnB1dC1jb250ZW50LmxhYmVsLWlzLWhpZGRlbiA6OnNsb3R0ZWQobGFiZWwpLAogICAgICAuaW5wdXQtY29udGVudC5sYWJlbC1pcy1oaWRkZW4gOjpzbG90dGVkKC5wYXBlci1pbnB1dC1sYWJlbCkgewogICAgICAgIHZpc2liaWxpdHk6IGhpZGRlbjsKICAgICAgfQoKICAgICAgLmlucHV0LWNvbnRlbnQgOjpzbG90dGVkKGlucHV0KSwKICAgICAgLmlucHV0LWNvbnRlbnQgOjpzbG90dGVkKGlyb24taW5wdXQpLAogICAgICAuaW5wdXQtY29udGVudCA6OnNsb3R0ZWQodGV4dGFyZWEpLAogICAgICAuaW5wdXQtY29udGVudCA6OnNsb3R0ZWQoaXJvbi1hdXRvZ3Jvdy10ZXh0YXJlYSksCiAgICAgIC5pbnB1dC1jb250ZW50IDo6c2xvdHRlZCgucGFwZXItaW5wdXQtaW5wdXQpIHsKICAgICAgICBAYXBwbHkgLS1wYXBlci1pbnB1dC1jb250YWluZXItc2hhcmVkLWlucHV0LXN0eWxlOwogICAgICAgIC8qIFRoZSBhcHBseSBzaGltIGRvZXNuJ3QgYXBwbHkgdGhlIG5lc3RlZCBjb2xvciBjdXN0b20gcHJvcGVydHksCiAgICAgICAgICBzbyB3ZSBoYXZlIHRvIHJlLWFwcGx5IGl0IGhlcmUuICovCiAgICAgICAgY29sb3I6IHZhcigtLXBhcGVyLWlucHV0LWNvbnRhaW5lci1pbnB1dC1jb2xvciwgdmFyKC0tcHJpbWFyeS10ZXh0LWNvbG9yKSk7CiAgICAgICAgQGFwcGx5IC0tcGFwZXItaW5wdXQtY29udGFpbmVyLWlucHV0OwogICAgICB9CgogICAgICAuaW5wdXQtY29udGVudCA6OnNsb3R0ZWQoaW5wdXQpOjotd2Via2l0LW91dGVyLXNwaW4tYnV0dG9uLAogICAgICAuaW5wdXQtY29udGVudCA6OnNsb3R0ZWQoaW5wdXQpOjotd2Via2l0LWlubmVyLXNwaW4tYnV0dG9uIHsKICAgICAgICBAYXBwbHkgLS1wYXBlci1pbnB1dC1jb250YWluZXItaW5wdXQtd2Via2l0LXNwaW5uZXI7CiAgICAgIH0KCiAgICAgIC5pbnB1dC1jb250ZW50LmZvY3VzZWQgOjpzbG90dGVkKGlucHV0KSwKICAgICAgLmlucHV0LWNvbnRlbnQuZm9jdXNlZCA6OnNsb3R0ZWQoaXJvbi1pbnB1dCksCiAgICAgIC5pbnB1dC1jb250ZW50LmZvY3VzZWQgOjpzbG90dGVkKHRleHRhcmVhKSwKICAgICAgLmlucHV0LWNvbnRlbnQuZm9jdXNlZCA6OnNsb3R0ZWQoaXJvbi1hdXRvZ3Jvdy10ZXh0YXJlYSksCiAgICAgIC5pbnB1dC1jb250ZW50LmZvY3VzZWQgOjpzbG90dGVkKC5wYXBlci1pbnB1dC1pbnB1dCkgewogICAgICAgIEBhcHBseSAtLXBhcGVyLWlucHV0LWNvbnRhaW5lci1pbnB1dC1mb2N1czsKICAgICAgfQoKICAgICAgLmlucHV0LWNvbnRlbnQuaXMtaW52YWxpZCA6OnNsb3R0ZWQoaW5wdXQpLAogICAgICAuaW5wdXQtY29udGVudC5pcy1pbnZhbGlkIDo6c2xvdHRlZChpcm9uLWlucHV0KSwKICAgICAgLmlucHV0LWNvbnRlbnQuaXMtaW52YWxpZCA6OnNsb3R0ZWQodGV4dGFyZWEpLAogICAgICAuaW5wdXQtY29udGVudC5pcy1pbnZhbGlkIDo6c2xvdHRlZChpcm9uLWF1dG9ncm93LXRleHRhcmVhKSwKICAgICAgLmlucHV0LWNvbnRlbnQuaXMtaW52YWxpZCA6OnNsb3R0ZWQoLnBhcGVyLWlucHV0LWlucHV0KSB7CiAgICAgICAgQGFwcGx5IC0tcGFwZXItaW5wdXQtY29udGFpbmVyLWlucHV0LWludmFsaWQ7CiAgICAgIH0KCiAgICAgIC5wcmVmaXggOjpzbG90dGVkKCopIHsKICAgICAgICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7CiAgICAgICAgQGFwcGx5IC0tcGFwZXItZm9udC1zdWJoZWFkOwogICAgICAgIEBhcHBseSAtLWxheW91dC1mbGV4LW5vbmU7CiAgICAgICAgQGFwcGx5IC0tcGFwZXItaW5wdXQtcHJlZml4OwogICAgICB9CgogICAgICAuc3VmZml4IDo6c2xvdHRlZCgqKSB7CiAgICAgICAgZGlzcGxheTogaW5saW5lLWJsb2NrOwogICAgICAgIEBhcHBseSAtLXBhcGVyLWZvbnQtc3ViaGVhZDsKICAgICAgICBAYXBwbHkgLS1sYXlvdXQtZmxleC1ub25lOwoKICAgICAgICBAYXBwbHkgLS1wYXBlci1pbnB1dC1zdWZmaXg7CiAgICAgIH0KCiAgICAgIC8qIEZpcmVmb3ggc2V0cyBhIG1pbi13aWR0aCBvbiB0aGUgaW5wdXQsIHdoaWNoIGNhbiBjYXVzZSBsYXlvdXQgaXNzdWVzICovCiAgICAgIC5pbnB1dC1jb250ZW50IDo6c2xvdHRlZChpbnB1dCkgewogICAgICAgIG1pbi13aWR0aDogMDsKICAgICAgfQoKICAgICAgLmlucHV0LWNvbnRlbnQgOjpzbG90dGVkKHRleHRhcmVhKSB7CiAgICAgICAgcmVzaXplOiBub25lOwogICAgICB9CgogICAgICAuYWRkLW9uLWNvbnRlbnQgewogICAgICAgIHBvc2l0aW9uOiByZWxhdGl2ZTsKICAgICAgfQoKICAgICAgLmFkZC1vbi1jb250ZW50LmlzLWludmFsaWQgOjpzbG90dGVkKCopIHsKICAgICAgICBjb2xvcjogdmFyKC0tcGFwZXItaW5wdXQtY29udGFpbmVyLWludmFsaWQtY29sb3IsIHZhcigtLWVycm9yLWNvbG9yKSk7CiAgICAgIH0KCiAgICAgIC5hZGQtb24tY29udGVudC5pcy1oaWdobGlnaHRlZCA6OnNsb3R0ZWQoKikgewogICAgICAgIGNvbG9yOiB2YXIoLS1wYXBlci1pbnB1dC1jb250YWluZXItZm9jdXMtY29sb3IsIHZhcigtLXByaW1hcnktY29sb3IpKTsKICAgICAgfQogICAgPC9zdHlsZT4KCiAgICA8ZGl2IGNsYXNzPSJmbG9hdGVkLWxhYmVsLXBsYWNlaG9sZGVyIiBhcmlhLWhpZGRlbj0idHJ1ZSIgaGlkZGVuPSJbW25vTGFiZWxGbG9hdF1dIj4mbmJzcDs8L2Rpdj4KCiAgICA8ZGl2IGNsYXNzPSJpbnB1dC13cmFwcGVyIj4KICAgICAgPHNwYW4gY2xhc3M9InByZWZpeCI+PHNsb3QgbmFtZT0icHJlZml4Ij48L3Nsb3Q+PC9zcGFuPgoKICAgICAgPGRpdiBjbGFzcyQ9IltbX2NvbXB1dGVJbnB1dENvbnRlbnRDbGFzcyhub0xhYmVsRmxvYXQsYWx3YXlzRmxvYXRMYWJlbCxmb2N1c2VkLGludmFsaWQsX2lucHV0SGFzQ29udGVudCldXSIgaWQ9ImxhYmVsQW5kSW5wdXRDb250YWluZXIiPgogICAgICAgIDxzbG90IG5hbWU9ImxhYmVsIj48L3Nsb3Q+CiAgICAgICAgPHNsb3QgbmFtZT0iaW5wdXQiPjwvc2xvdD4KICAgICAgPC9kaXY+CgogICAgICA8c3BhbiBjbGFzcz0ic3VmZml4Ij48c2xvdCBuYW1lPSJzdWZmaXgiPjwvc2xvdD48L3NwYW4+CiAgICA8L2Rpdj4KCiAgICA8ZGl2IGNsYXNzJD0iW1tfY29tcHV0ZVVuZGVybGluZUNsYXNzKGZvY3VzZWQsaW52YWxpZCldXSI+CiAgICAgIDxkaXYgY2xhc3M9InVuZm9jdXNlZC1saW5lIj48L2Rpdj4KICAgICAgPGRpdiBjbGFzcz0iZm9jdXNlZC1saW5lIj48L2Rpdj4KICAgIDwvZGl2PgoKICAgIDxkaXYgY2xhc3MkPSJbW19jb21wdXRlQWRkT25Db250ZW50Q2xhc3MoZm9jdXNlZCxpbnZhbGlkKV1dIj4KICAgICAgPHNsb3QgbmFtZT0iYWRkLW9uIj48L3Nsb3Q+CiAgICA8L2Rpdj4KYCxpczoicGFwZXItaW5wdXQtY29udGFpbmVyIixwcm9wZXJ0aWVzOntub0xhYmVsRmxvYXQ6e3R5cGU6Qm9vbGVhbix2YWx1ZTohMX0sYWx3YXlzRmxvYXRMYWJlbDp7dHlwZTpCb29sZWFuLHZhbHVlOiExfSxhdHRyRm9yVmFsdWU6e3R5cGU6U3RyaW5nLHZhbHVlOiJiaW5kLXZhbHVlIn0sYXV0b1ZhbGlkYXRlOnt0eXBlOkJvb2xlYW4sdmFsdWU6ITF9LGludmFsaWQ6e29ic2VydmVyOiJfaW52YWxpZENoYW5nZWQiLHR5cGU6Qm9vbGVhbix2YWx1ZTohMX0sZm9jdXNlZDp7cmVhZE9ubHk6ITAsdHlwZTpCb29sZWFuLHZhbHVlOiExLG5vdGlmeTohMH0sX2FkZG9uczp7dHlwZTpBcnJheX0sX2lucHV0SGFzQ29udGVudDp7dHlwZTpCb29sZWFuLHZhbHVlOiExfSxfaW5wdXRTZWxlY3Rvcjp7dHlwZTpTdHJpbmcsdmFsdWU6ImlucHV0LGlyb24taW5wdXQsdGV4dGFyZWEsLnBhcGVyLWlucHV0LWlucHV0In0sX2JvdW5kT25Gb2N1czp7dHlwZTpGdW5jdGlvbix2YWx1ZTpmdW5jdGlvbigpe3JldHVybiB0aGlzLl9vbkZvY3VzLmJpbmQodGhpcyl9fSxfYm91bmRPbkJsdXI6e3R5cGU6RnVuY3Rpb24sdmFsdWU6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5fb25CbHVyLmJpbmQodGhpcyl9fSxfYm91bmRPbklucHV0Ont0eXBlOkZ1bmN0aW9uLHZhbHVlOmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuX29uSW5wdXQuYmluZCh0aGlzKX19LF9ib3VuZFZhbHVlQ2hhbmdlZDp7dHlwZTpGdW5jdGlvbix2YWx1ZTpmdW5jdGlvbigpe3JldHVybiB0aGlzLl9vblZhbHVlQ2hhbmdlZC5iaW5kKHRoaXMpfX19LGxpc3RlbmVyczp7ImFkZG9uLWF0dGFjaGVkIjoiX29uQWRkb25BdHRhY2hlZCIsImlyb24taW5wdXQtdmFsaWRhdGUiOiJfb25Jcm9uSW5wdXRWYWxpZGF0ZSJ9LGdldCBfdmFsdWVDaGFuZ2VkRXZlbnQoKXtyZXR1cm4gdGhpcy5hdHRyRm9yVmFsdWUrIi1jaGFuZ2VkIn0sZ2V0IF9wcm9wZXJ0eUZvclZhbHVlKCl7cmV0dXJuIHN0KHRoaXMuYXR0ckZvclZhbHVlKX0sZ2V0IF9pbnB1dEVsZW1lbnQoKXtyZXR1cm4gcWkodGhpcykucXVlcnlTZWxlY3Rvcih0aGlzLl9pbnB1dFNlbGVjdG9yKX0sZ2V0IF9pbnB1dEVsZW1lbnRWYWx1ZSgpe3JldHVybiB0aGlzLl9pbnB1dEVsZW1lbnRbdGhpcy5fcHJvcGVydHlGb3JWYWx1ZV18fHRoaXMuX2lucHV0RWxlbWVudC52YWx1ZX0scmVhZHk6ZnVuY3Rpb24oKXt0aGlzLl9faXNGaXJzdFZhbHVlVXBkYXRlPSEwLHRoaXMuX2FkZG9uc3x8KHRoaXMuX2FkZG9ucz1bXSksdGhpcy5hZGRFdmVudExpc3RlbmVyKCJmb2N1cyIsdGhpcy5fYm91bmRPbkZvY3VzLCEwKSx0aGlzLmFkZEV2ZW50TGlzdGVuZXIoImJsdXIiLHRoaXMuX2JvdW5kT25CbHVyLCEwKX0sYXR0YWNoZWQ6ZnVuY3Rpb24oKXt0aGlzLmF0dHJGb3JWYWx1ZT90aGlzLl9pbnB1dEVsZW1lbnQuYWRkRXZlbnRMaXN0ZW5lcih0aGlzLl92YWx1ZUNoYW5nZWRFdmVudCx0aGlzLl9ib3VuZFZhbHVlQ2hhbmdlZCk6dGhpcy5hZGRFdmVudExpc3RlbmVyKCJpbnB1dCIsdGhpcy5fb25JbnB1dCksdGhpcy5faW5wdXRFbGVtZW50VmFsdWUmJiIiIT10aGlzLl9pbnB1dEVsZW1lbnRWYWx1ZT90aGlzLl9oYW5kbGVWYWx1ZUFuZEF1dG9WYWxpZGF0ZSh0aGlzLl9pbnB1dEVsZW1lbnQpOnRoaXMuX2hhbmRsZVZhbHVlKHRoaXMuX2lucHV0RWxlbWVudCl9LF9vbkFkZG9uQXR0YWNoZWQ6ZnVuY3Rpb24odCl7dGhpcy5fYWRkb25zfHwodGhpcy5fYWRkb25zPVtdKTt2YXIgZT10LnRhcmdldDstMT09PXRoaXMuX2FkZG9ucy5pbmRleE9mKGUpJiYodGhpcy5fYWRkb25zLnB1c2goZSksdGhpcy5pc0F0dGFjaGVkJiZ0aGlzLl9oYW5kbGVWYWx1ZSh0aGlzLl9pbnB1dEVsZW1lbnQpKX0sX29uRm9jdXM6ZnVuY3Rpb24oKXt0aGlzLl9zZXRGb2N1c2VkKCEwKX0sX29uQmx1cjpmdW5jdGlvbigpe3RoaXMuX3NldEZvY3VzZWQoITEpLHRoaXMuX2hhbmRsZVZhbHVlQW5kQXV0b1ZhbGlkYXRlKHRoaXMuX2lucHV0RWxlbWVudCl9LF9vbklucHV0OmZ1bmN0aW9uKHQpe3RoaXMuX2hhbmRsZVZhbHVlQW5kQXV0b1ZhbGlkYXRlKHQudGFyZ2V0KX0sX29uVmFsdWVDaGFuZ2VkOmZ1bmN0aW9uKHQpe3ZhciBlPXQudGFyZ2V0O3RoaXMuX19pc0ZpcnN0VmFsdWVVcGRhdGUmJih0aGlzLl9faXNGaXJzdFZhbHVlVXBkYXRlPSExLHZvaWQgMD09PWUudmFsdWV8fCIiPT09ZS52YWx1ZSl8fHRoaXMuX2hhbmRsZVZhbHVlQW5kQXV0b1ZhbGlkYXRlKHQudGFyZ2V0KX0sX2hhbmRsZVZhbHVlOmZ1bmN0aW9uKHQpe3ZhciBlPXRoaXMuX2lucHV0RWxlbWVudFZhbHVlO3RoaXMuX2lucHV0SGFzQ29udGVudD0hKCFlJiYwIT09ZSYmKCJudW1iZXIiIT09dC50eXBlfHx0LmNoZWNrVmFsaWRpdHkoKSkpLHRoaXMudXBkYXRlQWRkb25zKHtpbnB1dEVsZW1lbnQ6dCx2YWx1ZTplLGludmFsaWQ6dGhpcy5pbnZhbGlkfSl9LF9oYW5kbGVWYWx1ZUFuZEF1dG9WYWxpZGF0ZTpmdW5jdGlvbih0KXt2YXIgZTt0aGlzLmF1dG9WYWxpZGF0ZSYmdCYmKGU9dC52YWxpZGF0ZT90LnZhbGlkYXRlKHRoaXMuX2lucHV0RWxlbWVudFZhbHVlKTp0LmNoZWNrVmFsaWRpdHkoKSx0aGlzLmludmFsaWQ9IWUpLHRoaXMuX2hhbmRsZVZhbHVlKHQpfSxfb25Jcm9uSW5wdXRWYWxpZGF0ZTpmdW5jdGlvbih0KXt0aGlzLmludmFsaWQ9dGhpcy5faW5wdXRFbGVtZW50LmludmFsaWR9LF9pbnZhbGlkQ2hhbmdlZDpmdW5jdGlvbigpe3RoaXMuX2FkZG9ucyYmdGhpcy51cGRhdGVBZGRvbnMoe2ludmFsaWQ6dGhpcy5pbnZhbGlkfSl9LHVwZGF0ZUFkZG9uczpmdW5jdGlvbih0KXtmb3IodmFyIGUsbj0wO2U9dGhpcy5fYWRkb25zW25dO24rKyllLnVwZGF0ZSh0KX0sX2NvbXB1dGVJbnB1dENvbnRlbnRDbGFzczpmdW5jdGlvbih0LGUsbixpLHIpe3ZhciBvPSJpbnB1dC1jb250ZW50IjtpZih0KXImJihvKz0iIGxhYmVsLWlzLWhpZGRlbiIpLGkmJihvKz0iIGlzLWludmFsaWQiKTtlbHNle3ZhciBhPXRoaXMucXVlcnlTZWxlY3RvcigibGFiZWwiKTtlfHxyPyhvKz0iIGxhYmVsLWlzLWZsb2F0aW5nIix0aGlzLiQubGFiZWxBbmRJbnB1dENvbnRhaW5lci5zdHlsZS5wb3NpdGlvbj0ic3RhdGljIixpP28rPSIgaXMtaW52YWxpZCI6biYmKG8rPSIgbGFiZWwtaXMtaGlnaGxpZ2h0ZWQiKSk6KGEmJih0aGlzLiQubGFiZWxBbmRJbnB1dENvbnRhaW5lci5zdHlsZS5wb3NpdGlvbj0icmVsYXRpdmUiKSxpJiYobys9IiBpcy1pbnZhbGlkIikpfXJldHVybiBuJiYobys9IiBmb2N1c2VkIiksb30sX2NvbXB1dGVVbmRlcmxpbmVDbGFzczpmdW5jdGlvbih0LGUpe3ZhciBuPSJ1bmRlcmxpbmUiO3JldHVybiBlP24rPSIgaXMtaW52YWxpZCI6dCYmKG4rPSIgaXMtaGlnaGxpZ2h0ZWQiKSxufSxfY29tcHV0ZUFkZE9uQ29udGVudENsYXNzOmZ1bmN0aW9uKHQsZSl7dmFyIG49ImFkZC1vbi1jb250ZW50IjtyZXR1cm4gZT9uKz0iIGlzLWludmFsaWQiOnQmJihuKz0iIGlzLWhpZ2hsaWdodGVkIiksbn19KSwKLyoqCiAgICBAbGljZW5zZQogICAgQ29weXJpZ2h0IChjKSAyMDE1IFRoZSBQb2x5bWVyIFByb2plY3QgQXV0aG9ycy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAgIFRoaXMgY29kZSBtYXkgb25seSBiZSB1c2VkIHVuZGVyIHRoZSBCU0Qgc3R5bGUgbGljZW5zZSBmb3VuZCBhdAogICAgaHR0cDovL3BvbHltZXIuZ2l0aHViLmlvL0xJQ0VOU0UudHh0IFRoZSBjb21wbGV0ZSBzZXQgb2YgYXV0aG9ycyBtYXkgYmUgZm91bmQgYXQKICAgIGh0dHA6Ly9wb2x5bWVyLmdpdGh1Yi5pby9BVVRIT1JTLnR4dCBUaGUgY29tcGxldGUgc2V0IG9mIGNvbnRyaWJ1dG9ycyBtYXkgYmUKICAgIGZvdW5kIGF0IGh0dHA6Ly9wb2x5bWVyLmdpdGh1Yi5pby9DT05UUklCVVRPUlMudHh0IENvZGUgZGlzdHJpYnV0ZWQgYnkgR29vZ2xlIGFzCiAgICBwYXJ0IG9mIHRoZSBwb2x5bWVyIHByb2plY3QgaXMgYWxzbyBzdWJqZWN0IHRvIGFuIGFkZGl0aW9uYWwgSVAgcmlnaHRzIGdyYW50CiAgICBmb3VuZCBhdCBodHRwOi8vcG9seW1lci5naXRodWIuaW8vUEFURU5UUy50eHQKICAgICovCk5yKHtfdGVtcGxhdGU6X2VgCiAgICA8c3R5bGU+CiAgICAgIDpob3N0IHsKICAgICAgICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7CiAgICAgICAgdmlzaWJpbGl0eTogaGlkZGVuOwoKICAgICAgICBjb2xvcjogdmFyKC0tcGFwZXItaW5wdXQtY29udGFpbmVyLWludmFsaWQtY29sb3IsIHZhcigtLWVycm9yLWNvbG9yKSk7CgogICAgICAgIEBhcHBseSAtLXBhcGVyLWZvbnQtY2FwdGlvbjsKICAgICAgICBAYXBwbHkgLS1wYXBlci1pbnB1dC1lcnJvcjsKICAgICAgICBwb3NpdGlvbjogYWJzb2x1dGU7CiAgICAgICAgbGVmdDowOwogICAgICAgIHJpZ2h0OjA7CiAgICAgIH0KCiAgICAgIDpob3N0KFtpbnZhbGlkXSkgewogICAgICAgIHZpc2liaWxpdHk6IHZpc2libGU7CiAgICAgIH0KCiAgICAgICNhMTF5V3JhcHBlciB7CiAgICAgICAgdmlzaWJpbGl0eTogaGlkZGVuOwogICAgICB9CgogICAgICA6aG9zdChbaW52YWxpZF0pICNhMTF5V3JhcHBlciB7CiAgICAgICAgdmlzaWJpbGl0eTogdmlzaWJsZTsKICAgICAgfQogICAgPC9zdHlsZT4KCiAgICA8IS0tCiAgICBJZiB0aGUgcGFwZXItaW5wdXQtZXJyb3IgZWxlbWVudCBpcyBkaXJlY3RseSByZWZlcmVuY2VkIGJ5IGFuCiAgICBcYGFyaWEtZGVzY3JpYmVkYnlcYCBhdHRyaWJ1dGUsIHN1Y2ggYXMgd2hlbiB1c2VkIGFzIGEgcGFwZXItaW5wdXQgYWRkLW9uLAogICAgdGhlbiBhcHBseWluZyBcYHZpc2liaWxpdHk6IGhpZGRlbjtcYCB0byB0aGUgcGFwZXItaW5wdXQtZXJyb3IgZWxlbWVudCBpdHNlbGYKICAgIGRvZXMgbm90IGhpZGUgdGhlIGVycm9yLgoKICAgIEZvciBtb3JlIGluZm9ybWF0aW9uLCBzZWU6CiAgICBodHRwczovL3d3dy53My5vcmcvVFIvYWNjbmFtZS0xLjEvI21hcHBpbmdfYWRkaXRpb25hbF9uZF9kZXNjcmlwdGlvbgogICAgLS0+CiAgICA8ZGl2IGlkPSJhMTF5V3JhcHBlciI+CiAgICAgIDxzbG90Pjwvc2xvdD4KICAgIDwvZGl2PgpgLGlzOiJwYXBlci1pbnB1dC1lcnJvciIsYmVoYXZpb3JzOltSYV0scHJvcGVydGllczp7aW52YWxpZDp7cmVhZE9ubHk6ITAscmVmbGVjdFRvQXR0cmlidXRlOiEwLHR5cGU6Qm9vbGVhbn19LHVwZGF0ZTpmdW5jdGlvbih0KXt0aGlzLl9zZXRJbnZhbGlkKHQuaW52YWxpZCl9fSk7Ci8qKgogICAgQGxpY2Vuc2UKICAgIENvcHlyaWdodCAoYykgMjAxNSBUaGUgUG9seW1lciBQcm9qZWN0IEF1dGhvcnMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgICBUaGlzIGNvZGUgbWF5IG9ubHkgYmUgdXNlZCB1bmRlciB0aGUgQlNEIHN0eWxlIGxpY2Vuc2UgZm91bmQgYXQKICAgIGh0dHA6Ly9wb2x5bWVyLmdpdGh1Yi5pby9MSUNFTlNFLnR4dCBUaGUgY29tcGxldGUgc2V0IG9mIGF1dGhvcnMgbWF5IGJlIGZvdW5kIGF0CiAgICBodHRwOi8vcG9seW1lci5naXRodWIuaW8vQVVUSE9SUy50eHQgVGhlIGNvbXBsZXRlIHNldCBvZiBjb250cmlidXRvcnMgbWF5IGJlCiAgICBmb3VuZCBhdCBodHRwOi8vcG9seW1lci5naXRodWIuaW8vQ09OVFJJQlVUT1JTLnR4dCBDb2RlIGRpc3RyaWJ1dGVkIGJ5IEdvb2dsZSBhcwogICAgcGFydCBvZiB0aGUgcG9seW1lciBwcm9qZWN0IGlzIGFsc28gc3ViamVjdCB0byBhbiBhZGRpdGlvbmFsIElQIHJpZ2h0cyBncmFudAogICAgZm91bmQgYXQgaHR0cDovL3BvbHltZXIuZ2l0aHViLmlvL1BBVEVOVFMudHh0CiAgICAqLwpjb25zdCBEYT17TmV4dExhYmVsSUQ6MSxOZXh0QWRkb25JRDoxLE5leHRJbnB1dElEOjF9LEJhPXtwcm9wZXJ0aWVzOntsYWJlbDp7dHlwZTpTdHJpbmd9LHZhbHVlOntub3RpZnk6ITAsdHlwZTpTdHJpbmd9LGRpc2FibGVkOnt0eXBlOkJvb2xlYW4sdmFsdWU6ITF9LGludmFsaWQ6e3R5cGU6Qm9vbGVhbix2YWx1ZTohMSxub3RpZnk6ITB9LGFsbG93ZWRQYXR0ZXJuOnt0eXBlOlN0cmluZ30sdHlwZTp7dHlwZTpTdHJpbmd9LGxpc3Q6e3R5cGU6U3RyaW5nfSxwYXR0ZXJuOnt0eXBlOlN0cmluZ30scmVxdWlyZWQ6e3R5cGU6Qm9vbGVhbix2YWx1ZTohMX0sZXJyb3JNZXNzYWdlOnt0eXBlOlN0cmluZ30sY2hhckNvdW50ZXI6e3R5cGU6Qm9vbGVhbix2YWx1ZTohMX0sbm9MYWJlbEZsb2F0Ont0eXBlOkJvb2xlYW4sdmFsdWU6ITF9LGFsd2F5c0Zsb2F0TGFiZWw6e3R5cGU6Qm9vbGVhbix2YWx1ZTohMX0sYXV0b1ZhbGlkYXRlOnt0eXBlOkJvb2xlYW4sdmFsdWU6ITF9LHZhbGlkYXRvcjp7dHlwZTpTdHJpbmd9LGF1dG9jb21wbGV0ZTp7dHlwZTpTdHJpbmcsdmFsdWU6Im9mZiJ9LGF1dG9mb2N1czp7dHlwZTpCb29sZWFuLG9ic2VydmVyOiJfYXV0b2ZvY3VzQ2hhbmdlZCJ9LGlucHV0bW9kZTp7dHlwZTpTdHJpbmd9LG1pbmxlbmd0aDp7dHlwZTpOdW1iZXJ9LG1heGxlbmd0aDp7dHlwZTpOdW1iZXJ9LG1pbjp7dHlwZTpTdHJpbmd9LG1heDp7dHlwZTpTdHJpbmd9LHN0ZXA6e3R5cGU6U3RyaW5nfSxuYW1lOnt0eXBlOlN0cmluZ30scGxhY2Vob2xkZXI6e3R5cGU6U3RyaW5nLHZhbHVlOiIifSxyZWFkb25seTp7dHlwZTpCb29sZWFuLHZhbHVlOiExfSxzaXplOnt0eXBlOk51bWJlcn0sYXV0b2NhcGl0YWxpemU6e3R5cGU6U3RyaW5nLHZhbHVlOiJub25lIn0sYXV0b2NvcnJlY3Q6e3R5cGU6U3RyaW5nLHZhbHVlOiJvZmYifSxhdXRvc2F2ZTp7dHlwZTpTdHJpbmd9LHJlc3VsdHM6e3R5cGU6TnVtYmVyfSxhY2NlcHQ6e3R5cGU6U3RyaW5nfSxtdWx0aXBsZTp7dHlwZTpCb29sZWFufSxfYXJpYURlc2NyaWJlZEJ5Ont0eXBlOlN0cmluZyx2YWx1ZToiIn0sX2FyaWFMYWJlbGxlZEJ5Ont0eXBlOlN0cmluZyx2YWx1ZToiIn0sX2lucHV0SWQ6e3R5cGU6U3RyaW5nLHZhbHVlOiIifX0sbGlzdGVuZXJzOnsiYWRkb24tYXR0YWNoZWQiOiJfb25BZGRvbkF0dGFjaGVkIn0sa2V5QmluZGluZ3M6eyJzaGlmdCt0YWI6a2V5ZG93biI6Il9vblNoaWZ0VGFiRG93biJ9LGhvc3RBdHRyaWJ1dGVzOnt0YWJpbmRleDowfSxnZXQgaW5wdXRFbGVtZW50KCl7cmV0dXJuIHRoaXMuJHx8KHRoaXMuJD17fSksdGhpcy4kLmlucHV0fHwodGhpcy5fZ2VuZXJhdGVJbnB1dElkKCksdGhpcy4kLmlucHV0PXRoaXMuJCQoIiMiK3RoaXMuX2lucHV0SWQpKSx0aGlzLiQuaW5wdXR9LGdldCBfZm9jdXNhYmxlRWxlbWVudCgpe3JldHVybiB0aGlzLmlucHV0RWxlbWVudH0sY3JlYXRlZDpmdW5jdGlvbigpe3RoaXMuX3R5cGVzVGhhdEhhdmVUZXh0PVsiZGF0ZSIsImRhdGV0aW1lIiwiZGF0ZXRpbWUtbG9jYWwiLCJtb250aCIsInRpbWUiLCJ3ZWVrIiwiZmlsZSJdfSxhdHRhY2hlZDpmdW5jdGlvbigpe3RoaXMuX3VwZGF0ZUFyaWFMYWJlbGxlZEJ5KCksIXllJiZ0aGlzLmlucHV0RWxlbWVudCYmLTEhPT10aGlzLl90eXBlc1RoYXRIYXZlVGV4dC5pbmRleE9mKHRoaXMuaW5wdXRFbGVtZW50LnR5cGUpJiYodGhpcy5hbHdheXNGbG9hdExhYmVsPSEwKX0sX2FwcGVuZFN0cmluZ1dpdGhTcGFjZTpmdW5jdGlvbih0LGUpe3JldHVybiB0P3QrIiAiK2U6ZX0sX29uQWRkb25BdHRhY2hlZDpmdW5jdGlvbih0KXt2YXIgZT1xaSh0KS5yb290VGFyZ2V0O2lmKGUuaWQpdGhpcy5fYXJpYURlc2NyaWJlZEJ5PXRoaXMuX2FwcGVuZFN0cmluZ1dpdGhTcGFjZSh0aGlzLl9hcmlhRGVzY3JpYmVkQnksZS5pZCk7ZWxzZXt2YXIgbj0icGFwZXItaW5wdXQtYWRkLW9uLSIrRGEuTmV4dEFkZG9uSUQrKztlLmlkPW4sdGhpcy5fYXJpYURlc2NyaWJlZEJ5PXRoaXMuX2FwcGVuZFN0cmluZ1dpdGhTcGFjZSh0aGlzLl9hcmlhRGVzY3JpYmVkQnksbil9fSx2YWxpZGF0ZTpmdW5jdGlvbigpe3JldHVybiB0aGlzLmlucHV0RWxlbWVudC52YWxpZGF0ZSgpfSxfZm9jdXNCbHVySGFuZGxlcjpmdW5jdGlvbih0KXtXby5fZm9jdXNCbHVySGFuZGxlci5jYWxsKHRoaXMsdCksdGhpcy5mb2N1c2VkJiYhdGhpcy5fc2hpZnRUYWJQcmVzc2VkJiZ0aGlzLl9mb2N1c2FibGVFbGVtZW50JiZ0aGlzLl9mb2N1c2FibGVFbGVtZW50LmZvY3VzKCl9LF9vblNoaWZ0VGFiRG93bjpmdW5jdGlvbih0KXt2YXIgZT10aGlzLmdldEF0dHJpYnV0ZSgidGFiaW5kZXgiKTt0aGlzLl9zaGlmdFRhYlByZXNzZWQ9ITAsdGhpcy5zZXRBdHRyaWJ1dGUoInRhYmluZGV4IiwiLTEiKSx0aGlzLmFzeW5jKChmdW5jdGlvbigpe3RoaXMuc2V0QXR0cmlidXRlKCJ0YWJpbmRleCIsZSksdGhpcy5fc2hpZnRUYWJQcmVzc2VkPSExfSksMSl9LF9oYW5kbGVBdXRvVmFsaWRhdGU6ZnVuY3Rpb24oKXt0aGlzLmF1dG9WYWxpZGF0ZSYmdGhpcy52YWxpZGF0ZSgpfSx1cGRhdGVWYWx1ZUFuZFByZXNlcnZlQ2FyZXQ6ZnVuY3Rpb24odCl7dHJ5e3ZhciBlPXRoaXMuaW5wdXRFbGVtZW50LnNlbGVjdGlvblN0YXJ0O3RoaXMudmFsdWU9dCx0aGlzLmlucHV0RWxlbWVudC5zZWxlY3Rpb25TdGFydD1lLHRoaXMuaW5wdXRFbGVtZW50LnNlbGVjdGlvbkVuZD1lfWNhdGNoKGUpe3RoaXMudmFsdWU9dH19LF9jb21wdXRlQWx3YXlzRmxvYXRMYWJlbDpmdW5jdGlvbih0LGUpe3JldHVybiBlfHx0fSxfdXBkYXRlQXJpYUxhYmVsbGVkQnk6ZnVuY3Rpb24oKXt2YXIgdCxlPXFpKHRoaXMucm9vdCkucXVlcnlTZWxlY3RvcigibGFiZWwiKTtlPyhlLmlkP3Q9ZS5pZDoodD0icGFwZXItaW5wdXQtbGFiZWwtIitEYS5OZXh0TGFiZWxJRCsrLGUuaWQ9dCksdGhpcy5fYXJpYUxhYmVsbGVkQnk9dCk6dGhpcy5fYXJpYUxhYmVsbGVkQnk9IiJ9LF9nZW5lcmF0ZUlucHV0SWQ6ZnVuY3Rpb24oKXt0aGlzLl9pbnB1dElkJiYiIiE9PXRoaXMuX2lucHV0SWR8fCh0aGlzLl9pbnB1dElkPSJpbnB1dC0iK0RhLk5leHRJbnB1dElEKyspfSxfb25DaGFuZ2U6ZnVuY3Rpb24odCl7dGhpcy5zaGFkb3dSb290JiZ0aGlzLmZpcmUodC50eXBlLHtzb3VyY2VFdmVudDp0fSx7bm9kZTp0aGlzLGJ1YmJsZXM6dC5idWJibGVzLGNhbmNlbGFibGU6dC5jYW5jZWxhYmxlfSl9LF9hdXRvZm9jdXNDaGFuZ2VkOmZ1bmN0aW9uKCl7aWYodGhpcy5hdXRvZm9jdXMmJnRoaXMuX2ZvY3VzYWJsZUVsZW1lbnQpe3ZhciB0PWRvY3VtZW50LmFjdGl2ZUVsZW1lbnQ7dCBpbnN0YW5jZW9mIEhUTUxFbGVtZW50JiZ0IT09ZG9jdW1lbnQuYm9keSYmdCE9PWRvY3VtZW50LmRvY3VtZW50RWxlbWVudHx8dGhpcy5fZm9jdXNhYmxlRWxlbWVudC5mb2N1cygpfX19LEhhPVtXbyxSbyxCYV07Ci8qKgogICAgQGxpY2Vuc2UKICAgIENvcHlyaWdodCAoYykgMjAxNSBUaGUgUG9seW1lciBQcm9qZWN0IEF1dGhvcnMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgICBUaGlzIGNvZGUgbWF5IG9ubHkgYmUgdXNlZCB1bmRlciB0aGUgQlNEIHN0eWxlIGxpY2Vuc2UgZm91bmQgYXQKICAgIGh0dHA6Ly9wb2x5bWVyLmdpdGh1Yi5pby9MSUNFTlNFLnR4dCBUaGUgY29tcGxldGUgc2V0IG9mIGF1dGhvcnMgbWF5IGJlIGZvdW5kIGF0CiAgICBodHRwOi8vcG9seW1lci5naXRodWIuaW8vQVVUSE9SUy50eHQgVGhlIGNvbXBsZXRlIHNldCBvZiBjb250cmlidXRvcnMgbWF5IGJlCiAgICBmb3VuZCBhdCBodHRwOi8vcG9seW1lci5naXRodWIuaW8vQ09OVFJJQlVUT1JTLnR4dCBDb2RlIGRpc3RyaWJ1dGVkIGJ5IEdvb2dsZSBhcwogICAgcGFydCBvZiB0aGUgcG9seW1lciBwcm9qZWN0IGlzIGFsc28gc3ViamVjdCB0byBhbiBhZGRpdGlvbmFsIElQIHJpZ2h0cyBncmFudAogICAgZm91bmQgYXQgaHR0cDovL3BvbHltZXIuZ2l0aHViLmlvL1BBVEVOVFMudHh0CiAgICAqLwpOcih7aXM6InBhcGVyLWlucHV0IixfdGVtcGxhdGU6X2VgCiAgICA8c3R5bGU+CiAgICAgIDpob3N0IHsKICAgICAgICBkaXNwbGF5OiBibG9jazsKICAgICAgfQoKICAgICAgOmhvc3QoW2ZvY3VzZWRdKSB7CiAgICAgICAgb3V0bGluZTogbm9uZTsKICAgICAgfQoKICAgICAgOmhvc3QoW2hpZGRlbl0pIHsKICAgICAgICBkaXNwbGF5OiBub25lICFpbXBvcnRhbnQ7CiAgICAgIH0KCiAgICAgIGlucHV0IHsKICAgICAgICAvKiBGaXJlZm94IHNldHMgYSBtaW4td2lkdGggb24gdGhlIGlucHV0LCB3aGljaCBjYW4gY2F1c2UgbGF5b3V0IGlzc3VlcyAqLwogICAgICAgIG1pbi13aWR0aDogMDsKICAgICAgfQoKICAgICAgLyogSW4gMS54LCB0aGUgPGlucHV0PiBpcyBkaXN0cmlidXRlZCB0byBwYXBlci1pbnB1dC1jb250YWluZXIsIHdoaWNoIHN0eWxlcyBpdC4KICAgICAgSW4gMi54IHRoZSA8aXJvbi1pbnB1dD4gaXMgZGlzdHJpYnV0ZWQgdG8gcGFwZXItaW5wdXQtY29udGFpbmVyLCB3aGljaCBzdHlsZXMKICAgICAgaXQsIGJ1dCBpbiBvcmRlciBmb3IgdGhpcyB0byB3b3JrIGNvcnJlY3RseSwgd2UgbmVlZCB0byByZXNldCBzb21lCiAgICAgIG9mIHRoZSBuYXRpdmUgaW5wdXQncyBwcm9wZXJ0aWVzIHRvIGluaGVyaXQgKGZyb20gdGhlIGlyb24taW5wdXQpICovCiAgICAgIGlyb24taW5wdXQgPiBpbnB1dCB7CiAgICAgICAgQGFwcGx5IC0tcGFwZXItaW5wdXQtY29udGFpbmVyLXNoYXJlZC1pbnB1dC1zdHlsZTsKICAgICAgICBmb250LWZhbWlseTogaW5oZXJpdDsKICAgICAgICBmb250LXdlaWdodDogaW5oZXJpdDsKICAgICAgICBmb250LXNpemU6IGluaGVyaXQ7CiAgICAgICAgbGV0dGVyLXNwYWNpbmc6IGluaGVyaXQ7CiAgICAgICAgd29yZC1zcGFjaW5nOiBpbmhlcml0OwogICAgICAgIGxpbmUtaGVpZ2h0OiBpbmhlcml0OwogICAgICAgIHRleHQtc2hhZG93OiBpbmhlcml0OwogICAgICAgIGNvbG9yOiBpbmhlcml0OwogICAgICAgIGN1cnNvcjogaW5oZXJpdDsKICAgICAgfQoKICAgICAgaW5wdXQ6ZGlzYWJsZWQgewogICAgICAgIEBhcHBseSAtLXBhcGVyLWlucHV0LWNvbnRhaW5lci1pbnB1dC1kaXNhYmxlZDsKICAgICAgfQoKICAgICAgaW5wdXQ6Oi13ZWJraXQtb3V0ZXItc3Bpbi1idXR0b24sCiAgICAgIGlucHV0Ojotd2Via2l0LWlubmVyLXNwaW4tYnV0dG9uIHsKICAgICAgICBAYXBwbHkgLS1wYXBlci1pbnB1dC1jb250YWluZXItaW5wdXQtd2Via2l0LXNwaW5uZXI7CiAgICAgIH0KCiAgICAgIGlucHV0Ojotd2Via2l0LWNsZWFyLWJ1dHRvbiB7CiAgICAgICAgQGFwcGx5IC0tcGFwZXItaW5wdXQtY29udGFpbmVyLWlucHV0LXdlYmtpdC1jbGVhcjsKICAgICAgfQoKICAgICAgaW5wdXQ6Oi13ZWJraXQtY2FsZW5kYXItcGlja2VyLWluZGljYXRvciB7CiAgICAgICAgQGFwcGx5IC0tcGFwZXItaW5wdXQtY29udGFpbmVyLWlucHV0LXdlYmtpdC1jYWxlbmRhci1waWNrZXItaW5kaWNhdG9yOwogICAgICB9CgogICAgICBpbnB1dDo6LXdlYmtpdC1pbnB1dC1wbGFjZWhvbGRlciB7CiAgICAgICAgY29sb3I6IHZhcigtLXBhcGVyLWlucHV0LWNvbnRhaW5lci1jb2xvciwgdmFyKC0tc2Vjb25kYXJ5LXRleHQtY29sb3IpKTsKICAgICAgfQoKICAgICAgaW5wdXQ6LW1vei1wbGFjZWhvbGRlciB7CiAgICAgICAgY29sb3I6IHZhcigtLXBhcGVyLWlucHV0LWNvbnRhaW5lci1jb2xvciwgdmFyKC0tc2Vjb25kYXJ5LXRleHQtY29sb3IpKTsKICAgICAgfQoKICAgICAgaW5wdXQ6Oi1tb3otcGxhY2Vob2xkZXIgewogICAgICAgIGNvbG9yOiB2YXIoLS1wYXBlci1pbnB1dC1jb250YWluZXItY29sb3IsIHZhcigtLXNlY29uZGFyeS10ZXh0LWNvbG9yKSk7CiAgICAgIH0KCiAgICAgIGlucHV0OjotbXMtY2xlYXIgewogICAgICAgIEBhcHBseSAtLXBhcGVyLWlucHV0LWNvbnRhaW5lci1tcy1jbGVhcjsKICAgICAgfQoKICAgICAgaW5wdXQ6Oi1tcy1yZXZlYWwgewogICAgICAgIEBhcHBseSAtLXBhcGVyLWlucHV0LWNvbnRhaW5lci1tcy1yZXZlYWw7CiAgICAgIH0KCiAgICAgIGlucHV0Oi1tcy1pbnB1dC1wbGFjZWhvbGRlciB7CiAgICAgICAgY29sb3I6IHZhcigtLXBhcGVyLWlucHV0LWNvbnRhaW5lci1jb2xvciwgdmFyKC0tc2Vjb25kYXJ5LXRleHQtY29sb3IpKTsKICAgICAgfQoKICAgICAgbGFiZWwgewogICAgICAgIHBvaW50ZXItZXZlbnRzOiBub25lOwogICAgICB9CiAgICA8L3N0eWxlPgoKICAgIDxwYXBlci1pbnB1dC1jb250YWluZXIgaWQ9ImNvbnRhaW5lciIgbm8tbGFiZWwtZmxvYXQ9Iltbbm9MYWJlbEZsb2F0XV0iIGFsd2F5cy1mbG9hdC1sYWJlbD0iW1tfY29tcHV0ZUFsd2F5c0Zsb2F0TGFiZWwoYWx3YXlzRmxvYXRMYWJlbCxwbGFjZWhvbGRlcildXSIgYXV0by12YWxpZGF0ZSQ9IltbYXV0b1ZhbGlkYXRlXV0iIGRpc2FibGVkJD0iW1tkaXNhYmxlZF1dIiBpbnZhbGlkPSJbW2ludmFsaWRdXSI+CgogICAgICA8c2xvdCBuYW1lPSJwcmVmaXgiIHNsb3Q9InByZWZpeCI+PC9zbG90PgoKICAgICAgPGxhYmVsIGhpZGRlbiQ9IltbIWxhYmVsXV0iIGFyaWEtaGlkZGVuPSJ0cnVlIiBmb3IkPSJbW19pbnB1dElkXV0iIHNsb3Q9ImxhYmVsIj5bW2xhYmVsXV08L2xhYmVsPgoKICAgICAgPCEtLSBOZWVkIHRvIGJpbmQgbWF4bGVuZ3RoIHNvIHRoYXQgdGhlIHBhcGVyLWlucHV0LWNoYXItY291bnRlciB3b3JrcyBjb3JyZWN0bHkgLS0+CiAgICAgIDxpcm9uLWlucHV0IGJpbmQtdmFsdWU9Int7dmFsdWV9fSIgc2xvdD0iaW5wdXQiIGNsYXNzPSJpbnB1dC1lbGVtZW50IiBpZCQ9IltbX2lucHV0SWRdXSIgbWF4bGVuZ3RoJD0iW1ttYXhsZW5ndGhdXSIgYWxsb3dlZC1wYXR0ZXJuPSJbW2FsbG93ZWRQYXR0ZXJuXV0iIGludmFsaWQ9Int7aW52YWxpZH19IiB2YWxpZGF0b3I9IltbdmFsaWRhdG9yXV0iPgogICAgICAgIDxpbnB1dCBhcmlhLWxhYmVsbGVkYnkkPSJbW19hcmlhTGFiZWxsZWRCeV1dIiBhcmlhLWRlc2NyaWJlZGJ5JD0iW1tfYXJpYURlc2NyaWJlZEJ5XV0iIGRpc2FibGVkJD0iW1tkaXNhYmxlZF1dIiB0aXRsZSQ9IltbdGl0bGVdXSIgdHlwZSQ9IltbdHlwZV1dIiBwYXR0ZXJuJD0iW1twYXR0ZXJuXV0iIHJlcXVpcmVkJD0iW1tyZXF1aXJlZF1dIiBhdXRvY29tcGxldGUkPSJbW2F1dG9jb21wbGV0ZV1dIiBhdXRvZm9jdXMkPSJbW2F1dG9mb2N1c11dIiBpbnB1dG1vZGUkPSJbW2lucHV0bW9kZV1dIiBtaW5sZW5ndGgkPSJbW21pbmxlbmd0aF1dIiBtYXhsZW5ndGgkPSJbW21heGxlbmd0aF1dIiBtaW4kPSJbW21pbl1dIiBtYXgkPSJbW21heF1dIiBzdGVwJD0iW1tzdGVwXV0iIG5hbWUkPSJbW25hbWVdXSIgcGxhY2Vob2xkZXIkPSJbW3BsYWNlaG9sZGVyXV0iIHJlYWRvbmx5JD0iW1tyZWFkb25seV1dIiBsaXN0JD0iW1tsaXN0XV0iIHNpemUkPSJbW3NpemVdXSIgYXV0b2NhcGl0YWxpemUkPSJbW2F1dG9jYXBpdGFsaXplXV0iIGF1dG9jb3JyZWN0JD0iW1thdXRvY29ycmVjdF1dIiBvbi1jaGFuZ2U9Il9vbkNoYW5nZSIgdGFiaW5kZXgkPSJbW3RhYkluZGV4XV0iIGF1dG9zYXZlJD0iW1thdXRvc2F2ZV1dIiByZXN1bHRzJD0iW1tyZXN1bHRzXV0iIGFjY2VwdCQ9IltbYWNjZXB0XV0iIG11bHRpcGxlJD0iW1ttdWx0aXBsZV1dIiByb2xlJD0iW1tpbnB1dFJvbGVdXSIgYXJpYS1oYXNwb3B1cCQ9IltbaW5wdXRBcmlhSGFzcG9wdXBdXSI+CiAgICAgIDwvaXJvbi1pbnB1dD4KCiAgICAgIDxzbG90IG5hbWU9InN1ZmZpeCIgc2xvdD0ic3VmZml4Ij48L3Nsb3Q+CgogICAgICA8dGVtcGxhdGUgaXM9ImRvbS1pZiIgaWY9IltbZXJyb3JNZXNzYWdlXV0iPgogICAgICAgIDxwYXBlci1pbnB1dC1lcnJvciBhcmlhLWxpdmU9ImFzc2VydGl2ZSIgc2xvdD0iYWRkLW9uIj5bW2Vycm9yTWVzc2FnZV1dPC9wYXBlci1pbnB1dC1lcnJvcj4KICAgICAgPC90ZW1wbGF0ZT4KCiAgICAgIDx0ZW1wbGF0ZSBpcz0iZG9tLWlmIiBpZj0iW1tjaGFyQ291bnRlcl1dIj4KICAgICAgICA8cGFwZXItaW5wdXQtY2hhci1jb3VudGVyIHNsb3Q9ImFkZC1vbiI+PC9wYXBlci1pbnB1dC1jaGFyLWNvdW50ZXI+CiAgICAgIDwvdGVtcGxhdGU+CgogICAgPC9wYXBlci1pbnB1dC1jb250YWluZXI+CiAgYCxiZWhhdmlvcnM6W0hhLGlhXSxwcm9wZXJ0aWVzOnt2YWx1ZTp7dHlwZTpTdHJpbmd9LGlucHV0Um9sZTp7dHlwZTpTdHJpbmcsdmFsdWU6dm9pZCAwfSxpbnB1dEFyaWFIYXNwb3B1cDp7dHlwZTpTdHJpbmcsdmFsdWU6dm9pZCAwfX0sZ2V0IF9mb2N1c2FibGVFbGVtZW50KCl7cmV0dXJuIHRoaXMuaW5wdXRFbGVtZW50Ll9pbnB1dEVsZW1lbnR9LGxpc3RlbmVyczp7Imlyb24taW5wdXQtcmVhZHkiOiJfb25Jcm9uSW5wdXRSZWFkeSJ9LF9vbklyb25JbnB1dFJlYWR5OmZ1bmN0aW9uKCl7dGhpcy4kLm5hdGl2ZUlucHV0fHwodGhpcy4kLm5hdGl2ZUlucHV0PXRoaXMuJCQoImlucHV0IikpLHRoaXMuaW5wdXRFbGVtZW50JiYtMSE9PXRoaXMuX3R5cGVzVGhhdEhhdmVUZXh0LmluZGV4T2YodGhpcy4kLm5hdGl2ZUlucHV0LnR5cGUpJiYodGhpcy5hbHdheXNGbG9hdExhYmVsPSEwKSx0aGlzLmlucHV0RWxlbWVudC5iaW5kVmFsdWUmJnRoaXMuJC5jb250YWluZXIuX2hhbmRsZVZhbHVlQW5kQXV0b1ZhbGlkYXRlKHRoaXMuaW5wdXRFbGVtZW50KX19KSwKLyoqCiAgICBAbGljZW5zZQogICAgQ29weXJpZ2h0IChjKSAyMDE1IFRoZSBQb2x5bWVyIFByb2plY3QgQXV0aG9ycy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAgIFRoaXMgY29kZSBtYXkgb25seSBiZSB1c2VkIHVuZGVyIHRoZSBCU0Qgc3R5bGUgbGljZW5zZSBmb3VuZCBhdAogICAgaHR0cDovL3BvbHltZXIuZ2l0aHViLmlvL0xJQ0VOU0UudHh0IFRoZSBjb21wbGV0ZSBzZXQgb2YgYXV0aG9ycyBtYXkgYmUgZm91bmQgYXQKICAgIGh0dHA6Ly9wb2x5bWVyLmdpdGh1Yi5pby9BVVRIT1JTLnR4dCBUaGUgY29tcGxldGUgc2V0IG9mIGNvbnRyaWJ1dG9ycyBtYXkgYmUKICAgIGZvdW5kIGF0IGh0dHA6Ly9wb2x5bWVyLmdpdGh1Yi5pby9DT05UUklCVVRPUlMudHh0IENvZGUgZGlzdHJpYnV0ZWQgYnkgR29vZ2xlIGFzCiAgICBwYXJ0IG9mIHRoZSBwb2x5bWVyIHByb2plY3QgaXMgYWxzbyBzdWJqZWN0IHRvIGFuIGFkZGl0aW9uYWwgSVAgcmlnaHRzIGdyYW50CiAgICBmb3VuZCBhdCBodHRwOi8vcG9seW1lci5naXRodWIuaW8vUEFURU5UUy50eHQKICAgICovCk5yKHtfdGVtcGxhdGU6X2VgCiAgICA8c3R5bGU+CiAgICAgIDpob3N0IHsKICAgICAgICBwb3NpdGlvbjogZml4ZWQ7CiAgICAgIH0KCiAgICAgICNjb250ZW50V3JhcHBlciA6OnNsb3R0ZWQoKikgewogICAgICAgIG92ZXJmbG93OiBhdXRvOwogICAgICB9CgogICAgICAjY29udGVudFdyYXBwZXIuYW5pbWF0aW5nIDo6c2xvdHRlZCgqKSB7CiAgICAgICAgb3ZlcmZsb3c6IGhpZGRlbjsKICAgICAgICBwb2ludGVyLWV2ZW50czogbm9uZTsKICAgICAgfQogICAgPC9zdHlsZT4KCiAgICA8ZGl2IGlkPSJjb250ZW50V3JhcHBlciI+CiAgICAgIDxzbG90IGlkPSJjb250ZW50IiBuYW1lPSJkcm9wZG93bi1jb250ZW50Ij48L3Nsb3Q+CiAgICA8L2Rpdj4KYCxpczoiaXJvbi1kcm9wZG93biIsYmVoYXZpb3JzOltXbyxSbyxDYSxOYV0scHJvcGVydGllczp7aG9yaXpvbnRhbEFsaWduOnt0eXBlOlN0cmluZyx2YWx1ZToibGVmdCIscmVmbGVjdFRvQXR0cmlidXRlOiEwfSx2ZXJ0aWNhbEFsaWduOnt0eXBlOlN0cmluZyx2YWx1ZToidG9wIixyZWZsZWN0VG9BdHRyaWJ1dGU6ITB9LG9wZW5BbmltYXRpb25Db25maWc6e3R5cGU6T2JqZWN0fSxjbG9zZUFuaW1hdGlvbkNvbmZpZzp7dHlwZTpPYmplY3R9LGZvY3VzVGFyZ2V0Ont0eXBlOk9iamVjdH0sbm9BbmltYXRpb25zOnt0eXBlOkJvb2xlYW4sdmFsdWU6ITF9LGFsbG93T3V0c2lkZVNjcm9sbDp7dHlwZTpCb29sZWFuLHZhbHVlOiExLG9ic2VydmVyOiJfYWxsb3dPdXRzaWRlU2Nyb2xsQ2hhbmdlZCJ9fSxsaXN0ZW5lcnM6eyJuZW9uLWFuaW1hdGlvbi1maW5pc2giOiJfb25OZW9uQW5pbWF0aW9uRmluaXNoIn0sb2JzZXJ2ZXJzOlsiX3VwZGF0ZU92ZXJsYXlQb3NpdGlvbihwb3NpdGlvblRhcmdldCwgdmVydGljYWxBbGlnbiwgaG9yaXpvbnRhbEFsaWduLCB2ZXJ0aWNhbE9mZnNldCwgaG9yaXpvbnRhbE9mZnNldCkiXSxnZXQgY29udGFpbmVkRWxlbWVudCgpe2Zvcih2YXIgdD1xaSh0aGlzLiQuY29udGVudCkuZ2V0RGlzdHJpYnV0ZWROb2RlcygpLGU9MCxuPXQubGVuZ3RoO2U8bjtlKyspaWYodFtlXS5ub2RlVHlwZT09PU5vZGUuRUxFTUVOVF9OT0RFKXJldHVybiB0W2VdfSxyZWFkeTpmdW5jdGlvbigpe3RoaXMuc2Nyb2xsQWN0aW9ufHwodGhpcy5zY3JvbGxBY3Rpb249dGhpcy5hbGxvd091dHNpZGVTY3JvbGw/InJlZml0IjoibG9jayIpLHRoaXMuX3JlYWRpZWQ9ITB9LGF0dGFjaGVkOmZ1bmN0aW9uKCl7dGhpcy5zaXppbmdUYXJnZXQmJnRoaXMuc2l6aW5nVGFyZ2V0IT09dGhpc3x8KHRoaXMuc2l6aW5nVGFyZ2V0PXRoaXMuY29udGFpbmVkRWxlbWVudHx8dGhpcyl9LGRldGFjaGVkOmZ1bmN0aW9uKCl7dGhpcy5jYW5jZWxBbmltYXRpb24oKX0sX29wZW5lZENoYW5nZWQ6ZnVuY3Rpb24oKXt0aGlzLm9wZW5lZCYmdGhpcy5kaXNhYmxlZD90aGlzLmNhbmNlbCgpOih0aGlzLmNhbmNlbEFuaW1hdGlvbigpLHRoaXMuX3VwZGF0ZUFuaW1hdGlvbkNvbmZpZygpLFRhLl9vcGVuZWRDaGFuZ2VkLmFwcGx5KHRoaXMsYXJndW1lbnRzKSl9LF9yZW5kZXJPcGVuZWQ6ZnVuY3Rpb24oKXshdGhpcy5ub0FuaW1hdGlvbnMmJnRoaXMuYW5pbWF0aW9uQ29uZmlnLm9wZW4/KHRoaXMuJC5jb250ZW50V3JhcHBlci5jbGFzc0xpc3QuYWRkKCJhbmltYXRpbmciKSx0aGlzLnBsYXlBbmltYXRpb24oIm9wZW4iKSk6VGEuX3JlbmRlck9wZW5lZC5hcHBseSh0aGlzLGFyZ3VtZW50cyl9LF9yZW5kZXJDbG9zZWQ6ZnVuY3Rpb24oKXshdGhpcy5ub0FuaW1hdGlvbnMmJnRoaXMuYW5pbWF0aW9uQ29uZmlnLmNsb3NlPyh0aGlzLiQuY29udGVudFdyYXBwZXIuY2xhc3NMaXN0LmFkZCgiYW5pbWF0aW5nIiksdGhpcy5wbGF5QW5pbWF0aW9uKCJjbG9zZSIpKTpUYS5fcmVuZGVyQ2xvc2VkLmFwcGx5KHRoaXMsYXJndW1lbnRzKX0sX29uTmVvbkFuaW1hdGlvbkZpbmlzaDpmdW5jdGlvbigpe3RoaXMuJC5jb250ZW50V3JhcHBlci5jbGFzc0xpc3QucmVtb3ZlKCJhbmltYXRpbmciKSx0aGlzLm9wZW5lZD90aGlzLl9maW5pc2hSZW5kZXJPcGVuZWQoKTp0aGlzLl9maW5pc2hSZW5kZXJDbG9zZWQoKX0sX3VwZGF0ZUFuaW1hdGlvbkNvbmZpZzpmdW5jdGlvbigpe2Zvcih2YXIgdD10aGlzLmNvbnRhaW5lZEVsZW1lbnQsZT1bXS5jb25jYXQodGhpcy5vcGVuQW5pbWF0aW9uQ29uZmlnfHxbXSkuY29uY2F0KHRoaXMuY2xvc2VBbmltYXRpb25Db25maWd8fFtdKSxuPTA7bjxlLmxlbmd0aDtuKyspZVtuXS5ub2RlPXQ7dGhpcy5hbmltYXRpb25Db25maWc9e29wZW46dGhpcy5vcGVuQW5pbWF0aW9uQ29uZmlnLGNsb3NlOnRoaXMuY2xvc2VBbmltYXRpb25Db25maWd9fSxfdXBkYXRlT3ZlcmxheVBvc2l0aW9uOmZ1bmN0aW9uKCl7dGhpcy5pc0F0dGFjaGVkJiZ0aGlzLm5vdGlmeVJlc2l6ZSgpfSxfYWxsb3dPdXRzaWRlU2Nyb2xsQ2hhbmdlZDpmdW5jdGlvbih0KXt0aGlzLl9yZWFkaWVkJiYodD90aGlzLnNjcm9sbEFjdGlvbiYmImxvY2siIT09dGhpcy5zY3JvbGxBY3Rpb258fCh0aGlzLnNjcm9sbEFjdGlvbj0icmVmaXQiKTp0aGlzLnNjcm9sbEFjdGlvbj0ibG9jayIpfSxfYXBwbHlGb2N1czpmdW5jdGlvbigpe3ZhciB0PXRoaXMuZm9jdXNUYXJnZXR8fHRoaXMuY29udGFpbmVkRWxlbWVudDt0JiZ0aGlzLm9wZW5lZCYmIXRoaXMubm9BdXRvRm9jdXM/dC5mb2N1cygpOlRhLl9hcHBseUZvY3VzLmFwcGx5KHRoaXMsYXJndW1lbnRzKX19KTsKLyoqCiAgICBAbGljZW5zZQogICAgQ29weXJpZ2h0IChjKSAyMDE1IFRoZSBQb2x5bWVyIFByb2plY3QgQXV0aG9ycy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAgIFRoaXMgY29kZSBtYXkgb25seSBiZSB1c2VkIHVuZGVyIHRoZSBCU0Qgc3R5bGUgbGljZW5zZSBmb3VuZCBhdAogICAgaHR0cDovL3BvbHltZXIuZ2l0aHViLmlvL0xJQ0VOU0UudHh0IFRoZSBjb21wbGV0ZSBzZXQgb2YgYXV0aG9ycyBtYXkgYmUgZm91bmQgYXQKICAgIGh0dHA6Ly9wb2x5bWVyLmdpdGh1Yi5pby9BVVRIT1JTLnR4dCBUaGUgY29tcGxldGUgc2V0IG9mIGNvbnRyaWJ1dG9ycyBtYXkgYmUKICAgIGZvdW5kIGF0IGh0dHA6Ly9wb2x5bWVyLmdpdGh1Yi5pby9DT05UUklCVVRPUlMudHh0IENvZGUgZGlzdHJpYnV0ZWQgYnkgR29vZ2xlIGFzCiAgICBwYXJ0IG9mIHRoZSBwb2x5bWVyIHByb2plY3QgaXMgYWxzbyBzdWJqZWN0IHRvIGFuIGFkZGl0aW9uYWwgSVAgcmlnaHRzIGdyYW50CiAgICBmb3VuZCBhdCBodHRwOi8vcG9seW1lci5naXRodWIuaW8vUEFURU5UUy50eHQKICAgICovCmNvbnN0IEZhPXtwcm9wZXJ0aWVzOnthbmltYXRpb25UaW1pbmc6e3R5cGU6T2JqZWN0LHZhbHVlOmZ1bmN0aW9uKCl7cmV0dXJue2R1cmF0aW9uOjUwMCxlYXNpbmc6ImN1YmljLWJlemllcigwLjQsIDAsIDAuMiwgMSkiLGZpbGw6ImJvdGgifX19fSxpc05lb25BbmltYXRpb246ITAsY3JlYXRlZDpmdW5jdGlvbigpe2RvY3VtZW50LmJvZHkuYW5pbWF0ZXx8Y29uc29sZS53YXJuKCJObyB3ZWIgYW5pbWF0aW9ucyBkZXRlY3RlZC4gVGhpcyBlbGVtZW50IHdpbGwgbm90IGZ1bmN0aW9uIHdpdGhvdXQgYSB3ZWIgYW5pbWF0aW9ucyBwb2x5ZmlsbC4iKX0sdGltaW5nRnJvbUNvbmZpZzpmdW5jdGlvbih0KXtpZih0LnRpbWluZylmb3IodmFyIGUgaW4gdC50aW1pbmcpdGhpcy5hbmltYXRpb25UaW1pbmdbZV09dC50aW1pbmdbZV07cmV0dXJuIHRoaXMuYW5pbWF0aW9uVGltaW5nfSxzZXRQcmVmaXhlZFByb3BlcnR5OmZ1bmN0aW9uKHQsZSxuKXtmb3IodmFyIGkscj17dHJhbnNmb3JtOlsid2Via2l0VHJhbnNmb3JtIl0sdHJhbnNmb3JtT3JpZ2luOlsibW96VHJhbnNmb3JtT3JpZ2luIiwid2Via2l0VHJhbnNmb3JtT3JpZ2luIl19W2VdLG89MDtpPXJbb107bysrKXQuc3R5bGVbaV09bjt0LnN0eWxlW2VdPW59LGNvbXBsZXRlOmZ1bmN0aW9uKHQpe319OwovKioKICAgIEBsaWNlbnNlCiAgICBDb3B5cmlnaHQgKGMpIDIwMTUgVGhlIFBvbHltZXIgUHJvamVjdCBBdXRob3JzLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICAgVGhpcyBjb2RlIG1heSBvbmx5IGJlIHVzZWQgdW5kZXIgdGhlIEJTRCBzdHlsZSBsaWNlbnNlIGZvdW5kIGF0CiAgICBodHRwOi8vcG9seW1lci5naXRodWIuaW8vTElDRU5TRS50eHQgVGhlIGNvbXBsZXRlIHNldCBvZiBhdXRob3JzIG1heSBiZSBmb3VuZCBhdAogICAgaHR0cDovL3BvbHltZXIuZ2l0aHViLmlvL0FVVEhPUlMudHh0IFRoZSBjb21wbGV0ZSBzZXQgb2YgY29udHJpYnV0b3JzIG1heSBiZQogICAgZm91bmQgYXQgaHR0cDovL3BvbHltZXIuZ2l0aHViLmlvL0NPTlRSSUJVVE9SUy50eHQgQ29kZSBkaXN0cmlidXRlZCBieSBHb29nbGUgYXMKICAgIHBhcnQgb2YgdGhlIHBvbHltZXIgcHJvamVjdCBpcyBhbHNvIHN1YmplY3QgdG8gYW4gYWRkaXRpb25hbCBJUCByaWdodHMgZ3JhbnQKICAgIGZvdW5kIGF0IGh0dHA6Ly9wb2x5bWVyLmdpdGh1Yi5pby9QQVRFTlRTLnR4dAogICAgKi9Ocih7aXM6ImZhZGUtaW4tYW5pbWF0aW9uIixiZWhhdmlvcnM6W0ZhXSxjb25maWd1cmU6ZnVuY3Rpb24odCl7cmV0dXJuIHRoaXMuX2VmZmVjdD1uZXcgS2V5ZnJhbWVFZmZlY3QodC5ub2RlLFt7b3BhY2l0eToiMCJ9LHtvcGFjaXR5OiIxIn1dLHRoaXMudGltaW5nRnJvbUNvbmZpZyh0KSksdGhpcy5fZWZmZWN0fX0pLAovKioKICAgIEBsaWNlbnNlCiAgICBDb3B5cmlnaHQgKGMpIDIwMTUgVGhlIFBvbHltZXIgUHJvamVjdCBBdXRob3JzLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICAgVGhpcyBjb2RlIG1heSBvbmx5IGJlIHVzZWQgdW5kZXIgdGhlIEJTRCBzdHlsZSBsaWNlbnNlIGZvdW5kIGF0CiAgICBodHRwOi8vcG9seW1lci5naXRodWIuaW8vTElDRU5TRS50eHQgVGhlIGNvbXBsZXRlIHNldCBvZiBhdXRob3JzIG1heSBiZSBmb3VuZCBhdAogICAgaHR0cDovL3BvbHltZXIuZ2l0aHViLmlvL0FVVEhPUlMudHh0IFRoZSBjb21wbGV0ZSBzZXQgb2YgY29udHJpYnV0b3JzIG1heSBiZQogICAgZm91bmQgYXQgaHR0cDovL3BvbHltZXIuZ2l0aHViLmlvL0NPTlRSSUJVVE9SUy50eHQgQ29kZSBkaXN0cmlidXRlZCBieSBHb29nbGUgYXMKICAgIHBhcnQgb2YgdGhlIHBvbHltZXIgcHJvamVjdCBpcyBhbHNvIHN1YmplY3QgdG8gYW4gYWRkaXRpb25hbCBJUCByaWdodHMgZ3JhbnQKICAgIGZvdW5kIGF0IGh0dHA6Ly9wb2x5bWVyLmdpdGh1Yi5pby9QQVRFTlRTLnR4dAogICAgKi8KTnIoe2lzOiJmYWRlLW91dC1hbmltYXRpb24iLGJlaGF2aW9yczpbRmFdLGNvbmZpZ3VyZTpmdW5jdGlvbih0KXtyZXR1cm4gdGhpcy5fZWZmZWN0PW5ldyBLZXlmcmFtZUVmZmVjdCh0Lm5vZGUsW3tvcGFjaXR5OiIxIn0se29wYWNpdHk6IjAifV0sdGhpcy50aW1pbmdGcm9tQ29uZmlnKHQpKSx0aGlzLl9lZmZlY3R9fSksCi8qKgogICAgQGxpY2Vuc2UKICAgIENvcHlyaWdodCAoYykgMjAxNSBUaGUgUG9seW1lciBQcm9qZWN0IEF1dGhvcnMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgICBUaGlzIGNvZGUgbWF5IG9ubHkgYmUgdXNlZCB1bmRlciB0aGUgQlNEIHN0eWxlIGxpY2Vuc2UgZm91bmQgYXQKICAgIGh0dHA6Ly9wb2x5bWVyLmdpdGh1Yi5pby9MSUNFTlNFLnR4dCBUaGUgY29tcGxldGUgc2V0IG9mIGF1dGhvcnMgbWF5IGJlIGZvdW5kIGF0CiAgICBodHRwOi8vcG9seW1lci5naXRodWIuaW8vQVVUSE9SUy50eHQgVGhlIGNvbXBsZXRlIHNldCBvZiBjb250cmlidXRvcnMgbWF5IGJlCiAgICBmb3VuZCBhdCBodHRwOi8vcG9seW1lci5naXRodWIuaW8vQ09OVFJJQlVUT1JTLnR4dCBDb2RlIGRpc3RyaWJ1dGVkIGJ5IEdvb2dsZSBhcwogICAgcGFydCBvZiB0aGUgcG9seW1lciBwcm9qZWN0IGlzIGFsc28gc3ViamVjdCB0byBhbiBhZGRpdGlvbmFsIElQIHJpZ2h0cyBncmFudAogICAgZm91bmQgYXQgaHR0cDovL3BvbHltZXIuZ2l0aHViLmlvL1BBVEVOVFMudHh0CiAgICAqLwpOcih7aXM6InBhcGVyLW1lbnUtZ3Jvdy1oZWlnaHQtYW5pbWF0aW9uIixfdGVtcGxhdGU6bnVsbCxiZWhhdmlvcnM6W0ZhXSxjb25maWd1cmU6ZnVuY3Rpb24odCl7dmFyIGU9dC5ub2RlLG49ZS5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKS5oZWlnaHQ7cmV0dXJuIHRoaXMuX2VmZmVjdD1uZXcgS2V5ZnJhbWVFZmZlY3QoZSxbe2hlaWdodDpuLzIrInB4In0se2hlaWdodDpuKyJweCJ9XSx0aGlzLnRpbWluZ0Zyb21Db25maWcodCkpLHRoaXMuX2VmZmVjdH19KSxOcih7aXM6InBhcGVyLW1lbnUtZ3Jvdy13aWR0aC1hbmltYXRpb24iLF90ZW1wbGF0ZTpudWxsLGJlaGF2aW9yczpbRmFdLGNvbmZpZ3VyZTpmdW5jdGlvbih0KXt2YXIgZT10Lm5vZGUsbj1lLmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpLndpZHRoO3JldHVybiB0aGlzLl9lZmZlY3Q9bmV3IEtleWZyYW1lRWZmZWN0KGUsW3t3aWR0aDpuLzIrInB4In0se3dpZHRoOm4rInB4In1dLHRoaXMudGltaW5nRnJvbUNvbmZpZyh0KSksdGhpcy5fZWZmZWN0fX0pLE5yKHtpczoicGFwZXItbWVudS1zaHJpbmstd2lkdGgtYW5pbWF0aW9uIixfdGVtcGxhdGU6bnVsbCxiZWhhdmlvcnM6W0ZhXSxjb25maWd1cmU6ZnVuY3Rpb24odCl7dmFyIGU9dC5ub2RlLG49ZS5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKS53aWR0aDtyZXR1cm4gdGhpcy5fZWZmZWN0PW5ldyBLZXlmcmFtZUVmZmVjdChlLFt7d2lkdGg6bisicHgifSx7d2lkdGg6bi1uLzIwKyJweCJ9XSx0aGlzLnRpbWluZ0Zyb21Db25maWcodCkpLHRoaXMuX2VmZmVjdH19KSxOcih7aXM6InBhcGVyLW1lbnUtc2hyaW5rLWhlaWdodC1hbmltYXRpb24iLF90ZW1wbGF0ZTpudWxsLGJlaGF2aW9yczpbRmFdLGNvbmZpZ3VyZTpmdW5jdGlvbih0KXt2YXIgZT10Lm5vZGUsbj1lLmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpLmhlaWdodDtyZXR1cm4gdGhpcy5zZXRQcmVmaXhlZFByb3BlcnR5KGUsInRyYW5zZm9ybU9yaWdpbiIsIjAgMCIpLHRoaXMuX2VmZmVjdD1uZXcgS2V5ZnJhbWVFZmZlY3QoZSxbe2hlaWdodDpuKyJweCIsdHJhbnNmb3JtOiJ0cmFuc2xhdGVZKDApIn0se2hlaWdodDpuLzIrInB4Iix0cmFuc2Zvcm06InRyYW5zbGF0ZVkoLTIwcHgpIn1dLHRoaXMudGltaW5nRnJvbUNvbmZpZyh0KSksdGhpcy5fZWZmZWN0fX0pOwovKioKICAgIEBsaWNlbnNlCiAgICBDb3B5cmlnaHQgKGMpIDIwMTUgVGhlIFBvbHltZXIgUHJvamVjdCBBdXRob3JzLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICAgVGhpcyBjb2RlIG1heSBvbmx5IGJlIHVzZWQgdW5kZXIgdGhlIEJTRCBzdHlsZSBsaWNlbnNlIGZvdW5kIGF0CiAgICBodHRwOi8vcG9seW1lci5naXRodWIuaW8vTElDRU5TRS50eHQgVGhlIGNvbXBsZXRlIHNldCBvZiBhdXRob3JzIG1heSBiZSBmb3VuZCBhdAogICAgaHR0cDovL3BvbHltZXIuZ2l0aHViLmlvL0FVVEhPUlMudHh0IFRoZSBjb21wbGV0ZSBzZXQgb2YgY29udHJpYnV0b3JzIG1heSBiZQogICAgZm91bmQgYXQgaHR0cDovL3BvbHltZXIuZ2l0aHViLmlvL0NPTlRSSUJVVE9SUy50eHQgQ29kZSBkaXN0cmlidXRlZCBieSBHb29nbGUgYXMKICAgIHBhcnQgb2YgdGhlIHBvbHltZXIgcHJvamVjdCBpcyBhbHNvIHN1YmplY3QgdG8gYW4gYWRkaXRpb25hbCBJUCByaWdodHMgZ3JhbnQKICAgIGZvdW5kIGF0IGh0dHA6Ly9wb2x5bWVyLmdpdGh1Yi5pby9QQVRFTlRTLnR4dAogICAgKi8KdmFyIFZhPXtBTklNQVRJT05fQ1VCSUNfQkVaSUVSOiJjdWJpYy1iZXppZXIoLjMsLjk1LC41LDEpIixNQVhfQU5JTUFUSU9OX1RJTUVfTVM6NDAwfTtjb25zdCBqYT1Ocih7X3RlbXBsYXRlOl9lYAogICAgPHN0eWxlPgogICAgICA6aG9zdCB7CiAgICAgICAgZGlzcGxheTogaW5saW5lLWJsb2NrOwogICAgICAgIHBvc2l0aW9uOiByZWxhdGl2ZTsKICAgICAgICBwYWRkaW5nOiA4cHg7CiAgICAgICAgb3V0bGluZTogbm9uZTsKCiAgICAgICAgQGFwcGx5IC0tcGFwZXItbWVudS1idXR0b247CiAgICAgIH0KCiAgICAgIDpob3N0KFtkaXNhYmxlZF0pIHsKICAgICAgICBjdXJzb3I6IGF1dG87CiAgICAgICAgY29sb3I6IHZhcigtLWRpc2FibGVkLXRleHQtY29sb3IpOwoKICAgICAgICBAYXBwbHkgLS1wYXBlci1tZW51LWJ1dHRvbi1kaXNhYmxlZDsKICAgICAgfQoKICAgICAgaXJvbi1kcm9wZG93biB7CiAgICAgICAgQGFwcGx5IC0tcGFwZXItbWVudS1idXR0b24tZHJvcGRvd247CiAgICAgIH0KCiAgICAgIC5kcm9wZG93bi1jb250ZW50IHsKICAgICAgICBAYXBwbHkgLS1zaGFkb3ctZWxldmF0aW9uLTJkcDsKCiAgICAgICAgcG9zaXRpb246IHJlbGF0aXZlOwogICAgICAgIGJvcmRlci1yYWRpdXM6IDJweDsKICAgICAgICBiYWNrZ3JvdW5kLWNvbG9yOiB2YXIoLS1wYXBlci1tZW51LWJ1dHRvbi1kcm9wZG93bi1iYWNrZ3JvdW5kLCB2YXIoLS1wcmltYXJ5LWJhY2tncm91bmQtY29sb3IpKTsKCiAgICAgICAgQGFwcGx5IC0tcGFwZXItbWVudS1idXR0b24tY29udGVudDsKICAgICAgfQoKICAgICAgOmhvc3QoW3ZlcnRpY2FsLWFsaWduPSJ0b3AiXSkgLmRyb3Bkb3duLWNvbnRlbnQgewogICAgICAgIG1hcmdpbi1ib3R0b206IDIwcHg7CiAgICAgICAgbWFyZ2luLXRvcDogLTEwcHg7CiAgICAgICAgdG9wOiAxMHB4OwogICAgICB9CgogICAgICA6aG9zdChbdmVydGljYWwtYWxpZ249ImJvdHRvbSJdKSAuZHJvcGRvd24tY29udGVudCB7CiAgICAgICAgYm90dG9tOiAxMHB4OwogICAgICAgIG1hcmdpbi1ib3R0b206IC0xMHB4OwogICAgICAgIG1hcmdpbi10b3A6IDIwcHg7CiAgICAgIH0KCiAgICAgICN0cmlnZ2VyIHsKICAgICAgICBjdXJzb3I6IHBvaW50ZXI7CiAgICAgIH0KICAgIDwvc3R5bGU+CgogICAgPGRpdiBpZD0idHJpZ2dlciIgb24tdGFwPSJ0b2dnbGUiPgogICAgICA8c2xvdCBuYW1lPSJkcm9wZG93bi10cmlnZ2VyIj48L3Nsb3Q+CiAgICA8L2Rpdj4KCiAgICA8aXJvbi1kcm9wZG93biBpZD0iZHJvcGRvd24iIG9wZW5lZD0ie3tvcGVuZWR9fSIgaG9yaXpvbnRhbC1hbGlnbj0iW1tob3Jpem9udGFsQWxpZ25dXSIgdmVydGljYWwtYWxpZ249IltbdmVydGljYWxBbGlnbl1dIiBkeW5hbWljLWFsaWduPSJbW2R5bmFtaWNBbGlnbl1dIiBob3Jpem9udGFsLW9mZnNldD0iW1tob3Jpem9udGFsT2Zmc2V0XV0iIHZlcnRpY2FsLW9mZnNldD0iW1t2ZXJ0aWNhbE9mZnNldF1dIiBuby1vdmVybGFwPSJbW25vT3ZlcmxhcF1dIiBvcGVuLWFuaW1hdGlvbi1jb25maWc9Iltbb3BlbkFuaW1hdGlvbkNvbmZpZ11dIiBjbG9zZS1hbmltYXRpb24tY29uZmlnPSJbW2Nsb3NlQW5pbWF0aW9uQ29uZmlnXV0iIG5vLWFuaW1hdGlvbnM9Iltbbm9BbmltYXRpb25zXV0iIGZvY3VzLXRhcmdldD0iW1tfZHJvcGRvd25Db250ZW50XV0iIGFsbG93LW91dHNpZGUtc2Nyb2xsPSJbW2FsbG93T3V0c2lkZVNjcm9sbF1dIiByZXN0b3JlLWZvY3VzLW9uLWNsb3NlPSJbW3Jlc3RvcmVGb2N1c09uQ2xvc2VdXSIgb24taXJvbi1vdmVybGF5LWNhbmNlbGVkPSJfX29uSXJvbk92ZXJsYXlDYW5jZWxlZCIgZXhwYW5kLXNpemluZy10YXJnZXQtZm9yLXNjcm9sbGJhcnM9IltbZXhwYW5kU2l6aW5nVGFyZ2V0Rm9yU2Nyb2xsYmFyc11dIj4KICAgICAgPGRpdiBzbG90PSJkcm9wZG93bi1jb250ZW50IiBjbGFzcz0iZHJvcGRvd24tY29udGVudCI+CiAgICAgICAgPHNsb3QgaWQ9ImNvbnRlbnQiIG5hbWU9ImRyb3Bkb3duLWNvbnRlbnQiPjwvc2xvdD4KICAgICAgPC9kaXY+CiAgICA8L2lyb24tZHJvcGRvd24+CmAsaXM6InBhcGVyLW1lbnUtYnV0dG9uIixiZWhhdmlvcnM6W1JvLFdvXSxwcm9wZXJ0aWVzOntvcGVuZWQ6e3R5cGU6Qm9vbGVhbix2YWx1ZTohMSxub3RpZnk6ITAsb2JzZXJ2ZXI6Il9vcGVuZWRDaGFuZ2VkIn0saG9yaXpvbnRhbEFsaWduOnt0eXBlOlN0cmluZyx2YWx1ZToibGVmdCIscmVmbGVjdFRvQXR0cmlidXRlOiEwfSx2ZXJ0aWNhbEFsaWduOnt0eXBlOlN0cmluZyx2YWx1ZToidG9wIixyZWZsZWN0VG9BdHRyaWJ1dGU6ITB9LGR5bmFtaWNBbGlnbjp7dHlwZTpCb29sZWFufSxob3Jpem9udGFsT2Zmc2V0Ont0eXBlOk51bWJlcix2YWx1ZTowLG5vdGlmeTohMH0sdmVydGljYWxPZmZzZXQ6e3R5cGU6TnVtYmVyLHZhbHVlOjAsbm90aWZ5OiEwfSxub092ZXJsYXA6e3R5cGU6Qm9vbGVhbn0sbm9BbmltYXRpb25zOnt0eXBlOkJvb2xlYW4sdmFsdWU6ITF9LGlnbm9yZVNlbGVjdDp7dHlwZTpCb29sZWFuLHZhbHVlOiExfSxjbG9zZU9uQWN0aXZhdGU6e3R5cGU6Qm9vbGVhbix2YWx1ZTohMX0sb3BlbkFuaW1hdGlvbkNvbmZpZzp7dHlwZTpPYmplY3QsdmFsdWU6ZnVuY3Rpb24oKXtyZXR1cm5be25hbWU6ImZhZGUtaW4tYW5pbWF0aW9uIix0aW1pbmc6e2RlbGF5OjEwMCxkdXJhdGlvbjoyMDB9fSx7bmFtZToicGFwZXItbWVudS1ncm93LXdpZHRoLWFuaW1hdGlvbiIsdGltaW5nOntkZWxheToxMDAsZHVyYXRpb246MTUwLGVhc2luZzpWYS5BTklNQVRJT05fQ1VCSUNfQkVaSUVSfX0se25hbWU6InBhcGVyLW1lbnUtZ3Jvdy1oZWlnaHQtYW5pbWF0aW9uIix0aW1pbmc6e2RlbGF5OjEwMCxkdXJhdGlvbjoyNzUsZWFzaW5nOlZhLkFOSU1BVElPTl9DVUJJQ19CRVpJRVJ9fV19fSxjbG9zZUFuaW1hdGlvbkNvbmZpZzp7dHlwZTpPYmplY3QsdmFsdWU6ZnVuY3Rpb24oKXtyZXR1cm5be25hbWU6ImZhZGUtb3V0LWFuaW1hdGlvbiIsdGltaW5nOntkdXJhdGlvbjoxNTB9fSx7bmFtZToicGFwZXItbWVudS1zaHJpbmstd2lkdGgtYW5pbWF0aW9uIix0aW1pbmc6e2RlbGF5OjEwMCxkdXJhdGlvbjo1MCxlYXNpbmc6VmEuQU5JTUFUSU9OX0NVQklDX0JFWklFUn19LHtuYW1lOiJwYXBlci1tZW51LXNocmluay1oZWlnaHQtYW5pbWF0aW9uIix0aW1pbmc6e2R1cmF0aW9uOjIwMCxlYXNpbmc6ImVhc2UtaW4ifX1dfX0sYWxsb3dPdXRzaWRlU2Nyb2xsOnt0eXBlOkJvb2xlYW4sdmFsdWU6ITF9LHJlc3RvcmVGb2N1c09uQ2xvc2U6e3R5cGU6Qm9vbGVhbix2YWx1ZTohMH0sZXhwYW5kU2l6aW5nVGFyZ2V0Rm9yU2Nyb2xsYmFyczp7dHlwZTpCb29sZWFuLHZhbHVlOiExfSxfZHJvcGRvd25Db250ZW50Ont0eXBlOk9iamVjdH19LGhvc3RBdHRyaWJ1dGVzOntyb2xlOiJncm91cCIsImFyaWEtaGFzcG9wdXAiOiJ0cnVlIn0sbGlzdGVuZXJzOnsiaXJvbi1hY3RpdmF0ZSI6Il9vbklyb25BY3RpdmF0ZSIsImlyb24tc2VsZWN0IjoiX29uSXJvblNlbGVjdCJ9LGdldCBjb250ZW50RWxlbWVudCgpe2Zvcih2YXIgdD1xaSh0aGlzLiQuY29udGVudCkuZ2V0RGlzdHJpYnV0ZWROb2RlcygpLGU9MCxuPXQubGVuZ3RoO2U8bjtlKyspaWYodFtlXS5ub2RlVHlwZT09PU5vZGUuRUxFTUVOVF9OT0RFKXJldHVybiB0W2VdfSx0b2dnbGU6ZnVuY3Rpb24oKXt0aGlzLm9wZW5lZD90aGlzLmNsb3NlKCk6dGhpcy5vcGVuKCl9LG9wZW46ZnVuY3Rpb24oKXt0aGlzLmRpc2FibGVkfHx0aGlzLiQuZHJvcGRvd24ub3BlbigpfSxjbG9zZTpmdW5jdGlvbigpe3RoaXMuJC5kcm9wZG93bi5jbG9zZSgpfSxfb25Jcm9uU2VsZWN0OmZ1bmN0aW9uKHQpe3RoaXMuaWdub3JlU2VsZWN0fHx0aGlzLmNsb3NlKCl9LF9vbklyb25BY3RpdmF0ZTpmdW5jdGlvbih0KXt0aGlzLmNsb3NlT25BY3RpdmF0ZSYmdGhpcy5jbG9zZSgpfSxfb3BlbmVkQ2hhbmdlZDpmdW5jdGlvbih0LGUpe3Q/KHRoaXMuX2Ryb3Bkb3duQ29udGVudD10aGlzLmNvbnRlbnRFbGVtZW50LHRoaXMuZmlyZSgicGFwZXItZHJvcGRvd24tb3BlbiIpKTpudWxsIT1lJiZ0aGlzLmZpcmUoInBhcGVyLWRyb3Bkb3duLWNsb3NlIil9LF9kaXNhYmxlZENoYW5nZWQ6ZnVuY3Rpb24odCl7V28uX2Rpc2FibGVkQ2hhbmdlZC5hcHBseSh0aGlzLGFyZ3VtZW50cyksdCYmdGhpcy5vcGVuZWQmJnRoaXMuY2xvc2UoKX0sX19vbklyb25PdmVybGF5Q2FuY2VsZWQ6ZnVuY3Rpb24odCl7dmFyIGU9dGhpcy4kLnRyaWdnZXI7cWkodC5kZXRhaWwpLnBhdGguaW5kZXhPZihlKT4tMSYmdC5wcmV2ZW50RGVmYXVsdCgpfX0pO09iamVjdC5rZXlzKFZhKS5mb3JFYWNoKChmdW5jdGlvbih0KXtqYVt0XT1WYVt0XX0pKTsKLyoqCiAgICBAbGljZW5zZQogICAgQ29weXJpZ2h0IChjKSAyMDE2IFRoZSBQb2x5bWVyIFByb2plY3QgQXV0aG9ycy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAgIFRoaXMgY29kZSBtYXkgb25seSBiZSB1c2VkIHVuZGVyIHRoZSBCU0Qgc3R5bGUgbGljZW5zZSBmb3VuZCBhdAogICAgaHR0cDovL3BvbHltZXIuZ2l0aHViLmlvL0xJQ0VOU0UudHh0IFRoZSBjb21wbGV0ZSBzZXQgb2YgYXV0aG9ycyBtYXkgYmUgZm91bmQgYXQKICAgIGh0dHA6Ly9wb2x5bWVyLmdpdGh1Yi5pby9BVVRIT1JTLnR4dCBUaGUgY29tcGxldGUgc2V0IG9mIGNvbnRyaWJ1dG9ycyBtYXkgYmUKICAgIGZvdW5kIGF0IGh0dHA6Ly9wb2x5bWVyLmdpdGh1Yi5pby9DT05UUklCVVRPUlMudHh0IENvZGUgZGlzdHJpYnV0ZWQgYnkgR29vZ2xlIGFzCiAgICBwYXJ0IG9mIHRoZSBwb2x5bWVyIHByb2plY3QgaXMgYWxzbyBzdWJqZWN0IHRvIGFuIGFkZGl0aW9uYWwgSVAgcmlnaHRzIGdyYW50CiAgICBmb3VuZCBhdCBodHRwOi8vcG9seW1lci5naXRodWIuaW8vUEFURU5UUy50eHQKICAgICovCmNvbnN0IFVhPWRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoInRlbXBsYXRlIik7VWEuc2V0QXR0cmlidXRlKCJzdHlsZSIsImRpc3BsYXk6IG5vbmU7IiksVWEuaW5uZXJIVE1MPSc8aXJvbi1pY29uc2V0LXN2ZyBuYW1lPSJwYXBlci1kcm9wZG93bi1tZW51IiBzaXplPSIyNCI+XG48c3ZnPjxkZWZzPlxuPGcgaWQ9ImFycm93LWRyb3AtZG93biI+PHBhdGggZD0iTTcgMTBsNSA1IDUtNXoiPjwvcGF0aD48L2c+XG48L2RlZnM+PC9zdmc+XG48L2lyb24taWNvbnNldC1zdmc+Jyxkb2N1bWVudC5oZWFkLmFwcGVuZENoaWxkKFVhLmNvbnRlbnQpOwovKioKICAgIEBsaWNlbnNlCiAgICBDb3B5cmlnaHQgKGMpIDIwMTYgVGhlIFBvbHltZXIgUHJvamVjdCBBdXRob3JzLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICAgVGhpcyBjb2RlIG1heSBvbmx5IGJlIHVzZWQgdW5kZXIgdGhlIEJTRCBzdHlsZSBsaWNlbnNlIGZvdW5kIGF0CiAgICBodHRwOi8vcG9seW1lci5naXRodWIuaW8vTElDRU5TRS50eHQgVGhlIGNvbXBsZXRlIHNldCBvZiBhdXRob3JzIG1heSBiZSBmb3VuZCBhdAogICAgaHR0cDovL3BvbHltZXIuZ2l0aHViLmlvL0FVVEhPUlMudHh0IFRoZSBjb21wbGV0ZSBzZXQgb2YgY29udHJpYnV0b3JzIG1heSBiZQogICAgZm91bmQgYXQgaHR0cDovL3BvbHltZXIuZ2l0aHViLmlvL0NPTlRSSUJVVE9SUy50eHQgQ29kZSBkaXN0cmlidXRlZCBieSBHb29nbGUgYXMKICAgIHBhcnQgb2YgdGhlIHBvbHltZXIgcHJvamVjdCBpcyBhbHNvIHN1YmplY3QgdG8gYW4gYWRkaXRpb25hbCBJUCByaWdodHMgZ3JhbnQKICAgIGZvdW5kIGF0IGh0dHA6Ly9wb2x5bWVyLmdpdGh1Yi5pby9QQVRFTlRTLnR4dAogICAgKi8KY29uc3QgR2E9ZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgidGVtcGxhdGUiKTtHYS5zZXRBdHRyaWJ1dGUoInN0eWxlIiwiZGlzcGxheTogbm9uZTsiKSxHYS5pbm5lckhUTUw9Jzxkb20tbW9kdWxlIGlkPSJwYXBlci1kcm9wZG93bi1tZW51LXNoYXJlZC1zdHlsZXMiPlxuICA8dGVtcGxhdGU+XG4gICAgPHN0eWxlPlxuICAgICAgOmhvc3Qge1xuICAgICAgICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7XG4gICAgICAgIHBvc2l0aW9uOiByZWxhdGl2ZTtcbiAgICAgICAgdGV4dC1hbGlnbjogbGVmdDtcblxuICAgICAgICAvKiBOT1RFKGNkYXRhKTogQm90aCB2YWx1ZXMgYXJlIG5lZWRlZCwgc2luY2Ugc29tZSBwaG9uZXMgcmVxdWlyZSB0aGVcbiAgICAgICAgICogdmFsdWUgdG8gYmUgYHRyYW5zcGFyZW50YC5cbiAgICAgICAgICovXG4gICAgICAgIC13ZWJraXQtdGFwLWhpZ2hsaWdodC1jb2xvcjogcmdiYSgwLDAsMCwwKTtcbiAgICAgICAgLXdlYmtpdC10YXAtaGlnaGxpZ2h0LWNvbG9yOiB0cmFuc3BhcmVudDtcblxuICAgICAgICAtLXBhcGVyLWlucHV0LWNvbnRhaW5lci1pbnB1dDoge1xuICAgICAgICAgIG92ZXJmbG93OiBoaWRkZW47XG4gICAgICAgICAgd2hpdGUtc3BhY2U6IG5vd3JhcDtcbiAgICAgICAgICB0ZXh0LW92ZXJmbG93OiBlbGxpcHNpcztcbiAgICAgICAgICBtYXgtd2lkdGg6IDEwMCU7XG4gICAgICAgICAgYm94LXNpemluZzogYm9yZGVyLWJveDtcbiAgICAgICAgICBjdXJzb3I6IHBvaW50ZXI7XG4gICAgICAgIH07XG5cbiAgICAgICAgQGFwcGx5IC0tcGFwZXItZHJvcGRvd24tbWVudTtcbiAgICAgIH1cblxuICAgICAgLyogcGFwZXItZHJvcGRvd24tbWVudSBhbmQgcGFwZXItZHJvcGRvd24tbWVudS1saWdodCBib3RoIGRlbGVnYXRlIGZvY3VzXG4gICAgICAgKiB0byBvdGhlciBpbnRlcm5hbCBlbGVtZW50cyB3aGljaCBtYW5hZ2UgZm9jdXMgc3R5bGluZy4gKi9cbiAgICAgIDpob3N0KDpmb2N1cykge1xuICAgICAgICBvdXRsaW5lOiBub25lO1xuICAgICAgfVxuXG4gICAgICA6aG9zdCg6ZGlyKHJ0bCkpIHtcbiAgICAgICAgdGV4dC1hbGlnbjogcmlnaHQ7XG5cbiAgICAgICAgQGFwcGx5KC0tcGFwZXItZHJvcGRvd24tbWVudSk7XG4gICAgICB9XG5cbiAgICAgIDpob3N0KFtkaXNhYmxlZF0pIHtcbiAgICAgICAgQGFwcGx5IC0tcGFwZXItZHJvcGRvd24tbWVudS1kaXNhYmxlZDtcbiAgICAgIH1cblxuICAgICAgOmhvc3QoW25vaW5rXSkgcGFwZXItcmlwcGxlIHtcbiAgICAgICAgZGlzcGxheTogbm9uZTtcbiAgICAgIH1cblxuICAgICAgOmhvc3QoW25vLWxhYmVsLWZsb2F0XSkgcGFwZXItcmlwcGxlIHtcbiAgICAgICAgdG9wOiA4cHg7XG4gICAgICB9XG5cbiAgICAgIHBhcGVyLXJpcHBsZSB7XG4gICAgICAgIHRvcDogMTJweDtcbiAgICAgICAgbGVmdDogMHB4O1xuICAgICAgICBib3R0b206IDhweDtcbiAgICAgICAgcmlnaHQ6IDBweDtcblxuICAgICAgICBAYXBwbHkgLS1wYXBlci1kcm9wZG93bi1tZW51LXJpcHBsZTtcbiAgICAgIH1cblxuICAgICAgcGFwZXItbWVudS1idXR0b24ge1xuICAgICAgICBkaXNwbGF5OiBibG9jaztcbiAgICAgICAgcGFkZGluZzogMDtcblxuICAgICAgICBAYXBwbHkgLS1wYXBlci1kcm9wZG93bi1tZW51LWJ1dHRvbjtcbiAgICAgIH1cblxuICAgICAgcGFwZXItaW5wdXQge1xuICAgICAgICBAYXBwbHkgLS1wYXBlci1kcm9wZG93bi1tZW51LWlucHV0O1xuICAgICAgfVxuXG4gICAgICBpcm9uLWljb24ge1xuICAgICAgICBjb2xvcjogdmFyKC0tZGlzYWJsZWQtdGV4dC1jb2xvcik7XG5cbiAgICAgICAgQGFwcGx5IC0tcGFwZXItZHJvcGRvd24tbWVudS1pY29uO1xuICAgICAgfVxuICAgIDwvc3R5bGU+XG4gIDwvdGVtcGxhdGU+XG48L2RvbS1tb2R1bGU+Jyxkb2N1bWVudC5oZWFkLmFwcGVuZENoaWxkKEdhLmNvbnRlbnQpOwovKioKICAgIEBsaWNlbnNlCiAgICBDb3B5cmlnaHQgKGMpIDIwMTUgVGhlIFBvbHltZXIgUHJvamVjdCBBdXRob3JzLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICAgVGhpcyBjb2RlIG1heSBvbmx5IGJlIHVzZWQgdW5kZXIgdGhlIEJTRCBzdHlsZSBsaWNlbnNlIGZvdW5kIGF0CiAgICBodHRwOi8vcG9seW1lci5naXRodWIuaW8vTElDRU5TRS50eHQgVGhlIGNvbXBsZXRlIHNldCBvZiBhdXRob3JzIG1heSBiZSBmb3VuZCBhdAogICAgaHR0cDovL3BvbHltZXIuZ2l0aHViLmlvL0FVVEhPUlMudHh0IFRoZSBjb21wbGV0ZSBzZXQgb2YgY29udHJpYnV0b3JzIG1heSBiZQogICAgZm91bmQgYXQgaHR0cDovL3BvbHltZXIuZ2l0aHViLmlvL0NPTlRSSUJVVE9SUy50eHQgQ29kZSBkaXN0cmlidXRlZCBieSBHb29nbGUgYXMKICAgIHBhcnQgb2YgdGhlIHBvbHltZXIgcHJvamVjdCBpcyBhbHNvIHN1YmplY3QgdG8gYW4gYWRkaXRpb25hbCBJUCByaWdodHMgZ3JhbnQKICAgIGZvdW5kIGF0IGh0dHA6Ly9wb2x5bWVyLmdpdGh1Yi5pby9QQVRFTlRTLnR4dAogICAgKi8KY29uc3QgV2E9dHIoSFRNTEVsZW1lbnQpO05yKHtfdGVtcGxhdGU6X2VgCiAgICA8c3R5bGUgaW5jbHVkZT0icGFwZXItZHJvcGRvd24tbWVudS1zaGFyZWQtc3R5bGVzIj48L3N0eWxlPgoKICAgIDxwYXBlci1tZW51LWJ1dHRvbiBpZD0ibWVudUJ1dHRvbiIgdmVydGljYWwtYWxpZ249IltbdmVydGljYWxBbGlnbl1dIiBob3Jpem9udGFsLWFsaWduPSJbW2hvcml6b250YWxBbGlnbl1dIiBkeW5hbWljLWFsaWduPSJbW2R5bmFtaWNBbGlnbl1dIiB2ZXJ0aWNhbC1vZmZzZXQ9IltbX2NvbXB1dGVNZW51VmVydGljYWxPZmZzZXQobm9MYWJlbEZsb2F0LCB2ZXJ0aWNhbE9mZnNldCldXSIgZGlzYWJsZWQ9IltbZGlzYWJsZWRdXSIgbm8tYW5pbWF0aW9ucz0iW1tub0FuaW1hdGlvbnNdXSIgb24taXJvbi1zZWxlY3Q9Il9vbklyb25TZWxlY3QiIG9uLWlyb24tZGVzZWxlY3Q9Il9vbklyb25EZXNlbGVjdCIgb3BlbmVkPSJ7e29wZW5lZH19IiBjbG9zZS1vbi1hY3RpdmF0ZSBhbGxvdy1vdXRzaWRlLXNjcm9sbD0iW1thbGxvd091dHNpZGVTY3JvbGxdXSIgcmVzdG9yZS1mb2N1cy1vbi1jbG9zZT0iW1tyZXN0b3JlRm9jdXNPbkNsb3NlXV0iIGV4cGFuZC1zaXppbmctdGFyZ2V0LWZvci1zY3JvbGxiYXJzPSJbW2V4cGFuZFNpemluZ1RhcmdldEZvclNjcm9sbGJhcnNdXSI+CiAgICAgIDwhLS0gc3VwcG9ydCBoeWJyaWQgbW9kZTogdXNlciBtaWdodCBiZSB1c2luZyBwYXBlci1tZW51LWJ1dHRvbiAxLnggd2hpY2ggZGlzdHJpYnV0ZXMgdmlhIDxjb250ZW50PiAtLT4KICAgICAgPGRpdiBjbGFzcz0iZHJvcGRvd24tdHJpZ2dlciIgc2xvdD0iZHJvcGRvd24tdHJpZ2dlciI+CiAgICAgICAgPHBhcGVyLXJpcHBsZT48L3BhcGVyLXJpcHBsZT4KICAgICAgICA8IS0tIHBhcGVyLWlucHV0IGhhcyB0eXBlPSJ0ZXh0IiBmb3IgYTExeSwgZG8gbm90IHJlbW92ZSAtLT4KICAgICAgICA8cGFwZXItaW5wdXQgaWQ9ImlucHV0IiB0eXBlPSJ0ZXh0IiBpbnZhbGlkPSJbW2ludmFsaWRdXSIgcmVhZG9ubHkgZGlzYWJsZWQ9IltbZGlzYWJsZWRdXSIgdmFsdWU9IltbdmFsdWVdXSIgcGxhY2Vob2xkZXI9IltbcGxhY2Vob2xkZXJdXSIgZXJyb3ItbWVzc2FnZT0iW1tlcnJvck1lc3NhZ2VdXSIgYWx3YXlzLWZsb2F0LWxhYmVsPSJbW2Fsd2F5c0Zsb2F0TGFiZWxdXSIgbm8tbGFiZWwtZmxvYXQ9Iltbbm9MYWJlbEZsb2F0XV0iIGxhYmVsPSJbW2xhYmVsXV0iIGlucHV0LXJvbGU9ImJ1dHRvbiIgaW5wdXQtYXJpYS1oYXNwb3B1cD0ibGlzdGJveCIgYXV0b2NvbXBsZXRlPSJvZmYiPgogICAgICAgICAgPCEtLSBzdXBwb3J0IGh5YnJpZCBtb2RlOiB1c2VyIG1pZ2h0IGJlIHVzaW5nIHBhcGVyLWlucHV0IDEueCB3aGljaCBkaXN0cmlidXRlcyB2aWEgPGNvbnRlbnQ+IC0tPgogICAgICAgICAgPGlyb24taWNvbiBpY29uPSJwYXBlci1kcm9wZG93bi1tZW51OmFycm93LWRyb3AtZG93biIgc3VmZml4IHNsb3Q9InN1ZmZpeCI+PC9pcm9uLWljb24+CiAgICAgICAgPC9wYXBlci1pbnB1dD4KICAgICAgPC9kaXY+CiAgICAgIDxzbG90IGlkPSJjb250ZW50IiBuYW1lPSJkcm9wZG93bi1jb250ZW50IiBzbG90PSJkcm9wZG93bi1jb250ZW50Ij48L3Nsb3Q+CiAgICA8L3BhcGVyLW1lbnUtYnV0dG9uPgpgLGlzOiJwYXBlci1kcm9wZG93bi1tZW51IixiZWhhdmlvcnM6W1lvLFdvLGlhLG9hXSxwcm9wZXJ0aWVzOntzZWxlY3RlZEl0ZW1MYWJlbDp7dHlwZTpTdHJpbmcsbm90aWZ5OiEwLHJlYWRPbmx5OiEwfSxzZWxlY3RlZEl0ZW06e3R5cGU6T2JqZWN0LG5vdGlmeTohMCxyZWFkT25seTohMH0sdmFsdWU6e3R5cGU6U3RyaW5nLG5vdGlmeTohMH0sbGFiZWw6e3R5cGU6U3RyaW5nfSxwbGFjZWhvbGRlcjp7dHlwZTpTdHJpbmd9LGVycm9yTWVzc2FnZTp7dHlwZTpTdHJpbmd9LG9wZW5lZDp7dHlwZTpCb29sZWFuLG5vdGlmeTohMCx2YWx1ZTohMSxvYnNlcnZlcjoiX29wZW5lZENoYW5nZWQifSxhbGxvd091dHNpZGVTY3JvbGw6e3R5cGU6Qm9vbGVhbix2YWx1ZTohMX0sbm9MYWJlbEZsb2F0Ont0eXBlOkJvb2xlYW4sdmFsdWU6ITEscmVmbGVjdFRvQXR0cmlidXRlOiEwfSxhbHdheXNGbG9hdExhYmVsOnt0eXBlOkJvb2xlYW4sdmFsdWU6ITF9LG5vQW5pbWF0aW9uczp7dHlwZTpCb29sZWFuLHZhbHVlOiExfSxob3Jpem9udGFsQWxpZ246e3R5cGU6U3RyaW5nLHZhbHVlOiJyaWdodCJ9LHZlcnRpY2FsQWxpZ246e3R5cGU6U3RyaW5nLHZhbHVlOiJ0b3AifSx2ZXJ0aWNhbE9mZnNldDpOdW1iZXIsZHluYW1pY0FsaWduOnt0eXBlOkJvb2xlYW59LHJlc3RvcmVGb2N1c09uQ2xvc2U6e3R5cGU6Qm9vbGVhbix2YWx1ZTohMH0sZXhwYW5kU2l6aW5nVGFyZ2V0Rm9yU2Nyb2xsYmFyczp7dHlwZTpCb29sZWFuLHZhbHVlOiExfX0sbGlzdGVuZXJzOnt0YXA6Il9vblRhcCJ9LGtleUJpbmRpbmdzOnsidXAgZG93biI6Im9wZW4iLGVzYzoiY2xvc2UifSxvYnNlcnZlcnM6WyJfc2VsZWN0ZWRJdGVtQ2hhbmdlZChzZWxlY3RlZEl0ZW0pIl0sX2F0dGFjaERvbSh0KXtjb25zdCBlPVkodGhpcyk7cmV0dXJuIGUuYXR0YWNoU2hhZG93KHttb2RlOiJvcGVuIixkZWxlZ2F0ZXNGb2N1czohMCxzaGFkeVVwZ3JhZGVGcmFnbWVudDp0fSksZS5zaGFkb3dSb290LmFwcGVuZENoaWxkKHQpLFdhLnByb3RvdHlwZS5fYXR0YWNoRG9tLmNhbGwodGhpcyx0KX0sZm9jdXMoKXt0aGlzLiQuaW5wdXQuX2ZvY3VzYWJsZUVsZW1lbnQuZm9jdXMoKX0sYXR0YWNoZWQ6ZnVuY3Rpb24oKXt2YXIgdD10aGlzLmNvbnRlbnRFbGVtZW50O3QmJnQuc2VsZWN0ZWRJdGVtJiZ0aGlzLl9zZXRTZWxlY3RlZEl0ZW0odC5zZWxlY3RlZEl0ZW0pfSxnZXQgY29udGVudEVsZW1lbnQoKXtmb3IodmFyIHQ9cWkodGhpcy4kLmNvbnRlbnQpLmdldERpc3RyaWJ1dGVkTm9kZXMoKSxlPTAsbj10Lmxlbmd0aDtlPG47ZSsrKWlmKHRbZV0ubm9kZVR5cGU9PT1Ob2RlLkVMRU1FTlRfTk9ERSlyZXR1cm4gdFtlXX0sb3BlbjpmdW5jdGlvbigpe3RoaXMuJC5tZW51QnV0dG9uLm9wZW4oKX0sY2xvc2U6ZnVuY3Rpb24oKXt0aGlzLiQubWVudUJ1dHRvbi5jbG9zZSgpfSxfb25Jcm9uU2VsZWN0OmZ1bmN0aW9uKHQpe3RoaXMuX3NldFNlbGVjdGVkSXRlbSh0LmRldGFpbC5pdGVtKX0sX29uSXJvbkRlc2VsZWN0OmZ1bmN0aW9uKHQpe3RoaXMuX3NldFNlbGVjdGVkSXRlbShudWxsKX0sX29uVGFwOmZ1bmN0aW9uKHQpe2hpKHQpPT09dGhpcyYmdGhpcy5vcGVuKCl9LF9zZWxlY3RlZEl0ZW1DaGFuZ2VkOmZ1bmN0aW9uKHQpe3ZhciBlO2U9dD90LmxhYmVsfHx0LmdldEF0dHJpYnV0ZSgibGFiZWwiKXx8dC50ZXh0Q29udGVudC50cmltKCk6IiIsdGhpcy52YWx1ZT1lLHRoaXMuX3NldFNlbGVjdGVkSXRlbUxhYmVsKGUpfSxfY29tcHV0ZU1lbnVWZXJ0aWNhbE9mZnNldDpmdW5jdGlvbih0LGUpe3JldHVybiBlfHwodD8tNDo4KX0sX2dldFZhbGlkaXR5OmZ1bmN0aW9uKHQpe3JldHVybiB0aGlzLmRpc2FibGVkfHwhdGhpcy5yZXF1aXJlZHx8dGhpcy5yZXF1aXJlZCYmISF0aGlzLnZhbHVlfSxfb3BlbmVkQ2hhbmdlZDpmdW5jdGlvbigpe3ZhciB0PXRoaXMuY29udGVudEVsZW1lbnQ7dCYmdC5zZXRBdHRyaWJ1dGUoImFyaWEtZXhwYW5kZWQiLHRoaXMub3BlbmVkPyJ0cnVlIjoiZmFsc2UiKX19KTsKLyoqCiAgICBAbGljZW5zZQogICAgQ29weXJpZ2h0IChjKSAyMDE1IFRoZSBQb2x5bWVyIFByb2plY3QgQXV0aG9ycy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAgIFRoaXMgY29kZSBtYXkgb25seSBiZSB1c2VkIHVuZGVyIHRoZSBCU0Qgc3R5bGUgbGljZW5zZSBmb3VuZCBhdAogICAgaHR0cDovL3BvbHltZXIuZ2l0aHViLmlvL0xJQ0VOU0UudHh0IFRoZSBjb21wbGV0ZSBzZXQgb2YgYXV0aG9ycyBtYXkgYmUgZm91bmQgYXQKICAgIGh0dHA6Ly9wb2x5bWVyLmdpdGh1Yi5pby9BVVRIT1JTLnR4dCBUaGUgY29tcGxldGUgc2V0IG9mIGNvbnRyaWJ1dG9ycyBtYXkgYmUKICAgIGZvdW5kIGF0IGh0dHA6Ly9wb2x5bWVyLmdpdGh1Yi5pby9DT05UUklCVVRPUlMudHh0IENvZGUgZGlzdHJpYnV0ZWQgYnkgR29vZ2xlIGFzCiAgICBwYXJ0IG9mIHRoZSBwb2x5bWVyIHByb2plY3QgaXMgYWxzbyBzdWJqZWN0IHRvIGFuIGFkZGl0aW9uYWwgSVAgcmlnaHRzIGdyYW50CiAgICBmb3VuZCBhdCBodHRwOi8vcG9seW1lci5naXRodWIuaW8vUEFURU5UUy50eHQKICAgICovCnZhciBxYT17b3V0ZXJTY3JvbGw6e3Njcm9sbDohMH0sc2hhZG93TW9kZTp7c3RhbmRhcmQ6Mix3YXRlcmZhbGw6MSwid2F0ZXJmYWxsLXRhbGwiOjF9LHRhbGxNb2RlOnsid2F0ZXJmYWxsLXRhbGwiOiEwfX07TnIoe190ZW1wbGF0ZTpfZWAKICAgIDxzdHlsZT4KICAgICAgOmhvc3QgewogICAgICAgIEBhcHBseSAtLWxheW91dC12ZXJ0aWNhbDsKICAgICAgICBwb3NpdGlvbjogcmVsYXRpdmU7CiAgICAgICAgaGVpZ2h0OiAxMDAlOwogICAgICAgIEBhcHBseSAtLXBhcGVyLWhlYWRlci1wYW5lbDsKICAgICAgfQoKICAgICAgI21haW5Db250YWluZXIgewogICAgICAgIEBhcHBseSAtLWxheW91dC1mbGV4OwogICAgICAgIHBvc2l0aW9uOiByZWxhdGl2ZTsKICAgICAgICBvdmVyZmxvdy15OiBhdXRvOwogICAgICAgIG92ZXJmbG93LXg6IGhpZGRlbjsKICAgICAgICAtd2Via2l0LW92ZXJmbG93LXNjcm9sbGluZzogdG91Y2g7CiAgICAgIH0KCiAgICAgICNtYWluUGFuZWwgewogICAgICAgIEBhcHBseSAtLWxheW91dC12ZXJ0aWNhbDsKICAgICAgICBAYXBwbHkgLS1sYXlvdXQtZmxleDsKICAgICAgICBwb3NpdGlvbjogcmVsYXRpdmU7CiAgICAgICAgbWluLWhlaWdodDogMDsKICAgICAgICBAYXBwbHkgLS1wYXBlci1oZWFkZXItcGFuZWwtYm9keTsKICAgICAgfQoKICAgICAgI21haW5Db250YWluZXIgewogICAgICAgIEBhcHBseSAtLXBhcGVyLWhlYWRlci1wYW5lbC1jb250YWluZXI7CiAgICAgIH0KCiAgICAgIC8qCiAgICAgICAqIG1vZGU6IHNjcm9sbAogICAgICAgKi8KICAgICAgOmhvc3QoW21vZGU9c2Nyb2xsXSkgI21haW5Db250YWluZXIgewogICAgICAgIEBhcHBseSAtLXBhcGVyLWhlYWRlci1wYW5lbC1zY3JvbGwtY29udGFpbmVyOwogICAgICAgIG92ZXJmbG93OiB2aXNpYmxlOwogICAgICB9CgogICAgICA6aG9zdChbbW9kZT1zY3JvbGxdKSB7CiAgICAgICAgb3ZlcmZsb3cteTogYXV0bzsKICAgICAgICBvdmVyZmxvdy14OiBoaWRkZW47CiAgICAgICAgLXdlYmtpdC1vdmVyZmxvdy1zY3JvbGxpbmc6IHRvdWNoOwogICAgICB9CgogICAgICAvKgogICAgICAgKiBtb2RlOiBjb3ZlcgogICAgICAgKi8KICAgICAgOmhvc3QoW21vZGU9Y292ZXJdKSAjbWFpbkNvbnRhaW5lciB7CiAgICAgICAgQGFwcGx5IC0tcGFwZXItaGVhZGVyLXBhbmVsLWNvdmVyLWNvbnRhaW5lcjsKICAgICAgICBwb3NpdGlvbjogYWJzb2x1dGU7CiAgICAgICAgdG9wOiAwOwogICAgICAgIHJpZ2h0OiAwOwogICAgICAgIGJvdHRvbTogMDsKICAgICAgICBsZWZ0OiAwOwogICAgICB9CgogICAgICA6aG9zdChbbW9kZT1jb3Zlcl0pICNtYWluUGFuZWwgewogICAgICAgIHBvc2l0aW9uOiBzdGF0aWM7CiAgICAgIH0KCiAgICAgIC8qCiAgICAgICAqIG1vZGU6IHN0YW5kYXJkCiAgICAgICAqLwogICAgICA6aG9zdChbbW9kZT1zdGFuZGFyZF0pICNtYWluQ29udGFpbmVyIHsKICAgICAgICBAYXBwbHkgLS1wYXBlci1oZWFkZXItcGFuZWwtc3RhbmRhcmQtY29udGFpbmVyOwogICAgICB9CgogICAgICAvKgogICAgICAgKiBtb2RlOiBzZWFtZWQKICAgICAgICovCiAgICAgIDpob3N0KFttb2RlPXNlYW1lZF0pICNtYWluQ29udGFpbmVyIHsKICAgICAgICBAYXBwbHkgLS1wYXBlci1oZWFkZXItcGFuZWwtc2VhbWVkLWNvbnRhaW5lcjsKICAgICAgfQoKCiAgICAgIC8qCiAgICAgICAqIG1vZGU6IHdhdGVyZmFsbAogICAgICAgKi8KICAgICAgOmhvc3QoW21vZGU9d2F0ZXJmYWxsXSkgI21haW5Db250YWluZXIgewogICAgICAgIEBhcHBseSAtLXBhcGVyLWhlYWRlci1wYW5lbC13YXRlcmZhbGwtY29udGFpbmVyOwogICAgICB9CgogICAgICAvKgogICAgICAgKiBtb2RlOiB3YXRlcmZhbGwtdGFsbAogICAgICAgKi8KICAgICAgOmhvc3QoW21vZGU9d2F0ZXJmYWxsLXRhbGxdKSAjbWFpbkNvbnRhaW5lciB7CiAgICAgICAgQGFwcGx5IC0tcGFwZXItaGVhZGVyLXBhbmVsLXdhdGVyZmFsbC10YWxsLWNvbnRhaW5lcjsKICAgICAgfQoKICAgICAgI2Ryb3BTaGFkb3cgewogICAgICAgIHRyYW5zaXRpb246IG9wYWNpdHkgMC41czsKICAgICAgICBoZWlnaHQ6IDZweDsKICAgICAgICBib3gtc2hhZG93OiBpbnNldCAwcHggNXB4IDZweCAtM3B4IHJnYmEoMCwgMCwgMCwgMC40KTsKICAgICAgICBAYXBwbHkgLS1wYXBlci1oZWFkZXItcGFuZWwtc2hhZG93OwogICAgICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTsKICAgICAgICB0b3A6IDA7CiAgICAgICAgbGVmdDogMDsKICAgICAgICByaWdodDogMDsKICAgICAgICBvcGFjaXR5OiAwOwogICAgICAgIHBvaW50ZXItZXZlbnRzOiBub25lOwogICAgICB9CgogICAgICAjZHJvcFNoYWRvdy5oYXMtc2hhZG93IHsKICAgICAgICBvcGFjaXR5OiAxOwogICAgICB9CgogICAgICAjbWFpbkNvbnRhaW5lciA+IDo6c2xvdHRlZCguZml0KSB7CiAgICAgICAgQGFwcGx5IC0tbGF5b3V0LWZpdDsKICAgICAgfQoKICAgIDwvc3R5bGU+CgogICAgPHNsb3QgaWQ9ImhlYWRlclNsb3QiIG5hbWU9ImhlYWRlciI+PC9zbG90PgoKICAgIDxkaXYgaWQ9Im1haW5QYW5lbCI+CiAgICAgIDxkaXYgaWQ9Im1haW5Db250YWluZXIiIGNsYXNzXCQ9IltbX2NvbXB1dGVNYWluQ29udGFpbmVyQ2xhc3MobW9kZSldXSI+CiAgICAgICAgPHNsb3Q+PC9zbG90PgogICAgICA8L2Rpdj4KICAgICAgPGRpdiBpZD0iZHJvcFNoYWRvdyI+PC9kaXY+CiAgICA8L2Rpdj4KYCxpczoicGFwZXItaGVhZGVyLXBhbmVsIixwcm9wZXJ0aWVzOnttb2RlOnt0eXBlOlN0cmluZyx2YWx1ZToic3RhbmRhcmQiLG9ic2VydmVyOiJfbW9kZUNoYW5nZWQiLHJlZmxlY3RUb0F0dHJpYnV0ZTohMH0sc2hhZG93Ont0eXBlOkJvb2xlYW4sdmFsdWU6ITF9LHRhbGxDbGFzczp7dHlwZTpTdHJpbmcsdmFsdWU6InRhbGwifSxhdFRvcDp7dHlwZTpCb29sZWFuLHZhbHVlOiEwLG5vdGlmeTohMCxyZWFkT25seTohMCxyZWZsZWN0VG9BdHRyaWJ1dGU6ITB9fSxvYnNlcnZlcnM6WyJfY29tcHV0ZURyb3BTaGFkb3dIaWRkZW4oYXRUb3AsIG1vZGUsIHNoYWRvdykiXSxhdHRhY2hlZDpmdW5jdGlvbigpe3RoaXMuX2FkZExpc3RlbmVyKCksdGhpcy5fa2VlcFNjcm9sbGluZ1N0YXRlKCl9LGRldGFjaGVkOmZ1bmN0aW9uKCl7dGhpcy5fcmVtb3ZlTGlzdGVuZXIoKX0scmVhZHk6ZnVuY3Rpb24oKXt0aGlzLnNjcm9sbEhhbmRsZXI9dGhpcy5fc2Nyb2xsLmJpbmQodGhpcyksY29uc29sZS53YXJuKHRoaXMuaXMsImlzIGRlcHJlY2F0ZWQuIFBsZWFzZSB1c2UgYXBwLWxheW91dCBpbnN0ZWFkISIpfSxnZXQgaGVhZGVyKCl7cmV0dXJuIHFpKHRoaXMuJC5oZWFkZXJTbG90KS5nZXREaXN0cmlidXRlZE5vZGVzKClbMF19LGdldCBzY3JvbGxlcigpe3JldHVybiB0aGlzLl9nZXRTY3JvbGxlckZvck1vZGUodGhpcy5tb2RlKX0sZ2V0IHZpc2libGVTaGFkb3coKXtyZXR1cm4gdGhpcy4kLmRyb3BTaGFkb3cuY2xhc3NMaXN0LmNvbnRhaW5zKCJoYXMtc2hhZG93Iil9LF9jb21wdXRlRHJvcFNoYWRvd0hpZGRlbjpmdW5jdGlvbih0LGUsbil7dmFyIGk9cWEuc2hhZG93TW9kZVtlXTt0aGlzLnRvZ2dsZUNsYXNzKCJoYXMtc2hhZG93IiwhIXRoaXMuc2hhZG93fHwyPT09aXx8MT09PWkmJiF0LHRoaXMuJC5kcm9wU2hhZG93KX0sX2NvbXB1dGVNYWluQ29udGFpbmVyQ2xhc3M6ZnVuY3Rpb24odCl7dmFyIGU9e307cmV0dXJuIGUuZmxleD0iY292ZXIiIT09dCxPYmplY3Qua2V5cyhlKS5maWx0ZXIoKGZ1bmN0aW9uKHQpe3JldHVybiBlW3RdfSkpLmpvaW4oIiAiKX0sX2FkZExpc3RlbmVyOmZ1bmN0aW9uKCl7dGhpcy5zY3JvbGxlci5hZGRFdmVudExpc3RlbmVyKCJzY3JvbGwiLHRoaXMuc2Nyb2xsSGFuZGxlcil9LF9yZW1vdmVMaXN0ZW5lcjpmdW5jdGlvbigpe3RoaXMuc2Nyb2xsZXIucmVtb3ZlRXZlbnRMaXN0ZW5lcigic2Nyb2xsIix0aGlzLnNjcm9sbEhhbmRsZXIpfSxfbW9kZUNoYW5nZWQ6ZnVuY3Rpb24odCxlKXt2YXIgbj1xYSxpPXRoaXMuaGVhZGVyO2kmJihuLnRhbGxNb2RlW2VdJiYhbi50YWxsTW9kZVt0XT8oaS5jbGFzc0xpc3QucmVtb3ZlKHRoaXMudGFsbENsYXNzKSx0aGlzLmFzeW5jKChmdW5jdGlvbigpe2kuY2xhc3NMaXN0LnJlbW92ZSgiYW5pbWF0ZSIpfSksMjAwKSk6dGhpcy50b2dnbGVDbGFzcygiYW5pbWF0ZSIsbi50YWxsTW9kZVt0XSxpKSksdGhpcy5fa2VlcFNjcm9sbGluZ1N0YXRlKCl9LF9rZWVwU2Nyb2xsaW5nU3RhdGU6ZnVuY3Rpb24oKXt2YXIgdD10aGlzLnNjcm9sbGVyLGU9dGhpcy5oZWFkZXI7dGhpcy5fc2V0QXRUb3AoMD09PXQuc2Nyb2xsVG9wKSxlJiZ0aGlzLnRhbGxDbGFzcyYmcWEudGFsbE1vZGVbdGhpcy5tb2RlXSYmdGhpcy50b2dnbGVDbGFzcyh0aGlzLnRhbGxDbGFzcyx0aGlzLmF0VG9wfHxlLmNsYXNzTGlzdC5jb250YWlucyh0aGlzLnRhbGxDbGFzcykmJnQuc2Nyb2xsSGVpZ2h0PHRoaXMub2Zmc2V0SGVpZ2h0LGUpfSxfc2Nyb2xsOmZ1bmN0aW9uKCl7dGhpcy5fa2VlcFNjcm9sbGluZ1N0YXRlKCksdGhpcy5maXJlKCJjb250ZW50LXNjcm9sbCIse3RhcmdldDp0aGlzLnNjcm9sbGVyfSx7YnViYmxlczohMX0pfSxfZ2V0U2Nyb2xsZXJGb3JNb2RlOmZ1bmN0aW9uKHQpe3JldHVybiBxYS5vdXRlclNjcm9sbFt0XT90aGlzOnRoaXMuJC5tYWluQ29udGFpbmVyfX0pLAovKioKICAgIEBsaWNlbnNlCiAgICBDb3B5cmlnaHQgKGMpIDIwMTUgVGhlIFBvbHltZXIgUHJvamVjdCBBdXRob3JzLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICAgVGhpcyBjb2RlIG1heSBvbmx5IGJlIHVzZWQgdW5kZXIgdGhlIEJTRCBzdHlsZSBsaWNlbnNlIGZvdW5kIGF0CiAgICBodHRwOi8vcG9seW1lci5naXRodWIuaW8vTElDRU5TRS50eHQgVGhlIGNvbXBsZXRlIHNldCBvZiBhdXRob3JzIG1heSBiZSBmb3VuZCBhdAogICAgaHR0cDovL3BvbHltZXIuZ2l0aHViLmlvL0FVVEhPUlMudHh0IFRoZSBjb21wbGV0ZSBzZXQgb2YgY29udHJpYnV0b3JzIG1heSBiZQogICAgZm91bmQgYXQgaHR0cDovL3BvbHltZXIuZ2l0aHViLmlvL0NPTlRSSUJVVE9SUy50eHQgQ29kZSBkaXN0cmlidXRlZCBieSBHb29nbGUgYXMKICAgIHBhcnQgb2YgdGhlIHBvbHltZXIgcHJvamVjdCBpcyBhbHNvIHN1YmplY3QgdG8gYW4gYWRkaXRpb25hbCBJUCByaWdodHMgZ3JhbnQKICAgIGZvdW5kIGF0IGh0dHA6Ly9wb2x5bWVyLmdpdGh1Yi5pby9QQVRFTlRTLnR4dAogICAgKi8KTnIoe2lzOiJwYXBlci1pY29uLWJ1dHRvbiIsX3RlbXBsYXRlOl9lYAogICAgPHN0eWxlPgogICAgICA6aG9zdCB7CiAgICAgICAgZGlzcGxheTogaW5saW5lLWJsb2NrOwogICAgICAgIHBvc2l0aW9uOiByZWxhdGl2ZTsKICAgICAgICBwYWRkaW5nOiA4cHg7CiAgICAgICAgb3V0bGluZTogbm9uZTsKICAgICAgICAtd2Via2l0LXVzZXItc2VsZWN0OiBub25lOwogICAgICAgIC1tb3otdXNlci1zZWxlY3Q6IG5vbmU7CiAgICAgICAgLW1zLXVzZXItc2VsZWN0OiBub25lOwogICAgICAgIHVzZXItc2VsZWN0OiBub25lOwogICAgICAgIGN1cnNvcjogcG9pbnRlcjsKICAgICAgICB6LWluZGV4OiAwOwogICAgICAgIGxpbmUtaGVpZ2h0OiAxOwoKICAgICAgICB3aWR0aDogNDBweDsKICAgICAgICBoZWlnaHQ6IDQwcHg7CgogICAgICAgIC8qCiAgICAgICAgICBOT1RFOiBCb3RoIHZhbHVlcyBhcmUgbmVlZGVkLCBzaW5jZSBzb21lIHBob25lcyByZXF1aXJlIHRoZSB2YWx1ZSB0bwogICAgICAgICAgYmUgXGB0cmFuc3BhcmVudFxgLgogICAgICAgICovCiAgICAgICAgLXdlYmtpdC10YXAtaGlnaGxpZ2h0LWNvbG9yOiByZ2JhKDAsIDAsIDAsIDApOwogICAgICAgIC13ZWJraXQtdGFwLWhpZ2hsaWdodC1jb2xvcjogdHJhbnNwYXJlbnQ7CgogICAgICAgIC8qIEJlY2F1c2Ugb2YgcG9seW1lci8yNTU4LCB0aGlzIHN0eWxlIGhhcyBsb3dlciBzcGVjaWZpY2l0eSB0aGFuICogKi8KICAgICAgICBib3gtc2l6aW5nOiBib3JkZXItYm94ICFpbXBvcnRhbnQ7CgogICAgICAgIEBhcHBseSAtLXBhcGVyLWljb24tYnV0dG9uOwogICAgICB9CgogICAgICA6aG9zdCAjaW5rIHsKICAgICAgICBjb2xvcjogdmFyKC0tcGFwZXItaWNvbi1idXR0b24taW5rLWNvbG9yLCB2YXIoLS1wcmltYXJ5LXRleHQtY29sb3IpKTsKICAgICAgICBvcGFjaXR5OiAwLjY7CiAgICAgIH0KCiAgICAgIDpob3N0KFtkaXNhYmxlZF0pIHsKICAgICAgICBjb2xvcjogdmFyKC0tcGFwZXItaWNvbi1idXR0b24tZGlzYWJsZWQtdGV4dCwgdmFyKC0tZGlzYWJsZWQtdGV4dC1jb2xvcikpOwogICAgICAgIHBvaW50ZXItZXZlbnRzOiBub25lOwogICAgICAgIGN1cnNvcjogYXV0bzsKCiAgICAgICAgQGFwcGx5IC0tcGFwZXItaWNvbi1idXR0b24tZGlzYWJsZWQ7CiAgICAgIH0KCiAgICAgIDpob3N0KFtoaWRkZW5dKSB7CiAgICAgICAgZGlzcGxheTogbm9uZSAhaW1wb3J0YW50OwogICAgICB9CgogICAgICA6aG9zdCg6aG92ZXIpIHsKICAgICAgICBAYXBwbHkgLS1wYXBlci1pY29uLWJ1dHRvbi1ob3ZlcjsKICAgICAgfQoKICAgICAgaXJvbi1pY29uIHsKICAgICAgICAtLWlyb24taWNvbi13aWR0aDogMTAwJTsKICAgICAgICAtLWlyb24taWNvbi1oZWlnaHQ6IDEwMCU7CiAgICAgIH0KICAgIDwvc3R5bGU+CgogICAgPGlyb24taWNvbiBpZD0iaWNvbiIgc3JjPSJbW3NyY11dIiBpY29uPSJbW2ljb25dXSIKICAgICAgICAgICAgICAgYWx0JD0iW1thbHRdXSI+PC9pcm9uLWljb24+CiAgYCxob3N0QXR0cmlidXRlczp7cm9sZToiYnV0dG9uIix0YWJpbmRleDoiMCJ9LGJlaGF2aW9yczpbbGFdLHJlZ2lzdGVyZWQ6ZnVuY3Rpb24oKXt0aGlzLl90ZW1wbGF0ZS5zZXRBdHRyaWJ1dGUoInN0cmlwLXdoaXRlc3BhY2UiLCIiKX0scHJvcGVydGllczp7c3JjOnt0eXBlOlN0cmluZ30saWNvbjp7dHlwZTpTdHJpbmd9LGFsdDp7dHlwZTpTdHJpbmcsb2JzZXJ2ZXI6Il9hbHRDaGFuZ2VkIn19LF9hbHRDaGFuZ2VkOmZ1bmN0aW9uKHQsZSl7dmFyIG49dGhpcy5nZXRBdHRyaWJ1dGUoImFyaWEtbGFiZWwiKTtuJiZlIT1ufHx0aGlzLnNldEF0dHJpYnV0ZSgiYXJpYS1sYWJlbCIsdCl9fSksCi8qKgogICAgQGxpY2Vuc2UKICAgIENvcHlyaWdodCAoYykgMjAxNSBUaGUgUG9seW1lciBQcm9qZWN0IEF1dGhvcnMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgICBUaGlzIGNvZGUgbWF5IG9ubHkgYmUgdXNlZCB1bmRlciB0aGUgQlNEIHN0eWxlIGxpY2Vuc2UgZm91bmQgYXQKICAgIGh0dHA6Ly9wb2x5bWVyLmdpdGh1Yi5pby9MSUNFTlNFLnR4dCBUaGUgY29tcGxldGUgc2V0IG9mIGF1dGhvcnMgbWF5IGJlIGZvdW5kIGF0CiAgICBodHRwOi8vcG9seW1lci5naXRodWIuaW8vQVVUSE9SUy50eHQgVGhlIGNvbXBsZXRlIHNldCBvZiBjb250cmlidXRvcnMgbWF5IGJlCiAgICBmb3VuZCBhdCBodHRwOi8vcG9seW1lci5naXRodWIuaW8vQ09OVFJJQlVUT1JTLnR4dCBDb2RlIGRpc3RyaWJ1dGVkIGJ5IEdvb2dsZSBhcwogICAgcGFydCBvZiB0aGUgcG9seW1lciBwcm9qZWN0IGlzIGFsc28gc3ViamVjdCB0byBhbiBhZGRpdGlvbmFsIElQIHJpZ2h0cyBncmFudAogICAgZm91bmQgYXQgaHR0cDovL3BvbHltZXIuZ2l0aHViLmlvL1BBVEVOVFMudHh0CiAgICAqLwpOcih7X3RlbXBsYXRlOl9lYAogICAgPHN0eWxlPgogICAgICA6aG9zdCB7CiAgICAgICAgZGlzcGxheTogaW5saW5lLWJsb2NrOwogICAgICAgIHBvc2l0aW9uOiByZWxhdGl2ZTsKICAgICAgICB3aWR0aDogNDAwcHg7CiAgICAgICAgYm9yZGVyOiAxcHggc29saWQ7CiAgICAgICAgcGFkZGluZzogMnB4OwogICAgICAgIC1tb3otYXBwZWFyYW5jZTogdGV4dGFyZWE7CiAgICAgICAgLXdlYmtpdC1hcHBlYXJhbmNlOiB0ZXh0YXJlYTsKICAgICAgICBvdmVyZmxvdzogaGlkZGVuOwogICAgICB9CgogICAgICAubWlycm9yLXRleHQgewogICAgICAgIHZpc2liaWxpdHk6IGhpZGRlbjsKICAgICAgICB3b3JkLXdyYXA6IGJyZWFrLXdvcmQ7CiAgICAgICAgQGFwcGx5IC0taXJvbi1hdXRvZ3Jvdy10ZXh0YXJlYTsKICAgICAgfQoKICAgICAgLmZpdCB7CiAgICAgICAgQGFwcGx5IC0tbGF5b3V0LWZpdDsKICAgICAgfQoKICAgICAgdGV4dGFyZWEgewogICAgICAgIHBvc2l0aW9uOiByZWxhdGl2ZTsKICAgICAgICBvdXRsaW5lOiBub25lOwogICAgICAgIGJvcmRlcjogbm9uZTsKICAgICAgICByZXNpemU6IG5vbmU7CiAgICAgICAgYmFja2dyb3VuZDogaW5oZXJpdDsKICAgICAgICBjb2xvcjogaW5oZXJpdDsKICAgICAgICAvKiBzZWUgY29tbWVudHMgaW4gdGVtcGxhdGUgKi8KICAgICAgICB3aWR0aDogMTAwJTsKICAgICAgICBoZWlnaHQ6IDEwMCU7CiAgICAgICAgZm9udC1zaXplOiBpbmhlcml0OwogICAgICAgIGZvbnQtZmFtaWx5OiBpbmhlcml0OwogICAgICAgIGxpbmUtaGVpZ2h0OiBpbmhlcml0OwogICAgICAgIHRleHQtYWxpZ246IGluaGVyaXQ7CiAgICAgICAgQGFwcGx5IC0taXJvbi1hdXRvZ3Jvdy10ZXh0YXJlYTsKICAgICAgfQoKICAgICAgdGV4dGFyZWE6Oi13ZWJraXQtaW5wdXQtcGxhY2Vob2xkZXIgewogICAgICAgIEBhcHBseSAtLWlyb24tYXV0b2dyb3ctdGV4dGFyZWEtcGxhY2Vob2xkZXI7CiAgICAgIH0KCiAgICAgIHRleHRhcmVhOi1tb3otcGxhY2Vob2xkZXIgewogICAgICAgIEBhcHBseSAtLWlyb24tYXV0b2dyb3ctdGV4dGFyZWEtcGxhY2Vob2xkZXI7CiAgICAgIH0KCiAgICAgIHRleHRhcmVhOjotbW96LXBsYWNlaG9sZGVyIHsKICAgICAgICBAYXBwbHkgLS1pcm9uLWF1dG9ncm93LXRleHRhcmVhLXBsYWNlaG9sZGVyOwogICAgICB9CgogICAgICB0ZXh0YXJlYTotbXMtaW5wdXQtcGxhY2Vob2xkZXIgewogICAgICAgIEBhcHBseSAtLWlyb24tYXV0b2dyb3ctdGV4dGFyZWEtcGxhY2Vob2xkZXI7CiAgICAgIH0KICAgIDwvc3R5bGU+CgogICAgPCEtLSB0aGUgbWlycm9yIHNpemVzIHRoZSBpbnB1dC90ZXh0YXJlYSBzbyBpdCBncm93cyB3aXRoIHR5cGluZyAtLT4KICAgIDwhLS0gdXNlICYjMTYwOyBpbnN0ZWFkICZuYnNwOyBvZiB0byBhbGxvdyB0aGlzIGVsZW1lbnQgdG8gYmUgdXNlZCBpbiBYSFRNTCAtLT4KICAgIDxkaXYgaWQ9Im1pcnJvciIgY2xhc3M9Im1pcnJvci10ZXh0IiBhcmlhLWhpZGRlbj0idHJ1ZSI+Jm5ic3A7PC9kaXY+CgogICAgPCEtLSBzaXplIHRoZSBpbnB1dC90ZXh0YXJlYSB3aXRoIGEgZGl2LCBiZWNhdXNlIHRoZSB0ZXh0YXJlYSBoYXMgaW50cmluc2ljIHNpemUgaW4gZmYgLS0+CiAgICA8ZGl2IGNsYXNzPSJ0ZXh0YXJlYS1jb250YWluZXIgZml0Ij4KICAgICAgPHRleHRhcmVhIGlkPSJ0ZXh0YXJlYSIgbmFtZSQ9IltbbmFtZV1dIiBhcmlhLWxhYmVsJD0iW1tsYWJlbF1dIiBhdXRvY29tcGxldGUkPSJbW2F1dG9jb21wbGV0ZV1dIiBhdXRvZm9jdXMkPSJbW2F1dG9mb2N1c11dIiBhdXRvY2FwaXRhbGl6ZSQ9IltbYXV0b2NhcGl0YWxpemVdXSIgaW5wdXRtb2RlJD0iW1tpbnB1dG1vZGVdXSIgcGxhY2Vob2xkZXIkPSJbW3BsYWNlaG9sZGVyXV0iIHJlYWRvbmx5JD0iW1tyZWFkb25seV1dIiByZXF1aXJlZCQ9IltbcmVxdWlyZWRdXSIgZGlzYWJsZWQkPSJbW2Rpc2FibGVkXV0iIHJvd3MkPSJbW3Jvd3NdXSIgbWlubGVuZ3RoJD0iW1ttaW5sZW5ndGhdXSIgbWF4bGVuZ3RoJD0iW1ttYXhsZW5ndGhdXSI+PC90ZXh0YXJlYT4KICAgIDwvZGl2PgpgLGlzOiJpcm9uLWF1dG9ncm93LXRleHRhcmVhIixiZWhhdmlvcnM6W29hLFdvXSxwcm9wZXJ0aWVzOnt2YWx1ZTp7b2JzZXJ2ZXI6Il92YWx1ZUNoYW5nZWQiLHR5cGU6U3RyaW5nLG5vdGlmeTohMH0sYmluZFZhbHVlOntvYnNlcnZlcjoiX2JpbmRWYWx1ZUNoYW5nZWQiLHR5cGU6U3RyaW5nLG5vdGlmeTohMH0scm93czp7dHlwZTpOdW1iZXIsdmFsdWU6MSxvYnNlcnZlcjoiX3VwZGF0ZUNhY2hlZCJ9LG1heFJvd3M6e3R5cGU6TnVtYmVyLHZhbHVlOjAsb2JzZXJ2ZXI6Il91cGRhdGVDYWNoZWQifSxhdXRvY29tcGxldGU6e3R5cGU6U3RyaW5nLHZhbHVlOiJvZmYifSxhdXRvZm9jdXM6e3R5cGU6Qm9vbGVhbix2YWx1ZTohMX0sYXV0b2NhcGl0YWxpemU6e3R5cGU6U3RyaW5nLHZhbHVlOiJub25lIn0saW5wdXRtb2RlOnt0eXBlOlN0cmluZ30scGxhY2Vob2xkZXI6e3R5cGU6U3RyaW5nfSxyZWFkb25seTp7dHlwZTpTdHJpbmd9LHJlcXVpcmVkOnt0eXBlOkJvb2xlYW59LG1pbmxlbmd0aDp7dHlwZTpOdW1iZXJ9LG1heGxlbmd0aDp7dHlwZTpOdW1iZXJ9LGxhYmVsOnt0eXBlOlN0cmluZ319LGxpc3RlbmVyczp7aW5wdXQ6Il9vbklucHV0In0sZ2V0IHRleHRhcmVhKCl7cmV0dXJuIHRoaXMuJC50ZXh0YXJlYX0sZ2V0IHNlbGVjdGlvblN0YXJ0KCl7cmV0dXJuIHRoaXMuJC50ZXh0YXJlYS5zZWxlY3Rpb25TdGFydH0sZ2V0IHNlbGVjdGlvbkVuZCgpe3JldHVybiB0aGlzLiQudGV4dGFyZWEuc2VsZWN0aW9uRW5kfSxzZXQgc2VsZWN0aW9uU3RhcnQodCl7dGhpcy4kLnRleHRhcmVhLnNlbGVjdGlvblN0YXJ0PXR9LHNldCBzZWxlY3Rpb25FbmQodCl7dGhpcy4kLnRleHRhcmVhLnNlbGVjdGlvbkVuZD10fSxhdHRhY2hlZDpmdW5jdGlvbigpe25hdmlnYXRvci51c2VyQWdlbnQubWF0Y2goL2lQKD86W29hXWR8aG9uZSkvKSYmIW5hdmlnYXRvci51c2VyQWdlbnQubWF0Y2goL09TIDFbMzQ1Njc4OV0vKSYmKHRoaXMuJC50ZXh0YXJlYS5zdHlsZS5tYXJnaW5MZWZ0PSItM3B4Iil9LHZhbGlkYXRlOmZ1bmN0aW9uKCl7dmFyIHQ9dGhpcy4kLnRleHRhcmVhLnZhbGlkaXR5LnZhbGlkO3JldHVybiB0JiYodGhpcy5yZXF1aXJlZCYmIiI9PT10aGlzLnZhbHVlP3Q9ITE6dGhpcy5oYXNWYWxpZGF0b3IoKSYmKHQ9b2EudmFsaWRhdGUuY2FsbCh0aGlzLHRoaXMudmFsdWUpKSksdGhpcy5pbnZhbGlkPSF0LHRoaXMuZmlyZSgiaXJvbi1pbnB1dC12YWxpZGF0ZSIpLHR9LF9iaW5kVmFsdWVDaGFuZ2VkOmZ1bmN0aW9uKHQpe3RoaXMudmFsdWU9dH0sX3ZhbHVlQ2hhbmdlZDpmdW5jdGlvbih0KXt2YXIgZT10aGlzLnRleHRhcmVhO2UmJihlLnZhbHVlIT09dCYmKGUudmFsdWU9dHx8MD09PXQ/dDoiIiksdGhpcy5iaW5kVmFsdWU9dCx0aGlzLiQubWlycm9yLmlubmVySFRNTD10aGlzLl92YWx1ZUZvck1pcnJvcigpLHRoaXMuZmlyZSgiYmluZC12YWx1ZS1jaGFuZ2VkIix7dmFsdWU6dGhpcy5iaW5kVmFsdWV9KSl9LF9vbklucHV0OmZ1bmN0aW9uKHQpe3ZhciBlPXFpKHQpLnBhdGg7dGhpcy52YWx1ZT1lP2VbMF0udmFsdWU6dC50YXJnZXQudmFsdWV9LF9jb25zdHJhaW46ZnVuY3Rpb24odCl7dmFyIGU7Zm9yKHQ9dHx8WyIiXSxlPXRoaXMubWF4Um93cz4wJiZ0Lmxlbmd0aD50aGlzLm1heFJvd3M/dC5zbGljZSgwLHRoaXMubWF4Um93cyk6dC5zbGljZSgwKTt0aGlzLnJvd3M+MCYmZS5sZW5ndGg8dGhpcy5yb3dzOyllLnB1c2goIiIpO3JldHVybiBlLmpvaW4oIjxici8+IikrIiYjMTYwOyJ9LF92YWx1ZUZvck1pcnJvcjpmdW5jdGlvbigpe3ZhciB0PXRoaXMudGV4dGFyZWE7aWYodClyZXR1cm4gdGhpcy50b2tlbnM9dCYmdC52YWx1ZT90LnZhbHVlLnJlcGxhY2UoLyYvZ20sIiZhbXA7IikucmVwbGFjZSgvIi9nbSwiJnF1b3Q7IikucmVwbGFjZSgvJy9nbSwiJiMzOTsiKS5yZXBsYWNlKC88L2dtLCImbHQ7IikucmVwbGFjZSgvPi9nbSwiJmd0OyIpLnNwbGl0KCJcbiIpOlsiIl0sdGhpcy5fY29uc3RyYWluKHRoaXMudG9rZW5zKX0sX3VwZGF0ZUNhY2hlZDpmdW5jdGlvbigpe3RoaXMuJC5taXJyb3IuaW5uZXJIVE1MPXRoaXMuX2NvbnN0cmFpbih0aGlzLnRva2Vucyl9fSksCi8qKgogICAgQGxpY2Vuc2UKICAgIENvcHlyaWdodCAoYykgMjAxNSBUaGUgUG9seW1lciBQcm9qZWN0IEF1dGhvcnMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgICBUaGlzIGNvZGUgbWF5IG9ubHkgYmUgdXNlZCB1bmRlciB0aGUgQlNEIHN0eWxlIGxpY2Vuc2UgZm91bmQgYXQKICAgIGh0dHA6Ly9wb2x5bWVyLmdpdGh1Yi5pby9MSUNFTlNFLnR4dCBUaGUgY29tcGxldGUgc2V0IG9mIGF1dGhvcnMgbWF5IGJlIGZvdW5kIGF0CiAgICBodHRwOi8vcG9seW1lci5naXRodWIuaW8vQVVUSE9SUy50eHQgVGhlIGNvbXBsZXRlIHNldCBvZiBjb250cmlidXRvcnMgbWF5IGJlCiAgICBmb3VuZCBhdCBodHRwOi8vcG9seW1lci5naXRodWIuaW8vQ09OVFJJQlVUT1JTLnR4dCBDb2RlIGRpc3RyaWJ1dGVkIGJ5IEdvb2dsZSBhcwogICAgcGFydCBvZiB0aGUgcG9seW1lciBwcm9qZWN0IGlzIGFsc28gc3ViamVjdCB0byBhbiBhZGRpdGlvbmFsIElQIHJpZ2h0cyBncmFudAogICAgZm91bmQgYXQgaHR0cDovL3BvbHltZXIuZ2l0aHViLmlvL1BBVEVOVFMudHh0CiAgICAqLwpOcih7X3RlbXBsYXRlOl9lYAogICAgPHN0eWxlPgogICAgICA6aG9zdCB7CiAgICAgICAgZGlzcGxheTogYmxvY2s7CiAgICAgIH0KCiAgICAgIDpob3N0KFtoaWRkZW5dKSB7CiAgICAgICAgZGlzcGxheTogbm9uZSAhaW1wb3J0YW50OwogICAgICB9CgogICAgICBsYWJlbCB7CiAgICAgICAgcG9pbnRlci1ldmVudHM6IG5vbmU7CiAgICAgIH0KICAgIDwvc3R5bGU+CgogICAgPHBhcGVyLWlucHV0LWNvbnRhaW5lciBuby1sYWJlbC1mbG9hdCQ9Iltbbm9MYWJlbEZsb2F0XV0iIGFsd2F5cy1mbG9hdC1sYWJlbD0iW1tfY29tcHV0ZUFsd2F5c0Zsb2F0TGFiZWwoYWx3YXlzRmxvYXRMYWJlbCxwbGFjZWhvbGRlcildXSIgYXV0by12YWxpZGF0ZSQ9IltbYXV0b1ZhbGlkYXRlXV0iIGRpc2FibGVkJD0iW1tkaXNhYmxlZF1dIiBpbnZhbGlkPSJbW2ludmFsaWRdXSI+CgogICAgICA8bGFiZWwgaGlkZGVuJD0iW1shbGFiZWxdXSIgYXJpYS1oaWRkZW49InRydWUiIGZvciQ9IltbX2lucHV0SWRdXSIgc2xvdD0ibGFiZWwiPltbbGFiZWxdXTwvbGFiZWw+CgogICAgICA8aXJvbi1hdXRvZ3Jvdy10ZXh0YXJlYSBjbGFzcz0icGFwZXItaW5wdXQtaW5wdXQiIHNsb3Q9ImlucHV0IiBpZCQ9IltbX2lucHV0SWRdXSIgYXJpYS1sYWJlbGxlZGJ5JD0iW1tfYXJpYUxhYmVsbGVkQnldXSIgYXJpYS1kZXNjcmliZWRieSQ9IltbX2FyaWFEZXNjcmliZWRCeV1dIiBiaW5kLXZhbHVlPSJ7e3ZhbHVlfX0iIGludmFsaWQ9Int7aW52YWxpZH19IiB2YWxpZGF0b3IkPSJbW3ZhbGlkYXRvcl1dIiBkaXNhYmxlZCQ9IltbZGlzYWJsZWRdXSIgYXV0b2NvbXBsZXRlJD0iW1thdXRvY29tcGxldGVdXSIgYXV0b2ZvY3VzJD0iW1thdXRvZm9jdXNdXSIgaW5wdXRtb2RlJD0iW1tpbnB1dG1vZGVdXSIgbmFtZSQ9IltbbmFtZV1dIiBwbGFjZWhvbGRlciQ9IltbcGxhY2Vob2xkZXJdXSIgcmVhZG9ubHkkPSJbW3JlYWRvbmx5XV0iIHJlcXVpcmVkJD0iW1tyZXF1aXJlZF1dIiBtaW5sZW5ndGgkPSJbW21pbmxlbmd0aF1dIiBtYXhsZW5ndGgkPSJbW21heGxlbmd0aF1dIiBhdXRvY2FwaXRhbGl6ZSQ9IltbYXV0b2NhcGl0YWxpemVdXSIgcm93cyQ9Iltbcm93c11dIiBtYXgtcm93cyQ9IltbbWF4Um93c11dIiBvbi1jaGFuZ2U9Il9vbkNoYW5nZSI+PC9pcm9uLWF1dG9ncm93LXRleHRhcmVhPgoKICAgICAgPHRlbXBsYXRlIGlzPSJkb20taWYiIGlmPSJbW2Vycm9yTWVzc2FnZV1dIj4KICAgICAgICA8cGFwZXItaW5wdXQtZXJyb3IgYXJpYS1saXZlPSJhc3NlcnRpdmUiIHNsb3Q9ImFkZC1vbiI+W1tlcnJvck1lc3NhZ2VdXTwvcGFwZXItaW5wdXQtZXJyb3I+CiAgICAgIDwvdGVtcGxhdGU+CgogICAgICA8dGVtcGxhdGUgaXM9ImRvbS1pZiIgaWY9IltbY2hhckNvdW50ZXJdXSI+CiAgICAgICAgPHBhcGVyLWlucHV0LWNoYXItY291bnRlciBzbG90PSJhZGQtb24iPjwvcGFwZXItaW5wdXQtY2hhci1jb3VudGVyPgogICAgICA8L3RlbXBsYXRlPgoKICAgIDwvcGFwZXItaW5wdXQtY29udGFpbmVyPgpgLGlzOiJwYXBlci10ZXh0YXJlYSIsYmVoYXZpb3JzOltIYSxpYV0scHJvcGVydGllczp7X2FyaWFMYWJlbGxlZEJ5OntvYnNlcnZlcjoiX2FyaWFMYWJlbGxlZEJ5Q2hhbmdlZCIsdHlwZTpTdHJpbmd9LF9hcmlhRGVzY3JpYmVkQnk6e29ic2VydmVyOiJfYXJpYURlc2NyaWJlZEJ5Q2hhbmdlZCIsdHlwZTpTdHJpbmd9LHZhbHVlOnt0eXBlOlN0cmluZ30scm93czp7dHlwZTpOdW1iZXIsdmFsdWU6MX0sbWF4Um93czp7dHlwZTpOdW1iZXIsdmFsdWU6MH19LGdldCBzZWxlY3Rpb25TdGFydCgpe3JldHVybiB0aGlzLiQuaW5wdXQudGV4dGFyZWEuc2VsZWN0aW9uU3RhcnR9LHNldCBzZWxlY3Rpb25TdGFydCh0KXt0aGlzLiQuaW5wdXQudGV4dGFyZWEuc2VsZWN0aW9uU3RhcnQ9dH0sZ2V0IHNlbGVjdGlvbkVuZCgpe3JldHVybiB0aGlzLiQuaW5wdXQudGV4dGFyZWEuc2VsZWN0aW9uRW5kfSxzZXQgc2VsZWN0aW9uRW5kKHQpe3RoaXMuJC5pbnB1dC50ZXh0YXJlYS5zZWxlY3Rpb25FbmQ9dH0sX2FyaWFMYWJlbGxlZEJ5Q2hhbmdlZDpmdW5jdGlvbih0KXt0aGlzLl9mb2N1c2FibGVFbGVtZW50LnNldEF0dHJpYnV0ZSgiYXJpYS1sYWJlbGxlZGJ5Iix0KX0sX2FyaWFEZXNjcmliZWRCeUNoYW5nZWQ6ZnVuY3Rpb24odCl7dGhpcy5fZm9jdXNhYmxlRWxlbWVudC5zZXRBdHRyaWJ1dGUoImFyaWEtZGVzY3JpYmVkYnkiLHQpfSxnZXQgX2ZvY3VzYWJsZUVsZW1lbnQoKXtyZXR1cm4gdGhpcy5pbnB1dEVsZW1lbnQudGV4dGFyZWF9fSk7Ci8qKgogICAgQGxpY2Vuc2UKICAgIENvcHlyaWdodCAoYykgMjAxNSBUaGUgUG9seW1lciBQcm9qZWN0IEF1dGhvcnMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgICBUaGlzIGNvZGUgbWF5IG9ubHkgYmUgdXNlZCB1bmRlciB0aGUgQlNEIHN0eWxlIGxpY2Vuc2UgZm91bmQgYXQKICAgIGh0dHA6Ly9wb2x5bWVyLmdpdGh1Yi5pby9MSUNFTlNFLnR4dCBUaGUgY29tcGxldGUgc2V0IG9mIGF1dGhvcnMgbWF5IGJlIGZvdW5kIGF0CiAgICBodHRwOi8vcG9seW1lci5naXRodWIuaW8vQVVUSE9SUy50eHQgVGhlIGNvbXBsZXRlIHNldCBvZiBjb250cmlidXRvcnMgbWF5IGJlCiAgICBmb3VuZCBhdCBodHRwOi8vcG9seW1lci5naXRodWIuaW8vQ09OVFJJQlVUT1JTLnR4dCBDb2RlIGRpc3RyaWJ1dGVkIGJ5IEdvb2dsZSBhcwogICAgcGFydCBvZiB0aGUgcG9seW1lciBwcm9qZWN0IGlzIGFsc28gc3ViamVjdCB0byBhbiBhZGRpdGlvbmFsIElQIHJpZ2h0cyBncmFudAogICAgZm91bmQgYXQgaHR0cDovL3BvbHltZXIuZ2l0aHViLmlvL1BBVEVOVFMudHh0CiAgICAqLwpjb25zdCBZYT1kb2N1bWVudC5jcmVhdGVFbGVtZW50KCJ0ZW1wbGF0ZSIpO1lhLnNldEF0dHJpYnV0ZSgic3R5bGUiLCJkaXNwbGF5OiBub25lOyIpLFlhLmlubmVySFRNTD0iPGRvbS1tb2R1bGUgaWQ9XCJwYXBlci1pdGVtLXNoYXJlZC1zdHlsZXNcIj5cbiAgPHRlbXBsYXRlPlxuICAgIDxzdHlsZT5cbiAgICAgIDpob3N0LCAucGFwZXItaXRlbSB7XG4gICAgICAgIGRpc3BsYXk6IGJsb2NrO1xuICAgICAgICBwb3NpdGlvbjogcmVsYXRpdmU7XG4gICAgICAgIG1pbi1oZWlnaHQ6IHZhcigtLXBhcGVyLWl0ZW0tbWluLWhlaWdodCwgNDhweCk7XG4gICAgICAgIHBhZGRpbmc6IDBweCAxNnB4O1xuICAgICAgfVxuXG4gICAgICAucGFwZXItaXRlbSB7XG4gICAgICAgIEBhcHBseSAtLXBhcGVyLWZvbnQtc3ViaGVhZDtcbiAgICAgICAgYm9yZGVyOm5vbmU7XG4gICAgICAgIG91dGxpbmU6IG5vbmU7XG4gICAgICAgIGJhY2tncm91bmQ6IHdoaXRlO1xuICAgICAgICB3aWR0aDogMTAwJTtcbiAgICAgICAgdGV4dC1hbGlnbjogbGVmdDtcbiAgICAgIH1cblxuICAgICAgOmhvc3QoW2hpZGRlbl0pLCAucGFwZXItaXRlbVtoaWRkZW5dIHtcbiAgICAgICAgZGlzcGxheTogbm9uZSAhaW1wb3J0YW50O1xuICAgICAgfVxuXG4gICAgICA6aG9zdCguaXJvbi1zZWxlY3RlZCksIC5wYXBlci1pdGVtLmlyb24tc2VsZWN0ZWQge1xuICAgICAgICBmb250LXdlaWdodDogdmFyKC0tcGFwZXItaXRlbS1zZWxlY3RlZC13ZWlnaHQsIGJvbGQpO1xuXG4gICAgICAgIEBhcHBseSAtLXBhcGVyLWl0ZW0tc2VsZWN0ZWQ7XG4gICAgICB9XG5cbiAgICAgIDpob3N0KFtkaXNhYmxlZF0pLCAucGFwZXItaXRlbVtkaXNhYmxlZF0ge1xuICAgICAgICBjb2xvcjogdmFyKC0tcGFwZXItaXRlbS1kaXNhYmxlZC1jb2xvciwgdmFyKC0tZGlzYWJsZWQtdGV4dC1jb2xvcikpO1xuXG4gICAgICAgIEBhcHBseSAtLXBhcGVyLWl0ZW0tZGlzYWJsZWQ7XG4gICAgICB9XG5cbiAgICAgIDpob3N0KDpmb2N1cyksIC5wYXBlci1pdGVtOmZvY3VzIHtcbiAgICAgICAgcG9zaXRpb246IHJlbGF0aXZlO1xuICAgICAgICBvdXRsaW5lOiAwO1xuXG4gICAgICAgIEBhcHBseSAtLXBhcGVyLWl0ZW0tZm9jdXNlZDtcbiAgICAgIH1cblxuICAgICAgOmhvc3QoOmZvY3VzKTpiZWZvcmUsIC5wYXBlci1pdGVtOmZvY3VzOmJlZm9yZSB7XG4gICAgICAgIEBhcHBseSAtLWxheW91dC1maXQ7XG5cbiAgICAgICAgYmFja2dyb3VuZDogY3VycmVudENvbG9yO1xuICAgICAgICBjb250ZW50OiAnJztcbiAgICAgICAgb3BhY2l0eTogdmFyKC0tZGFyay1kaXZpZGVyLW9wYWNpdHkpO1xuICAgICAgICBwb2ludGVyLWV2ZW50czogbm9uZTtcblxuICAgICAgICBAYXBwbHkgLS1wYXBlci1pdGVtLWZvY3VzZWQtYmVmb3JlO1xuICAgICAgfVxuICAgIDwvc3R5bGU+XG4gIDwvdGVtcGxhdGU+XG48L2RvbS1tb2R1bGU+Iixkb2N1bWVudC5oZWFkLmFwcGVuZENoaWxkKFlhLmNvbnRlbnQpOwovKioKICAgIEBsaWNlbnNlCiAgICBDb3B5cmlnaHQgKGMpIDIwMTUgVGhlIFBvbHltZXIgUHJvamVjdCBBdXRob3JzLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICAgVGhpcyBjb2RlIG1heSBvbmx5IGJlIHVzZWQgdW5kZXIgdGhlIEJTRCBzdHlsZSBsaWNlbnNlIGZvdW5kIGF0CiAgICBodHRwOi8vcG9seW1lci5naXRodWIuaW8vTElDRU5TRS50eHQgVGhlIGNvbXBsZXRlIHNldCBvZiBhdXRob3JzIG1heSBiZSBmb3VuZCBhdAogICAgaHR0cDovL3BvbHltZXIuZ2l0aHViLmlvL0FVVEhPUlMudHh0IFRoZSBjb21wbGV0ZSBzZXQgb2YgY29udHJpYnV0b3JzIG1heSBiZQogICAgZm91bmQgYXQgaHR0cDovL3BvbHltZXIuZ2l0aHViLmlvL0NPTlRSSUJVVE9SUy50eHQgQ29kZSBkaXN0cmlidXRlZCBieSBHb29nbGUgYXMKICAgIHBhcnQgb2YgdGhlIHBvbHltZXIgcHJvamVjdCBpcyBhbHNvIHN1YmplY3QgdG8gYW4gYWRkaXRpb25hbCBJUCByaWdodHMgZ3JhbnQKICAgIGZvdW5kIGF0IGh0dHA6Ly9wb2x5bWVyLmdpdGh1Yi5pby9QQVRFTlRTLnR4dAogICAgKi8KY29uc3QgWGE9W1lvLFdvLHtob3N0QXR0cmlidXRlczp7cm9sZToib3B0aW9uIix0YWJpbmRleDoiMCJ9fV07Ci8qKgogICAgQGxpY2Vuc2UKICAgIENvcHlyaWdodCAoYykgMjAxNSBUaGUgUG9seW1lciBQcm9qZWN0IEF1dGhvcnMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgICBUaGlzIGNvZGUgbWF5IG9ubHkgYmUgdXNlZCB1bmRlciB0aGUgQlNEIHN0eWxlIGxpY2Vuc2UgZm91bmQgYXQKICAgIGh0dHA6Ly9wb2x5bWVyLmdpdGh1Yi5pby9MSUNFTlNFLnR4dCBUaGUgY29tcGxldGUgc2V0IG9mIGF1dGhvcnMgbWF5IGJlIGZvdW5kIGF0CiAgICBodHRwOi8vcG9seW1lci5naXRodWIuaW8vQVVUSE9SUy50eHQgVGhlIGNvbXBsZXRlIHNldCBvZiBjb250cmlidXRvcnMgbWF5IGJlCiAgICBmb3VuZCBhdCBodHRwOi8vcG9seW1lci5naXRodWIuaW8vQ09OVFJJQlVUT1JTLnR4dCBDb2RlIGRpc3RyaWJ1dGVkIGJ5IEdvb2dsZSBhcwogICAgcGFydCBvZiB0aGUgcG9seW1lciBwcm9qZWN0IGlzIGFsc28gc3ViamVjdCB0byBhbiBhZGRpdGlvbmFsIElQIHJpZ2h0cyBncmFudAogICAgZm91bmQgYXQgaHR0cDovL3BvbHltZXIuZ2l0aHViLmlvL1BBVEVOVFMudHh0CiAgICAqLwpOcih7X3RlbXBsYXRlOl9lYAogICAgPHN0eWxlIGluY2x1ZGU9InBhcGVyLWl0ZW0tc2hhcmVkLXN0eWxlcyI+CiAgICAgIDpob3N0IHsKICAgICAgICBAYXBwbHkgLS1sYXlvdXQtaG9yaXpvbnRhbDsKICAgICAgICBAYXBwbHkgLS1sYXlvdXQtY2VudGVyOwogICAgICAgIEBhcHBseSAtLXBhcGVyLWZvbnQtc3ViaGVhZDsKCiAgICAgICAgQGFwcGx5IC0tcGFwZXItaXRlbTsKICAgICAgfQogICAgPC9zdHlsZT4KICAgIDxzbG90Pjwvc2xvdD4KYCxpczoicGFwZXItaXRlbSIsYmVoYXZpb3JzOltYYV19KSwKLyoqCiAgICBAbGljZW5zZQogICAgQ29weXJpZ2h0IChjKSAyMDE1IFRoZSBQb2x5bWVyIFByb2plY3QgQXV0aG9ycy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAgIFRoaXMgY29kZSBtYXkgb25seSBiZSB1c2VkIHVuZGVyIHRoZSBCU0Qgc3R5bGUgbGljZW5zZSBmb3VuZCBhdAogICAgaHR0cDovL3BvbHltZXIuZ2l0aHViLmlvL0xJQ0VOU0UudHh0IFRoZSBjb21wbGV0ZSBzZXQgb2YgYXV0aG9ycyBtYXkgYmUgZm91bmQgYXQKICAgIGh0dHA6Ly9wb2x5bWVyLmdpdGh1Yi5pby9BVVRIT1JTLnR4dCBUaGUgY29tcGxldGUgc2V0IG9mIGNvbnRyaWJ1dG9ycyBtYXkgYmUKICAgIGZvdW5kIGF0IGh0dHA6Ly9wb2x5bWVyLmdpdGh1Yi5pby9DT05UUklCVVRPUlMudHh0IENvZGUgZGlzdHJpYnV0ZWQgYnkgR29vZ2xlIGFzCiAgICBwYXJ0IG9mIHRoZSBwb2x5bWVyIHByb2plY3QgaXMgYWxzbyBzdWJqZWN0IHRvIGFuIGFkZGl0aW9uYWwgSVAgcmlnaHRzIGdyYW50CiAgICBmb3VuZCBhdCBodHRwOi8vcG9seW1lci5naXRodWIuaW8vUEFURU5UUy50eHQKICAgICovCk5yKHtfdGVtcGxhdGU6X2VgCiAgICA8c3R5bGU+CiAgICAgIDpob3N0IHsKICAgICAgICBvdmVyZmxvdzogaGlkZGVuOyAvKiBuZWVkZWQgZm9yIHRleHQtb3ZlcmZsb3c6IGVsbGlwc2lzIHRvIHdvcmsgb24gZmYgKi8KICAgICAgICBAYXBwbHkgLS1sYXlvdXQtdmVydGljYWw7CiAgICAgICAgQGFwcGx5IC0tbGF5b3V0LWNlbnRlci1qdXN0aWZpZWQ7CiAgICAgICAgQGFwcGx5IC0tbGF5b3V0LWZsZXg7CiAgICAgIH0KCiAgICAgIDpob3N0KFt0d28tbGluZV0pIHsKICAgICAgICBtaW4taGVpZ2h0OiB2YXIoLS1wYXBlci1pdGVtLWJvZHktdHdvLWxpbmUtbWluLWhlaWdodCwgNzJweCk7CiAgICAgIH0KCiAgICAgIDpob3N0KFt0aHJlZS1saW5lXSkgewogICAgICAgIG1pbi1oZWlnaHQ6IHZhcigtLXBhcGVyLWl0ZW0tYm9keS10aHJlZS1saW5lLW1pbi1oZWlnaHQsIDg4cHgpOwogICAgICB9CgogICAgICA6aG9zdCA+IDo6c2xvdHRlZCgqKSB7CiAgICAgICAgb3ZlcmZsb3c6IGhpZGRlbjsKICAgICAgICB0ZXh0LW92ZXJmbG93OiBlbGxpcHNpczsKICAgICAgICB3aGl0ZS1zcGFjZTogbm93cmFwOwogICAgICB9CgogICAgICA6aG9zdCA+IDo6c2xvdHRlZChbc2Vjb25kYXJ5XSkgewogICAgICAgIEBhcHBseSAtLXBhcGVyLWZvbnQtYm9keTE7CgogICAgICAgIGNvbG9yOiB2YXIoLS1wYXBlci1pdGVtLWJvZHktc2Vjb25kYXJ5LWNvbG9yLCB2YXIoLS1zZWNvbmRhcnktdGV4dC1jb2xvcikpOwoKICAgICAgICBAYXBwbHkgLS1wYXBlci1pdGVtLWJvZHktc2Vjb25kYXJ5OwogICAgICB9CiAgICA8L3N0eWxlPgoKICAgIDxzbG90Pjwvc2xvdD4KYCxpczoicGFwZXItaXRlbS1ib2R5In0pLAovKioKICAgIEBsaWNlbnNlCiAgICBDb3B5cmlnaHQgKGMpIDIwMTUgVGhlIFBvbHltZXIgUHJvamVjdCBBdXRob3JzLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICAgVGhpcyBjb2RlIG1heSBvbmx5IGJlIHVzZWQgdW5kZXIgdGhlIEJTRCBzdHlsZSBsaWNlbnNlIGZvdW5kIGF0CiAgICBodHRwOi8vcG9seW1lci5naXRodWIuaW8vTElDRU5TRS50eHQgVGhlIGNvbXBsZXRlIHNldCBvZiBhdXRob3JzIG1heSBiZSBmb3VuZCBhdAogICAgaHR0cDovL3BvbHltZXIuZ2l0aHViLmlvL0FVVEhPUlMudHh0IFRoZSBjb21wbGV0ZSBzZXQgb2YgY29udHJpYnV0b3JzIG1heSBiZQogICAgZm91bmQgYXQgaHR0cDovL3BvbHltZXIuZ2l0aHViLmlvL0NPTlRSSUJVVE9SUy50eHQgQ29kZSBkaXN0cmlidXRlZCBieSBHb29nbGUgYXMKICAgIHBhcnQgb2YgdGhlIHBvbHltZXIgcHJvamVjdCBpcyBhbHNvIHN1YmplY3QgdG8gYW4gYWRkaXRpb25hbCBJUCByaWdodHMgZ3JhbnQKICAgIGZvdW5kIGF0IGh0dHA6Ly9wb2x5bWVyLmdpdGh1Yi5pby9QQVRFTlRTLnR4dAogICAgKi8KTnIoe190ZW1wbGF0ZTpfZWAKICAgIDxzdHlsZSBpbmNsdWRlPSJwYXBlci1pdGVtLXNoYXJlZC1zdHlsZXMiPjwvc3R5bGU+CiAgICA8c3R5bGU+CiAgICAgIDpob3N0IHsKICAgICAgICBAYXBwbHkgLS1sYXlvdXQtaG9yaXpvbnRhbDsKICAgICAgICBAYXBwbHkgLS1sYXlvdXQtY2VudGVyOwogICAgICAgIEBhcHBseSAtLXBhcGVyLWZvbnQtc3ViaGVhZDsKCiAgICAgICAgQGFwcGx5IC0tcGFwZXItaXRlbTsKICAgICAgICBAYXBwbHkgLS1wYXBlci1pY29uLWl0ZW07CiAgICAgIH0KCiAgICAgIC5jb250ZW50LWljb24gewogICAgICAgIEBhcHBseSAtLWxheW91dC1ob3Jpem9udGFsOwogICAgICAgIEBhcHBseSAtLWxheW91dC1jZW50ZXI7CgogICAgICAgIHdpZHRoOiB2YXIoLS1wYXBlci1pdGVtLWljb24td2lkdGgsIDU2cHgpOwogICAgICAgIEBhcHBseSAtLXBhcGVyLWl0ZW0taWNvbjsKICAgICAgfQogICAgPC9zdHlsZT4KCiAgICA8ZGl2IGlkPSJjb250ZW50SWNvbiIgY2xhc3M9ImNvbnRlbnQtaWNvbiI+CiAgICAgIDxzbG90IG5hbWU9Iml0ZW0taWNvbiI+PC9zbG90PgogICAgPC9kaXY+CiAgICA8c2xvdD48L3Nsb3Q+CmAsaXM6InBhcGVyLWljb24taXRlbSIsYmVoYXZpb3JzOltYYV19KTsKLyoqCiAgICBAbGljZW5zZQogICAgQ29weXJpZ2h0IChjKSAyMDE1IFRoZSBQb2x5bWVyIFByb2plY3QgQXV0aG9ycy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAgIFRoaXMgY29kZSBtYXkgb25seSBiZSB1c2VkIHVuZGVyIHRoZSBCU0Qgc3R5bGUgbGljZW5zZSBmb3VuZCBhdAogICAgaHR0cDovL3BvbHltZXIuZ2l0aHViLmlvL0xJQ0VOU0UudHh0IFRoZSBjb21wbGV0ZSBzZXQgb2YgYXV0aG9ycyBtYXkgYmUgZm91bmQgYXQKICAgIGh0dHA6Ly9wb2x5bWVyLmdpdGh1Yi5pby9BVVRIT1JTLnR4dCBUaGUgY29tcGxldGUgc2V0IG9mIGNvbnRyaWJ1dG9ycyBtYXkgYmUKICAgIGZvdW5kIGF0IGh0dHA6Ly9wb2x5bWVyLmdpdGh1Yi5pby9DT05UUklCVVRPUlMudHh0IENvZGUgZGlzdHJpYnV0ZWQgYnkgR29vZ2xlIGFzCiAgICBwYXJ0IG9mIHRoZSBwb2x5bWVyIHByb2plY3QgaXMgYWxzbyBzdWJqZWN0IHRvIGFuIGFkZGl0aW9uYWwgSVAgcmlnaHRzIGdyYW50CiAgICBmb3VuZCBhdCBodHRwOi8vcG9seW1lci5naXRodWIuaW8vUEFURU5UUy50eHQKICAgICovCmNvbnN0ICRhPXtwcm9wZXJ0aWVzOnttdWx0aTp7dHlwZTpCb29sZWFuLHZhbHVlOiExLG9ic2VydmVyOiJtdWx0aUNoYW5nZWQifSxzZWxlY3RlZFZhbHVlczp7dHlwZTpBcnJheSxub3RpZnk6ITAsdmFsdWU6ZnVuY3Rpb24oKXtyZXR1cm5bXX19LHNlbGVjdGVkSXRlbXM6e3R5cGU6QXJyYXkscmVhZE9ubHk6ITAsbm90aWZ5OiEwLHZhbHVlOmZ1bmN0aW9uKCl7cmV0dXJuW119fX0sb2JzZXJ2ZXJzOlsiX3VwZGF0ZVNlbGVjdGVkKHNlbGVjdGVkVmFsdWVzLnNwbGljZXMpIl0sc2VsZWN0OmZ1bmN0aW9uKHQpe3RoaXMubXVsdGk/dGhpcy5fdG9nZ2xlU2VsZWN0ZWQodCk6dGhpcy5zZWxlY3RlZD10fSxtdWx0aUNoYW5nZWQ6ZnVuY3Rpb24odCl7dGhpcy5fc2VsZWN0aW9uLm11bHRpPXQsdGhpcy5fdXBkYXRlU2VsZWN0ZWQoKX0sZ2V0IF9zaG91bGRVcGRhdGVTZWxlY3Rpb24oKXtyZXR1cm4gbnVsbCE9dGhpcy5zZWxlY3RlZHx8bnVsbCE9dGhpcy5zZWxlY3RlZFZhbHVlcyYmdGhpcy5zZWxlY3RlZFZhbHVlcy5sZW5ndGh9LF91cGRhdGVBdHRyRm9yU2VsZWN0ZWQ6ZnVuY3Rpb24oKXt0aGlzLm11bHRpP3RoaXMuc2VsZWN0ZWRJdGVtcyYmdGhpcy5zZWxlY3RlZEl0ZW1zLmxlbmd0aD4wJiYodGhpcy5zZWxlY3RlZFZhbHVlcz10aGlzLnNlbGVjdGVkSXRlbXMubWFwKChmdW5jdGlvbih0KXtyZXR1cm4gdGhpcy5faW5kZXhUb1ZhbHVlKHRoaXMuaW5kZXhPZih0KSl9KSx0aGlzKS5maWx0ZXIoKGZ1bmN0aW9uKHQpe3JldHVybiBudWxsIT10fSksdGhpcykpOmpvLl91cGRhdGVBdHRyRm9yU2VsZWN0ZWQuYXBwbHkodGhpcyl9LF91cGRhdGVTZWxlY3RlZDpmdW5jdGlvbigpe3RoaXMubXVsdGk/dGhpcy5fc2VsZWN0TXVsdGkodGhpcy5zZWxlY3RlZFZhbHVlcyk6dGhpcy5fc2VsZWN0U2VsZWN0ZWQodGhpcy5zZWxlY3RlZCl9LF9zZWxlY3RNdWx0aTpmdW5jdGlvbih0KXt2YXIgZT0odGhpcy5fdmFsdWVzVG9JdGVtcyh0PXR8fFtdKXx8W10pLmZpbHRlcigoZnVuY3Rpb24odCl7cmV0dXJuIG51bGwhPXR9KSk7dGhpcy5fc2VsZWN0aW9uLmNsZWFyKGUpO2Zvcih2YXIgbj0wO248ZS5sZW5ndGg7bisrKXRoaXMuX3NlbGVjdGlvbi5zZXRJdGVtU2VsZWN0ZWQoZVtuXSwhMCk7dGhpcy5mYWxsYmFja1NlbGVjdGlvbiYmIXRoaXMuX3NlbGVjdGlvbi5nZXQoKS5sZW5ndGgmJnRoaXMuX3ZhbHVlVG9JdGVtKHRoaXMuZmFsbGJhY2tTZWxlY3Rpb24pJiZ0aGlzLnNlbGVjdCh0aGlzLmZhbGxiYWNrU2VsZWN0aW9uKX0sX3NlbGVjdGlvbkNoYW5nZTpmdW5jdGlvbigpe3ZhciB0PXRoaXMuX3NlbGVjdGlvbi5nZXQoKTt0aGlzLm11bHRpPyh0aGlzLl9zZXRTZWxlY3RlZEl0ZW1zKHQpLHRoaXMuX3NldFNlbGVjdGVkSXRlbSh0Lmxlbmd0aD90WzBdOm51bGwpKTpudWxsIT10Pyh0aGlzLl9zZXRTZWxlY3RlZEl0ZW1zKFt0XSksdGhpcy5fc2V0U2VsZWN0ZWRJdGVtKHQpKToodGhpcy5fc2V0U2VsZWN0ZWRJdGVtcyhbXSksdGhpcy5fc2V0U2VsZWN0ZWRJdGVtKG51bGwpKX0sX3RvZ2dsZVNlbGVjdGVkOmZ1bmN0aW9uKHQpe3ZhciBlPXRoaXMuc2VsZWN0ZWRWYWx1ZXMuaW5kZXhPZih0KTtlPDA/dGhpcy5wdXNoKCJzZWxlY3RlZFZhbHVlcyIsdCk6dGhpcy5zcGxpY2UoInNlbGVjdGVkVmFsdWVzIixlLDEpfSxfdmFsdWVzVG9JdGVtczpmdW5jdGlvbih0KXtyZXR1cm4gbnVsbD09dD9udWxsOnQubWFwKChmdW5jdGlvbih0KXtyZXR1cm4gdGhpcy5fdmFsdWVUb0l0ZW0odCl9KSx0aGlzKX19LEthPXtwcm9wZXJ0aWVzOntmb2N1c2VkSXRlbTp7b2JzZXJ2ZXI6Il9mb2N1c2VkSXRlbUNoYW5nZWQiLHJlYWRPbmx5OiEwLHR5cGU6T2JqZWN0fSxhdHRyRm9ySXRlbVRpdGxlOnt0eXBlOlN0cmluZ30sZGlzYWJsZWQ6e3R5cGU6Qm9vbGVhbix2YWx1ZTohMSxvYnNlcnZlcjoiX2Rpc2FibGVkQ2hhbmdlZCJ9fSxfTU9ESUZJRVJfS0VZUzpbIkFsdCIsIkFsdEdyYXBoIiwiQ2Fwc0xvY2siLCJDb250cm9sIiwiRm4iLCJGbkxvY2siLCJIeXBlciIsIk1ldGEiLCJOdW1Mb2NrIiwiT1MiLCJTY3JvbGxMb2NrIiwiU2hpZnQiLCJTdXBlciIsIlN5bWJvbCIsIlN5bWJvbExvY2siXSxfU0VBUkNIX1JFU0VUX1RJTUVPVVRfTVM6MWUzLF9wcmV2aW91c1RhYkluZGV4OjAsaG9zdEF0dHJpYnV0ZXM6e3JvbGU6Im1lbnUifSxvYnNlcnZlcnM6WyJfdXBkYXRlTXVsdGlzZWxlY3RhYmxlKG11bHRpKSJdLGxpc3RlbmVyczp7Zm9jdXM6Il9vbkZvY3VzIixrZXlkb3duOiJfb25LZXlkb3duIiwiaXJvbi1pdGVtcy1jaGFuZ2VkIjoiX29uSXJvbkl0ZW1zQ2hhbmdlZCJ9LGtleUJpbmRpbmdzOnt1cDoiX29uVXBLZXkiLGRvd246Il9vbkRvd25LZXkiLGVzYzoiX29uRXNjS2V5Iiwic2hpZnQrdGFiOmtleWRvd24iOiJfb25TaGlmdFRhYkRvd24ifSxhdHRhY2hlZDpmdW5jdGlvbigpe3RoaXMuX3Jlc2V0VGFiaW5kaWNlcygpfSxzZWxlY3Q6ZnVuY3Rpb24odCl7dGhpcy5fZGVmYXVsdEZvY3VzQXN5bmMmJih0aGlzLmNhbmNlbEFzeW5jKHRoaXMuX2RlZmF1bHRGb2N1c0FzeW5jKSx0aGlzLl9kZWZhdWx0Rm9jdXNBc3luYz1udWxsKTt2YXIgZT10aGlzLl92YWx1ZVRvSXRlbSh0KTtlJiZlLmhhc0F0dHJpYnV0ZSgiZGlzYWJsZWQiKXx8KHRoaXMuX3NldEZvY3VzZWRJdGVtKGUpLCRhLnNlbGVjdC5hcHBseSh0aGlzLGFyZ3VtZW50cykpfSxfcmVzZXRUYWJpbmRpY2VzOmZ1bmN0aW9uKCl7dmFyIHQ9dGhpcy5tdWx0aT90aGlzLnNlbGVjdGVkSXRlbXMmJnRoaXMuc2VsZWN0ZWRJdGVtc1swXTp0aGlzLnNlbGVjdGVkSXRlbTt0aGlzLml0ZW1zLmZvckVhY2goKGZ1bmN0aW9uKGUpe2Uuc2V0QXR0cmlidXRlKCJ0YWJpbmRleCIsZT09PXQ/IjAiOiItMSIpLGUuc2V0QXR0cmlidXRlKCJhcmlhLXNlbGVjdGVkIix0aGlzLl9zZWxlY3Rpb24uaXNTZWxlY3RlZChlKSl9KSx0aGlzKX0sX3VwZGF0ZU11bHRpc2VsZWN0YWJsZTpmdW5jdGlvbih0KXt0P3RoaXMuc2V0QXR0cmlidXRlKCJhcmlhLW11bHRpc2VsZWN0YWJsZSIsInRydWUiKTp0aGlzLnJlbW92ZUF0dHJpYnV0ZSgiYXJpYS1tdWx0aXNlbGVjdGFibGUiKX0sX2ZvY3VzV2l0aEtleWJvYXJkRXZlbnQ6ZnVuY3Rpb24odCl7aWYoLTE9PT10aGlzLl9NT0RJRklFUl9LRVlTLmluZGV4T2YodC5rZXkpKXt0aGlzLmNhbmNlbERlYm91bmNlcigiX2NsZWFyU2VhcmNoVGV4dCIpO2Zvcih2YXIgZSxuPXRoaXMuX3NlYXJjaFRleHR8fCIiLGk9KG4rPSh0LmtleSYmMT09dC5rZXkubGVuZ3RoP3Qua2V5OlN0cmluZy5mcm9tQ2hhckNvZGUodC5rZXlDb2RlKSkudG9Mb2NhbGVMb3dlckNhc2UoKSkubGVuZ3RoLHI9MDtlPXRoaXMuaXRlbXNbcl07cisrKWlmKCFlLmhhc0F0dHJpYnV0ZSgiZGlzYWJsZWQiKSl7dmFyIG89dGhpcy5hdHRyRm9ySXRlbVRpdGxlfHwidGV4dENvbnRlbnQiLGE9KGVbb118fGUuZ2V0QXR0cmlidXRlKG8pfHwiIikudHJpbSgpO2lmKCEoYS5sZW5ndGg8aSkmJmEuc2xpY2UoMCxpKS50b0xvY2FsZUxvd2VyQ2FzZSgpPT1uKXt0aGlzLl9zZXRGb2N1c2VkSXRlbShlKTticmVha319dGhpcy5fc2VhcmNoVGV4dD1uLHRoaXMuZGVib3VuY2UoIl9jbGVhclNlYXJjaFRleHQiLHRoaXMuX2NsZWFyU2VhcmNoVGV4dCx0aGlzLl9TRUFSQ0hfUkVTRVRfVElNRU9VVF9NUyl9fSxfY2xlYXJTZWFyY2hUZXh0OmZ1bmN0aW9uKCl7dGhpcy5fc2VhcmNoVGV4dD0iIn0sX2ZvY3VzUHJldmlvdXM6ZnVuY3Rpb24oKXtmb3IodmFyIHQ9dGhpcy5pdGVtcy5sZW5ndGgsZT1OdW1iZXIodGhpcy5pbmRleE9mKHRoaXMuZm9jdXNlZEl0ZW0pKSxuPTE7bjx0KzE7bisrKXt2YXIgaT10aGlzLml0ZW1zWyhlLW4rdCkldF07aWYoIWkuaGFzQXR0cmlidXRlKCJkaXNhYmxlZCIpKXt2YXIgcj1xaShpKS5nZXRPd25lclJvb3QoKXx8ZG9jdW1lbnQ7aWYodGhpcy5fc2V0Rm9jdXNlZEl0ZW0oaSkscWkocikuYWN0aXZlRWxlbWVudD09aSlyZXR1cm59fX0sX2ZvY3VzTmV4dDpmdW5jdGlvbigpe2Zvcih2YXIgdD10aGlzLml0ZW1zLmxlbmd0aCxlPU51bWJlcih0aGlzLmluZGV4T2YodGhpcy5mb2N1c2VkSXRlbSkpLG49MTtuPHQrMTtuKyspe3ZhciBpPXRoaXMuaXRlbXNbKGUrbikldF07aWYoIWkuaGFzQXR0cmlidXRlKCJkaXNhYmxlZCIpKXt2YXIgcj1xaShpKS5nZXRPd25lclJvb3QoKXx8ZG9jdW1lbnQ7aWYodGhpcy5fc2V0Rm9jdXNlZEl0ZW0oaSkscWkocikuYWN0aXZlRWxlbWVudD09aSlyZXR1cm59fX0sX2FwcGx5U2VsZWN0aW9uOmZ1bmN0aW9uKHQsZSl7dC5zZXRBdHRyaWJ1dGUoImFyaWEtc2VsZWN0ZWQiLGU/InRydWUiOiJmYWxzZSIpLGpvLl9hcHBseVNlbGVjdGlvbi5hcHBseSh0aGlzLGFyZ3VtZW50cyl9LF9mb2N1c2VkSXRlbUNoYW5nZWQ6ZnVuY3Rpb24odCxlKXtlJiZlLnNldEF0dHJpYnV0ZSgidGFiaW5kZXgiLCItMSIpLCF0fHx0Lmhhc0F0dHJpYnV0ZSgiZGlzYWJsZWQiKXx8dGhpcy5kaXNhYmxlZHx8KHQuc2V0QXR0cmlidXRlKCJ0YWJpbmRleCIsIjAiKSx0LmZvY3VzKCkpfSxfb25Jcm9uSXRlbXNDaGFuZ2VkOmZ1bmN0aW9uKHQpe3QuZGV0YWlsLmFkZGVkTm9kZXMubGVuZ3RoJiZ0aGlzLl9yZXNldFRhYmluZGljZXMoKX0sX29uU2hpZnRUYWJEb3duOmZ1bmN0aW9uKHQpe3ZhciBlPXRoaXMuZ2V0QXR0cmlidXRlKCJ0YWJpbmRleCIpO0thLl9zaGlmdFRhYlByZXNzZWQ9ITAsdGhpcy5fc2V0Rm9jdXNlZEl0ZW0obnVsbCksdGhpcy5zZXRBdHRyaWJ1dGUoInRhYmluZGV4IiwiLTEiKSx0aGlzLmFzeW5jKChmdW5jdGlvbigpe3RoaXMuc2V0QXR0cmlidXRlKCJ0YWJpbmRleCIsZSksS2EuX3NoaWZ0VGFiUHJlc3NlZD0hMX0pLDEpfSxfb25Gb2N1czpmdW5jdGlvbih0KXtpZighS2EuX3NoaWZ0VGFiUHJlc3NlZCl7dmFyIGU9cWkodCkucm9vdFRhcmdldDsoZT09PXRoaXN8fHZvaWQgMD09PWUudGFiSW5kZXh8fHRoaXMuaXNMaWdodERlc2NlbmRhbnQoZSkpJiYodGhpcy5fZGVmYXVsdEZvY3VzQXN5bmM9dGhpcy5hc3luYygoZnVuY3Rpb24oKXt2YXIgdD10aGlzLm11bHRpP3RoaXMuc2VsZWN0ZWRJdGVtcyYmdGhpcy5zZWxlY3RlZEl0ZW1zWzBdOnRoaXMuc2VsZWN0ZWRJdGVtO3RoaXMuX3NldEZvY3VzZWRJdGVtKG51bGwpLHQ/dGhpcy5fc2V0Rm9jdXNlZEl0ZW0odCk6dGhpcy5pdGVtc1swXSYmdGhpcy5fZm9jdXNOZXh0KCl9KSkpfX0sX29uVXBLZXk6ZnVuY3Rpb24odCl7dGhpcy5fZm9jdXNQcmV2aW91cygpLHQuZGV0YWlsLmtleWJvYXJkRXZlbnQucHJldmVudERlZmF1bHQoKX0sX29uRG93bktleTpmdW5jdGlvbih0KXt0aGlzLl9mb2N1c05leHQoKSx0LmRldGFpbC5rZXlib2FyZEV2ZW50LnByZXZlbnREZWZhdWx0KCl9LF9vbkVzY0tleTpmdW5jdGlvbih0KXt2YXIgZT10aGlzLmZvY3VzZWRJdGVtO2UmJmUuYmx1cigpfSxfb25LZXlkb3duOmZ1bmN0aW9uKHQpe3RoaXMua2V5Ym9hcmRFdmVudE1hdGNoZXNLZXlzKHQsInVwIGRvd24gZXNjIil8fHRoaXMuX2ZvY3VzV2l0aEtleWJvYXJkRXZlbnQodCksdC5zdG9wUHJvcGFnYXRpb24oKX0sX2FjdGl2YXRlSGFuZGxlcjpmdW5jdGlvbih0KXtqby5fYWN0aXZhdGVIYW5kbGVyLmNhbGwodGhpcyx0KSx0LnN0b3BQcm9wYWdhdGlvbigpfSxfZGlzYWJsZWRDaGFuZ2VkOmZ1bmN0aW9uKHQpe3Q/KHRoaXMuX3ByZXZpb3VzVGFiSW5kZXg9dGhpcy5oYXNBdHRyaWJ1dGUoInRhYmluZGV4Iik/dGhpcy50YWJJbmRleDowLHRoaXMucmVtb3ZlQXR0cmlidXRlKCJ0YWJpbmRleCIpKTp0aGlzLmhhc0F0dHJpYnV0ZSgidGFiaW5kZXgiKXx8dGhpcy5zZXRBdHRyaWJ1dGUoInRhYmluZGV4Iix0aGlzLl9wcmV2aW91c1RhYkluZGV4KX0sX3NoaWZ0VGFiUHJlc3NlZDohMX0sWmE9W1tqbywkYV0sUm8sS2FdOwovKioKICAgIEBsaWNlbnNlCiAgICBDb3B5cmlnaHQgKGMpIDIwMTUgVGhlIFBvbHltZXIgUHJvamVjdCBBdXRob3JzLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICAgVGhpcyBjb2RlIG1heSBvbmx5IGJlIHVzZWQgdW5kZXIgdGhlIEJTRCBzdHlsZSBsaWNlbnNlIGZvdW5kIGF0CiAgICBodHRwOi8vcG9seW1lci5naXRodWIuaW8vTElDRU5TRS50eHQgVGhlIGNvbXBsZXRlIHNldCBvZiBhdXRob3JzIG1heSBiZSBmb3VuZCBhdAogICAgaHR0cDovL3BvbHltZXIuZ2l0aHViLmlvL0FVVEhPUlMudHh0IFRoZSBjb21wbGV0ZSBzZXQgb2YgY29udHJpYnV0b3JzIG1heSBiZQogICAgZm91bmQgYXQgaHR0cDovL3BvbHltZXIuZ2l0aHViLmlvL0NPTlRSSUJVVE9SUy50eHQgQ29kZSBkaXN0cmlidXRlZCBieSBHb29nbGUgYXMKICAgIHBhcnQgb2YgdGhlIHBvbHltZXIgcHJvamVjdCBpcyBhbHNvIHN1YmplY3QgdG8gYW4gYWRkaXRpb25hbCBJUCByaWdodHMgZ3JhbnQKICAgIGZvdW5kIGF0IGh0dHA6Ly9wb2x5bWVyLmdpdGh1Yi5pby9QQVRFTlRTLnR4dAogICAgKi8KTnIoe190ZW1wbGF0ZTpfZWAKICAgIDxzdHlsZT4KICAgICAgOmhvc3QgewogICAgICAgIGRpc3BsYXk6IGJsb2NrOwogICAgICAgIHBhZGRpbmc6IDhweCAwOwoKICAgICAgICBiYWNrZ3JvdW5kOiB2YXIoLS1wYXBlci1saXN0Ym94LWJhY2tncm91bmQtY29sb3IsIHZhcigtLXByaW1hcnktYmFja2dyb3VuZC1jb2xvcikpOwogICAgICAgIGNvbG9yOiB2YXIoLS1wYXBlci1saXN0Ym94LWNvbG9yLCB2YXIoLS1wcmltYXJ5LXRleHQtY29sb3IpKTsKCiAgICAgICAgQGFwcGx5IC0tcGFwZXItbGlzdGJveDsKICAgICAgfQogICAgPC9zdHlsZT4KCiAgICA8c2xvdD48L3Nsb3Q+CmAsaXM6InBhcGVyLWxpc3Rib3giLGJlaGF2aW9yczpbWmFdLGhvc3RBdHRyaWJ1dGVzOntyb2xlOiJsaXN0Ym94In19KTsKLyoqCiAgICBAbGljZW5zZQogICAgQ29weXJpZ2h0IChjKSAyMDE1IFRoZSBQb2x5bWVyIFByb2plY3QgQXV0aG9ycy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAgIFRoaXMgY29kZSBtYXkgb25seSBiZSB1c2VkIHVuZGVyIHRoZSBCU0Qgc3R5bGUgbGljZW5zZSBmb3VuZCBhdAogICAgaHR0cDovL3BvbHltZXIuZ2l0aHViLmlvL0xJQ0VOU0UudHh0IFRoZSBjb21wbGV0ZSBzZXQgb2YgYXV0aG9ycyBtYXkgYmUgZm91bmQgYXQKICAgIGh0dHA6Ly9wb2x5bWVyLmdpdGh1Yi5pby9BVVRIT1JTLnR4dCBUaGUgY29tcGxldGUgc2V0IG9mIGNvbnRyaWJ1dG9ycyBtYXkgYmUKICAgIGZvdW5kIGF0IGh0dHA6Ly9wb2x5bWVyLmdpdGh1Yi5pby9DT05UUklCVVRPUlMudHh0IENvZGUgZGlzdHJpYnV0ZWQgYnkgR29vZ2xlIGFzCiAgICBwYXJ0IG9mIHRoZSBwb2x5bWVyIHByb2plY3QgaXMgYWxzbyBzdWJqZWN0IHRvIGFuIGFkZGl0aW9uYWwgSVAgcmlnaHRzIGdyYW50CiAgICBmb3VuZCBhdCBodHRwOi8vcG9seW1lci5naXRodWIuaW8vUEFURU5UUy50eHQKICAgICovCmNvbnN0IEphPV9lYAo8ZG9tLW1vZHVsZSBpZD0icGFwZXItbWF0ZXJpYWwtc2hhcmVkLXN0eWxlcyI+CiAgPHRlbXBsYXRlPgogICAgPHN0eWxlPgogICAgICA6aG9zdCB7CiAgICAgICAgZGlzcGxheTogYmxvY2s7CiAgICAgICAgcG9zaXRpb246IHJlbGF0aXZlOwogICAgICB9CgogICAgICA6aG9zdChbZWxldmF0aW9uPSIxIl0pIHsKICAgICAgICBAYXBwbHkgLS1zaGFkb3ctZWxldmF0aW9uLTJkcDsKICAgICAgfQoKICAgICAgOmhvc3QoW2VsZXZhdGlvbj0iMiJdKSB7CiAgICAgICAgQGFwcGx5IC0tc2hhZG93LWVsZXZhdGlvbi00ZHA7CiAgICAgIH0KCiAgICAgIDpob3N0KFtlbGV2YXRpb249IjMiXSkgewogICAgICAgIEBhcHBseSAtLXNoYWRvdy1lbGV2YXRpb24tNmRwOwogICAgICB9CgogICAgICA6aG9zdChbZWxldmF0aW9uPSI0Il0pIHsKICAgICAgICBAYXBwbHkgLS1zaGFkb3ctZWxldmF0aW9uLThkcDsKICAgICAgfQoKICAgICAgOmhvc3QoW2VsZXZhdGlvbj0iNSJdKSB7CiAgICAgICAgQGFwcGx5IC0tc2hhZG93LWVsZXZhdGlvbi0xNmRwOwogICAgICB9CiAgICA8L3N0eWxlPgogIDwvdGVtcGxhdGU+CjwvZG9tLW1vZHVsZT4KYDtKYS5zZXRBdHRyaWJ1dGUoInN0eWxlIiwiZGlzcGxheTogbm9uZTsiKSxkb2N1bWVudC5ib2R5LmFwcGVuZENoaWxkKEphLmNvbnRlbnQpLAovKioKICAgIEBsaWNlbnNlCiAgICBDb3B5cmlnaHQgKGMpIDIwMTUgVGhlIFBvbHltZXIgUHJvamVjdCBBdXRob3JzLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICAgVGhpcyBjb2RlIG1heSBvbmx5IGJlIHVzZWQgdW5kZXIgdGhlIEJTRCBzdHlsZSBsaWNlbnNlIGZvdW5kIGF0CiAgICBodHRwOi8vcG9seW1lci5naXRodWIuaW8vTElDRU5TRS50eHQgVGhlIGNvbXBsZXRlIHNldCBvZiBhdXRob3JzIG1heSBiZSBmb3VuZCBhdAogICAgaHR0cDovL3BvbHltZXIuZ2l0aHViLmlvL0FVVEhPUlMudHh0IFRoZSBjb21wbGV0ZSBzZXQgb2YgY29udHJpYnV0b3JzIG1heSBiZQogICAgZm91bmQgYXQgaHR0cDovL3BvbHltZXIuZ2l0aHViLmlvL0NPTlRSSUJVVE9SUy50eHQgQ29kZSBkaXN0cmlidXRlZCBieSBHb29nbGUgYXMKICAgIHBhcnQgb2YgdGhlIHBvbHltZXIgcHJvamVjdCBpcyBhbHNvIHN1YmplY3QgdG8gYW4gYWRkaXRpb25hbCBJUCByaWdodHMgZ3JhbnQKICAgIGZvdW5kIGF0IGh0dHA6Ly9wb2x5bWVyLmdpdGh1Yi5pby9QQVRFTlRTLnR4dAogICAgKi8KTnIoe190ZW1wbGF0ZTpfZWAKICAgIDxzdHlsZSBpbmNsdWRlPSJwYXBlci1tYXRlcmlhbC1zaGFyZWQtc3R5bGVzIj48L3N0eWxlPgogICAgPHN0eWxlPgogICAgICA6aG9zdChbYW5pbWF0ZWRdKSB7CiAgICAgICAgQGFwcGx5IC0tc2hhZG93LXRyYW5zaXRpb247CiAgICAgIH0KICAgICAgOmhvc3QgewogICAgICAgIEBhcHBseSAtLXBhcGVyLW1hdGVyaWFsOwogICAgICB9CiAgICA8L3N0eWxlPgoKICAgIDxzbG90Pjwvc2xvdD4KYCxpczoicGFwZXItbWF0ZXJpYWwiLHByb3BlcnRpZXM6e2VsZXZhdGlvbjp7dHlwZTpOdW1iZXIscmVmbGVjdFRvQXR0cmlidXRlOiEwLHZhbHVlOjF9LGFuaW1hdGVkOnt0eXBlOkJvb2xlYW4scmVmbGVjdFRvQXR0cmlidXRlOiEwLHZhbHVlOiExfX19KTsKLyoqCiAgICBAbGljZW5zZQogICAgQ29weXJpZ2h0IChjKSAyMDE1IFRoZSBQb2x5bWVyIFByb2plY3QgQXV0aG9ycy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAgIFRoaXMgY29kZSBtYXkgb25seSBiZSB1c2VkIHVuZGVyIHRoZSBCU0Qgc3R5bGUgbGljZW5zZSBmb3VuZCBhdAogICAgaHR0cDovL3BvbHltZXIuZ2l0aHViLmlvL0xJQ0VOU0UudHh0IFRoZSBjb21wbGV0ZSBzZXQgb2YgYXV0aG9ycyBtYXkgYmUgZm91bmQgYXQKICAgIGh0dHA6Ly9wb2x5bWVyLmdpdGh1Yi5pby9BVVRIT1JTLnR4dCBUaGUgY29tcGxldGUgc2V0IG9mIGNvbnRyaWJ1dG9ycyBtYXkgYmUKICAgIGZvdW5kIGF0IGh0dHA6Ly9wb2x5bWVyLmdpdGh1Yi5pby9DT05UUklCVVRPUlMudHh0IENvZGUgZGlzdHJpYnV0ZWQgYnkgR29vZ2xlIGFzCiAgICBwYXJ0IG9mIHRoZSBwb2x5bWVyIHByb2plY3QgaXMgYWxzbyBzdWJqZWN0IHRvIGFuIGFkZGl0aW9uYWwgSVAgcmlnaHRzIGdyYW50CiAgICBmb3VuZCBhdCBodHRwOi8vcG9seW1lci5naXRodWIuaW8vUEFURU5UUy50eHQKICAgICovCmNvbnN0IFFhPXtwcm9wZXJ0aWVzOnt2YWx1ZTp7dHlwZTpOdW1iZXIsdmFsdWU6MCxub3RpZnk6ITAscmVmbGVjdFRvQXR0cmlidXRlOiEwfSxtaW46e3R5cGU6TnVtYmVyLHZhbHVlOjAsbm90aWZ5OiEwfSxtYXg6e3R5cGU6TnVtYmVyLHZhbHVlOjEwMCxub3RpZnk6ITB9LHN0ZXA6e3R5cGU6TnVtYmVyLHZhbHVlOjEsbm90aWZ5OiEwfSxyYXRpbzp7dHlwZTpOdW1iZXIsdmFsdWU6MCxyZWFkT25seTohMCxub3RpZnk6ITB9fSxvYnNlcnZlcnM6WyJfdXBkYXRlKHZhbHVlLCBtaW4sIG1heCwgc3RlcCkiXSxfY2FsY1JhdGlvOmZ1bmN0aW9uKHQpe3JldHVybih0aGlzLl9jbGFtcFZhbHVlKHQpLXRoaXMubWluKS8odGhpcy5tYXgtdGhpcy5taW4pfSxfY2xhbXBWYWx1ZTpmdW5jdGlvbih0KXtyZXR1cm4gTWF0aC5taW4odGhpcy5tYXgsTWF0aC5tYXgodGhpcy5taW4sdGhpcy5fY2FsY1N0ZXAodCkpKX0sX2NhbGNTdGVwOmZ1bmN0aW9uKHQpe2lmKHQ9cGFyc2VGbG9hdCh0KSwhdGhpcy5zdGVwKXJldHVybiB0O3ZhciBlPU1hdGgucm91bmQoKHQtdGhpcy5taW4pL3RoaXMuc3RlcCk7cmV0dXJuIHRoaXMuc3RlcDwxP2UvKDEvdGhpcy5zdGVwKSt0aGlzLm1pbjplKnRoaXMuc3RlcCt0aGlzLm1pbn0sX3ZhbGlkYXRlVmFsdWU6ZnVuY3Rpb24oKXt2YXIgdD10aGlzLl9jbGFtcFZhbHVlKHRoaXMudmFsdWUpO3JldHVybiB0aGlzLnZhbHVlPXRoaXMub2xkVmFsdWU9aXNOYU4odCk/dGhpcy5vbGRWYWx1ZTp0LHRoaXMudmFsdWUhPT10fSxfdXBkYXRlOmZ1bmN0aW9uKCl7dGhpcy5fdmFsaWRhdGVWYWx1ZSgpLHRoaXMuX3NldFJhdGlvKDEwMCp0aGlzLl9jYWxjUmF0aW8odGhpcy52YWx1ZSkpfX07Ci8qKgogICAgQGxpY2Vuc2UKICAgIENvcHlyaWdodCAoYykgMjAxNSBUaGUgUG9seW1lciBQcm9qZWN0IEF1dGhvcnMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgICBUaGlzIGNvZGUgbWF5IG9ubHkgYmUgdXNlZCB1bmRlciB0aGUgQlNEIHN0eWxlIGxpY2Vuc2UgZm91bmQgYXQKICAgIGh0dHA6Ly9wb2x5bWVyLmdpdGh1Yi5pby9MSUNFTlNFLnR4dCBUaGUgY29tcGxldGUgc2V0IG9mIGF1dGhvcnMgbWF5IGJlIGZvdW5kIGF0CiAgICBodHRwOi8vcG9seW1lci5naXRodWIuaW8vQVVUSE9SUy50eHQgVGhlIGNvbXBsZXRlIHNldCBvZiBjb250cmlidXRvcnMgbWF5IGJlCiAgICBmb3VuZCBhdCBodHRwOi8vcG9seW1lci5naXRodWIuaW8vQ09OVFJJQlVUT1JTLnR4dCBDb2RlIGRpc3RyaWJ1dGVkIGJ5IEdvb2dsZSBhcwogICAgcGFydCBvZiB0aGUgcG9seW1lciBwcm9qZWN0IGlzIGFsc28gc3ViamVjdCB0byBhbiBhZGRpdGlvbmFsIElQIHJpZ2h0cyBncmFudAogICAgZm91bmQgYXQgaHR0cDovL3BvbHltZXIuZ2l0aHViLmlvL1BBVEVOVFMudHh0CiAgICAqL05yKHtfdGVtcGxhdGU6X2VgCiAgICA8c3R5bGU+CiAgICAgIDpob3N0IHsKICAgICAgICBkaXNwbGF5OiBibG9jazsKICAgICAgICB3aWR0aDogMjAwcHg7CiAgICAgICAgcG9zaXRpb246IHJlbGF0aXZlOwogICAgICAgIG92ZXJmbG93OiBoaWRkZW47CiAgICAgIH0KCiAgICAgIDpob3N0KFtoaWRkZW5dKSwgW2hpZGRlbl0gewogICAgICAgIGRpc3BsYXk6IG5vbmUgIWltcG9ydGFudDsKICAgICAgfQoKICAgICAgI3Byb2dyZXNzQ29udGFpbmVyIHsKICAgICAgICBAYXBwbHkgLS1wYXBlci1wcm9ncmVzcy1jb250YWluZXI7CiAgICAgICAgcG9zaXRpb246IHJlbGF0aXZlOwogICAgICB9CgogICAgICAjcHJvZ3Jlc3NDb250YWluZXIsCiAgICAgIC8qIHRoZSBzdHJpcGUgZm9yIHRoZSBpbmRldGVybWluYXRlIGFuaW1hdGlvbiovCiAgICAgIC5pbmRldGVybWluYXRlOjphZnRlciB7CiAgICAgICAgaGVpZ2h0OiB2YXIoLS1wYXBlci1wcm9ncmVzcy1oZWlnaHQsIDRweCk7CiAgICAgIH0KCiAgICAgICNwcmltYXJ5UHJvZ3Jlc3MsCiAgICAgICNzZWNvbmRhcnlQcm9ncmVzcywKICAgICAgLmluZGV0ZXJtaW5hdGU6OmFmdGVyIHsKICAgICAgICBAYXBwbHkgLS1sYXlvdXQtZml0OwogICAgICB9CgogICAgICAjcHJvZ3Jlc3NDb250YWluZXIsCiAgICAgIC5pbmRldGVybWluYXRlOjphZnRlciB7CiAgICAgICAgYmFja2dyb3VuZDogdmFyKC0tcGFwZXItcHJvZ3Jlc3MtY29udGFpbmVyLWNvbG9yLCB2YXIoLS1nb29nbGUtZ3JleS0zMDApKTsKICAgICAgfQoKICAgICAgOmhvc3QoLnRyYW5zaXRpbmcpICNwcmltYXJ5UHJvZ3Jlc3MsCiAgICAgIDpob3N0KC50cmFuc2l0aW5nKSAjc2Vjb25kYXJ5UHJvZ3Jlc3MgewogICAgICAgIC13ZWJraXQtdHJhbnNpdGlvbi1wcm9wZXJ0eTogLXdlYmtpdC10cmFuc2Zvcm07CiAgICAgICAgdHJhbnNpdGlvbi1wcm9wZXJ0eTogdHJhbnNmb3JtOwoKICAgICAgICAvKiBEdXJhdGlvbiAqLwogICAgICAgIC13ZWJraXQtdHJhbnNpdGlvbi1kdXJhdGlvbjogdmFyKC0tcGFwZXItcHJvZ3Jlc3MtdHJhbnNpdGlvbi1kdXJhdGlvbiwgMC4wOHMpOwogICAgICAgIHRyYW5zaXRpb24tZHVyYXRpb246IHZhcigtLXBhcGVyLXByb2dyZXNzLXRyYW5zaXRpb24tZHVyYXRpb24sIDAuMDhzKTsKCiAgICAgICAgLyogVGltaW5nIGZ1bmN0aW9uICovCiAgICAgICAgLXdlYmtpdC10cmFuc2l0aW9uLXRpbWluZy1mdW5jdGlvbjogdmFyKC0tcGFwZXItcHJvZ3Jlc3MtdHJhbnNpdGlvbi10aW1pbmctZnVuY3Rpb24sIGVhc2UpOwogICAgICAgIHRyYW5zaXRpb24tdGltaW5nLWZ1bmN0aW9uOiB2YXIoLS1wYXBlci1wcm9ncmVzcy10cmFuc2l0aW9uLXRpbWluZy1mdW5jdGlvbiwgZWFzZSk7CgogICAgICAgIC8qIERlbGF5ICovCiAgICAgICAgLXdlYmtpdC10cmFuc2l0aW9uLWRlbGF5OiB2YXIoLS1wYXBlci1wcm9ncmVzcy10cmFuc2l0aW9uLWRlbGF5LCAwcyk7CiAgICAgICAgdHJhbnNpdGlvbi1kZWxheTogdmFyKC0tcGFwZXItcHJvZ3Jlc3MtdHJhbnNpdGlvbi1kZWxheSwgMHMpOwogICAgICB9CgogICAgICAjcHJpbWFyeVByb2dyZXNzLAogICAgICAjc2Vjb25kYXJ5UHJvZ3Jlc3MgewogICAgICAgIEBhcHBseSAtLWxheW91dC1maXQ7CiAgICAgICAgLXdlYmtpdC10cmFuc2Zvcm0tb3JpZ2luOiBsZWZ0IGNlbnRlcjsKICAgICAgICB0cmFuc2Zvcm0tb3JpZ2luOiBsZWZ0IGNlbnRlcjsKICAgICAgICAtd2Via2l0LXRyYW5zZm9ybTogc2NhbGVYKDApOwogICAgICAgIHRyYW5zZm9ybTogc2NhbGVYKDApOwogICAgICAgIHdpbGwtY2hhbmdlOiB0cmFuc2Zvcm07CiAgICAgIH0KCiAgICAgICNwcmltYXJ5UHJvZ3Jlc3MgewogICAgICAgIGJhY2tncm91bmQ6IHZhcigtLXBhcGVyLXByb2dyZXNzLWFjdGl2ZS1jb2xvciwgdmFyKC0tZ29vZ2xlLWdyZWVuLTUwMCkpOwogICAgICB9CgogICAgICAjc2Vjb25kYXJ5UHJvZ3Jlc3MgewogICAgICAgIGJhY2tncm91bmQ6IHZhcigtLXBhcGVyLXByb2dyZXNzLXNlY29uZGFyeS1jb2xvciwgdmFyKC0tZ29vZ2xlLWdyZWVuLTEwMCkpOwogICAgICB9CgogICAgICA6aG9zdChbZGlzYWJsZWRdKSAjcHJpbWFyeVByb2dyZXNzIHsKICAgICAgICBiYWNrZ3JvdW5kOiB2YXIoLS1wYXBlci1wcm9ncmVzcy1kaXNhYmxlZC1hY3RpdmUtY29sb3IsIHZhcigtLWdvb2dsZS1ncmV5LTUwMCkpOwogICAgICB9CgogICAgICA6aG9zdChbZGlzYWJsZWRdKSAjc2Vjb25kYXJ5UHJvZ3Jlc3MgewogICAgICAgIGJhY2tncm91bmQ6IHZhcigtLXBhcGVyLXByb2dyZXNzLWRpc2FibGVkLXNlY29uZGFyeS1jb2xvciwgdmFyKC0tZ29vZ2xlLWdyZXktMzAwKSk7CiAgICAgIH0KCiAgICAgIDpob3N0KDpub3QoW2Rpc2FibGVkXSkpICNwcmltYXJ5UHJvZ3Jlc3MuaW5kZXRlcm1pbmF0ZSB7CiAgICAgICAgLXdlYmtpdC10cmFuc2Zvcm0tb3JpZ2luOiByaWdodCBjZW50ZXI7CiAgICAgICAgdHJhbnNmb3JtLW9yaWdpbjogcmlnaHQgY2VudGVyOwogICAgICAgIC13ZWJraXQtYW5pbWF0aW9uOiBpbmRldGVybWluYXRlLWJhciB2YXIoLS1wYXBlci1wcm9ncmVzcy1pbmRldGVybWluYXRlLWN5Y2xlLWR1cmF0aW9uLCAycykgbGluZWFyIGluZmluaXRlOwogICAgICAgIGFuaW1hdGlvbjogaW5kZXRlcm1pbmF0ZS1iYXIgdmFyKC0tcGFwZXItcHJvZ3Jlc3MtaW5kZXRlcm1pbmF0ZS1jeWNsZS1kdXJhdGlvbiwgMnMpIGxpbmVhciBpbmZpbml0ZTsKICAgICAgfQoKICAgICAgOmhvc3QoOm5vdChbZGlzYWJsZWRdKSkgI3ByaW1hcnlQcm9ncmVzcy5pbmRldGVybWluYXRlOjphZnRlciB7CiAgICAgICAgY29udGVudDogIiI7CiAgICAgICAgLXdlYmtpdC10cmFuc2Zvcm0tb3JpZ2luOiBjZW50ZXIgY2VudGVyOwogICAgICAgIHRyYW5zZm9ybS1vcmlnaW46IGNlbnRlciBjZW50ZXI7CgogICAgICAgIC13ZWJraXQtYW5pbWF0aW9uOiBpbmRldGVybWluYXRlLXNwbGl0dGVyIHZhcigtLXBhcGVyLXByb2dyZXNzLWluZGV0ZXJtaW5hdGUtY3ljbGUtZHVyYXRpb24sIDJzKSBsaW5lYXIgaW5maW5pdGU7CiAgICAgICAgYW5pbWF0aW9uOiBpbmRldGVybWluYXRlLXNwbGl0dGVyIHZhcigtLXBhcGVyLXByb2dyZXNzLWluZGV0ZXJtaW5hdGUtY3ljbGUtZHVyYXRpb24sIDJzKSBsaW5lYXIgaW5maW5pdGU7CiAgICAgIH0KCiAgICAgIEAtd2Via2l0LWtleWZyYW1lcyBpbmRldGVybWluYXRlLWJhciB7CiAgICAgICAgMCUgewogICAgICAgICAgLXdlYmtpdC10cmFuc2Zvcm06IHNjYWxlWCgxKSB0cmFuc2xhdGVYKC0xMDAlKTsKICAgICAgICB9CiAgICAgICAgNTAlIHsKICAgICAgICAgIC13ZWJraXQtdHJhbnNmb3JtOiBzY2FsZVgoMSkgdHJhbnNsYXRlWCgwJSk7CiAgICAgICAgfQogICAgICAgIDc1JSB7CiAgICAgICAgICAtd2Via2l0LXRyYW5zZm9ybTogc2NhbGVYKDEpIHRyYW5zbGF0ZVgoMCUpOwogICAgICAgICAgLXdlYmtpdC1hbmltYXRpb24tdGltaW5nLWZ1bmN0aW9uOiBjdWJpYy1iZXppZXIoLjI4LC42MiwuMzcsLjkxKTsKICAgICAgICB9CiAgICAgICAgMTAwJSB7CiAgICAgICAgICAtd2Via2l0LXRyYW5zZm9ybTogc2NhbGVYKDApIHRyYW5zbGF0ZVgoMCUpOwogICAgICAgIH0KICAgICAgfQoKICAgICAgQC13ZWJraXQta2V5ZnJhbWVzIGluZGV0ZXJtaW5hdGUtc3BsaXR0ZXIgewogICAgICAgIDAlIHsKICAgICAgICAgIC13ZWJraXQtdHJhbnNmb3JtOiBzY2FsZVgoLjc1KSB0cmFuc2xhdGVYKC0xMjUlKTsKICAgICAgICB9CiAgICAgICAgMzAlIHsKICAgICAgICAgIC13ZWJraXQtdHJhbnNmb3JtOiBzY2FsZVgoLjc1KSB0cmFuc2xhdGVYKC0xMjUlKTsKICAgICAgICAgIC13ZWJraXQtYW5pbWF0aW9uLXRpbWluZy1mdW5jdGlvbjogY3ViaWMtYmV6aWVyKC40MiwwLC42LC44KTsKICAgICAgICB9CiAgICAgICAgOTAlIHsKICAgICAgICAgIC13ZWJraXQtdHJhbnNmb3JtOiBzY2FsZVgoLjc1KSB0cmFuc2xhdGVYKDEyNSUpOwogICAgICAgIH0KICAgICAgICAxMDAlIHsKICAgICAgICAgIC13ZWJraXQtdHJhbnNmb3JtOiBzY2FsZVgoLjc1KSB0cmFuc2xhdGVYKDEyNSUpOwogICAgICAgIH0KICAgICAgfQoKICAgICAgQGtleWZyYW1lcyBpbmRldGVybWluYXRlLWJhciB7CiAgICAgICAgMCUgewogICAgICAgICAgdHJhbnNmb3JtOiBzY2FsZVgoMSkgdHJhbnNsYXRlWCgtMTAwJSk7CiAgICAgICAgfQogICAgICAgIDUwJSB7CiAgICAgICAgICB0cmFuc2Zvcm06IHNjYWxlWCgxKSB0cmFuc2xhdGVYKDAlKTsKICAgICAgICB9CiAgICAgICAgNzUlIHsKICAgICAgICAgIHRyYW5zZm9ybTogc2NhbGVYKDEpIHRyYW5zbGF0ZVgoMCUpOwogICAgICAgICAgYW5pbWF0aW9uLXRpbWluZy1mdW5jdGlvbjogY3ViaWMtYmV6aWVyKC4yOCwuNjIsLjM3LC45MSk7CiAgICAgICAgfQogICAgICAgIDEwMCUgewogICAgICAgICAgdHJhbnNmb3JtOiBzY2FsZVgoMCkgdHJhbnNsYXRlWCgwJSk7CiAgICAgICAgfQogICAgICB9CgogICAgICBAa2V5ZnJhbWVzIGluZGV0ZXJtaW5hdGUtc3BsaXR0ZXIgewogICAgICAgIDAlIHsKICAgICAgICAgIHRyYW5zZm9ybTogc2NhbGVYKC43NSkgdHJhbnNsYXRlWCgtMTI1JSk7CiAgICAgICAgfQogICAgICAgIDMwJSB7CiAgICAgICAgICB0cmFuc2Zvcm06IHNjYWxlWCguNzUpIHRyYW5zbGF0ZVgoLTEyNSUpOwogICAgICAgICAgYW5pbWF0aW9uLXRpbWluZy1mdW5jdGlvbjogY3ViaWMtYmV6aWVyKC40MiwwLC42LC44KTsKICAgICAgICB9CiAgICAgICAgOTAlIHsKICAgICAgICAgIHRyYW5zZm9ybTogc2NhbGVYKC43NSkgdHJhbnNsYXRlWCgxMjUlKTsKICAgICAgICB9CiAgICAgICAgMTAwJSB7CiAgICAgICAgICB0cmFuc2Zvcm06IHNjYWxlWCguNzUpIHRyYW5zbGF0ZVgoMTI1JSk7CiAgICAgICAgfQogICAgICB9CiAgICA8L3N0eWxlPgoKICAgIDxkaXYgaWQ9InByb2dyZXNzQ29udGFpbmVyIj4KICAgICAgPGRpdiBpZD0ic2Vjb25kYXJ5UHJvZ3Jlc3MiIGhpZGRlblwkPSJbW19oaWRlU2Vjb25kYXJ5UHJvZ3Jlc3Moc2Vjb25kYXJ5UmF0aW8pXV0iPjwvZGl2PgogICAgICA8ZGl2IGlkPSJwcmltYXJ5UHJvZ3Jlc3MiPjwvZGl2PgogICAgPC9kaXY+CmAsaXM6InBhcGVyLXByb2dyZXNzIixiZWhhdmlvcnM6W1FhXSxwcm9wZXJ0aWVzOntzZWNvbmRhcnlQcm9ncmVzczp7dHlwZTpOdW1iZXIsdmFsdWU6MH0sc2Vjb25kYXJ5UmF0aW86e3R5cGU6TnVtYmVyLHZhbHVlOjAscmVhZE9ubHk6ITB9LGluZGV0ZXJtaW5hdGU6e3R5cGU6Qm9vbGVhbix2YWx1ZTohMSxvYnNlcnZlcjoiX3RvZ2dsZUluZGV0ZXJtaW5hdGUifSxkaXNhYmxlZDp7dHlwZTpCb29sZWFuLHZhbHVlOiExLHJlZmxlY3RUb0F0dHJpYnV0ZTohMCxvYnNlcnZlcjoiX2Rpc2FibGVkQ2hhbmdlZCJ9fSxvYnNlcnZlcnM6WyJfcHJvZ3Jlc3NDaGFuZ2VkKHNlY29uZGFyeVByb2dyZXNzLCB2YWx1ZSwgbWluLCBtYXgsIGluZGV0ZXJtaW5hdGUpIl0saG9zdEF0dHJpYnV0ZXM6e3JvbGU6InByb2dyZXNzYmFyIn0sX3RvZ2dsZUluZGV0ZXJtaW5hdGU6ZnVuY3Rpb24odCl7dGhpcy50b2dnbGVDbGFzcygiaW5kZXRlcm1pbmF0ZSIsdCx0aGlzLiQucHJpbWFyeVByb2dyZXNzKX0sX3RyYW5zZm9ybVByb2dyZXNzOmZ1bmN0aW9uKHQsZSl7dC5zdHlsZS50cmFuc2Zvcm09dC5zdHlsZS53ZWJraXRUcmFuc2Zvcm09InNjYWxlWCgiK2UvMTAwKyIpIn0sX21haW5SYXRpb0NoYW5nZWQ6ZnVuY3Rpb24odCl7dGhpcy5fdHJhbnNmb3JtUHJvZ3Jlc3ModGhpcy4kLnByaW1hcnlQcm9ncmVzcyx0KX0sX3Byb2dyZXNzQ2hhbmdlZDpmdW5jdGlvbih0LGUsbixpLHIpe3Q9dGhpcy5fY2xhbXBWYWx1ZSh0KSxlPXRoaXMuX2NsYW1wVmFsdWUoZSk7dmFyIG89MTAwKnRoaXMuX2NhbGNSYXRpbyh0KSxhPTEwMCp0aGlzLl9jYWxjUmF0aW8oZSk7dGhpcy5fc2V0U2Vjb25kYXJ5UmF0aW8obyksdGhpcy5fdHJhbnNmb3JtUHJvZ3Jlc3ModGhpcy4kLnNlY29uZGFyeVByb2dyZXNzLG8pLHRoaXMuX3RyYW5zZm9ybVByb2dyZXNzKHRoaXMuJC5wcmltYXJ5UHJvZ3Jlc3MsYSksdGhpcy5zZWNvbmRhcnlQcm9ncmVzcz10LHI/dGhpcy5yZW1vdmVBdHRyaWJ1dGUoImFyaWEtdmFsdWVub3ciKTp0aGlzLnNldEF0dHJpYnV0ZSgiYXJpYS12YWx1ZW5vdyIsZSksdGhpcy5zZXRBdHRyaWJ1dGUoImFyaWEtdmFsdWVtaW4iLG4pLHRoaXMuc2V0QXR0cmlidXRlKCJhcmlhLXZhbHVlbWF4IixpKX0sX2Rpc2FibGVkQ2hhbmdlZDpmdW5jdGlvbih0KXt0aGlzLnNldEF0dHJpYnV0ZSgiYXJpYS1kaXNhYmxlZCIsdD8idHJ1ZSI6ImZhbHNlIil9LF9oaWRlU2Vjb25kYXJ5UHJvZ3Jlc3M6ZnVuY3Rpb24odCl7cmV0dXJuIDA9PT10fX0pOwovKioKICAgIEBsaWNlbnNlCiAgICBDb3B5cmlnaHQgKGMpIDIwMTUgVGhlIFBvbHltZXIgUHJvamVjdCBBdXRob3JzLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICAgVGhpcyBjb2RlIG1heSBvbmx5IGJlIHVzZWQgdW5kZXIgdGhlIEJTRCBzdHlsZSBsaWNlbnNlIGZvdW5kIGF0IGh0dHA6Ly9wb2x5bWVyLmdpdGh1Yi5pby9MSUNFTlNFLnR4dAogICAgVGhlIGNvbXBsZXRlIHNldCBvZiBhdXRob3JzIG1heSBiZSBmb3VuZCBhdCBodHRwOi8vcG9seW1lci5naXRodWIuaW8vQVVUSE9SUy50eHQKICAgIFRoZSBjb21wbGV0ZSBzZXQgb2YgY29udHJpYnV0b3JzIG1heSBiZSBmb3VuZCBhdCBodHRwOi8vcG9seW1lci5naXRodWIuaW8vQ09OVFJJQlVUT1JTLnR4dAogICAgQ29kZSBkaXN0cmlidXRlZCBieSBHb29nbGUgYXMgcGFydCBvZiB0aGUgcG9seW1lciBwcm9qZWN0IGlzIGFsc28KICAgIHN1YmplY3QgdG8gYW4gYWRkaXRpb25hbCBJUCByaWdodHMgZ3JhbnQgZm91bmQgYXQgaHR0cDovL3BvbHltZXIuZ2l0aHViLmlvL1BBVEVOVFMudHh0CiAgICAqLwpjb25zdCB0cz1fZWAKPHN0eWxlPgogIDpob3N0IHsKICAgIGRpc3BsYXk6IGlubGluZS1ibG9jazsKICAgIGxpbmUtaGVpZ2h0OiAwOwogICAgd2hpdGUtc3BhY2U6IG5vd3JhcDsKICAgIGN1cnNvcjogcG9pbnRlcjsKICAgIEBhcHBseSAtLXBhcGVyLWZvbnQtY29tbW9uLWJhc2U7CiAgICAtLWNhbGN1bGF0ZWQtcGFwZXItcmFkaW8tYnV0dG9uLXNpemU6IHZhcigtLXBhcGVyLXJhZGlvLWJ1dHRvbi1zaXplLCAxNnB4KTsKICAgIC8qIC0xcHggaXMgYSBzZW50aW5lbCBmb3IgdGhlIGRlZmF1bHQgYW5kIGlzIHJlcGxhY2UgaW4gXGBhdHRhY2hlZFxgLiAqLwogICAgLS1jYWxjdWxhdGVkLXBhcGVyLXJhZGlvLWJ1dHRvbi1pbmstc2l6ZTogdmFyKC0tcGFwZXItcmFkaW8tYnV0dG9uLWluay1zaXplLCAtMXB4KTsKICB9CgogIDpob3N0KDpmb2N1cykgewogICAgb3V0bGluZTogbm9uZTsKICB9CgogICNyYWRpb0NvbnRhaW5lciB7CiAgICBAYXBwbHkgLS1sYXlvdXQtaW5saW5lOwogICAgQGFwcGx5IC0tbGF5b3V0LWNlbnRlci1jZW50ZXI7CiAgICBwb3NpdGlvbjogcmVsYXRpdmU7CiAgICB3aWR0aDogdmFyKC0tY2FsY3VsYXRlZC1wYXBlci1yYWRpby1idXR0b24tc2l6ZSk7CiAgICBoZWlnaHQ6IHZhcigtLWNhbGN1bGF0ZWQtcGFwZXItcmFkaW8tYnV0dG9uLXNpemUpOwogICAgdmVydGljYWwtYWxpZ246IG1pZGRsZTsKCiAgICBAYXBwbHkgLS1wYXBlci1yYWRpby1idXR0b24tcmFkaW8tY29udGFpbmVyOwogIH0KCiAgI2luayB7CiAgICBwb3NpdGlvbjogYWJzb2x1dGU7CiAgICB0b3A6IDUwJTsKICAgIGxlZnQ6IDUwJTsKICAgIHJpZ2h0OiBhdXRvOwogICAgd2lkdGg6IHZhcigtLWNhbGN1bGF0ZWQtcGFwZXItcmFkaW8tYnV0dG9uLWluay1zaXplKTsKICAgIGhlaWdodDogdmFyKC0tY2FsY3VsYXRlZC1wYXBlci1yYWRpby1idXR0b24taW5rLXNpemUpOwogICAgY29sb3I6IHZhcigtLXBhcGVyLXJhZGlvLWJ1dHRvbi11bmNoZWNrZWQtaW5rLWNvbG9yLCB2YXIoLS1wcmltYXJ5LXRleHQtY29sb3IpKTsKICAgIG9wYWNpdHk6IDAuNjsKICAgIHBvaW50ZXItZXZlbnRzOiBub25lOwogICAgLXdlYmtpdC10cmFuc2Zvcm06IHRyYW5zbGF0ZSgtNTAlLCAtNTAlKTsKICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlKC01MCUsIC01MCUpOwogIH0KCiAgI2lua1tjaGVja2VkXSB7CiAgICBjb2xvcjogdmFyKC0tcGFwZXItcmFkaW8tYnV0dG9uLWNoZWNrZWQtaW5rLWNvbG9yLCB2YXIoLS1wcmltYXJ5LWNvbG9yKSk7CiAgfQoKICAjb2ZmUmFkaW8sICNvblJhZGlvIHsKICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTsKICAgIGJveC1zaXppbmc6IGJvcmRlci1ib3g7CiAgICB0b3A6IDA7CiAgICBsZWZ0OiAwOwogICAgd2lkdGg6IDEwMCU7CiAgICBoZWlnaHQ6IDEwMCU7CiAgICBib3JkZXItcmFkaXVzOiA1MCU7CiAgfQoKICAjb2ZmUmFkaW8gewogICAgYm9yZGVyOiAycHggc29saWQgdmFyKC0tcGFwZXItcmFkaW8tYnV0dG9uLXVuY2hlY2tlZC1jb2xvciwgdmFyKC0tcHJpbWFyeS10ZXh0LWNvbG9yKSk7CiAgICBiYWNrZ3JvdW5kLWNvbG9yOiB2YXIoLS1wYXBlci1yYWRpby1idXR0b24tdW5jaGVja2VkLWJhY2tncm91bmQtY29sb3IsIHRyYW5zcGFyZW50KTsKICAgIHRyYW5zaXRpb246IGJvcmRlci1jb2xvciAwLjI4czsKICB9CgogICNvblJhZGlvIHsKICAgIGJhY2tncm91bmQtY29sb3I6IHZhcigtLXBhcGVyLXJhZGlvLWJ1dHRvbi1jaGVja2VkLWNvbG9yLCB2YXIoLS1wcmltYXJ5LWNvbG9yKSk7CiAgICAtd2Via2l0LXRyYW5zZm9ybTogc2NhbGUoMCk7CiAgICB0cmFuc2Zvcm06IHNjYWxlKDApOwogICAgdHJhbnNpdGlvbjogLXdlYmtpdC10cmFuc2Zvcm0gZWFzZSAwLjI4czsKICAgIHRyYW5zaXRpb246IHRyYW5zZm9ybSBlYXNlIDAuMjhzOwogICAgd2lsbC1jaGFuZ2U6IHRyYW5zZm9ybTsKICB9CgogIDpob3N0KFtjaGVja2VkXSkgI29mZlJhZGlvIHsKICAgIGJvcmRlci1jb2xvcjogdmFyKC0tcGFwZXItcmFkaW8tYnV0dG9uLWNoZWNrZWQtY29sb3IsIHZhcigtLXByaW1hcnktY29sb3IpKTsKICB9CgogIDpob3N0KFtjaGVja2VkXSkgI29uUmFkaW8gewogICAgLXdlYmtpdC10cmFuc2Zvcm06IHNjYWxlKDAuNSk7CiAgICB0cmFuc2Zvcm06IHNjYWxlKDAuNSk7CiAgfQoKICAjcmFkaW9MYWJlbCB7CiAgICBsaW5lLWhlaWdodDogbm9ybWFsOwogICAgcG9zaXRpb246IHJlbGF0aXZlOwogICAgZGlzcGxheTogaW5saW5lLWJsb2NrOwogICAgdmVydGljYWwtYWxpZ246IG1pZGRsZTsKICAgIG1hcmdpbi1sZWZ0OiB2YXIoLS1wYXBlci1yYWRpby1idXR0b24tbGFiZWwtc3BhY2luZywgMTBweCk7CiAgICB3aGl0ZS1zcGFjZTogbm9ybWFsOwogICAgY29sb3I6IHZhcigtLXBhcGVyLXJhZGlvLWJ1dHRvbi1sYWJlbC1jb2xvciwgdmFyKC0tcHJpbWFyeS10ZXh0LWNvbG9yKSk7CgogICAgQGFwcGx5IC0tcGFwZXItcmFkaW8tYnV0dG9uLWxhYmVsOwogIH0KCiAgOmhvc3QoW2NoZWNrZWRdKSAjcmFkaW9MYWJlbCB7CiAgICBAYXBwbHkgLS1wYXBlci1yYWRpby1idXR0b24tbGFiZWwtY2hlY2tlZDsKICB9CgogICNyYWRpb0xhYmVsOmRpcihydGwpIHsKICAgIG1hcmdpbi1sZWZ0OiAwOwogICAgbWFyZ2luLXJpZ2h0OiB2YXIoLS1wYXBlci1yYWRpby1idXR0b24tbGFiZWwtc3BhY2luZywgMTBweCk7CiAgfQoKICAjcmFkaW9MYWJlbFtoaWRkZW5dIHsKICAgIGRpc3BsYXk6IG5vbmU7CiAgfQoKICAvKiBkaXNhYmxlZCBzdGF0ZSAqLwoKICA6aG9zdChbZGlzYWJsZWRdKSAjb2ZmUmFkaW8gewogICAgYm9yZGVyLWNvbG9yOiB2YXIoLS1wYXBlci1yYWRpby1idXR0b24tdW5jaGVja2VkLWNvbG9yLCB2YXIoLS1wcmltYXJ5LXRleHQtY29sb3IpKTsKICAgIG9wYWNpdHk6IDAuNTsKICB9CgogIDpob3N0KFtkaXNhYmxlZF1bY2hlY2tlZF0pICNvblJhZGlvIHsKICAgIGJhY2tncm91bmQtY29sb3I6IHZhcigtLXBhcGVyLXJhZGlvLWJ1dHRvbi11bmNoZWNrZWQtY29sb3IsIHZhcigtLXByaW1hcnktdGV4dC1jb2xvcikpOwogICAgb3BhY2l0eTogMC41OwogIH0KCiAgOmhvc3QoW2Rpc2FibGVkXSkgI3JhZGlvTGFiZWwgewogICAgLyogc2xpZ2h0bHkgZGFya2VyIHRoYW4gdGhlIGJ1dHRvbiwgc28gdGhhdCBpdCdzIHJlYWRhYmxlICovCiAgICBvcGFjaXR5OiAwLjY1OwogIH0KPC9zdHlsZT4KCjxkaXYgaWQ9InJhZGlvQ29udGFpbmVyIj4KICA8ZGl2IGlkPSJvZmZSYWRpbyI+PC9kaXY+CiAgPGRpdiBpZD0ib25SYWRpbyI+PC9kaXY+CjwvZGl2PgoKPGRpdiBpZD0icmFkaW9MYWJlbCI+PHNsb3Q+PC9zbG90PjwvZGl2PmA7dHMuc2V0QXR0cmlidXRlKCJzdHJpcC13aGl0ZXNwYWNlIiwiIiksTnIoe190ZW1wbGF0ZTp0cyxpczoicGFwZXItcmFkaW8tYnV0dG9uIixiZWhhdmlvcnM6W2NhXSxob3N0QXR0cmlidXRlczp7cm9sZToicmFkaW8iLCJhcmlhLWNoZWNrZWQiOiExLHRhYmluZGV4OjB9LHByb3BlcnRpZXM6e2FyaWFBY3RpdmVBdHRyaWJ1dGU6e3R5cGU6U3RyaW5nLHZhbHVlOiJhcmlhLWNoZWNrZWQifX0scmVhZHk6ZnVuY3Rpb24oKXt0aGlzLl9yaXBwbGVDb250YWluZXI9dGhpcy4kLnJhZGlvQ29udGFpbmVyfSxhdHRhY2hlZDpmdW5jdGlvbigpe2tpKHRoaXMsKGZ1bmN0aW9uKCl7aWYoIi0xcHgiPT09dGhpcy5nZXRDb21wdXRlZFN0eWxlVmFsdWUoIi0tY2FsY3VsYXRlZC1wYXBlci1yYWRpby1idXR0b24taW5rLXNpemUiKS50cmltKCkpe3ZhciB0PXBhcnNlRmxvYXQodGhpcy5nZXRDb21wdXRlZFN0eWxlVmFsdWUoIi0tY2FsY3VsYXRlZC1wYXBlci1yYWRpby1idXR0b24tc2l6ZSIpLnRyaW0oKSksZT1NYXRoLmZsb29yKDMqdCk7ZSUyIT10JTImJmUrKyx0aGlzLnVwZGF0ZVN0eWxlcyh7Ii0tcGFwZXItcmFkaW8tYnV0dG9uLWluay1zaXplIjplKyJweCJ9KX19KSl9fSk7Ci8qKgogICAgQGxpY2Vuc2UKICAgIENvcHlyaWdodCAoYykgMjAxNSBUaGUgUG9seW1lciBQcm9qZWN0IEF1dGhvcnMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgICBUaGlzIGNvZGUgbWF5IG9ubHkgYmUgdXNlZCB1bmRlciB0aGUgQlNEIHN0eWxlIGxpY2Vuc2UgZm91bmQgYXQKICAgIGh0dHA6Ly9wb2x5bWVyLmdpdGh1Yi5pby9MSUNFTlNFLnR4dCBUaGUgY29tcGxldGUgc2V0IG9mIGF1dGhvcnMgbWF5IGJlIGZvdW5kIGF0CiAgICBodHRwOi8vcG9seW1lci5naXRodWIuaW8vQVVUSE9SUy50eHQgVGhlIGNvbXBsZXRlIHNldCBvZiBjb250cmlidXRvcnMgbWF5IGJlCiAgICBmb3VuZCBhdCBodHRwOi8vcG9seW1lci5naXRodWIuaW8vQ09OVFJJQlVUT1JTLnR4dCBDb2RlIGRpc3RyaWJ1dGVkIGJ5IEdvb2dsZSBhcwogICAgcGFydCBvZiB0aGUgcG9seW1lciBwcm9qZWN0IGlzIGFsc28gc3ViamVjdCB0byBhbiBhZGRpdGlvbmFsIElQIHJpZ2h0cyBncmFudAogICAgZm91bmQgYXQgaHR0cDovL3BvbHltZXIuZ2l0aHViLmlvL1BBVEVOVFMudHh0CiAgICAqLwpjb25zdCBlcz17aG9zdEF0dHJpYnV0ZXM6e3JvbGU6Im1lbnViYXIifSxrZXlCaW5kaW5nczp7bGVmdDoiX29uTGVmdEtleSIscmlnaHQ6Il9vblJpZ2h0S2V5In0sX29uVXBLZXk6ZnVuY3Rpb24odCl7dGhpcy5mb2N1c2VkSXRlbS5jbGljaygpLHQuZGV0YWlsLmtleWJvYXJkRXZlbnQucHJldmVudERlZmF1bHQoKX0sX29uRG93bktleTpmdW5jdGlvbih0KXt0aGlzLmZvY3VzZWRJdGVtLmNsaWNrKCksdC5kZXRhaWwua2V5Ym9hcmRFdmVudC5wcmV2ZW50RGVmYXVsdCgpfSxnZXQgX2lzUlRMKCl7cmV0dXJuInJ0bCI9PT13aW5kb3cuZ2V0Q29tcHV0ZWRTdHlsZSh0aGlzKS5kaXJlY3Rpb259LF9vbkxlZnRLZXk6ZnVuY3Rpb24odCl7dGhpcy5faXNSVEw/dGhpcy5fZm9jdXNOZXh0KCk6dGhpcy5fZm9jdXNQcmV2aW91cygpLHQuZGV0YWlsLmtleWJvYXJkRXZlbnQucHJldmVudERlZmF1bHQoKX0sX29uUmlnaHRLZXk6ZnVuY3Rpb24odCl7dGhpcy5faXNSVEw/dGhpcy5fZm9jdXNQcmV2aW91cygpOnRoaXMuX2ZvY3VzTmV4dCgpLHQuZGV0YWlsLmtleWJvYXJkRXZlbnQucHJldmVudERlZmF1bHQoKX0sX29uS2V5ZG93bjpmdW5jdGlvbih0KXt0aGlzLmtleWJvYXJkRXZlbnRNYXRjaGVzS2V5cyh0LCJ1cCBkb3duIGxlZnQgcmlnaHQgZXNjIil8fHRoaXMuX2ZvY3VzV2l0aEtleWJvYXJkRXZlbnQodCl9fSxucz1bWmEsZXNdOwovKioKICAgIEBsaWNlbnNlCiAgICBDb3B5cmlnaHQgKGMpIDIwMTUgVGhlIFBvbHltZXIgUHJvamVjdCBBdXRob3JzLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICAgVGhpcyBjb2RlIG1heSBvbmx5IGJlIHVzZWQgdW5kZXIgdGhlIEJTRCBzdHlsZSBsaWNlbnNlIGZvdW5kIGF0CiAgICBodHRwOi8vcG9seW1lci5naXRodWIuaW8vTElDRU5TRS50eHQgVGhlIGNvbXBsZXRlIHNldCBvZiBhdXRob3JzIG1heSBiZSBmb3VuZCBhdAogICAgaHR0cDovL3BvbHltZXIuZ2l0aHViLmlvL0FVVEhPUlMudHh0IFRoZSBjb21wbGV0ZSBzZXQgb2YgY29udHJpYnV0b3JzIG1heSBiZQogICAgZm91bmQgYXQgaHR0cDovL3BvbHltZXIuZ2l0aHViLmlvL0NPTlRSSUJVVE9SUy50eHQgQ29kZSBkaXN0cmlidXRlZCBieSBHb29nbGUgYXMKICAgIHBhcnQgb2YgdGhlIHBvbHltZXIgcHJvamVjdCBpcyBhbHNvIHN1YmplY3QgdG8gYW4gYWRkaXRpb25hbCBJUCByaWdodHMgZ3JhbnQKICAgIGZvdW5kIGF0IGh0dHA6Ly9wb2x5bWVyLmdpdGh1Yi5pby9QQVRFTlRTLnR4dAogICAgKi8KTnIoe190ZW1wbGF0ZTpfZWAKICAgIDxzdHlsZT4KICAgICAgOmhvc3QgewogICAgICAgIGRpc3BsYXk6IGlubGluZS1ibG9jazsKICAgICAgfQoKICAgICAgOmhvc3QgOjpzbG90dGVkKCopIHsKICAgICAgICBwYWRkaW5nOiB2YXIoLS1wYXBlci1yYWRpby1ncm91cC1pdGVtLXBhZGRpbmcsIDEycHgpOwogICAgICB9CiAgICA8L3N0eWxlPgoKICAgIDxzbG90Pjwvc2xvdD4KYCxpczoicGFwZXItcmFkaW8tZ3JvdXAiLGJlaGF2aW9yczpbbnNdLGhvc3RBdHRyaWJ1dGVzOntyb2xlOiJyYWRpb2dyb3VwIn0scHJvcGVydGllczp7YXR0ckZvclNlbGVjdGVkOnt0eXBlOlN0cmluZyx2YWx1ZToibmFtZSJ9LHNlbGVjdGVkQXR0cmlidXRlOnt0eXBlOlN0cmluZyx2YWx1ZToiY2hlY2tlZCJ9LHNlbGVjdGFibGU6e3R5cGU6U3RyaW5nLHZhbHVlOiJwYXBlci1yYWRpby1idXR0b24ifSxhbGxvd0VtcHR5U2VsZWN0aW9uOnt0eXBlOkJvb2xlYW4sdmFsdWU6ITF9fSxzZWxlY3Q6ZnVuY3Rpb24odCl7dmFyIGU9dGhpcy5fdmFsdWVUb0l0ZW0odCk7aWYoIWV8fCFlLmhhc0F0dHJpYnV0ZSgiZGlzYWJsZWQiKSl7aWYodGhpcy5zZWxlY3RlZCl7dmFyIG49dGhpcy5fdmFsdWVUb0l0ZW0odGhpcy5zZWxlY3RlZCk7aWYodGhpcy5zZWxlY3RlZD09dCl7aWYoIXRoaXMuYWxsb3dFbXB0eVNlbGVjdGlvbilyZXR1cm4gdm9pZChuJiYobi5jaGVja2VkPSEwKSk7dD0iIn1uJiYobi5jaGVja2VkPSExKX1qby5zZWxlY3QuYXBwbHkodGhpcyxbdF0pLHRoaXMuZmlyZSgicGFwZXItcmFkaW8tZ3JvdXAtY2hhbmdlZCIpfX0sX2FjdGl2YXRlRm9jdXNlZEl0ZW06ZnVuY3Rpb24oKXt0aGlzLl9pdGVtQWN0aXZhdGUodGhpcy5fdmFsdWVGb3JJdGVtKHRoaXMuZm9jdXNlZEl0ZW0pLHRoaXMuZm9jdXNlZEl0ZW0pfSxfb25VcEtleTpmdW5jdGlvbih0KXt0aGlzLl9mb2N1c1ByZXZpb3VzKCksdC5wcmV2ZW50RGVmYXVsdCgpLHRoaXMuX2FjdGl2YXRlRm9jdXNlZEl0ZW0oKX0sX29uRG93bktleTpmdW5jdGlvbih0KXt0aGlzLl9mb2N1c05leHQoKSx0LnByZXZlbnREZWZhdWx0KCksdGhpcy5fYWN0aXZhdGVGb2N1c2VkSXRlbSgpfSxfb25MZWZ0S2V5OmZ1bmN0aW9uKHQpe2VzLl9vbkxlZnRLZXkuYXBwbHkodGhpcyxhcmd1bWVudHMpLHRoaXMuX2FjdGl2YXRlRm9jdXNlZEl0ZW0oKX0sX29uUmlnaHRLZXk6ZnVuY3Rpb24odCl7ZXMuX29uUmlnaHRLZXkuYXBwbHkodGhpcyxhcmd1bWVudHMpLHRoaXMuX2FjdGl2YXRlRm9jdXNlZEl0ZW0oKX19KTsKLyoqCiAgICBAbGljZW5zZQogICAgQ29weXJpZ2h0IChjKSAyMDE1IFRoZSBQb2x5bWVyIFByb2plY3QgQXV0aG9ycy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAgIFRoaXMgY29kZSBtYXkgb25seSBiZSB1c2VkIHVuZGVyIHRoZSBCU0Qgc3R5bGUgbGljZW5zZSBmb3VuZCBhdAogICAgaHR0cDovL3BvbHltZXIuZ2l0aHViLmlvL0xJQ0VOU0UudHh0IFRoZSBjb21wbGV0ZSBzZXQgb2YgYXV0aG9ycyBtYXkgYmUgZm91bmQgYXQKICAgIGh0dHA6Ly9wb2x5bWVyLmdpdGh1Yi5pby9BVVRIT1JTLnR4dCBUaGUgY29tcGxldGUgc2V0IG9mIGNvbnRyaWJ1dG9ycyBtYXkgYmUKICAgIGZvdW5kIGF0IGh0dHA6Ly9wb2x5bWVyLmdpdGh1Yi5pby9DT05UUklCVVRPUlMudHh0IENvZGUgZGlzdHJpYnV0ZWQgYnkgR29vZ2xlIGFzCiAgICBwYXJ0IG9mIHRoZSBwb2x5bWVyIHByb2plY3QgaXMgYWxzbyBzdWJqZWN0IHRvIGFuIGFkZGl0aW9uYWwgSVAgcmlnaHRzIGdyYW50CiAgICBmb3VuZCBhdCBodHRwOi8vcG9seW1lci5naXRodWIuaW8vUEFURU5UUy50eHQKICAgICovCmNvbnN0IGlzPV9lYAogIDxzdHlsZT4KICAgIDpob3N0IHsKICAgICAgQGFwcGx5IC0tbGF5b3V0OwogICAgICBAYXBwbHkgLS1sYXlvdXQtanVzdGlmaWVkOwogICAgICBAYXBwbHkgLS1sYXlvdXQtY2VudGVyOwogICAgICB3aWR0aDogMjAwcHg7CiAgICAgIGN1cnNvcjogZGVmYXVsdDsKICAgICAgLXdlYmtpdC11c2VyLXNlbGVjdDogbm9uZTsKICAgICAgLW1vei11c2VyLXNlbGVjdDogbm9uZTsKICAgICAgLW1zLXVzZXItc2VsZWN0OiBub25lOwogICAgICB1c2VyLXNlbGVjdDogbm9uZTsKICAgICAgLXdlYmtpdC10YXAtaGlnaGxpZ2h0LWNvbG9yOiByZ2JhKDAsIDAsIDAsIDApOwogICAgICAtLXBhcGVyLXByb2dyZXNzLWFjdGl2ZS1jb2xvcjogdmFyKC0tcGFwZXItc2xpZGVyLWFjdGl2ZS1jb2xvciwgdmFyKC0tZ29vZ2xlLWJsdWUtNzAwKSk7CiAgICAgIC0tcGFwZXItcHJvZ3Jlc3Mtc2Vjb25kYXJ5LWNvbG9yOiB2YXIoLS1wYXBlci1zbGlkZXItc2Vjb25kYXJ5LWNvbG9yLCB2YXIoLS1nb29nbGUtYmx1ZS0zMDApKTsKICAgICAgLS1wYXBlci1wcm9ncmVzcy1kaXNhYmxlZC1hY3RpdmUtY29sb3I6IHZhcigtLXBhcGVyLXNsaWRlci1kaXNhYmxlZC1hY3RpdmUtY29sb3IsIHZhcigtLXBhcGVyLWdyZXktNDAwKSk7CiAgICAgIC0tcGFwZXItcHJvZ3Jlc3MtZGlzYWJsZWQtc2Vjb25kYXJ5LWNvbG9yOiB2YXIoLS1wYXBlci1zbGlkZXItZGlzYWJsZWQtc2Vjb25kYXJ5LWNvbG9yLCB2YXIoLS1wYXBlci1ncmV5LTQwMCkpOwogICAgICAtLWNhbGN1bGF0ZWQtcGFwZXItc2xpZGVyLWhlaWdodDogdmFyKC0tcGFwZXItc2xpZGVyLWhlaWdodCwgMnB4KTsKICAgIH0KCiAgICAvKiBmb2N1cyBzaG93cyB0aGUgcmlwcGxlICovCiAgICA6aG9zdCg6Zm9jdXMpIHsKICAgICAgb3V0bGluZTogbm9uZTsKICAgIH0KCiAgICAvKioKICAgICAgKiBOT1RFKGtlYW51bGVlKTogVGhvdWdoIDpob3N0LWNvbnRleHQgaXMgbm90IHVuaXZlcnNhbGx5IHN1cHBvcnRlZCwgc29tZSBwYWdlcwogICAgICAqIHN0aWxsIHJlbHkgb24gcGFwZXItc2xpZGVyIGJlaW5nIGZsaXBwZWQgd2hlbiBkaXI9InJ0bCIgaXMgc2V0IG9uIGJvZHkuIEZvciBmdWxsCiAgICAgICogY29tcGF0aWJpbGl0eSwgZGlyPSJydGwiIG11c3QgYmUgZXhwbGljaXRseSBzZXQgb24gcGFwZXItc2xpZGVyLgogICAgICAqLwogICAgOmRpcihydGwpICNzbGlkZXJDb250YWluZXIgewogICAgICAtd2Via2l0LXRyYW5zZm9ybTogc2NhbGVYKC0xKTsKICAgICAgdHJhbnNmb3JtOiBzY2FsZVgoLTEpOwogICAgfQoKICAgIC8qKgogICAgICAqIE5PVEUoa2VhbnVsZWUpOiBUaGlzIGlzIHNlcGFyYXRlIGZyb20gdGhlIHJ1bGUgYWJvdmUgYmVjYXVzZSA6aG9zdC1jb250ZXh0IG1heQogICAgICAqIG5vdCBiZSByZWNvZ25pemVkLgogICAgICAqLwogICAgOmhvc3QoW2Rpcj0icnRsIl0pICNzbGlkZXJDb250YWluZXIgewogICAgICAtd2Via2l0LXRyYW5zZm9ybTogc2NhbGVYKC0xKTsKICAgICAgdHJhbnNmb3JtOiBzY2FsZVgoLTEpOwogICAgfQoKICAgIC8qKgogICAgICAqIE5PVEUoa2VhbnVsZWUpOiBOZWVkZWQgdG8gb3ZlcnJpZGUgdGhlIDpob3N0LWNvbnRleHQgcnVsZSAod2hlcmUgc3VwcG9ydGVkKQogICAgICAqIHRvIHN1cHBvcnQgTFRSIHNsaWRlcnMgaW4gUlRMIHBhZ2VzLgogICAgICAqLwogICAgOmhvc3QoW2Rpcj0ibHRyIl0pICNzbGlkZXJDb250YWluZXIgewogICAgICAtd2Via2l0LXRyYW5zZm9ybTogc2NhbGVYKDEpOwogICAgICB0cmFuc2Zvcm06IHNjYWxlWCgxKTsKICAgIH0KCiAgICAjc2xpZGVyQ29udGFpbmVyIHsKICAgICAgcG9zaXRpb246IHJlbGF0aXZlOwogICAgICB3aWR0aDogMTAwJTsKICAgICAgaGVpZ2h0OiBjYWxjKDMwcHggKyB2YXIoLS1jYWxjdWxhdGVkLXBhcGVyLXNsaWRlci1oZWlnaHQpKTsKICAgICAgbWFyZ2luLWxlZnQ6IGNhbGMoMTVweCArIHZhcigtLWNhbGN1bGF0ZWQtcGFwZXItc2xpZGVyLWhlaWdodCkvMik7CiAgICAgIG1hcmdpbi1yaWdodDogY2FsYygxNXB4ICsgdmFyKC0tY2FsY3VsYXRlZC1wYXBlci1zbGlkZXItaGVpZ2h0KS8yKTsKICAgIH0KCiAgICAjc2xpZGVyQ29udGFpbmVyOmZvY3VzIHsKICAgICAgb3V0bGluZTogMDsKICAgIH0KCiAgICAjc2xpZGVyQ29udGFpbmVyLmVkaXRhYmxlIHsKICAgICAgbWFyZ2luLXRvcDogMTJweDsKICAgICAgbWFyZ2luLWJvdHRvbTogMTJweDsKICAgIH0KCiAgICAuYmFyLWNvbnRhaW5lciB7CiAgICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTsKICAgICAgdG9wOiAwOwogICAgICBib3R0b206IDA7CiAgICAgIGxlZnQ6IDA7CiAgICAgIHJpZ2h0OiAwOwogICAgICBvdmVyZmxvdzogaGlkZGVuOwogICAgfQoKICAgIC5yaW5nID4gLmJhci1jb250YWluZXIgewogICAgICBsZWZ0OiBjYWxjKDVweCArIHZhcigtLWNhbGN1bGF0ZWQtcGFwZXItc2xpZGVyLWhlaWdodCkvMik7CiAgICAgIHRyYW5zaXRpb246IGxlZnQgMC4xOHMgZWFzZTsKICAgIH0KCiAgICAucmluZy5leHBhbmQuZHJhZ2dpbmcgPiAuYmFyLWNvbnRhaW5lciB7CiAgICAgIHRyYW5zaXRpb246IG5vbmU7CiAgICB9CgogICAgLnJpbmcuZXhwYW5kOm5vdCgucGluKSA+IC5iYXItY29udGFpbmVyIHsKICAgICAgbGVmdDogY2FsYyg4cHggKyB2YXIoLS1jYWxjdWxhdGVkLXBhcGVyLXNsaWRlci1oZWlnaHQpLzIpOwogICAgfQoKICAgICNzbGlkZXJCYXIgewogICAgICBwYWRkaW5nOiAxNXB4IDA7CiAgICAgIHdpZHRoOiAxMDAlOwogICAgICBiYWNrZ3JvdW5kLWNvbG9yOiB2YXIoLS1wYXBlci1zbGlkZXItYmFyLWNvbG9yLCB0cmFuc3BhcmVudCk7CiAgICAgIC0tcGFwZXItcHJvZ3Jlc3MtY29udGFpbmVyLWNvbG9yOiB2YXIoLS1wYXBlci1zbGlkZXItY29udGFpbmVyLWNvbG9yLCB2YXIoLS1wYXBlci1ncmV5LTQwMCkpOwogICAgICAtLXBhcGVyLXByb2dyZXNzLWhlaWdodDogdmFyKC0tY2FsY3VsYXRlZC1wYXBlci1zbGlkZXItaGVpZ2h0KTsKICAgIH0KCiAgICAuc2xpZGVyLW1hcmtlcnMgewogICAgICBwb3NpdGlvbjogYWJzb2x1dGU7CiAgICAgIC8qIHNsaWRlci1rbm9iIGlzIDMwcHggKyB0aGUgc2xpZGVyLWhlaWdodCBzbyB0aGF0IHRoZSBtYXJrZXJzIHNob3VsZCBzdGFydCBhdCBhIG9mZnNldCBvZiAxNXB4Ki8KICAgICAgdG9wOiAxNXB4OwogICAgICBoZWlnaHQ6IHZhcigtLWNhbGN1bGF0ZWQtcGFwZXItc2xpZGVyLWhlaWdodCk7CiAgICAgIGxlZnQ6IDA7CiAgICAgIHJpZ2h0OiAtMXB4OwogICAgICBib3gtc2l6aW5nOiBib3JkZXItYm94OwogICAgICBwb2ludGVyLWV2ZW50czogbm9uZTsKICAgICAgQGFwcGx5IC0tbGF5b3V0LWhvcml6b250YWw7CiAgICB9CgogICAgLnNsaWRlci1tYXJrZXIgewogICAgICBAYXBwbHkgLS1sYXlvdXQtZmxleDsKICAgIH0KICAgIC5zbGlkZXItbWFya2Vyczo6YWZ0ZXIsCiAgICAuc2xpZGVyLW1hcmtlcjo6YWZ0ZXIgewogICAgICBjb250ZW50OiAiIjsKICAgICAgZGlzcGxheTogYmxvY2s7CiAgICAgIG1hcmdpbi1sZWZ0OiAtMXB4OwogICAgICB3aWR0aDogMnB4OwogICAgICBoZWlnaHQ6IHZhcigtLWNhbGN1bGF0ZWQtcGFwZXItc2xpZGVyLWhlaWdodCk7CiAgICAgIGJvcmRlci1yYWRpdXM6IDUwJTsKICAgICAgYmFja2dyb3VuZC1jb2xvcjogdmFyKC0tcGFwZXItc2xpZGVyLW1hcmtlcnMtY29sb3IsICMwMDApOwogICAgfQoKICAgIC5zbGlkZXIta25vYiB7CiAgICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTsKICAgICAgbGVmdDogMDsKICAgICAgdG9wOiAwOwogICAgICBtYXJnaW4tbGVmdDogY2FsYygtMTVweCAtIHZhcigtLWNhbGN1bGF0ZWQtcGFwZXItc2xpZGVyLWhlaWdodCkvMik7CiAgICAgIHdpZHRoOiBjYWxjKDMwcHggKyB2YXIoLS1jYWxjdWxhdGVkLXBhcGVyLXNsaWRlci1oZWlnaHQpKTsKICAgICAgaGVpZ2h0OiBjYWxjKDMwcHggKyB2YXIoLS1jYWxjdWxhdGVkLXBhcGVyLXNsaWRlci1oZWlnaHQpKTsKICAgIH0KCiAgICAudHJhbnNpdGluZyA+IC5zbGlkZXIta25vYiB7CiAgICAgIHRyYW5zaXRpb246IGxlZnQgMC4wOHMgZWFzZTsKICAgIH0KCiAgICAuc2xpZGVyLWtub2I6Zm9jdXMgewogICAgICBvdXRsaW5lOiBub25lOwogICAgfQoKICAgIC5zbGlkZXIta25vYi5kcmFnZ2luZyB7CiAgICAgIHRyYW5zaXRpb246IG5vbmU7CiAgICB9CgogICAgLnNuYXBzID4gLnNsaWRlci1rbm9iLmRyYWdnaW5nIHsKICAgICAgdHJhbnNpdGlvbjogLXdlYmtpdC10cmFuc2Zvcm0gMC4wOHMgZWFzZTsKICAgICAgdHJhbnNpdGlvbjogdHJhbnNmb3JtIDAuMDhzIGVhc2U7CiAgICB9CgogICAgLnNsaWRlci1rbm9iLWlubmVyIHsKICAgICAgbWFyZ2luOiAxMHB4OwogICAgICB3aWR0aDogY2FsYygxMDAlIC0gMjBweCk7CiAgICAgIGhlaWdodDogY2FsYygxMDAlIC0gMjBweCk7CiAgICAgIGJhY2tncm91bmQtY29sb3I6IHZhcigtLXBhcGVyLXNsaWRlci1rbm9iLWNvbG9yLCB2YXIoLS1nb29nbGUtYmx1ZS03MDApKTsKICAgICAgYm9yZGVyOiAycHggc29saWQgdmFyKC0tcGFwZXItc2xpZGVyLWtub2ItY29sb3IsIHZhcigtLWdvb2dsZS1ibHVlLTcwMCkpOwogICAgICBib3JkZXItcmFkaXVzOiA1MCU7CgogICAgICAtbW96LWJveC1zaXppbmc6IGJvcmRlci1ib3g7CiAgICAgIGJveC1zaXppbmc6IGJvcmRlci1ib3g7CgogICAgICB0cmFuc2l0aW9uLXByb3BlcnR5OiAtd2Via2l0LXRyYW5zZm9ybSwgYmFja2dyb3VuZC1jb2xvciwgYm9yZGVyOwogICAgICB0cmFuc2l0aW9uLXByb3BlcnR5OiB0cmFuc2Zvcm0sIGJhY2tncm91bmQtY29sb3IsIGJvcmRlcjsKICAgICAgdHJhbnNpdGlvbi1kdXJhdGlvbjogMC4xOHM7CiAgICAgIHRyYW5zaXRpb24tdGltaW5nLWZ1bmN0aW9uOiBlYXNlOwogICAgfQoKICAgIC5leHBhbmQ6bm90KC5waW4pID4gLnNsaWRlci1rbm9iID4gLnNsaWRlci1rbm9iLWlubmVyIHsKICAgICAgLXdlYmtpdC10cmFuc2Zvcm06IHNjYWxlKDEuNSk7CiAgICAgIHRyYW5zZm9ybTogc2NhbGUoMS41KTsKICAgIH0KCiAgICAucmluZyA+IC5zbGlkZXIta25vYiA+IC5zbGlkZXIta25vYi1pbm5lciB7CiAgICAgIGJhY2tncm91bmQtY29sb3I6IHZhcigtLXBhcGVyLXNsaWRlci1rbm9iLXN0YXJ0LWNvbG9yLCB0cmFuc3BhcmVudCk7CiAgICAgIGJvcmRlcjogMnB4IHNvbGlkIHZhcigtLXBhcGVyLXNsaWRlci1rbm9iLXN0YXJ0LWJvcmRlci1jb2xvciwgdmFyKC0tcGFwZXItZ3JleS00MDApKTsKICAgIH0KCiAgICAuc2xpZGVyLWtub2ItaW5uZXI6OmJlZm9yZSB7CiAgICAgIGJhY2tncm91bmQtY29sb3I6IHZhcigtLXBhcGVyLXNsaWRlci1waW4tY29sb3IsIHZhcigtLWdvb2dsZS1ibHVlLTcwMCkpOwogICAgfQoKICAgIC5waW4gPiAuc2xpZGVyLWtub2IgPiAuc2xpZGVyLWtub2ItaW5uZXI6OmJlZm9yZSB7CiAgICAgIGNvbnRlbnQ6ICIiOwogICAgICBwb3NpdGlvbjogYWJzb2x1dGU7CiAgICAgIHRvcDogMDsKICAgICAgbGVmdDogNTAlOwogICAgICBtYXJnaW4tbGVmdDogLTEzcHg7CiAgICAgIHdpZHRoOiAyNnB4OwogICAgICBoZWlnaHQ6IDI2cHg7CiAgICAgIGJvcmRlci1yYWRpdXM6IDUwJSA1MCUgNTAlIDA7CgogICAgICAtd2Via2l0LXRyYW5zZm9ybTogcm90YXRlKC00NWRlZykgc2NhbGUoMCkgdHJhbnNsYXRlKDApOwogICAgICB0cmFuc2Zvcm06IHJvdGF0ZSgtNDVkZWcpIHNjYWxlKDApIHRyYW5zbGF0ZSgwKTsKICAgIH0KCiAgICAuc2xpZGVyLWtub2ItaW5uZXI6OmJlZm9yZSwKICAgIC5zbGlkZXIta25vYi1pbm5lcjo6YWZ0ZXIgewogICAgICB0cmFuc2l0aW9uOiAtd2Via2l0LXRyYW5zZm9ybSAuMThzIGVhc2UsIGJhY2tncm91bmQtY29sb3IgLjE4cyBlYXNlOwogICAgICB0cmFuc2l0aW9uOiB0cmFuc2Zvcm0gLjE4cyBlYXNlLCBiYWNrZ3JvdW5kLWNvbG9yIC4xOHMgZWFzZTsKICAgIH0KCiAgICAucGluLnJpbmcgPiAuc2xpZGVyLWtub2IgPiAuc2xpZGVyLWtub2ItaW5uZXI6OmJlZm9yZSB7CiAgICAgIGJhY2tncm91bmQtY29sb3I6IHZhcigtLXBhcGVyLXNsaWRlci1waW4tc3RhcnQtY29sb3IsIHZhcigtLXBhcGVyLWdyZXktNDAwKSk7CiAgICB9CgogICAgLnBpbi5leHBhbmQgPiAuc2xpZGVyLWtub2IgPiAuc2xpZGVyLWtub2ItaW5uZXI6OmJlZm9yZSB7CiAgICAgIC13ZWJraXQtdHJhbnNmb3JtOiByb3RhdGUoLTQ1ZGVnKSBzY2FsZSgxKSB0cmFuc2xhdGUoMTdweCwgLTE3cHgpOwogICAgICB0cmFuc2Zvcm06IHJvdGF0ZSgtNDVkZWcpIHNjYWxlKDEpIHRyYW5zbGF0ZSgxN3B4LCAtMTdweCk7CiAgICB9CgogICAgLnBpbiA+IC5zbGlkZXIta25vYiA+IC5zbGlkZXIta25vYi1pbm5lcjo6YWZ0ZXIgewogICAgICBjb250ZW50OiBhdHRyKHZhbHVlKTsKICAgICAgcG9zaXRpb246IGFic29sdXRlOwogICAgICB0b3A6IDA7CiAgICAgIGxlZnQ6IDUwJTsKICAgICAgbWFyZ2luLWxlZnQ6IC0xNnB4OwogICAgICB3aWR0aDogMzJweDsKICAgICAgaGVpZ2h0OiAyNnB4OwogICAgICB0ZXh0LWFsaWduOiBjZW50ZXI7CiAgICAgIGNvbG9yOiB2YXIoLS1wYXBlci1zbGlkZXItZm9udC1jb2xvciwgI2ZmZik7CiAgICAgIGZvbnQtc2l6ZTogMTBweDsKCiAgICAgIC13ZWJraXQtdHJhbnNmb3JtOiBzY2FsZSgwKSB0cmFuc2xhdGUoMCk7CiAgICAgIHRyYW5zZm9ybTogc2NhbGUoMCkgdHJhbnNsYXRlKDApOwogICAgfQoKICAgIC5waW4uZXhwYW5kID4gLnNsaWRlci1rbm9iID4gLnNsaWRlci1rbm9iLWlubmVyOjphZnRlciB7CiAgICAgIC13ZWJraXQtdHJhbnNmb3JtOiBzY2FsZSgxKSB0cmFuc2xhdGUoMCwgLTE3cHgpOwogICAgICB0cmFuc2Zvcm06IHNjYWxlKDEpIHRyYW5zbGF0ZSgwLCAtMTdweCk7CiAgICB9CgogICAgLyogcGFwZXItaW5wdXQgKi8KICAgIC5zbGlkZXItaW5wdXQgewogICAgICB3aWR0aDogNTBweDsKICAgICAgb3ZlcmZsb3c6IGhpZGRlbjsKICAgICAgLS1wYXBlci1pbnB1dC1jb250YWluZXItaW5wdXQ6IHsKICAgICAgICB0ZXh0LWFsaWduOiBjZW50ZXI7CiAgICAgICAgQGFwcGx5IC0tcGFwZXItc2xpZGVyLWlucHV0LWNvbnRhaW5lci1pbnB1dDsKICAgICAgfTsKICAgICAgQGFwcGx5IC0tcGFwZXItc2xpZGVyLWlucHV0OwogICAgfQoKICAgIC8qIGRpc2FibGVkIHN0YXRlICovCiAgICAjc2xpZGVyQ29udGFpbmVyLmRpc2FibGVkIHsKICAgICAgcG9pbnRlci1ldmVudHM6IG5vbmU7CiAgICB9CgogICAgLmRpc2FibGVkID4gLnNsaWRlci1rbm9iID4gLnNsaWRlci1rbm9iLWlubmVyIHsKICAgICAgYmFja2dyb3VuZC1jb2xvcjogdmFyKC0tcGFwZXItc2xpZGVyLWRpc2FibGVkLWtub2ItY29sb3IsIHZhcigtLXBhcGVyLWdyZXktNDAwKSk7CiAgICAgIGJvcmRlcjogMnB4IHNvbGlkIHZhcigtLXBhcGVyLXNsaWRlci1kaXNhYmxlZC1rbm9iLWNvbG9yLCB2YXIoLS1wYXBlci1ncmV5LTQwMCkpOwogICAgICAtd2Via2l0LXRyYW5zZm9ybTogc2NhbGUzZCgwLjc1LCAwLjc1LCAxKTsKICAgICAgdHJhbnNmb3JtOiBzY2FsZTNkKDAuNzUsIDAuNzUsIDEpOwogICAgfQoKICAgIC5kaXNhYmxlZC5yaW5nID4gLnNsaWRlci1rbm9iID4gLnNsaWRlci1rbm9iLWlubmVyIHsKICAgICAgYmFja2dyb3VuZC1jb2xvcjogdmFyKC0tcGFwZXItc2xpZGVyLWtub2Itc3RhcnQtY29sb3IsIHRyYW5zcGFyZW50KTsKICAgICAgYm9yZGVyOiAycHggc29saWQgdmFyKC0tcGFwZXItc2xpZGVyLWtub2Itc3RhcnQtYm9yZGVyLWNvbG9yLCB2YXIoLS1wYXBlci1ncmV5LTQwMCkpOwogICAgfQoKICAgIHBhcGVyLXJpcHBsZSB7CiAgICAgIGNvbG9yOiB2YXIoLS1wYXBlci1zbGlkZXIta25vYi1jb2xvciwgdmFyKC0tZ29vZ2xlLWJsdWUtNzAwKSk7CiAgICB9CiAgPC9zdHlsZT4KCiAgPGRpdiBpZD0ic2xpZGVyQ29udGFpbmVyIiBjbGFzc1wkPSJbW19nZXRDbGFzc05hbWVzKGRpc2FibGVkLCBwaW4sIHNuYXBzLCBpbW1lZGlhdGVWYWx1ZSwgbWluLCBleHBhbmQsIGRyYWdnaW5nLCB0cmFuc2l0aW5nLCBlZGl0YWJsZSldXSI+CiAgICA8ZGl2IGNsYXNzPSJiYXItY29udGFpbmVyIj4KICAgICAgPHBhcGVyLXByb2dyZXNzIGRpc2FibGVkXCQ9IltbZGlzYWJsZWRdXSIgaWQ9InNsaWRlckJhciIgYXJpYS1oaWRkZW49InRydWUiIG1pbj0iW1ttaW5dXSIgbWF4PSJbW21heF1dIiBzdGVwPSJbW3N0ZXBdXSIgdmFsdWU9IltbaW1tZWRpYXRlVmFsdWVdXSIgc2Vjb25kYXJ5LXByb2dyZXNzPSJbW3NlY29uZGFyeVByb2dyZXNzXV0iIG9uLWRvd249Il9iYXJkb3duIiBvbi11cD0iX3Jlc2V0S25vYiIgb24tdHJhY2s9Il9iYXJ0cmFjayIgb24tdGFwPSJfYmFyY2xpY2siPgogICAgICA8L3BhcGVyLXByb2dyZXNzPgogICAgPC9kaXY+CgogICAgPHRlbXBsYXRlIGlzPSJkb20taWYiIGlmPSJbW3NuYXBzXV0iPgogICAgICA8ZGl2IGNsYXNzPSJzbGlkZXItbWFya2VycyI+CiAgICAgICAgPHRlbXBsYXRlIGlzPSJkb20tcmVwZWF0IiBpdGVtcz0iW1ttYXJrZXJzXV0iPgogICAgICAgICAgPGRpdiBjbGFzcz0ic2xpZGVyLW1hcmtlciI+PC9kaXY+CiAgICAgICAgPC90ZW1wbGF0ZT4KICAgICAgPC9kaXY+CiAgICA8L3RlbXBsYXRlPgoKICAgIDxkaXYgaWQ9InNsaWRlcktub2IiIGNsYXNzPSJzbGlkZXIta25vYiIgb24tZG93bj0iX2tub2Jkb3duIiBvbi11cD0iX3Jlc2V0S25vYiIgb24tdHJhY2s9Il9vblRyYWNrIiBvbi10cmFuc2l0aW9uZW5kPSJfa25vYlRyYW5zaXRpb25FbmQiPgogICAgICAgIDxkaXYgY2xhc3M9InNsaWRlci1rbm9iLWlubmVyIiB2YWx1ZVwkPSJbW2ltbWVkaWF0ZVZhbHVlXV0iPjwvZGl2PgogICAgPC9kaXY+CiAgPC9kaXY+CgogIDx0ZW1wbGF0ZSBpcz0iZG9tLWlmIiBpZj0iW1tlZGl0YWJsZV1dIj4KICAgIDxwYXBlci1pbnB1dCBpZD0iaW5wdXQiIHR5cGU9Im51bWJlciIgc3RlcD0iW1tzdGVwXV0iIG1pbj0iW1ttaW5dXSIgbWF4PSJbW21heF1dIiBjbGFzcz0ic2xpZGVyLWlucHV0IiBkaXNhYmxlZFwkPSJbW2Rpc2FibGVkXV0iIHZhbHVlPSJbW2ltbWVkaWF0ZVZhbHVlXV0iIG9uLWNoYW5nZT0iX2NoYW5nZVZhbHVlIiBvbi1rZXlkb3duPSJfaW5wdXRLZXlEb3duIiBuby1sYWJlbC1mbG9hdD4KICAgIDwvcGFwZXItaW5wdXQ+CiAgPC90ZW1wbGF0ZT4KYDtpcy5zZXRBdHRyaWJ1dGUoInN0cmlwLXdoaXRlc3BhY2UiLCIiKSxOcih7X3RlbXBsYXRlOmlzLGlzOiJwYXBlci1zbGlkZXIiLGJlaGF2aW9yczpbUm8saWEsbGEsUWFdLHByb3BlcnRpZXM6e3ZhbHVlOnt0eXBlOk51bWJlcix2YWx1ZTowfSxzbmFwczp7dHlwZTpCb29sZWFuLHZhbHVlOiExLG5vdGlmeTohMH0scGluOnt0eXBlOkJvb2xlYW4sdmFsdWU6ITEsbm90aWZ5OiEwfSxzZWNvbmRhcnlQcm9ncmVzczp7dHlwZTpOdW1iZXIsdmFsdWU6MCxub3RpZnk6ITAsb2JzZXJ2ZXI6Il9zZWNvbmRhcnlQcm9ncmVzc0NoYW5nZWQifSxlZGl0YWJsZTp7dHlwZTpCb29sZWFuLHZhbHVlOiExfSxpbW1lZGlhdGVWYWx1ZTp7dHlwZTpOdW1iZXIsdmFsdWU6MCxyZWFkT25seTohMCxub3RpZnk6ITB9LG1heE1hcmtlcnM6e3R5cGU6TnVtYmVyLHZhbHVlOjAsbm90aWZ5OiEwfSxleHBhbmQ6e3R5cGU6Qm9vbGVhbix2YWx1ZTohMSxyZWFkT25seTohMH0saWdub3JlQmFyVG91Y2g6e3R5cGU6Qm9vbGVhbix2YWx1ZTohMX0sZHJhZ2dpbmc6e3R5cGU6Qm9vbGVhbix2YWx1ZTohMSxyZWFkT25seTohMCxub3RpZnk6ITB9LHRyYW5zaXRpbmc6e3R5cGU6Qm9vbGVhbix2YWx1ZTohMSxyZWFkT25seTohMH0sbWFya2Vyczp7dHlwZTpBcnJheSxyZWFkT25seTohMCx2YWx1ZTpmdW5jdGlvbigpe3JldHVybltdfX19LG9ic2VydmVyczpbIl91cGRhdGVLbm9iKHZhbHVlLCBtaW4sIG1heCwgc25hcHMsIHN0ZXApIiwiX3ZhbHVlQ2hhbmdlZCh2YWx1ZSkiLCJfaW1tZWRpYXRlVmFsdWVDaGFuZ2VkKGltbWVkaWF0ZVZhbHVlKSIsIl91cGRhdGVNYXJrZXJzKG1heE1hcmtlcnMsIG1pbiwgbWF4LCBzbmFwcykiXSxob3N0QXR0cmlidXRlczp7cm9sZToic2xpZGVyIix0YWJpbmRleDowfSxrZXlCaW5kaW5nczp7bGVmdDoiX2xlZnRLZXkiLHJpZ2h0OiJfcmlnaHRLZXkiLCJkb3duIHBhZ2Vkb3duIGhvbWUiOiJfZGVjcmVtZW50S2V5IiwidXAgcGFnZXVwIGVuZCI6Il9pbmNyZW1lbnRLZXkifSxyZWFkeTpmdW5jdGlvbigpe3RoaXMuaWdub3JlQmFyVG91Y2gmJnJpKHRoaXMuJC5zbGlkZXJCYXIsImF1dG8iKX0saW5jcmVtZW50OmZ1bmN0aW9uKCl7dGhpcy52YWx1ZT10aGlzLl9jbGFtcFZhbHVlKHRoaXMudmFsdWUrdGhpcy5zdGVwKX0sZGVjcmVtZW50OmZ1bmN0aW9uKCl7dGhpcy52YWx1ZT10aGlzLl9jbGFtcFZhbHVlKHRoaXMudmFsdWUtdGhpcy5zdGVwKX0sX3VwZGF0ZUtub2I6ZnVuY3Rpb24odCxlLG4saSxyKXt0aGlzLnNldEF0dHJpYnV0ZSgiYXJpYS12YWx1ZW1pbiIsZSksdGhpcy5zZXRBdHRyaWJ1dGUoImFyaWEtdmFsdWVtYXgiLG4pLHRoaXMuc2V0QXR0cmlidXRlKCJhcmlhLXZhbHVlbm93Iix0KSx0aGlzLl9wb3NpdGlvbktub2IoMTAwKnRoaXMuX2NhbGNSYXRpbyh0KSl9LF92YWx1ZUNoYW5nZWQ6ZnVuY3Rpb24oKXt0aGlzLmZpcmUoInZhbHVlLWNoYW5nZSIse2NvbXBvc2VkOiEwfSl9LF9pbW1lZGlhdGVWYWx1ZUNoYW5nZWQ6ZnVuY3Rpb24oKXt0aGlzLmRyYWdnaW5nP3RoaXMuZmlyZSgiaW1tZWRpYXRlLXZhbHVlLWNoYW5nZSIse2NvbXBvc2VkOiEwfSk6dGhpcy52YWx1ZT10aGlzLmltbWVkaWF0ZVZhbHVlfSxfc2Vjb25kYXJ5UHJvZ3Jlc3NDaGFuZ2VkOmZ1bmN0aW9uKCl7dGhpcy5zZWNvbmRhcnlQcm9ncmVzcz10aGlzLl9jbGFtcFZhbHVlKHRoaXMuc2Vjb25kYXJ5UHJvZ3Jlc3MpfSxfZXhwYW5kS25vYjpmdW5jdGlvbigpe3RoaXMuX3NldEV4cGFuZCghMCl9LF9yZXNldEtub2I6ZnVuY3Rpb24oKXt0aGlzLmNhbmNlbERlYm91bmNlcigiZXhwYW5kS25vYiIpLHRoaXMuX3NldEV4cGFuZCghMSl9LF9wb3NpdGlvbktub2I6ZnVuY3Rpb24odCl7dGhpcy5fc2V0SW1tZWRpYXRlVmFsdWUodGhpcy5fY2FsY1N0ZXAodGhpcy5fY2FsY0tub2JQb3NpdGlvbih0KSkpLHRoaXMuX3NldFJhdGlvKDEwMCp0aGlzLl9jYWxjUmF0aW8odGhpcy5pbW1lZGlhdGVWYWx1ZSkpLHRoaXMuJC5zbGlkZXJLbm9iLnN0eWxlLmxlZnQ9dGhpcy5yYXRpbysiJSIsdGhpcy5kcmFnZ2luZyYmKHRoaXMuX2tub2JzdGFydHg9dGhpcy5yYXRpbyp0aGlzLl93LzEwMCx0aGlzLnRyYW5zbGF0ZTNkKDAsMCwwLHRoaXMuJC5zbGlkZXJLbm9iKSl9LF9jYWxjS25vYlBvc2l0aW9uOmZ1bmN0aW9uKHQpe3JldHVybih0aGlzLm1heC10aGlzLm1pbikqdC8xMDArdGhpcy5taW59LF9vblRyYWNrOmZ1bmN0aW9uKHQpe3N3aXRjaCh0LnN0b3BQcm9wYWdhdGlvbigpLHQuZGV0YWlsLnN0YXRlKXtjYXNlInN0YXJ0Ijp0aGlzLl90cmFja1N0YXJ0KHQpO2JyZWFrO2Nhc2UidHJhY2siOnRoaXMuX3RyYWNrWCh0KTticmVhaztjYXNlImVuZCI6dGhpcy5fdHJhY2tFbmQoKX19LF90cmFja1N0YXJ0OmZ1bmN0aW9uKHQpe3RoaXMuX3NldFRyYW5zaXRpbmcoITEpLHRoaXMuX3c9dGhpcy4kLnNsaWRlckJhci5vZmZzZXRXaWR0aCx0aGlzLl94PXRoaXMucmF0aW8qdGhpcy5fdy8xMDAsdGhpcy5fc3RhcnR4PXRoaXMuX3gsdGhpcy5fa25vYnN0YXJ0eD10aGlzLl9zdGFydHgsdGhpcy5fbWlueD0tdGhpcy5fc3RhcnR4LHRoaXMuX21heHg9dGhpcy5fdy10aGlzLl9zdGFydHgsdGhpcy4kLnNsaWRlcktub2IuY2xhc3NMaXN0LmFkZCgiZHJhZ2dpbmciKSx0aGlzLl9zZXREcmFnZ2luZyghMCl9LF90cmFja1g6ZnVuY3Rpb24odCl7dGhpcy5kcmFnZ2luZ3x8dGhpcy5fdHJhY2tTdGFydCh0KTt2YXIgZT1NYXRoLm1pbih0aGlzLl9tYXh4LE1hdGgubWF4KHRoaXMuX21pbngsdC5kZXRhaWwuZHgqKHRoaXMuX2lzUlRMPy0xOjEpKSk7dGhpcy5feD10aGlzLl9zdGFydHgrZTt2YXIgbj10aGlzLl9jYWxjU3RlcCh0aGlzLl9jYWxjS25vYlBvc2l0aW9uKHRoaXMuX3gvdGhpcy5fdyoxMDApKTt0aGlzLl9zZXRJbW1lZGlhdGVWYWx1ZShuKTt2YXIgaT10aGlzLl9jYWxjUmF0aW8odGhpcy5pbW1lZGlhdGVWYWx1ZSkqdGhpcy5fdy10aGlzLl9rbm9ic3RhcnR4O3RoaXMudHJhbnNsYXRlM2QoaSsicHgiLDAsMCx0aGlzLiQuc2xpZGVyS25vYil9LF90cmFja0VuZDpmdW5jdGlvbigpe3ZhciB0PXRoaXMuJC5zbGlkZXJLbm9iLnN0eWxlO3RoaXMuJC5zbGlkZXJLbm9iLmNsYXNzTGlzdC5yZW1vdmUoImRyYWdnaW5nIiksdGhpcy5fc2V0RHJhZ2dpbmcoITEpLHRoaXMuX3Jlc2V0S25vYigpLHRoaXMudmFsdWU9dGhpcy5pbW1lZGlhdGVWYWx1ZSx0LnRyYW5zZm9ybT10LndlYmtpdFRyYW5zZm9ybT0iIix0aGlzLmZpcmUoImNoYW5nZSIse2NvbXBvc2VkOiEwfSl9LF9rbm9iZG93bjpmdW5jdGlvbih0KXt0aGlzLl9leHBhbmRLbm9iKCksdC5wcmV2ZW50RGVmYXVsdCgpLHRoaXMuZm9jdXMoKX0sX2JhcnRyYWNrOmZ1bmN0aW9uKHQpe3RoaXMuX2FsbG93QmFyRXZlbnQodCkmJnRoaXMuX29uVHJhY2sodCl9LF9iYXJjbGljazpmdW5jdGlvbih0KXt0aGlzLl93PXRoaXMuJC5zbGlkZXJCYXIub2Zmc2V0V2lkdGg7dmFyIGU9dGhpcy4kLnNsaWRlckJhci5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKSxuPSh0LmRldGFpbC54LWUubGVmdCkvdGhpcy5fdyoxMDA7dGhpcy5faXNSVEwmJihuPTEwMC1uKTt2YXIgaT10aGlzLnJhdGlvO3RoaXMuX3NldFRyYW5zaXRpbmcoITApLHRoaXMuX3Bvc2l0aW9uS25vYihuKSxpPT09dGhpcy5yYXRpbyYmdGhpcy5fc2V0VHJhbnNpdGluZyghMSksdGhpcy5hc3luYygoZnVuY3Rpb24oKXt0aGlzLmZpcmUoImNoYW5nZSIse2NvbXBvc2VkOiEwfSl9KSksdC5wcmV2ZW50RGVmYXVsdCgpLHRoaXMuZm9jdXMoKX0sX2JhcmRvd246ZnVuY3Rpb24odCl7dGhpcy5fYWxsb3dCYXJFdmVudCh0KSYmKHRoaXMuZGVib3VuY2UoImV4cGFuZEtub2IiLHRoaXMuX2V4cGFuZEtub2IsNjApLHRoaXMuX2JhcmNsaWNrKHQpKX0sX2tub2JUcmFuc2l0aW9uRW5kOmZ1bmN0aW9uKHQpe3QudGFyZ2V0PT09dGhpcy4kLnNsaWRlcktub2ImJnRoaXMuX3NldFRyYW5zaXRpbmcoITEpfSxfdXBkYXRlTWFya2VyczpmdW5jdGlvbih0LGUsbixpKXtpfHx0aGlzLl9zZXRNYXJrZXJzKFtdKTt2YXIgcj1NYXRoLnJvdW5kKChuLWUpL3RoaXMuc3RlcCk7cj50JiYocj10KSwocjwwfHwhaXNGaW5pdGUocikpJiYocj0wKSx0aGlzLl9zZXRNYXJrZXJzKG5ldyBBcnJheShyKSl9LF9tZXJnZUNsYXNzZXM6ZnVuY3Rpb24odCl7cmV0dXJuIE9iamVjdC5rZXlzKHQpLmZpbHRlcigoZnVuY3Rpb24oZSl7cmV0dXJuIHRbZV19KSkuam9pbigiICIpfSxfZ2V0Q2xhc3NOYW1lczpmdW5jdGlvbigpe3JldHVybiB0aGlzLl9tZXJnZUNsYXNzZXMoe2Rpc2FibGVkOnRoaXMuZGlzYWJsZWQscGluOnRoaXMucGluLHNuYXBzOnRoaXMuc25hcHMscmluZzp0aGlzLmltbWVkaWF0ZVZhbHVlPD10aGlzLm1pbixleHBhbmQ6dGhpcy5leHBhbmQsZHJhZ2dpbmc6dGhpcy5kcmFnZ2luZyx0cmFuc2l0aW5nOnRoaXMudHJhbnNpdGluZyxlZGl0YWJsZTp0aGlzLmVkaXRhYmxlfSl9LF9hbGxvd0JhckV2ZW50OmZ1bmN0aW9uKHQpe3JldHVybiF0aGlzLmlnbm9yZUJhclRvdWNofHx0LmRldGFpbC5zb3VyY2VFdmVudCBpbnN0YW5jZW9mIE1vdXNlRXZlbnR9LGdldCBfaXNSVEwoKXtyZXR1cm4gdm9pZCAwPT09dGhpcy5fX2lzUlRMJiYodGhpcy5fX2lzUlRMPSJydGwiPT09d2luZG93LmdldENvbXB1dGVkU3R5bGUodGhpcykuZGlyZWN0aW9uKSx0aGlzLl9faXNSVEx9LF9sZWZ0S2V5OmZ1bmN0aW9uKHQpe3RoaXMuX2lzUlRMP3RoaXMuX2luY3JlbWVudEtleSh0KTp0aGlzLl9kZWNyZW1lbnRLZXkodCl9LF9yaWdodEtleTpmdW5jdGlvbih0KXt0aGlzLl9pc1JUTD90aGlzLl9kZWNyZW1lbnRLZXkodCk6dGhpcy5faW5jcmVtZW50S2V5KHQpfSxfaW5jcmVtZW50S2V5OmZ1bmN0aW9uKHQpe3RoaXMuZGlzYWJsZWR8fCgiZW5kIj09PXQuZGV0YWlsLmtleT90aGlzLnZhbHVlPXRoaXMubWF4OnRoaXMuaW5jcmVtZW50KCksdGhpcy5maXJlKCJjaGFuZ2UiKSx0LnByZXZlbnREZWZhdWx0KCkpfSxfZGVjcmVtZW50S2V5OmZ1bmN0aW9uKHQpe3RoaXMuZGlzYWJsZWR8fCgiaG9tZSI9PT10LmRldGFpbC5rZXk/dGhpcy52YWx1ZT10aGlzLm1pbjp0aGlzLmRlY3JlbWVudCgpLHRoaXMuZmlyZSgiY2hhbmdlIiksdC5wcmV2ZW50RGVmYXVsdCgpKX0sX2NoYW5nZVZhbHVlOmZ1bmN0aW9uKHQpe3RoaXMudmFsdWU9dC50YXJnZXQudmFsdWUsdGhpcy5maXJlKCJjaGFuZ2UiLHtjb21wb3NlZDohMH0pfSxfaW5wdXRLZXlEb3duOmZ1bmN0aW9uKHQpe3Quc3RvcFByb3BhZ2F0aW9uKCl9LF9jcmVhdGVSaXBwbGU6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5fcmlwcGxlQ29udGFpbmVyPXRoaXMuJC5zbGlkZXJLbm9iLHNhLl9jcmVhdGVSaXBwbGUuY2FsbCh0aGlzKX0sX2ZvY3VzZWRDaGFuZ2VkOmZ1bmN0aW9uKHQpe3QmJnRoaXMuZW5zdXJlUmlwcGxlKCksdGhpcy5oYXNSaXBwbGUoKSYmKHRoaXMuX3JpcHBsZS5zdHlsZS5kaXNwbGF5PXQ/IiI6Im5vbmUiLHRoaXMuX3JpcHBsZS5ob2xkRG93bj10KX19KTsKLyoqCiAgICBAbGljZW5zZQogICAgQ29weXJpZ2h0IChjKSAyMDE1IFRoZSBQb2x5bWVyIFByb2plY3QgQXV0aG9ycy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAgIFRoaXMgY29kZSBtYXkgb25seSBiZSB1c2VkIHVuZGVyIHRoZSBCU0Qgc3R5bGUgbGljZW5zZSBmb3VuZCBhdAogICAgaHR0cDovL3BvbHltZXIuZ2l0aHViLmlvL0xJQ0VOU0UudHh0IFRoZSBjb21wbGV0ZSBzZXQgb2YgYXV0aG9ycyBtYXkgYmUgZm91bmQgYXQKICAgIGh0dHA6Ly9wb2x5bWVyLmdpdGh1Yi5pby9BVVRIT1JTLnR4dCBUaGUgY29tcGxldGUgc2V0IG9mIGNvbnRyaWJ1dG9ycyBtYXkgYmUKICAgIGZvdW5kIGF0IGh0dHA6Ly9wb2x5bWVyLmdpdGh1Yi5pby9DT05UUklCVVRPUlMudHh0IENvZGUgZGlzdHJpYnV0ZWQgYnkgR29vZ2xlIGFzCiAgICBwYXJ0IG9mIHRoZSBwb2x5bWVyIHByb2plY3QgaXMgYWxzbyBzdWJqZWN0IHRvIGFuIGFkZGl0aW9uYWwgSVAgcmlnaHRzIGdyYW50CiAgICBmb3VuZCBhdCBodHRwOi8vcG9seW1lci5naXRodWIuaW8vUEFURU5UUy50eHQKICAgICovCmNvbnN0IHJzPWRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoInRlbXBsYXRlIik7cnMuc2V0QXR0cmlidXRlKCJzdHlsZSIsImRpc3BsYXk6IG5vbmU7IikscnMuaW5uZXJIVE1MPSI8ZG9tLW1vZHVsZSBpZD1cInBhcGVyLXNwaW5uZXItc3R5bGVzXCI+XG4gIDx0ZW1wbGF0ZT5cbiAgICA8c3R5bGU+XG4gICAgICAvKlxuICAgICAgLyoqKioqKioqKioqKioqKioqKioqKioqKioqL1xuICAgICAgLyogU1RZTEVTIEZPUiBUSEUgU1BJTk5FUiAqL1xuICAgICAgLyoqKioqKioqKioqKioqKioqKioqKioqKioqL1xuXG4gICAgICAvKlxuICAgICAgICogQ29uc3RhbnRzOlxuICAgICAgICogICAgICBBUkNTSVpFICAgICA9IDI3MCBkZWdyZWVzIChhbW91bnQgb2YgY2lyY2xlIHRoZSBhcmMgdGFrZXMgdXApXG4gICAgICAgKiAgICAgIEFSQ1RJTUUgICAgID0gMTMzM21zICh0aW1lIGl0IHRha2VzIHRvIGV4cGFuZCBhbmQgY29udHJhY3QgYXJjKVxuICAgICAgICogICAgICBBUkNTVEFSVFJPVCA9IDIxNiBkZWdyZWVzIChob3cgbXVjaCB0aGUgc3RhcnQgbG9jYXRpb24gb2YgdGhlIGFyY1xuICAgICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNob3VsZCByb3RhdGUgZWFjaCB0aW1lLCAyMTYgZ2l2ZXMgdXMgYVxuICAgICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDUgcG9pbnRlZCBzdGFyIHNoYXBlIChpdCdzIDM2MC81ICogMykuXG4gICAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRm9yIGEgNyBwb2ludGVkIHN0YXIsIHdlIG1pZ2h0IGRvXG4gICAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMzYwLzcgKiAzID0gMTU0LjI4NilcbiAgICAgICAqICAgICAgU0hSSU5LX1RJTUUgPSA0MDBtc1xuICAgICAgICovXG5cbiAgICAgIDpob3N0IHtcbiAgICAgICAgZGlzcGxheTogaW5saW5lLWJsb2NrO1xuICAgICAgICBwb3NpdGlvbjogcmVsYXRpdmU7XG4gICAgICAgIHdpZHRoOiAyOHB4O1xuICAgICAgICBoZWlnaHQ6IDI4cHg7XG5cbiAgICAgICAgLyogMzYwICogQVJDVElNRSAvIChBUkNTVEFSVFJPVCArICgzNjAtQVJDU0laRSkpICovXG4gICAgICAgIC0tcGFwZXItc3Bpbm5lci1jb250YWluZXItcm90YXRpb24tZHVyYXRpb246IDE1NjhtcztcblxuICAgICAgICAvKiBBUkNUSU1FICovXG4gICAgICAgIC0tcGFwZXItc3Bpbm5lci1leHBhbmQtY29udHJhY3QtZHVyYXRpb246IDEzMzNtcztcblxuICAgICAgICAvKiA0ICogQVJDVElNRSAqL1xuICAgICAgICAtLXBhcGVyLXNwaW5uZXItZnVsbC1jeWNsZS1kdXJhdGlvbjogNTMzMm1zO1xuXG4gICAgICAgIC8qIFNIUklOS19USU1FICovXG4gICAgICAgIC0tcGFwZXItc3Bpbm5lci1jb29sZG93bi1kdXJhdGlvbjogNDAwbXM7XG4gICAgICB9XG5cbiAgICAgICNzcGlubmVyQ29udGFpbmVyIHtcbiAgICAgICAgd2lkdGg6IDEwMCU7XG4gICAgICAgIGhlaWdodDogMTAwJTtcblxuICAgICAgICAvKiBUaGUgc3Bpbm5lciBkb2VzIG5vdCBoYXZlIGFueSBjb250ZW50cyB0aGF0IHdvdWxkIGhhdmUgdG8gYmVcbiAgICAgICAgICogZmxpcHBlZCBpZiB0aGUgZGlyZWN0aW9uIGNoYW5nZXMuIEFsd2F5cyB1c2UgbHRyIHNvIHRoYXQgdGhlXG4gICAgICAgICAqIHN0eWxlIHdvcmtzIG91dCBjb3JyZWN0bHkgaW4gYm90aCBjYXNlcy4gKi9cbiAgICAgICAgZGlyZWN0aW9uOiBsdHI7XG4gICAgICB9XG5cbiAgICAgICNzcGlubmVyQ29udGFpbmVyLmFjdGl2ZSB7XG4gICAgICAgIC13ZWJraXQtYW5pbWF0aW9uOiBjb250YWluZXItcm90YXRlIHZhcigtLXBhcGVyLXNwaW5uZXItY29udGFpbmVyLXJvdGF0aW9uLWR1cmF0aW9uKSBsaW5lYXIgaW5maW5pdGU7XG4gICAgICAgIGFuaW1hdGlvbjogY29udGFpbmVyLXJvdGF0ZSB2YXIoLS1wYXBlci1zcGlubmVyLWNvbnRhaW5lci1yb3RhdGlvbi1kdXJhdGlvbikgbGluZWFyIGluZmluaXRlO1xuICAgICAgfVxuXG4gICAgICBALXdlYmtpdC1rZXlmcmFtZXMgY29udGFpbmVyLXJvdGF0ZSB7XG4gICAgICAgIHRvIHsgLXdlYmtpdC10cmFuc2Zvcm06IHJvdGF0ZSgzNjBkZWcpIH1cbiAgICAgIH1cblxuICAgICAgQGtleWZyYW1lcyBjb250YWluZXItcm90YXRlIHtcbiAgICAgICAgdG8geyB0cmFuc2Zvcm06IHJvdGF0ZSgzNjBkZWcpIH1cbiAgICAgIH1cblxuICAgICAgLnNwaW5uZXItbGF5ZXIge1xuICAgICAgICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gICAgICAgIHdpZHRoOiAxMDAlO1xuICAgICAgICBoZWlnaHQ6IDEwMCU7XG4gICAgICAgIG9wYWNpdHk6IDA7XG4gICAgICAgIHdoaXRlLXNwYWNlOiBub3dyYXA7XG4gICAgICAgIGNvbG9yOiB2YXIoLS1wYXBlci1zcGlubmVyLWNvbG9yLCB2YXIoLS1nb29nbGUtYmx1ZS01MDApKTtcbiAgICAgIH1cblxuICAgICAgLmxheWVyLTEge1xuICAgICAgICBjb2xvcjogdmFyKC0tcGFwZXItc3Bpbm5lci1sYXllci0xLWNvbG9yLCB2YXIoLS1nb29nbGUtYmx1ZS01MDApKTtcbiAgICAgIH1cblxuICAgICAgLmxheWVyLTIge1xuICAgICAgICBjb2xvcjogdmFyKC0tcGFwZXItc3Bpbm5lci1sYXllci0yLWNvbG9yLCB2YXIoLS1nb29nbGUtcmVkLTUwMCkpO1xuICAgICAgfVxuXG4gICAgICAubGF5ZXItMyB7XG4gICAgICAgIGNvbG9yOiB2YXIoLS1wYXBlci1zcGlubmVyLWxheWVyLTMtY29sb3IsIHZhcigtLWdvb2dsZS15ZWxsb3ctNTAwKSk7XG4gICAgICB9XG5cbiAgICAgIC5sYXllci00IHtcbiAgICAgICAgY29sb3I6IHZhcigtLXBhcGVyLXNwaW5uZXItbGF5ZXItNC1jb2xvciwgdmFyKC0tZ29vZ2xlLWdyZWVuLTUwMCkpO1xuICAgICAgfVxuXG4gICAgICAvKipcbiAgICAgICAqIElNUE9SVEFOVCBOT1RFIEFCT1VUIENTUyBBTklNQVRJT04gUFJPUEVSVElFUyAoa2VhbnVsZWUpOlxuICAgICAgICpcbiAgICAgICAqIGlPUyBTYWZhcmkgKHRlc3RlZCBvbiBpT1MgOC4xKSBkb2VzIG5vdCBoYW5kbGUgYW5pbWF0aW9uLWRlbGF5IHZlcnkgd2VsbCAtIGl0IGRvZXNuJ3RcbiAgICAgICAqIGd1YXJhbnRlZSB0aGF0IHRoZSBhbmltYXRpb24gd2lsbCBzdGFydCBfZXhhY3RseV8gYWZ0ZXIgdGhhdCB2YWx1ZS4gU28gd2UgYXZvaWQgdXNpbmdcbiAgICAgICAqIGFuaW1hdGlvbi1kZWxheSBhbmQgaW5zdGVhZCBzZXQgY3VzdG9tIGtleWZyYW1lcyBmb3IgZWFjaCBjb2xvciAoYXMgbGF5ZXItMnVuZGFudCBhcyBpdFxuICAgICAgICogc2VlbXMpLlxuICAgICAgICovXG4gICAgICAuYWN0aXZlIC5zcGlubmVyLWxheWVyIHtcbiAgICAgICAgLXdlYmtpdC1hbmltYXRpb24tbmFtZTogZmlsbC11bmZpbGwtcm90YXRlO1xuICAgICAgICAtd2Via2l0LWFuaW1hdGlvbi1kdXJhdGlvbjogdmFyKC0tcGFwZXItc3Bpbm5lci1mdWxsLWN5Y2xlLWR1cmF0aW9uKTtcbiAgICAgICAgLXdlYmtpdC1hbmltYXRpb24tdGltaW5nLWZ1bmN0aW9uOiBjdWJpYy1iZXppZXIoMC40LCAwLjAsIDAuMiwgMSk7XG4gICAgICAgIC13ZWJraXQtYW5pbWF0aW9uLWl0ZXJhdGlvbi1jb3VudDogaW5maW5pdGU7XG4gICAgICAgIGFuaW1hdGlvbi1uYW1lOiBmaWxsLXVuZmlsbC1yb3RhdGU7XG4gICAgICAgIGFuaW1hdGlvbi1kdXJhdGlvbjogdmFyKC0tcGFwZXItc3Bpbm5lci1mdWxsLWN5Y2xlLWR1cmF0aW9uKTtcbiAgICAgICAgYW5pbWF0aW9uLXRpbWluZy1mdW5jdGlvbjogY3ViaWMtYmV6aWVyKDAuNCwgMC4wLCAwLjIsIDEpO1xuICAgICAgICBhbmltYXRpb24taXRlcmF0aW9uLWNvdW50OiBpbmZpbml0ZTtcbiAgICAgICAgb3BhY2l0eTogMTtcbiAgICAgIH1cblxuICAgICAgLmFjdGl2ZSAuc3Bpbm5lci1sYXllci5sYXllci0xIHtcbiAgICAgICAgLXdlYmtpdC1hbmltYXRpb24tbmFtZTogZmlsbC11bmZpbGwtcm90YXRlLCBsYXllci0xLWZhZGUtaW4tb3V0O1xuICAgICAgICBhbmltYXRpb24tbmFtZTogZmlsbC11bmZpbGwtcm90YXRlLCBsYXllci0xLWZhZGUtaW4tb3V0O1xuICAgICAgfVxuXG4gICAgICAuYWN0aXZlIC5zcGlubmVyLWxheWVyLmxheWVyLTIge1xuICAgICAgICAtd2Via2l0LWFuaW1hdGlvbi1uYW1lOiBmaWxsLXVuZmlsbC1yb3RhdGUsIGxheWVyLTItZmFkZS1pbi1vdXQ7XG4gICAgICAgIGFuaW1hdGlvbi1uYW1lOiBmaWxsLXVuZmlsbC1yb3RhdGUsIGxheWVyLTItZmFkZS1pbi1vdXQ7XG4gICAgICB9XG5cbiAgICAgIC5hY3RpdmUgLnNwaW5uZXItbGF5ZXIubGF5ZXItMyB7XG4gICAgICAgIC13ZWJraXQtYW5pbWF0aW9uLW5hbWU6IGZpbGwtdW5maWxsLXJvdGF0ZSwgbGF5ZXItMy1mYWRlLWluLW91dDtcbiAgICAgICAgYW5pbWF0aW9uLW5hbWU6IGZpbGwtdW5maWxsLXJvdGF0ZSwgbGF5ZXItMy1mYWRlLWluLW91dDtcbiAgICAgIH1cblxuICAgICAgLmFjdGl2ZSAuc3Bpbm5lci1sYXllci5sYXllci00IHtcbiAgICAgICAgLXdlYmtpdC1hbmltYXRpb24tbmFtZTogZmlsbC11bmZpbGwtcm90YXRlLCBsYXllci00LWZhZGUtaW4tb3V0O1xuICAgICAgICBhbmltYXRpb24tbmFtZTogZmlsbC11bmZpbGwtcm90YXRlLCBsYXllci00LWZhZGUtaW4tb3V0O1xuICAgICAgfVxuXG4gICAgICBALXdlYmtpdC1rZXlmcmFtZXMgZmlsbC11bmZpbGwtcm90YXRlIHtcbiAgICAgICAgMTIuNSUgeyAtd2Via2l0LXRyYW5zZm9ybTogcm90YXRlKDEzNWRlZykgfSAvKiAwLjUgKiBBUkNTSVpFICovXG4gICAgICAgIDI1JSAgIHsgLXdlYmtpdC10cmFuc2Zvcm06IHJvdGF0ZSgyNzBkZWcpIH0gLyogMSAgICogQVJDU0laRSAqL1xuICAgICAgICAzNy41JSB7IC13ZWJraXQtdHJhbnNmb3JtOiByb3RhdGUoNDA1ZGVnKSB9IC8qIDEuNSAqIEFSQ1NJWkUgKi9cbiAgICAgICAgNTAlICAgeyAtd2Via2l0LXRyYW5zZm9ybTogcm90YXRlKDU0MGRlZykgfSAvKiAyICAgKiBBUkNTSVpFICovXG4gICAgICAgIDYyLjUlIHsgLXdlYmtpdC10cmFuc2Zvcm06IHJvdGF0ZSg2NzVkZWcpIH0gLyogMi41ICogQVJDU0laRSAqL1xuICAgICAgICA3NSUgICB7IC13ZWJraXQtdHJhbnNmb3JtOiByb3RhdGUoODEwZGVnKSB9IC8qIDMgICAqIEFSQ1NJWkUgKi9cbiAgICAgICAgODcuNSUgeyAtd2Via2l0LXRyYW5zZm9ybTogcm90YXRlKDk0NWRlZykgfSAvKiAzLjUgKiBBUkNTSVpFICovXG4gICAgICAgIHRvICAgIHsgLXdlYmtpdC10cmFuc2Zvcm06IHJvdGF0ZSgxMDgwZGVnKSB9IC8qIDQgICAqIEFSQ1NJWkUgKi9cbiAgICAgIH1cblxuICAgICAgQGtleWZyYW1lcyBmaWxsLXVuZmlsbC1yb3RhdGUge1xuICAgICAgICAxMi41JSB7IHRyYW5zZm9ybTogcm90YXRlKDEzNWRlZykgfSAvKiAwLjUgKiBBUkNTSVpFICovXG4gICAgICAgIDI1JSAgIHsgdHJhbnNmb3JtOiByb3RhdGUoMjcwZGVnKSB9IC8qIDEgICAqIEFSQ1NJWkUgKi9cbiAgICAgICAgMzcuNSUgeyB0cmFuc2Zvcm06IHJvdGF0ZSg0MDVkZWcpIH0gLyogMS41ICogQVJDU0laRSAqL1xuICAgICAgICA1MCUgICB7IHRyYW5zZm9ybTogcm90YXRlKDU0MGRlZykgfSAvKiAyICAgKiBBUkNTSVpFICovXG4gICAgICAgIDYyLjUlIHsgdHJhbnNmb3JtOiByb3RhdGUoNjc1ZGVnKSB9IC8qIDIuNSAqIEFSQ1NJWkUgKi9cbiAgICAgICAgNzUlICAgeyB0cmFuc2Zvcm06IHJvdGF0ZSg4MTBkZWcpIH0gLyogMyAgICogQVJDU0laRSAqL1xuICAgICAgICA4Ny41JSB7IHRyYW5zZm9ybTogcm90YXRlKDk0NWRlZykgfSAvKiAzLjUgKiBBUkNTSVpFICovXG4gICAgICAgIHRvICAgIHsgdHJhbnNmb3JtOiByb3RhdGUoMTA4MGRlZykgfSAvKiA0ICAgKiBBUkNTSVpFICovXG4gICAgICB9XG5cbiAgICAgIEAtd2Via2l0LWtleWZyYW1lcyBsYXllci0xLWZhZGUtaW4tb3V0IHtcbiAgICAgICAgMCUgeyBvcGFjaXR5OiAxIH1cbiAgICAgICAgMjUlIHsgb3BhY2l0eTogMSB9XG4gICAgICAgIDI2JSB7IG9wYWNpdHk6IDAgfVxuICAgICAgICA4OSUgeyBvcGFjaXR5OiAwIH1cbiAgICAgICAgOTAlIHsgb3BhY2l0eTogMSB9XG4gICAgICAgIHRvIHsgb3BhY2l0eTogMSB9XG4gICAgICB9XG5cbiAgICAgIEBrZXlmcmFtZXMgbGF5ZXItMS1mYWRlLWluLW91dCB7XG4gICAgICAgIDAlIHsgb3BhY2l0eTogMSB9XG4gICAgICAgIDI1JSB7IG9wYWNpdHk6IDEgfVxuICAgICAgICAyNiUgeyBvcGFjaXR5OiAwIH1cbiAgICAgICAgODklIHsgb3BhY2l0eTogMCB9XG4gICAgICAgIDkwJSB7IG9wYWNpdHk6IDEgfVxuICAgICAgICB0byB7IG9wYWNpdHk6IDEgfVxuICAgICAgfVxuXG4gICAgICBALXdlYmtpdC1rZXlmcmFtZXMgbGF5ZXItMi1mYWRlLWluLW91dCB7XG4gICAgICAgIDAlIHsgb3BhY2l0eTogMCB9XG4gICAgICAgIDE1JSB7IG9wYWNpdHk6IDAgfVxuICAgICAgICAyNSUgeyBvcGFjaXR5OiAxIH1cbiAgICAgICAgNTAlIHsgb3BhY2l0eTogMSB9XG4gICAgICAgIDUxJSB7IG9wYWNpdHk6IDAgfVxuICAgICAgICB0byB7IG9wYWNpdHk6IDAgfVxuICAgICAgfVxuXG4gICAgICBAa2V5ZnJhbWVzIGxheWVyLTItZmFkZS1pbi1vdXQge1xuICAgICAgICAwJSB7IG9wYWNpdHk6IDAgfVxuICAgICAgICAxNSUgeyBvcGFjaXR5OiAwIH1cbiAgICAgICAgMjUlIHsgb3BhY2l0eTogMSB9XG4gICAgICAgIDUwJSB7IG9wYWNpdHk6IDEgfVxuICAgICAgICA1MSUgeyBvcGFjaXR5OiAwIH1cbiAgICAgICAgdG8geyBvcGFjaXR5OiAwIH1cbiAgICAgIH1cblxuICAgICAgQC13ZWJraXQta2V5ZnJhbWVzIGxheWVyLTMtZmFkZS1pbi1vdXQge1xuICAgICAgICAwJSB7IG9wYWNpdHk6IDAgfVxuICAgICAgICA0MCUgeyBvcGFjaXR5OiAwIH1cbiAgICAgICAgNTAlIHsgb3BhY2l0eTogMSB9XG4gICAgICAgIDc1JSB7IG9wYWNpdHk6IDEgfVxuICAgICAgICA3NiUgeyBvcGFjaXR5OiAwIH1cbiAgICAgICAgdG8geyBvcGFjaXR5OiAwIH1cbiAgICAgIH1cblxuICAgICAgQGtleWZyYW1lcyBsYXllci0zLWZhZGUtaW4tb3V0IHtcbiAgICAgICAgMCUgeyBvcGFjaXR5OiAwIH1cbiAgICAgICAgNDAlIHsgb3BhY2l0eTogMCB9XG4gICAgICAgIDUwJSB7IG9wYWNpdHk6IDEgfVxuICAgICAgICA3NSUgeyBvcGFjaXR5OiAxIH1cbiAgICAgICAgNzYlIHsgb3BhY2l0eTogMCB9XG4gICAgICAgIHRvIHsgb3BhY2l0eTogMCB9XG4gICAgICB9XG5cbiAgICAgIEAtd2Via2l0LWtleWZyYW1lcyBsYXllci00LWZhZGUtaW4tb3V0IHtcbiAgICAgICAgMCUgeyBvcGFjaXR5OiAwIH1cbiAgICAgICAgNjUlIHsgb3BhY2l0eTogMCB9XG4gICAgICAgIDc1JSB7IG9wYWNpdHk6IDEgfVxuICAgICAgICA5MCUgeyBvcGFjaXR5OiAxIH1cbiAgICAgICAgdG8geyBvcGFjaXR5OiAwIH1cbiAgICAgIH1cblxuICAgICAgQGtleWZyYW1lcyBsYXllci00LWZhZGUtaW4tb3V0IHtcbiAgICAgICAgMCUgeyBvcGFjaXR5OiAwIH1cbiAgICAgICAgNjUlIHsgb3BhY2l0eTogMCB9XG4gICAgICAgIDc1JSB7IG9wYWNpdHk6IDEgfVxuICAgICAgICA5MCUgeyBvcGFjaXR5OiAxIH1cbiAgICAgICAgdG8geyBvcGFjaXR5OiAwIH1cbiAgICAgIH1cblxuICAgICAgLmNpcmNsZS1jbGlwcGVyIHtcbiAgICAgICAgZGlzcGxheTogaW5saW5lLWJsb2NrO1xuICAgICAgICBwb3NpdGlvbjogcmVsYXRpdmU7XG4gICAgICAgIHdpZHRoOiA1MCU7XG4gICAgICAgIGhlaWdodDogMTAwJTtcbiAgICAgICAgb3ZlcmZsb3c6IGhpZGRlbjtcbiAgICAgIH1cblxuICAgICAgLyoqXG4gICAgICAgKiBQYXRjaCB0aGUgZ2FwIHRoYXQgYXBwZWFyIGJldHdlZW4gdGhlIHR3byBhZGphY2VudCBkaXYuY2lyY2xlLWNsaXBwZXIgd2hpbGUgdGhlXG4gICAgICAgKiBzcGlubmVyIGlzIHJvdGF0aW5nIChhcHBlYXJzIG9uIENocm9tZSA1MCwgU2FmYXJpIDkuMS4xLCBhbmQgRWRnZSkuXG4gICAgICAgKi9cbiAgICAgIC5zcGlubmVyLWxheWVyOjphZnRlciB7XG4gICAgICAgIGNvbnRlbnQ6ICcnO1xuICAgICAgICBsZWZ0OiA0NSU7XG4gICAgICAgIHdpZHRoOiAxMCU7XG4gICAgICAgIGJvcmRlci10b3Atc3R5bGU6IHNvbGlkO1xuICAgICAgfVxuXG4gICAgICAuc3Bpbm5lci1sYXllcjo6YWZ0ZXIsXG4gICAgICAuY2lyY2xlLWNsaXBwZXIgLmNpcmNsZSB7XG4gICAgICAgIGJveC1zaXppbmc6IGJvcmRlci1ib3g7XG4gICAgICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgICAgICAgdG9wOiAwO1xuICAgICAgICBib3JkZXItd2lkdGg6IHZhcigtLXBhcGVyLXNwaW5uZXItc3Ryb2tlLXdpZHRoLCAzcHgpO1xuICAgICAgICBib3JkZXItcmFkaXVzOiA1MCU7XG4gICAgICB9XG5cbiAgICAgIC5jaXJjbGUtY2xpcHBlciAuY2lyY2xlIHtcbiAgICAgICAgYm90dG9tOiAwO1xuICAgICAgICB3aWR0aDogMjAwJTtcbiAgICAgICAgYm9yZGVyLXN0eWxlOiBzb2xpZDtcbiAgICAgICAgYm9yZGVyLWJvdHRvbS1jb2xvcjogdHJhbnNwYXJlbnQgIWltcG9ydGFudDtcbiAgICAgIH1cblxuICAgICAgLmNpcmNsZS1jbGlwcGVyLmxlZnQgLmNpcmNsZSB7XG4gICAgICAgIGxlZnQ6IDA7XG4gICAgICAgIGJvcmRlci1yaWdodC1jb2xvcjogdHJhbnNwYXJlbnQgIWltcG9ydGFudDtcbiAgICAgICAgLXdlYmtpdC10cmFuc2Zvcm06IHJvdGF0ZSgxMjlkZWcpO1xuICAgICAgICB0cmFuc2Zvcm06IHJvdGF0ZSgxMjlkZWcpO1xuICAgICAgfVxuXG4gICAgICAuY2lyY2xlLWNsaXBwZXIucmlnaHQgLmNpcmNsZSB7XG4gICAgICAgIGxlZnQ6IC0xMDAlO1xuICAgICAgICBib3JkZXItbGVmdC1jb2xvcjogdHJhbnNwYXJlbnQgIWltcG9ydGFudDtcbiAgICAgICAgLXdlYmtpdC10cmFuc2Zvcm06IHJvdGF0ZSgtMTI5ZGVnKTtcbiAgICAgICAgdHJhbnNmb3JtOiByb3RhdGUoLTEyOWRlZyk7XG4gICAgICB9XG5cbiAgICAgIC5hY3RpdmUgLmdhcC1wYXRjaDo6YWZ0ZXIsXG4gICAgICAuYWN0aXZlIC5jaXJjbGUtY2xpcHBlciAuY2lyY2xlIHtcbiAgICAgICAgLXdlYmtpdC1hbmltYXRpb24tZHVyYXRpb246IHZhcigtLXBhcGVyLXNwaW5uZXItZXhwYW5kLWNvbnRyYWN0LWR1cmF0aW9uKTtcbiAgICAgICAgLXdlYmtpdC1hbmltYXRpb24tdGltaW5nLWZ1bmN0aW9uOiBjdWJpYy1iZXppZXIoMC40LCAwLjAsIDAuMiwgMSk7XG4gICAgICAgIC13ZWJraXQtYW5pbWF0aW9uLWl0ZXJhdGlvbi1jb3VudDogaW5maW5pdGU7XG4gICAgICAgIGFuaW1hdGlvbi1kdXJhdGlvbjogdmFyKC0tcGFwZXItc3Bpbm5lci1leHBhbmQtY29udHJhY3QtZHVyYXRpb24pO1xuICAgICAgICBhbmltYXRpb24tdGltaW5nLWZ1bmN0aW9uOiBjdWJpYy1iZXppZXIoMC40LCAwLjAsIDAuMiwgMSk7XG4gICAgICAgIGFuaW1hdGlvbi1pdGVyYXRpb24tY291bnQ6IGluZmluaXRlO1xuICAgICAgfVxuXG4gICAgICAuYWN0aXZlIC5jaXJjbGUtY2xpcHBlci5sZWZ0IC5jaXJjbGUge1xuICAgICAgICAtd2Via2l0LWFuaW1hdGlvbi1uYW1lOiBsZWZ0LXNwaW47XG4gICAgICAgIGFuaW1hdGlvbi1uYW1lOiBsZWZ0LXNwaW47XG4gICAgICB9XG5cbiAgICAgIC5hY3RpdmUgLmNpcmNsZS1jbGlwcGVyLnJpZ2h0IC5jaXJjbGUge1xuICAgICAgICAtd2Via2l0LWFuaW1hdGlvbi1uYW1lOiByaWdodC1zcGluO1xuICAgICAgICBhbmltYXRpb24tbmFtZTogcmlnaHQtc3BpbjtcbiAgICAgIH1cblxuICAgICAgQC13ZWJraXQta2V5ZnJhbWVzIGxlZnQtc3BpbiB7XG4gICAgICAgIDAlIHsgLXdlYmtpdC10cmFuc2Zvcm06IHJvdGF0ZSgxMzBkZWcpIH1cbiAgICAgICAgNTAlIHsgLXdlYmtpdC10cmFuc2Zvcm06IHJvdGF0ZSgtNWRlZykgfVxuICAgICAgICB0byB7IC13ZWJraXQtdHJhbnNmb3JtOiByb3RhdGUoMTMwZGVnKSB9XG4gICAgICB9XG5cbiAgICAgIEBrZXlmcmFtZXMgbGVmdC1zcGluIHtcbiAgICAgICAgMCUgeyB0cmFuc2Zvcm06IHJvdGF0ZSgxMzBkZWcpIH1cbiAgICAgICAgNTAlIHsgdHJhbnNmb3JtOiByb3RhdGUoLTVkZWcpIH1cbiAgICAgICAgdG8geyB0cmFuc2Zvcm06IHJvdGF0ZSgxMzBkZWcpIH1cbiAgICAgIH1cblxuICAgICAgQC13ZWJraXQta2V5ZnJhbWVzIHJpZ2h0LXNwaW4ge1xuICAgICAgICAwJSB7IC13ZWJraXQtdHJhbnNmb3JtOiByb3RhdGUoLTEzMGRlZykgfVxuICAgICAgICA1MCUgeyAtd2Via2l0LXRyYW5zZm9ybTogcm90YXRlKDVkZWcpIH1cbiAgICAgICAgdG8geyAtd2Via2l0LXRyYW5zZm9ybTogcm90YXRlKC0xMzBkZWcpIH1cbiAgICAgIH1cblxuICAgICAgQGtleWZyYW1lcyByaWdodC1zcGluIHtcbiAgICAgICAgMCUgeyB0cmFuc2Zvcm06IHJvdGF0ZSgtMTMwZGVnKSB9XG4gICAgICAgIDUwJSB7IHRyYW5zZm9ybTogcm90YXRlKDVkZWcpIH1cbiAgICAgICAgdG8geyB0cmFuc2Zvcm06IHJvdGF0ZSgtMTMwZGVnKSB9XG4gICAgICB9XG5cbiAgICAgICNzcGlubmVyQ29udGFpbmVyLmNvb2xkb3duIHtcbiAgICAgICAgLXdlYmtpdC1hbmltYXRpb246IGNvbnRhaW5lci1yb3RhdGUgdmFyKC0tcGFwZXItc3Bpbm5lci1jb250YWluZXItcm90YXRpb24tZHVyYXRpb24pIGxpbmVhciBpbmZpbml0ZSwgZmFkZS1vdXQgdmFyKC0tcGFwZXItc3Bpbm5lci1jb29sZG93bi1kdXJhdGlvbikgY3ViaWMtYmV6aWVyKDAuNCwgMC4wLCAwLjIsIDEpO1xuICAgICAgICBhbmltYXRpb246IGNvbnRhaW5lci1yb3RhdGUgdmFyKC0tcGFwZXItc3Bpbm5lci1jb250YWluZXItcm90YXRpb24tZHVyYXRpb24pIGxpbmVhciBpbmZpbml0ZSwgZmFkZS1vdXQgdmFyKC0tcGFwZXItc3Bpbm5lci1jb29sZG93bi1kdXJhdGlvbikgY3ViaWMtYmV6aWVyKDAuNCwgMC4wLCAwLjIsIDEpO1xuICAgICAgfVxuXG4gICAgICBALXdlYmtpdC1rZXlmcmFtZXMgZmFkZS1vdXQge1xuICAgICAgICAwJSB7IG9wYWNpdHk6IDEgfVxuICAgICAgICB0byB7IG9wYWNpdHk6IDAgfVxuICAgICAgfVxuXG4gICAgICBAa2V5ZnJhbWVzIGZhZGUtb3V0IHtcbiAgICAgICAgMCUgeyBvcGFjaXR5OiAxIH1cbiAgICAgICAgdG8geyBvcGFjaXR5OiAwIH1cbiAgICAgIH1cbiAgICA8L3N0eWxlPlxuICA8L3RlbXBsYXRlPlxuPC9kb20tbW9kdWxlPiIsZG9jdW1lbnQuaGVhZC5hcHBlbmRDaGlsZChycy5jb250ZW50KTsKLyoqCiAgICBAbGljZW5zZQogICAgQ29weXJpZ2h0IChjKSAyMDE1IFRoZSBQb2x5bWVyIFByb2plY3QgQXV0aG9ycy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAgIFRoaXMgY29kZSBtYXkgb25seSBiZSB1c2VkIHVuZGVyIHRoZSBCU0Qgc3R5bGUgbGljZW5zZSBmb3VuZCBhdAogICAgaHR0cDovL3BvbHltZXIuZ2l0aHViLmlvL0xJQ0VOU0UudHh0IFRoZSBjb21wbGV0ZSBzZXQgb2YgYXV0aG9ycyBtYXkgYmUgZm91bmQgYXQKICAgIGh0dHA6Ly9wb2x5bWVyLmdpdGh1Yi5pby9BVVRIT1JTLnR4dCBUaGUgY29tcGxldGUgc2V0IG9mIGNvbnRyaWJ1dG9ycyBtYXkgYmUKICAgIGZvdW5kIGF0IGh0dHA6Ly9wb2x5bWVyLmdpdGh1Yi5pby9DT05UUklCVVRPUlMudHh0IENvZGUgZGlzdHJpYnV0ZWQgYnkgR29vZ2xlIGFzCiAgICBwYXJ0IG9mIHRoZSBwb2x5bWVyIHByb2plY3QgaXMgYWxzbyBzdWJqZWN0IHRvIGFuIGFkZGl0aW9uYWwgSVAgcmlnaHRzIGdyYW50CiAgICBmb3VuZCBhdCBodHRwOi8vcG9seW1lci5naXRodWIuaW8vUEFURU5UUy50eHQKICAgICovCmNvbnN0IG9zPXtwcm9wZXJ0aWVzOnthY3RpdmU6e3R5cGU6Qm9vbGVhbix2YWx1ZTohMSxyZWZsZWN0VG9BdHRyaWJ1dGU6ITAsb2JzZXJ2ZXI6Il9fYWN0aXZlQ2hhbmdlZCJ9LGFsdDp7dHlwZTpTdHJpbmcsdmFsdWU6ImxvYWRpbmciLG9ic2VydmVyOiJfX2FsdENoYW5nZWQifSxfX2Nvb2xpbmdEb3duOnt0eXBlOkJvb2xlYW4sdmFsdWU6ITF9fSxfX2NvbXB1dGVDb250YWluZXJDbGFzc2VzOmZ1bmN0aW9uKHQsZSl7cmV0dXJuW3R8fGU/ImFjdGl2ZSI6IiIsZT8iY29vbGRvd24iOiIiXS5qb2luKCIgIil9LF9fYWN0aXZlQ2hhbmdlZDpmdW5jdGlvbih0LGUpe3RoaXMuX19zZXRBcmlhSGlkZGVuKCF0KSx0aGlzLl9fY29vbGluZ0Rvd249IXQmJmV9LF9fYWx0Q2hhbmdlZDpmdW5jdGlvbih0KXsibG9hZGluZyI9PT10P3RoaXMuYWx0PXRoaXMuZ2V0QXR0cmlidXRlKCJhcmlhLWxhYmVsIil8fHQ6KHRoaXMuX19zZXRBcmlhSGlkZGVuKCIiPT09dCksdGhpcy5zZXRBdHRyaWJ1dGUoImFyaWEtbGFiZWwiLHQpKX0sX19zZXRBcmlhSGlkZGVuOmZ1bmN0aW9uKHQpe3ZhciBlPSJhcmlhLWhpZGRlbiI7dD90aGlzLnNldEF0dHJpYnV0ZShlLCJ0cnVlIik6dGhpcy5yZW1vdmVBdHRyaWJ1dGUoZSl9LF9fcmVzZXQ6ZnVuY3Rpb24oKXt0aGlzLmFjdGl2ZT0hMSx0aGlzLl9fY29vbGluZ0Rvd249ITF9fSxhcz1fZWAKICA8c3R5bGUgaW5jbHVkZT0icGFwZXItc3Bpbm5lci1zdHlsZXMiPjwvc3R5bGU+CgogIDxkaXYgaWQ9InNwaW5uZXJDb250YWluZXIiIGNsYXNzLW5hbWU9IltbX19jb21wdXRlQ29udGFpbmVyQ2xhc3NlcyhhY3RpdmUsIF9fY29vbGluZ0Rvd24pXV0iIG9uLWFuaW1hdGlvbmVuZD0iX19yZXNldCIgb24td2Via2l0LWFuaW1hdGlvbi1lbmQ9Il9fcmVzZXQiPgogICAgPGRpdiBjbGFzcz0ic3Bpbm5lci1sYXllciI+CiAgICAgIDxkaXYgY2xhc3M9ImNpcmNsZS1jbGlwcGVyIGxlZnQiPgogICAgICAgIDxkaXYgY2xhc3M9ImNpcmNsZSI+PC9kaXY+CiAgICAgIDwvZGl2PgogICAgICA8ZGl2IGNsYXNzPSJjaXJjbGUtY2xpcHBlciByaWdodCI+CiAgICAgICAgPGRpdiBjbGFzcz0iY2lyY2xlIj48L2Rpdj4KICAgICAgPC9kaXY+CiAgICA8L2Rpdj4KICA8L2Rpdj4KYDsKLyoqCiAgICBAbGljZW5zZQogICAgQ29weXJpZ2h0IChjKSAyMDE1IFRoZSBQb2x5bWVyIFByb2plY3QgQXV0aG9ycy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAgIFRoaXMgY29kZSBtYXkgb25seSBiZSB1c2VkIHVuZGVyIHRoZSBCU0Qgc3R5bGUgbGljZW5zZSBmb3VuZCBhdAogICAgaHR0cDovL3BvbHltZXIuZ2l0aHViLmlvL0xJQ0VOU0UudHh0IFRoZSBjb21wbGV0ZSBzZXQgb2YgYXV0aG9ycyBtYXkgYmUgZm91bmQgYXQKICAgIGh0dHA6Ly9wb2x5bWVyLmdpdGh1Yi5pby9BVVRIT1JTLnR4dCBUaGUgY29tcGxldGUgc2V0IG9mIGNvbnRyaWJ1dG9ycyBtYXkgYmUKICAgIGZvdW5kIGF0IGh0dHA6Ly9wb2x5bWVyLmdpdGh1Yi5pby9DT05UUklCVVRPUlMudHh0IENvZGUgZGlzdHJpYnV0ZWQgYnkgR29vZ2xlIGFzCiAgICBwYXJ0IG9mIHRoZSBwb2x5bWVyIHByb2plY3QgaXMgYWxzbyBzdWJqZWN0IHRvIGFuIGFkZGl0aW9uYWwgSVAgcmlnaHRzIGdyYW50CiAgICBmb3VuZCBhdCBodHRwOi8vcG9seW1lci5naXRodWIuaW8vUEFURU5UUy50eHQKICAgICovYXMuc2V0QXR0cmlidXRlKCJzdHJpcC13aGl0ZXNwYWNlIiwiIiksTnIoe190ZW1wbGF0ZTphcyxpczoicGFwZXItc3Bpbm5lci1saXRlIixiZWhhdmlvcnM6W29zXX0pOwovKioKICAgIEBsaWNlbnNlCiAgICBDb3B5cmlnaHQgKGMpIDIwMTUgVGhlIFBvbHltZXIgUHJvamVjdCBBdXRob3JzLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICAgVGhpcyBjb2RlIG1heSBvbmx5IGJlIHVzZWQgdW5kZXIgdGhlIEJTRCBzdHlsZSBsaWNlbnNlIGZvdW5kIGF0CiAgICBodHRwOi8vcG9seW1lci5naXRodWIuaW8vTElDRU5TRS50eHQgVGhlIGNvbXBsZXRlIHNldCBvZiBhdXRob3JzIG1heSBiZSBmb3VuZCBhdAogICAgaHR0cDovL3BvbHltZXIuZ2l0aHViLmlvL0FVVEhPUlMudHh0IFRoZSBjb21wbGV0ZSBzZXQgb2YgY29udHJpYnV0b3JzIG1heSBiZQogICAgZm91bmQgYXQgaHR0cDovL3BvbHltZXIuZ2l0aHViLmlvL0NPTlRSSUJVVE9SUy50eHQgQ29kZSBkaXN0cmlidXRlZCBieSBHb29nbGUgYXMKICAgIHBhcnQgb2YgdGhlIHBvbHltZXIgcHJvamVjdCBpcyBhbHNvIHN1YmplY3QgdG8gYW4gYWRkaXRpb25hbCBJUCByaWdodHMgZ3JhbnQKICAgIGZvdW5kIGF0IGh0dHA6Ly9wb2x5bWVyLmdpdGh1Yi5pby9QQVRFTlRTLnR4dAogICAgKi8KY29uc3Qgc3M9X2VgCiAgPHN0eWxlIGluY2x1ZGU9InBhcGVyLXNwaW5uZXItc3R5bGVzIj48L3N0eWxlPgoKICA8ZGl2IGlkPSJzcGlubmVyQ29udGFpbmVyIiBjbGFzcy1uYW1lPSJbW19fY29tcHV0ZUNvbnRhaW5lckNsYXNzZXMoYWN0aXZlLCBfX2Nvb2xpbmdEb3duKV1dIiBvbi1hbmltYXRpb25lbmQ9Il9fcmVzZXQiIG9uLXdlYmtpdC1hbmltYXRpb24tZW5kPSJfX3Jlc2V0Ij4KICAgIDxkaXYgY2xhc3M9InNwaW5uZXItbGF5ZXIgbGF5ZXItMSI+CiAgICAgIDxkaXYgY2xhc3M9ImNpcmNsZS1jbGlwcGVyIGxlZnQiPgogICAgICAgIDxkaXYgY2xhc3M9ImNpcmNsZSI+PC9kaXY+CiAgICAgIDwvZGl2PgogICAgICA8ZGl2IGNsYXNzPSJjaXJjbGUtY2xpcHBlciByaWdodCI+CiAgICAgICAgPGRpdiBjbGFzcz0iY2lyY2xlIj48L2Rpdj4KICAgICAgPC9kaXY+CiAgICA8L2Rpdj4KCiAgICA8ZGl2IGNsYXNzPSJzcGlubmVyLWxheWVyIGxheWVyLTIiPgogICAgICA8ZGl2IGNsYXNzPSJjaXJjbGUtY2xpcHBlciBsZWZ0Ij4KICAgICAgICA8ZGl2IGNsYXNzPSJjaXJjbGUiPjwvZGl2PgogICAgICA8L2Rpdj4KICAgICAgPGRpdiBjbGFzcz0iY2lyY2xlLWNsaXBwZXIgcmlnaHQiPgogICAgICAgIDxkaXYgY2xhc3M9ImNpcmNsZSI+PC9kaXY+CiAgICAgIDwvZGl2PgogICAgPC9kaXY+CgogICAgPGRpdiBjbGFzcz0ic3Bpbm5lci1sYXllciBsYXllci0zIj4KICAgICAgPGRpdiBjbGFzcz0iY2lyY2xlLWNsaXBwZXIgbGVmdCI+CiAgICAgICAgPGRpdiBjbGFzcz0iY2lyY2xlIj48L2Rpdj4KICAgICAgPC9kaXY+CiAgICAgIDxkaXYgY2xhc3M9ImNpcmNsZS1jbGlwcGVyIHJpZ2h0Ij4KICAgICAgICA8ZGl2IGNsYXNzPSJjaXJjbGUiPjwvZGl2PgogICAgICA8L2Rpdj4KICAgIDwvZGl2PgoKICAgIDxkaXYgY2xhc3M9InNwaW5uZXItbGF5ZXIgbGF5ZXItNCI+CiAgICAgIDxkaXYgY2xhc3M9ImNpcmNsZS1jbGlwcGVyIGxlZnQiPgogICAgICAgIDxkaXYgY2xhc3M9ImNpcmNsZSI+PC9kaXY+CiAgICAgIDwvZGl2PgogICAgICA8ZGl2IGNsYXNzPSJjaXJjbGUtY2xpcHBlciByaWdodCI+CiAgICAgICAgPGRpdiBjbGFzcz0iY2lyY2xlIj48L2Rpdj4KICAgICAgPC9kaXY+CiAgICA8L2Rpdj4KICA8L2Rpdj4KYDtzcy5zZXRBdHRyaWJ1dGUoInN0cmlwLXdoaXRlc3BhY2UiLCIiKSxOcih7X3RlbXBsYXRlOnNzLGlzOiJwYXBlci1zcGlubmVyIixiZWhhdmlvcnM6W29zXX0pOwovKioKICAgIEBsaWNlbnNlCiAgICBDb3B5cmlnaHQgKGMpIDIwMTUgVGhlIFBvbHltZXIgUHJvamVjdCBBdXRob3JzLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICAgVGhpcyBjb2RlIG1heSBvbmx5IGJlIHVzZWQgdW5kZXIgdGhlIEJTRCBzdHlsZSBsaWNlbnNlIGZvdW5kIGF0IGh0dHA6Ly9wb2x5bWVyLmdpdGh1Yi5pby9MSUNFTlNFLnR4dAogICAgVGhlIGNvbXBsZXRlIHNldCBvZiBhdXRob3JzIG1heSBiZSBmb3VuZCBhdCBodHRwOi8vcG9seW1lci5naXRodWIuaW8vQVVUSE9SUy50eHQKICAgIFRoZSBjb21wbGV0ZSBzZXQgb2YgY29udHJpYnV0b3JzIG1heSBiZSBmb3VuZCBhdCBodHRwOi8vcG9seW1lci5naXRodWIuaW8vQ09OVFJJQlVUT1JTLnR4dAogICAgQ29kZSBkaXN0cmlidXRlZCBieSBHb29nbGUgYXMgcGFydCBvZiB0aGUgcG9seW1lciBwcm9qZWN0IGlzIGFsc28KICAgIHN1YmplY3QgdG8gYW4gYWRkaXRpb25hbCBJUCByaWdodHMgZ3JhbnQgZm91bmQgYXQgaHR0cDovL3BvbHltZXIuZ2l0aHViLmlvL1BBVEVOVFMudHh0CiAgICAqLwpjb25zdCBscz1fZWA8aXJvbi1pY29uc2V0LXN2ZyBuYW1lPSJwYXBlci10YWJzIiBzaXplPSIyNCI+Cjxzdmc+PGRlZnM+CjxnIGlkPSJjaGV2cm9uLWxlZnQiPjxwYXRoIGQ9Ik0xNS40MSA3LjQxTDE0IDZsLTYgNiA2IDYgMS40MS0xLjQxTDEwLjgzIDEyeiI+PC9wYXRoPjwvZz4KPGcgaWQ9ImNoZXZyb24tcmlnaHQiPjxwYXRoIGQ9Ik0xMCA2TDguNTkgNy40MSAxMy4xNyAxMmwtNC41OCA0LjU5TDEwIDE4bDYtNnoiPjwvcGF0aD48L2c+CjwvZGVmcz48L3N2Zz4KPC9pcm9uLWljb25zZXQtc3ZnPmA7ZG9jdW1lbnQuaGVhZC5hcHBlbmRDaGlsZChscy5jb250ZW50KSwKLyoqCiAgICBAbGljZW5zZQogICAgQ29weXJpZ2h0IChjKSAyMDE1IFRoZSBQb2x5bWVyIFByb2plY3QgQXV0aG9ycy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAgIFRoaXMgY29kZSBtYXkgb25seSBiZSB1c2VkIHVuZGVyIHRoZSBCU0Qgc3R5bGUgbGljZW5zZSBmb3VuZCBhdCBodHRwOi8vcG9seW1lci5naXRodWIuaW8vTElDRU5TRS50eHQKICAgIFRoZSBjb21wbGV0ZSBzZXQgb2YgYXV0aG9ycyBtYXkgYmUgZm91bmQgYXQgaHR0cDovL3BvbHltZXIuZ2l0aHViLmlvL0FVVEhPUlMudHh0CiAgICBUaGUgY29tcGxldGUgc2V0IG9mIGNvbnRyaWJ1dG9ycyBtYXkgYmUgZm91bmQgYXQgaHR0cDovL3BvbHltZXIuZ2l0aHViLmlvL0NPTlRSSUJVVE9SUy50eHQKICAgIENvZGUgZGlzdHJpYnV0ZWQgYnkgR29vZ2xlIGFzIHBhcnQgb2YgdGhlIHBvbHltZXIgcHJvamVjdCBpcyBhbHNvCiAgICBzdWJqZWN0IHRvIGFuIGFkZGl0aW9uYWwgSVAgcmlnaHRzIGdyYW50IGZvdW5kIGF0IGh0dHA6Ly9wb2x5bWVyLmdpdGh1Yi5pby9QQVRFTlRTLnR4dAogICAgKi8KTnIoe190ZW1wbGF0ZTpfZWAKICAgIDxzdHlsZT4KICAgICAgOmhvc3QgewogICAgICAgIEBhcHBseSAtLWxheW91dC1pbmxpbmU7CiAgICAgICAgQGFwcGx5IC0tbGF5b3V0LWNlbnRlcjsKICAgICAgICBAYXBwbHkgLS1sYXlvdXQtY2VudGVyLWp1c3RpZmllZDsKICAgICAgICBAYXBwbHkgLS1sYXlvdXQtZmxleC1hdXRvOwoKICAgICAgICBwb3NpdGlvbjogcmVsYXRpdmU7CiAgICAgICAgcGFkZGluZzogMCAxMnB4OwogICAgICAgIG92ZXJmbG93OiBoaWRkZW47CiAgICAgICAgY3Vyc29yOiBwb2ludGVyOwogICAgICAgIHZlcnRpY2FsLWFsaWduOiBtaWRkbGU7CgogICAgICAgIEBhcHBseSAtLXBhcGVyLWZvbnQtY29tbW9uLWJhc2U7CiAgICAgICAgQGFwcGx5IC0tcGFwZXItdGFiOwogICAgICB9CgogICAgICA6aG9zdCg6Zm9jdXMpIHsKICAgICAgICBvdXRsaW5lOiBub25lOwogICAgICB9CgogICAgICA6aG9zdChbbGlua10pIHsKICAgICAgICBwYWRkaW5nOiAwOwogICAgICB9CgogICAgICAudGFiLWNvbnRlbnQgewogICAgICAgIGhlaWdodDogMTAwJTsKICAgICAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZVooMCk7CiAgICAgICAgICAtd2Via2l0LXRyYW5zZm9ybTogdHJhbnNsYXRlWigwKTsKICAgICAgICB0cmFuc2l0aW9uOiBvcGFjaXR5IDAuMXMgY3ViaWMtYmV6aWVyKDAuNCwgMC4wLCAxLCAxKTsKICAgICAgICBAYXBwbHkgLS1sYXlvdXQtaG9yaXpvbnRhbDsKICAgICAgICBAYXBwbHkgLS1sYXlvdXQtY2VudGVyLWNlbnRlcjsKICAgICAgICBAYXBwbHkgLS1sYXlvdXQtZmxleC1hdXRvOwogICAgICAgIEBhcHBseSAtLXBhcGVyLXRhYi1jb250ZW50OwogICAgICB9CgogICAgICA6aG9zdCg6bm90KC5pcm9uLXNlbGVjdGVkKSkgPiAudGFiLWNvbnRlbnQgewogICAgICAgIG9wYWNpdHk6IDAuODsKCiAgICAgICAgQGFwcGx5IC0tcGFwZXItdGFiLWNvbnRlbnQtdW5zZWxlY3RlZDsKICAgICAgfQoKICAgICAgOmhvc3QoOmZvY3VzKSAudGFiLWNvbnRlbnQgewogICAgICAgIG9wYWNpdHk6IDE7CiAgICAgICAgZm9udC13ZWlnaHQ6IDcwMDsKCiAgICAgICAgQGFwcGx5IC0tcGFwZXItdGFiLWNvbnRlbnQtZm9jdXNlZDsKICAgICAgfQoKICAgICAgcGFwZXItcmlwcGxlIHsKICAgICAgICBjb2xvcjogdmFyKC0tcGFwZXItdGFiLWluaywgdmFyKC0tcGFwZXIteWVsbG93LWExMDApKTsKICAgICAgfQoKICAgICAgLnRhYi1jb250ZW50ID4gOjpzbG90dGVkKGEpIHsKICAgICAgICBAYXBwbHkgLS1sYXlvdXQtZmxleC1hdXRvOwoKICAgICAgICBoZWlnaHQ6IDEwMCU7CiAgICAgIH0KICAgIDwvc3R5bGU+CgogICAgPGRpdiBjbGFzcz0idGFiLWNvbnRlbnQiPgogICAgICA8c2xvdD48L3Nsb3Q+CiAgICA8L2Rpdj4KYCxpczoicGFwZXItdGFiIixiZWhhdmlvcnM6W1dvLFlvLFpvXSxwcm9wZXJ0aWVzOntsaW5rOnt0eXBlOkJvb2xlYW4sdmFsdWU6ITEscmVmbGVjdFRvQXR0cmlidXRlOiEwfX0saG9zdEF0dHJpYnV0ZXM6e3JvbGU6InRhYiJ9LGxpc3RlbmVyczp7ZG93bjoiX3VwZGF0ZU5vaW5rIix0YXA6Il9vblRhcCJ9LGF0dGFjaGVkOmZ1bmN0aW9uKCl7dGhpcy5fdXBkYXRlTm9pbmsoKX0sZ2V0IF9wYXJlbnROb2luaygpe3ZhciB0PXFpKHRoaXMpLnBhcmVudE5vZGU7cmV0dXJuISF0JiYhIXQubm9pbmt9LF91cGRhdGVOb2luazpmdW5jdGlvbigpe3RoaXMubm9pbms9ISF0aGlzLm5vaW5rfHwhIXRoaXMuX3BhcmVudE5vaW5rfSxfb25UYXA6ZnVuY3Rpb24odCl7aWYodGhpcy5saW5rKXt2YXIgZT10aGlzLnF1ZXJ5RWZmZWN0aXZlQ2hpbGRyZW4oImEiKTtpZighZSlyZXR1cm47aWYodC50YXJnZXQ9PT1lKXJldHVybjtlLmNsaWNrKCl9fX0pLAovKioKICAgIEBsaWNlbnNlCiAgICBDb3B5cmlnaHQgKGMpIDIwMTUgVGhlIFBvbHltZXIgUHJvamVjdCBBdXRob3JzLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICAgVGhpcyBjb2RlIG1heSBvbmx5IGJlIHVzZWQgdW5kZXIgdGhlIEJTRCBzdHlsZSBsaWNlbnNlIGZvdW5kIGF0IGh0dHA6Ly9wb2x5bWVyLmdpdGh1Yi5pby9MSUNFTlNFLnR4dAogICAgVGhlIGNvbXBsZXRlIHNldCBvZiBhdXRob3JzIG1heSBiZSBmb3VuZCBhdCBodHRwOi8vcG9seW1lci5naXRodWIuaW8vQVVUSE9SUy50eHQKICAgIFRoZSBjb21wbGV0ZSBzZXQgb2YgY29udHJpYnV0b3JzIG1heSBiZSBmb3VuZCBhdCBodHRwOi8vcG9seW1lci5naXRodWIuaW8vQ09OVFJJQlVUT1JTLnR4dAogICAgQ29kZSBkaXN0cmlidXRlZCBieSBHb29nbGUgYXMgcGFydCBvZiB0aGUgcG9seW1lciBwcm9qZWN0IGlzIGFsc28KICAgIHN1YmplY3QgdG8gYW4gYWRkaXRpb25hbCBJUCByaWdodHMgZ3JhbnQgZm91bmQgYXQgaHR0cDovL3BvbHltZXIuZ2l0aHViLmlvL1BBVEVOVFMudHh0CiAgICAqLwpOcih7X3RlbXBsYXRlOl9lYAogICAgPHN0eWxlPgogICAgICA6aG9zdCB7CiAgICAgICAgQGFwcGx5IC0tbGF5b3V0OwogICAgICAgIEBhcHBseSAtLWxheW91dC1jZW50ZXI7CgogICAgICAgIGhlaWdodDogNDhweDsKICAgICAgICBmb250LXNpemU6IDE0cHg7CiAgICAgICAgZm9udC13ZWlnaHQ6IDUwMDsKICAgICAgICBvdmVyZmxvdzogaGlkZGVuOwogICAgICAgIC1tb3otdXNlci1zZWxlY3Q6IG5vbmU7CiAgICAgICAgLW1zLXVzZXItc2VsZWN0OiBub25lOwogICAgICAgIC13ZWJraXQtdXNlci1zZWxlY3Q6IG5vbmU7CiAgICAgICAgdXNlci1zZWxlY3Q6IG5vbmU7CgogICAgICAgIC8qIE5PVEU6IEJvdGggdmFsdWVzIGFyZSBuZWVkZWQsIHNpbmNlIHNvbWUgcGhvbmVzIHJlcXVpcmUgdGhlIHZhbHVlIHRvIGJlIFxgdHJhbnNwYXJlbnRcYC4gKi8KICAgICAgICAtd2Via2l0LXRhcC1oaWdobGlnaHQtY29sb3I6IHJnYmEoMCwgMCwgMCwgMCk7CiAgICAgICAgLXdlYmtpdC10YXAtaGlnaGxpZ2h0LWNvbG9yOiB0cmFuc3BhcmVudDsKCiAgICAgICAgQGFwcGx5IC0tcGFwZXItdGFiczsKICAgICAgfQoKICAgICAgOmhvc3QoOmRpcihydGwpKSB7CiAgICAgICAgQGFwcGx5IC0tbGF5b3V0LWhvcml6b250YWwtcmV2ZXJzZTsKICAgICAgfQoKICAgICAgI3RhYnNDb250YWluZXIgewogICAgICAgIHBvc2l0aW9uOiByZWxhdGl2ZTsKICAgICAgICBoZWlnaHQ6IDEwMCU7CiAgICAgICAgd2hpdGUtc3BhY2U6IG5vd3JhcDsKICAgICAgICBvdmVyZmxvdzogaGlkZGVuOwogICAgICAgIEBhcHBseSAtLWxheW91dC1mbGV4LWF1dG87CiAgICAgICAgQGFwcGx5IC0tcGFwZXItdGFicy1jb250YWluZXI7CiAgICAgIH0KCiAgICAgICN0YWJzQ29udGVudCB7CiAgICAgICAgaGVpZ2h0OiAxMDAlOwogICAgICAgIC1tb3otZmxleC1iYXNpczogYXV0bzsKICAgICAgICAtbXMtZmxleC1iYXNpczogYXV0bzsKICAgICAgICBmbGV4LWJhc2lzOiBhdXRvOwogICAgICAgIEBhcHBseSAtLXBhcGVyLXRhYnMtY29udGVudDsKICAgICAgfQoKICAgICAgI3RhYnNDb250ZW50LnNjcm9sbGFibGUgewogICAgICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTsKICAgICAgICB3aGl0ZS1zcGFjZTogbm93cmFwOwogICAgICB9CgogICAgICAjdGFic0NvbnRlbnQ6bm90KC5zY3JvbGxhYmxlKSwKICAgICAgI3RhYnNDb250ZW50LnNjcm9sbGFibGUuZml0LWNvbnRhaW5lciB7CiAgICAgICAgQGFwcGx5IC0tbGF5b3V0LWhvcml6b250YWw7CiAgICAgIH0KCiAgICAgICN0YWJzQ29udGVudC5zY3JvbGxhYmxlLmZpdC1jb250YWluZXIgewogICAgICAgIG1pbi13aWR0aDogMTAwJTsKICAgICAgfQoKICAgICAgI3RhYnNDb250ZW50LnNjcm9sbGFibGUuZml0LWNvbnRhaW5lciA+IDo6c2xvdHRlZCgqKSB7CiAgICAgICAgLyogSUUgLSBwcmV2ZW50IHRhYnMgZnJvbSBjb21wcmVzc2luZyB3aGVuIHRoZXkgc2hvdWxkIHNjcm9sbC4gKi8KICAgICAgICAtbXMtZmxleDogMSAwIGF1dG87CiAgICAgICAgLXdlYmtpdC1mbGV4OiAxIDAgYXV0bzsKICAgICAgICBmbGV4OiAxIDAgYXV0bzsKICAgICAgfQoKICAgICAgLmhpZGRlbiB7CiAgICAgICAgZGlzcGxheTogbm9uZTsKICAgICAgfQoKICAgICAgLm5vdC12aXNpYmxlIHsKICAgICAgICBvcGFjaXR5OiAwOwogICAgICAgIGN1cnNvcjogZGVmYXVsdDsKICAgICAgfQoKICAgICAgcGFwZXItaWNvbi1idXR0b24gewogICAgICAgIHdpZHRoOiA0OHB4OwogICAgICAgIGhlaWdodDogNDhweDsKICAgICAgICBwYWRkaW5nOiAxMnB4OwogICAgICAgIG1hcmdpbjogMCA0cHg7CiAgICAgIH0KCiAgICAgICNzZWxlY3Rpb25CYXIgewogICAgICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTsKICAgICAgICBoZWlnaHQ6IDA7CiAgICAgICAgYm90dG9tOiAwOwogICAgICAgIGxlZnQ6IDA7CiAgICAgICAgcmlnaHQ6IDA7CiAgICAgICAgYm9yZGVyLWJvdHRvbTogMnB4IHNvbGlkIHZhcigtLXBhcGVyLXRhYnMtc2VsZWN0aW9uLWJhci1jb2xvciwgdmFyKC0tcGFwZXIteWVsbG93LWExMDApKTsKICAgICAgICAgIC13ZWJraXQtdHJhbnNmb3JtOiBzY2FsZSgwKTsKICAgICAgICB0cmFuc2Zvcm06IHNjYWxlKDApOwogICAgICAgICAgLXdlYmtpdC10cmFuc2Zvcm0tb3JpZ2luOiBsZWZ0IGNlbnRlcjsKICAgICAgICB0cmFuc2Zvcm0tb3JpZ2luOiBsZWZ0IGNlbnRlcjsKICAgICAgICAgIHRyYW5zaXRpb246IC13ZWJraXQtdHJhbnNmb3JtOwogICAgICAgIHRyYW5zaXRpb246IHRyYW5zZm9ybTsKCiAgICAgICAgQGFwcGx5IC0tcGFwZXItdGFicy1zZWxlY3Rpb24tYmFyOwogICAgICB9CgogICAgICAjc2VsZWN0aW9uQmFyLmFsaWduLWJvdHRvbSB7CiAgICAgICAgdG9wOiAwOwogICAgICAgIGJvdHRvbTogYXV0bzsKICAgICAgfQoKICAgICAgI3NlbGVjdGlvbkJhci5leHBhbmQgewogICAgICAgIHRyYW5zaXRpb24tZHVyYXRpb246IDAuMTVzOwogICAgICAgIHRyYW5zaXRpb24tdGltaW5nLWZ1bmN0aW9uOiBjdWJpYy1iZXppZXIoMC40LCAwLjAsIDEsIDEpOwogICAgICB9CgogICAgICAjc2VsZWN0aW9uQmFyLmNvbnRyYWN0IHsKICAgICAgICB0cmFuc2l0aW9uLWR1cmF0aW9uOiAwLjE4czsKICAgICAgICB0cmFuc2l0aW9uLXRpbWluZy1mdW5jdGlvbjogY3ViaWMtYmV6aWVyKDAuMCwgMC4wLCAwLjIsIDEpOwogICAgICB9CgogICAgICAjdGFic0NvbnRlbnQgPiA6OnNsb3R0ZWQoOm5vdCgjc2VsZWN0aW9uQmFyKSkgewogICAgICAgIGhlaWdodDogMTAwJTsKICAgICAgfQogICAgPC9zdHlsZT4KCiAgICA8cGFwZXItaWNvbi1idXR0b24gaWNvbj0icGFwZXItdGFiczpjaGV2cm9uLWxlZnQiIGNsYXNzJD0iW1tfY29tcHV0ZVNjcm9sbEJ1dHRvbkNsYXNzKF9sZWZ0SGlkZGVuLCBzY3JvbGxhYmxlLCBoaWRlU2Nyb2xsQnV0dG9ucyldXSIgb24tdXA9Il9vblNjcm9sbEJ1dHRvblVwIiBvbi1kb3duPSJfb25MZWZ0U2Nyb2xsQnV0dG9uRG93biIgdGFiaW5kZXg9Ii0xIj48L3BhcGVyLWljb24tYnV0dG9uPgoKICAgIDxkaXYgaWQ9InRhYnNDb250YWluZXIiIG9uLXRyYWNrPSJfc2Nyb2xsIiBvbi1kb3duPSJfZG93biI+CiAgICAgIDxkaXYgaWQ9InRhYnNDb250ZW50IiBjbGFzcyQ9IltbX2NvbXB1dGVUYWJzQ29udGVudENsYXNzKHNjcm9sbGFibGUsIGZpdENvbnRhaW5lcildXSI+CiAgICAgICAgPGRpdiBpZD0ic2VsZWN0aW9uQmFyIiBjbGFzcyQ9IltbX2NvbXB1dGVTZWxlY3Rpb25CYXJDbGFzcyhub0JhciwgYWxpZ25Cb3R0b20pXV0iIG9uLXRyYW5zaXRpb25lbmQ9Il9vbkJhclRyYW5zaXRpb25FbmQiPjwvZGl2PgogICAgICAgIDxzbG90Pjwvc2xvdD4KICAgICAgPC9kaXY+CiAgICA8L2Rpdj4KCiAgICA8cGFwZXItaWNvbi1idXR0b24gaWNvbj0icGFwZXItdGFiczpjaGV2cm9uLXJpZ2h0IiBjbGFzcyQ9IltbX2NvbXB1dGVTY3JvbGxCdXR0b25DbGFzcyhfcmlnaHRIaWRkZW4sIHNjcm9sbGFibGUsIGhpZGVTY3JvbGxCdXR0b25zKV1dIiBvbi11cD0iX29uU2Nyb2xsQnV0dG9uVXAiIG9uLWRvd249Il9vblJpZ2h0U2Nyb2xsQnV0dG9uRG93biIgdGFiaW5kZXg9Ii0xIj48L3BhcGVyLWljb24tYnV0dG9uPgpgLGlzOiJwYXBlci10YWJzIixiZWhhdmlvcnM6W21vLG5zXSxwcm9wZXJ0aWVzOntub2luazp7dHlwZTpCb29sZWFuLHZhbHVlOiExLG9ic2VydmVyOiJfbm9pbmtDaGFuZ2VkIn0sbm9CYXI6e3R5cGU6Qm9vbGVhbix2YWx1ZTohMX0sbm9TbGlkZTp7dHlwZTpCb29sZWFuLHZhbHVlOiExfSxzY3JvbGxhYmxlOnt0eXBlOkJvb2xlYW4sdmFsdWU6ITF9LGZpdENvbnRhaW5lcjp7dHlwZTpCb29sZWFuLHZhbHVlOiExfSxkaXNhYmxlRHJhZzp7dHlwZTpCb29sZWFuLHZhbHVlOiExfSxoaWRlU2Nyb2xsQnV0dG9uczp7dHlwZTpCb29sZWFuLHZhbHVlOiExfSxhbGlnbkJvdHRvbTp7dHlwZTpCb29sZWFuLHZhbHVlOiExfSxzZWxlY3RhYmxlOnt0eXBlOlN0cmluZyx2YWx1ZToicGFwZXItdGFiIn0sYXV0b3NlbGVjdDp7dHlwZTpCb29sZWFuLHZhbHVlOiExfSxhdXRvc2VsZWN0RGVsYXk6e3R5cGU6TnVtYmVyLHZhbHVlOjB9LF9zdGVwOnt0eXBlOk51bWJlcix2YWx1ZToxMH0sX2hvbGREZWxheTp7dHlwZTpOdW1iZXIsdmFsdWU6MX0sX2xlZnRIaWRkZW46e3R5cGU6Qm9vbGVhbix2YWx1ZTohMX0sX3JpZ2h0SGlkZGVuOnt0eXBlOkJvb2xlYW4sdmFsdWU6ITF9LF9wcmV2aW91c1RhYjp7dHlwZTpPYmplY3R9fSxob3N0QXR0cmlidXRlczp7cm9sZToidGFibGlzdCJ9LGxpc3RlbmVyczp7Imlyb24tcmVzaXplIjoiX29uVGFiU2l6aW5nQ2hhbmdlZCIsImlyb24taXRlbXMtY2hhbmdlZCI6Il9vblRhYlNpemluZ0NoYW5nZWQiLCJpcm9uLXNlbGVjdCI6Il9vbklyb25TZWxlY3QiLCJpcm9uLWRlc2VsZWN0IjoiX29uSXJvbkRlc2VsZWN0In0sa2V5QmluZGluZ3M6eyJsZWZ0OmtleXVwIHJpZ2h0OmtleXVwIjoiX29uQXJyb3dLZXl1cCJ9LGNyZWF0ZWQ6ZnVuY3Rpb24oKXt0aGlzLl9ob2xkSm9iPW51bGwsdGhpcy5fcGVuZGluZ0FjdGl2YXRpb25JdGVtPXZvaWQgMCx0aGlzLl9wZW5kaW5nQWN0aXZhdGlvblRpbWVvdXQ9dm9pZCAwLHRoaXMuX2JpbmREZWxheWVkQWN0aXZhdGlvbkhhbmRsZXI9dGhpcy5fZGVsYXllZEFjdGl2YXRpb25IYW5kbGVyLmJpbmQodGhpcyksdGhpcy5hZGRFdmVudExpc3RlbmVyKCJibHVyIix0aGlzLl9vbkJsdXJDYXB0dXJlLmJpbmQodGhpcyksITApfSxyZWFkeTpmdW5jdGlvbigpe3RoaXMuc2V0U2Nyb2xsRGlyZWN0aW9uKCJ5Iix0aGlzLiQudGFic0NvbnRhaW5lcil9LGRldGFjaGVkOmZ1bmN0aW9uKCl7dGhpcy5fY2FuY2VsUGVuZGluZ0FjdGl2YXRpb24oKX0sX25vaW5rQ2hhbmdlZDpmdW5jdGlvbih0KXtxaSh0aGlzKS5xdWVyeVNlbGVjdG9yQWxsKCJwYXBlci10YWIiKS5mb3JFYWNoKHQ/dGhpcy5fc2V0Tm9pbmtBdHRyaWJ1dGU6dGhpcy5fcmVtb3ZlTm9pbmtBdHRyaWJ1dGUpfSxfc2V0Tm9pbmtBdHRyaWJ1dGU6ZnVuY3Rpb24odCl7dC5zZXRBdHRyaWJ1dGUoIm5vaW5rIiwiIil9LF9yZW1vdmVOb2lua0F0dHJpYnV0ZTpmdW5jdGlvbih0KXt0LnJlbW92ZUF0dHJpYnV0ZSgibm9pbmsiKX0sX2NvbXB1dGVTY3JvbGxCdXR0b25DbGFzczpmdW5jdGlvbih0LGUsbil7cmV0dXJuIWV8fG4/ImhpZGRlbiI6dD8ibm90LXZpc2libGUiOiIifSxfY29tcHV0ZVRhYnNDb250ZW50Q2xhc3M6ZnVuY3Rpb24odCxlKXtyZXR1cm4gdD8ic2Nyb2xsYWJsZSIrKGU/IiBmaXQtY29udGFpbmVyIjoiIik6IiBmaXQtY29udGFpbmVyIn0sX2NvbXB1dGVTZWxlY3Rpb25CYXJDbGFzczpmdW5jdGlvbih0LGUpe3JldHVybiB0PyJoaWRkZW4iOmU/ImFsaWduLWJvdHRvbSI6IiJ9LF9vblRhYlNpemluZ0NoYW5nZWQ6ZnVuY3Rpb24oKXt0aGlzLmRlYm91bmNlKCJfb25UYWJTaXppbmdDaGFuZ2VkIiwoZnVuY3Rpb24oKXt0aGlzLl9zY3JvbGwoKSx0aGlzLl90YWJDaGFuZ2VkKHRoaXMuc2VsZWN0ZWRJdGVtKX0pLDEwKX0sX29uSXJvblNlbGVjdDpmdW5jdGlvbih0KXt0aGlzLl90YWJDaGFuZ2VkKHQuZGV0YWlsLml0ZW0sdGhpcy5fcHJldmlvdXNUYWIpLHRoaXMuX3ByZXZpb3VzVGFiPXQuZGV0YWlsLml0ZW0sdGhpcy5jYW5jZWxEZWJvdW5jZXIoInRhYi1jaGFuZ2VkIil9LF9vbklyb25EZXNlbGVjdDpmdW5jdGlvbih0KXt0aGlzLmRlYm91bmNlKCJ0YWItY2hhbmdlZCIsKGZ1bmN0aW9uKCl7dGhpcy5fdGFiQ2hhbmdlZChudWxsLHRoaXMuX3ByZXZpb3VzVGFiKSx0aGlzLl9wcmV2aW91c1RhYj1udWxsfSksMSl9LF9hY3RpdmF0ZUhhbmRsZXI6ZnVuY3Rpb24oKXt0aGlzLl9jYW5jZWxQZW5kaW5nQWN0aXZhdGlvbigpLEthLl9hY3RpdmF0ZUhhbmRsZXIuYXBwbHkodGhpcyxhcmd1bWVudHMpfSxfc2NoZWR1bGVBY3RpdmF0aW9uOmZ1bmN0aW9uKHQsZSl7dGhpcy5fcGVuZGluZ0FjdGl2YXRpb25JdGVtPXQsdGhpcy5fcGVuZGluZ0FjdGl2YXRpb25UaW1lb3V0PXRoaXMuYXN5bmModGhpcy5fYmluZERlbGF5ZWRBY3RpdmF0aW9uSGFuZGxlcixlKX0sX2RlbGF5ZWRBY3RpdmF0aW9uSGFuZGxlcjpmdW5jdGlvbigpe3ZhciB0PXRoaXMuX3BlbmRpbmdBY3RpdmF0aW9uSXRlbTt0aGlzLl9wZW5kaW5nQWN0aXZhdGlvbkl0ZW09dm9pZCAwLHRoaXMuX3BlbmRpbmdBY3RpdmF0aW9uVGltZW91dD12b2lkIDAsdC5maXJlKHRoaXMuYWN0aXZhdGVFdmVudCxudWxsLHtidWJibGVzOiEwLGNhbmNlbGFibGU6ITB9KX0sX2NhbmNlbFBlbmRpbmdBY3RpdmF0aW9uOmZ1bmN0aW9uKCl7dm9pZCAwIT09dGhpcy5fcGVuZGluZ0FjdGl2YXRpb25UaW1lb3V0JiYodGhpcy5jYW5jZWxBc3luYyh0aGlzLl9wZW5kaW5nQWN0aXZhdGlvblRpbWVvdXQpLHRoaXMuX3BlbmRpbmdBY3RpdmF0aW9uSXRlbT12b2lkIDAsdGhpcy5fcGVuZGluZ0FjdGl2YXRpb25UaW1lb3V0PXZvaWQgMCl9LF9vbkFycm93S2V5dXA6ZnVuY3Rpb24odCl7dGhpcy5hdXRvc2VsZWN0JiZ0aGlzLl9zY2hlZHVsZUFjdGl2YXRpb24odGhpcy5mb2N1c2VkSXRlbSx0aGlzLmF1dG9zZWxlY3REZWxheSl9LF9vbkJsdXJDYXB0dXJlOmZ1bmN0aW9uKHQpe3QudGFyZ2V0PT09dGhpcy5fcGVuZGluZ0FjdGl2YXRpb25JdGVtJiZ0aGlzLl9jYW5jZWxQZW5kaW5nQWN0aXZhdGlvbigpfSxnZXQgX3RhYkNvbnRhaW5lclNjcm9sbFNpemUoKXtyZXR1cm4gTWF0aC5tYXgoMCx0aGlzLiQudGFic0NvbnRhaW5lci5zY3JvbGxXaWR0aC10aGlzLiQudGFic0NvbnRhaW5lci5vZmZzZXRXaWR0aCl9LF9zY3JvbGw6ZnVuY3Rpb24odCxlKXt0aGlzLnNjcm9sbGFibGUmJnRoaXMuX2FmZmVjdFNjcm9sbChlJiYtZS5kZHh8fDApfSxfZG93bjpmdW5jdGlvbih0KXt0aGlzLmFzeW5jKChmdW5jdGlvbigpe3RoaXMuX2RlZmF1bHRGb2N1c0FzeW5jJiYodGhpcy5jYW5jZWxBc3luYyh0aGlzLl9kZWZhdWx0Rm9jdXNBc3luYyksdGhpcy5fZGVmYXVsdEZvY3VzQXN5bmM9bnVsbCl9KSwxKX0sX2FmZmVjdFNjcm9sbDpmdW5jdGlvbih0KXt0aGlzLiQudGFic0NvbnRhaW5lci5zY3JvbGxMZWZ0Kz10O3ZhciBlPXRoaXMuJC50YWJzQ29udGFpbmVyLnNjcm9sbExlZnQ7dGhpcy5fbGVmdEhpZGRlbj0wPT09ZSx0aGlzLl9yaWdodEhpZGRlbj1lPT09dGhpcy5fdGFiQ29udGFpbmVyU2Nyb2xsU2l6ZX0sX29uTGVmdFNjcm9sbEJ1dHRvbkRvd246ZnVuY3Rpb24oKXt0aGlzLl9zY3JvbGxUb0xlZnQoKSx0aGlzLl9ob2xkSm9iPXNldEludGVydmFsKHRoaXMuX3Njcm9sbFRvTGVmdC5iaW5kKHRoaXMpLHRoaXMuX2hvbGREZWxheSl9LF9vblJpZ2h0U2Nyb2xsQnV0dG9uRG93bjpmdW5jdGlvbigpe3RoaXMuX3Njcm9sbFRvUmlnaHQoKSx0aGlzLl9ob2xkSm9iPXNldEludGVydmFsKHRoaXMuX3Njcm9sbFRvUmlnaHQuYmluZCh0aGlzKSx0aGlzLl9ob2xkRGVsYXkpfSxfb25TY3JvbGxCdXR0b25VcDpmdW5jdGlvbigpe2NsZWFySW50ZXJ2YWwodGhpcy5faG9sZEpvYiksdGhpcy5faG9sZEpvYj1udWxsfSxfc2Nyb2xsVG9MZWZ0OmZ1bmN0aW9uKCl7dGhpcy5fYWZmZWN0U2Nyb2xsKC10aGlzLl9zdGVwKX0sX3Njcm9sbFRvUmlnaHQ6ZnVuY3Rpb24oKXt0aGlzLl9hZmZlY3RTY3JvbGwodGhpcy5fc3RlcCl9LF90YWJDaGFuZ2VkOmZ1bmN0aW9uKHQsZSl7aWYoIXQpcmV0dXJuIHRoaXMuJC5zZWxlY3Rpb25CYXIuY2xhc3NMaXN0LnJlbW92ZSgiZXhwYW5kIiksdGhpcy4kLnNlbGVjdGlvbkJhci5jbGFzc0xpc3QucmVtb3ZlKCJjb250cmFjdCIpLHZvaWQgdGhpcy5fcG9zaXRpb25CYXIoMCwwKTt2YXIgbj10aGlzLiQudGFic0NvbnRlbnQuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCksaT1uLndpZHRoLHI9dC5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKSxvPXIubGVmdC1uLmxlZnQ7aWYodGhpcy5fcG9zPXt3aWR0aDp0aGlzLl9jYWxjUGVyY2VudChyLndpZHRoLGkpLGxlZnQ6dGhpcy5fY2FsY1BlcmNlbnQobyxpKX0sdGhpcy5ub1NsaWRlfHxudWxsPT1lKXJldHVybiB0aGlzLiQuc2VsZWN0aW9uQmFyLmNsYXNzTGlzdC5yZW1vdmUoImV4cGFuZCIpLHRoaXMuJC5zZWxlY3Rpb25CYXIuY2xhc3NMaXN0LnJlbW92ZSgiY29udHJhY3QiKSx2b2lkIHRoaXMuX3Bvc2l0aW9uQmFyKHRoaXMuX3Bvcy53aWR0aCx0aGlzLl9wb3MubGVmdCk7dmFyIGE9ZS5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKSxzPXRoaXMuaXRlbXMuaW5kZXhPZihlKSxsPXRoaXMuaXRlbXMuaW5kZXhPZih0KTt0aGlzLiQuc2VsZWN0aW9uQmFyLmNsYXNzTGlzdC5hZGQoImV4cGFuZCIpO3ZhciBjPXM8bDt0aGlzLl9pc1JUTCYmKGM9IWMpLGM/dGhpcy5fcG9zaXRpb25CYXIodGhpcy5fY2FsY1BlcmNlbnQoci5sZWZ0K3Iud2lkdGgtYS5sZWZ0LGkpLTUsdGhpcy5fbGVmdCk6dGhpcy5fcG9zaXRpb25CYXIodGhpcy5fY2FsY1BlcmNlbnQoYS5sZWZ0K2Eud2lkdGgtci5sZWZ0LGkpLTUsdGhpcy5fY2FsY1BlcmNlbnQobyxpKSs1KSx0aGlzLnNjcm9sbGFibGUmJnRoaXMuX3Njcm9sbFRvU2VsZWN0ZWRJZk5lZWRlZChyLndpZHRoLG8pfSxfc2Nyb2xsVG9TZWxlY3RlZElmTmVlZGVkOmZ1bmN0aW9uKHQsZSl7dmFyIG49ZS10aGlzLiQudGFic0NvbnRhaW5lci5zY3JvbGxMZWZ0OyhuPDB8fChuKz10LXRoaXMuJC50YWJzQ29udGFpbmVyLm9mZnNldFdpZHRoKT4wKSYmKHRoaXMuJC50YWJzQ29udGFpbmVyLnNjcm9sbExlZnQrPW4pfSxfY2FsY1BlcmNlbnQ6ZnVuY3Rpb24odCxlKXtyZXR1cm4gMTAwKnQvZX0sX3Bvc2l0aW9uQmFyOmZ1bmN0aW9uKHQsZSl7ZT1lfHwwLHRoaXMuX3dpZHRoPXQ9dHx8MCx0aGlzLl9sZWZ0PWUsdGhpcy50cmFuc2Zvcm0oInRyYW5zbGF0ZVgoIitlKyIlKSBzY2FsZVgoIit0LzEwMCsiKSIsdGhpcy4kLnNlbGVjdGlvbkJhcil9LF9vbkJhclRyYW5zaXRpb25FbmQ6ZnVuY3Rpb24odCl7dmFyIGU9dGhpcy4kLnNlbGVjdGlvbkJhci5jbGFzc0xpc3Q7ZS5jb250YWlucygiZXhwYW5kIik/KGUucmVtb3ZlKCJleHBhbmQiKSxlLmFkZCgiY29udHJhY3QiKSx0aGlzLl9wb3NpdGlvbkJhcih0aGlzLl9wb3Mud2lkdGgsdGhpcy5fcG9zLmxlZnQpKTplLmNvbnRhaW5zKCJjb250cmFjdCIpJiZlLnJlbW92ZSgiY29udHJhY3QiKX19KTsKLyoqCiAgICBAbGljZW5zZQogICAgQ29weXJpZ2h0IChjKSAyMDE1IFRoZSBQb2x5bWVyIFByb2plY3QgQXV0aG9ycy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAgIFRoaXMgY29kZSBtYXkgb25seSBiZSB1c2VkIHVuZGVyIHRoZSBCU0Qgc3R5bGUgbGljZW5zZSBmb3VuZCBhdAogICAgaHR0cDovL3BvbHltZXIuZ2l0aHViLmlvL0xJQ0VOU0UudHh0IFRoZSBjb21wbGV0ZSBzZXQgb2YgYXV0aG9ycyBtYXkgYmUgZm91bmQgYXQKICAgIGh0dHA6Ly9wb2x5bWVyLmdpdGh1Yi5pby9BVVRIT1JTLnR4dCBUaGUgY29tcGxldGUgc2V0IG9mIGNvbnRyaWJ1dG9ycyBtYXkgYmUKICAgIGZvdW5kIGF0IGh0dHA6Ly9wb2x5bWVyLmdpdGh1Yi5pby9DT05UUklCVVRPUlMudHh0IENvZGUgZGlzdHJpYnV0ZWQgYnkgR29vZ2xlIGFzCiAgICBwYXJ0IG9mIHRoZSBwb2x5bWVyIHByb2plY3QgaXMgYWxzbyBzdWJqZWN0IHRvIGFuIGFkZGl0aW9uYWwgSVAgcmlnaHRzIGdyYW50CiAgICBmb3VuZCBhdCBodHRwOi8vcG9seW1lci5naXRodWIuaW8vUEFURU5UUy50eHQKICAgICovCnZhciBjcz1udWxsO05yKHtfdGVtcGxhdGU6X2VgCiAgICA8c3R5bGU+CiAgICAgIDpob3N0IHsKICAgICAgICBkaXNwbGF5OiBibG9jazsKICAgICAgICBwb3NpdGlvbjogZml4ZWQ7CiAgICAgICAgYmFja2dyb3VuZC1jb2xvcjogdmFyKC0tcGFwZXItdG9hc3QtYmFja2dyb3VuZC1jb2xvciwgIzMyMzIzMik7CiAgICAgICAgY29sb3I6IHZhcigtLXBhcGVyLXRvYXN0LWNvbG9yLCAjZjFmMWYxKTsKICAgICAgICBtaW4taGVpZ2h0OiA0OHB4OwogICAgICAgIG1pbi13aWR0aDogMjg4cHg7CiAgICAgICAgcGFkZGluZzogMTZweCAyNHB4OwogICAgICAgIGJveC1zaXppbmc6IGJvcmRlci1ib3g7CiAgICAgICAgYm94LXNoYWRvdzogMCAycHggNXB4IDAgcmdiYSgwLCAwLCAwLCAwLjI2KTsKICAgICAgICBib3JkZXItcmFkaXVzOiAycHg7CiAgICAgICAgbWFyZ2luOiAxMnB4OwogICAgICAgIGZvbnQtc2l6ZTogMTRweDsKICAgICAgICBjdXJzb3I6IGRlZmF1bHQ7CiAgICAgICAgLXdlYmtpdC10cmFuc2l0aW9uOiAtd2Via2l0LXRyYW5zZm9ybSAwLjNzLCBvcGFjaXR5IDAuM3M7CiAgICAgICAgdHJhbnNpdGlvbjogdHJhbnNmb3JtIDAuM3MsIG9wYWNpdHkgMC4zczsKICAgICAgICBvcGFjaXR5OiAwOwogICAgICAgIC13ZWJraXQtdHJhbnNmb3JtOiB0cmFuc2xhdGVZKDEwMHB4KTsKICAgICAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZVkoMTAwcHgpOwogICAgICAgIEBhcHBseSAtLXBhcGVyLWZvbnQtY29tbW9uLWJhc2U7CiAgICAgIH0KCiAgICAgIDpob3N0KC5jYXBzdWxlKSB7CiAgICAgICAgYm9yZGVyLXJhZGl1czogMjRweDsKICAgICAgfQoKICAgICAgOmhvc3QoLmZpdC1ib3R0b20pIHsKICAgICAgICB3aWR0aDogMTAwJTsKICAgICAgICBtaW4td2lkdGg6IDA7CiAgICAgICAgYm9yZGVyLXJhZGl1czogMDsKICAgICAgICBtYXJnaW46IDA7CiAgICAgIH0KCiAgICAgIDpob3N0KC5wYXBlci10b2FzdC1vcGVuKSB7CiAgICAgICAgb3BhY2l0eTogMTsKICAgICAgICAtd2Via2l0LXRyYW5zZm9ybTogdHJhbnNsYXRlWSgwcHgpOwogICAgICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlWSgwcHgpOwogICAgICB9CiAgICA8L3N0eWxlPgoKICAgIDxzcGFuIGlkPSJsYWJlbCI+e3t0ZXh0fX08L3NwYW4+CiAgICA8c2xvdD48L3Nsb3Q+CmAsaXM6InBhcGVyLXRvYXN0IixiZWhhdmlvcnM6W0NhXSxwcm9wZXJ0aWVzOntmaXRJbnRvOnt0eXBlOk9iamVjdCx2YWx1ZTp3aW5kb3csb2JzZXJ2ZXI6Il9vbkZpdEludG9DaGFuZ2VkIn0saG9yaXpvbnRhbEFsaWduOnt0eXBlOlN0cmluZyx2YWx1ZToibGVmdCJ9LHZlcnRpY2FsQWxpZ246e3R5cGU6U3RyaW5nLHZhbHVlOiJib3R0b20ifSxkdXJhdGlvbjp7dHlwZTpOdW1iZXIsdmFsdWU6M2UzfSx0ZXh0Ont0eXBlOlN0cmluZyx2YWx1ZToiIn0sbm9DYW5jZWxPbk91dHNpZGVDbGljazp7dHlwZTpCb29sZWFuLHZhbHVlOiEwfSxub0F1dG9Gb2N1czp7dHlwZTpCb29sZWFuLHZhbHVlOiEwfX0sbGlzdGVuZXJzOnt0cmFuc2l0aW9uZW5kOiJfX29uVHJhbnNpdGlvbkVuZCJ9LGdldCB2aXNpYmxlKCl7cmV0dXJuIHBvLl93YXJuKCJgdmlzaWJsZWAgaXMgZGVwcmVjYXRlZCwgdXNlIGBvcGVuZWRgIGluc3RlYWQiKSx0aGlzLm9wZW5lZH0sZ2V0IF9jYW5BdXRvQ2xvc2UoKXtyZXR1cm4gdGhpcy5kdXJhdGlvbj4wJiZ0aGlzLmR1cmF0aW9uIT09MS8wfSxjcmVhdGVkOmZ1bmN0aW9uKCl7dGhpcy5fYXV0b0Nsb3NlPW51bGwsT2EucmVxdWVzdEF2YWlsYWJpbGl0eSgpfSxzaG93OmZ1bmN0aW9uKHQpe2Zvcih2YXIgZSBpbiJzdHJpbmciPT10eXBlb2YgdCYmKHQ9e3RleHQ6dH0pLHQpMD09PWUuaW5kZXhPZigiXyIpP3BvLl93YXJuKCdUaGUgcHJvcGVydHkgIicrZSsnIiBpcyBwcml2YXRlIGFuZCB3YXMgbm90IHNldC4nKTplIGluIHRoaXM/dGhpc1tlXT10W2VdOnBvLl93YXJuKCdUaGUgcHJvcGVydHkgIicrZSsnIiBpcyBub3QgdmFsaWQuJyk7dGhpcy5vcGVuKCl9LGhpZGU6ZnVuY3Rpb24oKXt0aGlzLmNsb3NlKCl9LF9fb25UcmFuc2l0aW9uRW5kOmZ1bmN0aW9uKHQpe3QmJnQudGFyZ2V0PT09dGhpcyYmIm9wYWNpdHkiPT09dC5wcm9wZXJ0eU5hbWUmJih0aGlzLm9wZW5lZD90aGlzLl9maW5pc2hSZW5kZXJPcGVuZWQoKTp0aGlzLl9maW5pc2hSZW5kZXJDbG9zZWQoKSl9LF9vcGVuZWRDaGFuZ2VkOmZ1bmN0aW9uKCl7bnVsbCE9PXRoaXMuX2F1dG9DbG9zZSYmKHRoaXMuY2FuY2VsQXN5bmModGhpcy5fYXV0b0Nsb3NlKSx0aGlzLl9hdXRvQ2xvc2U9bnVsbCksdGhpcy5vcGVuZWQ/KGNzJiZjcyE9PXRoaXMmJmNzLmNsb3NlKCksY3M9dGhpcyx0aGlzLmZpcmUoImlyb24tYW5ub3VuY2UiLHt0ZXh0OnRoaXMudGV4dH0pLHRoaXMuX2NhbkF1dG9DbG9zZSYmKHRoaXMuX2F1dG9DbG9zZT10aGlzLmFzeW5jKHRoaXMuY2xvc2UsdGhpcy5kdXJhdGlvbikpKTpjcz09PXRoaXMmJihjcz1udWxsKSxUYS5fb3BlbmVkQ2hhbmdlZC5hcHBseSh0aGlzLGFyZ3VtZW50cyl9LF9yZW5kZXJPcGVuZWQ6ZnVuY3Rpb24oKXt0aGlzLmNsYXNzTGlzdC5hZGQoInBhcGVyLXRvYXN0LW9wZW4iKX0sX3JlbmRlckNsb3NlZDpmdW5jdGlvbigpe3RoaXMuY2xhc3NMaXN0LnJlbW92ZSgicGFwZXItdG9hc3Qtb3BlbiIpfSxfb25GaXRJbnRvQ2hhbmdlZDpmdW5jdGlvbih0KXt0aGlzLnBvc2l0aW9uVGFyZ2V0PXR9fSk7Ci8qKgogICAgQGxpY2Vuc2UKICAgIENvcHlyaWdodCAoYykgMjAxNSBUaGUgUG9seW1lciBQcm9qZWN0IEF1dGhvcnMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgICBUaGlzIGNvZGUgbWF5IG9ubHkgYmUgdXNlZCB1bmRlciB0aGUgQlNEIHN0eWxlIGxpY2Vuc2UgZm91bmQgYXQgaHR0cDovL3BvbHltZXIuZ2l0aHViLmlvL0xJQ0VOU0UudHh0CiAgICBUaGUgY29tcGxldGUgc2V0IG9mIGF1dGhvcnMgbWF5IGJlIGZvdW5kIGF0IGh0dHA6Ly9wb2x5bWVyLmdpdGh1Yi5pby9BVVRIT1JTLnR4dAogICAgVGhlIGNvbXBsZXRlIHNldCBvZiBjb250cmlidXRvcnMgbWF5IGJlIGZvdW5kIGF0IGh0dHA6Ly9wb2x5bWVyLmdpdGh1Yi5pby9DT05UUklCVVRPUlMudHh0CiAgICBDb2RlIGRpc3RyaWJ1dGVkIGJ5IEdvb2dsZSBhcyBwYXJ0IG9mIHRoZSBwb2x5bWVyIHByb2plY3QgaXMgYWxzbwogICAgc3ViamVjdCB0byBhbiBhZGRpdGlvbmFsIElQIHJpZ2h0cyBncmFudCBmb3VuZCBhdCBodHRwOi8vcG9seW1lci5naXRodWIuaW8vUEFURU5UUy50eHQKICAgICovCmNvbnN0IHVzPV9lYAoKICAgIDxzdHlsZT4KICAgICAgOmhvc3QgewogICAgICAgIGRpc3BsYXk6IGlubGluZS1ibG9jazsKICAgICAgICBAYXBwbHkgLS1sYXlvdXQtaG9yaXpvbnRhbDsKICAgICAgICBAYXBwbHkgLS1sYXlvdXQtY2VudGVyOwogICAgICAgIEBhcHBseSAtLXBhcGVyLWZvbnQtY29tbW9uLWJhc2U7CiAgICAgIH0KCiAgICAgIDpob3N0KFtkaXNhYmxlZF0pIHsKICAgICAgICBwb2ludGVyLWV2ZW50czogbm9uZTsKICAgICAgfQoKICAgICAgOmhvc3QoOmZvY3VzKSB7CiAgICAgICAgb3V0bGluZTpub25lOwogICAgICB9CgogICAgICAudG9nZ2xlLWJhciB7CiAgICAgICAgcG9zaXRpb246IGFic29sdXRlOwogICAgICAgIGhlaWdodDogMTAwJTsKICAgICAgICB3aWR0aDogMTAwJTsKICAgICAgICBib3JkZXItcmFkaXVzOiA4cHg7CiAgICAgICAgcG9pbnRlci1ldmVudHM6IG5vbmU7CiAgICAgICAgb3BhY2l0eTogMC40OwogICAgICAgIHRyYW5zaXRpb246IGJhY2tncm91bmQtY29sb3IgbGluZWFyIC4wOHM7CiAgICAgICAgYmFja2dyb3VuZC1jb2xvcjogdmFyKC0tcGFwZXItdG9nZ2xlLWJ1dHRvbi11bmNoZWNrZWQtYmFyLWNvbG9yLCAjMDAwMDAwKTsKCiAgICAgICAgQGFwcGx5IC0tcGFwZXItdG9nZ2xlLWJ1dHRvbi11bmNoZWNrZWQtYmFyOwogICAgICB9CgogICAgICAudG9nZ2xlLWJ1dHRvbiB7CiAgICAgICAgcG9zaXRpb246IGFic29sdXRlOwogICAgICAgIHRvcDogLTNweDsKICAgICAgICBsZWZ0OiAwOwogICAgICAgIGhlaWdodDogMjBweDsKICAgICAgICB3aWR0aDogMjBweDsKICAgICAgICBib3JkZXItcmFkaXVzOiA1MCU7CiAgICAgICAgYm94LXNoYWRvdzogMCAxcHggNXB4IDAgcmdiYSgwLCAwLCAwLCAwLjYpOwogICAgICAgIHRyYW5zaXRpb246IC13ZWJraXQtdHJhbnNmb3JtIGxpbmVhciAuMDhzLCBiYWNrZ3JvdW5kLWNvbG9yIGxpbmVhciAuMDhzOwogICAgICAgIHRyYW5zaXRpb246IHRyYW5zZm9ybSBsaW5lYXIgLjA4cywgYmFja2dyb3VuZC1jb2xvciBsaW5lYXIgLjA4czsKICAgICAgICB3aWxsLWNoYW5nZTogdHJhbnNmb3JtOwogICAgICAgIGJhY2tncm91bmQtY29sb3I6IHZhcigtLXBhcGVyLXRvZ2dsZS1idXR0b24tdW5jaGVja2VkLWJ1dHRvbi1jb2xvciwgdmFyKC0tcGFwZXItZ3JleS01MCkpOwoKICAgICAgICBAYXBwbHkgLS1wYXBlci10b2dnbGUtYnV0dG9uLXVuY2hlY2tlZC1idXR0b247CiAgICAgIH0KCiAgICAgIC50b2dnbGUtYnV0dG9uLmRyYWdnaW5nIHsKICAgICAgICAtd2Via2l0LXRyYW5zaXRpb246IG5vbmU7CiAgICAgICAgdHJhbnNpdGlvbjogbm9uZTsKICAgICAgfQoKICAgICAgOmhvc3QoW2NoZWNrZWRdOm5vdChbZGlzYWJsZWRdKSkgLnRvZ2dsZS1iYXIgewogICAgICAgIG9wYWNpdHk6IDAuNTsKICAgICAgICBiYWNrZ3JvdW5kLWNvbG9yOiB2YXIoLS1wYXBlci10b2dnbGUtYnV0dG9uLWNoZWNrZWQtYmFyLWNvbG9yLCB2YXIoLS1wcmltYXJ5LWNvbG9yKSk7CgogICAgICAgIEBhcHBseSAtLXBhcGVyLXRvZ2dsZS1idXR0b24tY2hlY2tlZC1iYXI7CiAgICAgIH0KCiAgICAgIDpob3N0KFtkaXNhYmxlZF0pIC50b2dnbGUtYmFyIHsKICAgICAgICBiYWNrZ3JvdW5kLWNvbG9yOiAjMDAwOwogICAgICAgIG9wYWNpdHk6IDAuMTI7CiAgICAgIH0KCiAgICAgIDpob3N0KFtjaGVja2VkXSkgLnRvZ2dsZS1idXR0b24gewogICAgICAgIC13ZWJraXQtdHJhbnNmb3JtOiB0cmFuc2xhdGUoMTZweCwgMCk7CiAgICAgICAgdHJhbnNmb3JtOiB0cmFuc2xhdGUoMTZweCwgMCk7CiAgICAgIH0KCiAgICAgIDpob3N0KFtjaGVja2VkXTpub3QoW2Rpc2FibGVkXSkpIC50b2dnbGUtYnV0dG9uIHsKICAgICAgICBiYWNrZ3JvdW5kLWNvbG9yOiB2YXIoLS1wYXBlci10b2dnbGUtYnV0dG9uLWNoZWNrZWQtYnV0dG9uLWNvbG9yLCB2YXIoLS1wcmltYXJ5LWNvbG9yKSk7CgogICAgICAgIEBhcHBseSAtLXBhcGVyLXRvZ2dsZS1idXR0b24tY2hlY2tlZC1idXR0b247CiAgICAgIH0KCiAgICAgIDpob3N0KFtkaXNhYmxlZF0pIC50b2dnbGUtYnV0dG9uIHsKICAgICAgICBiYWNrZ3JvdW5kLWNvbG9yOiAjYmRiZGJkOwogICAgICAgIG9wYWNpdHk6IDE7CiAgICAgIH0KCiAgICAgIC50b2dnbGUtaW5rIHsKICAgICAgICBwb3NpdGlvbjogYWJzb2x1dGU7CiAgICAgICAgdG9wOiAtMTRweDsKICAgICAgICBsZWZ0OiAtMTRweDsKICAgICAgICByaWdodDogYXV0bzsKICAgICAgICBib3R0b206IGF1dG87CiAgICAgICAgd2lkdGg6IDQ4cHg7CiAgICAgICAgaGVpZ2h0OiA0OHB4OwogICAgICAgIG9wYWNpdHk6IDAuNTsKICAgICAgICBwb2ludGVyLWV2ZW50czogbm9uZTsKICAgICAgICBjb2xvcjogdmFyKC0tcGFwZXItdG9nZ2xlLWJ1dHRvbi11bmNoZWNrZWQtaW5rLWNvbG9yLCB2YXIoLS1wcmltYXJ5LXRleHQtY29sb3IpKTsKCiAgICAgICAgQGFwcGx5IC0tcGFwZXItdG9nZ2xlLWJ1dHRvbi11bmNoZWNrZWQtaW5rOwogICAgICB9CgogICAgICA6aG9zdChbY2hlY2tlZF0pIC50b2dnbGUtaW5rIHsKICAgICAgICBjb2xvcjogdmFyKC0tcGFwZXItdG9nZ2xlLWJ1dHRvbi1jaGVja2VkLWluay1jb2xvciwgdmFyKC0tcHJpbWFyeS1jb2xvcikpOwoKICAgICAgICBAYXBwbHkgLS1wYXBlci10b2dnbGUtYnV0dG9uLWNoZWNrZWQtaW5rOwogICAgICB9CgogICAgICAudG9nZ2xlLWNvbnRhaW5lciB7CiAgICAgICAgZGlzcGxheTogaW5saW5lLWJsb2NrOwogICAgICAgIHBvc2l0aW9uOiByZWxhdGl2ZTsKICAgICAgICB3aWR0aDogMzZweDsKICAgICAgICBoZWlnaHQ6IDE0cHg7CiAgICAgICAgLyogVGhlIHRvZ2dsZSBidXR0b24gaGFzIGFuIGFic29sdXRlIHBvc2l0aW9uIG9mIC0zcHg7IFRoZSBleHRyYSAxcHgKICAgICAgICAvKiBhY2NvdW50cyBmb3IgdGhlIHRvZ2dsZSBidXR0b24gc2hhZG93IGJveC4gKi8KICAgICAgICBtYXJnaW46IDRweCAxcHg7CiAgICAgIH0KCiAgICAgIC50b2dnbGUtbGFiZWwgewogICAgICAgIHBvc2l0aW9uOiByZWxhdGl2ZTsKICAgICAgICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7CiAgICAgICAgdmVydGljYWwtYWxpZ246IG1pZGRsZTsKICAgICAgICBwYWRkaW5nLWxlZnQ6IHZhcigtLXBhcGVyLXRvZ2dsZS1idXR0b24tbGFiZWwtc3BhY2luZywgOHB4KTsKICAgICAgICBwb2ludGVyLWV2ZW50czogbm9uZTsKICAgICAgICBjb2xvcjogdmFyKC0tcGFwZXItdG9nZ2xlLWJ1dHRvbi1sYWJlbC1jb2xvciwgdmFyKC0tcHJpbWFyeS10ZXh0LWNvbG9yKSk7CiAgICAgIH0KCiAgICAgIC8qIGludmFsaWQgc3RhdGUgKi8KICAgICAgOmhvc3QoW2ludmFsaWRdKSAudG9nZ2xlLWJhciB7CiAgICAgICAgYmFja2dyb3VuZC1jb2xvcjogdmFyKC0tcGFwZXItdG9nZ2xlLWJ1dHRvbi1pbnZhbGlkLWJhci1jb2xvciwgdmFyKC0tZXJyb3ItY29sb3IpKTsKICAgICAgfQoKICAgICAgOmhvc3QoW2ludmFsaWRdKSAudG9nZ2xlLWJ1dHRvbiB7CiAgICAgICAgYmFja2dyb3VuZC1jb2xvcjogdmFyKC0tcGFwZXItdG9nZ2xlLWJ1dHRvbi1pbnZhbGlkLWJ1dHRvbi1jb2xvciwgdmFyKC0tZXJyb3ItY29sb3IpKTsKICAgICAgfQoKICAgICAgOmhvc3QoW2ludmFsaWRdKSAudG9nZ2xlLWluayB7CiAgICAgICAgY29sb3I6IHZhcigtLXBhcGVyLXRvZ2dsZS1idXR0b24taW52YWxpZC1pbmstY29sb3IsIHZhcigtLWVycm9yLWNvbG9yKSk7CiAgICAgIH0KICAgIDwvc3R5bGU+CgogICAgPGRpdiBjbGFzcz0idG9nZ2xlLWNvbnRhaW5lciI+CiAgICAgIDxkaXYgaWQ9InRvZ2dsZUJhciIgY2xhc3M9InRvZ2dsZS1iYXIiPjwvZGl2PgogICAgICA8ZGl2IGlkPSJ0b2dnbGVCdXR0b24iIGNsYXNzPSJ0b2dnbGUtYnV0dG9uIj48L2Rpdj4KICAgIDwvZGl2PgoKICAgIDxkaXYgY2xhc3M9InRvZ2dsZS1sYWJlbCI+PHNsb3Q+PC9zbG90PjwvZGl2PgoKICBgO3VzLnNldEF0dHJpYnV0ZSgic3RyaXAtd2hpdGVzcGFjZSIsIiIpLE5yKHtfdGVtcGxhdGU6dXMsaXM6InBhcGVyLXRvZ2dsZS1idXR0b24iLGJlaGF2aW9yczpbY2FdLGhvc3RBdHRyaWJ1dGVzOntyb2xlOiJidXR0b24iLCJhcmlhLXByZXNzZWQiOiJmYWxzZSIsdGFiaW5kZXg6MH0scHJvcGVydGllczp7fSxsaXN0ZW5lcnM6e3RyYWNrOiJfb250cmFjayJ9LGF0dGFjaGVkOmZ1bmN0aW9uKCl7a2kodGhpcywoZnVuY3Rpb24oKXtyaSh0aGlzLCJwYW4teSIpfSkpfSxfb250cmFjazpmdW5jdGlvbih0KXt2YXIgZT10LmRldGFpbDsic3RhcnQiPT09ZS5zdGF0ZT90aGlzLl90cmFja1N0YXJ0KGUpOiJ0cmFjayI9PT1lLnN0YXRlP3RoaXMuX3RyYWNrTW92ZShlKToiZW5kIj09PWUuc3RhdGUmJnRoaXMuX3RyYWNrRW5kKGUpfSxfdHJhY2tTdGFydDpmdW5jdGlvbih0KXt0aGlzLl93aWR0aD10aGlzLiQudG9nZ2xlQmFyLm9mZnNldFdpZHRoLzIsdGhpcy5fdHJhY2tDaGVja2VkPXRoaXMuY2hlY2tlZCx0aGlzLiQudG9nZ2xlQnV0dG9uLmNsYXNzTGlzdC5hZGQoImRyYWdnaW5nIil9LF90cmFja01vdmU6ZnVuY3Rpb24odCl7dmFyIGU9dC5keDt0aGlzLl94PU1hdGgubWluKHRoaXMuX3dpZHRoLE1hdGgubWF4KDAsdGhpcy5fdHJhY2tDaGVja2VkP3RoaXMuX3dpZHRoK2U6ZSkpLHRoaXMudHJhbnNsYXRlM2QodGhpcy5feCsicHgiLDAsMCx0aGlzLiQudG9nZ2xlQnV0dG9uKSx0aGlzLl91c2VyQWN0aXZhdGUodGhpcy5feD50aGlzLl93aWR0aC8yKX0sX3RyYWNrRW5kOmZ1bmN0aW9uKHQpe3RoaXMuJC50b2dnbGVCdXR0b24uY2xhc3NMaXN0LnJlbW92ZSgiZHJhZ2dpbmciKSx0aGlzLnRyYW5zZm9ybSgiIix0aGlzLiQudG9nZ2xlQnV0dG9uKX0sX2NyZWF0ZVJpcHBsZTpmdW5jdGlvbigpe3RoaXMuX3JpcHBsZUNvbnRhaW5lcj10aGlzLiQudG9nZ2xlQnV0dG9uO3ZhciB0PVpvLl9jcmVhdGVSaXBwbGUoKTtyZXR1cm4gdC5pZD0iaW5rIix0LnNldEF0dHJpYnV0ZSgicmVjZW50ZXJzIiwiIiksdC5jbGFzc0xpc3QuYWRkKCJjaXJjbGUiLCJ0b2dnbGUtaW5rIiksdH19KSwKLyoqCiAgICBAbGljZW5zZQogICAgQ29weXJpZ2h0IChjKSAyMDE1IFRoZSBQb2x5bWVyIFByb2plY3QgQXV0aG9ycy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAgIFRoaXMgY29kZSBtYXkgb25seSBiZSB1c2VkIHVuZGVyIHRoZSBCU0Qgc3R5bGUgbGljZW5zZSBmb3VuZCBhdAogICAgaHR0cDovL3BvbHltZXIuZ2l0aHViLmlvL0xJQ0VOU0UudHh0IFRoZSBjb21wbGV0ZSBzZXQgb2YgYXV0aG9ycyBtYXkgYmUgZm91bmQgYXQKICAgIGh0dHA6Ly9wb2x5bWVyLmdpdGh1Yi5pby9BVVRIT1JTLnR4dCBUaGUgY29tcGxldGUgc2V0IG9mIGNvbnRyaWJ1dG9ycyBtYXkgYmUKICAgIGZvdW5kIGF0IGh0dHA6Ly9wb2x5bWVyLmdpdGh1Yi5pby9DT05UUklCVVRPUlMudHh0IENvZGUgZGlzdHJpYnV0ZWQgYnkgR29vZ2xlIGFzCiAgICBwYXJ0IG9mIHRoZSBwb2x5bWVyIHByb2plY3QgaXMgYWxzbyBzdWJqZWN0IHRvIGFuIGFkZGl0aW9uYWwgSVAgcmlnaHRzIGdyYW50CiAgICBmb3VuZCBhdCBodHRwOi8vcG9seW1lci5naXRodWIuaW8vUEFURU5UUy50eHQKICAgICovCk5yKHtfdGVtcGxhdGU6X2VgCiAgICA8c3R5bGU+CiAgICAgIDpob3N0IHsKICAgICAgICAtLWNhbGN1bGF0ZWQtcGFwZXItdG9vbGJhci1oZWlnaHQ6IHZhcigtLXBhcGVyLXRvb2xiYXItaGVpZ2h0LCA2NHB4KTsKICAgICAgICAtLWNhbGN1bGF0ZWQtcGFwZXItdG9vbGJhci1zbS1oZWlnaHQ6IHZhcigtLXBhcGVyLXRvb2xiYXItc20taGVpZ2h0LCA1NnB4KTsKICAgICAgICBkaXNwbGF5OiBibG9jazsKICAgICAgICBwb3NpdGlvbjogcmVsYXRpdmU7CiAgICAgICAgYm94LXNpemluZzogYm9yZGVyLWJveDsKICAgICAgICAtbW96LWJveC1zaXppbmc6IGJvcmRlci1ib3g7CiAgICAgICAgaGVpZ2h0OiB2YXIoLS1jYWxjdWxhdGVkLXBhcGVyLXRvb2xiYXItaGVpZ2h0KTsKICAgICAgICBiYWNrZ3JvdW5kOiB2YXIoLS1wYXBlci10b29sYmFyLWJhY2tncm91bmQsIHZhcigtLXByaW1hcnktY29sb3IpKTsKICAgICAgICBjb2xvcjogdmFyKC0tcGFwZXItdG9vbGJhci1jb2xvciwgdmFyKC0tZGFyay10aGVtZS10ZXh0LWNvbG9yKSk7CiAgICAgICAgQGFwcGx5IC0tcGFwZXItdG9vbGJhcjsKICAgICAgfQoKICAgICAgOmhvc3QoLmFuaW1hdGUpIHsKICAgICAgICB0cmFuc2l0aW9uOiB2YXIoLS1wYXBlci10b29sYmFyLXRyYW5zaXRpb24sIGhlaWdodCAwLjE4cyBlYXNlLWluKTsKICAgICAgfQoKICAgICAgOmhvc3QoLm1lZGl1bS10YWxsKSB7CiAgICAgICAgaGVpZ2h0OiBjYWxjKHZhcigtLWNhbGN1bGF0ZWQtcGFwZXItdG9vbGJhci1oZWlnaHQpICogMik7CiAgICAgICAgQGFwcGx5IC0tcGFwZXItdG9vbGJhci1tZWRpdW07CiAgICAgIH0KCiAgICAgIDpob3N0KC50YWxsKSB7CiAgICAgICAgaGVpZ2h0OiBjYWxjKHZhcigtLWNhbGN1bGF0ZWQtcGFwZXItdG9vbGJhci1oZWlnaHQpICogMyk7CiAgICAgICAgQGFwcGx5IC0tcGFwZXItdG9vbGJhci10YWxsOwogICAgICB9CgogICAgICAudG9vbGJhci10b29scyB7CiAgICAgICAgcG9zaXRpb246IHJlbGF0aXZlOwogICAgICAgIGhlaWdodDogdmFyKC0tY2FsY3VsYXRlZC1wYXBlci10b29sYmFyLWhlaWdodCk7CiAgICAgICAgcGFkZGluZzogMCAxNnB4OwogICAgICAgIHBvaW50ZXItZXZlbnRzOiBub25lOwogICAgICAgIEBhcHBseSAtLWxheW91dC1ob3Jpem9udGFsOwogICAgICAgIEBhcHBseSAtLWxheW91dC1jZW50ZXI7CiAgICAgICAgQGFwcGx5IC0tcGFwZXItdG9vbGJhci1jb250ZW50OwogICAgICB9CgogICAgICAvKgogICAgICAgKiBUT0RPOiBXaGVyZSBzaG91bGQgbWVkaWEgcXVlcnkgYnJlYWtwb2ludHMgbGl2ZSBzbyB0aGV5IGNhbiBiZSBzaGFyZWQgYmV0d2VlbiBlbGVtZW50cz8KICAgICAgICovCgogICAgICBAbWVkaWEgKG1heC13aWR0aDogNjAwcHgpIHsKICAgICAgICA6aG9zdCB7CiAgICAgICAgICBoZWlnaHQ6IHZhcigtLWNhbGN1bGF0ZWQtcGFwZXItdG9vbGJhci1zbS1oZWlnaHQpOwogICAgICAgIH0KCiAgICAgICAgOmhvc3QoLm1lZGl1bS10YWxsKSB7CiAgICAgICAgICBoZWlnaHQ6IGNhbGModmFyKC0tY2FsY3VsYXRlZC1wYXBlci10b29sYmFyLXNtLWhlaWdodCkgKiAyKTsKICAgICAgICB9CgogICAgICAgIDpob3N0KC50YWxsKSB7CiAgICAgICAgICBoZWlnaHQ6IGNhbGModmFyKC0tY2FsY3VsYXRlZC1wYXBlci10b29sYmFyLXNtLWhlaWdodCkgKiAzKTsKICAgICAgICB9CgogICAgICAgIC50b29sYmFyLXRvb2xzIHsKICAgICAgICAgIGhlaWdodDogdmFyKC0tY2FsY3VsYXRlZC1wYXBlci10b29sYmFyLXNtLWhlaWdodCk7CiAgICAgICAgfQogICAgICB9CgogICAgICAjdG9wQmFyIHsKICAgICAgICBwb3NpdGlvbjogcmVsYXRpdmU7CiAgICAgIH0KCiAgICAgIC8qIG1pZGRsZSBiYXIgKi8KICAgICAgI21pZGRsZUJhciB7CiAgICAgICAgcG9zaXRpb246IGFic29sdXRlOwogICAgICAgIHRvcDogMDsKICAgICAgICByaWdodDogMDsKICAgICAgICBsZWZ0OiAwOwogICAgICB9CgogICAgICA6aG9zdCgudGFsbCkgI21pZGRsZUJhciwKICAgICAgOmhvc3QoLm1lZGl1bS10YWxsKSAjbWlkZGxlQmFyIHsKICAgICAgICAtd2Via2l0LXRyYW5zZm9ybTogdHJhbnNsYXRlWSgxMDAlKTsKICAgICAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZVkoMTAwJSk7CiAgICAgIH0KCiAgICAgIC8qIGJvdHRvbSBiYXIgKi8KICAgICAgI2JvdHRvbUJhciB7CiAgICAgICAgcG9zaXRpb246IGFic29sdXRlOwogICAgICAgIHJpZ2h0OiAwOwogICAgICAgIGJvdHRvbTogMDsKICAgICAgICBsZWZ0OiAwOwogICAgICB9CgogICAgICAvKgogICAgICAgKiBtYWtlIGVsZW1lbnRzIChlLmcuIGJ1dHRvbnMpIHJlc3BvbmQgdG8gbW91c2UvdG91Y2ggZXZlbnRzCiAgICAgICAqCiAgICAgICAqIFxgLnRvb2xiYXItdG9vbHNcYCBkaXNhYmxlcyB0b3VjaCBldmVudHMgc28gbXVsdGlwbGUgdG9vbGJhcnMgY2FuIHN0YWNrIGFuZCBub3QKICAgICAgICogYWJzb3JiIGV2ZW50cy4gQWxsIGNoaWxkcmVuIG11c3QgaGF2ZSBwb2ludGVyIGV2ZW50cyByZS1lbmFibGVkIHRvIHdvcmsgYXMKICAgICAgICogZXhwZWN0ZWQuCiAgICAgICAqLwogICAgICAudG9vbGJhci10b29scyA+IDo6c2xvdHRlZCgqOm5vdChbZGlzYWJsZWRdKSkgewogICAgICAgIHBvaW50ZXItZXZlbnRzOiBhdXRvOwogICAgICB9CgogICAgICAudG9vbGJhci10b29scyA+IDo6c2xvdHRlZCgudGl0bGUpIHsKICAgICAgICBAYXBwbHkgLS1wYXBlci1mb250LWNvbW1vbi1iYXNlOwogICAgICAgIHdoaXRlLXNwYWNlOiBub3dyYXA7CiAgICAgICAgb3ZlcmZsb3c6IGhpZGRlbjsKICAgICAgICB0ZXh0LW92ZXJmbG93OiBlbGxpcHNpczsKICAgICAgICBmb250LXNpemU6IDIwcHg7CiAgICAgICAgZm9udC13ZWlnaHQ6IDQwMDsKICAgICAgICBsaW5lLWhlaWdodDogMTsKICAgICAgICBwb2ludGVyLWV2ZW50czogbm9uZTsKICAgICAgICBAYXBwbHkgLS1sYXlvdXQtZmxleDsKICAgICAgfQoKICAgICAgLnRvb2xiYXItdG9vbHMgPiA6OnNsb3R0ZWQoLnRpdGxlKSB7CiAgICAgICAgbWFyZ2luLWxlZnQ6IDU2cHg7CiAgICAgIH0KCiAgICAgIC50b29sYmFyLXRvb2xzID4gOjpzbG90dGVkKHBhcGVyLWljb24tYnV0dG9uICsgLnRpdGxlKSB7CiAgICAgICAgbWFyZ2luLWxlZnQ6IDA7CiAgICAgIH0KCiAgICAgIC8qKgogICAgICAgKiBUaGUgLS1wYXBlci10b29sYmFyLXRpdGxlIG1peGluIGlzIGFwcGxpZWQgaGVyZSBpbnN0ZWFkIG9mIGFib3ZlIHRvCiAgICAgICAqIGZpeCB0aGUgaXNzdWUgd2l0aCBtYXJnaW4tbGVmdCBiZWluZyBpZ25vcmVkIGR1ZSB0byBjc3Mgb3JkZXJpbmcuCiAgICAgICAqLwogICAgICAudG9vbGJhci10b29scyA+IDo6c2xvdHRlZCgudGl0bGUpIHsKICAgICAgICBAYXBwbHkgLS1wYXBlci10b29sYmFyLXRpdGxlOwogICAgICB9CgogICAgICAudG9vbGJhci10b29scyA+IDo6c2xvdHRlZChwYXBlci1pY29uLWJ1dHRvbltpY29uPW1lbnVdKSB7CiAgICAgICAgbWFyZ2luLXJpZ2h0OiAyNHB4OwogICAgICB9CgogICAgICAudG9vbGJhci10b29scyA+IDo6c2xvdHRlZCguZml0KSB7CiAgICAgICAgcG9zaXRpb246IGFic29sdXRlOwogICAgICAgIHRvcDogYXV0bzsKICAgICAgICByaWdodDogMDsKICAgICAgICBib3R0b206IDA7CiAgICAgICAgbGVmdDogMDsKICAgICAgICB3aWR0aDogYXV0bzsKICAgICAgICBtYXJnaW46IDA7CiAgICAgIH0KCiAgICAgIC8qIFRPRE8obm9tcyk6IFVudGlsIHdlIGhhdmUgYSBiZXR0ZXIgc29sdXRpb24gZm9yIGNsYXNzZXMgdGhhdCBkb24ndCB1c2UKICAgICAgICogL2RlZXAvIGNyZWF0ZSBvdXIgb3duLgogICAgICAgKi8KICAgICAgLnN0YXJ0LWp1c3RpZmllZCB7CiAgICAgICAgQGFwcGx5IC0tbGF5b3V0LXN0YXJ0LWp1c3RpZmllZDsKICAgICAgfQoKICAgICAgLmNlbnRlci1qdXN0aWZpZWQgewogICAgICAgIEBhcHBseSAtLWxheW91dC1jZW50ZXItanVzdGlmaWVkOwogICAgICB9CgogICAgICAuZW5kLWp1c3RpZmllZCB7CiAgICAgICAgQGFwcGx5IC0tbGF5b3V0LWVuZC1qdXN0aWZpZWQ7CiAgICAgIH0KCiAgICAgIC5hcm91bmQtanVzdGlmaWVkIHsKICAgICAgICBAYXBwbHkgLS1sYXlvdXQtYXJvdW5kLWp1c3RpZmllZDsKICAgICAgfQoKICAgICAgLmp1c3RpZmllZCB7CiAgICAgICAgQGFwcGx5IC0tbGF5b3V0LWp1c3RpZmllZDsKICAgICAgfQogICAgPC9zdHlsZT4KCiAgICA8ZGl2IGlkPSJ0b3BCYXIiIGNsYXNzXCQ9InRvb2xiYXItdG9vbHMgW1tfY29tcHV0ZUJhckV4dHJhQ2xhc3NlcyhqdXN0aWZ5KV1dIj4KICAgICAgPHNsb3QgbmFtZT0idG9wIj48L3Nsb3Q+CiAgICA8L2Rpdj4KCiAgICA8ZGl2IGlkPSJtaWRkbGVCYXIiIGNsYXNzXCQ9InRvb2xiYXItdG9vbHMgW1tfY29tcHV0ZUJhckV4dHJhQ2xhc3NlcyhtaWRkbGVKdXN0aWZ5KV1dIj4KICAgICAgPHNsb3QgbmFtZT0ibWlkZGxlIj48L3Nsb3Q+CiAgICA8L2Rpdj4KCiAgICA8ZGl2IGlkPSJib3R0b21CYXIiIGNsYXNzXCQ9InRvb2xiYXItdG9vbHMgW1tfY29tcHV0ZUJhckV4dHJhQ2xhc3Nlcyhib3R0b21KdXN0aWZ5KV1dIj4KICAgICAgPHNsb3QgbmFtZT0iYm90dG9tIj48L3Nsb3Q+CiAgICA8L2Rpdj4KYCxpczoicGFwZXItdG9vbGJhciIsaG9zdEF0dHJpYnV0ZXM6e3JvbGU6InRvb2xiYXIifSxwcm9wZXJ0aWVzOntib3R0b21KdXN0aWZ5Ont0eXBlOlN0cmluZyx2YWx1ZToiIn0sanVzdGlmeTp7dHlwZTpTdHJpbmcsdmFsdWU6IiJ9LG1pZGRsZUp1c3RpZnk6e3R5cGU6U3RyaW5nLHZhbHVlOiIifX0scmVhZHk6ZnVuY3Rpb24oKXtjb25zb2xlLndhcm4odGhpcy5pcywiaXMgZGVwcmVjYXRlZC4gUGxlYXNlIHVzZSBhcHAtbGF5b3V0IGluc3RlYWQhIil9LGF0dGFjaGVkOmZ1bmN0aW9uKCl7dGhpcy5fb2JzZXJ2ZXI9dGhpcy5fb2JzZXJ2ZSh0aGlzKSx0aGlzLl91cGRhdGVBcmlhTGFiZWxsZWRCeSgpfSxkZXRhY2hlZDpmdW5jdGlvbigpe3RoaXMuX29ic2VydmVyJiZ0aGlzLl9vYnNlcnZlci5kaXNjb25uZWN0KCl9LF9vYnNlcnZlOmZ1bmN0aW9uKHQpe3ZhciBlPW5ldyBNdXRhdGlvbk9ic2VydmVyKGZ1bmN0aW9uKCl7dGhpcy5fdXBkYXRlQXJpYUxhYmVsbGVkQnkoKX0uYmluZCh0aGlzKSk7cmV0dXJuIGUub2JzZXJ2ZSh0LHtjaGlsZExpc3Q6ITAsc3VidHJlZTohMH0pLGV9LF91cGRhdGVBcmlhTGFiZWxsZWRCeTpmdW5jdGlvbigpe3ppKCk7Zm9yKHZhciB0LGU9W10sbj1BcnJheS5wcm90b3R5cGUuc2xpY2UuY2FsbChxaSh0aGlzLnJvb3QpLnF1ZXJ5U2VsZWN0b3JBbGwoInNsb3QiKSkuY29uY2F0KEFycmF5LnByb3RvdHlwZS5zbGljZS5jYWxsKHFpKHRoaXMucm9vdCkucXVlcnlTZWxlY3RvckFsbCgiY29udGVudCIpKSksaT0wO3Q9bltpXTtpKyspZm9yKHZhciByLG89cWkodCkuZ2V0RGlzdHJpYnV0ZWROb2RlcygpLGE9MDtyPW9bYV07YSsrKWlmKHIuY2xhc3NMaXN0JiZyLmNsYXNzTGlzdC5jb250YWlucygidGl0bGUiKSlpZihyLmlkKWUucHVzaChyLmlkKTtlbHNle3ZhciBzPSJwYXBlci10b29sYmFyLWxhYmVsLSIrTWF0aC5mbG9vcigxZTQqTWF0aC5yYW5kb20oKSk7ci5pZD1zLGUucHVzaChzKX1lLmxlbmd0aD4wJiZ0aGlzLnNldEF0dHJpYnV0ZSgiYXJpYS1sYWJlbGxlZGJ5IixlLmpvaW4oIiAiKSl9LF9jb21wdXRlQmFyRXh0cmFDbGFzc2VzOmZ1bmN0aW9uKHQpe3JldHVybiB0P3QrKCJqdXN0aWZpZWQiPT09dD8iIjoiLWp1c3RpZmllZCIpOiIifX0pLAovKioKICAgIEBsaWNlbnNlCiAgICBDb3B5cmlnaHQgKGMpIDIwMTUgVGhlIFBvbHltZXIgUHJvamVjdCBBdXRob3JzLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICAgVGhpcyBjb2RlIG1heSBvbmx5IGJlIHVzZWQgdW5kZXIgdGhlIEJTRCBzdHlsZSBsaWNlbnNlIGZvdW5kIGF0CiAgICBodHRwOi8vcG9seW1lci5naXRodWIuaW8vTElDRU5TRS50eHQgVGhlIGNvbXBsZXRlIHNldCBvZiBhdXRob3JzIG1heSBiZSBmb3VuZCBhdAogICAgaHR0cDovL3BvbHltZXIuZ2l0aHViLmlvL0FVVEhPUlMudHh0IFRoZSBjb21wbGV0ZSBzZXQgb2YgY29udHJpYnV0b3JzIG1heSBiZQogICAgZm91bmQgYXQgaHR0cDovL3BvbHltZXIuZ2l0aHViLmlvL0NPTlRSSUJVVE9SUy50eHQgQ29kZSBkaXN0cmlidXRlZCBieSBHb29nbGUgYXMKICAgIHBhcnQgb2YgdGhlIHBvbHltZXIgcHJvamVjdCBpcyBhbHNvIHN1YmplY3QgdG8gYW4gYWRkaXRpb25hbCBJUCByaWdodHMgZ3JhbnQKICAgIGZvdW5kIGF0IGh0dHA6Ly9wb2x5bWVyLmdpdGh1Yi5pby9QQVRFTlRTLnR4dAogICAgKi8KTnIoe190ZW1wbGF0ZTpfZWAKICAgIDxzdHlsZT4KICAgICAgOmhvc3QgewogICAgICAgIGRpc3BsYXk6IGJsb2NrOwogICAgICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTsKICAgICAgICBvdXRsaW5lOiBub25lOwogICAgICAgIHotaW5kZXg6IDEwMDI7CiAgICAgICAgLW1vei11c2VyLXNlbGVjdDogbm9uZTsKICAgICAgICAtbXMtdXNlci1zZWxlY3Q6IG5vbmU7CiAgICAgICAgLXdlYmtpdC11c2VyLXNlbGVjdDogbm9uZTsKICAgICAgICB1c2VyLXNlbGVjdDogbm9uZTsKICAgICAgICBjdXJzb3I6IGRlZmF1bHQ7CiAgICAgIH0KCiAgICAgICN0b29sdGlwIHsKICAgICAgICBkaXNwbGF5OiBibG9jazsKICAgICAgICBvdXRsaW5lOiBub25lOwogICAgICAgIEBhcHBseSAtLXBhcGVyLWZvbnQtY29tbW9uLWJhc2U7CiAgICAgICAgZm9udC1zaXplOiAxMHB4OwogICAgICAgIGxpbmUtaGVpZ2h0OiAxOwogICAgICAgIGJhY2tncm91bmQtY29sb3I6IHZhcigtLXBhcGVyLXRvb2x0aXAtYmFja2dyb3VuZCwgIzYxNjE2MSk7CiAgICAgICAgY29sb3I6IHZhcigtLXBhcGVyLXRvb2x0aXAtdGV4dC1jb2xvciwgd2hpdGUpOwogICAgICAgIHBhZGRpbmc6IDhweDsKICAgICAgICBib3JkZXItcmFkaXVzOiAycHg7CiAgICAgICAgQGFwcGx5IC0tcGFwZXItdG9vbHRpcDsKICAgICAgfQoKICAgICAgQGtleWZyYW1lcyBrZXlGcmFtZVNjYWxlVXAgewogICAgICAgIDAlIHsKICAgICAgICAgIHRyYW5zZm9ybTogc2NhbGUoMC4wKTsKICAgICAgICB9CiAgICAgICAgMTAwJSB7CiAgICAgICAgICB0cmFuc2Zvcm06IHNjYWxlKDEuMCk7CiAgICAgICAgfQogICAgICB9CgogICAgICBAa2V5ZnJhbWVzIGtleUZyYW1lU2NhbGVEb3duIHsKICAgICAgICAwJSB7CiAgICAgICAgICB0cmFuc2Zvcm06IHNjYWxlKDEuMCk7CiAgICAgICAgfQogICAgICAgIDEwMCUgewogICAgICAgICAgdHJhbnNmb3JtOiBzY2FsZSgwLjApOwogICAgICAgIH0KICAgICAgfQoKICAgICAgQGtleWZyYW1lcyBrZXlGcmFtZUZhZGVJbk9wYWNpdHkgewogICAgICAgIDAlIHsKICAgICAgICAgIG9wYWNpdHk6IDA7CiAgICAgICAgfQogICAgICAgIDEwMCUgewogICAgICAgICAgb3BhY2l0eTogdmFyKC0tcGFwZXItdG9vbHRpcC1vcGFjaXR5LCAwLjkpOwogICAgICAgIH0KICAgICAgfQoKICAgICAgQGtleWZyYW1lcyBrZXlGcmFtZUZhZGVPdXRPcGFjaXR5IHsKICAgICAgICAwJSB7CiAgICAgICAgICBvcGFjaXR5OiB2YXIoLS1wYXBlci10b29sdGlwLW9wYWNpdHksIDAuOSk7CiAgICAgICAgfQogICAgICAgIDEwMCUgewogICAgICAgICAgb3BhY2l0eTogMDsKICAgICAgICB9CiAgICAgIH0KCiAgICAgIEBrZXlmcmFtZXMga2V5RnJhbWVTbGlkZURvd25JbiB7CiAgICAgICAgMCUgewogICAgICAgICAgdHJhbnNmb3JtOiB0cmFuc2xhdGVZKC0yMDAwcHgpOwogICAgICAgICAgb3BhY2l0eTogMDsKICAgICAgICB9CiAgICAgICAgMTAlIHsKICAgICAgICAgIG9wYWNpdHk6IDAuMjsKICAgICAgICB9CiAgICAgICAgMTAwJSB7CiAgICAgICAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZVkoMCk7CiAgICAgICAgICBvcGFjaXR5OiB2YXIoLS1wYXBlci10b29sdGlwLW9wYWNpdHksIDAuOSk7CiAgICAgICAgfQogICAgICB9CgogICAgICBAa2V5ZnJhbWVzIGtleUZyYW1lU2xpZGVEb3duT3V0IHsKICAgICAgICAwJSB7CiAgICAgICAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZVkoMCk7CiAgICAgICAgICBvcGFjaXR5OiB2YXIoLS1wYXBlci10b29sdGlwLW9wYWNpdHksIDAuOSk7CiAgICAgICAgfQogICAgICAgIDEwJSB7CiAgICAgICAgICBvcGFjaXR5OiAwLjI7CiAgICAgICAgfQogICAgICAgIDEwMCUgewogICAgICAgICAgdHJhbnNmb3JtOiB0cmFuc2xhdGVZKC0yMDAwcHgpOwogICAgICAgICAgb3BhY2l0eTogMDsKICAgICAgICB9CiAgICAgIH0KCiAgICAgIC5mYWRlLWluLWFuaW1hdGlvbiB7CiAgICAgICAgb3BhY2l0eTogMDsKICAgICAgICBhbmltYXRpb24tZGVsYXk6IHZhcigtLXBhcGVyLXRvb2x0aXAtZGVsYXktaW4sIDUwMG1zKTsKICAgICAgICBhbmltYXRpb24tbmFtZToga2V5RnJhbWVGYWRlSW5PcGFjaXR5OwogICAgICAgIGFuaW1hdGlvbi1pdGVyYXRpb24tY291bnQ6IDE7CiAgICAgICAgYW5pbWF0aW9uLXRpbWluZy1mdW5jdGlvbjogZWFzZS1pbjsKICAgICAgICBhbmltYXRpb24tZHVyYXRpb246IHZhcigtLXBhcGVyLXRvb2x0aXAtZHVyYXRpb24taW4sIDUwMG1zKTsKICAgICAgICBhbmltYXRpb24tZmlsbC1tb2RlOiBmb3J3YXJkczsKICAgICAgICBAYXBwbHkgLS1wYXBlci10b29sdGlwLWFuaW1hdGlvbjsKICAgICAgfQoKICAgICAgLmZhZGUtb3V0LWFuaW1hdGlvbiB7CiAgICAgICAgb3BhY2l0eTogdmFyKC0tcGFwZXItdG9vbHRpcC1vcGFjaXR5LCAwLjkpOwogICAgICAgIGFuaW1hdGlvbi1kZWxheTogdmFyKC0tcGFwZXItdG9vbHRpcC1kZWxheS1vdXQsIDBtcyk7CiAgICAgICAgYW5pbWF0aW9uLW5hbWU6IGtleUZyYW1lRmFkZU91dE9wYWNpdHk7CiAgICAgICAgYW5pbWF0aW9uLWl0ZXJhdGlvbi1jb3VudDogMTsKICAgICAgICBhbmltYXRpb24tdGltaW5nLWZ1bmN0aW9uOiBlYXNlLWluOwogICAgICAgIGFuaW1hdGlvbi1kdXJhdGlvbjogdmFyKC0tcGFwZXItdG9vbHRpcC1kdXJhdGlvbi1vdXQsIDUwMG1zKTsKICAgICAgICBhbmltYXRpb24tZmlsbC1tb2RlOiBmb3J3YXJkczsKICAgICAgICBAYXBwbHkgLS1wYXBlci10b29sdGlwLWFuaW1hdGlvbjsKICAgICAgfQoKICAgICAgLnNjYWxlLXVwLWFuaW1hdGlvbiB7CiAgICAgICAgdHJhbnNmb3JtOiBzY2FsZSgwKTsKICAgICAgICBvcGFjaXR5OiB2YXIoLS1wYXBlci10b29sdGlwLW9wYWNpdHksIDAuOSk7CiAgICAgICAgYW5pbWF0aW9uLWRlbGF5OiB2YXIoLS1wYXBlci10b29sdGlwLWRlbGF5LWluLCA1MDBtcyk7CiAgICAgICAgYW5pbWF0aW9uLW5hbWU6IGtleUZyYW1lU2NhbGVVcDsKICAgICAgICBhbmltYXRpb24taXRlcmF0aW9uLWNvdW50OiAxOwogICAgICAgIGFuaW1hdGlvbi10aW1pbmctZnVuY3Rpb246IGVhc2UtaW47CiAgICAgICAgYW5pbWF0aW9uLWR1cmF0aW9uOiB2YXIoLS1wYXBlci10b29sdGlwLWR1cmF0aW9uLWluLCA1MDBtcyk7CiAgICAgICAgYW5pbWF0aW9uLWZpbGwtbW9kZTogZm9yd2FyZHM7CiAgICAgICAgQGFwcGx5IC0tcGFwZXItdG9vbHRpcC1hbmltYXRpb247CiAgICAgIH0KCiAgICAgIC5zY2FsZS1kb3duLWFuaW1hdGlvbiB7CiAgICAgICAgdHJhbnNmb3JtOiBzY2FsZSgxKTsKICAgICAgICBvcGFjaXR5OiB2YXIoLS1wYXBlci10b29sdGlwLW9wYWNpdHksIDAuOSk7CiAgICAgICAgYW5pbWF0aW9uLWRlbGF5OiB2YXIoLS1wYXBlci10b29sdGlwLWRlbGF5LW91dCwgNTAwbXMpOwogICAgICAgIGFuaW1hdGlvbi1uYW1lOiBrZXlGcmFtZVNjYWxlRG93bjsKICAgICAgICBhbmltYXRpb24taXRlcmF0aW9uLWNvdW50OiAxOwogICAgICAgIGFuaW1hdGlvbi10aW1pbmctZnVuY3Rpb246IGVhc2UtaW47CiAgICAgICAgYW5pbWF0aW9uLWR1cmF0aW9uOiB2YXIoLS1wYXBlci10b29sdGlwLWR1cmF0aW9uLW91dCwgNTAwbXMpOwogICAgICAgIGFuaW1hdGlvbi1maWxsLW1vZGU6IGZvcndhcmRzOwogICAgICAgIEBhcHBseSAtLXBhcGVyLXRvb2x0aXAtYW5pbWF0aW9uOwogICAgICB9CgogICAgICAuc2xpZGUtZG93bi1hbmltYXRpb24gewogICAgICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlWSgtMjAwMHB4KTsKICAgICAgICBvcGFjaXR5OiAwOwogICAgICAgIGFuaW1hdGlvbi1kZWxheTogdmFyKC0tcGFwZXItdG9vbHRpcC1kZWxheS1vdXQsIDUwMG1zKTsKICAgICAgICBhbmltYXRpb24tbmFtZToga2V5RnJhbWVTbGlkZURvd25JbjsKICAgICAgICBhbmltYXRpb24taXRlcmF0aW9uLWNvdW50OiAxOwogICAgICAgIGFuaW1hdGlvbi10aW1pbmctZnVuY3Rpb246IGN1YmljLWJlemllcigwLjAsIDAuMCwgMC4yLCAxKTsKICAgICAgICBhbmltYXRpb24tZHVyYXRpb246IHZhcigtLXBhcGVyLXRvb2x0aXAtZHVyYXRpb24tb3V0LCA1MDBtcyk7CiAgICAgICAgYW5pbWF0aW9uLWZpbGwtbW9kZTogZm9yd2FyZHM7CiAgICAgICAgQGFwcGx5IC0tcGFwZXItdG9vbHRpcC1hbmltYXRpb247CiAgICAgIH0KCiAgICAgIC5zbGlkZS1kb3duLWFuaW1hdGlvbi1vdXQgewogICAgICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlWSgwKTsKICAgICAgICBvcGFjaXR5OiB2YXIoLS1wYXBlci10b29sdGlwLW9wYWNpdHksIDAuOSk7CiAgICAgICAgYW5pbWF0aW9uLWRlbGF5OiB2YXIoLS1wYXBlci10b29sdGlwLWRlbGF5LW91dCwgNTAwbXMpOwogICAgICAgIGFuaW1hdGlvbi1uYW1lOiBrZXlGcmFtZVNsaWRlRG93bk91dDsKICAgICAgICBhbmltYXRpb24taXRlcmF0aW9uLWNvdW50OiAxOwogICAgICAgIGFuaW1hdGlvbi10aW1pbmctZnVuY3Rpb246IGN1YmljLWJlemllcigwLjQsIDAuMCwgMSwgMSk7CiAgICAgICAgYW5pbWF0aW9uLWR1cmF0aW9uOiB2YXIoLS1wYXBlci10b29sdGlwLWR1cmF0aW9uLW91dCwgNTAwbXMpOwogICAgICAgIGFuaW1hdGlvbi1maWxsLW1vZGU6IGZvcndhcmRzOwogICAgICAgIEBhcHBseSAtLXBhcGVyLXRvb2x0aXAtYW5pbWF0aW9uOwogICAgICB9CgogICAgICAuY2FuY2VsLWFuaW1hdGlvbiB7CiAgICAgICAgYW5pbWF0aW9uLWRlbGF5OiAtMzBzICFpbXBvcnRhbnQ7CiAgICAgIH0KCiAgICAgIC8qIFRoYW5rcyBJRSAxMC4gKi8KCiAgICAgIC5oaWRkZW4gewogICAgICAgIGRpc3BsYXk6IG5vbmUgIWltcG9ydGFudDsKICAgICAgfQogICAgPC9zdHlsZT4KCiAgICA8ZGl2IGlkPSJ0b29sdGlwIiBjbGFzcz0iaGlkZGVuIj4KICAgICAgPHNsb3Q+PC9zbG90PgogICAgPC9kaXY+CmAsaXM6InBhcGVyLXRvb2x0aXAiLGhvc3RBdHRyaWJ1dGVzOntyb2xlOiJ0b29sdGlwIix0YWJpbmRleDotMX0scHJvcGVydGllczp7Zm9yOnt0eXBlOlN0cmluZyxvYnNlcnZlcjoiX2ZpbmRUYXJnZXQifSxtYW51YWxNb2RlOnt0eXBlOkJvb2xlYW4sdmFsdWU6ITEsb2JzZXJ2ZXI6Il9tYW51YWxNb2RlQ2hhbmdlZCJ9LHBvc2l0aW9uOnt0eXBlOlN0cmluZyx2YWx1ZToiYm90dG9tIn0sZml0VG9WaXNpYmxlQm91bmRzOnt0eXBlOkJvb2xlYW4sdmFsdWU6ITF9LG9mZnNldDp7dHlwZTpOdW1iZXIsdmFsdWU6MTR9LG1hcmdpblRvcDp7dHlwZTpOdW1iZXIsdmFsdWU6MTR9LGFuaW1hdGlvbkRlbGF5Ont0eXBlOk51bWJlcix2YWx1ZTo1MDAsb2JzZXJ2ZXI6Il9kZWxheUNoYW5nZSJ9LGFuaW1hdGlvbkVudHJ5Ont0eXBlOlN0cmluZyx2YWx1ZToiIn0sYW5pbWF0aW9uRXhpdDp7dHlwZTpTdHJpbmcsdmFsdWU6IiJ9LGFuaW1hdGlvbkNvbmZpZzp7dHlwZTpPYmplY3QsdmFsdWU6ZnVuY3Rpb24oKXtyZXR1cm57ZW50cnk6W3tuYW1lOiJmYWRlLWluLWFuaW1hdGlvbiIsbm9kZTp0aGlzLHRpbWluZzp7ZGVsYXk6MH19XSxleGl0Olt7bmFtZToiZmFkZS1vdXQtYW5pbWF0aW9uIixub2RlOnRoaXN9XX19fSxfc2hvd2luZzp7dHlwZTpCb29sZWFuLHZhbHVlOiExfX0sbGlzdGVuZXJzOnt3ZWJraXRBbmltYXRpb25FbmQ6Il9vbkFuaW1hdGlvbkVuZCJ9LGdldCB0YXJnZXQoKXt2YXIgdD1xaSh0aGlzKS5wYXJlbnROb2RlLGU9cWkodGhpcykuZ2V0T3duZXJSb290KCk7cmV0dXJuIHRoaXMuZm9yP3FpKGUpLnF1ZXJ5U2VsZWN0b3IoIiMiK3RoaXMuZm9yKTp0Lm5vZGVUeXBlPT1Ob2RlLkRPQ1VNRU5UX0ZSQUdNRU5UX05PREU/ZS5ob3N0OnR9LGF0dGFjaGVkOmZ1bmN0aW9uKCl7dGhpcy5fZmluZFRhcmdldCgpfSxkZXRhY2hlZDpmdW5jdGlvbigpe3RoaXMubWFudWFsTW9kZXx8dGhpcy5fcmVtb3ZlTGlzdGVuZXJzKCl9LHBsYXlBbmltYXRpb246ZnVuY3Rpb24odCl7ImVudHJ5Ij09PXQ/dGhpcy5zaG93KCk6ImV4aXQiPT09dCYmdGhpcy5oaWRlKCl9LGNhbmNlbEFuaW1hdGlvbjpmdW5jdGlvbigpe3RoaXMuJC50b29sdGlwLmNsYXNzTGlzdC5hZGQoImNhbmNlbC1hbmltYXRpb24iKX0sc2hvdzpmdW5jdGlvbigpe2lmKCF0aGlzLl9zaG93aW5nKXtpZigiIj09PXFpKHRoaXMpLnRleHRDb250ZW50LnRyaW0oKSl7Zm9yKHZhciB0PSEwLGU9cWkodGhpcykuZ2V0RWZmZWN0aXZlQ2hpbGROb2RlcygpLG49MDtuPGUubGVuZ3RoO24rKylpZigiIiE9PWVbbl0udGV4dENvbnRlbnQudHJpbSgpKXt0PSExO2JyZWFrfWlmKHQpcmV0dXJufXRoaXMuX3Nob3dpbmc9ITAsdGhpcy4kLnRvb2x0aXAuY2xhc3NMaXN0LnJlbW92ZSgiaGlkZGVuIiksdGhpcy4kLnRvb2x0aXAuY2xhc3NMaXN0LnJlbW92ZSgiY2FuY2VsLWFuaW1hdGlvbiIpLHRoaXMuJC50b29sdGlwLmNsYXNzTGlzdC5yZW1vdmUodGhpcy5fZ2V0QW5pbWF0aW9uVHlwZSgiZXhpdCIpKSx0aGlzLnVwZGF0ZVBvc2l0aW9uKCksdGhpcy5fYW5pbWF0aW9uUGxheWluZz0hMCx0aGlzLiQudG9vbHRpcC5jbGFzc0xpc3QuYWRkKHRoaXMuX2dldEFuaW1hdGlvblR5cGUoImVudHJ5IikpfX0saGlkZTpmdW5jdGlvbigpe2lmKHRoaXMuX3Nob3dpbmcpe2lmKHRoaXMuX2FuaW1hdGlvblBsYXlpbmcpcmV0dXJuIHRoaXMuX3Nob3dpbmc9ITEsdm9pZCB0aGlzLl9jYW5jZWxBbmltYXRpb24oKTt0aGlzLl9vbkFuaW1hdGlvbkZpbmlzaCgpLHRoaXMuX3Nob3dpbmc9ITEsdGhpcy5fYW5pbWF0aW9uUGxheWluZz0hMH19LHVwZGF0ZVBvc2l0aW9uOmZ1bmN0aW9uKCl7aWYodGhpcy5fdGFyZ2V0JiZ0aGlzLm9mZnNldFBhcmVudCl7dmFyIHQ9dGhpcy5vZmZzZXQ7MTQhPXRoaXMubWFyZ2luVG9wJiYxND09dGhpcy5vZmZzZXQmJih0PXRoaXMubWFyZ2luVG9wKTt2YXIgZSxuLGk9dGhpcy5vZmZzZXRQYXJlbnQuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCkscj10aGlzLl90YXJnZXQuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCksbz10aGlzLmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpLGE9KHIud2lkdGgtby53aWR0aCkvMixzPShyLmhlaWdodC1vLmhlaWdodCkvMixsPXIubGVmdC1pLmxlZnQsYz1yLnRvcC1pLnRvcDtzd2l0Y2godGhpcy5wb3NpdGlvbil7Y2FzZSJ0b3AiOmU9bCthLG49Yy1vLmhlaWdodC10O2JyZWFrO2Nhc2UiYm90dG9tIjplPWwrYSxuPWMrci5oZWlnaHQrdDticmVhaztjYXNlImxlZnQiOmU9bC1vLndpZHRoLXQsbj1jK3M7YnJlYWs7Y2FzZSJyaWdodCI6ZT1sK3Iud2lkdGgrdCxuPWMrc310aGlzLmZpdFRvVmlzaWJsZUJvdW5kcz8oaS5sZWZ0K2Urby53aWR0aD53aW5kb3cuaW5uZXJXaWR0aD8odGhpcy5zdHlsZS5yaWdodD0iMHB4Iix0aGlzLnN0eWxlLmxlZnQ9ImF1dG8iKToodGhpcy5zdHlsZS5sZWZ0PU1hdGgubWF4KDAsZSkrInB4Iix0aGlzLnN0eWxlLnJpZ2h0PSJhdXRvIiksaS50b3ArbitvLmhlaWdodD53aW5kb3cuaW5uZXJIZWlnaHQ/KHRoaXMuc3R5bGUuYm90dG9tPWkuaGVpZ2h0LWMrdCsicHgiLHRoaXMuc3R5bGUudG9wPSJhdXRvIik6KHRoaXMuc3R5bGUudG9wPU1hdGgubWF4KC1pLnRvcCxuKSsicHgiLHRoaXMuc3R5bGUuYm90dG9tPSJhdXRvIikpOih0aGlzLnN0eWxlLmxlZnQ9ZSsicHgiLHRoaXMuc3R5bGUudG9wPW4rInB4Iil9fSxfYWRkTGlzdGVuZXJzOmZ1bmN0aW9uKCl7dGhpcy5fdGFyZ2V0JiYodGhpcy5saXN0ZW4odGhpcy5fdGFyZ2V0LCJtb3VzZWVudGVyIiwic2hvdyIpLHRoaXMubGlzdGVuKHRoaXMuX3RhcmdldCwiZm9jdXMiLCJzaG93IiksdGhpcy5saXN0ZW4odGhpcy5fdGFyZ2V0LCJtb3VzZWxlYXZlIiwiaGlkZSIpLHRoaXMubGlzdGVuKHRoaXMuX3RhcmdldCwiYmx1ciIsImhpZGUiKSx0aGlzLmxpc3Rlbih0aGlzLl90YXJnZXQsInRhcCIsImhpZGUiKSksdGhpcy5saXN0ZW4odGhpcy4kLnRvb2x0aXAsImFuaW1hdGlvbmVuZCIsIl9vbkFuaW1hdGlvbkVuZCIpLHRoaXMubGlzdGVuKHRoaXMsIm1vdXNlZW50ZXIiLCJoaWRlIil9LF9maW5kVGFyZ2V0OmZ1bmN0aW9uKCl7dGhpcy5tYW51YWxNb2RlfHx0aGlzLl9yZW1vdmVMaXN0ZW5lcnMoKSx0aGlzLl90YXJnZXQ9dGhpcy50YXJnZXQsdGhpcy5tYW51YWxNb2RlfHx0aGlzLl9hZGRMaXN0ZW5lcnMoKX0sX2RlbGF5Q2hhbmdlOmZ1bmN0aW9uKHQpezUwMCE9PXQmJnRoaXMudXBkYXRlU3R5bGVzKHsiLS1wYXBlci10b29sdGlwLWRlbGF5LWluIjp0KyJtcyJ9KX0sX21hbnVhbE1vZGVDaGFuZ2VkOmZ1bmN0aW9uKCl7dGhpcy5tYW51YWxNb2RlP3RoaXMuX3JlbW92ZUxpc3RlbmVycygpOnRoaXMuX2FkZExpc3RlbmVycygpfSxfY2FuY2VsQW5pbWF0aW9uOmZ1bmN0aW9uKCl7dGhpcy4kLnRvb2x0aXAuY2xhc3NMaXN0LnJlbW92ZSh0aGlzLl9nZXRBbmltYXRpb25UeXBlKCJlbnRyeSIpKSx0aGlzLiQudG9vbHRpcC5jbGFzc0xpc3QucmVtb3ZlKHRoaXMuX2dldEFuaW1hdGlvblR5cGUoImV4aXQiKSksdGhpcy4kLnRvb2x0aXAuY2xhc3NMaXN0LnJlbW92ZSgiY2FuY2VsLWFuaW1hdGlvbiIpLHRoaXMuJC50b29sdGlwLmNsYXNzTGlzdC5hZGQoImhpZGRlbiIpfSxfb25BbmltYXRpb25GaW5pc2g6ZnVuY3Rpb24oKXt0aGlzLl9zaG93aW5nJiYodGhpcy4kLnRvb2x0aXAuY2xhc3NMaXN0LnJlbW92ZSh0aGlzLl9nZXRBbmltYXRpb25UeXBlKCJlbnRyeSIpKSx0aGlzLiQudG9vbHRpcC5jbGFzc0xpc3QucmVtb3ZlKCJjYW5jZWwtYW5pbWF0aW9uIiksdGhpcy4kLnRvb2x0aXAuY2xhc3NMaXN0LmFkZCh0aGlzLl9nZXRBbmltYXRpb25UeXBlKCJleGl0IikpKX0sX29uQW5pbWF0aW9uRW5kOmZ1bmN0aW9uKCl7dGhpcy5fYW5pbWF0aW9uUGxheWluZz0hMSx0aGlzLl9zaG93aW5nfHwodGhpcy4kLnRvb2x0aXAuY2xhc3NMaXN0LnJlbW92ZSh0aGlzLl9nZXRBbmltYXRpb25UeXBlKCJleGl0IikpLHRoaXMuJC50b29sdGlwLmNsYXNzTGlzdC5hZGQoImhpZGRlbiIpKX0sX2dldEFuaW1hdGlvblR5cGU6ZnVuY3Rpb24odCl7aWYoImVudHJ5Ij09PXQmJiIiIT09dGhpcy5hbmltYXRpb25FbnRyeSlyZXR1cm4gdGhpcy5hbmltYXRpb25FbnRyeTtpZigiZXhpdCI9PT10JiYiIiE9PXRoaXMuYW5pbWF0aW9uRXhpdClyZXR1cm4gdGhpcy5hbmltYXRpb25FeGl0O2lmKHRoaXMuYW5pbWF0aW9uQ29uZmlnW3RdJiYic3RyaW5nIj09dHlwZW9mIHRoaXMuYW5pbWF0aW9uQ29uZmlnW3RdWzBdLm5hbWUpe2lmKHRoaXMuYW5pbWF0aW9uQ29uZmlnW3RdWzBdLnRpbWluZyYmdGhpcy5hbmltYXRpb25Db25maWdbdF1bMF0udGltaW5nLmRlbGF5JiYwIT09dGhpcy5hbmltYXRpb25Db25maWdbdF1bMF0udGltaW5nLmRlbGF5KXt2YXIgZT10aGlzLmFuaW1hdGlvbkNvbmZpZ1t0XVswXS50aW1pbmcuZGVsYXk7ImVudHJ5Ij09PXQ/dGhpcy51cGRhdGVTdHlsZXMoeyItLXBhcGVyLXRvb2x0aXAtZGVsYXktaW4iOmUrIm1zIn0pOiJleGl0Ij09PXQmJnRoaXMudXBkYXRlU3R5bGVzKHsiLS1wYXBlci10b29sdGlwLWRlbGF5LW91dCI6ZSsibXMifSl9cmV0dXJuIHRoaXMuYW5pbWF0aW9uQ29uZmlnW3RdWzBdLm5hbWV9fSxfcmVtb3ZlTGlzdGVuZXJzOmZ1bmN0aW9uKCl7dGhpcy5fdGFyZ2V0JiYodGhpcy51bmxpc3Rlbih0aGlzLl90YXJnZXQsIm1vdXNlZW50ZXIiLCJzaG93IiksdGhpcy51bmxpc3Rlbih0aGlzLl90YXJnZXQsImZvY3VzIiwic2hvdyIpLHRoaXMudW5saXN0ZW4odGhpcy5fdGFyZ2V0LCJtb3VzZWxlYXZlIiwiaGlkZSIpLHRoaXMudW5saXN0ZW4odGhpcy5fdGFyZ2V0LCJibHVyIiwiaGlkZSIpLHRoaXMudW5saXN0ZW4odGhpcy5fdGFyZ2V0LCJ0YXAiLCJoaWRlIikpLHRoaXMudW5saXN0ZW4odGhpcy4kLnRvb2x0aXAsImFuaW1hdGlvbmVuZCIsIl9vbkFuaW1hdGlvbkVuZCIpLHRoaXMudW5saXN0ZW4odGhpcywibW91c2VlbnRlciIsImhpZGUiKX19KTtjbGFzcyBoc3tjb25zdHJ1Y3Rvcih0KXt0aGlzLmxpc3RlbmVyPXR9fWNvbnN0IGRzPW5ldyBTZXQscHM9bmV3IFNldDtmdW5jdGlvbiBmcyh0KXtjb25zdCBlPW5ldyBocyh0KTtyZXR1cm4gZHMuYWRkKGUpLGV9ZnVuY3Rpb24gbXModCl7Y29uc3QgZT1uZXcgaHModCk7cmV0dXJuIHBzLmFkZChlKSxlfWZ1bmN0aW9uIGdzKCl7cHMuZm9yRWFjaCgodD0+dC5saXN0ZW5lcigpKSl9ZnVuY3Rpb24gX3ModCl7ZHMuZGVsZXRlKHQpfWZ1bmN0aW9uIHlzKHQpe3BzLmRlbGV0ZSh0KX13aW5kb3cuYWRkRXZlbnRMaXN0ZW5lcigiaGFzaGNoYW5nZSIsKCgpPT57ZHMuZm9yRWFjaCgodD0+dC5saXN0ZW5lcigpKSl9KSksd2luZG93LmFkZEV2ZW50TGlzdGVuZXIoInN0b3JhZ2UiLCgoKT0+e3BzLmZvckVhY2goKHQ9PnQubGlzdGVuZXIoKSkpfSkpO2xldCB2cz0hMTtmdW5jdGlvbiBicygpe3JldHVybiB2c31sZXQgeHM9IiI7ZnVuY3Rpb24gd3ModCl7eHM9dH1mdW5jdGlvbiBTcygpe3JldHVybiB4c312YXIgTXM9T2JqZWN0LmZyZWV6ZSh7X19wcm90b19fOm51bGwsc2V0VXNlSGFzaDpmdW5jdGlvbiBFcyh0KXt2cz10fSx1c2VIYXNoOmJzLHNldEZha2VIYXNoOndzLGdldEZha2VIYXNoOlNzfSk7Y29uc3QgVHM9Il9fdGFiX18iO2xldCBBcz17fTtmdW5jdGlvbiBDcygpe3JldHVybiBBc31mcygoKCk9PntBcz10bChacygpKX0pKTtjb25zdHtnZXQ6a3Msc2V0OkxzLGdldEluaXRpYWxpemVyOlBzLGdldE9ic2VydmVyOklzLGRpc3Bvc2VCaW5kaW5nOk5zfT0kcygodD0+dCksKHQ9PnQpKSx7Z2V0Ok9zLHNldDpScyxnZXRJbml0aWFsaXplcjp6cyxnZXRPYnNlcnZlcjpEcyxkaXNwb3NlQmluZGluZzpCc309JHMoKHQ9PiJ0cnVlIj09PXR8fCJmYWxzZSIhPT10JiZ2b2lkIDApLCh0PT50LnRvU3RyaW5nKCkpKSx7Z2V0OkhzLHNldDpGcyxnZXRJbml0aWFsaXplcjpWcyxnZXRPYnNlcnZlcjpqcyxkaXNwb3NlQmluZGluZzpVc309JHMoKHQ9Pit0KSwodD0+dC50b1N0cmluZygpKSkse2dldDpHcyxzZXQ6V3MsZ2V0SW5pdGlhbGl6ZXI6cXMsZ2V0T2JzZXJ2ZXI6WXMsZGlzcG9zZUJpbmRpbmc6WHN9PSRzKCh0PT5KU09OLnBhcnNlKGF0b2IodCkpKSwodD0+YnRvYShKU09OLnN0cmluZ2lmeSh0KSkpKTtmdW5jdGlvbiAkcyh0LGUpe2NvbnN0IG49W10saT1bXTtmdW5jdGlvbiByKGUsbj17fSl7Y29uc3R7ZGVmYXVsdFZhbHVlOmksdXNlTG9jYWxTdG9yYWdlOnI9ITF9PW4sbz1yP3dpbmRvdy5sb2NhbFN0b3JhZ2UuZ2V0SXRlbShlKTp0bChacygpKVtlXTtyZXR1cm4gbnVsbD09bz93ZS5jbG9uZURlZXAoaSk6dChvKX1mdW5jdGlvbiBvKHQsbixpPXt9KXtjb25zdHtkZWZhdWx0VmFsdWU6byx1c2VMb2NhbFN0b3JhZ2U6YT0hMSx1c2VMb2NhdGlvblJlcGxhY2U6cz0hMX09aSxsPWUobik7aWYoYSl3aW5kb3cubG9jYWxTdG9yYWdlLnNldEl0ZW0odCxsKSxncygpO2Vsc2UgaWYoIXdlLmlzRXF1YWwobixyKHQse3VzZUxvY2FsU3RvcmFnZTphfSkpKWlmKHdlLmlzRXF1YWwobixvKSkhKGZ1bmN0aW9uIGModCl7Y29uc3QgZT10bChacygpKTtkZWxldGUgZVt0XSxKcyhRcyhlKSl9KSh0KTtlbHNle2NvbnN0IGU9dGwoWnMoKSk7ZVt0XT1sLEpzKFFzKGUpLHMpfX1yZXR1cm57Z2V0OnIsc2V0Om8sZ2V0SW5pdGlhbGl6ZXI6ZnVuY3Rpb24gYSh0LGUpe2NvbnN0IG89T2JqZWN0LmFzc2lnbih7ZGVmYXVsdFZhbHVlOmUuZGVmYXVsdFZhbHVlLHBvbHltZXJQcm9wZXJ0eTp0LHVzZUxvY2FsU3RvcmFnZTohMX0sZSk7cmV0dXJuIGZ1bmN0aW9uKCl7Y29uc3QgZT1Lcyh0aGlzLHQpLGE9KCk9Pntjb25zdCB0PXIoZSxvKTt3ZS5pc0VxdWFsKHQsdGhpc1tvLnBvbHltZXJQcm9wZXJ0eV0pfHwodGhpc1tvLnBvbHltZXJQcm9wZXJ0eV09dCl9LHM9KG8udXNlTG9jYWxTdG9yYWdlP21zOmZzKSgoKCk9PmEoKSkpO3JldHVybiBvLnVzZUxvY2FsU3RvcmFnZT9pLnB1c2gocyk6bi5wdXNoKHMpLGEoKSx0aGlzW28ucG9seW1lclByb3BlcnR5XX19LGdldE9ic2VydmVyOmZ1bmN0aW9uIHModCxlKXtjb25zdCBuPU9iamVjdC5hc3NpZ24oe2RlZmF1bHRWYWx1ZTplLmRlZmF1bHRWYWx1ZSxwb2x5bWVyUHJvcGVydHk6dCx1c2VMb2NhbFN0b3JhZ2U6ITF9LGUpO3JldHVybiBmdW5jdGlvbigpe28oS3ModGhpcyx0KSx0aGlzW24ucG9seW1lclByb3BlcnR5XSxuKX19LGRpc3Bvc2VCaW5kaW5nOmZ1bmN0aW9uIGwoKXtuLmZvckVhY2goKHQ9Pl9zKHQpKSksaS5mb3JFYWNoKCh0PT55cyh0KSkpfX19ZnVuY3Rpb24gS3ModCxlKXtjb25zdCBuPXQuZGlzYW1iaWd1YXRvcjtyZXR1cm4obnVsbD09bj9bZV06W24sZV0pLmpvaW4oIi4iKX1mdW5jdGlvbiBacygpe3JldHVybiBicygpP3dpbmRvdy5sb2NhdGlvbi5oYXNoLnNsaWNlKDEpOlNzKCl9ZnVuY3Rpb24gSnModCxlPSExKXtpZihicygpKWlmKGUpe2NvbnN0IGU9bmV3IFVSTCh3aW5kb3cubG9jYXRpb24uaHJlZik7ZS5oYXNoPXQsd2luZG93Lmhpc3RvcnkucmVwbGFjZVN0YXRlKG51bGwsIiIsZS50b1N0cmluZygpKX1lbHNlIHdpbmRvdy5sb2NhdGlvbi5oYXNoPXQ7ZWxzZSB3cyh0KX1mdW5jdGlvbiBRcyh0KXtsZXQgZT0iIjt2b2lkIDAhPT10W1RzXSYmKGUrPXRbVHNdKTtjb25zdCBuPU9iamVjdC5rZXlzKHQpLm1hcCgoZT0+W2UsdFtlXV0pKS5maWx0ZXIoKHQ9PnRbMF0hPT1UcykpLm1hcCgodD0+ZW5jb2RlVVJJQ29tcG9uZW50KHRbMF0pKyI9IitlbmNvZGVVUklDb21wb25lbnQodFsxXSkpKS5qb2luKCImIik7cmV0dXJuIG4ubGVuZ3RoPjA/ZSsiJiIrbjplfWZ1bmN0aW9uIHRsKHQpe2NvbnN0IGU9e307cmV0dXJuIHQuc3BsaXQoIiYiKS5mb3JFYWNoKCh0PT57Y29uc3Qgbj10LnNwbGl0KCI9Iik7MT09PW4ubGVuZ3RoP2VbVHNdPW5bMF06Mj09PW4ubGVuZ3RoJiYoZVtkZWNvZGVVUklDb21wb25lbnQoblswXSldPWRlY29kZVVSSUNvbXBvbmVudChuWzFdKSl9KSksZX1sZXQgZWw9Y2xhc3MgZXh0ZW5kcyB5ZXtjb25zdHJ1Y3Rvcigpe3N1cGVyKC4uLmFyZ3VtZW50cyksdGhpcy5fdGFnRmlsdGVyPVBzKCJ0YWdGaWx0ZXIiLHtkZWZhdWx0VmFsdWU6IiIsdXNlTG9jYWxTdG9yYWdlOiExLHBvbHltZXJQcm9wZXJ0eToiX3RhZ0ZpbHRlciJ9KS5jYWxsKHRoaXMpLHRoaXMuX3RhZ0ZpbHRlck9ic2VydmVyPUlzKCJ0YWdGaWx0ZXIiLHtkZWZhdWx0VmFsdWU6IiIsdXNlTG9jYWxTdG9yYWdlOiExLHBvbHltZXJQcm9wZXJ0eToiX3RhZ0ZpbHRlciJ9KX1fY29tcHV0ZVRhZ0ZpbHRlcigpe3JldHVybiB0aGlzLl90YWdGaWx0ZXJ9fTtmdW5jdGlvbiBubCh0KXtjb25zdHttb2R1bGVOYW1lOmUsc3R5bGVDb250ZW50Om59PXQsaT1kb2N1bWVudC5jcmVhdGVFbGVtZW50KCJkb20tbW9kdWxlIikscj1kb2N1bWVudC5jcmVhdGVFbGVtZW50KCJ0ZW1wbGF0ZSIpLG89W107dC5zdHlsZURlcGVuZGVuY2llcyYmdC5zdHlsZURlcGVuZGVuY2llcy5mb3JFYWNoKCh0PT57Y29uc3QgZT1kb2N1bWVudC5jcmVhdGVFbGVtZW50KCJzdHlsZSIpO2Uuc2V0QXR0cmlidXRlKCJpbmNsdWRlIix0KSxvLnB1c2goZSl9KSk7Y29uc3QgYT1kb2N1bWVudC5jcmVhdGVFbGVtZW50KCJzdHlsZSIpO09iamVjdC5hc3NpZ24oYSx7dGV4dENvbnRlbnQ6bn0pLG8uZm9yRWFjaCgodD0+e3IuY29udGVudC5hcHBlbmRDaGlsZCh0KX0pKSxyLmNvbnRlbnQuYXBwZW5kQ2hpbGQoYSksaS5hcHBlbmRDaGlsZChyKSxpLnJlZ2lzdGVyKGUpfWVsLnRlbXBsYXRlPV9lYAogICAgPHBhcGVyLWlucHV0CiAgICAgIG5vLWxhYmVsLWZsb2F0PSIiCiAgICAgIGxhYmVsPSJGaWx0ZXIgdGFncyAocmVndWxhciBleHByZXNzaW9ucyBzdXBwb3J0ZWQpIgogICAgICB2YWx1ZT0ie3tfdGFnRmlsdGVyfX0iCiAgICAgIGNsYXNzPSJzZWFyY2gtaW5wdXQiCiAgICA+CiAgICAgIDxpcm9uLWljb24gcHJlZml4PSIiIGljb249InNlYXJjaCIgc2xvdD0icHJlZml4Ij48L2lyb24taWNvbj4KICAgIDwvcGFwZXItaW5wdXQ+CiAgICA8c3R5bGU+CiAgICAgIDpob3N0IHsKICAgICAgICBkaXNwbGF5OiBibG9jazsKICAgICAgICBtYXJnaW46IDEwcHggNXB4IDEwcHggMTBweDsKICAgICAgfQogICAgPC9zdHlsZT4KICBgLHQoW28oe3R5cGU6U3RyaW5nLG5vdGlmeTohMCxjb21wdXRlZDoiX2NvbXB1dGVUYWdGaWx0ZXIoX3RhZ0ZpbHRlcikifSksZSgiZGVzaWduOnR5cGUiLFN0cmluZyldLGVsLnByb3RvdHlwZSwidGFnRmlsdGVyIix2b2lkIDApLHQoW28oe3R5cGU6U3RyaW5nLG9ic2VydmVyOiJfdGFnRmlsdGVyT2JzZXJ2ZXIifSksZSgiZGVzaWduOnR5cGUiLFN0cmluZyldLGVsLnByb3RvdHlwZSwiX3RhZ0ZpbHRlciIsdm9pZCAwKSxlbD10KFtpKCJ0Zi10YWctZmlsdGVyZXIiKV0sZWwpLG5sKHttb2R1bGVOYW1lOiJkYXNoYm9hcmQtc3R5bGUiLHN0eWxlRGVwZW5kZW5jaWVzOlsiaXJvbi1mbGV4Il0sc3R5bGVDb250ZW50OiJcbiAgICAgIDpob3N0IHtcbiAgICAgICAgLS1zaWRlYmFyLXZlcnRpY2FsLXBhZGRpbmc6IDE1cHg7XG4gICAgICAgIC0tc2lkZWJhci1sZWZ0LXBhZGRpbmc6IDMwcHg7XG4gICAgICB9XG5cbiAgICAgIFtzbG90PSdzaWRlYmFyJ10ge1xuICAgICAgICBib3gtc2l6aW5nOiBib3JkZXItYm94O1xuICAgICAgICBkaXNwbGF5OiBmbGV4O1xuICAgICAgICBmbGV4LWRpcmVjdGlvbjogY29sdW1uO1xuICAgICAgICBoZWlnaHQ6IDEwMCU7XG4gICAgICAgIG1hcmdpbi1yaWdodDogMTBweDtcbiAgICAgICAgb3ZlcmZsb3cteDogaGlkZGVuO1xuICAgICAgICBwYWRkaW5nOiA1cHggMDtcbiAgICAgICAgdGV4dC1vdmVyZmxvdzogZWxsaXBzaXM7XG4gICAgICB9XG5cbiAgICAgIC5zZXR0aW5ncyB7XG4gICAgICAgIG1pbi1oZWlnaHQ6IDUwcHg7XG4gICAgICAgIG92ZXJmbG93LXg6IGhpZGRlbjtcbiAgICAgICAgb3ZlcmZsb3cteTogYXV0bztcbiAgICAgICAgd2lsbC1jaGFuZ2U6IHRyYW5zZm9ybTtcbiAgICAgIH1cblxuICAgICAgLnJ1bnMtc2VsZWN0b3Ige1xuICAgICAgICBkaXNwbGF5OiBmbGV4O1xuICAgICAgICBmbGV4LWdyb3c6IDE7XG4gICAgICAgIG1pbi1oZWlnaHQ6IDIwMHB4O1xuICAgICAgfVxuXG4gICAgICB0Zi1ydW5zLXNlbGVjdG9yIHtcbiAgICAgICAgZmxleC1ncm93OiAxO1xuICAgICAgICBmbGV4LXNocmluazogMTtcbiAgICAgICAgbGVmdDogdmFyKC0tc2lkZWJhci1sZWZ0LXBhZGRpbmcpO1xuICAgICAgICBtYXgtaGVpZ2h0OiBjYWxjKDEwMCUgLSB2YXIoLS1zaWRlYmFyLXZlcnRpY2FsLXBhZGRpbmcpICogMik7XG4gICAgICAgIG92ZXJmbG93OiBoaWRkZW47XG4gICAgICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgICAgICAgcmlnaHQ6IDA7XG4gICAgICB9XG5cbiAgICAgIC5zZWFyY2gtaW5wdXQge1xuICAgICAgICBtYXJnaW46IDEwcHggNXB4IDAgMTBweDtcbiAgICAgIH1cblxuICAgICAgLnNpZGViYXItc2VjdGlvbiB7XG4gICAgICAgIGJvcmRlci10b3A6IHNvbGlkIDFweCByZ2JhKDAsIDAsIDAsIDAuMTIpO1xuICAgICAgICBtYXJnaW4tcmlnaHQ6IDEwcHg7XG4gICAgICAgIHBhZGRpbmc6IHZhcigtLXNpZGViYXItdmVydGljYWwtcGFkZGluZykgMFxuICAgICAgICAgIHZhcigtLXNpZGViYXItdmVydGljYWwtcGFkZGluZykgdmFyKC0tc2lkZWJhci1sZWZ0LXBhZGRpbmcpO1xuICAgICAgICBwb3NpdGlvbjogcmVsYXRpdmU7XG4gICAgICAgIG92ZXJmbG93OiBoaWRkZW47XG4gICAgICB9XG5cbiAgICAgIC5zaWRlYmFyLXNlY3Rpb246Zmlyc3Qtb2YtdHlwZSB7XG4gICAgICAgIGJvcmRlcjogbm9uZTtcbiAgICAgIH1cblxuICAgICAgLnNpZGViYXItc2VjdGlvbiBwYXBlci1idXR0b24ge1xuICAgICAgICBtYXJnaW46IDVweDtcbiAgICAgIH1cblxuICAgICAgLnNpZGViYXItc2VjdGlvbiBwYXBlci1idXR0b246Zmlyc3Qtb2YtdHlwZSB7XG4gICAgICAgIG1hcmdpbi1sZWZ0OiAwICFpbXBvcnRhbnQ7XG4gICAgICB9XG5cbiAgICAgIC5zaWRlYmFyLXNlY3Rpb24gcGFwZXItYnV0dG9uOmxhc3Qtb2YtdHlwZSB7XG4gICAgICAgIG1hcmdpbi1yaWdodDogMCAhaW1wb3J0YW50O1xuICAgICAgfVxuXG4gICAgICAuc2lkZWJhci1zZWN0aW9uID4gOmZpcnN0LWNoaWxkIHtcbiAgICAgICAgbWFyZ2luLXRvcDogMDtcbiAgICAgICAgcGFkZGluZy10b3A6IDA7XG4gICAgICB9XG5cbiAgICAgIC5zaWRlYmFyLXNlY3Rpb24gPiA6bGFzdC1jaGlsZCB7XG4gICAgICAgIG1hcmdpbi1ib3R0b206IDA7XG4gICAgICAgIHBhZGRpbmctYm90dG9tOiAwO1xuICAgICAgfVxuXG4gICAgICAuc2lkZWJhci1zZWN0aW9uIGgzIHtcbiAgICAgICAgY29sb3I6IHZhcigtLXBhcGVyLWdyZXktODAwKTtcbiAgICAgICAgZGlzcGxheTogYmxvY2s7XG4gICAgICAgIGZvbnQtc2l6ZTogMTRweDtcbiAgICAgICAgZm9udC13ZWlnaHQ6IG5vcm1hbDtcbiAgICAgICAgbWFyZ2luOiAxMHB4IDAgNXB4O1xuICAgICAgICBwb2ludGVyLWV2ZW50czogbm9uZTtcbiAgICAgIH1cblxuICAgICAgcGFwZXItY2hlY2tib3gge1xuICAgICAgICAtLXBhcGVyLWNoZWNrYm94LWNoZWNrZWQtY29sb3I6IHZhcigtLXRiLXVpLWRhcmstYWNjZW50KTtcbiAgICAgICAgLS1wYXBlci1jaGVja2JveC11bmNoZWNrZWQtY29sb3I6IHZhcigtLXRiLXVpLWRhcmstYWNjZW50KTtcbiAgICAgICAgZm9udC1zaXplOiAxNXB4O1xuICAgICAgICBtYXJnaW4tdG9wOiA1cHg7XG4gICAgICB9XG4gICJ9KTtjb25zdCBpbD1kb2N1bWVudC5jcmVhdGVFbGVtZW50KCJzdHlsZSIpO2lsLnNldEF0dHJpYnV0ZSgiaXMiLCJjdXN0b20tc3R5bGUiKSxpbC50ZXh0Q29udGVudD0iXG4gIDpyb290IHtcbiAgICAtLXRiLW9yYW5nZS13ZWFrOiAjZmZhNzI2O1xuICAgIC0tdGItb3JhbmdlLXN0cm9uZzogI2Y1N2MwMDtcbiAgICAtLXRiLW9yYW5nZS1kYXJrOiAjZGM3MzIwO1xuICAgIC0tdGItZ3JleS1kYXJrZXI6ICNlMmUyZTI7XG4gICAgLS10Yi1ncmV5LWxpZ2h0ZXI6ICNmM2YzZjM7XG4gICAgLS10Yi11aS1kYXJrLWFjY2VudDogIzc1NzU3NTtcbiAgICAtLXRiLXVpLWxpZ2h0LWFjY2VudDogI2UwZTBlMDtcbiAgICAtLXRiLWdyYXBoLWZhZGVkOiAjZTBkNGIzO1xuICB9XG4iLGRvY3VtZW50LmhlYWQuYXBwZW5kQ2hpbGQoaWwpLG5sKHttb2R1bGVOYW1lOiJzY3JvbGxiYXItc3R5bGUiLHN0eWxlQ29udGVudDoiXG4gICAgLnNjcm9sbGJhcjo6LXdlYmtpdC1zY3JvbGxiYXItdHJhY2sge1xuICAgICAgdmlzaWJpbGl0eTogaGlkZGVuO1xuICAgIH1cblxuICAgIC5zY3JvbGxiYXI6Oi13ZWJraXQtc2Nyb2xsYmFyIHtcbiAgICAgIHdpZHRoOiAxMHB4O1xuICAgIH1cblxuICAgIC5zY3JvbGxiYXI6Oi13ZWJraXQtc2Nyb2xsYmFyLXRodW1iIHtcbiAgICAgIGJvcmRlci1yYWRpdXM6IDEwcHg7XG4gICAgICAtd2Via2l0LWJveC1zaGFkb3c6IGluc2V0IDAgMCAycHggcmdiYSgwLCAwLCAwLCAwLjMpO1xuICAgICAgYmFja2dyb3VuZC1jb2xvcjogdmFyKC0tcGFwZXItZ3JleS01MDApO1xuICAgICAgY29sb3I6IHZhcigtLXBhcGVyLWdyZXktOTAwKTtcbiAgICB9XG4gICAgLnNjcm9sbGJhciB7XG4gICAgICBib3gtc2l6aW5nOiBib3JkZXItYm94O1xuICAgIH1cbiAgIn0pO2xldCBybD1jbGFzcyBleHRlbmRzIHlle307cmwudGVtcGxhdGU9X2VgCiAgICA8ZGl2IGlkPSJzaWRlYmFyIj4KICAgICAgPHNsb3QgbmFtZT0ic2lkZWJhciI+PC9zbG90PgogICAgPC9kaXY+CgogICAgPGRpdiBpZD0iY2VudGVyIj4KICAgICAgPHNsb3QgbmFtZT0iY2VudGVyIiBjbGFzcz0ic2NvbGxiYXIiPjwvc2xvdD4KICAgIDwvZGl2PgogICAgPHN0eWxlIGluY2x1ZGU9InNjcm9sbGJhci1zdHlsZSI+PC9zdHlsZT4KICAgIDxzdHlsZT4KICAgICAgOmhvc3QgewogICAgICAgIGRpc3BsYXk6IGZsZXg7CiAgICAgICAgZmxleC1kaXJlY3Rpb246IHJvdzsKICAgICAgICBoZWlnaHQ6IDEwMCU7CiAgICAgIH0KCiAgICAgICNzaWRlYmFyIHsKICAgICAgICBmbGV4OiAwIDAgdmFyKC0tdGYtZGFzaGJvYXJkLWxheW91dC1zaWRlYmFyLWJhc2lzLCAyNSUpOwogICAgICAgIGhlaWdodDogMTAwJTsKICAgICAgICBtYXgtd2lkdGg6IHZhcigtLXRmLWRhc2hib2FyZC1sYXlvdXQtc2lkZWJhci1tYXgtd2lkdGgsIDM1MHB4KTsKICAgICAgICBtaW4td2lkdGg6IHZhcigtLXRmLWRhc2hib2FyZC1sYXlvdXQtc2lkZWJhci1taW4td2lkdGgsIDI3MHB4KTsKICAgICAgICBvdmVyZmxvdy15OiBhdXRvOwogICAgICAgIHRleHQtb3ZlcmZsb3c6IGVsbGlwc2lzOwogICAgICB9CgogICAgICAjY2VudGVyIHsKICAgICAgICBmbGV4LWdyb3c6IDE7CiAgICAgICAgZmxleC1zaHJpbms6IDE7CiAgICAgICAgaGVpZ2h0OiAxMDAlOwogICAgICAgIG92ZXJmbG93OiBoaWRkZW47CiAgICAgIH0KCiAgICAgIDo6c2xvdHRlZChbc2xvdD0nY2VudGVyJ10pIHsKICAgICAgICBjb250YWluOiBzdHJpY3Q7CiAgICAgICAgaGVpZ2h0OiAxMDAlOwogICAgICAgIG92ZXJmbG93LXg6IGhpZGRlbjsKICAgICAgICBvdmVyZmxvdy15OiBhdXRvOwogICAgICAgIHdpZHRoOiAxMDAlOwogICAgICAgIHdpbGwtY2hhbmdlOiB0cmFuc2Zvcm07CiAgICAgIH0KCiAgICAgIC50Zi1ncmFwaC1kYXNoYm9hcmQgI2NlbnRlciB7CiAgICAgICAgYmFja2dyb3VuZDogI2ZmZjsKICAgICAgfQogICAgPC9zdHlsZT4KICBgLHJsPXQoW2koInRmLWRhc2hib2FyZC1sYXlvdXQiKV0scmwpO2NvbnN0IG9sPSJURi5UZW5zb3JCb2FyZC5QYWdpbmF0ZWRWaWV3LmxpbWl0IjtsZXQgYWw9bnVsbDtjb25zdCBzbD1uZXcgU2V0O2Z1bmN0aW9uIGxsKHQpe3NsLmFkZCh0KX1mdW5jdGlvbiBjbCh0KXtzbC5kZWxldGUodCl9ZnVuY3Rpb24gdWwoKXtyZXR1cm4gbnVsbD09YWwmJihhbD1IcyhvbCx7dXNlTG9jYWxTdG9yYWdlOiEwfSksKG51bGw9PWFsfHwhaXNGaW5pdGUoYWwpfHxhbDw9MCkmJihhbD0xMikpLGFsfWNsYXNzIGhsIGV4dGVuZHMgeWV7dXBkYXRlQXJyYXlQcm9wKHQsZSxuKXtsZXQgaT10aGlzLmdldCh0KTtjb25zdCByPWU7aWYoIUFycmF5LmlzQXJyYXkocikpdGhyb3cgUmFuZ2VFcnJvcihgRXhwZWN0ZWQgbmV3IHZhbHVlIHRvICcke3R9JyB0byBiZSBhbiBhcnJheS5gKTtBcnJheS5pc0FycmF5KGkpfHwoaT1bXSx0aGlzLnNldCh0LGkpKTtjb25zdCBvPW5ldyBTZXQoci5tYXAoKCh0LGUpPT5uKHQsZSkpKSk7bGV0IGE9MCxzPTA7Zm9yKDthPGkubGVuZ3RoJiZzPHIubGVuZ3RoOylvLmhhcyhuKGlbYV0sYSkpPyhuKGlbYV0sYSk9PW4ocltzXSxzKT90aGlzLnNldChgJHt0fS4ke2F9YCxyW3NdKTp0aGlzLnNwbGljZSh0LGEsMCxyW3NdKSxzKyssYSsrKTp0aGlzLnNwbGljZSh0LGEsMSk7YTxpLmxlbmd0aCYmdGhpcy5zcGxpY2UodCxhKSxzPHIubGVuZ3RoJiZ0aGlzLnB1c2godCwuLi5yLnNsaWNlKHMpKX19Y2xhc3MgZGwgZXh0ZW5kcyBobHtjb25zdHJ1Y3Rvcigpe3N1cGVyKC4uLmFyZ3VtZW50cyksdGhpcy5hcz0iaXRlbSIsdGhpcy5fY29udGVudEFjdGl2ZT0hMCx0aGlzLl9kb21Cb290c3RyYXBwZWQ9ITEsdGhpcy5fY3Rvcj1udWxsLHRoaXMuX3JlbmRlcmVkSXRlbXM9W10sdGhpcy5fcmVuZGVyZWRUZW1wbGF0ZUluc3Q9bmV3IE1hcCx0aGlzLl9scnVDYWNoZWRJdGVtcz1uZXcgTWFwLHRoaXMuX2NhY2hlU2l6ZT0xMCx0aGlzLl9nZXRJdGVtS2V5PXQ9PkpTT04uc3RyaW5naWZ5KHQpLHRoaXMuX2lzQ29ubmVjdGVkPSExfWNvbm5lY3RlZENhbGxiYWNrKCl7c3VwZXIuY29ubmVjdGVkQ2FsbGJhY2soKSx0aGlzLl9pc0Nvbm5lY3RlZD0hMH1zZXRDYWNoZVNpemUodCl7dGhpcy5fY2FjaGVTaXplPXR9c2V0R2V0SXRlbUtleSh0KXt0aGlzLl9nZXRJdGVtS2V5PXR9dXBkYXRlRG9tKHQpe3RoaXMudXBkYXRlQXJyYXlQcm9wKCJfcmVuZGVyZWRJdGVtcyIsdCx0aGlzLl9nZXRJdGVtS2V5KX1fZW5zdXJlVGVtcGxhdGl6ZWQoKXtpZighdGhpcy5pc0Nvbm5lY3RlZClyZXR1cm4hMTtpZighdGhpcy5fY3Rvcil7Y29uc3QgdD10aGlzLnF1ZXJ5U2VsZWN0b3IoInRlbXBsYXRlIik7dGhpcy5fY3Rvcj1Ycih0LHRoaXMse3BhcmVudE1vZGVsOiEwLGluc3RhbmNlUHJvcHM6e1t0aGlzLmFzXTohMCxhY3RpdmU6dGhpcy5fY29udGVudEFjdGl2ZX0sZm9yd2FyZEhvc3RQcm9wOmZ1bmN0aW9uKHQsZSl7dGhpcy5fcmVuZGVyZWRUZW1wbGF0ZUluc3QuZm9yRWFjaCgobj0+e24uZm9yd2FyZEhvc3RQcm9wKHQsZSl9KSl9fSl9cmV0dXJuITB9X2Jvb3RzdHJhcERvbSgpe3RoaXMuX2Vuc3VyZVRlbXBsYXRpemVkKCkmJiF0aGlzLl9kb21Cb290c3RyYXBwZWQmJihuZXcgTXV0YXRpb25PYnNlcnZlcigodD0+e2Zvcihjb25zdCBlIG9mIHQpaWYoImNoaWxkTGlzdCI9PT1lLnR5cGUpZm9yKGNvbnN0IHQgb2YgQXJyYXkuZnJvbShlLmFkZGVkTm9kZXMpKXQgaW5zdGFuY2VvZiBFbGVtZW50JiZ0LnNldEF0dHJpYnV0ZSgic2xvdCIsIml0ZW1zIil9KSkub2JzZXJ2ZSh0aGlzLHtjaGlsZExpc3Q6ITB9KSxBcnJheS5mcm9tKHRoaXMuY2hpbGRyZW4pLmZvckVhY2goKHQ9Pnt0aGlzLnJlbW92ZUNoaWxkKHQpfSkpLHRoaXMuX2xydUNhY2hlZEl0ZW1zLmNsZWFyKCksdGhpcy5fcmVuZGVyZWRJdGVtcy5mb3JFYWNoKCgodCxlKT0+dGhpcy5faW5zZXJ0SXRlbSh0LGUpKSksdGhpcy5fZG9tQm9vdHN0cmFwcGVkPSEwKX1fdXBkYXRlQWN0aXZlKCl7dGhpcy5fZG9tQm9vdHN0cmFwcGVkJiZBcnJheS5mcm9tKHRoaXMuX3JlbmRlcmVkVGVtcGxhdGVJbnN0LnZhbHVlcygpKS5mb3JFYWNoKCh0PT57dC5ub3RpZnlQYXRoKCJhY3RpdmUiLHRoaXMuX2NvbnRlbnRBY3RpdmUpfSkpfV91cGRhdGVEb20odCl7aWYodGhpcy5fZG9tQm9vdHN0cmFwcGVkJiYiX3JlbmRlcmVkSXRlbXMiIT10LnBhdGgmJiJfcmVuZGVyZWRJdGVtcy5sZW5ndGgiIT10LnBhdGgpaWYoIl9yZW5kZXJlZEl0ZW1zLnNwbGljZXMiPT09dC5wYXRoKXQudmFsdWUuaW5kZXhTcGxpY2VzLmZvckVhY2goKHQ9Pntjb25zdHtpbmRleDplLGFkZGVkQ291bnQ6bixvYmplY3Q6aSxyZW1vdmVkOnJ9PXQ7ci5mb3JFYWNoKCh0PT57dGhpcy5fcmVtb3ZlSXRlbSh0LHRoaXMuY2hpbGRyZW5bZV0pfSkpLGkuc2xpY2UoZSxlK24pLmZvckVhY2goKCh0LG4pPT50aGlzLl9pbnNlcnRJdGVtKHQsZStuKSkpLHRoaXMuX3RyaW1DYWNoZSgpfSkpO2Vsc2V7Y29uc3QgZT10aGlzLl9nZXRJdGVtS2V5KHQudmFsdWUpO3RoaXMuX3JlbmRlcmVkVGVtcGxhdGVJbnN0LmhhcyhlKT90aGlzLl9yZW5kZXJlZFRlbXBsYXRlSW5zdC5nZXQoZSkubm90aWZ5UGF0aCh0aGlzLmFzLHQudmFsdWUpOmNvbnNvbGUud2FybihgRXhwZWN0ZWQgJyR7ZX0nIHRvIGV4aXN0IGluIHRoZSBET00gYnV0IGNvdWxkIG5vdCBmaW5kIG9uZS5gKX19X2luc2VydEl0ZW0odCxlKXtpZighdGhpcy5fZW5zdXJlVGVtcGxhdGl6ZWQoKSl0aHJvdyBuZXcgRXJyb3IoIkV4cGVjdGVkIHRlbXBsYXRpemVkIGJlZm9yZSBpbnNlcnRpbmcgYW4gaXRlbSIpO2xldCBuO2NvbnN0IGk9dGhpcy5fZ2V0SXRlbUtleSh0KTtpZih0aGlzLl9scnVDYWNoZWRJdGVtcy5oYXMoaSkpbj10aGlzLl9scnVDYWNoZWRJdGVtcy5nZXQoaSksdGhpcy5fbHJ1Q2FjaGVkSXRlbXMuZGVsZXRlKGkpLHRoaXMuX3JlbmRlcmVkVGVtcGxhdGVJbnN0LmdldChpKS5ub3RpZnlQYXRoKCJhY3RpdmUiLHRoaXMuX2NvbnRlbnRBY3RpdmUpO2Vsc2V7Y29uc3QgZT1uZXcgdGhpcy5fY3Rvcih7W3RoaXMuYXNdOnQsYWN0aXZlOnRoaXMuX2NvbnRlbnRBY3RpdmV9KTtuPWUucm9vdCx0aGlzLl9yZW5kZXJlZFRlbXBsYXRlSW5zdC5zZXQoaSxlKX10aGlzLmNoaWxkcmVuW2VdP3RoaXMuaW5zZXJ0QmVmb3JlKG4sdGhpcy5jaGlsZHJlbltlXSk6KChuLm5vZGVUeXBlPT1Ob2RlLkRPQ1VNRU5UX0ZSQUdNRU5UX05PREU/QXJyYXkuZnJvbShuLmNoaWxkcmVuKTpbbl0pLmZvckVhY2goKHQ9PnQuc2V0QXR0cmlidXRlKCJzbG90IiwiaXRlbXMiKSkpLHRoaXMuYXBwZW5kQ2hpbGQobikpfV9yZW1vdmVJdGVtKHQsZSl7ZS5wYXJlbnROb2RlJiZlLnBhcmVudE5vZGUucmVtb3ZlQ2hpbGQoZSk7Y29uc3Qgbj10aGlzLl9nZXRJdGVtS2V5KHQpO3RoaXMuX2xydUNhY2hlZEl0ZW1zLnNldChuLGUpLHRoaXMuX3JlbmRlcmVkVGVtcGxhdGVJbnN0LmdldChuKS5ub3RpZnlQYXRoKCJhY3RpdmUiLCExKX1fdHJpbUNhY2hlKCl7Zm9yKDt0aGlzLl9scnVDYWNoZWRJdGVtcy5zaXplPnRoaXMuX2NhY2hlU2l6ZTspe2NvbnN0W3RdPXRoaXMuX2xydUNhY2hlZEl0ZW1zLmtleXMoKTt0aGlzLl9scnVDYWNoZWRJdGVtcy5kZWxldGUodCksdGhpcy5fcmVuZGVyZWRUZW1wbGF0ZUluc3QuZGVsZXRlKHQpfX19dChbbyh7dHlwZTpTdHJpbmd9KSxlKCJkZXNpZ246dHlwZSIsT2JqZWN0KV0sZGwucHJvdG90eXBlLCJhcyIsdm9pZCAwKSx0KFtvKHt0eXBlOkFycmF5fSksZSgiZGVzaWduOnR5cGUiLEFycmF5KV0sZGwucHJvdG90eXBlLCJpdGVtcyIsdm9pZCAwKSx0KFtvKHt0eXBlOkJvb2xlYW59KSxlKCJkZXNpZ246dHlwZSIsQm9vbGVhbildLGRsLnByb3RvdHlwZSwiX2NvbnRlbnRBY3RpdmUiLHZvaWQgMCksdChbbyh7dHlwZTpCb29sZWFufSksZSgiZGVzaWduOnR5cGUiLE9iamVjdCldLGRsLnByb3RvdHlwZSwiX2RvbUJvb3RzdHJhcHBlZCIsdm9pZCAwKSx0KFtvKHt0eXBlOk9iamVjdH0pLGUoImRlc2lnbjp0eXBlIixPYmplY3QpXSxkbC5wcm90b3R5cGUsIl9jdG9yIix2b2lkIDApLHQoW28oe3R5cGU6QXJyYXl9KSxlKCJkZXNpZ246dHlwZSIsQXJyYXkpXSxkbC5wcm90b3R5cGUsIl9yZW5kZXJlZEl0ZW1zIix2b2lkIDApLHQoW28oe3R5cGU6T2JqZWN0fSksZSgiZGVzaWduOnR5cGUiLE9iamVjdCldLGRsLnByb3RvdHlwZSwiX3JlbmRlcmVkVGVtcGxhdGVJbnN0Iix2b2lkIDApLHQoW28oe3R5cGU6T2JqZWN0fSksZSgiZGVzaWduOnR5cGUiLE9iamVjdCldLGRsLnByb3RvdHlwZSwiX2xydUNhY2hlZEl0ZW1zIix2b2lkIDApLHQoW28oe3R5cGU6TnVtYmVyfSksZSgiZGVzaWduOnR5cGUiLE9iamVjdCldLGRsLnByb3RvdHlwZSwiX2NhY2hlU2l6ZSIsdm9pZCAwKSx0KFtvKHt0eXBlOk9iamVjdH0pLGUoImRlc2lnbjp0eXBlIixPYmplY3QpXSxkbC5wcm90b3R5cGUsIl9nZXRJdGVtS2V5Iix2b2lkIDApLHQoW28oe3R5cGU6Qm9vbGVhbn0pLGUoImRlc2lnbjp0eXBlIixPYmplY3QpXSxkbC5wcm90b3R5cGUsIl9pc0Nvbm5lY3RlZCIsdm9pZCAwKSx0KFthKCJfaXNDb25uZWN0ZWQiKSxlKCJkZXNpZ246dHlwZSIsRnVuY3Rpb24pLGUoImRlc2lnbjpwYXJhbXR5cGVzIixbXSksZSgiZGVzaWduOnJldHVybnR5cGUiLHZvaWQgMCldLGRsLnByb3RvdHlwZSwiX2Jvb3RzdHJhcERvbSIsbnVsbCksdChbYSgiX2NvbnRlbnRBY3RpdmUiKSxlKCJkZXNpZ246dHlwZSIsRnVuY3Rpb24pLGUoImRlc2lnbjpwYXJhbXR5cGVzIixbXSksZSgiZGVzaWduOnJldHVybnR5cGUiLHZvaWQgMCldLGRsLnByb3RvdHlwZSwiX3VwZGF0ZUFjdGl2ZSIsbnVsbCksdChbYSgiX3JlbmRlcmVkSXRlbXMuKiIsIl9kb21Cb290c3RyYXBwZWQiKSxlKCJkZXNpZ246dHlwZSIsRnVuY3Rpb24pLGUoImRlc2lnbjpwYXJhbXR5cGVzIixbT2JqZWN0XSksZSgiZGVzaWduOnJldHVybnR5cGUiLHZvaWQgMCldLGRsLnByb3RvdHlwZSwiX3VwZGF0ZURvbSIsbnVsbCksdChbYSgiX2NhY2hlU2l6ZSIpLGUoImRlc2lnbjp0eXBlIixGdW5jdGlvbiksZSgiZGVzaWduOnBhcmFtdHlwZXMiLFtdKSxlKCJkZXNpZ246cmV0dXJudHlwZSIsdm9pZCAwKV0sZGwucHJvdG90eXBlLCJfdHJpbUNhY2hlIixudWxsKTtsZXQgcGw9Y2xhc3MgZXh0ZW5kcyBkbHtjb25zdHJ1Y3Rvcigpe3N1cGVyKC4uLmFyZ3VtZW50cyksdGhpcy5kaXNhYmxlUGFnaW5hdGlvbj0hMSx0aGlzLmdldENhdGVnb3J5SXRlbUtleT10PT5KU09OLnN0cmluZ2lmeSh0KSx0aGlzLl9saW1pdD0xMix0aGlzLl9hY3RpdmVJbmRleD0wLHRoaXMuX3BhZ2VJbnB1dFJhd1ZhbHVlPSIiLHRoaXMuX3BhZ2VJbnB1dEZvY3VzZWQ9ITF9X2NvbXB1dGVDb3VudCgpe3JldHVybiB0aGlzLmNhdGVnb3J5Lml0ZW1zLmxlbmd0aH1nZXQgX2hhc011bHRpcGxlKCl7cmV0dXJuIHRoaXMuX2NvdW50PjF9X3RvZ2dsZVBhbmUoKXt0aGlzLm9wZW5lZD0hdGhpcy5vcGVuZWR9X2NoYW5nZUNvbnRlbnRBY3RpdmUodCl7dGhpcy5fY29udGVudEFjdGl2ZT10fV9vblBhbmVSZW5kZXJlZENoYW5nZWQodCxlKXt0JiZ0IT09ZSYmdGhpcy4kLmlmUmVuZGVyZWQucmVuZGVyKCl9X2NvbXB1dGVQYW5lUmVuZGVyZWQodCl7cmV0dXJuISh0Lm1ldGFkYXRhLnR5cGU9PT12ci5TRUFSQ0hfUkVTVUxUUyYmIiI9PT10Lm5hbWUpfWdldCBfaXRlbXNSZW5kZXJlZCgpe3JldHVybiB0aGlzLl9wYW5lUmVuZGVyZWQmJnRoaXMub3BlbmVkfV9jb21wdXRlSXNTZWFyY2hSZXN1bHRzKHQpe3JldHVybiB0PT09dnIuU0VBUkNIX1JFU1VMVFN9X2NvbXB1dGVJc0ludmFsaWRTZWFyY2hSZXN1bHRzKHQpe3JldHVybiB0LnR5cGU9PT12ci5TRUFSQ0hfUkVTVUxUUyYmIXQudmFsaWRSZWdleH1fY29tcHV0ZUlzVW5pdmVyc2FsU2VhcmNoUXVlcnkodCl7cmV0dXJuIHQudHlwZT09PXZyLlNFQVJDSF9SRVNVTFRTJiZ0LnVuaXZlcnNhbFJlZ2V4fV9pc0NvbXBvc2l0ZVNlYXJjaCgpe2NvbnN0e3R5cGU6dCxjb21wb3NpdGVTZWFyY2g6ZX09dGhpcy5jYXRlZ29yeS5tZXRhZGF0YTtyZXR1cm4gZSYmdD09PXZyLlNFQVJDSF9SRVNVTFRTfXJlYWR5KCl7c3VwZXIucmVhZHkoKSx0aGlzLm9wZW5lZD1udWxsPT10aGlzLmluaXRpYWxPcGVuZWR8fHRoaXMuaW5pdGlhbE9wZW5lZCx0aGlzLl9saW1pdExpc3RlbmVyPSgpPT57dGhpcy5zZXQoIl9saW1pdCIsdWwoKSl9LGxsKHRoaXMuX2xpbWl0TGlzdGVuZXIpLHRoaXMuX2xpbWl0TGlzdGVuZXIoKX1kZXRhY2hlZCgpe2NsKHRoaXMuX2xpbWl0TGlzdGVuZXIpfV91cGRhdGVSZW5kZXJlZEl0ZW1zKCl7dmFyIHQ9dGhpcy5fbGltaXQsZT10aGlzLmRpc2FibGVQYWdpbmF0aW9uO2lmKCF0aGlzLl9pdGVtc1JlbmRlcmVkKXJldHVybjtjb25zdCBuPU1hdGguZmxvb3IodGhpcy5fYWN0aXZlSW5kZXgvdCksaT10aGlzLmNhdGVnb3J5Lml0ZW1zfHxbXSxyPWU/aTppLnNsaWNlKG4qdCwobisxKSp0KTt0aGlzLnVwZGF0ZURvbShyKX1fbGltaXRDaGFuZ2VkKHQpe3RoaXMuc2V0Q2FjaGVTaXplKDIqdCl9X2dldENhdGVnb3J5SXRlbUtleUNoYW5nZWQoKXt0aGlzLnNldEdldEl0ZW1LZXkodGhpcy5nZXRDYXRlZ29yeUl0ZW1LZXkpfWdldCBfY3VycmVudFBhZ2UoKXtyZXR1cm4gTWF0aC5mbG9vcih0aGlzLl9hY3RpdmVJbmRleC90aGlzLl9saW1pdCkrMX1fY29tcHV0ZVBhZ2VDb3VudCh0LGUpe3JldHVybiB0aGlzLmNhdGVnb3J5P01hdGguY2VpbCh0aGlzLmNhdGVnb3J5Lml0ZW1zLmxlbmd0aC9lKTowfWdldCBfbXVsdGlwbGVQYWdlc0V4aXN0KCl7cmV0dXJuIXRoaXMuZGlzYWJsZVBhZ2luYXRpb24mJnRoaXMuX3BhZ2VDb3VudD4xfWdldCBfaGFzUHJldmlvdXNQYWdlKCl7cmV0dXJuIHRoaXMuX2N1cnJlbnRQYWdlPjF9Z2V0IF9oYXNOZXh0UGFnZSgpe3JldHVybiB0aGlzLl9jdXJyZW50UGFnZTx0aGlzLl9wYWdlQ291bnR9X2NvbXB1dGVJbnB1dFdpZHRoKHQpe3JldHVybmBjYWxjKCR7dC50b1N0cmluZygpLmxlbmd0aH1lbSArIDIwcHgpYH1fc2V0QWN0aXZlSW5kZXgodCl7Y29uc3QgZT0odGhpcy5jYXRlZ29yeS5pdGVtc3x8W10pLmxlbmd0aC0xO3Q+ZSYmKHQ9ZSksdDwwJiYodD0wKSx0aGlzLnNldCgiX2FjdGl2ZUluZGV4Iix0KX1fY2xhbXBBY3RpdmVJbmRleCgpe3RoaXMuX3NldEFjdGl2ZUluZGV4KHRoaXMuX2FjdGl2ZUluZGV4KX1fcGVyZm9ybVByZXZpb3VzUGFnZSgpe3RoaXMuX3NldEFjdGl2ZUluZGV4KHRoaXMuX2FjdGl2ZUluZGV4LXRoaXMuX2xpbWl0KX1fcGVyZm9ybU5leHRQYWdlKCl7dGhpcy5fc2V0QWN0aXZlSW5kZXgodGhpcy5fYWN0aXZlSW5kZXgrdGhpcy5fbGltaXQpfV9jb21wdXRlUGFnZUlucHV0VmFsdWUodCxlLG4pe3JldHVybiB0P2U6bi50b1N0cmluZygpfV9oYW5kbGVQYWdlSW5wdXRFdmVudCh0KXt0aGlzLnNldCgiX3BhZ2VJbnB1dFJhd1ZhbHVlIix0LnRhcmdldC52YWx1ZSk7Y29uc3QgZT1OdW1iZXIodC50YXJnZXQudmFsdWV8fE5hTik7aWYoaXNOYU4oZSkpcmV0dXJuO2NvbnN0IG49TWF0aC5tYXgoMSxNYXRoLm1pbihlLHRoaXMuX3BhZ2VDb3VudCkpLTE7dGhpcy5fc2V0QWN0aXZlSW5kZXgodGhpcy5fbGltaXQqbil9X2hhbmRsZVBhZ2VDaGFuZ2VFdmVudCgpe3RoaXMuc2V0KCJfcGFnZUlucHV0UmF3VmFsdWUiLHRoaXMuX2N1cnJlbnRQYWdlLnRvU3RyaW5nKCkpfV9oYW5kbGVQYWdlRm9jdXNFdmVudCgpe3RoaXMuc2V0KCJfcGFnZUlucHV0UmF3VmFsdWUiLHRoaXMuX3BhZ2VJbnB1dFZhbHVlKSx0aGlzLnNldCgiX3BhZ2VJbnB1dEZvY3VzZWQiLCEwKX1faGFuZGxlUGFnZUJsdXJFdmVudCgpe3RoaXMuc2V0KCJfcGFnZUlucHV0Rm9jdXNlZCIsITEpfV91cGRhdGVQYWdlSW5wdXRWYWx1ZSh0KXtjb25zdCBlPXRoaXMuc2hhZG93Um9vdC5xdWVyeVNlbGVjdG9yKCIjcGFnZS1pbnB1dCBpbnB1dCIpO2UmJihlLnZhbHVlPXQpfV91cGRhdGVJbnB1dFdpZHRoKCl7dGhpcy51cGRhdGVTdHlsZXMoeyItLXRmLWNhdGVnb3J5LXBhZ2luYXRlZC12aWV3LXBhZ2UtaW5wdXQtd2lkdGgiOnRoaXMuX2lucHV0V2lkdGh9KX19O3BsLnRlbXBsYXRlPV9lYAogICAgPHRlbXBsYXRlIGlzPSJkb20taWYiIGlmPSJbW19wYW5lUmVuZGVyZWRdXSIgaWQ9ImlmUmVuZGVyZWQiPgogICAgICA8YnV0dG9uIGNsYXNzPSJoZWFkaW5nIiBvbi10YXA9Il90b2dnbGVQYW5lIiBvcGVuLWJ1dHRvbiQ9Iltbb3BlbmVkXV0iPgogICAgICAgIDxzcGFuIGNsYXNzPSJuYW1lIj4KICAgICAgICAgIDx0ZW1wbGF0ZSBpcz0iZG9tLWlmIiBpZj0iW1tfaXNTZWFyY2hSZXN1bHRzXV0iPgogICAgICAgICAgICA8dGVtcGxhdGUgaXM9ImRvbS1pZiIgaWY9IltbX2lzQ29tcG9zaXRlU2VhcmNoKGNhdGVnb3J5KV1dIj4KICAgICAgICAgICAgICA8c3Bhbj5UYWdzIG1hdGNoaW5nIG11bHRpcGxlIGV4cGVyaW1lbnRzPC9zcGFuPgogICAgICAgICAgICAgIDx0ZW1wbGF0ZSBpcz0iZG9tLWlmIiBpZj0iW1tfaXNJbnZhbGlkU2VhcmNoUmVzdWx0c11dIj4KICAgICAgICAgICAgICAgIDxzcGFuCiAgICAgICAgICAgICAgICAgID4mbmJzcDs8c3Ryb25nPihtYWxmb3JtZWQgcmVndWxhciBleHByZXNzaW9uKTwvc3Ryb25nPjwvc3BhbgogICAgICAgICAgICAgICAgPgogICAgICAgICAgICAgIDwvdGVtcGxhdGU+CiAgICAgICAgICAgIDwvdGVtcGxhdGU+CiAgICAgICAgICAgIDx0ZW1wbGF0ZSBpcz0iZG9tLWlmIiBpZj0iW1shX2lzQ29tcG9zaXRlU2VhcmNoKGNhdGVnb3J5KV1dIj4KICAgICAgICAgICAgICA8c3BhbiBjbGFzcz0ibGlnaHQiPlRhZ3MgbWF0Y2hpbmcgLzwvc3Bhbj4KICAgICAgICAgICAgICA8c3BhbiBjbGFzcz0iY2F0ZWdvcnktbmFtZSIgdGl0bGUkPSJbW2NhdGVnb3J5Lm5hbWVdXSIKICAgICAgICAgICAgICAgID5bW2NhdGVnb3J5Lm5hbWVdXTwvc3BhbgogICAgICAgICAgICAgID4KICAgICAgICAgICAgICA8c3BhbiBjbGFzcz0ibGlnaHQiPi88L3NwYW4+CiAgICAgICAgICAgICAgPHRlbXBsYXRlIGlzPSJkb20taWYiIGlmPSJbW19pc1VuaXZlcnNhbFNlYXJjaFF1ZXJ5XV0iPgogICAgICAgICAgICAgICAgPHNwYW4+IChhbGwgdGFncyk8L3NwYW4+CiAgICAgICAgICAgICAgPC90ZW1wbGF0ZT4KICAgICAgICAgICAgICA8dGVtcGxhdGUgaXM9ImRvbS1pZiIgaWY9IltbX2lzSW52YWxpZFNlYXJjaFJlc3VsdHNdXSI+CiAgICAgICAgICAgICAgICA8c3Bhbj4gPHN0cm9uZz4obWFsZm9ybWVkIHJlZ3VsYXIgZXhwcmVzc2lvbik8L3N0cm9uZz48L3NwYW4+CiAgICAgICAgICAgICAgPC90ZW1wbGF0ZT4KICAgICAgICAgICAgPC90ZW1wbGF0ZT4KICAgICAgICAgIDwvdGVtcGxhdGU+CiAgICAgICAgICA8dGVtcGxhdGUgaXM9ImRvbS1pZiIgaWY9IltbIV9pc1NlYXJjaFJlc3VsdHNdXSI+CiAgICAgICAgICAgIDxzcGFuIGNsYXNzPSJjYXRlZ29yeS1uYW1lIiB0aXRsZSQ9IltbY2F0ZWdvcnkubmFtZV1dIgogICAgICAgICAgICAgID5bW2NhdGVnb3J5Lm5hbWVdXTwvc3BhbgogICAgICAgICAgICA+CiAgICAgICAgICA8L3RlbXBsYXRlPgogICAgICAgIDwvc3Bhbj4KICAgICAgICA8c3BhbiBjbGFzcz0iY291bnQiPgogICAgICAgICAgPHRlbXBsYXRlIGlzPSJkb20taWYiIGlmPSJbW19oYXNNdWx0aXBsZV1dIj4KICAgICAgICAgICAgPHNwYW4+W1tfY291bnRdXTwvc3Bhbj4KICAgICAgICAgIDwvdGVtcGxhdGU+CiAgICAgICAgICA8aXJvbi1pY29uIGljb249ImV4cGFuZC1tb3JlIiBjbGFzcz0iZXhwYW5kLWFycm93Ij48L2lyb24taWNvbj4KICAgICAgICA8L3NwYW4+CiAgICAgIDwvYnV0dG9uPgogICAgICA8IS0tIFRPRE8oc3RlcGhhbndsZWUpOiBpbnZlc3RpZ2F0ZSBmdXJ0aGVyLiBGb3Igc29tZSByZWFzb24sCiAgICAgICAgdHJhbnNpdGlvbmVuZCB0aGF0IHRoZSBpcm9uLWNvbGxhcHNlIHJlbGllcyBvbiBzb21ldGltZXMgZG9lcyBub3QKICAgICAgICB0cmlnZ2VyIHdoZW4gcmVuZGVyaW5nIGEgY2hhcnQgd2l0aCBhIHNwaW5uZXIuIEEgdG95IGV4YW1wbGUgY2Fubm90CiAgICAgICAgcmVwcm9kdWNlIHRoaXMgYnVnLiAtLT4KICAgICAgPGlyb24tY29sbGFwc2Ugb3BlbmVkPSJbW29wZW5lZF1dIiBuby1hbmltYXRpb249IiI+CiAgICAgICAgPGRpdiBjbGFzcz0iY29udGVudCI+CiAgICAgICAgICA8c3BhbiBpZD0idG9wLW9mLWNvbnRhaW5lciI+PC9zcGFuPgogICAgICAgICAgPHRlbXBsYXRlIGlzPSJkb20taWYiIGlmPSJbW19tdWx0aXBsZVBhZ2VzRXhpc3RdXSI+CiAgICAgICAgICAgIDxkaXYgY2xhc3M9ImJpZy1wYWdlLWJ1dHRvbnMiIHN0eWxlPSJtYXJnaW4tYm90dG9tOiAxMHB4OyI+CiAgICAgICAgICAgICAgPHBhcGVyLWJ1dHRvbgogICAgICAgICAgICAgICAgb24tdGFwPSJfcGVyZm9ybVByZXZpb3VzUGFnZSIKICAgICAgICAgICAgICAgIGRpc2FibGVkJD0iW1shX2hhc1ByZXZpb3VzUGFnZV1dIgogICAgICAgICAgICAgICAgPlByZXZpb3VzIHBhZ2U8L3BhcGVyLWJ1dHRvbgogICAgICAgICAgICAgID4KICAgICAgICAgICAgICA8cGFwZXItYnV0dG9uCiAgICAgICAgICAgICAgICBvbi10YXA9Il9wZXJmb3JtTmV4dFBhZ2UiCiAgICAgICAgICAgICAgICBkaXNhYmxlZCQ9IltbIV9oYXNOZXh0UGFnZV1dIgogICAgICAgICAgICAgICAgPk5leHQgcGFnZTwvcGFwZXItYnV0dG9uCiAgICAgICAgICAgICAgPgogICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgIDwvdGVtcGxhdGU+CgogICAgICAgICAgPGRpdiBpZD0iaXRlbXMiPgogICAgICAgICAgICA8c2xvdCBuYW1lPSJpdGVtcyI+PC9zbG90PgogICAgICAgICAgPC9kaXY+CiAgICAgICAgICA8dGVtcGxhdGUgaXM9ImRvbS1pZiIgaWY9IltbX211bHRpcGxlUGFnZXNFeGlzdF1dIj4KICAgICAgICAgICAgPGRpdiBpZD0iY29udHJvbHMtY29udGFpbmVyIj4KICAgICAgICAgICAgICA8ZGl2IHN0eWxlPSJkaXNwbGF5OiBpbmxpbmUtYmxvY2s7IHBhZGRpbmc6IDAgNXB4Ij4KICAgICAgICAgICAgICAgIFBhZ2UKICAgICAgICAgICAgICAgIDxwYXBlci1pbnB1dAogICAgICAgICAgICAgICAgICBpZD0icGFnZS1pbnB1dCIKICAgICAgICAgICAgICAgICAgdHlwZT0ibnVtYmVyIgogICAgICAgICAgICAgICAgICBuby1sYWJlbC1mbG9hdD0iIgogICAgICAgICAgICAgICAgICBtaW49IjEiCiAgICAgICAgICAgICAgICAgIG1heD0iW1tfcGFnZUNvdW50XV0iCiAgICAgICAgICAgICAgICAgIHZhbHVlPSJbW19wYWdlSW5wdXRWYWx1ZV1dIgogICAgICAgICAgICAgICAgICBvbi1pbnB1dD0iX2hhbmRsZVBhZ2VJbnB1dEV2ZW50IgogICAgICAgICAgICAgICAgICBvbi1jaGFuZ2U9Il9oYW5kbGVQYWdlQ2hhbmdlRXZlbnQiCiAgICAgICAgICAgICAgICAgIG9uLWZvY3VzPSJfaGFuZGxlUGFnZUZvY3VzRXZlbnQiCiAgICAgICAgICAgICAgICAgIG9uLWJsdXI9Il9oYW5kbGVQYWdlQmx1ckV2ZW50IgogICAgICAgICAgICAgICAgPjwvcGFwZXItaW5wdXQ+CiAgICAgICAgICAgICAgICBvZiBbW19wYWdlQ291bnRdXQogICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICA8L2Rpdj4KCiAgICAgICAgICAgIDxkaXYgY2xhc3M9ImJpZy1wYWdlLWJ1dHRvbnMiIHN0eWxlPSJtYXJnaW4tdG9wOiAxMHB4OyI+CiAgICAgICAgICAgICAgPHBhcGVyLWJ1dHRvbgogICAgICAgICAgICAgICAgb24tdGFwPSJfcGVyZm9ybVByZXZpb3VzUGFnZSIKICAgICAgICAgICAgICAgIGRpc2FibGVkJD0iW1shX2hhc1ByZXZpb3VzUGFnZV1dIgogICAgICAgICAgICAgICAgPlByZXZpb3VzIHBhZ2U8L3BhcGVyLWJ1dHRvbgogICAgICAgICAgICAgID4KICAgICAgICAgICAgICA8cGFwZXItYnV0dG9uCiAgICAgICAgICAgICAgICBvbi10YXA9Il9wZXJmb3JtTmV4dFBhZ2UiCiAgICAgICAgICAgICAgICBkaXNhYmxlZCQ9IltbIV9oYXNOZXh0UGFnZV1dIgogICAgICAgICAgICAgICAgPk5leHQgcGFnZTwvcGFwZXItYnV0dG9uCiAgICAgICAgICAgICAgPgogICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgIDwvdGVtcGxhdGU+CiAgICAgICAgPC9kaXY+CiAgICAgIDwvaXJvbi1jb2xsYXBzZT4KICAgIDwvdGVtcGxhdGU+CiAgICA8c3R5bGU+CiAgICAgIDpob3N0IHsKICAgICAgICBkaXNwbGF5OiBibG9jazsKICAgICAgICBtYXJnaW46IDAgNXB4IDFweCAxMHB4OwogICAgICB9CgogICAgICA6aG9zdCg6Zmlyc3Qtb2YtdHlwZSkgewogICAgICAgIG1hcmdpbi10b3A6IDEwcHg7CiAgICAgIH0KCiAgICAgIDpob3N0KDpsYXN0LW9mLXR5cGUpIHsKICAgICAgICBtYXJnaW4tYm90dG9tOiAyMHB4OwogICAgICB9CgogICAgICAuaGVhZGluZyB7CiAgICAgICAgYmFja2dyb3VuZC1jb2xvcjogd2hpdGU7CiAgICAgICAgYm9yZGVyOiBub25lOwogICAgICAgIGN1cnNvcjogcG9pbnRlcjsKICAgICAgICB3aWR0aDogMTAwJTsKICAgICAgICBmb250LXNpemU6IDE1cHg7CiAgICAgICAgbGluZS1oZWlnaHQ6IDE7CiAgICAgICAgYm94LXNoYWRvdzogMCAxcHggNXB4IHJnYmEoMCwgMCwgMCwgMC4yKTsKICAgICAgICBwYWRkaW5nOiAxMHB4IDE1cHg7CiAgICAgICAgZGlzcGxheTogZmxleDsKICAgICAgICBhbGlnbi1pdGVtczogY2VudGVyOwogICAgICAgIGp1c3RpZnktY29udGVudDogc3BhY2UtYmV0d2VlbjsKICAgICAgfQoKICAgICAgLmhlYWRpbmc6Oi1tb3otZm9jdXMtaW5uZXIgewogICAgICAgIHBhZGRpbmc6IDEwcHggMTVweDsKICAgICAgfQoKICAgICAgW29wZW4tYnV0dG9uXSB7CiAgICAgICAgYm9yZGVyLWJvdHRvbS1sZWZ0LXJhZGl1czogMCAhaW1wb3J0YW50OwogICAgICAgIGJvcmRlci1ib3R0b20tcmlnaHQtcmFkaXVzOiAwICFpbXBvcnRhbnQ7CiAgICAgIH0KCiAgICAgIFtvcGVuLWJ1dHRvbl0gLmV4cGFuZC1hcnJvdyB7CiAgICAgICAgdHJhbnNmb3JtOiByb3RhdGVaKDE4MGRlZyk7CiAgICAgIH0KCiAgICAgIC5uYW1lIHsKICAgICAgICBkaXNwbGF5OiBpbmxpbmUtZmxleDsKICAgICAgICBvdmVyZmxvdzogaGlkZGVuOwogICAgICB9CgogICAgICAubGlnaHQgewogICAgICAgIGNvbG9yOiB2YXIoLS1wYXBlci1ncmV5LTUwMCk7CiAgICAgIH0KCiAgICAgIC5jYXRlZ29yeS1uYW1lIHsKICAgICAgICB3aGl0ZS1zcGFjZTogcHJlOwogICAgICAgIG92ZXJmbG93OiBoaWRkZW47CiAgICAgICAgdGV4dC1vdmVyZmxvdzogZWxsaXBzaXM7CiAgICAgICAgcGFkZGluZzogMnB4IDA7CiAgICAgIH0KCiAgICAgIC5jb3VudCB7CiAgICAgICAgbWFyZ2luOiAwIDVweDsKICAgICAgICBmb250LXNpemU6IDEycHg7CiAgICAgICAgY29sb3I6IHZhcigtLXBhcGVyLWdyZXktNTAwKTsKICAgICAgICBkaXNwbGF5OiBmbGV4OwogICAgICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7CiAgICAgICAgZmxleDogbm9uZTsKICAgICAgfQoKICAgICAgLmhlYWRpbmc6Oi1tb3otZm9jdXMtaW5uZXIgewogICAgICAgIHBhZGRpbmc6IDEwcHggMTVweDsKICAgICAgfQoKICAgICAgLmNvbnRlbnQgewogICAgICAgIGRpc3BsYXk6IGZsZXg7CiAgICAgICAgZmxleC1kaXJlY3Rpb246IGNvbHVtbjsKICAgICAgICBiYWNrZ3JvdW5kOiB3aGl0ZTsKICAgICAgICBib3JkZXItYm90dG9tLWxlZnQtcmFkaXVzOiAycHg7CiAgICAgICAgYm9yZGVyLWJvdHRvbS1yaWdodC1yYWRpdXM6IDJweDsKICAgICAgICBib3JkZXItdG9wOiBub25lOwogICAgICAgIGJvcmRlcjogMXB4IHNvbGlkICNkZWRlZGU7CiAgICAgICAgcGFkZGluZzogMTVweDsKICAgICAgfQoKICAgICAgLmxpZ2h0IHsKICAgICAgICBjb2xvcjogdmFyKC0tcGFwZXItZ3JleS01MDApOwogICAgICB9CgogICAgICAjY29udHJvbHMtY29udGFpbmVyIHsKICAgICAgICBqdXN0aWZ5LWNvbnRlbnQ6IGNlbnRlcjsKICAgICAgICBkaXNwbGF5OiBmbGV4OwogICAgICAgIGZsZXgtZGlyZWN0aW9uOiByb3c7CiAgICAgICAgZmxleC1ncm93OiAwOwogICAgICAgIGZsZXgtc2hyaW5rOiAwOwogICAgICAgIHdpZHRoOiAxMDAlOwogICAgICB9CgogICAgICAjY29udHJvbHMtY29udGFpbmVyIHBhcGVyLWJ1dHRvbiB7CiAgICAgICAgZGlzcGxheTogaW5saW5lLWJsb2NrOwogICAgICB9CgogICAgICAuYmlnLXBhZ2UtYnV0dG9ucyB7CiAgICAgICAgZGlzcGxheTogZmxleDsKICAgICAgfQoKICAgICAgLmJpZy1wYWdlLWJ1dHRvbnMgcGFwZXItYnV0dG9uIHsKICAgICAgICBiYWNrZ3JvdW5kLWNvbG9yOiB2YXIoLS10Yi11aS1saWdodC1hY2NlbnQpOwogICAgICAgIGNvbG9yOiB2YXIoLS10Yi11aS1kYXJrLWFjY2VudCk7CiAgICAgICAgZGlzcGxheTogaW5saW5lLWJsb2NrOwogICAgICAgIGZsZXgtYmFzaXM6IDA7CiAgICAgICAgZmxleC1ncm93OiAxOwogICAgICAgIGZsZXgtc2hyaW5rOiAxOwogICAgICAgIGZvbnQtc2l6ZTogMTNweDsKICAgICAgfQoKICAgICAgLmJpZy1wYWdlLWJ1dHRvbnMgcGFwZXItYnV0dG9uW2Rpc2FibGVkXSB7CiAgICAgICAgYmFja2dyb3VuZDogbm9uZTsKICAgICAgfQoKICAgICAgc2xvdCB7CiAgICAgICAgZGlzcGxheTogZmxleDsKICAgICAgICBmbGV4LWRpcmVjdGlvbjogcm93OwogICAgICAgIGZsZXgtd3JhcDogd3JhcDsKICAgICAgfQoKICAgICAgOjpzbG90dGVkKFtzbG90PSdpdGVtcyddKSB7CiAgICAgICAgLyogVG9vbHRpcCBmb3IgZGVzY3JpcHRpb25zIGFuZCBvdGhlcnMgYnJlYWsgd2l0aCBtb3JlIHN0cmljdCBvbmVzLiAqLwogICAgICAgIGNvbnRhaW46IHN0eWxlOwogICAgICB9CgogICAgICAjcGFnZS1pbnB1dCB7CiAgICAgICAgZGlzcGxheTogaW5saW5lLWJsb2NrOwogICAgICAgIHdpZHRoOiB2YXIoLS10Zi1jYXRlZ29yeS1wYWdpbmF0ZWQtdmlldy1wYWdlLWlucHV0LXdpZHRoLCAxMDAlKTsKICAgICAgfQogICAgPC9zdHlsZT4KICBgLHQoW28oe3R5cGU6T2JqZWN0fSksZSgiZGVzaWduOnR5cGUiLE9iamVjdCldLHBsLnByb3RvdHlwZSwiY2F0ZWdvcnkiLHZvaWQgMCksdChbbyh7dHlwZTpCb29sZWFufSksZSgiZGVzaWduOnR5cGUiLEJvb2xlYW4pXSxwbC5wcm90b3R5cGUsImluaXRpYWxPcGVuZWQiLHZvaWQgMCksdChbbyh7dHlwZTpCb29sZWFuLG5vdGlmeTohMH0pLGUoImRlc2lnbjp0eXBlIixCb29sZWFuKV0scGwucHJvdG90eXBlLCJvcGVuZWQiLHZvaWQgMCksdChbbyh7dHlwZTpCb29sZWFufSksZSgiZGVzaWduOnR5cGUiLEJvb2xlYW4pXSxwbC5wcm90b3R5cGUsImRpc2FibGVQYWdpbmF0aW9uIix2b2lkIDApLHQoW28oe3R5cGU6TnVtYmVyLGNvbXB1dGVkOiJfY29tcHV0ZUNvdW50KGNhdGVnb3J5Lml0ZW1zLiopIn0pLGUoImRlc2lnbjp0eXBlIixOdW1iZXIpXSxwbC5wcm90b3R5cGUsIl9jb3VudCIsdm9pZCAwKSx0KFtvKHt0eXBlOkJvb2xlYW4sY29tcHV0ZWQ6Il9jb21wdXRlUGFuZVJlbmRlcmVkKGNhdGVnb3J5KSIsb2JzZXJ2ZXI6Il9vblBhbmVSZW5kZXJlZENoYW5nZWQifSksZSgiZGVzaWduOnR5cGUiLEJvb2xlYW4pXSxwbC5wcm90b3R5cGUsIl9wYW5lUmVuZGVyZWQiLHZvaWQgMCksdChbbyh7dHlwZTpCb29sZWFuLGNvbXB1dGVkOiJfY29tcHV0ZUlzU2VhcmNoUmVzdWx0cyhjYXRlZ29yeS5tZXRhZGF0YS50eXBlKSJ9KSxlKCJkZXNpZ246dHlwZSIsQm9vbGVhbildLHBsLnByb3RvdHlwZSwiX2lzU2VhcmNoUmVzdWx0cyIsdm9pZCAwKSx0KFtvKHt0eXBlOkJvb2xlYW4sY29tcHV0ZWQ6Il9jb21wdXRlSXNJbnZhbGlkU2VhcmNoUmVzdWx0cyhjYXRlZ29yeS5tZXRhZGF0YSkifSksZSgiZGVzaWduOnR5cGUiLEJvb2xlYW4pXSxwbC5wcm90b3R5cGUsIl9pc0ludmFsaWRTZWFyY2hSZXN1bHRzIix2b2lkIDApLHQoW28oe3R5cGU6Qm9vbGVhbixjb21wdXRlZDoiX2NvbXB1dGVJc1VuaXZlcnNhbFNlYXJjaFF1ZXJ5KGNhdGVnb3J5Lm1ldGFkYXRhKSJ9KSxlKCJkZXNpZ246dHlwZSIsQm9vbGVhbildLHBsLnByb3RvdHlwZSwiX2lzVW5pdmVyc2FsU2VhcmNoUXVlcnkiLHZvaWQgMCksdChbbyh7dHlwZTpPYmplY3Qsb2JzZXJ2ZXI6Il9nZXRDYXRlZ29yeUl0ZW1LZXlDaGFuZ2VkIn0pLGUoImRlc2lnbjp0eXBlIixPYmplY3QpXSxwbC5wcm90b3R5cGUsImdldENhdGVnb3J5SXRlbUtleSIsdm9pZCAwKSx0KFtvKHt0eXBlOk51bWJlcixvYnNlcnZlcjoiX2xpbWl0Q2hhbmdlZCJ9KSxlKCJkZXNpZ246dHlwZSIsTnVtYmVyKV0scGwucHJvdG90eXBlLCJfbGltaXQiLHZvaWQgMCksdChbbyh7dHlwZTpOdW1iZXJ9KSxlKCJkZXNpZ246dHlwZSIsTnVtYmVyKV0scGwucHJvdG90eXBlLCJfYWN0aXZlSW5kZXgiLHZvaWQgMCksdChbbyh7dHlwZTpOdW1iZXIsY29tcHV0ZWQ6Il9jb21wdXRlUGFnZUNvdW50KGNhdGVnb3J5Lml0ZW1zLiosIF9saW1pdCkifSksZSgiZGVzaWduOnR5cGUiLE51bWJlcildLHBsLnByb3RvdHlwZSwiX3BhZ2VDb3VudCIsdm9pZCAwKSx0KFtvKHt0eXBlOlN0cmluZyxjb21wdXRlZDoiX2NvbXB1dGVJbnB1dFdpZHRoKF9wYWdlQ291bnQpIixvYnNlcnZlcjoiX3VwZGF0ZUlucHV0V2lkdGgifSksZSgiZGVzaWduOnR5cGUiLFN0cmluZyldLHBsLnByb3RvdHlwZSwiX2lucHV0V2lkdGgiLHZvaWQgMCksdChbbyh7dHlwZTpTdHJpbmcsY29tcHV0ZWQ6Il9jb21wdXRlUGFnZUlucHV0VmFsdWUoX3BhZ2VJbnB1dEZvY3VzZWQsIF9wYWdlSW5wdXRSYXdWYWx1ZSwgX2N1cnJlbnRQYWdlKSIsb2JzZXJ2ZXI6Il91cGRhdGVQYWdlSW5wdXRWYWx1ZSJ9KSxlKCJkZXNpZ246dHlwZSIsU3RyaW5nKV0scGwucHJvdG90eXBlLCJfcGFnZUlucHV0VmFsdWUiLHZvaWQgMCksdChbbyh7dHlwZTpTdHJpbmd9KSxlKCJkZXNpZ246dHlwZSIsU3RyaW5nKV0scGwucHJvdG90eXBlLCJfcGFnZUlucHV0UmF3VmFsdWUiLHZvaWQgMCksdChbbyh7dHlwZTpCb29sZWFufSksZSgiZGVzaWduOnR5cGUiLEJvb2xlYW4pXSxwbC5wcm90b3R5cGUsIl9wYWdlSW5wdXRGb2N1c2VkIix2b2lkIDApLHQoW3MoIl9jb3VudCIpLGUoImRlc2lnbjp0eXBlIixCb29sZWFuKSxlKCJkZXNpZ246cGFyYW10eXBlcyIsW10pXSxwbC5wcm90b3R5cGUsIl9oYXNNdWx0aXBsZSIsbnVsbCksdChbYSgib3BlbmVkIiksZSgiZGVzaWduOnR5cGUiLEZ1bmN0aW9uKSxlKCJkZXNpZ246cGFyYW10eXBlcyIsW0Jvb2xlYW5dKSxlKCJkZXNpZ246cmV0dXJudHlwZSIsdm9pZCAwKV0scGwucHJvdG90eXBlLCJfY2hhbmdlQ29udGVudEFjdGl2ZSIsbnVsbCksdChbcygib3BlbmVkIiwiX3BhbmVSZW5kZXJlZCIpLGUoImRlc2lnbjp0eXBlIixCb29sZWFuKSxlKCJkZXNpZ246cGFyYW10eXBlcyIsW10pXSxwbC5wcm90b3R5cGUsIl9pdGVtc1JlbmRlcmVkIixudWxsKSx0KFthKCJfaXRlbXNSZW5kZXJlZCIsImNhdGVnb3J5Lml0ZW1zLioiLCJfbGltaXQiLCJfYWN0aXZlSW5kZXgiLCJfcGFnZUNvdW50IiwiZGlzYWJsZVBhZ2luYXRpb24iKSxlKCJkZXNpZ246dHlwZSIsRnVuY3Rpb24pLGUoImRlc2lnbjpwYXJhbXR5cGVzIixbXSksZSgiZGVzaWduOnJldHVybnR5cGUiLHZvaWQgMCldLHBsLnByb3RvdHlwZSwiX3VwZGF0ZVJlbmRlcmVkSXRlbXMiLG51bGwpLHQoW3MoIl9saW1pdCIsIl9hY3RpdmVJbmRleCIpLGUoImRlc2lnbjp0eXBlIixOdW1iZXIpLGUoImRlc2lnbjpwYXJhbXR5cGVzIixbXSldLHBsLnByb3RvdHlwZSwiX2N1cnJlbnRQYWdlIixudWxsKSx0KFtzKCJfcGFnZUNvdW50IiwiZGlzYWJsZVBhZ2luYXRpb24iKSxlKCJkZXNpZ246dHlwZSIsQm9vbGVhbiksZSgiZGVzaWduOnBhcmFtdHlwZXMiLFtdKV0scGwucHJvdG90eXBlLCJfbXVsdGlwbGVQYWdlc0V4aXN0IixudWxsKSx0KFtzKCJfY3VycmVudFBhZ2UiKSxlKCJkZXNpZ246dHlwZSIsQm9vbGVhbiksZSgiZGVzaWduOnBhcmFtdHlwZXMiLFtdKV0scGwucHJvdG90eXBlLCJfaGFzUHJldmlvdXNQYWdlIixudWxsKSx0KFtzKCJfY3VycmVudFBhZ2UiLCJfcGFnZUNvdW50IiksZSgiZGVzaWduOnR5cGUiLEJvb2xlYW4pLGUoImRlc2lnbjpwYXJhbXR5cGVzIixbXSldLHBsLnByb3RvdHlwZSwiX2hhc05leHRQYWdlIixudWxsKSx0KFthKCJjYXRlZ29yeS5pdGVtcy4qIiksZSgiZGVzaWduOnR5cGUiLEZ1bmN0aW9uKSxlKCJkZXNpZ246cGFyYW10eXBlcyIsW10pLGUoImRlc2lnbjpyZXR1cm50eXBlIix2b2lkIDApXSxwbC5wcm90b3R5cGUsIl9jbGFtcEFjdGl2ZUluZGV4IixudWxsKSxwbD10KFtpKCJ0Zi1jYXRlZ29yeS1wYWdpbmF0ZWQtdmlldyIpXSxwbCk7Y2xhc3MgZmx7Y29uc3RydWN0b3IodCl7dGhpcy5saXN0ZW5lcj10fX1jbGFzcyBtbHtjb25zdHJ1Y3Rvcigpe3RoaXMucmVxdWVzdE1hbmFnZXI9bmV3IGhyKDEpLHRoaXMuX2xpc3RlbmVycz1uZXcgU2V0LHRoaXMuaW5pdGlhbGl6ZWQ9ITF9cmVmcmVzaCgpe3JldHVybiB0aGlzLmxvYWQoKS50aGVuKCgoKT0+e3RoaXMuaW5pdGlhbGl6ZWQ9ITB9KSl9YWRkTGlzdGVuZXIodCl7Y29uc3QgZT1uZXcgZmwodCk7cmV0dXJuIHRoaXMuX2xpc3RlbmVycy5hZGQoZSksZX1yZW1vdmVMaXN0ZW5lckJ5S2V5KHQpe3RoaXMuX2xpc3RlbmVycy5kZWxldGUodCl9ZW1pdENoYW5nZSgpe3RoaXMuX2xpc3RlbmVycy5mb3JFYWNoKCh0PT57dHJ5e3QubGlzdGVuZXIoKX1jYXRjaCh0KXt9fSkpfX1jbGFzcyBnbCBleHRlbmRzIG1se2xvYWQoKXtjb25zdCB0PWdyKCkuZW52aXJvbm1lbnQoKTtyZXR1cm4gdGhpcy5yZXF1ZXN0TWFuYWdlci5yZXF1ZXN0KHQpLnRoZW4oKHQ9Pntjb25zdCBlPXtkYXRhTG9jYXRpb246dC5kYXRhX2xvY2F0aW9uLHdpbmRvd1RpdGxlOnQud2luZG93X3RpdGxlfTt2b2lkIDAhPT10LmV4cGVyaW1lbnRfbmFtZSYmKGUuZXhwZXJpbWVudE5hbWU9dC5leHBlcmltZW50X25hbWUpLHZvaWQgMCE9PXQuZXhwZXJpbWVudF9kZXNjcmlwdGlvbiYmKGUuZXhwZXJpbWVudERlc2NyaXB0aW9uPXQuZXhwZXJpbWVudF9kZXNjcmlwdGlvbiksdm9pZCAwIT09dC5jcmVhdGlvbl90aW1lJiYoZS5jcmVhdGlvblRpbWU9dC5jcmVhdGlvbl90aW1lKSx3ZS5pc0VxdWFsKHRoaXMuZW52aXJvbm1lbnQsZSl8fCh0aGlzLmVudmlyb25tZW50PWUsdGhpcy5lbWl0Q2hhbmdlKCkpfSkpfWdldERhdGFMb2NhdGlvbigpe3JldHVybiB0aGlzLmVudmlyb25tZW50P3RoaXMuZW52aXJvbm1lbnQuZGF0YUxvY2F0aW9uOiIifWdldFdpbmRvd1RpdGxlKCl7cmV0dXJuIHRoaXMuZW52aXJvbm1lbnQ/dGhpcy5lbnZpcm9ubWVudC53aW5kb3dUaXRsZToiIn1nZXRFeHBlcmltZW50TmFtZSgpe3JldHVybiB0aGlzLmVudmlyb25tZW50P3RoaXMuZW52aXJvbm1lbnQuZXhwZXJpbWVudE5hbWU6IiJ9Z2V0RXhwZXJpbWVudERlc2NyaXB0aW9uKCl7cmV0dXJuIHRoaXMuZW52aXJvbm1lbnQ/dGhpcy5lbnZpcm9ubWVudC5leHBlcmltZW50RGVzY3JpcHRpb246IiJ9Z2V0Q3JlYXRpb25UaW1lKCl7cmV0dXJuIHRoaXMuZW52aXJvbm1lbnQ/dGhpcy5lbnZpcm9ubWVudC5jcmVhdGlvblRpbWU6bnVsbH19Y29uc3QgX2w9bmV3IGdsO2NsYXNzIHlsIGV4dGVuZHMgbWx7Y29uc3RydWN0b3IoKXtzdXBlciguLi5hcmd1bWVudHMpLHRoaXMuX3J1bnM9W119bG9hZCgpe2NvbnN0IHQ9Z3IoKS5ydW5zKCk7cmV0dXJuIHRoaXMucmVxdWVzdE1hbmFnZXIucmVxdWVzdCh0KS50aGVuKCh0PT57d2UuaXNFcXVhbCh0aGlzLl9ydW5zLHQpfHwodGhpcy5fcnVucz10LHRoaXMuZW1pdENoYW5nZSgpKX0pKX1nZXRSdW5zKCl7cmV0dXJuIHRoaXMuX3J1bnMuc2xpY2UoKX19Y29uc3Qgdmw9bmV3IHlsO2Z1bmN0aW9uIGJsKHQsZSl7cmV0dXJuIHQ8ZT8tMTp0PmU/MTp0Pj1lPzA6TmFOfWZ1bmN0aW9uIHhsKHQpe3JldHVybiAxPT09dC5sZW5ndGgmJih0PShmdW5jdGlvbiBlKHQpe3JldHVybiBmdW5jdGlvbihlLG4pe3JldHVybiBibCh0KGUpLG4pfX0pKHQpKSx7bGVmdDpmdW5jdGlvbihlLG4saSxyKXtmb3IobnVsbD09aSYmKGk9MCksbnVsbD09ciYmKHI9ZS5sZW5ndGgpO2k8cjspe3ZhciBvPWkrcj4+PjE7dChlW29dLG4pPDA/aT1vKzE6cj1vfXJldHVybiBpfSxyaWdodDpmdW5jdGlvbihlLG4saSxyKXtmb3IobnVsbD09aSYmKGk9MCksbnVsbD09ciYmKHI9ZS5sZW5ndGgpO2k8cjspe3ZhciBvPWkrcj4+PjE7dChlW29dLG4pPjA/cj1vOmk9bysxfXJldHVybiBpfX19dmFyIHdsPXhsKGJsKSxTbD13bC5yaWdodCxNbD13bC5sZWZ0O2Z1bmN0aW9uIEVsKHQsZSl7cmV0dXJuW3QsZV19ZnVuY3Rpb24gVGwodCxlLG4pe3ZhciBpLHIsbyxhLHM9dC5sZW5ndGgsbD1lLmxlbmd0aCxjPW5ldyBBcnJheShzKmwpO2ZvcihudWxsPT1uJiYobj1FbCksaT1vPTA7aTxzOysraSlmb3IoYT10W2ldLHI9MDtyPGw7KytyLCsrbyljW29dPW4oYSxlW3JdKTtyZXR1cm4gY31mdW5jdGlvbiBBbCh0KXtyZXR1cm4gbnVsbD09PXQ/TmFOOit0fWZ1bmN0aW9uIENsKHQsZSl7dmFyIG4saSxyPXQubGVuZ3RoLG89MCxhPS0xLHM9MCxsPTA7aWYobnVsbD09ZSlmb3IoOysrYTxyOylpc05hTihuPUFsKHRbYV0pKXx8KGwrPShpPW4tcykqKG4tKHMrPWkvKytvKSkpO2Vsc2UgZm9yKDsrK2E8cjspaXNOYU4obj1BbChlKHRbYV0sYSx0KSkpfHwobCs9KGk9bi1zKSoobi0ocys9aS8rK28pKSk7aWYobz4xKXJldHVybiBsLyhvLTEpfWZ1bmN0aW9uIGtsKHQsZSl7dmFyIG49Q2wodCxlKTtyZXR1cm4gbj9NYXRoLnNxcnQobik6bn1mdW5jdGlvbiBMbCh0LGUpe3ZhciBuLGkscixvPXQubGVuZ3RoLGE9LTE7aWYobnVsbD09ZSl7Zm9yKDsrK2E8bzspaWYobnVsbCE9KG49dFthXSkmJm4+PW4pZm9yKGk9cj1uOysrYTxvOyludWxsIT0obj10W2FdKSYmKGk+biYmKGk9bikscjxuJiYocj1uKSl9ZWxzZSBmb3IoOysrYTxvOylpZihudWxsIT0obj1lKHRbYV0sYSx0KSkmJm4+PW4pZm9yKGk9cj1uOysrYTxvOyludWxsIT0obj1lKHRbYV0sYSx0KSkmJihpPm4mJihpPW4pLHI8biYmKHI9bikpO3JldHVybltpLHJdfXZhciBQbD1BcnJheS5wcm90b3R5cGUsSWw9UGwuc2xpY2UsTmw9UGwubWFwO2Z1bmN0aW9uIE9sKHQpe3JldHVybiBmdW5jdGlvbigpe3JldHVybiB0fX1mdW5jdGlvbiBSbCh0KXtyZXR1cm4gdH1mdW5jdGlvbiB6bCh0LGUsbil7dD0rdCxlPStlLG49KHI9YXJndW1lbnRzLmxlbmd0aCk8Mj8oZT10LHQ9MCwxKTpyPDM/MTorbjtmb3IodmFyIGk9LTEscj0wfE1hdGgubWF4KDAsTWF0aC5jZWlsKChlLXQpL24pKSxvPW5ldyBBcnJheShyKTsrK2k8cjspb1tpXT10K2kqbjtyZXR1cm4gb312YXIgRGw9TWF0aC5zcXJ0KDUwKSxCbD1NYXRoLnNxcnQoMTApLEhsPU1hdGguc3FydCgyKTtmdW5jdGlvbiBGbCh0LGUsbil7dmFyIGkscixvLGEscz0tMTtpZihuPStuLCh0PSt0KT09KGU9K2UpJiZuPjApcmV0dXJuW3RdO2lmKChpPWU8dCkmJihyPXQsdD1lLGU9ciksMD09PShhPVZsKHQsZSxuKSl8fCFpc0Zpbml0ZShhKSlyZXR1cm5bXTtpZihhPjApZm9yKHQ9TWF0aC5jZWlsKHQvYSksZT1NYXRoLmZsb29yKGUvYSksbz1uZXcgQXJyYXkocj1NYXRoLmNlaWwoZS10KzEpKTsrK3M8cjspb1tzXT0odCtzKSphO2Vsc2UgZm9yKHQ9TWF0aC5mbG9vcih0KmEpLGU9TWF0aC5jZWlsKGUqYSksbz1uZXcgQXJyYXkocj1NYXRoLmNlaWwodC1lKzEpKTsrK3M8cjspb1tzXT0odC1zKS9hO3JldHVybiBpJiZvLnJldmVyc2UoKSxvfWZ1bmN0aW9uIFZsKHQsZSxuKXt2YXIgaT0oZS10KS9NYXRoLm1heCgwLG4pLHI9TWF0aC5mbG9vcihNYXRoLmxvZyhpKS9NYXRoLkxOMTApLG89aS9NYXRoLnBvdygxMCxyKTtyZXR1cm4gcj49MD8obz49RGw/MTA6bz49Qmw/NTpvPj1IbD8yOjEpKk1hdGgucG93KDEwLHIpOi1NYXRoLnBvdygxMCwtcikvKG8+PURsPzEwOm8+PUJsPzU6bz49SGw/MjoxKX1mdW5jdGlvbiBqbCh0LGUsbil7dmFyIGk9TWF0aC5hYnMoZS10KS9NYXRoLm1heCgwLG4pLHI9TWF0aC5wb3coMTAsTWF0aC5mbG9vcihNYXRoLmxvZyhpKS9NYXRoLkxOMTApKSxvPWkvcjtyZXR1cm4gbz49RGw/cio9MTA6bz49Qmw/cio9NTpvPj1IbCYmKHIqPTIpLGU8dD8tcjpyfWZ1bmN0aW9uIFVsKHQpe3JldHVybiBNYXRoLmNlaWwoTWF0aC5sb2codC5sZW5ndGgpL01hdGguTE4yKSsxfWZ1bmN0aW9uIEdsKHQsZSxuKXtpZihudWxsPT1uJiYobj1BbCksaT10Lmxlbmd0aCl7aWYoKGU9K2UpPD0wfHxpPDIpcmV0dXJuK24odFswXSwwLHQpO2lmKGU+PTEpcmV0dXJuK24odFtpLTFdLGktMSx0KTt2YXIgaSxyPShpLTEpKmUsbz1NYXRoLmZsb29yKHIpLGE9K24odFtvXSxvLHQpO3JldHVybiBhKygrbih0W28rMV0sbysxLHQpLWEpKihyLW8pfX1mdW5jdGlvbiBXbCh0LGUpe3ZhciBuLGkscj10Lmxlbmd0aCxvPS0xO2lmKG51bGw9PWUpe2Zvcig7KytvPHI7KWlmKG51bGwhPShuPXRbb10pJiZuPj1uKWZvcihpPW47KytvPHI7KW51bGwhPShuPXRbb10pJiZuPmkmJihpPW4pfWVsc2UgZm9yKDsrK288cjspaWYobnVsbCE9KG49ZSh0W29dLG8sdCkpJiZuPj1uKWZvcihpPW47KytvPHI7KW51bGwhPShuPWUodFtvXSxvLHQpKSYmbj5pJiYoaT1uKTtyZXR1cm4gaX1mdW5jdGlvbiBxbCh0KXtmb3IodmFyIGUsbixpLHI9dC5sZW5ndGgsbz0tMSxhPTA7KytvPHI7KWErPXRbb10ubGVuZ3RoO2ZvcihuPW5ldyBBcnJheShhKTstLXI+PTA7KWZvcihlPShpPXRbcl0pLmxlbmd0aDstLWU+PTA7KW5bLS1hXT1pW2VdO3JldHVybiBufWZ1bmN0aW9uIFlsKHQsZSl7dmFyIG4saSxyPXQubGVuZ3RoLG89LTE7aWYobnVsbD09ZSl7Zm9yKDsrK288cjspaWYobnVsbCE9KG49dFtvXSkmJm4+PW4pZm9yKGk9bjsrK288cjspbnVsbCE9KG49dFtvXSkmJmk+biYmKGk9bil9ZWxzZSBmb3IoOysrbzxyOylpZihudWxsIT0obj1lKHRbb10sbyx0KSkmJm4+PW4pZm9yKGk9bjsrK288cjspbnVsbCE9KG49ZSh0W29dLG8sdCkpJiZpPm4mJihpPW4pO3JldHVybiBpfWZ1bmN0aW9uIFhsKHQpe2lmKCEocj10Lmxlbmd0aCkpcmV0dXJuW107Zm9yKHZhciBlPS0xLG49WWwodCwkbCksaT1uZXcgQXJyYXkobik7KytlPG47KWZvcih2YXIgcixvPS0xLGE9aVtlXT1uZXcgQXJyYXkocik7KytvPHI7KWFbb109dFtvXVtlXTtyZXR1cm4gaX1mdW5jdGlvbiAkbCh0KXtyZXR1cm4gdC5sZW5ndGh9dmFyIEtsPUFycmF5LnByb3RvdHlwZS5zbGljZTtmdW5jdGlvbiBabCh0KXtyZXR1cm4gdH12YXIgSmw9MWUtNjtmdW5jdGlvbiBRbCh0KXtyZXR1cm4idHJhbnNsYXRlKCIrKHQrLjUpKyIsMCkifWZ1bmN0aW9uIHRjKHQpe3JldHVybiJ0cmFuc2xhdGUoMCwiKyh0Ky41KSsiKSJ9ZnVuY3Rpb24gZWModCl7cmV0dXJuIGZ1bmN0aW9uKGUpe3JldHVybit0KGUpfX1mdW5jdGlvbiBuYyh0KXt2YXIgZT1NYXRoLm1heCgwLHQuYmFuZHdpZHRoKCktMSkvMjtyZXR1cm4gdC5yb3VuZCgpJiYoZT1NYXRoLnJvdW5kKGUpKSxmdW5jdGlvbihuKXtyZXR1cm4rdChuKStlfX1mdW5jdGlvbiBpYygpe3JldHVybiF0aGlzLl9fYXhpc31mdW5jdGlvbiByYyh0LGUpe3ZhciBuPVtdLGk9bnVsbCxyPW51bGwsbz02LGE9NixzPTMsbD0xPT09dHx8ND09PXQ/LTE6MSxjPTQ9PT10fHwyPT09dD8ieCI6InkiLHU9MT09PXR8fDM9PT10P1FsOnRjO2Z1bmN0aW9uIGgoaCl7dmFyIGQ9bnVsbD09aT9lLnRpY2tzP2UudGlja3MuYXBwbHkoZSxuKTplLmRvbWFpbigpOmkscD1udWxsPT1yP2UudGlja0Zvcm1hdD9lLnRpY2tGb3JtYXQuYXBwbHkoZSxuKTpabDpyLGY9TWF0aC5tYXgobywwKStzLG09ZS5yYW5nZSgpLGc9K21bMF0rLjUsXz0rbVttLmxlbmd0aC0xXSsuNSx5PShlLmJhbmR3aWR0aD9uYzplYykoZS5jb3B5KCkpLHY9aC5zZWxlY3Rpb24/aC5zZWxlY3Rpb24oKTpoLGI9di5zZWxlY3RBbGwoIi5kb21haW4iKS5kYXRhKFtudWxsXSkseD12LnNlbGVjdEFsbCgiLnRpY2siKS5kYXRhKGQsZSkub3JkZXIoKSx3PXguZXhpdCgpLFM9eC5lbnRlcigpLmFwcGVuZCgiZyIpLmF0dHIoImNsYXNzIiwidGljayIpLE09eC5zZWxlY3QoImxpbmUiKSxFPXguc2VsZWN0KCJ0ZXh0Iik7Yj1iLm1lcmdlKGIuZW50ZXIoKS5pbnNlcnQoInBhdGgiLCIudGljayIpLmF0dHIoImNsYXNzIiwiZG9tYWluIikuYXR0cigic3Ryb2tlIiwiY3VycmVudENvbG9yIikpLHg9eC5tZXJnZShTKSxNPU0ubWVyZ2UoUy5hcHBlbmQoImxpbmUiKS5hdHRyKCJzdHJva2UiLCJjdXJyZW50Q29sb3IiKS5hdHRyKGMrIjIiLGwqbykpLEU9RS5tZXJnZShTLmFwcGVuZCgidGV4dCIpLmF0dHIoImZpbGwiLCJjdXJyZW50Q29sb3IiKS5hdHRyKGMsbCpmKS5hdHRyKCJkeSIsMT09PXQ/IjBlbSI6Mz09PXQ/IjAuNzFlbSI6IjAuMzJlbSIpKSxoIT09diYmKGI9Yi50cmFuc2l0aW9uKGgpLHg9eC50cmFuc2l0aW9uKGgpLE09TS50cmFuc2l0aW9uKGgpLEU9RS50cmFuc2l0aW9uKGgpLHc9dy50cmFuc2l0aW9uKGgpLmF0dHIoIm9wYWNpdHkiLEpsKS5hdHRyKCJ0cmFuc2Zvcm0iLChmdW5jdGlvbih0KXtyZXR1cm4gaXNGaW5pdGUodD15KHQpKT91KHQpOnRoaXMuZ2V0QXR0cmlidXRlKCJ0cmFuc2Zvcm0iKX0pKSxTLmF0dHIoIm9wYWNpdHkiLEpsKS5hdHRyKCJ0cmFuc2Zvcm0iLChmdW5jdGlvbih0KXt2YXIgZT10aGlzLnBhcmVudE5vZGUuX19heGlzO3JldHVybiB1KGUmJmlzRmluaXRlKGU9ZSh0KSk/ZTp5KHQpKX0pKSksdy5yZW1vdmUoKSxiLmF0dHIoImQiLDQ9PT10fHwyPT10P2E/Ik0iK2wqYSsiLCIrZysiSDAuNVYiK18rIkgiK2wqYToiTTAuNSwiK2crIlYiK186YT8iTSIrZysiLCIrbCphKyJWMC41SCIrXysiViIrbCphOiJNIitnKyIsMC41SCIrXykseC5hdHRyKCJvcGFjaXR5IiwxKS5hdHRyKCJ0cmFuc2Zvcm0iLChmdW5jdGlvbih0KXtyZXR1cm4gdSh5KHQpKX0pKSxNLmF0dHIoYysiMiIsbCpvKSxFLmF0dHIoYyxsKmYpLnRleHQocCksdi5maWx0ZXIoaWMpLmF0dHIoImZpbGwiLCJub25lIikuYXR0cigiZm9udC1zaXplIiwxMCkuYXR0cigiZm9udC1mYW1pbHkiLCJzYW5zLXNlcmlmIikuYXR0cigidGV4dC1hbmNob3IiLDI9PT10PyJzdGFydCI6ND09PXQ/ImVuZCI6Im1pZGRsZSIpLHYuZWFjaCgoZnVuY3Rpb24oKXt0aGlzLl9fYXhpcz15fSkpfXJldHVybiBoLnNjYWxlPWZ1bmN0aW9uKHQpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyhlPXQsaCk6ZX0saC50aWNrcz1mdW5jdGlvbigpe3JldHVybiBuPUtsLmNhbGwoYXJndW1lbnRzKSxofSxoLnRpY2tBcmd1bWVudHM9ZnVuY3Rpb24odCl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KG49bnVsbD09dD9bXTpLbC5jYWxsKHQpLGgpOm4uc2xpY2UoKX0saC50aWNrVmFsdWVzPWZ1bmN0aW9uKHQpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyhpPW51bGw9PXQ/bnVsbDpLbC5jYWxsKHQpLGgpOmkmJmkuc2xpY2UoKX0saC50aWNrRm9ybWF0PWZ1bmN0aW9uKHQpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyhyPXQsaCk6cn0saC50aWNrU2l6ZT1mdW5jdGlvbih0KXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8obz1hPSt0LGgpOm99LGgudGlja1NpemVJbm5lcj1mdW5jdGlvbih0KXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8obz0rdCxoKTpvfSxoLnRpY2tTaXplT3V0ZXI9ZnVuY3Rpb24odCl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KGE9K3QsaCk6YX0saC50aWNrUGFkZGluZz1mdW5jdGlvbih0KXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8ocz0rdCxoKTpzfSxofWZ1bmN0aW9uIG9jKHQpe3JldHVybiByYygzLHQpfWZ1bmN0aW9uIGFjKHQpe3JldHVybiByYyg0LHQpfXZhciBzYz17dmFsdWU6ZnVuY3Rpb24oKXt9fTtmdW5jdGlvbiBsYygpe2Zvcih2YXIgdCxlPTAsbj1hcmd1bWVudHMubGVuZ3RoLGk9e307ZTxuOysrZSl7aWYoISh0PWFyZ3VtZW50c1tlXSsiIil8fHQgaW4gaXx8L1tccy5dLy50ZXN0KHQpKXRocm93IG5ldyBFcnJvcigiaWxsZWdhbCB0eXBlOiAiK3QpO2lbdF09W119cmV0dXJuIG5ldyBjYyhpKX1mdW5jdGlvbiBjYyh0KXt0aGlzLl89dH1mdW5jdGlvbiB1Yyh0LGUpe3JldHVybiB0LnRyaW0oKS5zcGxpdCgvXnxccysvKS5tYXAoKGZ1bmN0aW9uKHQpe3ZhciBuPSIiLGk9dC5pbmRleE9mKCIuIik7aWYoaT49MCYmKG49dC5zbGljZShpKzEpLHQ9dC5zbGljZSgwLGkpKSx0JiYhZS5oYXNPd25Qcm9wZXJ0eSh0KSl0aHJvdyBuZXcgRXJyb3IoInVua25vd24gdHlwZTogIit0KTtyZXR1cm57dHlwZTp0LG5hbWU6bn19KSl9ZnVuY3Rpb24gaGModCxlKXtmb3IodmFyIG4saT0wLHI9dC5sZW5ndGg7aTxyOysraSlpZigobj10W2ldKS5uYW1lPT09ZSlyZXR1cm4gbi52YWx1ZX1mdW5jdGlvbiBkYyh0LGUsbil7Zm9yKHZhciBpPTAscj10Lmxlbmd0aDtpPHI7KytpKWlmKHRbaV0ubmFtZT09PWUpe3RbaV09c2MsdD10LnNsaWNlKDAsaSkuY29uY2F0KHQuc2xpY2UoaSsxKSk7YnJlYWt9cmV0dXJuIG51bGwhPW4mJnQucHVzaCh7bmFtZTplLHZhbHVlOm59KSx0fWNjLnByb3RvdHlwZT1sYy5wcm90b3R5cGU9e2NvbnN0cnVjdG9yOmNjLG9uOmZ1bmN0aW9uKHQsZSl7dmFyIG4saT10aGlzLl8scj11Yyh0KyIiLGkpLG89LTEsYT1yLmxlbmd0aDtpZighKGFyZ3VtZW50cy5sZW5ndGg8Mikpe2lmKG51bGwhPWUmJiJmdW5jdGlvbiIhPXR5cGVvZiBlKXRocm93IG5ldyBFcnJvcigiaW52YWxpZCBjYWxsYmFjazogIitlKTtmb3IoOysrbzxhOylpZihuPSh0PXJbb10pLnR5cGUpaVtuXT1kYyhpW25dLHQubmFtZSxlKTtlbHNlIGlmKG51bGw9PWUpZm9yKG4gaW4gaSlpW25dPWRjKGlbbl0sdC5uYW1lLG51bGwpO3JldHVybiB0aGlzfWZvcig7KytvPGE7KWlmKChuPSh0PXJbb10pLnR5cGUpJiYobj1oYyhpW25dLHQubmFtZSkpKXJldHVybiBufSxjb3B5OmZ1bmN0aW9uKCl7dmFyIHQ9e30sZT10aGlzLl87Zm9yKHZhciBuIGluIGUpdFtuXT1lW25dLnNsaWNlKCk7cmV0dXJuIG5ldyBjYyh0KX0sY2FsbDpmdW5jdGlvbih0LGUpe2lmKChuPWFyZ3VtZW50cy5sZW5ndGgtMik+MClmb3IodmFyIG4saSxyPW5ldyBBcnJheShuKSxvPTA7bzxuOysrbylyW29dPWFyZ3VtZW50c1tvKzJdO2lmKCF0aGlzLl8uaGFzT3duUHJvcGVydHkodCkpdGhyb3cgbmV3IEVycm9yKCJ1bmtub3duIHR5cGU6ICIrdCk7Zm9yKG89MCxuPShpPXRoaXMuX1t0XSkubGVuZ3RoO288bjsrK28paVtvXS52YWx1ZS5hcHBseShlLHIpfSxhcHBseTpmdW5jdGlvbih0LGUsbil7aWYoIXRoaXMuXy5oYXNPd25Qcm9wZXJ0eSh0KSl0aHJvdyBuZXcgRXJyb3IoInVua25vd24gdHlwZTogIit0KTtmb3IodmFyIGk9dGhpcy5fW3RdLHI9MCxvPWkubGVuZ3RoO3I8bzsrK3IpaVtyXS52YWx1ZS5hcHBseShlLG4pfX07dmFyIHBjPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hodG1sIixmYz17c3ZnOiJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIseGh0bWw6cGMseGxpbms6Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiLHhtbDoiaHR0cDovL3d3dy53My5vcmcvWE1MLzE5OTgvbmFtZXNwYWNlIix4bWxuczoiaHR0cDovL3d3dy53My5vcmcvMjAwMC94bWxucy8ifTtmdW5jdGlvbiBtYyh0KXt2YXIgZT10Kz0iIixuPWUuaW5kZXhPZigiOiIpO3JldHVybiBuPj0wJiYieG1sbnMiIT09KGU9dC5zbGljZSgwLG4pKSYmKHQ9dC5zbGljZShuKzEpKSxmYy5oYXNPd25Qcm9wZXJ0eShlKT97c3BhY2U6ZmNbZV0sbG9jYWw6dH06dH1mdW5jdGlvbiBnYyh0KXtyZXR1cm4gZnVuY3Rpb24oKXt2YXIgZT10aGlzLm93bmVyRG9jdW1lbnQsbj10aGlzLm5hbWVzcGFjZVVSSTtyZXR1cm4gbj09PXBjJiZlLmRvY3VtZW50RWxlbWVudC5uYW1lc3BhY2VVUkk9PT1wYz9lLmNyZWF0ZUVsZW1lbnQodCk6ZS5jcmVhdGVFbGVtZW50TlMobix0KX19ZnVuY3Rpb24gX2ModCl7cmV0dXJuIGZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMub3duZXJEb2N1bWVudC5jcmVhdGVFbGVtZW50TlModC5zcGFjZSx0LmxvY2FsKX19ZnVuY3Rpb24geWModCl7dmFyIGU9bWModCk7cmV0dXJuKGUubG9jYWw/X2M6Z2MpKGUpfWZ1bmN0aW9uIHZjKCl7fWZ1bmN0aW9uIGJjKHQpe3JldHVybiBudWxsPT10P3ZjOmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMucXVlcnlTZWxlY3Rvcih0KX19ZnVuY3Rpb24geGMoKXtyZXR1cm5bXX1mdW5jdGlvbiB3Yyh0KXtyZXR1cm4gbnVsbD09dD94YzpmdW5jdGlvbigpe3JldHVybiB0aGlzLnF1ZXJ5U2VsZWN0b3JBbGwodCl9fWZ1bmN0aW9uIFNjKHQpe3JldHVybiBmdW5jdGlvbigpe3JldHVybiB0aGlzLm1hdGNoZXModCl9fWZ1bmN0aW9uIE1jKHQpe3JldHVybiBuZXcgQXJyYXkodC5sZW5ndGgpfWZ1bmN0aW9uIEVjKHQsZSl7dGhpcy5vd25lckRvY3VtZW50PXQub3duZXJEb2N1bWVudCx0aGlzLm5hbWVzcGFjZVVSST10Lm5hbWVzcGFjZVVSSSx0aGlzLl9uZXh0PW51bGwsdGhpcy5fcGFyZW50PXQsdGhpcy5fX2RhdGFfXz1lfWZ1bmN0aW9uIFRjKHQsZSxuLGkscixvKXtmb3IodmFyIGEscz0wLGw9ZS5sZW5ndGgsYz1vLmxlbmd0aDtzPGM7KytzKShhPWVbc10pPyhhLl9fZGF0YV9fPW9bc10saVtzXT1hKTpuW3NdPW5ldyBFYyh0LG9bc10pO2Zvcig7czxsOysrcykoYT1lW3NdKSYmKHJbc109YSl9ZnVuY3Rpb24gQWModCxlLG4saSxyLG8sYSl7dmFyIHMsbCxjLHU9e30saD1lLmxlbmd0aCxkPW8ubGVuZ3RoLHA9bmV3IEFycmF5KGgpO2ZvcihzPTA7czxoOysrcykobD1lW3NdKSYmKHBbc109Yz0iJCIrYS5jYWxsKGwsbC5fX2RhdGFfXyxzLGUpLGMgaW4gdT9yW3NdPWw6dVtjXT1sKTtmb3Iocz0wO3M8ZDsrK3MpKGw9dVtjPSIkIithLmNhbGwodCxvW3NdLHMsbyldKT8oaVtzXT1sLGwuX19kYXRhX189b1tzXSx1W2NdPW51bGwpOm5bc109bmV3IEVjKHQsb1tzXSk7Zm9yKHM9MDtzPGg7KytzKShsPWVbc10pJiZ1W3Bbc11dPT09bCYmKHJbc109bCl9ZnVuY3Rpb24gQ2ModCxlKXtyZXR1cm4gdDxlPy0xOnQ+ZT8xOnQ+PWU/MDpOYU59ZnVuY3Rpb24ga2ModCl7cmV0dXJuIGZ1bmN0aW9uKCl7dGhpcy5yZW1vdmVBdHRyaWJ1dGUodCl9fWZ1bmN0aW9uIExjKHQpe3JldHVybiBmdW5jdGlvbigpe3RoaXMucmVtb3ZlQXR0cmlidXRlTlModC5zcGFjZSx0LmxvY2FsKX19ZnVuY3Rpb24gUGModCxlKXtyZXR1cm4gZnVuY3Rpb24oKXt0aGlzLnNldEF0dHJpYnV0ZSh0LGUpfX1mdW5jdGlvbiBJYyh0LGUpe3JldHVybiBmdW5jdGlvbigpe3RoaXMuc2V0QXR0cmlidXRlTlModC5zcGFjZSx0LmxvY2FsLGUpfX1mdW5jdGlvbiBOYyh0LGUpe3JldHVybiBmdW5jdGlvbigpe3ZhciBuPWUuYXBwbHkodGhpcyxhcmd1bWVudHMpO251bGw9PW4/dGhpcy5yZW1vdmVBdHRyaWJ1dGUodCk6dGhpcy5zZXRBdHRyaWJ1dGUodCxuKX19ZnVuY3Rpb24gT2ModCxlKXtyZXR1cm4gZnVuY3Rpb24oKXt2YXIgbj1lLmFwcGx5KHRoaXMsYXJndW1lbnRzKTtudWxsPT1uP3RoaXMucmVtb3ZlQXR0cmlidXRlTlModC5zcGFjZSx0LmxvY2FsKTp0aGlzLnNldEF0dHJpYnV0ZU5TKHQuc3BhY2UsdC5sb2NhbCxuKX19ZnVuY3Rpb24gUmModCl7cmV0dXJuIHQub3duZXJEb2N1bWVudCYmdC5vd25lckRvY3VtZW50LmRlZmF1bHRWaWV3fHx0LmRvY3VtZW50JiZ0fHx0LmRlZmF1bHRWaWV3fWZ1bmN0aW9uIHpjKHQpe3JldHVybiBmdW5jdGlvbigpe3RoaXMuc3R5bGUucmVtb3ZlUHJvcGVydHkodCl9fWZ1bmN0aW9uIERjKHQsZSxuKXtyZXR1cm4gZnVuY3Rpb24oKXt0aGlzLnN0eWxlLnNldFByb3BlcnR5KHQsZSxuKX19ZnVuY3Rpb24gQmModCxlLG4pe3JldHVybiBmdW5jdGlvbigpe3ZhciBpPWUuYXBwbHkodGhpcyxhcmd1bWVudHMpO251bGw9PWk/dGhpcy5zdHlsZS5yZW1vdmVQcm9wZXJ0eSh0KTp0aGlzLnN0eWxlLnNldFByb3BlcnR5KHQsaSxuKX19ZnVuY3Rpb24gSGModCxlKXtyZXR1cm4gdC5zdHlsZS5nZXRQcm9wZXJ0eVZhbHVlKGUpfHxSYyh0KS5nZXRDb21wdXRlZFN0eWxlKHQsbnVsbCkuZ2V0UHJvcGVydHlWYWx1ZShlKX1mdW5jdGlvbiBGYyh0KXtyZXR1cm4gZnVuY3Rpb24oKXtkZWxldGUgdGhpc1t0XX19ZnVuY3Rpb24gVmModCxlKXtyZXR1cm4gZnVuY3Rpb24oKXt0aGlzW3RdPWV9fWZ1bmN0aW9uIGpjKHQsZSl7cmV0dXJuIGZ1bmN0aW9uKCl7dmFyIG49ZS5hcHBseSh0aGlzLGFyZ3VtZW50cyk7bnVsbD09bj9kZWxldGUgdGhpc1t0XTp0aGlzW3RdPW59fWZ1bmN0aW9uIFVjKHQpe3JldHVybiB0LnRyaW0oKS5zcGxpdCgvXnxccysvKX1mdW5jdGlvbiBHYyh0KXtyZXR1cm4gdC5jbGFzc0xpc3R8fG5ldyBXYyh0KX1mdW5jdGlvbiBXYyh0KXt0aGlzLl9ub2RlPXQsdGhpcy5fbmFtZXM9VWModC5nZXRBdHRyaWJ1dGUoImNsYXNzIil8fCIiKX1mdW5jdGlvbiBxYyh0LGUpe2Zvcih2YXIgbj1HYyh0KSxpPS0xLHI9ZS5sZW5ndGg7KytpPHI7KW4uYWRkKGVbaV0pfWZ1bmN0aW9uIFljKHQsZSl7Zm9yKHZhciBuPUdjKHQpLGk9LTEscj1lLmxlbmd0aDsrK2k8cjspbi5yZW1vdmUoZVtpXSl9ZnVuY3Rpb24gWGModCl7cmV0dXJuIGZ1bmN0aW9uKCl7cWModGhpcyx0KX19ZnVuY3Rpb24gJGModCl7cmV0dXJuIGZ1bmN0aW9uKCl7WWModGhpcyx0KX19ZnVuY3Rpb24gS2ModCxlKXtyZXR1cm4gZnVuY3Rpb24oKXsoZS5hcHBseSh0aGlzLGFyZ3VtZW50cyk/cWM6WWMpKHRoaXMsdCl9fWZ1bmN0aW9uIFpjKCl7dGhpcy50ZXh0Q29udGVudD0iIn1mdW5jdGlvbiBKYyh0KXtyZXR1cm4gZnVuY3Rpb24oKXt0aGlzLnRleHRDb250ZW50PXR9fWZ1bmN0aW9uIFFjKHQpe3JldHVybiBmdW5jdGlvbigpe3ZhciBlPXQuYXBwbHkodGhpcyxhcmd1bWVudHMpO3RoaXMudGV4dENvbnRlbnQ9bnVsbD09ZT8iIjplfX1mdW5jdGlvbiB0dSgpe3RoaXMuaW5uZXJIVE1MPSIifWZ1bmN0aW9uIGV1KHQpe3JldHVybiBmdW5jdGlvbigpe3RoaXMuaW5uZXJIVE1MPXR9fWZ1bmN0aW9uIG51KHQpe3JldHVybiBmdW5jdGlvbigpe3ZhciBlPXQuYXBwbHkodGhpcyxhcmd1bWVudHMpO3RoaXMuaW5uZXJIVE1MPW51bGw9PWU/IiI6ZX19ZnVuY3Rpb24gaXUoKXt0aGlzLm5leHRTaWJsaW5nJiZ0aGlzLnBhcmVudE5vZGUuYXBwZW5kQ2hpbGQodGhpcyl9ZnVuY3Rpb24gcnUoKXt0aGlzLnByZXZpb3VzU2libGluZyYmdGhpcy5wYXJlbnROb2RlLmluc2VydEJlZm9yZSh0aGlzLHRoaXMucGFyZW50Tm9kZS5maXJzdENoaWxkKX1mdW5jdGlvbiBvdSgpe3JldHVybiBudWxsfWZ1bmN0aW9uIGF1KCl7dmFyIHQ9dGhpcy5wYXJlbnROb2RlO3QmJnQucmVtb3ZlQ2hpbGQodGhpcyl9ZnVuY3Rpb24gc3UoKXt2YXIgdD10aGlzLmNsb25lTm9kZSghMSksZT10aGlzLnBhcmVudE5vZGU7cmV0dXJuIGU/ZS5pbnNlcnRCZWZvcmUodCx0aGlzLm5leHRTaWJsaW5nKTp0fWZ1bmN0aW9uIGx1KCl7dmFyIHQ9dGhpcy5jbG9uZU5vZGUoITApLGU9dGhpcy5wYXJlbnROb2RlO3JldHVybiBlP2UuaW5zZXJ0QmVmb3JlKHQsdGhpcy5uZXh0U2libGluZyk6dH1FYy5wcm90b3R5cGU9e2NvbnN0cnVjdG9yOkVjLGFwcGVuZENoaWxkOmZ1bmN0aW9uKHQpe3JldHVybiB0aGlzLl9wYXJlbnQuaW5zZXJ0QmVmb3JlKHQsdGhpcy5fbmV4dCl9LGluc2VydEJlZm9yZTpmdW5jdGlvbih0LGUpe3JldHVybiB0aGlzLl9wYXJlbnQuaW5zZXJ0QmVmb3JlKHQsZSl9LHF1ZXJ5U2VsZWN0b3I6ZnVuY3Rpb24odCl7cmV0dXJuIHRoaXMuX3BhcmVudC5xdWVyeVNlbGVjdG9yKHQpfSxxdWVyeVNlbGVjdG9yQWxsOmZ1bmN0aW9uKHQpe3JldHVybiB0aGlzLl9wYXJlbnQucXVlcnlTZWxlY3RvckFsbCh0KX19LFdjLnByb3RvdHlwZT17YWRkOmZ1bmN0aW9uKHQpe3RoaXMuX25hbWVzLmluZGV4T2YodCk8MCYmKHRoaXMuX25hbWVzLnB1c2godCksdGhpcy5fbm9kZS5zZXRBdHRyaWJ1dGUoImNsYXNzIix0aGlzLl9uYW1lcy5qb2luKCIgIikpKX0scmVtb3ZlOmZ1bmN0aW9uKHQpe3ZhciBlPXRoaXMuX25hbWVzLmluZGV4T2YodCk7ZT49MCYmKHRoaXMuX25hbWVzLnNwbGljZShlLDEpLHRoaXMuX25vZGUuc2V0QXR0cmlidXRlKCJjbGFzcyIsdGhpcy5fbmFtZXMuam9pbigiICIpKSl9LGNvbnRhaW5zOmZ1bmN0aW9uKHQpe3JldHVybiB0aGlzLl9uYW1lcy5pbmRleE9mKHQpPj0wfX07dmFyIGN1PXt9LHV1PW51bGw7ZnVuY3Rpb24gaHUodCxlLG4pe3JldHVybiB0PWR1KHQsZSxuKSxmdW5jdGlvbihlKXt2YXIgbj1lLnJlbGF0ZWRUYXJnZXQ7biYmKG49PT10aGlzfHw4Jm4uY29tcGFyZURvY3VtZW50UG9zaXRpb24odGhpcykpfHx0LmNhbGwodGhpcyxlKX19ZnVuY3Rpb24gZHUodCxlLG4pe3JldHVybiBmdW5jdGlvbihpKXt2YXIgcj11dTt1dT1pO3RyeXt0LmNhbGwodGhpcyx0aGlzLl9fZGF0YV9fLGUsbil9ZmluYWxseXt1dT1yfX19ZnVuY3Rpb24gcHUodCl7cmV0dXJuIHQudHJpbSgpLnNwbGl0KC9efFxzKy8pLm1hcCgoZnVuY3Rpb24odCl7dmFyIGU9IiIsbj10LmluZGV4T2YoIi4iKTtyZXR1cm4gbj49MCYmKGU9dC5zbGljZShuKzEpLHQ9dC5zbGljZSgwLG4pKSx7dHlwZTp0LG5hbWU6ZX19KSl9ZnVuY3Rpb24gZnUodCl7cmV0dXJuIGZ1bmN0aW9uKCl7dmFyIGU9dGhpcy5fX29uO2lmKGUpe2Zvcih2YXIgbixpPTAscj0tMSxvPWUubGVuZ3RoO2k8bzsrK2kpbj1lW2ldLHQudHlwZSYmbi50eXBlIT09dC50eXBlfHxuLm5hbWUhPT10Lm5hbWU/ZVsrK3JdPW46dGhpcy5yZW1vdmVFdmVudExpc3RlbmVyKG4udHlwZSxuLmxpc3RlbmVyLG4uY2FwdHVyZSk7KytyP2UubGVuZ3RoPXI6ZGVsZXRlIHRoaXMuX19vbn19fWZ1bmN0aW9uIG11KHQsZSxuKXt2YXIgaT1jdS5oYXNPd25Qcm9wZXJ0eSh0LnR5cGUpP2h1OmR1O3JldHVybiBmdW5jdGlvbihyLG8sYSl7dmFyIHMsbD10aGlzLl9fb24sYz1pKGUsbyxhKTtpZihsKWZvcih2YXIgdT0wLGg9bC5sZW5ndGg7dTxoOysrdSlpZigocz1sW3VdKS50eXBlPT09dC50eXBlJiZzLm5hbWU9PT10Lm5hbWUpcmV0dXJuIHRoaXMucmVtb3ZlRXZlbnRMaXN0ZW5lcihzLnR5cGUscy5saXN0ZW5lcixzLmNhcHR1cmUpLHRoaXMuYWRkRXZlbnRMaXN0ZW5lcihzLnR5cGUscy5saXN0ZW5lcj1jLHMuY2FwdHVyZT1uKSx2b2lkKHMudmFsdWU9ZSk7dGhpcy5hZGRFdmVudExpc3RlbmVyKHQudHlwZSxjLG4pLHM9e3R5cGU6dC50eXBlLG5hbWU6dC5uYW1lLHZhbHVlOmUsbGlzdGVuZXI6YyxjYXB0dXJlOm59LGw/bC5wdXNoKHMpOnRoaXMuX19vbj1bc119fWZ1bmN0aW9uIGd1KHQsZSxuLGkpe3ZhciByPXV1O3Quc291cmNlRXZlbnQ9dXUsdXU9dDt0cnl7cmV0dXJuIGUuYXBwbHkobixpKX1maW5hbGx5e3V1PXJ9fWZ1bmN0aW9uIF91KHQsZSxuKXt2YXIgaT1SYyh0KSxyPWkuQ3VzdG9tRXZlbnQ7ImZ1bmN0aW9uIj09dHlwZW9mIHI/cj1uZXcgcihlLG4pOihyPWkuZG9jdW1lbnQuY3JlYXRlRXZlbnQoIkV2ZW50Iiksbj8oci5pbml0RXZlbnQoZSxuLmJ1YmJsZXMsbi5jYW5jZWxhYmxlKSxyLmRldGFpbD1uLmRldGFpbCk6ci5pbml0RXZlbnQoZSwhMSwhMSkpLHQuZGlzcGF0Y2hFdmVudChyKX1mdW5jdGlvbiB5dSh0LGUpe3JldHVybiBmdW5jdGlvbigpe3JldHVybiBfdSh0aGlzLHQsZSl9fWZ1bmN0aW9uIHZ1KHQsZSl7cmV0dXJuIGZ1bmN0aW9uKCl7cmV0dXJuIF91KHRoaXMsdCxlLmFwcGx5KHRoaXMsYXJndW1lbnRzKSl9fSJ1bmRlZmluZWQiIT10eXBlb2YgZG9jdW1lbnQmJigib25tb3VzZWVudGVyImluIGRvY3VtZW50LmRvY3VtZW50RWxlbWVudHx8KGN1PXttb3VzZWVudGVyOiJtb3VzZW92ZXIiLG1vdXNlbGVhdmU6Im1vdXNlb3V0In0pKTt2YXIgYnU9W251bGxdO2Z1bmN0aW9uIHh1KHQsZSl7dGhpcy5fZ3JvdXBzPXQsdGhpcy5fcGFyZW50cz1lfWZ1bmN0aW9uIHd1KCl7cmV0dXJuIG5ldyB4dShbW2RvY3VtZW50LmRvY3VtZW50RWxlbWVudF1dLGJ1KX1mdW5jdGlvbiBTdSh0KXtyZXR1cm4ic3RyaW5nIj09dHlwZW9mIHQ/bmV3IHh1KFtbZG9jdW1lbnQucXVlcnlTZWxlY3Rvcih0KV1dLFtkb2N1bWVudC5kb2N1bWVudEVsZW1lbnRdKTpuZXcgeHUoW1t0XV0sYnUpfXh1LnByb3RvdHlwZT13dS5wcm90b3R5cGU9e2NvbnN0cnVjdG9yOnh1LHNlbGVjdDpmdW5jdGlvbiBNdSh0KXsiZnVuY3Rpb24iIT10eXBlb2YgdCYmKHQ9YmModCkpO2Zvcih2YXIgZT10aGlzLl9ncm91cHMsbj1lLmxlbmd0aCxpPW5ldyBBcnJheShuKSxyPTA7cjxuOysrcilmb3IodmFyIG8sYSxzPWVbcl0sbD1zLmxlbmd0aCxjPWlbcl09bmV3IEFycmF5KGwpLHU9MDt1PGw7Kyt1KShvPXNbdV0pJiYoYT10LmNhbGwobyxvLl9fZGF0YV9fLHUscykpJiYoIl9fZGF0YV9fImluIG8mJihhLl9fZGF0YV9fPW8uX19kYXRhX18pLGNbdV09YSk7cmV0dXJuIG5ldyB4dShpLHRoaXMuX3BhcmVudHMpfSxzZWxlY3RBbGw6ZnVuY3Rpb24gRXUodCl7ImZ1bmN0aW9uIiE9dHlwZW9mIHQmJih0PXdjKHQpKTtmb3IodmFyIGU9dGhpcy5fZ3JvdXBzLG49ZS5sZW5ndGgsaT1bXSxyPVtdLG89MDtvPG47KytvKWZvcih2YXIgYSxzPWVbb10sbD1zLmxlbmd0aCxjPTA7YzxsOysrYykoYT1zW2NdKSYmKGkucHVzaCh0LmNhbGwoYSxhLl9fZGF0YV9fLGMscykpLHIucHVzaChhKSk7cmV0dXJuIG5ldyB4dShpLHIpfSxmaWx0ZXI6ZnVuY3Rpb24gVHUodCl7ImZ1bmN0aW9uIiE9dHlwZW9mIHQmJih0PVNjKHQpKTtmb3IodmFyIGU9dGhpcy5fZ3JvdXBzLG49ZS5sZW5ndGgsaT1uZXcgQXJyYXkobikscj0wO3I8bjsrK3IpZm9yKHZhciBvLGE9ZVtyXSxzPWEubGVuZ3RoLGw9aVtyXT1bXSxjPTA7YzxzOysrYykobz1hW2NdKSYmdC5jYWxsKG8sby5fX2RhdGFfXyxjLGEpJiZsLnB1c2gobyk7cmV0dXJuIG5ldyB4dShpLHRoaXMuX3BhcmVudHMpfSxkYXRhOmZ1bmN0aW9uIEF1KHQsZSl7aWYoIXQpcmV0dXJuIGY9bmV3IEFycmF5KHRoaXMuc2l6ZSgpKSx1PS0xLHRoaXMuZWFjaCgoZnVuY3Rpb24odCl7ZlsrK3VdPXR9KSksZjt2YXIgbj1lP0FjOlRjLGk9dGhpcy5fcGFyZW50cyxyPXRoaXMuX2dyb3VwczsiZnVuY3Rpb24iIT10eXBlb2YgdCYmKHQ9KGZ1bmN0aW9uIG8odCl7cmV0dXJuIGZ1bmN0aW9uKCl7cmV0dXJuIHR9fSkodCkpO2Zvcih2YXIgYT1yLmxlbmd0aCxzPW5ldyBBcnJheShhKSxsPW5ldyBBcnJheShhKSxjPW5ldyBBcnJheShhKSx1PTA7dTxhOysrdSl7dmFyIGg9aVt1XSxkPXJbdV0scD1kLmxlbmd0aCxmPXQuY2FsbChoLGgmJmguX19kYXRhX18sdSxpKSxtPWYubGVuZ3RoLGc9bFt1XT1uZXcgQXJyYXkobSksXz1zW3VdPW5ldyBBcnJheShtKTtuKGgsZCxnLF8sY1t1XT1uZXcgQXJyYXkocCksZixlKTtmb3IodmFyIHksdixiPTAseD0wO2I8bTsrK2IpaWYoeT1nW2JdKXtmb3IoYj49eCYmKHg9YisxKTshKHY9X1t4XSkmJisreDxtOyk7eS5fbmV4dD12fHxudWxsfX1yZXR1cm4ocz1uZXcgeHUocyxpKSkuX2VudGVyPWwscy5fZXhpdD1jLHN9LGVudGVyOmZ1bmN0aW9uIEN1KCl7cmV0dXJuIG5ldyB4dSh0aGlzLl9lbnRlcnx8dGhpcy5fZ3JvdXBzLm1hcChNYyksdGhpcy5fcGFyZW50cyl9LGV4aXQ6ZnVuY3Rpb24ga3UoKXtyZXR1cm4gbmV3IHh1KHRoaXMuX2V4aXR8fHRoaXMuX2dyb3Vwcy5tYXAoTWMpLHRoaXMuX3BhcmVudHMpfSxqb2luOmZ1bmN0aW9uIEx1KHQsZSxuKXt2YXIgaT10aGlzLmVudGVyKCkscj10aGlzLG89dGhpcy5leGl0KCk7cmV0dXJuIGk9ImZ1bmN0aW9uIj09dHlwZW9mIHQ/dChpKTppLmFwcGVuZCh0KyIiKSxudWxsIT1lJiYocj1lKHIpKSxudWxsPT1uP28ucmVtb3ZlKCk6bihvKSxpJiZyP2kubWVyZ2Uocikub3JkZXIoKTpyfSxtZXJnZTpmdW5jdGlvbiBQdSh0KXtmb3IodmFyIGU9dGhpcy5fZ3JvdXBzLG49dC5fZ3JvdXBzLGk9ZS5sZW5ndGgscj1NYXRoLm1pbihpLG4ubGVuZ3RoKSxvPW5ldyBBcnJheShpKSxhPTA7YTxyOysrYSlmb3IodmFyIHMsbD1lW2FdLGM9blthXSx1PWwubGVuZ3RoLGg9b1thXT1uZXcgQXJyYXkodSksZD0wO2Q8dTsrK2QpKHM9bFtkXXx8Y1tkXSkmJihoW2RdPXMpO2Zvcig7YTxpOysrYSlvW2FdPWVbYV07cmV0dXJuIG5ldyB4dShvLHRoaXMuX3BhcmVudHMpfSxvcmRlcjpmdW5jdGlvbiBJdSgpe2Zvcih2YXIgdD10aGlzLl9ncm91cHMsZT0tMSxuPXQubGVuZ3RoOysrZTxuOylmb3IodmFyIGkscj10W2VdLG89ci5sZW5ndGgtMSxhPXJbb107LS1vPj0wOykoaT1yW29dKSYmKGEmJjReaS5jb21wYXJlRG9jdW1lbnRQb3NpdGlvbihhKSYmYS5wYXJlbnROb2RlLmluc2VydEJlZm9yZShpLGEpLGE9aSk7cmV0dXJuIHRoaXN9LHNvcnQ6ZnVuY3Rpb24gTnUodCl7ZnVuY3Rpb24gZShlLG4pe3JldHVybiBlJiZuP3QoZS5fX2RhdGFfXyxuLl9fZGF0YV9fKTohZS0hbn10fHwodD1DYyk7Zm9yKHZhciBuPXRoaXMuX2dyb3VwcyxpPW4ubGVuZ3RoLHI9bmV3IEFycmF5KGkpLG89MDtvPGk7KytvKXtmb3IodmFyIGEscz1uW29dLGw9cy5sZW5ndGgsYz1yW29dPW5ldyBBcnJheShsKSx1PTA7dTxsOysrdSkoYT1zW3VdKSYmKGNbdV09YSk7Yy5zb3J0KGUpfXJldHVybiBuZXcgeHUocix0aGlzLl9wYXJlbnRzKS5vcmRlcigpfSxjYWxsOmZ1bmN0aW9uIE91KCl7dmFyIHQ9YXJndW1lbnRzWzBdO3JldHVybiBhcmd1bWVudHNbMF09dGhpcyx0LmFwcGx5KG51bGwsYXJndW1lbnRzKSx0aGlzfSxub2RlczpmdW5jdGlvbiBSdSgpe3ZhciB0PW5ldyBBcnJheSh0aGlzLnNpemUoKSksZT0tMTtyZXR1cm4gdGhpcy5lYWNoKChmdW5jdGlvbigpe3RbKytlXT10aGlzfSkpLHR9LG5vZGU6ZnVuY3Rpb24genUoKXtmb3IodmFyIHQ9dGhpcy5fZ3JvdXBzLGU9MCxuPXQubGVuZ3RoO2U8bjsrK2UpZm9yKHZhciBpPXRbZV0scj0wLG89aS5sZW5ndGg7cjxvOysrcil7dmFyIGE9aVtyXTtpZihhKXJldHVybiBhfXJldHVybiBudWxsfSxzaXplOmZ1bmN0aW9uIER1KCl7dmFyIHQ9MDtyZXR1cm4gdGhpcy5lYWNoKChmdW5jdGlvbigpeysrdH0pKSx0fSxlbXB0eTpmdW5jdGlvbiBCdSgpe3JldHVybiF0aGlzLm5vZGUoKX0sZWFjaDpmdW5jdGlvbiBIdSh0KXtmb3IodmFyIGU9dGhpcy5fZ3JvdXBzLG49MCxpPWUubGVuZ3RoO248aTsrK24pZm9yKHZhciByLG89ZVtuXSxhPTAscz1vLmxlbmd0aDthPHM7KythKShyPW9bYV0pJiZ0LmNhbGwocixyLl9fZGF0YV9fLGEsbyk7cmV0dXJuIHRoaXN9LGF0dHI6ZnVuY3Rpb24gRnUodCxlKXt2YXIgbj1tYyh0KTtpZihhcmd1bWVudHMubGVuZ3RoPDIpe3ZhciBpPXRoaXMubm9kZSgpO3JldHVybiBuLmxvY2FsP2kuZ2V0QXR0cmlidXRlTlMobi5zcGFjZSxuLmxvY2FsKTppLmdldEF0dHJpYnV0ZShuKX1yZXR1cm4gdGhpcy5lYWNoKChudWxsPT1lP24ubG9jYWw/TGM6a2M6ImZ1bmN0aW9uIj09dHlwZW9mIGU/bi5sb2NhbD9PYzpOYzpuLmxvY2FsP0ljOlBjKShuLGUpKX0sc3R5bGU6ZnVuY3Rpb24gVnUodCxlLG4pe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPjE/dGhpcy5lYWNoKChudWxsPT1lP3pjOiJmdW5jdGlvbiI9PXR5cGVvZiBlP0JjOkRjKSh0LGUsbnVsbD09bj8iIjpuKSk6SGModGhpcy5ub2RlKCksdCl9LHByb3BlcnR5OmZ1bmN0aW9uIGp1KHQsZSl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg+MT90aGlzLmVhY2goKG51bGw9PWU/RmM6ImZ1bmN0aW9uIj09dHlwZW9mIGU/amM6VmMpKHQsZSkpOnRoaXMubm9kZSgpW3RdfSxjbGFzc2VkOmZ1bmN0aW9uIFV1KHQsZSl7dmFyIG49VWModCsiIik7aWYoYXJndW1lbnRzLmxlbmd0aDwyKXtmb3IodmFyIGk9R2ModGhpcy5ub2RlKCkpLHI9LTEsbz1uLmxlbmd0aDsrK3I8bzspaWYoIWkuY29udGFpbnMobltyXSkpcmV0dXJuITE7cmV0dXJuITB9cmV0dXJuIHRoaXMuZWFjaCgoImZ1bmN0aW9uIj09dHlwZW9mIGU/S2M6ZT9YYzokYykobixlKSl9LHRleHQ6ZnVuY3Rpb24gR3UodCl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/dGhpcy5lYWNoKG51bGw9PXQ/WmM6KCJmdW5jdGlvbiI9PXR5cGVvZiB0P1FjOkpjKSh0KSk6dGhpcy5ub2RlKCkudGV4dENvbnRlbnR9LGh0bWw6ZnVuY3Rpb24gV3UodCl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/dGhpcy5lYWNoKG51bGw9PXQ/dHU6KCJmdW5jdGlvbiI9PXR5cGVvZiB0P251OmV1KSh0KSk6dGhpcy5ub2RlKCkuaW5uZXJIVE1MfSxyYWlzZTpmdW5jdGlvbiBxdSgpe3JldHVybiB0aGlzLmVhY2goaXUpfSxsb3dlcjpmdW5jdGlvbiBZdSgpe3JldHVybiB0aGlzLmVhY2gocnUpfSxhcHBlbmQ6ZnVuY3Rpb24gWHUodCl7dmFyIGU9ImZ1bmN0aW9uIj09dHlwZW9mIHQ/dDp5Yyh0KTtyZXR1cm4gdGhpcy5zZWxlY3QoKGZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuYXBwZW5kQ2hpbGQoZS5hcHBseSh0aGlzLGFyZ3VtZW50cykpfSkpfSxpbnNlcnQ6ZnVuY3Rpb24gJHUodCxlKXt2YXIgbj0iZnVuY3Rpb24iPT10eXBlb2YgdD90OnljKHQpLGk9bnVsbD09ZT9vdToiZnVuY3Rpb24iPT10eXBlb2YgZT9lOmJjKGUpO3JldHVybiB0aGlzLnNlbGVjdCgoZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5pbnNlcnRCZWZvcmUobi5hcHBseSh0aGlzLGFyZ3VtZW50cyksaS5hcHBseSh0aGlzLGFyZ3VtZW50cyl8fG51bGwpfSkpfSxyZW1vdmU6ZnVuY3Rpb24gS3UoKXtyZXR1cm4gdGhpcy5lYWNoKGF1KX0sY2xvbmU6ZnVuY3Rpb24gWnUodCl7cmV0dXJuIHRoaXMuc2VsZWN0KHQ/bHU6c3UpfSxkYXR1bTpmdW5jdGlvbiBKdSh0KXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD90aGlzLnByb3BlcnR5KCJfX2RhdGFfXyIsdCk6dGhpcy5ub2RlKCkuX19kYXRhX199LG9uOmZ1bmN0aW9uIFF1KHQsZSxuKXt2YXIgaSxyLG89cHUodCsiIiksYT1vLmxlbmd0aDtpZighKGFyZ3VtZW50cy5sZW5ndGg8Mikpe2ZvcihzPWU/bXU6ZnUsbnVsbD09biYmKG49ITEpLGk9MDtpPGE7KytpKXRoaXMuZWFjaChzKG9baV0sZSxuKSk7cmV0dXJuIHRoaXN9dmFyIHM9dGhpcy5ub2RlKCkuX19vbjtpZihzKWZvcih2YXIgbCxjPTAsdT1zLmxlbmd0aDtjPHU7KytjKWZvcihpPTAsbD1zW2NdO2k8YTsrK2kpaWYoKHI9b1tpXSkudHlwZT09PWwudHlwZSYmci5uYW1lPT09bC5uYW1lKXJldHVybiBsLnZhbHVlfSxkaXNwYXRjaDpmdW5jdGlvbiB0aCh0LGUpe3JldHVybiB0aGlzLmVhY2goKCJmdW5jdGlvbiI9PXR5cGVvZiBlP3Z1Onl1KSh0LGUpKX19O3ZhciBlaD0wO2Z1bmN0aW9uIG5oKCl7cmV0dXJuIG5ldyBpaH1mdW5jdGlvbiBpaCgpe3RoaXMuXz0iQCIrKCsrZWgpLnRvU3RyaW5nKDM2KX1mdW5jdGlvbiByaCgpe2Zvcih2YXIgdCxlPXV1O3Q9ZS5zb3VyY2VFdmVudDspZT10O3JldHVybiBlfWZ1bmN0aW9uIG9oKHQsZSl7dmFyIG49dC5vd25lclNWR0VsZW1lbnR8fHQ7aWYobi5jcmVhdGVTVkdQb2ludCl7dmFyIGk9bi5jcmVhdGVTVkdQb2ludCgpO3JldHVybiBpLng9ZS5jbGllbnRYLGkueT1lLmNsaWVudFksWyhpPWkubWF0cml4VHJhbnNmb3JtKHQuZ2V0U2NyZWVuQ1RNKCkuaW52ZXJzZSgpKSkueCxpLnldfXZhciByPXQuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCk7cmV0dXJuW2UuY2xpZW50WC1yLmxlZnQtdC5jbGllbnRMZWZ0LGUuY2xpZW50WS1yLnRvcC10LmNsaWVudFRvcF19ZnVuY3Rpb24gYWgodCl7dmFyIGU9cmgoKTtyZXR1cm4gZS5jaGFuZ2VkVG91Y2hlcyYmKGU9ZS5jaGFuZ2VkVG91Y2hlc1swXSksb2godCxlKX1mdW5jdGlvbiBzaCh0KXtyZXR1cm4ic3RyaW5nIj09dHlwZW9mIHQ/bmV3IHh1KFtkb2N1bWVudC5xdWVyeVNlbGVjdG9yQWxsKHQpXSxbZG9jdW1lbnQuZG9jdW1lbnRFbGVtZW50XSk6bmV3IHh1KFtudWxsPT10P1tdOnRdLGJ1KX1mdW5jdGlvbiBsaCh0LGUsbil7YXJndW1lbnRzLmxlbmd0aDwzJiYobj1lLGU9cmgoKS5jaGFuZ2VkVG91Y2hlcyk7Zm9yKHZhciBpLHI9MCxvPWU/ZS5sZW5ndGg6MDtyPG87KytyKWlmKChpPWVbcl0pLmlkZW50aWZpZXI9PT1uKXJldHVybiBvaCh0LGkpO3JldHVybiBudWxsfWZ1bmN0aW9uIGNoKCl7dXUuc3RvcEltbWVkaWF0ZVByb3BhZ2F0aW9uKCl9ZnVuY3Rpb24gdWgoKXt1dS5wcmV2ZW50RGVmYXVsdCgpLHV1LnN0b3BJbW1lZGlhdGVQcm9wYWdhdGlvbigpfWZ1bmN0aW9uIGhoKHQpe3ZhciBlPXQuZG9jdW1lbnQuZG9jdW1lbnRFbGVtZW50LG49U3UodCkub24oImRyYWdzdGFydC5kcmFnIix1aCwhMCk7Im9uc2VsZWN0c3RhcnQiaW4gZT9uLm9uKCJzZWxlY3RzdGFydC5kcmFnIix1aCwhMCk6KGUuX19ub3NlbGVjdD1lLnN0eWxlLk1velVzZXJTZWxlY3QsZS5zdHlsZS5Nb3pVc2VyU2VsZWN0PSJub25lIil9ZnVuY3Rpb24gZGgodCxlKXt2YXIgbj10LmRvY3VtZW50LmRvY3VtZW50RWxlbWVudCxpPVN1KHQpLm9uKCJkcmFnc3RhcnQuZHJhZyIsbnVsbCk7ZSYmKGkub24oImNsaWNrLmRyYWciLHVoLCEwKSxzZXRUaW1lb3V0KChmdW5jdGlvbigpe2kub24oImNsaWNrLmRyYWciLG51bGwpfSksMCkpLCJvbnNlbGVjdHN0YXJ0ImluIG4/aS5vbigic2VsZWN0c3RhcnQuZHJhZyIsbnVsbCk6KG4uc3R5bGUuTW96VXNlclNlbGVjdD1uLl9fbm9zZWxlY3QsZGVsZXRlIG4uX19ub3NlbGVjdCl9ZnVuY3Rpb24gcGgodCl7cmV0dXJuIGZ1bmN0aW9uKCl7cmV0dXJuIHR9fWZ1bmN0aW9uIGZoKHQsZSxuLGkscixvLGEscyxsLGMpe3RoaXMudGFyZ2V0PXQsdGhpcy50eXBlPWUsdGhpcy5zdWJqZWN0PW4sdGhpcy5pZGVudGlmaWVyPWksdGhpcy5hY3RpdmU9cix0aGlzLng9byx0aGlzLnk9YSx0aGlzLmR4PXMsdGhpcy5keT1sLHRoaXMuXz1jfWZ1bmN0aW9uIG1oKCl7cmV0dXJuIXV1LmN0cmxLZXkmJiF1dS5idXR0b259ZnVuY3Rpb24gZ2goKXtyZXR1cm4gdGhpcy5wYXJlbnROb2RlfWZ1bmN0aW9uIF9oKHQpe3JldHVybiBudWxsPT10P3t4OnV1LngseTp1dS55fTp0fWZ1bmN0aW9uIHloKCl7cmV0dXJuIG5hdmlnYXRvci5tYXhUb3VjaFBvaW50c3x8Im9udG91Y2hzdGFydCJpbiB0aGlzfWZ1bmN0aW9uIHZoKCl7dmFyIHQsZSxuLGkscj1taCxvPWdoLGE9X2gscz15aCxsPXt9LGM9bGMoInN0YXJ0IiwiZHJhZyIsImVuZCIpLHU9MCxoPTA7ZnVuY3Rpb24gZCh0KXt0Lm9uKCJtb3VzZWRvd24uZHJhZyIscCkuZmlsdGVyKHMpLm9uKCJ0b3VjaHN0YXJ0LmRyYWciLGcpLm9uKCJ0b3VjaG1vdmUuZHJhZyIsXykub24oInRvdWNoZW5kLmRyYWcgdG91Y2hjYW5jZWwuZHJhZyIseSkuc3R5bGUoInRvdWNoLWFjdGlvbiIsIm5vbmUiKS5zdHlsZSgiLXdlYmtpdC10YXAtaGlnaGxpZ2h0LWNvbG9yIiwicmdiYSgwLDAsMCwwKSIpfWZ1bmN0aW9uIHAoKXtpZighaSYmci5hcHBseSh0aGlzLGFyZ3VtZW50cykpe3ZhciBhPXYoIm1vdXNlIixvLmFwcGx5KHRoaXMsYXJndW1lbnRzKSxhaCx0aGlzLGFyZ3VtZW50cyk7YSYmKFN1KHV1LnZpZXcpLm9uKCJtb3VzZW1vdmUuZHJhZyIsZiwhMCkub24oIm1vdXNldXAuZHJhZyIsbSwhMCksaGgodXUudmlldyksY2goKSxuPSExLHQ9dXUuY2xpZW50WCxlPXV1LmNsaWVudFksYSgic3RhcnQiKSl9fWZ1bmN0aW9uIGYoKXtpZih1aCgpLCFuKXt2YXIgaT11dS5jbGllbnRYLXQscj11dS5jbGllbnRZLWU7bj1pKmkrcipyPmh9bC5tb3VzZSgiZHJhZyIpfWZ1bmN0aW9uIG0oKXtTdSh1dS52aWV3KS5vbigibW91c2Vtb3ZlLmRyYWcgbW91c2V1cC5kcmFnIixudWxsKSxkaCh1dS52aWV3LG4pLHVoKCksbC5tb3VzZSgiZW5kIil9ZnVuY3Rpb24gZygpe2lmKHIuYXBwbHkodGhpcyxhcmd1bWVudHMpKXt2YXIgdCxlLG49dXUuY2hhbmdlZFRvdWNoZXMsaT1vLmFwcGx5KHRoaXMsYXJndW1lbnRzKSxhPW4ubGVuZ3RoO2Zvcih0PTA7dDxhOysrdCkoZT12KG5bdF0uaWRlbnRpZmllcixpLGxoLHRoaXMsYXJndW1lbnRzKSkmJihjaCgpLGUoInN0YXJ0IikpfX1mdW5jdGlvbiBfKCl7dmFyIHQsZSxuPXV1LmNoYW5nZWRUb3VjaGVzLGk9bi5sZW5ndGg7Zm9yKHQ9MDt0PGk7Kyt0KShlPWxbblt0XS5pZGVudGlmaWVyXSkmJih1aCgpLGUoImRyYWciKSl9ZnVuY3Rpb24geSgpe3ZhciB0LGUsbj11dS5jaGFuZ2VkVG91Y2hlcyxyPW4ubGVuZ3RoO2ZvcihpJiZjbGVhclRpbWVvdXQoaSksaT1zZXRUaW1lb3V0KChmdW5jdGlvbigpe2k9bnVsbH0pLDUwMCksdD0wO3Q8cjsrK3QpKGU9bFtuW3RdLmlkZW50aWZpZXJdKSYmKGNoKCksZSgiZW5kIikpfWZ1bmN0aW9uIHYodCxlLG4saSxyKXt2YXIgbyxzLGgscD1uKGUsdCksZj1jLmNvcHkoKTtpZihndShuZXcgZmgoZCwiYmVmb3Jlc3RhcnQiLG8sdCx1LHBbMF0scFsxXSwwLDAsZiksKGZ1bmN0aW9uKCl7cmV0dXJuIG51bGwhPSh1dS5zdWJqZWN0PW89YS5hcHBseShpLHIpKSYmKHM9by54LXBbMF18fDAsaD1vLnktcFsxXXx8MCwhMCl9KSkpcmV0dXJuIGZ1bmN0aW9uIGEoYyl7dmFyIG0sZz1wO3N3aXRjaChjKXtjYXNlInN0YXJ0IjpsW3RdPWEsbT11Kys7YnJlYWs7Y2FzZSJlbmQiOmRlbGV0ZSBsW3RdLC0tdTtjYXNlImRyYWciOnA9bihlLHQpLG09dX1ndShuZXcgZmgoZCxjLG8sdCxtLHBbMF0rcyxwWzFdK2gscFswXS1nWzBdLHBbMV0tZ1sxXSxmKSxmLmFwcGx5LGYsW2MsaSxyXSl9fXJldHVybiBkLmZpbHRlcj1mdW5jdGlvbih0KXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8ocj0iZnVuY3Rpb24iPT10eXBlb2YgdD90OnBoKCEhdCksZCk6cn0sZC5jb250YWluZXI9ZnVuY3Rpb24odCl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KG89ImZ1bmN0aW9uIj09dHlwZW9mIHQ/dDpwaCh0KSxkKTpvfSxkLnN1YmplY3Q9ZnVuY3Rpb24odCl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KGE9ImZ1bmN0aW9uIj09dHlwZW9mIHQ/dDpwaCh0KSxkKTphfSxkLnRvdWNoYWJsZT1mdW5jdGlvbih0KXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8ocz0iZnVuY3Rpb24iPT10eXBlb2YgdD90OnBoKCEhdCksZCk6c30sZC5vbj1mdW5jdGlvbigpe3ZhciB0PWMub24uYXBwbHkoYyxhcmd1bWVudHMpO3JldHVybiB0PT09Yz9kOnR9LGQuY2xpY2tEaXN0YW5jZT1mdW5jdGlvbih0KXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8oaD0odD0rdCkqdCxkKTpNYXRoLnNxcnQoaCl9LGR9ZnVuY3Rpb24gYmgodCxlLG4pe3QucHJvdG90eXBlPWUucHJvdG90eXBlPW4sbi5jb25zdHJ1Y3Rvcj10fWZ1bmN0aW9uIHhoKHQsZSl7dmFyIG49T2JqZWN0LmNyZWF0ZSh0LnByb3RvdHlwZSk7Zm9yKHZhciBpIGluIGUpbltpXT1lW2ldO3JldHVybiBufWZ1bmN0aW9uIHdoKCl7fWloLnByb3RvdHlwZT1uaC5wcm90b3R5cGU9e2NvbnN0cnVjdG9yOmloLGdldDpmdW5jdGlvbih0KXtmb3IodmFyIGU9dGhpcy5fOyEoZSBpbiB0KTspaWYoISh0PXQucGFyZW50Tm9kZSkpcmV0dXJuO3JldHVybiB0W2VdfSxzZXQ6ZnVuY3Rpb24odCxlKXtyZXR1cm4gdFt0aGlzLl9dPWV9LHJlbW92ZTpmdW5jdGlvbih0KXtyZXR1cm4gdGhpcy5fIGluIHQmJmRlbGV0ZSB0W3RoaXMuX119LHRvU3RyaW5nOmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuX319LGZoLnByb3RvdHlwZS5vbj1mdW5jdGlvbigpe3ZhciB0PXRoaXMuXy5vbi5hcHBseSh0aGlzLl8sYXJndW1lbnRzKTtyZXR1cm4gdD09PXRoaXMuXz90aGlzOnR9O3ZhciBTaD0uNyxNaD0xL1NoLEVoPSJcXHMqKFsrLV0/XFxkKylcXHMqIixUaD0iXFxzKihbKy1dP1xcZCpcXC4/XFxkKyg/OltlRV1bKy1dP1xcZCspPylcXHMqIixBaD0iXFxzKihbKy1dP1xcZCpcXC4/XFxkKyg/OltlRV1bKy1dP1xcZCspPyklXFxzKiIsQ2g9L14jKFswLTlhLWZdezMsOH0pJC8sa2g9bmV3IFJlZ0V4cCgiXnJnYlxcKCIrW0VoLEVoLEVoXSsiXFwpJCIpLExoPW5ldyBSZWdFeHAoIl5yZ2JcXCgiK1tBaCxBaCxBaF0rIlxcKSQiKSxQaD1uZXcgUmVnRXhwKCJecmdiYVxcKCIrW0VoLEVoLEVoLFRoXSsiXFwpJCIpLEloPW5ldyBSZWdFeHAoIl5yZ2JhXFwoIitbQWgsQWgsQWgsVGhdKyJcXCkkIiksTmg9bmV3IFJlZ0V4cCgiXmhzbFxcKCIrW1RoLEFoLEFoXSsiXFwpJCIpLE9oPW5ldyBSZWdFeHAoIl5oc2xhXFwoIitbVGgsQWgsQWgsVGhdKyJcXCkkIiksUmg9e2FsaWNlYmx1ZToxNTc5MjM4MyxhbnRpcXVld2hpdGU6MTY0NDQzNzUsYXF1YTo2NTUzNSxhcXVhbWFyaW5lOjgzODg1NjQsYXp1cmU6MTU3OTQxNzUsYmVpZ2U6MTYxMTkyNjAsYmlzcXVlOjE2NzcwMjQ0LGJsYWNrOjAsYmxhbmNoZWRhbG1vbmQ6MTY3NzIwNDUsYmx1ZToyNTUsYmx1ZXZpb2xldDo5MDU1MjAyLGJyb3duOjEwODI0MjM0LGJ1cmx5d29vZDoxNDU5NjIzMSxjYWRldGJsdWU6NjI2NjUyOCxjaGFydHJldXNlOjgzODgzNTIsY2hvY29sYXRlOjEzNzg5NDcwLGNvcmFsOjE2NzQ0MjcyLGNvcm5mbG93ZXJibHVlOjY1OTE5ODEsY29ybnNpbGs6MTY3NzUzODgsY3JpbXNvbjoxNDQyMzEwMCxjeWFuOjY1NTM1LGRhcmtibHVlOjEzOSxkYXJrY3lhbjozNTcyMyxkYXJrZ29sZGVucm9kOjEyMDkyOTM5LGRhcmtncmF5OjExMTE5MDE3LGRhcmtncmVlbjoyNTYwMCxkYXJrZ3JleToxMTExOTAxNyxkYXJra2hha2k6MTI0MzMyNTksZGFya21hZ2VudGE6OTEwOTY0MyxkYXJrb2xpdmVncmVlbjo1NTk3OTk5LGRhcmtvcmFuZ2U6MTY3NDc1MjAsZGFya29yY2hpZDoxMDA0MDAxMixkYXJrcmVkOjkxMDk1MDQsZGFya3NhbG1vbjoxNTMwODQxMCxkYXJrc2VhZ3JlZW46OTQxOTkxOSxkYXJrc2xhdGVibHVlOjQ3MzQzNDcsZGFya3NsYXRlZ3JheTozMTAwNDk1LGRhcmtzbGF0ZWdyZXk6MzEwMDQ5NSxkYXJrdHVycXVvaXNlOjUyOTQ1LGRhcmt2aW9sZXQ6OTY5OTUzOSxkZWVwcGluazoxNjcxNjk0NyxkZWVwc2t5Ymx1ZTo0OTE1MSxkaW1ncmF5OjY5MDgyNjUsZGltZ3JleTo2OTA4MjY1LGRvZGdlcmJsdWU6MjAwMzE5OSxmaXJlYnJpY2s6MTE2NzQxNDYsZmxvcmFsd2hpdGU6MTY3NzU5MjAsZm9yZXN0Z3JlZW46MjI2Mzg0MixmdWNoc2lhOjE2NzExOTM1LGdhaW5zYm9ybzoxNDQ3NDQ2MCxnaG9zdHdoaXRlOjE2MzE2NjcxLGdvbGQ6MTY3NjY3MjAsZ29sZGVucm9kOjE0MzI5MTIwLGdyYXk6ODQyMTUwNCxncmVlbjozMjc2OCxncmVlbnllbGxvdzoxMTQwMzA1NSxncmV5Ojg0MjE1MDQsaG9uZXlkZXc6MTU3OTQxNjAsaG90cGluazoxNjczODc0MCxpbmRpYW5yZWQ6MTM0NTg1MjQsaW5kaWdvOjQ5MTUzMzAsaXZvcnk6MTY3NzcyMDAsa2hha2k6MTU3ODc2NjAsbGF2ZW5kZXI6MTUxMzI0MTAsbGF2ZW5kZXJibHVzaDoxNjc3MzM2NSxsYXduZ3JlZW46ODE5MDk3NixsZW1vbmNoaWZmb246MTY3NzU4ODUsbGlnaHRibHVlOjExMzkzMjU0LGxpZ2h0Y29yYWw6MTU3NjE1MzYsbGlnaHRjeWFuOjE0NzQ1NTk5LGxpZ2h0Z29sZGVucm9keWVsbG93OjE2NDQ4MjEwLGxpZ2h0Z3JheToxMzg4MjMyMyxsaWdodGdyZWVuOjk0OTgyNTYsbGlnaHRncmV5OjEzODgyMzIzLGxpZ2h0cGluazoxNjc1ODQ2NSxsaWdodHNhbG1vbjoxNjc1Mjc2MixsaWdodHNlYWdyZWVuOjIxNDI4OTAsbGlnaHRza3libHVlOjg5MDAzNDYsbGlnaHRzbGF0ZWdyYXk6NzgzMzc1MyxsaWdodHNsYXRlZ3JleTo3ODMzNzUzLGxpZ2h0c3RlZWxibHVlOjExNTg0NzM0LGxpZ2h0eWVsbG93OjE2Nzc3MTg0LGxpbWU6NjUyODAsbGltZWdyZWVuOjMzMjkzMzAsbGluZW46MTY0NDU2NzAsbWFnZW50YToxNjcxMTkzNSxtYXJvb246ODM4ODYwOCxtZWRpdW1hcXVhbWFyaW5lOjY3MzczMjIsbWVkaXVtYmx1ZToyMDUsbWVkaXVtb3JjaGlkOjEyMjExNjY3LG1lZGl1bXB1cnBsZTo5NjYyNjgzLG1lZGl1bXNlYWdyZWVuOjM5NzgwOTcsbWVkaXVtc2xhdGVibHVlOjgwODc3OTAsbWVkaXVtc3ByaW5nZ3JlZW46NjQxNTQsbWVkaXVtdHVycXVvaXNlOjQ3NzIzMDAsbWVkaXVtdmlvbGV0cmVkOjEzMDQ3MTczLG1pZG5pZ2h0Ymx1ZToxNjQ0OTEyLG1pbnRjcmVhbToxNjEyMTg1MCxtaXN0eXJvc2U6MTY3NzAyNzMsbW9jY2FzaW46MTY3NzAyMjksbmF2YWpvd2hpdGU6MTY3Njg2ODUsbmF2eToxMjgsb2xkbGFjZToxNjY0MzU1OCxvbGl2ZTo4NDIxMzc2LG9saXZlZHJhYjo3MDQ4NzM5LG9yYW5nZToxNjc1MzkyMCxvcmFuZ2VyZWQ6MTY3MjkzNDQsb3JjaGlkOjE0MzE1NzM0LHBhbGVnb2xkZW5yb2Q6MTU2NTcxMzAscGFsZWdyZWVuOjEwMDI1ODgwLHBhbGV0dXJxdW9pc2U6MTE1Mjk5NjYscGFsZXZpb2xldHJlZDoxNDM4MTIwMyxwYXBheWF3aGlwOjE2NzczMDc3LHBlYWNocHVmZjoxNjc2NzY3MyxwZXJ1OjEzNDY4OTkxLHBpbms6MTY3NjEwMzUscGx1bToxNDUyNDYzNyxwb3dkZXJibHVlOjExNTkxOTEwLHB1cnBsZTo4Mzg4NzM2LHJlYmVjY2FwdXJwbGU6NjY5Nzg4MSxyZWQ6MTY3MTE2ODAscm9zeWJyb3duOjEyMzU3NTE5LHJveWFsYmx1ZTo0Mjg2OTQ1LHNhZGRsZWJyb3duOjkxMjcxODcsc2FsbW9uOjE2NDE2ODgyLHNhbmR5YnJvd246MTYwMzI4NjQsc2VhZ3JlZW46MzA1MDMyNyxzZWFzaGVsbDoxNjc3NDYzOCxzaWVubmE6MTA1MDY3OTcsc2lsdmVyOjEyNjMyMjU2LHNreWJsdWU6ODkwMDMzMSxzbGF0ZWJsdWU6Njk3MDA2MSxzbGF0ZWdyYXk6NzM3Mjk0NCxzbGF0ZWdyZXk6NzM3Mjk0NCxzbm93OjE2Nzc1OTMwLHNwcmluZ2dyZWVuOjY1NDA3LHN0ZWVsYmx1ZTo0NjIwOTgwLHRhbjoxMzgwODc4MCx0ZWFsOjMyODk2LHRoaXN0bGU6MTQyMDQ4ODgsdG9tYXRvOjE2NzM3MDk1LHR1cnF1b2lzZTo0MjUxODU2LHZpb2xldDoxNTYzMTA4Nix3aGVhdDoxNjExMzMzMSx3aGl0ZToxNjc3NzIxNSx3aGl0ZXNtb2tlOjE2MTE5Mjg1LHllbGxvdzoxNjc3Njk2MCx5ZWxsb3dncmVlbjoxMDE0NTA3NH07ZnVuY3Rpb24gemgoKXtyZXR1cm4gdGhpcy5yZ2IoKS5mb3JtYXRIZXgoKX1mdW5jdGlvbiBEaCgpe3JldHVybiB0aGlzLnJnYigpLmZvcm1hdFJnYigpfWZ1bmN0aW9uIEJoKHQpe3ZhciBlLG47cmV0dXJuIHQ9KHQrIiIpLnRyaW0oKS50b0xvd2VyQ2FzZSgpLChlPUNoLmV4ZWModCkpPyhuPWVbMV0ubGVuZ3RoLGU9cGFyc2VJbnQoZVsxXSwxNiksNj09PW4/SGgoZSk6Mz09PW4/bmV3IFVoKGU+PjgmMTV8ZT4+NCYyNDAsZT4+NCYxNXwyNDAmZSwoMTUmZSk8PDR8MTUmZSwxKTo4PT09bj9GaChlPj4yNCYyNTUsZT4+MTYmMjU1LGU+PjgmMjU1LCgyNTUmZSkvMjU1KTo0PT09bj9GaChlPj4xMiYxNXxlPj44JjI0MCxlPj44JjE1fGU+PjQmMjQwLGU+PjQmMTV8MjQwJmUsKCgxNSZlKTw8NHwxNSZlKS8yNTUpOm51bGwpOihlPWtoLmV4ZWModCkpP25ldyBVaChlWzFdLGVbMl0sZVszXSwxKTooZT1MaC5leGVjKHQpKT9uZXcgVWgoMjU1KmVbMV0vMTAwLDI1NSplWzJdLzEwMCwyNTUqZVszXS8xMDAsMSk6KGU9UGguZXhlYyh0KSk/RmgoZVsxXSxlWzJdLGVbM10sZVs0XSk6KGU9SWguZXhlYyh0KSk/RmgoMjU1KmVbMV0vMTAwLDI1NSplWzJdLzEwMCwyNTUqZVszXS8xMDAsZVs0XSk6KGU9TmguZXhlYyh0KSk/WWgoZVsxXSxlWzJdLzEwMCxlWzNdLzEwMCwxKTooZT1PaC5leGVjKHQpKT9ZaChlWzFdLGVbMl0vMTAwLGVbM10vMTAwLGVbNF0pOlJoLmhhc093blByb3BlcnR5KHQpP0hoKFJoW3RdKToidHJhbnNwYXJlbnQiPT09dD9uZXcgVWgoTmFOLE5hTixOYU4sMCk6bnVsbH1mdW5jdGlvbiBIaCh0KXtyZXR1cm4gbmV3IFVoKHQ+PjE2JjI1NSx0Pj44JjI1NSwyNTUmdCwxKX1mdW5jdGlvbiBGaCh0LGUsbixpKXtyZXR1cm4gaTw9MCYmKHQ9ZT1uPU5hTiksbmV3IFVoKHQsZSxuLGkpfWZ1bmN0aW9uIFZoKHQpe3JldHVybiB0IGluc3RhbmNlb2Ygd2h8fCh0PUJoKHQpKSx0P25ldyBVaCgodD10LnJnYigpKS5yLHQuZyx0LmIsdC5vcGFjaXR5KTpuZXcgVWh9ZnVuY3Rpb24gamgodCxlLG4saSl7cmV0dXJuIDE9PT1hcmd1bWVudHMubGVuZ3RoP1ZoKHQpOm5ldyBVaCh0LGUsbixudWxsPT1pPzE6aSl9ZnVuY3Rpb24gVWgodCxlLG4saSl7dGhpcy5yPSt0LHRoaXMuZz0rZSx0aGlzLmI9K24sdGhpcy5vcGFjaXR5PStpfWZ1bmN0aW9uIEdoKCl7cmV0dXJuIiMiK3FoKHRoaXMucikrcWgodGhpcy5nKStxaCh0aGlzLmIpfWZ1bmN0aW9uIFdoKCl7dmFyIHQ9dGhpcy5vcGFjaXR5O3JldHVybigxPT09KHQ9aXNOYU4odCk/MTpNYXRoLm1heCgwLE1hdGgubWluKDEsdCkpKT8icmdiKCI6InJnYmEoIikrTWF0aC5tYXgoMCxNYXRoLm1pbigyNTUsTWF0aC5yb3VuZCh0aGlzLnIpfHwwKSkrIiwgIitNYXRoLm1heCgwLE1hdGgubWluKDI1NSxNYXRoLnJvdW5kKHRoaXMuZyl8fDApKSsiLCAiK01hdGgubWF4KDAsTWF0aC5taW4oMjU1LE1hdGgucm91bmQodGhpcy5iKXx8MCkpKygxPT09dD8iKSI6IiwgIit0KyIpIil9ZnVuY3Rpb24gcWgodCl7cmV0dXJuKCh0PU1hdGgubWF4KDAsTWF0aC5taW4oMjU1LE1hdGgucm91bmQodCl8fDApKSk8MTY/IjAiOiIiKSt0LnRvU3RyaW5nKDE2KX1mdW5jdGlvbiBZaCh0LGUsbixpKXtyZXR1cm4gaTw9MD90PWU9bj1OYU46bjw9MHx8bj49MT90PWU9TmFOOmU8PTAmJih0PU5hTiksbmV3IEtoKHQsZSxuLGkpfWZ1bmN0aW9uIFhoKHQpe2lmKHQgaW5zdGFuY2VvZiBLaClyZXR1cm4gbmV3IEtoKHQuaCx0LnMsdC5sLHQub3BhY2l0eSk7aWYodCBpbnN0YW5jZW9mIHdofHwodD1CaCh0KSksIXQpcmV0dXJuIG5ldyBLaDtpZih0IGluc3RhbmNlb2YgS2gpcmV0dXJuIHQ7dmFyIGU9KHQ9dC5yZ2IoKSkuci8yNTUsbj10LmcvMjU1LGk9dC5iLzI1NSxyPU1hdGgubWluKGUsbixpKSxvPU1hdGgubWF4KGUsbixpKSxhPU5hTixzPW8tcixsPShvK3IpLzI7cmV0dXJuIHM/KGE9ZT09PW8/KG4taSkvcys2KihuPGkpOm49PT1vPyhpLWUpL3MrMjooZS1uKS9zKzQscy89bDwuNT9vK3I6Mi1vLXIsYSo9NjApOnM9bD4wJiZsPDE/MDphLG5ldyBLaChhLHMsbCx0Lm9wYWNpdHkpfWZ1bmN0aW9uICRoKHQsZSxuLGkpe3JldHVybiAxPT09YXJndW1lbnRzLmxlbmd0aD9YaCh0KTpuZXcgS2godCxlLG4sbnVsbD09aT8xOmkpfWZ1bmN0aW9uIEtoKHQsZSxuLGkpe3RoaXMuaD0rdCx0aGlzLnM9K2UsdGhpcy5sPStuLHRoaXMub3BhY2l0eT0raX1mdW5jdGlvbiBaaCh0LGUsbil7cmV0dXJuIDI1NSoodDw2MD9lKyhuLWUpKnQvNjA6dDwxODA/bjp0PDI0MD9lKyhuLWUpKigyNDAtdCkvNjA6ZSl9Ymgod2gsQmgse2NvcHk6ZnVuY3Rpb24odCl7cmV0dXJuIE9iamVjdC5hc3NpZ24obmV3IHRoaXMuY29uc3RydWN0b3IsdGhpcyx0KX0sZGlzcGxheWFibGU6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5yZ2IoKS5kaXNwbGF5YWJsZSgpfSxoZXg6emgsZm9ybWF0SGV4OnpoLGZvcm1hdEhzbDpmdW5jdGlvbiBKaCgpe3JldHVybiBYaCh0aGlzKS5mb3JtYXRIc2woKX0sZm9ybWF0UmdiOkRoLHRvU3RyaW5nOkRofSksYmgoVWgsamgseGgod2gse2JyaWdodGVyOmZ1bmN0aW9uKHQpe3JldHVybiB0PW51bGw9PXQ/TWg6TWF0aC5wb3coTWgsdCksbmV3IFVoKHRoaXMucip0LHRoaXMuZyp0LHRoaXMuYip0LHRoaXMub3BhY2l0eSl9LGRhcmtlcjpmdW5jdGlvbih0KXtyZXR1cm4gdD1udWxsPT10P1NoOk1hdGgucG93KFNoLHQpLG5ldyBVaCh0aGlzLnIqdCx0aGlzLmcqdCx0aGlzLmIqdCx0aGlzLm9wYWNpdHkpfSxyZ2I6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpc30sZGlzcGxheWFibGU6ZnVuY3Rpb24oKXtyZXR1cm4tLjU8PXRoaXMuciYmdGhpcy5yPDI1NS41JiYtLjU8PXRoaXMuZyYmdGhpcy5nPDI1NS41JiYtLjU8PXRoaXMuYiYmdGhpcy5iPDI1NS41JiYwPD10aGlzLm9wYWNpdHkmJnRoaXMub3BhY2l0eTw9MX0saGV4OkdoLGZvcm1hdEhleDpHaCxmb3JtYXRSZ2I6V2gsdG9TdHJpbmc6V2h9KSksYmgoS2gsJGgseGgod2gse2JyaWdodGVyOmZ1bmN0aW9uKHQpe3JldHVybiB0PW51bGw9PXQ/TWg6TWF0aC5wb3coTWgsdCksbmV3IEtoKHRoaXMuaCx0aGlzLnMsdGhpcy5sKnQsdGhpcy5vcGFjaXR5KX0sZGFya2VyOmZ1bmN0aW9uKHQpe3JldHVybiB0PW51bGw9PXQ/U2g6TWF0aC5wb3coU2gsdCksbmV3IEtoKHRoaXMuaCx0aGlzLnMsdGhpcy5sKnQsdGhpcy5vcGFjaXR5KX0scmdiOmZ1bmN0aW9uKCl7dmFyIHQ9dGhpcy5oJTM2MCszNjAqKHRoaXMuaDwwKSxlPWlzTmFOKHQpfHxpc05hTih0aGlzLnMpPzA6dGhpcy5zLG49dGhpcy5sLGk9bisobjwuNT9uOjEtbikqZSxyPTIqbi1pO3JldHVybiBuZXcgVWgoWmgodD49MjQwP3QtMjQwOnQrMTIwLHIsaSksWmgodCxyLGkpLFpoKHQ8MTIwP3QrMjQwOnQtMTIwLHIsaSksdGhpcy5vcGFjaXR5KX0sZGlzcGxheWFibGU6ZnVuY3Rpb24oKXtyZXR1cm4oMDw9dGhpcy5zJiZ0aGlzLnM8PTF8fGlzTmFOKHRoaXMucykpJiYwPD10aGlzLmwmJnRoaXMubDw9MSYmMDw9dGhpcy5vcGFjaXR5JiZ0aGlzLm9wYWNpdHk8PTF9LGZvcm1hdEhzbDpmdW5jdGlvbigpe3ZhciB0PXRoaXMub3BhY2l0eTtyZXR1cm4oMT09PSh0PWlzTmFOKHQpPzE6TWF0aC5tYXgoMCxNYXRoLm1pbigxLHQpKSk/ImhzbCgiOiJoc2xhKCIpKyh0aGlzLmh8fDApKyIsICIrMTAwKih0aGlzLnN8fDApKyIlLCAiKzEwMCoodGhpcy5sfHwwKSsiJSIrKDE9PT10PyIpIjoiLCAiK3QrIikiKX19KSk7dmFyIFFoPU1hdGguUEkvMTgwLHRkPTE4MC9NYXRoLlBJLGVkPS45NjQyMixuZD0uODI1MjEsaWQ9NC8yOSxyZD02LzI5LG9kPTMqcmQqcmQ7ZnVuY3Rpb24gYWQodCl7aWYodCBpbnN0YW5jZW9mIGxkKXJldHVybiBuZXcgbGQodC5sLHQuYSx0LmIsdC5vcGFjaXR5KTtpZih0IGluc3RhbmNlb2YgbWQpcmV0dXJuIGdkKHQpO3QgaW5zdGFuY2VvZiBVaHx8KHQ9VmgodCkpO3ZhciBlLG4saT1kZCh0LnIpLHI9ZGQodC5nKSxvPWRkKHQuYiksYT1jZCgoLjIyMjUwNDUqaSsuNzE2ODc4NipyKy4wNjA2MTY5Km8pLzEpO3JldHVybiBpPT09ciYmcj09PW8/ZT1uPWE6KGU9Y2QoKC40MzYwNzQ3KmkrLjM4NTA2NDkqcisuMTQzMDgwNCpvKS9lZCksbj1jZCgoLjAxMzkzMjIqaSsuMDk3MTA0NSpyKy43MTQxNzMzKm8pL25kKSksbmV3IGxkKDExNiphLTE2LDUwMCooZS1hKSwyMDAqKGEtbiksdC5vcGFjaXR5KX1mdW5jdGlvbiBzZCh0LGUsbixpKXtyZXR1cm4gMT09PWFyZ3VtZW50cy5sZW5ndGg/YWQodCk6bmV3IGxkKHQsZSxuLG51bGw9PWk/MTppKX1mdW5jdGlvbiBsZCh0LGUsbixpKXt0aGlzLmw9K3QsdGhpcy5hPStlLHRoaXMuYj0rbix0aGlzLm9wYWNpdHk9K2l9ZnVuY3Rpb24gY2QodCl7cmV0dXJuIHQ+LjAwODg1NjQ1MTY3OTAzNTYzMT9NYXRoLnBvdyh0LDEvMyk6dC9vZCtpZH1mdW5jdGlvbiB1ZCh0KXtyZXR1cm4gdD5yZD90KnQqdDpvZCoodC1pZCl9ZnVuY3Rpb24gaGQodCl7cmV0dXJuIDI1NSoodDw9LjAwMzEzMDg/MTIuOTIqdDoxLjA1NSpNYXRoLnBvdyh0LDEvMi40KS0uMDU1KX1mdW5jdGlvbiBkZCh0KXtyZXR1cm4odC89MjU1KTw9LjA0MDQ1P3QvMTIuOTI6TWF0aC5wb3coKHQrLjA1NSkvMS4wNTUsMi40KX1mdW5jdGlvbiBwZCh0KXtpZih0IGluc3RhbmNlb2YgbWQpcmV0dXJuIG5ldyBtZCh0LmgsdC5jLHQubCx0Lm9wYWNpdHkpO2lmKHQgaW5zdGFuY2VvZiBsZHx8KHQ9YWQodCkpLDA9PT10LmEmJjA9PT10LmIpcmV0dXJuIG5ldyBtZChOYU4sMDx0LmwmJnQubDwxMDA/MDpOYU4sdC5sLHQub3BhY2l0eSk7dmFyIGU9TWF0aC5hdGFuMih0LmIsdC5hKSp0ZDtyZXR1cm4gbmV3IG1kKGU8MD9lKzM2MDplLE1hdGguc3FydCh0LmEqdC5hK3QuYip0LmIpLHQubCx0Lm9wYWNpdHkpfWZ1bmN0aW9uIGZkKHQsZSxuLGkpe3JldHVybiAxPT09YXJndW1lbnRzLmxlbmd0aD9wZCh0KTpuZXcgbWQodCxlLG4sbnVsbD09aT8xOmkpfWZ1bmN0aW9uIG1kKHQsZSxuLGkpe3RoaXMuaD0rdCx0aGlzLmM9K2UsdGhpcy5sPStuLHRoaXMub3BhY2l0eT0raX1mdW5jdGlvbiBnZCh0KXtpZihpc05hTih0LmgpKXJldHVybiBuZXcgbGQodC5sLDAsMCx0Lm9wYWNpdHkpO3ZhciBlPXQuaCpRaDtyZXR1cm4gbmV3IGxkKHQubCxNYXRoLmNvcyhlKSp0LmMsTWF0aC5zaW4oZSkqdC5jLHQub3BhY2l0eSl9YmgobGQsc2QseGgod2gse2JyaWdodGVyOmZ1bmN0aW9uKHQpe3JldHVybiBuZXcgbGQodGhpcy5sKzE4KihudWxsPT10PzE6dCksdGhpcy5hLHRoaXMuYix0aGlzLm9wYWNpdHkpfSxkYXJrZXI6ZnVuY3Rpb24odCl7cmV0dXJuIG5ldyBsZCh0aGlzLmwtMTgqKG51bGw9PXQ/MTp0KSx0aGlzLmEsdGhpcy5iLHRoaXMub3BhY2l0eSl9LHJnYjpmdW5jdGlvbigpe3ZhciB0PSh0aGlzLmwrMTYpLzExNixlPWlzTmFOKHRoaXMuYSk/dDp0K3RoaXMuYS81MDAsbj1pc05hTih0aGlzLmIpP3Q6dC10aGlzLmIvMjAwO3JldHVybiBuZXcgVWgoaGQoMy4xMzM4NTYxKihlPWVkKnVkKGUpKS0xLjYxNjg2NjcqKHQ9MSp1ZCh0KSktLjQ5MDYxNDYqKG49bmQqdWQobikpKSxoZCgtLjk3ODc2ODQqZSsxLjkxNjE0MTUqdCsuMDMzNDU0Km4pLGhkKC4wNzE5NDUzKmUtLjIyODk5MTQqdCsxLjQwNTI0MjcqbiksdGhpcy5vcGFjaXR5KX19KSksYmgobWQsZmQseGgod2gse2JyaWdodGVyOmZ1bmN0aW9uKHQpe3JldHVybiBuZXcgbWQodGhpcy5oLHRoaXMuYyx0aGlzLmwrMTgqKG51bGw9PXQ/MTp0KSx0aGlzLm9wYWNpdHkpfSxkYXJrZXI6ZnVuY3Rpb24odCl7cmV0dXJuIG5ldyBtZCh0aGlzLmgsdGhpcy5jLHRoaXMubC0xOCoobnVsbD09dD8xOnQpLHRoaXMub3BhY2l0eSl9LHJnYjpmdW5jdGlvbigpe3JldHVybiBnZCh0aGlzKS5yZ2IoKX19KSk7dmFyIF9kPS0uMjkyMjcseWQ9LS45MDY0OSx2ZD0xLjk3Mjk0O2Z1bmN0aW9uIGJkKHQpe2lmKHQgaW5zdGFuY2VvZiB3ZClyZXR1cm4gbmV3IHdkKHQuaCx0LnMsdC5sLHQub3BhY2l0eSk7dCBpbnN0YW5jZW9mIFVofHwodD1WaCh0KSk7dmFyIGU9dC5nLzI1NSxuPXQuYi8yNTUsaT0oLS42NTU3NjM2NjY3OTk5OTk5Km4rdC5yLzI1NSotMS43ODg0NTAzODA2LTMuNTE3Mjk4MjQzOCplKS8tNS45NjE1MTIyOTEyLHI9bi1pLG89KHZkKihlLWkpLV9kKnIpL3lkLGE9TWF0aC5zcXJ0KG8qbytyKnIpLyh2ZCppKigxLWkpKSxzPWE/TWF0aC5hdGFuMihvLHIpKnRkLTEyMDpOYU47cmV0dXJuIG5ldyB3ZChzPDA/cyszNjA6cyxhLGksdC5vcGFjaXR5KX1mdW5jdGlvbiB4ZCh0LGUsbixpKXtyZXR1cm4gMT09PWFyZ3VtZW50cy5sZW5ndGg/YmQodCk6bmV3IHdkKHQsZSxuLG51bGw9PWk/MTppKX1mdW5jdGlvbiB3ZCh0LGUsbixpKXt0aGlzLmg9K3QsdGhpcy5zPStlLHRoaXMubD0rbix0aGlzLm9wYWNpdHk9K2l9ZnVuY3Rpb24gU2QodCxlLG4saSxyKXt2YXIgbz10KnQsYT1vKnQ7cmV0dXJuKCgxLTMqdCszKm8tYSkqZSsoNC02Km8rMyphKSpuKygxKzMqdCszKm8tMyphKSppK2EqcikvNn1mdW5jdGlvbiBNZCh0KXt2YXIgZT10Lmxlbmd0aC0xO3JldHVybiBmdW5jdGlvbihuKXt2YXIgaT1uPD0wP249MDpuPj0xPyhuPTEsZS0xKTpNYXRoLmZsb29yKG4qZSkscj10W2ldLG89dFtpKzFdO3JldHVybiBTZCgobi1pL2UpKmUsaT4wP3RbaS0xXToyKnItbyxyLG8saTxlLTE/dFtpKzJdOjIqby1yKX19ZnVuY3Rpb24gRWQodCl7dmFyIGU9dC5sZW5ndGg7cmV0dXJuIGZ1bmN0aW9uKG4pe3ZhciBpPU1hdGguZmxvb3IoKChuJT0xKTwwPysrbjpuKSplKTtyZXR1cm4gU2QoKG4taS9lKSplLHRbKGkrZS0xKSVlXSx0W2klZV0sdFsoaSsxKSVlXSx0WyhpKzIpJWVdKX19ZnVuY3Rpb24gVGQodCl7cmV0dXJuIGZ1bmN0aW9uKCl7cmV0dXJuIHR9fWZ1bmN0aW9uIEFkKHQsZSl7cmV0dXJuIGZ1bmN0aW9uKG4pe3JldHVybiB0K24qZX19ZnVuY3Rpb24gQ2QodCxlKXt2YXIgbj1lLXQ7cmV0dXJuIG4/QWQodCxuPjE4MHx8bjwtMTgwP24tMzYwKk1hdGgucm91bmQobi8zNjApOm4pOlRkKGlzTmFOKHQpP2U6dCl9ZnVuY3Rpb24ga2QodCxlKXt2YXIgbj1lLXQ7cmV0dXJuIG4/QWQodCxuKTpUZChpc05hTih0KT9lOnQpfWJoKHdkLHhkLHhoKHdoLHticmlnaHRlcjpmdW5jdGlvbih0KXtyZXR1cm4gdD1udWxsPT10P01oOk1hdGgucG93KE1oLHQpLG5ldyB3ZCh0aGlzLmgsdGhpcy5zLHRoaXMubCp0LHRoaXMub3BhY2l0eSl9LGRhcmtlcjpmdW5jdGlvbih0KXtyZXR1cm4gdD1udWxsPT10P1NoOk1hdGgucG93KFNoLHQpLG5ldyB3ZCh0aGlzLmgsdGhpcy5zLHRoaXMubCp0LHRoaXMub3BhY2l0eSl9LHJnYjpmdW5jdGlvbigpe3ZhciB0PWlzTmFOKHRoaXMuaCk/MDoodGhpcy5oKzEyMCkqUWgsZT0rdGhpcy5sLG49aXNOYU4odGhpcy5zKT8wOnRoaXMucyplKigxLWUpLGk9TWF0aC5jb3ModCkscj1NYXRoLnNpbih0KTtyZXR1cm4gbmV3IFVoKDI1NSooZStuKigtLjE0ODYxKmkrMS43ODI3NypyKSksMjU1KihlK24qKF9kKmkreWQqcikpLDI1NSooZStuKih2ZCppKSksdGhpcy5vcGFjaXR5KX19KSk7dmFyIExkPShmdW5jdGlvbiB0KGUpe3ZhciBuPShmdW5jdGlvbiBpKHQpe3JldHVybiAxPT0odD0rdCk/a2Q6ZnVuY3Rpb24oZSxuKXtyZXR1cm4gbi1lPyhmdW5jdGlvbiBpKHQsZSxuKXtyZXR1cm4gdD1NYXRoLnBvdyh0LG4pLGU9TWF0aC5wb3coZSxuKS10LG49MS9uLGZ1bmN0aW9uKGkpe3JldHVybiBNYXRoLnBvdyh0K2kqZSxuKX19KShlLG4sdCk6VGQoaXNOYU4oZSk/bjplKX19KShlKTtmdW5jdGlvbiByKHQsZSl7dmFyIGk9bigodD1qaCh0KSkuciwoZT1qaChlKSkucikscj1uKHQuZyxlLmcpLG89bih0LmIsZS5iKSxhPWtkKHQub3BhY2l0eSxlLm9wYWNpdHkpO3JldHVybiBmdW5jdGlvbihlKXtyZXR1cm4gdC5yPWkoZSksdC5nPXIoZSksdC5iPW8oZSksdC5vcGFjaXR5PWEoZSksdCsiIn19cmV0dXJuIHIuZ2FtbWE9dCxyfSkoMSk7ZnVuY3Rpb24gUGQodCl7cmV0dXJuIGZ1bmN0aW9uKGUpe3ZhciBuLGkscj1lLmxlbmd0aCxvPW5ldyBBcnJheShyKSxhPW5ldyBBcnJheShyKSxzPW5ldyBBcnJheShyKTtmb3Iobj0wO248cjsrK24paT1qaChlW25dKSxvW25dPWkucnx8MCxhW25dPWkuZ3x8MCxzW25dPWkuYnx8MDtyZXR1cm4gbz10KG8pLGE9dChhKSxzPXQocyksaS5vcGFjaXR5PTEsZnVuY3Rpb24odCl7cmV0dXJuIGkucj1vKHQpLGkuZz1hKHQpLGkuYj1zKHQpLGkrIiJ9fX12YXIgSWQ9UGQoTWQpLE5kPVBkKEVkKTtmdW5jdGlvbiBPZCh0LGUpe2V8fChlPVtdKTt2YXIgbixpPXQ/TWF0aC5taW4oZS5sZW5ndGgsdC5sZW5ndGgpOjAscj1lLnNsaWNlKCk7cmV0dXJuIGZ1bmN0aW9uKG8pe2ZvcihuPTA7bjxpOysrbilyW25dPXRbbl0qKDEtbykrZVtuXSpvO3JldHVybiByfX1mdW5jdGlvbiBSZCh0KXtyZXR1cm4gQXJyYXlCdWZmZXIuaXNWaWV3KHQpJiYhKHQgaW5zdGFuY2VvZiBEYXRhVmlldyl9ZnVuY3Rpb24gemQodCxlKXt2YXIgbixpPWU/ZS5sZW5ndGg6MCxyPXQ/TWF0aC5taW4oaSx0Lmxlbmd0aCk6MCxvPW5ldyBBcnJheShyKSxhPW5ldyBBcnJheShpKTtmb3Iobj0wO248cjsrK24pb1tuXT1VZCh0W25dLGVbbl0pO2Zvcig7bjxpOysrbilhW25dPWVbbl07cmV0dXJuIGZ1bmN0aW9uKHQpe2ZvcihuPTA7bjxyOysrbilhW25dPW9bbl0odCk7cmV0dXJuIGF9fWZ1bmN0aW9uIERkKHQsZSl7dmFyIG49bmV3IERhdGU7cmV0dXJuIHQ9K3QsZT0rZSxmdW5jdGlvbihpKXtyZXR1cm4gbi5zZXRUaW1lKHQqKDEtaSkrZSppKSxufX1mdW5jdGlvbiBCZCh0LGUpe3JldHVybiB0PSt0LGU9K2UsZnVuY3Rpb24obil7cmV0dXJuIHQqKDEtbikrZSpufX1mdW5jdGlvbiBIZCh0LGUpe3ZhciBuLGk9e30scj17fTtmb3IobiBpbiBudWxsIT09dCYmIm9iamVjdCI9PXR5cGVvZiB0fHwodD17fSksbnVsbCE9PWUmJiJvYmplY3QiPT10eXBlb2YgZXx8KGU9e30pLGUpbiBpbiB0P2lbbl09VWQodFtuXSxlW25dKTpyW25dPWVbbl07cmV0dXJuIGZ1bmN0aW9uKHQpe2ZvcihuIGluIGkpcltuXT1pW25dKHQpO3JldHVybiByfX12YXIgRmQ9L1stK10/KD86XGQrXC4/XGQqfFwuP1xkKykoPzpbZUVdWy0rXT9cZCspPy9nLFZkPW5ldyBSZWdFeHAoRmQuc291cmNlLCJnIik7ZnVuY3Rpb24gamQodCxlKXt2YXIgbixpLHIsbz1GZC5sYXN0SW5kZXg9VmQubGFzdEluZGV4PTAsYT0tMSxzPVtdLGw9W107Zm9yKHQrPSIiLGUrPSIiOyhuPUZkLmV4ZWModCkpJiYoaT1WZC5leGVjKGUpKTspKHI9aS5pbmRleCk+byYmKHI9ZS5zbGljZShvLHIpLHNbYV0/c1thXSs9cjpzWysrYV09ciksKG49blswXSk9PT0oaT1pWzBdKT9zW2FdP3NbYV0rPWk6c1srK2FdPWk6KHNbKythXT1udWxsLGwucHVzaCh7aTphLHg6QmQobixpKX0pKSxvPVZkLmxhc3RJbmRleDtyZXR1cm4gbzxlLmxlbmd0aCYmKHI9ZS5zbGljZShvKSxzW2FdP3NbYV0rPXI6c1srK2FdPXIpLHMubGVuZ3RoPDI/bFswXT8oZnVuY3Rpb24gYyh0KXtyZXR1cm4gZnVuY3Rpb24oZSl7cmV0dXJuIHQoZSkrIiJ9fSkobFswXS54KTooZnVuY3Rpb24gdSh0KXtyZXR1cm4gZnVuY3Rpb24oKXtyZXR1cm4gdH19KShlKTooZT1sLmxlbmd0aCxmdW5jdGlvbih0KXtmb3IodmFyIG4saT0wO2k8ZTsrK2kpc1sobj1sW2ldKS5pXT1uLngodCk7cmV0dXJuIHMuam9pbigiIil9KX1mdW5jdGlvbiBVZCh0LGUpe3ZhciBuLGk9dHlwZW9mIGU7cmV0dXJuIG51bGw9PWV8fCJib29sZWFuIj09PWk/VGQoZSk6KCJudW1iZXIiPT09aT9CZDoic3RyaW5nIj09PWk/KG49QmgoZSkpPyhlPW4sTGQpOmpkOmUgaW5zdGFuY2VvZiBCaD9MZDplIGluc3RhbmNlb2YgRGF0ZT9EZDpSZChlKT9PZDpBcnJheS5pc0FycmF5KGUpP3pkOiJmdW5jdGlvbiIhPXR5cGVvZiBlLnZhbHVlT2YmJiJmdW5jdGlvbiIhPXR5cGVvZiBlLnRvU3RyaW5nfHxpc05hTihlKT9IZDpCZCkodCxlKX1mdW5jdGlvbiBHZCh0LGUpe3JldHVybiB0PSt0LGU9K2UsZnVuY3Rpb24obil7cmV0dXJuIE1hdGgucm91bmQodCooMS1uKStlKm4pfX12YXIgV2QscWQsWWQsWGQsJGQ9MTgwL01hdGguUEksS2Q9e3RyYW5zbGF0ZVg6MCx0cmFuc2xhdGVZOjAscm90YXRlOjAsc2tld1g6MCxzY2FsZVg6MSxzY2FsZVk6MX07ZnVuY3Rpb24gWmQodCxlLG4saSxyLG8pe3ZhciBhLHMsbDtyZXR1cm4oYT1NYXRoLnNxcnQodCp0K2UqZSkpJiYodC89YSxlLz1hKSwobD10Km4rZSppKSYmKG4tPXQqbCxpLT1lKmwpLChzPU1hdGguc3FydChuKm4raSppKSkmJihuLz1zLGkvPXMsbC89cyksdCppPGUqbiYmKHQ9LXQsZT0tZSxsPS1sLGE9LWEpLHt0cmFuc2xhdGVYOnIsdHJhbnNsYXRlWTpvLHJvdGF0ZTpNYXRoLmF0YW4yKGUsdCkqJGQsc2tld1g6TWF0aC5hdGFuKGwpKiRkLHNjYWxlWDphLHNjYWxlWTpzfX1mdW5jdGlvbiBKZCh0LGUsbixpKXtmdW5jdGlvbiByKHQpe3JldHVybiB0Lmxlbmd0aD90LnBvcCgpKyIgIjoiIn1yZXR1cm4gZnVuY3Rpb24obyxhKXt2YXIgcz1bXSxsPVtdO3JldHVybiBvPXQobyksYT10KGEpLChmdW5jdGlvbiBjKHQsaSxyLG8sYSxzKXtpZih0IT09cnx8aSE9PW8pe3ZhciBsPWEucHVzaCgidHJhbnNsYXRlKCIsbnVsbCxlLG51bGwsbik7cy5wdXNoKHtpOmwtNCx4OkJkKHQscil9LHtpOmwtMix4OkJkKGksbyl9KX1lbHNlKHJ8fG8pJiZhLnB1c2goInRyYW5zbGF0ZSgiK3IrZStvK24pfSkoby50cmFuc2xhdGVYLG8udHJhbnNsYXRlWSxhLnRyYW5zbGF0ZVgsYS50cmFuc2xhdGVZLHMsbCksKGZ1bmN0aW9uIHUodCxlLG4sbyl7dCE9PWU/KHQtZT4xODA/ZSs9MzYwOmUtdD4xODAmJih0Kz0zNjApLG8ucHVzaCh7aTpuLnB1c2gocihuKSsicm90YXRlKCIsbnVsbCxpKS0yLHg6QmQodCxlKX0pKTplJiZuLnB1c2gocihuKSsicm90YXRlKCIrZStpKX0pKG8ucm90YXRlLGEucm90YXRlLHMsbCksKGZ1bmN0aW9uIGgodCxlLG4sbyl7dCE9PWU/by5wdXNoKHtpOm4ucHVzaChyKG4pKyJza2V3WCgiLG51bGwsaSktMix4OkJkKHQsZSl9KTplJiZuLnB1c2gocihuKSsic2tld1goIitlK2kpfSkoby5za2V3WCxhLnNrZXdYLHMsbCksKGZ1bmN0aW9uIGQodCxlLG4saSxvLGEpe2lmKHQhPT1ufHxlIT09aSl7dmFyIHM9by5wdXNoKHIobykrInNjYWxlKCIsbnVsbCwiLCIsbnVsbCwiKSIpO2EucHVzaCh7aTpzLTQseDpCZCh0LG4pfSx7aTpzLTIseDpCZChlLGkpfSl9ZWxzZSAxPT09biYmMT09PWl8fG8ucHVzaChyKG8pKyJzY2FsZSgiK24rIiwiK2krIikiKX0pKG8uc2NhbGVYLG8uc2NhbGVZLGEuc2NhbGVYLGEuc2NhbGVZLHMsbCksbz1hPW51bGwsZnVuY3Rpb24odCl7Zm9yKHZhciBlLG49LTEsaT1sLmxlbmd0aDsrK248aTspc1soZT1sW25dKS5pXT1lLngodCk7cmV0dXJuIHMuam9pbigiIil9fX12YXIgUWQ9SmQoKGZ1bmN0aW9uIHRwKHQpe3JldHVybiJub25lIj09PXQ/S2Q6KFdkfHwoV2Q9ZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgiRElWIikscWQ9ZG9jdW1lbnQuZG9jdW1lbnRFbGVtZW50LFlkPWRvY3VtZW50LmRlZmF1bHRWaWV3KSxXZC5zdHlsZS50cmFuc2Zvcm09dCx0PVlkLmdldENvbXB1dGVkU3R5bGUocWQuYXBwZW5kQ2hpbGQoV2QpLG51bGwpLmdldFByb3BlcnR5VmFsdWUoInRyYW5zZm9ybSIpLHFkLnJlbW92ZUNoaWxkKFdkKSxaZCgrKHQ9dC5zbGljZSg3LC0xKS5zcGxpdCgiLCIpKVswXSwrdFsxXSwrdFsyXSwrdFszXSwrdFs0XSwrdFs1XSkpfSksInB4LCAiLCJweCkiLCJkZWcpIiksZXA9SmQoKGZ1bmN0aW9uIG5wKHQpe3JldHVybiBudWxsPT10P0tkOihYZHx8KFhkPWRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciLCJnIikpLFhkLnNldEF0dHJpYnV0ZSgidHJhbnNmb3JtIix0KSwodD1YZC50cmFuc2Zvcm0uYmFzZVZhbC5jb25zb2xpZGF0ZSgpKT9aZCgodD10Lm1hdHJpeCkuYSx0LmIsdC5jLHQuZCx0LmUsdC5mKTpLZCl9KSwiLCAiLCIpIiwiKSIpLGlwPU1hdGguU1FSVDI7ZnVuY3Rpb24gcnAodCl7cmV0dXJuKCh0PU1hdGguZXhwKHQpKSsxL3QpLzJ9ZnVuY3Rpb24gb3AodCxlKXt2YXIgbixpLHI9dFswXSxvPXRbMV0sYT10WzJdLHM9ZVsyXSxsPWVbMF0tcixjPWVbMV0tbyx1PWwqbCtjKmM7aWYodTwxZS0xMilpPU1hdGgubG9nKHMvYSkvaXAsbj1mdW5jdGlvbih0KXtyZXR1cm5bcit0Kmwsbyt0KmMsYSpNYXRoLmV4cChpcCp0KmkpXX07ZWxzZXt2YXIgaD1NYXRoLnNxcnQodSksZD0ocypzLWEqYSs0KnUpLygyKmEqMipoKSxwPShzKnMtYSphLTQqdSkvKDIqcyoyKmgpLGY9TWF0aC5sb2coTWF0aC5zcXJ0KGQqZCsxKS1kKSxtPU1hdGgubG9nKE1hdGguc3FydChwKnArMSktcCk7aT0obS1mKS9pcCxuPWZ1bmN0aW9uKHQpe3ZhciBlPXQqaSxuPXJwKGYpLHM9YS8oMipoKSoobiooZnVuY3Rpb24gdSh0KXtyZXR1cm4oKHQ9TWF0aC5leHAoMip0KSktMSkvKHQrMSl9KShpcCplK2YpLShmdW5jdGlvbiBkKHQpe3JldHVybigodD1NYXRoLmV4cCh0KSktMS90KS8yfSkoZikpO3JldHVybltyK3MqbCxvK3MqYyxhKm4vcnAoaXAqZStmKV19fXJldHVybiBuLmR1cmF0aW9uPTFlMyppLG59ZnVuY3Rpb24gYXAodCl7cmV0dXJuIGZ1bmN0aW9uKGUsbil7dmFyIGk9dCgoZT0kaChlKSkuaCwobj0kaChuKSkuaCkscj1rZChlLnMsbi5zKSxvPWtkKGUubCxuLmwpLGE9a2QoZS5vcGFjaXR5LG4ub3BhY2l0eSk7cmV0dXJuIGZ1bmN0aW9uKHQpe3JldHVybiBlLmg9aSh0KSxlLnM9cih0KSxlLmw9byh0KSxlLm9wYWNpdHk9YSh0KSxlKyIifX19dmFyIHNwPWFwKENkKSxscD1hcChrZCk7ZnVuY3Rpb24gY3AodCxlKXt2YXIgbj1rZCgodD1zZCh0KSkubCwoZT1zZChlKSkubCksaT1rZCh0LmEsZS5hKSxyPWtkKHQuYixlLmIpLG89a2QodC5vcGFjaXR5LGUub3BhY2l0eSk7cmV0dXJuIGZ1bmN0aW9uKGUpe3JldHVybiB0Lmw9bihlKSx0LmE9aShlKSx0LmI9cihlKSx0Lm9wYWNpdHk9byhlKSx0KyIifX1mdW5jdGlvbiB1cCh0KXtyZXR1cm4gZnVuY3Rpb24oZSxuKXt2YXIgaT10KChlPWZkKGUpKS5oLChuPWZkKG4pKS5oKSxyPWtkKGUuYyxuLmMpLG89a2QoZS5sLG4ubCksYT1rZChlLm9wYWNpdHksbi5vcGFjaXR5KTtyZXR1cm4gZnVuY3Rpb24odCl7cmV0dXJuIGUuaD1pKHQpLGUuYz1yKHQpLGUubD1vKHQpLGUub3BhY2l0eT1hKHQpLGUrIiJ9fX12YXIgaHA9dXAoQ2QpLGRwPXVwKGtkKTtmdW5jdGlvbiBwcCh0KXtyZXR1cm4oZnVuY3Rpb24gZShuKXtmdW5jdGlvbiBpKGUsaSl7dmFyIHI9dCgoZT14ZChlKSkuaCwoaT14ZChpKSkuaCksbz1rZChlLnMsaS5zKSxhPWtkKGUubCxpLmwpLHM9a2QoZS5vcGFjaXR5LGkub3BhY2l0eSk7cmV0dXJuIGZ1bmN0aW9uKHQpe3JldHVybiBlLmg9cih0KSxlLnM9byh0KSxlLmw9YShNYXRoLnBvdyh0LG4pKSxlLm9wYWNpdHk9cyh0KSxlKyIifX1yZXR1cm4gbj0rbixpLmdhbW1hPWUsaX0pKDEpfXZhciBmcCxtcCxncD1wcChDZCksX3A9cHAoa2QpLHlwPTAsdnA9MCxicD0wLHhwPTAsd3A9MCxTcD0wLE1wPSJvYmplY3QiPT10eXBlb2YgcGVyZm9ybWFuY2UmJnBlcmZvcm1hbmNlLm5vdz9wZXJmb3JtYW5jZTpEYXRlLEVwPSJvYmplY3QiPT10eXBlb2Ygd2luZG93JiZ3aW5kb3cucmVxdWVzdEFuaW1hdGlvbkZyYW1lP3dpbmRvdy5yZXF1ZXN0QW5pbWF0aW9uRnJhbWUuYmluZCh3aW5kb3cpOmZ1bmN0aW9uKHQpe3NldFRpbWVvdXQodCwxNyl9O2Z1bmN0aW9uIFRwKCl7cmV0dXJuIHdwfHwoRXAoQXApLHdwPU1wLm5vdygpK1NwKX1mdW5jdGlvbiBBcCgpe3dwPTB9ZnVuY3Rpb24gQ3AoKXt0aGlzLl9jYWxsPXRoaXMuX3RpbWU9dGhpcy5fbmV4dD1udWxsfWZ1bmN0aW9uIGtwKHQsZSxuKXt2YXIgaT1uZXcgQ3A7cmV0dXJuIGkucmVzdGFydCh0LGUsbiksaX1mdW5jdGlvbiBMcCgpe1RwKCksKyt5cDtmb3IodmFyIHQsZT1mcDtlOykodD13cC1lLl90aW1lKT49MCYmZS5fY2FsbC5jYWxsKG51bGwsdCksZT1lLl9uZXh0Oy0teXB9ZnVuY3Rpb24gUHAoKXt3cD0oeHA9TXAubm93KCkpK1NwLHlwPXZwPTA7dHJ5e0xwKCl9ZmluYWxseXt5cD0wLChmdW5jdGlvbiB0KCl7Zm9yKHZhciB0LGUsbj1mcCxpPTEvMDtuOyluLl9jYWxsPyhpPm4uX3RpbWUmJihpPW4uX3RpbWUpLHQ9bixuPW4uX25leHQpOihlPW4uX25leHQsbi5fbmV4dD1udWxsLG49dD90Ll9uZXh0PWU6ZnA9ZSk7bXA9dCxOcChpKX0pKCksd3A9MH19ZnVuY3Rpb24gSXAoKXt2YXIgdD1NcC5ub3coKSxlPXQteHA7ZT4xZTMmJihTcC09ZSx4cD10KX1mdW5jdGlvbiBOcCh0KXt5cHx8KHZwJiYodnA9Y2xlYXJUaW1lb3V0KHZwKSksdC13cD4yND8odDwxLzAmJih2cD1zZXRUaW1lb3V0KFBwLHQtTXAubm93KCktU3ApKSxicCYmKGJwPWNsZWFySW50ZXJ2YWwoYnApKSk6KGJwfHwoeHA9TXAubm93KCksYnA9c2V0SW50ZXJ2YWwoSXAsMWUzKSkseXA9MSxFcChQcCkpKX1mdW5jdGlvbiBPcCh0LGUsbil7dmFyIGk9bmV3IENwO3JldHVybiBpLnJlc3RhcnQoKGZ1bmN0aW9uKG4pe2kuc3RvcCgpLHQobitlKX0pLGU9bnVsbD09ZT8wOitlLG4pLGl9Q3AucHJvdG90eXBlPWtwLnByb3RvdHlwZT17Y29uc3RydWN0b3I6Q3AscmVzdGFydDpmdW5jdGlvbih0LGUsbil7aWYoImZ1bmN0aW9uIiE9dHlwZW9mIHQpdGhyb3cgbmV3IFR5cGVFcnJvcigiY2FsbGJhY2sgaXMgbm90IGEgZnVuY3Rpb24iKTtuPShudWxsPT1uP1RwKCk6K24pKyhudWxsPT1lPzA6K2UpLHRoaXMuX25leHR8fG1wPT09dGhpc3x8KG1wP21wLl9uZXh0PXRoaXM6ZnA9dGhpcyxtcD10aGlzKSx0aGlzLl9jYWxsPXQsdGhpcy5fdGltZT1uLE5wKCl9LHN0b3A6ZnVuY3Rpb24oKXt0aGlzLl9jYWxsJiYodGhpcy5fY2FsbD1udWxsLHRoaXMuX3RpbWU9MS8wLE5wKCkpfX07dmFyIFJwPWxjKCJzdGFydCIsImVuZCIsImNhbmNlbCIsImludGVycnVwdCIpLHpwPVtdO2Z1bmN0aW9uIERwKHQsZSxuLGkscixvKXt2YXIgYT10Ll9fdHJhbnNpdGlvbjtpZihhKXtpZihuIGluIGEpcmV0dXJufWVsc2UgdC5fX3RyYW5zaXRpb249e307IShmdW5jdGlvbiBzKHQsZSxuKXt2YXIgaSxyPXQuX190cmFuc2l0aW9uO2Z1bmN0aW9uIG8obCl7dmFyIGMsdSxoLGQ7aWYoMSE9PW4uc3RhdGUpcmV0dXJuIHMoKTtmb3IoYyBpbiByKWlmKChkPXJbY10pLm5hbWU9PT1uLm5hbWUpe2lmKDM9PT1kLnN0YXRlKXJldHVybiBPcChvKTs0PT09ZC5zdGF0ZT8oZC5zdGF0ZT02LGQudGltZXIuc3RvcCgpLGQub24uY2FsbCgiaW50ZXJydXB0Iix0LHQuX19kYXRhX18sZC5pbmRleCxkLmdyb3VwKSxkZWxldGUgcltjXSk6K2M8ZSYmKGQuc3RhdGU9NixkLnRpbWVyLnN0b3AoKSxkLm9uLmNhbGwoImNhbmNlbCIsdCx0Ll9fZGF0YV9fLGQuaW5kZXgsZC5ncm91cCksZGVsZXRlIHJbY10pfWlmKE9wKChmdW5jdGlvbigpezM9PT1uLnN0YXRlJiYobi5zdGF0ZT00LG4udGltZXIucmVzdGFydChhLG4uZGVsYXksbi50aW1lKSxhKGwpKX0pKSxuLnN0YXRlPTIsbi5vbi5jYWxsKCJzdGFydCIsdCx0Ll9fZGF0YV9fLG4uaW5kZXgsbi5ncm91cCksMj09PW4uc3RhdGUpe2ZvcihuLnN0YXRlPTMsaT1uZXcgQXJyYXkoaD1uLnR3ZWVuLmxlbmd0aCksYz0wLHU9LTE7YzxoOysrYykoZD1uLnR3ZWVuW2NdLnZhbHVlLmNhbGwodCx0Ll9fZGF0YV9fLG4uaW5kZXgsbi5ncm91cCkpJiYoaVsrK3VdPWQpO2kubGVuZ3RoPXUrMX19ZnVuY3Rpb24gYShlKXtmb3IodmFyIHI9ZTxuLmR1cmF0aW9uP24uZWFzZS5jYWxsKG51bGwsZS9uLmR1cmF0aW9uKToobi50aW1lci5yZXN0YXJ0KHMpLG4uc3RhdGU9NSwxKSxvPS0xLGE9aS5sZW5ndGg7KytvPGE7KWlbb10uY2FsbCh0LHIpOzU9PT1uLnN0YXRlJiYobi5vbi5jYWxsKCJlbmQiLHQsdC5fX2RhdGFfXyxuLmluZGV4LG4uZ3JvdXApLHMoKSl9ZnVuY3Rpb24gcygpe2Zvcih2YXIgaSBpbiBuLnN0YXRlPTYsbi50aW1lci5zdG9wKCksZGVsZXRlIHJbZV0scilyZXR1cm47ZGVsZXRlIHQuX190cmFuc2l0aW9ufXJbZV09bixuLnRpbWVyPWtwKChmdW5jdGlvbiBsKHQpe24uc3RhdGU9MSxuLnRpbWVyLnJlc3RhcnQobyxuLmRlbGF5LG4udGltZSksbi5kZWxheTw9dCYmbyh0LW4uZGVsYXkpfSksMCxuLnRpbWUpfSkodCxuLHtuYW1lOmUsaW5kZXg6aSxncm91cDpyLG9uOlJwLHR3ZWVuOnpwLHRpbWU6by50aW1lLGRlbGF5Om8uZGVsYXksZHVyYXRpb246by5kdXJhdGlvbixlYXNlOm8uZWFzZSx0aW1lcjpudWxsLHN0YXRlOjB9KX1mdW5jdGlvbiBCcCh0LGUpe3ZhciBuPUZwKHQsZSk7aWYobi5zdGF0ZT4wKXRocm93IG5ldyBFcnJvcigidG9vIGxhdGU7IGFscmVhZHkgc2NoZWR1bGVkIik7cmV0dXJuIG59ZnVuY3Rpb24gSHAodCxlKXt2YXIgbj1GcCh0LGUpO2lmKG4uc3RhdGU+Myl0aHJvdyBuZXcgRXJyb3IoInRvbyBsYXRlOyBhbHJlYWR5IHJ1bm5pbmciKTtyZXR1cm4gbn1mdW5jdGlvbiBGcCh0LGUpe3ZhciBuPXQuX190cmFuc2l0aW9uO2lmKCFufHwhKG49bltlXSkpdGhyb3cgbmV3IEVycm9yKCJ0cmFuc2l0aW9uIG5vdCBmb3VuZCIpO3JldHVybiBufWZ1bmN0aW9uIFZwKHQsZSl7dmFyIG4saSxyLG89dC5fX3RyYW5zaXRpb24sYT0hMDtpZihvKXtmb3IociBpbiBlPW51bGw9PWU/bnVsbDplKyIiLG8pKG49b1tyXSkubmFtZT09PWU/KGk9bi5zdGF0ZT4yJiZuLnN0YXRlPDUsbi5zdGF0ZT02LG4udGltZXIuc3RvcCgpLG4ub24uY2FsbChpPyJpbnRlcnJ1cHQiOiJjYW5jZWwiLHQsdC5fX2RhdGFfXyxuLmluZGV4LG4uZ3JvdXApLGRlbGV0ZSBvW3JdKTphPSExO2EmJmRlbGV0ZSB0Ll9fdHJhbnNpdGlvbn19ZnVuY3Rpb24ganAodCxlKXt2YXIgbixpO3JldHVybiBmdW5jdGlvbigpe3ZhciByPUhwKHRoaXMsdCksbz1yLnR3ZWVuO2lmKG8hPT1uKWZvcih2YXIgYT0wLHM9KGk9bj1vKS5sZW5ndGg7YTxzOysrYSlpZihpW2FdLm5hbWU9PT1lKXsoaT1pLnNsaWNlKCkpLnNwbGljZShhLDEpO2JyZWFrfXIudHdlZW49aX19ZnVuY3Rpb24gVXAodCxlLG4pe3ZhciBpLHI7aWYoImZ1bmN0aW9uIiE9dHlwZW9mIG4pdGhyb3cgbmV3IEVycm9yO3JldHVybiBmdW5jdGlvbigpe3ZhciBvPUhwKHRoaXMsdCksYT1vLnR3ZWVuO2lmKGEhPT1pKXtyPShpPWEpLnNsaWNlKCk7Zm9yKHZhciBzPXtuYW1lOmUsdmFsdWU6bn0sbD0wLGM9ci5sZW5ndGg7bDxjOysrbClpZihyW2xdLm5hbWU9PT1lKXtyW2xdPXM7YnJlYWt9bD09PWMmJnIucHVzaChzKX1vLnR3ZWVuPXJ9fWZ1bmN0aW9uIEdwKHQsZSxuKXt2YXIgaT10Ll9pZDtyZXR1cm4gdC5lYWNoKChmdW5jdGlvbigpe3ZhciB0PUhwKHRoaXMsaSk7KHQudmFsdWV8fCh0LnZhbHVlPXt9KSlbZV09bi5hcHBseSh0aGlzLGFyZ3VtZW50cyl9KSksZnVuY3Rpb24odCl7cmV0dXJuIEZwKHQsaSkudmFsdWVbZV19fWZ1bmN0aW9uIFdwKHQsZSl7dmFyIG47cmV0dXJuKCJudW1iZXIiPT10eXBlb2YgZT9CZDplIGluc3RhbmNlb2YgQmg/TGQ6KG49QmgoZSkpPyhlPW4sTGQpOmpkKSh0LGUpfWZ1bmN0aW9uIHFwKHQpe3JldHVybiBmdW5jdGlvbigpe3RoaXMucmVtb3ZlQXR0cmlidXRlKHQpfX1mdW5jdGlvbiBZcCh0KXtyZXR1cm4gZnVuY3Rpb24oKXt0aGlzLnJlbW92ZUF0dHJpYnV0ZU5TKHQuc3BhY2UsdC5sb2NhbCl9fWZ1bmN0aW9uIFhwKHQsZSxuKXt2YXIgaSxyLG89bisiIjtyZXR1cm4gZnVuY3Rpb24oKXt2YXIgYT10aGlzLmdldEF0dHJpYnV0ZSh0KTtyZXR1cm4gYT09PW8/bnVsbDphPT09aT9yOnI9ZShpPWEsbil9fWZ1bmN0aW9uICRwKHQsZSxuKXt2YXIgaSxyLG89bisiIjtyZXR1cm4gZnVuY3Rpb24oKXt2YXIgYT10aGlzLmdldEF0dHJpYnV0ZU5TKHQuc3BhY2UsdC5sb2NhbCk7cmV0dXJuIGE9PT1vP251bGw6YT09PWk/cjpyPWUoaT1hLG4pfX1mdW5jdGlvbiBLcCh0LGUsbil7dmFyIGkscixvO3JldHVybiBmdW5jdGlvbigpe3ZhciBhLHMsbD1uKHRoaXMpO2lmKG51bGwhPWwpcmV0dXJuKGE9dGhpcy5nZXRBdHRyaWJ1dGUodCkpPT09KHM9bCsiIik/bnVsbDphPT09aSYmcz09PXI/bzoocj1zLG89ZShpPWEsbCkpO3RoaXMucmVtb3ZlQXR0cmlidXRlKHQpfX1mdW5jdGlvbiBacCh0LGUsbil7dmFyIGkscixvO3JldHVybiBmdW5jdGlvbigpe3ZhciBhLHMsbD1uKHRoaXMpO2lmKG51bGwhPWwpcmV0dXJuKGE9dGhpcy5nZXRBdHRyaWJ1dGVOUyh0LnNwYWNlLHQubG9jYWwpKT09PShzPWwrIiIpP251bGw6YT09PWkmJnM9PT1yP286KHI9cyxvPWUoaT1hLGwpKTt0aGlzLnJlbW92ZUF0dHJpYnV0ZU5TKHQuc3BhY2UsdC5sb2NhbCl9fWZ1bmN0aW9uIEpwKHQsZSl7cmV0dXJuIGZ1bmN0aW9uKG4pe3RoaXMuc2V0QXR0cmlidXRlKHQsZS5jYWxsKHRoaXMsbikpfX1mdW5jdGlvbiBRcCh0LGUpe3JldHVybiBmdW5jdGlvbihuKXt0aGlzLnNldEF0dHJpYnV0ZU5TKHQuc3BhY2UsdC5sb2NhbCxlLmNhbGwodGhpcyxuKSl9fWZ1bmN0aW9uIHRmKHQsZSl7dmFyIG4saTtmdW5jdGlvbiByKCl7dmFyIHI9ZS5hcHBseSh0aGlzLGFyZ3VtZW50cyk7cmV0dXJuIHIhPT1pJiYobj0oaT1yKSYmUXAodCxyKSksbn1yZXR1cm4gci5fdmFsdWU9ZSxyfWZ1bmN0aW9uIGVmKHQsZSl7dmFyIG4saTtmdW5jdGlvbiByKCl7dmFyIHI9ZS5hcHBseSh0aGlzLGFyZ3VtZW50cyk7cmV0dXJuIHIhPT1pJiYobj0oaT1yKSYmSnAodCxyKSksbn1yZXR1cm4gci5fdmFsdWU9ZSxyfWZ1bmN0aW9uIG5mKHQsZSl7cmV0dXJuIGZ1bmN0aW9uKCl7QnAodGhpcyx0KS5kZWxheT0rZS5hcHBseSh0aGlzLGFyZ3VtZW50cyl9fWZ1bmN0aW9uIHJmKHQsZSl7cmV0dXJuIGU9K2UsZnVuY3Rpb24oKXtCcCh0aGlzLHQpLmRlbGF5PWV9fWZ1bmN0aW9uIG9mKHQsZSl7cmV0dXJuIGZ1bmN0aW9uKCl7SHAodGhpcyx0KS5kdXJhdGlvbj0rZS5hcHBseSh0aGlzLGFyZ3VtZW50cyl9fWZ1bmN0aW9uIGFmKHQsZSl7cmV0dXJuIGU9K2UsZnVuY3Rpb24oKXtIcCh0aGlzLHQpLmR1cmF0aW9uPWV9fWZ1bmN0aW9uIHNmKHQsZSl7aWYoImZ1bmN0aW9uIiE9dHlwZW9mIGUpdGhyb3cgbmV3IEVycm9yO3JldHVybiBmdW5jdGlvbigpe0hwKHRoaXMsdCkuZWFzZT1lfX1mdW5jdGlvbiBsZih0LGUsbil7dmFyIGkscixvPShmdW5jdGlvbiBhKHQpe3JldHVybih0KyIiKS50cmltKCkuc3BsaXQoL158XHMrLykuZXZlcnkoKGZ1bmN0aW9uKHQpe3ZhciBlPXQuaW5kZXhPZigiLiIpO3JldHVybiBlPj0wJiYodD10LnNsaWNlKDAsZSkpLCF0fHwic3RhcnQiPT09dH0pKX0pKGUpP0JwOkhwO3JldHVybiBmdW5jdGlvbigpe3ZhciBhPW8odGhpcyx0KSxzPWEub247cyE9PWkmJihyPShpPXMpLmNvcHkoKSkub24oZSxuKSxhLm9uPXJ9fXZhciBjZj13dS5wcm90b3R5cGUuY29uc3RydWN0b3I7ZnVuY3Rpb24gdWYodCl7cmV0dXJuIGZ1bmN0aW9uKCl7dGhpcy5zdHlsZS5yZW1vdmVQcm9wZXJ0eSh0KX19ZnVuY3Rpb24gaGYodCxlLG4pe3JldHVybiBmdW5jdGlvbihpKXt0aGlzLnN0eWxlLnNldFByb3BlcnR5KHQsZS5jYWxsKHRoaXMsaSksbil9fWZ1bmN0aW9uIGRmKHQsZSxuKXt2YXIgaSxyO2Z1bmN0aW9uIG8oKXt2YXIgbz1lLmFwcGx5KHRoaXMsYXJndW1lbnRzKTtyZXR1cm4gbyE9PXImJihpPShyPW8pJiZoZih0LG8sbikpLGl9cmV0dXJuIG8uX3ZhbHVlPWUsb31mdW5jdGlvbiBwZih0KXtyZXR1cm4gZnVuY3Rpb24oZSl7dGhpcy50ZXh0Q29udGVudD10LmNhbGwodGhpcyxlKX19ZnVuY3Rpb24gZmYodCl7dmFyIGUsbjtmdW5jdGlvbiBpKCl7dmFyIGk9dC5hcHBseSh0aGlzLGFyZ3VtZW50cyk7cmV0dXJuIGkhPT1uJiYoZT0obj1pKSYmcGYoaSkpLGV9cmV0dXJuIGkuX3ZhbHVlPXQsaX12YXIgbWY9MDtmdW5jdGlvbiBnZih0LGUsbixpKXt0aGlzLl9ncm91cHM9dCx0aGlzLl9wYXJlbnRzPWUsdGhpcy5fbmFtZT1uLHRoaXMuX2lkPWl9ZnVuY3Rpb24gX2YodCl7cmV0dXJuIHd1KCkudHJhbnNpdGlvbih0KX1mdW5jdGlvbiB5Zigpe3JldHVybisrbWZ9dmFyIHZmPXd1LnByb3RvdHlwZTtmdW5jdGlvbiBiZih0KXtyZXR1cm4rdH1mdW5jdGlvbiB4Zih0KXtyZXR1cm4gdCp0fWZ1bmN0aW9uIHdmKHQpe3JldHVybiB0KigyLXQpfWZ1bmN0aW9uIFNmKHQpe3JldHVybigodCo9Mik8PTE/dCp0Oi0tdCooMi10KSsxKS8yfWZ1bmN0aW9uIE1mKHQpe3JldHVybiB0KnQqdH1mdW5jdGlvbiBFZih0KXtyZXR1cm4tLXQqdCp0KzF9ZnVuY3Rpb24gVGYodCl7cmV0dXJuKCh0Kj0yKTw9MT90KnQqdDoodC09MikqdCp0KzIpLzJ9Z2YucHJvdG90eXBlPV9mLnByb3RvdHlwZT17Y29uc3RydWN0b3I6Z2Ysc2VsZWN0OmZ1bmN0aW9uIEFmKHQpe3ZhciBlPXRoaXMuX25hbWUsbj10aGlzLl9pZDsiZnVuY3Rpb24iIT10eXBlb2YgdCYmKHQ9YmModCkpO2Zvcih2YXIgaT10aGlzLl9ncm91cHMscj1pLmxlbmd0aCxvPW5ldyBBcnJheShyKSxhPTA7YTxyOysrYSlmb3IodmFyIHMsbCxjPWlbYV0sdT1jLmxlbmd0aCxoPW9bYV09bmV3IEFycmF5KHUpLGQ9MDtkPHU7KytkKShzPWNbZF0pJiYobD10LmNhbGwocyxzLl9fZGF0YV9fLGQsYykpJiYoIl9fZGF0YV9fImluIHMmJihsLl9fZGF0YV9fPXMuX19kYXRhX18pLGhbZF09bCxEcChoW2RdLGUsbixkLGgsRnAocyxuKSkpO3JldHVybiBuZXcgZ2Yobyx0aGlzLl9wYXJlbnRzLGUsbil9LHNlbGVjdEFsbDpmdW5jdGlvbiBDZih0KXt2YXIgZT10aGlzLl9uYW1lLG49dGhpcy5faWQ7ImZ1bmN0aW9uIiE9dHlwZW9mIHQmJih0PXdjKHQpKTtmb3IodmFyIGk9dGhpcy5fZ3JvdXBzLHI9aS5sZW5ndGgsbz1bXSxhPVtdLHM9MDtzPHI7KytzKWZvcih2YXIgbCxjPWlbc10sdT1jLmxlbmd0aCxoPTA7aDx1OysraClpZihsPWNbaF0pe2Zvcih2YXIgZCxwPXQuY2FsbChsLGwuX19kYXRhX18saCxjKSxmPUZwKGwsbiksbT0wLGc9cC5sZW5ndGg7bTxnOysrbSkoZD1wW21dKSYmRHAoZCxlLG4sbSxwLGYpO28ucHVzaChwKSxhLnB1c2gobCl9cmV0dXJuIG5ldyBnZihvLGEsZSxuKX0sZmlsdGVyOmZ1bmN0aW9uIGtmKHQpeyJmdW5jdGlvbiIhPXR5cGVvZiB0JiYodD1TYyh0KSk7Zm9yKHZhciBlPXRoaXMuX2dyb3VwcyxuPWUubGVuZ3RoLGk9bmV3IEFycmF5KG4pLHI9MDtyPG47KytyKWZvcih2YXIgbyxhPWVbcl0scz1hLmxlbmd0aCxsPWlbcl09W10sYz0wO2M8czsrK2MpKG89YVtjXSkmJnQuY2FsbChvLG8uX19kYXRhX18sYyxhKSYmbC5wdXNoKG8pO3JldHVybiBuZXcgZ2YoaSx0aGlzLl9wYXJlbnRzLHRoaXMuX25hbWUsdGhpcy5faWQpfSxtZXJnZTpmdW5jdGlvbiBMZih0KXtpZih0Ll9pZCE9PXRoaXMuX2lkKXRocm93IG5ldyBFcnJvcjtmb3IodmFyIGU9dGhpcy5fZ3JvdXBzLG49dC5fZ3JvdXBzLGk9ZS5sZW5ndGgscj1NYXRoLm1pbihpLG4ubGVuZ3RoKSxvPW5ldyBBcnJheShpKSxhPTA7YTxyOysrYSlmb3IodmFyIHMsbD1lW2FdLGM9blthXSx1PWwubGVuZ3RoLGg9b1thXT1uZXcgQXJyYXkodSksZD0wO2Q8dTsrK2QpKHM9bFtkXXx8Y1tkXSkmJihoW2RdPXMpO2Zvcig7YTxpOysrYSlvW2FdPWVbYV07cmV0dXJuIG5ldyBnZihvLHRoaXMuX3BhcmVudHMsdGhpcy5fbmFtZSx0aGlzLl9pZCl9LHNlbGVjdGlvbjpmdW5jdGlvbiBQZigpe3JldHVybiBuZXcgY2YodGhpcy5fZ3JvdXBzLHRoaXMuX3BhcmVudHMpfSx0cmFuc2l0aW9uOmZ1bmN0aW9uIElmKCl7Zm9yKHZhciB0PXRoaXMuX25hbWUsZT10aGlzLl9pZCxuPXlmKCksaT10aGlzLl9ncm91cHMscj1pLmxlbmd0aCxvPTA7bzxyOysrbylmb3IodmFyIGEscz1pW29dLGw9cy5sZW5ndGgsYz0wO2M8bDsrK2MpaWYoYT1zW2NdKXt2YXIgdT1GcChhLGUpO0RwKGEsdCxuLGMscyx7dGltZTp1LnRpbWUrdS5kZWxheSt1LmR1cmF0aW9uLGRlbGF5OjAsZHVyYXRpb246dS5kdXJhdGlvbixlYXNlOnUuZWFzZX0pfXJldHVybiBuZXcgZ2YoaSx0aGlzLl9wYXJlbnRzLHQsbil9LGNhbGw6dmYuY2FsbCxub2Rlczp2Zi5ub2Rlcyxub2RlOnZmLm5vZGUsc2l6ZTp2Zi5zaXplLGVtcHR5OnZmLmVtcHR5LGVhY2g6dmYuZWFjaCxvbjpmdW5jdGlvbiBOZih0LGUpe3ZhciBuPXRoaXMuX2lkO3JldHVybiBhcmd1bWVudHMubGVuZ3RoPDI/RnAodGhpcy5ub2RlKCksbikub24ub24odCk6dGhpcy5lYWNoKGxmKG4sdCxlKSl9LGF0dHI6ZnVuY3Rpb24gT2YodCxlKXt2YXIgbj1tYyh0KSxpPSJ0cmFuc2Zvcm0iPT09bj9lcDpXcDtyZXR1cm4gdGhpcy5hdHRyVHdlZW4odCwiZnVuY3Rpb24iPT10eXBlb2YgZT8obi5sb2NhbD9acDpLcCkobixpLEdwKHRoaXMsImF0dHIuIit0LGUpKTpudWxsPT1lPyhuLmxvY2FsP1lwOnFwKShuKToobi5sb2NhbD8kcDpYcCkobixpLGUpKX0sYXR0clR3ZWVuOmZ1bmN0aW9uIFJmKHQsZSl7dmFyIG49ImF0dHIuIit0O2lmKGFyZ3VtZW50cy5sZW5ndGg8MilyZXR1cm4obj10aGlzLnR3ZWVuKG4pKSYmbi5fdmFsdWU7aWYobnVsbD09ZSlyZXR1cm4gdGhpcy50d2VlbihuLG51bGwpO2lmKCJmdW5jdGlvbiIhPXR5cGVvZiBlKXRocm93IG5ldyBFcnJvcjt2YXIgaT1tYyh0KTtyZXR1cm4gdGhpcy50d2VlbihuLChpLmxvY2FsP3RmOmVmKShpLGUpKX0sc3R5bGU6ZnVuY3Rpb24gemYodCxlLG4pe3ZhciBpPSJ0cmFuc2Zvcm0iPT0odCs9IiIpP1FkOldwO3JldHVybiBudWxsPT1lP3RoaXMuc3R5bGVUd2Vlbih0LChmdW5jdGlvbiByKHQsZSl7dmFyIG4saSxyO3JldHVybiBmdW5jdGlvbigpe3ZhciBvPUhjKHRoaXMsdCksYT0odGhpcy5zdHlsZS5yZW1vdmVQcm9wZXJ0eSh0KSxIYyh0aGlzLHQpKTtyZXR1cm4gbz09PWE/bnVsbDpvPT09biYmYT09PWk/cjpyPWUobj1vLGk9YSl9fSkodCxpKSkub24oImVuZC5zdHlsZS4iK3QsdWYodCkpOiJmdW5jdGlvbiI9PXR5cGVvZiBlP3RoaXMuc3R5bGVUd2Vlbih0LChmdW5jdGlvbiBhKHQsZSxuKXt2YXIgaSxyLG87cmV0dXJuIGZ1bmN0aW9uKCl7dmFyIGE9SGModGhpcyx0KSxzPW4odGhpcyksbD1zKyIiO3JldHVybiBudWxsPT1zJiYodGhpcy5zdHlsZS5yZW1vdmVQcm9wZXJ0eSh0KSxsPXM9SGModGhpcyx0KSksYT09PWw/bnVsbDphPT09aSYmbD09PXI/bzoocj1sLG89ZShpPWEscykpfX0pKHQsaSxHcCh0aGlzLCJzdHlsZS4iK3QsZSkpKS5lYWNoKChmdW5jdGlvbiBvKHQsZSl7dmFyIG4saSxyLG8sYT0ic3R5bGUuIitlLHM9ImVuZC4iK2E7cmV0dXJuIGZ1bmN0aW9uKCl7dmFyIGw9SHAodGhpcyx0KSxjPWwub24sdT1udWxsPT1sLnZhbHVlW2FdP298fChvPXVmKGUpKTp2b2lkIDA7Yz09PW4mJnI9PT11fHwoaT0obj1jKS5jb3B5KCkpLm9uKHMscj11KSxsLm9uPWl9fSkodGhpcy5faWQsdCkpOnRoaXMuc3R5bGVUd2Vlbih0LChmdW5jdGlvbiBzKHQsZSxuKXt2YXIgaSxyLG89bisiIjtyZXR1cm4gZnVuY3Rpb24oKXt2YXIgYT1IYyh0aGlzLHQpO3JldHVybiBhPT09bz9udWxsOmE9PT1pP3I6cj1lKGk9YSxuKX19KSh0LGksZSksbikub24oImVuZC5zdHlsZS4iK3QsbnVsbCl9LHN0eWxlVHdlZW46ZnVuY3Rpb24gRGYodCxlLG4pe3ZhciBpPSJzdHlsZS4iKyh0Kz0iIik7aWYoYXJndW1lbnRzLmxlbmd0aDwyKXJldHVybihpPXRoaXMudHdlZW4oaSkpJiZpLl92YWx1ZTtpZihudWxsPT1lKXJldHVybiB0aGlzLnR3ZWVuKGksbnVsbCk7aWYoImZ1bmN0aW9uIiE9dHlwZW9mIGUpdGhyb3cgbmV3IEVycm9yO3JldHVybiB0aGlzLnR3ZWVuKGksZGYodCxlLG51bGw9PW4/IiI6bikpfSx0ZXh0OmZ1bmN0aW9uIEJmKHQpe3JldHVybiB0aGlzLnR3ZWVuKCJ0ZXh0IiwiZnVuY3Rpb24iPT10eXBlb2YgdD8oZnVuY3Rpb24gZSh0KXtyZXR1cm4gZnVuY3Rpb24oKXt2YXIgZT10KHRoaXMpO3RoaXMudGV4dENvbnRlbnQ9bnVsbD09ZT8iIjplfX0pKEdwKHRoaXMsInRleHQiLHQpKTooZnVuY3Rpb24gbih0KXtyZXR1cm4gZnVuY3Rpb24oKXt0aGlzLnRleHRDb250ZW50PXR9fSkobnVsbD09dD8iIjp0KyIiKSl9LHRleHRUd2VlbjpmdW5jdGlvbiBIZih0KXt2YXIgZT0idGV4dCI7aWYoYXJndW1lbnRzLmxlbmd0aDwxKXJldHVybihlPXRoaXMudHdlZW4oZSkpJiZlLl92YWx1ZTtpZihudWxsPT10KXJldHVybiB0aGlzLnR3ZWVuKGUsbnVsbCk7aWYoImZ1bmN0aW9uIiE9dHlwZW9mIHQpdGhyb3cgbmV3IEVycm9yO3JldHVybiB0aGlzLnR3ZWVuKGUsZmYodCkpfSxyZW1vdmU6ZnVuY3Rpb24gRmYoKXtyZXR1cm4gdGhpcy5vbigiZW5kLnJlbW92ZSIsKGZ1bmN0aW9uIHQoZSl7cmV0dXJuIGZ1bmN0aW9uKCl7dmFyIHQ9dGhpcy5wYXJlbnROb2RlO2Zvcih2YXIgbiBpbiB0aGlzLl9fdHJhbnNpdGlvbilpZigrbiE9PWUpcmV0dXJuO3QmJnQucmVtb3ZlQ2hpbGQodGhpcyl9fSkodGhpcy5faWQpKX0sdHdlZW46ZnVuY3Rpb24gVmYodCxlKXt2YXIgbj10aGlzLl9pZDtpZih0Kz0iIixhcmd1bWVudHMubGVuZ3RoPDIpe2Zvcih2YXIgaSxyPUZwKHRoaXMubm9kZSgpLG4pLnR3ZWVuLG89MCxhPXIubGVuZ3RoO288YTsrK28paWYoKGk9cltvXSkubmFtZT09PXQpcmV0dXJuIGkudmFsdWU7cmV0dXJuIG51bGx9cmV0dXJuIHRoaXMuZWFjaCgobnVsbD09ZT9qcDpVcCkobix0LGUpKX0sZGVsYXk6ZnVuY3Rpb24gamYodCl7dmFyIGU9dGhpcy5faWQ7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/dGhpcy5lYWNoKCgiZnVuY3Rpb24iPT10eXBlb2YgdD9uZjpyZikoZSx0KSk6RnAodGhpcy5ub2RlKCksZSkuZGVsYXl9LGR1cmF0aW9uOmZ1bmN0aW9uIFVmKHQpe3ZhciBlPXRoaXMuX2lkO3JldHVybiBhcmd1bWVudHMubGVuZ3RoP3RoaXMuZWFjaCgoImZ1bmN0aW9uIj09dHlwZW9mIHQ/b2Y6YWYpKGUsdCkpOkZwKHRoaXMubm9kZSgpLGUpLmR1cmF0aW9ufSxlYXNlOmZ1bmN0aW9uIEdmKHQpe3ZhciBlPXRoaXMuX2lkO3JldHVybiBhcmd1bWVudHMubGVuZ3RoP3RoaXMuZWFjaChzZihlLHQpKTpGcCh0aGlzLm5vZGUoKSxlKS5lYXNlfSxlbmQ6ZnVuY3Rpb24gV2YoKXt2YXIgdCxlLG49dGhpcyxpPW4uX2lkLHI9bi5zaXplKCk7cmV0dXJuIG5ldyBQcm9taXNlKChmdW5jdGlvbihvLGEpe3ZhciBzPXt2YWx1ZTphfSxsPXt2YWx1ZTpmdW5jdGlvbigpezA9PS0tciYmbygpfX07bi5lYWNoKChmdW5jdGlvbigpe3ZhciBuPUhwKHRoaXMsaSkscj1uLm9uO3IhPT10JiYoKGU9KHQ9cikuY29weSgpKS5fLmNhbmNlbC5wdXNoKHMpLGUuXy5pbnRlcnJ1cHQucHVzaChzKSxlLl8uZW5kLnB1c2gobCkpLG4ub249ZX0pKX0pKX19O3ZhciBxZj0oZnVuY3Rpb24gdChlKXtmdW5jdGlvbiBuKHQpe3JldHVybiBNYXRoLnBvdyh0LGUpfXJldHVybiBlPStlLG4uZXhwb25lbnQ9dCxufSkoMyksWWY9KGZ1bmN0aW9uIHQoZSl7ZnVuY3Rpb24gbih0KXtyZXR1cm4gMS1NYXRoLnBvdygxLXQsZSl9cmV0dXJuIGU9K2Usbi5leHBvbmVudD10LG59KSgzKSxYZj0oZnVuY3Rpb24gdChlKXtmdW5jdGlvbiBuKHQpe3JldHVybigodCo9Mik8PTE/TWF0aC5wb3codCxlKToyLU1hdGgucG93KDItdCxlKSkvMn1yZXR1cm4gZT0rZSxuLmV4cG9uZW50PXQsbn0pKDMpLCRmPU1hdGguUEksS2Y9JGYvMjtmdW5jdGlvbiBaZih0KXtyZXR1cm4gMS1NYXRoLmNvcyh0KktmKX1mdW5jdGlvbiBKZih0KXtyZXR1cm4gTWF0aC5zaW4odCpLZil9ZnVuY3Rpb24gUWYodCl7cmV0dXJuKDEtTWF0aC5jb3MoJGYqdCkpLzJ9ZnVuY3Rpb24gdG0odCl7cmV0dXJuIE1hdGgucG93KDIsMTAqdC0xMCl9ZnVuY3Rpb24gZW0odCl7cmV0dXJuIDEtTWF0aC5wb3coMiwtMTAqdCl9ZnVuY3Rpb24gbm0odCl7cmV0dXJuKCh0Kj0yKTw9MT9NYXRoLnBvdygyLDEwKnQtMTApOjItTWF0aC5wb3coMiwxMC0xMCp0KSkvMn1mdW5jdGlvbiBpbSh0KXtyZXR1cm4gMS1NYXRoLnNxcnQoMS10KnQpfWZ1bmN0aW9uIHJtKHQpe3JldHVybiBNYXRoLnNxcnQoMS0gLS10KnQpfWZ1bmN0aW9uIG9tKHQpe3JldHVybigodCo9Mik8PTE/MS1NYXRoLnNxcnQoMS10KnQpOk1hdGguc3FydCgxLSh0LT0yKSp0KSsxKS8yfXZhciBhbT03LjU2MjU7ZnVuY3Rpb24gc20odCl7cmV0dXJuIDEtbG0oMS10KX1mdW5jdGlvbiBsbSh0KXtyZXR1cm4odD0rdCk8LjM2MzYzNjM2MzYzNjM2MzY1P2FtKnQqdDp0PC43MjcyNzI3MjcyNzI3MjczP2FtKih0LT0uNTQ1NDU0NTQ1NDU0NTQ1NCkqdCsuNzU6dDwuOTA5MDkwOTA5MDkwOTA5MT9hbSoodC09LjgxODE4MTgxODE4MTgxODIpKnQrLjkzNzU6YW0qKHQtPS45NTQ1NDU0NTQ1NDU0NTQ2KSp0Ky45ODQzNzV9ZnVuY3Rpb24gY20odCl7cmV0dXJuKCh0Kj0yKTw9MT8xLWxtKDEtdCk6bG0odC0xKSsxKS8yfXZhciB1bT0xLjcwMTU4LGhtPShmdW5jdGlvbiB0KGUpe2Z1bmN0aW9uIG4odCl7cmV0dXJuIHQqdCooKGUrMSkqdC1lKX1yZXR1cm4gZT0rZSxuLm92ZXJzaG9vdD10LG59KSh1bSksZG09KGZ1bmN0aW9uIHQoZSl7ZnVuY3Rpb24gbih0KXtyZXR1cm4tLXQqdCooKGUrMSkqdCtlKSsxfXJldHVybiBlPStlLG4ub3ZlcnNob290PXQsbn0pKHVtKSxwbT0oZnVuY3Rpb24gdChlKXtmdW5jdGlvbiBuKHQpe3JldHVybigodCo9Mik8MT90KnQqKChlKzEpKnQtZSk6KHQtPTIpKnQqKChlKzEpKnQrZSkrMikvMn1yZXR1cm4gZT0rZSxuLm92ZXJzaG9vdD10LG59KSh1bSksZm09MipNYXRoLlBJLG1tPShmdW5jdGlvbiB0KGUsbil7dmFyIGk9TWF0aC5hc2luKDEvKGU9TWF0aC5tYXgoMSxlKSkpKihuLz1mbSk7ZnVuY3Rpb24gcih0KXtyZXR1cm4gZSpNYXRoLnBvdygyLDEwKi0tdCkqTWF0aC5zaW4oKGktdCkvbil9cmV0dXJuIHIuYW1wbGl0dWRlPWZ1bmN0aW9uKGUpe3JldHVybiB0KGUsbipmbSl9LHIucGVyaW9kPWZ1bmN0aW9uKG4pe3JldHVybiB0KGUsbil9LHJ9KSgxLC4zKSxnbT0oZnVuY3Rpb24gdChlLG4pe3ZhciBpPU1hdGguYXNpbigxLyhlPU1hdGgubWF4KDEsZSkpKSoobi89Zm0pO2Z1bmN0aW9uIHIodCl7cmV0dXJuIDEtZSpNYXRoLnBvdygyLC0xMCoodD0rdCkpKk1hdGguc2luKCh0K2kpL24pfXJldHVybiByLmFtcGxpdHVkZT1mdW5jdGlvbihlKXtyZXR1cm4gdChlLG4qZm0pfSxyLnBlcmlvZD1mdW5jdGlvbihuKXtyZXR1cm4gdChlLG4pfSxyfSkoMSwuMyksX209KGZ1bmN0aW9uIHQoZSxuKXt2YXIgaT1NYXRoLmFzaW4oMS8oZT1NYXRoLm1heCgxLGUpKSkqKG4vPWZtKTtmdW5jdGlvbiByKHQpe3JldHVybigodD0yKnQtMSk8MD9lKk1hdGgucG93KDIsMTAqdCkqTWF0aC5zaW4oKGktdCkvbik6Mi1lKk1hdGgucG93KDIsLTEwKnQpKk1hdGguc2luKChpK3QpL24pKS8yfXJldHVybiByLmFtcGxpdHVkZT1mdW5jdGlvbihlKXtyZXR1cm4gdChlLG4qZm0pfSxyLnBlcmlvZD1mdW5jdGlvbihuKXtyZXR1cm4gdChlLG4pfSxyfSkoMSwuMykseW09T2JqZWN0LmZyZWV6ZSh7X19wcm90b19fOm51bGwsZWFzZUxpbmVhcjpiZixlYXNlUXVhZDpTZixlYXNlUXVhZEluOnhmLGVhc2VRdWFkT3V0OndmLGVhc2VRdWFkSW5PdXQ6U2YsZWFzZUN1YmljOlRmLGVhc2VDdWJpY0luOk1mLGVhc2VDdWJpY091dDpFZixlYXNlQ3ViaWNJbk91dDpUZixlYXNlUG9seTpYZixlYXNlUG9seUluOnFmLGVhc2VQb2x5T3V0OllmLGVhc2VQb2x5SW5PdXQ6WGYsZWFzZVNpbjpRZixlYXNlU2luSW46WmYsZWFzZVNpbk91dDpKZixlYXNlU2luSW5PdXQ6UWYsZWFzZUV4cDpubSxlYXNlRXhwSW46dG0sZWFzZUV4cE91dDplbSxlYXNlRXhwSW5PdXQ6bm0sZWFzZUNpcmNsZTpvbSxlYXNlQ2lyY2xlSW46aW0sZWFzZUNpcmNsZU91dDpybSxlYXNlQ2lyY2xlSW5PdXQ6b20sZWFzZUJvdW5jZTpsbSxlYXNlQm91bmNlSW46c20sZWFzZUJvdW5jZU91dDpsbSxlYXNlQm91bmNlSW5PdXQ6Y20sZWFzZUJhY2s6cG0sZWFzZUJhY2tJbjpobSxlYXNlQmFja091dDpkbSxlYXNlQmFja0luT3V0OnBtLGVhc2VFbGFzdGljOmdtLGVhc2VFbGFzdGljSW46bW0sZWFzZUVsYXN0aWNPdXQ6Z20sZWFzZUVsYXN0aWNJbk91dDpfbX0pLHZtPXt0aW1lOm51bGwsZGVsYXk6MCxkdXJhdGlvbjoyNTAsZWFzZTpUZn07ZnVuY3Rpb24gYm0odCxlKXtmb3IodmFyIG47IShuPXQuX190cmFuc2l0aW9uKXx8IShuPW5bZV0pOylpZighKHQ9dC5wYXJlbnROb2RlKSlyZXR1cm4gdm0udGltZT1UcCgpLHZtO3JldHVybiBufXd1LnByb3RvdHlwZS5pbnRlcnJ1cHQ9ZnVuY3Rpb24geG0odCl7cmV0dXJuIHRoaXMuZWFjaCgoZnVuY3Rpb24oKXtWcCh0aGlzLHQpfSkpfSx3dS5wcm90b3R5cGUudHJhbnNpdGlvbj1mdW5jdGlvbiB3bSh0KXt2YXIgZSxuO3QgaW5zdGFuY2VvZiBnZj8oZT10Ll9pZCx0PXQuX25hbWUpOihlPXlmKCksKG49dm0pLnRpbWU9VHAoKSx0PW51bGw9PXQ/bnVsbDp0KyIiKTtmb3IodmFyIGk9dGhpcy5fZ3JvdXBzLHI9aS5sZW5ndGgsbz0wO288cjsrK28pZm9yKHZhciBhLHM9aVtvXSxsPXMubGVuZ3RoLGM9MDtjPGw7KytjKShhPXNbY10pJiZEcChhLHQsZSxjLHMsbnx8Ym0oYSxlKSk7cmV0dXJuIG5ldyBnZihpLHRoaXMuX3BhcmVudHMsdCxlKX07dmFyIFNtPVtudWxsXTtmdW5jdGlvbiBNbSh0KXtyZXR1cm4gZnVuY3Rpb24oKXtyZXR1cm4gdH19ZnVuY3Rpb24gRW0odCxlLG4pe3RoaXMudGFyZ2V0PXQsdGhpcy50eXBlPWUsdGhpcy5zZWxlY3Rpb249bn1mdW5jdGlvbiBUbSgpe3V1LnN0b3BJbW1lZGlhdGVQcm9wYWdhdGlvbigpfWZ1bmN0aW9uIEFtKCl7dXUucHJldmVudERlZmF1bHQoKSx1dS5zdG9wSW1tZWRpYXRlUHJvcGFnYXRpb24oKX12YXIgQ209e25hbWU6ImRyYWcifSxrbT17bmFtZToic3BhY2UifSxMbT17bmFtZToiaGFuZGxlIn0sUG09e25hbWU6ImNlbnRlciJ9O2Z1bmN0aW9uIEltKHQpe3JldHVyblsrdFswXSwrdFsxXV19ZnVuY3Rpb24gTm0odCl7cmV0dXJuW0ltKHRbMF0pLEltKHRbMV0pXX1mdW5jdGlvbiBPbSh0KXtyZXR1cm4gZnVuY3Rpb24oZSl7cmV0dXJuIGxoKGUsdXUudG91Y2hlcyx0KX19dmFyIFJtPXtuYW1lOiJ4IixoYW5kbGVzOlsidyIsImUiXS5tYXAoVW0pLGlucHV0OmZ1bmN0aW9uKHQsZSl7cmV0dXJuIG51bGw9PXQ/bnVsbDpbWyt0WzBdLGVbMF1bMV1dLFsrdFsxXSxlWzFdWzFdXV19LG91dHB1dDpmdW5jdGlvbih0KXtyZXR1cm4gdCYmW3RbMF1bMF0sdFsxXVswXV19fSx6bT17bmFtZToieSIsaGFuZGxlczpbIm4iLCJzIl0ubWFwKFVtKSxpbnB1dDpmdW5jdGlvbih0LGUpe3JldHVybiBudWxsPT10P251bGw6W1tlWzBdWzBdLCt0WzBdXSxbZVsxXVswXSwrdFsxXV1dfSxvdXRwdXQ6ZnVuY3Rpb24odCl7cmV0dXJuIHQmJlt0WzBdWzFdLHRbMV1bMV1dfX0sRG09e25hbWU6Inh5IixoYW5kbGVzOlsibiIsInciLCJlIiwicyIsIm53IiwibmUiLCJzdyIsInNlIl0ubWFwKFVtKSxpbnB1dDpmdW5jdGlvbih0KXtyZXR1cm4gbnVsbD09dD9udWxsOk5tKHQpfSxvdXRwdXQ6ZnVuY3Rpb24odCl7cmV0dXJuIHR9fSxCbT17b3ZlcmxheToiY3Jvc3NoYWlyIixzZWxlY3Rpb246Im1vdmUiLG46Im5zLXJlc2l6ZSIsZToiZXctcmVzaXplIixzOiJucy1yZXNpemUiLHc6ImV3LXJlc2l6ZSIsbnc6Im53c2UtcmVzaXplIixuZToibmVzdy1yZXNpemUiLHNlOiJud3NlLXJlc2l6ZSIsc3c6Im5lc3ctcmVzaXplIn0sSG09e2U6InciLHc6ImUiLG53OiJuZSIsbmU6Im53IixzZToic3ciLHN3OiJzZSJ9LEZtPXtuOiJzIixzOiJuIixudzoic3ciLG5lOiJzZSIsc2U6Im5lIixzdzoibncifSxWbT17b3ZlcmxheToxLHNlbGVjdGlvbjoxLG46bnVsbCxlOjEsczpudWxsLHc6LTEsbnc6LTEsbmU6MSxzZToxLHN3Oi0xfSxqbT17b3ZlcmxheToxLHNlbGVjdGlvbjoxLG46LTEsZTpudWxsLHM6MSx3Om51bGwsbnc6LTEsbmU6LTEsc2U6MSxzdzoxfTtmdW5jdGlvbiBVbSh0KXtyZXR1cm57dHlwZTp0fX1mdW5jdGlvbiBHbSgpe3JldHVybiF1dS5jdHJsS2V5JiYhdXUuYnV0dG9ufWZ1bmN0aW9uIFdtKCl7dmFyIHQ9dGhpcy5vd25lclNWR0VsZW1lbnR8fHRoaXM7cmV0dXJuIHQuaGFzQXR0cmlidXRlKCJ2aWV3Qm94Iik/W1sodD10LnZpZXdCb3guYmFzZVZhbCkueCx0LnldLFt0LngrdC53aWR0aCx0LnkrdC5oZWlnaHRdXTpbWzAsMF0sW3Qud2lkdGguYmFzZVZhbC52YWx1ZSx0LmhlaWdodC5iYXNlVmFsLnZhbHVlXV19ZnVuY3Rpb24gcW0oKXtyZXR1cm4gbmF2aWdhdG9yLm1heFRvdWNoUG9pbnRzfHwib250b3VjaHN0YXJ0ImluIHRoaXN9ZnVuY3Rpb24gWW0odCl7Zm9yKDshdC5fX2JydXNoOylpZighKHQ9dC5wYXJlbnROb2RlKSlyZXR1cm47cmV0dXJuIHQuX19icnVzaH1mdW5jdGlvbiBYbSh0KXtyZXR1cm4gdFswXVswXT09PXRbMV1bMF18fHRbMF1bMV09PT10WzFdWzFdfWZ1bmN0aW9uICRtKHQpe3ZhciBlPXQuX19icnVzaDtyZXR1cm4gZT9lLmRpbS5vdXRwdXQoZS5zZWxlY3Rpb24pOm51bGx9ZnVuY3Rpb24gS20oKXtyZXR1cm4gSm0oem0pfWZ1bmN0aW9uIFptKCl7cmV0dXJuIEptKERtKX1mdW5jdGlvbiBKbSh0KXt2YXIgZSxuPVdtLGk9R20scj1xbSxvPSEwLGE9bGMoInN0YXJ0IiwiYnJ1c2giLCJlbmQiKSxzPTY7ZnVuY3Rpb24gbChlKXt2YXIgbj1lLnByb3BlcnR5KCJfX2JydXNoIixtKS5zZWxlY3RBbGwoIi5vdmVybGF5IikuZGF0YShbVW0oIm92ZXJsYXkiKV0pO24uZW50ZXIoKS5hcHBlbmQoInJlY3QiKS5hdHRyKCJjbGFzcyIsIm92ZXJsYXkiKS5hdHRyKCJwb2ludGVyLWV2ZW50cyIsImFsbCIpLmF0dHIoImN1cnNvciIsQm0ub3ZlcmxheSkubWVyZ2UobikuZWFjaCgoZnVuY3Rpb24oKXt2YXIgdD1ZbSh0aGlzKS5leHRlbnQ7U3UodGhpcykuYXR0cigieCIsdFswXVswXSkuYXR0cigieSIsdFswXVsxXSkuYXR0cigid2lkdGgiLHRbMV1bMF0tdFswXVswXSkuYXR0cigiaGVpZ2h0Iix0WzFdWzFdLXRbMF1bMV0pfSkpLGUuc2VsZWN0QWxsKCIuc2VsZWN0aW9uIikuZGF0YShbVW0oInNlbGVjdGlvbiIpXSkuZW50ZXIoKS5hcHBlbmQoInJlY3QiKS5hdHRyKCJjbGFzcyIsInNlbGVjdGlvbiIpLmF0dHIoImN1cnNvciIsQm0uc2VsZWN0aW9uKS5hdHRyKCJmaWxsIiwiIzc3NyIpLmF0dHIoImZpbGwtb3BhY2l0eSIsLjMpLmF0dHIoInN0cm9rZSIsIiNmZmYiKS5hdHRyKCJzaGFwZS1yZW5kZXJpbmciLCJjcmlzcEVkZ2VzIik7dmFyIGk9ZS5zZWxlY3RBbGwoIi5oYW5kbGUiKS5kYXRhKHQuaGFuZGxlcywoZnVuY3Rpb24odCl7cmV0dXJuIHQudHlwZX0pKTtpLmV4aXQoKS5yZW1vdmUoKSxpLmVudGVyKCkuYXBwZW5kKCJyZWN0IikuYXR0cigiY2xhc3MiLChmdW5jdGlvbih0KXtyZXR1cm4iaGFuZGxlIGhhbmRsZS0tIit0LnR5cGV9KSkuYXR0cigiY3Vyc29yIiwoZnVuY3Rpb24odCl7cmV0dXJuIEJtW3QudHlwZV19KSksZS5lYWNoKGMpLmF0dHIoImZpbGwiLCJub25lIikuYXR0cigicG9pbnRlci1ldmVudHMiLCJhbGwiKS5vbigibW91c2Vkb3duLmJydXNoIixkKS5maWx0ZXIocikub24oInRvdWNoc3RhcnQuYnJ1c2giLGQpLm9uKCJ0b3VjaG1vdmUuYnJ1c2giLHApLm9uKCJ0b3VjaGVuZC5icnVzaCB0b3VjaGNhbmNlbC5icnVzaCIsZikuc3R5bGUoInRvdWNoLWFjdGlvbiIsIm5vbmUiKS5zdHlsZSgiLXdlYmtpdC10YXAtaGlnaGxpZ2h0LWNvbG9yIiwicmdiYSgwLDAsMCwwKSIpfWZ1bmN0aW9uIGMoKXt2YXIgdD1TdSh0aGlzKSxlPVltKHRoaXMpLnNlbGVjdGlvbjtlPyh0LnNlbGVjdEFsbCgiLnNlbGVjdGlvbiIpLnN0eWxlKCJkaXNwbGF5IixudWxsKS5hdHRyKCJ4IixlWzBdWzBdKS5hdHRyKCJ5IixlWzBdWzFdKS5hdHRyKCJ3aWR0aCIsZVsxXVswXS1lWzBdWzBdKS5hdHRyKCJoZWlnaHQiLGVbMV1bMV0tZVswXVsxXSksdC5zZWxlY3RBbGwoIi5oYW5kbGUiKS5zdHlsZSgiZGlzcGxheSIsbnVsbCkuYXR0cigieCIsKGZ1bmN0aW9uKHQpe3JldHVybiJlIj09PXQudHlwZVt0LnR5cGUubGVuZ3RoLTFdP2VbMV1bMF0tcy8yOmVbMF1bMF0tcy8yfSkpLmF0dHIoInkiLChmdW5jdGlvbih0KXtyZXR1cm4icyI9PT10LnR5cGVbMF0/ZVsxXVsxXS1zLzI6ZVswXVsxXS1zLzJ9KSkuYXR0cigid2lkdGgiLChmdW5jdGlvbih0KXtyZXR1cm4ibiI9PT10LnR5cGV8fCJzIj09PXQudHlwZT9lWzFdWzBdLWVbMF1bMF0rczpzfSkpLmF0dHIoImhlaWdodCIsKGZ1bmN0aW9uKHQpe3JldHVybiJlIj09PXQudHlwZXx8InciPT09dC50eXBlP2VbMV1bMV0tZVswXVsxXStzOnN9KSkpOnQuc2VsZWN0QWxsKCIuc2VsZWN0aW9uLC5oYW5kbGUiKS5zdHlsZSgiZGlzcGxheSIsIm5vbmUiKS5hdHRyKCJ4IixudWxsKS5hdHRyKCJ5IixudWxsKS5hdHRyKCJ3aWR0aCIsbnVsbCkuYXR0cigiaGVpZ2h0IixudWxsKX1mdW5jdGlvbiB1KHQsZSxuKXtyZXR1cm4hbiYmdC5fX2JydXNoLmVtaXR0ZXJ8fG5ldyBoKHQsZSl9ZnVuY3Rpb24gaCh0LGUpe3RoaXMudGhhdD10LHRoaXMuYXJncz1lLHRoaXMuc3RhdGU9dC5fX2JydXNoLHRoaXMuYWN0aXZlPTB9ZnVuY3Rpb24gZCgpe2lmKCghZXx8dXUudG91Y2hlcykmJmkuYXBwbHkodGhpcyxhcmd1bWVudHMpKXt2YXIgbixyLGEscyxsLGgsZCxwLGYsbSxnLF89dGhpcyx5PXV1LnRhcmdldC5fX2RhdGFfXy50eXBlLHY9InNlbGVjdGlvbiI9PT0obyYmdXUubWV0YUtleT95PSJvdmVybGF5Ijp5KT9DbTpvJiZ1dS5hbHRLZXk/UG06TG0sYj10PT09em0/bnVsbDpWbVt5XSx4PXQ9PT1SbT9udWxsOmptW3ldLHc9WW0oXyksUz13LmV4dGVudCxNPXcuc2VsZWN0aW9uLEU9U1swXVswXSxUPVNbMF1bMV0sQT1TWzFdWzBdLEM9U1sxXVsxXSxrPTAsTD0wLFA9YiYmeCYmbyYmdXUuc2hpZnRLZXksST11dS50b3VjaGVzP09tKHV1LmNoYW5nZWRUb3VjaGVzWzBdLmlkZW50aWZpZXIpOmFoLE49SShfKSxPPU4sUj11KF8sYXJndW1lbnRzLCEwKS5iZWZvcmVzdGFydCgpOyJvdmVybGF5Ij09PXk/KE0mJihmPSEwKSx3LnNlbGVjdGlvbj1NPVtbbj10PT09em0/RTpOWzBdLGE9dD09PVJtP1Q6TlsxXV0sW2w9dD09PXptP0E6bixkPXQ9PT1SbT9DOmFdXSk6KG49TVswXVswXSxhPU1bMF1bMV0sbD1NWzFdWzBdLGQ9TVsxXVsxXSkscj1uLHM9YSxoPWwscD1kO3ZhciB6PVN1KF8pLmF0dHIoInBvaW50ZXItZXZlbnRzIiwibm9uZSIpLEQ9ei5zZWxlY3RBbGwoIi5vdmVybGF5IikuYXR0cigiY3Vyc29yIixCbVt5XSk7aWYodXUudG91Y2hlcylSLm1vdmVkPUgsUi5lbmRlZD1WO2Vsc2V7dmFyIEI9U3UodXUudmlldykub24oIm1vdXNlbW92ZS5icnVzaCIsSCwhMCkub24oIm1vdXNldXAuYnJ1c2giLFYsITApO28mJkIub24oImtleWRvd24uYnJ1c2giLGosITApLm9uKCJrZXl1cC5icnVzaCIsVSwhMCksaGgodXUudmlldyl9VG0oKSxWcChfKSxjLmNhbGwoXyksUi5zdGFydCgpfWZ1bmN0aW9uIEgoKXt2YXIgdD1JKF8pOyFQfHxtfHxnfHwoTWF0aC5hYnModFswXS1PWzBdKT5NYXRoLmFicyh0WzFdLU9bMV0pP2c9ITA6bT0hMCksTz10LGY9ITAsQW0oKSxGKCl9ZnVuY3Rpb24gRigpe3ZhciB0O3N3aXRjaChrPU9bMF0tTlswXSxMPU9bMV0tTlsxXSx2KXtjYXNlIGttOmNhc2UgQ206YiYmKGs9TWF0aC5tYXgoRS1uLE1hdGgubWluKEEtbCxrKSkscj1uK2ssaD1sK2spLHgmJihMPU1hdGgubWF4KFQtYSxNYXRoLm1pbihDLWQsTCkpLHM9YStMLHA9ZCtMKTticmVhaztjYXNlIExtOmI8MD8oaz1NYXRoLm1heChFLW4sTWF0aC5taW4oQS1uLGspKSxyPW4rayxoPWwpOmI+MCYmKGs9TWF0aC5tYXgoRS1sLE1hdGgubWluKEEtbCxrKSkscj1uLGg9bCtrKSx4PDA/KEw9TWF0aC5tYXgoVC1hLE1hdGgubWluKEMtYSxMKSkscz1hK0wscD1kKTp4PjAmJihMPU1hdGgubWF4KFQtZCxNYXRoLm1pbihDLWQsTCkpLHM9YSxwPWQrTCk7YnJlYWs7Y2FzZSBQbTpiJiYocj1NYXRoLm1heChFLE1hdGgubWluKEEsbi1rKmIpKSxoPU1hdGgubWF4KEUsTWF0aC5taW4oQSxsK2sqYikpKSx4JiYocz1NYXRoLm1heChULE1hdGgubWluKEMsYS1MKngpKSxwPU1hdGgubWF4KFQsTWF0aC5taW4oQyxkK0wqeCkpKX1oPHImJihiKj0tMSx0PW4sbj1sLGw9dCx0PXIscj1oLGg9dCx5IGluIEhtJiZELmF0dHIoImN1cnNvciIsQm1beT1IbVt5XV0pKSxwPHMmJih4Kj0tMSx0PWEsYT1kLGQ9dCx0PXMscz1wLHA9dCx5IGluIEZtJiZELmF0dHIoImN1cnNvciIsQm1beT1GbVt5XV0pKSx3LnNlbGVjdGlvbiYmKE09dy5zZWxlY3Rpb24pLG0mJihyPU1bMF1bMF0saD1NWzFdWzBdKSxnJiYocz1NWzBdWzFdLHA9TVsxXVsxXSksTVswXVswXT09PXImJk1bMF1bMV09PT1zJiZNWzFdWzBdPT09aCYmTVsxXVsxXT09PXB8fCh3LnNlbGVjdGlvbj1bW3Isc10sW2gscF1dLGMuY2FsbChfKSxSLmJydXNoKCkpfWZ1bmN0aW9uIFYoKXtpZihUbSgpLHV1LnRvdWNoZXMpe2lmKHV1LnRvdWNoZXMubGVuZ3RoKXJldHVybjtlJiZjbGVhclRpbWVvdXQoZSksZT1zZXRUaW1lb3V0KChmdW5jdGlvbigpe2U9bnVsbH0pLDUwMCl9ZWxzZSBkaCh1dS52aWV3LGYpLEIub24oImtleWRvd24uYnJ1c2gga2V5dXAuYnJ1c2ggbW91c2Vtb3ZlLmJydXNoIG1vdXNldXAuYnJ1c2giLG51bGwpO3ouYXR0cigicG9pbnRlci1ldmVudHMiLCJhbGwiKSxELmF0dHIoImN1cnNvciIsQm0ub3ZlcmxheSksdy5zZWxlY3Rpb24mJihNPXcuc2VsZWN0aW9uKSxYbShNKSYmKHcuc2VsZWN0aW9uPW51bGwsYy5jYWxsKF8pKSxSLmVuZCgpfWZ1bmN0aW9uIGooKXtzd2l0Y2godXUua2V5Q29kZSl7Y2FzZSAxNjpQPWImJng7YnJlYWs7Y2FzZSAxODp2PT09TG0mJihiJiYobD1oLWsqYixuPXIraypiKSx4JiYoZD1wLUwqeCxhPXMrTCp4KSx2PVBtLEYoKSk7YnJlYWs7Y2FzZSAzMjp2IT09TG0mJnYhPT1QbXx8KGI8MD9sPWgtazpiPjAmJihuPXItaykseDwwP2Q9cC1MOng+MCYmKGE9cy1MKSx2PWttLEQuYXR0cigiY3Vyc29yIixCbS5zZWxlY3Rpb24pLEYoKSk7YnJlYWs7ZGVmYXVsdDpyZXR1cm59QW0oKX1mdW5jdGlvbiBVKCl7c3dpdGNoKHV1LmtleUNvZGUpe2Nhc2UgMTY6UCYmKG09Zz1QPSExLEYoKSk7YnJlYWs7Y2FzZSAxODp2PT09UG0mJihiPDA/bD1oOmI+MCYmKG49cikseDwwP2Q9cDp4PjAmJihhPXMpLHY9TG0sRigpKTticmVhaztjYXNlIDMyOnY9PT1rbSYmKHV1LmFsdEtleT8oYiYmKGw9aC1rKmIsbj1yK2sqYikseCYmKGQ9cC1MKngsYT1zK0wqeCksdj1QbSk6KGI8MD9sPWg6Yj4wJiYobj1yKSx4PDA/ZD1wOng+MCYmKGE9cyksdj1MbSksRC5hdHRyKCJjdXJzb3IiLEJtW3ldKSxGKCkpO2JyZWFrO2RlZmF1bHQ6cmV0dXJufUFtKCl9fWZ1bmN0aW9uIHAoKXt1KHRoaXMsYXJndW1lbnRzKS5tb3ZlZCgpfWZ1bmN0aW9uIGYoKXt1KHRoaXMsYXJndW1lbnRzKS5lbmRlZCgpfWZ1bmN0aW9uIG0oKXt2YXIgZT10aGlzLl9fYnJ1c2h8fHtzZWxlY3Rpb246bnVsbH07cmV0dXJuIGUuZXh0ZW50PU5tKG4uYXBwbHkodGhpcyxhcmd1bWVudHMpKSxlLmRpbT10LGV9cmV0dXJuIGwubW92ZT1mdW5jdGlvbihlLG4pe2Uuc2VsZWN0aW9uP2Uub24oInN0YXJ0LmJydXNoIiwoZnVuY3Rpb24oKXt1KHRoaXMsYXJndW1lbnRzKS5iZWZvcmVzdGFydCgpLnN0YXJ0KCl9KSkub24oImludGVycnVwdC5icnVzaCBlbmQuYnJ1c2giLChmdW5jdGlvbigpe3UodGhpcyxhcmd1bWVudHMpLmVuZCgpfSkpLnR3ZWVuKCJicnVzaCIsKGZ1bmN0aW9uKCl7dmFyIGU9dGhpcyxpPWUuX19icnVzaCxyPXUoZSxhcmd1bWVudHMpLG89aS5zZWxlY3Rpb24sYT10LmlucHV0KCJmdW5jdGlvbiI9PXR5cGVvZiBuP24uYXBwbHkodGhpcyxhcmd1bWVudHMpOm4saS5leHRlbnQpLHM9VWQobyxhKTtmdW5jdGlvbiBsKHQpe2kuc2VsZWN0aW9uPTE9PT10JiZudWxsPT09YT9udWxsOnModCksYy5jYWxsKGUpLHIuYnJ1c2goKX1yZXR1cm4gbnVsbCE9PW8mJm51bGwhPT1hP2w6bCgxKX0pKTplLmVhY2goKGZ1bmN0aW9uKCl7dmFyIGU9dGhpcyxpPWFyZ3VtZW50cyxyPWUuX19icnVzaCxvPXQuaW5wdXQoImZ1bmN0aW9uIj09dHlwZW9mIG4/bi5hcHBseShlLGkpOm4sci5leHRlbnQpLGE9dShlLGkpLmJlZm9yZXN0YXJ0KCk7VnAoZSksci5zZWxlY3Rpb249bnVsbD09PW8/bnVsbDpvLGMuY2FsbChlKSxhLnN0YXJ0KCkuYnJ1c2goKS5lbmQoKX0pKX0sbC5jbGVhcj1mdW5jdGlvbih0KXtsLm1vdmUodCxudWxsKX0saC5wcm90b3R5cGU9e2JlZm9yZXN0YXJ0OmZ1bmN0aW9uKCl7cmV0dXJuIDE9PSsrdGhpcy5hY3RpdmUmJih0aGlzLnN0YXRlLmVtaXR0ZXI9dGhpcyx0aGlzLnN0YXJ0aW5nPSEwKSx0aGlzfSxzdGFydDpmdW5jdGlvbigpe3JldHVybiB0aGlzLnN0YXJ0aW5nPyh0aGlzLnN0YXJ0aW5nPSExLHRoaXMuZW1pdCgic3RhcnQiKSk6dGhpcy5lbWl0KCJicnVzaCIpLHRoaXN9LGJydXNoOmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuZW1pdCgiYnJ1c2giKSx0aGlzfSxlbmQ6ZnVuY3Rpb24oKXtyZXR1cm4gMD09LS10aGlzLmFjdGl2ZSYmKGRlbGV0ZSB0aGlzLnN0YXRlLmVtaXR0ZXIsdGhpcy5lbWl0KCJlbmQiKSksdGhpc30sZW1pdDpmdW5jdGlvbihlKXtndShuZXcgRW0obCxlLHQub3V0cHV0KHRoaXMuc3RhdGUuc2VsZWN0aW9uKSksYS5hcHBseSxhLFtlLHRoaXMudGhhdCx0aGlzLmFyZ3NdKX19LGwuZXh0ZW50PWZ1bmN0aW9uKHQpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyhuPSJmdW5jdGlvbiI9PXR5cGVvZiB0P3Q6TW0oTm0odCkpLGwpOm59LGwuZmlsdGVyPWZ1bmN0aW9uKHQpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyhpPSJmdW5jdGlvbiI9PXR5cGVvZiB0P3Q6TW0oISF0KSxsKTppfSxsLnRvdWNoYWJsZT1mdW5jdGlvbih0KXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8ocj0iZnVuY3Rpb24iPT10eXBlb2YgdD90Ok1tKCEhdCksbCk6cn0sbC5oYW5kbGVTaXplPWZ1bmN0aW9uKHQpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyhzPSt0LGwpOnN9LGwua2V5TW9kaWZpZXJzPWZ1bmN0aW9uKHQpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyhvPSEhdCxsKTpvfSxsLm9uPWZ1bmN0aW9uKCl7dmFyIHQ9YS5vbi5hcHBseShhLGFyZ3VtZW50cyk7cmV0dXJuIHQ9PT1hP2w6dH0sbH12YXIgUW09TWF0aC5jb3MsdGc9TWF0aC5zaW4sZWc9TWF0aC5QSSxuZz1lZy8yLGlnPTIqZWcscmc9TWF0aC5tYXg7ZnVuY3Rpb24gb2codCl7cmV0dXJuIGZ1bmN0aW9uKGUsbil7cmV0dXJuIHQoZS5zb3VyY2UudmFsdWUrZS50YXJnZXQudmFsdWUsbi5zb3VyY2UudmFsdWUrbi50YXJnZXQudmFsdWUpfX12YXIgYWc9QXJyYXkucHJvdG90eXBlLnNsaWNlO2Z1bmN0aW9uIHNnKHQpe3JldHVybiBmdW5jdGlvbigpe3JldHVybiB0fX12YXIgbGc9TWF0aC5QSSxjZz0yKmxnLHVnPTFlLTYsaGc9Y2ctdWc7ZnVuY3Rpb24gZGcoKXt0aGlzLl94MD10aGlzLl95MD10aGlzLl94MT10aGlzLl95MT1udWxsLHRoaXMuXz0iIn1mdW5jdGlvbiBwZygpe3JldHVybiBuZXcgZGd9ZnVuY3Rpb24gZmcodCl7cmV0dXJuIHQuc291cmNlfWZ1bmN0aW9uIG1nKHQpe3JldHVybiB0LnRhcmdldH1mdW5jdGlvbiBnZyh0KXtyZXR1cm4gdC5yYWRpdXN9ZnVuY3Rpb24gX2codCl7cmV0dXJuIHQuc3RhcnRBbmdsZX1mdW5jdGlvbiB5Zyh0KXtyZXR1cm4gdC5lbmRBbmdsZX1kZy5wcm90b3R5cGU9cGcucHJvdG90eXBlPXtjb25zdHJ1Y3RvcjpkZyxtb3ZlVG86ZnVuY3Rpb24odCxlKXt0aGlzLl8rPSJNIisodGhpcy5feDA9dGhpcy5feDE9K3QpKyIsIisodGhpcy5feTA9dGhpcy5feTE9K2UpfSxjbG9zZVBhdGg6ZnVuY3Rpb24oKXtudWxsIT09dGhpcy5feDEmJih0aGlzLl94MT10aGlzLl94MCx0aGlzLl95MT10aGlzLl95MCx0aGlzLl8rPSJaIil9LGxpbmVUbzpmdW5jdGlvbih0LGUpe3RoaXMuXys9IkwiKyh0aGlzLl94MT0rdCkrIiwiKyh0aGlzLl95MT0rZSl9LHF1YWRyYXRpY0N1cnZlVG86ZnVuY3Rpb24odCxlLG4saSl7dGhpcy5fKz0iUSIrICt0KyIsIisgK2UrIiwiKyh0aGlzLl94MT0rbikrIiwiKyh0aGlzLl95MT0raSl9LGJlemllckN1cnZlVG86ZnVuY3Rpb24odCxlLG4saSxyLG8pe3RoaXMuXys9IkMiKyArdCsiLCIrICtlKyIsIisgK24rIiwiKyAraSsiLCIrKHRoaXMuX3gxPStyKSsiLCIrKHRoaXMuX3kxPStvKX0sYXJjVG86ZnVuY3Rpb24odCxlLG4saSxyKXt2YXIgbz10aGlzLl94MSxhPXRoaXMuX3kxLHM9KG49K24pLSh0PSt0KSxsPShpPStpKS0oZT0rZSksYz1vLXQsdT1hLWUsaD1jKmMrdSp1O2lmKChyPStyKTwwKXRocm93IG5ldyBFcnJvcigibmVnYXRpdmUgcmFkaXVzOiAiK3IpO2lmKG51bGw9PT10aGlzLl94MSl0aGlzLl8rPSJNIisodGhpcy5feDE9dCkrIiwiKyh0aGlzLl95MT1lKTtlbHNlIGlmKGg+dWcpaWYoTWF0aC5hYnModSpzLWwqYyk+dWcmJnIpe3ZhciBkPW4tbyxwPWktYSxmPXMqcytsKmwsbT1kKmQrcCpwLGc9TWF0aC5zcXJ0KGYpLF89TWF0aC5zcXJ0KGgpLHk9cipNYXRoLnRhbigobGctTWF0aC5hY29zKChmK2gtbSkvKDIqZypfKSkpLzIpLHY9eS9fLGI9eS9nO01hdGguYWJzKHYtMSk+dWcmJih0aGlzLl8rPSJMIisodCt2KmMpKyIsIisoZSt2KnUpKSx0aGlzLl8rPSJBIityKyIsIityKyIsMCwwLCIrICsodSpkPmMqcCkrIiwiKyh0aGlzLl94MT10K2IqcykrIiwiKyh0aGlzLl95MT1lK2IqbCl9ZWxzZSB0aGlzLl8rPSJMIisodGhpcy5feDE9dCkrIiwiKyh0aGlzLl95MT1lKX0sYXJjOmZ1bmN0aW9uKHQsZSxuLGkscixvKXt0PSt0LGU9K2Usbz0hIW87dmFyIGE9KG49K24pKk1hdGguY29zKGkpLHM9bipNYXRoLnNpbihpKSxsPXQrYSxjPWUrcyx1PTFebyxoPW8/aS1yOnItaTtpZihuPDApdGhyb3cgbmV3IEVycm9yKCJuZWdhdGl2ZSByYWRpdXM6ICIrbik7bnVsbD09PXRoaXMuX3gxP3RoaXMuXys9Ik0iK2wrIiwiK2M6KE1hdGguYWJzKHRoaXMuX3gxLWwpPnVnfHxNYXRoLmFicyh0aGlzLl95MS1jKT51ZykmJih0aGlzLl8rPSJMIitsKyIsIitjKSxuJiYoaDwwJiYoaD1oJWNnK2NnKSxoPmhnP3RoaXMuXys9IkEiK24rIiwiK24rIiwwLDEsIit1KyIsIisodC1hKSsiLCIrKGUtcykrIkEiK24rIiwiK24rIiwwLDEsIit1KyIsIisodGhpcy5feDE9bCkrIiwiKyh0aGlzLl95MT1jKTpoPnVnJiYodGhpcy5fKz0iQSIrbisiLCIrbisiLDAsIisgKyhoPj1sZykrIiwiK3UrIiwiKyh0aGlzLl94MT10K24qTWF0aC5jb3MocikpKyIsIisodGhpcy5feTE9ZStuKk1hdGguc2luKHIpKSkpfSxyZWN0OmZ1bmN0aW9uKHQsZSxuLGkpe3RoaXMuXys9Ik0iKyh0aGlzLl94MD10aGlzLl94MT0rdCkrIiwiKyh0aGlzLl95MD10aGlzLl95MT0rZSkrImgiKyArbisidiIrICtpKyJoIistbisiWiJ9LHRvU3RyaW5nOmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuX319O3ZhciB2Zz0iJCI7ZnVuY3Rpb24gYmcoKXt9ZnVuY3Rpb24geGcodCxlKXt2YXIgbj1uZXcgYmc7aWYodCBpbnN0YW5jZW9mIGJnKXQuZWFjaCgoZnVuY3Rpb24odCxlKXtuLnNldChlLHQpfSkpO2Vsc2UgaWYoQXJyYXkuaXNBcnJheSh0KSl7dmFyIGkscj0tMSxvPXQubGVuZ3RoO2lmKG51bGw9PWUpZm9yKDsrK3I8bzspbi5zZXQocix0W3JdKTtlbHNlIGZvcig7KytyPG87KW4uc2V0KGUoaT10W3JdLHIsdCksaSl9ZWxzZSBpZih0KWZvcih2YXIgYSBpbiB0KW4uc2V0KGEsdFthXSk7cmV0dXJuIG59ZnVuY3Rpb24gd2coKXtyZXR1cm57fX1mdW5jdGlvbiBTZyh0LGUsbil7dFtlXT1ufWZ1bmN0aW9uIE1nKCl7cmV0dXJuIHhnKCl9ZnVuY3Rpb24gRWcodCxlLG4pe3Quc2V0KGUsbil9ZnVuY3Rpb24gVGcoKXt9YmcucHJvdG90eXBlPXhnLnByb3RvdHlwZT17Y29uc3RydWN0b3I6YmcsaGFzOmZ1bmN0aW9uKHQpe3JldHVybiB2Zyt0IGluIHRoaXN9LGdldDpmdW5jdGlvbih0KXtyZXR1cm4gdGhpc1t2Zyt0XX0sc2V0OmZ1bmN0aW9uKHQsZSl7cmV0dXJuIHRoaXNbdmcrdF09ZSx0aGlzfSxyZW1vdmU6ZnVuY3Rpb24odCl7dmFyIGU9dmcrdDtyZXR1cm4gZSBpbiB0aGlzJiZkZWxldGUgdGhpc1tlXX0sY2xlYXI6ZnVuY3Rpb24oKXtmb3IodmFyIHQgaW4gdGhpcyl0WzBdPT09dmcmJmRlbGV0ZSB0aGlzW3RdfSxrZXlzOmZ1bmN0aW9uKCl7dmFyIHQ9W107Zm9yKHZhciBlIGluIHRoaXMpZVswXT09PXZnJiZ0LnB1c2goZS5zbGljZSgxKSk7cmV0dXJuIHR9LHZhbHVlczpmdW5jdGlvbigpe3ZhciB0PVtdO2Zvcih2YXIgZSBpbiB0aGlzKWVbMF09PT12ZyYmdC5wdXNoKHRoaXNbZV0pO3JldHVybiB0fSxlbnRyaWVzOmZ1bmN0aW9uKCl7dmFyIHQ9W107Zm9yKHZhciBlIGluIHRoaXMpZVswXT09PXZnJiZ0LnB1c2goe2tleTplLnNsaWNlKDEpLHZhbHVlOnRoaXNbZV19KTtyZXR1cm4gdH0sc2l6ZTpmdW5jdGlvbigpe3ZhciB0PTA7Zm9yKHZhciBlIGluIHRoaXMpZVswXT09PXZnJiYrK3Q7cmV0dXJuIHR9LGVtcHR5OmZ1bmN0aW9uKCl7Zm9yKHZhciB0IGluIHRoaXMpaWYodFswXT09PXZnKXJldHVybiExO3JldHVybiEwfSxlYWNoOmZ1bmN0aW9uKHQpe2Zvcih2YXIgZSBpbiB0aGlzKWVbMF09PT12ZyYmdCh0aGlzW2VdLGUuc2xpY2UoMSksdGhpcyl9fTt2YXIgQWc9eGcucHJvdG90eXBlO2Z1bmN0aW9uIENnKHQsZSl7dmFyIG49bmV3IFRnO2lmKHQgaW5zdGFuY2VvZiBUZyl0LmVhY2goKGZ1bmN0aW9uKHQpe24uYWRkKHQpfSkpO2Vsc2UgaWYodCl7dmFyIGk9LTEscj10Lmxlbmd0aDtpZihudWxsPT1lKWZvcig7KytpPHI7KW4uYWRkKHRbaV0pO2Vsc2UgZm9yKDsrK2k8cjspbi5hZGQoZSh0W2ldLGksdCkpfXJldHVybiBufWZ1bmN0aW9uIGtnKHQpe3ZhciBlPVtdO2Zvcih2YXIgbiBpbiB0KWUucHVzaChuKTtyZXR1cm4gZX1UZy5wcm90b3R5cGU9Q2cucHJvdG90eXBlPXtjb25zdHJ1Y3RvcjpUZyxoYXM6QWcuaGFzLGFkZDpmdW5jdGlvbih0KXtyZXR1cm4gdGhpc1t2ZysodCs9IiIpXT10LHRoaXN9LHJlbW92ZTpBZy5yZW1vdmUsY2xlYXI6QWcuY2xlYXIsdmFsdWVzOkFnLmtleXMsc2l6ZTpBZy5zaXplLGVtcHR5OkFnLmVtcHR5LGVhY2g6QWcuZWFjaH07dmFyIExnPUFycmF5LnByb3RvdHlwZS5zbGljZTtmdW5jdGlvbiBQZyh0LGUpe3JldHVybiB0LWV9ZnVuY3Rpb24gSWcodCl7cmV0dXJuIGZ1bmN0aW9uKCl7cmV0dXJuIHR9fWZ1bmN0aW9uIE5nKHQsZSl7Zm9yKHZhciBuLGk9LTEscj1lLmxlbmd0aDsrK2k8cjspaWYobj1PZyh0LGVbaV0pKXJldHVybiBuO3JldHVybiAwfWZ1bmN0aW9uIE9nKHQsZSl7Zm9yKHZhciBuPWVbMF0saT1lWzFdLHI9LTEsbz0wLGE9dC5sZW5ndGgscz1hLTE7bzxhO3M9bysrKXt2YXIgbD10W29dLGM9bFswXSx1PWxbMV0saD10W3NdLGQ9aFswXSxwPWhbMV07aWYoUmcobCxoLGUpKXJldHVybiAwO3U+aSE9cD5pJiZuPChkLWMpKihpLXUpLyhwLXUpK2MmJihyPS1yKX1yZXR1cm4gcn1mdW5jdGlvbiBSZyh0LGUsbil7dmFyIGk7cmV0dXJuKGZ1bmN0aW9uIHIodCxlLG4pe3JldHVybihlWzBdLXRbMF0pKihuWzFdLXRbMV0pPT0oblswXS10WzBdKSooZVsxXS10WzFdKX0pKHQsZSxuKSYmKGZ1bmN0aW9uIG8odCxlLG4pe3JldHVybiB0PD1lJiZlPD1ufHxuPD1lJiZlPD10fSkodFtpPSsodFswXT09PWVbMF0pXSxuW2ldLGVbaV0pfWZ1bmN0aW9uIHpnKCl7fXZhciBEZz1bW10sW1tbMSwxLjVdLFsuNSwxXV1dLFtbWzEuNSwxXSxbMSwxLjVdXV0sW1tbMS41LDFdLFsuNSwxXV1dLFtbWzEsLjVdLFsxLjUsMV1dXSxbW1sxLDEuNV0sWy41LDFdXSxbWzEsLjVdLFsxLjUsMV1dXSxbW1sxLC41XSxbMSwxLjVdXV0sW1tbMSwuNV0sWy41LDFdXV0sW1tbLjUsMV0sWzEsLjVdXV0sW1tbMSwxLjVdLFsxLC41XV1dLFtbWy41LDFdLFsxLC41XV0sW1sxLjUsMV0sWzEsMS41XV1dLFtbWzEuNSwxXSxbMSwuNV1dXSxbW1suNSwxXSxbMS41LDFdXV0sW1tbMSwxLjVdLFsxLjUsMV1dXSxbW1suNSwxXSxbMSwxLjVdXV0sW11dO2Z1bmN0aW9uIEJnKCl7dmFyIHQ9MSxlPTEsbj1VbCxpPXM7ZnVuY3Rpb24gcih0KXt2YXIgZT1uKHQpO2lmKEFycmF5LmlzQXJyYXkoZSkpZT1lLnNsaWNlKCkuc29ydChQZyk7ZWxzZXt2YXIgaT1MbCh0KSxyPWlbMF0sYT1pWzFdO2U9amwocixhLGUpLGU9emwoTWF0aC5mbG9vcihyL2UpKmUsTWF0aC5mbG9vcihhL2UpKmUsZSl9cmV0dXJuIGUubWFwKChmdW5jdGlvbihlKXtyZXR1cm4gbyh0LGUpfSkpfWZ1bmN0aW9uIG8obixyKXt2YXIgbz1bXSxzPVtdO3JldHVybihmdW5jdGlvbiBsKG4saSxyKXt2YXIgbyxzLGwsYyx1LGg9bmV3IEFycmF5LGQ9bmV3IEFycmF5O2ZvcihvPXM9LTEsRGdbKGw9blswXT49aSk8PDFdLmZvckVhY2gocCk7KytvPHQtMTspRGdbbHwobD1uW28rMV0+PWkpPDwxXS5mb3JFYWNoKHApO2ZvcihEZ1tsPDwwXS5mb3JFYWNoKHApOysrczxlLTE7KXtmb3Iobz0tMSxEZ1sobD1uW3MqdCt0XT49aSk8PDF8KGM9bltzKnRdPj1pKTw8Ml0uZm9yRWFjaChwKTsrK288dC0xOyl1PWMsRGdbbHwobD1uW3MqdCt0K28rMV0+PWkpPDwxfChjPW5bcyp0K28rMV0+PWkpPDwyfHU8PDNdLmZvckVhY2gocCk7RGdbbHxjPDwzXS5mb3JFYWNoKHApfWZvcihvPS0xLERnWyhjPW5bcyp0XT49aSk8PDJdLmZvckVhY2gocCk7KytvPHQtMTspdT1jLERnWyhjPW5bcyp0K28rMV0+PWkpPDwyfHU8PDNdLmZvckVhY2gocCk7ZnVuY3Rpb24gcCh0KXt2YXIgZSxuLGk9W3RbMF1bMF0rbyx0WzBdWzFdK3NdLGw9W3RbMV1bMF0rbyx0WzFdWzFdK3NdLGM9YShpKSx1PWEobCk7KGU9ZFtjXSk/KG49aFt1XSk/KGRlbGV0ZSBkW2UuZW5kXSxkZWxldGUgaFtuLnN0YXJ0XSxlPT09bj8oZS5yaW5nLnB1c2gobCkscihlLnJpbmcpKTpoW2Uuc3RhcnRdPWRbbi5lbmRdPXtzdGFydDplLnN0YXJ0LGVuZDpuLmVuZCxyaW5nOmUucmluZy5jb25jYXQobi5yaW5nKX0pOihkZWxldGUgZFtlLmVuZF0sZS5yaW5nLnB1c2gobCksZFtlLmVuZD11XT1lKTooZT1oW3VdKT8obj1kW2NdKT8oZGVsZXRlIGhbZS5zdGFydF0sZGVsZXRlIGRbbi5lbmRdLGU9PT1uPyhlLnJpbmcucHVzaChsKSxyKGUucmluZykpOmhbbi5zdGFydF09ZFtlLmVuZF09e3N0YXJ0Om4uc3RhcnQsZW5kOmUuZW5kLHJpbmc6bi5yaW5nLmNvbmNhdChlLnJpbmcpfSk6KGRlbGV0ZSBoW2Uuc3RhcnRdLGUucmluZy51bnNoaWZ0KGkpLGhbZS5zdGFydD1jXT1lKTpoW2NdPWRbdV09e3N0YXJ0OmMsZW5kOnUscmluZzpbaSxsXX19RGdbYzw8M10uZm9yRWFjaChwKX0pKG4sciwoZnVuY3Rpb24odCl7aSh0LG4sciksKGZ1bmN0aW9uIGUodCl7Zm9yKHZhciBlPTAsbj10Lmxlbmd0aCxpPXRbbi0xXVsxXSp0WzBdWzBdLXRbbi0xXVswXSp0WzBdWzFdOysrZTxuOylpKz10W2UtMV1bMV0qdFtlXVswXS10W2UtMV1bMF0qdFtlXVsxXTtyZXR1cm4gaX0pKHQpPjA/by5wdXNoKFt0XSk6cy5wdXNoKHQpfSkpLHMuZm9yRWFjaCgoZnVuY3Rpb24odCl7Zm9yKHZhciBlLG49MCxpPW8ubGVuZ3RoO248aTsrK24paWYoLTEhPT1OZygoZT1vW25dKVswXSx0KSlyZXR1cm4gdm9pZCBlLnB1c2godCl9KSkse3R5cGU6Ik11bHRpUG9seWdvbiIsdmFsdWU6cixjb29yZGluYXRlczpvfX1mdW5jdGlvbiBhKGUpe3JldHVybiAyKmVbMF0rZVsxXSoodCsxKSo0fWZ1bmN0aW9uIHMobixpLHIpe24uZm9yRWFjaCgoZnVuY3Rpb24obil7dmFyIG8sYT1uWzBdLHM9blsxXSxsPTB8YSxjPTB8cyx1PWlbYyp0K2xdO2E+MCYmYTx0JiZsPT09YSYmKG5bMF09YSsoci0obz1pW2MqdCtsLTFdKSkvKHUtbyktLjUpLHM+MCYmczxlJiZjPT09cyYmKG5bMV09cysoci0obz1pWyhjLTEpKnQrbF0pKS8odS1vKS0uNSl9KSl9cmV0dXJuIHIuY29udG91cj1vLHIuc2l6ZT1mdW5jdGlvbihuKXtpZighYXJndW1lbnRzLmxlbmd0aClyZXR1cm5bdCxlXTt2YXIgaT1NYXRoLmNlaWwoblswXSksbz1NYXRoLmNlaWwoblsxXSk7aWYoIShpPjAmJm8+MCkpdGhyb3cgbmV3IEVycm9yKCJpbnZhbGlkIHNpemUiKTtyZXR1cm4gdD1pLGU9byxyfSxyLnRocmVzaG9sZHM9ZnVuY3Rpb24odCl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KG49ImZ1bmN0aW9uIj09dHlwZW9mIHQ/dDpBcnJheS5pc0FycmF5KHQpP0lnKExnLmNhbGwodCkpOklnKHQpLHIpOm59LHIuc21vb3RoPWZ1bmN0aW9uKHQpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyhpPXQ/czp6ZyxyKTppPT09c30scn1mdW5jdGlvbiBIZyh0LGUsbil7Zm9yKHZhciBpPXQud2lkdGgscj10LmhlaWdodCxvPTErKG48PDEpLGE9MDthPHI7KythKWZvcih2YXIgcz0wLGw9MDtzPGkrbjsrK3MpczxpJiYobCs9dC5kYXRhW3MrYSppXSkscz49biYmKHM+PW8mJihsLT10LmRhdGFbcy1vK2EqaV0pLGUuZGF0YVtzLW4rYSppXT1sL01hdGgubWluKHMrMSxpLTErby1zLG8pKX1mdW5jdGlvbiBGZyh0LGUsbil7Zm9yKHZhciBpPXQud2lkdGgscj10LmhlaWdodCxvPTErKG48PDEpLGE9MDthPGk7KythKWZvcih2YXIgcz0wLGw9MDtzPHIrbjsrK3MpczxyJiYobCs9dC5kYXRhW2ErcyppXSkscz49biYmKHM+PW8mJihsLT10LmRhdGFbYSsocy1vKSppXSksZS5kYXRhW2ErKHMtbikqaV09bC9NYXRoLm1pbihzKzEsci0xK28tcyxvKSl9ZnVuY3Rpb24gVmcodCl7cmV0dXJuIHRbMF19ZnVuY3Rpb24gamcodCl7cmV0dXJuIHRbMV19ZnVuY3Rpb24gVWcoKXtyZXR1cm4gMX12YXIgR2c9e30sV2c9e307ZnVuY3Rpb24gcWcodCl7cmV0dXJuIG5ldyBGdW5jdGlvbigiZCIsInJldHVybiB7Iit0Lm1hcCgoZnVuY3Rpb24odCxlKXtyZXR1cm4gSlNPTi5zdHJpbmdpZnkodCkrIjogZFsiK2UrJ10gfHwgIiInfSkpLmpvaW4oIiwiKSsifSIpfWZ1bmN0aW9uIFlnKHQpe3ZhciBlPU9iamVjdC5jcmVhdGUobnVsbCksbj1bXTtyZXR1cm4gdC5mb3JFYWNoKChmdW5jdGlvbih0KXtmb3IodmFyIGkgaW4gdClpIGluIGV8fG4ucHVzaChlW2ldPWkpfSkpLG59ZnVuY3Rpb24gWGcodCxlKXt2YXIgbj10KyIiLGk9bi5sZW5ndGg7cmV0dXJuIGk8ZT9uZXcgQXJyYXkoZS1pKzEpLmpvaW4oMCkrbjpufWZ1bmN0aW9uICRnKHQpe3ZhciBlPW5ldyBSZWdFeHAoJ1siJyt0KyJcblxyXSIpLG49dC5jaGFyQ29kZUF0KDApO2Z1bmN0aW9uIGkodCxlKXt2YXIgaSxyPVtdLG89dC5sZW5ndGgsYT0wLHM9MCxsPW88PTAsYz0hMTtmdW5jdGlvbiB1KCl7aWYobClyZXR1cm4gV2c7aWYoYylyZXR1cm4gYz0hMSxHZzt2YXIgZSxpLHI9YTtpZigzND09PXQuY2hhckNvZGVBdChyKSl7Zm9yKDthKys8byYmMzQhPT10LmNoYXJDb2RlQXQoYSl8fDM0PT09dC5jaGFyQ29kZUF0KCsrYSk7KTtyZXR1cm4oZT1hKT49bz9sPSEwOjEwPT09KGk9dC5jaGFyQ29kZUF0KGErKykpP2M9ITA6MTM9PT1pJiYoYz0hMCwxMD09PXQuY2hhckNvZGVBdChhKSYmKythKSx0LnNsaWNlKHIrMSxlLTEpLnJlcGxhY2UoLyIiL2csJyInKX1mb3IoO2E8bzspe2lmKDEwPT09KGk9dC5jaGFyQ29kZUF0KGU9YSsrKSkpYz0hMDtlbHNlIGlmKDEzPT09aSljPSEwLDEwPT09dC5jaGFyQ29kZUF0KGEpJiYrK2E7ZWxzZSBpZihpIT09biljb250aW51ZTtyZXR1cm4gdC5zbGljZShyLGUpfXJldHVybiBsPSEwLHQuc2xpY2UocixvKX1mb3IoMTA9PT10LmNoYXJDb2RlQXQoby0xKSYmLS1vLDEzPT09dC5jaGFyQ29kZUF0KG8tMSkmJi0tbzsoaT11KCkpIT09V2c7KXtmb3IodmFyIGg9W107aSE9PUdnJiZpIT09V2c7KWgucHVzaChpKSxpPXUoKTtlJiZudWxsPT0oaD1lKGgscysrKSl8fHIucHVzaChoKX1yZXR1cm4gcn1mdW5jdGlvbiByKGUsbil7cmV0dXJuIGUubWFwKChmdW5jdGlvbihlKXtyZXR1cm4gbi5tYXAoKGZ1bmN0aW9uKHQpe3JldHVybiBhKGVbdF0pfSkpLmpvaW4odCl9KSl9ZnVuY3Rpb24gbyhlKXtyZXR1cm4gZS5tYXAoYSkuam9pbih0KX1mdW5jdGlvbiBhKHQpe3JldHVybiBudWxsPT10PyIiOnQgaW5zdGFuY2VvZiBEYXRlPyhmdW5jdGlvbiBuKHQpe3ZhciBlPXQuZ2V0VVRDSG91cnMoKSxuPXQuZ2V0VVRDTWludXRlcygpLGk9dC5nZXRVVENTZWNvbmRzKCkscj10LmdldFVUQ01pbGxpc2Vjb25kcygpO3JldHVybiBpc05hTih0KT8iSW52YWxpZCBEYXRlIjooZnVuY3Rpb24gbyh0KXtyZXR1cm4gdDwwPyItIitYZygtdCw2KTp0Pjk5OTk/IisiK1hnKHQsNik6WGcodCw0KX0pKHQuZ2V0VVRDRnVsbFllYXIoKSkrIi0iK1hnKHQuZ2V0VVRDTW9udGgoKSsxLDIpKyItIitYZyh0LmdldFVUQ0RhdGUoKSwyKSsocj8iVCIrWGcoZSwyKSsiOiIrWGcobiwyKSsiOiIrWGcoaSwyKSsiLiIrWGcociwzKSsiWiI6aT8iVCIrWGcoZSwyKSsiOiIrWGcobiwyKSsiOiIrWGcoaSwyKSsiWiI6bnx8ZT8iVCIrWGcoZSwyKSsiOiIrWGcobiwyKSsiWiI6IiIpfSkodCk6ZS50ZXN0KHQrPSIiKT8nIicrdC5yZXBsYWNlKC8iL2csJyIiJykrJyInOnR9cmV0dXJue3BhcnNlOmZ1bmN0aW9uIHModCxlKXt2YXIgbixyLG89aSh0LChmdW5jdGlvbih0LGkpe2lmKG4pcmV0dXJuIG4odCxpLTEpO3I9dCxuPWU/KGZ1bmN0aW9uIG8odCxlKXt2YXIgbj1xZyh0KTtyZXR1cm4gZnVuY3Rpb24oaSxyKXtyZXR1cm4gZShuKGkpLHIsdCl9fSkodCxlKTpxZyh0KX0pKTtyZXR1cm4gby5jb2x1bW5zPXJ8fFtdLG99LHBhcnNlUm93czppLGZvcm1hdDpmdW5jdGlvbiBsKGUsbil7cmV0dXJuIG51bGw9PW4mJihuPVlnKGUpKSxbbi5tYXAoYSkuam9pbih0KV0uY29uY2F0KHIoZSxuKSkuam9pbigiXG4iKX0sZm9ybWF0Qm9keTpmdW5jdGlvbiBjKHQsZSl7cmV0dXJuIG51bGw9PWUmJihlPVlnKHQpKSxyKHQsZSkuam9pbigiXG4iKX0sZm9ybWF0Um93czpmdW5jdGlvbiB1KHQpe3JldHVybiB0Lm1hcChvKS5qb2luKCJcbiIpfSxmb3JtYXRSb3c6byxmb3JtYXRWYWx1ZTphfX12YXIgS2c9JGcoIiwiKSxaZz1LZy5wYXJzZSxKZz1LZy5wYXJzZVJvd3MsUWc9S2cuZm9ybWF0LHRfPUtnLmZvcm1hdEJvZHksZV89S2cuZm9ybWF0Um93cyxuXz1LZy5mb3JtYXRSb3csaV89S2cuZm9ybWF0VmFsdWUscl89JGcoIlx0Iiksb189cl8ucGFyc2UsYV89cl8ucGFyc2VSb3dzLHNfPXJfLmZvcm1hdCxsXz1yXy5mb3JtYXRCb2R5LGNfPXJfLmZvcm1hdFJvd3MsdV89cl8uZm9ybWF0Um93LGhfPXJfLmZvcm1hdFZhbHVlLGRfPW5ldyBEYXRlKCIyMDE5LTAxLTAxVDAwOjAwIikuZ2V0SG91cnMoKXx8bmV3IERhdGUoIjIwMTktMDctMDFUMDA6MDAiKS5nZXRIb3VycygpO2Z1bmN0aW9uIHBfKHQpe2lmKCF0Lm9rKXRocm93IG5ldyBFcnJvcih0LnN0YXR1cysiICIrdC5zdGF0dXNUZXh0KTtyZXR1cm4gdC5ibG9iKCl9ZnVuY3Rpb24gZl8odCl7aWYoIXQub2spdGhyb3cgbmV3IEVycm9yKHQuc3RhdHVzKyIgIit0LnN0YXR1c1RleHQpO3JldHVybiB0LmFycmF5QnVmZmVyKCl9ZnVuY3Rpb24gbV8odCl7aWYoIXQub2spdGhyb3cgbmV3IEVycm9yKHQuc3RhdHVzKyIgIit0LnN0YXR1c1RleHQpO3JldHVybiB0LnRleHQoKX1mdW5jdGlvbiBnXyh0LGUpe3JldHVybiBmZXRjaCh0LGUpLnRoZW4obV8pfWZ1bmN0aW9uIF9fKHQpe3JldHVybiBmdW5jdGlvbihlLG4saSl7cmV0dXJuIDI9PT1hcmd1bWVudHMubGVuZ3RoJiYiZnVuY3Rpb24iPT10eXBlb2YgbiYmKGk9bixuPXZvaWQgMCksZ18oZSxuKS50aGVuKChmdW5jdGlvbihlKXtyZXR1cm4gdChlLGkpfSkpfX12YXIgeV89X18oWmcpLHZfPV9fKG9fKTtmdW5jdGlvbiBiXyh0KXtpZighdC5vayl0aHJvdyBuZXcgRXJyb3IodC5zdGF0dXMrIiAiK3Quc3RhdHVzVGV4dCk7aWYoMjA0IT09dC5zdGF0dXMmJjIwNSE9PXQuc3RhdHVzKXJldHVybiB0Lmpzb24oKX1mdW5jdGlvbiB4Xyh0KXtyZXR1cm4gZnVuY3Rpb24oZSxuKXtyZXR1cm4gZ18oZSxuKS50aGVuKChmdW5jdGlvbihlKXtyZXR1cm4obmV3IERPTVBhcnNlcikucGFyc2VGcm9tU3RyaW5nKGUsdCl9KSl9fXZhciB3Xz14XygiYXBwbGljYXRpb24veG1sIiksU189eF8oInRleHQvaHRtbCIpLE1fPXhfKCJpbWFnZS9zdmcreG1sIik7ZnVuY3Rpb24gRV8odCl7cmV0dXJuIGZ1bmN0aW9uKCl7cmV0dXJuIHR9fWZ1bmN0aW9uIFRfKCl7cmV0dXJuIDFlLTYqKE1hdGgucmFuZG9tKCktLjUpfWZ1bmN0aW9uIEFfKHQsZSxuLGkpe2lmKGlzTmFOKGUpfHxpc05hTihuKSlyZXR1cm4gdDt2YXIgcixvLGEscyxsLGMsdSxoLGQscD10Ll9yb290LGY9e2RhdGE6aX0sbT10Ll94MCxnPXQuX3kwLF89dC5feDEseT10Ll95MTtpZighcClyZXR1cm4gdC5fcm9vdD1mLHQ7Zm9yKDtwLmxlbmd0aDspaWYoKGM9ZT49KG89KG0rXykvMikpP209bzpfPW8sKHU9bj49KGE9KGcreSkvMikpP2c9YTp5PWEscj1wLCEocD1wW2g9dTw8MXxjXSkpcmV0dXJuIHJbaF09Zix0O2lmKHM9K3QuX3guY2FsbChudWxsLHAuZGF0YSksbD0rdC5feS5jYWxsKG51bGwscC5kYXRhKSxlPT09cyYmbj09PWwpcmV0dXJuIGYubmV4dD1wLHI/cltoXT1mOnQuX3Jvb3Q9Zix0O2Rve3I9cj9yW2hdPW5ldyBBcnJheSg0KTp0Ll9yb290PW5ldyBBcnJheSg0KSwoYz1lPj0obz0obStfKS8yKSk/bT1vOl89bywodT1uPj0oYT0oZyt5KS8yKSk/Zz1hOnk9YX13aGlsZSgoaD11PDwxfGMpPT0oZD0obD49YSk8PDF8cz49bykpO3JldHVybiByW2RdPXAscltoXT1mLHR9ZnVuY3Rpb24gQ18odCxlLG4saSxyKXt0aGlzLm5vZGU9dCx0aGlzLngwPWUsdGhpcy55MD1uLHRoaXMueDE9aSx0aGlzLnkxPXJ9ZnVuY3Rpb24ga18odCl7cmV0dXJuIHRbMF19ZnVuY3Rpb24gTF8odCl7cmV0dXJuIHRbMV19ZnVuY3Rpb24gUF8odCxlLG4pe3ZhciBpPW5ldyBJXyhudWxsPT1lP2tfOmUsbnVsbD09bj9MXzpuLE5hTixOYU4sTmFOLE5hTik7cmV0dXJuIG51bGw9PXQ/aTppLmFkZEFsbCh0KX1mdW5jdGlvbiBJXyh0LGUsbixpLHIsbyl7dGhpcy5feD10LHRoaXMuX3k9ZSx0aGlzLl94MD1uLHRoaXMuX3kwPWksdGhpcy5feDE9cix0aGlzLl95MT1vLHRoaXMuX3Jvb3Q9dm9pZCAwfWZ1bmN0aW9uIE5fKHQpe2Zvcih2YXIgZT17ZGF0YTp0LmRhdGF9LG49ZTt0PXQubmV4dDspbj1uLm5leHQ9e2RhdGE6dC5kYXRhfTtyZXR1cm4gZX12YXIgT189UF8ucHJvdG90eXBlPUlfLnByb3RvdHlwZTtmdW5jdGlvbiBSXyh0KXtyZXR1cm4gdC54K3Qudnh9ZnVuY3Rpb24gel8odCl7cmV0dXJuIHQueSt0LnZ5fWZ1bmN0aW9uIERfKHQpe3JldHVybiB0LmluZGV4fWZ1bmN0aW9uIEJfKHQsZSl7dmFyIG49dC5nZXQoZSk7aWYoIW4pdGhyb3cgbmV3IEVycm9yKCJtaXNzaW5nOiAiK2UpO3JldHVybiBufWZ1bmN0aW9uIEhfKHQpe3JldHVybiB0Lnh9ZnVuY3Rpb24gRl8odCl7cmV0dXJuIHQueX1PXy5jb3B5PWZ1bmN0aW9uKCl7dmFyIHQsZSxuPW5ldyBJXyh0aGlzLl94LHRoaXMuX3ksdGhpcy5feDAsdGhpcy5feTAsdGhpcy5feDEsdGhpcy5feTEpLGk9dGhpcy5fcm9vdDtpZighaSlyZXR1cm4gbjtpZighaS5sZW5ndGgpcmV0dXJuIG4uX3Jvb3Q9Tl8oaSksbjtmb3IodD1be3NvdXJjZTppLHRhcmdldDpuLl9yb290PW5ldyBBcnJheSg0KX1dO2k9dC5wb3AoKTspZm9yKHZhciByPTA7cjw0OysrcikoZT1pLnNvdXJjZVtyXSkmJihlLmxlbmd0aD90LnB1c2goe3NvdXJjZTplLHRhcmdldDppLnRhcmdldFtyXT1uZXcgQXJyYXkoNCl9KTppLnRhcmdldFtyXT1OXyhlKSk7cmV0dXJuIG59LE9fLmFkZD1mdW5jdGlvbiBWXyh0KXt2YXIgZT0rdGhpcy5feC5jYWxsKG51bGwsdCksbj0rdGhpcy5feS5jYWxsKG51bGwsdCk7cmV0dXJuIEFfKHRoaXMuY292ZXIoZSxuKSxlLG4sdCl9LE9fLmFkZEFsbD1mdW5jdGlvbiBqXyh0KXt2YXIgZSxuLGkscixvPXQubGVuZ3RoLGE9bmV3IEFycmF5KG8pLHM9bmV3IEFycmF5KG8pLGw9MS8wLGM9MS8wLHU9LTEvMCxoPS0xLzA7Zm9yKG49MDtuPG87KytuKWlzTmFOKGk9K3RoaXMuX3guY2FsbChudWxsLGU9dFtuXSkpfHxpc05hTihyPSt0aGlzLl95LmNhbGwobnVsbCxlKSl8fChhW25dPWksc1tuXT1yLGk8bCYmKGw9aSksaT51JiYodT1pKSxyPGMmJihjPXIpLHI+aCYmKGg9cikpO2lmKGw+dXx8Yz5oKXJldHVybiB0aGlzO2Zvcih0aGlzLmNvdmVyKGwsYykuY292ZXIodSxoKSxuPTA7bjxvOysrbilBXyh0aGlzLGFbbl0sc1tuXSx0W25dKTtyZXR1cm4gdGhpc30sT18uY292ZXI9ZnVuY3Rpb24gVV8odCxlKXtpZihpc05hTih0PSt0KXx8aXNOYU4oZT0rZSkpcmV0dXJuIHRoaXM7dmFyIG49dGhpcy5feDAsaT10aGlzLl95MCxyPXRoaXMuX3gxLG89dGhpcy5feTE7aWYoaXNOYU4obikpcj0obj1NYXRoLmZsb29yKHQpKSsxLG89KGk9TWF0aC5mbG9vcihlKSkrMTtlbHNle2Zvcih2YXIgYSxzLGw9ci1uLGM9dGhpcy5fcm9vdDtuPnR8fHQ+PXJ8fGk+ZXx8ZT49bzspc3dpdGNoKHM9KGU8aSk8PDF8dDxuLChhPW5ldyBBcnJheSg0KSlbc109YyxjPWEsbCo9MixzKXtjYXNlIDA6cj1uK2wsbz1pK2w7YnJlYWs7Y2FzZSAxOm49ci1sLG89aStsO2JyZWFrO2Nhc2UgMjpyPW4rbCxpPW8tbDticmVhaztjYXNlIDM6bj1yLWwsaT1vLWx9dGhpcy5fcm9vdCYmdGhpcy5fcm9vdC5sZW5ndGgmJih0aGlzLl9yb290PWMpfXJldHVybiB0aGlzLl94MD1uLHRoaXMuX3kwPWksdGhpcy5feDE9cix0aGlzLl95MT1vLHRoaXN9LE9fLmRhdGE9ZnVuY3Rpb24gR18oKXt2YXIgdD1bXTtyZXR1cm4gdGhpcy52aXNpdCgoZnVuY3Rpb24oZSl7aWYoIWUubGVuZ3RoKWRve3QucHVzaChlLmRhdGEpfXdoaWxlKGU9ZS5uZXh0KX0pKSx0fSxPXy5leHRlbnQ9ZnVuY3Rpb24gV18odCl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/dGhpcy5jb3ZlcigrdFswXVswXSwrdFswXVsxXSkuY292ZXIoK3RbMV1bMF0sK3RbMV1bMV0pOmlzTmFOKHRoaXMuX3gwKT92b2lkIDA6W1t0aGlzLl94MCx0aGlzLl95MF0sW3RoaXMuX3gxLHRoaXMuX3kxXV19LE9fLmZpbmQ9ZnVuY3Rpb24gcV8odCxlLG4pe3ZhciBpLHIsbyxhLHMsbCxjLHU9dGhpcy5feDAsaD10aGlzLl95MCxkPXRoaXMuX3gxLHA9dGhpcy5feTEsZj1bXSxtPXRoaXMuX3Jvb3Q7Zm9yKG0mJmYucHVzaChuZXcgQ18obSx1LGgsZCxwKSksbnVsbD09bj9uPTEvMDoodT10LW4saD1lLW4sZD10K24scD1lK24sbio9bik7bD1mLnBvcCgpOylpZighKCEobT1sLm5vZGUpfHwocj1sLngwKT5kfHwobz1sLnkwKT5wfHwoYT1sLngxKTx1fHwocz1sLnkxKTxoKSlpZihtLmxlbmd0aCl7dmFyIGc9KHIrYSkvMixfPShvK3MpLzI7Zi5wdXNoKG5ldyBDXyhtWzNdLGcsXyxhLHMpLG5ldyBDXyhtWzJdLHIsXyxnLHMpLG5ldyBDXyhtWzFdLGcsbyxhLF8pLG5ldyBDXyhtWzBdLHIsbyxnLF8pKSwoYz0oZT49Xyk8PDF8dD49ZykmJihsPWZbZi5sZW5ndGgtMV0sZltmLmxlbmd0aC0xXT1mW2YubGVuZ3RoLTEtY10sZltmLmxlbmd0aC0xLWNdPWwpfWVsc2V7dmFyIHk9dC0rdGhpcy5feC5jYWxsKG51bGwsbS5kYXRhKSx2PWUtK3RoaXMuX3kuY2FsbChudWxsLG0uZGF0YSksYj15Knkrdip2O2lmKGI8bil7dmFyIHg9TWF0aC5zcXJ0KG49Yik7dT10LXgsaD1lLXgsZD10K3gscD1lK3gsaT1tLmRhdGF9fXJldHVybiBpfSxPXy5yZW1vdmU9ZnVuY3Rpb24gWV8odCl7aWYoaXNOYU4obz0rdGhpcy5feC5jYWxsKG51bGwsdCkpfHxpc05hTihhPSt0aGlzLl95LmNhbGwobnVsbCx0KSkpcmV0dXJuIHRoaXM7dmFyIGUsbixpLHIsbyxhLHMsbCxjLHUsaCxkLHA9dGhpcy5fcm9vdCxmPXRoaXMuX3gwLG09dGhpcy5feTAsZz10aGlzLl94MSxfPXRoaXMuX3kxO2lmKCFwKXJldHVybiB0aGlzO2lmKHAubGVuZ3RoKWZvcig7Oyl7aWYoKGM9bz49KHM9KGYrZykvMikpP2Y9czpnPXMsKHU9YT49KGw9KG0rXykvMikpP209bDpfPWwsZT1wLCEocD1wW2g9dTw8MXxjXSkpcmV0dXJuIHRoaXM7aWYoIXAubGVuZ3RoKWJyZWFrOyhlW2grMSYzXXx8ZVtoKzImM118fGVbaCszJjNdKSYmKG49ZSxkPWgpfWZvcig7cC5kYXRhIT09dDspaWYoaT1wLCEocD1wLm5leHQpKXJldHVybiB0aGlzO3JldHVybihyPXAubmV4dCkmJmRlbGV0ZSBwLm5leHQsaT8ocj9pLm5leHQ9cjpkZWxldGUgaS5uZXh0LHRoaXMpOmU/KHI/ZVtoXT1yOmRlbGV0ZSBlW2hdLChwPWVbMF18fGVbMV18fGVbMl18fGVbM10pJiZwPT09KGVbM118fGVbMl18fGVbMV18fGVbMF0pJiYhcC5sZW5ndGgmJihuP25bZF09cDp0aGlzLl9yb290PXApLHRoaXMpOih0aGlzLl9yb290PXIsdGhpcyl9LE9fLnJlbW92ZUFsbD1mdW5jdGlvbiBYXyh0KXtmb3IodmFyIGU9MCxuPXQubGVuZ3RoO2U8bjsrK2UpdGhpcy5yZW1vdmUodFtlXSk7cmV0dXJuIHRoaXN9LE9fLnJvb3Q9ZnVuY3Rpb24gJF8oKXtyZXR1cm4gdGhpcy5fcm9vdH0sT18uc2l6ZT1mdW5jdGlvbiBLXygpe3ZhciB0PTA7cmV0dXJuIHRoaXMudmlzaXQoKGZ1bmN0aW9uKGUpe2lmKCFlLmxlbmd0aClkb3srK3R9d2hpbGUoZT1lLm5leHQpfSkpLHR9LE9fLnZpc2l0PWZ1bmN0aW9uIFpfKHQpe3ZhciBlLG4saSxyLG8sYSxzPVtdLGw9dGhpcy5fcm9vdDtmb3IobCYmcy5wdXNoKG5ldyBDXyhsLHRoaXMuX3gwLHRoaXMuX3kwLHRoaXMuX3gxLHRoaXMuX3kxKSk7ZT1zLnBvcCgpOylpZighdChsPWUubm9kZSxpPWUueDAscj1lLnkwLG89ZS54MSxhPWUueTEpJiZsLmxlbmd0aCl7dmFyIGM9KGkrbykvMix1PShyK2EpLzI7KG49bFszXSkmJnMucHVzaChuZXcgQ18obixjLHUsbyxhKSksKG49bFsyXSkmJnMucHVzaChuZXcgQ18obixpLHUsYyxhKSksKG49bFsxXSkmJnMucHVzaChuZXcgQ18obixjLHIsbyx1KSksKG49bFswXSkmJnMucHVzaChuZXcgQ18obixpLHIsYyx1KSl9cmV0dXJuIHRoaXN9LE9fLnZpc2l0QWZ0ZXI9ZnVuY3Rpb24gSl8odCl7dmFyIGUsbj1bXSxpPVtdO2Zvcih0aGlzLl9yb290JiZuLnB1c2gobmV3IENfKHRoaXMuX3Jvb3QsdGhpcy5feDAsdGhpcy5feTAsdGhpcy5feDEsdGhpcy5feTEpKTtlPW4ucG9wKCk7KXt2YXIgcj1lLm5vZGU7aWYoci5sZW5ndGgpe3ZhciBvLGE9ZS54MCxzPWUueTAsbD1lLngxLGM9ZS55MSx1PShhK2wpLzIsaD0ocytjKS8yOyhvPXJbMF0pJiZuLnB1c2gobmV3IENfKG8sYSxzLHUsaCkpLChvPXJbMV0pJiZuLnB1c2gobmV3IENfKG8sdSxzLGwsaCkpLChvPXJbMl0pJiZuLnB1c2gobmV3IENfKG8sYSxoLHUsYykpLChvPXJbM10pJiZuLnB1c2gobmV3IENfKG8sdSxoLGwsYykpfWkucHVzaChlKX1mb3IoO2U9aS5wb3AoKTspdChlLm5vZGUsZS54MCxlLnkwLGUueDEsZS55MSk7cmV0dXJuIHRoaXN9LE9fLng9ZnVuY3Rpb24gUV8odCl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KHRoaXMuX3g9dCx0aGlzKTp0aGlzLl94fSxPXy55PWZ1bmN0aW9uIHR5KHQpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyh0aGlzLl95PXQsdGhpcyk6dGhpcy5feX07dmFyIGV5PU1hdGguUEkqKDMtTWF0aC5zcXJ0KDUpKTtmdW5jdGlvbiBueSh0LGUpe2lmKChuPSh0PWU/dC50b0V4cG9uZW50aWFsKGUtMSk6dC50b0V4cG9uZW50aWFsKCkpLmluZGV4T2YoImUiKSk8MClyZXR1cm4gbnVsbDt2YXIgbixpPXQuc2xpY2UoMCxuKTtyZXR1cm5baS5sZW5ndGg+MT9pWzBdK2kuc2xpY2UoMik6aSwrdC5zbGljZShuKzEpXX1mdW5jdGlvbiBpeSh0KXtyZXR1cm4odD1ueShNYXRoLmFicyh0KSkpP3RbMV06TmFOfXZhciByeSxveT0vXig/OiguKT8oWzw+PV5dKSk/KFsrXC0oIF0pPyhbJCNdKT8oMCk/KFxkKyk/KCwpPyhcLlxkKyk/KH4pPyhbYS16JV0pPyQvaTtmdW5jdGlvbiBheSh0KXtpZighKGU9b3kuZXhlYyh0KSkpdGhyb3cgbmV3IEVycm9yKCJpbnZhbGlkIGZvcm1hdDogIit0KTt2YXIgZTtyZXR1cm4gbmV3IHN5KHtmaWxsOmVbMV0sYWxpZ246ZVsyXSxzaWduOmVbM10sc3ltYm9sOmVbNF0semVybzplWzVdLHdpZHRoOmVbNl0sY29tbWE6ZVs3XSxwcmVjaXNpb246ZVs4XSYmZVs4XS5zbGljZSgxKSx0cmltOmVbOV0sdHlwZTplWzEwXX0pfWZ1bmN0aW9uIHN5KHQpe3RoaXMuZmlsbD12b2lkIDA9PT10LmZpbGw/IiAiOnQuZmlsbCsiIix0aGlzLmFsaWduPXZvaWQgMD09PXQuYWxpZ24/Ij4iOnQuYWxpZ24rIiIsdGhpcy5zaWduPXZvaWQgMD09PXQuc2lnbj8iLSI6dC5zaWduKyIiLHRoaXMuc3ltYm9sPXZvaWQgMD09PXQuc3ltYm9sPyIiOnQuc3ltYm9sKyIiLHRoaXMuemVybz0hIXQuemVybyx0aGlzLndpZHRoPXZvaWQgMD09PXQud2lkdGg/dm9pZCAwOit0LndpZHRoLHRoaXMuY29tbWE9ISF0LmNvbW1hLHRoaXMucHJlY2lzaW9uPXZvaWQgMD09PXQucHJlY2lzaW9uP3ZvaWQgMDordC5wcmVjaXNpb24sdGhpcy50cmltPSEhdC50cmltLHRoaXMudHlwZT12b2lkIDA9PT10LnR5cGU/IiI6dC50eXBlKyIifWZ1bmN0aW9uIGx5KHQsZSl7dmFyIG49bnkodCxlKTtpZighbilyZXR1cm4gdCsiIjt2YXIgaT1uWzBdLHI9blsxXTtyZXR1cm4gcjwwPyIwLiIrbmV3IEFycmF5KC1yKS5qb2luKCIwIikraTppLmxlbmd0aD5yKzE/aS5zbGljZSgwLHIrMSkrIi4iK2kuc2xpY2UocisxKTppK25ldyBBcnJheShyLWkubGVuZ3RoKzIpLmpvaW4oIjAiKX1heS5wcm90b3R5cGU9c3kucHJvdG90eXBlLHN5LnByb3RvdHlwZS50b1N0cmluZz1mdW5jdGlvbigpe3JldHVybiB0aGlzLmZpbGwrdGhpcy5hbGlnbit0aGlzLnNpZ24rdGhpcy5zeW1ib2wrKHRoaXMuemVybz8iMCI6IiIpKyh2b2lkIDA9PT10aGlzLndpZHRoPyIiOk1hdGgubWF4KDEsMHx0aGlzLndpZHRoKSkrKHRoaXMuY29tbWE/IiwiOiIiKSsodm9pZCAwPT09dGhpcy5wcmVjaXNpb24/IiI6Ii4iK01hdGgubWF4KDAsMHx0aGlzLnByZWNpc2lvbikpKyh0aGlzLnRyaW0/In4iOiIiKSt0aGlzLnR5cGV9O3ZhciBjeT17IiUiOmZ1bmN0aW9uKHQsZSl7cmV0dXJuKDEwMCp0KS50b0ZpeGVkKGUpfSxiOmZ1bmN0aW9uKHQpe3JldHVybiBNYXRoLnJvdW5kKHQpLnRvU3RyaW5nKDIpfSxjOmZ1bmN0aW9uKHQpe3JldHVybiB0KyIifSxkOmZ1bmN0aW9uKHQpe3JldHVybiBNYXRoLnJvdW5kKHQpLnRvU3RyaW5nKDEwKX0sZTpmdW5jdGlvbih0LGUpe3JldHVybiB0LnRvRXhwb25lbnRpYWwoZSl9LGY6ZnVuY3Rpb24odCxlKXtyZXR1cm4gdC50b0ZpeGVkKGUpfSxnOmZ1bmN0aW9uKHQsZSl7cmV0dXJuIHQudG9QcmVjaXNpb24oZSl9LG86ZnVuY3Rpb24odCl7cmV0dXJuIE1hdGgucm91bmQodCkudG9TdHJpbmcoOCl9LHA6ZnVuY3Rpb24odCxlKXtyZXR1cm4gbHkoMTAwKnQsZSl9LHI6bHksczpmdW5jdGlvbiB1eSh0LGUpe3ZhciBuPW55KHQsZSk7aWYoIW4pcmV0dXJuIHQrIiI7dmFyIGk9blswXSxyPW5bMV0sbz1yLShyeT0zKk1hdGgubWF4KC04LE1hdGgubWluKDgsTWF0aC5mbG9vcihyLzMpKSkpKzEsYT1pLmxlbmd0aDtyZXR1cm4gbz09PWE/aTpvPmE/aStuZXcgQXJyYXkoby1hKzEpLmpvaW4oIjAiKTpvPjA/aS5zbGljZSgwLG8pKyIuIitpLnNsaWNlKG8pOiIwLiIrbmV3IEFycmF5KDEtbykuam9pbigiMCIpK255KHQsTWF0aC5tYXgoMCxlK28tMSkpWzBdfSxYOmZ1bmN0aW9uKHQpe3JldHVybiBNYXRoLnJvdW5kKHQpLnRvU3RyaW5nKDE2KS50b1VwcGVyQ2FzZSgpfSx4OmZ1bmN0aW9uKHQpe3JldHVybiBNYXRoLnJvdW5kKHQpLnRvU3RyaW5nKDE2KX19O2Z1bmN0aW9uIGh5KHQpe3JldHVybiB0fXZhciBkeSxweSxmeSxteT1BcnJheS5wcm90b3R5cGUubWFwLGd5PVsieSIsInoiLCJhIiwiZiIsInAiLCJuIiwiwrUiLCJtIiwiIiwiayIsIk0iLCJHIiwiVCIsIlAiLCJFIiwiWiIsIlkiXTtmdW5jdGlvbiBfeSh0KXt2YXIgZT12b2lkIDA9PT10Lmdyb3VwaW5nfHx2b2lkIDA9PT10LnRob3VzYW5kcz9oeTooZnVuY3Rpb24gbih0LGUpe3JldHVybiBmdW5jdGlvbihuLGkpe2Zvcih2YXIgcj1uLmxlbmd0aCxvPVtdLGE9MCxzPXRbMF0sbD0wO3I+MCYmcz4wJiYobCtzKzE+aSYmKHM9TWF0aC5tYXgoMSxpLWwpKSxvLnB1c2gobi5zdWJzdHJpbmcoci09cyxyK3MpKSwhKChsKz1zKzEpPmkpKTspcz10W2E9KGErMSkldC5sZW5ndGhdO3JldHVybiBvLnJldmVyc2UoKS5qb2luKGUpfX0pKG15LmNhbGwodC5ncm91cGluZyxOdW1iZXIpLHQudGhvdXNhbmRzKyIiKSxpPXZvaWQgMD09PXQuY3VycmVuY3k/IiI6dC5jdXJyZW5jeVswXSsiIixyPXZvaWQgMD09PXQuY3VycmVuY3k/IiI6dC5jdXJyZW5jeVsxXSsiIixvPXZvaWQgMD09PXQuZGVjaW1hbD8iLiI6dC5kZWNpbWFsKyIiLGE9dm9pZCAwPT09dC5udW1lcmFscz9oeTooZnVuY3Rpb24gcyh0KXtyZXR1cm4gZnVuY3Rpb24oZSl7cmV0dXJuIGUucmVwbGFjZSgvWzAtOV0vZywoZnVuY3Rpb24oZSl7cmV0dXJuIHRbK2VdfSkpfX0pKG15LmNhbGwodC5udW1lcmFscyxTdHJpbmcpKSxsPXZvaWQgMD09PXQucGVyY2VudD8iJSI6dC5wZXJjZW50KyIiLGM9dm9pZCAwPT09dC5taW51cz8iLSI6dC5taW51cysiIix1PXZvaWQgMD09PXQubmFuPyJOYU4iOnQubmFuKyIiO2Z1bmN0aW9uIGgodCl7dmFyIG49KHQ9YXkodCkpLmZpbGwscz10LmFsaWduLGg9dC5zaWduLGQ9dC5zeW1ib2wscD10Lnplcm8sZj10LndpZHRoLG09dC5jb21tYSxnPXQucHJlY2lzaW9uLF89dC50cmltLHk9dC50eXBlOyJuIj09PXk/KG09ITAseT0iZyIpOmN5W3ldfHwodm9pZCAwPT09ZyYmKGc9MTIpLF89ITAseT0iZyIpLChwfHwiMCI9PT1uJiYiPSI9PT1zKSYmKHA9ITAsbj0iMCIscz0iPSIpO3ZhciB2PSIkIj09PWQ/aToiIyI9PT1kJiYvW2JveFhdLy50ZXN0KHkpPyIwIit5LnRvTG93ZXJDYXNlKCk6IiIsYj0iJCI9PT1kP3I6L1slcF0vLnRlc3QoeSk/bDoiIix4PWN5W3ldLHc9L1tkZWZncHJzJV0vLnRlc3QoeSk7ZnVuY3Rpb24gUyh0KXt2YXIgaSxyLGwsZD12LFM9YjtpZigiYyI9PT15KVM9eCh0KStTLHQ9IiI7ZWxzZXt2YXIgTT0odD0rdCk8MHx8MS90PDA7aWYodD1pc05hTih0KT91OngoTWF0aC5hYnModCksZyksXyYmKHQ9KGZ1bmN0aW9uIEUodCl7dDpmb3IodmFyIGUsbj10Lmxlbmd0aCxpPTEscj0tMTtpPG47KytpKXN3aXRjaCh0W2ldKXtjYXNlIi4iOnI9ZT1pO2JyZWFrO2Nhc2UiMCI6MD09PXImJihyPWkpLGU9aTticmVhaztkZWZhdWx0OmlmKCErdFtpXSlicmVhayB0O3I+MCYmKHI9MCl9cmV0dXJuIHI+MD90LnNsaWNlKDAscikrdC5zbGljZShlKzEpOnR9KSh0KSksTSYmMD09K3QmJiIrIiE9PWgmJihNPSExKSxkPShNPyIoIj09PWg/aDpjOiItIj09PWh8fCIoIj09PWg/IiI6aCkrZCxTPSgicyI9PT15P2d5WzgrcnkvM106IiIpK1MrKE0mJiIoIj09PWg/IikiOiIiKSx3KWZvcihpPS0xLHI9dC5sZW5ndGg7KytpPHI7KWlmKDQ4PihsPXQuY2hhckNvZGVBdChpKSl8fGw+NTcpe1M9KDQ2PT09bD9vK3Quc2xpY2UoaSsxKTp0LnNsaWNlKGkpKStTLHQ9dC5zbGljZSgwLGkpO2JyZWFrfX1tJiYhcCYmKHQ9ZSh0LDEvMCkpO3ZhciBUPWQubGVuZ3RoK3QubGVuZ3RoK1MubGVuZ3RoLEE9VDxmP25ldyBBcnJheShmLVQrMSkuam9pbihuKToiIjtzd2l0Y2gobSYmcCYmKHQ9ZShBK3QsQS5sZW5ndGg/Zi1TLmxlbmd0aDoxLzApLEE9IiIpLHMpe2Nhc2UiPCI6dD1kK3QrUytBO2JyZWFrO2Nhc2UiPSI6dD1kK0ErdCtTO2JyZWFrO2Nhc2UiXiI6dD1BLnNsaWNlKDAsVD1BLmxlbmd0aD4+MSkrZCt0K1MrQS5zbGljZShUKTticmVhaztkZWZhdWx0OnQ9QStkK3QrU31yZXR1cm4gYSh0KX1yZXR1cm4gZz12b2lkIDA9PT1nPzY6L1tncHJzXS8udGVzdCh5KT9NYXRoLm1heCgxLE1hdGgubWluKDIxLGcpKTpNYXRoLm1heCgwLE1hdGgubWluKDIwLGcpKSxTLnRvU3RyaW5nPWZ1bmN0aW9uKCl7cmV0dXJuIHQrIiJ9LFN9cmV0dXJue2Zvcm1hdDpoLGZvcm1hdFByZWZpeDpmdW5jdGlvbiBkKHQsZSl7dmFyIG49aCgoKHQ9YXkodCkpLnR5cGU9ImYiLHQpKSxpPTMqTWF0aC5tYXgoLTgsTWF0aC5taW4oOCxNYXRoLmZsb29yKGl5KGUpLzMpKSkscj1NYXRoLnBvdygxMCwtaSksbz1neVs4K2kvM107cmV0dXJuIGZ1bmN0aW9uKHQpe3JldHVybiBuKHIqdCkrb319fX1mdW5jdGlvbiB5eSh0KXtyZXR1cm4gZHk9X3kodCkscHk9ZHkuZm9ybWF0LGZ5PWR5LmZvcm1hdFByZWZpeCxkeX1mdW5jdGlvbiB2eSh0KXtyZXR1cm4gTWF0aC5tYXgoMCwtaXkoTWF0aC5hYnModCkpKX1mdW5jdGlvbiBieSh0LGUpe3JldHVybiBNYXRoLm1heCgwLDMqTWF0aC5tYXgoLTgsTWF0aC5taW4oOCxNYXRoLmZsb29yKGl5KGUpLzMpKSktaXkoTWF0aC5hYnModCkpKX1mdW5jdGlvbiB4eSh0LGUpe3JldHVybiB0PU1hdGguYWJzKHQpLGU9TWF0aC5hYnMoZSktdCxNYXRoLm1heCgwLGl5KGUpLWl5KHQpKSsxfWZ1bmN0aW9uIHd5KCl7cmV0dXJuIG5ldyBTeX1mdW5jdGlvbiBTeSgpe3RoaXMucmVzZXQoKX15eSh7ZGVjaW1hbDoiLiIsdGhvdXNhbmRzOiIsIixncm91cGluZzpbM10sY3VycmVuY3k6WyIkIiwiIl0sbWludXM6Ii0ifSksU3kucHJvdG90eXBlPXtjb25zdHJ1Y3RvcjpTeSxyZXNldDpmdW5jdGlvbigpe3RoaXMucz10aGlzLnQ9MH0sYWRkOmZ1bmN0aW9uKHQpe0V5KE15LHQsdGhpcy50KSxFeSh0aGlzLE15LnMsdGhpcy5zKSx0aGlzLnM/dGhpcy50Kz1NeS50OnRoaXMucz1NeS50fSx2YWx1ZU9mOmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuc319O3ZhciBNeT1uZXcgU3k7ZnVuY3Rpb24gRXkodCxlLG4pe3ZhciBpPXQucz1lK24scj1pLWU7dC50PWUtKGktcikrKG4tcil9dmFyIFR5PTFlLTYsQXk9MWUtMTIsQ3k9TWF0aC5QSSxreT1DeS8yLEx5PUN5LzQsUHk9MipDeSxJeT0xODAvQ3ksTnk9Q3kvMTgwLE95PU1hdGguYWJzLFJ5PU1hdGguYXRhbix6eT1NYXRoLmF0YW4yLER5PU1hdGguY29zLEJ5PU1hdGguY2VpbCxIeT1NYXRoLmV4cCxGeT1NYXRoLmxvZyxWeT1NYXRoLnBvdyxqeT1NYXRoLnNpbixVeT1NYXRoLnNpZ258fGZ1bmN0aW9uKHQpe3JldHVybiB0PjA/MTp0PDA/LTE6MH0sR3k9TWF0aC5zcXJ0LFd5PU1hdGgudGFuO2Z1bmN0aW9uIHF5KHQpe3JldHVybiB0PjE/MDp0PC0xP0N5Ok1hdGguYWNvcyh0KX1mdW5jdGlvbiBZeSh0KXtyZXR1cm4gdD4xP2t5OnQ8LTE/LWt5Ok1hdGguYXNpbih0KX1mdW5jdGlvbiBYeSh0KXtyZXR1cm4odD1qeSh0LzIpKSp0fWZ1bmN0aW9uICR5KCl7fWZ1bmN0aW9uIEt5KHQsZSl7dCYmSnkuaGFzT3duUHJvcGVydHkodC50eXBlKSYmSnlbdC50eXBlXSh0LGUpfXZhciBaeT17RmVhdHVyZTpmdW5jdGlvbih0LGUpe0t5KHQuZ2VvbWV0cnksZSl9LEZlYXR1cmVDb2xsZWN0aW9uOmZ1bmN0aW9uKHQsZSl7Zm9yKHZhciBuPXQuZmVhdHVyZXMsaT0tMSxyPW4ubGVuZ3RoOysraTxyOylLeShuW2ldLmdlb21ldHJ5LGUpfX0sSnk9e1NwaGVyZTpmdW5jdGlvbih0LGUpe2Uuc3BoZXJlKCl9LFBvaW50OmZ1bmN0aW9uKHQsZSl7ZS5wb2ludCgodD10LmNvb3JkaW5hdGVzKVswXSx0WzFdLHRbMl0pfSxNdWx0aVBvaW50OmZ1bmN0aW9uKHQsZSl7Zm9yKHZhciBuPXQuY29vcmRpbmF0ZXMsaT0tMSxyPW4ubGVuZ3RoOysraTxyOyllLnBvaW50KCh0PW5baV0pWzBdLHRbMV0sdFsyXSl9LExpbmVTdHJpbmc6ZnVuY3Rpb24odCxlKXtReSh0LmNvb3JkaW5hdGVzLGUsMCl9LE11bHRpTGluZVN0cmluZzpmdW5jdGlvbih0LGUpe2Zvcih2YXIgbj10LmNvb3JkaW5hdGVzLGk9LTEscj1uLmxlbmd0aDsrK2k8cjspUXkobltpXSxlLDApfSxQb2x5Z29uOmZ1bmN0aW9uKHQsZSl7dHYodC5jb29yZGluYXRlcyxlKX0sTXVsdGlQb2x5Z29uOmZ1bmN0aW9uKHQsZSl7Zm9yKHZhciBuPXQuY29vcmRpbmF0ZXMsaT0tMSxyPW4ubGVuZ3RoOysraTxyOyl0dihuW2ldLGUpfSxHZW9tZXRyeUNvbGxlY3Rpb246ZnVuY3Rpb24odCxlKXtmb3IodmFyIG49dC5nZW9tZXRyaWVzLGk9LTEscj1uLmxlbmd0aDsrK2k8cjspS3kobltpXSxlKX19O2Z1bmN0aW9uIFF5KHQsZSxuKXt2YXIgaSxyPS0xLG89dC5sZW5ndGgtbjtmb3IoZS5saW5lU3RhcnQoKTsrK3I8bzspZS5wb2ludCgoaT10W3JdKVswXSxpWzFdLGlbMl0pO2UubGluZUVuZCgpfWZ1bmN0aW9uIHR2KHQsZSl7dmFyIG49LTEsaT10Lmxlbmd0aDtmb3IoZS5wb2x5Z29uU3RhcnQoKTsrK248aTspUXkodFtuXSxlLDEpO2UucG9seWdvbkVuZCgpfWZ1bmN0aW9uIGV2KHQsZSl7dCYmWnkuaGFzT3duUHJvcGVydHkodC50eXBlKT9aeVt0LnR5cGVdKHQsZSk6S3kodCxlKX12YXIgbnYsaXYscnYsb3YsYXYsc3Y9d3koKSxsdj13eSgpLGN2PXtwb2ludDokeSxsaW5lU3RhcnQ6JHksbGluZUVuZDokeSxwb2x5Z29uU3RhcnQ6ZnVuY3Rpb24oKXtzdi5yZXNldCgpLGN2LmxpbmVTdGFydD11dixjdi5saW5lRW5kPWh2fSxwb2x5Z29uRW5kOmZ1bmN0aW9uKCl7dmFyIHQ9K3N2O2x2LmFkZCh0PDA/UHkrdDp0KSx0aGlzLmxpbmVTdGFydD10aGlzLmxpbmVFbmQ9dGhpcy5wb2ludD0keX0sc3BoZXJlOmZ1bmN0aW9uKCl7bHYuYWRkKFB5KX19O2Z1bmN0aW9uIHV2KCl7Y3YucG9pbnQ9ZHZ9ZnVuY3Rpb24gaHYoKXtwdihudixpdil9ZnVuY3Rpb24gZHYodCxlKXtjdi5wb2ludD1wdixudj10LGl2PWUscnY9dCo9Tnksb3Y9RHkoZT0oZSo9TnkpLzIrTHkpLGF2PWp5KGUpfWZ1bmN0aW9uIHB2KHQsZSl7dmFyIG49KHQqPU55KS1ydixpPW4+PTA/MTotMSxyPWkqbixvPUR5KGU9KGUqPU55KS8yK0x5KSxhPWp5KGUpLHM9YXYqYSxsPW92Km8rcypEeShyKSxjPXMqaSpqeShyKTtzdi5hZGQoenkoYyxsKSkscnY9dCxvdj1vLGF2PWF9ZnVuY3Rpb24gZnYodCl7cmV0dXJuW3p5KHRbMV0sdFswXSksWXkodFsyXSldfWZ1bmN0aW9uIG12KHQpe3ZhciBlPXRbMF0sbj10WzFdLGk9RHkobik7cmV0dXJuW2kqRHkoZSksaSpqeShlKSxqeShuKV19ZnVuY3Rpb24gZ3YodCxlKXtyZXR1cm4gdFswXSplWzBdK3RbMV0qZVsxXSt0WzJdKmVbMl19ZnVuY3Rpb24gX3YodCxlKXtyZXR1cm5bdFsxXSplWzJdLXRbMl0qZVsxXSx0WzJdKmVbMF0tdFswXSplWzJdLHRbMF0qZVsxXS10WzFdKmVbMF1dfWZ1bmN0aW9uIHl2KHQsZSl7dFswXSs9ZVswXSx0WzFdKz1lWzFdLHRbMl0rPWVbMl19ZnVuY3Rpb24gdnYodCxlKXtyZXR1cm5bdFswXSplLHRbMV0qZSx0WzJdKmVdfWZ1bmN0aW9uIGJ2KHQpe3ZhciBlPUd5KHRbMF0qdFswXSt0WzFdKnRbMV0rdFsyXSp0WzJdKTt0WzBdLz1lLHRbMV0vPWUsdFsyXS89ZX12YXIgeHYsd3YsU3YsTXYsRXYsVHYsQXYsQ3Ysa3YsTHYsUHYsSXYsTnYsT3YsUnYsenYsRHYsQnYsSHYsRnYsVnYsanYsVXYsR3YsV3YscXYsWXY9d3koKSxYdj17cG9pbnQ6JHYsbGluZVN0YXJ0Olp2LGxpbmVFbmQ6SnYscG9seWdvblN0YXJ0OmZ1bmN0aW9uKCl7WHYucG9pbnQ9UXYsWHYubGluZVN0YXJ0PXRiLFh2LmxpbmVFbmQ9ZWIsWXYucmVzZXQoKSxjdi5wb2x5Z29uU3RhcnQoKX0scG9seWdvbkVuZDpmdW5jdGlvbigpe2N2LnBvbHlnb25FbmQoKSxYdi5wb2ludD0kdixYdi5saW5lU3RhcnQ9WnYsWHYubGluZUVuZD1KdixzdjwwPyh4dj0tKFN2PTE4MCksd3Y9LShNdj05MCkpOll2PlR5P012PTkwOll2PC0xZS02JiYod3Y9LTkwKSxMdlswXT14dixMdlsxXT1Tdn0sc3BoZXJlOmZ1bmN0aW9uKCl7eHY9LShTdj0xODApLHd2PS0oTXY9OTApfX07ZnVuY3Rpb24gJHYodCxlKXtrdi5wdXNoKEx2PVt4dj10LFN2PXRdKSxlPHd2JiYod3Y9ZSksZT5NdiYmKE12PWUpfWZ1bmN0aW9uIEt2KHQsZSl7dmFyIG49bXYoW3QqTnksZSpOeV0pO2lmKEN2KXt2YXIgaT1fdihDdixuKSxyPV92KFtpWzFdLC1pWzBdLDBdLGkpO2J2KHIpLHI9ZnYocik7dmFyIG8sYT10LUV2LHM9YT4wPzE6LTEsbD1yWzBdKkl5KnMsYz1PeShhKT4xODA7Y14ocypFdjxsJiZsPHMqdCk/KG89clsxXSpJeSk+TXYmJihNdj1vKTpjXihzKkV2PChsPShsKzM2MCklMzYwLTE4MCkmJmw8cyp0KT8obz0tclsxXSpJeSk8d3YmJih3dj1vKTooZTx3diYmKHd2PWUpLGU+TXYmJihNdj1lKSksYz90PEV2P25iKHh2LHQpPm5iKHh2LFN2KSYmKFN2PXQpOm5iKHQsU3YpPm5iKHh2LFN2KSYmKHh2PXQpOlN2Pj14dj8odDx4diYmKHh2PXQpLHQ+U3YmJihTdj10KSk6dD5Fdj9uYih4dix0KT5uYih4dixTdikmJihTdj10KTpuYih0LFN2KT5uYih4dixTdikmJih4dj10KX1lbHNlIGt2LnB1c2goTHY9W3h2PXQsU3Y9dF0pO2U8d3YmJih3dj1lKSxlPk12JiYoTXY9ZSksQ3Y9bixFdj10fWZ1bmN0aW9uIFp2KCl7WHYucG9pbnQ9S3Z9ZnVuY3Rpb24gSnYoKXtMdlswXT14dixMdlsxXT1TdixYdi5wb2ludD0kdixDdj1udWxsfWZ1bmN0aW9uIFF2KHQsZSl7aWYoQ3Ype3ZhciBuPXQtRXY7WXYuYWRkKE95KG4pPjE4MD9uKyhuPjA/MzYwOi0zNjApOm4pfWVsc2UgVHY9dCxBdj1lO2N2LnBvaW50KHQsZSksS3YodCxlKX1mdW5jdGlvbiB0Yigpe2N2LmxpbmVTdGFydCgpfWZ1bmN0aW9uIGViKCl7UXYoVHYsQXYpLGN2LmxpbmVFbmQoKSxPeShZdik+VHkmJih4dj0tKFN2PTE4MCkpLEx2WzBdPXh2LEx2WzFdPVN2LEN2PW51bGx9ZnVuY3Rpb24gbmIodCxlKXtyZXR1cm4oZS09dCk8MD9lKzM2MDplfWZ1bmN0aW9uIGliKHQsZSl7cmV0dXJuIHRbMF0tZVswXX1mdW5jdGlvbiByYih0LGUpe3JldHVybiB0WzBdPD10WzFdP3RbMF08PWUmJmU8PXRbMV06ZTx0WzBdfHx0WzFdPGV9dmFyIG9iPXtzcGhlcmU6JHkscG9pbnQ6YWIsbGluZVN0YXJ0OmxiLGxpbmVFbmQ6aGIscG9seWdvblN0YXJ0OmZ1bmN0aW9uKCl7b2IubGluZVN0YXJ0PWRiLG9iLmxpbmVFbmQ9cGJ9LHBvbHlnb25FbmQ6ZnVuY3Rpb24oKXtvYi5saW5lU3RhcnQ9bGIsb2IubGluZUVuZD1oYn19O2Z1bmN0aW9uIGFiKHQsZSl7dCo9Tnk7dmFyIG49RHkoZSo9TnkpO3NiKG4qRHkodCksbipqeSh0KSxqeShlKSl9ZnVuY3Rpb24gc2IodCxlLG4peysrUHYsTnYrPSh0LU52KS9QdixPdis9KGUtT3YpL1B2LFJ2Kz0obi1SdikvUHZ9ZnVuY3Rpb24gbGIoKXtvYi5wb2ludD1jYn1mdW5jdGlvbiBjYih0LGUpe3QqPU55O3ZhciBuPUR5KGUqPU55KTtHdj1uKkR5KHQpLFd2PW4qankodCkscXY9ankoZSksb2IucG9pbnQ9dWIsc2IoR3YsV3YscXYpfWZ1bmN0aW9uIHViKHQsZSl7dCo9Tnk7dmFyIG49RHkoZSo9TnkpLGk9bipEeSh0KSxyPW4qankodCksbz1qeShlKSxhPXp5KEd5KChhPVd2Km8tcXYqcikqYSsoYT1xdippLUd2Km8pKmErKGE9R3Yqci1XdippKSphKSxHdippK1d2KnIrcXYqbyk7SXYrPWEsenYrPWEqKEd2KyhHdj1pKSksRHYrPWEqKFd2KyhXdj1yKSksQnYrPWEqKHF2Kyhxdj1vKSksc2IoR3YsV3YscXYpfWZ1bmN0aW9uIGhiKCl7b2IucG9pbnQ9YWJ9ZnVuY3Rpb24gZGIoKXtvYi5wb2ludD1mYn1mdW5jdGlvbiBwYigpe21iKGp2LFV2KSxvYi5wb2ludD1hYn1mdW5jdGlvbiBmYih0LGUpe2p2PXQsVXY9ZSx0Kj1OeSxlKj1OeSxvYi5wb2ludD1tYjt2YXIgbj1EeShlKTtHdj1uKkR5KHQpLFd2PW4qankodCkscXY9ankoZSksc2IoR3YsV3YscXYpfWZ1bmN0aW9uIG1iKHQsZSl7dCo9Tnk7dmFyIG49RHkoZSo9TnkpLGk9bipEeSh0KSxyPW4qankodCksbz1qeShlKSxhPVd2Km8tcXYqcixzPXF2KmktR3YqbyxsPUd2KnItV3YqaSxjPUd5KGEqYStzKnMrbCpsKSx1PVl5KGMpLGg9YyYmLXUvYztIdis9aCphLEZ2Kz1oKnMsVnYrPWgqbCxJdis9dSx6dis9dSooR3YrKEd2PWkpKSxEdis9dSooV3YrKFd2PXIpKSxCdis9dSoocXYrKHF2PW8pKSxzYihHdixXdixxdil9ZnVuY3Rpb24gZ2IodCl7cmV0dXJuIGZ1bmN0aW9uKCl7cmV0dXJuIHR9fWZ1bmN0aW9uIF9iKHQsZSl7ZnVuY3Rpb24gbihuLGkpe3JldHVybiBuPXQobixpKSxlKG5bMF0sblsxXSl9cmV0dXJuIHQuaW52ZXJ0JiZlLmludmVydCYmKG4uaW52ZXJ0PWZ1bmN0aW9uKG4saSl7cmV0dXJuKG49ZS5pbnZlcnQobixpKSkmJnQuaW52ZXJ0KG5bMF0sblsxXSl9KSxufWZ1bmN0aW9uIHliKHQsZSl7cmV0dXJuW095KHQpPkN5P3QrTWF0aC5yb3VuZCgtdC9QeSkqUHk6dCxlXX1mdW5jdGlvbiB2Yih0LGUsbil7cmV0dXJuKHQlPVB5KT9lfHxuP19iKHhiKHQpLHdiKGUsbikpOnhiKHQpOmV8fG4/d2IoZSxuKTp5Yn1mdW5jdGlvbiBiYih0KXtyZXR1cm4gZnVuY3Rpb24oZSxuKXtyZXR1cm5bKGUrPXQpPkN5P2UtUHk6ZTwtQ3k/ZStQeTplLG5dfX1mdW5jdGlvbiB4Yih0KXt2YXIgZT1iYih0KTtyZXR1cm4gZS5pbnZlcnQ9YmIoLXQpLGV9ZnVuY3Rpb24gd2IodCxlKXt2YXIgbj1EeSh0KSxpPWp5KHQpLHI9RHkoZSksbz1qeShlKTtmdW5jdGlvbiBhKHQsZSl7dmFyIGE9RHkoZSkscz1EeSh0KSphLGw9ankodCkqYSxjPWp5KGUpLHU9YypuK3MqaTtyZXR1cm5benkobCpyLXUqbyxzKm4tYyppKSxZeSh1KnIrbCpvKV19cmV0dXJuIGEuaW52ZXJ0PWZ1bmN0aW9uKHQsZSl7dmFyIGE9RHkoZSkscz1EeSh0KSphLGw9ankodCkqYSxjPWp5KGUpLHU9YypyLWwqbztyZXR1cm5benkobCpyK2MqbyxzKm4rdSppKSxZeSh1Km4tcyppKV19LGF9ZnVuY3Rpb24gU2IodCl7ZnVuY3Rpb24gZShlKXtyZXR1cm4oZT10KGVbMF0qTnksZVsxXSpOeSkpWzBdKj1JeSxlWzFdKj1JeSxlfXJldHVybiB0PXZiKHRbMF0qTnksdFsxXSpOeSx0Lmxlbmd0aD4yP3RbMl0qTnk6MCksZS5pbnZlcnQ9ZnVuY3Rpb24oZSl7cmV0dXJuKGU9dC5pbnZlcnQoZVswXSpOeSxlWzFdKk55KSlbMF0qPUl5LGVbMV0qPUl5LGV9LGV9ZnVuY3Rpb24gTWIodCxlLG4saSxyLG8pe2lmKG4pe3ZhciBhPUR5KGUpLHM9ankoZSksbD1pKm47bnVsbD09cj8ocj1lK2kqUHksbz1lLWwvMik6KHI9RWIoYSxyKSxvPUViKGEsbyksKGk+MD9yPG86cj5vKSYmKHIrPWkqUHkpKTtmb3IodmFyIGMsdT1yO2k+MD91Pm86dTxvO3UtPWwpYz1mdihbYSwtcypEeSh1KSwtcypqeSh1KV0pLHQucG9pbnQoY1swXSxjWzFdKX19ZnVuY3Rpb24gRWIodCxlKXsoZT1tdihlKSlbMF0tPXQsYnYoZSk7dmFyIG49cXkoLWVbMV0pO3JldHVybigoLWVbMl08MD8tbjpuKStQeS1UeSklUHl9ZnVuY3Rpb24gVGIoKXt2YXIgdCxlPVtdO3JldHVybntwb2ludDpmdW5jdGlvbihlLG4saSl7dC5wdXNoKFtlLG4saV0pfSxsaW5lU3RhcnQ6ZnVuY3Rpb24oKXtlLnB1c2godD1bXSl9LGxpbmVFbmQ6JHkscmVqb2luOmZ1bmN0aW9uKCl7ZS5sZW5ndGg+MSYmZS5wdXNoKGUucG9wKCkuY29uY2F0KGUuc2hpZnQoKSkpfSxyZXN1bHQ6ZnVuY3Rpb24oKXt2YXIgbj1lO3JldHVybiBlPVtdLHQ9bnVsbCxufX19ZnVuY3Rpb24gQWIodCxlKXtyZXR1cm4gT3kodFswXS1lWzBdKTxUeSYmT3kodFsxXS1lWzFdKTxUeX1mdW5jdGlvbiBDYih0LGUsbixpKXt0aGlzLng9dCx0aGlzLno9ZSx0aGlzLm89bix0aGlzLmU9aSx0aGlzLnY9ITEsdGhpcy5uPXRoaXMucD1udWxsfWZ1bmN0aW9uIGtiKHQsZSxuLGkscil7dmFyIG8sYSxzPVtdLGw9W107aWYodC5mb3JFYWNoKChmdW5jdGlvbih0KXtpZighKChlPXQubGVuZ3RoLTEpPD0wKSl7dmFyIGUsbixpPXRbMF0sYT10W2VdO2lmKEFiKGksYSkpe2lmKCFpWzJdJiYhYVsyXSl7Zm9yKHIubGluZVN0YXJ0KCksbz0wO288ZTsrK28pci5wb2ludCgoaT10W29dKVswXSxpWzFdKTtyZXR1cm4gdm9pZCByLmxpbmVFbmQoKX1hWzBdKz0yZS02fXMucHVzaChuPW5ldyBDYihpLHQsbnVsbCwhMCkpLGwucHVzaChuLm89bmV3IENiKGksbnVsbCxuLCExKSkscy5wdXNoKG49bmV3IENiKGEsdCxudWxsLCExKSksbC5wdXNoKG4ubz1uZXcgQ2IoYSxudWxsLG4sITApKX19KSkscy5sZW5ndGgpe2ZvcihsLnNvcnQoZSksTGIocyksTGIobCksbz0wLGE9bC5sZW5ndGg7bzxhOysrbylsW29dLmU9bj0hbjtmb3IodmFyIGMsdSxoPXNbMF07Oyl7Zm9yKHZhciBkPWgscD0hMDtkLnY7KWlmKChkPWQubik9PT1oKXJldHVybjtjPWQueixyLmxpbmVTdGFydCgpO2Rve2lmKGQudj1kLm8udj0hMCxkLmUpe2lmKHApZm9yKG89MCxhPWMubGVuZ3RoO288YTsrK28pci5wb2ludCgodT1jW29dKVswXSx1WzFdKTtlbHNlIGkoZC54LGQubi54LDEscik7ZD1kLm59ZWxzZXtpZihwKWZvcihvPShjPWQucC56KS5sZW5ndGgtMTtvPj0wOy0tbylyLnBvaW50KCh1PWNbb10pWzBdLHVbMV0pO2Vsc2UgaShkLngsZC5wLngsLTEscik7ZD1kLnB9Yz0oZD1kLm8pLnoscD0hcH13aGlsZSghZC52KTtyLmxpbmVFbmQoKX19fWZ1bmN0aW9uIExiKHQpe2lmKGU9dC5sZW5ndGgpe2Zvcih2YXIgZSxuLGk9MCxyPXRbMF07KytpPGU7KXIubj1uPXRbaV0sbi5wPXIscj1uO3Iubj1uPXRbMF0sbi5wPXJ9fXliLmludmVydD15Yjt2YXIgUGI9d3koKTtmdW5jdGlvbiBJYih0KXtyZXR1cm4gT3kodFswXSk8PUN5P3RbMF06VXkodFswXSkqKChPeSh0WzBdKStDeSklUHktQ3kpfWZ1bmN0aW9uIE5iKHQsZSl7dmFyIG49SWIoZSksaT1lWzFdLHI9ankoaSksbz1bankobiksLUR5KG4pLDBdLGE9MCxzPTA7UGIucmVzZXQoKSwxPT09cj9pPWt5K1R5Oi0xPT09ciYmKGk9LWt5LVR5KTtmb3IodmFyIGw9MCxjPXQubGVuZ3RoO2w8YzsrK2wpaWYoaD0odT10W2xdKS5sZW5ndGgpZm9yKHZhciB1LGgsZD11W2gtMV0scD1JYihkKSxmPWRbMV0vMitMeSxtPWp5KGYpLGc9RHkoZiksXz0wO188aDsrK18scD12LG09eCxnPXcsZD15KXt2YXIgeT11W19dLHY9SWIoeSksYj15WzFdLzIrTHkseD1qeShiKSx3PUR5KGIpLFM9di1wLE09Uz49MD8xOi0xLEU9TSpTLFQ9RT5DeSxBPW0qeDtpZihQYi5hZGQoenkoQSpNKmp5KEUpLGcqdytBKkR5KEUpKSksYSs9VD9TK00qUHk6UyxUXnA+PW5edj49bil7dmFyIEM9X3YobXYoZCksbXYoeSkpO2J2KEMpO3ZhciBrPV92KG8sQyk7YnYoayk7dmFyIEw9KFReUz49MD8tMToxKSpZeShrWzJdKTsoaT5MfHxpPT09TCYmKENbMF18fENbMV0pKSYmKHMrPVReUz49MD8xOi0xKX19cmV0dXJuKGE8LTFlLTZ8fGE8VHkmJlBiPC0xZS02KV4xJnN9ZnVuY3Rpb24gT2IodCxlLG4saSl7cmV0dXJuIGZ1bmN0aW9uKHIpe3ZhciBvLGEscyxsPWUociksYz1UYigpLHU9ZShjKSxoPSExLGQ9e3BvaW50OnAsbGluZVN0YXJ0Om0sbGluZUVuZDpnLHBvbHlnb25TdGFydDpmdW5jdGlvbigpe2QucG9pbnQ9XyxkLmxpbmVTdGFydD15LGQubGluZUVuZD12LGE9W10sbz1bXX0scG9seWdvbkVuZDpmdW5jdGlvbigpe2QucG9pbnQ9cCxkLmxpbmVTdGFydD1tLGQubGluZUVuZD1nLGE9cWwoYSk7dmFyIHQ9TmIobyxpKTthLmxlbmd0aD8oaHx8KHIucG9seWdvblN0YXJ0KCksaD0hMCksa2IoYSx6Yix0LG4scikpOnQmJihofHwoci5wb2x5Z29uU3RhcnQoKSxoPSEwKSxyLmxpbmVTdGFydCgpLG4obnVsbCxudWxsLDEsciksci5saW5lRW5kKCkpLGgmJihyLnBvbHlnb25FbmQoKSxoPSExKSxhPW89bnVsbH0sc3BoZXJlOmZ1bmN0aW9uKCl7ci5wb2x5Z29uU3RhcnQoKSxyLmxpbmVTdGFydCgpLG4obnVsbCxudWxsLDEsciksci5saW5lRW5kKCksci5wb2x5Z29uRW5kKCl9fTtmdW5jdGlvbiBwKGUsbil7dChlLG4pJiZyLnBvaW50KGUsbil9ZnVuY3Rpb24gZih0LGUpe2wucG9pbnQodCxlKX1mdW5jdGlvbiBtKCl7ZC5wb2ludD1mLGwubGluZVN0YXJ0KCl9ZnVuY3Rpb24gZygpe2QucG9pbnQ9cCxsLmxpbmVFbmQoKX1mdW5jdGlvbiBfKHQsZSl7cy5wdXNoKFt0LGVdKSx1LnBvaW50KHQsZSl9ZnVuY3Rpb24geSgpe3UubGluZVN0YXJ0KCkscz1bXX1mdW5jdGlvbiB2KCl7XyhzWzBdWzBdLHNbMF1bMV0pLHUubGluZUVuZCgpO3ZhciB0LGUsbixpLGw9dS5jbGVhbigpLGQ9Yy5yZXN1bHQoKSxwPWQubGVuZ3RoO2lmKHMucG9wKCksby5wdXNoKHMpLHM9bnVsbCxwKWlmKDEmbCl7aWYoKGU9KG49ZFswXSkubGVuZ3RoLTEpPjApe2ZvcihofHwoci5wb2x5Z29uU3RhcnQoKSxoPSEwKSxyLmxpbmVTdGFydCgpLHQ9MDt0PGU7Kyt0KXIucG9pbnQoKGk9blt0XSlbMF0saVsxXSk7ci5saW5lRW5kKCl9fWVsc2UgcD4xJiYyJmwmJmQucHVzaChkLnBvcCgpLmNvbmNhdChkLnNoaWZ0KCkpKSxhLnB1c2goZC5maWx0ZXIoUmIpKX1yZXR1cm4gZH19ZnVuY3Rpb24gUmIodCl7cmV0dXJuIHQubGVuZ3RoPjF9ZnVuY3Rpb24gemIodCxlKXtyZXR1cm4oKHQ9dC54KVswXTwwP3RbMV0ta3ktVHk6a3ktdFsxXSktKChlPWUueClbMF08MD9lWzFdLWt5LVR5Omt5LWVbMV0pfXZhciBEYj1PYigoZnVuY3Rpb24oKXtyZXR1cm4hMH0pLChmdW5jdGlvbiBCYih0KXt2YXIgZSxuPU5hTixpPU5hTixyPU5hTjtyZXR1cm57bGluZVN0YXJ0OmZ1bmN0aW9uKCl7dC5saW5lU3RhcnQoKSxlPTF9LHBvaW50OmZ1bmN0aW9uKG8sYSl7dmFyIHM9bz4wP0N5Oi1DeSxsPU95KG8tbik7T3kobC1DeSk8VHk/KHQucG9pbnQobixpPShpK2EpLzI+MD9reTota3kpLHQucG9pbnQocixpKSx0LmxpbmVFbmQoKSx0LmxpbmVTdGFydCgpLHQucG9pbnQocyxpKSx0LnBvaW50KG8saSksZT0wKTpyIT09cyYmbD49Q3kmJihPeShuLXIpPFR5JiYobi09cipUeSksT3koby1zKTxUeSYmKG8tPXMqVHkpLGk9KGZ1bmN0aW9uIGModCxlLG4saSl7dmFyIHIsbyxhPWp5KHQtbik7cmV0dXJuIE95KGEpPlR5P1J5KChqeShlKSoobz1EeShpKSkqankobiktankoaSkqKHI9RHkoZSkpKmp5KHQpKS8ocipvKmEpKTooZStpKS8yfSkobixpLG8sYSksdC5wb2ludChyLGkpLHQubGluZUVuZCgpLHQubGluZVN0YXJ0KCksdC5wb2ludChzLGkpLGU9MCksdC5wb2ludChuPW8saT1hKSxyPXN9LGxpbmVFbmQ6ZnVuY3Rpb24oKXt0LmxpbmVFbmQoKSxuPWk9TmFOfSxjbGVhbjpmdW5jdGlvbigpe3JldHVybiAyLWV9fX0pLChmdW5jdGlvbiBIYih0LGUsbixpKXt2YXIgcjtpZihudWxsPT10KWkucG9pbnQoLUN5LHI9bipreSksaS5wb2ludCgwLHIpLGkucG9pbnQoQ3ksciksaS5wb2ludChDeSwwKSxpLnBvaW50KEN5LC1yKSxpLnBvaW50KDAsLXIpLGkucG9pbnQoLUN5LC1yKSxpLnBvaW50KC1DeSwwKSxpLnBvaW50KC1DeSxyKTtlbHNlIGlmKE95KHRbMF0tZVswXSk+VHkpe3ZhciBvPXRbMF08ZVswXT9DeTotQ3k7aS5wb2ludCgtbyxyPW4qby8yKSxpLnBvaW50KDAsciksaS5wb2ludChvLHIpfWVsc2UgaS5wb2ludChlWzBdLGVbMV0pfSksWy1DeSwta3ldKTtmdW5jdGlvbiBGYih0KXt2YXIgZT1EeSh0KSxuPTYqTnksaT1lPjAscj1PeShlKT5UeTtmdW5jdGlvbiBvKHQsbil7cmV0dXJuIER5KHQpKkR5KG4pPmV9ZnVuY3Rpb24gYSh0LG4saSl7dmFyIHI9WzEsMCwwXSxvPV92KG12KHQpLG12KG4pKSxhPWd2KG8sbykscz1vWzBdLGw9YS1zKnM7aWYoIWwpcmV0dXJuIWkmJnQ7dmFyIGM9ZSphL2wsdT0tZSpzL2wsaD1fdihyLG8pLGQ9dnYocixjKTt5dihkLHZ2KG8sdSkpO3ZhciBwPWgsZj1ndihkLHApLG09Z3YocCxwKSxnPWYqZi1tKihndihkLGQpLTEpO2lmKCEoZzwwKSl7dmFyIF89R3koZykseT12dihwLCgtZi1fKS9tKTtpZih5dih5LGQpLHk9ZnYoeSksIWkpcmV0dXJuIHk7dmFyIHYsYj10WzBdLHg9blswXSx3PXRbMV0sUz1uWzFdO3g8YiYmKHY9YixiPXgseD12KTt2YXIgTT14LWIsRT1PeShNLUN5KTxUeTtpZighRSYmUzx3JiYodj13LHc9UyxTPXYpLEV8fE08VHk/RT93K1M+MF55WzFdPChPeSh5WzBdLWIpPFR5P3c6Uyk6dzw9eVsxXSYmeVsxXTw9UzpNPkN5XihiPD15WzBdJiZ5WzBdPD14KSl7dmFyIFQ9dnYocCwoLWYrXykvbSk7cmV0dXJuIHl2KFQsZCksW3ksZnYoVCldfX19ZnVuY3Rpb24gcyhlLG4pe3ZhciByPWk/dDpDeS10LG89MDtyZXR1cm4gZTwtcj9vfD0xOmU+ciYmKG98PTIpLG48LXI/b3w9NDpuPnImJihvfD04KSxvfXJldHVybiBPYihvLChmdW5jdGlvbiBsKHQpe3ZhciBlLG4sbCxjLHU7cmV0dXJue2xpbmVTdGFydDpmdW5jdGlvbigpe2M9bD0hMSx1PTF9LHBvaW50OmZ1bmN0aW9uKGgsZCl7dmFyIHAsZj1baCxkXSxtPW8oaCxkKSxnPWk/bT8wOnMoaCxkKTptP3MoaCsoaDwwP0N5Oi1DeSksZCk6MDtpZighZSYmKGM9bD1tKSYmdC5saW5lU3RhcnQoKSxtIT09bCYmKCEocD1hKGUsZikpfHxBYihlLHApfHxBYihmLHApKSYmKGZbMl09MSksbSE9PWwpdT0wLG0/KHQubGluZVN0YXJ0KCkscD1hKGYsZSksdC5wb2ludChwWzBdLHBbMV0pKToocD1hKGUsZiksdC5wb2ludChwWzBdLHBbMV0sMiksdC5saW5lRW5kKCkpLGU9cDtlbHNlIGlmKHImJmUmJmlebSl7dmFyIF87ZyZufHwhKF89YShmLGUsITApKXx8KHU9MCxpPyh0LmxpbmVTdGFydCgpLHQucG9pbnQoX1swXVswXSxfWzBdWzFdKSx0LnBvaW50KF9bMV1bMF0sX1sxXVsxXSksdC5saW5lRW5kKCkpOih0LnBvaW50KF9bMV1bMF0sX1sxXVsxXSksdC5saW5lRW5kKCksdC5saW5lU3RhcnQoKSx0LnBvaW50KF9bMF1bMF0sX1swXVsxXSwzKSkpfSFtfHxlJiZBYihlLGYpfHx0LnBvaW50KGZbMF0sZlsxXSksZT1mLGw9bSxuPWd9LGxpbmVFbmQ6ZnVuY3Rpb24oKXtsJiZ0LmxpbmVFbmQoKSxlPW51bGx9LGNsZWFuOmZ1bmN0aW9uKCl7cmV0dXJuIHV8KGMmJmwpPDwxfX19KSwoZnVuY3Rpb24gYyhlLGkscixvKXtNYihvLHQsbixyLGUsaSl9KSxpP1swLC10XTpbLUN5LHQtQ3ldKX12YXIgVmI9MWU5LGpiPS1WYjtmdW5jdGlvbiBVYih0LGUsbixpKXtmdW5jdGlvbiByKHIsbyl7cmV0dXJuIHQ8PXImJnI8PW4mJmU8PW8mJm88PWl9ZnVuY3Rpb24gbyhyLG8scyxjKXt2YXIgdT0wLGg9MDtpZihudWxsPT1yfHwodT1hKHIscykpIT09KGg9YShvLHMpKXx8bChyLG8pPDBecz4wKWRve2MucG9pbnQoMD09PXV8fDM9PT11P3Q6bix1PjE/aTplKX13aGlsZSgodT0odStzKzQpJTQpIT09aCk7ZWxzZSBjLnBvaW50KG9bMF0sb1sxXSl9ZnVuY3Rpb24gYShpLHIpe3JldHVybiBPeShpWzBdLXQpPFR5P3I+MD8wOjM6T3koaVswXS1uKTxUeT9yPjA/MjoxOk95KGlbMV0tZSk8VHk/cj4wPzE6MDpyPjA/MzoyfWZ1bmN0aW9uIHModCxlKXtyZXR1cm4gbCh0LngsZS54KX1mdW5jdGlvbiBsKHQsZSl7dmFyIG49YSh0LDEpLGk9YShlLDEpO3JldHVybiBuIT09aT9uLWk6MD09PW4/ZVsxXS10WzFdOjE9PT1uP3RbMF0tZVswXToyPT09bj90WzFdLWVbMV06ZVswXS10WzBdfXJldHVybiBmdW5jdGlvbihhKXt2YXIgbCxjLHUsaCxkLHAsZixtLGcsXyx5LHY9YSxiPVRiKCkseD17cG9pbnQ6VCxsaW5lU3RhcnQ6ZnVuY3Rpb24gdygpe3gucG9pbnQ9QSxjJiZjLnB1c2godT1bXSksXz0hMCxnPSExLGY9bT1OYU59LGxpbmVFbmQ6ZnVuY3Rpb24gUygpe2wmJihBKGgsZCkscCYmZyYmYi5yZWpvaW4oKSxsLnB1c2goYi5yZXN1bHQoKSkpLHgucG9pbnQ9VCxnJiZ2LmxpbmVFbmQoKX0scG9seWdvblN0YXJ0OmZ1bmN0aW9uIE0oKXt2PWIsbD1bXSxjPVtdLHk9ITB9LHBvbHlnb25FbmQ6ZnVuY3Rpb24gRSgpe3ZhciBlPShmdW5jdGlvbiBuKCl7Zm9yKHZhciBlPTAsbj0wLHI9Yy5sZW5ndGg7bjxyOysrbilmb3IodmFyIG8sYSxzPWNbbl0sbD0xLHU9cy5sZW5ndGgsaD1zWzBdLGQ9aFswXSxwPWhbMV07bDx1OysrbClvPWQsYT1wLGQ9KGg9c1tsXSlbMF0scD1oWzFdLGE8PWk/cD5pJiYoZC1vKSooaS1hKT4ocC1hKSoodC1vKSYmKytlOnA8PWkmJihkLW8pKihpLWEpPChwLWEpKih0LW8pJiYtLWU7cmV0dXJuIGV9KSgpLHI9eSYmZSxoPShsPXFsKGwpKS5sZW5ndGg7KHJ8fGgpJiYoYS5wb2x5Z29uU3RhcnQoKSxyJiYoYS5saW5lU3RhcnQoKSxvKG51bGwsbnVsbCwxLGEpLGEubGluZUVuZCgpKSxoJiZrYihsLHMsZSxvLGEpLGEucG9seWdvbkVuZCgpKSx2PWEsbD1jPXU9bnVsbH19O2Z1bmN0aW9uIFQodCxlKXtyKHQsZSkmJnYucG9pbnQodCxlKX1mdW5jdGlvbiBBKG8sYSl7dmFyIHM9cihvLGEpO2lmKGMmJnUucHVzaChbbyxhXSksXyloPW8sZD1hLHA9cyxfPSExLHMmJih2LmxpbmVTdGFydCgpLHYucG9pbnQobyxhKSk7ZWxzZSBpZihzJiZnKXYucG9pbnQobyxhKTtlbHNle3ZhciBsPVtmPU1hdGgubWF4KGpiLE1hdGgubWluKFZiLGYpKSxtPU1hdGgubWF4KGpiLE1hdGgubWluKFZiLG0pKV0sYj1bbz1NYXRoLm1heChqYixNYXRoLm1pbihWYixvKSksYT1NYXRoLm1heChqYixNYXRoLm1pbihWYixhKSldOyEoZnVuY3Rpb24geCh0LGUsbixpLHIsbyl7dmFyIGEscz10WzBdLGw9dFsxXSxjPTAsdT0xLGg9ZVswXS1zLGQ9ZVsxXS1sO2lmKGE9bi1zLGh8fCEoYT4wKSl7aWYoYS89aCxoPDApe2lmKGE8YylyZXR1cm47YTx1JiYodT1hKX1lbHNlIGlmKGg+MCl7aWYoYT51KXJldHVybjthPmMmJihjPWEpfWlmKGE9ci1zLGh8fCEoYTwwKSl7aWYoYS89aCxoPDApe2lmKGE+dSlyZXR1cm47YT5jJiYoYz1hKX1lbHNlIGlmKGg+MCl7aWYoYTxjKXJldHVybjthPHUmJih1PWEpfWlmKGE9aS1sLGR8fCEoYT4wKSl7aWYoYS89ZCxkPDApe2lmKGE8YylyZXR1cm47YTx1JiYodT1hKX1lbHNlIGlmKGQ+MCl7aWYoYT51KXJldHVybjthPmMmJihjPWEpfWlmKGE9by1sLGR8fCEoYTwwKSl7aWYoYS89ZCxkPDApe2lmKGE+dSlyZXR1cm47YT5jJiYoYz1hKX1lbHNlIGlmKGQ+MCl7aWYoYTxjKXJldHVybjthPHUmJih1PWEpfXJldHVybiBjPjAmJih0WzBdPXMrYypoLHRbMV09bCtjKmQpLHU8MSYmKGVbMF09cyt1KmgsZVsxXT1sK3UqZCksITB9fX19fSkobCxiLHQsZSxuLGkpP3MmJih2LmxpbmVTdGFydCgpLHYucG9pbnQobyxhKSx5PSExKTooZ3x8KHYubGluZVN0YXJ0KCksdi5wb2ludChsWzBdLGxbMV0pKSx2LnBvaW50KGJbMF0sYlsxXSksc3x8di5saW5lRW5kKCkseT0hMSl9Zj1vLG09YSxnPXN9cmV0dXJuIHh9fXZhciBHYixXYixxYixZYj13eSgpLFhiPXtzcGhlcmU6JHkscG9pbnQ6JHksbGluZVN0YXJ0OmZ1bmN0aW9uICRiKCl7WGIucG9pbnQ9WmIsWGIubGluZUVuZD1LYn0sbGluZUVuZDokeSxwb2x5Z29uU3RhcnQ6JHkscG9seWdvbkVuZDokeX07ZnVuY3Rpb24gS2IoKXtYYi5wb2ludD1YYi5saW5lRW5kPSR5fWZ1bmN0aW9uIFpiKHQsZSl7R2I9dCo9TnksV2I9ankoZSo9TnkpLHFiPUR5KGUpLFhiLnBvaW50PUpifWZ1bmN0aW9uIEpiKHQsZSl7dCo9Tnk7dmFyIG49ankoZSo9TnkpLGk9RHkoZSkscj1PeSh0LUdiKSxvPUR5KHIpLGE9aSpqeShyKSxzPXFiKm4tV2IqaSpvLGw9V2IqbitxYippKm87WWIuYWRkKHp5KEd5KGEqYStzKnMpLGwpKSxHYj10LFdiPW4scWI9aX1mdW5jdGlvbiBRYih0KXtyZXR1cm4gWWIucmVzZXQoKSxldih0LFhiKSwrWWJ9dmFyIHR4PVtudWxsLG51bGxdLGV4PXt0eXBlOiJMaW5lU3RyaW5nIixjb29yZGluYXRlczp0eH07ZnVuY3Rpb24gbngodCxlKXtyZXR1cm4gdHhbMF09dCx0eFsxXT1lLFFiKGV4KX12YXIgaXg9e0ZlYXR1cmU6ZnVuY3Rpb24odCxlKXtyZXR1cm4gb3godC5nZW9tZXRyeSxlKX0sRmVhdHVyZUNvbGxlY3Rpb246ZnVuY3Rpb24odCxlKXtmb3IodmFyIG49dC5mZWF0dXJlcyxpPS0xLHI9bi5sZW5ndGg7KytpPHI7KWlmKG94KG5baV0uZ2VvbWV0cnksZSkpcmV0dXJuITA7cmV0dXJuITF9fSxyeD17U3BoZXJlOmZ1bmN0aW9uKCl7cmV0dXJuITB9LFBvaW50OmZ1bmN0aW9uKHQsZSl7cmV0dXJuIGF4KHQuY29vcmRpbmF0ZXMsZSl9LE11bHRpUG9pbnQ6ZnVuY3Rpb24odCxlKXtmb3IodmFyIG49dC5jb29yZGluYXRlcyxpPS0xLHI9bi5sZW5ndGg7KytpPHI7KWlmKGF4KG5baV0sZSkpcmV0dXJuITA7cmV0dXJuITF9LExpbmVTdHJpbmc6ZnVuY3Rpb24odCxlKXtyZXR1cm4gc3godC5jb29yZGluYXRlcyxlKX0sTXVsdGlMaW5lU3RyaW5nOmZ1bmN0aW9uKHQsZSl7Zm9yKHZhciBuPXQuY29vcmRpbmF0ZXMsaT0tMSxyPW4ubGVuZ3RoOysraTxyOylpZihzeChuW2ldLGUpKXJldHVybiEwO3JldHVybiExfSxQb2x5Z29uOmZ1bmN0aW9uKHQsZSl7cmV0dXJuIGx4KHQuY29vcmRpbmF0ZXMsZSl9LE11bHRpUG9seWdvbjpmdW5jdGlvbih0LGUpe2Zvcih2YXIgbj10LmNvb3JkaW5hdGVzLGk9LTEscj1uLmxlbmd0aDsrK2k8cjspaWYobHgobltpXSxlKSlyZXR1cm4hMDtyZXR1cm4hMX0sR2VvbWV0cnlDb2xsZWN0aW9uOmZ1bmN0aW9uKHQsZSl7Zm9yKHZhciBuPXQuZ2VvbWV0cmllcyxpPS0xLHI9bi5sZW5ndGg7KytpPHI7KWlmKG94KG5baV0sZSkpcmV0dXJuITA7cmV0dXJuITF9fTtmdW5jdGlvbiBveCh0LGUpe3JldHVybiEoIXR8fCFyeC5oYXNPd25Qcm9wZXJ0eSh0LnR5cGUpKSYmcnhbdC50eXBlXSh0LGUpfWZ1bmN0aW9uIGF4KHQsZSl7cmV0dXJuIDA9PT1ueCh0LGUpfWZ1bmN0aW9uIHN4KHQsZSl7Zm9yKHZhciBuLGkscixvPTAsYT10Lmxlbmd0aDtvPGE7bysrKXtpZigwPT09KGk9bngodFtvXSxlKSkpcmV0dXJuITA7aWYobz4wJiYocj1ueCh0W29dLHRbby0xXSkpPjAmJm48PXImJmk8PXImJihuK2ktcikqKDEtTWF0aC5wb3coKG4taSkvciwyKSk8QXkqcilyZXR1cm4hMDtuPWl9cmV0dXJuITF9ZnVuY3Rpb24gbHgodCxlKXtyZXR1cm4hIU5iKHQubWFwKGN4KSx1eChlKSl9ZnVuY3Rpb24gY3godCl7cmV0dXJuKHQ9dC5tYXAodXgpKS5wb3AoKSx0fWZ1bmN0aW9uIHV4KHQpe3JldHVyblt0WzBdKk55LHRbMV0qTnldfWZ1bmN0aW9uIGh4KHQsZSxuKXt2YXIgaT16bCh0LGUtVHksbikuY29uY2F0KGUpO3JldHVybiBmdW5jdGlvbih0KXtyZXR1cm4gaS5tYXAoKGZ1bmN0aW9uKGUpe3JldHVyblt0LGVdfSkpfX1mdW5jdGlvbiBkeCh0LGUsbil7dmFyIGk9emwodCxlLVR5LG4pLmNvbmNhdChlKTtyZXR1cm4gZnVuY3Rpb24odCl7cmV0dXJuIGkubWFwKChmdW5jdGlvbihlKXtyZXR1cm5bZSx0XX0pKX19ZnVuY3Rpb24gcHgoKXt2YXIgdCxlLG4saSxyLG8sYSxzLGwsYyx1LGgsZD0xMCxwPWQsZj05MCxtPTM2MCxnPTIuNTtmdW5jdGlvbiBfKCl7cmV0dXJue3R5cGU6Ik11bHRpTGluZVN0cmluZyIsY29vcmRpbmF0ZXM6eSgpfX1mdW5jdGlvbiB5KCl7cmV0dXJuIHpsKEJ5KGkvZikqZixuLGYpLm1hcCh1KS5jb25jYXQoemwoQnkocy9tKSptLGEsbSkubWFwKGgpKS5jb25jYXQoemwoQnkoZS9kKSpkLHQsZCkuZmlsdGVyKChmdW5jdGlvbih0KXtyZXR1cm4gT3kodCVmKT5UeX0pKS5tYXAobCkpLmNvbmNhdCh6bChCeShvL3ApKnAscixwKS5maWx0ZXIoKGZ1bmN0aW9uKHQpe3JldHVybiBPeSh0JW0pPlR5fSkpLm1hcChjKSl9cmV0dXJuIF8ubGluZXM9ZnVuY3Rpb24oKXtyZXR1cm4geSgpLm1hcCgoZnVuY3Rpb24odCl7cmV0dXJue3R5cGU6IkxpbmVTdHJpbmciLGNvb3JkaW5hdGVzOnR9fSkpfSxfLm91dGxpbmU9ZnVuY3Rpb24oKXtyZXR1cm57dHlwZToiUG9seWdvbiIsY29vcmRpbmF0ZXM6W3UoaSkuY29uY2F0KGgoYSkuc2xpY2UoMSksdShuKS5yZXZlcnNlKCkuc2xpY2UoMSksaChzKS5yZXZlcnNlKCkuc2xpY2UoMSkpXX19LF8uZXh0ZW50PWZ1bmN0aW9uKHQpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoP18uZXh0ZW50TWFqb3IodCkuZXh0ZW50TWlub3IodCk6Xy5leHRlbnRNaW5vcigpfSxfLmV4dGVudE1ham9yPWZ1bmN0aW9uKHQpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyhzPSt0WzBdWzFdLGE9K3RbMV1bMV0sKGk9K3RbMF1bMF0pPihuPSt0WzFdWzBdKSYmKHQ9aSxpPW4sbj10KSxzPmEmJih0PXMscz1hLGE9dCksXy5wcmVjaXNpb24oZykpOltbaSxzXSxbbixhXV19LF8uZXh0ZW50TWlub3I9ZnVuY3Rpb24obil7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KG89K25bMF1bMV0scj0rblsxXVsxXSwoZT0rblswXVswXSk+KHQ9K25bMV1bMF0pJiYobj1lLGU9dCx0PW4pLG8+ciYmKG49byxvPXIscj1uKSxfLnByZWNpc2lvbihnKSk6W1tlLG9dLFt0LHJdXX0sXy5zdGVwPWZ1bmN0aW9uKHQpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoP18uc3RlcE1ham9yKHQpLnN0ZXBNaW5vcih0KTpfLnN0ZXBNaW5vcigpfSxfLnN0ZXBNYWpvcj1mdW5jdGlvbih0KXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8oZj0rdFswXSxtPSt0WzFdLF8pOltmLG1dfSxfLnN0ZXBNaW5vcj1mdW5jdGlvbih0KXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8oZD0rdFswXSxwPSt0WzFdLF8pOltkLHBdfSxfLnByZWNpc2lvbj1mdW5jdGlvbihkKXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8oZz0rZCxsPWh4KG8sciw5MCksYz1keChlLHQsZyksdT1oeChzLGEsOTApLGg9ZHgoaSxuLGcpLF8pOmd9LF8uZXh0ZW50TWFqb3IoW1stMTgwLC04OS45OTk5OTldLFsxODAsODkuOTk5OTk5XV0pLmV4dGVudE1pbm9yKFtbLTE4MCwtODAuMDAwMDAxXSxbMTgwLDgwLjAwMDAwMV1dKX1mdW5jdGlvbiBmeCh0KXtyZXR1cm4gdH12YXIgbXgsZ3gsX3gseXgsdng9d3koKSxieD13eSgpLHh4PXtwb2ludDokeSxsaW5lU3RhcnQ6JHksbGluZUVuZDokeSxwb2x5Z29uU3RhcnQ6ZnVuY3Rpb24oKXt4eC5saW5lU3RhcnQ9d3gseHgubGluZUVuZD1FeH0scG9seWdvbkVuZDpmdW5jdGlvbigpe3h4LmxpbmVTdGFydD14eC5saW5lRW5kPXh4LnBvaW50PSR5LHZ4LmFkZChPeShieCkpLGJ4LnJlc2V0KCl9LHJlc3VsdDpmdW5jdGlvbigpe3ZhciB0PXZ4LzI7cmV0dXJuIHZ4LnJlc2V0KCksdH19O2Z1bmN0aW9uIHd4KCl7eHgucG9pbnQ9U3h9ZnVuY3Rpb24gU3godCxlKXt4eC5wb2ludD1NeCxteD1feD10LGd4PXl4PWV9ZnVuY3Rpb24gTXgodCxlKXtieC5hZGQoeXgqdC1feCplKSxfeD10LHl4PWV9ZnVuY3Rpb24gRXgoKXtNeChteCxneCl9dmFyIFR4LEF4LEN4LGt4LEx4PTEvMCxQeD1MeCxJeD0tTHgsTng9SXgsT3g9e3BvaW50OmZ1bmN0aW9uIFJ4KHQsZSl7dDxMeCYmKEx4PXQpLHQ+SXgmJihJeD10KSxlPFB4JiYoUHg9ZSksZT5OeCYmKE54PWUpfSxsaW5lU3RhcnQ6JHksbGluZUVuZDokeSxwb2x5Z29uU3RhcnQ6JHkscG9seWdvbkVuZDokeSxyZXN1bHQ6ZnVuY3Rpb24oKXt2YXIgdD1bW0x4LFB4XSxbSXgsTnhdXTtyZXR1cm4gSXg9Tng9LShQeD1MeD0xLzApLHR9fSx6eD0wLER4PTAsQng9MCxIeD0wLEZ4PTAsVng9MCxqeD0wLFV4PTAsR3g9MCxXeD17cG9pbnQ6cXgsbGluZVN0YXJ0Oll4LGxpbmVFbmQ6S3gscG9seWdvblN0YXJ0OmZ1bmN0aW9uKCl7V3gubGluZVN0YXJ0PVp4LFd4LmxpbmVFbmQ9Snh9LHBvbHlnb25FbmQ6ZnVuY3Rpb24oKXtXeC5wb2ludD1xeCxXeC5saW5lU3RhcnQ9WXgsV3gubGluZUVuZD1LeH0scmVzdWx0OmZ1bmN0aW9uKCl7dmFyIHQ9R3g/W2p4L0d4LFV4L0d4XTpWeD9bSHgvVngsRngvVnhdOkJ4P1t6eC9CeCxEeC9CeF06W05hTixOYU5dO3JldHVybiB6eD1EeD1CeD1IeD1GeD1WeD1qeD1VeD1HeD0wLHR9fTtmdW5jdGlvbiBxeCh0LGUpe3p4Kz10LER4Kz1lLCsrQnh9ZnVuY3Rpb24gWXgoKXtXeC5wb2ludD1YeH1mdW5jdGlvbiBYeCh0LGUpe1d4LnBvaW50PSR4LHF4KEN4PXQsa3g9ZSl9ZnVuY3Rpb24gJHgodCxlKXt2YXIgbj10LUN4LGk9ZS1reCxyPUd5KG4qbitpKmkpO0h4Kz1yKihDeCt0KS8yLEZ4Kz1yKihreCtlKS8yLFZ4Kz1yLHF4KEN4PXQsa3g9ZSl9ZnVuY3Rpb24gS3goKXtXeC5wb2ludD1xeH1mdW5jdGlvbiBaeCgpe1d4LnBvaW50PVF4fWZ1bmN0aW9uIEp4KCl7dHcoVHgsQXgpfWZ1bmN0aW9uIFF4KHQsZSl7V3gucG9pbnQ9dHcscXgoVHg9Q3g9dCxBeD1reD1lKX1mdW5jdGlvbiB0dyh0LGUpe3ZhciBuPXQtQ3gsaT1lLWt4LHI9R3kobipuK2kqaSk7SHgrPXIqKEN4K3QpLzIsRngrPXIqKGt4K2UpLzIsVngrPXIsangrPShyPWt4KnQtQ3gqZSkqKEN4K3QpLFV4Kz1yKihreCtlKSxHeCs9MypyLHF4KEN4PXQsa3g9ZSl9ZnVuY3Rpb24gZXcodCl7dGhpcy5fY29udGV4dD10fWV3LnByb3RvdHlwZT17X3JhZGl1czo0LjUscG9pbnRSYWRpdXM6ZnVuY3Rpb24odCl7cmV0dXJuIHRoaXMuX3JhZGl1cz10LHRoaXN9LHBvbHlnb25TdGFydDpmdW5jdGlvbigpe3RoaXMuX2xpbmU9MH0scG9seWdvbkVuZDpmdW5jdGlvbigpe3RoaXMuX2xpbmU9TmFOfSxsaW5lU3RhcnQ6ZnVuY3Rpb24oKXt0aGlzLl9wb2ludD0wfSxsaW5lRW5kOmZ1bmN0aW9uKCl7MD09PXRoaXMuX2xpbmUmJnRoaXMuX2NvbnRleHQuY2xvc2VQYXRoKCksdGhpcy5fcG9pbnQ9TmFOfSxwb2ludDpmdW5jdGlvbih0LGUpe3N3aXRjaCh0aGlzLl9wb2ludCl7Y2FzZSAwOnRoaXMuX2NvbnRleHQubW92ZVRvKHQsZSksdGhpcy5fcG9pbnQ9MTticmVhaztjYXNlIDE6dGhpcy5fY29udGV4dC5saW5lVG8odCxlKTticmVhaztkZWZhdWx0OnRoaXMuX2NvbnRleHQubW92ZVRvKHQrdGhpcy5fcmFkaXVzLGUpLHRoaXMuX2NvbnRleHQuYXJjKHQsZSx0aGlzLl9yYWRpdXMsMCxQeSl9fSxyZXN1bHQ6JHl9O3ZhciBudyxpdyxydyxvdyxhdyxzdz13eSgpLGx3PXtwb2ludDokeSxsaW5lU3RhcnQ6ZnVuY3Rpb24oKXtsdy5wb2ludD1jd30sbGluZUVuZDpmdW5jdGlvbigpe253JiZ1dyhpdyxydyksbHcucG9pbnQ9JHl9LHBvbHlnb25TdGFydDpmdW5jdGlvbigpe253PSEwfSxwb2x5Z29uRW5kOmZ1bmN0aW9uKCl7bnc9bnVsbH0scmVzdWx0OmZ1bmN0aW9uKCl7dmFyIHQ9K3N3O3JldHVybiBzdy5yZXNldCgpLHR9fTtmdW5jdGlvbiBjdyh0LGUpe2x3LnBvaW50PXV3LGl3PW93PXQscnc9YXc9ZX1mdW5jdGlvbiB1dyh0LGUpe3N3LmFkZChHeSgob3ctPXQpKm93Kyhhdy09ZSkqYXcpKSxvdz10LGF3PWV9ZnVuY3Rpb24gaHcoKXt0aGlzLl9zdHJpbmc9W119ZnVuY3Rpb24gZHcodCl7cmV0dXJuIm0wLCIrdCsiYSIrdCsiLCIrdCsiIDAgMSwxIDAsIistMip0KyJhIit0KyIsIit0KyIgMCAxLDEgMCwiKzIqdCsieiJ9ZnVuY3Rpb24gcHcodCl7cmV0dXJuIGZ1bmN0aW9uKGUpe3ZhciBuPW5ldyBmdztmb3IodmFyIGkgaW4gdCluW2ldPXRbaV07cmV0dXJuIG4uc3RyZWFtPWUsbn19ZnVuY3Rpb24gZncoKXt9ZnVuY3Rpb24gbXcodCxlLG4pe3ZhciBpPXQuY2xpcEV4dGVudCYmdC5jbGlwRXh0ZW50KCk7cmV0dXJuIHQuc2NhbGUoMTUwKS50cmFuc2xhdGUoWzAsMF0pLG51bGwhPWkmJnQuY2xpcEV4dGVudChudWxsKSxldihuLHQuc3RyZWFtKE94KSksZShPeC5yZXN1bHQoKSksbnVsbCE9aSYmdC5jbGlwRXh0ZW50KGkpLHR9ZnVuY3Rpb24gZ3codCxlLG4pe3JldHVybiBtdyh0LChmdW5jdGlvbihuKXt2YXIgaT1lWzFdWzBdLWVbMF1bMF0scj1lWzFdWzFdLWVbMF1bMV0sbz1NYXRoLm1pbihpLyhuWzFdWzBdLW5bMF1bMF0pLHIvKG5bMV1bMV0tblswXVsxXSkpLGE9K2VbMF1bMF0rKGktbyooblsxXVswXStuWzBdWzBdKSkvMixzPStlWzBdWzFdKyhyLW8qKG5bMV1bMV0rblswXVsxXSkpLzI7dC5zY2FsZSgxNTAqbykudHJhbnNsYXRlKFthLHNdKX0pLG4pfWZ1bmN0aW9uIF93KHQsZSxuKXtyZXR1cm4gZ3codCxbWzAsMF0sZV0sbil9ZnVuY3Rpb24geXcodCxlLG4pe3JldHVybiBtdyh0LChmdW5jdGlvbihuKXt2YXIgaT0rZSxyPWkvKG5bMV1bMF0tblswXVswXSksbz0oaS1yKihuWzFdWzBdK25bMF1bMF0pKS8yLGE9LXIqblswXVsxXTt0LnNjYWxlKDE1MCpyKS50cmFuc2xhdGUoW28sYV0pfSksbil9ZnVuY3Rpb24gdncodCxlLG4pe3JldHVybiBtdyh0LChmdW5jdGlvbihuKXt2YXIgaT0rZSxyPWkvKG5bMV1bMV0tblswXVsxXSksbz0tcipuWzBdWzBdLGE9KGktciooblsxXVsxXStuWzBdWzFdKSkvMjt0LnNjYWxlKDE1MCpyKS50cmFuc2xhdGUoW28sYV0pfSksbil9aHcucHJvdG90eXBlPXtfcmFkaXVzOjQuNSxfY2lyY2xlOmR3KDQuNSkscG9pbnRSYWRpdXM6ZnVuY3Rpb24odCl7cmV0dXJuKHQ9K3QpIT09dGhpcy5fcmFkaXVzJiYodGhpcy5fcmFkaXVzPXQsdGhpcy5fY2lyY2xlPW51bGwpLHRoaXN9LHBvbHlnb25TdGFydDpmdW5jdGlvbigpe3RoaXMuX2xpbmU9MH0scG9seWdvbkVuZDpmdW5jdGlvbigpe3RoaXMuX2xpbmU9TmFOfSxsaW5lU3RhcnQ6ZnVuY3Rpb24oKXt0aGlzLl9wb2ludD0wfSxsaW5lRW5kOmZ1bmN0aW9uKCl7MD09PXRoaXMuX2xpbmUmJnRoaXMuX3N0cmluZy5wdXNoKCJaIiksdGhpcy5fcG9pbnQ9TmFOfSxwb2ludDpmdW5jdGlvbih0LGUpe3N3aXRjaCh0aGlzLl9wb2ludCl7Y2FzZSAwOnRoaXMuX3N0cmluZy5wdXNoKCJNIix0LCIsIixlKSx0aGlzLl9wb2ludD0xO2JyZWFrO2Nhc2UgMTp0aGlzLl9zdHJpbmcucHVzaCgiTCIsdCwiLCIsZSk7YnJlYWs7ZGVmYXVsdDpudWxsPT10aGlzLl9jaXJjbGUmJih0aGlzLl9jaXJjbGU9ZHcodGhpcy5fcmFkaXVzKSksdGhpcy5fc3RyaW5nLnB1c2goIk0iLHQsIiwiLGUsdGhpcy5fY2lyY2xlKX19LHJlc3VsdDpmdW5jdGlvbigpe2lmKHRoaXMuX3N0cmluZy5sZW5ndGgpe3ZhciB0PXRoaXMuX3N0cmluZy5qb2luKCIiKTtyZXR1cm4gdGhpcy5fc3RyaW5nPVtdLHR9cmV0dXJuIG51bGx9fSxmdy5wcm90b3R5cGU9e2NvbnN0cnVjdG9yOmZ3LHBvaW50OmZ1bmN0aW9uKHQsZSl7dGhpcy5zdHJlYW0ucG9pbnQodCxlKX0sc3BoZXJlOmZ1bmN0aW9uKCl7dGhpcy5zdHJlYW0uc3BoZXJlKCl9LGxpbmVTdGFydDpmdW5jdGlvbigpe3RoaXMuc3RyZWFtLmxpbmVTdGFydCgpfSxsaW5lRW5kOmZ1bmN0aW9uKCl7dGhpcy5zdHJlYW0ubGluZUVuZCgpfSxwb2x5Z29uU3RhcnQ6ZnVuY3Rpb24oKXt0aGlzLnN0cmVhbS5wb2x5Z29uU3RhcnQoKX0scG9seWdvbkVuZDpmdW5jdGlvbigpe3RoaXMuc3RyZWFtLnBvbHlnb25FbmQoKX19O3ZhciBidz1EeSgzMCpOeSk7ZnVuY3Rpb24geHcodCxlKXtyZXR1cm4rZT8oZnVuY3Rpb24gbih0LGUpe2Z1bmN0aW9uIG4oaSxyLG8sYSxzLGwsYyx1LGgsZCxwLGYsbSxnKXt2YXIgXz1jLWkseT11LXIsdj1fKl8reSp5O2lmKHY+NCplJiZtLS0pe3ZhciBiPWErZCx4PXMrcCx3PWwrZixTPUd5KGIqYit4Kngrdyp3KSxNPVl5KHcvPVMpLEU9T3koT3kodyktMSk8VHl8fE95KG8taCk8VHk/KG8raCkvMjp6eSh4LGIpLFQ9dChFLE0pLEE9VFswXSxDPVRbMV0saz1BLWksTD1DLXIsUD15KmstXypMOyhQKlAvdj5lfHxPeSgoXyprK3kqTCkvdi0uNSk+LjN8fGEqZCtzKnArbCpmPGJ3KSYmKG4oaSxyLG8sYSxzLGwsQSxDLEUsYi89Uyx4Lz1TLHcsbSxnKSxnLnBvaW50KEEsQyksbihBLEMsRSxiLHgsdyxjLHUsaCxkLHAsZixtLGcpKX19cmV0dXJuIGZ1bmN0aW9uKGUpe3ZhciBpLHIsbyxhLHMsbCxjLHUsaCxkLHAsZixtPXtwb2ludDpnLGxpbmVTdGFydDpfLGxpbmVFbmQ6dixwb2x5Z29uU3RhcnQ6ZnVuY3Rpb24oKXtlLnBvbHlnb25TdGFydCgpLG0ubGluZVN0YXJ0PWJ9LHBvbHlnb25FbmQ6ZnVuY3Rpb24oKXtlLnBvbHlnb25FbmQoKSxtLmxpbmVTdGFydD1ffX07ZnVuY3Rpb24gZyhuLGkpe249dChuLGkpLGUucG9pbnQoblswXSxuWzFdKX1mdW5jdGlvbiBfKCl7dT1OYU4sbS5wb2ludD15LGUubGluZVN0YXJ0KCl9ZnVuY3Rpb24geShpLHIpe3ZhciBvPW12KFtpLHJdKSxhPXQoaSxyKTtuKHUsaCxjLGQscCxmLHU9YVswXSxoPWFbMV0sYz1pLGQ9b1swXSxwPW9bMV0sZj1vWzJdLDE2LGUpLGUucG9pbnQodSxoKX1mdW5jdGlvbiB2KCl7bS5wb2ludD1nLGUubGluZUVuZCgpfWZ1bmN0aW9uIGIoKXtfKCksbS5wb2ludD14LG0ubGluZUVuZD13fWZ1bmN0aW9uIHgodCxlKXt5KGk9dCxlKSxyPXUsbz1oLGE9ZCxzPXAsbD1mLG0ucG9pbnQ9eX1mdW5jdGlvbiB3KCl7bih1LGgsYyxkLHAsZixyLG8saSxhLHMsbCwxNixlKSxtLmxpbmVFbmQ9dix2KCl9cmV0dXJuIG19fSkodCxlKTooZnVuY3Rpb24gaSh0KXtyZXR1cm4gcHcoe3BvaW50OmZ1bmN0aW9uKGUsbil7ZT10KGUsbiksdGhpcy5zdHJlYW0ucG9pbnQoZVswXSxlWzFdKX19KX0pKHQpfXZhciB3dz1wdyh7cG9pbnQ6ZnVuY3Rpb24odCxlKXt0aGlzLnN0cmVhbS5wb2ludCh0Kk55LGUqTnkpfX0pO2Z1bmN0aW9uIFN3KHQsZSxuLGkscil7ZnVuY3Rpb24gbyhvLGEpe3JldHVybltlK3QqKG8qPWkpLG4tdCooYSo9cildfXJldHVybiBvLmludmVydD1mdW5jdGlvbihvLGEpe3JldHVyblsoby1lKS90KmksKG4tYSkvdCpyXX0sb31mdW5jdGlvbiBNdyh0LGUsbixpLHIsbyl7dmFyIGE9RHkobykscz1qeShvKSxsPWEqdCxjPXMqdCx1PWEvdCxoPXMvdCxkPShzKm4tYSplKS90LHA9KHMqZSthKm4pL3Q7ZnVuY3Rpb24gZih0LG8pe3JldHVybltsKih0Kj1pKS1jKihvKj1yKStlLG4tYyp0LWwqb119cmV0dXJuIGYuaW52ZXJ0PWZ1bmN0aW9uKHQsZSl7cmV0dXJuW2kqKHUqdC1oKmUrZCkscioocC1oKnQtdSplKV19LGZ9ZnVuY3Rpb24gRXcodCl7cmV0dXJuIFR3KChmdW5jdGlvbigpe3JldHVybiB0fSkpKCl9ZnVuY3Rpb24gVHcodCl7dmFyIGUsbixpLHIsbyxhLHMsbCxjLHUsaD0xNTAsZD00ODAscD0yNTAsZj0wLG09MCxnPTAsXz0wLHk9MCx2PTAsYj0xLHg9MSx3PW51bGwsUz1EYixNPW51bGwsRT1meCxUPS41O2Z1bmN0aW9uIEEodCl7cmV0dXJuIGwodFswXSpOeSx0WzFdKk55KX1mdW5jdGlvbiBDKHQpe3JldHVybih0PWwuaW52ZXJ0KHRbMF0sdFsxXSkpJiZbdFswXSpJeSx0WzFdKkl5XX1mdW5jdGlvbiBrKCl7dmFyIHQ9TXcoaCwwLDAsYix4LHYpLmFwcGx5KG51bGwsZShmLG0pKSxpPSh2P013OlN3KShoLGQtdFswXSxwLXRbMV0sYix4LHYpO3JldHVybiBuPXZiKGcsXyx5KSxzPV9iKGUsaSksbD1fYihuLHMpLGE9eHcocyxUKSxMKCl9ZnVuY3Rpb24gTCgpe3JldHVybiBjPXU9bnVsbCxBfXJldHVybiBBLnN0cmVhbT1mdW5jdGlvbih0KXtyZXR1cm4gYyYmdT09PXQ/YzpjPXd3KChmdW5jdGlvbiBlKHQpe3JldHVybiBwdyh7cG9pbnQ6ZnVuY3Rpb24oZSxuKXt2YXIgaT10KGUsbik7cmV0dXJuIHRoaXMuc3RyZWFtLnBvaW50KGlbMF0saVsxXSl9fSl9KShuKShTKGEoRSh1PXQpKSkpKX0sQS5wcmVjbGlwPWZ1bmN0aW9uKHQpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyhTPXQsdz12b2lkIDAsTCgpKTpTfSxBLnBvc3RjbGlwPWZ1bmN0aW9uKHQpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyhFPXQsTT1pPXI9bz1udWxsLEwoKSk6RX0sQS5jbGlwQW5nbGU9ZnVuY3Rpb24odCl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KFM9K3Q/RmIodz10Kk55KToodz1udWxsLERiKSxMKCkpOncqSXl9LEEuY2xpcEV4dGVudD1mdW5jdGlvbih0KXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8oRT1udWxsPT10PyhNPWk9cj1vPW51bGwsZngpOlViKE09K3RbMF1bMF0saT0rdFswXVsxXSxyPSt0WzFdWzBdLG89K3RbMV1bMV0pLEwoKSk6bnVsbD09TT9udWxsOltbTSxpXSxbcixvXV19LEEuc2NhbGU9ZnVuY3Rpb24odCl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KGg9K3QsaygpKTpofSxBLnRyYW5zbGF0ZT1mdW5jdGlvbih0KXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8oZD0rdFswXSxwPSt0WzFdLGsoKSk6W2QscF19LEEuY2VudGVyPWZ1bmN0aW9uKHQpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyhmPXRbMF0lMzYwKk55LG09dFsxXSUzNjAqTnksaygpKTpbZipJeSxtKkl5XX0sQS5yb3RhdGU9ZnVuY3Rpb24odCl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KGc9dFswXSUzNjAqTnksXz10WzFdJTM2MCpOeSx5PXQubGVuZ3RoPjI/dFsyXSUzNjAqTnk6MCxrKCkpOltnKkl5LF8qSXkseSpJeV19LEEuYW5nbGU9ZnVuY3Rpb24odCl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KHY9dCUzNjAqTnksaygpKTp2Kkl5fSxBLnJlZmxlY3RYPWZ1bmN0aW9uKHQpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyhiPXQ/LTE6MSxrKCkpOmI8MH0sQS5yZWZsZWN0WT1mdW5jdGlvbih0KXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8oeD10Py0xOjEsaygpKTp4PDB9LEEucHJlY2lzaW9uPWZ1bmN0aW9uKHQpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyhhPXh3KHMsVD10KnQpLEwoKSk6R3koVCl9LEEuZml0RXh0ZW50PWZ1bmN0aW9uKHQsZSl7cmV0dXJuIGd3KEEsdCxlKX0sQS5maXRTaXplPWZ1bmN0aW9uKHQsZSl7cmV0dXJuIF93KEEsdCxlKX0sQS5maXRXaWR0aD1mdW5jdGlvbih0LGUpe3JldHVybiB5dyhBLHQsZSl9LEEuZml0SGVpZ2h0PWZ1bmN0aW9uKHQsZSl7cmV0dXJuIHZ3KEEsdCxlKX0sZnVuY3Rpb24oKXtyZXR1cm4gZT10LmFwcGx5KHRoaXMsYXJndW1lbnRzKSxBLmludmVydD1lLmludmVydCYmQyxrKCl9fWZ1bmN0aW9uIEF3KHQpe3ZhciBlPTAsbj1DeS8zLGk9VHcodCkscj1pKGUsbik7cmV0dXJuIHIucGFyYWxsZWxzPWZ1bmN0aW9uKHQpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoP2koZT10WzBdKk55LG49dFsxXSpOeSk6W2UqSXksbipJeV19LHJ9ZnVuY3Rpb24gQ3codCxlKXt2YXIgbj1qeSh0KSxpPShuK2p5KGUpKS8yO2lmKE95KGkpPFR5KXJldHVybihmdW5jdGlvbiByKHQpe3ZhciBlPUR5KHQpO2Z1bmN0aW9uIG4odCxuKXtyZXR1cm5bdCplLGp5KG4pL2VdfXJldHVybiBuLmludmVydD1mdW5jdGlvbih0LG4pe3JldHVyblt0L2UsWXkobiplKV19LG59KSh0KTt2YXIgbz0xK24qKDIqaS1uKSxhPUd5KG8pL2k7ZnVuY3Rpb24gcyh0LGUpe3ZhciBuPUd5KG8tMippKmp5KGUpKS9pO3JldHVybltuKmp5KHQqPWkpLGEtbipEeSh0KV19cmV0dXJuIHMuaW52ZXJ0PWZ1bmN0aW9uKHQsZSl7dmFyIG49YS1lLHI9enkodCxPeShuKSkqVXkobik7cmV0dXJuIG4qaTwwJiYoci09Q3kqVXkodCkqVXkobikpLFtyL2ksWXkoKG8tKHQqdCtuKm4pKmkqaSkvKDIqaSkpXX0sc31mdW5jdGlvbiBrdygpe3JldHVybiBBdyhDdykuc2NhbGUoMTU1LjQyNCkuY2VudGVyKFswLDMzLjY0NDJdKX1mdW5jdGlvbiBMdygpe3JldHVybiBrdygpLnBhcmFsbGVscyhbMjkuNSw0NS41XSkuc2NhbGUoMTA3MCkudHJhbnNsYXRlKFs0ODAsMjUwXSkucm90YXRlKFs5NiwwXSkuY2VudGVyKFstLjYsMzguN10pfWZ1bmN0aW9uIFB3KHQpe3JldHVybiBmdW5jdGlvbihlLG4pe3ZhciBpPUR5KGUpLHI9RHkobiksbz10KGkqcik7cmV0dXJuW28qcipqeShlKSxvKmp5KG4pXX19ZnVuY3Rpb24gSXcodCl7cmV0dXJuIGZ1bmN0aW9uKGUsbil7dmFyIGk9R3koZSplK24qbikscj10KGkpLG89ankociksYT1EeShyKTtyZXR1cm5benkoZSpvLGkqYSksWXkoaSYmbipvL2kpXX19dmFyIE53PVB3KChmdW5jdGlvbih0KXtyZXR1cm4gR3koMi8oMSt0KSl9KSk7TncuaW52ZXJ0PUl3KChmdW5jdGlvbih0KXtyZXR1cm4gMipZeSh0LzIpfSkpO3ZhciBPdz1QdygoZnVuY3Rpb24odCl7cmV0dXJuKHQ9cXkodCkpJiZ0L2p5KHQpfSkpO2Z1bmN0aW9uIFJ3KHQsZSl7cmV0dXJuW3QsRnkoV3koKGt5K2UpLzIpKV19ZnVuY3Rpb24gencodCl7dmFyIGUsbixpLHI9RXcodCksbz1yLmNlbnRlcixhPXIuc2NhbGUscz1yLnRyYW5zbGF0ZSxsPXIuY2xpcEV4dGVudCxjPW51bGw7ZnVuY3Rpb24gdSgpe3ZhciBvPUN5KmEoKSxzPXIoU2Ioci5yb3RhdGUoKSkuaW52ZXJ0KFswLDBdKSk7cmV0dXJuIGwobnVsbD09Yz9bW3NbMF0tbyxzWzFdLW9dLFtzWzBdK28sc1sxXStvXV06dD09PVJ3P1tbTWF0aC5tYXgoc1swXS1vLGMpLGVdLFtNYXRoLm1pbihzWzBdK28sbiksaV1dOltbYyxNYXRoLm1heChzWzFdLW8sZSldLFtuLE1hdGgubWluKHNbMV0rbyxpKV1dKX1yZXR1cm4gci5zY2FsZT1mdW5jdGlvbih0KXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8oYSh0KSx1KCkpOmEoKX0sci50cmFuc2xhdGU9ZnVuY3Rpb24odCl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KHModCksdSgpKTpzKCl9LHIuY2VudGVyPWZ1bmN0aW9uKHQpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyhvKHQpLHUoKSk6bygpfSxyLmNsaXBFeHRlbnQ9ZnVuY3Rpb24odCl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KG51bGw9PXQ/Yz1lPW49aT1udWxsOihjPSt0WzBdWzBdLGU9K3RbMF1bMV0sbj0rdFsxXVswXSxpPSt0WzFdWzFdKSx1KCkpOm51bGw9PWM/bnVsbDpbW2MsZV0sW24saV1dfSx1KCl9ZnVuY3Rpb24gRHcodCl7cmV0dXJuIFd5KChreSt0KS8yKX1mdW5jdGlvbiBCdyh0LGUpe3ZhciBuPUR5KHQpLGk9dD09PWU/ankodCk6Rnkobi9EeShlKSkvRnkoRHcoZSkvRHcodCkpLHI9bipWeShEdyh0KSxpKS9pO2lmKCFpKXJldHVybiBSdztmdW5jdGlvbiBvKHQsZSl7cj4wP2U8LWt5K1R5JiYoZT0ta3krVHkpOmU+a3ktVHkmJihlPWt5LVR5KTt2YXIgbj1yL1Z5KER3KGUpLGkpO3JldHVybltuKmp5KGkqdCksci1uKkR5KGkqdCldfXJldHVybiBvLmludmVydD1mdW5jdGlvbih0LGUpe3ZhciBuPXItZSxvPVV5KGkpKkd5KHQqdCtuKm4pLGE9enkodCxPeShuKSkqVXkobik7cmV0dXJuIG4qaTwwJiYoYS09Q3kqVXkodCkqVXkobikpLFthL2ksMipSeShWeShyL28sMS9pKSkta3ldfSxvfWZ1bmN0aW9uIEh3KHQsZSl7cmV0dXJuW3QsZV19ZnVuY3Rpb24gRncodCxlKXt2YXIgbj1EeSh0KSxpPXQ9PT1lP2p5KHQpOihuLUR5KGUpKS8oZS10KSxyPW4vaSt0O2lmKE95KGkpPFR5KXJldHVybiBIdztmdW5jdGlvbiBvKHQsZSl7dmFyIG49ci1lLG89aSp0O3JldHVybltuKmp5KG8pLHItbipEeShvKV19cmV0dXJuIG8uaW52ZXJ0PWZ1bmN0aW9uKHQsZSl7dmFyIG49ci1lLG89enkodCxPeShuKSkqVXkobik7cmV0dXJuIG4qaTwwJiYoby09Q3kqVXkodCkqVXkobikpLFtvL2ksci1VeShpKSpHeSh0KnQrbipuKV19LG99T3cuaW52ZXJ0PUl3KChmdW5jdGlvbih0KXtyZXR1cm4gdH0pKSxSdy5pbnZlcnQ9ZnVuY3Rpb24odCxlKXtyZXR1cm5bdCwyKlJ5KEh5KGUpKS1reV19LEh3LmludmVydD1Idzt2YXIgVnc9MS4zNDAyNjQsanc9LS4wODExMDYsVXc9ODkzZS02LEd3PS4wMDM3OTYsV3c9R3koMykvMjtmdW5jdGlvbiBxdyh0LGUpe3ZhciBuPVl5KFd3Kmp5KGUpKSxpPW4qbixyPWkqaSppO3JldHVyblt0KkR5KG4pLyhXdyooVncrMypqdyppK3IqKDcqVXcrOSpHdyppKSkpLG4qKFZ3K2p3KmkrciooVXcrR3cqaSkpXX1mdW5jdGlvbiBZdyh0LGUpe3ZhciBuPUR5KGUpLGk9RHkodCkqbjtyZXR1cm5bbipqeSh0KS9pLGp5KGUpL2ldfWZ1bmN0aW9uIFh3KHQsZSl7dmFyIG49ZSplLGk9bipuO3JldHVyblt0KiguODcwNy0uMTMxOTc5Km4raSooaSooLjAwMzk3MSpuLS4wMDE1MjkqaSktLjAxMzc5MSkpLGUqKDEuMDA3MjI2K24qKC4wMTUwODUraSooLjAyODg3NCpuLS4wNDQ0NzUtLjAwNTkxNippKSkpXX1mdW5jdGlvbiAkdyh0LGUpe3JldHVybltEeShlKSpqeSh0KSxqeShlKV19ZnVuY3Rpb24gS3codCxlKXt2YXIgbj1EeShlKSxpPTErRHkodCkqbjtyZXR1cm5bbipqeSh0KS9pLGp5KGUpL2ldfWZ1bmN0aW9uIFp3KHQsZSl7cmV0dXJuW0Z5KFd5KChreStlKS8yKSksLXRdfWZ1bmN0aW9uIEp3KHQsZSl7cmV0dXJuIHQucGFyZW50PT09ZS5wYXJlbnQ/MToyfWZ1bmN0aW9uIFF3KHQsZSl7cmV0dXJuIHQrZS54fWZ1bmN0aW9uIHRTKHQsZSl7cmV0dXJuIE1hdGgubWF4KHQsZS55KX1mdW5jdGlvbiBlUyh0KXt2YXIgZT0wLG49dC5jaGlsZHJlbixpPW4mJm4ubGVuZ3RoO2lmKGkpZm9yKDstLWk+PTA7KWUrPW5baV0udmFsdWU7ZWxzZSBlPTE7dC52YWx1ZT1lfWZ1bmN0aW9uIG5TKHQsZSl7dmFyIG4saSxyLG8sYSxzPW5ldyBhUyh0KSxsPSt0LnZhbHVlJiYocy52YWx1ZT10LnZhbHVlKSxjPVtzXTtmb3IobnVsbD09ZSYmKGU9aVMpO249Yy5wb3AoKTspaWYobCYmKG4udmFsdWU9K24uZGF0YS52YWx1ZSksKHI9ZShuLmRhdGEpKSYmKGE9ci5sZW5ndGgpKWZvcihuLmNoaWxkcmVuPW5ldyBBcnJheShhKSxvPWEtMTtvPj0wOy0tbyljLnB1c2goaT1uLmNoaWxkcmVuW29dPW5ldyBhUyhyW29dKSksaS5wYXJlbnQ9bixpLmRlcHRoPW4uZGVwdGgrMTtyZXR1cm4gcy5lYWNoQmVmb3JlKG9TKX1mdW5jdGlvbiBpUyh0KXtyZXR1cm4gdC5jaGlsZHJlbn1mdW5jdGlvbiByUyh0KXt0LmRhdGE9dC5kYXRhLmRhdGF9ZnVuY3Rpb24gb1ModCl7dmFyIGU9MDtkb3t0LmhlaWdodD1lfXdoaWxlKCh0PXQucGFyZW50KSYmdC5oZWlnaHQ8KytlKX1mdW5jdGlvbiBhUyh0KXt0aGlzLmRhdGE9dCx0aGlzLmRlcHRoPXRoaXMuaGVpZ2h0PTAsdGhpcy5wYXJlbnQ9bnVsbH1xdy5pbnZlcnQ9ZnVuY3Rpb24odCxlKXtmb3IodmFyIG4saT1lLHI9aSppLG89cipyKnIsYT0wO2E8MTImJihvPShyPShpLT1uPShpKihWdytqdypyK28qKFV3K0d3KnIpKS1lKS8oVncrMypqdypyK28qKDcqVXcrOSpHdypyKSkpKmkpKnIqciwhKE95KG4pPEF5KSk7KythKTtyZXR1cm5bV3cqdCooVncrMypqdypyK28qKDcqVXcrOSpHdypyKSkvRHkoaSksWXkoankoaSkvV3cpXX0sWXcuaW52ZXJ0PUl3KFJ5KSxYdy5pbnZlcnQ9ZnVuY3Rpb24odCxlKXt2YXIgbixpPWUscj0yNTtkb3t2YXIgbz1pKmksYT1vKm87aS09bj0oaSooMS4wMDcyMjYrbyooLjAxNTA4NSthKiguMDI4ODc0Km8tLjA0NDQ3NS0uMDA1OTE2KmEpKSktZSkvKDEuMDA3MjI2K28qKC4wNDUyNTUrYSooLjI1OTg2NipvLS4zMTEzMjUtLjAwNTkxNioxMSphKSkpfXdoaWxlKE95KG4pPlR5JiYtLXI+MCk7cmV0dXJuW3QvKC44NzA3KyhvPWkqaSkqKG8qKG8qbypvKiguMDAzOTcxLS4wMDE1MjkqbyktLjAxMzc5MSktLjEzMTk3OSkpLGldfSwkdy5pbnZlcnQ9SXcoWXkpLEt3LmludmVydD1JdygoZnVuY3Rpb24odCl7cmV0dXJuIDIqUnkodCl9KSksWncuaW52ZXJ0PWZ1bmN0aW9uKHQsZSl7cmV0dXJuWy1lLDIqUnkoSHkodCkpLWt5XX0sYVMucHJvdG90eXBlPW5TLnByb3RvdHlwZT17Y29uc3RydWN0b3I6YVMsY291bnQ6ZnVuY3Rpb24gc1MoKXtyZXR1cm4gdGhpcy5lYWNoQWZ0ZXIoZVMpfSxlYWNoOmZ1bmN0aW9uIGxTKHQpe3ZhciBlLG4saSxyLG89dGhpcyxhPVtvXTtkb3tmb3IoZT1hLnJldmVyc2UoKSxhPVtdO289ZS5wb3AoKTspaWYodChvKSxuPW8uY2hpbGRyZW4pZm9yKGk9MCxyPW4ubGVuZ3RoO2k8cjsrK2kpYS5wdXNoKG5baV0pfXdoaWxlKGEubGVuZ3RoKTtyZXR1cm4gdGhpc30sZWFjaEFmdGVyOmZ1bmN0aW9uIGNTKHQpe2Zvcih2YXIgZSxuLGkscj10aGlzLG89W3JdLGE9W107cj1vLnBvcCgpOylpZihhLnB1c2gociksZT1yLmNoaWxkcmVuKWZvcihuPTAsaT1lLmxlbmd0aDtuPGk7KytuKW8ucHVzaChlW25dKTtmb3IoO3I9YS5wb3AoKTspdChyKTtyZXR1cm4gdGhpc30sZWFjaEJlZm9yZTpmdW5jdGlvbiB1Uyh0KXtmb3IodmFyIGUsbixpPXRoaXMscj1baV07aT1yLnBvcCgpOylpZih0KGkpLGU9aS5jaGlsZHJlbilmb3Iobj1lLmxlbmd0aC0xO24+PTA7LS1uKXIucHVzaChlW25dKTtyZXR1cm4gdGhpc30sc3VtOmZ1bmN0aW9uIGhTKHQpe3JldHVybiB0aGlzLmVhY2hBZnRlcigoZnVuY3Rpb24oZSl7Zm9yKHZhciBuPSt0KGUuZGF0YSl8fDAsaT1lLmNoaWxkcmVuLHI9aSYmaS5sZW5ndGg7LS1yPj0wOyluKz1pW3JdLnZhbHVlO2UudmFsdWU9bn0pKX0sc29ydDpmdW5jdGlvbiBkUyh0KXtyZXR1cm4gdGhpcy5lYWNoQmVmb3JlKChmdW5jdGlvbihlKXtlLmNoaWxkcmVuJiZlLmNoaWxkcmVuLnNvcnQodCl9KSl9LHBhdGg6ZnVuY3Rpb24gcFModCl7Zm9yKHZhciBlPXRoaXMsbj0oZnVuY3Rpb24gaSh0LGUpe2lmKHQ9PT1lKXJldHVybiB0O3ZhciBuPXQuYW5jZXN0b3JzKCksaT1lLmFuY2VzdG9ycygpLHI9bnVsbDtmb3IodD1uLnBvcCgpLGU9aS5wb3AoKTt0PT09ZTspcj10LHQ9bi5wb3AoKSxlPWkucG9wKCk7cmV0dXJuIHJ9KShlLHQpLHI9W2VdO2UhPT1uOylyLnB1c2goZT1lLnBhcmVudCk7Zm9yKHZhciBvPXIubGVuZ3RoO3QhPT1uOylyLnNwbGljZShvLDAsdCksdD10LnBhcmVudDtyZXR1cm4gcn0sYW5jZXN0b3JzOmZ1bmN0aW9uIGZTKCl7Zm9yKHZhciB0PXRoaXMsZT1bdF07dD10LnBhcmVudDspZS5wdXNoKHQpO3JldHVybiBlfSxkZXNjZW5kYW50czpmdW5jdGlvbiBtUygpe3ZhciB0PVtdO3JldHVybiB0aGlzLmVhY2goKGZ1bmN0aW9uKGUpe3QucHVzaChlKX0pKSx0fSxsZWF2ZXM6ZnVuY3Rpb24gZ1MoKXt2YXIgdD1bXTtyZXR1cm4gdGhpcy5lYWNoQmVmb3JlKChmdW5jdGlvbihlKXtlLmNoaWxkcmVufHx0LnB1c2goZSl9KSksdH0sbGlua3M6ZnVuY3Rpb24gX1MoKXt2YXIgdD10aGlzLGU9W107cmV0dXJuIHQuZWFjaCgoZnVuY3Rpb24obil7biE9PXQmJmUucHVzaCh7c291cmNlOm4ucGFyZW50LHRhcmdldDpufSl9KSksZX0sY29weTpmdW5jdGlvbiB5Uygpe3JldHVybiBuUyh0aGlzKS5lYWNoQmVmb3JlKHJTKX19O3ZhciB2Uz1BcnJheS5wcm90b3R5cGUuc2xpY2U7ZnVuY3Rpb24gYlModCl7Zm9yKHZhciBlLG4saT0wLHI9KHQ9KGZ1bmN0aW9uIG8odCl7Zm9yKHZhciBlLG4saT10Lmxlbmd0aDtpOyluPU1hdGgucmFuZG9tKCkqaS0tfDAsZT10W2ldLHRbaV09dFtuXSx0W25dPWU7cmV0dXJuIHR9KSh2Uy5jYWxsKHQpKSkubGVuZ3RoLGE9W107aTxyOyllPXRbaV0sbiYmU1MobixlKT8rK2k6KG49RVMoYT14UyhhLGUpKSxpPTApO3JldHVybiBufWZ1bmN0aW9uIHhTKHQsZSl7dmFyIG4saTtpZihNUyhlLHQpKXJldHVybltlXTtmb3Iobj0wO248dC5sZW5ndGg7KytuKWlmKHdTKGUsdFtuXSkmJk1TKFRTKHRbbl0sZSksdCkpcmV0dXJuW3Rbbl0sZV07Zm9yKG49MDtuPHQubGVuZ3RoLTE7KytuKWZvcihpPW4rMTtpPHQubGVuZ3RoOysraSlpZih3UyhUUyh0W25dLHRbaV0pLGUpJiZ3UyhUUyh0W25dLGUpLHRbaV0pJiZ3UyhUUyh0W2ldLGUpLHRbbl0pJiZNUyhBUyh0W25dLHRbaV0sZSksdCkpcmV0dXJuW3Rbbl0sdFtpXSxlXTt0aHJvdyBuZXcgRXJyb3J9ZnVuY3Rpb24gd1ModCxlKXt2YXIgbj10LnItZS5yLGk9ZS54LXQueCxyPWUueS10Lnk7cmV0dXJuIG48MHx8bipuPGkqaStyKnJ9ZnVuY3Rpb24gU1ModCxlKXt2YXIgbj10LnItZS5yKzFlLTYsaT1lLngtdC54LHI9ZS55LXQueTtyZXR1cm4gbj4wJiZuKm4+aSppK3Iqcn1mdW5jdGlvbiBNUyh0LGUpe2Zvcih2YXIgbj0wO248ZS5sZW5ndGg7KytuKWlmKCFTUyh0LGVbbl0pKXJldHVybiExO3JldHVybiEwfWZ1bmN0aW9uIEVTKHQpe3N3aXRjaCh0Lmxlbmd0aCl7Y2FzZSAxOnJldHVybihmdW5jdGlvbiBlKHQpe3JldHVybnt4OnQueCx5OnQueSxyOnQucn19KSh0WzBdKTtjYXNlIDI6cmV0dXJuIFRTKHRbMF0sdFsxXSk7Y2FzZSAzOnJldHVybiBBUyh0WzBdLHRbMV0sdFsyXSl9fWZ1bmN0aW9uIFRTKHQsZSl7dmFyIG49dC54LGk9dC55LHI9dC5yLG89ZS54LGE9ZS55LHM9ZS5yLGw9by1uLGM9YS1pLHU9cy1yLGg9TWF0aC5zcXJ0KGwqbCtjKmMpO3JldHVybnt4OihuK28rbC9oKnUpLzIseTooaSthK2MvaCp1KS8yLHI6KGgrcitzKS8yfX1mdW5jdGlvbiBBUyh0LGUsbil7dmFyIGk9dC54LHI9dC55LG89dC5yLGE9ZS54LHM9ZS55LGw9ZS5yLGM9bi54LHU9bi55LGg9bi5yLGQ9aS1hLHA9aS1jLGY9ci1zLG09ci11LGc9bC1vLF89aC1vLHk9aSppK3Iqci1vKm8sdj15LWEqYS1zKnMrbCpsLGI9eS1jKmMtdSp1K2gqaCx4PXAqZi1kKm0sdz0oZipiLW0qdikvKDIqeCktaSxTPShtKmctZipfKS94LE09KHAqdi1kKmIpLygyKngpLXIsRT0oZCpfLXAqZykveCxUPVMqUytFKkUtMSxBPTIqKG8rdypTK00qRSksQz13KncrTSpNLW8qbyxrPS0oVD8oQStNYXRoLnNxcnQoQSpBLTQqVCpDKSkvKDIqVCk6Qy9BKTtyZXR1cm57eDppK3crUyprLHk6citNK0UqayxyOmt9fWZ1bmN0aW9uIENTKHQsZSxuKXt2YXIgaSxyLG8sYSxzPXQueC1lLngsbD10LnktZS55LGM9cypzK2wqbDtjPyhyPWUucituLnIsYT10LnIrbi5yLChyKj1yKT4oYSo9YSk/KGk9KGMrYS1yKS8oMipjKSxvPU1hdGguc3FydChNYXRoLm1heCgwLGEvYy1pKmkpKSxuLng9dC54LWkqcy1vKmwsbi55PXQueS1pKmwrbypzKTooaT0oYytyLWEpLygyKmMpLG89TWF0aC5zcXJ0KE1hdGgubWF4KDAsci9jLWkqaSkpLG4ueD1lLngraSpzLW8qbCxuLnk9ZS55K2kqbCtvKnMpKToobi54PWUueCtuLnIsbi55PWUueSl9ZnVuY3Rpb24ga1ModCxlKXt2YXIgbj10LnIrZS5yLTFlLTYsaT1lLngtdC54LHI9ZS55LXQueTtyZXR1cm4gbj4wJiZuKm4+aSppK3Iqcn1mdW5jdGlvbiBMUyh0KXt2YXIgZT10Ll8sbj10Lm5leHQuXyxpPWUucituLnIscj0oZS54Km4ucituLngqZS5yKS9pLG89KGUueSpuLnIrbi55KmUucikvaTtyZXR1cm4gcipyK28qb31mdW5jdGlvbiBQUyh0KXt0aGlzLl89dCx0aGlzLm5leHQ9bnVsbCx0aGlzLnByZXZpb3VzPW51bGx9ZnVuY3Rpb24gSVModCl7aWYoIShyPXQubGVuZ3RoKSlyZXR1cm4gMDt2YXIgZSxuLGkscixvLGEscyxsLGMsdSxoO2lmKChlPXRbMF0pLng9MCxlLnk9MCwhKHI+MSkpcmV0dXJuIGUucjtpZihlLng9LShuPXRbMV0pLnIsbi54PWUucixuLnk9MCwhKHI+MikpcmV0dXJuIGUucituLnI7Q1MobixlLGk9dFsyXSksZT1uZXcgUFMoZSksbj1uZXcgUFMobiksaT1uZXcgUFMoaSksZS5uZXh0PWkucHJldmlvdXM9bixuLm5leHQ9ZS5wcmV2aW91cz1pLGkubmV4dD1uLnByZXZpb3VzPWU7dDpmb3Iocz0zO3M8cjsrK3Mpe0NTKGUuXyxuLl8saT10W3NdKSxpPW5ldyBQUyhpKSxsPW4ubmV4dCxjPWUucHJldmlvdXMsdT1uLl8ucixoPWUuXy5yO2Rve2lmKHU8PWgpe2lmKGtTKGwuXyxpLl8pKXtlLm5leHQ9bj1sLG4ucHJldmlvdXM9ZSwtLXM7Y29udGludWUgdH11Kz1sLl8ucixsPWwubmV4dH1lbHNle2lmKGtTKGMuXyxpLl8pKXsoZT1jKS5uZXh0PW4sbi5wcmV2aW91cz1lLC0tcztjb250aW51ZSB0fWgrPWMuXy5yLGM9Yy5wcmV2aW91c319d2hpbGUobCE9PWMubmV4dCk7Zm9yKGkucHJldmlvdXM9ZSxpLm5leHQ9bixlLm5leHQ9bi5wcmV2aW91cz1uPWksbz1MUyhlKTsoaT1pLm5leHQpIT09bjspKGE9TFMoaSkpPG8mJihlPWksbz1hKTtuPWUubmV4dH1mb3IoZT1bbi5fXSxpPW47KGk9aS5uZXh0KSE9PW47KWUucHVzaChpLl8pO2ZvcihpPWJTKGUpLHM9MDtzPHI7KytzKShlPXRbc10pLngtPWkueCxlLnktPWkueTtyZXR1cm4gaS5yfWZ1bmN0aW9uIE5TKHQpe3JldHVybiBudWxsPT10P251bGw6T1ModCl9ZnVuY3Rpb24gT1ModCl7aWYoImZ1bmN0aW9uIiE9dHlwZW9mIHQpdGhyb3cgbmV3IEVycm9yO3JldHVybiB0fWZ1bmN0aW9uIFJTKCl7cmV0dXJuIDB9ZnVuY3Rpb24gelModCl7cmV0dXJuIGZ1bmN0aW9uKCl7cmV0dXJuIHR9fWZ1bmN0aW9uIERTKHQpe3JldHVybiBNYXRoLnNxcnQodC52YWx1ZSl9ZnVuY3Rpb24gQlModCl7cmV0dXJuIGZ1bmN0aW9uKGUpe2UuY2hpbGRyZW58fChlLnI9TWF0aC5tYXgoMCwrdChlKXx8MCkpfX1mdW5jdGlvbiBIUyh0LGUpe3JldHVybiBmdW5jdGlvbihuKXtpZihpPW4uY2hpbGRyZW4pe3ZhciBpLHIsbyxhPWkubGVuZ3RoLHM9dChuKSplfHwwO2lmKHMpZm9yKHI9MDtyPGE7KytyKWlbcl0ucis9cztpZihvPUlTKGkpLHMpZm9yKHI9MDtyPGE7KytyKWlbcl0uci09cztuLnI9bytzfX19ZnVuY3Rpb24gRlModCl7cmV0dXJuIGZ1bmN0aW9uKGUpe3ZhciBuPWUucGFyZW50O2Uucio9dCxuJiYoZS54PW4ueCt0KmUueCxlLnk9bi55K3QqZS55KX19ZnVuY3Rpb24gVlModCl7dC54MD1NYXRoLnJvdW5kKHQueDApLHQueTA9TWF0aC5yb3VuZCh0LnkwKSx0LngxPU1hdGgucm91bmQodC54MSksdC55MT1NYXRoLnJvdW5kKHQueTEpfWZ1bmN0aW9uIGpTKHQsZSxuLGkscil7Zm9yKHZhciBvLGE9dC5jaGlsZHJlbixzPS0xLGw9YS5sZW5ndGgsYz10LnZhbHVlJiYoaS1lKS90LnZhbHVlOysrczxsOykobz1hW3NdKS55MD1uLG8ueTE9cixvLngwPWUsby54MT1lKz1vLnZhbHVlKmN9dmFyIFVTPXtkZXB0aDotMX0sR1M9e307ZnVuY3Rpb24gV1ModCl7cmV0dXJuIHQuaWR9ZnVuY3Rpb24gcVModCl7cmV0dXJuIHQucGFyZW50SWR9ZnVuY3Rpb24gWVModCxlKXtyZXR1cm4gdC5wYXJlbnQ9PT1lLnBhcmVudD8xOjJ9ZnVuY3Rpb24gWFModCl7dmFyIGU9dC5jaGlsZHJlbjtyZXR1cm4gZT9lWzBdOnQudH1mdW5jdGlvbiAkUyh0KXt2YXIgZT10LmNoaWxkcmVuO3JldHVybiBlP2VbZS5sZW5ndGgtMV06dC50fWZ1bmN0aW9uIEtTKHQsZSxuKXt2YXIgaT1uLyhlLmktdC5pKTtlLmMtPWksZS5zKz1uLHQuYys9aSxlLnorPW4sZS5tKz1ufWZ1bmN0aW9uIFpTKHQsZSxuKXtyZXR1cm4gdC5hLnBhcmVudD09PWUucGFyZW50P3QuYTpufWZ1bmN0aW9uIEpTKHQsZSl7dGhpcy5fPXQsdGhpcy5wYXJlbnQ9bnVsbCx0aGlzLmNoaWxkcmVuPW51bGwsdGhpcy5BPW51bGwsdGhpcy5hPXRoaXMsdGhpcy56PTAsdGhpcy5tPTAsdGhpcy5jPTAsdGhpcy5zPTAsdGhpcy50PW51bGwsdGhpcy5pPWV9ZnVuY3Rpb24gUVModCxlLG4saSxyKXtmb3IodmFyIG8sYT10LmNoaWxkcmVuLHM9LTEsbD1hLmxlbmd0aCxjPXQudmFsdWUmJihyLW4pL3QudmFsdWU7KytzPGw7KShvPWFbc10pLngwPWUsby54MT1pLG8ueTA9bixvLnkxPW4rPW8udmFsdWUqY31KUy5wcm90b3R5cGU9T2JqZWN0LmNyZWF0ZShhUy5wcm90b3R5cGUpO3ZhciB0TT0oMStNYXRoLnNxcnQoNSkpLzI7ZnVuY3Rpb24gZU0odCxlLG4saSxyLG8pe2Zvcih2YXIgYSxzLGwsYyx1LGgsZCxwLGYsbSxnLF89W10seT1lLmNoaWxkcmVuLHY9MCxiPTAseD15Lmxlbmd0aCx3PWUudmFsdWU7djx4Oyl7bD1yLW4sYz1vLWk7ZG97dT15W2IrK10udmFsdWV9d2hpbGUoIXUmJmI8eCk7Zm9yKGg9ZD11LGc9dSp1KihtPU1hdGgubWF4KGMvbCxsL2MpLyh3KnQpKSxmPU1hdGgubWF4KGQvZyxnL2gpO2I8eDsrK2Ipe2lmKHUrPXM9eVtiXS52YWx1ZSxzPGgmJihoPXMpLHM+ZCYmKGQ9cyksZz11KnUqbSwocD1NYXRoLm1heChkL2csZy9oKSk+Zil7dS09czticmVha31mPXB9Xy5wdXNoKGE9e3ZhbHVlOnUsZGljZTpsPGMsY2hpbGRyZW46eS5zbGljZSh2LGIpfSksYS5kaWNlP2pTKGEsbixpLHIsdz9pKz1jKnUvdzpvKTpRUyhhLG4saSx3P24rPWwqdS93OnIsbyksdy09dSx2PWJ9cmV0dXJuIF99dmFyIG5NPShmdW5jdGlvbiB0KGUpe2Z1bmN0aW9uIG4odCxuLGkscixvKXtlTShlLHQsbixpLHIsbyl9cmV0dXJuIG4ucmF0aW89ZnVuY3Rpb24oZSl7cmV0dXJuIHQoKGU9K2UpPjE/ZToxKX0sbn0pKHRNKSxpTT0oZnVuY3Rpb24gdChlKXtmdW5jdGlvbiBuKHQsbixpLHIsbyl7aWYoKGE9dC5fc3F1YXJpZnkpJiZhLnJhdGlvPT09ZSlmb3IodmFyIGEscyxsLGMsdSxoPS0xLGQ9YS5sZW5ndGgscD10LnZhbHVlOysraDxkOyl7Zm9yKGw9KHM9YVtoXSkuY2hpbGRyZW4sYz1zLnZhbHVlPTAsdT1sLmxlbmd0aDtjPHU7KytjKXMudmFsdWUrPWxbY10udmFsdWU7cy5kaWNlP2pTKHMsbixpLHIsaSs9KG8taSkqcy52YWx1ZS9wKTpRUyhzLG4saSxuKz0oci1uKSpzLnZhbHVlL3AsbykscC09cy52YWx1ZX1lbHNlIHQuX3NxdWFyaWZ5PWE9ZU0oZSx0LG4saSxyLG8pLGEucmF0aW89ZX1yZXR1cm4gbi5yYXRpbz1mdW5jdGlvbihlKXtyZXR1cm4gdCgoZT0rZSk+MT9lOjEpfSxufSkodE0pO2Z1bmN0aW9uIHJNKHQsZSxuKXtyZXR1cm4oZVswXS10WzBdKSooblsxXS10WzFdKS0oZVsxXS10WzFdKSooblswXS10WzBdKX1mdW5jdGlvbiBvTSh0LGUpe3JldHVybiB0WzBdLWVbMF18fHRbMV0tZVsxXX1mdW5jdGlvbiBhTSh0KXtmb3IodmFyIGU9dC5sZW5ndGgsbj1bMCwxXSxpPTIscj0yO3I8ZTsrK3Ipe2Zvcig7aT4xJiZyTSh0W25baS0yXV0sdFtuW2ktMV1dLHRbcl0pPD0wOyktLWk7bltpKytdPXJ9cmV0dXJuIG4uc2xpY2UoMCxpKX1mdW5jdGlvbiBzTSgpe3JldHVybiBNYXRoLnJhbmRvbSgpfXZhciBsTT0oZnVuY3Rpb24gdChlKXtmdW5jdGlvbiBuKHQsbil7cmV0dXJuIHQ9bnVsbD09dD8wOit0LG49bnVsbD09bj8xOituLDE9PT1hcmd1bWVudHMubGVuZ3RoPyhuPXQsdD0wKTpuLT10LGZ1bmN0aW9uKCl7cmV0dXJuIGUoKSpuK3R9fXJldHVybiBuLnNvdXJjZT10LG59KShzTSksY009KGZ1bmN0aW9uIHQoZSl7ZnVuY3Rpb24gbih0LG4pe3ZhciBpLHI7cmV0dXJuIHQ9bnVsbD09dD8wOit0LG49bnVsbD09bj8xOituLGZ1bmN0aW9uKCl7dmFyIG87aWYobnVsbCE9aSlvPWksaT1udWxsO2Vsc2UgZG97aT0yKmUoKS0xLG89MiplKCktMSxyPWkqaStvKm99d2hpbGUoIXJ8fHI+MSk7cmV0dXJuIHQrbipvKk1hdGguc3FydCgtMipNYXRoLmxvZyhyKS9yKX19cmV0dXJuIG4uc291cmNlPXQsbn0pKHNNKSx1TT0oZnVuY3Rpb24gdChlKXtmdW5jdGlvbiBuKCl7dmFyIHQ9Y00uc291cmNlKGUpLmFwcGx5KHRoaXMsYXJndW1lbnRzKTtyZXR1cm4gZnVuY3Rpb24oKXtyZXR1cm4gTWF0aC5leHAodCgpKX19cmV0dXJuIG4uc291cmNlPXQsbn0pKHNNKSxoTT0oZnVuY3Rpb24gdChlKXtmdW5jdGlvbiBuKHQpe3JldHVybiBmdW5jdGlvbigpe2Zvcih2YXIgbj0wLGk9MDtpPHQ7KytpKW4rPWUoKTtyZXR1cm4gbn19cmV0dXJuIG4uc291cmNlPXQsbn0pKHNNKSxkTT0oZnVuY3Rpb24gdChlKXtmdW5jdGlvbiBuKHQpe3ZhciBuPWhNLnNvdXJjZShlKSh0KTtyZXR1cm4gZnVuY3Rpb24oKXtyZXR1cm4gbigpL3R9fXJldHVybiBuLnNvdXJjZT10LG59KShzTSkscE09KGZ1bmN0aW9uIHQoZSl7ZnVuY3Rpb24gbih0KXtyZXR1cm4gZnVuY3Rpb24oKXtyZXR1cm4tTWF0aC5sb2coMS1lKCkpL3R9fXJldHVybiBuLnNvdXJjZT10LG59KShzTSk7ZnVuY3Rpb24gZk0odCxlKXtzd2l0Y2goYXJndW1lbnRzLmxlbmd0aCl7Y2FzZSAwOmJyZWFrO2Nhc2UgMTp0aGlzLnJhbmdlKHQpO2JyZWFrO2RlZmF1bHQ6dGhpcy5yYW5nZShlKS5kb21haW4odCl9cmV0dXJuIHRoaXN9ZnVuY3Rpb24gbU0odCxlKXtzd2l0Y2goYXJndW1lbnRzLmxlbmd0aCl7Y2FzZSAwOmJyZWFrO2Nhc2UgMTp0aGlzLmludGVycG9sYXRvcih0KTticmVhaztkZWZhdWx0OnRoaXMuaW50ZXJwb2xhdG9yKGUpLmRvbWFpbih0KX1yZXR1cm4gdGhpc312YXIgZ009QXJyYXkucHJvdG90eXBlLF9NPWdNLm1hcCx5TT1nTS5zbGljZSx2TT17bmFtZToiaW1wbGljaXQifTtmdW5jdGlvbiBiTSgpe3ZhciB0PXhnKCksZT1bXSxuPVtdLGk9dk07ZnVuY3Rpb24gcihyKXt2YXIgbz1yKyIiLGE9dC5nZXQobyk7aWYoIWEpe2lmKGkhPT12TSlyZXR1cm4gaTt0LnNldChvLGE9ZS5wdXNoKHIpKX1yZXR1cm4gblsoYS0xKSVuLmxlbmd0aF19cmV0dXJuIHIuZG9tYWluPWZ1bmN0aW9uKG4pe2lmKCFhcmd1bWVudHMubGVuZ3RoKXJldHVybiBlLnNsaWNlKCk7ZT1bXSx0PXhnKCk7Zm9yKHZhciBpLG8sYT0tMSxzPW4ubGVuZ3RoOysrYTxzOyl0LmhhcyhvPShpPW5bYV0pKyIiKXx8dC5zZXQobyxlLnB1c2goaSkpO3JldHVybiByfSxyLnJhbmdlPWZ1bmN0aW9uKHQpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyhuPXlNLmNhbGwodCkscik6bi5zbGljZSgpfSxyLnVua25vd249ZnVuY3Rpb24odCl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KGk9dCxyKTppfSxyLmNvcHk9ZnVuY3Rpb24oKXtyZXR1cm4gYk0oZSxuKS51bmtub3duKGkpfSxmTS5hcHBseShyLGFyZ3VtZW50cykscn1mdW5jdGlvbiB4TSgpe3ZhciB0LGUsbj1iTSgpLnVua25vd24odm9pZCAwKSxpPW4uZG9tYWluLHI9bi5yYW5nZSxvPVswLDFdLGE9ITEscz0wLGw9MCxjPS41O2Z1bmN0aW9uIHUoKXt2YXIgbj1pKCkubGVuZ3RoLHU9b1sxXTxvWzBdLGg9b1t1LTBdLGQ9b1sxLXVdO3Q9KGQtaCkvTWF0aC5tYXgoMSxuLXMrMipsKSxhJiYodD1NYXRoLmZsb29yKHQpKSxoKz0oZC1oLXQqKG4tcykpKmMsZT10KigxLXMpLGEmJihoPU1hdGgucm91bmQoaCksZT1NYXRoLnJvdW5kKGUpKTt2YXIgcD16bChuKS5tYXAoKGZ1bmN0aW9uKGUpe3JldHVybiBoK3QqZX0pKTtyZXR1cm4gcih1P3AucmV2ZXJzZSgpOnApfXJldHVybiBkZWxldGUgbi51bmtub3duLG4uZG9tYWluPWZ1bmN0aW9uKHQpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyhpKHQpLHUoKSk6aSgpfSxuLnJhbmdlPWZ1bmN0aW9uKHQpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyhvPVsrdFswXSwrdFsxXV0sdSgpKTpvLnNsaWNlKCl9LG4ucmFuZ2VSb3VuZD1mdW5jdGlvbih0KXtyZXR1cm4gbz1bK3RbMF0sK3RbMV1dLGE9ITAsdSgpfSxuLmJhbmR3aWR0aD1mdW5jdGlvbigpe3JldHVybiBlfSxuLnN0ZXA9ZnVuY3Rpb24oKXtyZXR1cm4gdH0sbi5yb3VuZD1mdW5jdGlvbih0KXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8oYT0hIXQsdSgpKTphfSxuLnBhZGRpbmc9ZnVuY3Rpb24odCl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KHM9TWF0aC5taW4oMSxsPSt0KSx1KCkpOnN9LG4ucGFkZGluZ0lubmVyPWZ1bmN0aW9uKHQpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyhzPU1hdGgubWluKDEsdCksdSgpKTpzfSxuLnBhZGRpbmdPdXRlcj1mdW5jdGlvbih0KXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8obD0rdCx1KCkpOmx9LG4uYWxpZ249ZnVuY3Rpb24odCl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KGM9TWF0aC5tYXgoMCxNYXRoLm1pbigxLHQpKSx1KCkpOmN9LG4uY29weT1mdW5jdGlvbigpe3JldHVybiB4TShpKCksbykucm91bmQoYSkucGFkZGluZ0lubmVyKHMpLnBhZGRpbmdPdXRlcihsKS5hbGlnbihjKX0sZk0uYXBwbHkodSgpLGFyZ3VtZW50cyl9ZnVuY3Rpb24gd00odCl7dmFyIGU9dC5jb3B5O3JldHVybiB0LnBhZGRpbmc9dC5wYWRkaW5nT3V0ZXIsZGVsZXRlIHQucGFkZGluZ0lubmVyLGRlbGV0ZSB0LnBhZGRpbmdPdXRlcix0LmNvcHk9ZnVuY3Rpb24oKXtyZXR1cm4gd00oZSgpKX0sdH1mdW5jdGlvbiBTTSgpe3JldHVybiB3TSh4TS5hcHBseShudWxsLGFyZ3VtZW50cykucGFkZGluZ0lubmVyKDEpKX1mdW5jdGlvbiBNTSh0KXtyZXR1cm4rdH12YXIgRU09WzAsMV07ZnVuY3Rpb24gVE0odCl7cmV0dXJuIHR9ZnVuY3Rpb24gQU0odCxlKXtyZXR1cm4oZS09dD0rdCk/ZnVuY3Rpb24obil7cmV0dXJuKG4tdCkvZX06KGZ1bmN0aW9uIG4odCl7cmV0dXJuIGZ1bmN0aW9uKCl7cmV0dXJuIHR9fSkoaXNOYU4oZSk/TmFOOi41KX1mdW5jdGlvbiBDTSh0KXt2YXIgZSxuPXRbMF0saT10W3QubGVuZ3RoLTFdO3JldHVybiBuPmkmJihlPW4sbj1pLGk9ZSksZnVuY3Rpb24odCl7cmV0dXJuIE1hdGgubWF4KG4sTWF0aC5taW4oaSx0KSl9fWZ1bmN0aW9uIGtNKHQsZSxuKXt2YXIgaT10WzBdLHI9dFsxXSxvPWVbMF0sYT1lWzFdO3JldHVybiByPGk/KGk9QU0ocixpKSxvPW4oYSxvKSk6KGk9QU0oaSxyKSxvPW4obyxhKSksZnVuY3Rpb24odCl7cmV0dXJuIG8oaSh0KSl9fWZ1bmN0aW9uIExNKHQsZSxuKXt2YXIgaT1NYXRoLm1pbih0Lmxlbmd0aCxlLmxlbmd0aCktMSxyPW5ldyBBcnJheShpKSxvPW5ldyBBcnJheShpKSxhPS0xO2Zvcih0W2ldPHRbMF0mJih0PXQuc2xpY2UoKS5yZXZlcnNlKCksZT1lLnNsaWNlKCkucmV2ZXJzZSgpKTsrK2E8aTspclthXT1BTSh0W2FdLHRbYSsxXSksb1thXT1uKGVbYV0sZVthKzFdKTtyZXR1cm4gZnVuY3Rpb24oZSl7dmFyIG49U2wodCxlLDEsaSktMTtyZXR1cm4gb1tuXShyW25dKGUpKX19ZnVuY3Rpb24gUE0odCxlKXtyZXR1cm4gZS5kb21haW4odC5kb21haW4oKSkucmFuZ2UodC5yYW5nZSgpKS5pbnRlcnBvbGF0ZSh0LmludGVycG9sYXRlKCkpLmNsYW1wKHQuY2xhbXAoKSkudW5rbm93bih0LnVua25vd24oKSl9ZnVuY3Rpb24gSU0oKXt2YXIgdCxlLG4saSxyLG8sYT1FTSxzPUVNLGw9VWQsYz1UTTtmdW5jdGlvbiB1KCl7cmV0dXJuIGk9TWF0aC5taW4oYS5sZW5ndGgscy5sZW5ndGgpPjI/TE06a00scj1vPW51bGwsaH1mdW5jdGlvbiBoKGUpe3JldHVybiBpc05hTihlPStlKT9uOihyfHwocj1pKGEubWFwKHQpLHMsbCkpKSh0KGMoZSkpKX1yZXR1cm4gaC5pbnZlcnQ9ZnVuY3Rpb24obil7cmV0dXJuIGMoZSgob3x8KG89aShzLGEubWFwKHQpLEJkKSkpKG4pKSl9LGguZG9tYWluPWZ1bmN0aW9uKHQpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyhhPV9NLmNhbGwodCxNTSksYz09PVRNfHwoYz1DTShhKSksdSgpKTphLnNsaWNlKCl9LGgucmFuZ2U9ZnVuY3Rpb24odCl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KHM9eU0uY2FsbCh0KSx1KCkpOnMuc2xpY2UoKX0saC5yYW5nZVJvdW5kPWZ1bmN0aW9uKHQpe3JldHVybiBzPXlNLmNhbGwodCksbD1HZCx1KCl9LGguY2xhbXA9ZnVuY3Rpb24odCl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KGM9dD9DTShhKTpUTSxoKTpjIT09VE19LGguaW50ZXJwb2xhdGU9ZnVuY3Rpb24odCl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KGw9dCx1KCkpOmx9LGgudW5rbm93bj1mdW5jdGlvbih0KXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8obj10LGgpOm59LGZ1bmN0aW9uKG4saSl7cmV0dXJuIHQ9bixlPWksdSgpfX1mdW5jdGlvbiBOTSh0LGUpe3JldHVybiBJTSgpKHQsZSl9ZnVuY3Rpb24gT00odCxlLG4saSl7dmFyIHIsbz1qbCh0LGUsbik7c3dpdGNoKChpPWF5KG51bGw9PWk/IixmIjppKSkudHlwZSl7Y2FzZSJzIjp2YXIgYT1NYXRoLm1heChNYXRoLmFicyh0KSxNYXRoLmFicyhlKSk7cmV0dXJuIG51bGwhPWkucHJlY2lzaW9ufHxpc05hTihyPWJ5KG8sYSkpfHwoaS5wcmVjaXNpb249ciksZnkoaSxhKTtjYXNlIiI6Y2FzZSJlIjpjYXNlImciOmNhc2UicCI6Y2FzZSJyIjpudWxsIT1pLnByZWNpc2lvbnx8aXNOYU4ocj14eShvLE1hdGgubWF4KE1hdGguYWJzKHQpLE1hdGguYWJzKGUpKSkpfHwoaS5wcmVjaXNpb249ci0oImUiPT09aS50eXBlKSk7YnJlYWs7Y2FzZSJmIjpjYXNlIiUiOm51bGwhPWkucHJlY2lzaW9ufHxpc05hTihyPXZ5KG8pKXx8KGkucHJlY2lzaW9uPXItMiooIiUiPT09aS50eXBlKSl9cmV0dXJuIHB5KGkpfWZ1bmN0aW9uIFJNKHQpe3ZhciBlPXQuZG9tYWluO3JldHVybiB0LnRpY2tzPWZ1bmN0aW9uKHQpe3ZhciBuPWUoKTtyZXR1cm4gRmwoblswXSxuW24ubGVuZ3RoLTFdLG51bGw9PXQ/MTA6dCl9LHQudGlja0Zvcm1hdD1mdW5jdGlvbih0LG4pe3ZhciBpPWUoKTtyZXR1cm4gT00oaVswXSxpW2kubGVuZ3RoLTFdLG51bGw9PXQ/MTA6dCxuKX0sdC5uaWNlPWZ1bmN0aW9uKG4pe251bGw9PW4mJihuPTEwKTt2YXIgaSxyPWUoKSxvPTAsYT1yLmxlbmd0aC0xLHM9cltvXSxsPXJbYV07cmV0dXJuIGw8cyYmKGk9cyxzPWwsbD1pLGk9byxvPWEsYT1pKSwoaT1WbChzLGwsbikpPjA/aT1WbChzPU1hdGguZmxvb3Iocy9pKSppLGw9TWF0aC5jZWlsKGwvaSkqaSxuKTppPDAmJihpPVZsKHM9TWF0aC5jZWlsKHMqaSkvaSxsPU1hdGguZmxvb3IobCppKS9pLG4pKSxpPjA/KHJbb109TWF0aC5mbG9vcihzL2kpKmksclthXT1NYXRoLmNlaWwobC9pKSppLGUocikpOmk8MCYmKHJbb109TWF0aC5jZWlsKHMqaSkvaSxyW2FdPU1hdGguZmxvb3IobCppKS9pLGUocikpLHR9LHR9ZnVuY3Rpb24gek0oKXt2YXIgdD1OTShUTSxUTSk7cmV0dXJuIHQuY29weT1mdW5jdGlvbigpe3JldHVybiBQTSh0LHpNKCkpfSxmTS5hcHBseSh0LGFyZ3VtZW50cyksUk0odCl9ZnVuY3Rpb24gRE0odCxlKXt2YXIgbixpPTAscj0odD10LnNsaWNlKCkpLmxlbmd0aC0xLG89dFtpXSxhPXRbcl07cmV0dXJuIGE8byYmKG49aSxpPXIscj1uLG49byxvPWEsYT1uKSx0W2ldPWUuZmxvb3IobyksdFtyXT1lLmNlaWwoYSksdH1mdW5jdGlvbiBCTSh0KXtyZXR1cm4gTWF0aC5sb2codCl9ZnVuY3Rpb24gSE0odCl7cmV0dXJuIE1hdGguZXhwKHQpfWZ1bmN0aW9uIEZNKHQpe3JldHVybi1NYXRoLmxvZygtdCl9ZnVuY3Rpb24gVk0odCl7cmV0dXJuLU1hdGguZXhwKC10KX1mdW5jdGlvbiBqTSh0KXtyZXR1cm4gaXNGaW5pdGUodCk/KygiMWUiK3QpOnQ8MD8wOnR9ZnVuY3Rpb24gVU0odCl7cmV0dXJuIGZ1bmN0aW9uKGUpe3JldHVybi10KC1lKX19ZnVuY3Rpb24gR00odCl7dmFyIGUsbixpPXQoQk0sSE0pLHI9aS5kb21haW4sbz0xMDtmdW5jdGlvbiBhKCl7cmV0dXJuIGU9KGZ1bmN0aW9uIGEodCl7cmV0dXJuIHQ9PT1NYXRoLkU/TWF0aC5sb2c6MTA9PT10JiZNYXRoLmxvZzEwfHwyPT09dCYmTWF0aC5sb2cyfHwodD1NYXRoLmxvZyh0KSxmdW5jdGlvbihlKXtyZXR1cm4gTWF0aC5sb2coZSkvdH0pfSkobyksbj0oZnVuY3Rpb24gcyh0KXtyZXR1cm4gMTA9PT10P2pNOnQ9PT1NYXRoLkU/TWF0aC5leHA6ZnVuY3Rpb24oZSl7cmV0dXJuIE1hdGgucG93KHQsZSl9fSkobykscigpWzBdPDA/KGU9VU0oZSksbj1VTShuKSx0KEZNLFZNKSk6dChCTSxITSksaX1yZXR1cm4gaS5iYXNlPWZ1bmN0aW9uKHQpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyhvPSt0LGEoKSk6b30saS5kb21haW49ZnVuY3Rpb24odCl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KHIodCksYSgpKTpyKCl9LGkudGlja3M9ZnVuY3Rpb24odCl7dmFyIGksYT1yKCkscz1hWzBdLGw9YVthLmxlbmd0aC0xXTsoaT1sPHMpJiYoZD1zLHM9bCxsPWQpO3ZhciBjLHUsaCxkPWUocykscD1lKGwpLGY9bnVsbD09dD8xMDordCxtPVtdO2lmKCEobyUxKSYmcC1kPGYpe2lmKGQ9TWF0aC5yb3VuZChkKS0xLHA9TWF0aC5yb3VuZChwKSsxLHM+MCl7Zm9yKDtkPHA7KytkKWZvcih1PTEsYz1uKGQpO3U8bzsrK3UpaWYoISgoaD1jKnUpPHMpKXtpZihoPmwpYnJlYWs7bS5wdXNoKGgpfX1lbHNlIGZvcig7ZDxwOysrZClmb3IodT1vLTEsYz1uKGQpO3U+PTE7LS11KWlmKCEoKGg9Yyp1KTxzKSl7aWYoaD5sKWJyZWFrO20ucHVzaChoKX19ZWxzZSBtPUZsKGQscCxNYXRoLm1pbihwLWQsZikpLm1hcChuKTtyZXR1cm4gaT9tLnJldmVyc2UoKTptfSxpLnRpY2tGb3JtYXQ9ZnVuY3Rpb24odCxyKXtpZihudWxsPT1yJiYocj0xMD09PW8/Ii4wZSI6IiwiKSwiZnVuY3Rpb24iIT10eXBlb2YgciYmKHI9cHkocikpLHQ9PT0xLzApcmV0dXJuIHI7bnVsbD09dCYmKHQ9MTApO3ZhciBhPU1hdGgubWF4KDEsbyp0L2kudGlja3MoKS5sZW5ndGgpO3JldHVybiBmdW5jdGlvbih0KXt2YXIgaT10L24oTWF0aC5yb3VuZChlKHQpKSk7cmV0dXJuIGkqbzxvLS41JiYoaSo9byksaTw9YT9yKHQpOiIifX0saS5uaWNlPWZ1bmN0aW9uKCl7cmV0dXJuIHIoRE0ocigpLHtmbG9vcjpmdW5jdGlvbih0KXtyZXR1cm4gbihNYXRoLmZsb29yKGUodCkpKX0sY2VpbDpmdW5jdGlvbih0KXtyZXR1cm4gbihNYXRoLmNlaWwoZSh0KSkpfX0pKX0saX1mdW5jdGlvbiBXTSgpe3ZhciB0PUdNKElNKCkpLmRvbWFpbihbMSwxMF0pO3JldHVybiB0LmNvcHk9ZnVuY3Rpb24oKXtyZXR1cm4gUE0odCxXTSgpKS5iYXNlKHQuYmFzZSgpKX0sZk0uYXBwbHkodCxhcmd1bWVudHMpLHR9ZnVuY3Rpb24gcU0odCl7cmV0dXJuIGZ1bmN0aW9uKGUpe3JldHVybiBNYXRoLnNpZ24oZSkqTWF0aC5sb2cxcChNYXRoLmFicyhlL3QpKX19ZnVuY3Rpb24gWU0odCl7cmV0dXJuIGZ1bmN0aW9uKGUpe3JldHVybiBNYXRoLnNpZ24oZSkqTWF0aC5leHBtMShNYXRoLmFicyhlKSkqdH19ZnVuY3Rpb24gWE0odCl7dmFyIGU9MSxuPXQocU0oZSksWU0oZSkpO3JldHVybiBuLmNvbnN0YW50PWZ1bmN0aW9uKG4pe3JldHVybiBhcmd1bWVudHMubGVuZ3RoP3QocU0oZT0rbiksWU0oZSkpOmV9LFJNKG4pfWZ1bmN0aW9uICRNKHQpe3JldHVybiBmdW5jdGlvbihlKXtyZXR1cm4gZTwwPy1NYXRoLnBvdygtZSx0KTpNYXRoLnBvdyhlLHQpfX1mdW5jdGlvbiBLTSh0KXtyZXR1cm4gdDwwPy1NYXRoLnNxcnQoLXQpOk1hdGguc3FydCh0KX1mdW5jdGlvbiBaTSh0KXtyZXR1cm4gdDwwPy10KnQ6dCp0fWZ1bmN0aW9uIEpNKHQpe3ZhciBlPXQoVE0sVE0pLG49MTtmdW5jdGlvbiBpKCl7cmV0dXJuIDE9PT1uP3QoVE0sVE0pOi41PT09bj90KEtNLFpNKTp0KCRNKG4pLCRNKDEvbikpfXJldHVybiBlLmV4cG9uZW50PWZ1bmN0aW9uKHQpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyhuPSt0LGkoKSk6bn0sUk0oZSl9ZnVuY3Rpb24gUU0oKXt2YXIgdD1KTShJTSgpKTtyZXR1cm4gdC5jb3B5PWZ1bmN0aW9uKCl7cmV0dXJuIFBNKHQsUU0oKSkuZXhwb25lbnQodC5leHBvbmVudCgpKX0sZk0uYXBwbHkodCxhcmd1bWVudHMpLHR9ZnVuY3Rpb24gdEUoKXt2YXIgdCxlPVtdLG49W10saT1bXTtmdW5jdGlvbiByKCl7dmFyIHQ9MCxyPU1hdGgubWF4KDEsbi5sZW5ndGgpO2ZvcihpPW5ldyBBcnJheShyLTEpOysrdDxyOylpW3QtMV09R2woZSx0L3IpO3JldHVybiBvfWZ1bmN0aW9uIG8oZSl7cmV0dXJuIGlzTmFOKGU9K2UpP3Q6bltTbChpLGUpXX1yZXR1cm4gby5pbnZlcnRFeHRlbnQ9ZnVuY3Rpb24odCl7dmFyIHI9bi5pbmRleE9mKHQpO3JldHVybiByPDA/W05hTixOYU5dOltyPjA/aVtyLTFdOmVbMF0scjxpLmxlbmd0aD9pW3JdOmVbZS5sZW5ndGgtMV1dfSxvLmRvbWFpbj1mdW5jdGlvbih0KXtpZighYXJndW1lbnRzLmxlbmd0aClyZXR1cm4gZS5zbGljZSgpO2U9W107Zm9yKHZhciBuLGk9MCxvPXQubGVuZ3RoO2k8bzsrK2kpbnVsbD09KG49dFtpXSl8fGlzTmFOKG49K24pfHxlLnB1c2gobik7cmV0dXJuIGUuc29ydChibCkscigpfSxvLnJhbmdlPWZ1bmN0aW9uKHQpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyhuPXlNLmNhbGwodCkscigpKTpuLnNsaWNlKCl9LG8udW5rbm93bj1mdW5jdGlvbihlKXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8odD1lLG8pOnR9LG8ucXVhbnRpbGVzPWZ1bmN0aW9uKCl7cmV0dXJuIGkuc2xpY2UoKX0sby5jb3B5PWZ1bmN0aW9uKCl7cmV0dXJuIHRFKCkuZG9tYWluKGUpLnJhbmdlKG4pLnVua25vd24odCl9LGZNLmFwcGx5KG8sYXJndW1lbnRzKX1mdW5jdGlvbiBlRSgpe3ZhciB0LGU9MCxuPTEsaT0xLHI9Wy41XSxvPVswLDFdO2Z1bmN0aW9uIGEoZSl7cmV0dXJuIGU8PWU/b1tTbChyLGUsMCxpKV06dH1mdW5jdGlvbiBzKCl7dmFyIHQ9LTE7Zm9yKHI9bmV3IEFycmF5KGkpOysrdDxpOylyW3RdPSgodCsxKSpuLSh0LWkpKmUpLyhpKzEpO3JldHVybiBhfXJldHVybiBhLmRvbWFpbj1mdW5jdGlvbih0KXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8oZT0rdFswXSxuPSt0WzFdLHMoKSk6W2Usbl19LGEucmFuZ2U9ZnVuY3Rpb24odCl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KGk9KG89eU0uY2FsbCh0KSkubGVuZ3RoLTEscygpKTpvLnNsaWNlKCl9LGEuaW52ZXJ0RXh0ZW50PWZ1bmN0aW9uKHQpe3ZhciBhPW8uaW5kZXhPZih0KTtyZXR1cm4gYTwwP1tOYU4sTmFOXTphPDE/W2UsclswXV06YT49aT9bcltpLTFdLG5dOltyW2EtMV0sclthXV19LGEudW5rbm93bj1mdW5jdGlvbihlKXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8odD1lLGEpOmF9LGEudGhyZXNob2xkcz1mdW5jdGlvbigpe3JldHVybiByLnNsaWNlKCl9LGEuY29weT1mdW5jdGlvbigpe3JldHVybiBlRSgpLmRvbWFpbihbZSxuXSkucmFuZ2UobykudW5rbm93bih0KX0sZk0uYXBwbHkoUk0oYSksYXJndW1lbnRzKX12YXIgbkU9bmV3IERhdGUsaUU9bmV3IERhdGU7ZnVuY3Rpb24gckUodCxlLG4saSl7ZnVuY3Rpb24gcihlKXtyZXR1cm4gdChlPTA9PT1hcmd1bWVudHMubGVuZ3RoP25ldyBEYXRlOm5ldyBEYXRlKCtlKSksZX1yZXR1cm4gci5mbG9vcj1mdW5jdGlvbihlKXtyZXR1cm4gdChlPW5ldyBEYXRlKCtlKSksZX0sci5jZWlsPWZ1bmN0aW9uKG4pe3JldHVybiB0KG49bmV3IERhdGUobi0xKSksZShuLDEpLHQobiksbn0sci5yb3VuZD1mdW5jdGlvbih0KXt2YXIgZT1yKHQpLG49ci5jZWlsKHQpO3JldHVybiB0LWU8bi10P2U6bn0sci5vZmZzZXQ9ZnVuY3Rpb24odCxuKXtyZXR1cm4gZSh0PW5ldyBEYXRlKCt0KSxudWxsPT1uPzE6TWF0aC5mbG9vcihuKSksdH0sci5yYW5nZT1mdW5jdGlvbihuLGksbyl7dmFyIGEscz1bXTtpZihuPXIuY2VpbChuKSxvPW51bGw9PW8/MTpNYXRoLmZsb29yKG8pLCEobjxpJiZvPjApKXJldHVybiBzO2Rve3MucHVzaChhPW5ldyBEYXRlKCtuKSksZShuLG8pLHQobil9d2hpbGUoYTxuJiZuPGkpO3JldHVybiBzfSxyLmZpbHRlcj1mdW5jdGlvbihuKXtyZXR1cm4gckUoKGZ1bmN0aW9uKGUpe2lmKGU+PWUpZm9yKDt0KGUpLCFuKGUpOyllLnNldFRpbWUoZS0xKX0pLChmdW5jdGlvbih0LGkpe2lmKHQ+PXQpaWYoaTwwKWZvcig7KytpPD0wOylmb3IoO2UodCwtMSksIW4odCk7KTtlbHNlIGZvcig7LS1pPj0wOylmb3IoO2UodCwxKSwhbih0KTspO30pKX0sbiYmKHIuY291bnQ9ZnVuY3Rpb24oZSxpKXtyZXR1cm4gbkUuc2V0VGltZSgrZSksaUUuc2V0VGltZSgraSksdChuRSksdChpRSksTWF0aC5mbG9vcihuKG5FLGlFKSl9LHIuZXZlcnk9ZnVuY3Rpb24odCl7cmV0dXJuIHQ9TWF0aC5mbG9vcih0KSxpc0Zpbml0ZSh0KSYmdD4wP3Q+MT9yLmZpbHRlcihpP2Z1bmN0aW9uKGUpe3JldHVybiBpKGUpJXQ9PTB9OmZ1bmN0aW9uKGUpe3JldHVybiByLmNvdW50KDAsZSkldD09MH0pOnI6bnVsbH0pLHJ9dmFyIG9FPXJFKChmdW5jdGlvbigpe30pLChmdW5jdGlvbih0LGUpe3Quc2V0VGltZSgrdCtlKX0pLChmdW5jdGlvbih0LGUpe3JldHVybiBlLXR9KSk7b0UuZXZlcnk9ZnVuY3Rpb24odCl7cmV0dXJuIHQ9TWF0aC5mbG9vcih0KSxpc0Zpbml0ZSh0KSYmdD4wP3Q+MT9yRSgoZnVuY3Rpb24oZSl7ZS5zZXRUaW1lKE1hdGguZmxvb3IoZS90KSp0KX0pLChmdW5jdGlvbihlLG4pe2Uuc2V0VGltZSgrZStuKnQpfSksKGZ1bmN0aW9uKGUsbil7cmV0dXJuKG4tZSkvdH0pKTpvRTpudWxsfTt2YXIgYUU9b0UucmFuZ2Usc0U9MWUzLGxFPTZlNCxjRT0zNmU1LHVFPTg2NGU1LGhFPTYwNDhlNSxkRT1yRSgoZnVuY3Rpb24odCl7dC5zZXRUaW1lKHQtdC5nZXRNaWxsaXNlY29uZHMoKSl9KSwoZnVuY3Rpb24odCxlKXt0LnNldFRpbWUoK3QrZSpzRSl9KSwoZnVuY3Rpb24odCxlKXtyZXR1cm4oZS10KS9zRX0pLChmdW5jdGlvbih0KXtyZXR1cm4gdC5nZXRVVENTZWNvbmRzKCl9KSkscEU9ZEUucmFuZ2UsZkU9ckUoKGZ1bmN0aW9uKHQpe3Quc2V0VGltZSh0LXQuZ2V0TWlsbGlzZWNvbmRzKCktdC5nZXRTZWNvbmRzKCkqc0UpfSksKGZ1bmN0aW9uKHQsZSl7dC5zZXRUaW1lKCt0K2UqbEUpfSksKGZ1bmN0aW9uKHQsZSl7cmV0dXJuKGUtdCkvbEV9KSwoZnVuY3Rpb24odCl7cmV0dXJuIHQuZ2V0TWludXRlcygpfSkpLG1FPWZFLnJhbmdlLGdFPXJFKChmdW5jdGlvbih0KXt0LnNldFRpbWUodC10LmdldE1pbGxpc2Vjb25kcygpLXQuZ2V0U2Vjb25kcygpKnNFLXQuZ2V0TWludXRlcygpKmxFKX0pLChmdW5jdGlvbih0LGUpe3Quc2V0VGltZSgrdCtlKmNFKX0pLChmdW5jdGlvbih0LGUpe3JldHVybihlLXQpL2NFfSksKGZ1bmN0aW9uKHQpe3JldHVybiB0LmdldEhvdXJzKCl9KSksX0U9Z0UucmFuZ2UseUU9ckUoKGZ1bmN0aW9uKHQpe3Quc2V0SG91cnMoMCwwLDAsMCl9KSwoZnVuY3Rpb24odCxlKXt0LnNldERhdGUodC5nZXREYXRlKCkrZSl9KSwoZnVuY3Rpb24odCxlKXtyZXR1cm4oZS10LShlLmdldFRpbWV6b25lT2Zmc2V0KCktdC5nZXRUaW1lem9uZU9mZnNldCgpKSpsRSkvdUV9KSwoZnVuY3Rpb24odCl7cmV0dXJuIHQuZ2V0RGF0ZSgpLTF9KSksdkU9eUUucmFuZ2U7ZnVuY3Rpb24gYkUodCl7cmV0dXJuIHJFKChmdW5jdGlvbihlKXtlLnNldERhdGUoZS5nZXREYXRlKCktKGUuZ2V0RGF5KCkrNy10KSU3KSxlLnNldEhvdXJzKDAsMCwwLDApfSksKGZ1bmN0aW9uKHQsZSl7dC5zZXREYXRlKHQuZ2V0RGF0ZSgpKzcqZSl9KSwoZnVuY3Rpb24odCxlKXtyZXR1cm4oZS10LShlLmdldFRpbWV6b25lT2Zmc2V0KCktdC5nZXRUaW1lem9uZU9mZnNldCgpKSpsRSkvaEV9KSl9dmFyIHhFPWJFKDApLHdFPWJFKDEpLFNFPWJFKDIpLE1FPWJFKDMpLEVFPWJFKDQpLFRFPWJFKDUpLEFFPWJFKDYpLENFPXhFLnJhbmdlLGtFPXdFLnJhbmdlLExFPVNFLnJhbmdlLFBFPU1FLnJhbmdlLElFPUVFLnJhbmdlLE5FPVRFLnJhbmdlLE9FPUFFLnJhbmdlLFJFPXJFKChmdW5jdGlvbih0KXt0LnNldERhdGUoMSksdC5zZXRIb3VycygwLDAsMCwwKX0pLChmdW5jdGlvbih0LGUpe3Quc2V0TW9udGgodC5nZXRNb250aCgpK2UpfSksKGZ1bmN0aW9uKHQsZSl7cmV0dXJuIGUuZ2V0TW9udGgoKS10LmdldE1vbnRoKCkrMTIqKGUuZ2V0RnVsbFllYXIoKS10LmdldEZ1bGxZZWFyKCkpfSksKGZ1bmN0aW9uKHQpe3JldHVybiB0LmdldE1vbnRoKCl9KSksekU9UkUucmFuZ2UsREU9ckUoKGZ1bmN0aW9uKHQpe3Quc2V0TW9udGgoMCwxKSx0LnNldEhvdXJzKDAsMCwwLDApfSksKGZ1bmN0aW9uKHQsZSl7dC5zZXRGdWxsWWVhcih0LmdldEZ1bGxZZWFyKCkrZSl9KSwoZnVuY3Rpb24odCxlKXtyZXR1cm4gZS5nZXRGdWxsWWVhcigpLXQuZ2V0RnVsbFllYXIoKX0pLChmdW5jdGlvbih0KXtyZXR1cm4gdC5nZXRGdWxsWWVhcigpfSkpO0RFLmV2ZXJ5PWZ1bmN0aW9uKHQpe3JldHVybiBpc0Zpbml0ZSh0PU1hdGguZmxvb3IodCkpJiZ0PjA/ckUoKGZ1bmN0aW9uKGUpe2Uuc2V0RnVsbFllYXIoTWF0aC5mbG9vcihlLmdldEZ1bGxZZWFyKCkvdCkqdCksZS5zZXRNb250aCgwLDEpLGUuc2V0SG91cnMoMCwwLDAsMCl9KSwoZnVuY3Rpb24oZSxuKXtlLnNldEZ1bGxZZWFyKGUuZ2V0RnVsbFllYXIoKStuKnQpfSkpOm51bGx9O3ZhciBCRT1ERS5yYW5nZSxIRT1yRSgoZnVuY3Rpb24odCl7dC5zZXRVVENTZWNvbmRzKDAsMCl9KSwoZnVuY3Rpb24odCxlKXt0LnNldFRpbWUoK3QrZSpsRSl9KSwoZnVuY3Rpb24odCxlKXtyZXR1cm4oZS10KS9sRX0pLChmdW5jdGlvbih0KXtyZXR1cm4gdC5nZXRVVENNaW51dGVzKCl9KSksRkU9SEUucmFuZ2UsVkU9ckUoKGZ1bmN0aW9uKHQpe3Quc2V0VVRDTWludXRlcygwLDAsMCl9KSwoZnVuY3Rpb24odCxlKXt0LnNldFRpbWUoK3QrZSpjRSl9KSwoZnVuY3Rpb24odCxlKXtyZXR1cm4oZS10KS9jRX0pLChmdW5jdGlvbih0KXtyZXR1cm4gdC5nZXRVVENIb3VycygpfSkpLGpFPVZFLnJhbmdlLFVFPXJFKChmdW5jdGlvbih0KXt0LnNldFVUQ0hvdXJzKDAsMCwwLDApfSksKGZ1bmN0aW9uKHQsZSl7dC5zZXRVVENEYXRlKHQuZ2V0VVRDRGF0ZSgpK2UpfSksKGZ1bmN0aW9uKHQsZSl7cmV0dXJuKGUtdCkvdUV9KSwoZnVuY3Rpb24odCl7cmV0dXJuIHQuZ2V0VVRDRGF0ZSgpLTF9KSksR0U9VUUucmFuZ2U7ZnVuY3Rpb24gV0UodCl7cmV0dXJuIHJFKChmdW5jdGlvbihlKXtlLnNldFVUQ0RhdGUoZS5nZXRVVENEYXRlKCktKGUuZ2V0VVRDRGF5KCkrNy10KSU3KSxlLnNldFVUQ0hvdXJzKDAsMCwwLDApfSksKGZ1bmN0aW9uKHQsZSl7dC5zZXRVVENEYXRlKHQuZ2V0VVRDRGF0ZSgpKzcqZSl9KSwoZnVuY3Rpb24odCxlKXtyZXR1cm4oZS10KS9oRX0pKX12YXIgcUU9V0UoMCksWUU9V0UoMSksWEU9V0UoMiksJEU9V0UoMyksS0U9V0UoNCksWkU9V0UoNSksSkU9V0UoNiksUUU9cUUucmFuZ2UsdFQ9WUUucmFuZ2UsZVQ9WEUucmFuZ2UsblQ9JEUucmFuZ2UsaVQ9S0UucmFuZ2UsclQ9WkUucmFuZ2Usb1Q9SkUucmFuZ2UsYVQ9ckUoKGZ1bmN0aW9uKHQpe3Quc2V0VVRDRGF0ZSgxKSx0LnNldFVUQ0hvdXJzKDAsMCwwLDApfSksKGZ1bmN0aW9uKHQsZSl7dC5zZXRVVENNb250aCh0LmdldFVUQ01vbnRoKCkrZSl9KSwoZnVuY3Rpb24odCxlKXtyZXR1cm4gZS5nZXRVVENNb250aCgpLXQuZ2V0VVRDTW9udGgoKSsxMiooZS5nZXRVVENGdWxsWWVhcigpLXQuZ2V0VVRDRnVsbFllYXIoKSl9KSwoZnVuY3Rpb24odCl7cmV0dXJuIHQuZ2V0VVRDTW9udGgoKX0pKSxzVD1hVC5yYW5nZSxsVD1yRSgoZnVuY3Rpb24odCl7dC5zZXRVVENNb250aCgwLDEpLHQuc2V0VVRDSG91cnMoMCwwLDAsMCl9KSwoZnVuY3Rpb24odCxlKXt0LnNldFVUQ0Z1bGxZZWFyKHQuZ2V0VVRDRnVsbFllYXIoKStlKX0pLChmdW5jdGlvbih0LGUpe3JldHVybiBlLmdldFVUQ0Z1bGxZZWFyKCktdC5nZXRVVENGdWxsWWVhcigpfSksKGZ1bmN0aW9uKHQpe3JldHVybiB0LmdldFVUQ0Z1bGxZZWFyKCl9KSk7bFQuZXZlcnk9ZnVuY3Rpb24odCl7cmV0dXJuIGlzRmluaXRlKHQ9TWF0aC5mbG9vcih0KSkmJnQ+MD9yRSgoZnVuY3Rpb24oZSl7ZS5zZXRVVENGdWxsWWVhcihNYXRoLmZsb29yKGUuZ2V0VVRDRnVsbFllYXIoKS90KSp0KSxlLnNldFVUQ01vbnRoKDAsMSksZS5zZXRVVENIb3VycygwLDAsMCwwKX0pLChmdW5jdGlvbihlLG4pe2Uuc2V0VVRDRnVsbFllYXIoZS5nZXRVVENGdWxsWWVhcigpK24qdCl9KSk6bnVsbH07dmFyIGNUPWxULnJhbmdlO2Z1bmN0aW9uIHVUKHQpe2lmKDA8PXQueSYmdC55PDEwMCl7dmFyIGU9bmV3IERhdGUoLTEsdC5tLHQuZCx0LkgsdC5NLHQuUyx0LkwpO3JldHVybiBlLnNldEZ1bGxZZWFyKHQueSksZX1yZXR1cm4gbmV3IERhdGUodC55LHQubSx0LmQsdC5ILHQuTSx0LlMsdC5MKX1mdW5jdGlvbiBoVCh0KXtpZigwPD10LnkmJnQueTwxMDApe3ZhciBlPW5ldyBEYXRlKERhdGUuVVRDKC0xLHQubSx0LmQsdC5ILHQuTSx0LlMsdC5MKSk7cmV0dXJuIGUuc2V0VVRDRnVsbFllYXIodC55KSxlfXJldHVybiBuZXcgRGF0ZShEYXRlLlVUQyh0LnksdC5tLHQuZCx0LkgsdC5NLHQuUyx0LkwpKX1mdW5jdGlvbiBkVCh0LGUsbil7cmV0dXJue3k6dCxtOmUsZDpuLEg6MCxNOjAsUzowLEw6MH19ZnVuY3Rpb24gcFQodCl7dmFyIGU9dC5kYXRlVGltZSxuPXQuZGF0ZSxpPXQudGltZSxyPXQucGVyaW9kcyxvPXQuZGF5cyxhPXQuc2hvcnREYXlzLHM9dC5tb250aHMsbD10LnNob3J0TW9udGhzLGM9RVQociksdT1UVChyKSxoPUVUKG8pLGQ9VFQobykscD1FVChhKSxmPVRUKGEpLG09RVQocyksZz1UVChzKSxfPUVUKGwpLHk9VFQobCksdj17YTpmdW5jdGlvbiBiKHQpe3JldHVybiBhW3QuZ2V0RGF5KCldfSxBOmZ1bmN0aW9uIHgodCl7cmV0dXJuIG9bdC5nZXREYXkoKV19LGI6ZnVuY3Rpb24gdyh0KXtyZXR1cm4gbFt0LmdldE1vbnRoKCldfSxCOmZ1bmN0aW9uIFModCl7cmV0dXJuIHNbdC5nZXRNb250aCgpXX0sYzpudWxsLGQ6WVQsZTpZVCxmOkpULEg6WFQsSTokVCxqOktULEw6WlQsbTpRVCxNOnRBLHA6ZnVuY3Rpb24gTSh0KXtyZXR1cm4gclsrKHQuZ2V0SG91cnMoKT49MTIpXX0scTpmdW5jdGlvbiBFKHQpe3JldHVybiAxK35+KHQuZ2V0TW9udGgoKS8zKX0sUTpDQSxzOmtBLFM6ZUEsdTpuQSxVOmlBLFY6ckEsdzpvQSxXOmFBLHg6bnVsbCxYOm51bGwseTpzQSxZOmxBLFo6Y0EsIiUiOkFBfSxUPXthOmZ1bmN0aW9uIEEodCl7cmV0dXJuIGFbdC5nZXRVVENEYXkoKV19LEE6ZnVuY3Rpb24gQyh0KXtyZXR1cm4gb1t0LmdldFVUQ0RheSgpXX0sYjpmdW5jdGlvbiBrKHQpe3JldHVybiBsW3QuZ2V0VVRDTW9udGgoKV19LEI6ZnVuY3Rpb24gTCh0KXtyZXR1cm4gc1t0LmdldFVUQ01vbnRoKCldfSxjOm51bGwsZDp1QSxlOnVBLGY6bUEsSDpoQSxJOmRBLGo6cEEsTDpmQSxtOmdBLE06X0EscDpmdW5jdGlvbiBQKHQpe3JldHVybiByWysodC5nZXRVVENIb3VycygpPj0xMildfSxxOmZ1bmN0aW9uIEkodCl7cmV0dXJuIDErfn4odC5nZXRVVENNb250aCgpLzMpfSxROkNBLHM6a0EsUzp5QSx1OnZBLFU6YkEsVjp4QSx3OndBLFc6U0EseDpudWxsLFg6bnVsbCx5Ok1BLFk6RUEsWjpUQSwiJSI6QUF9LE49e2E6ZnVuY3Rpb24gTyh0LGUsbil7dmFyIGk9cC5leGVjKGUuc2xpY2UobikpO3JldHVybiBpPyh0Lnc9ZltpWzBdLnRvTG93ZXJDYXNlKCldLG4raVswXS5sZW5ndGgpOi0xfSxBOmZ1bmN0aW9uIFIodCxlLG4pe3ZhciBpPWguZXhlYyhlLnNsaWNlKG4pKTtyZXR1cm4gaT8odC53PWRbaVswXS50b0xvd2VyQ2FzZSgpXSxuK2lbMF0ubGVuZ3RoKTotMX0sYjpmdW5jdGlvbiB6KHQsZSxuKXt2YXIgaT1fLmV4ZWMoZS5zbGljZShuKSk7cmV0dXJuIGk/KHQubT15W2lbMF0udG9Mb3dlckNhc2UoKV0sbitpWzBdLmxlbmd0aCk6LTF9LEI6ZnVuY3Rpb24gRCh0LGUsbil7dmFyIGk9bS5leGVjKGUuc2xpY2UobikpO3JldHVybiBpPyh0Lm09Z1tpWzBdLnRvTG93ZXJDYXNlKCldLG4raVswXS5sZW5ndGgpOi0xfSxjOmZ1bmN0aW9uIEIodCxuLGkpe3JldHVybiBHKHQsZSxuLGkpfSxkOkRULGU6RFQsZjpVVCxIOkhULEk6SFQsajpCVCxMOmpULG06elQsTTpGVCxwOmZ1bmN0aW9uIEgodCxlLG4pe3ZhciBpPWMuZXhlYyhlLnNsaWNlKG4pKTtyZXR1cm4gaT8odC5wPXVbaVswXS50b0xvd2VyQ2FzZSgpXSxuK2lbMF0ubGVuZ3RoKTotMX0scTpSVCxROldULHM6cVQsUzpWVCx1OkNULFU6a1QsVjpMVCx3OkFULFc6UFQseDpmdW5jdGlvbiBGKHQsZSxpKXtyZXR1cm4gRyh0LG4sZSxpKX0sWDpmdW5jdGlvbiBWKHQsZSxuKXtyZXR1cm4gRyh0LGksZSxuKX0seTpOVCxZOklULFo6T1QsIiUiOkdUfTtmdW5jdGlvbiBqKHQsZSl7cmV0dXJuIGZ1bmN0aW9uKG4pe3ZhciBpLHIsbyxhPVtdLHM9LTEsbD0wLGM9dC5sZW5ndGg7Zm9yKG4gaW5zdGFuY2VvZiBEYXRlfHwobj1uZXcgRGF0ZSgrbikpOysrczxjOykzNz09PXQuY2hhckNvZGVBdChzKSYmKGEucHVzaCh0LnNsaWNlKGwscykpLG51bGwhPShyPXZUW2k9dC5jaGFyQXQoKytzKV0pP2k9dC5jaGFyQXQoKytzKTpyPSJlIj09PWk/IiAiOiIwIiwobz1lW2ldKSYmKGk9byhuLHIpKSxhLnB1c2goaSksbD1zKzEpO3JldHVybiBhLnB1c2godC5zbGljZShsLHMpKSxhLmpvaW4oIiIpfX1mdW5jdGlvbiBVKHQsZSl7cmV0dXJuIGZ1bmN0aW9uKG4pe3ZhciBpLHIsbz1kVCgxOTAwLHZvaWQgMCwxKTtpZihHKG8sdCxuKz0iIiwwKSE9bi5sZW5ndGgpcmV0dXJuIG51bGw7aWYoIlEiaW4gbylyZXR1cm4gbmV3IERhdGUoby5RKTtpZigicyJpbiBvKXJldHVybiBuZXcgRGF0ZSgxZTMqby5zKygiTCJpbiBvP28uTDowKSk7aWYoZSYmISgiWiJpbiBvKSYmKG8uWj0wKSwicCJpbiBvJiYoby5IPW8uSCUxMisxMipvLnApLHZvaWQgMD09PW8ubSYmKG8ubT0icSJpbiBvP28ucTowKSwiViJpbiBvKXtpZihvLlY8MXx8by5WPjUzKXJldHVybiBudWxsOyJ3ImluIG98fChvLnc9MSksIloiaW4gbz8ocj0oaT1oVChkVChvLnksMCwxKSkpLmdldFVUQ0RheSgpLGk9cj40fHwwPT09cj9ZRS5jZWlsKGkpOllFKGkpLGk9VUUub2Zmc2V0KGksNyooby5WLTEpKSxvLnk9aS5nZXRVVENGdWxsWWVhcigpLG8ubT1pLmdldFVUQ01vbnRoKCksby5kPWkuZ2V0VVRDRGF0ZSgpKyhvLncrNiklNyk6KHI9KGk9dVQoZFQoby55LDAsMSkpKS5nZXREYXkoKSxpPXI+NHx8MD09PXI/d0UuY2VpbChpKTp3RShpKSxpPXlFLm9mZnNldChpLDcqKG8uVi0xKSksby55PWkuZ2V0RnVsbFllYXIoKSxvLm09aS5nZXRNb250aCgpLG8uZD1pLmdldERhdGUoKSsoby53KzYpJTcpfWVsc2UoIlciaW4gb3x8IlUiaW4gbykmJigidyJpbiBvfHwoby53PSJ1ImluIG8/by51JTc6IlciaW4gbz8xOjApLHI9IloiaW4gbz9oVChkVChvLnksMCwxKSkuZ2V0VVRDRGF5KCk6dVQoZFQoby55LDAsMSkpLmdldERheSgpLG8ubT0wLG8uZD0iVyJpbiBvPyhvLncrNiklNys3Km8uVy0ocis1KSU3Om8udys3Km8uVS0ocis2KSU3KTtyZXR1cm4iWiJpbiBvPyhvLkgrPW8uWi8xMDB8MCxvLk0rPW8uWiUxMDAsaFQobykpOnVUKG8pfX1mdW5jdGlvbiBHKHQsZSxuLGkpe2Zvcih2YXIgcixvLGE9MCxzPWUubGVuZ3RoLGw9bi5sZW5ndGg7YTxzOyl7aWYoaT49bClyZXR1cm4tMTtpZigzNz09PShyPWUuY2hhckNvZGVBdChhKyspKSl7aWYocj1lLmNoYXJBdChhKyspLCEobz1OW3IgaW4gdlQ/ZS5jaGFyQXQoYSsrKTpyXSl8fChpPW8odCxuLGkpKTwwKXJldHVybi0xfWVsc2UgaWYociE9bi5jaGFyQ29kZUF0KGkrKykpcmV0dXJuLTF9cmV0dXJuIGl9cmV0dXJuIHYueD1qKG4sdiksdi5YPWooaSx2KSx2LmM9aihlLHYpLFQueD1qKG4sVCksVC5YPWooaSxUKSxULmM9aihlLFQpLHtmb3JtYXQ6ZnVuY3Rpb24odCl7dmFyIGU9aih0Kz0iIix2KTtyZXR1cm4gZS50b1N0cmluZz1mdW5jdGlvbigpe3JldHVybiB0fSxlfSxwYXJzZTpmdW5jdGlvbih0KXt2YXIgZT1VKHQrPSIiLCExKTtyZXR1cm4gZS50b1N0cmluZz1mdW5jdGlvbigpe3JldHVybiB0fSxlfSx1dGNGb3JtYXQ6ZnVuY3Rpb24odCl7dmFyIGU9aih0Kz0iIixUKTtyZXR1cm4gZS50b1N0cmluZz1mdW5jdGlvbigpe3JldHVybiB0fSxlfSx1dGNQYXJzZTpmdW5jdGlvbih0KXt2YXIgZT1VKHQrPSIiLCEwKTtyZXR1cm4gZS50b1N0cmluZz1mdW5jdGlvbigpe3JldHVybiB0fSxlfX19dmFyIGZULG1ULGdULF9ULHlULHZUPXsiLSI6IiIsXzoiICIsMDoiMCJ9LGJUPS9eXHMqXGQrLyx4VD0vXiUvLHdUPS9bXFxeJCorP3xbXF0oKS57fV0vZztmdW5jdGlvbiBTVCh0LGUsbil7dmFyIGk9dDwwPyItIjoiIixyPShpPy10OnQpKyIiLG89ci5sZW5ndGg7cmV0dXJuIGkrKG88bj9uZXcgQXJyYXkobi1vKzEpLmpvaW4oZSkrcjpyKX1mdW5jdGlvbiBNVCh0KXtyZXR1cm4gdC5yZXBsYWNlKHdULCJcXCQmIil9ZnVuY3Rpb24gRVQodCl7cmV0dXJuIG5ldyBSZWdFeHAoIl4oPzoiK3QubWFwKE1UKS5qb2luKCJ8IikrIikiLCJpIil9ZnVuY3Rpb24gVFQodCl7Zm9yKHZhciBlPXt9LG49LTEsaT10Lmxlbmd0aDsrK248aTspZVt0W25dLnRvTG93ZXJDYXNlKCldPW47cmV0dXJuIGV9ZnVuY3Rpb24gQVQodCxlLG4pe3ZhciBpPWJULmV4ZWMoZS5zbGljZShuLG4rMSkpO3JldHVybiBpPyh0Lnc9K2lbMF0sbitpWzBdLmxlbmd0aCk6LTF9ZnVuY3Rpb24gQ1QodCxlLG4pe3ZhciBpPWJULmV4ZWMoZS5zbGljZShuLG4rMSkpO3JldHVybiBpPyh0LnU9K2lbMF0sbitpWzBdLmxlbmd0aCk6LTF9ZnVuY3Rpb24ga1QodCxlLG4pe3ZhciBpPWJULmV4ZWMoZS5zbGljZShuLG4rMikpO3JldHVybiBpPyh0LlU9K2lbMF0sbitpWzBdLmxlbmd0aCk6LTF9ZnVuY3Rpb24gTFQodCxlLG4pe3ZhciBpPWJULmV4ZWMoZS5zbGljZShuLG4rMikpO3JldHVybiBpPyh0LlY9K2lbMF0sbitpWzBdLmxlbmd0aCk6LTF9ZnVuY3Rpb24gUFQodCxlLG4pe3ZhciBpPWJULmV4ZWMoZS5zbGljZShuLG4rMikpO3JldHVybiBpPyh0Llc9K2lbMF0sbitpWzBdLmxlbmd0aCk6LTF9ZnVuY3Rpb24gSVQodCxlLG4pe3ZhciBpPWJULmV4ZWMoZS5zbGljZShuLG4rNCkpO3JldHVybiBpPyh0Lnk9K2lbMF0sbitpWzBdLmxlbmd0aCk6LTF9ZnVuY3Rpb24gTlQodCxlLG4pe3ZhciBpPWJULmV4ZWMoZS5zbGljZShuLG4rMikpO3JldHVybiBpPyh0Lnk9K2lbMF0rKCtpWzBdPjY4PzE5MDA6MmUzKSxuK2lbMF0ubGVuZ3RoKTotMX1mdW5jdGlvbiBPVCh0LGUsbil7dmFyIGk9L14oWil8KFsrLV1cZFxkKSg/Ojo/KFxkXGQpKT8vLmV4ZWMoZS5zbGljZShuLG4rNikpO3JldHVybiBpPyh0Llo9aVsxXT8wOi0oaVsyXSsoaVszXXx8IjAwIikpLG4raVswXS5sZW5ndGgpOi0xfWZ1bmN0aW9uIFJUKHQsZSxuKXt2YXIgaT1iVC5leGVjKGUuc2xpY2UobixuKzEpKTtyZXR1cm4gaT8odC5xPTMqaVswXS0zLG4raVswXS5sZW5ndGgpOi0xfWZ1bmN0aW9uIHpUKHQsZSxuKXt2YXIgaT1iVC5leGVjKGUuc2xpY2UobixuKzIpKTtyZXR1cm4gaT8odC5tPWlbMF0tMSxuK2lbMF0ubGVuZ3RoKTotMX1mdW5jdGlvbiBEVCh0LGUsbil7dmFyIGk9YlQuZXhlYyhlLnNsaWNlKG4sbisyKSk7cmV0dXJuIGk/KHQuZD0raVswXSxuK2lbMF0ubGVuZ3RoKTotMX1mdW5jdGlvbiBCVCh0LGUsbil7dmFyIGk9YlQuZXhlYyhlLnNsaWNlKG4sbiszKSk7cmV0dXJuIGk/KHQubT0wLHQuZD0raVswXSxuK2lbMF0ubGVuZ3RoKTotMX1mdW5jdGlvbiBIVCh0LGUsbil7dmFyIGk9YlQuZXhlYyhlLnNsaWNlKG4sbisyKSk7cmV0dXJuIGk/KHQuSD0raVswXSxuK2lbMF0ubGVuZ3RoKTotMX1mdW5jdGlvbiBGVCh0LGUsbil7dmFyIGk9YlQuZXhlYyhlLnNsaWNlKG4sbisyKSk7cmV0dXJuIGk/KHQuTT0raVswXSxuK2lbMF0ubGVuZ3RoKTotMX1mdW5jdGlvbiBWVCh0LGUsbil7dmFyIGk9YlQuZXhlYyhlLnNsaWNlKG4sbisyKSk7cmV0dXJuIGk/KHQuUz0raVswXSxuK2lbMF0ubGVuZ3RoKTotMX1mdW5jdGlvbiBqVCh0LGUsbil7dmFyIGk9YlQuZXhlYyhlLnNsaWNlKG4sbiszKSk7cmV0dXJuIGk/KHQuTD0raVswXSxuK2lbMF0ubGVuZ3RoKTotMX1mdW5jdGlvbiBVVCh0LGUsbil7dmFyIGk9YlQuZXhlYyhlLnNsaWNlKG4sbis2KSk7cmV0dXJuIGk/KHQuTD1NYXRoLmZsb29yKGlbMF0vMWUzKSxuK2lbMF0ubGVuZ3RoKTotMX1mdW5jdGlvbiBHVCh0LGUsbil7dmFyIGk9eFQuZXhlYyhlLnNsaWNlKG4sbisxKSk7cmV0dXJuIGk/bitpWzBdLmxlbmd0aDotMX1mdW5jdGlvbiBXVCh0LGUsbil7dmFyIGk9YlQuZXhlYyhlLnNsaWNlKG4pKTtyZXR1cm4gaT8odC5RPStpWzBdLG4raVswXS5sZW5ndGgpOi0xfWZ1bmN0aW9uIHFUKHQsZSxuKXt2YXIgaT1iVC5leGVjKGUuc2xpY2UobikpO3JldHVybiBpPyh0LnM9K2lbMF0sbitpWzBdLmxlbmd0aCk6LTF9ZnVuY3Rpb24gWVQodCxlKXtyZXR1cm4gU1QodC5nZXREYXRlKCksZSwyKX1mdW5jdGlvbiBYVCh0LGUpe3JldHVybiBTVCh0LmdldEhvdXJzKCksZSwyKX1mdW5jdGlvbiAkVCh0LGUpe3JldHVybiBTVCh0LmdldEhvdXJzKCklMTJ8fDEyLGUsMil9ZnVuY3Rpb24gS1QodCxlKXtyZXR1cm4gU1QoMSt5RS5jb3VudChERSh0KSx0KSxlLDMpfWZ1bmN0aW9uIFpUKHQsZSl7cmV0dXJuIFNUKHQuZ2V0TWlsbGlzZWNvbmRzKCksZSwzKX1mdW5jdGlvbiBKVCh0LGUpe3JldHVybiBaVCh0LGUpKyIwMDAifWZ1bmN0aW9uIFFUKHQsZSl7cmV0dXJuIFNUKHQuZ2V0TW9udGgoKSsxLGUsMil9ZnVuY3Rpb24gdEEodCxlKXtyZXR1cm4gU1QodC5nZXRNaW51dGVzKCksZSwyKX1mdW5jdGlvbiBlQSh0LGUpe3JldHVybiBTVCh0LmdldFNlY29uZHMoKSxlLDIpfWZ1bmN0aW9uIG5BKHQpe3ZhciBlPXQuZ2V0RGF5KCk7cmV0dXJuIDA9PT1lPzc6ZX1mdW5jdGlvbiBpQSh0LGUpe3JldHVybiBTVCh4RS5jb3VudChERSh0KS0xLHQpLGUsMil9ZnVuY3Rpb24gckEodCxlKXt2YXIgbj10LmdldERheSgpO3JldHVybiB0PW4+PTR8fDA9PT1uP0VFKHQpOkVFLmNlaWwodCksU1QoRUUuY291bnQoREUodCksdCkrKDQ9PT1ERSh0KS5nZXREYXkoKSksZSwyKX1mdW5jdGlvbiBvQSh0KXtyZXR1cm4gdC5nZXREYXkoKX1mdW5jdGlvbiBhQSh0LGUpe3JldHVybiBTVCh3RS5jb3VudChERSh0KS0xLHQpLGUsMil9ZnVuY3Rpb24gc0EodCxlKXtyZXR1cm4gU1QodC5nZXRGdWxsWWVhcigpJTEwMCxlLDIpfWZ1bmN0aW9uIGxBKHQsZSl7cmV0dXJuIFNUKHQuZ2V0RnVsbFllYXIoKSUxZTQsZSw0KX1mdW5jdGlvbiBjQSh0KXt2YXIgZT10LmdldFRpbWV6b25lT2Zmc2V0KCk7cmV0dXJuKGU+MD8iLSI6KGUqPS0xLCIrIikpK1NUKGUvNjB8MCwiMCIsMikrU1QoZSU2MCwiMCIsMil9ZnVuY3Rpb24gdUEodCxlKXtyZXR1cm4gU1QodC5nZXRVVENEYXRlKCksZSwyKX1mdW5jdGlvbiBoQSh0LGUpe3JldHVybiBTVCh0LmdldFVUQ0hvdXJzKCksZSwyKX1mdW5jdGlvbiBkQSh0LGUpe3JldHVybiBTVCh0LmdldFVUQ0hvdXJzKCklMTJ8fDEyLGUsMil9ZnVuY3Rpb24gcEEodCxlKXtyZXR1cm4gU1QoMStVRS5jb3VudChsVCh0KSx0KSxlLDMpfWZ1bmN0aW9uIGZBKHQsZSl7cmV0dXJuIFNUKHQuZ2V0VVRDTWlsbGlzZWNvbmRzKCksZSwzKX1mdW5jdGlvbiBtQSh0LGUpe3JldHVybiBmQSh0LGUpKyIwMDAifWZ1bmN0aW9uIGdBKHQsZSl7cmV0dXJuIFNUKHQuZ2V0VVRDTW9udGgoKSsxLGUsMil9ZnVuY3Rpb24gX0EodCxlKXtyZXR1cm4gU1QodC5nZXRVVENNaW51dGVzKCksZSwyKX1mdW5jdGlvbiB5QSh0LGUpe3JldHVybiBTVCh0LmdldFVUQ1NlY29uZHMoKSxlLDIpfWZ1bmN0aW9uIHZBKHQpe3ZhciBlPXQuZ2V0VVRDRGF5KCk7cmV0dXJuIDA9PT1lPzc6ZX1mdW5jdGlvbiBiQSh0LGUpe3JldHVybiBTVChxRS5jb3VudChsVCh0KS0xLHQpLGUsMil9ZnVuY3Rpb24geEEodCxlKXt2YXIgbj10LmdldFVUQ0RheSgpO3JldHVybiB0PW4+PTR8fDA9PT1uP0tFKHQpOktFLmNlaWwodCksU1QoS0UuY291bnQobFQodCksdCkrKDQ9PT1sVCh0KS5nZXRVVENEYXkoKSksZSwyKX1mdW5jdGlvbiB3QSh0KXtyZXR1cm4gdC5nZXRVVENEYXkoKX1mdW5jdGlvbiBTQSh0LGUpe3JldHVybiBTVChZRS5jb3VudChsVCh0KS0xLHQpLGUsMil9ZnVuY3Rpb24gTUEodCxlKXtyZXR1cm4gU1QodC5nZXRVVENGdWxsWWVhcigpJTEwMCxlLDIpfWZ1bmN0aW9uIEVBKHQsZSl7cmV0dXJuIFNUKHQuZ2V0VVRDRnVsbFllYXIoKSUxZTQsZSw0KX1mdW5jdGlvbiBUQSgpe3JldHVybiIrMDAwMCJ9ZnVuY3Rpb24gQUEoKXtyZXR1cm4iJSJ9ZnVuY3Rpb24gQ0EodCl7cmV0dXJuK3R9ZnVuY3Rpb24ga0EodCl7cmV0dXJuIE1hdGguZmxvb3IoK3QvMWUzKX1mdW5jdGlvbiBMQSh0KXtyZXR1cm4gZlQ9cFQodCksbVQ9ZlQuZm9ybWF0LGdUPWZULnBhcnNlLF9UPWZULnV0Y0Zvcm1hdCx5VD1mVC51dGNQYXJzZSxmVH1MQSh7ZGF0ZVRpbWU6IiV4LCAlWCIsZGF0ZToiJS1tLyUtZC8lWSIsdGltZToiJS1JOiVNOiVTICVwIixwZXJpb2RzOlsiQU0iLCJQTSJdLGRheXM6WyJTdW5kYXkiLCJNb25kYXkiLCJUdWVzZGF5IiwiV2VkbmVzZGF5IiwiVGh1cnNkYXkiLCJGcmlkYXkiLCJTYXR1cmRheSJdLHNob3J0RGF5czpbIlN1biIsIk1vbiIsIlR1ZSIsIldlZCIsIlRodSIsIkZyaSIsIlNhdCJdLG1vbnRoczpbIkphbnVhcnkiLCJGZWJydWFyeSIsIk1hcmNoIiwiQXByaWwiLCJNYXkiLCJKdW5lIiwiSnVseSIsIkF1Z3VzdCIsIlNlcHRlbWJlciIsIk9jdG9iZXIiLCJOb3ZlbWJlciIsIkRlY2VtYmVyIl0sc2hvcnRNb250aHM6WyJKYW4iLCJGZWIiLCJNYXIiLCJBcHIiLCJNYXkiLCJKdW4iLCJKdWwiLCJBdWciLCJTZXAiLCJPY3QiLCJOb3YiLCJEZWMiXX0pO3ZhciBQQT0iJVktJW0tJWRUJUg6JU06JVMuJUxaIixJQT1EYXRlLnByb3RvdHlwZS50b0lTT1N0cmluZz9mdW5jdGlvbiBOQSh0KXtyZXR1cm4gdC50b0lTT1N0cmluZygpfTpfVChQQSksT0E9K25ldyBEYXRlKCIyMDAwLTAxLTAxVDAwOjAwOjAwLjAwMFoiKT9mdW5jdGlvbiBSQSh0KXt2YXIgZT1uZXcgRGF0ZSh0KTtyZXR1cm4gaXNOYU4oZSk/bnVsbDplfTp5VChQQSksekE9MzE1MzZlNjtmdW5jdGlvbiBEQSh0KXtyZXR1cm4gbmV3IERhdGUodCl9ZnVuY3Rpb24gQkEodCl7cmV0dXJuIHQgaW5zdGFuY2VvZiBEYXRlPyt0OituZXcgRGF0ZSgrdCl9ZnVuY3Rpb24gSEEodCxlLG4saSxyLG8sYSxzLGwpe3ZhciBjPU5NKFRNLFRNKSx1PWMuaW52ZXJ0LGg9Yy5kb21haW4sZD1sKCIuJUwiKSxwPWwoIjolUyIpLGY9bCgiJUk6JU0iKSxtPWwoIiVJICVwIiksZz1sKCIlYSAlZCIpLF89bCgiJWIgJWQiKSx5PWwoIiVCIiksdj1sKCIlWSIpLGI9W1thLDEsMWUzXSxbYSw1LDVlM10sW2EsMTUsMTVlM10sW2EsMzAsM2U0XSxbbywxLDZlNF0sW28sNSwzZTVdLFtvLDE1LDllNV0sW28sMzAsMThlNV0sW3IsMSwzNmU1XSxbciwzLDEwOGU1XSxbciw2LDIxNmU1XSxbciwxMiw0MzJlNV0sW2ksMSw4NjRlNV0sW2ksMiwxNzI4ZTVdLFtuLDEsNjA0OGU1XSxbZSwxLDI1OTJlNl0sW2UsMyw3Nzc2ZTZdLFt0LDEsekFdXTtmdW5jdGlvbiB4KHMpe3JldHVybihhKHMpPHM/ZDpvKHMpPHM/cDpyKHMpPHM/ZjppKHMpPHM/bTplKHMpPHM/bihzKTxzP2c6Xzp0KHMpPHM/eTp2KShzKX1mdW5jdGlvbiB3KGUsbixpLHIpe2lmKG51bGw9PWUmJihlPTEwKSwibnVtYmVyIj09dHlwZW9mIGUpe3ZhciBvPU1hdGguYWJzKGktbikvZSxhPXhsKChmdW5jdGlvbih0KXtyZXR1cm4gdFsyXX0pKS5yaWdodChiLG8pO2E9PT1iLmxlbmd0aD8ocj1qbChuL3pBLGkvekEsZSksZT10KTphPyhyPShhPWJbby9iW2EtMV1bMl08YlthXVsyXS9vP2EtMTphXSlbMV0sZT1hWzBdKToocj1NYXRoLm1heChqbChuLGksZSksMSksZT1zKX1yZXR1cm4gbnVsbD09cj9lOmUuZXZlcnkocil9cmV0dXJuIGMuaW52ZXJ0PWZ1bmN0aW9uKHQpe3JldHVybiBuZXcgRGF0ZSh1KHQpKX0sYy5kb21haW49ZnVuY3Rpb24odCl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/aChfTS5jYWxsKHQsQkEpKTpoKCkubWFwKERBKX0sYy50aWNrcz1mdW5jdGlvbih0LGUpe3ZhciBuLGk9aCgpLHI9aVswXSxvPWlbaS5sZW5ndGgtMV0sYT1vPHI7cmV0dXJuIGEmJihuPXIscj1vLG89biksbj0obj13KHQscixvLGUpKT9uLnJhbmdlKHIsbysxKTpbXSxhP24ucmV2ZXJzZSgpOm59LGMudGlja0Zvcm1hdD1mdW5jdGlvbih0LGUpe3JldHVybiBudWxsPT1lP3g6bChlKX0sYy5uaWNlPWZ1bmN0aW9uKHQsZSl7dmFyIG49aCgpO3JldHVybih0PXcodCxuWzBdLG5bbi5sZW5ndGgtMV0sZSkpP2goRE0obix0KSk6Y30sYy5jb3B5PWZ1bmN0aW9uKCl7cmV0dXJuIFBNKGMsSEEodCxlLG4saSxyLG8sYSxzLGwpKX0sY31mdW5jdGlvbiBGQSgpe3JldHVybiBmTS5hcHBseShIQShERSxSRSx4RSx5RSxnRSxmRSxkRSxvRSxtVCkuZG9tYWluKFtuZXcgRGF0ZSgyZTMsMCwxKSxuZXcgRGF0ZSgyZTMsMCwyKV0pLGFyZ3VtZW50cyl9ZnVuY3Rpb24gVkEoKXt2YXIgdCxlLG4saSxyLG89MCxhPTEscz1UTSxsPSExO2Z1bmN0aW9uIGMoZSl7cmV0dXJuIGlzTmFOKGU9K2UpP3I6cygwPT09bj8uNTooZT0oaShlKS10KSpuLGw/TWF0aC5tYXgoMCxNYXRoLm1pbigxLGUpKTplKSl9cmV0dXJuIGMuZG9tYWluPWZ1bmN0aW9uKHIpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyh0PWkobz0rclswXSksZT1pKGE9K3JbMV0pLG49dD09PWU/MDoxLyhlLXQpLGMpOltvLGFdfSxjLmNsYW1wPWZ1bmN0aW9uKHQpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyhsPSEhdCxjKTpsfSxjLmludGVycG9sYXRvcj1mdW5jdGlvbih0KXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8ocz10LGMpOnN9LGMudW5rbm93bj1mdW5jdGlvbih0KXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8ocj10LGMpOnJ9LGZ1bmN0aW9uKHIpe3JldHVybiBpPXIsdD1yKG8pLGU9cihhKSxuPXQ9PT1lPzA6MS8oZS10KSxjfX1mdW5jdGlvbiBqQSh0LGUpe3JldHVybiBlLmRvbWFpbih0LmRvbWFpbigpKS5pbnRlcnBvbGF0b3IodC5pbnRlcnBvbGF0b3IoKSkuY2xhbXAodC5jbGFtcCgpKS51bmtub3duKHQudW5rbm93bigpKX1mdW5jdGlvbiBVQSgpe3ZhciB0PUpNKFZBKCkpO3JldHVybiB0LmNvcHk9ZnVuY3Rpb24oKXtyZXR1cm4gakEodCxVQSgpKS5leHBvbmVudCh0LmV4cG9uZW50KCkpfSxtTS5hcHBseSh0LGFyZ3VtZW50cyl9ZnVuY3Rpb24gR0EoKXt2YXIgdCxlLG4saSxyLG8sYSxzPTAsbD0uNSxjPTEsdT1UTSxoPSExO2Z1bmN0aW9uIGQodCl7cmV0dXJuIGlzTmFOKHQ9K3QpP2E6KHQ9LjUrKCh0PStvKHQpKS1lKSoodDxlP2k6ciksdShoP01hdGgubWF4KDAsTWF0aC5taW4oMSx0KSk6dCkpfXJldHVybiBkLmRvbWFpbj1mdW5jdGlvbihhKXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8odD1vKHM9K2FbMF0pLGU9byhsPSthWzFdKSxuPW8oYz0rYVsyXSksaT10PT09ZT8wOi41LyhlLXQpLHI9ZT09PW4/MDouNS8obi1lKSxkKTpbcyxsLGNdfSxkLmNsYW1wPWZ1bmN0aW9uKHQpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyhoPSEhdCxkKTpofSxkLmludGVycG9sYXRvcj1mdW5jdGlvbih0KXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8odT10LGQpOnV9LGQudW5rbm93bj1mdW5jdGlvbih0KXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8oYT10LGQpOmF9LGZ1bmN0aW9uKGEpe3JldHVybiBvPWEsdD1hKHMpLGU9YShsKSxuPWEoYyksaT10PT09ZT8wOi41LyhlLXQpLHI9ZT09PW4/MDouNS8obi1lKSxkfX1mdW5jdGlvbiBXQSgpe3ZhciB0PUpNKEdBKCkpO3JldHVybiB0LmNvcHk9ZnVuY3Rpb24oKXtyZXR1cm4gakEodCxXQSgpKS5leHBvbmVudCh0LmV4cG9uZW50KCkpfSxtTS5hcHBseSh0LGFyZ3VtZW50cyl9ZnVuY3Rpb24gcUEodCl7Zm9yKHZhciBlPXQubGVuZ3RoLzZ8MCxuPW5ldyBBcnJheShlKSxpPTA7aTxlOyluW2ldPSIjIit0LnNsaWNlKDYqaSw2KisraSk7cmV0dXJuIG59dmFyIFlBPXFBKCIxZjc3YjRmZjdmMGUyY2EwMmNkNjI3Mjg5NDY3YmQ4YzU2NGJlMzc3YzI3ZjdmN2ZiY2JkMjIxN2JlY2YiKSxYQT1xQSgiN2ZjOTdmYmVhZWQ0ZmRjMDg2ZmZmZjk5Mzg2Y2IwZjAwMjdmYmY1YjE3NjY2NjY2IiksJEE9cUEoIjFiOWU3N2Q5NWYwMjc1NzBiM2U3Mjk4YTY2YTYxZWU2YWIwMmE2NzYxZDY2NjY2NiIpLEtBPXFBKCJhNmNlZTMxZjc4YjRiMmRmOGEzM2EwMmNmYjlhOTllMzFhMWNmZGJmNmZmZjdmMDBjYWIyZDY2YTNkOWFmZmZmOTliMTU5MjgiKSxaQT1xQSgiZmJiNGFlYjNjZGUzY2NlYmM1ZGVjYmU0ZmVkOWE2ZmZmZmNjZTVkOGJkZmRkYWVjZjJmMmYyIiksSkE9cUEoImIzZTJjZGZkY2RhY2NiZDVlOGY0Y2FlNGU2ZjVjOWZmZjJhZWYxZTJjY2NjY2NjYyIpLFFBPXFBKCJlNDFhMWMzNzdlYjg0ZGFmNGE5ODRlYTNmZjdmMDBmZmZmMzNhNjU2MjhmNzgxYmY5OTk5OTkiKSx0Qz1xQSgiNjZjMmE1ZmM4ZDYyOGRhMGNiZTc4YWMzYTZkODU0ZmZkOTJmZTVjNDk0YjNiM2IzIiksZUM9cUEoIjhkZDNjN2ZmZmZiM2JlYmFkYWZiODA3MjgwYjFkM2ZkYjQ2MmIzZGU2OWZjY2RlNWQ5ZDlkOWJjODBiZGNjZWJjNWZmZWQ2ZiIpLG5DPXFBKCI0ZTc5YTdmMjhlMmNlMTU3NTk3NmI3YjI1OWExNGZlZGM5NDlhZjdhYTFmZjlkYTc5Yzc1NWZiYWIwYWIiKTtmdW5jdGlvbiBpQyh0KXtyZXR1cm4gSWQodFt0Lmxlbmd0aC0xXSl9dmFyIHJDPW5ldyBBcnJheSgzKS5jb25jYXQoImQ4YjM2NWY1ZjVmNTVhYjRhYyIsImE2NjExYWRmYzI3ZDgwY2RjMTAxODU3MSIsImE2NjExYWRmYzI3ZGY1ZjVmNTgwY2RjMTAxODU3MSIsIjhjNTEwYWQ4YjM2NWY2ZThjM2M3ZWFlNTVhYjRhYzAxNjY1ZSIsIjhjNTEwYWQ4YjM2NWY2ZThjM2Y1ZjVmNWM3ZWFlNTVhYjRhYzAxNjY1ZSIsIjhjNTEwYWJmODEyZGRmYzI3ZGY2ZThjM2M3ZWFlNTgwY2RjMTM1OTc4ZjAxNjY1ZSIsIjhjNTEwYWJmODEyZGRmYzI3ZGY2ZThjM2Y1ZjVmNWM3ZWFlNTgwY2RjMTM1OTc4ZjAxNjY1ZSIsIjU0MzAwNThjNTEwYWJmODEyZGRmYzI3ZGY2ZThjM2M3ZWFlNTgwY2RjMTM1OTc4ZjAxNjY1ZTAwM2MzMCIsIjU0MzAwNThjNTEwYWJmODEyZGRmYzI3ZGY2ZThjM2Y1ZjVmNWM3ZWFlNTgwY2RjMTM1OTc4ZjAxNjY1ZTAwM2MzMCIpLm1hcChxQSksb0M9aUMockMpLGFDPW5ldyBBcnJheSgzKS5jb25jYXQoImFmOGRjM2Y3ZjdmNzdmYmY3YiIsIjdiMzI5NGMyYTVjZmE2ZGJhMDAwODgzNyIsIjdiMzI5NGMyYTVjZmY3ZjdmN2E2ZGJhMDAwODgzNyIsIjc2MmE4M2FmOGRjM2U3ZDRlOGQ5ZjBkMzdmYmY3YjFiNzgzNyIsIjc2MmE4M2FmOGRjM2U3ZDRlOGY3ZjdmN2Q5ZjBkMzdmYmY3YjFiNzgzNyIsIjc2MmE4Mzk5NzBhYmMyYTVjZmU3ZDRlOGQ5ZjBkM2E2ZGJhMDVhYWU2MTFiNzgzNyIsIjc2MmE4Mzk5NzBhYmMyYTVjZmU3ZDRlOGY3ZjdmN2Q5ZjBkM2E2ZGJhMDVhYWU2MTFiNzgzNyIsIjQwMDA0Yjc2MmE4Mzk5NzBhYmMyYTVjZmU3ZDRlOGQ5ZjBkM2E2ZGJhMDVhYWU2MTFiNzgzNzAwNDQxYiIsIjQwMDA0Yjc2MmE4Mzk5NzBhYmMyYTVjZmU3ZDRlOGY3ZjdmN2Q5ZjBkM2E2ZGJhMDVhYWU2MTFiNzgzNzAwNDQxYiIpLm1hcChxQSksc0M9aUMoYUMpLGxDPW5ldyBBcnJheSgzKS5jb25jYXQoImU5YTNjOWY3ZjdmN2ExZDc2YSIsImQwMWM4YmYxYjZkYWI4ZTE4NjRkYWMyNiIsImQwMWM4YmYxYjZkYWY3ZjdmN2I4ZTE4NjRkYWMyNiIsImM1MWI3ZGU5YTNjOWZkZTBlZmU2ZjVkMGExZDc2YTRkOTIyMSIsImM1MWI3ZGU5YTNjOWZkZTBlZmY3ZjdmN2U2ZjVkMGExZDc2YTRkOTIyMSIsImM1MWI3ZGRlNzdhZWYxYjZkYWZkZTBlZmU2ZjVkMGI4ZTE4NjdmYmM0MTRkOTIyMSIsImM1MWI3ZGRlNzdhZWYxYjZkYWZkZTBlZmY3ZjdmN2U2ZjVkMGI4ZTE4NjdmYmM0MTRkOTIyMSIsIjhlMDE1MmM1MWI3ZGRlNzdhZWYxYjZkYWZkZTBlZmU2ZjVkMGI4ZTE4NjdmYmM0MTRkOTIyMTI3NjQxOSIsIjhlMDE1MmM1MWI3ZGRlNzdhZWYxYjZkYWZkZTBlZmY3ZjdmN2U2ZjVkMGI4ZTE4NjdmYmM0MTRkOTIyMTI3NjQxOSIpLm1hcChxQSksY0M9aUMobEMpLHVDPW5ldyBBcnJheSgzKS5jb25jYXQoIjk5OGVjM2Y3ZjdmN2YxYTM0MCIsIjVlM2M5OWIyYWJkMmZkYjg2M2U2NjEwMSIsIjVlM2M5OWIyYWJkMmY3ZjdmN2ZkYjg2M2U2NjEwMSIsIjU0Mjc4ODk5OGVjM2Q4ZGFlYmZlZTBiNmYxYTM0MGIzNTgwNiIsIjU0Mjc4ODk5OGVjM2Q4ZGFlYmY3ZjdmN2ZlZTBiNmYxYTM0MGIzNTgwNiIsIjU0Mjc4ODgwNzNhY2IyYWJkMmQ4ZGFlYmZlZTBiNmZkYjg2M2UwODIxNGIzNTgwNiIsIjU0Mjc4ODgwNzNhY2IyYWJkMmQ4ZGFlYmY3ZjdmN2ZlZTBiNmZkYjg2M2UwODIxNGIzNTgwNiIsIjJkMDA0YjU0Mjc4ODgwNzNhY2IyYWJkMmQ4ZGFlYmZlZTBiNmZkYjg2M2UwODIxNGIzNTgwNjdmM2IwOCIsIjJkMDA0YjU0Mjc4ODgwNzNhY2IyYWJkMmQ4ZGFlYmY3ZjdmN2ZlZTBiNmZkYjg2M2UwODIxNGIzNTgwNjdmM2IwOCIpLm1hcChxQSksaEM9aUModUMpLGRDPW5ldyBBcnJheSgzKS5jb25jYXQoImVmOGE2MmY3ZjdmNzY3YTljZiIsImNhMDAyMGY0YTU4MjkyYzVkZTA1NzFiMCIsImNhMDAyMGY0YTU4MmY3ZjdmNzkyYzVkZTA1NzFiMCIsImIyMTgyYmVmOGE2MmZkZGJjN2QxZTVmMDY3YTljZjIxNjZhYyIsImIyMTgyYmVmOGE2MmZkZGJjN2Y3ZjdmN2QxZTVmMDY3YTljZjIxNjZhYyIsImIyMTgyYmQ2NjA0ZGY0YTU4MmZkZGJjN2QxZTVmMDkyYzVkZTQzOTNjMzIxNjZhYyIsImIyMTgyYmQ2NjA0ZGY0YTU4MmZkZGJjN2Y3ZjdmN2QxZTVmMDkyYzVkZTQzOTNjMzIxNjZhYyIsIjY3MDAxZmIyMTgyYmQ2NjA0ZGY0YTU4MmZkZGJjN2QxZTVmMDkyYzVkZTQzOTNjMzIxNjZhYzA1MzA2MSIsIjY3MDAxZmIyMTgyYmQ2NjA0ZGY0YTU4MmZkZGJjN2Y3ZjdmN2QxZTVmMDkyYzVkZTQzOTNjMzIxNjZhYzA1MzA2MSIpLm1hcChxQSkscEM9aUMoZEMpLGZDPW5ldyBBcnJheSgzKS5jb25jYXQoImVmOGE2MmZmZmZmZjk5OTk5OSIsImNhMDAyMGY0YTU4MmJhYmFiYTQwNDA0MCIsImNhMDAyMGY0YTU4MmZmZmZmZmJhYmFiYTQwNDA0MCIsImIyMTgyYmVmOGE2MmZkZGJjN2UwZTBlMDk5OTk5OTRkNGQ0ZCIsImIyMTgyYmVmOGE2MmZkZGJjN2ZmZmZmZmUwZTBlMDk5OTk5OTRkNGQ0ZCIsImIyMTgyYmQ2NjA0ZGY0YTU4MmZkZGJjN2UwZTBlMGJhYmFiYTg3ODc4NzRkNGQ0ZCIsImIyMTgyYmQ2NjA0ZGY0YTU4MmZkZGJjN2ZmZmZmZmUwZTBlMGJhYmFiYTg3ODc4NzRkNGQ0ZCIsIjY3MDAxZmIyMTgyYmQ2NjA0ZGY0YTU4MmZkZGJjN2UwZTBlMGJhYmFiYTg3ODc4NzRkNGQ0ZDFhMWExYSIsIjY3MDAxZmIyMTgyYmQ2NjA0ZGY0YTU4MmZkZGJjN2ZmZmZmZmUwZTBlMGJhYmFiYTg3ODc4NzRkNGQ0ZDFhMWExYSIpLm1hcChxQSksbUM9aUMoZkMpLGdDPW5ldyBBcnJheSgzKS5jb25jYXQoImZjOGQ1OWZmZmZiZjkxYmZkYiIsImQ3MTkxY2ZkYWU2MWFiZDllOTJjN2JiNiIsImQ3MTkxY2ZkYWU2MWZmZmZiZmFiZDllOTJjN2JiNiIsImQ3MzAyN2ZjOGQ1OWZlZTA5MGUwZjNmODkxYmZkYjQ1NzViNCIsImQ3MzAyN2ZjOGQ1OWZlZTA5MGZmZmZiZmUwZjNmODkxYmZkYjQ1NzViNCIsImQ3MzAyN2Y0NmQ0M2ZkYWU2MWZlZTA5MGUwZjNmOGFiZDllOTc0YWRkMTQ1NzViNCIsImQ3MzAyN2Y0NmQ0M2ZkYWU2MWZlZTA5MGZmZmZiZmUwZjNmOGFiZDllOTc0YWRkMTQ1NzViNCIsImE1MDAyNmQ3MzAyN2Y0NmQ0M2ZkYWU2MWZlZTA5MGUwZjNmOGFiZDllOTc0YWRkMTQ1NzViNDMxMzY5NSIsImE1MDAyNmQ3MzAyN2Y0NmQ0M2ZkYWU2MWZlZTA5MGZmZmZiZmUwZjNmOGFiZDllOTc0YWRkMTQ1NzViNDMxMzY5NSIpLm1hcChxQSksX0M9aUMoZ0MpLHlDPW5ldyBBcnJheSgzKS5jb25jYXQoImZjOGQ1OWZmZmZiZjkxY2Y2MCIsImQ3MTkxY2ZkYWU2MWE2ZDk2YTFhOTY0MSIsImQ3MTkxY2ZkYWU2MWZmZmZiZmE2ZDk2YTFhOTY0MSIsImQ3MzAyN2ZjOGQ1OWZlZTA4YmQ5ZWY4YjkxY2Y2MDFhOTg1MCIsImQ3MzAyN2ZjOGQ1OWZlZTA4YmZmZmZiZmQ5ZWY4YjkxY2Y2MDFhOTg1MCIsImQ3MzAyN2Y0NmQ0M2ZkYWU2MWZlZTA4YmQ5ZWY4YmE2ZDk2YTY2YmQ2MzFhOTg1MCIsImQ3MzAyN2Y0NmQ0M2ZkYWU2MWZlZTA4YmZmZmZiZmQ5ZWY4YmE2ZDk2YTY2YmQ2MzFhOTg1MCIsImE1MDAyNmQ3MzAyN2Y0NmQ0M2ZkYWU2MWZlZTA4YmQ5ZWY4YmE2ZDk2YTY2YmQ2MzFhOTg1MDAwNjgzNyIsImE1MDAyNmQ3MzAyN2Y0NmQ0M2ZkYWU2MWZlZTA4YmZmZmZiZmQ5ZWY4YmE2ZDk2YTY2YmQ2MzFhOTg1MDAwNjgzNyIpLm1hcChxQSksdkM9aUMoeUMpLGJDPW5ldyBBcnJheSgzKS5jb25jYXQoImZjOGQ1OWZmZmZiZjk5ZDU5NCIsImQ3MTkxY2ZkYWU2MWFiZGRhNDJiODNiYSIsImQ3MTkxY2ZkYWU2MWZmZmZiZmFiZGRhNDJiODNiYSIsImQ1M2U0ZmZjOGQ1OWZlZTA4YmU2ZjU5ODk5ZDU5NDMyODhiZCIsImQ1M2U0ZmZjOGQ1OWZlZTA4YmZmZmZiZmU2ZjU5ODk5ZDU5NDMyODhiZCIsImQ1M2U0ZmY0NmQ0M2ZkYWU2MWZlZTA4YmU2ZjU5OGFiZGRhNDY2YzJhNTMyODhiZCIsImQ1M2U0ZmY0NmQ0M2ZkYWU2MWZlZTA4YmZmZmZiZmU2ZjU5OGFiZGRhNDY2YzJhNTMyODhiZCIsIjllMDE0MmQ1M2U0ZmY0NmQ0M2ZkYWU2MWZlZTA4YmU2ZjU5OGFiZGRhNDY2YzJhNTMyODhiZDVlNGZhMiIsIjllMDE0MmQ1M2U0ZmY0NmQ0M2ZkYWU2MWZlZTA4YmZmZmZiZmU2ZjU5OGFiZGRhNDY2YzJhNTMyODhiZDVlNGZhMiIpLm1hcChxQSkseEM9aUMoYkMpLHdDPW5ldyBBcnJheSgzKS5jb25jYXQoImU1ZjVmOTk5ZDhjOTJjYTI1ZiIsImVkZjhmYmIyZTJlMjY2YzJhNDIzOGI0NSIsImVkZjhmYmIyZTJlMjY2YzJhNDJjYTI1ZjAwNmQyYyIsImVkZjhmYmNjZWNlNjk5ZDhjOTY2YzJhNDJjYTI1ZjAwNmQyYyIsImVkZjhmYmNjZWNlNjk5ZDhjOTY2YzJhNDQxYWU3NjIzOGI0NTAwNTgyNCIsImY3ZmNmZGU1ZjVmOWNjZWNlNjk5ZDhjOTY2YzJhNDQxYWU3NjIzOGI0NTAwNTgyNCIsImY3ZmNmZGU1ZjVmOWNjZWNlNjk5ZDhjOTY2YzJhNDQxYWU3NjIzOGI0NTAwNmQyYzAwNDQxYiIpLm1hcChxQSksU0M9aUMod0MpLE1DPW5ldyBBcnJheSgzKS5jb25jYXQoImUwZWNmNDllYmNkYTg4NTZhNyIsImVkZjhmYmIzY2RlMzhjOTZjNjg4NDE5ZCIsImVkZjhmYmIzY2RlMzhjOTZjNjg4NTZhNzgxMGY3YyIsImVkZjhmYmJmZDNlNjllYmNkYThjOTZjNjg4NTZhNzgxMGY3YyIsImVkZjhmYmJmZDNlNjllYmNkYThjOTZjNjhjNmJiMTg4NDE5ZDZlMDE2YiIsImY3ZmNmZGUwZWNmNGJmZDNlNjllYmNkYThjOTZjNjhjNmJiMTg4NDE5ZDZlMDE2YiIsImY3ZmNmZGUwZWNmNGJmZDNlNjllYmNkYThjOTZjNjhjNmJiMTg4NDE5ZDgxMGY3YzRkMDA0YiIpLm1hcChxQSksRUM9aUMoTUMpLFRDPW5ldyBBcnJheSgzKS5jb25jYXQoImUwZjNkYmE4ZGRiNTQzYTJjYSIsImYwZjllOGJhZTRiYzdiY2NjNDJiOGNiZSIsImYwZjllOGJhZTRiYzdiY2NjNDQzYTJjYTA4NjhhYyIsImYwZjllOGNjZWJjNWE4ZGRiNTdiY2NjNDQzYTJjYTA4NjhhYyIsImYwZjllOGNjZWJjNWE4ZGRiNTdiY2NjNDRlYjNkMzJiOGNiZTA4NTg5ZSIsImY3ZmNmMGUwZjNkYmNjZWJjNWE4ZGRiNTdiY2NjNDRlYjNkMzJiOGNiZTA4NTg5ZSIsImY3ZmNmMGUwZjNkYmNjZWJjNWE4ZGRiNTdiY2NjNDRlYjNkMzJiOGNiZTA4NjhhYzA4NDA4MSIpLm1hcChxQSksQUM9aUMoVEMpLENDPW5ldyBBcnJheSgzKS5jb25jYXQoImZlZThjOGZkYmI4NGUzNGEzMyIsImZlZjBkOWZkY2M4YWZjOGQ1OWQ3MzAxZiIsImZlZjBkOWZkY2M4YWZjOGQ1OWUzNGEzM2IzMDAwMCIsImZlZjBkOWZkZDQ5ZWZkYmI4NGZjOGQ1OWUzNGEzM2IzMDAwMCIsImZlZjBkOWZkZDQ5ZWZkYmI4NGZjOGQ1OWVmNjU0OGQ3MzAxZjk5MDAwMCIsImZmZjdlY2ZlZThjOGZkZDQ5ZWZkYmI4NGZjOGQ1OWVmNjU0OGQ3MzAxZjk5MDAwMCIsImZmZjdlY2ZlZThjOGZkZDQ5ZWZkYmI4NGZjOGQ1OWVmNjU0OGQ3MzAxZmIzMDAwMDdmMDAwMCIpLm1hcChxQSksa0M9aUMoQ0MpLExDPW5ldyBBcnJheSgzKS5jb25jYXQoImVjZTJmMGE2YmRkYjFjOTA5OSIsImY2ZWZmN2JkYzllMTY3YTljZjAyODE4YSIsImY2ZWZmN2JkYzllMTY3YTljZjFjOTA5OTAxNmM1OSIsImY2ZWZmN2QwZDFlNmE2YmRkYjY3YTljZjFjOTA5OTAxNmM1OSIsImY2ZWZmN2QwZDFlNmE2YmRkYjY3YTljZjM2OTBjMDAyODE4YTAxNjQ1MCIsImZmZjdmYmVjZTJmMGQwZDFlNmE2YmRkYjY3YTljZjM2OTBjMDAyODE4YTAxNjQ1MCIsImZmZjdmYmVjZTJmMGQwZDFlNmE2YmRkYjY3YTljZjM2OTBjMDAyODE4YTAxNmM1OTAxNDYzNiIpLm1hcChxQSksUEM9aUMoTEMpLElDPW5ldyBBcnJheSgzKS5jb25jYXQoImVjZTdmMmE2YmRkYjJiOGNiZSIsImYxZWVmNmJkYzllMTc0YTljZjA1NzBiMCIsImYxZWVmNmJkYzllMTc0YTljZjJiOGNiZTA0NWE4ZCIsImYxZWVmNmQwZDFlNmE2YmRkYjc0YTljZjJiOGNiZTA0NWE4ZCIsImYxZWVmNmQwZDFlNmE2YmRkYjc0YTljZjM2OTBjMDA1NzBiMDAzNGU3YiIsImZmZjdmYmVjZTdmMmQwZDFlNmE2YmRkYjc0YTljZjM2OTBjMDA1NzBiMDAzNGU3YiIsImZmZjdmYmVjZTdmMmQwZDFlNmE2YmRkYjc0YTljZjM2OTBjMDA1NzBiMDA0NWE4ZDAyMzg1OCIpLm1hcChxQSksTkM9aUMoSUMpLE9DPW5ldyBBcnJheSgzKS5jb25jYXQoImU3ZTFlZmM5OTRjN2RkMWM3NyIsImYxZWVmNmQ3YjVkOGRmNjViMGNlMTI1NiIsImYxZWVmNmQ3YjVkOGRmNjViMGRkMWM3Nzk4MDA0MyIsImYxZWVmNmQ0YjlkYWM5OTRjN2RmNjViMGRkMWM3Nzk4MDA0MyIsImYxZWVmNmQ0YjlkYWM5OTRjN2RmNjViMGU3Mjk4YWNlMTI1NjkxMDAzZiIsImY3ZjRmOWU3ZTFlZmQ0YjlkYWM5OTRjN2RmNjViMGU3Mjk4YWNlMTI1NjkxMDAzZiIsImY3ZjRmOWU3ZTFlZmQ0YjlkYWM5OTRjN2RmNjViMGU3Mjk4YWNlMTI1Njk4MDA0MzY3MDAxZiIpLm1hcChxQSksUkM9aUMoT0MpLHpDPW5ldyBBcnJheSgzKS5jb25jYXQoImZkZTBkZGZhOWZiNWM1MWI4YSIsImZlZWJlMmZiYjRiOWY3NjhhMWFlMDE3ZSIsImZlZWJlMmZiYjRiOWY3NjhhMWM1MWI4YTdhMDE3NyIsImZlZWJlMmZjYzVjMGZhOWZiNWY3NjhhMWM1MWI4YTdhMDE3NyIsImZlZWJlMmZjYzVjMGZhOWZiNWY3NjhhMWRkMzQ5N2FlMDE3ZTdhMDE3NyIsImZmZjdmM2ZkZTBkZGZjYzVjMGZhOWZiNWY3NjhhMWRkMzQ5N2FlMDE3ZTdhMDE3NyIsImZmZjdmM2ZkZTBkZGZjYzVjMGZhOWZiNWY3NjhhMWRkMzQ5N2FlMDE3ZTdhMDE3NzQ5MDA2YSIpLm1hcChxQSksREM9aUMoekMpLEJDPW5ldyBBcnJheSgzKS5jb25jYXQoImVkZjhiMTdmY2RiYjJjN2ZiOCIsImZmZmZjY2ExZGFiNDQxYjZjNDIyNWVhOCIsImZmZmZjY2ExZGFiNDQxYjZjNDJjN2ZiODI1MzQ5NCIsImZmZmZjY2M3ZTliNDdmY2RiYjQxYjZjNDJjN2ZiODI1MzQ5NCIsImZmZmZjY2M3ZTliNDdmY2RiYjQxYjZjNDFkOTFjMDIyNWVhODBjMmM4NCIsImZmZmZkOWVkZjhiMWM3ZTliNDdmY2RiYjQxYjZjNDFkOTFjMDIyNWVhODBjMmM4NCIsImZmZmZkOWVkZjhiMWM3ZTliNDdmY2RiYjQxYjZjNDFkOTFjMDIyNWVhODI1MzQ5NDA4MWQ1OCIpLm1hcChxQSksSEM9aUMoQkMpLEZDPW5ldyBBcnJheSgzKS5jb25jYXQoImY3ZmNiOWFkZGQ4ZTMxYTM1NCIsImZmZmZjY2MyZTY5OTc4YzY3OTIzODQ0MyIsImZmZmZjY2MyZTY5OTc4YzY3OTMxYTM1NDAwNjgzNyIsImZmZmZjY2Q5ZjBhM2FkZGQ4ZTc4YzY3OTMxYTM1NDAwNjgzNyIsImZmZmZjY2Q5ZjBhM2FkZGQ4ZTc4YzY3OTQxYWI1ZDIzODQ0MzAwNWEzMiIsImZmZmZlNWY3ZmNiOWQ5ZjBhM2FkZGQ4ZTc4YzY3OTQxYWI1ZDIzODQ0MzAwNWEzMiIsImZmZmZlNWY3ZmNiOWQ5ZjBhM2FkZGQ4ZTc4YzY3OTQxYWI1ZDIzODQ0MzAwNjgzNzAwNDUyOSIpLm1hcChxQSksVkM9aUMoRkMpLGpDPW5ldyBBcnJheSgzKS5jb25jYXQoImZmZjdiY2ZlYzQ0ZmQ5NWYwZSIsImZmZmZkNGZlZDk4ZWZlOTkyOWNjNGMwMiIsImZmZmZkNGZlZDk4ZWZlOTkyOWQ5NWYwZTk5MzQwNCIsImZmZmZkNGZlZTM5MWZlYzQ0ZmZlOTkyOWQ5NWYwZTk5MzQwNCIsImZmZmZkNGZlZTM5MWZlYzQ0ZmZlOTkyOWVjNzAxNGNjNGMwMjhjMmQwNCIsImZmZmZlNWZmZjdiY2ZlZTM5MWZlYzQ0ZmZlOTkyOWVjNzAxNGNjNGMwMjhjMmQwNCIsImZmZmZlNWZmZjdiY2ZlZTM5MWZlYzQ0ZmZlOTkyOWVjNzAxNGNjNGMwMjk5MzQwNDY2MjUwNiIpLm1hcChxQSksVUM9aUMoakMpLEdDPW5ldyBBcnJheSgzKS5jb25jYXQoImZmZWRhMGZlYjI0Y2YwM2IyMCIsImZmZmZiMmZlY2M1Y2ZkOGQzY2UzMWExYyIsImZmZmZiMmZlY2M1Y2ZkOGQzY2YwM2IyMGJkMDAyNiIsImZmZmZiMmZlZDk3NmZlYjI0Y2ZkOGQzY2YwM2IyMGJkMDAyNiIsImZmZmZiMmZlZDk3NmZlYjI0Y2ZkOGQzY2ZjNGUyYWUzMWExY2IxMDAyNiIsImZmZmZjY2ZmZWRhMGZlZDk3NmZlYjI0Y2ZkOGQzY2ZjNGUyYWUzMWExY2IxMDAyNiIsImZmZmZjY2ZmZWRhMGZlZDk3NmZlYjI0Y2ZkOGQzY2ZjNGUyYWUzMWExY2JkMDAyNjgwMDAyNiIpLm1hcChxQSksV0M9aUMoR0MpLHFDPW5ldyBBcnJheSgzKS5jb25jYXQoImRlZWJmNzllY2FlMTMxODJiZCIsImVmZjNmZmJkZDdlNzZiYWVkNjIxNzFiNSIsImVmZjNmZmJkZDdlNzZiYWVkNjMxODJiZDA4NTE5YyIsImVmZjNmZmM2ZGJlZjllY2FlMTZiYWVkNjMxODJiZDA4NTE5YyIsImVmZjNmZmM2ZGJlZjllY2FlMTZiYWVkNjQyOTJjNjIxNzFiNTA4NDU5NCIsImY3ZmJmZmRlZWJmN2M2ZGJlZjllY2FlMTZiYWVkNjQyOTJjNjIxNzFiNTA4NDU5NCIsImY3ZmJmZmRlZWJmN2M2ZGJlZjllY2FlMTZiYWVkNjQyOTJjNjIxNzFiNTA4NTE5YzA4MzA2YiIpLm1hcChxQSksWUM9aUMocUMpLFhDPW5ldyBBcnJheSgzKS5jb25jYXQoImU1ZjVlMGExZDk5YjMxYTM1NCIsImVkZjhlOWJhZTRiMzc0YzQ3NjIzOGI0NSIsImVkZjhlOWJhZTRiMzc0YzQ3NjMxYTM1NDAwNmQyYyIsImVkZjhlOWM3ZTljMGExZDk5Yjc0YzQ3NjMxYTM1NDAwNmQyYyIsImVkZjhlOWM3ZTljMGExZDk5Yjc0YzQ3NjQxYWI1ZDIzOGI0NTAwNWEzMiIsImY3ZmNmNWU1ZjVlMGM3ZTljMGExZDk5Yjc0YzQ3NjQxYWI1ZDIzOGI0NTAwNWEzMiIsImY3ZmNmNWU1ZjVlMGM3ZTljMGExZDk5Yjc0YzQ3NjQxYWI1ZDIzOGI0NTAwNmQyYzAwNDQxYiIpLm1hcChxQSksJEM9aUMoWEMpLEtDPW5ldyBBcnJheSgzKS5jb25jYXQoImYwZjBmMGJkYmRiZDYzNjM2MyIsImY3ZjdmN2NjY2NjYzk2OTY5NjUyNTI1MiIsImY3ZjdmN2NjY2NjYzk2OTY5NjYzNjM2MzI1MjUyNSIsImY3ZjdmN2Q5ZDlkOWJkYmRiZDk2OTY5NjYzNjM2MzI1MjUyNSIsImY3ZjdmN2Q5ZDlkOWJkYmRiZDk2OTY5NjczNzM3MzUyNTI1MjI1MjUyNSIsImZmZmZmZmYwZjBmMGQ5ZDlkOWJkYmRiZDk2OTY5NjczNzM3MzUyNTI1MjI1MjUyNSIsImZmZmZmZmYwZjBmMGQ5ZDlkOWJkYmRiZDk2OTY5NjczNzM3MzUyNTI1MjI1MjUyNTAwMDAwMCIpLm1hcChxQSksWkM9aUMoS0MpLEpDPW5ldyBBcnJheSgzKS5jb25jYXQoImVmZWRmNWJjYmRkYzc1NmJiMSIsImYyZjBmN2NiYzllMjllOWFjODZhNTFhMyIsImYyZjBmN2NiYzllMjllOWFjODc1NmJiMTU0Mjc4ZiIsImYyZjBmN2RhZGFlYmJjYmRkYzllOWFjODc1NmJiMTU0Mjc4ZiIsImYyZjBmN2RhZGFlYmJjYmRkYzllOWFjODgwN2RiYTZhNTFhMzRhMTQ4NiIsImZjZmJmZGVmZWRmNWRhZGFlYmJjYmRkYzllOWFjODgwN2RiYTZhNTFhMzRhMTQ4NiIsImZjZmJmZGVmZWRmNWRhZGFlYmJjYmRkYzllOWFjODgwN2RiYTZhNTFhMzU0Mjc4ZjNmMDA3ZCIpLm1hcChxQSksUUM9aUMoSkMpLHRrPW5ldyBBcnJheSgzKS5jb25jYXQoImZlZTBkMmZjOTI3MmRlMmQyNiIsImZlZTVkOWZjYWU5MWZiNmE0YWNiMTgxZCIsImZlZTVkOWZjYWU5MWZiNmE0YWRlMmQyNmE1MGYxNSIsImZlZTVkOWZjYmJhMWZjOTI3MmZiNmE0YWRlMmQyNmE1MGYxNSIsImZlZTVkOWZjYmJhMWZjOTI3MmZiNmE0YWVmM2IyY2NiMTgxZDk5MDAwZCIsImZmZjVmMGZlZTBkMmZjYmJhMWZjOTI3MmZiNmE0YWVmM2IyY2NiMTgxZDk5MDAwZCIsImZmZjVmMGZlZTBkMmZjYmJhMWZjOTI3MmZiNmE0YWVmM2IyY2NiMTgxZGE1MGYxNTY3MDAwZCIpLm1hcChxQSksZWs9aUModGspLG5rPW5ldyBBcnJheSgzKS5jb25jYXQoImZlZTZjZWZkYWU2YmU2NTUwZCIsImZlZWRkZWZkYmU4NWZkOGQzY2Q5NDcwMSIsImZlZWRkZWZkYmU4NWZkOGQzY2U2NTUwZGE2MzYwMyIsImZlZWRkZWZkZDBhMmZkYWU2YmZkOGQzY2U2NTUwZGE2MzYwMyIsImZlZWRkZWZkZDBhMmZkYWU2YmZkOGQzY2YxNjkxM2Q5NDgwMThjMmQwNCIsImZmZjVlYmZlZTZjZWZkZDBhMmZkYWU2YmZkOGQzY2YxNjkxM2Q5NDgwMThjMmQwNCIsImZmZjVlYmZlZTZjZWZkZDBhMmZkYWU2YmZkOGQzY2YxNjkxM2Q5NDgwMWE2MzYwMzdmMjcwNCIpLm1hcChxQSksaWs9aUMobmspLHJrPV9wKHhkKDMwMCwuNSwwKSx4ZCgtMjQwLC41LDEpKSxvaz1fcCh4ZCgtMTAwLC43NSwuMzUpLHhkKDgwLDEuNSwuOCkpLGFrPV9wKHhkKDI2MCwuNzUsLjM1KSx4ZCg4MCwxLjUsLjgpKSxzaz14ZCgpLGxrPWpoKCksY2s9TWF0aC5QSS8zLHVrPTIqTWF0aC5QSS8zO2Z1bmN0aW9uIGhrKHQpe3ZhciBlPXQubGVuZ3RoO3JldHVybiBmdW5jdGlvbihuKXtyZXR1cm4gdFtNYXRoLm1heCgwLE1hdGgubWluKGUtMSxNYXRoLmZsb29yKG4qZSkpKV19fXZhciBkaz1oayhxQSgiNDQwMTU0NDQwMjU2NDUwNDU3NDUwNTU5NDYwNzVhNDYwODVjNDYwYTVkNDYwYjVlNDcwZDYwNDcwZTYxNDcxMDYzNDcxMTY0NDcxMzY1NDgxNDY3NDgxNjY4NDgxNzY5NDgxODZhNDgxYTZjNDgxYjZkNDgxYzZlNDgxZDZmNDgxZjcwNDgyMDcxNDgyMTczNDgyMzc0NDgyNDc1NDgyNTc2NDgyNjc3NDgyODc4NDgyOTc5NDcyYTdhNDcyYzdhNDcyZDdiNDcyZTdjNDcyZjdkNDYzMDdlNDYzMjdlNDYzMzdmNDYzNDgwNDUzNTgxNDUzNzgxNDUzODgyNDQzOTgzNDQzYTgzNDQzYjg0NDMzZDg0NDMzZTg1NDIzZjg1NDI0MDg2NDI0MTg2NDE0Mjg3NDE0NDg3NDA0NTg4NDA0Njg4M2Y0Nzg4M2Y0ODg5M2U0OTg5M2U0YTg5M2U0YzhhM2Q0ZDhhM2Q0ZThhM2M0ZjhhM2M1MDhiM2I1MThiM2I1MjhiM2E1MzhiM2E1NDhjMzk1NThjMzk1NjhjMzg1ODhjMzg1OThjMzc1YThjMzc1YjhkMzY1YzhkMzY1ZDhkMzU1ZThkMzU1ZjhkMzQ2MDhkMzQ2MThkMzM2MjhkMzM2MzhkMzI2NDhlMzI2NThlMzE2NjhlMzE2NzhlMzE2ODhlMzA2OThlMzA2YThlMmY2YjhlMmY2YzhlMmU2ZDhlMmU2ZThlMmU2ZjhlMmQ3MDhlMmQ3MThlMmM3MThlMmM3MjhlMmM3MzhlMmI3NDhlMmI3NThlMmE3NjhlMmE3NzhlMmE3ODhlMjk3OThlMjk3YThlMjk3YjhlMjg3YzhlMjg3ZDhlMjc3ZThlMjc3ZjhlMjc4MDhlMjY4MThlMjY4MjhlMjY4MjhlMjU4MzhlMjU4NDhlMjU4NThlMjQ4NjhlMjQ4NzhlMjM4ODhlMjM4OThlMjM4YThkMjI4YjhkMjI4YzhkMjI4ZDhkMjE4ZThkMjE4ZjhkMjE5MDhkMjE5MThjMjA5MjhjMjA5MjhjMjA5MzhjMWY5NDhjMWY5NThiMWY5NjhiMWY5NzhiMWY5ODhiMWY5OThhMWY5YThhMWU5YjhhMWU5Yzg5MWU5ZDg5MWY5ZTg5MWY5Zjg4MWZhMDg4MWZhMTg4MWZhMTg3MWZhMjg3MjBhMzg2MjBhNDg2MjFhNTg1MjFhNjg1MjJhNzg1MjJhODg0MjNhOTgzMjRhYTgzMjVhYjgyMjVhYzgyMjZhZDgxMjdhZDgxMjhhZTgwMjlhZjdmMmFiMDdmMmNiMTdlMmRiMjdkMmViMzdjMmZiNDdjMzFiNTdiMzJiNjdhMzRiNjc5MzViNzc5MzdiODc4MzhiOTc3M2FiYTc2M2JiYjc1M2RiYzc0M2ZiYzczNDBiZDcyNDJiZTcxNDRiZjcwNDZjMDZmNDhjMTZlNGFjMTZkNGNjMjZjNGVjMzZiNTBjNDZhNTJjNTY5NTRjNTY4NTZjNjY3NThjNzY1NWFjODY0NWNjODYzNWVjOTYyNjBjYTYwNjNjYjVmNjVjYjVlNjdjYzVjNjljZDViNmNjZDVhNmVjZTU4NzBjZjU3NzNkMDU2NzVkMDU0NzdkMTUzN2FkMTUxN2NkMjUwN2ZkMzRlODFkMzRkODRkNDRiODZkNTQ5ODlkNTQ4OGJkNjQ2OGVkNjQ1OTBkNzQzOTNkNzQxOTVkODQwOThkODNlOWJkOTNjOWRkOTNiYTBkYTM5YTJkYTM3YTVkYjM2YThkYjM0YWFkYzMyYWRkYzMwYjBkZDJmYjJkZDJkYjVkZTJiYjhkZTI5YmFkZTI4YmRkZjI2YzBkZjI1YzJkZjIzYzVlMDIxYzhlMDIwY2FlMTFmY2RlMTFkZDBlMTFjZDJlMjFiZDVlMjFhZDhlMjE5ZGFlMzE5ZGRlMzE4ZGZlMzE4ZTJlNDE4ZTVlNDE5ZTdlNDE5ZWFlNTFhZWNlNTFiZWZlNTFjZjFlNTFkZjRlNjFlZjZlNjIwZjhlNjIxZmJlNzIzZmRlNzI1IikpLHBrPWhrKHFBKCIwMDAwMDQwMTAwMDUwMTAxMDYwMTAxMDgwMjAxMDkwMjAyMGIwMjAyMGQwMzAzMGYwMzAzMTIwNDA0MTQwNTA0MTYwNjA1MTgwNjA1MWEwNzA2MWMwODA3MWUwOTA3MjAwYTA4MjIwYjA5MjQwYzA5MjYwZDBhMjkwZTBiMmIxMDBiMmQxMTBjMmYxMjBkMzExMzBkMzQxNDBlMzYxNTBlMzgxNjBmM2IxODBmM2QxOTEwM2YxYTEwNDIxYzEwNDQxZDExNDcxZTExNDkyMDExNGIyMTExNGUyMjExNTAyNDEyNTMyNTEyNTUyNzEyNTgyOTExNWEyYTExNWMyYzExNWYyZDExNjEyZjExNjMzMTExNjUzMzEwNjczNDEwNjkzNjEwNmIzODEwNmMzOTBmNmUzYjBmNzAzZDBmNzEzZjBmNzI0MDBmNzQ0MjBmNzU0NDBmNzY0NTEwNzc0NzEwNzg0OTEwNzg0YTEwNzk0YzExN2E0ZTExN2I0ZjEyN2I1MTEyN2M1MjEzN2M1NDEzN2Q1NjE0N2Q1NzE1N2U1OTE1N2U1YTE2N2U1YzE2N2Y1ZDE3N2Y1ZjE4N2Y2MDE4ODA2MjE5ODA2NDFhODA2NTFhODA2NzFiODA2ODFjODE2YTFjODE2YjFkODE2ZDFkODE2ZTFlODE3MDFmODE3MjFmODE3MzIwODE3NTIxODE3NjIxODE3ODIyODE3OTIyODI3YjIzODI3YzIzODI3ZTI0ODI4MDI1ODI4MTI1ODE4MzI2ODE4NDI2ODE4NjI3ODE4ODI3ODE4OTI4ODE4YjI5ODE4YzI5ODE4ZTJhODE5MDJhODE5MTJiODE5MzJiODA5NDJjODA5NjJjODA5ODJkODA5OTJkODA5YjJlN2Y5YzJlN2Y5ZTJmN2ZhMDJmN2ZhMTMwN2VhMzMwN2VhNTMxN2VhNjMxN2RhODMyN2RhYTMzN2RhYjMzN2NhZDM0N2NhZTM0N2JiMDM1N2JiMjM1N2JiMzM2N2FiNTM2N2FiNzM3NzliODM3NzliYTM4NzhiYzM5NzhiZDM5NzdiZjNhNzdjMDNhNzZjMjNiNzVjNDNjNzVjNTNjNzRjNzNkNzNjODNlNzNjYTNlNzJjYzNmNzFjZDQwNzFjZjQwNzBkMDQxNmZkMjQyNmZkMzQzNmVkNTQ0NmRkNjQ1NmNkODQ1NmNkOTQ2NmJkYjQ3NmFkYzQ4NjlkZTQ5NjhkZjRhNjhlMDRjNjdlMjRkNjZlMzRlNjVlNDRmNjRlNTUwNjRlNzUyNjNlODUzNjJlOTU0NjJlYTU2NjFlYjU3NjBlYzU4NjBlZDVhNWZlZTViNWVlZjVkNWVmMDVmNWVmMTYwNWRmMjYyNWRmMjY0NWNmMzY1NWNmNDY3NWNmNDY5NWNmNTZiNWNmNjZjNWNmNjZlNWNmNzcwNWNmNzcyNWNmODc0NWNmODc2NWNmOTc4NWRmOTc5NWRmOTdiNWRmYTdkNWVmYTdmNWVmYTgxNWZmYjgzNWZmYjg1NjBmYjg3NjFmYzg5NjFmYzhhNjJmYzhjNjNmYzhlNjRmYzkwNjVmZDkyNjZmZDk0NjdmZDk2NjhmZDk4NjlmZDlhNmFmZDliNmJmZTlkNmNmZTlmNmRmZWExNmVmZWEzNmZmZWE1NzFmZWE3NzJmZWE5NzNmZWFhNzRmZWFjNzZmZWFlNzdmZWIwNzhmZWIyN2FmZWI0N2JmZWI2N2NmZWI3N2VmZWI5N2ZmZWJiODFmZWJkODJmZWJmODRmZWMxODVmZWMyODdmZWM0ODhmZWM2OGFmZWM4OGNmZWNhOGRmZWNjOGZmZWNkOTBmZWNmOTJmZWQxOTRmZWQzOTVmZWQ1OTdmZWQ3OTlmZWQ4OWFmZGRhOWNmZGRjOWVmZGRlYTBmZGUwYTFmZGUyYTNmZGUzYTVmZGU1YTdmZGU3YTlmZGU5YWFmZGViYWNmY2VjYWVmY2VlYjBmY2YwYjJmY2YyYjRmY2Y0YjZmY2Y2YjhmY2Y3YjlmY2Y5YmJmY2ZiYmRmY2ZkYmYiKSksZms9aGsocUEoIjAwMDAwNDAxMDAwNTAxMDEwNjAxMDEwODAyMDEwYTAyMDIwYzAyMDIwZTAzMDIxMDA0MDMxMjA0MDMxNDA1MDQxNzA2MDQxOTA3MDUxYjA4MDUxZDA5MDYxZjBhMDcyMjBiMDcyNDBjMDgyNjBkMDgyOTBlMDkyYjEwMDkyZDExMGEzMDEyMGEzMjE0MGIzNDE1MGIzNzE2MGIzOTE4MGMzYzE5MGMzZTFiMGM0MTFjMGM0MzFlMGM0NTFmMGM0ODIxMGM0YTIzMGM0YzI0MGM0ZjI2MGM1MTI4MGI1MzI5MGI1NTJiMGI1NzJkMGI1OTJmMGE1YjMxMGE1YzMyMGE1ZTM0MGE1ZjM2MDk2MTM4MDk2MjM5MDk2MzNiMDk2NDNkMDk2NTNlMDk2NjQwMGE2NzQyMGE2ODQ0MGE2ODQ1MGE2OTQ3MGI2YTQ5MGI2YTRhMGM2YjRjMGM2YjRkMGQ2YzRmMGQ2YzUxMGU2YzUyMGU2ZDU0MGY2ZDU1MGY2ZDU3MTA2ZTU5MTA2ZTVhMTE2ZTVjMTI2ZTVkMTI2ZTVmMTM2ZTYxMTM2ZTYyMTQ2ZTY0MTU2ZTY1MTU2ZTY3MTY2ZTY5MTY2ZTZhMTc2ZTZjMTg2ZTZkMTg2ZTZmMTk2ZTcxMTk2ZTcyMWE2ZTc0MWE2ZTc1MWI2ZTc3MWM2ZDc4MWM2ZDdhMWQ2ZDdjMWQ2ZDdkMWU2ZDdmMWU2YzgwMWY2YzgyMjA2Yzg0MjA2Yjg1MjE2Yjg3MjE2Yjg4MjI2YThhMjI2YThjMjM2OThkMjM2OThmMjQ2OTkwMjU2ODkyMjU2ODkzMjY2Nzk1MjY2Nzk3Mjc2Njk4Mjc2NjlhMjg2NTliMjk2NDlkMjk2NDlmMmE2M2EwMmE2M2EyMmI2MmEzMmM2MWE1MmM2MGE2MmQ2MGE4MmU1ZmE5MmU1ZWFiMmY1ZWFkMzA1ZGFlMzA1Y2IwMzE1YmIxMzI1YWIzMzI1YWI0MzM1OWI2MzQ1OGI3MzU1N2I5MzU1NmJhMzY1NWJjMzc1NGJkMzg1M2JmMzk1MmMwM2E1MWMxM2E1MGMzM2I0ZmM0M2M0ZWM2M2Q0ZGM3M2U0Y2M4M2Y0YmNhNDA0YWNiNDE0OWNjNDI0OGNlNDM0N2NmNDQ0NmQwNDU0NWQyNDY0NGQzNDc0M2Q0NDg0MmQ1NGE0MWQ3NGIzZmQ4NGMzZWQ5NGQzZGRhNGUzY2RiNTAzYmRkNTEzYWRlNTIzOGRmNTMzN2UwNTUzNmUxNTYzNWUyNTczNGUzNTkzM2U0NWEzMWU1NWMzMGU2NWQyZmU3NWUyZWU4NjAyZGU5NjEyYmVhNjMyYWViNjQyOWViNjYyOGVjNjcyNmVkNjkyNWVlNmEyNGVmNmMyM2VmNmUyMWYwNmYyMGYxNzExZmYxNzMxZGYyNzQxY2YzNzYxYmYzNzgxOWY0NzkxOGY1N2IxN2Y1N2QxNWY2N2UxNGY2ODAxM2Y3ODIxMmY3ODQxMGY4ODUwZmY4ODcwZWY4ODkwY2Y5OGIwYmY5OGMwYWY5OGUwOWZhOTAwOGZhOTIwN2ZhOTQwN2ZiOTYwNmZiOTcwNmZiOTkwNmZiOWIwNmZiOWQwN2ZjOWYwN2ZjYTEwOGZjYTMwOWZjYTUwYWZjYTYwY2ZjYTgwZGZjYWEwZmZjYWMxMWZjYWUxMmZjYjAxNGZjYjIxNmZjYjQxOGZiYjYxYWZiYjgxZGZiYmExZmZiYmMyMWZiYmUyM2ZhYzAyNmZhYzIyOGZhYzQyYWZhYzYyZGY5YzcyZmY5YzkzMmY5Y2IzNWY4Y2QzN2Y4Y2YzYWY3ZDEzZGY3ZDM0MGY2ZDU0M2Y2ZDc0NmY1ZDk0OWY1ZGI0Y2Y0ZGQ0ZmY0ZGY1M2Y0ZTE1NmYzZTM1YWYzZTU1ZGYyZTY2MWYyZTg2NWYyZWE2OWYxZWM2ZGYxZWQ3MWYxZWY3NWYxZjE3OWYyZjI3ZGYyZjQ4MmYzZjU4NmYzZjY4YWY0Zjg4ZWY1Zjk5MmY2ZmE5NmY4ZmI5YWY5ZmM5ZGZhZmRhMWZjZmZhNCIpKSxtaz1oayhxQSgiMGQwODg3MTAwNzg4MTMwNzg5MTYwNzhhMTkwNjhjMWIwNjhkMWQwNjhlMjAwNjhmMjIwNjkwMjQwNjkxMjYwNTkxMjgwNTkyMmEwNTkzMmMwNTk0MmUwNTk1MmYwNTk2MzEwNTk3MzMwNTk3MzUwNDk4MzcwNDk5MzgwNDlhM2EwNDlhM2MwNDliM2UwNDljM2YwNDljNDEwNDlkNDMwMzllNDQwMzllNDYwMzlmNDgwMzlmNDkwM2EwNGIwM2ExNGMwMmExNGUwMmEyNTAwMmEyNTEwMmEzNTMwMmEzNTUwMmE0NTYwMWE0NTgwMWE0NTkwMWE1NWIwMWE1NWMwMWE2NWUwMWE2NjAwMWE2NjEwMGE3NjMwMGE3NjQwMGE3NjYwMGE3NjcwMGE4NjkwMGE4NmEwMGE4NmMwMGE4NmUwMGE4NmYwMGE4NzEwMGE4NzIwMWE4NzQwMWE4NzUwMWE4NzcwMWE4NzgwMWE4N2EwMmE4N2IwMmE4N2QwM2E4N2UwM2E4ODAwNGE4ODEwNGE3ODMwNWE3ODQwNWE3ODYwNmE2ODcwN2E2ODgwOGE2OGEwOWE1OGIwYWE1OGQwYmE1OGUwY2E0OGYwZGE0OTEwZWEzOTIwZmEzOTQxMGEyOTUxMWExOTYxM2ExOTgxNGEwOTkxNTlmOWExNjlmOWMxNzllOWQxODlkOWUxOTlkYTAxYTljYTExYjliYTIxZDlhYTMxZTlhYTUxZjk5YTYyMDk4YTcyMTk3YTgyMjk2YWEyMzk1YWIyNDk0YWMyNjk0YWQyNzkzYWUyODkyYjAyOTkxYjEyYTkwYjIyYjhmYjMyYzhlYjQyZThkYjUyZjhjYjYzMDhiYjczMThhYjgzMjg5YmEzMzg4YmIzNDg4YmMzNTg3YmQzNzg2YmUzODg1YmYzOTg0YzAzYTgzYzEzYjgyYzIzYzgxYzMzZDgwYzQzZTdmYzU0MDdlYzY0MTdkYzc0MjdjYzg0MzdiYzk0NDdhY2E0NTdhY2I0Njc5Y2M0Nzc4Y2M0OTc3Y2Q0YTc2Y2U0Yjc1Y2Y0Yzc0ZDA0ZDczZDE0ZTcyZDI0ZjcxZDM1MTcxZDQ1MjcwZDU1MzZmZDU1NDZlZDY1NTZkZDc1NjZjZDg1NzZiZDk1ODZhZGE1YTZhZGE1YjY5ZGI1YzY4ZGM1ZDY3ZGQ1ZTY2ZGU1ZjY1ZGU2MTY0ZGY2MjYzZTA2MzYzZTE2NDYyZTI2NTYxZTI2NjYwZTM2ODVmZTQ2OTVlZTU2YTVkZTU2YjVkZTY2YzVjZTc2ZTViZTc2ZjVhZTg3MDU5ZTk3MTU4ZTk3MjU3ZWE3NDU3ZWI3NTU2ZWI3NjU1ZWM3NzU0ZWQ3OTUzZWQ3YTUyZWU3YjUxZWY3YzUxZWY3ZTUwZjA3ZjRmZjA4MDRlZjE4MTRkZjE4MzRjZjI4NDRiZjM4NTRiZjM4NzRhZjQ4ODQ5ZjQ4OTQ4ZjU4YjQ3ZjU4YzQ2ZjY4ZDQ1ZjY4ZjQ0Zjc5MDQ0Zjc5MTQzZjc5MzQyZjg5NDQxZjg5NTQwZjk5NzNmZjk5ODNlZjk5YTNlZmE5YjNkZmE5YzNjZmE5ZTNiZmI5ZjNhZmJhMTM5ZmJhMjM4ZmNhMzM4ZmNhNTM3ZmNhNjM2ZmNhODM1ZmNhOTM0ZmRhYjMzZmRhYzMzZmRhZTMyZmRhZjMxZmRiMTMwZmRiMjJmZmRiNDJmZmRiNTJlZmViNzJkZmViODJjZmViYTJjZmViYjJiZmViZDJhZmViZTJhZmVjMDI5ZmRjMjI5ZmRjMzI4ZmRjNTI3ZmRjNjI3ZmRjODI3ZmRjYTI2ZmRjYjI2ZmNjZDI1ZmNjZTI1ZmNkMDI1ZmNkMjI1ZmJkMzI0ZmJkNTI0ZmJkNzI0ZmFkODI0ZmFkYTI0ZjlkYzI0ZjlkZDI1ZjhkZjI1ZjhlMTI1ZjdlMjI1ZjdlNDI1ZjZlNjI2ZjZlODI2ZjVlOTI2ZjVlYjI3ZjRlZDI3ZjNlZTI3ZjNmMDI3ZjJmMjI3ZjFmNDI2ZjFmNTI1ZjBmNzI0ZjBmOTIxIikpO2Z1bmN0aW9uIGdrKHQpe3JldHVybiBmdW5jdGlvbiBlKCl7cmV0dXJuIHR9fXZhciBfaz1NYXRoLmFicyx5az1NYXRoLmF0YW4yLHZrPU1hdGguY29zLGJrPU1hdGgubWF4LHhrPU1hdGgubWluLHdrPU1hdGguc2luLFNrPU1hdGguc3FydCxNaz0xZS0xMixFaz1NYXRoLlBJLFRrPUVrLzIsQWs9MipFaztmdW5jdGlvbiBDayh0KXtyZXR1cm4gdD4xPzA6dDwtMT9FazpNYXRoLmFjb3ModCl9ZnVuY3Rpb24ga2sodCl7cmV0dXJuIHQ+PTE/VGs6dDw9LTE/LVRrOk1hdGguYXNpbih0KX1mdW5jdGlvbiBMayh0KXtyZXR1cm4gdC5pbm5lclJhZGl1c31mdW5jdGlvbiBQayh0KXtyZXR1cm4gdC5vdXRlclJhZGl1c31mdW5jdGlvbiBJayh0KXtyZXR1cm4gdC5zdGFydEFuZ2xlfWZ1bmN0aW9uIE5rKHQpe3JldHVybiB0LmVuZEFuZ2xlfWZ1bmN0aW9uIE9rKHQpe3JldHVybiB0JiZ0LnBhZEFuZ2xlfWZ1bmN0aW9uIFJrKHQsZSxuLGkscixvLGEscyl7dmFyIGw9bi10LGM9aS1lLHU9YS1yLGg9cy1vLGQ9aCpsLXUqYztpZighKGQqZDxNaykpcmV0dXJuW3QrKGQ9KHUqKGUtbyktaCoodC1yKSkvZCkqbCxlK2QqY119ZnVuY3Rpb24gemsodCxlLG4saSxyLG8sYSl7dmFyIHM9dC1uLGw9ZS1pLGM9KGE/bzotbykvU2socypzK2wqbCksdT1jKmwsaD0tYypzLGQ9dCt1LHA9ZStoLGY9bit1LG09aStoLGc9KGQrZikvMixfPShwK20pLzIseT1mLWQsdj1tLXAsYj15Knkrdip2LHg9ci1vLHc9ZCptLWYqcCxTPSh2PDA/LTE6MSkqU2soYmsoMCx4KngqYi13KncpKSxNPSh3KnYteSpTKS9iLEU9KC13KnktdipTKS9iLFQ9KHcqdit5KlMpL2IsQT0oLXcqeSt2KlMpL2IsQz1NLWcsaz1FLV8sTD1ULWcsUD1BLV87cmV0dXJuIEMqQytrKms+TCpMK1AqUCYmKE09VCxFPUEpLHtjeDpNLGN5OkUseDAxOi11LHkwMTotaCx4MTE6TSooci94LTEpLHkxMTpFKihyL3gtMSl9fWZ1bmN0aW9uIERrKHQpe3RoaXMuX2NvbnRleHQ9dH1mdW5jdGlvbiBCayh0KXtyZXR1cm4gbmV3IERrKHQpfWZ1bmN0aW9uIEhrKHQpe3JldHVybiB0WzBdfWZ1bmN0aW9uIEZrKHQpe3JldHVybiB0WzFdfWZ1bmN0aW9uIFZrKCl7dmFyIHQ9SGssZT1GayxuPWdrKCEwKSxpPW51bGwscj1CayxvPW51bGw7ZnVuY3Rpb24gYShhKXt2YXIgcyxsLGMsdT1hLmxlbmd0aCxoPSExO2ZvcihudWxsPT1pJiYobz1yKGM9cGcoKSkpLHM9MDtzPD11OysrcykhKHM8dSYmbihsPWFbc10scyxhKSk9PT1oJiYoKGg9IWgpP28ubGluZVN0YXJ0KCk6by5saW5lRW5kKCkpLGgmJm8ucG9pbnQoK3QobCxzLGEpLCtlKGwscyxhKSk7aWYoYylyZXR1cm4gbz1udWxsLGMrIiJ8fG51bGx9cmV0dXJuIGEueD1mdW5jdGlvbihlKXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8odD0iZnVuY3Rpb24iPT10eXBlb2YgZT9lOmdrKCtlKSxhKTp0fSxhLnk9ZnVuY3Rpb24odCl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KGU9ImZ1bmN0aW9uIj09dHlwZW9mIHQ/dDpnaygrdCksYSk6ZX0sYS5kZWZpbmVkPWZ1bmN0aW9uKHQpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyhuPSJmdW5jdGlvbiI9PXR5cGVvZiB0P3Q6Z2soISF0KSxhKTpufSxhLmN1cnZlPWZ1bmN0aW9uKHQpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyhyPXQsbnVsbCE9aSYmKG89cihpKSksYSk6cn0sYS5jb250ZXh0PWZ1bmN0aW9uKHQpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyhudWxsPT10P2k9bz1udWxsOm89cihpPXQpLGEpOml9LGF9ZnVuY3Rpb24gamsoKXt2YXIgdD1IayxlPW51bGwsbj1naygwKSxpPUZrLHI9Z2soITApLG89bnVsbCxhPUJrLHM9bnVsbDtmdW5jdGlvbiBsKGwpe3ZhciBjLHUsaCxkLHAsZj1sLmxlbmd0aCxtPSExLGc9bmV3IEFycmF5KGYpLF89bmV3IEFycmF5KGYpO2ZvcihudWxsPT1vJiYocz1hKHA9cGcoKSkpLGM9MDtjPD1mOysrYyl7aWYoIShjPGYmJnIoZD1sW2NdLGMsbCkpPT09bSlpZihtPSFtKXU9YyxzLmFyZWFTdGFydCgpLHMubGluZVN0YXJ0KCk7ZWxzZXtmb3Iocy5saW5lRW5kKCkscy5saW5lU3RhcnQoKSxoPWMtMTtoPj11Oy0taClzLnBvaW50KGdbaF0sX1toXSk7cy5saW5lRW5kKCkscy5hcmVhRW5kKCl9bSYmKGdbY109K3QoZCxjLGwpLF9bY109K24oZCxjLGwpLHMucG9pbnQoZT8rZShkLGMsbCk6Z1tjXSxpPytpKGQsYyxsKTpfW2NdKSl9aWYocClyZXR1cm4gcz1udWxsLHArIiJ8fG51bGx9ZnVuY3Rpb24gYygpe3JldHVybiBWaygpLmRlZmluZWQocikuY3VydmUoYSkuY29udGV4dChvKX1yZXR1cm4gbC54PWZ1bmN0aW9uKG4pe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyh0PSJmdW5jdGlvbiI9PXR5cGVvZiBuP246Z2soK24pLGU9bnVsbCxsKTp0fSxsLngwPWZ1bmN0aW9uKGUpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyh0PSJmdW5jdGlvbiI9PXR5cGVvZiBlP2U6Z2soK2UpLGwpOnR9LGwueDE9ZnVuY3Rpb24odCl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KGU9bnVsbD09dD9udWxsOiJmdW5jdGlvbiI9PXR5cGVvZiB0P3Q6Z2soK3QpLGwpOmV9LGwueT1mdW5jdGlvbih0KXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8obj0iZnVuY3Rpb24iPT10eXBlb2YgdD90OmdrKCt0KSxpPW51bGwsbCk6bn0sbC55MD1mdW5jdGlvbih0KXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8obj0iZnVuY3Rpb24iPT10eXBlb2YgdD90OmdrKCt0KSxsKTpufSxsLnkxPWZ1bmN0aW9uKHQpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyhpPW51bGw9PXQ/bnVsbDoiZnVuY3Rpb24iPT10eXBlb2YgdD90OmdrKCt0KSxsKTppfSxsLmxpbmVYMD1sLmxpbmVZMD1mdW5jdGlvbigpe3JldHVybiBjKCkueCh0KS55KG4pfSxsLmxpbmVZMT1mdW5jdGlvbigpe3JldHVybiBjKCkueCh0KS55KGkpfSxsLmxpbmVYMT1mdW5jdGlvbigpe3JldHVybiBjKCkueChlKS55KG4pfSxsLmRlZmluZWQ9ZnVuY3Rpb24odCl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KHI9ImZ1bmN0aW9uIj09dHlwZW9mIHQ/dDpnayghIXQpLGwpOnJ9LGwuY3VydmU9ZnVuY3Rpb24odCl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KGE9dCxudWxsIT1vJiYocz1hKG8pKSxsKTphfSxsLmNvbnRleHQ9ZnVuY3Rpb24odCl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KG51bGw9PXQ/bz1zPW51bGw6cz1hKG89dCksbCk6b30sbH1mdW5jdGlvbiBVayh0LGUpe3JldHVybiBlPHQ/LTE6ZT50PzE6ZT49dD8wOk5hTn1mdW5jdGlvbiBHayh0KXtyZXR1cm4gdH1Eay5wcm90b3R5cGU9e2FyZWFTdGFydDpmdW5jdGlvbigpe3RoaXMuX2xpbmU9MH0sYXJlYUVuZDpmdW5jdGlvbigpe3RoaXMuX2xpbmU9TmFOfSxsaW5lU3RhcnQ6ZnVuY3Rpb24oKXt0aGlzLl9wb2ludD0wfSxsaW5lRW5kOmZ1bmN0aW9uKCl7KHRoaXMuX2xpbmV8fDAhPT10aGlzLl9saW5lJiYxPT09dGhpcy5fcG9pbnQpJiZ0aGlzLl9jb250ZXh0LmNsb3NlUGF0aCgpLHRoaXMuX2xpbmU9MS10aGlzLl9saW5lfSxwb2ludDpmdW5jdGlvbih0LGUpe3N3aXRjaCh0PSt0LGU9K2UsdGhpcy5fcG9pbnQpe2Nhc2UgMDp0aGlzLl9wb2ludD0xLHRoaXMuX2xpbmU/dGhpcy5fY29udGV4dC5saW5lVG8odCxlKTp0aGlzLl9jb250ZXh0Lm1vdmVUbyh0LGUpO2JyZWFrO2Nhc2UgMTp0aGlzLl9wb2ludD0yO2RlZmF1bHQ6dGhpcy5fY29udGV4dC5saW5lVG8odCxlKX19fTt2YXIgV2s9WWsoQmspO2Z1bmN0aW9uIHFrKHQpe3RoaXMuX2N1cnZlPXR9ZnVuY3Rpb24gWWsodCl7ZnVuY3Rpb24gZShlKXtyZXR1cm4gbmV3IHFrKHQoZSkpfXJldHVybiBlLl9jdXJ2ZT10LGV9ZnVuY3Rpb24gWGsodCl7dmFyIGU9dC5jdXJ2ZTtyZXR1cm4gdC5hbmdsZT10LngsZGVsZXRlIHQueCx0LnJhZGl1cz10LnksZGVsZXRlIHQueSx0LmN1cnZlPWZ1bmN0aW9uKHQpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoP2UoWWsodCkpOmUoKS5fY3VydmV9LHR9ZnVuY3Rpb24gJGsoKXtyZXR1cm4gWGsoVmsoKS5jdXJ2ZShXaykpfWZ1bmN0aW9uIEtrKCl7dmFyIHQ9amsoKS5jdXJ2ZShXayksZT10LmN1cnZlLG49dC5saW5lWDAsaT10LmxpbmVYMSxyPXQubGluZVkwLG89dC5saW5lWTE7cmV0dXJuIHQuYW5nbGU9dC54LGRlbGV0ZSB0LngsdC5zdGFydEFuZ2xlPXQueDAsZGVsZXRlIHQueDAsdC5lbmRBbmdsZT10LngxLGRlbGV0ZSB0LngxLHQucmFkaXVzPXQueSxkZWxldGUgdC55LHQuaW5uZXJSYWRpdXM9dC55MCxkZWxldGUgdC55MCx0Lm91dGVyUmFkaXVzPXQueTEsZGVsZXRlIHQueTEsdC5saW5lU3RhcnRBbmdsZT1mdW5jdGlvbigpe3JldHVybiBYayhuKCkpfSxkZWxldGUgdC5saW5lWDAsdC5saW5lRW5kQW5nbGU9ZnVuY3Rpb24oKXtyZXR1cm4gWGsoaSgpKX0sZGVsZXRlIHQubGluZVgxLHQubGluZUlubmVyUmFkaXVzPWZ1bmN0aW9uKCl7cmV0dXJuIFhrKHIoKSl9LGRlbGV0ZSB0LmxpbmVZMCx0LmxpbmVPdXRlclJhZGl1cz1mdW5jdGlvbigpe3JldHVybiBYayhvKCkpfSxkZWxldGUgdC5saW5lWTEsdC5jdXJ2ZT1mdW5jdGlvbih0KXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD9lKFlrKHQpKTplKCkuX2N1cnZlfSx0fWZ1bmN0aW9uIFprKHQsZSl7cmV0dXJuWyhlPStlKSpNYXRoLmNvcyh0LT1NYXRoLlBJLzIpLGUqTWF0aC5zaW4odCldfXFrLnByb3RvdHlwZT17YXJlYVN0YXJ0OmZ1bmN0aW9uKCl7dGhpcy5fY3VydmUuYXJlYVN0YXJ0KCl9LGFyZWFFbmQ6ZnVuY3Rpb24oKXt0aGlzLl9jdXJ2ZS5hcmVhRW5kKCl9LGxpbmVTdGFydDpmdW5jdGlvbigpe3RoaXMuX2N1cnZlLmxpbmVTdGFydCgpfSxsaW5lRW5kOmZ1bmN0aW9uKCl7dGhpcy5fY3VydmUubGluZUVuZCgpfSxwb2ludDpmdW5jdGlvbih0LGUpe3RoaXMuX2N1cnZlLnBvaW50KGUqTWF0aC5zaW4odCksZSotTWF0aC5jb3ModCkpfX07dmFyIEprPUFycmF5LnByb3RvdHlwZS5zbGljZTtmdW5jdGlvbiBRayh0KXtyZXR1cm4gdC5zb3VyY2V9ZnVuY3Rpb24gdEwodCl7cmV0dXJuIHQudGFyZ2V0fWZ1bmN0aW9uIGVMKHQpe3ZhciBlPVFrLG49dEwsaT1IayxyPUZrLG89bnVsbDtmdW5jdGlvbiBhKCl7dmFyIGEscz1Kay5jYWxsKGFyZ3VtZW50cyksbD1lLmFwcGx5KHRoaXMscyksYz1uLmFwcGx5KHRoaXMscyk7aWYob3x8KG89YT1wZygpKSx0KG8sK2kuYXBwbHkodGhpcywoc1swXT1sLHMpKSwrci5hcHBseSh0aGlzLHMpLCtpLmFwcGx5KHRoaXMsKHNbMF09YyxzKSksK3IuYXBwbHkodGhpcyxzKSksYSlyZXR1cm4gbz1udWxsLGErIiJ8fG51bGx9cmV0dXJuIGEuc291cmNlPWZ1bmN0aW9uKHQpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyhlPXQsYSk6ZX0sYS50YXJnZXQ9ZnVuY3Rpb24odCl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KG49dCxhKTpufSxhLng9ZnVuY3Rpb24odCl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KGk9ImZ1bmN0aW9uIj09dHlwZW9mIHQ/dDpnaygrdCksYSk6aX0sYS55PWZ1bmN0aW9uKHQpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyhyPSJmdW5jdGlvbiI9PXR5cGVvZiB0P3Q6Z2soK3QpLGEpOnJ9LGEuY29udGV4dD1mdW5jdGlvbih0KXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8obz1udWxsPT10P251bGw6dCxhKTpvfSxhfWZ1bmN0aW9uIG5MKHQsZSxuLGkscil7dC5tb3ZlVG8oZSxuKSx0LmJlemllckN1cnZlVG8oZT0oZStpKS8yLG4sZSxyLGkscil9ZnVuY3Rpb24gaUwodCxlLG4saSxyKXt0Lm1vdmVUbyhlLG4pLHQuYmV6aWVyQ3VydmVUbyhlLG49KG4rcikvMixpLG4saSxyKX1mdW5jdGlvbiByTCh0LGUsbixpLHIpe3ZhciBvPVprKGUsbiksYT1aayhlLG49KG4rcikvMikscz1aayhpLG4pLGw9WmsoaSxyKTt0Lm1vdmVUbyhvWzBdLG9bMV0pLHQuYmV6aWVyQ3VydmVUbyhhWzBdLGFbMV0sc1swXSxzWzFdLGxbMF0sbFsxXSl9dmFyIG9MPXtkcmF3OmZ1bmN0aW9uKHQsZSl7dmFyIG49TWF0aC5zcXJ0KGUvRWspO3QubW92ZVRvKG4sMCksdC5hcmMoMCwwLG4sMCxBayl9fSxhTD17ZHJhdzpmdW5jdGlvbih0LGUpe3ZhciBuPU1hdGguc3FydChlLzUpLzI7dC5tb3ZlVG8oLTMqbiwtbiksdC5saW5lVG8oLW4sLW4pLHQubGluZVRvKC1uLC0zKm4pLHQubGluZVRvKG4sLTMqbiksdC5saW5lVG8obiwtbiksdC5saW5lVG8oMypuLC1uKSx0LmxpbmVUbygzKm4sbiksdC5saW5lVG8obixuKSx0LmxpbmVUbyhuLDMqbiksdC5saW5lVG8oLW4sMypuKSx0LmxpbmVUbygtbixuKSx0LmxpbmVUbygtMypuLG4pLHQuY2xvc2VQYXRoKCl9fSxzTD1NYXRoLnNxcnQoMS8zKSxsTD0yKnNMLGNMPXtkcmF3OmZ1bmN0aW9uKHQsZSl7dmFyIG49TWF0aC5zcXJ0KGUvbEwpLGk9bipzTDt0Lm1vdmVUbygwLC1uKSx0LmxpbmVUbyhpLDApLHQubGluZVRvKDAsbiksdC5saW5lVG8oLWksMCksdC5jbG9zZVBhdGgoKX19LHVMPU1hdGguc2luKEVrLzEwKS9NYXRoLnNpbig3KkVrLzEwKSxoTD1NYXRoLnNpbihBay8xMCkqdUwsZEw9LU1hdGguY29zKEFrLzEwKSp1TCxwTD17ZHJhdzpmdW5jdGlvbih0LGUpe3ZhciBuPU1hdGguc3FydCguODkwODEzMDkxNTI5Mjg1MiplKSxpPWhMKm4scj1kTCpuO3QubW92ZVRvKDAsLW4pLHQubGluZVRvKGkscik7Zm9yKHZhciBvPTE7bzw1Oysrbyl7dmFyIGE9QWsqby81LHM9TWF0aC5jb3MoYSksbD1NYXRoLnNpbihhKTt0LmxpbmVUbyhsKm4sLXMqbiksdC5saW5lVG8ocyppLWwqcixsKmkrcypyKX10LmNsb3NlUGF0aCgpfX0sZkw9e2RyYXc6ZnVuY3Rpb24odCxlKXt2YXIgbj1NYXRoLnNxcnQoZSksaT0tbi8yO3QucmVjdChpLGksbixuKX19LG1MPU1hdGguc3FydCgzKSxnTD17ZHJhdzpmdW5jdGlvbih0LGUpe3ZhciBuPS1NYXRoLnNxcnQoZS8oMyptTCkpO3QubW92ZVRvKDAsMipuKSx0LmxpbmVUbygtbUwqbiwtbiksdC5saW5lVG8obUwqbiwtbiksdC5jbG9zZVBhdGgoKX19LF9MPS0uNSx5TD1NYXRoLnNxcnQoMykvMix2TD0xL01hdGguc3FydCgxMiksYkw9MyoodkwvMisxKSx4TD17ZHJhdzpmdW5jdGlvbih0LGUpe3ZhciBuPU1hdGguc3FydChlL2JMKSxpPW4vMixyPW4qdkwsbz1pLGE9bip2TCtuLHM9LW8sbD1hO3QubW92ZVRvKGksciksdC5saW5lVG8obyxhKSx0LmxpbmVUbyhzLGwpLHQubGluZVRvKF9MKmkteUwqcix5TCppK19MKnIpLHQubGluZVRvKF9MKm8teUwqYSx5TCpvK19MKmEpLHQubGluZVRvKF9MKnMteUwqbCx5TCpzK19MKmwpLHQubGluZVRvKF9MKmkreUwqcixfTCpyLXlMKmkpLHQubGluZVRvKF9MKm8reUwqYSxfTCphLXlMKm8pLHQubGluZVRvKF9MKnMreUwqbCxfTCpsLXlMKnMpLHQuY2xvc2VQYXRoKCl9fSx3TD1bb0wsYUwsY0wsZkwscEwsZ0wseExdO2Z1bmN0aW9uIFNMKCl7fWZ1bmN0aW9uIE1MKHQsZSxuKXt0Ll9jb250ZXh0LmJlemllckN1cnZlVG8oKDIqdC5feDArdC5feDEpLzMsKDIqdC5feTArdC5feTEpLzMsKHQuX3gwKzIqdC5feDEpLzMsKHQuX3kwKzIqdC5feTEpLzMsKHQuX3gwKzQqdC5feDErZSkvNiwodC5feTArNCp0Ll95MStuKS82KX1mdW5jdGlvbiBFTCh0KXt0aGlzLl9jb250ZXh0PXR9ZnVuY3Rpb24gVEwodCl7cmV0dXJuIG5ldyBFTCh0KX1mdW5jdGlvbiBBTCh0KXt0aGlzLl9jb250ZXh0PXR9ZnVuY3Rpb24gQ0wodCl7dGhpcy5fY29udGV4dD10fWZ1bmN0aW9uIGtMKHQsZSl7dGhpcy5fYmFzaXM9bmV3IEVMKHQpLHRoaXMuX2JldGE9ZX1FTC5wcm90b3R5cGU9e2FyZWFTdGFydDpmdW5jdGlvbigpe3RoaXMuX2xpbmU9MH0sYXJlYUVuZDpmdW5jdGlvbigpe3RoaXMuX2xpbmU9TmFOfSxsaW5lU3RhcnQ6ZnVuY3Rpb24oKXt0aGlzLl94MD10aGlzLl94MT10aGlzLl95MD10aGlzLl95MT1OYU4sdGhpcy5fcG9pbnQ9MH0sbGluZUVuZDpmdW5jdGlvbigpe3N3aXRjaCh0aGlzLl9wb2ludCl7Y2FzZSAzOk1MKHRoaXMsdGhpcy5feDEsdGhpcy5feTEpO2Nhc2UgMjp0aGlzLl9jb250ZXh0LmxpbmVUbyh0aGlzLl94MSx0aGlzLl95MSl9KHRoaXMuX2xpbmV8fDAhPT10aGlzLl9saW5lJiYxPT09dGhpcy5fcG9pbnQpJiZ0aGlzLl9jb250ZXh0LmNsb3NlUGF0aCgpLHRoaXMuX2xpbmU9MS10aGlzLl9saW5lfSxwb2ludDpmdW5jdGlvbih0LGUpe3N3aXRjaCh0PSt0LGU9K2UsdGhpcy5fcG9pbnQpe2Nhc2UgMDp0aGlzLl9wb2ludD0xLHRoaXMuX2xpbmU/dGhpcy5fY29udGV4dC5saW5lVG8odCxlKTp0aGlzLl9jb250ZXh0Lm1vdmVUbyh0LGUpO2JyZWFrO2Nhc2UgMTp0aGlzLl9wb2ludD0yO2JyZWFrO2Nhc2UgMjp0aGlzLl9wb2ludD0zLHRoaXMuX2NvbnRleHQubGluZVRvKCg1KnRoaXMuX3gwK3RoaXMuX3gxKS82LCg1KnRoaXMuX3kwK3RoaXMuX3kxKS82KTtkZWZhdWx0Ok1MKHRoaXMsdCxlKX10aGlzLl94MD10aGlzLl94MSx0aGlzLl94MT10LHRoaXMuX3kwPXRoaXMuX3kxLHRoaXMuX3kxPWV9fSxBTC5wcm90b3R5cGU9e2FyZWFTdGFydDpTTCxhcmVhRW5kOlNMLGxpbmVTdGFydDpmdW5jdGlvbigpe3RoaXMuX3gwPXRoaXMuX3gxPXRoaXMuX3gyPXRoaXMuX3gzPXRoaXMuX3g0PXRoaXMuX3kwPXRoaXMuX3kxPXRoaXMuX3kyPXRoaXMuX3kzPXRoaXMuX3k0PU5hTix0aGlzLl9wb2ludD0wfSxsaW5lRW5kOmZ1bmN0aW9uKCl7c3dpdGNoKHRoaXMuX3BvaW50KXtjYXNlIDE6dGhpcy5fY29udGV4dC5tb3ZlVG8odGhpcy5feDIsdGhpcy5feTIpLHRoaXMuX2NvbnRleHQuY2xvc2VQYXRoKCk7YnJlYWs7Y2FzZSAyOnRoaXMuX2NvbnRleHQubW92ZVRvKCh0aGlzLl94MisyKnRoaXMuX3gzKS8zLCh0aGlzLl95MisyKnRoaXMuX3kzKS8zKSx0aGlzLl9jb250ZXh0LmxpbmVUbygodGhpcy5feDMrMip0aGlzLl94MikvMywodGhpcy5feTMrMip0aGlzLl95MikvMyksdGhpcy5fY29udGV4dC5jbG9zZVBhdGgoKTticmVhaztjYXNlIDM6dGhpcy5wb2ludCh0aGlzLl94Mix0aGlzLl95MiksdGhpcy5wb2ludCh0aGlzLl94Myx0aGlzLl95MyksdGhpcy5wb2ludCh0aGlzLl94NCx0aGlzLl95NCl9fSxwb2ludDpmdW5jdGlvbih0LGUpe3N3aXRjaCh0PSt0LGU9K2UsdGhpcy5fcG9pbnQpe2Nhc2UgMDp0aGlzLl9wb2ludD0xLHRoaXMuX3gyPXQsdGhpcy5feTI9ZTticmVhaztjYXNlIDE6dGhpcy5fcG9pbnQ9Mix0aGlzLl94Mz10LHRoaXMuX3kzPWU7YnJlYWs7Y2FzZSAyOnRoaXMuX3BvaW50PTMsdGhpcy5feDQ9dCx0aGlzLl95ND1lLHRoaXMuX2NvbnRleHQubW92ZVRvKCh0aGlzLl94MCs0KnRoaXMuX3gxK3QpLzYsKHRoaXMuX3kwKzQqdGhpcy5feTErZSkvNik7YnJlYWs7ZGVmYXVsdDpNTCh0aGlzLHQsZSl9dGhpcy5feDA9dGhpcy5feDEsdGhpcy5feDE9dCx0aGlzLl95MD10aGlzLl95MSx0aGlzLl95MT1lfX0sQ0wucHJvdG90eXBlPXthcmVhU3RhcnQ6ZnVuY3Rpb24oKXt0aGlzLl9saW5lPTB9LGFyZWFFbmQ6ZnVuY3Rpb24oKXt0aGlzLl9saW5lPU5hTn0sbGluZVN0YXJ0OmZ1bmN0aW9uKCl7dGhpcy5feDA9dGhpcy5feDE9dGhpcy5feTA9dGhpcy5feTE9TmFOLHRoaXMuX3BvaW50PTB9LGxpbmVFbmQ6ZnVuY3Rpb24oKXsodGhpcy5fbGluZXx8MCE9PXRoaXMuX2xpbmUmJjM9PT10aGlzLl9wb2ludCkmJnRoaXMuX2NvbnRleHQuY2xvc2VQYXRoKCksdGhpcy5fbGluZT0xLXRoaXMuX2xpbmV9LHBvaW50OmZ1bmN0aW9uKHQsZSl7c3dpdGNoKHQ9K3QsZT0rZSx0aGlzLl9wb2ludCl7Y2FzZSAwOnRoaXMuX3BvaW50PTE7YnJlYWs7Y2FzZSAxOnRoaXMuX3BvaW50PTI7YnJlYWs7Y2FzZSAyOnRoaXMuX3BvaW50PTM7dmFyIG49KHRoaXMuX3gwKzQqdGhpcy5feDErdCkvNixpPSh0aGlzLl95MCs0KnRoaXMuX3kxK2UpLzY7dGhpcy5fbGluZT90aGlzLl9jb250ZXh0LmxpbmVUbyhuLGkpOnRoaXMuX2NvbnRleHQubW92ZVRvKG4saSk7YnJlYWs7Y2FzZSAzOnRoaXMuX3BvaW50PTQ7ZGVmYXVsdDpNTCh0aGlzLHQsZSl9dGhpcy5feDA9dGhpcy5feDEsdGhpcy5feDE9dCx0aGlzLl95MD10aGlzLl95MSx0aGlzLl95MT1lfX0sa0wucHJvdG90eXBlPXtsaW5lU3RhcnQ6ZnVuY3Rpb24oKXt0aGlzLl94PVtdLHRoaXMuX3k9W10sdGhpcy5fYmFzaXMubGluZVN0YXJ0KCl9LGxpbmVFbmQ6ZnVuY3Rpb24oKXt2YXIgdD10aGlzLl94LGU9dGhpcy5feSxuPXQubGVuZ3RoLTE7aWYobj4wKWZvcih2YXIgaSxyPXRbMF0sbz1lWzBdLGE9dFtuXS1yLHM9ZVtuXS1vLGw9LTE7KytsPD1uOyl0aGlzLl9iYXNpcy5wb2ludCh0aGlzLl9iZXRhKnRbbF0rKDEtdGhpcy5fYmV0YSkqKHIrKGk9bC9uKSphKSx0aGlzLl9iZXRhKmVbbF0rKDEtdGhpcy5fYmV0YSkqKG8raSpzKSk7dGhpcy5feD10aGlzLl95PW51bGwsdGhpcy5fYmFzaXMubGluZUVuZCgpfSxwb2ludDpmdW5jdGlvbih0LGUpe3RoaXMuX3gucHVzaCgrdCksdGhpcy5feS5wdXNoKCtlKX19O3ZhciBMTD0oZnVuY3Rpb24gdChlKXtmdW5jdGlvbiBuKHQpe3JldHVybiAxPT09ZT9uZXcgRUwodCk6bmV3IGtMKHQsZSl9cmV0dXJuIG4uYmV0YT1mdW5jdGlvbihlKXtyZXR1cm4gdCgrZSl9LG59KSguODUpO2Z1bmN0aW9uIFBMKHQsZSxuKXt0Ll9jb250ZXh0LmJlemllckN1cnZlVG8odC5feDErdC5fayoodC5feDItdC5feDApLHQuX3kxK3QuX2sqKHQuX3kyLXQuX3kwKSx0Ll94Mit0Ll9rKih0Ll94MS1lKSx0Ll95Mit0Ll9rKih0Ll95MS1uKSx0Ll94Mix0Ll95Mil9ZnVuY3Rpb24gSUwodCxlKXt0aGlzLl9jb250ZXh0PXQsdGhpcy5faz0oMS1lKS82fUlMLnByb3RvdHlwZT17YXJlYVN0YXJ0OmZ1bmN0aW9uKCl7dGhpcy5fbGluZT0wfSxhcmVhRW5kOmZ1bmN0aW9uKCl7dGhpcy5fbGluZT1OYU59LGxpbmVTdGFydDpmdW5jdGlvbigpe3RoaXMuX3gwPXRoaXMuX3gxPXRoaXMuX3gyPXRoaXMuX3kwPXRoaXMuX3kxPXRoaXMuX3kyPU5hTix0aGlzLl9wb2ludD0wfSxsaW5lRW5kOmZ1bmN0aW9uKCl7c3dpdGNoKHRoaXMuX3BvaW50KXtjYXNlIDI6dGhpcy5fY29udGV4dC5saW5lVG8odGhpcy5feDIsdGhpcy5feTIpO2JyZWFrO2Nhc2UgMzpQTCh0aGlzLHRoaXMuX3gxLHRoaXMuX3kxKX0odGhpcy5fbGluZXx8MCE9PXRoaXMuX2xpbmUmJjE9PT10aGlzLl9wb2ludCkmJnRoaXMuX2NvbnRleHQuY2xvc2VQYXRoKCksdGhpcy5fbGluZT0xLXRoaXMuX2xpbmV9LHBvaW50OmZ1bmN0aW9uKHQsZSl7c3dpdGNoKHQ9K3QsZT0rZSx0aGlzLl9wb2ludCl7Y2FzZSAwOnRoaXMuX3BvaW50PTEsdGhpcy5fbGluZT90aGlzLl9jb250ZXh0LmxpbmVUbyh0LGUpOnRoaXMuX2NvbnRleHQubW92ZVRvKHQsZSk7YnJlYWs7Y2FzZSAxOnRoaXMuX3BvaW50PTIsdGhpcy5feDE9dCx0aGlzLl95MT1lO2JyZWFrO2Nhc2UgMjp0aGlzLl9wb2ludD0zO2RlZmF1bHQ6UEwodGhpcyx0LGUpfXRoaXMuX3gwPXRoaXMuX3gxLHRoaXMuX3gxPXRoaXMuX3gyLHRoaXMuX3gyPXQsdGhpcy5feTA9dGhpcy5feTEsdGhpcy5feTE9dGhpcy5feTIsdGhpcy5feTI9ZX19O3ZhciBOTD0oZnVuY3Rpb24gdChlKXtmdW5jdGlvbiBuKHQpe3JldHVybiBuZXcgSUwodCxlKX1yZXR1cm4gbi50ZW5zaW9uPWZ1bmN0aW9uKGUpe3JldHVybiB0KCtlKX0sbn0pKDApO2Z1bmN0aW9uIE9MKHQsZSl7dGhpcy5fY29udGV4dD10LHRoaXMuX2s9KDEtZSkvNn1PTC5wcm90b3R5cGU9e2FyZWFTdGFydDpTTCxhcmVhRW5kOlNMLGxpbmVTdGFydDpmdW5jdGlvbigpe3RoaXMuX3gwPXRoaXMuX3gxPXRoaXMuX3gyPXRoaXMuX3gzPXRoaXMuX3g0PXRoaXMuX3g1PXRoaXMuX3kwPXRoaXMuX3kxPXRoaXMuX3kyPXRoaXMuX3kzPXRoaXMuX3k0PXRoaXMuX3k1PU5hTix0aGlzLl9wb2ludD0wfSxsaW5lRW5kOmZ1bmN0aW9uKCl7c3dpdGNoKHRoaXMuX3BvaW50KXtjYXNlIDE6dGhpcy5fY29udGV4dC5tb3ZlVG8odGhpcy5feDMsdGhpcy5feTMpLHRoaXMuX2NvbnRleHQuY2xvc2VQYXRoKCk7YnJlYWs7Y2FzZSAyOnRoaXMuX2NvbnRleHQubGluZVRvKHRoaXMuX3gzLHRoaXMuX3kzKSx0aGlzLl9jb250ZXh0LmNsb3NlUGF0aCgpO2JyZWFrO2Nhc2UgMzp0aGlzLnBvaW50KHRoaXMuX3gzLHRoaXMuX3kzKSx0aGlzLnBvaW50KHRoaXMuX3g0LHRoaXMuX3k0KSx0aGlzLnBvaW50KHRoaXMuX3g1LHRoaXMuX3k1KX19LHBvaW50OmZ1bmN0aW9uKHQsZSl7c3dpdGNoKHQ9K3QsZT0rZSx0aGlzLl9wb2ludCl7Y2FzZSAwOnRoaXMuX3BvaW50PTEsdGhpcy5feDM9dCx0aGlzLl95Mz1lO2JyZWFrO2Nhc2UgMTp0aGlzLl9wb2ludD0yLHRoaXMuX2NvbnRleHQubW92ZVRvKHRoaXMuX3g0PXQsdGhpcy5feTQ9ZSk7YnJlYWs7Y2FzZSAyOnRoaXMuX3BvaW50PTMsdGhpcy5feDU9dCx0aGlzLl95NT1lO2JyZWFrO2RlZmF1bHQ6UEwodGhpcyx0LGUpfXRoaXMuX3gwPXRoaXMuX3gxLHRoaXMuX3gxPXRoaXMuX3gyLHRoaXMuX3gyPXQsdGhpcy5feTA9dGhpcy5feTEsdGhpcy5feTE9dGhpcy5feTIsdGhpcy5feTI9ZX19O3ZhciBSTD0oZnVuY3Rpb24gdChlKXtmdW5jdGlvbiBuKHQpe3JldHVybiBuZXcgT0wodCxlKX1yZXR1cm4gbi50ZW5zaW9uPWZ1bmN0aW9uKGUpe3JldHVybiB0KCtlKX0sbn0pKDApO2Z1bmN0aW9uIHpMKHQsZSl7dGhpcy5fY29udGV4dD10LHRoaXMuX2s9KDEtZSkvNn16TC5wcm90b3R5cGU9e2FyZWFTdGFydDpmdW5jdGlvbigpe3RoaXMuX2xpbmU9MH0sYXJlYUVuZDpmdW5jdGlvbigpe3RoaXMuX2xpbmU9TmFOfSxsaW5lU3RhcnQ6ZnVuY3Rpb24oKXt0aGlzLl94MD10aGlzLl94MT10aGlzLl94Mj10aGlzLl95MD10aGlzLl95MT10aGlzLl95Mj1OYU4sdGhpcy5fcG9pbnQ9MH0sbGluZUVuZDpmdW5jdGlvbigpeyh0aGlzLl9saW5lfHwwIT09dGhpcy5fbGluZSYmMz09PXRoaXMuX3BvaW50KSYmdGhpcy5fY29udGV4dC5jbG9zZVBhdGgoKSx0aGlzLl9saW5lPTEtdGhpcy5fbGluZX0scG9pbnQ6ZnVuY3Rpb24odCxlKXtzd2l0Y2godD0rdCxlPStlLHRoaXMuX3BvaW50KXtjYXNlIDA6dGhpcy5fcG9pbnQ9MTticmVhaztjYXNlIDE6dGhpcy5fcG9pbnQ9MjticmVhaztjYXNlIDI6dGhpcy5fcG9pbnQ9Myx0aGlzLl9saW5lP3RoaXMuX2NvbnRleHQubGluZVRvKHRoaXMuX3gyLHRoaXMuX3kyKTp0aGlzLl9jb250ZXh0Lm1vdmVUbyh0aGlzLl94Mix0aGlzLl95Mik7YnJlYWs7Y2FzZSAzOnRoaXMuX3BvaW50PTQ7ZGVmYXVsdDpQTCh0aGlzLHQsZSl9dGhpcy5feDA9dGhpcy5feDEsdGhpcy5feDE9dGhpcy5feDIsdGhpcy5feDI9dCx0aGlzLl95MD10aGlzLl95MSx0aGlzLl95MT10aGlzLl95Mix0aGlzLl95Mj1lfX07dmFyIERMPShmdW5jdGlvbiB0KGUpe2Z1bmN0aW9uIG4odCl7cmV0dXJuIG5ldyB6TCh0LGUpfXJldHVybiBuLnRlbnNpb249ZnVuY3Rpb24oZSl7cmV0dXJuIHQoK2UpfSxufSkoMCk7ZnVuY3Rpb24gQkwodCxlLG4pe3ZhciBpPXQuX3gxLHI9dC5feTEsbz10Ll94MixhPXQuX3kyO2lmKHQuX2wwMV9hPk1rKXt2YXIgcz0yKnQuX2wwMV8yYSszKnQuX2wwMV9hKnQuX2wxMl9hK3QuX2wxMl8yYSxsPTMqdC5fbDAxX2EqKHQuX2wwMV9hK3QuX2wxMl9hKTtpPShpKnMtdC5feDAqdC5fbDEyXzJhK3QuX3gyKnQuX2wwMV8yYSkvbCxyPShyKnMtdC5feTAqdC5fbDEyXzJhK3QuX3kyKnQuX2wwMV8yYSkvbH1pZih0Ll9sMjNfYT5Nayl7dmFyIGM9Mip0Ll9sMjNfMmErMyp0Ll9sMjNfYSp0Ll9sMTJfYSt0Ll9sMTJfMmEsdT0zKnQuX2wyM19hKih0Ll9sMjNfYSt0Ll9sMTJfYSk7bz0obypjK3QuX3gxKnQuX2wyM18yYS1lKnQuX2wxMl8yYSkvdSxhPShhKmMrdC5feTEqdC5fbDIzXzJhLW4qdC5fbDEyXzJhKS91fXQuX2NvbnRleHQuYmV6aWVyQ3VydmVUbyhpLHIsbyxhLHQuX3gyLHQuX3kyKX1mdW5jdGlvbiBITCh0LGUpe3RoaXMuX2NvbnRleHQ9dCx0aGlzLl9hbHBoYT1lfUhMLnByb3RvdHlwZT17YXJlYVN0YXJ0OmZ1bmN0aW9uKCl7dGhpcy5fbGluZT0wfSxhcmVhRW5kOmZ1bmN0aW9uKCl7dGhpcy5fbGluZT1OYU59LGxpbmVTdGFydDpmdW5jdGlvbigpe3RoaXMuX3gwPXRoaXMuX3gxPXRoaXMuX3gyPXRoaXMuX3kwPXRoaXMuX3kxPXRoaXMuX3kyPU5hTix0aGlzLl9sMDFfYT10aGlzLl9sMTJfYT10aGlzLl9sMjNfYT10aGlzLl9sMDFfMmE9dGhpcy5fbDEyXzJhPXRoaXMuX2wyM18yYT10aGlzLl9wb2ludD0wfSxsaW5lRW5kOmZ1bmN0aW9uKCl7c3dpdGNoKHRoaXMuX3BvaW50KXtjYXNlIDI6dGhpcy5fY29udGV4dC5saW5lVG8odGhpcy5feDIsdGhpcy5feTIpO2JyZWFrO2Nhc2UgMzp0aGlzLnBvaW50KHRoaXMuX3gyLHRoaXMuX3kyKX0odGhpcy5fbGluZXx8MCE9PXRoaXMuX2xpbmUmJjE9PT10aGlzLl9wb2ludCkmJnRoaXMuX2NvbnRleHQuY2xvc2VQYXRoKCksdGhpcy5fbGluZT0xLXRoaXMuX2xpbmV9LHBvaW50OmZ1bmN0aW9uKHQsZSl7aWYodD0rdCxlPStlLHRoaXMuX3BvaW50KXt2YXIgbj10aGlzLl94Mi10LGk9dGhpcy5feTItZTt0aGlzLl9sMjNfYT1NYXRoLnNxcnQodGhpcy5fbDIzXzJhPU1hdGgucG93KG4qbitpKmksdGhpcy5fYWxwaGEpKX1zd2l0Y2godGhpcy5fcG9pbnQpe2Nhc2UgMDp0aGlzLl9wb2ludD0xLHRoaXMuX2xpbmU/dGhpcy5fY29udGV4dC5saW5lVG8odCxlKTp0aGlzLl9jb250ZXh0Lm1vdmVUbyh0LGUpO2JyZWFrO2Nhc2UgMTp0aGlzLl9wb2ludD0yO2JyZWFrO2Nhc2UgMjp0aGlzLl9wb2ludD0zO2RlZmF1bHQ6QkwodGhpcyx0LGUpfXRoaXMuX2wwMV9hPXRoaXMuX2wxMl9hLHRoaXMuX2wxMl9hPXRoaXMuX2wyM19hLHRoaXMuX2wwMV8yYT10aGlzLl9sMTJfMmEsdGhpcy5fbDEyXzJhPXRoaXMuX2wyM18yYSx0aGlzLl94MD10aGlzLl94MSx0aGlzLl94MT10aGlzLl94Mix0aGlzLl94Mj10LHRoaXMuX3kwPXRoaXMuX3kxLHRoaXMuX3kxPXRoaXMuX3kyLHRoaXMuX3kyPWV9fTt2YXIgRkw9KGZ1bmN0aW9uIHQoZSl7ZnVuY3Rpb24gbih0KXtyZXR1cm4gZT9uZXcgSEwodCxlKTpuZXcgSUwodCwwKX1yZXR1cm4gbi5hbHBoYT1mdW5jdGlvbihlKXtyZXR1cm4gdCgrZSl9LG59KSguNSk7ZnVuY3Rpb24gVkwodCxlKXt0aGlzLl9jb250ZXh0PXQsdGhpcy5fYWxwaGE9ZX1WTC5wcm90b3R5cGU9e2FyZWFTdGFydDpTTCxhcmVhRW5kOlNMLGxpbmVTdGFydDpmdW5jdGlvbigpe3RoaXMuX3gwPXRoaXMuX3gxPXRoaXMuX3gyPXRoaXMuX3gzPXRoaXMuX3g0PXRoaXMuX3g1PXRoaXMuX3kwPXRoaXMuX3kxPXRoaXMuX3kyPXRoaXMuX3kzPXRoaXMuX3k0PXRoaXMuX3k1PU5hTix0aGlzLl9sMDFfYT10aGlzLl9sMTJfYT10aGlzLl9sMjNfYT10aGlzLl9sMDFfMmE9dGhpcy5fbDEyXzJhPXRoaXMuX2wyM18yYT10aGlzLl9wb2ludD0wfSxsaW5lRW5kOmZ1bmN0aW9uKCl7c3dpdGNoKHRoaXMuX3BvaW50KXtjYXNlIDE6dGhpcy5fY29udGV4dC5tb3ZlVG8odGhpcy5feDMsdGhpcy5feTMpLHRoaXMuX2NvbnRleHQuY2xvc2VQYXRoKCk7YnJlYWs7Y2FzZSAyOnRoaXMuX2NvbnRleHQubGluZVRvKHRoaXMuX3gzLHRoaXMuX3kzKSx0aGlzLl9jb250ZXh0LmNsb3NlUGF0aCgpO2JyZWFrO2Nhc2UgMzp0aGlzLnBvaW50KHRoaXMuX3gzLHRoaXMuX3kzKSx0aGlzLnBvaW50KHRoaXMuX3g0LHRoaXMuX3k0KSx0aGlzLnBvaW50KHRoaXMuX3g1LHRoaXMuX3k1KX19LHBvaW50OmZ1bmN0aW9uKHQsZSl7aWYodD0rdCxlPStlLHRoaXMuX3BvaW50KXt2YXIgbj10aGlzLl94Mi10LGk9dGhpcy5feTItZTt0aGlzLl9sMjNfYT1NYXRoLnNxcnQodGhpcy5fbDIzXzJhPU1hdGgucG93KG4qbitpKmksdGhpcy5fYWxwaGEpKX1zd2l0Y2godGhpcy5fcG9pbnQpe2Nhc2UgMDp0aGlzLl9wb2ludD0xLHRoaXMuX3gzPXQsdGhpcy5feTM9ZTticmVhaztjYXNlIDE6dGhpcy5fcG9pbnQ9Mix0aGlzLl9jb250ZXh0Lm1vdmVUbyh0aGlzLl94ND10LHRoaXMuX3k0PWUpO2JyZWFrO2Nhc2UgMjp0aGlzLl9wb2ludD0zLHRoaXMuX3g1PXQsdGhpcy5feTU9ZTticmVhaztkZWZhdWx0OkJMKHRoaXMsdCxlKX10aGlzLl9sMDFfYT10aGlzLl9sMTJfYSx0aGlzLl9sMTJfYT10aGlzLl9sMjNfYSx0aGlzLl9sMDFfMmE9dGhpcy5fbDEyXzJhLHRoaXMuX2wxMl8yYT10aGlzLl9sMjNfMmEsdGhpcy5feDA9dGhpcy5feDEsdGhpcy5feDE9dGhpcy5feDIsdGhpcy5feDI9dCx0aGlzLl95MD10aGlzLl95MSx0aGlzLl95MT10aGlzLl95Mix0aGlzLl95Mj1lfX07dmFyIGpMPShmdW5jdGlvbiB0KGUpe2Z1bmN0aW9uIG4odCl7cmV0dXJuIGU/bmV3IFZMKHQsZSk6bmV3IE9MKHQsMCl9cmV0dXJuIG4uYWxwaGE9ZnVuY3Rpb24oZSl7cmV0dXJuIHQoK2UpfSxufSkoLjUpO2Z1bmN0aW9uIFVMKHQsZSl7dGhpcy5fY29udGV4dD10LHRoaXMuX2FscGhhPWV9VUwucHJvdG90eXBlPXthcmVhU3RhcnQ6ZnVuY3Rpb24oKXt0aGlzLl9saW5lPTB9LGFyZWFFbmQ6ZnVuY3Rpb24oKXt0aGlzLl9saW5lPU5hTn0sbGluZVN0YXJ0OmZ1bmN0aW9uKCl7dGhpcy5feDA9dGhpcy5feDE9dGhpcy5feDI9dGhpcy5feTA9dGhpcy5feTE9dGhpcy5feTI9TmFOLHRoaXMuX2wwMV9hPXRoaXMuX2wxMl9hPXRoaXMuX2wyM19hPXRoaXMuX2wwMV8yYT10aGlzLl9sMTJfMmE9dGhpcy5fbDIzXzJhPXRoaXMuX3BvaW50PTB9LGxpbmVFbmQ6ZnVuY3Rpb24oKXsodGhpcy5fbGluZXx8MCE9PXRoaXMuX2xpbmUmJjM9PT10aGlzLl9wb2ludCkmJnRoaXMuX2NvbnRleHQuY2xvc2VQYXRoKCksdGhpcy5fbGluZT0xLXRoaXMuX2xpbmV9LHBvaW50OmZ1bmN0aW9uKHQsZSl7aWYodD0rdCxlPStlLHRoaXMuX3BvaW50KXt2YXIgbj10aGlzLl94Mi10LGk9dGhpcy5feTItZTt0aGlzLl9sMjNfYT1NYXRoLnNxcnQodGhpcy5fbDIzXzJhPU1hdGgucG93KG4qbitpKmksdGhpcy5fYWxwaGEpKX1zd2l0Y2godGhpcy5fcG9pbnQpe2Nhc2UgMDp0aGlzLl9wb2ludD0xO2JyZWFrO2Nhc2UgMTp0aGlzLl9wb2ludD0yO2JyZWFrO2Nhc2UgMjp0aGlzLl9wb2ludD0zLHRoaXMuX2xpbmU/dGhpcy5fY29udGV4dC5saW5lVG8odGhpcy5feDIsdGhpcy5feTIpOnRoaXMuX2NvbnRleHQubW92ZVRvKHRoaXMuX3gyLHRoaXMuX3kyKTticmVhaztjYXNlIDM6dGhpcy5fcG9pbnQ9NDtkZWZhdWx0OkJMKHRoaXMsdCxlKX10aGlzLl9sMDFfYT10aGlzLl9sMTJfYSx0aGlzLl9sMTJfYT10aGlzLl9sMjNfYSx0aGlzLl9sMDFfMmE9dGhpcy5fbDEyXzJhLHRoaXMuX2wxMl8yYT10aGlzLl9sMjNfMmEsdGhpcy5feDA9dGhpcy5feDEsdGhpcy5feDE9dGhpcy5feDIsdGhpcy5feDI9dCx0aGlzLl95MD10aGlzLl95MSx0aGlzLl95MT10aGlzLl95Mix0aGlzLl95Mj1lfX07dmFyIEdMPShmdW5jdGlvbiB0KGUpe2Z1bmN0aW9uIG4odCl7cmV0dXJuIGU/bmV3IFVMKHQsZSk6bmV3IHpMKHQsMCl9cmV0dXJuIG4uYWxwaGE9ZnVuY3Rpb24oZSl7cmV0dXJuIHQoK2UpfSxufSkoLjUpO2Z1bmN0aW9uIFdMKHQpe3RoaXMuX2NvbnRleHQ9dH1mdW5jdGlvbiBxTCh0KXtyZXR1cm4gdDwwPy0xOjF9ZnVuY3Rpb24gWUwodCxlLG4pe3ZhciBpPXQuX3gxLXQuX3gwLHI9ZS10Ll94MSxvPSh0Ll95MS10Ll95MCkvKGl8fHI8MCYmLTApLGE9KG4tdC5feTEpLyhyfHxpPDAmJi0wKSxzPShvKnIrYSppKS8oaStyKTtyZXR1cm4ocUwobykrcUwoYSkpKk1hdGgubWluKE1hdGguYWJzKG8pLE1hdGguYWJzKGEpLC41Kk1hdGguYWJzKHMpKXx8MH1mdW5jdGlvbiBYTCh0LGUpe3ZhciBuPXQuX3gxLXQuX3gwO3JldHVybiBuPygzKih0Ll95MS10Ll95MCkvbi1lKS8yOmV9ZnVuY3Rpb24gJEwodCxlLG4pe3ZhciBpPXQuX3gwLHI9dC5feDEsbz10Ll95MSxhPShyLWkpLzM7dC5fY29udGV4dC5iZXppZXJDdXJ2ZVRvKGkrYSx0Ll95MCthKmUsci1hLG8tYSpuLHIsbyl9ZnVuY3Rpb24gS0wodCl7dGhpcy5fY29udGV4dD10fWZ1bmN0aW9uIFpMKHQpe3RoaXMuX2NvbnRleHQ9bmV3IEpMKHQpfWZ1bmN0aW9uIEpMKHQpe3RoaXMuX2NvbnRleHQ9dH1mdW5jdGlvbiBRTCh0KXt0aGlzLl9jb250ZXh0PXR9ZnVuY3Rpb24gdFAodCl7dmFyIGUsbixpPXQubGVuZ3RoLTEscj1uZXcgQXJyYXkoaSksbz1uZXcgQXJyYXkoaSksYT1uZXcgQXJyYXkoaSk7Zm9yKHJbMF09MCxvWzBdPTIsYVswXT10WzBdKzIqdFsxXSxlPTE7ZTxpLTE7KytlKXJbZV09MSxvW2VdPTQsYVtlXT00KnRbZV0rMip0W2UrMV07Zm9yKHJbaS0xXT0yLG9baS0xXT03LGFbaS0xXT04KnRbaS0xXSt0W2ldLGU9MTtlPGk7KytlKW9bZV0tPW49cltlXS9vW2UtMV0sYVtlXS09biphW2UtMV07Zm9yKHJbaS0xXT1hW2ktMV0vb1tpLTFdLGU9aS0yO2U+PTA7LS1lKXJbZV09KGFbZV0tcltlKzFdKS9vW2VdO2ZvcihvW2ktMV09KHRbaV0rcltpLTFdKS8yLGU9MDtlPGktMTsrK2Upb1tlXT0yKnRbZSsxXS1yW2UrMV07cmV0dXJuW3Isb119ZnVuY3Rpb24gZVAodCxlKXt0aGlzLl9jb250ZXh0PXQsdGhpcy5fdD1lfWZ1bmN0aW9uIG5QKHQsZSl7aWYoKHI9dC5sZW5ndGgpPjEpZm9yKHZhciBuLGkscixvPTEsYT10W2VbMF1dLHM9YS5sZW5ndGg7bzxyOysrbylmb3IoaT1hLGE9dFtlW29dXSxuPTA7bjxzOysrbilhW25dWzFdKz1hW25dWzBdPWlzTmFOKGlbbl1bMV0pP2lbbl1bMF06aVtuXVsxXX1mdW5jdGlvbiBpUCh0KXtmb3IodmFyIGU9dC5sZW5ndGgsbj1uZXcgQXJyYXkoZSk7LS1lPj0wOyluW2VdPWU7cmV0dXJuIG59ZnVuY3Rpb24gclAodCxlKXtyZXR1cm4gdFtlXX1mdW5jdGlvbiBvUCh0KXt2YXIgZT10Lm1hcChhUCk7cmV0dXJuIGlQKHQpLnNvcnQoKGZ1bmN0aW9uKHQsbil7cmV0dXJuIGVbdF0tZVtuXX0pKX1mdW5jdGlvbiBhUCh0KXtmb3IodmFyIGUsbj0tMSxpPTAscj10Lmxlbmd0aCxvPS0xLzA7KytuPHI7KShlPSt0W25dWzFdKT5vJiYobz1lLGk9bik7cmV0dXJuIGl9ZnVuY3Rpb24gc1AodCl7dmFyIGU9dC5tYXAobFApO3JldHVybiBpUCh0KS5zb3J0KChmdW5jdGlvbih0LG4pe3JldHVybiBlW3RdLWVbbl19KSl9ZnVuY3Rpb24gbFAodCl7Zm9yKHZhciBlLG49MCxpPS0xLHI9dC5sZW5ndGg7KytpPHI7KShlPSt0W2ldWzFdKSYmKG4rPWUpO3JldHVybiBufWZ1bmN0aW9uIGNQKHQpe3JldHVybiBmdW5jdGlvbigpe3JldHVybiB0fX1mdW5jdGlvbiB1UCh0KXtyZXR1cm4gdFswXX1mdW5jdGlvbiBoUCh0KXtyZXR1cm4gdFsxXX1mdW5jdGlvbiBkUCgpe3RoaXMuXz1udWxsfWZ1bmN0aW9uIHBQKHQpe3QuVT10LkM9dC5MPXQuUj10LlA9dC5OPW51bGx9ZnVuY3Rpb24gZlAodCxlKXt2YXIgbj1lLGk9ZS5SLHI9bi5VO3I/ci5MPT09bj9yLkw9aTpyLlI9aTp0Ll89aSxpLlU9cixuLlU9aSxuLlI9aS5MLG4uUiYmKG4uUi5VPW4pLGkuTD1ufWZ1bmN0aW9uIG1QKHQsZSl7dmFyIG49ZSxpPWUuTCxyPW4uVTtyP3IuTD09PW4/ci5MPWk6ci5SPWk6dC5fPWksaS5VPXIsbi5VPWksbi5MPWkuUixuLkwmJihuLkwuVT1uKSxpLlI9bn1mdW5jdGlvbiBnUCh0KXtmb3IoO3QuTDspdD10Lkw7cmV0dXJuIHR9ZnVuY3Rpb24gX1AodCxlLG4saSl7dmFyIHI9W251bGwsbnVsbF0sbz1WUC5wdXNoKHIpLTE7cmV0dXJuIHIubGVmdD10LHIucmlnaHQ9ZSxuJiZ2UChyLHQsZSxuKSxpJiZ2UChyLGUsdCxpKSxIUFt0LmluZGV4XS5oYWxmZWRnZXMucHVzaChvKSxIUFtlLmluZGV4XS5oYWxmZWRnZXMucHVzaChvKSxyfWZ1bmN0aW9uIHlQKHQsZSxuKXt2YXIgaT1bZSxuXTtyZXR1cm4gaS5sZWZ0PXQsaX1mdW5jdGlvbiB2UCh0LGUsbixpKXt0WzBdfHx0WzFdP3QubGVmdD09PW4/dFsxXT1pOnRbMF09aToodFswXT1pLHQubGVmdD1lLHQucmlnaHQ9bil9ZnVuY3Rpb24gYlAodCxlLG4saSxyKXt2YXIgbyxhPXRbMF0scz10WzFdLGw9YVswXSxjPWFbMV0sdT0wLGg9MSxkPXNbMF0tbCxwPXNbMV0tYztpZihvPWUtbCxkfHwhKG8+MCkpe2lmKG8vPWQsZDwwKXtpZihvPHUpcmV0dXJuO288aCYmKGg9byl9ZWxzZSBpZihkPjApe2lmKG8+aClyZXR1cm47bz51JiYodT1vKX1pZihvPWktbCxkfHwhKG88MCkpe2lmKG8vPWQsZDwwKXtpZihvPmgpcmV0dXJuO28+dSYmKHU9byl9ZWxzZSBpZihkPjApe2lmKG88dSlyZXR1cm47bzxoJiYoaD1vKX1pZihvPW4tYyxwfHwhKG8+MCkpe2lmKG8vPXAscDwwKXtpZihvPHUpcmV0dXJuO288aCYmKGg9byl9ZWxzZSBpZihwPjApe2lmKG8+aClyZXR1cm47bz51JiYodT1vKX1pZihvPXItYyxwfHwhKG88MCkpe2lmKG8vPXAscDwwKXtpZihvPmgpcmV0dXJuO28+dSYmKHU9byl9ZWxzZSBpZihwPjApe2lmKG88dSlyZXR1cm47bzxoJiYoaD1vKX1yZXR1cm4hKHU+MHx8aDwxKXx8KHU+MCYmKHRbMF09W2wrdSpkLGMrdSpwXSksaDwxJiYodFsxXT1bbCtoKmQsYytoKnBdKSwhMCl9fX19fWZ1bmN0aW9uIHhQKHQsZSxuLGkscil7dmFyIG89dFsxXTtpZihvKXJldHVybiEwO3ZhciBhLHMsbD10WzBdLGM9dC5sZWZ0LHU9dC5yaWdodCxoPWNbMF0sZD1jWzFdLHA9dVswXSxmPXVbMV0sbT0oaCtwKS8yO2lmKGY9PT1kKXtpZihtPGV8fG0+PWkpcmV0dXJuO2lmKGg+cCl7aWYobCl7aWYobFsxXT49cilyZXR1cm59ZWxzZSBsPVttLG5dO289W20scl19ZWxzZXtpZihsKXtpZihsWzFdPG4pcmV0dXJufWVsc2UgbD1bbSxyXTtvPVttLG5dfX1lbHNlIGlmKHM9KGQrZikvMi0oYT0oaC1wKS8oZi1kKSkqbSxhPC0xfHxhPjEpaWYoaD5wKXtpZihsKXtpZihsWzFdPj1yKXJldHVybn1lbHNlIGw9WyhuLXMpL2Esbl07bz1bKHItcykvYSxyXX1lbHNle2lmKGwpe2lmKGxbMV08bilyZXR1cm59ZWxzZSBsPVsoci1zKS9hLHJdO289WyhuLXMpL2Esbl19ZWxzZSBpZihkPGYpe2lmKGwpe2lmKGxbMF0+PWkpcmV0dXJufWVsc2UgbD1bZSxhKmUrc107bz1baSxhKmkrc119ZWxzZXtpZihsKXtpZihsWzBdPGUpcmV0dXJufWVsc2UgbD1baSxhKmkrc107bz1bZSxhKmUrc119cmV0dXJuIHRbMF09bCx0WzFdPW8sITB9ZnVuY3Rpb24gd1AodCxlKXt2YXIgbj10LnNpdGUsaT1lLmxlZnQscj1lLnJpZ2h0O3JldHVybiBuPT09ciYmKHI9aSxpPW4pLHI/TWF0aC5hdGFuMihyWzFdLWlbMV0sclswXS1pWzBdKToobj09PWk/KGk9ZVsxXSxyPWVbMF0pOihpPWVbMF0scj1lWzFdKSxNYXRoLmF0YW4yKGlbMF0tclswXSxyWzFdLWlbMV0pKX1mdW5jdGlvbiBTUCh0LGUpe3JldHVybiBlWysoZS5sZWZ0IT09dC5zaXRlKV19ZnVuY3Rpb24gTVAodCxlKXtyZXR1cm4gZVsrKGUubGVmdD09PXQuc2l0ZSldfVdMLnByb3RvdHlwZT17YXJlYVN0YXJ0OlNMLGFyZWFFbmQ6U0wsbGluZVN0YXJ0OmZ1bmN0aW9uKCl7dGhpcy5fcG9pbnQ9MH0sbGluZUVuZDpmdW5jdGlvbigpe3RoaXMuX3BvaW50JiZ0aGlzLl9jb250ZXh0LmNsb3NlUGF0aCgpfSxwb2ludDpmdW5jdGlvbih0LGUpe3Q9K3QsZT0rZSx0aGlzLl9wb2ludD90aGlzLl9jb250ZXh0LmxpbmVUbyh0LGUpOih0aGlzLl9wb2ludD0xLHRoaXMuX2NvbnRleHQubW92ZVRvKHQsZSkpfX0sS0wucHJvdG90eXBlPXthcmVhU3RhcnQ6ZnVuY3Rpb24oKXt0aGlzLl9saW5lPTB9LGFyZWFFbmQ6ZnVuY3Rpb24oKXt0aGlzLl9saW5lPU5hTn0sbGluZVN0YXJ0OmZ1bmN0aW9uKCl7dGhpcy5feDA9dGhpcy5feDE9dGhpcy5feTA9dGhpcy5feTE9dGhpcy5fdDA9TmFOLHRoaXMuX3BvaW50PTB9LGxpbmVFbmQ6ZnVuY3Rpb24oKXtzd2l0Y2godGhpcy5fcG9pbnQpe2Nhc2UgMjp0aGlzLl9jb250ZXh0LmxpbmVUbyh0aGlzLl94MSx0aGlzLl95MSk7YnJlYWs7Y2FzZSAzOiRMKHRoaXMsdGhpcy5fdDAsWEwodGhpcyx0aGlzLl90MCkpfSh0aGlzLl9saW5lfHwwIT09dGhpcy5fbGluZSYmMT09PXRoaXMuX3BvaW50KSYmdGhpcy5fY29udGV4dC5jbG9zZVBhdGgoKSx0aGlzLl9saW5lPTEtdGhpcy5fbGluZX0scG9pbnQ6ZnVuY3Rpb24odCxlKXt2YXIgbj1OYU47aWYoZT0rZSwodD0rdCkhPT10aGlzLl94MXx8ZSE9PXRoaXMuX3kxKXtzd2l0Y2godGhpcy5fcG9pbnQpe2Nhc2UgMDp0aGlzLl9wb2ludD0xLHRoaXMuX2xpbmU/dGhpcy5fY29udGV4dC5saW5lVG8odCxlKTp0aGlzLl9jb250ZXh0Lm1vdmVUbyh0LGUpO2JyZWFrO2Nhc2UgMTp0aGlzLl9wb2ludD0yO2JyZWFrO2Nhc2UgMjp0aGlzLl9wb2ludD0zLCRMKHRoaXMsWEwodGhpcyxuPVlMKHRoaXMsdCxlKSksbik7YnJlYWs7ZGVmYXVsdDokTCh0aGlzLHRoaXMuX3QwLG49WUwodGhpcyx0LGUpKX10aGlzLl94MD10aGlzLl94MSx0aGlzLl94MT10LHRoaXMuX3kwPXRoaXMuX3kxLHRoaXMuX3kxPWUsdGhpcy5fdDA9bn19fSwoWkwucHJvdG90eXBlPU9iamVjdC5jcmVhdGUoS0wucHJvdG90eXBlKSkucG9pbnQ9ZnVuY3Rpb24odCxlKXtLTC5wcm90b3R5cGUucG9pbnQuY2FsbCh0aGlzLGUsdCl9LEpMLnByb3RvdHlwZT17bW92ZVRvOmZ1bmN0aW9uKHQsZSl7dGhpcy5fY29udGV4dC5tb3ZlVG8oZSx0KX0sY2xvc2VQYXRoOmZ1bmN0aW9uKCl7dGhpcy5fY29udGV4dC5jbG9zZVBhdGgoKX0sbGluZVRvOmZ1bmN0aW9uKHQsZSl7dGhpcy5fY29udGV4dC5saW5lVG8oZSx0KX0sYmV6aWVyQ3VydmVUbzpmdW5jdGlvbih0LGUsbixpLHIsbyl7dGhpcy5fY29udGV4dC5iZXppZXJDdXJ2ZVRvKGUsdCxpLG4sbyxyKX19LFFMLnByb3RvdHlwZT17YXJlYVN0YXJ0OmZ1bmN0aW9uKCl7dGhpcy5fbGluZT0wfSxhcmVhRW5kOmZ1bmN0aW9uKCl7dGhpcy5fbGluZT1OYU59LGxpbmVTdGFydDpmdW5jdGlvbigpe3RoaXMuX3g9W10sdGhpcy5feT1bXX0sbGluZUVuZDpmdW5jdGlvbigpe3ZhciB0PXRoaXMuX3gsZT10aGlzLl95LG49dC5sZW5ndGg7aWYobilpZih0aGlzLl9saW5lP3RoaXMuX2NvbnRleHQubGluZVRvKHRbMF0sZVswXSk6dGhpcy5fY29udGV4dC5tb3ZlVG8odFswXSxlWzBdKSwyPT09bil0aGlzLl9jb250ZXh0LmxpbmVUbyh0WzFdLGVbMV0pO2Vsc2UgZm9yKHZhciBpPXRQKHQpLHI9dFAoZSksbz0wLGE9MTthPG47KytvLCsrYSl0aGlzLl9jb250ZXh0LmJlemllckN1cnZlVG8oaVswXVtvXSxyWzBdW29dLGlbMV1bb10sclsxXVtvXSx0W2FdLGVbYV0pOyh0aGlzLl9saW5lfHwwIT09dGhpcy5fbGluZSYmMT09PW4pJiZ0aGlzLl9jb250ZXh0LmNsb3NlUGF0aCgpLHRoaXMuX2xpbmU9MS10aGlzLl9saW5lLHRoaXMuX3g9dGhpcy5feT1udWxsfSxwb2ludDpmdW5jdGlvbih0LGUpe3RoaXMuX3gucHVzaCgrdCksdGhpcy5feS5wdXNoKCtlKX19LGVQLnByb3RvdHlwZT17YXJlYVN0YXJ0OmZ1bmN0aW9uKCl7dGhpcy5fbGluZT0wfSxhcmVhRW5kOmZ1bmN0aW9uKCl7dGhpcy5fbGluZT1OYU59LGxpbmVTdGFydDpmdW5jdGlvbigpe3RoaXMuX3g9dGhpcy5feT1OYU4sdGhpcy5fcG9pbnQ9MH0sbGluZUVuZDpmdW5jdGlvbigpezA8dGhpcy5fdCYmdGhpcy5fdDwxJiYyPT09dGhpcy5fcG9pbnQmJnRoaXMuX2NvbnRleHQubGluZVRvKHRoaXMuX3gsdGhpcy5feSksKHRoaXMuX2xpbmV8fDAhPT10aGlzLl9saW5lJiYxPT09dGhpcy5fcG9pbnQpJiZ0aGlzLl9jb250ZXh0LmNsb3NlUGF0aCgpLHRoaXMuX2xpbmU+PTAmJih0aGlzLl90PTEtdGhpcy5fdCx0aGlzLl9saW5lPTEtdGhpcy5fbGluZSl9LHBvaW50OmZ1bmN0aW9uKHQsZSl7c3dpdGNoKHQ9K3QsZT0rZSx0aGlzLl9wb2ludCl7Y2FzZSAwOnRoaXMuX3BvaW50PTEsdGhpcy5fbGluZT90aGlzLl9jb250ZXh0LmxpbmVUbyh0LGUpOnRoaXMuX2NvbnRleHQubW92ZVRvKHQsZSk7YnJlYWs7Y2FzZSAxOnRoaXMuX3BvaW50PTI7ZGVmYXVsdDppZih0aGlzLl90PD0wKXRoaXMuX2NvbnRleHQubGluZVRvKHRoaXMuX3gsZSksdGhpcy5fY29udGV4dC5saW5lVG8odCxlKTtlbHNle3ZhciBuPXRoaXMuX3gqKDEtdGhpcy5fdCkrdCp0aGlzLl90O3RoaXMuX2NvbnRleHQubGluZVRvKG4sdGhpcy5feSksdGhpcy5fY29udGV4dC5saW5lVG8obixlKX19dGhpcy5feD10LHRoaXMuX3k9ZX19LGRQLnByb3RvdHlwZT17Y29uc3RydWN0b3I6ZFAsaW5zZXJ0OmZ1bmN0aW9uKHQsZSl7dmFyIG4saSxyO2lmKHQpe2lmKGUuUD10LGUuTj10Lk4sdC5OJiYodC5OLlA9ZSksdC5OPWUsdC5SKXtmb3IodD10LlI7dC5MOyl0PXQuTDt0Lkw9ZX1lbHNlIHQuUj1lO249dH1lbHNlIHRoaXMuXz8odD1nUCh0aGlzLl8pLGUuUD1udWxsLGUuTj10LHQuUD10Lkw9ZSxuPXQpOihlLlA9ZS5OPW51bGwsdGhpcy5fPWUsbj1udWxsKTtmb3IoZS5MPWUuUj1udWxsLGUuVT1uLGUuQz0hMCx0PWU7biYmbi5DOyluPT09KGk9bi5VKS5MPyhyPWkuUikmJnIuQz8obi5DPXIuQz0hMSxpLkM9ITAsdD1pKToodD09PW4uUiYmKGZQKHRoaXMsbiksbj0odD1uKS5VKSxuLkM9ITEsaS5DPSEwLG1QKHRoaXMsaSkpOihyPWkuTCkmJnIuQz8obi5DPXIuQz0hMSxpLkM9ITAsdD1pKToodD09PW4uTCYmKG1QKHRoaXMsbiksbj0odD1uKS5VKSxuLkM9ITEsaS5DPSEwLGZQKHRoaXMsaSkpLG49dC5VO3RoaXMuXy5DPSExfSxyZW1vdmU6ZnVuY3Rpb24odCl7dC5OJiYodC5OLlA9dC5QKSx0LlAmJih0LlAuTj10Lk4pLHQuTj10LlA9bnVsbDt2YXIgZSxuLGkscj10LlUsbz10LkwsYT10LlI7aWYobj1vP2E/Z1AoYSk6bzphLHI/ci5MPT09dD9yLkw9bjpyLlI9bjp0aGlzLl89bixvJiZhPyhpPW4uQyxuLkM9dC5DLG4uTD1vLG8uVT1uLG4hPT1hPyhyPW4uVSxuLlU9dC5VLHIuTD10PW4uUixuLlI9YSxhLlU9bik6KG4uVT1yLHI9bix0PW4uUikpOihpPXQuQyx0PW4pLHQmJih0LlU9ciksIWkpaWYodCYmdC5DKXQuQz0hMTtlbHNle2Rve2lmKHQ9PT10aGlzLl8pYnJlYWs7aWYodD09PXIuTCl7aWYoKGU9ci5SKS5DJiYoZS5DPSExLHIuQz0hMCxmUCh0aGlzLHIpLGU9ci5SKSxlLkwmJmUuTC5DfHxlLlImJmUuUi5DKXtlLlImJmUuUi5DfHwoZS5MLkM9ITEsZS5DPSEwLG1QKHRoaXMsZSksZT1yLlIpLGUuQz1yLkMsci5DPWUuUi5DPSExLGZQKHRoaXMsciksdD10aGlzLl87YnJlYWt9fWVsc2UgaWYoKGU9ci5MKS5DJiYoZS5DPSExLHIuQz0hMCxtUCh0aGlzLHIpLGU9ci5MKSxlLkwmJmUuTC5DfHxlLlImJmUuUi5DKXtlLkwmJmUuTC5DfHwoZS5SLkM9ITEsZS5DPSEwLGZQKHRoaXMsZSksZT1yLkwpLGUuQz1yLkMsci5DPWUuTC5DPSExLG1QKHRoaXMsciksdD10aGlzLl87YnJlYWt9ZS5DPSEwLHQ9cixyPXIuVX13aGlsZSghdC5DKTt0JiYodC5DPSExKX19fTt2YXIgRVAsVFA9W107ZnVuY3Rpb24gQVAoKXtwUCh0aGlzKSx0aGlzLng9dGhpcy55PXRoaXMuYXJjPXRoaXMuc2l0ZT10aGlzLmN5PW51bGx9ZnVuY3Rpb24gQ1AodCl7dmFyIGU9dC5QLG49dC5OO2lmKGUmJm4pe3ZhciBpPWUuc2l0ZSxyPXQuc2l0ZSxvPW4uc2l0ZTtpZihpIT09byl7dmFyIGE9clswXSxzPXJbMV0sbD1pWzBdLWEsYz1pWzFdLXMsdT1vWzBdLWEsaD1vWzFdLXMsZD0yKihsKmgtYyp1KTtpZighKGQ+PS1VUCkpe3ZhciBwPWwqbCtjKmMsZj11KnUraCpoLG09KGgqcC1jKmYpL2QsZz0obCpmLXUqcCkvZCxfPVRQLnBvcCgpfHxuZXcgQVA7Xy5hcmM9dCxfLnNpdGU9cixfLng9bSthLF8ueT0oXy5jeT1nK3MpK01hdGguc3FydChtKm0rZypnKSx0LmNpcmNsZT1fO2Zvcih2YXIgeT1udWxsLHY9RlAuXzt2OylpZihfLnk8di55fHxfLnk9PT12LnkmJl8ueDw9di54KXtpZighdi5MKXt5PXYuUDticmVha312PXYuTH1lbHNle2lmKCF2LlIpe3k9djticmVha312PXYuUn1GUC5pbnNlcnQoeSxfKSx5fHwoRVA9Xyl9fX19ZnVuY3Rpb24ga1AodCl7dmFyIGU9dC5jaXJjbGU7ZSYmKGUuUHx8KEVQPWUuTiksRlAucmVtb3ZlKGUpLFRQLnB1c2goZSkscFAoZSksdC5jaXJjbGU9bnVsbCl9dmFyIExQPVtdO2Z1bmN0aW9uIFBQKCl7cFAodGhpcyksdGhpcy5lZGdlPXRoaXMuc2l0ZT10aGlzLmNpcmNsZT1udWxsfWZ1bmN0aW9uIElQKHQpe3ZhciBlPUxQLnBvcCgpfHxuZXcgUFA7cmV0dXJuIGUuc2l0ZT10LGV9ZnVuY3Rpb24gTlAodCl7a1AodCksQlAucmVtb3ZlKHQpLExQLnB1c2godCkscFAodCl9ZnVuY3Rpb24gT1AodCl7dmFyIGU9dC5jaXJjbGUsbj1lLngsaT1lLmN5LHI9W24saV0sbz10LlAsYT10Lk4scz1bdF07TlAodCk7Zm9yKHZhciBsPW87bC5jaXJjbGUmJk1hdGguYWJzKG4tbC5jaXJjbGUueCk8alAmJk1hdGguYWJzKGktbC5jaXJjbGUuY3kpPGpQOylvPWwuUCxzLnVuc2hpZnQobCksTlAobCksbD1vO3MudW5zaGlmdChsKSxrUChsKTtmb3IodmFyIGM9YTtjLmNpcmNsZSYmTWF0aC5hYnMobi1jLmNpcmNsZS54KTxqUCYmTWF0aC5hYnMoaS1jLmNpcmNsZS5jeSk8alA7KWE9Yy5OLHMucHVzaChjKSxOUChjKSxjPWE7cy5wdXNoKGMpLGtQKGMpO3ZhciB1LGg9cy5sZW5ndGg7Zm9yKHU9MTt1PGg7Kyt1KXZQKChjPXNbdV0pLmVkZ2UsKGw9c1t1LTFdKS5zaXRlLGMuc2l0ZSxyKTsoYz1zW2gtMV0pLmVkZ2U9X1AoKGw9c1swXSkuc2l0ZSxjLnNpdGUsbnVsbCxyKSxDUChsKSxDUChjKX1mdW5jdGlvbiBSUCh0KXtmb3IodmFyIGUsbixpLHIsbz10WzBdLGE9dFsxXSxzPUJQLl87czspaWYoKGk9elAocyxhKS1vKT5qUClzPXMuTDtlbHNle2lmKCEoKHI9by1EUChzLGEpKT5qUCkpe2k+LWpQPyhlPXMuUCxuPXMpOnI+LWpQPyhlPXMsbj1zLk4pOmU9bj1zO2JyZWFrfWlmKCFzLlIpe2U9czticmVha31zPXMuUn0hKGZ1bmN0aW9uIGwodCl7SFBbdC5pbmRleF09e3NpdGU6dCxoYWxmZWRnZXM6W119fSkodCk7dmFyIGM9SVAodCk7aWYoQlAuaW5zZXJ0KGUsYyksZXx8bil7aWYoZT09PW4pcmV0dXJuIGtQKGUpLG49SVAoZS5zaXRlKSxCUC5pbnNlcnQoYyxuKSxjLmVkZ2U9bi5lZGdlPV9QKGUuc2l0ZSxjLnNpdGUpLENQKGUpLHZvaWQgQ1Aobik7aWYobil7a1AoZSksa1Aobik7dmFyIHU9ZS5zaXRlLGg9dVswXSxkPXVbMV0scD10WzBdLWgsZj10WzFdLWQsbT1uLnNpdGUsZz1tWzBdLWgsXz1tWzFdLWQseT0yKihwKl8tZipnKSx2PXAqcCtmKmYsYj1nKmcrXypfLHg9WyhfKnYtZipiKS95K2gsKHAqYi1nKnYpL3krZF07dlAobi5lZGdlLHUsbSx4KSxjLmVkZ2U9X1AodSx0LG51bGwseCksbi5lZGdlPV9QKHQsbSxudWxsLHgpLENQKGUpLENQKG4pfWVsc2UgYy5lZGdlPV9QKGUuc2l0ZSxjLnNpdGUpfX1mdW5jdGlvbiB6UCh0LGUpe3ZhciBuPXQuc2l0ZSxpPW5bMF0scj1uWzFdLG89ci1lO2lmKCFvKXJldHVybiBpO3ZhciBhPXQuUDtpZighYSlyZXR1cm4tMS8wO3ZhciBzPShuPWEuc2l0ZSlbMF0sbD1uWzFdLGM9bC1lO2lmKCFjKXJldHVybiBzO3ZhciB1PXMtaSxoPTEvby0xL2MsZD11L2M7cmV0dXJuIGg/KC1kK01hdGguc3FydChkKmQtMipoKih1KnUvKC0yKmMpLWwrYy8yK3Itby8yKSkpL2graTooaStzKS8yfWZ1bmN0aW9uIERQKHQsZSl7dmFyIG49dC5OO2lmKG4pcmV0dXJuIHpQKG4sZSk7dmFyIGk9dC5zaXRlO3JldHVybiBpWzFdPT09ZT9pWzBdOjEvMH12YXIgQlAsSFAsRlAsVlAsalA9MWUtNixVUD0xZS0xMjtmdW5jdGlvbiBHUCh0LGUsbil7cmV0dXJuKHRbMF0tblswXSkqKGVbMV0tdFsxXSktKHRbMF0tZVswXSkqKG5bMV0tdFsxXSl9ZnVuY3Rpb24gV1AodCxlKXtyZXR1cm4gZVsxXS10WzFdfHxlWzBdLXRbMF19ZnVuY3Rpb24gcVAodCxlKXt2YXIgbixpLHIsbz10LnNvcnQoV1ApLnBvcCgpO2ZvcihWUD1bXSxIUD1uZXcgQXJyYXkodC5sZW5ndGgpLEJQPW5ldyBkUCxGUD1uZXcgZFA7OylpZihyPUVQLG8mJighcnx8b1sxXTxyLnl8fG9bMV09PT1yLnkmJm9bMF08ci54KSlvWzBdPT09biYmb1sxXT09PWl8fChSUChvKSxuPW9bMF0saT1vWzFdKSxvPXQucG9wKCk7ZWxzZXtpZighcilicmVhaztPUChyLmFyYyl9aWYoKGZ1bmN0aW9uIGEoKXtmb3IodmFyIHQsZSxuLGkscj0wLG89SFAubGVuZ3RoO3I8bzsrK3IpaWYoKHQ9SFBbcl0pJiYoaT0oZT10LmhhbGZlZGdlcykubGVuZ3RoKSl7dmFyIGE9bmV3IEFycmF5KGkpLHM9bmV3IEFycmF5KGkpO2ZvcihuPTA7bjxpOysrbilhW25dPW4sc1tuXT13UCh0LFZQW2Vbbl1dKTtmb3IoYS5zb3J0KChmdW5jdGlvbih0LGUpe3JldHVybiBzW2VdLXNbdF19KSksbj0wO248aTsrK24pc1tuXT1lW2Fbbl1dO2ZvcihuPTA7bjxpOysrbillW25dPXNbbl19fSkoKSxlKXt2YXIgcz0rZVswXVswXSxsPStlWzBdWzFdLGM9K2VbMV1bMF0sdT0rZVsxXVsxXTshKGZ1bmN0aW9uIGgodCxlLG4saSl7Zm9yKHZhciByLG89VlAubGVuZ3RoO28tLTspeFAocj1WUFtvXSx0LGUsbixpKSYmYlAocix0LGUsbixpKSYmKE1hdGguYWJzKHJbMF1bMF0tclsxXVswXSk+alB8fE1hdGguYWJzKHJbMF1bMV0tclsxXVsxXSk+alApfHxkZWxldGUgVlBbb119KShzLGwsYyx1KSwoZnVuY3Rpb24gZCh0LGUsbixpKXt2YXIgcixvLGEscyxsLGMsdSxoLGQscCxmLG0sZz1IUC5sZW5ndGgsXz0hMDtmb3Iocj0wO3I8ZzsrK3IpaWYobz1IUFtyXSl7Zm9yKGE9by5zaXRlLHM9KGw9by5oYWxmZWRnZXMpLmxlbmd0aDtzLS07KVZQW2xbc11dfHxsLnNwbGljZShzLDEpO2ZvcihzPTAsYz1sLmxlbmd0aDtzPGM7KWY9KHA9TVAobyxWUFtsW3NdXSkpWzBdLG09cFsxXSxoPSh1PVNQKG8sVlBbbFsrK3MlY11dKSlbMF0sZD11WzFdLChNYXRoLmFicyhmLWgpPmpQfHxNYXRoLmFicyhtLWQpPmpQKSYmKGwuc3BsaWNlKHMsMCxWUC5wdXNoKHlQKGEscCxNYXRoLmFicyhmLXQpPGpQJiZpLW0+alA/W3QsTWF0aC5hYnMoaC10KTxqUD9kOmldOk1hdGguYWJzKG0taSk8alAmJm4tZj5qUD9bTWF0aC5hYnMoZC1pKTxqUD9oOm4saV06TWF0aC5hYnMoZi1uKTxqUCYmbS1lPmpQP1tuLE1hdGguYWJzKGgtbik8alA/ZDplXTpNYXRoLmFicyhtLWUpPGpQJiZmLXQ+alA/W01hdGguYWJzKGQtZSk8alA/aDp0LGVdOm51bGwpKS0xKSwrK2MpO2MmJihfPSExKX1pZihfKXt2YXIgeSx2LGIseD0xLzA7Zm9yKHI9MCxfPW51bGw7cjxnOysrcikobz1IUFtyXSkmJihiPSh5PShhPW8uc2l0ZSlbMF0tdCkqeSsodj1hWzFdLWUpKnYpPHgmJih4PWIsXz1vKTtpZihfKXt2YXIgdz1bdCxlXSxTPVt0LGldLE09W24saV0sRT1bbixlXTtfLmhhbGZlZGdlcy5wdXNoKFZQLnB1c2goeVAoYT1fLnNpdGUsdyxTKSktMSxWUC5wdXNoKHlQKGEsUyxNKSktMSxWUC5wdXNoKHlQKGEsTSxFKSktMSxWUC5wdXNoKHlQKGEsRSx3KSktMSl9fWZvcihyPTA7cjxnOysrcikobz1IUFtyXSkmJihvLmhhbGZlZGdlcy5sZW5ndGh8fGRlbGV0ZSBIUFtyXSl9KShzLGwsYyx1KX10aGlzLmVkZ2VzPVZQLHRoaXMuY2VsbHM9SFAsQlA9RlA9VlA9SFA9bnVsbH1mdW5jdGlvbiBZUCh0KXtyZXR1cm4gZnVuY3Rpb24oKXtyZXR1cm4gdH19ZnVuY3Rpb24gWFAodCxlLG4pe3RoaXMudGFyZ2V0PXQsdGhpcy50eXBlPWUsdGhpcy50cmFuc2Zvcm09bn1mdW5jdGlvbiAkUCh0LGUsbil7dGhpcy5rPXQsdGhpcy54PWUsdGhpcy55PW59cVAucHJvdG90eXBlPXtjb25zdHJ1Y3RvcjpxUCxwb2x5Z29uczpmdW5jdGlvbigpe3ZhciB0PXRoaXMuZWRnZXM7cmV0dXJuIHRoaXMuY2VsbHMubWFwKChmdW5jdGlvbihlKXt2YXIgbj1lLmhhbGZlZGdlcy5tYXAoKGZ1bmN0aW9uKG4pe3JldHVybiBTUChlLHRbbl0pfSkpO3JldHVybiBuLmRhdGE9ZS5zaXRlLmRhdGEsbn0pKX0sdHJpYW5nbGVzOmZ1bmN0aW9uKCl7dmFyIHQ9W10sZT10aGlzLmVkZ2VzO3JldHVybiB0aGlzLmNlbGxzLmZvckVhY2goKGZ1bmN0aW9uKG4saSl7aWYobz0ocj1uLmhhbGZlZGdlcykubGVuZ3RoKWZvcih2YXIgcixvLGEscz1uLnNpdGUsbD0tMSxjPWVbcltvLTFdXSx1PWMubGVmdD09PXM/Yy5yaWdodDpjLmxlZnQ7KytsPG87KWE9dSx1PShjPWVbcltsXV0pLmxlZnQ9PT1zP2MucmlnaHQ6Yy5sZWZ0LGEmJnUmJmk8YS5pbmRleCYmaTx1LmluZGV4JiZHUChzLGEsdSk8MCYmdC5wdXNoKFtzLmRhdGEsYS5kYXRhLHUuZGF0YV0pfSkpLHR9LGxpbmtzOmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuZWRnZXMuZmlsdGVyKChmdW5jdGlvbih0KXtyZXR1cm4gdC5yaWdodH0pKS5tYXAoKGZ1bmN0aW9uKHQpe3JldHVybntzb3VyY2U6dC5sZWZ0LmRhdGEsdGFyZ2V0OnQucmlnaHQuZGF0YX19KSl9LGZpbmQ6ZnVuY3Rpb24odCxlLG4pe2Zvcih2YXIgaSxyLG89dGhpcyxhPW8uX2ZvdW5kfHwwLHM9by5jZWxscy5sZW5ndGg7IShyPW8uY2VsbHNbYV0pOylpZigrK2E+PXMpcmV0dXJuIG51bGw7dmFyIGw9dC1yLnNpdGVbMF0sYz1lLXIuc2l0ZVsxXSx1PWwqbCtjKmM7ZG97cj1vLmNlbGxzW2k9YV0sYT1udWxsLHIuaGFsZmVkZ2VzLmZvckVhY2goKGZ1bmN0aW9uKG4pe3ZhciBpPW8uZWRnZXNbbl0scz1pLmxlZnQ7aWYocyE9PXIuc2l0ZSYmc3x8KHM9aS5yaWdodCkpe3ZhciBsPXQtc1swXSxjPWUtc1sxXSxoPWwqbCtjKmM7aDx1JiYodT1oLGE9cy5pbmRleCl9fSkpfXdoaWxlKG51bGwhPT1hKTtyZXR1cm4gby5fZm91bmQ9aSxudWxsPT1ufHx1PD1uKm4/ci5zaXRlOm51bGx9fSwkUC5wcm90b3R5cGU9e2NvbnN0cnVjdG9yOiRQLHNjYWxlOmZ1bmN0aW9uKHQpe3JldHVybiAxPT09dD90aGlzOm5ldyAkUCh0aGlzLmsqdCx0aGlzLngsdGhpcy55KX0sdHJhbnNsYXRlOmZ1bmN0aW9uKHQsZSl7cmV0dXJuIDA9PT10JjA9PT1lP3RoaXM6bmV3ICRQKHRoaXMuayx0aGlzLngrdGhpcy5rKnQsdGhpcy55K3RoaXMuayplKX0sYXBwbHk6ZnVuY3Rpb24odCl7cmV0dXJuW3RbMF0qdGhpcy5rK3RoaXMueCx0WzFdKnRoaXMuayt0aGlzLnldfSxhcHBseVg6ZnVuY3Rpb24odCl7cmV0dXJuIHQqdGhpcy5rK3RoaXMueH0sYXBwbHlZOmZ1bmN0aW9uKHQpe3JldHVybiB0KnRoaXMuayt0aGlzLnl9LGludmVydDpmdW5jdGlvbih0KXtyZXR1cm5bKHRbMF0tdGhpcy54KS90aGlzLmssKHRbMV0tdGhpcy55KS90aGlzLmtdfSxpbnZlcnRYOmZ1bmN0aW9uKHQpe3JldHVybih0LXRoaXMueCkvdGhpcy5rfSxpbnZlcnRZOmZ1bmN0aW9uKHQpe3JldHVybih0LXRoaXMueSkvdGhpcy5rfSxyZXNjYWxlWDpmdW5jdGlvbih0KXtyZXR1cm4gdC5jb3B5KCkuZG9tYWluKHQucmFuZ2UoKS5tYXAodGhpcy5pbnZlcnRYLHRoaXMpLm1hcCh0LmludmVydCx0KSl9LHJlc2NhbGVZOmZ1bmN0aW9uKHQpe3JldHVybiB0LmNvcHkoKS5kb21haW4odC5yYW5nZSgpLm1hcCh0aGlzLmludmVydFksdGhpcykubWFwKHQuaW52ZXJ0LHQpKX0sdG9TdHJpbmc6ZnVuY3Rpb24oKXtyZXR1cm4idHJhbnNsYXRlKCIrdGhpcy54KyIsIit0aGlzLnkrIikgc2NhbGUoIit0aGlzLmsrIikifX07dmFyIEtQPW5ldyAkUCgxLDAsMCk7ZnVuY3Rpb24gWlAodCl7Zm9yKDshdC5fX3pvb207KWlmKCEodD10LnBhcmVudE5vZGUpKXJldHVybiBLUDtyZXR1cm4gdC5fX3pvb219ZnVuY3Rpb24gSlAoKXt1dS5zdG9wSW1tZWRpYXRlUHJvcGFnYXRpb24oKX1mdW5jdGlvbiBRUCgpe3V1LnByZXZlbnREZWZhdWx0KCksdXUuc3RvcEltbWVkaWF0ZVByb3BhZ2F0aW9uKCl9ZnVuY3Rpb24gdEkoKXtyZXR1cm4hdXUuY3RybEtleSYmIXV1LmJ1dHRvbn1mdW5jdGlvbiBlSSgpe3ZhciB0PXRoaXM7cmV0dXJuIHQgaW5zdGFuY2VvZiBTVkdFbGVtZW50Pyh0PXQub3duZXJTVkdFbGVtZW50fHx0KS5oYXNBdHRyaWJ1dGUoInZpZXdCb3giKT9bWyh0PXQudmlld0JveC5iYXNlVmFsKS54LHQueV0sW3QueCt0LndpZHRoLHQueSt0LmhlaWdodF1dOltbMCwwXSxbdC53aWR0aC5iYXNlVmFsLnZhbHVlLHQuaGVpZ2h0LmJhc2VWYWwudmFsdWVdXTpbWzAsMF0sW3QuY2xpZW50V2lkdGgsdC5jbGllbnRIZWlnaHRdXX1mdW5jdGlvbiBuSSgpe3JldHVybiB0aGlzLl9fem9vbXx8S1B9ZnVuY3Rpb24gaUkoKXtyZXR1cm4tdXUuZGVsdGFZKigxPT09dXUuZGVsdGFNb2RlPy4wNTp1dS5kZWx0YU1vZGU/MTouMDAyKX1mdW5jdGlvbiBySSgpe3JldHVybiBuYXZpZ2F0b3IubWF4VG91Y2hQb2ludHN8fCJvbnRvdWNoc3RhcnQiaW4gdGhpc31mdW5jdGlvbiBvSSh0LGUsbil7dmFyIGk9dC5pbnZlcnRYKGVbMF1bMF0pLW5bMF1bMF0scj10LmludmVydFgoZVsxXVswXSktblsxXVswXSxvPXQuaW52ZXJ0WShlWzBdWzFdKS1uWzBdWzFdLGE9dC5pbnZlcnRZKGVbMV1bMV0pLW5bMV1bMV07cmV0dXJuIHQudHJhbnNsYXRlKHI+aT8oaStyKS8yOk1hdGgubWluKDAsaSl8fE1hdGgubWF4KDAsciksYT5vPyhvK2EpLzI6TWF0aC5taW4oMCxvKXx8TWF0aC5tYXgoMCxhKSl9ZnVuY3Rpb24gYUkoKXt2YXIgdCxlLG49dEksaT1lSSxyPW9JLG89aUksYT1ySSxzPVswLDEvMF0sbD1bWy0xLzAsLTEvMF0sWzEvMCwxLzBdXSxjPTI1MCx1PW9wLGg9bGMoInN0YXJ0Iiwiem9vbSIsImVuZCIpLGQ9NTAwLHA9MDtmdW5jdGlvbiBmKHQpe3QucHJvcGVydHkoIl9fem9vbSIsbkkpLm9uKCJ3aGVlbC56b29tIix4KS5vbigibW91c2Vkb3duLnpvb20iLHcpLm9uKCJkYmxjbGljay56b29tIixTKS5maWx0ZXIoYSkub24oInRvdWNoc3RhcnQuem9vbSIsTSkub24oInRvdWNobW92ZS56b29tIixFKS5vbigidG91Y2hlbmQuem9vbSB0b3VjaGNhbmNlbC56b29tIixUKS5zdHlsZSgidG91Y2gtYWN0aW9uIiwibm9uZSIpLnN0eWxlKCItd2Via2l0LXRhcC1oaWdobGlnaHQtY29sb3IiLCJyZ2JhKDAsMCwwLDApIil9ZnVuY3Rpb24gbSh0LGUpe3JldHVybihlPU1hdGgubWF4KHNbMF0sTWF0aC5taW4oc1sxXSxlKSkpPT09dC5rP3Q6bmV3ICRQKGUsdC54LHQueSl9ZnVuY3Rpb24gZyh0LGUsbil7dmFyIGk9ZVswXS1uWzBdKnQuayxyPWVbMV0tblsxXSp0Lms7cmV0dXJuIGk9PT10LngmJnI9PT10Lnk/dDpuZXcgJFAodC5rLGkscil9ZnVuY3Rpb24gXyh0KXtyZXR1cm5bKCt0WzBdWzBdKyArdFsxXVswXSkvMiwoK3RbMF1bMV0rICt0WzFdWzFdKS8yXX1mdW5jdGlvbiB5KHQsZSxuKXt0Lm9uKCJzdGFydC56b29tIiwoZnVuY3Rpb24oKXt2KHRoaXMsYXJndW1lbnRzKS5zdGFydCgpfSkpLm9uKCJpbnRlcnJ1cHQuem9vbSBlbmQuem9vbSIsKGZ1bmN0aW9uKCl7dih0aGlzLGFyZ3VtZW50cykuZW5kKCl9KSkudHdlZW4oInpvb20iLChmdW5jdGlvbigpe3ZhciB0PXRoaXMscj1hcmd1bWVudHMsbz12KHQsciksYT1pLmFwcGx5KHQscikscz1udWxsPT1uP18oYSk6ImZ1bmN0aW9uIj09dHlwZW9mIG4/bi5hcHBseSh0LHIpOm4sbD1NYXRoLm1heChhWzFdWzBdLWFbMF1bMF0sYVsxXVsxXS1hWzBdWzFdKSxjPXQuX196b29tLGg9ImZ1bmN0aW9uIj09dHlwZW9mIGU/ZS5hcHBseSh0LHIpOmUsZD11KGMuaW52ZXJ0KHMpLmNvbmNhdChsL2MuayksaC5pbnZlcnQocykuY29uY2F0KGwvaC5rKSk7cmV0dXJuIGZ1bmN0aW9uKHQpe2lmKDE9PT10KXQ9aDtlbHNle3ZhciBlPWQodCksbj1sL2VbMl07dD1uZXcgJFAobixzWzBdLWVbMF0qbixzWzFdLWVbMV0qbil9by56b29tKG51bGwsdCl9fSkpfWZ1bmN0aW9uIHYodCxlLG4pe3JldHVybiFuJiZ0Ll9fem9vbWluZ3x8bmV3IGIodCxlKX1mdW5jdGlvbiBiKHQsZSl7dGhpcy50aGF0PXQsdGhpcy5hcmdzPWUsdGhpcy5hY3RpdmU9MCx0aGlzLmV4dGVudD1pLmFwcGx5KHQsZSksdGhpcy50YXBzPTB9ZnVuY3Rpb24geCgpe2lmKG4uYXBwbHkodGhpcyxhcmd1bWVudHMpKXt2YXIgdD12KHRoaXMsYXJndW1lbnRzKSxlPXRoaXMuX196b29tLGk9TWF0aC5tYXgoc1swXSxNYXRoLm1pbihzWzFdLGUuaypNYXRoLnBvdygyLG8uYXBwbHkodGhpcyxhcmd1bWVudHMpKSkpLGE9YWgodGhpcyk7aWYodC53aGVlbCl0Lm1vdXNlWzBdWzBdPT09YVswXSYmdC5tb3VzZVswXVsxXT09PWFbMV18fCh0Lm1vdXNlWzFdPWUuaW52ZXJ0KHQubW91c2VbMF09YSkpLGNsZWFyVGltZW91dCh0LndoZWVsKTtlbHNle2lmKGUuaz09PWkpcmV0dXJuO3QubW91c2U9W2EsZS5pbnZlcnQoYSldLFZwKHRoaXMpLHQuc3RhcnQoKX1RUCgpLHQud2hlZWw9c2V0VGltZW91dChjLDE1MCksdC56b29tKCJtb3VzZSIscihnKG0oZSxpKSx0Lm1vdXNlWzBdLHQubW91c2VbMV0pLHQuZXh0ZW50LGwpKX1mdW5jdGlvbiBjKCl7dC53aGVlbD1udWxsLHQuZW5kKCl9fWZ1bmN0aW9uIHcoKXtpZighZSYmbi5hcHBseSh0aGlzLGFyZ3VtZW50cykpe3ZhciB0PXYodGhpcyxhcmd1bWVudHMsITApLGk9U3UodXUudmlldykub24oIm1vdXNlbW92ZS56b29tIixjLCEwKS5vbigibW91c2V1cC56b29tIix1LCEwKSxvPWFoKHRoaXMpLGE9dXUuY2xpZW50WCxzPXV1LmNsaWVudFk7aGgodXUudmlldyksSlAoKSx0Lm1vdXNlPVtvLHRoaXMuX196b29tLmludmVydChvKV0sVnAodGhpcyksdC5zdGFydCgpfWZ1bmN0aW9uIGMoKXtpZihRUCgpLCF0Lm1vdmVkKXt2YXIgZT11dS5jbGllbnRYLWEsbj11dS5jbGllbnRZLXM7dC5tb3ZlZD1lKmUrbipuPnB9dC56b29tKCJtb3VzZSIscihnKHQudGhhdC5fX3pvb20sdC5tb3VzZVswXT1haCh0LnRoYXQpLHQubW91c2VbMV0pLHQuZXh0ZW50LGwpKX1mdW5jdGlvbiB1KCl7aS5vbigibW91c2Vtb3ZlLnpvb20gbW91c2V1cC56b29tIixudWxsKSxkaCh1dS52aWV3LHQubW92ZWQpLFFQKCksdC5lbmQoKX19ZnVuY3Rpb24gUygpe2lmKG4uYXBwbHkodGhpcyxhcmd1bWVudHMpKXt2YXIgdD10aGlzLl9fem9vbSxlPWFoKHRoaXMpLG89dC5pbnZlcnQoZSksYT10LmsqKHV1LnNoaWZ0S2V5Py41OjIpLHM9cihnKG0odCxhKSxlLG8pLGkuYXBwbHkodGhpcyxhcmd1bWVudHMpLGwpO1FQKCksYz4wP1N1KHRoaXMpLnRyYW5zaXRpb24oKS5kdXJhdGlvbihjKS5jYWxsKHkscyxlKTpTdSh0aGlzKS5jYWxsKGYudHJhbnNmb3JtLHMpfX1mdW5jdGlvbiBNKCl7aWYobi5hcHBseSh0aGlzLGFyZ3VtZW50cykpe3ZhciBlLGkscixvLGE9dXUudG91Y2hlcyxzPWEubGVuZ3RoLGw9dih0aGlzLGFyZ3VtZW50cyx1dS5jaGFuZ2VkVG91Y2hlcy5sZW5ndGg9PT1zKTtmb3IoSlAoKSxpPTA7aTxzOysraSlvPVtvPWxoKHRoaXMsYSwocj1hW2ldKS5pZGVudGlmaWVyKSx0aGlzLl9fem9vbS5pbnZlcnQobyksci5pZGVudGlmaWVyXSxsLnRvdWNoMD9sLnRvdWNoMXx8bC50b3VjaDBbMl09PT1vWzJdfHwobC50b3VjaDE9byxsLnRhcHM9MCk6KGwudG91Y2gwPW8sZT0hMCxsLnRhcHM9MSshIXQpO3QmJih0PWNsZWFyVGltZW91dCh0KSksZSYmKGwudGFwczwyJiYodD1zZXRUaW1lb3V0KChmdW5jdGlvbigpe3Q9bnVsbH0pLGQpKSxWcCh0aGlzKSxsLnN0YXJ0KCkpfX1mdW5jdGlvbiBFKCl7aWYodGhpcy5fX3pvb21pbmcpe3ZhciBlLG4saSxvLGE9dih0aGlzLGFyZ3VtZW50cykscz11dS5jaGFuZ2VkVG91Y2hlcyxjPXMubGVuZ3RoO2ZvcihRUCgpLHQmJih0PWNsZWFyVGltZW91dCh0KSksYS50YXBzPTAsZT0wO2U8YzsrK2UpaT1saCh0aGlzLHMsKG49c1tlXSkuaWRlbnRpZmllciksYS50b3VjaDAmJmEudG91Y2gwWzJdPT09bi5pZGVudGlmaWVyP2EudG91Y2gwWzBdPWk6YS50b3VjaDEmJmEudG91Y2gxWzJdPT09bi5pZGVudGlmaWVyJiYoYS50b3VjaDFbMF09aSk7aWYobj1hLnRoYXQuX196b29tLGEudG91Y2gxKXt2YXIgdT1hLnRvdWNoMFswXSxoPWEudG91Y2gwWzFdLGQ9YS50b3VjaDFbMF0scD1hLnRvdWNoMVsxXSxmPShmPWRbMF0tdVswXSkqZisoZj1kWzFdLXVbMV0pKmYsXz0oXz1wWzBdLWhbMF0pKl8rKF89cFsxXS1oWzFdKSpfO249bShuLE1hdGguc3FydChmL18pKSxpPVsodVswXStkWzBdKS8yLCh1WzFdK2RbMV0pLzJdLG89WyhoWzBdK3BbMF0pLzIsKGhbMV0rcFsxXSkvMl19ZWxzZXtpZighYS50b3VjaDApcmV0dXJuO2k9YS50b3VjaDBbMF0sbz1hLnRvdWNoMFsxXX1hLnpvb20oInRvdWNoIixyKGcobixpLG8pLGEuZXh0ZW50LGwpKX19ZnVuY3Rpb24gVCgpe2lmKHRoaXMuX196b29taW5nKXt2YXIgdCxuLGk9dih0aGlzLGFyZ3VtZW50cykscj11dS5jaGFuZ2VkVG91Y2hlcyxvPXIubGVuZ3RoO2ZvcihKUCgpLGUmJmNsZWFyVGltZW91dChlKSxlPXNldFRpbWVvdXQoKGZ1bmN0aW9uKCl7ZT1udWxsfSksZCksdD0wO3Q8bzsrK3Qpbj1yW3RdLGkudG91Y2gwJiZpLnRvdWNoMFsyXT09PW4uaWRlbnRpZmllcj9kZWxldGUgaS50b3VjaDA6aS50b3VjaDEmJmkudG91Y2gxWzJdPT09bi5pZGVudGlmaWVyJiZkZWxldGUgaS50b3VjaDE7aWYoaS50b3VjaDEmJiFpLnRvdWNoMCYmKGkudG91Y2gwPWkudG91Y2gxLGRlbGV0ZSBpLnRvdWNoMSksaS50b3VjaDApaS50b3VjaDBbMV09dGhpcy5fX3pvb20uaW52ZXJ0KGkudG91Y2gwWzBdKTtlbHNlIGlmKGkuZW5kKCksMj09PWkudGFwcyl7dmFyIGE9U3UodGhpcykub24oImRibGNsaWNrLnpvb20iKTthJiZhLmFwcGx5KHRoaXMsYXJndW1lbnRzKX19fXJldHVybiBmLnRyYW5zZm9ybT1mdW5jdGlvbih0LGUsbil7dmFyIGk9dC5zZWxlY3Rpb24/dC5zZWxlY3Rpb24oKTp0O2kucHJvcGVydHkoIl9fem9vbSIsbkkpLHQhPT1pP3kodCxlLG4pOmkuaW50ZXJydXB0KCkuZWFjaCgoZnVuY3Rpb24oKXt2KHRoaXMsYXJndW1lbnRzKS5zdGFydCgpLnpvb20obnVsbCwiZnVuY3Rpb24iPT10eXBlb2YgZT9lLmFwcGx5KHRoaXMsYXJndW1lbnRzKTplKS5lbmQoKX0pKX0sZi5zY2FsZUJ5PWZ1bmN0aW9uKHQsZSxuKXtmLnNjYWxlVG8odCwoZnVuY3Rpb24oKXt2YXIgdD10aGlzLl9fem9vbS5rLG49ImZ1bmN0aW9uIj09dHlwZW9mIGU/ZS5hcHBseSh0aGlzLGFyZ3VtZW50cyk6ZTtyZXR1cm4gdCpufSksbil9LGYuc2NhbGVUbz1mdW5jdGlvbih0LGUsbil7Zi50cmFuc2Zvcm0odCwoZnVuY3Rpb24oKXt2YXIgdD1pLmFwcGx5KHRoaXMsYXJndW1lbnRzKSxvPXRoaXMuX196b29tLGE9bnVsbD09bj9fKHQpOiJmdW5jdGlvbiI9PXR5cGVvZiBuP24uYXBwbHkodGhpcyxhcmd1bWVudHMpOm4scz1vLmludmVydChhKSxjPSJmdW5jdGlvbiI9PXR5cGVvZiBlP2UuYXBwbHkodGhpcyxhcmd1bWVudHMpOmU7cmV0dXJuIHIoZyhtKG8sYyksYSxzKSx0LGwpfSksbil9LGYudHJhbnNsYXRlQnk9ZnVuY3Rpb24odCxlLG4pe2YudHJhbnNmb3JtKHQsKGZ1bmN0aW9uKCl7cmV0dXJuIHIodGhpcy5fX3pvb20udHJhbnNsYXRlKCJmdW5jdGlvbiI9PXR5cGVvZiBlP2UuYXBwbHkodGhpcyxhcmd1bWVudHMpOmUsImZ1bmN0aW9uIj09dHlwZW9mIG4/bi5hcHBseSh0aGlzLGFyZ3VtZW50cyk6biksaS5hcHBseSh0aGlzLGFyZ3VtZW50cyksbCl9KSl9LGYudHJhbnNsYXRlVG89ZnVuY3Rpb24odCxlLG4sbyl7Zi50cmFuc2Zvcm0odCwoZnVuY3Rpb24oKXt2YXIgdD1pLmFwcGx5KHRoaXMsYXJndW1lbnRzKSxhPXRoaXMuX196b29tLHM9bnVsbD09bz9fKHQpOiJmdW5jdGlvbiI9PXR5cGVvZiBvP28uYXBwbHkodGhpcyxhcmd1bWVudHMpOm87cmV0dXJuIHIoS1AudHJhbnNsYXRlKHNbMF0sc1sxXSkuc2NhbGUoYS5rKS50cmFuc2xhdGUoImZ1bmN0aW9uIj09dHlwZW9mIGU/LWUuYXBwbHkodGhpcyxhcmd1bWVudHMpOi1lLCJmdW5jdGlvbiI9PXR5cGVvZiBuPy1uLmFwcGx5KHRoaXMsYXJndW1lbnRzKTotbiksdCxsKX0pLG8pfSxiLnByb3RvdHlwZT17c3RhcnQ6ZnVuY3Rpb24oKXtyZXR1cm4gMT09Kyt0aGlzLmFjdGl2ZSYmKHRoaXMudGhhdC5fX3pvb21pbmc9dGhpcyx0aGlzLmVtaXQoInN0YXJ0IikpLHRoaXN9LHpvb206ZnVuY3Rpb24odCxlKXtyZXR1cm4gdGhpcy5tb3VzZSYmIm1vdXNlIiE9PXQmJih0aGlzLm1vdXNlWzFdPWUuaW52ZXJ0KHRoaXMubW91c2VbMF0pKSx0aGlzLnRvdWNoMCYmInRvdWNoIiE9PXQmJih0aGlzLnRvdWNoMFsxXT1lLmludmVydCh0aGlzLnRvdWNoMFswXSkpLHRoaXMudG91Y2gxJiYidG91Y2giIT09dCYmKHRoaXMudG91Y2gxWzFdPWUuaW52ZXJ0KHRoaXMudG91Y2gxWzBdKSksdGhpcy50aGF0Ll9fem9vbT1lLHRoaXMuZW1pdCgiem9vbSIpLHRoaXN9LGVuZDpmdW5jdGlvbigpe3JldHVybiAwPT0tLXRoaXMuYWN0aXZlJiYoZGVsZXRlIHRoaXMudGhhdC5fX3pvb21pbmcsdGhpcy5lbWl0KCJlbmQiKSksdGhpc30sZW1pdDpmdW5jdGlvbih0KXtndShuZXcgWFAoZix0LHRoaXMudGhhdC5fX3pvb20pLGguYXBwbHksaCxbdCx0aGlzLnRoYXQsdGhpcy5hcmdzXSl9fSxmLndoZWVsRGVsdGE9ZnVuY3Rpb24odCl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KG89ImZ1bmN0aW9uIj09dHlwZW9mIHQ/dDpZUCgrdCksZik6b30sZi5maWx0ZXI9ZnVuY3Rpb24odCl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KG49ImZ1bmN0aW9uIj09dHlwZW9mIHQ/dDpZUCghIXQpLGYpOm59LGYudG91Y2hhYmxlPWZ1bmN0aW9uKHQpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyhhPSJmdW5jdGlvbiI9PXR5cGVvZiB0P3Q6WVAoISF0KSxmKTphfSxmLmV4dGVudD1mdW5jdGlvbih0KXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8oaT0iZnVuY3Rpb24iPT10eXBlb2YgdD90OllQKFtbK3RbMF1bMF0sK3RbMF1bMV1dLFsrdFsxXVswXSwrdFsxXVsxXV1dKSxmKTppfSxmLnNjYWxlRXh0ZW50PWZ1bmN0aW9uKHQpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyhzWzBdPSt0WzBdLHNbMV09K3RbMV0sZik6W3NbMF0sc1sxXV19LGYudHJhbnNsYXRlRXh0ZW50PWZ1bmN0aW9uKHQpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyhsWzBdWzBdPSt0WzBdWzBdLGxbMV1bMF09K3RbMV1bMF0sbFswXVsxXT0rdFswXVsxXSxsWzFdWzFdPSt0WzFdWzFdLGYpOltbbFswXVswXSxsWzBdWzFdXSxbbFsxXVswXSxsWzFdWzFdXV19LGYuY29uc3RyYWluPWZ1bmN0aW9uKHQpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyhyPXQsZik6cn0sZi5kdXJhdGlvbj1mdW5jdGlvbih0KXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8oYz0rdCxmKTpjfSxmLmludGVycG9sYXRlPWZ1bmN0aW9uKHQpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyh1PXQsZik6dX0sZi5vbj1mdW5jdGlvbigpe3ZhciB0PWgub24uYXBwbHkoaCxhcmd1bWVudHMpO3JldHVybiB0PT09aD9mOnR9LGYuY2xpY2tEaXN0YW5jZT1mdW5jdGlvbih0KXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8ocD0odD0rdCkqdCxmKTpNYXRoLnNxcnQocCl9LGZ9WlAucHJvdG90eXBlPSRQLnByb3RvdHlwZTt2YXIgc0k9T2JqZWN0LmZyZWV6ZSh7X19wcm90b19fOm51bGwsdmVyc2lvbjoiNS43LjAiLGJpc2VjdDpTbCxiaXNlY3RSaWdodDpTbCxiaXNlY3RMZWZ0Ok1sLGFzY2VuZGluZzpibCxiaXNlY3Rvcjp4bCxjcm9zczpUbCxkZXNjZW5kaW5nOmZ1bmN0aW9uIGxJKHQsZSl7cmV0dXJuIGU8dD8tMTplPnQ/MTplPj10PzA6TmFOfSxkZXZpYXRpb246a2wsZXh0ZW50OkxsLGhpc3RvZ3JhbTpmdW5jdGlvbiBjSSgpe3ZhciB0PVJsLGU9TGwsbj1VbDtmdW5jdGlvbiBpKGkpe3ZhciByLG8sYT1pLmxlbmd0aCxzPW5ldyBBcnJheShhKTtmb3Iocj0wO3I8YTsrK3Ipc1tyXT10KGlbcl0scixpKTt2YXIgbD1lKHMpLGM9bFswXSx1PWxbMV0saD1uKHMsYyx1KTtBcnJheS5pc0FycmF5KGgpfHwoaD1qbChjLHUsaCksaD16bChNYXRoLmNlaWwoYy9oKSpoLHUsaCkpO2Zvcih2YXIgZD1oLmxlbmd0aDtoWzBdPD1jOyloLnNoaWZ0KCksLS1kO2Zvcig7aFtkLTFdPnU7KWgucG9wKCksLS1kO3ZhciBwLGY9bmV3IEFycmF5KGQrMSk7Zm9yKHI9MDtyPD1kOysrcikocD1mW3JdPVtdKS54MD1yPjA/aFtyLTFdOmMscC54MT1yPGQ/aFtyXTp1O2ZvcihyPTA7cjxhOysrciljPD0obz1zW3JdKSYmbzw9dSYmZltTbChoLG8sMCxkKV0ucHVzaChpW3JdKTtyZXR1cm4gZn1yZXR1cm4gaS52YWx1ZT1mdW5jdGlvbihlKXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8odD0iZnVuY3Rpb24iPT10eXBlb2YgZT9lOk9sKGUpLGkpOnR9LGkuZG9tYWluPWZ1bmN0aW9uKHQpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyhlPSJmdW5jdGlvbiI9PXR5cGVvZiB0P3Q6T2woW3RbMF0sdFsxXV0pLGkpOmV9LGkudGhyZXNob2xkcz1mdW5jdGlvbih0KXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8obj0iZnVuY3Rpb24iPT10eXBlb2YgdD90OkFycmF5LmlzQXJyYXkodCk/T2woSWwuY2FsbCh0KSk6T2wodCksaSk6bn0saX0sdGhyZXNob2xkRnJlZWRtYW5EaWFjb25pczpmdW5jdGlvbiB1SSh0LGUsbil7cmV0dXJuIHQ9TmwuY2FsbCh0LEFsKS5zb3J0KGJsKSxNYXRoLmNlaWwoKG4tZSkvKDIqKEdsKHQsLjc1KS1HbCh0LC4yNSkpKk1hdGgucG93KHQubGVuZ3RoLC0xLzMpKSl9LHRocmVzaG9sZFNjb3R0OmZ1bmN0aW9uIGhJKHQsZSxuKXtyZXR1cm4gTWF0aC5jZWlsKChuLWUpLygzLjUqa2wodCkqTWF0aC5wb3codC5sZW5ndGgsLTEvMykpKX0sdGhyZXNob2xkU3R1cmdlczpVbCxtYXg6V2wsbWVhbjpmdW5jdGlvbiBkSSh0LGUpe3ZhciBuLGk9dC5sZW5ndGgscj1pLG89LTEsYT0wO2lmKG51bGw9PWUpZm9yKDsrK288aTspaXNOYU4obj1BbCh0W29dKSk/LS1yOmErPW47ZWxzZSBmb3IoOysrbzxpOylpc05hTihuPUFsKGUodFtvXSxvLHQpKSk/LS1yOmErPW47aWYocilyZXR1cm4gYS9yfSxtZWRpYW46ZnVuY3Rpb24gcEkodCxlKXt2YXIgbixpPXQubGVuZ3RoLHI9LTEsbz1bXTtpZihudWxsPT1lKWZvcig7KytyPGk7KWlzTmFOKG49QWwodFtyXSkpfHxvLnB1c2gobik7ZWxzZSBmb3IoOysrcjxpOylpc05hTihuPUFsKGUodFtyXSxyLHQpKSl8fG8ucHVzaChuKTtyZXR1cm4gR2woby5zb3J0KGJsKSwuNSl9LG1lcmdlOnFsLG1pbjpZbCxwYWlyczpmdW5jdGlvbiBmSSh0LGUpe251bGw9PWUmJihlPUVsKTtmb3IodmFyIG49MCxpPXQubGVuZ3RoLTEscj10WzBdLG89bmV3IEFycmF5KGk8MD8wOmkpO248aTspb1tuXT1lKHIscj10Wysrbl0pO3JldHVybiBvfSxwZXJtdXRlOmZ1bmN0aW9uIG1JKHQsZSl7Zm9yKHZhciBuPWUubGVuZ3RoLGk9bmV3IEFycmF5KG4pO24tLTspaVtuXT10W2Vbbl1dO3JldHVybiBpfSxxdWFudGlsZTpHbCxyYW5nZTp6bCxzY2FuOmZ1bmN0aW9uIGdJKHQsZSl7aWYobj10Lmxlbmd0aCl7dmFyIG4saSxyPTAsbz0wLGE9dFtvXTtmb3IobnVsbD09ZSYmKGU9YmwpOysrcjxuOykoZShpPXRbcl0sYSk8MHx8MCE9PWUoYSxhKSkmJihhPWksbz1yKTtyZXR1cm4gMD09PWUoYSxhKT9vOnZvaWQgMH19LHNodWZmbGU6ZnVuY3Rpb24gX0kodCxlLG4pe2Zvcih2YXIgaSxyLG89KG51bGw9PW4/dC5sZW5ndGg6biktKGU9bnVsbD09ZT8wOitlKTtvOylyPU1hdGgucmFuZG9tKCkqby0tfDAsaT10W28rZV0sdFtvK2VdPXRbcitlXSx0W3IrZV09aTtyZXR1cm4gdH0sc3VtOmZ1bmN0aW9uIHlJKHQsZSl7dmFyIG4saT10Lmxlbmd0aCxyPS0xLG89MDtpZihudWxsPT1lKWZvcig7KytyPGk7KShuPSt0W3JdKSYmKG8rPW4pO2Vsc2UgZm9yKDsrK3I8aTspKG49K2UodFtyXSxyLHQpKSYmKG8rPW4pO3JldHVybiBvfSx0aWNrczpGbCx0aWNrSW5jcmVtZW50OlZsLHRpY2tTdGVwOmpsLHRyYW5zcG9zZTpYbCx2YXJpYW5jZTpDbCx6aXA6ZnVuY3Rpb24gdkkoKXtyZXR1cm4gWGwoYXJndW1lbnRzKX0sYXhpc1RvcDpmdW5jdGlvbiBiSSh0KXtyZXR1cm4gcmMoMSx0KX0sYXhpc1JpZ2h0OmZ1bmN0aW9uIHhJKHQpe3JldHVybiByYygyLHQpfSxheGlzQm90dG9tOm9jLGF4aXNMZWZ0OmFjLGJydXNoOlptLGJydXNoWDpmdW5jdGlvbiB3SSgpe3JldHVybiBKbShSbSl9LGJydXNoWTpLbSxicnVzaFNlbGVjdGlvbjokbSxjaG9yZDpmdW5jdGlvbiBTSSgpe3ZhciB0PTAsZT1udWxsLG49bnVsbCxpPW51bGw7ZnVuY3Rpb24gcihyKXt2YXIgbyxhLHMsbCxjLHUsaD1yLmxlbmd0aCxkPVtdLHA9emwoaCksZj1bXSxtPVtdLGc9bS5ncm91cHM9bmV3IEFycmF5KGgpLF89bmV3IEFycmF5KGgqaCk7Zm9yKG89MCxjPS0xOysrYzxoOyl7Zm9yKGE9MCx1PS0xOysrdTxoOylhKz1yW2NdW3VdO2QucHVzaChhKSxmLnB1c2goemwoaCkpLG8rPWF9Zm9yKGUmJnAuc29ydCgoZnVuY3Rpb24odCxuKXtyZXR1cm4gZShkW3RdLGRbbl0pfSkpLG4mJmYuZm9yRWFjaCgoZnVuY3Rpb24odCxlKXt0LnNvcnQoKGZ1bmN0aW9uKHQsaSl7cmV0dXJuIG4ocltlXVt0XSxyW2VdW2ldKX0pKX0pKSxsPShvPXJnKDAsaWctdCpoKS9vKT90OmlnL2gsYT0wLGM9LTE7KytjPGg7KXtmb3Iocz1hLHU9LTE7Kyt1PGg7KXt2YXIgeT1wW2NdLHY9Zlt5XVt1XSxiPXJbeV1bdl0seD1hLHc9YSs9YipvO19bdipoK3ldPXtpbmRleDp5LHN1YmluZGV4OnYsc3RhcnRBbmdsZTp4LGVuZEFuZ2xlOncsdmFsdWU6Yn19Z1t5XT17aW5kZXg6eSxzdGFydEFuZ2xlOnMsZW5kQW5nbGU6YSx2YWx1ZTpkW3ldfSxhKz1sfWZvcihjPS0xOysrYzxoOylmb3IodT1jLTE7Kyt1PGg7KXt2YXIgUz1fW3UqaCtjXSxNPV9bYypoK3VdOyhTLnZhbHVlfHxNLnZhbHVlKSYmbS5wdXNoKFMudmFsdWU8TS52YWx1ZT97c291cmNlOk0sdGFyZ2V0OlN9Ontzb3VyY2U6Uyx0YXJnZXQ6TX0pfXJldHVybiBpP20uc29ydChpKTptfXJldHVybiByLnBhZEFuZ2xlPWZ1bmN0aW9uKGUpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyh0PXJnKDAsZSkscik6dH0sci5zb3J0R3JvdXBzPWZ1bmN0aW9uKHQpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyhlPXQscik6ZX0sci5zb3J0U3ViZ3JvdXBzPWZ1bmN0aW9uKHQpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyhuPXQscik6bn0sci5zb3J0Q2hvcmRzPWZ1bmN0aW9uKHQpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyhudWxsPT10P2k9bnVsbDooaT1vZyh0KSkuXz10LHIpOmkmJmkuX30scn0scmliYm9uOmZ1bmN0aW9uIE1JKCl7dmFyIHQ9ZmcsZT1tZyxuPWdnLGk9X2cscj15ZyxvPW51bGw7ZnVuY3Rpb24gYSgpe3ZhciBhLHM9YWcuY2FsbChhcmd1bWVudHMpLGw9dC5hcHBseSh0aGlzLHMpLGM9ZS5hcHBseSh0aGlzLHMpLHU9K24uYXBwbHkodGhpcywoc1swXT1sLHMpKSxoPWkuYXBwbHkodGhpcyxzKS1uZyxkPXIuYXBwbHkodGhpcyxzKS1uZyxwPXUqUW0oaCksZj11KnRnKGgpLG09K24uYXBwbHkodGhpcywoc1swXT1jLHMpKSxnPWkuYXBwbHkodGhpcyxzKS1uZyxfPXIuYXBwbHkodGhpcyxzKS1uZztpZihvfHwobz1hPXBnKCkpLG8ubW92ZVRvKHAsZiksby5hcmMoMCwwLHUsaCxkKSxoPT09ZyYmZD09PV98fChvLnF1YWRyYXRpY0N1cnZlVG8oMCwwLG0qUW0oZyksbSp0ZyhnKSksby5hcmMoMCwwLG0sZyxfKSksby5xdWFkcmF0aWNDdXJ2ZVRvKDAsMCxwLGYpLG8uY2xvc2VQYXRoKCksYSlyZXR1cm4gbz1udWxsLGErIiJ8fG51bGx9cmV0dXJuIGEucmFkaXVzPWZ1bmN0aW9uKHQpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyhuPSJmdW5jdGlvbiI9PXR5cGVvZiB0P3Q6c2coK3QpLGEpOm59LGEuc3RhcnRBbmdsZT1mdW5jdGlvbih0KXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8oaT0iZnVuY3Rpb24iPT10eXBlb2YgdD90OnNnKCt0KSxhKTppfSxhLmVuZEFuZ2xlPWZ1bmN0aW9uKHQpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyhyPSJmdW5jdGlvbiI9PXR5cGVvZiB0P3Q6c2coK3QpLGEpOnJ9LGEuc291cmNlPWZ1bmN0aW9uKGUpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyh0PWUsYSk6dH0sYS50YXJnZXQ9ZnVuY3Rpb24odCl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KGU9dCxhKTplfSxhLmNvbnRleHQ9ZnVuY3Rpb24odCl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KG89bnVsbD09dD9udWxsOnQsYSk6b30sYX0sbmVzdDpmdW5jdGlvbiBFSSgpe3ZhciB0LGUsbixpPVtdLHI9W107ZnVuY3Rpb24gbyhuLHIsYSxzKXtpZihyPj1pLmxlbmd0aClyZXR1cm4gbnVsbCE9dCYmbi5zb3J0KHQpLG51bGwhPWU/ZShuKTpuO2Zvcih2YXIgbCxjLHUsaD0tMSxkPW4ubGVuZ3RoLHA9aVtyKytdLGY9eGcoKSxtPWEoKTsrK2g8ZDspKHU9Zi5nZXQobD1wKGM9bltoXSkrIiIpKT91LnB1c2goYyk6Zi5zZXQobCxbY10pO3JldHVybiBmLmVhY2goKGZ1bmN0aW9uKHQsZSl7cyhtLGUsbyh0LHIsYSxzKSl9KSksbX1mdW5jdGlvbiBhKHQsbil7aWYoKytuPmkubGVuZ3RoKXJldHVybiB0O3ZhciBvLHM9cltuLTFdO3JldHVybiBudWxsIT1lJiZuPj1pLmxlbmd0aD9vPXQuZW50cmllcygpOihvPVtdLHQuZWFjaCgoZnVuY3Rpb24odCxlKXtvLnB1c2goe2tleTplLHZhbHVlczphKHQsbil9KX0pKSksbnVsbCE9cz9vLnNvcnQoKGZ1bmN0aW9uKHQsZSl7cmV0dXJuIHModC5rZXksZS5rZXkpfSkpOm99cmV0dXJuIG49e29iamVjdDpmdW5jdGlvbih0KXtyZXR1cm4gbyh0LDAsd2csU2cpfSxtYXA6ZnVuY3Rpb24odCl7cmV0dXJuIG8odCwwLE1nLEVnKX0sZW50cmllczpmdW5jdGlvbih0KXtyZXR1cm4gYShvKHQsMCxNZyxFZyksMCl9LGtleTpmdW5jdGlvbih0KXtyZXR1cm4gaS5wdXNoKHQpLG59LHNvcnRLZXlzOmZ1bmN0aW9uKHQpe3JldHVybiByW2kubGVuZ3RoLTFdPXQsbn0sc29ydFZhbHVlczpmdW5jdGlvbihlKXtyZXR1cm4gdD1lLG59LHJvbGx1cDpmdW5jdGlvbih0KXtyZXR1cm4gZT10LG59fX0sc2V0OkNnLG1hcDp4ZyxrZXlzOmtnLHZhbHVlczpmdW5jdGlvbiBUSSh0KXt2YXIgZT1bXTtmb3IodmFyIG4gaW4gdCllLnB1c2godFtuXSk7cmV0dXJuIGV9LGVudHJpZXM6ZnVuY3Rpb24gQUkodCl7dmFyIGU9W107Zm9yKHZhciBuIGluIHQpZS5wdXNoKHtrZXk6bix2YWx1ZTp0W25dfSk7cmV0dXJuIGV9LGNvbG9yOkJoLHJnYjpqaCxoc2w6JGgsbGFiOnNkLGhjbDpmZCxsY2g6ZnVuY3Rpb24gQ0kodCxlLG4saSl7cmV0dXJuIDE9PT1hcmd1bWVudHMubGVuZ3RoP3BkKHQpOm5ldyBtZChuLGUsdCxudWxsPT1pPzE6aSl9LGdyYXk6ZnVuY3Rpb24ga0kodCxlKXtyZXR1cm4gbmV3IGxkKHQsMCwwLG51bGw9PWU/MTplKX0sY3ViZWhlbGl4OnhkLGNvbnRvdXJzOkJnLGNvbnRvdXJEZW5zaXR5OmZ1bmN0aW9uIExJKCl7dmFyIHQ9VmcsZT1qZyxuPVVnLGk9OTYwLHI9NTAwLG89MjAsYT0yLHM9MypvLGw9aSsyKnM+PmEsYz1yKzIqcz4+YSx1PUlnKDIwKTtmdW5jdGlvbiBoKGkpe3ZhciByPW5ldyBGbG9hdDMyQXJyYXkobCpjKSxoPW5ldyBGbG9hdDMyQXJyYXkobCpjKTtpLmZvckVhY2goKGZ1bmN0aW9uKGksbyx1KXt2YXIgaD0rdChpLG8sdSkrcz4+YSxkPStlKGksbyx1KStzPj5hLHA9K24oaSxvLHUpO2g+PTAmJmg8bCYmZD49MCYmZDxjJiYocltoK2QqbF0rPXApfSkpLEhnKHt3aWR0aDpsLGhlaWdodDpjLGRhdGE6cn0se3dpZHRoOmwsaGVpZ2h0OmMsZGF0YTpofSxvPj5hKSxGZyh7d2lkdGg6bCxoZWlnaHQ6YyxkYXRhOmh9LHt3aWR0aDpsLGhlaWdodDpjLGRhdGE6cn0sbz4+YSksSGcoe3dpZHRoOmwsaGVpZ2h0OmMsZGF0YTpyfSx7d2lkdGg6bCxoZWlnaHQ6YyxkYXRhOmh9LG8+PmEpLEZnKHt3aWR0aDpsLGhlaWdodDpjLGRhdGE6aH0se3dpZHRoOmwsaGVpZ2h0OmMsZGF0YTpyfSxvPj5hKSxIZyh7d2lkdGg6bCxoZWlnaHQ6YyxkYXRhOnJ9LHt3aWR0aDpsLGhlaWdodDpjLGRhdGE6aH0sbz4+YSksRmcoe3dpZHRoOmwsaGVpZ2h0OmMsZGF0YTpofSx7d2lkdGg6bCxoZWlnaHQ6YyxkYXRhOnJ9LG8+PmEpO3ZhciBwPXUocik7aWYoIUFycmF5LmlzQXJyYXkocCkpe3ZhciBmPVdsKHIpO3A9amwoMCxmLHApLChwPXpsKDAsTWF0aC5mbG9vcihmL3ApKnAscCkpLnNoaWZ0KCl9cmV0dXJuIEJnKCkudGhyZXNob2xkcyhwKS5zaXplKFtsLGNdKShyKS5tYXAoZCl9ZnVuY3Rpb24gZCh0KXtyZXR1cm4gdC52YWx1ZSo9TWF0aC5wb3coMiwtMiphKSx0LmNvb3JkaW5hdGVzLmZvckVhY2gocCksdH1mdW5jdGlvbiBwKHQpe3QuZm9yRWFjaChmKX1mdW5jdGlvbiBmKHQpe3QuZm9yRWFjaChtKX1mdW5jdGlvbiBtKHQpe3RbMF09dFswXSpNYXRoLnBvdygyLGEpLXMsdFsxXT10WzFdKk1hdGgucG93KDIsYSktc31mdW5jdGlvbiBnKCl7cmV0dXJuIGw9aSsyKihzPTMqbyk+PmEsYz1yKzIqcz4+YSxofXJldHVybiBoLng9ZnVuY3Rpb24oZSl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KHQ9ImZ1bmN0aW9uIj09dHlwZW9mIGU/ZTpJZygrZSksaCk6dH0saC55PWZ1bmN0aW9uKHQpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyhlPSJmdW5jdGlvbiI9PXR5cGVvZiB0P3Q6SWcoK3QpLGgpOmV9LGgud2VpZ2h0PWZ1bmN0aW9uKHQpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyhuPSJmdW5jdGlvbiI9PXR5cGVvZiB0P3Q6SWcoK3QpLGgpOm59LGguc2l6ZT1mdW5jdGlvbih0KXtpZighYXJndW1lbnRzLmxlbmd0aClyZXR1cm5baSxyXTt2YXIgZT1NYXRoLmNlaWwodFswXSksbj1NYXRoLmNlaWwodFsxXSk7aWYoIShlPj0wfHxlPj0wKSl0aHJvdyBuZXcgRXJyb3IoImludmFsaWQgc2l6ZSIpO3JldHVybiBpPWUscj1uLGcoKX0saC5jZWxsU2l6ZT1mdW5jdGlvbih0KXtpZighYXJndW1lbnRzLmxlbmd0aClyZXR1cm4gMTw8YTtpZighKCh0PSt0KT49MSkpdGhyb3cgbmV3IEVycm9yKCJpbnZhbGlkIGNlbGwgc2l6ZSIpO3JldHVybiBhPU1hdGguZmxvb3IoTWF0aC5sb2codCkvTWF0aC5MTjIpLGcoKX0saC50aHJlc2hvbGRzPWZ1bmN0aW9uKHQpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyh1PSJmdW5jdGlvbiI9PXR5cGVvZiB0P3Q6QXJyYXkuaXNBcnJheSh0KT9JZyhMZy5jYWxsKHQpKTpJZyh0KSxoKTp1fSxoLmJhbmR3aWR0aD1mdW5jdGlvbih0KXtpZighYXJndW1lbnRzLmxlbmd0aClyZXR1cm4gTWF0aC5zcXJ0KG8qKG8rMSkpO2lmKCEoKHQ9K3QpPj0wKSl0aHJvdyBuZXcgRXJyb3IoImludmFsaWQgYmFuZHdpZHRoIik7cmV0dXJuIG89TWF0aC5yb3VuZCgoTWF0aC5zcXJ0KDQqdCp0KzEpLTEpLzIpLGcoKX0saH0sZGlzcGF0Y2g6bGMsZHJhZzp2aCxkcmFnRGlzYWJsZTpoaCxkcmFnRW5hYmxlOmRoLGRzdkZvcm1hdDokZyxjc3ZQYXJzZTpaZyxjc3ZQYXJzZVJvd3M6SmcsY3N2Rm9ybWF0OlFnLGNzdkZvcm1hdEJvZHk6dF8sY3N2Rm9ybWF0Um93czplXyxjc3ZGb3JtYXRSb3c6bl8sY3N2Rm9ybWF0VmFsdWU6aV8sdHN2UGFyc2U6b18sdHN2UGFyc2VSb3dzOmFfLHRzdkZvcm1hdDpzXyx0c3ZGb3JtYXRCb2R5OmxfLHRzdkZvcm1hdFJvd3M6Y18sdHN2Rm9ybWF0Um93OnVfLHRzdkZvcm1hdFZhbHVlOmhfLGF1dG9UeXBlOmZ1bmN0aW9uIFBJKHQpe2Zvcih2YXIgZSBpbiB0KXt2YXIgbixpLHI9dFtlXS50cmltKCk7aWYocilpZigidHJ1ZSI9PT1yKXI9ITA7ZWxzZSBpZigiZmFsc2UiPT09cilyPSExO2Vsc2UgaWYoIk5hTiI9PT1yKXI9TmFOO2Vsc2UgaWYoaXNOYU4obj0rcikpe2lmKCEoaT1yLm1hdGNoKC9eKFstK11cZHsyfSk/XGR7NH0oLVxkezJ9KC1cZHsyfSk/KT8oVFxkezJ9OlxkezJ9KDpcZHsyfShcLlxkezN9KT8pPyhafFstK11cZHsyfTpcZHsyfSk/KT8kLykpKWNvbnRpbnVlO2RfJiZpWzRdJiYhaVs3XSYmKHI9ci5yZXBsYWNlKC8tL2csIi8iKS5yZXBsYWNlKC9ULywiICIpKSxyPW5ldyBEYXRlKHIpfWVsc2Ugcj1uO2Vsc2Ugcj1udWxsO3RbZV09cn1yZXR1cm4gdH0sZWFzZUxpbmVhcjpiZixlYXNlUXVhZDpTZixlYXNlUXVhZEluOnhmLGVhc2VRdWFkT3V0OndmLGVhc2VRdWFkSW5PdXQ6U2YsZWFzZUN1YmljOlRmLGVhc2VDdWJpY0luOk1mLGVhc2VDdWJpY091dDpFZixlYXNlQ3ViaWNJbk91dDpUZixlYXNlUG9seTpYZixlYXNlUG9seUluOnFmLGVhc2VQb2x5T3V0OllmLGVhc2VQb2x5SW5PdXQ6WGYsZWFzZVNpbjpRZixlYXNlU2luSW46WmYsZWFzZVNpbk91dDpKZixlYXNlU2luSW5PdXQ6UWYsZWFzZUV4cDpubSxlYXNlRXhwSW46dG0sZWFzZUV4cE91dDplbSxlYXNlRXhwSW5PdXQ6bm0sZWFzZUNpcmNsZTpvbSxlYXNlQ2lyY2xlSW46aW0sZWFzZUNpcmNsZU91dDpybSxlYXNlQ2lyY2xlSW5PdXQ6b20sZWFzZUJvdW5jZTpsbSxlYXNlQm91bmNlSW46c20sZWFzZUJvdW5jZU91dDpsbSxlYXNlQm91bmNlSW5PdXQ6Y20sZWFzZUJhY2s6cG0sZWFzZUJhY2tJbjpobSxlYXNlQmFja091dDpkbSxlYXNlQmFja0luT3V0OnBtLGVhc2VFbGFzdGljOmdtLGVhc2VFbGFzdGljSW46bW0sZWFzZUVsYXN0aWNPdXQ6Z20sZWFzZUVsYXN0aWNJbk91dDpfbSxibG9iOmZ1bmN0aW9uIElJKHQsZSl7cmV0dXJuIGZldGNoKHQsZSkudGhlbihwXyl9LGJ1ZmZlcjpmdW5jdGlvbiBOSSh0LGUpe3JldHVybiBmZXRjaCh0LGUpLnRoZW4oZl8pfSxkc3Y6ZnVuY3Rpb24gT0kodCxlLG4saSl7Mz09PWFyZ3VtZW50cy5sZW5ndGgmJiJmdW5jdGlvbiI9PXR5cGVvZiBuJiYoaT1uLG49dm9pZCAwKTt2YXIgcj0kZyh0KTtyZXR1cm4gZ18oZSxuKS50aGVuKChmdW5jdGlvbih0KXtyZXR1cm4gci5wYXJzZSh0LGkpfSkpfSxjc3Y6eV8sdHN2OnZfLGltYWdlOmZ1bmN0aW9uIFJJKHQsZSl7cmV0dXJuIG5ldyBQcm9taXNlKChmdW5jdGlvbihuLGkpe3ZhciByPW5ldyBJbWFnZTtmb3IodmFyIG8gaW4gZSlyW29dPWVbb107ci5vbmVycm9yPWksci5vbmxvYWQ9ZnVuY3Rpb24oKXtuKHIpfSxyLnNyYz10fSkpfSxqc29uOmZ1bmN0aW9uIHpJKHQsZSl7cmV0dXJuIGZldGNoKHQsZSkudGhlbihiXyl9LHRleHQ6Z18seG1sOndfLGh0bWw6U18sc3ZnOk1fLGZvcmNlQ2VudGVyOmZ1bmN0aW9uIERJKHQsZSl7dmFyIG47ZnVuY3Rpb24gaSgpe3ZhciBpLHIsbz1uLmxlbmd0aCxhPTAscz0wO2ZvcihpPTA7aTxvOysraSlhKz0ocj1uW2ldKS54LHMrPXIueTtmb3IoYT1hL28tdCxzPXMvby1lLGk9MDtpPG87KytpKShyPW5baV0pLngtPWEsci55LT1zfXJldHVybiBudWxsPT10JiYodD0wKSxudWxsPT1lJiYoZT0wKSxpLmluaXRpYWxpemU9ZnVuY3Rpb24odCl7bj10fSxpLng9ZnVuY3Rpb24oZSl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KHQ9K2UsaSk6dH0saS55PWZ1bmN0aW9uKHQpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyhlPSt0LGkpOmV9LGl9LGZvcmNlQ29sbGlkZTpmdW5jdGlvbiBCSSh0KXt2YXIgZSxuLGk9MSxyPTE7ZnVuY3Rpb24gbygpe2Zvcih2YXIgdCxvLHMsbCxjLHUsaCxkPWUubGVuZ3RoLHA9MDtwPHI7KytwKWZvcihvPVBfKGUsUl8sel8pLnZpc2l0QWZ0ZXIoYSksdD0wO3Q8ZDsrK3QpaD0odT1uWyhzPWVbdF0pLmluZGV4XSkqdSxsPXMueCtzLnZ4LGM9cy55K3Mudnksby52aXNpdChmKTtmdW5jdGlvbiBmKHQsZSxuLHIsbyl7dmFyIGE9dC5kYXRhLGQ9dC5yLHA9dStkO2lmKCFhKXJldHVybiBlPmwrcHx8cjxsLXB8fG4+YytwfHxvPGMtcDtpZihhLmluZGV4PnMuaW5kZXgpe3ZhciBmPWwtYS54LWEudngsbT1jLWEueS1hLnZ5LGc9ZipmK20qbTtnPHAqcCYmKDA9PT1mJiYoZys9KGY9VF8oKSkqZiksMD09PW0mJihnKz0obT1UXygpKSptKSxnPShwLShnPU1hdGguc3FydChnKSkpL2cqaSxzLnZ4Kz0oZio9ZykqKHA9KGQqPWQpLyhoK2QpKSxzLnZ5Kz0obSo9ZykqcCxhLnZ4LT1mKihwPTEtcCksYS52eS09bSpwKX19fWZ1bmN0aW9uIGEodCl7aWYodC5kYXRhKXJldHVybiB0LnI9blt0LmRhdGEuaW5kZXhdO2Zvcih2YXIgZT10LnI9MDtlPDQ7KytlKXRbZV0mJnRbZV0ucj50LnImJih0LnI9dFtlXS5yKX1mdW5jdGlvbiBzKCl7aWYoZSl7dmFyIGkscixvPWUubGVuZ3RoO2ZvcihuPW5ldyBBcnJheShvKSxpPTA7aTxvOysraSluWyhyPWVbaV0pLmluZGV4XT0rdChyLGksZSl9fXJldHVybiJmdW5jdGlvbiIhPXR5cGVvZiB0JiYodD1FXyhudWxsPT10PzE6K3QpKSxvLmluaXRpYWxpemU9ZnVuY3Rpb24odCl7ZT10LHMoKX0sby5pdGVyYXRpb25zPWZ1bmN0aW9uKHQpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyhyPSt0LG8pOnJ9LG8uc3RyZW5ndGg9ZnVuY3Rpb24odCl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KGk9K3Qsbyk6aX0sby5yYWRpdXM9ZnVuY3Rpb24oZSl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KHQ9ImZ1bmN0aW9uIj09dHlwZW9mIGU/ZTpFXygrZSkscygpLG8pOnR9LG99LGZvcmNlTGluazpmdW5jdGlvbiBISSh0KXt2YXIgZSxuLGkscixvLGE9RF8scz1mdW5jdGlvbiBsKHQpe3JldHVybiAxL01hdGgubWluKHJbdC5zb3VyY2UuaW5kZXhdLHJbdC50YXJnZXQuaW5kZXhdKX0sYz1FXygzMCksdT0xO2Z1bmN0aW9uIGgoaSl7Zm9yKHZhciByPTAsYT10Lmxlbmd0aDtyPHU7KytyKWZvcih2YXIgcyxsLGMsaCxkLHAsZixtPTA7bTxhOysrbSloPShjPShzPXRbbV0pLnRhcmdldCkueCtjLnZ4LShsPXMuc291cmNlKS54LWwudnh8fFRfKCksZD1jLnkrYy52eS1sLnktbC52eXx8VF8oKSxkKj1wPSgocD1NYXRoLnNxcnQoaCpoK2QqZCkpLW5bbV0pL3AqaSplW21dLGMudngtPShoKj1wKSooZj1vW21dKSxjLnZ5LT1kKmYsbC52eCs9aCooZj0xLWYpLGwudnkrPWQqZn1mdW5jdGlvbiBkKCl7aWYoaSl7dmFyIHMsbCxjPWkubGVuZ3RoLHU9dC5sZW5ndGgsaD14ZyhpLGEpO2ZvcihzPTAscj1uZXcgQXJyYXkoYyk7czx1OysrcykobD10W3NdKS5pbmRleD1zLCJvYmplY3QiIT10eXBlb2YgbC5zb3VyY2UmJihsLnNvdXJjZT1CXyhoLGwuc291cmNlKSksIm9iamVjdCIhPXR5cGVvZiBsLnRhcmdldCYmKGwudGFyZ2V0PUJfKGgsbC50YXJnZXQpKSxyW2wuc291cmNlLmluZGV4XT0ocltsLnNvdXJjZS5pbmRleF18fDApKzEscltsLnRhcmdldC5pbmRleF09KHJbbC50YXJnZXQuaW5kZXhdfHwwKSsxO2ZvcihzPTAsbz1uZXcgQXJyYXkodSk7czx1OysrcylvW3NdPXJbKGw9dFtzXSkuc291cmNlLmluZGV4XS8ocltsLnNvdXJjZS5pbmRleF0rcltsLnRhcmdldC5pbmRleF0pO2U9bmV3IEFycmF5KHUpLHAoKSxuPW5ldyBBcnJheSh1KSxmKCl9fWZ1bmN0aW9uIHAoKXtpZihpKWZvcih2YXIgbj0wLHI9dC5sZW5ndGg7bjxyOysrbillW25dPStzKHRbbl0sbix0KX1mdW5jdGlvbiBmKCl7aWYoaSlmb3IodmFyIGU9MCxyPXQubGVuZ3RoO2U8cjsrK2UpbltlXT0rYyh0W2VdLGUsdCl9cmV0dXJuIG51bGw9PXQmJih0PVtdKSxoLmluaXRpYWxpemU9ZnVuY3Rpb24odCl7aT10LGQoKX0saC5saW5rcz1mdW5jdGlvbihlKXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8odD1lLGQoKSxoKTp0fSxoLmlkPWZ1bmN0aW9uKHQpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyhhPXQsaCk6YX0saC5pdGVyYXRpb25zPWZ1bmN0aW9uKHQpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyh1PSt0LGgpOnV9LGguc3RyZW5ndGg9ZnVuY3Rpb24odCl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KHM9ImZ1bmN0aW9uIj09dHlwZW9mIHQ/dDpFXygrdCkscCgpLGgpOnN9LGguZGlzdGFuY2U9ZnVuY3Rpb24odCl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KGM9ImZ1bmN0aW9uIj09dHlwZW9mIHQ/dDpFXygrdCksZigpLGgpOmN9LGh9LGZvcmNlTWFueUJvZHk6ZnVuY3Rpb24gRkkoKXt2YXIgdCxlLG4saSxyPUVfKC0zMCksbz0xLGE9MS8wLHM9LjgxO2Z1bmN0aW9uIGwoaSl7dmFyIHIsbz10Lmxlbmd0aCxhPVBfKHQsSF8sRl8pLnZpc2l0QWZ0ZXIodSk7Zm9yKG49aSxyPTA7cjxvOysrcillPXRbcl0sYS52aXNpdChoKX1mdW5jdGlvbiBjKCl7aWYodCl7dmFyIGUsbixvPXQubGVuZ3RoO2ZvcihpPW5ldyBBcnJheShvKSxlPTA7ZTxvOysrZSlpWyhuPXRbZV0pLmluZGV4XT0rcihuLGUsdCl9fWZ1bmN0aW9uIHUodCl7dmFyIGUsbixyLG8sYSxzPTAsbD0wO2lmKHQubGVuZ3RoKXtmb3Iocj1vPWE9MDthPDQ7KythKShlPXRbYV0pJiYobj1NYXRoLmFicyhlLnZhbHVlKSkmJihzKz1lLnZhbHVlLGwrPW4scis9biplLngsbys9biplLnkpO3QueD1yL2wsdC55PW8vbH1lbHNleyhlPXQpLng9ZS5kYXRhLngsZS55PWUuZGF0YS55O2Rve3MrPWlbZS5kYXRhLmluZGV4XX13aGlsZShlPWUubmV4dCl9dC52YWx1ZT1zfWZ1bmN0aW9uIGgodCxyLGwsYyl7aWYoIXQudmFsdWUpcmV0dXJuITA7dmFyIHU9dC54LWUueCxoPXQueS1lLnksZD1jLXIscD11KnUraCpoO2lmKGQqZC9zPHApcmV0dXJuIHA8YSYmKDA9PT11JiYocCs9KHU9VF8oKSkqdSksMD09PWgmJihwKz0oaD1UXygpKSpoKSxwPG8mJihwPU1hdGguc3FydChvKnApKSxlLnZ4Kz11KnQudmFsdWUqbi9wLGUudnkrPWgqdC52YWx1ZSpuL3ApLCEwO2lmKCEodC5sZW5ndGh8fHA+PWEpKXsodC5kYXRhIT09ZXx8dC5uZXh0KSYmKDA9PT11JiYocCs9KHU9VF8oKSkqdSksMD09PWgmJihwKz0oaD1UXygpKSpoKSxwPG8mJihwPU1hdGguc3FydChvKnApKSk7ZG97dC5kYXRhIT09ZSYmKGUudngrPXUqKGQ9aVt0LmRhdGEuaW5kZXhdKm4vcCksZS52eSs9aCpkKX13aGlsZSh0PXQubmV4dCl9fXJldHVybiBsLmluaXRpYWxpemU9ZnVuY3Rpb24oZSl7dD1lLGMoKX0sbC5zdHJlbmd0aD1mdW5jdGlvbih0KXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8ocj0iZnVuY3Rpb24iPT10eXBlb2YgdD90OkVfKCt0KSxjKCksbCk6cn0sbC5kaXN0YW5jZU1pbj1mdW5jdGlvbih0KXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8obz10KnQsbCk6TWF0aC5zcXJ0KG8pfSxsLmRpc3RhbmNlTWF4PWZ1bmN0aW9uKHQpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyhhPXQqdCxsKTpNYXRoLnNxcnQoYSl9LGwudGhldGE9ZnVuY3Rpb24odCl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KHM9dCp0LGwpOk1hdGguc3FydChzKX0sbH0sZm9yY2VSYWRpYWw6ZnVuY3Rpb24gVkkodCxlLG4pe3ZhciBpLHIsbyxhPUVfKC4xKTtmdW5jdGlvbiBzKHQpe2Zvcih2YXIgYT0wLHM9aS5sZW5ndGg7YTxzOysrYSl7dmFyIGw9aVthXSxjPWwueC1lfHwxZS02LHU9bC55LW58fDFlLTYsaD1NYXRoLnNxcnQoYypjK3UqdSksZD0ob1thXS1oKSpyW2FdKnQvaDtsLnZ4Kz1jKmQsbC52eSs9dSpkfX1mdW5jdGlvbiBsKCl7aWYoaSl7dmFyIGUsbj1pLmxlbmd0aDtmb3Iocj1uZXcgQXJyYXkobiksbz1uZXcgQXJyYXkobiksZT0wO2U8bjsrK2Upb1tlXT0rdChpW2VdLGUsaSkscltlXT1pc05hTihvW2VdKT8wOithKGlbZV0sZSxpKX19cmV0dXJuImZ1bmN0aW9uIiE9dHlwZW9mIHQmJih0PUVfKCt0KSksbnVsbD09ZSYmKGU9MCksbnVsbD09biYmKG49MCkscy5pbml0aWFsaXplPWZ1bmN0aW9uKHQpe2k9dCxsKCl9LHMuc3RyZW5ndGg9ZnVuY3Rpb24odCl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KGE9ImZ1bmN0aW9uIj09dHlwZW9mIHQ/dDpFXygrdCksbCgpLHMpOmF9LHMucmFkaXVzPWZ1bmN0aW9uKGUpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyh0PSJmdW5jdGlvbiI9PXR5cGVvZiBlP2U6RV8oK2UpLGwoKSxzKTp0fSxzLng9ZnVuY3Rpb24odCl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KGU9K3Qscyk6ZX0scy55PWZ1bmN0aW9uKHQpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyhuPSt0LHMpOm59LHN9LGZvcmNlU2ltdWxhdGlvbjpmdW5jdGlvbiBqSSh0KXt2YXIgZSxuPTEsaT0uMDAxLHI9MS1NYXRoLnBvdyhpLDEvMzAwKSxvPTAsYT0uNixzPXhnKCksbD1rcCh1KSxjPWxjKCJ0aWNrIiwiZW5kIik7ZnVuY3Rpb24gdSgpe2goKSxjLmNhbGwoInRpY2siLGUpLG48aSYmKGwuc3RvcCgpLGMuY2FsbCgiZW5kIixlKSl9ZnVuY3Rpb24gaChpKXt2YXIgbCxjLHU9dC5sZW5ndGg7dm9pZCAwPT09aSYmKGk9MSk7Zm9yKHZhciBoPTA7aDxpOysraClmb3Iobis9KG8tbikqcixzLmVhY2goKGZ1bmN0aW9uKHQpe3Qobil9KSksbD0wO2w8dTsrK2wpbnVsbD09KGM9dFtsXSkuZng/Yy54Kz1jLnZ4Kj1hOihjLng9Yy5meCxjLnZ4PTApLG51bGw9PWMuZnk/Yy55Kz1jLnZ5Kj1hOihjLnk9Yy5meSxjLnZ5PTApO3JldHVybiBlfWZ1bmN0aW9uIGQoKXtmb3IodmFyIGUsbj0wLGk9dC5sZW5ndGg7bjxpOysrbil7aWYoKGU9dFtuXSkuaW5kZXg9bixudWxsIT1lLmZ4JiYoZS54PWUuZngpLG51bGwhPWUuZnkmJihlLnk9ZS5meSksaXNOYU4oZS54KXx8aXNOYU4oZS55KSl7dmFyIHI9MTAqTWF0aC5zcXJ0KG4pLG89bipleTtlLng9cipNYXRoLmNvcyhvKSxlLnk9cipNYXRoLnNpbihvKX0oaXNOYU4oZS52eCl8fGlzTmFOKGUudnkpKSYmKGUudng9ZS52eT0wKX19ZnVuY3Rpb24gcChlKXtyZXR1cm4gZS5pbml0aWFsaXplJiZlLmluaXRpYWxpemUodCksZX1yZXR1cm4gbnVsbD09dCYmKHQ9W10pLGQoKSxlPXt0aWNrOmgscmVzdGFydDpmdW5jdGlvbigpe3JldHVybiBsLnJlc3RhcnQodSksZX0sc3RvcDpmdW5jdGlvbigpe3JldHVybiBsLnN0b3AoKSxlfSxub2RlczpmdW5jdGlvbihuKXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8odD1uLGQoKSxzLmVhY2gocCksZSk6dH0sYWxwaGE6ZnVuY3Rpb24odCl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KG49K3QsZSk6bn0sYWxwaGFNaW46ZnVuY3Rpb24odCl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KGk9K3QsZSk6aX0sYWxwaGFEZWNheTpmdW5jdGlvbih0KXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8ocj0rdCxlKTorcn0sYWxwaGFUYXJnZXQ6ZnVuY3Rpb24odCl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KG89K3QsZSk6b30sdmVsb2NpdHlEZWNheTpmdW5jdGlvbih0KXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8oYT0xLXQsZSk6MS1hfSxmb3JjZTpmdW5jdGlvbih0LG4pe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPjE/KG51bGw9PW4/cy5yZW1vdmUodCk6cy5zZXQodCxwKG4pKSxlKTpzLmdldCh0KX0sZmluZDpmdW5jdGlvbihlLG4saSl7dmFyIHIsbyxhLHMsbCxjPTAsdT10Lmxlbmd0aDtmb3IobnVsbD09aT9pPTEvMDppKj1pLGM9MDtjPHU7KytjKShhPShyPWUtKHM9dFtjXSkueCkqcisobz1uLXMueSkqbyk8aSYmKGw9cyxpPWEpO3JldHVybiBsfSxvbjpmdW5jdGlvbih0LG4pe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPjE/KGMub24odCxuKSxlKTpjLm9uKHQpfX19LGZvcmNlWDpmdW5jdGlvbiBVSSh0KXt2YXIgZSxuLGkscj1FXyguMSk7ZnVuY3Rpb24gbyh0KXtmb3IodmFyIHIsbz0wLGE9ZS5sZW5ndGg7bzxhOysrbykocj1lW29dKS52eCs9KGlbb10tci54KSpuW29dKnR9ZnVuY3Rpb24gYSgpe2lmKGUpe3ZhciBvLGE9ZS5sZW5ndGg7Zm9yKG49bmV3IEFycmF5KGEpLGk9bmV3IEFycmF5KGEpLG89MDtvPGE7KytvKW5bb109aXNOYU4oaVtvXT0rdChlW29dLG8sZSkpPzA6K3IoZVtvXSxvLGUpfX1yZXR1cm4iZnVuY3Rpb24iIT10eXBlb2YgdCYmKHQ9RV8obnVsbD09dD8wOit0KSksby5pbml0aWFsaXplPWZ1bmN0aW9uKHQpe2U9dCxhKCl9LG8uc3RyZW5ndGg9ZnVuY3Rpb24odCl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KHI9ImZ1bmN0aW9uIj09dHlwZW9mIHQ/dDpFXygrdCksYSgpLG8pOnJ9LG8ueD1mdW5jdGlvbihlKXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8odD0iZnVuY3Rpb24iPT10eXBlb2YgZT9lOkVfKCtlKSxhKCksbyk6dH0sb30sZm9yY2VZOmZ1bmN0aW9uIEdJKHQpe3ZhciBlLG4saSxyPUVfKC4xKTtmdW5jdGlvbiBvKHQpe2Zvcih2YXIgcixvPTAsYT1lLmxlbmd0aDtvPGE7KytvKShyPWVbb10pLnZ5Kz0oaVtvXS1yLnkpKm5bb10qdH1mdW5jdGlvbiBhKCl7aWYoZSl7dmFyIG8sYT1lLmxlbmd0aDtmb3Iobj1uZXcgQXJyYXkoYSksaT1uZXcgQXJyYXkoYSksbz0wO288YTsrK28pbltvXT1pc05hTihpW29dPSt0KGVbb10sbyxlKSk/MDorcihlW29dLG8sZSl9fXJldHVybiJmdW5jdGlvbiIhPXR5cGVvZiB0JiYodD1FXyhudWxsPT10PzA6K3QpKSxvLmluaXRpYWxpemU9ZnVuY3Rpb24odCl7ZT10LGEoKX0sby5zdHJlbmd0aD1mdW5jdGlvbih0KXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8ocj0iZnVuY3Rpb24iPT10eXBlb2YgdD90OkVfKCt0KSxhKCksbyk6cn0sby55PWZ1bmN0aW9uKGUpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyh0PSJmdW5jdGlvbiI9PXR5cGVvZiBlP2U6RV8oK2UpLGEoKSxvKTp0fSxvfSxmb3JtYXREZWZhdWx0TG9jYWxlOnl5LGdldCBmb3JtYXQoKXtyZXR1cm4gcHl9LGdldCBmb3JtYXRQcmVmaXgoKXtyZXR1cm4gZnl9LGZvcm1hdExvY2FsZTpfeSxmb3JtYXRTcGVjaWZpZXI6YXksRm9ybWF0U3BlY2lmaWVyOnN5LHByZWNpc2lvbkZpeGVkOnZ5LHByZWNpc2lvblByZWZpeDpieSxwcmVjaXNpb25Sb3VuZDp4eSxnZW9BcmVhOmZ1bmN0aW9uIFdJKHQpe3JldHVybiBsdi5yZXNldCgpLGV2KHQsY3YpLDIqbHZ9LGdlb0JvdW5kczpmdW5jdGlvbiBxSSh0KXt2YXIgZSxuLGkscixvLGEscztpZihNdj1Tdj0tKHh2PXd2PTEvMCksa3Y9W10sZXYodCxYdiksbj1rdi5sZW5ndGgpe2Zvcihrdi5zb3J0KGliKSxlPTEsbz1baT1rdlswXV07ZTxuOysrZSlyYihpLChyPWt2W2VdKVswXSl8fHJiKGksclsxXSk/KG5iKGlbMF0sclsxXSk+bmIoaVswXSxpWzFdKSYmKGlbMV09clsxXSksbmIoclswXSxpWzFdKT5uYihpWzBdLGlbMV0pJiYoaVswXT1yWzBdKSk6by5wdXNoKGk9cik7Zm9yKGE9LTEvMCxlPTAsaT1vW249by5sZW5ndGgtMV07ZTw9bjtpPXIsKytlKShzPW5iKGlbMV0sKHI9b1tlXSlbMF0pKT5hJiYoYT1zLHh2PXJbMF0sU3Y9aVsxXSl9cmV0dXJuIGt2PUx2PW51bGwseHY9PT0xLzB8fHd2PT09MS8wP1tbTmFOLE5hTl0sW05hTixOYU5dXTpbW3h2LHd2XSxbU3YsTXZdXX0sZ2VvQ2VudHJvaWQ6ZnVuY3Rpb24gWUkodCl7UHY9SXY9TnY9T3Y9UnY9enY9RHY9QnY9SHY9RnY9VnY9MCxldih0LG9iKTt2YXIgZT1IdixuPUZ2LGk9VnYscj1lKmUrbipuK2kqaTtyZXR1cm4gcjxBeSYmKGU9enYsbj1EdixpPUJ2LEl2PFR5JiYoZT1OdixuPU92LGk9UnYpLChyPWUqZStuKm4raSppKTxBeSk/W05hTixOYU5dOlt6eShuLGUpKkl5LFl5KGkvR3kocikpKkl5XX0sZ2VvQ2lyY2xlOmZ1bmN0aW9uIFhJKCl7dmFyIHQsZSxuPWdiKFswLDBdKSxpPWdiKDkwKSxyPWdiKDYpLG89e3BvaW50OmZ1bmN0aW9uIGEobixpKXt0LnB1c2gobj1lKG4saSkpLG5bMF0qPUl5LG5bMV0qPUl5fX07ZnVuY3Rpb24gcygpe3ZhciBhPW4uYXBwbHkodGhpcyxhcmd1bWVudHMpLHM9aS5hcHBseSh0aGlzLGFyZ3VtZW50cykqTnksbD1yLmFwcGx5KHRoaXMsYXJndW1lbnRzKSpOeTtyZXR1cm4gdD1bXSxlPXZiKC1hWzBdKk55LC1hWzFdKk55LDApLmludmVydCxNYihvLHMsbCwxKSxhPXt0eXBlOiJQb2x5Z29uIixjb29yZGluYXRlczpbdF19LHQ9ZT1udWxsLGF9cmV0dXJuIHMuY2VudGVyPWZ1bmN0aW9uKHQpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyhuPSJmdW5jdGlvbiI9PXR5cGVvZiB0P3Q6Z2IoWyt0WzBdLCt0WzFdXSkscyk6bn0scy5yYWRpdXM9ZnVuY3Rpb24odCl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KGk9ImZ1bmN0aW9uIj09dHlwZW9mIHQ/dDpnYigrdCkscyk6aX0scy5wcmVjaXNpb249ZnVuY3Rpb24odCl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KHI9ImZ1bmN0aW9uIj09dHlwZW9mIHQ/dDpnYigrdCkscyk6cn0sc30sZ2VvQ2xpcEFudGltZXJpZGlhbjpEYixnZW9DbGlwQ2lyY2xlOkZiLGdlb0NsaXBFeHRlbnQ6ZnVuY3Rpb24gJEkoKXt2YXIgdCxlLG4saT0wLHI9MCxvPTk2MCxhPTUwMDtyZXR1cm4gbj17c3RyZWFtOmZ1bmN0aW9uKG4pe3JldHVybiB0JiZlPT09bj90OnQ9VWIoaSxyLG8sYSkoZT1uKX0sZXh0ZW50OmZ1bmN0aW9uKHMpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyhpPStzWzBdWzBdLHI9K3NbMF1bMV0sbz0rc1sxXVswXSxhPStzWzFdWzFdLHQ9ZT1udWxsLG4pOltbaSxyXSxbbyxhXV19fX0sZ2VvQ2xpcFJlY3RhbmdsZTpVYixnZW9Db250YWluczpmdW5jdGlvbiBLSSh0LGUpe3JldHVybih0JiZpeC5oYXNPd25Qcm9wZXJ0eSh0LnR5cGUpP2l4W3QudHlwZV06b3gpKHQsZSl9LGdlb0Rpc3RhbmNlOm54LGdlb0dyYXRpY3VsZTpweCxnZW9HcmF0aWN1bGUxMDpmdW5jdGlvbiBaSSgpe3JldHVybiBweCgpKCl9LGdlb0ludGVycG9sYXRlOmZ1bmN0aW9uIEpJKHQsZSl7dmFyIG49dFswXSpOeSxpPXRbMV0qTnkscj1lWzBdKk55LG89ZVsxXSpOeSxhPUR5KGkpLHM9ankoaSksbD1EeShvKSxjPWp5KG8pLHU9YSpEeShuKSxoPWEqankobiksZD1sKkR5KHIpLHA9bCpqeShyKSxmPTIqWXkoR3koWHkoby1pKSthKmwqWHkoci1uKSkpLG09ankoZiksZz1mP2Z1bmN0aW9uKHQpe3ZhciBlPWp5KHQqPWYpL20sbj1qeShmLXQpL20saT1uKnUrZSpkLHI9bipoK2UqcCxvPW4qcytlKmM7cmV0dXJuW3p5KHIsaSkqSXksenkobyxHeShpKmkrcipyKSkqSXldfTpmdW5jdGlvbigpe3JldHVybltuKkl5LGkqSXldfTtyZXR1cm4gZy5kaXN0YW5jZT1mLGd9LGdlb0xlbmd0aDpRYixnZW9QYXRoOmZ1bmN0aW9uIFFJKHQsZSl7dmFyIG4saSxyPTQuNTtmdW5jdGlvbiBvKHQpe3JldHVybiB0JiYoImZ1bmN0aW9uIj09dHlwZW9mIHImJmkucG9pbnRSYWRpdXMoK3IuYXBwbHkodGhpcyxhcmd1bWVudHMpKSxldih0LG4oaSkpKSxpLnJlc3VsdCgpfXJldHVybiBvLmFyZWE9ZnVuY3Rpb24odCl7cmV0dXJuIGV2KHQsbih4eCkpLHh4LnJlc3VsdCgpfSxvLm1lYXN1cmU9ZnVuY3Rpb24odCl7cmV0dXJuIGV2KHQsbihsdykpLGx3LnJlc3VsdCgpfSxvLmJvdW5kcz1mdW5jdGlvbih0KXtyZXR1cm4gZXYodCxuKE94KSksT3gucmVzdWx0KCl9LG8uY2VudHJvaWQ9ZnVuY3Rpb24odCl7cmV0dXJuIGV2KHQsbihXeCkpLFd4LnJlc3VsdCgpfSxvLnByb2plY3Rpb249ZnVuY3Rpb24oZSl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KG49bnVsbD09ZT8odD1udWxsLGZ4KToodD1lKS5zdHJlYW0sbyk6dH0sby5jb250ZXh0PWZ1bmN0aW9uKHQpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyhpPW51bGw9PXQ/KGU9bnVsbCxuZXcgaHcpOm5ldyBldyhlPXQpLCJmdW5jdGlvbiIhPXR5cGVvZiByJiZpLnBvaW50UmFkaXVzKHIpLG8pOmV9LG8ucG9pbnRSYWRpdXM9ZnVuY3Rpb24odCl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KHI9ImZ1bmN0aW9uIj09dHlwZW9mIHQ/dDooaS5wb2ludFJhZGl1cygrdCksK3QpLG8pOnJ9LG8ucHJvamVjdGlvbih0KS5jb250ZXh0KGUpfSxnZW9BbGJlcnM6THcsZ2VvQWxiZXJzVXNhOmZ1bmN0aW9uIHROKCl7dmFyIHQsZSxuLGkscixvLGE9THcoKSxzPWt3KCkucm90YXRlKFsxNTQsMF0pLmNlbnRlcihbLTIsNTguNV0pLnBhcmFsbGVscyhbNTUsNjVdKSxsPWt3KCkucm90YXRlKFsxNTcsMF0pLmNlbnRlcihbLTMsMTkuOV0pLnBhcmFsbGVscyhbOCwxOF0pLGM9e3BvaW50OmZ1bmN0aW9uKHQsZSl7bz1bdCxlXX19O2Z1bmN0aW9uIHUodCl7dmFyIGU9dFswXSxhPXRbMV07cmV0dXJuIG89bnVsbCxuLnBvaW50KGUsYSksb3x8KGkucG9pbnQoZSxhKSxvKXx8KHIucG9pbnQoZSxhKSxvKX1mdW5jdGlvbiBoKCl7cmV0dXJuIHQ9ZT1udWxsLHV9cmV0dXJuIHUuaW52ZXJ0PWZ1bmN0aW9uKHQpe3ZhciBlPWEuc2NhbGUoKSxuPWEudHJhbnNsYXRlKCksaT0odFswXS1uWzBdKS9lLHI9KHRbMV0tblsxXSkvZTtyZXR1cm4ocj49LjEyJiZyPC4yMzQmJmk+PS0uNDI1JiZpPC0uMjE0P3M6cj49LjE2NiYmcjwuMjM0JiZpPj0tLjIxNCYmaTwtLjExNT9sOmEpLmludmVydCh0KX0sdS5zdHJlYW09ZnVuY3Rpb24obil7cmV0dXJuIHQmJmU9PT1uP3Q6dD0oZnVuY3Rpb24gaSh0KXt2YXIgZT10Lmxlbmd0aDtyZXR1cm57cG9pbnQ6ZnVuY3Rpb24obixpKXtmb3IodmFyIHI9LTE7KytyPGU7KXRbcl0ucG9pbnQobixpKX0sc3BoZXJlOmZ1bmN0aW9uKCl7Zm9yKHZhciBuPS0xOysrbjxlOyl0W25dLnNwaGVyZSgpfSxsaW5lU3RhcnQ6ZnVuY3Rpb24oKXtmb3IodmFyIG49LTE7KytuPGU7KXRbbl0ubGluZVN0YXJ0KCl9LGxpbmVFbmQ6ZnVuY3Rpb24oKXtmb3IodmFyIG49LTE7KytuPGU7KXRbbl0ubGluZUVuZCgpfSxwb2x5Z29uU3RhcnQ6ZnVuY3Rpb24oKXtmb3IodmFyIG49LTE7KytuPGU7KXRbbl0ucG9seWdvblN0YXJ0KCl9LHBvbHlnb25FbmQ6ZnVuY3Rpb24oKXtmb3IodmFyIG49LTE7KytuPGU7KXRbbl0ucG9seWdvbkVuZCgpfX19KShbYS5zdHJlYW0oZT1uKSxzLnN0cmVhbShuKSxsLnN0cmVhbShuKV0pfSx1LnByZWNpc2lvbj1mdW5jdGlvbih0KXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8oYS5wcmVjaXNpb24odCkscy5wcmVjaXNpb24odCksbC5wcmVjaXNpb24odCksaCgpKTphLnByZWNpc2lvbigpfSx1LnNjYWxlPWZ1bmN0aW9uKHQpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyhhLnNjYWxlKHQpLHMuc2NhbGUoLjM1KnQpLGwuc2NhbGUodCksdS50cmFuc2xhdGUoYS50cmFuc2xhdGUoKSkpOmEuc2NhbGUoKX0sdS50cmFuc2xhdGU9ZnVuY3Rpb24odCl7aWYoIWFyZ3VtZW50cy5sZW5ndGgpcmV0dXJuIGEudHJhbnNsYXRlKCk7dmFyIGU9YS5zY2FsZSgpLG89K3RbMF0sdT0rdFsxXTtyZXR1cm4gbj1hLnRyYW5zbGF0ZSh0KS5jbGlwRXh0ZW50KFtbby0uNDU1KmUsdS0uMjM4KmVdLFtvKy40NTUqZSx1Ky4yMzgqZV1dKS5zdHJlYW0oYyksaT1zLnRyYW5zbGF0ZShbby0uMzA3KmUsdSsuMjAxKmVdKS5jbGlwRXh0ZW50KFtbby0uNDI1KmUrVHksdSsuMTIqZStUeV0sW28tLjIxNCplLVR5LHUrLjIzNCplLVR5XV0pLnN0cmVhbShjKSxyPWwudHJhbnNsYXRlKFtvLS4yMDUqZSx1Ky4yMTIqZV0pLmNsaXBFeHRlbnQoW1tvLS4yMTQqZStUeSx1Ky4xNjYqZStUeV0sW28tLjExNSplLVR5LHUrLjIzNCplLVR5XV0pLnN0cmVhbShjKSxoKCl9LHUuZml0RXh0ZW50PWZ1bmN0aW9uKHQsZSl7cmV0dXJuIGd3KHUsdCxlKX0sdS5maXRTaXplPWZ1bmN0aW9uKHQsZSl7cmV0dXJuIF93KHUsdCxlKX0sdS5maXRXaWR0aD1mdW5jdGlvbih0LGUpe3JldHVybiB5dyh1LHQsZSl9LHUuZml0SGVpZ2h0PWZ1bmN0aW9uKHQsZSl7cmV0dXJuIHZ3KHUsdCxlKX0sdS5zY2FsZSgxMDcwKX0sZ2VvQXppbXV0aGFsRXF1YWxBcmVhOmZ1bmN0aW9uIGVOKCl7cmV0dXJuIEV3KE53KS5zY2FsZSgxMjQuNzUpLmNsaXBBbmdsZSgxNzkuOTk5KX0sZ2VvQXppbXV0aGFsRXF1YWxBcmVhUmF3Ok53LGdlb0F6aW11dGhhbEVxdWlkaXN0YW50OmZ1bmN0aW9uIG5OKCl7cmV0dXJuIEV3KE93KS5zY2FsZSg3OS40MTg4KS5jbGlwQW5nbGUoMTc5Ljk5OSl9LGdlb0F6aW11dGhhbEVxdWlkaXN0YW50UmF3Ok93LGdlb0NvbmljQ29uZm9ybWFsOmZ1bmN0aW9uIGlOKCl7cmV0dXJuIEF3KEJ3KS5zY2FsZSgxMDkuNSkucGFyYWxsZWxzKFszMCwzMF0pfSxnZW9Db25pY0NvbmZvcm1hbFJhdzpCdyxnZW9Db25pY0VxdWFsQXJlYTprdyxnZW9Db25pY0VxdWFsQXJlYVJhdzpDdyxnZW9Db25pY0VxdWlkaXN0YW50OmZ1bmN0aW9uIHJOKCl7cmV0dXJuIEF3KEZ3KS5zY2FsZSgxMzEuMTU0KS5jZW50ZXIoWzAsMTMuOTM4OV0pfSxnZW9Db25pY0VxdWlkaXN0YW50UmF3OkZ3LGdlb0VxdWFsRWFydGg6ZnVuY3Rpb24gb04oKXtyZXR1cm4gRXcocXcpLnNjYWxlKDE3Ny4xNTgpfSxnZW9FcXVhbEVhcnRoUmF3OnF3LGdlb0VxdWlyZWN0YW5ndWxhcjpmdW5jdGlvbiBhTigpe3JldHVybiBFdyhIdykuc2NhbGUoMTUyLjYzKX0sZ2VvRXF1aXJlY3Rhbmd1bGFyUmF3Okh3LGdlb0dub21vbmljOmZ1bmN0aW9uIHNOKCl7cmV0dXJuIEV3KFl3KS5zY2FsZSgxNDQuMDQ5KS5jbGlwQW5nbGUoNjApfSxnZW9Hbm9tb25pY1JhdzpZdyxnZW9JZGVudGl0eTpmdW5jdGlvbiBsTigpe3ZhciB0LGUsbixpLHIsbyxhLHM9MSxsPTAsYz0wLHU9MSxoPTEsZD0wLHA9bnVsbCxmPTEsbT0xLGc9cHcoe3BvaW50OmZ1bmN0aW9uKHQsZSl7dmFyIG49dihbdCxlXSk7dGhpcy5zdHJlYW0ucG9pbnQoblswXSxuWzFdKX19KSxfPWZ4O2Z1bmN0aW9uIHkoKXtyZXR1cm4gZj1zKnUsbT1zKmgsbz1hPW51bGwsdn1mdW5jdGlvbiB2KG4pe3ZhciBpPW5bMF0qZixyPW5bMV0qbTtpZihkKXt2YXIgbz1yKnQtaSplO2k9aSp0K3IqZSxyPW99cmV0dXJuW2krbCxyK2NdfXJldHVybiB2LmludmVydD1mdW5jdGlvbihuKXt2YXIgaT1uWzBdLWwscj1uWzFdLWM7aWYoZCl7dmFyIG89cip0K2kqZTtpPWkqdC1yKmUscj1vfXJldHVybltpL2Ysci9tXX0sdi5zdHJlYW09ZnVuY3Rpb24odCl7cmV0dXJuIG8mJmE9PT10P286bz1nKF8oYT10KSl9LHYucG9zdGNsaXA9ZnVuY3Rpb24odCl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KF89dCxwPW49aT1yPW51bGwseSgpKTpffSx2LmNsaXBFeHRlbnQ9ZnVuY3Rpb24odCl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KF89bnVsbD09dD8ocD1uPWk9cj1udWxsLGZ4KTpVYihwPSt0WzBdWzBdLG49K3RbMF1bMV0saT0rdFsxXVswXSxyPSt0WzFdWzFdKSx5KCkpOm51bGw9PXA/bnVsbDpbW3Asbl0sW2kscl1dfSx2LnNjYWxlPWZ1bmN0aW9uKHQpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyhzPSt0LHkoKSk6c30sdi50cmFuc2xhdGU9ZnVuY3Rpb24odCl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KGw9K3RbMF0sYz0rdFsxXSx5KCkpOltsLGNdfSx2LmFuZ2xlPWZ1bmN0aW9uKG4pe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyhlPWp5KGQ9biUzNjAqTnkpLHQ9RHkoZCkseSgpKTpkKkl5fSx2LnJlZmxlY3RYPWZ1bmN0aW9uKHQpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyh1PXQ/LTE6MSx5KCkpOnU8MH0sdi5yZWZsZWN0WT1mdW5jdGlvbih0KXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8oaD10Py0xOjEseSgpKTpoPDB9LHYuZml0RXh0ZW50PWZ1bmN0aW9uKHQsZSl7cmV0dXJuIGd3KHYsdCxlKX0sdi5maXRTaXplPWZ1bmN0aW9uKHQsZSl7cmV0dXJuIF93KHYsdCxlKX0sdi5maXRXaWR0aD1mdW5jdGlvbih0LGUpe3JldHVybiB5dyh2LHQsZSl9LHYuZml0SGVpZ2h0PWZ1bmN0aW9uKHQsZSl7cmV0dXJuIHZ3KHYsdCxlKX0sdn0sZ2VvUHJvamVjdGlvbjpFdyxnZW9Qcm9qZWN0aW9uTXV0YXRvcjpUdyxnZW9NZXJjYXRvcjpmdW5jdGlvbiBjTigpe3JldHVybiB6dyhSdykuc2NhbGUoOTYxL1B5KX0sZ2VvTWVyY2F0b3JSYXc6UncsZ2VvTmF0dXJhbEVhcnRoMTpmdW5jdGlvbiB1Tigpe3JldHVybiBFdyhYdykuc2NhbGUoMTc1LjI5NSl9LGdlb05hdHVyYWxFYXJ0aDFSYXc6WHcsZ2VvT3J0aG9ncmFwaGljOmZ1bmN0aW9uIGhOKCl7cmV0dXJuIEV3KCR3KS5zY2FsZSgyNDkuNSkuY2xpcEFuZ2xlKDkwLjAwMDAwMSl9LGdlb09ydGhvZ3JhcGhpY1JhdzokdyxnZW9TdGVyZW9ncmFwaGljOmZ1bmN0aW9uIGROKCl7cmV0dXJuIEV3KEt3KS5zY2FsZSgyNTApLmNsaXBBbmdsZSgxNDIpfSxnZW9TdGVyZW9ncmFwaGljUmF3Okt3LGdlb1RyYW5zdmVyc2VNZXJjYXRvcjpmdW5jdGlvbiBwTigpe3ZhciB0PXp3KFp3KSxlPXQuY2VudGVyLG49dC5yb3RhdGU7cmV0dXJuIHQuY2VudGVyPWZ1bmN0aW9uKHQpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoP2UoWy10WzFdLHRbMF1dKTpbKHQ9ZSgpKVsxXSwtdFswXV19LHQucm90YXRlPWZ1bmN0aW9uKHQpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoP24oW3RbMF0sdFsxXSx0Lmxlbmd0aD4yP3RbMl0rOTA6OTBdKTpbKHQ9bigpKVswXSx0WzFdLHRbMl0tOTBdfSxuKFswLDAsOTBdKS5zY2FsZSgxNTkuMTU1KX0sZ2VvVHJhbnN2ZXJzZU1lcmNhdG9yUmF3Olp3LGdlb1JvdGF0aW9uOlNiLGdlb1N0cmVhbTpldixnZW9UcmFuc2Zvcm06ZnVuY3Rpb24gZk4odCl7cmV0dXJue3N0cmVhbTpwdyh0KX19LGNsdXN0ZXI6ZnVuY3Rpb24gbU4oKXt2YXIgdD1KdyxlPTEsbj0xLGk9ITE7ZnVuY3Rpb24gcihyKXt2YXIgbyxhPTA7ci5lYWNoQWZ0ZXIoKGZ1bmN0aW9uKGUpe3ZhciBuPWUuY2hpbGRyZW47bj8oZS54PShmdW5jdGlvbiBpKHQpe3JldHVybiB0LnJlZHVjZShRdywwKS90Lmxlbmd0aH0pKG4pLGUueT0oZnVuY3Rpb24gcih0KXtyZXR1cm4gMSt0LnJlZHVjZSh0UywwKX0pKG4pKTooZS54PW8/YSs9dChlLG8pOjAsZS55PTAsbz1lKX0pKTt2YXIgcz0oZnVuY3Rpb24gbCh0KXtmb3IodmFyIGU7ZT10LmNoaWxkcmVuOyl0PWVbMF07cmV0dXJuIHR9KShyKSxjPShmdW5jdGlvbiB1KHQpe2Zvcih2YXIgZTtlPXQuY2hpbGRyZW47KXQ9ZVtlLmxlbmd0aC0xXTtyZXR1cm4gdH0pKHIpLGg9cy54LXQocyxjKS8yLGQ9Yy54K3QoYyxzKS8yO3JldHVybiByLmVhY2hBZnRlcihpP2Z1bmN0aW9uKHQpe3QueD0odC54LXIueCkqZSx0Lnk9KHIueS10LnkpKm59OmZ1bmN0aW9uKHQpe3QueD0odC54LWgpLyhkLWgpKmUsdC55PSgxLShyLnk/dC55L3IueToxKSkqbn0pfXJldHVybiByLnNlcGFyYXRpb249ZnVuY3Rpb24oZSl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KHQ9ZSxyKTp0fSxyLnNpemU9ZnVuY3Rpb24odCl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KGk9ITEsZT0rdFswXSxuPSt0WzFdLHIpOmk/bnVsbDpbZSxuXX0sci5ub2RlU2l6ZT1mdW5jdGlvbih0KXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8oaT0hMCxlPSt0WzBdLG49K3RbMV0scik6aT9bZSxuXTpudWxsfSxyfSxoaWVyYXJjaHk6blMscGFjazpmdW5jdGlvbiBnTigpe3ZhciB0PW51bGwsZT0xLG49MSxpPVJTO2Z1bmN0aW9uIHIocil7cmV0dXJuIHIueD1lLzIsci55PW4vMix0P3IuZWFjaEJlZm9yZShCUyh0KSkuZWFjaEFmdGVyKEhTKGksLjUpKS5lYWNoQmVmb3JlKEZTKDEpKTpyLmVhY2hCZWZvcmUoQlMoRFMpKS5lYWNoQWZ0ZXIoSFMoUlMsMSkpLmVhY2hBZnRlcihIUyhpLHIuci9NYXRoLm1pbihlLG4pKSkuZWFjaEJlZm9yZShGUyhNYXRoLm1pbihlLG4pLygyKnIucikpKSxyfXJldHVybiByLnJhZGl1cz1mdW5jdGlvbihlKXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8odD1OUyhlKSxyKTp0fSxyLnNpemU9ZnVuY3Rpb24odCl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KGU9K3RbMF0sbj0rdFsxXSxyKTpbZSxuXX0sci5wYWRkaW5nPWZ1bmN0aW9uKHQpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyhpPSJmdW5jdGlvbiI9PXR5cGVvZiB0P3Q6elMoK3QpLHIpOml9LHJ9LHBhY2tTaWJsaW5nczpmdW5jdGlvbiBfTih0KXtyZXR1cm4gSVModCksdH0scGFja0VuY2xvc2U6YlMscGFydGl0aW9uOmZ1bmN0aW9uIHlOKCl7dmFyIHQ9MSxlPTEsbj0wLGk9ITE7ZnVuY3Rpb24gcihyKXt2YXIgbz1yLmhlaWdodCsxO3JldHVybiByLngwPXIueTA9bixyLngxPXQsci55MT1lL28sci5lYWNoQmVmb3JlKChmdW5jdGlvbiBhKHQsZSl7cmV0dXJuIGZ1bmN0aW9uKGkpe2kuY2hpbGRyZW4mJmpTKGksaS54MCx0KihpLmRlcHRoKzEpL2UsaS54MSx0KihpLmRlcHRoKzIpL2UpO3ZhciByPWkueDAsbz1pLnkwLGE9aS54MS1uLHM9aS55MS1uO2E8ciYmKHI9YT0ocithKS8yKSxzPG8mJihvPXM9KG8rcykvMiksaS54MD1yLGkueTA9byxpLngxPWEsaS55MT1zfX0pKGUsbykpLGkmJnIuZWFjaEJlZm9yZShWUykscn1yZXR1cm4gci5yb3VuZD1mdW5jdGlvbih0KXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8oaT0hIXQscik6aX0sci5zaXplPWZ1bmN0aW9uKG4pe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyh0PStuWzBdLGU9K25bMV0scik6W3QsZV19LHIucGFkZGluZz1mdW5jdGlvbih0KXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8obj0rdCxyKTpufSxyfSxzdHJhdGlmeTpmdW5jdGlvbiB2Tigpe3ZhciB0PVdTLGU9cVM7ZnVuY3Rpb24gbihuKXt2YXIgaSxyLG8sYSxzLGwsYyx1PW4ubGVuZ3RoLGg9bmV3IEFycmF5KHUpLGQ9e307Zm9yKHI9MDtyPHU7KytyKXM9aFtyXT1uZXcgYVMoaT1uW3JdKSxudWxsIT0obD10KGkscixuKSkmJihsKz0iIikmJihkW2M9IiQiKyhzLmlkPWwpXT1jIGluIGQ/R1M6cyk7Zm9yKHI9MDtyPHU7KytyKWlmKHM9aFtyXSxudWxsIT0obD1lKG5bcl0scixuKSkmJihsKz0iIikpe2lmKCEoYT1kWyIkIitsXSkpdGhyb3cgbmV3IEVycm9yKCJtaXNzaW5nOiAiK2wpO2lmKGE9PT1HUyl0aHJvdyBuZXcgRXJyb3IoImFtYmlndW91czogIitsKTthLmNoaWxkcmVuP2EuY2hpbGRyZW4ucHVzaChzKTphLmNoaWxkcmVuPVtzXSxzLnBhcmVudD1hfWVsc2V7aWYobyl0aHJvdyBuZXcgRXJyb3IoIm11bHRpcGxlIHJvb3RzIik7bz1zfWlmKCFvKXRocm93IG5ldyBFcnJvcigibm8gcm9vdCIpO2lmKG8ucGFyZW50PVVTLG8uZWFjaEJlZm9yZSgoZnVuY3Rpb24odCl7dC5kZXB0aD10LnBhcmVudC5kZXB0aCsxLC0tdX0pKS5lYWNoQmVmb3JlKG9TKSxvLnBhcmVudD1udWxsLHU+MCl0aHJvdyBuZXcgRXJyb3IoImN5Y2xlIik7cmV0dXJuIG99cmV0dXJuIG4uaWQ9ZnVuY3Rpb24oZSl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KHQ9T1MoZSksbik6dH0sbi5wYXJlbnRJZD1mdW5jdGlvbih0KXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8oZT1PUyh0KSxuKTplfSxufSx0cmVlOmZ1bmN0aW9uIGJOKCl7dmFyIHQ9WVMsZT0xLG49MSxpPW51bGw7ZnVuY3Rpb24gcihyKXt2YXIgbD0oZnVuY3Rpb24gYyh0KXtmb3IodmFyIGUsbixpLHIsbyxhPW5ldyBKUyh0LDApLHM9W2FdO2U9cy5wb3AoKTspaWYoaT1lLl8uY2hpbGRyZW4pZm9yKGUuY2hpbGRyZW49bmV3IEFycmF5KG89aS5sZW5ndGgpLHI9by0xO3I+PTA7LS1yKXMucHVzaChuPWUuY2hpbGRyZW5bcl09bmV3IEpTKGlbcl0scikpLG4ucGFyZW50PWU7cmV0dXJuKGEucGFyZW50PW5ldyBKUyhudWxsLDApKS5jaGlsZHJlbj1bYV0sYX0pKHIpO2lmKGwuZWFjaEFmdGVyKG8pLGwucGFyZW50Lm09LWwueixsLmVhY2hCZWZvcmUoYSksaSlyLmVhY2hCZWZvcmUocyk7ZWxzZXt2YXIgdT1yLGg9cixkPXI7ci5lYWNoQmVmb3JlKChmdW5jdGlvbih0KXt0Lng8dS54JiYodT10KSx0Lng+aC54JiYoaD10KSx0LmRlcHRoPmQuZGVwdGgmJihkPXQpfSkpO3ZhciBwPXU9PT1oPzE6dCh1LGgpLzIsZj1wLXUueCxtPWUvKGgueCtwK2YpLGc9bi8oZC5kZXB0aHx8MSk7ci5lYWNoQmVmb3JlKChmdW5jdGlvbih0KXt0Lng9KHQueCtmKSptLHQueT10LmRlcHRoKmd9KSl9cmV0dXJuIHJ9ZnVuY3Rpb24gbyhlKXt2YXIgbj1lLmNoaWxkcmVuLGk9ZS5wYXJlbnQuY2hpbGRyZW4scj1lLmk/aVtlLmktMV06bnVsbDtpZihuKXshKGZ1bmN0aW9uIG8odCl7Zm9yKHZhciBlLG49MCxpPTAscj10LmNoaWxkcmVuLG89ci5sZW5ndGg7LS1vPj0wOykoZT1yW29dKS56Kz1uLGUubSs9bixuKz1lLnMrKGkrPWUuYyl9KShlKTt2YXIgYT0oblswXS56K25bbi5sZW5ndGgtMV0ueikvMjtyPyhlLno9ci56K3QoZS5fLHIuXyksZS5tPWUuei1hKTplLno9YX1lbHNlIHImJihlLno9ci56K3QoZS5fLHIuXykpO2UucGFyZW50LkE9KGZ1bmN0aW9uIHMoZSxuLGkpe2lmKG4pe2Zvcih2YXIgcixvPWUsYT1lLHM9bixsPW8ucGFyZW50LmNoaWxkcmVuWzBdLGM9by5tLHU9YS5tLGg9cy5tLGQ9bC5tO3M9JFMocyksbz1YUyhvKSxzJiZvOylsPVhTKGwpLChhPSRTKGEpKS5hPWUsKHI9cy56K2gtby56LWMrdChzLl8sby5fKSk+MCYmKEtTKFpTKHMsZSxpKSxlLHIpLGMrPXIsdSs9ciksaCs9cy5tLGMrPW8ubSxkKz1sLm0sdSs9YS5tO3MmJiEkUyhhKSYmKGEudD1zLGEubSs9aC11KSxvJiYhWFMobCkmJihsLnQ9byxsLm0rPWMtZCxpPWUpfXJldHVybiBpfSkoZSxyLGUucGFyZW50LkF8fGlbMF0pfWZ1bmN0aW9uIGEodCl7dC5fLng9dC56K3QucGFyZW50Lm0sdC5tKz10LnBhcmVudC5tfWZ1bmN0aW9uIHModCl7dC54Kj1lLHQueT10LmRlcHRoKm59cmV0dXJuIHIuc2VwYXJhdGlvbj1mdW5jdGlvbihlKXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8odD1lLHIpOnR9LHIuc2l6ZT1mdW5jdGlvbih0KXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8oaT0hMSxlPSt0WzBdLG49K3RbMV0scik6aT9udWxsOltlLG5dfSxyLm5vZGVTaXplPWZ1bmN0aW9uKHQpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyhpPSEwLGU9K3RbMF0sbj0rdFsxXSxyKTppP1tlLG5dOm51bGx9LHJ9LHRyZWVtYXA6ZnVuY3Rpb24geE4oKXt2YXIgdD1uTSxlPSExLG49MSxpPTEscj1bMF0sbz1SUyxhPVJTLHM9UlMsbD1SUyxjPVJTO2Z1bmN0aW9uIHUodCl7cmV0dXJuIHQueDA9dC55MD0wLHQueDE9bix0LnkxPWksdC5lYWNoQmVmb3JlKGgpLHI9WzBdLGUmJnQuZWFjaEJlZm9yZShWUyksdH1mdW5jdGlvbiBoKGUpe3ZhciBuPXJbZS5kZXB0aF0saT1lLngwK24sdT1lLnkwK24saD1lLngxLW4sZD1lLnkxLW47aDxpJiYoaT1oPShpK2gpLzIpLGQ8dSYmKHU9ZD0odStkKS8yKSxlLngwPWksZS55MD11LGUueDE9aCxlLnkxPWQsZS5jaGlsZHJlbiYmKG49cltlLmRlcHRoKzFdPW8oZSkvMixpKz1jKGUpLW4sdSs9YShlKS1uLChoLT1zKGUpLW4pPGkmJihpPWg9KGkraCkvMiksKGQtPWwoZSktbik8dSYmKHU9ZD0odStkKS8yKSx0KGUsaSx1LGgsZCkpfXJldHVybiB1LnJvdW5kPWZ1bmN0aW9uKHQpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyhlPSEhdCx1KTplfSx1LnNpemU9ZnVuY3Rpb24odCl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KG49K3RbMF0saT0rdFsxXSx1KTpbbixpXX0sdS50aWxlPWZ1bmN0aW9uKGUpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyh0PU9TKGUpLHUpOnR9LHUucGFkZGluZz1mdW5jdGlvbih0KXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD91LnBhZGRpbmdJbm5lcih0KS5wYWRkaW5nT3V0ZXIodCk6dS5wYWRkaW5nSW5uZXIoKX0sdS5wYWRkaW5nSW5uZXI9ZnVuY3Rpb24odCl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KG89ImZ1bmN0aW9uIj09dHlwZW9mIHQ/dDp6UygrdCksdSk6b30sdS5wYWRkaW5nT3V0ZXI9ZnVuY3Rpb24odCl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/dS5wYWRkaW5nVG9wKHQpLnBhZGRpbmdSaWdodCh0KS5wYWRkaW5nQm90dG9tKHQpLnBhZGRpbmdMZWZ0KHQpOnUucGFkZGluZ1RvcCgpfSx1LnBhZGRpbmdUb3A9ZnVuY3Rpb24odCl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KGE9ImZ1bmN0aW9uIj09dHlwZW9mIHQ/dDp6UygrdCksdSk6YX0sdS5wYWRkaW5nUmlnaHQ9ZnVuY3Rpb24odCl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KHM9ImZ1bmN0aW9uIj09dHlwZW9mIHQ/dDp6UygrdCksdSk6c30sdS5wYWRkaW5nQm90dG9tPWZ1bmN0aW9uKHQpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyhsPSJmdW5jdGlvbiI9PXR5cGVvZiB0P3Q6elMoK3QpLHUpOmx9LHUucGFkZGluZ0xlZnQ9ZnVuY3Rpb24odCl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KGM9ImZ1bmN0aW9uIj09dHlwZW9mIHQ/dDp6UygrdCksdSk6Y30sdX0sdHJlZW1hcEJpbmFyeTpmdW5jdGlvbiB3Tih0LGUsbixpLHIpe3ZhciBvLGEscz10LmNoaWxkcmVuLGw9cy5sZW5ndGgsYz1uZXcgQXJyYXkobCsxKTtmb3IoY1swXT1hPW89MDtvPGw7KytvKWNbbysxXT1hKz1zW29dLnZhbHVlOyEoZnVuY3Rpb24gdChlLG4saSxyLG8sYSxsKXtpZihlPj1uLTEpe3ZhciB1PXNbZV07cmV0dXJuIHUueDA9cix1LnkwPW8sdS54MT1hLHZvaWQodS55MT1sKX1mb3IodmFyIGg9Y1tlXSxkPWkvMitoLHA9ZSsxLGY9bi0xO3A8Zjspe3ZhciBtPXArZj4+PjE7Y1ttXTxkP3A9bSsxOmY9bX1kLWNbcC0xXTxjW3BdLWQmJmUrMTxwJiYtLXA7dmFyIGc9Y1twXS1oLF89aS1nO2lmKGEtcj5sLW8pe3ZhciB5PShyKl8rYSpnKS9pO3QoZSxwLGcscixvLHksbCksdChwLG4sXyx5LG8sYSxsKX1lbHNle3ZhciB2PShvKl8rbCpnKS9pO3QoZSxwLGcscixvLGEsdiksdChwLG4sXyxyLHYsYSxsKX19KSgwLGwsdC52YWx1ZSxlLG4saSxyKX0sdHJlZW1hcERpY2U6alMsdHJlZW1hcFNsaWNlOlFTLHRyZWVtYXBTbGljZURpY2U6ZnVuY3Rpb24gU04odCxlLG4saSxyKXsoMSZ0LmRlcHRoP1FTOmpTKSh0LGUsbixpLHIpfSx0cmVlbWFwU3F1YXJpZnk6bk0sdHJlZW1hcFJlc3F1YXJpZnk6aU0saW50ZXJwb2xhdGU6VWQsaW50ZXJwb2xhdGVBcnJheTpmdW5jdGlvbiBNTih0LGUpe3JldHVybihSZChlKT9PZDp6ZCkodCxlKX0saW50ZXJwb2xhdGVCYXNpczpNZCxpbnRlcnBvbGF0ZUJhc2lzQ2xvc2VkOkVkLGludGVycG9sYXRlRGF0ZTpEZCxpbnRlcnBvbGF0ZURpc2NyZXRlOmZ1bmN0aW9uIEVOKHQpe3ZhciBlPXQubGVuZ3RoO3JldHVybiBmdW5jdGlvbihuKXtyZXR1cm4gdFtNYXRoLm1heCgwLE1hdGgubWluKGUtMSxNYXRoLmZsb29yKG4qZSkpKV19fSxpbnRlcnBvbGF0ZUh1ZTpmdW5jdGlvbiBUTih0LGUpe3ZhciBuPUNkKCt0LCtlKTtyZXR1cm4gZnVuY3Rpb24odCl7dmFyIGU9bih0KTtyZXR1cm4gZS0zNjAqTWF0aC5mbG9vcihlLzM2MCl9fSxpbnRlcnBvbGF0ZU51bWJlcjpCZCxpbnRlcnBvbGF0ZU51bWJlckFycmF5Ok9kLGludGVycG9sYXRlT2JqZWN0OkhkLGludGVycG9sYXRlUm91bmQ6R2QsaW50ZXJwb2xhdGVTdHJpbmc6amQsaW50ZXJwb2xhdGVUcmFuc2Zvcm1Dc3M6UWQsaW50ZXJwb2xhdGVUcmFuc2Zvcm1Tdmc6ZXAsaW50ZXJwb2xhdGVab29tOm9wLGludGVycG9sYXRlUmdiOkxkLGludGVycG9sYXRlUmdiQmFzaXM6SWQsaW50ZXJwb2xhdGVSZ2JCYXNpc0Nsb3NlZDpOZCxpbnRlcnBvbGF0ZUhzbDpzcCxpbnRlcnBvbGF0ZUhzbExvbmc6bHAsaW50ZXJwb2xhdGVMYWI6Y3AsaW50ZXJwb2xhdGVIY2w6aHAsaW50ZXJwb2xhdGVIY2xMb25nOmRwLGludGVycG9sYXRlQ3ViZWhlbGl4OmdwLGludGVycG9sYXRlQ3ViZWhlbGl4TG9uZzpfcCxwaWVjZXdpc2U6ZnVuY3Rpb24gQU4odCxlKXtmb3IodmFyIG49MCxpPWUubGVuZ3RoLTEscj1lWzBdLG89bmV3IEFycmF5KGk8MD8wOmkpO248aTspb1tuXT10KHIscj1lWysrbl0pO3JldHVybiBmdW5jdGlvbih0KXt2YXIgZT1NYXRoLm1heCgwLE1hdGgubWluKGktMSxNYXRoLmZsb29yKHQqPWkpKSk7cmV0dXJuIG9bZV0odC1lKX19LHF1YW50aXplOmZ1bmN0aW9uIENOKHQsZSl7Zm9yKHZhciBuPW5ldyBBcnJheShlKSxpPTA7aTxlOysraSluW2ldPXQoaS8oZS0xKSk7cmV0dXJuIG59LHBhdGg6cGcscG9seWdvbkFyZWE6ZnVuY3Rpb24ga04odCl7Zm9yKHZhciBlLG49LTEsaT10Lmxlbmd0aCxyPXRbaS0xXSxvPTA7KytuPGk7KW8rPShlPXIpWzFdKihyPXRbbl0pWzBdLWVbMF0qclsxXTtyZXR1cm4gby8yfSxwb2x5Z29uQ2VudHJvaWQ6ZnVuY3Rpb24gTE4odCl7Zm9yKHZhciBlLG4saT0tMSxyPXQubGVuZ3RoLG89MCxhPTAscz10W3ItMV0sbD0wOysraTxyOylsKz1uPShlPXMpWzBdKihzPXRbaV0pWzFdLXNbMF0qZVsxXSxvKz0oZVswXStzWzBdKSpuLGErPShlWzFdK3NbMV0pKm47cmV0dXJuW28vKGwqPTMpLGEvbF19LHBvbHlnb25IdWxsOmZ1bmN0aW9uIFBOKHQpe2lmKChuPXQubGVuZ3RoKTwzKXJldHVybiBudWxsO3ZhciBlLG4saT1uZXcgQXJyYXkobikscj1uZXcgQXJyYXkobik7Zm9yKGU9MDtlPG47KytlKWlbZV09Wyt0W2VdWzBdLCt0W2VdWzFdLGVdO2ZvcihpLnNvcnQob00pLGU9MDtlPG47KytlKXJbZV09W2lbZV1bMF0sLWlbZV1bMV1dO3ZhciBvPWFNKGkpLGE9YU0ocikscz1hWzBdPT09b1swXSxsPWFbYS5sZW5ndGgtMV09PT1vW28ubGVuZ3RoLTFdLGM9W107Zm9yKGU9by5sZW5ndGgtMTtlPj0wOy0tZSljLnB1c2godFtpW29bZV1dWzJdXSk7Zm9yKGU9K3M7ZTxhLmxlbmd0aC1sOysrZSljLnB1c2godFtpW2FbZV1dWzJdXSk7cmV0dXJuIGN9LHBvbHlnb25Db250YWluczpmdW5jdGlvbiBJTih0LGUpe2Zvcih2YXIgbixpLHI9dC5sZW5ndGgsbz10W3ItMV0sYT1lWzBdLHM9ZVsxXSxsPW9bMF0sYz1vWzFdLHU9ITEsaD0wO2g8cjsrK2gpbj0obz10W2hdKVswXSwoaT1vWzFdKT5zIT1jPnMmJmE8KGwtbikqKHMtaSkvKGMtaSkrbiYmKHU9IXUpLGw9bixjPWk7cmV0dXJuIHV9LHBvbHlnb25MZW5ndGg6ZnVuY3Rpb24gTk4odCl7Zm9yKHZhciBlLG4saT0tMSxyPXQubGVuZ3RoLG89dFtyLTFdLGE9b1swXSxzPW9bMV0sbD0wOysraTxyOyllPWEsbj1zLGUtPWE9KG89dFtpXSlbMF0sbi09cz1vWzFdLGwrPU1hdGguc3FydChlKmUrbipuKTtyZXR1cm4gbH0scXVhZHRyZWU6UF8scmFuZG9tVW5pZm9ybTpsTSxyYW5kb21Ob3JtYWw6Y00scmFuZG9tTG9nTm9ybWFsOnVNLHJhbmRvbUJhdGVzOmRNLHJhbmRvbUlyd2luSGFsbDpoTSxyYW5kb21FeHBvbmVudGlhbDpwTSxzY2FsZUJhbmQ6eE0sc2NhbGVQb2ludDpTTSxzY2FsZUlkZW50aXR5OmZ1bmN0aW9uIHQoZSl7dmFyIG47ZnVuY3Rpb24gaSh0KXtyZXR1cm4gaXNOYU4odD0rdCk/bjp0fXJldHVybiBpLmludmVydD1pLGkuZG9tYWluPWkucmFuZ2U9ZnVuY3Rpb24odCl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KGU9X00uY2FsbCh0LE1NKSxpKTplLnNsaWNlKCl9LGkudW5rbm93bj1mdW5jdGlvbih0KXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8obj10LGkpOm59LGkuY29weT1mdW5jdGlvbigpe3JldHVybiB0KGUpLnVua25vd24obil9LGU9YXJndW1lbnRzLmxlbmd0aD9fTS5jYWxsKGUsTU0pOlswLDFdLFJNKGkpfSxzY2FsZUxpbmVhcjp6TSxzY2FsZUxvZzpXTSxzY2FsZVN5bWxvZzpmdW5jdGlvbiB0KCl7dmFyIGU9WE0oSU0oKSk7cmV0dXJuIGUuY29weT1mdW5jdGlvbigpe3JldHVybiBQTShlLHQoKSkuY29uc3RhbnQoZS5jb25zdGFudCgpKX0sZk0uYXBwbHkoZSxhcmd1bWVudHMpfSxzY2FsZU9yZGluYWw6Yk0sc2NhbGVJbXBsaWNpdDp2TSxzY2FsZVBvdzpRTSxzY2FsZVNxcnQ6ZnVuY3Rpb24gT04oKXtyZXR1cm4gUU0uYXBwbHkobnVsbCxhcmd1bWVudHMpLmV4cG9uZW50KC41KX0sc2NhbGVRdWFudGlsZTp0RSxzY2FsZVF1YW50aXplOmVFLHNjYWxlVGhyZXNob2xkOmZ1bmN0aW9uIHQoKXt2YXIgZSxuPVsuNV0saT1bMCwxXSxyPTE7ZnVuY3Rpb24gbyh0KXtyZXR1cm4gdDw9dD9pW1NsKG4sdCwwLHIpXTplfXJldHVybiBvLmRvbWFpbj1mdW5jdGlvbih0KXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8obj15TS5jYWxsKHQpLHI9TWF0aC5taW4obi5sZW5ndGgsaS5sZW5ndGgtMSksbyk6bi5zbGljZSgpfSxvLnJhbmdlPWZ1bmN0aW9uKHQpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyhpPXlNLmNhbGwodCkscj1NYXRoLm1pbihuLmxlbmd0aCxpLmxlbmd0aC0xKSxvKTppLnNsaWNlKCl9LG8uaW52ZXJ0RXh0ZW50PWZ1bmN0aW9uKHQpe3ZhciBlPWkuaW5kZXhPZih0KTtyZXR1cm5bbltlLTFdLG5bZV1dfSxvLnVua25vd249ZnVuY3Rpb24odCl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KGU9dCxvKTplfSxvLmNvcHk9ZnVuY3Rpb24oKXtyZXR1cm4gdCgpLmRvbWFpbihuKS5yYW5nZShpKS51bmtub3duKGUpfSxmTS5hcHBseShvLGFyZ3VtZW50cyl9LHNjYWxlVGltZTpGQSxzY2FsZVV0YzpmdW5jdGlvbiBSTigpe3JldHVybiBmTS5hcHBseShIQShsVCxhVCxxRSxVRSxWRSxIRSxkRSxvRSxfVCkuZG9tYWluKFtEYXRlLlVUQygyZTMsMCwxKSxEYXRlLlVUQygyZTMsMCwyKV0pLGFyZ3VtZW50cyl9LHNjYWxlU2VxdWVudGlhbDpmdW5jdGlvbiB0KCl7dmFyIGU9Uk0oVkEoKShUTSkpO3JldHVybiBlLmNvcHk9ZnVuY3Rpb24oKXtyZXR1cm4gakEoZSx0KCkpfSxtTS5hcHBseShlLGFyZ3VtZW50cyl9LHNjYWxlU2VxdWVudGlhbExvZzpmdW5jdGlvbiB0KCl7dmFyIGU9R00oVkEoKSkuZG9tYWluKFsxLDEwXSk7cmV0dXJuIGUuY29weT1mdW5jdGlvbigpe3JldHVybiBqQShlLHQoKSkuYmFzZShlLmJhc2UoKSl9LG1NLmFwcGx5KGUsYXJndW1lbnRzKX0sc2NhbGVTZXF1ZW50aWFsUG93OlVBLHNjYWxlU2VxdWVudGlhbFNxcnQ6ZnVuY3Rpb24gek4oKXtyZXR1cm4gVUEuYXBwbHkobnVsbCxhcmd1bWVudHMpLmV4cG9uZW50KC41KX0sc2NhbGVTZXF1ZW50aWFsU3ltbG9nOmZ1bmN0aW9uIHQoKXt2YXIgZT1YTShWQSgpKTtyZXR1cm4gZS5jb3B5PWZ1bmN0aW9uKCl7cmV0dXJuIGpBKGUsdCgpKS5jb25zdGFudChlLmNvbnN0YW50KCkpfSxtTS5hcHBseShlLGFyZ3VtZW50cyl9LHNjYWxlU2VxdWVudGlhbFF1YW50aWxlOmZ1bmN0aW9uIHQoKXt2YXIgZT1bXSxuPVRNO2Z1bmN0aW9uIGkodCl7aWYoIWlzTmFOKHQ9K3QpKXJldHVybiBuKChTbChlLHQpLTEpLyhlLmxlbmd0aC0xKSl9cmV0dXJuIGkuZG9tYWluPWZ1bmN0aW9uKHQpe2lmKCFhcmd1bWVudHMubGVuZ3RoKXJldHVybiBlLnNsaWNlKCk7ZT1bXTtmb3IodmFyIG4scj0wLG89dC5sZW5ndGg7cjxvOysrciludWxsPT0obj10W3JdKXx8aXNOYU4obj0rbil8fGUucHVzaChuKTtyZXR1cm4gZS5zb3J0KGJsKSxpfSxpLmludGVycG9sYXRvcj1mdW5jdGlvbih0KXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8obj10LGkpOm59LGkuY29weT1mdW5jdGlvbigpe3JldHVybiB0KG4pLmRvbWFpbihlKX0sbU0uYXBwbHkoaSxhcmd1bWVudHMpfSxzY2FsZURpdmVyZ2luZzpmdW5jdGlvbiB0KCl7dmFyIGU9Uk0oR0EoKShUTSkpO3JldHVybiBlLmNvcHk9ZnVuY3Rpb24oKXtyZXR1cm4gakEoZSx0KCkpfSxtTS5hcHBseShlLGFyZ3VtZW50cyl9LHNjYWxlRGl2ZXJnaW5nTG9nOmZ1bmN0aW9uIHQoKXt2YXIgZT1HTShHQSgpKS5kb21haW4oWy4xLDEsMTBdKTtyZXR1cm4gZS5jb3B5PWZ1bmN0aW9uKCl7cmV0dXJuIGpBKGUsdCgpKS5iYXNlKGUuYmFzZSgpKX0sbU0uYXBwbHkoZSxhcmd1bWVudHMpfSxzY2FsZURpdmVyZ2luZ1BvdzpXQSxzY2FsZURpdmVyZ2luZ1NxcnQ6ZnVuY3Rpb24gRE4oKXtyZXR1cm4gV0EuYXBwbHkobnVsbCxhcmd1bWVudHMpLmV4cG9uZW50KC41KX0sc2NhbGVEaXZlcmdpbmdTeW1sb2c6ZnVuY3Rpb24gdCgpe3ZhciBlPVhNKEdBKCkpO3JldHVybiBlLmNvcHk9ZnVuY3Rpb24oKXtyZXR1cm4gakEoZSx0KCkpLmNvbnN0YW50KGUuY29uc3RhbnQoKSl9LG1NLmFwcGx5KGUsYXJndW1lbnRzKX0sdGlja0Zvcm1hdDpPTSxzY2hlbWVDYXRlZ29yeTEwOllBLHNjaGVtZUFjY2VudDpYQSxzY2hlbWVEYXJrMjokQSxzY2hlbWVQYWlyZWQ6S0Esc2NoZW1lUGFzdGVsMTpaQSxzY2hlbWVQYXN0ZWwyOkpBLHNjaGVtZVNldDE6UUEsc2NoZW1lU2V0Mjp0QyxzY2hlbWVTZXQzOmVDLHNjaGVtZVRhYmxlYXUxMDpuQyxpbnRlcnBvbGF0ZUJyQkc6b0Msc2NoZW1lQnJCRzpyQyxpbnRlcnBvbGF0ZVBSR246c0Msc2NoZW1lUFJHbjphQyxpbnRlcnBvbGF0ZVBpWUc6Y0Msc2NoZW1lUGlZRzpsQyxpbnRlcnBvbGF0ZVB1T3I6aEMsc2NoZW1lUHVPcjp1QyxpbnRlcnBvbGF0ZVJkQnU6cEMsc2NoZW1lUmRCdTpkQyxpbnRlcnBvbGF0ZVJkR3k6bUMsc2NoZW1lUmRHeTpmQyxpbnRlcnBvbGF0ZVJkWWxCdTpfQyxzY2hlbWVSZFlsQnU6Z0MsaW50ZXJwb2xhdGVSZFlsR246dkMsc2NoZW1lUmRZbEduOnlDLGludGVycG9sYXRlU3BlY3RyYWw6eEMsc2NoZW1lU3BlY3RyYWw6YkMsaW50ZXJwb2xhdGVCdUduOlNDLHNjaGVtZUJ1R246d0MsaW50ZXJwb2xhdGVCdVB1OkVDLHNjaGVtZUJ1UHU6TUMsaW50ZXJwb2xhdGVHbkJ1OkFDLHNjaGVtZUduQnU6VEMsaW50ZXJwb2xhdGVPclJkOmtDLHNjaGVtZU9yUmQ6Q0MsaW50ZXJwb2xhdGVQdUJ1R246UEMsc2NoZW1lUHVCdUduOkxDLGludGVycG9sYXRlUHVCdTpOQyxzY2hlbWVQdUJ1OklDLGludGVycG9sYXRlUHVSZDpSQyxzY2hlbWVQdVJkOk9DLGludGVycG9sYXRlUmRQdTpEQyxzY2hlbWVSZFB1OnpDLGludGVycG9sYXRlWWxHbkJ1OkhDLHNjaGVtZVlsR25CdTpCQyxpbnRlcnBvbGF0ZVlsR246VkMsc2NoZW1lWWxHbjpGQyxpbnRlcnBvbGF0ZVlsT3JCcjpVQyxzY2hlbWVZbE9yQnI6akMsaW50ZXJwb2xhdGVZbE9yUmQ6V0Msc2NoZW1lWWxPclJkOkdDLGludGVycG9sYXRlQmx1ZXM6WUMsc2NoZW1lQmx1ZXM6cUMsaW50ZXJwb2xhdGVHcmVlbnM6JEMsc2NoZW1lR3JlZW5zOlhDLGludGVycG9sYXRlR3JleXM6WkMsc2NoZW1lR3JleXM6S0MsaW50ZXJwb2xhdGVQdXJwbGVzOlFDLHNjaGVtZVB1cnBsZXM6SkMsaW50ZXJwb2xhdGVSZWRzOmVrLHNjaGVtZVJlZHM6dGssaW50ZXJwb2xhdGVPcmFuZ2VzOmlrLHNjaGVtZU9yYW5nZXM6bmssaW50ZXJwb2xhdGVDaXZpZGlzOmZ1bmN0aW9uIEJOKHQpe3JldHVybiB0PU1hdGgubWF4KDAsTWF0aC5taW4oMSx0KSksInJnYigiK01hdGgubWF4KDAsTWF0aC5taW4oMjU1LE1hdGgucm91bmQoLTQuNTQtdCooMzUuMzQtdCooMjM4MS43My10Kig2NDAyLjctdCooNzAyNC43Mi0yNzEwLjU3KnQpKSkpKSkpKyIsICIrTWF0aC5tYXgoMCxNYXRoLm1pbigyNTUsTWF0aC5yb3VuZCgzMi40OSt0KigxNzAuNzMrdCooNTIuODItdCooMTMxLjQ2LXQqKDE3Ni41OC02Ny4zNyp0KSkpKSkpKSsiLCAiK01hdGgubWF4KDAsTWF0aC5taW4oMjU1LE1hdGgucm91bmQoODEuMjQrdCooNDQyLjM2LXQqKDI0ODIuNDMtdCooNjE2Ny4yNC10Kig2NjE0Ljk0LTI0NzUuNjcqdCkpKSkpKSkrIikifSxpbnRlcnBvbGF0ZUN1YmVoZWxpeERlZmF1bHQ6cmssaW50ZXJwb2xhdGVSYWluYm93OmZ1bmN0aW9uIEhOKHQpeyh0PDB8fHQ+MSkmJih0LT1NYXRoLmZsb29yKHQpKTt2YXIgZT1NYXRoLmFicyh0LS41KTtyZXR1cm4gc2suaD0zNjAqdC0xMDAsc2sucz0xLjUtMS41KmUsc2subD0uOC0uOSplLHNrKyIifSxpbnRlcnBvbGF0ZVdhcm06b2ssaW50ZXJwb2xhdGVDb29sOmFrLGludGVycG9sYXRlU2luZWJvdzpmdW5jdGlvbiBGTih0KXt2YXIgZTtyZXR1cm4gdD0oLjUtdCkqTWF0aC5QSSxsay5yPTI1NSooZT1NYXRoLnNpbih0KSkqZSxsay5nPTI1NSooZT1NYXRoLnNpbih0K2NrKSkqZSxsay5iPTI1NSooZT1NYXRoLnNpbih0K3VrKSkqZSxsaysiIn0saW50ZXJwb2xhdGVUdXJibzpmdW5jdGlvbiBWTih0KXtyZXR1cm4gdD1NYXRoLm1heCgwLE1hdGgubWluKDEsdCkpLCJyZ2IoIitNYXRoLm1heCgwLE1hdGgubWluKDI1NSxNYXRoLnJvdW5kKDM0LjYxK3QqKDExNzIuMzMtdCooMTA3OTMuNTYtdCooMzMzMDAuMTItdCooMzgzOTQuNDktMTQ4MjUuMDUqdCkpKSkpKSkrIiwgIitNYXRoLm1heCgwLE1hdGgubWluKDI1NSxNYXRoLnJvdW5kKDIzLjMxK3QqKDU1Ny4zMyt0KigxMjI1LjMzLXQqKDM1NzQuOTYtdCooMTA3My43Nys3MDcuNTYqdCkpKSkpKSkrIiwgIitNYXRoLm1heCgwLE1hdGgubWluKDI1NSxNYXRoLnJvdW5kKDI3LjIrdCooMzIxMS4xLXQqKDE1MzI3Ljk3LXQqKDI3ODE0LXQqKDIyNTY5LjE4LTY4MzguNjYqdCkpKSkpKSkrIikifSxpbnRlcnBvbGF0ZVZpcmlkaXM6ZGssaW50ZXJwb2xhdGVNYWdtYTpwayxpbnRlcnBvbGF0ZUluZmVybm86ZmssaW50ZXJwb2xhdGVQbGFzbWE6bWssY3JlYXRlOmZ1bmN0aW9uIGpOKHQpe3JldHVybiBTdSh5Yyh0KS5jYWxsKGRvY3VtZW50LmRvY3VtZW50RWxlbWVudCkpfSxjcmVhdG9yOnljLGxvY2FsOm5oLG1hdGNoZXI6U2MsbW91c2U6YWgsbmFtZXNwYWNlOm1jLG5hbWVzcGFjZXM6ZmMsY2xpZW50UG9pbnQ6b2gsc2VsZWN0OlN1LHNlbGVjdEFsbDpzaCxzZWxlY3Rpb246d3Usc2VsZWN0b3I6YmMsc2VsZWN0b3JBbGw6d2Msc3R5bGU6SGMsdG91Y2g6bGgsdG91Y2hlczpmdW5jdGlvbiBVTih0LGUpe251bGw9PWUmJihlPXJoKCkudG91Y2hlcyk7Zm9yKHZhciBuPTAsaT1lP2UubGVuZ3RoOjAscj1uZXcgQXJyYXkoaSk7bjxpOysrbilyW25dPW9oKHQsZVtuXSk7cmV0dXJuIHJ9LHdpbmRvdzpSYyxnZXQgZXZlbnQoKXtyZXR1cm4gdXV9LGN1c3RvbUV2ZW50Omd1LGFyYzpmdW5jdGlvbiBHTigpe3ZhciB0PUxrLGU9UGssbj1naygwKSxpPW51bGwscj1JayxvPU5rLGE9T2sscz1udWxsO2Z1bmN0aW9uIGwoKXt2YXIgbCxjLHU9K3QuYXBwbHkodGhpcyxhcmd1bWVudHMpLGg9K2UuYXBwbHkodGhpcyxhcmd1bWVudHMpLGQ9ci5hcHBseSh0aGlzLGFyZ3VtZW50cyktVGsscD1vLmFwcGx5KHRoaXMsYXJndW1lbnRzKS1UayxmPV9rKHAtZCksbT1wPmQ7aWYoc3x8KHM9bD1wZygpKSxoPHUmJihjPWgsaD11LHU9YyksaD5NaylpZihmPkFrLU1rKXMubW92ZVRvKGgqdmsoZCksaCp3ayhkKSkscy5hcmMoMCwwLGgsZCxwLCFtKSx1Pk1rJiYocy5tb3ZlVG8odSp2ayhwKSx1KndrKHApKSxzLmFyYygwLDAsdSxwLGQsbSkpO2Vsc2V7dmFyIGcsXyx5PWQsdj1wLGI9ZCx4PXAsdz1mLFM9ZixNPWEuYXBwbHkodGhpcyxhcmd1bWVudHMpLzIsRT1NPk1rJiYoaT8raS5hcHBseSh0aGlzLGFyZ3VtZW50cyk6U2sodSp1K2gqaCkpLFQ9eGsoX2soaC11KS8yLCtuLmFwcGx5KHRoaXMsYXJndW1lbnRzKSksQT1ULEM9VDtpZihFPk1rKXt2YXIgaz1rayhFL3Uqd2soTSkpLEw9a2soRS9oKndrKE0pKTsody09MiprKT5Naz8oYis9ayo9bT8xOi0xLHgtPWspOih3PTAsYj14PShkK3ApLzIpLChTLT0yKkwpPk1rPyh5Kz1MKj1tPzE6LTEsdi09TCk6KFM9MCx5PXY9KGQrcCkvMil9dmFyIFA9aCp2ayh5KSxJPWgqd2soeSksTj11KnZrKHgpLE89dSp3ayh4KTtpZihUPk1rKXt2YXIgUix6PWgqdmsodiksRD1oKndrKHYpLEI9dSp2ayhiKSxIPXUqd2soYik7aWYoZjxFayYmKFI9UmsoUCxJLEIsSCx6LEQsTixPKSkpe3ZhciBGPVAtUlswXSxWPUktUlsxXSxqPXotUlswXSxVPUQtUlsxXSxHPTEvd2soQ2soKEYqaitWKlUpLyhTayhGKkYrVipWKSpTayhqKmorVSpVKSkpLzIpLFc9U2soUlswXSpSWzBdK1JbMV0qUlsxXSk7QT14ayhULCh1LVcpLyhHLTEpKSxDPXhrKFQsKGgtVykvKEcrMSkpfX1TPk1rP0M+TWs/KGc9emsoQixILFAsSSxoLEMsbSksXz16ayh6LEQsTixPLGgsQyxtKSxzLm1vdmVUbyhnLmN4K2cueDAxLGcuY3krZy55MDEpLEM8VD9zLmFyYyhnLmN4LGcuY3ksQyx5ayhnLnkwMSxnLngwMSkseWsoXy55MDEsXy54MDEpLCFtKToocy5hcmMoZy5jeCxnLmN5LEMseWsoZy55MDEsZy54MDEpLHlrKGcueTExLGcueDExKSwhbSkscy5hcmMoMCwwLGgseWsoZy5jeStnLnkxMSxnLmN4K2cueDExKSx5ayhfLmN5K18ueTExLF8uY3grXy54MTEpLCFtKSxzLmFyYyhfLmN4LF8uY3ksQyx5ayhfLnkxMSxfLngxMSkseWsoXy55MDEsXy54MDEpLCFtKSkpOihzLm1vdmVUbyhQLEkpLHMuYXJjKDAsMCxoLHksdiwhbSkpOnMubW92ZVRvKFAsSSksdT5NayYmdz5Naz9BPk1rPyhnPXprKE4sTyx6LEQsdSwtQSxtKSxfPXprKFAsSSxCLEgsdSwtQSxtKSxzLmxpbmVUbyhnLmN4K2cueDAxLGcuY3krZy55MDEpLEE8VD9zLmFyYyhnLmN4LGcuY3ksQSx5ayhnLnkwMSxnLngwMSkseWsoXy55MDEsXy54MDEpLCFtKToocy5hcmMoZy5jeCxnLmN5LEEseWsoZy55MDEsZy54MDEpLHlrKGcueTExLGcueDExKSwhbSkscy5hcmMoMCwwLHUseWsoZy5jeStnLnkxMSxnLmN4K2cueDExKSx5ayhfLmN5K18ueTExLF8uY3grXy54MTEpLG0pLHMuYXJjKF8uY3gsXy5jeSxBLHlrKF8ueTExLF8ueDExKSx5ayhfLnkwMSxfLngwMSksIW0pKSk6cy5hcmMoMCwwLHUseCxiLG0pOnMubGluZVRvKE4sTyl9ZWxzZSBzLm1vdmVUbygwLDApO2lmKHMuY2xvc2VQYXRoKCksbClyZXR1cm4gcz1udWxsLGwrIiJ8fG51bGx9cmV0dXJuIGwuY2VudHJvaWQ9ZnVuY3Rpb24oKXt2YXIgbj0oK3QuYXBwbHkodGhpcyxhcmd1bWVudHMpKyArZS5hcHBseSh0aGlzLGFyZ3VtZW50cykpLzIsaT0oK3IuYXBwbHkodGhpcyxhcmd1bWVudHMpKyArby5hcHBseSh0aGlzLGFyZ3VtZW50cykpLzItRWsvMjtyZXR1cm5bdmsoaSkqbix3ayhpKSpuXX0sbC5pbm5lclJhZGl1cz1mdW5jdGlvbihlKXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8odD0iZnVuY3Rpb24iPT10eXBlb2YgZT9lOmdrKCtlKSxsKTp0fSxsLm91dGVyUmFkaXVzPWZ1bmN0aW9uKHQpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyhlPSJmdW5jdGlvbiI9PXR5cGVvZiB0P3Q6Z2soK3QpLGwpOmV9LGwuY29ybmVyUmFkaXVzPWZ1bmN0aW9uKHQpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyhuPSJmdW5jdGlvbiI9PXR5cGVvZiB0P3Q6Z2soK3QpLGwpOm59LGwucGFkUmFkaXVzPWZ1bmN0aW9uKHQpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyhpPW51bGw9PXQ/bnVsbDoiZnVuY3Rpb24iPT10eXBlb2YgdD90OmdrKCt0KSxsKTppfSxsLnN0YXJ0QW5nbGU9ZnVuY3Rpb24odCl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KHI9ImZ1bmN0aW9uIj09dHlwZW9mIHQ/dDpnaygrdCksbCk6cn0sbC5lbmRBbmdsZT1mdW5jdGlvbih0KXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8obz0iZnVuY3Rpb24iPT10eXBlb2YgdD90OmdrKCt0KSxsKTpvfSxsLnBhZEFuZ2xlPWZ1bmN0aW9uKHQpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyhhPSJmdW5jdGlvbiI9PXR5cGVvZiB0P3Q6Z2soK3QpLGwpOmF9LGwuY29udGV4dD1mdW5jdGlvbih0KXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8ocz1udWxsPT10P251bGw6dCxsKTpzfSxsfSxhcmVhOmprLGxpbmU6VmsscGllOmZ1bmN0aW9uIFdOKCl7dmFyIHQ9R2ssZT1VayxuPW51bGwsaT1naygwKSxyPWdrKEFrKSxvPWdrKDApO2Z1bmN0aW9uIGEoYSl7dmFyIHMsbCxjLHUsaCxkPWEubGVuZ3RoLHA9MCxmPW5ldyBBcnJheShkKSxtPW5ldyBBcnJheShkKSxnPStpLmFwcGx5KHRoaXMsYXJndW1lbnRzKSxfPU1hdGgubWluKEFrLE1hdGgubWF4KC1BayxyLmFwcGx5KHRoaXMsYXJndW1lbnRzKS1nKSkseT1NYXRoLm1pbihNYXRoLmFicyhfKS9kLG8uYXBwbHkodGhpcyxhcmd1bWVudHMpKSx2PXkqKF88MD8tMToxKTtmb3Iocz0wO3M8ZDsrK3MpKGg9bVtmW3NdPXNdPSt0KGFbc10scyxhKSk+MCYmKHArPWgpO2ZvcihudWxsIT1lP2Yuc29ydCgoZnVuY3Rpb24odCxuKXtyZXR1cm4gZShtW3RdLG1bbl0pfSkpOm51bGwhPW4mJmYuc29ydCgoZnVuY3Rpb24odCxlKXtyZXR1cm4gbihhW3RdLGFbZV0pfSkpLHM9MCxjPXA/KF8tZCp2KS9wOjA7czxkOysrcyxnPXUpbVtsPWZbc11dPXtkYXRhOmFbbF0saW5kZXg6cyx2YWx1ZTpoPW1bbF0sc3RhcnRBbmdsZTpnLGVuZEFuZ2xlOnU9ZysoaD4wP2gqYzowKSt2LHBhZEFuZ2xlOnl9O3JldHVybiBtfXJldHVybiBhLnZhbHVlPWZ1bmN0aW9uKGUpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyh0PSJmdW5jdGlvbiI9PXR5cGVvZiBlP2U6Z2soK2UpLGEpOnR9LGEuc29ydFZhbHVlcz1mdW5jdGlvbih0KXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8oZT10LG49bnVsbCxhKTplfSxhLnNvcnQ9ZnVuY3Rpb24odCl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KG49dCxlPW51bGwsYSk6bn0sYS5zdGFydEFuZ2xlPWZ1bmN0aW9uKHQpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyhpPSJmdW5jdGlvbiI9PXR5cGVvZiB0P3Q6Z2soK3QpLGEpOml9LGEuZW5kQW5nbGU9ZnVuY3Rpb24odCl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KHI9ImZ1bmN0aW9uIj09dHlwZW9mIHQ/dDpnaygrdCksYSk6cn0sYS5wYWRBbmdsZT1mdW5jdGlvbih0KXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8obz0iZnVuY3Rpb24iPT10eXBlb2YgdD90OmdrKCt0KSxhKTpvfSxhfSxhcmVhUmFkaWFsOktrLHJhZGlhbEFyZWE6S2ssbGluZVJhZGlhbDokayxyYWRpYWxMaW5lOiRrLHBvaW50UmFkaWFsOlprLGxpbmtIb3Jpem9udGFsOmZ1bmN0aW9uIHFOKCl7cmV0dXJuIGVMKG5MKX0sbGlua1ZlcnRpY2FsOmZ1bmN0aW9uIFlOKCl7cmV0dXJuIGVMKGlMKX0sbGlua1JhZGlhbDpmdW5jdGlvbiBYTigpe3ZhciB0PWVMKHJMKTtyZXR1cm4gdC5hbmdsZT10LngsZGVsZXRlIHQueCx0LnJhZGl1cz10LnksZGVsZXRlIHQueSx0fSxzeW1ib2w6ZnVuY3Rpb24gJE4oKXt2YXIgdD1nayhvTCksZT1nayg2NCksbj1udWxsO2Z1bmN0aW9uIGkoKXt2YXIgaTtpZihufHwobj1pPXBnKCkpLHQuYXBwbHkodGhpcyxhcmd1bWVudHMpLmRyYXcobiwrZS5hcHBseSh0aGlzLGFyZ3VtZW50cykpLGkpcmV0dXJuIG49bnVsbCxpKyIifHxudWxsfXJldHVybiBpLnR5cGU9ZnVuY3Rpb24oZSl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KHQ9ImZ1bmN0aW9uIj09dHlwZW9mIGU/ZTpnayhlKSxpKTp0fSxpLnNpemU9ZnVuY3Rpb24odCl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KGU9ImZ1bmN0aW9uIj09dHlwZW9mIHQ/dDpnaygrdCksaSk6ZX0saS5jb250ZXh0PWZ1bmN0aW9uKHQpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyhuPW51bGw9PXQ/bnVsbDp0LGkpOm59LGl9LHN5bWJvbHM6d0wsc3ltYm9sQ2lyY2xlOm9MLHN5bWJvbENyb3NzOmFMLHN5bWJvbERpYW1vbmQ6Y0wsc3ltYm9sU3F1YXJlOmZMLHN5bWJvbFN0YXI6cEwsc3ltYm9sVHJpYW5nbGU6Z0wsc3ltYm9sV3llOnhMLGN1cnZlQmFzaXNDbG9zZWQ6ZnVuY3Rpb24gS04odCl7cmV0dXJuIG5ldyBBTCh0KX0sY3VydmVCYXNpc09wZW46ZnVuY3Rpb24gWk4odCl7cmV0dXJuIG5ldyBDTCh0KX0sY3VydmVCYXNpczpUTCxjdXJ2ZUJ1bmRsZTpMTCxjdXJ2ZUNhcmRpbmFsQ2xvc2VkOlJMLGN1cnZlQ2FyZGluYWxPcGVuOkRMLGN1cnZlQ2FyZGluYWw6TkwsY3VydmVDYXRtdWxsUm9tQ2xvc2VkOmpMLGN1cnZlQ2F0bXVsbFJvbU9wZW46R0wsY3VydmVDYXRtdWxsUm9tOkZMLGN1cnZlTGluZWFyQ2xvc2VkOmZ1bmN0aW9uIEpOKHQpe3JldHVybiBuZXcgV0wodCl9LGN1cnZlTGluZWFyOkJrLGN1cnZlTW9ub3RvbmVYOmZ1bmN0aW9uIFFOKHQpe3JldHVybiBuZXcgS0wodCl9LGN1cnZlTW9ub3RvbmVZOmZ1bmN0aW9uIHRPKHQpe3JldHVybiBuZXcgWkwodCl9LGN1cnZlTmF0dXJhbDpmdW5jdGlvbiBlTyh0KXtyZXR1cm4gbmV3IFFMKHQpfSxjdXJ2ZVN0ZXA6ZnVuY3Rpb24gbk8odCl7cmV0dXJuIG5ldyBlUCh0LC41KX0sY3VydmVTdGVwQWZ0ZXI6ZnVuY3Rpb24gaU8odCl7cmV0dXJuIG5ldyBlUCh0LDEpfSxjdXJ2ZVN0ZXBCZWZvcmU6ZnVuY3Rpb24gck8odCl7cmV0dXJuIG5ldyBlUCh0LDApfSxzdGFjazpmdW5jdGlvbiBvTygpe3ZhciB0PWdrKFtdKSxlPWlQLG49blAsaT1yUDtmdW5jdGlvbiByKHIpe3ZhciBvLGEscz10LmFwcGx5KHRoaXMsYXJndW1lbnRzKSxsPXIubGVuZ3RoLGM9cy5sZW5ndGgsdT1uZXcgQXJyYXkoYyk7Zm9yKG89MDtvPGM7KytvKXtmb3IodmFyIGgsZD1zW29dLHA9dVtvXT1uZXcgQXJyYXkobCksZj0wO2Y8bDsrK2YpcFtmXT1oPVswLCtpKHJbZl0sZCxmLHIpXSxoLmRhdGE9cltmXTtwLmtleT1kfWZvcihvPTAsYT1lKHUpO288YzsrK28pdVthW29dXS5pbmRleD1vO3JldHVybiBuKHUsYSksdX1yZXR1cm4gci5rZXlzPWZ1bmN0aW9uKGUpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyh0PSJmdW5jdGlvbiI9PXR5cGVvZiBlP2U6Z2soSmsuY2FsbChlKSkscik6dH0sci52YWx1ZT1mdW5jdGlvbih0KXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8oaT0iZnVuY3Rpb24iPT10eXBlb2YgdD90OmdrKCt0KSxyKTppfSxyLm9yZGVyPWZ1bmN0aW9uKHQpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyhlPW51bGw9PXQ/aVA6ImZ1bmN0aW9uIj09dHlwZW9mIHQ/dDpnayhKay5jYWxsKHQpKSxyKTplfSxyLm9mZnNldD1mdW5jdGlvbih0KXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8obj1udWxsPT10P25QOnQscik6bn0scn0sc3RhY2tPZmZzZXRFeHBhbmQ6ZnVuY3Rpb24gYU8odCxlKXtpZigoaT10Lmxlbmd0aCk+MCl7Zm9yKHZhciBuLGkscixvPTAsYT10WzBdLmxlbmd0aDtvPGE7KytvKXtmb3Iocj1uPTA7bjxpOysrbilyKz10W25dW29dWzFdfHwwO2lmKHIpZm9yKG49MDtuPGk7KytuKXRbbl1bb11bMV0vPXJ9blAodCxlKX19LHN0YWNrT2Zmc2V0RGl2ZXJnaW5nOmZ1bmN0aW9uIHNPKHQsZSl7aWYoKHM9dC5sZW5ndGgpPjApZm9yKHZhciBuLGkscixvLGEscyxsPTAsYz10W2VbMF1dLmxlbmd0aDtsPGM7KytsKWZvcihvPWE9MCxuPTA7bjxzOysrbikocj0oaT10W2Vbbl1dW2xdKVsxXS1pWzBdKT4wPyhpWzBdPW8saVsxXT1vKz1yKTpyPDA/KGlbMV09YSxpWzBdPWErPXIpOihpWzBdPTAsaVsxXT1yKX0sc3RhY2tPZmZzZXROb25lOm5QLHN0YWNrT2Zmc2V0U2lsaG91ZXR0ZTpmdW5jdGlvbiBsTyh0LGUpe2lmKChuPXQubGVuZ3RoKT4wKXtmb3IodmFyIG4saT0wLHI9dFtlWzBdXSxvPXIubGVuZ3RoO2k8bzsrK2kpe2Zvcih2YXIgYT0wLHM9MDthPG47KythKXMrPXRbYV1baV1bMV18fDA7cltpXVsxXSs9cltpXVswXT0tcy8yfW5QKHQsZSl9fSxzdGFja09mZnNldFdpZ2dsZTpmdW5jdGlvbiBjTyh0LGUpe2lmKChyPXQubGVuZ3RoKT4wJiYoaT0obj10W2VbMF1dKS5sZW5ndGgpPjApe2Zvcih2YXIgbixpLHIsbz0wLGE9MTthPGk7KythKXtmb3IodmFyIHM9MCxsPTAsYz0wO3M8cjsrK3Mpe2Zvcih2YXIgdT10W2Vbc11dLGg9dVthXVsxXXx8MCxkPShoLSh1W2EtMV1bMV18fDApKS8yLHA9MDtwPHM7KytwKXt2YXIgZj10W2VbcF1dO2QrPShmW2FdWzFdfHwwKS0oZlthLTFdWzFdfHwwKX1sKz1oLGMrPWQqaH1uW2EtMV1bMV0rPW5bYS0xXVswXT1vLGwmJihvLT1jL2wpfW5bYS0xXVsxXSs9blthLTFdWzBdPW8sblAodCxlKX19LHN0YWNrT3JkZXJBcHBlYXJhbmNlOm9QLHN0YWNrT3JkZXJBc2NlbmRpbmc6c1Asc3RhY2tPcmRlckRlc2NlbmRpbmc6ZnVuY3Rpb24gdU8odCl7cmV0dXJuIHNQKHQpLnJldmVyc2UoKX0sc3RhY2tPcmRlckluc2lkZU91dDpmdW5jdGlvbiBoTyh0KXt2YXIgZSxuLGk9dC5sZW5ndGgscj10Lm1hcChsUCksbz1vUCh0KSxhPTAscz0wLGw9W10sYz1bXTtmb3IoZT0wO2U8aTsrK2Upbj1vW2VdLGE8cz8oYSs9cltuXSxsLnB1c2gobikpOihzKz1yW25dLGMucHVzaChuKSk7cmV0dXJuIGMucmV2ZXJzZSgpLmNvbmNhdChsKX0sc3RhY2tPcmRlck5vbmU6aVAsc3RhY2tPcmRlclJldmVyc2U6ZnVuY3Rpb24gZE8odCl7cmV0dXJuIGlQKHQpLnJldmVyc2UoKX0sdGltZUludGVydmFsOnJFLHRpbWVNaWxsaXNlY29uZDpvRSx0aW1lTWlsbGlzZWNvbmRzOmFFLHV0Y01pbGxpc2Vjb25kOm9FLHV0Y01pbGxpc2Vjb25kczphRSx0aW1lU2Vjb25kOmRFLHRpbWVTZWNvbmRzOnBFLHV0Y1NlY29uZDpkRSx1dGNTZWNvbmRzOnBFLHRpbWVNaW51dGU6ZkUsdGltZU1pbnV0ZXM6bUUsdGltZUhvdXI6Z0UsdGltZUhvdXJzOl9FLHRpbWVEYXk6eUUsdGltZURheXM6dkUsdGltZVdlZWs6eEUsdGltZVdlZWtzOkNFLHRpbWVTdW5kYXk6eEUsdGltZVN1bmRheXM6Q0UsdGltZU1vbmRheTp3RSx0aW1lTW9uZGF5czprRSx0aW1lVHVlc2RheTpTRSx0aW1lVHVlc2RheXM6TEUsdGltZVdlZG5lc2RheTpNRSx0aW1lV2VkbmVzZGF5czpQRSx0aW1lVGh1cnNkYXk6RUUsdGltZVRodXJzZGF5czpJRSx0aW1lRnJpZGF5OlRFLHRpbWVGcmlkYXlzOk5FLHRpbWVTYXR1cmRheTpBRSx0aW1lU2F0dXJkYXlzOk9FLHRpbWVNb250aDpSRSx0aW1lTW9udGhzOnpFLHRpbWVZZWFyOkRFLHRpbWVZZWFyczpCRSx1dGNNaW51dGU6SEUsdXRjTWludXRlczpGRSx1dGNIb3VyOlZFLHV0Y0hvdXJzOmpFLHV0Y0RheTpVRSx1dGNEYXlzOkdFLHV0Y1dlZWs6cUUsdXRjV2Vla3M6UUUsdXRjU3VuZGF5OnFFLHV0Y1N1bmRheXM6UUUsdXRjTW9uZGF5OllFLHV0Y01vbmRheXM6dFQsdXRjVHVlc2RheTpYRSx1dGNUdWVzZGF5czplVCx1dGNXZWRuZXNkYXk6JEUsdXRjV2VkbmVzZGF5czpuVCx1dGNUaHVyc2RheTpLRSx1dGNUaHVyc2RheXM6aVQsdXRjRnJpZGF5OlpFLHV0Y0ZyaWRheXM6clQsdXRjU2F0dXJkYXk6SkUsdXRjU2F0dXJkYXlzOm9ULHV0Y01vbnRoOmFULHV0Y01vbnRoczpzVCx1dGNZZWFyOmxULHV0Y1llYXJzOmNULHRpbWVGb3JtYXREZWZhdWx0TG9jYWxlOkxBLGdldCB0aW1lRm9ybWF0KCl7cmV0dXJuIG1UfSxnZXQgdGltZVBhcnNlKCl7cmV0dXJuIGdUfSxnZXQgdXRjRm9ybWF0KCl7cmV0dXJuIF9UfSxnZXQgdXRjUGFyc2UoKXtyZXR1cm4geVR9LHRpbWVGb3JtYXRMb2NhbGU6cFQsaXNvRm9ybWF0OklBLGlzb1BhcnNlOk9BLG5vdzpUcCx0aW1lcjprcCx0aW1lckZsdXNoOkxwLHRpbWVvdXQ6T3AsaW50ZXJ2YWw6ZnVuY3Rpb24gcE8odCxlLG4pe3ZhciBpPW5ldyBDcCxyPWU7cmV0dXJuIG51bGw9PWU/KGkucmVzdGFydCh0LGUsbiksaSk6KGU9K2Usbj1udWxsPT1uP1RwKCk6K24saS5yZXN0YXJ0KChmdW5jdGlvbiBvKGEpe2ErPXIsaS5yZXN0YXJ0KG8scis9ZSxuKSx0KGEpfSksZSxuKSxpKX0sdHJhbnNpdGlvbjpfZixhY3RpdmU6ZnVuY3Rpb24gZk8odCxlKXt2YXIgbixpLHI9dC5fX3RyYW5zaXRpb247aWYocilmb3IoaSBpbiBlPW51bGw9PWU/bnVsbDplKyIiLHIpaWYoKG49cltpXSkuc3RhdGU+MSYmbi5uYW1lPT09ZSlyZXR1cm4gbmV3IGdmKFtbdF1dLFNtLGUsK2kpO3JldHVybiBudWxsfSxpbnRlcnJ1cHQ6VnAsdm9yb25vaTpmdW5jdGlvbiBtTygpe3ZhciB0PXVQLGU9aFAsbj1udWxsO2Z1bmN0aW9uIGkoaSl7cmV0dXJuIG5ldyBxUChpLm1hcCgoZnVuY3Rpb24obixyKXt2YXIgbz1bTWF0aC5yb3VuZCh0KG4scixpKS9qUCkqalAsTWF0aC5yb3VuZChlKG4scixpKS9qUCkqalBdO3JldHVybiBvLmluZGV4PXIsby5kYXRhPW4sb30pKSxuKX1yZXR1cm4gaS5wb2x5Z29ucz1mdW5jdGlvbih0KXtyZXR1cm4gaSh0KS5wb2x5Z29ucygpfSxpLmxpbmtzPWZ1bmN0aW9uKHQpe3JldHVybiBpKHQpLmxpbmtzKCl9LGkudHJpYW5nbGVzPWZ1bmN0aW9uKHQpe3JldHVybiBpKHQpLnRyaWFuZ2xlcygpfSxpLng9ZnVuY3Rpb24oZSl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KHQ9ImZ1bmN0aW9uIj09dHlwZW9mIGU/ZTpjUCgrZSksaSk6dH0saS55PWZ1bmN0aW9uKHQpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyhlPSJmdW5jdGlvbiI9PXR5cGVvZiB0P3Q6Y1AoK3QpLGkpOmV9LGkuZXh0ZW50PWZ1bmN0aW9uKHQpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyhuPW51bGw9PXQ/bnVsbDpbWyt0WzBdWzBdLCt0WzBdWzFdXSxbK3RbMV1bMF0sK3RbMV1bMV1dXSxpKTpuJiZbW25bMF1bMF0sblswXVsxXV0sW25bMV1bMF0sblsxXVsxXV1dfSxpLnNpemU9ZnVuY3Rpb24odCl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KG49bnVsbD09dD9udWxsOltbMCwwXSxbK3RbMF0sK3RbMV1dXSxpKTpuJiZbblsxXVswXS1uWzBdWzBdLG5bMV1bMV0tblswXVsxXV19LGl9LHpvb206YUksem9vbVRyYW5zZm9ybTpaUCx6b29tSWRlbnRpdHk6S1B9KTtjb25zdCBnTz1bIiNmZjcwNDMiLCIjMDA3N2JiIiwiI2NjMzMxMSIsIiMzM2JiZWUiLCIjZWUzMzc3IiwiIzAwOTk4OCIsIiNiYmJiYmIiXTtjbGFzcyBfTyBleHRlbmRzIG1se2NvbnN0cnVjdG9yKCl7c3VwZXIoLi4uYXJndW1lbnRzKSx0aGlzLl9leHBlcmltZW50cz1bXX1sb2FkKCl7Y29uc3QgdD1ncigpLmV4cGVyaW1lbnRzKCk7cmV0dXJuIHRoaXMucmVxdWVzdE1hbmFnZXIucmVxdWVzdCh0KS50aGVuKCh0PT57d2UuaXNFcXVhbCh0aGlzLl9leHBlcmltZW50cyx0KXx8KHRoaXMuX2V4cGVyaW1lbnRzPXQsdGhpcy5lbWl0Q2hhbmdlKCkpfSkpfWdldEV4cGVyaW1lbnRzKCl7cmV0dXJuIHRoaXMuX2V4cGVyaW1lbnRzLnNsaWNlKCl9fWNvbnN0IHlPPW5ldyBfTztjbGFzcyB2T3tjb25zdHJ1Y3Rvcih0PWdPKXt0aGlzLnBhbGV0dGU9dCx0aGlzLmlkZW50aWZpZXJzPXhnKCl9c2V0RG9tYWluKHQpe3JldHVybiB0aGlzLmlkZW50aWZpZXJzPXhnKCksdC5mb3JFYWNoKCgodCxlKT0+e3RoaXMuaWRlbnRpZmllcnMuc2V0KHQsdGhpcy5wYWxldHRlW2UldGhpcy5wYWxldHRlLmxlbmd0aF0pfSkpLHRoaXN9Z2V0Q29sb3IodCl7aWYoIXRoaXMuaWRlbnRpZmllcnMuaGFzKHQpKXRocm93IG5ldyBFcnJvcihgU3RyaW5nICR7dH0gd2FzIG5vdCBpbiB0aGUgZG9tYWluLmApO3JldHVybiB0aGlzLmlkZW50aWZpZXJzLmdldCh0KX19ZnVuY3Rpb24gYk8odCxlKXtjb25zdCBuPW5ldyB2TztmdW5jdGlvbiBpKCl7bi5zZXREb21haW4oZSgpKX1yZXR1cm4gdC5hZGRMaXN0ZW5lcihpKSxpKCksdD0+bi5nZXRDb2xvcih0KX1jb25zdCB4Tz1iTyh2bCwoKCk9PnZsLmdldFJ1bnMoKSkpO2JPKHlPLCgoKT0+eU8uZ2V0RXhwZXJpbWVudHMoKS5tYXAoKCh7bmFtZTp0fSk9PnQpKSkpLG5sKHttb2R1bGVOYW1lOiJydW4tY29sb3Itc3R5bGUiLHN0eWxlQ29udGVudDoiXG4gICAgW2NvbG9yLWNsYXNzPSdsaWdodC1ibHVlJ10gcGFwZXItY2hlY2tib3gge1xuICAgICAgLS1wYXBlci1jaGVja2JveC1jaGVja2VkLWNvbG9yOiB2YXIoLS1wYXBlci1saWdodC1ibHVlLTUwMCk7XG4gICAgICAtLXBhcGVyLWNoZWNrYm94LWNoZWNrZWQtaW5rLWNvbG9yOiB2YXIoLS1wYXBlci1saWdodC1ibHVlLTUwMCk7XG4gICAgICAtLXBhcGVyLWNoZWNrYm94LXVuY2hlY2tlZC1jb2xvcjogdmFyKC0tcGFwZXItbGlnaHQtYmx1ZS05MDApO1xuICAgICAgLS1wYXBlci1jaGVja2JveC11bmNoZWNrZWQtaW5rLWNvbG9yOiB2YXIoLS1wYXBlci1saWdodC1ibHVlLTkwMCk7XG4gICAgfVxuICAgIFtjb2xvci1jbGFzcz0ncmVkJ10gcGFwZXItY2hlY2tib3gge1xuICAgICAgLS1wYXBlci1jaGVja2JveC1jaGVja2VkLWNvbG9yOiB2YXIoLS1wYXBlci1yZWQtNTAwKTtcbiAgICAgIC0tcGFwZXItY2hlY2tib3gtY2hlY2tlZC1pbmstY29sb3I6IHZhcigtLXBhcGVyLXJlZC01MDApO1xuICAgICAgLS1wYXBlci1jaGVja2JveC11bmNoZWNrZWQtY29sb3I6IHZhcigtLXBhcGVyLXJlZC05MDApO1xuICAgICAgLS1wYXBlci1jaGVja2JveC11bmNoZWNrZWQtaW5rLWNvbG9yOiB2YXIoLS1wYXBlci1yZWQtOTAwKTtcbiAgICB9XG4gICAgW2NvbG9yLWNsYXNzPSdncmVlbiddIHBhcGVyLWNoZWNrYm94IHtcbiAgICAgIC0tcGFwZXItY2hlY2tib3gtY2hlY2tlZC1jb2xvcjogdmFyKC0tcGFwZXItZ3JlZW4tNTAwKTtcbiAgICAgIC0tcGFwZXItY2hlY2tib3gtY2hlY2tlZC1pbmstY29sb3I6IHZhcigtLXBhcGVyLWdyZWVuLTUwMCk7XG4gICAgICAtLXBhcGVyLWNoZWNrYm94LXVuY2hlY2tlZC1jb2xvcjogdmFyKC0tcGFwZXItZ3JlZW4tOTAwKTtcbiAgICAgIC0tcGFwZXItY2hlY2tib3gtdW5jaGVja2VkLWluay1jb2xvcjogdmFyKC0tcGFwZXItZ3JlZW4tOTAwKTtcbiAgICB9XG4gICAgW2NvbG9yLWNsYXNzPSdwdXJwbGUnXSBwYXBlci1jaGVja2JveCB7XG4gICAgICAtLXBhcGVyLWNoZWNrYm94LWNoZWNrZWQtY29sb3I6IHZhcigtLXBhcGVyLXB1cnBsZS01MDApO1xuICAgICAgLS1wYXBlci1jaGVja2JveC1jaGVja2VkLWluay1jb2xvcjogdmFyKC0tcGFwZXItcHVycGxlLTUwMCk7XG4gICAgICAtLXBhcGVyLWNoZWNrYm94LXVuY2hlY2tlZC1jb2xvcjogdmFyKC0tcGFwZXItcHVycGxlLTkwMCk7XG4gICAgICAtLXBhcGVyLWNoZWNrYm94LXVuY2hlY2tlZC1pbmstY29sb3I6IHZhcigtLXBhcGVyLXB1cnBsZS05MDApO1xuICAgIH1cbiAgICBbY29sb3ItY2xhc3M9J3RlYWwnXSBwYXBlci1jaGVja2JveCB7XG4gICAgICAtLXBhcGVyLWNoZWNrYm94LWNoZWNrZWQtY29sb3I6IHZhcigtLXBhcGVyLXRlYWwtNTAwKTtcbiAgICAgIC0tcGFwZXItY2hlY2tib3gtY2hlY2tlZC1pbmstY29sb3I6IHZhcigtLXBhcGVyLXRlYWwtNTAwKTtcbiAgICAgIC0tcGFwZXItY2hlY2tib3gtdW5jaGVja2VkLWNvbG9yOiB2YXIoLS1wYXBlci10ZWFsLTkwMCk7XG4gICAgICAtLXBhcGVyLWNoZWNrYm94LXVuY2hlY2tlZC1pbmstY29sb3I6IHZhcigtLXBhcGVyLXRlYWwtOTAwKTtcbiAgICB9XG4gICAgW2NvbG9yLWNsYXNzPSdwaW5rJ10gcGFwZXItY2hlY2tib3gge1xuICAgICAgLS1wYXBlci1jaGVja2JveC1jaGVja2VkLWNvbG9yOiB2YXIoLS1wYXBlci1waW5rLTUwMCk7XG4gICAgICAtLXBhcGVyLWNoZWNrYm94LWNoZWNrZWQtaW5rLWNvbG9yOiB2YXIoLS1wYXBlci1waW5rLTUwMCk7XG4gICAgICAtLXBhcGVyLWNoZWNrYm94LXVuY2hlY2tlZC1jb2xvcjogdmFyKC0tcGFwZXItcGluay05MDApO1xuICAgICAgLS1wYXBlci1jaGVja2JveC11bmNoZWNrZWQtaW5rLWNvbG9yOiB2YXIoLS1wYXBlci1waW5rLTkwMCk7XG4gICAgfVxuICAgIFtjb2xvci1jbGFzcz0nb3JhbmdlJ10gcGFwZXItY2hlY2tib3gge1xuICAgICAgLS1wYXBlci1jaGVja2JveC1jaGVja2VkLWNvbG9yOiB2YXIoLS1wYXBlci1vcmFuZ2UtNTAwKTtcbiAgICAgIC0tcGFwZXItY2hlY2tib3gtY2hlY2tlZC1pbmstY29sb3I6IHZhcigtLXBhcGVyLW9yYW5nZS01MDApO1xuICAgICAgLS1wYXBlci1jaGVja2JveC11bmNoZWNrZWQtY29sb3I6IHZhcigtLXBhcGVyLW9yYW5nZS05MDApO1xuICAgICAgLS1wYXBlci1jaGVja2JveC11bmNoZWNrZWQtaW5rLWNvbG9yOiB2YXIoLS1wYXBlci1vcmFuZ2UtOTAwKTtcbiAgICB9XG4gICAgW2NvbG9yLWNsYXNzPSdicm93biddIHBhcGVyLWNoZWNrYm94IHtcbiAgICAgIC0tcGFwZXItY2hlY2tib3gtY2hlY2tlZC1jb2xvcjogdmFyKC0tcGFwZXItYnJvd24tNTAwKTtcbiAgICAgIC0tcGFwZXItY2hlY2tib3gtY2hlY2tlZC1pbmstY29sb3I6IHZhcigtLXBhcGVyLWJyb3duLTUwMCk7XG4gICAgICAtLXBhcGVyLWNoZWNrYm94LXVuY2hlY2tlZC1jb2xvcjogdmFyKC0tcGFwZXItYnJvd24tOTAwKTtcbiAgICAgIC0tcGFwZXItY2hlY2tib3gtdW5jaGVja2VkLWluay1jb2xvcjogdmFyKC0tcGFwZXItYnJvd24tOTAwKTtcbiAgICB9XG4gICAgW2NvbG9yLWNsYXNzPSdpbmRpZ28nXSBwYXBlci1jaGVja2JveCB7XG4gICAgICAtLXBhcGVyLWNoZWNrYm94LWNoZWNrZWQtY29sb3I6IHZhcigtLXBhcGVyLWluZGlnby01MDApO1xuICAgICAgLS1wYXBlci1jaGVja2JveC1jaGVja2VkLWluay1jb2xvcjogdmFyKC0tcGFwZXItaW5kaWdvLTUwMCk7XG4gICAgICAtLXBhcGVyLWNoZWNrYm94LXVuY2hlY2tlZC1jb2xvcjogdmFyKC0tcGFwZXItaW5kaWdvLTkwMCk7XG4gICAgICAtLXBhcGVyLWNoZWNrYm94LXVuY2hlY2tlZC1pbmstY29sb3I6IHZhcigtLXBhcGVyLWluZGlnby05MDApO1xuICAgIH1cbiAgIn0pO2xldCB3Tz1jbGFzcyBleHRlbmRzKHRyKHllKSl7Y29uc3RydWN0b3IoKXtzdXBlciguLi5hcmd1bWVudHMpLHRoaXMubmFtZXM9W10sdGhpcy5jb2xvcmluZz17Z2V0Q29sb3I6KCk9PiIifSx0aGlzLnJlZ2V4PSIiLHRoaXMuc2VsZWN0aW9uU3RhdGU9e30sdGhpcy5tYXhOYW1lc1RvRW5hYmxlQnlEZWZhdWx0PTQwLHRoaXMuX2RlYm91bmNlZFJlZ2V4Q2hhbmdlPXRoaXMuX2RlYm91bmNlZFJlZ2V4Q2hhbmdlSW1wbCgpfV9kZWJvdW5jZWRSZWdleENoYW5nZUltcGwoKXt2YXIgdD13ZS5kZWJvdW5jZSgodD0+e3RoaXMucmVnZXg9dH0pLDE1MCx7bGVhZGluZzohMX0pO3JldHVybiBmdW5jdGlvbigpe3ZhciBlPXRoaXMuJCQoIiNuYW1lcy1yZWdleCIpLnZhbHVlOyIiPT1lP3RoaXMuYXN5bmMoKCgpPT57dGhpcy5yZWdleD1lfSksMzApOnQoZSl9fWdldCBfcmVnZXgoKXt2YXIgdD10aGlzLnJlZ2V4O3RyeXtyZXR1cm4gbmV3IFJlZ0V4cCh0KX1jYXRjaCh0KXtyZXR1cm4gbnVsbH19X3NldElzb2xhdG9ySWNvbigpe3ZhciB0PXRoaXMuc2VsZWN0aW9uU3RhdGUsZT13ZS5maWx0ZXIod2UudmFsdWVzKHQpKS5sZW5ndGg7QXJyYXkucHJvdG90eXBlLnNsaWNlLmNhbGwodGhpcy5yb290LnF1ZXJ5U2VsZWN0b3JBbGwoIi5pc29sYXRvciIpKS5mb3JFYWNoKChmdW5jdGlvbihuKXtuLmljb249MT09PWUmJnRbbi5uYW1lXT8icmFkaW8tYnV0dG9uLWNoZWNrZWQiOiJyYWRpby1idXR0b24tdW5jaGVja2VkIn0pKX1jb21wdXRlTmFtZXNNYXRjaGluZ1JlZ2V4KHQsZSl7Y29uc3Qgbj10aGlzLl9yZWdleDtyZXR1cm4gbj90aGlzLm5hbWVzLmZpbHRlcigodD0+bi50ZXN0KHQpKSk6dGhpcy5uYW1lc31jb21wdXRlT3V0U2VsZWN0ZWQodCxlKXt2YXIgbj10aGlzLnNlbGVjdGlvblN0YXRlLGk9dGhpcy5uYW1lc01hdGNoaW5nUmVnZXgubGVuZ3RoPD10aGlzLm1heE5hbWVzVG9FbmFibGVCeURlZmF1bHQ7cmV0dXJuIHRoaXMubmFtZXNNYXRjaGluZ1JlZ2V4LmZpbHRlcigodD0+bnVsbD09blt0XT9pOm5bdF0pKX1zeW5jaHJvbml6ZUNvbG9ycyh0KXt0aGlzLl9zZXRJc29sYXRvckljb24oKSx0aGlzLnJvb3QucXVlcnlTZWxlY3RvckFsbCgicGFwZXItY2hlY2tib3giKS5mb3JFYWNoKCh0PT57Y29uc3QgZT10aGlzLmNvbG9yaW5nLmdldENvbG9yKHQubmFtZSk7dC51cGRhdGVTdHlsZXMoeyItLXBhcGVyLWNoZWNrYm94LWNoZWNrZWQtY29sb3IiOmUsIi0tcGFwZXItY2hlY2tib3gtY2hlY2tlZC1pbmstY29sb3IiOmUsIi0tcGFwZXItY2hlY2tib3gtdW5jaGVja2VkLWNvbG9yIjplLCItLXBhcGVyLWNoZWNrYm94LXVuY2hlY2tlZC1pbmstY29sb3IiOmV9KX0pKSx0aGlzLnJvb3QucXVlcnlTZWxlY3RvckFsbCgiLmlzb2xhdG9yIikuZm9yRWFjaCgodD0+e2NvbnN0IGU9dGhpcy5jb2xvcmluZy5nZXRDb2xvcih0Lm5hbWUpO3Quc3R5bGUuY29sb3I9ZX0pKSx3aW5kb3cucmVxdWVzdEFuaW1hdGlvbkZyYW1lKCgoKT0+e3RoaXMudXBkYXRlU3R5bGVzKCl9KSl9X2lzb2xhdGVOYW1lKHQpe3ZhciBlPXQudGFyZ2V0Lm5hbWUsbj17fTt0aGlzLm5hbWVzLmZvckVhY2goKGZ1bmN0aW9uKHQpe25bdF09dD09ZX0pKSx0aGlzLnNlbGVjdGlvblN0YXRlPW59X2NoZWNrYm94Q2hhbmdlKHQpe3ZhciBlPXQudGFyZ2V0O2NvbnN0IG49d2UuY2xvbmUodGhpcy5zZWxlY3Rpb25TdGF0ZSk7bltlLm5hbWVdPWUuY2hlY2tlZCx0aGlzLnNlbGVjdGlvblN0YXRlPW59X2lzQ2hlY2tlZCh0LGUpe3JldHVybi0xIT10aGlzLm91dFNlbGVjdGVkLmluZGV4T2YodCl9dG9nZ2xlQWxsKCl7Y29uc3QgdD10aGlzLm5hbWVzTWF0Y2hpbmdSZWdleC5zb21lKCh0PT50aGlzLm91dFNlbGVjdGVkLmluY2x1ZGVzKHQpKSksZT17fTt0aGlzLm5hbWVzLmZvckVhY2goKG49PntlW25dPSF0fSkpLHRoaXMuc2VsZWN0aW9uU3RhdGU9ZX19O3dPLnRlbXBsYXRlPV9lYAogICAgPHN0eWxlIGluY2x1ZGU9InNjcm9sbGJhci1zdHlsZSI+PC9zdHlsZT4KICAgIDxzdHlsZSBpbmNsdWRlPSJydW4tY29sb3Itc3R5bGUiPjwvc3R5bGU+CgogICAgPHBhcGVyLWlucHV0CiAgICAgIGlkPSJuYW1lcy1yZWdleCIKICAgICAgbm8tbGFiZWwtZmxvYXQ9IiIKICAgICAgbGFiZWw9IldyaXRlIGEgcmVnZXggdG8gZmlsdGVyIHJ1bnMiCiAgICAgIHZhbHVlPSJbW3JlZ2V4XV0iCiAgICAgIG9uLWJpbmQtdmFsdWUtY2hhbmdlZD0iX2RlYm91bmNlZFJlZ2V4Q2hhbmdlIgogICAgPjwvcGFwZXItaW5wdXQ+CiAgICA8ZGl2IGlkPSJvdXRlci1jb250YWluZXIiIGNsYXNzPSJzY3JvbGxiYXIiPgogICAgICA8dGVtcGxhdGUKICAgICAgICBpcz0iZG9tLXJlcGVhdCIKICAgICAgICBpdGVtcz0iW1tuYW1lc01hdGNoaW5nUmVnZXhdXSIKICAgICAgICBvbi1kb20tY2hhbmdlPSJzeW5jaHJvbml6ZUNvbG9ycyIKICAgICAgPgogICAgICAgIDxkaXYgY2xhc3M9Im5hbWUtcm93Ij4KICAgICAgICAgIDxkaXYKICAgICAgICAgICAgY2xhc3M9Imljb24tY29udGFpbmVyIGNoZWNrYm94LWNvbnRhaW5lciB2ZXJ0aWNhbC1hbGlnbi1jb250YWluZXIiCiAgICAgICAgICA+CiAgICAgICAgICAgIDxwYXBlci1jaGVja2JveAogICAgICAgICAgICAgIGNsYXNzPSJjaGVja2JveCB2ZXJ0aWNhbC1hbGlnbi1jZW50ZXIiCiAgICAgICAgICAgICAgaWQkPSJjaGVja2JveC1bW2l0ZW1dXSIKICAgICAgICAgICAgICBuYW1lPSJbW2l0ZW1dXSIKICAgICAgICAgICAgICBjaGVja2VkJD0iW1tfaXNDaGVja2VkKGl0ZW0sIHNlbGVjdGlvblN0YXRlLiopXV0iCiAgICAgICAgICAgICAgb24tY2hhbmdlPSJfY2hlY2tib3hDaGFuZ2UiCiAgICAgICAgICAgID48L3BhcGVyLWNoZWNrYm94PgogICAgICAgICAgPC9kaXY+CiAgICAgICAgICA8ZGl2CiAgICAgICAgICAgIGNsYXNzPSJpY29uLWNvbnRhaW5lciBpc29sYXRvci1jb250YWluZXIgdmVydGljYWwtYWxpZ24tY29udGFpbmVyIgogICAgICAgICAgPgogICAgICAgICAgICA8cGFwZXItaWNvbi1idXR0b24KICAgICAgICAgICAgICBpY29uPSJyYWRpby1idXR0b24tdW5jaGVja2VkIgogICAgICAgICAgICAgIGNsYXNzPSJpc29sYXRvciB2ZXJ0aWNhbC1hbGlnbi1jZW50ZXIiCiAgICAgICAgICAgICAgb24tdGFwPSJfaXNvbGF0ZU5hbWUiCiAgICAgICAgICAgICAgbmFtZT0iW1tpdGVtXV0iCiAgICAgICAgICAgID48L3BhcGVyLWljb24tYnV0dG9uPgogICAgICAgICAgPC9kaXY+CiAgICAgICAgICA8ZGl2IGNsYXNzPSJpdGVtLWxhYmVsLWNvbnRhaW5lciI+CiAgICAgICAgICAgIDxzcGFuPltbaXRlbV1dPC9zcGFuPgogICAgICAgICAgPC9kaXY+CiAgICAgICAgPC9kaXY+CiAgICAgIDwvdGVtcGxhdGU+CiAgICA8L2Rpdj4KICAgIDxzdHlsZT4KICAgICAgcGFwZXItaW5wdXQgewogICAgICAgIC0tcGFwZXItaW5wdXQtY29udGFpbmVyLWZvY3VzLWNvbG9yOiB2YXIoLS10Yi1vcmFuZ2Utc3Ryb25nKTsKICAgICAgICAtLXBhcGVyLWlucHV0LWNvbnRhaW5lci1pbnB1dDogewogICAgICAgICAgZm9udC1zaXplOiAxNHB4OwogICAgICAgIH0KICAgICAgICAtLXBhcGVyLWlucHV0LWNvbnRhaW5lci1sYWJlbDogewogICAgICAgICAgZm9udC1zaXplOiAxNHB4OwogICAgICAgIH0KICAgICAgfQogICAgICA6aG9zdCB7CiAgICAgICAgZGlzcGxheTogZmxleDsKICAgICAgICBmbGV4LWRpcmVjdGlvbjogY29sdW1uOwogICAgICAgIGhlaWdodDogMTAwJTsKICAgICAgICBvdmVyZmxvdzogaGlkZGVuOwogICAgICB9CiAgICAgICNvdXRlci1jb250YWluZXIgewogICAgICAgIGNvbnRhaW46IGNvbnRlbnQ7CiAgICAgICAgZmxleC1ncm93OiAxOwogICAgICAgIGZsZXgtc2hyaW5rOiAxOwogICAgICAgIG92ZXJmbG93LXg6IGhpZGRlbjsKICAgICAgICBvdmVyZmxvdy15OiBhdXRvOwogICAgICAgIHdpZHRoOiAxMDAlOwogICAgICAgIHdpbGwtY2hhbmdlOiB0cmFuc2Zvcm07CiAgICAgICAgd29yZC13cmFwOiBicmVhay13b3JkOwogICAgICB9CiAgICAgIC5uYW1lLXJvdyB7CiAgICAgICAgY29udGFpbjogY29udGVudDsKICAgICAgICBwYWRkaW5nLXRvcDogNXB4OwogICAgICAgIHBhZGRpbmctYm90dG9tOiA1cHg7CiAgICAgICAgZGlzcGxheTogZmxleDsKICAgICAgICBmbGV4LWRpcmVjdGlvbjogcm93OwogICAgICAgIGZvbnQtc2l6ZTogMTNweDsKICAgICAgICB3b3JkLWJyZWFrOiBicmVhay1hbGw7IC8qIG1ha2VzIHdyYXBwaW5nIG9mIGh5cGVycGFyYW0gc3RyaW5ncyBiZXR0ZXIgKi8KICAgICAgfQogICAgICAuaWNvbi1jb250YWluZXIgewogICAgICAgIGZsZXgtZ3JvdzogMDsKICAgICAgICBmbGV4LXNocmluazogMDsKICAgICAgICBwYWRkaW5nLWxlZnQ6IDJweDsKICAgICAgfQogICAgICAuY2hlY2tib3ggewogICAgICAgIHBhZGRpbmctbGVmdDogMnB4OwogICAgICAgIHdpZHRoOiAxOHB4OwogICAgICAgIGhlaWdodDogMThweDsKICAgICAgfQogICAgICAuaXNvbGF0b3IgewogICAgICAgIHdpZHRoOiAxOHB4OwogICAgICAgIGhlaWdodDogMThweDsKICAgICAgICBwYWRkaW5nOiAwcHg7CiAgICAgIH0KICAgICAgLmlzb2xhdG9yLWNvbnRhaW5lciB7CiAgICAgICAgcGFkZGluZy1sZWZ0OiA2cHg7CiAgICAgICAgcGFkZGluZy1yaWdodDogM3B4OwogICAgICB9CiAgICAgIC5jaGVja2JveC1jb250YWluZXIgewogICAgICAgIHBhZGRpbmctbGVmdDogMnB4OwogICAgICB9CiAgICAgIC5pdGVtLWxhYmVsLWNvbnRhaW5lciB7CiAgICAgICAgcGFkZGluZy1sZWZ0OiA1cHg7CiAgICAgICAgZmxleC1ncm93OiAxOwogICAgICAgIGZsZXgtc2hyaW5rOiAxOwogICAgICAgIHdpZHRoOiAwcHg7IC8qIGhhY2sgdG8gZ2V0IHRoZSBmbGV4LWdyb3cgdG8gd29yayBwcm9wZXJseSAqLwogICAgICB9CiAgICAgIC50b29sdGlwLXZhbHVlLWNvbnRhaW5lciB7CiAgICAgICAgZGlzcGxheTogZmxleDsKICAgICAgICBqdXN0aWZ5LWNvbnRlbnQ6IGNlbnRlcjsKICAgICAgICBmbGV4LWdyb3c6IDA7CiAgICAgICAgZmxleC1zaHJpbms6IDA7CiAgICAgICAgdGV4dC1hbGlnbjogcmlnaHQ7CiAgICAgICAgcGFkZGluZy1sZWZ0OiAycHg7CiAgICAgIH0KICAgICAgLnZlcnRpY2FsLWFsaWduLWNvbnRhaW5lciB7CiAgICAgICAgZGlzcGxheTogZmxleDsKICAgICAgICBqdXN0aWZ5LWNvbnRlbnQ6IGNlbnRlcjsKICAgICAgfQogICAgICAudmVydGljYWwtYWxpZ24tY29udGFpbmVyIC52ZXJ0aWNhbC1hbGlnbi1jZW50ZXIgewogICAgICAgIGFsaWduLXNlbGY6IGNlbnRlcjsKICAgICAgfQogICAgICAudmVydGljYWwtYWxpZ24tY29udGFpbmVyIC52ZXJ0aWNhbC1hbGlnbi10b3AgewogICAgICAgIGFsaWduLXNlbGY6IHN0YXJ0OwogICAgICB9CiAgICA8L3N0eWxlPgogIGAsdChbbyh7dHlwZTpBcnJheX0pLGUoImRlc2lnbjp0eXBlIixBcnJheSldLHdPLnByb3RvdHlwZSwibmFtZXMiLHZvaWQgMCksdChbbyh7dHlwZTpPYmplY3R9KSxlKCJkZXNpZ246dHlwZSIsT2JqZWN0KV0sd08ucHJvdG90eXBlLCJjb2xvcmluZyIsdm9pZCAwKSx0KFtvKHt0eXBlOlN0cmluZyxub3RpZnk6ITB9KSxlKCJkZXNpZ246dHlwZSIsU3RyaW5nKV0sd08ucHJvdG90eXBlLCJyZWdleCIsdm9pZCAwKSx0KFtvKHt0eXBlOkFycmF5LGNvbXB1dGVkOiJjb21wdXRlTmFtZXNNYXRjaGluZ1JlZ2V4KG5hbWVzLiosIF9yZWdleCkifSksZSgiZGVzaWduOnR5cGUiLEFycmF5KV0sd08ucHJvdG90eXBlLCJuYW1lc01hdGNoaW5nUmVnZXgiLHZvaWQgMCksdChbbyh7dHlwZTpPYmplY3Qsbm90aWZ5OiEwfSksZSgiZGVzaWduOnR5cGUiLE9iamVjdCldLHdPLnByb3RvdHlwZSwic2VsZWN0aW9uU3RhdGUiLHZvaWQgMCksdChbbyh7dHlwZTpBcnJheSxub3RpZnk6ITAsY29tcHV0ZWQ6ImNvbXB1dGVPdXRTZWxlY3RlZChuYW1lc01hdGNoaW5nUmVnZXguKiwgc2VsZWN0aW9uU3RhdGUuKikifSksZSgiZGVzaWduOnR5cGUiLEFycmF5KV0sd08ucHJvdG90eXBlLCJvdXRTZWxlY3RlZCIsdm9pZCAwKSx0KFtvKHt0eXBlOk51bWJlcn0pLGUoImRlc2lnbjp0eXBlIixOdW1iZXIpXSx3Ty5wcm90b3R5cGUsIm1heE5hbWVzVG9FbmFibGVCeURlZmF1bHQiLHZvaWQgMCksdChbbyh7dHlwZTpPYmplY3R9KSxlKCJkZXNpZ246dHlwZSIsT2JqZWN0KV0sd08ucHJvdG90eXBlLCJfZGVib3VuY2VkUmVnZXhDaGFuZ2UiLHZvaWQgMCksdChbcygicmVnZXgiKSxlKCJkZXNpZ246dHlwZSIsUmVnRXhwKSxlKCJkZXNpZ246cGFyYW10eXBlcyIsW10pXSx3Ty5wcm90b3R5cGUsIl9yZWdleCIsbnVsbCksdChbYSgic2VsZWN0aW9uU3RhdGUiLCJuYW1lcyIpLGUoImRlc2lnbjp0eXBlIixGdW5jdGlvbiksZSgiZGVzaWduOnBhcmFtdHlwZXMiLFtdKSxlKCJkZXNpZ246cmV0dXJudHlwZSIsdm9pZCAwKV0sd08ucHJvdG90eXBlLCJfc2V0SXNvbGF0b3JJY29uIixudWxsKSx3Tz10KFtpKCJ0Zi1tdWx0aS1jaGVja2JveCIpXSx3Tyk7bGV0IFNPPWNsYXNzIGV4dGVuZHMgeWV7Z2V0IF9wYXJ0cygpe3ZhciB0PXRoaXMudmFsdWUsZT10aGlzLmRlbGltaXRlclBhdHRlcm47Y29uc3Qgbj1bXTtmb3IoOzspe2NvbnN0IGk9bmV3IFJlZ0V4cChlLCJnIik7aWYoaS50ZXN0KHQpLDA9PT1pLmxhc3RJbmRleCl7bi5wdXNoKHQpO2JyZWFrfW4ucHVzaCh0LnNsaWNlKDAsaS5sYXN0SW5kZXgpKSx0PXQuc2xpY2UoaS5sYXN0SW5kZXgpfXJldHVybiBufX07U08udGVtcGxhdGU9X2VgCiAgICA8IS0tCiAgICAgIFRoaXMgdWdseSBmb3JtYXR0aW5nIGlzIHJlcXVpcmVkIHRvIHByZXZlbnQgc3BhY2VzIGZyb20gc2xpcHBpbmcKICAgICAgaW50byB0aGUgSFRNTC4KICAgIC0tPgogICAgPHRlbXBsYXRlIGlzPSJkb20tcmVwZWF0IiBpdGVtcz0iW1tfcGFydHNdXSIgYXM9InBhcnQiCiAgICAgID5bW3BhcnRdXTx3YnIKICAgIC8+PC90ZW1wbGF0ZT4KICBgLHQoW28oe3R5cGU6U3RyaW5nfSksZSgiZGVzaWduOnR5cGUiLFN0cmluZyldLFNPLnByb3RvdHlwZSwidmFsdWUiLHZvaWQgMCksdChbbyh7dHlwZTpTdHJpbmd9KSxlKCJkZXNpZ246dHlwZSIsU3RyaW5nKV0sU08ucHJvdG90eXBlLCJkZWxpbWl0ZXJQYXR0ZXJuIix2b2lkIDApLHQoW3MoInZhbHVlIiwiZGVsaW1pdGVyUGF0dGVybiIpLGUoImRlc2lnbjp0eXBlIixBcnJheSksZSgiZGVzaWduOnBhcmFtdHlwZXMiLFtdKV0sU08ucHJvdG90eXBlLCJfcGFydHMiLG51bGwpLFNPPXQoW2koInRmLXdici1zdHJpbmciKV0sU08pO2xldCBNTz1jbGFzcyBleHRlbmRzKHRyKHllKSl7Y29uc3RydWN0b3IoKXtzdXBlciguLi5hcmd1bWVudHMpLHRoaXMucnVuU2VsZWN0aW9uU3RhdGU9cXMoInJ1blNlbGVjdGlvblN0YXRlIix7ZGVmYXVsdFZhbHVlOnt9fSkuY2FsbCh0aGlzKSx0aGlzLnJlZ2V4SW5wdXQ9UHMoInJlZ2V4SW5wdXQiLHtkZWZhdWx0VmFsdWU6IiJ9KS5jYWxsKHRoaXMpLHRoaXMuX2RhdGFMb2NhdGlvbkNsaXBMZW5ndGg9MjUwLHRoaXMuX2RhdGFMb2NhdGlvbkRlbGltaXRlclBhdHRlcm49IlsvPV8sLV0iLHRoaXMuY29sb3Jpbmc9e2dldENvbG9yOnhPfSx0aGlzLl9zdG9yZVJ1blNlbGVjdGlvblN0YXRlPVlzKCJydW5TZWxlY3Rpb25TdGF0ZSIse2RlZmF1bHRWYWx1ZTp7fX0pLHRoaXMuX3JlZ2V4T2JzZXJ2ZXI9SXMoInJlZ2V4SW5wdXQiLHtkZWZhdWx0VmFsdWU6IiJ9KX1hdHRhY2hlZCgpe3RoaXMuX3J1blN0b3JlTGlzdGVuZXI9dmwuYWRkTGlzdGVuZXIoKCgpPT57dGhpcy5zZXQoInJ1bnMiLHZsLmdldFJ1bnMoKSl9KSksdGhpcy5zZXQoInJ1bnMiLHZsLmdldFJ1bnMoKSksdGhpcy5fZW52U3RvcmVMaXN0ZW5lcj1fbC5hZGRMaXN0ZW5lcigoKCk9Pnt0aGlzLnNldCgiZGF0YUxvY2F0aW9uIixfbC5nZXREYXRhTG9jYXRpb24oKSl9KSksdGhpcy5zZXQoImRhdGFMb2NhdGlvbiIsX2wuZ2V0RGF0YUxvY2F0aW9uKCkpfWRldGFjaGVkKCl7dmwucmVtb3ZlTGlzdGVuZXJCeUtleSh0aGlzLl9ydW5TdG9yZUxpc3RlbmVyKSxfbC5yZW1vdmVMaXN0ZW5lckJ5S2V5KHRoaXMuX2VudlN0b3JlTGlzdGVuZXIpfV90b2dnbGVBbGwoKXt0aGlzLiQubXVsdGlDaGVja2JveC50b2dnbGVBbGwoKX1nZXQgX2NsaXBwZWREYXRhTG9jYXRpb24oKXt2YXIgdD10aGlzLmRhdGFMb2NhdGlvbixlPXRoaXMuX2RhdGFMb2NhdGlvbkNsaXBMZW5ndGg7aWYodm9pZCAwIT09dClyZXR1cm4gdC5sZW5ndGg+ZT90LnN1YnN0cmluZygwLGUpOnR9X29wZW5EYXRhTG9jYXRpb25EaWFsb2codCl7dC5wcmV2ZW50RGVmYXVsdCgpLHRoaXMuJCQoIiNkYXRhLWxvY2F0aW9uLWRpYWxvZyIpLm9wZW4oKX1fc2hvdWxkU2hvd0V4cGFuZERhdGFMb2NhdGlvbkJ1dHRvbih0LGUpe3JldHVybiB0JiZ0Lmxlbmd0aD5lfX07TU8udGVtcGxhdGU9X2VgCiAgICA8cGFwZXItZGlhbG9nIHdpdGgtYmFja2Ryb3A9IiIgaWQ9ImRhdGEtbG9jYXRpb24tZGlhbG9nIj4KICAgICAgPGgyPkRhdGEgTG9jYXRpb248L2gyPgogICAgICA8dGYtd2JyLXN0cmluZwogICAgICAgIHZhbHVlPSJbW2RhdGFMb2NhdGlvbl1dIgogICAgICAgIGRlbGltaXRlci1wYXR0ZXJuPSJbW19kYXRhTG9jYXRpb25EZWxpbWl0ZXJQYXR0ZXJuXV0iCiAgICAgID4KICAgICAgPC90Zi13YnItc3RyaW5nCiAgICA+PC9wYXBlci1kaWFsb2c+CiAgICA8ZGl2IGlkPSJ0b3AtdGV4dCI+CiAgICAgIDxoMyBpZD0idG9vbHRpcC1oZWxwIiBjbGFzcz0idG9vbHRpcC1jb250YWluZXIiPlJ1bnM8L2gzPgogICAgPC9kaXY+CiAgICA8dGYtbXVsdGktY2hlY2tib3gKICAgICAgaWQ9Im11bHRpQ2hlY2tib3giCiAgICAgIG5hbWVzPSJbW3J1bnNdXSIKICAgICAgc2VsZWN0aW9uLXN0YXRlPSJ7e3J1blNlbGVjdGlvblN0YXRlfX0iCiAgICAgIG91dC1zZWxlY3RlZD0ie3tzZWxlY3RlZFJ1bnN9fSIKICAgICAgcmVnZXg9Int7cmVnZXhJbnB1dH19IgogICAgICBjb2xvcmluZz0iW1tjb2xvcmluZ11dIgogICAgPjwvdGYtbXVsdGktY2hlY2tib3g+CiAgICA8cGFwZXItYnV0dG9uIGNsYXNzPSJ4LWJ1dHRvbiIgaWQ9InRvZ2dsZS1hbGwiIG9uLXRhcD0iX3RvZ2dsZUFsbCI+CiAgICAgIFRvZ2dsZSBBbGwgUnVucwogICAgPC9wYXBlci1idXR0b24+CiAgICA8dGVtcGxhdGUgaXM9ImRvbS1pZiIgaWY9IltbZGF0YUxvY2F0aW9uXV0iPgogICAgICA8ZGl2IGlkPSJkYXRhLWxvY2F0aW9uIj4KICAgICAgICA8dGYtd2JyLXN0cmluZwogICAgICAgICAgdmFsdWU9IltbX2NsaXBwZWREYXRhTG9jYXRpb25dXSIKICAgICAgICAgIGRlbGltaXRlci1wYXR0ZXJuPSJbW19kYXRhTG9jYXRpb25EZWxpbWl0ZXJQYXR0ZXJuXV0iCiAgICAgICAgPjwvdGYtd2JyLXN0cmluZwogICAgICAgID48IS0tCiAgICAgICAgICBXZSB1c2UgSFRNTCBjb21tZW50cyB0byByZW1vdmUgc3BhY2VzIGJlZm9yZSB0aGUgZWxsaXBzaXMuCiAgICAgICAgLS0+PHRlbXBsYXRlCiAgICAgICAgICBpcz0iZG9tLWlmIgogICAgICAgICAgaWY9IltbX3Nob3VsZFNob3dFeHBhbmREYXRhTG9jYXRpb25CdXR0b24oZGF0YUxvY2F0aW9uLCBfZGF0YUxvY2F0aW9uQ2xpcExlbmd0aCldXSIKICAgICAgICAgID48IS0tCiAgICAgICAgICAtLT48YSBocmVmPSIiIG9uLWNsaWNrPSJfb3BlbkRhdGFMb2NhdGlvbkRpYWxvZyI+4oCmPC9hPgogICAgICAgIDwvdGVtcGxhdGU+CiAgICAgIDwvZGl2PgogICAgPC90ZW1wbGF0ZT4KICAgIDxzdHlsZT4KICAgICAgOmhvc3QgewogICAgICAgIGJveC1zaXppbmc6IGJvcmRlci1ib3g7CiAgICAgICAgZGlzcGxheTogZmxleDsKICAgICAgICBmbGV4LWRpcmVjdGlvbjogY29sdW1uOwogICAgICAgIHBhZGRpbmctYm90dG9tOiAxMHB4OwogICAgICB9CiAgICAgICN0b3AtdGV4dCB7CiAgICAgICAgd2lkdGg6IDEwMCU7CiAgICAgICAgZmxleC1ncm93OiAwOwogICAgICAgIGZsZXgtc2hyaW5rOiAwOwogICAgICAgIHBhZGRpbmctcmlnaHQ6IDE2cHg7CiAgICAgICAgYm94LXNpemluZzogYm9yZGVyLWJveDsKICAgICAgICBjb2xvcjogdmFyKC0tcGFwZXItZ3JleS04MDApOwogICAgICB9CiAgICAgIHRmLW11bHRpLWNoZWNrYm94IHsKICAgICAgICBkaXNwbGF5OiBmbGV4OwogICAgICAgIGZsZXgtZ3JvdzogMTsKICAgICAgICBmbGV4LXNocmluazogMTsKICAgICAgICBvdmVyZmxvdzogaGlkZGVuOwogICAgICB9CiAgICAgIC54LWJ1dHRvbiB7CiAgICAgICAgZm9udC1zaXplOiAxM3B4OwogICAgICAgIGJhY2tncm91bmQtY29sb3I6IHZhcigtLXRiLXVpLWxpZ2h0LWFjY2VudCk7CiAgICAgICAgY29sb3I6IHZhcigtLXRiLXVpLWRhcmstYWNjZW50KTsKICAgICAgfQogICAgICAjdG9vbHRpcC1oZWxwIHsKICAgICAgICBjb2xvcjogdmFyKC0tcGFwZXItZ3JleS04MDApOwogICAgICAgIG1hcmdpbjogMDsKICAgICAgICBmb250LXdlaWdodDogbm9ybWFsOwogICAgICAgIGZvbnQtc2l6ZTogMTRweDsKICAgICAgICBtYXJnaW4tYm90dG9tOiA1cHg7CiAgICAgIH0KICAgICAgcGFwZXItYnV0dG9uIHsKICAgICAgICBtYXJnaW4tbGVmdDogMDsKICAgICAgfQogICAgICAjZGF0YS1sb2NhdGlvbiB7CiAgICAgICAgY29sb3I6IHZhcigtLXRiLXVpLWRhcmstYWNjZW50KTsKICAgICAgICBmb250LXNpemU6IDEzcHg7CiAgICAgICAgbWFyZ2luOiA1cHggMCAwIDA7CiAgICAgICAgbWF4LXdpZHRoOiAyODhweDsKICAgICAgfQogICAgPC9zdHlsZT4KICBgLHQoW28oe3R5cGU6T2JqZWN0LG9ic2VydmVyOiJfc3RvcmVSdW5TZWxlY3Rpb25TdGF0ZSJ9KSxlKCJkZXNpZ246dHlwZSIsT2JqZWN0KV0sTU8ucHJvdG90eXBlLCJydW5TZWxlY3Rpb25TdGF0ZSIsdm9pZCAwKSx0KFtvKHt0eXBlOlN0cmluZyxvYnNlcnZlcjoiX3JlZ2V4T2JzZXJ2ZXIifSksZSgiZGVzaWduOnR5cGUiLFN0cmluZyldLE1PLnByb3RvdHlwZSwicmVnZXhJbnB1dCIsdm9pZCAwKSx0KFtvKHt0eXBlOkFycmF5LG5vdGlmeTohMH0pLGUoImRlc2lnbjp0eXBlIixBcnJheSldLE1PLnByb3RvdHlwZSwic2VsZWN0ZWRSdW5zIix2b2lkIDApLHQoW28oe3R5cGU6QXJyYXl9KSxlKCJkZXNpZ246dHlwZSIsQXJyYXkpXSxNTy5wcm90b3R5cGUsInJ1bnMiLHZvaWQgMCksdChbbyh7dHlwZTpTdHJpbmcsbm90aWZ5OiEwfSksZSgiZGVzaWduOnR5cGUiLFN0cmluZyldLE1PLnByb3RvdHlwZSwiZGF0YUxvY2F0aW9uIix2b2lkIDApLHQoW28oe3R5cGU6TnVtYmVyfSksZSgiZGVzaWduOnR5cGUiLE51bWJlcildLE1PLnByb3RvdHlwZSwiX2RhdGFMb2NhdGlvbkNsaXBMZW5ndGgiLHZvaWQgMCksdChbbyh7dHlwZTpTdHJpbmd9KSxlKCJkZXNpZ246dHlwZSIsU3RyaW5nKV0sTU8ucHJvdG90eXBlLCJfZGF0YUxvY2F0aW9uRGVsaW1pdGVyUGF0dGVybiIsdm9pZCAwKSx0KFtvKHt0eXBlOk9iamVjdH0pLGUoImRlc2lnbjp0eXBlIixPYmplY3QpXSxNTy5wcm90b3R5cGUsImNvbG9yaW5nIix2b2lkIDApLHQoW3MoImRhdGFMb2NhdGlvbiIsIl9kYXRhTG9jYXRpb25DbGlwTGVuZ3RoIiksZSgiZGVzaWduOnR5cGUiLFN0cmluZyksZSgiZGVzaWduOnBhcmFtdHlwZXMiLFtdKV0sTU8ucHJvdG90eXBlLCJfY2xpcHBlZERhdGFMb2NhdGlvbiIsbnVsbCksTU89dChbaSgidGYtcnVucy1zZWxlY3RvciIpXSxNTyk7Y2xhc3MgRU97Y29uc3RydWN0b3IoKXt0aGlzLmNhbmNlbGxhdGlvbkNvdW50PTB9Y2FuY2VsbGFibGUodCl7Y29uc3QgZT10aGlzLmNhbmNlbGxhdGlvbkNvdW50O3JldHVybiBuPT50KHt2YWx1ZTpuLGNhbmNlbGxlZDp0aGlzLmNhbmNlbGxhdGlvbkNvdW50IT09ZX0pfWNhbmNlbEFsbCgpe3RoaXMuY2FuY2VsbGF0aW9uQ291bnQrK319bGV0IFRPPWNsYXNzIGV4dGVuZHModHIoeWUpKXtjb25zdHJ1Y3Rvcigpe3N1cGVyKC4uLmFyZ3VtZW50cyksdGhpcy5odG1sPSIifWdldCBzYW5pdGl6ZWRIdG1sKCl7cmV0dXJuIHRoaXMuaHRtbH1hdHRhY2hlZCgpe3dpbmRvdy5yZXF1ZXN0QW5pbWF0aW9uRnJhbWUoKCgpPT57dGhpcy5zY29wZVN1YnRyZWUodGhpcy4kLm1hcmtkb3duLCEwKX0pKX19O2Z1bmN0aW9uIEFPKHQpe3JldHVybiB0P3QudG9TdHJpbmcoKS5yZXBsYWNlKC9HTVQtXGQrIFwoKFteKV0rKVwpLywiJDEiKToiIn1UTy50ZW1wbGF0ZT1fZWAKICAgIDxkaXYgaWQ9Im1hcmtkb3duIiBpbm5lci1oLXQtbS1sPSJbW3Nhbml0aXplZEh0bWxdXSI+PC9kaXY+CiAgICA8c3R5bGU+CiAgICAgIC8qCiAgICAgICAqIFJlZHVjZSB0b3Btb3N0IGFuZCBib3R0b21tb3N0IG1hcmdpbnMgZnJvbSAxNnB4IHRvIDAuM2VtIChyZW5kZXJzCiAgICAgICAqIGF0IGFib3V0IDQuOHB4KSB0byBrZWVwIHRoZSBsYXlvdXQgY29tcGFjdC4gVGhpcyBpbXByb3ZlcyB0aGUKICAgICAgICogYXBwZWFyYW5jZSB3aGVuIHRoZXJlIGlzIG9ubHkgb25lIGxpbmUgb2YgdGV4dDsgc3RhbmRhcmQgTWFya2Rvd24KICAgICAgICogcmVuZGVyZXJzIHdpbGwgc3RpbGwgaW5jbHVkZSBhIFxgPHA+XGAgZWxlbWVudC4KICAgICAgICoKICAgICAgICogQnkgdGFyZ2V0aW5nIG9ubHkgdGhlIHRvcC1sZXZlbCwgZXh0cmVtYWwgZWxlbWVudHMsIHdlIHByZXNlcnZlIGFueQogICAgICAgKiBhY3R1YWwgcGFyYWdyYXBoIGJyZWFrcyBhbmQgb25seSBjaGFuZ2UgdGhlIHBhZGRpbmcgYWdhaW5zdCB0aGUKICAgICAgICogY29tcG9uZW50IGVkZ2VzLgogICAgICAgKi8KICAgICAgI21hcmtkb3duID4gcDpmaXJzdC1jaGlsZCB7CiAgICAgICAgbWFyZ2luLXRvcDogMC4zZW07CiAgICAgIH0KICAgICAgI21hcmtkb3duID4gcDpsYXN0LWNoaWxkIHsKICAgICAgICBtYXJnaW4tYm90dG9tOiAwLjNlbTsKICAgICAgfQoKICAgICAgLyogUGxlYXNhbnQgc3R5bGVzIGZvciBNYXJrZG93biB0YWJsZXMuICovCiAgICAgICNtYXJrZG93biB0YWJsZSB7CiAgICAgICAgYm9yZGVyLWNvbGxhcHNlOiBjb2xsYXBzZTsKICAgICAgfQogICAgICAjbWFya2Rvd24gdGFibGUgdGggewogICAgICAgIGZvbnQtd2VpZ2h0OiA2MDA7CiAgICAgIH0KICAgICAgI21hcmtkb3duIHRhYmxlIHRoLAogICAgICAjbWFya2Rvd24gdGFibGUgdGQgewogICAgICAgIHBhZGRpbmc6IDZweCAxM3B4OwogICAgICAgIGJvcmRlcjogMXB4IHNvbGlkICNkZmUyZTU7CiAgICAgIH0KICAgICAgI21hcmtkb3duIHRhYmxlIHRyIHsKICAgICAgICBiYWNrZ3JvdW5kLWNvbG9yOiAjZmZmOwogICAgICAgIGJvcmRlci10b3A6IDFweCBzb2xpZCAjYzZjYmQxOwogICAgICB9CiAgICA8L3N0eWxlPgogIGAsdChbbyh7dHlwZTpTdHJpbmd9KSxlKCJkZXNpZ246dHlwZSIsU3RyaW5nKV0sVE8ucHJvdG90eXBlLCJodG1sIix2b2lkIDApLHQoW3MoImh0bWwiKSxlKCJkZXNpZ246dHlwZSIsT2JqZWN0KSxlKCJkZXNpZ246cGFyYW10eXBlcyIsW10pXSxUTy5wcm90b3R5cGUsInNhbml0aXplZEh0bWwiLG51bGwpLFRPPXQoW2koInRmLW1hcmtkb3duLXZpZXciKV0sVE8pLG5sKHttb2R1bGVOYW1lOiJ0Zi1jYXJkLWhlYWRpbmctc3R5bGUiLHN0eWxlQ29udGVudDoiXG4gICAgZmlnY2FwdGlvbiB7XG4gICAgICB3aWR0aDogMTAwJTtcbiAgICB9XG5cbiAgICAvKiogSG9yaXpvbnRhbCBsaW5lIG9mIGxhYmVscy4gKi9cbiAgICAuaGVhZGluZy1yb3cge1xuICAgICAgbWFyZ2luLXRvcDogLTRweDtcbiAgICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgICBmbGV4LWRpcmVjdGlvbjogcm93O1xuICAgICAgZmxleC13cmFwOiB3cmFwO1xuICAgIH1cblxuICAgIC8qKiBQaWVjZSBvZiB0ZXh0IGluIHRoZSBmaWd1cmUgY2FwdGlvbi4gKi9cbiAgICAuaGVhZGluZy1sYWJlbCB7XG4gICAgICBmbGV4LWdyb3c6IDE7XG4gICAgICBtYXJnaW4tdG9wOiA0cHg7XG4gICAgICBtYXgtd2lkdGg6IDEwMCU7XG4gICAgICB3b3JkLXdyYXA6IGJyZWFrLXdvcmQ7XG4gICAgfVxuXG4gICAgLyoqIE1ha2VzIGxhYmVsIHNob3cgb24gdGhlIHJpZ2h0LiAqL1xuICAgIC5oZWFkaW5nLXJpZ2h0IHtcbiAgICAgIGZsZXgtZ3JvdzogMDtcbiAgICB9XG4gICJ9KTtsZXQgQ089Y2xhc3MgZXh0ZW5kcyB5ZXtjb25zdHJ1Y3Rvcigpe3N1cGVyKC4uLmFyZ3VtZW50cyksdGhpcy5kaXNwbGF5TmFtZT1udWxsLHRoaXMudGFnPW51bGwsdGhpcy5ydW49bnVsbCx0aGlzLmRlc2NyaXB0aW9uPW51bGwsdGhpcy5jb2xvcj1udWxsfV91cGRhdGVIZWFkaW5nU3R5bGUoKXt0aGlzLnVwZGF0ZVN0eWxlcyh7Ii0tdGYtY2FyZC1oZWFkaW5nLWJhY2tncm91bmQtY29sb3IiOnRoaXMuX3J1bkJhY2tncm91bmQsIi0tdGYtY2FyZC1oZWFkaW5nLWNvbG9yIjp0aGlzLl9ydW5Db2xvcn0pfV9jb21wdXRlUnVuQmFja2dyb3VuZCh0KXtyZXR1cm4gdHx8Im5vbmUifV9jb21wdXRlUnVuQ29sb3IodCl7cmV0dXJuKGZ1bmN0aW9uIGUodCl7Y29uc3QgZT0oZnVuY3Rpb24gbih0KXtpZighdClyZXR1cm4gbnVsbDtsZXQgZT10Lm1hdGNoKC9eIyhbMC05YS1mXXsxLDJ9KShbMC05YS1mXXsxLDJ9KShbMC05YS1mXXsxLDJ9KSQvKTtpZighZSlyZXR1cm4gbnVsbDtpZig0PT10Lmxlbmd0aClmb3IodmFyIG49MTtuPD0zO24rKyllW25dPWVbbl0rZVtuXTtyZXR1cm5bcGFyc2VJbnQoZVsxXSwxNikscGFyc2VJbnQoZVsyXSwxNikscGFyc2VJbnQoZVszXSwxNildfSkodCk7cmV0dXJuIGU/TWF0aC5yb3VuZCgoMjk5KmVbMF0rNTg3KmVbMV0rMTE0KmVbMl0pLzFlMyk+MTI1PyJpbmhlcml0IjoiI2VlZSI6ImluaGVyaXQifSkodCl9Z2V0IF9uYW1lTGFiZWwoKXtyZXR1cm4gdGhpcy5kaXNwbGF5TmFtZXx8dGhpcy50YWd8fCIifWdldCBfdGFnTGFiZWwoKXt2YXIgdD10aGlzLnRhZztyZXR1cm4gdCYmdCE9PXRoaXMuZGlzcGxheU5hbWU/dDoiIn1fdG9nZ2xlRGVzY3JpcHRpb25EaWFsb2codCl7Y29uc3QgZT10aGlzLiQuZGVzY3JpcHRpb25EaWFsb2c7ZS5wb3NpdGlvblRhcmdldD10LnRhcmdldCxlLnRvZ2dsZSgpfX07Q08udGVtcGxhdGU9X2VgCiAgICA8ZGl2IGNsYXNzPSJjb250YWluZXIiPgogICAgICA8ZmlnY2FwdGlvbiBjbGFzcz0iY29udGVudCI+CiAgICAgICAgPGRpdiBjbGFzcz0iaGVhZGluZy1yb3ciPgogICAgICAgICAgPHRlbXBsYXRlIGlzPSJkb20taWYiIGlmPSJbW19uYW1lTGFiZWxdXSI+CiAgICAgICAgICAgIDxkaXYgaXRlbXByb3A9Im5hbWUiIGNsYXNzPSJoZWFkaW5nLWxhYmVsIG5hbWUiPltbX25hbWVMYWJlbF1dPC9kaXY+CiAgICAgICAgICA8L3RlbXBsYXRlPgogICAgICAgICAgPHRlbXBsYXRlIGlzPSJkb20taWYiIGlmPSJbW3J1bl1dIj4KICAgICAgICAgICAgPCEtLSBFeHRyYSB3cmFwcGluZyBzcGFuIG5lZWRlZCB0byBhdm9pZCBmbGV4Ym94IGJsb2NraWZpY2F0aW9uLiAtLT4KICAgICAgICAgICAgPCEtLSAoc2VlIGZsZXhib3ggc3BlYywgc2VjdGlvbiA0ICJGbGV4IEl0ZW1zIikgLS0+CiAgICAgICAgICAgIDxzcGFuPgogICAgICAgICAgICAgIDxzcGFuCiAgICAgICAgICAgICAgICBpdGVtcHJvcD0icnVuIgogICAgICAgICAgICAgICAgaWQ9ImhlYWRpbmctcnVuIgogICAgICAgICAgICAgICAgY2xhc3M9ImhlYWRpbmctbGFiZWwgaGVhZGluZy1yaWdodCBydW4iCiAgICAgICAgICAgICAgICA+W1tydW5dXTwvc3BhbgogICAgICAgICAgICAgID4KICAgICAgICAgICAgPC9zcGFuPgogICAgICAgICAgPC90ZW1wbGF0ZT4KICAgICAgICA8L2Rpdj4KICAgICAgICA8dGVtcGxhdGUgaXM9ImRvbS1pZiIgaWY9IltbX3RhZ0xhYmVsXV0iPgogICAgICAgICAgPGRpdiBjbGFzcz0iaGVhZGluZy1yb3ciPgogICAgICAgICAgICA8ZGl2IGNsYXNzPSJoZWFkaW5nLWxhYmVsIj4KICAgICAgICAgICAgICB0YWc6IDxzcGFuIGl0ZW1wcm9wPSJ0YWciPltbX3RhZ0xhYmVsXV08L3NwYW4+CiAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgPC9kaXY+CiAgICAgICAgPC90ZW1wbGF0ZT4KICAgICAgICA8c2xvdD48L3Nsb3Q+CiAgICAgIDwvZmlnY2FwdGlvbj4KICAgICAgPHRlbXBsYXRlIGlzPSJkb20taWYiIGlmPSJbW2Rlc2NyaXB0aW9uXV0iPgogICAgICAgIDxwYXBlci1pY29uLWJ1dHRvbgogICAgICAgICAgaWNvbj0iaW5mbyIKICAgICAgICAgIG9uLXRhcD0iX3RvZ2dsZURlc2NyaXB0aW9uRGlhbG9nIgogICAgICAgICAgdGl0bGU9IlNob3cgc3VtbWFyeSBkZXNjcmlwdGlvbiIKICAgICAgICA+PC9wYXBlci1pY29uLWJ1dHRvbj4KICAgICAgPC90ZW1wbGF0ZT4KICAgICAgPHBhcGVyLWRpYWxvZwogICAgICAgIGlkPSJkZXNjcmlwdGlvbkRpYWxvZyIKICAgICAgICBuby1vdmVybGFwPSIiCiAgICAgICAgaG9yaXpvbnRhbC1hbGlnbj0iYXV0byIKICAgICAgICB2ZXJ0aWNhbC1hbGlnbj0iYXV0byIKICAgICAgPgogICAgICAgIDxwYXBlci1kaWFsb2ctc2Nyb2xsYWJsZT4KICAgICAgICAgIDx0Zi1tYXJrZG93bi12aWV3IGh0bWw9IltbZGVzY3JpcHRpb25dXSI+PC90Zi1tYXJrZG93bi12aWV3PgogICAgICAgIDwvcGFwZXItZGlhbG9nLXNjcm9sbGFibGU+CiAgICAgIDwvcGFwZXItZGlhbG9nPgogICAgPC9kaXY+CiAgICA8c3R5bGUgaW5jbHVkZT0idGYtY2FyZC1oZWFkaW5nLXN0eWxlIj4KICAgICAgLmNvbnRhaW5lciB7CiAgICAgICAgZGlzcGxheTogZmxleDsKICAgICAgfQogICAgICAuY29udGVudCB7CiAgICAgICAgZm9udC1zaXplOiAxMnB4OwogICAgICAgIGZsZXgtZ3JvdzogMTsKICAgICAgfQogICAgICAubmFtZSB7CiAgICAgICAgZm9udC1zaXplOiAxNHB4OwogICAgICB9CiAgICAgIC5ydW4gewogICAgICAgIGZvbnQtc2l6ZTogMTFweDsKICAgICAgICB3aWR0aDogYXV0bzsKICAgICAgICBib3JkZXItcmFkaXVzOiAzcHg7CiAgICAgICAgZm9udC13ZWlnaHQ6IGJvbGQ7CiAgICAgICAgcGFkZGluZzogMXB4IDRweCAycHg7CiAgICAgIH0KICAgICAgcGFwZXItaWNvbi1idXR0b24gewogICAgICAgIGZsZXgtZ3JvdzogMDsKICAgICAgfQogICAgICBwYXBlci1kaWFsb2ctc2Nyb2xsYWJsZSB7CiAgICAgICAgbWF4LXdpZHRoOiA2NDBweDsKICAgICAgfQogICAgICAjaGVhZGluZy1ydW4gewogICAgICAgIGJhY2tncm91bmQ6IHZhcigtLXRmLWNhcmQtaGVhZGluZy1iYWNrZ3JvdW5kLWNvbG9yKTsKICAgICAgICBjb2xvcjogdmFyKC0tdGYtY2FyZC1oZWFkaW5nLWNvbG9yKTsKICAgICAgfQogICAgPC9zdHlsZT4KICBgLHQoW28oe3R5cGU6U3RyaW5nfSksZSgiZGVzaWduOnR5cGUiLFN0cmluZyldLENPLnByb3RvdHlwZSwiZGlzcGxheU5hbWUiLHZvaWQgMCksdChbbyh7dHlwZTpTdHJpbmd9KSxlKCJkZXNpZ246dHlwZSIsU3RyaW5nKV0sQ08ucHJvdG90eXBlLCJ0YWciLHZvaWQgMCksdChbbyh7dHlwZTpTdHJpbmd9KSxlKCJkZXNpZ246dHlwZSIsU3RyaW5nKV0sQ08ucHJvdG90eXBlLCJydW4iLHZvaWQgMCksdChbbyh7dHlwZTpTdHJpbmd9KSxlKCJkZXNpZ246dHlwZSIsU3RyaW5nKV0sQ08ucHJvdG90eXBlLCJkZXNjcmlwdGlvbiIsdm9pZCAwKSx0KFtvKHt0eXBlOlN0cmluZ30pLGUoImRlc2lnbjp0eXBlIixTdHJpbmcpXSxDTy5wcm90b3R5cGUsImNvbG9yIix2b2lkIDApLHQoW28oe3R5cGU6U3RyaW5nLGNvbXB1dGVkOiJfY29tcHV0ZVJ1bkJhY2tncm91bmQoY29sb3IpIixyZWFkT25seTohMCxvYnNlcnZlcjoiX3VwZGF0ZUhlYWRpbmdTdHlsZSJ9KSxlKCJkZXNpZ246dHlwZSIsU3RyaW5nKV0sQ08ucHJvdG90eXBlLCJfcnVuQmFja2dyb3VuZCIsdm9pZCAwKSx0KFtvKHt0eXBlOlN0cmluZyxjb21wdXRlZDoiX2NvbXB1dGVSdW5Db2xvcihjb2xvcikiLHJlYWRPbmx5OiEwLG9ic2VydmVyOiJfdXBkYXRlSGVhZGluZ1N0eWxlIn0pLGUoImRlc2lnbjp0eXBlIixTdHJpbmcpXSxDTy5wcm90b3R5cGUsIl9ydW5Db2xvciIsdm9pZCAwKSx0KFtzKCJkaXNwbGF5TmFtZSIsInRhZyIpLGUoImRlc2lnbjp0eXBlIixTdHJpbmcpLGUoImRlc2lnbjpwYXJhbXR5cGVzIixbXSldLENPLnByb3RvdHlwZSwiX25hbWVMYWJlbCIsbnVsbCksdChbcygiZGlzcGxheU5hbWUiLCJ0YWciKSxlKCJkZXNpZ246dHlwZSIsU3RyaW5nKSxlKCJkZXNpZ246cGFyYW10eXBlcyIsW10pXSxDTy5wcm90b3R5cGUsIl90YWdMYWJlbCIsbnVsbCksQ089dChbaSgidGYtY2FyZC1oZWFkaW5nIildLENPKTtsZXQga089Y2xhc3MgZXh0ZW5kcyh0cih5ZSkpe2NvbnN0cnVjdG9yKCl7c3VwZXIoLi4uYXJndW1lbnRzKSx0aGlzLl9tZXRhZGF0YUNhbmNlbGxlcj1uZXcgRU8sdGhpcy5fc3RlcHM9W10sdGhpcy5fYXR0YWNoZWQ9ITF9Z2V0IF9ydW5Db2xvcigpe3JldHVybiB4Tyh0aGlzLnJ1bil9Z2V0IF9oYXNBdExlYXN0T25lU3RlcCgpe3ZhciB0PXRoaXMuX3N0ZXBzO3JldHVybiEhdCYmdC5sZW5ndGg+MH1nZXQgX2hhc011bHRpcGxlU3RlcHMoKXt2YXIgdD10aGlzLl9zdGVwcztyZXR1cm4hIXQmJnQubGVuZ3RoPjF9Z2V0IF9tYXhTdGVwSW5kZXgoKXtyZXR1cm4gdGhpcy5fc3RlcHMubGVuZ3RoLTF9Z2V0IF9jdXJyZW50RGF0dW0oKXtyZXR1cm4gdGhpcy5fc3RlcHNbdGhpcy5fc3RlcEluZGV4XX1nZXQgX3NhbXBsZVRleHQoKXtyZXR1cm5gJHt0aGlzLnNhbXBsZSsxfWB9Z2V0IF9oYXNNdWx0aXBsZVNhbXBsZXMoKXtyZXR1cm4gdGhpcy50b3RhbFNhbXBsZXM+MX1hdHRhY2hlZCgpe3RoaXMuX2F0dGFjaGVkPSEwLHRoaXMucmVsb2FkKCl9X3JlbG9hZE9uUnVuVGFnQ2hhbmdlKCl7dGhpcy5yZWxvYWQoKX1yZWxvYWQoKXtpZighdGhpcy5fYXR0YWNoZWQpcmV0dXJuO3RoaXMuX21ldGFkYXRhQ2FuY2VsbGVyLmNhbmNlbEFsbCgpO2NvbnN0IHQ9Z3IoKS5wbHVnaW5Sb3V0ZSgiYXVkaW8iLCIvYXVkaW8iLG5ldyBVUkxTZWFyY2hQYXJhbXMoe3RhZzp0aGlzLnRhZyxydW46dGhpcy5ydW4sc2FtcGxlOlN0cmluZyh0aGlzLnNhbXBsZSl9KSksZT10aGlzLl9tZXRhZGF0YUNhbmNlbGxlci5jYW5jZWxsYWJsZSgodD0+e2lmKHQuY2FuY2VsbGVkKXJldHVybjtjb25zdCBlPXQudmFsdWUubWFwKHRoaXMuX2NyZWF0ZVN0ZXBEYXR1bS5iaW5kKHRoaXMpKTt0aGlzLnNldCgiX3N0ZXBzIixlKSx0aGlzLnNldCgiX3N0ZXBJbmRleCIsZS5sZW5ndGgtMSl9KSk7dGhpcy5yZXF1ZXN0TWFuYWdlci5yZXF1ZXN0KHQpLnRoZW4oZSl9X2NyZWF0ZVN0ZXBEYXR1bSh0KXtjb25zdCBlPW5ldyBVUkxTZWFyY2hQYXJhbXModC5xdWVyeSk7ZS5hcHBlbmQoInRzIixTdHJpbmcodC53YWxsX3RpbWUpKTtjb25zdCBuPWdyKCkucGx1Z2luUm91dGUoImF1ZGlvIiwiL2luZGl2aWR1YWxBdWRpbyIsZSk7cmV0dXJue3dhbGxfdGltZTpBTyhuZXcgRGF0ZSgxZTMqdC53YWxsX3RpbWUpKSxzdGVwOnQuc3RlcCxsYWJlbDp0LmxhYmVsLGNvbnRlbnRUeXBlOnQuY29udGVudFR5cGUsdXJsOm59fX07a08udGVtcGxhdGU9X2VgCiAgICA8dGYtY2FyZC1oZWFkaW5nCiAgICAgIHRhZz0iW1t0YWddXSIKICAgICAgcnVuPSJbW3J1bl1dIgogICAgICBkaXNwbGF5LW5hbWU9IltbdGFnTWV0YWRhdGEuZGlzcGxheU5hbWVdXSIKICAgICAgZGVzY3JpcHRpb249IltbdGFnTWV0YWRhdGEuZGVzY3JpcHRpb25dXSIKICAgICAgY29sb3I9IltbX3J1bkNvbG9yXV0iCiAgICA+CiAgICAgIDx0ZW1wbGF0ZSBpcz0iZG9tLWlmIiBpZj0iW1tfaGFzTXVsdGlwbGVTYW1wbGVzXV0iPgogICAgICAgIDxkaXYgY2xhc3M9ImhlYWRpbmctcm93Ij4KICAgICAgICAgIDxkaXYgY2xhc3M9ImhlYWRpbmctbGFiZWwiPgogICAgICAgICAgICBzYW1wbGU6IFtbX3NhbXBsZVRleHRdXSBvZiBbW3RvdGFsU2FtcGxlc11dCiAgICAgICAgICA8L2Rpdj4KICAgICAgICA8L2Rpdj4KICAgICAgPC90ZW1wbGF0ZT4KICAgICAgPHRlbXBsYXRlIGlzPSJkb20taWYiIGlmPSJbW19oYXNBdExlYXN0T25lU3RlcF1dIj4KICAgICAgICA8ZGl2IGNsYXNzPSJoZWFkaW5nLXJvdyI+CiAgICAgICAgICA8ZGl2IGNsYXNzPSJoZWFkaW5nLWxhYmVsIj4KICAgICAgICAgICAgc3RlcCA8c3Ryb25nPltbX2N1cnJlbnREYXR1bS5zdGVwXV08L3N0cm9uZz4KICAgICAgICAgIDwvZGl2PgogICAgICAgICAgPHRlbXBsYXRlIGlzPSJkb20taWYiIGlmPSJbW19jdXJyZW50RGF0dW0ud2FsbF90aW1lXV0iPgogICAgICAgICAgICA8ZGl2IGNsYXNzPSJoZWFkaW5nLWxhYmVsIGhlYWRpbmctcmlnaHQiPgogICAgICAgICAgICAgIFtbX2N1cnJlbnREYXR1bS53YWxsX3RpbWVdXQogICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgIDwvdGVtcGxhdGU+CiAgICAgICAgPC9kaXY+CiAgICAgIDwvdGVtcGxhdGU+CiAgICAgIDx0ZW1wbGF0ZSBpcz0iZG9tLWlmIiBpZj0iW1tfaGFzTXVsdGlwbGVTdGVwc11dIj4KICAgICAgICA8ZGl2IGNsYXNzPSJoZWFkaW5nLXJvdyI+CiAgICAgICAgICA8cGFwZXItc2xpZGVyCiAgICAgICAgICAgIGlkPSJzdGVwcyIKICAgICAgICAgICAgaW1tZWRpYXRlLXZhbHVlPSJ7e19zdGVwSW5kZXh9fSIKICAgICAgICAgICAgbWF4PSJbW19tYXhTdGVwSW5kZXhdXSIKICAgICAgICAgICAgbWF4LW1hcmtlcnM9IltbX21heFN0ZXBJbmRleF1dIgogICAgICAgICAgICBzbmFwcz0iIgogICAgICAgICAgICBzdGVwPSIxIgogICAgICAgICAgICB2YWx1ZT0ie3tfc3RlcEluZGV4fX0iCiAgICAgICAgICA+PC9wYXBlci1zbGlkZXI+CiAgICAgICAgPC9kaXY+CiAgICAgIDwvdGVtcGxhdGU+CiAgICA8L3RmLWNhcmQtaGVhZGluZz4KICAgIDx0ZW1wbGF0ZSBpcz0iZG9tLWlmIiBpZj0iW1tfaGFzQXRMZWFzdE9uZVN0ZXBdXSI+CiAgICAgIDxhdWRpbwogICAgICAgIGNvbnRyb2xzPSIiCiAgICAgICAgc3JjJD0iW1tfY3VycmVudERhdHVtLnVybF1dIgogICAgICAgIHR5cGUkPSJbW19jdXJyZW50RGF0dW0uY29udGVudFR5cGVdXSIKICAgICAgPjwvYXVkaW8+CiAgICAgIDx0Zi1tYXJrZG93bi12aWV3IGh0bWw9IltbX2N1cnJlbnREYXR1bS5sYWJlbF1dIj48L3RmLW1hcmtkb3duLXZpZXc+CiAgICA8L3RlbXBsYXRlPgogICAgPGRpdiBpZD0ibWFpbi1hdWRpby1jb250YWluZXIiPjwvZGl2PgoKICAgIDxzdHlsZSBpbmNsdWRlPSJ0Zi1jYXJkLWhlYWRpbmctc3R5bGUiPgogICAgICA6aG9zdCB7CiAgICAgICAgZGlzcGxheTogYmxvY2s7CiAgICAgICAgd2lkdGg6IDM1MHB4OwogICAgICAgIGhlaWdodDogYXV0bzsKICAgICAgICBwb3NpdGlvbjogcmVsYXRpdmU7CiAgICAgICAgLS1zdGVwLXNsaWRlci1rbm9iLWNvbG9yOiAjNDI0MjQyOwogICAgICAgIG1hcmdpbi1yaWdodDogMTVweDsKICAgICAgICBtYXJnaW4tYm90dG9tOiAxNXB4OwogICAgICB9CgogICAgICAjc3RlcHMgewogICAgICAgIGhlaWdodDogMTVweDsKICAgICAgICBtYXJnaW46IDAgMCAwIC0xNXB4OwogICAgICAgIHdpZHRoOiAxMDAlOwogICAgICAgIGJveC1zaXppbmc6IGJvcmRlci1ib3g7CiAgICAgICAgcGFkZGluZzogMCA1cHg7IC8qIHNvIHRoZSBzbGlkZXIga25vYiBkb2Vzbid0IGJ1dHQgb3V0ICovCiAgICAgICAgbWFyZ2luLXRvcDogNXB4OwogICAgICAgIC0tcGFwZXItc2xpZGVyLWFjdGl2ZS1jb2xvcjogdmFyKC0tc3RlcC1zbGlkZXIta25vYi1jb2xvcik7CiAgICAgICAgLS1wYXBlci1zbGlkZXIta25vYi1jb2xvcjogdmFyKC0tc3RlcC1zbGlkZXIta25vYi1jb2xvcik7CiAgICAgICAgLS1wYXBlci1zbGlkZXItcGluLWNvbG9yOiB2YXIoLS1zdGVwLXNsaWRlci1rbm9iLWNvbG9yKTsKICAgICAgICAtLXBhcGVyLXNsaWRlci1rbm9iLXN0YXJ0LWNvbG9yOiB2YXIoLS1zdGVwLXNsaWRlci1rbm9iLWNvbG9yKTsKICAgICAgICAtLXBhcGVyLXNsaWRlci1rbm9iLXN0YXJ0LWJvcmRlci1jb2xvcjogdmFyKC0tc3RlcC1zbGlkZXIta25vYi1jb2xvcik7CiAgICAgICAgLS1wYXBlci1zbGlkZXItcGluLXN0YXJ0LWNvbG9yOiB2YXIoLS1zdGVwLXNsaWRlci1rbm9iLWNvbG9yKTsKICAgICAgfQogICAgPC9zdHlsZT4KICBgLHQoW28oe3R5cGU6U3RyaW5nfSksZSgiZGVzaWduOnR5cGUiLFN0cmluZyldLGtPLnByb3RvdHlwZSwicnVuIix2b2lkIDApLHQoW28oe3R5cGU6U3RyaW5nfSksZSgiZGVzaWduOnR5cGUiLFN0cmluZyldLGtPLnByb3RvdHlwZSwidGFnIix2b2lkIDApLHQoW28oe3R5cGU6TnVtYmVyfSksZSgiZGVzaWduOnR5cGUiLE51bWJlcildLGtPLnByb3RvdHlwZSwic2FtcGxlIix2b2lkIDApLHQoW28oe3R5cGU6TnVtYmVyfSksZSgiZGVzaWduOnR5cGUiLE51bWJlcildLGtPLnByb3RvdHlwZSwidG90YWxTYW1wbGVzIix2b2lkIDApLHQoW28oe3R5cGU6T2JqZWN0fSksZSgiZGVzaWduOnR5cGUiLE9iamVjdCldLGtPLnByb3RvdHlwZSwidGFnTWV0YWRhdGEiLHZvaWQgMCksdChbbyh7dHlwZTpPYmplY3R9KSxlKCJkZXNpZ246dHlwZSIsaHIpXSxrTy5wcm90b3R5cGUsInJlcXVlc3RNYW5hZ2VyIix2b2lkIDApLHQoW28oe3R5cGU6T2JqZWN0fSksZSgiZGVzaWduOnR5cGUiLEVPKV0sa08ucHJvdG90eXBlLCJfbWV0YWRhdGFDYW5jZWxsZXIiLHZvaWQgMCksdChbbyh7dHlwZTpBcnJheX0pLGUoImRlc2lnbjp0eXBlIixBcnJheSldLGtPLnByb3RvdHlwZSwiX3N0ZXBzIix2b2lkIDApLHQoW28oe3R5cGU6TnVtYmVyfSksZSgiZGVzaWduOnR5cGUiLE51bWJlcildLGtPLnByb3RvdHlwZSwiX3N0ZXBJbmRleCIsdm9pZCAwKSx0KFtzKCJydW4iKSxlKCJkZXNpZ246dHlwZSIsU3RyaW5nKSxlKCJkZXNpZ246cGFyYW10eXBlcyIsW10pXSxrTy5wcm90b3R5cGUsIl9ydW5Db2xvciIsbnVsbCksdChbcygiX3N0ZXBzIiksZSgiZGVzaWduOnR5cGUiLEJvb2xlYW4pLGUoImRlc2lnbjpwYXJhbXR5cGVzIixbXSldLGtPLnByb3RvdHlwZSwiX2hhc0F0TGVhc3RPbmVTdGVwIixudWxsKSx0KFtzKCJfc3RlcHMiKSxlKCJkZXNpZ246dHlwZSIsQm9vbGVhbiksZSgiZGVzaWduOnBhcmFtdHlwZXMiLFtdKV0sa08ucHJvdG90eXBlLCJfaGFzTXVsdGlwbGVTdGVwcyIsbnVsbCksdChbcygiX3N0ZXBzIiksZSgiZGVzaWduOnR5cGUiLE51bWJlciksZSgiZGVzaWduOnBhcmFtdHlwZXMiLFtdKV0sa08ucHJvdG90eXBlLCJfbWF4U3RlcEluZGV4IixudWxsKSx0KFtzKCJfc3RlcHMiLCJfc3RlcEluZGV4IiksZSgiZGVzaWduOnR5cGUiLE9iamVjdCksZSgiZGVzaWduOnBhcmFtdHlwZXMiLFtdKV0sa08ucHJvdG90eXBlLCJfY3VycmVudERhdHVtIixudWxsKSx0KFtzKCJzYW1wbGUiKSxlKCJkZXNpZ246dHlwZSIsU3RyaW5nKSxlKCJkZXNpZ246cGFyYW10eXBlcyIsW10pXSxrTy5wcm90b3R5cGUsIl9zYW1wbGVUZXh0IixudWxsKSx0KFtzKCJ0b3RhbFNhbXBsZXMiKSxlKCJkZXNpZ246dHlwZSIsQm9vbGVhbiksZSgiZGVzaWduOnBhcmFtdHlwZXMiLFtdKV0sa08ucHJvdG90eXBlLCJfaGFzTXVsdGlwbGVTYW1wbGVzIixudWxsKSx0KFthKCJydW4iLCJ0YWciKSxlKCJkZXNpZ246dHlwZSIsRnVuY3Rpb24pLGUoImRlc2lnbjpwYXJhbXR5cGVzIixbXSksZSgiZGVzaWduOnJldHVybnR5cGUiLHZvaWQgMCldLGtPLnByb3RvdHlwZSwiX3JlbG9hZE9uUnVuVGFnQ2hhbmdlIixudWxsKSxrTz10KFtpKCJ0Zi1hdWRpby1sb2FkZXIiKV0sa08pO2xldCBMTz1jbGFzcyBleHRlbmRzKHRyKHllKSl7Y29uc3RydWN0b3IoKXtzdXBlciguLi5hcmd1bWVudHMpLHRoaXMucmVsb2FkT25SZWFkeT0hMCx0aGlzLl90YWdGaWx0ZXI9IiIsdGhpcy5fcmVxdWVzdE1hbmFnZXI9bmV3IGhyfXJlYWR5KCl7c3VwZXIucmVhZHkoKSx0aGlzLnJlbG9hZE9uUmVhZHkmJnRoaXMucmVsb2FkKCl9cmVsb2FkKCl7dGhpcy5fZmV0Y2hUYWdzKCkudGhlbigoKCk9Pnt0aGlzLl9yZWxvYWRBdWRpbygpfSkpfV9mZXRjaFRhZ3MoKXtjb25zdCB0PWdyKCkucGx1Z2luUm91dGUoImF1ZGlvIiwiL3RhZ3MiKTtyZXR1cm4gdGhpcy5fcmVxdWVzdE1hbmFnZXIucmVxdWVzdCh0KS50aGVuKCh0PT57aWYod2UuaXNFcXVhbCh0LHRoaXMuX3J1blRvVGFnSW5mbykpcmV0dXJuO2NvbnN0IGU9b3Iod2UubWFwVmFsdWVzKHQsKHQ9Pk9iamVjdC5rZXlzKHQpKSkpO3RoaXMuc2V0KCJfZGF0YU5vdEZvdW5kIiwwPT09ZS5sZW5ndGgpLHRoaXMuc2V0KCJfcnVuVG9UYWdJbmZvIix0KX0pKX1fcmVsb2FkQXVkaW8oKXt0aGlzLnJvb3QucXVlcnlTZWxlY3RvckFsbCgidGYtYXVkaW8tbG9hZGVyIikuZm9yRWFjaCgodD0+e3QucmVsb2FkKCl9KSl9X3Nob3VsZE9wZW4odCl7cmV0dXJuIHQ8PTJ9Z2V0IF9jYXRlZ29yaWVzKCl7dmFyIHQ9dGhpcy5fcnVuVG9UYWdJbmZvLGU9dGhpcy5fc2VsZWN0ZWRSdW5zLG49dGhpcy5fdGFnRmlsdGVyO2Z1bmN0aW9uIGkoZSl7Y29uc3Qgbj10W2UucnVuXVtlLnRhZ10uc2FtcGxlcztyZXR1cm4gd2UucmFuZ2UobikubWFwKCh0PT5PYmplY3QuYXNzaWduKHt9LGUse3NhbXBsZTp0LHRvdGFsU2FtcGxlczpufSkpKX1yZXR1cm4gU3Iod2UubWFwVmFsdWVzKHQsKHQ9Pk9iamVjdC5rZXlzKHQpKSksZSxuKS5tYXAoKHQ9Pk9iamVjdC5hc3NpZ24oe30sdCx7aXRlbXM6W10uY29uY2F0LmFwcGx5KFtdLHQuaXRlbXMubWFwKGkpKX0pKSl9X3RhZ01ldGFkYXRhKHQsZSxuKXtyZXR1cm4gdFtlXVtuXX19O0xPLnRlbXBsYXRlPV9lYAogICAgPHRmLWRhc2hib2FyZC1sYXlvdXQ+CiAgICAgIDxkaXYgY2xhc3M9InNpZGViYXIiIHNsb3Q9InNpZGViYXIiPgogICAgICAgIDxkaXYgY2xhc3M9InNpZGViYXItc2VjdGlvbiBydW5zLXNlbGVjdG9yIj4KICAgICAgICAgIDx0Zi1ydW5zLXNlbGVjdG9yCiAgICAgICAgICAgIGlkPSJydW5zLXNlbGVjdG9yIgogICAgICAgICAgICBzZWxlY3RlZC1ydW5zPSJ7e19zZWxlY3RlZFJ1bnN9fSIKICAgICAgICAgID48L3RmLXJ1bnMtc2VsZWN0b3I+CiAgICAgICAgPC9kaXY+CiAgICAgIDwvZGl2PgogICAgICA8ZGl2IGNsYXNzPSJjZW50ZXIiIHNsb3Q9ImNlbnRlciI+CiAgICAgICAgPHRlbXBsYXRlIGlzPSJkb20taWYiIGlmPSJbW19kYXRhTm90Rm91bmRdXSI+CiAgICAgICAgICA8ZGl2IGNsYXNzPSJuby1kYXRhLXdhcm5pbmciPgogICAgICAgICAgICA8aDM+Tm8gYXVkaW8gZGF0YSB3YXMgZm91bmQuPC9oMz4KICAgICAgICAgICAgPHA+UHJvYmFibGUgY2F1c2VzOjwvcD4KICAgICAgICAgICAgPHVsPgogICAgICAgICAgICAgIDxsaT5Zb3UgaGF2ZW7igJl0IHdyaXR0ZW4gYW55IGF1ZGlvIGRhdGEgdG8geW91ciBldmVudCBmaWxlcy48L2xpPgogICAgICAgICAgICAgIDxsaT5UZW5zb3JCb2FyZCBjYW7igJl0IGZpbmQgeW91ciBldmVudCBmaWxlcy48L2xpPgogICAgICAgICAgICA8L3VsPgoKICAgICAgICAgICAgPHA+CiAgICAgICAgICAgICAgSWYgeW914oCZcmUgbmV3IHRvIHVzaW5nIFRlbnNvckJvYXJkLCBhbmQgd2FudCB0byBmaW5kIG91dCBob3cgdG8KICAgICAgICAgICAgICBhZGQgZGF0YSBhbmQgc2V0IHVwIHlvdXIgZXZlbnQgZmlsZXMsIGNoZWNrIG91dCB0aGUKICAgICAgICAgICAgICA8YQogICAgICAgICAgICAgICAgaHJlZj0iaHR0cHM6Ly9naXRodWIuY29tL3RlbnNvcmZsb3cvdGVuc29yYm9hcmQvYmxvYi9tYXN0ZXIvUkVBRE1FLm1kIgogICAgICAgICAgICAgICAgPlJFQURNRTwvYQogICAgICAgICAgICAgID4KICAgICAgICAgICAgICBhbmQgcGVyaGFwcyB0aGUKICAgICAgICAgICAgICA8YQogICAgICAgICAgICAgICAgaHJlZj0iaHR0cHM6Ly93d3cudGVuc29yZmxvdy5vcmcvZ2V0X3N0YXJ0ZWQvc3VtbWFyaWVzX2FuZF90ZW5zb3Jib2FyZCIKICAgICAgICAgICAgICAgID5UZW5zb3JCb2FyZCB0dXRvcmlhbDwvYQogICAgICAgICAgICAgID4uCiAgICAgICAgICAgIDwvcD4KCiAgICAgICAgICAgIDxwPgogICAgICAgICAgICAgIElmIHlvdSB0aGluayBUZW5zb3JCb2FyZCBpcyBjb25maWd1cmVkIHByb3Blcmx5LCBwbGVhc2Ugc2VlCiAgICAgICAgICAgICAgPGEKICAgICAgICAgICAgICAgIGhyZWY9Imh0dHBzOi8vZ2l0aHViLmNvbS90ZW5zb3JmbG93L3RlbnNvcmJvYXJkL2Jsb2IvbWFzdGVyL1JFQURNRS5tZCNteS10ZW5zb3Jib2FyZC1pc250LXNob3dpbmctYW55LWRhdGEtd2hhdHMtd3JvbmciCiAgICAgICAgICAgICAgICA+dGhlIHNlY3Rpb24gb2YgdGhlIFJFQURNRSBkZXZvdGVkIHRvIG1pc3NpbmcgZGF0YSBwcm9ibGVtczwvYQogICAgICAgICAgICAgID4KICAgICAgICAgICAgICBhbmQgY29uc2lkZXIgZmlsaW5nIGFuIGlzc3VlIG9uIEdpdEh1Yi4KICAgICAgICAgICAgPC9wPgogICAgICAgICAgPC9kaXY+CiAgICAgICAgPC90ZW1wbGF0ZT4KICAgICAgICA8dGVtcGxhdGUgaXM9ImRvbS1pZiIgaWY9IltbIV9kYXRhTm90Rm91bmRdXSI+CiAgICAgICAgICA8dGYtdGFnLWZpbHRlcmVyIHRhZy1maWx0ZXI9Int7X3RhZ0ZpbHRlcn19Ij48L3RmLXRhZy1maWx0ZXJlcj4KICAgICAgICAgIDx0ZW1wbGF0ZSBpcz0iZG9tLXJlcGVhdCIgaXRlbXM9IltbX2NhdGVnb3JpZXNdXSIgYXM9ImNhdGVnb3J5Ij4KICAgICAgICAgICAgPHRmLWNhdGVnb3J5LXBhZ2luYXRlZC12aWV3CiAgICAgICAgICAgICAgY2F0ZWdvcnk9IltbY2F0ZWdvcnldXSIKICAgICAgICAgICAgICBpbml0aWFsLW9wZW5lZD0iW1tfc2hvdWxkT3BlbihpbmRleCldXSIKICAgICAgICAgICAgPgogICAgICAgICAgICAgIDx0ZW1wbGF0ZT4KICAgICAgICAgICAgICAgIDx0Zi1hdWRpby1sb2FkZXIKICAgICAgICAgICAgICAgICAgYWN0aXZlPSJbW2FjdGl2ZV1dIgogICAgICAgICAgICAgICAgICBydW49IltbaXRlbS5ydW5dXSIKICAgICAgICAgICAgICAgICAgdGFnPSJbW2l0ZW0udGFnXV0iCiAgICAgICAgICAgICAgICAgIHNhbXBsZT0iW1tpdGVtLnNhbXBsZV1dIgogICAgICAgICAgICAgICAgICB0b3RhbC1zYW1wbGVzPSJbW2l0ZW0udG90YWxTYW1wbGVzXV0iCiAgICAgICAgICAgICAgICAgIHRhZy1tZXRhZGF0YT0iW1tfdGFnTWV0YWRhdGEoX3J1blRvVGFnSW5mbywgaXRlbS5ydW4sIGl0ZW0udGFnKV1dIgogICAgICAgICAgICAgICAgICByZXF1ZXN0LW1hbmFnZXI9IltbX3JlcXVlc3RNYW5hZ2VyXV0iCiAgICAgICAgICAgICAgICA+PC90Zi1hdWRpby1sb2FkZXI+CiAgICAgICAgICAgICAgPC90ZW1wbGF0ZT4KICAgICAgICAgICAgPC90Zi1jYXRlZ29yeS1wYWdpbmF0ZWQtdmlldz4KICAgICAgICAgIDwvdGVtcGxhdGU+CiAgICAgICAgPC90ZW1wbGF0ZT4KICAgICAgPC9kaXY+CiAgICA8L3RmLWRhc2hib2FyZC1sYXlvdXQ+CiAgICA8c3R5bGUgaW5jbHVkZT0iZGFzaGJvYXJkLXN0eWxlIj48L3N0eWxlPgogICAgPHN0eWxlPgogICAgICAubm8tZGF0YS13YXJuaW5nIHsKICAgICAgICBtYXgtd2lkdGg6IDU0MHB4OwogICAgICAgIG1hcmdpbjogODBweCBhdXRvIDAgYXV0bzsKICAgICAgfQogICAgPC9zdHlsZT4KICBgLHQoW28oe3R5cGU6Qm9vbGVhbn0pLGUoImRlc2lnbjp0eXBlIixCb29sZWFuKV0sTE8ucHJvdG90eXBlLCJyZWxvYWRPblJlYWR5Iix2b2lkIDApLHQoW28oe3R5cGU6QXJyYXl9KSxlKCJkZXNpZ246dHlwZSIsQXJyYXkpXSxMTy5wcm90b3R5cGUsIl9zZWxlY3RlZFJ1bnMiLHZvaWQgMCksdChbbyh7dHlwZTpPYmplY3R9KSxlKCJkZXNpZ246dHlwZSIsT2JqZWN0KV0sTE8ucHJvdG90eXBlLCJfcnVuVG9UYWdJbmZvIix2b2lkIDApLHQoW28oe3R5cGU6Qm9vbGVhbn0pLGUoImRlc2lnbjp0eXBlIixCb29sZWFuKV0sTE8ucHJvdG90eXBlLCJfZGF0YU5vdEZvdW5kIix2b2lkIDApLHQoW28oe3R5cGU6U3RyaW5nfSksZSgiZGVzaWduOnR5cGUiLFN0cmluZyldLExPLnByb3RvdHlwZSwiX3RhZ0ZpbHRlciIsdm9pZCAwKSx0KFtvKHt0eXBlOk9iamVjdH0pLGUoImRlc2lnbjp0eXBlIixocildLExPLnByb3RvdHlwZSwiX3JlcXVlc3RNYW5hZ2VyIix2b2lkIDApLHQoW3MoIl9ydW5Ub1RhZ0luZm8iLCJfc2VsZWN0ZWRSdW5zIiwiX3RhZ0ZpbHRlciIpLGUoImRlc2lnbjp0eXBlIixBcnJheSksZSgiZGVzaWduOnBhcmFtdHlwZXMiLFtdKV0sTE8ucHJvdG90eXBlLCJfY2F0ZWdvcmllcyIsbnVsbCksTE89dChbaSgidGYtYXVkaW8tZGFzaGJvYXJkIildLExPKTtsZXQgUE89Y2xhc3MgZXh0ZW5kcyh0cih5ZSkpe2F0dGFjaGVkKCl7dGhpcy5hc3luYygoZnVuY3Rpb24oKXt0aGlzLmdldEVmZmVjdGl2ZUNoaWxkcmVuKCkuZm9yRWFjaChmdW5jdGlvbih0KXt0aGlzLmxpc3Rlbih0LCJ0YXAiLCJfc2VsZWN0VGFyZ2V0Iil9LmJpbmQodGhpcykpfSkpfV9zZWxlY3RUYXJnZXQodCl7dGhpcy5zZWxlY3RlZElkPXQuY3VycmVudFRhcmdldC5pZH1fc2VsZWN0ZWRJZENoYW5nZWQoKXt2YXIgdD10aGlzLnF1ZXJ5RWZmZWN0aXZlQ2hpbGRyZW4oIiMiK3RoaXMuc2VsZWN0ZWRJZCk7dCYmKHRoaXMuZ2V0RWZmZWN0aXZlQ2hpbGRyZW4oKS5mb3JFYWNoKChmdW5jdGlvbih0KXt0LmNsYXNzTGlzdC5yZW1vdmUoInNlbGVjdGVkIil9KSksdC5jbGFzc0xpc3QuYWRkKCJzZWxlY3RlZCIpKX19O2Z1bmN0aW9uIElPKHQsZSl7bGV0IG47Y29uc3QgaT17fTtyZXR1cm4gT2JqZWN0LmtleXModCkuZm9yRWFjaCgoZT0+e2NvbnN0IHI9dFtlXTt2b2lkIDA9PT1uJiYobj1yLmRpc3BsYXlOYW1lKSxuIT09ci5kaXNwbGF5TmFtZSYmKG49bnVsbCksdm9pZCAwPT09aVtyLmRlc2NyaXB0aW9uXSYmKGlbci5kZXNjcmlwdGlvbl09W10pLGlbci5kZXNjcmlwdGlvbl0ucHVzaChlKX0pKSx7ZGlzcGxheU5hbWU6bnVsbCE9bj9uOmUsZGVzY3JpcHRpb246KCgpPT57Y29uc3QgdD1PYmplY3Qua2V5cyhpKTtyZXR1cm4gMD09PXQubGVuZ3RoPyIiOjE9PT10Lmxlbmd0aD90WzBdOmA8cD48c3Ryb25nPk11bHRpcGxlIGRlc2NyaXB0aW9uczo8L3N0cm9uZz48L3A+PHVsPiR7dC5tYXAoKHQ9Pntjb25zdCBlPWlbdF0ubWFwKCh0PT5gPGNvZGU+JHt0LnJlcGxhY2UoLzwvZywiJmx0OyIpLnJlcGxhY2UoLz4vZywiJmd0OyIpLnJlcGxhY2UoLyYvZywiJmFtcDsiKX08L2NvZGU+YCkpLG49ZS5sZW5ndGg+Mj9lLnNsaWNlKDAsZS5sZW5ndGgtMSkuam9pbigiLCAiKSsiLCBhbmQgIitlW2UubGVuZ3RoLTFdOmUuam9pbigiIGFuZCAiKTtyZXR1cm5gPGxpPjxwPkZvciAkeyhmdW5jdGlvbiByKHQsZSxuKXtyZXR1cm4gMT09PXQ/ZTpufSkoZS5sZW5ndGgsInJ1biIsInJ1bnMiKX0gJHtufTo8L3A+JHt0fTwvbGk+YH0pKS5qb2luKCIiKX08L3VsPmB9KSgpfX1QTy50ZW1wbGF0ZT1fZWAKICAgIDxkaXYgaWQ9IndyYXAiPgogICAgICA8aDM+W1tuYW1lXV08L2gzPgogICAgICA8ZGl2IGNsYXNzPSJjb250ZW50LXdyYXBwZXIiPjxzbG90Pjwvc2xvdD48L2Rpdj4KICAgIDwvZGl2PgogICAgPHN0eWxlPgogICAgICAuY29udGVudC13cmFwcGVyIDo6c2xvdHRlZCgqKSB7CiAgICAgICAgYmFja2dyb3VuZDogbm9uZTsKICAgICAgICBjb2xvcjogdmFyKC0tdGItdWktZGFyay1hY2NlbnQpOwogICAgICAgIGZvbnQtc2l6ZTogMTNweDsKICAgICAgICBtYXJnaW4tdG9wOiAxMHB4OwogICAgICB9CgogICAgICAuY29udGVudC13cmFwcGVyIDo6c2xvdHRlZCgqKSB7CiAgICAgICAgYmFja2dyb3VuZDogbm9uZTsKICAgICAgICBjb2xvcjogdmFyKC0tdGItdWktZGFyay1hY2NlbnQpOwogICAgICAgIGZvbnQtc2l6ZTogMTNweDsKICAgICAgICBtYXJnaW4tdG9wOiAxMHB4OwogICAgICB9CgogICAgICAuY29udGVudC13cmFwcGVyIDo6c2xvdHRlZCguc2VsZWN0ZWQpIHsKICAgICAgICBiYWNrZ3JvdW5kLWNvbG9yOiB2YXIoLS10Yi11aS1kYXJrLWFjY2VudCk7CiAgICAgICAgY29sb3I6IHdoaXRlICFpbXBvcnRhbnQ7CiAgICAgIH0KCiAgICAgIGgzIHsKICAgICAgICBjb2xvcjogdmFyKC0tcGFwZXItZ3JleS04MDApOwogICAgICAgIGRpc3BsYXk6IGJsb2NrOwogICAgICAgIGZvbnQtc2l6ZTogMTRweDsKICAgICAgICBmb250LXdlaWdodDogbm9ybWFsOwogICAgICAgIG1hcmdpbjogMCAwIDVweDsKICAgICAgICBwb2ludGVyLWV2ZW50czogbm9uZTsKICAgICAgfQogICAgPC9zdHlsZT4KICBgLHQoW28oe3R5cGU6U3RyaW5nfSksZSgiZGVzaWduOnR5cGUiLFN0cmluZyldLFBPLnByb3RvdHlwZSwibmFtZSIsdm9pZCAwKSx0KFtvKHt0eXBlOlN0cmluZyxub3RpZnk6ITAsb2JzZXJ2ZXI6Il9zZWxlY3RlZElkQ2hhbmdlZCJ9KSxlKCJkZXNpZ246dHlwZSIsU3RyaW5nKV0sUE8ucHJvdG90eXBlLCJzZWxlY3RlZElkIix2b2lkIDApLFBPPXQoW2koInRmLW9wdGlvbi1zZWxlY3RvciIpXSxQTyk7bGV0IE5PPWNsYXNzIGV4dGVuZHMgeWV7Y29uc3RydWN0b3IoKXtzdXBlciguLi5hcmd1bWVudHMpLHRoaXMud2VpZ2h0PS42LHRoaXMuX3VwZGF0ZVdlaWdodD13ZS5kZWJvdW5jZSgoZnVuY3Rpb24odCl7dGhpcy53ZWlnaHQ9dH0pLDI1MCl9X2ltbWVkaWF0ZVdlaWdodE51bWJlckZvclBhcGVyU2xpZGVyQ2hhbmdlZCgpe3RoaXMuX2lucHV0V2VpZ2h0U3RyaW5nRm9yUGFwZXJJbnB1dD10aGlzLl9pbW1lZGlhdGVXZWlnaHROdW1iZXJGb3JQYXBlclNsaWRlci50b1N0cmluZygpLHRoaXMuX3VwZGF0ZVdlaWdodC5jYWxsKHRoaXMsdGhpcy5faW1tZWRpYXRlV2VpZ2h0TnVtYmVyRm9yUGFwZXJTbGlkZXIpfV9pbnB1dFdlaWdodFN0cmluZ0ZvclBhcGVySW5wdXRDaGFuZ2VkKCl7K3RoaXMuX2lucHV0V2VpZ2h0U3RyaW5nRm9yUGFwZXJJbnB1dDwwP3RoaXMuX2lucHV0V2VpZ2h0U3RyaW5nRm9yUGFwZXJJbnB1dD0iMCI6K3RoaXMuX2lucHV0V2VpZ2h0U3RyaW5nRm9yUGFwZXJJbnB1dD4xJiYodGhpcy5faW5wdXRXZWlnaHRTdHJpbmdGb3JQYXBlcklucHV0PSIxIik7dmFyIHQ9K3RoaXMuX2lucHV0V2VpZ2h0U3RyaW5nRm9yUGFwZXJJbnB1dDtpc05hTih0KXx8dGhpcy5fdXBkYXRlV2VpZ2h0LmNhbGwodGhpcyx0KX19O2Z1bmN0aW9uIE9PKHQsZSl7Y29uc3Qgbj1PYmplY3Qua2V5cyhlKS5zb3J0KCkuZmlsdGVyKCh0PT52b2lkIDAhPT1lW3RdKSk7aWYoIW4ubGVuZ3RoKXJldHVybiB0O2NvbnN0IGk9LTEhPT10LmluZGV4T2YoIj8iKT8iJiI6Ij8iO3JldHVybiB0K2krW10uY29uY2F0KC4uLm4ubWFwKCh0PT57Y29uc3Qgbj1lW3RdO3JldHVybihBcnJheS5pc0FycmF5KG4pP246W25dKS5tYXAoKGU9PmAke3R9PSR7KGZ1bmN0aW9uIG4odCl7cmV0dXJuIGVuY29kZVVSSUNvbXBvbmVudCh0KS5yZXBsYWNlKC9cKC9nLCIlMjgiKS5yZXBsYWNlKC9cKS9nLCIlMjkiKX0KLyohICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCiAgICBDb3B5cmlnaHQgKGMpIE1pY3Jvc29mdCBDb3Jwb3JhdGlvbi4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAgIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSAiTGljZW5zZSIpOyB5b3UgbWF5IG5vdCB1c2UKICAgIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLiBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlCiAgICBMaWNlbnNlIGF0IGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMAoKICAgIFRISVMgQ09ERSBJUyBQUk9WSURFRCBPTiBBTiAqQVMgSVMqIEJBU0lTLCBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkKICAgIEtJTkQsIEVJVEhFUiBFWFBSRVNTIE9SIElNUExJRUQsIElOQ0xVRElORyBXSVRIT1VUIExJTUlUQVRJT04gQU5ZIElNUExJRUQKICAgIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBUSVRMRSwgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UsCiAgICBNRVJDSEFOVEFCTElUWSBPUiBOT04tSU5GUklOR0VNRU5ULgoKICAgIFNlZSB0aGUgQXBhY2hlIFZlcnNpb24gMi4wIExpY2Vuc2UgZm9yIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucwogICAgYW5kIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLgogICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiogKi8pKGUpfWApKX0pKSkuam9pbigiJiIpfU5PLnRlbXBsYXRlPV9lYAogICAgPGgzIGNsYXNzPSJ0aXRsZSI+U21vb3RoaW5nPC9oMz4KICAgIDxkaXYgY2xhc3M9InNtb290aGluZy1ibG9jayI+CiAgICAgIDxwYXBlci1zbGlkZXIKICAgICAgICBpZD0ic2xpZGVyIgogICAgICAgIGltbWVkaWF0ZS12YWx1ZT0ie3tfaW1tZWRpYXRlV2VpZ2h0TnVtYmVyRm9yUGFwZXJTbGlkZXJ9fSIKICAgICAgICBtYXg9IltbbWF4XV0iCiAgICAgICAgbWluPSJbW21pbl1dIgogICAgICAgIHBpbgogICAgICAgIHN0ZXA9Iltbc3RlcF1dIgogICAgICAgIHR5cGU9Im51bWJlciIKICAgICAgICB2YWx1ZT0ie3t3ZWlnaHR9fSIKICAgICAgPjwvcGFwZXItc2xpZGVyPgogICAgICA8cGFwZXItaW5wdXQKICAgICAgICBpZD0iaW5wdXQiCiAgICAgICAgbGFiZWw9IndlaWdodCIKICAgICAgICBuby1sYWJlbC1mbG9hdAogICAgICAgIHZhbHVlPSJ7e19pbnB1dFdlaWdodFN0cmluZ0ZvclBhcGVySW5wdXR9fSIKICAgICAgICB0eXBlPSJudW1iZXIiCiAgICAgICAgc3RlcD0iW1tzdGVwXV0iCiAgICAgICAgbWluPSJbW21pbl1dIgogICAgICAgIG1heD0iW1ttYXhdXSIKICAgICAgPjwvcGFwZXItaW5wdXQ+CiAgICA8L2Rpdj4KICAgIDxzdHlsZT4KICAgICAgLnRpdGxlIHsKICAgICAgICBjb2xvcjogdmFyKC0tcGFwZXItZ3JleS04MDApOwogICAgICAgIG1hcmdpbjogMDsKICAgICAgICBmb250LXdlaWdodDogbm9ybWFsOwogICAgICAgIGZvbnQtc2l6ZTogMTRweDsKICAgICAgICBtYXJnaW4tYm90dG9tOiA1cHg7CiAgICAgIH0KCiAgICAgIC5zbW9vdGhpbmctYmxvY2sgewogICAgICAgIGRpc3BsYXk6IGZsZXg7CiAgICAgIH0KCiAgICAgIHBhcGVyLXNsaWRlciB7CiAgICAgICAgLS1wYXBlci1zbGlkZXItYWN0aXZlLWNvbG9yOiB2YXIoLS10Yi1vcmFuZ2Utc3Ryb25nKTsKICAgICAgICAtLXBhcGVyLXNsaWRlci1rbm9iLWNvbG9yOiB2YXIoLS10Yi1vcmFuZ2Utc3Ryb25nKTsKICAgICAgICAtLXBhcGVyLXNsaWRlci1rbm9iLXN0YXJ0LWJvcmRlci1jb2xvcjogdmFyKC0tdGItb3JhbmdlLXN0cm9uZyk7CiAgICAgICAgLS1wYXBlci1zbGlkZXIta25vYi1zdGFydC1jb2xvcjogdmFyKC0tdGItb3JhbmdlLXN0cm9uZyk7CiAgICAgICAgLS1wYXBlci1zbGlkZXItbWFya2Vycy1jb2xvcjogdmFyKC0tdGItb3JhbmdlLXN0cm9uZyk7CiAgICAgICAgLS1wYXBlci1zbGlkZXItcGluLWNvbG9yOiB2YXIoLS10Yi1vcmFuZ2Utc3Ryb25nKTsKICAgICAgICAtLXBhcGVyLXNsaWRlci1waW4tc3RhcnQtY29sb3I6IHZhcigtLXRiLW9yYW5nZS1zdHJvbmcpOwogICAgICAgIGZsZXgtZ3JvdzogMjsKICAgICAgfQoKICAgICAgcGFwZXItaW5wdXQgewogICAgICAgIC0tcGFwZXItaW5wdXQtY29udGFpbmVyLWZvY3VzLWNvbG9yOiB2YXIoLS10Yi1vcmFuZ2Utc3Ryb25nKTsKICAgICAgICAtLXBhcGVyLWlucHV0LWNvbnRhaW5lci1pbnB1dDogewogICAgICAgICAgZm9udC1zaXplOiAxNHB4OwogICAgICAgIH0KICAgICAgICAtLXBhcGVyLWlucHV0LWNvbnRhaW5lci1sYWJlbDogewogICAgICAgICAgZm9udC1zaXplOiAxNHB4OwogICAgICAgIH0KICAgICAgICB3aWR0aDogNjBweDsKICAgICAgfQogICAgPC9zdHlsZT4KICBgLHQoW28oe3R5cGU6TnVtYmVyfSksZSgiZGVzaWduOnR5cGUiLE51bWJlcildLE5PLnByb3RvdHlwZSwic3RlcCIsdm9pZCAwKSx0KFtvKHt0eXBlOk51bWJlcn0pLGUoImRlc2lnbjp0eXBlIixOdW1iZXIpXSxOTy5wcm90b3R5cGUsIm1heCIsdm9pZCAwKSx0KFtvKHt0eXBlOk51bWJlcn0pLGUoImRlc2lnbjp0eXBlIixOdW1iZXIpXSxOTy5wcm90b3R5cGUsIm1pbiIsdm9pZCAwKSx0KFtvKHt0eXBlOk51bWJlcixub3RpZnk6ITB9KSxlKCJkZXNpZ246dHlwZSIsTnVtYmVyKV0sTk8ucHJvdG90eXBlLCJ3ZWlnaHQiLHZvaWQgMCksdChbbyh7dHlwZTpOdW1iZXIsbm90aWZ5OiEwLG9ic2VydmVyOiJfaW1tZWRpYXRlV2VpZ2h0TnVtYmVyRm9yUGFwZXJTbGlkZXJDaGFuZ2VkIn0pLGUoImRlc2lnbjp0eXBlIixOdW1iZXIpXSxOTy5wcm90b3R5cGUsIl9pbW1lZGlhdGVXZWlnaHROdW1iZXJGb3JQYXBlclNsaWRlciIsdm9pZCAwKSx0KFtvKHt0eXBlOlN0cmluZyxub3RpZnk6ITAsb2JzZXJ2ZXI6Il9pbnB1dFdlaWdodFN0cmluZ0ZvclBhcGVySW5wdXRDaGFuZ2VkIn0pLGUoImRlc2lnbjp0eXBlIixTdHJpbmcpXSxOTy5wcm90b3R5cGUsIl9pbnB1dFdlaWdodFN0cmluZ0ZvclBhcGVySW5wdXQiLHZvaWQgMCksTk89dChbaSgidGYtc21vb3RoaW5nLWlucHV0IildLE5PKTt2YXIgUk89T2JqZWN0LnNldFByb3RvdHlwZU9mfHx7X19wcm90b19fOltdfWluc3RhbmNlb2YgQXJyYXkmJmZ1bmN0aW9uKHQsZSl7dC5fX3Byb3RvX189ZX18fGZ1bmN0aW9uKHQsZSl7Zm9yKHZhciBuIGluIGUpZS5oYXNPd25Qcm9wZXJ0eShuKSYmKHRbbl09ZVtuXSl9LHpPPU9iamVjdC5hc3NpZ258fGZ1bmN0aW9uIHQoZSl7Zm9yKHZhciBuLGk9MSxyPWFyZ3VtZW50cy5sZW5ndGg7aTxyO2krKylmb3IodmFyIG8gaW4gbj1hcmd1bWVudHNbaV0pT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKG4sbykmJihlW29dPW5bb10pO3JldHVybiBlfTtmdW5jdGlvbiBETyh0KXt2YXIgZT0iZnVuY3Rpb24iPT10eXBlb2YgU3ltYm9sJiZ0W1N5bWJvbC5pdGVyYXRvcl0sbj0wO3JldHVybiBlP2UuY2FsbCh0KTp7bmV4dDpmdW5jdGlvbigpe3JldHVybiB0JiZuPj10Lmxlbmd0aCYmKHQ9dm9pZCAwKSx7dmFsdWU6dCYmdFtuKytdLGRvbmU6IXR9fX19ZnVuY3Rpb24gQk8odCxlKXt2YXIgbj0iZnVuY3Rpb24iPT10eXBlb2YgU3ltYm9sJiZ0W1N5bWJvbC5pdGVyYXRvcl07aWYoIW4pcmV0dXJuIHQ7dmFyIGkscixvPW4uY2FsbCh0KSxhPVtdO3RyeXtmb3IoOyh2b2lkIDA9PT1lfHxlLS0gPjApJiYhKGk9by5uZXh0KCkpLmRvbmU7KWEucHVzaChpLnZhbHVlKX1jYXRjaCh0KXtyPXtlcnJvcjp0fX1maW5hbGx5e3RyeXtpJiYhaS5kb25lJiYobj1vLnJldHVybikmJm4uY2FsbChvKX1maW5hbGx5e2lmKHIpdGhyb3cgci5lcnJvcn19cmV0dXJuIGF9ZnVuY3Rpb24gSE8odCl7cmV0dXJuIHRoaXMgaW5zdGFuY2VvZiBITz8odGhpcy52PXQsdGhpcyk6bmV3IEhPKHQpfXZhciBGTz1PYmplY3QuZnJlZXplKHtfX3Byb3RvX186bnVsbCxfX2V4dGVuZHM6ZnVuY3Rpb24gVk8odCxlKXtmdW5jdGlvbiBuKCl7dGhpcy5jb25zdHJ1Y3Rvcj10fVJPKHQsZSksdC5wcm90b3R5cGU9bnVsbD09PWU/T2JqZWN0LmNyZWF0ZShlKToobi5wcm90b3R5cGU9ZS5wcm90b3R5cGUsbmV3IG4pfSxfX2Fzc2lnbjp6TyxfX3Jlc3Q6ZnVuY3Rpb24gak8odCxlKXt2YXIgbj17fTtmb3IodmFyIGkgaW4gdClPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwodCxpKSYmZS5pbmRleE9mKGkpPDAmJihuW2ldPXRbaV0pO2lmKG51bGwhPXQmJiJmdW5jdGlvbiI9PXR5cGVvZiBPYmplY3QuZ2V0T3duUHJvcGVydHlTeW1ib2xzKXt2YXIgcj0wO2ZvcihpPU9iamVjdC5nZXRPd25Qcm9wZXJ0eVN5bWJvbHModCk7cjxpLmxlbmd0aDtyKyspZS5pbmRleE9mKGlbcl0pPDAmJihuW2lbcl1dPXRbaVtyXV0pfXJldHVybiBufSxfX2RlY29yYXRlOmZ1bmN0aW9uIFVPKHQsZSxuLGkpe3ZhciByLG89YXJndW1lbnRzLmxlbmd0aCxhPW88Mz9lOm51bGw9PT1pP2k9T2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcihlLG4pOmk7aWYoIm9iamVjdCI9PXR5cGVvZiBSZWZsZWN0JiYiZnVuY3Rpb24iPT10eXBlb2YgUmVmbGVjdC5kZWNvcmF0ZSlhPVJlZmxlY3QuZGVjb3JhdGUodCxlLG4saSk7ZWxzZSBmb3IodmFyIHM9dC5sZW5ndGgtMTtzPj0wO3MtLSkocj10W3NdKSYmKGE9KG88Mz9yKGEpOm8+Mz9yKGUsbixhKTpyKGUsbikpfHxhKTtyZXR1cm4gbz4zJiZhJiZPYmplY3QuZGVmaW5lUHJvcGVydHkoZSxuLGEpLGF9LF9fcGFyYW06ZnVuY3Rpb24gR08odCxlKXtyZXR1cm4gZnVuY3Rpb24obixpKXtlKG4saSx0KX19LF9fbWV0YWRhdGE6ZnVuY3Rpb24gV08odCxlKXtpZigib2JqZWN0Ij09dHlwZW9mIFJlZmxlY3QmJiJmdW5jdGlvbiI9PXR5cGVvZiBSZWZsZWN0Lm1ldGFkYXRhKXJldHVybiBSZWZsZWN0Lm1ldGFkYXRhKHQsZSl9LF9fYXdhaXRlcjpmdW5jdGlvbiBxTyh0LGUsbixpKXtyZXR1cm4gbmV3KG58fChuPVByb21pc2UpKSgoZnVuY3Rpb24ocixvKXtmdW5jdGlvbiBhKHQpe3RyeXtsKGkubmV4dCh0KSl9Y2F0Y2godCl7byh0KX19ZnVuY3Rpb24gcyh0KXt0cnl7bChpLnRocm93KHQpKX1jYXRjaCh0KXtvKHQpfX1mdW5jdGlvbiBsKHQpe3QuZG9uZT9yKHQudmFsdWUpOm5ldyBuKChmdW5jdGlvbihlKXtlKHQudmFsdWUpfSkpLnRoZW4oYSxzKX1sKChpPWkuYXBwbHkodCxlfHxbXSkpLm5leHQoKSl9KSl9LF9fZ2VuZXJhdG9yOmZ1bmN0aW9uIFlPKHQsZSl7dmFyIG4saSxyLG8sYT17bGFiZWw6MCxzZW50OmZ1bmN0aW9uKCl7aWYoMSZyWzBdKXRocm93IHJbMV07cmV0dXJuIHJbMV19LHRyeXM6W10sb3BzOltdfTtyZXR1cm4gbz17bmV4dDpzKDApLHRocm93OnMoMSkscmV0dXJuOnMoMil9LCJmdW5jdGlvbiI9PXR5cGVvZiBTeW1ib2wmJihvW1N5bWJvbC5pdGVyYXRvcl09ZnVuY3Rpb24oKXtyZXR1cm4gdGhpc30pLG87ZnVuY3Rpb24gcyhvKXtyZXR1cm4gZnVuY3Rpb24ocyl7cmV0dXJuKGZ1bmN0aW9uIGwobyl7aWYobil0aHJvdyBuZXcgVHlwZUVycm9yKCJHZW5lcmF0b3IgaXMgYWxyZWFkeSBleGVjdXRpbmcuIik7Zm9yKDthOyl0cnl7aWYobj0xLGkmJihyPWlbMiZvWzBdPyJyZXR1cm4iOm9bMF0/InRocm93IjoibmV4dCJdKSYmIShyPXIuY2FsbChpLG9bMV0pKS5kb25lKXJldHVybiByO3N3aXRjaChpPTAsciYmKG89WzAsci52YWx1ZV0pLG9bMF0pe2Nhc2UgMDpjYXNlIDE6cj1vO2JyZWFrO2Nhc2UgNDpyZXR1cm4gYS5sYWJlbCsrLHt2YWx1ZTpvWzFdLGRvbmU6ITF9O2Nhc2UgNTphLmxhYmVsKyssaT1vWzFdLG89WzBdO2NvbnRpbnVlO2Nhc2UgNzpvPWEub3BzLnBvcCgpLGEudHJ5cy5wb3AoKTtjb250aW51ZTtkZWZhdWx0OmlmKCEoKHI9KHI9YS50cnlzKS5sZW5ndGg+MCYmcltyLmxlbmd0aC0xXSl8fDYhPT1vWzBdJiYyIT09b1swXSkpe2E9MDtjb250aW51ZX1pZigzPT09b1swXSYmKCFyfHxvWzFdPnJbMF0mJm9bMV08clszXSkpe2EubGFiZWw9b1sxXTticmVha31pZig2PT09b1swXSYmYS5sYWJlbDxyWzFdKXthLmxhYmVsPXJbMV0scj1vO2JyZWFrfWlmKHImJmEubGFiZWw8clsyXSl7YS5sYWJlbD1yWzJdLGEub3BzLnB1c2gobyk7YnJlYWt9clsyXSYmYS5vcHMucG9wKCksYS50cnlzLnBvcCgpO2NvbnRpbnVlfW89ZS5jYWxsKHQsYSl9Y2F0Y2godCl7bz1bNix0XSxpPTB9ZmluYWxseXtuPXI9MH1pZig1Jm9bMF0pdGhyb3cgb1sxXTtyZXR1cm57dmFsdWU6b1swXT9vWzFdOnZvaWQgMCxkb25lOiEwfX0pKFtvLHNdKX19fSxfX2V4cG9ydFN0YXI6ZnVuY3Rpb24gWE8odCxlKXtmb3IodmFyIG4gaW4gdCllLmhhc093blByb3BlcnR5KG4pfHwoZVtuXT10W25dKX0sX192YWx1ZXM6RE8sX19yZWFkOkJPLF9fc3ByZWFkOmZ1bmN0aW9uICRPKCl7Zm9yKHZhciB0PVtdLGU9MDtlPGFyZ3VtZW50cy5sZW5ndGg7ZSsrKXQ9dC5jb25jYXQoQk8oYXJndW1lbnRzW2VdKSk7cmV0dXJuIHR9LF9fYXdhaXQ6SE8sX19hc3luY0dlbmVyYXRvcjpmdW5jdGlvbiBLTyh0LGUsbil7aWYoIVN5bWJvbC5hc3luY0l0ZXJhdG9yKXRocm93IG5ldyBUeXBlRXJyb3IoIlN5bWJvbC5hc3luY0l0ZXJhdG9yIGlzIG5vdCBkZWZpbmVkLiIpO3ZhciBpLHI9bi5hcHBseSh0LGV8fFtdKSxvPVtdO3JldHVybiBpPXt9LGEoIm5leHQiKSxhKCJ0aHJvdyIpLGEoInJldHVybiIpLGlbU3ltYm9sLmFzeW5jSXRlcmF0b3JdPWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXN9LGk7ZnVuY3Rpb24gYSh0KXtyW3RdJiYoaVt0XT1mdW5jdGlvbihlKXtyZXR1cm4gbmV3IFByb21pc2UoKGZ1bmN0aW9uKG4saSl7by5wdXNoKFt0LGUsbixpXSk+MXx8cyh0LGUpfSkpfSl9ZnVuY3Rpb24gcyh0LGUpe3RyeXshKGZ1bmN0aW9uIG4odCl7dC52YWx1ZSBpbnN0YW5jZW9mIEhPP1Byb21pc2UucmVzb2x2ZSh0LnZhbHVlLnYpLnRoZW4obCxjKTp1KG9bMF1bMl0sdCl9KShyW3RdKGUpKX1jYXRjaCh0KXt1KG9bMF1bM10sdCl9fWZ1bmN0aW9uIGwodCl7cygibmV4dCIsdCl9ZnVuY3Rpb24gYyh0KXtzKCJ0aHJvdyIsdCl9ZnVuY3Rpb24gdSh0LGUpe3QoZSksby5zaGlmdCgpLG8ubGVuZ3RoJiZzKG9bMF1bMF0sb1swXVsxXSl9fSxfX2FzeW5jRGVsZWdhdG9yOmZ1bmN0aW9uIFpPKHQpe3ZhciBlLG47cmV0dXJuIGU9e30saSgibmV4dCIpLGkoInRocm93IiwoZnVuY3Rpb24odCl7dGhyb3cgdH0pKSxpKCJyZXR1cm4iKSxlW1N5bWJvbC5pdGVyYXRvcl09ZnVuY3Rpb24oKXtyZXR1cm4gdGhpc30sZTtmdW5jdGlvbiBpKGkscil7dFtpXSYmKGVbaV09ZnVuY3Rpb24oZSl7cmV0dXJuKG49IW4pP3t2YWx1ZTpITyh0W2ldKGUpKSxkb25lOiJyZXR1cm4iPT09aX06cj9yKGUpOmV9KX19LF9fYXN5bmNWYWx1ZXM6ZnVuY3Rpb24gSk8odCl7aWYoIVN5bWJvbC5hc3luY0l0ZXJhdG9yKXRocm93IG5ldyBUeXBlRXJyb3IoIlN5bWJvbC5hc3luY0l0ZXJhdG9yIGlzIG5vdCBkZWZpbmVkLiIpO3ZhciBlPXRbU3ltYm9sLmFzeW5jSXRlcmF0b3JdO3JldHVybiBlP2UuY2FsbCh0KTpETyh0KX0sX19tYWtlVGVtcGxhdGVPYmplY3Q6ZnVuY3Rpb24gUU8odCxlKXtyZXR1cm4gT2JqZWN0LmRlZmluZVByb3BlcnR5P09iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LCJyYXciLHt2YWx1ZTplfSk6dC5yYXc9ZSx0fX0pO2Z1bmN0aW9uIHRSKHQsZSl7cmV0dXJuIHQ8ZT8tMTp0PmU/MTp0Pj1lPzA6TmFOfWZ1bmN0aW9uIGVSKHQpe3JldHVybiAxPT09dC5sZW5ndGgmJih0PShmdW5jdGlvbiBlKHQpe3JldHVybiBmdW5jdGlvbihlLG4pe3JldHVybiB0Uih0KGUpLG4pfX0pKHQpKSx7bGVmdDpmdW5jdGlvbihlLG4saSxyKXtmb3IobnVsbD09aSYmKGk9MCksbnVsbD09ciYmKHI9ZS5sZW5ndGgpO2k8cjspe3ZhciBvPWkrcj4+PjE7dChlW29dLG4pPDA/aT1vKzE6cj1vfXJldHVybiBpfSxyaWdodDpmdW5jdGlvbihlLG4saSxyKXtmb3IobnVsbD09aSYmKGk9MCksbnVsbD09ciYmKHI9ZS5sZW5ndGgpO2k8cjspe3ZhciBvPWkrcj4+PjE7dChlW29dLG4pPjA/cj1vOmk9bysxfXJldHVybiBpfX19dmFyIG5SPWVSKHRSKSxpUj1uUi5yaWdodCxyUj1uUi5sZWZ0O2Z1bmN0aW9uIG9SKHQsZSl7cmV0dXJuW3QsZV19ZnVuY3Rpb24gYVIodCl7cmV0dXJuIG51bGw9PT10P05hTjordH1mdW5jdGlvbiBzUih0LGUpe3ZhciBuLGkscj10Lmxlbmd0aCxvPTAsYT0tMSxzPTAsbD0wO2lmKG51bGw9PWUpZm9yKDsrK2E8cjspaXNOYU4obj1hUih0W2FdKSl8fChsKz0oaT1uLXMpKihuLShzKz1pLysrbykpKTtlbHNlIGZvcig7KythPHI7KWlzTmFOKG49YVIoZSh0W2FdLGEsdCkpKXx8KGwrPShpPW4tcykqKG4tKHMrPWkvKytvKSkpO2lmKG8+MSlyZXR1cm4gbC8oby0xKX1mdW5jdGlvbiBsUih0LGUpe3ZhciBuPXNSKHQsZSk7cmV0dXJuIG4/TWF0aC5zcXJ0KG4pOm59ZnVuY3Rpb24gY1IodCxlKXt2YXIgbixpLHIsbz10Lmxlbmd0aCxhPS0xO2lmKG51bGw9PWUpe2Zvcig7KythPG87KWlmKG51bGwhPShuPXRbYV0pJiZuPj1uKWZvcihpPXI9bjsrK2E8bzspbnVsbCE9KG49dFthXSkmJihpPm4mJihpPW4pLHI8biYmKHI9bikpfWVsc2UgZm9yKDsrK2E8bzspaWYobnVsbCE9KG49ZSh0W2FdLGEsdCkpJiZuPj1uKWZvcihpPXI9bjsrK2E8bzspbnVsbCE9KG49ZSh0W2FdLGEsdCkpJiYoaT5uJiYoaT1uKSxyPG4mJihyPW4pKTtyZXR1cm5baSxyXX12YXIgdVI9QXJyYXkucHJvdG90eXBlLGhSPXVSLnNsaWNlLGRSPXVSLm1hcDtmdW5jdGlvbiBwUih0KXtyZXR1cm4gZnVuY3Rpb24oKXtyZXR1cm4gdH19ZnVuY3Rpb24gZlIodCl7cmV0dXJuIHR9ZnVuY3Rpb24gbVIodCxlLG4pe3Q9K3QsZT0rZSxuPShyPWFyZ3VtZW50cy5sZW5ndGgpPDI/KGU9dCx0PTAsMSk6cjwzPzE6K247Zm9yKHZhciBpPS0xLHI9MHxNYXRoLm1heCgwLE1hdGguY2VpbCgoZS10KS9uKSksbz1uZXcgQXJyYXkocik7KytpPHI7KW9baV09dCtpKm47cmV0dXJuIG99dmFyIGdSPU1hdGguc3FydCg1MCksX1I9TWF0aC5zcXJ0KDEwKSx5Uj1NYXRoLnNxcnQoMik7ZnVuY3Rpb24gdlIodCxlLG4pe3ZhciBpPShlLXQpL01hdGgubWF4KDAsbikscj1NYXRoLmZsb29yKE1hdGgubG9nKGkpL01hdGguTE4xMCksbz1pL01hdGgucG93KDEwLHIpO3JldHVybiByPj0wPyhvPj1nUj8xMDpvPj1fUj81Om8+PXlSPzI6MSkqTWF0aC5wb3coMTAscik6LU1hdGgucG93KDEwLC1yKS8obz49Z1I/MTA6bz49X1I/NTpvPj15Uj8yOjEpfWZ1bmN0aW9uIGJSKHQsZSxuKXt2YXIgaT1NYXRoLmFicyhlLXQpL01hdGgubWF4KDAsbikscj1NYXRoLnBvdygxMCxNYXRoLmZsb29yKE1hdGgubG9nKGkpL01hdGguTE4xMCkpLG89aS9yO3JldHVybiBvPj1nUj9yKj0xMDpvPj1fUj9yKj01Om8+PXlSJiYocio9MiksZTx0Py1yOnJ9ZnVuY3Rpb24geFIodCl7cmV0dXJuIE1hdGguY2VpbChNYXRoLmxvZyh0Lmxlbmd0aCkvTWF0aC5MTjIpKzF9ZnVuY3Rpb24gd1IodCxlLG4pe2lmKG51bGw9PW4mJihuPWFSKSxpPXQubGVuZ3RoKXtpZigoZT0rZSk8PTB8fGk8MilyZXR1cm4rbih0WzBdLDAsdCk7aWYoZT49MSlyZXR1cm4rbih0W2ktMV0saS0xLHQpO3ZhciBpLHI9KGktMSkqZSxvPU1hdGguZmxvb3IociksYT0rbih0W29dLG8sdCk7cmV0dXJuIGErKCtuKHRbbysxXSxvKzEsdCktYSkqKHItbyl9fWZ1bmN0aW9uIFNSKHQsZSl7dmFyIG4saSxyPXQubGVuZ3RoLG89LTE7aWYobnVsbD09ZSl7Zm9yKDsrK288cjspaWYobnVsbCE9KG49dFtvXSkmJm4+PW4pZm9yKGk9bjsrK288cjspbnVsbCE9KG49dFtvXSkmJmk+biYmKGk9bil9ZWxzZSBmb3IoOysrbzxyOylpZihudWxsIT0obj1lKHRbb10sbyx0KSkmJm4+PW4pZm9yKGk9bjsrK288cjspbnVsbCE9KG49ZSh0W29dLG8sdCkpJiZpPm4mJihpPW4pO3JldHVybiBpfWZ1bmN0aW9uIE1SKHQpe2lmKCEocj10Lmxlbmd0aCkpcmV0dXJuW107Zm9yKHZhciBlPS0xLG49U1IodCxFUiksaT1uZXcgQXJyYXkobik7KytlPG47KWZvcih2YXIgcixvPS0xLGE9aVtlXT1uZXcgQXJyYXkocik7KytvPHI7KWFbb109dFtvXVtlXTtyZXR1cm4gaX1mdW5jdGlvbiBFUih0KXtyZXR1cm4gdC5sZW5ndGh9dmFyIFRSPUFycmF5LnByb3RvdHlwZS5zbGljZTtmdW5jdGlvbiBBUih0KXtyZXR1cm4gdH12YXIgQ1I9MWUtNjtmdW5jdGlvbiBrUih0KXtyZXR1cm4idHJhbnNsYXRlKCIrKHQrLjUpKyIsMCkifWZ1bmN0aW9uIExSKHQpe3JldHVybiJ0cmFuc2xhdGUoMCwiKyh0Ky41KSsiKSJ9ZnVuY3Rpb24gUFIodCl7cmV0dXJuIGZ1bmN0aW9uKGUpe3JldHVybit0KGUpfX1mdW5jdGlvbiBJUih0KXt2YXIgZT1NYXRoLm1heCgwLHQuYmFuZHdpZHRoKCktMSkvMjtyZXR1cm4gdC5yb3VuZCgpJiYoZT1NYXRoLnJvdW5kKGUpKSxmdW5jdGlvbihuKXtyZXR1cm4rdChuKStlfX1mdW5jdGlvbiBOUigpe3JldHVybiF0aGlzLl9fYXhpc31mdW5jdGlvbiBPUih0LGUpe3ZhciBuPVtdLGk9bnVsbCxyPW51bGwsbz02LGE9NixzPTMsbD0xPT09dHx8ND09PXQ/LTE6MSxjPTQ9PT10fHwyPT09dD8ieCI6InkiLHU9MT09PXR8fDM9PT10P2tSOkxSO2Z1bmN0aW9uIGgoaCl7dmFyIGQ9bnVsbD09aT9lLnRpY2tzP2UudGlja3MuYXBwbHkoZSxuKTplLmRvbWFpbigpOmkscD1udWxsPT1yP2UudGlja0Zvcm1hdD9lLnRpY2tGb3JtYXQuYXBwbHkoZSxuKTpBUjpyLGY9TWF0aC5tYXgobywwKStzLG09ZS5yYW5nZSgpLGc9K21bMF0rLjUsXz0rbVttLmxlbmd0aC0xXSsuNSx5PShlLmJhbmR3aWR0aD9JUjpQUikoZS5jb3B5KCkpLHY9aC5zZWxlY3Rpb24/aC5zZWxlY3Rpb24oKTpoLGI9di5zZWxlY3RBbGwoIi5kb21haW4iKS5kYXRhKFtudWxsXSkseD12LnNlbGVjdEFsbCgiLnRpY2siKS5kYXRhKGQsZSkub3JkZXIoKSx3PXguZXhpdCgpLFM9eC5lbnRlcigpLmFwcGVuZCgiZyIpLmF0dHIoImNsYXNzIiwidGljayIpLE09eC5zZWxlY3QoImxpbmUiKSxFPXguc2VsZWN0KCJ0ZXh0Iik7Yj1iLm1lcmdlKGIuZW50ZXIoKS5pbnNlcnQoInBhdGgiLCIudGljayIpLmF0dHIoImNsYXNzIiwiZG9tYWluIikuYXR0cigic3Ryb2tlIiwiIzAwMCIpKSx4PXgubWVyZ2UoUyksTT1NLm1lcmdlKFMuYXBwZW5kKCJsaW5lIikuYXR0cigic3Ryb2tlIiwiIzAwMCIpLmF0dHIoYysiMiIsbCpvKSksRT1FLm1lcmdlKFMuYXBwZW5kKCJ0ZXh0IikuYXR0cigiZmlsbCIsIiMwMDAiKS5hdHRyKGMsbCpmKS5hdHRyKCJkeSIsMT09PXQ/IjBlbSI6Mz09PXQ/IjAuNzFlbSI6IjAuMzJlbSIpKSxoIT09diYmKGI9Yi50cmFuc2l0aW9uKGgpLHg9eC50cmFuc2l0aW9uKGgpLE09TS50cmFuc2l0aW9uKGgpLEU9RS50cmFuc2l0aW9uKGgpLHc9dy50cmFuc2l0aW9uKGgpLmF0dHIoIm9wYWNpdHkiLENSKS5hdHRyKCJ0cmFuc2Zvcm0iLChmdW5jdGlvbih0KXtyZXR1cm4gaXNGaW5pdGUodD15KHQpKT91KHQpOnRoaXMuZ2V0QXR0cmlidXRlKCJ0cmFuc2Zvcm0iKX0pKSxTLmF0dHIoIm9wYWNpdHkiLENSKS5hdHRyKCJ0cmFuc2Zvcm0iLChmdW5jdGlvbih0KXt2YXIgZT10aGlzLnBhcmVudE5vZGUuX19heGlzO3JldHVybiB1KGUmJmlzRmluaXRlKGU9ZSh0KSk/ZTp5KHQpKX0pKSksdy5yZW1vdmUoKSxiLmF0dHIoImQiLDQ9PT10fHwyPT10PyJNIitsKmErIiwiK2crIkgwLjVWIitfKyJIIitsKmE6Ik0iK2crIiwiK2wqYSsiVjAuNUgiK18rIlYiK2wqYSkseC5hdHRyKCJvcGFjaXR5IiwxKS5hdHRyKCJ0cmFuc2Zvcm0iLChmdW5jdGlvbih0KXtyZXR1cm4gdSh5KHQpKX0pKSxNLmF0dHIoYysiMiIsbCpvKSxFLmF0dHIoYyxsKmYpLnRleHQocCksdi5maWx0ZXIoTlIpLmF0dHIoImZpbGwiLCJub25lIikuYXR0cigiZm9udC1zaXplIiwxMCkuYXR0cigiZm9udC1mYW1pbHkiLCJzYW5zLXNlcmlmIikuYXR0cigidGV4dC1hbmNob3IiLDI9PT10PyJzdGFydCI6ND09PXQ/ImVuZCI6Im1pZGRsZSIpLHYuZWFjaCgoZnVuY3Rpb24oKXt0aGlzLl9fYXhpcz15fSkpfXJldHVybiBoLnNjYWxlPWZ1bmN0aW9uKHQpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyhlPXQsaCk6ZX0saC50aWNrcz1mdW5jdGlvbigpe3JldHVybiBuPVRSLmNhbGwoYXJndW1lbnRzKSxofSxoLnRpY2tBcmd1bWVudHM9ZnVuY3Rpb24odCl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KG49bnVsbD09dD9bXTpUUi5jYWxsKHQpLGgpOm4uc2xpY2UoKX0saC50aWNrVmFsdWVzPWZ1bmN0aW9uKHQpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyhpPW51bGw9PXQ/bnVsbDpUUi5jYWxsKHQpLGgpOmkmJmkuc2xpY2UoKX0saC50aWNrRm9ybWF0PWZ1bmN0aW9uKHQpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyhyPXQsaCk6cn0saC50aWNrU2l6ZT1mdW5jdGlvbih0KXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8obz1hPSt0LGgpOm99LGgudGlja1NpemVJbm5lcj1mdW5jdGlvbih0KXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8obz0rdCxoKTpvfSxoLnRpY2tTaXplT3V0ZXI9ZnVuY3Rpb24odCl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KGE9K3QsaCk6YX0saC50aWNrUGFkZGluZz1mdW5jdGlvbih0KXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8ocz0rdCxoKTpzfSxofXZhciBSUj17dmFsdWU6ZnVuY3Rpb24oKXt9fTtmdW5jdGlvbiB6Uigpe2Zvcih2YXIgdCxlPTAsbj1hcmd1bWVudHMubGVuZ3RoLGk9e307ZTxuOysrZSl7aWYoISh0PWFyZ3VtZW50c1tlXSsiIil8fHQgaW4gaXx8L1tccy5dLy50ZXN0KHQpKXRocm93IG5ldyBFcnJvcigiaWxsZWdhbCB0eXBlOiAiK3QpO2lbdF09W119cmV0dXJuIG5ldyBEUihpKX1mdW5jdGlvbiBEUih0KXt0aGlzLl89dH1mdW5jdGlvbiBCUih0LGUpe3JldHVybiB0LnRyaW0oKS5zcGxpdCgvXnxccysvKS5tYXAoKGZ1bmN0aW9uKHQpe3ZhciBuPSIiLGk9dC5pbmRleE9mKCIuIik7aWYoaT49MCYmKG49dC5zbGljZShpKzEpLHQ9dC5zbGljZSgwLGkpKSx0JiYhZS5oYXNPd25Qcm9wZXJ0eSh0KSl0aHJvdyBuZXcgRXJyb3IoInVua25vd24gdHlwZTogIit0KTtyZXR1cm57dHlwZTp0LG5hbWU6bn19KSl9ZnVuY3Rpb24gSFIodCxlKXtmb3IodmFyIG4saT0wLHI9dC5sZW5ndGg7aTxyOysraSlpZigobj10W2ldKS5uYW1lPT09ZSlyZXR1cm4gbi52YWx1ZX1mdW5jdGlvbiBGUih0LGUsbil7Zm9yKHZhciBpPTAscj10Lmxlbmd0aDtpPHI7KytpKWlmKHRbaV0ubmFtZT09PWUpe3RbaV09UlIsdD10LnNsaWNlKDAsaSkuY29uY2F0KHQuc2xpY2UoaSsxKSk7YnJlYWt9cmV0dXJuIG51bGwhPW4mJnQucHVzaCh7bmFtZTplLHZhbHVlOm59KSx0fURSLnByb3RvdHlwZT16Ui5wcm90b3R5cGU9e2NvbnN0cnVjdG9yOkRSLG9uOmZ1bmN0aW9uKHQsZSl7dmFyIG4saT10aGlzLl8scj1CUih0KyIiLGkpLG89LTEsYT1yLmxlbmd0aDtpZighKGFyZ3VtZW50cy5sZW5ndGg8Mikpe2lmKG51bGwhPWUmJiJmdW5jdGlvbiIhPXR5cGVvZiBlKXRocm93IG5ldyBFcnJvcigiaW52YWxpZCBjYWxsYmFjazogIitlKTtmb3IoOysrbzxhOylpZihuPSh0PXJbb10pLnR5cGUpaVtuXT1GUihpW25dLHQubmFtZSxlKTtlbHNlIGlmKG51bGw9PWUpZm9yKG4gaW4gaSlpW25dPUZSKGlbbl0sdC5uYW1lLG51bGwpO3JldHVybiB0aGlzfWZvcig7KytvPGE7KWlmKChuPSh0PXJbb10pLnR5cGUpJiYobj1IUihpW25dLHQubmFtZSkpKXJldHVybiBufSxjb3B5OmZ1bmN0aW9uKCl7dmFyIHQ9e30sZT10aGlzLl87Zm9yKHZhciBuIGluIGUpdFtuXT1lW25dLnNsaWNlKCk7cmV0dXJuIG5ldyBEUih0KX0sY2FsbDpmdW5jdGlvbih0LGUpe2lmKChuPWFyZ3VtZW50cy5sZW5ndGgtMik+MClmb3IodmFyIG4saSxyPW5ldyBBcnJheShuKSxvPTA7bzxuOysrbylyW29dPWFyZ3VtZW50c1tvKzJdO2lmKCF0aGlzLl8uaGFzT3duUHJvcGVydHkodCkpdGhyb3cgbmV3IEVycm9yKCJ1bmtub3duIHR5cGU6ICIrdCk7Zm9yKG89MCxuPShpPXRoaXMuX1t0XSkubGVuZ3RoO288bjsrK28paVtvXS52YWx1ZS5hcHBseShlLHIpfSxhcHBseTpmdW5jdGlvbih0LGUsbil7aWYoIXRoaXMuXy5oYXNPd25Qcm9wZXJ0eSh0KSl0aHJvdyBuZXcgRXJyb3IoInVua25vd24gdHlwZTogIit0KTtmb3IodmFyIGk9dGhpcy5fW3RdLHI9MCxvPWkubGVuZ3RoO3I8bzsrK3IpaVtyXS52YWx1ZS5hcHBseShlLG4pfX07dmFyIFZSPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hodG1sIixqUj17c3ZnOiJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIseGh0bWw6VlIseGxpbms6Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiLHhtbDoiaHR0cDovL3d3dy53My5vcmcvWE1MLzE5OTgvbmFtZXNwYWNlIix4bWxuczoiaHR0cDovL3d3dy53My5vcmcvMjAwMC94bWxucy8ifTtmdW5jdGlvbiBVUih0KXt2YXIgZT10Kz0iIixuPWUuaW5kZXhPZigiOiIpO3JldHVybiBuPj0wJiYieG1sbnMiIT09KGU9dC5zbGljZSgwLG4pKSYmKHQ9dC5zbGljZShuKzEpKSxqUi5oYXNPd25Qcm9wZXJ0eShlKT97c3BhY2U6alJbZV0sbG9jYWw6dH06dH1mdW5jdGlvbiBHUih0KXtyZXR1cm4gZnVuY3Rpb24oKXt2YXIgZT10aGlzLm93bmVyRG9jdW1lbnQsbj10aGlzLm5hbWVzcGFjZVVSSTtyZXR1cm4gbj09PVZSJiZlLmRvY3VtZW50RWxlbWVudC5uYW1lc3BhY2VVUkk9PT1WUj9lLmNyZWF0ZUVsZW1lbnQodCk6ZS5jcmVhdGVFbGVtZW50TlMobix0KX19ZnVuY3Rpb24gV1IodCl7cmV0dXJuIGZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMub3duZXJEb2N1bWVudC5jcmVhdGVFbGVtZW50TlModC5zcGFjZSx0LmxvY2FsKX19ZnVuY3Rpb24gcVIodCl7dmFyIGU9VVIodCk7cmV0dXJuKGUubG9jYWw/V1I6R1IpKGUpfWZ1bmN0aW9uIFlSKCl7fWZ1bmN0aW9uIFhSKHQpe3JldHVybiBudWxsPT10P1lSOmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMucXVlcnlTZWxlY3Rvcih0KX19ZnVuY3Rpb24gJFIoKXtyZXR1cm5bXX1mdW5jdGlvbiBLUih0KXtyZXR1cm4gbnVsbD09dD8kUjpmdW5jdGlvbigpe3JldHVybiB0aGlzLnF1ZXJ5U2VsZWN0b3JBbGwodCl9fWZ1bmN0aW9uIFpSKHQpe3JldHVybiBmdW5jdGlvbigpe3JldHVybiB0aGlzLm1hdGNoZXModCl9fWZ1bmN0aW9uIEpSKHQpe3JldHVybiBuZXcgQXJyYXkodC5sZW5ndGgpfWZ1bmN0aW9uIFFSKHQsZSl7dGhpcy5vd25lckRvY3VtZW50PXQub3duZXJEb2N1bWVudCx0aGlzLm5hbWVzcGFjZVVSST10Lm5hbWVzcGFjZVVSSSx0aGlzLl9uZXh0PW51bGwsdGhpcy5fcGFyZW50PXQsdGhpcy5fX2RhdGFfXz1lfWZ1bmN0aW9uIHR6KHQsZSxuLGkscixvKXtmb3IodmFyIGEscz0wLGw9ZS5sZW5ndGgsYz1vLmxlbmd0aDtzPGM7KytzKShhPWVbc10pPyhhLl9fZGF0YV9fPW9bc10saVtzXT1hKTpuW3NdPW5ldyBRUih0LG9bc10pO2Zvcig7czxsOysrcykoYT1lW3NdKSYmKHJbc109YSl9ZnVuY3Rpb24gZXoodCxlLG4saSxyLG8sYSl7dmFyIHMsbCxjLHU9e30saD1lLmxlbmd0aCxkPW8ubGVuZ3RoLHA9bmV3IEFycmF5KGgpO2ZvcihzPTA7czxoOysrcykobD1lW3NdKSYmKHBbc109Yz0iJCIrYS5jYWxsKGwsbC5fX2RhdGFfXyxzLGUpLGMgaW4gdT9yW3NdPWw6dVtjXT1sKTtmb3Iocz0wO3M8ZDsrK3MpKGw9dVtjPSIkIithLmNhbGwodCxvW3NdLHMsbyldKT8oaVtzXT1sLGwuX19kYXRhX189b1tzXSx1W2NdPW51bGwpOm5bc109bmV3IFFSKHQsb1tzXSk7Zm9yKHM9MDtzPGg7KytzKShsPWVbc10pJiZ1W3Bbc11dPT09bCYmKHJbc109bCl9ZnVuY3Rpb24gbnoodCxlKXtyZXR1cm4gdDxlPy0xOnQ+ZT8xOnQ+PWU/MDpOYU59ZnVuY3Rpb24gaXoodCl7cmV0dXJuIGZ1bmN0aW9uKCl7dGhpcy5yZW1vdmVBdHRyaWJ1dGUodCl9fWZ1bmN0aW9uIHJ6KHQpe3JldHVybiBmdW5jdGlvbigpe3RoaXMucmVtb3ZlQXR0cmlidXRlTlModC5zcGFjZSx0LmxvY2FsKX19ZnVuY3Rpb24gb3oodCxlKXtyZXR1cm4gZnVuY3Rpb24oKXt0aGlzLnNldEF0dHJpYnV0ZSh0LGUpfX1mdW5jdGlvbiBheih0LGUpe3JldHVybiBmdW5jdGlvbigpe3RoaXMuc2V0QXR0cmlidXRlTlModC5zcGFjZSx0LmxvY2FsLGUpfX1mdW5jdGlvbiBzeih0LGUpe3JldHVybiBmdW5jdGlvbigpe3ZhciBuPWUuYXBwbHkodGhpcyxhcmd1bWVudHMpO251bGw9PW4/dGhpcy5yZW1vdmVBdHRyaWJ1dGUodCk6dGhpcy5zZXRBdHRyaWJ1dGUodCxuKX19ZnVuY3Rpb24gbHoodCxlKXtyZXR1cm4gZnVuY3Rpb24oKXt2YXIgbj1lLmFwcGx5KHRoaXMsYXJndW1lbnRzKTtudWxsPT1uP3RoaXMucmVtb3ZlQXR0cmlidXRlTlModC5zcGFjZSx0LmxvY2FsKTp0aGlzLnNldEF0dHJpYnV0ZU5TKHQuc3BhY2UsdC5sb2NhbCxuKX19ZnVuY3Rpb24gY3oodCl7cmV0dXJuIHQub3duZXJEb2N1bWVudCYmdC5vd25lckRvY3VtZW50LmRlZmF1bHRWaWV3fHx0LmRvY3VtZW50JiZ0fHx0LmRlZmF1bHRWaWV3fWZ1bmN0aW9uIHV6KHQpe3JldHVybiBmdW5jdGlvbigpe3RoaXMuc3R5bGUucmVtb3ZlUHJvcGVydHkodCl9fWZ1bmN0aW9uIGh6KHQsZSxuKXtyZXR1cm4gZnVuY3Rpb24oKXt0aGlzLnN0eWxlLnNldFByb3BlcnR5KHQsZSxuKX19ZnVuY3Rpb24gZHoodCxlLG4pe3JldHVybiBmdW5jdGlvbigpe3ZhciBpPWUuYXBwbHkodGhpcyxhcmd1bWVudHMpO251bGw9PWk/dGhpcy5zdHlsZS5yZW1vdmVQcm9wZXJ0eSh0KTp0aGlzLnN0eWxlLnNldFByb3BlcnR5KHQsaSxuKX19ZnVuY3Rpb24gcHoodCxlKXtyZXR1cm4gdC5zdHlsZS5nZXRQcm9wZXJ0eVZhbHVlKGUpfHxjeih0KS5nZXRDb21wdXRlZFN0eWxlKHQsbnVsbCkuZ2V0UHJvcGVydHlWYWx1ZShlKX1mdW5jdGlvbiBmeih0KXtyZXR1cm4gZnVuY3Rpb24oKXtkZWxldGUgdGhpc1t0XX19ZnVuY3Rpb24gbXoodCxlKXtyZXR1cm4gZnVuY3Rpb24oKXt0aGlzW3RdPWV9fWZ1bmN0aW9uIGd6KHQsZSl7cmV0dXJuIGZ1bmN0aW9uKCl7dmFyIG49ZS5hcHBseSh0aGlzLGFyZ3VtZW50cyk7bnVsbD09bj9kZWxldGUgdGhpc1t0XTp0aGlzW3RdPW59fWZ1bmN0aW9uIF96KHQpe3JldHVybiB0LnRyaW0oKS5zcGxpdCgvXnxccysvKX1mdW5jdGlvbiB5eih0KXtyZXR1cm4gdC5jbGFzc0xpc3R8fG5ldyB2eih0KX1mdW5jdGlvbiB2eih0KXt0aGlzLl9ub2RlPXQsdGhpcy5fbmFtZXM9X3oodC5nZXRBdHRyaWJ1dGUoImNsYXNzIil8fCIiKX1mdW5jdGlvbiBieih0LGUpe2Zvcih2YXIgbj15eih0KSxpPS0xLHI9ZS5sZW5ndGg7KytpPHI7KW4uYWRkKGVbaV0pfWZ1bmN0aW9uIHh6KHQsZSl7Zm9yKHZhciBuPXl6KHQpLGk9LTEscj1lLmxlbmd0aDsrK2k8cjspbi5yZW1vdmUoZVtpXSl9ZnVuY3Rpb24gd3oodCl7cmV0dXJuIGZ1bmN0aW9uKCl7YnoodGhpcyx0KX19ZnVuY3Rpb24gU3oodCl7cmV0dXJuIGZ1bmN0aW9uKCl7eHoodGhpcyx0KX19ZnVuY3Rpb24gTXoodCxlKXtyZXR1cm4gZnVuY3Rpb24oKXsoZS5hcHBseSh0aGlzLGFyZ3VtZW50cyk/Yno6eHopKHRoaXMsdCl9fWZ1bmN0aW9uIEV6KCl7dGhpcy50ZXh0Q29udGVudD0iIn1mdW5jdGlvbiBUeih0KXtyZXR1cm4gZnVuY3Rpb24oKXt0aGlzLnRleHRDb250ZW50PXR9fWZ1bmN0aW9uIEF6KHQpe3JldHVybiBmdW5jdGlvbigpe3ZhciBlPXQuYXBwbHkodGhpcyxhcmd1bWVudHMpO3RoaXMudGV4dENvbnRlbnQ9bnVsbD09ZT8iIjplfX1mdW5jdGlvbiBDeigpe3RoaXMuaW5uZXJIVE1MPSIifWZ1bmN0aW9uIGt6KHQpe3JldHVybiBmdW5jdGlvbigpe3RoaXMuaW5uZXJIVE1MPXR9fWZ1bmN0aW9uIEx6KHQpe3JldHVybiBmdW5jdGlvbigpe3ZhciBlPXQuYXBwbHkodGhpcyxhcmd1bWVudHMpO3RoaXMuaW5uZXJIVE1MPW51bGw9PWU/IiI6ZX19ZnVuY3Rpb24gUHooKXt0aGlzLm5leHRTaWJsaW5nJiZ0aGlzLnBhcmVudE5vZGUuYXBwZW5kQ2hpbGQodGhpcyl9ZnVuY3Rpb24gSXooKXt0aGlzLnByZXZpb3VzU2libGluZyYmdGhpcy5wYXJlbnROb2RlLmluc2VydEJlZm9yZSh0aGlzLHRoaXMucGFyZW50Tm9kZS5maXJzdENoaWxkKX1mdW5jdGlvbiBOeigpe3JldHVybiBudWxsfWZ1bmN0aW9uIE96KCl7dmFyIHQ9dGhpcy5wYXJlbnROb2RlO3QmJnQucmVtb3ZlQ2hpbGQodGhpcyl9ZnVuY3Rpb24gUnooKXt2YXIgdD10aGlzLmNsb25lTm9kZSghMSksZT10aGlzLnBhcmVudE5vZGU7cmV0dXJuIGU/ZS5pbnNlcnRCZWZvcmUodCx0aGlzLm5leHRTaWJsaW5nKTp0fWZ1bmN0aW9uIHp6KCl7dmFyIHQ9dGhpcy5jbG9uZU5vZGUoITApLGU9dGhpcy5wYXJlbnROb2RlO3JldHVybiBlP2UuaW5zZXJ0QmVmb3JlKHQsdGhpcy5uZXh0U2libGluZyk6dH1RUi5wcm90b3R5cGU9e2NvbnN0cnVjdG9yOlFSLGFwcGVuZENoaWxkOmZ1bmN0aW9uKHQpe3JldHVybiB0aGlzLl9wYXJlbnQuaW5zZXJ0QmVmb3JlKHQsdGhpcy5fbmV4dCl9LGluc2VydEJlZm9yZTpmdW5jdGlvbih0LGUpe3JldHVybiB0aGlzLl9wYXJlbnQuaW5zZXJ0QmVmb3JlKHQsZSl9LHF1ZXJ5U2VsZWN0b3I6ZnVuY3Rpb24odCl7cmV0dXJuIHRoaXMuX3BhcmVudC5xdWVyeVNlbGVjdG9yKHQpfSxxdWVyeVNlbGVjdG9yQWxsOmZ1bmN0aW9uKHQpe3JldHVybiB0aGlzLl9wYXJlbnQucXVlcnlTZWxlY3RvckFsbCh0KX19LHZ6LnByb3RvdHlwZT17YWRkOmZ1bmN0aW9uKHQpe3RoaXMuX25hbWVzLmluZGV4T2YodCk8MCYmKHRoaXMuX25hbWVzLnB1c2godCksdGhpcy5fbm9kZS5zZXRBdHRyaWJ1dGUoImNsYXNzIix0aGlzLl9uYW1lcy5qb2luKCIgIikpKX0scmVtb3ZlOmZ1bmN0aW9uKHQpe3ZhciBlPXRoaXMuX25hbWVzLmluZGV4T2YodCk7ZT49MCYmKHRoaXMuX25hbWVzLnNwbGljZShlLDEpLHRoaXMuX25vZGUuc2V0QXR0cmlidXRlKCJjbGFzcyIsdGhpcy5fbmFtZXMuam9pbigiICIpKSl9LGNvbnRhaW5zOmZ1bmN0aW9uKHQpe3JldHVybiB0aGlzLl9uYW1lcy5pbmRleE9mKHQpPj0wfX07dmFyIER6PXt9LEJ6PW51bGw7ZnVuY3Rpb24gSHoodCxlLG4pe3JldHVybiB0PUZ6KHQsZSxuKSxmdW5jdGlvbihlKXt2YXIgbj1lLnJlbGF0ZWRUYXJnZXQ7biYmKG49PT10aGlzfHw4Jm4uY29tcGFyZURvY3VtZW50UG9zaXRpb24odGhpcykpfHx0LmNhbGwodGhpcyxlKX19ZnVuY3Rpb24gRnoodCxlLG4pe3JldHVybiBmdW5jdGlvbihpKXt2YXIgcj1CejtCej1pO3RyeXt0LmNhbGwodGhpcyx0aGlzLl9fZGF0YV9fLGUsbil9ZmluYWxseXtCej1yfX19ZnVuY3Rpb24gVnoodCl7cmV0dXJuIHQudHJpbSgpLnNwbGl0KC9efFxzKy8pLm1hcCgoZnVuY3Rpb24odCl7dmFyIGU9IiIsbj10LmluZGV4T2YoIi4iKTtyZXR1cm4gbj49MCYmKGU9dC5zbGljZShuKzEpLHQ9dC5zbGljZSgwLG4pKSx7dHlwZTp0LG5hbWU6ZX19KSl9ZnVuY3Rpb24ganoodCl7cmV0dXJuIGZ1bmN0aW9uKCl7dmFyIGU9dGhpcy5fX29uO2lmKGUpe2Zvcih2YXIgbixpPTAscj0tMSxvPWUubGVuZ3RoO2k8bzsrK2kpbj1lW2ldLHQudHlwZSYmbi50eXBlIT09dC50eXBlfHxuLm5hbWUhPT10Lm5hbWU/ZVsrK3JdPW46dGhpcy5yZW1vdmVFdmVudExpc3RlbmVyKG4udHlwZSxuLmxpc3RlbmVyLG4uY2FwdHVyZSk7KytyP2UubGVuZ3RoPXI6ZGVsZXRlIHRoaXMuX19vbn19fWZ1bmN0aW9uIFV6KHQsZSxuKXt2YXIgaT1Eei5oYXNPd25Qcm9wZXJ0eSh0LnR5cGUpP0h6OkZ6O3JldHVybiBmdW5jdGlvbihyLG8sYSl7dmFyIHMsbD10aGlzLl9fb24sYz1pKGUsbyxhKTtpZihsKWZvcih2YXIgdT0wLGg9bC5sZW5ndGg7dTxoOysrdSlpZigocz1sW3VdKS50eXBlPT09dC50eXBlJiZzLm5hbWU9PT10Lm5hbWUpcmV0dXJuIHRoaXMucmVtb3ZlRXZlbnRMaXN0ZW5lcihzLnR5cGUscy5saXN0ZW5lcixzLmNhcHR1cmUpLHRoaXMuYWRkRXZlbnRMaXN0ZW5lcihzLnR5cGUscy5saXN0ZW5lcj1jLHMuY2FwdHVyZT1uKSx2b2lkKHMudmFsdWU9ZSk7dGhpcy5hZGRFdmVudExpc3RlbmVyKHQudHlwZSxjLG4pLHM9e3R5cGU6dC50eXBlLG5hbWU6dC5uYW1lLHZhbHVlOmUsbGlzdGVuZXI6YyxjYXB0dXJlOm59LGw/bC5wdXNoKHMpOnRoaXMuX19vbj1bc119fWZ1bmN0aW9uIEd6KHQsZSxuKXt2YXIgaT1jeih0KSxyPWkuQ3VzdG9tRXZlbnQ7ImZ1bmN0aW9uIj09dHlwZW9mIHI/cj1uZXcgcihlLG4pOihyPWkuZG9jdW1lbnQuY3JlYXRlRXZlbnQoIkV2ZW50Iiksbj8oci5pbml0RXZlbnQoZSxuLmJ1YmJsZXMsbi5jYW5jZWxhYmxlKSxyLmRldGFpbD1uLmRldGFpbCk6ci5pbml0RXZlbnQoZSwhMSwhMSkpLHQuZGlzcGF0Y2hFdmVudChyKX1mdW5jdGlvbiBXeih0LGUpe3JldHVybiBmdW5jdGlvbigpe3JldHVybiBHeih0aGlzLHQsZSl9fWZ1bmN0aW9uIHF6KHQsZSl7cmV0dXJuIGZ1bmN0aW9uKCl7cmV0dXJuIEd6KHRoaXMsdCxlLmFwcGx5KHRoaXMsYXJndW1lbnRzKSl9fSJ1bmRlZmluZWQiIT10eXBlb2YgZG9jdW1lbnQmJigib25tb3VzZWVudGVyImluIGRvY3VtZW50LmRvY3VtZW50RWxlbWVudHx8KER6PXttb3VzZWVudGVyOiJtb3VzZW92ZXIiLG1vdXNlbGVhdmU6Im1vdXNlb3V0In0pKTt2YXIgWXo9W251bGxdO2Z1bmN0aW9uIFh6KHQsZSl7dGhpcy5fZ3JvdXBzPXQsdGhpcy5fcGFyZW50cz1lfWZ1bmN0aW9uICR6KCl7cmV0dXJuIG5ldyBYeihbW2RvY3VtZW50LmRvY3VtZW50RWxlbWVudF1dLFl6KX1mdW5jdGlvbiBLeih0KXtyZXR1cm4ic3RyaW5nIj09dHlwZW9mIHQ/bmV3IFh6KFtbZG9jdW1lbnQucXVlcnlTZWxlY3Rvcih0KV1dLFtkb2N1bWVudC5kb2N1bWVudEVsZW1lbnRdKTpuZXcgWHooW1t0XV0sWXopfWZ1bmN0aW9uIFp6KHQpe3ZhciBlPShmdW5jdGlvbiBuKCl7Zm9yKHZhciB0LGU9Qno7dD1lLnNvdXJjZUV2ZW50OyllPXQ7cmV0dXJuIGV9KSgpO3JldHVybiBlLmNoYW5nZWRUb3VjaGVzJiYoZT1lLmNoYW5nZWRUb3VjaGVzWzBdKSwoZnVuY3Rpb24gaSh0LGUpe3ZhciBuPXQub3duZXJTVkdFbGVtZW50fHx0O2lmKG4uY3JlYXRlU1ZHUG9pbnQpe3ZhciBpPW4uY3JlYXRlU1ZHUG9pbnQoKTtyZXR1cm4gaS54PWUuY2xpZW50WCxpLnk9ZS5jbGllbnRZLFsoaT1pLm1hdHJpeFRyYW5zZm9ybSh0LmdldFNjcmVlbkNUTSgpLmludmVyc2UoKSkpLngsaS55XX12YXIgcj10LmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpO3JldHVybltlLmNsaWVudFgtci5sZWZ0LXQuY2xpZW50TGVmdCxlLmNsaWVudFktci50b3AtdC5jbGllbnRUb3BdfSkodCxlKX1mdW5jdGlvbiBKeigpe0J6LnByZXZlbnREZWZhdWx0KCksQnouc3RvcEltbWVkaWF0ZVByb3BhZ2F0aW9uKCl9ZnVuY3Rpb24gUXoodCl7dmFyIGU9dC5kb2N1bWVudC5kb2N1bWVudEVsZW1lbnQsbj1Leih0KS5vbigiZHJhZ3N0YXJ0LmRyYWciLEp6LCEwKTsib25zZWxlY3RzdGFydCJpbiBlP24ub24oInNlbGVjdHN0YXJ0LmRyYWciLEp6LCEwKTooZS5fX25vc2VsZWN0PWUuc3R5bGUuTW96VXNlclNlbGVjdCxlLnN0eWxlLk1velVzZXJTZWxlY3Q9Im5vbmUiKX1mdW5jdGlvbiB0RCh0LGUpe3ZhciBuPXQuZG9jdW1lbnQuZG9jdW1lbnRFbGVtZW50LGk9S3oodCkub24oImRyYWdzdGFydC5kcmFnIixudWxsKTtlJiYoaS5vbigiY2xpY2suZHJhZyIsSnosITApLHNldFRpbWVvdXQoKGZ1bmN0aW9uKCl7aS5vbigiY2xpY2suZHJhZyIsbnVsbCl9KSwwKSksIm9uc2VsZWN0c3RhcnQiaW4gbj9pLm9uKCJzZWxlY3RzdGFydC5kcmFnIixudWxsKToobi5zdHlsZS5Nb3pVc2VyU2VsZWN0PW4uX19ub3NlbGVjdCxkZWxldGUgbi5fX25vc2VsZWN0KX1mdW5jdGlvbiBlRCh0LGUsbil7dC5wcm90b3R5cGU9ZS5wcm90b3R5cGU9bixuLmNvbnN0cnVjdG9yPXR9ZnVuY3Rpb24gbkQodCxlKXt2YXIgbj1PYmplY3QuY3JlYXRlKHQucHJvdG90eXBlKTtmb3IodmFyIGkgaW4gZSluW2ldPWVbaV07cmV0dXJuIG59ZnVuY3Rpb24gaUQoKXt9WHoucHJvdG90eXBlPSR6LnByb3RvdHlwZT17Y29uc3RydWN0b3I6WHosc2VsZWN0OmZ1bmN0aW9uIHJEKHQpeyJmdW5jdGlvbiIhPXR5cGVvZiB0JiYodD1YUih0KSk7Zm9yKHZhciBlPXRoaXMuX2dyb3VwcyxuPWUubGVuZ3RoLGk9bmV3IEFycmF5KG4pLHI9MDtyPG47KytyKWZvcih2YXIgbyxhLHM9ZVtyXSxsPXMubGVuZ3RoLGM9aVtyXT1uZXcgQXJyYXkobCksdT0wO3U8bDsrK3UpKG89c1t1XSkmJihhPXQuY2FsbChvLG8uX19kYXRhX18sdSxzKSkmJigiX19kYXRhX18iaW4gbyYmKGEuX19kYXRhX189by5fX2RhdGFfXyksY1t1XT1hKTtyZXR1cm4gbmV3IFh6KGksdGhpcy5fcGFyZW50cyl9LHNlbGVjdEFsbDpmdW5jdGlvbiBvRCh0KXsiZnVuY3Rpb24iIT10eXBlb2YgdCYmKHQ9S1IodCkpO2Zvcih2YXIgZT10aGlzLl9ncm91cHMsbj1lLmxlbmd0aCxpPVtdLHI9W10sbz0wO288bjsrK28pZm9yKHZhciBhLHM9ZVtvXSxsPXMubGVuZ3RoLGM9MDtjPGw7KytjKShhPXNbY10pJiYoaS5wdXNoKHQuY2FsbChhLGEuX19kYXRhX18sYyxzKSksci5wdXNoKGEpKTtyZXR1cm4gbmV3IFh6KGkscil9LGZpbHRlcjpmdW5jdGlvbiBhRCh0KXsiZnVuY3Rpb24iIT10eXBlb2YgdCYmKHQ9WlIodCkpO2Zvcih2YXIgZT10aGlzLl9ncm91cHMsbj1lLmxlbmd0aCxpPW5ldyBBcnJheShuKSxyPTA7cjxuOysrcilmb3IodmFyIG8sYT1lW3JdLHM9YS5sZW5ndGgsbD1pW3JdPVtdLGM9MDtjPHM7KytjKShvPWFbY10pJiZ0LmNhbGwobyxvLl9fZGF0YV9fLGMsYSkmJmwucHVzaChvKTtyZXR1cm4gbmV3IFh6KGksdGhpcy5fcGFyZW50cyl9LGRhdGE6ZnVuY3Rpb24gc0QodCxlKXtpZighdClyZXR1cm4gZj1uZXcgQXJyYXkodGhpcy5zaXplKCkpLHU9LTEsdGhpcy5lYWNoKChmdW5jdGlvbih0KXtmWysrdV09dH0pKSxmO3ZhciBuPWU/ZXo6dHosaT10aGlzLl9wYXJlbnRzLHI9dGhpcy5fZ3JvdXBzOyJmdW5jdGlvbiIhPXR5cGVvZiB0JiYodD0oZnVuY3Rpb24gbyh0KXtyZXR1cm4gZnVuY3Rpb24oKXtyZXR1cm4gdH19KSh0KSk7Zm9yKHZhciBhPXIubGVuZ3RoLHM9bmV3IEFycmF5KGEpLGw9bmV3IEFycmF5KGEpLGM9bmV3IEFycmF5KGEpLHU9MDt1PGE7Kyt1KXt2YXIgaD1pW3VdLGQ9clt1XSxwPWQubGVuZ3RoLGY9dC5jYWxsKGgsaCYmaC5fX2RhdGFfXyx1LGkpLG09Zi5sZW5ndGgsZz1sW3VdPW5ldyBBcnJheShtKSxfPXNbdV09bmV3IEFycmF5KG0pO24oaCxkLGcsXyxjW3VdPW5ldyBBcnJheShwKSxmLGUpO2Zvcih2YXIgeSx2LGI9MCx4PTA7YjxtOysrYilpZih5PWdbYl0pe2ZvcihiPj14JiYoeD1iKzEpOyEodj1fW3hdKSYmKyt4PG07KTt5Ll9uZXh0PXZ8fG51bGx9fXJldHVybihzPW5ldyBYeihzLGkpKS5fZW50ZXI9bCxzLl9leGl0PWMsc30sZW50ZXI6ZnVuY3Rpb24gbEQoKXtyZXR1cm4gbmV3IFh6KHRoaXMuX2VudGVyfHx0aGlzLl9ncm91cHMubWFwKEpSKSx0aGlzLl9wYXJlbnRzKX0sZXhpdDpmdW5jdGlvbiBjRCgpe3JldHVybiBuZXcgWHoodGhpcy5fZXhpdHx8dGhpcy5fZ3JvdXBzLm1hcChKUiksdGhpcy5fcGFyZW50cyl9LGpvaW46ZnVuY3Rpb24gdUQodCxlLG4pe3ZhciBpPXRoaXMuZW50ZXIoKSxyPXRoaXMsbz10aGlzLmV4aXQoKTtyZXR1cm4gaT0iZnVuY3Rpb24iPT10eXBlb2YgdD90KGkpOmkuYXBwZW5kKHQrIiIpLG51bGwhPWUmJihyPWUocikpLG51bGw9PW4/by5yZW1vdmUoKTpuKG8pLGkmJnI/aS5tZXJnZShyKS5vcmRlcigpOnJ9LG1lcmdlOmZ1bmN0aW9uIGhEKHQpe2Zvcih2YXIgZT10aGlzLl9ncm91cHMsbj10Ll9ncm91cHMsaT1lLmxlbmd0aCxyPU1hdGgubWluKGksbi5sZW5ndGgpLG89bmV3IEFycmF5KGkpLGE9MDthPHI7KythKWZvcih2YXIgcyxsPWVbYV0sYz1uW2FdLHU9bC5sZW5ndGgsaD1vW2FdPW5ldyBBcnJheSh1KSxkPTA7ZDx1OysrZCkocz1sW2RdfHxjW2RdKSYmKGhbZF09cyk7Zm9yKDthPGk7KythKW9bYV09ZVthXTtyZXR1cm4gbmV3IFh6KG8sdGhpcy5fcGFyZW50cyl9LG9yZGVyOmZ1bmN0aW9uIGREKCl7Zm9yKHZhciB0PXRoaXMuX2dyb3VwcyxlPS0xLG49dC5sZW5ndGg7KytlPG47KWZvcih2YXIgaSxyPXRbZV0sbz1yLmxlbmd0aC0xLGE9cltvXTstLW8+PTA7KShpPXJbb10pJiYoYSYmNF5pLmNvbXBhcmVEb2N1bWVudFBvc2l0aW9uKGEpJiZhLnBhcmVudE5vZGUuaW5zZXJ0QmVmb3JlKGksYSksYT1pKTtyZXR1cm4gdGhpc30sc29ydDpmdW5jdGlvbiBwRCh0KXtmdW5jdGlvbiBlKGUsbil7cmV0dXJuIGUmJm4/dChlLl9fZGF0YV9fLG4uX19kYXRhX18pOiFlLSFufXR8fCh0PW56KTtmb3IodmFyIG49dGhpcy5fZ3JvdXBzLGk9bi5sZW5ndGgscj1uZXcgQXJyYXkoaSksbz0wO288aTsrK28pe2Zvcih2YXIgYSxzPW5bb10sbD1zLmxlbmd0aCxjPXJbb109bmV3IEFycmF5KGwpLHU9MDt1PGw7Kyt1KShhPXNbdV0pJiYoY1t1XT1hKTtjLnNvcnQoZSl9cmV0dXJuIG5ldyBYeihyLHRoaXMuX3BhcmVudHMpLm9yZGVyKCl9LGNhbGw6ZnVuY3Rpb24gZkQoKXt2YXIgdD1hcmd1bWVudHNbMF07cmV0dXJuIGFyZ3VtZW50c1swXT10aGlzLHQuYXBwbHkobnVsbCxhcmd1bWVudHMpLHRoaXN9LG5vZGVzOmZ1bmN0aW9uIG1EKCl7dmFyIHQ9bmV3IEFycmF5KHRoaXMuc2l6ZSgpKSxlPS0xO3JldHVybiB0aGlzLmVhY2goKGZ1bmN0aW9uKCl7dFsrK2VdPXRoaXN9KSksdH0sbm9kZTpmdW5jdGlvbiBnRCgpe2Zvcih2YXIgdD10aGlzLl9ncm91cHMsZT0wLG49dC5sZW5ndGg7ZTxuOysrZSlmb3IodmFyIGk9dFtlXSxyPTAsbz1pLmxlbmd0aDtyPG87KytyKXt2YXIgYT1pW3JdO2lmKGEpcmV0dXJuIGF9cmV0dXJuIG51bGx9LHNpemU6ZnVuY3Rpb24gX0QoKXt2YXIgdD0wO3JldHVybiB0aGlzLmVhY2goKGZ1bmN0aW9uKCl7Kyt0fSkpLHR9LGVtcHR5OmZ1bmN0aW9uIHlEKCl7cmV0dXJuIXRoaXMubm9kZSgpfSxlYWNoOmZ1bmN0aW9uIHZEKHQpe2Zvcih2YXIgZT10aGlzLl9ncm91cHMsbj0wLGk9ZS5sZW5ndGg7bjxpOysrbilmb3IodmFyIHIsbz1lW25dLGE9MCxzPW8ubGVuZ3RoO2E8czsrK2EpKHI9b1thXSkmJnQuY2FsbChyLHIuX19kYXRhX18sYSxvKTtyZXR1cm4gdGhpc30sYXR0cjpmdW5jdGlvbiBiRCh0LGUpe3ZhciBuPVVSKHQpO2lmKGFyZ3VtZW50cy5sZW5ndGg8Mil7dmFyIGk9dGhpcy5ub2RlKCk7cmV0dXJuIG4ubG9jYWw/aS5nZXRBdHRyaWJ1dGVOUyhuLnNwYWNlLG4ubG9jYWwpOmkuZ2V0QXR0cmlidXRlKG4pfXJldHVybiB0aGlzLmVhY2goKG51bGw9PWU/bi5sb2NhbD9yejppejoiZnVuY3Rpb24iPT10eXBlb2YgZT9uLmxvY2FsP2x6OnN6Om4ubG9jYWw/YXo6b3opKG4sZSkpfSxzdHlsZTpmdW5jdGlvbiB4RCh0LGUsbil7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg+MT90aGlzLmVhY2goKG51bGw9PWU/dXo6ImZ1bmN0aW9uIj09dHlwZW9mIGU/ZHo6aHopKHQsZSxudWxsPT1uPyIiOm4pKTpweih0aGlzLm5vZGUoKSx0KX0scHJvcGVydHk6ZnVuY3Rpb24gd0QodCxlKXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD4xP3RoaXMuZWFjaCgobnVsbD09ZT9mejoiZnVuY3Rpb24iPT10eXBlb2YgZT9nejpteikodCxlKSk6dGhpcy5ub2RlKClbdF19LGNsYXNzZWQ6ZnVuY3Rpb24gU0QodCxlKXt2YXIgbj1feih0KyIiKTtpZihhcmd1bWVudHMubGVuZ3RoPDIpe2Zvcih2YXIgaT15eih0aGlzLm5vZGUoKSkscj0tMSxvPW4ubGVuZ3RoOysrcjxvOylpZighaS5jb250YWlucyhuW3JdKSlyZXR1cm4hMTtyZXR1cm4hMH1yZXR1cm4gdGhpcy5lYWNoKCgiZnVuY3Rpb24iPT10eXBlb2YgZT9NejplP3d6OlN6KShuLGUpKX0sdGV4dDpmdW5jdGlvbiBNRCh0KXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD90aGlzLmVhY2gobnVsbD09dD9FejooImZ1bmN0aW9uIj09dHlwZW9mIHQ/QXo6VHopKHQpKTp0aGlzLm5vZGUoKS50ZXh0Q29udGVudH0saHRtbDpmdW5jdGlvbiBFRCh0KXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD90aGlzLmVhY2gobnVsbD09dD9DejooImZ1bmN0aW9uIj09dHlwZW9mIHQ/THo6a3opKHQpKTp0aGlzLm5vZGUoKS5pbm5lckhUTUx9LHJhaXNlOmZ1bmN0aW9uIFREKCl7cmV0dXJuIHRoaXMuZWFjaChQeil9LGxvd2VyOmZ1bmN0aW9uIEFEKCl7cmV0dXJuIHRoaXMuZWFjaChJeil9LGFwcGVuZDpmdW5jdGlvbiBDRCh0KXt2YXIgZT0iZnVuY3Rpb24iPT10eXBlb2YgdD90OnFSKHQpO3JldHVybiB0aGlzLnNlbGVjdCgoZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5hcHBlbmRDaGlsZChlLmFwcGx5KHRoaXMsYXJndW1lbnRzKSl9KSl9LGluc2VydDpmdW5jdGlvbiBrRCh0LGUpe3ZhciBuPSJmdW5jdGlvbiI9PXR5cGVvZiB0P3Q6cVIodCksaT1udWxsPT1lP056OiJmdW5jdGlvbiI9PXR5cGVvZiBlP2U6WFIoZSk7cmV0dXJuIHRoaXMuc2VsZWN0KChmdW5jdGlvbigpe3JldHVybiB0aGlzLmluc2VydEJlZm9yZShuLmFwcGx5KHRoaXMsYXJndW1lbnRzKSxpLmFwcGx5KHRoaXMsYXJndW1lbnRzKXx8bnVsbCl9KSl9LHJlbW92ZTpmdW5jdGlvbiBMRCgpe3JldHVybiB0aGlzLmVhY2goT3opfSxjbG9uZTpmdW5jdGlvbiBQRCh0KXtyZXR1cm4gdGhpcy5zZWxlY3QodD96ejpSeil9LGRhdHVtOmZ1bmN0aW9uIElEKHQpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoP3RoaXMucHJvcGVydHkoIl9fZGF0YV9fIix0KTp0aGlzLm5vZGUoKS5fX2RhdGFfX30sb246ZnVuY3Rpb24gTkQodCxlLG4pe3ZhciBpLHIsbz1Weih0KyIiKSxhPW8ubGVuZ3RoO2lmKCEoYXJndW1lbnRzLmxlbmd0aDwyKSl7Zm9yKHM9ZT9VejpqeixudWxsPT1uJiYobj0hMSksaT0wO2k8YTsrK2kpdGhpcy5lYWNoKHMob1tpXSxlLG4pKTtyZXR1cm4gdGhpc312YXIgcz10aGlzLm5vZGUoKS5fX29uO2lmKHMpZm9yKHZhciBsLGM9MCx1PXMubGVuZ3RoO2M8dTsrK2MpZm9yKGk9MCxsPXNbY107aTxhOysraSlpZigocj1vW2ldKS50eXBlPT09bC50eXBlJiZyLm5hbWU9PT1sLm5hbWUpcmV0dXJuIGwudmFsdWV9LGRpc3BhdGNoOmZ1bmN0aW9uIE9EKHQsZSl7cmV0dXJuIHRoaXMuZWFjaCgoImZ1bmN0aW9uIj09dHlwZW9mIGU/cXo6V3opKHQsZSkpfX07dmFyIFJEPS43LHpEPTEvUkQsREQ9IlxccyooWystXT9cXGQrKVxccyoiLEJEPSJcXHMqKFsrLV0/XFxkKlxcLj9cXGQrKD86W2VFXVsrLV0/XFxkKyk/KVxccyoiLEhEPSJcXHMqKFsrLV0/XFxkKlxcLj9cXGQrKD86W2VFXVsrLV0/XFxkKyk/KSVcXHMqIixGRD0vXiMoWzAtOWEtZl17Myw4fSkkLyxWRD1uZXcgUmVnRXhwKCJecmdiXFwoIitbREQsREQsRERdKyJcXCkkIiksakQ9bmV3IFJlZ0V4cCgiXnJnYlxcKCIrW0hELEhELEhEXSsiXFwpJCIpLFVEPW5ldyBSZWdFeHAoIl5yZ2JhXFwoIitbREQsREQsREQsQkRdKyJcXCkkIiksR0Q9bmV3IFJlZ0V4cCgiXnJnYmFcXCgiK1tIRCxIRCxIRCxCRF0rIlxcKSQiKSxXRD1uZXcgUmVnRXhwKCJeaHNsXFwoIitbQkQsSEQsSERdKyJcXCkkIikscUQ9bmV3IFJlZ0V4cCgiXmhzbGFcXCgiK1tCRCxIRCxIRCxCRF0rIlxcKSQiKSxZRD17YWxpY2VibHVlOjE1NzkyMzgzLGFudGlxdWV3aGl0ZToxNjQ0NDM3NSxhcXVhOjY1NTM1LGFxdWFtYXJpbmU6ODM4ODU2NCxhenVyZToxNTc5NDE3NSxiZWlnZToxNjExOTI2MCxiaXNxdWU6MTY3NzAyNDQsYmxhY2s6MCxibGFuY2hlZGFsbW9uZDoxNjc3MjA0NSxibHVlOjI1NSxibHVldmlvbGV0OjkwNTUyMDIsYnJvd246MTA4MjQyMzQsYnVybHl3b29kOjE0NTk2MjMxLGNhZGV0Ymx1ZTo2MjY2NTI4LGNoYXJ0cmV1c2U6ODM4ODM1MixjaG9jb2xhdGU6MTM3ODk0NzAsY29yYWw6MTY3NDQyNzIsY29ybmZsb3dlcmJsdWU6NjU5MTk4MSxjb3Juc2lsazoxNjc3NTM4OCxjcmltc29uOjE0NDIzMTAwLGN5YW46NjU1MzUsZGFya2JsdWU6MTM5LGRhcmtjeWFuOjM1NzIzLGRhcmtnb2xkZW5yb2Q6MTIwOTI5MzksZGFya2dyYXk6MTExMTkwMTcsZGFya2dyZWVuOjI1NjAwLGRhcmtncmV5OjExMTE5MDE3LGRhcmtraGFraToxMjQzMzI1OSxkYXJrbWFnZW50YTo5MTA5NjQzLGRhcmtvbGl2ZWdyZWVuOjU1OTc5OTksZGFya29yYW5nZToxNjc0NzUyMCxkYXJrb3JjaGlkOjEwMDQwMDEyLGRhcmtyZWQ6OTEwOTUwNCxkYXJrc2FsbW9uOjE1MzA4NDEwLGRhcmtzZWFncmVlbjo5NDE5OTE5LGRhcmtzbGF0ZWJsdWU6NDczNDM0NyxkYXJrc2xhdGVncmF5OjMxMDA0OTUsZGFya3NsYXRlZ3JleTozMTAwNDk1LGRhcmt0dXJxdW9pc2U6NTI5NDUsZGFya3Zpb2xldDo5Njk5NTM5LGRlZXBwaW5rOjE2NzE2OTQ3LGRlZXBza3libHVlOjQ5MTUxLGRpbWdyYXk6NjkwODI2NSxkaW1ncmV5OjY5MDgyNjUsZG9kZ2VyYmx1ZToyMDAzMTk5LGZpcmVicmljazoxMTY3NDE0NixmbG9yYWx3aGl0ZToxNjc3NTkyMCxmb3Jlc3RncmVlbjoyMjYzODQyLGZ1Y2hzaWE6MTY3MTE5MzUsZ2FpbnNib3JvOjE0NDc0NDYwLGdob3N0d2hpdGU6MTYzMTY2NzEsZ29sZDoxNjc2NjcyMCxnb2xkZW5yb2Q6MTQzMjkxMjAsZ3JheTo4NDIxNTA0LGdyZWVuOjMyNzY4LGdyZWVueWVsbG93OjExNDAzMDU1LGdyZXk6ODQyMTUwNCxob25leWRldzoxNTc5NDE2MCxob3RwaW5rOjE2NzM4NzQwLGluZGlhbnJlZDoxMzQ1ODUyNCxpbmRpZ286NDkxNTMzMCxpdm9yeToxNjc3NzIwMCxraGFraToxNTc4NzY2MCxsYXZlbmRlcjoxNTEzMjQxMCxsYXZlbmRlcmJsdXNoOjE2NzczMzY1LGxhd25ncmVlbjo4MTkwOTc2LGxlbW9uY2hpZmZvbjoxNjc3NTg4NSxsaWdodGJsdWU6MTEzOTMyNTQsbGlnaHRjb3JhbDoxNTc2MTUzNixsaWdodGN5YW46MTQ3NDU1OTksbGlnaHRnb2xkZW5yb2R5ZWxsb3c6MTY0NDgyMTAsbGlnaHRncmF5OjEzODgyMzIzLGxpZ2h0Z3JlZW46OTQ5ODI1NixsaWdodGdyZXk6MTM4ODIzMjMsbGlnaHRwaW5rOjE2NzU4NDY1LGxpZ2h0c2FsbW9uOjE2NzUyNzYyLGxpZ2h0c2VhZ3JlZW46MjE0Mjg5MCxsaWdodHNreWJsdWU6ODkwMDM0NixsaWdodHNsYXRlZ3JheTo3ODMzNzUzLGxpZ2h0c2xhdGVncmV5Ojc4MzM3NTMsbGlnaHRzdGVlbGJsdWU6MTE1ODQ3MzQsbGlnaHR5ZWxsb3c6MTY3NzcxODQsbGltZTo2NTI4MCxsaW1lZ3JlZW46MzMyOTMzMCxsaW5lbjoxNjQ0NTY3MCxtYWdlbnRhOjE2NzExOTM1LG1hcm9vbjo4Mzg4NjA4LG1lZGl1bWFxdWFtYXJpbmU6NjczNzMyMixtZWRpdW1ibHVlOjIwNSxtZWRpdW1vcmNoaWQ6MTIyMTE2NjcsbWVkaXVtcHVycGxlOjk2NjI2ODMsbWVkaXVtc2VhZ3JlZW46Mzk3ODA5NyxtZWRpdW1zbGF0ZWJsdWU6ODA4Nzc5MCxtZWRpdW1zcHJpbmdncmVlbjo2NDE1NCxtZWRpdW10dXJxdW9pc2U6NDc3MjMwMCxtZWRpdW12aW9sZXRyZWQ6MTMwNDcxNzMsbWlkbmlnaHRibHVlOjE2NDQ5MTIsbWludGNyZWFtOjE2MTIxODUwLG1pc3R5cm9zZToxNjc3MDI3Myxtb2NjYXNpbjoxNjc3MDIyOSxuYXZham93aGl0ZToxNjc2ODY4NSxuYXZ5OjEyOCxvbGRsYWNlOjE2NjQzNTU4LG9saXZlOjg0MjEzNzYsb2xpdmVkcmFiOjcwNDg3Mzksb3JhbmdlOjE2NzUzOTIwLG9yYW5nZXJlZDoxNjcyOTM0NCxvcmNoaWQ6MTQzMTU3MzQscGFsZWdvbGRlbnJvZDoxNTY1NzEzMCxwYWxlZ3JlZW46MTAwMjU4ODAscGFsZXR1cnF1b2lzZToxMTUyOTk2NixwYWxldmlvbGV0cmVkOjE0MzgxMjAzLHBhcGF5YXdoaXA6MTY3NzMwNzcscGVhY2hwdWZmOjE2NzY3NjczLHBlcnU6MTM0Njg5OTEscGluazoxNjc2MTAzNSxwbHVtOjE0NTI0NjM3LHBvd2RlcmJsdWU6MTE1OTE5MTAscHVycGxlOjgzODg3MzYscmViZWNjYXB1cnBsZTo2Njk3ODgxLHJlZDoxNjcxMTY4MCxyb3N5YnJvd246MTIzNTc1MTkscm95YWxibHVlOjQyODY5NDUsc2FkZGxlYnJvd246OTEyNzE4NyxzYWxtb246MTY0MTY4ODIsc2FuZHlicm93bjoxNjAzMjg2NCxzZWFncmVlbjozMDUwMzI3LHNlYXNoZWxsOjE2Nzc0NjM4LHNpZW5uYToxMDUwNjc5NyxzaWx2ZXI6MTI2MzIyNTYsc2t5Ymx1ZTo4OTAwMzMxLHNsYXRlYmx1ZTo2OTcwMDYxLHNsYXRlZ3JheTo3MzcyOTQ0LHNsYXRlZ3JleTo3MzcyOTQ0LHNub3c6MTY3NzU5MzAsc3ByaW5nZ3JlZW46NjU0MDcsc3RlZWxibHVlOjQ2MjA5ODAsdGFuOjEzODA4NzgwLHRlYWw6MzI4OTYsdGhpc3RsZToxNDIwNDg4OCx0b21hdG86MTY3MzcwOTUsdHVycXVvaXNlOjQyNTE4NTYsdmlvbGV0OjE1NjMxMDg2LHdoZWF0OjE2MTEzMzMxLHdoaXRlOjE2Nzc3MjE1LHdoaXRlc21va2U6MTYxMTkyODUseWVsbG93OjE2Nzc2OTYwLHllbGxvd2dyZWVuOjEwMTQ1MDc0fTtmdW5jdGlvbiBYRCgpe3JldHVybiB0aGlzLnJnYigpLmZvcm1hdEhleCgpfWZ1bmN0aW9uICREKCl7cmV0dXJuIHRoaXMucmdiKCkuZm9ybWF0UmdiKCl9ZnVuY3Rpb24gS0QodCl7dmFyIGUsbjtyZXR1cm4gdD0odCsiIikudHJpbSgpLnRvTG93ZXJDYXNlKCksKGU9RkQuZXhlYyh0KSk/KG49ZVsxXS5sZW5ndGgsZT1wYXJzZUludChlWzFdLDE2KSw2PT09bj9aRChlKTozPT09bj9uZXcgZUIoZT4+OCYxNXxlPj40JjI0MCxlPj40JjE1fDI0MCZlLCgxNSZlKTw8NHwxNSZlLDEpOjg9PT1uP0pEKGU+PjI0JjI1NSxlPj4xNiYyNTUsZT4+OCYyNTUsKDI1NSZlKS8yNTUpOjQ9PT1uP0pEKGU+PjEyJjE1fGU+PjgmMjQwLGU+PjgmMTV8ZT4+NCYyNDAsZT4+NCYxNXwyNDAmZSwoKDE1JmUpPDw0fDE1JmUpLzI1NSk6bnVsbCk6KGU9VkQuZXhlYyh0KSk/bmV3IGVCKGVbMV0sZVsyXSxlWzNdLDEpOihlPWpELmV4ZWModCkpP25ldyBlQigyNTUqZVsxXS8xMDAsMjU1KmVbMl0vMTAwLDI1NSplWzNdLzEwMCwxKTooZT1VRC5leGVjKHQpKT9KRChlWzFdLGVbMl0sZVszXSxlWzRdKTooZT1HRC5leGVjKHQpKT9KRCgyNTUqZVsxXS8xMDAsMjU1KmVbMl0vMTAwLDI1NSplWzNdLzEwMCxlWzRdKTooZT1XRC5leGVjKHQpKT9vQihlWzFdLGVbMl0vMTAwLGVbM10vMTAwLDEpOihlPXFELmV4ZWModCkpP29CKGVbMV0sZVsyXS8xMDAsZVszXS8xMDAsZVs0XSk6WUQuaGFzT3duUHJvcGVydHkodCk/WkQoWURbdF0pOiJ0cmFuc3BhcmVudCI9PT10P25ldyBlQihOYU4sTmFOLE5hTiwwKTpudWxsfWZ1bmN0aW9uIFpEKHQpe3JldHVybiBuZXcgZUIodD4+MTYmMjU1LHQ+PjgmMjU1LDI1NSZ0LDEpfWZ1bmN0aW9uIEpEKHQsZSxuLGkpe3JldHVybiBpPD0wJiYodD1lPW49TmFOKSxuZXcgZUIodCxlLG4saSl9ZnVuY3Rpb24gUUQodCl7cmV0dXJuIHQgaW5zdGFuY2VvZiBpRHx8KHQ9S0QodCkpLHQ/bmV3IGVCKCh0PXQucmdiKCkpLnIsdC5nLHQuYix0Lm9wYWNpdHkpOm5ldyBlQn1mdW5jdGlvbiB0Qih0LGUsbixpKXtyZXR1cm4gMT09PWFyZ3VtZW50cy5sZW5ndGg/UUQodCk6bmV3IGVCKHQsZSxuLG51bGw9PWk/MTppKX1mdW5jdGlvbiBlQih0LGUsbixpKXt0aGlzLnI9K3QsdGhpcy5nPStlLHRoaXMuYj0rbix0aGlzLm9wYWNpdHk9K2l9ZnVuY3Rpb24gbkIoKXtyZXR1cm4iIyIrckIodGhpcy5yKStyQih0aGlzLmcpK3JCKHRoaXMuYil9ZnVuY3Rpb24gaUIoKXt2YXIgdD10aGlzLm9wYWNpdHk7cmV0dXJuKDE9PT0odD1pc05hTih0KT8xOk1hdGgubWF4KDAsTWF0aC5taW4oMSx0KSkpPyJyZ2IoIjoicmdiYSgiKStNYXRoLm1heCgwLE1hdGgubWluKDI1NSxNYXRoLnJvdW5kKHRoaXMucil8fDApKSsiLCAiK01hdGgubWF4KDAsTWF0aC5taW4oMjU1LE1hdGgucm91bmQodGhpcy5nKXx8MCkpKyIsICIrTWF0aC5tYXgoMCxNYXRoLm1pbigyNTUsTWF0aC5yb3VuZCh0aGlzLmIpfHwwKSkrKDE9PT10PyIpIjoiLCAiK3QrIikiKX1mdW5jdGlvbiByQih0KXtyZXR1cm4oKHQ9TWF0aC5tYXgoMCxNYXRoLm1pbigyNTUsTWF0aC5yb3VuZCh0KXx8MCkpKTwxNj8iMCI6IiIpK3QudG9TdHJpbmcoMTYpfWZ1bmN0aW9uIG9CKHQsZSxuLGkpe3JldHVybiBpPD0wP3Q9ZT1uPU5hTjpuPD0wfHxuPj0xP3Q9ZT1OYU46ZTw9MCYmKHQ9TmFOKSxuZXcgc0IodCxlLG4saSl9ZnVuY3Rpb24gYUIodCl7aWYodCBpbnN0YW5jZW9mIHNCKXJldHVybiBuZXcgc0IodC5oLHQucyx0LmwsdC5vcGFjaXR5KTtpZih0IGluc3RhbmNlb2YgaUR8fCh0PUtEKHQpKSwhdClyZXR1cm4gbmV3IHNCO2lmKHQgaW5zdGFuY2VvZiBzQilyZXR1cm4gdDt2YXIgZT0odD10LnJnYigpKS5yLzI1NSxuPXQuZy8yNTUsaT10LmIvMjU1LHI9TWF0aC5taW4oZSxuLGkpLG89TWF0aC5tYXgoZSxuLGkpLGE9TmFOLHM9by1yLGw9KG8rcikvMjtyZXR1cm4gcz8oYT1lPT09bz8obi1pKS9zKzYqKG48aSk6bj09PW8/KGktZSkvcysyOihlLW4pL3MrNCxzLz1sPC41P28rcjoyLW8tcixhKj02MCk6cz1sPjAmJmw8MT8wOmEsbmV3IHNCKGEscyxsLHQub3BhY2l0eSl9ZnVuY3Rpb24gc0IodCxlLG4saSl7dGhpcy5oPSt0LHRoaXMucz0rZSx0aGlzLmw9K24sdGhpcy5vcGFjaXR5PStpfWZ1bmN0aW9uIGxCKHQsZSxuKXtyZXR1cm4gMjU1Kih0PDYwP2UrKG4tZSkqdC82MDp0PDE4MD9uOnQ8MjQwP2UrKG4tZSkqKDI0MC10KS82MDplKX1mdW5jdGlvbiBjQih0KXtyZXR1cm4gZnVuY3Rpb24oKXtyZXR1cm4gdH19ZnVuY3Rpb24gdUIodCxlKXt2YXIgbj1lLXQ7cmV0dXJuIG4/KGZ1bmN0aW9uIGkodCxlKXtyZXR1cm4gZnVuY3Rpb24obil7cmV0dXJuIHQrbiplfX0pKHQsbik6Y0IoaXNOYU4odCk/ZTp0KX1lRChpRCxLRCx7Y29weTpmdW5jdGlvbih0KXtyZXR1cm4gT2JqZWN0LmFzc2lnbihuZXcgdGhpcy5jb25zdHJ1Y3Rvcix0aGlzLHQpfSxkaXNwbGF5YWJsZTpmdW5jdGlvbigpe3JldHVybiB0aGlzLnJnYigpLmRpc3BsYXlhYmxlKCl9LGhleDpYRCxmb3JtYXRIZXg6WEQsZm9ybWF0SHNsOmZ1bmN0aW9uIGhCKCl7cmV0dXJuIGFCKHRoaXMpLmZvcm1hdEhzbCgpfSxmb3JtYXRSZ2I6JEQsdG9TdHJpbmc6JER9KSxlRChlQix0QixuRChpRCx7YnJpZ2h0ZXI6ZnVuY3Rpb24odCl7cmV0dXJuIHQ9bnVsbD09dD96RDpNYXRoLnBvdyh6RCx0KSxuZXcgZUIodGhpcy5yKnQsdGhpcy5nKnQsdGhpcy5iKnQsdGhpcy5vcGFjaXR5KX0sZGFya2VyOmZ1bmN0aW9uKHQpe3JldHVybiB0PW51bGw9PXQ/UkQ6TWF0aC5wb3coUkQsdCksbmV3IGVCKHRoaXMucip0LHRoaXMuZyp0LHRoaXMuYip0LHRoaXMub3BhY2l0eSl9LHJnYjpmdW5jdGlvbigpe3JldHVybiB0aGlzfSxkaXNwbGF5YWJsZTpmdW5jdGlvbigpe3JldHVybi0uNTw9dGhpcy5yJiZ0aGlzLnI8MjU1LjUmJi0uNTw9dGhpcy5nJiZ0aGlzLmc8MjU1LjUmJi0uNTw9dGhpcy5iJiZ0aGlzLmI8MjU1LjUmJjA8PXRoaXMub3BhY2l0eSYmdGhpcy5vcGFjaXR5PD0xfSxoZXg6bkIsZm9ybWF0SGV4Om5CLGZvcm1hdFJnYjppQix0b1N0cmluZzppQn0pKSxlRChzQiwoZnVuY3Rpb24gZEIodCxlLG4saSl7cmV0dXJuIDE9PT1hcmd1bWVudHMubGVuZ3RoP2FCKHQpOm5ldyBzQih0LGUsbixudWxsPT1pPzE6aSl9KSxuRChpRCx7YnJpZ2h0ZXI6ZnVuY3Rpb24odCl7cmV0dXJuIHQ9bnVsbD09dD96RDpNYXRoLnBvdyh6RCx0KSxuZXcgc0IodGhpcy5oLHRoaXMucyx0aGlzLmwqdCx0aGlzLm9wYWNpdHkpfSxkYXJrZXI6ZnVuY3Rpb24odCl7cmV0dXJuIHQ9bnVsbD09dD9SRDpNYXRoLnBvdyhSRCx0KSxuZXcgc0IodGhpcy5oLHRoaXMucyx0aGlzLmwqdCx0aGlzLm9wYWNpdHkpfSxyZ2I6ZnVuY3Rpb24oKXt2YXIgdD10aGlzLmglMzYwKzM2MCoodGhpcy5oPDApLGU9aXNOYU4odCl8fGlzTmFOKHRoaXMucyk/MDp0aGlzLnMsbj10aGlzLmwsaT1uKyhuPC41P246MS1uKSplLHI9MipuLWk7cmV0dXJuIG5ldyBlQihsQih0Pj0yNDA/dC0yNDA6dCsxMjAscixpKSxsQih0LHIsaSksbEIodDwxMjA/dCsyNDA6dC0xMjAscixpKSx0aGlzLm9wYWNpdHkpfSxkaXNwbGF5YWJsZTpmdW5jdGlvbigpe3JldHVybigwPD10aGlzLnMmJnRoaXMuczw9MXx8aXNOYU4odGhpcy5zKSkmJjA8PXRoaXMubCYmdGhpcy5sPD0xJiYwPD10aGlzLm9wYWNpdHkmJnRoaXMub3BhY2l0eTw9MX0sZm9ybWF0SHNsOmZ1bmN0aW9uKCl7dmFyIHQ9dGhpcy5vcGFjaXR5O3JldHVybigxPT09KHQ9aXNOYU4odCk/MTpNYXRoLm1heCgwLE1hdGgubWluKDEsdCkpKT8iaHNsKCI6ImhzbGEoIikrKHRoaXMuaHx8MCkrIiwgIisxMDAqKHRoaXMuc3x8MCkrIiUsICIrMTAwKih0aGlzLmx8fDApKyIlIisoMT09PXQ/IikiOiIsICIrdCsiKSIpfX0pKTt2YXIgcEI9KGZ1bmN0aW9uIHQoZSl7dmFyIG49KGZ1bmN0aW9uIGkodCl7cmV0dXJuIDE9PSh0PSt0KT91QjpmdW5jdGlvbihlLG4pe3JldHVybiBuLWU/KGZ1bmN0aW9uIGkodCxlLG4pe3JldHVybiB0PU1hdGgucG93KHQsbiksZT1NYXRoLnBvdyhlLG4pLXQsbj0xL24sZnVuY3Rpb24oaSl7cmV0dXJuIE1hdGgucG93KHQraSplLG4pfX0pKGUsbix0KTpjQihpc05hTihlKT9uOmUpfX0pKGUpO2Z1bmN0aW9uIHIodCxlKXt2YXIgaT1uKCh0PXRCKHQpKS5yLChlPXRCKGUpKS5yKSxyPW4odC5nLGUuZyksbz1uKHQuYixlLmIpLGE9dUIodC5vcGFjaXR5LGUub3BhY2l0eSk7cmV0dXJuIGZ1bmN0aW9uKGUpe3JldHVybiB0LnI9aShlKSx0Lmc9cihlKSx0LmI9byhlKSx0Lm9wYWNpdHk9YShlKSx0KyIifX1yZXR1cm4gci5nYW1tYT10LHJ9KSgxKTtmdW5jdGlvbiBmQih0LGUpe2V8fChlPVtdKTt2YXIgbixpPXQ/TWF0aC5taW4oZS5sZW5ndGgsdC5sZW5ndGgpOjAscj1lLnNsaWNlKCk7cmV0dXJuIGZ1bmN0aW9uKG8pe2ZvcihuPTA7bjxpOysrbilyW25dPXRbbl0qKDEtbykrZVtuXSpvO3JldHVybiByfX1mdW5jdGlvbiBtQih0LGUpe3ZhciBuLGk9ZT9lLmxlbmd0aDowLHI9dD9NYXRoLm1pbihpLHQubGVuZ3RoKTowLG89bmV3IEFycmF5KHIpLGE9bmV3IEFycmF5KGkpO2ZvcihuPTA7bjxyOysrbilvW25dPXdCKHRbbl0sZVtuXSk7Zm9yKDtuPGk7KytuKWFbbl09ZVtuXTtyZXR1cm4gZnVuY3Rpb24odCl7Zm9yKG49MDtuPHI7KytuKWFbbl09b1tuXSh0KTtyZXR1cm4gYX19ZnVuY3Rpb24gZ0IodCxlKXt2YXIgbj1uZXcgRGF0ZTtyZXR1cm4gdD0rdCxlPStlLGZ1bmN0aW9uKGkpe3JldHVybiBuLnNldFRpbWUodCooMS1pKStlKmkpLG59fWZ1bmN0aW9uIF9CKHQsZSl7cmV0dXJuIHQ9K3QsZT0rZSxmdW5jdGlvbihuKXtyZXR1cm4gdCooMS1uKStlKm59fWZ1bmN0aW9uIHlCKHQsZSl7dmFyIG4saT17fSxyPXt9O2ZvcihuIGluIG51bGwhPT10JiYib2JqZWN0Ij09dHlwZW9mIHR8fCh0PXt9KSxudWxsIT09ZSYmIm9iamVjdCI9PXR5cGVvZiBlfHwoZT17fSksZSluIGluIHQ/aVtuXT13Qih0W25dLGVbbl0pOnJbbl09ZVtuXTtyZXR1cm4gZnVuY3Rpb24odCl7Zm9yKG4gaW4gaSlyW25dPWlbbl0odCk7cmV0dXJuIHJ9fXZhciB2Qj0vWy0rXT8oPzpcZCtcLj9cZCp8XC4/XGQrKSg/OltlRV1bLStdP1xkKyk/L2csYkI9bmV3IFJlZ0V4cCh2Qi5zb3VyY2UsImciKTtmdW5jdGlvbiB4Qih0LGUpe3ZhciBuLGkscixvPXZCLmxhc3RJbmRleD1iQi5sYXN0SW5kZXg9MCxhPS0xLHM9W10sbD1bXTtmb3IodCs9IiIsZSs9IiI7KG49dkIuZXhlYyh0KSkmJihpPWJCLmV4ZWMoZSkpOykocj1pLmluZGV4KT5vJiYocj1lLnNsaWNlKG8sciksc1thXT9zW2FdKz1yOnNbKythXT1yKSwobj1uWzBdKT09PShpPWlbMF0pP3NbYV0/c1thXSs9aTpzWysrYV09aTooc1srK2FdPW51bGwsbC5wdXNoKHtpOmEseDpfQihuLGkpfSkpLG89YkIubGFzdEluZGV4O3JldHVybiBvPGUubGVuZ3RoJiYocj1lLnNsaWNlKG8pLHNbYV0/c1thXSs9cjpzWysrYV09cikscy5sZW5ndGg8Mj9sWzBdPyhmdW5jdGlvbiBjKHQpe3JldHVybiBmdW5jdGlvbihlKXtyZXR1cm4gdChlKSsiIn19KShsWzBdLngpOihmdW5jdGlvbiB1KHQpe3JldHVybiBmdW5jdGlvbigpe3JldHVybiB0fX0pKGUpOihlPWwubGVuZ3RoLGZ1bmN0aW9uKHQpe2Zvcih2YXIgbixpPTA7aTxlOysraSlzWyhuPWxbaV0pLmldPW4ueCh0KTtyZXR1cm4gcy5qb2luKCIiKX0pfWZ1bmN0aW9uIHdCKHQsZSl7dmFyIG4saT10eXBlb2YgZTtyZXR1cm4gbnVsbD09ZXx8ImJvb2xlYW4iPT09aT9jQihlKTooIm51bWJlciI9PT1pP19COiJzdHJpbmciPT09aT8obj1LRChlKSk/KGU9bixwQik6eEI6ZSBpbnN0YW5jZW9mIEtEP3BCOmUgaW5zdGFuY2VvZiBEYXRlP2dCOihmdW5jdGlvbiByKHQpe3JldHVybiBBcnJheUJ1ZmZlci5pc1ZpZXcodCkmJiEodCBpbnN0YW5jZW9mIERhdGFWaWV3KX0pKGUpP2ZCOkFycmF5LmlzQXJyYXkoZSk/bUI6ImZ1bmN0aW9uIiE9dHlwZW9mIGUudmFsdWVPZiYmImZ1bmN0aW9uIiE9dHlwZW9mIGUudG9TdHJpbmd8fGlzTmFOKGUpP3lCOl9CKSh0LGUpfXZhciBTQixNQixFQixUQixBQj0xODAvTWF0aC5QSSxDQj17dHJhbnNsYXRlWDowLHRyYW5zbGF0ZVk6MCxyb3RhdGU6MCxza2V3WDowLHNjYWxlWDoxLHNjYWxlWToxfTtmdW5jdGlvbiBrQih0LGUsbixpLHIsbyl7dmFyIGEscyxsO3JldHVybihhPU1hdGguc3FydCh0KnQrZSplKSkmJih0Lz1hLGUvPWEpLChsPXQqbitlKmkpJiYobi09dCpsLGktPWUqbCksKHM9TWF0aC5zcXJ0KG4qbitpKmkpKSYmKG4vPXMsaS89cyxsLz1zKSx0Kmk8ZSpuJiYodD0tdCxlPS1lLGw9LWwsYT0tYSkse3RyYW5zbGF0ZVg6cix0cmFuc2xhdGVZOm8scm90YXRlOk1hdGguYXRhbjIoZSx0KSpBQixza2V3WDpNYXRoLmF0YW4obCkqQUIsc2NhbGVYOmEsc2NhbGVZOnN9fWZ1bmN0aW9uIExCKHQsZSxuLGkpe2Z1bmN0aW9uIHIodCl7cmV0dXJuIHQubGVuZ3RoP3QucG9wKCkrIiAiOiIifXJldHVybiBmdW5jdGlvbihvLGEpe3ZhciBzPVtdLGw9W107cmV0dXJuIG89dChvKSxhPXQoYSksKGZ1bmN0aW9uIGModCxpLHIsbyxhLHMpe2lmKHQhPT1yfHxpIT09byl7dmFyIGw9YS5wdXNoKCJ0cmFuc2xhdGUoIixudWxsLGUsbnVsbCxuKTtzLnB1c2goe2k6bC00LHg6X0IodCxyKX0se2k6bC0yLHg6X0IoaSxvKX0pfWVsc2Uocnx8bykmJmEucHVzaCgidHJhbnNsYXRlKCIrcitlK28rbil9KShvLnRyYW5zbGF0ZVgsby50cmFuc2xhdGVZLGEudHJhbnNsYXRlWCxhLnRyYW5zbGF0ZVkscyxsKSwoZnVuY3Rpb24gdSh0LGUsbixvKXt0IT09ZT8odC1lPjE4MD9lKz0zNjA6ZS10PjE4MCYmKHQrPTM2MCksby5wdXNoKHtpOm4ucHVzaChyKG4pKyJyb3RhdGUoIixudWxsLGkpLTIseDpfQih0LGUpfSkpOmUmJm4ucHVzaChyKG4pKyJyb3RhdGUoIitlK2kpfSkoby5yb3RhdGUsYS5yb3RhdGUscyxsKSwoZnVuY3Rpb24gaCh0LGUsbixvKXt0IT09ZT9vLnB1c2goe2k6bi5wdXNoKHIobikrInNrZXdYKCIsbnVsbCxpKS0yLHg6X0IodCxlKX0pOmUmJm4ucHVzaChyKG4pKyJza2V3WCgiK2UraSl9KShvLnNrZXdYLGEuc2tld1gscyxsKSwoZnVuY3Rpb24gZCh0LGUsbixpLG8sYSl7aWYodCE9PW58fGUhPT1pKXt2YXIgcz1vLnB1c2gocihvKSsic2NhbGUoIixudWxsLCIsIixudWxsLCIpIik7YS5wdXNoKHtpOnMtNCx4Ol9CKHQsbil9LHtpOnMtMix4Ol9CKGUsaSl9KX1lbHNlIDE9PT1uJiYxPT09aXx8by5wdXNoKHIobykrInNjYWxlKCIrbisiLCIraSsiKSIpfSkoby5zY2FsZVgsby5zY2FsZVksYS5zY2FsZVgsYS5zY2FsZVkscyxsKSxvPWE9bnVsbCxmdW5jdGlvbih0KXtmb3IodmFyIGUsbj0tMSxpPWwubGVuZ3RoOysrbjxpOylzWyhlPWxbbl0pLmldPWUueCh0KTtyZXR1cm4gcy5qb2luKCIiKX19fXZhciBQQixJQixOQj1MQigoZnVuY3Rpb24gT0IodCl7cmV0dXJuIm5vbmUiPT09dD9DQjooU0J8fChTQj1kb2N1bWVudC5jcmVhdGVFbGVtZW50KCJESVYiKSxNQj1kb2N1bWVudC5kb2N1bWVudEVsZW1lbnQsRUI9ZG9jdW1lbnQuZGVmYXVsdFZpZXcpLFNCLnN0eWxlLnRyYW5zZm9ybT10LHQ9RUIuZ2V0Q29tcHV0ZWRTdHlsZShNQi5hcHBlbmRDaGlsZChTQiksbnVsbCkuZ2V0UHJvcGVydHlWYWx1ZSgidHJhbnNmb3JtIiksTUIucmVtb3ZlQ2hpbGQoU0IpLGtCKCsodD10LnNsaWNlKDcsLTEpLnNwbGl0KCIsIikpWzBdLCt0WzFdLCt0WzJdLCt0WzNdLCt0WzRdLCt0WzVdKSl9KSwicHgsICIsInB4KSIsImRlZykiKSxSQj1MQigoZnVuY3Rpb24gekIodCl7cmV0dXJuIG51bGw9PXQ/Q0I6KFRCfHwoVEI9ZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIsImciKSksVEIuc2V0QXR0cmlidXRlKCJ0cmFuc2Zvcm0iLHQpLCh0PVRCLnRyYW5zZm9ybS5iYXNlVmFsLmNvbnNvbGlkYXRlKCkpP2tCKCh0PXQubWF0cml4KS5hLHQuYix0LmMsdC5kLHQuZSx0LmYpOkNCKX0pLCIsICIsIikiLCIpIiksREI9MCxCQj0wLEhCPTAsRkI9MCxWQj0wLGpCPTAsVUI9Im9iamVjdCI9PXR5cGVvZiBwZXJmb3JtYW5jZSYmcGVyZm9ybWFuY2Uubm93P3BlcmZvcm1hbmNlOkRhdGUsR0I9Im9iamVjdCI9PXR5cGVvZiB3aW5kb3cmJndpbmRvdy5yZXF1ZXN0QW5pbWF0aW9uRnJhbWU/d2luZG93LnJlcXVlc3RBbmltYXRpb25GcmFtZS5iaW5kKHdpbmRvdyk6ZnVuY3Rpb24odCl7c2V0VGltZW91dCh0LDE3KX07ZnVuY3Rpb24gV0IoKXtyZXR1cm4gVkJ8fChHQihxQiksVkI9VUIubm93KCkrakIpfWZ1bmN0aW9uIHFCKCl7VkI9MH1mdW5jdGlvbiBZQigpe3RoaXMuX2NhbGw9dGhpcy5fdGltZT10aGlzLl9uZXh0PW51bGx9ZnVuY3Rpb24gWEIodCxlLG4pe3ZhciBpPW5ldyBZQjtyZXR1cm4gaS5yZXN0YXJ0KHQsZSxuKSxpfWZ1bmN0aW9uICRCKCl7VkI9KEZCPVVCLm5vdygpKStqQixEQj1CQj0wO3RyeXshKGZ1bmN0aW9uIHQoKXtXQigpLCsrREI7Zm9yKHZhciB0LGU9UEI7ZTspKHQ9VkItZS5fdGltZSk+PTAmJmUuX2NhbGwuY2FsbChudWxsLHQpLGU9ZS5fbmV4dDstLURCfSkoKX1maW5hbGx5e0RCPTAsKGZ1bmN0aW9uIGUoKXtmb3IodmFyIHQsZSxuPVBCLGk9MS8wO247KW4uX2NhbGw/KGk+bi5fdGltZSYmKGk9bi5fdGltZSksdD1uLG49bi5fbmV4dCk6KGU9bi5fbmV4dCxuLl9uZXh0PW51bGwsbj10P3QuX25leHQ9ZTpQQj1lKTtJQj10LFpCKGkpfSkoKSxWQj0wfX1mdW5jdGlvbiBLQigpe3ZhciB0PVVCLm5vdygpLGU9dC1GQjtlPjFlMyYmKGpCLT1lLEZCPXQpfWZ1bmN0aW9uIFpCKHQpe0RCfHwoQkImJihCQj1jbGVhclRpbWVvdXQoQkIpKSx0LVZCPjI0Pyh0PDEvMCYmKEJCPXNldFRpbWVvdXQoJEIsdC1VQi5ub3coKS1qQikpLEhCJiYoSEI9Y2xlYXJJbnRlcnZhbChIQikpKTooSEJ8fChGQj1VQi5ub3coKSxIQj1zZXRJbnRlcnZhbChLQiwxZTMpKSxEQj0xLEdCKCRCKSkpfWZ1bmN0aW9uIEpCKHQsZSxuKXt2YXIgaT1uZXcgWUI7cmV0dXJuIGkucmVzdGFydCgoZnVuY3Rpb24obil7aS5zdG9wKCksdChuK2UpfSksZT1udWxsPT1lPzA6K2UsbiksaX1ZQi5wcm90b3R5cGU9WEIucHJvdG90eXBlPXtjb25zdHJ1Y3RvcjpZQixyZXN0YXJ0OmZ1bmN0aW9uKHQsZSxuKXtpZigiZnVuY3Rpb24iIT10eXBlb2YgdCl0aHJvdyBuZXcgVHlwZUVycm9yKCJjYWxsYmFjayBpcyBub3QgYSBmdW5jdGlvbiIpO249KG51bGw9PW4/V0IoKTorbikrKG51bGw9PWU/MDorZSksdGhpcy5fbmV4dHx8SUI9PT10aGlzfHwoSUI/SUIuX25leHQ9dGhpczpQQj10aGlzLElCPXRoaXMpLHRoaXMuX2NhbGw9dCx0aGlzLl90aW1lPW4sWkIoKX0sc3RvcDpmdW5jdGlvbigpe3RoaXMuX2NhbGwmJih0aGlzLl9jYWxsPW51bGwsdGhpcy5fdGltZT0xLzAsWkIoKSl9fTt2YXIgUUI9elIoInN0YXJ0IiwiZW5kIiwiY2FuY2VsIiwiaW50ZXJydXB0IiksdEg9W107ZnVuY3Rpb24gZUgodCxlLG4saSxyLG8pe3ZhciBhPXQuX190cmFuc2l0aW9uO2lmKGEpe2lmKG4gaW4gYSlyZXR1cm59ZWxzZSB0Ll9fdHJhbnNpdGlvbj17fTshKGZ1bmN0aW9uIHModCxlLG4pe3ZhciBpLHI9dC5fX3RyYW5zaXRpb247ZnVuY3Rpb24gbyhsKXt2YXIgYyx1LGgsZDtpZigxIT09bi5zdGF0ZSlyZXR1cm4gcygpO2ZvcihjIGluIHIpaWYoKGQ9cltjXSkubmFtZT09PW4ubmFtZSl7aWYoMz09PWQuc3RhdGUpcmV0dXJuIEpCKG8pOzQ9PT1kLnN0YXRlPyhkLnN0YXRlPTYsZC50aW1lci5zdG9wKCksZC5vbi5jYWxsKCJpbnRlcnJ1cHQiLHQsdC5fX2RhdGFfXyxkLmluZGV4LGQuZ3JvdXApLGRlbGV0ZSByW2NdKTorYzxlJiYoZC5zdGF0ZT02LGQudGltZXIuc3RvcCgpLGQub24uY2FsbCgiY2FuY2VsIix0LHQuX19kYXRhX18sZC5pbmRleCxkLmdyb3VwKSxkZWxldGUgcltjXSl9aWYoSkIoKGZ1bmN0aW9uKCl7Mz09PW4uc3RhdGUmJihuLnN0YXRlPTQsbi50aW1lci5yZXN0YXJ0KGEsbi5kZWxheSxuLnRpbWUpLGEobCkpfSkpLG4uc3RhdGU9MixuLm9uLmNhbGwoInN0YXJ0Iix0LHQuX19kYXRhX18sbi5pbmRleCxuLmdyb3VwKSwyPT09bi5zdGF0ZSl7Zm9yKG4uc3RhdGU9MyxpPW5ldyBBcnJheShoPW4udHdlZW4ubGVuZ3RoKSxjPTAsdT0tMTtjPGg7KytjKShkPW4udHdlZW5bY10udmFsdWUuY2FsbCh0LHQuX19kYXRhX18sbi5pbmRleCxuLmdyb3VwKSkmJihpWysrdV09ZCk7aS5sZW5ndGg9dSsxfX1mdW5jdGlvbiBhKGUpe2Zvcih2YXIgcj1lPG4uZHVyYXRpb24/bi5lYXNlLmNhbGwobnVsbCxlL24uZHVyYXRpb24pOihuLnRpbWVyLnJlc3RhcnQocyksbi5zdGF0ZT01LDEpLG89LTEsYT1pLmxlbmd0aDsrK288YTspaVtvXS5jYWxsKHQscik7NT09PW4uc3RhdGUmJihuLm9uLmNhbGwoImVuZCIsdCx0Ll9fZGF0YV9fLG4uaW5kZXgsbi5ncm91cCkscygpKX1mdW5jdGlvbiBzKCl7Zm9yKHZhciBpIGluIG4uc3RhdGU9NixuLnRpbWVyLnN0b3AoKSxkZWxldGUgcltlXSxyKXJldHVybjtkZWxldGUgdC5fX3RyYW5zaXRpb259cltlXT1uLG4udGltZXI9WEIoKGZ1bmN0aW9uIGwodCl7bi5zdGF0ZT0xLG4udGltZXIucmVzdGFydChvLG4uZGVsYXksbi50aW1lKSxuLmRlbGF5PD10JiZvKHQtbi5kZWxheSl9KSwwLG4udGltZSl9KSh0LG4se25hbWU6ZSxpbmRleDppLGdyb3VwOnIsb246UUIsdHdlZW46dEgsdGltZTpvLnRpbWUsZGVsYXk6by5kZWxheSxkdXJhdGlvbjpvLmR1cmF0aW9uLGVhc2U6by5lYXNlLHRpbWVyOm51bGwsc3RhdGU6MH0pfWZ1bmN0aW9uIG5IKHQsZSl7dmFyIG49ckgodCxlKTtpZihuLnN0YXRlPjApdGhyb3cgbmV3IEVycm9yKCJ0b28gbGF0ZTsgYWxyZWFkeSBzY2hlZHVsZWQiKTtyZXR1cm4gbn1mdW5jdGlvbiBpSCh0LGUpe3ZhciBuPXJIKHQsZSk7aWYobi5zdGF0ZT4zKXRocm93IG5ldyBFcnJvcigidG9vIGxhdGU7IGFscmVhZHkgcnVubmluZyIpO3JldHVybiBufWZ1bmN0aW9uIHJIKHQsZSl7dmFyIG49dC5fX3RyYW5zaXRpb247aWYoIW58fCEobj1uW2VdKSl0aHJvdyBuZXcgRXJyb3IoInRyYW5zaXRpb24gbm90IGZvdW5kIik7cmV0dXJuIG59ZnVuY3Rpb24gb0godCxlKXt2YXIgbixpLHIsbz10Ll9fdHJhbnNpdGlvbixhPSEwO2lmKG8pe2ZvcihyIGluIGU9bnVsbD09ZT9udWxsOmUrIiIsbykobj1vW3JdKS5uYW1lPT09ZT8oaT1uLnN0YXRlPjImJm4uc3RhdGU8NSxuLnN0YXRlPTYsbi50aW1lci5zdG9wKCksbi5vbi5jYWxsKGk/ImludGVycnVwdCI6ImNhbmNlbCIsdCx0Ll9fZGF0YV9fLG4uaW5kZXgsbi5ncm91cCksZGVsZXRlIG9bcl0pOmE9ITE7YSYmZGVsZXRlIHQuX190cmFuc2l0aW9ufX1mdW5jdGlvbiBhSCh0LGUpe3ZhciBuLGk7cmV0dXJuIGZ1bmN0aW9uKCl7dmFyIHI9aUgodGhpcyx0KSxvPXIudHdlZW47aWYobyE9PW4pZm9yKHZhciBhPTAscz0oaT1uPW8pLmxlbmd0aDthPHM7KythKWlmKGlbYV0ubmFtZT09PWUpeyhpPWkuc2xpY2UoKSkuc3BsaWNlKGEsMSk7YnJlYWt9ci50d2Vlbj1pfX1mdW5jdGlvbiBzSCh0LGUsbil7dmFyIGkscjtpZigiZnVuY3Rpb24iIT10eXBlb2Ygbil0aHJvdyBuZXcgRXJyb3I7cmV0dXJuIGZ1bmN0aW9uKCl7dmFyIG89aUgodGhpcyx0KSxhPW8udHdlZW47aWYoYSE9PWkpe3I9KGk9YSkuc2xpY2UoKTtmb3IodmFyIHM9e25hbWU6ZSx2YWx1ZTpufSxsPTAsYz1yLmxlbmd0aDtsPGM7KytsKWlmKHJbbF0ubmFtZT09PWUpe3JbbF09czticmVha31sPT09YyYmci5wdXNoKHMpfW8udHdlZW49cn19ZnVuY3Rpb24gbEgodCxlLG4pe3ZhciBpPXQuX2lkO3JldHVybiB0LmVhY2goKGZ1bmN0aW9uKCl7dmFyIHQ9aUgodGhpcyxpKTsodC52YWx1ZXx8KHQudmFsdWU9e30pKVtlXT1uLmFwcGx5KHRoaXMsYXJndW1lbnRzKX0pKSxmdW5jdGlvbih0KXtyZXR1cm4gckgodCxpKS52YWx1ZVtlXX19ZnVuY3Rpb24gY0godCxlKXt2YXIgbjtyZXR1cm4oIm51bWJlciI9PXR5cGVvZiBlP19COmUgaW5zdGFuY2VvZiBLRD9wQjoobj1LRChlKSk/KGU9bixwQik6eEIpKHQsZSl9ZnVuY3Rpb24gdUgodCl7cmV0dXJuIGZ1bmN0aW9uKCl7dGhpcy5yZW1vdmVBdHRyaWJ1dGUodCl9fWZ1bmN0aW9uIGhIKHQpe3JldHVybiBmdW5jdGlvbigpe3RoaXMucmVtb3ZlQXR0cmlidXRlTlModC5zcGFjZSx0LmxvY2FsKX19ZnVuY3Rpb24gZEgodCxlLG4pe3ZhciBpLHIsbz1uKyIiO3JldHVybiBmdW5jdGlvbigpe3ZhciBhPXRoaXMuZ2V0QXR0cmlidXRlKHQpO3JldHVybiBhPT09bz9udWxsOmE9PT1pP3I6cj1lKGk9YSxuKX19ZnVuY3Rpb24gcEgodCxlLG4pe3ZhciBpLHIsbz1uKyIiO3JldHVybiBmdW5jdGlvbigpe3ZhciBhPXRoaXMuZ2V0QXR0cmlidXRlTlModC5zcGFjZSx0LmxvY2FsKTtyZXR1cm4gYT09PW8/bnVsbDphPT09aT9yOnI9ZShpPWEsbil9fWZ1bmN0aW9uIGZIKHQsZSxuKXt2YXIgaSxyLG87cmV0dXJuIGZ1bmN0aW9uKCl7dmFyIGEscyxsPW4odGhpcyk7aWYobnVsbCE9bClyZXR1cm4oYT10aGlzLmdldEF0dHJpYnV0ZSh0KSk9PT0ocz1sKyIiKT9udWxsOmE9PT1pJiZzPT09cj9vOihyPXMsbz1lKGk9YSxsKSk7dGhpcy5yZW1vdmVBdHRyaWJ1dGUodCl9fWZ1bmN0aW9uIG1IKHQsZSxuKXt2YXIgaSxyLG87cmV0dXJuIGZ1bmN0aW9uKCl7dmFyIGEscyxsPW4odGhpcyk7aWYobnVsbCE9bClyZXR1cm4oYT10aGlzLmdldEF0dHJpYnV0ZU5TKHQuc3BhY2UsdC5sb2NhbCkpPT09KHM9bCsiIik/bnVsbDphPT09aSYmcz09PXI/bzoocj1zLG89ZShpPWEsbCkpO3RoaXMucmVtb3ZlQXR0cmlidXRlTlModC5zcGFjZSx0LmxvY2FsKX19ZnVuY3Rpb24gZ0godCxlKXtyZXR1cm4gZnVuY3Rpb24obil7dGhpcy5zZXRBdHRyaWJ1dGUodCxlLmNhbGwodGhpcyxuKSl9fWZ1bmN0aW9uIF9IKHQsZSl7cmV0dXJuIGZ1bmN0aW9uKG4pe3RoaXMuc2V0QXR0cmlidXRlTlModC5zcGFjZSx0LmxvY2FsLGUuY2FsbCh0aGlzLG4pKX19ZnVuY3Rpb24geUgodCxlKXt2YXIgbixpO2Z1bmN0aW9uIHIoKXt2YXIgcj1lLmFwcGx5KHRoaXMsYXJndW1lbnRzKTtyZXR1cm4gciE9PWkmJihuPShpPXIpJiZfSCh0LHIpKSxufXJldHVybiByLl92YWx1ZT1lLHJ9ZnVuY3Rpb24gdkgodCxlKXt2YXIgbixpO2Z1bmN0aW9uIHIoKXt2YXIgcj1lLmFwcGx5KHRoaXMsYXJndW1lbnRzKTtyZXR1cm4gciE9PWkmJihuPShpPXIpJiZnSCh0LHIpKSxufXJldHVybiByLl92YWx1ZT1lLHJ9ZnVuY3Rpb24gYkgodCxlKXtyZXR1cm4gZnVuY3Rpb24oKXtuSCh0aGlzLHQpLmRlbGF5PStlLmFwcGx5KHRoaXMsYXJndW1lbnRzKX19ZnVuY3Rpb24geEgodCxlKXtyZXR1cm4gZT0rZSxmdW5jdGlvbigpe25IKHRoaXMsdCkuZGVsYXk9ZX19ZnVuY3Rpb24gd0godCxlKXtyZXR1cm4gZnVuY3Rpb24oKXtpSCh0aGlzLHQpLmR1cmF0aW9uPStlLmFwcGx5KHRoaXMsYXJndW1lbnRzKX19ZnVuY3Rpb24gU0godCxlKXtyZXR1cm4gZT0rZSxmdW5jdGlvbigpe2lIKHRoaXMsdCkuZHVyYXRpb249ZX19ZnVuY3Rpb24gTUgodCxlKXtpZigiZnVuY3Rpb24iIT10eXBlb2YgZSl0aHJvdyBuZXcgRXJyb3I7cmV0dXJuIGZ1bmN0aW9uKCl7aUgodGhpcyx0KS5lYXNlPWV9fWZ1bmN0aW9uIEVIKHQsZSxuKXt2YXIgaSxyLG89KGZ1bmN0aW9uIGEodCl7cmV0dXJuKHQrIiIpLnRyaW0oKS5zcGxpdCgvXnxccysvKS5ldmVyeSgoZnVuY3Rpb24odCl7dmFyIGU9dC5pbmRleE9mKCIuIik7cmV0dXJuIGU+PTAmJih0PXQuc2xpY2UoMCxlKSksIXR8fCJzdGFydCI9PT10fSkpfSkoZSk/bkg6aUg7cmV0dXJuIGZ1bmN0aW9uKCl7dmFyIGE9byh0aGlzLHQpLHM9YS5vbjtzIT09aSYmKHI9KGk9cykuY29weSgpKS5vbihlLG4pLGEub249cn19dmFyIFRIPSR6LnByb3RvdHlwZS5jb25zdHJ1Y3RvcjtmdW5jdGlvbiBBSCh0KXtyZXR1cm4gZnVuY3Rpb24oKXt0aGlzLnN0eWxlLnJlbW92ZVByb3BlcnR5KHQpfX1mdW5jdGlvbiBDSCh0LGUsbil7cmV0dXJuIGZ1bmN0aW9uKGkpe3RoaXMuc3R5bGUuc2V0UHJvcGVydHkodCxlLmNhbGwodGhpcyxpKSxuKX19ZnVuY3Rpb24ga0godCxlLG4pe3ZhciBpLHI7ZnVuY3Rpb24gbygpe3ZhciBvPWUuYXBwbHkodGhpcyxhcmd1bWVudHMpO3JldHVybiBvIT09ciYmKGk9KHI9bykmJkNIKHQsbyxuKSksaX1yZXR1cm4gby5fdmFsdWU9ZSxvfWZ1bmN0aW9uIExIKHQpe3JldHVybiBmdW5jdGlvbihlKXt0aGlzLnRleHRDb250ZW50PXQuY2FsbCh0aGlzLGUpfX1mdW5jdGlvbiBQSCh0KXt2YXIgZSxuO2Z1bmN0aW9uIGkoKXt2YXIgaT10LmFwcGx5KHRoaXMsYXJndW1lbnRzKTtyZXR1cm4gaSE9PW4mJihlPShuPWkpJiZMSChpKSksZX1yZXR1cm4gaS5fdmFsdWU9dCxpfXZhciBJSD0wO2Z1bmN0aW9uIE5IKHQsZSxuLGkpe3RoaXMuX2dyb3Vwcz10LHRoaXMuX3BhcmVudHM9ZSx0aGlzLl9uYW1lPW4sdGhpcy5faWQ9aX1mdW5jdGlvbiBPSCgpe3JldHVybisrSUh9dmFyIFJIPSR6LnByb3RvdHlwZTtOSC5wcm90b3R5cGU9e2NvbnN0cnVjdG9yOk5ILHNlbGVjdDpmdW5jdGlvbiB6SCh0KXt2YXIgZT10aGlzLl9uYW1lLG49dGhpcy5faWQ7ImZ1bmN0aW9uIiE9dHlwZW9mIHQmJih0PVhSKHQpKTtmb3IodmFyIGk9dGhpcy5fZ3JvdXBzLHI9aS5sZW5ndGgsbz1uZXcgQXJyYXkociksYT0wO2E8cjsrK2EpZm9yKHZhciBzLGwsYz1pW2FdLHU9Yy5sZW5ndGgsaD1vW2FdPW5ldyBBcnJheSh1KSxkPTA7ZDx1OysrZCkocz1jW2RdKSYmKGw9dC5jYWxsKHMscy5fX2RhdGFfXyxkLGMpKSYmKCJfX2RhdGFfXyJpbiBzJiYobC5fX2RhdGFfXz1zLl9fZGF0YV9fKSxoW2RdPWwsZUgoaFtkXSxlLG4sZCxoLHJIKHMsbikpKTtyZXR1cm4gbmV3IE5IKG8sdGhpcy5fcGFyZW50cyxlLG4pfSxzZWxlY3RBbGw6ZnVuY3Rpb24gREgodCl7dmFyIGU9dGhpcy5fbmFtZSxuPXRoaXMuX2lkOyJmdW5jdGlvbiIhPXR5cGVvZiB0JiYodD1LUih0KSk7Zm9yKHZhciBpPXRoaXMuX2dyb3VwcyxyPWkubGVuZ3RoLG89W10sYT1bXSxzPTA7czxyOysrcylmb3IodmFyIGwsYz1pW3NdLHU9Yy5sZW5ndGgsaD0wO2g8dTsrK2gpaWYobD1jW2hdKXtmb3IodmFyIGQscD10LmNhbGwobCxsLl9fZGF0YV9fLGgsYyksZj1ySChsLG4pLG09MCxnPXAubGVuZ3RoO208ZzsrK20pKGQ9cFttXSkmJmVIKGQsZSxuLG0scCxmKTtvLnB1c2gocCksYS5wdXNoKGwpfXJldHVybiBuZXcgTkgobyxhLGUsbil9LGZpbHRlcjpmdW5jdGlvbiBCSCh0KXsiZnVuY3Rpb24iIT10eXBlb2YgdCYmKHQ9WlIodCkpO2Zvcih2YXIgZT10aGlzLl9ncm91cHMsbj1lLmxlbmd0aCxpPW5ldyBBcnJheShuKSxyPTA7cjxuOysrcilmb3IodmFyIG8sYT1lW3JdLHM9YS5sZW5ndGgsbD1pW3JdPVtdLGM9MDtjPHM7KytjKShvPWFbY10pJiZ0LmNhbGwobyxvLl9fZGF0YV9fLGMsYSkmJmwucHVzaChvKTtyZXR1cm4gbmV3IE5IKGksdGhpcy5fcGFyZW50cyx0aGlzLl9uYW1lLHRoaXMuX2lkKX0sbWVyZ2U6ZnVuY3Rpb24gSEgodCl7aWYodC5faWQhPT10aGlzLl9pZCl0aHJvdyBuZXcgRXJyb3I7Zm9yKHZhciBlPXRoaXMuX2dyb3VwcyxuPXQuX2dyb3VwcyxpPWUubGVuZ3RoLHI9TWF0aC5taW4oaSxuLmxlbmd0aCksbz1uZXcgQXJyYXkoaSksYT0wO2E8cjsrK2EpZm9yKHZhciBzLGw9ZVthXSxjPW5bYV0sdT1sLmxlbmd0aCxoPW9bYV09bmV3IEFycmF5KHUpLGQ9MDtkPHU7KytkKShzPWxbZF18fGNbZF0pJiYoaFtkXT1zKTtmb3IoO2E8aTsrK2Epb1thXT1lW2FdO3JldHVybiBuZXcgTkgobyx0aGlzLl9wYXJlbnRzLHRoaXMuX25hbWUsdGhpcy5faWQpfSxzZWxlY3Rpb246ZnVuY3Rpb24gRkgoKXtyZXR1cm4gbmV3IFRIKHRoaXMuX2dyb3Vwcyx0aGlzLl9wYXJlbnRzKX0sdHJhbnNpdGlvbjpmdW5jdGlvbiBWSCgpe2Zvcih2YXIgdD10aGlzLl9uYW1lLGU9dGhpcy5faWQsbj1PSCgpLGk9dGhpcy5fZ3JvdXBzLHI9aS5sZW5ndGgsbz0wO288cjsrK28pZm9yKHZhciBhLHM9aVtvXSxsPXMubGVuZ3RoLGM9MDtjPGw7KytjKWlmKGE9c1tjXSl7dmFyIHU9ckgoYSxlKTtlSChhLHQsbixjLHMse3RpbWU6dS50aW1lK3UuZGVsYXkrdS5kdXJhdGlvbixkZWxheTowLGR1cmF0aW9uOnUuZHVyYXRpb24sZWFzZTp1LmVhc2V9KX1yZXR1cm4gbmV3IE5IKGksdGhpcy5fcGFyZW50cyx0LG4pfSxjYWxsOlJILmNhbGwsbm9kZXM6Ukgubm9kZXMsbm9kZTpSSC5ub2RlLHNpemU6Ukguc2l6ZSxlbXB0eTpSSC5lbXB0eSxlYWNoOlJILmVhY2gsb246ZnVuY3Rpb24gakgodCxlKXt2YXIgbj10aGlzLl9pZDtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aDwyP3JIKHRoaXMubm9kZSgpLG4pLm9uLm9uKHQpOnRoaXMuZWFjaChFSChuLHQsZSkpfSxhdHRyOmZ1bmN0aW9uIFVIKHQsZSl7dmFyIG49VVIodCksaT0idHJhbnNmb3JtIj09PW4/UkI6Y0g7cmV0dXJuIHRoaXMuYXR0clR3ZWVuKHQsImZ1bmN0aW9uIj09dHlwZW9mIGU/KG4ubG9jYWw/bUg6ZkgpKG4saSxsSCh0aGlzLCJhdHRyLiIrdCxlKSk6bnVsbD09ZT8obi5sb2NhbD9oSDp1SCkobik6KG4ubG9jYWw/cEg6ZEgpKG4saSxlKSl9LGF0dHJUd2VlbjpmdW5jdGlvbiBHSCh0LGUpe3ZhciBuPSJhdHRyLiIrdDtpZihhcmd1bWVudHMubGVuZ3RoPDIpcmV0dXJuKG49dGhpcy50d2VlbihuKSkmJm4uX3ZhbHVlO2lmKG51bGw9PWUpcmV0dXJuIHRoaXMudHdlZW4obixudWxsKTtpZigiZnVuY3Rpb24iIT10eXBlb2YgZSl0aHJvdyBuZXcgRXJyb3I7dmFyIGk9VVIodCk7cmV0dXJuIHRoaXMudHdlZW4obiwoaS5sb2NhbD95SDp2SCkoaSxlKSl9LHN0eWxlOmZ1bmN0aW9uIFdIKHQsZSxuKXt2YXIgaT0idHJhbnNmb3JtIj09KHQrPSIiKT9OQjpjSDtyZXR1cm4gbnVsbD09ZT90aGlzLnN0eWxlVHdlZW4odCwoZnVuY3Rpb24gcih0LGUpe3ZhciBuLGkscjtyZXR1cm4gZnVuY3Rpb24oKXt2YXIgbz1weih0aGlzLHQpLGE9KHRoaXMuc3R5bGUucmVtb3ZlUHJvcGVydHkodCkscHoodGhpcyx0KSk7cmV0dXJuIG89PT1hP251bGw6bz09PW4mJmE9PT1pP3I6cj1lKG49byxpPWEpfX0pKHQsaSkpLm9uKCJlbmQuc3R5bGUuIit0LEFIKHQpKToiZnVuY3Rpb24iPT10eXBlb2YgZT90aGlzLnN0eWxlVHdlZW4odCwoZnVuY3Rpb24gYSh0LGUsbil7dmFyIGkscixvO3JldHVybiBmdW5jdGlvbigpe3ZhciBhPXB6KHRoaXMsdCkscz1uKHRoaXMpLGw9cysiIjtyZXR1cm4gbnVsbD09cyYmKHRoaXMuc3R5bGUucmVtb3ZlUHJvcGVydHkodCksbD1zPXB6KHRoaXMsdCkpLGE9PT1sP251bGw6YT09PWkmJmw9PT1yP286KHI9bCxvPWUoaT1hLHMpKX19KSh0LGksbEgodGhpcywic3R5bGUuIit0LGUpKSkuZWFjaCgoZnVuY3Rpb24gbyh0LGUpe3ZhciBuLGkscixvLGE9InN0eWxlLiIrZSxzPSJlbmQuIithO3JldHVybiBmdW5jdGlvbigpe3ZhciBsPWlIKHRoaXMsdCksYz1sLm9uLHU9bnVsbD09bC52YWx1ZVthXT9vfHwobz1BSChlKSk6dm9pZCAwO2M9PT1uJiZyPT09dXx8KGk9KG49YykuY29weSgpKS5vbihzLHI9dSksbC5vbj1pfX0pKHRoaXMuX2lkLHQpKTp0aGlzLnN0eWxlVHdlZW4odCwoZnVuY3Rpb24gcyh0LGUsbil7dmFyIGkscixvPW4rIiI7cmV0dXJuIGZ1bmN0aW9uKCl7dmFyIGE9cHoodGhpcyx0KTtyZXR1cm4gYT09PW8/bnVsbDphPT09aT9yOnI9ZShpPWEsbil9fSkodCxpLGUpLG4pLm9uKCJlbmQuc3R5bGUuIit0LG51bGwpfSxzdHlsZVR3ZWVuOmZ1bmN0aW9uIHFIKHQsZSxuKXt2YXIgaT0ic3R5bGUuIisodCs9IiIpO2lmKGFyZ3VtZW50cy5sZW5ndGg8MilyZXR1cm4oaT10aGlzLnR3ZWVuKGkpKSYmaS5fdmFsdWU7aWYobnVsbD09ZSlyZXR1cm4gdGhpcy50d2VlbihpLG51bGwpO2lmKCJmdW5jdGlvbiIhPXR5cGVvZiBlKXRocm93IG5ldyBFcnJvcjtyZXR1cm4gdGhpcy50d2VlbihpLGtIKHQsZSxudWxsPT1uPyIiOm4pKX0sdGV4dDpmdW5jdGlvbiBZSCh0KXtyZXR1cm4gdGhpcy50d2VlbigidGV4dCIsImZ1bmN0aW9uIj09dHlwZW9mIHQ/KGZ1bmN0aW9uIGUodCl7cmV0dXJuIGZ1bmN0aW9uKCl7dmFyIGU9dCh0aGlzKTt0aGlzLnRleHRDb250ZW50PW51bGw9PWU/IiI6ZX19KShsSCh0aGlzLCJ0ZXh0Iix0KSk6KGZ1bmN0aW9uIG4odCl7cmV0dXJuIGZ1bmN0aW9uKCl7dGhpcy50ZXh0Q29udGVudD10fX0pKG51bGw9PXQ/IiI6dCsiIikpfSx0ZXh0VHdlZW46ZnVuY3Rpb24gWEgodCl7dmFyIGU9InRleHQiO2lmKGFyZ3VtZW50cy5sZW5ndGg8MSlyZXR1cm4oZT10aGlzLnR3ZWVuKGUpKSYmZS5fdmFsdWU7aWYobnVsbD09dClyZXR1cm4gdGhpcy50d2VlbihlLG51bGwpO2lmKCJmdW5jdGlvbiIhPXR5cGVvZiB0KXRocm93IG5ldyBFcnJvcjtyZXR1cm4gdGhpcy50d2VlbihlLFBIKHQpKX0scmVtb3ZlOmZ1bmN0aW9uICRIKCl7cmV0dXJuIHRoaXMub24oImVuZC5yZW1vdmUiLChmdW5jdGlvbiB0KGUpe3JldHVybiBmdW5jdGlvbigpe3ZhciB0PXRoaXMucGFyZW50Tm9kZTtmb3IodmFyIG4gaW4gdGhpcy5fX3RyYW5zaXRpb24paWYoK24hPT1lKXJldHVybjt0JiZ0LnJlbW92ZUNoaWxkKHRoaXMpfX0pKHRoaXMuX2lkKSl9LHR3ZWVuOmZ1bmN0aW9uIEtIKHQsZSl7dmFyIG49dGhpcy5faWQ7aWYodCs9IiIsYXJndW1lbnRzLmxlbmd0aDwyKXtmb3IodmFyIGkscj1ySCh0aGlzLm5vZGUoKSxuKS50d2VlbixvPTAsYT1yLmxlbmd0aDtvPGE7KytvKWlmKChpPXJbb10pLm5hbWU9PT10KXJldHVybiBpLnZhbHVlO3JldHVybiBudWxsfXJldHVybiB0aGlzLmVhY2goKG51bGw9PWU/YUg6c0gpKG4sdCxlKSl9LGRlbGF5OmZ1bmN0aW9uIFpIKHQpe3ZhciBlPXRoaXMuX2lkO3JldHVybiBhcmd1bWVudHMubGVuZ3RoP3RoaXMuZWFjaCgoImZ1bmN0aW9uIj09dHlwZW9mIHQ/Ykg6eEgpKGUsdCkpOnJIKHRoaXMubm9kZSgpLGUpLmRlbGF5fSxkdXJhdGlvbjpmdW5jdGlvbiBKSCh0KXt2YXIgZT10aGlzLl9pZDtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD90aGlzLmVhY2goKCJmdW5jdGlvbiI9PXR5cGVvZiB0P3dIOlNIKShlLHQpKTpySCh0aGlzLm5vZGUoKSxlKS5kdXJhdGlvbn0sZWFzZTpmdW5jdGlvbiBRSCh0KXt2YXIgZT10aGlzLl9pZDtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD90aGlzLmVhY2goTUgoZSx0KSk6ckgodGhpcy5ub2RlKCksZSkuZWFzZX0sZW5kOmZ1bmN0aW9uIHRGKCl7dmFyIHQsZSxuPXRoaXMsaT1uLl9pZCxyPW4uc2l6ZSgpO3JldHVybiBuZXcgUHJvbWlzZSgoZnVuY3Rpb24obyxhKXt2YXIgcz17dmFsdWU6YX0sbD17dmFsdWU6ZnVuY3Rpb24oKXswPT0tLXImJm8oKX19O24uZWFjaCgoZnVuY3Rpb24oKXt2YXIgbj1pSCh0aGlzLGkpLHI9bi5vbjtyIT09dCYmKChlPSh0PXIpLmNvcHkoKSkuXy5jYW5jZWwucHVzaChzKSxlLl8uaW50ZXJydXB0LnB1c2gocyksZS5fLmVuZC5wdXNoKGwpKSxuLm9uPWV9KSl9KSl9fTt2YXIgZUY9e3RpbWU6bnVsbCxkZWxheTowLGR1cmF0aW9uOjI1MCxlYXNlOlRmfTtmdW5jdGlvbiBuRih0LGUpe2Zvcih2YXIgbjshKG49dC5fX3RyYW5zaXRpb24pfHwhKG49bltlXSk7KWlmKCEodD10LnBhcmVudE5vZGUpKXJldHVybiBlRi50aW1lPVdCKCksZUY7cmV0dXJuIG59ZnVuY3Rpb24gaUYodCl7cmV0dXJuIGZ1bmN0aW9uKCl7cmV0dXJuIHR9fWZ1bmN0aW9uIHJGKHQsZSxuKXt0aGlzLnRhcmdldD10LHRoaXMudHlwZT1lLHRoaXMuc2VsZWN0aW9uPW59ZnVuY3Rpb24gb0YoKXtCei5zdG9wSW1tZWRpYXRlUHJvcGFnYXRpb24oKX1mdW5jdGlvbiBhRigpe0J6LnByZXZlbnREZWZhdWx0KCksQnouc3RvcEltbWVkaWF0ZVByb3BhZ2F0aW9uKCl9JHoucHJvdG90eXBlLmludGVycnVwdD1mdW5jdGlvbiBzRih0KXtyZXR1cm4gdGhpcy5lYWNoKChmdW5jdGlvbigpe29IKHRoaXMsdCl9KSl9LCR6LnByb3RvdHlwZS50cmFuc2l0aW9uPWZ1bmN0aW9uIGxGKHQpe3ZhciBlLG47dCBpbnN0YW5jZW9mIE5IPyhlPXQuX2lkLHQ9dC5fbmFtZSk6KGU9T0goKSwobj1lRikudGltZT1XQigpLHQ9bnVsbD09dD9udWxsOnQrIiIpO2Zvcih2YXIgaT10aGlzLl9ncm91cHMscj1pLmxlbmd0aCxvPTA7bzxyOysrbylmb3IodmFyIGEscz1pW29dLGw9cy5sZW5ndGgsYz0wO2M8bDsrK2MpKGE9c1tjXSkmJmVIKGEsdCxlLGMscyxufHxuRihhLGUpKTtyZXR1cm4gbmV3IE5IKGksdGhpcy5fcGFyZW50cyx0LGUpfTt2YXIgY0Y9e25hbWU6ImRyYWcifSx1Rj17bmFtZToic3BhY2UifSxoRj17bmFtZToiaGFuZGxlIn0sZEY9e25hbWU6ImNlbnRlciJ9LHBGPXtuYW1lOiJ4IixoYW5kbGVzOlsiZSIsInciXS5tYXAoeEYpLGlucHV0OmZ1bmN0aW9uKHQsZSl7cmV0dXJuIHQmJltbdFswXSxlWzBdWzFdXSxbdFsxXSxlWzFdWzFdXV19LG91dHB1dDpmdW5jdGlvbih0KXtyZXR1cm4gdCYmW3RbMF1bMF0sdFsxXVswXV19fSxmRj17bmFtZToieSIsaGFuZGxlczpbIm4iLCJzIl0ubWFwKHhGKSxpbnB1dDpmdW5jdGlvbih0LGUpe3JldHVybiB0JiZbW2VbMF1bMF0sdFswXV0sW2VbMV1bMF0sdFsxXV1dfSxvdXRwdXQ6ZnVuY3Rpb24odCl7cmV0dXJuIHQmJlt0WzBdWzFdLHRbMV1bMV1dfX0sbUY9e25hbWU6Inh5IixoYW5kbGVzOlsibiIsImUiLCJzIiwidyIsIm53IiwibmUiLCJzZSIsInN3Il0ubWFwKHhGKSxpbnB1dDpmdW5jdGlvbih0KXtyZXR1cm4gdH0sb3V0cHV0OmZ1bmN0aW9uKHQpe3JldHVybiB0fX0sZ0Y9e292ZXJsYXk6ImNyb3NzaGFpciIsc2VsZWN0aW9uOiJtb3ZlIixuOiJucy1yZXNpemUiLGU6ImV3LXJlc2l6ZSIsczoibnMtcmVzaXplIix3OiJldy1yZXNpemUiLG53OiJud3NlLXJlc2l6ZSIsbmU6Im5lc3ctcmVzaXplIixzZToibndzZS1yZXNpemUiLHN3OiJuZXN3LXJlc2l6ZSJ9LF9GPXtlOiJ3Iix3OiJlIixudzoibmUiLG5lOiJudyIsc2U6InN3Iixzdzoic2UifSx5Rj17bjoicyIsczoibiIsbnc6InN3IixuZToic2UiLHNlOiJuZSIsc3c6Im53In0sdkY9e292ZXJsYXk6MSxzZWxlY3Rpb246MSxuOm51bGwsZToxLHM6bnVsbCx3Oi0xLG53Oi0xLG5lOjEsc2U6MSxzdzotMX0sYkY9e292ZXJsYXk6MSxzZWxlY3Rpb246MSxuOi0xLGU6bnVsbCxzOjEsdzpudWxsLG53Oi0xLG5lOi0xLHNlOjEsc3c6MX07ZnVuY3Rpb24geEYodCl7cmV0dXJue3R5cGU6dH19ZnVuY3Rpb24gd0YoKXtyZXR1cm4hQnouYnV0dG9ufWZ1bmN0aW9uIFNGKCl7dmFyIHQ9dGhpcy5vd25lclNWR0VsZW1lbnR8fHRoaXM7cmV0dXJuW1swLDBdLFt0LndpZHRoLmJhc2VWYWwudmFsdWUsdC5oZWlnaHQuYmFzZVZhbC52YWx1ZV1dfWZ1bmN0aW9uIE1GKHQpe2Zvcig7IXQuX19icnVzaDspaWYoISh0PXQucGFyZW50Tm9kZSkpcmV0dXJuO3JldHVybiB0Ll9fYnJ1c2h9ZnVuY3Rpb24gRUYodCl7cmV0dXJuIHRbMF1bMF09PT10WzFdWzBdfHx0WzBdWzFdPT09dFsxXVsxXX1mdW5jdGlvbiBURih0KXt2YXIgZSxuPVNGLGk9d0Yscj16UihhLCJzdGFydCIsImJydXNoIiwiZW5kIiksbz02O2Z1bmN0aW9uIGEoZSl7dmFyIG49ZS5wcm9wZXJ0eSgiX19icnVzaCIsaCkuc2VsZWN0QWxsKCIub3ZlcmxheSIpLmRhdGEoW3hGKCJvdmVybGF5IildKTtuLmVudGVyKCkuYXBwZW5kKCJyZWN0IikuYXR0cigiY2xhc3MiLCJvdmVybGF5IikuYXR0cigicG9pbnRlci1ldmVudHMiLCJhbGwiKS5hdHRyKCJjdXJzb3IiLGdGLm92ZXJsYXkpLm1lcmdlKG4pLmVhY2goKGZ1bmN0aW9uKCl7dmFyIHQ9TUYodGhpcykuZXh0ZW50O0t6KHRoaXMpLmF0dHIoIngiLHRbMF1bMF0pLmF0dHIoInkiLHRbMF1bMV0pLmF0dHIoIndpZHRoIix0WzFdWzBdLXRbMF1bMF0pLmF0dHIoImhlaWdodCIsdFsxXVsxXS10WzBdWzFdKX0pKSxlLnNlbGVjdEFsbCgiLnNlbGVjdGlvbiIpLmRhdGEoW3hGKCJzZWxlY3Rpb24iKV0pLmVudGVyKCkuYXBwZW5kKCJyZWN0IikuYXR0cigiY2xhc3MiLCJzZWxlY3Rpb24iKS5hdHRyKCJjdXJzb3IiLGdGLnNlbGVjdGlvbikuYXR0cigiZmlsbCIsIiM3NzciKS5hdHRyKCJmaWxsLW9wYWNpdHkiLC4zKS5hdHRyKCJzdHJva2UiLCIjZmZmIikuYXR0cigic2hhcGUtcmVuZGVyaW5nIiwiY3Jpc3BFZGdlcyIpO3ZhciBpPWUuc2VsZWN0QWxsKCIuaGFuZGxlIikuZGF0YSh0LmhhbmRsZXMsKGZ1bmN0aW9uKHQpe3JldHVybiB0LnR5cGV9KSk7aS5leGl0KCkucmVtb3ZlKCksaS5lbnRlcigpLmFwcGVuZCgicmVjdCIpLmF0dHIoImNsYXNzIiwoZnVuY3Rpb24odCl7cmV0dXJuImhhbmRsZSBoYW5kbGUtLSIrdC50eXBlfSkpLmF0dHIoImN1cnNvciIsKGZ1bmN0aW9uKHQpe3JldHVybiBnRlt0LnR5cGVdfSkpLGUuZWFjaChzKS5hdHRyKCJmaWxsIiwibm9uZSIpLmF0dHIoInBvaW50ZXItZXZlbnRzIiwiYWxsIikuc3R5bGUoIi13ZWJraXQtdGFwLWhpZ2hsaWdodC1jb2xvciIsInJnYmEoMCwwLDAsMCkiKS5vbigibW91c2Vkb3duLmJydXNoIHRvdWNoc3RhcnQuYnJ1c2giLHUpfWZ1bmN0aW9uIHMoKXt2YXIgdD1Leih0aGlzKSxlPU1GKHRoaXMpLnNlbGVjdGlvbjtlPyh0LnNlbGVjdEFsbCgiLnNlbGVjdGlvbiIpLnN0eWxlKCJkaXNwbGF5IixudWxsKS5hdHRyKCJ4IixlWzBdWzBdKS5hdHRyKCJ5IixlWzBdWzFdKS5hdHRyKCJ3aWR0aCIsZVsxXVswXS1lWzBdWzBdKS5hdHRyKCJoZWlnaHQiLGVbMV1bMV0tZVswXVsxXSksdC5zZWxlY3RBbGwoIi5oYW5kbGUiKS5zdHlsZSgiZGlzcGxheSIsbnVsbCkuYXR0cigieCIsKGZ1bmN0aW9uKHQpe3JldHVybiJlIj09PXQudHlwZVt0LnR5cGUubGVuZ3RoLTFdP2VbMV1bMF0tby8yOmVbMF1bMF0tby8yfSkpLmF0dHIoInkiLChmdW5jdGlvbih0KXtyZXR1cm4icyI9PT10LnR5cGVbMF0/ZVsxXVsxXS1vLzI6ZVswXVsxXS1vLzJ9KSkuYXR0cigid2lkdGgiLChmdW5jdGlvbih0KXtyZXR1cm4ibiI9PT10LnR5cGV8fCJzIj09PXQudHlwZT9lWzFdWzBdLWVbMF1bMF0rbzpvfSkpLmF0dHIoImhlaWdodCIsKGZ1bmN0aW9uKHQpe3JldHVybiJlIj09PXQudHlwZXx8InciPT09dC50eXBlP2VbMV1bMV0tZVswXVsxXStvOm99KSkpOnQuc2VsZWN0QWxsKCIuc2VsZWN0aW9uLC5oYW5kbGUiKS5zdHlsZSgiZGlzcGxheSIsIm5vbmUiKS5hdHRyKCJ4IixudWxsKS5hdHRyKCJ5IixudWxsKS5hdHRyKCJ3aWR0aCIsbnVsbCkuYXR0cigiaGVpZ2h0IixudWxsKX1mdW5jdGlvbiBsKHQsZSl7cmV0dXJuIHQuX19icnVzaC5lbWl0dGVyfHxuZXcgYyh0LGUpfWZ1bmN0aW9uIGModCxlKXt0aGlzLnRoYXQ9dCx0aGlzLmFyZ3M9ZSx0aGlzLnN0YXRlPXQuX19icnVzaCx0aGlzLmFjdGl2ZT0wfWZ1bmN0aW9uIHUoKXtpZihCei50b3VjaGVzKXtpZihCei5jaGFuZ2VkVG91Y2hlcy5sZW5ndGg8QnoudG91Y2hlcy5sZW5ndGgpcmV0dXJuIGFGKCl9ZWxzZSBpZihlKXJldHVybjtpZihpLmFwcGx5KHRoaXMsYXJndW1lbnRzKSl7dmFyIG4scixvLGEsYyx1LGgsZCxwLGYsbSxnLF8seT10aGlzLHY9QnoudGFyZ2V0Ll9fZGF0YV9fLnR5cGUsYj0ic2VsZWN0aW9uIj09PShCei5tZXRhS2V5P3Y9Im92ZXJsYXkiOnYpP2NGOkJ6LmFsdEtleT9kRjpoRix4PXQ9PT1mRj9udWxsOnZGW3ZdLHc9dD09PXBGP251bGw6YkZbdl0sUz1NRih5KSxNPVMuZXh0ZW50LEU9Uy5zZWxlY3Rpb24sVD1NWzBdWzBdLEE9TVswXVsxXSxDPU1bMV1bMF0saz1NWzFdWzFdLEw9eCYmdyYmQnouc2hpZnRLZXksUD1aeih5KSxJPVAsTj1sKHksYXJndW1lbnRzKS5iZWZvcmVzdGFydCgpOyJvdmVybGF5Ij09PXY/Uy5zZWxlY3Rpb249RT1bW249dD09PWZGP1Q6UFswXSxvPXQ9PT1wRj9BOlBbMV1dLFtjPXQ9PT1mRj9DOm4saD10PT09cEY/azpvXV06KG49RVswXVswXSxvPUVbMF1bMV0sYz1FWzFdWzBdLGg9RVsxXVsxXSkscj1uLGE9byx1PWMsZD1oO3ZhciBPPUt6KHkpLmF0dHIoInBvaW50ZXItZXZlbnRzIiwibm9uZSIpLFI9Ty5zZWxlY3RBbGwoIi5vdmVybGF5IikuYXR0cigiY3Vyc29yIixnRlt2XSk7aWYoQnoudG91Y2hlcylPLm9uKCJ0b3VjaG1vdmUuYnJ1c2giLEQsITApLm9uKCJ0b3VjaGVuZC5icnVzaCB0b3VjaGNhbmNlbC5icnVzaCIsSCwhMCk7ZWxzZXt2YXIgej1LeihCei52aWV3KS5vbigia2V5ZG93bi5icnVzaCIsRiwhMCkub24oImtleXVwLmJydXNoIixWLCEwKS5vbigibW91c2Vtb3ZlLmJydXNoIixELCEwKS5vbigibW91c2V1cC5icnVzaCIsSCwhMCk7UXooQnoudmlldyl9b0YoKSxvSCh5KSxzLmNhbGwoeSksTi5zdGFydCgpfWZ1bmN0aW9uIEQoKXt2YXIgdD1aeih5KTshTHx8Z3x8X3x8KE1hdGguYWJzKHRbMF0tSVswXSk+TWF0aC5hYnModFsxXS1JWzFdKT9fPSEwOmc9ITApLEk9dCxtPSEwLGFGKCksQigpfWZ1bmN0aW9uIEIoKXt2YXIgdDtzd2l0Y2gocD1JWzBdLVBbMF0sZj1JWzFdLVBbMV0sYil7Y2FzZSB1RjpjYXNlIGNGOngmJihwPU1hdGgubWF4KFQtbixNYXRoLm1pbihDLWMscCkpLHI9bitwLHU9YytwKSx3JiYoZj1NYXRoLm1heChBLW8sTWF0aC5taW4oay1oLGYpKSxhPW8rZixkPWgrZik7YnJlYWs7Y2FzZSBoRjp4PDA/KHA9TWF0aC5tYXgoVC1uLE1hdGgubWluKEMtbixwKSkscj1uK3AsdT1jKTp4PjAmJihwPU1hdGgubWF4KFQtYyxNYXRoLm1pbihDLWMscCkpLHI9bix1PWMrcCksdzwwPyhmPU1hdGgubWF4KEEtbyxNYXRoLm1pbihrLW8sZikpLGE9bytmLGQ9aCk6dz4wJiYoZj1NYXRoLm1heChBLWgsTWF0aC5taW4oay1oLGYpKSxhPW8sZD1oK2YpO2JyZWFrO2Nhc2UgZEY6eCYmKHI9TWF0aC5tYXgoVCxNYXRoLm1pbihDLG4tcCp4KSksdT1NYXRoLm1heChULE1hdGgubWluKEMsYytwKngpKSksdyYmKGE9TWF0aC5tYXgoQSxNYXRoLm1pbihrLG8tZip3KSksZD1NYXRoLm1heChBLE1hdGgubWluKGssaCtmKncpKSl9dTxyJiYoeCo9LTEsdD1uLG49YyxjPXQsdD1yLHI9dSx1PXQsdiBpbiBfRiYmUi5hdHRyKCJjdXJzb3IiLGdGW3Y9X0Zbdl1dKSksZDxhJiYodyo9LTEsdD1vLG89aCxoPXQsdD1hLGE9ZCxkPXQsdiBpbiB5RiYmUi5hdHRyKCJjdXJzb3IiLGdGW3Y9eUZbdl1dKSksUy5zZWxlY3Rpb24mJihFPVMuc2VsZWN0aW9uKSxnJiYocj1FWzBdWzBdLHU9RVsxXVswXSksXyYmKGE9RVswXVsxXSxkPUVbMV1bMV0pLEVbMF1bMF09PT1yJiZFWzBdWzFdPT09YSYmRVsxXVswXT09PXUmJkVbMV1bMV09PT1kfHwoUy5zZWxlY3Rpb249W1tyLGFdLFt1LGRdXSxzLmNhbGwoeSksTi5icnVzaCgpKX1mdW5jdGlvbiBIKCl7aWYob0YoKSxCei50b3VjaGVzKXtpZihCei50b3VjaGVzLmxlbmd0aClyZXR1cm47ZSYmY2xlYXJUaW1lb3V0KGUpLGU9c2V0VGltZW91dCgoZnVuY3Rpb24oKXtlPW51bGx9KSw1MDApLE8ub24oInRvdWNobW92ZS5icnVzaCB0b3VjaGVuZC5icnVzaCB0b3VjaGNhbmNlbC5icnVzaCIsbnVsbCl9ZWxzZSB0RChCei52aWV3LG0pLHoub24oImtleWRvd24uYnJ1c2gga2V5dXAuYnJ1c2ggbW91c2Vtb3ZlLmJydXNoIG1vdXNldXAuYnJ1c2giLG51bGwpO08uYXR0cigicG9pbnRlci1ldmVudHMiLCJhbGwiKSxSLmF0dHIoImN1cnNvciIsZ0Yub3ZlcmxheSksUy5zZWxlY3Rpb24mJihFPVMuc2VsZWN0aW9uKSxFRihFKSYmKFMuc2VsZWN0aW9uPW51bGwscy5jYWxsKHkpKSxOLmVuZCgpfWZ1bmN0aW9uIEYoKXtzd2l0Y2goQnoua2V5Q29kZSl7Y2FzZSAxNjpMPXgmJnc7YnJlYWs7Y2FzZSAxODpiPT09aEYmJih4JiYoYz11LXAqeCxuPXIrcCp4KSx3JiYoaD1kLWYqdyxvPWErZip3KSxiPWRGLEIoKSk7YnJlYWs7Y2FzZSAzMjpiIT09aEYmJmIhPT1kRnx8KHg8MD9jPXUtcDp4PjAmJihuPXItcCksdzwwP2g9ZC1mOnc+MCYmKG89YS1mKSxiPXVGLFIuYXR0cigiY3Vyc29yIixnRi5zZWxlY3Rpb24pLEIoKSk7YnJlYWs7ZGVmYXVsdDpyZXR1cm59YUYoKX1mdW5jdGlvbiBWKCl7c3dpdGNoKEJ6LmtleUNvZGUpe2Nhc2UgMTY6TCYmKGc9Xz1MPSExLEIoKSk7YnJlYWs7Y2FzZSAxODpiPT09ZEYmJih4PDA/Yz11Ong+MCYmKG49ciksdzwwP2g9ZDp3PjAmJihvPWEpLGI9aEYsQigpKTticmVhaztjYXNlIDMyOmI9PT11RiYmKEJ6LmFsdEtleT8oeCYmKGM9dS1wKngsbj1yK3AqeCksdyYmKGg9ZC1mKncsbz1hK2YqdyksYj1kRik6KHg8MD9jPXU6eD4wJiYobj1yKSx3PDA/aD1kOnc+MCYmKG89YSksYj1oRiksUi5hdHRyKCJjdXJzb3IiLGdGW3ZdKSxCKCkpO2JyZWFrO2RlZmF1bHQ6cmV0dXJufWFGKCl9fWZ1bmN0aW9uIGgoKXt2YXIgZT10aGlzLl9fYnJ1c2h8fHtzZWxlY3Rpb246bnVsbH07cmV0dXJuIGUuZXh0ZW50PW4uYXBwbHkodGhpcyxhcmd1bWVudHMpLGUuZGltPXQsZX1yZXR1cm4gYS5tb3ZlPWZ1bmN0aW9uKGUsbil7ZS5zZWxlY3Rpb24/ZS5vbigic3RhcnQuYnJ1c2giLChmdW5jdGlvbigpe2wodGhpcyxhcmd1bWVudHMpLmJlZm9yZXN0YXJ0KCkuc3RhcnQoKX0pKS5vbigiaW50ZXJydXB0LmJydXNoIGVuZC5icnVzaCIsKGZ1bmN0aW9uKCl7bCh0aGlzLGFyZ3VtZW50cykuZW5kKCl9KSkudHdlZW4oImJydXNoIiwoZnVuY3Rpb24oKXt2YXIgZT10aGlzLGk9ZS5fX2JydXNoLHI9bChlLGFyZ3VtZW50cyksbz1pLnNlbGVjdGlvbixhPXQuaW5wdXQoImZ1bmN0aW9uIj09dHlwZW9mIG4/bi5hcHBseSh0aGlzLGFyZ3VtZW50cyk6bixpLmV4dGVudCksYz13QihvLGEpO2Z1bmN0aW9uIHUodCl7aS5zZWxlY3Rpb249MT09PXQmJkVGKGEpP251bGw6Yyh0KSxzLmNhbGwoZSksci5icnVzaCgpfXJldHVybiBvJiZhP3U6dSgxKX0pKTplLmVhY2goKGZ1bmN0aW9uKCl7dmFyIGU9dGhpcyxpPWFyZ3VtZW50cyxyPWUuX19icnVzaCxvPXQuaW5wdXQoImZ1bmN0aW9uIj09dHlwZW9mIG4/bi5hcHBseShlLGkpOm4sci5leHRlbnQpLGE9bChlLGkpLmJlZm9yZXN0YXJ0KCk7b0goZSksci5zZWxlY3Rpb249bnVsbD09b3x8RUYobyk/bnVsbDpvLHMuY2FsbChlKSxhLnN0YXJ0KCkuYnJ1c2goKS5lbmQoKX0pKX0sYy5wcm90b3R5cGU9e2JlZm9yZXN0YXJ0OmZ1bmN0aW9uKCl7cmV0dXJuIDE9PSsrdGhpcy5hY3RpdmUmJih0aGlzLnN0YXRlLmVtaXR0ZXI9dGhpcyx0aGlzLnN0YXJ0aW5nPSEwKSx0aGlzfSxzdGFydDpmdW5jdGlvbigpe3JldHVybiB0aGlzLnN0YXJ0aW5nJiYodGhpcy5zdGFydGluZz0hMSx0aGlzLmVtaXQoInN0YXJ0IikpLHRoaXN9LGJydXNoOmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuZW1pdCgiYnJ1c2giKSx0aGlzfSxlbmQ6ZnVuY3Rpb24oKXtyZXR1cm4gMD09LS10aGlzLmFjdGl2ZSYmKGRlbGV0ZSB0aGlzLnN0YXRlLmVtaXR0ZXIsdGhpcy5lbWl0KCJlbmQiKSksdGhpc30sZW1pdDpmdW5jdGlvbihlKXshKGZ1bmN0aW9uIG4odCxlLGkscil7dmFyIG89Qno7dC5zb3VyY2VFdmVudD1CeixCej10O3RyeXtlLmFwcGx5KGkscil9ZmluYWxseXtCej1vfX0pKG5ldyByRihhLGUsdC5vdXRwdXQodGhpcy5zdGF0ZS5zZWxlY3Rpb24pKSxyLmFwcGx5LHIsW2UsdGhpcy50aGF0LHRoaXMuYXJnc10pfX0sYS5leHRlbnQ9ZnVuY3Rpb24odCl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KG49ImZ1bmN0aW9uIj09dHlwZW9mIHQ/dDppRihbWyt0WzBdWzBdLCt0WzBdWzFdXSxbK3RbMV1bMF0sK3RbMV1bMV1dXSksYSk6bn0sYS5maWx0ZXI9ZnVuY3Rpb24odCl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KGk9ImZ1bmN0aW9uIj09dHlwZW9mIHQ/dDppRighIXQpLGEpOml9LGEuaGFuZGxlU2l6ZT1mdW5jdGlvbih0KXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8obz0rdCxhKTpvfSxhLm9uPWZ1bmN0aW9uKCl7dmFyIHQ9ci5vbi5hcHBseShyLGFyZ3VtZW50cyk7cmV0dXJuIHQ9PT1yP2E6dH0sYX1mdW5jdGlvbiBBRih0LGUpe3JldHVybiB0PGU/LTE6dD5lPzE6dD49ZT8wOk5hTn1mdW5jdGlvbiBDRih0LGUsbil7dD0rdCxlPStlLG49KHI9YXJndW1lbnRzLmxlbmd0aCk8Mj8oZT10LHQ9MCwxKTpyPDM/MTorbjtmb3IodmFyIGk9LTEscj0wfE1hdGgubWF4KDAsTWF0aC5jZWlsKChlLXQpL24pKSxvPW5ldyBBcnJheShyKTsrK2k8cjspb1tpXT10K2kqbjtyZXR1cm4gb30hKGZ1bmN0aW9uIGtGKHQpezE9PT10Lmxlbmd0aCYmKHQ9KGZ1bmN0aW9uIGUodCl7cmV0dXJuIGZ1bmN0aW9uKGUsbil7cmV0dXJuIEFGKHQoZSksbil9fSkodCkpfSkoQUYpO3ZhciBMRj1NYXRoLmNvcyxQRj1NYXRoLnNpbixJRj1NYXRoLlBJLE5GPUlGLzIsT0Y9MipJRixSRj1NYXRoLm1heDtmdW5jdGlvbiB6Rih0KXtyZXR1cm4gZnVuY3Rpb24oZSxuKXtyZXR1cm4gdChlLnNvdXJjZS52YWx1ZStlLnRhcmdldC52YWx1ZSxuLnNvdXJjZS52YWx1ZStuLnRhcmdldC52YWx1ZSl9fXZhciBERj1BcnJheS5wcm90b3R5cGUuc2xpY2U7ZnVuY3Rpb24gQkYodCl7cmV0dXJuIGZ1bmN0aW9uKCl7cmV0dXJuIHR9fXZhciBIRj1NYXRoLlBJLEZGPTIqSEYsVkY9MWUtNixqRj1GRi1WRjtmdW5jdGlvbiBVRigpe3RoaXMuX3gwPXRoaXMuX3kwPXRoaXMuX3gxPXRoaXMuX3kxPW51bGwsdGhpcy5fPSIifWZ1bmN0aW9uIEdGKCl7cmV0dXJuIG5ldyBVRn1mdW5jdGlvbiBXRih0KXtyZXR1cm4gdC5zb3VyY2V9ZnVuY3Rpb24gcUYodCl7cmV0dXJuIHQudGFyZ2V0fWZ1bmN0aW9uIFlGKHQpe3JldHVybiB0LnJhZGl1c31mdW5jdGlvbiBYRih0KXtyZXR1cm4gdC5zdGFydEFuZ2xlfWZ1bmN0aW9uICRGKHQpe3JldHVybiB0LmVuZEFuZ2xlfVVGLnByb3RvdHlwZT1HRi5wcm90b3R5cGU9e2NvbnN0cnVjdG9yOlVGLG1vdmVUbzpmdW5jdGlvbih0LGUpe3RoaXMuXys9Ik0iKyh0aGlzLl94MD10aGlzLl94MT0rdCkrIiwiKyh0aGlzLl95MD10aGlzLl95MT0rZSl9LGNsb3NlUGF0aDpmdW5jdGlvbigpe251bGwhPT10aGlzLl94MSYmKHRoaXMuX3gxPXRoaXMuX3gwLHRoaXMuX3kxPXRoaXMuX3kwLHRoaXMuXys9IloiKX0sbGluZVRvOmZ1bmN0aW9uKHQsZSl7dGhpcy5fKz0iTCIrKHRoaXMuX3gxPSt0KSsiLCIrKHRoaXMuX3kxPStlKX0scXVhZHJhdGljQ3VydmVUbzpmdW5jdGlvbih0LGUsbixpKXt0aGlzLl8rPSJRIisgK3QrIiwiKyArZSsiLCIrKHRoaXMuX3gxPStuKSsiLCIrKHRoaXMuX3kxPStpKX0sYmV6aWVyQ3VydmVUbzpmdW5jdGlvbih0LGUsbixpLHIsbyl7dGhpcy5fKz0iQyIrICt0KyIsIisgK2UrIiwiKyArbisiLCIrICtpKyIsIisodGhpcy5feDE9K3IpKyIsIisodGhpcy5feTE9K28pfSxhcmNUbzpmdW5jdGlvbih0LGUsbixpLHIpe3ZhciBvPXRoaXMuX3gxLGE9dGhpcy5feTEscz0obj0rbiktKHQ9K3QpLGw9KGk9K2kpLShlPStlKSxjPW8tdCx1PWEtZSxoPWMqYyt1KnU7aWYoKHI9K3IpPDApdGhyb3cgbmV3IEVycm9yKCJuZWdhdGl2ZSByYWRpdXM6ICIrcik7aWYobnVsbD09PXRoaXMuX3gxKXRoaXMuXys9Ik0iKyh0aGlzLl94MT10KSsiLCIrKHRoaXMuX3kxPWUpO2Vsc2UgaWYoaD5WRilpZihNYXRoLmFicyh1KnMtbCpjKT5WRiYmcil7dmFyIGQ9bi1vLHA9aS1hLGY9cypzK2wqbCxtPWQqZCtwKnAsZz1NYXRoLnNxcnQoZiksXz1NYXRoLnNxcnQoaCkseT1yKk1hdGgudGFuKChIRi1NYXRoLmFjb3MoKGYraC1tKS8oMipnKl8pKSkvMiksdj15L18sYj15L2c7TWF0aC5hYnModi0xKT5WRiYmKHRoaXMuXys9IkwiKyh0K3YqYykrIiwiKyhlK3YqdSkpLHRoaXMuXys9IkEiK3IrIiwiK3IrIiwwLDAsIisgKyh1KmQ+YypwKSsiLCIrKHRoaXMuX3gxPXQrYipzKSsiLCIrKHRoaXMuX3kxPWUrYipsKX1lbHNlIHRoaXMuXys9IkwiKyh0aGlzLl94MT10KSsiLCIrKHRoaXMuX3kxPWUpfSxhcmM6ZnVuY3Rpb24odCxlLG4saSxyLG8pe3Q9K3QsZT0rZSxvPSEhbzt2YXIgYT0obj0rbikqTWF0aC5jb3MoaSkscz1uKk1hdGguc2luKGkpLGw9dCthLGM9ZStzLHU9MV5vLGg9bz9pLXI6ci1pO2lmKG48MCl0aHJvdyBuZXcgRXJyb3IoIm5lZ2F0aXZlIHJhZGl1czogIituKTtudWxsPT09dGhpcy5feDE/dGhpcy5fKz0iTSIrbCsiLCIrYzooTWF0aC5hYnModGhpcy5feDEtbCk+VkZ8fE1hdGguYWJzKHRoaXMuX3kxLWMpPlZGKSYmKHRoaXMuXys9IkwiK2wrIiwiK2MpLG4mJihoPDAmJihoPWglRkYrRkYpLGg+akY/dGhpcy5fKz0iQSIrbisiLCIrbisiLDAsMSwiK3UrIiwiKyh0LWEpKyIsIisoZS1zKSsiQSIrbisiLCIrbisiLDAsMSwiK3UrIiwiKyh0aGlzLl94MT1sKSsiLCIrKHRoaXMuX3kxPWMpOmg+VkYmJih0aGlzLl8rPSJBIituKyIsIituKyIsMCwiKyArKGg+PUhGKSsiLCIrdSsiLCIrKHRoaXMuX3gxPXQrbipNYXRoLmNvcyhyKSkrIiwiKyh0aGlzLl95MT1lK24qTWF0aC5zaW4ocikpKSl9LHJlY3Q6ZnVuY3Rpb24odCxlLG4saSl7dGhpcy5fKz0iTSIrKHRoaXMuX3gwPXRoaXMuX3gxPSt0KSsiLCIrKHRoaXMuX3kwPXRoaXMuX3kxPStlKSsiaCIrICtuKyJ2IisgK2krImgiKy1uKyJaIn0sdG9TdHJpbmc6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5ffX07dmFyIEtGPSIkIjtmdW5jdGlvbiBaRigpe31mdW5jdGlvbiBKRih0LGUpe3ZhciBuPW5ldyBaRjtpZih0IGluc3RhbmNlb2YgWkYpdC5lYWNoKChmdW5jdGlvbih0LGUpe24uc2V0KGUsdCl9KSk7ZWxzZSBpZihBcnJheS5pc0FycmF5KHQpKXt2YXIgaSxyPS0xLG89dC5sZW5ndGg7aWYobnVsbD09ZSlmb3IoOysrcjxvOyluLnNldChyLHRbcl0pO2Vsc2UgZm9yKDsrK3I8bzspbi5zZXQoZShpPXRbcl0scix0KSxpKX1lbHNlIGlmKHQpZm9yKHZhciBhIGluIHQpbi5zZXQoYSx0W2FdKTtyZXR1cm4gbn1mdW5jdGlvbiBRRigpe3JldHVybnt9fWZ1bmN0aW9uIHRWKHQsZSxuKXt0W2VdPW59ZnVuY3Rpb24gZVYoKXtyZXR1cm4gSkYoKX1mdW5jdGlvbiBuVih0LGUsbil7dC5zZXQoZSxuKX1mdW5jdGlvbiBpVigpe31aRi5wcm90b3R5cGU9SkYucHJvdG90eXBlPXtjb25zdHJ1Y3RvcjpaRixoYXM6ZnVuY3Rpb24odCl7cmV0dXJuIEtGK3QgaW4gdGhpc30sZ2V0OmZ1bmN0aW9uKHQpe3JldHVybiB0aGlzW0tGK3RdfSxzZXQ6ZnVuY3Rpb24odCxlKXtyZXR1cm4gdGhpc1tLRit0XT1lLHRoaXN9LHJlbW92ZTpmdW5jdGlvbih0KXt2YXIgZT1LRit0O3JldHVybiBlIGluIHRoaXMmJmRlbGV0ZSB0aGlzW2VdfSxjbGVhcjpmdW5jdGlvbigpe2Zvcih2YXIgdCBpbiB0aGlzKXRbMF09PT1LRiYmZGVsZXRlIHRoaXNbdF19LGtleXM6ZnVuY3Rpb24oKXt2YXIgdD1bXTtmb3IodmFyIGUgaW4gdGhpcyllWzBdPT09S0YmJnQucHVzaChlLnNsaWNlKDEpKTtyZXR1cm4gdH0sdmFsdWVzOmZ1bmN0aW9uKCl7dmFyIHQ9W107Zm9yKHZhciBlIGluIHRoaXMpZVswXT09PUtGJiZ0LnB1c2godGhpc1tlXSk7cmV0dXJuIHR9LGVudHJpZXM6ZnVuY3Rpb24oKXt2YXIgdD1bXTtmb3IodmFyIGUgaW4gdGhpcyllWzBdPT09S0YmJnQucHVzaCh7a2V5OmUuc2xpY2UoMSksdmFsdWU6dGhpc1tlXX0pO3JldHVybiB0fSxzaXplOmZ1bmN0aW9uKCl7dmFyIHQ9MDtmb3IodmFyIGUgaW4gdGhpcyllWzBdPT09S0YmJisrdDtyZXR1cm4gdH0sZW1wdHk6ZnVuY3Rpb24oKXtmb3IodmFyIHQgaW4gdGhpcylpZih0WzBdPT09S0YpcmV0dXJuITE7cmV0dXJuITB9LGVhY2g6ZnVuY3Rpb24odCl7Zm9yKHZhciBlIGluIHRoaXMpZVswXT09PUtGJiZ0KHRoaXNbZV0sZS5zbGljZSgxKSx0aGlzKX19O3ZhciByVj1KRi5wcm90b3R5cGU7ZnVuY3Rpb24gb1YodCxlKXt2YXIgbj1uZXcgaVY7aWYodCBpbnN0YW5jZW9mIGlWKXQuZWFjaCgoZnVuY3Rpb24odCl7bi5hZGQodCl9KSk7ZWxzZSBpZih0KXt2YXIgaT0tMSxyPXQubGVuZ3RoO2lmKG51bGw9PWUpZm9yKDsrK2k8cjspbi5hZGQodFtpXSk7ZWxzZSBmb3IoOysraTxyOyluLmFkZChlKHRbaV0saSx0KSl9cmV0dXJuIG59ZnVuY3Rpb24gYVYodCxlLG4pe3QucHJvdG90eXBlPWUucHJvdG90eXBlPW4sbi5jb25zdHJ1Y3Rvcj10fWZ1bmN0aW9uIHNWKHQsZSl7dmFyIG49T2JqZWN0LmNyZWF0ZSh0LnByb3RvdHlwZSk7Zm9yKHZhciBpIGluIGUpbltpXT1lW2ldO3JldHVybiBufWZ1bmN0aW9uIGxWKCl7fWlWLnByb3RvdHlwZT1vVi5wcm90b3R5cGU9e2NvbnN0cnVjdG9yOmlWLGhhczpyVi5oYXMsYWRkOmZ1bmN0aW9uKHQpe3JldHVybiB0aGlzW0tGKyh0Kz0iIildPXQsdGhpc30scmVtb3ZlOnJWLnJlbW92ZSxjbGVhcjpyVi5jbGVhcix2YWx1ZXM6clYua2V5cyxzaXplOnJWLnNpemUsZW1wdHk6clYuZW1wdHksZWFjaDpyVi5lYWNofTt2YXIgY1Y9LjcsdVY9MS9jVixoVj0iXFxzKihbKy1dP1xcZCspXFxzKiIsZFY9IlxccyooWystXT9cXGQqXFwuP1xcZCsoPzpbZUVdWystXT9cXGQrKT8pXFxzKiIscFY9IlxccyooWystXT9cXGQqXFwuP1xcZCsoPzpbZUVdWystXT9cXGQrKT8pJVxccyoiLGZWPS9eIyhbMC05YS1mXXszfSkkLyxtVj0vXiMoWzAtOWEtZl17Nn0pJC8sZ1Y9bmV3IFJlZ0V4cCgiXnJnYlxcKCIrW2hWLGhWLGhWXSsiXFwpJCIpLF9WPW5ldyBSZWdFeHAoIl5yZ2JcXCgiK1twVixwVixwVl0rIlxcKSQiKSx5Vj1uZXcgUmVnRXhwKCJecmdiYVxcKCIrW2hWLGhWLGhWLGRWXSsiXFwpJCIpLHZWPW5ldyBSZWdFeHAoIl5yZ2JhXFwoIitbcFYscFYscFYsZFZdKyJcXCkkIiksYlY9bmV3IFJlZ0V4cCgiXmhzbFxcKCIrW2RWLHBWLHBWXSsiXFwpJCIpLHhWPW5ldyBSZWdFeHAoIl5oc2xhXFwoIitbZFYscFYscFYsZFZdKyJcXCkkIiksd1Y9e2FsaWNlYmx1ZToxNTc5MjM4MyxhbnRpcXVld2hpdGU6MTY0NDQzNzUsYXF1YTo2NTUzNSxhcXVhbWFyaW5lOjgzODg1NjQsYXp1cmU6MTU3OTQxNzUsYmVpZ2U6MTYxMTkyNjAsYmlzcXVlOjE2NzcwMjQ0LGJsYWNrOjAsYmxhbmNoZWRhbG1vbmQ6MTY3NzIwNDUsYmx1ZToyNTUsYmx1ZXZpb2xldDo5MDU1MjAyLGJyb3duOjEwODI0MjM0LGJ1cmx5d29vZDoxNDU5NjIzMSxjYWRldGJsdWU6NjI2NjUyOCxjaGFydHJldXNlOjgzODgzNTIsY2hvY29sYXRlOjEzNzg5NDcwLGNvcmFsOjE2NzQ0MjcyLGNvcm5mbG93ZXJibHVlOjY1OTE5ODEsY29ybnNpbGs6MTY3NzUzODgsY3JpbXNvbjoxNDQyMzEwMCxjeWFuOjY1NTM1LGRhcmtibHVlOjEzOSxkYXJrY3lhbjozNTcyMyxkYXJrZ29sZGVucm9kOjEyMDkyOTM5LGRhcmtncmF5OjExMTE5MDE3LGRhcmtncmVlbjoyNTYwMCxkYXJrZ3JleToxMTExOTAxNyxkYXJra2hha2k6MTI0MzMyNTksZGFya21hZ2VudGE6OTEwOTY0MyxkYXJrb2xpdmVncmVlbjo1NTk3OTk5LGRhcmtvcmFuZ2U6MTY3NDc1MjAsZGFya29yY2hpZDoxMDA0MDAxMixkYXJrcmVkOjkxMDk1MDQsZGFya3NhbG1vbjoxNTMwODQxMCxkYXJrc2VhZ3JlZW46OTQxOTkxOSxkYXJrc2xhdGVibHVlOjQ3MzQzNDcsZGFya3NsYXRlZ3JheTozMTAwNDk1LGRhcmtzbGF0ZWdyZXk6MzEwMDQ5NSxkYXJrdHVycXVvaXNlOjUyOTQ1LGRhcmt2aW9sZXQ6OTY5OTUzOSxkZWVwcGluazoxNjcxNjk0NyxkZWVwc2t5Ymx1ZTo0OTE1MSxkaW1ncmF5OjY5MDgyNjUsZGltZ3JleTo2OTA4MjY1LGRvZGdlcmJsdWU6MjAwMzE5OSxmaXJlYnJpY2s6MTE2NzQxNDYsZmxvcmFsd2hpdGU6MTY3NzU5MjAsZm9yZXN0Z3JlZW46MjI2Mzg0MixmdWNoc2lhOjE2NzExOTM1LGdhaW5zYm9ybzoxNDQ3NDQ2MCxnaG9zdHdoaXRlOjE2MzE2NjcxLGdvbGQ6MTY3NjY3MjAsZ29sZGVucm9kOjE0MzI5MTIwLGdyYXk6ODQyMTUwNCxncmVlbjozMjc2OCxncmVlbnllbGxvdzoxMTQwMzA1NSxncmV5Ojg0MjE1MDQsaG9uZXlkZXc6MTU3OTQxNjAsaG90cGluazoxNjczODc0MCxpbmRpYW5yZWQ6MTM0NTg1MjQsaW5kaWdvOjQ5MTUzMzAsaXZvcnk6MTY3NzcyMDAsa2hha2k6MTU3ODc2NjAsbGF2ZW5kZXI6MTUxMzI0MTAsbGF2ZW5kZXJibHVzaDoxNjc3MzM2NSxsYXduZ3JlZW46ODE5MDk3NixsZW1vbmNoaWZmb246MTY3NzU4ODUsbGlnaHRibHVlOjExMzkzMjU0LGxpZ2h0Y29yYWw6MTU3NjE1MzYsbGlnaHRjeWFuOjE0NzQ1NTk5LGxpZ2h0Z29sZGVucm9keWVsbG93OjE2NDQ4MjEwLGxpZ2h0Z3JheToxMzg4MjMyMyxsaWdodGdyZWVuOjk0OTgyNTYsbGlnaHRncmV5OjEzODgyMzIzLGxpZ2h0cGluazoxNjc1ODQ2NSxsaWdodHNhbG1vbjoxNjc1Mjc2MixsaWdodHNlYWdyZWVuOjIxNDI4OTAsbGlnaHRza3libHVlOjg5MDAzNDYsbGlnaHRzbGF0ZWdyYXk6NzgzMzc1MyxsaWdodHNsYXRlZ3JleTo3ODMzNzUzLGxpZ2h0c3RlZWxibHVlOjExNTg0NzM0LGxpZ2h0eWVsbG93OjE2Nzc3MTg0LGxpbWU6NjUyODAsbGltZWdyZWVuOjMzMjkzMzAsbGluZW46MTY0NDU2NzAsbWFnZW50YToxNjcxMTkzNSxtYXJvb246ODM4ODYwOCxtZWRpdW1hcXVhbWFyaW5lOjY3MzczMjIsbWVkaXVtYmx1ZToyMDUsbWVkaXVtb3JjaGlkOjEyMjExNjY3LG1lZGl1bXB1cnBsZTo5NjYyNjgzLG1lZGl1bXNlYWdyZWVuOjM5NzgwOTcsbWVkaXVtc2xhdGVibHVlOjgwODc3OTAsbWVkaXVtc3ByaW5nZ3JlZW46NjQxNTQsbWVkaXVtdHVycXVvaXNlOjQ3NzIzMDAsbWVkaXVtdmlvbGV0cmVkOjEzMDQ3MTczLG1pZG5pZ2h0Ymx1ZToxNjQ0OTEyLG1pbnRjcmVhbToxNjEyMTg1MCxtaXN0eXJvc2U6MTY3NzAyNzMsbW9jY2FzaW46MTY3NzAyMjksbmF2YWpvd2hpdGU6MTY3Njg2ODUsbmF2eToxMjgsb2xkbGFjZToxNjY0MzU1OCxvbGl2ZTo4NDIxMzc2LG9saXZlZHJhYjo3MDQ4NzM5LG9yYW5nZToxNjc1MzkyMCxvcmFuZ2VyZWQ6MTY3MjkzNDQsb3JjaGlkOjE0MzE1NzM0LHBhbGVnb2xkZW5yb2Q6MTU2NTcxMzAscGFsZWdyZWVuOjEwMDI1ODgwLHBhbGV0dXJxdW9pc2U6MTE1Mjk5NjYscGFsZXZpb2xldHJlZDoxNDM4MTIwMyxwYXBheWF3aGlwOjE2NzczMDc3LHBlYWNocHVmZjoxNjc2NzY3MyxwZXJ1OjEzNDY4OTkxLHBpbms6MTY3NjEwMzUscGx1bToxNDUyNDYzNyxwb3dkZXJibHVlOjExNTkxOTEwLHB1cnBsZTo4Mzg4NzM2LHJlYmVjY2FwdXJwbGU6NjY5Nzg4MSxyZWQ6MTY3MTE2ODAscm9zeWJyb3duOjEyMzU3NTE5LHJveWFsYmx1ZTo0Mjg2OTQ1LHNhZGRsZWJyb3duOjkxMjcxODcsc2FsbW9uOjE2NDE2ODgyLHNhbmR5YnJvd246MTYwMzI4NjQsc2VhZ3JlZW46MzA1MDMyNyxzZWFzaGVsbDoxNjc3NDYzOCxzaWVubmE6MTA1MDY3OTcsc2lsdmVyOjEyNjMyMjU2LHNreWJsdWU6ODkwMDMzMSxzbGF0ZWJsdWU6Njk3MDA2MSxzbGF0ZWdyYXk6NzM3Mjk0NCxzbGF0ZWdyZXk6NzM3Mjk0NCxzbm93OjE2Nzc1OTMwLHNwcmluZ2dyZWVuOjY1NDA3LHN0ZWVsYmx1ZTo0NjIwOTgwLHRhbjoxMzgwODc4MCx0ZWFsOjMyODk2LHRoaXN0bGU6MTQyMDQ4ODgsdG9tYXRvOjE2NzM3MDk1LHR1cnF1b2lzZTo0MjUxODU2LHZpb2xldDoxNTYzMTA4Nix3aGVhdDoxNjExMzMzMSx3aGl0ZToxNjc3NzIxNSx3aGl0ZXNtb2tlOjE2MTE5Mjg1LHllbGxvdzoxNjc3Njk2MCx5ZWxsb3dncmVlbjoxMDE0NTA3NH07ZnVuY3Rpb24gU1YodCl7dmFyIGU7cmV0dXJuIHQ9KHQrIiIpLnRyaW0oKS50b0xvd2VyQ2FzZSgpLChlPWZWLmV4ZWModCkpP25ldyBDVigoZT1wYXJzZUludChlWzFdLDE2KSk+PjgmMTV8ZT4+NCYyNDAsZT4+NCYxNXwyNDAmZSwoMTUmZSk8PDR8MTUmZSwxKTooZT1tVi5leGVjKHQpKT9NVihwYXJzZUludChlWzFdLDE2KSk6KGU9Z1YuZXhlYyh0KSk/bmV3IENWKGVbMV0sZVsyXSxlWzNdLDEpOihlPV9WLmV4ZWModCkpP25ldyBDVigyNTUqZVsxXS8xMDAsMjU1KmVbMl0vMTAwLDI1NSplWzNdLzEwMCwxKTooZT15Vi5leGVjKHQpKT9FVihlWzFdLGVbMl0sZVszXSxlWzRdKTooZT12Vi5leGVjKHQpKT9FVigyNTUqZVsxXS8xMDAsMjU1KmVbMl0vMTAwLDI1NSplWzNdLzEwMCxlWzRdKTooZT1iVi5leGVjKHQpKT9rVihlWzFdLGVbMl0vMTAwLGVbM10vMTAwLDEpOihlPXhWLmV4ZWModCkpP2tWKGVbMV0sZVsyXS8xMDAsZVszXS8xMDAsZVs0XSk6d1YuaGFzT3duUHJvcGVydHkodCk/TVYod1ZbdF0pOiJ0cmFuc3BhcmVudCI9PT10P25ldyBDVihOYU4sTmFOLE5hTiwwKTpudWxsfWZ1bmN0aW9uIE1WKHQpe3JldHVybiBuZXcgQ1YodD4+MTYmMjU1LHQ+PjgmMjU1LDI1NSZ0LDEpfWZ1bmN0aW9uIEVWKHQsZSxuLGkpe3JldHVybiBpPD0wJiYodD1lPW49TmFOKSxuZXcgQ1YodCxlLG4saSl9ZnVuY3Rpb24gVFYodCl7cmV0dXJuIHQgaW5zdGFuY2VvZiBsVnx8KHQ9U1YodCkpLHQ/bmV3IENWKCh0PXQucmdiKCkpLnIsdC5nLHQuYix0Lm9wYWNpdHkpOm5ldyBDVn1mdW5jdGlvbiBBVih0LGUsbixpKXtyZXR1cm4gMT09PWFyZ3VtZW50cy5sZW5ndGg/VFYodCk6bmV3IENWKHQsZSxuLG51bGw9PWk/MTppKX1mdW5jdGlvbiBDVih0LGUsbixpKXt0aGlzLnI9K3QsdGhpcy5nPStlLHRoaXMuYj0rbix0aGlzLm9wYWNpdHk9K2l9ZnVuY3Rpb24ga1YodCxlLG4saSl7cmV0dXJuIGk8PTA/dD1lPW49TmFOOm48PTB8fG4+PTE/dD1lPU5hTjplPD0wJiYodD1OYU4pLG5ldyBJVih0LGUsbixpKX1mdW5jdGlvbiBMVih0KXtpZih0IGluc3RhbmNlb2YgSVYpcmV0dXJuIG5ldyBJVih0LmgsdC5zLHQubCx0Lm9wYWNpdHkpO2lmKHQgaW5zdGFuY2VvZiBsVnx8KHQ9U1YodCkpLCF0KXJldHVybiBuZXcgSVY7aWYodCBpbnN0YW5jZW9mIElWKXJldHVybiB0O3ZhciBlPSh0PXQucmdiKCkpLnIvMjU1LG49dC5nLzI1NSxpPXQuYi8yNTUscj1NYXRoLm1pbihlLG4saSksbz1NYXRoLm1heChlLG4saSksYT1OYU4scz1vLXIsbD0obytyKS8yO3JldHVybiBzPyhhPWU9PT1vPyhuLWkpL3MrNioobjxpKTpuPT09bz8oaS1lKS9zKzI6KGUtbikvcys0LHMvPWw8LjU/bytyOjItby1yLGEqPTYwKTpzPWw+MCYmbDwxPzA6YSxuZXcgSVYoYSxzLGwsdC5vcGFjaXR5KX1mdW5jdGlvbiBQVih0LGUsbixpKXtyZXR1cm4gMT09PWFyZ3VtZW50cy5sZW5ndGg/TFYodCk6bmV3IElWKHQsZSxuLG51bGw9PWk/MTppKX1mdW5jdGlvbiBJVih0LGUsbixpKXt0aGlzLmg9K3QsdGhpcy5zPStlLHRoaXMubD0rbix0aGlzLm9wYWNpdHk9K2l9ZnVuY3Rpb24gTlYodCxlLG4pe3JldHVybiAyNTUqKHQ8NjA/ZSsobi1lKSp0LzYwOnQ8MTgwP246dDwyNDA/ZSsobi1lKSooMjQwLXQpLzYwOmUpfWFWKGxWLFNWLHtkaXNwbGF5YWJsZTpmdW5jdGlvbigpe3JldHVybiB0aGlzLnJnYigpLmRpc3BsYXlhYmxlKCl9LHRvU3RyaW5nOmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMucmdiKCkrIiJ9fSksYVYoQ1YsQVYsc1YobFYse2JyaWdodGVyOmZ1bmN0aW9uKHQpe3JldHVybiB0PW51bGw9PXQ/dVY6TWF0aC5wb3codVYsdCksbmV3IENWKHRoaXMucip0LHRoaXMuZyp0LHRoaXMuYip0LHRoaXMub3BhY2l0eSl9LGRhcmtlcjpmdW5jdGlvbih0KXtyZXR1cm4gdD1udWxsPT10P2NWOk1hdGgucG93KGNWLHQpLG5ldyBDVih0aGlzLnIqdCx0aGlzLmcqdCx0aGlzLmIqdCx0aGlzLm9wYWNpdHkpfSxyZ2I6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpc30sZGlzcGxheWFibGU6ZnVuY3Rpb24oKXtyZXR1cm4gMDw9dGhpcy5yJiZ0aGlzLnI8PTI1NSYmMDw9dGhpcy5nJiZ0aGlzLmc8PTI1NSYmMDw9dGhpcy5iJiZ0aGlzLmI8PTI1NSYmMDw9dGhpcy5vcGFjaXR5JiZ0aGlzLm9wYWNpdHk8PTF9LHRvU3RyaW5nOmZ1bmN0aW9uKCl7dmFyIHQ9dGhpcy5vcGFjaXR5O3JldHVybigxPT09KHQ9aXNOYU4odCk/MTpNYXRoLm1heCgwLE1hdGgubWluKDEsdCkpKT8icmdiKCI6InJnYmEoIikrTWF0aC5tYXgoMCxNYXRoLm1pbigyNTUsTWF0aC5yb3VuZCh0aGlzLnIpfHwwKSkrIiwgIitNYXRoLm1heCgwLE1hdGgubWluKDI1NSxNYXRoLnJvdW5kKHRoaXMuZyl8fDApKSsiLCAiK01hdGgubWF4KDAsTWF0aC5taW4oMjU1LE1hdGgucm91bmQodGhpcy5iKXx8MCkpKygxPT09dD8iKSI6IiwgIit0KyIpIil9fSkpLGFWKElWLFBWLHNWKGxWLHticmlnaHRlcjpmdW5jdGlvbih0KXtyZXR1cm4gdD1udWxsPT10P3VWOk1hdGgucG93KHVWLHQpLG5ldyBJVih0aGlzLmgsdGhpcy5zLHRoaXMubCp0LHRoaXMub3BhY2l0eSl9LGRhcmtlcjpmdW5jdGlvbih0KXtyZXR1cm4gdD1udWxsPT10P2NWOk1hdGgucG93KGNWLHQpLG5ldyBJVih0aGlzLmgsdGhpcy5zLHRoaXMubCp0LHRoaXMub3BhY2l0eSl9LHJnYjpmdW5jdGlvbigpe3ZhciB0PXRoaXMuaCUzNjArMzYwKih0aGlzLmg8MCksZT1pc05hTih0KXx8aXNOYU4odGhpcy5zKT8wOnRoaXMucyxuPXRoaXMubCxpPW4rKG48LjU/bjoxLW4pKmUscj0yKm4taTtyZXR1cm4gbmV3IENWKE5WKHQ+PTI0MD90LTI0MDp0KzEyMCxyLGkpLE5WKHQscixpKSxOVih0PDEyMD90KzI0MDp0LTEyMCxyLGkpLHRoaXMub3BhY2l0eSl9LGRpc3BsYXlhYmxlOmZ1bmN0aW9uKCl7cmV0dXJuKDA8PXRoaXMucyYmdGhpcy5zPD0xfHxpc05hTih0aGlzLnMpKSYmMDw9dGhpcy5sJiZ0aGlzLmw8PTEmJjA8PXRoaXMub3BhY2l0eSYmdGhpcy5vcGFjaXR5PD0xfX0pKTt2YXIgT1Y9TWF0aC5QSS8xODAsUlY9MTgwL01hdGguUEkselY9Ljk1MDQ3LERWPTEuMDg4ODMsQlY9NC8yOSxIVj02LzI5LEZWPTMqSFYqSFY7ZnVuY3Rpb24gVlYodCl7aWYodCBpbnN0YW5jZW9mIFVWKXJldHVybiBuZXcgVVYodC5sLHQuYSx0LmIsdC5vcGFjaXR5KTtpZih0IGluc3RhbmNlb2YgS1Ype3ZhciBlPXQuaCpPVjtyZXR1cm4gbmV3IFVWKHQubCxNYXRoLmNvcyhlKSp0LmMsTWF0aC5zaW4oZSkqdC5jLHQub3BhY2l0eSl9dCBpbnN0YW5jZW9mIENWfHwodD1UVih0KSk7dmFyIG49WVYodC5yKSxpPVlWKHQuZykscj1ZVih0LmIpLG89R1YoKC40MTI0NTY0Km4rLjM1NzU3NjEqaSsuMTgwNDM3NSpyKS96ViksYT1HVigoLjIxMjY3MjkqbisuNzE1MTUyMippKy4wNzIxNzUqcikvMSk7cmV0dXJuIG5ldyBVVigxMTYqYS0xNiw1MDAqKG8tYSksMjAwKihhLUdWKCguMDE5MzMzOSpuKy4xMTkxOTIqaSsuOTUwMzA0MSpyKS9EVikpLHQub3BhY2l0eSl9ZnVuY3Rpb24galYodCxlLG4saSl7cmV0dXJuIDE9PT1hcmd1bWVudHMubGVuZ3RoP1ZWKHQpOm5ldyBVVih0LGUsbixudWxsPT1pPzE6aSl9ZnVuY3Rpb24gVVYodCxlLG4saSl7dGhpcy5sPSt0LHRoaXMuYT0rZSx0aGlzLmI9K24sdGhpcy5vcGFjaXR5PStpfWZ1bmN0aW9uIEdWKHQpe3JldHVybiB0Pi4wMDg4NTY0NTE2NzkwMzU2MzE/TWF0aC5wb3codCwxLzMpOnQvRlYrQlZ9ZnVuY3Rpb24gV1YodCl7cmV0dXJuIHQ+SFY/dCp0KnQ6RlYqKHQtQlYpfWZ1bmN0aW9uIHFWKHQpe3JldHVybiAyNTUqKHQ8PS4wMDMxMzA4PzEyLjkyKnQ6MS4wNTUqTWF0aC5wb3codCwxLzIuNCktLjA1NSl9ZnVuY3Rpb24gWVYodCl7cmV0dXJuKHQvPTI1NSk8PS4wNDA0NT90LzEyLjkyOk1hdGgucG93KCh0Ky4wNTUpLzEuMDU1LDIuNCl9ZnVuY3Rpb24gWFYodCl7aWYodCBpbnN0YW5jZW9mIEtWKXJldHVybiBuZXcgS1YodC5oLHQuYyx0LmwsdC5vcGFjaXR5KTt0IGluc3RhbmNlb2YgVVZ8fCh0PVZWKHQpKTt2YXIgZT1NYXRoLmF0YW4yKHQuYix0LmEpKlJWO3JldHVybiBuZXcgS1YoZTwwP2UrMzYwOmUsTWF0aC5zcXJ0KHQuYSp0LmErdC5iKnQuYiksdC5sLHQub3BhY2l0eSl9ZnVuY3Rpb24gJFYodCxlLG4saSl7cmV0dXJuIDE9PT1hcmd1bWVudHMubGVuZ3RoP1hWKHQpOm5ldyBLVih0LGUsbixudWxsPT1pPzE6aSl9ZnVuY3Rpb24gS1YodCxlLG4saSl7dGhpcy5oPSt0LHRoaXMuYz0rZSx0aGlzLmw9K24sdGhpcy5vcGFjaXR5PStpfWFWKFVWLGpWLHNWKGxWLHticmlnaHRlcjpmdW5jdGlvbih0KXtyZXR1cm4gbmV3IFVWKHRoaXMubCsxOCoobnVsbD09dD8xOnQpLHRoaXMuYSx0aGlzLmIsdGhpcy5vcGFjaXR5KX0sZGFya2VyOmZ1bmN0aW9uKHQpe3JldHVybiBuZXcgVVYodGhpcy5sLTE4KihudWxsPT10PzE6dCksdGhpcy5hLHRoaXMuYix0aGlzLm9wYWNpdHkpfSxyZ2I6ZnVuY3Rpb24oKXt2YXIgdD0odGhpcy5sKzE2KS8xMTYsZT1pc05hTih0aGlzLmEpP3Q6dCt0aGlzLmEvNTAwLG49aXNOYU4odGhpcy5iKT90OnQtdGhpcy5iLzIwMDtyZXR1cm4gdD0xKldWKHQpLG5ldyBDVihxVigzLjI0MDQ1NDIqKGU9elYqV1YoZSkpLTEuNTM3MTM4NSp0LS40OTg1MzE0KihuPURWKldWKG4pKSkscVYoLS45NjkyNjYqZSsxLjg3NjAxMDgqdCsuMDQxNTU2Km4pLHFWKC4wNTU2NDM0KmUtLjIwNDAyNTkqdCsxLjA1NzIyNTIqbiksdGhpcy5vcGFjaXR5KX19KSksYVYoS1YsJFYsc1YobFYse2JyaWdodGVyOmZ1bmN0aW9uKHQpe3JldHVybiBuZXcgS1YodGhpcy5oLHRoaXMuYyx0aGlzLmwrMTgqKG51bGw9PXQ/MTp0KSx0aGlzLm9wYWNpdHkpfSxkYXJrZXI6ZnVuY3Rpb24odCl7cmV0dXJuIG5ldyBLVih0aGlzLmgsdGhpcy5jLHRoaXMubC0xOCoobnVsbD09dD8xOnQpLHRoaXMub3BhY2l0eSl9LHJnYjpmdW5jdGlvbigpe3JldHVybiBWVih0aGlzKS5yZ2IoKX19KSk7dmFyIFpWPS0uMjkyMjcsSlY9LS45MDY0OSxRVj0xLjk3Mjk0O2Z1bmN0aW9uIHRqKHQpe2lmKHQgaW5zdGFuY2VvZiBuailyZXR1cm4gbmV3IG5qKHQuaCx0LnMsdC5sLHQub3BhY2l0eSk7dCBpbnN0YW5jZW9mIENWfHwodD1UVih0KSk7dmFyIGU9dC5nLzI1NSxuPXQuYi8yNTUsaT0oLS42NTU3NjM2NjY3OTk5OTk5Km4rdC5yLzI1NSotMS43ODg0NTAzODA2LTMuNTE3Mjk4MjQzOCplKS8tNS45NjE1MTIyOTEyLHI9bi1pLG89KFFWKihlLWkpLVpWKnIpL0pWLGE9TWF0aC5zcXJ0KG8qbytyKnIpLyhRVippKigxLWkpKSxzPWE/TWF0aC5hdGFuMihvLHIpKlJWLTEyMDpOYU47cmV0dXJuIG5ldyBuaihzPDA/cyszNjA6cyxhLGksdC5vcGFjaXR5KX1mdW5jdGlvbiBlaih0LGUsbixpKXtyZXR1cm4gMT09PWFyZ3VtZW50cy5sZW5ndGg/dGoodCk6bmV3IG5qKHQsZSxuLG51bGw9PWk/MTppKX1mdW5jdGlvbiBuaih0LGUsbixpKXt0aGlzLmg9K3QsdGhpcy5zPStlLHRoaXMubD0rbix0aGlzLm9wYWNpdHk9K2l9YVYobmosZWosc1YobFYse2JyaWdodGVyOmZ1bmN0aW9uKHQpe3JldHVybiB0PW51bGw9PXQ/dVY6TWF0aC5wb3codVYsdCksbmV3IG5qKHRoaXMuaCx0aGlzLnMsdGhpcy5sKnQsdGhpcy5vcGFjaXR5KX0sZGFya2VyOmZ1bmN0aW9uKHQpe3JldHVybiB0PW51bGw9PXQ/Y1Y6TWF0aC5wb3coY1YsdCksbmV3IG5qKHRoaXMuaCx0aGlzLnMsdGhpcy5sKnQsdGhpcy5vcGFjaXR5KX0scmdiOmZ1bmN0aW9uKCl7dmFyIHQ9aXNOYU4odGhpcy5oKT8wOih0aGlzLmgrMTIwKSpPVixlPSt0aGlzLmwsbj1pc05hTih0aGlzLnMpPzA6dGhpcy5zKmUqKDEtZSksaT1NYXRoLmNvcyh0KSxyPU1hdGguc2luKHQpO3JldHVybiBuZXcgQ1YoMjU1KihlK24qKC0uMTQ4NjEqaSsxLjc4Mjc3KnIpKSwyNTUqKGUrbiooWlYqaStKVipyKSksMjU1KihlK24qKFFWKmkpKSx0aGlzLm9wYWNpdHkpfX0pKTt2YXIgaWo9e3ZhbHVlOmZ1bmN0aW9uKCl7fX07ZnVuY3Rpb24gcmooKXtmb3IodmFyIHQsZT0wLG49YXJndW1lbnRzLmxlbmd0aCxpPXt9O2U8bjsrK2Upe2lmKCEodD1hcmd1bWVudHNbZV0rIiIpfHx0IGluIGkpdGhyb3cgbmV3IEVycm9yKCJpbGxlZ2FsIHR5cGU6ICIrdCk7aVt0XT1bXX1yZXR1cm4gbmV3IG9qKGkpfWZ1bmN0aW9uIG9qKHQpe3RoaXMuXz10fWZ1bmN0aW9uIGFqKHQsZSl7cmV0dXJuIHQudHJpbSgpLnNwbGl0KC9efFxzKy8pLm1hcCgoZnVuY3Rpb24odCl7dmFyIG49IiIsaT10LmluZGV4T2YoIi4iKTtpZihpPj0wJiYobj10LnNsaWNlKGkrMSksdD10LnNsaWNlKDAsaSkpLHQmJiFlLmhhc093blByb3BlcnR5KHQpKXRocm93IG5ldyBFcnJvcigidW5rbm93biB0eXBlOiAiK3QpO3JldHVybnt0eXBlOnQsbmFtZTpufX0pKX1mdW5jdGlvbiBzaih0LGUpe2Zvcih2YXIgbixpPTAscj10Lmxlbmd0aDtpPHI7KytpKWlmKChuPXRbaV0pLm5hbWU9PT1lKXJldHVybiBuLnZhbHVlfWZ1bmN0aW9uIGxqKHQsZSxuKXtmb3IodmFyIGk9MCxyPXQubGVuZ3RoO2k8cjsrK2kpaWYodFtpXS5uYW1lPT09ZSl7dFtpXT1paix0PXQuc2xpY2UoMCxpKS5jb25jYXQodC5zbGljZShpKzEpKTticmVha31yZXR1cm4gbnVsbCE9biYmdC5wdXNoKHtuYW1lOmUsdmFsdWU6bn0pLHR9b2oucHJvdG90eXBlPXJqLnByb3RvdHlwZT17Y29uc3RydWN0b3I6b2osb246ZnVuY3Rpb24odCxlKXt2YXIgbixpPXRoaXMuXyxyPWFqKHQrIiIsaSksbz0tMSxhPXIubGVuZ3RoO2lmKCEoYXJndW1lbnRzLmxlbmd0aDwyKSl7aWYobnVsbCE9ZSYmImZ1bmN0aW9uIiE9dHlwZW9mIGUpdGhyb3cgbmV3IEVycm9yKCJpbnZhbGlkIGNhbGxiYWNrOiAiK2UpO2Zvcig7KytvPGE7KWlmKG49KHQ9cltvXSkudHlwZSlpW25dPWxqKGlbbl0sdC5uYW1lLGUpO2Vsc2UgaWYobnVsbD09ZSlmb3IobiBpbiBpKWlbbl09bGooaVtuXSx0Lm5hbWUsbnVsbCk7cmV0dXJuIHRoaXN9Zm9yKDsrK288YTspaWYoKG49KHQ9cltvXSkudHlwZSkmJihuPXNqKGlbbl0sdC5uYW1lKSkpcmV0dXJuIG59LGNvcHk6ZnVuY3Rpb24oKXt2YXIgdD17fSxlPXRoaXMuXztmb3IodmFyIG4gaW4gZSl0W25dPWVbbl0uc2xpY2UoKTtyZXR1cm4gbmV3IG9qKHQpfSxjYWxsOmZ1bmN0aW9uKHQsZSl7aWYoKG49YXJndW1lbnRzLmxlbmd0aC0yKT4wKWZvcih2YXIgbixpLHI9bmV3IEFycmF5KG4pLG89MDtvPG47KytvKXJbb109YXJndW1lbnRzW28rMl07aWYoIXRoaXMuXy5oYXNPd25Qcm9wZXJ0eSh0KSl0aHJvdyBuZXcgRXJyb3IoInVua25vd24gdHlwZTogIit0KTtmb3Iobz0wLG49KGk9dGhpcy5fW3RdKS5sZW5ndGg7bzxuOysrbylpW29dLnZhbHVlLmFwcGx5KGUscil9LGFwcGx5OmZ1bmN0aW9uKHQsZSxuKXtpZighdGhpcy5fLmhhc093blByb3BlcnR5KHQpKXRocm93IG5ldyBFcnJvcigidW5rbm93biB0eXBlOiAiK3QpO2Zvcih2YXIgaT10aGlzLl9bdF0scj0wLG89aS5sZW5ndGg7cjxvOysrcilpW3JdLnZhbHVlLmFwcGx5KGUsbil9fTt2YXIgY2o9e3ZhbHVlOmZ1bmN0aW9uKCl7fX07ZnVuY3Rpb24gdWooKXtmb3IodmFyIHQsZT0wLG49YXJndW1lbnRzLmxlbmd0aCxpPXt9O2U8bjsrK2Upe2lmKCEodD1hcmd1bWVudHNbZV0rIiIpfHx0IGluIGl8fC9bXHMuXS8udGVzdCh0KSl0aHJvdyBuZXcgRXJyb3IoImlsbGVnYWwgdHlwZTogIit0KTtpW3RdPVtdfXJldHVybiBuZXcgaGooaSl9ZnVuY3Rpb24gaGoodCl7dGhpcy5fPXR9ZnVuY3Rpb24gZGoodCxlKXtyZXR1cm4gdC50cmltKCkuc3BsaXQoL158XHMrLykubWFwKChmdW5jdGlvbih0KXt2YXIgbj0iIixpPXQuaW5kZXhPZigiLiIpO2lmKGk+PTAmJihuPXQuc2xpY2UoaSsxKSx0PXQuc2xpY2UoMCxpKSksdCYmIWUuaGFzT3duUHJvcGVydHkodCkpdGhyb3cgbmV3IEVycm9yKCJ1bmtub3duIHR5cGU6ICIrdCk7cmV0dXJue3R5cGU6dCxuYW1lOm59fSkpfWZ1bmN0aW9uIHBqKHQsZSl7Zm9yKHZhciBuLGk9MCxyPXQubGVuZ3RoO2k8cjsrK2kpaWYoKG49dFtpXSkubmFtZT09PWUpcmV0dXJuIG4udmFsdWV9ZnVuY3Rpb24gZmoodCxlLG4pe2Zvcih2YXIgaT0wLHI9dC5sZW5ndGg7aTxyOysraSlpZih0W2ldLm5hbWU9PT1lKXt0W2ldPWNqLHQ9dC5zbGljZSgwLGkpLmNvbmNhdCh0LnNsaWNlKGkrMSkpO2JyZWFrfXJldHVybiBudWxsIT1uJiZ0LnB1c2goe25hbWU6ZSx2YWx1ZTpufSksdH1oai5wcm90b3R5cGU9dWoucHJvdG90eXBlPXtjb25zdHJ1Y3RvcjpoaixvbjpmdW5jdGlvbih0LGUpe3ZhciBuLGk9dGhpcy5fLHI9ZGoodCsiIixpKSxvPS0xLGE9ci5sZW5ndGg7aWYoIShhcmd1bWVudHMubGVuZ3RoPDIpKXtpZihudWxsIT1lJiYiZnVuY3Rpb24iIT10eXBlb2YgZSl0aHJvdyBuZXcgRXJyb3IoImludmFsaWQgY2FsbGJhY2s6ICIrZSk7Zm9yKDsrK288YTspaWYobj0odD1yW29dKS50eXBlKWlbbl09ZmooaVtuXSx0Lm5hbWUsZSk7ZWxzZSBpZihudWxsPT1lKWZvcihuIGluIGkpaVtuXT1maihpW25dLHQubmFtZSxudWxsKTtyZXR1cm4gdGhpc31mb3IoOysrbzxhOylpZigobj0odD1yW29dKS50eXBlKSYmKG49cGooaVtuXSx0Lm5hbWUpKSlyZXR1cm4gbn0sY29weTpmdW5jdGlvbigpe3ZhciB0PXt9LGU9dGhpcy5fO2Zvcih2YXIgbiBpbiBlKXRbbl09ZVtuXS5zbGljZSgpO3JldHVybiBuZXcgaGoodCl9LGNhbGw6ZnVuY3Rpb24odCxlKXtpZigobj1hcmd1bWVudHMubGVuZ3RoLTIpPjApZm9yKHZhciBuLGkscj1uZXcgQXJyYXkobiksbz0wO288bjsrK28pcltvXT1hcmd1bWVudHNbbysyXTtpZighdGhpcy5fLmhhc093blByb3BlcnR5KHQpKXRocm93IG5ldyBFcnJvcigidW5rbm93biB0eXBlOiAiK3QpO2ZvcihvPTAsbj0oaT10aGlzLl9bdF0pLmxlbmd0aDtvPG47KytvKWlbb10udmFsdWUuYXBwbHkoZSxyKX0sYXBwbHk6ZnVuY3Rpb24odCxlLG4pe2lmKCF0aGlzLl8uaGFzT3duUHJvcGVydHkodCkpdGhyb3cgbmV3IEVycm9yKCJ1bmtub3duIHR5cGU6ICIrdCk7Zm9yKHZhciBpPXRoaXMuX1t0XSxyPTAsbz1pLmxlbmd0aDtyPG87KytyKWlbcl0udmFsdWUuYXBwbHkoZSxuKX19O3ZhciBtaj0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94aHRtbCIsZ2o9e3N2ZzoiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciLHhodG1sOm1qLHhsaW5rOiJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIix4bWw6Imh0dHA6Ly93d3cudzMub3JnL1hNTC8xOTk4L25hbWVzcGFjZSIseG1sbnM6Imh0dHA6Ly93d3cudzMub3JnLzIwMDAveG1sbnMvIn07ZnVuY3Rpb24gX2oodCl7dmFyIGU9dCs9IiIsbj1lLmluZGV4T2YoIjoiKTtyZXR1cm4gbj49MCYmInhtbG5zIiE9PShlPXQuc2xpY2UoMCxuKSkmJih0PXQuc2xpY2UobisxKSksZ2ouaGFzT3duUHJvcGVydHkoZSk/e3NwYWNlOmdqW2VdLGxvY2FsOnR9OnR9ZnVuY3Rpb24geWoodCl7cmV0dXJuIGZ1bmN0aW9uKCl7dmFyIGU9dGhpcy5vd25lckRvY3VtZW50LG49dGhpcy5uYW1lc3BhY2VVUkk7cmV0dXJuIG49PT1taiYmZS5kb2N1bWVudEVsZW1lbnQubmFtZXNwYWNlVVJJPT09bWo/ZS5jcmVhdGVFbGVtZW50KHQpOmUuY3JlYXRlRWxlbWVudE5TKG4sdCl9fWZ1bmN0aW9uIHZqKHQpe3JldHVybiBmdW5jdGlvbigpe3JldHVybiB0aGlzLm93bmVyRG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKHQuc3BhY2UsdC5sb2NhbCl9fWZ1bmN0aW9uIGJqKHQpe3ZhciBlPV9qKHQpO3JldHVybihlLmxvY2FsP3ZqOnlqKShlKX1mdW5jdGlvbiB4aigpe31mdW5jdGlvbiB3aih0KXtyZXR1cm4gbnVsbD09dD94ajpmdW5jdGlvbigpe3JldHVybiB0aGlzLnF1ZXJ5U2VsZWN0b3IodCl9fWZ1bmN0aW9uIFNqKCl7cmV0dXJuW119ZnVuY3Rpb24gTWoodCl7cmV0dXJuIG5ldyBBcnJheSh0Lmxlbmd0aCl9ZnVuY3Rpb24gRWoodCxlKXt0aGlzLm93bmVyRG9jdW1lbnQ9dC5vd25lckRvY3VtZW50LHRoaXMubmFtZXNwYWNlVVJJPXQubmFtZXNwYWNlVVJJLHRoaXMuX25leHQ9bnVsbCx0aGlzLl9wYXJlbnQ9dCx0aGlzLl9fZGF0YV9fPWV9ZnVuY3Rpb24gVGoodCxlLG4saSxyLG8pe2Zvcih2YXIgYSxzPTAsbD1lLmxlbmd0aCxjPW8ubGVuZ3RoO3M8YzsrK3MpKGE9ZVtzXSk/KGEuX19kYXRhX189b1tzXSxpW3NdPWEpOm5bc109bmV3IEVqKHQsb1tzXSk7Zm9yKDtzPGw7KytzKShhPWVbc10pJiYocltzXT1hKX1mdW5jdGlvbiBBaih0LGUsbixpLHIsbyxhKXt2YXIgcyxsLGMsdT17fSxoPWUubGVuZ3RoLGQ9by5sZW5ndGgscD1uZXcgQXJyYXkoaCk7Zm9yKHM9MDtzPGg7KytzKShsPWVbc10pJiYocFtzXT1jPSIkIithLmNhbGwobCxsLl9fZGF0YV9fLHMsZSksYyBpbiB1P3Jbc109bDp1W2NdPWwpO2ZvcihzPTA7czxkOysrcykobD11W2M9IiQiK2EuY2FsbCh0LG9bc10scyxvKV0pPyhpW3NdPWwsbC5fX2RhdGFfXz1vW3NdLHVbY109bnVsbCk6bltzXT1uZXcgRWoodCxvW3NdKTtmb3Iocz0wO3M8aDsrK3MpKGw9ZVtzXSkmJnVbcFtzXV09PT1sJiYocltzXT1sKX1mdW5jdGlvbiBDaih0LGUpe3JldHVybiB0PGU/LTE6dD5lPzE6dD49ZT8wOk5hTn1mdW5jdGlvbiBraih0KXtyZXR1cm4gZnVuY3Rpb24oKXt0aGlzLnJlbW92ZUF0dHJpYnV0ZSh0KX19ZnVuY3Rpb24gTGoodCl7cmV0dXJuIGZ1bmN0aW9uKCl7dGhpcy5yZW1vdmVBdHRyaWJ1dGVOUyh0LnNwYWNlLHQubG9jYWwpfX1mdW5jdGlvbiBQaih0LGUpe3JldHVybiBmdW5jdGlvbigpe3RoaXMuc2V0QXR0cmlidXRlKHQsZSl9fWZ1bmN0aW9uIElqKHQsZSl7cmV0dXJuIGZ1bmN0aW9uKCl7dGhpcy5zZXRBdHRyaWJ1dGVOUyh0LnNwYWNlLHQubG9jYWwsZSl9fWZ1bmN0aW9uIE5qKHQsZSl7cmV0dXJuIGZ1bmN0aW9uKCl7dmFyIG49ZS5hcHBseSh0aGlzLGFyZ3VtZW50cyk7bnVsbD09bj90aGlzLnJlbW92ZUF0dHJpYnV0ZSh0KTp0aGlzLnNldEF0dHJpYnV0ZSh0LG4pfX1mdW5jdGlvbiBPaih0LGUpe3JldHVybiBmdW5jdGlvbigpe3ZhciBuPWUuYXBwbHkodGhpcyxhcmd1bWVudHMpO251bGw9PW4/dGhpcy5yZW1vdmVBdHRyaWJ1dGVOUyh0LnNwYWNlLHQubG9jYWwpOnRoaXMuc2V0QXR0cmlidXRlTlModC5zcGFjZSx0LmxvY2FsLG4pfX1mdW5jdGlvbiBSaih0KXtyZXR1cm4gdC5vd25lckRvY3VtZW50JiZ0Lm93bmVyRG9jdW1lbnQuZGVmYXVsdFZpZXd8fHQuZG9jdW1lbnQmJnR8fHQuZGVmYXVsdFZpZXd9ZnVuY3Rpb24gemoodCl7cmV0dXJuIGZ1bmN0aW9uKCl7dGhpcy5zdHlsZS5yZW1vdmVQcm9wZXJ0eSh0KX19ZnVuY3Rpb24gRGoodCxlLG4pe3JldHVybiBmdW5jdGlvbigpe3RoaXMuc3R5bGUuc2V0UHJvcGVydHkodCxlLG4pfX1mdW5jdGlvbiBCaih0LGUsbil7cmV0dXJuIGZ1bmN0aW9uKCl7dmFyIGk9ZS5hcHBseSh0aGlzLGFyZ3VtZW50cyk7bnVsbD09aT90aGlzLnN0eWxlLnJlbW92ZVByb3BlcnR5KHQpOnRoaXMuc3R5bGUuc2V0UHJvcGVydHkodCxpLG4pfX1mdW5jdGlvbiBIaih0LGUpe3JldHVybiB0LnN0eWxlLmdldFByb3BlcnR5VmFsdWUoZSl8fFJqKHQpLmdldENvbXB1dGVkU3R5bGUodCxudWxsKS5nZXRQcm9wZXJ0eVZhbHVlKGUpfWZ1bmN0aW9uIEZqKHQpe3JldHVybiBmdW5jdGlvbigpe2RlbGV0ZSB0aGlzW3RdfX1mdW5jdGlvbiBWaih0LGUpe3JldHVybiBmdW5jdGlvbigpe3RoaXNbdF09ZX19ZnVuY3Rpb24gamoodCxlKXtyZXR1cm4gZnVuY3Rpb24oKXt2YXIgbj1lLmFwcGx5KHRoaXMsYXJndW1lbnRzKTtudWxsPT1uP2RlbGV0ZSB0aGlzW3RdOnRoaXNbdF09bn19ZnVuY3Rpb24gVWoodCl7cmV0dXJuIHQudHJpbSgpLnNwbGl0KC9efFxzKy8pfWZ1bmN0aW9uIEdqKHQpe3JldHVybiB0LmNsYXNzTGlzdHx8bmV3IFdqKHQpfWZ1bmN0aW9uIFdqKHQpe3RoaXMuX25vZGU9dCx0aGlzLl9uYW1lcz1Vaih0LmdldEF0dHJpYnV0ZSgiY2xhc3MiKXx8IiIpfWZ1bmN0aW9uIHFqKHQsZSl7Zm9yKHZhciBuPUdqKHQpLGk9LTEscj1lLmxlbmd0aDsrK2k8cjspbi5hZGQoZVtpXSl9ZnVuY3Rpb24gWWoodCxlKXtmb3IodmFyIG49R2oodCksaT0tMSxyPWUubGVuZ3RoOysraTxyOyluLnJlbW92ZShlW2ldKX1mdW5jdGlvbiBYaih0KXtyZXR1cm4gZnVuY3Rpb24oKXtxaih0aGlzLHQpfX1mdW5jdGlvbiAkaih0KXtyZXR1cm4gZnVuY3Rpb24oKXtZaih0aGlzLHQpfX1mdW5jdGlvbiBLaih0LGUpe3JldHVybiBmdW5jdGlvbigpeyhlLmFwcGx5KHRoaXMsYXJndW1lbnRzKT9xajpZaikodGhpcyx0KX19ZnVuY3Rpb24gWmooKXt0aGlzLnRleHRDb250ZW50PSIifWZ1bmN0aW9uIEpqKHQpe3JldHVybiBmdW5jdGlvbigpe3RoaXMudGV4dENvbnRlbnQ9dH19ZnVuY3Rpb24gUWoodCl7cmV0dXJuIGZ1bmN0aW9uKCl7dmFyIGU9dC5hcHBseSh0aGlzLGFyZ3VtZW50cyk7dGhpcy50ZXh0Q29udGVudD1udWxsPT1lPyIiOmV9fWZ1bmN0aW9uIHRVKCl7dGhpcy5pbm5lckhUTUw9IiJ9ZnVuY3Rpb24gZVUodCl7cmV0dXJuIGZ1bmN0aW9uKCl7dGhpcy5pbm5lckhUTUw9dH19ZnVuY3Rpb24gblUodCl7cmV0dXJuIGZ1bmN0aW9uKCl7dmFyIGU9dC5hcHBseSh0aGlzLGFyZ3VtZW50cyk7dGhpcy5pbm5lckhUTUw9bnVsbD09ZT8iIjplfX1mdW5jdGlvbiBpVSgpe3RoaXMubmV4dFNpYmxpbmcmJnRoaXMucGFyZW50Tm9kZS5hcHBlbmRDaGlsZCh0aGlzKX1mdW5jdGlvbiByVSgpe3RoaXMucHJldmlvdXNTaWJsaW5nJiZ0aGlzLnBhcmVudE5vZGUuaW5zZXJ0QmVmb3JlKHRoaXMsdGhpcy5wYXJlbnROb2RlLmZpcnN0Q2hpbGQpfWZ1bmN0aW9uIG9VKCl7cmV0dXJuIG51bGx9ZnVuY3Rpb24gYVUoKXt2YXIgdD10aGlzLnBhcmVudE5vZGU7dCYmdC5yZW1vdmVDaGlsZCh0aGlzKX1mdW5jdGlvbiBzVSgpe3ZhciB0PXRoaXMuY2xvbmVOb2RlKCExKSxlPXRoaXMucGFyZW50Tm9kZTtyZXR1cm4gZT9lLmluc2VydEJlZm9yZSh0LHRoaXMubmV4dFNpYmxpbmcpOnR9ZnVuY3Rpb24gbFUoKXt2YXIgdD10aGlzLmNsb25lTm9kZSghMCksZT10aGlzLnBhcmVudE5vZGU7cmV0dXJuIGU/ZS5pbnNlcnRCZWZvcmUodCx0aGlzLm5leHRTaWJsaW5nKTp0fUVqLnByb3RvdHlwZT17Y29uc3RydWN0b3I6RWosYXBwZW5kQ2hpbGQ6ZnVuY3Rpb24odCl7cmV0dXJuIHRoaXMuX3BhcmVudC5pbnNlcnRCZWZvcmUodCx0aGlzLl9uZXh0KX0saW5zZXJ0QmVmb3JlOmZ1bmN0aW9uKHQsZSl7cmV0dXJuIHRoaXMuX3BhcmVudC5pbnNlcnRCZWZvcmUodCxlKX0scXVlcnlTZWxlY3RvcjpmdW5jdGlvbih0KXtyZXR1cm4gdGhpcy5fcGFyZW50LnF1ZXJ5U2VsZWN0b3IodCl9LHF1ZXJ5U2VsZWN0b3JBbGw6ZnVuY3Rpb24odCl7cmV0dXJuIHRoaXMuX3BhcmVudC5xdWVyeVNlbGVjdG9yQWxsKHQpfX0sV2oucHJvdG90eXBlPXthZGQ6ZnVuY3Rpb24odCl7dGhpcy5fbmFtZXMuaW5kZXhPZih0KTwwJiYodGhpcy5fbmFtZXMucHVzaCh0KSx0aGlzLl9ub2RlLnNldEF0dHJpYnV0ZSgiY2xhc3MiLHRoaXMuX25hbWVzLmpvaW4oIiAiKSkpfSxyZW1vdmU6ZnVuY3Rpb24odCl7dmFyIGU9dGhpcy5fbmFtZXMuaW5kZXhPZih0KTtlPj0wJiYodGhpcy5fbmFtZXMuc3BsaWNlKGUsMSksdGhpcy5fbm9kZS5zZXRBdHRyaWJ1dGUoImNsYXNzIix0aGlzLl9uYW1lcy5qb2luKCIgIikpKX0sY29udGFpbnM6ZnVuY3Rpb24odCl7cmV0dXJuIHRoaXMuX25hbWVzLmluZGV4T2YodCk+PTB9fTt2YXIgY1U9e30sdVU9bnVsbDtmdW5jdGlvbiBoVSh0LGUsbil7cmV0dXJuIHQ9ZFUodCxlLG4pLGZ1bmN0aW9uKGUpe3ZhciBuPWUucmVsYXRlZFRhcmdldDtuJiYobj09PXRoaXN8fDgmbi5jb21wYXJlRG9jdW1lbnRQb3NpdGlvbih0aGlzKSl8fHQuY2FsbCh0aGlzLGUpfX1mdW5jdGlvbiBkVSh0LGUsbil7cmV0dXJuIGZ1bmN0aW9uKGkpe3ZhciByPXVVO3VVPWk7dHJ5e3QuY2FsbCh0aGlzLHRoaXMuX19kYXRhX18sZSxuKX1maW5hbGx5e3VVPXJ9fX1mdW5jdGlvbiBwVSh0KXtyZXR1cm4gdC50cmltKCkuc3BsaXQoL158XHMrLykubWFwKChmdW5jdGlvbih0KXt2YXIgZT0iIixuPXQuaW5kZXhPZigiLiIpO3JldHVybiBuPj0wJiYoZT10LnNsaWNlKG4rMSksdD10LnNsaWNlKDAsbikpLHt0eXBlOnQsbmFtZTplfX0pKX1mdW5jdGlvbiBmVSh0KXtyZXR1cm4gZnVuY3Rpb24oKXt2YXIgZT10aGlzLl9fb247aWYoZSl7Zm9yKHZhciBuLGk9MCxyPS0xLG89ZS5sZW5ndGg7aTxvOysraSluPWVbaV0sdC50eXBlJiZuLnR5cGUhPT10LnR5cGV8fG4ubmFtZSE9PXQubmFtZT9lWysrcl09bjp0aGlzLnJlbW92ZUV2ZW50TGlzdGVuZXIobi50eXBlLG4ubGlzdGVuZXIsbi5jYXB0dXJlKTsrK3I/ZS5sZW5ndGg9cjpkZWxldGUgdGhpcy5fX29ufX19ZnVuY3Rpb24gbVUodCxlLG4pe3ZhciBpPWNVLmhhc093blByb3BlcnR5KHQudHlwZSk/aFU6ZFU7cmV0dXJuIGZ1bmN0aW9uKHIsbyxhKXt2YXIgcyxsPXRoaXMuX19vbixjPWkoZSxvLGEpO2lmKGwpZm9yKHZhciB1PTAsaD1sLmxlbmd0aDt1PGg7Kyt1KWlmKChzPWxbdV0pLnR5cGU9PT10LnR5cGUmJnMubmFtZT09PXQubmFtZSlyZXR1cm4gdGhpcy5yZW1vdmVFdmVudExpc3RlbmVyKHMudHlwZSxzLmxpc3RlbmVyLHMuY2FwdHVyZSksdGhpcy5hZGRFdmVudExpc3RlbmVyKHMudHlwZSxzLmxpc3RlbmVyPWMscy5jYXB0dXJlPW4pLHZvaWQocy52YWx1ZT1lKTt0aGlzLmFkZEV2ZW50TGlzdGVuZXIodC50eXBlLGMsbikscz17dHlwZTp0LnR5cGUsbmFtZTp0Lm5hbWUsdmFsdWU6ZSxsaXN0ZW5lcjpjLGNhcHR1cmU6bn0sbD9sLnB1c2gocyk6dGhpcy5fX29uPVtzXX19ZnVuY3Rpb24gZ1UodCxlLG4saSl7dmFyIHI9dVU7dC5zb3VyY2VFdmVudD11VSx1VT10O3RyeXtyZXR1cm4gZS5hcHBseShuLGkpfWZpbmFsbHl7dVU9cn19ZnVuY3Rpb24gX1UodCxlLG4pe3ZhciBpPVJqKHQpLHI9aS5DdXN0b21FdmVudDsiZnVuY3Rpb24iPT10eXBlb2Ygcj9yPW5ldyByKGUsbik6KHI9aS5kb2N1bWVudC5jcmVhdGVFdmVudCgiRXZlbnQiKSxuPyhyLmluaXRFdmVudChlLG4uYnViYmxlcyxuLmNhbmNlbGFibGUpLHIuZGV0YWlsPW4uZGV0YWlsKTpyLmluaXRFdmVudChlLCExLCExKSksdC5kaXNwYXRjaEV2ZW50KHIpfWZ1bmN0aW9uIHlVKHQsZSl7cmV0dXJuIGZ1bmN0aW9uKCl7cmV0dXJuIF9VKHRoaXMsdCxlKX19ZnVuY3Rpb24gdlUodCxlKXtyZXR1cm4gZnVuY3Rpb24oKXtyZXR1cm4gX1UodGhpcyx0LGUuYXBwbHkodGhpcyxhcmd1bWVudHMpKX19InVuZGVmaW5lZCIhPXR5cGVvZiBkb2N1bWVudCYmKCJvbm1vdXNlZW50ZXIiaW4gZG9jdW1lbnQuZG9jdW1lbnRFbGVtZW50fHwoY1U9e21vdXNlZW50ZXI6Im1vdXNlb3ZlciIsbW91c2VsZWF2ZToibW91c2VvdXQifSkpO3ZhciBiVT1bbnVsbF07ZnVuY3Rpb24geFUodCxlKXt0aGlzLl9ncm91cHM9dCx0aGlzLl9wYXJlbnRzPWV9ZnVuY3Rpb24gd1UodCl7cmV0dXJuInN0cmluZyI9PXR5cGVvZiB0P25ldyB4VShbW2RvY3VtZW50LnF1ZXJ5U2VsZWN0b3IodCldXSxbZG9jdW1lbnQuZG9jdW1lbnRFbGVtZW50XSk6bmV3IHhVKFtbdF1dLGJVKX1mdW5jdGlvbiBTVSgpe2Zvcih2YXIgdCxlPXVVO3Q9ZS5zb3VyY2VFdmVudDspZT10O3JldHVybiBlfWZ1bmN0aW9uIE1VKHQsZSl7dmFyIG49dC5vd25lclNWR0VsZW1lbnR8fHQ7aWYobi5jcmVhdGVTVkdQb2ludCl7dmFyIGk9bi5jcmVhdGVTVkdQb2ludCgpO3JldHVybiBpLng9ZS5jbGllbnRYLGkueT1lLmNsaWVudFksWyhpPWkubWF0cml4VHJhbnNmb3JtKHQuZ2V0U2NyZWVuQ1RNKCkuaW52ZXJzZSgpKSkueCxpLnldfXZhciByPXQuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCk7cmV0dXJuW2UuY2xpZW50WC1yLmxlZnQtdC5jbGllbnRMZWZ0LGUuY2xpZW50WS1yLnRvcC10LmNsaWVudFRvcF19ZnVuY3Rpb24gRVUodCl7dmFyIGU9U1UoKTtyZXR1cm4gZS5jaGFuZ2VkVG91Y2hlcyYmKGU9ZS5jaGFuZ2VkVG91Y2hlc1swXSksTVUodCxlKX1mdW5jdGlvbiBUVSh0LGUsbil7YXJndW1lbnRzLmxlbmd0aDwzJiYobj1lLGU9U1UoKS5jaGFuZ2VkVG91Y2hlcyk7Zm9yKHZhciBpLHI9MCxvPWU/ZS5sZW5ndGg6MDtyPG87KytyKWlmKChpPWVbcl0pLmlkZW50aWZpZXI9PT1uKXJldHVybiBNVSh0LGkpO3JldHVybiBudWxsfWZ1bmN0aW9uIEFVKCl7dVUuc3RvcEltbWVkaWF0ZVByb3BhZ2F0aW9uKCl9ZnVuY3Rpb24gQ1UoKXt1VS5wcmV2ZW50RGVmYXVsdCgpLHVVLnN0b3BJbW1lZGlhdGVQcm9wYWdhdGlvbigpfWZ1bmN0aW9uIGtVKHQpe3ZhciBlPXQuZG9jdW1lbnQuZG9jdW1lbnRFbGVtZW50LG49d1UodCkub24oImRyYWdzdGFydC5kcmFnIixDVSwhMCk7Im9uc2VsZWN0c3RhcnQiaW4gZT9uLm9uKCJzZWxlY3RzdGFydC5kcmFnIixDVSwhMCk6KGUuX19ub3NlbGVjdD1lLnN0eWxlLk1velVzZXJTZWxlY3QsZS5zdHlsZS5Nb3pVc2VyU2VsZWN0PSJub25lIil9ZnVuY3Rpb24gTFUodCxlKXt2YXIgbj10LmRvY3VtZW50LmRvY3VtZW50RWxlbWVudCxpPXdVKHQpLm9uKCJkcmFnc3RhcnQuZHJhZyIsbnVsbCk7ZSYmKGkub24oImNsaWNrLmRyYWciLENVLCEwKSxzZXRUaW1lb3V0KChmdW5jdGlvbigpe2kub24oImNsaWNrLmRyYWciLG51bGwpfSksMCkpLCJvbnNlbGVjdHN0YXJ0ImluIG4/aS5vbigic2VsZWN0c3RhcnQuZHJhZyIsbnVsbCk6KG4uc3R5bGUuTW96VXNlclNlbGVjdD1uLl9fbm9zZWxlY3QsZGVsZXRlIG4uX19ub3NlbGVjdCl9ZnVuY3Rpb24gUFUodCl7cmV0dXJuIGZ1bmN0aW9uKCl7cmV0dXJuIHR9fWZ1bmN0aW9uIElVKHQsZSxuLGkscixvLGEscyxsLGMpe3RoaXMudGFyZ2V0PXQsdGhpcy50eXBlPWUsdGhpcy5zdWJqZWN0PW4sdGhpcy5pZGVudGlmaWVyPWksdGhpcy5hY3RpdmU9cix0aGlzLng9byx0aGlzLnk9YSx0aGlzLmR4PXMsdGhpcy5keT1sLHRoaXMuXz1jfWZ1bmN0aW9uIE5VKCl7cmV0dXJuIXVVLmJ1dHRvbn1mdW5jdGlvbiBPVSgpe3JldHVybiB0aGlzLnBhcmVudE5vZGV9ZnVuY3Rpb24gUlUodCl7cmV0dXJuIG51bGw9PXQ/e3g6dVUueCx5OnVVLnl9OnR9ZnVuY3Rpb24gelUoKXtyZXR1cm4ib250b3VjaHN0YXJ0ImluIHRoaXN9eFUucHJvdG90eXBlPXtjb25zdHJ1Y3Rvcjp4VSxzZWxlY3Q6ZnVuY3Rpb24gRFUodCl7ImZ1bmN0aW9uIiE9dHlwZW9mIHQmJih0PXdqKHQpKTtmb3IodmFyIGU9dGhpcy5fZ3JvdXBzLG49ZS5sZW5ndGgsaT1uZXcgQXJyYXkobikscj0wO3I8bjsrK3IpZm9yKHZhciBvLGEscz1lW3JdLGw9cy5sZW5ndGgsYz1pW3JdPW5ldyBBcnJheShsKSx1PTA7dTxsOysrdSkobz1zW3VdKSYmKGE9dC5jYWxsKG8sby5fX2RhdGFfXyx1LHMpKSYmKCJfX2RhdGFfXyJpbiBvJiYoYS5fX2RhdGFfXz1vLl9fZGF0YV9fKSxjW3VdPWEpO3JldHVybiBuZXcgeFUoaSx0aGlzLl9wYXJlbnRzKX0sc2VsZWN0QWxsOmZ1bmN0aW9uIEJVKHQpeyJmdW5jdGlvbiIhPXR5cGVvZiB0JiYodD0oZnVuY3Rpb24gZSh0KXtyZXR1cm4gbnVsbD09dD9TajpmdW5jdGlvbigpe3JldHVybiB0aGlzLnF1ZXJ5U2VsZWN0b3JBbGwodCl9fSkodCkpO2Zvcih2YXIgbj10aGlzLl9ncm91cHMsaT1uLmxlbmd0aCxyPVtdLG89W10sYT0wO2E8aTsrK2EpZm9yKHZhciBzLGw9blthXSxjPWwubGVuZ3RoLHU9MDt1PGM7Kyt1KShzPWxbdV0pJiYoci5wdXNoKHQuY2FsbChzLHMuX19kYXRhX18sdSxsKSksby5wdXNoKHMpKTtyZXR1cm4gbmV3IHhVKHIsbyl9LGZpbHRlcjpmdW5jdGlvbiBIVSh0KXsiZnVuY3Rpb24iIT10eXBlb2YgdCYmKHQ9KGZ1bmN0aW9uIGUodCl7cmV0dXJuIGZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMubWF0Y2hlcyh0KX19KSh0KSk7Zm9yKHZhciBuPXRoaXMuX2dyb3VwcyxpPW4ubGVuZ3RoLHI9bmV3IEFycmF5KGkpLG89MDtvPGk7KytvKWZvcih2YXIgYSxzPW5bb10sbD1zLmxlbmd0aCxjPXJbb109W10sdT0wO3U8bDsrK3UpKGE9c1t1XSkmJnQuY2FsbChhLGEuX19kYXRhX18sdSxzKSYmYy5wdXNoKGEpO3JldHVybiBuZXcgeFUocix0aGlzLl9wYXJlbnRzKX0sZGF0YTpmdW5jdGlvbiBGVSh0LGUpe2lmKCF0KXJldHVybiBmPW5ldyBBcnJheSh0aGlzLnNpemUoKSksdT0tMSx0aGlzLmVhY2goKGZ1bmN0aW9uKHQpe2ZbKyt1XT10fSkpLGY7dmFyIG49ZT9BajpUaixpPXRoaXMuX3BhcmVudHMscj10aGlzLl9ncm91cHM7ImZ1bmN0aW9uIiE9dHlwZW9mIHQmJih0PShmdW5jdGlvbiBvKHQpe3JldHVybiBmdW5jdGlvbigpe3JldHVybiB0fX0pKHQpKTtmb3IodmFyIGE9ci5sZW5ndGgscz1uZXcgQXJyYXkoYSksbD1uZXcgQXJyYXkoYSksYz1uZXcgQXJyYXkoYSksdT0wO3U8YTsrK3Upe3ZhciBoPWlbdV0sZD1yW3VdLHA9ZC5sZW5ndGgsZj10LmNhbGwoaCxoJiZoLl9fZGF0YV9fLHUsaSksbT1mLmxlbmd0aCxnPWxbdV09bmV3IEFycmF5KG0pLF89c1t1XT1uZXcgQXJyYXkobSk7bihoLGQsZyxfLGNbdV09bmV3IEFycmF5KHApLGYsZSk7Zm9yKHZhciB5LHYsYj0wLHg9MDtiPG07KytiKWlmKHk9Z1tiXSl7Zm9yKGI+PXgmJih4PWIrMSk7ISh2PV9beF0pJiYrK3g8bTspO3kuX25leHQ9dnx8bnVsbH19cmV0dXJuKHM9bmV3IHhVKHMsaSkpLl9lbnRlcj1sLHMuX2V4aXQ9YyxzfSxlbnRlcjpmdW5jdGlvbiBWVSgpe3JldHVybiBuZXcgeFUodGhpcy5fZW50ZXJ8fHRoaXMuX2dyb3Vwcy5tYXAoTWopLHRoaXMuX3BhcmVudHMpfSxleGl0OmZ1bmN0aW9uIGpVKCl7cmV0dXJuIG5ldyB4VSh0aGlzLl9leGl0fHx0aGlzLl9ncm91cHMubWFwKE1qKSx0aGlzLl9wYXJlbnRzKX0sam9pbjpmdW5jdGlvbiBVVSh0LGUsbil7dmFyIGk9dGhpcy5lbnRlcigpLHI9dGhpcyxvPXRoaXMuZXhpdCgpO3JldHVybiBpPSJmdW5jdGlvbiI9PXR5cGVvZiB0P3QoaSk6aS5hcHBlbmQodCsiIiksbnVsbCE9ZSYmKHI9ZShyKSksbnVsbD09bj9vLnJlbW92ZSgpOm4obyksaSYmcj9pLm1lcmdlKHIpLm9yZGVyKCk6cn0sbWVyZ2U6ZnVuY3Rpb24gR1UodCl7Zm9yKHZhciBlPXRoaXMuX2dyb3VwcyxuPXQuX2dyb3VwcyxpPWUubGVuZ3RoLHI9TWF0aC5taW4oaSxuLmxlbmd0aCksbz1uZXcgQXJyYXkoaSksYT0wO2E8cjsrK2EpZm9yKHZhciBzLGw9ZVthXSxjPW5bYV0sdT1sLmxlbmd0aCxoPW9bYV09bmV3IEFycmF5KHUpLGQ9MDtkPHU7KytkKShzPWxbZF18fGNbZF0pJiYoaFtkXT1zKTtmb3IoO2E8aTsrK2Epb1thXT1lW2FdO3JldHVybiBuZXcgeFUobyx0aGlzLl9wYXJlbnRzKX0sb3JkZXI6ZnVuY3Rpb24gV1UoKXtmb3IodmFyIHQ9dGhpcy5fZ3JvdXBzLGU9LTEsbj10Lmxlbmd0aDsrK2U8bjspZm9yKHZhciBpLHI9dFtlXSxvPXIubGVuZ3RoLTEsYT1yW29dOy0tbz49MDspKGk9cltvXSkmJihhJiY0XmkuY29tcGFyZURvY3VtZW50UG9zaXRpb24oYSkmJmEucGFyZW50Tm9kZS5pbnNlcnRCZWZvcmUoaSxhKSxhPWkpO3JldHVybiB0aGlzfSxzb3J0OmZ1bmN0aW9uIHFVKHQpe2Z1bmN0aW9uIGUoZSxuKXtyZXR1cm4gZSYmbj90KGUuX19kYXRhX18sbi5fX2RhdGFfXyk6IWUtIW59dHx8KHQ9Q2opO2Zvcih2YXIgbj10aGlzLl9ncm91cHMsaT1uLmxlbmd0aCxyPW5ldyBBcnJheShpKSxvPTA7bzxpOysrbyl7Zm9yKHZhciBhLHM9bltvXSxsPXMubGVuZ3RoLGM9cltvXT1uZXcgQXJyYXkobCksdT0wO3U8bDsrK3UpKGE9c1t1XSkmJihjW3VdPWEpO2Muc29ydChlKX1yZXR1cm4gbmV3IHhVKHIsdGhpcy5fcGFyZW50cykub3JkZXIoKX0sY2FsbDpmdW5jdGlvbiBZVSgpe3ZhciB0PWFyZ3VtZW50c1swXTtyZXR1cm4gYXJndW1lbnRzWzBdPXRoaXMsdC5hcHBseShudWxsLGFyZ3VtZW50cyksdGhpc30sbm9kZXM6ZnVuY3Rpb24gWFUoKXt2YXIgdD1uZXcgQXJyYXkodGhpcy5zaXplKCkpLGU9LTE7cmV0dXJuIHRoaXMuZWFjaCgoZnVuY3Rpb24oKXt0WysrZV09dGhpc30pKSx0fSxub2RlOmZ1bmN0aW9uICRVKCl7Zm9yKHZhciB0PXRoaXMuX2dyb3VwcyxlPTAsbj10Lmxlbmd0aDtlPG47KytlKWZvcih2YXIgaT10W2VdLHI9MCxvPWkubGVuZ3RoO3I8bzsrK3Ipe3ZhciBhPWlbcl07aWYoYSlyZXR1cm4gYX1yZXR1cm4gbnVsbH0sc2l6ZTpmdW5jdGlvbiBLVSgpe3ZhciB0PTA7cmV0dXJuIHRoaXMuZWFjaCgoZnVuY3Rpb24oKXsrK3R9KSksdH0sZW1wdHk6ZnVuY3Rpb24gWlUoKXtyZXR1cm4hdGhpcy5ub2RlKCl9LGVhY2g6ZnVuY3Rpb24gSlUodCl7Zm9yKHZhciBlPXRoaXMuX2dyb3VwcyxuPTAsaT1lLmxlbmd0aDtuPGk7KytuKWZvcih2YXIgcixvPWVbbl0sYT0wLHM9by5sZW5ndGg7YTxzOysrYSkocj1vW2FdKSYmdC5jYWxsKHIsci5fX2RhdGFfXyxhLG8pO3JldHVybiB0aGlzfSxhdHRyOmZ1bmN0aW9uIFFVKHQsZSl7dmFyIG49X2oodCk7aWYoYXJndW1lbnRzLmxlbmd0aDwyKXt2YXIgaT10aGlzLm5vZGUoKTtyZXR1cm4gbi5sb2NhbD9pLmdldEF0dHJpYnV0ZU5TKG4uc3BhY2Usbi5sb2NhbCk6aS5nZXRBdHRyaWJ1dGUobil9cmV0dXJuIHRoaXMuZWFjaCgobnVsbD09ZT9uLmxvY2FsP0xqOmtqOiJmdW5jdGlvbiI9PXR5cGVvZiBlP24ubG9jYWw/T2o6Tmo6bi5sb2NhbD9JajpQaikobixlKSl9LHN0eWxlOmZ1bmN0aW9uIHRHKHQsZSxuKXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD4xP3RoaXMuZWFjaCgobnVsbD09ZT96ajoiZnVuY3Rpb24iPT10eXBlb2YgZT9CajpEaikodCxlLG51bGw9PW4/IiI6bikpOkhqKHRoaXMubm9kZSgpLHQpfSxwcm9wZXJ0eTpmdW5jdGlvbiBlRyh0LGUpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPjE/dGhpcy5lYWNoKChudWxsPT1lP0ZqOiJmdW5jdGlvbiI9PXR5cGVvZiBlP2pqOlZqKSh0LGUpKTp0aGlzLm5vZGUoKVt0XX0sY2xhc3NlZDpmdW5jdGlvbiBuRyh0LGUpe3ZhciBuPVVqKHQrIiIpO2lmKGFyZ3VtZW50cy5sZW5ndGg8Mil7Zm9yKHZhciBpPUdqKHRoaXMubm9kZSgpKSxyPS0xLG89bi5sZW5ndGg7KytyPG87KWlmKCFpLmNvbnRhaW5zKG5bcl0pKXJldHVybiExO3JldHVybiEwfXJldHVybiB0aGlzLmVhY2goKCJmdW5jdGlvbiI9PXR5cGVvZiBlP0tqOmU/WGo6JGopKG4sZSkpfSx0ZXh0OmZ1bmN0aW9uIGlHKHQpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoP3RoaXMuZWFjaChudWxsPT10P1pqOigiZnVuY3Rpb24iPT10eXBlb2YgdD9RajpKaikodCkpOnRoaXMubm9kZSgpLnRleHRDb250ZW50fSxodG1sOmZ1bmN0aW9uIHJHKHQpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoP3RoaXMuZWFjaChudWxsPT10P3RVOigiZnVuY3Rpb24iPT10eXBlb2YgdD9uVTplVSkodCkpOnRoaXMubm9kZSgpLmlubmVySFRNTH0scmFpc2U6ZnVuY3Rpb24gb0coKXtyZXR1cm4gdGhpcy5lYWNoKGlVKX0sbG93ZXI6ZnVuY3Rpb24gYUcoKXtyZXR1cm4gdGhpcy5lYWNoKHJVKX0sYXBwZW5kOmZ1bmN0aW9uIHNHKHQpe3ZhciBlPSJmdW5jdGlvbiI9PXR5cGVvZiB0P3Q6YmoodCk7cmV0dXJuIHRoaXMuc2VsZWN0KChmdW5jdGlvbigpe3JldHVybiB0aGlzLmFwcGVuZENoaWxkKGUuYXBwbHkodGhpcyxhcmd1bWVudHMpKX0pKX0saW5zZXJ0OmZ1bmN0aW9uIGxHKHQsZSl7dmFyIG49ImZ1bmN0aW9uIj09dHlwZW9mIHQ/dDpiaih0KSxpPW51bGw9PWU/b1U6ImZ1bmN0aW9uIj09dHlwZW9mIGU/ZTp3aihlKTtyZXR1cm4gdGhpcy5zZWxlY3QoKGZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuaW5zZXJ0QmVmb3JlKG4uYXBwbHkodGhpcyxhcmd1bWVudHMpLGkuYXBwbHkodGhpcyxhcmd1bWVudHMpfHxudWxsKX0pKX0scmVtb3ZlOmZ1bmN0aW9uIGNHKCl7cmV0dXJuIHRoaXMuZWFjaChhVSl9LGNsb25lOmZ1bmN0aW9uIHVHKHQpe3JldHVybiB0aGlzLnNlbGVjdCh0P2xVOnNVKX0sZGF0dW06ZnVuY3Rpb24gaEcodCl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/dGhpcy5wcm9wZXJ0eSgiX19kYXRhX18iLHQpOnRoaXMubm9kZSgpLl9fZGF0YV9ffSxvbjpmdW5jdGlvbiBkRyh0LGUsbil7dmFyIGkscixvPXBVKHQrIiIpLGE9by5sZW5ndGg7aWYoIShhcmd1bWVudHMubGVuZ3RoPDIpKXtmb3Iocz1lP21VOmZVLG51bGw9PW4mJihuPSExKSxpPTA7aTxhOysraSl0aGlzLmVhY2gocyhvW2ldLGUsbikpO3JldHVybiB0aGlzfXZhciBzPXRoaXMubm9kZSgpLl9fb247aWYocylmb3IodmFyIGwsYz0wLHU9cy5sZW5ndGg7Yzx1OysrYylmb3IoaT0wLGw9c1tjXTtpPGE7KytpKWlmKChyPW9baV0pLnR5cGU9PT1sLnR5cGUmJnIubmFtZT09PWwubmFtZSlyZXR1cm4gbC52YWx1ZX0sZGlzcGF0Y2g6ZnVuY3Rpb24gcEcodCxlKXtyZXR1cm4gdGhpcy5lYWNoKCgiZnVuY3Rpb24iPT10eXBlb2YgZT92VTp5VSkodCxlKSl9fSxJVS5wcm90b3R5cGUub249ZnVuY3Rpb24oKXt2YXIgdD10aGlzLl8ub24uYXBwbHkodGhpcy5fLGFyZ3VtZW50cyk7cmV0dXJuIHQ9PT10aGlzLl8/dGhpczp0fTt2YXIgZkc9e30sbUc9e307ZnVuY3Rpb24gZ0codCl7cmV0dXJuIG5ldyBGdW5jdGlvbigiZCIsInJldHVybiB7Iit0Lm1hcCgoZnVuY3Rpb24odCxlKXtyZXR1cm4gSlNPTi5zdHJpbmdpZnkodCkrIjogZFsiK2UrIl0ifSkpLmpvaW4oIiwiKSsifSIpfWZ1bmN0aW9uIF9HKHQpe3ZhciBlPW5ldyBSZWdFeHAoJ1siJyt0KyJcblxyXSIpLG49dC5jaGFyQ29kZUF0KDApO2Z1bmN0aW9uIGkodCxlKXt2YXIgaSxyPVtdLG89dC5sZW5ndGgsYT0wLHM9MCxsPW88PTAsYz0hMTtmdW5jdGlvbiB1KCl7aWYobClyZXR1cm4gbUc7aWYoYylyZXR1cm4gYz0hMSxmRzt2YXIgZSxpLHI9YTtpZigzND09PXQuY2hhckNvZGVBdChyKSl7Zm9yKDthKys8byYmMzQhPT10LmNoYXJDb2RlQXQoYSl8fDM0PT09dC5jaGFyQ29kZUF0KCsrYSk7KTtyZXR1cm4oZT1hKT49bz9sPSEwOjEwPT09KGk9dC5jaGFyQ29kZUF0KGErKykpP2M9ITA6MTM9PT1pJiYoYz0hMCwxMD09PXQuY2hhckNvZGVBdChhKSYmKythKSx0LnNsaWNlKHIrMSxlLTEpLnJlcGxhY2UoLyIiL2csJyInKX1mb3IoO2E8bzspe2lmKDEwPT09KGk9dC5jaGFyQ29kZUF0KGU9YSsrKSkpYz0hMDtlbHNlIGlmKDEzPT09aSljPSEwLDEwPT09dC5jaGFyQ29kZUF0KGEpJiYrK2E7ZWxzZSBpZihpIT09biljb250aW51ZTtyZXR1cm4gdC5zbGljZShyLGUpfXJldHVybiBsPSEwLHQuc2xpY2UocixvKX1mb3IoMTA9PT10LmNoYXJDb2RlQXQoby0xKSYmLS1vLDEzPT09dC5jaGFyQ29kZUF0KG8tMSkmJi0tbzsoaT11KCkpIT09bUc7KXtmb3IodmFyIGg9W107aSE9PWZHJiZpIT09bUc7KWgucHVzaChpKSxpPXUoKTtlJiZudWxsPT0oaD1lKGgscysrKSl8fHIucHVzaChoKX1yZXR1cm4gcn1mdW5jdGlvbiByKGUpe3JldHVybiBlLm1hcChvKS5qb2luKHQpfWZ1bmN0aW9uIG8odCl7cmV0dXJuIG51bGw9PXQ/IiI6ZS50ZXN0KHQrPSIiKT8nIicrdC5yZXBsYWNlKC8iL2csJyIiJykrJyInOnR9cmV0dXJue3BhcnNlOmZ1bmN0aW9uIGEodCxlKXt2YXIgbixyLG89aSh0LChmdW5jdGlvbih0LGkpe2lmKG4pcmV0dXJuIG4odCxpLTEpO3I9dCxuPWU/KGZ1bmN0aW9uIG8odCxlKXt2YXIgbj1nRyh0KTtyZXR1cm4gZnVuY3Rpb24oaSxyKXtyZXR1cm4gZShuKGkpLHIsdCl9fSkodCxlKTpnRyh0KX0pKTtyZXR1cm4gby5jb2x1bW5zPXJ8fFtdLG99LHBhcnNlUm93czppLGZvcm1hdDpmdW5jdGlvbiBzKGUsbil7cmV0dXJuIG51bGw9PW4mJihuPShmdW5jdGlvbiBpKHQpe3ZhciBlPU9iamVjdC5jcmVhdGUobnVsbCksbj1bXTtyZXR1cm4gdC5mb3JFYWNoKChmdW5jdGlvbih0KXtmb3IodmFyIGkgaW4gdClpIGluIGV8fG4ucHVzaChlW2ldPWkpfSkpLG59KShlKSksW24ubWFwKG8pLmpvaW4odCldLmNvbmNhdChlLm1hcCgoZnVuY3Rpb24oZSl7cmV0dXJuIG4ubWFwKChmdW5jdGlvbih0KXtyZXR1cm4gbyhlW3RdKX0pKS5qb2luKHQpfSkpKS5qb2luKCJcbiIpfSxmb3JtYXRSb3dzOmZ1bmN0aW9uIGwodCl7cmV0dXJuIHQubWFwKHIpLmpvaW4oIlxuIil9fX12YXIgeUc9X0coIiwiKSx2Rz15Ry5wYXJzZSxiRz15Ry5wYXJzZVJvd3MseEc9eUcuZm9ybWF0LHdHPXlHLmZvcm1hdFJvd3MsU0c9X0coIlx0IiksTUc9U0cucGFyc2UsRUc9U0cucGFyc2VSb3dzLFRHPVNHLmZvcm1hdCxBRz1TRy5mb3JtYXRSb3dzO2Z1bmN0aW9uIENHKHQpe3JldHVybigodCo9Mik8PTE/dCp0Oi0tdCooMi10KSsxKS8yfWZ1bmN0aW9uIGtHKHQpe3JldHVybigodCo9Mik8PTE/dCp0KnQ6KHQtPTIpKnQqdCsyKS8yfXZhciBMRz0oZnVuY3Rpb24gdChlKXtmdW5jdGlvbiBuKHQpe3JldHVybiBNYXRoLnBvdyh0LGUpfXJldHVybiBlPStlLG4uZXhwb25lbnQ9dCxufSkoMyksUEc9KGZ1bmN0aW9uIHQoZSl7ZnVuY3Rpb24gbih0KXtyZXR1cm4gMS1NYXRoLnBvdygxLXQsZSl9cmV0dXJuIGU9K2Usbi5leHBvbmVudD10LG59KSgzKSxJRz0oZnVuY3Rpb24gdChlKXtmdW5jdGlvbiBuKHQpe3JldHVybigodCo9Mik8PTE/TWF0aC5wb3codCxlKToyLU1hdGgucG93KDItdCxlKSkvMn1yZXR1cm4gZT0rZSxuLmV4cG9uZW50PXQsbn0pKDMpLE5HPU1hdGguUEksT0c9TkcvMjtmdW5jdGlvbiBSRyh0KXtyZXR1cm4oMS1NYXRoLmNvcyhORyp0KSkvMn1mdW5jdGlvbiB6Ryh0KXtyZXR1cm4oKHQqPTIpPD0xP01hdGgucG93KDIsMTAqdC0xMCk6Mi1NYXRoLnBvdygyLDEwLTEwKnQpKS8yfWZ1bmN0aW9uIERHKHQpe3JldHVybigodCo9Mik8PTE/MS1NYXRoLnNxcnQoMS10KnQpOk1hdGguc3FydCgxLSh0LT0yKSp0KSsxKS8yfXZhciBCRz03LjU2MjU7ZnVuY3Rpb24gSEcodCl7cmV0dXJuKHQ9K3QpPC4zNjM2MzYzNjM2MzYzNjM2NT9CRyp0KnQ6dDwuNzI3MjcyNzI3MjcyNzI3Mz9CRyoodC09LjU0NTQ1NDU0NTQ1NDU0NTQpKnQrLjc1OnQ8LjkwOTA5MDkwOTA5MDkwOTE/QkcqKHQtPS44MTgxODE4MTgxODE4MTgyKSp0Ky45Mzc1OkJHKih0LT0uOTU0NTQ1NDU0NTQ1NDU0NikqdCsuOTg0Mzc1fXZhciBGRz0xLjcwMTU4LFZHPShmdW5jdGlvbiB0KGUpe2Z1bmN0aW9uIG4odCl7cmV0dXJuIHQqdCooKGUrMSkqdC1lKX1yZXR1cm4gZT0rZSxuLm92ZXJzaG9vdD10LG59KShGRyksakc9KGZ1bmN0aW9uIHQoZSl7ZnVuY3Rpb24gbih0KXtyZXR1cm4tLXQqdCooKGUrMSkqdCtlKSsxfXJldHVybiBlPStlLG4ub3ZlcnNob290PXQsbn0pKEZHKSxVRz0oZnVuY3Rpb24gdChlKXtmdW5jdGlvbiBuKHQpe3JldHVybigodCo9Mik8MT90KnQqKChlKzEpKnQtZSk6KHQtPTIpKnQqKChlKzEpKnQrZSkrMikvMn1yZXR1cm4gZT0rZSxuLm92ZXJzaG9vdD10LG59KShGRyksR0c9MipNYXRoLlBJLFdHPShmdW5jdGlvbiB0KGUsbil7dmFyIGk9TWF0aC5hc2luKDEvKGU9TWF0aC5tYXgoMSxlKSkpKihuLz1HRyk7ZnVuY3Rpb24gcih0KXtyZXR1cm4gZSpNYXRoLnBvdygyLDEwKi0tdCkqTWF0aC5zaW4oKGktdCkvbil9cmV0dXJuIHIuYW1wbGl0dWRlPWZ1bmN0aW9uKGUpe3JldHVybiB0KGUsbipHRyl9LHIucGVyaW9kPWZ1bmN0aW9uKG4pe3JldHVybiB0KGUsbil9LHJ9KSgxLC4zKSxxRz0oZnVuY3Rpb24gdChlLG4pe3ZhciBpPU1hdGguYXNpbigxLyhlPU1hdGgubWF4KDEsZSkpKSoobi89R0cpO2Z1bmN0aW9uIHIodCl7cmV0dXJuIDEtZSpNYXRoLnBvdygyLC0xMCoodD0rdCkpKk1hdGguc2luKCh0K2kpL24pfXJldHVybiByLmFtcGxpdHVkZT1mdW5jdGlvbihlKXtyZXR1cm4gdChlLG4qR0cpfSxyLnBlcmlvZD1mdW5jdGlvbihuKXtyZXR1cm4gdChlLG4pfSxyfSkoMSwuMyksWUc9KGZ1bmN0aW9uIHQoZSxuKXt2YXIgaT1NYXRoLmFzaW4oMS8oZT1NYXRoLm1heCgxLGUpKSkqKG4vPUdHKTtmdW5jdGlvbiByKHQpe3JldHVybigodD0yKnQtMSk8MD9lKk1hdGgucG93KDIsMTAqdCkqTWF0aC5zaW4oKGktdCkvbik6Mi1lKk1hdGgucG93KDIsLTEwKnQpKk1hdGguc2luKChpK3QpL24pKS8yfXJldHVybiByLmFtcGxpdHVkZT1mdW5jdGlvbihlKXtyZXR1cm4gdChlLG4qR0cpfSxyLnBlcmlvZD1mdW5jdGlvbihuKXtyZXR1cm4gdChlLG4pfSxyfSkoMSwuMyk7ZnVuY3Rpb24gWEcodCl7cmV0dXJuIGZ1bmN0aW9uKCl7cmV0dXJuIHR9fWZ1bmN0aW9uICRHKCl7cmV0dXJuIDFlLTYqKE1hdGgucmFuZG9tKCktLjUpfWZ1bmN0aW9uIEtHKHQsZSxuLGkpe2lmKGlzTmFOKGUpfHxpc05hTihuKSlyZXR1cm4gdDt2YXIgcixvLGEscyxsLGMsdSxoLGQscD10Ll9yb290LGY9e2RhdGE6aX0sbT10Ll94MCxnPXQuX3kwLF89dC5feDEseT10Ll95MTtpZighcClyZXR1cm4gdC5fcm9vdD1mLHQ7Zm9yKDtwLmxlbmd0aDspaWYoKGM9ZT49KG89KG0rXykvMikpP209bzpfPW8sKHU9bj49KGE9KGcreSkvMikpP2c9YTp5PWEscj1wLCEocD1wW2g9dTw8MXxjXSkpcmV0dXJuIHJbaF09Zix0O2lmKHM9K3QuX3guY2FsbChudWxsLHAuZGF0YSksbD0rdC5feS5jYWxsKG51bGwscC5kYXRhKSxlPT09cyYmbj09PWwpcmV0dXJuIGYubmV4dD1wLHI/cltoXT1mOnQuX3Jvb3Q9Zix0O2Rve3I9cj9yW2hdPW5ldyBBcnJheSg0KTp0Ll9yb290PW5ldyBBcnJheSg0KSwoYz1lPj0obz0obStfKS8yKSk/bT1vOl89bywodT1uPj0oYT0oZyt5KS8yKSk/Zz1hOnk9YX13aGlsZSgoaD11PDwxfGMpPT0oZD0obD49YSk8PDF8cz49bykpO3JldHVybiByW2RdPXAscltoXT1mLHR9ZnVuY3Rpb24gWkcodCxlLG4saSxyKXt0aGlzLm5vZGU9dCx0aGlzLngwPWUsdGhpcy55MD1uLHRoaXMueDE9aSx0aGlzLnkxPXJ9ZnVuY3Rpb24gSkcodCl7cmV0dXJuIHRbMF19ZnVuY3Rpb24gUUcodCl7cmV0dXJuIHRbMV19ZnVuY3Rpb24gdFcodCxlLG4pe3ZhciBpPW5ldyBlVyhudWxsPT1lP0pHOmUsbnVsbD09bj9RRzpuLE5hTixOYU4sTmFOLE5hTik7cmV0dXJuIG51bGw9PXQ/aTppLmFkZEFsbCh0KX1mdW5jdGlvbiBlVyh0LGUsbixpLHIsbyl7dGhpcy5feD10LHRoaXMuX3k9ZSx0aGlzLl94MD1uLHRoaXMuX3kwPWksdGhpcy5feDE9cix0aGlzLl95MT1vLHRoaXMuX3Jvb3Q9dm9pZCAwfWZ1bmN0aW9uIG5XKHQpe2Zvcih2YXIgZT17ZGF0YTp0LmRhdGF9LG49ZTt0PXQubmV4dDspbj1uLm5leHQ9e2RhdGE6dC5kYXRhfTtyZXR1cm4gZX12YXIgaVc9dFcucHJvdG90eXBlPWVXLnByb3RvdHlwZTtmdW5jdGlvbiByVyh0KXtyZXR1cm4gdC54K3Qudnh9ZnVuY3Rpb24gb1codCl7cmV0dXJuIHQueSt0LnZ5fWlXLmNvcHk9ZnVuY3Rpb24oKXt2YXIgdCxlLG49bmV3IGVXKHRoaXMuX3gsdGhpcy5feSx0aGlzLl94MCx0aGlzLl95MCx0aGlzLl94MSx0aGlzLl95MSksaT10aGlzLl9yb290O2lmKCFpKXJldHVybiBuO2lmKCFpLmxlbmd0aClyZXR1cm4gbi5fcm9vdD1uVyhpKSxuO2Zvcih0PVt7c291cmNlOmksdGFyZ2V0Om4uX3Jvb3Q9bmV3IEFycmF5KDQpfV07aT10LnBvcCgpOylmb3IodmFyIHI9MDtyPDQ7KytyKShlPWkuc291cmNlW3JdKSYmKGUubGVuZ3RoP3QucHVzaCh7c291cmNlOmUsdGFyZ2V0OmkudGFyZ2V0W3JdPW5ldyBBcnJheSg0KX0pOmkudGFyZ2V0W3JdPW5XKGUpKTtyZXR1cm4gbn0saVcuYWRkPWZ1bmN0aW9uIGFXKHQpe3ZhciBlPSt0aGlzLl94LmNhbGwobnVsbCx0KSxuPSt0aGlzLl95LmNhbGwobnVsbCx0KTtyZXR1cm4gS0codGhpcy5jb3ZlcihlLG4pLGUsbix0KX0saVcuYWRkQWxsPWZ1bmN0aW9uIHNXKHQpe3ZhciBlLG4saSxyLG89dC5sZW5ndGgsYT1uZXcgQXJyYXkobykscz1uZXcgQXJyYXkobyksbD0xLzAsYz0xLzAsdT0tMS8wLGg9LTEvMDtmb3Iobj0wO248bzsrK24paXNOYU4oaT0rdGhpcy5feC5jYWxsKG51bGwsZT10W25dKSl8fGlzTmFOKHI9K3RoaXMuX3kuY2FsbChudWxsLGUpKXx8KGFbbl09aSxzW25dPXIsaTxsJiYobD1pKSxpPnUmJih1PWkpLHI8YyYmKGM9cikscj5oJiYoaD1yKSk7aWYobD51fHxjPmgpcmV0dXJuIHRoaXM7Zm9yKHRoaXMuY292ZXIobCxjKS5jb3Zlcih1LGgpLG49MDtuPG87KytuKUtHKHRoaXMsYVtuXSxzW25dLHRbbl0pO3JldHVybiB0aGlzfSxpVy5jb3Zlcj1mdW5jdGlvbiBsVyh0LGUpe2lmKGlzTmFOKHQ9K3QpfHxpc05hTihlPStlKSlyZXR1cm4gdGhpczt2YXIgbj10aGlzLl94MCxpPXRoaXMuX3kwLHI9dGhpcy5feDEsbz10aGlzLl95MTtpZihpc05hTihuKSlyPShuPU1hdGguZmxvb3IodCkpKzEsbz0oaT1NYXRoLmZsb29yKGUpKSsxO2Vsc2V7Zm9yKHZhciBhLHMsbD1yLW4sYz10aGlzLl9yb290O24+dHx8dD49cnx8aT5lfHxlPj1vOylzd2l0Y2gocz0oZTxpKTw8MXx0PG4sKGE9bmV3IEFycmF5KDQpKVtzXT1jLGM9YSxsKj0yLHMpe2Nhc2UgMDpyPW4rbCxvPWkrbDticmVhaztjYXNlIDE6bj1yLWwsbz1pK2w7YnJlYWs7Y2FzZSAyOnI9bitsLGk9by1sO2JyZWFrO2Nhc2UgMzpuPXItbCxpPW8tbH10aGlzLl9yb290JiZ0aGlzLl9yb290Lmxlbmd0aCYmKHRoaXMuX3Jvb3Q9Yyl9cmV0dXJuIHRoaXMuX3gwPW4sdGhpcy5feTA9aSx0aGlzLl94MT1yLHRoaXMuX3kxPW8sdGhpc30saVcuZGF0YT1mdW5jdGlvbiBjVygpe3ZhciB0PVtdO3JldHVybiB0aGlzLnZpc2l0KChmdW5jdGlvbihlKXtpZighZS5sZW5ndGgpZG97dC5wdXNoKGUuZGF0YSl9d2hpbGUoZT1lLm5leHQpfSkpLHR9LGlXLmV4dGVudD1mdW5jdGlvbiB1Vyh0KXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD90aGlzLmNvdmVyKCt0WzBdWzBdLCt0WzBdWzFdKS5jb3ZlcigrdFsxXVswXSwrdFsxXVsxXSk6aXNOYU4odGhpcy5feDApP3ZvaWQgMDpbW3RoaXMuX3gwLHRoaXMuX3kwXSxbdGhpcy5feDEsdGhpcy5feTFdXX0saVcuZmluZD1mdW5jdGlvbiBoVyh0LGUsbil7dmFyIGkscixvLGEscyxsLGMsdT10aGlzLl94MCxoPXRoaXMuX3kwLGQ9dGhpcy5feDEscD10aGlzLl95MSxmPVtdLG09dGhpcy5fcm9vdDtmb3IobSYmZi5wdXNoKG5ldyBaRyhtLHUsaCxkLHApKSxudWxsPT1uP249MS8wOih1PXQtbixoPWUtbixkPXQrbixwPWUrbixuKj1uKTtsPWYucG9wKCk7KWlmKCEoIShtPWwubm9kZSl8fChyPWwueDApPmR8fChvPWwueTApPnB8fChhPWwueDEpPHV8fChzPWwueTEpPGgpKWlmKG0ubGVuZ3RoKXt2YXIgZz0ocithKS8yLF89KG8rcykvMjtmLnB1c2gobmV3IFpHKG1bM10sZyxfLGEscyksbmV3IFpHKG1bMl0scixfLGcscyksbmV3IFpHKG1bMV0sZyxvLGEsXyksbmV3IFpHKG1bMF0scixvLGcsXykpLChjPShlPj1fKTw8MXx0Pj1nKSYmKGw9ZltmLmxlbmd0aC0xXSxmW2YubGVuZ3RoLTFdPWZbZi5sZW5ndGgtMS1jXSxmW2YubGVuZ3RoLTEtY109bCl9ZWxzZXt2YXIgeT10LSt0aGlzLl94LmNhbGwobnVsbCxtLmRhdGEpLHY9ZS0rdGhpcy5feS5jYWxsKG51bGwsbS5kYXRhKSxiPXkqeSt2KnY7aWYoYjxuKXt2YXIgeD1NYXRoLnNxcnQobj1iKTt1PXQteCxoPWUteCxkPXQreCxwPWUreCxpPW0uZGF0YX19cmV0dXJuIGl9LGlXLnJlbW92ZT1mdW5jdGlvbiBkVyh0KXtpZihpc05hTihvPSt0aGlzLl94LmNhbGwobnVsbCx0KSl8fGlzTmFOKGE9K3RoaXMuX3kuY2FsbChudWxsLHQpKSlyZXR1cm4gdGhpczt2YXIgZSxuLGkscixvLGEscyxsLGMsdSxoLGQscD10aGlzLl9yb290LGY9dGhpcy5feDAsbT10aGlzLl95MCxnPXRoaXMuX3gxLF89dGhpcy5feTE7aWYoIXApcmV0dXJuIHRoaXM7aWYocC5sZW5ndGgpZm9yKDs7KXtpZigoYz1vPj0ocz0oZitnKS8yKSk/Zj1zOmc9cywodT1hPj0obD0obStfKS8yKSk/bT1sOl89bCxlPXAsIShwPXBbaD11PDwxfGNdKSlyZXR1cm4gdGhpcztpZighcC5sZW5ndGgpYnJlYWs7KGVbaCsxJjNdfHxlW2grMiYzXXx8ZVtoKzMmM10pJiYobj1lLGQ9aCl9Zm9yKDtwLmRhdGEhPT10OylpZihpPXAsIShwPXAubmV4dCkpcmV0dXJuIHRoaXM7cmV0dXJuKHI9cC5uZXh0KSYmZGVsZXRlIHAubmV4dCxpPyhyP2kubmV4dD1yOmRlbGV0ZSBpLm5leHQsdGhpcyk6ZT8ocj9lW2hdPXI6ZGVsZXRlIGVbaF0sKHA9ZVswXXx8ZVsxXXx8ZVsyXXx8ZVszXSkmJnA9PT0oZVszXXx8ZVsyXXx8ZVsxXXx8ZVswXSkmJiFwLmxlbmd0aCYmKG4/bltkXT1wOnRoaXMuX3Jvb3Q9cCksdGhpcyk6KHRoaXMuX3Jvb3Q9cix0aGlzKX0saVcucmVtb3ZlQWxsPWZ1bmN0aW9uIHBXKHQpe2Zvcih2YXIgZT0wLG49dC5sZW5ndGg7ZTxuOysrZSl0aGlzLnJlbW92ZSh0W2VdKTtyZXR1cm4gdGhpc30saVcucm9vdD1mdW5jdGlvbiBmVygpe3JldHVybiB0aGlzLl9yb290fSxpVy5zaXplPWZ1bmN0aW9uIG1XKCl7dmFyIHQ9MDtyZXR1cm4gdGhpcy52aXNpdCgoZnVuY3Rpb24oZSl7aWYoIWUubGVuZ3RoKWRveysrdH13aGlsZShlPWUubmV4dCl9KSksdH0saVcudmlzaXQ9ZnVuY3Rpb24gZ1codCl7dmFyIGUsbixpLHIsbyxhLHM9W10sbD10aGlzLl9yb290O2ZvcihsJiZzLnB1c2gobmV3IFpHKGwsdGhpcy5feDAsdGhpcy5feTAsdGhpcy5feDEsdGhpcy5feTEpKTtlPXMucG9wKCk7KWlmKCF0KGw9ZS5ub2RlLGk9ZS54MCxyPWUueTAsbz1lLngxLGE9ZS55MSkmJmwubGVuZ3RoKXt2YXIgYz0oaStvKS8yLHU9KHIrYSkvMjsobj1sWzNdKSYmcy5wdXNoKG5ldyBaRyhuLGMsdSxvLGEpKSwobj1sWzJdKSYmcy5wdXNoKG5ldyBaRyhuLGksdSxjLGEpKSwobj1sWzFdKSYmcy5wdXNoKG5ldyBaRyhuLGMscixvLHUpKSwobj1sWzBdKSYmcy5wdXNoKG5ldyBaRyhuLGkscixjLHUpKX1yZXR1cm4gdGhpc30saVcudmlzaXRBZnRlcj1mdW5jdGlvbiBfVyh0KXt2YXIgZSxuPVtdLGk9W107Zm9yKHRoaXMuX3Jvb3QmJm4ucHVzaChuZXcgWkcodGhpcy5fcm9vdCx0aGlzLl94MCx0aGlzLl95MCx0aGlzLl94MSx0aGlzLl95MSkpO2U9bi5wb3AoKTspe3ZhciByPWUubm9kZTtpZihyLmxlbmd0aCl7dmFyIG8sYT1lLngwLHM9ZS55MCxsPWUueDEsYz1lLnkxLHU9KGErbCkvMixoPShzK2MpLzI7KG89clswXSkmJm4ucHVzaChuZXcgWkcobyxhLHMsdSxoKSksKG89clsxXSkmJm4ucHVzaChuZXcgWkcobyx1LHMsbCxoKSksKG89clsyXSkmJm4ucHVzaChuZXcgWkcobyxhLGgsdSxjKSksKG89clszXSkmJm4ucHVzaChuZXcgWkcobyx1LGgsbCxjKSl9aS5wdXNoKGUpfWZvcig7ZT1pLnBvcCgpOyl0KGUubm9kZSxlLngwLGUueTAsZS54MSxlLnkxKTtyZXR1cm4gdGhpc30saVcueD1mdW5jdGlvbiB5Vyh0KXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8odGhpcy5feD10LHRoaXMpOnRoaXMuX3h9LGlXLnk9ZnVuY3Rpb24gdlcodCl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KHRoaXMuX3k9dCx0aGlzKTp0aGlzLl95fTt2YXIgYlc9IiQiO2Z1bmN0aW9uIHhXKCl7fWZ1bmN0aW9uIHdXKHQsZSl7dmFyIG49bmV3IHhXO2lmKHQgaW5zdGFuY2VvZiB4Vyl0LmVhY2goKGZ1bmN0aW9uKHQsZSl7bi5zZXQoZSx0KX0pKTtlbHNlIGlmKEFycmF5LmlzQXJyYXkodCkpe3ZhciBpLHI9LTEsbz10Lmxlbmd0aDtpZihudWxsPT1lKWZvcig7KytyPG87KW4uc2V0KHIsdFtyXSk7ZWxzZSBmb3IoOysrcjxvOyluLnNldChlKGk9dFtyXSxyLHQpLGkpfWVsc2UgaWYodClmb3IodmFyIGEgaW4gdCluLnNldChhLHRbYV0pO3JldHVybiBufWZ1bmN0aW9uIFNXKCl7fXhXLnByb3RvdHlwZT13Vy5wcm90b3R5cGU9e2NvbnN0cnVjdG9yOnhXLGhhczpmdW5jdGlvbih0KXtyZXR1cm4gYlcrdCBpbiB0aGlzfSxnZXQ6ZnVuY3Rpb24odCl7cmV0dXJuIHRoaXNbYlcrdF19LHNldDpmdW5jdGlvbih0LGUpe3JldHVybiB0aGlzW2JXK3RdPWUsdGhpc30scmVtb3ZlOmZ1bmN0aW9uKHQpe3ZhciBlPWJXK3Q7cmV0dXJuIGUgaW4gdGhpcyYmZGVsZXRlIHRoaXNbZV19LGNsZWFyOmZ1bmN0aW9uKCl7Zm9yKHZhciB0IGluIHRoaXMpdFswXT09PWJXJiZkZWxldGUgdGhpc1t0XX0sa2V5czpmdW5jdGlvbigpe3ZhciB0PVtdO2Zvcih2YXIgZSBpbiB0aGlzKWVbMF09PT1iVyYmdC5wdXNoKGUuc2xpY2UoMSkpO3JldHVybiB0fSx2YWx1ZXM6ZnVuY3Rpb24oKXt2YXIgdD1bXTtmb3IodmFyIGUgaW4gdGhpcyllWzBdPT09YlcmJnQucHVzaCh0aGlzW2VdKTtyZXR1cm4gdH0sZW50cmllczpmdW5jdGlvbigpe3ZhciB0PVtdO2Zvcih2YXIgZSBpbiB0aGlzKWVbMF09PT1iVyYmdC5wdXNoKHtrZXk6ZS5zbGljZSgxKSx2YWx1ZTp0aGlzW2VdfSk7cmV0dXJuIHR9LHNpemU6ZnVuY3Rpb24oKXt2YXIgdD0wO2Zvcih2YXIgZSBpbiB0aGlzKWVbMF09PT1iVyYmKyt0O3JldHVybiB0fSxlbXB0eTpmdW5jdGlvbigpe2Zvcih2YXIgdCBpbiB0aGlzKWlmKHRbMF09PT1iVylyZXR1cm4hMTtyZXR1cm4hMH0sZWFjaDpmdW5jdGlvbih0KXtmb3IodmFyIGUgaW4gdGhpcyllWzBdPT09YlcmJnQodGhpc1tlXSxlLnNsaWNlKDEpLHRoaXMpfX07dmFyIE1XPXdXLnByb3RvdHlwZTtmdW5jdGlvbiBFVyh0KXtyZXR1cm4gdC5pbmRleH1mdW5jdGlvbiBUVyh0LGUpe3ZhciBuPXQuZ2V0KGUpO2lmKCFuKXRocm93IG5ldyBFcnJvcigibWlzc2luZzogIitlKTtyZXR1cm4gbn1TVy5wcm90b3R5cGU9e2NvbnN0cnVjdG9yOlNXLGhhczpNVy5oYXMsYWRkOmZ1bmN0aW9uKHQpe3JldHVybiB0aGlzW2JXKyh0Kz0iIildPXQsdGhpc30scmVtb3ZlOk1XLnJlbW92ZSxjbGVhcjpNVy5jbGVhcix2YWx1ZXM6TVcua2V5cyxzaXplOk1XLnNpemUsZW1wdHk6TVcuZW1wdHksZWFjaDpNVy5lYWNofTt2YXIgQVc9e3ZhbHVlOmZ1bmN0aW9uKCl7fX07ZnVuY3Rpb24gQ1coKXtmb3IodmFyIHQsZT0wLG49YXJndW1lbnRzLmxlbmd0aCxpPXt9O2U8bjsrK2Upe2lmKCEodD1hcmd1bWVudHNbZV0rIiIpfHx0IGluIGl8fC9bXHMuXS8udGVzdCh0KSl0aHJvdyBuZXcgRXJyb3IoImlsbGVnYWwgdHlwZTogIit0KTtpW3RdPVtdfXJldHVybiBuZXcga1coaSl9ZnVuY3Rpb24ga1codCl7dGhpcy5fPXR9ZnVuY3Rpb24gTFcodCxlKXtyZXR1cm4gdC50cmltKCkuc3BsaXQoL158XHMrLykubWFwKChmdW5jdGlvbih0KXt2YXIgbj0iIixpPXQuaW5kZXhPZigiLiIpO2lmKGk+PTAmJihuPXQuc2xpY2UoaSsxKSx0PXQuc2xpY2UoMCxpKSksdCYmIWUuaGFzT3duUHJvcGVydHkodCkpdGhyb3cgbmV3IEVycm9yKCJ1bmtub3duIHR5cGU6ICIrdCk7cmV0dXJue3R5cGU6dCxuYW1lOm59fSkpfWZ1bmN0aW9uIFBXKHQsZSl7Zm9yKHZhciBuLGk9MCxyPXQubGVuZ3RoO2k8cjsrK2kpaWYoKG49dFtpXSkubmFtZT09PWUpcmV0dXJuIG4udmFsdWV9ZnVuY3Rpb24gSVcodCxlLG4pe2Zvcih2YXIgaT0wLHI9dC5sZW5ndGg7aTxyOysraSlpZih0W2ldLm5hbWU9PT1lKXt0W2ldPUFXLHQ9dC5zbGljZSgwLGkpLmNvbmNhdCh0LnNsaWNlKGkrMSkpO2JyZWFrfXJldHVybiBudWxsIT1uJiZ0LnB1c2goe25hbWU6ZSx2YWx1ZTpufSksdH1rVy5wcm90b3R5cGU9Q1cucHJvdG90eXBlPXtjb25zdHJ1Y3RvcjprVyxvbjpmdW5jdGlvbih0LGUpe3ZhciBuLGk9dGhpcy5fLHI9TFcodCsiIixpKSxvPS0xLGE9ci5sZW5ndGg7aWYoIShhcmd1bWVudHMubGVuZ3RoPDIpKXtpZihudWxsIT1lJiYiZnVuY3Rpb24iIT10eXBlb2YgZSl0aHJvdyBuZXcgRXJyb3IoImludmFsaWQgY2FsbGJhY2s6ICIrZSk7Zm9yKDsrK288YTspaWYobj0odD1yW29dKS50eXBlKWlbbl09SVcoaVtuXSx0Lm5hbWUsZSk7ZWxzZSBpZihudWxsPT1lKWZvcihuIGluIGkpaVtuXT1JVyhpW25dLHQubmFtZSxudWxsKTtyZXR1cm4gdGhpc31mb3IoOysrbzxhOylpZigobj0odD1yW29dKS50eXBlKSYmKG49UFcoaVtuXSx0Lm5hbWUpKSlyZXR1cm4gbn0sY29weTpmdW5jdGlvbigpe3ZhciB0PXt9LGU9dGhpcy5fO2Zvcih2YXIgbiBpbiBlKXRbbl09ZVtuXS5zbGljZSgpO3JldHVybiBuZXcga1codCl9LGNhbGw6ZnVuY3Rpb24odCxlKXtpZigobj1hcmd1bWVudHMubGVuZ3RoLTIpPjApZm9yKHZhciBuLGkscj1uZXcgQXJyYXkobiksbz0wO288bjsrK28pcltvXT1hcmd1bWVudHNbbysyXTtpZighdGhpcy5fLmhhc093blByb3BlcnR5KHQpKXRocm93IG5ldyBFcnJvcigidW5rbm93biB0eXBlOiAiK3QpO2ZvcihvPTAsbj0oaT10aGlzLl9bdF0pLmxlbmd0aDtvPG47KytvKWlbb10udmFsdWUuYXBwbHkoZSxyKX0sYXBwbHk6ZnVuY3Rpb24odCxlLG4pe2lmKCF0aGlzLl8uaGFzT3duUHJvcGVydHkodCkpdGhyb3cgbmV3IEVycm9yKCJ1bmtub3duIHR5cGU6ICIrdCk7Zm9yKHZhciBpPXRoaXMuX1t0XSxyPTAsbz1pLmxlbmd0aDtyPG87KytyKWlbcl0udmFsdWUuYXBwbHkoZSxuKX19O3ZhciBOVyxPVyxSVz0wLHpXPTAsRFc9MCxCVz0wLEhXPTAsRlc9MCxWVz0ib2JqZWN0Ij09dHlwZW9mIHBlcmZvcm1hbmNlJiZwZXJmb3JtYW5jZS5ub3c/cGVyZm9ybWFuY2U6RGF0ZSxqVz0ib2JqZWN0Ij09dHlwZW9mIHdpbmRvdyYmd2luZG93LnJlcXVlc3RBbmltYXRpb25GcmFtZT93aW5kb3cucmVxdWVzdEFuaW1hdGlvbkZyYW1lLmJpbmQod2luZG93KTpmdW5jdGlvbih0KXtzZXRUaW1lb3V0KHQsMTcpfTtmdW5jdGlvbiBVVygpe3JldHVybiBIV3x8KGpXKEdXKSxIVz1WVy5ub3coKStGVyl9ZnVuY3Rpb24gR1coKXtIVz0wfWZ1bmN0aW9uIFdXKCl7dGhpcy5fY2FsbD10aGlzLl90aW1lPXRoaXMuX25leHQ9bnVsbH1mdW5jdGlvbiBxVyh0LGUsbil7dmFyIGk9bmV3IFdXO3JldHVybiBpLnJlc3RhcnQodCxlLG4pLGl9ZnVuY3Rpb24gWVcoKXtIVz0oQlc9Vlcubm93KCkpK0ZXLFJXPXpXPTA7dHJ5eyEoZnVuY3Rpb24gdCgpe1VXKCksKytSVztmb3IodmFyIHQsZT1OVztlOykodD1IVy1lLl90aW1lKT49MCYmZS5fY2FsbC5jYWxsKG51bGwsdCksZT1lLl9uZXh0Oy0tUld9KSgpfWZpbmFsbHl7Ulc9MCwoZnVuY3Rpb24gZSgpe2Zvcih2YXIgdCxlLG49TlcsaT0xLzA7bjspbi5fY2FsbD8oaT5uLl90aW1lJiYoaT1uLl90aW1lKSx0PW4sbj1uLl9uZXh0KTooZT1uLl9uZXh0LG4uX25leHQ9bnVsbCxuPXQ/dC5fbmV4dD1lOk5XPWUpO09XPXQsJFcoaSl9KSgpLEhXPTB9fWZ1bmN0aW9uIFhXKCl7dmFyIHQ9Vlcubm93KCksZT10LUJXO2U+MWUzJiYoRlctPWUsQlc9dCl9ZnVuY3Rpb24gJFcodCl7Uld8fCh6VyYmKHpXPWNsZWFyVGltZW91dCh6VykpLHQtSFc+MjQ/KHQ8MS8wJiYoelc9c2V0VGltZW91dChZVyx0LVZXLm5vdygpLUZXKSksRFcmJihEVz1jbGVhckludGVydmFsKERXKSkpOihEV3x8KEJXPVZXLm5vdygpLERXPXNldEludGVydmFsKFhXLDFlMykpLFJXPTEsalcoWVcpKSl9ZnVuY3Rpb24gS1codCl7cmV0dXJuIHQueH1mdW5jdGlvbiBaVyh0KXtyZXR1cm4gdC55fVdXLnByb3RvdHlwZT1xVy5wcm90b3R5cGU9e2NvbnN0cnVjdG9yOldXLHJlc3RhcnQ6ZnVuY3Rpb24odCxlLG4pe2lmKCJmdW5jdGlvbiIhPXR5cGVvZiB0KXRocm93IG5ldyBUeXBlRXJyb3IoImNhbGxiYWNrIGlzIG5vdCBhIGZ1bmN0aW9uIik7bj0obnVsbD09bj9VVygpOituKSsobnVsbD09ZT8wOitlKSx0aGlzLl9uZXh0fHxPVz09PXRoaXN8fChPVz9PVy5fbmV4dD10aGlzOk5XPXRoaXMsT1c9dGhpcyksdGhpcy5fY2FsbD10LHRoaXMuX3RpbWU9biwkVygpfSxzdG9wOmZ1bmN0aW9uKCl7dGhpcy5fY2FsbCYmKHRoaXMuX2NhbGw9bnVsbCx0aGlzLl90aW1lPTEvMCwkVygpKX19O3ZhciBKVyxRVz1NYXRoLlBJKigzLU1hdGguc3FydCg1KSk7ZnVuY3Rpb24gdHEodCxlKXtpZigobj0odD1lP3QudG9FeHBvbmVudGlhbChlLTEpOnQudG9FeHBvbmVudGlhbCgpKS5pbmRleE9mKCJlIikpPDApcmV0dXJuIG51bGw7dmFyIG4saT10LnNsaWNlKDAsbik7cmV0dXJuW2kubGVuZ3RoPjE/aVswXStpLnNsaWNlKDIpOmksK3Quc2xpY2UobisxKV19ZnVuY3Rpb24gZXEodCl7cmV0dXJuKHQ9dHEoTWF0aC5hYnModCkpKT90WzFdOk5hTn1mdW5jdGlvbiBucSh0LGUpe3ZhciBuPXRxKHQsZSk7aWYoIW4pcmV0dXJuIHQrIiI7dmFyIGk9blswXSxyPW5bMV07cmV0dXJuIHI8MD8iMC4iK25ldyBBcnJheSgtcikuam9pbigiMCIpK2k6aS5sZW5ndGg+cisxP2kuc2xpY2UoMCxyKzEpKyIuIitpLnNsaWNlKHIrMSk6aStuZXcgQXJyYXkoci1pLmxlbmd0aCsyKS5qb2luKCIwIil9dmFyIGlxPXsiIjpmdW5jdGlvbiBycSh0LGUpe3Q6Zm9yKHZhciBuLGk9KHQ9dC50b1ByZWNpc2lvbihlKSkubGVuZ3RoLHI9MSxvPS0xO3I8aTsrK3Ipc3dpdGNoKHRbcl0pe2Nhc2UiLiI6bz1uPXI7YnJlYWs7Y2FzZSIwIjowPT09byYmKG89ciksbj1yO2JyZWFrO2Nhc2UiZSI6YnJlYWsgdDtkZWZhdWx0Om8+MCYmKG89MCl9cmV0dXJuIG8+MD90LnNsaWNlKDAsbykrdC5zbGljZShuKzEpOnR9LCIlIjpmdW5jdGlvbih0LGUpe3JldHVybigxMDAqdCkudG9GaXhlZChlKX0sYjpmdW5jdGlvbih0KXtyZXR1cm4gTWF0aC5yb3VuZCh0KS50b1N0cmluZygyKX0sYzpmdW5jdGlvbih0KXtyZXR1cm4gdCsiIn0sZDpmdW5jdGlvbih0KXtyZXR1cm4gTWF0aC5yb3VuZCh0KS50b1N0cmluZygxMCl9LGU6ZnVuY3Rpb24odCxlKXtyZXR1cm4gdC50b0V4cG9uZW50aWFsKGUpfSxmOmZ1bmN0aW9uKHQsZSl7cmV0dXJuIHQudG9GaXhlZChlKX0sZzpmdW5jdGlvbih0LGUpe3JldHVybiB0LnRvUHJlY2lzaW9uKGUpfSxvOmZ1bmN0aW9uKHQpe3JldHVybiBNYXRoLnJvdW5kKHQpLnRvU3RyaW5nKDgpfSxwOmZ1bmN0aW9uKHQsZSl7cmV0dXJuIG5xKDEwMCp0LGUpfSxyOm5xLHM6ZnVuY3Rpb24gb3EodCxlKXt2YXIgbj10cSh0LGUpO2lmKCFuKXJldHVybiB0KyIiO3ZhciBpPW5bMF0scj1uWzFdLG89ci0oSlc9MypNYXRoLm1heCgtOCxNYXRoLm1pbig4LE1hdGguZmxvb3Ioci8zKSkpKSsxLGE9aS5sZW5ndGg7cmV0dXJuIG89PT1hP2k6bz5hP2krbmV3IEFycmF5KG8tYSsxKS5qb2luKCIwIik6bz4wP2kuc2xpY2UoMCxvKSsiLiIraS5zbGljZShvKToiMC4iK25ldyBBcnJheSgxLW8pLmpvaW4oIjAiKSt0cSh0LE1hdGgubWF4KDAsZStvLTEpKVswXX0sWDpmdW5jdGlvbih0KXtyZXR1cm4gTWF0aC5yb3VuZCh0KS50b1N0cmluZygxNikudG9VcHBlckNhc2UoKX0seDpmdW5jdGlvbih0KXtyZXR1cm4gTWF0aC5yb3VuZCh0KS50b1N0cmluZygxNil9fSxhcT0vXig/OiguKT8oWzw+PV5dKSk/KFsrXC1cKCBdKT8oWyQjXSk/KDApPyhcZCspPygsKT8oXC5cZCspPyhbYS16JV0pPyQvaTtmdW5jdGlvbiBzcSh0KXtyZXR1cm4gbmV3IGxxKHQpfWZ1bmN0aW9uIGxxKHQpe2lmKCEoZT1hcS5leGVjKHQpKSl0aHJvdyBuZXcgRXJyb3IoImludmFsaWQgZm9ybWF0OiAiK3QpO3ZhciBlLG49ZVsxXXx8IiAiLGk9ZVsyXXx8Ij4iLHI9ZVszXXx8Ii0iLG89ZVs0XXx8IiIsYT0hIWVbNV0scz1lWzZdJiYrZVs2XSxsPSEhZVs3XSxjPWVbOF0mJitlWzhdLnNsaWNlKDEpLHU9ZVs5XXx8IiI7Im4iPT09dT8obD0hMCx1PSJnIik6aXFbdV18fCh1PSIiKSwoYXx8IjAiPT09biYmIj0iPT09aSkmJihhPSEwLG49IjAiLGk9Ij0iKSx0aGlzLmZpbGw9bix0aGlzLmFsaWduPWksdGhpcy5zaWduPXIsdGhpcy5zeW1ib2w9byx0aGlzLnplcm89YSx0aGlzLndpZHRoPXMsdGhpcy5jb21tYT1sLHRoaXMucHJlY2lzaW9uPWMsdGhpcy50eXBlPXV9ZnVuY3Rpb24gY3EodCl7cmV0dXJuIHR9c3EucHJvdG90eXBlPWxxLnByb3RvdHlwZSxscS5wcm90b3R5cGUudG9TdHJpbmc9ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5maWxsK3RoaXMuYWxpZ24rdGhpcy5zaWduK3RoaXMuc3ltYm9sKyh0aGlzLnplcm8/IjAiOiIiKSsobnVsbD09dGhpcy53aWR0aD8iIjpNYXRoLm1heCgxLDB8dGhpcy53aWR0aCkpKyh0aGlzLmNvbW1hPyIsIjoiIikrKG51bGw9PXRoaXMucHJlY2lzaW9uPyIiOiIuIitNYXRoLm1heCgwLDB8dGhpcy5wcmVjaXNpb24pKSt0aGlzLnR5cGV9O3ZhciB1cSxocSxkcSxwcT1bInkiLCJ6IiwiYSIsImYiLCJwIiwibiIsIsK1IiwibSIsIiIsImsiLCJNIiwiRyIsIlQiLCJQIiwiRSIsIloiLCJZIl07ZnVuY3Rpb24gZnEodCl7dmFyIGU9dC5ncm91cGluZyYmdC50aG91c2FuZHM/KGZ1bmN0aW9uIG4odCxlKXtyZXR1cm4gZnVuY3Rpb24obixpKXtmb3IodmFyIHI9bi5sZW5ndGgsbz1bXSxhPTAscz10WzBdLGw9MDtyPjAmJnM+MCYmKGwrcysxPmkmJihzPU1hdGgubWF4KDEsaS1sKSksby5wdXNoKG4uc3Vic3RyaW5nKHItPXMscitzKSksISgobCs9cysxKT5pKSk7KXM9dFthPShhKzEpJXQubGVuZ3RoXTtyZXR1cm4gby5yZXZlcnNlKCkuam9pbihlKX19KSh0Lmdyb3VwaW5nLHQudGhvdXNhbmRzKTpjcSxpPXQuY3VycmVuY3kscj10LmRlY2ltYWwsbz10Lm51bWVyYWxzPyhmdW5jdGlvbiBhKHQpe3JldHVybiBmdW5jdGlvbihlKXtyZXR1cm4gZS5yZXBsYWNlKC9bMC05XS9nLChmdW5jdGlvbihlKXtyZXR1cm4gdFsrZV19KSl9fSkodC5udW1lcmFscyk6Y3Escz10LnBlcmNlbnR8fCIlIjtmdW5jdGlvbiBsKHQpe3ZhciBuPSh0PXNxKHQpKS5maWxsLGE9dC5hbGlnbixsPXQuc2lnbixjPXQuc3ltYm9sLHU9dC56ZXJvLGg9dC53aWR0aCxkPXQuY29tbWEscD10LnByZWNpc2lvbixmPXQudHlwZSxtPSIkIj09PWM/aVswXToiIyI9PT1jJiYvW2JveFhdLy50ZXN0KGYpPyIwIitmLnRvTG93ZXJDYXNlKCk6IiIsZz0iJCI9PT1jP2lbMV06L1slcF0vLnRlc3QoZik/czoiIixfPWlxW2ZdLHk9IWZ8fC9bZGVmZ3BycyVdLy50ZXN0KGYpO2Z1bmN0aW9uIHYodCl7dmFyIGkscyxjLHY9bSxiPWc7aWYoImMiPT09ZiliPV8odCkrYix0PSIiO2Vsc2V7dmFyIHg9KHQ9K3QpPDA7aWYodD1fKE1hdGguYWJzKHQpLHApLHgmJjA9PSt0JiYoeD0hMSksdj0oeD8iKCI9PT1sP2w6Ii0iOiItIj09PWx8fCIoIj09PWw/IiI6bCkrdixiPSgicyI9PT1mP3BxWzgrSlcvM106IiIpK2IrKHgmJiIoIj09PWw/IikiOiIiKSx5KWZvcihpPS0xLHM9dC5sZW5ndGg7KytpPHM7KWlmKDQ4PihjPXQuY2hhckNvZGVBdChpKSl8fGM+NTcpe2I9KDQ2PT09Yz9yK3Quc2xpY2UoaSsxKTp0LnNsaWNlKGkpKStiLHQ9dC5zbGljZSgwLGkpO2JyZWFrfX1kJiYhdSYmKHQ9ZSh0LDEvMCkpO3ZhciB3PXYubGVuZ3RoK3QubGVuZ3RoK2IubGVuZ3RoLFM9dzxoP25ldyBBcnJheShoLXcrMSkuam9pbihuKToiIjtzd2l0Y2goZCYmdSYmKHQ9ZShTK3QsUy5sZW5ndGg/aC1iLmxlbmd0aDoxLzApLFM9IiIpLGEpe2Nhc2UiPCI6dD12K3QrYitTO2JyZWFrO2Nhc2UiPSI6dD12K1MrdCtiO2JyZWFrO2Nhc2UiXiI6dD1TLnNsaWNlKDAsdz1TLmxlbmd0aD4+MSkrdit0K2IrUy5zbGljZSh3KTticmVhaztkZWZhdWx0OnQ9Uyt2K3QrYn1yZXR1cm4gbyh0KX1yZXR1cm4gcD1udWxsPT1wP2Y/NjoxMjovW2dwcnNdLy50ZXN0KGYpP01hdGgubWF4KDEsTWF0aC5taW4oMjEscCkpOk1hdGgubWF4KDAsTWF0aC5taW4oMjAscCkpLHYudG9TdHJpbmc9ZnVuY3Rpb24oKXtyZXR1cm4gdCsiIn0sdn1yZXR1cm57Zm9ybWF0OmwsZm9ybWF0UHJlZml4OmZ1bmN0aW9uIGModCxlKXt2YXIgbj1sKCgodD1zcSh0KSkudHlwZT0iZiIsdCkpLGk9MypNYXRoLm1heCgtOCxNYXRoLm1pbig4LE1hdGguZmxvb3IoZXEoZSkvMykpKSxyPU1hdGgucG93KDEwLC1pKSxvPXBxWzgraS8zXTtyZXR1cm4gZnVuY3Rpb24odCl7cmV0dXJuIG4ocip0KStvfX19fWZ1bmN0aW9uIG1xKHQpe3JldHVybiB1cT1mcSh0KSxocT11cS5mb3JtYXQsZHE9dXEuZm9ybWF0UHJlZml4LHVxfWZ1bmN0aW9uIGdxKCl7cmV0dXJuIG5ldyBfcX1mdW5jdGlvbiBfcSgpe3RoaXMucmVzZXQoKX1tcSh7ZGVjaW1hbDoiLiIsdGhvdXNhbmRzOiIsIixncm91cGluZzpbM10sY3VycmVuY3k6WyIkIiwiIl19KSxfcS5wcm90b3R5cGU9e2NvbnN0cnVjdG9yOl9xLHJlc2V0OmZ1bmN0aW9uKCl7dGhpcy5zPXRoaXMudD0wfSxhZGQ6ZnVuY3Rpb24odCl7dnEoeXEsdCx0aGlzLnQpLHZxKHRoaXMseXEucyx0aGlzLnMpLHRoaXMucz90aGlzLnQrPXlxLnQ6dGhpcy5zPXlxLnR9LHZhbHVlT2Y6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5zfX07dmFyIHlxPW5ldyBfcTtmdW5jdGlvbiB2cSh0LGUsbil7dmFyIGk9dC5zPWUrbixyPWktZTt0LnQ9ZS0oaS1yKSsobi1yKX12YXIgYnE9MWUtNix4cT1NYXRoLlBJLHdxPXhxLzIsU3E9eHEvNCxNcT0yKnhxLEVxPTE4MC94cSxUcT14cS8xODAsQXE9TWF0aC5hYnMsQ3E9TWF0aC5hdGFuLGtxPU1hdGguYXRhbjIsTHE9TWF0aC5jb3MsUHE9TWF0aC5jZWlsLElxPU1hdGguZXhwLE5xPU1hdGgubG9nLE9xPU1hdGgucG93LFJxPU1hdGguc2luLHpxPU1hdGguc2lnbnx8ZnVuY3Rpb24odCl7cmV0dXJuIHQ+MD8xOnQ8MD8tMTowfSxEcT1NYXRoLnNxcnQsQnE9TWF0aC50YW47ZnVuY3Rpb24gSHEodCl7cmV0dXJuIHQ+MT8wOnQ8LTE/eHE6TWF0aC5hY29zKHQpfWZ1bmN0aW9uIEZxKHQpe3JldHVybiB0PjE/d3E6dDwtMT8td3E6TWF0aC5hc2luKHQpfWZ1bmN0aW9uIFZxKHQpe3JldHVybih0PVJxKHQvMikpKnR9ZnVuY3Rpb24ganEoKXt9ZnVuY3Rpb24gVXEodCxlKXt0JiZXcS5oYXNPd25Qcm9wZXJ0eSh0LnR5cGUpJiZXcVt0LnR5cGVdKHQsZSl9dmFyIEdxPXtGZWF0dXJlOmZ1bmN0aW9uKHQsZSl7VXEodC5nZW9tZXRyeSxlKX0sRmVhdHVyZUNvbGxlY3Rpb246ZnVuY3Rpb24odCxlKXtmb3IodmFyIG49dC5mZWF0dXJlcyxpPS0xLHI9bi5sZW5ndGg7KytpPHI7KVVxKG5baV0uZ2VvbWV0cnksZSl9fSxXcT17U3BoZXJlOmZ1bmN0aW9uKHQsZSl7ZS5zcGhlcmUoKX0sUG9pbnQ6ZnVuY3Rpb24odCxlKXtlLnBvaW50KCh0PXQuY29vcmRpbmF0ZXMpWzBdLHRbMV0sdFsyXSl9LE11bHRpUG9pbnQ6ZnVuY3Rpb24odCxlKXtmb3IodmFyIG49dC5jb29yZGluYXRlcyxpPS0xLHI9bi5sZW5ndGg7KytpPHI7KWUucG9pbnQoKHQ9bltpXSlbMF0sdFsxXSx0WzJdKX0sTGluZVN0cmluZzpmdW5jdGlvbih0LGUpe3FxKHQuY29vcmRpbmF0ZXMsZSwwKX0sTXVsdGlMaW5lU3RyaW5nOmZ1bmN0aW9uKHQsZSl7Zm9yKHZhciBuPXQuY29vcmRpbmF0ZXMsaT0tMSxyPW4ubGVuZ3RoOysraTxyOylxcShuW2ldLGUsMCl9LFBvbHlnb246ZnVuY3Rpb24odCxlKXtZcSh0LmNvb3JkaW5hdGVzLGUpfSxNdWx0aVBvbHlnb246ZnVuY3Rpb24odCxlKXtmb3IodmFyIG49dC5jb29yZGluYXRlcyxpPS0xLHI9bi5sZW5ndGg7KytpPHI7KVlxKG5baV0sZSl9LEdlb21ldHJ5Q29sbGVjdGlvbjpmdW5jdGlvbih0LGUpe2Zvcih2YXIgbj10Lmdlb21ldHJpZXMsaT0tMSxyPW4ubGVuZ3RoOysraTxyOylVcShuW2ldLGUpfX07ZnVuY3Rpb24gcXEodCxlLG4pe3ZhciBpLHI9LTEsbz10Lmxlbmd0aC1uO2ZvcihlLmxpbmVTdGFydCgpOysrcjxvOyllLnBvaW50KChpPXRbcl0pWzBdLGlbMV0saVsyXSk7ZS5saW5lRW5kKCl9ZnVuY3Rpb24gWXEodCxlKXt2YXIgbj0tMSxpPXQubGVuZ3RoO2ZvcihlLnBvbHlnb25TdGFydCgpOysrbjxpOylxcSh0W25dLGUsMSk7ZS5wb2x5Z29uRW5kKCl9ZnVuY3Rpb24gWHEodCxlKXt0JiZHcS5oYXNPd25Qcm9wZXJ0eSh0LnR5cGUpP0dxW3QudHlwZV0odCxlKTpVcSh0LGUpfXZhciAkcSxLcSxacSxKcSxRcSx0WT1ncSgpLGVZPWdxKCksblk9e3BvaW50OmpxLGxpbmVTdGFydDpqcSxsaW5lRW5kOmpxLHBvbHlnb25TdGFydDpmdW5jdGlvbigpe3RZLnJlc2V0KCksblkubGluZVN0YXJ0PWlZLG5ZLmxpbmVFbmQ9cll9LHBvbHlnb25FbmQ6ZnVuY3Rpb24oKXt2YXIgdD0rdFk7ZVkuYWRkKHQ8MD9NcSt0OnQpLHRoaXMubGluZVN0YXJ0PXRoaXMubGluZUVuZD10aGlzLnBvaW50PWpxfSxzcGhlcmU6ZnVuY3Rpb24oKXtlWS5hZGQoTXEpfX07ZnVuY3Rpb24gaVkoKXtuWS5wb2ludD1vWX1mdW5jdGlvbiByWSgpe2FZKCRxLEtxKX1mdW5jdGlvbiBvWSh0LGUpe25ZLnBvaW50PWFZLCRxPXQsS3E9ZSxacT10Kj1UcSxKcT1McShlPShlKj1UcSkvMitTcSksUXE9UnEoZSl9ZnVuY3Rpb24gYVkodCxlKXt2YXIgbj0odCo9VHEpLVpxLGk9bj49MD8xOi0xLHI9aSpuLG89THEoZT0oZSo9VHEpLzIrU3EpLGE9UnEoZSkscz1RcSphLGw9SnEqbytzKkxxKHIpLGM9cyppKlJxKHIpO3RZLmFkZChrcShjLGwpKSxacT10LEpxPW8sUXE9YX1mdW5jdGlvbiBzWSh0KXtyZXR1cm5ba3EodFsxXSx0WzBdKSxGcSh0WzJdKV19ZnVuY3Rpb24gbFkodCl7dmFyIGU9dFswXSxuPXRbMV0saT1McShuKTtyZXR1cm5baSpMcShlKSxpKlJxKGUpLFJxKG4pXX1mdW5jdGlvbiBjWSh0LGUpe3JldHVybiB0WzBdKmVbMF0rdFsxXSplWzFdK3RbMl0qZVsyXX1mdW5jdGlvbiB1WSh0LGUpe3JldHVyblt0WzFdKmVbMl0tdFsyXSplWzFdLHRbMl0qZVswXS10WzBdKmVbMl0sdFswXSplWzFdLXRbMV0qZVswXV19ZnVuY3Rpb24gaFkodCxlKXt0WzBdKz1lWzBdLHRbMV0rPWVbMV0sdFsyXSs9ZVsyXX1mdW5jdGlvbiBkWSh0LGUpe3JldHVyblt0WzBdKmUsdFsxXSplLHRbMl0qZV19ZnVuY3Rpb24gcFkodCl7dmFyIGU9RHEodFswXSp0WzBdK3RbMV0qdFsxXSt0WzJdKnRbMl0pO3RbMF0vPWUsdFsxXS89ZSx0WzJdLz1lfXZhciBmWSxtWSxnWSxfWSx5WSx2WSxiWSx4WSx3WSxTWSxNWSxFWSxUWSxBWSxDWSxrWSxMWSxQWSxJWSxOWSxPWSxSWSx6WSxEWSxCWSxIWSxGWT1ncSgpLFZZPXtwb2ludDpqWSxsaW5lU3RhcnQ6R1ksbGluZUVuZDpXWSxwb2x5Z29uU3RhcnQ6ZnVuY3Rpb24oKXtWWS5wb2ludD1xWSxWWS5saW5lU3RhcnQ9WVksVlkubGluZUVuZD1YWSxGWS5yZXNldCgpLG5ZLnBvbHlnb25TdGFydCgpfSxwb2x5Z29uRW5kOmZ1bmN0aW9uKCl7blkucG9seWdvbkVuZCgpLFZZLnBvaW50PWpZLFZZLmxpbmVTdGFydD1HWSxWWS5saW5lRW5kPVdZLHRZPDA/KGZZPS0oZ1k9MTgwKSxtWT0tKF9ZPTkwKSk6Rlk+YnE/X1k9OTA6Rlk8LTFlLTYmJihtWT0tOTApLFNZWzBdPWZZLFNZWzFdPWdZfX07ZnVuY3Rpb24galkodCxlKXt3WS5wdXNoKFNZPVtmWT10LGdZPXRdKSxlPG1ZJiYobVk9ZSksZT5fWSYmKF9ZPWUpfWZ1bmN0aW9uIFVZKHQsZSl7dmFyIG49bFkoW3QqVHEsZSpUcV0pO2lmKHhZKXt2YXIgaT11WSh4WSxuKSxyPXVZKFtpWzFdLC1pWzBdLDBdLGkpO3BZKHIpLHI9c1kocik7dmFyIG8sYT10LXlZLHM9YT4wPzE6LTEsbD1yWzBdKkVxKnMsYz1BcShhKT4xODA7Y14ocyp5WTxsJiZsPHMqdCk/KG89clsxXSpFcSk+X1kmJihfWT1vKTpjXihzKnlZPChsPShsKzM2MCklMzYwLTE4MCkmJmw8cyp0KT8obz0tclsxXSpFcSk8bVkmJihtWT1vKTooZTxtWSYmKG1ZPWUpLGU+X1kmJihfWT1lKSksYz90PHlZPyRZKGZZLHQpPiRZKGZZLGdZKSYmKGdZPXQpOiRZKHQsZ1kpPiRZKGZZLGdZKSYmKGZZPXQpOmdZPj1mWT8odDxmWSYmKGZZPXQpLHQ+Z1kmJihnWT10KSk6dD55WT8kWShmWSx0KT4kWShmWSxnWSkmJihnWT10KTokWSh0LGdZKT4kWShmWSxnWSkmJihmWT10KX1lbHNlIHdZLnB1c2goU1k9W2ZZPXQsZ1k9dF0pO2U8bVkmJihtWT1lKSxlPl9ZJiYoX1k9ZSkseFk9bix5WT10fWZ1bmN0aW9uIEdZKCl7VlkucG9pbnQ9VVl9ZnVuY3Rpb24gV1koKXtTWVswXT1mWSxTWVsxXT1nWSxWWS5wb2ludD1qWSx4WT1udWxsfWZ1bmN0aW9uIHFZKHQsZSl7aWYoeFkpe3ZhciBuPXQteVk7RlkuYWRkKEFxKG4pPjE4MD9uKyhuPjA/MzYwOi0zNjApOm4pfWVsc2Ugdlk9dCxiWT1lO25ZLnBvaW50KHQsZSksVVkodCxlKX1mdW5jdGlvbiBZWSgpe25ZLmxpbmVTdGFydCgpfWZ1bmN0aW9uIFhZKCl7cVkodlksYlkpLG5ZLmxpbmVFbmQoKSxBcShGWSk+YnEmJihmWT0tKGdZPTE4MCkpLFNZWzBdPWZZLFNZWzFdPWdZLHhZPW51bGx9ZnVuY3Rpb24gJFkodCxlKXtyZXR1cm4oZS09dCk8MD9lKzM2MDplfWZ1bmN0aW9uIEtZKHQsZSl7cmV0dXJuIHRbMF0tZVswXX1mdW5jdGlvbiBaWSh0LGUpe3JldHVybiB0WzBdPD10WzFdP3RbMF08PWUmJmU8PXRbMV06ZTx0WzBdfHx0WzFdPGV9dmFyIEpZPXtzcGhlcmU6anEscG9pbnQ6UVksbGluZVN0YXJ0OmVYLGxpbmVFbmQ6clgscG9seWdvblN0YXJ0OmZ1bmN0aW9uKCl7SlkubGluZVN0YXJ0PW9YLEpZLmxpbmVFbmQ9YVh9LHBvbHlnb25FbmQ6ZnVuY3Rpb24oKXtKWS5saW5lU3RhcnQ9ZVgsSlkubGluZUVuZD1yWH19O2Z1bmN0aW9uIFFZKHQsZSl7dCo9VHE7dmFyIG49THEoZSo9VHEpO3RYKG4qTHEodCksbipScSh0KSxScShlKSl9ZnVuY3Rpb24gdFgodCxlLG4peysrTVksVFkrPSh0LVRZKS9NWSxBWSs9KGUtQVkpL01ZLENZKz0obi1DWSkvTVl9ZnVuY3Rpb24gZVgoKXtKWS5wb2ludD1uWH1mdW5jdGlvbiBuWCh0LGUpe3QqPVRxO3ZhciBuPUxxKGUqPVRxKTtEWT1uKkxxKHQpLEJZPW4qUnEodCksSFk9UnEoZSksSlkucG9pbnQ9aVgsdFgoRFksQlksSFkpfWZ1bmN0aW9uIGlYKHQsZSl7dCo9VHE7dmFyIG49THEoZSo9VHEpLGk9bipMcSh0KSxyPW4qUnEodCksbz1ScShlKSxhPWtxKERxKChhPUJZKm8tSFkqcikqYSsoYT1IWSppLURZKm8pKmErKGE9RFkqci1CWSppKSphKSxEWSppK0JZKnIrSFkqbyk7RVkrPWEsa1krPWEqKERZKyhEWT1pKSksTFkrPWEqKEJZKyhCWT1yKSksUFkrPWEqKEhZKyhIWT1vKSksdFgoRFksQlksSFkpfWZ1bmN0aW9uIHJYKCl7SlkucG9pbnQ9UVl9ZnVuY3Rpb24gb1goKXtKWS5wb2ludD1zWH1mdW5jdGlvbiBhWCgpe2xYKFJZLHpZKSxKWS5wb2ludD1RWX1mdW5jdGlvbiBzWCh0LGUpe1JZPXQselk9ZSx0Kj1UcSxlKj1UcSxKWS5wb2ludD1sWDt2YXIgbj1McShlKTtEWT1uKkxxKHQpLEJZPW4qUnEodCksSFk9UnEoZSksdFgoRFksQlksSFkpfWZ1bmN0aW9uIGxYKHQsZSl7dCo9VHE7dmFyIG49THEoZSo9VHEpLGk9bipMcSh0KSxyPW4qUnEodCksbz1ScShlKSxhPUJZKm8tSFkqcixzPUhZKmktRFkqbyxsPURZKnItQlkqaSxjPURxKGEqYStzKnMrbCpsKSx1PUZxKGMpLGg9YyYmLXUvYztJWSs9aCphLE5ZKz1oKnMsT1krPWgqbCxFWSs9dSxrWSs9dSooRFkrKERZPWkpKSxMWSs9dSooQlkrKEJZPXIpKSxQWSs9dSooSFkrKEhZPW8pKSx0WChEWSxCWSxIWSl9ZnVuY3Rpb24gY1godCl7cmV0dXJuIGZ1bmN0aW9uKCl7cmV0dXJuIHR9fWZ1bmN0aW9uIHVYKHQsZSl7ZnVuY3Rpb24gbihuLGkpe3JldHVybiBuPXQobixpKSxlKG5bMF0sblsxXSl9cmV0dXJuIHQuaW52ZXJ0JiZlLmludmVydCYmKG4uaW52ZXJ0PWZ1bmN0aW9uKG4saSl7cmV0dXJuKG49ZS5pbnZlcnQobixpKSkmJnQuaW52ZXJ0KG5bMF0sblsxXSl9KSxufWZ1bmN0aW9uIGhYKHQsZSl7cmV0dXJuW3Q+eHE/dC1NcTp0PC14cT90K01xOnQsZV19ZnVuY3Rpb24gZFgodCxlLG4pe3JldHVybih0JT1NcSk/ZXx8bj91WChmWCh0KSxtWChlLG4pKTpmWCh0KTplfHxuP21YKGUsbik6aFh9ZnVuY3Rpb24gcFgodCl7cmV0dXJuIGZ1bmN0aW9uKGUsbil7cmV0dXJuWyhlKz10KT54cT9lLU1xOmU8LXhxP2UrTXE6ZSxuXX19ZnVuY3Rpb24gZlgodCl7dmFyIGU9cFgodCk7cmV0dXJuIGUuaW52ZXJ0PXBYKC10KSxlfWZ1bmN0aW9uIG1YKHQsZSl7dmFyIG49THEodCksaT1ScSh0KSxyPUxxKGUpLG89UnEoZSk7ZnVuY3Rpb24gYSh0LGUpe3ZhciBhPUxxKGUpLHM9THEodCkqYSxsPVJxKHQpKmEsYz1ScShlKSx1PWMqbitzKmk7cmV0dXJuW2txKGwqci11Km8scypuLWMqaSksRnEodSpyK2wqbyldfXJldHVybiBhLmludmVydD1mdW5jdGlvbih0LGUpe3ZhciBhPUxxKGUpLHM9THEodCkqYSxsPVJxKHQpKmEsYz1ScShlKSx1PWMqci1sKm87cmV0dXJuW2txKGwqcitjKm8scypuK3UqaSksRnEodSpuLXMqaSldfSxhfWZ1bmN0aW9uIGdYKHQpe2Z1bmN0aW9uIGUoZSl7cmV0dXJuKGU9dChlWzBdKlRxLGVbMV0qVHEpKVswXSo9RXEsZVsxXSo9RXEsZX1yZXR1cm4gdD1kWCh0WzBdKlRxLHRbMV0qVHEsdC5sZW5ndGg+Mj90WzJdKlRxOjApLGUuaW52ZXJ0PWZ1bmN0aW9uKGUpe3JldHVybihlPXQuaW52ZXJ0KGVbMF0qVHEsZVsxXSpUcSkpWzBdKj1FcSxlWzFdKj1FcSxlfSxlfWZ1bmN0aW9uIF9YKHQsZSxuLGkscixvKXtpZihuKXt2YXIgYT1McShlKSxzPVJxKGUpLGw9aSpuO251bGw9PXI/KHI9ZStpKk1xLG89ZS1sLzIpOihyPXlYKGEsciksbz15WChhLG8pLChpPjA/cjxvOnI+bykmJihyKz1pKk1xKSk7Zm9yKHZhciBjLHU9cjtpPjA/dT5vOnU8bzt1LT1sKWM9c1koW2EsLXMqTHEodSksLXMqUnEodSldKSx0LnBvaW50KGNbMF0sY1sxXSl9fWZ1bmN0aW9uIHlYKHQsZSl7KGU9bFkoZSkpWzBdLT10LHBZKGUpO3ZhciBuPUhxKC1lWzFdKTtyZXR1cm4oKC1lWzJdPDA/LW46bikrTXEtYnEpJU1xfWZ1bmN0aW9uIHZYKCl7dmFyIHQsZT1bXTtyZXR1cm57cG9pbnQ6ZnVuY3Rpb24oZSxuKXt0LnB1c2goW2Usbl0pfSxsaW5lU3RhcnQ6ZnVuY3Rpb24oKXtlLnB1c2godD1bXSl9LGxpbmVFbmQ6anEscmVqb2luOmZ1bmN0aW9uKCl7ZS5sZW5ndGg+MSYmZS5wdXNoKGUucG9wKCkuY29uY2F0KGUuc2hpZnQoKSkpfSxyZXN1bHQ6ZnVuY3Rpb24oKXt2YXIgbj1lO3JldHVybiBlPVtdLHQ9bnVsbCxufX19ZnVuY3Rpb24gYlgodCxlKXtyZXR1cm4gQXEodFswXS1lWzBdKTxicSYmQXEodFsxXS1lWzFdKTxicX1mdW5jdGlvbiB4WCh0LGUsbixpKXt0aGlzLng9dCx0aGlzLno9ZSx0aGlzLm89bix0aGlzLmU9aSx0aGlzLnY9ITEsdGhpcy5uPXRoaXMucD1udWxsfWZ1bmN0aW9uIHdYKHQsZSxuLGkscil7dmFyIG8sYSxzPVtdLGw9W107aWYodC5mb3JFYWNoKChmdW5jdGlvbih0KXtpZighKChlPXQubGVuZ3RoLTEpPD0wKSl7dmFyIGUsbixpPXRbMF0sYT10W2VdO2lmKGJYKGksYSkpe2ZvcihyLmxpbmVTdGFydCgpLG89MDtvPGU7KytvKXIucG9pbnQoKGk9dFtvXSlbMF0saVsxXSk7ci5saW5lRW5kKCl9ZWxzZSBzLnB1c2gobj1uZXcgeFgoaSx0LG51bGwsITApKSxsLnB1c2gobi5vPW5ldyB4WChpLG51bGwsbiwhMSkpLHMucHVzaChuPW5ldyB4WChhLHQsbnVsbCwhMSkpLGwucHVzaChuLm89bmV3IHhYKGEsbnVsbCxuLCEwKSl9fSkpLHMubGVuZ3RoKXtmb3IobC5zb3J0KGUpLFNYKHMpLFNYKGwpLG89MCxhPWwubGVuZ3RoO288YTsrK28pbFtvXS5lPW49IW47Zm9yKHZhciBjLHUsaD1zWzBdOzspe2Zvcih2YXIgZD1oLHA9ITA7ZC52OylpZigoZD1kLm4pPT09aClyZXR1cm47Yz1kLnosci5saW5lU3RhcnQoKTtkb3tpZihkLnY9ZC5vLnY9ITAsZC5lKXtpZihwKWZvcihvPTAsYT1jLmxlbmd0aDtvPGE7KytvKXIucG9pbnQoKHU9Y1tvXSlbMF0sdVsxXSk7ZWxzZSBpKGQueCxkLm4ueCwxLHIpO2Q9ZC5ufWVsc2V7aWYocClmb3Iobz0oYz1kLnAueikubGVuZ3RoLTE7bz49MDstLW8pci5wb2ludCgodT1jW29dKVswXSx1WzFdKTtlbHNlIGkoZC54LGQucC54LC0xLHIpO2Q9ZC5wfWM9KGQ9ZC5vKS56LHA9IXB9d2hpbGUoIWQudik7ci5saW5lRW5kKCl9fX1mdW5jdGlvbiBTWCh0KXtpZihlPXQubGVuZ3RoKXtmb3IodmFyIGUsbixpPTAscj10WzBdOysraTxlOylyLm49bj10W2ldLG4ucD1yLHI9bjtyLm49bj10WzBdLG4ucD1yfX1oWC5pbnZlcnQ9aFg7dmFyIE1YPWdxKCk7ZnVuY3Rpb24gRVgodCxlKXt2YXIgbj1lWzBdLGk9ZVsxXSxyPVtScShuKSwtTHEobiksMF0sbz0wLGE9MDtNWC5yZXNldCgpO2Zvcih2YXIgcz0wLGw9dC5sZW5ndGg7czxsOysrcylpZih1PShjPXRbc10pLmxlbmd0aClmb3IodmFyIGMsdSxoPWNbdS0xXSxkPWhbMF0scD1oWzFdLzIrU3EsZj1ScShwKSxtPUxxKHApLGc9MDtnPHU7KytnLGQ9eSxmPWIsbT14LGg9Xyl7dmFyIF89Y1tnXSx5PV9bMF0sdj1fWzFdLzIrU3EsYj1ScSh2KSx4PUxxKHYpLHc9eS1kLFM9dz49MD8xOi0xLE09Uyp3LEU9TT54cSxUPWYqYjtpZihNWC5hZGQoa3EoVCpTKlJxKE0pLG0qeCtUKkxxKE0pKSksbys9RT93K1MqTXE6dyxFXmQ+PW5eeT49bil7dmFyIEE9dVkobFkoaCksbFkoXykpO3BZKEEpO3ZhciBDPXVZKHIsQSk7cFkoQyk7dmFyIGs9KEVedz49MD8tMToxKSpGcShDWzJdKTsoaT5rfHxpPT09ayYmKEFbMF18fEFbMV0pKSYmKGErPUVedz49MD8xOi0xKX19cmV0dXJuKG88LTFlLTZ8fG88YnEmJk1YPC0xZS02KV4xJmF9ZnVuY3Rpb24gVFgodCxlKXtyZXR1cm4gdDxlPy0xOnQ+ZT8xOnQ+PWU/MDpOYU59ZnVuY3Rpb24gQVgodCxlLG4pe3Q9K3QsZT0rZSxuPShyPWFyZ3VtZW50cy5sZW5ndGgpPDI/KGU9dCx0PTAsMSk6cjwzPzE6K247Zm9yKHZhciBpPS0xLHI9MHxNYXRoLm1heCgwLE1hdGguY2VpbCgoZS10KS9uKSksbz1uZXcgQXJyYXkocik7KytpPHI7KW9baV09dCtpKm47cmV0dXJuIG99ZnVuY3Rpb24gQ1godCl7Zm9yKHZhciBlLG4saSxyPXQubGVuZ3RoLG89LTEsYT0wOysrbzxyOylhKz10W29dLmxlbmd0aDtmb3Iobj1uZXcgQXJyYXkoYSk7LS1yPj0wOylmb3IoZT0oaT10W3JdKS5sZW5ndGg7LS1lPj0wOyluWy0tYV09aVtlXTtyZXR1cm4gbn1mdW5jdGlvbiBrWCh0LGUsbixpKXtyZXR1cm4gZnVuY3Rpb24ocil7dmFyIG8sYSxzLGw9ZShyKSxjPXZYKCksdT1lKGMpLGg9ITEsZD17cG9pbnQ6cCxsaW5lU3RhcnQ6bSxsaW5lRW5kOmcscG9seWdvblN0YXJ0OmZ1bmN0aW9uKCl7ZC5wb2ludD1fLGQubGluZVN0YXJ0PXksZC5saW5lRW5kPXYsYT1bXSxvPVtdfSxwb2x5Z29uRW5kOmZ1bmN0aW9uKCl7ZC5wb2ludD1wLGQubGluZVN0YXJ0PW0sZC5saW5lRW5kPWcsYT1DWChhKTt2YXIgdD1FWChvLGkpO2EubGVuZ3RoPyhofHwoci5wb2x5Z29uU3RhcnQoKSxoPSEwKSx3WChhLFBYLHQsbixyKSk6dCYmKGh8fChyLnBvbHlnb25TdGFydCgpLGg9ITApLHIubGluZVN0YXJ0KCksbihudWxsLG51bGwsMSxyKSxyLmxpbmVFbmQoKSksaCYmKHIucG9seWdvbkVuZCgpLGg9ITEpLGE9bz1udWxsfSxzcGhlcmU6ZnVuY3Rpb24oKXtyLnBvbHlnb25TdGFydCgpLHIubGluZVN0YXJ0KCksbihudWxsLG51bGwsMSxyKSxyLmxpbmVFbmQoKSxyLnBvbHlnb25FbmQoKX19O2Z1bmN0aW9uIHAoZSxuKXt0KGUsbikmJnIucG9pbnQoZSxuKX1mdW5jdGlvbiBmKHQsZSl7bC5wb2ludCh0LGUpfWZ1bmN0aW9uIG0oKXtkLnBvaW50PWYsbC5saW5lU3RhcnQoKX1mdW5jdGlvbiBnKCl7ZC5wb2ludD1wLGwubGluZUVuZCgpfWZ1bmN0aW9uIF8odCxlKXtzLnB1c2goW3QsZV0pLHUucG9pbnQodCxlKX1mdW5jdGlvbiB5KCl7dS5saW5lU3RhcnQoKSxzPVtdfWZ1bmN0aW9uIHYoKXtfKHNbMF1bMF0sc1swXVsxXSksdS5saW5lRW5kKCk7dmFyIHQsZSxuLGksbD11LmNsZWFuKCksZD1jLnJlc3VsdCgpLHA9ZC5sZW5ndGg7aWYocy5wb3AoKSxvLnB1c2gocykscz1udWxsLHApaWYoMSZsKXtpZigoZT0obj1kWzBdKS5sZW5ndGgtMSk+MCl7Zm9yKGh8fChyLnBvbHlnb25TdGFydCgpLGg9ITApLHIubGluZVN0YXJ0KCksdD0wO3Q8ZTsrK3Qpci5wb2ludCgoaT1uW3RdKVswXSxpWzFdKTtyLmxpbmVFbmQoKX19ZWxzZSBwPjEmJjImbCYmZC5wdXNoKGQucG9wKCkuY29uY2F0KGQuc2hpZnQoKSkpLGEucHVzaChkLmZpbHRlcihMWCkpfXJldHVybiBkfX1mdW5jdGlvbiBMWCh0KXtyZXR1cm4gdC5sZW5ndGg+MX1mdW5jdGlvbiBQWCh0LGUpe3JldHVybigodD10LngpWzBdPDA/dFsxXS13cS1icTp3cS10WzFdKS0oKGU9ZS54KVswXTwwP2VbMV0td3EtYnE6d3EtZVsxXSl9IShmdW5jdGlvbiBJWCh0KXsxPT09dC5sZW5ndGgmJih0PShmdW5jdGlvbiBlKHQpe3JldHVybiBmdW5jdGlvbihlLG4pe3JldHVybiBUWCh0KGUpLG4pfX0pKHQpKX0pKFRYKTt2YXIgTlg9a1goKGZ1bmN0aW9uKCl7cmV0dXJuITB9KSwoZnVuY3Rpb24gT1godCl7dmFyIGUsbj1OYU4saT1OYU4scj1OYU47cmV0dXJue2xpbmVTdGFydDpmdW5jdGlvbigpe3QubGluZVN0YXJ0KCksZT0xfSxwb2ludDpmdW5jdGlvbihvLGEpe3ZhciBzPW8+MD94cToteHEsbD1BcShvLW4pO0FxKGwteHEpPGJxPyh0LnBvaW50KG4saT0oaSthKS8yPjA/d3E6LXdxKSx0LnBvaW50KHIsaSksdC5saW5lRW5kKCksdC5saW5lU3RhcnQoKSx0LnBvaW50KHMsaSksdC5wb2ludChvLGkpLGU9MCk6ciE9PXMmJmw+PXhxJiYoQXEobi1yKTxicSYmKG4tPXIqYnEpLEFxKG8tcyk8YnEmJihvLT1zKmJxKSxpPShmdW5jdGlvbiBjKHQsZSxuLGkpe3ZhciByLG8sYT1ScSh0LW4pO3JldHVybiBBcShhKT5icT9DcSgoUnEoZSkqKG89THEoaSkpKlJxKG4pLVJxKGkpKihyPUxxKGUpKSpScSh0KSkvKHIqbyphKSk6KGUraSkvMn0pKG4saSxvLGEpLHQucG9pbnQocixpKSx0LmxpbmVFbmQoKSx0LmxpbmVTdGFydCgpLHQucG9pbnQocyxpKSxlPTApLHQucG9pbnQobj1vLGk9YSkscj1zfSxsaW5lRW5kOmZ1bmN0aW9uKCl7dC5saW5lRW5kKCksbj1pPU5hTn0sY2xlYW46ZnVuY3Rpb24oKXtyZXR1cm4gMi1lfX19KSwoZnVuY3Rpb24gUlgodCxlLG4saSl7dmFyIHI7aWYobnVsbD09dClpLnBvaW50KC14cSxyPW4qd3EpLGkucG9pbnQoMCxyKSxpLnBvaW50KHhxLHIpLGkucG9pbnQoeHEsMCksaS5wb2ludCh4cSwtciksaS5wb2ludCgwLC1yKSxpLnBvaW50KC14cSwtciksaS5wb2ludCgteHEsMCksaS5wb2ludCgteHEscik7ZWxzZSBpZihBcSh0WzBdLWVbMF0pPmJxKXt2YXIgbz10WzBdPGVbMF0/eHE6LXhxO2kucG9pbnQoLW8scj1uKm8vMiksaS5wb2ludCgwLHIpLGkucG9pbnQobyxyKX1lbHNlIGkucG9pbnQoZVswXSxlWzFdKX0pLFsteHEsLXdxXSk7ZnVuY3Rpb24gelgodCl7dmFyIGU9THEodCksbj02KlRxLGk9ZT4wLHI9QXEoZSk+YnE7ZnVuY3Rpb24gbyh0LG4pe3JldHVybiBMcSh0KSpMcShuKT5lfWZ1bmN0aW9uIGEodCxuLGkpe3ZhciByPVsxLDAsMF0sbz11WShsWSh0KSxsWShuKSksYT1jWShvLG8pLHM9b1swXSxsPWEtcypzO2lmKCFsKXJldHVybiFpJiZ0O3ZhciBjPWUqYS9sLHU9LWUqcy9sLGg9dVkocixvKSxkPWRZKHIsYyk7aFkoZCxkWShvLHUpKTt2YXIgcD1oLGY9Y1koZCxwKSxtPWNZKHAscCksZz1mKmYtbSooY1koZCxkKS0xKTtpZighKGc8MCkpe3ZhciBfPURxKGcpLHk9ZFkocCwoLWYtXykvbSk7aWYoaFkoeSxkKSx5PXNZKHkpLCFpKXJldHVybiB5O3ZhciB2LGI9dFswXSx4PW5bMF0sdz10WzFdLFM9blsxXTt4PGImJih2PWIsYj14LHg9dik7dmFyIE09eC1iLEU9QXEoTS14cSk8YnE7aWYoIUUmJlM8dyYmKHY9dyx3PVMsUz12KSxFfHxNPGJxP0U/dytTPjBeeVsxXTwoQXEoeVswXS1iKTxicT93OlMpOnc8PXlbMV0mJnlbMV08PVM6TT54cV4oYjw9eVswXSYmeVswXTw9eCkpe3ZhciBUPWRZKHAsKC1mK18pL20pO3JldHVybiBoWShULGQpLFt5LHNZKFQpXX19fWZ1bmN0aW9uIHMoZSxuKXt2YXIgcj1pP3Q6eHEtdCxvPTA7cmV0dXJuIGU8LXI/b3w9MTplPnImJihvfD0yKSxuPC1yP298PTQ6bj5yJiYob3w9OCksb31yZXR1cm4ga1gobywoZnVuY3Rpb24gbCh0KXt2YXIgZSxuLGwsYyx1O3JldHVybntsaW5lU3RhcnQ6ZnVuY3Rpb24oKXtjPWw9ITEsdT0xfSxwb2ludDpmdW5jdGlvbihoLGQpe3ZhciBwLGY9W2gsZF0sbT1vKGgsZCksZz1pP20/MDpzKGgsZCk6bT9zKGgrKGg8MD94cToteHEpLGQpOjA7aWYoIWUmJihjPWw9bSkmJnQubGluZVN0YXJ0KCksbSE9PWwmJighKHA9YShlLGYpKXx8YlgoZSxwKXx8YlgoZixwKSkmJihmWzBdKz1icSxmWzFdKz1icSxtPW8oZlswXSxmWzFdKSksbSE9PWwpdT0wLG0/KHQubGluZVN0YXJ0KCkscD1hKGYsZSksdC5wb2ludChwWzBdLHBbMV0pKToocD1hKGUsZiksdC5wb2ludChwWzBdLHBbMV0pLHQubGluZUVuZCgpKSxlPXA7ZWxzZSBpZihyJiZlJiZpXm0pe3ZhciBfO2cmbnx8IShfPWEoZixlLCEwKSl8fCh1PTAsaT8odC5saW5lU3RhcnQoKSx0LnBvaW50KF9bMF1bMF0sX1swXVsxXSksdC5wb2ludChfWzFdWzBdLF9bMV1bMV0pLHQubGluZUVuZCgpKToodC5wb2ludChfWzFdWzBdLF9bMV1bMV0pLHQubGluZUVuZCgpLHQubGluZVN0YXJ0KCksdC5wb2ludChfWzBdWzBdLF9bMF1bMV0pKSl9IW18fGUmJmJYKGUsZil8fHQucG9pbnQoZlswXSxmWzFdKSxlPWYsbD1tLG49Z30sbGluZUVuZDpmdW5jdGlvbigpe2wmJnQubGluZUVuZCgpLGU9bnVsbH0sY2xlYW46ZnVuY3Rpb24oKXtyZXR1cm4gdXwoYyYmbCk8PDF9fX0pLChmdW5jdGlvbiBjKGUsaSxyLG8pe19YKG8sdCxuLHIsZSxpKX0pLGk/WzAsLXRdOlsteHEsdC14cV0pfXZhciBEWD0xZTksQlg9LURYO2Z1bmN0aW9uIEhYKHQsZSxuLGkpe2Z1bmN0aW9uIHIocixvKXtyZXR1cm4gdDw9ciYmcjw9biYmZTw9byYmbzw9aX1mdW5jdGlvbiBvKHIsbyxzLGMpe3ZhciB1PTAsaD0wO2lmKG51bGw9PXJ8fCh1PWEocixzKSkhPT0oaD1hKG8scykpfHxsKHIsbyk8MF5zPjApZG97Yy5wb2ludCgwPT09dXx8Mz09PXU/dDpuLHU+MT9pOmUpfXdoaWxlKCh1PSh1K3MrNCklNCkhPT1oKTtlbHNlIGMucG9pbnQob1swXSxvWzFdKX1mdW5jdGlvbiBhKGkscil7cmV0dXJuIEFxKGlbMF0tdCk8YnE/cj4wPzA6MzpBcShpWzBdLW4pPGJxP3I+MD8yOjE6QXEoaVsxXS1lKTxicT9yPjA/MTowOnI+MD8zOjJ9ZnVuY3Rpb24gcyh0LGUpe3JldHVybiBsKHQueCxlLngpfWZ1bmN0aW9uIGwodCxlKXt2YXIgbj1hKHQsMSksaT1hKGUsMSk7cmV0dXJuIG4hPT1pP24taTowPT09bj9lWzFdLXRbMV06MT09PW4/dFswXS1lWzBdOjI9PT1uP3RbMV0tZVsxXTplWzBdLXRbMF19cmV0dXJuIGZ1bmN0aW9uKGEpe3ZhciBsLGMsdSxoLGQscCxmLG0sZyxfLHksdj1hLGI9dlgoKSx4PXtwb2ludDpULGxpbmVTdGFydDpmdW5jdGlvbiB3KCl7eC5wb2ludD1BLGMmJmMucHVzaCh1PVtdKSxfPSEwLGc9ITEsZj1tPU5hTn0sbGluZUVuZDpmdW5jdGlvbiBTKCl7bCYmKEEoaCxkKSxwJiZnJiZiLnJlam9pbigpLGwucHVzaChiLnJlc3VsdCgpKSkseC5wb2ludD1ULGcmJnYubGluZUVuZCgpfSxwb2x5Z29uU3RhcnQ6ZnVuY3Rpb24gTSgpe3Y9YixsPVtdLGM9W10seT0hMH0scG9seWdvbkVuZDpmdW5jdGlvbiBFKCl7dmFyIGU9KGZ1bmN0aW9uIG4oKXtmb3IodmFyIGU9MCxuPTAscj1jLmxlbmd0aDtuPHI7KytuKWZvcih2YXIgbyxhLHM9Y1tuXSxsPTEsdT1zLmxlbmd0aCxoPXNbMF0sZD1oWzBdLHA9aFsxXTtsPHU7KytsKW89ZCxhPXAsZD0oaD1zW2xdKVswXSxwPWhbMV0sYTw9aT9wPmkmJihkLW8pKihpLWEpPihwLWEpKih0LW8pJiYrK2U6cDw9aSYmKGQtbykqKGktYSk8KHAtYSkqKHQtbykmJi0tZTtyZXR1cm4gZX0pKCkscj15JiZlLGg9KGw9Q1gobCkpLmxlbmd0aDsocnx8aCkmJihhLnBvbHlnb25TdGFydCgpLHImJihhLmxpbmVTdGFydCgpLG8obnVsbCxudWxsLDEsYSksYS5saW5lRW5kKCkpLGgmJndYKGwscyxlLG8sYSksYS5wb2x5Z29uRW5kKCkpLHY9YSxsPWM9dT1udWxsfX07ZnVuY3Rpb24gVCh0LGUpe3IodCxlKSYmdi5wb2ludCh0LGUpfWZ1bmN0aW9uIEEobyxhKXt2YXIgcz1yKG8sYSk7aWYoYyYmdS5wdXNoKFtvLGFdKSxfKWg9byxkPWEscD1zLF89ITEscyYmKHYubGluZVN0YXJ0KCksdi5wb2ludChvLGEpKTtlbHNlIGlmKHMmJmcpdi5wb2ludChvLGEpO2Vsc2V7dmFyIGw9W2Y9TWF0aC5tYXgoQlgsTWF0aC5taW4oRFgsZikpLG09TWF0aC5tYXgoQlgsTWF0aC5taW4oRFgsbSkpXSxiPVtvPU1hdGgubWF4KEJYLE1hdGgubWluKERYLG8pKSxhPU1hdGgubWF4KEJYLE1hdGgubWluKERYLGEpKV07IShmdW5jdGlvbiB4KHQsZSxuLGkscixvKXt2YXIgYSxzPXRbMF0sbD10WzFdLGM9MCx1PTEsaD1lWzBdLXMsZD1lWzFdLWw7aWYoYT1uLXMsaHx8IShhPjApKXtpZihhLz1oLGg8MCl7aWYoYTxjKXJldHVybjthPHUmJih1PWEpfWVsc2UgaWYoaD4wKXtpZihhPnUpcmV0dXJuO2E+YyYmKGM9YSl9aWYoYT1yLXMsaHx8IShhPDApKXtpZihhLz1oLGg8MCl7aWYoYT51KXJldHVybjthPmMmJihjPWEpfWVsc2UgaWYoaD4wKXtpZihhPGMpcmV0dXJuO2E8dSYmKHU9YSl9aWYoYT1pLWwsZHx8IShhPjApKXtpZihhLz1kLGQ8MCl7aWYoYTxjKXJldHVybjthPHUmJih1PWEpfWVsc2UgaWYoZD4wKXtpZihhPnUpcmV0dXJuO2E+YyYmKGM9YSl9aWYoYT1vLWwsZHx8IShhPDApKXtpZihhLz1kLGQ8MCl7aWYoYT51KXJldHVybjthPmMmJihjPWEpfWVsc2UgaWYoZD4wKXtpZihhPGMpcmV0dXJuO2E8dSYmKHU9YSl9cmV0dXJuIGM+MCYmKHRbMF09cytjKmgsdFsxXT1sK2MqZCksdTwxJiYoZVswXT1zK3UqaCxlWzFdPWwrdSpkKSwhMH19fX19KShsLGIsdCxlLG4saSk/cyYmKHYubGluZVN0YXJ0KCksdi5wb2ludChvLGEpLHk9ITEpOihnfHwodi5saW5lU3RhcnQoKSx2LnBvaW50KGxbMF0sbFsxXSkpLHYucG9pbnQoYlswXSxiWzFdKSxzfHx2LmxpbmVFbmQoKSx5PSExKX1mPW8sbT1hLGc9c31yZXR1cm4geH19dmFyIEZYLFZYLGpYLFVYPWdxKCksR1g9e3NwaGVyZTpqcSxwb2ludDpqcSxsaW5lU3RhcnQ6ZnVuY3Rpb24gV1goKXtHWC5wb2ludD1ZWCxHWC5saW5lRW5kPXFYfSxsaW5lRW5kOmpxLHBvbHlnb25TdGFydDpqcSxwb2x5Z29uRW5kOmpxfTtmdW5jdGlvbiBxWCgpe0dYLnBvaW50PUdYLmxpbmVFbmQ9anF9ZnVuY3Rpb24gWVgodCxlKXtGWD10Kj1UcSxWWD1ScShlKj1UcSksalg9THEoZSksR1gucG9pbnQ9WFh9ZnVuY3Rpb24gWFgodCxlKXt0Kj1UcTt2YXIgbj1ScShlKj1UcSksaT1McShlKSxyPUFxKHQtRlgpLG89THEociksYT1pKlJxKHIpLHM9algqbi1WWCppKm8sbD1WWCpuK2pYKmkqbztVWC5hZGQoa3EoRHEoYSphK3MqcyksbCkpLEZYPXQsVlg9bixqWD1pfWZ1bmN0aW9uICRYKHQpe3JldHVybiBVWC5yZXNldCgpLFhxKHQsR1gpLCtVWH12YXIgS1g9W251bGwsbnVsbF0sWlg9e3R5cGU6IkxpbmVTdHJpbmciLGNvb3JkaW5hdGVzOktYfTtmdW5jdGlvbiBKWCh0LGUpe3JldHVybiBLWFswXT10LEtYWzFdPWUsJFgoWlgpfXZhciBRWD17RmVhdHVyZTpmdW5jdGlvbih0LGUpe3JldHVybiBlJCh0Lmdlb21ldHJ5LGUpfSxGZWF0dXJlQ29sbGVjdGlvbjpmdW5jdGlvbih0LGUpe2Zvcih2YXIgbj10LmZlYXR1cmVzLGk9LTEscj1uLmxlbmd0aDsrK2k8cjspaWYoZSQobltpXS5nZW9tZXRyeSxlKSlyZXR1cm4hMDtyZXR1cm4hMX19LHQkPXtTcGhlcmU6ZnVuY3Rpb24oKXtyZXR1cm4hMH0sUG9pbnQ6ZnVuY3Rpb24odCxlKXtyZXR1cm4gbiQodC5jb29yZGluYXRlcyxlKX0sTXVsdGlQb2ludDpmdW5jdGlvbih0LGUpe2Zvcih2YXIgbj10LmNvb3JkaW5hdGVzLGk9LTEscj1uLmxlbmd0aDsrK2k8cjspaWYobiQobltpXSxlKSlyZXR1cm4hMDtyZXR1cm4hMX0sTGluZVN0cmluZzpmdW5jdGlvbih0LGUpe3JldHVybiBpJCh0LmNvb3JkaW5hdGVzLGUpfSxNdWx0aUxpbmVTdHJpbmc6ZnVuY3Rpb24odCxlKXtmb3IodmFyIG49dC5jb29yZGluYXRlcyxpPS0xLHI9bi5sZW5ndGg7KytpPHI7KWlmKGkkKG5baV0sZSkpcmV0dXJuITA7cmV0dXJuITF9LFBvbHlnb246ZnVuY3Rpb24odCxlKXtyZXR1cm4gciQodC5jb29yZGluYXRlcyxlKX0sTXVsdGlQb2x5Z29uOmZ1bmN0aW9uKHQsZSl7Zm9yKHZhciBuPXQuY29vcmRpbmF0ZXMsaT0tMSxyPW4ubGVuZ3RoOysraTxyOylpZihyJChuW2ldLGUpKXJldHVybiEwO3JldHVybiExfSxHZW9tZXRyeUNvbGxlY3Rpb246ZnVuY3Rpb24odCxlKXtmb3IodmFyIG49dC5nZW9tZXRyaWVzLGk9LTEscj1uLmxlbmd0aDsrK2k8cjspaWYoZSQobltpXSxlKSlyZXR1cm4hMDtyZXR1cm4hMX19O2Z1bmN0aW9uIGUkKHQsZSl7cmV0dXJuISghdHx8IXQkLmhhc093blByb3BlcnR5KHQudHlwZSkpJiZ0JFt0LnR5cGVdKHQsZSl9ZnVuY3Rpb24gbiQodCxlKXtyZXR1cm4gMD09PUpYKHQsZSl9ZnVuY3Rpb24gaSQodCxlKXt2YXIgbj1KWCh0WzBdLHRbMV0pO3JldHVybiBKWCh0WzBdLGUpK0pYKGUsdFsxXSk8PW4rYnF9ZnVuY3Rpb24gciQodCxlKXtyZXR1cm4hIUVYKHQubWFwKG8kKSxhJChlKSl9ZnVuY3Rpb24gbyQodCl7cmV0dXJuKHQ9dC5tYXAoYSQpKS5wb3AoKSx0fWZ1bmN0aW9uIGEkKHQpe3JldHVyblt0WzBdKlRxLHRbMV0qVHFdfWZ1bmN0aW9uIHMkKHQsZSxuKXt2YXIgaT1BWCh0LGUtYnEsbikuY29uY2F0KGUpO3JldHVybiBmdW5jdGlvbih0KXtyZXR1cm4gaS5tYXAoKGZ1bmN0aW9uKGUpe3JldHVyblt0LGVdfSkpfX1mdW5jdGlvbiBsJCh0LGUsbil7dmFyIGk9QVgodCxlLWJxLG4pLmNvbmNhdChlKTtyZXR1cm4gZnVuY3Rpb24odCl7cmV0dXJuIGkubWFwKChmdW5jdGlvbihlKXtyZXR1cm5bZSx0XX0pKX19ZnVuY3Rpb24gYyQoKXt2YXIgdCxlLG4saSxyLG8sYSxzLGwsYyx1LGgsZD0xMCxwPWQsZj05MCxtPTM2MCxnPTIuNTtmdW5jdGlvbiBfKCl7cmV0dXJue3R5cGU6Ik11bHRpTGluZVN0cmluZyIsY29vcmRpbmF0ZXM6eSgpfX1mdW5jdGlvbiB5KCl7cmV0dXJuIEFYKFBxKGkvZikqZixuLGYpLm1hcCh1KS5jb25jYXQoQVgoUHEocy9tKSptLGEsbSkubWFwKGgpKS5jb25jYXQoQVgoUHEoZS9kKSpkLHQsZCkuZmlsdGVyKChmdW5jdGlvbih0KXtyZXR1cm4gQXEodCVmKT5icX0pKS5tYXAobCkpLmNvbmNhdChBWChQcShvL3ApKnAscixwKS5maWx0ZXIoKGZ1bmN0aW9uKHQpe3JldHVybiBBcSh0JW0pPmJxfSkpLm1hcChjKSl9cmV0dXJuIF8ubGluZXM9ZnVuY3Rpb24oKXtyZXR1cm4geSgpLm1hcCgoZnVuY3Rpb24odCl7cmV0dXJue3R5cGU6IkxpbmVTdHJpbmciLGNvb3JkaW5hdGVzOnR9fSkpfSxfLm91dGxpbmU9ZnVuY3Rpb24oKXtyZXR1cm57dHlwZToiUG9seWdvbiIsY29vcmRpbmF0ZXM6W3UoaSkuY29uY2F0KGgoYSkuc2xpY2UoMSksdShuKS5yZXZlcnNlKCkuc2xpY2UoMSksaChzKS5yZXZlcnNlKCkuc2xpY2UoMSkpXX19LF8uZXh0ZW50PWZ1bmN0aW9uKHQpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoP18uZXh0ZW50TWFqb3IodCkuZXh0ZW50TWlub3IodCk6Xy5leHRlbnRNaW5vcigpfSxfLmV4dGVudE1ham9yPWZ1bmN0aW9uKHQpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyhzPSt0WzBdWzFdLGE9K3RbMV1bMV0sKGk9K3RbMF1bMF0pPihuPSt0WzFdWzBdKSYmKHQ9aSxpPW4sbj10KSxzPmEmJih0PXMscz1hLGE9dCksXy5wcmVjaXNpb24oZykpOltbaSxzXSxbbixhXV19LF8uZXh0ZW50TWlub3I9ZnVuY3Rpb24obil7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KG89K25bMF1bMV0scj0rblsxXVsxXSwoZT0rblswXVswXSk+KHQ9K25bMV1bMF0pJiYobj1lLGU9dCx0PW4pLG8+ciYmKG49byxvPXIscj1uKSxfLnByZWNpc2lvbihnKSk6W1tlLG9dLFt0LHJdXX0sXy5zdGVwPWZ1bmN0aW9uKHQpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoP18uc3RlcE1ham9yKHQpLnN0ZXBNaW5vcih0KTpfLnN0ZXBNaW5vcigpfSxfLnN0ZXBNYWpvcj1mdW5jdGlvbih0KXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8oZj0rdFswXSxtPSt0WzFdLF8pOltmLG1dfSxfLnN0ZXBNaW5vcj1mdW5jdGlvbih0KXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8oZD0rdFswXSxwPSt0WzFdLF8pOltkLHBdfSxfLnByZWNpc2lvbj1mdW5jdGlvbihkKXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8oZz0rZCxsPXMkKG8sciw5MCksYz1sJChlLHQsZyksdT1zJChzLGEsOTApLGg9bCQoaSxuLGcpLF8pOmd9LF8uZXh0ZW50TWFqb3IoW1stMTgwLC04OS45OTk5OTldLFsxODAsODkuOTk5OTk5XV0pLmV4dGVudE1pbm9yKFtbLTE4MCwtODAuMDAwMDAxXSxbMTgwLDgwLjAwMDAwMV1dKX1mdW5jdGlvbiB1JCh0KXtyZXR1cm4gdH12YXIgaCQsZCQscCQsZiQsbSQ9Z3EoKSxnJD1ncSgpLF8kPXtwb2ludDpqcSxsaW5lU3RhcnQ6anEsbGluZUVuZDpqcSxwb2x5Z29uU3RhcnQ6ZnVuY3Rpb24oKXtfJC5saW5lU3RhcnQ9eSQsXyQubGluZUVuZD14JH0scG9seWdvbkVuZDpmdW5jdGlvbigpe18kLmxpbmVTdGFydD1fJC5saW5lRW5kPV8kLnBvaW50PWpxLG0kLmFkZChBcShnJCkpLGckLnJlc2V0KCl9LHJlc3VsdDpmdW5jdGlvbigpe3ZhciB0PW0kLzI7cmV0dXJuIG0kLnJlc2V0KCksdH19O2Z1bmN0aW9uIHkkKCl7XyQucG9pbnQ9diR9ZnVuY3Rpb24gdiQodCxlKXtfJC5wb2ludD1iJCxoJD1wJD10LGQkPWYkPWV9ZnVuY3Rpb24gYiQodCxlKXtnJC5hZGQoZiQqdC1wJCplKSxwJD10LGYkPWV9ZnVuY3Rpb24geCQoKXtiJChoJCxkJCl9dmFyIHckLFMkLE0kLEUkLFQkPTEvMCxBJD1UJCxDJD0tVCQsayQ9QyQsTCQ9e3BvaW50OmZ1bmN0aW9uIFAkKHQsZSl7dDxUJCYmKFQkPXQpLHQ+QyQmJihDJD10KSxlPEEkJiYoQSQ9ZSksZT5rJCYmKGskPWUpfSxsaW5lU3RhcnQ6anEsbGluZUVuZDpqcSxwb2x5Z29uU3RhcnQ6anEscG9seWdvbkVuZDpqcSxyZXN1bHQ6ZnVuY3Rpb24oKXt2YXIgdD1bW1QkLEEkXSxbQyQsayRdXTtyZXR1cm4gQyQ9ayQ9LShBJD1UJD0xLzApLHR9fSxJJD0wLE4kPTAsTyQ9MCxSJD0wLHokPTAsRCQ9MCxCJD0wLEgkPTAsRiQ9MCxWJD17cG9pbnQ6aiQsbGluZVN0YXJ0OlUkLGxpbmVFbmQ6cSQscG9seWdvblN0YXJ0OmZ1bmN0aW9uKCl7ViQubGluZVN0YXJ0PVkkLFYkLmxpbmVFbmQ9WCR9LHBvbHlnb25FbmQ6ZnVuY3Rpb24oKXtWJC5wb2ludD1qJCxWJC5saW5lU3RhcnQ9VSQsViQubGluZUVuZD1xJH0scmVzdWx0OmZ1bmN0aW9uKCl7dmFyIHQ9RiQ/W0IkL0YkLEgkL0YkXTpEJD9bUiQvRCQseiQvRCRdOk8kP1tJJC9PJCxOJC9PJF06W05hTixOYU5dO3JldHVybiBJJD1OJD1PJD1SJD16JD1EJD1CJD1IJD1GJD0wLHR9fTtmdW5jdGlvbiBqJCh0LGUpe0kkKz10LE4kKz1lLCsrTyR9ZnVuY3Rpb24gVSQoKXtWJC5wb2ludD1HJH1mdW5jdGlvbiBHJCh0LGUpe1YkLnBvaW50PVckLGokKE0kPXQsRSQ9ZSl9ZnVuY3Rpb24gVyQodCxlKXt2YXIgbj10LU0kLGk9ZS1FJCxyPURxKG4qbitpKmkpO1IkKz1yKihNJCt0KS8yLHokKz1yKihFJCtlKS8yLEQkKz1yLGokKE0kPXQsRSQ9ZSl9ZnVuY3Rpb24gcSQoKXtWJC5wb2ludD1qJH1mdW5jdGlvbiBZJCgpe1YkLnBvaW50PSQkfWZ1bmN0aW9uIFgkKCl7SyQodyQsUyQpfWZ1bmN0aW9uICQkKHQsZSl7ViQucG9pbnQ9SyQsaiQodyQ9TSQ9dCxTJD1FJD1lKX1mdW5jdGlvbiBLJCh0LGUpe3ZhciBuPXQtTSQsaT1lLUUkLHI9RHEobipuK2kqaSk7UiQrPXIqKE0kK3QpLzIseiQrPXIqKEUkK2UpLzIsRCQrPXIsQiQrPShyPUUkKnQtTSQqZSkqKE0kK3QpLEgkKz1yKihFJCtlKSxGJCs9MypyLGokKE0kPXQsRSQ9ZSl9ZnVuY3Rpb24gWiQodCl7dGhpcy5fY29udGV4dD10fVokLnByb3RvdHlwZT17X3JhZGl1czo0LjUscG9pbnRSYWRpdXM6ZnVuY3Rpb24odCl7cmV0dXJuIHRoaXMuX3JhZGl1cz10LHRoaXN9LHBvbHlnb25TdGFydDpmdW5jdGlvbigpe3RoaXMuX2xpbmU9MH0scG9seWdvbkVuZDpmdW5jdGlvbigpe3RoaXMuX2xpbmU9TmFOfSxsaW5lU3RhcnQ6ZnVuY3Rpb24oKXt0aGlzLl9wb2ludD0wfSxsaW5lRW5kOmZ1bmN0aW9uKCl7MD09PXRoaXMuX2xpbmUmJnRoaXMuX2NvbnRleHQuY2xvc2VQYXRoKCksdGhpcy5fcG9pbnQ9TmFOfSxwb2ludDpmdW5jdGlvbih0LGUpe3N3aXRjaCh0aGlzLl9wb2ludCl7Y2FzZSAwOnRoaXMuX2NvbnRleHQubW92ZVRvKHQsZSksdGhpcy5fcG9pbnQ9MTticmVhaztjYXNlIDE6dGhpcy5fY29udGV4dC5saW5lVG8odCxlKTticmVhaztkZWZhdWx0OnRoaXMuX2NvbnRleHQubW92ZVRvKHQrdGhpcy5fcmFkaXVzLGUpLHRoaXMuX2NvbnRleHQuYXJjKHQsZSx0aGlzLl9yYWRpdXMsMCxNcSl9fSxyZXN1bHQ6anF9O3ZhciBKJCxRJCx0SyxlSyxuSyxpSz1ncSgpLHJLPXtwb2ludDpqcSxsaW5lU3RhcnQ6ZnVuY3Rpb24oKXtySy5wb2ludD1vS30sbGluZUVuZDpmdW5jdGlvbigpe0okJiZhSyhRJCx0SykscksucG9pbnQ9anF9LHBvbHlnb25TdGFydDpmdW5jdGlvbigpe0okPSEwfSxwb2x5Z29uRW5kOmZ1bmN0aW9uKCl7SiQ9bnVsbH0scmVzdWx0OmZ1bmN0aW9uKCl7dmFyIHQ9K2lLO3JldHVybiBpSy5yZXNldCgpLHR9fTtmdW5jdGlvbiBvSyh0LGUpe3JLLnBvaW50PWFLLFEkPWVLPXQsdEs9bks9ZX1mdW5jdGlvbiBhSyh0LGUpe2lLLmFkZChEcSgoZUstPXQpKmVLKyhuSy09ZSkqbkspKSxlSz10LG5LPWV9ZnVuY3Rpb24gc0soKXt0aGlzLl9zdHJpbmc9W119ZnVuY3Rpb24gbEsodCl7cmV0dXJuIm0wLCIrdCsiYSIrdCsiLCIrdCsiIDAgMSwxIDAsIistMip0KyJhIit0KyIsIit0KyIgMCAxLDEgMCwiKzIqdCsieiJ9ZnVuY3Rpb24gY0sodCl7cmV0dXJuIGZ1bmN0aW9uKGUpe3ZhciBuPW5ldyB1Sztmb3IodmFyIGkgaW4gdCluW2ldPXRbaV07cmV0dXJuIG4uc3RyZWFtPWUsbn19ZnVuY3Rpb24gdUsoKXt9ZnVuY3Rpb24gaEsodCxlLG4pe3ZhciBpPXQuY2xpcEV4dGVudCYmdC5jbGlwRXh0ZW50KCk7cmV0dXJuIHQuc2NhbGUoMTUwKS50cmFuc2xhdGUoWzAsMF0pLG51bGwhPWkmJnQuY2xpcEV4dGVudChudWxsKSxYcShuLHQuc3RyZWFtKEwkKSksZShMJC5yZXN1bHQoKSksbnVsbCE9aSYmdC5jbGlwRXh0ZW50KGkpLHR9ZnVuY3Rpb24gZEsodCxlLG4pe3JldHVybiBoSyh0LChmdW5jdGlvbihuKXt2YXIgaT1lWzFdWzBdLWVbMF1bMF0scj1lWzFdWzFdLWVbMF1bMV0sbz1NYXRoLm1pbihpLyhuWzFdWzBdLW5bMF1bMF0pLHIvKG5bMV1bMV0tblswXVsxXSkpLGE9K2VbMF1bMF0rKGktbyooblsxXVswXStuWzBdWzBdKSkvMixzPStlWzBdWzFdKyhyLW8qKG5bMV1bMV0rblswXVsxXSkpLzI7dC5zY2FsZSgxNTAqbykudHJhbnNsYXRlKFthLHNdKX0pLG4pfWZ1bmN0aW9uIHBLKHQsZSxuKXtyZXR1cm4gZEsodCxbWzAsMF0sZV0sbil9ZnVuY3Rpb24gZksodCxlLG4pe3JldHVybiBoSyh0LChmdW5jdGlvbihuKXt2YXIgaT0rZSxyPWkvKG5bMV1bMF0tblswXVswXSksbz0oaS1yKihuWzFdWzBdK25bMF1bMF0pKS8yLGE9LXIqblswXVsxXTt0LnNjYWxlKDE1MCpyKS50cmFuc2xhdGUoW28sYV0pfSksbil9ZnVuY3Rpb24gbUsodCxlLG4pe3JldHVybiBoSyh0LChmdW5jdGlvbihuKXt2YXIgaT0rZSxyPWkvKG5bMV1bMV0tblswXVsxXSksbz0tcipuWzBdWzBdLGE9KGktciooblsxXVsxXStuWzBdWzFdKSkvMjt0LnNjYWxlKDE1MCpyKS50cmFuc2xhdGUoW28sYV0pfSksbil9c0sucHJvdG90eXBlPXtfcmFkaXVzOjQuNSxfY2lyY2xlOmxLKDQuNSkscG9pbnRSYWRpdXM6ZnVuY3Rpb24odCl7cmV0dXJuKHQ9K3QpIT09dGhpcy5fcmFkaXVzJiYodGhpcy5fcmFkaXVzPXQsdGhpcy5fY2lyY2xlPW51bGwpLHRoaXN9LHBvbHlnb25TdGFydDpmdW5jdGlvbigpe3RoaXMuX2xpbmU9MH0scG9seWdvbkVuZDpmdW5jdGlvbigpe3RoaXMuX2xpbmU9TmFOfSxsaW5lU3RhcnQ6ZnVuY3Rpb24oKXt0aGlzLl9wb2ludD0wfSxsaW5lRW5kOmZ1bmN0aW9uKCl7MD09PXRoaXMuX2xpbmUmJnRoaXMuX3N0cmluZy5wdXNoKCJaIiksdGhpcy5fcG9pbnQ9TmFOfSxwb2ludDpmdW5jdGlvbih0LGUpe3N3aXRjaCh0aGlzLl9wb2ludCl7Y2FzZSAwOnRoaXMuX3N0cmluZy5wdXNoKCJNIix0LCIsIixlKSx0aGlzLl9wb2ludD0xO2JyZWFrO2Nhc2UgMTp0aGlzLl9zdHJpbmcucHVzaCgiTCIsdCwiLCIsZSk7YnJlYWs7ZGVmYXVsdDpudWxsPT10aGlzLl9jaXJjbGUmJih0aGlzLl9jaXJjbGU9bEsodGhpcy5fcmFkaXVzKSksdGhpcy5fc3RyaW5nLnB1c2goIk0iLHQsIiwiLGUsdGhpcy5fY2lyY2xlKX19LHJlc3VsdDpmdW5jdGlvbigpe2lmKHRoaXMuX3N0cmluZy5sZW5ndGgpe3ZhciB0PXRoaXMuX3N0cmluZy5qb2luKCIiKTtyZXR1cm4gdGhpcy5fc3RyaW5nPVtdLHR9cmV0dXJuIG51bGx9fSx1Sy5wcm90b3R5cGU9e2NvbnN0cnVjdG9yOnVLLHBvaW50OmZ1bmN0aW9uKHQsZSl7dGhpcy5zdHJlYW0ucG9pbnQodCxlKX0sc3BoZXJlOmZ1bmN0aW9uKCl7dGhpcy5zdHJlYW0uc3BoZXJlKCl9LGxpbmVTdGFydDpmdW5jdGlvbigpe3RoaXMuc3RyZWFtLmxpbmVTdGFydCgpfSxsaW5lRW5kOmZ1bmN0aW9uKCl7dGhpcy5zdHJlYW0ubGluZUVuZCgpfSxwb2x5Z29uU3RhcnQ6ZnVuY3Rpb24oKXt0aGlzLnN0cmVhbS5wb2x5Z29uU3RhcnQoKX0scG9seWdvbkVuZDpmdW5jdGlvbigpe3RoaXMuc3RyZWFtLnBvbHlnb25FbmQoKX19O3ZhciBnSz1McSgzMCpUcSk7ZnVuY3Rpb24gX0sodCxlKXtyZXR1cm4rZT8oZnVuY3Rpb24gbih0LGUpe2Z1bmN0aW9uIG4oaSxyLG8sYSxzLGwsYyx1LGgsZCxwLGYsbSxnKXt2YXIgXz1jLWkseT11LXIsdj1fKl8reSp5O2lmKHY+NCplJiZtLS0pe3ZhciBiPWErZCx4PXMrcCx3PWwrZixTPURxKGIqYit4Kngrdyp3KSxNPUZxKHcvPVMpLEU9QXEoQXEodyktMSk8YnF8fEFxKG8taCk8YnE/KG8raCkvMjprcSh4LGIpLFQ9dChFLE0pLEE9VFswXSxDPVRbMV0saz1BLWksTD1DLXIsUD15KmstXypMOyhQKlAvdj5lfHxBcSgoXyprK3kqTCkvdi0uNSk+LjN8fGEqZCtzKnArbCpmPGdLKSYmKG4oaSxyLG8sYSxzLGwsQSxDLEUsYi89Uyx4Lz1TLHcsbSxnKSxnLnBvaW50KEEsQyksbihBLEMsRSxiLHgsdyxjLHUsaCxkLHAsZixtLGcpKX19cmV0dXJuIGZ1bmN0aW9uKGUpe3ZhciBpLHIsbyxhLHMsbCxjLHUsaCxkLHAsZixtPXtwb2ludDpnLGxpbmVTdGFydDpfLGxpbmVFbmQ6dixwb2x5Z29uU3RhcnQ6ZnVuY3Rpb24oKXtlLnBvbHlnb25TdGFydCgpLG0ubGluZVN0YXJ0PWJ9LHBvbHlnb25FbmQ6ZnVuY3Rpb24oKXtlLnBvbHlnb25FbmQoKSxtLmxpbmVTdGFydD1ffX07ZnVuY3Rpb24gZyhuLGkpe249dChuLGkpLGUucG9pbnQoblswXSxuWzFdKX1mdW5jdGlvbiBfKCl7dT1OYU4sbS5wb2ludD15LGUubGluZVN0YXJ0KCl9ZnVuY3Rpb24geShpLHIpe3ZhciBvPWxZKFtpLHJdKSxhPXQoaSxyKTtuKHUsaCxjLGQscCxmLHU9YVswXSxoPWFbMV0sYz1pLGQ9b1swXSxwPW9bMV0sZj1vWzJdLDE2LGUpLGUucG9pbnQodSxoKX1mdW5jdGlvbiB2KCl7bS5wb2ludD1nLGUubGluZUVuZCgpfWZ1bmN0aW9uIGIoKXtfKCksbS5wb2ludD14LG0ubGluZUVuZD13fWZ1bmN0aW9uIHgodCxlKXt5KGk9dCxlKSxyPXUsbz1oLGE9ZCxzPXAsbD1mLG0ucG9pbnQ9eX1mdW5jdGlvbiB3KCl7bih1LGgsYyxkLHAsZixyLG8saSxhLHMsbCwxNixlKSxtLmxpbmVFbmQ9dix2KCl9cmV0dXJuIG19fSkodCxlKTooZnVuY3Rpb24gaSh0KXtyZXR1cm4gY0soe3BvaW50OmZ1bmN0aW9uKGUsbil7ZT10KGUsbiksdGhpcy5zdHJlYW0ucG9pbnQoZVswXSxlWzFdKX19KX0pKHQpfXZhciB5Sz1jSyh7cG9pbnQ6ZnVuY3Rpb24odCxlKXt0aGlzLnN0cmVhbS5wb2ludCh0KlRxLGUqVHEpfX0pO2Z1bmN0aW9uIHZLKHQpe3JldHVybiBiSygoZnVuY3Rpb24oKXtyZXR1cm4gdH0pKSgpfWZ1bmN0aW9uIGJLKHQpe3ZhciBlLG4saSxyLG8sYSxzLGwsYyx1LGg9MTUwLGQ9NDgwLHA9MjUwLGY9MCxtPTAsZz0wLF89MCx5PTAsdj1udWxsLGI9TlgseD1udWxsLHc9dSQsUz0uNSxNPV9LKEEsUyk7ZnVuY3Rpb24gRSh0KXtyZXR1cm5bKHQ9byh0WzBdKlRxLHRbMV0qVHEpKVswXSpoK24saS10WzFdKmhdfWZ1bmN0aW9uIFQodCl7cmV0dXJuKHQ9by5pbnZlcnQoKHRbMF0tbikvaCwoaS10WzFdKS9oKSkmJlt0WzBdKkVxLHRbMV0qRXFdfWZ1bmN0aW9uIEEodCxyKXtyZXR1cm5bKHQ9ZSh0LHIpKVswXSpoK24saS10WzFdKmhdfWZ1bmN0aW9uIEMoKXtvPXVYKHI9ZFgoZyxfLHkpLGUpO3ZhciB0PWUoZixtKTtyZXR1cm4gbj1kLXRbMF0qaCxpPXArdFsxXSpoLGsoKX1mdW5jdGlvbiBrKCl7cmV0dXJuIGM9dT1udWxsLEV9cmV0dXJuIEUuc3RyZWFtPWZ1bmN0aW9uKHQpe3JldHVybiBjJiZ1PT09dD9jOmM9eUsoKGZ1bmN0aW9uIGUodCl7cmV0dXJuIGNLKHtwb2ludDpmdW5jdGlvbihlLG4pe3ZhciBpPXQoZSxuKTtyZXR1cm4gdGhpcy5zdHJlYW0ucG9pbnQoaVswXSxpWzFdKX19KX0pKHIpKGIoTSh3KHU9dCkpKSkpfSxFLnByZWNsaXA9ZnVuY3Rpb24odCl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KGI9dCx2PXZvaWQgMCxrKCkpOmJ9LEUucG9zdGNsaXA9ZnVuY3Rpb24odCl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KHc9dCx4PWE9cz1sPW51bGwsaygpKTp3fSxFLmNsaXBBbmdsZT1mdW5jdGlvbih0KXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8oYj0rdD96WCh2PXQqVHEpOih2PW51bGwsTlgpLGsoKSk6dipFcX0sRS5jbGlwRXh0ZW50PWZ1bmN0aW9uKHQpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyh3PW51bGw9PXQ/KHg9YT1zPWw9bnVsbCx1JCk6SFgoeD0rdFswXVswXSxhPSt0WzBdWzFdLHM9K3RbMV1bMF0sbD0rdFsxXVsxXSksaygpKTpudWxsPT14P251bGw6W1t4LGFdLFtzLGxdXX0sRS5zY2FsZT1mdW5jdGlvbih0KXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8oaD0rdCxDKCkpOmh9LEUudHJhbnNsYXRlPWZ1bmN0aW9uKHQpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyhkPSt0WzBdLHA9K3RbMV0sQygpKTpbZCxwXX0sRS5jZW50ZXI9ZnVuY3Rpb24odCl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KGY9dFswXSUzNjAqVHEsbT10WzFdJTM2MCpUcSxDKCkpOltmKkVxLG0qRXFdfSxFLnJvdGF0ZT1mdW5jdGlvbih0KXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8oZz10WzBdJTM2MCpUcSxfPXRbMV0lMzYwKlRxLHk9dC5sZW5ndGg+Mj90WzJdJTM2MCpUcTowLEMoKSk6W2cqRXEsXypFcSx5KkVxXX0sRS5wcmVjaXNpb249ZnVuY3Rpb24odCl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KE09X0soQSxTPXQqdCksaygpKTpEcShTKX0sRS5maXRFeHRlbnQ9ZnVuY3Rpb24odCxlKXtyZXR1cm4gZEsoRSx0LGUpfSxFLmZpdFNpemU9ZnVuY3Rpb24odCxlKXtyZXR1cm4gcEsoRSx0LGUpfSxFLmZpdFdpZHRoPWZ1bmN0aW9uKHQsZSl7cmV0dXJuIGZLKEUsdCxlKX0sRS5maXRIZWlnaHQ9ZnVuY3Rpb24odCxlKXtyZXR1cm4gbUsoRSx0LGUpfSxmdW5jdGlvbigpe3JldHVybiBlPXQuYXBwbHkodGhpcyxhcmd1bWVudHMpLEUuaW52ZXJ0PWUuaW52ZXJ0JiZULEMoKX19ZnVuY3Rpb24geEsodCl7dmFyIGU9MCxuPXhxLzMsaT1iSyh0KSxyPWkoZSxuKTtyZXR1cm4gci5wYXJhbGxlbHM9ZnVuY3Rpb24odCl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/aShlPXRbMF0qVHEsbj10WzFdKlRxKTpbZSpFcSxuKkVxXX0scn1mdW5jdGlvbiB3Syh0LGUpe3ZhciBuPVJxKHQpLGk9KG4rUnEoZSkpLzI7aWYoQXEoaSk8YnEpcmV0dXJuKGZ1bmN0aW9uIHIodCl7dmFyIGU9THEodCk7ZnVuY3Rpb24gbih0LG4pe3JldHVyblt0KmUsUnEobikvZV19cmV0dXJuIG4uaW52ZXJ0PWZ1bmN0aW9uKHQsbil7cmV0dXJuW3QvZSxGcShuKmUpXX0sbn0pKHQpO3ZhciBvPTErbiooMippLW4pLGE9RHEobykvaTtmdW5jdGlvbiBzKHQsZSl7dmFyIG49RHEoby0yKmkqUnEoZSkpL2k7cmV0dXJuW24qUnEodCo9aSksYS1uKkxxKHQpXX1yZXR1cm4gcy5pbnZlcnQ9ZnVuY3Rpb24odCxlKXt2YXIgbj1hLWU7cmV0dXJuW2txKHQsQXEobikpL2kqenEobiksRnEoKG8tKHQqdCtuKm4pKmkqaSkvKDIqaSkpXX0sc31mdW5jdGlvbiBTSygpe3JldHVybiB4Syh3Sykuc2NhbGUoMTU1LjQyNCkuY2VudGVyKFswLDMzLjY0NDJdKX1mdW5jdGlvbiBNSygpe3JldHVybiBTSygpLnBhcmFsbGVscyhbMjkuNSw0NS41XSkuc2NhbGUoMTA3MCkudHJhbnNsYXRlKFs0ODAsMjUwXSkucm90YXRlKFs5NiwwXSkuY2VudGVyKFstLjYsMzguN10pfWZ1bmN0aW9uIEVLKHQpe3JldHVybiBmdW5jdGlvbihlLG4pe3ZhciBpPUxxKGUpLHI9THEobiksbz10KGkqcik7cmV0dXJuW28qcipScShlKSxvKlJxKG4pXX19ZnVuY3Rpb24gVEsodCl7cmV0dXJuIGZ1bmN0aW9uKGUsbil7dmFyIGk9RHEoZSplK24qbikscj10KGkpLG89UnEociksYT1McShyKTtyZXR1cm5ba3EoZSpvLGkqYSksRnEoaSYmbipvL2kpXX19dmFyIEFLPUVLKChmdW5jdGlvbih0KXtyZXR1cm4gRHEoMi8oMSt0KSl9KSk7QUsuaW52ZXJ0PVRLKChmdW5jdGlvbih0KXtyZXR1cm4gMipGcSh0LzIpfSkpO3ZhciBDSz1FSygoZnVuY3Rpb24odCl7cmV0dXJuKHQ9SHEodCkpJiZ0L1JxKHQpfSkpO2Z1bmN0aW9uIGtLKHQsZSl7cmV0dXJuW3QsTnEoQnEoKHdxK2UpLzIpKV19ZnVuY3Rpb24gTEsodCl7dmFyIGUsbixpLHI9dksodCksbz1yLmNlbnRlcixhPXIuc2NhbGUscz1yLnRyYW5zbGF0ZSxsPXIuY2xpcEV4dGVudCxjPW51bGw7ZnVuY3Rpb24gdSgpe3ZhciBvPXhxKmEoKSxzPXIoZ1goci5yb3RhdGUoKSkuaW52ZXJ0KFswLDBdKSk7cmV0dXJuIGwobnVsbD09Yz9bW3NbMF0tbyxzWzFdLW9dLFtzWzBdK28sc1sxXStvXV06dD09PWtLP1tbTWF0aC5tYXgoc1swXS1vLGMpLGVdLFtNYXRoLm1pbihzWzBdK28sbiksaV1dOltbYyxNYXRoLm1heChzWzFdLW8sZSldLFtuLE1hdGgubWluKHNbMV0rbyxpKV1dKX1yZXR1cm4gci5zY2FsZT1mdW5jdGlvbih0KXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8oYSh0KSx1KCkpOmEoKX0sci50cmFuc2xhdGU9ZnVuY3Rpb24odCl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KHModCksdSgpKTpzKCl9LHIuY2VudGVyPWZ1bmN0aW9uKHQpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyhvKHQpLHUoKSk6bygpfSxyLmNsaXBFeHRlbnQ9ZnVuY3Rpb24odCl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KG51bGw9PXQ/Yz1lPW49aT1udWxsOihjPSt0WzBdWzBdLGU9K3RbMF1bMV0sbj0rdFsxXVswXSxpPSt0WzFdWzFdKSx1KCkpOm51bGw9PWM/bnVsbDpbW2MsZV0sW24saV1dfSx1KCl9ZnVuY3Rpb24gUEsodCl7cmV0dXJuIEJxKCh3cSt0KS8yKX1mdW5jdGlvbiBJSyh0LGUpe3ZhciBuPUxxKHQpLGk9dD09PWU/UnEodCk6TnEobi9McShlKSkvTnEoUEsoZSkvUEsodCkpLHI9bipPcShQSyh0KSxpKS9pO2lmKCFpKXJldHVybiBrSztmdW5jdGlvbiBvKHQsZSl7cj4wP2U8LXdxK2JxJiYoZT0td3ErYnEpOmU+d3EtYnEmJihlPXdxLWJxKTt2YXIgbj1yL09xKFBLKGUpLGkpO3JldHVybltuKlJxKGkqdCksci1uKkxxKGkqdCldfXJldHVybiBvLmludmVydD1mdW5jdGlvbih0LGUpe3ZhciBuPXItZSxvPXpxKGkpKkRxKHQqdCtuKm4pO3JldHVybltrcSh0LEFxKG4pKS9pKnpxKG4pLDIqQ3EoT3Eoci9vLDEvaSkpLXdxXX0sb31mdW5jdGlvbiBOSyh0LGUpe3JldHVyblt0LGVdfWZ1bmN0aW9uIE9LKHQsZSl7dmFyIG49THEodCksaT10PT09ZT9ScSh0KToobi1McShlKSkvKGUtdCkscj1uL2krdDtpZihBcShpKTxicSlyZXR1cm4gTks7ZnVuY3Rpb24gbyh0LGUpe3ZhciBuPXItZSxvPWkqdDtyZXR1cm5bbipScShvKSxyLW4qTHEobyldfXJldHVybiBvLmludmVydD1mdW5jdGlvbih0LGUpe3ZhciBuPXItZTtyZXR1cm5ba3EodCxBcShuKSkvaSp6cShuKSxyLXpxKGkpKkRxKHQqdCtuKm4pXX0sb31mdW5jdGlvbiBSSyh0LGUpe3ZhciBuPUxxKGUpLGk9THEodCkqbjtyZXR1cm5bbipScSh0KS9pLFJxKGUpL2ldfWZ1bmN0aW9uIHpLKHQsZSxuLGkpe3JldHVybiAxPT09dCYmMT09PWUmJjA9PT1uJiYwPT09aT91JDpjSyh7cG9pbnQ6ZnVuY3Rpb24ocixvKXt0aGlzLnN0cmVhbS5wb2ludChyKnQrbixvKmUraSl9fSl9ZnVuY3Rpb24gREsodCxlKXt2YXIgbj1lKmUsaT1uKm47cmV0dXJuW3QqKC44NzA3LS4xMzE5NzkqbitpKihpKiguMDAzOTcxKm4tLjAwMTUyOSppKS0uMDEzNzkxKSksZSooMS4wMDcyMjYrbiooLjAxNTA4NStpKiguMDI4ODc0Km4tLjA0NDQ3NS0uMDA1OTE2KmkpKSldfWZ1bmN0aW9uIEJLKHQsZSl7cmV0dXJuW0xxKGUpKlJxKHQpLFJxKGUpXX1mdW5jdGlvbiBISyh0LGUpe3ZhciBuPUxxKGUpLGk9MStMcSh0KSpuO3JldHVybltuKlJxKHQpL2ksUnEoZSkvaV19ZnVuY3Rpb24gRksodCxlKXtyZXR1cm5bTnEoQnEoKHdxK2UpLzIpKSwtdF19ZnVuY3Rpb24gVksodCxlKXtyZXR1cm4gdC5wYXJlbnQ9PT1lLnBhcmVudD8xOjJ9ZnVuY3Rpb24gaksodCxlKXtyZXR1cm4gdCtlLnh9ZnVuY3Rpb24gVUsodCxlKXtyZXR1cm4gTWF0aC5tYXgodCxlLnkpfWZ1bmN0aW9uIEdLKHQpe3ZhciBlPTAsbj10LmNoaWxkcmVuLGk9biYmbi5sZW5ndGg7aWYoaSlmb3IoOy0taT49MDspZSs9bltpXS52YWx1ZTtlbHNlIGU9MTt0LnZhbHVlPWV9ZnVuY3Rpb24gV0sodCxlKXt2YXIgbixpLHIsbyxhLHM9bmV3ICRLKHQpLGw9K3QudmFsdWUmJihzLnZhbHVlPXQudmFsdWUpLGM9W3NdO2ZvcihudWxsPT1lJiYoZT1xSyk7bj1jLnBvcCgpOylpZihsJiYobi52YWx1ZT0rbi5kYXRhLnZhbHVlKSwocj1lKG4uZGF0YSkpJiYoYT1yLmxlbmd0aCkpZm9yKG4uY2hpbGRyZW49bmV3IEFycmF5KGEpLG89YS0xO28+PTA7LS1vKWMucHVzaChpPW4uY2hpbGRyZW5bb109bmV3ICRLKHJbb10pKSxpLnBhcmVudD1uLGkuZGVwdGg9bi5kZXB0aCsxO3JldHVybiBzLmVhY2hCZWZvcmUoWEspfWZ1bmN0aW9uIHFLKHQpe3JldHVybiB0LmNoaWxkcmVufWZ1bmN0aW9uIFlLKHQpe3QuZGF0YT10LmRhdGEuZGF0YX1mdW5jdGlvbiBYSyh0KXt2YXIgZT0wO2Rve3QuaGVpZ2h0PWV9d2hpbGUoKHQ9dC5wYXJlbnQpJiZ0LmhlaWdodDwrK2UpfWZ1bmN0aW9uICRLKHQpe3RoaXMuZGF0YT10LHRoaXMuZGVwdGg9dGhpcy5oZWlnaHQ9MCx0aGlzLnBhcmVudD1udWxsfUNLLmludmVydD1USygoZnVuY3Rpb24odCl7cmV0dXJuIHR9KSksa0suaW52ZXJ0PWZ1bmN0aW9uKHQsZSl7cmV0dXJuW3QsMipDcShJcShlKSktd3FdfSxOSy5pbnZlcnQ9TkssUksuaW52ZXJ0PVRLKENxKSxESy5pbnZlcnQ9ZnVuY3Rpb24odCxlKXt2YXIgbixpPWUscj0yNTtkb3t2YXIgbz1pKmksYT1vKm87aS09bj0oaSooMS4wMDcyMjYrbyooLjAxNTA4NSthKiguMDI4ODc0Km8tLjA0NDQ3NS0uMDA1OTE2KmEpKSktZSkvKDEuMDA3MjI2K28qKC4wNDUyNTUrYSooLjI1OTg2NipvLS4zMTEzMjUtLjAwNTkxNioxMSphKSkpfXdoaWxlKEFxKG4pPmJxJiYtLXI+MCk7cmV0dXJuW3QvKC44NzA3KyhvPWkqaSkqKG8qKG8qbypvKiguMDAzOTcxLS4wMDE1MjkqbyktLjAxMzc5MSktLjEzMTk3OSkpLGldfSxCSy5pbnZlcnQ9VEsoRnEpLEhLLmludmVydD1USygoZnVuY3Rpb24odCl7cmV0dXJuIDIqQ3EodCl9KSksRksuaW52ZXJ0PWZ1bmN0aW9uKHQsZSl7cmV0dXJuWy1lLDIqQ3EoSXEodCkpLXdxXX0sJEsucHJvdG90eXBlPVdLLnByb3RvdHlwZT17Y29uc3RydWN0b3I6JEssY291bnQ6ZnVuY3Rpb24gS0soKXtyZXR1cm4gdGhpcy5lYWNoQWZ0ZXIoR0spfSxlYWNoOmZ1bmN0aW9uIFpLKHQpe3ZhciBlLG4saSxyLG89dGhpcyxhPVtvXTtkb3tmb3IoZT1hLnJldmVyc2UoKSxhPVtdO289ZS5wb3AoKTspaWYodChvKSxuPW8uY2hpbGRyZW4pZm9yKGk9MCxyPW4ubGVuZ3RoO2k8cjsrK2kpYS5wdXNoKG5baV0pfXdoaWxlKGEubGVuZ3RoKTtyZXR1cm4gdGhpc30sZWFjaEFmdGVyOmZ1bmN0aW9uIEpLKHQpe2Zvcih2YXIgZSxuLGkscj10aGlzLG89W3JdLGE9W107cj1vLnBvcCgpOylpZihhLnB1c2gociksZT1yLmNoaWxkcmVuKWZvcihuPTAsaT1lLmxlbmd0aDtuPGk7KytuKW8ucHVzaChlW25dKTtmb3IoO3I9YS5wb3AoKTspdChyKTtyZXR1cm4gdGhpc30sZWFjaEJlZm9yZTpmdW5jdGlvbiBRSyh0KXtmb3IodmFyIGUsbixpPXRoaXMscj1baV07aT1yLnBvcCgpOylpZih0KGkpLGU9aS5jaGlsZHJlbilmb3Iobj1lLmxlbmd0aC0xO24+PTA7LS1uKXIucHVzaChlW25dKTtyZXR1cm4gdGhpc30sc3VtOmZ1bmN0aW9uIHRaKHQpe3JldHVybiB0aGlzLmVhY2hBZnRlcigoZnVuY3Rpb24oZSl7Zm9yKHZhciBuPSt0KGUuZGF0YSl8fDAsaT1lLmNoaWxkcmVuLHI9aSYmaS5sZW5ndGg7LS1yPj0wOyluKz1pW3JdLnZhbHVlO2UudmFsdWU9bn0pKX0sc29ydDpmdW5jdGlvbiBlWih0KXtyZXR1cm4gdGhpcy5lYWNoQmVmb3JlKChmdW5jdGlvbihlKXtlLmNoaWxkcmVuJiZlLmNoaWxkcmVuLnNvcnQodCl9KSl9LHBhdGg6ZnVuY3Rpb24gbloodCl7Zm9yKHZhciBlPXRoaXMsbj0oZnVuY3Rpb24gaSh0LGUpe2lmKHQ9PT1lKXJldHVybiB0O3ZhciBuPXQuYW5jZXN0b3JzKCksaT1lLmFuY2VzdG9ycygpLHI9bnVsbDtmb3IodD1uLnBvcCgpLGU9aS5wb3AoKTt0PT09ZTspcj10LHQ9bi5wb3AoKSxlPWkucG9wKCk7cmV0dXJuIHJ9KShlLHQpLHI9W2VdO2UhPT1uOylyLnB1c2goZT1lLnBhcmVudCk7Zm9yKHZhciBvPXIubGVuZ3RoO3QhPT1uOylyLnNwbGljZShvLDAsdCksdD10LnBhcmVudDtyZXR1cm4gcn0sYW5jZXN0b3JzOmZ1bmN0aW9uIGlaKCl7Zm9yKHZhciB0PXRoaXMsZT1bdF07dD10LnBhcmVudDspZS5wdXNoKHQpO3JldHVybiBlfSxkZXNjZW5kYW50czpmdW5jdGlvbiByWigpe3ZhciB0PVtdO3JldHVybiB0aGlzLmVhY2goKGZ1bmN0aW9uKGUpe3QucHVzaChlKX0pKSx0fSxsZWF2ZXM6ZnVuY3Rpb24gb1ooKXt2YXIgdD1bXTtyZXR1cm4gdGhpcy5lYWNoQmVmb3JlKChmdW5jdGlvbihlKXtlLmNoaWxkcmVufHx0LnB1c2goZSl9KSksdH0sbGlua3M6ZnVuY3Rpb24gYVooKXt2YXIgdD10aGlzLGU9W107cmV0dXJuIHQuZWFjaCgoZnVuY3Rpb24obil7biE9PXQmJmUucHVzaCh7c291cmNlOm4ucGFyZW50LHRhcmdldDpufSl9KSksZX0sY29weTpmdW5jdGlvbiBzWigpe3JldHVybiBXSyh0aGlzKS5lYWNoQmVmb3JlKFlLKX19O3ZhciBsWj1BcnJheS5wcm90b3R5cGUuc2xpY2U7ZnVuY3Rpb24gY1oodCl7Zm9yKHZhciBlLG4saT0wLHI9KHQ9KGZ1bmN0aW9uIG8odCl7Zm9yKHZhciBlLG4saT10Lmxlbmd0aDtpOyluPU1hdGgucmFuZG9tKCkqaS0tfDAsZT10W2ldLHRbaV09dFtuXSx0W25dPWU7cmV0dXJuIHR9KShsWi5jYWxsKHQpKSkubGVuZ3RoLGE9W107aTxyOyllPXRbaV0sbiYmZFoobixlKT8rK2k6KG49ZlooYT11WihhLGUpKSxpPTApO3JldHVybiBufWZ1bmN0aW9uIHVaKHQsZSl7dmFyIG4saTtpZihwWihlLHQpKXJldHVybltlXTtmb3Iobj0wO248dC5sZW5ndGg7KytuKWlmKGhaKGUsdFtuXSkmJnBaKG1aKHRbbl0sZSksdCkpcmV0dXJuW3Rbbl0sZV07Zm9yKG49MDtuPHQubGVuZ3RoLTE7KytuKWZvcihpPW4rMTtpPHQubGVuZ3RoOysraSlpZihoWihtWih0W25dLHRbaV0pLGUpJiZoWihtWih0W25dLGUpLHRbaV0pJiZoWihtWih0W2ldLGUpLHRbbl0pJiZwWihnWih0W25dLHRbaV0sZSksdCkpcmV0dXJuW3Rbbl0sdFtpXSxlXTt0aHJvdyBuZXcgRXJyb3J9ZnVuY3Rpb24gaFoodCxlKXt2YXIgbj10LnItZS5yLGk9ZS54LXQueCxyPWUueS10Lnk7cmV0dXJuIG48MHx8bipuPGkqaStyKnJ9ZnVuY3Rpb24gZFoodCxlKXt2YXIgbj10LnItZS5yKzFlLTYsaT1lLngtdC54LHI9ZS55LXQueTtyZXR1cm4gbj4wJiZuKm4+aSppK3Iqcn1mdW5jdGlvbiBwWih0LGUpe2Zvcih2YXIgbj0wO248ZS5sZW5ndGg7KytuKWlmKCFkWih0LGVbbl0pKXJldHVybiExO3JldHVybiEwfWZ1bmN0aW9uIGZaKHQpe3N3aXRjaCh0Lmxlbmd0aCl7Y2FzZSAxOnJldHVybihmdW5jdGlvbiBlKHQpe3JldHVybnt4OnQueCx5OnQueSxyOnQucn19KSh0WzBdKTtjYXNlIDI6cmV0dXJuIG1aKHRbMF0sdFsxXSk7Y2FzZSAzOnJldHVybiBnWih0WzBdLHRbMV0sdFsyXSl9fWZ1bmN0aW9uIG1aKHQsZSl7dmFyIG49dC54LGk9dC55LHI9dC5yLG89ZS54LGE9ZS55LHM9ZS5yLGw9by1uLGM9YS1pLHU9cy1yLGg9TWF0aC5zcXJ0KGwqbCtjKmMpO3JldHVybnt4OihuK28rbC9oKnUpLzIseTooaSthK2MvaCp1KS8yLHI6KGgrcitzKS8yfX1mdW5jdGlvbiBnWih0LGUsbil7dmFyIGk9dC54LHI9dC55LG89dC5yLGE9ZS54LHM9ZS55LGw9ZS5yLGM9bi54LHU9bi55LGg9bi5yLGQ9aS1hLHA9aS1jLGY9ci1zLG09ci11LGc9bC1vLF89aC1vLHk9aSppK3Iqci1vKm8sdj15LWEqYS1zKnMrbCpsLGI9eS1jKmMtdSp1K2gqaCx4PXAqZi1kKm0sdz0oZipiLW0qdikvKDIqeCktaSxTPShtKmctZipfKS94LE09KHAqdi1kKmIpLygyKngpLXIsRT0oZCpfLXAqZykveCxUPVMqUytFKkUtMSxBPTIqKG8rdypTK00qRSksQz13KncrTSpNLW8qbyxrPS0oVD8oQStNYXRoLnNxcnQoQSpBLTQqVCpDKSkvKDIqVCk6Qy9BKTtyZXR1cm57eDppK3crUyprLHk6citNK0UqayxyOmt9fWZ1bmN0aW9uIF9aKHQsZSxuKXt2YXIgaT10Lngscj10Lnksbz1lLnIrbi5yLGE9dC5yK24ucixzPWUueC1pLGw9ZS55LXIsYz1zKnMrbCpsO2lmKGMpe3ZhciB1PS41KygoYSo9YSktKG8qPW8pKS8oMipjKSxoPU1hdGguc3FydChNYXRoLm1heCgwLDIqbyooYStjKS0oYS09YykqYS1vKm8pKS8oMipjKTtuLng9aSt1KnMraCpsLG4ueT1yK3UqbC1oKnN9ZWxzZSBuLng9aSthLG4ueT1yfWZ1bmN0aW9uIHlaKHQsZSl7dmFyIG49ZS54LXQueCxpPWUueS10Lnkscj10LnIrZS5yO3JldHVybiByKnItMWUtNj5uKm4raSppfWZ1bmN0aW9uIHZaKHQpe3ZhciBlPXQuXyxuPXQubmV4dC5fLGk9ZS5yK24ucixyPShlLngqbi5yK24ueCplLnIpL2ksbz0oZS55Km4ucituLnkqZS5yKS9pO3JldHVybiByKnIrbypvfWZ1bmN0aW9uIGJaKHQpe3RoaXMuXz10LHRoaXMubmV4dD1udWxsLHRoaXMucHJldmlvdXM9bnVsbH1mdW5jdGlvbiB4Wih0KXtpZighKHI9dC5sZW5ndGgpKXJldHVybiAwO3ZhciBlLG4saSxyLG8sYSxzLGwsYyx1LGg7aWYoKGU9dFswXSkueD0wLGUueT0wLCEocj4xKSlyZXR1cm4gZS5yO2lmKGUueD0tKG49dFsxXSkucixuLng9ZS5yLG4ueT0wLCEocj4yKSlyZXR1cm4gZS5yK24ucjtfWihuLGUsaT10WzJdKSxlPW5ldyBiWihlKSxuPW5ldyBiWihuKSxpPW5ldyBiWihpKSxlLm5leHQ9aS5wcmV2aW91cz1uLG4ubmV4dD1lLnByZXZpb3VzPWksaS5uZXh0PW4ucHJldmlvdXM9ZTt0OmZvcihzPTM7czxyOysrcyl7X1ooZS5fLG4uXyxpPXRbc10pLGk9bmV3IGJaKGkpLGw9bi5uZXh0LGM9ZS5wcmV2aW91cyx1PW4uXy5yLGg9ZS5fLnI7ZG97aWYodTw9aCl7aWYoeVoobC5fLGkuXykpe2UubmV4dD1uPWwsbi5wcmV2aW91cz1lLC0tcztjb250aW51ZSB0fXUrPWwuXy5yLGw9bC5uZXh0fWVsc2V7aWYoeVooYy5fLGkuXykpeyhlPWMpLm5leHQ9bixuLnByZXZpb3VzPWUsLS1zO2NvbnRpbnVlIHR9aCs9Yy5fLnIsYz1jLnByZXZpb3VzfX13aGlsZShsIT09Yy5uZXh0KTtmb3IoaS5wcmV2aW91cz1lLGkubmV4dD1uLGUubmV4dD1uLnByZXZpb3VzPW49aSxvPXZaKGUpOyhpPWkubmV4dCkhPT1uOykoYT12WihpKSk8byYmKGU9aSxvPWEpO249ZS5uZXh0fWZvcihlPVtuLl9dLGk9bjsoaT1pLm5leHQpIT09bjspZS5wdXNoKGkuXyk7Zm9yKGk9Y1ooZSkscz0wO3M8cjsrK3MpKGU9dFtzXSkueC09aS54LGUueS09aS55O3JldHVybiBpLnJ9ZnVuY3Rpb24gd1oodCl7cmV0dXJuIG51bGw9PXQ/bnVsbDpTWih0KX1mdW5jdGlvbiBTWih0KXtpZigiZnVuY3Rpb24iIT10eXBlb2YgdCl0aHJvdyBuZXcgRXJyb3I7cmV0dXJuIHR9ZnVuY3Rpb24gTVooKXtyZXR1cm4gMH1mdW5jdGlvbiBFWih0KXtyZXR1cm4gZnVuY3Rpb24oKXtyZXR1cm4gdH19ZnVuY3Rpb24gVFoodCl7cmV0dXJuIE1hdGguc3FydCh0LnZhbHVlKX1mdW5jdGlvbiBBWih0KXtyZXR1cm4gZnVuY3Rpb24oZSl7ZS5jaGlsZHJlbnx8KGUucj1NYXRoLm1heCgwLCt0KGUpfHwwKSl9fWZ1bmN0aW9uIENaKHQsZSl7cmV0dXJuIGZ1bmN0aW9uKG4pe2lmKGk9bi5jaGlsZHJlbil7dmFyIGkscixvLGE9aS5sZW5ndGgscz10KG4pKmV8fDA7aWYocylmb3Iocj0wO3I8YTsrK3IpaVtyXS5yKz1zO2lmKG89eFooaSkscylmb3Iocj0wO3I8YTsrK3IpaVtyXS5yLT1zO24ucj1vK3N9fX1mdW5jdGlvbiBrWih0KXtyZXR1cm4gZnVuY3Rpb24oZSl7dmFyIG49ZS5wYXJlbnQ7ZS5yKj10LG4mJihlLng9bi54K3QqZS54LGUueT1uLnkrdCplLnkpfX1mdW5jdGlvbiBMWih0KXt0LngwPU1hdGgucm91bmQodC54MCksdC55MD1NYXRoLnJvdW5kKHQueTApLHQueDE9TWF0aC5yb3VuZCh0LngxKSx0LnkxPU1hdGgucm91bmQodC55MSl9ZnVuY3Rpb24gUFoodCxlLG4saSxyKXtmb3IodmFyIG8sYT10LmNoaWxkcmVuLHM9LTEsbD1hLmxlbmd0aCxjPXQudmFsdWUmJihpLWUpL3QudmFsdWU7KytzPGw7KShvPWFbc10pLnkwPW4sby55MT1yLG8ueDA9ZSxvLngxPWUrPW8udmFsdWUqY312YXIgSVo9e2RlcHRoOi0xfSxOWj17fTtmdW5jdGlvbiBPWih0KXtyZXR1cm4gdC5pZH1mdW5jdGlvbiBSWih0KXtyZXR1cm4gdC5wYXJlbnRJZH1mdW5jdGlvbiB6Wih0LGUpe3JldHVybiB0LnBhcmVudD09PWUucGFyZW50PzE6Mn1mdW5jdGlvbiBEWih0KXt2YXIgZT10LmNoaWxkcmVuO3JldHVybiBlP2VbMF06dC50fWZ1bmN0aW9uIEJaKHQpe3ZhciBlPXQuY2hpbGRyZW47cmV0dXJuIGU/ZVtlLmxlbmd0aC0xXTp0LnR9ZnVuY3Rpb24gSFoodCxlLG4pe3ZhciBpPW4vKGUuaS10LmkpO2UuYy09aSxlLnMrPW4sdC5jKz1pLGUueis9bixlLm0rPW59ZnVuY3Rpb24gRloodCxlLG4pe3JldHVybiB0LmEucGFyZW50PT09ZS5wYXJlbnQ/dC5hOm59ZnVuY3Rpb24gVloodCxlKXt0aGlzLl89dCx0aGlzLnBhcmVudD1udWxsLHRoaXMuY2hpbGRyZW49bnVsbCx0aGlzLkE9bnVsbCx0aGlzLmE9dGhpcyx0aGlzLno9MCx0aGlzLm09MCx0aGlzLmM9MCx0aGlzLnM9MCx0aGlzLnQ9bnVsbCx0aGlzLmk9ZX1mdW5jdGlvbiBqWih0LGUsbixpLHIpe2Zvcih2YXIgbyxhPXQuY2hpbGRyZW4scz0tMSxsPWEubGVuZ3RoLGM9dC52YWx1ZSYmKHItbikvdC52YWx1ZTsrK3M8bDspKG89YVtzXSkueDA9ZSxvLngxPWksby55MD1uLG8ueTE9bis9by52YWx1ZSpjfVZaLnByb3RvdHlwZT1PYmplY3QuY3JlYXRlKCRLLnByb3RvdHlwZSk7dmFyIFVaPSgxK01hdGguc3FydCg1KSkvMjtmdW5jdGlvbiBHWih0LGUsbixpLHIsbyl7Zm9yKHZhciBhLHMsbCxjLHUsaCxkLHAsZixtLGcsXz1bXSx5PWUuY2hpbGRyZW4sdj0wLGI9MCx4PXkubGVuZ3RoLHc9ZS52YWx1ZTt2PHg7KXtsPXItbixjPW8taTtkb3t1PXlbYisrXS52YWx1ZX13aGlsZSghdSYmYjx4KTtmb3IoaD1kPXUsZz11KnUqKG09TWF0aC5tYXgoYy9sLGwvYykvKHcqdCkpLGY9TWF0aC5tYXgoZC9nLGcvaCk7Yjx4OysrYil7aWYodSs9cz15W2JdLnZhbHVlLHM8aCYmKGg9cykscz5kJiYoZD1zKSxnPXUqdSptLChwPU1hdGgubWF4KGQvZyxnL2gpKT5mKXt1LT1zO2JyZWFrfWY9cH1fLnB1c2goYT17dmFsdWU6dSxkaWNlOmw8YyxjaGlsZHJlbjp5LnNsaWNlKHYsYil9KSxhLmRpY2U/UFooYSxuLGkscix3P2krPWMqdS93Om8pOmpaKGEsbixpLHc/bis9bCp1L3c6cixvKSx3LT11LHY9Yn1yZXR1cm4gX312YXIgV1o9KGZ1bmN0aW9uIHQoZSl7ZnVuY3Rpb24gbih0LG4saSxyLG8pe0daKGUsdCxuLGkscixvKX1yZXR1cm4gbi5yYXRpbz1mdW5jdGlvbihlKXtyZXR1cm4gdCgoZT0rZSk+MT9lOjEpfSxufSkoVVopLHFaPShmdW5jdGlvbiB0KGUpe2Z1bmN0aW9uIG4odCxuLGkscixvKXtpZigoYT10Ll9zcXVhcmlmeSkmJmEucmF0aW89PT1lKWZvcih2YXIgYSxzLGwsYyx1LGg9LTEsZD1hLmxlbmd0aCxwPXQudmFsdWU7KytoPGQ7KXtmb3IobD0ocz1hW2hdKS5jaGlsZHJlbixjPXMudmFsdWU9MCx1PWwubGVuZ3RoO2M8dTsrK2Mpcy52YWx1ZSs9bFtjXS52YWx1ZTtzLmRpY2U/UFoocyxuLGkscixpKz0oby1pKSpzLnZhbHVlL3ApOmpaKHMsbixpLG4rPShyLW4pKnMudmFsdWUvcCxvKSxwLT1zLnZhbHVlfWVsc2UgdC5fc3F1YXJpZnk9YT1HWihlLHQsbixpLHIsbyksYS5yYXRpbz1lfXJldHVybiBuLnJhdGlvPWZ1bmN0aW9uKGUpe3JldHVybiB0KChlPStlKT4xP2U6MSl9LG59KShVWik7ZnVuY3Rpb24gWVoodCxlLG4pe3QucHJvdG90eXBlPWUucHJvdG90eXBlPW4sbi5jb25zdHJ1Y3Rvcj10fWZ1bmN0aW9uIFhaKHQsZSl7dmFyIG49T2JqZWN0LmNyZWF0ZSh0LnByb3RvdHlwZSk7Zm9yKHZhciBpIGluIGUpbltpXT1lW2ldO3JldHVybiBufWZ1bmN0aW9uICRaKCl7fXZhciBLWj0uNyxaWj0xL0taLEpaPSJcXHMqKFsrLV0/XFxkKylcXHMqIixRWj0iXFxzKihbKy1dP1xcZCpcXC4/XFxkKyg/OltlRV1bKy1dP1xcZCspPylcXHMqIix0Sj0iXFxzKihbKy1dP1xcZCpcXC4/XFxkKyg/OltlRV1bKy1dP1xcZCspPyklXFxzKiIsZUo9L14jKFswLTlhLWZdezMsOH0pJC8sbko9bmV3IFJlZ0V4cCgiXnJnYlxcKCIrW0paLEpaLEpaXSsiXFwpJCIpLGlKPW5ldyBSZWdFeHAoIl5yZ2JcXCgiK1t0Six0Six0Sl0rIlxcKSQiKSxySj1uZXcgUmVnRXhwKCJecmdiYVxcKCIrW0paLEpaLEpaLFFaXSsiXFwpJCIpLG9KPW5ldyBSZWdFeHAoIl5yZ2JhXFwoIitbdEosdEosdEosUVpdKyJcXCkkIiksYUo9bmV3IFJlZ0V4cCgiXmhzbFxcKCIrW1FaLHRKLHRKXSsiXFwpJCIpLHNKPW5ldyBSZWdFeHAoIl5oc2xhXFwoIitbUVosdEosdEosUVpdKyJcXCkkIiksbEo9e2FsaWNlYmx1ZToxNTc5MjM4MyxhbnRpcXVld2hpdGU6MTY0NDQzNzUsYXF1YTo2NTUzNSxhcXVhbWFyaW5lOjgzODg1NjQsYXp1cmU6MTU3OTQxNzUsYmVpZ2U6MTYxMTkyNjAsYmlzcXVlOjE2NzcwMjQ0LGJsYWNrOjAsYmxhbmNoZWRhbG1vbmQ6MTY3NzIwNDUsYmx1ZToyNTUsYmx1ZXZpb2xldDo5MDU1MjAyLGJyb3duOjEwODI0MjM0LGJ1cmx5d29vZDoxNDU5NjIzMSxjYWRldGJsdWU6NjI2NjUyOCxjaGFydHJldXNlOjgzODgzNTIsY2hvY29sYXRlOjEzNzg5NDcwLGNvcmFsOjE2NzQ0MjcyLGNvcm5mbG93ZXJibHVlOjY1OTE5ODEsY29ybnNpbGs6MTY3NzUzODgsY3JpbXNvbjoxNDQyMzEwMCxjeWFuOjY1NTM1LGRhcmtibHVlOjEzOSxkYXJrY3lhbjozNTcyMyxkYXJrZ29sZGVucm9kOjEyMDkyOTM5LGRhcmtncmF5OjExMTE5MDE3LGRhcmtncmVlbjoyNTYwMCxkYXJrZ3JleToxMTExOTAxNyxkYXJra2hha2k6MTI0MzMyNTksZGFya21hZ2VudGE6OTEwOTY0MyxkYXJrb2xpdmVncmVlbjo1NTk3OTk5LGRhcmtvcmFuZ2U6MTY3NDc1MjAsZGFya29yY2hpZDoxMDA0MDAxMixkYXJrcmVkOjkxMDk1MDQsZGFya3NhbG1vbjoxNTMwODQxMCxkYXJrc2VhZ3JlZW46OTQxOTkxOSxkYXJrc2xhdGVibHVlOjQ3MzQzNDcsZGFya3NsYXRlZ3JheTozMTAwNDk1LGRhcmtzbGF0ZWdyZXk6MzEwMDQ5NSxkYXJrdHVycXVvaXNlOjUyOTQ1LGRhcmt2aW9sZXQ6OTY5OTUzOSxkZWVwcGluazoxNjcxNjk0NyxkZWVwc2t5Ymx1ZTo0OTE1MSxkaW1ncmF5OjY5MDgyNjUsZGltZ3JleTo2OTA4MjY1LGRvZGdlcmJsdWU6MjAwMzE5OSxmaXJlYnJpY2s6MTE2NzQxNDYsZmxvcmFsd2hpdGU6MTY3NzU5MjAsZm9yZXN0Z3JlZW46MjI2Mzg0MixmdWNoc2lhOjE2NzExOTM1LGdhaW5zYm9ybzoxNDQ3NDQ2MCxnaG9zdHdoaXRlOjE2MzE2NjcxLGdvbGQ6MTY3NjY3MjAsZ29sZGVucm9kOjE0MzI5MTIwLGdyYXk6ODQyMTUwNCxncmVlbjozMjc2OCxncmVlbnllbGxvdzoxMTQwMzA1NSxncmV5Ojg0MjE1MDQsaG9uZXlkZXc6MTU3OTQxNjAsaG90cGluazoxNjczODc0MCxpbmRpYW5yZWQ6MTM0NTg1MjQsaW5kaWdvOjQ5MTUzMzAsaXZvcnk6MTY3NzcyMDAsa2hha2k6MTU3ODc2NjAsbGF2ZW5kZXI6MTUxMzI0MTAsbGF2ZW5kZXJibHVzaDoxNjc3MzM2NSxsYXduZ3JlZW46ODE5MDk3NixsZW1vbmNoaWZmb246MTY3NzU4ODUsbGlnaHRibHVlOjExMzkzMjU0LGxpZ2h0Y29yYWw6MTU3NjE1MzYsbGlnaHRjeWFuOjE0NzQ1NTk5LGxpZ2h0Z29sZGVucm9keWVsbG93OjE2NDQ4MjEwLGxpZ2h0Z3JheToxMzg4MjMyMyxsaWdodGdyZWVuOjk0OTgyNTYsbGlnaHRncmV5OjEzODgyMzIzLGxpZ2h0cGluazoxNjc1ODQ2NSxsaWdodHNhbG1vbjoxNjc1Mjc2MixsaWdodHNlYWdyZWVuOjIxNDI4OTAsbGlnaHRza3libHVlOjg5MDAzNDYsbGlnaHRzbGF0ZWdyYXk6NzgzMzc1MyxsaWdodHNsYXRlZ3JleTo3ODMzNzUzLGxpZ2h0c3RlZWxibHVlOjExNTg0NzM0LGxpZ2h0eWVsbG93OjE2Nzc3MTg0LGxpbWU6NjUyODAsbGltZWdyZWVuOjMzMjkzMzAsbGluZW46MTY0NDU2NzAsbWFnZW50YToxNjcxMTkzNSxtYXJvb246ODM4ODYwOCxtZWRpdW1hcXVhbWFyaW5lOjY3MzczMjIsbWVkaXVtYmx1ZToyMDUsbWVkaXVtb3JjaGlkOjEyMjExNjY3LG1lZGl1bXB1cnBsZTo5NjYyNjgzLG1lZGl1bXNlYWdyZWVuOjM5NzgwOTcsbWVkaXVtc2xhdGVibHVlOjgwODc3OTAsbWVkaXVtc3ByaW5nZ3JlZW46NjQxNTQsbWVkaXVtdHVycXVvaXNlOjQ3NzIzMDAsbWVkaXVtdmlvbGV0cmVkOjEzMDQ3MTczLG1pZG5pZ2h0Ymx1ZToxNjQ0OTEyLG1pbnRjcmVhbToxNjEyMTg1MCxtaXN0eXJvc2U6MTY3NzAyNzMsbW9jY2FzaW46MTY3NzAyMjksbmF2YWpvd2hpdGU6MTY3Njg2ODUsbmF2eToxMjgsb2xkbGFjZToxNjY0MzU1OCxvbGl2ZTo4NDIxMzc2LG9saXZlZHJhYjo3MDQ4NzM5LG9yYW5nZToxNjc1MzkyMCxvcmFuZ2VyZWQ6MTY3MjkzNDQsb3JjaGlkOjE0MzE1NzM0LHBhbGVnb2xkZW5yb2Q6MTU2NTcxMzAscGFsZWdyZWVuOjEwMDI1ODgwLHBhbGV0dXJxdW9pc2U6MTE1Mjk5NjYscGFsZXZpb2xldHJlZDoxNDM4MTIwMyxwYXBheWF3aGlwOjE2NzczMDc3LHBlYWNocHVmZjoxNjc2NzY3MyxwZXJ1OjEzNDY4OTkxLHBpbms6MTY3NjEwMzUscGx1bToxNDUyNDYzNyxwb3dkZXJibHVlOjExNTkxOTEwLHB1cnBsZTo4Mzg4NzM2LHJlYmVjY2FwdXJwbGU6NjY5Nzg4MSxyZWQ6MTY3MTE2ODAscm9zeWJyb3duOjEyMzU3NTE5LHJveWFsYmx1ZTo0Mjg2OTQ1LHNhZGRsZWJyb3duOjkxMjcxODcsc2FsbW9uOjE2NDE2ODgyLHNhbmR5YnJvd246MTYwMzI4NjQsc2VhZ3JlZW46MzA1MDMyNyxzZWFzaGVsbDoxNjc3NDYzOCxzaWVubmE6MTA1MDY3OTcsc2lsdmVyOjEyNjMyMjU2LHNreWJsdWU6ODkwMDMzMSxzbGF0ZWJsdWU6Njk3MDA2MSxzbGF0ZWdyYXk6NzM3Mjk0NCxzbGF0ZWdyZXk6NzM3Mjk0NCxzbm93OjE2Nzc1OTMwLHNwcmluZ2dyZWVuOjY1NDA3LHN0ZWVsYmx1ZTo0NjIwOTgwLHRhbjoxMzgwODc4MCx0ZWFsOjMyODk2LHRoaXN0bGU6MTQyMDQ4ODgsdG9tYXRvOjE2NzM3MDk1LHR1cnF1b2lzZTo0MjUxODU2LHZpb2xldDoxNTYzMTA4Nix3aGVhdDoxNjExMzMzMSx3aGl0ZToxNjc3NzIxNSx3aGl0ZXNtb2tlOjE2MTE5Mjg1LHllbGxvdzoxNjc3Njk2MCx5ZWxsb3dncmVlbjoxMDE0NTA3NH07ZnVuY3Rpb24gY0ooKXtyZXR1cm4gdGhpcy5yZ2IoKS5mb3JtYXRIZXgoKX1mdW5jdGlvbiB1Sigpe3JldHVybiB0aGlzLnJnYigpLmZvcm1hdFJnYigpfWZ1bmN0aW9uIGhKKHQpe3ZhciBlLG47cmV0dXJuIHQ9KHQrIiIpLnRyaW0oKS50b0xvd2VyQ2FzZSgpLChlPWVKLmV4ZWModCkpPyhuPWVbMV0ubGVuZ3RoLGU9cGFyc2VJbnQoZVsxXSwxNiksNj09PW4/ZEooZSk6Mz09PW4/bmV3IGdKKGU+PjgmMTV8ZT4+NCYyNDAsZT4+NCYxNXwyNDAmZSwoMTUmZSk8PDR8MTUmZSwxKTo4PT09bj9wSihlPj4yNCYyNTUsZT4+MTYmMjU1LGU+PjgmMjU1LCgyNTUmZSkvMjU1KTo0PT09bj9wSihlPj4xMiYxNXxlPj44JjI0MCxlPj44JjE1fGU+PjQmMjQwLGU+PjQmMTV8MjQwJmUsKCgxNSZlKTw8NHwxNSZlKS8yNTUpOm51bGwpOihlPW5KLmV4ZWModCkpP25ldyBnSihlWzFdLGVbMl0sZVszXSwxKTooZT1pSi5leGVjKHQpKT9uZXcgZ0ooMjU1KmVbMV0vMTAwLDI1NSplWzJdLzEwMCwyNTUqZVszXS8xMDAsMSk6KGU9ckouZXhlYyh0KSk/cEooZVsxXSxlWzJdLGVbM10sZVs0XSk6KGU9b0ouZXhlYyh0KSk/cEooMjU1KmVbMV0vMTAwLDI1NSplWzJdLzEwMCwyNTUqZVszXS8xMDAsZVs0XSk6KGU9YUouZXhlYyh0KSk/YkooZVsxXSxlWzJdLzEwMCxlWzNdLzEwMCwxKTooZT1zSi5leGVjKHQpKT9iSihlWzFdLGVbMl0vMTAwLGVbM10vMTAwLGVbNF0pOmxKLmhhc093blByb3BlcnR5KHQpP2RKKGxKW3RdKToidHJhbnNwYXJlbnQiPT09dD9uZXcgZ0ooTmFOLE5hTixOYU4sMCk6bnVsbH1mdW5jdGlvbiBkSih0KXtyZXR1cm4gbmV3IGdKKHQ+PjE2JjI1NSx0Pj44JjI1NSwyNTUmdCwxKX1mdW5jdGlvbiBwSih0LGUsbixpKXtyZXR1cm4gaTw9MCYmKHQ9ZT1uPU5hTiksbmV3IGdKKHQsZSxuLGkpfWZ1bmN0aW9uIGZKKHQpe3JldHVybiB0IGluc3RhbmNlb2YgJFp8fCh0PWhKKHQpKSx0P25ldyBnSigodD10LnJnYigpKS5yLHQuZyx0LmIsdC5vcGFjaXR5KTpuZXcgZ0p9ZnVuY3Rpb24gbUoodCxlLG4saSl7cmV0dXJuIDE9PT1hcmd1bWVudHMubGVuZ3RoP2ZKKHQpOm5ldyBnSih0LGUsbixudWxsPT1pPzE6aSl9ZnVuY3Rpb24gZ0oodCxlLG4saSl7dGhpcy5yPSt0LHRoaXMuZz0rZSx0aGlzLmI9K24sdGhpcy5vcGFjaXR5PStpfWZ1bmN0aW9uIF9KKCl7cmV0dXJuIiMiK3ZKKHRoaXMucikrdkoodGhpcy5nKSt2Sih0aGlzLmIpfWZ1bmN0aW9uIHlKKCl7dmFyIHQ9dGhpcy5vcGFjaXR5O3JldHVybigxPT09KHQ9aXNOYU4odCk/MTpNYXRoLm1heCgwLE1hdGgubWluKDEsdCkpKT8icmdiKCI6InJnYmEoIikrTWF0aC5tYXgoMCxNYXRoLm1pbigyNTUsTWF0aC5yb3VuZCh0aGlzLnIpfHwwKSkrIiwgIitNYXRoLm1heCgwLE1hdGgubWluKDI1NSxNYXRoLnJvdW5kKHRoaXMuZyl8fDApKSsiLCAiK01hdGgubWF4KDAsTWF0aC5taW4oMjU1LE1hdGgucm91bmQodGhpcy5iKXx8MCkpKygxPT09dD8iKSI6IiwgIit0KyIpIil9ZnVuY3Rpb24gdkoodCl7cmV0dXJuKCh0PU1hdGgubWF4KDAsTWF0aC5taW4oMjU1LE1hdGgucm91bmQodCl8fDApKSk8MTY/IjAiOiIiKSt0LnRvU3RyaW5nKDE2KX1mdW5jdGlvbiBiSih0LGUsbixpKXtyZXR1cm4gaTw9MD90PWU9bj1OYU46bjw9MHx8bj49MT90PWU9TmFOOmU8PTAmJih0PU5hTiksbmV3IFNKKHQsZSxuLGkpfWZ1bmN0aW9uIHhKKHQpe2lmKHQgaW5zdGFuY2VvZiBTSilyZXR1cm4gbmV3IFNKKHQuaCx0LnMsdC5sLHQub3BhY2l0eSk7aWYodCBpbnN0YW5jZW9mICRafHwodD1oSih0KSksIXQpcmV0dXJuIG5ldyBTSjtpZih0IGluc3RhbmNlb2YgU0opcmV0dXJuIHQ7dmFyIGU9KHQ9dC5yZ2IoKSkuci8yNTUsbj10LmcvMjU1LGk9dC5iLzI1NSxyPU1hdGgubWluKGUsbixpKSxvPU1hdGgubWF4KGUsbixpKSxhPU5hTixzPW8tcixsPShvK3IpLzI7cmV0dXJuIHM/KGE9ZT09PW8/KG4taSkvcys2KihuPGkpOm49PT1vPyhpLWUpL3MrMjooZS1uKS9zKzQscy89bDwuNT9vK3I6Mi1vLXIsYSo9NjApOnM9bD4wJiZsPDE/MDphLG5ldyBTSihhLHMsbCx0Lm9wYWNpdHkpfWZ1bmN0aW9uIHdKKHQsZSxuLGkpe3JldHVybiAxPT09YXJndW1lbnRzLmxlbmd0aD94Sih0KTpuZXcgU0oodCxlLG4sbnVsbD09aT8xOmkpfWZ1bmN0aW9uIFNKKHQsZSxuLGkpe3RoaXMuaD0rdCx0aGlzLnM9K2UsdGhpcy5sPStuLHRoaXMub3BhY2l0eT0raX1mdW5jdGlvbiBNSih0LGUsbil7cmV0dXJuIDI1NSoodDw2MD9lKyhuLWUpKnQvNjA6dDwxODA/bjp0PDI0MD9lKyhuLWUpKigyNDAtdCkvNjA6ZSl9WVooJFosaEose2NvcHk6ZnVuY3Rpb24odCl7cmV0dXJuIE9iamVjdC5hc3NpZ24obmV3IHRoaXMuY29uc3RydWN0b3IsdGhpcyx0KX0sZGlzcGxheWFibGU6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5yZ2IoKS5kaXNwbGF5YWJsZSgpfSxoZXg6Y0osZm9ybWF0SGV4OmNKLGZvcm1hdEhzbDpmdW5jdGlvbiBFSigpe3JldHVybiB4Sih0aGlzKS5mb3JtYXRIc2woKX0sZm9ybWF0UmdiOnVKLHRvU3RyaW5nOnVKfSksWVooZ0osbUosWFooJFose2JyaWdodGVyOmZ1bmN0aW9uKHQpe3JldHVybiB0PW51bGw9PXQ/Wlo6TWF0aC5wb3coWlosdCksbmV3IGdKKHRoaXMucip0LHRoaXMuZyp0LHRoaXMuYip0LHRoaXMub3BhY2l0eSl9LGRhcmtlcjpmdW5jdGlvbih0KXtyZXR1cm4gdD1udWxsPT10P0taOk1hdGgucG93KEtaLHQpLG5ldyBnSih0aGlzLnIqdCx0aGlzLmcqdCx0aGlzLmIqdCx0aGlzLm9wYWNpdHkpfSxyZ2I6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpc30sZGlzcGxheWFibGU6ZnVuY3Rpb24oKXtyZXR1cm4tLjU8PXRoaXMuciYmdGhpcy5yPDI1NS41JiYtLjU8PXRoaXMuZyYmdGhpcy5nPDI1NS41JiYtLjU8PXRoaXMuYiYmdGhpcy5iPDI1NS41JiYwPD10aGlzLm9wYWNpdHkmJnRoaXMub3BhY2l0eTw9MX0saGV4Ol9KLGZvcm1hdEhleDpfSixmb3JtYXRSZ2I6eUosdG9TdHJpbmc6eUp9KSksWVooU0osd0osWFooJFose2JyaWdodGVyOmZ1bmN0aW9uKHQpe3JldHVybiB0PW51bGw9PXQ/Wlo6TWF0aC5wb3coWlosdCksbmV3IFNKKHRoaXMuaCx0aGlzLnMsdGhpcy5sKnQsdGhpcy5vcGFjaXR5KX0sZGFya2VyOmZ1bmN0aW9uKHQpe3JldHVybiB0PW51bGw9PXQ/S1o6TWF0aC5wb3coS1osdCksbmV3IFNKKHRoaXMuaCx0aGlzLnMsdGhpcy5sKnQsdGhpcy5vcGFjaXR5KX0scmdiOmZ1bmN0aW9uKCl7dmFyIHQ9dGhpcy5oJTM2MCszNjAqKHRoaXMuaDwwKSxlPWlzTmFOKHQpfHxpc05hTih0aGlzLnMpPzA6dGhpcy5zLG49dGhpcy5sLGk9bisobjwuNT9uOjEtbikqZSxyPTIqbi1pO3JldHVybiBuZXcgZ0ooTUoodD49MjQwP3QtMjQwOnQrMTIwLHIsaSksTUoodCxyLGkpLE1KKHQ8MTIwP3QrMjQwOnQtMTIwLHIsaSksdGhpcy5vcGFjaXR5KX0sZGlzcGxheWFibGU6ZnVuY3Rpb24oKXtyZXR1cm4oMDw9dGhpcy5zJiZ0aGlzLnM8PTF8fGlzTmFOKHRoaXMucykpJiYwPD10aGlzLmwmJnRoaXMubDw9MSYmMDw9dGhpcy5vcGFjaXR5JiZ0aGlzLm9wYWNpdHk8PTF9LGZvcm1hdEhzbDpmdW5jdGlvbigpe3ZhciB0PXRoaXMub3BhY2l0eTtyZXR1cm4oMT09PSh0PWlzTmFOKHQpPzE6TWF0aC5tYXgoMCxNYXRoLm1pbigxLHQpKSk/ImhzbCgiOiJoc2xhKCIpKyh0aGlzLmh8fDApKyIsICIrMTAwKih0aGlzLnN8fDApKyIlLCAiKzEwMCoodGhpcy5sfHwwKSsiJSIrKDE9PT10PyIpIjoiLCAiK3QrIikiKX19KSk7dmFyIFRKPU1hdGguUEkvMTgwLEFKPTE4MC9NYXRoLlBJLENKPS45NjQyMixrSj0uODI1MjEsTEo9NC8yOSxQSj02LzI5LElKPTMqUEoqUEo7ZnVuY3Rpb24gTkoodCl7aWYodCBpbnN0YW5jZW9mIFJKKXJldHVybiBuZXcgUkoodC5sLHQuYSx0LmIsdC5vcGFjaXR5KTtpZih0IGluc3RhbmNlb2YgakopcmV0dXJuIFVKKHQpO3QgaW5zdGFuY2VvZiBnSnx8KHQ9ZkoodCkpO3ZhciBlLG4saT1ISih0LnIpLHI9SEoodC5nKSxvPUhKKHQuYiksYT16SigoLjIyMjUwNDUqaSsuNzE2ODc4NipyKy4wNjA2MTY5Km8pLzEpO3JldHVybiBpPT09ciYmcj09PW8/ZT1uPWE6KGU9ekooKC40MzYwNzQ3KmkrLjM4NTA2NDkqcisuMTQzMDgwNCpvKS9DSiksbj16SigoLjAxMzkzMjIqaSsuMDk3MTA0NSpyKy43MTQxNzMzKm8pL2tKKSksbmV3IFJKKDExNiphLTE2LDUwMCooZS1hKSwyMDAqKGEtbiksdC5vcGFjaXR5KX1mdW5jdGlvbiBPSih0LGUsbixpKXtyZXR1cm4gMT09PWFyZ3VtZW50cy5sZW5ndGg/TkoodCk6bmV3IFJKKHQsZSxuLG51bGw9PWk/MTppKX1mdW5jdGlvbiBSSih0LGUsbixpKXt0aGlzLmw9K3QsdGhpcy5hPStlLHRoaXMuYj0rbix0aGlzLm9wYWNpdHk9K2l9ZnVuY3Rpb24gekoodCl7cmV0dXJuIHQ+LjAwODg1NjQ1MTY3OTAzNTYzMT9NYXRoLnBvdyh0LDEvMyk6dC9JSitMSn1mdW5jdGlvbiBESih0KXtyZXR1cm4gdD5QSj90KnQqdDpJSioodC1MSil9ZnVuY3Rpb24gQkoodCl7cmV0dXJuIDI1NSoodDw9LjAwMzEzMDg/MTIuOTIqdDoxLjA1NSpNYXRoLnBvdyh0LDEvMi40KS0uMDU1KX1mdW5jdGlvbiBISih0KXtyZXR1cm4odC89MjU1KTw9LjA0MDQ1P3QvMTIuOTI6TWF0aC5wb3coKHQrLjA1NSkvMS4wNTUsMi40KX1mdW5jdGlvbiBGSih0KXtpZih0IGluc3RhbmNlb2YgakopcmV0dXJuIG5ldyBqSih0LmgsdC5jLHQubCx0Lm9wYWNpdHkpO2lmKHQgaW5zdGFuY2VvZiBSSnx8KHQ9TkoodCkpLDA9PT10LmEmJjA9PT10LmIpcmV0dXJuIG5ldyBqSihOYU4sMDx0LmwmJnQubDwxMDA/MDpOYU4sdC5sLHQub3BhY2l0eSk7dmFyIGU9TWF0aC5hdGFuMih0LmIsdC5hKSpBSjtyZXR1cm4gbmV3IGpKKGU8MD9lKzM2MDplLE1hdGguc3FydCh0LmEqdC5hK3QuYip0LmIpLHQubCx0Lm9wYWNpdHkpfWZ1bmN0aW9uIFZKKHQsZSxuLGkpe3JldHVybiAxPT09YXJndW1lbnRzLmxlbmd0aD9GSih0KTpuZXcgakoodCxlLG4sbnVsbD09aT8xOmkpfWZ1bmN0aW9uIGpKKHQsZSxuLGkpe3RoaXMuaD0rdCx0aGlzLmM9K2UsdGhpcy5sPStuLHRoaXMub3BhY2l0eT0raX1mdW5jdGlvbiBVSih0KXtpZihpc05hTih0LmgpKXJldHVybiBuZXcgUkoodC5sLDAsMCx0Lm9wYWNpdHkpO3ZhciBlPXQuaCpUSjtyZXR1cm4gbmV3IFJKKHQubCxNYXRoLmNvcyhlKSp0LmMsTWF0aC5zaW4oZSkqdC5jLHQub3BhY2l0eSl9WVooUkosT0osWFooJFose2JyaWdodGVyOmZ1bmN0aW9uKHQpe3JldHVybiBuZXcgUkoodGhpcy5sKzE4KihudWxsPT10PzE6dCksdGhpcy5hLHRoaXMuYix0aGlzLm9wYWNpdHkpfSxkYXJrZXI6ZnVuY3Rpb24odCl7cmV0dXJuIG5ldyBSSih0aGlzLmwtMTgqKG51bGw9PXQ/MTp0KSx0aGlzLmEsdGhpcy5iLHRoaXMub3BhY2l0eSl9LHJnYjpmdW5jdGlvbigpe3ZhciB0PSh0aGlzLmwrMTYpLzExNixlPWlzTmFOKHRoaXMuYSk/dDp0K3RoaXMuYS81MDAsbj1pc05hTih0aGlzLmIpP3Q6dC10aGlzLmIvMjAwO3JldHVybiBuZXcgZ0ooQkooMy4xMzM4NTYxKihlPUNKKkRKKGUpKS0xLjYxNjg2NjcqKHQ9MSpESih0KSktLjQ5MDYxNDYqKG49a0oqREoobikpKSxCSigtLjk3ODc2ODQqZSsxLjkxNjE0MTUqdCsuMDMzNDU0Km4pLEJKKC4wNzE5NDUzKmUtLjIyODk5MTQqdCsxLjQwNTI0MjcqbiksdGhpcy5vcGFjaXR5KX19KSksWVooakosVkosWFooJFose2JyaWdodGVyOmZ1bmN0aW9uKHQpe3JldHVybiBuZXcgakoodGhpcy5oLHRoaXMuYyx0aGlzLmwrMTgqKG51bGw9PXQ/MTp0KSx0aGlzLm9wYWNpdHkpfSxkYXJrZXI6ZnVuY3Rpb24odCl7cmV0dXJuIG5ldyBqSih0aGlzLmgsdGhpcy5jLHRoaXMubC0xOCoobnVsbD09dD8xOnQpLHRoaXMub3BhY2l0eSl9LHJnYjpmdW5jdGlvbigpe3JldHVybiBVSih0aGlzKS5yZ2IoKX19KSk7dmFyIEdKPS0uMjkyMjcsV0o9LS45MDY0OSxxSj0xLjk3Mjk0O2Z1bmN0aW9uIFlKKHQpe2lmKHQgaW5zdGFuY2VvZiAkSilyZXR1cm4gbmV3ICRKKHQuaCx0LnMsdC5sLHQub3BhY2l0eSk7dCBpbnN0YW5jZW9mIGdKfHwodD1mSih0KSk7dmFyIGU9dC5nLzI1NSxuPXQuYi8yNTUsaT0oLS42NTU3NjM2NjY3OTk5OTk5Km4rdC5yLzI1NSotMS43ODg0NTAzODA2LTMuNTE3Mjk4MjQzOCplKS8tNS45NjE1MTIyOTEyLHI9bi1pLG89KHFKKihlLWkpLUdKKnIpL1dKLGE9TWF0aC5zcXJ0KG8qbytyKnIpLyhxSippKigxLWkpKSxzPWE/TWF0aC5hdGFuMihvLHIpKkFKLTEyMDpOYU47cmV0dXJuIG5ldyAkSihzPDA/cyszNjA6cyxhLGksdC5vcGFjaXR5KX1mdW5jdGlvbiBYSih0LGUsbixpKXtyZXR1cm4gMT09PWFyZ3VtZW50cy5sZW5ndGg/WUoodCk6bmV3ICRKKHQsZSxuLG51bGw9PWk/MTppKX1mdW5jdGlvbiAkSih0LGUsbixpKXt0aGlzLmg9K3QsdGhpcy5zPStlLHRoaXMubD0rbix0aGlzLm9wYWNpdHk9K2l9ZnVuY3Rpb24gS0oodCxlLG4saSxyKXt2YXIgbz10KnQsYT1vKnQ7cmV0dXJuKCgxLTMqdCszKm8tYSkqZSsoNC02Km8rMyphKSpuKygxKzMqdCszKm8tMyphKSppK2EqcikvNn1mdW5jdGlvbiBaSih0KXt2YXIgZT10Lmxlbmd0aC0xO3JldHVybiBmdW5jdGlvbihuKXt2YXIgaT1uPD0wP249MDpuPj0xPyhuPTEsZS0xKTpNYXRoLmZsb29yKG4qZSkscj10W2ldLG89dFtpKzFdO3JldHVybiBLSigobi1pL2UpKmUsaT4wP3RbaS0xXToyKnItbyxyLG8saTxlLTE/dFtpKzJdOjIqby1yKX19ZnVuY3Rpb24gSkoodCl7dmFyIGU9dC5sZW5ndGg7cmV0dXJuIGZ1bmN0aW9uKG4pe3ZhciBpPU1hdGguZmxvb3IoKChuJT0xKTwwPysrbjpuKSplKTtyZXR1cm4gS0ooKG4taS9lKSplLHRbKGkrZS0xKSVlXSx0W2klZV0sdFsoaSsxKSVlXSx0WyhpKzIpJWVdKX19ZnVuY3Rpb24gUUoodCl7cmV0dXJuIGZ1bmN0aW9uKCl7cmV0dXJuIHR9fWZ1bmN0aW9uIHRRKHQsZSl7cmV0dXJuIGZ1bmN0aW9uKG4pe3JldHVybiB0K24qZX19ZnVuY3Rpb24gZVEodCxlKXt2YXIgbj1lLXQ7cmV0dXJuIG4/dFEodCxuPjE4MHx8bjwtMTgwP24tMzYwKk1hdGgucm91bmQobi8zNjApOm4pOlFKKGlzTmFOKHQpP2U6dCl9ZnVuY3Rpb24gblEodCxlKXt2YXIgbj1lLXQ7cmV0dXJuIG4/dFEodCxuKTpRSihpc05hTih0KT9lOnQpfVlaKCRKLFhKLFhaKCRaLHticmlnaHRlcjpmdW5jdGlvbih0KXtyZXR1cm4gdD1udWxsPT10P1paOk1hdGgucG93KFpaLHQpLG5ldyAkSih0aGlzLmgsdGhpcy5zLHRoaXMubCp0LHRoaXMub3BhY2l0eSl9LGRhcmtlcjpmdW5jdGlvbih0KXtyZXR1cm4gdD1udWxsPT10P0taOk1hdGgucG93KEtaLHQpLG5ldyAkSih0aGlzLmgsdGhpcy5zLHRoaXMubCp0LHRoaXMub3BhY2l0eSl9LHJnYjpmdW5jdGlvbigpe3ZhciB0PWlzTmFOKHRoaXMuaCk/MDoodGhpcy5oKzEyMCkqVEosZT0rdGhpcy5sLG49aXNOYU4odGhpcy5zKT8wOnRoaXMucyplKigxLWUpLGk9TWF0aC5jb3ModCkscj1NYXRoLnNpbih0KTtyZXR1cm4gbmV3IGdKKDI1NSooZStuKigtLjE0ODYxKmkrMS43ODI3NypyKSksMjU1KihlK24qKEdKKmkrV0oqcikpLDI1NSooZStuKihxSippKSksdGhpcy5vcGFjaXR5KX19KSk7dmFyIGlRPShmdW5jdGlvbiB0KGUpe3ZhciBuPShmdW5jdGlvbiBpKHQpe3JldHVybiAxPT0odD0rdCk/blE6ZnVuY3Rpb24oZSxuKXtyZXR1cm4gbi1lPyhmdW5jdGlvbiBpKHQsZSxuKXtyZXR1cm4gdD1NYXRoLnBvdyh0LG4pLGU9TWF0aC5wb3coZSxuKS10LG49MS9uLGZ1bmN0aW9uKGkpe3JldHVybiBNYXRoLnBvdyh0K2kqZSxuKX19KShlLG4sdCk6UUooaXNOYU4oZSk/bjplKX19KShlKTtmdW5jdGlvbiByKHQsZSl7dmFyIGk9bigodD1tSih0KSkuciwoZT1tSihlKSkucikscj1uKHQuZyxlLmcpLG89bih0LmIsZS5iKSxhPW5RKHQub3BhY2l0eSxlLm9wYWNpdHkpO3JldHVybiBmdW5jdGlvbihlKXtyZXR1cm4gdC5yPWkoZSksdC5nPXIoZSksdC5iPW8oZSksdC5vcGFjaXR5PWEoZSksdCsiIn19cmV0dXJuIHIuZ2FtbWE9dCxyfSkoMSk7ZnVuY3Rpb24gclEodCl7cmV0dXJuIGZ1bmN0aW9uKGUpe3ZhciBuLGkscj1lLmxlbmd0aCxvPW5ldyBBcnJheShyKSxhPW5ldyBBcnJheShyKSxzPW5ldyBBcnJheShyKTtmb3Iobj0wO248cjsrK24paT1tSihlW25dKSxvW25dPWkucnx8MCxhW25dPWkuZ3x8MCxzW25dPWkuYnx8MDtyZXR1cm4gbz10KG8pLGE9dChhKSxzPXQocyksaS5vcGFjaXR5PTEsZnVuY3Rpb24odCl7cmV0dXJuIGkucj1vKHQpLGkuZz1hKHQpLGkuYj1zKHQpLGkrIiJ9fX12YXIgb1E9clEoWkopLGFRPXJRKEpKKTtmdW5jdGlvbiBzUSh0LGUpe3ZhciBuLGk9ZT9lLmxlbmd0aDowLHI9dD9NYXRoLm1pbihpLHQubGVuZ3RoKTowLG89bmV3IEFycmF5KHIpLGE9bmV3IEFycmF5KGkpO2ZvcihuPTA7bjxyOysrbilvW25dPWZRKHRbbl0sZVtuXSk7Zm9yKDtuPGk7KytuKWFbbl09ZVtuXTtyZXR1cm4gZnVuY3Rpb24odCl7Zm9yKG49MDtuPHI7KytuKWFbbl09b1tuXSh0KTtyZXR1cm4gYX19ZnVuY3Rpb24gbFEodCxlKXt2YXIgbj1uZXcgRGF0ZTtyZXR1cm4gZS09dD0rdCxmdW5jdGlvbihpKXtyZXR1cm4gbi5zZXRUaW1lKHQrZSppKSxufX1mdW5jdGlvbiBjUSh0LGUpe3JldHVybiBlLT10PSt0LGZ1bmN0aW9uKG4pe3JldHVybiB0K2Uqbn19ZnVuY3Rpb24gdVEodCxlKXt2YXIgbixpPXt9LHI9e307Zm9yKG4gaW4gbnVsbCE9PXQmJiJvYmplY3QiPT10eXBlb2YgdHx8KHQ9e30pLG51bGwhPT1lJiYib2JqZWN0Ij09dHlwZW9mIGV8fChlPXt9KSxlKW4gaW4gdD9pW25dPWZRKHRbbl0sZVtuXSk6cltuXT1lW25dO3JldHVybiBmdW5jdGlvbih0KXtmb3IobiBpbiBpKXJbbl09aVtuXSh0KTtyZXR1cm4gcn19dmFyIGhRPS9bLStdPyg/OlxkK1wuP1xkKnxcLj9cZCspKD86W2VFXVstK10/XGQrKT8vZyxkUT1uZXcgUmVnRXhwKGhRLnNvdXJjZSwiZyIpO2Z1bmN0aW9uIHBRKHQsZSl7dmFyIG4saSxyLG89aFEubGFzdEluZGV4PWRRLmxhc3RJbmRleD0wLGE9LTEscz1bXSxsPVtdO2Zvcih0Kz0iIixlKz0iIjsobj1oUS5leGVjKHQpKSYmKGk9ZFEuZXhlYyhlKSk7KShyPWkuaW5kZXgpPm8mJihyPWUuc2xpY2UobyxyKSxzW2FdP3NbYV0rPXI6c1srK2FdPXIpLChuPW5bMF0pPT09KGk9aVswXSk/c1thXT9zW2FdKz1pOnNbKythXT1pOihzWysrYV09bnVsbCxsLnB1c2goe2k6YSx4OmNRKG4saSl9KSksbz1kUS5sYXN0SW5kZXg7cmV0dXJuIG88ZS5sZW5ndGgmJihyPWUuc2xpY2Uobyksc1thXT9zW2FdKz1yOnNbKythXT1yKSxzLmxlbmd0aDwyP2xbMF0/KGZ1bmN0aW9uIGModCl7cmV0dXJuIGZ1bmN0aW9uKGUpe3JldHVybiB0KGUpKyIifX0pKGxbMF0ueCk6KGZ1bmN0aW9uIHUodCl7cmV0dXJuIGZ1bmN0aW9uKCl7cmV0dXJuIHR9fSkoZSk6KGU9bC5sZW5ndGgsZnVuY3Rpb24odCl7Zm9yKHZhciBuLGk9MDtpPGU7KytpKXNbKG49bFtpXSkuaV09bi54KHQpO3JldHVybiBzLmpvaW4oIiIpfSl9ZnVuY3Rpb24gZlEodCxlKXt2YXIgbixpPXR5cGVvZiBlO3JldHVybiBudWxsPT1lfHwiYm9vbGVhbiI9PT1pP1FKKGUpOigibnVtYmVyIj09PWk/Y1E6InN0cmluZyI9PT1pPyhuPWhKKGUpKT8oZT1uLGlRKTpwUTplIGluc3RhbmNlb2YgaEo/aVE6ZSBpbnN0YW5jZW9mIERhdGU/bFE6QXJyYXkuaXNBcnJheShlKT9zUToiZnVuY3Rpb24iIT10eXBlb2YgZS52YWx1ZU9mJiYiZnVuY3Rpb24iIT10eXBlb2YgZS50b1N0cmluZ3x8aXNOYU4oZSk/dVE6Y1EpKHQsZSl9dmFyIG1RLGdRLF9RLHlRLHZRPTE4MC9NYXRoLlBJLGJRPXt0cmFuc2xhdGVYOjAsdHJhbnNsYXRlWTowLHJvdGF0ZTowLHNrZXdYOjAsc2NhbGVYOjEsc2NhbGVZOjF9O2Z1bmN0aW9uIHhRKHQsZSxuLGkscixvKXt2YXIgYSxzLGw7cmV0dXJuKGE9TWF0aC5zcXJ0KHQqdCtlKmUpKSYmKHQvPWEsZS89YSksKGw9dCpuK2UqaSkmJihuLT10KmwsaS09ZSpsKSwocz1NYXRoLnNxcnQobipuK2kqaSkpJiYobi89cyxpLz1zLGwvPXMpLHQqaTxlKm4mJih0PS10LGU9LWUsbD0tbCxhPS1hKSx7dHJhbnNsYXRlWDpyLHRyYW5zbGF0ZVk6byxyb3RhdGU6TWF0aC5hdGFuMihlLHQpKnZRLHNrZXdYOk1hdGguYXRhbihsKSp2USxzY2FsZVg6YSxzY2FsZVk6c319ZnVuY3Rpb24gd1EodCxlLG4saSl7ZnVuY3Rpb24gcih0KXtyZXR1cm4gdC5sZW5ndGg/dC5wb3AoKSsiICI6IiJ9cmV0dXJuIGZ1bmN0aW9uKG8sYSl7dmFyIHM9W10sbD1bXTtyZXR1cm4gbz10KG8pLGE9dChhKSwoZnVuY3Rpb24gYyh0LGkscixvLGEscyl7aWYodCE9PXJ8fGkhPT1vKXt2YXIgbD1hLnB1c2goInRyYW5zbGF0ZSgiLG51bGwsZSxudWxsLG4pO3MucHVzaCh7aTpsLTQseDpjUSh0LHIpfSx7aTpsLTIseDpjUShpLG8pfSl9ZWxzZShyfHxvKSYmYS5wdXNoKCJ0cmFuc2xhdGUoIityK2UrbytuKX0pKG8udHJhbnNsYXRlWCxvLnRyYW5zbGF0ZVksYS50cmFuc2xhdGVYLGEudHJhbnNsYXRlWSxzLGwpLChmdW5jdGlvbiB1KHQsZSxuLG8pe3QhPT1lPyh0LWU+MTgwP2UrPTM2MDplLXQ+MTgwJiYodCs9MzYwKSxvLnB1c2goe2k6bi5wdXNoKHIobikrInJvdGF0ZSgiLG51bGwsaSktMix4OmNRKHQsZSl9KSk6ZSYmbi5wdXNoKHIobikrInJvdGF0ZSgiK2UraSl9KShvLnJvdGF0ZSxhLnJvdGF0ZSxzLGwpLChmdW5jdGlvbiBoKHQsZSxuLG8pe3QhPT1lP28ucHVzaCh7aTpuLnB1c2gocihuKSsic2tld1goIixudWxsLGkpLTIseDpjUSh0LGUpfSk6ZSYmbi5wdXNoKHIobikrInNrZXdYKCIrZStpKX0pKG8uc2tld1gsYS5za2V3WCxzLGwpLChmdW5jdGlvbiBkKHQsZSxuLGksbyxhKXtpZih0IT09bnx8ZSE9PWkpe3ZhciBzPW8ucHVzaChyKG8pKyJzY2FsZSgiLG51bGwsIiwiLG51bGwsIikiKTthLnB1c2goe2k6cy00LHg6Y1EodCxuKX0se2k6cy0yLHg6Y1EoZSxpKX0pfWVsc2UgMT09PW4mJjE9PT1pfHxvLnB1c2gocihvKSsic2NhbGUoIituKyIsIitpKyIpIil9KShvLnNjYWxlWCxvLnNjYWxlWSxhLnNjYWxlWCxhLnNjYWxlWSxzLGwpLG89YT1udWxsLGZ1bmN0aW9uKHQpe2Zvcih2YXIgZSxuPS0xLGk9bC5sZW5ndGg7KytuPGk7KXNbKGU9bFtuXSkuaV09ZS54KHQpO3JldHVybiBzLmpvaW4oIiIpfX19dmFyIFNRPXdRKChmdW5jdGlvbiBNUSh0KXtyZXR1cm4ibm9uZSI9PT10P2JROihtUXx8KG1RPWRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoIkRJViIpLGdRPWRvY3VtZW50LmRvY3VtZW50RWxlbWVudCxfUT1kb2N1bWVudC5kZWZhdWx0VmlldyksbVEuc3R5bGUudHJhbnNmb3JtPXQsdD1fUS5nZXRDb21wdXRlZFN0eWxlKGdRLmFwcGVuZENoaWxkKG1RKSxudWxsKS5nZXRQcm9wZXJ0eVZhbHVlKCJ0cmFuc2Zvcm0iKSxnUS5yZW1vdmVDaGlsZChtUSkseFEoKyh0PXQuc2xpY2UoNywtMSkuc3BsaXQoIiwiKSlbMF0sK3RbMV0sK3RbMl0sK3RbM10sK3RbNF0sK3RbNV0pKX0pLCJweCwgIiwicHgpIiwiZGVnKSIpLEVRPXdRKChmdW5jdGlvbiBUUSh0KXtyZXR1cm4gbnVsbD09dD9iUTooeVF8fCh5UT1kb2N1bWVudC5jcmVhdGVFbGVtZW50TlMoImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiwiZyIpKSx5US5zZXRBdHRyaWJ1dGUoInRyYW5zZm9ybSIsdCksKHQ9eVEudHJhbnNmb3JtLmJhc2VWYWwuY29uc29saWRhdGUoKSk/eFEoKHQ9dC5tYXRyaXgpLmEsdC5iLHQuYyx0LmQsdC5lLHQuZik6YlEpfSksIiwgIiwiKSIsIikiKSxBUT1NYXRoLlNRUlQyO2Z1bmN0aW9uIENRKHQpe3JldHVybigodD1NYXRoLmV4cCh0KSkrMS90KS8yfWZ1bmN0aW9uIGtRKHQpe3JldHVybiBmdW5jdGlvbihlLG4pe3ZhciBpPXQoKGU9d0ooZSkpLmgsKG49d0oobikpLmgpLHI9blEoZS5zLG4ucyksbz1uUShlLmwsbi5sKSxhPW5RKGUub3BhY2l0eSxuLm9wYWNpdHkpO3JldHVybiBmdW5jdGlvbih0KXtyZXR1cm4gZS5oPWkodCksZS5zPXIodCksZS5sPW8odCksZS5vcGFjaXR5PWEodCksZSsiIn19fXZhciBMUT1rUShlUSksUFE9a1EoblEpO2Z1bmN0aW9uIElRKHQpe3JldHVybiBmdW5jdGlvbihlLG4pe3ZhciBpPXQoKGU9VkooZSkpLmgsKG49VkoobikpLmgpLHI9blEoZS5jLG4uYyksbz1uUShlLmwsbi5sKSxhPW5RKGUub3BhY2l0eSxuLm9wYWNpdHkpO3JldHVybiBmdW5jdGlvbih0KXtyZXR1cm4gZS5oPWkodCksZS5jPXIodCksZS5sPW8odCksZS5vcGFjaXR5PWEodCksZSsiIn19fXZhciBOUT1JUShlUSksT1E9SVEoblEpO2Z1bmN0aW9uIFJRKHQpe3JldHVybihmdW5jdGlvbiBlKG4pe2Z1bmN0aW9uIGkoZSxpKXt2YXIgcj10KChlPVhKKGUpKS5oLChpPVhKKGkpKS5oKSxvPW5RKGUucyxpLnMpLGE9blEoZS5sLGkubCkscz1uUShlLm9wYWNpdHksaS5vcGFjaXR5KTtyZXR1cm4gZnVuY3Rpb24odCl7cmV0dXJuIGUuaD1yKHQpLGUucz1vKHQpLGUubD1hKE1hdGgucG93KHQsbikpLGUub3BhY2l0eT1zKHQpLGUrIiJ9fXJldHVybiBuPStuLGkuZ2FtbWE9ZSxpfSkoMSl9dmFyIHpRPVJRKGVRKSxEUT1SUShuUSksQlE9TWF0aC5QSSxIUT0yKkJRLEZRPTFlLTYsVlE9SFEtRlE7ZnVuY3Rpb24galEoKXt0aGlzLl94MD10aGlzLl95MD10aGlzLl94MT10aGlzLl95MT1udWxsLHRoaXMuXz0iIn1mdW5jdGlvbiBVUSgpe3JldHVybiBuZXcgalF9ZnVuY3Rpb24gR1EodCxlLG4pe3JldHVybihlWzBdLXRbMF0pKihuWzFdLXRbMV0pLShlWzFdLXRbMV0pKihuWzBdLXRbMF0pfWZ1bmN0aW9uIFdRKHQsZSl7cmV0dXJuIHRbMF0tZVswXXx8dFsxXS1lWzFdfWZ1bmN0aW9uIHFRKHQpe2Zvcih2YXIgZT10Lmxlbmd0aCxuPVswLDFdLGk9MixyPTI7cjxlOysrcil7Zm9yKDtpPjEmJkdRKHRbbltpLTJdXSx0W25baS0xXV0sdFtyXSk8PTA7KS0taTtuW2krK109cn1yZXR1cm4gbi5zbGljZSgwLGkpfWZ1bmN0aW9uIFlRKHQsZSxuLGkpe2lmKGlzTmFOKGUpfHxpc05hTihuKSlyZXR1cm4gdDt2YXIgcixvLGEscyxsLGMsdSxoLGQscD10Ll9yb290LGY9e2RhdGE6aX0sbT10Ll94MCxnPXQuX3kwLF89dC5feDEseT10Ll95MTtpZighcClyZXR1cm4gdC5fcm9vdD1mLHQ7Zm9yKDtwLmxlbmd0aDspaWYoKGM9ZT49KG89KG0rXykvMikpP209bzpfPW8sKHU9bj49KGE9KGcreSkvMikpP2c9YTp5PWEscj1wLCEocD1wW2g9dTw8MXxjXSkpcmV0dXJuIHJbaF09Zix0O2lmKHM9K3QuX3guY2FsbChudWxsLHAuZGF0YSksbD0rdC5feS5jYWxsKG51bGwscC5kYXRhKSxlPT09cyYmbj09PWwpcmV0dXJuIGYubmV4dD1wLHI/cltoXT1mOnQuX3Jvb3Q9Zix0O2Rve3I9cj9yW2hdPW5ldyBBcnJheSg0KTp0Ll9yb290PW5ldyBBcnJheSg0KSwoYz1lPj0obz0obStfKS8yKSk/bT1vOl89bywodT1uPj0oYT0oZyt5KS8yKSk/Zz1hOnk9YX13aGlsZSgoaD11PDwxfGMpPT0oZD0obD49YSk8PDF8cz49bykpO3JldHVybiByW2RdPXAscltoXT1mLHR9ZnVuY3Rpb24gWFEodCxlLG4saSxyKXt0aGlzLm5vZGU9dCx0aGlzLngwPWUsdGhpcy55MD1uLHRoaXMueDE9aSx0aGlzLnkxPXJ9ZnVuY3Rpb24gJFEodCl7cmV0dXJuIHRbMF19ZnVuY3Rpb24gS1EodCl7cmV0dXJuIHRbMV19ZnVuY3Rpb24gWlEodCxlLG4pe3ZhciBpPW5ldyBKUShudWxsPT1lPyRROmUsbnVsbD09bj9LUTpuLE5hTixOYU4sTmFOLE5hTik7cmV0dXJuIG51bGw9PXQ/aTppLmFkZEFsbCh0KX1mdW5jdGlvbiBKUSh0LGUsbixpLHIsbyl7dGhpcy5feD10LHRoaXMuX3k9ZSx0aGlzLl94MD1uLHRoaXMuX3kwPWksdGhpcy5feDE9cix0aGlzLl95MT1vLHRoaXMuX3Jvb3Q9dm9pZCAwfWZ1bmN0aW9uIFFRKHQpe2Zvcih2YXIgZT17ZGF0YTp0LmRhdGF9LG49ZTt0PXQubmV4dDspbj1uLm5leHQ9e2RhdGE6dC5kYXRhfTtyZXR1cm4gZX1qUS5wcm90b3R5cGU9VVEucHJvdG90eXBlPXtjb25zdHJ1Y3RvcjpqUSxtb3ZlVG86ZnVuY3Rpb24odCxlKXt0aGlzLl8rPSJNIisodGhpcy5feDA9dGhpcy5feDE9K3QpKyIsIisodGhpcy5feTA9dGhpcy5feTE9K2UpfSxjbG9zZVBhdGg6ZnVuY3Rpb24oKXtudWxsIT09dGhpcy5feDEmJih0aGlzLl94MT10aGlzLl94MCx0aGlzLl95MT10aGlzLl95MCx0aGlzLl8rPSJaIil9LGxpbmVUbzpmdW5jdGlvbih0LGUpe3RoaXMuXys9IkwiKyh0aGlzLl94MT0rdCkrIiwiKyh0aGlzLl95MT0rZSl9LHF1YWRyYXRpY0N1cnZlVG86ZnVuY3Rpb24odCxlLG4saSl7dGhpcy5fKz0iUSIrICt0KyIsIisgK2UrIiwiKyh0aGlzLl94MT0rbikrIiwiKyh0aGlzLl95MT0raSl9LGJlemllckN1cnZlVG86ZnVuY3Rpb24odCxlLG4saSxyLG8pe3RoaXMuXys9IkMiKyArdCsiLCIrICtlKyIsIisgK24rIiwiKyAraSsiLCIrKHRoaXMuX3gxPStyKSsiLCIrKHRoaXMuX3kxPStvKX0sYXJjVG86ZnVuY3Rpb24odCxlLG4saSxyKXt2YXIgbz10aGlzLl94MSxhPXRoaXMuX3kxLHM9KG49K24pLSh0PSt0KSxsPShpPStpKS0oZT0rZSksYz1vLXQsdT1hLWUsaD1jKmMrdSp1O2lmKChyPStyKTwwKXRocm93IG5ldyBFcnJvcigibmVnYXRpdmUgcmFkaXVzOiAiK3IpO2lmKG51bGw9PT10aGlzLl94MSl0aGlzLl8rPSJNIisodGhpcy5feDE9dCkrIiwiKyh0aGlzLl95MT1lKTtlbHNlIGlmKGg+RlEpaWYoTWF0aC5hYnModSpzLWwqYyk+RlEmJnIpe3ZhciBkPW4tbyxwPWktYSxmPXMqcytsKmwsbT1kKmQrcCpwLGc9TWF0aC5zcXJ0KGYpLF89TWF0aC5zcXJ0KGgpLHk9cipNYXRoLnRhbigoQlEtTWF0aC5hY29zKChmK2gtbSkvKDIqZypfKSkpLzIpLHY9eS9fLGI9eS9nO01hdGguYWJzKHYtMSk+RlEmJih0aGlzLl8rPSJMIisodCt2KmMpKyIsIisoZSt2KnUpKSx0aGlzLl8rPSJBIityKyIsIityKyIsMCwwLCIrICsodSpkPmMqcCkrIiwiKyh0aGlzLl94MT10K2IqcykrIiwiKyh0aGlzLl95MT1lK2IqbCl9ZWxzZSB0aGlzLl8rPSJMIisodGhpcy5feDE9dCkrIiwiKyh0aGlzLl95MT1lKX0sYXJjOmZ1bmN0aW9uKHQsZSxuLGkscixvKXt0PSt0LGU9K2U7dmFyIGE9KG49K24pKk1hdGguY29zKGkpLHM9bipNYXRoLnNpbihpKSxsPXQrYSxjPWUrcyx1PTFebyxoPW8/aS1yOnItaTtpZihuPDApdGhyb3cgbmV3IEVycm9yKCJuZWdhdGl2ZSByYWRpdXM6ICIrbik7bnVsbD09PXRoaXMuX3gxP3RoaXMuXys9Ik0iK2wrIiwiK2M6KE1hdGguYWJzKHRoaXMuX3gxLWwpPkZRfHxNYXRoLmFicyh0aGlzLl95MS1jKT5GUSkmJih0aGlzLl8rPSJMIitsKyIsIitjKSxuJiYoaDwwJiYoaD1oJUhRK0hRKSxoPlZRP3RoaXMuXys9IkEiK24rIiwiK24rIiwwLDEsIit1KyIsIisodC1hKSsiLCIrKGUtcykrIkEiK24rIiwiK24rIiwwLDEsIit1KyIsIisodGhpcy5feDE9bCkrIiwiKyh0aGlzLl95MT1jKTpoPkZRJiYodGhpcy5fKz0iQSIrbisiLCIrbisiLDAsIisgKyhoPj1CUSkrIiwiK3UrIiwiKyh0aGlzLl94MT10K24qTWF0aC5jb3MocikpKyIsIisodGhpcy5feTE9ZStuKk1hdGguc2luKHIpKSkpfSxyZWN0OmZ1bmN0aW9uKHQsZSxuLGkpe3RoaXMuXys9Ik0iKyh0aGlzLl94MD10aGlzLl94MT0rdCkrIiwiKyh0aGlzLl95MD10aGlzLl95MT0rZSkrImgiKyArbisidiIrICtpKyJoIistbisiWiJ9LHRvU3RyaW5nOmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuX319O3ZhciB0MT1aUS5wcm90b3R5cGU9SlEucHJvdG90eXBlO3QxLmNvcHk9ZnVuY3Rpb24oKXt2YXIgdCxlLG49bmV3IEpRKHRoaXMuX3gsdGhpcy5feSx0aGlzLl94MCx0aGlzLl95MCx0aGlzLl94MSx0aGlzLl95MSksaT10aGlzLl9yb290O2lmKCFpKXJldHVybiBuO2lmKCFpLmxlbmd0aClyZXR1cm4gbi5fcm9vdD1RUShpKSxuO2Zvcih0PVt7c291cmNlOmksdGFyZ2V0Om4uX3Jvb3Q9bmV3IEFycmF5KDQpfV07aT10LnBvcCgpOylmb3IodmFyIHI9MDtyPDQ7KytyKShlPWkuc291cmNlW3JdKSYmKGUubGVuZ3RoP3QucHVzaCh7c291cmNlOmUsdGFyZ2V0OmkudGFyZ2V0W3JdPW5ldyBBcnJheSg0KX0pOmkudGFyZ2V0W3JdPVFRKGUpKTtyZXR1cm4gbn0sdDEuYWRkPWZ1bmN0aW9uIGUxKHQpe3ZhciBlPSt0aGlzLl94LmNhbGwobnVsbCx0KSxuPSt0aGlzLl95LmNhbGwobnVsbCx0KTtyZXR1cm4gWVEodGhpcy5jb3ZlcihlLG4pLGUsbix0KX0sdDEuYWRkQWxsPWZ1bmN0aW9uIG4xKHQpe3ZhciBlLG4saSxyLG89dC5sZW5ndGgsYT1uZXcgQXJyYXkobykscz1uZXcgQXJyYXkobyksbD0xLzAsYz0xLzAsdT0tMS8wLGg9LTEvMDtmb3Iobj0wO248bzsrK24paXNOYU4oaT0rdGhpcy5feC5jYWxsKG51bGwsZT10W25dKSl8fGlzTmFOKHI9K3RoaXMuX3kuY2FsbChudWxsLGUpKXx8KGFbbl09aSxzW25dPXIsaTxsJiYobD1pKSxpPnUmJih1PWkpLHI8YyYmKGM9cikscj5oJiYoaD1yKSk7Zm9yKHU8bCYmKGw9dGhpcy5feDAsdT10aGlzLl94MSksaDxjJiYoYz10aGlzLl95MCxoPXRoaXMuX3kxKSx0aGlzLmNvdmVyKGwsYykuY292ZXIodSxoKSxuPTA7bjxvOysrbilZUSh0aGlzLGFbbl0sc1tuXSx0W25dKTtyZXR1cm4gdGhpc30sdDEuY292ZXI9ZnVuY3Rpb24gaTEodCxlKXtpZihpc05hTih0PSt0KXx8aXNOYU4oZT0rZSkpcmV0dXJuIHRoaXM7dmFyIG49dGhpcy5feDAsaT10aGlzLl95MCxyPXRoaXMuX3gxLG89dGhpcy5feTE7aWYoaXNOYU4obikpcj0obj1NYXRoLmZsb29yKHQpKSsxLG89KGk9TWF0aC5mbG9vcihlKSkrMTtlbHNle2lmKCEobj50fHx0PnJ8fGk+ZXx8ZT5vKSlyZXR1cm4gdGhpczt2YXIgYSxzLGw9ci1uLGM9dGhpcy5fcm9vdDtzd2l0Y2gocz0oZTwoaStvKS8yKTw8MXx0PChuK3IpLzIpe2Nhc2UgMDpkb3soYT1uZXcgQXJyYXkoNCkpW3NdPWMsYz1hfXdoaWxlKG89aSsobCo9MiksdD4ocj1uK2wpfHxlPm8pO2JyZWFrO2Nhc2UgMTpkb3soYT1uZXcgQXJyYXkoNCkpW3NdPWMsYz1hfXdoaWxlKG89aSsobCo9MiksKG49ci1sKT50fHxlPm8pO2JyZWFrO2Nhc2UgMjpkb3soYT1uZXcgQXJyYXkoNCkpW3NdPWMsYz1hfXdoaWxlKGk9by0obCo9MiksdD4ocj1uK2wpfHxpPmUpO2JyZWFrO2Nhc2UgMzpkb3soYT1uZXcgQXJyYXkoNCkpW3NdPWMsYz1hfXdoaWxlKGk9by0obCo9MiksKG49ci1sKT50fHxpPmUpfXRoaXMuX3Jvb3QmJnRoaXMuX3Jvb3QubGVuZ3RoJiYodGhpcy5fcm9vdD1jKX1yZXR1cm4gdGhpcy5feDA9bix0aGlzLl95MD1pLHRoaXMuX3gxPXIsdGhpcy5feTE9byx0aGlzfSx0MS5kYXRhPWZ1bmN0aW9uIHIxKCl7dmFyIHQ9W107cmV0dXJuIHRoaXMudmlzaXQoKGZ1bmN0aW9uKGUpe2lmKCFlLmxlbmd0aClkb3t0LnB1c2goZS5kYXRhKX13aGlsZShlPWUubmV4dCl9KSksdH0sdDEuZXh0ZW50PWZ1bmN0aW9uIG8xKHQpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoP3RoaXMuY292ZXIoK3RbMF1bMF0sK3RbMF1bMV0pLmNvdmVyKCt0WzFdWzBdLCt0WzFdWzFdKTppc05hTih0aGlzLl94MCk/dm9pZCAwOltbdGhpcy5feDAsdGhpcy5feTBdLFt0aGlzLl94MSx0aGlzLl95MV1dfSx0MS5maW5kPWZ1bmN0aW9uIGExKHQsZSxuKXt2YXIgaSxyLG8sYSxzLGwsYyx1PXRoaXMuX3gwLGg9dGhpcy5feTAsZD10aGlzLl94MSxwPXRoaXMuX3kxLGY9W10sbT10aGlzLl9yb290O2ZvcihtJiZmLnB1c2gobmV3IFhRKG0sdSxoLGQscCkpLG51bGw9PW4/bj0xLzA6KHU9dC1uLGg9ZS1uLGQ9dCtuLHA9ZStuLG4qPW4pO2w9Zi5wb3AoKTspaWYoISghKG09bC5ub2RlKXx8KHI9bC54MCk+ZHx8KG89bC55MCk+cHx8KGE9bC54MSk8dXx8KHM9bC55MSk8aCkpaWYobS5sZW5ndGgpe3ZhciBnPShyK2EpLzIsXz0obytzKS8yO2YucHVzaChuZXcgWFEobVszXSxnLF8sYSxzKSxuZXcgWFEobVsyXSxyLF8sZyxzKSxuZXcgWFEobVsxXSxnLG8sYSxfKSxuZXcgWFEobVswXSxyLG8sZyxfKSksKGM9KGU+PV8pPDwxfHQ+PWcpJiYobD1mW2YubGVuZ3RoLTFdLGZbZi5sZW5ndGgtMV09ZltmLmxlbmd0aC0xLWNdLGZbZi5sZW5ndGgtMS1jXT1sKX1lbHNle3ZhciB5PXQtK3RoaXMuX3guY2FsbChudWxsLG0uZGF0YSksdj1lLSt0aGlzLl95LmNhbGwobnVsbCxtLmRhdGEpLGI9eSp5K3YqdjtpZihiPG4pe3ZhciB4PU1hdGguc3FydChuPWIpO3U9dC14LGg9ZS14LGQ9dCt4LHA9ZSt4LGk9bS5kYXRhfX1yZXR1cm4gaX0sdDEucmVtb3ZlPWZ1bmN0aW9uIHMxKHQpe2lmKGlzTmFOKG89K3RoaXMuX3guY2FsbChudWxsLHQpKXx8aXNOYU4oYT0rdGhpcy5feS5jYWxsKG51bGwsdCkpKXJldHVybiB0aGlzO3ZhciBlLG4saSxyLG8sYSxzLGwsYyx1LGgsZCxwPXRoaXMuX3Jvb3QsZj10aGlzLl94MCxtPXRoaXMuX3kwLGc9dGhpcy5feDEsXz10aGlzLl95MTtpZighcClyZXR1cm4gdGhpcztpZihwLmxlbmd0aClmb3IoOzspe2lmKChjPW8+PShzPShmK2cpLzIpKT9mPXM6Zz1zLCh1PWE+PShsPShtK18pLzIpKT9tPWw6Xz1sLGU9cCwhKHA9cFtoPXU8PDF8Y10pKXJldHVybiB0aGlzO2lmKCFwLmxlbmd0aClicmVhazsoZVtoKzEmM118fGVbaCsyJjNdfHxlW2grMyYzXSkmJihuPWUsZD1oKX1mb3IoO3AuZGF0YSE9PXQ7KWlmKGk9cCwhKHA9cC5uZXh0KSlyZXR1cm4gdGhpcztyZXR1cm4ocj1wLm5leHQpJiZkZWxldGUgcC5uZXh0LGk/KHI/aS5uZXh0PXI6ZGVsZXRlIGkubmV4dCx0aGlzKTplPyhyP2VbaF09cjpkZWxldGUgZVtoXSwocD1lWzBdfHxlWzFdfHxlWzJdfHxlWzNdKSYmcD09PShlWzNdfHxlWzJdfHxlWzFdfHxlWzBdKSYmIXAubGVuZ3RoJiYobj9uW2RdPXA6dGhpcy5fcm9vdD1wKSx0aGlzKToodGhpcy5fcm9vdD1yLHRoaXMpfSx0MS5yZW1vdmVBbGw9ZnVuY3Rpb24gbDEodCl7Zm9yKHZhciBlPTAsbj10Lmxlbmd0aDtlPG47KytlKXRoaXMucmVtb3ZlKHRbZV0pO3JldHVybiB0aGlzfSx0MS5yb290PWZ1bmN0aW9uIGMxKCl7cmV0dXJuIHRoaXMuX3Jvb3R9LHQxLnNpemU9ZnVuY3Rpb24gdTEoKXt2YXIgdD0wO3JldHVybiB0aGlzLnZpc2l0KChmdW5jdGlvbihlKXtpZighZS5sZW5ndGgpZG97Kyt0fXdoaWxlKGU9ZS5uZXh0KX0pKSx0fSx0MS52aXNpdD1mdW5jdGlvbiBoMSh0KXt2YXIgZSxuLGkscixvLGEscz1bXSxsPXRoaXMuX3Jvb3Q7Zm9yKGwmJnMucHVzaChuZXcgWFEobCx0aGlzLl94MCx0aGlzLl95MCx0aGlzLl94MSx0aGlzLl95MSkpO2U9cy5wb3AoKTspaWYoIXQobD1lLm5vZGUsaT1lLngwLHI9ZS55MCxvPWUueDEsYT1lLnkxKSYmbC5sZW5ndGgpe3ZhciBjPShpK28pLzIsdT0ocithKS8yOyhuPWxbM10pJiZzLnB1c2gobmV3IFhRKG4sYyx1LG8sYSkpLChuPWxbMl0pJiZzLnB1c2gobmV3IFhRKG4saSx1LGMsYSkpLChuPWxbMV0pJiZzLnB1c2gobmV3IFhRKG4sYyxyLG8sdSkpLChuPWxbMF0pJiZzLnB1c2gobmV3IFhRKG4saSxyLGMsdSkpfXJldHVybiB0aGlzfSx0MS52aXNpdEFmdGVyPWZ1bmN0aW9uIGQxKHQpe3ZhciBlLG49W10saT1bXTtmb3IodGhpcy5fcm9vdCYmbi5wdXNoKG5ldyBYUSh0aGlzLl9yb290LHRoaXMuX3gwLHRoaXMuX3kwLHRoaXMuX3gxLHRoaXMuX3kxKSk7ZT1uLnBvcCgpOyl7dmFyIHI9ZS5ub2RlO2lmKHIubGVuZ3RoKXt2YXIgbyxhPWUueDAscz1lLnkwLGw9ZS54MSxjPWUueTEsdT0oYStsKS8yLGg9KHMrYykvMjsobz1yWzBdKSYmbi5wdXNoKG5ldyBYUShvLGEscyx1LGgpKSwobz1yWzFdKSYmbi5wdXNoKG5ldyBYUShvLHUscyxsLGgpKSwobz1yWzJdKSYmbi5wdXNoKG5ldyBYUShvLGEsaCx1LGMpKSwobz1yWzNdKSYmbi5wdXNoKG5ldyBYUShvLHUsaCxsLGMpKX1pLnB1c2goZSl9Zm9yKDtlPWkucG9wKCk7KXQoZS5ub2RlLGUueDAsZS55MCxlLngxLGUueTEpO3JldHVybiB0aGlzfSx0MS54PWZ1bmN0aW9uIHAxKHQpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyh0aGlzLl94PXQsdGhpcyk6dGhpcy5feH0sdDEueT1mdW5jdGlvbiBmMSh0KXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8odGhpcy5feT10LHRoaXMpOnRoaXMuX3l9O3ZhciBtMT1bXS5zbGljZSxnMT17fTtmdW5jdGlvbiBfMSh0KXt0aGlzLl9zaXplPXQsdGhpcy5fY2FsbD10aGlzLl9lcnJvcj1udWxsLHRoaXMuX3Rhc2tzPVtdLHRoaXMuX2RhdGE9W10sdGhpcy5fd2FpdGluZz10aGlzLl9hY3RpdmU9dGhpcy5fZW5kZWQ9dGhpcy5fc3RhcnQ9MH1mdW5jdGlvbiB5MSh0KXtpZighdC5fc3RhcnQpdHJ5eyEoZnVuY3Rpb24gZSh0KXtmb3IoO3QuX3N0YXJ0PXQuX3dhaXRpbmcmJnQuX2FjdGl2ZTx0Ll9zaXplOyl7dmFyIGU9dC5fZW5kZWQrdC5fYWN0aXZlLG49dC5fdGFza3NbZV0saT1uLmxlbmd0aC0xLHI9bltpXTtuW2ldPXYxKHQsZSksLS10Ll93YWl0aW5nLCsrdC5fYWN0aXZlLG49ci5hcHBseShudWxsLG4pLHQuX3Rhc2tzW2VdJiYodC5fdGFza3NbZV09bnx8ZzEpfX0pKHQpfWNhdGNoKGUpe2lmKHQuX3Rhc2tzW3QuX2VuZGVkK3QuX2FjdGl2ZS0xXSliMSh0LGUpO2Vsc2UgaWYoIXQuX2RhdGEpdGhyb3cgZX19ZnVuY3Rpb24gdjEodCxlKXtyZXR1cm4gZnVuY3Rpb24obixpKXt0Ll90YXNrc1tlXSYmKC0tdC5fYWN0aXZlLCsrdC5fZW5kZWQsdC5fdGFza3NbZV09bnVsbCxudWxsPT10Ll9lcnJvciYmKG51bGwhPW4/YjEodCxuKToodC5fZGF0YVtlXT1pLHQuX3dhaXRpbmc/eTEodCk6eDEodCkpKSl9fWZ1bmN0aW9uIGIxKHQsZSl7dmFyIG4saT10Ll90YXNrcy5sZW5ndGg7Zm9yKHQuX2Vycm9yPWUsdC5fZGF0YT12b2lkIDAsdC5fd2FpdGluZz1OYU47LS1pPj0wOylpZigobj10Ll90YXNrc1tpXSkmJih0Ll90YXNrc1tpXT1udWxsLG4uYWJvcnQpKXRyeXtuLmFib3J0KCl9Y2F0Y2goZSl7fXQuX2FjdGl2ZT1OYU4seDEodCl9ZnVuY3Rpb24geDEodCl7aWYoIXQuX2FjdGl2ZSYmdC5fY2FsbCl7dmFyIGU9dC5fZGF0YTt0Ll9kYXRhPXZvaWQgMCx0Ll9jYWxsKHQuX2Vycm9yLGUpfX1mdW5jdGlvbiB3MSh0KXtpZihudWxsPT10KXQ9MS8wO2Vsc2UgaWYoISgodD0rdCk+PTEpKXRocm93IG5ldyBFcnJvcigiaW52YWxpZCBjb25jdXJyZW5jeSIpO3JldHVybiBuZXcgXzEodCl9ZnVuY3Rpb24gUzEoKXtyZXR1cm4gTWF0aC5yYW5kb20oKX1fMS5wcm90b3R5cGU9dzEucHJvdG90eXBlPXtjb25zdHJ1Y3RvcjpfMSxkZWZlcjpmdW5jdGlvbih0KXtpZigiZnVuY3Rpb24iIT10eXBlb2YgdCl0aHJvdyBuZXcgRXJyb3IoImludmFsaWQgY2FsbGJhY2siKTtpZih0aGlzLl9jYWxsKXRocm93IG5ldyBFcnJvcigiZGVmZXIgYWZ0ZXIgYXdhaXQiKTtpZihudWxsIT10aGlzLl9lcnJvcilyZXR1cm4gdGhpczt2YXIgZT1tMS5jYWxsKGFyZ3VtZW50cywxKTtyZXR1cm4gZS5wdXNoKHQpLCsrdGhpcy5fd2FpdGluZyx0aGlzLl90YXNrcy5wdXNoKGUpLHkxKHRoaXMpLHRoaXN9LGFib3J0OmZ1bmN0aW9uKCl7cmV0dXJuIG51bGw9PXRoaXMuX2Vycm9yJiZiMSh0aGlzLG5ldyBFcnJvcigiYWJvcnQiKSksdGhpc30sYXdhaXQ6ZnVuY3Rpb24odCl7aWYoImZ1bmN0aW9uIiE9dHlwZW9mIHQpdGhyb3cgbmV3IEVycm9yKCJpbnZhbGlkIGNhbGxiYWNrIik7aWYodGhpcy5fY2FsbCl0aHJvdyBuZXcgRXJyb3IoIm11bHRpcGxlIGF3YWl0Iik7cmV0dXJuIHRoaXMuX2NhbGw9ZnVuY3Rpb24oZSxuKXt0LmFwcGx5KG51bGwsW2VdLmNvbmNhdChuKSl9LHgxKHRoaXMpLHRoaXN9LGF3YWl0QWxsOmZ1bmN0aW9uKHQpe2lmKCJmdW5jdGlvbiIhPXR5cGVvZiB0KXRocm93IG5ldyBFcnJvcigiaW52YWxpZCBjYWxsYmFjayIpO2lmKHRoaXMuX2NhbGwpdGhyb3cgbmV3IEVycm9yKCJtdWx0aXBsZSBhd2FpdCIpO3JldHVybiB0aGlzLl9jYWxsPXQseDEodGhpcyksdGhpc319O3ZhciBNMT0oZnVuY3Rpb24gdChlKXtmdW5jdGlvbiBuKHQsbil7cmV0dXJuIHQ9bnVsbD09dD8wOit0LG49bnVsbD09bj8xOituLDE9PT1hcmd1bWVudHMubGVuZ3RoPyhuPXQsdD0wKTpuLT10LGZ1bmN0aW9uKCl7cmV0dXJuIGUoKSpuK3R9fXJldHVybiBuLnNvdXJjZT10LG59KShTMSksRTE9KGZ1bmN0aW9uIHQoZSl7ZnVuY3Rpb24gbih0LG4pe3ZhciBpLHI7cmV0dXJuIHQ9bnVsbD09dD8wOit0LG49bnVsbD09bj8xOituLGZ1bmN0aW9uKCl7dmFyIG87aWYobnVsbCE9aSlvPWksaT1udWxsO2Vsc2UgZG97aT0yKmUoKS0xLG89MiplKCktMSxyPWkqaStvKm99d2hpbGUoIXJ8fHI+MSk7cmV0dXJuIHQrbipvKk1hdGguc3FydCgtMipNYXRoLmxvZyhyKS9yKX19cmV0dXJuIG4uc291cmNlPXQsbn0pKFMxKSxUMT0oZnVuY3Rpb24gdChlKXtmdW5jdGlvbiBuKCl7dmFyIHQ9RTEuc291cmNlKGUpLmFwcGx5KHRoaXMsYXJndW1lbnRzKTtyZXR1cm4gZnVuY3Rpb24oKXtyZXR1cm4gTWF0aC5leHAodCgpKX19cmV0dXJuIG4uc291cmNlPXQsbn0pKFMxKSxBMT0oZnVuY3Rpb24gdChlKXtmdW5jdGlvbiBuKHQpe3JldHVybiBmdW5jdGlvbigpe2Zvcih2YXIgbj0wLGk9MDtpPHQ7KytpKW4rPWUoKTtyZXR1cm4gbn19cmV0dXJuIG4uc291cmNlPXQsbn0pKFMxKSxDMT0oZnVuY3Rpb24gdChlKXtmdW5jdGlvbiBuKHQpe3ZhciBuPUExLnNvdXJjZShlKSh0KTtyZXR1cm4gZnVuY3Rpb24oKXtyZXR1cm4gbigpL3R9fXJldHVybiBuLnNvdXJjZT10LG59KShTMSksazE9KGZ1bmN0aW9uIHQoZSl7ZnVuY3Rpb24gbih0KXtyZXR1cm4gZnVuY3Rpb24oKXtyZXR1cm4tTWF0aC5sb2coMS1lKCkpL3R9fXJldHVybiBuLnNvdXJjZT10LG59KShTMSk7ZnVuY3Rpb24gTDEodCxlKXt2YXIgbixpLHIsbyxhPWxjKCJiZWZvcmVzZW5kIiwicHJvZ3Jlc3MiLCJsb2FkIiwiZXJyb3IiKSxzPXhnKCksbD1uZXcgWE1MSHR0cFJlcXVlc3QsYz1udWxsLHU9bnVsbCxoPTA7ZnVuY3Rpb24gZCh0KXt2YXIgZSxpPWwuc3RhdHVzO2lmKCFpJiYoZnVuY3Rpb24gbyh0KXt2YXIgZT10LnJlc3BvbnNlVHlwZTtyZXR1cm4gZSYmInRleHQiIT09ZT90LnJlc3BvbnNlOnQucmVzcG9uc2VUZXh0fSkobCl8fGk+PTIwMCYmaTwzMDB8fDMwND09PWkpe2lmKHIpdHJ5e2U9ci5jYWxsKG4sbCl9Y2F0Y2godCl7cmV0dXJuIHZvaWQgYS5jYWxsKCJlcnJvciIsbix0KX1lbHNlIGU9bDthLmNhbGwoImxvYWQiLG4sZSl9ZWxzZSBhLmNhbGwoImVycm9yIixuLHQpfWlmKCJ1bmRlZmluZWQiIT10eXBlb2YgWERvbWFpblJlcXVlc3QmJiEoIndpdGhDcmVkZW50aWFscyJpbiBsKSYmL14oaHR0cChzKT86KT9cL1wvLy50ZXN0KHQpJiYobD1uZXcgWERvbWFpblJlcXVlc3QpLCJvbmxvYWQiaW4gbD9sLm9ubG9hZD1sLm9uZXJyb3I9bC5vbnRpbWVvdXQ9ZDpsLm9ucmVhZHlzdGF0ZWNoYW5nZT1mdW5jdGlvbih0KXtsLnJlYWR5U3RhdGU+MyYmZCh0KX0sbC5vbnByb2dyZXNzPWZ1bmN0aW9uKHQpe2EuY2FsbCgicHJvZ3Jlc3MiLG4sdCl9LG49e2hlYWRlcjpmdW5jdGlvbih0LGUpe3JldHVybiB0PSh0KyIiKS50b0xvd2VyQ2FzZSgpLGFyZ3VtZW50cy5sZW5ndGg8Mj9zLmdldCh0KToobnVsbD09ZT9zLnJlbW92ZSh0KTpzLnNldCh0LGUrIiIpLG4pfSxtaW1lVHlwZTpmdW5jdGlvbih0KXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8oaT1udWxsPT10P251bGw6dCsiIixuKTppfSxyZXNwb25zZVR5cGU6ZnVuY3Rpb24odCl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KG89dCxuKTpvfSx0aW1lb3V0OmZ1bmN0aW9uKHQpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyhoPSt0LG4pOmh9LHVzZXI6ZnVuY3Rpb24odCl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg8MT9jOihjPW51bGw9PXQ/bnVsbDp0KyIiLG4pfSxwYXNzd29yZDpmdW5jdGlvbih0KXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aDwxP3U6KHU9bnVsbD09dD9udWxsOnQrIiIsbil9LHJlc3BvbnNlOmZ1bmN0aW9uKHQpe3JldHVybiByPXQsbn0sZ2V0OmZ1bmN0aW9uKHQsZSl7cmV0dXJuIG4uc2VuZCgiR0VUIix0LGUpfSxwb3N0OmZ1bmN0aW9uKHQsZSl7cmV0dXJuIG4uc2VuZCgiUE9TVCIsdCxlKX0sc2VuZDpmdW5jdGlvbihlLHIsZCl7cmV0dXJuIGwub3BlbihlLHQsITAsYyx1KSxudWxsPT1pfHxzLmhhcygiYWNjZXB0Iil8fHMuc2V0KCJhY2NlcHQiLGkrIiwqLyoiKSxsLnNldFJlcXVlc3RIZWFkZXImJnMuZWFjaCgoZnVuY3Rpb24odCxlKXtsLnNldFJlcXVlc3RIZWFkZXIoZSx0KX0pKSxudWxsIT1pJiZsLm92ZXJyaWRlTWltZVR5cGUmJmwub3ZlcnJpZGVNaW1lVHlwZShpKSxudWxsIT1vJiYobC5yZXNwb25zZVR5cGU9byksaD4wJiYobC50aW1lb3V0PWgpLG51bGw9PWQmJiJmdW5jdGlvbiI9PXR5cGVvZiByJiYoZD1yLHI9bnVsbCksbnVsbCE9ZCYmMT09PWQubGVuZ3RoJiYoZD0oZnVuY3Rpb24gcCh0KXtyZXR1cm4gZnVuY3Rpb24oZSxuKXt0KG51bGw9PWU/bjpudWxsKX19KShkKSksbnVsbCE9ZCYmbi5vbigiZXJyb3IiLGQpLm9uKCJsb2FkIiwoZnVuY3Rpb24odCl7ZChudWxsLHQpfSkpLGEuY2FsbCgiYmVmb3Jlc2VuZCIsbixsKSxsLnNlbmQobnVsbD09cj9udWxsOnIpLG59LGFib3J0OmZ1bmN0aW9uKCl7cmV0dXJuIGwuYWJvcnQoKSxufSxvbjpmdW5jdGlvbigpe3ZhciB0PWEub24uYXBwbHkoYSxhcmd1bWVudHMpO3JldHVybiB0PT09YT9uOnR9fSxudWxsIT1lKXtpZigiZnVuY3Rpb24iIT10eXBlb2YgZSl0aHJvdyBuZXcgRXJyb3IoImludmFsaWQgY2FsbGJhY2s6ICIrZSk7cmV0dXJuIG4uZ2V0KGUpfXJldHVybiBufWZ1bmN0aW9uIFAxKHQsZSl7cmV0dXJuIGZ1bmN0aW9uKG4saSl7dmFyIHI9TDEobikubWltZVR5cGUodCkucmVzcG9uc2UoZSk7aWYobnVsbCE9aSl7aWYoImZ1bmN0aW9uIiE9dHlwZW9mIGkpdGhyb3cgbmV3IEVycm9yKCJpbnZhbGlkIGNhbGxiYWNrOiAiK2kpO3JldHVybiByLmdldChpKX1yZXR1cm4gcn19dmFyIEkxPVAxKCJ0ZXh0L2h0bWwiLChmdW5jdGlvbih0KXtyZXR1cm4gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKS5jcmVhdGVDb250ZXh0dWFsRnJhZ21lbnQodC5yZXNwb25zZVRleHQpfSkpLE4xPVAxKCJhcHBsaWNhdGlvbi9qc29uIiwoZnVuY3Rpb24odCl7cmV0dXJuIEpTT04ucGFyc2UodC5yZXNwb25zZVRleHQpfSkpLE8xPVAxKCJ0ZXh0L3BsYWluIiwoZnVuY3Rpb24odCl7cmV0dXJuIHQucmVzcG9uc2VUZXh0fSkpLFIxPVAxKCJhcHBsaWNhdGlvbi94bWwiLChmdW5jdGlvbih0KXt2YXIgZT10LnJlc3BvbnNlWE1MO2lmKCFlKXRocm93IG5ldyBFcnJvcigicGFyc2UgZXJyb3IiKTtyZXR1cm4gZX0pKTtmdW5jdGlvbiB6MSh0LGUpe3JldHVybiBmdW5jdGlvbihuLGkscil7YXJndW1lbnRzLmxlbmd0aDwzJiYocj1pLGk9bnVsbCk7dmFyIG89TDEobikubWltZVR5cGUodCk7cmV0dXJuIG8ucm93PWZ1bmN0aW9uKHQpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoP28ucmVzcG9uc2UoRDEoZSxpPXQpKTppfSxvLnJvdyhpKSxyP28uZ2V0KHIpOm99fWZ1bmN0aW9uIEQxKHQsZSl7cmV0dXJuIGZ1bmN0aW9uKG4pe3JldHVybiB0KG4ucmVzcG9uc2VUZXh0LGUpfX12YXIgQjE9ejEoInRleHQvY3N2IixaZyksSDE9ejEoInRleHQvdGFiLXNlcGFyYXRlZC12YWx1ZXMiLG9fKTtmdW5jdGlvbiBGMSh0LGUpe3JldHVybiB0PGU/LTE6dD5lPzE6dD49ZT8wOk5hTn1mdW5jdGlvbiBWMSh0KXtyZXR1cm4gMT09PXQubGVuZ3RoJiYodD0oZnVuY3Rpb24gZSh0KXtyZXR1cm4gZnVuY3Rpb24oZSxuKXtyZXR1cm4gRjEodChlKSxuKX19KSh0KSkse2xlZnQ6ZnVuY3Rpb24oZSxuLGkscil7Zm9yKG51bGw9PWkmJihpPTApLG51bGw9PXImJihyPWUubGVuZ3RoKTtpPHI7KXt2YXIgbz1pK3I+Pj4xO3QoZVtvXSxuKTwwP2k9bysxOnI9b31yZXR1cm4gaX0scmlnaHQ6ZnVuY3Rpb24oZSxuLGkscil7Zm9yKG51bGw9PWkmJihpPTApLG51bGw9PXImJihyPWUubGVuZ3RoKTtpPHI7KXt2YXIgbz1pK3I+Pj4xO3QoZVtvXSxuKT4wP3I9bzppPW8rMX1yZXR1cm4gaX19fXZhciBqMT1WMShGMSkucmlnaHQ7ZnVuY3Rpb24gVTEodCl7cmV0dXJuIG51bGw9PT10P05hTjordH12YXIgRzE9TWF0aC5zcXJ0KDUwKSxXMT1NYXRoLnNxcnQoMTApLHExPU1hdGguc3FydCgyKTtmdW5jdGlvbiBZMSh0LGUsbil7dmFyIGkscixvLGEscz0tMTtpZihuPStuLCh0PSt0KT09KGU9K2UpJiZuPjApcmV0dXJuW3RdO2lmKChpPWU8dCkmJihyPXQsdD1lLGU9ciksMD09PShhPVgxKHQsZSxuKSl8fCFpc0Zpbml0ZShhKSlyZXR1cm5bXTtpZihhPjApZm9yKHQ9TWF0aC5jZWlsKHQvYSksZT1NYXRoLmZsb29yKGUvYSksbz1uZXcgQXJyYXkocj1NYXRoLmNlaWwoZS10KzEpKTsrK3M8cjspb1tzXT0odCtzKSphO2Vsc2UgZm9yKHQ9TWF0aC5mbG9vcih0KmEpLGU9TWF0aC5jZWlsKGUqYSksbz1uZXcgQXJyYXkocj1NYXRoLmNlaWwodC1lKzEpKTsrK3M8cjspb1tzXT0odC1zKS9hO3JldHVybiBpJiZvLnJldmVyc2UoKSxvfWZ1bmN0aW9uIFgxKHQsZSxuKXt2YXIgaT0oZS10KS9NYXRoLm1heCgwLG4pLHI9TWF0aC5mbG9vcihNYXRoLmxvZyhpKS9NYXRoLkxOMTApLG89aS9NYXRoLnBvdygxMCxyKTtyZXR1cm4gcj49MD8obz49RzE/MTA6bz49VzE/NTpvPj1xMT8yOjEpKk1hdGgucG93KDEwLHIpOi1NYXRoLnBvdygxMCwtcikvKG8+PUcxPzEwOm8+PVcxPzU6bz49cTE/MjoxKX1mdW5jdGlvbiAkMSh0LGUsbil7dmFyIGk9TWF0aC5hYnMoZS10KS9NYXRoLm1heCgwLG4pLHI9TWF0aC5wb3coMTAsTWF0aC5mbG9vcihNYXRoLmxvZyhpKS9NYXRoLkxOMTApKSxvPWkvcjtyZXR1cm4gbz49RzE/cio9MTA6bz49VzE/cio9NTpvPj1xMSYmKHIqPTIpLGU8dD8tcjpyfWZ1bmN0aW9uIEsxKHQsZSxuKXtpZihudWxsPT1uJiYobj1VMSksaT10Lmxlbmd0aCl7aWYoKGU9K2UpPD0wfHxpPDIpcmV0dXJuK24odFswXSwwLHQpO2lmKGU+PTEpcmV0dXJuK24odFtpLTFdLGktMSx0KTt2YXIgaSxyPShpLTEpKmUsbz1NYXRoLmZsb29yKHIpLGE9K24odFtvXSxvLHQpO3JldHVybiBhKygrbih0W28rMV0sbysxLHQpLWEpKihyLW8pfX12YXIgWjE9IiQiO2Z1bmN0aW9uIEoxKCl7fWZ1bmN0aW9uIFExKHQsZSl7dmFyIG49bmV3IEoxO2lmKHQgaW5zdGFuY2VvZiBKMSl0LmVhY2goKGZ1bmN0aW9uKHQsZSl7bi5zZXQoZSx0KX0pKTtlbHNlIGlmKEFycmF5LmlzQXJyYXkodCkpe3ZhciBpLHI9LTEsbz10Lmxlbmd0aDtpZihudWxsPT1lKWZvcig7KytyPG87KW4uc2V0KHIsdFtyXSk7ZWxzZSBmb3IoOysrcjxvOyluLnNldChlKGk9dFtyXSxyLHQpLGkpfWVsc2UgaWYodClmb3IodmFyIGEgaW4gdCluLnNldChhLHRbYV0pO3JldHVybiBufWZ1bmN0aW9uIHQwKCl7fUoxLnByb3RvdHlwZT1RMS5wcm90b3R5cGU9e2NvbnN0cnVjdG9yOkoxLGhhczpmdW5jdGlvbih0KXtyZXR1cm4gWjErdCBpbiB0aGlzfSxnZXQ6ZnVuY3Rpb24odCl7cmV0dXJuIHRoaXNbWjErdF19LHNldDpmdW5jdGlvbih0LGUpe3JldHVybiB0aGlzW1oxK3RdPWUsdGhpc30scmVtb3ZlOmZ1bmN0aW9uKHQpe3ZhciBlPVoxK3Q7cmV0dXJuIGUgaW4gdGhpcyYmZGVsZXRlIHRoaXNbZV19LGNsZWFyOmZ1bmN0aW9uKCl7Zm9yKHZhciB0IGluIHRoaXMpdFswXT09PVoxJiZkZWxldGUgdGhpc1t0XX0sa2V5czpmdW5jdGlvbigpe3ZhciB0PVtdO2Zvcih2YXIgZSBpbiB0aGlzKWVbMF09PT1aMSYmdC5wdXNoKGUuc2xpY2UoMSkpO3JldHVybiB0fSx2YWx1ZXM6ZnVuY3Rpb24oKXt2YXIgdD1bXTtmb3IodmFyIGUgaW4gdGhpcyllWzBdPT09WjEmJnQucHVzaCh0aGlzW2VdKTtyZXR1cm4gdH0sZW50cmllczpmdW5jdGlvbigpe3ZhciB0PVtdO2Zvcih2YXIgZSBpbiB0aGlzKWVbMF09PT1aMSYmdC5wdXNoKHtrZXk6ZS5zbGljZSgxKSx2YWx1ZTp0aGlzW2VdfSk7cmV0dXJuIHR9LHNpemU6ZnVuY3Rpb24oKXt2YXIgdD0wO2Zvcih2YXIgZSBpbiB0aGlzKWVbMF09PT1aMSYmKyt0O3JldHVybiB0fSxlbXB0eTpmdW5jdGlvbigpe2Zvcih2YXIgdCBpbiB0aGlzKWlmKHRbMF09PT1aMSlyZXR1cm4hMTtyZXR1cm4hMH0sZWFjaDpmdW5jdGlvbih0KXtmb3IodmFyIGUgaW4gdGhpcyllWzBdPT09WjEmJnQodGhpc1tlXSxlLnNsaWNlKDEpLHRoaXMpfX07dmFyIGUwPVExLnByb3RvdHlwZTt0MC5wcm90b3R5cGU9e2NvbnN0cnVjdG9yOnQwLGhhczplMC5oYXMsYWRkOmZ1bmN0aW9uKHQpe3JldHVybiB0aGlzW1oxKyh0Kz0iIildPXQsdGhpc30scmVtb3ZlOmUwLnJlbW92ZSxjbGVhcjplMC5jbGVhcix2YWx1ZXM6ZTAua2V5cyxzaXplOmUwLnNpemUsZW1wdHk6ZTAuZW1wdHksZWFjaDplMC5lYWNofTt2YXIgbjA9QXJyYXkucHJvdG90eXBlLGkwPW4wLm1hcCxyMD1uMC5zbGljZSxvMD17bmFtZToiaW1wbGljaXQifTtmdW5jdGlvbiBhMCh0KXt2YXIgZT1RMSgpLG49W10saT1vMDtmdW5jdGlvbiByKHIpe3ZhciBvPXIrIiIsYT1lLmdldChvKTtpZighYSl7aWYoaSE9PW8wKXJldHVybiBpO2Uuc2V0KG8sYT1uLnB1c2gocikpfXJldHVybiB0WyhhLTEpJXQubGVuZ3RoXX1yZXR1cm4gdD1udWxsPT10P1tdOnIwLmNhbGwodCksci5kb21haW49ZnVuY3Rpb24odCl7aWYoIWFyZ3VtZW50cy5sZW5ndGgpcmV0dXJuIG4uc2xpY2UoKTtuPVtdLGU9UTEoKTtmb3IodmFyIGksbyxhPS0xLHM9dC5sZW5ndGg7KythPHM7KWUuaGFzKG89KGk9dFthXSkrIiIpfHxlLnNldChvLG4ucHVzaChpKSk7cmV0dXJuIHJ9LHIucmFuZ2U9ZnVuY3Rpb24oZSl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KHQ9cjAuY2FsbChlKSxyKTp0LnNsaWNlKCl9LHIudW5rbm93bj1mdW5jdGlvbih0KXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8oaT10LHIpOml9LHIuY29weT1mdW5jdGlvbigpe3JldHVybiBhMCgpLmRvbWFpbihuKS5yYW5nZSh0KS51bmtub3duKGkpfSxyfWZ1bmN0aW9uIHMwKCl7dmFyIHQsZSxuPWEwKCkudW5rbm93bih2b2lkIDApLGk9bi5kb21haW4scj1uLnJhbmdlLG89WzAsMV0sYT0hMSxzPTAsbD0wLGM9LjU7ZnVuY3Rpb24gdSgpe3ZhciBuPWkoKS5sZW5ndGgsdT1vWzFdPG9bMF0saD1vW3UtMF0sZD1vWzEtdV07dD0oZC1oKS9NYXRoLm1heCgxLG4tcysyKmwpLGEmJih0PU1hdGguZmxvb3IodCkpLGgrPShkLWgtdCoobi1zKSkqYyxlPXQqKDEtcyksYSYmKGg9TWF0aC5yb3VuZChoKSxlPU1hdGgucm91bmQoZSkpO3ZhciBwPShmdW5jdGlvbiBmKHQsZSxuKXt0PSt0LGU9K2Usbj0ocj1hcmd1bWVudHMubGVuZ3RoKTwyPyhlPXQsdD0wLDEpOnI8Mz8xOituO2Zvcih2YXIgaT0tMSxyPTB8TWF0aC5tYXgoMCxNYXRoLmNlaWwoKGUtdCkvbikpLG89bmV3IEFycmF5KHIpOysraTxyOylvW2ldPXQraSpuO3JldHVybiBvfSkobikubWFwKChmdW5jdGlvbihlKXtyZXR1cm4gaCt0KmV9KSk7cmV0dXJuIHIodT9wLnJldmVyc2UoKTpwKX1yZXR1cm4gZGVsZXRlIG4udW5rbm93bixuLmRvbWFpbj1mdW5jdGlvbih0KXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8oaSh0KSx1KCkpOmkoKX0sbi5yYW5nZT1mdW5jdGlvbih0KXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8obz1bK3RbMF0sK3RbMV1dLHUoKSk6by5zbGljZSgpfSxuLnJhbmdlUm91bmQ9ZnVuY3Rpb24odCl7cmV0dXJuIG89Wyt0WzBdLCt0WzFdXSxhPSEwLHUoKX0sbi5iYW5kd2lkdGg9ZnVuY3Rpb24oKXtyZXR1cm4gZX0sbi5zdGVwPWZ1bmN0aW9uKCl7cmV0dXJuIHR9LG4ucm91bmQ9ZnVuY3Rpb24odCl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KGE9ISF0LHUoKSk6YX0sbi5wYWRkaW5nPWZ1bmN0aW9uKHQpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyhzPWw9TWF0aC5tYXgoMCxNYXRoLm1pbigxLHQpKSx1KCkpOnN9LG4ucGFkZGluZ0lubmVyPWZ1bmN0aW9uKHQpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyhzPU1hdGgubWF4KDAsTWF0aC5taW4oMSx0KSksdSgpKTpzfSxuLnBhZGRpbmdPdXRlcj1mdW5jdGlvbih0KXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8obD1NYXRoLm1heCgwLE1hdGgubWluKDEsdCkpLHUoKSk6bH0sbi5hbGlnbj1mdW5jdGlvbih0KXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8oYz1NYXRoLm1heCgwLE1hdGgubWluKDEsdCkpLHUoKSk6Y30sbi5jb3B5PWZ1bmN0aW9uKCl7cmV0dXJuIHMwKCkuZG9tYWluKGkoKSkucmFuZ2Uobykucm91bmQoYSkucGFkZGluZ0lubmVyKHMpLnBhZGRpbmdPdXRlcihsKS5hbGlnbihjKX0sdSgpfWZ1bmN0aW9uIGwwKHQpe3ZhciBlPXQuY29weTtyZXR1cm4gdC5wYWRkaW5nPXQucGFkZGluZ091dGVyLGRlbGV0ZSB0LnBhZGRpbmdJbm5lcixkZWxldGUgdC5wYWRkaW5nT3V0ZXIsdC5jb3B5PWZ1bmN0aW9uKCl7cmV0dXJuIGwwKGUoKSl9LHR9ZnVuY3Rpb24gYzAodCxlLG4pe3QucHJvdG90eXBlPWUucHJvdG90eXBlPW4sbi5jb25zdHJ1Y3Rvcj10fWZ1bmN0aW9uIHUwKHQsZSl7dmFyIG49T2JqZWN0LmNyZWF0ZSh0LnByb3RvdHlwZSk7Zm9yKHZhciBpIGluIGUpbltpXT1lW2ldO3JldHVybiBufWZ1bmN0aW9uIGgwKCl7fXZhciBkMD0uNyxwMD0xL2QwLGYwPSJcXHMqKFsrLV0/XFxkKylcXHMqIixtMD0iXFxzKihbKy1dP1xcZCpcXC4/XFxkKyg/OltlRV1bKy1dP1xcZCspPylcXHMqIixnMD0iXFxzKihbKy1dP1xcZCpcXC4/XFxkKyg/OltlRV1bKy1dP1xcZCspPyklXFxzKiIsXzA9L14jKFswLTlhLWZdezMsOH0pJC8seTA9bmV3IFJlZ0V4cCgiXnJnYlxcKCIrW2YwLGYwLGYwXSsiXFwpJCIpLHYwPW5ldyBSZWdFeHAoIl5yZ2JcXCgiK1tnMCxnMCxnMF0rIlxcKSQiKSxiMD1uZXcgUmVnRXhwKCJecmdiYVxcKCIrW2YwLGYwLGYwLG0wXSsiXFwpJCIpLHgwPW5ldyBSZWdFeHAoIl5yZ2JhXFwoIitbZzAsZzAsZzAsbTBdKyJcXCkkIiksdzA9bmV3IFJlZ0V4cCgiXmhzbFxcKCIrW20wLGcwLGcwXSsiXFwpJCIpLFMwPW5ldyBSZWdFeHAoIl5oc2xhXFwoIitbbTAsZzAsZzAsbTBdKyJcXCkkIiksTTA9e2FsaWNlYmx1ZToxNTc5MjM4MyxhbnRpcXVld2hpdGU6MTY0NDQzNzUsYXF1YTo2NTUzNSxhcXVhbWFyaW5lOjgzODg1NjQsYXp1cmU6MTU3OTQxNzUsYmVpZ2U6MTYxMTkyNjAsYmlzcXVlOjE2NzcwMjQ0LGJsYWNrOjAsYmxhbmNoZWRhbG1vbmQ6MTY3NzIwNDUsYmx1ZToyNTUsYmx1ZXZpb2xldDo5MDU1MjAyLGJyb3duOjEwODI0MjM0LGJ1cmx5d29vZDoxNDU5NjIzMSxjYWRldGJsdWU6NjI2NjUyOCxjaGFydHJldXNlOjgzODgzNTIsY2hvY29sYXRlOjEzNzg5NDcwLGNvcmFsOjE2NzQ0MjcyLGNvcm5mbG93ZXJibHVlOjY1OTE5ODEsY29ybnNpbGs6MTY3NzUzODgsY3JpbXNvbjoxNDQyMzEwMCxjeWFuOjY1NTM1LGRhcmtibHVlOjEzOSxkYXJrY3lhbjozNTcyMyxkYXJrZ29sZGVucm9kOjEyMDkyOTM5LGRhcmtncmF5OjExMTE5MDE3LGRhcmtncmVlbjoyNTYwMCxkYXJrZ3JleToxMTExOTAxNyxkYXJra2hha2k6MTI0MzMyNTksZGFya21hZ2VudGE6OTEwOTY0MyxkYXJrb2xpdmVncmVlbjo1NTk3OTk5LGRhcmtvcmFuZ2U6MTY3NDc1MjAsZGFya29yY2hpZDoxMDA0MDAxMixkYXJrcmVkOjkxMDk1MDQsZGFya3NhbG1vbjoxNTMwODQxMCxkYXJrc2VhZ3JlZW46OTQxOTkxOSxkYXJrc2xhdGVibHVlOjQ3MzQzNDcsZGFya3NsYXRlZ3JheTozMTAwNDk1LGRhcmtzbGF0ZWdyZXk6MzEwMDQ5NSxkYXJrdHVycXVvaXNlOjUyOTQ1LGRhcmt2aW9sZXQ6OTY5OTUzOSxkZWVwcGluazoxNjcxNjk0NyxkZWVwc2t5Ymx1ZTo0OTE1MSxkaW1ncmF5OjY5MDgyNjUsZGltZ3JleTo2OTA4MjY1LGRvZGdlcmJsdWU6MjAwMzE5OSxmaXJlYnJpY2s6MTE2NzQxNDYsZmxvcmFsd2hpdGU6MTY3NzU5MjAsZm9yZXN0Z3JlZW46MjI2Mzg0MixmdWNoc2lhOjE2NzExOTM1LGdhaW5zYm9ybzoxNDQ3NDQ2MCxnaG9zdHdoaXRlOjE2MzE2NjcxLGdvbGQ6MTY3NjY3MjAsZ29sZGVucm9kOjE0MzI5MTIwLGdyYXk6ODQyMTUwNCxncmVlbjozMjc2OCxncmVlbnllbGxvdzoxMTQwMzA1NSxncmV5Ojg0MjE1MDQsaG9uZXlkZXc6MTU3OTQxNjAsaG90cGluazoxNjczODc0MCxpbmRpYW5yZWQ6MTM0NTg1MjQsaW5kaWdvOjQ5MTUzMzAsaXZvcnk6MTY3NzcyMDAsa2hha2k6MTU3ODc2NjAsbGF2ZW5kZXI6MTUxMzI0MTAsbGF2ZW5kZXJibHVzaDoxNjc3MzM2NSxsYXduZ3JlZW46ODE5MDk3NixsZW1vbmNoaWZmb246MTY3NzU4ODUsbGlnaHRibHVlOjExMzkzMjU0LGxpZ2h0Y29yYWw6MTU3NjE1MzYsbGlnaHRjeWFuOjE0NzQ1NTk5LGxpZ2h0Z29sZGVucm9keWVsbG93OjE2NDQ4MjEwLGxpZ2h0Z3JheToxMzg4MjMyMyxsaWdodGdyZWVuOjk0OTgyNTYsbGlnaHRncmV5OjEzODgyMzIzLGxpZ2h0cGluazoxNjc1ODQ2NSxsaWdodHNhbG1vbjoxNjc1Mjc2MixsaWdodHNlYWdyZWVuOjIxNDI4OTAsbGlnaHRza3libHVlOjg5MDAzNDYsbGlnaHRzbGF0ZWdyYXk6NzgzMzc1MyxsaWdodHNsYXRlZ3JleTo3ODMzNzUzLGxpZ2h0c3RlZWxibHVlOjExNTg0NzM0LGxpZ2h0eWVsbG93OjE2Nzc3MTg0LGxpbWU6NjUyODAsbGltZWdyZWVuOjMzMjkzMzAsbGluZW46MTY0NDU2NzAsbWFnZW50YToxNjcxMTkzNSxtYXJvb246ODM4ODYwOCxtZWRpdW1hcXVhbWFyaW5lOjY3MzczMjIsbWVkaXVtYmx1ZToyMDUsbWVkaXVtb3JjaGlkOjEyMjExNjY3LG1lZGl1bXB1cnBsZTo5NjYyNjgzLG1lZGl1bXNlYWdyZWVuOjM5NzgwOTcsbWVkaXVtc2xhdGVibHVlOjgwODc3OTAsbWVkaXVtc3ByaW5nZ3JlZW46NjQxNTQsbWVkaXVtdHVycXVvaXNlOjQ3NzIzMDAsbWVkaXVtdmlvbGV0cmVkOjEzMDQ3MTczLG1pZG5pZ2h0Ymx1ZToxNjQ0OTEyLG1pbnRjcmVhbToxNjEyMTg1MCxtaXN0eXJvc2U6MTY3NzAyNzMsbW9jY2FzaW46MTY3NzAyMjksbmF2YWpvd2hpdGU6MTY3Njg2ODUsbmF2eToxMjgsb2xkbGFjZToxNjY0MzU1OCxvbGl2ZTo4NDIxMzc2LG9saXZlZHJhYjo3MDQ4NzM5LG9yYW5nZToxNjc1MzkyMCxvcmFuZ2VyZWQ6MTY3MjkzNDQsb3JjaGlkOjE0MzE1NzM0LHBhbGVnb2xkZW5yb2Q6MTU2NTcxMzAscGFsZWdyZWVuOjEwMDI1ODgwLHBhbGV0dXJxdW9pc2U6MTE1Mjk5NjYscGFsZXZpb2xldHJlZDoxNDM4MTIwMyxwYXBheWF3aGlwOjE2NzczMDc3LHBlYWNocHVmZjoxNjc2NzY3MyxwZXJ1OjEzNDY4OTkxLHBpbms6MTY3NjEwMzUscGx1bToxNDUyNDYzNyxwb3dkZXJibHVlOjExNTkxOTEwLHB1cnBsZTo4Mzg4NzM2LHJlYmVjY2FwdXJwbGU6NjY5Nzg4MSxyZWQ6MTY3MTE2ODAscm9zeWJyb3duOjEyMzU3NTE5LHJveWFsYmx1ZTo0Mjg2OTQ1LHNhZGRsZWJyb3duOjkxMjcxODcsc2FsbW9uOjE2NDE2ODgyLHNhbmR5YnJvd246MTYwMzI4NjQsc2VhZ3JlZW46MzA1MDMyNyxzZWFzaGVsbDoxNjc3NDYzOCxzaWVubmE6MTA1MDY3OTcsc2lsdmVyOjEyNjMyMjU2LHNreWJsdWU6ODkwMDMzMSxzbGF0ZWJsdWU6Njk3MDA2MSxzbGF0ZWdyYXk6NzM3Mjk0NCxzbGF0ZWdyZXk6NzM3Mjk0NCxzbm93OjE2Nzc1OTMwLHNwcmluZ2dyZWVuOjY1NDA3LHN0ZWVsYmx1ZTo0NjIwOTgwLHRhbjoxMzgwODc4MCx0ZWFsOjMyODk2LHRoaXN0bGU6MTQyMDQ4ODgsdG9tYXRvOjE2NzM3MDk1LHR1cnF1b2lzZTo0MjUxODU2LHZpb2xldDoxNTYzMTA4Nix3aGVhdDoxNjExMzMzMSx3aGl0ZToxNjc3NzIxNSx3aGl0ZXNtb2tlOjE2MTE5Mjg1LHllbGxvdzoxNjc3Njk2MCx5ZWxsb3dncmVlbjoxMDE0NTA3NH07ZnVuY3Rpb24gRTAoKXtyZXR1cm4gdGhpcy5yZ2IoKS5mb3JtYXRIZXgoKX1mdW5jdGlvbiBUMCgpe3JldHVybiB0aGlzLnJnYigpLmZvcm1hdFJnYigpfWZ1bmN0aW9uIEEwKHQpe3ZhciBlLG47cmV0dXJuIHQ9KHQrIiIpLnRyaW0oKS50b0xvd2VyQ2FzZSgpLChlPV8wLmV4ZWModCkpPyhuPWVbMV0ubGVuZ3RoLGU9cGFyc2VJbnQoZVsxXSwxNiksNj09PW4/QzAoZSk6Mz09PW4/bmV3IEkwKGU+PjgmMTV8ZT4+NCYyNDAsZT4+NCYxNXwyNDAmZSwoMTUmZSk8PDR8MTUmZSwxKTo4PT09bj9rMChlPj4yNCYyNTUsZT4+MTYmMjU1LGU+PjgmMjU1LCgyNTUmZSkvMjU1KTo0PT09bj9rMChlPj4xMiYxNXxlPj44JjI0MCxlPj44JjE1fGU+PjQmMjQwLGU+PjQmMTV8MjQwJmUsKCgxNSZlKTw8NHwxNSZlKS8yNTUpOm51bGwpOihlPXkwLmV4ZWModCkpP25ldyBJMChlWzFdLGVbMl0sZVszXSwxKTooZT12MC5leGVjKHQpKT9uZXcgSTAoMjU1KmVbMV0vMTAwLDI1NSplWzJdLzEwMCwyNTUqZVszXS8xMDAsMSk6KGU9YjAuZXhlYyh0KSk/azAoZVsxXSxlWzJdLGVbM10sZVs0XSk6KGU9eDAuZXhlYyh0KSk/azAoMjU1KmVbMV0vMTAwLDI1NSplWzJdLzEwMCwyNTUqZVszXS8xMDAsZVs0XSk6KGU9dzAuZXhlYyh0KSk/ejAoZVsxXSxlWzJdLzEwMCxlWzNdLzEwMCwxKTooZT1TMC5leGVjKHQpKT96MChlWzFdLGVbMl0vMTAwLGVbM10vMTAwLGVbNF0pOk0wLmhhc093blByb3BlcnR5KHQpP0MwKE0wW3RdKToidHJhbnNwYXJlbnQiPT09dD9uZXcgSTAoTmFOLE5hTixOYU4sMCk6bnVsbH1mdW5jdGlvbiBDMCh0KXtyZXR1cm4gbmV3IEkwKHQ+PjE2JjI1NSx0Pj44JjI1NSwyNTUmdCwxKX1mdW5jdGlvbiBrMCh0LGUsbixpKXtyZXR1cm4gaTw9MCYmKHQ9ZT1uPU5hTiksbmV3IEkwKHQsZSxuLGkpfWZ1bmN0aW9uIEwwKHQpe3JldHVybiB0IGluc3RhbmNlb2YgaDB8fCh0PUEwKHQpKSx0P25ldyBJMCgodD10LnJnYigpKS5yLHQuZyx0LmIsdC5vcGFjaXR5KTpuZXcgSTB9ZnVuY3Rpb24gUDAodCxlLG4saSl7cmV0dXJuIDE9PT1hcmd1bWVudHMubGVuZ3RoP0wwKHQpOm5ldyBJMCh0LGUsbixudWxsPT1pPzE6aSl9ZnVuY3Rpb24gSTAodCxlLG4saSl7dGhpcy5yPSt0LHRoaXMuZz0rZSx0aGlzLmI9K24sdGhpcy5vcGFjaXR5PStpfWZ1bmN0aW9uIE4wKCl7cmV0dXJuIiMiK1IwKHRoaXMucikrUjAodGhpcy5nKStSMCh0aGlzLmIpfWZ1bmN0aW9uIE8wKCl7dmFyIHQ9dGhpcy5vcGFjaXR5O3JldHVybigxPT09KHQ9aXNOYU4odCk/MTpNYXRoLm1heCgwLE1hdGgubWluKDEsdCkpKT8icmdiKCI6InJnYmEoIikrTWF0aC5tYXgoMCxNYXRoLm1pbigyNTUsTWF0aC5yb3VuZCh0aGlzLnIpfHwwKSkrIiwgIitNYXRoLm1heCgwLE1hdGgubWluKDI1NSxNYXRoLnJvdW5kKHRoaXMuZyl8fDApKSsiLCAiK01hdGgubWF4KDAsTWF0aC5taW4oMjU1LE1hdGgucm91bmQodGhpcy5iKXx8MCkpKygxPT09dD8iKSI6IiwgIit0KyIpIil9ZnVuY3Rpb24gUjAodCl7cmV0dXJuKCh0PU1hdGgubWF4KDAsTWF0aC5taW4oMjU1LE1hdGgucm91bmQodCl8fDApKSk8MTY/IjAiOiIiKSt0LnRvU3RyaW5nKDE2KX1mdW5jdGlvbiB6MCh0LGUsbixpKXtyZXR1cm4gaTw9MD90PWU9bj1OYU46bjw9MHx8bj49MT90PWU9TmFOOmU8PTAmJih0PU5hTiksbmV3IEIwKHQsZSxuLGkpfWZ1bmN0aW9uIEQwKHQpe2lmKHQgaW5zdGFuY2VvZiBCMClyZXR1cm4gbmV3IEIwKHQuaCx0LnMsdC5sLHQub3BhY2l0eSk7aWYodCBpbnN0YW5jZW9mIGgwfHwodD1BMCh0KSksIXQpcmV0dXJuIG5ldyBCMDtpZih0IGluc3RhbmNlb2YgQjApcmV0dXJuIHQ7dmFyIGU9KHQ9dC5yZ2IoKSkuci8yNTUsbj10LmcvMjU1LGk9dC5iLzI1NSxyPU1hdGgubWluKGUsbixpKSxvPU1hdGgubWF4KGUsbixpKSxhPU5hTixzPW8tcixsPShvK3IpLzI7cmV0dXJuIHM/KGE9ZT09PW8/KG4taSkvcys2KihuPGkpOm49PT1vPyhpLWUpL3MrMjooZS1uKS9zKzQscy89bDwuNT9vK3I6Mi1vLXIsYSo9NjApOnM9bD4wJiZsPDE/MDphLG5ldyBCMChhLHMsbCx0Lm9wYWNpdHkpfWZ1bmN0aW9uIEIwKHQsZSxuLGkpe3RoaXMuaD0rdCx0aGlzLnM9K2UsdGhpcy5sPStuLHRoaXMub3BhY2l0eT0raX1mdW5jdGlvbiBIMCh0LGUsbil7cmV0dXJuIDI1NSoodDw2MD9lKyhuLWUpKnQvNjA6dDwxODA/bjp0PDI0MD9lKyhuLWUpKigyNDAtdCkvNjA6ZSl9YzAoaDAsQTAse2NvcHk6ZnVuY3Rpb24odCl7cmV0dXJuIE9iamVjdC5hc3NpZ24obmV3IHRoaXMuY29uc3RydWN0b3IsdGhpcyx0KX0sZGlzcGxheWFibGU6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5yZ2IoKS5kaXNwbGF5YWJsZSgpfSxoZXg6RTAsZm9ybWF0SGV4OkUwLGZvcm1hdEhzbDpmdW5jdGlvbiBGMCgpe3JldHVybiBEMCh0aGlzKS5mb3JtYXRIc2woKX0sZm9ybWF0UmdiOlQwLHRvU3RyaW5nOlQwfSksYzAoSTAsUDAsdTAoaDAse2JyaWdodGVyOmZ1bmN0aW9uKHQpe3JldHVybiB0PW51bGw9PXQ/cDA6TWF0aC5wb3cocDAsdCksbmV3IEkwKHRoaXMucip0LHRoaXMuZyp0LHRoaXMuYip0LHRoaXMub3BhY2l0eSl9LGRhcmtlcjpmdW5jdGlvbih0KXtyZXR1cm4gdD1udWxsPT10P2QwOk1hdGgucG93KGQwLHQpLG5ldyBJMCh0aGlzLnIqdCx0aGlzLmcqdCx0aGlzLmIqdCx0aGlzLm9wYWNpdHkpfSxyZ2I6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpc30sZGlzcGxheWFibGU6ZnVuY3Rpb24oKXtyZXR1cm4tLjU8PXRoaXMuciYmdGhpcy5yPDI1NS41JiYtLjU8PXRoaXMuZyYmdGhpcy5nPDI1NS41JiYtLjU8PXRoaXMuYiYmdGhpcy5iPDI1NS41JiYwPD10aGlzLm9wYWNpdHkmJnRoaXMub3BhY2l0eTw9MX0saGV4Ok4wLGZvcm1hdEhleDpOMCxmb3JtYXRSZ2I6TzAsdG9TdHJpbmc6TzB9KSksYzAoQjAsKGZ1bmN0aW9uIFYwKHQsZSxuLGkpe3JldHVybiAxPT09YXJndW1lbnRzLmxlbmd0aD9EMCh0KTpuZXcgQjAodCxlLG4sbnVsbD09aT8xOmkpfSksdTAoaDAse2JyaWdodGVyOmZ1bmN0aW9uKHQpe3JldHVybiB0PW51bGw9PXQ/cDA6TWF0aC5wb3cocDAsdCksbmV3IEIwKHRoaXMuaCx0aGlzLnMsdGhpcy5sKnQsdGhpcy5vcGFjaXR5KX0sZGFya2VyOmZ1bmN0aW9uKHQpe3JldHVybiB0PW51bGw9PXQ/ZDA6TWF0aC5wb3coZDAsdCksbmV3IEIwKHRoaXMuaCx0aGlzLnMsdGhpcy5sKnQsdGhpcy5vcGFjaXR5KX0scmdiOmZ1bmN0aW9uKCl7dmFyIHQ9dGhpcy5oJTM2MCszNjAqKHRoaXMuaDwwKSxlPWlzTmFOKHQpfHxpc05hTih0aGlzLnMpPzA6dGhpcy5zLG49dGhpcy5sLGk9bisobjwuNT9uOjEtbikqZSxyPTIqbi1pO3JldHVybiBuZXcgSTAoSDAodD49MjQwP3QtMjQwOnQrMTIwLHIsaSksSDAodCxyLGkpLEgwKHQ8MTIwP3QrMjQwOnQtMTIwLHIsaSksdGhpcy5vcGFjaXR5KX0sZGlzcGxheWFibGU6ZnVuY3Rpb24oKXtyZXR1cm4oMDw9dGhpcy5zJiZ0aGlzLnM8PTF8fGlzTmFOKHRoaXMucykpJiYwPD10aGlzLmwmJnRoaXMubDw9MSYmMDw9dGhpcy5vcGFjaXR5JiZ0aGlzLm9wYWNpdHk8PTF9LGZvcm1hdEhzbDpmdW5jdGlvbigpe3ZhciB0PXRoaXMub3BhY2l0eTtyZXR1cm4oMT09PSh0PWlzTmFOKHQpPzE6TWF0aC5tYXgoMCxNYXRoLm1pbigxLHQpKSk/ImhzbCgiOiJoc2xhKCIpKyh0aGlzLmh8fDApKyIsICIrMTAwKih0aGlzLnN8fDApKyIlLCAiKzEwMCoodGhpcy5sfHwwKSsiJSIrKDE9PT10PyIpIjoiLCAiK3QrIikiKX19KSk7dmFyIGowPU1hdGguUEkvMTgwLFUwPTE4MC9NYXRoLlBJLEcwPS0uMTQ4NjEsVzA9MS43ODI3NyxxMD0tLjI5MjI3LFkwPS0uOTA2NDksWDA9MS45NzI5NCwkMD1YMCpZMCxLMD1YMCpXMCxaMD1XMCpxMC1ZMCpHMDtmdW5jdGlvbiBKMCh0KXtpZih0IGluc3RhbmNlb2YgdDIpcmV0dXJuIG5ldyB0Mih0LmgsdC5zLHQubCx0Lm9wYWNpdHkpO3QgaW5zdGFuY2VvZiBJMHx8KHQ9TDAodCkpO3ZhciBlPXQuZy8yNTUsbj10LmIvMjU1LGk9KFowKm4rJDAqKHQuci8yNTUpLUswKmUpLyhaMCskMC1LMCkscj1uLWksbz0oWDAqKGUtaSktcTAqcikvWTAsYT1NYXRoLnNxcnQobypvK3IqcikvKFgwKmkqKDEtaSkpLHM9YT9NYXRoLmF0YW4yKG8scikqVTAtMTIwOk5hTjtyZXR1cm4gbmV3IHQyKHM8MD9zKzM2MDpzLGEsaSx0Lm9wYWNpdHkpfWZ1bmN0aW9uIFEwKHQsZSxuLGkpe3JldHVybiAxPT09YXJndW1lbnRzLmxlbmd0aD9KMCh0KTpuZXcgdDIodCxlLG4sbnVsbD09aT8xOmkpfWZ1bmN0aW9uIHQyKHQsZSxuLGkpe3RoaXMuaD0rdCx0aGlzLnM9K2UsdGhpcy5sPStuLHRoaXMub3BhY2l0eT0raX1mdW5jdGlvbiBlMih0KXtyZXR1cm4gZnVuY3Rpb24oKXtyZXR1cm4gdH19ZnVuY3Rpb24gbjIodCxlKXtyZXR1cm4gZnVuY3Rpb24obil7cmV0dXJuIHQrbiplfX1mdW5jdGlvbiBpMih0LGUpe3ZhciBuPWUtdDtyZXR1cm4gbj9uMih0LG4pOmUyKGlzTmFOKHQpP2U6dCl9YzAodDIsUTAsdTAoaDAse2JyaWdodGVyOmZ1bmN0aW9uKHQpe3JldHVybiB0PW51bGw9PXQ/cDA6TWF0aC5wb3cocDAsdCksbmV3IHQyKHRoaXMuaCx0aGlzLnMsdGhpcy5sKnQsdGhpcy5vcGFjaXR5KX0sZGFya2VyOmZ1bmN0aW9uKHQpe3JldHVybiB0PW51bGw9PXQ/ZDA6TWF0aC5wb3coZDAsdCksbmV3IHQyKHRoaXMuaCx0aGlzLnMsdGhpcy5sKnQsdGhpcy5vcGFjaXR5KX0scmdiOmZ1bmN0aW9uKCl7dmFyIHQ9aXNOYU4odGhpcy5oKT8wOih0aGlzLmgrMTIwKSpqMCxlPSt0aGlzLmwsbj1pc05hTih0aGlzLnMpPzA6dGhpcy5zKmUqKDEtZSksaT1NYXRoLmNvcyh0KSxyPU1hdGguc2luKHQpO3JldHVybiBuZXcgSTAoMjU1KihlK24qKEcwKmkrVzAqcikpLDI1NSooZStuKihxMCppK1kwKnIpKSwyNTUqKGUrbiooWDAqaSkpLHRoaXMub3BhY2l0eSl9fSkpO3ZhciByMj0oZnVuY3Rpb24gdChlKXt2YXIgbj0oZnVuY3Rpb24gaSh0KXtyZXR1cm4gMT09KHQ9K3QpP2kyOmZ1bmN0aW9uKGUsbil7cmV0dXJuIG4tZT8oZnVuY3Rpb24gaSh0LGUsbil7cmV0dXJuIHQ9TWF0aC5wb3codCxuKSxlPU1hdGgucG93KGUsbiktdCxuPTEvbixmdW5jdGlvbihpKXtyZXR1cm4gTWF0aC5wb3codCtpKmUsbil9fSkoZSxuLHQpOmUyKGlzTmFOKGUpP246ZSl9fSkoZSk7ZnVuY3Rpb24gcih0LGUpe3ZhciBpPW4oKHQ9UDAodCkpLnIsKGU9UDAoZSkpLnIpLHI9bih0LmcsZS5nKSxvPW4odC5iLGUuYiksYT1pMih0Lm9wYWNpdHksZS5vcGFjaXR5KTtyZXR1cm4gZnVuY3Rpb24oZSl7cmV0dXJuIHQucj1pKGUpLHQuZz1yKGUpLHQuYj1vKGUpLHQub3BhY2l0eT1hKGUpLHQrIiJ9fXJldHVybiByLmdhbW1hPXQscn0pKDEpO2Z1bmN0aW9uIG8yKHQsZSl7ZXx8KGU9W10pO3ZhciBuLGk9dD9NYXRoLm1pbihlLmxlbmd0aCx0Lmxlbmd0aCk6MCxyPWUuc2xpY2UoKTtyZXR1cm4gZnVuY3Rpb24obyl7Zm9yKG49MDtuPGk7KytuKXJbbl09dFtuXSooMS1vKStlW25dKm87cmV0dXJuIHJ9fWZ1bmN0aW9uIGEyKHQsZSl7dmFyIG4saT1lP2UubGVuZ3RoOjAscj10P01hdGgubWluKGksdC5sZW5ndGgpOjAsbz1uZXcgQXJyYXkociksYT1uZXcgQXJyYXkoaSk7Zm9yKG49MDtuPHI7KytuKW9bbl09cDIodFtuXSxlW25dKTtmb3IoO248aTsrK24pYVtuXT1lW25dO3JldHVybiBmdW5jdGlvbih0KXtmb3Iobj0wO248cjsrK24pYVtuXT1vW25dKHQpO3JldHVybiBhfX1mdW5jdGlvbiBzMih0LGUpe3ZhciBuPW5ldyBEYXRlO3JldHVybiB0PSt0LGU9K2UsZnVuY3Rpb24oaSl7cmV0dXJuIG4uc2V0VGltZSh0KigxLWkpK2UqaSksbn19ZnVuY3Rpb24gbDIodCxlKXtyZXR1cm4gdD0rdCxlPStlLGZ1bmN0aW9uKG4pe3JldHVybiB0KigxLW4pK2Uqbn19ZnVuY3Rpb24gYzIodCxlKXt2YXIgbixpPXt9LHI9e307Zm9yKG4gaW4gbnVsbCE9PXQmJiJvYmplY3QiPT10eXBlb2YgdHx8KHQ9e30pLG51bGwhPT1lJiYib2JqZWN0Ij09dHlwZW9mIGV8fChlPXt9KSxlKW4gaW4gdD9pW25dPXAyKHRbbl0sZVtuXSk6cltuXT1lW25dO3JldHVybiBmdW5jdGlvbih0KXtmb3IobiBpbiBpKXJbbl09aVtuXSh0KTtyZXR1cm4gcn19dmFyIHUyPS9bLStdPyg/OlxkK1wuP1xkKnxcLj9cZCspKD86W2VFXVstK10/XGQrKT8vZyxoMj1uZXcgUmVnRXhwKHUyLnNvdXJjZSwiZyIpO2Z1bmN0aW9uIGQyKHQsZSl7dmFyIG4saSxyLG89dTIubGFzdEluZGV4PWgyLmxhc3RJbmRleD0wLGE9LTEscz1bXSxsPVtdO2Zvcih0Kz0iIixlKz0iIjsobj11Mi5leGVjKHQpKSYmKGk9aDIuZXhlYyhlKSk7KShyPWkuaW5kZXgpPm8mJihyPWUuc2xpY2UobyxyKSxzW2FdP3NbYV0rPXI6c1srK2FdPXIpLChuPW5bMF0pPT09KGk9aVswXSk/c1thXT9zW2FdKz1pOnNbKythXT1pOihzWysrYV09bnVsbCxsLnB1c2goe2k6YSx4OmwyKG4saSl9KSksbz1oMi5sYXN0SW5kZXg7cmV0dXJuIG88ZS5sZW5ndGgmJihyPWUuc2xpY2Uobyksc1thXT9zW2FdKz1yOnNbKythXT1yKSxzLmxlbmd0aDwyP2xbMF0/KGZ1bmN0aW9uIGModCl7cmV0dXJuIGZ1bmN0aW9uKGUpe3JldHVybiB0KGUpKyIifX0pKGxbMF0ueCk6KGZ1bmN0aW9uIHUodCl7cmV0dXJuIGZ1bmN0aW9uKCl7cmV0dXJuIHR9fSkoZSk6KGU9bC5sZW5ndGgsZnVuY3Rpb24odCl7Zm9yKHZhciBuLGk9MDtpPGU7KytpKXNbKG49bFtpXSkuaV09bi54KHQpO3JldHVybiBzLmpvaW4oIiIpfSl9ZnVuY3Rpb24gcDIodCxlKXt2YXIgbixpPXR5cGVvZiBlO3JldHVybiBudWxsPT1lfHwiYm9vbGVhbiI9PT1pP2UyKGUpOigibnVtYmVyIj09PWk/bDI6InN0cmluZyI9PT1pPyhuPUEwKGUpKT8oZT1uLHIyKTpkMjplIGluc3RhbmNlb2YgQTA/cjI6ZSBpbnN0YW5jZW9mIERhdGU/czI6KGZ1bmN0aW9uIHIodCl7cmV0dXJuIEFycmF5QnVmZmVyLmlzVmlldyh0KSYmISh0IGluc3RhbmNlb2YgRGF0YVZpZXcpfSkoZSk/bzI6QXJyYXkuaXNBcnJheShlKT9hMjoiZnVuY3Rpb24iIT10eXBlb2YgZS52YWx1ZU9mJiYiZnVuY3Rpb24iIT10eXBlb2YgZS50b1N0cmluZ3x8aXNOYU4oZSk/YzI6bDIpKHQsZSl9ZnVuY3Rpb24gZjIodCxlKXtyZXR1cm4gdD0rdCxlPStlLGZ1bmN0aW9uKG4pe3JldHVybiBNYXRoLnJvdW5kKHQqKDEtbikrZSpuKX19ZnVuY3Rpb24gbTIodCl7cmV0dXJuKGZ1bmN0aW9uIGUobil7ZnVuY3Rpb24gaShlLGkpe3ZhciByPXQoKGU9UTAoZSkpLmgsKGk9UTAoaSkpLmgpLG89aTIoZS5zLGkucyksYT1pMihlLmwsaS5sKSxzPWkyKGUub3BhY2l0eSxpLm9wYWNpdHkpO3JldHVybiBmdW5jdGlvbih0KXtyZXR1cm4gZS5oPXIodCksZS5zPW8odCksZS5sPWEoTWF0aC5wb3codCxuKSksZS5vcGFjaXR5PXModCksZSsiIn19cmV0dXJuIG49K24saS5nYW1tYT1lLGl9KSgxKX1tMigoZnVuY3Rpb24gZzIodCxlKXt2YXIgbj1lLXQ7cmV0dXJuIG4/bjIodCxuPjE4MHx8bjwtMTgwP24tMzYwKk1hdGgucm91bmQobi8zNjApOm4pOmUyKGlzTmFOKHQpP2U6dCl9KSk7dmFyIF8yPW0yKGkyKTtmdW5jdGlvbiB5Mih0KXtyZXR1cm4gZnVuY3Rpb24oKXtyZXR1cm4gdH19ZnVuY3Rpb24gdjIodCl7cmV0dXJuK3R9dmFyIGIyPVswLDFdO2Z1bmN0aW9uIHgyKHQsZSl7cmV0dXJuKGUtPXQ9K3QpP2Z1bmN0aW9uKG4pe3JldHVybihuLXQpL2V9OnkyKGUpfWZ1bmN0aW9uIHcyKHQsZSxuLGkpe3ZhciByPXRbMF0sbz10WzFdLGE9ZVswXSxzPWVbMV07cmV0dXJuIG88cj8ocj1uKG8sciksYT1pKHMsYSkpOihyPW4ocixvKSxhPWkoYSxzKSksZnVuY3Rpb24odCl7cmV0dXJuIGEocih0KSl9fWZ1bmN0aW9uIFMyKHQsZSxuLGkpe3ZhciByPU1hdGgubWluKHQubGVuZ3RoLGUubGVuZ3RoKS0xLG89bmV3IEFycmF5KHIpLGE9bmV3IEFycmF5KHIpLHM9LTE7Zm9yKHRbcl08dFswXSYmKHQ9dC5zbGljZSgpLnJldmVyc2UoKSxlPWUuc2xpY2UoKS5yZXZlcnNlKCkpOysrczxyOylvW3NdPW4odFtzXSx0W3MrMV0pLGFbc109aShlW3NdLGVbcysxXSk7cmV0dXJuIGZ1bmN0aW9uKGUpe3ZhciBuPWoxKHQsZSwxLHIpLTE7cmV0dXJuIGFbbl0ob1tuXShlKSl9fWZ1bmN0aW9uIE0yKHQsZSl7cmV0dXJuIGUuZG9tYWluKHQuZG9tYWluKCkpLnJhbmdlKHQucmFuZ2UoKSkuaW50ZXJwb2xhdGUodC5pbnRlcnBvbGF0ZSgpKS5jbGFtcCh0LmNsYW1wKCkpfWZ1bmN0aW9uIEUyKHQsZSl7dmFyIG4saSxyLG89YjIsYT1iMixzPXAyLGw9ITE7ZnVuY3Rpb24gYygpe3JldHVybiBuPU1hdGgubWluKG8ubGVuZ3RoLGEubGVuZ3RoKT4yP1MyOncyLGk9cj1udWxsLHV9ZnVuY3Rpb24gdShlKXtyZXR1cm4oaXx8KGk9bihvLGEsbD8oZnVuY3Rpb24gcih0KXtyZXR1cm4gZnVuY3Rpb24oZSxuKXt2YXIgaT10KGU9K2Usbj0rbik7cmV0dXJuIGZ1bmN0aW9uKHQpe3JldHVybiB0PD1lPzA6dD49bj8xOmkodCl9fX0pKHQpOnQscykpKSgrZSl9cmV0dXJuIHUuaW52ZXJ0PWZ1bmN0aW9uKHQpe3JldHVybihyfHwocj1uKGEsbyx4MixsPyhmdW5jdGlvbiBpKHQpe3JldHVybiBmdW5jdGlvbihlLG4pe3ZhciBpPXQoZT0rZSxuPStuKTtyZXR1cm4gZnVuY3Rpb24odCl7cmV0dXJuIHQ8PTA/ZTp0Pj0xP246aSh0KX19fSkoZSk6ZSkpKSgrdCl9LHUuZG9tYWluPWZ1bmN0aW9uKHQpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyhvPWkwLmNhbGwodCx2MiksYygpKTpvLnNsaWNlKCl9LHUucmFuZ2U9ZnVuY3Rpb24odCl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KGE9cjAuY2FsbCh0KSxjKCkpOmEuc2xpY2UoKX0sdS5yYW5nZVJvdW5kPWZ1bmN0aW9uKHQpe3JldHVybiBhPXIwLmNhbGwodCkscz1mMixjKCl9LHUuY2xhbXA9ZnVuY3Rpb24odCl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KGw9ISF0LGMoKSk6bH0sdS5pbnRlcnBvbGF0ZT1mdW5jdGlvbih0KXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8ocz10LGMoKSk6c30sYygpfWZ1bmN0aW9uIFQyKHQsZSl7aWYoKG49KHQ9ZT90LnRvRXhwb25lbnRpYWwoZS0xKTp0LnRvRXhwb25lbnRpYWwoKSkuaW5kZXhPZigiZSIpKTwwKXJldHVybiBudWxsO3ZhciBuLGk9dC5zbGljZSgwLG4pO3JldHVybltpLmxlbmd0aD4xP2lbMF0raS5zbGljZSgyKTppLCt0LnNsaWNlKG4rMSldfWZ1bmN0aW9uIEEyKHQpe3JldHVybih0PVQyKE1hdGguYWJzKHQpKSk/dFsxXTpOYU59dmFyIEMyLGsyPS9eKD86KC4pPyhbPD49Xl0pKT8oWytcLSggXSk/KFskI10pPygwKT8oXGQrKT8oLCk/KFwuXGQrKT8ofik/KFthLXolXSk/JC9pO2Z1bmN0aW9uIEwyKHQpe2lmKCEoZT1rMi5leGVjKHQpKSl0aHJvdyBuZXcgRXJyb3IoImludmFsaWQgZm9ybWF0OiAiK3QpO3ZhciBlO3JldHVybiBuZXcgUDIoe2ZpbGw6ZVsxXSxhbGlnbjplWzJdLHNpZ246ZVszXSxzeW1ib2w6ZVs0XSx6ZXJvOmVbNV0sd2lkdGg6ZVs2XSxjb21tYTplWzddLHByZWNpc2lvbjplWzhdJiZlWzhdLnNsaWNlKDEpLHRyaW06ZVs5XSx0eXBlOmVbMTBdfSl9ZnVuY3Rpb24gUDIodCl7dGhpcy5maWxsPXZvaWQgMD09PXQuZmlsbD8iICI6dC5maWxsKyIiLHRoaXMuYWxpZ249dm9pZCAwPT09dC5hbGlnbj8iPiI6dC5hbGlnbisiIix0aGlzLnNpZ249dm9pZCAwPT09dC5zaWduPyItIjp0LnNpZ24rIiIsdGhpcy5zeW1ib2w9dm9pZCAwPT09dC5zeW1ib2w/IiI6dC5zeW1ib2wrIiIsdGhpcy56ZXJvPSEhdC56ZXJvLHRoaXMud2lkdGg9dm9pZCAwPT09dC53aWR0aD92b2lkIDA6K3Qud2lkdGgsdGhpcy5jb21tYT0hIXQuY29tbWEsdGhpcy5wcmVjaXNpb249dm9pZCAwPT09dC5wcmVjaXNpb24/dm9pZCAwOit0LnByZWNpc2lvbix0aGlzLnRyaW09ISF0LnRyaW0sdGhpcy50eXBlPXZvaWQgMD09PXQudHlwZT8iIjp0LnR5cGUrIiJ9ZnVuY3Rpb24gSTIodCxlKXt2YXIgbj1UMih0LGUpO2lmKCFuKXJldHVybiB0KyIiO3ZhciBpPW5bMF0scj1uWzFdO3JldHVybiByPDA/IjAuIituZXcgQXJyYXkoLXIpLmpvaW4oIjAiKStpOmkubGVuZ3RoPnIrMT9pLnNsaWNlKDAscisxKSsiLiIraS5zbGljZShyKzEpOmkrbmV3IEFycmF5KHItaS5sZW5ndGgrMikuam9pbigiMCIpfUwyLnByb3RvdHlwZT1QMi5wcm90b3R5cGUsUDIucHJvdG90eXBlLnRvU3RyaW5nPWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuZmlsbCt0aGlzLmFsaWduK3RoaXMuc2lnbit0aGlzLnN5bWJvbCsodGhpcy56ZXJvPyIwIjoiIikrKHZvaWQgMD09PXRoaXMud2lkdGg/IiI6TWF0aC5tYXgoMSwwfHRoaXMud2lkdGgpKSsodGhpcy5jb21tYT8iLCI6IiIpKyh2b2lkIDA9PT10aGlzLnByZWNpc2lvbj8iIjoiLiIrTWF0aC5tYXgoMCwwfHRoaXMucHJlY2lzaW9uKSkrKHRoaXMudHJpbT8ifiI6IiIpK3RoaXMudHlwZX07dmFyIE4yPXsiJSI6ZnVuY3Rpb24odCxlKXtyZXR1cm4oMTAwKnQpLnRvRml4ZWQoZSl9LGI6ZnVuY3Rpb24odCl7cmV0dXJuIE1hdGgucm91bmQodCkudG9TdHJpbmcoMil9LGM6ZnVuY3Rpb24odCl7cmV0dXJuIHQrIiJ9LGQ6ZnVuY3Rpb24odCl7cmV0dXJuIE1hdGgucm91bmQodCkudG9TdHJpbmcoMTApfSxlOmZ1bmN0aW9uKHQsZSl7cmV0dXJuIHQudG9FeHBvbmVudGlhbChlKX0sZjpmdW5jdGlvbih0LGUpe3JldHVybiB0LnRvRml4ZWQoZSl9LGc6ZnVuY3Rpb24odCxlKXtyZXR1cm4gdC50b1ByZWNpc2lvbihlKX0sbzpmdW5jdGlvbih0KXtyZXR1cm4gTWF0aC5yb3VuZCh0KS50b1N0cmluZyg4KX0scDpmdW5jdGlvbih0LGUpe3JldHVybiBJMigxMDAqdCxlKX0scjpJMixzOmZ1bmN0aW9uIE8yKHQsZSl7dmFyIG49VDIodCxlKTtpZighbilyZXR1cm4gdCsiIjt2YXIgaT1uWzBdLHI9blsxXSxvPXItKEMyPTMqTWF0aC5tYXgoLTgsTWF0aC5taW4oOCxNYXRoLmZsb29yKHIvMykpKSkrMSxhPWkubGVuZ3RoO3JldHVybiBvPT09YT9pOm8+YT9pK25ldyBBcnJheShvLWErMSkuam9pbigiMCIpOm8+MD9pLnNsaWNlKDAsbykrIi4iK2kuc2xpY2Uobyk6IjAuIituZXcgQXJyYXkoMS1vKS5qb2luKCIwIikrVDIodCxNYXRoLm1heCgwLGUrby0xKSlbMF19LFg6ZnVuY3Rpb24odCl7cmV0dXJuIE1hdGgucm91bmQodCkudG9TdHJpbmcoMTYpLnRvVXBwZXJDYXNlKCl9LHg6ZnVuY3Rpb24odCl7cmV0dXJuIE1hdGgucm91bmQodCkudG9TdHJpbmcoMTYpfX07ZnVuY3Rpb24gUjIodCl7cmV0dXJuIHR9dmFyIHoyLEQyLEIyLEgyPUFycmF5LnByb3RvdHlwZS5tYXAsRjI9WyJ5IiwieiIsImEiLCJmIiwicCIsIm4iLCLCtSIsIm0iLCIiLCJrIiwiTSIsIkciLCJUIiwiUCIsIkUiLCJaIiwiWSJdO2Z1bmN0aW9uIFYyKHQpe3ZhciBlPXQuZG9tYWluO3JldHVybiB0LnRpY2tzPWZ1bmN0aW9uKHQpe3ZhciBuPWUoKTtyZXR1cm4gWTEoblswXSxuW24ubGVuZ3RoLTFdLG51bGw9PXQ/MTA6dCl9LHQudGlja0Zvcm1hdD1mdW5jdGlvbih0LG4pe3JldHVybihmdW5jdGlvbiBpKHQsZSxuKXt2YXIgaSxyPXRbMF0sbz10W3QubGVuZ3RoLTFdLGE9JDEocixvLG51bGw9PWU/MTA6ZSk7c3dpdGNoKChuPUwyKG51bGw9PW4/IixmIjpuKSkudHlwZSl7Y2FzZSJzIjp2YXIgcz1NYXRoLm1heChNYXRoLmFicyhyKSxNYXRoLmFicyhvKSk7cmV0dXJuIG51bGwhPW4ucHJlY2lzaW9ufHxpc05hTihpPShmdW5jdGlvbiBsKHQsZSl7cmV0dXJuIE1hdGgubWF4KDAsMypNYXRoLm1heCgtOCxNYXRoLm1pbig4LE1hdGguZmxvb3IoQTIoZSkvMykpKS1BMihNYXRoLmFicyh0KSkpfSkoYSxzKSl8fChuLnByZWNpc2lvbj1pKSxCMihuLHMpO2Nhc2UiIjpjYXNlImUiOmNhc2UiZyI6Y2FzZSJwIjpjYXNlInIiOm51bGwhPW4ucHJlY2lzaW9ufHxpc05hTihpPShmdW5jdGlvbiBjKHQsZSl7cmV0dXJuIHQ9TWF0aC5hYnModCksZT1NYXRoLmFicyhlKS10LE1hdGgubWF4KDAsQTIoZSktQTIodCkpKzF9KShhLE1hdGgubWF4KE1hdGguYWJzKHIpLE1hdGguYWJzKG8pKSkpfHwobi5wcmVjaXNpb249aS0oImUiPT09bi50eXBlKSk7YnJlYWs7Y2FzZSJmIjpjYXNlIiUiOm51bGwhPW4ucHJlY2lzaW9ufHxpc05hTihpPShmdW5jdGlvbiB1KHQpe3JldHVybiBNYXRoLm1heCgwLC1BMihNYXRoLmFicyh0KSkpfSkoYSkpfHwobi5wcmVjaXNpb249aS0yKigiJSI9PT1uLnR5cGUpKX1yZXR1cm4gRDIobil9KShlKCksdCxuKX0sdC5uaWNlPWZ1bmN0aW9uKG4pe251bGw9PW4mJihuPTEwKTt2YXIgaSxyPWUoKSxvPTAsYT1yLmxlbmd0aC0xLHM9cltvXSxsPXJbYV07cmV0dXJuIGw8cyYmKGk9cyxzPWwsbD1pLGk9byxvPWEsYT1pKSwoaT1YMShzLGwsbikpPjA/aT1YMShzPU1hdGguZmxvb3Iocy9pKSppLGw9TWF0aC5jZWlsKGwvaSkqaSxuKTppPDAmJihpPVgxKHM9TWF0aC5jZWlsKHMqaSkvaSxsPU1hdGguZmxvb3IobCppKS9pLG4pKSxpPjA/KHJbb109TWF0aC5mbG9vcihzL2kpKmksclthXT1NYXRoLmNlaWwobC9pKSppLGUocikpOmk8MCYmKHJbb109TWF0aC5jZWlsKHMqaSkvaSxyW2FdPU1hdGguZmxvb3IobCppKS9pLGUocikpLHR9LHR9ZnVuY3Rpb24gajIodCxlKXt2YXIgbixpPTAscj0odD10LnNsaWNlKCkpLmxlbmd0aC0xLG89dFtpXSxhPXRbcl07cmV0dXJuIGE8byYmKG49aSxpPXIscj1uLG49byxvPWEsYT1uKSx0W2ldPWUuZmxvb3IobyksdFtyXT1lLmNlaWwoYSksdH1mdW5jdGlvbiBVMih0LGUpe3JldHVybihlPU1hdGgubG9nKGUvdCkpP2Z1bmN0aW9uKG4pe3JldHVybiBNYXRoLmxvZyhuL3QpL2V9OnkyKGUpfWZ1bmN0aW9uIEcyKHQsZSl7cmV0dXJuIHQ8MD9mdW5jdGlvbihuKXtyZXR1cm4tTWF0aC5wb3coLWUsbikqTWF0aC5wb3coLXQsMS1uKX06ZnVuY3Rpb24obil7cmV0dXJuIE1hdGgucG93KGUsbikqTWF0aC5wb3codCwxLW4pfX1mdW5jdGlvbiBXMih0KXtyZXR1cm4gaXNGaW5pdGUodCk/KygiMWUiK3QpOnQ8MD8wOnR9ZnVuY3Rpb24gcTIodCl7cmV0dXJuIDEwPT09dD9XMjp0PT09TWF0aC5FP01hdGguZXhwOmZ1bmN0aW9uKGUpe3JldHVybiBNYXRoLnBvdyh0LGUpfX1mdW5jdGlvbiBZMih0KXtyZXR1cm4gdD09PU1hdGguRT9NYXRoLmxvZzoxMD09PXQmJk1hdGgubG9nMTB8fDI9PT10JiZNYXRoLmxvZzJ8fCh0PU1hdGgubG9nKHQpLGZ1bmN0aW9uKGUpe3JldHVybiBNYXRoLmxvZyhlKS90fSl9ZnVuY3Rpb24gWDIodCl7cmV0dXJuIGZ1bmN0aW9uKGUpe3JldHVybi10KC1lKX19ZnVuY3Rpb24gJDIodCxlKXtyZXR1cm4gdDwwPy1NYXRoLnBvdygtdCxlKTpNYXRoLnBvdyh0LGUpfWZ1bmN0aW9uIEsyKCl7dmFyIHQ9MSxlPUUyKChmdW5jdGlvbiBuKGUsaSl7cmV0dXJuKGk9JDIoaSx0KS0oZT0kMihlLHQpKSk/ZnVuY3Rpb24obil7cmV0dXJuKCQyKG4sdCktZSkvaX06eTIoaSl9KSwoZnVuY3Rpb24gaShlLG4pe3JldHVybiBuPSQyKG4sdCktKGU9JDIoZSx0KSksZnVuY3Rpb24oaSl7cmV0dXJuICQyKGUrbippLDEvdCl9fSkpLHI9ZS5kb21haW47cmV0dXJuIGUuZXhwb25lbnQ9ZnVuY3Rpb24oZSl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KHQ9K2UscihyKCkpKTp0fSxlLmNvcHk9ZnVuY3Rpb24oKXtyZXR1cm4gTTIoZSxLMigpLmV4cG9uZW50KHQpKX0sVjIoZSl9IShmdW5jdGlvbiBaMih0KXt6Mj0oZnVuY3Rpb24gZSh0KXt2YXIgZT12b2lkIDA9PT10Lmdyb3VwaW5nfHx2b2lkIDA9PT10LnRob3VzYW5kcz9SMjooZnVuY3Rpb24gbih0LGUpe3JldHVybiBmdW5jdGlvbihuLGkpe2Zvcih2YXIgcj1uLmxlbmd0aCxvPVtdLGE9MCxzPXRbMF0sbD0wO3I+MCYmcz4wJiYobCtzKzE+aSYmKHM9TWF0aC5tYXgoMSxpLWwpKSxvLnB1c2gobi5zdWJzdHJpbmcoci09cyxyK3MpKSwhKChsKz1zKzEpPmkpKTspcz10W2E9KGErMSkldC5sZW5ndGhdO3JldHVybiBvLnJldmVyc2UoKS5qb2luKGUpfX0pKEgyLmNhbGwodC5ncm91cGluZyxOdW1iZXIpLHQudGhvdXNhbmRzKyIiKSxpPXZvaWQgMD09PXQuY3VycmVuY3k/IiI6dC5jdXJyZW5jeVswXSsiIixyPXZvaWQgMD09PXQuY3VycmVuY3k/IiI6dC5jdXJyZW5jeVsxXSsiIixvPXZvaWQgMD09PXQuZGVjaW1hbD8iLiI6dC5kZWNpbWFsKyIiLGE9dm9pZCAwPT09dC5udW1lcmFscz9SMjooZnVuY3Rpb24gcyh0KXtyZXR1cm4gZnVuY3Rpb24oZSl7cmV0dXJuIGUucmVwbGFjZSgvWzAtOV0vZywoZnVuY3Rpb24oZSl7cmV0dXJuIHRbK2VdfSkpfX0pKEgyLmNhbGwodC5udW1lcmFscyxTdHJpbmcpKSxsPXZvaWQgMD09PXQucGVyY2VudD8iJSI6dC5wZXJjZW50KyIiLGM9dm9pZCAwPT09dC5taW51cz8iLSI6dC5taW51cysiIix1PXZvaWQgMD09PXQubmFuPyJOYU4iOnQubmFuKyIiO2Z1bmN0aW9uIGgodCl7dmFyIG49KHQ9TDIodCkpLmZpbGwscz10LmFsaWduLGg9dC5zaWduLGQ9dC5zeW1ib2wscD10Lnplcm8sZj10LndpZHRoLG09dC5jb21tYSxnPXQucHJlY2lzaW9uLF89dC50cmltLHk9dC50eXBlOyJuIj09PXk/KG09ITAseT0iZyIpOk4yW3ldfHwodm9pZCAwPT09ZyYmKGc9MTIpLF89ITAseT0iZyIpLChwfHwiMCI9PT1uJiYiPSI9PT1zKSYmKHA9ITAsbj0iMCIscz0iPSIpO3ZhciB2PSIkIj09PWQ/aToiIyI9PT1kJiYvW2JveFhdLy50ZXN0KHkpPyIwIit5LnRvTG93ZXJDYXNlKCk6IiIsYj0iJCI9PT1kP3I6L1slcF0vLnRlc3QoeSk/bDoiIix4PU4yW3ldLHc9L1tkZWZncHJzJV0vLnRlc3QoeSk7ZnVuY3Rpb24gUyh0KXt2YXIgaSxyLGwsZD12LFM9YjtpZigiYyI9PT15KVM9eCh0KStTLHQ9IiI7ZWxzZXt2YXIgTT0odD0rdCk8MHx8MS90PDA7aWYodD1pc05hTih0KT91OngoTWF0aC5hYnModCksZyksXyYmKHQ9KGZ1bmN0aW9uIEUodCl7dDpmb3IodmFyIGUsbj10Lmxlbmd0aCxpPTEscj0tMTtpPG47KytpKXN3aXRjaCh0W2ldKXtjYXNlIi4iOnI9ZT1pO2JyZWFrO2Nhc2UiMCI6MD09PXImJihyPWkpLGU9aTticmVhaztkZWZhdWx0OmlmKCErdFtpXSlicmVhayB0O3I+MCYmKHI9MCl9cmV0dXJuIHI+MD90LnNsaWNlKDAscikrdC5zbGljZShlKzEpOnR9KSh0KSksTSYmMD09K3QmJiIrIiE9PWgmJihNPSExKSxkPShNPyIoIj09PWg/aDpjOiItIj09PWh8fCIoIj09PWg/IiI6aCkrZCxTPSgicyI9PT15P0YyWzgrQzIvM106IiIpK1MrKE0mJiIoIj09PWg/IikiOiIiKSx3KWZvcihpPS0xLHI9dC5sZW5ndGg7KytpPHI7KWlmKDQ4PihsPXQuY2hhckNvZGVBdChpKSl8fGw+NTcpe1M9KDQ2PT09bD9vK3Quc2xpY2UoaSsxKTp0LnNsaWNlKGkpKStTLHQ9dC5zbGljZSgwLGkpO2JyZWFrfX1tJiYhcCYmKHQ9ZSh0LDEvMCkpO3ZhciBUPWQubGVuZ3RoK3QubGVuZ3RoK1MubGVuZ3RoLEE9VDxmP25ldyBBcnJheShmLVQrMSkuam9pbihuKToiIjtzd2l0Y2gobSYmcCYmKHQ9ZShBK3QsQS5sZW5ndGg/Zi1TLmxlbmd0aDoxLzApLEE9IiIpLHMpe2Nhc2UiPCI6dD1kK3QrUytBO2JyZWFrO2Nhc2UiPSI6dD1kK0ErdCtTO2JyZWFrO2Nhc2UiXiI6dD1BLnNsaWNlKDAsVD1BLmxlbmd0aD4+MSkrZCt0K1MrQS5zbGljZShUKTticmVhaztkZWZhdWx0OnQ9QStkK3QrU31yZXR1cm4gYSh0KX1yZXR1cm4gZz12b2lkIDA9PT1nPzY6L1tncHJzXS8udGVzdCh5KT9NYXRoLm1heCgxLE1hdGgubWluKDIxLGcpKTpNYXRoLm1heCgwLE1hdGgubWluKDIwLGcpKSxTLnRvU3RyaW5nPWZ1bmN0aW9uKCl7cmV0dXJuIHQrIiJ9LFN9cmV0dXJue2Zvcm1hdDpoLGZvcm1hdFByZWZpeDpmdW5jdGlvbiBkKHQsZSl7dmFyIG49aCgoKHQ9TDIodCkpLnR5cGU9ImYiLHQpKSxpPTMqTWF0aC5tYXgoLTgsTWF0aC5taW4oOCxNYXRoLmZsb29yKEEyKGUpLzMpKSkscj1NYXRoLnBvdygxMCwtaSksbz1GMls4K2kvM107cmV0dXJuIGZ1bmN0aW9uKHQpe3JldHVybiBuKHIqdCkrb319fX0pKHQpLEQyPXoyLmZvcm1hdCxCMj16Mi5mb3JtYXRQcmVmaXh9KSh7ZGVjaW1hbDoiLiIsdGhvdXNhbmRzOiIsIixncm91cGluZzpbM10sY3VycmVuY3k6WyIkIiwiIl0sbWludXM6Ii0ifSk7dmFyIEoyPW5ldyBEYXRlLFEyPW5ldyBEYXRlO2Z1bmN0aW9uIHQ1KHQsZSxuLGkpe2Z1bmN0aW9uIHIoZSl7cmV0dXJuIHQoZT0wPT09YXJndW1lbnRzLmxlbmd0aD9uZXcgRGF0ZTpuZXcgRGF0ZSgrZSkpLGV9cmV0dXJuIHIuZmxvb3I9ZnVuY3Rpb24oZSl7cmV0dXJuIHQoZT1uZXcgRGF0ZSgrZSkpLGV9LHIuY2VpbD1mdW5jdGlvbihuKXtyZXR1cm4gdChuPW5ldyBEYXRlKG4tMSkpLGUobiwxKSx0KG4pLG59LHIucm91bmQ9ZnVuY3Rpb24odCl7dmFyIGU9cih0KSxuPXIuY2VpbCh0KTtyZXR1cm4gdC1lPG4tdD9lOm59LHIub2Zmc2V0PWZ1bmN0aW9uKHQsbil7cmV0dXJuIGUodD1uZXcgRGF0ZSgrdCksbnVsbD09bj8xOk1hdGguZmxvb3IobikpLHR9LHIucmFuZ2U9ZnVuY3Rpb24obixpLG8pe3ZhciBhLHM9W107aWYobj1yLmNlaWwobiksbz1udWxsPT1vPzE6TWF0aC5mbG9vcihvKSwhKG48aSYmbz4wKSlyZXR1cm4gcztkb3tzLnB1c2goYT1uZXcgRGF0ZSgrbikpLGUobixvKSx0KG4pfXdoaWxlKGE8biYmbjxpKTtyZXR1cm4gc30sci5maWx0ZXI9ZnVuY3Rpb24obil7cmV0dXJuIHQ1KChmdW5jdGlvbihlKXtpZihlPj1lKWZvcig7dChlKSwhbihlKTspZS5zZXRUaW1lKGUtMSl9KSwoZnVuY3Rpb24odCxpKXtpZih0Pj10KWlmKGk8MClmb3IoOysraTw9MDspZm9yKDtlKHQsLTEpLCFuKHQpOyk7ZWxzZSBmb3IoOy0taT49MDspZm9yKDtlKHQsMSksIW4odCk7KTt9KSl9LG4mJihyLmNvdW50PWZ1bmN0aW9uKGUsaSl7cmV0dXJuIEoyLnNldFRpbWUoK2UpLFEyLnNldFRpbWUoK2kpLHQoSjIpLHQoUTIpLE1hdGguZmxvb3IobihKMixRMikpfSxyLmV2ZXJ5PWZ1bmN0aW9uKHQpe3JldHVybiB0PU1hdGguZmxvb3IodCksaXNGaW5pdGUodCkmJnQ+MD90PjE/ci5maWx0ZXIoaT9mdW5jdGlvbihlKXtyZXR1cm4gaShlKSV0PT0wfTpmdW5jdGlvbihlKXtyZXR1cm4gci5jb3VudCgwLGUpJXQ9PTB9KTpyOm51bGx9KSxyfXZhciBlNT10NSgoZnVuY3Rpb24oKXt9KSwoZnVuY3Rpb24odCxlKXt0LnNldFRpbWUoK3QrZSl9KSwoZnVuY3Rpb24odCxlKXtyZXR1cm4gZS10fSkpO2U1LmV2ZXJ5PWZ1bmN0aW9uKHQpe3JldHVybiB0PU1hdGguZmxvb3IodCksaXNGaW5pdGUodCkmJnQ+MD90PjE/dDUoKGZ1bmN0aW9uKGUpe2Uuc2V0VGltZShNYXRoLmZsb29yKGUvdCkqdCl9KSwoZnVuY3Rpb24oZSxuKXtlLnNldFRpbWUoK2Urbip0KX0pLChmdW5jdGlvbihlLG4pe3JldHVybihuLWUpL3R9KSk6ZTU6bnVsbH07dmFyIG41PTFlMyxpNT02ZTQscjU9MzZlNSxvNT04NjRlNSxhNT02MDQ4ZTUsczU9dDUoKGZ1bmN0aW9uKHQpe3Quc2V0VGltZSh0LXQuZ2V0TWlsbGlzZWNvbmRzKCkpfSksKGZ1bmN0aW9uKHQsZSl7dC5zZXRUaW1lKCt0K2UqbjUpfSksKGZ1bmN0aW9uKHQsZSl7cmV0dXJuKGUtdCkvbjV9KSwoZnVuY3Rpb24odCl7cmV0dXJuIHQuZ2V0VVRDU2Vjb25kcygpfSkpLGw1PXQ1KChmdW5jdGlvbih0KXt0LnNldFRpbWUodC10LmdldE1pbGxpc2Vjb25kcygpLXQuZ2V0U2Vjb25kcygpKm41KX0pLChmdW5jdGlvbih0LGUpe3Quc2V0VGltZSgrdCtlKmk1KX0pLChmdW5jdGlvbih0LGUpe3JldHVybihlLXQpL2k1fSksKGZ1bmN0aW9uKHQpe3JldHVybiB0LmdldE1pbnV0ZXMoKX0pKSxjNT10NSgoZnVuY3Rpb24odCl7dC5zZXRUaW1lKHQtdC5nZXRNaWxsaXNlY29uZHMoKS10LmdldFNlY29uZHMoKSpuNS10LmdldE1pbnV0ZXMoKSppNSl9KSwoZnVuY3Rpb24odCxlKXt0LnNldFRpbWUoK3QrZSpyNSl9KSwoZnVuY3Rpb24odCxlKXtyZXR1cm4oZS10KS9yNX0pLChmdW5jdGlvbih0KXtyZXR1cm4gdC5nZXRIb3VycygpfSkpLHU1PXQ1KChmdW5jdGlvbih0KXt0LnNldEhvdXJzKDAsMCwwLDApfSksKGZ1bmN0aW9uKHQsZSl7dC5zZXREYXRlKHQuZ2V0RGF0ZSgpK2UpfSksKGZ1bmN0aW9uKHQsZSl7cmV0dXJuKGUtdC0oZS5nZXRUaW1lem9uZU9mZnNldCgpLXQuZ2V0VGltZXpvbmVPZmZzZXQoKSkqaTUpL281fSksKGZ1bmN0aW9uKHQpe3JldHVybiB0LmdldERhdGUoKS0xfSkpO2Z1bmN0aW9uIGg1KHQpe3JldHVybiB0NSgoZnVuY3Rpb24oZSl7ZS5zZXREYXRlKGUuZ2V0RGF0ZSgpLShlLmdldERheSgpKzctdCklNyksZS5zZXRIb3VycygwLDAsMCwwKX0pLChmdW5jdGlvbih0LGUpe3Quc2V0RGF0ZSh0LmdldERhdGUoKSs3KmUpfSksKGZ1bmN0aW9uKHQsZSl7cmV0dXJuKGUtdC0oZS5nZXRUaW1lem9uZU9mZnNldCgpLXQuZ2V0VGltZXpvbmVPZmZzZXQoKSkqaTUpL2E1fSkpfXZhciBkNT1oNSgwKSxwNT1oNSgxKTtoNSgyKSxoNSgzKTt2YXIgZjU9aDUoNCk7aDUoNSksaDUoNik7dmFyIG01PXQ1KChmdW5jdGlvbih0KXt0LnNldERhdGUoMSksdC5zZXRIb3VycygwLDAsMCwwKX0pLChmdW5jdGlvbih0LGUpe3Quc2V0TW9udGgodC5nZXRNb250aCgpK2UpfSksKGZ1bmN0aW9uKHQsZSl7cmV0dXJuIGUuZ2V0TW9udGgoKS10LmdldE1vbnRoKCkrMTIqKGUuZ2V0RnVsbFllYXIoKS10LmdldEZ1bGxZZWFyKCkpfSksKGZ1bmN0aW9uKHQpe3JldHVybiB0LmdldE1vbnRoKCl9KSksZzU9dDUoKGZ1bmN0aW9uKHQpe3Quc2V0TW9udGgoMCwxKSx0LnNldEhvdXJzKDAsMCwwLDApfSksKGZ1bmN0aW9uKHQsZSl7dC5zZXRGdWxsWWVhcih0LmdldEZ1bGxZZWFyKCkrZSl9KSwoZnVuY3Rpb24odCxlKXtyZXR1cm4gZS5nZXRGdWxsWWVhcigpLXQuZ2V0RnVsbFllYXIoKX0pLChmdW5jdGlvbih0KXtyZXR1cm4gdC5nZXRGdWxsWWVhcigpfSkpO2c1LmV2ZXJ5PWZ1bmN0aW9uKHQpe3JldHVybiBpc0Zpbml0ZSh0PU1hdGguZmxvb3IodCkpJiZ0PjA/dDUoKGZ1bmN0aW9uKGUpe2Uuc2V0RnVsbFllYXIoTWF0aC5mbG9vcihlLmdldEZ1bGxZZWFyKCkvdCkqdCksZS5zZXRNb250aCgwLDEpLGUuc2V0SG91cnMoMCwwLDAsMCl9KSwoZnVuY3Rpb24oZSxuKXtlLnNldEZ1bGxZZWFyKGUuZ2V0RnVsbFllYXIoKStuKnQpfSkpOm51bGx9O3ZhciBfNT10NSgoZnVuY3Rpb24odCl7dC5zZXRVVENTZWNvbmRzKDAsMCl9KSwoZnVuY3Rpb24odCxlKXt0LnNldFRpbWUoK3QrZSppNSl9KSwoZnVuY3Rpb24odCxlKXtyZXR1cm4oZS10KS9pNX0pLChmdW5jdGlvbih0KXtyZXR1cm4gdC5nZXRVVENNaW51dGVzKCl9KSkseTU9dDUoKGZ1bmN0aW9uKHQpe3Quc2V0VVRDTWludXRlcygwLDAsMCl9KSwoZnVuY3Rpb24odCxlKXt0LnNldFRpbWUoK3QrZSpyNSl9KSwoZnVuY3Rpb24odCxlKXtyZXR1cm4oZS10KS9yNX0pLChmdW5jdGlvbih0KXtyZXR1cm4gdC5nZXRVVENIb3VycygpfSkpLHY1PXQ1KChmdW5jdGlvbih0KXt0LnNldFVUQ0hvdXJzKDAsMCwwLDApfSksKGZ1bmN0aW9uKHQsZSl7dC5zZXRVVENEYXRlKHQuZ2V0VVRDRGF0ZSgpK2UpfSksKGZ1bmN0aW9uKHQsZSl7cmV0dXJuKGUtdCkvbzV9KSwoZnVuY3Rpb24odCl7cmV0dXJuIHQuZ2V0VVRDRGF0ZSgpLTF9KSk7ZnVuY3Rpb24gYjUodCl7cmV0dXJuIHQ1KChmdW5jdGlvbihlKXtlLnNldFVUQ0RhdGUoZS5nZXRVVENEYXRlKCktKGUuZ2V0VVRDRGF5KCkrNy10KSU3KSxlLnNldFVUQ0hvdXJzKDAsMCwwLDApfSksKGZ1bmN0aW9uKHQsZSl7dC5zZXRVVENEYXRlKHQuZ2V0VVRDRGF0ZSgpKzcqZSl9KSwoZnVuY3Rpb24odCxlKXtyZXR1cm4oZS10KS9hNX0pKX12YXIgeDU9YjUoMCksdzU9YjUoMSk7YjUoMiksYjUoMyk7dmFyIFM1PWI1KDQpO2I1KDUpLGI1KDYpO3ZhciBNNT10NSgoZnVuY3Rpb24odCl7dC5zZXRVVENEYXRlKDEpLHQuc2V0VVRDSG91cnMoMCwwLDAsMCl9KSwoZnVuY3Rpb24odCxlKXt0LnNldFVUQ01vbnRoKHQuZ2V0VVRDTW9udGgoKStlKX0pLChmdW5jdGlvbih0LGUpe3JldHVybiBlLmdldFVUQ01vbnRoKCktdC5nZXRVVENNb250aCgpKzEyKihlLmdldFVUQ0Z1bGxZZWFyKCktdC5nZXRVVENGdWxsWWVhcigpKX0pLChmdW5jdGlvbih0KXtyZXR1cm4gdC5nZXRVVENNb250aCgpfSkpLEU1PXQ1KChmdW5jdGlvbih0KXt0LnNldFVUQ01vbnRoKDAsMSksdC5zZXRVVENIb3VycygwLDAsMCwwKX0pLChmdW5jdGlvbih0LGUpe3Quc2V0VVRDRnVsbFllYXIodC5nZXRVVENGdWxsWWVhcigpK2UpfSksKGZ1bmN0aW9uKHQsZSl7cmV0dXJuIGUuZ2V0VVRDRnVsbFllYXIoKS10LmdldFVUQ0Z1bGxZZWFyKCl9KSwoZnVuY3Rpb24odCl7cmV0dXJuIHQuZ2V0VVRDRnVsbFllYXIoKX0pKTtmdW5jdGlvbiBUNSh0KXtpZigwPD10LnkmJnQueTwxMDApe3ZhciBlPW5ldyBEYXRlKC0xLHQubSx0LmQsdC5ILHQuTSx0LlMsdC5MKTtyZXR1cm4gZS5zZXRGdWxsWWVhcih0LnkpLGV9cmV0dXJuIG5ldyBEYXRlKHQueSx0Lm0sdC5kLHQuSCx0Lk0sdC5TLHQuTCl9ZnVuY3Rpb24gQTUodCl7aWYoMDw9dC55JiZ0Lnk8MTAwKXt2YXIgZT1uZXcgRGF0ZShEYXRlLlVUQygtMSx0Lm0sdC5kLHQuSCx0Lk0sdC5TLHQuTCkpO3JldHVybiBlLnNldFVUQ0Z1bGxZZWFyKHQueSksZX1yZXR1cm4gbmV3IERhdGUoRGF0ZS5VVEModC55LHQubSx0LmQsdC5ILHQuTSx0LlMsdC5MKSl9ZnVuY3Rpb24gQzUodCxlLG4pe3JldHVybnt5OnQsbTplLGQ6bixIOjAsTTowLFM6MCxMOjB9fUU1LmV2ZXJ5PWZ1bmN0aW9uKHQpe3JldHVybiBpc0Zpbml0ZSh0PU1hdGguZmxvb3IodCkpJiZ0PjA/dDUoKGZ1bmN0aW9uKGUpe2Uuc2V0VVRDRnVsbFllYXIoTWF0aC5mbG9vcihlLmdldFVUQ0Z1bGxZZWFyKCkvdCkqdCksZS5zZXRVVENNb250aCgwLDEpLGUuc2V0VVRDSG91cnMoMCwwLDAsMCl9KSwoZnVuY3Rpb24oZSxuKXtlLnNldFVUQ0Z1bGxZZWFyKGUuZ2V0VVRDRnVsbFllYXIoKStuKnQpfSkpOm51bGx9O3ZhciBrNSxMNSxQNSxJNT17Ii0iOiIiLF86IiAiLDA6IjAifSxONT0vXlxzKlxkKy8sTzU9L14lLyxSNT0vW1xcXiQqKz98W1xdKCkue31dL2c7ZnVuY3Rpb24gejUodCxlLG4pe3ZhciBpPXQ8MD8iLSI6IiIscj0oaT8tdDp0KSsiIixvPXIubGVuZ3RoO3JldHVybiBpKyhvPG4/bmV3IEFycmF5KG4tbysxKS5qb2luKGUpK3I6cil9ZnVuY3Rpb24gRDUodCl7cmV0dXJuIHQucmVwbGFjZShSNSwiXFwkJiIpfWZ1bmN0aW9uIEI1KHQpe3JldHVybiBuZXcgUmVnRXhwKCJeKD86Iit0Lm1hcChENSkuam9pbigifCIpKyIpIiwiaSIpfWZ1bmN0aW9uIEg1KHQpe2Zvcih2YXIgZT17fSxuPS0xLGk9dC5sZW5ndGg7KytuPGk7KWVbdFtuXS50b0xvd2VyQ2FzZSgpXT1uO3JldHVybiBlfWZ1bmN0aW9uIEY1KHQsZSxuKXt2YXIgaT1ONS5leGVjKGUuc2xpY2UobixuKzEpKTtyZXR1cm4gaT8odC53PStpWzBdLG4raVswXS5sZW5ndGgpOi0xfWZ1bmN0aW9uIFY1KHQsZSxuKXt2YXIgaT1ONS5leGVjKGUuc2xpY2UobixuKzEpKTtyZXR1cm4gaT8odC51PStpWzBdLG4raVswXS5sZW5ndGgpOi0xfWZ1bmN0aW9uIGo1KHQsZSxuKXt2YXIgaT1ONS5leGVjKGUuc2xpY2UobixuKzIpKTtyZXR1cm4gaT8odC5VPStpWzBdLG4raVswXS5sZW5ndGgpOi0xfWZ1bmN0aW9uIFU1KHQsZSxuKXt2YXIgaT1ONS5leGVjKGUuc2xpY2UobixuKzIpKTtyZXR1cm4gaT8odC5WPStpWzBdLG4raVswXS5sZW5ndGgpOi0xfWZ1bmN0aW9uIEc1KHQsZSxuKXt2YXIgaT1ONS5leGVjKGUuc2xpY2UobixuKzIpKTtyZXR1cm4gaT8odC5XPStpWzBdLG4raVswXS5sZW5ndGgpOi0xfWZ1bmN0aW9uIFc1KHQsZSxuKXt2YXIgaT1ONS5leGVjKGUuc2xpY2UobixuKzQpKTtyZXR1cm4gaT8odC55PStpWzBdLG4raVswXS5sZW5ndGgpOi0xfWZ1bmN0aW9uIHE1KHQsZSxuKXt2YXIgaT1ONS5leGVjKGUuc2xpY2UobixuKzIpKTtyZXR1cm4gaT8odC55PStpWzBdKygraVswXT42OD8xOTAwOjJlMyksbitpWzBdLmxlbmd0aCk6LTF9ZnVuY3Rpb24gWTUodCxlLG4pe3ZhciBpPS9eKFopfChbKy1dXGRcZCkoPzo6PyhcZFxkKSk/Ly5leGVjKGUuc2xpY2UobixuKzYpKTtyZXR1cm4gaT8odC5aPWlbMV0/MDotKGlbMl0rKGlbM118fCIwMCIpKSxuK2lbMF0ubGVuZ3RoKTotMX1mdW5jdGlvbiBYNSh0LGUsbil7dmFyIGk9TjUuZXhlYyhlLnNsaWNlKG4sbisxKSk7cmV0dXJuIGk/KHQucT0zKmlbMF0tMyxuK2lbMF0ubGVuZ3RoKTotMX1mdW5jdGlvbiAkNSh0LGUsbil7dmFyIGk9TjUuZXhlYyhlLnNsaWNlKG4sbisyKSk7cmV0dXJuIGk/KHQubT1pWzBdLTEsbitpWzBdLmxlbmd0aCk6LTF9ZnVuY3Rpb24gSzUodCxlLG4pe3ZhciBpPU41LmV4ZWMoZS5zbGljZShuLG4rMikpO3JldHVybiBpPyh0LmQ9K2lbMF0sbitpWzBdLmxlbmd0aCk6LTF9ZnVuY3Rpb24gWjUodCxlLG4pe3ZhciBpPU41LmV4ZWMoZS5zbGljZShuLG4rMykpO3JldHVybiBpPyh0Lm09MCx0LmQ9K2lbMF0sbitpWzBdLmxlbmd0aCk6LTF9ZnVuY3Rpb24gSjUodCxlLG4pe3ZhciBpPU41LmV4ZWMoZS5zbGljZShuLG4rMikpO3JldHVybiBpPyh0Lkg9K2lbMF0sbitpWzBdLmxlbmd0aCk6LTF9ZnVuY3Rpb24gUTUodCxlLG4pe3ZhciBpPU41LmV4ZWMoZS5zbGljZShuLG4rMikpO3JldHVybiBpPyh0Lk09K2lbMF0sbitpWzBdLmxlbmd0aCk6LTF9ZnVuY3Rpb24gdDModCxlLG4pe3ZhciBpPU41LmV4ZWMoZS5zbGljZShuLG4rMikpO3JldHVybiBpPyh0LlM9K2lbMF0sbitpWzBdLmxlbmd0aCk6LTF9ZnVuY3Rpb24gZTModCxlLG4pe3ZhciBpPU41LmV4ZWMoZS5zbGljZShuLG4rMykpO3JldHVybiBpPyh0Lkw9K2lbMF0sbitpWzBdLmxlbmd0aCk6LTF9ZnVuY3Rpb24gbjModCxlLG4pe3ZhciBpPU41LmV4ZWMoZS5zbGljZShuLG4rNikpO3JldHVybiBpPyh0Lkw9TWF0aC5mbG9vcihpWzBdLzFlMyksbitpWzBdLmxlbmd0aCk6LTF9ZnVuY3Rpb24gaTModCxlLG4pe3ZhciBpPU81LmV4ZWMoZS5zbGljZShuLG4rMSkpO3JldHVybiBpP24raVswXS5sZW5ndGg6LTF9ZnVuY3Rpb24gcjModCxlLG4pe3ZhciBpPU41LmV4ZWMoZS5zbGljZShuKSk7cmV0dXJuIGk/KHQuUT0raVswXSxuK2lbMF0ubGVuZ3RoKTotMX1mdW5jdGlvbiBvMyh0LGUsbil7dmFyIGk9TjUuZXhlYyhlLnNsaWNlKG4pKTtyZXR1cm4gaT8odC5zPStpWzBdLG4raVswXS5sZW5ndGgpOi0xfWZ1bmN0aW9uIGEzKHQsZSl7cmV0dXJuIHo1KHQuZ2V0RGF0ZSgpLGUsMil9ZnVuY3Rpb24gczModCxlKXtyZXR1cm4gejUodC5nZXRIb3VycygpLGUsMil9ZnVuY3Rpb24gbDModCxlKXtyZXR1cm4gejUodC5nZXRIb3VycygpJTEyfHwxMixlLDIpfWZ1bmN0aW9uIGMzKHQsZSl7cmV0dXJuIHo1KDErdTUuY291bnQoZzUodCksdCksZSwzKX1mdW5jdGlvbiB1Myh0LGUpe3JldHVybiB6NSh0LmdldE1pbGxpc2Vjb25kcygpLGUsMyl9ZnVuY3Rpb24gaDModCxlKXtyZXR1cm4gdTModCxlKSsiMDAwIn1mdW5jdGlvbiBkMyh0LGUpe3JldHVybiB6NSh0LmdldE1vbnRoKCkrMSxlLDIpfWZ1bmN0aW9uIHAzKHQsZSl7cmV0dXJuIHo1KHQuZ2V0TWludXRlcygpLGUsMil9ZnVuY3Rpb24gZjModCxlKXtyZXR1cm4gejUodC5nZXRTZWNvbmRzKCksZSwyKX1mdW5jdGlvbiBtMyh0KXt2YXIgZT10LmdldERheSgpO3JldHVybiAwPT09ZT83OmV9ZnVuY3Rpb24gZzModCxlKXtyZXR1cm4gejUoZDUuY291bnQoZzUodCktMSx0KSxlLDIpfWZ1bmN0aW9uIF8zKHQsZSl7dmFyIG49dC5nZXREYXkoKTtyZXR1cm4gdD1uPj00fHwwPT09bj9mNSh0KTpmNS5jZWlsKHQpLHo1KGY1LmNvdW50KGc1KHQpLHQpKyg0PT09ZzUodCkuZ2V0RGF5KCkpLGUsMil9ZnVuY3Rpb24geTModCl7cmV0dXJuIHQuZ2V0RGF5KCl9ZnVuY3Rpb24gdjModCxlKXtyZXR1cm4gejUocDUuY291bnQoZzUodCktMSx0KSxlLDIpfWZ1bmN0aW9uIGIzKHQsZSl7cmV0dXJuIHo1KHQuZ2V0RnVsbFllYXIoKSUxMDAsZSwyKX1mdW5jdGlvbiB4Myh0LGUpe3JldHVybiB6NSh0LmdldEZ1bGxZZWFyKCklMWU0LGUsNCl9ZnVuY3Rpb24gdzModCl7dmFyIGU9dC5nZXRUaW1lem9uZU9mZnNldCgpO3JldHVybihlPjA/Ii0iOihlKj0tMSwiKyIpKSt6NShlLzYwfDAsIjAiLDIpK3o1KGUlNjAsIjAiLDIpfWZ1bmN0aW9uIFMzKHQsZSl7cmV0dXJuIHo1KHQuZ2V0VVRDRGF0ZSgpLGUsMil9ZnVuY3Rpb24gTTModCxlKXtyZXR1cm4gejUodC5nZXRVVENIb3VycygpLGUsMil9ZnVuY3Rpb24gRTModCxlKXtyZXR1cm4gejUodC5nZXRVVENIb3VycygpJTEyfHwxMixlLDIpfWZ1bmN0aW9uIFQzKHQsZSl7cmV0dXJuIHo1KDErdjUuY291bnQoRTUodCksdCksZSwzKX1mdW5jdGlvbiBBMyh0LGUpe3JldHVybiB6NSh0LmdldFVUQ01pbGxpc2Vjb25kcygpLGUsMyl9ZnVuY3Rpb24gQzModCxlKXtyZXR1cm4gQTModCxlKSsiMDAwIn1mdW5jdGlvbiBrMyh0LGUpe3JldHVybiB6NSh0LmdldFVUQ01vbnRoKCkrMSxlLDIpfWZ1bmN0aW9uIEwzKHQsZSl7cmV0dXJuIHo1KHQuZ2V0VVRDTWludXRlcygpLGUsMil9ZnVuY3Rpb24gUDModCxlKXtyZXR1cm4gejUodC5nZXRVVENTZWNvbmRzKCksZSwyKX1mdW5jdGlvbiBJMyh0KXt2YXIgZT10LmdldFVUQ0RheSgpO3JldHVybiAwPT09ZT83OmV9ZnVuY3Rpb24gTjModCxlKXtyZXR1cm4gejUoeDUuY291bnQoRTUodCktMSx0KSxlLDIpfWZ1bmN0aW9uIE8zKHQsZSl7dmFyIG49dC5nZXRVVENEYXkoKTtyZXR1cm4gdD1uPj00fHwwPT09bj9TNSh0KTpTNS5jZWlsKHQpLHo1KFM1LmNvdW50KEU1KHQpLHQpKyg0PT09RTUodCkuZ2V0VVRDRGF5KCkpLGUsMil9ZnVuY3Rpb24gUjModCl7cmV0dXJuIHQuZ2V0VVRDRGF5KCl9ZnVuY3Rpb24gejModCxlKXtyZXR1cm4gejUodzUuY291bnQoRTUodCktMSx0KSxlLDIpfWZ1bmN0aW9uIEQzKHQsZSl7cmV0dXJuIHo1KHQuZ2V0VVRDRnVsbFllYXIoKSUxMDAsZSwyKX1mdW5jdGlvbiBCMyh0LGUpe3JldHVybiB6NSh0LmdldFVUQ0Z1bGxZZWFyKCklMWU0LGUsNCl9ZnVuY3Rpb24gSDMoKXtyZXR1cm4iKzAwMDAifWZ1bmN0aW9uIEYzKCl7cmV0dXJuIiUifWZ1bmN0aW9uIFYzKHQpe3JldHVybit0fWZ1bmN0aW9uIGozKHQpe3JldHVybiBNYXRoLmZsb29yKCt0LzFlMyl9IShmdW5jdGlvbiBVMyh0KXtrNT0oZnVuY3Rpb24gZSh0KXt2YXIgZT10LmRhdGVUaW1lLG49dC5kYXRlLGk9dC50aW1lLHI9dC5wZXJpb2RzLG89dC5kYXlzLGE9dC5zaG9ydERheXMscz10Lm1vbnRocyxsPXQuc2hvcnRNb250aHMsYz1CNShyKSx1PUg1KHIpLGg9QjUobyksZD1INShvKSxwPUI1KGEpLGY9SDUoYSksbT1CNShzKSxnPUg1KHMpLF89QjUobCkseT1INShsKSx2PXthOmZ1bmN0aW9uIGIodCl7cmV0dXJuIGFbdC5nZXREYXkoKV19LEE6ZnVuY3Rpb24geCh0KXtyZXR1cm4gb1t0LmdldERheSgpXX0sYjpmdW5jdGlvbiB3KHQpe3JldHVybiBsW3QuZ2V0TW9udGgoKV19LEI6ZnVuY3Rpb24gUyh0KXtyZXR1cm4gc1t0LmdldE1vbnRoKCldfSxjOm51bGwsZDphMyxlOmEzLGY6aDMsSDpzMyxJOmwzLGo6YzMsTDp1MyxtOmQzLE06cDMscDpmdW5jdGlvbiBNKHQpe3JldHVybiByWysodC5nZXRIb3VycygpPj0xMildfSxxOmZ1bmN0aW9uIEUodCl7cmV0dXJuIDErfn4odC5nZXRNb250aCgpLzMpfSxROlYzLHM6ajMsUzpmMyx1Om0zLFU6ZzMsVjpfMyx3OnkzLFc6djMseDpudWxsLFg6bnVsbCx5OmIzLFk6eDMsWjp3MywiJSI6RjN9LFQ9e2E6ZnVuY3Rpb24gQSh0KXtyZXR1cm4gYVt0LmdldFVUQ0RheSgpXX0sQTpmdW5jdGlvbiBDKHQpe3JldHVybiBvW3QuZ2V0VVRDRGF5KCldfSxiOmZ1bmN0aW9uIGsodCl7cmV0dXJuIGxbdC5nZXRVVENNb250aCgpXX0sQjpmdW5jdGlvbiBMKHQpe3JldHVybiBzW3QuZ2V0VVRDTW9udGgoKV19LGM6bnVsbCxkOlMzLGU6UzMsZjpDMyxIOk0zLEk6RTMsajpUMyxMOkEzLG06azMsTTpMMyxwOmZ1bmN0aW9uIFAodCl7cmV0dXJuIHJbKyh0LmdldFVUQ0hvdXJzKCk+PTEyKV19LHE6ZnVuY3Rpb24gSSh0KXtyZXR1cm4gMSt+fih0LmdldFVUQ01vbnRoKCkvMyl9LFE6VjMsczpqMyxTOlAzLHU6STMsVTpOMyxWOk8zLHc6UjMsVzp6Myx4Om51bGwsWDpudWxsLHk6RDMsWTpCMyxaOkgzLCIlIjpGM30sTj17YTpmdW5jdGlvbiBPKHQsZSxuKXt2YXIgaT1wLmV4ZWMoZS5zbGljZShuKSk7cmV0dXJuIGk/KHQudz1mW2lbMF0udG9Mb3dlckNhc2UoKV0sbitpWzBdLmxlbmd0aCk6LTF9LEE6ZnVuY3Rpb24gUih0LGUsbil7dmFyIGk9aC5leGVjKGUuc2xpY2UobikpO3JldHVybiBpPyh0Lnc9ZFtpWzBdLnRvTG93ZXJDYXNlKCldLG4raVswXS5sZW5ndGgpOi0xfSxiOmZ1bmN0aW9uIHoodCxlLG4pe3ZhciBpPV8uZXhlYyhlLnNsaWNlKG4pKTtyZXR1cm4gaT8odC5tPXlbaVswXS50b0xvd2VyQ2FzZSgpXSxuK2lbMF0ubGVuZ3RoKTotMX0sQjpmdW5jdGlvbiBEKHQsZSxuKXt2YXIgaT1tLmV4ZWMoZS5zbGljZShuKSk7cmV0dXJuIGk/KHQubT1nW2lbMF0udG9Mb3dlckNhc2UoKV0sbitpWzBdLmxlbmd0aCk6LTF9LGM6ZnVuY3Rpb24gQih0LG4saSl7cmV0dXJuIEcodCxlLG4saSl9LGQ6SzUsZTpLNSxmOm4zLEg6SjUsSTpKNSxqOlo1LEw6ZTMsbTokNSxNOlE1LHA6ZnVuY3Rpb24gSCh0LGUsbil7dmFyIGk9Yy5leGVjKGUuc2xpY2UobikpO3JldHVybiBpPyh0LnA9dVtpWzBdLnRvTG93ZXJDYXNlKCldLG4raVswXS5sZW5ndGgpOi0xfSxxOlg1LFE6cjMsczpvMyxTOnQzLHU6VjUsVTpqNSxWOlU1LHc6RjUsVzpHNSx4OmZ1bmN0aW9uIEYodCxlLGkpe3JldHVybiBHKHQsbixlLGkpfSxYOmZ1bmN0aW9uIFYodCxlLG4pe3JldHVybiBHKHQsaSxlLG4pfSx5OnE1LFk6VzUsWjpZNSwiJSI6aTN9O2Z1bmN0aW9uIGoodCxlKXtyZXR1cm4gZnVuY3Rpb24obil7dmFyIGkscixvLGE9W10scz0tMSxsPTAsYz10Lmxlbmd0aDtmb3IobiBpbnN0YW5jZW9mIERhdGV8fChuPW5ldyBEYXRlKCtuKSk7KytzPGM7KTM3PT09dC5jaGFyQ29kZUF0KHMpJiYoYS5wdXNoKHQuc2xpY2UobCxzKSksbnVsbCE9KHI9STVbaT10LmNoYXJBdCgrK3MpXSk/aT10LmNoYXJBdCgrK3MpOnI9ImUiPT09aT8iICI6IjAiLChvPWVbaV0pJiYoaT1vKG4scikpLGEucHVzaChpKSxsPXMrMSk7cmV0dXJuIGEucHVzaCh0LnNsaWNlKGwscykpLGEuam9pbigiIil9fWZ1bmN0aW9uIFUodCxlKXtyZXR1cm4gZnVuY3Rpb24obil7dmFyIGkscixvPUM1KDE5MDAsdm9pZCAwLDEpO2lmKEcobyx0LG4rPSIiLDApIT1uLmxlbmd0aClyZXR1cm4gbnVsbDtpZigiUSJpbiBvKXJldHVybiBuZXcgRGF0ZShvLlEpO2lmKCJzImluIG8pcmV0dXJuIG5ldyBEYXRlKDFlMypvLnMrKCJMImluIG8/by5MOjApKTtpZihlJiYhKCJaImluIG8pJiYoby5aPTApLCJwImluIG8mJihvLkg9by5IJTEyKzEyKm8ucCksdm9pZCAwPT09by5tJiYoby5tPSJxImluIG8/by5xOjApLCJWImluIG8pe2lmKG8uVjwxfHxvLlY+NTMpcmV0dXJuIG51bGw7InciaW4gb3x8KG8udz0xKSwiWiJpbiBvPyhyPShpPUE1KEM1KG8ueSwwLDEpKSkuZ2V0VVRDRGF5KCksaT1yPjR8fDA9PT1yP3c1LmNlaWwoaSk6dzUoaSksaT12NS5vZmZzZXQoaSw3KihvLlYtMSkpLG8ueT1pLmdldFVUQ0Z1bGxZZWFyKCksby5tPWkuZ2V0VVRDTW9udGgoKSxvLmQ9aS5nZXRVVENEYXRlKCkrKG8udys2KSU3KToocj0oaT1UNShDNShvLnksMCwxKSkpLmdldERheSgpLGk9cj40fHwwPT09cj9wNS5jZWlsKGkpOnA1KGkpLGk9dTUub2Zmc2V0KGksNyooby5WLTEpKSxvLnk9aS5nZXRGdWxsWWVhcigpLG8ubT1pLmdldE1vbnRoKCksby5kPWkuZ2V0RGF0ZSgpKyhvLncrNiklNyl9ZWxzZSgiVyJpbiBvfHwiVSJpbiBvKSYmKCJ3ImluIG98fChvLnc9InUiaW4gbz9vLnUlNzoiVyJpbiBvPzE6MCkscj0iWiJpbiBvP0E1KEM1KG8ueSwwLDEpKS5nZXRVVENEYXkoKTpUNShDNShvLnksMCwxKSkuZ2V0RGF5KCksby5tPTAsby5kPSJXImluIG8/KG8udys2KSU3Kzcqby5XLShyKzUpJTc6by53Kzcqby5VLShyKzYpJTcpO3JldHVybiJaImluIG8/KG8uSCs9by5aLzEwMHwwLG8uTSs9by5aJTEwMCxBNShvKSk6VDUobyl9fWZ1bmN0aW9uIEcodCxlLG4saSl7Zm9yKHZhciByLG8sYT0wLHM9ZS5sZW5ndGgsbD1uLmxlbmd0aDthPHM7KXtpZihpPj1sKXJldHVybi0xO2lmKDM3PT09KHI9ZS5jaGFyQ29kZUF0KGErKykpKXtpZihyPWUuY2hhckF0KGErKyksIShvPU5bciBpbiBJNT9lLmNoYXJBdChhKyspOnJdKXx8KGk9byh0LG4saSkpPDApcmV0dXJuLTF9ZWxzZSBpZihyIT1uLmNoYXJDb2RlQXQoaSsrKSlyZXR1cm4tMX1yZXR1cm4gaX1yZXR1cm4gdi54PWoobix2KSx2Llg9aihpLHYpLHYuYz1qKGUsdiksVC54PWoobixUKSxULlg9aihpLFQpLFQuYz1qKGUsVCkse2Zvcm1hdDpmdW5jdGlvbih0KXt2YXIgZT1qKHQrPSIiLHYpO3JldHVybiBlLnRvU3RyaW5nPWZ1bmN0aW9uKCl7cmV0dXJuIHR9LGV9LHBhcnNlOmZ1bmN0aW9uKHQpe3ZhciBlPVUodCs9IiIsITEpO3JldHVybiBlLnRvU3RyaW5nPWZ1bmN0aW9uKCl7cmV0dXJuIHR9LGV9LHV0Y0Zvcm1hdDpmdW5jdGlvbih0KXt2YXIgZT1qKHQrPSIiLFQpO3JldHVybiBlLnRvU3RyaW5nPWZ1bmN0aW9uKCl7cmV0dXJuIHR9LGV9LHV0Y1BhcnNlOmZ1bmN0aW9uKHQpe3ZhciBlPVUodCs9IiIsITApO3JldHVybiBlLnRvU3RyaW5nPWZ1bmN0aW9uKCl7cmV0dXJuIHR9LGV9fX0pKHQpLEw1PWs1LmZvcm1hdCxQNT1rNS51dGNGb3JtYXR9KSh7ZGF0ZVRpbWU6IiV4LCAlWCIsZGF0ZToiJS1tLyUtZC8lWSIsdGltZToiJS1JOiVNOiVTICVwIixwZXJpb2RzOlsiQU0iLCJQTSJdLGRheXM6WyJTdW5kYXkiLCJNb25kYXkiLCJUdWVzZGF5IiwiV2VkbmVzZGF5IiwiVGh1cnNkYXkiLCJGcmlkYXkiLCJTYXR1cmRheSJdLHNob3J0RGF5czpbIlN1biIsIk1vbiIsIlR1ZSIsIldlZCIsIlRodSIsIkZyaSIsIlNhdCJdLG1vbnRoczpbIkphbnVhcnkiLCJGZWJydWFyeSIsIk1hcmNoIiwiQXByaWwiLCJNYXkiLCJKdW5lIiwiSnVseSIsIkF1Z3VzdCIsIlNlcHRlbWJlciIsIk9jdG9iZXIiLCJOb3ZlbWJlciIsIkRlY2VtYmVyIl0sc2hvcnRNb250aHM6WyJKYW4iLCJGZWIiLCJNYXIiLCJBcHIiLCJNYXkiLCJKdW4iLCJKdWwiLCJBdWciLCJTZXAiLCJPY3QiLCJOb3YiLCJEZWMiXX0pO3ZhciBHMz0zMTUzNmU2O2Z1bmN0aW9uIFczKHQpe3JldHVybiBuZXcgRGF0ZSh0KX1mdW5jdGlvbiBxMyh0KXtyZXR1cm4gdCBpbnN0YW5jZW9mIERhdGU/K3Q6K25ldyBEYXRlKCt0KX1mdW5jdGlvbiBZMyh0LGUsbixpLHIsbyxhLHMsbCl7dmFyIGM9RTIoeDIsbDIpLHU9Yy5pbnZlcnQsaD1jLmRvbWFpbixkPWwoIi4lTCIpLHA9bCgiOiVTIiksZj1sKCIlSTolTSIpLG09bCgiJUkgJXAiKSxnPWwoIiVhICVkIiksXz1sKCIlYiAlZCIpLHk9bCgiJUIiKSx2PWwoIiVZIiksYj1bW2EsMSwxZTNdLFthLDUsNWUzXSxbYSwxNSwxNWUzXSxbYSwzMCwzZTRdLFtvLDEsNmU0XSxbbyw1LDNlNV0sW28sMTUsOWU1XSxbbywzMCwxOGU1XSxbciwxLDM2ZTVdLFtyLDMsMTA4ZTVdLFtyLDYsMjE2ZTVdLFtyLDEyLDQzMmU1XSxbaSwxLDg2NGU1XSxbaSwyLDE3MjhlNV0sW24sMSw2MDQ4ZTVdLFtlLDEsMjU5MmU2XSxbZSwzLDc3NzZlNl0sW3QsMSxHM11dO2Z1bmN0aW9uIHgocyl7cmV0dXJuKGEocyk8cz9kOm8ocyk8cz9wOnIocyk8cz9mOmkocyk8cz9tOmUocyk8cz9uKHMpPHM/ZzpfOnQocyk8cz95OnYpKHMpfWZ1bmN0aW9uIHcoZSxuLGkscil7aWYobnVsbD09ZSYmKGU9MTApLCJudW1iZXIiPT10eXBlb2YgZSl7dmFyIG89TWF0aC5hYnMoaS1uKS9lLGE9VjEoKGZ1bmN0aW9uKHQpe3JldHVybiB0WzJdfSkpLnJpZ2h0KGIsbyk7YT09PWIubGVuZ3RoPyhyPSQxKG4vRzMsaS9HMyxlKSxlPXQpOmE/KHI9KGE9YltvL2JbYS0xXVsyXTxiW2FdWzJdL28/YS0xOmFdKVsxXSxlPWFbMF0pOihyPU1hdGgubWF4KCQxKG4saSxlKSwxKSxlPXMpfXJldHVybiBudWxsPT1yP2U6ZS5ldmVyeShyKX1yZXR1cm4gYy5pbnZlcnQ9ZnVuY3Rpb24odCl7cmV0dXJuIG5ldyBEYXRlKHUodCkpfSxjLmRvbWFpbj1mdW5jdGlvbih0KXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD9oKGkwLmNhbGwodCxxMykpOmgoKS5tYXAoVzMpfSxjLnRpY2tzPWZ1bmN0aW9uKHQsZSl7dmFyIG4saT1oKCkscj1pWzBdLG89aVtpLmxlbmd0aC0xXSxhPW88cjtyZXR1cm4gYSYmKG49cixyPW8sbz1uKSxuPShuPXcodCxyLG8sZSkpP24ucmFuZ2UocixvKzEpOltdLGE/bi5yZXZlcnNlKCk6bn0sYy50aWNrRm9ybWF0PWZ1bmN0aW9uKHQsZSl7cmV0dXJuIG51bGw9PWU/eDpsKGUpfSxjLm5pY2U9ZnVuY3Rpb24odCxlKXt2YXIgbj1oKCk7cmV0dXJuKHQ9dyh0LG5bMF0sbltuLmxlbmd0aC0xXSxlKSk/aChqMihuLHQpKTpjfSxjLmNvcHk9ZnVuY3Rpb24oKXtyZXR1cm4gTTIoYyxZMyh0LGUsbixpLHIsbyxhLHMsbCkpfSxjfWZ1bmN0aW9uIFgzKHQpe3JldHVybiB0Lm1hdGNoKC8uezZ9L2cpLm1hcCgoZnVuY3Rpb24odCl7cmV0dXJuIiMiK3R9KSl9dmFyICQzPVgzKCIxZjc3YjRmZjdmMGUyY2EwMmNkNjI3Mjg5NDY3YmQ4YzU2NGJlMzc3YzI3ZjdmN2ZiY2JkMjIxN2JlY2YiKSxLMz1YMygiMzkzYjc5NTI1NGEzNmI2ZWNmOWM5ZWRlNjM3OTM5OGNhMjUyYjVjZjZiY2VkYjljOGM2ZDMxYmQ5ZTM5ZTdiYTUyZTdjYjk0ODQzYzM5YWQ0OTRhZDY2MTZiZTc5NjljN2I0MTczYTU1MTk0Y2U2ZGJkZGU5ZWQ2IiksWjM9WDMoIjMxODJiZDZiYWVkNjllY2FlMWM2ZGJlZmU2NTUwZGZkOGQzY2ZkYWU2YmZkZDBhMjMxYTM1NDc0YzQ3NmExZDk5YmM3ZTljMDc1NmJiMTllOWFjOGJjYmRkY2RhZGFlYjYzNjM2Mzk2OTY5NmJkYmRiZGQ5ZDlkOSIpLEozPVgzKCIxZjc3YjRhZWM3ZThmZjdmMGVmZmJiNzgyY2EwMmM5OGRmOGFkNjI3MjhmZjk4OTY5NDY3YmRjNWIwZDU4YzU2NGJjNDljOTRlMzc3YzJmN2I2ZDI3ZjdmN2ZjN2M3YzdiY2JkMjJkYmRiOGQxN2JlY2Y5ZWRhZTUiKSxRMz1fMihRMCgzMDAsLjUsMCksUTAoLTI0MCwuNSwxKSksdDQ9XzIoUTAoLTEwMCwuNzUsLjM1KSxRMCg4MCwxLjUsLjgpKSxlND1fMihRMCgyNjAsLjc1LC4zNSksUTAoODAsMS41LC44KSksbjQ9UTAoKTtmdW5jdGlvbiBpNCh0KXt2YXIgZT10Lmxlbmd0aDtyZXR1cm4gZnVuY3Rpb24obil7cmV0dXJuIHRbTWF0aC5tYXgoMCxNYXRoLm1pbihlLTEsTWF0aC5mbG9vcihuKmUpKSldfX12YXIgcjQ9aTQoWDMoIjQ0MDE1NDQ0MDI1NjQ1MDQ1NzQ1MDU1OTQ2MDc1YTQ2MDg1YzQ2MGE1ZDQ2MGI1ZTQ3MGQ2MDQ3MGU2MTQ3MTA2MzQ3MTE2NDQ3MTM2NTQ4MTQ2NzQ4MTY2ODQ4MTc2OTQ4MTg2YTQ4MWE2YzQ4MWI2ZDQ4MWM2ZTQ4MWQ2ZjQ4MWY3MDQ4MjA3MTQ4MjE3MzQ4MjM3NDQ4MjQ3NTQ4MjU3NjQ4MjY3NzQ4Mjg3ODQ4Mjk3OTQ3MmE3YTQ3MmM3YTQ3MmQ3YjQ3MmU3YzQ3MmY3ZDQ2MzA3ZTQ2MzI3ZTQ2MzM3ZjQ2MzQ4MDQ1MzU4MTQ1Mzc4MTQ1Mzg4MjQ0Mzk4MzQ0M2E4MzQ0M2I4NDQzM2Q4NDQzM2U4NTQyM2Y4NTQyNDA4NjQyNDE4NjQxNDI4NzQxNDQ4NzQwNDU4ODQwNDY4ODNmNDc4ODNmNDg4OTNlNDk4OTNlNGE4OTNlNGM4YTNkNGQ4YTNkNGU4YTNjNGY4YTNjNTA4YjNiNTE4YjNiNTI4YjNhNTM4YjNhNTQ4YzM5NTU4YzM5NTY4YzM4NTg4YzM4NTk4YzM3NWE4YzM3NWI4ZDM2NWM4ZDM2NWQ4ZDM1NWU4ZDM1NWY4ZDM0NjA4ZDM0NjE4ZDMzNjI4ZDMzNjM4ZDMyNjQ4ZTMyNjU4ZTMxNjY4ZTMxNjc4ZTMxNjg4ZTMwNjk4ZTMwNmE4ZTJmNmI4ZTJmNmM4ZTJlNmQ4ZTJlNmU4ZTJlNmY4ZTJkNzA4ZTJkNzE4ZTJjNzE4ZTJjNzI4ZTJjNzM4ZTJiNzQ4ZTJiNzU4ZTJhNzY4ZTJhNzc4ZTJhNzg4ZTI5Nzk4ZTI5N2E4ZTI5N2I4ZTI4N2M4ZTI4N2Q4ZTI3N2U4ZTI3N2Y4ZTI3ODA4ZTI2ODE4ZTI2ODI4ZTI2ODI4ZTI1ODM4ZTI1ODQ4ZTI1ODU4ZTI0ODY4ZTI0ODc4ZTIzODg4ZTIzODk4ZTIzOGE4ZDIyOGI4ZDIyOGM4ZDIyOGQ4ZDIxOGU4ZDIxOGY4ZDIxOTA4ZDIxOTE4YzIwOTI4YzIwOTI4YzIwOTM4YzFmOTQ4YzFmOTU4YjFmOTY4YjFmOTc4YjFmOTg4YjFmOTk4YTFmOWE4YTFlOWI4YTFlOWM4OTFlOWQ4OTFmOWU4OTFmOWY4ODFmYTA4ODFmYTE4ODFmYTE4NzFmYTI4NzIwYTM4NjIwYTQ4NjIxYTU4NTIxYTY4NTIyYTc4NTIyYTg4NDIzYTk4MzI0YWE4MzI1YWI4MjI1YWM4MjI2YWQ4MTI3YWQ4MTI4YWU4MDI5YWY3ZjJhYjA3ZjJjYjE3ZTJkYjI3ZDJlYjM3YzJmYjQ3YzMxYjU3YjMyYjY3YTM0YjY3OTM1Yjc3OTM3Yjg3ODM4Yjk3NzNhYmE3NjNiYmI3NTNkYmM3NDNmYmM3MzQwYmQ3MjQyYmU3MTQ0YmY3MDQ2YzA2ZjQ4YzE2ZTRhYzE2ZDRjYzI2YzRlYzM2YjUwYzQ2YTUyYzU2OTU0YzU2ODU2YzY2NzU4Yzc2NTVhYzg2NDVjYzg2MzVlYzk2MjYwY2E2MDYzY2I1ZjY1Y2I1ZTY3Y2M1YzY5Y2Q1YjZjY2Q1YTZlY2U1ODcwY2Y1NzczZDA1Njc1ZDA1NDc3ZDE1MzdhZDE1MTdjZDI1MDdmZDM0ZTgxZDM0ZDg0ZDQ0Yjg2ZDU0OTg5ZDU0ODhiZDY0NjhlZDY0NTkwZDc0MzkzZDc0MTk1ZDg0MDk4ZDgzZTliZDkzYzlkZDkzYmEwZGEzOWEyZGEzN2E1ZGIzNmE4ZGIzNGFhZGMzMmFkZGMzMGIwZGQyZmIyZGQyZGI1ZGUyYmI4ZGUyOWJhZGUyOGJkZGYyNmMwZGYyNWMyZGYyM2M1ZTAyMWM4ZTAyMGNhZTExZmNkZTExZGQwZTExY2QyZTIxYmQ1ZTIxYWQ4ZTIxOWRhZTMxOWRkZTMxOGRmZTMxOGUyZTQxOGU1ZTQxOWU3ZTQxOWVhZTUxYWVjZTUxYmVmZTUxY2YxZTUxZGY0ZTYxZWY2ZTYyMGY4ZTYyMWZiZTcyM2ZkZTcyNSIpKSxvND1pNChYMygiMDAwMDA0MDEwMDA1MDEwMTA2MDEwMTA4MDIwMTA5MDIwMjBiMDIwMjBkMDMwMzBmMDMwMzEyMDQwNDE0MDUwNDE2MDYwNTE4MDYwNTFhMDcwNjFjMDgwNzFlMDkwNzIwMGEwODIyMGIwOTI0MGMwOTI2MGQwYTI5MGUwYjJiMTAwYjJkMTEwYzJmMTIwZDMxMTMwZDM0MTQwZTM2MTUwZTM4MTYwZjNiMTgwZjNkMTkxMDNmMWExMDQyMWMxMDQ0MWQxMTQ3MWUxMTQ5MjAxMTRiMjExMTRlMjIxMTUwMjQxMjUzMjUxMjU1MjcxMjU4MjkxMTVhMmExMTVjMmMxMTVmMmQxMTYxMmYxMTYzMzExMTY1MzMxMDY3MzQxMDY5MzYxMDZiMzgxMDZjMzkwZjZlM2IwZjcwM2QwZjcxM2YwZjcyNDAwZjc0NDIwZjc1NDQwZjc2NDUxMDc3NDcxMDc4NDkxMDc4NGExMDc5NGMxMTdhNGUxMTdiNGYxMjdiNTExMjdjNTIxMzdjNTQxMzdkNTYxNDdkNTcxNTdlNTkxNTdlNWExNjdlNWMxNjdmNWQxNzdmNWYxODdmNjAxODgwNjIxOTgwNjQxYTgwNjUxYTgwNjcxYjgwNjgxYzgxNmExYzgxNmIxZDgxNmQxZDgxNmUxZTgxNzAxZjgxNzIxZjgxNzMyMDgxNzUyMTgxNzYyMTgxNzgyMjgxNzkyMjgyN2IyMzgyN2MyMzgyN2UyNDgyODAyNTgyODEyNTgxODMyNjgxODQyNjgxODYyNzgxODgyNzgxODkyODgxOGIyOTgxOGMyOTgxOGUyYTgxOTAyYTgxOTEyYjgxOTMyYjgwOTQyYzgwOTYyYzgwOTgyZDgwOTkyZDgwOWIyZTdmOWMyZTdmOWUyZjdmYTAyZjdmYTEzMDdlYTMzMDdlYTUzMTdlYTYzMTdkYTgzMjdkYWEzMzdkYWIzMzdjYWQzNDdjYWUzNDdiYjAzNTdiYjIzNTdiYjMzNjdhYjUzNjdhYjczNzc5YjgzNzc5YmEzODc4YmMzOTc4YmQzOTc3YmYzYTc3YzAzYTc2YzIzYjc1YzQzYzc1YzUzYzc0YzczZDczYzgzZTczY2EzZTcyY2MzZjcxY2Q0MDcxY2Y0MDcwZDA0MTZmZDI0MjZmZDM0MzZlZDU0NDZkZDY0NTZjZDg0NTZjZDk0NjZiZGI0NzZhZGM0ODY5ZGU0OTY4ZGY0YTY4ZTA0YzY3ZTI0ZDY2ZTM0ZTY1ZTQ0ZjY0ZTU1MDY0ZTc1MjYzZTg1MzYyZTk1NDYyZWE1NjYxZWI1NzYwZWM1ODYwZWQ1YTVmZWU1YjVlZWY1ZDVlZjA1ZjVlZjE2MDVkZjI2MjVkZjI2NDVjZjM2NTVjZjQ2NzVjZjQ2OTVjZjU2YjVjZjY2YzVjZjY2ZTVjZjc3MDVjZjc3MjVjZjg3NDVjZjg3NjVjZjk3ODVkZjk3OTVkZjk3YjVkZmE3ZDVlZmE3ZjVlZmE4MTVmZmI4MzVmZmI4NTYwZmI4NzYxZmM4OTYxZmM4YTYyZmM4YzYzZmM4ZTY0ZmM5MDY1ZmQ5MjY2ZmQ5NDY3ZmQ5NjY4ZmQ5ODY5ZmQ5YTZhZmQ5YjZiZmU5ZDZjZmU5ZjZkZmVhMTZlZmVhMzZmZmVhNTcxZmVhNzcyZmVhOTczZmVhYTc0ZmVhYzc2ZmVhZTc3ZmViMDc4ZmViMjdhZmViNDdiZmViNjdjZmViNzdlZmViOTdmZmViYjgxZmViZDgyZmViZjg0ZmVjMTg1ZmVjMjg3ZmVjNDg4ZmVjNjhhZmVjODhjZmVjYThkZmVjYzhmZmVjZDkwZmVjZjkyZmVkMTk0ZmVkMzk1ZmVkNTk3ZmVkNzk5ZmVkODlhZmRkYTljZmRkYzllZmRkZWEwZmRlMGExZmRlMmEzZmRlM2E1ZmRlNWE3ZmRlN2E5ZmRlOWFhZmRlYmFjZmNlY2FlZmNlZWIwZmNmMGIyZmNmMmI0ZmNmNGI2ZmNmNmI4ZmNmN2I5ZmNmOWJiZmNmYmJkZmNmZGJmIikpLGE0PWk0KFgzKCIwMDAwMDQwMTAwMDUwMTAxMDYwMTAxMDgwMjAxMGEwMjAyMGMwMjAyMGUwMzAyMTAwNDAzMTIwNDAzMTQwNTA0MTcwNjA0MTkwNzA1MWIwODA1MWQwOTA2MWYwYTA3MjIwYjA3MjQwYzA4MjYwZDA4MjkwZTA5MmIxMDA5MmQxMTBhMzAxMjBhMzIxNDBiMzQxNTBiMzcxNjBiMzkxODBjM2MxOTBjM2UxYjBjNDExYzBjNDMxZTBjNDUxZjBjNDgyMTBjNGEyMzBjNGMyNDBjNGYyNjBjNTEyODBiNTMyOTBiNTUyYjBiNTcyZDBiNTkyZjBhNWIzMTBhNWMzMjBhNWUzNDBhNWYzNjA5NjEzODA5NjIzOTA5NjMzYjA5NjQzZDA5NjUzZTA5NjY0MDBhNjc0MjBhNjg0NDBhNjg0NTBhNjk0NzBiNmE0OTBiNmE0YTBjNmI0YzBjNmI0ZDBkNmM0ZjBkNmM1MTBlNmM1MjBlNmQ1NDBmNmQ1NTBmNmQ1NzEwNmU1OTEwNmU1YTExNmU1YzEyNmU1ZDEyNmU1ZjEzNmU2MTEzNmU2MjE0NmU2NDE1NmU2NTE1NmU2NzE2NmU2OTE2NmU2YTE3NmU2YzE4NmU2ZDE4NmU2ZjE5NmU3MTE5NmU3MjFhNmU3NDFhNmU3NTFiNmU3NzFjNmQ3ODFjNmQ3YTFkNmQ3YzFkNmQ3ZDFlNmQ3ZjFlNmM4MDFmNmM4MjIwNmM4NDIwNmI4NTIxNmI4NzIxNmI4ODIyNmE4YTIyNmE4YzIzNjk4ZDIzNjk4ZjI0Njk5MDI1Njg5MjI1Njg5MzI2Njc5NTI2Njc5NzI3NjY5ODI3NjY5YTI4NjU5YjI5NjQ5ZDI5NjQ5ZjJhNjNhMDJhNjNhMjJiNjJhMzJjNjFhNTJjNjBhNjJkNjBhODJlNWZhOTJlNWVhYjJmNWVhZDMwNWRhZTMwNWNiMDMxNWJiMTMyNWFiMzMyNWFiNDMzNTliNjM0NThiNzM1NTdiOTM1NTZiYTM2NTViYzM3NTRiZDM4NTNiZjM5NTJjMDNhNTFjMTNhNTBjMzNiNGZjNDNjNGVjNjNkNGRjNzNlNGNjODNmNGJjYTQwNGFjYjQxNDljYzQyNDhjZTQzNDdjZjQ0NDZkMDQ1NDVkMjQ2NDRkMzQ3NDNkNDQ4NDJkNTRhNDFkNzRiM2ZkODRjM2VkOTRkM2RkYTRlM2NkYjUwM2JkZDUxM2FkZTUyMzhkZjUzMzdlMDU1MzZlMTU2MzVlMjU3MzRlMzU5MzNlNDVhMzFlNTVjMzBlNjVkMmZlNzVlMmVlODYwMmRlOTYxMmJlYTYzMmFlYjY0MjllYjY2MjhlYzY3MjZlZDY5MjVlZTZhMjRlZjZjMjNlZjZlMjFmMDZmMjBmMTcxMWZmMTczMWRmMjc0MWNmMzc2MWJmMzc4MTlmNDc5MThmNTdiMTdmNTdkMTVmNjdlMTRmNjgwMTNmNzgyMTJmNzg0MTBmODg1MGZmODg3MGVmODg5MGNmOThiMGJmOThjMGFmOThlMDlmYTkwMDhmYTkyMDdmYTk0MDdmYjk2MDZmYjk3MDZmYjk5MDZmYjliMDZmYjlkMDdmYzlmMDdmY2ExMDhmY2EzMDlmY2E1MGFmY2E2MGNmY2E4MGRmY2FhMGZmY2FjMTFmY2FlMTJmY2IwMTRmY2IyMTZmY2I0MThmYmI2MWFmYmI4MWRmYmJhMWZmYmJjMjFmYmJlMjNmYWMwMjZmYWMyMjhmYWM0MmFmYWM2MmRmOWM3MmZmOWM5MzJmOWNiMzVmOGNkMzdmOGNmM2FmN2QxM2RmN2QzNDBmNmQ1NDNmNmQ3NDZmNWQ5NDlmNWRiNGNmNGRkNGZmNGRmNTNmNGUxNTZmM2UzNWFmM2U1NWRmMmU2NjFmMmU4NjVmMmVhNjlmMWVjNmRmMWVkNzFmMWVmNzVmMWYxNzlmMmYyN2RmMmY0ODJmM2Y1ODZmM2Y2OGFmNGY4OGVmNWY5OTJmNmZhOTZmOGZiOWFmOWZjOWRmYWZkYTFmY2ZmYTQiKSksczQ9aTQoWDMoIjBkMDg4NzEwMDc4ODEzMDc4OTE2MDc4YTE5MDY4YzFiMDY4ZDFkMDY4ZTIwMDY4ZjIyMDY5MDI0MDY5MTI2MDU5MTI4MDU5MjJhMDU5MzJjMDU5NDJlMDU5NTJmMDU5NjMxMDU5NzMzMDU5NzM1MDQ5ODM3MDQ5OTM4MDQ5YTNhMDQ5YTNjMDQ5YjNlMDQ5YzNmMDQ5YzQxMDQ5ZDQzMDM5ZTQ0MDM5ZTQ2MDM5ZjQ4MDM5ZjQ5MDNhMDRiMDNhMTRjMDJhMTRlMDJhMjUwMDJhMjUxMDJhMzUzMDJhMzU1MDJhNDU2MDFhNDU4MDFhNDU5MDFhNTViMDFhNTVjMDFhNjVlMDFhNjYwMDFhNjYxMDBhNzYzMDBhNzY0MDBhNzY2MDBhNzY3MDBhODY5MDBhODZhMDBhODZjMDBhODZlMDBhODZmMDBhODcxMDBhODcyMDFhODc0MDFhODc1MDFhODc3MDFhODc4MDFhODdhMDJhODdiMDJhODdkMDNhODdlMDNhODgwMDRhODgxMDRhNzgzMDVhNzg0MDVhNzg2MDZhNjg3MDdhNjg4MDhhNjhhMDlhNThiMGFhNThkMGJhNThlMGNhNDhmMGRhNDkxMGVhMzkyMGZhMzk0MTBhMjk1MTFhMTk2MTNhMTk4MTRhMDk5MTU5ZjlhMTY5ZjljMTc5ZTlkMTg5ZDllMTk5ZGEwMWE5Y2ExMWI5YmEyMWQ5YWEzMWU5YWE1MWY5OWE2MjA5OGE3MjE5N2E4MjI5NmFhMjM5NWFiMjQ5NGFjMjY5NGFkMjc5M2FlMjg5MmIwMjk5MWIxMmE5MGIyMmI4ZmIzMmM4ZWI0MmU4ZGI1MmY4Y2I2MzA4YmI3MzE4YWI4MzI4OWJhMzM4OGJiMzQ4OGJjMzU4N2JkMzc4NmJlMzg4NWJmMzk4NGMwM2E4M2MxM2I4MmMyM2M4MWMzM2Q4MGM0M2U3ZmM1NDA3ZWM2NDE3ZGM3NDI3Y2M4NDM3YmM5NDQ3YWNhNDU3YWNiNDY3OWNjNDc3OGNjNDk3N2NkNGE3NmNlNGI3NWNmNGM3NGQwNGQ3M2QxNGU3MmQyNGY3MWQzNTE3MWQ0NTI3MGQ1NTM2ZmQ1NTQ2ZWQ2NTU2ZGQ3NTY2Y2Q4NTc2YmQ5NTg2YWRhNWE2YWRhNWI2OWRiNWM2OGRjNWQ2N2RkNWU2NmRlNWY2NWRlNjE2NGRmNjI2M2UwNjM2M2UxNjQ2MmUyNjU2MWUyNjY2MGUzNjg1ZmU0Njk1ZWU1NmE1ZGU1NmI1ZGU2NmM1Y2U3NmU1YmU3NmY1YWU4NzA1OWU5NzE1OGU5NzI1N2VhNzQ1N2ViNzU1NmViNzY1NWVjNzc1NGVkNzk1M2VkN2E1MmVlN2I1MWVmN2M1MWVmN2U1MGYwN2Y0ZmYwODA0ZWYxODE0ZGYxODM0Y2YyODQ0YmYzODU0YmYzODc0YWY0ODg0OWY0ODk0OGY1OGI0N2Y1OGM0NmY2OGQ0NWY2OGY0NGY3OTA0NGY3OTE0M2Y3OTM0MmY4OTQ0MWY4OTU0MGY5OTczZmY5OTgzZWY5OWEzZWZhOWIzZGZhOWMzY2ZhOWUzYmZiOWYzYWZiYTEzOWZiYTIzOGZjYTMzOGZjYTUzN2ZjYTYzNmZjYTgzNWZjYTkzNGZkYWIzM2ZkYWMzM2ZkYWUzMmZkYWYzMWZkYjEzMGZkYjIyZmZkYjQyZmZkYjUyZWZlYjcyZGZlYjgyY2ZlYmEyY2ZlYmIyYmZlYmQyYWZlYmUyYWZlYzAyOWZkYzIyOWZkYzMyOGZkYzUyN2ZkYzYyN2ZkYzgyN2ZkY2EyNmZkY2IyNmZjY2QyNWZjY2UyNWZjZDAyNWZjZDIyNWZiZDMyNGZiZDUyNGZiZDcyNGZhZDgyNGZhZGEyNGY5ZGMyNGY5ZGQyNWY4ZGYyNWY4ZTEyNWY3ZTIyNWY3ZTQyNWY2ZTYyNmY2ZTgyNmY1ZTkyNmY1ZWIyN2Y0ZWQyN2YzZWUyN2YzZjAyN2YyZjIyN2YxZjQyNmYxZjUyNWYwZjcyNGYwZjkyMSIpKSxsND0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94aHRtbCIsYzQ9e3N2ZzoiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciLHhodG1sOmw0LHhsaW5rOiJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIix4bWw6Imh0dHA6Ly93d3cudzMub3JnL1hNTC8xOTk4L25hbWVzcGFjZSIseG1sbnM6Imh0dHA6Ly93d3cudzMub3JnLzIwMDAveG1sbnMvIn07ZnVuY3Rpb24gdTQodCl7dmFyIGU9dCs9IiIsbj1lLmluZGV4T2YoIjoiKTtyZXR1cm4gbj49MCYmInhtbG5zIiE9PShlPXQuc2xpY2UoMCxuKSkmJih0PXQuc2xpY2UobisxKSksYzQuaGFzT3duUHJvcGVydHkoZSk/e3NwYWNlOmM0W2VdLGxvY2FsOnR9OnR9ZnVuY3Rpb24gaDQodCl7cmV0dXJuIGZ1bmN0aW9uKCl7dmFyIGU9dGhpcy5vd25lckRvY3VtZW50LG49dGhpcy5uYW1lc3BhY2VVUkk7cmV0dXJuIG49PT1sNCYmZS5kb2N1bWVudEVsZW1lbnQubmFtZXNwYWNlVVJJPT09bDQ/ZS5jcmVhdGVFbGVtZW50KHQpOmUuY3JlYXRlRWxlbWVudE5TKG4sdCl9fWZ1bmN0aW9uIGQ0KHQpe3JldHVybiBmdW5jdGlvbigpe3JldHVybiB0aGlzLm93bmVyRG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKHQuc3BhY2UsdC5sb2NhbCl9fWZ1bmN0aW9uIHA0KHQpe3ZhciBlPXU0KHQpO3JldHVybihlLmxvY2FsP2Q0Omg0KShlKX1mdW5jdGlvbiBmNCgpe31mdW5jdGlvbiBtNCh0KXtyZXR1cm4gbnVsbD09dD9mNDpmdW5jdGlvbigpe3JldHVybiB0aGlzLnF1ZXJ5U2VsZWN0b3IodCl9fWZ1bmN0aW9uIGc0KCl7cmV0dXJuW119ZnVuY3Rpb24gXzQodCl7cmV0dXJuIG51bGw9PXQ/ZzQ6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5xdWVyeVNlbGVjdG9yQWxsKHQpfX12YXIgeTQ9ZnVuY3Rpb24odCl7cmV0dXJuIGZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMubWF0Y2hlcyh0KX19O2lmKCJ1bmRlZmluZWQiIT10eXBlb2YgZG9jdW1lbnQpe3ZhciB2ND1kb2N1bWVudC5kb2N1bWVudEVsZW1lbnQ7aWYoIXY0Lm1hdGNoZXMpe3ZhciBiND12NC53ZWJraXRNYXRjaGVzU2VsZWN0b3J8fHY0Lm1zTWF0Y2hlc1NlbGVjdG9yfHx2NC5tb3pNYXRjaGVzU2VsZWN0b3J8fHY0Lm9NYXRjaGVzU2VsZWN0b3I7eTQ9ZnVuY3Rpb24odCl7cmV0dXJuIGZ1bmN0aW9uKCl7cmV0dXJuIGI0LmNhbGwodGhpcyx0KX19fX12YXIgeDQ9eTQ7ZnVuY3Rpb24gdzQodCl7cmV0dXJuIG5ldyBBcnJheSh0Lmxlbmd0aCl9ZnVuY3Rpb24gUzQodCxlKXt0aGlzLm93bmVyRG9jdW1lbnQ9dC5vd25lckRvY3VtZW50LHRoaXMubmFtZXNwYWNlVVJJPXQubmFtZXNwYWNlVVJJLHRoaXMuX25leHQ9bnVsbCx0aGlzLl9wYXJlbnQ9dCx0aGlzLl9fZGF0YV9fPWV9ZnVuY3Rpb24gTTQodCxlLG4saSxyLG8pe2Zvcih2YXIgYSxzPTAsbD1lLmxlbmd0aCxjPW8ubGVuZ3RoO3M8YzsrK3MpKGE9ZVtzXSk/KGEuX19kYXRhX189b1tzXSxpW3NdPWEpOm5bc109bmV3IFM0KHQsb1tzXSk7Zm9yKDtzPGw7KytzKShhPWVbc10pJiYocltzXT1hKX1mdW5jdGlvbiBFNCh0LGUsbixpLHIsbyxhKXt2YXIgcyxsLGMsdT17fSxoPWUubGVuZ3RoLGQ9by5sZW5ndGgscD1uZXcgQXJyYXkoaCk7Zm9yKHM9MDtzPGg7KytzKShsPWVbc10pJiYocFtzXT1jPSIkIithLmNhbGwobCxsLl9fZGF0YV9fLHMsZSksYyBpbiB1P3Jbc109bDp1W2NdPWwpO2ZvcihzPTA7czxkOysrcykobD11W2M9IiQiK2EuY2FsbCh0LG9bc10scyxvKV0pPyhpW3NdPWwsbC5fX2RhdGFfXz1vW3NdLHVbY109bnVsbCk6bltzXT1uZXcgUzQodCxvW3NdKTtmb3Iocz0wO3M8aDsrK3MpKGw9ZVtzXSkmJnVbcFtzXV09PT1sJiYocltzXT1sKX1mdW5jdGlvbiBUNCh0LGUpe3JldHVybiB0PGU/LTE6dD5lPzE6dD49ZT8wOk5hTn1mdW5jdGlvbiBBNCh0KXtyZXR1cm4gZnVuY3Rpb24oKXt0aGlzLnJlbW92ZUF0dHJpYnV0ZSh0KX19ZnVuY3Rpb24gQzQodCl7cmV0dXJuIGZ1bmN0aW9uKCl7dGhpcy5yZW1vdmVBdHRyaWJ1dGVOUyh0LnNwYWNlLHQubG9jYWwpfX1mdW5jdGlvbiBrNCh0LGUpe3JldHVybiBmdW5jdGlvbigpe3RoaXMuc2V0QXR0cmlidXRlKHQsZSl9fWZ1bmN0aW9uIEw0KHQsZSl7cmV0dXJuIGZ1bmN0aW9uKCl7dGhpcy5zZXRBdHRyaWJ1dGVOUyh0LnNwYWNlLHQubG9jYWwsZSl9fWZ1bmN0aW9uIFA0KHQsZSl7cmV0dXJuIGZ1bmN0aW9uKCl7dmFyIG49ZS5hcHBseSh0aGlzLGFyZ3VtZW50cyk7bnVsbD09bj90aGlzLnJlbW92ZUF0dHJpYnV0ZSh0KTp0aGlzLnNldEF0dHJpYnV0ZSh0LG4pfX1mdW5jdGlvbiBJNCh0LGUpe3JldHVybiBmdW5jdGlvbigpe3ZhciBuPWUuYXBwbHkodGhpcyxhcmd1bWVudHMpO251bGw9PW4/dGhpcy5yZW1vdmVBdHRyaWJ1dGVOUyh0LnNwYWNlLHQubG9jYWwpOnRoaXMuc2V0QXR0cmlidXRlTlModC5zcGFjZSx0LmxvY2FsLG4pfX1mdW5jdGlvbiBONCh0KXtyZXR1cm4gdC5vd25lckRvY3VtZW50JiZ0Lm93bmVyRG9jdW1lbnQuZGVmYXVsdFZpZXd8fHQuZG9jdW1lbnQmJnR8fHQuZGVmYXVsdFZpZXd9ZnVuY3Rpb24gTzQodCl7cmV0dXJuIGZ1bmN0aW9uKCl7dGhpcy5zdHlsZS5yZW1vdmVQcm9wZXJ0eSh0KX19ZnVuY3Rpb24gUjQodCxlLG4pe3JldHVybiBmdW5jdGlvbigpe3RoaXMuc3R5bGUuc2V0UHJvcGVydHkodCxlLG4pfX1mdW5jdGlvbiB6NCh0LGUsbil7cmV0dXJuIGZ1bmN0aW9uKCl7dmFyIGk9ZS5hcHBseSh0aGlzLGFyZ3VtZW50cyk7bnVsbD09aT90aGlzLnN0eWxlLnJlbW92ZVByb3BlcnR5KHQpOnRoaXMuc3R5bGUuc2V0UHJvcGVydHkodCxpLG4pfX1mdW5jdGlvbiBENCh0LGUpe3JldHVybiB0LnN0eWxlLmdldFByb3BlcnR5VmFsdWUoZSl8fE40KHQpLmdldENvbXB1dGVkU3R5bGUodCxudWxsKS5nZXRQcm9wZXJ0eVZhbHVlKGUpfWZ1bmN0aW9uIEI0KHQpe3JldHVybiBmdW5jdGlvbigpe2RlbGV0ZSB0aGlzW3RdfX1mdW5jdGlvbiBINCh0LGUpe3JldHVybiBmdW5jdGlvbigpe3RoaXNbdF09ZX19ZnVuY3Rpb24gRjQodCxlKXtyZXR1cm4gZnVuY3Rpb24oKXt2YXIgbj1lLmFwcGx5KHRoaXMsYXJndW1lbnRzKTtudWxsPT1uP2RlbGV0ZSB0aGlzW3RdOnRoaXNbdF09bn19ZnVuY3Rpb24gVjQodCl7cmV0dXJuIHQudHJpbSgpLnNwbGl0KC9efFxzKy8pfWZ1bmN0aW9uIGo0KHQpe3JldHVybiB0LmNsYXNzTGlzdHx8bmV3IFU0KHQpfWZ1bmN0aW9uIFU0KHQpe3RoaXMuX25vZGU9dCx0aGlzLl9uYW1lcz1WNCh0LmdldEF0dHJpYnV0ZSgiY2xhc3MiKXx8IiIpfWZ1bmN0aW9uIEc0KHQsZSl7Zm9yKHZhciBuPWo0KHQpLGk9LTEscj1lLmxlbmd0aDsrK2k8cjspbi5hZGQoZVtpXSl9ZnVuY3Rpb24gVzQodCxlKXtmb3IodmFyIG49ajQodCksaT0tMSxyPWUubGVuZ3RoOysraTxyOyluLnJlbW92ZShlW2ldKX1mdW5jdGlvbiBxNCh0KXtyZXR1cm4gZnVuY3Rpb24oKXtHNCh0aGlzLHQpfX1mdW5jdGlvbiBZNCh0KXtyZXR1cm4gZnVuY3Rpb24oKXtXNCh0aGlzLHQpfX1mdW5jdGlvbiBYNCh0LGUpe3JldHVybiBmdW5jdGlvbigpeyhlLmFwcGx5KHRoaXMsYXJndW1lbnRzKT9HNDpXNCkodGhpcyx0KX19ZnVuY3Rpb24gJDQoKXt0aGlzLnRleHRDb250ZW50PSIifWZ1bmN0aW9uIEs0KHQpe3JldHVybiBmdW5jdGlvbigpe3RoaXMudGV4dENvbnRlbnQ9dH19ZnVuY3Rpb24gWjQodCl7cmV0dXJuIGZ1bmN0aW9uKCl7dmFyIGU9dC5hcHBseSh0aGlzLGFyZ3VtZW50cyk7dGhpcy50ZXh0Q29udGVudD1udWxsPT1lPyIiOmV9fWZ1bmN0aW9uIEo0KCl7dGhpcy5pbm5lckhUTUw9IiJ9ZnVuY3Rpb24gUTQodCl7cmV0dXJuIGZ1bmN0aW9uKCl7dGhpcy5pbm5lckhUTUw9dH19ZnVuY3Rpb24gdDYodCl7cmV0dXJuIGZ1bmN0aW9uKCl7dmFyIGU9dC5hcHBseSh0aGlzLGFyZ3VtZW50cyk7dGhpcy5pbm5lckhUTUw9bnVsbD09ZT8iIjplfX1mdW5jdGlvbiBlNigpe3RoaXMubmV4dFNpYmxpbmcmJnRoaXMucGFyZW50Tm9kZS5hcHBlbmRDaGlsZCh0aGlzKX1mdW5jdGlvbiBuNigpe3RoaXMucHJldmlvdXNTaWJsaW5nJiZ0aGlzLnBhcmVudE5vZGUuaW5zZXJ0QmVmb3JlKHRoaXMsdGhpcy5wYXJlbnROb2RlLmZpcnN0Q2hpbGQpfWZ1bmN0aW9uIGk2KCl7cmV0dXJuIG51bGx9ZnVuY3Rpb24gcjYoKXt2YXIgdD10aGlzLnBhcmVudE5vZGU7dCYmdC5yZW1vdmVDaGlsZCh0aGlzKX1mdW5jdGlvbiBvNigpe3JldHVybiB0aGlzLnBhcmVudE5vZGUuaW5zZXJ0QmVmb3JlKHRoaXMuY2xvbmVOb2RlKCExKSx0aGlzLm5leHRTaWJsaW5nKX1mdW5jdGlvbiBhNigpe3JldHVybiB0aGlzLnBhcmVudE5vZGUuaW5zZXJ0QmVmb3JlKHRoaXMuY2xvbmVOb2RlKCEwKSx0aGlzLm5leHRTaWJsaW5nKX1TNC5wcm90b3R5cGU9e2NvbnN0cnVjdG9yOlM0LGFwcGVuZENoaWxkOmZ1bmN0aW9uKHQpe3JldHVybiB0aGlzLl9wYXJlbnQuaW5zZXJ0QmVmb3JlKHQsdGhpcy5fbmV4dCl9LGluc2VydEJlZm9yZTpmdW5jdGlvbih0LGUpe3JldHVybiB0aGlzLl9wYXJlbnQuaW5zZXJ0QmVmb3JlKHQsZSl9LHF1ZXJ5U2VsZWN0b3I6ZnVuY3Rpb24odCl7cmV0dXJuIHRoaXMuX3BhcmVudC5xdWVyeVNlbGVjdG9yKHQpfSxxdWVyeVNlbGVjdG9yQWxsOmZ1bmN0aW9uKHQpe3JldHVybiB0aGlzLl9wYXJlbnQucXVlcnlTZWxlY3RvckFsbCh0KX19LFU0LnByb3RvdHlwZT17YWRkOmZ1bmN0aW9uKHQpe3RoaXMuX25hbWVzLmluZGV4T2YodCk8MCYmKHRoaXMuX25hbWVzLnB1c2godCksdGhpcy5fbm9kZS5zZXRBdHRyaWJ1dGUoImNsYXNzIix0aGlzLl9uYW1lcy5qb2luKCIgIikpKX0scmVtb3ZlOmZ1bmN0aW9uKHQpe3ZhciBlPXRoaXMuX25hbWVzLmluZGV4T2YodCk7ZT49MCYmKHRoaXMuX25hbWVzLnNwbGljZShlLDEpLHRoaXMuX25vZGUuc2V0QXR0cmlidXRlKCJjbGFzcyIsdGhpcy5fbmFtZXMuam9pbigiICIpKSl9LGNvbnRhaW5zOmZ1bmN0aW9uKHQpe3JldHVybiB0aGlzLl9uYW1lcy5pbmRleE9mKHQpPj0wfX07dmFyIHM2PXt9LGw2PW51bGw7ZnVuY3Rpb24gYzYodCxlLG4pe3JldHVybiB0PXU2KHQsZSxuKSxmdW5jdGlvbihlKXt2YXIgbj1lLnJlbGF0ZWRUYXJnZXQ7biYmKG49PT10aGlzfHw4Jm4uY29tcGFyZURvY3VtZW50UG9zaXRpb24odGhpcykpfHx0LmNhbGwodGhpcyxlKX19ZnVuY3Rpb24gdTYodCxlLG4pe3JldHVybiBmdW5jdGlvbihpKXt2YXIgcj1sNjtsNj1pO3RyeXt0LmNhbGwodGhpcyx0aGlzLl9fZGF0YV9fLGUsbil9ZmluYWxseXtsNj1yfX19ZnVuY3Rpb24gaDYodCl7cmV0dXJuIHQudHJpbSgpLnNwbGl0KC9efFxzKy8pLm1hcCgoZnVuY3Rpb24odCl7dmFyIGU9IiIsbj10LmluZGV4T2YoIi4iKTtyZXR1cm4gbj49MCYmKGU9dC5zbGljZShuKzEpLHQ9dC5zbGljZSgwLG4pKSx7dHlwZTp0LG5hbWU6ZX19KSl9ZnVuY3Rpb24gZDYodCl7cmV0dXJuIGZ1bmN0aW9uKCl7dmFyIGU9dGhpcy5fX29uO2lmKGUpe2Zvcih2YXIgbixpPTAscj0tMSxvPWUubGVuZ3RoO2k8bzsrK2kpbj1lW2ldLHQudHlwZSYmbi50eXBlIT09dC50eXBlfHxuLm5hbWUhPT10Lm5hbWU/ZVsrK3JdPW46dGhpcy5yZW1vdmVFdmVudExpc3RlbmVyKG4udHlwZSxuLmxpc3RlbmVyLG4uY2FwdHVyZSk7KytyP2UubGVuZ3RoPXI6ZGVsZXRlIHRoaXMuX19vbn19fWZ1bmN0aW9uIHA2KHQsZSxuKXt2YXIgaT1zNi5oYXNPd25Qcm9wZXJ0eSh0LnR5cGUpP2M2OnU2O3JldHVybiBmdW5jdGlvbihyLG8sYSl7dmFyIHMsbD10aGlzLl9fb24sYz1pKGUsbyxhKTtpZihsKWZvcih2YXIgdT0wLGg9bC5sZW5ndGg7dTxoOysrdSlpZigocz1sW3VdKS50eXBlPT09dC50eXBlJiZzLm5hbWU9PT10Lm5hbWUpcmV0dXJuIHRoaXMucmVtb3ZlRXZlbnRMaXN0ZW5lcihzLnR5cGUscy5saXN0ZW5lcixzLmNhcHR1cmUpLHRoaXMuYWRkRXZlbnRMaXN0ZW5lcihzLnR5cGUscy5saXN0ZW5lcj1jLHMuY2FwdHVyZT1uKSx2b2lkKHMudmFsdWU9ZSk7dGhpcy5hZGRFdmVudExpc3RlbmVyKHQudHlwZSxjLG4pLHM9e3R5cGU6dC50eXBlLG5hbWU6dC5uYW1lLHZhbHVlOmUsbGlzdGVuZXI6YyxjYXB0dXJlOm59LGw/bC5wdXNoKHMpOnRoaXMuX19vbj1bc119fWZ1bmN0aW9uIGY2KHQsZSxuKXt2YXIgaT1ONCh0KSxyPWkuQ3VzdG9tRXZlbnQ7ImZ1bmN0aW9uIj09dHlwZW9mIHI/cj1uZXcgcihlLG4pOihyPWkuZG9jdW1lbnQuY3JlYXRlRXZlbnQoIkV2ZW50Iiksbj8oci5pbml0RXZlbnQoZSxuLmJ1YmJsZXMsbi5jYW5jZWxhYmxlKSxyLmRldGFpbD1uLmRldGFpbCk6ci5pbml0RXZlbnQoZSwhMSwhMSkpLHQuZGlzcGF0Y2hFdmVudChyKX1mdW5jdGlvbiBtNih0LGUpe3JldHVybiBmdW5jdGlvbigpe3JldHVybiBmNih0aGlzLHQsZSl9fWZ1bmN0aW9uIGc2KHQsZSl7cmV0dXJuIGZ1bmN0aW9uKCl7cmV0dXJuIGY2KHRoaXMsdCxlLmFwcGx5KHRoaXMsYXJndW1lbnRzKSl9fSJ1bmRlZmluZWQiIT10eXBlb2YgZG9jdW1lbnQmJigib25tb3VzZWVudGVyImluIGRvY3VtZW50LmRvY3VtZW50RWxlbWVudHx8KHM2PXttb3VzZWVudGVyOiJtb3VzZW92ZXIiLG1vdXNlbGVhdmU6Im1vdXNlb3V0In0pKTt2YXIgXzY9W251bGxdO2Z1bmN0aW9uIHk2KHQsZSl7dGhpcy5fZ3JvdXBzPXQsdGhpcy5fcGFyZW50cz1lfWZ1bmN0aW9uIHY2KCl7cmV0dXJuIG5ldyB5NihbW2RvY3VtZW50LmRvY3VtZW50RWxlbWVudF1dLF82KX1mdW5jdGlvbiBiNih0KXtyZXR1cm4ic3RyaW5nIj09dHlwZW9mIHQ/bmV3IHk2KFtbZG9jdW1lbnQucXVlcnlTZWxlY3Rvcih0KV1dLFtkb2N1bWVudC5kb2N1bWVudEVsZW1lbnRdKTpuZXcgeTYoW1t0XV0sXzYpfXk2LnByb3RvdHlwZT12Ni5wcm90b3R5cGU9e2NvbnN0cnVjdG9yOnk2LHNlbGVjdDpmdW5jdGlvbiB4Nih0KXsiZnVuY3Rpb24iIT10eXBlb2YgdCYmKHQ9bTQodCkpO2Zvcih2YXIgZT10aGlzLl9ncm91cHMsbj1lLmxlbmd0aCxpPW5ldyBBcnJheShuKSxyPTA7cjxuOysrcilmb3IodmFyIG8sYSxzPWVbcl0sbD1zLmxlbmd0aCxjPWlbcl09bmV3IEFycmF5KGwpLHU9MDt1PGw7Kyt1KShvPXNbdV0pJiYoYT10LmNhbGwobyxvLl9fZGF0YV9fLHUscykpJiYoIl9fZGF0YV9fImluIG8mJihhLl9fZGF0YV9fPW8uX19kYXRhX18pLGNbdV09YSk7cmV0dXJuIG5ldyB5NihpLHRoaXMuX3BhcmVudHMpfSxzZWxlY3RBbGw6ZnVuY3Rpb24gdzYodCl7ImZ1bmN0aW9uIiE9dHlwZW9mIHQmJih0PV80KHQpKTtmb3IodmFyIGU9dGhpcy5fZ3JvdXBzLG49ZS5sZW5ndGgsaT1bXSxyPVtdLG89MDtvPG47KytvKWZvcih2YXIgYSxzPWVbb10sbD1zLmxlbmd0aCxjPTA7YzxsOysrYykoYT1zW2NdKSYmKGkucHVzaCh0LmNhbGwoYSxhLl9fZGF0YV9fLGMscykpLHIucHVzaChhKSk7cmV0dXJuIG5ldyB5NihpLHIpfSxmaWx0ZXI6ZnVuY3Rpb24gUzYodCl7ImZ1bmN0aW9uIiE9dHlwZW9mIHQmJih0PXg0KHQpKTtmb3IodmFyIGU9dGhpcy5fZ3JvdXBzLG49ZS5sZW5ndGgsaT1uZXcgQXJyYXkobikscj0wO3I8bjsrK3IpZm9yKHZhciBvLGE9ZVtyXSxzPWEubGVuZ3RoLGw9aVtyXT1bXSxjPTA7YzxzOysrYykobz1hW2NdKSYmdC5jYWxsKG8sby5fX2RhdGFfXyxjLGEpJiZsLnB1c2gobyk7cmV0dXJuIG5ldyB5NihpLHRoaXMuX3BhcmVudHMpfSxkYXRhOmZ1bmN0aW9uIE02KHQsZSl7aWYoIXQpcmV0dXJuIGY9bmV3IEFycmF5KHRoaXMuc2l6ZSgpKSx1PS0xLHRoaXMuZWFjaCgoZnVuY3Rpb24odCl7ZlsrK3VdPXR9KSksZjt2YXIgbj1lP0U0Ok00LGk9dGhpcy5fcGFyZW50cyxyPXRoaXMuX2dyb3VwczsiZnVuY3Rpb24iIT10eXBlb2YgdCYmKHQ9KGZ1bmN0aW9uIG8odCl7cmV0dXJuIGZ1bmN0aW9uKCl7cmV0dXJuIHR9fSkodCkpO2Zvcih2YXIgYT1yLmxlbmd0aCxzPW5ldyBBcnJheShhKSxsPW5ldyBBcnJheShhKSxjPW5ldyBBcnJheShhKSx1PTA7dTxhOysrdSl7dmFyIGg9aVt1XSxkPXJbdV0scD1kLmxlbmd0aCxmPXQuY2FsbChoLGgmJmguX19kYXRhX18sdSxpKSxtPWYubGVuZ3RoLGc9bFt1XT1uZXcgQXJyYXkobSksXz1zW3VdPW5ldyBBcnJheShtKTtuKGgsZCxnLF8sY1t1XT1uZXcgQXJyYXkocCksZixlKTtmb3IodmFyIHksdixiPTAseD0wO2I8bTsrK2IpaWYoeT1nW2JdKXtmb3IoYj49eCYmKHg9YisxKTshKHY9X1t4XSkmJisreDxtOyk7eS5fbmV4dD12fHxudWxsfX1yZXR1cm4ocz1uZXcgeTYocyxpKSkuX2VudGVyPWwscy5fZXhpdD1jLHN9LGVudGVyOmZ1bmN0aW9uIEU2KCl7cmV0dXJuIG5ldyB5Nih0aGlzLl9lbnRlcnx8dGhpcy5fZ3JvdXBzLm1hcCh3NCksdGhpcy5fcGFyZW50cyl9LGV4aXQ6ZnVuY3Rpb24gVDYoKXtyZXR1cm4gbmV3IHk2KHRoaXMuX2V4aXR8fHRoaXMuX2dyb3Vwcy5tYXAodzQpLHRoaXMuX3BhcmVudHMpfSxtZXJnZTpmdW5jdGlvbiBBNih0KXtmb3IodmFyIGU9dGhpcy5fZ3JvdXBzLG49dC5fZ3JvdXBzLGk9ZS5sZW5ndGgscj1NYXRoLm1pbihpLG4ubGVuZ3RoKSxvPW5ldyBBcnJheShpKSxhPTA7YTxyOysrYSlmb3IodmFyIHMsbD1lW2FdLGM9blthXSx1PWwubGVuZ3RoLGg9b1thXT1uZXcgQXJyYXkodSksZD0wO2Q8dTsrK2QpKHM9bFtkXXx8Y1tkXSkmJihoW2RdPXMpO2Zvcig7YTxpOysrYSlvW2FdPWVbYV07cmV0dXJuIG5ldyB5NihvLHRoaXMuX3BhcmVudHMpfSxvcmRlcjpmdW5jdGlvbiBDNigpe2Zvcih2YXIgdD10aGlzLl9ncm91cHMsZT0tMSxuPXQubGVuZ3RoOysrZTxuOylmb3IodmFyIGkscj10W2VdLG89ci5sZW5ndGgtMSxhPXJbb107LS1vPj0wOykoaT1yW29dKSYmKGEmJmEhPT1pLm5leHRTaWJsaW5nJiZhLnBhcmVudE5vZGUuaW5zZXJ0QmVmb3JlKGksYSksYT1pKTtyZXR1cm4gdGhpc30sc29ydDpmdW5jdGlvbiBrNih0KXtmdW5jdGlvbiBlKGUsbil7cmV0dXJuIGUmJm4/dChlLl9fZGF0YV9fLG4uX19kYXRhX18pOiFlLSFufXR8fCh0PVQ0KTtmb3IodmFyIG49dGhpcy5fZ3JvdXBzLGk9bi5sZW5ndGgscj1uZXcgQXJyYXkoaSksbz0wO288aTsrK28pe2Zvcih2YXIgYSxzPW5bb10sbD1zLmxlbmd0aCxjPXJbb109bmV3IEFycmF5KGwpLHU9MDt1PGw7Kyt1KShhPXNbdV0pJiYoY1t1XT1hKTtjLnNvcnQoZSl9cmV0dXJuIG5ldyB5NihyLHRoaXMuX3BhcmVudHMpLm9yZGVyKCl9LGNhbGw6ZnVuY3Rpb24gTDYoKXt2YXIgdD1hcmd1bWVudHNbMF07cmV0dXJuIGFyZ3VtZW50c1swXT10aGlzLHQuYXBwbHkobnVsbCxhcmd1bWVudHMpLHRoaXN9LG5vZGVzOmZ1bmN0aW9uIFA2KCl7dmFyIHQ9bmV3IEFycmF5KHRoaXMuc2l6ZSgpKSxlPS0xO3JldHVybiB0aGlzLmVhY2goKGZ1bmN0aW9uKCl7dFsrK2VdPXRoaXN9KSksdH0sbm9kZTpmdW5jdGlvbiBJNigpe2Zvcih2YXIgdD10aGlzLl9ncm91cHMsZT0wLG49dC5sZW5ndGg7ZTxuOysrZSlmb3IodmFyIGk9dFtlXSxyPTAsbz1pLmxlbmd0aDtyPG87KytyKXt2YXIgYT1pW3JdO2lmKGEpcmV0dXJuIGF9cmV0dXJuIG51bGx9LHNpemU6ZnVuY3Rpb24gTjYoKXt2YXIgdD0wO3JldHVybiB0aGlzLmVhY2goKGZ1bmN0aW9uKCl7Kyt0fSkpLHR9LGVtcHR5OmZ1bmN0aW9uIE82KCl7cmV0dXJuIXRoaXMubm9kZSgpfSxlYWNoOmZ1bmN0aW9uIFI2KHQpe2Zvcih2YXIgZT10aGlzLl9ncm91cHMsbj0wLGk9ZS5sZW5ndGg7bjxpOysrbilmb3IodmFyIHIsbz1lW25dLGE9MCxzPW8ubGVuZ3RoO2E8czsrK2EpKHI9b1thXSkmJnQuY2FsbChyLHIuX19kYXRhX18sYSxvKTtyZXR1cm4gdGhpc30sYXR0cjpmdW5jdGlvbiB6Nih0LGUpe3ZhciBuPXU0KHQpO2lmKGFyZ3VtZW50cy5sZW5ndGg8Mil7dmFyIGk9dGhpcy5ub2RlKCk7cmV0dXJuIG4ubG9jYWw/aS5nZXRBdHRyaWJ1dGVOUyhuLnNwYWNlLG4ubG9jYWwpOmkuZ2V0QXR0cmlidXRlKG4pfXJldHVybiB0aGlzLmVhY2goKG51bGw9PWU/bi5sb2NhbD9DNDpBNDoiZnVuY3Rpb24iPT10eXBlb2YgZT9uLmxvY2FsP0k0OlA0Om4ubG9jYWw/TDQ6azQpKG4sZSkpfSxzdHlsZTpmdW5jdGlvbiBENih0LGUsbil7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg+MT90aGlzLmVhY2goKG51bGw9PWU/TzQ6ImZ1bmN0aW9uIj09dHlwZW9mIGU/ejQ6UjQpKHQsZSxudWxsPT1uPyIiOm4pKTpENCh0aGlzLm5vZGUoKSx0KX0scHJvcGVydHk6ZnVuY3Rpb24gQjYodCxlKXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD4xP3RoaXMuZWFjaCgobnVsbD09ZT9CNDoiZnVuY3Rpb24iPT10eXBlb2YgZT9GNDpINCkodCxlKSk6dGhpcy5ub2RlKClbdF19LGNsYXNzZWQ6ZnVuY3Rpb24gSDYodCxlKXt2YXIgbj1WNCh0KyIiKTtpZihhcmd1bWVudHMubGVuZ3RoPDIpe2Zvcih2YXIgaT1qNCh0aGlzLm5vZGUoKSkscj0tMSxvPW4ubGVuZ3RoOysrcjxvOylpZighaS5jb250YWlucyhuW3JdKSlyZXR1cm4hMTtyZXR1cm4hMH1yZXR1cm4gdGhpcy5lYWNoKCgiZnVuY3Rpb24iPT10eXBlb2YgZT9YNDplP3E0Olk0KShuLGUpKX0sdGV4dDpmdW5jdGlvbiBGNih0KXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD90aGlzLmVhY2gobnVsbD09dD8kNDooImZ1bmN0aW9uIj09dHlwZW9mIHQ/WjQ6SzQpKHQpKTp0aGlzLm5vZGUoKS50ZXh0Q29udGVudH0saHRtbDpmdW5jdGlvbiBWNih0KXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD90aGlzLmVhY2gobnVsbD09dD9KNDooImZ1bmN0aW9uIj09dHlwZW9mIHQ/dDY6UTQpKHQpKTp0aGlzLm5vZGUoKS5pbm5lckhUTUx9LHJhaXNlOmZ1bmN0aW9uIGo2KCl7cmV0dXJuIHRoaXMuZWFjaChlNil9LGxvd2VyOmZ1bmN0aW9uIFU2KCl7cmV0dXJuIHRoaXMuZWFjaChuNil9LGFwcGVuZDpmdW5jdGlvbiBHNih0KXt2YXIgZT0iZnVuY3Rpb24iPT10eXBlb2YgdD90OnA0KHQpO3JldHVybiB0aGlzLnNlbGVjdCgoZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5hcHBlbmRDaGlsZChlLmFwcGx5KHRoaXMsYXJndW1lbnRzKSl9KSl9LGluc2VydDpmdW5jdGlvbiBXNih0LGUpe3ZhciBuPSJmdW5jdGlvbiI9PXR5cGVvZiB0P3Q6cDQodCksaT1udWxsPT1lP2k2OiJmdW5jdGlvbiI9PXR5cGVvZiBlP2U6bTQoZSk7cmV0dXJuIHRoaXMuc2VsZWN0KChmdW5jdGlvbigpe3JldHVybiB0aGlzLmluc2VydEJlZm9yZShuLmFwcGx5KHRoaXMsYXJndW1lbnRzKSxpLmFwcGx5KHRoaXMsYXJndW1lbnRzKXx8bnVsbCl9KSl9LHJlbW92ZTpmdW5jdGlvbiBxNigpe3JldHVybiB0aGlzLmVhY2gocjYpfSxjbG9uZTpmdW5jdGlvbiBZNih0KXtyZXR1cm4gdGhpcy5zZWxlY3QodD9hNjpvNil9LGRhdHVtOmZ1bmN0aW9uIFg2KHQpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoP3RoaXMucHJvcGVydHkoIl9fZGF0YV9fIix0KTp0aGlzLm5vZGUoKS5fX2RhdGFfX30sb246ZnVuY3Rpb24gJDYodCxlLG4pe3ZhciBpLHIsbz1oNih0KyIiKSxhPW8ubGVuZ3RoO2lmKCEoYXJndW1lbnRzLmxlbmd0aDwyKSl7Zm9yKHM9ZT9wNjpkNixudWxsPT1uJiYobj0hMSksaT0wO2k8YTsrK2kpdGhpcy5lYWNoKHMob1tpXSxlLG4pKTtyZXR1cm4gdGhpc312YXIgcz10aGlzLm5vZGUoKS5fX29uO2lmKHMpZm9yKHZhciBsLGM9MCx1PXMubGVuZ3RoO2M8dTsrK2MpZm9yKGk9MCxsPXNbY107aTxhOysraSlpZigocj1vW2ldKS50eXBlPT09bC50eXBlJiZyLm5hbWU9PT1sLm5hbWUpcmV0dXJuIGwudmFsdWV9LGRpc3BhdGNoOmZ1bmN0aW9uIEs2KHQsZSl7cmV0dXJuIHRoaXMuZWFjaCgoImZ1bmN0aW9uIj09dHlwZW9mIGU/ZzY6bTYpKHQsZSkpfX07dmFyIFo2PTA7ZnVuY3Rpb24gSjYoKXtyZXR1cm4gbmV3IFE2fWZ1bmN0aW9uIFE2KCl7dGhpcy5fPSJAIisoKytaNikudG9TdHJpbmcoMzYpfWZ1bmN0aW9uIHQ5KCl7Zm9yKHZhciB0LGU9bDY7dD1lLnNvdXJjZUV2ZW50OyllPXQ7cmV0dXJuIGV9ZnVuY3Rpb24gZTkodCxlKXt2YXIgbj10Lm93bmVyU1ZHRWxlbWVudHx8dDtpZihuLmNyZWF0ZVNWR1BvaW50KXt2YXIgaT1uLmNyZWF0ZVNWR1BvaW50KCk7cmV0dXJuIGkueD1lLmNsaWVudFgsaS55PWUuY2xpZW50WSxbKGk9aS5tYXRyaXhUcmFuc2Zvcm0odC5nZXRTY3JlZW5DVE0oKS5pbnZlcnNlKCkpKS54LGkueV19dmFyIHI9dC5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKTtyZXR1cm5bZS5jbGllbnRYLXIubGVmdC10LmNsaWVudExlZnQsZS5jbGllbnRZLXIudG9wLXQuY2xpZW50VG9wXX1RNi5wcm90b3R5cGU9SjYucHJvdG90eXBlPXtjb25zdHJ1Y3RvcjpRNixnZXQ6ZnVuY3Rpb24odCl7Zm9yKHZhciBlPXRoaXMuXzshKGUgaW4gdCk7KWlmKCEodD10LnBhcmVudE5vZGUpKXJldHVybjtyZXR1cm4gdFtlXX0sc2V0OmZ1bmN0aW9uKHQsZSl7cmV0dXJuIHRbdGhpcy5fXT1lfSxyZW1vdmU6ZnVuY3Rpb24odCl7cmV0dXJuIHRoaXMuXyBpbiB0JiZkZWxldGUgdFt0aGlzLl9dfSx0b1N0cmluZzpmdW5jdGlvbigpe3JldHVybiB0aGlzLl99fTt2YXIgbjk9TWF0aC5QSSxpOT0yKm45LHI5PTFlLTYsbzk9aTktcjk7ZnVuY3Rpb24gYTkoKXt0aGlzLl94MD10aGlzLl95MD10aGlzLl94MT10aGlzLl95MT1udWxsLHRoaXMuXz0iIn1mdW5jdGlvbiBzOSgpe3JldHVybiBuZXcgYTl9ZnVuY3Rpb24gbDkodCl7cmV0dXJuIGZ1bmN0aW9uIGUoKXtyZXR1cm4gdH19YTkucHJvdG90eXBlPXM5LnByb3RvdHlwZT17Y29uc3RydWN0b3I6YTksbW92ZVRvOmZ1bmN0aW9uKHQsZSl7dGhpcy5fKz0iTSIrKHRoaXMuX3gwPXRoaXMuX3gxPSt0KSsiLCIrKHRoaXMuX3kwPXRoaXMuX3kxPStlKX0sY2xvc2VQYXRoOmZ1bmN0aW9uKCl7bnVsbCE9PXRoaXMuX3gxJiYodGhpcy5feDE9dGhpcy5feDAsdGhpcy5feTE9dGhpcy5feTAsdGhpcy5fKz0iWiIpfSxsaW5lVG86ZnVuY3Rpb24odCxlKXt0aGlzLl8rPSJMIisodGhpcy5feDE9K3QpKyIsIisodGhpcy5feTE9K2UpfSxxdWFkcmF0aWNDdXJ2ZVRvOmZ1bmN0aW9uKHQsZSxuLGkpe3RoaXMuXys9IlEiKyArdCsiLCIrICtlKyIsIisodGhpcy5feDE9K24pKyIsIisodGhpcy5feTE9K2kpfSxiZXppZXJDdXJ2ZVRvOmZ1bmN0aW9uKHQsZSxuLGkscixvKXt0aGlzLl8rPSJDIisgK3QrIiwiKyArZSsiLCIrICtuKyIsIisgK2krIiwiKyh0aGlzLl94MT0rcikrIiwiKyh0aGlzLl95MT0rbyl9LGFyY1RvOmZ1bmN0aW9uKHQsZSxuLGkscil7dmFyIG89dGhpcy5feDEsYT10aGlzLl95MSxzPShuPStuKS0odD0rdCksbD0oaT0raSktKGU9K2UpLGM9by10LHU9YS1lLGg9YypjK3UqdTtpZigocj0rcik8MCl0aHJvdyBuZXcgRXJyb3IoIm5lZ2F0aXZlIHJhZGl1czogIityKTtpZihudWxsPT09dGhpcy5feDEpdGhpcy5fKz0iTSIrKHRoaXMuX3gxPXQpKyIsIisodGhpcy5feTE9ZSk7ZWxzZSBpZihoPnI5KWlmKE1hdGguYWJzKHUqcy1sKmMpPnI5JiZyKXt2YXIgZD1uLW8scD1pLWEsZj1zKnMrbCpsLG09ZCpkK3AqcCxnPU1hdGguc3FydChmKSxfPU1hdGguc3FydChoKSx5PXIqTWF0aC50YW4oKG45LU1hdGguYWNvcygoZitoLW0pLygyKmcqXykpKS8yKSx2PXkvXyxiPXkvZztNYXRoLmFicyh2LTEpPnI5JiYodGhpcy5fKz0iTCIrKHQrdipjKSsiLCIrKGUrdip1KSksdGhpcy5fKz0iQSIrcisiLCIrcisiLDAsMCwiKyArKHUqZD5jKnApKyIsIisodGhpcy5feDE9dCtiKnMpKyIsIisodGhpcy5feTE9ZStiKmwpfWVsc2UgdGhpcy5fKz0iTCIrKHRoaXMuX3gxPXQpKyIsIisodGhpcy5feTE9ZSl9LGFyYzpmdW5jdGlvbih0LGUsbixpLHIsbyl7dD0rdCxlPStlLG89ISFvO3ZhciBhPShuPStuKSpNYXRoLmNvcyhpKSxzPW4qTWF0aC5zaW4oaSksbD10K2EsYz1lK3MsdT0xXm8saD1vP2ktcjpyLWk7aWYobjwwKXRocm93IG5ldyBFcnJvcigibmVnYXRpdmUgcmFkaXVzOiAiK24pO251bGw9PT10aGlzLl94MT90aGlzLl8rPSJNIitsKyIsIitjOihNYXRoLmFicyh0aGlzLl94MS1sKT5yOXx8TWF0aC5hYnModGhpcy5feTEtYyk+cjkpJiYodGhpcy5fKz0iTCIrbCsiLCIrYyksbiYmKGg8MCYmKGg9aCVpOStpOSksaD5vOT90aGlzLl8rPSJBIituKyIsIituKyIsMCwxLCIrdSsiLCIrKHQtYSkrIiwiKyhlLXMpKyJBIituKyIsIituKyIsMCwxLCIrdSsiLCIrKHRoaXMuX3gxPWwpKyIsIisodGhpcy5feTE9Yyk6aD5yOSYmKHRoaXMuXys9IkEiK24rIiwiK24rIiwwLCIrICsoaD49bjkpKyIsIit1KyIsIisodGhpcy5feDE9dCtuKk1hdGguY29zKHIpKSsiLCIrKHRoaXMuX3kxPWUrbipNYXRoLnNpbihyKSkpKX0scmVjdDpmdW5jdGlvbih0LGUsbixpKXt0aGlzLl8rPSJNIisodGhpcy5feDA9dGhpcy5feDE9K3QpKyIsIisodGhpcy5feTA9dGhpcy5feTE9K2UpKyJoIisgK24rInYiKyAraSsiaCIrLW4rIloifSx0b1N0cmluZzpmdW5jdGlvbigpe3JldHVybiB0aGlzLl99fTt2YXIgYzk9TWF0aC5hYnMsdTk9TWF0aC5hdGFuMixoOT1NYXRoLmNvcyxkOT1NYXRoLm1heCxwOT1NYXRoLm1pbixmOT1NYXRoLnNpbixtOT1NYXRoLnNxcnQsZzk9MWUtMTIsXzk9TWF0aC5QSSx5OT1fOS8yLHY5PTIqXzk7ZnVuY3Rpb24gYjkodCl7cmV0dXJuIHQ+MT8wOnQ8LTE/Xzk6TWF0aC5hY29zKHQpfWZ1bmN0aW9uIHg5KHQpe3JldHVybiB0Pj0xP3k5OnQ8PS0xPy15OTpNYXRoLmFzaW4odCl9ZnVuY3Rpb24gdzkodCl7cmV0dXJuIHQuaW5uZXJSYWRpdXN9ZnVuY3Rpb24gUzkodCl7cmV0dXJuIHQub3V0ZXJSYWRpdXN9ZnVuY3Rpb24gTTkodCl7cmV0dXJuIHQuc3RhcnRBbmdsZX1mdW5jdGlvbiBFOSh0KXtyZXR1cm4gdC5lbmRBbmdsZX1mdW5jdGlvbiBUOSh0KXtyZXR1cm4gdCYmdC5wYWRBbmdsZX1mdW5jdGlvbiBBOSh0LGUsbixpLHIsbyxhLHMpe3ZhciBsPW4tdCxjPWktZSx1PWEtcixoPXMtbyxkPSh1KihlLW8pLWgqKHQtcikpLyhoKmwtdSpjKTtyZXR1cm5bdCtkKmwsZStkKmNdfWZ1bmN0aW9uIEM5KHQsZSxuLGkscixvLGEpe3ZhciBzPXQtbixsPWUtaSxjPShhP286LW8pL205KHMqcytsKmwpLHU9YypsLGg9LWMqcyxkPXQrdSxwPWUraCxmPW4rdSxtPWkraCxnPShkK2YpLzIsXz0ocCttKS8yLHk9Zi1kLHY9bS1wLGI9eSp5K3Yqdix4PXItbyx3PWQqbS1mKnAsUz0odjwwPy0xOjEpKm05KGQ5KDAseCp4KmItdyp3KSksTT0odyp2LXkqUykvYixFPSgtdyp5LXYqUykvYixUPSh3KnYreSpTKS9iLEE9KC13KnkrdipTKS9iLEM9TS1nLGs9RS1fLEw9VC1nLFA9QS1fO3JldHVybiBDKkMrayprPkwqTCtQKlAmJihNPVQsRT1BKSx7Y3g6TSxjeTpFLHgwMTotdSx5MDE6LWgseDExOk0qKHIveC0xKSx5MTE6RSooci94LTEpfX1mdW5jdGlvbiBrOSh0KXt0aGlzLl9jb250ZXh0PXR9ZnVuY3Rpb24gTDkodCl7cmV0dXJuIG5ldyBrOSh0KX1mdW5jdGlvbiBQOSh0KXtyZXR1cm4gdFswXX1mdW5jdGlvbiBJOSh0KXtyZXR1cm4gdFsxXX1mdW5jdGlvbiBOOSgpe3ZhciB0PVA5LGU9STksbj1sOSghMCksaT1udWxsLHI9TDksbz1udWxsO2Z1bmN0aW9uIGEoYSl7dmFyIHMsbCxjLHU9YS5sZW5ndGgsaD0hMTtmb3IobnVsbD09aSYmKG89cihjPXM5KCkpKSxzPTA7czw9dTsrK3MpIShzPHUmJm4obD1hW3NdLHMsYSkpPT09aCYmKChoPSFoKT9vLmxpbmVTdGFydCgpOm8ubGluZUVuZCgpKSxoJiZvLnBvaW50KCt0KGwscyxhKSwrZShsLHMsYSkpO2lmKGMpcmV0dXJuIG89bnVsbCxjKyIifHxudWxsfXJldHVybiBhLng9ZnVuY3Rpb24oZSl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KHQ9ImZ1bmN0aW9uIj09dHlwZW9mIGU/ZTpsOSgrZSksYSk6dH0sYS55PWZ1bmN0aW9uKHQpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyhlPSJmdW5jdGlvbiI9PXR5cGVvZiB0P3Q6bDkoK3QpLGEpOmV9LGEuZGVmaW5lZD1mdW5jdGlvbih0KXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8obj0iZnVuY3Rpb24iPT10eXBlb2YgdD90Omw5KCEhdCksYSk6bn0sYS5jdXJ2ZT1mdW5jdGlvbih0KXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8ocj10LG51bGwhPWkmJihvPXIoaSkpLGEpOnJ9LGEuY29udGV4dD1mdW5jdGlvbih0KXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8obnVsbD09dD9pPW89bnVsbDpvPXIoaT10KSxhKTppfSxhfWZ1bmN0aW9uIE85KCl7dmFyIHQ9UDksZT1udWxsLG49bDkoMCksaT1JOSxyPWw5KCEwKSxvPW51bGwsYT1MOSxzPW51bGw7ZnVuY3Rpb24gbChsKXt2YXIgYyx1LGgsZCxwLGY9bC5sZW5ndGgsbT0hMSxnPW5ldyBBcnJheShmKSxfPW5ldyBBcnJheShmKTtmb3IobnVsbD09byYmKHM9YShwPXM5KCkpKSxjPTA7Yzw9ZjsrK2Mpe2lmKCEoYzxmJiZyKGQ9bFtjXSxjLGwpKT09PW0paWYobT0hbSl1PWMscy5hcmVhU3RhcnQoKSxzLmxpbmVTdGFydCgpO2Vsc2V7Zm9yKHMubGluZUVuZCgpLHMubGluZVN0YXJ0KCksaD1jLTE7aD49dTstLWgpcy5wb2ludChnW2hdLF9baF0pO3MubGluZUVuZCgpLHMuYXJlYUVuZCgpfW0mJihnW2NdPSt0KGQsYyxsKSxfW2NdPStuKGQsYyxsKSxzLnBvaW50KGU/K2UoZCxjLGwpOmdbY10saT8raShkLGMsbCk6X1tjXSkpfWlmKHApcmV0dXJuIHM9bnVsbCxwKyIifHxudWxsfWZ1bmN0aW9uIGMoKXtyZXR1cm4gTjkoKS5kZWZpbmVkKHIpLmN1cnZlKGEpLmNvbnRleHQobyl9cmV0dXJuIGwueD1mdW5jdGlvbihuKXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8odD0iZnVuY3Rpb24iPT10eXBlb2Ygbj9uOmw5KCtuKSxlPW51bGwsbCk6dH0sbC54MD1mdW5jdGlvbihlKXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8odD0iZnVuY3Rpb24iPT10eXBlb2YgZT9lOmw5KCtlKSxsKTp0fSxsLngxPWZ1bmN0aW9uKHQpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyhlPW51bGw9PXQ/bnVsbDoiZnVuY3Rpb24iPT10eXBlb2YgdD90Omw5KCt0KSxsKTplfSxsLnk9ZnVuY3Rpb24odCl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KG49ImZ1bmN0aW9uIj09dHlwZW9mIHQ/dDpsOSgrdCksaT1udWxsLGwpOm59LGwueTA9ZnVuY3Rpb24odCl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KG49ImZ1bmN0aW9uIj09dHlwZW9mIHQ/dDpsOSgrdCksbCk6bn0sbC55MT1mdW5jdGlvbih0KXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8oaT1udWxsPT10P251bGw6ImZ1bmN0aW9uIj09dHlwZW9mIHQ/dDpsOSgrdCksbCk6aX0sbC5saW5lWDA9bC5saW5lWTA9ZnVuY3Rpb24oKXtyZXR1cm4gYygpLngodCkueShuKX0sbC5saW5lWTE9ZnVuY3Rpb24oKXtyZXR1cm4gYygpLngodCkueShpKX0sbC5saW5lWDE9ZnVuY3Rpb24oKXtyZXR1cm4gYygpLngoZSkueShuKX0sbC5kZWZpbmVkPWZ1bmN0aW9uKHQpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyhyPSJmdW5jdGlvbiI9PXR5cGVvZiB0P3Q6bDkoISF0KSxsKTpyfSxsLmN1cnZlPWZ1bmN0aW9uKHQpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyhhPXQsbnVsbCE9byYmKHM9YShvKSksbCk6YX0sbC5jb250ZXh0PWZ1bmN0aW9uKHQpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyhudWxsPT10P289cz1udWxsOnM9YShvPXQpLGwpOm99LGx9ZnVuY3Rpb24gUjkodCxlKXtyZXR1cm4gZTx0Py0xOmU+dD8xOmU+PXQ/MDpOYU59ZnVuY3Rpb24gejkodCl7cmV0dXJuIHR9azkucHJvdG90eXBlPXthcmVhU3RhcnQ6ZnVuY3Rpb24oKXt0aGlzLl9saW5lPTB9LGFyZWFFbmQ6ZnVuY3Rpb24oKXt0aGlzLl9saW5lPU5hTn0sbGluZVN0YXJ0OmZ1bmN0aW9uKCl7dGhpcy5fcG9pbnQ9MH0sbGluZUVuZDpmdW5jdGlvbigpeyh0aGlzLl9saW5lfHwwIT09dGhpcy5fbGluZSYmMT09PXRoaXMuX3BvaW50KSYmdGhpcy5fY29udGV4dC5jbG9zZVBhdGgoKSx0aGlzLl9saW5lPTEtdGhpcy5fbGluZX0scG9pbnQ6ZnVuY3Rpb24odCxlKXtzd2l0Y2godD0rdCxlPStlLHRoaXMuX3BvaW50KXtjYXNlIDA6dGhpcy5fcG9pbnQ9MSx0aGlzLl9saW5lP3RoaXMuX2NvbnRleHQubGluZVRvKHQsZSk6dGhpcy5fY29udGV4dC5tb3ZlVG8odCxlKTticmVhaztjYXNlIDE6dGhpcy5fcG9pbnQ9MjtkZWZhdWx0OnRoaXMuX2NvbnRleHQubGluZVRvKHQsZSl9fX07dmFyIEQ5PUg5KEw5KTtmdW5jdGlvbiBCOSh0KXt0aGlzLl9jdXJ2ZT10fWZ1bmN0aW9uIEg5KHQpe2Z1bmN0aW9uIGUoZSl7cmV0dXJuIG5ldyBCOSh0KGUpKX1yZXR1cm4gZS5fY3VydmU9dCxlfWZ1bmN0aW9uIEY5KHQpe3ZhciBlPXQuY3VydmU7cmV0dXJuIHQuYW5nbGU9dC54LGRlbGV0ZSB0LngsdC5yYWRpdXM9dC55LGRlbGV0ZSB0LnksdC5jdXJ2ZT1mdW5jdGlvbih0KXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD9lKEg5KHQpKTplKCkuX2N1cnZlfSx0fWZ1bmN0aW9uIFY5KCl7cmV0dXJuIEY5KE45KCkuY3VydmUoRDkpKX1mdW5jdGlvbiBqOSgpe3ZhciB0PU85KCkuY3VydmUoRDkpLGU9dC5jdXJ2ZSxuPXQubGluZVgwLGk9dC5saW5lWDEscj10LmxpbmVZMCxvPXQubGluZVkxO3JldHVybiB0LmFuZ2xlPXQueCxkZWxldGUgdC54LHQuc3RhcnRBbmdsZT10LngwLGRlbGV0ZSB0LngwLHQuZW5kQW5nbGU9dC54MSxkZWxldGUgdC54MSx0LnJhZGl1cz10LnksZGVsZXRlIHQueSx0LmlubmVyUmFkaXVzPXQueTAsZGVsZXRlIHQueTAsdC5vdXRlclJhZGl1cz10LnkxLGRlbGV0ZSB0LnkxLHQubGluZVN0YXJ0QW5nbGU9ZnVuY3Rpb24oKXtyZXR1cm4gRjkobigpKX0sZGVsZXRlIHQubGluZVgwLHQubGluZUVuZEFuZ2xlPWZ1bmN0aW9uKCl7cmV0dXJuIEY5KGkoKSl9LGRlbGV0ZSB0LmxpbmVYMSx0LmxpbmVJbm5lclJhZGl1cz1mdW5jdGlvbigpe3JldHVybiBGOShyKCkpfSxkZWxldGUgdC5saW5lWTAsdC5saW5lT3V0ZXJSYWRpdXM9ZnVuY3Rpb24oKXtyZXR1cm4gRjkobygpKX0sZGVsZXRlIHQubGluZVkxLHQuY3VydmU9ZnVuY3Rpb24odCl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/ZShIOSh0KSk6ZSgpLl9jdXJ2ZX0sdH1mdW5jdGlvbiBVOSh0LGUpe3JldHVyblsoZT0rZSkqTWF0aC5jb3ModC09TWF0aC5QSS8yKSxlKk1hdGguc2luKHQpXX1COS5wcm90b3R5cGU9e2FyZWFTdGFydDpmdW5jdGlvbigpe3RoaXMuX2N1cnZlLmFyZWFTdGFydCgpfSxhcmVhRW5kOmZ1bmN0aW9uKCl7dGhpcy5fY3VydmUuYXJlYUVuZCgpfSxsaW5lU3RhcnQ6ZnVuY3Rpb24oKXt0aGlzLl9jdXJ2ZS5saW5lU3RhcnQoKX0sbGluZUVuZDpmdW5jdGlvbigpe3RoaXMuX2N1cnZlLmxpbmVFbmQoKX0scG9pbnQ6ZnVuY3Rpb24odCxlKXt0aGlzLl9jdXJ2ZS5wb2ludChlKk1hdGguc2luKHQpLGUqLU1hdGguY29zKHQpKX19O3ZhciBHOT1BcnJheS5wcm90b3R5cGUuc2xpY2U7ZnVuY3Rpb24gVzkodCl7cmV0dXJuIHQuc291cmNlfWZ1bmN0aW9uIHE5KHQpe3JldHVybiB0LnRhcmdldH1mdW5jdGlvbiBZOSh0KXt2YXIgZT1XOSxuPXE5LGk9UDkscj1JOSxvPW51bGw7ZnVuY3Rpb24gYSgpe3ZhciBhLHM9RzkuY2FsbChhcmd1bWVudHMpLGw9ZS5hcHBseSh0aGlzLHMpLGM9bi5hcHBseSh0aGlzLHMpO2lmKG98fChvPWE9czkoKSksdChvLCtpLmFwcGx5KHRoaXMsKHNbMF09bCxzKSksK3IuYXBwbHkodGhpcyxzKSwraS5hcHBseSh0aGlzLChzWzBdPWMscykpLCtyLmFwcGx5KHRoaXMscykpLGEpcmV0dXJuIG89bnVsbCxhKyIifHxudWxsfXJldHVybiBhLnNvdXJjZT1mdW5jdGlvbih0KXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8oZT10LGEpOmV9LGEudGFyZ2V0PWZ1bmN0aW9uKHQpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyhuPXQsYSk6bn0sYS54PWZ1bmN0aW9uKHQpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyhpPSJmdW5jdGlvbiI9PXR5cGVvZiB0P3Q6bDkoK3QpLGEpOml9LGEueT1mdW5jdGlvbih0KXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8ocj0iZnVuY3Rpb24iPT10eXBlb2YgdD90Omw5KCt0KSxhKTpyfSxhLmNvbnRleHQ9ZnVuY3Rpb24odCl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KG89bnVsbD09dD9udWxsOnQsYSk6b30sYX1mdW5jdGlvbiBYOSh0LGUsbixpLHIpe3QubW92ZVRvKGUsbiksdC5iZXppZXJDdXJ2ZVRvKGU9KGUraSkvMixuLGUscixpLHIpfWZ1bmN0aW9uICQ5KHQsZSxuLGkscil7dC5tb3ZlVG8oZSxuKSx0LmJlemllckN1cnZlVG8oZSxuPShuK3IpLzIsaSxuLGkscil9ZnVuY3Rpb24gSzkodCxlLG4saSxyKXt2YXIgbz1VOShlLG4pLGE9VTkoZSxuPShuK3IpLzIpLHM9VTkoaSxuKSxsPVU5KGkscik7dC5tb3ZlVG8ob1swXSxvWzFdKSx0LmJlemllckN1cnZlVG8oYVswXSxhWzFdLHNbMF0sc1sxXSxsWzBdLGxbMV0pfXZhciBaOT17ZHJhdzpmdW5jdGlvbih0LGUpe3ZhciBuPU1hdGguc3FydChlL185KTt0Lm1vdmVUbyhuLDApLHQuYXJjKDAsMCxuLDAsdjkpfX0sSjk9e2RyYXc6ZnVuY3Rpb24odCxlKXt2YXIgbj1NYXRoLnNxcnQoZS81KS8yO3QubW92ZVRvKC0zKm4sLW4pLHQubGluZVRvKC1uLC1uKSx0LmxpbmVUbygtbiwtMypuKSx0LmxpbmVUbyhuLC0zKm4pLHQubGluZVRvKG4sLW4pLHQubGluZVRvKDMqbiwtbiksdC5saW5lVG8oMypuLG4pLHQubGluZVRvKG4sbiksdC5saW5lVG8obiwzKm4pLHQubGluZVRvKC1uLDMqbiksdC5saW5lVG8oLW4sbiksdC5saW5lVG8oLTMqbixuKSx0LmNsb3NlUGF0aCgpfX0sUTk9TWF0aC5zcXJ0KDEvMyksdDg9MipROSxlOD17ZHJhdzpmdW5jdGlvbih0LGUpe3ZhciBuPU1hdGguc3FydChlL3Q4KSxpPW4qUTk7dC5tb3ZlVG8oMCwtbiksdC5saW5lVG8oaSwwKSx0LmxpbmVUbygwLG4pLHQubGluZVRvKC1pLDApLHQuY2xvc2VQYXRoKCl9fSxuOD1NYXRoLnNpbihfOS8xMCkvTWF0aC5zaW4oNypfOS8xMCksaTg9TWF0aC5zaW4odjkvMTApKm44LHI4PS1NYXRoLmNvcyh2OS8xMCkqbjgsbzg9e2RyYXc6ZnVuY3Rpb24odCxlKXt2YXIgbj1NYXRoLnNxcnQoLjg5MDgxMzA5MTUyOTI4NTIqZSksaT1pOCpuLHI9cjgqbjt0Lm1vdmVUbygwLC1uKSx0LmxpbmVUbyhpLHIpO2Zvcih2YXIgbz0xO288NTsrK28pe3ZhciBhPXY5Km8vNSxzPU1hdGguY29zKGEpLGw9TWF0aC5zaW4oYSk7dC5saW5lVG8obCpuLC1zKm4pLHQubGluZVRvKHMqaS1sKnIsbCppK3Mqcil9dC5jbG9zZVBhdGgoKX19LGE4PXtkcmF3OmZ1bmN0aW9uKHQsZSl7dmFyIG49TWF0aC5zcXJ0KGUpLGk9LW4vMjt0LnJlY3QoaSxpLG4sbil9fSxzOD1NYXRoLnNxcnQoMyksbDg9e2RyYXc6ZnVuY3Rpb24odCxlKXt2YXIgbj0tTWF0aC5zcXJ0KGUvKDMqczgpKTt0Lm1vdmVUbygwLDIqbiksdC5saW5lVG8oLXM4Km4sLW4pLHQubGluZVRvKHM4Km4sLW4pLHQuY2xvc2VQYXRoKCl9fSxjOD0tLjUsdTg9TWF0aC5zcXJ0KDMpLzIsaDg9MS9NYXRoLnNxcnQoMTIpLGQ4PTMqKGg4LzIrMSkscDg9e2RyYXc6ZnVuY3Rpb24odCxlKXt2YXIgbj1NYXRoLnNxcnQoZS9kOCksaT1uLzIscj1uKmg4LG89aSxhPW4qaDgrbixzPS1vLGw9YTt0Lm1vdmVUbyhpLHIpLHQubGluZVRvKG8sYSksdC5saW5lVG8ocyxsKSx0LmxpbmVUbyhjOCppLXU4KnIsdTgqaStjOCpyKSx0LmxpbmVUbyhjOCpvLXU4KmEsdTgqbytjOCphKSx0LmxpbmVUbyhjOCpzLXU4KmwsdTgqcytjOCpsKSx0LmxpbmVUbyhjOCppK3U4KnIsYzgqci11OCppKSx0LmxpbmVUbyhjOCpvK3U4KmEsYzgqYS11OCpvKSx0LmxpbmVUbyhjOCpzK3U4KmwsYzgqbC11OCpzKSx0LmNsb3NlUGF0aCgpfX0sZjg9W1o5LEo5LGU4LGE4LG84LGw4LHA4XTtmdW5jdGlvbiBtOCgpe31mdW5jdGlvbiBnOCh0LGUsbil7dC5fY29udGV4dC5iZXppZXJDdXJ2ZVRvKCgyKnQuX3gwK3QuX3gxKS8zLCgyKnQuX3kwK3QuX3kxKS8zLCh0Ll94MCsyKnQuX3gxKS8zLCh0Ll95MCsyKnQuX3kxKS8zLCh0Ll94MCs0KnQuX3gxK2UpLzYsKHQuX3kwKzQqdC5feTErbikvNil9ZnVuY3Rpb24gXzgodCl7dGhpcy5fY29udGV4dD10fWZ1bmN0aW9uIHk4KHQpe3RoaXMuX2NvbnRleHQ9dH1mdW5jdGlvbiB2OCh0KXt0aGlzLl9jb250ZXh0PXR9ZnVuY3Rpb24gYjgodCxlKXt0aGlzLl9iYXNpcz1uZXcgXzgodCksdGhpcy5fYmV0YT1lfV84LnByb3RvdHlwZT17YXJlYVN0YXJ0OmZ1bmN0aW9uKCl7dGhpcy5fbGluZT0wfSxhcmVhRW5kOmZ1bmN0aW9uKCl7dGhpcy5fbGluZT1OYU59LGxpbmVTdGFydDpmdW5jdGlvbigpe3RoaXMuX3gwPXRoaXMuX3gxPXRoaXMuX3kwPXRoaXMuX3kxPU5hTix0aGlzLl9wb2ludD0wfSxsaW5lRW5kOmZ1bmN0aW9uKCl7c3dpdGNoKHRoaXMuX3BvaW50KXtjYXNlIDM6ZzgodGhpcyx0aGlzLl94MSx0aGlzLl95MSk7Y2FzZSAyOnRoaXMuX2NvbnRleHQubGluZVRvKHRoaXMuX3gxLHRoaXMuX3kxKX0odGhpcy5fbGluZXx8MCE9PXRoaXMuX2xpbmUmJjE9PT10aGlzLl9wb2ludCkmJnRoaXMuX2NvbnRleHQuY2xvc2VQYXRoKCksdGhpcy5fbGluZT0xLXRoaXMuX2xpbmV9LHBvaW50OmZ1bmN0aW9uKHQsZSl7c3dpdGNoKHQ9K3QsZT0rZSx0aGlzLl9wb2ludCl7Y2FzZSAwOnRoaXMuX3BvaW50PTEsdGhpcy5fbGluZT90aGlzLl9jb250ZXh0LmxpbmVUbyh0LGUpOnRoaXMuX2NvbnRleHQubW92ZVRvKHQsZSk7YnJlYWs7Y2FzZSAxOnRoaXMuX3BvaW50PTI7YnJlYWs7Y2FzZSAyOnRoaXMuX3BvaW50PTMsdGhpcy5fY29udGV4dC5saW5lVG8oKDUqdGhpcy5feDArdGhpcy5feDEpLzYsKDUqdGhpcy5feTArdGhpcy5feTEpLzYpO2RlZmF1bHQ6ZzgodGhpcyx0LGUpfXRoaXMuX3gwPXRoaXMuX3gxLHRoaXMuX3gxPXQsdGhpcy5feTA9dGhpcy5feTEsdGhpcy5feTE9ZX19LHk4LnByb3RvdHlwZT17YXJlYVN0YXJ0Om04LGFyZWFFbmQ6bTgsbGluZVN0YXJ0OmZ1bmN0aW9uKCl7dGhpcy5feDA9dGhpcy5feDE9dGhpcy5feDI9dGhpcy5feDM9dGhpcy5feDQ9dGhpcy5feTA9dGhpcy5feTE9dGhpcy5feTI9dGhpcy5feTM9dGhpcy5feTQ9TmFOLHRoaXMuX3BvaW50PTB9LGxpbmVFbmQ6ZnVuY3Rpb24oKXtzd2l0Y2godGhpcy5fcG9pbnQpe2Nhc2UgMTp0aGlzLl9jb250ZXh0Lm1vdmVUbyh0aGlzLl94Mix0aGlzLl95MiksdGhpcy5fY29udGV4dC5jbG9zZVBhdGgoKTticmVhaztjYXNlIDI6dGhpcy5fY29udGV4dC5tb3ZlVG8oKHRoaXMuX3gyKzIqdGhpcy5feDMpLzMsKHRoaXMuX3kyKzIqdGhpcy5feTMpLzMpLHRoaXMuX2NvbnRleHQubGluZVRvKCh0aGlzLl94MysyKnRoaXMuX3gyKS8zLCh0aGlzLl95MysyKnRoaXMuX3kyKS8zKSx0aGlzLl9jb250ZXh0LmNsb3NlUGF0aCgpO2JyZWFrO2Nhc2UgMzp0aGlzLnBvaW50KHRoaXMuX3gyLHRoaXMuX3kyKSx0aGlzLnBvaW50KHRoaXMuX3gzLHRoaXMuX3kzKSx0aGlzLnBvaW50KHRoaXMuX3g0LHRoaXMuX3k0KX19LHBvaW50OmZ1bmN0aW9uKHQsZSl7c3dpdGNoKHQ9K3QsZT0rZSx0aGlzLl9wb2ludCl7Y2FzZSAwOnRoaXMuX3BvaW50PTEsdGhpcy5feDI9dCx0aGlzLl95Mj1lO2JyZWFrO2Nhc2UgMTp0aGlzLl9wb2ludD0yLHRoaXMuX3gzPXQsdGhpcy5feTM9ZTticmVhaztjYXNlIDI6dGhpcy5fcG9pbnQ9Myx0aGlzLl94ND10LHRoaXMuX3k0PWUsdGhpcy5fY29udGV4dC5tb3ZlVG8oKHRoaXMuX3gwKzQqdGhpcy5feDErdCkvNiwodGhpcy5feTArNCp0aGlzLl95MStlKS82KTticmVhaztkZWZhdWx0Omc4KHRoaXMsdCxlKX10aGlzLl94MD10aGlzLl94MSx0aGlzLl94MT10LHRoaXMuX3kwPXRoaXMuX3kxLHRoaXMuX3kxPWV9fSx2OC5wcm90b3R5cGU9e2FyZWFTdGFydDpmdW5jdGlvbigpe3RoaXMuX2xpbmU9MH0sYXJlYUVuZDpmdW5jdGlvbigpe3RoaXMuX2xpbmU9TmFOfSxsaW5lU3RhcnQ6ZnVuY3Rpb24oKXt0aGlzLl94MD10aGlzLl94MT10aGlzLl95MD10aGlzLl95MT1OYU4sdGhpcy5fcG9pbnQ9MH0sbGluZUVuZDpmdW5jdGlvbigpeyh0aGlzLl9saW5lfHwwIT09dGhpcy5fbGluZSYmMz09PXRoaXMuX3BvaW50KSYmdGhpcy5fY29udGV4dC5jbG9zZVBhdGgoKSx0aGlzLl9saW5lPTEtdGhpcy5fbGluZX0scG9pbnQ6ZnVuY3Rpb24odCxlKXtzd2l0Y2godD0rdCxlPStlLHRoaXMuX3BvaW50KXtjYXNlIDA6dGhpcy5fcG9pbnQ9MTticmVhaztjYXNlIDE6dGhpcy5fcG9pbnQ9MjticmVhaztjYXNlIDI6dGhpcy5fcG9pbnQ9Mzt2YXIgbj0odGhpcy5feDArNCp0aGlzLl94MSt0KS82LGk9KHRoaXMuX3kwKzQqdGhpcy5feTErZSkvNjt0aGlzLl9saW5lP3RoaXMuX2NvbnRleHQubGluZVRvKG4saSk6dGhpcy5fY29udGV4dC5tb3ZlVG8obixpKTticmVhaztjYXNlIDM6dGhpcy5fcG9pbnQ9NDtkZWZhdWx0Omc4KHRoaXMsdCxlKX10aGlzLl94MD10aGlzLl94MSx0aGlzLl94MT10LHRoaXMuX3kwPXRoaXMuX3kxLHRoaXMuX3kxPWV9fSxiOC5wcm90b3R5cGU9e2xpbmVTdGFydDpmdW5jdGlvbigpe3RoaXMuX3g9W10sdGhpcy5feT1bXSx0aGlzLl9iYXNpcy5saW5lU3RhcnQoKX0sbGluZUVuZDpmdW5jdGlvbigpe3ZhciB0PXRoaXMuX3gsZT10aGlzLl95LG49dC5sZW5ndGgtMTtpZihuPjApZm9yKHZhciBpLHI9dFswXSxvPWVbMF0sYT10W25dLXIscz1lW25dLW8sbD0tMTsrK2w8PW47KXRoaXMuX2Jhc2lzLnBvaW50KHRoaXMuX2JldGEqdFtsXSsoMS10aGlzLl9iZXRhKSoocisoaT1sL24pKmEpLHRoaXMuX2JldGEqZVtsXSsoMS10aGlzLl9iZXRhKSoobytpKnMpKTt0aGlzLl94PXRoaXMuX3k9bnVsbCx0aGlzLl9iYXNpcy5saW5lRW5kKCl9LHBvaW50OmZ1bmN0aW9uKHQsZSl7dGhpcy5feC5wdXNoKCt0KSx0aGlzLl95LnB1c2goK2UpfX07dmFyIHg4PShmdW5jdGlvbiB0KGUpe2Z1bmN0aW9uIG4odCl7cmV0dXJuIDE9PT1lP25ldyBfOCh0KTpuZXcgYjgodCxlKX1yZXR1cm4gbi5iZXRhPWZ1bmN0aW9uKGUpe3JldHVybiB0KCtlKX0sbn0pKC44NSk7ZnVuY3Rpb24gdzgodCxlLG4pe3QuX2NvbnRleHQuYmV6aWVyQ3VydmVUbyh0Ll94MSt0Ll9rKih0Ll94Mi10Ll94MCksdC5feTErdC5fayoodC5feTItdC5feTApLHQuX3gyK3QuX2sqKHQuX3gxLWUpLHQuX3kyK3QuX2sqKHQuX3kxLW4pLHQuX3gyLHQuX3kyKX1mdW5jdGlvbiBTOCh0LGUpe3RoaXMuX2NvbnRleHQ9dCx0aGlzLl9rPSgxLWUpLzZ9UzgucHJvdG90eXBlPXthcmVhU3RhcnQ6ZnVuY3Rpb24oKXt0aGlzLl9saW5lPTB9LGFyZWFFbmQ6ZnVuY3Rpb24oKXt0aGlzLl9saW5lPU5hTn0sbGluZVN0YXJ0OmZ1bmN0aW9uKCl7dGhpcy5feDA9dGhpcy5feDE9dGhpcy5feDI9dGhpcy5feTA9dGhpcy5feTE9dGhpcy5feTI9TmFOLHRoaXMuX3BvaW50PTB9LGxpbmVFbmQ6ZnVuY3Rpb24oKXtzd2l0Y2godGhpcy5fcG9pbnQpe2Nhc2UgMjp0aGlzLl9jb250ZXh0LmxpbmVUbyh0aGlzLl94Mix0aGlzLl95Mik7YnJlYWs7Y2FzZSAzOnc4KHRoaXMsdGhpcy5feDEsdGhpcy5feTEpfSh0aGlzLl9saW5lfHwwIT09dGhpcy5fbGluZSYmMT09PXRoaXMuX3BvaW50KSYmdGhpcy5fY29udGV4dC5jbG9zZVBhdGgoKSx0aGlzLl9saW5lPTEtdGhpcy5fbGluZX0scG9pbnQ6ZnVuY3Rpb24odCxlKXtzd2l0Y2godD0rdCxlPStlLHRoaXMuX3BvaW50KXtjYXNlIDA6dGhpcy5fcG9pbnQ9MSx0aGlzLl9saW5lP3RoaXMuX2NvbnRleHQubGluZVRvKHQsZSk6dGhpcy5fY29udGV4dC5tb3ZlVG8odCxlKTticmVhaztjYXNlIDE6dGhpcy5fcG9pbnQ9Mix0aGlzLl94MT10LHRoaXMuX3kxPWU7YnJlYWs7Y2FzZSAyOnRoaXMuX3BvaW50PTM7ZGVmYXVsdDp3OCh0aGlzLHQsZSl9dGhpcy5feDA9dGhpcy5feDEsdGhpcy5feDE9dGhpcy5feDIsdGhpcy5feDI9dCx0aGlzLl95MD10aGlzLl95MSx0aGlzLl95MT10aGlzLl95Mix0aGlzLl95Mj1lfX07dmFyIE04PShmdW5jdGlvbiB0KGUpe2Z1bmN0aW9uIG4odCl7cmV0dXJuIG5ldyBTOCh0LGUpfXJldHVybiBuLnRlbnNpb249ZnVuY3Rpb24oZSl7cmV0dXJuIHQoK2UpfSxufSkoMCk7ZnVuY3Rpb24gRTgodCxlKXt0aGlzLl9jb250ZXh0PXQsdGhpcy5faz0oMS1lKS82fUU4LnByb3RvdHlwZT17YXJlYVN0YXJ0Om04LGFyZWFFbmQ6bTgsbGluZVN0YXJ0OmZ1bmN0aW9uKCl7dGhpcy5feDA9dGhpcy5feDE9dGhpcy5feDI9dGhpcy5feDM9dGhpcy5feDQ9dGhpcy5feDU9dGhpcy5feTA9dGhpcy5feTE9dGhpcy5feTI9dGhpcy5feTM9dGhpcy5feTQ9dGhpcy5feTU9TmFOLHRoaXMuX3BvaW50PTB9LGxpbmVFbmQ6ZnVuY3Rpb24oKXtzd2l0Y2godGhpcy5fcG9pbnQpe2Nhc2UgMTp0aGlzLl9jb250ZXh0Lm1vdmVUbyh0aGlzLl94Myx0aGlzLl95MyksdGhpcy5fY29udGV4dC5jbG9zZVBhdGgoKTticmVhaztjYXNlIDI6dGhpcy5fY29udGV4dC5saW5lVG8odGhpcy5feDMsdGhpcy5feTMpLHRoaXMuX2NvbnRleHQuY2xvc2VQYXRoKCk7YnJlYWs7Y2FzZSAzOnRoaXMucG9pbnQodGhpcy5feDMsdGhpcy5feTMpLHRoaXMucG9pbnQodGhpcy5feDQsdGhpcy5feTQpLHRoaXMucG9pbnQodGhpcy5feDUsdGhpcy5feTUpfX0scG9pbnQ6ZnVuY3Rpb24odCxlKXtzd2l0Y2godD0rdCxlPStlLHRoaXMuX3BvaW50KXtjYXNlIDA6dGhpcy5fcG9pbnQ9MSx0aGlzLl94Mz10LHRoaXMuX3kzPWU7YnJlYWs7Y2FzZSAxOnRoaXMuX3BvaW50PTIsdGhpcy5fY29udGV4dC5tb3ZlVG8odGhpcy5feDQ9dCx0aGlzLl95ND1lKTticmVhaztjYXNlIDI6dGhpcy5fcG9pbnQ9Myx0aGlzLl94NT10LHRoaXMuX3k1PWU7YnJlYWs7ZGVmYXVsdDp3OCh0aGlzLHQsZSl9dGhpcy5feDA9dGhpcy5feDEsdGhpcy5feDE9dGhpcy5feDIsdGhpcy5feDI9dCx0aGlzLl95MD10aGlzLl95MSx0aGlzLl95MT10aGlzLl95Mix0aGlzLl95Mj1lfX07dmFyIFQ4PShmdW5jdGlvbiB0KGUpe2Z1bmN0aW9uIG4odCl7cmV0dXJuIG5ldyBFOCh0LGUpfXJldHVybiBuLnRlbnNpb249ZnVuY3Rpb24oZSl7cmV0dXJuIHQoK2UpfSxufSkoMCk7ZnVuY3Rpb24gQTgodCxlKXt0aGlzLl9jb250ZXh0PXQsdGhpcy5faz0oMS1lKS82fUE4LnByb3RvdHlwZT17YXJlYVN0YXJ0OmZ1bmN0aW9uKCl7dGhpcy5fbGluZT0wfSxhcmVhRW5kOmZ1bmN0aW9uKCl7dGhpcy5fbGluZT1OYU59LGxpbmVTdGFydDpmdW5jdGlvbigpe3RoaXMuX3gwPXRoaXMuX3gxPXRoaXMuX3gyPXRoaXMuX3kwPXRoaXMuX3kxPXRoaXMuX3kyPU5hTix0aGlzLl9wb2ludD0wfSxsaW5lRW5kOmZ1bmN0aW9uKCl7KHRoaXMuX2xpbmV8fDAhPT10aGlzLl9saW5lJiYzPT09dGhpcy5fcG9pbnQpJiZ0aGlzLl9jb250ZXh0LmNsb3NlUGF0aCgpLHRoaXMuX2xpbmU9MS10aGlzLl9saW5lfSxwb2ludDpmdW5jdGlvbih0LGUpe3N3aXRjaCh0PSt0LGU9K2UsdGhpcy5fcG9pbnQpe2Nhc2UgMDp0aGlzLl9wb2ludD0xO2JyZWFrO2Nhc2UgMTp0aGlzLl9wb2ludD0yO2JyZWFrO2Nhc2UgMjp0aGlzLl9wb2ludD0zLHRoaXMuX2xpbmU/dGhpcy5fY29udGV4dC5saW5lVG8odGhpcy5feDIsdGhpcy5feTIpOnRoaXMuX2NvbnRleHQubW92ZVRvKHRoaXMuX3gyLHRoaXMuX3kyKTticmVhaztjYXNlIDM6dGhpcy5fcG9pbnQ9NDtkZWZhdWx0Onc4KHRoaXMsdCxlKX10aGlzLl94MD10aGlzLl94MSx0aGlzLl94MT10aGlzLl94Mix0aGlzLl94Mj10LHRoaXMuX3kwPXRoaXMuX3kxLHRoaXMuX3kxPXRoaXMuX3kyLHRoaXMuX3kyPWV9fTt2YXIgQzg9KGZ1bmN0aW9uIHQoZSl7ZnVuY3Rpb24gbih0KXtyZXR1cm4gbmV3IEE4KHQsZSl9cmV0dXJuIG4udGVuc2lvbj1mdW5jdGlvbihlKXtyZXR1cm4gdCgrZSl9LG59KSgwKTtmdW5jdGlvbiBrOCh0LGUsbil7dmFyIGk9dC5feDEscj10Ll95MSxvPXQuX3gyLGE9dC5feTI7aWYodC5fbDAxX2E+Zzkpe3ZhciBzPTIqdC5fbDAxXzJhKzMqdC5fbDAxX2EqdC5fbDEyX2ErdC5fbDEyXzJhLGw9Myp0Ll9sMDFfYSoodC5fbDAxX2ErdC5fbDEyX2EpO2k9KGkqcy10Ll94MCp0Ll9sMTJfMmErdC5feDIqdC5fbDAxXzJhKS9sLHI9KHIqcy10Ll95MCp0Ll9sMTJfMmErdC5feTIqdC5fbDAxXzJhKS9sfWlmKHQuX2wyM19hPmc5KXt2YXIgYz0yKnQuX2wyM18yYSszKnQuX2wyM19hKnQuX2wxMl9hK3QuX2wxMl8yYSx1PTMqdC5fbDIzX2EqKHQuX2wyM19hK3QuX2wxMl9hKTtvPShvKmMrdC5feDEqdC5fbDIzXzJhLWUqdC5fbDEyXzJhKS91LGE9KGEqYyt0Ll95MSp0Ll9sMjNfMmEtbip0Ll9sMTJfMmEpL3V9dC5fY29udGV4dC5iZXppZXJDdXJ2ZVRvKGkscixvLGEsdC5feDIsdC5feTIpfWZ1bmN0aW9uIEw4KHQsZSl7dGhpcy5fY29udGV4dD10LHRoaXMuX2FscGhhPWV9TDgucHJvdG90eXBlPXthcmVhU3RhcnQ6ZnVuY3Rpb24oKXt0aGlzLl9saW5lPTB9LGFyZWFFbmQ6ZnVuY3Rpb24oKXt0aGlzLl9saW5lPU5hTn0sbGluZVN0YXJ0OmZ1bmN0aW9uKCl7dGhpcy5feDA9dGhpcy5feDE9dGhpcy5feDI9dGhpcy5feTA9dGhpcy5feTE9dGhpcy5feTI9TmFOLHRoaXMuX2wwMV9hPXRoaXMuX2wxMl9hPXRoaXMuX2wyM19hPXRoaXMuX2wwMV8yYT10aGlzLl9sMTJfMmE9dGhpcy5fbDIzXzJhPXRoaXMuX3BvaW50PTB9LGxpbmVFbmQ6ZnVuY3Rpb24oKXtzd2l0Y2godGhpcy5fcG9pbnQpe2Nhc2UgMjp0aGlzLl9jb250ZXh0LmxpbmVUbyh0aGlzLl94Mix0aGlzLl95Mik7YnJlYWs7Y2FzZSAzOnRoaXMucG9pbnQodGhpcy5feDIsdGhpcy5feTIpfSh0aGlzLl9saW5lfHwwIT09dGhpcy5fbGluZSYmMT09PXRoaXMuX3BvaW50KSYmdGhpcy5fY29udGV4dC5jbG9zZVBhdGgoKSx0aGlzLl9saW5lPTEtdGhpcy5fbGluZX0scG9pbnQ6ZnVuY3Rpb24odCxlKXtpZih0PSt0LGU9K2UsdGhpcy5fcG9pbnQpe3ZhciBuPXRoaXMuX3gyLXQsaT10aGlzLl95Mi1lO3RoaXMuX2wyM19hPU1hdGguc3FydCh0aGlzLl9sMjNfMmE9TWF0aC5wb3cobipuK2kqaSx0aGlzLl9hbHBoYSkpfXN3aXRjaCh0aGlzLl9wb2ludCl7Y2FzZSAwOnRoaXMuX3BvaW50PTEsdGhpcy5fbGluZT90aGlzLl9jb250ZXh0LmxpbmVUbyh0LGUpOnRoaXMuX2NvbnRleHQubW92ZVRvKHQsZSk7YnJlYWs7Y2FzZSAxOnRoaXMuX3BvaW50PTI7YnJlYWs7Y2FzZSAyOnRoaXMuX3BvaW50PTM7ZGVmYXVsdDprOCh0aGlzLHQsZSl9dGhpcy5fbDAxX2E9dGhpcy5fbDEyX2EsdGhpcy5fbDEyX2E9dGhpcy5fbDIzX2EsdGhpcy5fbDAxXzJhPXRoaXMuX2wxMl8yYSx0aGlzLl9sMTJfMmE9dGhpcy5fbDIzXzJhLHRoaXMuX3gwPXRoaXMuX3gxLHRoaXMuX3gxPXRoaXMuX3gyLHRoaXMuX3gyPXQsdGhpcy5feTA9dGhpcy5feTEsdGhpcy5feTE9dGhpcy5feTIsdGhpcy5feTI9ZX19O3ZhciBQOD0oZnVuY3Rpb24gdChlKXtmdW5jdGlvbiBuKHQpe3JldHVybiBlP25ldyBMOCh0LGUpOm5ldyBTOCh0LDApfXJldHVybiBuLmFscGhhPWZ1bmN0aW9uKGUpe3JldHVybiB0KCtlKX0sbn0pKC41KTtmdW5jdGlvbiBJOCh0LGUpe3RoaXMuX2NvbnRleHQ9dCx0aGlzLl9hbHBoYT1lfUk4LnByb3RvdHlwZT17YXJlYVN0YXJ0Om04LGFyZWFFbmQ6bTgsbGluZVN0YXJ0OmZ1bmN0aW9uKCl7dGhpcy5feDA9dGhpcy5feDE9dGhpcy5feDI9dGhpcy5feDM9dGhpcy5feDQ9dGhpcy5feDU9dGhpcy5feTA9dGhpcy5feTE9dGhpcy5feTI9dGhpcy5feTM9dGhpcy5feTQ9dGhpcy5feTU9TmFOLHRoaXMuX2wwMV9hPXRoaXMuX2wxMl9hPXRoaXMuX2wyM19hPXRoaXMuX2wwMV8yYT10aGlzLl9sMTJfMmE9dGhpcy5fbDIzXzJhPXRoaXMuX3BvaW50PTB9LGxpbmVFbmQ6ZnVuY3Rpb24oKXtzd2l0Y2godGhpcy5fcG9pbnQpe2Nhc2UgMTp0aGlzLl9jb250ZXh0Lm1vdmVUbyh0aGlzLl94Myx0aGlzLl95MyksdGhpcy5fY29udGV4dC5jbG9zZVBhdGgoKTticmVhaztjYXNlIDI6dGhpcy5fY29udGV4dC5saW5lVG8odGhpcy5feDMsdGhpcy5feTMpLHRoaXMuX2NvbnRleHQuY2xvc2VQYXRoKCk7YnJlYWs7Y2FzZSAzOnRoaXMucG9pbnQodGhpcy5feDMsdGhpcy5feTMpLHRoaXMucG9pbnQodGhpcy5feDQsdGhpcy5feTQpLHRoaXMucG9pbnQodGhpcy5feDUsdGhpcy5feTUpfX0scG9pbnQ6ZnVuY3Rpb24odCxlKXtpZih0PSt0LGU9K2UsdGhpcy5fcG9pbnQpe3ZhciBuPXRoaXMuX3gyLXQsaT10aGlzLl95Mi1lO3RoaXMuX2wyM19hPU1hdGguc3FydCh0aGlzLl9sMjNfMmE9TWF0aC5wb3cobipuK2kqaSx0aGlzLl9hbHBoYSkpfXN3aXRjaCh0aGlzLl9wb2ludCl7Y2FzZSAwOnRoaXMuX3BvaW50PTEsdGhpcy5feDM9dCx0aGlzLl95Mz1lO2JyZWFrO2Nhc2UgMTp0aGlzLl9wb2ludD0yLHRoaXMuX2NvbnRleHQubW92ZVRvKHRoaXMuX3g0PXQsdGhpcy5feTQ9ZSk7YnJlYWs7Y2FzZSAyOnRoaXMuX3BvaW50PTMsdGhpcy5feDU9dCx0aGlzLl95NT1lO2JyZWFrO2RlZmF1bHQ6azgodGhpcyx0LGUpfXRoaXMuX2wwMV9hPXRoaXMuX2wxMl9hLHRoaXMuX2wxMl9hPXRoaXMuX2wyM19hLHRoaXMuX2wwMV8yYT10aGlzLl9sMTJfMmEsdGhpcy5fbDEyXzJhPXRoaXMuX2wyM18yYSx0aGlzLl94MD10aGlzLl94MSx0aGlzLl94MT10aGlzLl94Mix0aGlzLl94Mj10LHRoaXMuX3kwPXRoaXMuX3kxLHRoaXMuX3kxPXRoaXMuX3kyLHRoaXMuX3kyPWV9fTt2YXIgTjg9KGZ1bmN0aW9uIHQoZSl7ZnVuY3Rpb24gbih0KXtyZXR1cm4gZT9uZXcgSTgodCxlKTpuZXcgRTgodCwwKX1yZXR1cm4gbi5hbHBoYT1mdW5jdGlvbihlKXtyZXR1cm4gdCgrZSl9LG59KSguNSk7ZnVuY3Rpb24gTzgodCxlKXt0aGlzLl9jb250ZXh0PXQsdGhpcy5fYWxwaGE9ZX1POC5wcm90b3R5cGU9e2FyZWFTdGFydDpmdW5jdGlvbigpe3RoaXMuX2xpbmU9MH0sYXJlYUVuZDpmdW5jdGlvbigpe3RoaXMuX2xpbmU9TmFOfSxsaW5lU3RhcnQ6ZnVuY3Rpb24oKXt0aGlzLl94MD10aGlzLl94MT10aGlzLl94Mj10aGlzLl95MD10aGlzLl95MT10aGlzLl95Mj1OYU4sdGhpcy5fbDAxX2E9dGhpcy5fbDEyX2E9dGhpcy5fbDIzX2E9dGhpcy5fbDAxXzJhPXRoaXMuX2wxMl8yYT10aGlzLl9sMjNfMmE9dGhpcy5fcG9pbnQ9MH0sbGluZUVuZDpmdW5jdGlvbigpeyh0aGlzLl9saW5lfHwwIT09dGhpcy5fbGluZSYmMz09PXRoaXMuX3BvaW50KSYmdGhpcy5fY29udGV4dC5jbG9zZVBhdGgoKSx0aGlzLl9saW5lPTEtdGhpcy5fbGluZX0scG9pbnQ6ZnVuY3Rpb24odCxlKXtpZih0PSt0LGU9K2UsdGhpcy5fcG9pbnQpe3ZhciBuPXRoaXMuX3gyLXQsaT10aGlzLl95Mi1lO3RoaXMuX2wyM19hPU1hdGguc3FydCh0aGlzLl9sMjNfMmE9TWF0aC5wb3cobipuK2kqaSx0aGlzLl9hbHBoYSkpfXN3aXRjaCh0aGlzLl9wb2ludCl7Y2FzZSAwOnRoaXMuX3BvaW50PTE7YnJlYWs7Y2FzZSAxOnRoaXMuX3BvaW50PTI7YnJlYWs7Y2FzZSAyOnRoaXMuX3BvaW50PTMsdGhpcy5fbGluZT90aGlzLl9jb250ZXh0LmxpbmVUbyh0aGlzLl94Mix0aGlzLl95Mik6dGhpcy5fY29udGV4dC5tb3ZlVG8odGhpcy5feDIsdGhpcy5feTIpO2JyZWFrO2Nhc2UgMzp0aGlzLl9wb2ludD00O2RlZmF1bHQ6azgodGhpcyx0LGUpfXRoaXMuX2wwMV9hPXRoaXMuX2wxMl9hLHRoaXMuX2wxMl9hPXRoaXMuX2wyM19hLHRoaXMuX2wwMV8yYT10aGlzLl9sMTJfMmEsdGhpcy5fbDEyXzJhPXRoaXMuX2wyM18yYSx0aGlzLl94MD10aGlzLl94MSx0aGlzLl94MT10aGlzLl94Mix0aGlzLl94Mj10LHRoaXMuX3kwPXRoaXMuX3kxLHRoaXMuX3kxPXRoaXMuX3kyLHRoaXMuX3kyPWV9fTt2YXIgUjg9KGZ1bmN0aW9uIHQoZSl7ZnVuY3Rpb24gbih0KXtyZXR1cm4gZT9uZXcgTzgodCxlKTpuZXcgQTgodCwwKX1yZXR1cm4gbi5hbHBoYT1mdW5jdGlvbihlKXtyZXR1cm4gdCgrZSl9LG59KSguNSk7ZnVuY3Rpb24gejgodCl7dGhpcy5fY29udGV4dD10fWZ1bmN0aW9uIEQ4KHQpe3JldHVybiB0PDA/LTE6MX1mdW5jdGlvbiBCOCh0LGUsbil7dmFyIGk9dC5feDEtdC5feDAscj1lLXQuX3gxLG89KHQuX3kxLXQuX3kwKS8oaXx8cjwwJiYtMCksYT0obi10Ll95MSkvKHJ8fGk8MCYmLTApLHM9KG8qcithKmkpLyhpK3IpO3JldHVybihEOChvKStEOChhKSkqTWF0aC5taW4oTWF0aC5hYnMobyksTWF0aC5hYnMoYSksLjUqTWF0aC5hYnMocykpfHwwfWZ1bmN0aW9uIEg4KHQsZSl7dmFyIG49dC5feDEtdC5feDA7cmV0dXJuIG4/KDMqKHQuX3kxLXQuX3kwKS9uLWUpLzI6ZX1mdW5jdGlvbiBGOCh0LGUsbil7dmFyIGk9dC5feDAscj10Ll94MSxvPXQuX3kxLGE9KHItaSkvMzt0Ll9jb250ZXh0LmJlemllckN1cnZlVG8oaSthLHQuX3kwK2EqZSxyLWEsby1hKm4scixvKX1mdW5jdGlvbiBWOCh0KXt0aGlzLl9jb250ZXh0PXR9ZnVuY3Rpb24gajgodCl7dGhpcy5fY29udGV4dD1uZXcgVTgodCl9ZnVuY3Rpb24gVTgodCl7dGhpcy5fY29udGV4dD10fWZ1bmN0aW9uIEc4KHQpe3RoaXMuX2NvbnRleHQ9dH1mdW5jdGlvbiBXOCh0KXt2YXIgZSxuLGk9dC5sZW5ndGgtMSxyPW5ldyBBcnJheShpKSxvPW5ldyBBcnJheShpKSxhPW5ldyBBcnJheShpKTtmb3IoclswXT0wLG9bMF09MixhWzBdPXRbMF0rMip0WzFdLGU9MTtlPGktMTsrK2UpcltlXT0xLG9bZV09NCxhW2VdPTQqdFtlXSsyKnRbZSsxXTtmb3IocltpLTFdPTIsb1tpLTFdPTcsYVtpLTFdPTgqdFtpLTFdK3RbaV0sZT0xO2U8aTsrK2Upb1tlXS09bj1yW2VdL29bZS0xXSxhW2VdLT1uKmFbZS0xXTtmb3IocltpLTFdPWFbaS0xXS9vW2ktMV0sZT1pLTI7ZT49MDstLWUpcltlXT0oYVtlXS1yW2UrMV0pL29bZV07Zm9yKG9baS0xXT0odFtpXStyW2ktMV0pLzIsZT0wO2U8aS0xOysrZSlvW2VdPTIqdFtlKzFdLXJbZSsxXTtyZXR1cm5bcixvXX1mdW5jdGlvbiBxOCh0LGUpe3RoaXMuX2NvbnRleHQ9dCx0aGlzLl90PWV9ZnVuY3Rpb24gWTgodCxlKXtpZigocj10Lmxlbmd0aCk+MSlmb3IodmFyIG4saSxyLG89MSxhPXRbZVswXV0scz1hLmxlbmd0aDtvPHI7KytvKWZvcihpPWEsYT10W2Vbb11dLG49MDtuPHM7KytuKWFbbl1bMV0rPWFbbl1bMF09aXNOYU4oaVtuXVsxXSk/aVtuXVswXTppW25dWzFdfWZ1bmN0aW9uIFg4KHQpe2Zvcih2YXIgZT10Lmxlbmd0aCxuPW5ldyBBcnJheShlKTstLWU+PTA7KW5bZV09ZTtyZXR1cm4gbn1mdW5jdGlvbiAkOCh0LGUpe3JldHVybiB0W2VdfWZ1bmN0aW9uIEs4KHQpe3ZhciBlPXQubWFwKFo4KTtyZXR1cm4gWDgodCkuc29ydCgoZnVuY3Rpb24odCxuKXtyZXR1cm4gZVt0XS1lW25dfSkpfWZ1bmN0aW9uIFo4KHQpe2Zvcih2YXIgZSxuPTAsaT0tMSxyPXQubGVuZ3RoOysraTxyOykoZT0rdFtpXVsxXSkmJihuKz1lKTtyZXR1cm4gbn16OC5wcm90b3R5cGU9e2FyZWFTdGFydDptOCxhcmVhRW5kOm04LGxpbmVTdGFydDpmdW5jdGlvbigpe3RoaXMuX3BvaW50PTB9LGxpbmVFbmQ6ZnVuY3Rpb24oKXt0aGlzLl9wb2ludCYmdGhpcy5fY29udGV4dC5jbG9zZVBhdGgoKX0scG9pbnQ6ZnVuY3Rpb24odCxlKXt0PSt0LGU9K2UsdGhpcy5fcG9pbnQ/dGhpcy5fY29udGV4dC5saW5lVG8odCxlKToodGhpcy5fcG9pbnQ9MSx0aGlzLl9jb250ZXh0Lm1vdmVUbyh0LGUpKX19LFY4LnByb3RvdHlwZT17YXJlYVN0YXJ0OmZ1bmN0aW9uKCl7dGhpcy5fbGluZT0wfSxhcmVhRW5kOmZ1bmN0aW9uKCl7dGhpcy5fbGluZT1OYU59LGxpbmVTdGFydDpmdW5jdGlvbigpe3RoaXMuX3gwPXRoaXMuX3gxPXRoaXMuX3kwPXRoaXMuX3kxPXRoaXMuX3QwPU5hTix0aGlzLl9wb2ludD0wfSxsaW5lRW5kOmZ1bmN0aW9uKCl7c3dpdGNoKHRoaXMuX3BvaW50KXtjYXNlIDI6dGhpcy5fY29udGV4dC5saW5lVG8odGhpcy5feDEsdGhpcy5feTEpO2JyZWFrO2Nhc2UgMzpGOCh0aGlzLHRoaXMuX3QwLEg4KHRoaXMsdGhpcy5fdDApKX0odGhpcy5fbGluZXx8MCE9PXRoaXMuX2xpbmUmJjE9PT10aGlzLl9wb2ludCkmJnRoaXMuX2NvbnRleHQuY2xvc2VQYXRoKCksdGhpcy5fbGluZT0xLXRoaXMuX2xpbmV9LHBvaW50OmZ1bmN0aW9uKHQsZSl7dmFyIG49TmFOO2lmKGU9K2UsKHQ9K3QpIT09dGhpcy5feDF8fGUhPT10aGlzLl95MSl7c3dpdGNoKHRoaXMuX3BvaW50KXtjYXNlIDA6dGhpcy5fcG9pbnQ9MSx0aGlzLl9saW5lP3RoaXMuX2NvbnRleHQubGluZVRvKHQsZSk6dGhpcy5fY29udGV4dC5tb3ZlVG8odCxlKTticmVhaztjYXNlIDE6dGhpcy5fcG9pbnQ9MjticmVhaztjYXNlIDI6dGhpcy5fcG9pbnQ9MyxGOCh0aGlzLEg4KHRoaXMsbj1COCh0aGlzLHQsZSkpLG4pO2JyZWFrO2RlZmF1bHQ6RjgodGhpcyx0aGlzLl90MCxuPUI4KHRoaXMsdCxlKSl9dGhpcy5feDA9dGhpcy5feDEsdGhpcy5feDE9dCx0aGlzLl95MD10aGlzLl95MSx0aGlzLl95MT1lLHRoaXMuX3QwPW59fX0sKGo4LnByb3RvdHlwZT1PYmplY3QuY3JlYXRlKFY4LnByb3RvdHlwZSkpLnBvaW50PWZ1bmN0aW9uKHQsZSl7VjgucHJvdG90eXBlLnBvaW50LmNhbGwodGhpcyxlLHQpfSxVOC5wcm90b3R5cGU9e21vdmVUbzpmdW5jdGlvbih0LGUpe3RoaXMuX2NvbnRleHQubW92ZVRvKGUsdCl9LGNsb3NlUGF0aDpmdW5jdGlvbigpe3RoaXMuX2NvbnRleHQuY2xvc2VQYXRoKCl9LGxpbmVUbzpmdW5jdGlvbih0LGUpe3RoaXMuX2NvbnRleHQubGluZVRvKGUsdCl9LGJlemllckN1cnZlVG86ZnVuY3Rpb24odCxlLG4saSxyLG8pe3RoaXMuX2NvbnRleHQuYmV6aWVyQ3VydmVUbyhlLHQsaSxuLG8scil9fSxHOC5wcm90b3R5cGU9e2FyZWFTdGFydDpmdW5jdGlvbigpe3RoaXMuX2xpbmU9MH0sYXJlYUVuZDpmdW5jdGlvbigpe3RoaXMuX2xpbmU9TmFOfSxsaW5lU3RhcnQ6ZnVuY3Rpb24oKXt0aGlzLl94PVtdLHRoaXMuX3k9W119LGxpbmVFbmQ6ZnVuY3Rpb24oKXt2YXIgdD10aGlzLl94LGU9dGhpcy5feSxuPXQubGVuZ3RoO2lmKG4paWYodGhpcy5fbGluZT90aGlzLl9jb250ZXh0LmxpbmVUbyh0WzBdLGVbMF0pOnRoaXMuX2NvbnRleHQubW92ZVRvKHRbMF0sZVswXSksMj09PW4pdGhpcy5fY29udGV4dC5saW5lVG8odFsxXSxlWzFdKTtlbHNlIGZvcih2YXIgaT1XOCh0KSxyPVc4KGUpLG89MCxhPTE7YTxuOysrbywrK2EpdGhpcy5fY29udGV4dC5iZXppZXJDdXJ2ZVRvKGlbMF1bb10sclswXVtvXSxpWzFdW29dLHJbMV1bb10sdFthXSxlW2FdKTsodGhpcy5fbGluZXx8MCE9PXRoaXMuX2xpbmUmJjE9PT1uKSYmdGhpcy5fY29udGV4dC5jbG9zZVBhdGgoKSx0aGlzLl9saW5lPTEtdGhpcy5fbGluZSx0aGlzLl94PXRoaXMuX3k9bnVsbH0scG9pbnQ6ZnVuY3Rpb24odCxlKXt0aGlzLl94LnB1c2goK3QpLHRoaXMuX3kucHVzaCgrZSl9fSxxOC5wcm90b3R5cGU9e2FyZWFTdGFydDpmdW5jdGlvbigpe3RoaXMuX2xpbmU9MH0sYXJlYUVuZDpmdW5jdGlvbigpe3RoaXMuX2xpbmU9TmFOfSxsaW5lU3RhcnQ6ZnVuY3Rpb24oKXt0aGlzLl94PXRoaXMuX3k9TmFOLHRoaXMuX3BvaW50PTB9LGxpbmVFbmQ6ZnVuY3Rpb24oKXswPHRoaXMuX3QmJnRoaXMuX3Q8MSYmMj09PXRoaXMuX3BvaW50JiZ0aGlzLl9jb250ZXh0LmxpbmVUbyh0aGlzLl94LHRoaXMuX3kpLCh0aGlzLl9saW5lfHwwIT09dGhpcy5fbGluZSYmMT09PXRoaXMuX3BvaW50KSYmdGhpcy5fY29udGV4dC5jbG9zZVBhdGgoKSx0aGlzLl9saW5lPj0wJiYodGhpcy5fdD0xLXRoaXMuX3QsdGhpcy5fbGluZT0xLXRoaXMuX2xpbmUpfSxwb2ludDpmdW5jdGlvbih0LGUpe3N3aXRjaCh0PSt0LGU9K2UsdGhpcy5fcG9pbnQpe2Nhc2UgMDp0aGlzLl9wb2ludD0xLHRoaXMuX2xpbmU/dGhpcy5fY29udGV4dC5saW5lVG8odCxlKTp0aGlzLl9jb250ZXh0Lm1vdmVUbyh0LGUpO2JyZWFrO2Nhc2UgMTp0aGlzLl9wb2ludD0yO2RlZmF1bHQ6aWYodGhpcy5fdDw9MCl0aGlzLl9jb250ZXh0LmxpbmVUbyh0aGlzLl94LGUpLHRoaXMuX2NvbnRleHQubGluZVRvKHQsZSk7ZWxzZXt2YXIgbj10aGlzLl94KigxLXRoaXMuX3QpK3QqdGhpcy5fdDt0aGlzLl9jb250ZXh0LmxpbmVUbyhuLHRoaXMuX3kpLHRoaXMuX2NvbnRleHQubGluZVRvKG4sZSl9fXRoaXMuX3g9dCx0aGlzLl95PWV9fTt2YXIgSjg9bmV3IERhdGUsUTg9bmV3IERhdGU7ZnVuY3Rpb24gdDcodCxlLG4saSl7ZnVuY3Rpb24gcihlKXtyZXR1cm4gdChlPW5ldyBEYXRlKCtlKSksZX1yZXR1cm4gci5mbG9vcj1yLHIuY2VpbD1mdW5jdGlvbihuKXtyZXR1cm4gdChuPW5ldyBEYXRlKG4tMSkpLGUobiwxKSx0KG4pLG59LHIucm91bmQ9ZnVuY3Rpb24odCl7dmFyIGU9cih0KSxuPXIuY2VpbCh0KTtyZXR1cm4gdC1lPG4tdD9lOm59LHIub2Zmc2V0PWZ1bmN0aW9uKHQsbil7cmV0dXJuIGUodD1uZXcgRGF0ZSgrdCksbnVsbD09bj8xOk1hdGguZmxvb3IobikpLHR9LHIucmFuZ2U9ZnVuY3Rpb24obixpLG8pe3ZhciBhLHM9W107aWYobj1yLmNlaWwobiksbz1udWxsPT1vPzE6TWF0aC5mbG9vcihvKSwhKG48aSYmbz4wKSlyZXR1cm4gcztkb3tzLnB1c2goYT1uZXcgRGF0ZSgrbikpLGUobixvKSx0KG4pfXdoaWxlKGE8biYmbjxpKTtyZXR1cm4gc30sci5maWx0ZXI9ZnVuY3Rpb24obil7cmV0dXJuIHQ3KChmdW5jdGlvbihlKXtpZihlPj1lKWZvcig7dChlKSwhbihlKTspZS5zZXRUaW1lKGUtMSl9KSwoZnVuY3Rpb24odCxpKXtpZih0Pj10KWlmKGk8MClmb3IoOysraTw9MDspZm9yKDtlKHQsLTEpLCFuKHQpOyk7ZWxzZSBmb3IoOy0taT49MDspZm9yKDtlKHQsMSksIW4odCk7KTt9KSl9LG4mJihyLmNvdW50PWZ1bmN0aW9uKGUsaSl7cmV0dXJuIEo4LnNldFRpbWUoK2UpLFE4LnNldFRpbWUoK2kpLHQoSjgpLHQoUTgpLE1hdGguZmxvb3IobihKOCxROCkpfSxyLmV2ZXJ5PWZ1bmN0aW9uKHQpe3JldHVybiB0PU1hdGguZmxvb3IodCksaXNGaW5pdGUodCkmJnQ+MD90PjE/ci5maWx0ZXIoaT9mdW5jdGlvbihlKXtyZXR1cm4gaShlKSV0PT0wfTpmdW5jdGlvbihlKXtyZXR1cm4gci5jb3VudCgwLGUpJXQ9PTB9KTpyOm51bGx9KSxyfXZhciBlNz10NygoZnVuY3Rpb24oKXt9KSwoZnVuY3Rpb24odCxlKXt0LnNldFRpbWUoK3QrZSl9KSwoZnVuY3Rpb24odCxlKXtyZXR1cm4gZS10fSkpO2U3LmV2ZXJ5PWZ1bmN0aW9uKHQpe3JldHVybiB0PU1hdGguZmxvb3IodCksaXNGaW5pdGUodCkmJnQ+MD90PjE/dDcoKGZ1bmN0aW9uKGUpe2Uuc2V0VGltZShNYXRoLmZsb29yKGUvdCkqdCl9KSwoZnVuY3Rpb24oZSxuKXtlLnNldFRpbWUoK2Urbip0KX0pLChmdW5jdGlvbihlLG4pe3JldHVybihuLWUpL3R9KSk6ZTc6bnVsbH07dmFyIG43PWU3LnJhbmdlLGk3PTFlMyxyNz02ZTQsbzc9MzZlNSxhNz04NjRlNSxzNz02MDQ4ZTUsbDc9dDcoKGZ1bmN0aW9uKHQpe3Quc2V0VGltZShNYXRoLmZsb29yKHQvaTcpKmk3KX0pLChmdW5jdGlvbih0LGUpe3Quc2V0VGltZSgrdCtlKmk3KX0pLChmdW5jdGlvbih0LGUpe3JldHVybihlLXQpL2k3fSksKGZ1bmN0aW9uKHQpe3JldHVybiB0LmdldFVUQ1NlY29uZHMoKX0pKSxjNz1sNy5yYW5nZSx1Nz10NygoZnVuY3Rpb24odCl7dC5zZXRUaW1lKE1hdGguZmxvb3IodC9yNykqcjcpfSksKGZ1bmN0aW9uKHQsZSl7dC5zZXRUaW1lKCt0K2UqcjcpfSksKGZ1bmN0aW9uKHQsZSl7cmV0dXJuKGUtdCkvcjd9KSwoZnVuY3Rpb24odCl7cmV0dXJuIHQuZ2V0TWludXRlcygpfSkpLGg3PXU3LnJhbmdlLGQ3PXQ3KChmdW5jdGlvbih0KXt2YXIgZT10LmdldFRpbWV6b25lT2Zmc2V0KCkqcjclbzc7ZTwwJiYoZSs9bzcpLHQuc2V0VGltZShNYXRoLmZsb29yKCgrdC1lKS9vNykqbzcrZSl9KSwoZnVuY3Rpb24odCxlKXt0LnNldFRpbWUoK3QrZSpvNyl9KSwoZnVuY3Rpb24odCxlKXtyZXR1cm4oZS10KS9vN30pLChmdW5jdGlvbih0KXtyZXR1cm4gdC5nZXRIb3VycygpfSkpLHA3PWQ3LnJhbmdlLGY3PXQ3KChmdW5jdGlvbih0KXt0LnNldEhvdXJzKDAsMCwwLDApfSksKGZ1bmN0aW9uKHQsZSl7dC5zZXREYXRlKHQuZ2V0RGF0ZSgpK2UpfSksKGZ1bmN0aW9uKHQsZSl7cmV0dXJuKGUtdC0oZS5nZXRUaW1lem9uZU9mZnNldCgpLXQuZ2V0VGltZXpvbmVPZmZzZXQoKSkqcjcpL2E3fSksKGZ1bmN0aW9uKHQpe3JldHVybiB0LmdldERhdGUoKS0xfSkpLG03PWY3LnJhbmdlO2Z1bmN0aW9uIGc3KHQpe3JldHVybiB0NygoZnVuY3Rpb24oZSl7ZS5zZXREYXRlKGUuZ2V0RGF0ZSgpLShlLmdldERheSgpKzctdCklNyksZS5zZXRIb3VycygwLDAsMCwwKX0pLChmdW5jdGlvbih0LGUpe3Quc2V0RGF0ZSh0LmdldERhdGUoKSs3KmUpfSksKGZ1bmN0aW9uKHQsZSl7cmV0dXJuKGUtdC0oZS5nZXRUaW1lem9uZU9mZnNldCgpLXQuZ2V0VGltZXpvbmVPZmZzZXQoKSkqcjcpL3M3fSkpfXZhciBfNz1nNygwKSx5Nz1nNygxKSx2Nz1nNygyKSxiNz1nNygzKSx4Nz1nNyg0KSx3Nz1nNyg1KSxTNz1nNyg2KSxNNz1fNy5yYW5nZSxFNz15Ny5yYW5nZSxUNz12Ny5yYW5nZSxBNz1iNy5yYW5nZSxDNz14Ny5yYW5nZSxrNz13Ny5yYW5nZSxMNz1TNy5yYW5nZSxQNz10NygoZnVuY3Rpb24odCl7dC5zZXREYXRlKDEpLHQuc2V0SG91cnMoMCwwLDAsMCl9KSwoZnVuY3Rpb24odCxlKXt0LnNldE1vbnRoKHQuZ2V0TW9udGgoKStlKX0pLChmdW5jdGlvbih0LGUpe3JldHVybiBlLmdldE1vbnRoKCktdC5nZXRNb250aCgpKzEyKihlLmdldEZ1bGxZZWFyKCktdC5nZXRGdWxsWWVhcigpKX0pLChmdW5jdGlvbih0KXtyZXR1cm4gdC5nZXRNb250aCgpfSkpLEk3PVA3LnJhbmdlLE43PXQ3KChmdW5jdGlvbih0KXt0LnNldE1vbnRoKDAsMSksdC5zZXRIb3VycygwLDAsMCwwKX0pLChmdW5jdGlvbih0LGUpe3Quc2V0RnVsbFllYXIodC5nZXRGdWxsWWVhcigpK2UpfSksKGZ1bmN0aW9uKHQsZSl7cmV0dXJuIGUuZ2V0RnVsbFllYXIoKS10LmdldEZ1bGxZZWFyKCl9KSwoZnVuY3Rpb24odCl7cmV0dXJuIHQuZ2V0RnVsbFllYXIoKX0pKTtONy5ldmVyeT1mdW5jdGlvbih0KXtyZXR1cm4gaXNGaW5pdGUodD1NYXRoLmZsb29yKHQpKSYmdD4wP3Q3KChmdW5jdGlvbihlKXtlLnNldEZ1bGxZZWFyKE1hdGguZmxvb3IoZS5nZXRGdWxsWWVhcigpL3QpKnQpLGUuc2V0TW9udGgoMCwxKSxlLnNldEhvdXJzKDAsMCwwLDApfSksKGZ1bmN0aW9uKGUsbil7ZS5zZXRGdWxsWWVhcihlLmdldEZ1bGxZZWFyKCkrbip0KX0pKTpudWxsfTt2YXIgTzc9TjcucmFuZ2UsUjc9dDcoKGZ1bmN0aW9uKHQpe3Quc2V0VVRDU2Vjb25kcygwLDApfSksKGZ1bmN0aW9uKHQsZSl7dC5zZXRUaW1lKCt0K2UqcjcpfSksKGZ1bmN0aW9uKHQsZSl7cmV0dXJuKGUtdCkvcjd9KSwoZnVuY3Rpb24odCl7cmV0dXJuIHQuZ2V0VVRDTWludXRlcygpfSkpLHo3PVI3LnJhbmdlLEQ3PXQ3KChmdW5jdGlvbih0KXt0LnNldFVUQ01pbnV0ZXMoMCwwLDApfSksKGZ1bmN0aW9uKHQsZSl7dC5zZXRUaW1lKCt0K2UqbzcpfSksKGZ1bmN0aW9uKHQsZSl7cmV0dXJuKGUtdCkvbzd9KSwoZnVuY3Rpb24odCl7cmV0dXJuIHQuZ2V0VVRDSG91cnMoKX0pKSxCNz1ENy5yYW5nZSxINz10NygoZnVuY3Rpb24odCl7dC5zZXRVVENIb3VycygwLDAsMCwwKX0pLChmdW5jdGlvbih0LGUpe3Quc2V0VVRDRGF0ZSh0LmdldFVUQ0RhdGUoKStlKX0pLChmdW5jdGlvbih0LGUpe3JldHVybihlLXQpL2E3fSksKGZ1bmN0aW9uKHQpe3JldHVybiB0LmdldFVUQ0RhdGUoKS0xfSkpLEY3PUg3LnJhbmdlO2Z1bmN0aW9uIFY3KHQpe3JldHVybiB0NygoZnVuY3Rpb24oZSl7ZS5zZXRVVENEYXRlKGUuZ2V0VVRDRGF0ZSgpLShlLmdldFVUQ0RheSgpKzctdCklNyksZS5zZXRVVENIb3VycygwLDAsMCwwKX0pLChmdW5jdGlvbih0LGUpe3Quc2V0VVRDRGF0ZSh0LmdldFVUQ0RhdGUoKSs3KmUpfSksKGZ1bmN0aW9uKHQsZSl7cmV0dXJuKGUtdCkvczd9KSl9dmFyIGo3PVY3KDApLFU3PVY3KDEpLEc3PVY3KDIpLFc3PVY3KDMpLHE3PVY3KDQpLFk3PVY3KDUpLFg3PVY3KDYpLCQ3PWo3LnJhbmdlLEs3PVU3LnJhbmdlLFo3PUc3LnJhbmdlLEo3PVc3LnJhbmdlLFE3PXE3LnJhbmdlLHR0dD1ZNy5yYW5nZSxldHQ9WDcucmFuZ2UsbnR0PXQ3KChmdW5jdGlvbih0KXt0LnNldFVUQ0RhdGUoMSksdC5zZXRVVENIb3VycygwLDAsMCwwKX0pLChmdW5jdGlvbih0LGUpe3Quc2V0VVRDTW9udGgodC5nZXRVVENNb250aCgpK2UpfSksKGZ1bmN0aW9uKHQsZSl7cmV0dXJuIGUuZ2V0VVRDTW9udGgoKS10LmdldFVUQ01vbnRoKCkrMTIqKGUuZ2V0VVRDRnVsbFllYXIoKS10LmdldFVUQ0Z1bGxZZWFyKCkpfSksKGZ1bmN0aW9uKHQpe3JldHVybiB0LmdldFVUQ01vbnRoKCl9KSksaXR0PW50dC5yYW5nZSxydHQ9dDcoKGZ1bmN0aW9uKHQpe3Quc2V0VVRDTW9udGgoMCwxKSx0LnNldFVUQ0hvdXJzKDAsMCwwLDApfSksKGZ1bmN0aW9uKHQsZSl7dC5zZXRVVENGdWxsWWVhcih0LmdldFVUQ0Z1bGxZZWFyKCkrZSl9KSwoZnVuY3Rpb24odCxlKXtyZXR1cm4gZS5nZXRVVENGdWxsWWVhcigpLXQuZ2V0VVRDRnVsbFllYXIoKX0pLChmdW5jdGlvbih0KXtyZXR1cm4gdC5nZXRVVENGdWxsWWVhcigpfSkpO3J0dC5ldmVyeT1mdW5jdGlvbih0KXtyZXR1cm4gaXNGaW5pdGUodD1NYXRoLmZsb29yKHQpKSYmdD4wP3Q3KChmdW5jdGlvbihlKXtlLnNldFVUQ0Z1bGxZZWFyKE1hdGguZmxvb3IoZS5nZXRVVENGdWxsWWVhcigpL3QpKnQpLGUuc2V0VVRDTW9udGgoMCwxKSxlLnNldFVUQ0hvdXJzKDAsMCwwLDApfSksKGZ1bmN0aW9uKGUsbil7ZS5zZXRVVENGdWxsWWVhcihlLmdldFVUQ0Z1bGxZZWFyKCkrbip0KX0pKTpudWxsfTt2YXIgb3R0PXJ0dC5yYW5nZSxhdHQ9bmV3IERhdGUsc3R0PW5ldyBEYXRlO2Z1bmN0aW9uIGx0dCh0LGUsbixpKXtmdW5jdGlvbiByKGUpe3JldHVybiB0KGU9MD09PWFyZ3VtZW50cy5sZW5ndGg/bmV3IERhdGU6bmV3IERhdGUoK2UpKSxlfXJldHVybiByLmZsb29yPWZ1bmN0aW9uKGUpe3JldHVybiB0KGU9bmV3IERhdGUoK2UpKSxlfSxyLmNlaWw9ZnVuY3Rpb24obil7cmV0dXJuIHQobj1uZXcgRGF0ZShuLTEpKSxlKG4sMSksdChuKSxufSxyLnJvdW5kPWZ1bmN0aW9uKHQpe3ZhciBlPXIodCksbj1yLmNlaWwodCk7cmV0dXJuIHQtZTxuLXQ/ZTpufSxyLm9mZnNldD1mdW5jdGlvbih0LG4pe3JldHVybiBlKHQ9bmV3IERhdGUoK3QpLG51bGw9PW4/MTpNYXRoLmZsb29yKG4pKSx0fSxyLnJhbmdlPWZ1bmN0aW9uKG4saSxvKXt2YXIgYSxzPVtdO2lmKG49ci5jZWlsKG4pLG89bnVsbD09bz8xOk1hdGguZmxvb3IobyksIShuPGkmJm8+MCkpcmV0dXJuIHM7ZG97cy5wdXNoKGE9bmV3IERhdGUoK24pKSxlKG4sbyksdChuKX13aGlsZShhPG4mJm48aSk7cmV0dXJuIHN9LHIuZmlsdGVyPWZ1bmN0aW9uKG4pe3JldHVybiBsdHQoKGZ1bmN0aW9uKGUpe2lmKGU+PWUpZm9yKDt0KGUpLCFuKGUpOyllLnNldFRpbWUoZS0xKX0pLChmdW5jdGlvbih0LGkpe2lmKHQ+PXQpaWYoaTwwKWZvcig7KytpPD0wOylmb3IoO2UodCwtMSksIW4odCk7KTtlbHNlIGZvcig7LS1pPj0wOylmb3IoO2UodCwxKSwhbih0KTspO30pKX0sbiYmKHIuY291bnQ9ZnVuY3Rpb24oZSxpKXtyZXR1cm4gYXR0LnNldFRpbWUoK2UpLHN0dC5zZXRUaW1lKCtpKSx0KGF0dCksdChzdHQpLE1hdGguZmxvb3IobihhdHQsc3R0KSl9LHIuZXZlcnk9ZnVuY3Rpb24odCl7cmV0dXJuIHQ9TWF0aC5mbG9vcih0KSxpc0Zpbml0ZSh0KSYmdD4wP3Q+MT9yLmZpbHRlcihpP2Z1bmN0aW9uKGUpe3JldHVybiBpKGUpJXQ9PTB9OmZ1bmN0aW9uKGUpe3JldHVybiByLmNvdW50KDAsZSkldD09MH0pOnI6bnVsbH0pLHJ9dmFyIGN0dD04NjRlNSx1dHQ9NjA0OGU1LGh0dD1sdHQoKGZ1bmN0aW9uKHQpe3Quc2V0SG91cnMoMCwwLDAsMCl9KSwoZnVuY3Rpb24odCxlKXt0LnNldERhdGUodC5nZXREYXRlKCkrZSl9KSwoZnVuY3Rpb24odCxlKXtyZXR1cm4oZS10LTZlNCooZS5nZXRUaW1lem9uZU9mZnNldCgpLXQuZ2V0VGltZXpvbmVPZmZzZXQoKSkpL2N0dH0pLChmdW5jdGlvbih0KXtyZXR1cm4gdC5nZXREYXRlKCktMX0pKTtmdW5jdGlvbiBkdHQodCl7cmV0dXJuIGx0dCgoZnVuY3Rpb24oZSl7ZS5zZXREYXRlKGUuZ2V0RGF0ZSgpLShlLmdldERheSgpKzctdCklNyksZS5zZXRIb3VycygwLDAsMCwwKX0pLChmdW5jdGlvbih0LGUpe3Quc2V0RGF0ZSh0LmdldERhdGUoKSs3KmUpfSksKGZ1bmN0aW9uKHQsZSl7cmV0dXJuKGUtdC02ZTQqKGUuZ2V0VGltZXpvbmVPZmZzZXQoKS10LmdldFRpbWV6b25lT2Zmc2V0KCkpKS91dHR9KSl9dmFyIHB0dD1kdHQoMCksZnR0PWR0dCgxKTtkdHQoMiksZHR0KDMpO3ZhciBtdHQ9ZHR0KDQpO2R0dCg1KSxkdHQoNik7dmFyIGd0dD1sdHQoKGZ1bmN0aW9uKHQpe3Quc2V0TW9udGgoMCwxKSx0LnNldEhvdXJzKDAsMCwwLDApfSksKGZ1bmN0aW9uKHQsZSl7dC5zZXRGdWxsWWVhcih0LmdldEZ1bGxZZWFyKCkrZSl9KSwoZnVuY3Rpb24odCxlKXtyZXR1cm4gZS5nZXRGdWxsWWVhcigpLXQuZ2V0RnVsbFllYXIoKX0pLChmdW5jdGlvbih0KXtyZXR1cm4gdC5nZXRGdWxsWWVhcigpfSkpO2d0dC5ldmVyeT1mdW5jdGlvbih0KXtyZXR1cm4gaXNGaW5pdGUodD1NYXRoLmZsb29yKHQpKSYmdD4wP2x0dCgoZnVuY3Rpb24oZSl7ZS5zZXRGdWxsWWVhcihNYXRoLmZsb29yKGUuZ2V0RnVsbFllYXIoKS90KSp0KSxlLnNldE1vbnRoKDAsMSksZS5zZXRIb3VycygwLDAsMCwwKX0pLChmdW5jdGlvbihlLG4pe2Uuc2V0RnVsbFllYXIoZS5nZXRGdWxsWWVhcigpK24qdCl9KSk6bnVsbH07dmFyIF90dD1sdHQoKGZ1bmN0aW9uKHQpe3Quc2V0VVRDSG91cnMoMCwwLDAsMCl9KSwoZnVuY3Rpb24odCxlKXt0LnNldFVUQ0RhdGUodC5nZXRVVENEYXRlKCkrZSl9KSwoZnVuY3Rpb24odCxlKXtyZXR1cm4oZS10KS9jdHR9KSwoZnVuY3Rpb24odCl7cmV0dXJuIHQuZ2V0VVRDRGF0ZSgpLTF9KSk7ZnVuY3Rpb24geXR0KHQpe3JldHVybiBsdHQoKGZ1bmN0aW9uKGUpe2Uuc2V0VVRDRGF0ZShlLmdldFVUQ0RhdGUoKS0oZS5nZXRVVENEYXkoKSs3LXQpJTcpLGUuc2V0VVRDSG91cnMoMCwwLDAsMCl9KSwoZnVuY3Rpb24odCxlKXt0LnNldFVUQ0RhdGUodC5nZXRVVENEYXRlKCkrNyplKX0pLChmdW5jdGlvbih0LGUpe3JldHVybihlLXQpL3V0dH0pKX12YXIgdnR0PXl0dCgwKSxidHQ9eXR0KDEpO3l0dCgyKSx5dHQoMyk7dmFyIHh0dD15dHQoNCk7eXR0KDUpLHl0dCg2KTt2YXIgd3R0PWx0dCgoZnVuY3Rpb24odCl7dC5zZXRVVENNb250aCgwLDEpLHQuc2V0VVRDSG91cnMoMCwwLDAsMCl9KSwoZnVuY3Rpb24odCxlKXt0LnNldFVUQ0Z1bGxZZWFyKHQuZ2V0VVRDRnVsbFllYXIoKStlKX0pLChmdW5jdGlvbih0LGUpe3JldHVybiBlLmdldFVUQ0Z1bGxZZWFyKCktdC5nZXRVVENGdWxsWWVhcigpfSksKGZ1bmN0aW9uKHQpe3JldHVybiB0LmdldFVUQ0Z1bGxZZWFyKCl9KSk7ZnVuY3Rpb24gU3R0KHQpe2lmKDA8PXQueSYmdC55PDEwMCl7dmFyIGU9bmV3IERhdGUoLTEsdC5tLHQuZCx0LkgsdC5NLHQuUyx0LkwpO3JldHVybiBlLnNldEZ1bGxZZWFyKHQueSksZX1yZXR1cm4gbmV3IERhdGUodC55LHQubSx0LmQsdC5ILHQuTSx0LlMsdC5MKX1mdW5jdGlvbiBNdHQodCl7aWYoMDw9dC55JiZ0Lnk8MTAwKXt2YXIgZT1uZXcgRGF0ZShEYXRlLlVUQygtMSx0Lm0sdC5kLHQuSCx0Lk0sdC5TLHQuTCkpO3JldHVybiBlLnNldFVUQ0Z1bGxZZWFyKHQueSksZX1yZXR1cm4gbmV3IERhdGUoRGF0ZS5VVEModC55LHQubSx0LmQsdC5ILHQuTSx0LlMsdC5MKSl9ZnVuY3Rpb24gRXR0KHQpe3JldHVybnt5OnQsbTowLGQ6MSxIOjAsTTowLFM6MCxMOjB9fWZ1bmN0aW9uIFR0dCh0KXt2YXIgZT10LmRhdGVUaW1lLG49dC5kYXRlLGk9dC50aW1lLHI9dC5wZXJpb2RzLG89dC5kYXlzLGE9dC5zaG9ydERheXMscz10Lm1vbnRocyxsPXQuc2hvcnRNb250aHMsYz1CdHQociksdT1IdHQociksaD1CdHQobyksZD1IdHQobykscD1CdHQoYSksZj1IdHQoYSksbT1CdHQocyksZz1IdHQocyksXz1CdHQobCkseT1IdHQobCksdj17YTpmdW5jdGlvbiBiKHQpe3JldHVybiBhW3QuZ2V0RGF5KCldfSxBOmZ1bmN0aW9uIHgodCl7cmV0dXJuIG9bdC5nZXREYXkoKV19LGI6ZnVuY3Rpb24gdyh0KXtyZXR1cm4gbFt0LmdldE1vbnRoKCldfSxCOmZ1bmN0aW9uIFModCl7cmV0dXJuIHNbdC5nZXRNb250aCgpXX0sYzpudWxsLGQ6b2V0LGU6b2V0LGY6aGV0LEg6YWV0LEk6c2V0LGo6Y2V0LEw6dWV0LG06ZGV0LE06cGV0LHA6ZnVuY3Rpb24gTSh0KXtyZXR1cm4gclsrKHQuZ2V0SG91cnMoKT49MTIpXX0sUTpqZXQsczpVZXQsUzpmZXQsdTptZXQsVTpnZXQsVjpfZXQsdzp5ZXQsVzp2ZXQseDpudWxsLFg6bnVsbCx5OmJldCxZOnhldCxaOndldCwiJSI6VmV0fSxFPXthOmZ1bmN0aW9uIFQodCl7cmV0dXJuIGFbdC5nZXRVVENEYXkoKV19LEE6ZnVuY3Rpb24gQSh0KXtyZXR1cm4gb1t0LmdldFVUQ0RheSgpXX0sYjpmdW5jdGlvbiBDKHQpe3JldHVybiBsW3QuZ2V0VVRDTW9udGgoKV19LEI6ZnVuY3Rpb24gayh0KXtyZXR1cm4gc1t0LmdldFVUQ01vbnRoKCldfSxjOm51bGwsZDpNZXQsZTpNZXQsZjprZXQsSDpFZXQsSTpUZXQsajpBZXQsTDpDZXQsbTpMZXQsTTpQZXQscDpmdW5jdGlvbiBMKHQpe3JldHVybiByWysodC5nZXRVVENIb3VycygpPj0xMildfSxROmpldCxzOlVldCxTOklldCx1Ok5ldCxVOk9ldCxWOlJldCx3OnpldCxXOkRldCx4Om51bGwsWDpudWxsLHk6QmV0LFk6SGV0LFo6RmV0LCIlIjpWZXR9LFA9e2E6ZnVuY3Rpb24gSSh0LGUsbil7dmFyIGk9cC5leGVjKGUuc2xpY2UobikpO3JldHVybiBpPyh0Lnc9ZltpWzBdLnRvTG93ZXJDYXNlKCldLG4raVswXS5sZW5ndGgpOi0xfSxBOmZ1bmN0aW9uIE4odCxlLG4pe3ZhciBpPWguZXhlYyhlLnNsaWNlKG4pKTtyZXR1cm4gaT8odC53PWRbaVswXS50b0xvd2VyQ2FzZSgpXSxuK2lbMF0ubGVuZ3RoKTotMX0sYjpmdW5jdGlvbiBPKHQsZSxuKXt2YXIgaT1fLmV4ZWMoZS5zbGljZShuKSk7cmV0dXJuIGk/KHQubT15W2lbMF0udG9Mb3dlckNhc2UoKV0sbitpWzBdLmxlbmd0aCk6LTF9LEI6ZnVuY3Rpb24gUih0LGUsbil7dmFyIGk9bS5leGVjKGUuc2xpY2UobikpO3JldHVybiBpPyh0Lm09Z1tpWzBdLnRvTG93ZXJDYXNlKCldLG4raVswXS5sZW5ndGgpOi0xfSxjOmZ1bmN0aW9uIHoodCxuLGkpe3JldHVybiBqKHQsZSxuLGkpfSxkOiR0dCxlOiR0dCxmOmVldCxIOlp0dCxJOlp0dCxqOkt0dCxMOnRldCxtOlh0dCxNOkp0dCxwOmZ1bmN0aW9uIEQodCxlLG4pe3ZhciBpPWMuZXhlYyhlLnNsaWNlKG4pKTtyZXR1cm4gaT8odC5wPXVbaVswXS50b0xvd2VyQ2FzZSgpXSxuK2lbMF0ubGVuZ3RoKTotMX0sUTppZXQsczpyZXQsUzpRdHQsdTpWdHQsVTpqdHQsVjpVdHQsdzpGdHQsVzpHdHQseDpmdW5jdGlvbiBCKHQsZSxpKXtyZXR1cm4gaih0LG4sZSxpKX0sWDpmdW5jdGlvbiBIKHQsZSxuKXtyZXR1cm4gaih0LGksZSxuKX0seTpxdHQsWTpXdHQsWjpZdHQsIiUiOm5ldH07ZnVuY3Rpb24gRih0LGUpe3JldHVybiBmdW5jdGlvbihuKXt2YXIgaSxyLG8sYT1bXSxzPS0xLGw9MCxjPXQubGVuZ3RoO2ZvcihuIGluc3RhbmNlb2YgRGF0ZXx8KG49bmV3IERhdGUoK24pKTsrK3M8YzspMzc9PT10LmNoYXJDb2RlQXQocykmJihhLnB1c2godC5zbGljZShsLHMpKSxudWxsIT0ocj1JdHRbaT10LmNoYXJBdCgrK3MpXSk/aT10LmNoYXJBdCgrK3MpOnI9ImUiPT09aT8iICI6IjAiLChvPWVbaV0pJiYoaT1vKG4scikpLGEucHVzaChpKSxsPXMrMSk7cmV0dXJuIGEucHVzaCh0LnNsaWNlKGwscykpLGEuam9pbigiIil9fWZ1bmN0aW9uIFYodCxlKXtyZXR1cm4gZnVuY3Rpb24obil7dmFyIGkscixvPUV0dCgxOTAwKTtpZihqKG8sdCxuKz0iIiwwKSE9bi5sZW5ndGgpcmV0dXJuIG51bGw7aWYoIlEiaW4gbylyZXR1cm4gbmV3IERhdGUoby5RKTtpZigicCJpbiBvJiYoby5IPW8uSCUxMisxMipvLnApLCJWImluIG8pe2lmKG8uVjwxfHxvLlY+NTMpcmV0dXJuIG51bGw7InciaW4gb3x8KG8udz0xKSwiWiJpbiBvPyhyPShpPU10dChFdHQoby55KSkpLmdldFVUQ0RheSgpLGk9cj40fHwwPT09cj9idHQuY2VpbChpKTpidHQoaSksaT1fdHQub2Zmc2V0KGksNyooby5WLTEpKSxvLnk9aS5nZXRVVENGdWxsWWVhcigpLG8ubT1pLmdldFVUQ01vbnRoKCksby5kPWkuZ2V0VVRDRGF0ZSgpKyhvLncrNiklNyk6KHI9KGk9ZShFdHQoby55KSkpLmdldERheSgpLGk9cj40fHwwPT09cj9mdHQuY2VpbChpKTpmdHQoaSksaT1odHQub2Zmc2V0KGksNyooby5WLTEpKSxvLnk9aS5nZXRGdWxsWWVhcigpLG8ubT1pLmdldE1vbnRoKCksby5kPWkuZ2V0RGF0ZSgpKyhvLncrNiklNyl9ZWxzZSgiVyJpbiBvfHwiVSJpbiBvKSYmKCJ3ImluIG98fChvLnc9InUiaW4gbz9vLnUlNzoiVyJpbiBvPzE6MCkscj0iWiJpbiBvP010dChFdHQoby55KSkuZ2V0VVRDRGF5KCk6ZShFdHQoby55KSkuZ2V0RGF5KCksby5tPTAsby5kPSJXImluIG8/KG8udys2KSU3Kzcqby5XLShyKzUpJTc6by53Kzcqby5VLShyKzYpJTcpO3JldHVybiJaImluIG8/KG8uSCs9by5aLzEwMHwwLG8uTSs9by5aJTEwMCxNdHQobykpOmUobyl9fWZ1bmN0aW9uIGoodCxlLG4saSl7Zm9yKHZhciByLG8sYT0wLHM9ZS5sZW5ndGgsbD1uLmxlbmd0aDthPHM7KXtpZihpPj1sKXJldHVybi0xO2lmKDM3PT09KHI9ZS5jaGFyQ29kZUF0KGErKykpKXtpZihyPWUuY2hhckF0KGErKyksIShvPVBbciBpbiBJdHQ/ZS5jaGFyQXQoYSsrKTpyXSl8fChpPW8odCxuLGkpKTwwKXJldHVybi0xfWVsc2UgaWYociE9bi5jaGFyQ29kZUF0KGkrKykpcmV0dXJuLTF9cmV0dXJuIGl9cmV0dXJuIHYueD1GKG4sdiksdi5YPUYoaSx2KSx2LmM9RihlLHYpLEUueD1GKG4sRSksRS5YPUYoaSxFKSxFLmM9RihlLEUpLHtmb3JtYXQ6ZnVuY3Rpb24odCl7dmFyIGU9Rih0Kz0iIix2KTtyZXR1cm4gZS50b1N0cmluZz1mdW5jdGlvbigpe3JldHVybiB0fSxlfSxwYXJzZTpmdW5jdGlvbih0KXt2YXIgZT1WKHQrPSIiLFN0dCk7cmV0dXJuIGUudG9TdHJpbmc9ZnVuY3Rpb24oKXtyZXR1cm4gdH0sZX0sdXRjRm9ybWF0OmZ1bmN0aW9uKHQpe3ZhciBlPUYodCs9IiIsRSk7cmV0dXJuIGUudG9TdHJpbmc9ZnVuY3Rpb24oKXtyZXR1cm4gdH0sZX0sdXRjUGFyc2U6ZnVuY3Rpb24odCl7dmFyIGU9Vih0LE10dCk7cmV0dXJuIGUudG9TdHJpbmc9ZnVuY3Rpb24oKXtyZXR1cm4gdH0sZX19fXd0dC5ldmVyeT1mdW5jdGlvbih0KXtyZXR1cm4gaXNGaW5pdGUodD1NYXRoLmZsb29yKHQpKSYmdD4wP2x0dCgoZnVuY3Rpb24oZSl7ZS5zZXRVVENGdWxsWWVhcihNYXRoLmZsb29yKGUuZ2V0VVRDRnVsbFllYXIoKS90KSp0KSxlLnNldFVUQ01vbnRoKDAsMSksZS5zZXRVVENIb3VycygwLDAsMCwwKX0pLChmdW5jdGlvbihlLG4pe2Uuc2V0VVRDRnVsbFllYXIoZS5nZXRVVENGdWxsWWVhcigpK24qdCl9KSk6bnVsbH07dmFyIEF0dCxDdHQsa3R0LEx0dCxQdHQsSXR0PXsiLSI6IiIsXzoiICIsMDoiMCJ9LE50dD0vXlxzKlxkKy8sT3R0PS9eJS8sUnR0PS9bXFxeJCorP3xbXF0oKS57fV0vZztmdW5jdGlvbiB6dHQodCxlLG4pe3ZhciBpPXQ8MD8iLSI6IiIscj0oaT8tdDp0KSsiIixvPXIubGVuZ3RoO3JldHVybiBpKyhvPG4/bmV3IEFycmF5KG4tbysxKS5qb2luKGUpK3I6cil9ZnVuY3Rpb24gRHR0KHQpe3JldHVybiB0LnJlcGxhY2UoUnR0LCJcXCQmIil9ZnVuY3Rpb24gQnR0KHQpe3JldHVybiBuZXcgUmVnRXhwKCJeKD86Iit0Lm1hcChEdHQpLmpvaW4oInwiKSsiKSIsImkiKX1mdW5jdGlvbiBIdHQodCl7Zm9yKHZhciBlPXt9LG49LTEsaT10Lmxlbmd0aDsrK248aTspZVt0W25dLnRvTG93ZXJDYXNlKCldPW47cmV0dXJuIGV9ZnVuY3Rpb24gRnR0KHQsZSxuKXt2YXIgaT1OdHQuZXhlYyhlLnNsaWNlKG4sbisxKSk7cmV0dXJuIGk/KHQudz0raVswXSxuK2lbMF0ubGVuZ3RoKTotMX1mdW5jdGlvbiBWdHQodCxlLG4pe3ZhciBpPU50dC5leGVjKGUuc2xpY2UobixuKzEpKTtyZXR1cm4gaT8odC51PStpWzBdLG4raVswXS5sZW5ndGgpOi0xfWZ1bmN0aW9uIGp0dCh0LGUsbil7dmFyIGk9TnR0LmV4ZWMoZS5zbGljZShuLG4rMikpO3JldHVybiBpPyh0LlU9K2lbMF0sbitpWzBdLmxlbmd0aCk6LTF9ZnVuY3Rpb24gVXR0KHQsZSxuKXt2YXIgaT1OdHQuZXhlYyhlLnNsaWNlKG4sbisyKSk7cmV0dXJuIGk/KHQuVj0raVswXSxuK2lbMF0ubGVuZ3RoKTotMX1mdW5jdGlvbiBHdHQodCxlLG4pe3ZhciBpPU50dC5leGVjKGUuc2xpY2UobixuKzIpKTtyZXR1cm4gaT8odC5XPStpWzBdLG4raVswXS5sZW5ndGgpOi0xfWZ1bmN0aW9uIFd0dCh0LGUsbil7dmFyIGk9TnR0LmV4ZWMoZS5zbGljZShuLG4rNCkpO3JldHVybiBpPyh0Lnk9K2lbMF0sbitpWzBdLmxlbmd0aCk6LTF9ZnVuY3Rpb24gcXR0KHQsZSxuKXt2YXIgaT1OdHQuZXhlYyhlLnNsaWNlKG4sbisyKSk7cmV0dXJuIGk/KHQueT0raVswXSsoK2lbMF0+Njg/MTkwMDoyZTMpLG4raVswXS5sZW5ndGgpOi0xfWZ1bmN0aW9uIFl0dCh0LGUsbil7dmFyIGk9L14oWil8KFsrLV1cZFxkKSg/Ojo/KFxkXGQpKT8vLmV4ZWMoZS5zbGljZShuLG4rNikpO3JldHVybiBpPyh0Llo9aVsxXT8wOi0oaVsyXSsoaVszXXx8IjAwIikpLG4raVswXS5sZW5ndGgpOi0xfWZ1bmN0aW9uIFh0dCh0LGUsbil7dmFyIGk9TnR0LmV4ZWMoZS5zbGljZShuLG4rMikpO3JldHVybiBpPyh0Lm09aVswXS0xLG4raVswXS5sZW5ndGgpOi0xfWZ1bmN0aW9uICR0dCh0LGUsbil7dmFyIGk9TnR0LmV4ZWMoZS5zbGljZShuLG4rMikpO3JldHVybiBpPyh0LmQ9K2lbMF0sbitpWzBdLmxlbmd0aCk6LTF9ZnVuY3Rpb24gS3R0KHQsZSxuKXt2YXIgaT1OdHQuZXhlYyhlLnNsaWNlKG4sbiszKSk7cmV0dXJuIGk/KHQubT0wLHQuZD0raVswXSxuK2lbMF0ubGVuZ3RoKTotMX1mdW5jdGlvbiBadHQodCxlLG4pe3ZhciBpPU50dC5leGVjKGUuc2xpY2UobixuKzIpKTtyZXR1cm4gaT8odC5IPStpWzBdLG4raVswXS5sZW5ndGgpOi0xfWZ1bmN0aW9uIEp0dCh0LGUsbil7dmFyIGk9TnR0LmV4ZWMoZS5zbGljZShuLG4rMikpO3JldHVybiBpPyh0Lk09K2lbMF0sbitpWzBdLmxlbmd0aCk6LTF9ZnVuY3Rpb24gUXR0KHQsZSxuKXt2YXIgaT1OdHQuZXhlYyhlLnNsaWNlKG4sbisyKSk7cmV0dXJuIGk/KHQuUz0raVswXSxuK2lbMF0ubGVuZ3RoKTotMX1mdW5jdGlvbiB0ZXQodCxlLG4pe3ZhciBpPU50dC5leGVjKGUuc2xpY2UobixuKzMpKTtyZXR1cm4gaT8odC5MPStpWzBdLG4raVswXS5sZW5ndGgpOi0xfWZ1bmN0aW9uIGVldCh0LGUsbil7dmFyIGk9TnR0LmV4ZWMoZS5zbGljZShuLG4rNikpO3JldHVybiBpPyh0Lkw9TWF0aC5mbG9vcihpWzBdLzFlMyksbitpWzBdLmxlbmd0aCk6LTF9ZnVuY3Rpb24gbmV0KHQsZSxuKXt2YXIgaT1PdHQuZXhlYyhlLnNsaWNlKG4sbisxKSk7cmV0dXJuIGk/bitpWzBdLmxlbmd0aDotMX1mdW5jdGlvbiBpZXQodCxlLG4pe3ZhciBpPU50dC5leGVjKGUuc2xpY2UobikpO3JldHVybiBpPyh0LlE9K2lbMF0sbitpWzBdLmxlbmd0aCk6LTF9ZnVuY3Rpb24gcmV0KHQsZSxuKXt2YXIgaT1OdHQuZXhlYyhlLnNsaWNlKG4pKTtyZXR1cm4gaT8odC5RPTFlMyoraVswXSxuK2lbMF0ubGVuZ3RoKTotMX1mdW5jdGlvbiBvZXQodCxlKXtyZXR1cm4genR0KHQuZ2V0RGF0ZSgpLGUsMil9ZnVuY3Rpb24gYWV0KHQsZSl7cmV0dXJuIHp0dCh0LmdldEhvdXJzKCksZSwyKX1mdW5jdGlvbiBzZXQodCxlKXtyZXR1cm4genR0KHQuZ2V0SG91cnMoKSUxMnx8MTIsZSwyKX1mdW5jdGlvbiBjZXQodCxlKXtyZXR1cm4genR0KDEraHR0LmNvdW50KGd0dCh0KSx0KSxlLDMpfWZ1bmN0aW9uIHVldCh0LGUpe3JldHVybiB6dHQodC5nZXRNaWxsaXNlY29uZHMoKSxlLDMpfWZ1bmN0aW9uIGhldCh0LGUpe3JldHVybiB1ZXQodCxlKSsiMDAwIn1mdW5jdGlvbiBkZXQodCxlKXtyZXR1cm4genR0KHQuZ2V0TW9udGgoKSsxLGUsMil9ZnVuY3Rpb24gcGV0KHQsZSl7cmV0dXJuIHp0dCh0LmdldE1pbnV0ZXMoKSxlLDIpfWZ1bmN0aW9uIGZldCh0LGUpe3JldHVybiB6dHQodC5nZXRTZWNvbmRzKCksZSwyKX1mdW5jdGlvbiBtZXQodCl7dmFyIGU9dC5nZXREYXkoKTtyZXR1cm4gMD09PWU/NzplfWZ1bmN0aW9uIGdldCh0LGUpe3JldHVybiB6dHQocHR0LmNvdW50KGd0dCh0KSx0KSxlLDIpfWZ1bmN0aW9uIF9ldCh0LGUpe3ZhciBuPXQuZ2V0RGF5KCk7cmV0dXJuIHQ9bj49NHx8MD09PW4/bXR0KHQpOm10dC5jZWlsKHQpLHp0dChtdHQuY291bnQoZ3R0KHQpLHQpKyg0PT09Z3R0KHQpLmdldERheSgpKSxlLDIpfWZ1bmN0aW9uIHlldCh0KXtyZXR1cm4gdC5nZXREYXkoKX1mdW5jdGlvbiB2ZXQodCxlKXtyZXR1cm4genR0KGZ0dC5jb3VudChndHQodCksdCksZSwyKX1mdW5jdGlvbiBiZXQodCxlKXtyZXR1cm4genR0KHQuZ2V0RnVsbFllYXIoKSUxMDAsZSwyKX1mdW5jdGlvbiB4ZXQodCxlKXtyZXR1cm4genR0KHQuZ2V0RnVsbFllYXIoKSUxZTQsZSw0KX1mdW5jdGlvbiB3ZXQodCl7dmFyIGU9dC5nZXRUaW1lem9uZU9mZnNldCgpO3JldHVybihlPjA/Ii0iOihlKj0tMSwiKyIpKSt6dHQoZS82MHwwLCIwIiwyKSt6dHQoZSU2MCwiMCIsMil9ZnVuY3Rpb24gTWV0KHQsZSl7cmV0dXJuIHp0dCh0LmdldFVUQ0RhdGUoKSxlLDIpfWZ1bmN0aW9uIEVldCh0LGUpe3JldHVybiB6dHQodC5nZXRVVENIb3VycygpLGUsMil9ZnVuY3Rpb24gVGV0KHQsZSl7cmV0dXJuIHp0dCh0LmdldFVUQ0hvdXJzKCklMTJ8fDEyLGUsMil9ZnVuY3Rpb24gQWV0KHQsZSl7cmV0dXJuIHp0dCgxK190dC5jb3VudCh3dHQodCksdCksZSwzKX1mdW5jdGlvbiBDZXQodCxlKXtyZXR1cm4genR0KHQuZ2V0VVRDTWlsbGlzZWNvbmRzKCksZSwzKX1mdW5jdGlvbiBrZXQodCxlKXtyZXR1cm4gQ2V0KHQsZSkrIjAwMCJ9ZnVuY3Rpb24gTGV0KHQsZSl7cmV0dXJuIHp0dCh0LmdldFVUQ01vbnRoKCkrMSxlLDIpfWZ1bmN0aW9uIFBldCh0LGUpe3JldHVybiB6dHQodC5nZXRVVENNaW51dGVzKCksZSwyKX1mdW5jdGlvbiBJZXQodCxlKXtyZXR1cm4genR0KHQuZ2V0VVRDU2Vjb25kcygpLGUsMil9ZnVuY3Rpb24gTmV0KHQpe3ZhciBlPXQuZ2V0VVRDRGF5KCk7cmV0dXJuIDA9PT1lPzc6ZX1mdW5jdGlvbiBPZXQodCxlKXtyZXR1cm4genR0KHZ0dC5jb3VudCh3dHQodCksdCksZSwyKX1mdW5jdGlvbiBSZXQodCxlKXt2YXIgbj10LmdldFVUQ0RheSgpO3JldHVybiB0PW4+PTR8fDA9PT1uP3h0dCh0KTp4dHQuY2VpbCh0KSx6dHQoeHR0LmNvdW50KHd0dCh0KSx0KSsoND09PXd0dCh0KS5nZXRVVENEYXkoKSksZSwyKX1mdW5jdGlvbiB6ZXQodCl7cmV0dXJuIHQuZ2V0VVRDRGF5KCl9ZnVuY3Rpb24gRGV0KHQsZSl7cmV0dXJuIHp0dChidHQuY291bnQod3R0KHQpLHQpLGUsMil9ZnVuY3Rpb24gQmV0KHQsZSl7cmV0dXJuIHp0dCh0LmdldFVUQ0Z1bGxZZWFyKCklMTAwLGUsMil9ZnVuY3Rpb24gSGV0KHQsZSl7cmV0dXJuIHp0dCh0LmdldFVUQ0Z1bGxZZWFyKCklMWU0LGUsNCl9ZnVuY3Rpb24gRmV0KCl7cmV0dXJuIiswMDAwIn1mdW5jdGlvbiBWZXQoKXtyZXR1cm4iJSJ9ZnVuY3Rpb24gamV0KHQpe3JldHVybit0fWZ1bmN0aW9uIFVldCh0KXtyZXR1cm4gTWF0aC5mbG9vcigrdC8xZTMpfWZ1bmN0aW9uIEdldCh0KXtyZXR1cm4gQXR0PVR0dCh0KSxDdHQ9QXR0LmZvcm1hdCxrdHQ9QXR0LnBhcnNlLEx0dD1BdHQudXRjRm9ybWF0LFB0dD1BdHQudXRjUGFyc2UsQXR0fUdldCh7ZGF0ZVRpbWU6IiV4LCAlWCIsZGF0ZToiJS1tLyUtZC8lWSIsdGltZToiJS1JOiVNOiVTICVwIixwZXJpb2RzOlsiQU0iLCJQTSJdLGRheXM6WyJTdW5kYXkiLCJNb25kYXkiLCJUdWVzZGF5IiwiV2VkbmVzZGF5IiwiVGh1cnNkYXkiLCJGcmlkYXkiLCJTYXR1cmRheSJdLHNob3J0RGF5czpbIlN1biIsIk1vbiIsIlR1ZSIsIldlZCIsIlRodSIsIkZyaSIsIlNhdCJdLG1vbnRoczpbIkphbnVhcnkiLCJGZWJydWFyeSIsIk1hcmNoIiwiQXByaWwiLCJNYXkiLCJKdW5lIiwiSnVseSIsIkF1Z3VzdCIsIlNlcHRlbWJlciIsIk9jdG9iZXIiLCJOb3ZlbWJlciIsIkRlY2VtYmVyIl0sc2hvcnRNb250aHM6WyJKYW4iLCJGZWIiLCJNYXIiLCJBcHIiLCJNYXkiLCJKdW4iLCJKdWwiLCJBdWciLCJTZXAiLCJPY3QiLCJOb3YiLCJEZWMiXX0pO3ZhciBXZXQscWV0LFlldD0iJVktJW0tJWRUJUg6JU06JVMuJUxaIixYZXQ9RGF0ZS5wcm90b3R5cGUudG9JU09TdHJpbmc/ZnVuY3Rpb24gJGV0KHQpe3JldHVybiB0LnRvSVNPU3RyaW5nKCl9Okx0dChZZXQpLEtldD0rbmV3IERhdGUoIjIwMDAtMDEtMDFUMDA6MDA6MDAuMDAwWiIpP2Z1bmN0aW9uIFpldCh0KXt2YXIgZT1uZXcgRGF0ZSh0KTtyZXR1cm4gaXNOYU4oZSk/bnVsbDplfTpQdHQoWWV0KSxKZXQ9MCxRZXQ9MCx0bnQ9MCxlbnQ9MCxubnQ9MCxpbnQ9MCxybnQ9Im9iamVjdCI9PXR5cGVvZiBwZXJmb3JtYW5jZSYmcGVyZm9ybWFuY2Uubm93P3BlcmZvcm1hbmNlOkRhdGUsb250PSJvYmplY3QiPT10eXBlb2Ygd2luZG93JiZ3aW5kb3cucmVxdWVzdEFuaW1hdGlvbkZyYW1lP3dpbmRvdy5yZXF1ZXN0QW5pbWF0aW9uRnJhbWUuYmluZCh3aW5kb3cpOmZ1bmN0aW9uKHQpe3NldFRpbWVvdXQodCwxNyl9O2Z1bmN0aW9uIGFudCgpe3JldHVybiBubnR8fChvbnQoc250KSxubnQ9cm50Lm5vdygpK2ludCl9ZnVuY3Rpb24gc250KCl7bm50PTB9ZnVuY3Rpb24gbG50KCl7dGhpcy5fY2FsbD10aGlzLl90aW1lPXRoaXMuX25leHQ9bnVsbH1mdW5jdGlvbiBjbnQodCxlLG4pe3ZhciBpPW5ldyBsbnQ7cmV0dXJuIGkucmVzdGFydCh0LGUsbiksaX1mdW5jdGlvbiB1bnQoKXthbnQoKSwrK0pldDtmb3IodmFyIHQsZT1XZXQ7ZTspKHQ9bm50LWUuX3RpbWUpPj0wJiZlLl9jYWxsLmNhbGwobnVsbCx0KSxlPWUuX25leHQ7LS1KZXR9ZnVuY3Rpb24gaG50KCl7bm50PShlbnQ9cm50Lm5vdygpKStpbnQsSmV0PVFldD0wO3RyeXt1bnQoKX1maW5hbGx5e0pldD0wLChmdW5jdGlvbiB0KCl7Zm9yKHZhciB0LGUsbj1XZXQsaT0xLzA7bjspbi5fY2FsbD8oaT5uLl90aW1lJiYoaT1uLl90aW1lKSx0PW4sbj1uLl9uZXh0KTooZT1uLl9uZXh0LG4uX25leHQ9bnVsbCxuPXQ/dC5fbmV4dD1lOldldD1lKTtxZXQ9dCxwbnQoaSl9KSgpLG5udD0wfX1mdW5jdGlvbiBkbnQoKXt2YXIgdD1ybnQubm93KCksZT10LWVudDtlPjFlMyYmKGludC09ZSxlbnQ9dCl9ZnVuY3Rpb24gcG50KHQpe0pldHx8KFFldCYmKFFldD1jbGVhclRpbWVvdXQoUWV0KSksdC1ubnQ+MjQ/KHQ8MS8wJiYoUWV0PXNldFRpbWVvdXQoaG50LHQtcm50Lm5vdygpLWludCkpLHRudCYmKHRudD1jbGVhckludGVydmFsKHRudCkpKToodG50fHwoZW50PXJudC5ub3coKSx0bnQ9c2V0SW50ZXJ2YWwoZG50LDFlMykpLEpldD0xLG9udChobnQpKSl9bG50LnByb3RvdHlwZT1jbnQucHJvdG90eXBlPXtjb25zdHJ1Y3RvcjpsbnQscmVzdGFydDpmdW5jdGlvbih0LGUsbil7aWYoImZ1bmN0aW9uIiE9dHlwZW9mIHQpdGhyb3cgbmV3IFR5cGVFcnJvcigiY2FsbGJhY2sgaXMgbm90IGEgZnVuY3Rpb24iKTtuPShudWxsPT1uP2FudCgpOituKSsobnVsbD09ZT8wOitlKSx0aGlzLl9uZXh0fHxxZXQ9PT10aGlzfHwocWV0P3FldC5fbmV4dD10aGlzOldldD10aGlzLHFldD10aGlzKSx0aGlzLl9jYWxsPXQsdGhpcy5fdGltZT1uLHBudCgpfSxzdG9wOmZ1bmN0aW9uKCl7dGhpcy5fY2FsbCYmKHRoaXMuX2NhbGw9bnVsbCx0aGlzLl90aW1lPTEvMCxwbnQoKSl9fTt2YXIgZm50PSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hodG1sIixtbnQ9e3N2ZzoiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciLHhodG1sOmZudCx4bGluazoiaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayIseG1sOiJodHRwOi8vd3d3LnczLm9yZy9YTUwvMTk5OC9uYW1lc3BhY2UiLHhtbG5zOiJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3htbG5zLyJ9O2Z1bmN0aW9uIGdudCh0KXt2YXIgZT10Kz0iIixuPWUuaW5kZXhPZigiOiIpO3JldHVybiBuPj0wJiYieG1sbnMiIT09KGU9dC5zbGljZSgwLG4pKSYmKHQ9dC5zbGljZShuKzEpKSxtbnQuaGFzT3duUHJvcGVydHkoZSk/e3NwYWNlOm1udFtlXSxsb2NhbDp0fTp0fWZ1bmN0aW9uIF9udCh0KXtyZXR1cm4gZnVuY3Rpb24oKXt2YXIgZT10aGlzLm93bmVyRG9jdW1lbnQsbj10aGlzLm5hbWVzcGFjZVVSSTtyZXR1cm4gbj09PWZudCYmZS5kb2N1bWVudEVsZW1lbnQubmFtZXNwYWNlVVJJPT09Zm50P2UuY3JlYXRlRWxlbWVudCh0KTplLmNyZWF0ZUVsZW1lbnROUyhuLHQpfX1mdW5jdGlvbiB5bnQodCl7cmV0dXJuIGZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMub3duZXJEb2N1bWVudC5jcmVhdGVFbGVtZW50TlModC5zcGFjZSx0LmxvY2FsKX19ZnVuY3Rpb24gdm50KHQpe3ZhciBlPWdudCh0KTtyZXR1cm4oZS5sb2NhbD95bnQ6X250KShlKX1mdW5jdGlvbiBibnQoKXt9ZnVuY3Rpb24geG50KHQpe3JldHVybiBudWxsPT10P2JudDpmdW5jdGlvbigpe3JldHVybiB0aGlzLnF1ZXJ5U2VsZWN0b3IodCl9fWZ1bmN0aW9uIHdudCgpe3JldHVybltdfWZ1bmN0aW9uIFNudCh0KXtyZXR1cm4gbnVsbD09dD93bnQ6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5xdWVyeVNlbGVjdG9yQWxsKHQpfX1mdW5jdGlvbiBNbnQodCl7cmV0dXJuIGZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMubWF0Y2hlcyh0KX19ZnVuY3Rpb24gRW50KHQpe3JldHVybiBuZXcgQXJyYXkodC5sZW5ndGgpfWZ1bmN0aW9uIFRudCh0LGUpe3RoaXMub3duZXJEb2N1bWVudD10Lm93bmVyRG9jdW1lbnQsdGhpcy5uYW1lc3BhY2VVUkk9dC5uYW1lc3BhY2VVUkksdGhpcy5fbmV4dD1udWxsLHRoaXMuX3BhcmVudD10LHRoaXMuX19kYXRhX189ZX1mdW5jdGlvbiBBbnQodCxlLG4saSxyLG8pe2Zvcih2YXIgYSxzPTAsbD1lLmxlbmd0aCxjPW8ubGVuZ3RoO3M8YzsrK3MpKGE9ZVtzXSk/KGEuX19kYXRhX189b1tzXSxpW3NdPWEpOm5bc109bmV3IFRudCh0LG9bc10pO2Zvcig7czxsOysrcykoYT1lW3NdKSYmKHJbc109YSl9ZnVuY3Rpb24gQ250KHQsZSxuLGkscixvLGEpe3ZhciBzLGwsYyx1PXt9LGg9ZS5sZW5ndGgsZD1vLmxlbmd0aCxwPW5ldyBBcnJheShoKTtmb3Iocz0wO3M8aDsrK3MpKGw9ZVtzXSkmJihwW3NdPWM9IiQiK2EuY2FsbChsLGwuX19kYXRhX18scyxlKSxjIGluIHU/cltzXT1sOnVbY109bCk7Zm9yKHM9MDtzPGQ7KytzKShsPXVbYz0iJCIrYS5jYWxsKHQsb1tzXSxzLG8pXSk/KGlbc109bCxsLl9fZGF0YV9fPW9bc10sdVtjXT1udWxsKTpuW3NdPW5ldyBUbnQodCxvW3NdKTtmb3Iocz0wO3M8aDsrK3MpKGw9ZVtzXSkmJnVbcFtzXV09PT1sJiYocltzXT1sKX1mdW5jdGlvbiBrbnQodCxlKXtyZXR1cm4gdDxlPy0xOnQ+ZT8xOnQ+PWU/MDpOYU59ZnVuY3Rpb24gTG50KHQpe3JldHVybiBmdW5jdGlvbigpe3RoaXMucmVtb3ZlQXR0cmlidXRlKHQpfX1mdW5jdGlvbiBQbnQodCl7cmV0dXJuIGZ1bmN0aW9uKCl7dGhpcy5yZW1vdmVBdHRyaWJ1dGVOUyh0LnNwYWNlLHQubG9jYWwpfX1mdW5jdGlvbiBJbnQodCxlKXtyZXR1cm4gZnVuY3Rpb24oKXt0aGlzLnNldEF0dHJpYnV0ZSh0LGUpfX1mdW5jdGlvbiBObnQodCxlKXtyZXR1cm4gZnVuY3Rpb24oKXt0aGlzLnNldEF0dHJpYnV0ZU5TKHQuc3BhY2UsdC5sb2NhbCxlKX19ZnVuY3Rpb24gT250KHQsZSl7cmV0dXJuIGZ1bmN0aW9uKCl7dmFyIG49ZS5hcHBseSh0aGlzLGFyZ3VtZW50cyk7bnVsbD09bj90aGlzLnJlbW92ZUF0dHJpYnV0ZSh0KTp0aGlzLnNldEF0dHJpYnV0ZSh0LG4pfX1mdW5jdGlvbiBSbnQodCxlKXtyZXR1cm4gZnVuY3Rpb24oKXt2YXIgbj1lLmFwcGx5KHRoaXMsYXJndW1lbnRzKTtudWxsPT1uP3RoaXMucmVtb3ZlQXR0cmlidXRlTlModC5zcGFjZSx0LmxvY2FsKTp0aGlzLnNldEF0dHJpYnV0ZU5TKHQuc3BhY2UsdC5sb2NhbCxuKX19ZnVuY3Rpb24gem50KHQpe3JldHVybiB0Lm93bmVyRG9jdW1lbnQmJnQub3duZXJEb2N1bWVudC5kZWZhdWx0Vmlld3x8dC5kb2N1bWVudCYmdHx8dC5kZWZhdWx0Vmlld31mdW5jdGlvbiBEbnQodCl7cmV0dXJuIGZ1bmN0aW9uKCl7dGhpcy5zdHlsZS5yZW1vdmVQcm9wZXJ0eSh0KX19ZnVuY3Rpb24gQm50KHQsZSxuKXtyZXR1cm4gZnVuY3Rpb24oKXt0aGlzLnN0eWxlLnNldFByb3BlcnR5KHQsZSxuKX19ZnVuY3Rpb24gSG50KHQsZSxuKXtyZXR1cm4gZnVuY3Rpb24oKXt2YXIgaT1lLmFwcGx5KHRoaXMsYXJndW1lbnRzKTtudWxsPT1pP3RoaXMuc3R5bGUucmVtb3ZlUHJvcGVydHkodCk6dGhpcy5zdHlsZS5zZXRQcm9wZXJ0eSh0LGksbil9fWZ1bmN0aW9uIEZudCh0LGUpe3JldHVybiB0LnN0eWxlLmdldFByb3BlcnR5VmFsdWUoZSl8fHpudCh0KS5nZXRDb21wdXRlZFN0eWxlKHQsbnVsbCkuZ2V0UHJvcGVydHlWYWx1ZShlKX1mdW5jdGlvbiBWbnQodCl7cmV0dXJuIGZ1bmN0aW9uKCl7ZGVsZXRlIHRoaXNbdF19fWZ1bmN0aW9uIGpudCh0LGUpe3JldHVybiBmdW5jdGlvbigpe3RoaXNbdF09ZX19ZnVuY3Rpb24gVW50KHQsZSl7cmV0dXJuIGZ1bmN0aW9uKCl7dmFyIG49ZS5hcHBseSh0aGlzLGFyZ3VtZW50cyk7bnVsbD09bj9kZWxldGUgdGhpc1t0XTp0aGlzW3RdPW59fWZ1bmN0aW9uIEdudCh0KXtyZXR1cm4gdC50cmltKCkuc3BsaXQoL158XHMrLyl9ZnVuY3Rpb24gV250KHQpe3JldHVybiB0LmNsYXNzTGlzdHx8bmV3IHFudCh0KX1mdW5jdGlvbiBxbnQodCl7dGhpcy5fbm9kZT10LHRoaXMuX25hbWVzPUdudCh0LmdldEF0dHJpYnV0ZSgiY2xhc3MiKXx8IiIpfWZ1bmN0aW9uIFludCh0LGUpe2Zvcih2YXIgbj1XbnQodCksaT0tMSxyPWUubGVuZ3RoOysraTxyOyluLmFkZChlW2ldKX1mdW5jdGlvbiBYbnQodCxlKXtmb3IodmFyIG49V250KHQpLGk9LTEscj1lLmxlbmd0aDsrK2k8cjspbi5yZW1vdmUoZVtpXSl9ZnVuY3Rpb24gJG50KHQpe3JldHVybiBmdW5jdGlvbigpe1ludCh0aGlzLHQpfX1mdW5jdGlvbiBLbnQodCl7cmV0dXJuIGZ1bmN0aW9uKCl7WG50KHRoaXMsdCl9fWZ1bmN0aW9uIFpudCh0LGUpe3JldHVybiBmdW5jdGlvbigpeyhlLmFwcGx5KHRoaXMsYXJndW1lbnRzKT9ZbnQ6WG50KSh0aGlzLHQpfX1mdW5jdGlvbiBKbnQoKXt0aGlzLnRleHRDb250ZW50PSIifWZ1bmN0aW9uIFFudCh0KXtyZXR1cm4gZnVuY3Rpb24oKXt0aGlzLnRleHRDb250ZW50PXR9fWZ1bmN0aW9uIHRpdCh0KXtyZXR1cm4gZnVuY3Rpb24oKXt2YXIgZT10LmFwcGx5KHRoaXMsYXJndW1lbnRzKTt0aGlzLnRleHRDb250ZW50PW51bGw9PWU/IiI6ZX19ZnVuY3Rpb24gZWl0KCl7dGhpcy5pbm5lckhUTUw9IiJ9ZnVuY3Rpb24gbml0KHQpe3JldHVybiBmdW5jdGlvbigpe3RoaXMuaW5uZXJIVE1MPXR9fWZ1bmN0aW9uIGlpdCh0KXtyZXR1cm4gZnVuY3Rpb24oKXt2YXIgZT10LmFwcGx5KHRoaXMsYXJndW1lbnRzKTt0aGlzLmlubmVySFRNTD1udWxsPT1lPyIiOmV9fWZ1bmN0aW9uIHJpdCgpe3RoaXMubmV4dFNpYmxpbmcmJnRoaXMucGFyZW50Tm9kZS5hcHBlbmRDaGlsZCh0aGlzKX1mdW5jdGlvbiBvaXQoKXt0aGlzLnByZXZpb3VzU2libGluZyYmdGhpcy5wYXJlbnROb2RlLmluc2VydEJlZm9yZSh0aGlzLHRoaXMucGFyZW50Tm9kZS5maXJzdENoaWxkKX1mdW5jdGlvbiBhaXQoKXtyZXR1cm4gbnVsbH1mdW5jdGlvbiBzaXQoKXt2YXIgdD10aGlzLnBhcmVudE5vZGU7dCYmdC5yZW1vdmVDaGlsZCh0aGlzKX1mdW5jdGlvbiBsaXQoKXt2YXIgdD10aGlzLmNsb25lTm9kZSghMSksZT10aGlzLnBhcmVudE5vZGU7cmV0dXJuIGU/ZS5pbnNlcnRCZWZvcmUodCx0aGlzLm5leHRTaWJsaW5nKTp0fWZ1bmN0aW9uIGNpdCgpe3ZhciB0PXRoaXMuY2xvbmVOb2RlKCEwKSxlPXRoaXMucGFyZW50Tm9kZTtyZXR1cm4gZT9lLmluc2VydEJlZm9yZSh0LHRoaXMubmV4dFNpYmxpbmcpOnR9VG50LnByb3RvdHlwZT17Y29uc3RydWN0b3I6VG50LGFwcGVuZENoaWxkOmZ1bmN0aW9uKHQpe3JldHVybiB0aGlzLl9wYXJlbnQuaW5zZXJ0QmVmb3JlKHQsdGhpcy5fbmV4dCl9LGluc2VydEJlZm9yZTpmdW5jdGlvbih0LGUpe3JldHVybiB0aGlzLl9wYXJlbnQuaW5zZXJ0QmVmb3JlKHQsZSl9LHF1ZXJ5U2VsZWN0b3I6ZnVuY3Rpb24odCl7cmV0dXJuIHRoaXMuX3BhcmVudC5xdWVyeVNlbGVjdG9yKHQpfSxxdWVyeVNlbGVjdG9yQWxsOmZ1bmN0aW9uKHQpe3JldHVybiB0aGlzLl9wYXJlbnQucXVlcnlTZWxlY3RvckFsbCh0KX19LHFudC5wcm90b3R5cGU9e2FkZDpmdW5jdGlvbih0KXt0aGlzLl9uYW1lcy5pbmRleE9mKHQpPDAmJih0aGlzLl9uYW1lcy5wdXNoKHQpLHRoaXMuX25vZGUuc2V0QXR0cmlidXRlKCJjbGFzcyIsdGhpcy5fbmFtZXMuam9pbigiICIpKSl9LHJlbW92ZTpmdW5jdGlvbih0KXt2YXIgZT10aGlzLl9uYW1lcy5pbmRleE9mKHQpO2U+PTAmJih0aGlzLl9uYW1lcy5zcGxpY2UoZSwxKSx0aGlzLl9ub2RlLnNldEF0dHJpYnV0ZSgiY2xhc3MiLHRoaXMuX25hbWVzLmpvaW4oIiAiKSkpfSxjb250YWluczpmdW5jdGlvbih0KXtyZXR1cm4gdGhpcy5fbmFtZXMuaW5kZXhPZih0KT49MH19O3ZhciB1aXQ9e307ZnVuY3Rpb24gaGl0KHQsZSxuKXtyZXR1cm4gdD1kaXQodCxlLG4pLGZ1bmN0aW9uKGUpe3ZhciBuPWUucmVsYXRlZFRhcmdldDtuJiYobj09PXRoaXN8fDgmbi5jb21wYXJlRG9jdW1lbnRQb3NpdGlvbih0aGlzKSl8fHQuY2FsbCh0aGlzLGUpfX1mdW5jdGlvbiBkaXQodCxlLG4pe3JldHVybiBmdW5jdGlvbihpKXt0cnl7dC5jYWxsKHRoaXMsdGhpcy5fX2RhdGFfXyxlLG4pfWZpbmFsbHl7fX19ZnVuY3Rpb24gcGl0KHQpe3JldHVybiB0LnRyaW0oKS5zcGxpdCgvXnxccysvKS5tYXAoKGZ1bmN0aW9uKHQpe3ZhciBlPSIiLG49dC5pbmRleE9mKCIuIik7cmV0dXJuIG4+PTAmJihlPXQuc2xpY2UobisxKSx0PXQuc2xpY2UoMCxuKSkse3R5cGU6dCxuYW1lOmV9fSkpfWZ1bmN0aW9uIGZpdCh0KXtyZXR1cm4gZnVuY3Rpb24oKXt2YXIgZT10aGlzLl9fb247aWYoZSl7Zm9yKHZhciBuLGk9MCxyPS0xLG89ZS5sZW5ndGg7aTxvOysraSluPWVbaV0sdC50eXBlJiZuLnR5cGUhPT10LnR5cGV8fG4ubmFtZSE9PXQubmFtZT9lWysrcl09bjp0aGlzLnJlbW92ZUV2ZW50TGlzdGVuZXIobi50eXBlLG4ubGlzdGVuZXIsbi5jYXB0dXJlKTsrK3I/ZS5sZW5ndGg9cjpkZWxldGUgdGhpcy5fX29ufX19ZnVuY3Rpb24gbWl0KHQsZSxuKXt2YXIgaT11aXQuaGFzT3duUHJvcGVydHkodC50eXBlKT9oaXQ6ZGl0O3JldHVybiBmdW5jdGlvbihyLG8sYSl7dmFyIHMsbD10aGlzLl9fb24sYz1pKGUsbyxhKTtpZihsKWZvcih2YXIgdT0wLGg9bC5sZW5ndGg7dTxoOysrdSlpZigocz1sW3VdKS50eXBlPT09dC50eXBlJiZzLm5hbWU9PT10Lm5hbWUpcmV0dXJuIHRoaXMucmVtb3ZlRXZlbnRMaXN0ZW5lcihzLnR5cGUscy5saXN0ZW5lcixzLmNhcHR1cmUpLHRoaXMuYWRkRXZlbnRMaXN0ZW5lcihzLnR5cGUscy5saXN0ZW5lcj1jLHMuY2FwdHVyZT1uKSx2b2lkKHMudmFsdWU9ZSk7dGhpcy5hZGRFdmVudExpc3RlbmVyKHQudHlwZSxjLG4pLHM9e3R5cGU6dC50eXBlLG5hbWU6dC5uYW1lLHZhbHVlOmUsbGlzdGVuZXI6YyxjYXB0dXJlOm59LGw/bC5wdXNoKHMpOnRoaXMuX19vbj1bc119fWZ1bmN0aW9uIGdpdCh0LGUsbil7dmFyIGk9em50KHQpLHI9aS5DdXN0b21FdmVudDsiZnVuY3Rpb24iPT10eXBlb2Ygcj9yPW5ldyByKGUsbik6KHI9aS5kb2N1bWVudC5jcmVhdGVFdmVudCgiRXZlbnQiKSxuPyhyLmluaXRFdmVudChlLG4uYnViYmxlcyxuLmNhbmNlbGFibGUpLHIuZGV0YWlsPW4uZGV0YWlsKTpyLmluaXRFdmVudChlLCExLCExKSksdC5kaXNwYXRjaEV2ZW50KHIpfWZ1bmN0aW9uIF9pdCh0LGUpe3JldHVybiBmdW5jdGlvbigpe3JldHVybiBnaXQodGhpcyx0LGUpfX1mdW5jdGlvbiB5aXQodCxlKXtyZXR1cm4gZnVuY3Rpb24oKXtyZXR1cm4gZ2l0KHRoaXMsdCxlLmFwcGx5KHRoaXMsYXJndW1lbnRzKSl9fSJ1bmRlZmluZWQiIT10eXBlb2YgZG9jdW1lbnQmJigib25tb3VzZWVudGVyImluIGRvY3VtZW50LmRvY3VtZW50RWxlbWVudHx8KHVpdD17bW91c2VlbnRlcjoibW91c2VvdmVyIixtb3VzZWxlYXZlOiJtb3VzZW91dCJ9KSk7dmFyIHZpdD1bbnVsbF07ZnVuY3Rpb24gYml0KHQsZSl7dGhpcy5fZ3JvdXBzPXQsdGhpcy5fcGFyZW50cz1lfWZ1bmN0aW9uIHhpdCgpe3JldHVybiBuZXcgYml0KFtbZG9jdW1lbnQuZG9jdW1lbnRFbGVtZW50XV0sdml0KX1iaXQucHJvdG90eXBlPXhpdC5wcm90b3R5cGU9e2NvbnN0cnVjdG9yOmJpdCxzZWxlY3Q6ZnVuY3Rpb24gd2l0KHQpeyJmdW5jdGlvbiIhPXR5cGVvZiB0JiYodD14bnQodCkpO2Zvcih2YXIgZT10aGlzLl9ncm91cHMsbj1lLmxlbmd0aCxpPW5ldyBBcnJheShuKSxyPTA7cjxuOysrcilmb3IodmFyIG8sYSxzPWVbcl0sbD1zLmxlbmd0aCxjPWlbcl09bmV3IEFycmF5KGwpLHU9MDt1PGw7Kyt1KShvPXNbdV0pJiYoYT10LmNhbGwobyxvLl9fZGF0YV9fLHUscykpJiYoIl9fZGF0YV9fImluIG8mJihhLl9fZGF0YV9fPW8uX19kYXRhX18pLGNbdV09YSk7cmV0dXJuIG5ldyBiaXQoaSx0aGlzLl9wYXJlbnRzKX0sc2VsZWN0QWxsOmZ1bmN0aW9uIFNpdCh0KXsiZnVuY3Rpb24iIT10eXBlb2YgdCYmKHQ9U250KHQpKTtmb3IodmFyIGU9dGhpcy5fZ3JvdXBzLG49ZS5sZW5ndGgsaT1bXSxyPVtdLG89MDtvPG47KytvKWZvcih2YXIgYSxzPWVbb10sbD1zLmxlbmd0aCxjPTA7YzxsOysrYykoYT1zW2NdKSYmKGkucHVzaCh0LmNhbGwoYSxhLl9fZGF0YV9fLGMscykpLHIucHVzaChhKSk7cmV0dXJuIG5ldyBiaXQoaSxyKX0sZmlsdGVyOmZ1bmN0aW9uIE1pdCh0KXsiZnVuY3Rpb24iIT10eXBlb2YgdCYmKHQ9TW50KHQpKTtmb3IodmFyIGU9dGhpcy5fZ3JvdXBzLG49ZS5sZW5ndGgsaT1uZXcgQXJyYXkobikscj0wO3I8bjsrK3IpZm9yKHZhciBvLGE9ZVtyXSxzPWEubGVuZ3RoLGw9aVtyXT1bXSxjPTA7YzxzOysrYykobz1hW2NdKSYmdC5jYWxsKG8sby5fX2RhdGFfXyxjLGEpJiZsLnB1c2gobyk7cmV0dXJuIG5ldyBiaXQoaSx0aGlzLl9wYXJlbnRzKX0sZGF0YTpmdW5jdGlvbiBFaXQodCxlKXtpZighdClyZXR1cm4gZj1uZXcgQXJyYXkodGhpcy5zaXplKCkpLHU9LTEsdGhpcy5lYWNoKChmdW5jdGlvbih0KXtmWysrdV09dH0pKSxmO3ZhciBuPWU/Q250OkFudCxpPXRoaXMuX3BhcmVudHMscj10aGlzLl9ncm91cHM7ImZ1bmN0aW9uIiE9dHlwZW9mIHQmJih0PShmdW5jdGlvbiBvKHQpe3JldHVybiBmdW5jdGlvbigpe3JldHVybiB0fX0pKHQpKTtmb3IodmFyIGE9ci5sZW5ndGgscz1uZXcgQXJyYXkoYSksbD1uZXcgQXJyYXkoYSksYz1uZXcgQXJyYXkoYSksdT0wO3U8YTsrK3Upe3ZhciBoPWlbdV0sZD1yW3VdLHA9ZC5sZW5ndGgsZj10LmNhbGwoaCxoJiZoLl9fZGF0YV9fLHUsaSksbT1mLmxlbmd0aCxnPWxbdV09bmV3IEFycmF5KG0pLF89c1t1XT1uZXcgQXJyYXkobSk7bihoLGQsZyxfLGNbdV09bmV3IEFycmF5KHApLGYsZSk7Zm9yKHZhciB5LHYsYj0wLHg9MDtiPG07KytiKWlmKHk9Z1tiXSl7Zm9yKGI+PXgmJih4PWIrMSk7ISh2PV9beF0pJiYrK3g8bTspO3kuX25leHQ9dnx8bnVsbH19cmV0dXJuKHM9bmV3IGJpdChzLGkpKS5fZW50ZXI9bCxzLl9leGl0PWMsc30sZW50ZXI6ZnVuY3Rpb24gVGl0KCl7cmV0dXJuIG5ldyBiaXQodGhpcy5fZW50ZXJ8fHRoaXMuX2dyb3Vwcy5tYXAoRW50KSx0aGlzLl9wYXJlbnRzKX0sZXhpdDpmdW5jdGlvbiBBaXQoKXtyZXR1cm4gbmV3IGJpdCh0aGlzLl9leGl0fHx0aGlzLl9ncm91cHMubWFwKEVudCksdGhpcy5fcGFyZW50cyl9LGpvaW46ZnVuY3Rpb24gQ2l0KHQsZSxuKXt2YXIgaT10aGlzLmVudGVyKCkscj10aGlzLG89dGhpcy5leGl0KCk7cmV0dXJuIGk9ImZ1bmN0aW9uIj09dHlwZW9mIHQ/dChpKTppLmFwcGVuZCh0KyIiKSxudWxsIT1lJiYocj1lKHIpKSxudWxsPT1uP28ucmVtb3ZlKCk6bihvKSxpJiZyP2kubWVyZ2Uocikub3JkZXIoKTpyfSxtZXJnZTpmdW5jdGlvbiBraXQodCl7Zm9yKHZhciBlPXRoaXMuX2dyb3VwcyxuPXQuX2dyb3VwcyxpPWUubGVuZ3RoLHI9TWF0aC5taW4oaSxuLmxlbmd0aCksbz1uZXcgQXJyYXkoaSksYT0wO2E8cjsrK2EpZm9yKHZhciBzLGw9ZVthXSxjPW5bYV0sdT1sLmxlbmd0aCxoPW9bYV09bmV3IEFycmF5KHUpLGQ9MDtkPHU7KytkKShzPWxbZF18fGNbZF0pJiYoaFtkXT1zKTtmb3IoO2E8aTsrK2Epb1thXT1lW2FdO3JldHVybiBuZXcgYml0KG8sdGhpcy5fcGFyZW50cyl9LG9yZGVyOmZ1bmN0aW9uIExpdCgpe2Zvcih2YXIgdD10aGlzLl9ncm91cHMsZT0tMSxuPXQubGVuZ3RoOysrZTxuOylmb3IodmFyIGkscj10W2VdLG89ci5sZW5ndGgtMSxhPXJbb107LS1vPj0wOykoaT1yW29dKSYmKGEmJjReaS5jb21wYXJlRG9jdW1lbnRQb3NpdGlvbihhKSYmYS5wYXJlbnROb2RlLmluc2VydEJlZm9yZShpLGEpLGE9aSk7cmV0dXJuIHRoaXN9LHNvcnQ6ZnVuY3Rpb24gUGl0KHQpe2Z1bmN0aW9uIGUoZSxuKXtyZXR1cm4gZSYmbj90KGUuX19kYXRhX18sbi5fX2RhdGFfXyk6IWUtIW59dHx8KHQ9a250KTtmb3IodmFyIG49dGhpcy5fZ3JvdXBzLGk9bi5sZW5ndGgscj1uZXcgQXJyYXkoaSksbz0wO288aTsrK28pe2Zvcih2YXIgYSxzPW5bb10sbD1zLmxlbmd0aCxjPXJbb109bmV3IEFycmF5KGwpLHU9MDt1PGw7Kyt1KShhPXNbdV0pJiYoY1t1XT1hKTtjLnNvcnQoZSl9cmV0dXJuIG5ldyBiaXQocix0aGlzLl9wYXJlbnRzKS5vcmRlcigpfSxjYWxsOmZ1bmN0aW9uIElpdCgpe3ZhciB0PWFyZ3VtZW50c1swXTtyZXR1cm4gYXJndW1lbnRzWzBdPXRoaXMsdC5hcHBseShudWxsLGFyZ3VtZW50cyksdGhpc30sbm9kZXM6ZnVuY3Rpb24gTml0KCl7dmFyIHQ9bmV3IEFycmF5KHRoaXMuc2l6ZSgpKSxlPS0xO3JldHVybiB0aGlzLmVhY2goKGZ1bmN0aW9uKCl7dFsrK2VdPXRoaXN9KSksdH0sbm9kZTpmdW5jdGlvbiBPaXQoKXtmb3IodmFyIHQ9dGhpcy5fZ3JvdXBzLGU9MCxuPXQubGVuZ3RoO2U8bjsrK2UpZm9yKHZhciBpPXRbZV0scj0wLG89aS5sZW5ndGg7cjxvOysrcil7dmFyIGE9aVtyXTtpZihhKXJldHVybiBhfXJldHVybiBudWxsfSxzaXplOmZ1bmN0aW9uIFJpdCgpe3ZhciB0PTA7cmV0dXJuIHRoaXMuZWFjaCgoZnVuY3Rpb24oKXsrK3R9KSksdH0sZW1wdHk6ZnVuY3Rpb24geml0KCl7cmV0dXJuIXRoaXMubm9kZSgpfSxlYWNoOmZ1bmN0aW9uIERpdCh0KXtmb3IodmFyIGU9dGhpcy5fZ3JvdXBzLG49MCxpPWUubGVuZ3RoO248aTsrK24pZm9yKHZhciByLG89ZVtuXSxhPTAscz1vLmxlbmd0aDthPHM7KythKShyPW9bYV0pJiZ0LmNhbGwocixyLl9fZGF0YV9fLGEsbyk7cmV0dXJuIHRoaXN9LGF0dHI6ZnVuY3Rpb24gQml0KHQsZSl7dmFyIG49Z250KHQpO2lmKGFyZ3VtZW50cy5sZW5ndGg8Mil7dmFyIGk9dGhpcy5ub2RlKCk7cmV0dXJuIG4ubG9jYWw/aS5nZXRBdHRyaWJ1dGVOUyhuLnNwYWNlLG4ubG9jYWwpOmkuZ2V0QXR0cmlidXRlKG4pfXJldHVybiB0aGlzLmVhY2goKG51bGw9PWU/bi5sb2NhbD9QbnQ6TG50OiJmdW5jdGlvbiI9PXR5cGVvZiBlP24ubG9jYWw/Um50Ok9udDpuLmxvY2FsP05udDpJbnQpKG4sZSkpfSxzdHlsZTpmdW5jdGlvbiBIaXQodCxlLG4pe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPjE/dGhpcy5lYWNoKChudWxsPT1lP0RudDoiZnVuY3Rpb24iPT10eXBlb2YgZT9IbnQ6Qm50KSh0LGUsbnVsbD09bj8iIjpuKSk6Rm50KHRoaXMubm9kZSgpLHQpfSxwcm9wZXJ0eTpmdW5jdGlvbiBGaXQodCxlKXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD4xP3RoaXMuZWFjaCgobnVsbD09ZT9WbnQ6ImZ1bmN0aW9uIj09dHlwZW9mIGU/VW50OmpudCkodCxlKSk6dGhpcy5ub2RlKClbdF19LGNsYXNzZWQ6ZnVuY3Rpb24gVml0KHQsZSl7dmFyIG49R250KHQrIiIpO2lmKGFyZ3VtZW50cy5sZW5ndGg8Mil7Zm9yKHZhciBpPVdudCh0aGlzLm5vZGUoKSkscj0tMSxvPW4ubGVuZ3RoOysrcjxvOylpZighaS5jb250YWlucyhuW3JdKSlyZXR1cm4hMTtyZXR1cm4hMH1yZXR1cm4gdGhpcy5lYWNoKCgiZnVuY3Rpb24iPT10eXBlb2YgZT9abnQ6ZT8kbnQ6S250KShuLGUpKX0sdGV4dDpmdW5jdGlvbiBqaXQodCl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/dGhpcy5lYWNoKG51bGw9PXQ/Sm50OigiZnVuY3Rpb24iPT10eXBlb2YgdD90aXQ6UW50KSh0KSk6dGhpcy5ub2RlKCkudGV4dENvbnRlbnR9LGh0bWw6ZnVuY3Rpb24gVWl0KHQpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoP3RoaXMuZWFjaChudWxsPT10P2VpdDooImZ1bmN0aW9uIj09dHlwZW9mIHQ/aWl0Om5pdCkodCkpOnRoaXMubm9kZSgpLmlubmVySFRNTH0scmFpc2U6ZnVuY3Rpb24gR2l0KCl7cmV0dXJuIHRoaXMuZWFjaChyaXQpfSxsb3dlcjpmdW5jdGlvbiBXaXQoKXtyZXR1cm4gdGhpcy5lYWNoKG9pdCl9LGFwcGVuZDpmdW5jdGlvbiBxaXQodCl7dmFyIGU9ImZ1bmN0aW9uIj09dHlwZW9mIHQ/dDp2bnQodCk7cmV0dXJuIHRoaXMuc2VsZWN0KChmdW5jdGlvbigpe3JldHVybiB0aGlzLmFwcGVuZENoaWxkKGUuYXBwbHkodGhpcyxhcmd1bWVudHMpKX0pKX0saW5zZXJ0OmZ1bmN0aW9uIFlpdCh0LGUpe3ZhciBuPSJmdW5jdGlvbiI9PXR5cGVvZiB0P3Q6dm50KHQpLGk9bnVsbD09ZT9haXQ6ImZ1bmN0aW9uIj09dHlwZW9mIGU/ZTp4bnQoZSk7cmV0dXJuIHRoaXMuc2VsZWN0KChmdW5jdGlvbigpe3JldHVybiB0aGlzLmluc2VydEJlZm9yZShuLmFwcGx5KHRoaXMsYXJndW1lbnRzKSxpLmFwcGx5KHRoaXMsYXJndW1lbnRzKXx8bnVsbCl9KSl9LHJlbW92ZTpmdW5jdGlvbiBYaXQoKXtyZXR1cm4gdGhpcy5lYWNoKHNpdCl9LGNsb25lOmZ1bmN0aW9uICRpdCh0KXtyZXR1cm4gdGhpcy5zZWxlY3QodD9jaXQ6bGl0KX0sZGF0dW06ZnVuY3Rpb24gS2l0KHQpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoP3RoaXMucHJvcGVydHkoIl9fZGF0YV9fIix0KTp0aGlzLm5vZGUoKS5fX2RhdGFfX30sb246ZnVuY3Rpb24gWml0KHQsZSxuKXt2YXIgaSxyLG89cGl0KHQrIiIpLGE9by5sZW5ndGg7aWYoIShhcmd1bWVudHMubGVuZ3RoPDIpKXtmb3Iocz1lP21pdDpmaXQsbnVsbD09biYmKG49ITEpLGk9MDtpPGE7KytpKXRoaXMuZWFjaChzKG9baV0sZSxuKSk7cmV0dXJuIHRoaXN9dmFyIHM9dGhpcy5ub2RlKCkuX19vbjtpZihzKWZvcih2YXIgbCxjPTAsdT1zLmxlbmd0aDtjPHU7KytjKWZvcihpPTAsbD1zW2NdO2k8YTsrK2kpaWYoKHI9b1tpXSkudHlwZT09PWwudHlwZSYmci5uYW1lPT09bC5uYW1lKXJldHVybiBsLnZhbHVlfSxkaXNwYXRjaDpmdW5jdGlvbiBKaXQodCxlKXtyZXR1cm4gdGhpcy5lYWNoKCgiZnVuY3Rpb24iPT10eXBlb2YgZT95aXQ6X2l0KSh0LGUpKX19O3ZhciBRaXQ9e3ZhbHVlOmZ1bmN0aW9uKCl7fX07ZnVuY3Rpb24gdHJ0KCl7Zm9yKHZhciB0LGU9MCxuPWFyZ3VtZW50cy5sZW5ndGgsaT17fTtlPG47KytlKXtpZighKHQ9YXJndW1lbnRzW2VdKyIiKXx8dCBpbiBpfHwvW1xzLl0vLnRlc3QodCkpdGhyb3cgbmV3IEVycm9yKCJpbGxlZ2FsIHR5cGU6ICIrdCk7aVt0XT1bXX1yZXR1cm4gbmV3IGVydChpKX1mdW5jdGlvbiBlcnQodCl7dGhpcy5fPXR9ZnVuY3Rpb24gbnJ0KHQsZSl7cmV0dXJuIHQudHJpbSgpLnNwbGl0KC9efFxzKy8pLm1hcCgoZnVuY3Rpb24odCl7dmFyIG49IiIsaT10LmluZGV4T2YoIi4iKTtpZihpPj0wJiYobj10LnNsaWNlKGkrMSksdD10LnNsaWNlKDAsaSkpLHQmJiFlLmhhc093blByb3BlcnR5KHQpKXRocm93IG5ldyBFcnJvcigidW5rbm93biB0eXBlOiAiK3QpO3JldHVybnt0eXBlOnQsbmFtZTpufX0pKX1mdW5jdGlvbiBpcnQodCxlKXtmb3IodmFyIG4saT0wLHI9dC5sZW5ndGg7aTxyOysraSlpZigobj10W2ldKS5uYW1lPT09ZSlyZXR1cm4gbi52YWx1ZX1mdW5jdGlvbiBycnQodCxlLG4pe2Zvcih2YXIgaT0wLHI9dC5sZW5ndGg7aTxyOysraSlpZih0W2ldLm5hbWU9PT1lKXt0W2ldPVFpdCx0PXQuc2xpY2UoMCxpKS5jb25jYXQodC5zbGljZShpKzEpKTticmVha31yZXR1cm4gbnVsbCE9biYmdC5wdXNoKHtuYW1lOmUsdmFsdWU6bn0pLHR9ZXJ0LnByb3RvdHlwZT10cnQucHJvdG90eXBlPXtjb25zdHJ1Y3RvcjplcnQsb246ZnVuY3Rpb24odCxlKXt2YXIgbixpPXRoaXMuXyxyPW5ydCh0KyIiLGkpLG89LTEsYT1yLmxlbmd0aDtpZighKGFyZ3VtZW50cy5sZW5ndGg8Mikpe2lmKG51bGwhPWUmJiJmdW5jdGlvbiIhPXR5cGVvZiBlKXRocm93IG5ldyBFcnJvcigiaW52YWxpZCBjYWxsYmFjazogIitlKTtmb3IoOysrbzxhOylpZihuPSh0PXJbb10pLnR5cGUpaVtuXT1ycnQoaVtuXSx0Lm5hbWUsZSk7ZWxzZSBpZihudWxsPT1lKWZvcihuIGluIGkpaVtuXT1ycnQoaVtuXSx0Lm5hbWUsbnVsbCk7cmV0dXJuIHRoaXN9Zm9yKDsrK288YTspaWYoKG49KHQ9cltvXSkudHlwZSkmJihuPWlydChpW25dLHQubmFtZSkpKXJldHVybiBufSxjb3B5OmZ1bmN0aW9uKCl7dmFyIHQ9e30sZT10aGlzLl87Zm9yKHZhciBuIGluIGUpdFtuXT1lW25dLnNsaWNlKCk7cmV0dXJuIG5ldyBlcnQodCl9LGNhbGw6ZnVuY3Rpb24odCxlKXtpZigobj1hcmd1bWVudHMubGVuZ3RoLTIpPjApZm9yKHZhciBuLGkscj1uZXcgQXJyYXkobiksbz0wO288bjsrK28pcltvXT1hcmd1bWVudHNbbysyXTtpZighdGhpcy5fLmhhc093blByb3BlcnR5KHQpKXRocm93IG5ldyBFcnJvcigidW5rbm93biB0eXBlOiAiK3QpO2ZvcihvPTAsbj0oaT10aGlzLl9bdF0pLmxlbmd0aDtvPG47KytvKWlbb10udmFsdWUuYXBwbHkoZSxyKX0sYXBwbHk6ZnVuY3Rpb24odCxlLG4pe2lmKCF0aGlzLl8uaGFzT3duUHJvcGVydHkodCkpdGhyb3cgbmV3IEVycm9yKCJ1bmtub3duIHR5cGU6ICIrdCk7Zm9yKHZhciBpPXRoaXMuX1t0XSxyPTAsbz1pLmxlbmd0aDtyPG87KytyKWlbcl0udmFsdWUuYXBwbHkoZSxuKX19O3ZhciBvcnQsYXJ0LHNydD0wLGxydD0wLGNydD0wLHVydD0wLGhydD0wLGRydD0wLHBydD0ib2JqZWN0Ij09dHlwZW9mIHBlcmZvcm1hbmNlJiZwZXJmb3JtYW5jZS5ub3c/cGVyZm9ybWFuY2U6RGF0ZSxmcnQ9Im9iamVjdCI9PXR5cGVvZiB3aW5kb3cmJndpbmRvdy5yZXF1ZXN0QW5pbWF0aW9uRnJhbWU/d2luZG93LnJlcXVlc3RBbmltYXRpb25GcmFtZS5iaW5kKHdpbmRvdyk6ZnVuY3Rpb24odCl7c2V0VGltZW91dCh0LDE3KX07ZnVuY3Rpb24gbXJ0KCl7cmV0dXJuIGhydHx8KGZydChncnQpLGhydD1wcnQubm93KCkrZHJ0KX1mdW5jdGlvbiBncnQoKXtocnQ9MH1mdW5jdGlvbiBfcnQoKXt0aGlzLl9jYWxsPXRoaXMuX3RpbWU9dGhpcy5fbmV4dD1udWxsfWZ1bmN0aW9uIHlydCh0LGUsbil7dmFyIGk9bmV3IF9ydDtyZXR1cm4gaS5yZXN0YXJ0KHQsZSxuKSxpfWZ1bmN0aW9uIHZydCgpe2hydD0odXJ0PXBydC5ub3coKSkrZHJ0LHNydD1scnQ9MDt0cnl7IShmdW5jdGlvbiB0KCl7bXJ0KCksKytzcnQ7Zm9yKHZhciB0LGU9b3J0O2U7KSh0PWhydC1lLl90aW1lKT49MCYmZS5fY2FsbC5jYWxsKG51bGwsdCksZT1lLl9uZXh0Oy0tc3J0fSkoKX1maW5hbGx5e3NydD0wLChmdW5jdGlvbiBlKCl7Zm9yKHZhciB0LGUsbj1vcnQsaT0xLzA7bjspbi5fY2FsbD8oaT5uLl90aW1lJiYoaT1uLl90aW1lKSx0PW4sbj1uLl9uZXh0KTooZT1uLl9uZXh0LG4uX25leHQ9bnVsbCxuPXQ/dC5fbmV4dD1lOm9ydD1lKTthcnQ9dCx4cnQoaSl9KSgpLGhydD0wfX1mdW5jdGlvbiBicnQoKXt2YXIgdD1wcnQubm93KCksZT10LXVydDtlPjFlMyYmKGRydC09ZSx1cnQ9dCl9ZnVuY3Rpb24geHJ0KHQpe3NydHx8KGxydCYmKGxydD1jbGVhclRpbWVvdXQobHJ0KSksdC1ocnQ+MjQ/KHQ8MS8wJiYobHJ0PXNldFRpbWVvdXQodnJ0LHQtcHJ0Lm5vdygpLWRydCkpLGNydCYmKGNydD1jbGVhckludGVydmFsKGNydCkpKTooY3J0fHwodXJ0PXBydC5ub3coKSxjcnQ9c2V0SW50ZXJ2YWwoYnJ0LDFlMykpLHNydD0xLGZydCh2cnQpKSl9ZnVuY3Rpb24gd3J0KHQsZSxuKXt2YXIgaT1uZXcgX3J0O3JldHVybiBpLnJlc3RhcnQoKGZ1bmN0aW9uKG4pe2kuc3RvcCgpLHQobitlKX0pLGU9bnVsbD09ZT8wOitlLG4pLGl9X3J0LnByb3RvdHlwZT15cnQucHJvdG90eXBlPXtjb25zdHJ1Y3RvcjpfcnQscmVzdGFydDpmdW5jdGlvbih0LGUsbil7aWYoImZ1bmN0aW9uIiE9dHlwZW9mIHQpdGhyb3cgbmV3IFR5cGVFcnJvcigiY2FsbGJhY2sgaXMgbm90IGEgZnVuY3Rpb24iKTtuPShudWxsPT1uP21ydCgpOituKSsobnVsbD09ZT8wOitlKSx0aGlzLl9uZXh0fHxhcnQ9PT10aGlzfHwoYXJ0P2FydC5fbmV4dD10aGlzOm9ydD10aGlzLGFydD10aGlzKSx0aGlzLl9jYWxsPXQsdGhpcy5fdGltZT1uLHhydCgpfSxzdG9wOmZ1bmN0aW9uKCl7dGhpcy5fY2FsbCYmKHRoaXMuX2NhbGw9bnVsbCx0aGlzLl90aW1lPTEvMCx4cnQoKSl9fTt2YXIgU3J0PXRydCgic3RhcnQiLCJlbmQiLCJpbnRlcnJ1cHQiKSxNcnQ9W107ZnVuY3Rpb24gRXJ0KHQsZSxuLGkscixvKXt2YXIgYT10Ll9fdHJhbnNpdGlvbjtpZihhKXtpZihuIGluIGEpcmV0dXJufWVsc2UgdC5fX3RyYW5zaXRpb249e307IShmdW5jdGlvbiBzKHQsZSxuKXt2YXIgaSxyPXQuX190cmFuc2l0aW9uO2Z1bmN0aW9uIG8obCl7dmFyIGMsdSxoLGQ7aWYoMSE9PW4uc3RhdGUpcmV0dXJuIHMoKTtmb3IoYyBpbiByKWlmKChkPXJbY10pLm5hbWU9PT1uLm5hbWUpe2lmKDM9PT1kLnN0YXRlKXJldHVybiB3cnQobyk7ND09PWQuc3RhdGU/KGQuc3RhdGU9NixkLnRpbWVyLnN0b3AoKSxkLm9uLmNhbGwoImludGVycnVwdCIsdCx0Ll9fZGF0YV9fLGQuaW5kZXgsZC5ncm91cCksZGVsZXRlIHJbY10pOitjPGUmJihkLnN0YXRlPTYsZC50aW1lci5zdG9wKCksZGVsZXRlIHJbY10pfWlmKHdydCgoZnVuY3Rpb24oKXszPT09bi5zdGF0ZSYmKG4uc3RhdGU9NCxuLnRpbWVyLnJlc3RhcnQoYSxuLmRlbGF5LG4udGltZSksYShsKSl9KSksbi5zdGF0ZT0yLG4ub24uY2FsbCgic3RhcnQiLHQsdC5fX2RhdGFfXyxuLmluZGV4LG4uZ3JvdXApLDI9PT1uLnN0YXRlKXtmb3Iobi5zdGF0ZT0zLGk9bmV3IEFycmF5KGg9bi50d2Vlbi5sZW5ndGgpLGM9MCx1PS0xO2M8aDsrK2MpKGQ9bi50d2VlbltjXS52YWx1ZS5jYWxsKHQsdC5fX2RhdGFfXyxuLmluZGV4LG4uZ3JvdXApKSYmKGlbKyt1XT1kKTtpLmxlbmd0aD11KzF9fWZ1bmN0aW9uIGEoZSl7Zm9yKHZhciByPWU8bi5kdXJhdGlvbj9uLmVhc2UuY2FsbChudWxsLGUvbi5kdXJhdGlvbik6KG4udGltZXIucmVzdGFydChzKSxuLnN0YXRlPTUsMSksbz0tMSxhPWkubGVuZ3RoOysrbzxhOylpW29dLmNhbGwobnVsbCxyKTs1PT09bi5zdGF0ZSYmKG4ub24uY2FsbCgiZW5kIix0LHQuX19kYXRhX18sbi5pbmRleCxuLmdyb3VwKSxzKCkpfWZ1bmN0aW9uIHMoKXtmb3IodmFyIGkgaW4gbi5zdGF0ZT02LG4udGltZXIuc3RvcCgpLGRlbGV0ZSByW2VdLHIpcmV0dXJuO2RlbGV0ZSB0Ll9fdHJhbnNpdGlvbn1yW2VdPW4sbi50aW1lcj15cnQoKGZ1bmN0aW9uIGwodCl7bi5zdGF0ZT0xLG4udGltZXIucmVzdGFydChvLG4uZGVsYXksbi50aW1lKSxuLmRlbGF5PD10JiZvKHQtbi5kZWxheSl9KSwwLG4udGltZSl9KSh0LG4se25hbWU6ZSxpbmRleDppLGdyb3VwOnIsb246U3J0LHR3ZWVuOk1ydCx0aW1lOm8udGltZSxkZWxheTpvLmRlbGF5LGR1cmF0aW9uOm8uZHVyYXRpb24sZWFzZTpvLmVhc2UsdGltZXI6bnVsbCxzdGF0ZTowfSl9ZnVuY3Rpb24gVHJ0KHQsZSl7dmFyIG49Q3J0KHQsZSk7aWYobi5zdGF0ZT4wKXRocm93IG5ldyBFcnJvcigidG9vIGxhdGU7IGFscmVhZHkgc2NoZWR1bGVkIik7cmV0dXJuIG59ZnVuY3Rpb24gQXJ0KHQsZSl7dmFyIG49Q3J0KHQsZSk7aWYobi5zdGF0ZT4yKXRocm93IG5ldyBFcnJvcigidG9vIGxhdGU7IGFscmVhZHkgc3RhcnRlZCIpO3JldHVybiBufWZ1bmN0aW9uIENydCh0LGUpe3ZhciBuPXQuX190cmFuc2l0aW9uO2lmKCFufHwhKG49bltlXSkpdGhyb3cgbmV3IEVycm9yKCJ0cmFuc2l0aW9uIG5vdCBmb3VuZCIpO3JldHVybiBufWZ1bmN0aW9uIGtydCh0LGUpe3ZhciBuLGkscixvPXQuX190cmFuc2l0aW9uLGE9ITA7aWYobyl7Zm9yKHIgaW4gZT1udWxsPT1lP251bGw6ZSsiIixvKShuPW9bcl0pLm5hbWU9PT1lPyhpPW4uc3RhdGU+MiYmbi5zdGF0ZTw1LG4uc3RhdGU9NixuLnRpbWVyLnN0b3AoKSxpJiZuLm9uLmNhbGwoImludGVycnVwdCIsdCx0Ll9fZGF0YV9fLG4uaW5kZXgsbi5ncm91cCksZGVsZXRlIG9bcl0pOmE9ITE7YSYmZGVsZXRlIHQuX190cmFuc2l0aW9ufX1mdW5jdGlvbiBMcnQodCxlLG4pe3QucHJvdG90eXBlPWUucHJvdG90eXBlPW4sbi5jb25zdHJ1Y3Rvcj10fWZ1bmN0aW9uIFBydCh0LGUpe3ZhciBuPU9iamVjdC5jcmVhdGUodC5wcm90b3R5cGUpO2Zvcih2YXIgaSBpbiBlKW5baV09ZVtpXTtyZXR1cm4gbn1mdW5jdGlvbiBJcnQoKXt9dmFyIE5ydD0uNyxPcnQ9MS9OcnQsUnJ0PSJcXHMqKFsrLV0/XFxkKylcXHMqIix6cnQ9IlxccyooWystXT9cXGQqXFwuP1xcZCsoPzpbZUVdWystXT9cXGQrKT8pXFxzKiIsRHJ0PSJcXHMqKFsrLV0/XFxkKlxcLj9cXGQrKD86W2VFXVsrLV0/XFxkKyk/KSVcXHMqIixCcnQ9L14jKFswLTlhLWZdezMsOH0pJC8sSHJ0PW5ldyBSZWdFeHAoIl5yZ2JcXCgiK1tScnQsUnJ0LFJydF0rIlxcKSQiKSxGcnQ9bmV3IFJlZ0V4cCgiXnJnYlxcKCIrW0RydCxEcnQsRHJ0XSsiXFwpJCIpLFZydD1uZXcgUmVnRXhwKCJecmdiYVxcKCIrW1JydCxScnQsUnJ0LHpydF0rIlxcKSQiKSxqcnQ9bmV3IFJlZ0V4cCgiXnJnYmFcXCgiK1tEcnQsRHJ0LERydCx6cnRdKyJcXCkkIiksVXJ0PW5ldyBSZWdFeHAoIl5oc2xcXCgiK1t6cnQsRHJ0LERydF0rIlxcKSQiKSxHcnQ9bmV3IFJlZ0V4cCgiXmhzbGFcXCgiK1t6cnQsRHJ0LERydCx6cnRdKyJcXCkkIiksV3J0PXthbGljZWJsdWU6MTU3OTIzODMsYW50aXF1ZXdoaXRlOjE2NDQ0Mzc1LGFxdWE6NjU1MzUsYXF1YW1hcmluZTo4Mzg4NTY0LGF6dXJlOjE1Nzk0MTc1LGJlaWdlOjE2MTE5MjYwLGJpc3F1ZToxNjc3MDI0NCxibGFjazowLGJsYW5jaGVkYWxtb25kOjE2NzcyMDQ1LGJsdWU6MjU1LGJsdWV2aW9sZXQ6OTA1NTIwMixicm93bjoxMDgyNDIzNCxidXJseXdvb2Q6MTQ1OTYyMzEsY2FkZXRibHVlOjYyNjY1MjgsY2hhcnRyZXVzZTo4Mzg4MzUyLGNob2NvbGF0ZToxMzc4OTQ3MCxjb3JhbDoxNjc0NDI3Mixjb3JuZmxvd2VyYmx1ZTo2NTkxOTgxLGNvcm5zaWxrOjE2Nzc1Mzg4LGNyaW1zb246MTQ0MjMxMDAsY3lhbjo2NTUzNSxkYXJrYmx1ZToxMzksZGFya2N5YW46MzU3MjMsZGFya2dvbGRlbnJvZDoxMjA5MjkzOSxkYXJrZ3JheToxMTExOTAxNyxkYXJrZ3JlZW46MjU2MDAsZGFya2dyZXk6MTExMTkwMTcsZGFya2toYWtpOjEyNDMzMjU5LGRhcmttYWdlbnRhOjkxMDk2NDMsZGFya29saXZlZ3JlZW46NTU5Nzk5OSxkYXJrb3JhbmdlOjE2NzQ3NTIwLGRhcmtvcmNoaWQ6MTAwNDAwMTIsZGFya3JlZDo5MTA5NTA0LGRhcmtzYWxtb246MTUzMDg0MTAsZGFya3NlYWdyZWVuOjk0MTk5MTksZGFya3NsYXRlYmx1ZTo0NzM0MzQ3LGRhcmtzbGF0ZWdyYXk6MzEwMDQ5NSxkYXJrc2xhdGVncmV5OjMxMDA0OTUsZGFya3R1cnF1b2lzZTo1Mjk0NSxkYXJrdmlvbGV0Ojk2OTk1MzksZGVlcHBpbms6MTY3MTY5NDcsZGVlcHNreWJsdWU6NDkxNTEsZGltZ3JheTo2OTA4MjY1LGRpbWdyZXk6NjkwODI2NSxkb2RnZXJibHVlOjIwMDMxOTksZmlyZWJyaWNrOjExNjc0MTQ2LGZsb3JhbHdoaXRlOjE2Nzc1OTIwLGZvcmVzdGdyZWVuOjIyNjM4NDIsZnVjaHNpYToxNjcxMTkzNSxnYWluc2Jvcm86MTQ0NzQ0NjAsZ2hvc3R3aGl0ZToxNjMxNjY3MSxnb2xkOjE2NzY2NzIwLGdvbGRlbnJvZDoxNDMyOTEyMCxncmF5Ojg0MjE1MDQsZ3JlZW46MzI3NjgsZ3JlZW55ZWxsb3c6MTE0MDMwNTUsZ3JleTo4NDIxNTA0LGhvbmV5ZGV3OjE1Nzk0MTYwLGhvdHBpbms6MTY3Mzg3NDAsaW5kaWFucmVkOjEzNDU4NTI0LGluZGlnbzo0OTE1MzMwLGl2b3J5OjE2Nzc3MjAwLGtoYWtpOjE1Nzg3NjYwLGxhdmVuZGVyOjE1MTMyNDEwLGxhdmVuZGVyYmx1c2g6MTY3NzMzNjUsbGF3bmdyZWVuOjgxOTA5NzYsbGVtb25jaGlmZm9uOjE2Nzc1ODg1LGxpZ2h0Ymx1ZToxMTM5MzI1NCxsaWdodGNvcmFsOjE1NzYxNTM2LGxpZ2h0Y3lhbjoxNDc0NTU5OSxsaWdodGdvbGRlbnJvZHllbGxvdzoxNjQ0ODIxMCxsaWdodGdyYXk6MTM4ODIzMjMsbGlnaHRncmVlbjo5NDk4MjU2LGxpZ2h0Z3JleToxMzg4MjMyMyxsaWdodHBpbms6MTY3NTg0NjUsbGlnaHRzYWxtb246MTY3NTI3NjIsbGlnaHRzZWFncmVlbjoyMTQyODkwLGxpZ2h0c2t5Ymx1ZTo4OTAwMzQ2LGxpZ2h0c2xhdGVncmF5Ojc4MzM3NTMsbGlnaHRzbGF0ZWdyZXk6NzgzMzc1MyxsaWdodHN0ZWVsYmx1ZToxMTU4NDczNCxsaWdodHllbGxvdzoxNjc3NzE4NCxsaW1lOjY1MjgwLGxpbWVncmVlbjozMzI5MzMwLGxpbmVuOjE2NDQ1NjcwLG1hZ2VudGE6MTY3MTE5MzUsbWFyb29uOjgzODg2MDgsbWVkaXVtYXF1YW1hcmluZTo2NzM3MzIyLG1lZGl1bWJsdWU6MjA1LG1lZGl1bW9yY2hpZDoxMjIxMTY2NyxtZWRpdW1wdXJwbGU6OTY2MjY4MyxtZWRpdW1zZWFncmVlbjozOTc4MDk3LG1lZGl1bXNsYXRlYmx1ZTo4MDg3NzkwLG1lZGl1bXNwcmluZ2dyZWVuOjY0MTU0LG1lZGl1bXR1cnF1b2lzZTo0NzcyMzAwLG1lZGl1bXZpb2xldHJlZDoxMzA0NzE3MyxtaWRuaWdodGJsdWU6MTY0NDkxMixtaW50Y3JlYW06MTYxMjE4NTAsbWlzdHlyb3NlOjE2NzcwMjczLG1vY2Nhc2luOjE2NzcwMjI5LG5hdmFqb3doaXRlOjE2NzY4Njg1LG5hdnk6MTI4LG9sZGxhY2U6MTY2NDM1NTgsb2xpdmU6ODQyMTM3NixvbGl2ZWRyYWI6NzA0ODczOSxvcmFuZ2U6MTY3NTM5MjAsb3JhbmdlcmVkOjE2NzI5MzQ0LG9yY2hpZDoxNDMxNTczNCxwYWxlZ29sZGVucm9kOjE1NjU3MTMwLHBhbGVncmVlbjoxMDAyNTg4MCxwYWxldHVycXVvaXNlOjExNTI5OTY2LHBhbGV2aW9sZXRyZWQ6MTQzODEyMDMscGFwYXlhd2hpcDoxNjc3MzA3NyxwZWFjaHB1ZmY6MTY3Njc2NzMscGVydToxMzQ2ODk5MSxwaW5rOjE2NzYxMDM1LHBsdW06MTQ1MjQ2MzcscG93ZGVyYmx1ZToxMTU5MTkxMCxwdXJwbGU6ODM4ODczNixyZWJlY2NhcHVycGxlOjY2OTc4ODEscmVkOjE2NzExNjgwLHJvc3licm93bjoxMjM1NzUxOSxyb3lhbGJsdWU6NDI4Njk0NSxzYWRkbGVicm93bjo5MTI3MTg3LHNhbG1vbjoxNjQxNjg4MixzYW5keWJyb3duOjE2MDMyODY0LHNlYWdyZWVuOjMwNTAzMjcsc2Vhc2hlbGw6MTY3NzQ2Mzgsc2llbm5hOjEwNTA2Nzk3LHNpbHZlcjoxMjYzMjI1Nixza3libHVlOjg5MDAzMzEsc2xhdGVibHVlOjY5NzAwNjEsc2xhdGVncmF5OjczNzI5NDQsc2xhdGVncmV5OjczNzI5NDQsc25vdzoxNjc3NTkzMCxzcHJpbmdncmVlbjo2NTQwNyxzdGVlbGJsdWU6NDYyMDk4MCx0YW46MTM4MDg3ODAsdGVhbDozMjg5Nix0aGlzdGxlOjE0MjA0ODg4LHRvbWF0bzoxNjczNzA5NSx0dXJxdW9pc2U6NDI1MTg1Nix2aW9sZXQ6MTU2MzEwODYsd2hlYXQ6MTYxMTMzMzEsd2hpdGU6MTY3NzcyMTUsd2hpdGVzbW9rZToxNjExOTI4NSx5ZWxsb3c6MTY3NzY5NjAseWVsbG93Z3JlZW46MTAxNDUwNzR9O2Z1bmN0aW9uIHFydCgpe3JldHVybiB0aGlzLnJnYigpLmZvcm1hdEhleCgpfWZ1bmN0aW9uIFlydCgpe3JldHVybiB0aGlzLnJnYigpLmZvcm1hdFJnYigpfWZ1bmN0aW9uIFhydCh0KXt2YXIgZSxuO3JldHVybiB0PSh0KyIiKS50cmltKCkudG9Mb3dlckNhc2UoKSwoZT1CcnQuZXhlYyh0KSk/KG49ZVsxXS5sZW5ndGgsZT1wYXJzZUludChlWzFdLDE2KSw2PT09bj8kcnQoZSk6Mz09PW4/bmV3IFFydChlPj44JjE1fGU+PjQmMjQwLGU+PjQmMTV8MjQwJmUsKDE1JmUpPDw0fDE1JmUsMSk6OD09PW4/S3J0KGU+PjI0JjI1NSxlPj4xNiYyNTUsZT4+OCYyNTUsKDI1NSZlKS8yNTUpOjQ9PT1uP0tydChlPj4xMiYxNXxlPj44JjI0MCxlPj44JjE1fGU+PjQmMjQwLGU+PjQmMTV8MjQwJmUsKCgxNSZlKTw8NHwxNSZlKS8yNTUpOm51bGwpOihlPUhydC5leGVjKHQpKT9uZXcgUXJ0KGVbMV0sZVsyXSxlWzNdLDEpOihlPUZydC5leGVjKHQpKT9uZXcgUXJ0KDI1NSplWzFdLzEwMCwyNTUqZVsyXS8xMDAsMjU1KmVbM10vMTAwLDEpOihlPVZydC5leGVjKHQpKT9LcnQoZVsxXSxlWzJdLGVbM10sZVs0XSk6KGU9anJ0LmV4ZWModCkpP0tydCgyNTUqZVsxXS8xMDAsMjU1KmVbMl0vMTAwLDI1NSplWzNdLzEwMCxlWzRdKTooZT1VcnQuZXhlYyh0KSk/aW90KGVbMV0sZVsyXS8xMDAsZVszXS8xMDAsMSk6KGU9R3J0LmV4ZWModCkpP2lvdChlWzFdLGVbMl0vMTAwLGVbM10vMTAwLGVbNF0pOldydC5oYXNPd25Qcm9wZXJ0eSh0KT8kcnQoV3J0W3RdKToidHJhbnNwYXJlbnQiPT09dD9uZXcgUXJ0KE5hTixOYU4sTmFOLDApOm51bGx9ZnVuY3Rpb24gJHJ0KHQpe3JldHVybiBuZXcgUXJ0KHQ+PjE2JjI1NSx0Pj44JjI1NSwyNTUmdCwxKX1mdW5jdGlvbiBLcnQodCxlLG4saSl7cmV0dXJuIGk8PTAmJih0PWU9bj1OYU4pLG5ldyBRcnQodCxlLG4saSl9ZnVuY3Rpb24gWnJ0KHQpe3JldHVybiB0IGluc3RhbmNlb2YgSXJ0fHwodD1YcnQodCkpLHQ/bmV3IFFydCgodD10LnJnYigpKS5yLHQuZyx0LmIsdC5vcGFjaXR5KTpuZXcgUXJ0fWZ1bmN0aW9uIEpydCh0LGUsbixpKXtyZXR1cm4gMT09PWFyZ3VtZW50cy5sZW5ndGg/WnJ0KHQpOm5ldyBRcnQodCxlLG4sbnVsbD09aT8xOmkpfWZ1bmN0aW9uIFFydCh0LGUsbixpKXt0aGlzLnI9K3QsdGhpcy5nPStlLHRoaXMuYj0rbix0aGlzLm9wYWNpdHk9K2l9ZnVuY3Rpb24gdG90KCl7cmV0dXJuIiMiK25vdCh0aGlzLnIpK25vdCh0aGlzLmcpK25vdCh0aGlzLmIpfWZ1bmN0aW9uIGVvdCgpe3ZhciB0PXRoaXMub3BhY2l0eTtyZXR1cm4oMT09PSh0PWlzTmFOKHQpPzE6TWF0aC5tYXgoMCxNYXRoLm1pbigxLHQpKSk/InJnYigiOiJyZ2JhKCIpK01hdGgubWF4KDAsTWF0aC5taW4oMjU1LE1hdGgucm91bmQodGhpcy5yKXx8MCkpKyIsICIrTWF0aC5tYXgoMCxNYXRoLm1pbigyNTUsTWF0aC5yb3VuZCh0aGlzLmcpfHwwKSkrIiwgIitNYXRoLm1heCgwLE1hdGgubWluKDI1NSxNYXRoLnJvdW5kKHRoaXMuYil8fDApKSsoMT09PXQ/IikiOiIsICIrdCsiKSIpfWZ1bmN0aW9uIG5vdCh0KXtyZXR1cm4oKHQ9TWF0aC5tYXgoMCxNYXRoLm1pbigyNTUsTWF0aC5yb3VuZCh0KXx8MCkpKTwxNj8iMCI6IiIpK3QudG9TdHJpbmcoMTYpfWZ1bmN0aW9uIGlvdCh0LGUsbixpKXtyZXR1cm4gaTw9MD90PWU9bj1OYU46bjw9MHx8bj49MT90PWU9TmFOOmU8PTAmJih0PU5hTiksbmV3IG9vdCh0LGUsbixpKX1mdW5jdGlvbiByb3QodCl7aWYodCBpbnN0YW5jZW9mIG9vdClyZXR1cm4gbmV3IG9vdCh0LmgsdC5zLHQubCx0Lm9wYWNpdHkpO2lmKHQgaW5zdGFuY2VvZiBJcnR8fCh0PVhydCh0KSksIXQpcmV0dXJuIG5ldyBvb3Q7aWYodCBpbnN0YW5jZW9mIG9vdClyZXR1cm4gdDt2YXIgZT0odD10LnJnYigpKS5yLzI1NSxuPXQuZy8yNTUsaT10LmIvMjU1LHI9TWF0aC5taW4oZSxuLGkpLG89TWF0aC5tYXgoZSxuLGkpLGE9TmFOLHM9by1yLGw9KG8rcikvMjtyZXR1cm4gcz8oYT1lPT09bz8obi1pKS9zKzYqKG48aSk6bj09PW8/KGktZSkvcysyOihlLW4pL3MrNCxzLz1sPC41P28rcjoyLW8tcixhKj02MCk6cz1sPjAmJmw8MT8wOmEsbmV3IG9vdChhLHMsbCx0Lm9wYWNpdHkpfWZ1bmN0aW9uIG9vdCh0LGUsbixpKXt0aGlzLmg9K3QsdGhpcy5zPStlLHRoaXMubD0rbix0aGlzLm9wYWNpdHk9K2l9ZnVuY3Rpb24gYW90KHQsZSxuKXtyZXR1cm4gMjU1Kih0PDYwP2UrKG4tZSkqdC82MDp0PDE4MD9uOnQ8MjQwP2UrKG4tZSkqKDI0MC10KS82MDplKX1mdW5jdGlvbiBzb3QodCl7cmV0dXJuIGZ1bmN0aW9uKCl7cmV0dXJuIHR9fWZ1bmN0aW9uIGxvdCh0LGUpe3ZhciBuPWUtdDtyZXR1cm4gbj8oZnVuY3Rpb24gaSh0LGUpe3JldHVybiBmdW5jdGlvbihuKXtyZXR1cm4gdCtuKmV9fSkodCxuKTpzb3QoaXNOYU4odCk/ZTp0KX1McnQoSXJ0LFhydCx7Y29weTpmdW5jdGlvbih0KXtyZXR1cm4gT2JqZWN0LmFzc2lnbihuZXcgdGhpcy5jb25zdHJ1Y3Rvcix0aGlzLHQpfSxkaXNwbGF5YWJsZTpmdW5jdGlvbigpe3JldHVybiB0aGlzLnJnYigpLmRpc3BsYXlhYmxlKCl9LGhleDpxcnQsZm9ybWF0SGV4OnFydCxmb3JtYXRIc2w6ZnVuY3Rpb24gY290KCl7cmV0dXJuIHJvdCh0aGlzKS5mb3JtYXRIc2woKX0sZm9ybWF0UmdiOllydCx0b1N0cmluZzpZcnR9KSxMcnQoUXJ0LEpydCxQcnQoSXJ0LHticmlnaHRlcjpmdW5jdGlvbih0KXtyZXR1cm4gdD1udWxsPT10P09ydDpNYXRoLnBvdyhPcnQsdCksbmV3IFFydCh0aGlzLnIqdCx0aGlzLmcqdCx0aGlzLmIqdCx0aGlzLm9wYWNpdHkpfSxkYXJrZXI6ZnVuY3Rpb24odCl7cmV0dXJuIHQ9bnVsbD09dD9OcnQ6TWF0aC5wb3coTnJ0LHQpLG5ldyBRcnQodGhpcy5yKnQsdGhpcy5nKnQsdGhpcy5iKnQsdGhpcy5vcGFjaXR5KX0scmdiOmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXN9LGRpc3BsYXlhYmxlOmZ1bmN0aW9uKCl7cmV0dXJuLS41PD10aGlzLnImJnRoaXMucjwyNTUuNSYmLS41PD10aGlzLmcmJnRoaXMuZzwyNTUuNSYmLS41PD10aGlzLmImJnRoaXMuYjwyNTUuNSYmMDw9dGhpcy5vcGFjaXR5JiZ0aGlzLm9wYWNpdHk8PTF9LGhleDp0b3QsZm9ybWF0SGV4OnRvdCxmb3JtYXRSZ2I6ZW90LHRvU3RyaW5nOmVvdH0pKSxMcnQob290LChmdW5jdGlvbiB1b3QodCxlLG4saSl7cmV0dXJuIDE9PT1hcmd1bWVudHMubGVuZ3RoP3JvdCh0KTpuZXcgb290KHQsZSxuLG51bGw9PWk/MTppKX0pLFBydChJcnQse2JyaWdodGVyOmZ1bmN0aW9uKHQpe3JldHVybiB0PW51bGw9PXQ/T3J0Ok1hdGgucG93KE9ydCx0KSxuZXcgb290KHRoaXMuaCx0aGlzLnMsdGhpcy5sKnQsdGhpcy5vcGFjaXR5KX0sZGFya2VyOmZ1bmN0aW9uKHQpe3JldHVybiB0PW51bGw9PXQ/TnJ0Ok1hdGgucG93KE5ydCx0KSxuZXcgb290KHRoaXMuaCx0aGlzLnMsdGhpcy5sKnQsdGhpcy5vcGFjaXR5KX0scmdiOmZ1bmN0aW9uKCl7dmFyIHQ9dGhpcy5oJTM2MCszNjAqKHRoaXMuaDwwKSxlPWlzTmFOKHQpfHxpc05hTih0aGlzLnMpPzA6dGhpcy5zLG49dGhpcy5sLGk9bisobjwuNT9uOjEtbikqZSxyPTIqbi1pO3JldHVybiBuZXcgUXJ0KGFvdCh0Pj0yNDA/dC0yNDA6dCsxMjAscixpKSxhb3QodCxyLGkpLGFvdCh0PDEyMD90KzI0MDp0LTEyMCxyLGkpLHRoaXMub3BhY2l0eSl9LGRpc3BsYXlhYmxlOmZ1bmN0aW9uKCl7cmV0dXJuKDA8PXRoaXMucyYmdGhpcy5zPD0xfHxpc05hTih0aGlzLnMpKSYmMDw9dGhpcy5sJiZ0aGlzLmw8PTEmJjA8PXRoaXMub3BhY2l0eSYmdGhpcy5vcGFjaXR5PD0xfSxmb3JtYXRIc2w6ZnVuY3Rpb24oKXt2YXIgdD10aGlzLm9wYWNpdHk7cmV0dXJuKDE9PT0odD1pc05hTih0KT8xOk1hdGgubWF4KDAsTWF0aC5taW4oMSx0KSkpPyJoc2woIjoiaHNsYSgiKSsodGhpcy5ofHwwKSsiLCAiKzEwMCoodGhpcy5zfHwwKSsiJSwgIisxMDAqKHRoaXMubHx8MCkrIiUiKygxPT09dD8iKSI6IiwgIit0KyIpIil9fSkpO3ZhciBob3Q9KGZ1bmN0aW9uIHQoZSl7dmFyIG49KGZ1bmN0aW9uIGkodCl7cmV0dXJuIDE9PSh0PSt0KT9sb3Q6ZnVuY3Rpb24oZSxuKXtyZXR1cm4gbi1lPyhmdW5jdGlvbiBpKHQsZSxuKXtyZXR1cm4gdD1NYXRoLnBvdyh0LG4pLGU9TWF0aC5wb3coZSxuKS10LG49MS9uLGZ1bmN0aW9uKGkpe3JldHVybiBNYXRoLnBvdyh0K2kqZSxuKX19KShlLG4sdCk6c290KGlzTmFOKGUpP246ZSl9fSkoZSk7ZnVuY3Rpb24gcih0LGUpe3ZhciBpPW4oKHQ9SnJ0KHQpKS5yLChlPUpydChlKSkucikscj1uKHQuZyxlLmcpLG89bih0LmIsZS5iKSxhPWxvdCh0Lm9wYWNpdHksZS5vcGFjaXR5KTtyZXR1cm4gZnVuY3Rpb24oZSl7cmV0dXJuIHQucj1pKGUpLHQuZz1yKGUpLHQuYj1vKGUpLHQub3BhY2l0eT1hKGUpLHQrIiJ9fXJldHVybiByLmdhbW1hPXQscn0pKDEpO2Z1bmN0aW9uIGRvdCh0LGUpe3JldHVybiB0PSt0LGU9K2UsZnVuY3Rpb24obil7cmV0dXJuIHQqKDEtbikrZSpufX12YXIgcG90PS9bLStdPyg/OlxkK1wuP1xkKnxcLj9cZCspKD86W2VFXVstK10/XGQrKT8vZyxmb3Q9bmV3IFJlZ0V4cChwb3Quc291cmNlLCJnIik7ZnVuY3Rpb24gbW90KHQsZSl7dmFyIG4saSxyLG89cG90Lmxhc3RJbmRleD1mb3QubGFzdEluZGV4PTAsYT0tMSxzPVtdLGw9W107Zm9yKHQrPSIiLGUrPSIiOyhuPXBvdC5leGVjKHQpKSYmKGk9Zm90LmV4ZWMoZSkpOykocj1pLmluZGV4KT5vJiYocj1lLnNsaWNlKG8sciksc1thXT9zW2FdKz1yOnNbKythXT1yKSwobj1uWzBdKT09PShpPWlbMF0pP3NbYV0/c1thXSs9aTpzWysrYV09aTooc1srK2FdPW51bGwsbC5wdXNoKHtpOmEseDpkb3QobixpKX0pKSxvPWZvdC5sYXN0SW5kZXg7cmV0dXJuIG88ZS5sZW5ndGgmJihyPWUuc2xpY2Uobyksc1thXT9zW2FdKz1yOnNbKythXT1yKSxzLmxlbmd0aDwyP2xbMF0/KGZ1bmN0aW9uIGModCl7cmV0dXJuIGZ1bmN0aW9uKGUpe3JldHVybiB0KGUpKyIifX0pKGxbMF0ueCk6KGZ1bmN0aW9uIHUodCl7cmV0dXJuIGZ1bmN0aW9uKCl7cmV0dXJuIHR9fSkoZSk6KGU9bC5sZW5ndGgsZnVuY3Rpb24odCl7Zm9yKHZhciBuLGk9MDtpPGU7KytpKXNbKG49bFtpXSkuaV09bi54KHQpO3JldHVybiBzLmpvaW4oIiIpfSl9dmFyIGdvdCxfb3QseW90LHZvdCxib3Q9MTgwL01hdGguUEkseG90PXt0cmFuc2xhdGVYOjAsdHJhbnNsYXRlWTowLHJvdGF0ZTowLHNrZXdYOjAsc2NhbGVYOjEsc2NhbGVZOjF9O2Z1bmN0aW9uIHdvdCh0LGUsbixpLHIsbyl7dmFyIGEscyxsO3JldHVybihhPU1hdGguc3FydCh0KnQrZSplKSkmJih0Lz1hLGUvPWEpLChsPXQqbitlKmkpJiYobi09dCpsLGktPWUqbCksKHM9TWF0aC5zcXJ0KG4qbitpKmkpKSYmKG4vPXMsaS89cyxsLz1zKSx0Kmk8ZSpuJiYodD0tdCxlPS1lLGw9LWwsYT0tYSkse3RyYW5zbGF0ZVg6cix0cmFuc2xhdGVZOm8scm90YXRlOk1hdGguYXRhbjIoZSx0KSpib3Qsc2tld1g6TWF0aC5hdGFuKGwpKmJvdCxzY2FsZVg6YSxzY2FsZVk6c319ZnVuY3Rpb24gU290KHQsZSxuLGkpe2Z1bmN0aW9uIHIodCl7cmV0dXJuIHQubGVuZ3RoP3QucG9wKCkrIiAiOiIifXJldHVybiBmdW5jdGlvbihvLGEpe3ZhciBzPVtdLGw9W107cmV0dXJuIG89dChvKSxhPXQoYSksKGZ1bmN0aW9uIGModCxpLHIsbyxhLHMpe2lmKHQhPT1yfHxpIT09byl7dmFyIGw9YS5wdXNoKCJ0cmFuc2xhdGUoIixudWxsLGUsbnVsbCxuKTtzLnB1c2goe2k6bC00LHg6ZG90KHQscil9LHtpOmwtMix4OmRvdChpLG8pfSl9ZWxzZShyfHxvKSYmYS5wdXNoKCJ0cmFuc2xhdGUoIityK2UrbytuKX0pKG8udHJhbnNsYXRlWCxvLnRyYW5zbGF0ZVksYS50cmFuc2xhdGVYLGEudHJhbnNsYXRlWSxzLGwpLChmdW5jdGlvbiB1KHQsZSxuLG8pe3QhPT1lPyh0LWU+MTgwP2UrPTM2MDplLXQ+MTgwJiYodCs9MzYwKSxvLnB1c2goe2k6bi5wdXNoKHIobikrInJvdGF0ZSgiLG51bGwsaSktMix4OmRvdCh0LGUpfSkpOmUmJm4ucHVzaChyKG4pKyJyb3RhdGUoIitlK2kpfSkoby5yb3RhdGUsYS5yb3RhdGUscyxsKSwoZnVuY3Rpb24gaCh0LGUsbixvKXt0IT09ZT9vLnB1c2goe2k6bi5wdXNoKHIobikrInNrZXdYKCIsbnVsbCxpKS0yLHg6ZG90KHQsZSl9KTplJiZuLnB1c2gocihuKSsic2tld1goIitlK2kpfSkoby5za2V3WCxhLnNrZXdYLHMsbCksKGZ1bmN0aW9uIGQodCxlLG4saSxvLGEpe2lmKHQhPT1ufHxlIT09aSl7dmFyIHM9by5wdXNoKHIobykrInNjYWxlKCIsbnVsbCwiLCIsbnVsbCwiKSIpO2EucHVzaCh7aTpzLTQseDpkb3QodCxuKX0se2k6cy0yLHg6ZG90KGUsaSl9KX1lbHNlIDE9PT1uJiYxPT09aXx8by5wdXNoKHIobykrInNjYWxlKCIrbisiLCIraSsiKSIpfSkoby5zY2FsZVgsby5zY2FsZVksYS5zY2FsZVgsYS5zY2FsZVkscyxsKSxvPWE9bnVsbCxmdW5jdGlvbih0KXtmb3IodmFyIGUsbj0tMSxpPWwubGVuZ3RoOysrbjxpOylzWyhlPWxbbl0pLmldPWUueCh0KTtyZXR1cm4gcy5qb2luKCIiKX19fXZhciBNb3Q9U290KChmdW5jdGlvbiBFb3QodCl7cmV0dXJuIm5vbmUiPT09dD94b3Q6KGdvdHx8KGdvdD1kb2N1bWVudC5jcmVhdGVFbGVtZW50KCJESVYiKSxfb3Q9ZG9jdW1lbnQuZG9jdW1lbnRFbGVtZW50LHlvdD1kb2N1bWVudC5kZWZhdWx0VmlldyksZ290LnN0eWxlLnRyYW5zZm9ybT10LHQ9eW90LmdldENvbXB1dGVkU3R5bGUoX290LmFwcGVuZENoaWxkKGdvdCksbnVsbCkuZ2V0UHJvcGVydHlWYWx1ZSgidHJhbnNmb3JtIiksX290LnJlbW92ZUNoaWxkKGdvdCksd290KCsodD10LnNsaWNlKDcsLTEpLnNwbGl0KCIsIikpWzBdLCt0WzFdLCt0WzJdLCt0WzNdLCt0WzRdLCt0WzVdKSl9KSwicHgsICIsInB4KSIsImRlZykiKSxUb3Q9U290KChmdW5jdGlvbiBBb3QodCl7cmV0dXJuIG51bGw9PXQ/eG90Oih2b3R8fCh2b3Q9ZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIsImciKSksdm90LnNldEF0dHJpYnV0ZSgidHJhbnNmb3JtIix0KSwodD12b3QudHJhbnNmb3JtLmJhc2VWYWwuY29uc29saWRhdGUoKSk/d290KCh0PXQubWF0cml4KS5hLHQuYix0LmMsdC5kLHQuZSx0LmYpOnhvdCl9KSwiLCAiLCIpIiwiKSIpO2Z1bmN0aW9uIENvdCh0LGUpe3ZhciBuLGk7cmV0dXJuIGZ1bmN0aW9uKCl7dmFyIHI9QXJ0KHRoaXMsdCksbz1yLnR3ZWVuO2lmKG8hPT1uKWZvcih2YXIgYT0wLHM9KGk9bj1vKS5sZW5ndGg7YTxzOysrYSlpZihpW2FdLm5hbWU9PT1lKXsoaT1pLnNsaWNlKCkpLnNwbGljZShhLDEpO2JyZWFrfXIudHdlZW49aX19ZnVuY3Rpb24ga290KHQsZSxuKXt2YXIgaSxyO2lmKCJmdW5jdGlvbiIhPXR5cGVvZiBuKXRocm93IG5ldyBFcnJvcjtyZXR1cm4gZnVuY3Rpb24oKXt2YXIgbz1BcnQodGhpcyx0KSxhPW8udHdlZW47aWYoYSE9PWkpe3I9KGk9YSkuc2xpY2UoKTtmb3IodmFyIHM9e25hbWU6ZSx2YWx1ZTpufSxsPTAsYz1yLmxlbmd0aDtsPGM7KytsKWlmKHJbbF0ubmFtZT09PWUpe3JbbF09czticmVha31sPT09YyYmci5wdXNoKHMpfW8udHdlZW49cn19ZnVuY3Rpb24gTG90KHQsZSxuKXt2YXIgaT10Ll9pZDtyZXR1cm4gdC5lYWNoKChmdW5jdGlvbigpe3ZhciB0PUFydCh0aGlzLGkpOyh0LnZhbHVlfHwodC52YWx1ZT17fSkpW2VdPW4uYXBwbHkodGhpcyxhcmd1bWVudHMpfSkpLGZ1bmN0aW9uKHQpe3JldHVybiBDcnQodCxpKS52YWx1ZVtlXX19ZnVuY3Rpb24gUG90KHQsZSl7dmFyIG47cmV0dXJuKCJudW1iZXIiPT10eXBlb2YgZT9kb3Q6ZSBpbnN0YW5jZW9mIFhydD9ob3Q6KG49WHJ0KGUpKT8oZT1uLGhvdCk6bW90KSh0LGUpfWZ1bmN0aW9uIElvdCh0KXtyZXR1cm4gZnVuY3Rpb24oKXt0aGlzLnJlbW92ZUF0dHJpYnV0ZSh0KX19ZnVuY3Rpb24gTm90KHQpe3JldHVybiBmdW5jdGlvbigpe3RoaXMucmVtb3ZlQXR0cmlidXRlTlModC5zcGFjZSx0LmxvY2FsKX19ZnVuY3Rpb24gT290KHQsZSxuKXt2YXIgaSxyO3JldHVybiBmdW5jdGlvbigpe3ZhciBvPXRoaXMuZ2V0QXR0cmlidXRlKHQpO3JldHVybiBvPT09bj9udWxsOm89PT1pP3I6cj1lKGk9byxuKX19ZnVuY3Rpb24gUm90KHQsZSxuKXt2YXIgaSxyO3JldHVybiBmdW5jdGlvbigpe3ZhciBvPXRoaXMuZ2V0QXR0cmlidXRlTlModC5zcGFjZSx0LmxvY2FsKTtyZXR1cm4gbz09PW4/bnVsbDpvPT09aT9yOnI9ZShpPW8sbil9fWZ1bmN0aW9uIHpvdCh0LGUsbil7dmFyIGkscixvO3JldHVybiBmdW5jdGlvbigpe3ZhciBhLHM9bih0aGlzKTtpZihudWxsIT1zKXJldHVybihhPXRoaXMuZ2V0QXR0cmlidXRlKHQpKT09PXM/bnVsbDphPT09aSYmcz09PXI/bzpvPWUoaT1hLHI9cyk7dGhpcy5yZW1vdmVBdHRyaWJ1dGUodCl9fWZ1bmN0aW9uIERvdCh0LGUsbil7dmFyIGkscixvO3JldHVybiBmdW5jdGlvbigpe3ZhciBhLHM9bih0aGlzKTtpZihudWxsIT1zKXJldHVybihhPXRoaXMuZ2V0QXR0cmlidXRlTlModC5zcGFjZSx0LmxvY2FsKSk9PT1zP251bGw6YT09PWkmJnM9PT1yP286bz1lKGk9YSxyPXMpO3RoaXMucmVtb3ZlQXR0cmlidXRlTlModC5zcGFjZSx0LmxvY2FsKX19ZnVuY3Rpb24gQm90KHQsZSl7ZnVuY3Rpb24gbigpe3ZhciBuPXRoaXMsaT1lLmFwcGx5KG4sYXJndW1lbnRzKTtyZXR1cm4gaSYmZnVuY3Rpb24oZSl7bi5zZXRBdHRyaWJ1dGVOUyh0LnNwYWNlLHQubG9jYWwsaShlKSl9fXJldHVybiBuLl92YWx1ZT1lLG59ZnVuY3Rpb24gSG90KHQsZSl7ZnVuY3Rpb24gbigpe3ZhciBuPXRoaXMsaT1lLmFwcGx5KG4sYXJndW1lbnRzKTtyZXR1cm4gaSYmZnVuY3Rpb24oZSl7bi5zZXRBdHRyaWJ1dGUodCxpKGUpKX19cmV0dXJuIG4uX3ZhbHVlPWUsbn1mdW5jdGlvbiBGb3QodCxlKXtyZXR1cm4gZnVuY3Rpb24oKXtUcnQodGhpcyx0KS5kZWxheT0rZS5hcHBseSh0aGlzLGFyZ3VtZW50cyl9fWZ1bmN0aW9uIFZvdCh0LGUpe3JldHVybiBlPStlLGZ1bmN0aW9uKCl7VHJ0KHRoaXMsdCkuZGVsYXk9ZX19ZnVuY3Rpb24gam90KHQsZSl7cmV0dXJuIGZ1bmN0aW9uKCl7QXJ0KHRoaXMsdCkuZHVyYXRpb249K2UuYXBwbHkodGhpcyxhcmd1bWVudHMpfX1mdW5jdGlvbiBVb3QodCxlKXtyZXR1cm4gZT0rZSxmdW5jdGlvbigpe0FydCh0aGlzLHQpLmR1cmF0aW9uPWV9fWZ1bmN0aW9uIEdvdCh0LGUpe2lmKCJmdW5jdGlvbiIhPXR5cGVvZiBlKXRocm93IG5ldyBFcnJvcjtyZXR1cm4gZnVuY3Rpb24oKXtBcnQodGhpcyx0KS5lYXNlPWV9fWZ1bmN0aW9uIFdvdCh0LGUsbil7dmFyIGkscixvPShmdW5jdGlvbiBhKHQpe3JldHVybih0KyIiKS50cmltKCkuc3BsaXQoL158XHMrLykuZXZlcnkoKGZ1bmN0aW9uKHQpe3ZhciBlPXQuaW5kZXhPZigiLiIpO3JldHVybiBlPj0wJiYodD10LnNsaWNlKDAsZSkpLCF0fHwic3RhcnQiPT09dH0pKX0pKGUpP1RydDpBcnQ7cmV0dXJuIGZ1bmN0aW9uKCl7dmFyIGE9byh0aGlzLHQpLHM9YS5vbjtzIT09aSYmKHI9KGk9cykuY29weSgpKS5vbihlLG4pLGEub249cn19dmFyIHFvdD14aXQucHJvdG90eXBlLmNvbnN0cnVjdG9yO2Z1bmN0aW9uIFlvdCh0LGUsbil7ZnVuY3Rpb24gaSgpe3ZhciBpPXRoaXMscj1lLmFwcGx5KGksYXJndW1lbnRzKTtyZXR1cm4gciYmZnVuY3Rpb24oZSl7aS5zdHlsZS5zZXRQcm9wZXJ0eSh0LHIoZSksbil9fXJldHVybiBpLl92YWx1ZT1lLGl9dmFyIFhvdD0wO2Z1bmN0aW9uICRvdCh0LGUsbixpKXt0aGlzLl9ncm91cHM9dCx0aGlzLl9wYXJlbnRzPWUsdGhpcy5fbmFtZT1uLHRoaXMuX2lkPWl9ZnVuY3Rpb24gS290KHQpe3JldHVybiB4aXQoKS50cmFuc2l0aW9uKHQpfWZ1bmN0aW9uIFpvdCgpe3JldHVybisrWG90fXZhciBKb3Q9eGl0LnByb3RvdHlwZTskb3QucHJvdG90eXBlPUtvdC5wcm90b3R5cGU9e2NvbnN0cnVjdG9yOiRvdCxzZWxlY3Q6ZnVuY3Rpb24gUW90KHQpe3ZhciBlPXRoaXMuX25hbWUsbj10aGlzLl9pZDsiZnVuY3Rpb24iIT10eXBlb2YgdCYmKHQ9eG50KHQpKTtmb3IodmFyIGk9dGhpcy5fZ3JvdXBzLHI9aS5sZW5ndGgsbz1uZXcgQXJyYXkociksYT0wO2E8cjsrK2EpZm9yKHZhciBzLGwsYz1pW2FdLHU9Yy5sZW5ndGgsaD1vW2FdPW5ldyBBcnJheSh1KSxkPTA7ZDx1OysrZCkocz1jW2RdKSYmKGw9dC5jYWxsKHMscy5fX2RhdGFfXyxkLGMpKSYmKCJfX2RhdGFfXyJpbiBzJiYobC5fX2RhdGFfXz1zLl9fZGF0YV9fKSxoW2RdPWwsRXJ0KGhbZF0sZSxuLGQsaCxDcnQocyxuKSkpO3JldHVybiBuZXcgJG90KG8sdGhpcy5fcGFyZW50cyxlLG4pfSxzZWxlY3RBbGw6ZnVuY3Rpb24gdGF0KHQpe3ZhciBlPXRoaXMuX25hbWUsbj10aGlzLl9pZDsiZnVuY3Rpb24iIT10eXBlb2YgdCYmKHQ9U250KHQpKTtmb3IodmFyIGk9dGhpcy5fZ3JvdXBzLHI9aS5sZW5ndGgsbz1bXSxhPVtdLHM9MDtzPHI7KytzKWZvcih2YXIgbCxjPWlbc10sdT1jLmxlbmd0aCxoPTA7aDx1OysraClpZihsPWNbaF0pe2Zvcih2YXIgZCxwPXQuY2FsbChsLGwuX19kYXRhX18saCxjKSxmPUNydChsLG4pLG09MCxnPXAubGVuZ3RoO208ZzsrK20pKGQ9cFttXSkmJkVydChkLGUsbixtLHAsZik7by5wdXNoKHApLGEucHVzaChsKX1yZXR1cm4gbmV3ICRvdChvLGEsZSxuKX0sZmlsdGVyOmZ1bmN0aW9uIGVhdCh0KXsiZnVuY3Rpb24iIT10eXBlb2YgdCYmKHQ9TW50KHQpKTtmb3IodmFyIGU9dGhpcy5fZ3JvdXBzLG49ZS5sZW5ndGgsaT1uZXcgQXJyYXkobikscj0wO3I8bjsrK3IpZm9yKHZhciBvLGE9ZVtyXSxzPWEubGVuZ3RoLGw9aVtyXT1bXSxjPTA7YzxzOysrYykobz1hW2NdKSYmdC5jYWxsKG8sby5fX2RhdGFfXyxjLGEpJiZsLnB1c2gobyk7cmV0dXJuIG5ldyAkb3QoaSx0aGlzLl9wYXJlbnRzLHRoaXMuX25hbWUsdGhpcy5faWQpfSxtZXJnZTpmdW5jdGlvbiBuYXQodCl7aWYodC5faWQhPT10aGlzLl9pZCl0aHJvdyBuZXcgRXJyb3I7Zm9yKHZhciBlPXRoaXMuX2dyb3VwcyxuPXQuX2dyb3VwcyxpPWUubGVuZ3RoLHI9TWF0aC5taW4oaSxuLmxlbmd0aCksbz1uZXcgQXJyYXkoaSksYT0wO2E8cjsrK2EpZm9yKHZhciBzLGw9ZVthXSxjPW5bYV0sdT1sLmxlbmd0aCxoPW9bYV09bmV3IEFycmF5KHUpLGQ9MDtkPHU7KytkKShzPWxbZF18fGNbZF0pJiYoaFtkXT1zKTtmb3IoO2E8aTsrK2Epb1thXT1lW2FdO3JldHVybiBuZXcgJG90KG8sdGhpcy5fcGFyZW50cyx0aGlzLl9uYW1lLHRoaXMuX2lkKX0sc2VsZWN0aW9uOmZ1bmN0aW9uIGlhdCgpe3JldHVybiBuZXcgcW90KHRoaXMuX2dyb3Vwcyx0aGlzLl9wYXJlbnRzKX0sdHJhbnNpdGlvbjpmdW5jdGlvbiByYXQoKXtmb3IodmFyIHQ9dGhpcy5fbmFtZSxlPXRoaXMuX2lkLG49Wm90KCksaT10aGlzLl9ncm91cHMscj1pLmxlbmd0aCxvPTA7bzxyOysrbylmb3IodmFyIGEscz1pW29dLGw9cy5sZW5ndGgsYz0wO2M8bDsrK2MpaWYoYT1zW2NdKXt2YXIgdT1DcnQoYSxlKTtFcnQoYSx0LG4sYyxzLHt0aW1lOnUudGltZSt1LmRlbGF5K3UuZHVyYXRpb24sZGVsYXk6MCxkdXJhdGlvbjp1LmR1cmF0aW9uLGVhc2U6dS5lYXNlfSl9cmV0dXJuIG5ldyAkb3QoaSx0aGlzLl9wYXJlbnRzLHQsbil9LGNhbGw6Sm90LmNhbGwsbm9kZXM6Sm90Lm5vZGVzLG5vZGU6Sm90Lm5vZGUsc2l6ZTpKb3Quc2l6ZSxlbXB0eTpKb3QuZW1wdHksZWFjaDpKb3QuZWFjaCxvbjpmdW5jdGlvbiBvYXQodCxlKXt2YXIgbj10aGlzLl9pZDtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aDwyP0NydCh0aGlzLm5vZGUoKSxuKS5vbi5vbih0KTp0aGlzLmVhY2goV290KG4sdCxlKSl9LGF0dHI6ZnVuY3Rpb24gYWF0KHQsZSl7dmFyIG49Z250KHQpLGk9InRyYW5zZm9ybSI9PT1uP1RvdDpQb3Q7cmV0dXJuIHRoaXMuYXR0clR3ZWVuKHQsImZ1bmN0aW9uIj09dHlwZW9mIGU/KG4ubG9jYWw/RG90OnpvdCkobixpLExvdCh0aGlzLCJhdHRyLiIrdCxlKSk6bnVsbD09ZT8obi5sb2NhbD9Ob3Q6SW90KShuKToobi5sb2NhbD9Sb3Q6T290KShuLGksZSsiIikpfSxhdHRyVHdlZW46ZnVuY3Rpb24gc2F0KHQsZSl7dmFyIG49ImF0dHIuIit0O2lmKGFyZ3VtZW50cy5sZW5ndGg8MilyZXR1cm4obj10aGlzLnR3ZWVuKG4pKSYmbi5fdmFsdWU7aWYobnVsbD09ZSlyZXR1cm4gdGhpcy50d2VlbihuLG51bGwpO2lmKCJmdW5jdGlvbiIhPXR5cGVvZiBlKXRocm93IG5ldyBFcnJvcjt2YXIgaT1nbnQodCk7cmV0dXJuIHRoaXMudHdlZW4obiwoaS5sb2NhbD9Cb3Q6SG90KShpLGUpKX0sc3R5bGU6ZnVuY3Rpb24gbGF0KHQsZSxuKXt2YXIgaT0idHJhbnNmb3JtIj09KHQrPSIiKT9Nb3Q6UG90O3JldHVybiBudWxsPT1lP3RoaXMuc3R5bGVUd2Vlbih0LChmdW5jdGlvbiBvKHQsZSl7dmFyIG4saSxyO3JldHVybiBmdW5jdGlvbigpe3ZhciBvPUZudCh0aGlzLHQpLGE9KHRoaXMuc3R5bGUucmVtb3ZlUHJvcGVydHkodCksRm50KHRoaXMsdCkpO3JldHVybiBvPT09YT9udWxsOm89PT1uJiZhPT09aT9yOnI9ZShuPW8saT1hKX19KSh0LGkpKS5vbigiZW5kLnN0eWxlLiIrdCwoZnVuY3Rpb24gcih0KXtyZXR1cm4gZnVuY3Rpb24oKXt0aGlzLnN0eWxlLnJlbW92ZVByb3BlcnR5KHQpfX0pKHQpKTp0aGlzLnN0eWxlVHdlZW4odCwiZnVuY3Rpb24iPT10eXBlb2YgZT8oZnVuY3Rpb24gYSh0LGUsbil7dmFyIGkscixvO3JldHVybiBmdW5jdGlvbigpe3ZhciBhPUZudCh0aGlzLHQpLHM9bih0aGlzKTtyZXR1cm4gbnVsbD09cyYmKHRoaXMuc3R5bGUucmVtb3ZlUHJvcGVydHkodCkscz1GbnQodGhpcyx0KSksYT09PXM/bnVsbDphPT09aSYmcz09PXI/bzpvPWUoaT1hLHI9cyl9fSkodCxpLExvdCh0aGlzLCJzdHlsZS4iK3QsZSkpOihmdW5jdGlvbiBzKHQsZSxuKXt2YXIgaSxyO3JldHVybiBmdW5jdGlvbigpe3ZhciBvPUZudCh0aGlzLHQpO3JldHVybiBvPT09bj9udWxsOm89PT1pP3I6cj1lKGk9byxuKX19KSh0LGksZSsiIiksbil9LHN0eWxlVHdlZW46ZnVuY3Rpb24gY2F0KHQsZSxuKXt2YXIgaT0ic3R5bGUuIisodCs9IiIpO2lmKGFyZ3VtZW50cy5sZW5ndGg8MilyZXR1cm4oaT10aGlzLnR3ZWVuKGkpKSYmaS5fdmFsdWU7aWYobnVsbD09ZSlyZXR1cm4gdGhpcy50d2VlbihpLG51bGwpO2lmKCJmdW5jdGlvbiIhPXR5cGVvZiBlKXRocm93IG5ldyBFcnJvcjtyZXR1cm4gdGhpcy50d2VlbihpLFlvdCh0LGUsbnVsbD09bj8iIjpuKSl9LHRleHQ6ZnVuY3Rpb24gdWF0KHQpe3JldHVybiB0aGlzLnR3ZWVuKCJ0ZXh0IiwiZnVuY3Rpb24iPT10eXBlb2YgdD8oZnVuY3Rpb24gZSh0KXtyZXR1cm4gZnVuY3Rpb24oKXt2YXIgZT10KHRoaXMpO3RoaXMudGV4dENvbnRlbnQ9bnVsbD09ZT8iIjplfX0pKExvdCh0aGlzLCJ0ZXh0Iix0KSk6KGZ1bmN0aW9uIG4odCl7cmV0dXJuIGZ1bmN0aW9uKCl7dGhpcy50ZXh0Q29udGVudD10fX0pKG51bGw9PXQ/IiI6dCsiIikpfSxyZW1vdmU6ZnVuY3Rpb24gaGF0KCl7cmV0dXJuIHRoaXMub24oImVuZC5yZW1vdmUiLChmdW5jdGlvbiB0KGUpe3JldHVybiBmdW5jdGlvbigpe3ZhciB0PXRoaXMucGFyZW50Tm9kZTtmb3IodmFyIG4gaW4gdGhpcy5fX3RyYW5zaXRpb24paWYoK24hPT1lKXJldHVybjt0JiZ0LnJlbW92ZUNoaWxkKHRoaXMpfX0pKHRoaXMuX2lkKSl9LHR3ZWVuOmZ1bmN0aW9uIGRhdCh0LGUpe3ZhciBuPXRoaXMuX2lkO2lmKHQrPSIiLGFyZ3VtZW50cy5sZW5ndGg8Mil7Zm9yKHZhciBpLHI9Q3J0KHRoaXMubm9kZSgpLG4pLnR3ZWVuLG89MCxhPXIubGVuZ3RoO288YTsrK28paWYoKGk9cltvXSkubmFtZT09PXQpcmV0dXJuIGkudmFsdWU7cmV0dXJuIG51bGx9cmV0dXJuIHRoaXMuZWFjaCgobnVsbD09ZT9Db3Q6a290KShuLHQsZSkpfSxkZWxheTpmdW5jdGlvbiBwYXQodCl7dmFyIGU9dGhpcy5faWQ7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/dGhpcy5lYWNoKCgiZnVuY3Rpb24iPT10eXBlb2YgdD9Gb3Q6Vm90KShlLHQpKTpDcnQodGhpcy5ub2RlKCksZSkuZGVsYXl9LGR1cmF0aW9uOmZ1bmN0aW9uIGZhdCh0KXt2YXIgZT10aGlzLl9pZDtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD90aGlzLmVhY2goKCJmdW5jdGlvbiI9PXR5cGVvZiB0P2pvdDpVb3QpKGUsdCkpOkNydCh0aGlzLm5vZGUoKSxlKS5kdXJhdGlvbn0sZWFzZTpmdW5jdGlvbiBtYXQodCl7dmFyIGU9dGhpcy5faWQ7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/dGhpcy5lYWNoKEdvdChlLHQpKTpDcnQodGhpcy5ub2RlKCksZSkuZWFzZX19O3ZhciBnYXQ9e3RpbWU6bnVsbCxkZWxheTowLGR1cmF0aW9uOjI1MCxlYXNlOlRmfTtmdW5jdGlvbiBfYXQodCxlKXtmb3IodmFyIG47IShuPXQuX190cmFuc2l0aW9uKXx8IShuPW5bZV0pOylpZighKHQ9dC5wYXJlbnROb2RlKSlyZXR1cm4gZ2F0LnRpbWU9bXJ0KCksZ2F0O3JldHVybiBufXhpdC5wcm90b3R5cGUuaW50ZXJydXB0PWZ1bmN0aW9uIHlhdCh0KXtyZXR1cm4gdGhpcy5lYWNoKChmdW5jdGlvbigpe2tydCh0aGlzLHQpfSkpfSx4aXQucHJvdG90eXBlLnRyYW5zaXRpb249ZnVuY3Rpb24gdmF0KHQpe3ZhciBlLG47dCBpbnN0YW5jZW9mICRvdD8oZT10Ll9pZCx0PXQuX25hbWUpOihlPVpvdCgpLChuPWdhdCkudGltZT1tcnQoKSx0PW51bGw9PXQ/bnVsbDp0KyIiKTtmb3IodmFyIGk9dGhpcy5fZ3JvdXBzLHI9aS5sZW5ndGgsbz0wO288cjsrK28pZm9yKHZhciBhLHM9aVtvXSxsPXMubGVuZ3RoLGM9MDtjPGw7KytjKShhPXNbY10pJiZFcnQoYSx0LGUsYyxzLG58fF9hdChhLGUpKTtyZXR1cm4gbmV3ICRvdChpLHRoaXMuX3BhcmVudHMsdCxlKX07dmFyIGJhdD1bbnVsbF07ZnVuY3Rpb24geGF0KHQpe3JldHVybiBmdW5jdGlvbigpe3JldHVybiB0fX1mdW5jdGlvbiB3YXQodCl7cmV0dXJuIHRbMF19ZnVuY3Rpb24gU2F0KHQpe3JldHVybiB0WzFdfWZ1bmN0aW9uIE1hdCgpe3RoaXMuXz1udWxsfWZ1bmN0aW9uIEVhdCh0KXt0LlU9dC5DPXQuTD10LlI9dC5QPXQuTj1udWxsfWZ1bmN0aW9uIFRhdCh0LGUpe3ZhciBuPWUsaT1lLlIscj1uLlU7cj9yLkw9PT1uP3IuTD1pOnIuUj1pOnQuXz1pLGkuVT1yLG4uVT1pLG4uUj1pLkwsbi5SJiYobi5SLlU9biksaS5MPW59ZnVuY3Rpb24gQWF0KHQsZSl7dmFyIG49ZSxpPWUuTCxyPW4uVTtyP3IuTD09PW4/ci5MPWk6ci5SPWk6dC5fPWksaS5VPXIsbi5VPWksbi5MPWkuUixuLkwmJihuLkwuVT1uKSxpLlI9bn1mdW5jdGlvbiBDYXQodCl7Zm9yKDt0Lkw7KXQ9dC5MO3JldHVybiB0fWZ1bmN0aW9uIGthdCh0LGUsbixpKXt2YXIgcj1bbnVsbCxudWxsXSxvPVFhdC5wdXNoKHIpLTE7cmV0dXJuIHIubGVmdD10LHIucmlnaHQ9ZSxuJiZQYXQocix0LGUsbiksaSYmUGF0KHIsZSx0LGkpLFphdFt0LmluZGV4XS5oYWxmZWRnZXMucHVzaChvKSxaYXRbZS5pbmRleF0uaGFsZmVkZ2VzLnB1c2gobykscn1mdW5jdGlvbiBMYXQodCxlLG4pe3ZhciBpPVtlLG5dO3JldHVybiBpLmxlZnQ9dCxpfWZ1bmN0aW9uIFBhdCh0LGUsbixpKXt0WzBdfHx0WzFdP3QubGVmdD09PW4/dFsxXT1pOnRbMF09aToodFswXT1pLHQubGVmdD1lLHQucmlnaHQ9bil9ZnVuY3Rpb24gSWF0KHQsZSxuLGkscil7dmFyIG8sYT10WzBdLHM9dFsxXSxsPWFbMF0sYz1hWzFdLHU9MCxoPTEsZD1zWzBdLWwscD1zWzFdLWM7aWYobz1lLWwsZHx8IShvPjApKXtpZihvLz1kLGQ8MCl7aWYobzx1KXJldHVybjtvPGgmJihoPW8pfWVsc2UgaWYoZD4wKXtpZihvPmgpcmV0dXJuO28+dSYmKHU9byl9aWYobz1pLWwsZHx8IShvPDApKXtpZihvLz1kLGQ8MCl7aWYobz5oKXJldHVybjtvPnUmJih1PW8pfWVsc2UgaWYoZD4wKXtpZihvPHUpcmV0dXJuO288aCYmKGg9byl9aWYobz1uLWMscHx8IShvPjApKXtpZihvLz1wLHA8MCl7aWYobzx1KXJldHVybjtvPGgmJihoPW8pfWVsc2UgaWYocD4wKXtpZihvPmgpcmV0dXJuO28+dSYmKHU9byl9aWYobz1yLWMscHx8IShvPDApKXtpZihvLz1wLHA8MCl7aWYobz5oKXJldHVybjtvPnUmJih1PW8pfWVsc2UgaWYocD4wKXtpZihvPHUpcmV0dXJuO288aCYmKGg9byl9cmV0dXJuISh1PjB8fGg8MSl8fCh1PjAmJih0WzBdPVtsK3UqZCxjK3UqcF0pLGg8MSYmKHRbMV09W2wraCpkLGMraCpwXSksITApfX19fX1mdW5jdGlvbiBOYXQodCxlLG4saSxyKXt2YXIgbz10WzFdO2lmKG8pcmV0dXJuITA7dmFyIGEscyxsPXRbMF0sYz10LmxlZnQsdT10LnJpZ2h0LGg9Y1swXSxkPWNbMV0scD11WzBdLGY9dVsxXSxtPShoK3ApLzI7aWYoZj09PWQpe2lmKG08ZXx8bT49aSlyZXR1cm47aWYoaD5wKXtpZihsKXtpZihsWzFdPj1yKXJldHVybn1lbHNlIGw9W20sbl07bz1bbSxyXX1lbHNle2lmKGwpe2lmKGxbMV08bilyZXR1cm59ZWxzZSBsPVttLHJdO289W20sbl19fWVsc2UgaWYocz0oZCtmKS8yLShhPShoLXApLyhmLWQpKSptLGE8LTF8fGE+MSlpZihoPnApe2lmKGwpe2lmKGxbMV0+PXIpcmV0dXJufWVsc2UgbD1bKG4tcykvYSxuXTtvPVsoci1zKS9hLHJdfWVsc2V7aWYobCl7aWYobFsxXTxuKXJldHVybn1lbHNlIGw9WyhyLXMpL2Escl07bz1bKG4tcykvYSxuXX1lbHNlIGlmKGQ8Zil7aWYobCl7aWYobFswXT49aSlyZXR1cm59ZWxzZSBsPVtlLGEqZStzXTtvPVtpLGEqaStzXX1lbHNle2lmKGwpe2lmKGxbMF08ZSlyZXR1cm59ZWxzZSBsPVtpLGEqaStzXTtvPVtlLGEqZStzXX1yZXR1cm4gdFswXT1sLHRbMV09bywhMH1mdW5jdGlvbiBPYXQodCxlKXt2YXIgbj10LnNpdGUsaT1lLmxlZnQscj1lLnJpZ2h0O3JldHVybiBuPT09ciYmKHI9aSxpPW4pLHI/TWF0aC5hdGFuMihyWzFdLWlbMV0sclswXS1pWzBdKToobj09PWk/KGk9ZVsxXSxyPWVbMF0pOihpPWVbMF0scj1lWzFdKSxNYXRoLmF0YW4yKGlbMF0tclswXSxyWzFdLWlbMV0pKX1mdW5jdGlvbiBSYXQodCxlKXtyZXR1cm4gZVsrKGUubGVmdCE9PXQuc2l0ZSldfWZ1bmN0aW9uIHphdCh0LGUpe3JldHVybiBlWysoZS5sZWZ0PT09dC5zaXRlKV19TWF0LnByb3RvdHlwZT17Y29uc3RydWN0b3I6TWF0LGluc2VydDpmdW5jdGlvbih0LGUpe3ZhciBuLGkscjtpZih0KXtpZihlLlA9dCxlLk49dC5OLHQuTiYmKHQuTi5QPWUpLHQuTj1lLHQuUil7Zm9yKHQ9dC5SO3QuTDspdD10Lkw7dC5MPWV9ZWxzZSB0LlI9ZTtuPXR9ZWxzZSB0aGlzLl8/KHQ9Q2F0KHRoaXMuXyksZS5QPW51bGwsZS5OPXQsdC5QPXQuTD1lLG49dCk6KGUuUD1lLk49bnVsbCx0aGlzLl89ZSxuPW51bGwpO2ZvcihlLkw9ZS5SPW51bGwsZS5VPW4sZS5DPSEwLHQ9ZTtuJiZuLkM7KW49PT0oaT1uLlUpLkw/KHI9aS5SKSYmci5DPyhuLkM9ci5DPSExLGkuQz0hMCx0PWkpOih0PT09bi5SJiYoVGF0KHRoaXMsbiksbj0odD1uKS5VKSxuLkM9ITEsaS5DPSEwLEFhdCh0aGlzLGkpKToocj1pLkwpJiZyLkM/KG4uQz1yLkM9ITEsaS5DPSEwLHQ9aSk6KHQ9PT1uLkwmJihBYXQodGhpcyxuKSxuPSh0PW4pLlUpLG4uQz0hMSxpLkM9ITAsVGF0KHRoaXMsaSkpLG49dC5VO3RoaXMuXy5DPSExfSxyZW1vdmU6ZnVuY3Rpb24odCl7dC5OJiYodC5OLlA9dC5QKSx0LlAmJih0LlAuTj10Lk4pLHQuTj10LlA9bnVsbDt2YXIgZSxuLGkscj10LlUsbz10LkwsYT10LlI7aWYobj1vP2E/Q2F0KGEpOm86YSxyP3IuTD09PXQ/ci5MPW46ci5SPW46dGhpcy5fPW4sbyYmYT8oaT1uLkMsbi5DPXQuQyxuLkw9byxvLlU9bixuIT09YT8ocj1uLlUsbi5VPXQuVSxyLkw9dD1uLlIsbi5SPWEsYS5VPW4pOihuLlU9cixyPW4sdD1uLlIpKTooaT10LkMsdD1uKSx0JiYodC5VPXIpLCFpKWlmKHQmJnQuQyl0LkM9ITE7ZWxzZXtkb3tpZih0PT09dGhpcy5fKWJyZWFrO2lmKHQ9PT1yLkwpe2lmKChlPXIuUikuQyYmKGUuQz0hMSxyLkM9ITAsVGF0KHRoaXMsciksZT1yLlIpLGUuTCYmZS5MLkN8fGUuUiYmZS5SLkMpe2UuUiYmZS5SLkN8fChlLkwuQz0hMSxlLkM9ITAsQWF0KHRoaXMsZSksZT1yLlIpLGUuQz1yLkMsci5DPWUuUi5DPSExLFRhdCh0aGlzLHIpLHQ9dGhpcy5fO2JyZWFrfX1lbHNlIGlmKChlPXIuTCkuQyYmKGUuQz0hMSxyLkM9ITAsQWF0KHRoaXMsciksZT1yLkwpLGUuTCYmZS5MLkN8fGUuUiYmZS5SLkMpe2UuTCYmZS5MLkN8fChlLlIuQz0hMSxlLkM9ITAsVGF0KHRoaXMsZSksZT1yLkwpLGUuQz1yLkMsci5DPWUuTC5DPSExLEFhdCh0aGlzLHIpLHQ9dGhpcy5fO2JyZWFrfWUuQz0hMCx0PXIscj1yLlV9d2hpbGUoIXQuQyk7dCYmKHQuQz0hMSl9fX07dmFyIERhdCxCYXQ9W107ZnVuY3Rpb24gSGF0KCl7RWF0KHRoaXMpLHRoaXMueD10aGlzLnk9dGhpcy5hcmM9dGhpcy5zaXRlPXRoaXMuY3k9bnVsbH1mdW5jdGlvbiBGYXQodCl7dmFyIGU9dC5QLG49dC5OO2lmKGUmJm4pe3ZhciBpPWUuc2l0ZSxyPXQuc2l0ZSxvPW4uc2l0ZTtpZihpIT09byl7dmFyIGE9clswXSxzPXJbMV0sbD1pWzBdLWEsYz1pWzFdLXMsdT1vWzBdLWEsaD1vWzFdLXMsZD0yKihsKmgtYyp1KTtpZighKGQ+PS1lc3QpKXt2YXIgcD1sKmwrYypjLGY9dSp1K2gqaCxtPShoKnAtYypmKS9kLGc9KGwqZi11KnApL2QsXz1CYXQucG9wKCl8fG5ldyBIYXQ7Xy5hcmM9dCxfLnNpdGU9cixfLng9bSthLF8ueT0oXy5jeT1nK3MpK01hdGguc3FydChtKm0rZypnKSx0LmNpcmNsZT1fO2Zvcih2YXIgeT1udWxsLHY9SmF0Ll87djspaWYoXy55PHYueXx8Xy55PT09di55JiZfLng8PXYueCl7aWYoIXYuTCl7eT12LlA7YnJlYWt9dj12Lkx9ZWxzZXtpZighdi5SKXt5PXY7YnJlYWt9dj12LlJ9SmF0Lmluc2VydCh5LF8pLHl8fChEYXQ9Xyl9fX19ZnVuY3Rpb24gVmF0KHQpe3ZhciBlPXQuY2lyY2xlO2UmJihlLlB8fChEYXQ9ZS5OKSxKYXQucmVtb3ZlKGUpLEJhdC5wdXNoKGUpLEVhdChlKSx0LmNpcmNsZT1udWxsKX12YXIgamF0PVtdO2Z1bmN0aW9uIFVhdCgpe0VhdCh0aGlzKSx0aGlzLmVkZ2U9dGhpcy5zaXRlPXRoaXMuY2lyY2xlPW51bGx9ZnVuY3Rpb24gR2F0KHQpe3ZhciBlPWphdC5wb3AoKXx8bmV3IFVhdDtyZXR1cm4gZS5zaXRlPXQsZX1mdW5jdGlvbiBXYXQodCl7VmF0KHQpLEthdC5yZW1vdmUodCksamF0LnB1c2godCksRWF0KHQpfWZ1bmN0aW9uIHFhdCh0KXt2YXIgZT10LmNpcmNsZSxuPWUueCxpPWUuY3kscj1bbixpXSxvPXQuUCxhPXQuTixzPVt0XTtXYXQodCk7Zm9yKHZhciBsPW87bC5jaXJjbGUmJk1hdGguYWJzKG4tbC5jaXJjbGUueCk8dHN0JiZNYXRoLmFicyhpLWwuY2lyY2xlLmN5KTx0c3Q7KW89bC5QLHMudW5zaGlmdChsKSxXYXQobCksbD1vO3MudW5zaGlmdChsKSxWYXQobCk7Zm9yKHZhciBjPWE7Yy5jaXJjbGUmJk1hdGguYWJzKG4tYy5jaXJjbGUueCk8dHN0JiZNYXRoLmFicyhpLWMuY2lyY2xlLmN5KTx0c3Q7KWE9Yy5OLHMucHVzaChjKSxXYXQoYyksYz1hO3MucHVzaChjKSxWYXQoYyk7dmFyIHUsaD1zLmxlbmd0aDtmb3IodT0xO3U8aDsrK3UpUGF0KChjPXNbdV0pLmVkZ2UsKGw9c1t1LTFdKS5zaXRlLGMuc2l0ZSxyKTsoYz1zW2gtMV0pLmVkZ2U9a2F0KChsPXNbMF0pLnNpdGUsYy5zaXRlLG51bGwsciksRmF0KGwpLEZhdChjKX1mdW5jdGlvbiBZYXQodCl7Zm9yKHZhciBlLG4saSxyLG89dFswXSxhPXRbMV0scz1LYXQuXztzOylpZigoaT1YYXQocyxhKS1vKT50c3Qpcz1zLkw7ZWxzZXtpZighKChyPW8tJGF0KHMsYSkpPnRzdCkpe2k+LXRzdD8oZT1zLlAsbj1zKTpyPi10c3Q/KGU9cyxuPXMuTik6ZT1uPXM7YnJlYWt9aWYoIXMuUil7ZT1zO2JyZWFrfXM9cy5SfSEoZnVuY3Rpb24gbCh0KXtaYXRbdC5pbmRleF09e3NpdGU6dCxoYWxmZWRnZXM6W119fSkodCk7dmFyIGM9R2F0KHQpO2lmKEthdC5pbnNlcnQoZSxjKSxlfHxuKXtpZihlPT09bilyZXR1cm4gVmF0KGUpLG49R2F0KGUuc2l0ZSksS2F0Lmluc2VydChjLG4pLGMuZWRnZT1uLmVkZ2U9a2F0KGUuc2l0ZSxjLnNpdGUpLEZhdChlKSx2b2lkIEZhdChuKTtpZihuKXtWYXQoZSksVmF0KG4pO3ZhciB1PWUuc2l0ZSxoPXVbMF0sZD11WzFdLHA9dFswXS1oLGY9dFsxXS1kLG09bi5zaXRlLGc9bVswXS1oLF89bVsxXS1kLHk9MioocCpfLWYqZyksdj1wKnArZipmLGI9ZypnK18qXyx4PVsoXyp2LWYqYikveStoLChwKmItZyp2KS95K2RdO1BhdChuLmVkZ2UsdSxtLHgpLGMuZWRnZT1rYXQodSx0LG51bGwseCksbi5lZGdlPWthdCh0LG0sbnVsbCx4KSxGYXQoZSksRmF0KG4pfWVsc2UgYy5lZGdlPWthdChlLnNpdGUsYy5zaXRlKX19ZnVuY3Rpb24gWGF0KHQsZSl7dmFyIG49dC5zaXRlLGk9blswXSxyPW5bMV0sbz1yLWU7aWYoIW8pcmV0dXJuIGk7dmFyIGE9dC5QO2lmKCFhKXJldHVybi0xLzA7dmFyIHM9KG49YS5zaXRlKVswXSxsPW5bMV0sYz1sLWU7aWYoIWMpcmV0dXJuIHM7dmFyIHU9cy1pLGg9MS9vLTEvYyxkPXUvYztyZXR1cm4gaD8oLWQrTWF0aC5zcXJ0KGQqZC0yKmgqKHUqdS8oLTIqYyktbCtjLzIrci1vLzIpKSkvaCtpOihpK3MpLzJ9ZnVuY3Rpb24gJGF0KHQsZSl7dmFyIG49dC5OO2lmKG4pcmV0dXJuIFhhdChuLGUpO3ZhciBpPXQuc2l0ZTtyZXR1cm4gaVsxXT09PWU/aVswXToxLzB9dmFyIEthdCxaYXQsSmF0LFFhdCx0c3Q9MWUtNixlc3Q9MWUtMTI7ZnVuY3Rpb24gbnN0KHQsZSxuKXtyZXR1cm4odFswXS1uWzBdKSooZVsxXS10WzFdKS0odFswXS1lWzBdKSooblsxXS10WzFdKX1mdW5jdGlvbiBpc3QodCxlKXtyZXR1cm4gZVsxXS10WzFdfHxlWzBdLXRbMF19ZnVuY3Rpb24gcnN0KHQsZSl7dmFyIG4saSxyLG89dC5zb3J0KGlzdCkucG9wKCk7Zm9yKFFhdD1bXSxaYXQ9bmV3IEFycmF5KHQubGVuZ3RoKSxLYXQ9bmV3IE1hdCxKYXQ9bmV3IE1hdDs7KWlmKHI9RGF0LG8mJighcnx8b1sxXTxyLnl8fG9bMV09PT1yLnkmJm9bMF08ci54KSlvWzBdPT09biYmb1sxXT09PWl8fChZYXQobyksbj1vWzBdLGk9b1sxXSksbz10LnBvcCgpO2Vsc2V7aWYoIXIpYnJlYWs7cWF0KHIuYXJjKX1pZigoZnVuY3Rpb24gYSgpe2Zvcih2YXIgdCxlLG4saSxyPTAsbz1aYXQubGVuZ3RoO3I8bzsrK3IpaWYoKHQ9WmF0W3JdKSYmKGk9KGU9dC5oYWxmZWRnZXMpLmxlbmd0aCkpe3ZhciBhPW5ldyBBcnJheShpKSxzPW5ldyBBcnJheShpKTtmb3Iobj0wO248aTsrK24pYVtuXT1uLHNbbl09T2F0KHQsUWF0W2Vbbl1dKTtmb3IoYS5zb3J0KChmdW5jdGlvbih0LGUpe3JldHVybiBzW2VdLXNbdF19KSksbj0wO248aTsrK24pc1tuXT1lW2Fbbl1dO2ZvcihuPTA7bjxpOysrbillW25dPXNbbl19fSkoKSxlKXt2YXIgcz0rZVswXVswXSxsPStlWzBdWzFdLGM9K2VbMV1bMF0sdT0rZVsxXVsxXTshKGZ1bmN0aW9uIGgodCxlLG4saSl7Zm9yKHZhciByLG89UWF0Lmxlbmd0aDtvLS07KU5hdChyPVFhdFtvXSx0LGUsbixpKSYmSWF0KHIsdCxlLG4saSkmJihNYXRoLmFicyhyWzBdWzBdLXJbMV1bMF0pPnRzdHx8TWF0aC5hYnMoclswXVsxXS1yWzFdWzFdKT50c3QpfHxkZWxldGUgUWF0W29dfSkocyxsLGMsdSksKGZ1bmN0aW9uIGQodCxlLG4saSl7dmFyIHIsbyxhLHMsbCxjLHUsaCxkLHAsZixtLGc9WmF0Lmxlbmd0aCxfPSEwO2ZvcihyPTA7cjxnOysrcilpZihvPVphdFtyXSl7Zm9yKGE9by5zaXRlLHM9KGw9by5oYWxmZWRnZXMpLmxlbmd0aDtzLS07KVFhdFtsW3NdXXx8bC5zcGxpY2UocywxKTtmb3Iocz0wLGM9bC5sZW5ndGg7czxjOylmPShwPXphdChvLFFhdFtsW3NdXSkpWzBdLG09cFsxXSxoPSh1PVJhdChvLFFhdFtsWysrcyVjXV0pKVswXSxkPXVbMV0sKE1hdGguYWJzKGYtaCk+dHN0fHxNYXRoLmFicyhtLWQpPnRzdCkmJihsLnNwbGljZShzLDAsUWF0LnB1c2goTGF0KGEscCxNYXRoLmFicyhmLXQpPHRzdCYmaS1tPnRzdD9bdCxNYXRoLmFicyhoLXQpPHRzdD9kOmldOk1hdGguYWJzKG0taSk8dHN0JiZuLWY+dHN0P1tNYXRoLmFicyhkLWkpPHRzdD9oOm4saV06TWF0aC5hYnMoZi1uKTx0c3QmJm0tZT50c3Q/W24sTWF0aC5hYnMoaC1uKTx0c3Q/ZDplXTpNYXRoLmFicyhtLWUpPHRzdCYmZi10PnRzdD9bTWF0aC5hYnMoZC1lKTx0c3Q/aDp0LGVdOm51bGwpKS0xKSwrK2MpO2MmJihfPSExKX1pZihfKXt2YXIgeSx2LGIseD0xLzA7Zm9yKHI9MCxfPW51bGw7cjxnOysrcikobz1aYXRbcl0pJiYoYj0oeT0oYT1vLnNpdGUpWzBdLXQpKnkrKHY9YVsxXS1lKSp2KTx4JiYoeD1iLF89byk7aWYoXyl7dmFyIHc9W3QsZV0sUz1bdCxpXSxNPVtuLGldLEU9W24sZV07Xy5oYWxmZWRnZXMucHVzaChRYXQucHVzaChMYXQoYT1fLnNpdGUsdyxTKSktMSxRYXQucHVzaChMYXQoYSxTLE0pKS0xLFFhdC5wdXNoKExhdChhLE0sRSkpLTEsUWF0LnB1c2goTGF0KGEsRSx3KSktMSl9fWZvcihyPTA7cjxnOysrcikobz1aYXRbcl0pJiYoby5oYWxmZWRnZXMubGVuZ3RofHxkZWxldGUgWmF0W3JdKX0pKHMsbCxjLHUpfXRoaXMuZWRnZXM9UWF0LHRoaXMuY2VsbHM9WmF0LEthdD1KYXQ9UWF0PVphdD1udWxsfXJzdC5wcm90b3R5cGU9e2NvbnN0cnVjdG9yOnJzdCxwb2x5Z29uczpmdW5jdGlvbigpe3ZhciB0PXRoaXMuZWRnZXM7cmV0dXJuIHRoaXMuY2VsbHMubWFwKChmdW5jdGlvbihlKXt2YXIgbj1lLmhhbGZlZGdlcy5tYXAoKGZ1bmN0aW9uKG4pe3JldHVybiBSYXQoZSx0W25dKX0pKTtyZXR1cm4gbi5kYXRhPWUuc2l0ZS5kYXRhLG59KSl9LHRyaWFuZ2xlczpmdW5jdGlvbigpe3ZhciB0PVtdLGU9dGhpcy5lZGdlcztyZXR1cm4gdGhpcy5jZWxscy5mb3JFYWNoKChmdW5jdGlvbihuLGkpe2lmKG89KHI9bi5oYWxmZWRnZXMpLmxlbmd0aClmb3IodmFyIHIsbyxhLHM9bi5zaXRlLGw9LTEsYz1lW3Jbby0xXV0sdT1jLmxlZnQ9PT1zP2MucmlnaHQ6Yy5sZWZ0OysrbDxvOylhPXUsdT0oYz1lW3JbbF1dKS5sZWZ0PT09cz9jLnJpZ2h0OmMubGVmdCxhJiZ1JiZpPGEuaW5kZXgmJmk8dS5pbmRleCYmbnN0KHMsYSx1KTwwJiZ0LnB1c2goW3MuZGF0YSxhLmRhdGEsdS5kYXRhXSl9KSksdH0sbGlua3M6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5lZGdlcy5maWx0ZXIoKGZ1bmN0aW9uKHQpe3JldHVybiB0LnJpZ2h0fSkpLm1hcCgoZnVuY3Rpb24odCl7cmV0dXJue3NvdXJjZTp0LmxlZnQuZGF0YSx0YXJnZXQ6dC5yaWdodC5kYXRhfX0pKX0sZmluZDpmdW5jdGlvbih0LGUsbil7Zm9yKHZhciBpLHIsbz10aGlzLGE9by5fZm91bmR8fDAscz1vLmNlbGxzLmxlbmd0aDshKHI9by5jZWxsc1thXSk7KWlmKCsrYT49cylyZXR1cm4gbnVsbDt2YXIgbD10LXIuc2l0ZVswXSxjPWUtci5zaXRlWzFdLHU9bCpsK2MqYztkb3tyPW8uY2VsbHNbaT1hXSxhPW51bGwsci5oYWxmZWRnZXMuZm9yRWFjaCgoZnVuY3Rpb24obil7dmFyIGk9by5lZGdlc1tuXSxzPWkubGVmdDtpZihzIT09ci5zaXRlJiZzfHwocz1pLnJpZ2h0KSl7dmFyIGw9dC1zWzBdLGM9ZS1zWzFdLGg9bCpsK2MqYztoPHUmJih1PWgsYT1zLmluZGV4KX19KSl9d2hpbGUobnVsbCE9PWEpO3JldHVybiBvLl9mb3VuZD1pLG51bGw9PW58fHU8PW4qbj9yLnNpdGU6bnVsbH19O3ZhciBvc3Q9e3ZhbHVlOmZ1bmN0aW9uKCl7fX07ZnVuY3Rpb24gYXN0KCl7Zm9yKHZhciB0LGU9MCxuPWFyZ3VtZW50cy5sZW5ndGgsaT17fTtlPG47KytlKXtpZighKHQ9YXJndW1lbnRzW2VdKyIiKXx8dCBpbiBpfHwvW1xzLl0vLnRlc3QodCkpdGhyb3cgbmV3IEVycm9yKCJpbGxlZ2FsIHR5cGU6ICIrdCk7aVt0XT1bXX1yZXR1cm4gbmV3IHNzdChpKX1mdW5jdGlvbiBzc3QodCl7dGhpcy5fPXR9ZnVuY3Rpb24gbHN0KHQsZSl7cmV0dXJuIHQudHJpbSgpLnNwbGl0KC9efFxzKy8pLm1hcCgoZnVuY3Rpb24odCl7dmFyIG49IiIsaT10LmluZGV4T2YoIi4iKTtpZihpPj0wJiYobj10LnNsaWNlKGkrMSksdD10LnNsaWNlKDAsaSkpLHQmJiFlLmhhc093blByb3BlcnR5KHQpKXRocm93IG5ldyBFcnJvcigidW5rbm93biB0eXBlOiAiK3QpO3JldHVybnt0eXBlOnQsbmFtZTpufX0pKX1mdW5jdGlvbiBjc3QodCxlKXtmb3IodmFyIG4saT0wLHI9dC5sZW5ndGg7aTxyOysraSlpZigobj10W2ldKS5uYW1lPT09ZSlyZXR1cm4gbi52YWx1ZX1mdW5jdGlvbiB1c3QodCxlLG4pe2Zvcih2YXIgaT0wLHI9dC5sZW5ndGg7aTxyOysraSlpZih0W2ldLm5hbWU9PT1lKXt0W2ldPW9zdCx0PXQuc2xpY2UoMCxpKS5jb25jYXQodC5zbGljZShpKzEpKTticmVha31yZXR1cm4gbnVsbCE9biYmdC5wdXNoKHtuYW1lOmUsdmFsdWU6bn0pLHR9c3N0LnByb3RvdHlwZT1hc3QucHJvdG90eXBlPXtjb25zdHJ1Y3Rvcjpzc3Qsb246ZnVuY3Rpb24odCxlKXt2YXIgbixpPXRoaXMuXyxyPWxzdCh0KyIiLGkpLG89LTEsYT1yLmxlbmd0aDtpZighKGFyZ3VtZW50cy5sZW5ndGg8Mikpe2lmKG51bGwhPWUmJiJmdW5jdGlvbiIhPXR5cGVvZiBlKXRocm93IG5ldyBFcnJvcigiaW52YWxpZCBjYWxsYmFjazogIitlKTtmb3IoOysrbzxhOylpZihuPSh0PXJbb10pLnR5cGUpaVtuXT11c3QoaVtuXSx0Lm5hbWUsZSk7ZWxzZSBpZihudWxsPT1lKWZvcihuIGluIGkpaVtuXT11c3QoaVtuXSx0Lm5hbWUsbnVsbCk7cmV0dXJuIHRoaXN9Zm9yKDsrK288YTspaWYoKG49KHQ9cltvXSkudHlwZSkmJihuPWNzdChpW25dLHQubmFtZSkpKXJldHVybiBufSxjb3B5OmZ1bmN0aW9uKCl7dmFyIHQ9e30sZT10aGlzLl87Zm9yKHZhciBuIGluIGUpdFtuXT1lW25dLnNsaWNlKCk7cmV0dXJuIG5ldyBzc3QodCl9LGNhbGw6ZnVuY3Rpb24odCxlKXtpZigobj1hcmd1bWVudHMubGVuZ3RoLTIpPjApZm9yKHZhciBuLGkscj1uZXcgQXJyYXkobiksbz0wO288bjsrK28pcltvXT1hcmd1bWVudHNbbysyXTtpZighdGhpcy5fLmhhc093blByb3BlcnR5KHQpKXRocm93IG5ldyBFcnJvcigidW5rbm93biB0eXBlOiAiK3QpO2ZvcihvPTAsbj0oaT10aGlzLl9bdF0pLmxlbmd0aDtvPG47KytvKWlbb10udmFsdWUuYXBwbHkoZSxyKX0sYXBwbHk6ZnVuY3Rpb24odCxlLG4pe2lmKCF0aGlzLl8uaGFzT3duUHJvcGVydHkodCkpdGhyb3cgbmV3IEVycm9yKCJ1bmtub3duIHR5cGU6ICIrdCk7Zm9yKHZhciBpPXRoaXMuX1t0XSxyPTAsbz1pLmxlbmd0aDtyPG87KytyKWlbcl0udmFsdWUuYXBwbHkoZSxuKX19O3ZhciBoc3Q9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGh0bWwiLGRzdD17c3ZnOiJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIseGh0bWw6aHN0LHhsaW5rOiJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIix4bWw6Imh0dHA6Ly93d3cudzMub3JnL1hNTC8xOTk4L25hbWVzcGFjZSIseG1sbnM6Imh0dHA6Ly93d3cudzMub3JnLzIwMDAveG1sbnMvIn07ZnVuY3Rpb24gcHN0KHQpe3ZhciBlPXQrPSIiLG49ZS5pbmRleE9mKCI6Iik7cmV0dXJuIG4+PTAmJiJ4bWxucyIhPT0oZT10LnNsaWNlKDAsbikpJiYodD10LnNsaWNlKG4rMSkpLGRzdC5oYXNPd25Qcm9wZXJ0eShlKT97c3BhY2U6ZHN0W2VdLGxvY2FsOnR9OnR9ZnVuY3Rpb24gZnN0KHQpe3JldHVybiBmdW5jdGlvbigpe3ZhciBlPXRoaXMub3duZXJEb2N1bWVudCxuPXRoaXMubmFtZXNwYWNlVVJJO3JldHVybiBuPT09aHN0JiZlLmRvY3VtZW50RWxlbWVudC5uYW1lc3BhY2VVUkk9PT1oc3Q/ZS5jcmVhdGVFbGVtZW50KHQpOmUuY3JlYXRlRWxlbWVudE5TKG4sdCl9fWZ1bmN0aW9uIG1zdCh0KXtyZXR1cm4gZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5vd25lckRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUyh0LnNwYWNlLHQubG9jYWwpfX1mdW5jdGlvbiBnc3QodCl7dmFyIGU9cHN0KHQpO3JldHVybihlLmxvY2FsP21zdDpmc3QpKGUpfWZ1bmN0aW9uIF9zdCgpe31mdW5jdGlvbiB5c3QodCl7cmV0dXJuIG51bGw9PXQ/X3N0OmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMucXVlcnlTZWxlY3Rvcih0KX19ZnVuY3Rpb24gdnN0KCl7cmV0dXJuW119ZnVuY3Rpb24gYnN0KHQpe3JldHVybiBudWxsPT10P3ZzdDpmdW5jdGlvbigpe3JldHVybiB0aGlzLnF1ZXJ5U2VsZWN0b3JBbGwodCl9fWZ1bmN0aW9uIHhzdCh0KXtyZXR1cm4gZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5tYXRjaGVzKHQpfX1mdW5jdGlvbiB3c3QodCl7cmV0dXJuIG5ldyBBcnJheSh0Lmxlbmd0aCl9ZnVuY3Rpb24gU3N0KHQsZSl7dGhpcy5vd25lckRvY3VtZW50PXQub3duZXJEb2N1bWVudCx0aGlzLm5hbWVzcGFjZVVSST10Lm5hbWVzcGFjZVVSSSx0aGlzLl9uZXh0PW51bGwsdGhpcy5fcGFyZW50PXQsdGhpcy5fX2RhdGFfXz1lfWZ1bmN0aW9uIE1zdCh0LGUsbixpLHIsbyl7Zm9yKHZhciBhLHM9MCxsPWUubGVuZ3RoLGM9by5sZW5ndGg7czxjOysrcykoYT1lW3NdKT8oYS5fX2RhdGFfXz1vW3NdLGlbc109YSk6bltzXT1uZXcgU3N0KHQsb1tzXSk7Zm9yKDtzPGw7KytzKShhPWVbc10pJiYocltzXT1hKX1mdW5jdGlvbiBFc3QodCxlLG4saSxyLG8sYSl7dmFyIHMsbCxjLHU9e30saD1lLmxlbmd0aCxkPW8ubGVuZ3RoLHA9bmV3IEFycmF5KGgpO2ZvcihzPTA7czxoOysrcykobD1lW3NdKSYmKHBbc109Yz0iJCIrYS5jYWxsKGwsbC5fX2RhdGFfXyxzLGUpLGMgaW4gdT9yW3NdPWw6dVtjXT1sKTtmb3Iocz0wO3M8ZDsrK3MpKGw9dVtjPSIkIithLmNhbGwodCxvW3NdLHMsbyldKT8oaVtzXT1sLGwuX19kYXRhX189b1tzXSx1W2NdPW51bGwpOm5bc109bmV3IFNzdCh0LG9bc10pO2ZvcihzPTA7czxoOysrcykobD1lW3NdKSYmdVtwW3NdXT09PWwmJihyW3NdPWwpfWZ1bmN0aW9uIFRzdCh0LGUpe3JldHVybiB0PGU/LTE6dD5lPzE6dD49ZT8wOk5hTn1mdW5jdGlvbiBBc3QodCl7cmV0dXJuIGZ1bmN0aW9uKCl7dGhpcy5yZW1vdmVBdHRyaWJ1dGUodCl9fWZ1bmN0aW9uIENzdCh0KXtyZXR1cm4gZnVuY3Rpb24oKXt0aGlzLnJlbW92ZUF0dHJpYnV0ZU5TKHQuc3BhY2UsdC5sb2NhbCl9fWZ1bmN0aW9uIGtzdCh0LGUpe3JldHVybiBmdW5jdGlvbigpe3RoaXMuc2V0QXR0cmlidXRlKHQsZSl9fWZ1bmN0aW9uIExzdCh0LGUpe3JldHVybiBmdW5jdGlvbigpe3RoaXMuc2V0QXR0cmlidXRlTlModC5zcGFjZSx0LmxvY2FsLGUpfX1mdW5jdGlvbiBQc3QodCxlKXtyZXR1cm4gZnVuY3Rpb24oKXt2YXIgbj1lLmFwcGx5KHRoaXMsYXJndW1lbnRzKTtudWxsPT1uP3RoaXMucmVtb3ZlQXR0cmlidXRlKHQpOnRoaXMuc2V0QXR0cmlidXRlKHQsbil9fWZ1bmN0aW9uIElzdCh0LGUpe3JldHVybiBmdW5jdGlvbigpe3ZhciBuPWUuYXBwbHkodGhpcyxhcmd1bWVudHMpO251bGw9PW4/dGhpcy5yZW1vdmVBdHRyaWJ1dGVOUyh0LnNwYWNlLHQubG9jYWwpOnRoaXMuc2V0QXR0cmlidXRlTlModC5zcGFjZSx0LmxvY2FsLG4pfX1mdW5jdGlvbiBOc3QodCl7cmV0dXJuIHQub3duZXJEb2N1bWVudCYmdC5vd25lckRvY3VtZW50LmRlZmF1bHRWaWV3fHx0LmRvY3VtZW50JiZ0fHx0LmRlZmF1bHRWaWV3fWZ1bmN0aW9uIE9zdCh0KXtyZXR1cm4gZnVuY3Rpb24oKXt0aGlzLnN0eWxlLnJlbW92ZVByb3BlcnR5KHQpfX1mdW5jdGlvbiBSc3QodCxlLG4pe3JldHVybiBmdW5jdGlvbigpe3RoaXMuc3R5bGUuc2V0UHJvcGVydHkodCxlLG4pfX1mdW5jdGlvbiB6c3QodCxlLG4pe3JldHVybiBmdW5jdGlvbigpe3ZhciBpPWUuYXBwbHkodGhpcyxhcmd1bWVudHMpO251bGw9PWk/dGhpcy5zdHlsZS5yZW1vdmVQcm9wZXJ0eSh0KTp0aGlzLnN0eWxlLnNldFByb3BlcnR5KHQsaSxuKX19ZnVuY3Rpb24gRHN0KHQsZSl7cmV0dXJuIHQuc3R5bGUuZ2V0UHJvcGVydHlWYWx1ZShlKXx8TnN0KHQpLmdldENvbXB1dGVkU3R5bGUodCxudWxsKS5nZXRQcm9wZXJ0eVZhbHVlKGUpfWZ1bmN0aW9uIEJzdCh0KXtyZXR1cm4gZnVuY3Rpb24oKXtkZWxldGUgdGhpc1t0XX19ZnVuY3Rpb24gSHN0KHQsZSl7cmV0dXJuIGZ1bmN0aW9uKCl7dGhpc1t0XT1lfX1mdW5jdGlvbiBGc3QodCxlKXtyZXR1cm4gZnVuY3Rpb24oKXt2YXIgbj1lLmFwcGx5KHRoaXMsYXJndW1lbnRzKTtudWxsPT1uP2RlbGV0ZSB0aGlzW3RdOnRoaXNbdF09bn19ZnVuY3Rpb24gVnN0KHQpe3JldHVybiB0LnRyaW0oKS5zcGxpdCgvXnxccysvKX1mdW5jdGlvbiBqc3QodCl7cmV0dXJuIHQuY2xhc3NMaXN0fHxuZXcgVXN0KHQpfWZ1bmN0aW9uIFVzdCh0KXt0aGlzLl9ub2RlPXQsdGhpcy5fbmFtZXM9VnN0KHQuZ2V0QXR0cmlidXRlKCJjbGFzcyIpfHwiIil9ZnVuY3Rpb24gR3N0KHQsZSl7Zm9yKHZhciBuPWpzdCh0KSxpPS0xLHI9ZS5sZW5ndGg7KytpPHI7KW4uYWRkKGVbaV0pfWZ1bmN0aW9uIFdzdCh0LGUpe2Zvcih2YXIgbj1qc3QodCksaT0tMSxyPWUubGVuZ3RoOysraTxyOyluLnJlbW92ZShlW2ldKX1mdW5jdGlvbiBxc3QodCl7cmV0dXJuIGZ1bmN0aW9uKCl7R3N0KHRoaXMsdCl9fWZ1bmN0aW9uIFlzdCh0KXtyZXR1cm4gZnVuY3Rpb24oKXtXc3QodGhpcyx0KX19ZnVuY3Rpb24gWHN0KHQsZSl7cmV0dXJuIGZ1bmN0aW9uKCl7KGUuYXBwbHkodGhpcyxhcmd1bWVudHMpP0dzdDpXc3QpKHRoaXMsdCl9fWZ1bmN0aW9uICRzdCgpe3RoaXMudGV4dENvbnRlbnQ9IiJ9ZnVuY3Rpb24gS3N0KHQpe3JldHVybiBmdW5jdGlvbigpe3RoaXMudGV4dENvbnRlbnQ9dH19ZnVuY3Rpb24gWnN0KHQpe3JldHVybiBmdW5jdGlvbigpe3ZhciBlPXQuYXBwbHkodGhpcyxhcmd1bWVudHMpO3RoaXMudGV4dENvbnRlbnQ9bnVsbD09ZT8iIjplfX1mdW5jdGlvbiBKc3QoKXt0aGlzLmlubmVySFRNTD0iIn1mdW5jdGlvbiBRc3QodCl7cmV0dXJuIGZ1bmN0aW9uKCl7dGhpcy5pbm5lckhUTUw9dH19ZnVuY3Rpb24gdGx0KHQpe3JldHVybiBmdW5jdGlvbigpe3ZhciBlPXQuYXBwbHkodGhpcyxhcmd1bWVudHMpO3RoaXMuaW5uZXJIVE1MPW51bGw9PWU/IiI6ZX19ZnVuY3Rpb24gZWx0KCl7dGhpcy5uZXh0U2libGluZyYmdGhpcy5wYXJlbnROb2RlLmFwcGVuZENoaWxkKHRoaXMpfWZ1bmN0aW9uIG5sdCgpe3RoaXMucHJldmlvdXNTaWJsaW5nJiZ0aGlzLnBhcmVudE5vZGUuaW5zZXJ0QmVmb3JlKHRoaXMsdGhpcy5wYXJlbnROb2RlLmZpcnN0Q2hpbGQpfWZ1bmN0aW9uIGlsdCgpe3JldHVybiBudWxsfWZ1bmN0aW9uIHJsdCgpe3ZhciB0PXRoaXMucGFyZW50Tm9kZTt0JiZ0LnJlbW92ZUNoaWxkKHRoaXMpfWZ1bmN0aW9uIG9sdCgpe3ZhciB0PXRoaXMuY2xvbmVOb2RlKCExKSxlPXRoaXMucGFyZW50Tm9kZTtyZXR1cm4gZT9lLmluc2VydEJlZm9yZSh0LHRoaXMubmV4dFNpYmxpbmcpOnR9ZnVuY3Rpb24gYWx0KCl7dmFyIHQ9dGhpcy5jbG9uZU5vZGUoITApLGU9dGhpcy5wYXJlbnROb2RlO3JldHVybiBlP2UuaW5zZXJ0QmVmb3JlKHQsdGhpcy5uZXh0U2libGluZyk6dH1Tc3QucHJvdG90eXBlPXtjb25zdHJ1Y3RvcjpTc3QsYXBwZW5kQ2hpbGQ6ZnVuY3Rpb24odCl7cmV0dXJuIHRoaXMuX3BhcmVudC5pbnNlcnRCZWZvcmUodCx0aGlzLl9uZXh0KX0saW5zZXJ0QmVmb3JlOmZ1bmN0aW9uKHQsZSl7cmV0dXJuIHRoaXMuX3BhcmVudC5pbnNlcnRCZWZvcmUodCxlKX0scXVlcnlTZWxlY3RvcjpmdW5jdGlvbih0KXtyZXR1cm4gdGhpcy5fcGFyZW50LnF1ZXJ5U2VsZWN0b3IodCl9LHF1ZXJ5U2VsZWN0b3JBbGw6ZnVuY3Rpb24odCl7cmV0dXJuIHRoaXMuX3BhcmVudC5xdWVyeVNlbGVjdG9yQWxsKHQpfX0sVXN0LnByb3RvdHlwZT17YWRkOmZ1bmN0aW9uKHQpe3RoaXMuX25hbWVzLmluZGV4T2YodCk8MCYmKHRoaXMuX25hbWVzLnB1c2godCksdGhpcy5fbm9kZS5zZXRBdHRyaWJ1dGUoImNsYXNzIix0aGlzLl9uYW1lcy5qb2luKCIgIikpKX0scmVtb3ZlOmZ1bmN0aW9uKHQpe3ZhciBlPXRoaXMuX25hbWVzLmluZGV4T2YodCk7ZT49MCYmKHRoaXMuX25hbWVzLnNwbGljZShlLDEpLHRoaXMuX25vZGUuc2V0QXR0cmlidXRlKCJjbGFzcyIsdGhpcy5fbmFtZXMuam9pbigiICIpKSl9LGNvbnRhaW5zOmZ1bmN0aW9uKHQpe3JldHVybiB0aGlzLl9uYW1lcy5pbmRleE9mKHQpPj0wfX07dmFyIHNsdD17fSxsbHQ9bnVsbDtmdW5jdGlvbiBjbHQodCxlLG4pe3JldHVybiB0PXVsdCh0LGUsbiksZnVuY3Rpb24oZSl7dmFyIG49ZS5yZWxhdGVkVGFyZ2V0O24mJihuPT09dGhpc3x8OCZuLmNvbXBhcmVEb2N1bWVudFBvc2l0aW9uKHRoaXMpKXx8dC5jYWxsKHRoaXMsZSl9fWZ1bmN0aW9uIHVsdCh0LGUsbil7cmV0dXJuIGZ1bmN0aW9uKGkpe3ZhciByPWxsdDtsbHQ9aTt0cnl7dC5jYWxsKHRoaXMsdGhpcy5fX2RhdGFfXyxlLG4pfWZpbmFsbHl7bGx0PXJ9fX1mdW5jdGlvbiBobHQodCl7cmV0dXJuIHQudHJpbSgpLnNwbGl0KC9efFxzKy8pLm1hcCgoZnVuY3Rpb24odCl7dmFyIGU9IiIsbj10LmluZGV4T2YoIi4iKTtyZXR1cm4gbj49MCYmKGU9dC5zbGljZShuKzEpLHQ9dC5zbGljZSgwLG4pKSx7dHlwZTp0LG5hbWU6ZX19KSl9ZnVuY3Rpb24gZGx0KHQpe3JldHVybiBmdW5jdGlvbigpe3ZhciBlPXRoaXMuX19vbjtpZihlKXtmb3IodmFyIG4saT0wLHI9LTEsbz1lLmxlbmd0aDtpPG87KytpKW49ZVtpXSx0LnR5cGUmJm4udHlwZSE9PXQudHlwZXx8bi5uYW1lIT09dC5uYW1lP2VbKytyXT1uOnRoaXMucmVtb3ZlRXZlbnRMaXN0ZW5lcihuLnR5cGUsbi5saXN0ZW5lcixuLmNhcHR1cmUpOysrcj9lLmxlbmd0aD1yOmRlbGV0ZSB0aGlzLl9fb259fX1mdW5jdGlvbiBwbHQodCxlLG4pe3ZhciBpPXNsdC5oYXNPd25Qcm9wZXJ0eSh0LnR5cGUpP2NsdDp1bHQ7cmV0dXJuIGZ1bmN0aW9uKHIsbyxhKXt2YXIgcyxsPXRoaXMuX19vbixjPWkoZSxvLGEpO2lmKGwpZm9yKHZhciB1PTAsaD1sLmxlbmd0aDt1PGg7Kyt1KWlmKChzPWxbdV0pLnR5cGU9PT10LnR5cGUmJnMubmFtZT09PXQubmFtZSlyZXR1cm4gdGhpcy5yZW1vdmVFdmVudExpc3RlbmVyKHMudHlwZSxzLmxpc3RlbmVyLHMuY2FwdHVyZSksdGhpcy5hZGRFdmVudExpc3RlbmVyKHMudHlwZSxzLmxpc3RlbmVyPWMscy5jYXB0dXJlPW4pLHZvaWQocy52YWx1ZT1lKTt0aGlzLmFkZEV2ZW50TGlzdGVuZXIodC50eXBlLGMsbikscz17dHlwZTp0LnR5cGUsbmFtZTp0Lm5hbWUsdmFsdWU6ZSxsaXN0ZW5lcjpjLGNhcHR1cmU6bn0sbD9sLnB1c2gocyk6dGhpcy5fX29uPVtzXX19ZnVuY3Rpb24gZmx0KHQsZSxuKXt2YXIgaT1Oc3QodCkscj1pLkN1c3RvbUV2ZW50OyJmdW5jdGlvbiI9PXR5cGVvZiByP3I9bmV3IHIoZSxuKToocj1pLmRvY3VtZW50LmNyZWF0ZUV2ZW50KCJFdmVudCIpLG4/KHIuaW5pdEV2ZW50KGUsbi5idWJibGVzLG4uY2FuY2VsYWJsZSksci5kZXRhaWw9bi5kZXRhaWwpOnIuaW5pdEV2ZW50KGUsITEsITEpKSx0LmRpc3BhdGNoRXZlbnQocil9ZnVuY3Rpb24gbWx0KHQsZSl7cmV0dXJuIGZ1bmN0aW9uKCl7cmV0dXJuIGZsdCh0aGlzLHQsZSl9fWZ1bmN0aW9uIGdsdCh0LGUpe3JldHVybiBmdW5jdGlvbigpe3JldHVybiBmbHQodGhpcyx0LGUuYXBwbHkodGhpcyxhcmd1bWVudHMpKX19InVuZGVmaW5lZCIhPXR5cGVvZiBkb2N1bWVudCYmKCJvbm1vdXNlZW50ZXIiaW4gZG9jdW1lbnQuZG9jdW1lbnRFbGVtZW50fHwoc2x0PXttb3VzZWVudGVyOiJtb3VzZW92ZXIiLG1vdXNlbGVhdmU6Im1vdXNlb3V0In0pKTt2YXIgX2x0PVtudWxsXTtmdW5jdGlvbiB5bHQodCxlKXt0aGlzLl9ncm91cHM9dCx0aGlzLl9wYXJlbnRzPWV9ZnVuY3Rpb24gdmx0KCl7cmV0dXJuIG5ldyB5bHQoW1tkb2N1bWVudC5kb2N1bWVudEVsZW1lbnRdXSxfbHQpfWZ1bmN0aW9uIGJsdCh0KXtyZXR1cm4ic3RyaW5nIj09dHlwZW9mIHQ/bmV3IHlsdChbW2RvY3VtZW50LnF1ZXJ5U2VsZWN0b3IodCldXSxbZG9jdW1lbnQuZG9jdW1lbnRFbGVtZW50XSk6bmV3IHlsdChbW3RdXSxfbHQpfWZ1bmN0aW9uIHhsdCgpe2Zvcih2YXIgdCxlPWxsdDt0PWUuc291cmNlRXZlbnQ7KWU9dDtyZXR1cm4gZX1mdW5jdGlvbiB3bHQodCxlKXt2YXIgbj10Lm93bmVyU1ZHRWxlbWVudHx8dDtpZihuLmNyZWF0ZVNWR1BvaW50KXt2YXIgaT1uLmNyZWF0ZVNWR1BvaW50KCk7cmV0dXJuIGkueD1lLmNsaWVudFgsaS55PWUuY2xpZW50WSxbKGk9aS5tYXRyaXhUcmFuc2Zvcm0odC5nZXRTY3JlZW5DVE0oKS5pbnZlcnNlKCkpKS54LGkueV19dmFyIHI9dC5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKTtyZXR1cm5bZS5jbGllbnRYLXIubGVmdC10LmNsaWVudExlZnQsZS5jbGllbnRZLXIudG9wLXQuY2xpZW50VG9wXX1mdW5jdGlvbiBTbHQodCl7dmFyIGU9eGx0KCk7cmV0dXJuIGUuY2hhbmdlZFRvdWNoZXMmJihlPWUuY2hhbmdlZFRvdWNoZXNbMF0pLHdsdCh0LGUpfWZ1bmN0aW9uIE1sdCh0LGUsbil7YXJndW1lbnRzLmxlbmd0aDwzJiYobj1lLGU9eGx0KCkuY2hhbmdlZFRvdWNoZXMpO2Zvcih2YXIgaSxyPTAsbz1lP2UubGVuZ3RoOjA7cjxvOysrcilpZigoaT1lW3JdKS5pZGVudGlmaWVyPT09bilyZXR1cm4gd2x0KHQsaSk7cmV0dXJuIG51bGx9ZnVuY3Rpb24gRWx0KCl7bGx0LnByZXZlbnREZWZhdWx0KCksbGx0LnN0b3BJbW1lZGlhdGVQcm9wYWdhdGlvbigpfWZ1bmN0aW9uIFRsdCh0KXt2YXIgZT10LmRvY3VtZW50LmRvY3VtZW50RWxlbWVudCxuPWJsdCh0KS5vbigiZHJhZ3N0YXJ0LmRyYWciLEVsdCwhMCk7Im9uc2VsZWN0c3RhcnQiaW4gZT9uLm9uKCJzZWxlY3RzdGFydC5kcmFnIixFbHQsITApOihlLl9fbm9zZWxlY3Q9ZS5zdHlsZS5Nb3pVc2VyU2VsZWN0LGUuc3R5bGUuTW96VXNlclNlbGVjdD0ibm9uZSIpfWZ1bmN0aW9uIEFsdCh0LGUpe3ZhciBuPXQuZG9jdW1lbnQuZG9jdW1lbnRFbGVtZW50LGk9Ymx0KHQpLm9uKCJkcmFnc3RhcnQuZHJhZyIsbnVsbCk7ZSYmKGkub24oImNsaWNrLmRyYWciLEVsdCwhMCksc2V0VGltZW91dCgoZnVuY3Rpb24oKXtpLm9uKCJjbGljay5kcmFnIixudWxsKX0pLDApKSwib25zZWxlY3RzdGFydCJpbiBuP2kub24oInNlbGVjdHN0YXJ0LmRyYWciLG51bGwpOihuLnN0eWxlLk1velVzZXJTZWxlY3Q9bi5fX25vc2VsZWN0LGRlbGV0ZSBuLl9fbm9zZWxlY3QpfWZ1bmN0aW9uIENsdCh0LGUsbil7dC5wcm90b3R5cGU9ZS5wcm90b3R5cGU9bixuLmNvbnN0cnVjdG9yPXR9ZnVuY3Rpb24ga2x0KHQsZSl7dmFyIG49T2JqZWN0LmNyZWF0ZSh0LnByb3RvdHlwZSk7Zm9yKHZhciBpIGluIGUpbltpXT1lW2ldO3JldHVybiBufWZ1bmN0aW9uIExsdCgpe315bHQucHJvdG90eXBlPXZsdC5wcm90b3R5cGU9e2NvbnN0cnVjdG9yOnlsdCxzZWxlY3Q6ZnVuY3Rpb24gUGx0KHQpeyJmdW5jdGlvbiIhPXR5cGVvZiB0JiYodD15c3QodCkpO2Zvcih2YXIgZT10aGlzLl9ncm91cHMsbj1lLmxlbmd0aCxpPW5ldyBBcnJheShuKSxyPTA7cjxuOysrcilmb3IodmFyIG8sYSxzPWVbcl0sbD1zLmxlbmd0aCxjPWlbcl09bmV3IEFycmF5KGwpLHU9MDt1PGw7Kyt1KShvPXNbdV0pJiYoYT10LmNhbGwobyxvLl9fZGF0YV9fLHUscykpJiYoIl9fZGF0YV9fImluIG8mJihhLl9fZGF0YV9fPW8uX19kYXRhX18pLGNbdV09YSk7cmV0dXJuIG5ldyB5bHQoaSx0aGlzLl9wYXJlbnRzKX0sc2VsZWN0QWxsOmZ1bmN0aW9uIElsdCh0KXsiZnVuY3Rpb24iIT10eXBlb2YgdCYmKHQ9YnN0KHQpKTtmb3IodmFyIGU9dGhpcy5fZ3JvdXBzLG49ZS5sZW5ndGgsaT1bXSxyPVtdLG89MDtvPG47KytvKWZvcih2YXIgYSxzPWVbb10sbD1zLmxlbmd0aCxjPTA7YzxsOysrYykoYT1zW2NdKSYmKGkucHVzaCh0LmNhbGwoYSxhLl9fZGF0YV9fLGMscykpLHIucHVzaChhKSk7cmV0dXJuIG5ldyB5bHQoaSxyKX0sZmlsdGVyOmZ1bmN0aW9uIE5sdCh0KXsiZnVuY3Rpb24iIT10eXBlb2YgdCYmKHQ9eHN0KHQpKTtmb3IodmFyIGU9dGhpcy5fZ3JvdXBzLG49ZS5sZW5ndGgsaT1uZXcgQXJyYXkobikscj0wO3I8bjsrK3IpZm9yKHZhciBvLGE9ZVtyXSxzPWEubGVuZ3RoLGw9aVtyXT1bXSxjPTA7YzxzOysrYykobz1hW2NdKSYmdC5jYWxsKG8sby5fX2RhdGFfXyxjLGEpJiZsLnB1c2gobyk7cmV0dXJuIG5ldyB5bHQoaSx0aGlzLl9wYXJlbnRzKX0sZGF0YTpmdW5jdGlvbiBPbHQodCxlKXtpZighdClyZXR1cm4gZj1uZXcgQXJyYXkodGhpcy5zaXplKCkpLHU9LTEsdGhpcy5lYWNoKChmdW5jdGlvbih0KXtmWysrdV09dH0pKSxmO3ZhciBuPWU/RXN0Ok1zdCxpPXRoaXMuX3BhcmVudHMscj10aGlzLl9ncm91cHM7ImZ1bmN0aW9uIiE9dHlwZW9mIHQmJih0PShmdW5jdGlvbiBvKHQpe3JldHVybiBmdW5jdGlvbigpe3JldHVybiB0fX0pKHQpKTtmb3IodmFyIGE9ci5sZW5ndGgscz1uZXcgQXJyYXkoYSksbD1uZXcgQXJyYXkoYSksYz1uZXcgQXJyYXkoYSksdT0wO3U8YTsrK3Upe3ZhciBoPWlbdV0sZD1yW3VdLHA9ZC5sZW5ndGgsZj10LmNhbGwoaCxoJiZoLl9fZGF0YV9fLHUsaSksbT1mLmxlbmd0aCxnPWxbdV09bmV3IEFycmF5KG0pLF89c1t1XT1uZXcgQXJyYXkobSk7bihoLGQsZyxfLGNbdV09bmV3IEFycmF5KHApLGYsZSk7Zm9yKHZhciB5LHYsYj0wLHg9MDtiPG07KytiKWlmKHk9Z1tiXSl7Zm9yKGI+PXgmJih4PWIrMSk7ISh2PV9beF0pJiYrK3g8bTspO3kuX25leHQ9dnx8bnVsbH19cmV0dXJuKHM9bmV3IHlsdChzLGkpKS5fZW50ZXI9bCxzLl9leGl0PWMsc30sZW50ZXI6ZnVuY3Rpb24gUmx0KCl7cmV0dXJuIG5ldyB5bHQodGhpcy5fZW50ZXJ8fHRoaXMuX2dyb3Vwcy5tYXAod3N0KSx0aGlzLl9wYXJlbnRzKX0sZXhpdDpmdW5jdGlvbiB6bHQoKXtyZXR1cm4gbmV3IHlsdCh0aGlzLl9leGl0fHx0aGlzLl9ncm91cHMubWFwKHdzdCksdGhpcy5fcGFyZW50cyl9LGpvaW46ZnVuY3Rpb24gRGx0KHQsZSxuKXt2YXIgaT10aGlzLmVudGVyKCkscj10aGlzLG89dGhpcy5leGl0KCk7cmV0dXJuIGk9ImZ1bmN0aW9uIj09dHlwZW9mIHQ/dChpKTppLmFwcGVuZCh0KyIiKSxudWxsIT1lJiYocj1lKHIpKSxudWxsPT1uP28ucmVtb3ZlKCk6bihvKSxpJiZyP2kubWVyZ2Uocikub3JkZXIoKTpyfSxtZXJnZTpmdW5jdGlvbiBCbHQodCl7Zm9yKHZhciBlPXRoaXMuX2dyb3VwcyxuPXQuX2dyb3VwcyxpPWUubGVuZ3RoLHI9TWF0aC5taW4oaSxuLmxlbmd0aCksbz1uZXcgQXJyYXkoaSksYT0wO2E8cjsrK2EpZm9yKHZhciBzLGw9ZVthXSxjPW5bYV0sdT1sLmxlbmd0aCxoPW9bYV09bmV3IEFycmF5KHUpLGQ9MDtkPHU7KytkKShzPWxbZF18fGNbZF0pJiYoaFtkXT1zKTtmb3IoO2E8aTsrK2Epb1thXT1lW2FdO3JldHVybiBuZXcgeWx0KG8sdGhpcy5fcGFyZW50cyl9LG9yZGVyOmZ1bmN0aW9uIEhsdCgpe2Zvcih2YXIgdD10aGlzLl9ncm91cHMsZT0tMSxuPXQubGVuZ3RoOysrZTxuOylmb3IodmFyIGkscj10W2VdLG89ci5sZW5ndGgtMSxhPXJbb107LS1vPj0wOykoaT1yW29dKSYmKGEmJjReaS5jb21wYXJlRG9jdW1lbnRQb3NpdGlvbihhKSYmYS5wYXJlbnROb2RlLmluc2VydEJlZm9yZShpLGEpLGE9aSk7cmV0dXJuIHRoaXN9LHNvcnQ6ZnVuY3Rpb24gRmx0KHQpe2Z1bmN0aW9uIGUoZSxuKXtyZXR1cm4gZSYmbj90KGUuX19kYXRhX18sbi5fX2RhdGFfXyk6IWUtIW59dHx8KHQ9VHN0KTtmb3IodmFyIG49dGhpcy5fZ3JvdXBzLGk9bi5sZW5ndGgscj1uZXcgQXJyYXkoaSksbz0wO288aTsrK28pe2Zvcih2YXIgYSxzPW5bb10sbD1zLmxlbmd0aCxjPXJbb109bmV3IEFycmF5KGwpLHU9MDt1PGw7Kyt1KShhPXNbdV0pJiYoY1t1XT1hKTtjLnNvcnQoZSl9cmV0dXJuIG5ldyB5bHQocix0aGlzLl9wYXJlbnRzKS5vcmRlcigpfSxjYWxsOmZ1bmN0aW9uIFZsdCgpe3ZhciB0PWFyZ3VtZW50c1swXTtyZXR1cm4gYXJndW1lbnRzWzBdPXRoaXMsdC5hcHBseShudWxsLGFyZ3VtZW50cyksdGhpc30sbm9kZXM6ZnVuY3Rpb24gamx0KCl7dmFyIHQ9bmV3IEFycmF5KHRoaXMuc2l6ZSgpKSxlPS0xO3JldHVybiB0aGlzLmVhY2goKGZ1bmN0aW9uKCl7dFsrK2VdPXRoaXN9KSksdH0sbm9kZTpmdW5jdGlvbiBVbHQoKXtmb3IodmFyIHQ9dGhpcy5fZ3JvdXBzLGU9MCxuPXQubGVuZ3RoO2U8bjsrK2UpZm9yKHZhciBpPXRbZV0scj0wLG89aS5sZW5ndGg7cjxvOysrcil7dmFyIGE9aVtyXTtpZihhKXJldHVybiBhfXJldHVybiBudWxsfSxzaXplOmZ1bmN0aW9uIEdsdCgpe3ZhciB0PTA7cmV0dXJuIHRoaXMuZWFjaCgoZnVuY3Rpb24oKXsrK3R9KSksdH0sZW1wdHk6ZnVuY3Rpb24gV2x0KCl7cmV0dXJuIXRoaXMubm9kZSgpfSxlYWNoOmZ1bmN0aW9uIHFsdCh0KXtmb3IodmFyIGU9dGhpcy5fZ3JvdXBzLG49MCxpPWUubGVuZ3RoO248aTsrK24pZm9yKHZhciByLG89ZVtuXSxhPTAscz1vLmxlbmd0aDthPHM7KythKShyPW9bYV0pJiZ0LmNhbGwocixyLl9fZGF0YV9fLGEsbyk7cmV0dXJuIHRoaXN9LGF0dHI6ZnVuY3Rpb24gWWx0KHQsZSl7dmFyIG49cHN0KHQpO2lmKGFyZ3VtZW50cy5sZW5ndGg8Mil7dmFyIGk9dGhpcy5ub2RlKCk7cmV0dXJuIG4ubG9jYWw/aS5nZXRBdHRyaWJ1dGVOUyhuLnNwYWNlLG4ubG9jYWwpOmkuZ2V0QXR0cmlidXRlKG4pfXJldHVybiB0aGlzLmVhY2goKG51bGw9PWU/bi5sb2NhbD9Dc3Q6QXN0OiJmdW5jdGlvbiI9PXR5cGVvZiBlP24ubG9jYWw/SXN0OlBzdDpuLmxvY2FsP0xzdDprc3QpKG4sZSkpfSxzdHlsZTpmdW5jdGlvbiBYbHQodCxlLG4pe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPjE/dGhpcy5lYWNoKChudWxsPT1lP09zdDoiZnVuY3Rpb24iPT10eXBlb2YgZT96c3Q6UnN0KSh0LGUsbnVsbD09bj8iIjpuKSk6RHN0KHRoaXMubm9kZSgpLHQpfSxwcm9wZXJ0eTpmdW5jdGlvbiAkbHQodCxlKXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD4xP3RoaXMuZWFjaCgobnVsbD09ZT9Cc3Q6ImZ1bmN0aW9uIj09dHlwZW9mIGU/RnN0OkhzdCkodCxlKSk6dGhpcy5ub2RlKClbdF19LGNsYXNzZWQ6ZnVuY3Rpb24gS2x0KHQsZSl7dmFyIG49VnN0KHQrIiIpO2lmKGFyZ3VtZW50cy5sZW5ndGg8Mil7Zm9yKHZhciBpPWpzdCh0aGlzLm5vZGUoKSkscj0tMSxvPW4ubGVuZ3RoOysrcjxvOylpZighaS5jb250YWlucyhuW3JdKSlyZXR1cm4hMTtyZXR1cm4hMH1yZXR1cm4gdGhpcy5lYWNoKCgiZnVuY3Rpb24iPT10eXBlb2YgZT9Yc3Q6ZT9xc3Q6WXN0KShuLGUpKX0sdGV4dDpmdW5jdGlvbiBabHQodCl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/dGhpcy5lYWNoKG51bGw9PXQ/JHN0OigiZnVuY3Rpb24iPT10eXBlb2YgdD9ac3Q6S3N0KSh0KSk6dGhpcy5ub2RlKCkudGV4dENvbnRlbnR9LGh0bWw6ZnVuY3Rpb24gSmx0KHQpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoP3RoaXMuZWFjaChudWxsPT10P0pzdDooImZ1bmN0aW9uIj09dHlwZW9mIHQ/dGx0OlFzdCkodCkpOnRoaXMubm9kZSgpLmlubmVySFRNTH0scmFpc2U6ZnVuY3Rpb24gUWx0KCl7cmV0dXJuIHRoaXMuZWFjaChlbHQpfSxsb3dlcjpmdW5jdGlvbiB0Y3QoKXtyZXR1cm4gdGhpcy5lYWNoKG5sdCl9LGFwcGVuZDpmdW5jdGlvbiBlY3QodCl7dmFyIGU9ImZ1bmN0aW9uIj09dHlwZW9mIHQ/dDpnc3QodCk7cmV0dXJuIHRoaXMuc2VsZWN0KChmdW5jdGlvbigpe3JldHVybiB0aGlzLmFwcGVuZENoaWxkKGUuYXBwbHkodGhpcyxhcmd1bWVudHMpKX0pKX0saW5zZXJ0OmZ1bmN0aW9uIG5jdCh0LGUpe3ZhciBuPSJmdW5jdGlvbiI9PXR5cGVvZiB0P3Q6Z3N0KHQpLGk9bnVsbD09ZT9pbHQ6ImZ1bmN0aW9uIj09dHlwZW9mIGU/ZTp5c3QoZSk7cmV0dXJuIHRoaXMuc2VsZWN0KChmdW5jdGlvbigpe3JldHVybiB0aGlzLmluc2VydEJlZm9yZShuLmFwcGx5KHRoaXMsYXJndW1lbnRzKSxpLmFwcGx5KHRoaXMsYXJndW1lbnRzKXx8bnVsbCl9KSl9LHJlbW92ZTpmdW5jdGlvbiBpY3QoKXtyZXR1cm4gdGhpcy5lYWNoKHJsdCl9LGNsb25lOmZ1bmN0aW9uIHJjdCh0KXtyZXR1cm4gdGhpcy5zZWxlY3QodD9hbHQ6b2x0KX0sZGF0dW06ZnVuY3Rpb24gb2N0KHQpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoP3RoaXMucHJvcGVydHkoIl9fZGF0YV9fIix0KTp0aGlzLm5vZGUoKS5fX2RhdGFfX30sb246ZnVuY3Rpb24gYWN0KHQsZSxuKXt2YXIgaSxyLG89aGx0KHQrIiIpLGE9by5sZW5ndGg7aWYoIShhcmd1bWVudHMubGVuZ3RoPDIpKXtmb3Iocz1lP3BsdDpkbHQsbnVsbD09biYmKG49ITEpLGk9MDtpPGE7KytpKXRoaXMuZWFjaChzKG9baV0sZSxuKSk7cmV0dXJuIHRoaXN9dmFyIHM9dGhpcy5ub2RlKCkuX19vbjtpZihzKWZvcih2YXIgbCxjPTAsdT1zLmxlbmd0aDtjPHU7KytjKWZvcihpPTAsbD1zW2NdO2k8YTsrK2kpaWYoKHI9b1tpXSkudHlwZT09PWwudHlwZSYmci5uYW1lPT09bC5uYW1lKXJldHVybiBsLnZhbHVlfSxkaXNwYXRjaDpmdW5jdGlvbiBzY3QodCxlKXtyZXR1cm4gdGhpcy5lYWNoKCgiZnVuY3Rpb24iPT10eXBlb2YgZT9nbHQ6bWx0KSh0LGUpKX19O3ZhciBsY3Q9LjcsY2N0PTEvbGN0LHVjdD0iXFxzKihbKy1dP1xcZCspXFxzKiIsaGN0PSJcXHMqKFsrLV0/XFxkKlxcLj9cXGQrKD86W2VFXVsrLV0/XFxkKyk/KVxccyoiLGRjdD0iXFxzKihbKy1dP1xcZCpcXC4/XFxkKyg/OltlRV1bKy1dP1xcZCspPyklXFxzKiIscGN0PS9eIyhbMC05YS1mXXszLDh9KSQvLGZjdD1uZXcgUmVnRXhwKCJecmdiXFwoIitbdWN0LHVjdCx1Y3RdKyJcXCkkIiksbWN0PW5ldyBSZWdFeHAoIl5yZ2JcXCgiK1tkY3QsZGN0LGRjdF0rIlxcKSQiKSxnY3Q9bmV3IFJlZ0V4cCgiXnJnYmFcXCgiK1t1Y3QsdWN0LHVjdCxoY3RdKyJcXCkkIiksX2N0PW5ldyBSZWdFeHAoIl5yZ2JhXFwoIitbZGN0LGRjdCxkY3QsaGN0XSsiXFwpJCIpLHljdD1uZXcgUmVnRXhwKCJeaHNsXFwoIitbaGN0LGRjdCxkY3RdKyJcXCkkIiksdmN0PW5ldyBSZWdFeHAoIl5oc2xhXFwoIitbaGN0LGRjdCxkY3QsaGN0XSsiXFwpJCIpLGJjdD17YWxpY2VibHVlOjE1NzkyMzgzLGFudGlxdWV3aGl0ZToxNjQ0NDM3NSxhcXVhOjY1NTM1LGFxdWFtYXJpbmU6ODM4ODU2NCxhenVyZToxNTc5NDE3NSxiZWlnZToxNjExOTI2MCxiaXNxdWU6MTY3NzAyNDQsYmxhY2s6MCxibGFuY2hlZGFsbW9uZDoxNjc3MjA0NSxibHVlOjI1NSxibHVldmlvbGV0OjkwNTUyMDIsYnJvd246MTA4MjQyMzQsYnVybHl3b29kOjE0NTk2MjMxLGNhZGV0Ymx1ZTo2MjY2NTI4LGNoYXJ0cmV1c2U6ODM4ODM1MixjaG9jb2xhdGU6MTM3ODk0NzAsY29yYWw6MTY3NDQyNzIsY29ybmZsb3dlcmJsdWU6NjU5MTk4MSxjb3Juc2lsazoxNjc3NTM4OCxjcmltc29uOjE0NDIzMTAwLGN5YW46NjU1MzUsZGFya2JsdWU6MTM5LGRhcmtjeWFuOjM1NzIzLGRhcmtnb2xkZW5yb2Q6MTIwOTI5MzksZGFya2dyYXk6MTExMTkwMTcsZGFya2dyZWVuOjI1NjAwLGRhcmtncmV5OjExMTE5MDE3LGRhcmtraGFraToxMjQzMzI1OSxkYXJrbWFnZW50YTo5MTA5NjQzLGRhcmtvbGl2ZWdyZWVuOjU1OTc5OTksZGFya29yYW5nZToxNjc0NzUyMCxkYXJrb3JjaGlkOjEwMDQwMDEyLGRhcmtyZWQ6OTEwOTUwNCxkYXJrc2FsbW9uOjE1MzA4NDEwLGRhcmtzZWFncmVlbjo5NDE5OTE5LGRhcmtzbGF0ZWJsdWU6NDczNDM0NyxkYXJrc2xhdGVncmF5OjMxMDA0OTUsZGFya3NsYXRlZ3JleTozMTAwNDk1LGRhcmt0dXJxdW9pc2U6NTI5NDUsZGFya3Zpb2xldDo5Njk5NTM5LGRlZXBwaW5rOjE2NzE2OTQ3LGRlZXBza3libHVlOjQ5MTUxLGRpbWdyYXk6NjkwODI2NSxkaW1ncmV5OjY5MDgyNjUsZG9kZ2VyYmx1ZToyMDAzMTk5LGZpcmVicmljazoxMTY3NDE0NixmbG9yYWx3aGl0ZToxNjc3NTkyMCxmb3Jlc3RncmVlbjoyMjYzODQyLGZ1Y2hzaWE6MTY3MTE5MzUsZ2FpbnNib3JvOjE0NDc0NDYwLGdob3N0d2hpdGU6MTYzMTY2NzEsZ29sZDoxNjc2NjcyMCxnb2xkZW5yb2Q6MTQzMjkxMjAsZ3JheTo4NDIxNTA0LGdyZWVuOjMyNzY4LGdyZWVueWVsbG93OjExNDAzMDU1LGdyZXk6ODQyMTUwNCxob25leWRldzoxNTc5NDE2MCxob3RwaW5rOjE2NzM4NzQwLGluZGlhbnJlZDoxMzQ1ODUyNCxpbmRpZ286NDkxNTMzMCxpdm9yeToxNjc3NzIwMCxraGFraToxNTc4NzY2MCxsYXZlbmRlcjoxNTEzMjQxMCxsYXZlbmRlcmJsdXNoOjE2NzczMzY1LGxhd25ncmVlbjo4MTkwOTc2LGxlbW9uY2hpZmZvbjoxNjc3NTg4NSxsaWdodGJsdWU6MTEzOTMyNTQsbGlnaHRjb3JhbDoxNTc2MTUzNixsaWdodGN5YW46MTQ3NDU1OTksbGlnaHRnb2xkZW5yb2R5ZWxsb3c6MTY0NDgyMTAsbGlnaHRncmF5OjEzODgyMzIzLGxpZ2h0Z3JlZW46OTQ5ODI1NixsaWdodGdyZXk6MTM4ODIzMjMsbGlnaHRwaW5rOjE2NzU4NDY1LGxpZ2h0c2FsbW9uOjE2NzUyNzYyLGxpZ2h0c2VhZ3JlZW46MjE0Mjg5MCxsaWdodHNreWJsdWU6ODkwMDM0NixsaWdodHNsYXRlZ3JheTo3ODMzNzUzLGxpZ2h0c2xhdGVncmV5Ojc4MzM3NTMsbGlnaHRzdGVlbGJsdWU6MTE1ODQ3MzQsbGlnaHR5ZWxsb3c6MTY3NzcxODQsbGltZTo2NTI4MCxsaW1lZ3JlZW46MzMyOTMzMCxsaW5lbjoxNjQ0NTY3MCxtYWdlbnRhOjE2NzExOTM1LG1hcm9vbjo4Mzg4NjA4LG1lZGl1bWFxdWFtYXJpbmU6NjczNzMyMixtZWRpdW1ibHVlOjIwNSxtZWRpdW1vcmNoaWQ6MTIyMTE2NjcsbWVkaXVtcHVycGxlOjk2NjI2ODMsbWVkaXVtc2VhZ3JlZW46Mzk3ODA5NyxtZWRpdW1zbGF0ZWJsdWU6ODA4Nzc5MCxtZWRpdW1zcHJpbmdncmVlbjo2NDE1NCxtZWRpdW10dXJxdW9pc2U6NDc3MjMwMCxtZWRpdW12aW9sZXRyZWQ6MTMwNDcxNzMsbWlkbmlnaHRibHVlOjE2NDQ5MTIsbWludGNyZWFtOjE2MTIxODUwLG1pc3R5cm9zZToxNjc3MDI3Myxtb2NjYXNpbjoxNjc3MDIyOSxuYXZham93aGl0ZToxNjc2ODY4NSxuYXZ5OjEyOCxvbGRsYWNlOjE2NjQzNTU4LG9saXZlOjg0MjEzNzYsb2xpdmVkcmFiOjcwNDg3Mzksb3JhbmdlOjE2NzUzOTIwLG9yYW5nZXJlZDoxNjcyOTM0NCxvcmNoaWQ6MTQzMTU3MzQscGFsZWdvbGRlbnJvZDoxNTY1NzEzMCxwYWxlZ3JlZW46MTAwMjU4ODAscGFsZXR1cnF1b2lzZToxMTUyOTk2NixwYWxldmlvbGV0cmVkOjE0MzgxMjAzLHBhcGF5YXdoaXA6MTY3NzMwNzcscGVhY2hwdWZmOjE2NzY3NjczLHBlcnU6MTM0Njg5OTEscGluazoxNjc2MTAzNSxwbHVtOjE0NTI0NjM3LHBvd2RlcmJsdWU6MTE1OTE5MTAscHVycGxlOjgzODg3MzYscmViZWNjYXB1cnBsZTo2Njk3ODgxLHJlZDoxNjcxMTY4MCxyb3N5YnJvd246MTIzNTc1MTkscm95YWxibHVlOjQyODY5NDUsc2FkZGxlYnJvd246OTEyNzE4NyxzYWxtb246MTY0MTY4ODIsc2FuZHlicm93bjoxNjAzMjg2NCxzZWFncmVlbjozMDUwMzI3LHNlYXNoZWxsOjE2Nzc0NjM4LHNpZW5uYToxMDUwNjc5NyxzaWx2ZXI6MTI2MzIyNTYsc2t5Ymx1ZTo4OTAwMzMxLHNsYXRlYmx1ZTo2OTcwMDYxLHNsYXRlZ3JheTo3MzcyOTQ0LHNsYXRlZ3JleTo3MzcyOTQ0LHNub3c6MTY3NzU5MzAsc3ByaW5nZ3JlZW46NjU0MDcsc3RlZWxibHVlOjQ2MjA5ODAsdGFuOjEzODA4NzgwLHRlYWw6MzI4OTYsdGhpc3RsZToxNDIwNDg4OCx0b21hdG86MTY3MzcwOTUsdHVycXVvaXNlOjQyNTE4NTYsdmlvbGV0OjE1NjMxMDg2LHdoZWF0OjE2MTEzMzMxLHdoaXRlOjE2Nzc3MjE1LHdoaXRlc21va2U6MTYxMTkyODUseWVsbG93OjE2Nzc2OTYwLHllbGxvd2dyZWVuOjEwMTQ1MDc0fTtmdW5jdGlvbiB4Y3QoKXtyZXR1cm4gdGhpcy5yZ2IoKS5mb3JtYXRIZXgoKX1mdW5jdGlvbiB3Y3QoKXtyZXR1cm4gdGhpcy5yZ2IoKS5mb3JtYXRSZ2IoKX1mdW5jdGlvbiBTY3QodCl7dmFyIGUsbjtyZXR1cm4gdD0odCsiIikudHJpbSgpLnRvTG93ZXJDYXNlKCksKGU9cGN0LmV4ZWModCkpPyhuPWVbMV0ubGVuZ3RoLGU9cGFyc2VJbnQoZVsxXSwxNiksNj09PW4/TWN0KGUpOjM9PT1uP25ldyBDY3QoZT4+OCYxNXxlPj40JjI0MCxlPj40JjE1fDI0MCZlLCgxNSZlKTw8NHwxNSZlLDEpOjg9PT1uP0VjdChlPj4yNCYyNTUsZT4+MTYmMjU1LGU+PjgmMjU1LCgyNTUmZSkvMjU1KTo0PT09bj9FY3QoZT4+MTImMTV8ZT4+OCYyNDAsZT4+OCYxNXxlPj40JjI0MCxlPj40JjE1fDI0MCZlLCgoMTUmZSk8PDR8MTUmZSkvMjU1KTpudWxsKTooZT1mY3QuZXhlYyh0KSk/bmV3IENjdChlWzFdLGVbMl0sZVszXSwxKTooZT1tY3QuZXhlYyh0KSk/bmV3IENjdCgyNTUqZVsxXS8xMDAsMjU1KmVbMl0vMTAwLDI1NSplWzNdLzEwMCwxKTooZT1nY3QuZXhlYyh0KSk/RWN0KGVbMV0sZVsyXSxlWzNdLGVbNF0pOihlPV9jdC5leGVjKHQpKT9FY3QoMjU1KmVbMV0vMTAwLDI1NSplWzJdLzEwMCwyNTUqZVszXS8xMDAsZVs0XSk6KGU9eWN0LmV4ZWModCkpP0ljdChlWzFdLGVbMl0vMTAwLGVbM10vMTAwLDEpOihlPXZjdC5leGVjKHQpKT9JY3QoZVsxXSxlWzJdLzEwMCxlWzNdLzEwMCxlWzRdKTpiY3QuaGFzT3duUHJvcGVydHkodCk/TWN0KGJjdFt0XSk6InRyYW5zcGFyZW50Ij09PXQ/bmV3IENjdChOYU4sTmFOLE5hTiwwKTpudWxsfWZ1bmN0aW9uIE1jdCh0KXtyZXR1cm4gbmV3IENjdCh0Pj4xNiYyNTUsdD4+OCYyNTUsMjU1JnQsMSl9ZnVuY3Rpb24gRWN0KHQsZSxuLGkpe3JldHVybiBpPD0wJiYodD1lPW49TmFOKSxuZXcgQ2N0KHQsZSxuLGkpfWZ1bmN0aW9uIFRjdCh0KXtyZXR1cm4gdCBpbnN0YW5jZW9mIExsdHx8KHQ9U2N0KHQpKSx0P25ldyBDY3QoKHQ9dC5yZ2IoKSkucix0LmcsdC5iLHQub3BhY2l0eSk6bmV3IENjdH1mdW5jdGlvbiBBY3QodCxlLG4saSl7cmV0dXJuIDE9PT1hcmd1bWVudHMubGVuZ3RoP1RjdCh0KTpuZXcgQ2N0KHQsZSxuLG51bGw9PWk/MTppKX1mdW5jdGlvbiBDY3QodCxlLG4saSl7dGhpcy5yPSt0LHRoaXMuZz0rZSx0aGlzLmI9K24sdGhpcy5vcGFjaXR5PStpfWZ1bmN0aW9uIGtjdCgpe3JldHVybiIjIitQY3QodGhpcy5yKStQY3QodGhpcy5nKStQY3QodGhpcy5iKX1mdW5jdGlvbiBMY3QoKXt2YXIgdD10aGlzLm9wYWNpdHk7cmV0dXJuKDE9PT0odD1pc05hTih0KT8xOk1hdGgubWF4KDAsTWF0aC5taW4oMSx0KSkpPyJyZ2IoIjoicmdiYSgiKStNYXRoLm1heCgwLE1hdGgubWluKDI1NSxNYXRoLnJvdW5kKHRoaXMucil8fDApKSsiLCAiK01hdGgubWF4KDAsTWF0aC5taW4oMjU1LE1hdGgucm91bmQodGhpcy5nKXx8MCkpKyIsICIrTWF0aC5tYXgoMCxNYXRoLm1pbigyNTUsTWF0aC5yb3VuZCh0aGlzLmIpfHwwKSkrKDE9PT10PyIpIjoiLCAiK3QrIikiKX1mdW5jdGlvbiBQY3QodCl7cmV0dXJuKCh0PU1hdGgubWF4KDAsTWF0aC5taW4oMjU1LE1hdGgucm91bmQodCl8fDApKSk8MTY/IjAiOiIiKSt0LnRvU3RyaW5nKDE2KX1mdW5jdGlvbiBJY3QodCxlLG4saSl7cmV0dXJuIGk8PTA/dD1lPW49TmFOOm48PTB8fG4+PTE/dD1lPU5hTjplPD0wJiYodD1OYU4pLG5ldyBPY3QodCxlLG4saSl9ZnVuY3Rpb24gTmN0KHQpe2lmKHQgaW5zdGFuY2VvZiBPY3QpcmV0dXJuIG5ldyBPY3QodC5oLHQucyx0LmwsdC5vcGFjaXR5KTtpZih0IGluc3RhbmNlb2YgTGx0fHwodD1TY3QodCkpLCF0KXJldHVybiBuZXcgT2N0O2lmKHQgaW5zdGFuY2VvZiBPY3QpcmV0dXJuIHQ7dmFyIGU9KHQ9dC5yZ2IoKSkuci8yNTUsbj10LmcvMjU1LGk9dC5iLzI1NSxyPU1hdGgubWluKGUsbixpKSxvPU1hdGgubWF4KGUsbixpKSxhPU5hTixzPW8tcixsPShvK3IpLzI7cmV0dXJuIHM/KGE9ZT09PW8/KG4taSkvcys2KihuPGkpOm49PT1vPyhpLWUpL3MrMjooZS1uKS9zKzQscy89bDwuNT9vK3I6Mi1vLXIsYSo9NjApOnM9bD4wJiZsPDE/MDphLG5ldyBPY3QoYSxzLGwsdC5vcGFjaXR5KX1mdW5jdGlvbiBPY3QodCxlLG4saSl7dGhpcy5oPSt0LHRoaXMucz0rZSx0aGlzLmw9K24sdGhpcy5vcGFjaXR5PStpfWZ1bmN0aW9uIFJjdCh0LGUsbil7cmV0dXJuIDI1NSoodDw2MD9lKyhuLWUpKnQvNjA6dDwxODA/bjp0PDI0MD9lKyhuLWUpKigyNDAtdCkvNjA6ZSl9ZnVuY3Rpb24gemN0KHQpe3JldHVybiBmdW5jdGlvbigpe3JldHVybiB0fX1mdW5jdGlvbiBEY3QodCxlKXt2YXIgbj1lLXQ7cmV0dXJuIG4/KGZ1bmN0aW9uIGkodCxlKXtyZXR1cm4gZnVuY3Rpb24obil7cmV0dXJuIHQrbiplfX0pKHQsbik6emN0KGlzTmFOKHQpP2U6dCl9Q2x0KExsdCxTY3Qse2NvcHk6ZnVuY3Rpb24odCl7cmV0dXJuIE9iamVjdC5hc3NpZ24obmV3IHRoaXMuY29uc3RydWN0b3IsdGhpcyx0KX0sZGlzcGxheWFibGU6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5yZ2IoKS5kaXNwbGF5YWJsZSgpfSxoZXg6eGN0LGZvcm1hdEhleDp4Y3QsZm9ybWF0SHNsOmZ1bmN0aW9uIEJjdCgpe3JldHVybiBOY3QodGhpcykuZm9ybWF0SHNsKCl9LGZvcm1hdFJnYjp3Y3QsdG9TdHJpbmc6d2N0fSksQ2x0KENjdCxBY3Qsa2x0KExsdCx7YnJpZ2h0ZXI6ZnVuY3Rpb24odCl7cmV0dXJuIHQ9bnVsbD09dD9jY3Q6TWF0aC5wb3coY2N0LHQpLG5ldyBDY3QodGhpcy5yKnQsdGhpcy5nKnQsdGhpcy5iKnQsdGhpcy5vcGFjaXR5KX0sZGFya2VyOmZ1bmN0aW9uKHQpe3JldHVybiB0PW51bGw9PXQ/bGN0Ok1hdGgucG93KGxjdCx0KSxuZXcgQ2N0KHRoaXMucip0LHRoaXMuZyp0LHRoaXMuYip0LHRoaXMub3BhY2l0eSl9LHJnYjpmdW5jdGlvbigpe3JldHVybiB0aGlzfSxkaXNwbGF5YWJsZTpmdW5jdGlvbigpe3JldHVybi0uNTw9dGhpcy5yJiZ0aGlzLnI8MjU1LjUmJi0uNTw9dGhpcy5nJiZ0aGlzLmc8MjU1LjUmJi0uNTw9dGhpcy5iJiZ0aGlzLmI8MjU1LjUmJjA8PXRoaXMub3BhY2l0eSYmdGhpcy5vcGFjaXR5PD0xfSxoZXg6a2N0LGZvcm1hdEhleDprY3QsZm9ybWF0UmdiOkxjdCx0b1N0cmluZzpMY3R9KSksQ2x0KE9jdCwoZnVuY3Rpb24gSGN0KHQsZSxuLGkpe3JldHVybiAxPT09YXJndW1lbnRzLmxlbmd0aD9OY3QodCk6bmV3IE9jdCh0LGUsbixudWxsPT1pPzE6aSl9KSxrbHQoTGx0LHticmlnaHRlcjpmdW5jdGlvbih0KXtyZXR1cm4gdD1udWxsPT10P2NjdDpNYXRoLnBvdyhjY3QsdCksbmV3IE9jdCh0aGlzLmgsdGhpcy5zLHRoaXMubCp0LHRoaXMub3BhY2l0eSl9LGRhcmtlcjpmdW5jdGlvbih0KXtyZXR1cm4gdD1udWxsPT10P2xjdDpNYXRoLnBvdyhsY3QsdCksbmV3IE9jdCh0aGlzLmgsdGhpcy5zLHRoaXMubCp0LHRoaXMub3BhY2l0eSl9LHJnYjpmdW5jdGlvbigpe3ZhciB0PXRoaXMuaCUzNjArMzYwKih0aGlzLmg8MCksZT1pc05hTih0KXx8aXNOYU4odGhpcy5zKT8wOnRoaXMucyxuPXRoaXMubCxpPW4rKG48LjU/bjoxLW4pKmUscj0yKm4taTtyZXR1cm4gbmV3IENjdChSY3QodD49MjQwP3QtMjQwOnQrMTIwLHIsaSksUmN0KHQscixpKSxSY3QodDwxMjA/dCsyNDA6dC0xMjAscixpKSx0aGlzLm9wYWNpdHkpfSxkaXNwbGF5YWJsZTpmdW5jdGlvbigpe3JldHVybigwPD10aGlzLnMmJnRoaXMuczw9MXx8aXNOYU4odGhpcy5zKSkmJjA8PXRoaXMubCYmdGhpcy5sPD0xJiYwPD10aGlzLm9wYWNpdHkmJnRoaXMub3BhY2l0eTw9MX0sZm9ybWF0SHNsOmZ1bmN0aW9uKCl7dmFyIHQ9dGhpcy5vcGFjaXR5O3JldHVybigxPT09KHQ9aXNOYU4odCk/MTpNYXRoLm1heCgwLE1hdGgubWluKDEsdCkpKT8iaHNsKCI6ImhzbGEoIikrKHRoaXMuaHx8MCkrIiwgIisxMDAqKHRoaXMuc3x8MCkrIiUsICIrMTAwKih0aGlzLmx8fDApKyIlIisoMT09PXQ/IikiOiIsICIrdCsiKSIpfX0pKTt2YXIgRmN0PShmdW5jdGlvbiB0KGUpe3ZhciBuPShmdW5jdGlvbiBpKHQpe3JldHVybiAxPT0odD0rdCk/RGN0OmZ1bmN0aW9uKGUsbil7cmV0dXJuIG4tZT8oZnVuY3Rpb24gaSh0LGUsbil7cmV0dXJuIHQ9TWF0aC5wb3codCxuKSxlPU1hdGgucG93KGUsbiktdCxuPTEvbixmdW5jdGlvbihpKXtyZXR1cm4gTWF0aC5wb3codCtpKmUsbil9fSkoZSxuLHQpOnpjdChpc05hTihlKT9uOmUpfX0pKGUpO2Z1bmN0aW9uIHIodCxlKXt2YXIgaT1uKCh0PUFjdCh0KSkuciwoZT1BY3QoZSkpLnIpLHI9bih0LmcsZS5nKSxvPW4odC5iLGUuYiksYT1EY3QodC5vcGFjaXR5LGUub3BhY2l0eSk7cmV0dXJuIGZ1bmN0aW9uKGUpe3JldHVybiB0LnI9aShlKSx0Lmc9cihlKSx0LmI9byhlKSx0Lm9wYWNpdHk9YShlKSx0KyIifX1yZXR1cm4gci5nYW1tYT10LHJ9KSgxKTtmdW5jdGlvbiBWY3QodCxlKXtyZXR1cm4gdD0rdCxlPStlLGZ1bmN0aW9uKG4pe3JldHVybiB0KigxLW4pK2Uqbn19dmFyIGpjdD0vWy0rXT8oPzpcZCtcLj9cZCp8XC4/XGQrKSg/OltlRV1bLStdP1xkKyk/L2csVWN0PW5ldyBSZWdFeHAoamN0LnNvdXJjZSwiZyIpO2Z1bmN0aW9uIEdjdCh0LGUpe3ZhciBuLGkscixvPWpjdC5sYXN0SW5kZXg9VWN0Lmxhc3RJbmRleD0wLGE9LTEscz1bXSxsPVtdO2Zvcih0Kz0iIixlKz0iIjsobj1qY3QuZXhlYyh0KSkmJihpPVVjdC5leGVjKGUpKTspKHI9aS5pbmRleCk+byYmKHI9ZS5zbGljZShvLHIpLHNbYV0/c1thXSs9cjpzWysrYV09ciksKG49blswXSk9PT0oaT1pWzBdKT9zW2FdP3NbYV0rPWk6c1srK2FdPWk6KHNbKythXT1udWxsLGwucHVzaCh7aTphLHg6VmN0KG4saSl9KSksbz1VY3QubGFzdEluZGV4O3JldHVybiBvPGUubGVuZ3RoJiYocj1lLnNsaWNlKG8pLHNbYV0/c1thXSs9cjpzWysrYV09cikscy5sZW5ndGg8Mj9sWzBdPyhmdW5jdGlvbiBjKHQpe3JldHVybiBmdW5jdGlvbihlKXtyZXR1cm4gdChlKSsiIn19KShsWzBdLngpOihmdW5jdGlvbiB1KHQpe3JldHVybiBmdW5jdGlvbigpe3JldHVybiB0fX0pKGUpOihlPWwubGVuZ3RoLGZ1bmN0aW9uKHQpe2Zvcih2YXIgbixpPTA7aTxlOysraSlzWyhuPWxbaV0pLmldPW4ueCh0KTtyZXR1cm4gcy5qb2luKCIiKX0pfXZhciBXY3QscWN0LFljdCxYY3QsJGN0PTE4MC9NYXRoLlBJLEtjdD17dHJhbnNsYXRlWDowLHRyYW5zbGF0ZVk6MCxyb3RhdGU6MCxza2V3WDowLHNjYWxlWDoxLHNjYWxlWToxfTtmdW5jdGlvbiBaY3QodCxlLG4saSxyLG8pe3ZhciBhLHMsbDtyZXR1cm4oYT1NYXRoLnNxcnQodCp0K2UqZSkpJiYodC89YSxlLz1hKSwobD10Km4rZSppKSYmKG4tPXQqbCxpLT1lKmwpLChzPU1hdGguc3FydChuKm4raSppKSkmJihuLz1zLGkvPXMsbC89cyksdCppPGUqbiYmKHQ9LXQsZT0tZSxsPS1sLGE9LWEpLHt0cmFuc2xhdGVYOnIsdHJhbnNsYXRlWTpvLHJvdGF0ZTpNYXRoLmF0YW4yKGUsdCkqJGN0LHNrZXdYOk1hdGguYXRhbihsKSokY3Qsc2NhbGVYOmEsc2NhbGVZOnN9fWZ1bmN0aW9uIEpjdCh0LGUsbixpKXtmdW5jdGlvbiByKHQpe3JldHVybiB0Lmxlbmd0aD90LnBvcCgpKyIgIjoiIn1yZXR1cm4gZnVuY3Rpb24obyxhKXt2YXIgcz1bXSxsPVtdO3JldHVybiBvPXQobyksYT10KGEpLChmdW5jdGlvbiBjKHQsaSxyLG8sYSxzKXtpZih0IT09cnx8aSE9PW8pe3ZhciBsPWEucHVzaCgidHJhbnNsYXRlKCIsbnVsbCxlLG51bGwsbik7cy5wdXNoKHtpOmwtNCx4OlZjdCh0LHIpfSx7aTpsLTIseDpWY3QoaSxvKX0pfWVsc2Uocnx8bykmJmEucHVzaCgidHJhbnNsYXRlKCIrcitlK28rbil9KShvLnRyYW5zbGF0ZVgsby50cmFuc2xhdGVZLGEudHJhbnNsYXRlWCxhLnRyYW5zbGF0ZVkscyxsKSwoZnVuY3Rpb24gdSh0LGUsbixvKXt0IT09ZT8odC1lPjE4MD9lKz0zNjA6ZS10PjE4MCYmKHQrPTM2MCksby5wdXNoKHtpOm4ucHVzaChyKG4pKyJyb3RhdGUoIixudWxsLGkpLTIseDpWY3QodCxlKX0pKTplJiZuLnB1c2gocihuKSsicm90YXRlKCIrZStpKX0pKG8ucm90YXRlLGEucm90YXRlLHMsbCksKGZ1bmN0aW9uIGgodCxlLG4sbyl7dCE9PWU/by5wdXNoKHtpOm4ucHVzaChyKG4pKyJza2V3WCgiLG51bGwsaSktMix4OlZjdCh0LGUpfSk6ZSYmbi5wdXNoKHIobikrInNrZXdYKCIrZStpKX0pKG8uc2tld1gsYS5za2V3WCxzLGwpLChmdW5jdGlvbiBkKHQsZSxuLGksbyxhKXtpZih0IT09bnx8ZSE9PWkpe3ZhciBzPW8ucHVzaChyKG8pKyJzY2FsZSgiLG51bGwsIiwiLG51bGwsIikiKTthLnB1c2goe2k6cy00LHg6VmN0KHQsbil9LHtpOnMtMix4OlZjdChlLGkpfSl9ZWxzZSAxPT09biYmMT09PWl8fG8ucHVzaChyKG8pKyJzY2FsZSgiK24rIiwiK2krIikiKX0pKG8uc2NhbGVYLG8uc2NhbGVZLGEuc2NhbGVYLGEuc2NhbGVZLHMsbCksbz1hPW51bGwsZnVuY3Rpb24odCl7Zm9yKHZhciBlLG49LTEsaT1sLmxlbmd0aDsrK248aTspc1soZT1sW25dKS5pXT1lLngodCk7cmV0dXJuIHMuam9pbigiIil9fX12YXIgUWN0PUpjdCgoZnVuY3Rpb24gdHV0KHQpe3JldHVybiJub25lIj09PXQ/S2N0OihXY3R8fChXY3Q9ZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgiRElWIikscWN0PWRvY3VtZW50LmRvY3VtZW50RWxlbWVudCxZY3Q9ZG9jdW1lbnQuZGVmYXVsdFZpZXcpLFdjdC5zdHlsZS50cmFuc2Zvcm09dCx0PVljdC5nZXRDb21wdXRlZFN0eWxlKHFjdC5hcHBlbmRDaGlsZChXY3QpLG51bGwpLmdldFByb3BlcnR5VmFsdWUoInRyYW5zZm9ybSIpLHFjdC5yZW1vdmVDaGlsZChXY3QpLFpjdCgrKHQ9dC5zbGljZSg3LC0xKS5zcGxpdCgiLCIpKVswXSwrdFsxXSwrdFsyXSwrdFszXSwrdFs0XSwrdFs1XSkpfSksInB4LCAiLCJweCkiLCJkZWcpIiksZXV0PUpjdCgoZnVuY3Rpb24gbnV0KHQpe3JldHVybiBudWxsPT10P0tjdDooWGN0fHwoWGN0PWRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciLCJnIikpLFhjdC5zZXRBdHRyaWJ1dGUoInRyYW5zZm9ybSIsdCksKHQ9WGN0LnRyYW5zZm9ybS5iYXNlVmFsLmNvbnNvbGlkYXRlKCkpP1pjdCgodD10Lm1hdHJpeCkuYSx0LmIsdC5jLHQuZCx0LmUsdC5mKTpLY3QpfSksIiwgIiwiKSIsIikiKSxpdXQ9TWF0aC5TUVJUMjtmdW5jdGlvbiBydXQodCl7cmV0dXJuKCh0PU1hdGguZXhwKHQpKSsxL3QpLzJ9ZnVuY3Rpb24gb3V0KHQsZSl7dmFyIG4saSxyPXRbMF0sbz10WzFdLGE9dFsyXSxzPWVbMl0sbD1lWzBdLXIsYz1lWzFdLW8sdT1sKmwrYypjO2lmKHU8MWUtMTIpaT1NYXRoLmxvZyhzL2EpL2l1dCxuPWZ1bmN0aW9uKHQpe3JldHVybltyK3QqbCxvK3QqYyxhKk1hdGguZXhwKGl1dCp0KmkpXX07ZWxzZXt2YXIgaD1NYXRoLnNxcnQodSksZD0ocypzLWEqYSs0KnUpLygyKmEqMipoKSxwPShzKnMtYSphLTQqdSkvKDIqcyoyKmgpLGY9TWF0aC5sb2coTWF0aC5zcXJ0KGQqZCsxKS1kKSxtPU1hdGgubG9nKE1hdGguc3FydChwKnArMSktcCk7aT0obS1mKS9pdXQsbj1mdW5jdGlvbih0KXt2YXIgZT10Kmksbj1ydXQoZikscz1hLygyKmgpKihuKihmdW5jdGlvbiB1KHQpe3JldHVybigodD1NYXRoLmV4cCgyKnQpKS0xKS8odCsxKX0pKGl1dCplK2YpLShmdW5jdGlvbiBkKHQpe3JldHVybigodD1NYXRoLmV4cCh0KSktMS90KS8yfSkoZikpO3JldHVybltyK3MqbCxvK3MqYyxhKm4vcnV0KGl1dCplK2YpXX19cmV0dXJuIG4uZHVyYXRpb249MWUzKmksbn12YXIgYXV0LHN1dCxsdXQ9MCxjdXQ9MCx1dXQ9MCxodXQ9MCxkdXQ9MCxwdXQ9MCxmdXQ9Im9iamVjdCI9PXR5cGVvZiBwZXJmb3JtYW5jZSYmcGVyZm9ybWFuY2Uubm93P3BlcmZvcm1hbmNlOkRhdGUsbXV0PSJvYmplY3QiPT10eXBlb2Ygd2luZG93JiZ3aW5kb3cucmVxdWVzdEFuaW1hdGlvbkZyYW1lP3dpbmRvdy5yZXF1ZXN0QW5pbWF0aW9uRnJhbWUuYmluZCh3aW5kb3cpOmZ1bmN0aW9uKHQpe3NldFRpbWVvdXQodCwxNyl9O2Z1bmN0aW9uIGd1dCgpe3JldHVybiBkdXR8fChtdXQoX3V0KSxkdXQ9ZnV0Lm5vdygpK3B1dCl9ZnVuY3Rpb24gX3V0KCl7ZHV0PTB9ZnVuY3Rpb24geXV0KCl7dGhpcy5fY2FsbD10aGlzLl90aW1lPXRoaXMuX25leHQ9bnVsbH1mdW5jdGlvbiB2dXQodCxlLG4pe3ZhciBpPW5ldyB5dXQ7cmV0dXJuIGkucmVzdGFydCh0LGUsbiksaX1mdW5jdGlvbiBidXQoKXtkdXQ9KGh1dD1mdXQubm93KCkpK3B1dCxsdXQ9Y3V0PTA7dHJ5eyEoZnVuY3Rpb24gdCgpe2d1dCgpLCsrbHV0O2Zvcih2YXIgdCxlPWF1dDtlOykodD1kdXQtZS5fdGltZSk+PTAmJmUuX2NhbGwuY2FsbChudWxsLHQpLGU9ZS5fbmV4dDstLWx1dH0pKCl9ZmluYWxseXtsdXQ9MCwoZnVuY3Rpb24gZSgpe2Zvcih2YXIgdCxlLG49YXV0LGk9MS8wO247KW4uX2NhbGw/KGk+bi5fdGltZSYmKGk9bi5fdGltZSksdD1uLG49bi5fbmV4dCk6KGU9bi5fbmV4dCxuLl9uZXh0PW51bGwsbj10P3QuX25leHQ9ZTphdXQ9ZSk7c3V0PXQsd3V0KGkpfSkoKSxkdXQ9MH19ZnVuY3Rpb24geHV0KCl7dmFyIHQ9ZnV0Lm5vdygpLGU9dC1odXQ7ZT4xZTMmJihwdXQtPWUsaHV0PXQpfWZ1bmN0aW9uIHd1dCh0KXtsdXR8fChjdXQmJihjdXQ9Y2xlYXJUaW1lb3V0KGN1dCkpLHQtZHV0PjI0Pyh0PDEvMCYmKGN1dD1zZXRUaW1lb3V0KGJ1dCx0LWZ1dC5ub3coKS1wdXQpKSx1dXQmJih1dXQ9Y2xlYXJJbnRlcnZhbCh1dXQpKSk6KHV1dHx8KGh1dD1mdXQubm93KCksdXV0PXNldEludGVydmFsKHh1dCwxZTMpKSxsdXQ9MSxtdXQoYnV0KSkpfWZ1bmN0aW9uIFN1dCh0LGUsbil7dmFyIGk9bmV3IHl1dDtyZXR1cm4gaS5yZXN0YXJ0KChmdW5jdGlvbihuKXtpLnN0b3AoKSx0KG4rZSl9KSxlPW51bGw9PWU/MDorZSxuKSxpfXl1dC5wcm90b3R5cGU9dnV0LnByb3RvdHlwZT17Y29uc3RydWN0b3I6eXV0LHJlc3RhcnQ6ZnVuY3Rpb24odCxlLG4pe2lmKCJmdW5jdGlvbiIhPXR5cGVvZiB0KXRocm93IG5ldyBUeXBlRXJyb3IoImNhbGxiYWNrIGlzIG5vdCBhIGZ1bmN0aW9uIik7bj0obnVsbD09bj9ndXQoKTorbikrKG51bGw9PWU/MDorZSksdGhpcy5fbmV4dHx8c3V0PT09dGhpc3x8KHN1dD9zdXQuX25leHQ9dGhpczphdXQ9dGhpcyxzdXQ9dGhpcyksdGhpcy5fY2FsbD10LHRoaXMuX3RpbWU9bix3dXQoKX0sc3RvcDpmdW5jdGlvbigpe3RoaXMuX2NhbGwmJih0aGlzLl9jYWxsPW51bGwsdGhpcy5fdGltZT0xLzAsd3V0KCkpfX07dmFyIE11dD1hc3QoInN0YXJ0IiwiZW5kIiwiY2FuY2VsIiwiaW50ZXJydXB0IiksRXV0PVtdO2Z1bmN0aW9uIFR1dCh0LGUsbixpLHIsbyl7dmFyIGE9dC5fX3RyYW5zaXRpb247aWYoYSl7aWYobiBpbiBhKXJldHVybn1lbHNlIHQuX190cmFuc2l0aW9uPXt9OyEoZnVuY3Rpb24gcyh0LGUsbil7dmFyIGkscj10Ll9fdHJhbnNpdGlvbjtmdW5jdGlvbiBvKGwpe3ZhciBjLHUsaCxkO2lmKDEhPT1uLnN0YXRlKXJldHVybiBzKCk7Zm9yKGMgaW4gcilpZigoZD1yW2NdKS5uYW1lPT09bi5uYW1lKXtpZigzPT09ZC5zdGF0ZSlyZXR1cm4gU3V0KG8pOzQ9PT1kLnN0YXRlPyhkLnN0YXRlPTYsZC50aW1lci5zdG9wKCksZC5vbi5jYWxsKCJpbnRlcnJ1cHQiLHQsdC5fX2RhdGFfXyxkLmluZGV4LGQuZ3JvdXApLGRlbGV0ZSByW2NdKTorYzxlJiYoZC5zdGF0ZT02LGQudGltZXIuc3RvcCgpLGQub24uY2FsbCgiY2FuY2VsIix0LHQuX19kYXRhX18sZC5pbmRleCxkLmdyb3VwKSxkZWxldGUgcltjXSl9aWYoU3V0KChmdW5jdGlvbigpezM9PT1uLnN0YXRlJiYobi5zdGF0ZT00LG4udGltZXIucmVzdGFydChhLG4uZGVsYXksbi50aW1lKSxhKGwpKX0pKSxuLnN0YXRlPTIsbi5vbi5jYWxsKCJzdGFydCIsdCx0Ll9fZGF0YV9fLG4uaW5kZXgsbi5ncm91cCksMj09PW4uc3RhdGUpe2ZvcihuLnN0YXRlPTMsaT1uZXcgQXJyYXkoaD1uLnR3ZWVuLmxlbmd0aCksYz0wLHU9LTE7YzxoOysrYykoZD1uLnR3ZWVuW2NdLnZhbHVlLmNhbGwodCx0Ll9fZGF0YV9fLG4uaW5kZXgsbi5ncm91cCkpJiYoaVsrK3VdPWQpO2kubGVuZ3RoPXUrMX19ZnVuY3Rpb24gYShlKXtmb3IodmFyIHI9ZTxuLmR1cmF0aW9uP24uZWFzZS5jYWxsKG51bGwsZS9uLmR1cmF0aW9uKToobi50aW1lci5yZXN0YXJ0KHMpLG4uc3RhdGU9NSwxKSxvPS0xLGE9aS5sZW5ndGg7KytvPGE7KWlbb10uY2FsbCh0LHIpOzU9PT1uLnN0YXRlJiYobi5vbi5jYWxsKCJlbmQiLHQsdC5fX2RhdGFfXyxuLmluZGV4LG4uZ3JvdXApLHMoKSl9ZnVuY3Rpb24gcygpe2Zvcih2YXIgaSBpbiBuLnN0YXRlPTYsbi50aW1lci5zdG9wKCksZGVsZXRlIHJbZV0scilyZXR1cm47ZGVsZXRlIHQuX190cmFuc2l0aW9ufXJbZV09bixuLnRpbWVyPXZ1dCgoZnVuY3Rpb24gbCh0KXtuLnN0YXRlPTEsbi50aW1lci5yZXN0YXJ0KG8sbi5kZWxheSxuLnRpbWUpLG4uZGVsYXk8PXQmJm8odC1uLmRlbGF5KX0pLDAsbi50aW1lKX0pKHQsbix7bmFtZTplLGluZGV4OmksZ3JvdXA6cixvbjpNdXQsdHdlZW46RXV0LHRpbWU6by50aW1lLGRlbGF5Om8uZGVsYXksZHVyYXRpb246by5kdXJhdGlvbixlYXNlOm8uZWFzZSx0aW1lcjpudWxsLHN0YXRlOjB9KX1mdW5jdGlvbiBBdXQodCxlKXt2YXIgbj1rdXQodCxlKTtpZihuLnN0YXRlPjApdGhyb3cgbmV3IEVycm9yKCJ0b28gbGF0ZTsgYWxyZWFkeSBzY2hlZHVsZWQiKTtyZXR1cm4gbn1mdW5jdGlvbiBDdXQodCxlKXt2YXIgbj1rdXQodCxlKTtpZihuLnN0YXRlPjMpdGhyb3cgbmV3IEVycm9yKCJ0b28gbGF0ZTsgYWxyZWFkeSBydW5uaW5nIik7cmV0dXJuIG59ZnVuY3Rpb24ga3V0KHQsZSl7dmFyIG49dC5fX3RyYW5zaXRpb247aWYoIW58fCEobj1uW2VdKSl0aHJvdyBuZXcgRXJyb3IoInRyYW5zaXRpb24gbm90IGZvdW5kIik7cmV0dXJuIG59ZnVuY3Rpb24gTHV0KHQsZSl7dmFyIG4saSxyLG89dC5fX3RyYW5zaXRpb24sYT0hMDtpZihvKXtmb3IociBpbiBlPW51bGw9PWU/bnVsbDplKyIiLG8pKG49b1tyXSkubmFtZT09PWU/KGk9bi5zdGF0ZT4yJiZuLnN0YXRlPDUsbi5zdGF0ZT02LG4udGltZXIuc3RvcCgpLG4ub24uY2FsbChpPyJpbnRlcnJ1cHQiOiJjYW5jZWwiLHQsdC5fX2RhdGFfXyxuLmluZGV4LG4uZ3JvdXApLGRlbGV0ZSBvW3JdKTphPSExO2EmJmRlbGV0ZSB0Ll9fdHJhbnNpdGlvbn19ZnVuY3Rpb24gUHV0KHQsZSl7dmFyIG4saTtyZXR1cm4gZnVuY3Rpb24oKXt2YXIgcj1DdXQodGhpcyx0KSxvPXIudHdlZW47aWYobyE9PW4pZm9yKHZhciBhPTAscz0oaT1uPW8pLmxlbmd0aDthPHM7KythKWlmKGlbYV0ubmFtZT09PWUpeyhpPWkuc2xpY2UoKSkuc3BsaWNlKGEsMSk7YnJlYWt9ci50d2Vlbj1pfX1mdW5jdGlvbiBJdXQodCxlLG4pe3ZhciBpLHI7aWYoImZ1bmN0aW9uIiE9dHlwZW9mIG4pdGhyb3cgbmV3IEVycm9yO3JldHVybiBmdW5jdGlvbigpe3ZhciBvPUN1dCh0aGlzLHQpLGE9by50d2VlbjtpZihhIT09aSl7cj0oaT1hKS5zbGljZSgpO2Zvcih2YXIgcz17bmFtZTplLHZhbHVlOm59LGw9MCxjPXIubGVuZ3RoO2w8YzsrK2wpaWYocltsXS5uYW1lPT09ZSl7cltsXT1zO2JyZWFrfWw9PT1jJiZyLnB1c2gocyl9by50d2Vlbj1yfX1mdW5jdGlvbiBOdXQodCxlLG4pe3ZhciBpPXQuX2lkO3JldHVybiB0LmVhY2goKGZ1bmN0aW9uKCl7dmFyIHQ9Q3V0KHRoaXMsaSk7KHQudmFsdWV8fCh0LnZhbHVlPXt9KSlbZV09bi5hcHBseSh0aGlzLGFyZ3VtZW50cyl9KSksZnVuY3Rpb24odCl7cmV0dXJuIGt1dCh0LGkpLnZhbHVlW2VdfX1mdW5jdGlvbiBPdXQodCxlKXt2YXIgbjtyZXR1cm4oIm51bWJlciI9PXR5cGVvZiBlP1ZjdDplIGluc3RhbmNlb2YgU2N0P0ZjdDoobj1TY3QoZSkpPyhlPW4sRmN0KTpHY3QpKHQsZSl9ZnVuY3Rpb24gUnV0KHQpe3JldHVybiBmdW5jdGlvbigpe3RoaXMucmVtb3ZlQXR0cmlidXRlKHQpfX1mdW5jdGlvbiB6dXQodCl7cmV0dXJuIGZ1bmN0aW9uKCl7dGhpcy5yZW1vdmVBdHRyaWJ1dGVOUyh0LnNwYWNlLHQubG9jYWwpfX1mdW5jdGlvbiBEdXQodCxlLG4pe3ZhciBpLHIsbz1uKyIiO3JldHVybiBmdW5jdGlvbigpe3ZhciBhPXRoaXMuZ2V0QXR0cmlidXRlKHQpO3JldHVybiBhPT09bz9udWxsOmE9PT1pP3I6cj1lKGk9YSxuKX19ZnVuY3Rpb24gQnV0KHQsZSxuKXt2YXIgaSxyLG89bisiIjtyZXR1cm4gZnVuY3Rpb24oKXt2YXIgYT10aGlzLmdldEF0dHJpYnV0ZU5TKHQuc3BhY2UsdC5sb2NhbCk7cmV0dXJuIGE9PT1vP251bGw6YT09PWk/cjpyPWUoaT1hLG4pfX1mdW5jdGlvbiBIdXQodCxlLG4pe3ZhciBpLHIsbztyZXR1cm4gZnVuY3Rpb24oKXt2YXIgYSxzLGw9bih0aGlzKTtpZihudWxsIT1sKXJldHVybihhPXRoaXMuZ2V0QXR0cmlidXRlKHQpKT09PShzPWwrIiIpP251bGw6YT09PWkmJnM9PT1yP286KHI9cyxvPWUoaT1hLGwpKTt0aGlzLnJlbW92ZUF0dHJpYnV0ZSh0KX19ZnVuY3Rpb24gRnV0KHQsZSxuKXt2YXIgaSxyLG87cmV0dXJuIGZ1bmN0aW9uKCl7dmFyIGEscyxsPW4odGhpcyk7aWYobnVsbCE9bClyZXR1cm4oYT10aGlzLmdldEF0dHJpYnV0ZU5TKHQuc3BhY2UsdC5sb2NhbCkpPT09KHM9bCsiIik/bnVsbDphPT09aSYmcz09PXI/bzoocj1zLG89ZShpPWEsbCkpO3RoaXMucmVtb3ZlQXR0cmlidXRlTlModC5zcGFjZSx0LmxvY2FsKX19ZnVuY3Rpb24gVnV0KHQsZSl7cmV0dXJuIGZ1bmN0aW9uKG4pe3RoaXMuc2V0QXR0cmlidXRlKHQsZS5jYWxsKHRoaXMsbikpfX1mdW5jdGlvbiBqdXQodCxlKXtyZXR1cm4gZnVuY3Rpb24obil7dGhpcy5zZXRBdHRyaWJ1dGVOUyh0LnNwYWNlLHQubG9jYWwsZS5jYWxsKHRoaXMsbikpfX1mdW5jdGlvbiBVdXQodCxlKXt2YXIgbixpO2Z1bmN0aW9uIHIoKXt2YXIgcj1lLmFwcGx5KHRoaXMsYXJndW1lbnRzKTtyZXR1cm4gciE9PWkmJihuPShpPXIpJiZqdXQodCxyKSksbn1yZXR1cm4gci5fdmFsdWU9ZSxyfWZ1bmN0aW9uIEd1dCh0LGUpe3ZhciBuLGk7ZnVuY3Rpb24gcigpe3ZhciByPWUuYXBwbHkodGhpcyxhcmd1bWVudHMpO3JldHVybiByIT09aSYmKG49KGk9cikmJlZ1dCh0LHIpKSxufXJldHVybiByLl92YWx1ZT1lLHJ9ZnVuY3Rpb24gV3V0KHQsZSl7cmV0dXJuIGZ1bmN0aW9uKCl7QXV0KHRoaXMsdCkuZGVsYXk9K2UuYXBwbHkodGhpcyxhcmd1bWVudHMpfX1mdW5jdGlvbiBxdXQodCxlKXtyZXR1cm4gZT0rZSxmdW5jdGlvbigpe0F1dCh0aGlzLHQpLmRlbGF5PWV9fWZ1bmN0aW9uIFl1dCh0LGUpe3JldHVybiBmdW5jdGlvbigpe0N1dCh0aGlzLHQpLmR1cmF0aW9uPStlLmFwcGx5KHRoaXMsYXJndW1lbnRzKX19ZnVuY3Rpb24gWHV0KHQsZSl7cmV0dXJuIGU9K2UsZnVuY3Rpb24oKXtDdXQodGhpcyx0KS5kdXJhdGlvbj1lfX1mdW5jdGlvbiAkdXQodCxlKXtpZigiZnVuY3Rpb24iIT10eXBlb2YgZSl0aHJvdyBuZXcgRXJyb3I7cmV0dXJuIGZ1bmN0aW9uKCl7Q3V0KHRoaXMsdCkuZWFzZT1lfX1mdW5jdGlvbiBLdXQodCxlLG4pe3ZhciBpLHIsbz0oZnVuY3Rpb24gYSh0KXtyZXR1cm4odCsiIikudHJpbSgpLnNwbGl0KC9efFxzKy8pLmV2ZXJ5KChmdW5jdGlvbih0KXt2YXIgZT10LmluZGV4T2YoIi4iKTtyZXR1cm4gZT49MCYmKHQ9dC5zbGljZSgwLGUpKSwhdHx8InN0YXJ0Ij09PXR9KSl9KShlKT9BdXQ6Q3V0O3JldHVybiBmdW5jdGlvbigpe3ZhciBhPW8odGhpcyx0KSxzPWEub247cyE9PWkmJihyPShpPXMpLmNvcHkoKSkub24oZSxuKSxhLm9uPXJ9fXZhciBadXQ9dmx0LnByb3RvdHlwZS5jb25zdHJ1Y3RvcjtmdW5jdGlvbiBKdXQodCl7cmV0dXJuIGZ1bmN0aW9uKCl7dGhpcy5zdHlsZS5yZW1vdmVQcm9wZXJ0eSh0KX19ZnVuY3Rpb24gUXV0KHQsZSxuKXtyZXR1cm4gZnVuY3Rpb24oaSl7dGhpcy5zdHlsZS5zZXRQcm9wZXJ0eSh0LGUuY2FsbCh0aGlzLGkpLG4pfX1mdW5jdGlvbiB0aHQodCxlLG4pe3ZhciBpLHI7ZnVuY3Rpb24gbygpe3ZhciBvPWUuYXBwbHkodGhpcyxhcmd1bWVudHMpO3JldHVybiBvIT09ciYmKGk9KHI9bykmJlF1dCh0LG8sbikpLGl9cmV0dXJuIG8uX3ZhbHVlPWUsb31mdW5jdGlvbiBlaHQodCl7cmV0dXJuIGZ1bmN0aW9uKGUpe3RoaXMudGV4dENvbnRlbnQ9dC5jYWxsKHRoaXMsZSl9fWZ1bmN0aW9uIG5odCh0KXt2YXIgZSxuO2Z1bmN0aW9uIGkoKXt2YXIgaT10LmFwcGx5KHRoaXMsYXJndW1lbnRzKTtyZXR1cm4gaSE9PW4mJihlPShuPWkpJiZlaHQoaSkpLGV9cmV0dXJuIGkuX3ZhbHVlPXQsaX12YXIgaWh0PTA7ZnVuY3Rpb24gcmh0KHQsZSxuLGkpe3RoaXMuX2dyb3Vwcz10LHRoaXMuX3BhcmVudHM9ZSx0aGlzLl9uYW1lPW4sdGhpcy5faWQ9aX1mdW5jdGlvbiBvaHQoKXtyZXR1cm4rK2lodH12YXIgYWh0PXZsdC5wcm90b3R5cGU7cmh0LnByb3RvdHlwZT17Y29uc3RydWN0b3I6cmh0LHNlbGVjdDpmdW5jdGlvbiBzaHQodCl7dmFyIGU9dGhpcy5fbmFtZSxuPXRoaXMuX2lkOyJmdW5jdGlvbiIhPXR5cGVvZiB0JiYodD15c3QodCkpO2Zvcih2YXIgaT10aGlzLl9ncm91cHMscj1pLmxlbmd0aCxvPW5ldyBBcnJheShyKSxhPTA7YTxyOysrYSlmb3IodmFyIHMsbCxjPWlbYV0sdT1jLmxlbmd0aCxoPW9bYV09bmV3IEFycmF5KHUpLGQ9MDtkPHU7KytkKShzPWNbZF0pJiYobD10LmNhbGwocyxzLl9fZGF0YV9fLGQsYykpJiYoIl9fZGF0YV9fImluIHMmJihsLl9fZGF0YV9fPXMuX19kYXRhX18pLGhbZF09bCxUdXQoaFtkXSxlLG4sZCxoLGt1dChzLG4pKSk7cmV0dXJuIG5ldyByaHQobyx0aGlzLl9wYXJlbnRzLGUsbil9LHNlbGVjdEFsbDpmdW5jdGlvbiBsaHQodCl7dmFyIGU9dGhpcy5fbmFtZSxuPXRoaXMuX2lkOyJmdW5jdGlvbiIhPXR5cGVvZiB0JiYodD1ic3QodCkpO2Zvcih2YXIgaT10aGlzLl9ncm91cHMscj1pLmxlbmd0aCxvPVtdLGE9W10scz0wO3M8cjsrK3MpZm9yKHZhciBsLGM9aVtzXSx1PWMubGVuZ3RoLGg9MDtoPHU7KytoKWlmKGw9Y1toXSl7Zm9yKHZhciBkLHA9dC5jYWxsKGwsbC5fX2RhdGFfXyxoLGMpLGY9a3V0KGwsbiksbT0wLGc9cC5sZW5ndGg7bTxnOysrbSkoZD1wW21dKSYmVHV0KGQsZSxuLG0scCxmKTtvLnB1c2gocCksYS5wdXNoKGwpfXJldHVybiBuZXcgcmh0KG8sYSxlLG4pfSxmaWx0ZXI6ZnVuY3Rpb24gY2h0KHQpeyJmdW5jdGlvbiIhPXR5cGVvZiB0JiYodD14c3QodCkpO2Zvcih2YXIgZT10aGlzLl9ncm91cHMsbj1lLmxlbmd0aCxpPW5ldyBBcnJheShuKSxyPTA7cjxuOysrcilmb3IodmFyIG8sYT1lW3JdLHM9YS5sZW5ndGgsbD1pW3JdPVtdLGM9MDtjPHM7KytjKShvPWFbY10pJiZ0LmNhbGwobyxvLl9fZGF0YV9fLGMsYSkmJmwucHVzaChvKTtyZXR1cm4gbmV3IHJodChpLHRoaXMuX3BhcmVudHMsdGhpcy5fbmFtZSx0aGlzLl9pZCl9LG1lcmdlOmZ1bmN0aW9uIHVodCh0KXtpZih0Ll9pZCE9PXRoaXMuX2lkKXRocm93IG5ldyBFcnJvcjtmb3IodmFyIGU9dGhpcy5fZ3JvdXBzLG49dC5fZ3JvdXBzLGk9ZS5sZW5ndGgscj1NYXRoLm1pbihpLG4ubGVuZ3RoKSxvPW5ldyBBcnJheShpKSxhPTA7YTxyOysrYSlmb3IodmFyIHMsbD1lW2FdLGM9blthXSx1PWwubGVuZ3RoLGg9b1thXT1uZXcgQXJyYXkodSksZD0wO2Q8dTsrK2QpKHM9bFtkXXx8Y1tkXSkmJihoW2RdPXMpO2Zvcig7YTxpOysrYSlvW2FdPWVbYV07cmV0dXJuIG5ldyByaHQobyx0aGlzLl9wYXJlbnRzLHRoaXMuX25hbWUsdGhpcy5faWQpfSxzZWxlY3Rpb246ZnVuY3Rpb24gaGh0KCl7cmV0dXJuIG5ldyBadXQodGhpcy5fZ3JvdXBzLHRoaXMuX3BhcmVudHMpfSx0cmFuc2l0aW9uOmZ1bmN0aW9uIGRodCgpe2Zvcih2YXIgdD10aGlzLl9uYW1lLGU9dGhpcy5faWQsbj1vaHQoKSxpPXRoaXMuX2dyb3VwcyxyPWkubGVuZ3RoLG89MDtvPHI7KytvKWZvcih2YXIgYSxzPWlbb10sbD1zLmxlbmd0aCxjPTA7YzxsOysrYylpZihhPXNbY10pe3ZhciB1PWt1dChhLGUpO1R1dChhLHQsbixjLHMse3RpbWU6dS50aW1lK3UuZGVsYXkrdS5kdXJhdGlvbixkZWxheTowLGR1cmF0aW9uOnUuZHVyYXRpb24sZWFzZTp1LmVhc2V9KX1yZXR1cm4gbmV3IHJodChpLHRoaXMuX3BhcmVudHMsdCxuKX0sY2FsbDphaHQuY2FsbCxub2RlczphaHQubm9kZXMsbm9kZTphaHQubm9kZSxzaXplOmFodC5zaXplLGVtcHR5OmFodC5lbXB0eSxlYWNoOmFodC5lYWNoLG9uOmZ1bmN0aW9uIHBodCh0LGUpe3ZhciBuPXRoaXMuX2lkO3JldHVybiBhcmd1bWVudHMubGVuZ3RoPDI/a3V0KHRoaXMubm9kZSgpLG4pLm9uLm9uKHQpOnRoaXMuZWFjaChLdXQobix0LGUpKX0sYXR0cjpmdW5jdGlvbiBmaHQodCxlKXt2YXIgbj1wc3QodCksaT0idHJhbnNmb3JtIj09PW4/ZXV0Ok91dDtyZXR1cm4gdGhpcy5hdHRyVHdlZW4odCwiZnVuY3Rpb24iPT10eXBlb2YgZT8obi5sb2NhbD9GdXQ6SHV0KShuLGksTnV0KHRoaXMsImF0dHIuIit0LGUpKTpudWxsPT1lPyhuLmxvY2FsP3p1dDpSdXQpKG4pOihuLmxvY2FsP0J1dDpEdXQpKG4saSxlKSl9LGF0dHJUd2VlbjpmdW5jdGlvbiBtaHQodCxlKXt2YXIgbj0iYXR0ci4iK3Q7aWYoYXJndW1lbnRzLmxlbmd0aDwyKXJldHVybihuPXRoaXMudHdlZW4obikpJiZuLl92YWx1ZTtpZihudWxsPT1lKXJldHVybiB0aGlzLnR3ZWVuKG4sbnVsbCk7aWYoImZ1bmN0aW9uIiE9dHlwZW9mIGUpdGhyb3cgbmV3IEVycm9yO3ZhciBpPXBzdCh0KTtyZXR1cm4gdGhpcy50d2VlbihuLChpLmxvY2FsP1V1dDpHdXQpKGksZSkpfSxzdHlsZTpmdW5jdGlvbiBnaHQodCxlLG4pe3ZhciBpPSJ0cmFuc2Zvcm0iPT0odCs9IiIpP1FjdDpPdXQ7cmV0dXJuIG51bGw9PWU/dGhpcy5zdHlsZVR3ZWVuKHQsKGZ1bmN0aW9uIHIodCxlKXt2YXIgbixpLHI7cmV0dXJuIGZ1bmN0aW9uKCl7dmFyIG89RHN0KHRoaXMsdCksYT0odGhpcy5zdHlsZS5yZW1vdmVQcm9wZXJ0eSh0KSxEc3QodGhpcyx0KSk7cmV0dXJuIG89PT1hP251bGw6bz09PW4mJmE9PT1pP3I6cj1lKG49byxpPWEpfX0pKHQsaSkpLm9uKCJlbmQuc3R5bGUuIit0LEp1dCh0KSk6ImZ1bmN0aW9uIj09dHlwZW9mIGU/dGhpcy5zdHlsZVR3ZWVuKHQsKGZ1bmN0aW9uIGEodCxlLG4pe3ZhciBpLHIsbztyZXR1cm4gZnVuY3Rpb24oKXt2YXIgYT1Ec3QodGhpcyx0KSxzPW4odGhpcyksbD1zKyIiO3JldHVybiBudWxsPT1zJiYodGhpcy5zdHlsZS5yZW1vdmVQcm9wZXJ0eSh0KSxsPXM9RHN0KHRoaXMsdCkpLGE9PT1sP251bGw6YT09PWkmJmw9PT1yP286KHI9bCxvPWUoaT1hLHMpKX19KSh0LGksTnV0KHRoaXMsInN0eWxlLiIrdCxlKSkpLmVhY2goKGZ1bmN0aW9uIG8odCxlKXt2YXIgbixpLHIsbyxhPSJzdHlsZS4iK2Uscz0iZW5kLiIrYTtyZXR1cm4gZnVuY3Rpb24oKXt2YXIgbD1DdXQodGhpcyx0KSxjPWwub24sdT1udWxsPT1sLnZhbHVlW2FdP298fChvPUp1dChlKSk6dm9pZCAwO2M9PT1uJiZyPT09dXx8KGk9KG49YykuY29weSgpKS5vbihzLHI9dSksbC5vbj1pfX0pKHRoaXMuX2lkLHQpKTp0aGlzLnN0eWxlVHdlZW4odCwoZnVuY3Rpb24gcyh0LGUsbil7dmFyIGkscixvPW4rIiI7cmV0dXJuIGZ1bmN0aW9uKCl7dmFyIGE9RHN0KHRoaXMsdCk7cmV0dXJuIGE9PT1vP251bGw6YT09PWk/cjpyPWUoaT1hLG4pfX0pKHQsaSxlKSxuKS5vbigiZW5kLnN0eWxlLiIrdCxudWxsKX0sc3R5bGVUd2VlbjpmdW5jdGlvbiBfaHQodCxlLG4pe3ZhciBpPSJzdHlsZS4iKyh0Kz0iIik7aWYoYXJndW1lbnRzLmxlbmd0aDwyKXJldHVybihpPXRoaXMudHdlZW4oaSkpJiZpLl92YWx1ZTtpZihudWxsPT1lKXJldHVybiB0aGlzLnR3ZWVuKGksbnVsbCk7aWYoImZ1bmN0aW9uIiE9dHlwZW9mIGUpdGhyb3cgbmV3IEVycm9yO3JldHVybiB0aGlzLnR3ZWVuKGksdGh0KHQsZSxudWxsPT1uPyIiOm4pKX0sdGV4dDpmdW5jdGlvbiB5aHQodCl7cmV0dXJuIHRoaXMudHdlZW4oInRleHQiLCJmdW5jdGlvbiI9PXR5cGVvZiB0PyhmdW5jdGlvbiBlKHQpe3JldHVybiBmdW5jdGlvbigpe3ZhciBlPXQodGhpcyk7dGhpcy50ZXh0Q29udGVudD1udWxsPT1lPyIiOmV9fSkoTnV0KHRoaXMsInRleHQiLHQpKTooZnVuY3Rpb24gbih0KXtyZXR1cm4gZnVuY3Rpb24oKXt0aGlzLnRleHRDb250ZW50PXR9fSkobnVsbD09dD8iIjp0KyIiKSl9LHRleHRUd2VlbjpmdW5jdGlvbiB2aHQodCl7dmFyIGU9InRleHQiO2lmKGFyZ3VtZW50cy5sZW5ndGg8MSlyZXR1cm4oZT10aGlzLnR3ZWVuKGUpKSYmZS5fdmFsdWU7aWYobnVsbD09dClyZXR1cm4gdGhpcy50d2VlbihlLG51bGwpO2lmKCJmdW5jdGlvbiIhPXR5cGVvZiB0KXRocm93IG5ldyBFcnJvcjtyZXR1cm4gdGhpcy50d2VlbihlLG5odCh0KSl9LHJlbW92ZTpmdW5jdGlvbiBiaHQoKXtyZXR1cm4gdGhpcy5vbigiZW5kLnJlbW92ZSIsKGZ1bmN0aW9uIHQoZSl7cmV0dXJuIGZ1bmN0aW9uKCl7dmFyIHQ9dGhpcy5wYXJlbnROb2RlO2Zvcih2YXIgbiBpbiB0aGlzLl9fdHJhbnNpdGlvbilpZigrbiE9PWUpcmV0dXJuO3QmJnQucmVtb3ZlQ2hpbGQodGhpcyl9fSkodGhpcy5faWQpKX0sdHdlZW46ZnVuY3Rpb24geGh0KHQsZSl7dmFyIG49dGhpcy5faWQ7aWYodCs9IiIsYXJndW1lbnRzLmxlbmd0aDwyKXtmb3IodmFyIGkscj1rdXQodGhpcy5ub2RlKCksbikudHdlZW4sbz0wLGE9ci5sZW5ndGg7bzxhOysrbylpZigoaT1yW29dKS5uYW1lPT09dClyZXR1cm4gaS52YWx1ZTtyZXR1cm4gbnVsbH1yZXR1cm4gdGhpcy5lYWNoKChudWxsPT1lP1B1dDpJdXQpKG4sdCxlKSl9LGRlbGF5OmZ1bmN0aW9uIHdodCh0KXt2YXIgZT10aGlzLl9pZDtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD90aGlzLmVhY2goKCJmdW5jdGlvbiI9PXR5cGVvZiB0P1d1dDpxdXQpKGUsdCkpOmt1dCh0aGlzLm5vZGUoKSxlKS5kZWxheX0sZHVyYXRpb246ZnVuY3Rpb24gU2h0KHQpe3ZhciBlPXRoaXMuX2lkO3JldHVybiBhcmd1bWVudHMubGVuZ3RoP3RoaXMuZWFjaCgoImZ1bmN0aW9uIj09dHlwZW9mIHQ/WXV0Olh1dCkoZSx0KSk6a3V0KHRoaXMubm9kZSgpLGUpLmR1cmF0aW9ufSxlYXNlOmZ1bmN0aW9uIE1odCh0KXt2YXIgZT10aGlzLl9pZDtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD90aGlzLmVhY2goJHV0KGUsdCkpOmt1dCh0aGlzLm5vZGUoKSxlKS5lYXNlfSxlbmQ6ZnVuY3Rpb24gRWh0KCl7dmFyIHQsZSxuPXRoaXMsaT1uLl9pZCxyPW4uc2l6ZSgpO3JldHVybiBuZXcgUHJvbWlzZSgoZnVuY3Rpb24obyxhKXt2YXIgcz17dmFsdWU6YX0sbD17dmFsdWU6ZnVuY3Rpb24oKXswPT0tLXImJm8oKX19O24uZWFjaCgoZnVuY3Rpb24oKXt2YXIgbj1DdXQodGhpcyxpKSxyPW4ub247ciE9PXQmJigoZT0odD1yKS5jb3B5KCkpLl8uY2FuY2VsLnB1c2gocyksZS5fLmludGVycnVwdC5wdXNoKHMpLGUuXy5lbmQucHVzaChsKSksbi5vbj1lfSkpfSkpfX07dmFyIFRodD17dGltZTpudWxsLGRlbGF5OjAsZHVyYXRpb246MjUwLGVhc2U6VGZ9O2Z1bmN0aW9uIEFodCh0LGUpe2Zvcih2YXIgbjshKG49dC5fX3RyYW5zaXRpb24pfHwhKG49bltlXSk7KWlmKCEodD10LnBhcmVudE5vZGUpKXJldHVybiBUaHQudGltZT1ndXQoKSxUaHQ7cmV0dXJuIG59ZnVuY3Rpb24gQ2h0KHQpe3JldHVybiBmdW5jdGlvbigpe3JldHVybiB0fX1mdW5jdGlvbiBraHQodCxlLG4pe3RoaXMudGFyZ2V0PXQsdGhpcy50eXBlPWUsdGhpcy50cmFuc2Zvcm09bn1mdW5jdGlvbiBMaHQodCxlLG4pe3RoaXMuaz10LHRoaXMueD1lLHRoaXMueT1ufXZsdC5wcm90b3R5cGUuaW50ZXJydXB0PWZ1bmN0aW9uIFBodCh0KXtyZXR1cm4gdGhpcy5lYWNoKChmdW5jdGlvbigpe0x1dCh0aGlzLHQpfSkpfSx2bHQucHJvdG90eXBlLnRyYW5zaXRpb249ZnVuY3Rpb24gSWh0KHQpe3ZhciBlLG47dCBpbnN0YW5jZW9mIHJodD8oZT10Ll9pZCx0PXQuX25hbWUpOihlPW9odCgpLChuPVRodCkudGltZT1ndXQoKSx0PW51bGw9PXQ/bnVsbDp0KyIiKTtmb3IodmFyIGk9dGhpcy5fZ3JvdXBzLHI9aS5sZW5ndGgsbz0wO288cjsrK28pZm9yKHZhciBhLHM9aVtvXSxsPXMubGVuZ3RoLGM9MDtjPGw7KytjKShhPXNbY10pJiZUdXQoYSx0LGUsYyxzLG58fEFodChhLGUpKTtyZXR1cm4gbmV3IHJodChpLHRoaXMuX3BhcmVudHMsdCxlKX0sTGh0LnByb3RvdHlwZT17Y29uc3RydWN0b3I6TGh0LHNjYWxlOmZ1bmN0aW9uKHQpe3JldHVybiAxPT09dD90aGlzOm5ldyBMaHQodGhpcy5rKnQsdGhpcy54LHRoaXMueSl9LHRyYW5zbGF0ZTpmdW5jdGlvbih0LGUpe3JldHVybiAwPT09dCYwPT09ZT90aGlzOm5ldyBMaHQodGhpcy5rLHRoaXMueCt0aGlzLmsqdCx0aGlzLnkrdGhpcy5rKmUpfSxhcHBseTpmdW5jdGlvbih0KXtyZXR1cm5bdFswXSp0aGlzLmsrdGhpcy54LHRbMV0qdGhpcy5rK3RoaXMueV19LGFwcGx5WDpmdW5jdGlvbih0KXtyZXR1cm4gdCp0aGlzLmsrdGhpcy54fSxhcHBseVk6ZnVuY3Rpb24odCl7cmV0dXJuIHQqdGhpcy5rK3RoaXMueX0saW52ZXJ0OmZ1bmN0aW9uKHQpe3JldHVyblsodFswXS10aGlzLngpL3RoaXMuaywodFsxXS10aGlzLnkpL3RoaXMua119LGludmVydFg6ZnVuY3Rpb24odCl7cmV0dXJuKHQtdGhpcy54KS90aGlzLmt9LGludmVydFk6ZnVuY3Rpb24odCl7cmV0dXJuKHQtdGhpcy55KS90aGlzLmt9LHJlc2NhbGVYOmZ1bmN0aW9uKHQpe3JldHVybiB0LmNvcHkoKS5kb21haW4odC5yYW5nZSgpLm1hcCh0aGlzLmludmVydFgsdGhpcykubWFwKHQuaW52ZXJ0LHQpKX0scmVzY2FsZVk6ZnVuY3Rpb24odCl7cmV0dXJuIHQuY29weSgpLmRvbWFpbih0LnJhbmdlKCkubWFwKHRoaXMuaW52ZXJ0WSx0aGlzKS5tYXAodC5pbnZlcnQsdCkpfSx0b1N0cmluZzpmdW5jdGlvbigpe3JldHVybiJ0cmFuc2xhdGUoIit0aGlzLngrIiwiK3RoaXMueSsiKSBzY2FsZSgiK3RoaXMuaysiKSJ9fTt2YXIgTmh0PW5ldyBMaHQoMSwwLDApO2Z1bmN0aW9uIE9odCh0KXtyZXR1cm4gdC5fX3pvb218fE5odH1mdW5jdGlvbiBSaHQoKXtsbHQuc3RvcEltbWVkaWF0ZVByb3BhZ2F0aW9uKCl9ZnVuY3Rpb24gemh0KCl7bGx0LnByZXZlbnREZWZhdWx0KCksbGx0LnN0b3BJbW1lZGlhdGVQcm9wYWdhdGlvbigpfWZ1bmN0aW9uIERodCgpe3JldHVybiFsbHQuYnV0dG9ufWZ1bmN0aW9uIEJodCgpe3ZhciB0LGUsbj10aGlzO3JldHVybiBuIGluc3RhbmNlb2YgU1ZHRWxlbWVudD8odD0obj1uLm93bmVyU1ZHRWxlbWVudHx8bikud2lkdGguYmFzZVZhbC52YWx1ZSxlPW4uaGVpZ2h0LmJhc2VWYWwudmFsdWUpOih0PW4uY2xpZW50V2lkdGgsZT1uLmNsaWVudEhlaWdodCksW1swLDBdLFt0LGVdXX1mdW5jdGlvbiBIaHQoKXtyZXR1cm4gdGhpcy5fX3pvb218fE5odH1mdW5jdGlvbiBGaHQoKXtyZXR1cm4tbGx0LmRlbHRhWSoobGx0LmRlbHRhTW9kZT8xMjA6MSkvNTAwfWZ1bmN0aW9uIFZodCgpe3JldHVybiJvbnRvdWNoc3RhcnQiaW4gdGhpc31mdW5jdGlvbiBqaHQodCxlLG4pe3ZhciBpPXQuaW52ZXJ0WChlWzBdWzBdKS1uWzBdWzBdLHI9dC5pbnZlcnRYKGVbMV1bMF0pLW5bMV1bMF0sbz10LmludmVydFkoZVswXVsxXSktblswXVsxXSxhPXQuaW52ZXJ0WShlWzFdWzFdKS1uWzFdWzFdO3JldHVybiB0LnRyYW5zbGF0ZShyPmk/KGkrcikvMjpNYXRoLm1pbigwLGkpfHxNYXRoLm1heCgwLHIpLGE+bz8obythKS8yOk1hdGgubWluKDAsbyl8fE1hdGgubWF4KDAsYSkpfU9odC5wcm90b3R5cGU9TGh0LnByb3RvdHlwZTt2YXIgVWh0PXhlKE9iamVjdC5mcmVlemUoe19fcHJvdG9fXzpudWxsLHZlcnNpb246IjQuMTMuMCIsYmlzZWN0OmlSLGJpc2VjdFJpZ2h0OmlSLGJpc2VjdExlZnQ6clIsYXNjZW5kaW5nOnRSLGJpc2VjdG9yOmVSLGNyb3NzOmZ1bmN0aW9uIEdodCh0LGUsbil7dmFyIGkscixvLGEscz10Lmxlbmd0aCxsPWUubGVuZ3RoLGM9bmV3IEFycmF5KHMqbCk7Zm9yKG51bGw9PW4mJihuPW9SKSxpPW89MDtpPHM7KytpKWZvcihhPXRbaV0scj0wO3I8bDsrK3IsKytvKWNbb109bihhLGVbcl0pO3JldHVybiBjfSxkZXNjZW5kaW5nOmZ1bmN0aW9uIFdodCh0LGUpe3JldHVybiBlPHQ/LTE6ZT50PzE6ZT49dD8wOk5hTn0sZGV2aWF0aW9uOmxSLGV4dGVudDpjUixoaXN0b2dyYW06ZnVuY3Rpb24gcWh0KCl7dmFyIHQ9ZlIsZT1jUixuPXhSO2Z1bmN0aW9uIGkoaSl7dmFyIHIsbyxhPWkubGVuZ3RoLHM9bmV3IEFycmF5KGEpO2ZvcihyPTA7cjxhOysrcilzW3JdPXQoaVtyXSxyLGkpO3ZhciBsPWUocyksYz1sWzBdLHU9bFsxXSxoPW4ocyxjLHUpO0FycmF5LmlzQXJyYXkoaCl8fChoPWJSKGMsdSxoKSxoPW1SKE1hdGguY2VpbChjL2gpKmgsTWF0aC5mbG9vcih1L2gpKmgsaCkpO2Zvcih2YXIgZD1oLmxlbmd0aDtoWzBdPD1jOyloLnNoaWZ0KCksLS1kO2Zvcig7aFtkLTFdPnU7KWgucG9wKCksLS1kO3ZhciBwLGY9bmV3IEFycmF5KGQrMSk7Zm9yKHI9MDtyPD1kOysrcikocD1mW3JdPVtdKS54MD1yPjA/aFtyLTFdOmMscC54MT1yPGQ/aFtyXTp1O2ZvcihyPTA7cjxhOysrciljPD0obz1zW3JdKSYmbzw9dSYmZltpUihoLG8sMCxkKV0ucHVzaChpW3JdKTtyZXR1cm4gZn1yZXR1cm4gaS52YWx1ZT1mdW5jdGlvbihlKXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8odD0iZnVuY3Rpb24iPT10eXBlb2YgZT9lOnBSKGUpLGkpOnR9LGkuZG9tYWluPWZ1bmN0aW9uKHQpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyhlPSJmdW5jdGlvbiI9PXR5cGVvZiB0P3Q6cFIoW3RbMF0sdFsxXV0pLGkpOmV9LGkudGhyZXNob2xkcz1mdW5jdGlvbih0KXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8obj0iZnVuY3Rpb24iPT10eXBlb2YgdD90OkFycmF5LmlzQXJyYXkodCk/cFIoaFIuY2FsbCh0KSk6cFIodCksaSk6bn0saX0sdGhyZXNob2xkRnJlZWRtYW5EaWFjb25pczpmdW5jdGlvbiBZaHQodCxlLG4pe3JldHVybiB0PWRSLmNhbGwodCxhUikuc29ydCh0UiksTWF0aC5jZWlsKChuLWUpLygyKih3Uih0LC43NSktd1IodCwuMjUpKSpNYXRoLnBvdyh0Lmxlbmd0aCwtMS8zKSkpfSx0aHJlc2hvbGRTY290dDpmdW5jdGlvbiBYaHQodCxlLG4pe3JldHVybiBNYXRoLmNlaWwoKG4tZSkvKDMuNSpsUih0KSpNYXRoLnBvdyh0Lmxlbmd0aCwtMS8zKSkpfSx0aHJlc2hvbGRTdHVyZ2VzOnhSLG1heDpmdW5jdGlvbiAkaHQodCxlKXt2YXIgbixpLHI9dC5sZW5ndGgsbz0tMTtpZihudWxsPT1lKXtmb3IoOysrbzxyOylpZihudWxsIT0obj10W29dKSYmbj49bilmb3IoaT1uOysrbzxyOyludWxsIT0obj10W29dKSYmbj5pJiYoaT1uKX1lbHNlIGZvcig7KytvPHI7KWlmKG51bGwhPShuPWUodFtvXSxvLHQpKSYmbj49bilmb3IoaT1uOysrbzxyOyludWxsIT0obj1lKHRbb10sbyx0KSkmJm4+aSYmKGk9bik7cmV0dXJuIGl9LG1lYW46ZnVuY3Rpb24gS2h0KHQsZSl7dmFyIG4saT10Lmxlbmd0aCxyPWksbz0tMSxhPTA7aWYobnVsbD09ZSlmb3IoOysrbzxpOylpc05hTihuPWFSKHRbb10pKT8tLXI6YSs9bjtlbHNlIGZvcig7KytvPGk7KWlzTmFOKG49YVIoZSh0W29dLG8sdCkpKT8tLXI6YSs9bjtpZihyKXJldHVybiBhL3J9LG1lZGlhbjpmdW5jdGlvbiBaaHQodCxlKXt2YXIgbixpPXQubGVuZ3RoLHI9LTEsbz1bXTtpZihudWxsPT1lKWZvcig7KytyPGk7KWlzTmFOKG49YVIodFtyXSkpfHxvLnB1c2gobik7ZWxzZSBmb3IoOysrcjxpOylpc05hTihuPWFSKGUodFtyXSxyLHQpKSl8fG8ucHVzaChuKTtyZXR1cm4gd1Ioby5zb3J0KHRSKSwuNSl9LG1lcmdlOmZ1bmN0aW9uIEpodCh0KXtmb3IodmFyIGUsbixpLHI9dC5sZW5ndGgsbz0tMSxhPTA7KytvPHI7KWErPXRbb10ubGVuZ3RoO2ZvcihuPW5ldyBBcnJheShhKTstLXI+PTA7KWZvcihlPShpPXRbcl0pLmxlbmd0aDstLWU+PTA7KW5bLS1hXT1pW2VdO3JldHVybiBufSxtaW46U1IscGFpcnM6ZnVuY3Rpb24gUWh0KHQsZSl7bnVsbD09ZSYmKGU9b1IpO2Zvcih2YXIgbj0wLGk9dC5sZW5ndGgtMSxyPXRbMF0sbz1uZXcgQXJyYXkoaTwwPzA6aSk7bjxpOylvW25dPWUocixyPXRbKytuXSk7cmV0dXJuIG99LHBlcm11dGU6ZnVuY3Rpb24gdGR0KHQsZSl7Zm9yKHZhciBuPWUubGVuZ3RoLGk9bmV3IEFycmF5KG4pO24tLTspaVtuXT10W2Vbbl1dO3JldHVybiBpfSxxdWFudGlsZTp3UixyYW5nZTptUixzY2FuOmZ1bmN0aW9uIGVkdCh0LGUpe2lmKG49dC5sZW5ndGgpe3ZhciBuLGkscj0wLG89MCxhPXRbb107Zm9yKG51bGw9PWUmJihlPXRSKTsrK3I8bjspKGUoaT10W3JdLGEpPDB8fDAhPT1lKGEsYSkpJiYoYT1pLG89cik7cmV0dXJuIDA9PT1lKGEsYSk/bzp2b2lkIDB9fSxzaHVmZmxlOmZ1bmN0aW9uIG5kdCh0LGUsbil7Zm9yKHZhciBpLHIsbz0obnVsbD09bj90Lmxlbmd0aDpuKS0oZT1udWxsPT1lPzA6K2UpO287KXI9TWF0aC5yYW5kb20oKSpvLS18MCxpPXRbbytlXSx0W28rZV09dFtyK2VdLHRbcitlXT1pO3JldHVybiB0fSxzdW06ZnVuY3Rpb24gaWR0KHQsZSl7dmFyIG4saT10Lmxlbmd0aCxyPS0xLG89MDtpZihudWxsPT1lKWZvcig7KytyPGk7KShuPSt0W3JdKSYmKG8rPW4pO2Vsc2UgZm9yKDsrK3I8aTspKG49K2UodFtyXSxyLHQpKSYmKG8rPW4pO3JldHVybiBvfSx0aWNrczpmdW5jdGlvbiByZHQodCxlLG4pe3ZhciBpLHIsbyxhLHM9LTE7aWYobj0rbiwodD0rdCk9PShlPStlKSYmbj4wKXJldHVyblt0XTtpZigoaT1lPHQpJiYocj10LHQ9ZSxlPXIpLDA9PT0oYT12Uih0LGUsbikpfHwhaXNGaW5pdGUoYSkpcmV0dXJuW107aWYoYT4wKWZvcih0PU1hdGguY2VpbCh0L2EpLGU9TWF0aC5mbG9vcihlL2EpLG89bmV3IEFycmF5KHI9TWF0aC5jZWlsKGUtdCsxKSk7KytzPHI7KW9bc109KHQrcykqYTtlbHNlIGZvcih0PU1hdGguZmxvb3IodCphKSxlPU1hdGguY2VpbChlKmEpLG89bmV3IEFycmF5KHI9TWF0aC5jZWlsKHQtZSsxKSk7KytzPHI7KW9bc109KHQtcykvYTtyZXR1cm4gaSYmby5yZXZlcnNlKCksb30sdGlja0luY3JlbWVudDp2Uix0aWNrU3RlcDpiUix0cmFuc3Bvc2U6TVIsdmFyaWFuY2U6c1IsemlwOmZ1bmN0aW9uIG9kdCgpe3JldHVybiBNUihhcmd1bWVudHMpfSxheGlzVG9wOmZ1bmN0aW9uIGFkdCh0KXtyZXR1cm4gT1IoMSx0KX0sYXhpc1JpZ2h0OmZ1bmN0aW9uIHNkdCh0KXtyZXR1cm4gT1IoMix0KX0sYXhpc0JvdHRvbTpmdW5jdGlvbiBsZHQodCl7cmV0dXJuIE9SKDMsdCl9LGF4aXNMZWZ0OmZ1bmN0aW9uIGNkdCh0KXtyZXR1cm4gT1IoNCx0KX0sYnJ1c2g6ZnVuY3Rpb24gdWR0KCl7cmV0dXJuIFRGKG1GKX0sYnJ1c2hYOmZ1bmN0aW9uIGhkdCgpe3JldHVybiBURihwRil9LGJydXNoWTpmdW5jdGlvbiBkZHQoKXtyZXR1cm4gVEYoZkYpfSxicnVzaFNlbGVjdGlvbjpmdW5jdGlvbiBwZHQodCl7dmFyIGU9dC5fX2JydXNoO3JldHVybiBlP2UuZGltLm91dHB1dChlLnNlbGVjdGlvbik6bnVsbH0sY2hvcmQ6ZnVuY3Rpb24gZmR0KCl7dmFyIHQ9MCxlPW51bGwsbj1udWxsLGk9bnVsbDtmdW5jdGlvbiByKHIpe3ZhciBvLGEscyxsLGMsdSxoPXIubGVuZ3RoLGQ9W10scD1DRihoKSxmPVtdLG09W10sZz1tLmdyb3Vwcz1uZXcgQXJyYXkoaCksXz1uZXcgQXJyYXkoaCpoKTtmb3Iobz0wLGM9LTE7KytjPGg7KXtmb3IoYT0wLHU9LTE7Kyt1PGg7KWErPXJbY11bdV07ZC5wdXNoKGEpLGYucHVzaChDRihoKSksbys9YX1mb3IoZSYmcC5zb3J0KChmdW5jdGlvbih0LG4pe3JldHVybiBlKGRbdF0sZFtuXSl9KSksbiYmZi5mb3JFYWNoKChmdW5jdGlvbih0LGUpe3Quc29ydCgoZnVuY3Rpb24odCxpKXtyZXR1cm4gbihyW2VdW3RdLHJbZV1baV0pfSkpfSkpLGw9KG89UkYoMCxPRi10KmgpL28pP3Q6T0YvaCxhPTAsYz0tMTsrK2M8aDspe2ZvcihzPWEsdT0tMTsrK3U8aDspe3ZhciB5PXBbY10sdj1mW3ldW3VdLGI9clt5XVt2XSx4PWEsdz1hKz1iKm87X1t2KmgreV09e2luZGV4Onksc3ViaW5kZXg6dixzdGFydEFuZ2xlOngsZW5kQW5nbGU6dyx2YWx1ZTpifX1nW3ldPXtpbmRleDp5LHN0YXJ0QW5nbGU6cyxlbmRBbmdsZTphLHZhbHVlOmRbeV19LGErPWx9Zm9yKGM9LTE7KytjPGg7KWZvcih1PWMtMTsrK3U8aDspe3ZhciBTPV9bdSpoK2NdLE09X1tjKmgrdV07KFMudmFsdWV8fE0udmFsdWUpJiZtLnB1c2goUy52YWx1ZTxNLnZhbHVlP3tzb3VyY2U6TSx0YXJnZXQ6U306e3NvdXJjZTpTLHRhcmdldDpNfSl9cmV0dXJuIGk/bS5zb3J0KGkpOm19cmV0dXJuIHIucGFkQW5nbGU9ZnVuY3Rpb24oZSl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KHQ9UkYoMCxlKSxyKTp0fSxyLnNvcnRHcm91cHM9ZnVuY3Rpb24odCl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KGU9dCxyKTplfSxyLnNvcnRTdWJncm91cHM9ZnVuY3Rpb24odCl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KG49dCxyKTpufSxyLnNvcnRDaG9yZHM9ZnVuY3Rpb24odCl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KG51bGw9PXQ/aT1udWxsOihpPXpGKHQpKS5fPXQscik6aSYmaS5ffSxyfSxyaWJib246ZnVuY3Rpb24gbWR0KCl7dmFyIHQ9V0YsZT1xRixuPVlGLGk9WEYscj0kRixvPW51bGw7ZnVuY3Rpb24gYSgpe3ZhciBhLHM9REYuY2FsbChhcmd1bWVudHMpLGw9dC5hcHBseSh0aGlzLHMpLGM9ZS5hcHBseSh0aGlzLHMpLHU9K24uYXBwbHkodGhpcywoc1swXT1sLHMpKSxoPWkuYXBwbHkodGhpcyxzKS1ORixkPXIuYXBwbHkodGhpcyxzKS1ORixwPXUqTEYoaCksZj11KlBGKGgpLG09K24uYXBwbHkodGhpcywoc1swXT1jLHMpKSxnPWkuYXBwbHkodGhpcyxzKS1ORixfPXIuYXBwbHkodGhpcyxzKS1ORjtpZihvfHwobz1hPUdGKCkpLG8ubW92ZVRvKHAsZiksby5hcmMoMCwwLHUsaCxkKSxoPT09ZyYmZD09PV98fChvLnF1YWRyYXRpY0N1cnZlVG8oMCwwLG0qTEYoZyksbSpQRihnKSksby5hcmMoMCwwLG0sZyxfKSksby5xdWFkcmF0aWNDdXJ2ZVRvKDAsMCxwLGYpLG8uY2xvc2VQYXRoKCksYSlyZXR1cm4gbz1udWxsLGErIiJ8fG51bGx9cmV0dXJuIGEucmFkaXVzPWZ1bmN0aW9uKHQpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyhuPSJmdW5jdGlvbiI9PXR5cGVvZiB0P3Q6QkYoK3QpLGEpOm59LGEuc3RhcnRBbmdsZT1mdW5jdGlvbih0KXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8oaT0iZnVuY3Rpb24iPT10eXBlb2YgdD90OkJGKCt0KSxhKTppfSxhLmVuZEFuZ2xlPWZ1bmN0aW9uKHQpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyhyPSJmdW5jdGlvbiI9PXR5cGVvZiB0P3Q6QkYoK3QpLGEpOnJ9LGEuc291cmNlPWZ1bmN0aW9uKGUpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyh0PWUsYSk6dH0sYS50YXJnZXQ9ZnVuY3Rpb24odCl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KGU9dCxhKTplfSxhLmNvbnRleHQ9ZnVuY3Rpb24odCl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KG89bnVsbD09dD9udWxsOnQsYSk6b30sYX0sbmVzdDpmdW5jdGlvbiBnZHQoKXt2YXIgdCxlLG4saT1bXSxyPVtdO2Z1bmN0aW9uIG8obixyLGEscyl7aWYocj49aS5sZW5ndGgpcmV0dXJuIG51bGwhPXQmJm4uc29ydCh0KSxudWxsIT1lP2Uobik6bjtmb3IodmFyIGwsYyx1LGg9LTEsZD1uLmxlbmd0aCxwPWlbcisrXSxmPUpGKCksbT1hKCk7KytoPGQ7KSh1PWYuZ2V0KGw9cChjPW5baF0pKyIiKSk/dS5wdXNoKGMpOmYuc2V0KGwsW2NdKTtyZXR1cm4gZi5lYWNoKChmdW5jdGlvbih0LGUpe3MobSxlLG8odCxyLGEscykpfSkpLG19ZnVuY3Rpb24gYSh0LG4pe2lmKCsrbj5pLmxlbmd0aClyZXR1cm4gdDt2YXIgbyxzPXJbbi0xXTtyZXR1cm4gbnVsbCE9ZSYmbj49aS5sZW5ndGg/bz10LmVudHJpZXMoKToobz1bXSx0LmVhY2goKGZ1bmN0aW9uKHQsZSl7by5wdXNoKHtrZXk6ZSx2YWx1ZXM6YSh0LG4pfSl9KSkpLG51bGwhPXM/by5zb3J0KChmdW5jdGlvbih0LGUpe3JldHVybiBzKHQua2V5LGUua2V5KX0pKTpvfXJldHVybiBuPXtvYmplY3Q6ZnVuY3Rpb24odCl7cmV0dXJuIG8odCwwLFFGLHRWKX0sbWFwOmZ1bmN0aW9uKHQpe3JldHVybiBvKHQsMCxlVixuVil9LGVudHJpZXM6ZnVuY3Rpb24odCl7cmV0dXJuIGEobyh0LDAsZVYsblYpLDApfSxrZXk6ZnVuY3Rpb24odCl7cmV0dXJuIGkucHVzaCh0KSxufSxzb3J0S2V5czpmdW5jdGlvbih0KXtyZXR1cm4gcltpLmxlbmd0aC0xXT10LG59LHNvcnRWYWx1ZXM6ZnVuY3Rpb24oZSl7cmV0dXJuIHQ9ZSxufSxyb2xsdXA6ZnVuY3Rpb24odCl7cmV0dXJuIGU9dCxufX19LHNldDpvVixtYXA6SkYsa2V5czpmdW5jdGlvbiBfZHQodCl7dmFyIGU9W107Zm9yKHZhciBuIGluIHQpZS5wdXNoKG4pO3JldHVybiBlfSx2YWx1ZXM6ZnVuY3Rpb24geWR0KHQpe3ZhciBlPVtdO2Zvcih2YXIgbiBpbiB0KWUucHVzaCh0W25dKTtyZXR1cm4gZX0sZW50cmllczpmdW5jdGlvbiB2ZHQodCl7dmFyIGU9W107Zm9yKHZhciBuIGluIHQpZS5wdXNoKHtrZXk6bix2YWx1ZTp0W25dfSk7cmV0dXJuIGV9LGNvbG9yOlNWLHJnYjpBVixoc2w6UFYsbGFiOmpWLGhjbDokVixjdWJlaGVsaXg6ZWosZGlzcGF0Y2g6cmosZHJhZzpmdW5jdGlvbiBiZHQoKXt2YXIgdCxlLG4saSxyPU5VLG89T1UsYT1SVSxzPXpVLGw9e30sYz11aigic3RhcnQiLCJkcmFnIiwiZW5kIiksdT0wLGg9MDtmdW5jdGlvbiBkKHQpe3Qub24oIm1vdXNlZG93bi5kcmFnIixwKS5maWx0ZXIocykub24oInRvdWNoc3RhcnQuZHJhZyIsZykub24oInRvdWNobW92ZS5kcmFnIixfKS5vbigidG91Y2hlbmQuZHJhZyB0b3VjaGNhbmNlbC5kcmFnIix5KS5zdHlsZSgidG91Y2gtYWN0aW9uIiwibm9uZSIpLnN0eWxlKCItd2Via2l0LXRhcC1oaWdobGlnaHQtY29sb3IiLCJyZ2JhKDAsMCwwLDApIil9ZnVuY3Rpb24gcCgpe2lmKCFpJiZyLmFwcGx5KHRoaXMsYXJndW1lbnRzKSl7dmFyIGE9digibW91c2UiLG8uYXBwbHkodGhpcyxhcmd1bWVudHMpLEVVLHRoaXMsYXJndW1lbnRzKTthJiYod1UodVUudmlldykub24oIm1vdXNlbW92ZS5kcmFnIixmLCEwKS5vbigibW91c2V1cC5kcmFnIixtLCEwKSxrVSh1VS52aWV3KSxBVSgpLG49ITEsdD11VS5jbGllbnRYLGU9dVUuY2xpZW50WSxhKCJzdGFydCIpKX19ZnVuY3Rpb24gZigpe2lmKENVKCksIW4pe3ZhciBpPXVVLmNsaWVudFgtdCxyPXVVLmNsaWVudFktZTtuPWkqaStyKnI+aH1sLm1vdXNlKCJkcmFnIil9ZnVuY3Rpb24gbSgpe3dVKHVVLnZpZXcpLm9uKCJtb3VzZW1vdmUuZHJhZyBtb3VzZXVwLmRyYWciLG51bGwpLExVKHVVLnZpZXcsbiksQ1UoKSxsLm1vdXNlKCJlbmQiKX1mdW5jdGlvbiBnKCl7aWYoci5hcHBseSh0aGlzLGFyZ3VtZW50cykpe3ZhciB0LGUsbj11VS5jaGFuZ2VkVG91Y2hlcyxpPW8uYXBwbHkodGhpcyxhcmd1bWVudHMpLGE9bi5sZW5ndGg7Zm9yKHQ9MDt0PGE7Kyt0KShlPXYoblt0XS5pZGVudGlmaWVyLGksVFUsdGhpcyxhcmd1bWVudHMpKSYmKEFVKCksZSgic3RhcnQiKSl9fWZ1bmN0aW9uIF8oKXt2YXIgdCxlLG49dVUuY2hhbmdlZFRvdWNoZXMsaT1uLmxlbmd0aDtmb3IodD0wO3Q8aTsrK3QpKGU9bFtuW3RdLmlkZW50aWZpZXJdKSYmKENVKCksZSgiZHJhZyIpKX1mdW5jdGlvbiB5KCl7dmFyIHQsZSxuPXVVLmNoYW5nZWRUb3VjaGVzLHI9bi5sZW5ndGg7Zm9yKGkmJmNsZWFyVGltZW91dChpKSxpPXNldFRpbWVvdXQoKGZ1bmN0aW9uKCl7aT1udWxsfSksNTAwKSx0PTA7dDxyOysrdCkoZT1sW25bdF0uaWRlbnRpZmllcl0pJiYoQVUoKSxlKCJlbmQiKSl9ZnVuY3Rpb24gdih0LGUsbixpLHIpe3ZhciBvLHMsaCxwPW4oZSx0KSxmPWMuY29weSgpO2lmKGdVKG5ldyBJVShkLCJiZWZvcmVzdGFydCIsbyx0LHUscFswXSxwWzFdLDAsMCxmKSwoZnVuY3Rpb24oKXtyZXR1cm4gbnVsbCE9KHVVLnN1YmplY3Q9bz1hLmFwcGx5KGkscikpJiYocz1vLngtcFswXXx8MCxoPW8ueS1wWzFdfHwwLCEwKX0pKSlyZXR1cm4gZnVuY3Rpb24gYShjKXt2YXIgbSxnPXA7c3dpdGNoKGMpe2Nhc2Uic3RhcnQiOmxbdF09YSxtPXUrKzticmVhaztjYXNlImVuZCI6ZGVsZXRlIGxbdF0sLS11O2Nhc2UiZHJhZyI6cD1uKGUsdCksbT11fWdVKG5ldyBJVShkLGMsbyx0LG0scFswXStzLHBbMV0raCxwWzBdLWdbMF0scFsxXS1nWzFdLGYpLGYuYXBwbHksZixbYyxpLHJdKX19cmV0dXJuIGQuZmlsdGVyPWZ1bmN0aW9uKHQpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyhyPSJmdW5jdGlvbiI9PXR5cGVvZiB0P3Q6UFUoISF0KSxkKTpyfSxkLmNvbnRhaW5lcj1mdW5jdGlvbih0KXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8obz0iZnVuY3Rpb24iPT10eXBlb2YgdD90OlBVKHQpLGQpOm99LGQuc3ViamVjdD1mdW5jdGlvbih0KXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8oYT0iZnVuY3Rpb24iPT10eXBlb2YgdD90OlBVKHQpLGQpOmF9LGQudG91Y2hhYmxlPWZ1bmN0aW9uKHQpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyhzPSJmdW5jdGlvbiI9PXR5cGVvZiB0P3Q6UFUoISF0KSxkKTpzfSxkLm9uPWZ1bmN0aW9uKCl7dmFyIHQ9Yy5vbi5hcHBseShjLGFyZ3VtZW50cyk7cmV0dXJuIHQ9PT1jP2Q6dH0sZC5jbGlja0Rpc3RhbmNlPWZ1bmN0aW9uKHQpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyhoPSh0PSt0KSp0LGQpOk1hdGguc3FydChoKX0sZH0sZHJhZ0Rpc2FibGU6a1UsZHJhZ0VuYWJsZTpMVSxkc3ZGb3JtYXQ6X0csY3N2UGFyc2U6dkcsY3N2UGFyc2VSb3dzOmJHLGNzdkZvcm1hdDp4Ryxjc3ZGb3JtYXRSb3dzOndHLHRzdlBhcnNlOk1HLHRzdlBhcnNlUm93czpFRyx0c3ZGb3JtYXQ6VEcsdHN2Rm9ybWF0Um93czpBRyxlYXNlTGluZWFyOmZ1bmN0aW9uIHhkdCh0KXtyZXR1cm4rdH0sZWFzZVF1YWQ6Q0csZWFzZVF1YWRJbjpmdW5jdGlvbiB3ZHQodCl7cmV0dXJuIHQqdH0sZWFzZVF1YWRPdXQ6ZnVuY3Rpb24gU2R0KHQpe3JldHVybiB0KigyLXQpfSxlYXNlUXVhZEluT3V0OkNHLGVhc2VDdWJpYzprRyxlYXNlQ3ViaWNJbjpmdW5jdGlvbiBNZHQodCl7cmV0dXJuIHQqdCp0fSxlYXNlQ3ViaWNPdXQ6ZnVuY3Rpb24gRWR0KHQpe3JldHVybi0tdCp0KnQrMX0sZWFzZUN1YmljSW5PdXQ6a0csZWFzZVBvbHk6SUcsZWFzZVBvbHlJbjpMRyxlYXNlUG9seU91dDpQRyxlYXNlUG9seUluT3V0OklHLGVhc2VTaW46UkcsZWFzZVNpbkluOmZ1bmN0aW9uIFRkdCh0KXtyZXR1cm4gMS1NYXRoLmNvcyh0Kk9HKX0sZWFzZVNpbk91dDpmdW5jdGlvbiBBZHQodCl7cmV0dXJuIE1hdGguc2luKHQqT0cpfSxlYXNlU2luSW5PdXQ6UkcsZWFzZUV4cDp6RyxlYXNlRXhwSW46ZnVuY3Rpb24gQ2R0KHQpe3JldHVybiBNYXRoLnBvdygyLDEwKnQtMTApfSxlYXNlRXhwT3V0OmZ1bmN0aW9uIGtkdCh0KXtyZXR1cm4gMS1NYXRoLnBvdygyLC0xMCp0KX0sZWFzZUV4cEluT3V0OnpHLGVhc2VDaXJjbGU6REcsZWFzZUNpcmNsZUluOmZ1bmN0aW9uIExkdCh0KXtyZXR1cm4gMS1NYXRoLnNxcnQoMS10KnQpfSxlYXNlQ2lyY2xlT3V0OmZ1bmN0aW9uIFBkdCh0KXtyZXR1cm4gTWF0aC5zcXJ0KDEtIC0tdCp0KX0sZWFzZUNpcmNsZUluT3V0OkRHLGVhc2VCb3VuY2U6SEcsZWFzZUJvdW5jZUluOmZ1bmN0aW9uIElkdCh0KXtyZXR1cm4gMS1IRygxLXQpfSxlYXNlQm91bmNlT3V0OkhHLGVhc2VCb3VuY2VJbk91dDpmdW5jdGlvbiBOZHQodCl7cmV0dXJuKCh0Kj0yKTw9MT8xLUhHKDEtdCk6SEcodC0xKSsxKS8yfSxlYXNlQmFjazpVRyxlYXNlQmFja0luOlZHLGVhc2VCYWNrT3V0OmpHLGVhc2VCYWNrSW5PdXQ6VUcsZWFzZUVsYXN0aWM6cUcsZWFzZUVsYXN0aWNJbjpXRyxlYXNlRWxhc3RpY091dDpxRyxlYXNlRWxhc3RpY0luT3V0OllHLGZvcmNlQ2VudGVyOmZ1bmN0aW9uIE9kdCh0LGUpe3ZhciBuO2Z1bmN0aW9uIGkoKXt2YXIgaSxyLG89bi5sZW5ndGgsYT0wLHM9MDtmb3IoaT0wO2k8bzsrK2kpYSs9KHI9bltpXSkueCxzKz1yLnk7Zm9yKGE9YS9vLXQscz1zL28tZSxpPTA7aTxvOysraSkocj1uW2ldKS54LT1hLHIueS09c31yZXR1cm4gbnVsbD09dCYmKHQ9MCksbnVsbD09ZSYmKGU9MCksaS5pbml0aWFsaXplPWZ1bmN0aW9uKHQpe249dH0saS54PWZ1bmN0aW9uKGUpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyh0PStlLGkpOnR9LGkueT1mdW5jdGlvbih0KXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8oZT0rdCxpKTplfSxpfSxmb3JjZUNvbGxpZGU6ZnVuY3Rpb24gUmR0KHQpe3ZhciBlLG4saT0xLHI9MTtmdW5jdGlvbiBvKCl7Zm9yKHZhciB0LG8scyxsLGMsdSxoLGQ9ZS5sZW5ndGgscD0wO3A8cjsrK3ApZm9yKG89dFcoZSxyVyxvVykudmlzaXRBZnRlcihhKSx0PTA7dDxkOysrdCloPSh1PW5bKHM9ZVt0XSkuaW5kZXhdKSp1LGw9cy54K3MudngsYz1zLnkrcy52eSxvLnZpc2l0KGYpO2Z1bmN0aW9uIGYodCxlLG4scixvKXt2YXIgYT10LmRhdGEsZD10LnIscD11K2Q7aWYoIWEpcmV0dXJuIGU+bCtwfHxyPGwtcHx8bj5jK3B8fG88Yy1wO2lmKGEuaW5kZXg+cy5pbmRleCl7dmFyIGY9bC1hLngtYS52eCxtPWMtYS55LWEudnksZz1mKmYrbSptO2c8cCpwJiYoMD09PWYmJihnKz0oZj0kRygpKSpmKSwwPT09bSYmKGcrPShtPSRHKCkpKm0pLGc9KHAtKGc9TWF0aC5zcXJ0KGcpKSkvZyppLHMudngrPShmKj1nKSoocD0oZCo9ZCkvKGgrZCkpLHMudnkrPShtKj1nKSpwLGEudngtPWYqKHA9MS1wKSxhLnZ5LT1tKnApfX19ZnVuY3Rpb24gYSh0KXtpZih0LmRhdGEpcmV0dXJuIHQucj1uW3QuZGF0YS5pbmRleF07Zm9yKHZhciBlPXQucj0wO2U8NDsrK2UpdFtlXSYmdFtlXS5yPnQuciYmKHQucj10W2VdLnIpfWZ1bmN0aW9uIHMoKXtpZihlKXt2YXIgaSxyLG89ZS5sZW5ndGg7Zm9yKG49bmV3IEFycmF5KG8pLGk9MDtpPG87KytpKW5bKHI9ZVtpXSkuaW5kZXhdPSt0KHIsaSxlKX19cmV0dXJuImZ1bmN0aW9uIiE9dHlwZW9mIHQmJih0PVhHKG51bGw9PXQ/MTordCkpLG8uaW5pdGlhbGl6ZT1mdW5jdGlvbih0KXtlPXQscygpfSxvLml0ZXJhdGlvbnM9ZnVuY3Rpb24odCl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KHI9K3Qsbyk6cn0sby5zdHJlbmd0aD1mdW5jdGlvbih0KXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8oaT0rdCxvKTppfSxvLnJhZGl1cz1mdW5jdGlvbihlKXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8odD0iZnVuY3Rpb24iPT10eXBlb2YgZT9lOlhHKCtlKSxzKCksbyk6dH0sb30sZm9yY2VMaW5rOmZ1bmN0aW9uIHpkdCh0KXt2YXIgZSxuLGkscixvLGE9RVcscz1mdW5jdGlvbiBsKHQpe3JldHVybiAxL01hdGgubWluKHJbdC5zb3VyY2UuaW5kZXhdLHJbdC50YXJnZXQuaW5kZXhdKX0sYz1YRygzMCksdT0xO2Z1bmN0aW9uIGgoaSl7Zm9yKHZhciByPTAsYT10Lmxlbmd0aDtyPHU7KytyKWZvcih2YXIgcyxsLGMsaCxkLHAsZixtPTA7bTxhOysrbSloPShjPShzPXRbbV0pLnRhcmdldCkueCtjLnZ4LShsPXMuc291cmNlKS54LWwudnh8fCRHKCksZD1jLnkrYy52eS1sLnktbC52eXx8JEcoKSxkKj1wPSgocD1NYXRoLnNxcnQoaCpoK2QqZCkpLW5bbV0pL3AqaSplW21dLGMudngtPShoKj1wKSooZj1vW21dKSxjLnZ5LT1kKmYsbC52eCs9aCooZj0xLWYpLGwudnkrPWQqZn1mdW5jdGlvbiBkKCl7aWYoaSl7dmFyIHMsbCxjPWkubGVuZ3RoLHU9dC5sZW5ndGgsaD13VyhpLGEpO2ZvcihzPTAscj1uZXcgQXJyYXkoYyk7czx1OysrcykobD10W3NdKS5pbmRleD1zLCJvYmplY3QiIT10eXBlb2YgbC5zb3VyY2UmJihsLnNvdXJjZT1UVyhoLGwuc291cmNlKSksIm9iamVjdCIhPXR5cGVvZiBsLnRhcmdldCYmKGwudGFyZ2V0PVRXKGgsbC50YXJnZXQpKSxyW2wuc291cmNlLmluZGV4XT0ocltsLnNvdXJjZS5pbmRleF18fDApKzEscltsLnRhcmdldC5pbmRleF09KHJbbC50YXJnZXQuaW5kZXhdfHwwKSsxO2ZvcihzPTAsbz1uZXcgQXJyYXkodSk7czx1OysrcylvW3NdPXJbKGw9dFtzXSkuc291cmNlLmluZGV4XS8ocltsLnNvdXJjZS5pbmRleF0rcltsLnRhcmdldC5pbmRleF0pO2U9bmV3IEFycmF5KHUpLHAoKSxuPW5ldyBBcnJheSh1KSxmKCl9fWZ1bmN0aW9uIHAoKXtpZihpKWZvcih2YXIgbj0wLHI9dC5sZW5ndGg7bjxyOysrbillW25dPStzKHRbbl0sbix0KX1mdW5jdGlvbiBmKCl7aWYoaSlmb3IodmFyIGU9MCxyPXQubGVuZ3RoO2U8cjsrK2UpbltlXT0rYyh0W2VdLGUsdCl9cmV0dXJuIG51bGw9PXQmJih0PVtdKSxoLmluaXRpYWxpemU9ZnVuY3Rpb24odCl7aT10LGQoKX0saC5saW5rcz1mdW5jdGlvbihlKXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8odD1lLGQoKSxoKTp0fSxoLmlkPWZ1bmN0aW9uKHQpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyhhPXQsaCk6YX0saC5pdGVyYXRpb25zPWZ1bmN0aW9uKHQpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyh1PSt0LGgpOnV9LGguc3RyZW5ndGg9ZnVuY3Rpb24odCl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KHM9ImZ1bmN0aW9uIj09dHlwZW9mIHQ/dDpYRygrdCkscCgpLGgpOnN9LGguZGlzdGFuY2U9ZnVuY3Rpb24odCl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KGM9ImZ1bmN0aW9uIj09dHlwZW9mIHQ/dDpYRygrdCksZigpLGgpOmN9LGh9LGZvcmNlTWFueUJvZHk6ZnVuY3Rpb24gRGR0KCl7dmFyIHQsZSxuLGkscj1YRygtMzApLG89MSxhPTEvMCxzPS44MTtmdW5jdGlvbiBsKGkpe3ZhciByLG89dC5sZW5ndGgsYT10Vyh0LEtXLFpXKS52aXNpdEFmdGVyKHUpO2ZvcihuPWkscj0wO3I8bzsrK3IpZT10W3JdLGEudmlzaXQoaCl9ZnVuY3Rpb24gYygpe2lmKHQpe3ZhciBlLG4sbz10Lmxlbmd0aDtmb3IoaT1uZXcgQXJyYXkobyksZT0wO2U8bzsrK2UpaVsobj10W2VdKS5pbmRleF09K3IobixlLHQpfX1mdW5jdGlvbiB1KHQpe3ZhciBlLG4scixvLGEscz0wLGw9MDtpZih0Lmxlbmd0aCl7Zm9yKHI9bz1hPTA7YTw0OysrYSkoZT10W2FdKSYmKG49TWF0aC5hYnMoZS52YWx1ZSkpJiYocys9ZS52YWx1ZSxsKz1uLHIrPW4qZS54LG8rPW4qZS55KTt0Lng9ci9sLHQueT1vL2x9ZWxzZXsoZT10KS54PWUuZGF0YS54LGUueT1lLmRhdGEueTtkb3tzKz1pW2UuZGF0YS5pbmRleF19d2hpbGUoZT1lLm5leHQpfXQudmFsdWU9c31mdW5jdGlvbiBoKHQscixsLGMpe2lmKCF0LnZhbHVlKXJldHVybiEwO3ZhciB1PXQueC1lLngsaD10LnktZS55LGQ9Yy1yLHA9dSp1K2gqaDtpZihkKmQvczxwKXJldHVybiBwPGEmJigwPT09dSYmKHArPSh1PSRHKCkpKnUpLDA9PT1oJiYocCs9KGg9JEcoKSkqaCkscDxvJiYocD1NYXRoLnNxcnQobypwKSksZS52eCs9dSp0LnZhbHVlKm4vcCxlLnZ5Kz1oKnQudmFsdWUqbi9wKSwhMDtpZighKHQubGVuZ3RofHxwPj1hKSl7KHQuZGF0YSE9PWV8fHQubmV4dCkmJigwPT09dSYmKHArPSh1PSRHKCkpKnUpLDA9PT1oJiYocCs9KGg9JEcoKSkqaCkscDxvJiYocD1NYXRoLnNxcnQobypwKSkpO2Rve3QuZGF0YSE9PWUmJihlLnZ4Kz11KihkPWlbdC5kYXRhLmluZGV4XSpuL3ApLGUudnkrPWgqZCl9d2hpbGUodD10Lm5leHQpfX1yZXR1cm4gbC5pbml0aWFsaXplPWZ1bmN0aW9uKGUpe3Q9ZSxjKCl9LGwuc3RyZW5ndGg9ZnVuY3Rpb24odCl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KHI9ImZ1bmN0aW9uIj09dHlwZW9mIHQ/dDpYRygrdCksYygpLGwpOnJ9LGwuZGlzdGFuY2VNaW49ZnVuY3Rpb24odCl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KG89dCp0LGwpOk1hdGguc3FydChvKX0sbC5kaXN0YW5jZU1heD1mdW5jdGlvbih0KXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8oYT10KnQsbCk6TWF0aC5zcXJ0KGEpfSxsLnRoZXRhPWZ1bmN0aW9uKHQpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyhzPXQqdCxsKTpNYXRoLnNxcnQocyl9LGx9LGZvcmNlUmFkaWFsOmZ1bmN0aW9uIEJkdCh0LGUsbil7dmFyIGkscixvLGE9WEcoLjEpO2Z1bmN0aW9uIHModCl7Zm9yKHZhciBhPTAscz1pLmxlbmd0aDthPHM7KythKXt2YXIgbD1pW2FdLGM9bC54LWV8fDFlLTYsdT1sLnktbnx8MWUtNixoPU1hdGguc3FydChjKmMrdSp1KSxkPShvW2FdLWgpKnJbYV0qdC9oO2wudngrPWMqZCxsLnZ5Kz11KmR9fWZ1bmN0aW9uIGwoKXtpZihpKXt2YXIgZSxuPWkubGVuZ3RoO2ZvcihyPW5ldyBBcnJheShuKSxvPW5ldyBBcnJheShuKSxlPTA7ZTxuOysrZSlvW2VdPSt0KGlbZV0sZSxpKSxyW2VdPWlzTmFOKG9bZV0pPzA6K2EoaVtlXSxlLGkpfX1yZXR1cm4iZnVuY3Rpb24iIT10eXBlb2YgdCYmKHQ9WEcoK3QpKSxudWxsPT1lJiYoZT0wKSxudWxsPT1uJiYobj0wKSxzLmluaXRpYWxpemU9ZnVuY3Rpb24odCl7aT10LGwoKX0scy5zdHJlbmd0aD1mdW5jdGlvbih0KXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8oYT0iZnVuY3Rpb24iPT10eXBlb2YgdD90OlhHKCt0KSxsKCkscyk6YX0scy5yYWRpdXM9ZnVuY3Rpb24oZSl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KHQ9ImZ1bmN0aW9uIj09dHlwZW9mIGU/ZTpYRygrZSksbCgpLHMpOnR9LHMueD1mdW5jdGlvbih0KXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8oZT0rdCxzKTplfSxzLnk9ZnVuY3Rpb24odCl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KG49K3Qscyk6bn0sc30sZm9yY2VTaW11bGF0aW9uOmZ1bmN0aW9uIEhkdCh0KXt2YXIgZSxuPTEsaT0uMDAxLHI9MS1NYXRoLnBvdyhpLDEvMzAwKSxvPTAsYT0uNixzPXdXKCksbD1xVyh1KSxjPUNXKCJ0aWNrIiwiZW5kIik7ZnVuY3Rpb24gdSgpe2goKSxjLmNhbGwoInRpY2siLGUpLG48aSYmKGwuc3RvcCgpLGMuY2FsbCgiZW5kIixlKSl9ZnVuY3Rpb24gaCgpe3ZhciBlLGksbD10Lmxlbmd0aDtmb3Iobis9KG8tbikqcixzLmVhY2goKGZ1bmN0aW9uKHQpe3Qobil9KSksZT0wO2U8bDsrK2UpbnVsbD09KGk9dFtlXSkuZng/aS54Kz1pLnZ4Kj1hOihpLng9aS5meCxpLnZ4PTApLG51bGw9PWkuZnk/aS55Kz1pLnZ5Kj1hOihpLnk9aS5meSxpLnZ5PTApfWZ1bmN0aW9uIGQoKXtmb3IodmFyIGUsbj0wLGk9dC5sZW5ndGg7bjxpOysrbil7aWYoKGU9dFtuXSkuaW5kZXg9bixpc05hTihlLngpfHxpc05hTihlLnkpKXt2YXIgcj0xMCpNYXRoLnNxcnQobiksbz1uKlFXO2UueD1yKk1hdGguY29zKG8pLGUueT1yKk1hdGguc2luKG8pfShpc05hTihlLnZ4KXx8aXNOYU4oZS52eSkpJiYoZS52eD1lLnZ5PTApfX1mdW5jdGlvbiBwKGUpe3JldHVybiBlLmluaXRpYWxpemUmJmUuaW5pdGlhbGl6ZSh0KSxlfXJldHVybiBudWxsPT10JiYodD1bXSksZCgpLGU9e3RpY2s6aCxyZXN0YXJ0OmZ1bmN0aW9uKCl7cmV0dXJuIGwucmVzdGFydCh1KSxlfSxzdG9wOmZ1bmN0aW9uKCl7cmV0dXJuIGwuc3RvcCgpLGV9LG5vZGVzOmZ1bmN0aW9uKG4pe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyh0PW4sZCgpLHMuZWFjaChwKSxlKTp0fSxhbHBoYTpmdW5jdGlvbih0KXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8obj0rdCxlKTpufSxhbHBoYU1pbjpmdW5jdGlvbih0KXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8oaT0rdCxlKTppfSxhbHBoYURlY2F5OmZ1bmN0aW9uKHQpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyhyPSt0LGUpOityfSxhbHBoYVRhcmdldDpmdW5jdGlvbih0KXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8obz0rdCxlKTpvfSx2ZWxvY2l0eURlY2F5OmZ1bmN0aW9uKHQpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyhhPTEtdCxlKToxLWF9LGZvcmNlOmZ1bmN0aW9uKHQsbil7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg+MT8obnVsbD09bj9zLnJlbW92ZSh0KTpzLnNldCh0LHAobikpLGUpOnMuZ2V0KHQpfSxmaW5kOmZ1bmN0aW9uKGUsbixpKXt2YXIgcixvLGEscyxsLGM9MCx1PXQubGVuZ3RoO2ZvcihudWxsPT1pP2k9MS8wOmkqPWksYz0wO2M8dTsrK2MpKGE9KHI9ZS0ocz10W2NdKS54KSpyKyhvPW4tcy55KSpvKTxpJiYobD1zLGk9YSk7cmV0dXJuIGx9LG9uOmZ1bmN0aW9uKHQsbil7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg+MT8oYy5vbih0LG4pLGUpOmMub24odCl9fX0sZm9yY2VYOmZ1bmN0aW9uIEZkdCh0KXt2YXIgZSxuLGkscj1YRyguMSk7ZnVuY3Rpb24gbyh0KXtmb3IodmFyIHIsbz0wLGE9ZS5sZW5ndGg7bzxhOysrbykocj1lW29dKS52eCs9KGlbb10tci54KSpuW29dKnR9ZnVuY3Rpb24gYSgpe2lmKGUpe3ZhciBvLGE9ZS5sZW5ndGg7Zm9yKG49bmV3IEFycmF5KGEpLGk9bmV3IEFycmF5KGEpLG89MDtvPGE7KytvKW5bb109aXNOYU4oaVtvXT0rdChlW29dLG8sZSkpPzA6K3IoZVtvXSxvLGUpfX1yZXR1cm4iZnVuY3Rpb24iIT10eXBlb2YgdCYmKHQ9WEcobnVsbD09dD8wOit0KSksby5pbml0aWFsaXplPWZ1bmN0aW9uKHQpe2U9dCxhKCl9LG8uc3RyZW5ndGg9ZnVuY3Rpb24odCl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KHI9ImZ1bmN0aW9uIj09dHlwZW9mIHQ/dDpYRygrdCksYSgpLG8pOnJ9LG8ueD1mdW5jdGlvbihlKXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8odD0iZnVuY3Rpb24iPT10eXBlb2YgZT9lOlhHKCtlKSxhKCksbyk6dH0sb30sZm9yY2VZOmZ1bmN0aW9uIFZkdCh0KXt2YXIgZSxuLGkscj1YRyguMSk7ZnVuY3Rpb24gbyh0KXtmb3IodmFyIHIsbz0wLGE9ZS5sZW5ndGg7bzxhOysrbykocj1lW29dKS52eSs9KGlbb10tci55KSpuW29dKnR9ZnVuY3Rpb24gYSgpe2lmKGUpe3ZhciBvLGE9ZS5sZW5ndGg7Zm9yKG49bmV3IEFycmF5KGEpLGk9bmV3IEFycmF5KGEpLG89MDtvPGE7KytvKW5bb109aXNOYU4oaVtvXT0rdChlW29dLG8sZSkpPzA6K3IoZVtvXSxvLGUpfX1yZXR1cm4iZnVuY3Rpb24iIT10eXBlb2YgdCYmKHQ9WEcobnVsbD09dD8wOit0KSksby5pbml0aWFsaXplPWZ1bmN0aW9uKHQpe2U9dCxhKCl9LG8uc3RyZW5ndGg9ZnVuY3Rpb24odCl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KHI9ImZ1bmN0aW9uIj09dHlwZW9mIHQ/dDpYRygrdCksYSgpLG8pOnJ9LG8ueT1mdW5jdGlvbihlKXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8odD0iZnVuY3Rpb24iPT10eXBlb2YgZT9lOlhHKCtlKSxhKCksbyk6dH0sb30sZm9ybWF0RGVmYXVsdExvY2FsZTptcSxnZXQgZm9ybWF0KCl7cmV0dXJuIGhxfSxnZXQgZm9ybWF0UHJlZml4KCl7cmV0dXJuIGRxfSxmb3JtYXRMb2NhbGU6ZnEsZm9ybWF0U3BlY2lmaWVyOnNxLHByZWNpc2lvbkZpeGVkOmZ1bmN0aW9uIGpkdCh0KXtyZXR1cm4gTWF0aC5tYXgoMCwtZXEoTWF0aC5hYnModCkpKX0scHJlY2lzaW9uUHJlZml4OmZ1bmN0aW9uIFVkdCh0LGUpe3JldHVybiBNYXRoLm1heCgwLDMqTWF0aC5tYXgoLTgsTWF0aC5taW4oOCxNYXRoLmZsb29yKGVxKGUpLzMpKSktZXEoTWF0aC5hYnModCkpKX0scHJlY2lzaW9uUm91bmQ6ZnVuY3Rpb24gR2R0KHQsZSl7cmV0dXJuIHQ9TWF0aC5hYnModCksZT1NYXRoLmFicyhlKS10LE1hdGgubWF4KDAsZXEoZSktZXEodCkpKzF9LGdlb0FyZWE6ZnVuY3Rpb24gV2R0KHQpe3JldHVybiBlWS5yZXNldCgpLFhxKHQsblkpLDIqZVl9LGdlb0JvdW5kczpmdW5jdGlvbiBxZHQodCl7dmFyIGUsbixpLHIsbyxhLHM7aWYoX1k9Z1k9LShmWT1tWT0xLzApLHdZPVtdLFhxKHQsVlkpLG49d1kubGVuZ3RoKXtmb3Iod1kuc29ydChLWSksZT0xLG89W2k9d1lbMF1dO2U8bjsrK2UpWlkoaSwocj13WVtlXSlbMF0pfHxaWShpLHJbMV0pPygkWShpWzBdLHJbMV0pPiRZKGlbMF0saVsxXSkmJihpWzFdPXJbMV0pLCRZKHJbMF0saVsxXSk+JFkoaVswXSxpWzFdKSYmKGlbMF09clswXSkpOm8ucHVzaChpPXIpO2ZvcihhPS0xLzAsZT0wLGk9b1tuPW8ubGVuZ3RoLTFdO2U8PW47aT1yLCsrZSkocz0kWShpWzFdLChyPW9bZV0pWzBdKSk+YSYmKGE9cyxmWT1yWzBdLGdZPWlbMV0pfXJldHVybiB3WT1TWT1udWxsLGZZPT09MS8wfHxtWT09PTEvMD9bW05hTixOYU5dLFtOYU4sTmFOXV06W1tmWSxtWV0sW2dZLF9ZXV19LGdlb0NlbnRyb2lkOmZ1bmN0aW9uIFlkdCh0KXtNWT1FWT1UWT1BWT1DWT1rWT1MWT1QWT1JWT1OWT1PWT0wLFhxKHQsSlkpO3ZhciBlPUlZLG49TlksaT1PWSxyPWUqZStuKm4raSppO3JldHVybiByPDFlLTEyJiYoZT1rWSxuPUxZLGk9UFksRVk8YnEmJihlPVRZLG49QVksaT1DWSksKHI9ZSplK24qbitpKmkpPDFlLTEyKT9bTmFOLE5hTl06W2txKG4sZSkqRXEsRnEoaS9EcShyKSkqRXFdfSxnZW9DaXJjbGU6ZnVuY3Rpb24gWGR0KCl7dmFyIHQsZSxuPWNYKFswLDBdKSxpPWNYKDkwKSxyPWNYKDYpLG89e3BvaW50OmZ1bmN0aW9uIGEobixpKXt0LnB1c2gobj1lKG4saSkpLG5bMF0qPUVxLG5bMV0qPUVxfX07ZnVuY3Rpb24gcygpe3ZhciBhPW4uYXBwbHkodGhpcyxhcmd1bWVudHMpLHM9aS5hcHBseSh0aGlzLGFyZ3VtZW50cykqVHEsbD1yLmFwcGx5KHRoaXMsYXJndW1lbnRzKSpUcTtyZXR1cm4gdD1bXSxlPWRYKC1hWzBdKlRxLC1hWzFdKlRxLDApLmludmVydCxfWChvLHMsbCwxKSxhPXt0eXBlOiJQb2x5Z29uIixjb29yZGluYXRlczpbdF19LHQ9ZT1udWxsLGF9cmV0dXJuIHMuY2VudGVyPWZ1bmN0aW9uKHQpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyhuPSJmdW5jdGlvbiI9PXR5cGVvZiB0P3Q6Y1goWyt0WzBdLCt0WzFdXSkscyk6bn0scy5yYWRpdXM9ZnVuY3Rpb24odCl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KGk9ImZ1bmN0aW9uIj09dHlwZW9mIHQ/dDpjWCgrdCkscyk6aX0scy5wcmVjaXNpb249ZnVuY3Rpb24odCl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KHI9ImZ1bmN0aW9uIj09dHlwZW9mIHQ/dDpjWCgrdCkscyk6cn0sc30sZ2VvQ2xpcEFudGltZXJpZGlhbjpOWCxnZW9DbGlwQ2lyY2xlOnpYLGdlb0NsaXBFeHRlbnQ6ZnVuY3Rpb24gJGR0KCl7dmFyIHQsZSxuLGk9MCxyPTAsbz05NjAsYT01MDA7cmV0dXJuIG49e3N0cmVhbTpmdW5jdGlvbihuKXtyZXR1cm4gdCYmZT09PW4/dDp0PUhYKGkscixvLGEpKGU9bil9LGV4dGVudDpmdW5jdGlvbihzKXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8oaT0rc1swXVswXSxyPStzWzBdWzFdLG89K3NbMV1bMF0sYT0rc1sxXVsxXSx0PWU9bnVsbCxuKTpbW2kscl0sW28sYV1dfX19LGdlb0NsaXBSZWN0YW5nbGU6SFgsZ2VvQ29udGFpbnM6ZnVuY3Rpb24gS2R0KHQsZSl7cmV0dXJuKHQmJlFYLmhhc093blByb3BlcnR5KHQudHlwZSk/UVhbdC50eXBlXTplJCkodCxlKX0sZ2VvRGlzdGFuY2U6SlgsZ2VvR3JhdGljdWxlOmMkLGdlb0dyYXRpY3VsZTEwOmZ1bmN0aW9uIFpkdCgpe3JldHVybiBjJCgpKCl9LGdlb0ludGVycG9sYXRlOmZ1bmN0aW9uIEpkdCh0LGUpe3ZhciBuPXRbMF0qVHEsaT10WzFdKlRxLHI9ZVswXSpUcSxvPWVbMV0qVHEsYT1McShpKSxzPVJxKGkpLGw9THEobyksYz1ScShvKSx1PWEqTHEobiksaD1hKlJxKG4pLGQ9bCpMcShyKSxwPWwqUnEociksZj0yKkZxKERxKFZxKG8taSkrYSpsKlZxKHItbikpKSxtPVJxKGYpLGc9Zj9mdW5jdGlvbih0KXt2YXIgZT1ScSh0Kj1mKS9tLG49UnEoZi10KS9tLGk9bip1K2UqZCxyPW4qaCtlKnAsbz1uKnMrZSpjO3JldHVybltrcShyLGkpKkVxLGtxKG8sRHEoaSppK3IqcikpKkVxXX06ZnVuY3Rpb24oKXtyZXR1cm5bbipFcSxpKkVxXX07cmV0dXJuIGcuZGlzdGFuY2U9ZixnfSxnZW9MZW5ndGg6JFgsZ2VvUGF0aDpmdW5jdGlvbiBRZHQodCxlKXt2YXIgbixpLHI9NC41O2Z1bmN0aW9uIG8odCl7cmV0dXJuIHQmJigiZnVuY3Rpb24iPT10eXBlb2YgciYmaS5wb2ludFJhZGl1cygrci5hcHBseSh0aGlzLGFyZ3VtZW50cykpLFhxKHQsbihpKSkpLGkucmVzdWx0KCl9cmV0dXJuIG8uYXJlYT1mdW5jdGlvbih0KXtyZXR1cm4gWHEodCxuKF8kKSksXyQucmVzdWx0KCl9LG8ubWVhc3VyZT1mdW5jdGlvbih0KXtyZXR1cm4gWHEodCxuKHJLKSkscksucmVzdWx0KCl9LG8uYm91bmRzPWZ1bmN0aW9uKHQpe3JldHVybiBYcSh0LG4oTCQpKSxMJC5yZXN1bHQoKX0sby5jZW50cm9pZD1mdW5jdGlvbih0KXtyZXR1cm4gWHEodCxuKFYkKSksViQucmVzdWx0KCl9LG8ucHJvamVjdGlvbj1mdW5jdGlvbihlKXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8obj1udWxsPT1lPyh0PW51bGwsdSQpOih0PWUpLnN0cmVhbSxvKTp0fSxvLmNvbnRleHQ9ZnVuY3Rpb24odCl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KGk9bnVsbD09dD8oZT1udWxsLG5ldyBzSyk6bmV3IFokKGU9dCksImZ1bmN0aW9uIiE9dHlwZW9mIHImJmkucG9pbnRSYWRpdXMociksbyk6ZX0sby5wb2ludFJhZGl1cz1mdW5jdGlvbih0KXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8ocj0iZnVuY3Rpb24iPT10eXBlb2YgdD90OihpLnBvaW50UmFkaXVzKCt0KSwrdCksbyk6cn0sby5wcm9qZWN0aW9uKHQpLmNvbnRleHQoZSl9LGdlb0FsYmVyczpNSyxnZW9BbGJlcnNVc2E6ZnVuY3Rpb24gdHB0KCl7dmFyIHQsZSxuLGkscixvLGE9TUsoKSxzPVNLKCkucm90YXRlKFsxNTQsMF0pLmNlbnRlcihbLTIsNTguNV0pLnBhcmFsbGVscyhbNTUsNjVdKSxsPVNLKCkucm90YXRlKFsxNTcsMF0pLmNlbnRlcihbLTMsMTkuOV0pLnBhcmFsbGVscyhbOCwxOF0pLGM9e3BvaW50OmZ1bmN0aW9uKHQsZSl7bz1bdCxlXX19O2Z1bmN0aW9uIHUodCl7dmFyIGU9dFswXSxhPXRbMV07cmV0dXJuIG89bnVsbCxuLnBvaW50KGUsYSksb3x8KGkucG9pbnQoZSxhKSxvKXx8KHIucG9pbnQoZSxhKSxvKX1mdW5jdGlvbiBoKCl7cmV0dXJuIHQ9ZT1udWxsLHV9cmV0dXJuIHUuaW52ZXJ0PWZ1bmN0aW9uKHQpe3ZhciBlPWEuc2NhbGUoKSxuPWEudHJhbnNsYXRlKCksaT0odFswXS1uWzBdKS9lLHI9KHRbMV0tblsxXSkvZTtyZXR1cm4ocj49LjEyJiZyPC4yMzQmJmk+PS0uNDI1JiZpPC0uMjE0P3M6cj49LjE2NiYmcjwuMjM0JiZpPj0tLjIxNCYmaTwtLjExNT9sOmEpLmludmVydCh0KX0sdS5zdHJlYW09ZnVuY3Rpb24obil7cmV0dXJuIHQmJmU9PT1uP3Q6dD0oZnVuY3Rpb24gaSh0KXt2YXIgZT10Lmxlbmd0aDtyZXR1cm57cG9pbnQ6ZnVuY3Rpb24obixpKXtmb3IodmFyIHI9LTE7KytyPGU7KXRbcl0ucG9pbnQobixpKX0sc3BoZXJlOmZ1bmN0aW9uKCl7Zm9yKHZhciBuPS0xOysrbjxlOyl0W25dLnNwaGVyZSgpfSxsaW5lU3RhcnQ6ZnVuY3Rpb24oKXtmb3IodmFyIG49LTE7KytuPGU7KXRbbl0ubGluZVN0YXJ0KCl9LGxpbmVFbmQ6ZnVuY3Rpb24oKXtmb3IodmFyIG49LTE7KytuPGU7KXRbbl0ubGluZUVuZCgpfSxwb2x5Z29uU3RhcnQ6ZnVuY3Rpb24oKXtmb3IodmFyIG49LTE7KytuPGU7KXRbbl0ucG9seWdvblN0YXJ0KCl9LHBvbHlnb25FbmQ6ZnVuY3Rpb24oKXtmb3IodmFyIG49LTE7KytuPGU7KXRbbl0ucG9seWdvbkVuZCgpfX19KShbYS5zdHJlYW0oZT1uKSxzLnN0cmVhbShuKSxsLnN0cmVhbShuKV0pfSx1LnByZWNpc2lvbj1mdW5jdGlvbih0KXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8oYS5wcmVjaXNpb24odCkscy5wcmVjaXNpb24odCksbC5wcmVjaXNpb24odCksaCgpKTphLnByZWNpc2lvbigpfSx1LnNjYWxlPWZ1bmN0aW9uKHQpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyhhLnNjYWxlKHQpLHMuc2NhbGUoLjM1KnQpLGwuc2NhbGUodCksdS50cmFuc2xhdGUoYS50cmFuc2xhdGUoKSkpOmEuc2NhbGUoKX0sdS50cmFuc2xhdGU9ZnVuY3Rpb24odCl7aWYoIWFyZ3VtZW50cy5sZW5ndGgpcmV0dXJuIGEudHJhbnNsYXRlKCk7dmFyIGU9YS5zY2FsZSgpLG89K3RbMF0sdT0rdFsxXTtyZXR1cm4gbj1hLnRyYW5zbGF0ZSh0KS5jbGlwRXh0ZW50KFtbby0uNDU1KmUsdS0uMjM4KmVdLFtvKy40NTUqZSx1Ky4yMzgqZV1dKS5zdHJlYW0oYyksaT1zLnRyYW5zbGF0ZShbby0uMzA3KmUsdSsuMjAxKmVdKS5jbGlwRXh0ZW50KFtbby0uNDI1KmUrYnEsdSsuMTIqZSticV0sW28tLjIxNCplLWJxLHUrLjIzNCplLWJxXV0pLnN0cmVhbShjKSxyPWwudHJhbnNsYXRlKFtvLS4yMDUqZSx1Ky4yMTIqZV0pLmNsaXBFeHRlbnQoW1tvLS4yMTQqZSticSx1Ky4xNjYqZSticV0sW28tLjExNSplLWJxLHUrLjIzNCplLWJxXV0pLnN0cmVhbShjKSxoKCl9LHUuZml0RXh0ZW50PWZ1bmN0aW9uKHQsZSl7cmV0dXJuIGRLKHUsdCxlKX0sdS5maXRTaXplPWZ1bmN0aW9uKHQsZSl7cmV0dXJuIHBLKHUsdCxlKX0sdS5maXRXaWR0aD1mdW5jdGlvbih0LGUpe3JldHVybiBmSyh1LHQsZSl9LHUuZml0SGVpZ2h0PWZ1bmN0aW9uKHQsZSl7cmV0dXJuIG1LKHUsdCxlKX0sdS5zY2FsZSgxMDcwKX0sZ2VvQXppbXV0aGFsRXF1YWxBcmVhOmZ1bmN0aW9uIGVwdCgpe3JldHVybiB2SyhBSykuc2NhbGUoMTI0Ljc1KS5jbGlwQW5nbGUoMTc5Ljk5OSl9LGdlb0F6aW11dGhhbEVxdWFsQXJlYVJhdzpBSyxnZW9BemltdXRoYWxFcXVpZGlzdGFudDpmdW5jdGlvbiBucHQoKXtyZXR1cm4gdksoQ0spLnNjYWxlKDc5LjQxODgpLmNsaXBBbmdsZSgxNzkuOTk5KX0sZ2VvQXppbXV0aGFsRXF1aWRpc3RhbnRSYXc6Q0ssZ2VvQ29uaWNDb25mb3JtYWw6ZnVuY3Rpb24gaXB0KCl7cmV0dXJuIHhLKElLKS5zY2FsZSgxMDkuNSkucGFyYWxsZWxzKFszMCwzMF0pfSxnZW9Db25pY0NvbmZvcm1hbFJhdzpJSyxnZW9Db25pY0VxdWFsQXJlYTpTSyxnZW9Db25pY0VxdWFsQXJlYVJhdzp3SyxnZW9Db25pY0VxdWlkaXN0YW50OmZ1bmN0aW9uIHJwdCgpe3JldHVybiB4SyhPSykuc2NhbGUoMTMxLjE1NCkuY2VudGVyKFswLDEzLjkzODldKX0sZ2VvQ29uaWNFcXVpZGlzdGFudFJhdzpPSyxnZW9FcXVpcmVjdGFuZ3VsYXI6ZnVuY3Rpb24gb3B0KCl7cmV0dXJuIHZLKE5LKS5zY2FsZSgxNTIuNjMpfSxnZW9FcXVpcmVjdGFuZ3VsYXJSYXc6TkssZ2VvR25vbW9uaWM6ZnVuY3Rpb24gYXB0KCl7cmV0dXJuIHZLKFJLKS5zY2FsZSgxNDQuMDQ5KS5jbGlwQW5nbGUoNjApfSxnZW9Hbm9tb25pY1JhdzpSSyxnZW9JZGVudGl0eTpmdW5jdGlvbiBzcHQoKXt2YXIgdCxlLG4saSxyLG8sYT0xLHM9MCxsPTAsYz0xLHU9MSxoPXUkLGQ9bnVsbCxwPXUkO2Z1bmN0aW9uIGYoKXtyZXR1cm4gaT1yPW51bGwsb31yZXR1cm4gbz17c3RyZWFtOmZ1bmN0aW9uKHQpe3JldHVybiBpJiZyPT09dD9pOmk9aChwKHI9dCkpfSxwb3N0Y2xpcDpmdW5jdGlvbihpKXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8ocD1pLGQ9dD1lPW49bnVsbCxmKCkpOnB9LGNsaXBFeHRlbnQ6ZnVuY3Rpb24oaSl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KHA9bnVsbD09aT8oZD10PWU9bj1udWxsLHUkKTpIWChkPStpWzBdWzBdLHQ9K2lbMF1bMV0sZT0raVsxXVswXSxuPStpWzFdWzFdKSxmKCkpOm51bGw9PWQ/bnVsbDpbW2QsdF0sW2Usbl1dfSxzY2FsZTpmdW5jdGlvbih0KXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8oaD16SygoYT0rdCkqYyxhKnUscyxsKSxmKCkpOmF9LHRyYW5zbGF0ZTpmdW5jdGlvbih0KXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8oaD16SyhhKmMsYSp1LHM9K3RbMF0sbD0rdFsxXSksZigpKTpbcyxsXX0scmVmbGVjdFg6ZnVuY3Rpb24odCl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KGg9eksoYSooYz10Py0xOjEpLGEqdSxzLGwpLGYoKSk6YzwwfSxyZWZsZWN0WTpmdW5jdGlvbih0KXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8oaD16SyhhKmMsYSoodT10Py0xOjEpLHMsbCksZigpKTp1PDB9LGZpdEV4dGVudDpmdW5jdGlvbih0LGUpe3JldHVybiBkSyhvLHQsZSl9LGZpdFNpemU6ZnVuY3Rpb24odCxlKXtyZXR1cm4gcEsobyx0LGUpfSxmaXRXaWR0aDpmdW5jdGlvbih0LGUpe3JldHVybiBmSyhvLHQsZSl9LGZpdEhlaWdodDpmdW5jdGlvbih0LGUpe3JldHVybiBtSyhvLHQsZSl9fX0sZ2VvUHJvamVjdGlvbjp2SyxnZW9Qcm9qZWN0aW9uTXV0YXRvcjpiSyxnZW9NZXJjYXRvcjpmdW5jdGlvbiBscHQoKXtyZXR1cm4gTEsoa0spLnNjYWxlKDk2MS9NcSl9LGdlb01lcmNhdG9yUmF3OmtLLGdlb05hdHVyYWxFYXJ0aDE6ZnVuY3Rpb24gY3B0KCl7cmV0dXJuIHZLKERLKS5zY2FsZSgxNzUuMjk1KX0sZ2VvTmF0dXJhbEVhcnRoMVJhdzpESyxnZW9PcnRob2dyYXBoaWM6ZnVuY3Rpb24gdXB0KCl7cmV0dXJuIHZLKEJLKS5zY2FsZSgyNDkuNSkuY2xpcEFuZ2xlKDkwLjAwMDAwMSl9LGdlb09ydGhvZ3JhcGhpY1JhdzpCSyxnZW9TdGVyZW9ncmFwaGljOmZ1bmN0aW9uIGhwdCgpe3JldHVybiB2SyhISykuc2NhbGUoMjUwKS5jbGlwQW5nbGUoMTQyKX0sZ2VvU3RlcmVvZ3JhcGhpY1JhdzpISyxnZW9UcmFuc3ZlcnNlTWVyY2F0b3I6ZnVuY3Rpb24gZHB0KCl7dmFyIHQ9TEsoRkspLGU9dC5jZW50ZXIsbj10LnJvdGF0ZTtyZXR1cm4gdC5jZW50ZXI9ZnVuY3Rpb24odCl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/ZShbLXRbMV0sdFswXV0pOlsodD1lKCkpWzFdLC10WzBdXX0sdC5yb3RhdGU9ZnVuY3Rpb24odCl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/bihbdFswXSx0WzFdLHQubGVuZ3RoPjI/dFsyXSs5MDo5MF0pOlsodD1uKCkpWzBdLHRbMV0sdFsyXS05MF19LG4oWzAsMCw5MF0pLnNjYWxlKDE1OS4xNTUpfSxnZW9UcmFuc3ZlcnNlTWVyY2F0b3JSYXc6RkssZ2VvUm90YXRpb246Z1gsZ2VvU3RyZWFtOlhxLGdlb1RyYW5zZm9ybTpmdW5jdGlvbiBwcHQodCl7cmV0dXJue3N0cmVhbTpjSyh0KX19LGNsdXN0ZXI6ZnVuY3Rpb24gZnB0KCl7dmFyIHQ9VkssZT0xLG49MSxpPSExO2Z1bmN0aW9uIHIocil7dmFyIG8sYT0wO3IuZWFjaEFmdGVyKChmdW5jdGlvbihlKXt2YXIgbj1lLmNoaWxkcmVuO24/KGUueD0oZnVuY3Rpb24gaSh0KXtyZXR1cm4gdC5yZWR1Y2UoakssMCkvdC5sZW5ndGh9KShuKSxlLnk9KGZ1bmN0aW9uIHIodCl7cmV0dXJuIDErdC5yZWR1Y2UoVUssMCl9KShuKSk6KGUueD1vP2ErPXQoZSxvKTowLGUueT0wLG89ZSl9KSk7dmFyIHM9KGZ1bmN0aW9uIGwodCl7Zm9yKHZhciBlO2U9dC5jaGlsZHJlbjspdD1lWzBdO3JldHVybiB0fSkociksYz0oZnVuY3Rpb24gdSh0KXtmb3IodmFyIGU7ZT10LmNoaWxkcmVuOyl0PWVbZS5sZW5ndGgtMV07cmV0dXJuIHR9KShyKSxoPXMueC10KHMsYykvMixkPWMueCt0KGMscykvMjtyZXR1cm4gci5lYWNoQWZ0ZXIoaT9mdW5jdGlvbih0KXt0Lng9KHQueC1yLngpKmUsdC55PShyLnktdC55KSpufTpmdW5jdGlvbih0KXt0Lng9KHQueC1oKS8oZC1oKSplLHQueT0oMS0oci55P3QueS9yLnk6MSkpKm59KX1yZXR1cm4gci5zZXBhcmF0aW9uPWZ1bmN0aW9uKGUpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyh0PWUscik6dH0sci5zaXplPWZ1bmN0aW9uKHQpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyhpPSExLGU9K3RbMF0sbj0rdFsxXSxyKTppP251bGw6W2Usbl19LHIubm9kZVNpemU9ZnVuY3Rpb24odCl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KGk9ITAsZT0rdFswXSxuPSt0WzFdLHIpOmk/W2Usbl06bnVsbH0scn0saGllcmFyY2h5OldLLHBhY2s6ZnVuY3Rpb24gbXB0KCl7dmFyIHQ9bnVsbCxlPTEsbj0xLGk9TVo7ZnVuY3Rpb24gcihyKXtyZXR1cm4gci54PWUvMixyLnk9bi8yLHQ/ci5lYWNoQmVmb3JlKEFaKHQpKS5lYWNoQWZ0ZXIoQ1ooaSwuNSkpLmVhY2hCZWZvcmUoa1ooMSkpOnIuZWFjaEJlZm9yZShBWihUWikpLmVhY2hBZnRlcihDWihNWiwxKSkuZWFjaEFmdGVyKENaKGksci5yL01hdGgubWluKGUsbikpKS5lYWNoQmVmb3JlKGtaKE1hdGgubWluKGUsbikvKDIqci5yKSkpLHJ9cmV0dXJuIHIucmFkaXVzPWZ1bmN0aW9uKGUpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyh0PXdaKGUpLHIpOnR9LHIuc2l6ZT1mdW5jdGlvbih0KXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8oZT0rdFswXSxuPSt0WzFdLHIpOltlLG5dfSxyLnBhZGRpbmc9ZnVuY3Rpb24odCl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KGk9ImZ1bmN0aW9uIj09dHlwZW9mIHQ/dDpFWigrdCkscik6aX0scn0scGFja1NpYmxpbmdzOmZ1bmN0aW9uIGdwdCh0KXtyZXR1cm4geFoodCksdH0scGFja0VuY2xvc2U6Y1oscGFydGl0aW9uOmZ1bmN0aW9uIF9wdCgpe3ZhciB0PTEsZT0xLG49MCxpPSExO2Z1bmN0aW9uIHIocil7dmFyIG89ci5oZWlnaHQrMTtyZXR1cm4gci54MD1yLnkwPW4sci54MT10LHIueTE9ZS9vLHIuZWFjaEJlZm9yZSgoZnVuY3Rpb24gYSh0LGUpe3JldHVybiBmdW5jdGlvbihpKXtpLmNoaWxkcmVuJiZQWihpLGkueDAsdCooaS5kZXB0aCsxKS9lLGkueDEsdCooaS5kZXB0aCsyKS9lKTt2YXIgcj1pLngwLG89aS55MCxhPWkueDEtbixzPWkueTEtbjthPHImJihyPWE9KHIrYSkvMiksczxvJiYobz1zPShvK3MpLzIpLGkueDA9cixpLnkwPW8saS54MT1hLGkueTE9c319KShlLG8pKSxpJiZyLmVhY2hCZWZvcmUoTFopLHJ9cmV0dXJuIHIucm91bmQ9ZnVuY3Rpb24odCl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KGk9ISF0LHIpOml9LHIuc2l6ZT1mdW5jdGlvbihuKXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8odD0rblswXSxlPStuWzFdLHIpOlt0LGVdfSxyLnBhZGRpbmc9ZnVuY3Rpb24odCl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KG49K3Qscik6bn0scn0sc3RyYXRpZnk6ZnVuY3Rpb24geXB0KCl7dmFyIHQ9T1osZT1SWjtmdW5jdGlvbiBuKG4pe3ZhciBpLHIsbyxhLHMsbCxjLHU9bi5sZW5ndGgsaD1uZXcgQXJyYXkodSksZD17fTtmb3Iocj0wO3I8dTsrK3Ipcz1oW3JdPW5ldyAkSyhpPW5bcl0pLG51bGwhPShsPXQoaSxyLG4pKSYmKGwrPSIiKSYmKGRbYz0iJCIrKHMuaWQ9bCldPWMgaW4gZD9OWjpzKTtmb3Iocj0wO3I8dTsrK3IpaWYocz1oW3JdLG51bGwhPShsPWUobltyXSxyLG4pKSYmKGwrPSIiKSl7aWYoIShhPWRbIiQiK2xdKSl0aHJvdyBuZXcgRXJyb3IoIm1pc3Npbmc6ICIrbCk7aWYoYT09PU5aKXRocm93IG5ldyBFcnJvcigiYW1iaWd1b3VzOiAiK2wpO2EuY2hpbGRyZW4/YS5jaGlsZHJlbi5wdXNoKHMpOmEuY2hpbGRyZW49W3NdLHMucGFyZW50PWF9ZWxzZXtpZihvKXRocm93IG5ldyBFcnJvcigibXVsdGlwbGUgcm9vdHMiKTtvPXN9aWYoIW8pdGhyb3cgbmV3IEVycm9yKCJubyByb290Iik7aWYoby5wYXJlbnQ9SVosby5lYWNoQmVmb3JlKChmdW5jdGlvbih0KXt0LmRlcHRoPXQucGFyZW50LmRlcHRoKzEsLS11fSkpLmVhY2hCZWZvcmUoWEspLG8ucGFyZW50PW51bGwsdT4wKXRocm93IG5ldyBFcnJvcigiY3ljbGUiKTtyZXR1cm4gb31yZXR1cm4gbi5pZD1mdW5jdGlvbihlKXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8odD1TWihlKSxuKTp0fSxuLnBhcmVudElkPWZ1bmN0aW9uKHQpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyhlPVNaKHQpLG4pOmV9LG59LHRyZWU6ZnVuY3Rpb24gdnB0KCl7dmFyIHQ9elosZT0xLG49MSxpPW51bGw7ZnVuY3Rpb24gcihyKXt2YXIgbD0oZnVuY3Rpb24gYyh0KXtmb3IodmFyIGUsbixpLHIsbyxhPW5ldyBWWih0LDApLHM9W2FdO2U9cy5wb3AoKTspaWYoaT1lLl8uY2hpbGRyZW4pZm9yKGUuY2hpbGRyZW49bmV3IEFycmF5KG89aS5sZW5ndGgpLHI9by0xO3I+PTA7LS1yKXMucHVzaChuPWUuY2hpbGRyZW5bcl09bmV3IFZaKGlbcl0scikpLG4ucGFyZW50PWU7cmV0dXJuKGEucGFyZW50PW5ldyBWWihudWxsLDApKS5jaGlsZHJlbj1bYV0sYX0pKHIpO2lmKGwuZWFjaEFmdGVyKG8pLGwucGFyZW50Lm09LWwueixsLmVhY2hCZWZvcmUoYSksaSlyLmVhY2hCZWZvcmUocyk7ZWxzZXt2YXIgdT1yLGg9cixkPXI7ci5lYWNoQmVmb3JlKChmdW5jdGlvbih0KXt0Lng8dS54JiYodT10KSx0Lng+aC54JiYoaD10KSx0LmRlcHRoPmQuZGVwdGgmJihkPXQpfSkpO3ZhciBwPXU9PT1oPzE6dCh1LGgpLzIsZj1wLXUueCxtPWUvKGgueCtwK2YpLGc9bi8oZC5kZXB0aHx8MSk7ci5lYWNoQmVmb3JlKChmdW5jdGlvbih0KXt0Lng9KHQueCtmKSptLHQueT10LmRlcHRoKmd9KSl9cmV0dXJuIHJ9ZnVuY3Rpb24gbyhlKXt2YXIgbj1lLmNoaWxkcmVuLGk9ZS5wYXJlbnQuY2hpbGRyZW4scj1lLmk/aVtlLmktMV06bnVsbDtpZihuKXshKGZ1bmN0aW9uIG8odCl7Zm9yKHZhciBlLG49MCxpPTAscj10LmNoaWxkcmVuLG89ci5sZW5ndGg7LS1vPj0wOykoZT1yW29dKS56Kz1uLGUubSs9bixuKz1lLnMrKGkrPWUuYyl9KShlKTt2YXIgYT0oblswXS56K25bbi5sZW5ndGgtMV0ueikvMjtyPyhlLno9ci56K3QoZS5fLHIuXyksZS5tPWUuei1hKTplLno9YX1lbHNlIHImJihlLno9ci56K3QoZS5fLHIuXykpO2UucGFyZW50LkE9KGZ1bmN0aW9uIHMoZSxuLGkpe2lmKG4pe2Zvcih2YXIgcixvPWUsYT1lLHM9bixsPW8ucGFyZW50LmNoaWxkcmVuWzBdLGM9by5tLHU9YS5tLGg9cy5tLGQ9bC5tO3M9Qloocyksbz1EWihvKSxzJiZvOylsPURaKGwpLChhPUJaKGEpKS5hPWUsKHI9cy56K2gtby56LWMrdChzLl8sby5fKSk+MCYmKEhaKEZaKHMsZSxpKSxlLHIpLGMrPXIsdSs9ciksaCs9cy5tLGMrPW8ubSxkKz1sLm0sdSs9YS5tO3MmJiFCWihhKSYmKGEudD1zLGEubSs9aC11KSxvJiYhRFoobCkmJihsLnQ9byxsLm0rPWMtZCxpPWUpfXJldHVybiBpfSkoZSxyLGUucGFyZW50LkF8fGlbMF0pfWZ1bmN0aW9uIGEodCl7dC5fLng9dC56K3QucGFyZW50Lm0sdC5tKz10LnBhcmVudC5tfWZ1bmN0aW9uIHModCl7dC54Kj1lLHQueT10LmRlcHRoKm59cmV0dXJuIHIuc2VwYXJhdGlvbj1mdW5jdGlvbihlKXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8odD1lLHIpOnR9LHIuc2l6ZT1mdW5jdGlvbih0KXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8oaT0hMSxlPSt0WzBdLG49K3RbMV0scik6aT9udWxsOltlLG5dfSxyLm5vZGVTaXplPWZ1bmN0aW9uKHQpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyhpPSEwLGU9K3RbMF0sbj0rdFsxXSxyKTppP1tlLG5dOm51bGx9LHJ9LHRyZWVtYXA6ZnVuY3Rpb24gYnB0KCl7dmFyIHQ9V1osZT0hMSxuPTEsaT0xLHI9WzBdLG89TVosYT1NWixzPU1aLGw9TVosYz1NWjtmdW5jdGlvbiB1KHQpe3JldHVybiB0LngwPXQueTA9MCx0LngxPW4sdC55MT1pLHQuZWFjaEJlZm9yZShoKSxyPVswXSxlJiZ0LmVhY2hCZWZvcmUoTFopLHR9ZnVuY3Rpb24gaChlKXt2YXIgbj1yW2UuZGVwdGhdLGk9ZS54MCtuLHU9ZS55MCtuLGg9ZS54MS1uLGQ9ZS55MS1uO2g8aSYmKGk9aD0oaStoKS8yKSxkPHUmJih1PWQ9KHUrZCkvMiksZS54MD1pLGUueTA9dSxlLngxPWgsZS55MT1kLGUuY2hpbGRyZW4mJihuPXJbZS5kZXB0aCsxXT1vKGUpLzIsaSs9YyhlKS1uLHUrPWEoZSktbiwoaC09cyhlKS1uKTxpJiYoaT1oPShpK2gpLzIpLChkLT1sKGUpLW4pPHUmJih1PWQ9KHUrZCkvMiksdChlLGksdSxoLGQpKX1yZXR1cm4gdS5yb3VuZD1mdW5jdGlvbih0KXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8oZT0hIXQsdSk6ZX0sdS5zaXplPWZ1bmN0aW9uKHQpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyhuPSt0WzBdLGk9K3RbMV0sdSk6W24saV19LHUudGlsZT1mdW5jdGlvbihlKXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8odD1TWihlKSx1KTp0fSx1LnBhZGRpbmc9ZnVuY3Rpb24odCl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/dS5wYWRkaW5nSW5uZXIodCkucGFkZGluZ091dGVyKHQpOnUucGFkZGluZ0lubmVyKCl9LHUucGFkZGluZ0lubmVyPWZ1bmN0aW9uKHQpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyhvPSJmdW5jdGlvbiI9PXR5cGVvZiB0P3Q6RVooK3QpLHUpOm99LHUucGFkZGluZ091dGVyPWZ1bmN0aW9uKHQpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoP3UucGFkZGluZ1RvcCh0KS5wYWRkaW5nUmlnaHQodCkucGFkZGluZ0JvdHRvbSh0KS5wYWRkaW5nTGVmdCh0KTp1LnBhZGRpbmdUb3AoKX0sdS5wYWRkaW5nVG9wPWZ1bmN0aW9uKHQpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyhhPSJmdW5jdGlvbiI9PXR5cGVvZiB0P3Q6RVooK3QpLHUpOmF9LHUucGFkZGluZ1JpZ2h0PWZ1bmN0aW9uKHQpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyhzPSJmdW5jdGlvbiI9PXR5cGVvZiB0P3Q6RVooK3QpLHUpOnN9LHUucGFkZGluZ0JvdHRvbT1mdW5jdGlvbih0KXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8obD0iZnVuY3Rpb24iPT10eXBlb2YgdD90OkVaKCt0KSx1KTpsfSx1LnBhZGRpbmdMZWZ0PWZ1bmN0aW9uKHQpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyhjPSJmdW5jdGlvbiI9PXR5cGVvZiB0P3Q6RVooK3QpLHUpOmN9LHV9LHRyZWVtYXBCaW5hcnk6ZnVuY3Rpb24geHB0KHQsZSxuLGkscil7dmFyIG8sYSxzPXQuY2hpbGRyZW4sbD1zLmxlbmd0aCxjPW5ldyBBcnJheShsKzEpO2ZvcihjWzBdPWE9bz0wO288bDsrK28pY1tvKzFdPWErPXNbb10udmFsdWU7IShmdW5jdGlvbiB0KGUsbixpLHIsbyxhLGwpe2lmKGU+PW4tMSl7dmFyIHU9c1tlXTtyZXR1cm4gdS54MD1yLHUueTA9byx1LngxPWEsdm9pZCh1LnkxPWwpfWZvcih2YXIgaD1jW2VdLGQ9aS8yK2gscD1lKzEsZj1uLTE7cDxmOyl7dmFyIG09cCtmPj4+MTtjW21dPGQ/cD1tKzE6Zj1tfWQtY1twLTFdPGNbcF0tZCYmZSsxPHAmJi0tcDt2YXIgZz1jW3BdLWgsXz1pLWc7aWYoYS1yPmwtbyl7dmFyIHk9KHIqXythKmcpL2k7dChlLHAsZyxyLG8seSxsKSx0KHAsbixfLHksbyxhLGwpfWVsc2V7dmFyIHY9KG8qXytsKmcpL2k7dChlLHAsZyxyLG8sYSx2KSx0KHAsbixfLHIsdixhLGwpfX0pKDAsbCx0LnZhbHVlLGUsbixpLHIpfSx0cmVlbWFwRGljZTpQWix0cmVlbWFwU2xpY2U6alosdHJlZW1hcFNsaWNlRGljZTpmdW5jdGlvbiB3cHQodCxlLG4saSxyKXsoMSZ0LmRlcHRoP2paOlBaKSh0LGUsbixpLHIpfSx0cmVlbWFwU3F1YXJpZnk6V1osdHJlZW1hcFJlc3F1YXJpZnk6cVosaW50ZXJwb2xhdGU6ZlEsaW50ZXJwb2xhdGVBcnJheTpzUSxpbnRlcnBvbGF0ZUJhc2lzOlpKLGludGVycG9sYXRlQmFzaXNDbG9zZWQ6SkosaW50ZXJwb2xhdGVEYXRlOmxRLGludGVycG9sYXRlTnVtYmVyOmNRLGludGVycG9sYXRlT2JqZWN0OnVRLGludGVycG9sYXRlUm91bmQ6ZnVuY3Rpb24gU3B0KHQsZSl7cmV0dXJuIGUtPXQ9K3QsZnVuY3Rpb24obil7cmV0dXJuIE1hdGgucm91bmQodCtlKm4pfX0saW50ZXJwb2xhdGVTdHJpbmc6cFEsaW50ZXJwb2xhdGVUcmFuc2Zvcm1Dc3M6U1EsaW50ZXJwb2xhdGVUcmFuc2Zvcm1Tdmc6RVEsaW50ZXJwb2xhdGVab29tOmZ1bmN0aW9uIE1wdCh0LGUpe3ZhciBuLGkscj10WzBdLG89dFsxXSxhPXRbMl0scz1lWzJdLGw9ZVswXS1yLGM9ZVsxXS1vLHU9bCpsK2MqYztpZih1PDFlLTEyKWk9TWF0aC5sb2cocy9hKS9BUSxuPWZ1bmN0aW9uKHQpe3JldHVybltyK3QqbCxvK3QqYyxhKk1hdGguZXhwKEFRKnQqaSldfTtlbHNle3ZhciBoPU1hdGguc3FydCh1KSxkPShzKnMtYSphKzQqdSkvKDIqYSoyKmgpLHA9KHMqcy1hKmEtNCp1KS8oMipzKjIqaCksZj1NYXRoLmxvZyhNYXRoLnNxcnQoZCpkKzEpLWQpLG09TWF0aC5sb2coTWF0aC5zcXJ0KHAqcCsxKS1wKTtpPShtLWYpL0FRLG49ZnVuY3Rpb24odCl7dmFyIGU9dCppLG49Q1EoZikscz1hLygyKmgpKihuKihmdW5jdGlvbiB1KHQpe3JldHVybigodD1NYXRoLmV4cCgyKnQpKS0xKS8odCsxKX0pKEFRKmUrZiktKGZ1bmN0aW9uIGQodCl7cmV0dXJuKCh0PU1hdGguZXhwKHQpKS0xL3QpLzJ9KShmKSk7cmV0dXJuW3IrcypsLG8rcypjLGEqbi9DUShBUSplK2YpXX19cmV0dXJuIG4uZHVyYXRpb249MWUzKmksbn0saW50ZXJwb2xhdGVSZ2I6aVEsaW50ZXJwb2xhdGVSZ2JCYXNpczpvUSxpbnRlcnBvbGF0ZVJnYkJhc2lzQ2xvc2VkOmFRLGludGVycG9sYXRlSHNsOkxRLGludGVycG9sYXRlSHNsTG9uZzpQUSxpbnRlcnBvbGF0ZUxhYjpmdW5jdGlvbiBFcHQodCxlKXt2YXIgbj1uUSgodD1PSih0KSkubCwoZT1PSihlKSkubCksaT1uUSh0LmEsZS5hKSxyPW5RKHQuYixlLmIpLG89blEodC5vcGFjaXR5LGUub3BhY2l0eSk7cmV0dXJuIGZ1bmN0aW9uKGUpe3JldHVybiB0Lmw9bihlKSx0LmE9aShlKSx0LmI9cihlKSx0Lm9wYWNpdHk9byhlKSx0KyIifX0saW50ZXJwb2xhdGVIY2w6TlEsaW50ZXJwb2xhdGVIY2xMb25nOk9RLGludGVycG9sYXRlQ3ViZWhlbGl4OnpRLGludGVycG9sYXRlQ3ViZWhlbGl4TG9uZzpEUSxxdWFudGl6ZTpmdW5jdGlvbiBUcHQodCxlKXtmb3IodmFyIG49bmV3IEFycmF5KGUpLGk9MDtpPGU7KytpKW5baV09dChpLyhlLTEpKTtyZXR1cm4gbn0scGF0aDpVUSxwb2x5Z29uQXJlYTpmdW5jdGlvbiBBcHQodCl7Zm9yKHZhciBlLG49LTEsaT10Lmxlbmd0aCxyPXRbaS0xXSxvPTA7KytuPGk7KW8rPShlPXIpWzFdKihyPXRbbl0pWzBdLWVbMF0qclsxXTtyZXR1cm4gby8yfSxwb2x5Z29uQ2VudHJvaWQ6ZnVuY3Rpb24gQ3B0KHQpe2Zvcih2YXIgZSxuLGk9LTEscj10Lmxlbmd0aCxvPTAsYT0wLHM9dFtyLTFdLGw9MDsrK2k8cjspbCs9bj0oZT1zKVswXSoocz10W2ldKVsxXS1zWzBdKmVbMV0sbys9KGVbMF0rc1swXSkqbixhKz0oZVsxXStzWzFdKSpuO3JldHVybltvLyhsKj0zKSxhL2xdfSxwb2x5Z29uSHVsbDpmdW5jdGlvbiBrcHQodCl7aWYoKG49dC5sZW5ndGgpPDMpcmV0dXJuIG51bGw7dmFyIGUsbixpPW5ldyBBcnJheShuKSxyPW5ldyBBcnJheShuKTtmb3IoZT0wO2U8bjsrK2UpaVtlXT1bK3RbZV1bMF0sK3RbZV1bMV0sZV07Zm9yKGkuc29ydChXUSksZT0wO2U8bjsrK2UpcltlXT1baVtlXVswXSwtaVtlXVsxXV07dmFyIG89cVEoaSksYT1xUShyKSxzPWFbMF09PT1vWzBdLGw9YVthLmxlbmd0aC0xXT09PW9bby5sZW5ndGgtMV0sYz1bXTtmb3IoZT1vLmxlbmd0aC0xO2U+PTA7LS1lKWMucHVzaCh0W2lbb1tlXV1bMl1dKTtmb3IoZT0rcztlPGEubGVuZ3RoLWw7KytlKWMucHVzaCh0W2lbYVtlXV1bMl1dKTtyZXR1cm4gY30scG9seWdvbkNvbnRhaW5zOmZ1bmN0aW9uIExwdCh0LGUpe2Zvcih2YXIgbixpLHI9dC5sZW5ndGgsbz10W3ItMV0sYT1lWzBdLHM9ZVsxXSxsPW9bMF0sYz1vWzFdLHU9ITEsaD0wO2g8cjsrK2gpbj0obz10W2hdKVswXSwoaT1vWzFdKT5zIT1jPnMmJmE8KGwtbikqKHMtaSkvKGMtaSkrbiYmKHU9IXUpLGw9bixjPWk7cmV0dXJuIHV9LHBvbHlnb25MZW5ndGg6ZnVuY3Rpb24gUHB0KHQpe2Zvcih2YXIgZSxuLGk9LTEscj10Lmxlbmd0aCxvPXRbci0xXSxhPW9bMF0scz1vWzFdLGw9MDsrK2k8cjspZT1hLG49cyxlLT1hPShvPXRbaV0pWzBdLG4tPXM9b1sxXSxsKz1NYXRoLnNxcnQoZSplK24qbik7cmV0dXJuIGx9LHF1YWR0cmVlOlpRLHF1ZXVlOncxLHJhbmRvbVVuaWZvcm06TTEscmFuZG9tTm9ybWFsOkUxLHJhbmRvbUxvZ05vcm1hbDpUMSxyYW5kb21CYXRlczpDMSxyYW5kb21JcndpbkhhbGw6QTEscmFuZG9tRXhwb25lbnRpYWw6azEscmVxdWVzdDpMMSxodG1sOkkxLGpzb246TjEsdGV4dDpPMSx4bWw6UjEsY3N2OkIxLHRzdjpIMSxzY2FsZUJhbmQ6czAsc2NhbGVQb2ludDpmdW5jdGlvbiBJcHQoKXtyZXR1cm4gbDAoczAoKS5wYWRkaW5nSW5uZXIoMSkpfSxzY2FsZUlkZW50aXR5OmZ1bmN0aW9uIHQoKXt2YXIgZT1bMCwxXTtmdW5jdGlvbiBuKHQpe3JldHVybit0fXJldHVybiBuLmludmVydD1uLG4uZG9tYWluPW4ucmFuZ2U9ZnVuY3Rpb24odCl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KGU9aTAuY2FsbCh0LHYyKSxuKTplLnNsaWNlKCl9LG4uY29weT1mdW5jdGlvbigpe3JldHVybiB0KCkuZG9tYWluKGUpfSxWMihuKX0sc2NhbGVMaW5lYXI6ZnVuY3Rpb24gdCgpe3ZhciBlPUUyKHgyLGwyKTtyZXR1cm4gZS5jb3B5PWZ1bmN0aW9uKCl7cmV0dXJuIE0yKGUsdCgpKX0sVjIoZSl9LHNjYWxlTG9nOmZ1bmN0aW9uIHQoKXt2YXIgZT1FMihVMixHMikuZG9tYWluKFsxLDEwXSksbj1lLmRvbWFpbixpPTEwLHI9WTIoMTApLG89cTIoMTApO2Z1bmN0aW9uIGEoKXtyZXR1cm4gcj1ZMihpKSxvPXEyKGkpLG4oKVswXTwwJiYocj1YMihyKSxvPVgyKG8pKSxlfXJldHVybiBlLmJhc2U9ZnVuY3Rpb24odCl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KGk9K3QsYSgpKTppfSxlLmRvbWFpbj1mdW5jdGlvbih0KXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8obih0KSxhKCkpOm4oKX0sZS50aWNrcz1mdW5jdGlvbih0KXt2YXIgZSxhPW4oKSxzPWFbMF0sbD1hW2EubGVuZ3RoLTFdOyhlPWw8cykmJihkPXMscz1sLGw9ZCk7dmFyIGMsdSxoLGQ9cihzKSxwPXIobCksZj1udWxsPT10PzEwOit0LG09W107aWYoIShpJTEpJiZwLWQ8Zil7aWYoZD1NYXRoLnJvdW5kKGQpLTEscD1NYXRoLnJvdW5kKHApKzEscz4wKXtmb3IoO2Q8cDsrK2QpZm9yKHU9MSxjPW8oZCk7dTxpOysrdSlpZighKChoPWMqdSk8cykpe2lmKGg+bClicmVhazttLnB1c2goaCl9fWVsc2UgZm9yKDtkPHA7KytkKWZvcih1PWktMSxjPW8oZCk7dT49MTstLXUpaWYoISgoaD1jKnUpPHMpKXtpZihoPmwpYnJlYWs7bS5wdXNoKGgpfX1lbHNlIG09WTEoZCxwLE1hdGgubWluKHAtZCxmKSkubWFwKG8pO3JldHVybiBlP20ucmV2ZXJzZSgpOm19LGUudGlja0Zvcm1hdD1mdW5jdGlvbih0LG4pe2lmKG51bGw9PW4mJihuPTEwPT09aT8iLjBlIjoiLCIpLCJmdW5jdGlvbiIhPXR5cGVvZiBuJiYobj1EMihuKSksdD09PTEvMClyZXR1cm4gbjtudWxsPT10JiYodD0xMCk7dmFyIGE9TWF0aC5tYXgoMSxpKnQvZS50aWNrcygpLmxlbmd0aCk7cmV0dXJuIGZ1bmN0aW9uKHQpe3ZhciBlPXQvbyhNYXRoLnJvdW5kKHIodCkpKTtyZXR1cm4gZSppPGktLjUmJihlKj1pKSxlPD1hP24odCk6IiJ9fSxlLm5pY2U9ZnVuY3Rpb24oKXtyZXR1cm4gbihqMihuKCkse2Zsb29yOmZ1bmN0aW9uKHQpe3JldHVybiBvKE1hdGguZmxvb3Iocih0KSkpfSxjZWlsOmZ1bmN0aW9uKHQpe3JldHVybiBvKE1hdGguY2VpbChyKHQpKSl9fSkpfSxlLmNvcHk9ZnVuY3Rpb24oKXtyZXR1cm4gTTIoZSx0KCkuYmFzZShpKSl9LGV9LHNjYWxlT3JkaW5hbDphMCxzY2FsZUltcGxpY2l0Om8wLHNjYWxlUG93OksyLHNjYWxlU3FydDpmdW5jdGlvbiBOcHQoKXtyZXR1cm4gSzIoKS5leHBvbmVudCguNSl9LHNjYWxlUXVhbnRpbGU6ZnVuY3Rpb24gdCgpe3ZhciBlPVtdLG49W10saT1bXTtmdW5jdGlvbiByKCl7dmFyIHQ9MCxyPU1hdGgubWF4KDEsbi5sZW5ndGgpO2ZvcihpPW5ldyBBcnJheShyLTEpOysrdDxyOylpW3QtMV09SzEoZSx0L3IpO3JldHVybiBvfWZ1bmN0aW9uIG8odCl7aWYoIWlzTmFOKHQ9K3QpKXJldHVybiBuW2oxKGksdCldfXJldHVybiBvLmludmVydEV4dGVudD1mdW5jdGlvbih0KXt2YXIgcj1uLmluZGV4T2YodCk7cmV0dXJuIHI8MD9bTmFOLE5hTl06W3I+MD9pW3ItMV06ZVswXSxyPGkubGVuZ3RoP2lbcl06ZVtlLmxlbmd0aC0xXV19LG8uZG9tYWluPWZ1bmN0aW9uKHQpe2lmKCFhcmd1bWVudHMubGVuZ3RoKXJldHVybiBlLnNsaWNlKCk7ZT1bXTtmb3IodmFyIG4saT0wLG89dC5sZW5ndGg7aTxvOysraSludWxsPT0obj10W2ldKXx8aXNOYU4obj0rbil8fGUucHVzaChuKTtyZXR1cm4gZS5zb3J0KEYxKSxyKCl9LG8ucmFuZ2U9ZnVuY3Rpb24odCl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KG49cjAuY2FsbCh0KSxyKCkpOm4uc2xpY2UoKX0sby5xdWFudGlsZXM9ZnVuY3Rpb24oKXtyZXR1cm4gaS5zbGljZSgpfSxvLmNvcHk9ZnVuY3Rpb24oKXtyZXR1cm4gdCgpLmRvbWFpbihlKS5yYW5nZShuKX0sb30sc2NhbGVRdWFudGl6ZTpmdW5jdGlvbiB0KCl7dmFyIGU9MCxuPTEsaT0xLHI9Wy41XSxvPVswLDFdO2Z1bmN0aW9uIGEodCl7aWYodDw9dClyZXR1cm4gb1tqMShyLHQsMCxpKV19ZnVuY3Rpb24gcygpe3ZhciB0PS0xO2ZvcihyPW5ldyBBcnJheShpKTsrK3Q8aTspclt0XT0oKHQrMSkqbi0odC1pKSplKS8oaSsxKTtyZXR1cm4gYX1yZXR1cm4gYS5kb21haW49ZnVuY3Rpb24odCl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KGU9K3RbMF0sbj0rdFsxXSxzKCkpOltlLG5dfSxhLnJhbmdlPWZ1bmN0aW9uKHQpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyhpPShvPXIwLmNhbGwodCkpLmxlbmd0aC0xLHMoKSk6by5zbGljZSgpfSxhLmludmVydEV4dGVudD1mdW5jdGlvbih0KXt2YXIgYT1vLmluZGV4T2YodCk7cmV0dXJuIGE8MD9bTmFOLE5hTl06YTwxP1tlLHJbMF1dOmE+PWk/W3JbaS0xXSxuXTpbclthLTFdLHJbYV1dfSxhLmNvcHk9ZnVuY3Rpb24oKXtyZXR1cm4gdCgpLmRvbWFpbihbZSxuXSkucmFuZ2Uobyl9LFYyKGEpfSxzY2FsZVRocmVzaG9sZDpmdW5jdGlvbiB0KCl7dmFyIGU9Wy41XSxuPVswLDFdLGk9MTtmdW5jdGlvbiByKHQpe2lmKHQ8PXQpcmV0dXJuIG5bajEoZSx0LDAsaSldfXJldHVybiByLmRvbWFpbj1mdW5jdGlvbih0KXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8oZT1yMC5jYWxsKHQpLGk9TWF0aC5taW4oZS5sZW5ndGgsbi5sZW5ndGgtMSkscik6ZS5zbGljZSgpfSxyLnJhbmdlPWZ1bmN0aW9uKHQpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyhuPXIwLmNhbGwodCksaT1NYXRoLm1pbihlLmxlbmd0aCxuLmxlbmd0aC0xKSxyKTpuLnNsaWNlKCl9LHIuaW52ZXJ0RXh0ZW50PWZ1bmN0aW9uKHQpe3ZhciBpPW4uaW5kZXhPZih0KTtyZXR1cm5bZVtpLTFdLGVbaV1dfSxyLmNvcHk9ZnVuY3Rpb24oKXtyZXR1cm4gdCgpLmRvbWFpbihlKS5yYW5nZShuKX0scn0sc2NhbGVUaW1lOmZ1bmN0aW9uIE9wdCgpe3JldHVybiBZMyhnNSxtNSxkNSx1NSxjNSxsNSxzNSxlNSxMNSkuZG9tYWluKFtuZXcgRGF0ZSgyZTMsMCwxKSxuZXcgRGF0ZSgyZTMsMCwyKV0pfSxzY2FsZVV0YzpmdW5jdGlvbiBScHQoKXtyZXR1cm4gWTMoRTUsTTUseDUsdjUseTUsXzUsczUsZTUsUDUpLmRvbWFpbihbRGF0ZS5VVEMoMmUzLDAsMSksRGF0ZS5VVEMoMmUzLDAsMildKX0sc2NoZW1lQ2F0ZWdvcnkxMDokMyxzY2hlbWVDYXRlZ29yeTIwYjpLMyxzY2hlbWVDYXRlZ29yeTIwYzpaMyxzY2hlbWVDYXRlZ29yeTIwOkozLGludGVycG9sYXRlQ3ViZWhlbGl4RGVmYXVsdDpRMyxpbnRlcnBvbGF0ZVJhaW5ib3c6ZnVuY3Rpb24genB0KHQpeyh0PDB8fHQ+MSkmJih0LT1NYXRoLmZsb29yKHQpKTt2YXIgZT1NYXRoLmFicyh0LS41KTtyZXR1cm4gbjQuaD0zNjAqdC0xMDAsbjQucz0xLjUtMS41KmUsbjQubD0uOC0uOSplLG40KyIifSxpbnRlcnBvbGF0ZVdhcm06dDQsaW50ZXJwb2xhdGVDb29sOmU0LGludGVycG9sYXRlVmlyaWRpczpyNCxpbnRlcnBvbGF0ZU1hZ21hOm80LGludGVycG9sYXRlSW5mZXJubzphNCxpbnRlcnBvbGF0ZVBsYXNtYTpzNCxzY2FsZVNlcXVlbnRpYWw6ZnVuY3Rpb24gdChlKXt2YXIgbj0wLGk9MSxyPSExO2Z1bmN0aW9uIG8odCl7dmFyIG89KHQtbikvKGktbik7cmV0dXJuIGUocj9NYXRoLm1heCgwLE1hdGgubWluKDEsbykpOm8pfXJldHVybiBvLmRvbWFpbj1mdW5jdGlvbih0KXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8obj0rdFswXSxpPSt0WzFdLG8pOltuLGldfSxvLmNsYW1wPWZ1bmN0aW9uKHQpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyhyPSEhdCxvKTpyfSxvLmludGVycG9sYXRvcj1mdW5jdGlvbih0KXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8oZT10LG8pOmV9LG8uY29weT1mdW5jdGlvbigpe3JldHVybiB0KGUpLmRvbWFpbihbbixpXSkuY2xhbXAocil9LFYyKG8pfSxjcmVhdGU6ZnVuY3Rpb24gRHB0KHQpe3JldHVybiBiNihwNCh0KS5jYWxsKGRvY3VtZW50LmRvY3VtZW50RWxlbWVudCkpfSxjcmVhdG9yOnA0LGxvY2FsOko2LG1hdGNoZXI6eDQsbW91c2U6ZnVuY3Rpb24gQnB0KHQpe3ZhciBlPXQ5KCk7cmV0dXJuIGUuY2hhbmdlZFRvdWNoZXMmJihlPWUuY2hhbmdlZFRvdWNoZXNbMF0pLGU5KHQsZSl9LG5hbWVzcGFjZTp1NCxuYW1lc3BhY2VzOmM0LGNsaWVudFBvaW50OmU5LHNlbGVjdDpiNixzZWxlY3RBbGw6ZnVuY3Rpb24gSHB0KHQpe3JldHVybiJzdHJpbmciPT10eXBlb2YgdD9uZXcgeTYoW2RvY3VtZW50LnF1ZXJ5U2VsZWN0b3JBbGwodCldLFtkb2N1bWVudC5kb2N1bWVudEVsZW1lbnRdKTpuZXcgeTYoW251bGw9PXQ/W106dF0sXzYpfSxzZWxlY3Rpb246djYsc2VsZWN0b3I6bTQsc2VsZWN0b3JBbGw6XzQsc3R5bGU6RDQsdG91Y2g6ZnVuY3Rpb24gRnB0KHQsZSxuKXthcmd1bWVudHMubGVuZ3RoPDMmJihuPWUsZT10OSgpLmNoYW5nZWRUb3VjaGVzKTtmb3IodmFyIGkscj0wLG89ZT9lLmxlbmd0aDowO3I8bzsrK3IpaWYoKGk9ZVtyXSkuaWRlbnRpZmllcj09PW4pcmV0dXJuIGU5KHQsaSk7cmV0dXJuIG51bGx9LHRvdWNoZXM6ZnVuY3Rpb24gVnB0KHQsZSl7bnVsbD09ZSYmKGU9dDkoKS50b3VjaGVzKTtmb3IodmFyIG49MCxpPWU/ZS5sZW5ndGg6MCxyPW5ldyBBcnJheShpKTtuPGk7KytuKXJbbl09ZTkodCxlW25dKTtyZXR1cm4gcn0sd2luZG93Ok40LGdldCBldmVudCgpe3JldHVybiBsNn0sY3VzdG9tRXZlbnQ6ZnVuY3Rpb24ganB0KHQsZSxuLGkpe3ZhciByPWw2O3Quc291cmNlRXZlbnQ9bDYsbDY9dDt0cnl7cmV0dXJuIGUuYXBwbHkobixpKX1maW5hbGx5e2w2PXJ9fSxhcmM6ZnVuY3Rpb24gVXB0KCl7dmFyIHQ9dzksZT1TOSxuPWw5KDApLGk9bnVsbCxyPU05LG89RTksYT1UOSxzPW51bGw7ZnVuY3Rpb24gbCgpe3ZhciBsLGMsdT0rdC5hcHBseSh0aGlzLGFyZ3VtZW50cyksaD0rZS5hcHBseSh0aGlzLGFyZ3VtZW50cyksZD1yLmFwcGx5KHRoaXMsYXJndW1lbnRzKS15OSxwPW8uYXBwbHkodGhpcyxhcmd1bWVudHMpLXk5LGY9YzkocC1kKSxtPXA+ZDtpZihzfHwocz1sPXM5KCkpLGg8dSYmKGM9aCxoPXUsdT1jKSxoPmc5KWlmKGY+djktZzkpcy5tb3ZlVG8oaCpoOShkKSxoKmY5KGQpKSxzLmFyYygwLDAsaCxkLHAsIW0pLHU+ZzkmJihzLm1vdmVUbyh1Kmg5KHApLHUqZjkocCkpLHMuYXJjKDAsMCx1LHAsZCxtKSk7ZWxzZXt2YXIgZyxfLHk9ZCx2PXAsYj1kLHg9cCx3PWYsUz1mLE09YS5hcHBseSh0aGlzLGFyZ3VtZW50cykvMixFPU0+ZzkmJihpPytpLmFwcGx5KHRoaXMsYXJndW1lbnRzKTptOSh1KnUraCpoKSksVD1wOShjOShoLXUpLzIsK24uYXBwbHkodGhpcyxhcmd1bWVudHMpKSxBPVQsQz1UO2lmKEU+Zzkpe3ZhciBrPXg5KEUvdSpmOShNKSksTD14OShFL2gqZjkoTSkpOyh3LT0yKmspPmc5PyhiKz1rKj1tPzE6LTEseC09ayk6KHc9MCxiPXg9KGQrcCkvMiksKFMtPTIqTCk+Zzk/KHkrPUwqPW0/MTotMSx2LT1MKTooUz0wLHk9dj0oZCtwKS8yKX12YXIgUD1oKmg5KHkpLEk9aCpmOSh5KSxOPXUqaDkoeCksTz11KmY5KHgpO2lmKFQ+Zzkpe3ZhciBSPWgqaDkodiksej1oKmY5KHYpLEQ9dSpoOShiKSxCPXUqZjkoYik7aWYoZjxfOSl7dmFyIEg9dz5nOT9BOShQLEksRCxCLFIseixOLE8pOltOLE9dLEY9UC1IWzBdLFY9SS1IWzFdLGo9Ui1IWzBdLFU9ei1IWzFdLEc9MS9mOShiOSgoRipqK1YqVSkvKG05KEYqRitWKlYpKm05KGoqaitVKlUpKSkvMiksVz1tOShIWzBdKkhbMF0rSFsxXSpIWzFdKTtBPXA5KFQsKHUtVykvKEctMSkpLEM9cDkoVCwoaC1XKS8oRysxKSl9fVM+Zzk/Qz5nOT8oZz1DOShELEIsUCxJLGgsQyxtKSxfPUM5KFIseixOLE8saCxDLG0pLHMubW92ZVRvKGcuY3grZy54MDEsZy5jeStnLnkwMSksQzxUP3MuYXJjKGcuY3gsZy5jeSxDLHU5KGcueTAxLGcueDAxKSx1OShfLnkwMSxfLngwMSksIW0pOihzLmFyYyhnLmN4LGcuY3ksQyx1OShnLnkwMSxnLngwMSksdTkoZy55MTEsZy54MTEpLCFtKSxzLmFyYygwLDAsaCx1OShnLmN5K2cueTExLGcuY3grZy54MTEpLHU5KF8uY3krXy55MTEsXy5jeCtfLngxMSksIW0pLHMuYXJjKF8uY3gsXy5jeSxDLHU5KF8ueTExLF8ueDExKSx1OShfLnkwMSxfLngwMSksIW0pKSk6KHMubW92ZVRvKFAsSSkscy5hcmMoMCwwLGgseSx2LCFtKSk6cy5tb3ZlVG8oUCxJKSx1Pmc5JiZ3Pmc5P0E+Zzk/KGc9QzkoTixPLFIseix1LC1BLG0pLF89QzkoUCxJLEQsQix1LC1BLG0pLHMubGluZVRvKGcuY3grZy54MDEsZy5jeStnLnkwMSksQTxUP3MuYXJjKGcuY3gsZy5jeSxBLHU5KGcueTAxLGcueDAxKSx1OShfLnkwMSxfLngwMSksIW0pOihzLmFyYyhnLmN4LGcuY3ksQSx1OShnLnkwMSxnLngwMSksdTkoZy55MTEsZy54MTEpLCFtKSxzLmFyYygwLDAsdSx1OShnLmN5K2cueTExLGcuY3grZy54MTEpLHU5KF8uY3krXy55MTEsXy5jeCtfLngxMSksbSkscy5hcmMoXy5jeCxfLmN5LEEsdTkoXy55MTEsXy54MTEpLHU5KF8ueTAxLF8ueDAxKSwhbSkpKTpzLmFyYygwLDAsdSx4LGIsbSk6cy5saW5lVG8oTixPKX1lbHNlIHMubW92ZVRvKDAsMCk7aWYocy5jbG9zZVBhdGgoKSxsKXJldHVybiBzPW51bGwsbCsiInx8bnVsbH1yZXR1cm4gbC5jZW50cm9pZD1mdW5jdGlvbigpe3ZhciBuPSgrdC5hcHBseSh0aGlzLGFyZ3VtZW50cykrICtlLmFwcGx5KHRoaXMsYXJndW1lbnRzKSkvMixpPSgrci5hcHBseSh0aGlzLGFyZ3VtZW50cykrICtvLmFwcGx5KHRoaXMsYXJndW1lbnRzKSkvMi1fOS8yO3JldHVybltoOShpKSpuLGY5KGkpKm5dfSxsLmlubmVyUmFkaXVzPWZ1bmN0aW9uKGUpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyh0PSJmdW5jdGlvbiI9PXR5cGVvZiBlP2U6bDkoK2UpLGwpOnR9LGwub3V0ZXJSYWRpdXM9ZnVuY3Rpb24odCl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KGU9ImZ1bmN0aW9uIj09dHlwZW9mIHQ/dDpsOSgrdCksbCk6ZX0sbC5jb3JuZXJSYWRpdXM9ZnVuY3Rpb24odCl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KG49ImZ1bmN0aW9uIj09dHlwZW9mIHQ/dDpsOSgrdCksbCk6bn0sbC5wYWRSYWRpdXM9ZnVuY3Rpb24odCl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KGk9bnVsbD09dD9udWxsOiJmdW5jdGlvbiI9PXR5cGVvZiB0P3Q6bDkoK3QpLGwpOml9LGwuc3RhcnRBbmdsZT1mdW5jdGlvbih0KXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8ocj0iZnVuY3Rpb24iPT10eXBlb2YgdD90Omw5KCt0KSxsKTpyfSxsLmVuZEFuZ2xlPWZ1bmN0aW9uKHQpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyhvPSJmdW5jdGlvbiI9PXR5cGVvZiB0P3Q6bDkoK3QpLGwpOm99LGwucGFkQW5nbGU9ZnVuY3Rpb24odCl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KGE9ImZ1bmN0aW9uIj09dHlwZW9mIHQ/dDpsOSgrdCksbCk6YX0sbC5jb250ZXh0PWZ1bmN0aW9uKHQpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyhzPW51bGw9PXQ/bnVsbDp0LGwpOnN9LGx9LGFyZWE6TzksbGluZTpOOSxwaWU6ZnVuY3Rpb24gR3B0KCl7dmFyIHQ9ejksZT1SOSxuPW51bGwsaT1sOSgwKSxyPWw5KHY5KSxvPWw5KDApO2Z1bmN0aW9uIGEoYSl7dmFyIHMsbCxjLHUsaCxkPWEubGVuZ3RoLHA9MCxmPW5ldyBBcnJheShkKSxtPW5ldyBBcnJheShkKSxnPStpLmFwcGx5KHRoaXMsYXJndW1lbnRzKSxfPU1hdGgubWluKHY5LE1hdGgubWF4KC12OSxyLmFwcGx5KHRoaXMsYXJndW1lbnRzKS1nKSkseT1NYXRoLm1pbihNYXRoLmFicyhfKS9kLG8uYXBwbHkodGhpcyxhcmd1bWVudHMpKSx2PXkqKF88MD8tMToxKTtmb3Iocz0wO3M8ZDsrK3MpKGg9bVtmW3NdPXNdPSt0KGFbc10scyxhKSk+MCYmKHArPWgpO2ZvcihudWxsIT1lP2Yuc29ydCgoZnVuY3Rpb24odCxuKXtyZXR1cm4gZShtW3RdLG1bbl0pfSkpOm51bGwhPW4mJmYuc29ydCgoZnVuY3Rpb24odCxlKXtyZXR1cm4gbihhW3RdLGFbZV0pfSkpLHM9MCxjPXA/KF8tZCp2KS9wOjA7czxkOysrcyxnPXUpbVtsPWZbc11dPXtkYXRhOmFbbF0saW5kZXg6cyx2YWx1ZTpoPW1bbF0sc3RhcnRBbmdsZTpnLGVuZEFuZ2xlOnU9ZysoaD4wP2gqYzowKSt2LHBhZEFuZ2xlOnl9O3JldHVybiBtfXJldHVybiBhLnZhbHVlPWZ1bmN0aW9uKGUpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyh0PSJmdW5jdGlvbiI9PXR5cGVvZiBlP2U6bDkoK2UpLGEpOnR9LGEuc29ydFZhbHVlcz1mdW5jdGlvbih0KXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8oZT10LG49bnVsbCxhKTplfSxhLnNvcnQ9ZnVuY3Rpb24odCl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KG49dCxlPW51bGwsYSk6bn0sYS5zdGFydEFuZ2xlPWZ1bmN0aW9uKHQpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyhpPSJmdW5jdGlvbiI9PXR5cGVvZiB0P3Q6bDkoK3QpLGEpOml9LGEuZW5kQW5nbGU9ZnVuY3Rpb24odCl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KHI9ImZ1bmN0aW9uIj09dHlwZW9mIHQ/dDpsOSgrdCksYSk6cn0sYS5wYWRBbmdsZT1mdW5jdGlvbih0KXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8obz0iZnVuY3Rpb24iPT10eXBlb2YgdD90Omw5KCt0KSxhKTpvfSxhfSxhcmVhUmFkaWFsOmo5LHJhZGlhbEFyZWE6ajksbGluZVJhZGlhbDpWOSxyYWRpYWxMaW5lOlY5LHBvaW50UmFkaWFsOlU5LGxpbmtIb3Jpem9udGFsOmZ1bmN0aW9uIFdwdCgpe3JldHVybiBZOShYOSl9LGxpbmtWZXJ0aWNhbDpmdW5jdGlvbiBxcHQoKXtyZXR1cm4gWTkoJDkpfSxsaW5rUmFkaWFsOmZ1bmN0aW9uIFlwdCgpe3ZhciB0PVk5KEs5KTtyZXR1cm4gdC5hbmdsZT10LngsZGVsZXRlIHQueCx0LnJhZGl1cz10LnksZGVsZXRlIHQueSx0fSxzeW1ib2w6ZnVuY3Rpb24gWHB0KCl7dmFyIHQ9bDkoWjkpLGU9bDkoNjQpLG49bnVsbDtmdW5jdGlvbiBpKCl7dmFyIGk7aWYobnx8KG49aT1zOSgpKSx0LmFwcGx5KHRoaXMsYXJndW1lbnRzKS5kcmF3KG4sK2UuYXBwbHkodGhpcyxhcmd1bWVudHMpKSxpKXJldHVybiBuPW51bGwsaSsiInx8bnVsbH1yZXR1cm4gaS50eXBlPWZ1bmN0aW9uKGUpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyh0PSJmdW5jdGlvbiI9PXR5cGVvZiBlP2U6bDkoZSksaSk6dH0saS5zaXplPWZ1bmN0aW9uKHQpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyhlPSJmdW5jdGlvbiI9PXR5cGVvZiB0P3Q6bDkoK3QpLGkpOmV9LGkuY29udGV4dD1mdW5jdGlvbih0KXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8obj1udWxsPT10P251bGw6dCxpKTpufSxpfSxzeW1ib2xzOmY4LHN5bWJvbENpcmNsZTpaOSxzeW1ib2xDcm9zczpKOSxzeW1ib2xEaWFtb25kOmU4LHN5bWJvbFNxdWFyZTphOCxzeW1ib2xTdGFyOm84LHN5bWJvbFRyaWFuZ2xlOmw4LHN5bWJvbFd5ZTpwOCxjdXJ2ZUJhc2lzQ2xvc2VkOmZ1bmN0aW9uICRwdCh0KXtyZXR1cm4gbmV3IHk4KHQpfSxjdXJ2ZUJhc2lzT3BlbjpmdW5jdGlvbiBLcHQodCl7cmV0dXJuIG5ldyB2OCh0KX0sY3VydmVCYXNpczpmdW5jdGlvbiBacHQodCl7cmV0dXJuIG5ldyBfOCh0KX0sY3VydmVCdW5kbGU6eDgsY3VydmVDYXJkaW5hbENsb3NlZDpUOCxjdXJ2ZUNhcmRpbmFsT3BlbjpDOCxjdXJ2ZUNhcmRpbmFsOk04LGN1cnZlQ2F0bXVsbFJvbUNsb3NlZDpOOCxjdXJ2ZUNhdG11bGxSb21PcGVuOlI4LGN1cnZlQ2F0bXVsbFJvbTpQOCxjdXJ2ZUxpbmVhckNsb3NlZDpmdW5jdGlvbiBKcHQodCl7cmV0dXJuIG5ldyB6OCh0KX0sY3VydmVMaW5lYXI6TDksY3VydmVNb25vdG9uZVg6ZnVuY3Rpb24gUXB0KHQpe3JldHVybiBuZXcgVjgodCl9LGN1cnZlTW9ub3RvbmVZOmZ1bmN0aW9uIHRmdCh0KXtyZXR1cm4gbmV3IGo4KHQpfSxjdXJ2ZU5hdHVyYWw6ZnVuY3Rpb24gZWZ0KHQpe3JldHVybiBuZXcgRzgodCl9LGN1cnZlU3RlcDpmdW5jdGlvbiBuZnQodCl7cmV0dXJuIG5ldyBxOCh0LC41KX0sY3VydmVTdGVwQWZ0ZXI6ZnVuY3Rpb24gaWZ0KHQpe3JldHVybiBuZXcgcTgodCwxKX0sY3VydmVTdGVwQmVmb3JlOmZ1bmN0aW9uIHJmdCh0KXtyZXR1cm4gbmV3IHE4KHQsMCl9LHN0YWNrOmZ1bmN0aW9uIG9mdCgpe3ZhciB0PWw5KFtdKSxlPVg4LG49WTgsaT0kODtmdW5jdGlvbiByKHIpe3ZhciBvLGEscz10LmFwcGx5KHRoaXMsYXJndW1lbnRzKSxsPXIubGVuZ3RoLGM9cy5sZW5ndGgsdT1uZXcgQXJyYXkoYyk7Zm9yKG89MDtvPGM7KytvKXtmb3IodmFyIGgsZD1zW29dLHA9dVtvXT1uZXcgQXJyYXkobCksZj0wO2Y8bDsrK2YpcFtmXT1oPVswLCtpKHJbZl0sZCxmLHIpXSxoLmRhdGE9cltmXTtwLmtleT1kfWZvcihvPTAsYT1lKHUpO288YzsrK28pdVthW29dXS5pbmRleD1vO3JldHVybiBuKHUsYSksdX1yZXR1cm4gci5rZXlzPWZ1bmN0aW9uKGUpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyh0PSJmdW5jdGlvbiI9PXR5cGVvZiBlP2U6bDkoRzkuY2FsbChlKSkscik6dH0sci52YWx1ZT1mdW5jdGlvbih0KXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8oaT0iZnVuY3Rpb24iPT10eXBlb2YgdD90Omw5KCt0KSxyKTppfSxyLm9yZGVyPWZ1bmN0aW9uKHQpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyhlPW51bGw9PXQ/WDg6ImZ1bmN0aW9uIj09dHlwZW9mIHQ/dDpsOShHOS5jYWxsKHQpKSxyKTplfSxyLm9mZnNldD1mdW5jdGlvbih0KXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8obj1udWxsPT10P1k4OnQscik6bn0scn0sc3RhY2tPZmZzZXRFeHBhbmQ6ZnVuY3Rpb24gYWZ0KHQsZSl7aWYoKGk9dC5sZW5ndGgpPjApe2Zvcih2YXIgbixpLHIsbz0wLGE9dFswXS5sZW5ndGg7bzxhOysrbyl7Zm9yKHI9bj0wO248aTsrK24pcis9dFtuXVtvXVsxXXx8MDtpZihyKWZvcihuPTA7bjxpOysrbil0W25dW29dWzFdLz1yfVk4KHQsZSl9fSxzdGFja09mZnNldERpdmVyZ2luZzpmdW5jdGlvbiBzZnQodCxlKXtpZigocz10Lmxlbmd0aCk+MSlmb3IodmFyIG4saSxyLG8sYSxzLGw9MCxjPXRbZVswXV0ubGVuZ3RoO2w8YzsrK2wpZm9yKG89YT0wLG49MDtuPHM7KytuKShyPShpPXRbZVtuXV1bbF0pWzFdLWlbMF0pPj0wPyhpWzBdPW8saVsxXT1vKz1yKTpyPDA/KGlbMV09YSxpWzBdPWErPXIpOmlbMF09b30sc3RhY2tPZmZzZXROb25lOlk4LHN0YWNrT2Zmc2V0U2lsaG91ZXR0ZTpmdW5jdGlvbiBsZnQodCxlKXtpZigobj10Lmxlbmd0aCk+MCl7Zm9yKHZhciBuLGk9MCxyPXRbZVswXV0sbz1yLmxlbmd0aDtpPG87KytpKXtmb3IodmFyIGE9MCxzPTA7YTxuOysrYSlzKz10W2FdW2ldWzFdfHwwO3JbaV1bMV0rPXJbaV1bMF09LXMvMn1ZOCh0LGUpfX0sc3RhY2tPZmZzZXRXaWdnbGU6ZnVuY3Rpb24gY2Z0KHQsZSl7aWYoKHI9dC5sZW5ndGgpPjAmJihpPShuPXRbZVswXV0pLmxlbmd0aCk+MCl7Zm9yKHZhciBuLGkscixvPTAsYT0xO2E8aTsrK2Epe2Zvcih2YXIgcz0wLGw9MCxjPTA7czxyOysrcyl7Zm9yKHZhciB1PXRbZVtzXV0saD11W2FdWzFdfHwwLGQ9KGgtKHVbYS0xXVsxXXx8MCkpLzIscD0wO3A8czsrK3Ape3ZhciBmPXRbZVtwXV07ZCs9KGZbYV1bMV18fDApLShmW2EtMV1bMV18fDApfWwrPWgsYys9ZCpofW5bYS0xXVsxXSs9blthLTFdWzBdPW8sbCYmKG8tPWMvbCl9blthLTFdWzFdKz1uW2EtMV1bMF09byxZOCh0LGUpfX0sc3RhY2tPcmRlckFzY2VuZGluZzpLOCxzdGFja09yZGVyRGVzY2VuZGluZzpmdW5jdGlvbiB1ZnQodCl7cmV0dXJuIEs4KHQpLnJldmVyc2UoKX0sc3RhY2tPcmRlckluc2lkZU91dDpmdW5jdGlvbiBoZnQodCl7dmFyIGUsbixpPXQubGVuZ3RoLHI9dC5tYXAoWjgpLG89WDgodCkuc29ydCgoZnVuY3Rpb24odCxlKXtyZXR1cm4gcltlXS1yW3RdfSkpLGE9MCxzPTAsbD1bXSxjPVtdO2ZvcihlPTA7ZTxpOysrZSluPW9bZV0sYTxzPyhhKz1yW25dLGwucHVzaChuKSk6KHMrPXJbbl0sYy5wdXNoKG4pKTtyZXR1cm4gYy5yZXZlcnNlKCkuY29uY2F0KGwpfSxzdGFja09yZGVyTm9uZTpYOCxzdGFja09yZGVyUmV2ZXJzZTpmdW5jdGlvbiBkZnQodCl7cmV0dXJuIFg4KHQpLnJldmVyc2UoKX0sdGltZUludGVydmFsOnQ3LHRpbWVNaWxsaXNlY29uZDplNyx0aW1lTWlsbGlzZWNvbmRzOm43LHV0Y01pbGxpc2Vjb25kOmU3LHV0Y01pbGxpc2Vjb25kczpuNyx0aW1lU2Vjb25kOmw3LHRpbWVTZWNvbmRzOmM3LHV0Y1NlY29uZDpsNyx1dGNTZWNvbmRzOmM3LHRpbWVNaW51dGU6dTcsdGltZU1pbnV0ZXM6aDcsdGltZUhvdXI6ZDcsdGltZUhvdXJzOnA3LHRpbWVEYXk6ZjcsdGltZURheXM6bTcsdGltZVdlZWs6XzcsdGltZVdlZWtzOk03LHRpbWVTdW5kYXk6XzcsdGltZVN1bmRheXM6TTcsdGltZU1vbmRheTp5Nyx0aW1lTW9uZGF5czpFNyx0aW1lVHVlc2RheTp2Nyx0aW1lVHVlc2RheXM6VDcsdGltZVdlZG5lc2RheTpiNyx0aW1lV2VkbmVzZGF5czpBNyx0aW1lVGh1cnNkYXk6eDcsdGltZVRodXJzZGF5czpDNyx0aW1lRnJpZGF5Onc3LHRpbWVGcmlkYXlzOms3LHRpbWVTYXR1cmRheTpTNyx0aW1lU2F0dXJkYXlzOkw3LHRpbWVNb250aDpQNyx0aW1lTW9udGhzOkk3LHRpbWVZZWFyOk43LHRpbWVZZWFyczpPNyx1dGNNaW51dGU6UjcsdXRjTWludXRlczp6Nyx1dGNIb3VyOkQ3LHV0Y0hvdXJzOkI3LHV0Y0RheTpINyx1dGNEYXlzOkY3LHV0Y1dlZWs6ajcsdXRjV2Vla3M6JDcsdXRjU3VuZGF5Omo3LHV0Y1N1bmRheXM6JDcsdXRjTW9uZGF5OlU3LHV0Y01vbmRheXM6SzcsdXRjVHVlc2RheTpHNyx1dGNUdWVzZGF5czpaNyx1dGNXZWRuZXNkYXk6VzcsdXRjV2VkbmVzZGF5czpKNyx1dGNUaHVyc2RheTpxNyx1dGNUaHVyc2RheXM6UTcsdXRjRnJpZGF5Olk3LHV0Y0ZyaWRheXM6dHR0LHV0Y1NhdHVyZGF5Olg3LHV0Y1NhdHVyZGF5czpldHQsdXRjTW9udGg6bnR0LHV0Y01vbnRoczppdHQsdXRjWWVhcjpydHQsdXRjWWVhcnM6b3R0LHRpbWVGb3JtYXREZWZhdWx0TG9jYWxlOkdldCxnZXQgdGltZUZvcm1hdCgpe3JldHVybiBDdHR9LGdldCB0aW1lUGFyc2UoKXtyZXR1cm4ga3R0fSxnZXQgdXRjRm9ybWF0KCl7cmV0dXJuIEx0dH0sZ2V0IHV0Y1BhcnNlKCl7cmV0dXJuIFB0dH0sdGltZUZvcm1hdExvY2FsZTpUdHQsaXNvRm9ybWF0OlhldCxpc29QYXJzZTpLZXQsbm93OmFudCx0aW1lcjpjbnQsdGltZXJGbHVzaDp1bnQsdGltZW91dDpmdW5jdGlvbiBwZnQodCxlLG4pe3ZhciBpPW5ldyBsbnQ7cmV0dXJuIGkucmVzdGFydCgoZnVuY3Rpb24obil7aS5zdG9wKCksdChuK2UpfSksZT1udWxsPT1lPzA6K2UsbiksaX0saW50ZXJ2YWw6ZnVuY3Rpb24gZmZ0KHQsZSxuKXt2YXIgaT1uZXcgbG50LHI9ZTtyZXR1cm4gbnVsbD09ZT8oaS5yZXN0YXJ0KHQsZSxuKSxpKTooZT0rZSxuPW51bGw9PW4/YW50KCk6K24saS5yZXN0YXJ0KChmdW5jdGlvbiBvKGEpe2ErPXIsaS5yZXN0YXJ0KG8scis9ZSxuKSx0KGEpfSksZSxuKSxpKX0sdHJhbnNpdGlvbjpLb3QsYWN0aXZlOmZ1bmN0aW9uIG1mdCh0LGUpe3ZhciBuLGkscj10Ll9fdHJhbnNpdGlvbjtpZihyKWZvcihpIGluIGU9bnVsbD09ZT9udWxsOmUrIiIscilpZigobj1yW2ldKS5zdGF0ZT4xJiZuLm5hbWU9PT1lKXJldHVybiBuZXcgJG90KFtbdF1dLGJhdCxlLCtpKTtyZXR1cm4gbnVsbH0saW50ZXJydXB0OmtydCx2b3Jvbm9pOmZ1bmN0aW9uIGdmdCgpe3ZhciB0PXdhdCxlPVNhdCxuPW51bGw7ZnVuY3Rpb24gaShpKXtyZXR1cm4gbmV3IHJzdChpLm1hcCgoZnVuY3Rpb24obixyKXt2YXIgbz1bTWF0aC5yb3VuZCh0KG4scixpKS90c3QpKnRzdCxNYXRoLnJvdW5kKGUobixyLGkpL3RzdCkqdHN0XTtyZXR1cm4gby5pbmRleD1yLG8uZGF0YT1uLG99KSksbil9cmV0dXJuIGkucG9seWdvbnM9ZnVuY3Rpb24odCl7cmV0dXJuIGkodCkucG9seWdvbnMoKX0saS5saW5rcz1mdW5jdGlvbih0KXtyZXR1cm4gaSh0KS5saW5rcygpfSxpLnRyaWFuZ2xlcz1mdW5jdGlvbih0KXtyZXR1cm4gaSh0KS50cmlhbmdsZXMoKX0saS54PWZ1bmN0aW9uKGUpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyh0PSJmdW5jdGlvbiI9PXR5cGVvZiBlP2U6eGF0KCtlKSxpKTp0fSxpLnk9ZnVuY3Rpb24odCl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KGU9ImZ1bmN0aW9uIj09dHlwZW9mIHQ/dDp4YXQoK3QpLGkpOmV9LGkuZXh0ZW50PWZ1bmN0aW9uKHQpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyhuPW51bGw9PXQ/bnVsbDpbWyt0WzBdWzBdLCt0WzBdWzFdXSxbK3RbMV1bMF0sK3RbMV1bMV1dXSxpKTpuJiZbW25bMF1bMF0sblswXVsxXV0sW25bMV1bMF0sblsxXVsxXV1dfSxpLnNpemU9ZnVuY3Rpb24odCl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KG49bnVsbD09dD9udWxsOltbMCwwXSxbK3RbMF0sK3RbMV1dXSxpKTpuJiZbblsxXVswXS1uWzBdWzBdLG5bMV1bMV0tblswXVsxXV19LGl9LHpvb206ZnVuY3Rpb24gX2Z0KCl7dmFyIHQsZSxuPURodCxpPUJodCxyPWpodCxvPUZodCxhPVZodCxzPVswLDEvMF0sbD1bWy0xLzAsLTEvMF0sWzEvMCwxLzBdXSxjPTI1MCx1PW91dCxoPVtdLGQ9YXN0KCJzdGFydCIsInpvb20iLCJlbmQiKSxwPTUwMCxmPTA7ZnVuY3Rpb24gbSh0KXt0LnByb3BlcnR5KCJfX3pvb20iLEhodCkub24oIndoZWVsLnpvb20iLHcpLm9uKCJtb3VzZWRvd24uem9vbSIsUykub24oImRibGNsaWNrLnpvb20iLE0pLmZpbHRlcihhKS5vbigidG91Y2hzdGFydC56b29tIixFKS5vbigidG91Y2htb3ZlLnpvb20iLFQpLm9uKCJ0b3VjaGVuZC56b29tIHRvdWNoY2FuY2VsLnpvb20iLEEpLnN0eWxlKCJ0b3VjaC1hY3Rpb24iLCJub25lIikuc3R5bGUoIi13ZWJraXQtdGFwLWhpZ2hsaWdodC1jb2xvciIsInJnYmEoMCwwLDAsMCkiKX1mdW5jdGlvbiBnKHQsZSl7cmV0dXJuKGU9TWF0aC5tYXgoc1swXSxNYXRoLm1pbihzWzFdLGUpKSk9PT10Lms/dDpuZXcgTGh0KGUsdC54LHQueSl9ZnVuY3Rpb24gXyh0LGUsbil7dmFyIGk9ZVswXS1uWzBdKnQuayxyPWVbMV0tblsxXSp0Lms7cmV0dXJuIGk9PT10LngmJnI9PT10Lnk/dDpuZXcgTGh0KHQuayxpLHIpfWZ1bmN0aW9uIHkodCl7cmV0dXJuWygrdFswXVswXSsgK3RbMV1bMF0pLzIsKCt0WzBdWzFdKyArdFsxXVsxXSkvMl19ZnVuY3Rpb24gdih0LGUsbil7dC5vbigic3RhcnQuem9vbSIsKGZ1bmN0aW9uKCl7Yih0aGlzLGFyZ3VtZW50cykuc3RhcnQoKX0pKS5vbigiaW50ZXJydXB0Lnpvb20gZW5kLnpvb20iLChmdW5jdGlvbigpe2IodGhpcyxhcmd1bWVudHMpLmVuZCgpfSkpLnR3ZWVuKCJ6b29tIiwoZnVuY3Rpb24oKXt2YXIgdD10aGlzLHI9YXJndW1lbnRzLG89Yih0LHIpLGE9aS5hcHBseSh0LHIpLHM9bnx8eShhKSxsPU1hdGgubWF4KGFbMV1bMF0tYVswXVswXSxhWzFdWzFdLWFbMF1bMV0pLGM9dC5fX3pvb20saD0iZnVuY3Rpb24iPT10eXBlb2YgZT9lLmFwcGx5KHQscik6ZSxkPXUoYy5pbnZlcnQocykuY29uY2F0KGwvYy5rKSxoLmludmVydChzKS5jb25jYXQobC9oLmspKTtyZXR1cm4gZnVuY3Rpb24odCl7aWYoMT09PXQpdD1oO2Vsc2V7dmFyIGU9ZCh0KSxuPWwvZVsyXTt0PW5ldyBMaHQobixzWzBdLWVbMF0qbixzWzFdLWVbMV0qbil9by56b29tKG51bGwsdCl9fSkpfWZ1bmN0aW9uIGIodCxlKXtmb3IodmFyIG4saT0wLHI9aC5sZW5ndGg7aTxyOysraSlpZigobj1oW2ldKS50aGF0PT09dClyZXR1cm4gbjtyZXR1cm4gbmV3IHgodCxlKX1mdW5jdGlvbiB4KHQsZSl7dGhpcy50aGF0PXQsdGhpcy5hcmdzPWUsdGhpcy5pbmRleD0tMSx0aGlzLmFjdGl2ZT0wLHRoaXMuZXh0ZW50PWkuYXBwbHkodCxlKX1mdW5jdGlvbiB3KCl7aWYobi5hcHBseSh0aGlzLGFyZ3VtZW50cykpe3ZhciB0PWIodGhpcyxhcmd1bWVudHMpLGU9dGhpcy5fX3pvb20saT1NYXRoLm1heChzWzBdLE1hdGgubWluKHNbMV0sZS5rKk1hdGgucG93KDIsby5hcHBseSh0aGlzLGFyZ3VtZW50cykpKSksYT1TbHQodGhpcyk7aWYodC53aGVlbCl0Lm1vdXNlWzBdWzBdPT09YVswXSYmdC5tb3VzZVswXVsxXT09PWFbMV18fCh0Lm1vdXNlWzFdPWUuaW52ZXJ0KHQubW91c2VbMF09YSkpLGNsZWFyVGltZW91dCh0LndoZWVsKTtlbHNle2lmKGUuaz09PWkpcmV0dXJuO3QubW91c2U9W2EsZS5pbnZlcnQoYSldLEx1dCh0aGlzKSx0LnN0YXJ0KCl9emh0KCksdC53aGVlbD1zZXRUaW1lb3V0KGMsMTUwKSx0Lnpvb20oIm1vdXNlIixyKF8oZyhlLGkpLHQubW91c2VbMF0sdC5tb3VzZVsxXSksdC5leHRlbnQsbCkpfWZ1bmN0aW9uIGMoKXt0LndoZWVsPW51bGwsdC5lbmQoKX19ZnVuY3Rpb24gUygpe2lmKCFlJiZuLmFwcGx5KHRoaXMsYXJndW1lbnRzKSl7dmFyIHQ9Yih0aGlzLGFyZ3VtZW50cyksaT1ibHQobGx0LnZpZXcpLm9uKCJtb3VzZW1vdmUuem9vbSIsYywhMCkub24oIm1vdXNldXAuem9vbSIsdSwhMCksbz1TbHQodGhpcyksYT1sbHQuY2xpZW50WCxzPWxsdC5jbGllbnRZO1RsdChsbHQudmlldyksUmh0KCksdC5tb3VzZT1bbyx0aGlzLl9fem9vbS5pbnZlcnQobyldLEx1dCh0aGlzKSx0LnN0YXJ0KCl9ZnVuY3Rpb24gYygpe2lmKHpodCgpLCF0Lm1vdmVkKXt2YXIgZT1sbHQuY2xpZW50WC1hLG49bGx0LmNsaWVudFktczt0Lm1vdmVkPWUqZStuKm4+Zn10Lnpvb20oIm1vdXNlIixyKF8odC50aGF0Ll9fem9vbSx0Lm1vdXNlWzBdPVNsdCh0LnRoYXQpLHQubW91c2VbMV0pLHQuZXh0ZW50LGwpKX1mdW5jdGlvbiB1KCl7aS5vbigibW91c2Vtb3ZlLnpvb20gbW91c2V1cC56b29tIixudWxsKSxBbHQobGx0LnZpZXcsdC5tb3ZlZCksemh0KCksdC5lbmQoKX19ZnVuY3Rpb24gTSgpe2lmKG4uYXBwbHkodGhpcyxhcmd1bWVudHMpKXt2YXIgdD10aGlzLl9fem9vbSxlPVNsdCh0aGlzKSxvPXQuaW52ZXJ0KGUpLGE9dC5rKihsbHQuc2hpZnRLZXk/LjU6Mikscz1yKF8oZyh0LGEpLGUsbyksaS5hcHBseSh0aGlzLGFyZ3VtZW50cyksbCk7emh0KCksYz4wP2JsdCh0aGlzKS50cmFuc2l0aW9uKCkuZHVyYXRpb24oYykuY2FsbCh2LHMsZSk6Ymx0KHRoaXMpLmNhbGwobS50cmFuc2Zvcm0scyl9fWZ1bmN0aW9uIEUoKXtpZihuLmFwcGx5KHRoaXMsYXJndW1lbnRzKSl7dmFyIGUsaSxyLG8sYT1iKHRoaXMsYXJndW1lbnRzKSxzPWxsdC5jaGFuZ2VkVG91Y2hlcyxsPXMubGVuZ3RoO2ZvcihSaHQoKSxpPTA7aTxsOysraSlvPVtvPU1sdCh0aGlzLHMsKHI9c1tpXSkuaWRlbnRpZmllciksdGhpcy5fX3pvb20uaW52ZXJ0KG8pLHIuaWRlbnRpZmllcl0sYS50b3VjaDA/YS50b3VjaDF8fChhLnRvdWNoMT1vKTooYS50b3VjaDA9byxlPSEwKTtpZih0JiYodD1jbGVhclRpbWVvdXQodCksIWEudG91Y2gxKSlyZXR1cm4gYS5lbmQoKSx2b2lkKChvPWJsdCh0aGlzKS5vbigiZGJsY2xpY2suem9vbSIpKSYmby5hcHBseSh0aGlzLGFyZ3VtZW50cykpO2UmJih0PXNldFRpbWVvdXQoKGZ1bmN0aW9uKCl7dD1udWxsfSkscCksTHV0KHRoaXMpLGEuc3RhcnQoKSl9fWZ1bmN0aW9uIFQoKXt2YXIgZSxuLGksbyxhPWIodGhpcyxhcmd1bWVudHMpLHM9bGx0LmNoYW5nZWRUb3VjaGVzLGM9cy5sZW5ndGg7Zm9yKHpodCgpLHQmJih0PWNsZWFyVGltZW91dCh0KSksZT0wO2U8YzsrK2UpaT1NbHQodGhpcyxzLChuPXNbZV0pLmlkZW50aWZpZXIpLGEudG91Y2gwJiZhLnRvdWNoMFsyXT09PW4uaWRlbnRpZmllcj9hLnRvdWNoMFswXT1pOmEudG91Y2gxJiZhLnRvdWNoMVsyXT09PW4uaWRlbnRpZmllciYmKGEudG91Y2gxWzBdPWkpO2lmKG49YS50aGF0Ll9fem9vbSxhLnRvdWNoMSl7dmFyIHU9YS50b3VjaDBbMF0saD1hLnRvdWNoMFsxXSxkPWEudG91Y2gxWzBdLHA9YS50b3VjaDFbMV0sZj0oZj1kWzBdLXVbMF0pKmYrKGY9ZFsxXS11WzFdKSpmLG09KG09cFswXS1oWzBdKSptKyhtPXBbMV0taFsxXSkqbTtuPWcobixNYXRoLnNxcnQoZi9tKSksaT1bKHVbMF0rZFswXSkvMiwodVsxXStkWzFdKS8yXSxvPVsoaFswXStwWzBdKS8yLChoWzFdK3BbMV0pLzJdfWVsc2V7aWYoIWEudG91Y2gwKXJldHVybjtpPWEudG91Y2gwWzBdLG89YS50b3VjaDBbMV19YS56b29tKCJ0b3VjaCIscihfKG4saSxvKSxhLmV4dGVudCxsKSl9ZnVuY3Rpb24gQSgpe3ZhciB0LG4saT1iKHRoaXMsYXJndW1lbnRzKSxyPWxsdC5jaGFuZ2VkVG91Y2hlcyxvPXIubGVuZ3RoO2ZvcihSaHQoKSxlJiZjbGVhclRpbWVvdXQoZSksZT1zZXRUaW1lb3V0KChmdW5jdGlvbigpe2U9bnVsbH0pLHApLHQ9MDt0PG87Kyt0KW49clt0XSxpLnRvdWNoMCYmaS50b3VjaDBbMl09PT1uLmlkZW50aWZpZXI/ZGVsZXRlIGkudG91Y2gwOmkudG91Y2gxJiZpLnRvdWNoMVsyXT09PW4uaWRlbnRpZmllciYmZGVsZXRlIGkudG91Y2gxO2kudG91Y2gxJiYhaS50b3VjaDAmJihpLnRvdWNoMD1pLnRvdWNoMSxkZWxldGUgaS50b3VjaDEpLGkudG91Y2gwP2kudG91Y2gwWzFdPXRoaXMuX196b29tLmludmVydChpLnRvdWNoMFswXSk6aS5lbmQoKX1yZXR1cm4gbS50cmFuc2Zvcm09ZnVuY3Rpb24odCxlKXt2YXIgbj10LnNlbGVjdGlvbj90LnNlbGVjdGlvbigpOnQ7bi5wcm9wZXJ0eSgiX196b29tIixIaHQpLHQhPT1uP3YodCxlKTpuLmludGVycnVwdCgpLmVhY2goKGZ1bmN0aW9uKCl7Yih0aGlzLGFyZ3VtZW50cykuc3RhcnQoKS56b29tKG51bGwsImZ1bmN0aW9uIj09dHlwZW9mIGU/ZS5hcHBseSh0aGlzLGFyZ3VtZW50cyk6ZSkuZW5kKCl9KSl9LG0uc2NhbGVCeT1mdW5jdGlvbih0LGUpe20uc2NhbGVUbyh0LChmdW5jdGlvbigpe3ZhciB0PXRoaXMuX196b29tLmssbj0iZnVuY3Rpb24iPT10eXBlb2YgZT9lLmFwcGx5KHRoaXMsYXJndW1lbnRzKTplO3JldHVybiB0Km59KSl9LG0uc2NhbGVUbz1mdW5jdGlvbih0LGUpe20udHJhbnNmb3JtKHQsKGZ1bmN0aW9uKCl7dmFyIHQ9aS5hcHBseSh0aGlzLGFyZ3VtZW50cyksbj10aGlzLl9fem9vbSxvPXkodCksYT1uLmludmVydChvKSxzPSJmdW5jdGlvbiI9PXR5cGVvZiBlP2UuYXBwbHkodGhpcyxhcmd1bWVudHMpOmU7cmV0dXJuIHIoXyhnKG4scyksbyxhKSx0LGwpfSkpfSxtLnRyYW5zbGF0ZUJ5PWZ1bmN0aW9uKHQsZSxuKXttLnRyYW5zZm9ybSh0LChmdW5jdGlvbigpe3JldHVybiByKHRoaXMuX196b29tLnRyYW5zbGF0ZSgiZnVuY3Rpb24iPT10eXBlb2YgZT9lLmFwcGx5KHRoaXMsYXJndW1lbnRzKTplLCJmdW5jdGlvbiI9PXR5cGVvZiBuP24uYXBwbHkodGhpcyxhcmd1bWVudHMpOm4pLGkuYXBwbHkodGhpcyxhcmd1bWVudHMpLGwpfSkpfSxtLnRyYW5zbGF0ZVRvPWZ1bmN0aW9uKHQsZSxuKXttLnRyYW5zZm9ybSh0LChmdW5jdGlvbigpe3ZhciB0PWkuYXBwbHkodGhpcyxhcmd1bWVudHMpLG89dGhpcy5fX3pvb20sYT15KHQpO3JldHVybiByKE5odC50cmFuc2xhdGUoYVswXSxhWzFdKS5zY2FsZShvLmspLnRyYW5zbGF0ZSgiZnVuY3Rpb24iPT10eXBlb2YgZT8tZS5hcHBseSh0aGlzLGFyZ3VtZW50cyk6LWUsImZ1bmN0aW9uIj09dHlwZW9mIG4/LW4uYXBwbHkodGhpcyxhcmd1bWVudHMpOi1uKSx0LGwpfSkpfSx4LnByb3RvdHlwZT17c3RhcnQ6ZnVuY3Rpb24oKXtyZXR1cm4gMT09Kyt0aGlzLmFjdGl2ZSYmKHRoaXMuaW5kZXg9aC5wdXNoKHRoaXMpLTEsdGhpcy5lbWl0KCJzdGFydCIpKSx0aGlzfSx6b29tOmZ1bmN0aW9uKHQsZSl7cmV0dXJuIHRoaXMubW91c2UmJiJtb3VzZSIhPT10JiYodGhpcy5tb3VzZVsxXT1lLmludmVydCh0aGlzLm1vdXNlWzBdKSksdGhpcy50b3VjaDAmJiJ0b3VjaCIhPT10JiYodGhpcy50b3VjaDBbMV09ZS5pbnZlcnQodGhpcy50b3VjaDBbMF0pKSx0aGlzLnRvdWNoMSYmInRvdWNoIiE9PXQmJih0aGlzLnRvdWNoMVsxXT1lLmludmVydCh0aGlzLnRvdWNoMVswXSkpLHRoaXMudGhhdC5fX3pvb209ZSx0aGlzLmVtaXQoInpvb20iKSx0aGlzfSxlbmQ6ZnVuY3Rpb24oKXtyZXR1cm4gMD09LS10aGlzLmFjdGl2ZSYmKGguc3BsaWNlKHRoaXMuaW5kZXgsMSksdGhpcy5pbmRleD0tMSx0aGlzLmVtaXQoImVuZCIpKSx0aGlzfSxlbWl0OmZ1bmN0aW9uKHQpeyEoZnVuY3Rpb24gZSh0LG4saSxyKXt2YXIgbz1sbHQ7dC5zb3VyY2VFdmVudD1sbHQsbGx0PXQ7dHJ5e24uYXBwbHkoaSxyKX1maW5hbGx5e2xsdD1vfX0pKG5ldyBraHQobSx0LHRoaXMudGhhdC5fX3pvb20pLGQuYXBwbHksZCxbdCx0aGlzLnRoYXQsdGhpcy5hcmdzXSl9fSxtLndoZWVsRGVsdGE9ZnVuY3Rpb24odCl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KG89ImZ1bmN0aW9uIj09dHlwZW9mIHQ/dDpDaHQoK3QpLG0pOm99LG0uZmlsdGVyPWZ1bmN0aW9uKHQpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyhuPSJmdW5jdGlvbiI9PXR5cGVvZiB0P3Q6Q2h0KCEhdCksbSk6bn0sbS50b3VjaGFibGU9ZnVuY3Rpb24odCl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KGE9ImZ1bmN0aW9uIj09dHlwZW9mIHQ/dDpDaHQoISF0KSxtKTphfSxtLmV4dGVudD1mdW5jdGlvbih0KXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8oaT0iZnVuY3Rpb24iPT10eXBlb2YgdD90OkNodChbWyt0WzBdWzBdLCt0WzBdWzFdXSxbK3RbMV1bMF0sK3RbMV1bMV1dXSksbSk6aX0sbS5zY2FsZUV4dGVudD1mdW5jdGlvbih0KXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8oc1swXT0rdFswXSxzWzFdPSt0WzFdLG0pOltzWzBdLHNbMV1dfSxtLnRyYW5zbGF0ZUV4dGVudD1mdW5jdGlvbih0KXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8obFswXVswXT0rdFswXVswXSxsWzFdWzBdPSt0WzFdWzBdLGxbMF1bMV09K3RbMF1bMV0sbFsxXVsxXT0rdFsxXVsxXSxtKTpbW2xbMF1bMF0sbFswXVsxXV0sW2xbMV1bMF0sbFsxXVsxXV1dfSxtLmNvbnN0cmFpbj1mdW5jdGlvbih0KXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8ocj10LG0pOnJ9LG0uZHVyYXRpb249ZnVuY3Rpb24odCl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KGM9K3QsbSk6Y30sbS5pbnRlcnBvbGF0ZT1mdW5jdGlvbih0KXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8odT10LG0pOnV9LG0ub249ZnVuY3Rpb24oKXt2YXIgdD1kLm9uLmFwcGx5KGQsYXJndW1lbnRzKTtyZXR1cm4gdD09PWQ/bTp0fSxtLmNsaWNrRGlzdGFuY2U9ZnVuY3Rpb24odCl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KGY9KHQ9K3QpKnQsbSk6TWF0aC5zcXJ0KGYpfSxtfSx6b29tVHJhbnNmb3JtOk9odCx6b29tSWRlbnRpdHk6Tmh0fSkpO2JlKChmdW5jdGlvbih0LGUpewovKioKICAgICAqIENvcHlyaWdodCAyMDE0LXByZXNlbnQgUGFsYW50aXIgVGVjaG5vbG9naWVzCiAgICAgKiBAbGljZW5zZSBNSVQKICAgICAqCiAgICAgKiBAZmlsZW92ZXJ2aWV3IG1hbnVhbGx5IGFkZCBkMy1zZWxlY3Rpb24tbXVsdGkgdG8gZDMgZGVmYXVsdCBidW5kbGUuIE1vc3Qgb2YgdGhpcyBjb2RlIGlzCiAgICAgKiBjb3BpZWQgZnJvbSBkMy1zZWxlY3Rpb24tbXVsdGlAMS4wLjAuCiAgICAgKiBTZWUgaHR0cHM6Ly9naXRodWIuY29tL2QzL2QzLXNlbGVjdGlvbi1tdWx0aS9pc3N1ZXMvMTEgZm9yIHdoeSB3ZSBoYXZlIHRvIGRvIHRoaXMKICAgICAqLwpPYmplY3QuZGVmaW5lUHJvcGVydHkoZSwiX19lc01vZHVsZSIse3ZhbHVlOiEwfSk7dmFyIG49VWh0LGk9VWh0O2Z1bmN0aW9uIHIodCxlKXtyZXR1cm4gdC5lYWNoKChmdW5jdGlvbigpe3ZhciB0PWUuYXBwbHkodGhpcyxhcmd1bWVudHMpLGk9bi5zZWxlY3QodGhpcyk7Zm9yKHZhciByIGluIHQpaS5hdHRyKHIsdFtyXSl9KSl9ZnVuY3Rpb24gbyh0LGUpe2Zvcih2YXIgbiBpbiBlKXQuYXR0cihuLGVbbl0pO3JldHVybiB0fWZ1bmN0aW9uIGEodCxlLGkpe3JldHVybiB0LmVhY2goKGZ1bmN0aW9uKCl7dmFyIHQ9ZS5hcHBseSh0aGlzLGFyZ3VtZW50cykscj1uLnNlbGVjdCh0aGlzKTtmb3IodmFyIG8gaW4gdClyLnN0eWxlKG8sdFtvXSxpKX0pKX1mdW5jdGlvbiBzKHQsZSxuKXtmb3IodmFyIGkgaW4gZSl0LnN0eWxlKGksZVtpXSxuKTtyZXR1cm4gdH1mdW5jdGlvbiBsKHQsZSl7cmV0dXJuIHQuZWFjaCgoZnVuY3Rpb24oKXt2YXIgdD1lLmFwcGx5KHRoaXMsYXJndW1lbnRzKSxpPW4uc2VsZWN0KHRoaXMpO2Zvcih2YXIgciBpbiB0KWkucHJvcGVydHkocix0W3JdKX0pKX1mdW5jdGlvbiBjKHQsZSl7Zm9yKHZhciBuIGluIGUpdC5wcm9wZXJ0eShuLGVbbl0pO3JldHVybiB0fWZ1bmN0aW9uIHUodCxlKXtyZXR1cm4gdC5lYWNoKChmdW5jdGlvbigpe3ZhciBpPWUuYXBwbHkodGhpcyxhcmd1bWVudHMpLHI9bi5zZWxlY3QodGhpcykudHJhbnNpdGlvbih0KTtmb3IodmFyIG8gaW4gaSlyLmF0dHIobyxpW29dKX0pKX1mdW5jdGlvbiBoKHQsZSl7Zm9yKHZhciBuIGluIGUpdC5hdHRyKG4sZVtuXSk7cmV0dXJuIHR9ZnVuY3Rpb24gZCh0LGUsaSl7cmV0dXJuIHQuZWFjaCgoZnVuY3Rpb24oKXt2YXIgcj1lLmFwcGx5KHRoaXMsYXJndW1lbnRzKSxvPW4uc2VsZWN0KHRoaXMpLnRyYW5zaXRpb24odCk7Zm9yKHZhciBhIGluIHIpby5zdHlsZShhLHJbYV0saSl9KSl9ZnVuY3Rpb24gcCh0LGUsbil7Zm9yKHZhciBpIGluIGUpdC5zdHlsZShpLGVbaV0sbik7cmV0dXJuIHR9bi5zZWxlY3Rpb24ucHJvdG90eXBlLmF0dHJzPWZ1bmN0aW9uIGYodCl7cmV0dXJuKCJmdW5jdGlvbiI9PXR5cGVvZiB0P3I6bykodGhpcyx0KX0sbi5zZWxlY3Rpb24ucHJvdG90eXBlLnN0eWxlcz1mdW5jdGlvbiBtKHQsZSl7cmV0dXJuKCJmdW5jdGlvbiI9PXR5cGVvZiB0P2E6cykodGhpcyx0LG51bGw9PWU/IiI6ZSl9LG4uc2VsZWN0aW9uLnByb3RvdHlwZS5wcm9wZXJ0aWVzPWZ1bmN0aW9uIGcodCl7cmV0dXJuKCJmdW5jdGlvbiI9PXR5cGVvZiB0P2w6YykodGhpcyx0KX0saS50cmFuc2l0aW9uLnByb3RvdHlwZS5hdHRycz1mdW5jdGlvbiBfKHQpe3JldHVybigiZnVuY3Rpb24iPT10eXBlb2YgdD91OmgpKHRoaXMsdCl9LGkudHJhbnNpdGlvbi5wcm90b3R5cGUuc3R5bGVzPWZ1bmN0aW9uIHkodCxlKXtyZXR1cm4oImZ1bmN0aW9uIj09dHlwZW9mIHQ/ZDpwKSh0aGlzLHQsbnVsbD09ZT8iIjplKX19KSk7dmFyIHlmdD1iZSgoZnVuY3Rpb24odCxlKXtPYmplY3QuZGVmaW5lUHJvcGVydHkoZSwiX19lc01vZHVsZSIse3ZhbHVlOiEwfSksZS5jb2VyY2VFeHRlcm5hbEQzPWZ1bmN0aW9uIG4odCl7aWYobnVsbD09dC5hdHRycyl7aWYobnVsbD09dC5ub2Rlcyl7dmFyIGU9W107cmV0dXJuIHQuZWFjaCgoZnVuY3Rpb24oKXtlLnB1c2godGhpcyl9KSksVWh0LnNlbGVjdEFsbChlKX1yZXR1cm4gVWh0LnNlbGVjdEFsbCh0Lm5vZGVzKCkpfXJldHVybiB0fX0pKSx2ZnQ9YmUoKGZ1bmN0aW9uKHQsZSl7Ci8qKgogICAgICogQ29weXJpZ2h0IDIwMTQtcHJlc2VudCBQYWxhbnRpciBUZWNobm9sb2dpZXMKICAgICAqIEBsaWNlbnNlIE1JVAogICAgICovCk9iamVjdC5kZWZpbmVQcm9wZXJ0eShlLCJfX2VzTW9kdWxlIix7dmFsdWU6ITB9KSxlLm1ha2VFbnVtPWZ1bmN0aW9uIG4odCl7cmV0dXJuIHQucmVkdWNlKChmdW5jdGlvbih0LGUpe3JldHVybiB0W2VdPWUsdH0pLHt9KX19KSksYmZ0PXhlKHltKSx4ZnQ9YmUoKGZ1bmN0aW9uKHQsZSl7Ci8qKgogICAgICogQ29weXJpZ2h0IDIwMTQtcHJlc2VudCBQYWxhbnRpciBUZWNobm9sb2dpZXMKICAgICAqIEBsaWNlbnNlIE1JVAogICAgICovCk9iamVjdC5kZWZpbmVQcm9wZXJ0eShlLCJfX2VzTW9kdWxlIix7dmFsdWU6ITB9KTt2YXIgbj17bGluZWFyOmJmdC5lYXNlTGluZWFyLHF1YWQ6YmZ0LmVhc2VRdWFkLHF1YWRJbjpiZnQuZWFzZVF1YWRJbixxdWFkT3V0OmJmdC5lYXNlUXVhZE91dCxxdWFkSW5PdXQ6YmZ0LmVhc2VRdWFkSW5PdXQsY3ViaWM6YmZ0LmVhc2VDdWJpYyxjdWJpY0luOmJmdC5lYXNlQ3ViaWNJbixjdWJpY091dDpiZnQuZWFzZUN1YmljT3V0LGN1YmljSW5PdXQ6YmZ0LmVhc2VDdWJpY0luT3V0LHBvbHk6YmZ0LmVhc2VQb2x5LHBvbHlJbjpiZnQuZWFzZVBvbHlJbixwb2x5T3V0OmJmdC5lYXNlUG9seU91dCxwb2x5SW5PdXQ6YmZ0LmVhc2VQb2x5SW5PdXQsc2luOmJmdC5lYXNlU2luLHNpbkluOmJmdC5lYXNlU2luSW4sc2luT3V0OmJmdC5lYXNlU2luT3V0LHNpbkluT3V0OmJmdC5lYXNlU2luSW5PdXQsZXhwOmJmdC5lYXNlRXhwLGV4cEluOmJmdC5lYXNlRXhwSW4sZXhwT3V0OmJmdC5lYXNlRXhwT3V0LGV4cEluT3V0OmJmdC5lYXNlRXhwSW5PdXQsY2lyY2xlOmJmdC5lYXNlQ2lyY2xlLGNpcmNsZUluOmJmdC5lYXNlQ2lyY2xlSW4sY2lyY2xlT3V0OmJmdC5lYXNlQ2lyY2xlT3V0LGNpcmNsZUluT3V0OmJmdC5lYXNlQ2lyY2xlSW5PdXQsYm91bmNlOmJmdC5lYXNlQm91bmNlLGJvdW5jZUluOmJmdC5lYXNlQm91bmNlSW4sYm91bmNlT3V0OmJmdC5lYXNlQm91bmNlT3V0LGJvdW5jZUluT3V0OmJmdC5lYXNlQm91bmNlSW5PdXQsYmFjazpiZnQuZWFzZUJhY2ssYmFja0luOmJmdC5lYXNlQmFja0luLGJhY2tPdXQ6YmZ0LmVhc2VCYWNrT3V0LGJhY2tJbk91dDpiZnQuZWFzZUJhY2tJbk91dCxlbGFzdGljOmJmdC5lYXNlRWxhc3RpYyxlbGFzdGljSW46YmZ0LmVhc2VFbGFzdGljSW4sZWxhc3RpY091dDpiZnQuZWFzZUVsYXN0aWNPdXQsZWxhc3RpY0luT3V0OmJmdC5lYXNlRWxhc3RpY0luT3V0fTtlLkVhc2VOYW1lPXZmdC5tYWtlRW51bShbImxpbmVhciIsInF1YWQiLCJxdWFkSW4iLCJxdWFkT3V0IiwicXVhZEluT3V0IiwiY3ViaWMiLCJjdWJpY0luIiwiY3ViaWNPdXQiLCJjdWJpY0luT3V0IiwicG9seSIsInBvbHlJbiIsInBvbHlPdXQiLCJwb2x5SW5PdXQiLCJzaW4iLCJzaW5JbiIsInNpbk91dCIsInNpbkluT3V0IiwiZXhwIiwiZXhwSW4iLCJleHBPdXQiLCJleHBJbk91dCIsImNpcmNsZSIsImNpcmNsZUluIiwiY2lyY2xlT3V0IiwiY2lyY2xlSW5PdXQiLCJib3VuY2UiLCJib3VuY2VJbiIsImJvdW5jZU91dCIsImJvdW5jZUluT3V0IiwiYmFjayIsImJhY2tJbiIsImJhY2tPdXQiLCJiYWNrSW5PdXQiLCJlbGFzdGljIiwiZWxhc3RpY0luIiwiZWxhc3RpY091dCIsImVsYXN0aWNJbk91dCJdKTt2YXIgaT0oZnVuY3Rpb24oKXtmdW5jdGlvbiB0KCl7dGhpcy5fc3RhcnREZWxheT10Ll9ERUZBVUxUX1NUQVJUX0RFTEFZX01JTExJU0VDT05EUyx0aGlzLl9zdGVwRHVyYXRpb249dC5fREVGQVVMVF9TVEVQX0RVUkFUSU9OX01JTExJU0VDT05EUyx0aGlzLl9zdGVwRGVsYXk9dC5fREVGQVVMVF9JVEVSQVRJVkVfREVMQVlfTUlMTElTRUNPTkRTLHRoaXMuX21heFRvdGFsRHVyYXRpb249dC5fREVGQVVMVF9NQVhfVE9UQUxfRFVSQVRJT05fTUlMTElTRUNPTkRTLHRoaXMuX2Vhc2luZ01vZGU9dC5fREVGQVVMVF9FQVNJTkdfTU9ERX1yZXR1cm4gdC5wcm90b3R5cGUudG90YWxUaW1lPWZ1bmN0aW9uKHQpe3ZhciBlPXRoaXMuX2dldEFkanVzdGVkSXRlcmF0aXZlRGVsYXkodCk7cmV0dXJuIHRoaXMuc3RhcnREZWxheSgpK2UqTWF0aC5tYXgodC0xLDApK3RoaXMuc3RlcER1cmF0aW9uKCl9LHQucHJvdG90eXBlLmFuaW1hdGU9ZnVuY3Rpb24odCxlKXt2YXIgbj10aGlzLGk9KHQ9eWZ0LmNvZXJjZUV4dGVybmFsRDModCkpLnNpemUoKSxyPXRoaXMuX2dldEFkanVzdGVkSXRlcmF0aXZlRGVsYXkoaSk7cmV0dXJuIHQudHJhbnNpdGlvbigpLmVhc2UodGhpcy5fZ2V0RWFzZUZhY3RvcnkoKSkuZHVyYXRpb24odGhpcy5zdGVwRHVyYXRpb24oKSkuZGVsYXkoKGZ1bmN0aW9uKHQsZSl7cmV0dXJuIG4uc3RhcnREZWxheSgpK3IqZX0pKS5hdHRycyhlKX0sdC5wcm90b3R5cGUuc3RhcnREZWxheT1mdW5jdGlvbih0KXtyZXR1cm4gbnVsbD09dD90aGlzLl9zdGFydERlbGF5Oih0aGlzLl9zdGFydERlbGF5PXQsdGhpcyl9LHQucHJvdG90eXBlLnN0ZXBEdXJhdGlvbj1mdW5jdGlvbih0KXtyZXR1cm4gbnVsbD09dD9NYXRoLm1pbih0aGlzLl9zdGVwRHVyYXRpb24sdGhpcy5fbWF4VG90YWxEdXJhdGlvbik6KHRoaXMuX3N0ZXBEdXJhdGlvbj10LHRoaXMpfSx0LnByb3RvdHlwZS5zdGVwRGVsYXk9ZnVuY3Rpb24odCl7cmV0dXJuIG51bGw9PXQ/dGhpcy5fc3RlcERlbGF5Oih0aGlzLl9zdGVwRGVsYXk9dCx0aGlzKX0sdC5wcm90b3R5cGUubWF4VG90YWxEdXJhdGlvbj1mdW5jdGlvbih0KXtyZXR1cm4gbnVsbD09dD90aGlzLl9tYXhUb3RhbER1cmF0aW9uOih0aGlzLl9tYXhUb3RhbER1cmF0aW9uPXQsdGhpcyl9LHQucHJvdG90eXBlLmVhc2luZ01vZGU9ZnVuY3Rpb24odCl7cmV0dXJuIG51bGw9PXQ/dGhpcy5fZWFzaW5nTW9kZToodGhpcy5fZWFzaW5nTW9kZT10LHRoaXMpfSx0LnByb3RvdHlwZS5fZ2V0RWFzZUZhY3Rvcnk9ZnVuY3Rpb24oKXt2YXIgdD10aGlzLmVhc2luZ01vZGUoKTtpZigic3RyaW5nIj09dHlwZW9mIHQpe3ZhciBlPW5bdF07cmV0dXJuIG51bGw9PWU/bi5saW5lYXI6ZX1yZXR1cm4gdH0sdC5wcm90b3R5cGUuX2dldEFkanVzdGVkSXRlcmF0aXZlRGVsYXk9ZnVuY3Rpb24odCl7dmFyIGU9dGhpcy5tYXhUb3RhbER1cmF0aW9uKCktdGhpcy5zdGVwRHVyYXRpb24oKSxuPShlPU1hdGgubWF4KGUsMCkpL01hdGgubWF4KHQtMSwxKTtyZXR1cm4gTWF0aC5taW4odGhpcy5zdGVwRGVsYXkoKSxuKX0sdC5fREVGQVVMVF9TVEFSVF9ERUxBWV9NSUxMSVNFQ09ORFM9MCx0Ll9ERUZBVUxUX1NURVBfRFVSQVRJT05fTUlMTElTRUNPTkRTPTMwMCx0Ll9ERUZBVUxUX0lURVJBVElWRV9ERUxBWV9NSUxMSVNFQ09ORFM9MTUsdC5fREVGQVVMVF9NQVhfVE9UQUxfRFVSQVRJT05fTUlMTElTRUNPTkRTPTEvMCx0Ll9ERUZBVUxUX0VBU0lOR19NT0RFPSJleHBPdXQiLHR9KSgpO2UuRWFzaW5nPWl9KSksd2Z0PWJlKChmdW5jdGlvbih0LGUpewovKioKICAgICAqIENvcHlyaWdodCAyMDE0LXByZXNlbnQgUGFsYW50aXIgVGVjaG5vbG9naWVzCiAgICAgKiBAbGljZW5zZSBNSVQKICAgICAqLwpPYmplY3QuZGVmaW5lUHJvcGVydHkoZSwiX19lc01vZHVsZSIse3ZhbHVlOiEwfSk7dmFyIG49KGZ1bmN0aW9uKCl7ZnVuY3Rpb24gdCgpe31yZXR1cm4gdC5wcm90b3R5cGUudG90YWxUaW1lPWZ1bmN0aW9uKHQpe3JldHVybiAwfSx0LnByb3RvdHlwZS5hbmltYXRlPWZ1bmN0aW9uKHQsZSl7cmV0dXJuKHQ9eWZ0LmNvZXJjZUV4dGVybmFsRDModCkpLmF0dHJzKGUpfSx0fSkoKTtlLk51bGw9bn0pKSxTZnQ9eGUoRk8pLE1mdD1iZSgoZnVuY3Rpb24odCxlKXsKLyoqCiAgICAgKiBDb3B5cmlnaHQgMjAxNC1wcmVzZW50IFBhbGFudGlyIFRlY2hub2xvZ2llcwogICAgICogQGxpY2Vuc2UgTUlUCiAgICAgKi8KT2JqZWN0LmRlZmluZVByb3BlcnR5KGUsIl9fZXNNb2R1bGUiLHt2YWx1ZTohMH0pLFNmdC5fX2V4cG9ydFN0YXIoeGZ0LGUpLFNmdC5fX2V4cG9ydFN0YXIod2Z0LGUpfSkpLEVmdD1iZSgoZnVuY3Rpb24odCxlKXtPYmplY3QuZGVmaW5lUHJvcGVydHkoZSwiX19lc01vZHVsZSIse3ZhbHVlOiEwfSk7dmFyIG49KGZ1bmN0aW9uKCl7ZnVuY3Rpb24gdCh0KXt0aGlzLmNhY2hlPXt9LHRoaXMuY29tcHV0ZT10fXJldHVybiB0LnByb3RvdHlwZS5nZXQ9ZnVuY3Rpb24odCl7cmV0dXJuIHRoaXMuY2FjaGUuaGFzT3duUHJvcGVydHkodCl8fCh0aGlzLmNhY2hlW3RdPXRoaXMuY29tcHV0ZSh0KSksdGhpcy5jYWNoZVt0XX0sdC5wcm90b3R5cGUuY2xlYXI9ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5jYWNoZT17fSx0aGlzfSx0fSkoKTtlLkNhY2hlPW59KSksVGZ0PWJlKChmdW5jdGlvbih0LGUpe09iamVjdC5kZWZpbmVQcm9wZXJ0eShlLCJfX2VzTW9kdWxlIix7dmFsdWU6ITB9KTt2YXIgbj0oZnVuY3Rpb24oKXtmdW5jdGlvbiB0KCl7fXJldHVybiB0LmFycmF5RXE9ZnVuY3Rpb24odCxlKXtpZihudWxsPT10fHxudWxsPT1lKXJldHVybiB0PT09ZTtpZih0Lmxlbmd0aCE9PWUubGVuZ3RoKXJldHVybiExO2Zvcih2YXIgbj0wO248dC5sZW5ndGg7bisrKWlmKHRbbl0hPT1lW25dKXJldHVybiExO3JldHVybiEwfSx0Lm9iakVxPWZ1bmN0aW9uKGUsbil7aWYobnVsbD09ZXx8bnVsbD09bilyZXR1cm4gZT09PW47dmFyIGk9T2JqZWN0LmtleXMoZSkuc29ydCgpLHI9T2JqZWN0LmtleXMobikuc29ydCgpLG89aS5tYXAoKGZ1bmN0aW9uKHQpe3JldHVybiBlW3RdfSkpLGE9ci5tYXAoKGZ1bmN0aW9uKHQpe3JldHVybiBuW3RdfSkpO3JldHVybiB0LmFycmF5RXEoaSxyKSYmdC5hcnJheUVxKG8sYSl9LHQuc3RyaWN0RXE9ZnVuY3Rpb24odCxlKXtyZXR1cm4gdD09PWV9LHQuZGVmYXVsdHM9ZnVuY3Rpb24odCl7Zm9yKHZhciBlPVtdLG49MTtuPGFyZ3VtZW50cy5sZW5ndGg7bisrKWVbbi0xXT1hcmd1bWVudHNbbl07aWYobnVsbD09dCl0aHJvdyBuZXcgVHlwZUVycm9yKCJDYW5ub3QgY29udmVydCB1bmRlZmluZWQgb3IgbnVsbCB0byBvYmplY3QiKTt2YXIgaT1PYmplY3QodCk7cmV0dXJuIGUuZm9yRWFjaCgoZnVuY3Rpb24odCl7aWYobnVsbCE9dClmb3IodmFyIGUgaW4gdClPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwodCxlKSYmKGlbZV09dFtlXSl9KSksaX0sdH0pKCk7ZS5NZXRob2RzPW59KSksQWZ0PWJlKChmdW5jdGlvbih0LGUpe09iamVjdC5kZWZpbmVQcm9wZXJ0eShlLCJfX2VzTW9kdWxlIix7dmFsdWU6ITB9KTt2YXIgbj0oZnVuY3Rpb24oKXtmdW5jdGlvbiB0KCl7fXJldHVybiB0LmNvbWJpbmVXaGl0ZXNwYWNlPWZ1bmN0aW9uKHQpe3JldHVybiB0LnJlcGxhY2UoL1sgXHRdKy9nLCIgIil9LHQuaXNOb3RFbXB0eVN0cmluZz1mdW5jdGlvbih0KXtyZXR1cm4gdCYmIiIhPT10LnRyaW0oKX0sdC50cmltU3RhcnQ9ZnVuY3Rpb24oZSxuKXtpZighZSlyZXR1cm4gZTt2YXIgaT1lLnNwbGl0KCIiKSxyPW4/ZnVuY3Rpb24oZSl7cmV0dXJuIGUuc3BsaXQobikuc29tZSh0LmlzTm90RW1wdHlTdHJpbmcpfTp0LmlzTm90RW1wdHlTdHJpbmc7cmV0dXJuIGkucmVkdWNlKChmdW5jdGlvbih0LGUpe3JldHVybiByKHQrZSk/dCtlOnR9KSwiIil9LHQudHJpbUVuZD1mdW5jdGlvbihlLG4pe2lmKCFlKXJldHVybiBlO3ZhciBpPWUuc3BsaXQoIiIpO3JldHVybiBpLnJldmVyc2UoKSwoaT10LnRyaW1TdGFydChpLmpvaW4oIiIpLG4pLnNwbGl0KCIiKSkucmV2ZXJzZSgpLGkuam9pbigiIil9LHR9KSgpO2UuU3RyaW5nTWV0aG9kcz1ufSkpLENmdD1iZSgoZnVuY3Rpb24odCxlKXtPYmplY3QuZGVmaW5lUHJvcGVydHkoZSwiX19lc01vZHVsZSIse3ZhbHVlOiEwfSk7dmFyIG49KGZ1bmN0aW9uKCl7ZnVuY3Rpb24gdCgpe3RoaXMuV29yZERpdmlkZXJSZWdFeHA9bmV3IFJlZ0V4cCgiXFxXIiksdGhpcy5XaGl0ZXNwYWNlUmVnRXhwPW5ldyBSZWdFeHAoIlxccyIpfXJldHVybiB0LnByb3RvdHlwZS50b2tlbml6ZT1mdW5jdGlvbih0KXt2YXIgZT10aGlzO3JldHVybiB0LnNwbGl0KCIiKS5yZWR1Y2UoKGZ1bmN0aW9uKHQsbil7cmV0dXJuIHQuc2xpY2UoMCwtMSkuY29uY2F0KGUuc2hvdWxkQ3JlYXRlTmV3VG9rZW4odFt0Lmxlbmd0aC0xXSxuKSl9KSxbIiJdKX0sdC5wcm90b3R5cGUuc2hvdWxkQ3JlYXRlTmV3VG9rZW49ZnVuY3Rpb24odCxlKXtpZighdClyZXR1cm5bZV07dmFyIG49dFt0Lmxlbmd0aC0xXTtyZXR1cm4gdGhpcy5XaGl0ZXNwYWNlUmVnRXhwLnRlc3QobikmJnRoaXMuV2hpdGVzcGFjZVJlZ0V4cC50ZXN0KGUpP1t0K2VdOnRoaXMuV2hpdGVzcGFjZVJlZ0V4cC50ZXN0KG4pfHx0aGlzLldoaXRlc3BhY2VSZWdFeHAudGVzdChlKT9bdCxlXTp0aGlzLldvcmREaXZpZGVyUmVnRXhwLnRlc3Qobik/bj09PWU/W3QrZV06W3QsZV06W3QrZV19LHR9KSgpO2UuVG9rZW5pemVyPW59KSksa2Z0PWJlKChmdW5jdGlvbih0LGUpe2Z1bmN0aW9uIG4odCl7Zm9yKHZhciBuIGluIHQpZS5oYXNPd25Qcm9wZXJ0eShuKXx8KGVbbl09dFtuXSl9T2JqZWN0LmRlZmluZVByb3BlcnR5KGUsIl9fZXNNb2R1bGUiLHt2YWx1ZTohMH0pLG4oRWZ0KSxuKFRmdCksbihBZnQpLG4oQ2Z0KX0pKSxMZnQ9YmUoKGZ1bmN0aW9uKHQsZSl7T2JqZWN0LmRlZmluZVByb3BlcnR5KGUsIl9fZXNNb2R1bGUiLHt2YWx1ZTohMH0pO3ZhciBuPXt0ZXh0Um90YXRpb246MCx0ZXh0U2hlYXI6MCx4QWxpZ246ImxlZnQiLHlBbGlnbjoidG9wIn0saT0oZnVuY3Rpb24oKXtmdW5jdGlvbiB0KHQsZSxuKXt0aGlzLl9tZWFzdXJlcj10LHRoaXMuX3BlbkZhY3Rvcnk9ZSx0aGlzLl93cmFwcGVyPW59cmV0dXJuIHQucHJvdG90eXBlLm1lYXN1cmVyPWZ1bmN0aW9uKHQpe3JldHVybiB0aGlzLl9tZWFzdXJlcj10LHRoaXN9LHQucHJvdG90eXBlLndyYXBwZXI9ZnVuY3Rpb24odCl7cmV0dXJuIHRoaXMuX3dyYXBwZXI9dCx0aGlzfSx0LnByb3RvdHlwZS5wZW5GYWN0b3J5PWZ1bmN0aW9uKHQpe3JldHVybiB0aGlzLl9wZW5GYWN0b3J5PXQsdGhpc30sdC5wcm90b3R5cGUud3JpdGU9ZnVuY3Rpb24oZSxpLHIsbyxhKXtpZih2b2lkIDA9PT1vJiYobz17fSksbz1rZnQuTWV0aG9kcy5kZWZhdWx0cyh7fSxuLG8pLC0xPT09dC5TdXBwb3J0ZWRSb3RhdGlvbi5pbmRleE9mKG8udGV4dFJvdGF0aW9uKSl0aHJvdyBuZXcgRXJyb3IoInVuc3VwcG9ydGVkIHJvdGF0aW9uIC0gIitvLnRleHRSb3RhdGlvbisiLiBTdXBwb3J0ZWQgcm90YXRpb25zIGFyZSAiK3QuU3VwcG9ydGVkUm90YXRpb24uam9pbigiLCAiKSk7aWYobnVsbCE9by50ZXh0U2hlYXImJm8udGV4dFNoZWFyPC04MHx8by50ZXh0U2hlYXI+ODApdGhyb3cgbmV3IEVycm9yKCJ1bnN1cHBvcnRlZCBzaGVhciBhbmdsZSAtICIrby50ZXh0U2hlYXIrIi4gTXVzdCBiZSBiZXR3ZWVuIC04MCBhbmQgODAiKTt2YXIgcz1NYXRoLmFicyhNYXRoLmFicyhvLnRleHRSb3RhdGlvbiktOTApPjQ1LGw9cz9pOnIsYz1zP3I6aSx1PW8udGV4dFNoZWFyLGg9dSpNYXRoLlBJLzE4MCxkPXRoaXMuX21lYXN1cmVyLm1lYXN1cmUoKS5oZWlnaHQscD1kKk1hdGgudGFuKGgpLGY9bC9NYXRoLmNvcyhoKS1NYXRoLmFicyhwKSxtPWMqTWF0aC5jb3MoaCksZz1rZnQuU3RyaW5nTWV0aG9kcy5jb21iaW5lV2hpdGVzcGFjZShlKSxfPSh0aGlzLl93cmFwcGVyP3RoaXMuX3dyYXBwZXIud3JhcChnLHRoaXMuX21lYXN1cmVyLGYsbSkud3JhcHBlZFRleHQ6Zykuc3BsaXQoIlxuIikseT10LlhPZmZzZXRGYWN0b3Jbby54QWxpZ25dKmYqTWF0aC5zaW4oaCktdC5ZT2Zmc2V0RmFjdG9yW28ueUFsaWduXSoobS1fLmxlbmd0aCpkKSx2PVswLDBdLGI9by50ZXh0Um90YXRpb24rdTtzd2l0Y2goby50ZXh0Um90YXRpb24pe2Nhc2UgOTA6dj1baSt5LDBdO2JyZWFrO2Nhc2UtOTA6dj1bLXkscl07YnJlYWs7Y2FzZSAxODA6dj1baSxyK3ldO2JyZWFrO2RlZmF1bHQ6dj1bMCwteV19dmFyIHg9dGhpcy5fcGVuRmFjdG9yeS5jcmVhdGVQZW4oZSx7dHJhbnNsYXRlOnYscm90YXRlOmJ9LGEpO3RoaXMud3JpdGVMaW5lcyhfLHgsZixkLHAsby54QWxpZ24pLG51bGwhPXguZGVzdHJveSYmeC5kZXN0cm95KCl9LHQucHJvdG90eXBlLndyaXRlTGluZXM9ZnVuY3Rpb24odCxlLG4saSxyLG8pe3QuZm9yRWFjaCgoZnVuY3Rpb24odCxhKXtlLndyaXRlKHQsbixvLHI+MD8oYSsxKSpyOmEqciwoYSsxKSppKX0pKX0sdH0pKCk7aS5YT2Zmc2V0RmFjdG9yPXtjZW50ZXI6LjUsbGVmdDowLHJpZ2h0OjF9LGkuWU9mZnNldEZhY3Rvcj17Ym90dG9tOjEsY2VudGVyOi41LHRvcDowfSxpLlN1cHBvcnRlZFJvdGF0aW9uPVstOTAsMCwxODAsOTBdLGUuV3JpdGVyPWl9KSksUGZ0PWJlKChmdW5jdGlvbih0LGUpe09iamVjdC5kZWZpbmVQcm9wZXJ0eShlLCJfX2VzTW9kdWxlIix7dmFsdWU6ITB9KSwoZnVuY3Rpb24gbih0KXtmb3IodmFyIG4gaW4gdCllLmhhc093blByb3BlcnR5KG4pfHwoZVtuXT10W25dKX0pKExmdCl9KSksSWZ0PWJlKChmdW5jdGlvbih0LGUpe09iamVjdC5kZWZpbmVQcm9wZXJ0eShlLCJfX2VzTW9kdWxlIix7dmFsdWU6ITB9KTt2YXIgbj0oZnVuY3Rpb24oKXtmdW5jdGlvbiB0KCl7fXJldHVybiB0LmFwcGVuZD1mdW5jdGlvbihlLG4pe2Zvcih2YXIgaT1bXSxyPTI7cjxhcmd1bWVudHMubGVuZ3RoO3IrKylpW3ItMl09YXJndW1lbnRzW3JdO3ZhciBvPXQuY3JlYXRlLmFwcGx5KHQsW25dLmNvbmNhdChpKSk7cmV0dXJuIGUuYXBwZW5kQ2hpbGQobyksb30sdC5jcmVhdGU9ZnVuY3Rpb24oZSl7Zm9yKHZhciBuPVtdLGk9MTtpPGFyZ3VtZW50cy5sZW5ndGg7aSsrKW5baS0xXT1hcmd1bWVudHNbaV07dmFyIHI9ZG9jdW1lbnQuY3JlYXRlRWxlbWVudChlKTtyZXR1cm4gdC5hZGRDbGFzc2VzLmFwcGx5KHQsW3JdLmNvbmNhdChuKSkscn0sdC5hZGRDbGFzc2VzPWZ1bmN0aW9uKHQpe2Zvcih2YXIgZT1bXSxuPTE7bjxhcmd1bWVudHMubGVuZ3RoO24rKyllW24tMV09YXJndW1lbnRzW25dO2U9ZS5maWx0ZXIoKGZ1bmN0aW9uKHQpe3JldHVybiBudWxsIT10fSkpLG51bGwhPXQuY2xhc3NMaXN0P2UuZm9yRWFjaCgoZnVuY3Rpb24oZSl7dC5jbGFzc0xpc3QuYWRkKGUpfSkpOnQuc2V0QXR0cmlidXRlKCJjbGFzcyIsZS5qb2luKCIgIikpfSx0LmdldERpbWVuc2lvbnM9ZnVuY3Rpb24odCl7aWYodC5nZXRCb3VuZGluZ0NsaWVudFJlY3QpdHJ5e3ZhciBlPXQuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCk7cmV0dXJue3dpZHRoOmUud2lkdGgsaGVpZ2h0OmUuaGVpZ2h0fX1jYXRjaCh0KXt9cmV0dXJue2hlaWdodDowLHdpZHRoOjB9fSx0fSkoKTtlLkh0bWxVdGlscz1uO3ZhciBpPShmdW5jdGlvbigpe2Z1bmN0aW9uIHQodCxlLGkpe3ZvaWQgMD09PWkmJihpPSExKTt2YXIgcj10aGlzO3RoaXMuZWxlbWVudD10LHRoaXMuY2xhc3NOYW1lPWUsdGhpcy5hZGRUaXRsZT1pLHRoaXMuY3JlYXRlUnVsZXI9ZnVuY3Rpb24oKXtyZXR1cm4gZnVuY3Rpb24odCl7dmFyIGU9bi5hcHBlbmQoci5lbGVtZW50LCJzcGFuIiwidGV4dC10bXAiLHIuY2xhc3NOYW1lKTtlLnRleHRDb250ZW50PXQ7dmFyIGk9bi5nZXREaW1lbnNpb25zKGUpO3JldHVybiByLmVsZW1lbnQucmVtb3ZlQ2hpbGQoZSksaX19LHRoaXMuY3JlYXRlUGVuPWZ1bmN0aW9uKHQsZSxpKXtudWxsPT1pJiYoaT1yLmVsZW1lbnQpO3ZhciBvPW4uYXBwZW5kKGksImRpdiIsInRleHQtYmxvY2siLHIuY2xhc3NOYW1lKTtyZXR1cm4gby5zdHlsZS5wb3NpdGlvbj0icmVsYXRpdmUiLG8uc3R5bGUudHJhbnNmb3JtPSJ0cmFuc2xhdGUoMCwgLTFlbSkgdHJhbnNsYXRlKCIrZS50cmFuc2xhdGVbMF0rInB4LCAiK2UudHJhbnNsYXRlWzFdKyJweCkgcm90YXRlKCIrZS5yb3RhdGUrImRlZykiLG8uc3R5bGUudHJhbnNmb3JtT3JpZ2luPSIwIDEuMmVtIixyLmFkZFRpdGxlJiZvLnNldEF0dHJpYnV0ZSgidGl0bGUiLHQpLHIuY3JlYXRlSHRtbExpbmVQZW4obyl9fXJldHVybiB0LnByb3RvdHlwZS5zZXRBZGRUaXRsZT1mdW5jdGlvbih0KXt0aGlzLmFkZFRpdGxlPXR9LHQucHJvdG90eXBlLmNyZWF0ZUh0bWxMaW5lUGVuPWZ1bmN0aW9uKHQpe3JldHVybnt3cml0ZTpmdW5jdGlvbihlLGkscixvLGEpe3ZhciBzPW4uYXBwZW5kKHQsImRpdiIsInRleHQtbGluZSIpO3MudGV4dENvbnRlbnQ9ZSxzLnN0eWxlLndpZHRoPWkrInB4IixzLnN0eWxlLnRleHRBbGlnbj1yLHMuc3R5bGUucG9zaXRpb249ImFic29sdXRlIixzLnN0eWxlLndoaXRlU3BhY2U9Im5vd3JhcCIscy5zdHlsZS50b3A9YSsicHgiLHMuc3R5bGUubGVmdD1vKyJweCJ9fX0sdH0pKCk7ZS5IdG1sQ29udGV4dD1pfSkpLE5mdD1iZSgoZnVuY3Rpb24odCxlKXtPYmplY3QuZGVmaW5lUHJvcGVydHkoZSwiX19lc01vZHVsZSIse3ZhbHVlOiEwfSk7dmFyIG49KGZ1bmN0aW9uKCl7ZnVuY3Rpb24gdCgpe31yZXR1cm4gdC5hcHBlbmQ9ZnVuY3Rpb24oZSxuKXtmb3IodmFyIGk9W10scj0yO3I8YXJndW1lbnRzLmxlbmd0aDtyKyspaVtyLTJdPWFyZ3VtZW50c1tyXTt2YXIgbz10LmNyZWF0ZS5hcHBseSh0LFtuXS5jb25jYXQoaSkpO3JldHVybiBlLmFwcGVuZENoaWxkKG8pLG99LHQuY3JlYXRlPWZ1bmN0aW9uKGUpe2Zvcih2YXIgbj1bXSxpPTE7aTxhcmd1bWVudHMubGVuZ3RoO2krKyluW2ktMV09YXJndW1lbnRzW2ldO3ZhciByPWRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUyh0LlNWR19OUyxlKTtyZXR1cm4gSWZ0Lkh0bWxVdGlscy5hZGRDbGFzc2VzLmFwcGx5KElmdC5IdG1sVXRpbHMsW3JdLmNvbmNhdChuKSkscn0sdC5nZXREaW1lbnNpb25zPWZ1bmN0aW9uKHQpe2lmKHQuZ2V0QkJveCl0cnl7dmFyIGU9dC5nZXRCQm94KCk7cmV0dXJue3dpZHRoOmUud2lkdGgsaGVpZ2h0OmUuaGVpZ2h0fX1jYXRjaCh0KXt9cmV0dXJue2hlaWdodDowLHdpZHRoOjB9fSx0fSkoKTtuLlNWR19OUz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciLGUuU3ZnVXRpbHM9bjt2YXIgaT0oZnVuY3Rpb24oKXtmdW5jdGlvbiB0KHQsZSxpKXt2b2lkIDA9PT1pJiYoaT0hMSk7dmFyIHI9dGhpczt0aGlzLmVsZW1lbnQ9dCx0aGlzLmNsYXNzTmFtZT1lLHRoaXMuYWRkVGl0bGVFbGVtZW50PWksdGhpcy5jcmVhdGVSdWxlcj1mdW5jdGlvbigpe3ZhciB0PXIuZ2V0VGV4dEVsZW1lbnRzKHIuZWxlbWVudCksZT10LnBhcmVudEVsZW1lbnQsaT10LmNvbnRhaW5lckVsZW1lbnQsbz10LnRleHRFbGVtZW50O3JldHVybiBmdW5jdGlvbih0KXtlLmFwcGVuZENoaWxkKGkpLG8udGV4dENvbnRlbnQ9dDt2YXIgcj1uLmdldERpbWVuc2lvbnMobyk7cmV0dXJuIGUucmVtb3ZlQ2hpbGQoaSkscn19LHRoaXMuY3JlYXRlUGVuPWZ1bmN0aW9uKHQsZSxpKXtudWxsPT1pJiYoaT1yLmVsZW1lbnQpO3ZhciBvPW4uYXBwZW5kKGksImciLCJ0ZXh0LWNvbnRhaW5lciIsci5jbGFzc05hbWUpO3IuYWRkVGl0bGVFbGVtZW50JiYobi5hcHBlbmQobywidGl0bGUiKS50ZXh0Q29udGVudD10LG8uc2V0QXR0cmlidXRlKCJ0aXRsZSIsdCkpO3ZhciBhPW4uYXBwZW5kKG8sImciLCJ0ZXh0LWFyZWEiKTtyZXR1cm4gYS5zZXRBdHRyaWJ1dGUoInRyYW5zZm9ybSIsInRyYW5zbGF0ZSgiK2UudHJhbnNsYXRlWzBdKyIsIitlLnRyYW5zbGF0ZVsxXSsiKXJvdGF0ZSgiK2Uucm90YXRlKyIpIiksci5jcmVhdGVTdmdMaW5lUGVuKGEpfX1yZXR1cm4gdC5wcm90b3R5cGUuc2V0QWRkVGl0bGVFbGVtZW50PWZ1bmN0aW9uKHQpe3RoaXMuYWRkVGl0bGVFbGVtZW50PXR9LHQucHJvdG90eXBlLmNyZWF0ZVN2Z0xpbmVQZW49ZnVuY3Rpb24oZSl7cmV0dXJue3dyaXRlOmZ1bmN0aW9uKGkscixvLGEscyl7YSs9cipQZnQuV3JpdGVyLlhPZmZzZXRGYWN0b3Jbb107dmFyIGw9bi5hcHBlbmQoZSwidGV4dCIsInRleHQtbGluZSIpO2wudGV4dENvbnRlbnQ9aSxsLnNldEF0dHJpYnV0ZSgidGV4dC1hbmNob3IiLHQuQW5jaG9yTWFwW29dKSxsLnNldEF0dHJpYnV0ZSgidHJhbnNmb3JtIiwidHJhbnNsYXRlKCIrYSsiLCIrcysiKSIpLGwuc2V0QXR0cmlidXRlKCJ5IiwiLTAuMjVlbSIpfX19LHQucHJvdG90eXBlLmdldFRleHRFbGVtZW50cz1mdW5jdGlvbih0KXtpZigidGV4dCI9PT10LnRhZ05hbWUpcmV0dXJuIG51bGw9PShlPXQucGFyZW50RWxlbWVudCkmJihlPXQucGFyZW50Tm9kZSksZS5yZW1vdmVDaGlsZCh0KSx7Y29udGFpbmVyRWxlbWVudDp0LHBhcmVudEVsZW1lbnQ6ZSx0ZXh0RWxlbWVudDp0fTt2YXIgZSxpPXQucXVlcnlTZWxlY3RvcigidGV4dCIpO2lmKG51bGwhPWkpcmV0dXJuIG51bGw9PShlPWkucGFyZW50RWxlbWVudCkmJihlPWkucGFyZW50Tm9kZSksZS5yZW1vdmVDaGlsZChpKSx7Y29udGFpbmVyRWxlbWVudDppLHBhcmVudEVsZW1lbnQ6ZSx0ZXh0RWxlbWVudDppfTt2YXIgcj1uLmNyZWF0ZSgidGV4dCIsdGhpcy5jbGFzc05hbWUpO3JldHVybntjb250YWluZXJFbGVtZW50OnIscGFyZW50RWxlbWVudDp0LHRleHRFbGVtZW50OnJ9fSx0fSkoKTtpLkFuY2hvck1hcD17Y2VudGVyOiJtaWRkbGUiLGxlZnQ6InN0YXJ0IixyaWdodDoiZW5kIn0sZS5TdmdDb250ZXh0PWl9KSksT2Z0PWJlKChmdW5jdGlvbih0LGUpe09iamVjdC5kZWZpbmVQcm9wZXJ0eShlLCJfX2VzTW9kdWxlIix7dmFsdWU6ITB9KTt2YXIgbj0oZnVuY3Rpb24oKXtmdW5jdGlvbiB0KHQsZSxuKXt2b2lkIDA9PT1lJiYoZT0xMCksdm9pZCAwPT09biYmKG49e30pO3ZhciBpPXRoaXM7dGhpcy5jdHg9dCx0aGlzLmxpbmVIZWlnaHQ9ZSx0aGlzLnN0eWxlPW4sdGhpcy5jcmVhdGVSdWxlcj1mdW5jdGlvbigpe3JldHVybiBmdW5jdGlvbih0KXtyZXR1cm4gaS5jdHguZm9udD1pLnN0eWxlLmZvbnQse3dpZHRoOmkuY3R4Lm1lYXN1cmVUZXh0KHQpLndpZHRoLGhlaWdodDppLmxpbmVIZWlnaHR9fX0sdGhpcy5jcmVhdGVQZW49ZnVuY3Rpb24odCxlLG4pe3JldHVybiBudWxsPT1uJiYobj1pLmN0eCksbi5zYXZlKCksbi50cmFuc2xhdGUoZS50cmFuc2xhdGVbMF0sZS50cmFuc2xhdGVbMV0pLG4ucm90YXRlKGUucm90YXRlKk1hdGguUEkvMTgwKSxpLmNyZWF0ZUNhbnZhc1BlbihuKX0sdm9pZCAwPT09dGhpcy5zdHlsZS5maWxsJiYodGhpcy5zdHlsZS5maWxsPSIjNDQ0Iil9cmV0dXJuIHQucHJvdG90eXBlLmNyZWF0ZUNhbnZhc1Blbj1mdW5jdGlvbih0KXt2YXIgZT10aGlzO3JldHVybntkZXN0cm95OmZ1bmN0aW9uKCl7dC5yZXN0b3JlKCl9LHdyaXRlOmZ1bmN0aW9uKG4saSxyLG8sYSl7bys9aSpQZnQuV3JpdGVyLlhPZmZzZXRGYWN0b3Jbcl0sdC50ZXh0QWxpZ249cixudWxsIT1lLnN0eWxlLmZvbnQmJih0LmZvbnQ9ZS5zdHlsZS5mb250KSxudWxsIT1lLnN0eWxlLmZpbGwmJih0LmZpbGxTdHlsZT1lLnN0eWxlLmZpbGwsdC5maWxsVGV4dChuLG8sYSkpLG51bGwhPWUuc3R5bGUuc3Ryb2tlJiYodC5zdHJva2VTdHlsZT1lLnN0eWxlLmZpbGwsdC5zdHJva2VUZXh0KG4sbyxhKSl9fX0sdH0pKCk7ZS5DYW52YXNDb250ZXh0PW59KSksUmZ0PWJlKChmdW5jdGlvbih0LGUpe2Z1bmN0aW9uIG4odCl7Zm9yKHZhciBuIGluIHQpZS5oYXNPd25Qcm9wZXJ0eShuKXx8KGVbbl09dFtuXSl9T2JqZWN0LmRlZmluZVByb3BlcnR5KGUsIl9fZXNNb2R1bGUiLHt2YWx1ZTohMH0pLG4oTmZ0KSxuKE9mdCksbihJZnQpfSkpLHpmdD1iZSgoZnVuY3Rpb24odCxlKXtPYmplY3QuZGVmaW5lUHJvcGVydHkoZSwiX19lc01vZHVsZSIse3ZhbHVlOiEwfSk7dmFyIG49KGZ1bmN0aW9uKCl7ZnVuY3Rpb24gdCh0KXt0aGlzLnJ1bGVyPW51bGwhPXQuY3JlYXRlUnVsZXI/dC5jcmVhdGVSdWxlcigpOnR9cmV0dXJuIHQucHJvdG90eXBlLm1lYXN1cmU9ZnVuY3Rpb24oZSl7cmV0dXJuIHZvaWQgMD09PWUmJihlPXQuSEVJR0hUX1RFWFQpLHRoaXMucnVsZXIoZSl9LHR9KSgpO24uSEVJR0hUX1RFWFQ9ImJkcHFsIixlLkFic3RyYWN0TWVhc3VyZXI9bn0pKSxEZnQ9YmUoKGZ1bmN0aW9uKHQsZSl7dmFyIG49dmUmJnZlLl9fZXh0ZW5kc3x8KGZ1bmN0aW9uKCl7dmFyIHQ9T2JqZWN0LnNldFByb3RvdHlwZU9mfHx7X19wcm90b19fOltdfWluc3RhbmNlb2YgQXJyYXkmJmZ1bmN0aW9uKHQsZSl7dC5fX3Byb3RvX189ZX18fGZ1bmN0aW9uKHQsZSl7Zm9yKHZhciBuIGluIGUpZS5oYXNPd25Qcm9wZXJ0eShuKSYmKHRbbl09ZVtuXSl9O3JldHVybiBmdW5jdGlvbihlLG4pe2Z1bmN0aW9uIGkoKXt0aGlzLmNvbnN0cnVjdG9yPWV9dChlLG4pLGUucHJvdG90eXBlPW51bGw9PT1uP09iamVjdC5jcmVhdGUobik6KGkucHJvdG90eXBlPW4ucHJvdG90eXBlLG5ldyBpKX19KSgpO09iamVjdC5kZWZpbmVQcm9wZXJ0eShlLCJfX2VzTW9kdWxlIix7dmFsdWU6ITB9KTt2YXIgaT0oZnVuY3Rpb24odCl7ZnVuY3Rpb24gZShlLG4pe3ZvaWQgMD09PW4mJihuPSExKTt2YXIgaT10LmNhbGwodGhpcyxlKXx8dGhpcztyZXR1cm4gaS51c2VHdWFyZHM9bixpfXJldHVybiBuKGUsdCksZS5wcm90b3R5cGUuX2FkZEd1YXJkcz1mdW5jdGlvbih0KXtyZXR1cm4gemZ0LkFic3RyYWN0TWVhc3VyZXIuSEVJR0hUX1RFWFQrdCt6ZnQuQWJzdHJhY3RNZWFzdXJlci5IRUlHSFRfVEVYVH0sZS5wcm90b3R5cGUuX21lYXN1cmVMaW5lPWZ1bmN0aW9uKGUsbil7dm9pZCAwPT09biYmKG49ITEpO3ZhciBpPXRoaXMudXNlR3VhcmRzfHxufHwvXltcdCBdJC8udGVzdChlKSxyPWk/dGhpcy5fYWRkR3VhcmRzKGUpOmUsbz10LnByb3RvdHlwZS5tZWFzdXJlLmNhbGwodGhpcyxyKTtyZXR1cm4gby53aWR0aC09aT8yKnRoaXMuZ2V0R3VhcmRXaWR0aCgpOjAsb30sZS5wcm90b3R5cGUubWVhc3VyZT1mdW5jdGlvbih0KXt2YXIgZT10aGlzO2lmKHZvaWQgMD09PXQmJih0PXpmdC5BYnN0cmFjdE1lYXN1cmVyLkhFSUdIVF9URVhUKSwiIj09PXQudHJpbSgpKXJldHVybnt3aWR0aDowLGhlaWdodDowfTt2YXIgbj10LnRyaW0oKS5zcGxpdCgiXG4iKS5tYXAoKGZ1bmN0aW9uKHQpe3JldHVybiBlLl9tZWFzdXJlTGluZSh0KX0pKTtyZXR1cm57aGVpZ2h0Om4ucmVkdWNlKChmdW5jdGlvbih0LGUpe3JldHVybiB0K2UuaGVpZ2h0fSksMCksd2lkdGg6bi5yZWR1Y2UoKGZ1bmN0aW9uKHQsZSl7cmV0dXJuIE1hdGgubWF4KHQsZS53aWR0aCl9KSwwKX19LGUucHJvdG90eXBlLmdldEd1YXJkV2lkdGg9ZnVuY3Rpb24oKXtyZXR1cm4gbnVsbD09dGhpcy5ndWFyZFdpZHRoJiYodGhpcy5ndWFyZFdpZHRoPXQucHJvdG90eXBlLm1lYXN1cmUuY2FsbCh0aGlzKS53aWR0aCksdGhpcy5ndWFyZFdpZHRofSxlfSkoemZ0LkFic3RyYWN0TWVhc3VyZXIpO2UuTWVhc3VyZXI9aX0pKSxCZnQ9YmUoKGZ1bmN0aW9uKHQsZSl7dmFyIG49dmUmJnZlLl9fZXh0ZW5kc3x8KGZ1bmN0aW9uKCl7dmFyIHQ9T2JqZWN0LnNldFByb3RvdHlwZU9mfHx7X19wcm90b19fOltdfWluc3RhbmNlb2YgQXJyYXkmJmZ1bmN0aW9uKHQsZSl7dC5fX3Byb3RvX189ZX18fGZ1bmN0aW9uKHQsZSl7Zm9yKHZhciBuIGluIGUpZS5oYXNPd25Qcm9wZXJ0eShuKSYmKHRbbl09ZVtuXSl9O3JldHVybiBmdW5jdGlvbihlLG4pe2Z1bmN0aW9uIGkoKXt0aGlzLmNvbnN0cnVjdG9yPWV9dChlLG4pLGUucHJvdG90eXBlPW51bGw9PT1uP09iamVjdC5jcmVhdGUobik6KGkucHJvdG90eXBlPW4ucHJvdG90eXBlLG5ldyBpKX19KSgpO09iamVjdC5kZWZpbmVQcm9wZXJ0eShlLCJfX2VzTW9kdWxlIix7dmFsdWU6ITB9KTt2YXIgaT0oZnVuY3Rpb24odCl7ZnVuY3Rpb24gZSgpe3JldHVybiBudWxsIT09dCYmdC5hcHBseSh0aGlzLGFyZ3VtZW50cyl8fHRoaXN9cmV0dXJuIG4oZSx0KSxlLnByb3RvdHlwZS5fbWVhc3VyZUNoYXJhY3Rlcj1mdW5jdGlvbihlKXtyZXR1cm4gdC5wcm90b3R5cGUuX21lYXN1cmVMaW5lLmNhbGwodGhpcyxlKX0sZS5wcm90b3R5cGUuX21lYXN1cmVMaW5lPWZ1bmN0aW9uKHQpe3ZhciBlPXRoaXMsbj10LnNwbGl0KCIiKS5tYXAoKGZ1bmN0aW9uKHQpe3JldHVybiBlLl9tZWFzdXJlQ2hhcmFjdGVyKHQpfSkpO3JldHVybntoZWlnaHQ6bi5yZWR1Y2UoKGZ1bmN0aW9uKHQsZSl7cmV0dXJuIE1hdGgubWF4KHQsZS5oZWlnaHQpfSksMCksd2lkdGg6bi5yZWR1Y2UoKGZ1bmN0aW9uKHQsZSl7cmV0dXJuIHQrZS53aWR0aH0pLDApfX0sZX0pKERmdC5NZWFzdXJlcik7ZS5DaGFyYWN0ZXJNZWFzdXJlcj1pfSkpLEhmdD1iZSgoZnVuY3Rpb24odCxlKXt2YXIgbj12ZSYmdmUuX19leHRlbmRzfHwoZnVuY3Rpb24oKXt2YXIgdD1PYmplY3Quc2V0UHJvdG90eXBlT2Z8fHtfX3Byb3RvX186W119aW5zdGFuY2VvZiBBcnJheSYmZnVuY3Rpb24odCxlKXt0Ll9fcHJvdG9fXz1lfXx8ZnVuY3Rpb24odCxlKXtmb3IodmFyIG4gaW4gZSllLmhhc093blByb3BlcnR5KG4pJiYodFtuXT1lW25dKX07cmV0dXJuIGZ1bmN0aW9uKGUsbil7ZnVuY3Rpb24gaSgpe3RoaXMuY29uc3RydWN0b3I9ZX10KGUsbiksZS5wcm90b3R5cGU9bnVsbD09PW4/T2JqZWN0LmNyZWF0ZShuKTooaS5wcm90b3R5cGU9bi5wcm90b3R5cGUsbmV3IGkpfX0pKCk7T2JqZWN0LmRlZmluZVByb3BlcnR5KGUsIl9fZXNNb2R1bGUiLHt2YWx1ZTohMH0pO3ZhciBpPShmdW5jdGlvbih0KXtmdW5jdGlvbiBlKGUsbil7dmFyIGk9dC5jYWxsKHRoaXMsZSxuKXx8dGhpcztyZXR1cm4gaS5jYWNoZT1uZXcga2Z0LkNhY2hlKChmdW5jdGlvbih0KXtyZXR1cm4gaS5fbWVhc3VyZUNoYXJhY3Rlck5vdEZyb21DYWNoZSh0KX0pKSxpfXJldHVybiBuKGUsdCksZS5wcm90b3R5cGUuX21lYXN1cmVDaGFyYWN0ZXJOb3RGcm9tQ2FjaGU9ZnVuY3Rpb24oZSl7cmV0dXJuIHQucHJvdG90eXBlLl9tZWFzdXJlQ2hhcmFjdGVyLmNhbGwodGhpcyxlKX0sZS5wcm90b3R5cGUuX21lYXN1cmVDaGFyYWN0ZXI9ZnVuY3Rpb24odCl7cmV0dXJuIHRoaXMuY2FjaGUuZ2V0KHQpfSxlLnByb3RvdHlwZS5yZXNldD1mdW5jdGlvbigpe3RoaXMuY2FjaGUuY2xlYXIoKX0sZX0pKEJmdC5DaGFyYWN0ZXJNZWFzdXJlcik7ZS5DYWNoZUNoYXJhY3Rlck1lYXN1cmVyPWl9KSksRmZ0PWJlKChmdW5jdGlvbih0LGUpe3ZhciBuPXZlJiZ2ZS5fX2V4dGVuZHN8fChmdW5jdGlvbigpe3ZhciB0PU9iamVjdC5zZXRQcm90b3R5cGVPZnx8e19fcHJvdG9fXzpbXX1pbnN0YW5jZW9mIEFycmF5JiZmdW5jdGlvbih0LGUpe3QuX19wcm90b19fPWV9fHxmdW5jdGlvbih0LGUpe2Zvcih2YXIgbiBpbiBlKWUuaGFzT3duUHJvcGVydHkobikmJih0W25dPWVbbl0pfTtyZXR1cm4gZnVuY3Rpb24oZSxuKXtmdW5jdGlvbiBpKCl7dGhpcy5jb25zdHJ1Y3Rvcj1lfXQoZSxuKSxlLnByb3RvdHlwZT1udWxsPT09bj9PYmplY3QuY3JlYXRlKG4pOihpLnByb3RvdHlwZT1uLnByb3RvdHlwZSxuZXcgaSl9fSkoKTtPYmplY3QuZGVmaW5lUHJvcGVydHkoZSwiX19lc01vZHVsZSIse3ZhbHVlOiEwfSk7dmFyIGk9KGZ1bmN0aW9uKHQpe2Z1bmN0aW9uIGUoZSl7dmFyIG49dC5jYWxsKHRoaXMsZSl8fHRoaXM7cmV0dXJuIG4uZGltQ2FjaGU9bmV3IGtmdC5DYWNoZSgoZnVuY3Rpb24odCl7cmV0dXJuIG4uX21lYXN1cmVOb3RGcm9tQ2FjaGUodCl9KSksbn1yZXR1cm4gbihlLHQpLGUucHJvdG90eXBlLl9tZWFzdXJlTm90RnJvbUNhY2hlPWZ1bmN0aW9uKGUpe3JldHVybiB0LnByb3RvdHlwZS5tZWFzdXJlLmNhbGwodGhpcyxlKX0sZS5wcm90b3R5cGUubWVhc3VyZT1mdW5jdGlvbih0KXtyZXR1cm4gdm9pZCAwPT09dCYmKHQ9emZ0LkFic3RyYWN0TWVhc3VyZXIuSEVJR0hUX1RFWFQpLHRoaXMuZGltQ2FjaGUuZ2V0KHQpfSxlLnByb3RvdHlwZS5yZXNldD1mdW5jdGlvbigpe3RoaXMuZGltQ2FjaGUuY2xlYXIoKSx0LnByb3RvdHlwZS5yZXNldC5jYWxsKHRoaXMpfSxlfSkoSGZ0LkNhY2hlQ2hhcmFjdGVyTWVhc3VyZXIpO2UuQ2FjaGVNZWFzdXJlcj1pfSkpLFZmdD1iZSgoZnVuY3Rpb24odCxlKXtmdW5jdGlvbiBuKHQpe2Zvcih2YXIgbiBpbiB0KWUuaGFzT3duUHJvcGVydHkobil8fChlW25dPXRbbl0pfU9iamVjdC5kZWZpbmVQcm9wZXJ0eShlLCJfX2VzTW9kdWxlIix7dmFsdWU6ITB9KSxuKHpmdCksbihIZnQpLG4oRmZ0KSxuKEJmdCksbihEZnQpfSkpLGpmdD1iZSgoZnVuY3Rpb24odCxlKXtPYmplY3QuZGVmaW5lUHJvcGVydHkoZSwiX19lc01vZHVsZSIse3ZhbHVlOiEwfSk7dmFyIG49KGZ1bmN0aW9uKCl7ZnVuY3Rpb24gdCgpe3RoaXMubWF4TGluZXMoMS8wKSx0aGlzLnRleHRUcmltbWluZygiZWxsaXBzaXMiKSx0aGlzLmFsbG93QnJlYWtpbmdXb3JkcyghMSksdGhpcy5fdG9rZW5pemVyPW5ldyBrZnQuVG9rZW5pemVyLHRoaXMuX2JyZWFraW5nQ2hhcmFjdGVyPSItIn1yZXR1cm4gdC5wcm90b3R5cGUubWF4TGluZXM9ZnVuY3Rpb24odCl7cmV0dXJuIG51bGw9PXQ/dGhpcy5fbWF4TGluZXM6KHRoaXMuX21heExpbmVzPXQsdGhpcyl9LHQucHJvdG90eXBlLnRleHRUcmltbWluZz1mdW5jdGlvbih0KXtpZihudWxsPT10KXJldHVybiB0aGlzLl90ZXh0VHJpbW1pbmc7aWYoImVsbGlwc2lzIiE9PXQmJiJub25lIiE9PXQpdGhyb3cgbmV3IEVycm9yKHQrIiAtIHVuc3VwcG9ydGVkIHRleHQgdHJpbW1pbmcgb3B0aW9uLiIpO3JldHVybiB0aGlzLl90ZXh0VHJpbW1pbmc9dCx0aGlzfSx0LnByb3RvdHlwZS5hbGxvd0JyZWFraW5nV29yZHM9ZnVuY3Rpb24odCl7cmV0dXJuIG51bGw9PXQ/dGhpcy5fYWxsb3dCcmVha2luZ1dvcmRzOih0aGlzLl9hbGxvd0JyZWFraW5nV29yZHM9dCx0aGlzKX0sdC5wcm90b3R5cGUud3JhcD1mdW5jdGlvbih0LGUsbixpKXt2YXIgcj10aGlzO3ZvaWQgMD09PWkmJihpPTEvMCk7dmFyIG89e25vQnJva2VXb3JkczowLG5vTGluZXM6MCxvcmlnaW5hbFRleHQ6dCx0cnVuY2F0ZWRUZXh0OiIiLHdyYXBwZWRUZXh0OiIifSxhPXthdmFpbGFibGVMaW5lczpNYXRoLm1pbihNYXRoLmZsb29yKGkvZS5tZWFzdXJlKCkuaGVpZ2h0KSx0aGlzLl9tYXhMaW5lcyksYXZhaWxhYmxlV2lkdGg6bixjYW5GaXRUZXh0OiEwLGN1cnJlbnRMaW5lOiIiLHdyYXBwaW5nOm99LHM9dC5zcGxpdCgiXG4iKTtyZXR1cm4gcy5yZWR1Y2UoKGZ1bmN0aW9uKHQsbixpKXtyZXR1cm4gci5icmVha0xpbmVUb0ZpdFdpZHRoKHQsbixpIT09cy5sZW5ndGgtMSxlKX0pLGEpLndyYXBwaW5nfSx0LnByb3RvdHlwZS5icmVha0xpbmVUb0ZpdFdpZHRoPWZ1bmN0aW9uKHQsZSxuLGkpe3ZhciByPXRoaXM7dC5jYW5GaXRUZXh0fHwiIj09PXQud3JhcHBpbmcudHJ1bmNhdGVkVGV4dHx8KHQud3JhcHBpbmcudHJ1bmNhdGVkVGV4dCs9IlxuIiksdD10aGlzLl90b2tlbml6ZXIudG9rZW5pemUoZSkucmVkdWNlKChmdW5jdGlvbih0LGUpe3JldHVybiByLndyYXBOZXh0VG9rZW4oZSx0LGkpfSksdCk7dmFyIG89a2Z0LlN0cmluZ01ldGhvZHMudHJpbUVuZCh0LmN1cnJlbnRMaW5lKTtyZXR1cm4gdC53cmFwcGluZy5ub0xpbmVzKz0rKCIiIT09byksdC53cmFwcGluZy5ub0xpbmVzPT09dC5hdmFpbGFibGVMaW5lcyYmIm5vbmUiIT09dGhpcy5fdGV4dFRyaW1taW5nJiZuP3QuY2FuRml0VGV4dD0hMTp0LndyYXBwaW5nLndyYXBwZWRUZXh0Kz1vLHQuY3VycmVudExpbmU9IlxuIix0fSx0LnByb3RvdHlwZS5jYW5GaXRUb2tlbj1mdW5jdGlvbih0LGUsbil7dmFyIGk9dGhpcyxyPXQuc3BsaXQoIiIpLm1hcCgoZnVuY3Rpb24oZSxuKXtyZXR1cm4gbiE9PXQubGVuZ3RoLTE/ZStpLl9icmVha2luZ0NoYXJhY3RlcjplfSkpO3JldHVybiBuLm1lYXN1cmUodCkud2lkdGg8PWV8fHIuZXZlcnkoKGZ1bmN0aW9uKHQpe3JldHVybiBuLm1lYXN1cmUodCkud2lkdGg8PWV9KSl9LHQucHJvdG90eXBlLmFkZEVsbGlwc2lzPWZ1bmN0aW9uKHQsZSxuKXtpZigibm9uZSI9PT10aGlzLl90ZXh0VHJpbW1pbmcpcmV0dXJue3JlbWFpbmluZ1Rva2VuOiIiLHdyYXBwZWRUb2tlbjp0fTt2YXIgaT10LnN1YnN0cmluZygwKS50cmltKCkscj1uLm1lYXN1cmUoaSkud2lkdGgsbz1uLm1lYXN1cmUoIi4uLiIpLndpZHRoLGE9dC5sZW5ndGg+MCYmIlxuIj09PXRbMF0/IlxuIjoiIjtpZihlPD1vKXt2YXIgcz1NYXRoLmZsb29yKGUvKG8vMykpO3JldHVybntyZW1haW5pbmdUb2tlbjp0LHdyYXBwZWRUb2tlbjphKyIuLi4iLnN1YnN0cigwLHMpfX1mb3IoO3Irbz5lOylpPWtmdC5TdHJpbmdNZXRob2RzLnRyaW1FbmQoaS5zdWJzdHIoMCxpLmxlbmd0aC0xKSkscj1uLm1lYXN1cmUoaSkud2lkdGg7cmV0dXJue3JlbWFpbmluZ1Rva2VuOmtmdC5TdHJpbmdNZXRob2RzLnRyaW1FbmQodC5zdWJzdHJpbmcoaS5sZW5ndGgpLCItIikudHJpbSgpLHdyYXBwZWRUb2tlbjphK2krIi4uLiJ9fSx0LnByb3RvdHlwZS53cmFwTmV4dFRva2VuPWZ1bmN0aW9uKHQsZSxuKXtpZighZS5jYW5GaXRUZXh0fHxlLmF2YWlsYWJsZUxpbmVzPT09ZS53cmFwcGluZy5ub0xpbmVzfHwhdGhpcy5jYW5GaXRUb2tlbih0LGUuYXZhaWxhYmxlV2lkdGgsbikpcmV0dXJuIHRoaXMuZmluaXNoV3JhcHBpbmcodCxlLG4pO2Zvcih2YXIgaT10O2k7KXt2YXIgcj10aGlzLmJyZWFrVG9rZW5Ub0ZpdEluV2lkdGgoaSxlLmN1cnJlbnRMaW5lLGUuYXZhaWxhYmxlV2lkdGgsbik7aWYoZS5jdXJyZW50TGluZT1yLmxpbmUsbnVsbCE9KGk9ci5yZW1haW5pbmdUb2tlbikpe2lmKGUud3JhcHBpbmcubm9Ccm9rZVdvcmRzKz0rci5icmVha1dvcmQsKytlLndyYXBwaW5nLm5vTGluZXMsZS5hdmFpbGFibGVMaW5lcz09PWUud3JhcHBpbmcubm9MaW5lcyl7dmFyIG89dGhpcy5hZGRFbGxpcHNpcyhlLmN1cnJlbnRMaW5lLGUuYXZhaWxhYmxlV2lkdGgsbik7cmV0dXJuIGUud3JhcHBpbmcud3JhcHBlZFRleHQrPW8ud3JhcHBlZFRva2VuLGUud3JhcHBpbmcudHJ1bmNhdGVkVGV4dCs9by5yZW1haW5pbmdUb2tlbitpLGUuY3VycmVudExpbmU9IlxuIixlfWUud3JhcHBpbmcud3JhcHBlZFRleHQrPWtmdC5TdHJpbmdNZXRob2RzLnRyaW1FbmQoZS5jdXJyZW50TGluZSksZS5jdXJyZW50TGluZT0iXG4ifX1yZXR1cm4gZX0sdC5wcm90b3R5cGUuZmluaXNoV3JhcHBpbmc9ZnVuY3Rpb24odCxlLG4pe2lmKGUuY2FuRml0VGV4dCYmZS5hdmFpbGFibGVMaW5lcyE9PWUud3JhcHBpbmcubm9MaW5lcyYmIm5vbmUiIT09dGhpcy5fdGV4dFRyaW1taW5nKXt2YXIgaT10aGlzLmFkZEVsbGlwc2lzKGUuY3VycmVudExpbmUrdCxlLmF2YWlsYWJsZVdpZHRoLG4pO2Uud3JhcHBpbmcud3JhcHBlZFRleHQrPWkud3JhcHBlZFRva2VuLGUud3JhcHBpbmcudHJ1bmNhdGVkVGV4dCs9aS5yZW1haW5pbmdUb2tlbixlLndyYXBwaW5nLm5vQnJva2VXb3Jkcys9KyhpLnJlbWFpbmluZ1Rva2VuLmxlbmd0aDx0Lmxlbmd0aCksZS53cmFwcGluZy5ub0xpbmVzKz0rKGkud3JhcHBlZFRva2VuLmxlbmd0aD4wKSxlLmN1cnJlbnRMaW5lPSIifWVsc2UgZS53cmFwcGluZy50cnVuY2F0ZWRUZXh0Kz10O3JldHVybiBlLmNhbkZpdFRleHQ9ITEsZX0sdC5wcm90b3R5cGUuYnJlYWtUb2tlblRvRml0SW5XaWR0aD1mdW5jdGlvbih0LGUsbixpLHIpe2lmKHZvaWQgMD09PXImJihyPXRoaXMuX2JyZWFraW5nQ2hhcmFjdGVyKSxpLm1lYXN1cmUoZSt0KS53aWR0aDw9bilyZXR1cm57YnJlYWtXb3JkOiExLGxpbmU6ZSt0LHJlbWFpbmluZ1Rva2VuOm51bGx9O2lmKCIiPT09dC50cmltKCkpcmV0dXJue2JyZWFrV29yZDohMSxsaW5lOmUscmVtYWluaW5nVG9rZW46IiJ9O2lmKCF0aGlzLl9hbGxvd0JyZWFraW5nV29yZHMmJiIiIT09ZS50cmltKCkpcmV0dXJue2JyZWFrV29yZDohMSxsaW5lOmUscmVtYWluaW5nVG9rZW46dH07Zm9yKHZhciBvPTA7bzx0Lmxlbmd0aCYmaS5tZWFzdXJlKGUrdC5zdWJzdHJpbmcoMCxvKzEpK3IpLndpZHRoPD1uOykrK287dmFyIGE9IiI7cmV0dXJuIG8+MCYmKGE9cikse2JyZWFrV29yZDpvPjAsbGluZTplK3Quc3Vic3RyaW5nKDAsbykrYSxyZW1haW5pbmdUb2tlbjp0LnN1YnN0cmluZyhvKX19LHR9KSgpO2UuV3JhcHBlcj1ufSkpLFVmdD1iZSgoZnVuY3Rpb24odCxlKXt2YXIgbj12ZSYmdmUuX19leHRlbmRzfHwoZnVuY3Rpb24oKXt2YXIgdD1PYmplY3Quc2V0UHJvdG90eXBlT2Z8fHtfX3Byb3RvX186W119aW5zdGFuY2VvZiBBcnJheSYmZnVuY3Rpb24odCxlKXt0Ll9fcHJvdG9fXz1lfXx8ZnVuY3Rpb24odCxlKXtmb3IodmFyIG4gaW4gZSllLmhhc093blByb3BlcnR5KG4pJiYodFtuXT1lW25dKX07cmV0dXJuIGZ1bmN0aW9uKGUsbil7ZnVuY3Rpb24gaSgpe3RoaXMuY29uc3RydWN0b3I9ZX10KGUsbiksZS5wcm90b3R5cGU9bnVsbD09PW4/T2JqZWN0LmNyZWF0ZShuKTooaS5wcm90b3R5cGU9bi5wcm90b3R5cGUsbmV3IGkpfX0pKCk7T2JqZWN0LmRlZmluZVByb3BlcnR5KGUsIl9fZXNNb2R1bGUiLHt2YWx1ZTohMH0pO3ZhciBpPShmdW5jdGlvbih0KXtmdW5jdGlvbiBlKCl7cmV0dXJuIG51bGwhPT10JiZ0LmFwcGx5KHRoaXMsYXJndW1lbnRzKXx8dGhpc31yZXR1cm4gbihlLHQpLGUucHJvdG90eXBlLndyYXA9ZnVuY3Rpb24obixpLHIsbyl7dmFyIGE9dGhpcztpZih2b2lkIDA9PT1vJiYobz0xLzApLG4uc3BsaXQoIlxuIikubGVuZ3RoPjEpdGhyb3cgbmV3IEVycm9yKCJTaW5nbGVMaW5lV3JhcHBlciBpcyBkZXNpZ25lZCB0byB3b3JrIG9ubHkgb24gc2luZ2xlIGxpbmUiKTt2YXIgcz1mdW5jdGlvbihlKXtyZXR1cm4gdC5wcm90b3R5cGUud3JhcC5jYWxsKGEsbixpLGUsbyl9LGw9cyhyKTtpZihsLm5vTGluZXM8MilyZXR1cm4gbDtmb3IodmFyIGM9MCx1PXIsaD0wO2g8ZS5OT19XUkFQX0lURVJBVElPTlMmJnU+YzsrK2gpe3ZhciBkPSh1K2MpLzIscD1zKGQpO3RoaXMuYXJlU2FtZVJlc3VsdHMobCxwKT8odT1kLGw9cCk6Yz1kfXJldHVybiBsfSxlLnByb3RvdHlwZS5hcmVTYW1lUmVzdWx0cz1mdW5jdGlvbih0LGUpe3JldHVybiB0Lm5vTGluZXM9PT1lLm5vTGluZXMmJnQudHJ1bmNhdGVkVGV4dD09PWUudHJ1bmNhdGVkVGV4dH0sZX0pKGpmdC5XcmFwcGVyKTtpLk5PX1dSQVBfSVRFUkFUSU9OUz01LGUuU2luZ2xlTGluZVdyYXBwZXI9aX0pKSxHZnQ9YmUoKGZ1bmN0aW9uKHQsZSl7ZnVuY3Rpb24gbih0KXtmb3IodmFyIG4gaW4gdCllLmhhc093blByb3BlcnR5KG4pfHwoZVtuXT10W25dKX1PYmplY3QuZGVmaW5lUHJvcGVydHkoZSwiX19lc01vZHVsZSIse3ZhbHVlOiEwfSksbihVZnQpLG4oamZ0KX0pKSxXZnQ9YmUoKGZ1bmN0aW9uKHQsZSl7T2JqZWN0LmRlZmluZVByb3BlcnR5KGUsIl9fZXNNb2R1bGUiLHt2YWx1ZTohMH0pO3ZhciBuPShmdW5jdGlvbigpe2Z1bmN0aW9uIHQodCl7dGhpcy5jb250ZXh0PXQsdGhpcy5tZWFzdXJlcj1uZXcgVmZ0LkNhY2hlTWVhc3VyZXIodGhpcy5jb250ZXh0KSx0aGlzLndyYXBwZXI9bmV3IEdmdC5XcmFwcGVyLHRoaXMud3JpdGVyPW5ldyBQZnQuV3JpdGVyKHRoaXMubWVhc3VyZXIsdGhpcy5jb250ZXh0LHRoaXMud3JhcHBlcil9cmV0dXJuIHQuc3ZnPWZ1bmN0aW9uKGUsbixpKXtyZXR1cm4gbmV3IHQobmV3IFJmdC5TdmdDb250ZXh0KGUsbixpKSl9LHQuY2FudmFzPWZ1bmN0aW9uKGUsbixpKXtyZXR1cm4gbmV3IHQobmV3IFJmdC5DYW52YXNDb250ZXh0KGUsbixpKSl9LHQuaHRtbD1mdW5jdGlvbihlLG4saSl7cmV0dXJuIG5ldyB0KG5ldyBSZnQuSHRtbENvbnRleHQoZSxuLGkpKX0sdC5wcm90b3R5cGUud3JpdGU9ZnVuY3Rpb24odCxlLG4saSxyKXt0aGlzLndyaXRlci53cml0ZSh0LGUsbixpLHIpfSx0LnByb3RvdHlwZS5jbGVhck1lYXN1cmVyQ2FjaGU9ZnVuY3Rpb24oKXt0aGlzLm1lYXN1cmVyLnJlc2V0KCl9LHR9KSgpO2UuVHlwZXNldHRlcj1ufSkpLHFmdD1iZSgoZnVuY3Rpb24odCxlKXtmdW5jdGlvbiBuKHQpe2Zvcih2YXIgbiBpbiB0KWUuaGFzT3duUHJvcGVydHkobil8fChlW25dPXRbbl0pfU9iamVjdC5kZWZpbmVQcm9wZXJ0eShlLCJfX2VzTW9kdWxlIix7dmFsdWU6ITB9KSxuKFJmdCksbihWZnQpLG4oV2Z0KSxuKGtmdCksbihHZnQpLG4oUGZ0KX0pKSxZZnQ9YmUoKGZ1bmN0aW9uKHQsZSl7Ci8qKgogICAgICogQ29weXJpZ2h0IDIwMTQtcHJlc2VudCBQYWxhbnRpciBUZWNobm9sb2dpZXMKICAgICAqIEBsaWNlbnNlIE1JVAogICAgICovCk9iamVjdC5kZWZpbmVQcm9wZXJ0eShlLCJfX2VzTW9kdWxlIix7dmFsdWU6ITB9KTt2YXIgbj13aW5kb3cuQXJyYXk7ZS5hZGQ9ZnVuY3Rpb24gaSh0LGUpe2lmKHQubGVuZ3RoIT09ZS5sZW5ndGgpdGhyb3cgbmV3IEVycm9yKCJhdHRlbXB0ZWQgdG8gYWRkIGFycmF5cyBvZiB1bmVxdWFsIGxlbmd0aCIpO3JldHVybiB0Lm1hcCgoZnVuY3Rpb24obixpKXtyZXR1cm4gdFtpXStlW2ldfSkpfSxlLnVuaXE9ZnVuY3Rpb24gcih0KXt2YXIgZT1VaHQuc2V0KCksbj1bXTtyZXR1cm4gdC5mb3JFYWNoKChmdW5jdGlvbih0KXtlLmhhcyhTdHJpbmcodCkpfHwoZS5hZGQoU3RyaW5nKHQpKSxuLnB1c2godCkpfSkpLG59LGUuZmxhdHRlbj1mdW5jdGlvbiBvKHQpe3JldHVybiBuLnByb3RvdHlwZS5jb25jYXQuYXBwbHkoW10sdCl9LGUuY3JlYXRlRmlsbGVkQXJyYXk9ZnVuY3Rpb24gYSh0LGUpe2Zvcih2YXIgbj1bXSxpPTA7aTxlO2krKyluW2ldPSJmdW5jdGlvbiI9PXR5cGVvZiB0P3QoaSk6dDtyZXR1cm4gbn19KSksWGZ0PWJlKChmdW5jdGlvbih0LGUpewovKioKICAgICAqIENvcHlyaWdodCAyMDE0LXByZXNlbnQgUGFsYW50aXIgVGVjaG5vbG9naWVzCiAgICAgKiBAbGljZW5zZSBNSVQKICAgICAqLwpPYmplY3QuZGVmaW5lUHJvcGVydHkoZSwiX19lc01vZHVsZSIse3ZhbHVlOiEwfSk7dmFyIG49d2luZG93Lk1hdGg7ZnVuY3Rpb24gaSh0KXt2YXIgZT1VaHQucmdiKHQpLGk9ZnVuY3Rpb24odCl7cmV0dXJuKHQvPTI1NSk8PS4wMzkyOD90LzEyLjkyOm4ucG93KCh0Ky4wNTUpLzEuMDU1LDIuNCl9O3JldHVybi4yMTI2KmkoZS5yKSsuNzE1MippKGUuZykrLjA3MjIqaShlLmIpfWUuY29udHJhc3Q9ZnVuY3Rpb24gcih0LGUpe3ZhciBuPWkodCkrLjA1LHI9aShlKSsuMDU7cmV0dXJuIG4+cj9uL3I6ci9ufSxlLmxpZ2h0ZW5Db2xvcj1mdW5jdGlvbiBvKHQsZSl7cmV0dXJuIFVodC5jb2xvcih0KS5icmlnaHRlcihlKS5yZ2IoKS50b1N0cmluZygpfSxlLmNvbG9yVGVzdD1mdW5jdGlvbiBhKHQsZSl7dC5jbGFzc2VkKGUsITApO3ZhciBuPXQuc3R5bGUoImJhY2tncm91bmQtY29sb3IiKTtpZigidHJhbnNwYXJlbnQiPT09bilyZXR1cm4gbnVsbDt2YXIgaT0vXCgoLispXCkvLmV4ZWMobik7aWYoIWkpcmV0dXJuIG51bGw7dmFyIHI9aVsxXS5zcGxpdCgiLCIpLm1hcCgoZnVuY3Rpb24odCl7dmFyIGU9K3Qsbj1lLnRvU3RyaW5nKDE2KTtyZXR1cm4gZTwxNj8iMCIrbjpufSkpO2lmKDQ9PT1yLmxlbmd0aCYmIjAwIj09PXJbM10pcmV0dXJuIG51bGw7dmFyIG89IiMiK3Iuam9pbigiIik7cmV0dXJuIHQuY2xhc3NlZChlLCExKSxvfX0pKSwkZnQ9YmUoKGZ1bmN0aW9uKHQsZSl7Ci8qKgogICAgICogQ29weXJpZ2h0IDIwMTQtcHJlc2VudCBQYWxhbnRpciBUZWNobm9sb2dpZXMKICAgICAqIEBsaWNlbnNlIE1JVAogICAgICovCk9iamVjdC5kZWZpbmVQcm9wZXJ0eShlLCJfX2VzTW9kdWxlIix7dmFsdWU6ITB9KTt2YXIgbj13aW5kb3cuTWF0aDtmdW5jdGlvbiBpKHQpe3ZhciBlO3RyeXtlPXQubm9kZSgpLmdldEJCb3goKX1jYXRjaCh0KXtlPXt4OjAseTowLHdpZHRoOjAsaGVpZ2h0OjB9fXJldHVybiBlfWUuY29udGFpbnM9ZnVuY3Rpb24gcih0LGUpe2Zvcih2YXIgbj1lO251bGwhPW4mJm4hPT10OyluPW4ucGFyZW50Tm9kZTtyZXR1cm4gbj09PXR9LGUuZWxlbWVudEJCb3g9aSxlLmVudGl0eUJvdW5kcz1mdW5jdGlvbiBvKHQpe2lmKHQgaW5zdGFuY2VvZiBTVkdFbGVtZW50KXJldHVybiBpKFVodC5zZWxlY3QodCkpO2lmKHQgaW5zdGFuY2VvZiBIVE1MRWxlbWVudCl7dmFyIGU9dC5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKTtyZXR1cm57eDplLmxlZnQseTplLnRvcCx3aWR0aDplLndpZHRoLGhlaWdodDplLmhlaWdodH19cmV0dXJue3g6MCx5OjAsd2lkdGg6MCxoZWlnaHQ6MH19LGUuU0NSRUVOX1JFRlJFU0hfUkFURV9NSUxMSVNFQ09ORFM9MWUzLzYwLGUucmVxdWVzdEFuaW1hdGlvbkZyYW1lUG9seWZpbGw9ZnVuY3Rpb24gYSh0KXtudWxsIT13aW5kb3cucmVxdWVzdEFuaW1hdGlvbkZyYW1lP3dpbmRvdy5yZXF1ZXN0QW5pbWF0aW9uRnJhbWUodCk6c2V0VGltZW91dCh0LGUuU0NSRUVOX1JFRlJFU0hfUkFURV9NSUxMSVNFQ09ORFMpfSxlLmVsZW1lbnRXaWR0aD1mdW5jdGlvbiBzKHQpe3ZhciBlPXQgaW5zdGFuY2VvZiBVaHQuc2VsZWN0aW9uP3Qubm9kZSgpOnQsbj13aW5kb3cuZ2V0Q29tcHV0ZWRTdHlsZShlKTtyZXR1cm4gbShuLCJ3aWR0aCIpK20obiwicGFkZGluZy1sZWZ0IikrbShuLCJwYWRkaW5nLXJpZ2h0IikrbShuLCJib3JkZXItbGVmdC13aWR0aCIpK20obiwiYm9yZGVyLXJpZ2h0LXdpZHRoIil9LGUuZWxlbWVudEhlaWdodD1mdW5jdGlvbiBsKHQpe3ZhciBlPXQgaW5zdGFuY2VvZiBVaHQuc2VsZWN0aW9uP3Qubm9kZSgpOnQsbj13aW5kb3cuZ2V0Q29tcHV0ZWRTdHlsZShlKTtyZXR1cm4gbShuLCJoZWlnaHQiKSttKG4sInBhZGRpbmctdG9wIikrbShuLCJwYWRkaW5nLWJvdHRvbSIpK20obiwiYm9yZGVyLXRvcC13aWR0aCIpK20obiwiYm9yZGVyLWJvdHRvbS13aWR0aCIpfTt2YXIgYz0iKD86Wy0rXT9bMC05XSpcXC4/WzAtOV0rKSIsdT0iKD86KD86XFxzKyw/XFxzKil8KD86LFxccyopKSIsaD1uZXcgUmVnRXhwKCJ0cmFuc2xhdGVcXHMqXFwoXFxzKigiK2MrIikoPzoiK3UrIigiK2MrIikpP1xccypcXCkiKSxkPW5ldyBSZWdFeHAoInJvdGF0ZVxccypcXChcXHMqKCIrYysiKVxccypcXCkiKSxwPW5ldyBSZWdFeHAoInNjYWxlXFxzKlxcKFxccyooIitjKyIpKD86Iit1KyIoIitjKyIpKT9cXHMqXFwpIik7ZnVuY3Rpb24gZih0KXtpZigibnVtYmVyIj09dHlwZW9mIHQpcmV0dXJue21pbjp0LG1heDp0fTtpZih0IGluc3RhbmNlb2YgT2JqZWN0JiYibWluImluIHQmJiJtYXgiaW4gdClyZXR1cm4gdDt0aHJvdyBuZXcgRXJyb3IoImlucHV0ICciK3QrIicgY2FuJ3QgYmUgcGFyc2VkIGFzIGFuIFJhbmdlIil9ZnVuY3Rpb24gbSh0LGUpe3ZhciBuPXQuZ2V0UHJvcGVydHlWYWx1ZShlKTtyZXR1cm4gcGFyc2VGbG9hdChuKXx8MH1lLmdldFRyYW5zbGF0ZVZhbHVlcz1mdW5jdGlvbiBnKHQpe3ZhciBlPWguZXhlYyh0LmF0dHIoInRyYW5zZm9ybSIpKTtpZihudWxsIT1lKXt2YXIgbj1lWzJdO3JldHVyblsrZVsxXSwrKHZvaWQgMD09PW4/MDpuKV19cmV0dXJuWzAsMF19LGUuZ2V0Um90YXRlPWZ1bmN0aW9uIF8odCl7dmFyIGU9ZC5leGVjKHQuYXR0cigidHJhbnNmb3JtIikpO3JldHVybiBudWxsIT1lPytlWzFdOjB9LGUuZ2V0U2NhbGVWYWx1ZXM9ZnVuY3Rpb24geSh0KXt2YXIgZT1wLmV4ZWModC5hdHRyKCJ0cmFuc2Zvcm0iKSk7aWYobnVsbCE9ZSl7dmFyIG49ZVsxXSxpPWVbMl07cmV0dXJuWytuLG51bGw9PWk/K246K2ldfXJldHVyblswLDBdfSxlLmNsaWVudFJlY3RzT3ZlcmxhcD1mdW5jdGlvbiB2KHQsZSl7cmV0dXJuIShuLmZsb29yKHQucmlnaHQpPD1uLmNlaWwoZS5sZWZ0KXx8bi5jZWlsKHQubGVmdCk+PW4uZmxvb3IoZS5yaWdodCl8fG4uZmxvb3IodC5ib3R0b20pPD1uLmNlaWwoZS50b3ApfHxuLmNlaWwodC50b3ApPj1uLmZsb29yKGUuYm90dG9tKSl9LGUuZXhwYW5kUmVjdD1mdW5jdGlvbiBiKHQsZSl7cmV0dXJue2xlZnQ6dC5sZWZ0LWUsdG9wOnQudG9wLWUscmlnaHQ6dC5yaWdodCtlLGJvdHRvbTp0LmJvdHRvbStlLHdpZHRoOnQud2lkdGgrMiplLGhlaWdodDp0LmhlaWdodCsyKmV9fSxlLmNsaWVudFJlY3RJbnNpZGU9ZnVuY3Rpb24geCh0LGUpe3JldHVybiBuLmZsb29yKGUubGVmdCk8PW4uY2VpbCh0LmxlZnQpJiZuLmZsb29yKGUudG9wKTw9bi5jZWlsKHQudG9wKSYmbi5mbG9vcih0LnJpZ2h0KTw9bi5jZWlsKGUucmlnaHQpJiZuLmZsb29yKHQuYm90dG9tKTw9bi5jZWlsKGUuYm90dG9tKX0sZS5pbnRlcnNlY3RzQkJveD1mdW5jdGlvbiB3KHQsZSxuLGkpe3ZvaWQgMD09PWkmJihpPS41KTt2YXIgcj1mKHQpLG89ZihlKTtyZXR1cm4gbi54K24ud2lkdGg+PXIubWluLWkmJm4ueDw9ci5tYXgraSYmbi55K24uaGVpZ2h0Pj1vLm1pbi1pJiZuLnk8PW8ubWF4K2l9LGUuZ2V0SHRtbEVsZW1lbnRBbmNlc3RvcnM9ZnVuY3Rpb24gUyh0KXtmb3IodmFyIGU9W107dCYmdCBpbnN0YW5jZW9mIEhUTUxFbGVtZW50OyllLnB1c2godCksdD10LnBhcmVudEVsZW1lbnQ7cmV0dXJuIGV9LGUuZ2V0RWxlbWVudFRyYW5zZm9ybT1mdW5jdGlvbiBNKHQpe3ZhciBlPXdpbmRvdy5nZXRDb21wdXRlZFN0eWxlKHQsbnVsbCk7cmV0dXJuKGZ1bmN0aW9uIG4odCl7aWYobnVsbD09dHx8Im5vbmUiPT09dClyZXR1cm4gbnVsbDt2YXIgZT10Lm1hdGNoKEUpO2lmKG51bGw9PWV8fGUubGVuZ3RoPDIpcmV0dXJuIG51bGw7dmFyIG49ZVsxXS5zcGxpdChUKS5tYXAoKGZ1bmN0aW9uKHQpe3JldHVybiBwYXJzZUZsb2F0KHQpfSkpO3JldHVybiA2IT1uLmxlbmd0aD9udWxsOm59KShlLmdldFByb3BlcnR5VmFsdWUoIi13ZWJraXQtdHJhbnNmb3JtIil8fGUuZ2V0UHJvcGVydHlWYWx1ZSgiLW1vei10cmFuc2Zvcm0iKXx8ZS5nZXRQcm9wZXJ0eVZhbHVlKCItbXMtdHJhbnNmb3JtIil8fGUuZ2V0UHJvcGVydHlWYWx1ZSgiLW8tdHJhbnNmb3JtIil8fGUuZ2V0UHJvcGVydHlWYWx1ZSgidHJhbnNmb3JtIikpfTt2YXIgRT0vXm1hdHJpeFwoKFteKV0rKVwpJC8sVD0vWywgXSsvfSkpLEtmdD1iZSgoZnVuY3Rpb24odCxlKXsKLyoqCiAgICAgKiBDb3B5cmlnaHQgMjAxNC1wcmVzZW50IFBhbGFudGlyIFRlY2hub2xvZ2llcwogICAgICogQGxpY2Vuc2UgTUlUCiAgICAgKi8KT2JqZWN0LmRlZmluZVByb3BlcnR5KGUsIl9fZXNNb2R1bGUiLHt2YWx1ZTohMH0pO3ZhciBuPXdpbmRvdy5NYXRoLGk9WzEsMCwwLDEsMCwwXTtmdW5jdGlvbiByKHQsZSl7cmV0dXJuW3RbMF0qZVswXSt0WzJdKmVbMV0sdFsxXSplWzBdK3RbM10qZVsxXSx0WzBdKmVbMl0rdFsyXSplWzNdLHRbMV0qZVsyXSt0WzNdKmVbM10sdFswXSplWzRdK3RbMl0qZVs1XSt0WzRdLHRbMV0qZVs0XSt0WzNdKmVbNV0rdFs1XV19ZnVuY3Rpb24gbyh0LGUpe3JldHVyblt0WzBdLHRbMV0sdFsyXSx0WzNdLHRbMF0qZVswXSt0WzJdKmVbMV0rdFs0XSx0WzFdKmVbMF0rdFszXSplWzFdK3RbNV1dfWZ1bmN0aW9uIGEodCl7dmFyIGU9dFswXSp0WzNdLXRbMV0qdFsyXTtpZigwPT09ZSl0aHJvdyBuZXcgRXJyb3IoInNpbmd1bGFyIG1hdHJpeCIpO3ZhciBuPTEvZTtyZXR1cm5bbip0WzNdLG4qLXRbMV0sbiotdFsyXSxuKnRbMF0sbiooLXRbM10qdFs0XSt0WzJdKnRbNV0pLG4qKHRbMV0qdFs0XSstdFswXSp0WzVdKV19ZS5pblJhbmdlPWZ1bmN0aW9uIHModCxlLGkpe3JldHVybiBuLm1pbihlLGkpPD10JiZ0PD1uLm1heChlLGkpfSxlLmNsYW1wPWZ1bmN0aW9uIGwodCxlLGkpe3JldHVybiBuLm1pbihuLm1heChlLHQpLGkpfSxlLm1heD1mdW5jdGlvbiBjKHQsZSxuKXt2YXIgaT0iZnVuY3Rpb24iPT10eXBlb2YgZT9lOm51bGwscj1udWxsPT1pP2U6bixvPW51bGw9PWk/VWh0Lm1heCh0KTpVaHQubWF4KHQsaSk7cmV0dXJuIHZvaWQgMCE9PW8/bzpyfSxlLm1pbj1mdW5jdGlvbiB1KHQsZSxuKXt2YXIgaT0iZnVuY3Rpb24iPT10eXBlb2YgZT9lOm51bGwscj1udWxsPT1pP2U6bixvPW51bGw9PWk/VWh0Lm1pbih0KTpVaHQubWluKHQsaSk7cmV0dXJuIHZvaWQgMCE9PW8/bzpyfSxlLmlzTmFOPWZ1bmN0aW9uIGgodCl7cmV0dXJuIHQhPXR9LGUuaXNWYWxpZE51bWJlcj1mdW5jdGlvbiBkKHQpe3JldHVybiJudW1iZXIiPT10eXBlb2YgdCYmdC10PDF9LGUucmFuZ2U9ZnVuY3Rpb24gcCh0LGUsaSl7aWYodm9pZCAwPT09aSYmKGk9MSksMD09PWkpdGhyb3cgbmV3IEVycm9yKCJzdGVwIGNhbm5vdCBiZSAwIik7Zm9yKHZhciByPW4ubWF4KG4uY2VpbCgoZS10KS9pKSwwKSxvPVtdLGE9MDthPHI7KythKW9bYV09dCtpKmE7cmV0dXJuIG99LGUuZGlzdGFuY2VTcXVhcmVkPWZ1bmN0aW9uIGYodCxlKXtyZXR1cm4gbi5wb3coZS55LXQueSwyKStuLnBvdyhlLngtdC54LDIpfSxlLmRlZ3JlZXNUb1JhZGlhbnM9ZnVuY3Rpb24gbSh0KXtyZXR1cm4gdC8zNjAqbi5QSSoyfSxlLndpdGhpbj1mdW5jdGlvbiBnKHQsZSl7cmV0dXJuIGUudG9wTGVmdC54PD10LngmJmUuYm90dG9tUmlnaHQueD49dC54JiZlLnRvcExlZnQueTw9dC55JiZlLmJvdHRvbVJpZ2h0Lnk+PXQueX0sZS5ib3VuZHNJbnRlcnNlY3RzPWZ1bmN0aW9uIF8odCxlLG4saSxyLG8sYSxzKXtyZXR1cm4gdDw9cithJiZyPD10K24mJmU8PW8rcyYmbzw9ZStpfSxlLmdldEN1bXVsYXRpdmVUcmFuc2Zvcm09ZnVuY3Rpb24geSh0KXtmb3IodmFyIGU9JGZ0LmdldEh0bWxFbGVtZW50QW5jZXN0b3JzKHQpLG49aSxzPW51bGwsbD0wLGM9ZTtsPGMubGVuZ3RoO2wrKyl7dmFyIHU9Y1tsXSxoPSRmdC5nZXRFbGVtZW50VHJhbnNmb3JtKHUpO2lmKG51bGwhPWgpe3ZhciBkPXUuY2xpZW50V2lkdGgvMixwPXUuY2xpZW50SGVpZ2h0LzI7bj1vKG4sW2QscF0pLG49byhuPXIobixhKGgpKSxbLWQsLXBdKX12YXIgZj11LnNjcm9sbExlZnQsbT11LnNjcm9sbFRvcDtudWxsIT09cyYmdSE9PXN8fChmLT11Lm9mZnNldExlZnQrdS5jbGllbnRMZWZ0LG0tPXUub2Zmc2V0VG9wK3UuY2xpZW50VG9wLHM9dS5vZmZzZXRQYXJlbnQpLG49byhuLFtmLG1dKX1yZXR1cm4gbn0sZS5tdWx0aXBseU1hdHJpeD1yLGUucHJlbXVsdGlwbHlUcmFuc2xhdGU9ZnVuY3Rpb24gdih0LGUpe3JldHVybltlWzBdLGVbMV0sZVsyXSxlWzNdLGVbNF0rdFswXSxlWzVdK3RbMV1dfSxlLm11bHRpcGx5VHJhbnNsYXRlPW8sZS5pbnZlcnRNYXRyaXg9YSxlLmFwcGx5VHJhbnNmb3JtPWZ1bmN0aW9uIGIodCxlKXtyZXR1cm57eDp0WzBdKmUueCt0WzJdKmUueSt0WzRdLHk6dFsxXSplLngrdFszXSplLnkrdFs1XX19fSkpLFpmdD1iZSgoZnVuY3Rpb24odCxlKXsKLyoqCiAgICAgKiBDb3B5cmlnaHQgMjAxNy1wcmVzZW50IFBhbGFudGlyIFRlY2hub2xvZ2llcwogICAgICogQGxpY2Vuc2UgTUlUCiAgICAgKi8KT2JqZWN0LmRlZmluZVByb3BlcnR5KGUsIl9fZXNNb2R1bGUiLHt2YWx1ZTohMH0pO3ZhciBuPShmdW5jdGlvbigpe2Z1bmN0aW9uIHQoKXt9cmV0dXJuIHQucHJvdG90eXBlLnNwbGl0PWZ1bmN0aW9uKHQsZSl7Zm9yKHZhciBuPU1hdGguY2VpbCh0Lmxlbmd0aC8yKSxpPTA7aTxuO2krKyllWzBdLmluc2VydCh0W2ldKTtmb3IoaT1uO2k8dC5sZW5ndGg7aSsrKWVbMV0uaW5zZXJ0KHRbaV0pfSx0fSkoKTtlLlNwbGl0U3RyYXRlZ3lUcml2aWFsPW47dmFyIGk9KGZ1bmN0aW9uKCl7ZnVuY3Rpb24gdCgpe31yZXR1cm4gdC5wcm90b3R5cGUuc3BsaXQ9ZnVuY3Rpb24odCxlKXtmb3IodD10LnNsaWNlKCksdGhpcy5jaG9vc2VGaXJzdFNwbGl0KHQsZSk7dC5sZW5ndGg+MDspdGhpcy5hZGROZXh0KHQsZSl9LHQucHJvdG90eXBlLmNob29zZUZpcnN0U3BsaXQ9ZnVuY3Rpb24odCxlKXtmb3IodmFyIG49MCxpPTAscj10Lmxlbmd0aC0xLG89dC5sZW5ndGgtMSxhPTE7YTx0Lmxlbmd0aC0xO2ErKyl7dmFyIHM9dFthXTtzLmJvdW5kcy54bD50W3JdLmJvdW5kcy54bD9yPWE6cy5ib3VuZHMueGg8dFtuXS5ib3VuZHMueGgmJihuPWEpLHMuYm91bmRzLnlsPnRbb10uYm91bmRzLnlsP289YTpzLmJvdW5kcy55aDx0W2ldLmJvdW5kcy55aCYmKGk9YSl9dmFyIGw9TWF0aC5hYnModFtuXS5ib3VuZHMueGgtdFtyXS5ib3VuZHMueGwpPk1hdGguYWJzKHRbaV0uYm91bmRzLnloLXRbb10uYm91bmRzLnlsKT9bbixyXTpbaSxvXSxjPWxbMF0sdT1sWzFdO2M9PT11JiYoYz0wLHU9dC5sZW5ndGgtMSksZVswXS5pbnNlcnQodC5zcGxpY2UoTWF0aC5tYXgoYyx1KSwxKVswXSksZVsxXS5pbnNlcnQodC5zcGxpY2UoTWF0aC5taW4oYyx1KSwxKVswXSl9LHQucHJvdG90eXBlLmFkZE5leHQ9ZnVuY3Rpb24odCxlKXtmb3IodmFyIG49bnVsbCxpPW51bGwscj1udWxsLG89MDtvPHQubGVuZ3RoO28rKyl7dmFyIGE9dFtvXSxzPWVbMF0udW5pb25BcmVhRGlmZmVyZW5jZShhLmJvdW5kcyksbD1lWzFdLnVuaW9uQXJlYURpZmZlcmVuY2UoYS5ib3VuZHMpOyhzPGl8fG51bGw9PW4pJiYobj1vLGk9cyxyPWVbMF0pLGw8aSYmKG49byxpPWwscj1lWzFdKX1yLmluc2VydCh0LnNwbGljZShuLDEpWzBdKX0sdH0pKCk7ZS5TcGxpdFN0cmF0ZWd5TGluZWFyPWl9KSksSmZ0PWJlKChmdW5jdGlvbih0LGUpewovKioKICAgICAqIENvcHlyaWdodCAyMDE3LXByZXNlbnQgUGFsYW50aXIgVGVjaG5vbG9naWVzCiAgICAgKiBAbGljZW5zZSBNSVQKICAgICAqLwpPYmplY3QuZGVmaW5lUHJvcGVydHkoZSwiX19lc01vZHVsZSIse3ZhbHVlOiEwfSk7dmFyIG4saT1uZXcgWmZ0LlNwbGl0U3RyYXRlZ3lMaW5lYXI7ZnVuY3Rpb24gcih0LGUsaSl7dmFyIHI9MS8wLG89MS8wO3JldHVybiBmdW5jdGlvbihhKXt2YXIgcz1lKGEuYm91bmRzLHQpLGw9aShhLmJvdW5kcyx0KTtyZXR1cm4gbnVsbCE9YS52YWx1ZT9zPHI/KHI9cyxvPWwsbi5QQVNTX0FORF9PVkVSV1JJVEUpOnM9PT1yP24uUEFTUzpuLkZBSUw6cz5vP24uRkFJTDoobz1NYXRoLm1heChsLG8pLG4uUEFTUyl9fWZ1bmN0aW9uIG8odCxlKXtyZXR1cm4gZnVuY3Rpb24obixpKXtyZXR1cm4gZShpLmJvdW5kcyx0KS1lKG4uYm91bmRzLHQpfX0hKGZ1bmN0aW9uKHQpe3RbdC5QQVNTPTBdPSJQQVNTIix0W3QuRkFJTD0xXT0iRkFJTCIsdFt0LlBBU1NfQU5EX09WRVJXUklURT0yXT0iUEFTU19BTkRfT1ZFUldSSVRFIn0pKG49ZS5RdWVyeVByZWRpY2F0ZVJlc3VsdHx8KGUuUXVlcnlQcmVkaWNhdGVSZXN1bHQ9e30pKSxlLmNyZWF0ZU1pbmltaXppbmdOb2RlUHJlZGljYXRlPXIsZS5jcmVhdGVOb2RlU29ydD1vO3ZhciBhPShmdW5jdGlvbigpe2Z1bmN0aW9uIHQodCxlKXt2b2lkIDA9PT10JiYodD01KSx2b2lkIDA9PT1lJiYoZT1pKSx0aGlzLm1heE5vZGVDaGlsZHJlbj10LHRoaXMuc3BsaXRTdHJhdGVneT1lLHRoaXMucm9vdD1uZXcgcyghMCksdGhpcy5zaXplPTB9cmV0dXJuIHQucHJvdG90eXBlLmdldFJvb3Q9ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5yb290fSx0LnByb3RvdHlwZS5jbGVhcj1mdW5jdGlvbigpe3RoaXMucm9vdD1uZXcgcyghMCksdGhpcy5zaXplPTB9LHQucHJvdG90eXBlLmluc2VydD1mdW5jdGlvbih0LGUpe2Zvcih2YXIgbj10aGlzLnJvb3Q7IW4ubGVhZjspbj1uLnN1YnRyZWUodCk7dmFyIGk9cy52YWx1ZU5vZGUodCxlKTtmb3Iobi5pbnNlcnQoaSksdGhpcy5zaXplKz0xO24ub3ZlcmZsb3codGhpcy5tYXhOb2RlQ2hpbGRyZW4pOyludWxsPT0obj1uLnNwbGl0KHRoaXMuc3BsaXRTdHJhdGVneSkpLnBhcmVudCYmKHRoaXMucm9vdD1uKTtyZXR1cm4gaX0sdC5wcm90b3R5cGUubG9jYXRlPWZ1bmN0aW9uKHQpe3JldHVybiB0aGlzLnF1ZXJ5KChmdW5jdGlvbihlKXtyZXR1cm4gZS5jb250YWlucyh0KX0pKX0sdC5wcm90b3R5cGUubG9jYXRlTmVhcmVzdD1mdW5jdGlvbih0KXt2YXIgZT1yKHQsbC5kaXN0YW5jZVNxdWFyZWRUb05lYXJFZGdlLGwuZGlzdGFuY2VTcXVhcmVkVG9GYXJFZGdlKTtyZXR1cm4gdGhpcy5xdWVyeU5vZGVzKGUpLm1hcCgoZnVuY3Rpb24odCl7cmV0dXJuIHQudmFsdWV9KSl9LHQucHJvdG90eXBlLmxvY2F0ZU5lYXJlc3RYPWZ1bmN0aW9uKHQpe3ZhciBlPXIodCxsLmFic29sdXRlRGlzdGFuY2VUb05lYXJFZGdlWCxsLmFic29sdXRlRGlzdGFuY2VUb0ZhckVkZ2VYKSxuPXRoaXMucXVlcnlOb2RlcyhlKTtyZXR1cm4gbi5zb3J0KG8odCxsLmFic29sdXRlRGlzdGFuY2VUb05lYXJFZGdlWSkpLG4ubWFwKChmdW5jdGlvbih0KXtyZXR1cm4gdC52YWx1ZX0pKX0sdC5wcm90b3R5cGUubG9jYXRlTmVhcmVzdFk9ZnVuY3Rpb24odCl7dmFyIGU9cih0LGwuYWJzb2x1dGVEaXN0YW5jZVRvTmVhckVkZ2VZLGwuYWJzb2x1dGVEaXN0YW5jZVRvRmFyRWRnZVkpLG49dGhpcy5xdWVyeU5vZGVzKGUpO3JldHVybiBuLnNvcnQobyh0LGwuYWJzb2x1dGVEaXN0YW5jZVRvTmVhckVkZ2VYKSksbi5tYXAoKGZ1bmN0aW9uKHQpe3JldHVybiB0LnZhbHVlfSkpfSx0LnByb3RvdHlwZS5pbnRlcnNlY3Q9ZnVuY3Rpb24odCl7cmV0dXJuIHRoaXMucXVlcnkoKGZ1bmN0aW9uKGUpe3JldHVybiBsLmlzQm91bmRzT3ZlcmxhcEJvdW5kcyhlLHQpfSkpfSx0LnByb3RvdHlwZS5pbnRlcnNlY3RYPWZ1bmN0aW9uKHQpe3JldHVybiB0aGlzLnF1ZXJ5KChmdW5jdGlvbihlKXtyZXR1cm4gbC5pc0JvdW5kc092ZXJsYXBYKGUsdCl9KSl9LHQucHJvdG90eXBlLmludGVyc2VjdFk9ZnVuY3Rpb24odCl7cmV0dXJuIHRoaXMucXVlcnkoKGZ1bmN0aW9uKGUpe3JldHVybiBsLmlzQm91bmRzT3ZlcmxhcFkoZSx0KX0pKX0sdC5wcm90b3R5cGUucXVlcnk9ZnVuY3Rpb24odCl7dmFyIGU9W107aWYobnVsbCE9dGhpcy5yb290LmJvdW5kcyYmIXQodGhpcy5yb290LmJvdW5kcykpcmV0dXJuIGU7Zm9yKHZhciBuPVt0aGlzLnJvb3RdO24ubGVuZ3RoPjA7KWZvcih2YXIgaT1uLnNoaWZ0KCkscj0wO3I8aS5lbnRyaWVzLmxlbmd0aDtyKyspe3ZhciBvPWkuZW50cmllc1tyXTt0KG8uYm91bmRzKSYmKGkubGVhZj9lLnB1c2goby52YWx1ZSk6bi5wdXNoKG8pKX1yZXR1cm4gZX0sdC5wcm90b3R5cGUucXVlcnlOb2Rlcz1mdW5jdGlvbih0KXt2YXIgZT1bXTtpZihudWxsIT10aGlzLnJvb3QuYm91bmRzJiZ0KHRoaXMucm9vdCk9PT1uLkZBSUwpcmV0dXJuIGU7Zm9yKHZhciBpPVt0aGlzLnJvb3RdO2kubGVuZ3RoPjA7KWZvcih2YXIgcj1pLnNoaWZ0KCksbz0wO288ci5lbnRyaWVzLmxlbmd0aDtvKyspe3ZhciBhPXIuZW50cmllc1tvXSxzPXQoYSk7cz09PW4uUEFTU19BTkRfT1ZFUldSSVRFJiYoZT1bXSkscyE9PW4uUEFTUyYmcyE9PW4uUEFTU19BTkRfT1ZFUldSSVRFfHwoci5sZWFmP2UucHVzaChhKTppLnB1c2goYSkpfXJldHVybiBlfSx0fSkoKTtlLlJUcmVlPWE7dmFyIHM9KGZ1bmN0aW9uKCl7ZnVuY3Rpb24gdCh0KXt0aGlzLmxlYWY9dCx0aGlzLmJvdW5kcz1udWxsLHRoaXMuZW50cmllcz1bXSx0aGlzLnBhcmVudD1udWxsLHRoaXMudmFsdWU9bnVsbH1yZXR1cm4gdC52YWx1ZU5vZGU9ZnVuY3Rpb24oZSxuKXt2YXIgaT1uZXcgdCghMCk7cmV0dXJuIGkuYm91bmRzPWUsaS52YWx1ZT1uLGl9LHQucHJvdG90eXBlLm92ZXJmbG93PWZ1bmN0aW9uKHQpe3JldHVybiB0aGlzLmVudHJpZXMubGVuZ3RoPnR9LHQucHJvdG90eXBlLmluc2VydD1mdW5jdGlvbih0KXt0aGlzLmVudHJpZXMucHVzaCh0KSx0LnBhcmVudD10aGlzO2Zvcih2YXIgZT10aGlzO251bGwhPWU7KWUuYm91bmRzPWwudW5pb25BbGwoW2UuYm91bmRzLHQuYm91bmRzXSksZT1lLnBhcmVudDtyZXR1cm4gdGhpc30sdC5wcm90b3R5cGUucmVtb3ZlPWZ1bmN0aW9uKHQpe3ZhciBlPXRoaXMuZW50cmllcy5pbmRleE9mKHQpO2lmKGU+PTApe3RoaXMuZW50cmllcy5zcGxpY2UoZSwxKTtmb3IodmFyIG49dGhpcztudWxsIT1uOyluLmJvdW5kcz1sLnVuaW9uQWxsKG4uZW50cmllcy5tYXAoKGZ1bmN0aW9uKHQpe3JldHVybiB0LmJvdW5kc30pKSksbj1uLnBhcmVudH1yZXR1cm4gdGhpc30sdC5wcm90b3R5cGUuc3VidHJlZT1mdW5jdGlvbih0KXtmb3IodmFyIGU9MS8wLG49bnVsbCxpPTA7aTx0aGlzLmVudHJpZXMubGVuZ3RoO2krKyl7dmFyIHI9dGhpcy5lbnRyaWVzW2ldLG89ci51bmlvbkFyZWFEaWZmZXJlbmNlKHQpOyhvPGV8fG89PT1lJiZudWxsIT1uJiZyLmVudHJpZXMubGVuZ3RoPG4uZW50cmllcy5sZW5ndGgpJiYobj1yKX1yZXR1cm4gbn0sdC5wcm90b3R5cGUuc3BsaXQ9ZnVuY3Rpb24oZSl7bnVsbCE9dGhpcy5wYXJlbnQmJnRoaXMucGFyZW50LnJlbW92ZSh0aGlzKTt2YXIgbj1bbmV3IHQodGhpcy5sZWFmKSxuZXcgdCh0aGlzLmxlYWYpXTtlLnNwbGl0KHRoaXMuZW50cmllcyxuKTt2YXIgaT1udWxsIT10aGlzLnBhcmVudD90aGlzLnBhcmVudDpuZXcgdCghMSk7cmV0dXJuIGkuaW5zZXJ0KG5bMF0pLGkuaW5zZXJ0KG5bMV0pLGkubGVhZj0hMSxpfSx0LnByb3RvdHlwZS51bmlvbkFyZWFEaWZmZXJlbmNlPWZ1bmN0aW9uKHQpe3JldHVybiBNYXRoLmFicyhsLnVuaW9uKHRoaXMuYm91bmRzLHQpLmFyZWEoKS10aGlzLmJvdW5kcy5hcmVhKCkpfSx0LnByb3RvdHlwZS5tYXhEZXB0aD1mdW5jdGlvbigpe3JldHVybiB0aGlzLmxlYWY/MToxK3RoaXMuZW50cmllcy5tYXAoKGZ1bmN0aW9uKHQpe3JldHVybiB0Lm1heERlcHRoKCl9KSkucmVkdWNlKChmdW5jdGlvbih0LGUpe3JldHVybiBNYXRoLm1heCh0LGUpfSkpfSx0fSkoKTtlLlJUcmVlTm9kZT1zO3ZhciBsPShmdW5jdGlvbigpe2Z1bmN0aW9uIHQodCxlLG4saSl7dGhpcy54bD10LHRoaXMueWw9ZSx0aGlzLnhoPW4sdGhpcy55aD1pLHRoaXMud2lkdGg9dGhpcy54aC10aGlzLnhsLHRoaXMuaGVpZ2h0PXRoaXMueWgtdGhpcy55bH1yZXR1cm4gdC54eXdoPWZ1bmN0aW9uKGUsbixpLHIpe3JldHVybiBuZXcgdChlLG4sZStpLG4rcil9LHQuZW50aXR5Qm91bmRzPWZ1bmN0aW9uKGUpe3JldHVybiBuZXcgdChlLngsZS55LGUueCtlLndpZHRoLGUueStlLmhlaWdodCl9LHQuYm91bmRzPWZ1bmN0aW9uKGUpe3JldHVybiB0LnBvaW50UGFpcihlLnRvcExlZnQsZS5ib3R0b21SaWdodCl9LHQucG9pbnRQYWlyPWZ1bmN0aW9uKGUsbil7cmV0dXJuIG5ldyB0KE1hdGgubWluKGUueCxuLngpLE1hdGgubWluKGUueSxuLnkpLE1hdGgubWF4KGUueCxuLngpLE1hdGgubWF4KGUueSxuLnkpKX0sdC5wb2ludHM9ZnVuY3Rpb24oZSl7aWYoZS5sZW5ndGg8Mil0aHJvdyBuZXcgRXJyb3IoIm5lZWQgYXQgbGVhc3QgMiBwb2ludHMgdG8gY3JlYXRlIGJvdW5kcyIpO3ZhciBuPWUubWFwKChmdW5jdGlvbih0KXtyZXR1cm4gdC54fSkpLGk9ZS5tYXAoKGZ1bmN0aW9uKHQpe3JldHVybiB0Lnl9KSk7cmV0dXJuIG5ldyB0KG4ucmVkdWNlKChmdW5jdGlvbih0LGUpe3JldHVybiBNYXRoLm1pbih0LGUpfSkpLGkucmVkdWNlKChmdW5jdGlvbih0LGUpe3JldHVybiBNYXRoLm1pbih0LGUpfSkpLG4ucmVkdWNlKChmdW5jdGlvbih0LGUpe3JldHVybiBNYXRoLm1heCh0LGUpfSkpLGkucmVkdWNlKChmdW5jdGlvbih0LGUpe3JldHVybiBNYXRoLm1heCh0LGUpfSkpKX0sdC51bmlvbj1mdW5jdGlvbihlLG4pe3JldHVybiBuZXcgdChNYXRoLm1pbihlLnhsLG4ueGwpLE1hdGgubWluKGUueWwsbi55bCksTWF0aC5tYXgoZS54aCxuLnhoKSxNYXRoLm1heChlLnloLG4ueWgpKX0sdC51bmlvbkFsbD1mdW5jdGlvbihlKXtyZXR1cm4gMD09PShlPWUuZmlsdGVyKChmdW5jdGlvbih0KXtyZXR1cm4gbnVsbCE9dH0pKSkubGVuZ3RoP251bGw6ZS5yZWR1Y2UoKGZ1bmN0aW9uKGUsbil7cmV0dXJuIHQudW5pb24oZSxuKX0pKX0sdC5pc0JvdW5kc092ZXJsYXBCb3VuZHM9ZnVuY3Rpb24oZSxuKXtyZXR1cm4gdC5pc0JvdW5kc092ZXJsYXBYKGUsbikmJnQuaXNCb3VuZHNPdmVybGFwWShlLG4pfSx0LmlzQm91bmRzT3ZlcmxhcFg9ZnVuY3Rpb24odCxlKXtyZXR1cm4hKHQueGg8ZS54bHx8dC54bD5lLnhoKX0sdC5pc0JvdW5kc092ZXJsYXBZPWZ1bmN0aW9uKHQsZSl7cmV0dXJuISh0LnloPGUueWx8fHQueWw+ZS55aCl9LHQuYWJzb2x1dGVEaXN0YW5jZVRvTmVhckVkZ2VYPWZ1bmN0aW9uKHQsZSl7dmFyIG49dC53aWR0aC8yO3JldHVybiBNYXRoLm1heChNYXRoLmFicyhlLngtKHQueGwrbikpLW4sMCl9LHQuYWJzb2x1dGVEaXN0YW5jZVRvTmVhckVkZ2VZPWZ1bmN0aW9uKHQsZSl7dmFyIG49dC5oZWlnaHQvMjtyZXR1cm4gTWF0aC5tYXgoTWF0aC5hYnMoZS55LSh0LnlsK24pKS1uLDApfSx0LmFic29sdXRlRGlzdGFuY2VUb0ZhckVkZ2VYPWZ1bmN0aW9uKGUsbil7dmFyIGk9dC5hYnNvbHV0ZURpc3RhbmNlVG9OZWFyRWRnZVgoZSxuKTtyZXR1cm4gMD09PWk/MDppK2Uud2lkdGh9LHQuYWJzb2x1dGVEaXN0YW5jZVRvRmFyRWRnZVk9ZnVuY3Rpb24oZSxuKXt2YXIgaT10LmFic29sdXRlRGlzdGFuY2VUb05lYXJFZGdlWShlLG4pO3JldHVybiAwPT09aT8wOmkrZS5oZWlnaHR9LHQuZGlzdGFuY2VTcXVhcmVkVG9OZWFyRWRnZT1mdW5jdGlvbihlLG4pe3ZhciBpPXQuYWJzb2x1dGVEaXN0YW5jZVRvTmVhckVkZ2VYKGUsbikscj10LmFic29sdXRlRGlzdGFuY2VUb05lYXJFZGdlWShlLG4pO3JldHVybiBpKmkrcipyfSx0LmRpc3RhbmNlU3F1YXJlZFRvRmFyRWRnZT1mdW5jdGlvbihlLG4pe3ZhciBpPXQuYWJzb2x1dGVEaXN0YW5jZVRvRmFyRWRnZVgoZSxuKSxyPXQuYWJzb2x1dGVEaXN0YW5jZVRvRmFyRWRnZVkoZSxuKTtyZXR1cm4gaSppK3Iqcn0sdC5wcm90b3R5cGUuYXJlYT1mdW5jdGlvbigpe3JldHVybiBudWxsPT10aGlzLmFyZWFDYWNoZWQmJih0aGlzLmFyZWFDYWNoZWQ9KHRoaXMueGgtdGhpcy54bCkqKHRoaXMueWgtdGhpcy55bCkpLHRoaXMuYXJlYUNhY2hlZH0sdC5wcm90b3R5cGUuY29udGFpbnM9ZnVuY3Rpb24odCl7cmV0dXJuIHRoaXMueGw8PXQueCYmdGhpcy54aD49dC54JiZ0aGlzLnlsPD10LnkmJnRoaXMueWg+PXQueX0sdH0pKCk7ZS5SVHJlZUJvdW5kcz1sfSkpLFFmdD1iZSgoZnVuY3Rpb24odCxlKXsoZnVuY3Rpb24oKXt2YXIgbixpPSJFeHBlY3RlZCBhIGZ1bmN0aW9uIixyPSJfX2xvZGFzaF9oYXNoX3VuZGVmaW5lZF9fIixvPSJfX2xvZGFzaF9wbGFjZWhvbGRlcl9fIixhPTMyLHM9MTI4LGw9MS8wLGM9OTAwNzE5OTI1NDc0MDk5MSx1PU5hTixoPTQyOTQ5NjcyOTUsZD1bWyJhcnkiLHNdLFsiYmluZCIsMV0sWyJiaW5kS2V5IiwyXSxbImN1cnJ5Iiw4XSxbImN1cnJ5UmlnaHQiLDE2XSxbImZsaXAiLDUxMl0sWyJwYXJ0aWFsIixhXSxbInBhcnRpYWxSaWdodCIsNjRdLFsicmVhcmciLDI1Nl1dLHA9IltvYmplY3QgQXJndW1lbnRzXSIsZj0iW29iamVjdCBBcnJheV0iLG09IltvYmplY3QgQm9vbGVhbl0iLGc9IltvYmplY3QgRGF0ZV0iLF89IltvYmplY3QgRXJyb3JdIix5PSJbb2JqZWN0IEZ1bmN0aW9uXSIsdj0iW29iamVjdCBHZW5lcmF0b3JGdW5jdGlvbl0iLGI9IltvYmplY3QgTWFwXSIseD0iW29iamVjdCBOdW1iZXJdIix3PSJbb2JqZWN0IE9iamVjdF0iLFM9IltvYmplY3QgUHJvbWlzZV0iLE09IltvYmplY3QgUmVnRXhwXSIsRT0iW29iamVjdCBTZXRdIixUPSJbb2JqZWN0IFN0cmluZ10iLEE9IltvYmplY3QgU3ltYm9sXSIsQz0iW29iamVjdCBXZWFrTWFwXSIsaz0iW29iamVjdCBBcnJheUJ1ZmZlcl0iLEw9IltvYmplY3QgRGF0YVZpZXddIixQPSJbb2JqZWN0IEZsb2F0MzJBcnJheV0iLEk9IltvYmplY3QgRmxvYXQ2NEFycmF5XSIsTj0iW29iamVjdCBJbnQ4QXJyYXldIixPPSJbb2JqZWN0IEludDE2QXJyYXldIixSPSJbb2JqZWN0IEludDMyQXJyYXldIix6PSJbb2JqZWN0IFVpbnQ4QXJyYXldIixEPSJbb2JqZWN0IFVpbnQ4Q2xhbXBlZEFycmF5XSIsQj0iW29iamVjdCBVaW50MTZBcnJheV0iLEg9IltvYmplY3QgVWludDMyQXJyYXldIixGPS9cYl9fcCBcKz0gJyc7L2csVj0vXGIoX19wIFwrPSkgJycgXCsvZyxqPS8oX19lXCguKj9cKXxcYl9fdFwpKSBcK1xuJyc7L2csVT0vJig/OmFtcHxsdHxndHxxdW90fCMzOSk7L2csRz0vWyY8PiInXS9nLFc9UmVnRXhwKFUuc291cmNlKSxxPVJlZ0V4cChHLnNvdXJjZSksWT0vPCUtKFtcc1xTXSs/KSU+L2csWD0vPCUoW1xzXFNdKz8pJT4vZywkPS88JT0oW1xzXFNdKz8pJT4vZyxLPS9cLnxcWyg/OlteW1xdXSp8KFsiJ10pKD86KD8hXDEpW15cXF18XFwuKSo/XDEpXF0vLFo9L15cdyokLyxKPS9bXi5bXF1dK3xcWyg/OigtP1xkKyg/OlwuXGQrKT8pfChbIiddKSgoPzooPyFcMilbXlxcXXxcXC4pKj8pXDIpXF18KD89KD86XC58XFtcXSkoPzpcLnxcW1xdfCQpKS9nLFE9L1tcXF4kLiorPygpW1xde318XS9nLHR0PVJlZ0V4cChRLnNvdXJjZSksZXQ9L15ccyt8XHMrJC9nLG50PS9eXHMrLyxpdD0vXHMrJC8scnQ9L1x7KD86XG5cL1wqIFxbd3JhcHBlZCB3aXRoIC4rXF0gXCpcLyk/XG4/LyxvdD0vXHtcblwvXCogXFt3cmFwcGVkIHdpdGggKC4rKVxdIFwqLyxhdD0vLD8gJiAvLHN0PS9bXlx4MDAtXHgyZlx4M2EtXHg0MFx4NWItXHg2MFx4N2ItXHg3Zl0rL2csbHQ9L1xcKFxcKT8vZyxjdD0vXCRceyhbXlxcfV0qKD86XFwuW15cXH1dKikqKVx9L2csdXQ9L1x3KiQvLGh0PS9eWy0rXTB4WzAtOWEtZl0rJC9pLGR0PS9eMGJbMDFdKyQvaSxwdD0vXlxbb2JqZWN0IC4rP0NvbnN0cnVjdG9yXF0kLyxmdD0vXjBvWzAtN10rJC9pLG10PS9eKD86MHxbMS05XVxkKikkLyxndD0vW1x4YzAtXHhkNlx4ZDgtXHhmNlx4ZjgtXHhmZlx1MDEwMC1cdTAxN2ZdL2csX3Q9LygkXikvLHl0PS9bJ1xuXHJcdTIwMjhcdTIwMjlcXF0vZyx2dD0iXFx1MDMwMC1cXHUwMzZmXFx1ZmUyMC1cXHVmZTJmXFx1MjBkMC1cXHUyMGZmIixidD0iYS16XFx4ZGYtXFx4ZjZcXHhmOC1cXHhmZiIseHQ9IkEtWlxceGMwLVxceGQ2XFx4ZDgtXFx4ZGUiLHd0PSJcXHhhY1xceGIxXFx4ZDdcXHhmN1xceDAwLVxceDJmXFx4M2EtXFx4NDBcXHg1Yi1cXHg2MFxceDdiLVxceGJmXFx1MjAwMC1cXHUyMDZmIFxcdFxceDBiXFxmXFx4YTBcXHVmZWZmXFxuXFxyXFx1MjAyOFxcdTIwMjlcXHUxNjgwXFx1MTgwZVxcdTIwMDBcXHUyMDAxXFx1MjAwMlxcdTIwMDNcXHUyMDA0XFx1MjAwNVxcdTIwMDZcXHUyMDA3XFx1MjAwOFxcdTIwMDlcXHUyMDBhXFx1MjAyZlxcdTIwNWZcXHUzMDAwIixTdD0iWyIrd3QrIl0iLE10PSJbIit2dCsiXSIsRXQ9IlxcZCsiLFR0PSJbIitidCsiXSIsQXQ9IlteXFx1ZDgwMC1cXHVkZmZmIit3dCtFdCsiXFx1MjcwMC1cXHUyN2JmIitidCt4dCsiXSIsQ3Q9IlxcdWQ4M2NbXFx1ZGZmYi1cXHVkZmZmXSIsa3Q9IlteXFx1ZDgwMC1cXHVkZmZmXSIsTHQ9Iig/OlxcdWQ4M2NbXFx1ZGRlNi1cXHVkZGZmXSl7Mn0iLFB0PSJbXFx1ZDgwMC1cXHVkYmZmXVtcXHVkYzAwLVxcdWRmZmZdIixJdD0iWyIreHQrIl0iLE50PSIoPzoiK1R0KyJ8IitBdCsiKSIsT3Q9Iig/OiIrSXQrInwiK0F0KyIpIixSdD0iKD86WyfigJldKD86ZHxsbHxtfHJlfHN8dHx2ZSkpPyIsenQ9Iig/Olsn4oCZXSg/OkR8TEx8TXxSRXxTfFR8VkUpKT8iLER0PSIoPzoiK010KyJ8IitDdCsiKT8iLEJ0PSJbXFx1ZmUwZVxcdWZlMGZdPyIsSHQ9QnQrRHQrIig/OlxcdTIwMGQoPzoiK1trdCxMdCxQdF0uam9pbigifCIpKyIpIitCdCtEdCsiKSoiLEZ0PSIoPzoiK1siW1xcdTI3MDAtXFx1MjdiZl0iLEx0LFB0XS5qb2luKCJ8IikrIikiK0h0LFZ0PSIoPzoiK1trdCtNdCsiPyIsTXQsTHQsUHQsIltcXHVkODAwLVxcdWRmZmZdIl0uam9pbigifCIpKyIpIixqdD1SZWdFeHAoIlsn4oCZXSIsImciKSxVdD1SZWdFeHAoTXQsImciKSxHdD1SZWdFeHAoQ3QrIig/PSIrQ3QrIil8IitWdCtIdCwiZyIpLFd0PVJlZ0V4cChbSXQrIj8iK1R0KyIrIitSdCsiKD89IitbU3QsSXQsIiQiXS5qb2luKCJ8IikrIikiLE90KyIrIit6dCsiKD89IitbU3QsSXQrTnQsIiQiXS5qb2luKCJ8IikrIikiLEl0KyI/IitOdCsiKyIrUnQsSXQrIisiK3p0LCJcXGQqKD86MVNUfDJORHwzUkR8KD8hWzEyM10pXFxkVEgpKD89XFxifFthLXpfXSkiLCJcXGQqKD86MXN0fDJuZHwzcmR8KD8hWzEyM10pXFxkdGgpKD89XFxifFtBLVpfXSkiLEV0LEZ0XS5qb2luKCJ8IiksImciKSxxdD1SZWdFeHAoIltcXHUyMDBkXFx1ZDgwMC1cXHVkZmZmIit2dCsiXFx1ZmUwZVxcdWZlMGZdIiksWXQ9L1thLXpdW0EtWl18W0EtWl17Mn1bYS16XXxbMC05XVthLXpBLVpdfFthLXpBLVpdWzAtOV18W15hLXpBLVowLTkgXS8sWHQ9WyJBcnJheSIsIkJ1ZmZlciIsIkRhdGFWaWV3IiwiRGF0ZSIsIkVycm9yIiwiRmxvYXQzMkFycmF5IiwiRmxvYXQ2NEFycmF5IiwiRnVuY3Rpb24iLCJJbnQ4QXJyYXkiLCJJbnQxNkFycmF5IiwiSW50MzJBcnJheSIsIk1hcCIsIk1hdGgiLCJPYmplY3QiLCJQcm9taXNlIiwiUmVnRXhwIiwiU2V0IiwiU3RyaW5nIiwiU3ltYm9sIiwiVHlwZUVycm9yIiwiVWludDhBcnJheSIsIlVpbnQ4Q2xhbXBlZEFycmF5IiwiVWludDE2QXJyYXkiLCJVaW50MzJBcnJheSIsIldlYWtNYXAiLCJfIiwiY2xlYXJUaW1lb3V0IiwiaXNGaW5pdGUiLCJwYXJzZUludCIsInNldFRpbWVvdXQiXSwkdD0tMSxLdD17fTtLdFtQXT1LdFtJXT1LdFtOXT1LdFtPXT1LdFtSXT1LdFt6XT1LdFtEXT1LdFtCXT1LdFtIXT0hMCxLdFtwXT1LdFtmXT1LdFtrXT1LdFttXT1LdFtMXT1LdFtnXT1LdFtfXT1LdFt5XT1LdFtiXT1LdFt4XT1LdFt3XT1LdFtNXT1LdFtFXT1LdFtUXT1LdFtDXT0hMTt2YXIgWnQ9e307WnRbcF09WnRbZl09WnRba109WnRbTF09WnRbbV09WnRbZ109WnRbUF09WnRbSV09WnRbTl09WnRbT109WnRbUl09WnRbYl09WnRbeF09WnRbd109WnRbTV09WnRbRV09WnRbVF09WnRbQV09WnRbel09WnRbRF09WnRbQl09WnRbSF09ITAsWnRbX109WnRbeV09WnRbQ109ITE7dmFyIEp0PXsiXFwiOiJcXCIsIiciOiInIiwiXG4iOiJuIiwiXHIiOiJyIiwiXHUyMDI4IjoidTIwMjgiLCJcdTIwMjkiOiJ1MjAyOSJ9LFF0PXBhcnNlRmxvYXQsdGU9cGFyc2VJbnQsZWU9Im9iamVjdCI9PXR5cGVvZiB2ZSYmdmUmJnZlLk9iamVjdD09PU9iamVjdCYmdmUsbmU9Im9iamVjdCI9PXR5cGVvZiBzZWxmJiZzZWxmJiZzZWxmLk9iamVjdD09PU9iamVjdCYmc2VsZixpZT1lZXx8bmV8fEZ1bmN0aW9uKCJyZXR1cm4gdGhpcyIpKCkscmU9ZSYmIWUubm9kZVR5cGUmJmUsb2U9cmUmJnQmJiF0Lm5vZGVUeXBlJiZ0LGFlPW9lJiZvZS5leHBvcnRzPT09cmUsc2U9YWUmJmVlLnByb2Nlc3MsbGU9KGZ1bmN0aW9uKCl7dHJ5e3JldHVybiBvZSYmb2UucmVxdWlyZSYmb2UucmVxdWlyZSgidXRpbCIpLnR5cGVzfHxzZSYmc2UuYmluZGluZyYmc2UuYmluZGluZygidXRpbCIpfWNhdGNoKHQpe319KSgpLGNlPWxlJiZsZS5pc0FycmF5QnVmZmVyLHVlPWxlJiZsZS5pc0RhdGUsaGU9bGUmJmxlLmlzTWFwLGRlPWxlJiZsZS5pc1JlZ0V4cCxwZT1sZSYmbGUuaXNTZXQsZmU9bGUmJmxlLmlzVHlwZWRBcnJheTtmdW5jdGlvbiBtZSh0LGUsbil7c3dpdGNoKG4ubGVuZ3RoKXtjYXNlIDA6cmV0dXJuIHQuY2FsbChlKTtjYXNlIDE6cmV0dXJuIHQuY2FsbChlLG5bMF0pO2Nhc2UgMjpyZXR1cm4gdC5jYWxsKGUsblswXSxuWzFdKTtjYXNlIDM6cmV0dXJuIHQuY2FsbChlLG5bMF0sblsxXSxuWzJdKX1yZXR1cm4gdC5hcHBseShlLG4pfWZ1bmN0aW9uIGdlKHQsZSxuLGkpe2Zvcih2YXIgcj0tMSxvPW51bGw9PXQ/MDp0Lmxlbmd0aDsrK3I8bzspe3ZhciBhPXRbcl07ZShpLGEsbihhKSx0KX1yZXR1cm4gaX1mdW5jdGlvbiBfZSh0LGUpe2Zvcih2YXIgbj0tMSxpPW51bGw9PXQ/MDp0Lmxlbmd0aDsrK248aSYmITEhPT1lKHRbbl0sbix0KTspO3JldHVybiB0fWZ1bmN0aW9uIHllKHQsZSl7Zm9yKHZhciBuPW51bGw9PXQ/MDp0Lmxlbmd0aDtuLS0mJiExIT09ZSh0W25dLG4sdCk7KTtyZXR1cm4gdH1mdW5jdGlvbiBiZSh0LGUpe2Zvcih2YXIgbj0tMSxpPW51bGw9PXQ/MDp0Lmxlbmd0aDsrK248aTspaWYoIWUodFtuXSxuLHQpKXJldHVybiExO3JldHVybiEwfWZ1bmN0aW9uIHhlKHQsZSl7Zm9yKHZhciBuPS0xLGk9bnVsbD09dD8wOnQubGVuZ3RoLHI9MCxvPVtdOysrbjxpOyl7dmFyIGE9dFtuXTtlKGEsbix0KSYmKG9bcisrXT1hKX1yZXR1cm4gb31mdW5jdGlvbiB3ZSh0LGUpe3JldHVybiEobnVsbD09dHx8IXQubGVuZ3RoKSYmSWUodCxlLDApPi0xfWZ1bmN0aW9uIFNlKHQsZSxuKXtmb3IodmFyIGk9LTEscj1udWxsPT10PzA6dC5sZW5ndGg7KytpPHI7KWlmKG4oZSx0W2ldKSlyZXR1cm4hMDtyZXR1cm4hMX1mdW5jdGlvbiBNZSh0LGUpe2Zvcih2YXIgbj0tMSxpPW51bGw9PXQ/MDp0Lmxlbmd0aCxyPUFycmF5KGkpOysrbjxpOylyW25dPWUodFtuXSxuLHQpO3JldHVybiByfWZ1bmN0aW9uIEVlKHQsZSl7Zm9yKHZhciBuPS0xLGk9ZS5sZW5ndGgscj10Lmxlbmd0aDsrK248aTspdFtyK25dPWVbbl07cmV0dXJuIHR9ZnVuY3Rpb24gVGUodCxlLG4saSl7dmFyIHI9LTEsbz1udWxsPT10PzA6dC5sZW5ndGg7Zm9yKGkmJm8mJihuPXRbKytyXSk7KytyPG87KW49ZShuLHRbcl0scix0KTtyZXR1cm4gbn1mdW5jdGlvbiBBZSh0LGUsbixpKXt2YXIgcj1udWxsPT10PzA6dC5sZW5ndGg7Zm9yKGkmJnImJihuPXRbLS1yXSk7ci0tOyluPWUobix0W3JdLHIsdCk7cmV0dXJuIG59ZnVuY3Rpb24gQ2UodCxlKXtmb3IodmFyIG49LTEsaT1udWxsPT10PzA6dC5sZW5ndGg7KytuPGk7KWlmKGUodFtuXSxuLHQpKXJldHVybiEwO3JldHVybiExfXZhciBrZT16ZSgibGVuZ3RoIik7ZnVuY3Rpb24gTGUodCxlLG4pe3ZhciBpO3JldHVybiBuKHQsKGZ1bmN0aW9uKHQsbixyKXtpZihlKHQsbixyKSlyZXR1cm4gaT1uLCExfSkpLGl9ZnVuY3Rpb24gUGUodCxlLG4saSl7Zm9yKHZhciByPXQubGVuZ3RoLG89bisoaT8xOi0xKTtpP28tLTorK288cjspaWYoZSh0W29dLG8sdCkpcmV0dXJuIG87cmV0dXJuLTF9ZnVuY3Rpb24gSWUodCxlLG4pe3JldHVybiBlPT1lPyhmdW5jdGlvbiBpKHQsZSxuKXtmb3IodmFyIGk9bi0xLHI9dC5sZW5ndGg7KytpPHI7KWlmKHRbaV09PT1lKXJldHVybiBpO3JldHVybi0xfSkodCxlLG4pOlBlKHQsT2Usbil9ZnVuY3Rpb24gTmUodCxlLG4saSl7Zm9yKHZhciByPW4tMSxvPXQubGVuZ3RoOysrcjxvOylpZihpKHRbcl0sZSkpcmV0dXJuIHI7cmV0dXJuLTF9ZnVuY3Rpb24gT2UodCl7cmV0dXJuIHQhPXR9ZnVuY3Rpb24gUmUodCxlKXt2YXIgbj1udWxsPT10PzA6dC5sZW5ndGg7cmV0dXJuIG4/SGUodCxlKS9uOnV9ZnVuY3Rpb24gemUodCl7cmV0dXJuIGZ1bmN0aW9uKGUpe3JldHVybiBudWxsPT1lP246ZVt0XX19ZnVuY3Rpb24gRGUodCl7cmV0dXJuIGZ1bmN0aW9uKGUpe3JldHVybiBudWxsPT10P246dFtlXX19ZnVuY3Rpb24gQmUodCxlLG4saSxyKXtyZXR1cm4gcih0LChmdW5jdGlvbih0LHIsbyl7bj1pPyhpPSExLHQpOmUobix0LHIsbyl9KSksbn1mdW5jdGlvbiBIZSh0LGUpe2Zvcih2YXIgaSxyPS0xLG89dC5sZW5ndGg7KytyPG87KXt2YXIgYT1lKHRbcl0pO2EhPT1uJiYoaT1pPT09bj9hOmkrYSl9cmV0dXJuIGl9ZnVuY3Rpb24gRmUodCxlKXtmb3IodmFyIG49LTEsaT1BcnJheSh0KTsrK248dDspaVtuXT1lKG4pO3JldHVybiBpfWZ1bmN0aW9uIFZlKHQpe3JldHVybiBmdW5jdGlvbihlKXtyZXR1cm4gdChlKX19ZnVuY3Rpb24gamUodCxlKXtyZXR1cm4gTWUoZSwoZnVuY3Rpb24oZSl7cmV0dXJuIHRbZV19KSl9ZnVuY3Rpb24gVWUodCxlKXtyZXR1cm4gdC5oYXMoZSl9ZnVuY3Rpb24gR2UodCxlKXtmb3IodmFyIG49LTEsaT10Lmxlbmd0aDsrK248aSYmSWUoZSx0W25dLDApPi0xOyk7cmV0dXJuIG59ZnVuY3Rpb24gV2UodCxlKXtmb3IodmFyIG49dC5sZW5ndGg7bi0tJiZJZShlLHRbbl0sMCk+LTE7KTtyZXR1cm4gbn1mdW5jdGlvbiBxZSh0LGUpe2Zvcih2YXIgbj10Lmxlbmd0aCxpPTA7bi0tOyl0W25dPT09ZSYmKytpO3JldHVybiBpfXZhciBZZT1EZSh7IsOAIjoiQSIsIsOBIjoiQSIsIsOCIjoiQSIsIsODIjoiQSIsIsOEIjoiQSIsIsOFIjoiQSIsIsOgIjoiYSIsIsOhIjoiYSIsIsOiIjoiYSIsIsOjIjoiYSIsIsOkIjoiYSIsIsOlIjoiYSIsIsOHIjoiQyIsIsOnIjoiYyIsIsOQIjoiRCIsIsOwIjoiZCIsIsOIIjoiRSIsIsOJIjoiRSIsIsOKIjoiRSIsIsOLIjoiRSIsIsOoIjoiZSIsIsOpIjoiZSIsIsOqIjoiZSIsIsOrIjoiZSIsIsOMIjoiSSIsIsONIjoiSSIsIsOOIjoiSSIsIsOPIjoiSSIsIsOsIjoiaSIsIsOtIjoiaSIsIsOuIjoiaSIsIsOvIjoiaSIsIsORIjoiTiIsIsOxIjoibiIsIsOSIjoiTyIsIsOTIjoiTyIsIsOUIjoiTyIsIsOVIjoiTyIsIsOWIjoiTyIsIsOYIjoiTyIsIsOyIjoibyIsIsOzIjoibyIsIsO0IjoibyIsIsO1IjoibyIsIsO2IjoibyIsIsO4IjoibyIsIsOZIjoiVSIsIsOaIjoiVSIsIsObIjoiVSIsIsOcIjoiVSIsIsO5IjoidSIsIsO6IjoidSIsIsO7IjoidSIsIsO8IjoidSIsIsOdIjoiWSIsIsO9IjoieSIsIsO/IjoieSIsIsOGIjoiQWUiLCLDpiI6ImFlIiwiw54iOiJUaCIsIsO+IjoidGgiLCLDnyI6InNzIiwixIAiOiJBIiwixIIiOiJBIiwixIQiOiJBIiwixIEiOiJhIiwixIMiOiJhIiwixIUiOiJhIiwixIYiOiJDIiwixIgiOiJDIiwixIoiOiJDIiwixIwiOiJDIiwixIciOiJjIiwixIkiOiJjIiwixIsiOiJjIiwixI0iOiJjIiwixI4iOiJEIiwixJAiOiJEIiwixI8iOiJkIiwixJEiOiJkIiwixJIiOiJFIiwixJQiOiJFIiwixJYiOiJFIiwixJgiOiJFIiwixJoiOiJFIiwixJMiOiJlIiwixJUiOiJlIiwixJciOiJlIiwixJkiOiJlIiwixJsiOiJlIiwixJwiOiJHIiwixJ4iOiJHIiwixKAiOiJHIiwixKIiOiJHIiwixJ0iOiJnIiwixJ8iOiJnIiwixKEiOiJnIiwixKMiOiJnIiwixKQiOiJIIiwixKYiOiJIIiwixKUiOiJoIiwixKciOiJoIiwixKgiOiJJIiwixKoiOiJJIiwixKwiOiJJIiwixK4iOiJJIiwixLAiOiJJIiwixKkiOiJpIiwixKsiOiJpIiwixK0iOiJpIiwixK8iOiJpIiwixLEiOiJpIiwixLQiOiJKIiwixLUiOiJqIiwixLYiOiJLIiwixLciOiJrIiwixLgiOiJrIiwixLkiOiJMIiwixLsiOiJMIiwixL0iOiJMIiwixL8iOiJMIiwixYEiOiJMIiwixLoiOiJsIiwixLwiOiJsIiwixL4iOiJsIiwixYAiOiJsIiwixYIiOiJsIiwixYMiOiJOIiwixYUiOiJOIiwixYciOiJOIiwixYoiOiJOIiwixYQiOiJuIiwixYYiOiJuIiwixYgiOiJuIiwixYsiOiJuIiwixYwiOiJPIiwixY4iOiJPIiwixZAiOiJPIiwixY0iOiJvIiwixY8iOiJvIiwixZEiOiJvIiwixZQiOiJSIiwixZYiOiJSIiwixZgiOiJSIiwixZUiOiJyIiwixZciOiJyIiwixZkiOiJyIiwixZoiOiJTIiwixZwiOiJTIiwixZ4iOiJTIiwixaAiOiJTIiwixZsiOiJzIiwixZ0iOiJzIiwixZ8iOiJzIiwixaEiOiJzIiwixaIiOiJUIiwixaQiOiJUIiwixaYiOiJUIiwixaMiOiJ0IiwixaUiOiJ0IiwixaciOiJ0IiwixagiOiJVIiwixaoiOiJVIiwixawiOiJVIiwixa4iOiJVIiwixbAiOiJVIiwixbIiOiJVIiwixakiOiJ1IiwixasiOiJ1Iiwixa0iOiJ1Iiwixa8iOiJ1IiwixbEiOiJ1IiwixbMiOiJ1IiwixbQiOiJXIiwixbUiOiJ3IiwixbYiOiJZIiwixbciOiJ5IiwixbgiOiJZIiwixbkiOiJaIiwixbsiOiJaIiwixb0iOiJaIiwixboiOiJ6IiwixbwiOiJ6Iiwixb4iOiJ6IiwixLIiOiJJSiIsIsSzIjoiaWoiLCLFkiI6Ik9lIiwixZMiOiJvZSIsIsWJIjoiJ24iLCLFvyI6InMifSksWGU9RGUoeyImIjoiJmFtcDsiLCI8IjoiJmx0OyIsIj4iOiImZ3Q7IiwnIic6IiZxdW90OyIsIiciOiImIzM5OyJ9KTtmdW5jdGlvbiAkZSh0KXtyZXR1cm4iXFwiK0p0W3RdfWZ1bmN0aW9uIEtlKHQpe3JldHVybiBxdC50ZXN0KHQpfWZ1bmN0aW9uIFplKHQpe3ZhciBlPS0xLG49QXJyYXkodC5zaXplKTtyZXR1cm4gdC5mb3JFYWNoKChmdW5jdGlvbih0LGkpe25bKytlXT1baSx0XX0pKSxufWZ1bmN0aW9uIEplKHQsZSl7cmV0dXJuIGZ1bmN0aW9uKG4pe3JldHVybiB0KGUobikpfX1mdW5jdGlvbiBRZSh0LGUpe2Zvcih2YXIgbj0tMSxpPXQubGVuZ3RoLHI9MCxhPVtdOysrbjxpOyl7dmFyIHM9dFtuXTtzIT09ZSYmcyE9PW98fCh0W25dPW8sYVtyKytdPW4pfXJldHVybiBhfWZ1bmN0aW9uIHRuKHQpe3ZhciBlPS0xLG49QXJyYXkodC5zaXplKTtyZXR1cm4gdC5mb3JFYWNoKChmdW5jdGlvbih0KXtuWysrZV09dH0pKSxufWZ1bmN0aW9uIGVuKHQpe3ZhciBlPS0xLG49QXJyYXkodC5zaXplKTtyZXR1cm4gdC5mb3JFYWNoKChmdW5jdGlvbih0KXtuWysrZV09W3QsdF19KSksbn1mdW5jdGlvbiBubih0KXtyZXR1cm4gS2UodCk/KGZ1bmN0aW9uIGUodCl7Zm9yKHZhciBlPUd0Lmxhc3RJbmRleD0wO0d0LnRlc3QodCk7KSsrZTtyZXR1cm4gZX0pKHQpOmtlKHQpfWZ1bmN0aW9uIHJuKHQpe3JldHVybiBLZSh0KT8oZnVuY3Rpb24gZSh0KXtyZXR1cm4gdC5tYXRjaChHdCl8fFtdfSkodCk6KGZ1bmN0aW9uIG4odCl7cmV0dXJuIHQuc3BsaXQoIiIpfSkodCl9dmFyIG9uPURlKHsiJmFtcDsiOiImIiwiJmx0OyI6IjwiLCImZ3Q7IjoiPiIsIiZxdW90OyI6JyInLCImIzM5OyI6IicifSksYW49KGZ1bmN0aW9uIHQoZSl7dmFyIHZ0LGJ0PShlPW51bGw9PWU/aWU6YW4uZGVmYXVsdHMoaWUuT2JqZWN0KCksZSxhbi5waWNrKGllLFh0KSkpLkFycmF5LHh0PWUuRGF0ZSx3dD1lLkVycm9yLFN0PWUuRnVuY3Rpb24sTXQ9ZS5NYXRoLEV0PWUuT2JqZWN0LFR0PWUuUmVnRXhwLEF0PWUuU3RyaW5nLEN0PWUuVHlwZUVycm9yLGt0PWJ0LnByb3RvdHlwZSxMdD1FdC5wcm90b3R5cGUsUHQ9ZVsiX19jb3JlLWpzX3NoYXJlZF9fIl0sSXQ9U3QucHJvdG90eXBlLnRvU3RyaW5nLE50PUx0Lmhhc093blByb3BlcnR5LE90PTAsUnQ9KHZ0PS9bXi5dKyQvLmV4ZWMoUHQmJlB0LmtleXMmJlB0LmtleXMuSUVfUFJPVE98fCIiKSk/IlN5bWJvbChzcmMpXzEuIit2dDoiIix6dD1MdC50b1N0cmluZyxEdD1JdC5jYWxsKEV0KSxCdD1pZS5fLEh0PVR0KCJeIitJdC5jYWxsKE50KS5yZXBsYWNlKFEsIlxcJCYiKS5yZXBsYWNlKC9oYXNPd25Qcm9wZXJ0eXwoZnVuY3Rpb24pLio/KD89XFxcKCl8IGZvciAuKz8oPz1cXFxdKS9nLCIkMS4qPyIpKyIkIiksRnQ9YWU/ZS5CdWZmZXI6bixWdD1lLlN5bWJvbCxHdD1lLlVpbnQ4QXJyYXkscXQ9RnQ/RnQuYWxsb2NVbnNhZmU6bixKdD1KZShFdC5nZXRQcm90b3R5cGVPZixFdCksZWU9RXQuY3JlYXRlLG5lPUx0LnByb3BlcnR5SXNFbnVtZXJhYmxlLHJlPWt0LnNwbGljZSxvZT1WdD9WdC5pc0NvbmNhdFNwcmVhZGFibGU6bixzZT1WdD9WdC5pdGVyYXRvcjpuLGxlPVZ0P1Z0LnRvU3RyaW5nVGFnOm4sdmU9KGZ1bmN0aW9uKCl7dHJ5e3ZhciB0PUxvKEV0LCJkZWZpbmVQcm9wZXJ0eSIpO3JldHVybiB0KHt9LCIiLHt9KSx0fWNhdGNoKHQpe319KSgpLGtlPWUuY2xlYXJUaW1lb3V0IT09aWUuY2xlYXJUaW1lb3V0JiZlLmNsZWFyVGltZW91dCxEZT14dCYmeHQubm93IT09aWUuRGF0ZS5ub3cmJnh0Lm5vdyxzbj1lLnNldFRpbWVvdXQhPT1pZS5zZXRUaW1lb3V0JiZlLnNldFRpbWVvdXQsbG49TXQuY2VpbCxjbj1NdC5mbG9vcix1bj1FdC5nZXRPd25Qcm9wZXJ0eVN5bWJvbHMsaG49RnQ/RnQuaXNCdWZmZXI6bixkbj1lLmlzRmluaXRlLHBuPWt0LmpvaW4sZm49SmUoRXQua2V5cyxFdCksbW49TXQubWF4LGduPU10Lm1pbixfbj14dC5ub3cseW49ZS5wYXJzZUludCx2bj1NdC5yYW5kb20sYm49a3QucmV2ZXJzZSx4bj1MbyhlLCJEYXRhVmlldyIpLHduPUxvKGUsIk1hcCIpLFNuPUxvKGUsIlByb21pc2UiKSxNbj1MbyhlLCJTZXQiKSxFbj1MbyhlLCJXZWFrTWFwIiksVG49TG8oRXQsImNyZWF0ZSIpLEFuPUVuJiZuZXcgRW4sQ249e30sa249cmEoeG4pLExuPXJhKHduKSxQbj1yYShTbiksSW49cmEoTW4pLE5uPXJhKEVuKSxPbj1WdD9WdC5wcm90b3R5cGU6bixSbj1Pbj9Pbi52YWx1ZU9mOm4sem49T24/T24udG9TdHJpbmc6bjtmdW5jdGlvbiBEbih0KXtpZihTcyh0KSYmIXVzKHQpJiYhKHQgaW5zdGFuY2VvZiBWbikpe2lmKHQgaW5zdGFuY2VvZiBGbilyZXR1cm4gdDtpZihOdC5jYWxsKHQsIl9fd3JhcHBlZF9fIikpcmV0dXJuIG9hKHQpfXJldHVybiBuZXcgRm4odCl9dmFyIEJuPShmdW5jdGlvbigpe2Z1bmN0aW9uIHQoKXt9cmV0dXJuIGZ1bmN0aW9uKGUpe2lmKCF3cyhlKSlyZXR1cm57fTtpZihlZSlyZXR1cm4gZWUoZSk7dC5wcm90b3R5cGU9ZTt2YXIgaT1uZXcgdDtyZXR1cm4gdC5wcm90b3R5cGU9bixpfX0pKCk7ZnVuY3Rpb24gSG4oKXt9ZnVuY3Rpb24gRm4odCxlKXt0aGlzLl9fd3JhcHBlZF9fPXQsdGhpcy5fX2FjdGlvbnNfXz1bXSx0aGlzLl9fY2hhaW5fXz0hIWUsdGhpcy5fX2luZGV4X189MCx0aGlzLl9fdmFsdWVzX189bn1mdW5jdGlvbiBWbih0KXt0aGlzLl9fd3JhcHBlZF9fPXQsdGhpcy5fX2FjdGlvbnNfXz1bXSx0aGlzLl9fZGlyX189MSx0aGlzLl9fZmlsdGVyZWRfXz0hMSx0aGlzLl9faXRlcmF0ZWVzX189W10sdGhpcy5fX3Rha2VDb3VudF9fPWgsdGhpcy5fX3ZpZXdzX189W119ZnVuY3Rpb24gam4odCl7dmFyIGU9LTEsbj1udWxsPT10PzA6dC5sZW5ndGg7Zm9yKHRoaXMuY2xlYXIoKTsrK2U8bjspe3ZhciBpPXRbZV07dGhpcy5zZXQoaVswXSxpWzFdKX19ZnVuY3Rpb24gVW4odCl7dmFyIGU9LTEsbj1udWxsPT10PzA6dC5sZW5ndGg7Zm9yKHRoaXMuY2xlYXIoKTsrK2U8bjspe3ZhciBpPXRbZV07dGhpcy5zZXQoaVswXSxpWzFdKX19ZnVuY3Rpb24gR24odCl7dmFyIGU9LTEsbj1udWxsPT10PzA6dC5sZW5ndGg7Zm9yKHRoaXMuY2xlYXIoKTsrK2U8bjspe3ZhciBpPXRbZV07dGhpcy5zZXQoaVswXSxpWzFdKX19ZnVuY3Rpb24gV24odCl7dmFyIGU9LTEsbj1udWxsPT10PzA6dC5sZW5ndGg7Zm9yKHRoaXMuX19kYXRhX189bmV3IEduOysrZTxuOyl0aGlzLmFkZCh0W2VdKX1mdW5jdGlvbiBxbih0KXt2YXIgZT10aGlzLl9fZGF0YV9fPW5ldyBVbih0KTt0aGlzLnNpemU9ZS5zaXplfWZ1bmN0aW9uIFluKHQsZSl7dmFyIG49dXModCksaT0hbiYmY3ModCkscj0hbiYmIWkmJm1zKHQpLG89IW4mJiFpJiYhciYmT3ModCksYT1ufHxpfHxyfHxvLHM9YT9GZSh0Lmxlbmd0aCxBdCk6W10sbD1zLmxlbmd0aDtmb3IodmFyIGMgaW4gdCkhZSYmIU50LmNhbGwodCxjKXx8YSYmKCJsZW5ndGgiPT1jfHxyJiYoIm9mZnNldCI9PWN8fCJwYXJlbnQiPT1jKXx8byYmKCJidWZmZXIiPT1jfHwiYnl0ZUxlbmd0aCI9PWN8fCJieXRlT2Zmc2V0Ij09Yyl8fERvKGMsbCkpfHxzLnB1c2goYyk7cmV0dXJuIHN9ZnVuY3Rpb24gWG4odCl7dmFyIGU9dC5sZW5ndGg7cmV0dXJuIGU/dFtkcigwLGUtMSldOm59ZnVuY3Rpb24gJG4odCxlKXtyZXR1cm4gdGEoWXIodCkscmkoZSwwLHQubGVuZ3RoKSl9ZnVuY3Rpb24gS24odCl7cmV0dXJuIHRhKFlyKHQpKX1mdW5jdGlvbiBabih0LGUsaSl7KGkhPT1uJiYhYXModFtlXSxpKXx8aT09PW4mJiEoZSBpbiB0KSkmJm5pKHQsZSxpKX1mdW5jdGlvbiBKbih0LGUsaSl7dmFyIHI9dFtlXTtOdC5jYWxsKHQsZSkmJmFzKHIsaSkmJihpIT09bnx8ZSBpbiB0KXx8bmkodCxlLGkpfWZ1bmN0aW9uIFFuKHQsZSl7Zm9yKHZhciBuPXQubGVuZ3RoO24tLTspaWYoYXModFtuXVswXSxlKSlyZXR1cm4gbjtyZXR1cm4tMX1mdW5jdGlvbiB0aSh0LGUsbixpKXtyZXR1cm4gUGkodCwoZnVuY3Rpb24odCxyLG8pe2UoaSx0LG4odCksbyl9KSksaX1mdW5jdGlvbiBlaSh0LGUpe3JldHVybiB0JiZYcihlLGlsKGUpLHQpfWZ1bmN0aW9uIG5pKHQsZSxuKXsiX19wcm90b19fIj09ZSYmdmU/dmUodCxlLHtjb25maWd1cmFibGU6ITAsZW51bWVyYWJsZTohMCx2YWx1ZTpuLHdyaXRhYmxlOiEwfSk6dFtlXT1ufWZ1bmN0aW9uIGlpKHQsZSl7Zm9yKHZhciBpPS0xLHI9ZS5sZW5ndGgsbz1idChyKSxhPW51bGw9PXQ7KytpPHI7KW9baV09YT9uOkpzKHQsZVtpXSk7cmV0dXJuIG99ZnVuY3Rpb24gcmkodCxlLGkpe3JldHVybiB0PT10JiYoaSE9PW4mJih0PXQ8PWk/dDppKSxlIT09biYmKHQ9dD49ZT90OmUpKSx0fWZ1bmN0aW9uIG9pKHQsZSxpLHIsbyxhKXt2YXIgcyxsPTEmZSxjPTImZSx1PTQmZTtpZihpJiYocz1vP2kodCxyLG8sYSk6aSh0KSkscyE9PW4pcmV0dXJuIHM7aWYoIXdzKHQpKXJldHVybiB0O3ZhciBoPXVzKHQpO2lmKGgpe2lmKHM9KGZ1bmN0aW9uIGQodCl7dmFyIGU9dC5sZW5ndGgsbj1uZXcgdC5jb25zdHJ1Y3RvcihlKTtyZXR1cm4gZSYmInN0cmluZyI9PXR5cGVvZiB0WzBdJiZOdC5jYWxsKHQsImluZGV4IikmJihuLmluZGV4PXQuaW5kZXgsbi5pbnB1dD10LmlucHV0KSxufSkodCksIWwpcmV0dXJuIFlyKHQscyl9ZWxzZXt2YXIgZj1Obyh0KSxfPWY9PXl8fGY9PXY7aWYobXModCkpcmV0dXJuIFZyKHQsbCk7aWYoZj09d3x8Zj09cHx8XyYmIW8pe2lmKHM9Y3x8Xz97fTpSbyh0KSwhbClyZXR1cm4gYz8oZnVuY3Rpb24gQyh0LGUpe3JldHVybiBYcih0LElvKHQpLGUpfSkodCwoZnVuY3Rpb24gUyh0LGUpe3JldHVybiB0JiZYcihlLHJsKGUpLHQpfSkocyx0KSk6KGZ1bmN0aW9uIEYodCxlKXtyZXR1cm4gWHIodCxQbyh0KSxlKX0pKHQsZWkocyx0KSl9ZWxzZXtpZighWnRbZl0pcmV0dXJuIG8/dDp7fTtzPShmdW5jdGlvbiBWKHQsZSxuKXt2YXIgaT10LmNvbnN0cnVjdG9yO3N3aXRjaChlKXtjYXNlIGs6cmV0dXJuIGpyKHQpO2Nhc2UgbTpjYXNlIGc6cmV0dXJuIG5ldyBpKCt0KTtjYXNlIEw6cmV0dXJuKGZ1bmN0aW9uIHIodCxlKXt2YXIgbj1lP2pyKHQuYnVmZmVyKTp0LmJ1ZmZlcjtyZXR1cm4gbmV3IHQuY29uc3RydWN0b3Iobix0LmJ5dGVPZmZzZXQsdC5ieXRlTGVuZ3RoKX0pKHQsbik7Y2FzZSBQOmNhc2UgSTpjYXNlIE46Y2FzZSBPOmNhc2UgUjpjYXNlIHo6Y2FzZSBEOmNhc2UgQjpjYXNlIEg6cmV0dXJuIFVyKHQsbik7Y2FzZSBiOnJldHVybiBuZXcgaTtjYXNlIHg6Y2FzZSBUOnJldHVybiBuZXcgaSh0KTtjYXNlIE06cmV0dXJuKGZ1bmN0aW9uIG8odCl7dmFyIGU9bmV3IHQuY29uc3RydWN0b3IodC5zb3VyY2UsdXQuZXhlYyh0KSk7cmV0dXJuIGUubGFzdEluZGV4PXQubGFzdEluZGV4LGV9KSh0KTtjYXNlIEU6cmV0dXJuIG5ldyBpO2Nhc2UgQTpyZXR1cm4oZnVuY3Rpb24gYSh0KXtyZXR1cm4gUm4/RXQoUm4uY2FsbCh0KSk6e319KSh0KX19KSh0LGYsbCl9fWF8fChhPW5ldyBxbik7dmFyIGo9YS5nZXQodCk7aWYoailyZXR1cm4gajthLnNldCh0LHMpLExzKHQpP3QuZm9yRWFjaCgoZnVuY3Rpb24obil7cy5hZGQob2kobixlLGksbix0LGEpKX0pKTpNcyh0KSYmdC5mb3JFYWNoKChmdW5jdGlvbihuLHIpe3Muc2V0KHIsb2kobixlLGkscix0LGEpKX0pKTt2YXIgVT1oP246KHU/Yz9Tbzp3bzpjP3JsOmlsKSh0KTtyZXR1cm4gX2UoVXx8dCwoZnVuY3Rpb24obixyKXtVJiYobj10W3I9bl0pLEpuKHMscixvaShuLGUsaSxyLHQsYSkpfSkpLHN9ZnVuY3Rpb24gYWkodCxlLGkpe3ZhciByPWkubGVuZ3RoO2lmKG51bGw9PXQpcmV0dXJuIXI7Zm9yKHQ9RXQodCk7ci0tOyl7dmFyIG89aVtyXSxhPXRbb107aWYoYT09PW4mJiEobyBpbiB0KXx8ISgwLGVbb10pKGEpKXJldHVybiExfXJldHVybiEwfWZ1bmN0aW9uIHNpKHQsZSxyKXtpZigiZnVuY3Rpb24iIT10eXBlb2YgdCl0aHJvdyBuZXcgQ3QoaSk7cmV0dXJuIEtvKChmdW5jdGlvbigpe3QuYXBwbHkobixyKX0pLGUpfWZ1bmN0aW9uIGxpKHQsZSxuLGkpe3ZhciByPS0xLG89d2UsYT0hMCxzPXQubGVuZ3RoLGw9W10sYz1lLmxlbmd0aDtpZighcylyZXR1cm4gbDtuJiYoZT1NZShlLFZlKG4pKSksaT8obz1TZSxhPSExKTplLmxlbmd0aD49MjAwJiYobz1VZSxhPSExLGU9bmV3IFduKGUpKTt0OmZvcig7KytyPHM7KXt2YXIgdT10W3JdLGg9bnVsbD09bj91Om4odSk7aWYodT1pfHwwIT09dT91OjAsYSYmaD09aCl7Zm9yKHZhciBkPWM7ZC0tOylpZihlW2RdPT09aCljb250aW51ZSB0O2wucHVzaCh1KX1lbHNlIG8oZSxoLGkpfHxsLnB1c2godSl9cmV0dXJuIGx9RG4udGVtcGxhdGVTZXR0aW5ncz17ZXNjYXBlOlksZXZhbHVhdGU6WCxpbnRlcnBvbGF0ZTokLHZhcmlhYmxlOiIiLGltcG9ydHM6e186RG59fSwoRG4ucHJvdG90eXBlPUhuLnByb3RvdHlwZSkuY29uc3RydWN0b3I9RG4sKEZuLnByb3RvdHlwZT1CbihIbi5wcm90b3R5cGUpKS5jb25zdHJ1Y3Rvcj1GbiwoVm4ucHJvdG90eXBlPUJuKEhuLnByb3RvdHlwZSkpLmNvbnN0cnVjdG9yPVZuLGpuLnByb3RvdHlwZS5jbGVhcj1mdW5jdGlvbiBjaSgpe3RoaXMuX19kYXRhX189VG4/VG4obnVsbCk6e30sdGhpcy5zaXplPTB9LGpuLnByb3RvdHlwZS5kZWxldGU9ZnVuY3Rpb24gdWkodCl7dmFyIGU9dGhpcy5oYXModCkmJmRlbGV0ZSB0aGlzLl9fZGF0YV9fW3RdO3JldHVybiB0aGlzLnNpemUtPWU/MTowLGV9LGpuLnByb3RvdHlwZS5nZXQ9ZnVuY3Rpb24gaGkodCl7dmFyIGU9dGhpcy5fX2RhdGFfXztpZihUbil7dmFyIGk9ZVt0XTtyZXR1cm4gaT09PXI/bjppfXJldHVybiBOdC5jYWxsKGUsdCk/ZVt0XTpufSxqbi5wcm90b3R5cGUuaGFzPWZ1bmN0aW9uIGRpKHQpe3ZhciBlPXRoaXMuX19kYXRhX187cmV0dXJuIFRuP2VbdF0hPT1uOk50LmNhbGwoZSx0KX0sam4ucHJvdG90eXBlLnNldD1mdW5jdGlvbiBwaSh0LGUpe3ZhciBpPXRoaXMuX19kYXRhX187cmV0dXJuIHRoaXMuc2l6ZSs9dGhpcy5oYXModCk/MDoxLGlbdF09VG4mJmU9PT1uP3I6ZSx0aGlzfSxVbi5wcm90b3R5cGUuY2xlYXI9ZnVuY3Rpb24gZmkoKXt0aGlzLl9fZGF0YV9fPVtdLHRoaXMuc2l6ZT0wfSxVbi5wcm90b3R5cGUuZGVsZXRlPWZ1bmN0aW9uIG1pKHQpe3ZhciBlPXRoaXMuX19kYXRhX18sbj1RbihlLHQpO3JldHVybiEobjwwfHwobj09ZS5sZW5ndGgtMT9lLnBvcCgpOnJlLmNhbGwoZSxuLDEpLC0tdGhpcy5zaXplLDApKX0sVW4ucHJvdG90eXBlLmdldD1mdW5jdGlvbiBnaSh0KXt2YXIgZT10aGlzLl9fZGF0YV9fLGk9UW4oZSx0KTtyZXR1cm4gaTwwP246ZVtpXVsxXX0sVW4ucHJvdG90eXBlLmhhcz1mdW5jdGlvbiBfaSh0KXtyZXR1cm4gUW4odGhpcy5fX2RhdGFfXyx0KT4tMX0sVW4ucHJvdG90eXBlLnNldD1mdW5jdGlvbiB5aSh0LGUpe3ZhciBuPXRoaXMuX19kYXRhX18saT1RbihuLHQpO3JldHVybiBpPDA/KCsrdGhpcy5zaXplLG4ucHVzaChbdCxlXSkpOm5baV1bMV09ZSx0aGlzfSxHbi5wcm90b3R5cGUuY2xlYXI9ZnVuY3Rpb24gdmkoKXt0aGlzLnNpemU9MCx0aGlzLl9fZGF0YV9fPXtoYXNoOm5ldyBqbixtYXA6bmV3KHdufHxVbiksc3RyaW5nOm5ldyBqbn19LEduLnByb3RvdHlwZS5kZWxldGU9ZnVuY3Rpb24gYmkodCl7dmFyIGU9Q28odGhpcyx0KS5kZWxldGUodCk7cmV0dXJuIHRoaXMuc2l6ZS09ZT8xOjAsZX0sR24ucHJvdG90eXBlLmdldD1mdW5jdGlvbiB4aSh0KXtyZXR1cm4gQ28odGhpcyx0KS5nZXQodCl9LEduLnByb3RvdHlwZS5oYXM9ZnVuY3Rpb24gd2kodCl7cmV0dXJuIENvKHRoaXMsdCkuaGFzKHQpfSxHbi5wcm90b3R5cGUuc2V0PWZ1bmN0aW9uIFNpKHQsZSl7dmFyIG49Q28odGhpcyx0KSxpPW4uc2l6ZTtyZXR1cm4gbi5zZXQodCxlKSx0aGlzLnNpemUrPW4uc2l6ZT09aT8wOjEsdGhpc30sV24ucHJvdG90eXBlLmFkZD1Xbi5wcm90b3R5cGUucHVzaD1mdW5jdGlvbiBNaSh0KXtyZXR1cm4gdGhpcy5fX2RhdGFfXy5zZXQodCxyKSx0aGlzfSxXbi5wcm90b3R5cGUuaGFzPWZ1bmN0aW9uIEVpKHQpe3JldHVybiB0aGlzLl9fZGF0YV9fLmhhcyh0KX0scW4ucHJvdG90eXBlLmNsZWFyPWZ1bmN0aW9uIFRpKCl7dGhpcy5fX2RhdGFfXz1uZXcgVW4sdGhpcy5zaXplPTB9LHFuLnByb3RvdHlwZS5kZWxldGU9ZnVuY3Rpb24gQWkodCl7dmFyIGU9dGhpcy5fX2RhdGFfXyxuPWUuZGVsZXRlKHQpO3JldHVybiB0aGlzLnNpemU9ZS5zaXplLG59LHFuLnByb3RvdHlwZS5nZXQ9ZnVuY3Rpb24gQ2kodCl7cmV0dXJuIHRoaXMuX19kYXRhX18uZ2V0KHQpfSxxbi5wcm90b3R5cGUuaGFzPWZ1bmN0aW9uIGtpKHQpe3JldHVybiB0aGlzLl9fZGF0YV9fLmhhcyh0KX0scW4ucHJvdG90eXBlLnNldD1mdW5jdGlvbiBMaSh0LGUpe3ZhciBuPXRoaXMuX19kYXRhX187aWYobiBpbnN0YW5jZW9mIFVuKXt2YXIgaT1uLl9fZGF0YV9fO2lmKCF3bnx8aS5sZW5ndGg8MTk5KXJldHVybiBpLnB1c2goW3QsZV0pLHRoaXMuc2l6ZT0rK24uc2l6ZSx0aGlzO249dGhpcy5fX2RhdGFfXz1uZXcgR24oaSl9cmV0dXJuIG4uc2V0KHQsZSksdGhpcy5zaXplPW4uc2l6ZSx0aGlzfTt2YXIgUGk9WnIoSGkpLElpPVpyKEZpLCEwKTtmdW5jdGlvbiBOaSh0LGUpe3ZhciBuPSEwO3JldHVybiBQaSh0LChmdW5jdGlvbih0LGkscil7cmV0dXJuIG49ISFlKHQsaSxyKX0pKSxufWZ1bmN0aW9uIE9pKHQsZSxpKXtmb3IodmFyIHI9LTEsbz10Lmxlbmd0aDsrK3I8bzspe3ZhciBhPXRbcl0scz1lKGEpO2lmKG51bGwhPXMmJihsPT09bj9zPT1zJiYhTnMocyk6aShzLGwpKSl2YXIgbD1zLGM9YX1yZXR1cm4gY31mdW5jdGlvbiBSaSh0LGUpe3ZhciBuPVtdO3JldHVybiBQaSh0LChmdW5jdGlvbih0LGkscil7ZSh0LGkscikmJm4ucHVzaCh0KX0pKSxufWZ1bmN0aW9uIHppKHQsZSxuLGkscil7dmFyIG89LTEsYT10Lmxlbmd0aDtmb3Iobnx8KG49em8pLHJ8fChyPVtdKTsrK288YTspe3ZhciBzPXRbb107ZT4wJiZuKHMpP2U+MT96aShzLGUtMSxuLGkscik6RWUocixzKTppfHwocltyLmxlbmd0aF09cyl9cmV0dXJuIHJ9dmFyIERpPUpyKCksQmk9SnIoITApO2Z1bmN0aW9uIEhpKHQsZSl7cmV0dXJuIHQmJkRpKHQsZSxpbCl9ZnVuY3Rpb24gRmkodCxlKXtyZXR1cm4gdCYmQmkodCxlLGlsKX1mdW5jdGlvbiBWaSh0LGUpe3JldHVybiB4ZShlLChmdW5jdGlvbihlKXtyZXR1cm4gdnModFtlXSl9KSl9ZnVuY3Rpb24gamkodCxlKXtmb3IodmFyIGk9MCxyPShlPURyKGUsdCkpLmxlbmd0aDtudWxsIT10JiZpPHI7KXQ9dFtpYShlW2krK10pXTtyZXR1cm4gaSYmaT09cj90Om59ZnVuY3Rpb24gVWkodCxlLG4pe3ZhciBpPWUodCk7cmV0dXJuIHVzKHQpP2k6RWUoaSxuKHQpKX1mdW5jdGlvbiBHaSh0KXtyZXR1cm4gbnVsbD09dD90PT09bj8iW29iamVjdCBVbmRlZmluZWRdIjoiW29iamVjdCBOdWxsXSI6bGUmJmxlIGluIEV0KHQpPyhmdW5jdGlvbiBlKHQpe3ZhciBlPU50LmNhbGwodCxsZSksaT10W2xlXTt0cnl7dFtsZV09bjt2YXIgcj0hMH1jYXRjaCh0KXt9dmFyIG89enQuY2FsbCh0KTtyZXR1cm4gciYmKGU/dFtsZV09aTpkZWxldGUgdFtsZV0pLG99KSh0KTooZnVuY3Rpb24gaSh0KXtyZXR1cm4genQuY2FsbCh0KX0pKHQpfWZ1bmN0aW9uIFdpKHQsZSl7cmV0dXJuIHQ+ZX1mdW5jdGlvbiBxaSh0LGUpe3JldHVybiBudWxsIT10JiZOdC5jYWxsKHQsZSl9ZnVuY3Rpb24gWWkodCxlKXtyZXR1cm4gbnVsbCE9dCYmZSBpbiBFdCh0KX1mdW5jdGlvbiBYaSh0LGUsaSl7Zm9yKHZhciByPWk/U2U6d2Usbz10WzBdLmxlbmd0aCxhPXQubGVuZ3RoLHM9YSxsPWJ0KGEpLGM9MS8wLHU9W107cy0tOyl7dmFyIGg9dFtzXTtzJiZlJiYoaD1NZShoLFZlKGUpKSksYz1nbihoLmxlbmd0aCxjKSxsW3NdPSFpJiYoZXx8bz49MTIwJiZoLmxlbmd0aD49MTIwKT9uZXcgV24ocyYmaCk6bn1oPXRbMF07dmFyIGQ9LTEscD1sWzBdO3Q6Zm9yKDsrK2Q8byYmdS5sZW5ndGg8Yzspe3ZhciBmPWhbZF0sbT1lP2UoZik6ZjtpZihmPWl8fDAhPT1mP2Y6MCwhKHA/VWUocCxtKTpyKHUsbSxpKSkpe2ZvcihzPWE7LS1zOyl7dmFyIGc9bFtzXTtpZighKGc/VWUoZyxtKTpyKHRbc10sbSxpKSkpY29udGludWUgdH1wJiZwLnB1c2gobSksdS5wdXNoKGYpfX1yZXR1cm4gdX1mdW5jdGlvbiAkaSh0LGUsaSl7dmFyIHI9bnVsbD09KHQ9cW8odCxlPURyKGUsdCkpKT90OnRbaWEoZ2EoZSkpXTtyZXR1cm4gbnVsbD09cj9uOm1lKHIsdCxpKX1mdW5jdGlvbiBLaSh0KXtyZXR1cm4gU3ModCkmJkdpKHQpPT1wfWZ1bmN0aW9uIFppKHQsZSxpLHIsbyl7cmV0dXJuIHQ9PT1lfHwobnVsbD09dHx8bnVsbD09ZXx8IVNzKHQpJiYhU3MoZSk/dCE9dCYmZSE9ZTooZnVuY3Rpb24gYSh0LGUsaSxyLG8scyl7dmFyIGw9dXModCksYz11cyhlKSx1PWw/ZjpObyh0KSxoPWM/ZjpObyhlKSxkPSh1PXU9PXA/dzp1KT09dyx5PShoPWg9PXA/dzpoKT09dyx2PXU9PWg7aWYodiYmbXModCkpe2lmKCFtcyhlKSlyZXR1cm4hMTtsPSEwLGQ9ITF9aWYodiYmIWQpcmV0dXJuIHN8fChzPW5ldyBxbiksbHx8T3ModCk/Ym8odCxlLGkscixvLHMpOihmdW5jdGlvbiBTKHQsZSxuLGkscixvLGEpe3N3aXRjaChuKXtjYXNlIEw6aWYodC5ieXRlTGVuZ3RoIT1lLmJ5dGVMZW5ndGh8fHQuYnl0ZU9mZnNldCE9ZS5ieXRlT2Zmc2V0KXJldHVybiExO3Q9dC5idWZmZXIsZT1lLmJ1ZmZlcjtjYXNlIGs6cmV0dXJuISh0LmJ5dGVMZW5ndGghPWUuYnl0ZUxlbmd0aHx8IW8obmV3IEd0KHQpLG5ldyBHdChlKSkpO2Nhc2UgbTpjYXNlIGc6Y2FzZSB4OnJldHVybiBhcygrdCwrZSk7Y2FzZSBfOnJldHVybiB0Lm5hbWU9PWUubmFtZSYmdC5tZXNzYWdlPT1lLm1lc3NhZ2U7Y2FzZSBNOmNhc2UgVDpyZXR1cm4gdD09ZSsiIjtjYXNlIGI6dmFyIHM9WmU7Y2FzZSBFOmlmKHN8fChzPXRuKSx0LnNpemUhPWUuc2l6ZSYmISgxJmkpKXJldHVybiExO3ZhciBsPWEuZ2V0KHQpO2lmKGwpcmV0dXJuIGw9PWU7aXw9MixhLnNldCh0LGUpO3ZhciBjPWJvKHModCkscyhlKSxpLHIsbyxhKTtyZXR1cm4gYS5kZWxldGUodCksYztjYXNlIEE6aWYoUm4pcmV0dXJuIFJuLmNhbGwodCk9PVJuLmNhbGwoZSl9cmV0dXJuITF9KSh0LGUsdSxpLHIsbyxzKTtpZighKDEmaSkpe3ZhciBDPWQmJk50LmNhbGwodCwiX193cmFwcGVkX18iKSxQPXkmJk50LmNhbGwoZSwiX193cmFwcGVkX18iKTtpZihDfHxQKXt2YXIgST1DP3QudmFsdWUoKTp0LE49UD9lLnZhbHVlKCk6ZTtyZXR1cm4gc3x8KHM9bmV3IHFuKSxvKEksTixpLHIscyl9fXJldHVybiEhdiYmKHN8fChzPW5ldyBxbiksKGZ1bmN0aW9uIE8odCxlLGkscixvLGEpe3ZhciBzPTEmaSxsPXdvKHQpLGM9bC5sZW5ndGg7aWYoYyE9d28oZSkubGVuZ3RoJiYhcylyZXR1cm4hMTtmb3IodmFyIHU9Yzt1LS07KXt2YXIgaD1sW3VdO2lmKCEocz9oIGluIGU6TnQuY2FsbChlLGgpKSlyZXR1cm4hMX12YXIgZD1hLmdldCh0KSxwPWEuZ2V0KGUpO2lmKGQmJnApcmV0dXJuIGQ9PWUmJnA9PXQ7dmFyIGY9ITA7YS5zZXQodCxlKSxhLnNldChlLHQpO2Zvcih2YXIgbT1zOysrdTxjOyl7dmFyIGc9dFtoPWxbdV1dLF89ZVtoXTtpZihyKXZhciB5PXM/cihfLGcsaCxlLHQsYSk6cihnLF8saCx0LGUsYSk7aWYoISh5PT09bj9nPT09X3x8byhnLF8saSxyLGEpOnkpKXtmPSExO2JyZWFrfW18fChtPSJjb25zdHJ1Y3RvciI9PWgpfWlmKGYmJiFtKXt2YXIgdj10LmNvbnN0cnVjdG9yLGI9ZS5jb25zdHJ1Y3Rvcjt2PT1ifHwhKCJjb25zdHJ1Y3RvciJpbiB0KXx8ISgiY29uc3RydWN0b3IiaW4gZSl8fCJmdW5jdGlvbiI9PXR5cGVvZiB2JiZ2IGluc3RhbmNlb2YgdiYmImZ1bmN0aW9uIj09dHlwZW9mIGImJmIgaW5zdGFuY2VvZiBifHwoZj0hMSl9cmV0dXJuIGEuZGVsZXRlKHQpLGEuZGVsZXRlKGUpLGZ9KSh0LGUsaSxyLG8scykpfSkodCxlLGkscixaaSxvKSl9ZnVuY3Rpb24gSmkodCxlLGkscil7dmFyIG89aS5sZW5ndGgsYT1vLHM9IXI7aWYobnVsbD09dClyZXR1cm4hYTtmb3IodD1FdCh0KTtvLS07KXt2YXIgbD1pW29dO2lmKHMmJmxbMl0/bFsxXSE9PXRbbFswXV06IShsWzBdaW4gdCkpcmV0dXJuITF9Zm9yKDsrK288YTspe3ZhciBjPShsPWlbb10pWzBdLHU9dFtjXSxoPWxbMV07aWYocyYmbFsyXSl7aWYodT09PW4mJiEoYyBpbiB0KSlyZXR1cm4hMX1lbHNle3ZhciBkPW5ldyBxbjtpZihyKXZhciBwPXIodSxoLGMsdCxlLGQpO2lmKCEocD09PW4/WmkoaCx1LDMscixkKTpwKSlyZXR1cm4hMX19cmV0dXJuITB9ZnVuY3Rpb24gUWkodCl7cmV0dXJuISghd3ModCl8fChmdW5jdGlvbiBlKHQpe3JldHVybiEhUnQmJlJ0IGluIHR9KSh0KSkmJih2cyh0KT9IdDpwdCkudGVzdChyYSh0KSl9ZnVuY3Rpb24gdHIodCl7cmV0dXJuImZ1bmN0aW9uIj09dHlwZW9mIHQ/dDpudWxsPT10P2tsOiJvYmplY3QiPT10eXBlb2YgdD91cyh0KT9vcih0WzBdLHRbMV0pOnJyKHQpOkJsKHQpfWZ1bmN0aW9uIGVyKHQpe2lmKCFqbyh0KSlyZXR1cm4gZm4odCk7dmFyIGU9W107Zm9yKHZhciBuIGluIEV0KHQpKU50LmNhbGwodCxuKSYmImNvbnN0cnVjdG9yIiE9biYmZS5wdXNoKG4pO3JldHVybiBlfWZ1bmN0aW9uIG5yKHQsZSl7cmV0dXJuIHQ8ZX1mdW5jdGlvbiBpcih0LGUpe3ZhciBuPS0xLGk9cHModCk/YnQodC5sZW5ndGgpOltdO3JldHVybiBQaSh0LChmdW5jdGlvbih0LHIsbyl7aVsrK25dPWUodCxyLG8pfSkpLGl9ZnVuY3Rpb24gcnIodCl7dmFyIGU9a28odCk7cmV0dXJuIDE9PWUubGVuZ3RoJiZlWzBdWzJdP0dvKGVbMF1bMF0sZVswXVsxXSk6ZnVuY3Rpb24obil7cmV0dXJuIG49PT10fHxKaShuLHQsZSl9fWZ1bmN0aW9uIG9yKHQsZSl7cmV0dXJuIEhvKHQpJiZVbyhlKT9HbyhpYSh0KSxlKTpmdW5jdGlvbihpKXt2YXIgcj1KcyhpLHQpO3JldHVybiByPT09biYmcj09PWU/UXMoaSx0KTpaaShlLHIsMyl9fWZ1bmN0aW9uIGFyKHQsZSxpLHIsbyl7dCE9PWUmJkRpKGUsKGZ1bmN0aW9uKGEscyl7aWYob3x8KG89bmV3IHFuKSx3cyhhKSkhKGZ1bmN0aW9uIGwodCxlLGkscixvLGEscyl7dmFyIGw9WG8odCxpKSxjPVhvKGUsaSksdT1zLmdldChjKTtpZih1KVpuKHQsaSx1KTtlbHNle3ZhciBoPWE/YShsLGMsaSsiIix0LGUscyk6bixkPWg9PT1uO2lmKGQpe3ZhciBwPXVzKGMpLGY9IXAmJm1zKGMpLG09IXAmJiFmJiZPcyhjKTtoPWMscHx8Znx8bT91cyhsKT9oPWw6ZnMobCk/aD1ZcihsKTpmPyhkPSExLGg9VnIoYywhMCkpOm0/KGQ9ITEsaD1VcihjLCEwKSk6aD1bXTpBcyhjKXx8Y3MoYyk/KGg9bCxjcyhsKT9oPVVzKGwpOndzKGwpJiYhdnMobCl8fChoPVJvKGMpKSk6ZD0hMX1kJiYocy5zZXQoYyxoKSxvKGgsYyxyLGEscykscy5kZWxldGUoYykpLFpuKHQsaSxoKX19KSh0LGUscyxpLGFyLHIsbyk7ZWxzZXt2YXIgYz1yP3IoWG8odCxzKSxhLHMrIiIsdCxlLG8pOm47Yz09PW4mJihjPWEpLFpuKHQscyxjKX19KSxybCl9ZnVuY3Rpb24gc3IodCxlKXt2YXIgaT10Lmxlbmd0aDtpZihpKXJldHVybiBEbyhlKz1lPDA/aTowLGkpP3RbZV06bn1mdW5jdGlvbiBscih0LGUsbil7ZT1lLmxlbmd0aD9NZShlLChmdW5jdGlvbih0KXtyZXR1cm4gdXModCk/ZnVuY3Rpb24oZSl7cmV0dXJuIGppKGUsMT09PXQubGVuZ3RoP3RbMF06dCl9OnR9KSk6W2tsXTt2YXIgaT0tMTtyZXR1cm4gZT1NZShlLFZlKEFvKCkpKSwoZnVuY3Rpb24gcih0LGUpe3ZhciBuPXQubGVuZ3RoO2Zvcih0LnNvcnQoZSk7bi0tOyl0W25dPXRbbl0udmFsdWU7cmV0dXJuIHR9KShpcih0LChmdW5jdGlvbih0LG4scil7cmV0dXJue2NyaXRlcmlhOk1lKGUsKGZ1bmN0aW9uKGUpe3JldHVybiBlKHQpfSkpLGluZGV4OisraSx2YWx1ZTp0fX0pKSwoZnVuY3Rpb24odCxlKXtyZXR1cm4oZnVuY3Rpb24gaSh0LGUsbil7Zm9yKHZhciBpPS0xLHI9dC5jcml0ZXJpYSxvPWUuY3JpdGVyaWEsYT1yLmxlbmd0aCxzPW4ubGVuZ3RoOysraTxhOyl7dmFyIGw9R3IocltpXSxvW2ldKTtpZihsKXJldHVybiBpPj1zP2w6bCooImRlc2MiPT1uW2ldPy0xOjEpfXJldHVybiB0LmluZGV4LWUuaW5kZXh9KSh0LGUsbil9KSl9ZnVuY3Rpb24gY3IodCxlLG4pe2Zvcih2YXIgaT0tMSxyPWUubGVuZ3RoLG89e307KytpPHI7KXt2YXIgYT1lW2ldLHM9amkodCxhKTtuKHMsYSkmJl9yKG8sRHIoYSx0KSxzKX1yZXR1cm4gb31mdW5jdGlvbiB1cih0LGUsbixpKXt2YXIgcj1pP05lOkllLG89LTEsYT1lLmxlbmd0aCxzPXQ7Zm9yKHQ9PT1lJiYoZT1ZcihlKSksbiYmKHM9TWUodCxWZShuKSkpOysrbzxhOylmb3IodmFyIGw9MCxjPWVbb10sdT1uP24oYyk6YzsobD1yKHMsdSxsLGkpKT4tMTspcyE9PXQmJnJlLmNhbGwocyxsLDEpLHJlLmNhbGwodCxsLDEpO3JldHVybiB0fWZ1bmN0aW9uIGhyKHQsZSl7Zm9yKHZhciBuPXQ/ZS5sZW5ndGg6MCxpPW4tMTtuLS07KXt2YXIgcj1lW25dO2lmKG49PWl8fHIhPT1vKXt2YXIgbz1yO0RvKHIpP3JlLmNhbGwodCxyLDEpOmtyKHQscil9fXJldHVybiB0fWZ1bmN0aW9uIGRyKHQsZSl7cmV0dXJuIHQrY24odm4oKSooZS10KzEpKX1mdW5jdGlvbiBwcih0LGUpe3ZhciBuPSIiO2lmKCF0fHxlPDF8fGU+YylyZXR1cm4gbjtkb3tlJTImJihuKz10KSwoZT1jbihlLzIpKSYmKHQrPXQpfXdoaWxlKGUpO3JldHVybiBufWZ1bmN0aW9uIGZyKHQsZSl7cmV0dXJuIFpvKFdvKHQsZSxrbCksdCsiIil9ZnVuY3Rpb24gbXIodCl7cmV0dXJuIFhuKGRsKHQpKX1mdW5jdGlvbiBncih0LGUpe3ZhciBuPWRsKHQpO3JldHVybiB0YShuLHJpKGUsMCxuLmxlbmd0aCkpfWZ1bmN0aW9uIF9yKHQsZSxpLHIpe2lmKCF3cyh0KSlyZXR1cm4gdDtmb3IodmFyIG89LTEsYT0oZT1EcihlLHQpKS5sZW5ndGgscz1hLTEsbD10O251bGwhPWwmJisrbzxhOyl7dmFyIGM9aWEoZVtvXSksdT1pO2lmKCJfX3Byb3RvX18iPT09Y3x8ImNvbnN0cnVjdG9yIj09PWN8fCJwcm90b3R5cGUiPT09YylyZXR1cm4gdDtpZihvIT1zKXt2YXIgaD1sW2NdOyh1PXI/cihoLGMsbCk6bik9PT1uJiYodT13cyhoKT9oOkRvKGVbbysxXSk/W106e30pfUpuKGwsYyx1KSxsPWxbY119cmV0dXJuIHR9dmFyIHlyPUFuP2Z1bmN0aW9uKHQsZSl7cmV0dXJuIEFuLnNldCh0LGUpLHR9OmtsLHZyPXZlP2Z1bmN0aW9uKHQsZSl7cmV0dXJuIHZlKHQsInRvU3RyaW5nIix7Y29uZmlndXJhYmxlOiEwLGVudW1lcmFibGU6ITEsdmFsdWU6VGwoZSksd3JpdGFibGU6ITB9KX06a2w7ZnVuY3Rpb24gYnIodCl7cmV0dXJuIHRhKGRsKHQpKX1mdW5jdGlvbiB4cih0LGUsbil7dmFyIGk9LTEscj10Lmxlbmd0aDtlPDAmJihlPS1lPnI/MDpyK2UpLChuPW4+cj9yOm4pPDAmJihuKz1yKSxyPWU+bj8wOm4tZT4+PjAsZT4+Pj0wO2Zvcih2YXIgbz1idChyKTsrK2k8cjspb1tpXT10W2krZV07cmV0dXJuIG99ZnVuY3Rpb24gd3IodCxlKXt2YXIgbjtyZXR1cm4gUGkodCwoZnVuY3Rpb24odCxpLHIpe3JldHVybiEobj1lKHQsaSxyKSl9KSksISFufWZ1bmN0aW9uIFNyKHQsZSxuKXt2YXIgaT0wLHI9bnVsbD09dD9pOnQubGVuZ3RoO2lmKCJudW1iZXIiPT10eXBlb2YgZSYmZT09ZSYmcjw9MjE0NzQ4MzY0Nyl7Zm9yKDtpPHI7KXt2YXIgbz1pK3I+Pj4xLGE9dFtvXTtudWxsIT09YSYmIU5zKGEpJiYobj9hPD1lOmE8ZSk/aT1vKzE6cj1vfXJldHVybiByfXJldHVybiBNcih0LGUsa2wsbil9ZnVuY3Rpb24gTXIodCxlLGkscil7dmFyIG89MCxhPW51bGw9PXQ/MDp0Lmxlbmd0aDtpZigwPT09YSlyZXR1cm4gMDtmb3IodmFyIHM9KGU9aShlKSkhPWUsbD1udWxsPT09ZSxjPU5zKGUpLHU9ZT09PW47bzxhOyl7dmFyIGg9Y24oKG8rYSkvMiksZD1pKHRbaF0pLHA9ZCE9PW4sZj1udWxsPT09ZCxtPWQ9PWQsZz1OcyhkKTtpZihzKXZhciBfPXJ8fG07ZWxzZSBfPXU/bSYmKHJ8fHApOmw/bSYmcCYmKHJ8fCFmKTpjP20mJnAmJiFmJiYocnx8IWcpOiFmJiYhZyYmKHI/ZDw9ZTpkPGUpO18/bz1oKzE6YT1ofXJldHVybiBnbihhLDQyOTQ5NjcyOTQpfWZ1bmN0aW9uIEVyKHQsZSl7Zm9yKHZhciBuPS0xLGk9dC5sZW5ndGgscj0wLG89W107KytuPGk7KXt2YXIgYT10W25dLHM9ZT9lKGEpOmE7aWYoIW58fCFhcyhzLGwpKXt2YXIgbD1zO29bcisrXT0wPT09YT8wOmF9fXJldHVybiBvfWZ1bmN0aW9uIFRyKHQpe3JldHVybiJudW1iZXIiPT10eXBlb2YgdD90Ok5zKHQpP3U6K3R9ZnVuY3Rpb24gQXIodCl7aWYoInN0cmluZyI9PXR5cGVvZiB0KXJldHVybiB0O2lmKHVzKHQpKXJldHVybiBNZSh0LEFyKSsiIjtpZihOcyh0KSlyZXR1cm4gem4/em4uY2FsbCh0KToiIjt2YXIgZT10KyIiO3JldHVybiIwIj09ZSYmMS90PT0tMS8wPyItMCI6ZX1mdW5jdGlvbiBDcih0LGUsbil7dmFyIGk9LTEscj13ZSxvPXQubGVuZ3RoLGE9ITAscz1bXSxsPXM7aWYobilhPSExLHI9U2U7ZWxzZSBpZihvPj0yMDApe3ZhciBjPWU/bnVsbDpmbyh0KTtpZihjKXJldHVybiB0bihjKTthPSExLHI9VWUsbD1uZXcgV259ZWxzZSBsPWU/W106czt0OmZvcig7KytpPG87KXt2YXIgdT10W2ldLGg9ZT9lKHUpOnU7aWYodT1ufHwwIT09dT91OjAsYSYmaD09aCl7Zm9yKHZhciBkPWwubGVuZ3RoO2QtLTspaWYobFtkXT09PWgpY29udGludWUgdDtlJiZsLnB1c2goaCkscy5wdXNoKHUpfWVsc2UgcihsLGgsbil8fChsIT09cyYmbC5wdXNoKGgpLHMucHVzaCh1KSl9cmV0dXJuIHN9ZnVuY3Rpb24ga3IodCxlKXtyZXR1cm4gbnVsbD09KHQ9cW8odCxlPURyKGUsdCkpKXx8ZGVsZXRlIHRbaWEoZ2EoZSkpXX1mdW5jdGlvbiBMcih0LGUsbixpKXtyZXR1cm4gX3IodCxlLG4oamkodCxlKSksaSl9ZnVuY3Rpb24gUHIodCxlLG4saSl7Zm9yKHZhciByPXQubGVuZ3RoLG89aT9yOi0xOyhpP28tLTorK288cikmJmUodFtvXSxvLHQpOyk7cmV0dXJuIG4/eHIodCxpPzA6byxpP28rMTpyKTp4cih0LGk/bysxOjAsaT9yOm8pfWZ1bmN0aW9uIElyKHQsZSl7dmFyIG49dDtyZXR1cm4gbiBpbnN0YW5jZW9mIFZuJiYobj1uLnZhbHVlKCkpLFRlKGUsKGZ1bmN0aW9uKHQsZSl7cmV0dXJuIGUuZnVuYy5hcHBseShlLnRoaXNBcmcsRWUoW3RdLGUuYXJncykpfSksbil9ZnVuY3Rpb24gTnIodCxlLG4pe3ZhciBpPXQubGVuZ3RoO2lmKGk8MilyZXR1cm4gaT9Dcih0WzBdKTpbXTtmb3IodmFyIHI9LTEsbz1idChpKTsrK3I8aTspZm9yKHZhciBhPXRbcl0scz0tMTsrK3M8aTspcyE9ciYmKG9bcl09bGkob1tyXXx8YSx0W3NdLGUsbikpO3JldHVybiBDcih6aShvLDEpLGUsbil9ZnVuY3Rpb24gT3IodCxlLGkpe2Zvcih2YXIgcj0tMSxvPXQubGVuZ3RoLGE9ZS5sZW5ndGgscz17fTsrK3I8bzspaShzLHRbcl0scjxhP2Vbcl06bik7cmV0dXJuIHN9ZnVuY3Rpb24gUnIodCl7cmV0dXJuIGZzKHQpP3Q6W119ZnVuY3Rpb24genIodCl7cmV0dXJuImZ1bmN0aW9uIj09dHlwZW9mIHQ/dDprbH1mdW5jdGlvbiBEcih0LGUpe3JldHVybiB1cyh0KT90OkhvKHQsZSk/W3RdOmVhKEdzKHQpKX12YXIgQnI9ZnI7ZnVuY3Rpb24gSHIodCxlLGkpe3ZhciByPXQubGVuZ3RoO3JldHVybiBpPWk9PT1uP3I6aSwhZSYmaT49cj90OnhyKHQsZSxpKX12YXIgRnI9a2V8fGZ1bmN0aW9uKHQpe3JldHVybiBpZS5jbGVhclRpbWVvdXQodCl9O2Z1bmN0aW9uIFZyKHQsZSl7aWYoZSlyZXR1cm4gdC5zbGljZSgpO3ZhciBuPXQubGVuZ3RoLGk9cXQ/cXQobik6bmV3IHQuY29uc3RydWN0b3Iobik7cmV0dXJuIHQuY29weShpKSxpfWZ1bmN0aW9uIGpyKHQpe3ZhciBlPW5ldyB0LmNvbnN0cnVjdG9yKHQuYnl0ZUxlbmd0aCk7cmV0dXJuIG5ldyBHdChlKS5zZXQobmV3IEd0KHQpKSxlfWZ1bmN0aW9uIFVyKHQsZSl7dmFyIG49ZT9qcih0LmJ1ZmZlcik6dC5idWZmZXI7cmV0dXJuIG5ldyB0LmNvbnN0cnVjdG9yKG4sdC5ieXRlT2Zmc2V0LHQubGVuZ3RoKX1mdW5jdGlvbiBHcih0LGUpe2lmKHQhPT1lKXt2YXIgaT10IT09bixyPW51bGw9PT10LG89dD09dCxhPU5zKHQpLHM9ZSE9PW4sbD1udWxsPT09ZSxjPWU9PWUsdT1OcyhlKTtpZighbCYmIXUmJiFhJiZ0PmV8fGEmJnMmJmMmJiFsJiYhdXx8ciYmcyYmY3x8IWkmJmN8fCFvKXJldHVybiAxO2lmKCFyJiYhYSYmIXUmJnQ8ZXx8dSYmaSYmbyYmIXImJiFhfHxsJiZpJiZvfHwhcyYmb3x8IWMpcmV0dXJuLTF9cmV0dXJuIDB9ZnVuY3Rpb24gV3IodCxlLG4saSl7Zm9yKHZhciByPS0xLG89dC5sZW5ndGgsYT1uLmxlbmd0aCxzPS0xLGw9ZS5sZW5ndGgsYz1tbihvLWEsMCksdT1idChsK2MpLGg9IWk7KytzPGw7KXVbc109ZVtzXTtmb3IoOysrcjxhOykoaHx8cjxvKSYmKHVbbltyXV09dFtyXSk7Zm9yKDtjLS07KXVbcysrXT10W3IrK107cmV0dXJuIHV9ZnVuY3Rpb24gcXIodCxlLG4saSl7Zm9yKHZhciByPS0xLG89dC5sZW5ndGgsYT0tMSxzPW4ubGVuZ3RoLGw9LTEsYz1lLmxlbmd0aCx1PW1uKG8tcywwKSxoPWJ0KHUrYyksZD0haTsrK3I8dTspaFtyXT10W3JdO2Zvcih2YXIgcD1yOysrbDxjOyloW3ArbF09ZVtsXTtmb3IoOysrYTxzOykoZHx8cjxvKSYmKGhbcCtuW2FdXT10W3IrK10pO3JldHVybiBofWZ1bmN0aW9uIFlyKHQsZSl7dmFyIG49LTEsaT10Lmxlbmd0aDtmb3IoZXx8KGU9YnQoaSkpOysrbjxpOyllW25dPXRbbl07cmV0dXJuIGV9ZnVuY3Rpb24gWHIodCxlLGkscil7dmFyIG89IWk7aXx8KGk9e30pO2Zvcih2YXIgYT0tMSxzPWUubGVuZ3RoOysrYTxzOyl7dmFyIGw9ZVthXSxjPXI/cihpW2xdLHRbbF0sbCxpLHQpOm47Yz09PW4mJihjPXRbbF0pLG8/bmkoaSxsLGMpOkpuKGksbCxjKX1yZXR1cm4gaX1mdW5jdGlvbiAkcih0LGUpe3JldHVybiBmdW5jdGlvbihuLGkpe3ZhciByPXVzKG4pP2dlOnRpLG89ZT9lKCk6e307cmV0dXJuIHIobix0LEFvKGksMiksbyl9fWZ1bmN0aW9uIEtyKHQpe3JldHVybiBmcigoZnVuY3Rpb24oZSxpKXt2YXIgcj0tMSxvPWkubGVuZ3RoLGE9bz4xP2lbby0xXTpuLHM9bz4yP2lbMl06bjtmb3IoYT10Lmxlbmd0aD4zJiYiZnVuY3Rpb24iPT10eXBlb2YgYT8oby0tLGEpOm4scyYmQm8oaVswXSxpWzFdLHMpJiYoYT1vPDM/bjphLG89MSksZT1FdChlKTsrK3I8bzspe3ZhciBsPWlbcl07bCYmdChlLGwscixhKX1yZXR1cm4gZX0pKX1mdW5jdGlvbiBacih0LGUpe3JldHVybiBmdW5jdGlvbihuLGkpe2lmKG51bGw9PW4pcmV0dXJuIG47aWYoIXBzKG4pKXJldHVybiB0KG4saSk7Zm9yKHZhciByPW4ubGVuZ3RoLG89ZT9yOi0xLGE9RXQobik7KGU/by0tOisrbzxyKSYmITEhPT1pKGFbb10sbyxhKTspO3JldHVybiBufX1mdW5jdGlvbiBKcih0KXtyZXR1cm4gZnVuY3Rpb24oZSxuLGkpe2Zvcih2YXIgcj0tMSxvPUV0KGUpLGE9aShlKSxzPWEubGVuZ3RoO3MtLTspe3ZhciBsPWFbdD9zOisrcl07aWYoITE9PT1uKG9bbF0sbCxvKSlicmVha31yZXR1cm4gZX19ZnVuY3Rpb24gUXIodCl7cmV0dXJuIGZ1bmN0aW9uKGUpe3ZhciBpPUtlKGU9R3MoZSkpP3JuKGUpOm4scj1pP2lbMF06ZS5jaGFyQXQoMCksbz1pP0hyKGksMSkuam9pbigiIik6ZS5zbGljZSgxKTtyZXR1cm4gclt0XSgpK299fWZ1bmN0aW9uIHRvKHQpe3JldHVybiBmdW5jdGlvbihlKXtyZXR1cm4gVGUoU2wobWwoZSkucmVwbGFjZShqdCwiIikpLHQsIiIpfX1mdW5jdGlvbiBlbyh0KXtyZXR1cm4gZnVuY3Rpb24oKXt2YXIgZT1hcmd1bWVudHM7c3dpdGNoKGUubGVuZ3RoKXtjYXNlIDA6cmV0dXJuIG5ldyB0O2Nhc2UgMTpyZXR1cm4gbmV3IHQoZVswXSk7Y2FzZSAyOnJldHVybiBuZXcgdChlWzBdLGVbMV0pO2Nhc2UgMzpyZXR1cm4gbmV3IHQoZVswXSxlWzFdLGVbMl0pO2Nhc2UgNDpyZXR1cm4gbmV3IHQoZVswXSxlWzFdLGVbMl0sZVszXSk7Y2FzZSA1OnJldHVybiBuZXcgdChlWzBdLGVbMV0sZVsyXSxlWzNdLGVbNF0pO2Nhc2UgNjpyZXR1cm4gbmV3IHQoZVswXSxlWzFdLGVbMl0sZVszXSxlWzRdLGVbNV0pO2Nhc2UgNzpyZXR1cm4gbmV3IHQoZVswXSxlWzFdLGVbMl0sZVszXSxlWzRdLGVbNV0sZVs2XSl9dmFyIG49Qm4odC5wcm90b3R5cGUpLGk9dC5hcHBseShuLGUpO3JldHVybiB3cyhpKT9pOm59fWZ1bmN0aW9uIG5vKHQpe3JldHVybiBmdW5jdGlvbihlLGkscil7dmFyIG89RXQoZSk7aWYoIXBzKGUpKXt2YXIgYT1BbyhpLDMpO2U9aWwoZSksaT1mdW5jdGlvbih0KXtyZXR1cm4gYShvW3RdLHQsbyl9fXZhciBzPXQoZSxpLHIpO3JldHVybiBzPi0xP29bYT9lW3NdOnNdOm59fWZ1bmN0aW9uIGlvKHQpe3JldHVybiB4bygoZnVuY3Rpb24oZSl7dmFyIHI9ZS5sZW5ndGgsbz1yLGE9Rm4ucHJvdG90eXBlLnRocnU7Zm9yKHQmJmUucmV2ZXJzZSgpO28tLTspe3ZhciBzPWVbb107aWYoImZ1bmN0aW9uIiE9dHlwZW9mIHMpdGhyb3cgbmV3IEN0KGkpO2lmKGEmJiFsJiYid3JhcHBlciI9PUVvKHMpKXZhciBsPW5ldyBGbihbXSwhMCl9Zm9yKG89bD9vOnI7KytvPHI7KXt2YXIgYz1FbyhzPWVbb10pLHU9IndyYXBwZXIiPT1jP01vKHMpOm47bD11JiZGbyh1WzBdKSYmNDI0PT11WzFdJiYhdVs0XS5sZW5ndGgmJjE9PXVbOV0/bFtFbyh1WzBdKV0uYXBwbHkobCx1WzNdKToxPT1zLmxlbmd0aCYmRm8ocyk/bFtjXSgpOmwudGhydShzKX1yZXR1cm4gZnVuY3Rpb24oKXt2YXIgdD1hcmd1bWVudHMsbj10WzBdO2lmKGwmJjE9PXQubGVuZ3RoJiZ1cyhuKSlyZXR1cm4gbC5wbGFudChuKS52YWx1ZSgpO2Zvcih2YXIgaT0wLG89cj9lW2ldLmFwcGx5KHRoaXMsdCk6bjsrK2k8cjspbz1lW2ldLmNhbGwodGhpcyxvKTtyZXR1cm4gb319KSl9ZnVuY3Rpb24gcm8odCxlLGkscixvLGEsbCxjLHUsaCl7dmFyIGQ9ZSZzLHA9MSZlLGY9MiZlLG09MjQmZSxnPTUxMiZlLF89Zj9uOmVvKHQpO3JldHVybiBmdW5jdGlvbiBuKCl7Zm9yKHZhciBzPWFyZ3VtZW50cy5sZW5ndGgseT1idChzKSx2PXM7di0tOyl5W3ZdPWFyZ3VtZW50c1t2XTtpZihtKXZhciBiPVRvKG4pLHg9cWUoeSxiKTtpZihyJiYoeT1Xcih5LHIsbyxtKSksYSYmKHk9cXIoeSxhLGwsbSkpLHMtPXgsbSYmczxoKXt2YXIgdz1RZSh5LGIpO3JldHVybiBobyh0LGUscm8sbi5wbGFjZWhvbGRlcixpLHksdyxjLHUsaC1zKX12YXIgUz1wP2k6dGhpcyxNPWY/U1t0XTp0O3JldHVybiBzPXkubGVuZ3RoLGM/eT1Zbyh5LGMpOmcmJnM+MSYmeS5yZXZlcnNlKCksZCYmdTxzJiYoeS5sZW5ndGg9dSksdGhpcyYmdGhpcyE9PWllJiZ0aGlzIGluc3RhbmNlb2YgbiYmKE09X3x8ZW8oTSkpLE0uYXBwbHkoUyx5KX19ZnVuY3Rpb24gb28odCxlKXtyZXR1cm4gZnVuY3Rpb24obixpKXtyZXR1cm4oZnVuY3Rpb24gcih0LGUsbixpKXtyZXR1cm4gSGkodCwoZnVuY3Rpb24odCxyLG8pe2UoaSxuKHQpLHIsbyl9KSksaX0pKG4sdCxlKGkpLHt9KX19ZnVuY3Rpb24gYW8odCxlKXtyZXR1cm4gZnVuY3Rpb24oaSxyKXt2YXIgbztpZihpPT09biYmcj09PW4pcmV0dXJuIGU7aWYoaSE9PW4mJihvPWkpLHIhPT1uKXtpZihvPT09bilyZXR1cm4gcjsic3RyaW5nIj09dHlwZW9mIGl8fCJzdHJpbmciPT10eXBlb2Ygcj8oaT1BcihpKSxyPUFyKHIpKTooaT1UcihpKSxyPVRyKHIpKSxvPXQoaSxyKX1yZXR1cm4gb319ZnVuY3Rpb24gc28odCl7cmV0dXJuIHhvKChmdW5jdGlvbihlKXtyZXR1cm4gZT1NZShlLFZlKEFvKCkpKSxmcigoZnVuY3Rpb24obil7dmFyIGk9dGhpcztyZXR1cm4gdChlLChmdW5jdGlvbih0KXtyZXR1cm4gbWUodCxpLG4pfSkpfSkpfSkpfWZ1bmN0aW9uIGxvKHQsZSl7dmFyIGk9KGU9ZT09PW4/IiAiOkFyKGUpKS5sZW5ndGg7aWYoaTwyKXJldHVybiBpP3ByKGUsdCk6ZTt2YXIgcj1wcihlLGxuKHQvbm4oZSkpKTtyZXR1cm4gS2UoZSk/SHIocm4ociksMCx0KS5qb2luKCIiKTpyLnNsaWNlKDAsdCl9ZnVuY3Rpb24gY28odCl7cmV0dXJuIGZ1bmN0aW9uKGUsaSxyKXtyZXR1cm4gciYmIm51bWJlciIhPXR5cGVvZiByJiZCbyhlLGkscikmJihpPXI9biksZT1IcyhlKSxpPT09bj8oaT1lLGU9MCk6aT1IcyhpKSwoZnVuY3Rpb24gbyh0LGUsbixpKXtmb3IodmFyIHI9LTEsbz1tbihsbigoZS10KS8obnx8MSkpLDApLGE9YnQobyk7by0tOylhW2k/bzorK3JdPXQsdCs9bjtyZXR1cm4gYX0pKGUsaSxyPXI9PT1uP2U8aT8xOi0xOkhzKHIpLHQpfX1mdW5jdGlvbiB1byh0KXtyZXR1cm4gZnVuY3Rpb24oZSxuKXtyZXR1cm4ic3RyaW5nIj09dHlwZW9mIGUmJiJzdHJpbmciPT10eXBlb2Ygbnx8KGU9anMoZSksbj1qcyhuKSksdChlLG4pfX1mdW5jdGlvbiBobyh0LGUsaSxyLG8scyxsLGMsdSxoKXt2YXIgZD04JmU7ZXw9ZD9hOjY0LDQmKGUmPX4oZD82NDphKSl8fChlJj0tNCk7dmFyIHA9W3QsZSxvLGQ/czpuLGQ/bDpuLGQ/bjpzLGQ/bjpsLGMsdSxoXSxmPWkuYXBwbHkobixwKTtyZXR1cm4gRm8odCkmJiRvKGYscCksZi5wbGFjZWhvbGRlcj1yLEpvKGYsdCxlKX1mdW5jdGlvbiBwbyh0KXt2YXIgZT1NdFt0XTtyZXR1cm4gZnVuY3Rpb24odCxuKXtpZih0PWpzKHQpLChuPW51bGw9PW4/MDpnbihGcyhuKSwyOTIpKSYmZG4odCkpe3ZhciBpPShHcyh0KSsiZSIpLnNwbGl0KCJlIik7cmV0dXJuKygoaT0oR3MoZShpWzBdKyJlIisoK2lbMV0rbikpKSsiZSIpLnNwbGl0KCJlIikpWzBdKyJlIisoK2lbMV0tbikpfXJldHVybiBlKHQpfX12YXIgZm89TW4mJjEvdG4obmV3IE1uKFssLTBdKSlbMV09PWw/ZnVuY3Rpb24odCl7cmV0dXJuIG5ldyBNbih0KX06T2w7ZnVuY3Rpb24gbW8odCl7cmV0dXJuIGZ1bmN0aW9uKGUpe3ZhciBuPU5vKGUpO3JldHVybiBuPT1iP1plKGUpOm49PUU/ZW4oZSk6KGZ1bmN0aW9uIGkodCxlKXtyZXR1cm4gTWUoZSwoZnVuY3Rpb24oZSl7cmV0dXJuW2UsdFtlXV19KSl9KShlLHQoZSkpfX1mdW5jdGlvbiBnbyh0LGUscixsLGMsdSxoLGQpe3ZhciBwPTImZTtpZighcCYmImZ1bmN0aW9uIiE9dHlwZW9mIHQpdGhyb3cgbmV3IEN0KGkpO3ZhciBmPWw/bC5sZW5ndGg6MDtpZihmfHwoZSY9LTk3LGw9Yz1uKSxoPWg9PT1uP2g6bW4oRnMoaCksMCksZD1kPT09bj9kOkZzKGQpLGYtPWM/Yy5sZW5ndGg6MCw2NCZlKXt2YXIgbT1sLGc9YztsPWM9bn12YXIgXz1wP246TW8odCkseT1bdCxlLHIsbCxjLG0sZyx1LGgsZF07aWYoXyYmKGZ1bmN0aW9uIHYodCxlKXt2YXIgbj10WzFdLGk9ZVsxXSxyPW58aTtpZighKHI8MTMxfHxpPT1zJiY4PT1ufHxpPT1zJiYyNTY9PW4mJnRbN10ubGVuZ3RoPD1lWzhdfHwzODQ9PWkmJmVbN10ubGVuZ3RoPD1lWzhdJiY4PT1uKSlyZXR1cm4gdDsxJmkmJih0WzJdPWVbMl0scnw9MSZuPzA6NCk7dmFyIGE9ZVszXTtpZihhKXt2YXIgbD10WzNdO3RbM109bD9XcihsLGEsZVs0XSk6YSx0WzRdPWw/UWUodFszXSxvKTplWzRdfShhPWVbNV0pJiYodFs1XT0obD10WzVdKT9xcihsLGEsZVs2XSk6YSx0WzZdPWw/UWUodFs1XSxvKTplWzZdKSwoYT1lWzddKSYmKHRbN109YSksaSZzJiYodFs4XT1udWxsPT10WzhdP2VbOF06Z24odFs4XSxlWzhdKSksbnVsbD09dFs5XSYmKHRbOV09ZVs5XSksdFswXT1lWzBdLHRbMV09cn0pKHksXyksdD15WzBdLGU9eVsxXSxyPXlbMl0sbD15WzNdLGM9eVs0XSwhKGQ9eVs5XT15WzldPT09bj9wPzA6dC5sZW5ndGg6bW4oeVs5XS1mLDApKSYmMjQmZSYmKGUmPS0yNSksZSYmMSE9ZSl3PTg9PWV8fDE2PT1lPyhmdW5jdGlvbiBiKHQsZSxpKXt2YXIgcj1lbyh0KTtyZXR1cm4gZnVuY3Rpb24gbygpe2Zvcih2YXIgYT1hcmd1bWVudHMubGVuZ3RoLHM9YnQoYSksbD1hLGM9VG8obyk7bC0tOylzW2xdPWFyZ3VtZW50c1tsXTt2YXIgdT1hPDMmJnNbMF0hPT1jJiZzW2EtMV0hPT1jP1tdOlFlKHMsYyk7cmV0dXJuKGEtPXUubGVuZ3RoKTxpP2hvKHQsZSxybyxvLnBsYWNlaG9sZGVyLG4scyx1LG4sbixpLWEpOm1lKHRoaXMmJnRoaXMhPT1pZSYmdGhpcyBpbnN0YW5jZW9mIG8/cjp0LHRoaXMscyl9fSkodCxlLGQpOmUhPWEmJjMzIT1lfHxjLmxlbmd0aD9yby5hcHBseShuLHkpOihmdW5jdGlvbiB4KHQsZSxuLGkpe3ZhciByPTEmZSxvPWVvKHQpO3JldHVybiBmdW5jdGlvbiBlKCl7Zm9yKHZhciBhPS0xLHM9YXJndW1lbnRzLmxlbmd0aCxsPS0xLGM9aS5sZW5ndGgsdT1idChjK3MpLGg9dGhpcyYmdGhpcyE9PWllJiZ0aGlzIGluc3RhbmNlb2YgZT9vOnQ7KytsPGM7KXVbbF09aVtsXTtmb3IoO3MtLTspdVtsKytdPWFyZ3VtZW50c1srK2FdO3JldHVybiBtZShoLHI/bjp0aGlzLHUpfX0pKHQsZSxyLGwpO2Vsc2UgdmFyIHc9KGZ1bmN0aW9uIFModCxlLG4pe3ZhciBpPTEmZSxyPWVvKHQpO3JldHVybiBmdW5jdGlvbiBlKCl7cmV0dXJuKHRoaXMmJnRoaXMhPT1pZSYmdGhpcyBpbnN0YW5jZW9mIGU/cjp0KS5hcHBseShpP246dGhpcyxhcmd1bWVudHMpfX0pKHQsZSxyKTtyZXR1cm4gSm8oKF8/eXI6JG8pKHcseSksdCxlKX1mdW5jdGlvbiBfbyh0LGUsaSxyKXtyZXR1cm4gdD09PW58fGFzKHQsTHRbaV0pJiYhTnQuY2FsbChyLGkpP2U6dH1mdW5jdGlvbiB5byh0LGUsaSxyLG8sYSl7cmV0dXJuIHdzKHQpJiZ3cyhlKSYmKGEuc2V0KGUsdCksYXIodCxlLG4seW8sYSksYS5kZWxldGUoZSkpLHR9ZnVuY3Rpb24gdm8odCl7cmV0dXJuIEFzKHQpP246dH1mdW5jdGlvbiBibyh0LGUsaSxyLG8sYSl7dmFyIHM9MSZpLGw9dC5sZW5ndGgsYz1lLmxlbmd0aDtpZihsIT1jJiYhKHMmJmM+bCkpcmV0dXJuITE7dmFyIHU9YS5nZXQodCksaD1hLmdldChlKTtpZih1JiZoKXJldHVybiB1PT1lJiZoPT10O3ZhciBkPS0xLHA9ITAsZj0yJmk/bmV3IFduOm47Zm9yKGEuc2V0KHQsZSksYS5zZXQoZSx0KTsrK2Q8bDspe3ZhciBtPXRbZF0sZz1lW2RdO2lmKHIpdmFyIF89cz9yKGcsbSxkLGUsdCxhKTpyKG0sZyxkLHQsZSxhKTtpZihfIT09bil7aWYoXyljb250aW51ZTtwPSExO2JyZWFrfWlmKGYpe2lmKCFDZShlLChmdW5jdGlvbih0LGUpe2lmKCFVZShmLGUpJiYobT09PXR8fG8obSx0LGkscixhKSkpcmV0dXJuIGYucHVzaChlKX0pKSl7cD0hMTticmVha319ZWxzZSBpZihtIT09ZyYmIW8obSxnLGkscixhKSl7cD0hMTticmVha319cmV0dXJuIGEuZGVsZXRlKHQpLGEuZGVsZXRlKGUpLHB9ZnVuY3Rpb24geG8odCl7cmV0dXJuIFpvKFdvKHQsbixoYSksdCsiIil9ZnVuY3Rpb24gd28odCl7cmV0dXJuIFVpKHQsaWwsUG8pfWZ1bmN0aW9uIFNvKHQpe3JldHVybiBVaSh0LHJsLElvKX12YXIgTW89QW4/ZnVuY3Rpb24odCl7cmV0dXJuIEFuLmdldCh0KX06T2w7ZnVuY3Rpb24gRW8odCl7Zm9yKHZhciBlPXQubmFtZSsiIixuPUNuW2VdLGk9TnQuY2FsbChDbixlKT9uLmxlbmd0aDowO2ktLTspe3ZhciByPW5baV0sbz1yLmZ1bmM7aWYobnVsbD09b3x8bz09dClyZXR1cm4gci5uYW1lfXJldHVybiBlfWZ1bmN0aW9uIFRvKHQpe3JldHVybihOdC5jYWxsKERuLCJwbGFjZWhvbGRlciIpP0RuOnQpLnBsYWNlaG9sZGVyfWZ1bmN0aW9uIEFvKCl7dmFyIHQ9RG4uaXRlcmF0ZWV8fExsO3JldHVybiB0PXQ9PT1MbD90cjp0LGFyZ3VtZW50cy5sZW5ndGg/dChhcmd1bWVudHNbMF0sYXJndW1lbnRzWzFdKTp0fWZ1bmN0aW9uIENvKHQsZSl7dmFyIG49dC5fX2RhdGFfXztyZXR1cm4oZnVuY3Rpb24gaSh0KXt2YXIgZT10eXBlb2YgdDtyZXR1cm4ic3RyaW5nIj09ZXx8Im51bWJlciI9PWV8fCJzeW1ib2wiPT1lfHwiYm9vbGVhbiI9PWU/Il9fcHJvdG9fXyIhPT10Om51bGw9PT10fSkoZSk/blsic3RyaW5nIj09dHlwZW9mIGU/InN0cmluZyI6Imhhc2giXTpuLm1hcH1mdW5jdGlvbiBrbyh0KXtmb3IodmFyIGU9aWwodCksbj1lLmxlbmd0aDtuLS07KXt2YXIgaT1lW25dLHI9dFtpXTtlW25dPVtpLHIsVW8ocildfXJldHVybiBlfWZ1bmN0aW9uIExvKHQsZSl7dmFyIGk9KGZ1bmN0aW9uIHIodCxlKXtyZXR1cm4gbnVsbD09dD9uOnRbZV19KSh0LGUpO3JldHVybiBRaShpKT9pOm59dmFyIFBvPXVuP2Z1bmN0aW9uKHQpe3JldHVybiBudWxsPT10P1tdOih0PUV0KHQpLHhlKHVuKHQpLChmdW5jdGlvbihlKXtyZXR1cm4gbmUuY2FsbCh0LGUpfSkpKX06VmwsSW89dW4/ZnVuY3Rpb24odCl7Zm9yKHZhciBlPVtdO3Q7KUVlKGUsUG8odCkpLHQ9SnQodCk7cmV0dXJuIGV9OlZsLE5vPUdpO2Z1bmN0aW9uIE9vKHQsZSxuKXtmb3IodmFyIGk9LTEscj0oZT1EcihlLHQpKS5sZW5ndGgsbz0hMTsrK2k8cjspe3ZhciBhPWlhKGVbaV0pO2lmKCEobz1udWxsIT10JiZuKHQsYSkpKWJyZWFrO3Q9dFthXX1yZXR1cm4gb3x8KytpIT1yP286ISEocj1udWxsPT10PzA6dC5sZW5ndGgpJiZ4cyhyKSYmRG8oYSxyKSYmKHVzKHQpfHxjcyh0KSl9ZnVuY3Rpb24gUm8odCl7cmV0dXJuImZ1bmN0aW9uIiE9dHlwZW9mIHQuY29uc3RydWN0b3J8fGpvKHQpP3t9OkJuKEp0KHQpKX1mdW5jdGlvbiB6byh0KXtyZXR1cm4gdXModCl8fGNzKHQpfHwhIShvZSYmdCYmdFtvZV0pfWZ1bmN0aW9uIERvKHQsZSl7dmFyIG49dHlwZW9mIHQ7cmV0dXJuISEoZT1udWxsPT1lP2M6ZSkmJigibnVtYmVyIj09bnx8InN5bWJvbCIhPW4mJm10LnRlc3QodCkpJiZ0Pi0xJiZ0JTE9PTAmJnQ8ZX1mdW5jdGlvbiBCbyh0LGUsbil7aWYoIXdzKG4pKXJldHVybiExO3ZhciBpPXR5cGVvZiBlO3JldHVybiEhKCJudW1iZXIiPT1pP3BzKG4pJiZEbyhlLG4ubGVuZ3RoKToic3RyaW5nIj09aSYmZSBpbiBuKSYmYXMobltlXSx0KX1mdW5jdGlvbiBIbyh0LGUpe2lmKHVzKHQpKXJldHVybiExO3ZhciBuPXR5cGVvZiB0O3JldHVybiEoIm51bWJlciIhPW4mJiJzeW1ib2wiIT1uJiYiYm9vbGVhbiIhPW4mJm51bGwhPXQmJiFOcyh0KSl8fFoudGVzdCh0KXx8IUsudGVzdCh0KXx8bnVsbCE9ZSYmdCBpbiBFdChlKX1mdW5jdGlvbiBGbyh0KXt2YXIgZT1Fbyh0KSxuPURuW2VdO2lmKCJmdW5jdGlvbiIhPXR5cGVvZiBufHwhKGUgaW4gVm4ucHJvdG90eXBlKSlyZXR1cm4hMTtpZih0PT09bilyZXR1cm4hMDt2YXIgaT1NbyhuKTtyZXR1cm4hIWkmJnQ9PT1pWzBdfSh4biYmTm8obmV3IHhuKG5ldyBBcnJheUJ1ZmZlcigxKSkpIT1MfHx3biYmTm8obmV3IHduKSE9Ynx8U24mJk5vKFNuLnJlc29sdmUoKSkhPVN8fE1uJiZObyhuZXcgTW4pIT1FfHxFbiYmTm8obmV3IEVuKSE9QykmJihObz1mdW5jdGlvbih0KXt2YXIgZT1HaSh0KSxpPWU9PXc/dC5jb25zdHJ1Y3RvcjpuLHI9aT9yYShpKToiIjtpZihyKXN3aXRjaChyKXtjYXNlIGtuOnJldHVybiBMO2Nhc2UgTG46cmV0dXJuIGI7Y2FzZSBQbjpyZXR1cm4gUztjYXNlIEluOnJldHVybiBFO2Nhc2UgTm46cmV0dXJuIEN9cmV0dXJuIGV9KTt2YXIgVm89UHQ/dnM6amw7ZnVuY3Rpb24gam8odCl7dmFyIGU9dCYmdC5jb25zdHJ1Y3RvcjtyZXR1cm4gdD09PSgiZnVuY3Rpb24iPT10eXBlb2YgZSYmZS5wcm90b3R5cGV8fEx0KX1mdW5jdGlvbiBVbyh0KXtyZXR1cm4gdD09dCYmIXdzKHQpfWZ1bmN0aW9uIEdvKHQsZSl7cmV0dXJuIGZ1bmN0aW9uKGkpe3JldHVybiBudWxsIT1pJiZpW3RdPT09ZSYmKGUhPT1ufHx0IGluIEV0KGkpKX19ZnVuY3Rpb24gV28odCxlLGkpe3JldHVybiBlPW1uKGU9PT1uP3QubGVuZ3RoLTE6ZSwwKSxmdW5jdGlvbigpe2Zvcih2YXIgbj1hcmd1bWVudHMscj0tMSxvPW1uKG4ubGVuZ3RoLWUsMCksYT1idChvKTsrK3I8bzspYVtyXT1uW2Urcl07cj0tMTtmb3IodmFyIHM9YnQoZSsxKTsrK3I8ZTspc1tyXT1uW3JdO3JldHVybiBzW2VdPWkoYSksbWUodCx0aGlzLHMpfX1mdW5jdGlvbiBxbyh0LGUpe3JldHVybiBlLmxlbmd0aDwyP3Q6amkodCx4cihlLDAsLTEpKX1mdW5jdGlvbiBZbyh0LGUpe2Zvcih2YXIgaT10Lmxlbmd0aCxyPWduKGUubGVuZ3RoLGkpLG89WXIodCk7ci0tOyl7dmFyIGE9ZVtyXTt0W3JdPURvKGEsaSk/b1thXTpufXJldHVybiB0fWZ1bmN0aW9uIFhvKHQsZSl7aWYoKCJjb25zdHJ1Y3RvciIhPT1lfHwiZnVuY3Rpb24iIT10eXBlb2YgdFtlXSkmJiJfX3Byb3RvX18iIT1lKXJldHVybiB0W2VdfXZhciAkbz1Rbyh5ciksS289c258fGZ1bmN0aW9uKHQsZSl7cmV0dXJuIGllLnNldFRpbWVvdXQodCxlKX0sWm89UW8odnIpO2Z1bmN0aW9uIEpvKHQsZSxuKXt2YXIgaT1lKyIiO3JldHVybiBabyh0LChmdW5jdGlvbiBhKHQsZSl7dmFyIG49ZS5sZW5ndGg7aWYoIW4pcmV0dXJuIHQ7dmFyIGk9bi0xO3JldHVybiBlW2ldPShuPjE/IiYgIjoiIikrZVtpXSxlPWUuam9pbihuPjI/IiwgIjoiICIpLHQucmVwbGFjZShydCwie1xuLyogW3dyYXBwZWQgd2l0aCAiK2UrIl0gKi9cbiIpfSkoaSwoZnVuY3Rpb24gbyh0LGUpe3JldHVybiBfZShkLChmdW5jdGlvbihuKXt2YXIgaT0iXy4iK25bMF07ZSZuWzFdJiYhd2UodCxpKSYmdC5wdXNoKGkpfSkpLHQuc29ydCgpfSkoKGZ1bmN0aW9uIHIodCl7dmFyIGU9dC5tYXRjaChvdCk7cmV0dXJuIGU/ZVsxXS5zcGxpdChhdCk6W119KShpKSxuKSkpfWZ1bmN0aW9uIFFvKHQpe3ZhciBlPTAsaT0wO3JldHVybiBmdW5jdGlvbigpe3ZhciByPV9uKCksbz0xNi0oci1pKTtpZihpPXIsbz4wKXtpZigrK2U+PTgwMClyZXR1cm4gYXJndW1lbnRzWzBdfWVsc2UgZT0wO3JldHVybiB0LmFwcGx5KG4sYXJndW1lbnRzKX19ZnVuY3Rpb24gdGEodCxlKXt2YXIgaT0tMSxyPXQubGVuZ3RoLG89ci0xO2ZvcihlPWU9PT1uP3I6ZTsrK2k8ZTspe3ZhciBhPWRyKGksbykscz10W2FdO3RbYV09dFtpXSx0W2ldPXN9cmV0dXJuIHQubGVuZ3RoPWUsdH12YXIgZWE9KGZ1bmN0aW9uIG5hKHQpe3ZhciBlPXRzKHQsKGZ1bmN0aW9uKHQpe3JldHVybiA1MDA9PT1uLnNpemUmJm4uY2xlYXIoKSx0fSkpLG49ZS5jYWNoZTtyZXR1cm4gZX0pKChmdW5jdGlvbih0KXt2YXIgZT1bXTtyZXR1cm4gNDY9PT10LmNoYXJDb2RlQXQoMCkmJmUucHVzaCgiIiksdC5yZXBsYWNlKEosKGZ1bmN0aW9uKHQsbixpLHIpe2UucHVzaChpP3IucmVwbGFjZShsdCwiJDEiKTpufHx0KX0pKSxlfSkpO2Z1bmN0aW9uIGlhKHQpe2lmKCJzdHJpbmciPT10eXBlb2YgdHx8TnModCkpcmV0dXJuIHQ7dmFyIGU9dCsiIjtyZXR1cm4iMCI9PWUmJjEvdD09LTEvMD8iLTAiOmV9ZnVuY3Rpb24gcmEodCl7aWYobnVsbCE9dCl7dHJ5e3JldHVybiBJdC5jYWxsKHQpfWNhdGNoKHQpe310cnl7cmV0dXJuIHQrIiJ9Y2F0Y2godCl7fX1yZXR1cm4iIn1mdW5jdGlvbiBvYSh0KXtpZih0IGluc3RhbmNlb2YgVm4pcmV0dXJuIHQuY2xvbmUoKTt2YXIgZT1uZXcgRm4odC5fX3dyYXBwZWRfXyx0Ll9fY2hhaW5fXyk7cmV0dXJuIGUuX19hY3Rpb25zX189WXIodC5fX2FjdGlvbnNfXyksZS5fX2luZGV4X189dC5fX2luZGV4X18sZS5fX3ZhbHVlc19fPXQuX192YWx1ZXNfXyxlfXZhciBhYT1mcigoZnVuY3Rpb24odCxlKXtyZXR1cm4gZnModCk/bGkodCx6aShlLDEsZnMsITApKTpbXX0pKSxzYT1mcigoZnVuY3Rpb24odCxlKXt2YXIgaT1nYShlKTtyZXR1cm4gZnMoaSkmJihpPW4pLGZzKHQpP2xpKHQsemkoZSwxLGZzLCEwKSxBbyhpLDIpKTpbXX0pKSxsYT1mcigoZnVuY3Rpb24odCxlKXt2YXIgaT1nYShlKTtyZXR1cm4gZnMoaSkmJihpPW4pLGZzKHQpP2xpKHQsemkoZSwxLGZzLCEwKSxuLGkpOltdfSkpO2Z1bmN0aW9uIGNhKHQsZSxuKXt2YXIgaT1udWxsPT10PzA6dC5sZW5ndGg7aWYoIWkpcmV0dXJuLTE7dmFyIHI9bnVsbD09bj8wOkZzKG4pO3JldHVybiByPDAmJihyPW1uKGkrciwwKSksUGUodCxBbyhlLDMpLHIpfWZ1bmN0aW9uIHVhKHQsZSxpKXt2YXIgcj1udWxsPT10PzA6dC5sZW5ndGg7aWYoIXIpcmV0dXJuLTE7dmFyIG89ci0xO3JldHVybiBpIT09biYmKG89RnMoaSksbz1pPDA/bW4ocitvLDApOmduKG8sci0xKSksUGUodCxBbyhlLDMpLG8sITApfWZ1bmN0aW9uIGhhKHQpe3JldHVybiBudWxsIT10JiZ0Lmxlbmd0aD96aSh0LDEpOltdfWZ1bmN0aW9uIGRhKHQpe3JldHVybiB0JiZ0Lmxlbmd0aD90WzBdOm59dmFyIHBhPWZyKChmdW5jdGlvbih0KXt2YXIgZT1NZSh0LFJyKTtyZXR1cm4gZS5sZW5ndGgmJmVbMF09PT10WzBdP1hpKGUpOltdfSkpLGZhPWZyKChmdW5jdGlvbih0KXt2YXIgZT1nYSh0KSxpPU1lKHQsUnIpO3JldHVybiBlPT09Z2EoaSk/ZT1uOmkucG9wKCksaS5sZW5ndGgmJmlbMF09PT10WzBdP1hpKGksQW8oZSwyKSk6W119KSksbWE9ZnIoKGZ1bmN0aW9uKHQpe3ZhciBlPWdhKHQpLGk9TWUodCxScik7cmV0dXJuKGU9ImZ1bmN0aW9uIj09dHlwZW9mIGU/ZTpuKSYmaS5wb3AoKSxpLmxlbmd0aCYmaVswXT09PXRbMF0/WGkoaSxuLGUpOltdfSkpO2Z1bmN0aW9uIGdhKHQpe3ZhciBlPW51bGw9PXQ/MDp0Lmxlbmd0aDtyZXR1cm4gZT90W2UtMV06bn12YXIgX2E9ZnIoeWEpO2Z1bmN0aW9uIHlhKHQsZSl7cmV0dXJuIHQmJnQubGVuZ3RoJiZlJiZlLmxlbmd0aD91cih0LGUpOnR9dmFyIHZhPXhvKChmdW5jdGlvbih0LGUpe3ZhciBuPW51bGw9PXQ/MDp0Lmxlbmd0aCxpPWlpKHQsZSk7cmV0dXJuIGhyKHQsTWUoZSwoZnVuY3Rpb24odCl7cmV0dXJuIERvKHQsbik/K3Q6dH0pKS5zb3J0KEdyKSksaX0pKTtmdW5jdGlvbiBiYSh0KXtyZXR1cm4gbnVsbD09dD90OmJuLmNhbGwodCl9dmFyIHhhPWZyKChmdW5jdGlvbih0KXtyZXR1cm4gQ3IoemkodCwxLGZzLCEwKSl9KSksd2E9ZnIoKGZ1bmN0aW9uKHQpe3ZhciBlPWdhKHQpO3JldHVybiBmcyhlKSYmKGU9biksQ3IoemkodCwxLGZzLCEwKSxBbyhlLDIpKX0pKSxTYT1mcigoZnVuY3Rpb24odCl7dmFyIGU9Z2EodCk7cmV0dXJuIGU9ImZ1bmN0aW9uIj09dHlwZW9mIGU/ZTpuLENyKHppKHQsMSxmcywhMCksbixlKX0pKTtmdW5jdGlvbiBNYSh0KXtpZighdHx8IXQubGVuZ3RoKXJldHVybltdO3ZhciBlPTA7cmV0dXJuIHQ9eGUodCwoZnVuY3Rpb24odCl7aWYoZnModCkpcmV0dXJuIGU9bW4odC5sZW5ndGgsZSksITB9KSksRmUoZSwoZnVuY3Rpb24oZSl7cmV0dXJuIE1lKHQsemUoZSkpfSkpfWZ1bmN0aW9uIEVhKHQsZSl7aWYoIXR8fCF0Lmxlbmd0aClyZXR1cm5bXTt2YXIgaT1NYSh0KTtyZXR1cm4gbnVsbD09ZT9pOk1lKGksKGZ1bmN0aW9uKHQpe3JldHVybiBtZShlLG4sdCl9KSl9dmFyIFRhPWZyKChmdW5jdGlvbih0LGUpe3JldHVybiBmcyh0KT9saSh0LGUpOltdfSkpLEFhPWZyKChmdW5jdGlvbih0KXtyZXR1cm4gTnIoeGUodCxmcykpfSkpLENhPWZyKChmdW5jdGlvbih0KXt2YXIgZT1nYSh0KTtyZXR1cm4gZnMoZSkmJihlPW4pLE5yKHhlKHQsZnMpLEFvKGUsMikpfSkpLGthPWZyKChmdW5jdGlvbih0KXt2YXIgZT1nYSh0KTtyZXR1cm4gZT0iZnVuY3Rpb24iPT10eXBlb2YgZT9lOm4sTnIoeGUodCxmcyksbixlKX0pKSxMYT1mcihNYSksUGE9ZnIoKGZ1bmN0aW9uKHQpe3ZhciBlPXQubGVuZ3RoLGk9ZT4xP3RbZS0xXTpuO3JldHVybiBpPSJmdW5jdGlvbiI9PXR5cGVvZiBpPyh0LnBvcCgpLGkpOm4sRWEodCxpKX0pKTtmdW5jdGlvbiBJYSh0KXt2YXIgZT1Ebih0KTtyZXR1cm4gZS5fX2NoYWluX189ITAsZX1mdW5jdGlvbiBOYSh0LGUpe3JldHVybiBlKHQpfXZhciBPYT14bygoZnVuY3Rpb24odCl7dmFyIGU9dC5sZW5ndGgsaT1lP3RbMF06MCxyPXRoaXMuX193cmFwcGVkX18sbz1mdW5jdGlvbihlKXtyZXR1cm4gaWkoZSx0KX07cmV0dXJuIShlPjF8fHRoaXMuX19hY3Rpb25zX18ubGVuZ3RoKSYmciBpbnN0YW5jZW9mIFZuJiZEbyhpKT8oKHI9ci5zbGljZShpLCtpKyhlPzE6MCkpKS5fX2FjdGlvbnNfXy5wdXNoKHtmdW5jOk5hLGFyZ3M6W29dLHRoaXNBcmc6bn0pLG5ldyBGbihyLHRoaXMuX19jaGFpbl9fKS50aHJ1KChmdW5jdGlvbih0KXtyZXR1cm4gZSYmIXQubGVuZ3RoJiZ0LnB1c2gobiksdH0pKSk6dGhpcy50aHJ1KG8pfSkpLFJhPSRyKChmdW5jdGlvbih0LGUsbil7TnQuY2FsbCh0LG4pPysrdFtuXTpuaSh0LG4sMSl9KSksemE9bm8oY2EpLERhPW5vKHVhKTtmdW5jdGlvbiBCYSh0LGUpe3JldHVybih1cyh0KT9fZTpQaSkodCxBbyhlLDMpKX1mdW5jdGlvbiBIYSh0LGUpe3JldHVybih1cyh0KT95ZTpJaSkodCxBbyhlLDMpKX12YXIgRmE9JHIoKGZ1bmN0aW9uKHQsZSxuKXtOdC5jYWxsKHQsbik/dFtuXS5wdXNoKGUpOm5pKHQsbixbZV0pfSkpLFZhPWZyKChmdW5jdGlvbih0LGUsbil7dmFyIGk9LTEscj0iZnVuY3Rpb24iPT10eXBlb2YgZSxvPXBzKHQpP2J0KHQubGVuZ3RoKTpbXTtyZXR1cm4gUGkodCwoZnVuY3Rpb24odCl7b1srK2ldPXI/bWUoZSx0LG4pOiRpKHQsZSxuKX0pKSxvfSkpLGphPSRyKChmdW5jdGlvbih0LGUsbil7bmkodCxuLGUpfSkpO2Z1bmN0aW9uIFVhKHQsZSl7cmV0dXJuKHVzKHQpP01lOmlyKSh0LEFvKGUsMykpfXZhciBHYT0kcigoZnVuY3Rpb24odCxlLG4pe3Rbbj8wOjFdLnB1c2goZSl9KSwoZnVuY3Rpb24oKXtyZXR1cm5bW10sW11dfSkpLFdhPWZyKChmdW5jdGlvbih0LGUpe2lmKG51bGw9PXQpcmV0dXJuW107dmFyIG49ZS5sZW5ndGg7cmV0dXJuIG4+MSYmQm8odCxlWzBdLGVbMV0pP2U9W106bj4yJiZCbyhlWzBdLGVbMV0sZVsyXSkmJihlPVtlWzBdXSksbHIodCx6aShlLDEpLFtdKX0pKSxxYT1EZXx8ZnVuY3Rpb24oKXtyZXR1cm4gaWUuRGF0ZS5ub3coKX07ZnVuY3Rpb24gWWEodCxlLGkpe3JldHVybiBlPWk/bjplLGdvKHQscyxuLG4sbixuLGU9dCYmbnVsbD09ZT90Lmxlbmd0aDplKX1mdW5jdGlvbiBYYSh0LGUpe3ZhciByO2lmKCJmdW5jdGlvbiIhPXR5cGVvZiBlKXRocm93IG5ldyBDdChpKTtyZXR1cm4gdD1Gcyh0KSxmdW5jdGlvbigpe3JldHVybi0tdD4wJiYocj1lLmFwcGx5KHRoaXMsYXJndW1lbnRzKSksdDw9MSYmKGU9bikscn19dmFyICRhPWZyKChmdW5jdGlvbih0LGUsbil7dmFyIGk9MTtpZihuLmxlbmd0aCl7dmFyIHI9UWUobixUbygkYSkpO2l8PWF9cmV0dXJuIGdvKHQsaSxlLG4scil9KSksS2E9ZnIoKGZ1bmN0aW9uKHQsZSxuKXt2YXIgaT0zO2lmKG4ubGVuZ3RoKXt2YXIgcj1RZShuLFRvKEthKSk7aXw9YX1yZXR1cm4gZ28oZSxpLHQsbixyKX0pKTtmdW5jdGlvbiBaYSh0LGUscil7dmFyIG8sYSxzLGwsYyx1LGg9MCxkPSExLHA9ITEsZj0hMDtpZigiZnVuY3Rpb24iIT10eXBlb2YgdCl0aHJvdyBuZXcgQ3QoaSk7ZnVuY3Rpb24gbShlKXt2YXIgaT1vLHI9YTtyZXR1cm4gbz1hPW4saD1lLGw9dC5hcHBseShyLGkpfWZ1bmN0aW9uIGcodCl7cmV0dXJuIGg9dCxjPUtvKHksZSksZD9tKHQpOmx9ZnVuY3Rpb24gXyh0KXt2YXIgaT10LXU7cmV0dXJuIHU9PT1ufHxpPj1lfHxpPDB8fHAmJnQtaD49c31mdW5jdGlvbiB5KCl7dmFyIHQ9cWEoKTtpZihfKHQpKXJldHVybiB2KHQpO2M9S28oeSwoZnVuY3Rpb24gbih0KXt2YXIgbj1lLSh0LXUpO3JldHVybiBwP2duKG4scy0odC1oKSk6bn0pKHQpKX1mdW5jdGlvbiB2KHQpe3JldHVybiBjPW4sZiYmbz9tKHQpOihvPWE9bixsKX1mdW5jdGlvbiBiKCl7dmFyIHQ9cWEoKSxpPV8odCk7aWYobz1hcmd1bWVudHMsYT10aGlzLHU9dCxpKXtpZihjPT09bilyZXR1cm4gZyh1KTtpZihwKXJldHVybiBGcihjKSxjPUtvKHksZSksbSh1KX1yZXR1cm4gYz09PW4mJihjPUtvKHksZSkpLGx9cmV0dXJuIGU9anMoZSl8fDAsd3MocikmJihkPSEhci5sZWFkaW5nLHM9KHA9Im1heFdhaXQiaW4gcik/bW4oanMoci5tYXhXYWl0KXx8MCxlKTpzLGY9InRyYWlsaW5nImluIHI/ISFyLnRyYWlsaW5nOmYpLGIuY2FuY2VsPWZ1bmN0aW9uIHgoKXtjIT09biYmRnIoYyksaD0wLG89dT1hPWM9bn0sYi5mbHVzaD1mdW5jdGlvbiB3KCl7cmV0dXJuIGM9PT1uP2w6dihxYSgpKX0sYn12YXIgSmE9ZnIoKGZ1bmN0aW9uKHQsZSl7cmV0dXJuIHNpKHQsMSxlKX0pKSxRYT1mcigoZnVuY3Rpb24odCxlLG4pe3JldHVybiBzaSh0LGpzKGUpfHwwLG4pfSkpO2Z1bmN0aW9uIHRzKHQsZSl7aWYoImZ1bmN0aW9uIiE9dHlwZW9mIHR8fG51bGwhPWUmJiJmdW5jdGlvbiIhPXR5cGVvZiBlKXRocm93IG5ldyBDdChpKTt2YXIgbj1mdW5jdGlvbigpe3ZhciBpPWFyZ3VtZW50cyxyPWU/ZS5hcHBseSh0aGlzLGkpOmlbMF0sbz1uLmNhY2hlO2lmKG8uaGFzKHIpKXJldHVybiBvLmdldChyKTt2YXIgYT10LmFwcGx5KHRoaXMsaSk7cmV0dXJuIG4uY2FjaGU9by5zZXQocixhKXx8byxhfTtyZXR1cm4gbi5jYWNoZT1uZXcodHMuQ2FjaGV8fEduKSxufWZ1bmN0aW9uIGVzKHQpe2lmKCJmdW5jdGlvbiIhPXR5cGVvZiB0KXRocm93IG5ldyBDdChpKTtyZXR1cm4gZnVuY3Rpb24oKXt2YXIgZT1hcmd1bWVudHM7c3dpdGNoKGUubGVuZ3RoKXtjYXNlIDA6cmV0dXJuIXQuY2FsbCh0aGlzKTtjYXNlIDE6cmV0dXJuIXQuY2FsbCh0aGlzLGVbMF0pO2Nhc2UgMjpyZXR1cm4hdC5jYWxsKHRoaXMsZVswXSxlWzFdKTtjYXNlIDM6cmV0dXJuIXQuY2FsbCh0aGlzLGVbMF0sZVsxXSxlWzJdKX1yZXR1cm4hdC5hcHBseSh0aGlzLGUpfX10cy5DYWNoZT1Hbjt2YXIgbnM9QnIoKGZ1bmN0aW9uKHQsZSl7dmFyIG49KGU9MT09ZS5sZW5ndGgmJnVzKGVbMF0pP01lKGVbMF0sVmUoQW8oKSkpOk1lKHppKGUsMSksVmUoQW8oKSkpKS5sZW5ndGg7cmV0dXJuIGZyKChmdW5jdGlvbihpKXtmb3IodmFyIHI9LTEsbz1nbihpLmxlbmd0aCxuKTsrK3I8bzspaVtyXT1lW3JdLmNhbGwodGhpcyxpW3JdKTtyZXR1cm4gbWUodCx0aGlzLGkpfSkpfSkpLGlzPWZyKChmdW5jdGlvbih0LGUpe3ZhciBpPVFlKGUsVG8oaXMpKTtyZXR1cm4gZ28odCxhLG4sZSxpKX0pKSxycz1mcigoZnVuY3Rpb24odCxlKXt2YXIgaT1RZShlLFRvKHJzKSk7cmV0dXJuIGdvKHQsNjQsbixlLGkpfSkpLG9zPXhvKChmdW5jdGlvbih0LGUpe3JldHVybiBnbyh0LDI1NixuLG4sbixlKX0pKTtmdW5jdGlvbiBhcyh0LGUpe3JldHVybiB0PT09ZXx8dCE9dCYmZSE9ZX12YXIgc3M9dW8oV2kpLGxzPXVvKChmdW5jdGlvbih0LGUpe3JldHVybiB0Pj1lfSkpLGNzPUtpKChmdW5jdGlvbigpe3JldHVybiBhcmd1bWVudHN9KSgpKT9LaTpmdW5jdGlvbih0KXtyZXR1cm4gU3ModCkmJk50LmNhbGwodCwiY2FsbGVlIikmJiFuZS5jYWxsKHQsImNhbGxlZSIpfSx1cz1idC5pc0FycmF5LGhzPWNlP1ZlKGNlKTpmdW5jdGlvbiBkcyh0KXtyZXR1cm4gU3ModCkmJkdpKHQpPT1rfTtmdW5jdGlvbiBwcyh0KXtyZXR1cm4gbnVsbCE9dCYmeHModC5sZW5ndGgpJiYhdnModCl9ZnVuY3Rpb24gZnModCl7cmV0dXJuIFNzKHQpJiZwcyh0KX12YXIgbXM9aG58fGpsLGdzPXVlP1ZlKHVlKTpmdW5jdGlvbiBfcyh0KXtyZXR1cm4gU3ModCkmJkdpKHQpPT1nfTtmdW5jdGlvbiB5cyh0KXtpZighU3ModCkpcmV0dXJuITE7dmFyIGU9R2kodCk7cmV0dXJuIGU9PV98fCJbb2JqZWN0IERPTUV4Y2VwdGlvbl0iPT1lfHwic3RyaW5nIj09dHlwZW9mIHQubWVzc2FnZSYmInN0cmluZyI9PXR5cGVvZiB0Lm5hbWUmJiFBcyh0KX1mdW5jdGlvbiB2cyh0KXtpZighd3ModCkpcmV0dXJuITE7dmFyIGU9R2kodCk7cmV0dXJuIGU9PXl8fGU9PXZ8fCJbb2JqZWN0IEFzeW5jRnVuY3Rpb25dIj09ZXx8IltvYmplY3QgUHJveHldIj09ZX1mdW5jdGlvbiBicyh0KXtyZXR1cm4ibnVtYmVyIj09dHlwZW9mIHQmJnQ9PUZzKHQpfWZ1bmN0aW9uIHhzKHQpe3JldHVybiJudW1iZXIiPT10eXBlb2YgdCYmdD4tMSYmdCUxPT0wJiZ0PD1jfWZ1bmN0aW9uIHdzKHQpe3ZhciBlPXR5cGVvZiB0O3JldHVybiBudWxsIT10JiYoIm9iamVjdCI9PWV8fCJmdW5jdGlvbiI9PWUpfWZ1bmN0aW9uIFNzKHQpe3JldHVybiBudWxsIT10JiYib2JqZWN0Ij09dHlwZW9mIHR9dmFyIE1zPWhlP1ZlKGhlKTpmdW5jdGlvbiBFcyh0KXtyZXR1cm4gU3ModCkmJk5vKHQpPT1ifTtmdW5jdGlvbiBUcyh0KXtyZXR1cm4ibnVtYmVyIj09dHlwZW9mIHR8fFNzKHQpJiZHaSh0KT09eH1mdW5jdGlvbiBBcyh0KXtpZighU3ModCl8fEdpKHQpIT13KXJldHVybiExO3ZhciBlPUp0KHQpO2lmKG51bGw9PT1lKXJldHVybiEwO3ZhciBuPU50LmNhbGwoZSwiY29uc3RydWN0b3IiKSYmZS5jb25zdHJ1Y3RvcjtyZXR1cm4iZnVuY3Rpb24iPT10eXBlb2YgbiYmbiBpbnN0YW5jZW9mIG4mJkl0LmNhbGwobik9PUR0fXZhciBDcz1kZT9WZShkZSk6ZnVuY3Rpb24ga3ModCl7cmV0dXJuIFNzKHQpJiZHaSh0KT09TX0sTHM9cGU/VmUocGUpOmZ1bmN0aW9uIFBzKHQpe3JldHVybiBTcyh0KSYmTm8odCk9PUV9O2Z1bmN0aW9uIElzKHQpe3JldHVybiJzdHJpbmciPT10eXBlb2YgdHx8IXVzKHQpJiZTcyh0KSYmR2kodCk9PVR9ZnVuY3Rpb24gTnModCl7cmV0dXJuInN5bWJvbCI9PXR5cGVvZiB0fHxTcyh0KSYmR2kodCk9PUF9dmFyIE9zPWZlP1ZlKGZlKTpmdW5jdGlvbiBScyh0KXtyZXR1cm4gU3ModCkmJnhzKHQubGVuZ3RoKSYmISFLdFtHaSh0KV19LHpzPXVvKG5yKSxEcz11bygoZnVuY3Rpb24odCxlKXtyZXR1cm4gdDw9ZX0pKTtmdW5jdGlvbiBCcyh0KXtpZighdClyZXR1cm5bXTtpZihwcyh0KSlyZXR1cm4gSXModCk/cm4odCk6WXIodCk7aWYoc2UmJnRbc2VdKXJldHVybihmdW5jdGlvbiBlKHQpe2Zvcih2YXIgZSxuPVtdOyEoZT10Lm5leHQoKSkuZG9uZTspbi5wdXNoKGUudmFsdWUpO3JldHVybiBufSkodFtzZV0oKSk7dmFyIG49Tm8odCk7cmV0dXJuKG49PWI/WmU6bj09RT90bjpkbCkodCl9ZnVuY3Rpb24gSHModCl7cmV0dXJuIHQ/KHQ9anModCkpPT09bHx8dD09PS0xLzA/MTc5NzY5MzEzNDg2MjMxNTdlMjkyKih0PDA/LTE6MSk6dD09dD90OjA6MD09PXQ/dDowfWZ1bmN0aW9uIEZzKHQpe3ZhciBlPUhzKHQpLG49ZSUxO3JldHVybiBlPT1lP24/ZS1uOmU6MH1mdW5jdGlvbiBWcyh0KXtyZXR1cm4gdD9yaShGcyh0KSwwLGgpOjB9ZnVuY3Rpb24ganModCl7aWYoIm51bWJlciI9PXR5cGVvZiB0KXJldHVybiB0O2lmKE5zKHQpKXJldHVybiB1O2lmKHdzKHQpKXt2YXIgZT0iZnVuY3Rpb24iPT10eXBlb2YgdC52YWx1ZU9mP3QudmFsdWVPZigpOnQ7dD13cyhlKT9lKyIiOmV9aWYoInN0cmluZyIhPXR5cGVvZiB0KXJldHVybiAwPT09dD90Oit0O3Q9dC5yZXBsYWNlKGV0LCIiKTt2YXIgbj1kdC50ZXN0KHQpO3JldHVybiBufHxmdC50ZXN0KHQpP3RlKHQuc2xpY2UoMiksbj8yOjgpOmh0LnRlc3QodCk/dTordH1mdW5jdGlvbiBVcyh0KXtyZXR1cm4gWHIodCxybCh0KSl9ZnVuY3Rpb24gR3ModCl7cmV0dXJuIG51bGw9PXQ/IiI6QXIodCl9dmFyIFdzPUtyKChmdW5jdGlvbih0LGUpe2lmKGpvKGUpfHxwcyhlKSlYcihlLGlsKGUpLHQpO2Vsc2UgZm9yKHZhciBuIGluIGUpTnQuY2FsbChlLG4pJiZKbih0LG4sZVtuXSl9KSkscXM9S3IoKGZ1bmN0aW9uKHQsZSl7WHIoZSxybChlKSx0KX0pKSxZcz1LcigoZnVuY3Rpb24odCxlLG4saSl7WHIoZSxybChlKSx0LGkpfSkpLFhzPUtyKChmdW5jdGlvbih0LGUsbixpKXtYcihlLGlsKGUpLHQsaSl9KSksJHM9eG8oaWkpLEtzPWZyKChmdW5jdGlvbih0LGUpe3Q9RXQodCk7dmFyIGk9LTEscj1lLmxlbmd0aCxvPXI+Mj9lWzJdOm47Zm9yKG8mJkJvKGVbMF0sZVsxXSxvKSYmKHI9MSk7KytpPHI7KWZvcih2YXIgYT1lW2ldLHM9cmwoYSksbD0tMSxjPXMubGVuZ3RoOysrbDxjOyl7dmFyIHU9c1tsXSxoPXRbdV07KGg9PT1ufHxhcyhoLEx0W3VdKSYmIU50LmNhbGwodCx1KSkmJih0W3VdPWFbdV0pfXJldHVybiB0fSkpLFpzPWZyKChmdW5jdGlvbih0KXtyZXR1cm4gdC5wdXNoKG4seW8pLG1lKGFsLG4sdCl9KSk7ZnVuY3Rpb24gSnModCxlLGkpe3ZhciByPW51bGw9PXQ/bjpqaSh0LGUpO3JldHVybiByPT09bj9pOnJ9ZnVuY3Rpb24gUXModCxlKXtyZXR1cm4gbnVsbCE9dCYmT28odCxlLFlpKX12YXIgdGw9b28oKGZ1bmN0aW9uKHQsZSxuKXtudWxsIT1lJiYiZnVuY3Rpb24iIT10eXBlb2YgZS50b1N0cmluZyYmKGU9enQuY2FsbChlKSksdFtlXT1ufSksVGwoa2wpKSxlbD1vbygoZnVuY3Rpb24odCxlLG4pe251bGwhPWUmJiJmdW5jdGlvbiIhPXR5cGVvZiBlLnRvU3RyaW5nJiYoZT16dC5jYWxsKGUpKSxOdC5jYWxsKHQsZSk/dFtlXS5wdXNoKG4pOnRbZV09W25dfSksQW8pLG5sPWZyKCRpKTtmdW5jdGlvbiBpbCh0KXtyZXR1cm4gcHModCk/WW4odCk6ZXIodCl9ZnVuY3Rpb24gcmwodCl7cmV0dXJuIHBzKHQpP1luKHQsITApOihmdW5jdGlvbiBlKHQpe2lmKCF3cyh0KSlyZXR1cm4oZnVuY3Rpb24gZSh0KXt2YXIgZT1bXTtpZihudWxsIT10KWZvcih2YXIgbiBpbiBFdCh0KSllLnB1c2gobik7cmV0dXJuIGV9KSh0KTt2YXIgbj1qbyh0KSxpPVtdO2Zvcih2YXIgciBpbiB0KSgiY29uc3RydWN0b3IiIT1yfHwhbiYmTnQuY2FsbCh0LHIpKSYmaS5wdXNoKHIpO3JldHVybiBpfSkodCl9dmFyIG9sPUtyKChmdW5jdGlvbih0LGUsbil7YXIodCxlLG4pfSkpLGFsPUtyKChmdW5jdGlvbih0LGUsbixpKXthcih0LGUsbixpKX0pKSxzbD14bygoZnVuY3Rpb24odCxlKXt2YXIgbj17fTtpZihudWxsPT10KXJldHVybiBuO3ZhciBpPSExO2U9TWUoZSwoZnVuY3Rpb24oZSl7cmV0dXJuIGU9RHIoZSx0KSxpfHwoaT1lLmxlbmd0aD4xKSxlfSkpLFhyKHQsU28odCksbiksaSYmKG49b2kobiw3LHZvKSk7Zm9yKHZhciByPWUubGVuZ3RoO3ItLTspa3IobixlW3JdKTtyZXR1cm4gbn0pKSxsbD14bygoZnVuY3Rpb24odCxlKXtyZXR1cm4gbnVsbD09dD97fTooZnVuY3Rpb24gbih0LGUpe3JldHVybiBjcih0LGUsKGZ1bmN0aW9uKGUsbil7cmV0dXJuIFFzKHQsbil9KSl9KSh0LGUpfSkpO2Z1bmN0aW9uIGNsKHQsZSl7aWYobnVsbD09dClyZXR1cm57fTt2YXIgbj1NZShTbyh0KSwoZnVuY3Rpb24odCl7cmV0dXJuW3RdfSkpO3JldHVybiBlPUFvKGUpLGNyKHQsbiwoZnVuY3Rpb24odCxuKXtyZXR1cm4gZSh0LG5bMF0pfSkpfXZhciB1bD1tbyhpbCksaGw9bW8ocmwpO2Z1bmN0aW9uIGRsKHQpe3JldHVybiBudWxsPT10P1tdOmplKHQsaWwodCkpfXZhciBwbD10bygoZnVuY3Rpb24odCxlLG4pe3JldHVybiBlPWUudG9Mb3dlckNhc2UoKSx0KyhuP2ZsKGUpOmUpfSkpO2Z1bmN0aW9uIGZsKHQpe3JldHVybiB3bChHcyh0KS50b0xvd2VyQ2FzZSgpKX1mdW5jdGlvbiBtbCh0KXtyZXR1cm4odD1Hcyh0KSkmJnQucmVwbGFjZShndCxZZSkucmVwbGFjZShVdCwiIil9dmFyIGdsPXRvKChmdW5jdGlvbih0LGUsbil7cmV0dXJuIHQrKG4/Ii0iOiIiKStlLnRvTG93ZXJDYXNlKCl9KSksX2w9dG8oKGZ1bmN0aW9uKHQsZSxuKXtyZXR1cm4gdCsobj8iICI6IiIpK2UudG9Mb3dlckNhc2UoKX0pKSx5bD1RcigidG9Mb3dlckNhc2UiKSx2bD10bygoZnVuY3Rpb24odCxlLG4pe3JldHVybiB0KyhuPyJfIjoiIikrZS50b0xvd2VyQ2FzZSgpfSkpLGJsPXRvKChmdW5jdGlvbih0LGUsbil7cmV0dXJuIHQrKG4/IiAiOiIiKSt3bChlKX0pKSx4bD10bygoZnVuY3Rpb24odCxlLG4pe3JldHVybiB0KyhuPyIgIjoiIikrZS50b1VwcGVyQ2FzZSgpfSkpLHdsPVFyKCJ0b1VwcGVyQ2FzZSIpO2Z1bmN0aW9uIFNsKHQsZSxpKXtyZXR1cm4gdD1Hcyh0KSwoZT1pP246ZSk9PT1uPyhmdW5jdGlvbiByKHQpe3JldHVybiBZdC50ZXN0KHQpfSkodCk/KGZ1bmN0aW9uIG8odCl7cmV0dXJuIHQubWF0Y2goV3QpfHxbXX0pKHQpOihmdW5jdGlvbiBhKHQpe3JldHVybiB0Lm1hdGNoKHN0KXx8W119KSh0KTp0Lm1hdGNoKGUpfHxbXX12YXIgTWw9ZnIoKGZ1bmN0aW9uKHQsZSl7dHJ5e3JldHVybiBtZSh0LG4sZSl9Y2F0Y2godCl7cmV0dXJuIHlzKHQpP3Q6bmV3IHd0KHQpfX0pKSxFbD14bygoZnVuY3Rpb24odCxlKXtyZXR1cm4gX2UoZSwoZnVuY3Rpb24oZSl7ZT1pYShlKSxuaSh0LGUsJGEodFtlXSx0KSl9KSksdH0pKTtmdW5jdGlvbiBUbCh0KXtyZXR1cm4gZnVuY3Rpb24oKXtyZXR1cm4gdH19dmFyIEFsPWlvKCksQ2w9aW8oITApO2Z1bmN0aW9uIGtsKHQpe3JldHVybiB0fWZ1bmN0aW9uIExsKHQpe3JldHVybiB0cigiZnVuY3Rpb24iPT10eXBlb2YgdD90Om9pKHQsMSkpfXZhciBQbD1mcigoZnVuY3Rpb24odCxlKXtyZXR1cm4gZnVuY3Rpb24obil7cmV0dXJuICRpKG4sdCxlKX19KSksSWw9ZnIoKGZ1bmN0aW9uKHQsZSl7cmV0dXJuIGZ1bmN0aW9uKG4pe3JldHVybiAkaSh0LG4sZSl9fSkpO2Z1bmN0aW9uIE5sKHQsZSxuKXt2YXIgaT1pbChlKSxyPVZpKGUsaSk7bnVsbCE9bnx8d3MoZSkmJihyLmxlbmd0aHx8IWkubGVuZ3RoKXx8KG49ZSxlPXQsdD10aGlzLHI9VmkoZSxpbChlKSkpO3ZhciBvPSEod3MobikmJiJjaGFpbiJpbiBuJiYhbi5jaGFpbiksYT12cyh0KTtyZXR1cm4gX2UociwoZnVuY3Rpb24obil7dmFyIGk9ZVtuXTt0W25dPWksYSYmKHQucHJvdG90eXBlW25dPWZ1bmN0aW9uKCl7dmFyIGU9dGhpcy5fX2NoYWluX187aWYob3x8ZSl7dmFyIG49dCh0aGlzLl9fd3JhcHBlZF9fKSxyPW4uX19hY3Rpb25zX189WXIodGhpcy5fX2FjdGlvbnNfXyk7cmV0dXJuIHIucHVzaCh7ZnVuYzppLGFyZ3M6YXJndW1lbnRzLHRoaXNBcmc6dH0pLG4uX19jaGFpbl9fPWUsbn1yZXR1cm4gaS5hcHBseSh0LEVlKFt0aGlzLnZhbHVlKCldLGFyZ3VtZW50cykpfSl9KSksdH1mdW5jdGlvbiBPbCgpe312YXIgUmw9c28oTWUpLHpsPXNvKGJlKSxEbD1zbyhDZSk7ZnVuY3Rpb24gQmwodCl7cmV0dXJuIEhvKHQpP3plKGlhKHQpKTooZnVuY3Rpb24gZSh0KXtyZXR1cm4gZnVuY3Rpb24oZSl7cmV0dXJuIGppKGUsdCl9fSkodCl9dmFyIEhsPWNvKCksRmw9Y28oITApO2Z1bmN0aW9uIFZsKCl7cmV0dXJuW119ZnVuY3Rpb24gamwoKXtyZXR1cm4hMX12YXIgVWwsR2w9YW8oKGZ1bmN0aW9uKHQsZSl7cmV0dXJuIHQrZX0pLDApLFdsPXBvKCJjZWlsIikscWw9YW8oKGZ1bmN0aW9uKHQsZSl7cmV0dXJuIHQvZX0pLDEpLFlsPXBvKCJmbG9vciIpLFhsPWFvKChmdW5jdGlvbih0LGUpe3JldHVybiB0KmV9KSwxKSwkbD1wbygicm91bmQiKSxLbD1hbygoZnVuY3Rpb24odCxlKXtyZXR1cm4gdC1lfSksMCk7cmV0dXJuIERuLmFmdGVyPWZ1bmN0aW9uIFpsKHQsZSl7aWYoImZ1bmN0aW9uIiE9dHlwZW9mIGUpdGhyb3cgbmV3IEN0KGkpO3JldHVybiB0PUZzKHQpLGZ1bmN0aW9uKCl7aWYoLS10PDEpcmV0dXJuIGUuYXBwbHkodGhpcyxhcmd1bWVudHMpfX0sRG4uYXJ5PVlhLERuLmFzc2lnbj1XcyxEbi5hc3NpZ25Jbj1xcyxEbi5hc3NpZ25JbldpdGg9WXMsRG4uYXNzaWduV2l0aD1YcyxEbi5hdD0kcyxEbi5iZWZvcmU9WGEsRG4uYmluZD0kYSxEbi5iaW5kQWxsPUVsLERuLmJpbmRLZXk9S2EsRG4uY2FzdEFycmF5PWZ1bmN0aW9uIEpsKCl7aWYoIWFyZ3VtZW50cy5sZW5ndGgpcmV0dXJuW107dmFyIHQ9YXJndW1lbnRzWzBdO3JldHVybiB1cyh0KT90Olt0XX0sRG4uY2hhaW49SWEsRG4uY2h1bms9ZnVuY3Rpb24gUWwodCxlLGkpe2U9KGk/Qm8odCxlLGkpOmU9PT1uKT8xOm1uKEZzKGUpLDApO3ZhciByPW51bGw9PXQ/MDp0Lmxlbmd0aDtpZighcnx8ZTwxKXJldHVybltdO2Zvcih2YXIgbz0wLGE9MCxzPWJ0KGxuKHIvZSkpO288cjspc1thKytdPXhyKHQsbyxvKz1lKTtyZXR1cm4gc30sRG4uY29tcGFjdD1mdW5jdGlvbiB0Yyh0KXtmb3IodmFyIGU9LTEsbj1udWxsPT10PzA6dC5sZW5ndGgsaT0wLHI9W107KytlPG47KXt2YXIgbz10W2VdO28mJihyW2krK109byl9cmV0dXJuIHJ9LERuLmNvbmNhdD1mdW5jdGlvbiBlYygpe3ZhciB0PWFyZ3VtZW50cy5sZW5ndGg7aWYoIXQpcmV0dXJuW107Zm9yKHZhciBlPWJ0KHQtMSksbj1hcmd1bWVudHNbMF0saT10O2ktLTspZVtpLTFdPWFyZ3VtZW50c1tpXTtyZXR1cm4gRWUodXMobik/WXIobik6W25dLHppKGUsMSkpfSxEbi5jb25kPWZ1bmN0aW9uIG5jKHQpe3ZhciBlPW51bGw9PXQ/MDp0Lmxlbmd0aCxuPUFvKCk7cmV0dXJuIHQ9ZT9NZSh0LChmdW5jdGlvbih0KXtpZigiZnVuY3Rpb24iIT10eXBlb2YgdFsxXSl0aHJvdyBuZXcgQ3QoaSk7cmV0dXJuW24odFswXSksdFsxXV19KSk6W10sZnIoKGZ1bmN0aW9uKG4pe2Zvcih2YXIgaT0tMTsrK2k8ZTspe3ZhciByPXRbaV07aWYobWUoclswXSx0aGlzLG4pKXJldHVybiBtZShyWzFdLHRoaXMsbil9fSkpfSxEbi5jb25mb3Jtcz1mdW5jdGlvbiBpYyh0KXtyZXR1cm4oZnVuY3Rpb24gZSh0KXt2YXIgZT1pbCh0KTtyZXR1cm4gZnVuY3Rpb24obil7cmV0dXJuIGFpKG4sdCxlKX19KShvaSh0LDEpKX0sRG4uY29uc3RhbnQ9VGwsRG4uY291bnRCeT1SYSxEbi5jcmVhdGU9ZnVuY3Rpb24gcmModCxlKXt2YXIgbj1Cbih0KTtyZXR1cm4gbnVsbD09ZT9uOmVpKG4sZSl9LERuLmN1cnJ5PWZ1bmN0aW9uIHQoZSxpLHIpe3ZhciBvPWdvKGUsOCxuLG4sbixuLG4saT1yP246aSk7cmV0dXJuIG8ucGxhY2Vob2xkZXI9dC5wbGFjZWhvbGRlcixvfSxEbi5jdXJyeVJpZ2h0PWZ1bmN0aW9uIHQoZSxpLHIpe3ZhciBvPWdvKGUsMTYsbixuLG4sbixuLGk9cj9uOmkpO3JldHVybiBvLnBsYWNlaG9sZGVyPXQucGxhY2Vob2xkZXIsb30sRG4uZGVib3VuY2U9WmEsRG4uZGVmYXVsdHM9S3MsRG4uZGVmYXVsdHNEZWVwPVpzLERuLmRlZmVyPUphLERuLmRlbGF5PVFhLERuLmRpZmZlcmVuY2U9YWEsRG4uZGlmZmVyZW5jZUJ5PXNhLERuLmRpZmZlcmVuY2VXaXRoPWxhLERuLmRyb3A9ZnVuY3Rpb24gb2ModCxlLGkpe3ZhciByPW51bGw9PXQ/MDp0Lmxlbmd0aDtyZXR1cm4gcj94cih0LChlPWl8fGU9PT1uPzE6RnMoZSkpPDA/MDplLHIpOltdfSxEbi5kcm9wUmlnaHQ9ZnVuY3Rpb24gYWModCxlLGkpe3ZhciByPW51bGw9PXQ/MDp0Lmxlbmd0aDtyZXR1cm4gcj94cih0LDAsKGU9ci0oZT1pfHxlPT09bj8xOkZzKGUpKSk8MD8wOmUpOltdfSxEbi5kcm9wUmlnaHRXaGlsZT1mdW5jdGlvbiBzYyh0LGUpe3JldHVybiB0JiZ0Lmxlbmd0aD9Qcih0LEFvKGUsMyksITAsITApOltdfSxEbi5kcm9wV2hpbGU9ZnVuY3Rpb24gbGModCxlKXtyZXR1cm4gdCYmdC5sZW5ndGg/UHIodCxBbyhlLDMpLCEwKTpbXX0sRG4uZmlsbD1mdW5jdGlvbiBjYyh0LGUsaSxyKXt2YXIgbz1udWxsPT10PzA6dC5sZW5ndGg7cmV0dXJuIG8/KGkmJiJudW1iZXIiIT10eXBlb2YgaSYmQm8odCxlLGkpJiYoaT0wLHI9byksKGZ1bmN0aW9uIGEodCxlLGkscil7dmFyIG89dC5sZW5ndGg7Zm9yKChpPUZzKGkpKTwwJiYoaT0taT5vPzA6bytpKSwocj1yPT09bnx8cj5vP286RnMocikpPDAmJihyKz1vKSxyPWk+cj8wOlZzKHIpO2k8cjspdFtpKytdPWU7cmV0dXJuIHR9KSh0LGUsaSxyKSk6W119LERuLmZpbHRlcj1mdW5jdGlvbiB1Yyh0LGUpe3JldHVybih1cyh0KT94ZTpSaSkodCxBbyhlLDMpKX0sRG4uZmxhdE1hcD1mdW5jdGlvbiBoYyh0LGUpe3JldHVybiB6aShVYSh0LGUpLDEpfSxEbi5mbGF0TWFwRGVlcD1mdW5jdGlvbiBkYyh0LGUpe3JldHVybiB6aShVYSh0LGUpLGwpfSxEbi5mbGF0TWFwRGVwdGg9ZnVuY3Rpb24gcGModCxlLGkpe3JldHVybiBpPWk9PT1uPzE6RnMoaSksemkoVWEodCxlKSxpKX0sRG4uZmxhdHRlbj1oYSxEbi5mbGF0dGVuRGVlcD1mdW5jdGlvbiBmYyh0KXtyZXR1cm4gbnVsbCE9dCYmdC5sZW5ndGg/emkodCxsKTpbXX0sRG4uZmxhdHRlbkRlcHRoPWZ1bmN0aW9uIG1jKHQsZSl7cmV0dXJuIG51bGwhPXQmJnQubGVuZ3RoP3ppKHQsZT1lPT09bj8xOkZzKGUpKTpbXX0sRG4uZmxpcD1mdW5jdGlvbiBnYyh0KXtyZXR1cm4gZ28odCw1MTIpfSxEbi5mbG93PUFsLERuLmZsb3dSaWdodD1DbCxEbi5mcm9tUGFpcnM9ZnVuY3Rpb24gX2ModCl7Zm9yKHZhciBlPS0xLG49bnVsbD09dD8wOnQubGVuZ3RoLGk9e307KytlPG47KXt2YXIgcj10W2VdO2lbclswXV09clsxXX1yZXR1cm4gaX0sRG4uZnVuY3Rpb25zPWZ1bmN0aW9uIHljKHQpe3JldHVybiBudWxsPT10P1tdOlZpKHQsaWwodCkpfSxEbi5mdW5jdGlvbnNJbj1mdW5jdGlvbiB2Yyh0KXtyZXR1cm4gbnVsbD09dD9bXTpWaSh0LHJsKHQpKX0sRG4uZ3JvdXBCeT1GYSxEbi5pbml0aWFsPWZ1bmN0aW9uIGJjKHQpe3JldHVybiBudWxsIT10JiZ0Lmxlbmd0aD94cih0LDAsLTEpOltdfSxEbi5pbnRlcnNlY3Rpb249cGEsRG4uaW50ZXJzZWN0aW9uQnk9ZmEsRG4uaW50ZXJzZWN0aW9uV2l0aD1tYSxEbi5pbnZlcnQ9dGwsRG4uaW52ZXJ0Qnk9ZWwsRG4uaW52b2tlTWFwPVZhLERuLml0ZXJhdGVlPUxsLERuLmtleUJ5PWphLERuLmtleXM9aWwsRG4ua2V5c0luPXJsLERuLm1hcD1VYSxEbi5tYXBLZXlzPWZ1bmN0aW9uIHhjKHQsZSl7dmFyIG49e307cmV0dXJuIGU9QW8oZSwzKSxIaSh0LChmdW5jdGlvbih0LGkscil7bmkobixlKHQsaSxyKSx0KX0pKSxufSxEbi5tYXBWYWx1ZXM9ZnVuY3Rpb24gd2ModCxlKXt2YXIgbj17fTtyZXR1cm4gZT1BbyhlLDMpLEhpKHQsKGZ1bmN0aW9uKHQsaSxyKXtuaShuLGksZSh0LGkscikpfSkpLG59LERuLm1hdGNoZXM9ZnVuY3Rpb24gU2ModCl7cmV0dXJuIHJyKG9pKHQsMSkpfSxEbi5tYXRjaGVzUHJvcGVydHk9ZnVuY3Rpb24gTWModCxlKXtyZXR1cm4gb3IodCxvaShlLDEpKX0sRG4ubWVtb2l6ZT10cyxEbi5tZXJnZT1vbCxEbi5tZXJnZVdpdGg9YWwsRG4ubWV0aG9kPVBsLERuLm1ldGhvZE9mPUlsLERuLm1peGluPU5sLERuLm5lZ2F0ZT1lcyxEbi5udGhBcmc9ZnVuY3Rpb24gRWModCl7cmV0dXJuIHQ9RnModCksZnIoKGZ1bmN0aW9uKGUpe3JldHVybiBzcihlLHQpfSkpfSxEbi5vbWl0PXNsLERuLm9taXRCeT1mdW5jdGlvbiBUYyh0LGUpe3JldHVybiBjbCh0LGVzKEFvKGUpKSl9LERuLm9uY2U9ZnVuY3Rpb24gQWModCl7cmV0dXJuIFhhKDIsdCl9LERuLm9yZGVyQnk9ZnVuY3Rpb24gQ2ModCxlLGkscil7cmV0dXJuIG51bGw9PXQ/W106KHVzKGUpfHwoZT1udWxsPT1lP1tdOltlXSksdXMoaT1yP246aSl8fChpPW51bGw9PWk/W106W2ldKSxscih0LGUsaSkpfSxEbi5vdmVyPVJsLERuLm92ZXJBcmdzPW5zLERuLm92ZXJFdmVyeT16bCxEbi5vdmVyU29tZT1EbCxEbi5wYXJ0aWFsPWlzLERuLnBhcnRpYWxSaWdodD1ycyxEbi5wYXJ0aXRpb249R2EsRG4ucGljaz1sbCxEbi5waWNrQnk9Y2wsRG4ucHJvcGVydHk9QmwsRG4ucHJvcGVydHlPZj1mdW5jdGlvbiBrYyh0KXtyZXR1cm4gZnVuY3Rpb24oZSl7cmV0dXJuIG51bGw9PXQ/bjpqaSh0LGUpfX0sRG4ucHVsbD1fYSxEbi5wdWxsQWxsPXlhLERuLnB1bGxBbGxCeT1mdW5jdGlvbiBMYyh0LGUsbil7cmV0dXJuIHQmJnQubGVuZ3RoJiZlJiZlLmxlbmd0aD91cih0LGUsQW8obiwyKSk6dH0sRG4ucHVsbEFsbFdpdGg9ZnVuY3Rpb24gUGModCxlLGkpe3JldHVybiB0JiZ0Lmxlbmd0aCYmZSYmZS5sZW5ndGg/dXIodCxlLG4saSk6dH0sRG4ucHVsbEF0PXZhLERuLnJhbmdlPUhsLERuLnJhbmdlUmlnaHQ9RmwsRG4ucmVhcmc9b3MsRG4ucmVqZWN0PWZ1bmN0aW9uIEljKHQsZSl7cmV0dXJuKHVzKHQpP3hlOlJpKSh0LGVzKEFvKGUsMykpKX0sRG4ucmVtb3ZlPWZ1bmN0aW9uIE5jKHQsZSl7dmFyIG49W107aWYoIXR8fCF0Lmxlbmd0aClyZXR1cm4gbjt2YXIgaT0tMSxyPVtdLG89dC5sZW5ndGg7Zm9yKGU9QW8oZSwzKTsrK2k8bzspe3ZhciBhPXRbaV07ZShhLGksdCkmJihuLnB1c2goYSksci5wdXNoKGkpKX1yZXR1cm4gaHIodCxyKSxufSxEbi5yZXN0PWZ1bmN0aW9uIE9jKHQsZSl7aWYoImZ1bmN0aW9uIiE9dHlwZW9mIHQpdGhyb3cgbmV3IEN0KGkpO3JldHVybiBmcih0LGU9ZT09PW4/ZTpGcyhlKSl9LERuLnJldmVyc2U9YmEsRG4uc2FtcGxlU2l6ZT1mdW5jdGlvbiBSYyh0LGUsaSl7cmV0dXJuIGU9KGk/Qm8odCxlLGkpOmU9PT1uKT8xOkZzKGUpLCh1cyh0KT8kbjpncikodCxlKX0sRG4uc2V0PWZ1bmN0aW9uIHpjKHQsZSxuKXtyZXR1cm4gbnVsbD09dD90Ol9yKHQsZSxuKX0sRG4uc2V0V2l0aD1mdW5jdGlvbiBEYyh0LGUsaSxyKXtyZXR1cm4gcj0iZnVuY3Rpb24iPT10eXBlb2Ygcj9yOm4sbnVsbD09dD90Ol9yKHQsZSxpLHIpfSxEbi5zaHVmZmxlPWZ1bmN0aW9uIEJjKHQpe3JldHVybih1cyh0KT9LbjpicikodCl9LERuLnNsaWNlPWZ1bmN0aW9uIEhjKHQsZSxpKXt2YXIgcj1udWxsPT10PzA6dC5sZW5ndGg7cmV0dXJuIHI/KGkmJiJudW1iZXIiIT10eXBlb2YgaSYmQm8odCxlLGkpPyhlPTAsaT1yKTooZT1udWxsPT1lPzA6RnMoZSksaT1pPT09bj9yOkZzKGkpKSx4cih0LGUsaSkpOltdfSxEbi5zb3J0Qnk9V2EsRG4uc29ydGVkVW5pcT1mdW5jdGlvbiBGYyh0KXtyZXR1cm4gdCYmdC5sZW5ndGg/RXIodCk6W119LERuLnNvcnRlZFVuaXFCeT1mdW5jdGlvbiBWYyh0LGUpe3JldHVybiB0JiZ0Lmxlbmd0aD9Fcih0LEFvKGUsMikpOltdfSxEbi5zcGxpdD1mdW5jdGlvbiBqYyh0LGUsaSl7cmV0dXJuIGkmJiJudW1iZXIiIT10eXBlb2YgaSYmQm8odCxlLGkpJiYoZT1pPW4pLChpPWk9PT1uP2g6aT4+PjApPyh0PUdzKHQpKSYmKCJzdHJpbmciPT10eXBlb2YgZXx8bnVsbCE9ZSYmIUNzKGUpKSYmIShlPUFyKGUpKSYmS2UodCk/SHIocm4odCksMCxpKTp0LnNwbGl0KGUsaSk6W119LERuLnNwcmVhZD1mdW5jdGlvbiBVYyh0LGUpe2lmKCJmdW5jdGlvbiIhPXR5cGVvZiB0KXRocm93IG5ldyBDdChpKTtyZXR1cm4gZT1udWxsPT1lPzA6bW4oRnMoZSksMCksZnIoKGZ1bmN0aW9uKG4pe3ZhciBpPW5bZV0scj1IcihuLDAsZSk7cmV0dXJuIGkmJkVlKHIsaSksbWUodCx0aGlzLHIpfSkpfSxEbi50YWlsPWZ1bmN0aW9uIEdjKHQpe3ZhciBlPW51bGw9PXQ/MDp0Lmxlbmd0aDtyZXR1cm4gZT94cih0LDEsZSk6W119LERuLnRha2U9ZnVuY3Rpb24gV2ModCxlLGkpe3JldHVybiB0JiZ0Lmxlbmd0aD94cih0LDAsKGU9aXx8ZT09PW4/MTpGcyhlKSk8MD8wOmUpOltdfSxEbi50YWtlUmlnaHQ9ZnVuY3Rpb24gcWModCxlLGkpe3ZhciByPW51bGw9PXQ/MDp0Lmxlbmd0aDtyZXR1cm4gcj94cih0LChlPXItKGU9aXx8ZT09PW4/MTpGcyhlKSkpPDA/MDplLHIpOltdfSxEbi50YWtlUmlnaHRXaGlsZT1mdW5jdGlvbiBZYyh0LGUpe3JldHVybiB0JiZ0Lmxlbmd0aD9Qcih0LEFvKGUsMyksITEsITApOltdfSxEbi50YWtlV2hpbGU9ZnVuY3Rpb24gWGModCxlKXtyZXR1cm4gdCYmdC5sZW5ndGg/UHIodCxBbyhlLDMpKTpbXX0sRG4udGFwPWZ1bmN0aW9uICRjKHQsZSl7cmV0dXJuIGUodCksdH0sRG4udGhyb3R0bGU9ZnVuY3Rpb24gS2ModCxlLG4pe3ZhciByPSEwLG89ITA7aWYoImZ1bmN0aW9uIiE9dHlwZW9mIHQpdGhyb3cgbmV3IEN0KGkpO3JldHVybiB3cyhuKSYmKHI9ImxlYWRpbmciaW4gbj8hIW4ubGVhZGluZzpyLG89InRyYWlsaW5nImluIG4/ISFuLnRyYWlsaW5nOm8pLFphKHQsZSx7bGVhZGluZzpyLG1heFdhaXQ6ZSx0cmFpbGluZzpvfSl9LERuLnRocnU9TmEsRG4udG9BcnJheT1CcyxEbi50b1BhaXJzPXVsLERuLnRvUGFpcnNJbj1obCxEbi50b1BhdGg9ZnVuY3Rpb24gWmModCl7cmV0dXJuIHVzKHQpP01lKHQsaWEpOk5zKHQpP1t0XTpZcihlYShHcyh0KSkpfSxEbi50b1BsYWluT2JqZWN0PVVzLERuLnRyYW5zZm9ybT1mdW5jdGlvbiBKYyh0LGUsbil7dmFyIGk9dXModCkscj1pfHxtcyh0KXx8T3ModCk7aWYoZT1BbyhlLDQpLG51bGw9PW4pe3ZhciBvPXQmJnQuY29uc3RydWN0b3I7bj1yP2k/bmV3IG86W106d3ModCkmJnZzKG8pP0JuKEp0KHQpKTp7fX1yZXR1cm4ocj9fZTpIaSkodCwoZnVuY3Rpb24odCxpLHIpe3JldHVybiBlKG4sdCxpLHIpfSkpLG59LERuLnVuYXJ5PWZ1bmN0aW9uIFFjKHQpe3JldHVybiBZYSh0LDEpfSxEbi51bmlvbj14YSxEbi51bmlvbkJ5PXdhLERuLnVuaW9uV2l0aD1TYSxEbi51bmlxPWZ1bmN0aW9uIHR1KHQpe3JldHVybiB0JiZ0Lmxlbmd0aD9Dcih0KTpbXX0sRG4udW5pcUJ5PWZ1bmN0aW9uIGV1KHQsZSl7cmV0dXJuIHQmJnQubGVuZ3RoP0NyKHQsQW8oZSwyKSk6W119LERuLnVuaXFXaXRoPWZ1bmN0aW9uIG51KHQsZSl7cmV0dXJuIGU9ImZ1bmN0aW9uIj09dHlwZW9mIGU/ZTpuLHQmJnQubGVuZ3RoP0NyKHQsbixlKTpbXX0sRG4udW5zZXQ9ZnVuY3Rpb24gaXUodCxlKXtyZXR1cm4gbnVsbD09dHx8a3IodCxlKX0sRG4udW56aXA9TWEsRG4udW56aXBXaXRoPUVhLERuLnVwZGF0ZT1mdW5jdGlvbiBydSh0LGUsbil7cmV0dXJuIG51bGw9PXQ/dDpMcih0LGUsenIobikpfSxEbi51cGRhdGVXaXRoPWZ1bmN0aW9uIG91KHQsZSxpLHIpe3JldHVybiByPSJmdW5jdGlvbiI9PXR5cGVvZiByP3I6bixudWxsPT10P3Q6THIodCxlLHpyKGkpLHIpfSxEbi52YWx1ZXM9ZGwsRG4udmFsdWVzSW49ZnVuY3Rpb24gYXUodCl7cmV0dXJuIG51bGw9PXQ/W106amUodCxybCh0KSl9LERuLndpdGhvdXQ9VGEsRG4ud29yZHM9U2wsRG4ud3JhcD1mdW5jdGlvbiBzdSh0LGUpe3JldHVybiBpcyh6cihlKSx0KX0sRG4ueG9yPUFhLERuLnhvckJ5PUNhLERuLnhvcldpdGg9a2EsRG4uemlwPUxhLERuLnppcE9iamVjdD1mdW5jdGlvbiBsdSh0LGUpe3JldHVybiBPcih0fHxbXSxlfHxbXSxKbil9LERuLnppcE9iamVjdERlZXA9ZnVuY3Rpb24gY3UodCxlKXtyZXR1cm4gT3IodHx8W10sZXx8W10sX3IpfSxEbi56aXBXaXRoPVBhLERuLmVudHJpZXM9dWwsRG4uZW50cmllc0luPWhsLERuLmV4dGVuZD1xcyxEbi5leHRlbmRXaXRoPVlzLE5sKERuLERuKSxEbi5hZGQ9R2wsRG4uYXR0ZW1wdD1NbCxEbi5jYW1lbENhc2U9cGwsRG4uY2FwaXRhbGl6ZT1mbCxEbi5jZWlsPVdsLERuLmNsYW1wPWZ1bmN0aW9uIHV1KHQsZSxpKXtyZXR1cm4gaT09PW4mJihpPWUsZT1uKSxpIT09biYmKGk9KGk9anMoaSkpPT1pP2k6MCksZSE9PW4mJihlPShlPWpzKGUpKT09ZT9lOjApLHJpKGpzKHQpLGUsaSl9LERuLmNsb25lPWZ1bmN0aW9uIGh1KHQpe3JldHVybiBvaSh0LDQpfSxEbi5jbG9uZURlZXA9ZnVuY3Rpb24gZHUodCl7cmV0dXJuIG9pKHQsNSl9LERuLmNsb25lRGVlcFdpdGg9ZnVuY3Rpb24gcHUodCxlKXtyZXR1cm4gb2kodCw1LGU9ImZ1bmN0aW9uIj09dHlwZW9mIGU/ZTpuKX0sRG4uY2xvbmVXaXRoPWZ1bmN0aW9uIGZ1KHQsZSl7cmV0dXJuIG9pKHQsNCxlPSJmdW5jdGlvbiI9PXR5cGVvZiBlP2U6bil9LERuLmNvbmZvcm1zVG89ZnVuY3Rpb24gbXUodCxlKXtyZXR1cm4gbnVsbD09ZXx8YWkodCxlLGlsKGUpKX0sRG4uZGVidXJyPW1sLERuLmRlZmF1bHRUbz1mdW5jdGlvbiBndSh0LGUpe3JldHVybiBudWxsPT10fHx0IT10P2U6dH0sRG4uZGl2aWRlPXFsLERuLmVuZHNXaXRoPWZ1bmN0aW9uIF91KHQsZSxpKXt0PUdzKHQpLGU9QXIoZSk7dmFyIHI9dC5sZW5ndGgsbz1pPWk9PT1uP3I6cmkoRnMoaSksMCxyKTtyZXR1cm4oaS09ZS5sZW5ndGgpPj0wJiZ0LnNsaWNlKGksbyk9PWV9LERuLmVxPWFzLERuLmVzY2FwZT1mdW5jdGlvbiB5dSh0KXtyZXR1cm4odD1Hcyh0KSkmJnEudGVzdCh0KT90LnJlcGxhY2UoRyxYZSk6dH0sRG4uZXNjYXBlUmVnRXhwPWZ1bmN0aW9uIHZ1KHQpe3JldHVybih0PUdzKHQpKSYmdHQudGVzdCh0KT90LnJlcGxhY2UoUSwiXFwkJiIpOnR9LERuLmV2ZXJ5PWZ1bmN0aW9uIGJ1KHQsZSxpKXt2YXIgcj11cyh0KT9iZTpOaTtyZXR1cm4gaSYmQm8odCxlLGkpJiYoZT1uKSxyKHQsQW8oZSwzKSl9LERuLmZpbmQ9emEsRG4uZmluZEluZGV4PWNhLERuLmZpbmRLZXk9ZnVuY3Rpb24geHUodCxlKXtyZXR1cm4gTGUodCxBbyhlLDMpLEhpKX0sRG4uZmluZExhc3Q9RGEsRG4uZmluZExhc3RJbmRleD11YSxEbi5maW5kTGFzdEtleT1mdW5jdGlvbiB3dSh0LGUpe3JldHVybiBMZSh0LEFvKGUsMyksRmkpfSxEbi5mbG9vcj1ZbCxEbi5mb3JFYWNoPUJhLERuLmZvckVhY2hSaWdodD1IYSxEbi5mb3JJbj1mdW5jdGlvbiBTdSh0LGUpe3JldHVybiBudWxsPT10P3Q6RGkodCxBbyhlLDMpLHJsKX0sRG4uZm9ySW5SaWdodD1mdW5jdGlvbiBNdSh0LGUpe3JldHVybiBudWxsPT10P3Q6QmkodCxBbyhlLDMpLHJsKX0sRG4uZm9yT3duPWZ1bmN0aW9uIEV1KHQsZSl7cmV0dXJuIHQmJkhpKHQsQW8oZSwzKSl9LERuLmZvck93blJpZ2h0PWZ1bmN0aW9uIFR1KHQsZSl7cmV0dXJuIHQmJkZpKHQsQW8oZSwzKSl9LERuLmdldD1KcyxEbi5ndD1zcyxEbi5ndGU9bHMsRG4uaGFzPWZ1bmN0aW9uIEF1KHQsZSl7cmV0dXJuIG51bGwhPXQmJk9vKHQsZSxxaSl9LERuLmhhc0luPVFzLERuLmhlYWQ9ZGEsRG4uaWRlbnRpdHk9a2wsRG4uaW5jbHVkZXM9ZnVuY3Rpb24gQ3UodCxlLG4saSl7dD1wcyh0KT90OmRsKHQpLG49biYmIWk/RnMobik6MDt2YXIgcj10Lmxlbmd0aDtyZXR1cm4gbjwwJiYobj1tbihyK24sMCkpLElzKHQpP248PXImJnQuaW5kZXhPZihlLG4pPi0xOiEhciYmSWUodCxlLG4pPi0xfSxEbi5pbmRleE9mPWZ1bmN0aW9uIGt1KHQsZSxuKXt2YXIgaT1udWxsPT10PzA6dC5sZW5ndGg7aWYoIWkpcmV0dXJuLTE7dmFyIHI9bnVsbD09bj8wOkZzKG4pO3JldHVybiByPDAmJihyPW1uKGkrciwwKSksSWUodCxlLHIpfSxEbi5pblJhbmdlPWZ1bmN0aW9uIEx1KHQsZSxpKXtyZXR1cm4gZT1IcyhlKSxpPT09bj8oaT1lLGU9MCk6aT1IcyhpKSwoZnVuY3Rpb24gcih0LGUsbil7cmV0dXJuIHQ+PWduKGUsbikmJnQ8bW4oZSxuKX0pKHQ9anModCksZSxpKX0sRG4uaW52b2tlPW5sLERuLmlzQXJndW1lbnRzPWNzLERuLmlzQXJyYXk9dXMsRG4uaXNBcnJheUJ1ZmZlcj1ocyxEbi5pc0FycmF5TGlrZT1wcyxEbi5pc0FycmF5TGlrZU9iamVjdD1mcyxEbi5pc0Jvb2xlYW49ZnVuY3Rpb24gUHUodCl7cmV0dXJuITA9PT10fHwhMT09PXR8fFNzKHQpJiZHaSh0KT09bX0sRG4uaXNCdWZmZXI9bXMsRG4uaXNEYXRlPWdzLERuLmlzRWxlbWVudD1mdW5jdGlvbiBJdSh0KXtyZXR1cm4gU3ModCkmJjE9PT10Lm5vZGVUeXBlJiYhQXModCl9LERuLmlzRW1wdHk9ZnVuY3Rpb24gTnUodCl7aWYobnVsbD09dClyZXR1cm4hMDtpZihwcyh0KSYmKHVzKHQpfHwic3RyaW5nIj09dHlwZW9mIHR8fCJmdW5jdGlvbiI9PXR5cGVvZiB0LnNwbGljZXx8bXModCl8fE9zKHQpfHxjcyh0KSkpcmV0dXJuIXQubGVuZ3RoO3ZhciBlPU5vKHQpO2lmKGU9PWJ8fGU9PUUpcmV0dXJuIXQuc2l6ZTtpZihqbyh0KSlyZXR1cm4hZXIodCkubGVuZ3RoO2Zvcih2YXIgbiBpbiB0KWlmKE50LmNhbGwodCxuKSlyZXR1cm4hMTtyZXR1cm4hMH0sRG4uaXNFcXVhbD1mdW5jdGlvbiBPdSh0LGUpe3JldHVybiBaaSh0LGUpfSxEbi5pc0VxdWFsV2l0aD1mdW5jdGlvbiBSdSh0LGUsaSl7dmFyIHI9KGk9ImZ1bmN0aW9uIj09dHlwZW9mIGk/aTpuKT9pKHQsZSk6bjtyZXR1cm4gcj09PW4/WmkodCxlLG4saSk6ISFyfSxEbi5pc0Vycm9yPXlzLERuLmlzRmluaXRlPWZ1bmN0aW9uIHp1KHQpe3JldHVybiJudW1iZXIiPT10eXBlb2YgdCYmZG4odCl9LERuLmlzRnVuY3Rpb249dnMsRG4uaXNJbnRlZ2VyPWJzLERuLmlzTGVuZ3RoPXhzLERuLmlzTWFwPU1zLERuLmlzTWF0Y2g9ZnVuY3Rpb24gRHUodCxlKXtyZXR1cm4gdD09PWV8fEppKHQsZSxrbyhlKSl9LERuLmlzTWF0Y2hXaXRoPWZ1bmN0aW9uIEJ1KHQsZSxpKXtyZXR1cm4gaT0iZnVuY3Rpb24iPT10eXBlb2YgaT9pOm4sSmkodCxlLGtvKGUpLGkpfSxEbi5pc05hTj1mdW5jdGlvbiBIdSh0KXtyZXR1cm4gVHModCkmJnQhPSt0fSxEbi5pc05hdGl2ZT1mdW5jdGlvbiBGdSh0KXtpZihWbyh0KSl0aHJvdyBuZXcgd3QoIlVuc3VwcG9ydGVkIGNvcmUtanMgdXNlLiBUcnkgaHR0cHM6Ly9ucG1zLmlvL3NlYXJjaD9xPXBvbnlmaWxsLiIpO3JldHVybiBRaSh0KX0sRG4uaXNOaWw9ZnVuY3Rpb24gVnUodCl7cmV0dXJuIG51bGw9PXR9LERuLmlzTnVsbD1mdW5jdGlvbiBqdSh0KXtyZXR1cm4gbnVsbD09PXR9LERuLmlzTnVtYmVyPVRzLERuLmlzT2JqZWN0PXdzLERuLmlzT2JqZWN0TGlrZT1TcyxEbi5pc1BsYWluT2JqZWN0PUFzLERuLmlzUmVnRXhwPUNzLERuLmlzU2FmZUludGVnZXI9ZnVuY3Rpb24gVXUodCl7cmV0dXJuIGJzKHQpJiZ0Pj0tOTAwNzE5OTI1NDc0MDk5MSYmdDw9Y30sRG4uaXNTZXQ9THMsRG4uaXNTdHJpbmc9SXMsRG4uaXNTeW1ib2w9TnMsRG4uaXNUeXBlZEFycmF5PU9zLERuLmlzVW5kZWZpbmVkPWZ1bmN0aW9uIEd1KHQpe3JldHVybiB0PT09bn0sRG4uaXNXZWFrTWFwPWZ1bmN0aW9uIFd1KHQpe3JldHVybiBTcyh0KSYmTm8odCk9PUN9LERuLmlzV2Vha1NldD1mdW5jdGlvbiBxdSh0KXtyZXR1cm4gU3ModCkmJiJbb2JqZWN0IFdlYWtTZXRdIj09R2kodCl9LERuLmpvaW49ZnVuY3Rpb24gWXUodCxlKXtyZXR1cm4gbnVsbD09dD8iIjpwbi5jYWxsKHQsZSl9LERuLmtlYmFiQ2FzZT1nbCxEbi5sYXN0PWdhLERuLmxhc3RJbmRleE9mPWZ1bmN0aW9uIFh1KHQsZSxpKXt2YXIgcj1udWxsPT10PzA6dC5sZW5ndGg7aWYoIXIpcmV0dXJuLTE7dmFyIG89cjtyZXR1cm4gaSE9PW4mJihvPShvPUZzKGkpKTwwP21uKHIrbywwKTpnbihvLHItMSkpLGU9PWU/KGZ1bmN0aW9uIGEodCxlLG4pe2Zvcih2YXIgaT1uKzE7aS0tOylpZih0W2ldPT09ZSlyZXR1cm4gaTtyZXR1cm4gaX0pKHQsZSxvKTpQZSh0LE9lLG8sITApfSxEbi5sb3dlckNhc2U9X2wsRG4ubG93ZXJGaXJzdD15bCxEbi5sdD16cyxEbi5sdGU9RHMsRG4ubWF4PWZ1bmN0aW9uICR1KHQpe3JldHVybiB0JiZ0Lmxlbmd0aD9PaSh0LGtsLFdpKTpufSxEbi5tYXhCeT1mdW5jdGlvbiBLdSh0LGUpe3JldHVybiB0JiZ0Lmxlbmd0aD9PaSh0LEFvKGUsMiksV2kpOm59LERuLm1lYW49ZnVuY3Rpb24gWnUodCl7cmV0dXJuIFJlKHQsa2wpfSxEbi5tZWFuQnk9ZnVuY3Rpb24gSnUodCxlKXtyZXR1cm4gUmUodCxBbyhlLDIpKX0sRG4ubWluPWZ1bmN0aW9uIFF1KHQpe3JldHVybiB0JiZ0Lmxlbmd0aD9PaSh0LGtsLG5yKTpufSxEbi5taW5CeT1mdW5jdGlvbiB0aCh0LGUpe3JldHVybiB0JiZ0Lmxlbmd0aD9PaSh0LEFvKGUsMiksbnIpOm59LERuLnN0dWJBcnJheT1WbCxEbi5zdHViRmFsc2U9amwsRG4uc3R1Yk9iamVjdD1mdW5jdGlvbiBlaCgpe3JldHVybnt9fSxEbi5zdHViU3RyaW5nPWZ1bmN0aW9uIG5oKCl7cmV0dXJuIiJ9LERuLnN0dWJUcnVlPWZ1bmN0aW9uIGloKCl7cmV0dXJuITB9LERuLm11bHRpcGx5PVhsLERuLm50aD1mdW5jdGlvbiByaCh0LGUpe3JldHVybiB0JiZ0Lmxlbmd0aD9zcih0LEZzKGUpKTpufSxEbi5ub0NvbmZsaWN0PWZ1bmN0aW9uIG9oKCl7cmV0dXJuIGllLl89PT10aGlzJiYoaWUuXz1CdCksdGhpc30sRG4ubm9vcD1PbCxEbi5ub3c9cWEsRG4ucGFkPWZ1bmN0aW9uIGFoKHQsZSxuKXt0PUdzKHQpO3ZhciBpPShlPUZzKGUpKT9ubih0KTowO2lmKCFlfHxpPj1lKXJldHVybiB0O3ZhciByPShlLWkpLzI7cmV0dXJuIGxvKGNuKHIpLG4pK3QrbG8obG4ociksbil9LERuLnBhZEVuZD1mdW5jdGlvbiBzaCh0LGUsbil7dD1Hcyh0KTt2YXIgaT0oZT1GcyhlKSk/bm4odCk6MDtyZXR1cm4gZSYmaTxlP3QrbG8oZS1pLG4pOnR9LERuLnBhZFN0YXJ0PWZ1bmN0aW9uIGxoKHQsZSxuKXt0PUdzKHQpO3ZhciBpPShlPUZzKGUpKT9ubih0KTowO3JldHVybiBlJiZpPGU/bG8oZS1pLG4pK3Q6dH0sRG4ucGFyc2VJbnQ9ZnVuY3Rpb24gY2godCxlLG4pe3JldHVybiBufHxudWxsPT1lP2U9MDplJiYoZT0rZSkseW4oR3ModCkucmVwbGFjZShudCwiIiksZXx8MCl9LERuLnJhbmRvbT1mdW5jdGlvbiB1aCh0LGUsaSl7aWYoaSYmImJvb2xlYW4iIT10eXBlb2YgaSYmQm8odCxlLGkpJiYoZT1pPW4pLGk9PT1uJiYoImJvb2xlYW4iPT10eXBlb2YgZT8oaT1lLGU9bik6ImJvb2xlYW4iPT10eXBlb2YgdCYmKGk9dCx0PW4pKSx0PT09biYmZT09PW4/KHQ9MCxlPTEpOih0PUhzKHQpLGU9PT1uPyhlPXQsdD0wKTplPUhzKGUpKSx0PmUpe3ZhciByPXQ7dD1lLGU9cn1pZihpfHx0JTF8fGUlMSl7dmFyIG89dm4oKTtyZXR1cm4gZ24odCtvKihlLXQrUXQoIjFlLSIrKChvKyIiKS5sZW5ndGgtMSkpKSxlKX1yZXR1cm4gZHIodCxlKX0sRG4ucmVkdWNlPWZ1bmN0aW9uIGhoKHQsZSxuKXt2YXIgaT11cyh0KT9UZTpCZSxyPWFyZ3VtZW50cy5sZW5ndGg8MztyZXR1cm4gaSh0LEFvKGUsNCksbixyLFBpKX0sRG4ucmVkdWNlUmlnaHQ9ZnVuY3Rpb24gZGgodCxlLG4pe3ZhciBpPXVzKHQpP0FlOkJlLHI9YXJndW1lbnRzLmxlbmd0aDwzO3JldHVybiBpKHQsQW8oZSw0KSxuLHIsSWkpfSxEbi5yZXBlYXQ9ZnVuY3Rpb24gcGgodCxlLGkpe3JldHVybiBlPShpP0JvKHQsZSxpKTplPT09bik/MTpGcyhlKSxwcihHcyh0KSxlKX0sRG4ucmVwbGFjZT1mdW5jdGlvbiBmaCgpe3ZhciB0PWFyZ3VtZW50cyxlPUdzKHRbMF0pO3JldHVybiB0Lmxlbmd0aDwzP2U6ZS5yZXBsYWNlKHRbMV0sdFsyXSl9LERuLnJlc3VsdD1mdW5jdGlvbiBtaCh0LGUsaSl7dmFyIHI9LTEsbz0oZT1EcihlLHQpKS5sZW5ndGg7Zm9yKG98fChvPTEsdD1uKTsrK3I8bzspe3ZhciBhPW51bGw9PXQ/bjp0W2lhKGVbcl0pXTthPT09biYmKHI9byxhPWkpLHQ9dnMoYSk/YS5jYWxsKHQpOmF9cmV0dXJuIHR9LERuLnJvdW5kPSRsLERuLnJ1bkluQ29udGV4dD10LERuLnNhbXBsZT1mdW5jdGlvbiBnaCh0KXtyZXR1cm4odXModCk/WG46bXIpKHQpfSxEbi5zaXplPWZ1bmN0aW9uIF9oKHQpe2lmKG51bGw9PXQpcmV0dXJuIDA7aWYocHModCkpcmV0dXJuIElzKHQpP25uKHQpOnQubGVuZ3RoO3ZhciBlPU5vKHQpO3JldHVybiBlPT1ifHxlPT1FP3Quc2l6ZTplcih0KS5sZW5ndGh9LERuLnNuYWtlQ2FzZT12bCxEbi5zb21lPWZ1bmN0aW9uIHloKHQsZSxpKXt2YXIgcj11cyh0KT9DZTp3cjtyZXR1cm4gaSYmQm8odCxlLGkpJiYoZT1uKSxyKHQsQW8oZSwzKSl9LERuLnNvcnRlZEluZGV4PWZ1bmN0aW9uIHZoKHQsZSl7cmV0dXJuIFNyKHQsZSl9LERuLnNvcnRlZEluZGV4Qnk9ZnVuY3Rpb24gYmgodCxlLG4pe3JldHVybiBNcih0LGUsQW8obiwyKSl9LERuLnNvcnRlZEluZGV4T2Y9ZnVuY3Rpb24geGgodCxlKXt2YXIgbj1udWxsPT10PzA6dC5sZW5ndGg7aWYobil7dmFyIGk9U3IodCxlKTtpZihpPG4mJmFzKHRbaV0sZSkpcmV0dXJuIGl9cmV0dXJuLTF9LERuLnNvcnRlZExhc3RJbmRleD1mdW5jdGlvbiB3aCh0LGUpe3JldHVybiBTcih0LGUsITApfSxEbi5zb3J0ZWRMYXN0SW5kZXhCeT1mdW5jdGlvbiBTaCh0LGUsbil7cmV0dXJuIE1yKHQsZSxBbyhuLDIpLCEwKX0sRG4uc29ydGVkTGFzdEluZGV4T2Y9ZnVuY3Rpb24gTWgodCxlKXtpZihudWxsIT10JiZ0Lmxlbmd0aCl7dmFyIG49U3IodCxlLCEwKS0xO2lmKGFzKHRbbl0sZSkpcmV0dXJuIG59cmV0dXJuLTF9LERuLnN0YXJ0Q2FzZT1ibCxEbi5zdGFydHNXaXRoPWZ1bmN0aW9uIEVoKHQsZSxuKXtyZXR1cm4gdD1Hcyh0KSxuPW51bGw9PW4/MDpyaShGcyhuKSwwLHQubGVuZ3RoKSxlPUFyKGUpLHQuc2xpY2UobixuK2UubGVuZ3RoKT09ZX0sRG4uc3VidHJhY3Q9S2wsRG4uc3VtPWZ1bmN0aW9uIFRoKHQpe3JldHVybiB0JiZ0Lmxlbmd0aD9IZSh0LGtsKTowfSxEbi5zdW1CeT1mdW5jdGlvbiBBaCh0LGUpe3JldHVybiB0JiZ0Lmxlbmd0aD9IZSh0LEFvKGUsMikpOjB9LERuLnRlbXBsYXRlPWZ1bmN0aW9uIENoKHQsZSxpKXt2YXIgcj1Ebi50ZW1wbGF0ZVNldHRpbmdzO2kmJkJvKHQsZSxpKSYmKGU9biksdD1Hcyh0KSxlPVlzKHt9LGUscixfbyk7dmFyIG8sYSxzPVlzKHt9LGUuaW1wb3J0cyxyLmltcG9ydHMsX28pLGw9aWwocyksYz1qZShzLGwpLHU9MCxoPWUuaW50ZXJwb2xhdGV8fF90LGQ9Il9fcCArPSAnIixwPVR0KChlLmVzY2FwZXx8X3QpLnNvdXJjZSsifCIraC5zb3VyY2UrInwiKyhoPT09JD9jdDpfdCkuc291cmNlKyJ8IisoZS5ldmFsdWF0ZXx8X3QpLnNvdXJjZSsifCQiLCJnIiksZj0iLy8jIHNvdXJjZVVSTD0iKyhOdC5jYWxsKGUsInNvdXJjZVVSTCIpPyhlLnNvdXJjZVVSTCsiIikucmVwbGFjZSgvXHMvZywiICIpOiJsb2Rhc2gudGVtcGxhdGVTb3VyY2VzWyIrICsrJHQrIl0iKSsiXG4iO3QucmVwbGFjZShwLChmdW5jdGlvbihlLG4saSxyLHMsbCl7cmV0dXJuIGl8fChpPXIpLGQrPXQuc2xpY2UodSxsKS5yZXBsYWNlKHl0LCRlKSxuJiYobz0hMCxkKz0iJyArXG5fX2UoIituKyIpICtcbiciKSxzJiYoYT0hMCxkKz0iJztcbiIrcysiO1xuX19wICs9ICciKSxpJiYoZCs9IicgK1xuKChfX3QgPSAoIitpKyIpKSA9PSBudWxsID8gJycgOiBfX3QpICtcbiciKSx1PWwrZS5sZW5ndGgsZX0pKSxkKz0iJztcbiI7dmFyIG09TnQuY2FsbChlLCJ2YXJpYWJsZSIpJiZlLnZhcmlhYmxlO218fChkPSJ3aXRoIChvYmopIHtcbiIrZCsiXG59XG4iKSxkPShhP2QucmVwbGFjZShGLCIiKTpkKS5yZXBsYWNlKFYsIiQxIikucmVwbGFjZShqLCIkMTsiKSxkPSJmdW5jdGlvbigiKyhtfHwib2JqIikrIikge1xuIisobT8iIjoib2JqIHx8IChvYmogPSB7fSk7XG4iKSsidmFyIF9fdCwgX19wID0gJyciKyhvPyIsIF9fZSA9IF8uZXNjYXBlIjoiIikrKGE/IiwgX19qID0gQXJyYXkucHJvdG90eXBlLmpvaW47XG5mdW5jdGlvbiBwcmludCgpIHsgX19wICs9IF9fai5jYWxsKGFyZ3VtZW50cywgJycpIH1cbiI6IjtcbiIpK2QrInJldHVybiBfX3Bcbn0iO3ZhciBnPU1sKChmdW5jdGlvbigpe3JldHVybiBTdChsLGYrInJldHVybiAiK2QpLmFwcGx5KG4sYyl9KSk7aWYoZy5zb3VyY2U9ZCx5cyhnKSl0aHJvdyBnO3JldHVybiBnfSxEbi50aW1lcz1mdW5jdGlvbiBraCh0LGUpe2lmKCh0PUZzKHQpKTwxfHx0PmMpcmV0dXJuW107dmFyIG49aCxpPWduKHQsaCk7ZT1BbyhlKSx0LT1oO2Zvcih2YXIgcj1GZShpLGUpOysrbjx0OyllKG4pO3JldHVybiByfSxEbi50b0Zpbml0ZT1IcyxEbi50b0ludGVnZXI9RnMsRG4udG9MZW5ndGg9VnMsRG4udG9Mb3dlcj1mdW5jdGlvbiBMaCh0KXtyZXR1cm4gR3ModCkudG9Mb3dlckNhc2UoKX0sRG4udG9OdW1iZXI9anMsRG4udG9TYWZlSW50ZWdlcj1mdW5jdGlvbiBQaCh0KXtyZXR1cm4gdD9yaShGcyh0KSwtOTAwNzE5OTI1NDc0MDk5MSxjKTowPT09dD90OjB9LERuLnRvU3RyaW5nPUdzLERuLnRvVXBwZXI9ZnVuY3Rpb24gSWgodCl7cmV0dXJuIEdzKHQpLnRvVXBwZXJDYXNlKCl9LERuLnRyaW09ZnVuY3Rpb24gTmgodCxlLGkpe2lmKCh0PUdzKHQpKSYmKGl8fGU9PT1uKSlyZXR1cm4gdC5yZXBsYWNlKGV0LCIiKTtpZighdHx8IShlPUFyKGUpKSlyZXR1cm4gdDt2YXIgcj1ybih0KSxvPXJuKGUpO3JldHVybiBIcihyLEdlKHIsbyksV2UocixvKSsxKS5qb2luKCIiKX0sRG4udHJpbUVuZD1mdW5jdGlvbiBPaCh0LGUsaSl7aWYoKHQ9R3ModCkpJiYoaXx8ZT09PW4pKXJldHVybiB0LnJlcGxhY2UoaXQsIiIpO2lmKCF0fHwhKGU9QXIoZSkpKXJldHVybiB0O3ZhciByPXJuKHQpO3JldHVybiBIcihyLDAsV2UocixybihlKSkrMSkuam9pbigiIil9LERuLnRyaW1TdGFydD1mdW5jdGlvbiBSaCh0LGUsaSl7aWYoKHQ9R3ModCkpJiYoaXx8ZT09PW4pKXJldHVybiB0LnJlcGxhY2UobnQsIiIpO2lmKCF0fHwhKGU9QXIoZSkpKXJldHVybiB0O3ZhciByPXJuKHQpO3JldHVybiBIcihyLEdlKHIscm4oZSkpKS5qb2luKCIiKX0sRG4udHJ1bmNhdGU9ZnVuY3Rpb24gemgodCxlKXt2YXIgaT0zMCxyPSIuLi4iO2lmKHdzKGUpKXt2YXIgbz0ic2VwYXJhdG9yImluIGU/ZS5zZXBhcmF0b3I6bztpPSJsZW5ndGgiaW4gZT9GcyhlLmxlbmd0aCk6aSxyPSJvbWlzc2lvbiJpbiBlP0FyKGUub21pc3Npb24pOnJ9dmFyIGE9KHQ9R3ModCkpLmxlbmd0aDtpZihLZSh0KSl7dmFyIHM9cm4odCk7YT1zLmxlbmd0aH1pZihpPj1hKXJldHVybiB0O3ZhciBsPWktbm4ocik7aWYobDwxKXJldHVybiByO3ZhciBjPXM/SHIocywwLGwpLmpvaW4oIiIpOnQuc2xpY2UoMCxsKTtpZihvPT09bilyZXR1cm4gYytyO2lmKHMmJihsKz1jLmxlbmd0aC1sKSxDcyhvKSl7aWYodC5zbGljZShsKS5zZWFyY2gobykpe3ZhciB1LGg9Yztmb3Ioby5nbG9iYWx8fChvPVR0KG8uc291cmNlLEdzKHV0LmV4ZWMobykpKyJnIikpLG8ubGFzdEluZGV4PTA7dT1vLmV4ZWMoaCk7KXZhciBkPXUuaW5kZXg7Yz1jLnNsaWNlKDAsZD09PW4/bDpkKX19ZWxzZSBpZih0LmluZGV4T2YoQXIobyksbCkhPWwpe3ZhciBwPWMubGFzdEluZGV4T2Yobyk7cD4tMSYmKGM9Yy5zbGljZSgwLHApKX1yZXR1cm4gYytyfSxEbi51bmVzY2FwZT1mdW5jdGlvbiBEaCh0KXtyZXR1cm4odD1Hcyh0KSkmJlcudGVzdCh0KT90LnJlcGxhY2UoVSxvbik6dH0sRG4udW5pcXVlSWQ9ZnVuY3Rpb24gQmgodCl7dmFyIGU9KytPdDtyZXR1cm4gR3ModCkrZX0sRG4udXBwZXJDYXNlPXhsLERuLnVwcGVyRmlyc3Q9d2wsRG4uZWFjaD1CYSxEbi5lYWNoUmlnaHQ9SGEsRG4uZmlyc3Q9ZGEsTmwoRG4sKFVsPXt9LEhpKERuLChmdW5jdGlvbih0LGUpe050LmNhbGwoRG4ucHJvdG90eXBlLGUpfHwoVWxbZV09dCl9KSksVWwpLHtjaGFpbjohMX0pLERuLlZFUlNJT049IjQuMTcuMTkiLF9lKFsiYmluZCIsImJpbmRLZXkiLCJjdXJyeSIsImN1cnJ5UmlnaHQiLCJwYXJ0aWFsIiwicGFydGlhbFJpZ2h0Il0sKGZ1bmN0aW9uKHQpe0RuW3RdLnBsYWNlaG9sZGVyPURufSkpLF9lKFsiZHJvcCIsInRha2UiXSwoZnVuY3Rpb24odCxlKXtWbi5wcm90b3R5cGVbdF09ZnVuY3Rpb24oaSl7aT1pPT09bj8xOm1uKEZzKGkpLDApO3ZhciByPXRoaXMuX19maWx0ZXJlZF9fJiYhZT9uZXcgVm4odGhpcyk6dGhpcy5jbG9uZSgpO3JldHVybiByLl9fZmlsdGVyZWRfXz9yLl9fdGFrZUNvdW50X189Z24oaSxyLl9fdGFrZUNvdW50X18pOnIuX192aWV3c19fLnB1c2goe3NpemU6Z24oaSxoKSx0eXBlOnQrKHIuX19kaXJfXzwwPyJSaWdodCI6IiIpfSkscn0sVm4ucHJvdG90eXBlW3QrIlJpZ2h0Il09ZnVuY3Rpb24oZSl7cmV0dXJuIHRoaXMucmV2ZXJzZSgpW3RdKGUpLnJldmVyc2UoKX19KSksX2UoWyJmaWx0ZXIiLCJtYXAiLCJ0YWtlV2hpbGUiXSwoZnVuY3Rpb24odCxlKXt2YXIgbj1lKzEsaT0xPT1ufHwzPT1uO1ZuLnByb3RvdHlwZVt0XT1mdW5jdGlvbih0KXt2YXIgZT10aGlzLmNsb25lKCk7cmV0dXJuIGUuX19pdGVyYXRlZXNfXy5wdXNoKHtpdGVyYXRlZTpBbyh0LDMpLHR5cGU6bn0pLGUuX19maWx0ZXJlZF9fPWUuX19maWx0ZXJlZF9ffHxpLGV9fSkpLF9lKFsiaGVhZCIsImxhc3QiXSwoZnVuY3Rpb24odCxlKXt2YXIgbj0idGFrZSIrKGU/IlJpZ2h0IjoiIik7Vm4ucHJvdG90eXBlW3RdPWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXNbbl0oMSkudmFsdWUoKVswXX19KSksX2UoWyJpbml0aWFsIiwidGFpbCJdLChmdW5jdGlvbih0LGUpe3ZhciBuPSJkcm9wIisoZT8iIjoiUmlnaHQiKTtWbi5wcm90b3R5cGVbdF09ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5fX2ZpbHRlcmVkX18/bmV3IFZuKHRoaXMpOnRoaXNbbl0oMSl9fSkpLFZuLnByb3RvdHlwZS5jb21wYWN0PWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuZmlsdGVyKGtsKX0sVm4ucHJvdG90eXBlLmZpbmQ9ZnVuY3Rpb24odCl7cmV0dXJuIHRoaXMuZmlsdGVyKHQpLmhlYWQoKX0sVm4ucHJvdG90eXBlLmZpbmRMYXN0PWZ1bmN0aW9uKHQpe3JldHVybiB0aGlzLnJldmVyc2UoKS5maW5kKHQpfSxWbi5wcm90b3R5cGUuaW52b2tlTWFwPWZyKChmdW5jdGlvbih0LGUpe3JldHVybiJmdW5jdGlvbiI9PXR5cGVvZiB0P25ldyBWbih0aGlzKTp0aGlzLm1hcCgoZnVuY3Rpb24obil7cmV0dXJuICRpKG4sdCxlKX0pKX0pKSxWbi5wcm90b3R5cGUucmVqZWN0PWZ1bmN0aW9uKHQpe3JldHVybiB0aGlzLmZpbHRlcihlcyhBbyh0KSkpfSxWbi5wcm90b3R5cGUuc2xpY2U9ZnVuY3Rpb24odCxlKXt0PUZzKHQpO3ZhciBpPXRoaXM7cmV0dXJuIGkuX19maWx0ZXJlZF9fJiYodD4wfHxlPDApP25ldyBWbihpKToodDwwP2k9aS50YWtlUmlnaHQoLXQpOnQmJihpPWkuZHJvcCh0KSksZSE9PW4mJihpPShlPUZzKGUpKTwwP2kuZHJvcFJpZ2h0KC1lKTppLnRha2UoZS10KSksaSl9LFZuLnByb3RvdHlwZS50YWtlUmlnaHRXaGlsZT1mdW5jdGlvbih0KXtyZXR1cm4gdGhpcy5yZXZlcnNlKCkudGFrZVdoaWxlKHQpLnJldmVyc2UoKX0sVm4ucHJvdG90eXBlLnRvQXJyYXk9ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy50YWtlKGgpfSxIaShWbi5wcm90b3R5cGUsKGZ1bmN0aW9uKHQsZSl7dmFyIGk9L14oPzpmaWx0ZXJ8ZmluZHxtYXB8cmVqZWN0KXxXaGlsZSQvLnRlc3QoZSkscj0vXig/OmhlYWR8bGFzdCkkLy50ZXN0KGUpLG89RG5bcj8idGFrZSIrKCJsYXN0Ij09ZT8iUmlnaHQiOiIiKTplXSxhPXJ8fC9eZmluZC8udGVzdChlKTtvJiYoRG4ucHJvdG90eXBlW2VdPWZ1bmN0aW9uKCl7dmFyIGU9dGhpcy5fX3dyYXBwZWRfXyxzPXI/WzFdOmFyZ3VtZW50cyxsPWUgaW5zdGFuY2VvZiBWbixjPXNbMF0sdT1sfHx1cyhlKSxoPWZ1bmN0aW9uKHQpe3ZhciBlPW8uYXBwbHkoRG4sRWUoW3RdLHMpKTtyZXR1cm4gciYmZD9lWzBdOmV9O3UmJmkmJiJmdW5jdGlvbiI9PXR5cGVvZiBjJiYxIT1jLmxlbmd0aCYmKGw9dT0hMSk7dmFyIGQ9dGhpcy5fX2NoYWluX18scD0hIXRoaXMuX19hY3Rpb25zX18ubGVuZ3RoLGY9YSYmIWQsbT1sJiYhcDtpZighYSYmdSl7ZT1tP2U6bmV3IFZuKHRoaXMpO3ZhciBnPXQuYXBwbHkoZSxzKTtyZXR1cm4gZy5fX2FjdGlvbnNfXy5wdXNoKHtmdW5jOk5hLGFyZ3M6W2hdLHRoaXNBcmc6bn0pLG5ldyBGbihnLGQpfXJldHVybiBmJiZtP3QuYXBwbHkodGhpcyxzKTooZz10aGlzLnRocnUoaCksZj9yP2cudmFsdWUoKVswXTpnLnZhbHVlKCk6Zyl9KX0pKSxfZShbInBvcCIsInB1c2giLCJzaGlmdCIsInNvcnQiLCJzcGxpY2UiLCJ1bnNoaWZ0Il0sKGZ1bmN0aW9uKHQpe3ZhciBlPWt0W3RdLG49L14oPzpwdXNofHNvcnR8dW5zaGlmdCkkLy50ZXN0KHQpPyJ0YXAiOiJ0aHJ1IixpPS9eKD86cG9wfHNoaWZ0KSQvLnRlc3QodCk7RG4ucHJvdG90eXBlW3RdPWZ1bmN0aW9uKCl7dmFyIHQ9YXJndW1lbnRzO2lmKGkmJiF0aGlzLl9fY2hhaW5fXyl7dmFyIHI9dGhpcy52YWx1ZSgpO3JldHVybiBlLmFwcGx5KHVzKHIpP3I6W10sdCl9cmV0dXJuIHRoaXNbbl0oKGZ1bmN0aW9uKG4pe3JldHVybiBlLmFwcGx5KHVzKG4pP246W10sdCl9KSl9fSkpLEhpKFZuLnByb3RvdHlwZSwoZnVuY3Rpb24odCxlKXt2YXIgbj1EbltlXTtpZihuKXt2YXIgaT1uLm5hbWUrIiI7TnQuY2FsbChDbixpKXx8KENuW2ldPVtdKSxDbltpXS5wdXNoKHtuYW1lOmUsZnVuYzpufSl9fSkpLENuW3JvKG4sMikubmFtZV09W3tuYW1lOiJ3cmFwcGVyIixmdW5jOm59XSxWbi5wcm90b3R5cGUuY2xvbmU9ZnVuY3Rpb24gSGgoKXt2YXIgdD1uZXcgVm4odGhpcy5fX3dyYXBwZWRfXyk7cmV0dXJuIHQuX19hY3Rpb25zX189WXIodGhpcy5fX2FjdGlvbnNfXyksdC5fX2Rpcl9fPXRoaXMuX19kaXJfXyx0Ll9fZmlsdGVyZWRfXz10aGlzLl9fZmlsdGVyZWRfXyx0Ll9faXRlcmF0ZWVzX189WXIodGhpcy5fX2l0ZXJhdGVlc19fKSx0Ll9fdGFrZUNvdW50X189dGhpcy5fX3Rha2VDb3VudF9fLHQuX192aWV3c19fPVlyKHRoaXMuX192aWV3c19fKSx0fSxWbi5wcm90b3R5cGUucmV2ZXJzZT1mdW5jdGlvbiBGaCgpe2lmKHRoaXMuX19maWx0ZXJlZF9fKXt2YXIgdD1uZXcgVm4odGhpcyk7dC5fX2Rpcl9fPS0xLHQuX19maWx0ZXJlZF9fPSEwfWVsc2UodD10aGlzLmNsb25lKCkpLl9fZGlyX18qPS0xO3JldHVybiB0fSxWbi5wcm90b3R5cGUudmFsdWU9ZnVuY3Rpb24gVmgoKXt2YXIgdD10aGlzLl9fd3JhcHBlZF9fLnZhbHVlKCksZT10aGlzLl9fZGlyX18sbj11cyh0KSxpPWU8MCxyPW4/dC5sZW5ndGg6MCxvPShmdW5jdGlvbiBhKHQsZSxuKXtmb3IodmFyIGk9LTEscj1uLmxlbmd0aDsrK2k8cjspe3ZhciBvPW5baV0sYT1vLnNpemU7c3dpdGNoKG8udHlwZSl7Y2FzZSJkcm9wIjp0Kz1hO2JyZWFrO2Nhc2UiZHJvcFJpZ2h0IjplLT1hO2JyZWFrO2Nhc2UidGFrZSI6ZT1nbihlLHQrYSk7YnJlYWs7Y2FzZSJ0YWtlUmlnaHQiOnQ9bW4odCxlLWEpfX1yZXR1cm57c3RhcnQ6dCxlbmQ6ZX19KSgwLHIsdGhpcy5fX3ZpZXdzX18pLHM9by5zdGFydCxsPW8uZW5kLGM9bC1zLHU9aT9sOnMtMSxoPXRoaXMuX19pdGVyYXRlZXNfXyxkPWgubGVuZ3RoLHA9MCxmPWduKGMsdGhpcy5fX3Rha2VDb3VudF9fKTtpZighbnx8IWkmJnI9PWMmJmY9PWMpcmV0dXJuIElyKHQsdGhpcy5fX2FjdGlvbnNfXyk7dmFyIG09W107dDpmb3IoO2MtLSYmcDxmOyl7Zm9yKHZhciBnPS0xLF89dFt1Kz1lXTsrK2c8ZDspe3ZhciB5PWhbZ10sdj15LnR5cGUsYj0oMCx5Lml0ZXJhdGVlKShfKTtpZigyPT12KV89YjtlbHNlIGlmKCFiKXtpZigxPT12KWNvbnRpbnVlIHQ7YnJlYWsgdH19bVtwKytdPV99cmV0dXJuIG19LERuLnByb3RvdHlwZS5hdD1PYSxEbi5wcm90b3R5cGUuY2hhaW49ZnVuY3Rpb24gamgoKXtyZXR1cm4gSWEodGhpcyl9LERuLnByb3RvdHlwZS5jb21taXQ9ZnVuY3Rpb24gVWgoKXtyZXR1cm4gbmV3IEZuKHRoaXMudmFsdWUoKSx0aGlzLl9fY2hhaW5fXyl9LERuLnByb3RvdHlwZS5uZXh0PWZ1bmN0aW9uIEdoKCl7dGhpcy5fX3ZhbHVlc19fPT09biYmKHRoaXMuX192YWx1ZXNfXz1Ccyh0aGlzLnZhbHVlKCkpKTt2YXIgdD10aGlzLl9faW5kZXhfXz49dGhpcy5fX3ZhbHVlc19fLmxlbmd0aDtyZXR1cm57ZG9uZTp0LHZhbHVlOnQ/bjp0aGlzLl9fdmFsdWVzX19bdGhpcy5fX2luZGV4X18rK119fSxEbi5wcm90b3R5cGUucGxhbnQ9ZnVuY3Rpb24gV2godCl7Zm9yKHZhciBlLGk9dGhpcztpIGluc3RhbmNlb2YgSG47KXt2YXIgcj1vYShpKTtyLl9faW5kZXhfXz0wLHIuX192YWx1ZXNfXz1uLGU/by5fX3dyYXBwZWRfXz1yOmU9cjt2YXIgbz1yO2k9aS5fX3dyYXBwZWRfX31yZXR1cm4gby5fX3dyYXBwZWRfXz10LGV9LERuLnByb3RvdHlwZS5yZXZlcnNlPWZ1bmN0aW9uIHFoKCl7dmFyIHQ9dGhpcy5fX3dyYXBwZWRfXztpZih0IGluc3RhbmNlb2YgVm4pe3ZhciBlPXQ7cmV0dXJuIHRoaXMuX19hY3Rpb25zX18ubGVuZ3RoJiYoZT1uZXcgVm4odGhpcykpLChlPWUucmV2ZXJzZSgpKS5fX2FjdGlvbnNfXy5wdXNoKHtmdW5jOk5hLGFyZ3M6W2JhXSx0aGlzQXJnOm59KSxuZXcgRm4oZSx0aGlzLl9fY2hhaW5fXyl9cmV0dXJuIHRoaXMudGhydShiYSl9LERuLnByb3RvdHlwZS50b0pTT049RG4ucHJvdG90eXBlLnZhbHVlT2Y9RG4ucHJvdG90eXBlLnZhbHVlPWZ1bmN0aW9uIFloKCl7cmV0dXJuIElyKHRoaXMuX193cmFwcGVkX18sdGhpcy5fX2FjdGlvbnNfXyl9LERuLnByb3RvdHlwZS5maXJzdD1Ebi5wcm90b3R5cGUuaGVhZCxzZSYmKERuLnByb3RvdHlwZVtzZV09ZnVuY3Rpb24gWGgoKXtyZXR1cm4gdGhpc30pLERufSkoKTtvZT8oKG9lLmV4cG9ydHM9YW4pLl89YW4scmUuXz1hbik6aWUuXz1hbn0pLmNhbGwodmUpfSkpLHRtdD1iZSgoZnVuY3Rpb24odCxlKXsKLyoqCiAgICAgKiBDb3B5cmlnaHQgMjAxNC1wcmVzZW50IFBhbGFudGlyIFRlY2hub2xvZ2llcwogICAgICogQGxpY2Vuc2UgTUlUCiAgICAgKi8KT2JqZWN0LmRlZmluZVByb3BlcnR5KGUsIl9fZXNNb2R1bGUiLHt2YWx1ZTohMH0pLGUuSVN0YWNraW5nT3JkZXI9dmZ0Lm1ha2VFbnVtKFsidG9wZG93biIsImJvdHRvbXVwIl0pO3ZhciBuPXdpbmRvdy5NYXRoO2Uuc3RhY2s9ZnVuY3Rpb24gaSh0LG4scixvKXt2b2lkIDA9PT1vJiYobz0iYm90dG9tdXAiKTt2YXIgYT1VaHQubWFwKCkscz1VaHQubWFwKCksbD1uZXcgdW10Lk1hcDsidG9wZG93biI9PT1vJiYodD10LnNsaWNlKCkpLnJldmVyc2UoKTtmb3IodmFyIGM9MCx1PXQ7Yzx1Lmxlbmd0aDtjKyspe2Zvcih2YXIgaD11W2NdLGQ9bmV3IHVtdC5NYXAscD1oLmRhdGEoKSxmPXAubGVuZ3RoLG09MDttPGY7bSsrKXt2YXIgZz1wW21dLF89bihnLG0saCkseT1lLm5vcm1hbGl6ZUtleShfKSx2PStyKGcsbSxoKSxiPXZvaWQgMCx4PXY+PTA/YTpzO3guaGFzKHkpPyhiPXguZ2V0KHkpLHguc2V0KHksYit2KSk6KGI9MCx4LnNldCh5LHYpKSxkLnNldCh5LHtvZmZzZXQ6Yix2YWx1ZTp2LGF4aXNWYWx1ZTpfLG9yaWdpbmFsRGF0dW06ZyxvcmlnaW5hbERhdGFzZXQ6aCxvcmlnaW5hbEluZGV4Om19KX1sLnNldChoLGQpfXJldHVybiBsfSxlLnN0YWNrZWRFeHRlbnRzPWZ1bmN0aW9uIHIodCl7dmFyIGU9bmV3IHVtdC5NYXAsbj1uZXcgdW10Lk1hcDtyZXR1cm4gdC5mb3JFYWNoKChmdW5jdGlvbih0KXt0LmZvckVhY2goKGZ1bmN0aW9uKHQsaSl7dmFyIHI9dC5vZmZzZXQrdC52YWx1ZSxvPXVtdC5NYXRoLm1heChbcix0Lm9mZnNldF0sdC5vZmZzZXQpLGE9dW10Lk1hdGgubWluKFtyLHQub2Zmc2V0XSx0Lm9mZnNldCkscz10LmF4aXNWYWx1ZTtlLmhhcyhpKT9lLmdldChpKS5leHRlbnQ8byYmZS5zZXQoaSx7ZXh0ZW50Om8sYXhpc1ZhbHVlOnMsc3RhY2tlZERhdHVtOnR9KTplLnNldChpLHtleHRlbnQ6byxheGlzVmFsdWU6cyxzdGFja2VkRGF0dW06dH0pLG4uaGFzKGkpP24uZ2V0KGkpLmV4dGVudD5hJiZuLnNldChpLHtleHRlbnQ6YSxheGlzVmFsdWU6cyxzdGFja2VkRGF0dW06dH0pOm4uc2V0KGkse2V4dGVudDphLGF4aXNWYWx1ZTpzLHN0YWNrZWREYXR1bTp0fSl9KSl9KSkse21heGltdW1FeHRlbnRzOmUsbWluaW11bUV4dGVudHM6bn19LGUuc3RhY2tlZEV4dGVudD1mdW5jdGlvbiBvKHQsaSxyKXt2YXIgbz1bXTt0LmZvckVhY2goKGZ1bmN0aW9uKHQsbil7Zm9yKHZhciBhPW4uZGF0YSgpLHM9YS5sZW5ndGgsbD0wO2w8cztsKyspe3ZhciBjPWFbbF07aWYobnVsbD09cnx8cihjLGwsbikpe3ZhciB1PXQuZ2V0KGUubm9ybWFsaXplS2V5KGkoYyxsLG4pKSk7by5wdXNoKHUudmFsdWUrdS5vZmZzZXQpfX19KSk7dmFyIGE9dW10Lk1hdGgubWF4KG8sMCkscz11bXQuTWF0aC5taW4obywwKTtyZXR1cm5bbi5taW4ocywwKSxuLm1heCgwLGEpXX0sZS5ub3JtYWxpemVLZXk9UWZ0Lm1lbW9pemUoKGZ1bmN0aW9uKHQpe3JldHVybiBTdHJpbmcodCl9KSl9KSksZW10PWJlKChmdW5jdGlvbih0LGUpewovKioKICAgICAqIENvcHlyaWdodCAyMDE0LXByZXNlbnQgUGFsYW50aXIgVGVjaG5vbG9naWVzCiAgICAgKiBAbGljZW5zZSBNSVQKICAgICAqLwpPYmplY3QuZGVmaW5lUHJvcGVydHkoZSwiX19lc01vZHVsZSIse3ZhbHVlOiEwfSksZS5TSE9XX1dBUk5JTkdTPSEwLGUuQUREX1RJVExFX0VMRU1FTlRTPSEwfSkpLG5tdD1iZSgoZnVuY3Rpb24odCxlKXtmdW5jdGlvbiBuKHQpe2VtdC5TSE9XX1dBUk5JTkdTJiZjb25zb2xlLndhcm4odCl9ZnVuY3Rpb24gaSh0LGUpe2Zvcih2YXIgbj1bXSxpPTI7aTxhcmd1bWVudHMubGVuZ3RoO2krKyluW2ktMl09YXJndW1lbnRzW2ldO3JldHVybiAwPT09ZT8odChuKSwtMSk6d2luZG93LnNldFRpbWVvdXQodCxlLG4pfQovKioKICAgICAqIENvcHlyaWdodCAyMDE0LXByZXNlbnQgUGFsYW50aXIgVGVjaG5vbG9naWVzCiAgICAgKiBAbGljZW5zZSBNSVQKICAgICAqLwpPYmplY3QuZGVmaW5lUHJvcGVydHkoZSwiX19lc01vZHVsZSIse3ZhbHVlOiEwfSksZS53YXJuPW4sZS5zZXRUaW1lb3V0PWksZS5kZWJvdW5jZT1mdW5jdGlvbiByKHQsZSxuKXt2YXIgcj1udWxsLG89W10sYT1mdW5jdGlvbigpe2UuYXBwbHkobixvKX07cmV0dXJuIGZ1bmN0aW9uKCl7bz1BcnJheS5wcm90b3R5cGUuc2xpY2UuY2FsbChhcmd1bWVudHMpLGNsZWFyVGltZW91dChyKSxyPWkoYSx0KX19LGUuZGVwcmVjYXRlZD1mdW5jdGlvbiBvKHQsZSxpKXt2b2lkIDA9PT1pJiYoaT0iIiksbigiTWV0aG9kICIrdCsiIGhhcyBiZWVuIGRlcHJlY2F0ZWQgaW4gdmVyc2lvbiAiK2UrIi4gUGxlYXNlIHJlZmVyIHRvIHRoZSByZWxlYXNlIG5vdGVzLiAiK2kpfX0pKSxpbXQ9YmUoKGZ1bmN0aW9uKHQsZSl7Ci8qKgogICAgICogQ29weXJpZ2h0IDIwMTctcHJlc2VudCBQYWxhbnRpciBUZWNobm9sb2dpZXMKICAgICAqIEBsaWNlbnNlIE1JVAogICAgICovCk9iamVjdC5kZWZpbmVQcm9wZXJ0eShlLCJfX2VzTW9kdWxlIix7dmFsdWU6ITB9KTt2YXIgbj0oZnVuY3Rpb24oKXtmdW5jdGlvbiB0KHQsZSxuKXt0aGlzLmVudHJ5SW5kZXg9dCx0aGlzLmV4aXRJbmRleD10LHRoaXMubWluSW5kZXg9dCx0aGlzLm1heEluZGV4PXQsdGhpcy5idWNrZXRWYWx1ZT1lLHRoaXMubWluVmFsdWU9bix0aGlzLm1heFZhbHVlPW59cmV0dXJuIHQucHJvdG90eXBlLmlzSW5CdWNrZXQ9ZnVuY3Rpb24odCl7cmV0dXJuIHQ9PXRoaXMuYnVja2V0VmFsdWV9LHQucHJvdG90eXBlLmFkZFRvQnVja2V0PWZ1bmN0aW9uKHQsZSl7dDx0aGlzLm1pblZhbHVlJiYodGhpcy5taW5WYWx1ZT10LHRoaXMubWluSW5kZXg9ZSksdD50aGlzLm1heFZhbHVlJiYodGhpcy5tYXhWYWx1ZT10LHRoaXMubWF4SW5kZXg9ZSksdGhpcy5leGl0SW5kZXg9ZX0sdC5wcm90b3R5cGUuZ2V0VW5pcXVlSW5kaWNlcz1mdW5jdGlvbigpe3ZhciB0PVt0aGlzLmVudHJ5SW5kZXgsdGhpcy5tYXhJbmRleCx0aGlzLm1pbkluZGV4LHRoaXMuZXhpdEluZGV4XTtyZXR1cm4gdC5maWx0ZXIoKGZ1bmN0aW9uKGUsbil7cmV0dXJuIDA9PW58fGUhPXRbbi0xXX0pKX0sdH0pKCk7ZS5CdWNrZXQ9bn0pKSxybXQ9YmUoKGZ1bmN0aW9uKHQsZSl7Ci8qKgogICAgICogQ29weXJpZ2h0IDIwMTQtcHJlc2VudCBQYWxhbnRpciBUZWNobm9sb2dpZXMKICAgICAqIEBsaWNlbnNlIE1JVAogICAgICovCk9iamVjdC5kZWZpbmVQcm9wZXJ0eShlLCJfX2VzTW9kdWxlIix7dmFsdWU6ITB9KTt2YXIgbj0oZnVuY3Rpb24oKXtmdW5jdGlvbiB0KCl7ImZ1bmN0aW9uIj09dHlwZW9mIHdpbmRvdy5TZXQ/dGhpcy5fZXM2U2V0PW5ldyB3aW5kb3cuU2V0OnRoaXMuX3ZhbHVlcz1bXSx0aGlzLnNpemU9MH1yZXR1cm4gdC5wcm90b3R5cGUuYWRkPWZ1bmN0aW9uKHQpe3JldHVybiBudWxsIT10aGlzLl9lczZTZXQ/KHRoaXMuX2VzNlNldC5hZGQodCksdGhpcy5zaXplPXRoaXMuX2VzNlNldC5zaXplLHRoaXMpOih0aGlzLmhhcyh0KXx8KHRoaXMuX3ZhbHVlcy5wdXNoKHQpLHRoaXMuc2l6ZT10aGlzLl92YWx1ZXMubGVuZ3RoKSx0aGlzKX0sdC5wcm90b3R5cGUuZGVsZXRlPWZ1bmN0aW9uKHQpe2lmKG51bGwhPXRoaXMuX2VzNlNldCl7dmFyIGU9dGhpcy5fZXM2U2V0LmRlbGV0ZSh0KTtyZXR1cm4gdGhpcy5zaXplPXRoaXMuX2VzNlNldC5zaXplLGV9dmFyIG49dGhpcy5fdmFsdWVzLmluZGV4T2YodCk7cmV0dXJuLTEhPT1uJiYodGhpcy5fdmFsdWVzLnNwbGljZShuLDEpLHRoaXMuc2l6ZT10aGlzLl92YWx1ZXMubGVuZ3RoLCEwKX0sdC5wcm90b3R5cGUuaGFzPWZ1bmN0aW9uKHQpe3JldHVybiBudWxsIT10aGlzLl9lczZTZXQ/dGhpcy5fZXM2U2V0Lmhhcyh0KTotMSE9PXRoaXMuX3ZhbHVlcy5pbmRleE9mKHQpfSx0LnByb3RvdHlwZS5mb3JFYWNoPWZ1bmN0aW9uKHQsZSl7dmFyIG49dGhpcztudWxsPT10aGlzLl9lczZTZXQ/dGhpcy5fdmFsdWVzLmZvckVhY2goKGZ1bmN0aW9uKGkpe3QuY2FsbChlLGksaSxuKX0pKTp0aGlzLl9lczZTZXQuZm9yRWFjaCgoZnVuY3Rpb24oaSxyKXtyZXR1cm4gdC5jYWxsKGUsaSxyLG4pfSksZSl9LHR9KSgpO2UuU2V0PW59KSksb210PWJlKChmdW5jdGlvbih0LGUpewovKioKICAgICAqIENvcHlyaWdodCAyMDE0LXByZXNlbnQgUGFsYW50aXIgVGVjaG5vbG9naWVzCiAgICAgKiBAbGljZW5zZSBNSVQKICAgICAqLwpPYmplY3QuZGVmaW5lUHJvcGVydHkoZSwiX19lc01vZHVsZSIse3ZhbHVlOiEwfSk7dmFyIG49KGZ1bmN0aW9uKHQpe2Z1bmN0aW9uIGUoKXtyZXR1cm4gbnVsbCE9PXQmJnQuYXBwbHkodGhpcyxhcmd1bWVudHMpfHx0aGlzfXJldHVybiBTZnQuX19leHRlbmRzKGUsdCksZS5wcm90b3R5cGUuY2FsbENhbGxiYWNrcz1mdW5jdGlvbigpe2Zvcih2YXIgdD10aGlzLGU9W10sbj0wO248YXJndW1lbnRzLmxlbmd0aDtuKyspZVtuXT1hcmd1bWVudHNbbl07cmV0dXJuIHRoaXMuZm9yRWFjaCgoZnVuY3Rpb24obil7bi5hcHBseSh0LGUpfSkpLHRoaXN9LGV9KShybXQuU2V0KTtlLkNhbGxiYWNrU2V0PW59KSksYW10PWJlKChmdW5jdGlvbih0LGUpewovKioKICAgICAqIENvcHlyaWdodCAyMDE0LXByZXNlbnQgUGFsYW50aXIgVGVjaG5vbG9naWVzCiAgICAgKiBAbGljZW5zZSBNSVQKICAgICAqLwpPYmplY3QuZGVmaW5lUHJvcGVydHkoZSwiX19lc01vZHVsZSIse3ZhbHVlOiEwfSk7dmFyIG49KGZ1bmN0aW9uKCl7ZnVuY3Rpb24gdCgpe3RoaXMuX2VudGl0aWVzPVtdLHRoaXMuX3J0cmVlPW5ldyBKZnQuUlRyZWV9cmV0dXJuIHQucHJvdG90eXBlLmFkZEFsbD1mdW5jdGlvbih0LGUsbil7aWYodGhpcy5fZW50aXRpZXM9dGhpcy5fZW50aXRpZXMuY29uY2F0KHQpLHZvaWQgMCE9PW4pZm9yKHZhciBpPUpmdC5SVHJlZUJvdW5kcy5ib3VuZHMobikscj0wO3I8dC5sZW5ndGg7cisrKXt2YXIgbz1KZnQuUlRyZWVCb3VuZHMuZW50aXR5Qm91bmRzKGUoYT10W3JdKSk7SmZ0LlJUcmVlQm91bmRzLmlzQm91bmRzT3ZlcmxhcEJvdW5kcyhpLG8pJiZ0aGlzLl9ydHJlZS5pbnNlcnQobyxhKX1lbHNlIGZvcihyPTA7cjx0Lmxlbmd0aDtyKyspe3ZhciBhO289SmZ0LlJUcmVlQm91bmRzLmVudGl0eUJvdW5kcyhlKGE9dFtyXSkpLHRoaXMuX3J0cmVlLmluc2VydChvLGEpfX0sdC5wcm90b3R5cGUuZW50aXR5TmVhcmVzdD1mdW5jdGlvbih0KXtyZXR1cm4gdGhpcy5fcnRyZWUubG9jYXRlTmVhcmVzdCh0KS5wb3AoKX0sdC5wcm90b3R5cGUuZW50aXR5TmVhcmVzdFg9ZnVuY3Rpb24odCl7cmV0dXJuIHRoaXMuX3J0cmVlLmxvY2F0ZU5lYXJlc3RYKHQpLnBvcCgpfSx0LnByb3RvdHlwZS5lbnRpdHlOZWFyZXN0WT1mdW5jdGlvbih0KXtyZXR1cm4gdGhpcy5fcnRyZWUubG9jYXRlTmVhcmVzdFkodCkucG9wKCl9LHQucHJvdG90eXBlLmVudGl0aWVzSW5Cb3VuZHM9ZnVuY3Rpb24odCl7cmV0dXJuIHRoaXMuX3J0cmVlLmludGVyc2VjdChKZnQuUlRyZWVCb3VuZHMuZW50aXR5Qm91bmRzKHQpKX0sdC5wcm90b3R5cGUuZW50aXRpZXNJblhCb3VuZHM9ZnVuY3Rpb24odCl7cmV0dXJuIHRoaXMuX3J0cmVlLmludGVyc2VjdFgoSmZ0LlJUcmVlQm91bmRzLmVudGl0eUJvdW5kcyh0KSl9LHQucHJvdG90eXBlLmVudGl0aWVzSW5ZQm91bmRzPWZ1bmN0aW9uKHQpe3JldHVybiB0aGlzLl9ydHJlZS5pbnRlcnNlY3RZKEpmdC5SVHJlZUJvdW5kcy5lbnRpdHlCb3VuZHModCkpfSx0LnByb3RvdHlwZS5lbnRpdGllcz1mdW5jdGlvbigpe3JldHVybiB0aGlzLl9lbnRpdGllc30sdH0pKCk7ZS5FbnRpdHlTdG9yZT1ufSkpLHNtdD1iZSgoZnVuY3Rpb24odCxlKXsKLyoqCiAgICAgKiBDb3B5cmlnaHQgMjAxNC1wcmVzZW50IFBhbGFudGlyIFRlY2hub2xvZ2llcwogICAgICogQGxpY2Vuc2UgTUlUCiAgICAgKi8KT2JqZWN0LmRlZmluZVByb3BlcnR5KGUsIl9fZXNNb2R1bGUiLHt2YWx1ZTohMH0pO3ZhciBuPShmdW5jdGlvbigpe2Z1bmN0aW9uIHQoKXsiZnVuY3Rpb24iPT10eXBlb2Ygd2luZG93Lk1hcD90aGlzLl9lczZNYXA9bmV3IHdpbmRvdy5NYXA6dGhpcy5fa2V5VmFsdWVQYWlycz1bXX1yZXR1cm4gdC5wcm90b3R5cGUuc2V0PWZ1bmN0aW9uKHQsZSl7aWYoS2Z0LmlzTmFOKHQpKXRocm93IG5ldyBFcnJvcigiTmFOIG1heSBub3QgYmUgdXNlZCBhcyBhIGtleSB0byB0aGUgTWFwIik7aWYobnVsbCE9dGhpcy5fZXM2TWFwKXJldHVybiB0aGlzLl9lczZNYXAuc2V0KHQsZSksdGhpcztmb3IodmFyIG49MDtuPHRoaXMuX2tleVZhbHVlUGFpcnMubGVuZ3RoO24rKylpZih0aGlzLl9rZXlWYWx1ZVBhaXJzW25dLmtleT09PXQpcmV0dXJuIHRoaXMuX2tleVZhbHVlUGFpcnNbbl0udmFsdWU9ZSx0aGlzO3JldHVybiB0aGlzLl9rZXlWYWx1ZVBhaXJzLnB1c2goe2tleTp0LHZhbHVlOmV9KSx0aGlzfSx0LnByb3RvdHlwZS5nZXQ9ZnVuY3Rpb24odCl7aWYobnVsbCE9dGhpcy5fZXM2TWFwKXJldHVybiB0aGlzLl9lczZNYXAuZ2V0KHQpO2Zvcih2YXIgZT0wO2U8dGhpcy5fa2V5VmFsdWVQYWlycy5sZW5ndGg7ZSsrKWlmKHRoaXMuX2tleVZhbHVlUGFpcnNbZV0ua2V5PT09dClyZXR1cm4gdGhpcy5fa2V5VmFsdWVQYWlyc1tlXS52YWx1ZX0sdC5wcm90b3R5cGUuaGFzPWZ1bmN0aW9uKHQpe2lmKG51bGwhPXRoaXMuX2VzNk1hcClyZXR1cm4gdGhpcy5fZXM2TWFwLmhhcyh0KTtmb3IodmFyIGU9MDtlPHRoaXMuX2tleVZhbHVlUGFpcnMubGVuZ3RoO2UrKylpZih0aGlzLl9rZXlWYWx1ZVBhaXJzW2VdLmtleT09PXQpcmV0dXJuITA7cmV0dXJuITF9LHQucHJvdG90eXBlLmZvckVhY2g9ZnVuY3Rpb24odCxlKXt2YXIgbj10aGlzO251bGw9PXRoaXMuX2VzNk1hcD90aGlzLl9rZXlWYWx1ZVBhaXJzLmZvckVhY2goKGZ1bmN0aW9uKGkpe3QuY2FsbChlLGkudmFsdWUsaS5rZXksbil9KSk6dGhpcy5fZXM2TWFwLmZvckVhY2goKGZ1bmN0aW9uKGkscil7cmV0dXJuIHQuY2FsbChlLGkscixuKX0pLGUpfSx0LnByb3RvdHlwZS5kZWxldGU9ZnVuY3Rpb24odCl7aWYobnVsbCE9dGhpcy5fZXM2TWFwKXJldHVybiB0aGlzLl9lczZNYXAuZGVsZXRlKHQpO2Zvcih2YXIgZT0wO2U8dGhpcy5fa2V5VmFsdWVQYWlycy5sZW5ndGg7ZSsrKWlmKHRoaXMuX2tleVZhbHVlUGFpcnNbZV0ua2V5PT09dClyZXR1cm4gdGhpcy5fa2V5VmFsdWVQYWlycy5zcGxpY2UoZSwxKSwhMDtyZXR1cm4hMX0sdH0pKCk7ZS5NYXA9bn0pKSxsbXQ9YmUoKGZ1bmN0aW9uKHQsZSl7Ci8qKgogICAgICogQ29weXJpZ2h0IDIwMTctcHJlc2VudCBQYWxhbnRpciBUZWNobm9sb2dpZXMKICAgICAqIEBsaWNlbnNlIE1JVAogICAgICovCk9iamVjdC5kZWZpbmVQcm9wZXJ0eShlLCJfX2VzTW9kdWxlIix7dmFsdWU6ITB9KSxlLmFzc2lnbj1mdW5jdGlvbiBuKCl7Zm9yKHZhciB0PVtdLGU9MDtlPGFyZ3VtZW50cy5sZW5ndGg7ZSsrKXRbZV09YXJndW1lbnRzW2VdO2Zvcih2YXIgbj17fSxpPTAscj10O2k8ci5sZW5ndGg7aSsrKWZvcih2YXIgbz1yW2ldLGE9T2JqZWN0LmtleXMobykscz0wLGw9YTtzPGwubGVuZ3RoO3MrKyl7dmFyIGM9bFtzXTtuW2NdPW9bY119cmV0dXJuIG59fSkpLGNtdD1iZSgoZnVuY3Rpb24odCxlKXsKLyoqCiAgICAgKiBDb3B5cmlnaHQgMjAxNy1wcmVzZW50IFBhbGFudGlyIFRlY2hub2xvZ2llcwogICAgICogQGxpY2Vuc2UgTUlUCiAgICAgKi8KT2JqZWN0LmRlZmluZVByb3BlcnR5KGUsIl9fZXNNb2R1bGUiLHt2YWx1ZTohMH0pO3ZhciBuPSJfX1Bsb3R0YWJsZV9DbGllbnRUcmFuc2xhdG9yIjtlLmdldFRyYW5zbGF0b3I9ZnVuY3Rpb24gaSh0KXt2YXIgZT10LnJvb3QoKS5yb290RWxlbWVudCgpLm5vZGUoKSxpPWVbbl07cmV0dXJuIG51bGw9PWkmJihpPW5ldyByKGUpLGVbbl09aSksaX07dmFyIHI9KGZ1bmN0aW9uKCl7ZnVuY3Rpb24gdCh0KXt0aGlzLl9yb290RWxlbWVudD10fXJldHVybiB0LnByb3RvdHlwZS5jb21wdXRlUG9zaXRpb249ZnVuY3Rpb24odCxlKXt2YXIgbj17eDp0LHk6ZX0saT11bXQuTWF0aC5nZXRDdW11bGF0aXZlVHJhbnNmb3JtKHRoaXMuX3Jvb3RFbGVtZW50KTtyZXR1cm4gbnVsbD09aT9uOnVtdC5NYXRoLmFwcGx5VHJhbnNmb3JtKGksbil9LHQuaXNFdmVudEluc2lkZT1mdW5jdGlvbih0LGUpe3JldHVybiB1bXQuRE9NLmNvbnRhaW5zKHQucm9vdCgpLnJvb3RFbGVtZW50KCkubm9kZSgpLGUudGFyZ2V0KX0sdH0pKCk7ZS5UcmFuc2xhdG9yPXJ9KSksdW10PWJlKChmdW5jdGlvbih0LGUpewovKioKICAgICAqIENvcHlyaWdodCAyMDE0LXByZXNlbnQgUGFsYW50aXIgVGVjaG5vbG9naWVzCiAgICAgKiBAbGljZW5zZSBNSVQKICAgICAqLwpPYmplY3QuZGVmaW5lUHJvcGVydHkoZSwiX19lc01vZHVsZSIse3ZhbHVlOiEwfSksZS5BcnJheT1ZZnQsZS5Db2xvcj1YZnQsZS5ET009JGZ0LGUuTWF0aD1LZnQsZS5SVHJlZT1KZnQsZS5TdGFja2luZz10bXQsZS5XaW5kb3c9bm10LFNmdC5fX2V4cG9ydFN0YXIoaW10LGUpLFNmdC5fX2V4cG9ydFN0YXIob210LGUpLFNmdC5fX2V4cG9ydFN0YXIoeWZ0LGUpLFNmdC5fX2V4cG9ydFN0YXIoYW10LGUpLFNmdC5fX2V4cG9ydFN0YXIoc210LGUpLFNmdC5fX2V4cG9ydFN0YXIobG10LGUpLFNmdC5fX2V4cG9ydFN0YXIocm10LGUpLFNmdC5fX2V4cG9ydFN0YXIoY210LGUpfSkpLGhtdD1iZSgoZnVuY3Rpb24odCxlKXsKLyoqCiAgICAgKiBDb3B5cmlnaHQgMjAxNC1wcmVzZW50IFBhbGFudGlyIFRlY2hub2xvZ2llcwogICAgICogQGxpY2Vuc2UgTUlUCiAgICAgKi8KT2JqZWN0LmRlZmluZVByb3BlcnR5KGUsIl9fZXNNb2R1bGUiLHt2YWx1ZTohMH0pO3ZhciBuPShmdW5jdGlvbigpe2Z1bmN0aW9uIHQoKXt9cmV0dXJuIHQucHJvdG90eXBlLnJlbmRlcj1mdW5jdGlvbigpe2RtdC5mbHVzaCgpfSx0fSkoKTtlLkltbWVkaWF0ZT1uO3ZhciBpPShmdW5jdGlvbigpe2Z1bmN0aW9uIHQoKXt9cmV0dXJuIHQucHJvdG90eXBlLnJlbmRlcj1mdW5jdGlvbigpe3VtdC5ET00ucmVxdWVzdEFuaW1hdGlvbkZyYW1lUG9seWZpbGwoZG10LmZsdXNoKX0sdH0pKCk7ZS5BbmltYXRpb25GcmFtZT1pO3ZhciByPShmdW5jdGlvbigpe2Z1bmN0aW9uIHQoKXt0aGlzLl90aW1lb3V0TXNlYz11bXQuRE9NLlNDUkVFTl9SRUZSRVNIX1JBVEVfTUlMTElTRUNPTkRTfXJldHVybiB0LnByb3RvdHlwZS5yZW5kZXI9ZnVuY3Rpb24oKXtzZXRUaW1lb3V0KGRtdC5mbHVzaCx0aGlzLl90aW1lb3V0TXNlYyl9LHR9KSgpO2UuVGltZW91dD1yfSkpLGRtdD1iZSgoZnVuY3Rpb24odCxlKXsKLyoqCiAgICAgKiBDb3B5cmlnaHQgMjAxNC1wcmVzZW50IFBhbGFudGlyIFRlY2hub2xvZ2llcwogICAgICogQGxpY2Vuc2UgTUlUCiAgICAgKi8KT2JqZWN0LmRlZmluZVByb3BlcnR5KGUsIl9fZXNNb2R1bGUiLHt2YWx1ZTohMH0pO3ZhciBuPW5ldyB1bXQuU2V0LGk9bmV3IHVtdC5TZXQscj0hMSxvPSExO2UuUG9saWN5PXZmdC5tYWtlRW51bShbImltbWVkaWF0ZSIsImFuaW1hdGlvbkZyYW1lIiwidGltZW91dCJdKTt2YXIgYT1uZXcgaG10LkFuaW1hdGlvbkZyYW1lO2Z1bmN0aW9uIHModCl7aS5hZGQodCksbi5hZGQodCksbCgpfWZ1bmN0aW9uIGwoKXtyfHwocj0hMCxhLnJlbmRlcigpKX1lLnJlbmRlclBvbGljeT1mdW5jdGlvbiBjKHQpe2lmKG51bGw9PXQpcmV0dXJuIGE7c3dpdGNoKHQpe2Nhc2UgZS5Qb2xpY3kuaW1tZWRpYXRlOmE9bmV3IGhtdC5JbW1lZGlhdGU7YnJlYWs7Y2FzZSBlLlBvbGljeS5hbmltYXRpb25GcmFtZTphPW5ldyBobXQuQW5pbWF0aW9uRnJhbWU7YnJlYWs7Y2FzZSBlLlBvbGljeS50aW1lb3V0OmE9bmV3IGhtdC5UaW1lb3V0O2JyZWFrO2RlZmF1bHQ6dW10LldpbmRvdy53YXJuKCJVbnJlY29nbml6ZWQgcmVuZGVyUG9saWN5OiAiK3QpfX0sZS5yZWdpc3RlclRvUmVuZGVyPWZ1bmN0aW9uIHUodCl7byYmdW10LldpbmRvdy53YXJuKCJSZWdpc3RlcmVkIHRvIHJlbmRlciB3aGlsZSBvdGhlciBjb21wb25lbnRzIGFyZSBmbHVzaGluZzogcmVxdWVzdCBtYXkgYmUgaWdub3JlZCIpLG4uYWRkKHQpLGwoKX0sZS5yZWdpc3RlclRvQ29tcHV0ZUxheW91dEFuZFJlbmRlcj1zLGUucmVnaXN0ZXJUb0NvbXB1dGVMYXlvdXQ9ZnVuY3Rpb24gaCh0KXtzKHQpfSxlLmZsdXNoPWZ1bmN0aW9uIGQoKXtpZihyKXtpLmZvckVhY2goKGZ1bmN0aW9uKHQpe3JldHVybiB0LmNvbXB1dGVMYXlvdXQoKX0pKSxuLmZvckVhY2goKGZ1bmN0aW9uKHQpe3JldHVybiB0LnJlbmRlcigpfSkpLG89ITA7dmFyIHQ9bmV3IHVtdC5TZXQ7bi5mb3JFYWNoKChmdW5jdGlvbihlKXt0cnl7ZS5yZW5kZXJJbW1lZGlhdGVseSgpfWNhdGNoKG4pe3dpbmRvdy5zZXRUaW1lb3V0KChmdW5jdGlvbigpe3Rocm93IG59KSwwKSx0LmFkZChlKX19KSksaT1uZXcgdW10LlNldCxuPXQscj0hMSxvPSExfX19KSkscG10PWJlKChmdW5jdGlvbih0LGUpewovKioKICAgICAqIENvcHlyaWdodCAyMDE0LXByZXNlbnQgUGFsYW50aXIgVGVjaG5vbG9naWVzCiAgICAgKiBAbGljZW5zZSBNSVQKICAgICAqLwpPYmplY3QuZGVmaW5lUHJvcGVydHkoZSwiX19lc01vZHVsZSIse3ZhbHVlOiEwfSksZS5YQWxpZ25tZW50PXZmdC5tYWtlRW51bShbImxlZnQiLCJjZW50ZXIiLCJyaWdodCJdKSxlLllBbGlnbm1lbnQ9dmZ0Lm1ha2VFbnVtKFsidG9wIiwiY2VudGVyIiwiYm90dG9tIl0pO3ZhciBuPShmdW5jdGlvbigpe2Z1bmN0aW9uIHQoKXt0aGlzLl9vdmVyZmxvd0hpZGRlbj0hMSx0aGlzLl9vcmlnaW49e3g6MCx5OjB9LHRoaXMuX3hBbGlnbm1lbnQ9ImxlZnQiLHRoaXMuX3lBbGlnbm1lbnQ9InRvcCIsdGhpcy5faXNTZXR1cD0hMSx0aGlzLl9pc0FuY2hvcmVkPSExLHRoaXMuX2Nzc0NsYXNzZXM9bmV3IHVtdC5TZXQsdGhpcy5fZGVzdHJveWVkPSExLHRoaXMuX29uQW5jaG9yQ2FsbGJhY2tzPW5ldyB1bXQuQ2FsbGJhY2tTZXQsdGhpcy5fb25EZXRhY2hDYWxsYmFja3M9bmV3IHVtdC5DYWxsYmFja1NldCx0aGlzLl9jc3NDbGFzc2VzLmFkZCgiY29tcG9uZW50Iil9cmV0dXJuIHQucHJvdG90eXBlLmFuY2hvcj1mdW5jdGlvbih0KXtpZih0PXlmdC5jb2VyY2VFeHRlcm5hbEQzKHQpLHRoaXMuX2Rlc3Ryb3llZCl0aHJvdyBuZXcgRXJyb3IoIkNhbid0IHJldXNlIGRlc3Ryb3koKS1lZCBDb21wb25lbnRzISIpO3JldHVybiB0aGlzLmlzUm9vdCgpJiYodGhpcy5fcm9vdEVsZW1lbnQ9dCx0aGlzLl9yb290RWxlbWVudC5jbGFzc2VkKCJwbG90dGFibGUiLCEwKSksbnVsbCE9dGhpcy5fZWxlbWVudD90Lm5vZGUoKS5hcHBlbmRDaGlsZCh0aGlzLl9lbGVtZW50Lm5vZGUoKSk6KHRoaXMuX2VsZW1lbnQ9dC5hcHBlbmQoImRpdiIpLHRoaXMuX3NldHVwKCkpLHRoaXMuX2lzQW5jaG9yZWQ9ITAsdGhpcy5fb25BbmNob3JDYWxsYmFja3MuY2FsbENhbGxiYWNrcyh0aGlzKSx0aGlzfSx0LnByb3RvdHlwZS5vbkFuY2hvcj1mdW5jdGlvbih0KXtyZXR1cm4gdGhpcy5faXNBbmNob3JlZCYmdCh0aGlzKSx0aGlzLl9vbkFuY2hvckNhbGxiYWNrcy5hZGQodCksdGhpc30sdC5wcm90b3R5cGUub2ZmQW5jaG9yPWZ1bmN0aW9uKHQpe3JldHVybiB0aGlzLl9vbkFuY2hvckNhbGxiYWNrcy5kZWxldGUodCksdGhpc30sdC5wcm90b3R5cGUuX3NldHVwPWZ1bmN0aW9uKCl7dmFyIHQ9dGhpczt0aGlzLl9pc1NldHVwfHwodGhpcy5fY3NzQ2xhc3Nlcy5mb3JFYWNoKChmdW5jdGlvbihlKXt0Ll9lbGVtZW50LmNsYXNzZWQoZSwhMCl9KSksdGhpcy5fY3NzQ2xhc3Nlcz1uZXcgdW10LlNldCx0aGlzLl9iYWNrZ3JvdW5kQ29udGFpbmVyPXRoaXMuX2VsZW1lbnQuYXBwZW5kKCJzdmciKS5jbGFzc2VkKCJiYWNrZ3JvdW5kLWNvbnRhaW5lciIsITApLHRoaXMuX2NvbnRlbnQ9dGhpcy5fZWxlbWVudC5hcHBlbmQoInN2ZyIpLmNsYXNzZWQoImNvbnRlbnQiLCEwKSx0aGlzLl9mb3JlZ3JvdW5kQ29udGFpbmVyPXRoaXMuX2VsZW1lbnQuYXBwZW5kKCJzdmciKS5jbGFzc2VkKCJmb3JlZ3JvdW5kLWNvbnRhaW5lciIsITApLHRoaXMuX2NvbnRlbnQuY2xhc3NlZCh0aGlzLl9vdmVyZmxvd0hpZGRlbj8iY29tcG9uZW50LW92ZXJmbG93LWhpZGRlbiI6ImNvbXBvbmVudC1vdmVyZmxvdy12aXNpYmxlIiwhMCksdGhpcy5faXNTZXR1cD0hMCl9LHQucHJvdG90eXBlLnJlcXVlc3RlZFNwYWNlPWZ1bmN0aW9uKHQsZSl7cmV0dXJue21pbldpZHRoOjAsbWluSGVpZ2h0OjB9fSx0LnByb3RvdHlwZS5jb21wdXRlTGF5b3V0PWZ1bmN0aW9uKGUsbixpKXtpZihudWxsPT1lfHxudWxsPT1ufHxudWxsPT1pKXtpZihudWxsPT10aGlzLl9lbGVtZW50KXRocm93IG5ldyBFcnJvcigiYW5jaG9yKCkgbXVzdCBiZSBjYWxsZWQgYmVmb3JlIGNvbXB1dGVMYXlvdXQoKSIpO2lmKG51bGw9PXRoaXMuX3Jvb3RFbGVtZW50KXRocm93IG5ldyBFcnJvcigibnVsbCBhcmd1bWVudHMgY2Fubm90IGJlIHBhc3NlZCB0byBjb21wdXRlTGF5b3V0KCkgb24gYSBub24tcm9vdCwgdW5hbmNob3JlZCBub2RlIik7ZT17eDowLHk6MH07dmFyIHI9dGhpcy5fcm9vdEVsZW1lbnQubm9kZSgpO249dW10LkRPTS5lbGVtZW50V2lkdGgociksaT11bXQuRE9NLmVsZW1lbnRIZWlnaHQocil9dmFyIG89dGhpcy5fc2l6ZUZyb21PZmZlcihuLGkpLGE9by5oZWlnaHQscz1vLndpZHRoO3JldHVybiB0aGlzLnNldEJvdW5kcyhzLGEsZS54KyhuLXMpKnQuX3hBbGlnblRvUHJvcG9ydGlvblt0aGlzLl94QWxpZ25tZW50XSxlLnkrKGktYSkqdC5feUFsaWduVG9Qcm9wb3J0aW9uW3RoaXMuX3lBbGlnbm1lbnRdKSx0aGlzfSx0LnByb3RvdHlwZS5zZXRCb3VuZHM9ZnVuY3Rpb24odCxlLG4saSl7cmV0dXJuIHZvaWQgMD09PW4mJihuPTApLHZvaWQgMD09PWkmJihpPTApLHRoaXMuX3dpZHRoPXQsdGhpcy5faGVpZ2h0PWUsdGhpcy5fb3JpZ2luPXt4Om4seTppfSxudWxsIT10aGlzLl9lbGVtZW50JiZ0aGlzLl9lbGVtZW50LnN0eWxlcyh7bGVmdDpuKyJweCIsaGVpZ2h0OmUrInB4Iix0b3A6aSsicHgiLHdpZHRoOnQrInB4In0pLG51bGwhPXRoaXMuX3Jlc2l6ZUhhbmRsZXImJnRoaXMuX3Jlc2l6ZUhhbmRsZXIoe3dpZHRoOnQsaGVpZ2h0OmV9KSx0aGlzfSx0LnByb3RvdHlwZS5fc2l6ZUZyb21PZmZlcj1mdW5jdGlvbih0LGUpe3ZhciBuPXRoaXMucmVxdWVzdGVkU3BhY2UodCxlKTtyZXR1cm57d2lkdGg6dGhpcy5maXhlZFdpZHRoKCk/TWF0aC5taW4odCxuLm1pbldpZHRoKTp0LGhlaWdodDp0aGlzLmZpeGVkSGVpZ2h0KCk/TWF0aC5taW4oZSxuLm1pbkhlaWdodCk6ZX19LHQucHJvdG90eXBlLnJlbmRlcj1mdW5jdGlvbigpe3JldHVybiB0aGlzLl9pc0FuY2hvcmVkJiZ0aGlzLl9pc1NldHVwJiZ0aGlzLndpZHRoKCk+PTAmJnRoaXMuaGVpZ2h0KCk+PTAmJmRtdC5yZWdpc3RlclRvUmVuZGVyKHRoaXMpLHRoaXN9LHQucHJvdG90eXBlLnJlbmRlckxvd1ByaW9yaXR5PWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMucmVuZGVyKCl9LHQucHJvdG90eXBlLl9zY2hlZHVsZUNvbXB1dGVMYXlvdXQ9ZnVuY3Rpb24oKXt0aGlzLl9pc0FuY2hvcmVkJiZ0aGlzLl9pc1NldHVwJiZkbXQucmVnaXN0ZXJUb0NvbXB1dGVMYXlvdXRBbmRSZW5kZXIodGhpcyl9LHQucHJvdG90eXBlLm9uUmVzaXplPWZ1bmN0aW9uKHQpe3JldHVybiB0aGlzLl9yZXNpemVIYW5kbGVyPXQsdGhpc30sdC5wcm90b3R5cGUucmVuZGVySW1tZWRpYXRlbHk9ZnVuY3Rpb24oKXtyZXR1cm4gdGhpc30sdC5wcm90b3R5cGUucmVkcmF3PWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuX2lzQW5jaG9yZWQmJnRoaXMuX2lzU2V0dXAmJih0aGlzLmlzUm9vdCgpP3RoaXMuX3NjaGVkdWxlQ29tcHV0ZUxheW91dCgpOnRoaXMucGFyZW50KCkucmVkcmF3KCkpLHRoaXN9LHQucHJvdG90eXBlLmludmFsaWRhdGVDYWNoZT1mdW5jdGlvbigpe30sdC5wcm90b3R5cGUucmVuZGVyVG89ZnVuY3Rpb24odCl7aWYodGhpcy5kZXRhY2goKSxudWxsIT10KXt2YXIgZT12b2lkIDA7aWYoIShlPSJzdHJpbmciPT10eXBlb2YgdHx8UWZ0LmlzRWxlbWVudCh0KT9VaHQuc2VsZWN0KHQpOnlmdC5jb2VyY2VFeHRlcm5hbEQzKHQpKS5ub2RlKCl8fG51bGw9PWUubm9kZSgpLm5vZGVOYW1lKXRocm93IG5ldyBFcnJvcigiUGxvdHRhYmxlIHJlcXVpcmVzIGEgdmFsaWQgRWxlbWVudCB0byByZW5kZXJUbyIpO2lmKCJzdmciPT09ZS5ub2RlKCkubm9kZU5hbWUpdGhyb3cgbmV3IEVycm9yKCJQbG90dGFibGUgMy54IGFuZCBsYXRlciBjYW4gb25seSByZW5kZXJUbyBhbiBIVE1MIGNvbXBvbmVudDsgcGFzcyBhIGRpdiBpbnN0ZWFkISIpO3RoaXMuYW5jaG9yKGUpfWlmKG51bGw9PXRoaXMuX2VsZW1lbnQpdGhyb3cgbmV3IEVycm9yKCJJZiBhIENvbXBvbmVudCBoYXMgbmV2ZXIgYmVlbiByZW5kZXJlZCBiZWZvcmUsIHRoZW4gcmVuZGVyVG8gbXVzdCBiZSBnaXZlbiBhIG5vZGUgdG8gcmVuZGVyIHRvLCBvciBhIGQzLlNlbGVjdGlvbiwgb3IgYSBzZWxlY3RvciBzdHJpbmciKTtyZXR1cm4gZG10LnJlZ2lzdGVyVG9Db21wdXRlTGF5b3V0QW5kUmVuZGVyKHRoaXMpLGRtdC5mbHVzaCgpLHRoaXN9LHQucHJvdG90eXBlLnhBbGlnbm1lbnQ9ZnVuY3Rpb24oZSl7aWYobnVsbD09ZSlyZXR1cm4gdGhpcy5feEFsaWdubWVudDtpZihlPWUudG9Mb3dlckNhc2UoKSxudWxsPT10Ll94QWxpZ25Ub1Byb3BvcnRpb25bZV0pdGhyb3cgbmV3IEVycm9yKCJVbnN1cHBvcnRlZCBhbGlnbm1lbnQ6ICIrZSk7cmV0dXJuIHRoaXMuX3hBbGlnbm1lbnQ9ZSx0aGlzLnJlZHJhdygpLHRoaXN9LHQucHJvdG90eXBlLnlBbGlnbm1lbnQ9ZnVuY3Rpb24oZSl7aWYobnVsbD09ZSlyZXR1cm4gdGhpcy5feUFsaWdubWVudDtpZihlPWUudG9Mb3dlckNhc2UoKSxudWxsPT10Ll95QWxpZ25Ub1Byb3BvcnRpb25bZV0pdGhyb3cgbmV3IEVycm9yKCJVbnN1cHBvcnRlZCBhbGlnbm1lbnQ6ICIrZSk7cmV0dXJuIHRoaXMuX3lBbGlnbm1lbnQ9ZSx0aGlzLnJlZHJhdygpLHRoaXN9LHQucHJvdG90eXBlLmhhc0NsYXNzPWZ1bmN0aW9uKHQpe3JldHVybiBudWxsIT10JiYobnVsbD09dGhpcy5fZWxlbWVudD90aGlzLl9jc3NDbGFzc2VzLmhhcyh0KTp0aGlzLl9lbGVtZW50LmNsYXNzZWQodCkpfSx0LnByb3RvdHlwZS5hZGRDbGFzcz1mdW5jdGlvbih0KXtyZXR1cm4gbnVsbD09dHx8KG51bGw9PXRoaXMuX2VsZW1lbnQ/dGhpcy5fY3NzQ2xhc3Nlcy5hZGQodCk6dGhpcy5fZWxlbWVudC5jbGFzc2VkKHQsITApKSx0aGlzfSx0LnByb3RvdHlwZS5yZW1vdmVDbGFzcz1mdW5jdGlvbih0KXtyZXR1cm4gbnVsbD09dHx8KG51bGw9PXRoaXMuX2VsZW1lbnQ/dGhpcy5fY3NzQ2xhc3Nlcy5kZWxldGUodCk6dGhpcy5fZWxlbWVudC5jbGFzc2VkKHQsITEpKSx0aGlzfSx0LnByb3RvdHlwZS5maXhlZFdpZHRoPWZ1bmN0aW9uKCl7cmV0dXJuITF9LHQucHJvdG90eXBlLmZpeGVkSGVpZ2h0PWZ1bmN0aW9uKCl7cmV0dXJuITF9LHQucHJvdG90eXBlLmRldGFjaD1mdW5jdGlvbigpe3JldHVybiB0aGlzLnBhcmVudChudWxsKSx0aGlzLl9pc0FuY2hvcmVkJiZ0aGlzLl9lbGVtZW50LnJlbW92ZSgpLHRoaXMuX2lzQW5jaG9yZWQ9ITEsdGhpcy5fb25EZXRhY2hDYWxsYmFja3MuY2FsbENhbGxiYWNrcyh0aGlzKSx0aGlzfSx0LnByb3RvdHlwZS5vbkRldGFjaD1mdW5jdGlvbih0KXtyZXR1cm4gdGhpcy5fb25EZXRhY2hDYWxsYmFja3MuYWRkKHQpLHRoaXN9LHQucHJvdG90eXBlLm9mZkRldGFjaD1mdW5jdGlvbih0KXtyZXR1cm4gdGhpcy5fb25EZXRhY2hDYWxsYmFja3MuZGVsZXRlKHQpLHRoaXN9LHQucHJvdG90eXBlLnBhcmVudD1mdW5jdGlvbih0KXtpZih2b2lkIDA9PT10KXJldHVybiB0aGlzLl9wYXJlbnQ7aWYobnVsbCE9PXQmJiF0Lmhhcyh0aGlzKSl0aHJvdyBuZXcgRXJyb3IoIlBhc3NlZCBpbnZhbGlkIHBhcmVudCIpO3JldHVybiB0aGlzLl9wYXJlbnQ9dCx0aGlzfSx0LnByb3RvdHlwZS5ib3VuZHM9ZnVuY3Rpb24oKXt2YXIgdD10aGlzLm9yaWdpbigpO3JldHVybnt0b3BMZWZ0OnQsYm90dG9tUmlnaHQ6e3g6dC54K3RoaXMud2lkdGgoKSx5OnQueSt0aGlzLmhlaWdodCgpfX19LHQucHJvdG90eXBlLmRlc3Ryb3k9ZnVuY3Rpb24oKXt0aGlzLl9kZXN0cm95ZWQ9ITAsdGhpcy5kZXRhY2goKX0sdC5wcm90b3R5cGUud2lkdGg9ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5fd2lkdGh9LHQucHJvdG90eXBlLmhlaWdodD1mdW5jdGlvbigpe3JldHVybiB0aGlzLl9oZWlnaHR9LHQucHJvdG90eXBlLm9yaWdpbj1mdW5jdGlvbigpe3JldHVybnt4OnRoaXMuX29yaWdpbi54LHk6dGhpcy5fb3JpZ2luLnl9fSx0LnByb3RvdHlwZS5vcmlnaW5Ub1Jvb3Q9ZnVuY3Rpb24oKXtmb3IodmFyIHQ9dGhpcy5vcmlnaW4oKSxlPXRoaXMucGFyZW50KCk7bnVsbCE9ZTspe3ZhciBuPWUub3JpZ2luKCk7dC54Kz1uLngsdC55Kz1uLnksZT1lLnBhcmVudCgpfXJldHVybiB0fSx0LnByb3RvdHlwZS5yb290PWZ1bmN0aW9uKCl7Zm9yKHZhciB0PXRoaXM7IXQuaXNSb290KCk7KXQ9dC5wYXJlbnQoKTtyZXR1cm4gdH0sdC5wcm90b3R5cGUuaXNSb290PWZ1bmN0aW9uKCl7cmV0dXJuIG51bGw9PXRoaXMucGFyZW50KCl9LHQucHJvdG90eXBlLmZvcmVncm91bmQ9ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5fZm9yZWdyb3VuZENvbnRhaW5lcn0sdC5wcm90b3R5cGUuY29udGVudD1mdW5jdGlvbigpe3JldHVybiB0aGlzLl9jb250ZW50fSx0LnByb3RvdHlwZS5lbGVtZW50PWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuX2VsZW1lbnR9LHQucHJvdG90eXBlLnJvb3RFbGVtZW50PWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMucm9vdCgpLl9yb290RWxlbWVudH0sdC5wcm90b3R5cGUuYmFja2dyb3VuZD1mdW5jdGlvbigpe3JldHVybiB0aGlzLl9iYWNrZ3JvdW5kQ29udGFpbmVyfSx0Ll94QWxpZ25Ub1Byb3BvcnRpb249e2xlZnQ6MCxjZW50ZXI6LjUscmlnaHQ6MX0sdC5feUFsaWduVG9Qcm9wb3J0aW9uPXt0b3A6MCxjZW50ZXI6LjUsYm90dG9tOjF9LHR9KSgpO2UuQ29tcG9uZW50PW59KSksZm10PWJlKChmdW5jdGlvbih0LGUpe2Z1bmN0aW9uIG4odCl7cmV0dXJuIHZvaWQgMD09PXQmJih0PTMpLGkodCksZnVuY3Rpb24oZSl7cmV0dXJuIGUudG9GaXhlZCh0KX19ZnVuY3Rpb24gaSh0KXtpZih0PDB8fHQ+MjApdGhyb3cgbmV3IFJhbmdlRXJyb3IoIkZvcm1hdHRlciBwcmVjaXNpb24gbXVzdCBiZSBiZXR3ZWVuIDAgYW5kIDIwIik7aWYodCE9PU1hdGguZmxvb3IodCkpdGhyb3cgbmV3IFJhbmdlRXJyb3IoIkZvcm1hdHRlciBwcmVjaXNpb24gbXVzdCBiZSBhbiBpbnRlZ2VyIil9Ci8qKgogICAgICogQ29weXJpZ2h0IDIwMTQtcHJlc2VudCBQYWxhbnRpciBUZWNobm9sb2dpZXMKICAgICAqIEBsaWNlbnNlIE1JVAogICAgICovCk9iamVjdC5kZWZpbmVQcm9wZXJ0eShlLCJfX2VzTW9kdWxlIix7dmFsdWU6ITB9KSxlLmN1cnJlbmN5PWZ1bmN0aW9uIHIodCxlLGkpe3ZvaWQgMD09PXQmJih0PTIpLHZvaWQgMD09PWUmJihlPSIkIiksdm9pZCAwPT09aSYmKGk9ITApO3ZhciByPW4odCk7cmV0dXJuIGZ1bmN0aW9uKHQpe3ZhciBuPXIoTWF0aC5hYnModCkpO3JldHVybiIiIT09biYmKGk/bj1lK246bis9ZSx0PDAmJihuPSItIituKSksbn19LGUuZml4ZWQ9bixlLmdlbmVyYWw9ZnVuY3Rpb24gbyh0KXtyZXR1cm4gdm9pZCAwPT09dCYmKHQ9MyksaSh0KSxmdW5jdGlvbihlKXtpZigibnVtYmVyIj09dHlwZW9mIGUpe3ZhciBuPU1hdGgucG93KDEwLHQpO3JldHVybiBTdHJpbmcoTWF0aC5yb3VuZChlKm4pL24pfXJldHVybiBTdHJpbmcoZSl9fSxlLmlkZW50aXR5PWZ1bmN0aW9uIGEoKXtyZXR1cm4gZnVuY3Rpb24odCl7cmV0dXJuIFN0cmluZyh0KX19LGUucGVyY2VudGFnZT1mdW5jdGlvbiBzKHQpe3ZvaWQgMD09PXQmJih0PTApO3ZhciBlPW4odCk7cmV0dXJuIGZ1bmN0aW9uKHQpe3ZhciBuPTEwMCp0LGk9dC50b1N0cmluZygpLHI9TWF0aC5wb3coMTAsaS5sZW5ndGgtKGkuaW5kZXhPZigiLiIpKzEpKTtyZXR1cm4gbj1wYXJzZUludCgobipyKS50b1N0cmluZygpLDEwKS9yLGUobikrIiUifX0sZS5zaVN1ZmZpeD1mdW5jdGlvbiBsKHQpe3JldHVybiB2b2lkIDA9PT10JiYodD0zKSxpKHQpLGZ1bmN0aW9uKGUpe3JldHVybiBVaHQuZm9ybWF0KCIuIit0KyJzIikoZSl9fSxlLnNob3J0U2NhbGU9ZnVuY3Rpb24gYyh0KXt2b2lkIDA9PT10JiYodD0zKSxpKHQpO3ZhciBlPSJLTUJUUSIsbj1VaHQuZm9ybWF0KCIuIit0KyJlIikscj1VaHQuZm9ybWF0KCIuIit0KyJmIiksbz1NYXRoLnBvdygxMCwzKihlLmxlbmd0aCsxKSksYT1NYXRoLnBvdygxMCwtdCk7cmV0dXJuIGZ1bmN0aW9uKHQpe3ZhciBpPU1hdGguYWJzKHQpO2lmKChpPGF8fGk+PW8pJiYwIT09aSlyZXR1cm4gbih0KTtmb3IodmFyIHM9LTE7aT49TWF0aC5wb3coMWUzLHMrMikmJnM8ZS5sZW5ndGgtMTspcysrO3ZhciBsPSIiO3JldHVybiBsPS0xPT09cz9yKHQpOnIodC9NYXRoLnBvdygxZTMscysxKSkrZVtzXSwodD4wJiYiMTAwMCI9PT1sLnN1YnN0cigwLDQpfHx0PDAmJiItMTAwMCI9PT1sLnN1YnN0cigwLDUpKSYmKHM8ZS5sZW5ndGgtMT8ocysrLGw9cih0L01hdGgucG93KDFlMyxzKzEpKStlW3NdKTpsPW4odCkpLGx9fSxlLm11bHRpVGltZT1mdW5jdGlvbiB1KCl7dmFyIHQ9W3tzcGVjaWZpZXI6Ii4lTCIscHJlZGljYXRlOmZ1bmN0aW9uKHQpe3JldHVybiAwIT09dC5nZXRNaWxsaXNlY29uZHMoKX19LHtzcGVjaWZpZXI6IjolUyIscHJlZGljYXRlOmZ1bmN0aW9uKHQpe3JldHVybiAwIT09dC5nZXRTZWNvbmRzKCl9fSx7c3BlY2lmaWVyOiIlSTolTSIscHJlZGljYXRlOmZ1bmN0aW9uKHQpe3JldHVybiAwIT09dC5nZXRNaW51dGVzKCl9fSx7c3BlY2lmaWVyOiIlSSAlcCIscHJlZGljYXRlOmZ1bmN0aW9uKHQpe3JldHVybiAwIT09dC5nZXRIb3VycygpfX0se3NwZWNpZmllcjoiJWEgJWQiLHByZWRpY2F0ZTpmdW5jdGlvbih0KXtyZXR1cm4gMCE9PXQuZ2V0RGF5KCkmJjEhPT10LmdldERhdGUoKX19LHtzcGVjaWZpZXI6IiViICVkIixwcmVkaWNhdGU6ZnVuY3Rpb24odCl7cmV0dXJuIDEhPT10LmdldERhdGUoKX19LHtzcGVjaWZpZXI6IiViIixwcmVkaWNhdGU6ZnVuY3Rpb24odCl7cmV0dXJuIDAhPT10LmdldE1vbnRoKCl9fV07cmV0dXJuIGZ1bmN0aW9uKGUpe3ZhciBuPXQuZmlsdGVyKChmdW5jdGlvbih0KXtyZXR1cm4gdC5wcmVkaWNhdGUoZSl9KSk7cmV0dXJuIFVodC50aW1lRm9ybWF0KG4ubGVuZ3RoPjA/blswXS5zcGVjaWZpZXI6IiVZIikoZSl9fSxlLnRpbWU9ZnVuY3Rpb24gaCh0LGUpe3JldHVybiB2b2lkIDA9PT1lJiYoZT0hMSksZT9VaHQudXRjRm9ybWF0KHQpOlVodC50aW1lRm9ybWF0KHQpfX0pKSxtbXQ9YmUoKGZ1bmN0aW9uKHQsZSl7Ci8qKgogICAgICogQ29weXJpZ2h0IDIwMTQtcHJlc2VudCBQYWxhbnRpciBUZWNobm9sb2dpZXMKICAgICAqIEBsaWNlbnNlIE1JVAogICAgICovCk9iamVjdC5kZWZpbmVQcm9wZXJ0eShlLCJfX2VzTW9kdWxlIix7dmFsdWU6ITB9KSxlLkF4aXNPcmllbnRhdGlvbj12ZnQubWFrZUVudW0oWyJib3R0b20iLCJsZWZ0IiwicmlnaHQiLCJ0b3AiXSk7dmFyIG49KGZ1bmN0aW9uKHQpe2Z1bmN0aW9uIGUoZSxuKXt2YXIgaT10LmNhbGwodGhpcyl8fHRoaXM7aWYoaS5fZW5kVGlja0xlbmd0aD01LGkuX2lubmVyVGlja0xlbmd0aD01LGkuX3RpY2tMYWJlbFBhZGRpbmc9MTAsaS5fbWFyZ2luPTE1LGkuX3Nob3dFbmRUaWNrTGFiZWxzPSExLGkuX2Fubm90YXRpb25zRW5hYmxlZD0hMSxpLl9hbm5vdGF0aW9uVGllckNvdW50PTEsbnVsbD09ZXx8bnVsbD09bil0aHJvdyBuZXcgRXJyb3IoIkF4aXMgcmVxdWlyZXMgYSBzY2FsZSBhbmQgb3JpZW50YXRpb24iKTtyZXR1cm4gaS5fc2NhbGU9ZSxpLm9yaWVudGF0aW9uKG4pLGkuX3NldERlZmF1bHRBbGlnbm1lbnQoKSxpLmFkZENsYXNzKCJheGlzIiksaS5pc0hvcml6b250YWwoKT9pLmFkZENsYXNzKCJ4LWF4aXMiKTppLmFkZENsYXNzKCJ5LWF4aXMiKSxpLmZvcm1hdHRlcihmbXQuaWRlbnRpdHkoKSksaS5fcmVzY2FsZUNhbGxiYWNrPWZ1bmN0aW9uKHQpe3JldHVybiBpLl9yZXNjYWxlKCl9LGkuX3NjYWxlLm9uVXBkYXRlKGkuX3Jlc2NhbGVDYWxsYmFjayksaS5fYW5ub3RhdGVkVGlja3M9W10saS5fYW5ub3RhdGlvbkZvcm1hdHRlcj1mbXQuaWRlbnRpdHkoKSxpfXJldHVybiBTZnQuX19leHRlbmRzKGUsdCksZS5wcm90b3R5cGUuZGVzdHJveT1mdW5jdGlvbigpe3QucHJvdG90eXBlLmRlc3Ryb3kuY2FsbCh0aGlzKSx0aGlzLl9zY2FsZS5vZmZVcGRhdGUodGhpcy5fcmVzY2FsZUNhbGxiYWNrKX0sZS5wcm90b3R5cGUudGlja0xhYmVsRGF0YU9uRWxlbWVudD1mdW5jdGlvbih0KXtpZihudWxsIT10KXtmb3IodmFyIG47bnVsbCE9dCYmdC5jbGFzc0xpc3QmJnZvaWQgMD09PW47KXQuY2xhc3NMaXN0LmNvbnRhaW5zKGUuVElDS19MQUJFTF9DTEFTUyk/bj10OnQ9dC5wYXJlbnROb2RlO3JldHVybiB2b2lkIDA9PT10P3ZvaWQgMDpVaHQuc2VsZWN0KHQpLmRhdHVtKCl9fSxlLnByb3RvdHlwZS5fY29tcHV0ZVdpZHRoPWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuX21heExhYmVsVGlja0xlbmd0aCgpfSxlLnByb3RvdHlwZS5fY29tcHV0ZUhlaWdodD1mdW5jdGlvbigpe3JldHVybiB0aGlzLl9tYXhMYWJlbFRpY2tMZW5ndGgoKX0sZS5wcm90b3R5cGUucmVxdWVzdGVkU3BhY2U9ZnVuY3Rpb24odCxuKXt2YXIgaT0wLHI9MDtyZXR1cm4gdGhpcy5pc0hvcml6b250YWwoKT8ocj10aGlzLl9jb21wdXRlSGVpZ2h0KCkrdGhpcy5fbWFyZ2luLHRoaXMuYW5ub3RhdGlvbnNFbmFibGVkKCkmJihyKz0odGhpcy5fYW5ub3RhdGlvbk1lYXN1cmVyLm1lYXN1cmUoKS5oZWlnaHQrMiplLl9BTk5PVEFUSU9OX0xBQkVMX1BBRERJTkcpKnRoaXMuYW5ub3RhdGlvblRpZXJDb3VudCgpKSk6KGk9dGhpcy5fY29tcHV0ZVdpZHRoKCkrdGhpcy5fbWFyZ2luLHRoaXMuYW5ub3RhdGlvbnNFbmFibGVkKCkmJihpKz0odGhpcy5fYW5ub3RhdGlvbk1lYXN1cmVyLm1lYXN1cmUoKS5oZWlnaHQrMiplLl9BTk5PVEFUSU9OX0xBQkVMX1BBRERJTkcpKnRoaXMuYW5ub3RhdGlvblRpZXJDb3VudCgpKSkse21pbldpZHRoOmksbWluSGVpZ2h0OnJ9fSxlLnByb3RvdHlwZS5maXhlZEhlaWdodD1mdW5jdGlvbigpe3JldHVybiB0aGlzLmlzSG9yaXpvbnRhbCgpfSxlLnByb3RvdHlwZS5maXhlZFdpZHRoPWZ1bmN0aW9uKCl7cmV0dXJuIXRoaXMuaXNIb3Jpem9udGFsKCl9LGUucHJvdG90eXBlLl9yZXNjYWxlPWZ1bmN0aW9uKCl7dGhpcy5yZW5kZXIoKX0sZS5wcm90b3R5cGUuY29tcHV0ZUxheW91dD1mdW5jdGlvbihlLG4saSl7cmV0dXJuIHQucHJvdG90eXBlLmNvbXB1dGVMYXlvdXQuY2FsbCh0aGlzLGUsbixpKSx0aGlzLmlzSG9yaXpvbnRhbCgpP3RoaXMuX3NjYWxlLnJhbmdlKFswLHRoaXMud2lkdGgoKV0pOnRoaXMuX3NjYWxlLnJhbmdlKFt0aGlzLmhlaWdodCgpLDBdKSx0aGlzfSxlLnByb3RvdHlwZS5fc2l6ZUZyb21PZmZlcj1mdW5jdGlvbih0LGUpe3ZhciBuPXRoaXMucmVxdWVzdGVkU3BhY2UodCxlKTtyZXR1cm4gdGhpcy5pc0hvcml6b250YWwoKT97d2lkdGg6dCxoZWlnaHQ6bi5taW5IZWlnaHR9OntoZWlnaHQ6ZSx3aWR0aDpuLm1pbldpZHRofX0sZS5wcm90b3R5cGUuX3NldHVwPWZ1bmN0aW9uKCl7dC5wcm90b3R5cGUuX3NldHVwLmNhbGwodGhpcyksdGhpcy5fdGlja01hcmtDb250YWluZXI9dGhpcy5jb250ZW50KCkuYXBwZW5kKCJnIikuY2xhc3NlZChlLlRJQ0tfTUFSS19DTEFTUysiLWNvbnRhaW5lciIsITApLHRoaXMuX3RpY2tMYWJlbENvbnRhaW5lcj10aGlzLmNvbnRlbnQoKS5hcHBlbmQoImciKS5jbGFzc2VkKGUuVElDS19MQUJFTF9DTEFTUysiLWNvbnRhaW5lciIsITApLHRoaXMuX2Jhc2VsaW5lPXRoaXMuY29udGVudCgpLmFwcGVuZCgibGluZSIpLmNsYXNzZWQoImJhc2VsaW5lIiwhMCksdGhpcy5fYW5ub3RhdGlvbkNvbnRhaW5lcj10aGlzLmNvbnRlbnQoKS5hcHBlbmQoImciKS5jbGFzc2VkKCJhbm5vdGF0aW9uLWNvbnRhaW5lciIsITApLHRoaXMuX2Fubm90YXRpb25Db250YWluZXIuYXBwZW5kKCJnIikuY2xhc3NlZCgiYW5ub3RhdGlvbi1saW5lLWNvbnRhaW5lciIsITApLHRoaXMuX2Fubm90YXRpb25Db250YWluZXIuYXBwZW5kKCJnIikuY2xhc3NlZCgiYW5ub3RhdGlvbi1jaXJjbGUtY29udGFpbmVyIiwhMCksdGhpcy5fYW5ub3RhdGlvbkNvbnRhaW5lci5hcHBlbmQoImciKS5jbGFzc2VkKCJhbm5vdGF0aW9uLXJlY3QtY29udGFpbmVyIiwhMCk7dmFyIG49dGhpcy5fYW5ub3RhdGlvbkNvbnRhaW5lci5hcHBlbmQoImciKS5jbGFzc2VkKCJhbm5vdGF0aW9uLWxhYmVsLWNvbnRhaW5lciIsITApLGk9bmV3IHFmdC5TdmdDb250ZXh0KG4ubm9kZSgpKTt0aGlzLl9hbm5vdGF0aW9uTWVhc3VyZXI9bmV3IHFmdC5DYWNoZU1lYXN1cmVyKGkpLHRoaXMuX2Fubm90YXRpb25Xcml0ZXI9bmV3IHFmdC5Xcml0ZXIodGhpcy5fYW5ub3RhdGlvbk1lYXN1cmVyLGkpfSxlLnByb3RvdHlwZS5fZ2V0VGlja1ZhbHVlcz1mdW5jdGlvbigpe3JldHVybltdfSxlLnByb3RvdHlwZS5yZW5kZXJJbW1lZGlhdGVseT1mdW5jdGlvbigpe3ZhciB0PXRoaXMuX2dldFRpY2tWYWx1ZXMoKSxuPXRoaXMuX3RpY2tNYXJrQ29udGFpbmVyLnNlbGVjdEFsbCgiLiIrZS5USUNLX01BUktfQ0xBU1MpLmRhdGEodCksaT1uLmVudGVyKCkuYXBwZW5kKCJsaW5lIikuY2xhc3NlZChlLlRJQ0tfTUFSS19DTEFTUywhMCkubWVyZ2Uobik7cmV0dXJuIGkuYXR0cnModGhpcy5fZ2VuZXJhdGVUaWNrTWFya0F0dHJIYXNoKCkpLFVodC5zZWxlY3QoaS5ub2RlcygpWzBdKS5jbGFzc2VkKGUuRU5EX1RJQ0tfTUFSS19DTEFTUywhMCkuYXR0cnModGhpcy5fZ2VuZXJhdGVUaWNrTWFya0F0dHJIYXNoKCEwKSksVWh0LnNlbGVjdChpLm5vZGVzKClbdC5sZW5ndGgtMV0pLmNsYXNzZWQoZS5FTkRfVElDS19NQVJLX0NMQVNTLCEwKS5hdHRycyh0aGlzLl9nZW5lcmF0ZVRpY2tNYXJrQXR0ckhhc2goITApKSxuLmV4aXQoKS5yZW1vdmUoKSx0aGlzLl9iYXNlbGluZS5hdHRycyh0aGlzLl9nZW5lcmF0ZUJhc2VsaW5lQXR0ckhhc2goKSksdGhpcy5hbm5vdGF0aW9uc0VuYWJsZWQoKT90aGlzLl9kcmF3QW5ub3RhdGlvbnMoKTp0aGlzLl9yZW1vdmVBbm5vdGF0aW9ucygpLHRoaXN9LGUucHJvdG90eXBlLmFubm90YXRlZFRpY2tzPWZ1bmN0aW9uKHQpe3JldHVybiBudWxsPT10P3RoaXMuX2Fubm90YXRlZFRpY2tzOih0aGlzLl9hbm5vdGF0ZWRUaWNrcz10LHRoaXMucmVuZGVyKCksdGhpcyl9LGUucHJvdG90eXBlLmFubm90YXRpb25Gb3JtYXR0ZXI9ZnVuY3Rpb24odCl7cmV0dXJuIG51bGw9PXQ/dGhpcy5fYW5ub3RhdGlvbkZvcm1hdHRlcjoodGhpcy5fYW5ub3RhdGlvbkZvcm1hdHRlcj10LHRoaXMucmVuZGVyKCksdGhpcyl9LGUucHJvdG90eXBlLmFubm90YXRpb25zRW5hYmxlZD1mdW5jdGlvbih0KXtyZXR1cm4gbnVsbD09dD90aGlzLl9hbm5vdGF0aW9uc0VuYWJsZWQ6KHRoaXMuX2Fubm90YXRpb25zRW5hYmxlZD10LHRoaXMucmVkcmF3KCksdGhpcyl9LGUucHJvdG90eXBlLmFubm90YXRpb25UaWVyQ291bnQ9ZnVuY3Rpb24odCl7aWYobnVsbD09dClyZXR1cm4gdGhpcy5fYW5ub3RhdGlvblRpZXJDb3VudDtpZih0PDApdGhyb3cgbmV3IEVycm9yKCJhbm5vdGF0aW9uVGllckNvdW50IGNhbm5vdCBiZSBuZWdhdGl2ZSIpO3JldHVybiB0aGlzLl9hbm5vdGF0aW9uVGllckNvdW50PXQsdGhpcy5yZWRyYXcoKSx0aGlzfSxlLnByb3RvdHlwZS5fZHJhd0Fubm90YXRpb25zPWZ1bmN0aW9uKCl7dmFyIHQ9dGhpcyxuPWUuX0FOTk9UQVRJT05fTEFCRUxfUEFERElORyxpPW5ldyB1bXQuTWFwLHI9dGhpcy5fYW5ub3RhdGVkVGlja3NUb1JlbmRlcigpO3IuZm9yRWFjaCgoZnVuY3Rpb24oZSl7dmFyIHI9dC5fYW5ub3RhdGlvbk1lYXN1cmVyLm1lYXN1cmUodC5hbm5vdGF0aW9uRm9ybWF0dGVyKCkoZSkpO2kuc2V0KGUse3dpZHRoOnIud2lkdGgrMipuLGhlaWdodDpyLmhlaWdodCsyKm59KX0pKTt2YXIgbz10aGlzLl9hbm5vdGF0aW9uTWVhc3VyZXIubWVhc3VyZSgpLmhlaWdodCsyKm4sYT10aGlzLl9hbm5vdGF0aW9uVG9UaWVyKGkpLHM9bmV3IHVtdC5TZXQsbD10aGlzLmlzSG9yaXpvbnRhbCgpP3RoaXMuaGVpZ2h0KCk6dGhpcy53aWR0aCgpLGM9dGhpcy5fY29yZVNpemUoKSx1PU1hdGgubWluKHRoaXMuYW5ub3RhdGlvblRpZXJDb3VudCgpLE1hdGguZmxvb3IoKGwtYykvbykpO2EuZm9yRWFjaCgoZnVuY3Rpb24odCxlKXsoLTE9PT10fHx0Pj11KSYmcy5hZGQoZSl9KSk7dmFyIGgsZD1mdW5jdGlvbih0LGUsbil7dmFyIGk9dC5zZWxlY3RBbGwoIi4iK24pLmRhdGEociksbz1pLmVudGVyKCkuYXBwZW5kKGUpLmNsYXNzZWQobiwhMCkubWVyZ2UoaSk7cmV0dXJuIGkuZXhpdCgpLnJlbW92ZSgpLG99LHA9ZnVuY3Rpb24oZSl7c3dpdGNoKHQub3JpZW50YXRpb24oKSl7Y2FzZSJib3R0b20iOmNhc2UicmlnaHQiOnJldHVybiBhLmdldChlKSpvK2M7Y2FzZSJ0b3AiOmNhc2UibGVmdCI6cmV0dXJuIGwtYy1hLmdldChlKSpvfX0sZj1mdW5jdGlvbihlKXtyZXR1cm4gdC5fc2NhbGUuc2NhbGUoZSl9LG09ZnVuY3Rpb24odCl7cmV0dXJuIHMuaGFzKHQpPyJoaWRkZW4iOiJ2aXNpYmxlIn07c3dpdGNoKHRoaXMub3JpZW50YXRpb24oKSl7Y2FzZSJib3R0b20iOmNhc2UicmlnaHQiOmg9MDticmVhaztjYXNlInRvcCI6aD10aGlzLmhlaWdodCgpO2JyZWFrO2Nhc2UibGVmdCI6aD10aGlzLndpZHRoKCl9dmFyIGc9dGhpcy5pc0hvcml6b250YWwoKTtkKHRoaXMuX2Fubm90YXRpb25Db250YWluZXIuc2VsZWN0KCIuYW5ub3RhdGlvbi1saW5lLWNvbnRhaW5lciIpLCJsaW5lIixlLkFOTk9UQVRJT05fTElORV9DTEFTUykuYXR0cnMoe3gxOmc/ZjpoLHgyOmc/ZjpwLHkxOmc/aDpmLHkyOmc/cDpmLHZpc2liaWxpdHk6bX0pLGQodGhpcy5fYW5ub3RhdGlvbkNvbnRhaW5lci5zZWxlY3QoIi5hbm5vdGF0aW9uLWNpcmNsZS1jb250YWluZXIiKSwiY2lyY2xlIixlLkFOTk9UQVRJT05fQ0lSQ0xFX0NMQVNTKS5hdHRycyh7Y3g6Zz9mOmgsY3k6Zz9oOmYscjozfSk7dmFyIF89ZnVuY3Rpb24oZSl7c3dpdGNoKHQub3JpZW50YXRpb24oKSl7Y2FzZSJib3R0b20iOmNhc2UicmlnaHQiOnJldHVybiBwKGUpO2Nhc2UidG9wIjpjYXNlImxlZnQiOnJldHVybiBwKGUpLWkuZ2V0KGUpLmhlaWdodH19O2QodGhpcy5fYW5ub3RhdGlvbkNvbnRhaW5lci5zZWxlY3QoIi5hbm5vdGF0aW9uLXJlY3QtY29udGFpbmVyIiksInJlY3QiLGUuQU5OT1RBVElPTl9SRUNUX0NMQVNTKS5hdHRycyh7eDpnP2Y6Xyx5Omc/XzpmLHdpZHRoOmc/ZnVuY3Rpb24odCl7cmV0dXJuIGkuZ2V0KHQpLndpZHRofTpmdW5jdGlvbih0KXtyZXR1cm4gaS5nZXQodCkuaGVpZ2h0fSxoZWlnaHQ6Zz9mdW5jdGlvbih0KXtyZXR1cm4gaS5nZXQodCkuaGVpZ2h0fTpmdW5jdGlvbih0KXtyZXR1cm4gaS5nZXQodCkud2lkdGh9LHZpc2liaWxpdHk6bX0pO3ZhciB5PXRoaXMuX2Fubm90YXRpb25Xcml0ZXIsdj10aGlzLmFubm90YXRpb25Gb3JtYXR0ZXIoKSxiPWQodGhpcy5fYW5ub3RhdGlvbkNvbnRhaW5lci5zZWxlY3QoIi5hbm5vdGF0aW9uLWxhYmVsLWNvbnRhaW5lciIpLCJnIixlLkFOTk9UQVRJT05fTEFCRUxfQ0xBU1MpO2Iuc2VsZWN0QWxsKCIudGV4dC1jb250YWluZXIiKS5yZW1vdmUoKSxiLmF0dHJzKHt0cmFuc2Zvcm06ZnVuY3Rpb24odCl7cmV0dXJuInRyYW5zbGF0ZSgiKyhnP2YodCk6Xyh0KSkrIiwiKyhnP18odCk6Zih0KSkrIikifSx2aXNpYmlsaXR5Om19KS5lYWNoKChmdW5jdGlvbih0KXt5LndyaXRlKHYodCksZz9pLmdldCh0KS53aWR0aDppLmdldCh0KS5oZWlnaHQsZz9pLmdldCh0KS5oZWlnaHQ6aS5nZXQodCkud2lkdGgse3hBbGlnbjoiY2VudGVyIix5QWxpZ246ImNlbnRlciIsdGV4dFJvdGF0aW9uOmc/MDo5MH0sVWh0LnNlbGVjdCh0aGlzKS5ub2RlKCkpfSkpfSxlLnByb3RvdHlwZS5fYW5ub3RhdGVkVGlja3NUb1JlbmRlcj1mdW5jdGlvbigpe3ZhciB0PXRoaXMsZT10aGlzLl9zY2FsZS5yYW5nZSgpO3JldHVybiB1bXQuQXJyYXkudW5pcSh0aGlzLmFubm90YXRlZFRpY2tzKCkuZmlsdGVyKChmdW5jdGlvbihuKXtyZXR1cm4gbnVsbCE9biYmdW10Lk1hdGguaW5SYW5nZSh0Ll9zY2FsZS5zY2FsZShuKSxlWzBdLGVbMV0pfSkpKX0sZS5wcm90b3R5cGUuX2NvcmVTaXplPWZ1bmN0aW9uKCl7dmFyIHQ9dGhpcy5pc0hvcml6b250YWwoKT90aGlzLmhlaWdodCgpOnRoaXMud2lkdGgoKSxlPXRoaXMuaXNIb3Jpem9udGFsKCk/dGhpcy5fY29tcHV0ZUhlaWdodCgpOnRoaXMuX2NvbXB1dGVXaWR0aCgpO3JldHVybiBNYXRoLm1pbihlLHQpfSxlLnByb3RvdHlwZS5fYW5ub3RhdGlvblRpZXJIZWlnaHQ9ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5fYW5ub3RhdGlvbk1lYXN1cmVyLm1lYXN1cmUoKS5oZWlnaHQrMiplLl9BTk5PVEFUSU9OX0xBQkVMX1BBRERJTkd9LGUucHJvdG90eXBlLl9hbm5vdGF0aW9uVG9UaWVyPWZ1bmN0aW9uKHQpe3ZhciBlPXRoaXMsbj1bW11dLGk9bmV3IHVtdC5NYXAscj10aGlzLmlzSG9yaXpvbnRhbCgpP3RoaXMud2lkdGgoKTp0aGlzLmhlaWdodCgpO3JldHVybiB0aGlzLl9hbm5vdGF0ZWRUaWNrc1RvUmVuZGVyKCkuZm9yRWFjaCgoZnVuY3Rpb24obyl7dmFyIGE9ZS5fc2NhbGUuc2NhbGUobykscz10LmdldChvKS53aWR0aDtpZihhPDB8fGErcz5yKWkuc2V0KG8sLTEpO2Vsc2V7Zm9yKHZhciBsPTA7bltsXS5zb21lKChmdW5jdGlvbihuKXt2YXIgaT1lLl9zY2FsZS5zY2FsZShuKSxyPXQuZ2V0KG4pLndpZHRoO3JldHVybiBhK3M+PWkmJmE8PWkrcn0pKTspbCsrLG4ubGVuZ3RoPT09bCYmbi5wdXNoKFtdKTtuW2xdLnB1c2gobyksaS5zZXQobyxsKX19KSksaX0sZS5wcm90b3R5cGUuX3JlbW92ZUFubm90YXRpb25zPWZ1bmN0aW9uKCl7dGhpcy5fYW5ub3RhdGlvbkNvbnRhaW5lci5zZWxlY3RBbGwoIi5hbm5vdGF0aW9uLWxpbmUiKS5yZW1vdmUoKSx0aGlzLl9hbm5vdGF0aW9uQ29udGFpbmVyLnNlbGVjdEFsbCgiLmFubm90YXRpb24tY2lyY2xlIikucmVtb3ZlKCksdGhpcy5fYW5ub3RhdGlvbkNvbnRhaW5lci5zZWxlY3RBbGwoIi5hbm5vdGF0aW9uLXJlY3QiKS5yZW1vdmUoKSx0aGlzLl9hbm5vdGF0aW9uQ29udGFpbmVyLnNlbGVjdEFsbCgiLmFubm90YXRpb24tbGFiZWwiKS5yZW1vdmUoKX0sZS5wcm90b3R5cGUuX2dlbmVyYXRlQmFzZWxpbmVBdHRySGFzaD1mdW5jdGlvbigpe3ZhciB0PXt4MTowLHkxOjAseDI6MCx5MjowfTtzd2l0Y2godGhpcy5fb3JpZW50YXRpb24pe2Nhc2UiYm90dG9tIjp0LngyPXRoaXMud2lkdGgoKTticmVhaztjYXNlInRvcCI6dC54Mj10aGlzLndpZHRoKCksdC55MT10aGlzLmhlaWdodCgpLHQueTI9dGhpcy5oZWlnaHQoKTticmVhaztjYXNlImxlZnQiOnQueDE9dGhpcy53aWR0aCgpLHQueDI9dGhpcy53aWR0aCgpLHQueTI9dGhpcy5oZWlnaHQoKTticmVhaztjYXNlInJpZ2h0Ijp0LnkyPXRoaXMuaGVpZ2h0KCl9cmV0dXJuIHR9LGUucHJvdG90eXBlLl9nZW5lcmF0ZVRpY2tNYXJrQXR0ckhhc2g9ZnVuY3Rpb24odCl7dmFyIGU9dGhpczt2b2lkIDA9PT10JiYodD0hMSk7dmFyIG49e3gxOjAseTE6MCx4MjowLHkyOjB9LGk9ZnVuY3Rpb24odCl7cmV0dXJuIGUuX3NjYWxlLnNjYWxlKHQpfTt0aGlzLmlzSG9yaXpvbnRhbCgpPyhuLngxPWksbi54Mj1pKToobi55MT1pLG4ueTI9aSk7dmFyIHI9dD90aGlzLl9lbmRUaWNrTGVuZ3RoOnRoaXMuX2lubmVyVGlja0xlbmd0aDtzd2l0Y2godGhpcy5fb3JpZW50YXRpb24pe2Nhc2UiYm90dG9tIjpuLnkyPXI7YnJlYWs7Y2FzZSJ0b3AiOm4ueTE9dGhpcy5oZWlnaHQoKSxuLnkyPXRoaXMuaGVpZ2h0KCktcjticmVhaztjYXNlImxlZnQiOm4ueDE9dGhpcy53aWR0aCgpLG4ueDI9dGhpcy53aWR0aCgpLXI7YnJlYWs7Y2FzZSJyaWdodCI6bi54Mj1yfXJldHVybiBufSxlLnByb3RvdHlwZS5fc2V0RGVmYXVsdEFsaWdubWVudD1mdW5jdGlvbigpe3N3aXRjaCh0aGlzLl9vcmllbnRhdGlvbil7Y2FzZSJib3R0b20iOnRoaXMueUFsaWdubWVudCgidG9wIik7YnJlYWs7Y2FzZSJ0b3AiOnRoaXMueUFsaWdubWVudCgiYm90dG9tIik7YnJlYWs7Y2FzZSJsZWZ0Ijp0aGlzLnhBbGlnbm1lbnQoInJpZ2h0Iik7YnJlYWs7Y2FzZSJyaWdodCI6dGhpcy54QWxpZ25tZW50KCJsZWZ0Iil9fSxlLnByb3RvdHlwZS5pc0hvcml6b250YWw9ZnVuY3Rpb24oKXtyZXR1cm4idG9wIj09PXRoaXMuX29yaWVudGF0aW9ufHwiYm90dG9tIj09PXRoaXMuX29yaWVudGF0aW9ufSxlLnByb3RvdHlwZS5nZXRTY2FsZT1mdW5jdGlvbigpe3JldHVybiB0aGlzLl9zY2FsZX0sZS5wcm90b3R5cGUuZm9ybWF0dGVyPWZ1bmN0aW9uKHQpe3JldHVybiBudWxsPT10P3RoaXMuX2Zvcm1hdHRlcjoodGhpcy5fZm9ybWF0dGVyPXQsdGhpcy5yZWRyYXcoKSx0aGlzKX0sZS5wcm90b3R5cGUuaW5uZXJUaWNrTGVuZ3RoPWZ1bmN0aW9uKHQpe2lmKG51bGw9PXQpcmV0dXJuIHRoaXMuX2lubmVyVGlja0xlbmd0aDtpZih0PDApdGhyb3cgbmV3IEVycm9yKCJpbm5lciB0aWNrIGxlbmd0aCBtdXN0IGJlIHBvc2l0aXZlIik7cmV0dXJuIHRoaXMuX2lubmVyVGlja0xlbmd0aD10LHRoaXMucmVkcmF3KCksdGhpc30sZS5wcm90b3R5cGUuZW5kVGlja0xlbmd0aD1mdW5jdGlvbih0KXtpZihudWxsPT10KXJldHVybiB0aGlzLl9lbmRUaWNrTGVuZ3RoO2lmKHQ8MCl0aHJvdyBuZXcgRXJyb3IoImVuZCB0aWNrIGxlbmd0aCBtdXN0IGJlIHBvc2l0aXZlIik7cmV0dXJuIHRoaXMuX2VuZFRpY2tMZW5ndGg9dCx0aGlzLnJlZHJhdygpLHRoaXN9LGUucHJvdG90eXBlLl9tYXhMYWJlbFRpY2tMZW5ndGg9ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5zaG93RW5kVGlja0xhYmVscygpP01hdGgubWF4KHRoaXMuaW5uZXJUaWNrTGVuZ3RoKCksdGhpcy5lbmRUaWNrTGVuZ3RoKCkpOnRoaXMuaW5uZXJUaWNrTGVuZ3RoKCl9LGUucHJvdG90eXBlLnRpY2tMYWJlbFBhZGRpbmc9ZnVuY3Rpb24odCl7aWYobnVsbD09dClyZXR1cm4gdGhpcy5fdGlja0xhYmVsUGFkZGluZztpZih0PDApdGhyb3cgbmV3IEVycm9yKCJ0aWNrIGxhYmVsIHBhZGRpbmcgbXVzdCBiZSBwb3NpdGl2ZSIpO3JldHVybiB0aGlzLl90aWNrTGFiZWxQYWRkaW5nPXQsdGhpcy5yZWRyYXcoKSx0aGlzfSxlLnByb3RvdHlwZS5tYXJnaW49ZnVuY3Rpb24odCl7aWYobnVsbD09dClyZXR1cm4gdGhpcy5fbWFyZ2luO2lmKHQ8MCl0aHJvdyBuZXcgRXJyb3IoIm1hcmdpbiBzaXplIG11c3QgYmUgcG9zaXRpdmUiKTtyZXR1cm4gdGhpcy5fbWFyZ2luPXQsdGhpcy5yZWRyYXcoKSx0aGlzfSxlLnByb3RvdHlwZS5vcmllbnRhdGlvbj1mdW5jdGlvbih0KXtpZihudWxsPT10KXJldHVybiB0aGlzLl9vcmllbnRhdGlvbjt2YXIgZT10LnRvTG93ZXJDYXNlKCk7aWYoInRvcCIhPT1lJiYiYm90dG9tIiE9PWUmJiJsZWZ0IiE9PWUmJiJyaWdodCIhPT1lKXRocm93IG5ldyBFcnJvcigidW5zdXBwb3J0ZWQgb3JpZW50YXRpb24iKTtyZXR1cm4gdGhpcy5fb3JpZW50YXRpb249ZSx0aGlzLnJlZHJhdygpLHRoaXN9LGUucHJvdG90eXBlLnNob3dFbmRUaWNrTGFiZWxzPWZ1bmN0aW9uKHQpe3JldHVybiBudWxsPT10P3RoaXMuX3Nob3dFbmRUaWNrTGFiZWxzOih0aGlzLl9zaG93RW5kVGlja0xhYmVscz10LHRoaXMucmVuZGVyKCksdGhpcyl9LGUucHJvdG90eXBlLl9zaG93QWxsVGlja01hcmtzPWZ1bmN0aW9uKCl7dGhpcy5fdGlja01hcmtDb250YWluZXIuc2VsZWN0QWxsKCIuIitlLlRJQ0tfTUFSS19DTEFTUykuZWFjaCgoZnVuY3Rpb24oKXtVaHQuc2VsZWN0KHRoaXMpLnN0eWxlKCJ2aXNpYmlsaXR5IiwiaW5oZXJpdCIpfSkpfSxlLnByb3RvdHlwZS5fc2hvd0FsbFRpY2tMYWJlbHM9ZnVuY3Rpb24oKXt0aGlzLl90aWNrTGFiZWxDb250YWluZXIuc2VsZWN0QWxsKCIuIitlLlRJQ0tfTEFCRUxfQ0xBU1MpLmVhY2goKGZ1bmN0aW9uKCl7VWh0LnNlbGVjdCh0aGlzKS5zdHlsZSgidmlzaWJpbGl0eSIsImluaGVyaXQiKX0pKX0sZS5wcm90b3R5cGUuX2hpZGVPdmVyZmxvd2luZ1RpY2tMYWJlbHM9ZnVuY3Rpb24oKXt2YXIgdD10aGlzLmVsZW1lbnQoKS5ub2RlKCkuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCksbj10aGlzLl90aWNrTGFiZWxDb250YWluZXIuc2VsZWN0QWxsKCIuIitlLlRJQ0tfTEFCRUxfQ0xBU1MpO24uZW1wdHkoKXx8bi5lYWNoKChmdW5jdGlvbihlLG4pe3VtdC5ET00uY2xpZW50UmVjdEluc2lkZSh0aGlzLmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpLHQpfHxVaHQuc2VsZWN0KHRoaXMpLnN0eWxlKCJ2aXNpYmlsaXR5IiwiaGlkZGVuIil9KSl9LGUucHJvdG90eXBlLl9oaWRlVGlja01hcmtzV2l0aG91dExhYmVsPWZ1bmN0aW9uKCl7dmFyIHQ9dGhpcy5fdGlja01hcmtDb250YWluZXIuc2VsZWN0QWxsKCIuIitlLlRJQ0tfTUFSS19DTEFTUyksbj10aGlzLl90aWNrTGFiZWxDb250YWluZXIuc2VsZWN0QWxsKCIuIitlLlRJQ0tfTEFCRUxfQ0xBU1MpLmZpbHRlcigoZnVuY3Rpb24odCxlKXt2YXIgbj1VaHQuc2VsZWN0KHRoaXMpLnN0eWxlKCJ2aXNpYmlsaXR5Iik7cmV0dXJuImluaGVyaXQiPT09bnx8InZpc2libGUiPT09bn0pKS5kYXRhKCk7dC5lYWNoKChmdW5jdGlvbih0LGUpey0xPT09bi5pbmRleE9mKHQpJiZVaHQuc2VsZWN0KHRoaXMpLnN0eWxlKCJ2aXNpYmlsaXR5IiwiaGlkZGVuIil9KSl9LGUucHJvdG90eXBlLmludmFsaWRhdGVDYWNoZT1mdW5jdGlvbigpe3QucHJvdG90eXBlLmludmFsaWRhdGVDYWNoZS5jYWxsKHRoaXMpLHRoaXMuX2Fubm90YXRpb25NZWFzdXJlci5yZXNldCgpfSxlLkVORF9USUNLX01BUktfQ0xBU1M9ImVuZC10aWNrLW1hcmsiLGUuVElDS19NQVJLX0NMQVNTPSJ0aWNrLW1hcmsiLGUuVElDS19MQUJFTF9DTEFTUz0idGljay1sYWJlbCIsZS5BTk5PVEFUSU9OX0xJTkVfQ0xBU1M9ImFubm90YXRpb24tbGluZSIsZS5BTk5PVEFUSU9OX1JFQ1RfQ0xBU1M9ImFubm90YXRpb24tcmVjdCIsZS5BTk5PVEFUSU9OX0NJUkNMRV9DTEFTUz0iYW5ub3RhdGlvbi1jaXJjbGUiLGUuQU5OT1RBVElPTl9MQUJFTF9DTEFTUz0iYW5ub3RhdGlvbi1sYWJlbCIsZS5fQU5OT1RBVElPTl9MQUJFTF9QQURESU5HPTQsZX0pKHBtdC5Db21wb25lbnQpO2UuQXhpcz1ufSkpLGdtdD1iZSgoZnVuY3Rpb24odCxlKXsKLyoqCiAgICAgKiBDb3B5cmlnaHQgMjAxNC1wcmVzZW50IFBhbGFudGlyIFRlY2hub2xvZ2llcwogICAgICogQGxpY2Vuc2UgTUlUCiAgICAgKi8KT2JqZWN0LmRlZmluZVByb3BlcnR5KGUsIl9fZXNNb2R1bGUiLHt2YWx1ZTohMH0pO3ZhciBuPShmdW5jdGlvbih0KXtmdW5jdGlvbiBlKGUsbil7dm9pZCAwPT09biYmKG49ImJvdHRvbSIpO3ZhciBpPXQuY2FsbCh0aGlzLGUsbil8fHRoaXM7cmV0dXJuIGkuX3RpY2tMYWJlbEFuZ2xlPTAsaS5fdGlja0xhYmVsU2hlYXJBbmdsZT0wLGkuYWRkQ2xhc3MoImNhdGVnb3J5LWF4aXMiKSxpfXJldHVybiBTZnQuX19leHRlbmRzKGUsdCksT2JqZWN0LmRlZmluZVByb3BlcnR5KGUucHJvdG90eXBlLCJfd3JhcHBlciIse2dldDpmdW5jdGlvbigpe3ZhciB0PW5ldyBxZnQuV3JhcHBlcjtyZXR1cm4gbnVsbCE9dGhpcy5fdGlja0xhYmVsTWF4TGluZXMmJnQubWF4TGluZXModGhpcy5fdGlja0xhYmVsTWF4TGluZXMpLHR9LGVudW1lcmFibGU6ITAsY29uZmlndXJhYmxlOiEwfSksT2JqZWN0LmRlZmluZVByb3BlcnR5KGUucHJvdG90eXBlLCJfd3JpdGVyIix7Z2V0OmZ1bmN0aW9uKCl7cmV0dXJuIG5ldyBxZnQuV3JpdGVyKHRoaXMuX21lYXN1cmVyLHRoaXMuX3R5cGVzZXR0ZXJDb250ZXh0LHRoaXMuX3dyYXBwZXIpfSxlbnVtZXJhYmxlOiEwLGNvbmZpZ3VyYWJsZTohMH0pLGUucHJvdG90eXBlLl9zZXR1cD1mdW5jdGlvbigpe3QucHJvdG90eXBlLl9zZXR1cC5jYWxsKHRoaXMpLHRoaXMuX3R5cGVzZXR0ZXJDb250ZXh0PW5ldyBxZnQuU3ZnQ29udGV4dCh0aGlzLl90aWNrTGFiZWxDb250YWluZXIubm9kZSgpKSx0aGlzLl9tZWFzdXJlcj1uZXcgcWZ0LkNhY2hlTWVhc3VyZXIodGhpcy5fdHlwZXNldHRlckNvbnRleHQpfSxlLnByb3RvdHlwZS5fcmVzY2FsZT1mdW5jdGlvbigpe3JldHVybiB0aGlzLnJlZHJhdygpfSxlLnByb3RvdHlwZS5yZXF1ZXN0ZWRTcGFjZT1mdW5jdGlvbih0LGUpe3ZhciBuPXRoaXMuaXNIb3Jpem9udGFsKCk/MDp0aGlzLl90aWNrU3BhY2VSZXF1aXJlZCgpK3RoaXMubWFyZ2luKCksaT10aGlzLmlzSG9yaXpvbnRhbCgpP3RoaXMuX3RpY2tTcGFjZVJlcXVpcmVkKCkrdGhpcy5tYXJnaW4oKTowO2lmKDA9PT10aGlzLl9zY2FsZS5kb21haW4oKS5sZW5ndGgpcmV0dXJue21pbldpZHRoOjAsbWluSGVpZ2h0OjB9O2lmKHRoaXMuYW5ub3RhdGlvbnNFbmFibGVkKCkpe3ZhciByPXRoaXMuX2Fubm90YXRpb25UaWVySGVpZ2h0KCkqdGhpcy5hbm5vdGF0aW9uVGllckNvdW50KCk7dGhpcy5pc0hvcml6b250YWwoKT9pKz1yOm4rPXJ9dmFyIG89dGhpcy5fbWVhc3VyZVRpY2tMYWJlbHModCxlKTtyZXR1cm57bWluV2lkdGg6by51c2VkV2lkdGgrbixtaW5IZWlnaHQ6by51c2VkSGVpZ2h0K2l9fSxlLnByb3RvdHlwZS5fY29yZVNpemU9ZnVuY3Rpb24oKXt2YXIgdD10aGlzLmlzSG9yaXpvbnRhbCgpP3RoaXMuaGVpZ2h0KCk6dGhpcy53aWR0aCgpLGU9dGhpcy5pc0hvcml6b250YWwoKT90aGlzLnJlcXVlc3RlZFNwYWNlKHRoaXMud2lkdGgoKSx0aGlzLmhlaWdodCgpKS5taW5IZWlnaHQ6dGhpcy5yZXF1ZXN0ZWRTcGFjZSh0aGlzLndpZHRoKCksdGhpcy5oZWlnaHQoKSkubWluV2lkdGgsbj10aGlzLm1hcmdpbigpK3RoaXMuX2Fubm90YXRpb25UaWVySGVpZ2h0KCk7cmV0dXJuIE1hdGgubWluKGUtbix0KX0sZS5wcm90b3R5cGUuX2dldFRpY2tWYWx1ZXM9ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5nZXREb3duc2FtcGxlSW5mbygpLmRvbWFpbn0sZS5wcm90b3R5cGUuX3NpemVGcm9tT2ZmZXI9ZnVuY3Rpb24odCxlKXtyZXR1cm4gcG10LkNvbXBvbmVudC5wcm90b3R5cGUuX3NpemVGcm9tT2ZmZXIuY2FsbCh0aGlzLHQsZSl9LGUucHJvdG90eXBlLmdldERvd25zYW1wbGVJbmZvPWZ1bmN0aW9uKHQsbil7dm9pZCAwPT09dCYmKHQ9dGhpcy5fc2NhbGUpLHZvaWQgMD09PW4mJihuPXQuaW52ZXJ0UmFuZ2UoKSk7dmFyIGk9MD09PXRoaXMuX3RpY2tMYWJlbEFuZ2xlPzE6MS9NYXRoLmNvcyh0aGlzLl90aWNrTGFiZWxTaGVhckFuZ2xlLzE4MCpNYXRoLlBJKSxyPU1hdGguY2VpbChlLl9NSU5JTVVNX1dJRFRIX1BFUl9MQUJFTF9QWCppL3Quc3RlcFdpZHRoKCkpO3JldHVybntkb21haW46bi5maWx0ZXIoKGZ1bmN0aW9uKHQsZSl7cmV0dXJuIGUlcj09MH0pKSxzdGVwV2lkdGg6cip0LnN0ZXBXaWR0aCgpfX0sZS5wcm90b3R5cGUudGlja0xhYmVsQW5nbGU9ZnVuY3Rpb24odCl7aWYobnVsbD09dClyZXR1cm4gdGhpcy5fdGlja0xhYmVsQW5nbGU7aWYoMCE9PXQmJjkwIT09dCYmLTkwIT09dCl0aHJvdyBuZXcgRXJyb3IoIkFuZ2xlICIrdCsiIG5vdCBzdXBwb3J0ZWQ7IG9ubHkgMCwgOTAsIGFuZCAtOTAgYXJlIHZhbGlkIHZhbHVlcyIpO3JldHVybiB0aGlzLl90aWNrTGFiZWxBbmdsZT10LHRoaXMucmVkcmF3KCksdGhpc30sZS5wcm90b3R5cGUudGlja0xhYmVsU2hlYXJBbmdsZT1mdW5jdGlvbih0KXtpZihudWxsPT10KXJldHVybiB0aGlzLl90aWNrTGFiZWxTaGVhckFuZ2xlO2lmKHQ8LTgwfHx0PjgwKXRocm93IG5ldyBFcnJvcigiQW5nbGUgIit0KyIgbm90IHN1cHBvcnRlZDsgTXVzdCBiZSBiZXR3ZWVuIFstODAsIDgwXSIpO3JldHVybiB0aGlzLl90aWNrTGFiZWxTaGVhckFuZ2xlPXQsdGhpcy5yZWRyYXcoKSx0aGlzfSxlLnByb3RvdHlwZS50aWNrTGFiZWxNYXhXaWR0aD1mdW5jdGlvbih0KXtyZXR1cm4gMD09PWFyZ3VtZW50cy5sZW5ndGg/dGhpcy5fdGlja0xhYmVsTWF4V2lkdGg6KHRoaXMuX3RpY2tMYWJlbE1heFdpZHRoPXQsdGhpcy5yZWRyYXcoKSx0aGlzKX0sZS5wcm90b3R5cGUudGlja0xhYmVsTWF4TGluZXM9ZnVuY3Rpb24odCl7cmV0dXJuIDA9PT1hcmd1bWVudHMubGVuZ3RoP3RoaXMuX3RpY2tMYWJlbE1heExpbmVzOih0aGlzLl90aWNrTGFiZWxNYXhMaW5lcz10LHRoaXMucmVkcmF3KCksdGhpcyl9LGUucHJvdG90eXBlLl90aWNrU3BhY2VSZXF1aXJlZD1mdW5jdGlvbigpe3JldHVybiB0aGlzLl9tYXhMYWJlbFRpY2tMZW5ndGgoKSt0aGlzLnRpY2tMYWJlbFBhZGRpbmcoKX0sZS5wcm90b3R5cGUuX2RyYXdUaWNrcz1mdW5jdGlvbih0LGUpe3ZhciBuLGkscj10aGlzO3N3aXRjaCh0aGlzLnRpY2tMYWJlbEFuZ2xlKCkpe2Nhc2UgMDpuPXtsZWZ0OiJyaWdodCIscmlnaHQ6ImxlZnQiLHRvcDoiY2VudGVyIixib3R0b206ImNlbnRlciJ9LGk9e2xlZnQ6ImNlbnRlciIscmlnaHQ6ImNlbnRlciIsdG9wOiJib3R0b20iLGJvdHRvbToidG9wIn07YnJlYWs7Y2FzZSA5MDpuPXtsZWZ0OiJjZW50ZXIiLHJpZ2h0OiJjZW50ZXIiLHRvcDoicmlnaHQiLGJvdHRvbToibGVmdCJ9LGk9e2xlZnQ6InRvcCIscmlnaHQ6ImJvdHRvbSIsdG9wOiJjZW50ZXIiLGJvdHRvbToiY2VudGVyIn07YnJlYWs7Y2FzZS05MDpuPXtsZWZ0OiJjZW50ZXIiLHJpZ2h0OiJjZW50ZXIiLHRvcDoibGVmdCIsYm90dG9tOiJyaWdodCJ9LGk9e2xlZnQ6ImJvdHRvbSIscmlnaHQ6InRvcCIsdG9wOiJjZW50ZXIiLGJvdHRvbToiY2VudGVyIn19ZS5lYWNoKChmdW5jdGlvbihlKXt2YXIgbz1VaHQuc2VsZWN0KHRoaXMpLGE9ci5pc0hvcml6b250YWwoKT90OnIud2lkdGgoKS1yLl90aWNrU3BhY2VSZXF1aXJlZCgpLHM9ci5pc0hvcml6b250YWwoKT9yLmhlaWdodCgpLXIuX3RpY2tTcGFjZVJlcXVpcmVkKCk6dCxsPXt4QWxpZ246bltyLm9yaWVudGF0aW9uKCldLHlBbGlnbjppW3Iub3JpZW50YXRpb24oKV0sdGV4dFJvdGF0aW9uOnIudGlja0xhYmVsQW5nbGUoKSx0ZXh0U2hlYXI6ci50aWNrTGFiZWxTaGVhckFuZ2xlKCl9O2lmKG51bGwhPXIuX3RpY2tMYWJlbE1heFdpZHRoKXtpZigibGVmdCI9PT1yLm9yaWVudGF0aW9uKCkmJmE+ci5fdGlja0xhYmVsTWF4V2lkdGgpe3ZhciBjPWEtci5fdGlja0xhYmVsTWF4V2lkdGgsdT1vLmF0dHIoInRyYW5zZm9ybSIpKyIgdHJhbnNsYXRlKCIrYysiLCAwKSI7by5hdHRyKCJ0cmFuc2Zvcm0iLHUpfWE9TWF0aC5taW4oYSxyLl90aWNrTGFiZWxNYXhXaWR0aCl9ci5fd3JpdGVyLndyaXRlKHIuZm9ybWF0dGVyKCkoZSksYSxzLGwsby5ub2RlKCkpfSkpfSxlLnByb3RvdHlwZS5fbWVhc3VyZVRpY2tMYWJlbHM9ZnVuY3Rpb24odCxlKXt2YXIgbj10aGlzLGk9dGhpcy5fc2NhbGUuY2xvbmVXaXRob3V0UHJvdmlkZXJzKCkucmFuZ2UoWzAsdGhpcy5pc0hvcml6b250YWwoKT90OmVdKSxyPXRoaXMuZ2V0RG93bnNhbXBsZUluZm8oaSksbz1yLmRvbWFpbixhPXIuc3RlcFdpZHRoLHM9dC10aGlzLl90aWNrU3BhY2VSZXF1aXJlZCgpO3RoaXMuaXNIb3Jpem9udGFsKCkmJihzPWEsMCE9PXRoaXMuX3RpY2tMYWJlbEFuZ2xlJiYocz1lLXRoaXMuX3RpY2tTcGFjZVJlcXVpcmVkKCkpLHM9TWF0aC5tYXgocywwKSk7dmFyIGw9YTt0aGlzLmlzSG9yaXpvbnRhbCgpJiYobD1lLXRoaXMuX3RpY2tTcGFjZVJlcXVpcmVkKCksMCE9PXRoaXMuX3RpY2tMYWJlbEFuZ2xlJiYobD10LXRoaXMuX3RpY2tTcGFjZVJlcXVpcmVkKCkpLGw9TWF0aC5tYXgobCwwKSksbnVsbCE9dGhpcy5fdGlja0xhYmVsTWF4V2lkdGgmJihzPU1hdGgubWluKHMsdGhpcy5fdGlja0xhYmVsTWF4V2lkdGgpKTt2YXIgYyx1PW8ubWFwKChmdW5jdGlvbih0KXtyZXR1cm4gbi5fd3JhcHBlci53cmFwKG4uZm9ybWF0dGVyKCkodCksbi5fbWVhc3VyZXIscyxsKX0pKSxoPXRoaXMuaXNIb3Jpem9udGFsKCkmJjA9PT10aGlzLl90aWNrTGFiZWxBbmdsZT9VaHQuc3VtOnVtdC5NYXRoLm1heCxkPXRoaXMuaXNIb3Jpem9udGFsKCkmJjA9PT10aGlzLl90aWNrTGFiZWxBbmdsZT91bXQuTWF0aC5tYXg6VWh0LnN1bSxwPWgodSwoZnVuY3Rpb24odCl7cmV0dXJuIG4uX21lYXN1cmVyLm1lYXN1cmUodC53cmFwcGVkVGV4dCkud2lkdGh9KSwwKSxmPWQodSwoZnVuY3Rpb24odCl7cmV0dXJuIG4uX21lYXN1cmVyLm1lYXN1cmUodC53cmFwcGVkVGV4dCkuaGVpZ2h0fSksMCk7cmV0dXJuIDAhPT10aGlzLl90aWNrTGFiZWxBbmdsZSYmKHA9KGM9W2YscF0pWzBdLGY9Y1sxXSkse3VzZWRXaWR0aDpwLHVzZWRIZWlnaHQ6Zn19LGUucHJvdG90eXBlLnJlbmRlckltbWVkaWF0ZWx5PWZ1bmN0aW9uKCl7dmFyIGU9dGhpczt0LnByb3RvdHlwZS5yZW5kZXJJbW1lZGlhdGVseS5jYWxsKHRoaXMpO3ZhciBuPXRoaXMuX3NjYWxlLGk9dGhpcy5nZXREb3duc2FtcGxlSW5mbyhuKSxyPWkuZG9tYWluLG89aS5zdGVwV2lkdGgsYT1vO3RoaXMuaXNIb3Jpem9udGFsKCkmJm51bGwhPXRoaXMuX3RpY2tMYWJlbE1heFdpZHRoJiYoYT1NYXRoLm1pbihhLHRoaXMuX3RpY2tMYWJlbE1heFdpZHRoKSk7dmFyIHM9dGhpcy5fdGlja0xhYmVsQ29udGFpbmVyLnNlbGVjdEFsbCgiLiIrbW10LkF4aXMuVElDS19MQUJFTF9DTEFTUykuZGF0YShyKSxsPXMuZW50ZXIoKS5hcHBlbmQoImciKS5jbGFzc2VkKG1tdC5BeGlzLlRJQ0tfTEFCRUxfQ0xBU1MsITApLm1lcmdlKHMpO3MuZXhpdCgpLnJlbW92ZSgpLGwuYXR0cigidHJhbnNmb3JtIiwoZnVuY3Rpb24odCxpKXt2YXIgcj1uLnNjYWxlKHQpLWEvMjtyZXR1cm4idHJhbnNsYXRlKCIrKGUuaXNIb3Jpem9udGFsKCk/cjowKSsiLCIrKGUuaXNIb3Jpem9udGFsKCk/MDpyKSsiKSJ9KSksbC50ZXh0KCIiKSx0aGlzLl9kcmF3VGlja3MobyxsKTt2YXIgYz0icmlnaHQiPT09dGhpcy5vcmllbnRhdGlvbigpP3RoaXMuX3RpY2tTcGFjZVJlcXVpcmVkKCk6MCx1PSJib3R0b20iPT09dGhpcy5vcmllbnRhdGlvbigpP3RoaXMuX3RpY2tTcGFjZVJlcXVpcmVkKCk6MDtyZXR1cm4gdGhpcy5fdGlja0xhYmVsQ29udGFpbmVyLmF0dHIoInRyYW5zZm9ybSIsInRyYW5zbGF0ZSgiK2MrIiwiK3UrIikiKSx0aGlzLl9zaG93QWxsVGlja01hcmtzKCksdGhpcy5fc2hvd0FsbFRpY2tMYWJlbHMoKSx0aGlzLl9oaWRlVGlja01hcmtzV2l0aG91dExhYmVsKCksdGhpc30sZS5wcm90b3R5cGUuY29tcHV0ZUxheW91dD1mdW5jdGlvbihlLG4saSl7cmV0dXJuIHQucHJvdG90eXBlLmNvbXB1dGVMYXlvdXQuY2FsbCh0aGlzLGUsbixpKSx0aGlzLmlzSG9yaXpvbnRhbCgpfHx0aGlzLl9zY2FsZS5yYW5nZShbMCx0aGlzLmhlaWdodCgpXSksdGhpc30sZS5wcm90b3R5cGUuaW52YWxpZGF0ZUNhY2hlPWZ1bmN0aW9uKCl7dC5wcm90b3R5cGUuaW52YWxpZGF0ZUNhY2hlLmNhbGwodGhpcyksdGhpcy5fbWVhc3VyZXIucmVzZXQoKX0sZS5fTUlOSU1VTV9XSURUSF9QRVJfTEFCRUxfUFg9MTUsZX0pKG1tdC5BeGlzKTtlLkNhdGVnb3J5PW59KSksX210PWJlKChmdW5jdGlvbih0LGUpewovKioKICAgICAqIENvcHlyaWdodCAyMDE0LXByZXNlbnQgUGFsYW50aXIgVGVjaG5vbG9naWVzCiAgICAgKiBAbGljZW5zZSBNSVQKICAgICAqLwpPYmplY3QuZGVmaW5lUHJvcGVydHkoZSwiX19lc01vZHVsZSIse3ZhbHVlOiEwfSk7dmFyIG49KGZ1bmN0aW9uKHQpe2Z1bmN0aW9uIGUoZSxuKXt2YXIgaT10LmNhbGwodGhpcyxlLG4pfHx0aGlzO3JldHVybiBpLl90aWNrTGFiZWxQb3NpdGlvbmluZz0iY2VudGVyIixpLl91c2VzVGV4dFdpZHRoQXBwcm94aW1hdGlvbj0hMSxpLmZvcm1hdHRlcihmbXQuZ2VuZXJhbCgpKSxpfXJldHVybiBTZnQuX19leHRlbmRzKGUsdCksZS5wcm90b3R5cGUuX3NldHVwPWZ1bmN0aW9uKCl7dC5wcm90b3R5cGUuX3NldHVwLmNhbGwodGhpcyk7dmFyIGU9bmV3IHFmdC5TdmdDb250ZXh0KHRoaXMuX3RpY2tMYWJlbENvbnRhaW5lci5ub2RlKCksbW10LkF4aXMuVElDS19MQUJFTF9DTEFTUyk7dGhpcy5fbWVhc3VyZXI9bmV3IHFmdC5DYWNoZU1lYXN1cmVyKGUpLHRoaXMuX3dyYXBwZXI9KG5ldyBxZnQuV3JhcHBlcikubWF4TGluZXMoMSl9LGUucHJvdG90eXBlLl9jb21wdXRlV2lkdGg9ZnVuY3Rpb24oKXt2YXIgdD10aGlzLl91c2VzVGV4dFdpZHRoQXBwcm94aW1hdGlvbj90aGlzLl9jb21wdXRlQXBwcm94aW1hdGVUZXh0V2lkdGgoKTp0aGlzLl9jb21wdXRlRXhhY3RUZXh0V2lkdGgoKTtyZXR1cm4iY2VudGVyIj09PXRoaXMuX3RpY2tMYWJlbFBvc2l0aW9uaW5nP3RoaXMuX21heExhYmVsVGlja0xlbmd0aCgpK3RoaXMudGlja0xhYmVsUGFkZGluZygpK3Q6TWF0aC5tYXgodGhpcy5fbWF4TGFiZWxUaWNrTGVuZ3RoKCksdGhpcy50aWNrTGFiZWxQYWRkaW5nKCkrdCl9LGUucHJvdG90eXBlLl9jb21wdXRlRXhhY3RUZXh0V2lkdGg9ZnVuY3Rpb24oKXt2YXIgdD10aGlzLGU9dGhpcy5fZ2V0VGlja1ZhbHVlcygpLm1hcCgoZnVuY3Rpb24oZSl7dmFyIG49dC5mb3JtYXR0ZXIoKShlKTtyZXR1cm4gdC5fbWVhc3VyZXIubWVhc3VyZShuKS53aWR0aH0pKTtyZXR1cm4gdW10Lk1hdGgubWF4KGUsMCl9LGUucHJvdG90eXBlLl9jb21wdXRlQXBwcm94aW1hdGVUZXh0V2lkdGg9ZnVuY3Rpb24oKXt2YXIgdD10aGlzLGU9dGhpcy5fZ2V0VGlja1ZhbHVlcygpLG49dGhpcy5fbWVhc3VyZXIubWVhc3VyZSgiTSIpLndpZHRoLGk9ZS5tYXAoKGZ1bmN0aW9uKGUpe3JldHVybiB0LmZvcm1hdHRlcigpKGUpLmxlbmd0aCpufSkpO3JldHVybiB1bXQuTWF0aC5tYXgoaSwwKX0sZS5wcm90b3R5cGUuX2NvbXB1dGVIZWlnaHQ9ZnVuY3Rpb24oKXt2YXIgdD10aGlzLl9tZWFzdXJlci5tZWFzdXJlKCkuaGVpZ2h0O3JldHVybiJjZW50ZXIiPT09dGhpcy5fdGlja0xhYmVsUG9zaXRpb25pbmc/dGhpcy5fbWF4TGFiZWxUaWNrTGVuZ3RoKCkrdGhpcy50aWNrTGFiZWxQYWRkaW5nKCkrdDpNYXRoLm1heCh0aGlzLl9tYXhMYWJlbFRpY2tMZW5ndGgoKSx0aGlzLnRpY2tMYWJlbFBhZGRpbmcoKSt0KX0sZS5wcm90b3R5cGUuX2dldFRpY2tWYWx1ZXM9ZnVuY3Rpb24oKXt2YXIgdD10aGlzLl9zY2FsZSxlPXQuZG9tYWluKCksbj1lWzBdPD1lWzFdP2VbMF06ZVsxXSxpPWVbMF0+PWVbMV0/ZVswXTplWzFdO3JldHVybiB0LnRpY2tzKCkuZmlsdGVyKChmdW5jdGlvbih0KXtyZXR1cm4gdD49biYmdDw9aX0pKX0sZS5wcm90b3R5cGUuX3Jlc2NhbGU9ZnVuY3Rpb24oKXtpZih0aGlzLl9pc1NldHVwKXtpZighdGhpcy5pc0hvcml6b250YWwoKSl7dmFyIHQ9dGhpcy5fY29tcHV0ZVdpZHRoKCk7aWYodD50aGlzLndpZHRoKCl8fHQ8dGhpcy53aWR0aCgpLXRoaXMubWFyZ2luKCkpcmV0dXJuIHZvaWQgdGhpcy5yZWRyYXcoKX10aGlzLnJlbmRlcigpfX0sZS5wcm90b3R5cGUucmVuZGVySW1tZWRpYXRlbHk9ZnVuY3Rpb24oKXt2YXIgZT10aGlzO3QucHJvdG90eXBlLnJlbmRlckltbWVkaWF0ZWx5LmNhbGwodGhpcyk7dmFyIG49e3g6MCx5OjAsZHg6IjBlbSIsZHk6IjAuM2VtIn0saT10aGlzLl9tYXhMYWJlbFRpY2tMZW5ndGgoKSxyPXRoaXMudGlja0xhYmVsUGFkZGluZygpLG89Im1pZGRsZSIsYT0wLHM9MCxsPTAsYz0wO2lmKHRoaXMuaXNIb3Jpem9udGFsKCkpc3dpdGNoKHRoaXMuX3RpY2tMYWJlbFBvc2l0aW9uaW5nKXtjYXNlImxlZnQiOm89ImVuZCIsYT0tcixjPXI7YnJlYWs7Y2FzZSJjZW50ZXIiOmM9aStyO2JyZWFrO2Nhc2UicmlnaHQiOm89InN0YXJ0IixhPXIsYz1yfWVsc2Ugc3dpdGNoKHRoaXMuX3RpY2tMYWJlbFBvc2l0aW9uaW5nKXtjYXNlInRvcCI6bi5keT0iLTAuM2VtIixsPXIscz0tcjticmVhaztjYXNlImNlbnRlciI6bD1pK3I7YnJlYWs7Y2FzZSJib3R0b20iOm4uZHk9IjFlbSIsbD1yLHM9cn12YXIgdT10aGlzLl9nZW5lcmF0ZVRpY2tNYXJrQXR0ckhhc2goKTtzd2l0Y2godGhpcy5vcmllbnRhdGlvbigpKXtjYXNlImJvdHRvbSI6bi54PXUueDEsbi5keT0iMC45NWVtIixzPXUueTErYzticmVhaztjYXNlInRvcCI6bi54PXUueDEsbi5keT0iLS4yNWVtIixzPXUueTEtYzticmVhaztjYXNlImxlZnQiOm89ImVuZCIsYT11LngxLWwsbi55PXUueTE7YnJlYWs7Y2FzZSJyaWdodCI6bz0ic3RhcnQiLGE9dS54MStsLG4ueT11LnkxfXZhciBoPXRoaXMuX2dldFRpY2tWYWx1ZXMoKSxkPXRoaXMuX3RpY2tMYWJlbENvbnRhaW5lci5zZWxlY3RBbGwoIi4iK21tdC5BeGlzLlRJQ0tfTEFCRUxfQ0xBU1MpLmRhdGEoaCk7cmV0dXJuIGQuZXhpdCgpLnJlbW92ZSgpLGQuZW50ZXIoKS5hcHBlbmQoInRleHQiKS5jbGFzc2VkKG1tdC5BeGlzLlRJQ0tfTEFCRUxfQ0xBU1MsITApLm1lcmdlKGQpLnN0eWxlKCJ0ZXh0LWFuY2hvciIsbykuc3R5bGUoInZpc2liaWxpdHkiLCJpbmhlcml0IikuYXR0cnMobikudGV4dCgoZnVuY3Rpb24odCl7cmV0dXJuIGUuZm9ybWF0dGVyKCkodCl9KSksdGhpcy5fdGlja0xhYmVsQ29udGFpbmVyLmF0dHIoInRyYW5zZm9ybSIsInRyYW5zbGF0ZSgiK2ErIiwgIitzKyIpIiksdGhpcy5fc2hvd0FsbFRpY2tNYXJrcygpLHRoaXMuc2hvd0VuZFRpY2tMYWJlbHMoKXx8dGhpcy5faGlkZUVuZFRpY2tMYWJlbHMoKSx0aGlzLl9oaWRlT3ZlcmZsb3dpbmdUaWNrTGFiZWxzKCksdGhpcy5faGlkZU92ZXJsYXBwaW5nVGlja0xhYmVscygpLCJjZW50ZXIiIT09dGhpcy5fdGlja0xhYmVsUG9zaXRpb25pbmcmJnRoaXMuX2hpZGVUaWNrTWFya3NXaXRob3V0TGFiZWwoKSx0aGlzfSxlLnByb3RvdHlwZS50aWNrTGFiZWxQb3NpdGlvbj1mdW5jdGlvbih0KXtpZihudWxsPT10KXJldHVybiB0aGlzLl90aWNrTGFiZWxQb3NpdGlvbmluZzt2YXIgZT10LnRvTG93ZXJDYXNlKCk7aWYodGhpcy5pc0hvcml6b250YWwoKSl7aWYoImxlZnQiIT09ZSYmImNlbnRlciIhPT1lJiYicmlnaHQiIT09ZSl0aHJvdyBuZXcgRXJyb3IoZSsiIGlzIG5vdCBhIHZhbGlkIHRpY2sgbGFiZWwgcG9zaXRpb24gZm9yIGEgaG9yaXpvbnRhbCBOdW1lcmljQXhpcyIpfWVsc2UgaWYoInRvcCIhPT1lJiYiY2VudGVyIiE9PWUmJiJib3R0b20iIT09ZSl0aHJvdyBuZXcgRXJyb3IoZSsiIGlzIG5vdCBhIHZhbGlkIHRpY2sgbGFiZWwgcG9zaXRpb24gZm9yIGEgdmVydGljYWwgTnVtZXJpY0F4aXMiKTtyZXR1cm4gdGhpcy5fdGlja0xhYmVsUG9zaXRpb25pbmc9ZSx0aGlzLnJlZHJhdygpLHRoaXN9LGUucHJvdG90eXBlLnVzZXNUZXh0V2lkdGhBcHByb3hpbWF0aW9uPWZ1bmN0aW9uKHQpe3JldHVybiBudWxsPT10P3RoaXMuX3VzZXNUZXh0V2lkdGhBcHByb3hpbWF0aW9uOih0aGlzLl91c2VzVGV4dFdpZHRoQXBwcm94aW1hdGlvbj10LHRoaXMpfSxlLnByb3RvdHlwZS5faGlkZUVuZFRpY2tMYWJlbHM9ZnVuY3Rpb24oKXt2YXIgdD10aGlzLmVsZW1lbnQoKS5ub2RlKCkuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCksZT10aGlzLl90aWNrTGFiZWxDb250YWluZXIuc2VsZWN0QWxsKCIuIittbXQuQXhpcy5USUNLX0xBQkVMX0NMQVNTKTtpZigwIT09ZS5zaXplKCkpe3ZhciBuPWUubm9kZXMoKVswXTt1bXQuRE9NLmNsaWVudFJlY3RJbnNpZGUobi5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKSx0KXx8VWh0LnNlbGVjdChuKS5zdHlsZSgidmlzaWJpbGl0eSIsImhpZGRlbiIpO3ZhciBpPWUubm9kZXMoKVtlLnNpemUoKS0xXTt1bXQuRE9NLmNsaWVudFJlY3RJbnNpZGUoaS5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKSx0KXx8VWh0LnNlbGVjdChpKS5zdHlsZSgidmlzaWJpbGl0eSIsImhpZGRlbiIpfX0sZS5wcm90b3R5cGUuX2hpZGVPdmVybGFwcGluZ1RpY2tMYWJlbHM9ZnVuY3Rpb24oKXtmb3IodmFyIHQ9dGhpcy5fdGlja0xhYmVsQ29udGFpbmVyLnNlbGVjdEFsbCgiLiIrbW10LkF4aXMuVElDS19MQUJFTF9DTEFTUykuZmlsdGVyKChmdW5jdGlvbih0LGUpe3ZhciBuPVVodC5zZWxlY3QodGhpcykuc3R5bGUoInZpc2liaWxpdHkiKTtyZXR1cm4iaW5oZXJpdCI9PT1ufHwidmlzaWJsZSI9PT1ufSkpLGU9dC5ub2RlcygpLm1hcCgoZnVuY3Rpb24odCl7cmV0dXJuIHQuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCl9KSksbj0xOyF0aGlzLl9oYXNPdmVybGFwV2l0aEludGVydmFsKG4sZSkmJm48ZS5sZW5ndGg7KW4rPTE7dC5lYWNoKChmdW5jdGlvbih0LGUpe3ZhciBpPVVodC5zZWxlY3QodGhpcyk7ZSVuIT0wJiZpLnN0eWxlKCJ2aXNpYmlsaXR5IiwiaGlkZGVuIil9KSl9LGUucHJvdG90eXBlLl9oYXNPdmVybGFwV2l0aEludGVydmFsPWZ1bmN0aW9uKHQsZSl7Zm9yKHZhciBuPSJjZW50ZXIiPT09dGhpcy5fdGlja0xhYmVsUG9zaXRpb25pbmc/dGhpcy50aWNrTGFiZWxQYWRkaW5nKCk6Myp0aGlzLnRpY2tMYWJlbFBhZGRpbmcoKSxpPWUubWFwKChmdW5jdGlvbih0KXtyZXR1cm4gdW10LkRPTS5leHBhbmRSZWN0KHQsbil9KSkscj0wO3I8aS5sZW5ndGgtdDtyKz10KWlmKHVtdC5ET00uY2xpZW50UmVjdHNPdmVybGFwKGlbcl0saVtyK3RdKSlyZXR1cm4hMTtyZXR1cm4hMH0sZS5wcm90b3R5cGUuaW52YWxpZGF0ZUNhY2hlPWZ1bmN0aW9uKCl7dC5wcm90b3R5cGUuaW52YWxpZGF0ZUNhY2hlLmNhbGwodGhpcyksdGhpcy5fbWVhc3VyZXIucmVzZXQoKX0sZX0pKG1tdC5BeGlzKTtlLk51bWVyaWM9bn0pKSx5bXQ9YmUoKGZ1bmN0aW9uKHQsZSl7Ci8qKgogICAgICogQ29weXJpZ2h0IDIwMTQtcHJlc2VudCBQYWxhbnRpciBUZWNobm9sb2dpZXMKICAgICAqIEBsaWNlbnNlIE1JVAogICAgICovCk9iamVjdC5kZWZpbmVQcm9wZXJ0eShlLCJfX2VzTW9kdWxlIix7dmFsdWU6ITB9KSxlLmludGVydmFsVGlja0dlbmVyYXRvcj1mdW5jdGlvbiBuKHQpe2lmKHQ8PTApdGhyb3cgbmV3IEVycm9yKCJpbnRlcnZhbCBtdXN0IGJlIHBvc2l0aXZlIG51bWJlciIpO3JldHVybiBmdW5jdGlvbihlKXt2YXIgbj1lLmRvbWFpbigpLGk9TWF0aC5taW4oblswXSxuWzFdKSxyPU1hdGgubWF4KG5bMF0sblsxXSksbz1NYXRoLmNlaWwoaS90KSp0LGE9TWF0aC5mbG9vcigoci1vKS90KSsxLHM9aSV0PT0wP1tdOltpXSxsPXVtdC5NYXRoLnJhbmdlKDAsYSkubWFwKChmdW5jdGlvbihlKXtyZXR1cm4gbytlKnR9KSksYz1yJXQ9PTA/W106W3JdO3JldHVybiBzLmNvbmNhdChsKS5jb25jYXQoYyl9fSxlLmludGVnZXJUaWNrR2VuZXJhdG9yPWZ1bmN0aW9uIGkoKXtyZXR1cm4gZnVuY3Rpb24odCl7dmFyIGU9dC5kZWZhdWx0VGlja3MoKTtyZXR1cm4gZS5maWx0ZXIoKGZ1bmN0aW9uKHQsbil7cmV0dXJuIHQlMT09MHx8MD09PW58fG49PT1lLmxlbmd0aC0xfSkpfX19KSksdm10PWJlKChmdW5jdGlvbih0LGUpe2Z1bmN0aW9uIG4odCxlLG4pe3JldHVybiBuLShuLXQpKmV9ZnVuY3Rpb24gaSh0LGUsbil7cmV0dXJuKHQqZS1uKS8oZS0xKX1mdW5jdGlvbiByKHQsZSxuLGkpe3ZhciByPWU+MSxvPXI/aTpuO2lmKG51bGw9PW8pcmV0dXJuIGU7dmFyIGE9dC5nZXRUcmFuc2Zvcm1hdGlvbkRvbWFpbigpLHM9TWF0aC5hYnMoYVsxXS1hWzBdKTtyZXR1cm4ocj9NYXRoLm1pbjpNYXRoLm1heCkoZSxvL3MpfWZ1bmN0aW9uIG8odCxlLHIsbyxzKXtpZihlPD0xKXJldHVybntjZW50ZXJQb2ludDpyLHpvb21BbW91bnQ6ZX07aWYobnVsbD09byYmbnVsbD09cylyZXR1cm57Y2VudGVyUG9pbnQ6cix6b29tQW1vdW50OmV9O3ZhciBsPWEodCksYz0oZnVuY3Rpb24gdSh0KXt2YXIgZT10LmdldFRyYW5zZm9ybWF0aW9uRG9tYWluKCk7cmV0dXJuIGVbMV08ZVswXX0pKHQpO289bnVsbD09bz9jPzEvMDotMS8wOm8scz1udWxsPT1zP2M/LTEvMDoxLzA6czt2YXIgaD10LmdldFRyYW5zZm9ybWF0aW9uRG9tYWluKCksZD1oWzBdLHA9aFsxXSxmPXQuc2NhbGVUcmFuc2Zvcm1hdGlvbihzKSxtPXQuc2NhbGVUcmFuc2Zvcm1hdGlvbihwKSxnPW4obSxlLHIpLF89dC5zY2FsZVRyYW5zZm9ybWF0aW9uKG8pLHk9dC5zY2FsZVRyYW5zZm9ybWF0aW9uKGQpLHY9bih5LGUsciksYj1NYXRoLmFicyhmLV8pO2lmKE1hdGguYWJzKGctdik+Yil7dmFyIHg9KGYtXykvKG0teSk7cmV0dXJuIDEhPT14P3tjZW50ZXJQb2ludDppKG0seCxmKSx6b29tQW1vdW50Onh9OntjZW50ZXJQb2ludDpyLHpvb21BbW91bnQ6eH19cmV0dXJuIGc+ZiE9bD97Y2VudGVyUG9pbnQ6aShtLGUsZiksem9vbUFtb3VudDplfTp2PF8hPWw/e2NlbnRlclBvaW50OmkoeSxlLF8pLHpvb21BbW91bnQ6ZX06e2NlbnRlclBvaW50OnIsem9vbUFtb3VudDplfX1mdW5jdGlvbiBhKHQpe3ZhciBlPXQucmFuZ2UoKTtyZXR1cm4gZVsxXTxlWzBdfQovKioKICAgICAqIENvcHlyaWdodCAyMDE3LXByZXNlbnQgUGFsYW50aXIgVGVjaG5vbG9naWVzCiAgICAgKiBAbGljZW5zZSBNSVQKICAgICAqLwpPYmplY3QuZGVmaW5lUHJvcGVydHkoZSwiX19lc01vZHVsZSIse3ZhbHVlOiEwfSksZS56b29tT3V0PW4sZS5jb25zdHJhaW5lZFpvb209ZnVuY3Rpb24gcyh0LGUsbixpLGEsbCxjKXtyZXR1cm4gbyh0LGU9cih0LGUsaSxhKSxuLGwsYyl9LGUuY29uc3RyYWluWm9vbUV4dGVudHM9cixlLmNvbnN0cmFpblpvb21WYWx1ZXM9byxlLmNvbnN0cmFpbmVkVHJhbnNsYXRpb249ZnVuY3Rpb24gbCh0LGUsbixpKXt2YXIgcixvPXQuZ2V0VHJhbnNmb3JtYXRpb25Eb21haW4oKSxzPW9bMF0sbD1vWzFdLGM9YSh0KTtpZihlPjAhPT1jKXtpZihudWxsIT0ocj1pKSl7dmFyIHU9dC5zY2FsZVRyYW5zZm9ybWF0aW9uKGwpLGg9dC5zY2FsZVRyYW5zZm9ybWF0aW9uKHIpO2U9KGM/TWF0aC5tYXg6TWF0aC5taW4pKHUrZSxoKS11fX1lbHNlIGlmKG51bGwhPShyPW4pKXt2YXIgZD10LnNjYWxlVHJhbnNmb3JtYXRpb24ocykscD10LnNjYWxlVHJhbnNmb3JtYXRpb24ocik7ZT0oYz9NYXRoLm1pbjpNYXRoLm1heCkoZCtlLHApLWR9cmV0dXJuIGV9fSkpLGJtdD1iZSgoZnVuY3Rpb24odCxlKXsKLyoqCiAgICAgKiBDb3B5cmlnaHQgMjAxNC1wcmVzZW50IFBhbGFudGlyIFRlY2hub2xvZ2llcwogICAgICogQGxpY2Vuc2UgTUlUCiAgICAgKi8KT2JqZWN0LmRlZmluZVByb3BlcnR5KGUsIl9fZXNNb2R1bGUiLHt2YWx1ZTohMH0pO3ZhciBuPShmdW5jdGlvbigpe2Z1bmN0aW9uIHQoKXt0aGlzLl9hdXRvRG9tYWluQXV0b21hdGljYWxseT0hMCx0aGlzLl9kb21haW5Nb2RpZmljYXRpb25JblByb2dyZXNzPSExLHRoaXMuX3VwZGF0ZUlkPTAsdGhpcy5fY2FsbGJhY2tzPW5ldyB1bXQuQ2FsbGJhY2tTZXQsdGhpcy5faW5jbHVkZWRWYWx1ZXNQcm92aWRlcnM9bmV3IHVtdC5TZXR9cmV0dXJuIHQucHJvdG90eXBlLmV4dGVudE9mVmFsdWVzPWZ1bmN0aW9uKHQpe3JldHVybltdfSx0LnByb3RvdHlwZS5fZ2V0QWxsSW5jbHVkZWRWYWx1ZXM9ZnVuY3Rpb24odCl7dmFyIGU9dGhpczt2b2lkIDA9PT10JiYodD0hMSk7dmFyIG49W107cmV0dXJuIHRoaXMuX2luY2x1ZGVkVmFsdWVzUHJvdmlkZXJzLmZvckVhY2goKGZ1bmN0aW9uKGkpe3ZhciByPWkoZSx0KTtuPW4uY29uY2F0KHIpfSkpLG59LHQucHJvdG90eXBlLl9nZXRFeHRlbnQ9ZnVuY3Rpb24oKXtyZXR1cm5bXX0sdC5wcm90b3R5cGUub25VcGRhdGU9ZnVuY3Rpb24odCl7cmV0dXJuIHRoaXMuX2NhbGxiYWNrcy5hZGQodCksdGhpc30sdC5wcm90b3R5cGUub2ZmVXBkYXRlPWZ1bmN0aW9uKHQpe3JldHVybiB0aGlzLl9jYWxsYmFja3MuZGVsZXRlKHQpLHRoaXN9LHQucHJvdG90eXBlLl9kaXNwYXRjaFVwZGF0ZT1mdW5jdGlvbigpe3RoaXMuX3VwZGF0ZUlkKyssdGhpcy5fY2FsbGJhY2tzLmNhbGxDYWxsYmFja3ModGhpcyl9LHQucHJvdG90eXBlLmF1dG9Eb21haW49ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5fYXV0b0RvbWFpbkF1dG9tYXRpY2FsbHk9ITAsdGhpcy5fc2V0RG9tYWluKHRoaXMuX2dldEV4dGVudCgpKSx0aGlzfSx0LnByb3RvdHlwZS5hdXRvRG9tYWluSWZBdXRvbWF0aWNNb2RlPWZ1bmN0aW9uKCl7dGhpcy5fYXV0b0RvbWFpbkF1dG9tYXRpY2FsbHkmJnRoaXMuYXV0b0RvbWFpbigpfSx0LnByb3RvdHlwZS5zY2FsZT1mdW5jdGlvbih0KXt0aHJvdyBuZXcgRXJyb3IoIlN1YmNsYXNzZXMgc2hvdWxkIG92ZXJyaWRlIHNjYWxlIil9LHQucHJvdG90eXBlLnRpY2tzPWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuZG9tYWluKCl9LHQucHJvdG90eXBlLmRvbWFpbj1mdW5jdGlvbih0KXtyZXR1cm4gbnVsbD09dD90aGlzLl9nZXREb21haW4oKToodGhpcy5fYXV0b0RvbWFpbkF1dG9tYXRpY2FsbHk9ITEsdGhpcy5fc2V0RG9tYWluKHQpLHRoaXMpfSx0LnByb3RvdHlwZS5fZ2V0RG9tYWluPWZ1bmN0aW9uKCl7dGhyb3cgbmV3IEVycm9yKCJTdWJjbGFzc2VzIHNob3VsZCBvdmVycmlkZSBfZ2V0RG9tYWluIil9LHQucHJvdG90eXBlLl9zZXREb21haW49ZnVuY3Rpb24odCl7dGhpcy5fZG9tYWluTW9kaWZpY2F0aW9uSW5Qcm9ncmVzc3x8KHRoaXMuX2RvbWFpbk1vZGlmaWNhdGlvbkluUHJvZ3Jlc3M9ITAsdGhpcy5fYmFja2luZ1NjYWxlRG9tYWluKHQpLHRoaXMuX2Rpc3BhdGNoVXBkYXRlKCksdGhpcy5fZG9tYWluTW9kaWZpY2F0aW9uSW5Qcm9ncmVzcz0hMSl9LHQucHJvdG90eXBlLl9iYWNraW5nU2NhbGVEb21haW49ZnVuY3Rpb24odCl7dGhyb3cgbmV3IEVycm9yKCJTdWJjbGFzc2VzIHNob3VsZCBvdmVycmlkZSBfYmFja2luZ0RvbWFpbiIpfSx0LnByb3RvdHlwZS5yYW5nZT1mdW5jdGlvbih0KXtyZXR1cm4gbnVsbD09dD90aGlzLl9nZXRSYW5nZSgpOih0aGlzLl9zZXRSYW5nZSh0KSx0aGlzKX0sdC5wcm90b3R5cGUuX2dldFJhbmdlPWZ1bmN0aW9uKCl7dGhyb3cgbmV3IEVycm9yKCJTdWJjbGFzc2VzIHNob3VsZCBvdmVycmlkZSBfZ2V0UmFuZ2UiKX0sdC5wcm90b3R5cGUuX3NldFJhbmdlPWZ1bmN0aW9uKHQpe3Rocm93IG5ldyBFcnJvcigiU3ViY2xhc3NlcyBzaG91bGQgb3ZlcnJpZGUgX3NldFJhbmdlIil9LHQucHJvdG90eXBlLmFkZEluY2x1ZGVkVmFsdWVzUHJvdmlkZXI9ZnVuY3Rpb24odCl7cmV0dXJuIHRoaXMuX2luY2x1ZGVkVmFsdWVzUHJvdmlkZXJzLmFkZCh0KSx0aGlzLmF1dG9Eb21haW5JZkF1dG9tYXRpY01vZGUoKSx0aGlzfSx0LnByb3RvdHlwZS5yZW1vdmVJbmNsdWRlZFZhbHVlc1Byb3ZpZGVyPWZ1bmN0aW9uKHQpe3JldHVybiB0aGlzLl9pbmNsdWRlZFZhbHVlc1Byb3ZpZGVycy5kZWxldGUodCksdGhpcy5hdXRvRG9tYWluSWZBdXRvbWF0aWNNb2RlKCksdGhpc30sdC5wcm90b3R5cGUudXBkYXRlSWQ9ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5fdXBkYXRlSWR9LHR9KSgpO2UuU2NhbGU9bn0pKSx4bXQ9YmUoKGZ1bmN0aW9uKHQsZSl7Ci8qKgogICAgICogQ29weXJpZ2h0IDIwMTQtcHJlc2VudCBQYWxhbnRpciBUZWNobm9sb2dpZXMKICAgICAqIEBsaWNlbnNlIE1JVAogICAgICovCk9iamVjdC5kZWZpbmVQcm9wZXJ0eShlLCJfX2VzTW9kdWxlIix7dmFsdWU6ITB9KTt2YXIgbj1bMCwxXSxpPShmdW5jdGlvbih0KXtmdW5jdGlvbiBlKCl7dmFyIGk9dC5jYWxsKHRoaXMpfHx0aGlzO3JldHVybiBpLl9yYW5nZT1bMCwxXSxpLl9kM1NjYWxlPVVodC5zY2FsZUJhbmQoKSxpLl9kM1NjYWxlLnJhbmdlKG4pLGkuX2QzVHJhbnNmb3JtYXRpb25TY2FsZT1VaHQuc2NhbGVMaW5lYXIoKSxpLl9kM1RyYW5zZm9ybWF0aW9uU2NhbGUuZG9tYWluKG4pLGkuX2lubmVyUGFkZGluZz1lLl9jb252ZXJ0VG9QbG90dGFibGVJbm5lclBhZGRpbmcoLjMpLGkuX291dGVyUGFkZGluZz1lLl9jb252ZXJ0VG9QbG90dGFibGVPdXRlclBhZGRpbmcoLjUsLjMpLGl9cmV0dXJuIFNmdC5fX2V4dGVuZHMoZSx0KSxlLnByb3RvdHlwZS5jbG9uZVdpdGhvdXRQcm92aWRlcnM9ZnVuY3Rpb24oKXt2YXIgdD0obmV3IGUpLmRvbWFpbih0aGlzLmRvbWFpbigpKS5yYW5nZSh0aGlzLnJhbmdlKCkpLmlubmVyUGFkZGluZyh0aGlzLmlubmVyUGFkZGluZygpKS5vdXRlclBhZGRpbmcodGhpcy5vdXRlclBhZGRpbmcoKSk7cmV0dXJuIHQuX2QzVHJhbnNmb3JtYXRpb25TY2FsZS5kb21haW4odGhpcy5fZDNUcmFuc2Zvcm1hdGlvblNjYWxlLmRvbWFpbigpKSx0fSxlLnByb3RvdHlwZS5leHRlbnRPZlZhbHVlcz1mdW5jdGlvbih0KXtyZXR1cm4gdW10LkFycmF5LnVuaXEodCl9LGUucHJvdG90eXBlLl9nZXRFeHRlbnQ9ZnVuY3Rpb24oKXtyZXR1cm4gdW10LkFycmF5LnVuaXEodGhpcy5fZ2V0QWxsSW5jbHVkZWRWYWx1ZXMoKSl9LGUucHJvdG90eXBlLmRvbWFpbj1mdW5jdGlvbihlKXtyZXR1cm4gdC5wcm90b3R5cGUuZG9tYWluLmNhbGwodGhpcyxlKX0sZS5wcm90b3R5cGUuaW52ZXJ0UmFuZ2U9ZnVuY3Rpb24odCl7dmFyIGU9dGhpczt2b2lkIDA9PT10JiYodD10aGlzLnJhbmdlKCkpO3ZhciBuPXRoaXMuX2QzU2NhbGUuYmFuZHdpZHRoKCksaT10aGlzLmludmVydGVkVHJhbnNmb3JtYXRpb24odFswXSkscj10aGlzLmludmVydGVkVHJhbnNmb3JtYXRpb24odFsxXSksbz10aGlzLl9kM1NjYWxlLmRvbWFpbigpLGE9by5tYXAoKGZ1bmN0aW9uKHQpe3JldHVybiBlLl9kM1NjYWxlKHQpK24vMn0pKSxzPVVodC5iaXNlY3QoYSxpKSxsPVVodC5iaXNlY3QoYSxyKTtyZXR1cm4gby5zbGljZShzLGwpfSxlLnByb3RvdHlwZS5yYW5nZT1mdW5jdGlvbihlKXtyZXR1cm4gdC5wcm90b3R5cGUucmFuZ2UuY2FsbCh0aGlzLGUpfSxlLl9jb252ZXJ0VG9QbG90dGFibGVJbm5lclBhZGRpbmc9ZnVuY3Rpb24odCl7cmV0dXJuIDEvKDEtdCktMX0sZS5fY29udmVydFRvUGxvdHRhYmxlT3V0ZXJQYWRkaW5nPWZ1bmN0aW9uKHQsZSl7cmV0dXJuIHQvKDEtZSl9LGUucHJvdG90eXBlLl9zZXRCYW5kcz1mdW5jdGlvbigpe3ZhciB0PTEtMS8oMSt0aGlzLmlubmVyUGFkZGluZygpKSxlPXRoaXMub3V0ZXJQYWRkaW5nKCkvKDErdGhpcy5pbm5lclBhZGRpbmcoKSk7dGhpcy5fZDNTY2FsZS5wYWRkaW5nSW5uZXIodCksdGhpcy5fZDNTY2FsZS5wYWRkaW5nT3V0ZXIoZSl9LGUucHJvdG90eXBlLnJhbmdlQmFuZD1mdW5jdGlvbigpe3JldHVybiB0aGlzLl9yZXNjYWxlQmFuZCh0aGlzLl9kM1NjYWxlLmJhbmR3aWR0aCgpKX0sZS5wcm90b3R5cGUuc3RlcFdpZHRoPWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuX3Jlc2NhbGVCYW5kKHRoaXMuX2QzU2NhbGUuYmFuZHdpZHRoKCkqKDErdGhpcy5pbm5lclBhZGRpbmcoKSkpfSxlLnByb3RvdHlwZS50aWNrcz1mdW5jdGlvbigpe3JldHVybiB0aGlzLmRvbWFpbigpfSxlLnByb3RvdHlwZS5pbm5lclBhZGRpbmc9ZnVuY3Rpb24odCl7cmV0dXJuIG51bGw9PXQ/dGhpcy5faW5uZXJQYWRkaW5nOih0aGlzLl9pbm5lclBhZGRpbmc9dCx0aGlzLnJhbmdlKHRoaXMucmFuZ2UoKSksdGhpcy5fZGlzcGF0Y2hVcGRhdGUoKSx0aGlzKX0sZS5wcm90b3R5cGUub3V0ZXJQYWRkaW5nPWZ1bmN0aW9uKHQpe3JldHVybiBudWxsPT10P3RoaXMuX291dGVyUGFkZGluZzoodGhpcy5fb3V0ZXJQYWRkaW5nPXQsdGhpcy5yYW5nZSh0aGlzLnJhbmdlKCkpLHRoaXMuX2Rpc3BhdGNoVXBkYXRlKCksdGhpcyl9LGUucHJvdG90eXBlLnNjYWxlPWZ1bmN0aW9uKHQpe3ZhciBlPXRoaXMuX2QzU2NhbGUodCkrdGhpcy5fZDNTY2FsZS5iYW5kd2lkdGgoKS8yO3JldHVybiB0aGlzLl9kM1RyYW5zZm9ybWF0aW9uU2NhbGUoZSl9LGUucHJvdG90eXBlLnpvb209ZnVuY3Rpb24odCxlKXt2YXIgbj10aGlzO3RoaXMuX2QzVHJhbnNmb3JtYXRpb25TY2FsZS5kb21haW4odGhpcy5fZDNUcmFuc2Zvcm1hdGlvblNjYWxlLnJhbmdlKCkubWFwKChmdW5jdGlvbihpKXtyZXR1cm4gbi5fZDNUcmFuc2Zvcm1hdGlvblNjYWxlLmludmVydCh2bXQuem9vbU91dChpLHQsZSkpfSkpKSx0aGlzLl9kaXNwYXRjaFVwZGF0ZSgpfSxlLnByb3RvdHlwZS5wYW49ZnVuY3Rpb24odCl7dmFyIGU9dGhpczt0aGlzLl9kM1RyYW5zZm9ybWF0aW9uU2NhbGUuZG9tYWluKHRoaXMuX2QzVHJhbnNmb3JtYXRpb25TY2FsZS5yYW5nZSgpLm1hcCgoZnVuY3Rpb24obil7cmV0dXJuIGUuX2QzVHJhbnNmb3JtYXRpb25TY2FsZS5pbnZlcnQobit0KX0pKSksdGhpcy5fZGlzcGF0Y2hVcGRhdGUoKX0sZS5wcm90b3R5cGUuc2NhbGVUcmFuc2Zvcm1hdGlvbj1mdW5jdGlvbih0KXtyZXR1cm4gdGhpcy5fZDNUcmFuc2Zvcm1hdGlvblNjYWxlKHQpfSxlLnByb3RvdHlwZS5pbnZlcnRlZFRyYW5zZm9ybWF0aW9uPWZ1bmN0aW9uKHQpe3JldHVybiB0aGlzLl9kM1RyYW5zZm9ybWF0aW9uU2NhbGUuaW52ZXJ0KHQpfSxlLnByb3RvdHlwZS5nZXRUcmFuc2Zvcm1hdGlvbkV4dGVudD1mdW5jdGlvbigpe3JldHVybiBufSxlLnByb3RvdHlwZS5nZXRUcmFuc2Zvcm1hdGlvbkRvbWFpbj1mdW5jdGlvbigpe3JldHVybiB0aGlzLl9kM1RyYW5zZm9ybWF0aW9uU2NhbGUuZG9tYWluKCl9LGUucHJvdG90eXBlLnNldFRyYW5zZm9ybWF0aW9uRG9tYWluPWZ1bmN0aW9uKHQpe3RoaXMuX2QzVHJhbnNmb3JtYXRpb25TY2FsZS5kb21haW4odCksdGhpcy5fZGlzcGF0Y2hVcGRhdGUoKX0sZS5wcm90b3R5cGUuX2dldERvbWFpbj1mdW5jdGlvbigpe3JldHVybiB0aGlzLl9iYWNraW5nU2NhbGVEb21haW4oKX0sZS5wcm90b3R5cGUuX2JhY2tpbmdTY2FsZURvbWFpbj1mdW5jdGlvbih0KXtyZXR1cm4gbnVsbD09dD90aGlzLl9kM1NjYWxlLmRvbWFpbigpOih0aGlzLl9kM1NjYWxlLmRvbWFpbih0KSx0aGlzLl9zZXRCYW5kcygpLHRoaXMpfSxlLnByb3RvdHlwZS5fZ2V0UmFuZ2U9ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5fcmFuZ2V9LGUucHJvdG90eXBlLl9zZXRSYW5nZT1mdW5jdGlvbih0KXt0aGlzLl9yYW5nZT10LHRoaXMuX2QzVHJhbnNmb3JtYXRpb25TY2FsZS5yYW5nZSh0KSx0aGlzLl9zZXRCYW5kcygpfSxlLnByb3RvdHlwZS5fcmVzY2FsZUJhbmQ9ZnVuY3Rpb24odCl7cmV0dXJuIE1hdGguYWJzKHRoaXMuX2QzVHJhbnNmb3JtYXRpb25TY2FsZSh0KS10aGlzLl9kM1RyYW5zZm9ybWF0aW9uU2NhbGUoMCkpfSxlfSkoYm10LlNjYWxlKTtlLkNhdGVnb3J5PWl9KSksd210PWJlKChmdW5jdGlvbih0LGUpewovKioKICAgICAqIENvcHlyaWdodCAyMDE0LXByZXNlbnQgUGFsYW50aXIgVGVjaG5vbG9naWVzCiAgICAgKiBAbGljZW5zZSBNSVQKICAgICAqLwpPYmplY3QuZGVmaW5lUHJvcGVydHkoZSwiX19lc01vZHVsZSIse3ZhbHVlOiEwfSk7dmFyIG49KGZ1bmN0aW9uKCl7ZnVuY3Rpb24gdCgpe3RoaXMuY291bnQ9MCx0aGlzLnRyYWNrZXI9e319cmV0dXJuIHQucHJvdG90eXBlLmdldEluZGV4PWZ1bmN0aW9uKHQpe2lmKG51bGwhPXRoaXMudHJhY2tlclt0XSlyZXR1cm4gdGhpcy50cmFja2VyW3RdO3ZhciBlPXRoaXMuY291bnQ7cmV0dXJuIHRoaXMudHJhY2tlclt0XT1lLHRoaXMuY291bnQrPTEsZX0sdC5wcm90b3R5cGUuY2xlYXI9ZnVuY3Rpb24oKXt0aGlzLmNvdW50PTAsdGhpcy50cmFja2VyPXt9fSx0fSkoKSxpPShmdW5jdGlvbih0KXtmdW5jdGlvbiBlKGkpe3ZhciByLG89dC5jYWxsKHRoaXMpfHx0aGlzO3N3aXRjaChvLl9yYW5nZUxlbmd0aD0xLG8uX3RyYWNrZXI9bmV3IG4saSl7Y2FzZSBudWxsOmNhc2Ugdm9pZCAwOm51bGw9PWUuX3Bsb3R0YWJsZUNvbG9yQ2FjaGUmJihlLl9wbG90dGFibGVDb2xvckNhY2hlPWUuX2dldFBsb3R0YWJsZUNvbG9ycygpKSxyPVVodC5zY2FsZU9yZGluYWwoKS5yYW5nZShlLl9wbG90dGFibGVDb2xvckNhY2hlKTticmVhaztjYXNlIkNhdGVnb3J5MTAiOmNhc2UiY2F0ZWdvcnkxMCI6Y2FzZSIxMCI6cj1VaHQuc2NhbGVPcmRpbmFsKFVodC5zY2hlbWVDYXRlZ29yeTEwKTticmVhaztjYXNlIkNhdGVnb3J5MjAiOmNhc2UiY2F0ZWdvcnkyMCI6Y2FzZSIyMCI6cj1VaHQuc2NhbGVPcmRpbmFsKFVodC5zY2hlbWVDYXRlZ29yeTIwKTticmVhaztjYXNlIkNhdGVnb3J5MjBiIjpjYXNlImNhdGVnb3J5MjBiIjpjYXNlIjIwYiI6cj1VaHQuc2NhbGVPcmRpbmFsKFVodC5zY2hlbWVDYXRlZ29yeTIwYik7YnJlYWs7Y2FzZSJDYXRlZ29yeTIwYyI6Y2FzZSJjYXRlZ29yeTIwYyI6Y2FzZSIyMGMiOnI9VWh0LnNjYWxlT3JkaW5hbChVaHQuc2NoZW1lQ2F0ZWdvcnkyMGMpO2JyZWFrO2RlZmF1bHQ6dGhyb3cgbmV3IEVycm9yKCJVbnN1cHBvcnRlZCBDb2xvclNjYWxlIHR5cGUiKX1yZXR1cm4gby5fZDNTY2FsZT1yLG8uX3JhbmdlTGVuZ3RoPW8uX2QzU2NhbGUucmFuZ2UoKS5sZW5ndGgsb31yZXR1cm4gU2Z0Ll9fZXh0ZW5kcyhlLHQpLGUucHJvdG90eXBlLmV4dGVudE9mVmFsdWVzPWZ1bmN0aW9uKHQpe3JldHVybiB1bXQuQXJyYXkudW5pcSh0KX0sZS5wcm90b3R5cGUuX2dldEV4dGVudD1mdW5jdGlvbigpe3JldHVybiB1bXQuQXJyYXkudW5pcSh0aGlzLl9nZXRBbGxJbmNsdWRlZFZhbHVlcygpKX0sZS5pbnZhbGlkYXRlQ29sb3JDYWNoZT1mdW5jdGlvbigpe2UuX3Bsb3R0YWJsZUNvbG9yQ2FjaGU9bnVsbH0sZS5fZ2V0UGxvdHRhYmxlQ29sb3JzPWZ1bmN0aW9uKCl7Zm9yKHZhciB0PVtdLGU9VWh0LnNlbGVjdCgiYm9keSIpLmFwcGVuZCgicGxvdHRhYmxlLWNvbG9yLXRlc3RlciIpLG49dW10LkNvbG9yLmNvbG9yVGVzdChlLCIiKSxpPTAscj11bXQuQ29sb3IuY29sb3JUZXN0KGUsInBsb3R0YWJsZS1jb2xvcnMtMCIpO251bGwhPXImJmk8dGhpcy5fTUFYSU1VTV9DT0xPUlNfRlJPTV9DU1MmJihyIT09bnx8ciE9PXRbdC5sZW5ndGgtMV0pOyl0LnB1c2gociksaSsrLHI9dW10LkNvbG9yLmNvbG9yVGVzdChlLCJwbG90dGFibGUtY29sb3JzLSIraSk7cmV0dXJuIGUucmVtb3ZlKCksdH0sZS5wcm90b3R5cGUuc2NhbGU9ZnVuY3Rpb24odCl7dmFyIG49dGhpcy5fZDNTY2FsZSh0KSxpPXRoaXMuX3RyYWNrZXIuZ2V0SW5kZXgodCkscj1NYXRoLmZsb29yKGkvdGhpcy5fcmFuZ2VMZW5ndGgpO2lmKDA9PT1yKXJldHVybiBuO3ZhciBvPU1hdGgubG9nKHIqZS5fTE9PUF9MSUdIVEVOX0ZBQ1RPUisxKTtyZXR1cm4gdW10LkNvbG9yLmxpZ2h0ZW5Db2xvcihuLG8pfSxlLnByb3RvdHlwZS5fZ2V0RG9tYWluPWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuX2JhY2tpbmdTY2FsZURvbWFpbigpfSxlLnByb3RvdHlwZS5fYmFja2luZ1NjYWxlRG9tYWluPWZ1bmN0aW9uKHQpe3JldHVybiBudWxsPT10P3RoaXMuX2QzU2NhbGUuZG9tYWluKCk6KHRoaXMuX2QzU2NhbGUuZG9tYWluKHQpLHRoaXMuX3RyYWNrZXIuY2xlYXIoKSx0aGlzKX0sZS5wcm90b3R5cGUuX2dldFJhbmdlPWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuX2QzU2NhbGUucmFuZ2UoKX0sZS5wcm90b3R5cGUuX3NldFJhbmdlPWZ1bmN0aW9uKHQpe3RoaXMuX2QzU2NhbGUucmFuZ2UodCksdGhpcy5fcmFuZ2VMZW5ndGg9dC5sZW5ndGh9LGUuX0xPT1BfTElHSFRFTl9GQUNUT1I9MS42LGUuX01BWElNVU1fQ09MT1JTX0ZST01fQ1NTPTI1NixlfSkoYm10LlNjYWxlKTtlLkNvbG9yPWl9KSksU210PWJlKChmdW5jdGlvbih0LGUpewovKioKICAgICAqIENvcHlyaWdodCAyMDE0LXByZXNlbnQgUGFsYW50aXIgVGVjaG5vbG9naWVzCiAgICAgKiBAbGljZW5zZSBNSVQKICAgICAqLwpPYmplY3QuZGVmaW5lUHJvcGVydHkoZSwiX19lc01vZHVsZSIse3ZhbHVlOiEwfSk7dmFyIG49KGZ1bmN0aW9uKHQpe2Z1bmN0aW9uIGUobil7dm9pZCAwPT09biYmKG49ImxpbmVhciIpO3ZhciBpPXQuY2FsbCh0aGlzKXx8dGhpcztzd2l0Y2gobil7Y2FzZSJsaW5lYXIiOmkuX2NvbG9yU2NhbGU9VWh0LnNjYWxlTGluZWFyKCk7YnJlYWs7Y2FzZSJsb2ciOmkuX2NvbG9yU2NhbGU9VWh0LnNjYWxlTG9nKCk7YnJlYWs7Y2FzZSJzcXJ0IjppLl9jb2xvclNjYWxlPVVodC5zY2FsZVNxcnQoKTticmVhaztjYXNlInBvdyI6aS5fY29sb3JTY2FsZT1VaHQuc2NhbGVQb3coKX1pZihudWxsPT1pLl9jb2xvclNjYWxlKXRocm93IG5ldyBFcnJvcigidW5rbm93biBRdWFudGl0YXRpdmVTY2FsZSBzY2FsZSB0eXBlICIrbik7cmV0dXJuIGkucmFuZ2UoZS5SRURTKSxpfXJldHVybiBTZnQuX19leHRlbmRzKGUsdCksZS5wcm90b3R5cGUuZXh0ZW50T2ZWYWx1ZXM9ZnVuY3Rpb24odCl7dmFyIGU9VWh0LmV4dGVudCh0KTtyZXR1cm4gbnVsbD09ZVswXXx8bnVsbD09ZVsxXT9bXTplfSxlLnByb3RvdHlwZS5fZDNJbnRlcnBvbGF0ZWRTY2FsZT1mdW5jdGlvbigpe3JldHVybiB0aGlzLl9jb2xvclNjYWxlLnJhbmdlKFswLDFdKS5pbnRlcnBvbGF0ZSh0aGlzLl9pbnRlcnBvbGF0ZUNvbG9ycygpKX0sZS5wcm90b3R5cGUuX2ludGVycG9sYXRlQ29sb3JzPWZ1bmN0aW9uKCl7dmFyIHQ9dGhpcy5fY29sb3JSYW5nZTtpZih0Lmxlbmd0aDwyKXRocm93IG5ldyBFcnJvcigiQ29sb3Igc2NhbGUgYXJyYXlzIG11c3QgaGF2ZSBhdCBsZWFzdCB0d28gZWxlbWVudHMuIik7cmV0dXJuIGZ1bmN0aW9uKGUsbil7cmV0dXJuIGZ1bmN0aW9uKGUpe3ZhciBuPShlPU1hdGgubWF4KDAsTWF0aC5taW4oMSxlKSkpKih0Lmxlbmd0aC0xKSxpPU1hdGguZmxvb3Iobikscj1NYXRoLmNlaWwobiksbz1uLWk7cmV0dXJuIFVodC5pbnRlcnBvbGF0ZUxhYih0W2ldLHRbcl0pKG8pfX19LGUucHJvdG90eXBlLl9yZXNldFNjYWxlPWZ1bmN0aW9uKCl7dGhpcy5fZDNTY2FsZT10aGlzLl9kM0ludGVycG9sYXRlZFNjYWxlKCksdGhpcy5hdXRvRG9tYWluSWZBdXRvbWF0aWNNb2RlKCksdGhpcy5fZGlzcGF0Y2hVcGRhdGUoKX0sZS5wcm90b3R5cGUuYXV0b0RvbWFpbj1mdW5jdGlvbigpe3ZhciB0PXRoaXMuX2dldEFsbEluY2x1ZGVkVmFsdWVzKCk7cmV0dXJuIHQubGVuZ3RoPjAmJnRoaXMuX3NldERvbWFpbihbdW10Lk1hdGgubWluKHQsMCksdW10Lk1hdGgubWF4KHQsMCldKSx0aGlzfSxlLnByb3RvdHlwZS5zY2FsZT1mdW5jdGlvbih0KXtyZXR1cm4gdGhpcy5fZDNTY2FsZSh0KX0sZS5wcm90b3R5cGUuX2dldERvbWFpbj1mdW5jdGlvbigpe3JldHVybiB0aGlzLl9iYWNraW5nU2NhbGVEb21haW4oKX0sZS5wcm90b3R5cGUuX2JhY2tpbmdTY2FsZURvbWFpbj1mdW5jdGlvbih0KXtyZXR1cm4gbnVsbD09dD90aGlzLl9kM1NjYWxlLmRvbWFpbigpOih0aGlzLl9kM1NjYWxlLmRvbWFpbih0KSx0aGlzKX0sZS5wcm90b3R5cGUuX2dldFJhbmdlPWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuX2NvbG9yUmFuZ2V9LGUucHJvdG90eXBlLl9zZXRSYW5nZT1mdW5jdGlvbih0KXt0aGlzLl9jb2xvclJhbmdlPXQsdGhpcy5fcmVzZXRTY2FsZSgpfSxlLlJFRFM9WyIjRkZGRkZGIiwiI0ZGRjZFMSIsIiNGRUY0QzAiLCIjRkVEOTc2IiwiI0ZFQjI0QyIsIiNGRDhEM0MiLCIjRkM0RTJBIiwiI0UzMUExQyIsIiNCMTAwMjYiXSxlLkJMVUVTPVsiI0ZGRkZGRiIsIiNDQ0ZGRkYiLCIjQTVGRkZEIiwiIzg1RjdGQiIsIiM2RUQzRUYiLCIjNTVBN0UwIiwiIzQxN0ZEMCIsIiMyNTQ1RDMiLCIjMEIwMkUxIl0sZS5QT1NORUc9WyIjMEIwMkUxIiwiIzI1NDVEMyIsIiM0MTdGRDAiLCIjNTVBN0UwIiwiIzZFRDNFRiIsIiM4NUY3RkIiLCIjQTVGRkZEIiwiI0NDRkZGRiIsIiNGRkZGRkYiLCIjRkZGNkUxIiwiI0ZFRjRDMCIsIiNGRUQ5NzYiLCIjRkVCMjRDIiwiI0ZEOEQzQyIsIiNGQzRFMkEiLCIjRTMxQTFDIiwiI0IxMDAyNiJdLGV9KShibXQuU2NhbGUpO2UuSW50ZXJwb2xhdGVkQ29sb3I9bn0pKSxNbXQ9YmUoKGZ1bmN0aW9uKHQsZSl7Ci8qKgogICAgICogQ29weXJpZ2h0IDIwMTQtcHJlc2VudCBQYWxhbnRpciBUZWNobm9sb2dpZXMKICAgICAqIEBsaWNlbnNlIE1JVAogICAgICovCk9iamVjdC5kZWZpbmVQcm9wZXJ0eShlLCJfX2VzTW9kdWxlIix7dmFsdWU6ITB9KTt2YXIgbj0oZnVuY3Rpb24odCl7ZnVuY3Rpb24gZSgpe3ZhciBlPXQuY2FsbCh0aGlzKXx8dGhpcztyZXR1cm4gZS5fdGlja0dlbmVyYXRvcj1mdW5jdGlvbih0KXtyZXR1cm4gdC5kZWZhdWx0VGlja3MoKX0sZS5fcGFkUHJvcG9ydGlvbj0uMDUsZS5fc25hcHBpbmdEb21haW5FbmFibGVkPSEwLGUuX3BhZGRpbmdFeGNlcHRpb25zUHJvdmlkZXJzPW5ldyB1bXQuU2V0LGV9cmV0dXJuIFNmdC5fX2V4dGVuZHMoZSx0KSxlLnByb3RvdHlwZS5hdXRvRG9tYWluPWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuX2RvbWFpbk1pbj1udWxsLHRoaXMuX2RvbWFpbk1heD1udWxsLHQucHJvdG90eXBlLmF1dG9Eb21haW4uY2FsbCh0aGlzKSx0aGlzfSxlLnByb3RvdHlwZS5hdXRvRG9tYWluSWZBdXRvbWF0aWNNb2RlPWZ1bmN0aW9uKCl7aWYobnVsbD09dGhpcy5fZG9tYWluTWlufHxudWxsPT10aGlzLl9kb21haW5NYXgpe3ZhciBlPXRoaXMuX2dldEV4dGVudCgpO2lmKG51bGwhPXRoaXMuX2RvbWFpbk1pbil7dmFyIG49ZVsxXTtyZXR1cm4gdGhpcy5fZG9tYWluTWluPj1uJiYobj10aGlzLl9leHBhbmRTaW5nbGVWYWx1ZURvbWFpbihbdGhpcy5fZG9tYWluTWluLHRoaXMuX2RvbWFpbk1pbl0pWzFdKSx2b2lkIHRoaXMuX3NldERvbWFpbihbdGhpcy5fZG9tYWluTWluLG5dKX1pZihudWxsIT10aGlzLl9kb21haW5NYXgpe3ZhciBpPWVbMF07cmV0dXJuIHRoaXMuX2RvbWFpbk1heDw9aSYmKGk9dGhpcy5fZXhwYW5kU2luZ2xlVmFsdWVEb21haW4oW3RoaXMuX2RvbWFpbk1heCx0aGlzLl9kb21haW5NYXhdKVswXSksdm9pZCB0aGlzLl9zZXREb21haW4oW2ksdGhpcy5fZG9tYWluTWF4XSl9dC5wcm90b3R5cGUuYXV0b0RvbWFpbklmQXV0b21hdGljTW9kZS5jYWxsKHRoaXMpfWVsc2UgdGhpcy5fc2V0RG9tYWluKFt0aGlzLl9kb21haW5NaW4sdGhpcy5fZG9tYWluTWF4XSl9LGUucHJvdG90eXBlLl9nZXRVbmJvdW5kZWRFeHRlbnQ9ZnVuY3Rpb24odCl7dm9pZCAwPT09dCYmKHQ9ITEpO3ZhciBlPXRoaXMuX2dldEFsbEluY2x1ZGVkVmFsdWVzKHQpLG49dGhpcy5fZGVmYXVsdEV4dGVudCgpO2lmKDAhPT1lLmxlbmd0aCl7dmFyIGk9W3VtdC5NYXRoLm1pbihlLG5bMF0pLHVtdC5NYXRoLm1heChlLG5bMV0pXTtuPXRoaXMuX3BhZERvbWFpbihpKX1yZXR1cm4gbn0sZS5wcm90b3R5cGUuX2dldEV4dGVudD1mdW5jdGlvbigpe3ZhciB0PXRoaXMuX2dldFVuYm91bmRlZEV4dGVudCgpO3JldHVybiBudWxsIT10aGlzLl9kb21haW5NaW4mJih0WzBdPXRoaXMuX2RvbWFpbk1pbiksbnVsbCE9dGhpcy5fZG9tYWluTWF4JiYodFsxXT10aGlzLl9kb21haW5NYXgpLHR9LGUucHJvdG90eXBlLmFkZFBhZGRpbmdFeGNlcHRpb25zUHJvdmlkZXI9ZnVuY3Rpb24odCl7cmV0dXJuIHRoaXMuX3BhZGRpbmdFeGNlcHRpb25zUHJvdmlkZXJzLmFkZCh0KSx0aGlzLmF1dG9Eb21haW5JZkF1dG9tYXRpY01vZGUoKSx0aGlzfSxlLnByb3RvdHlwZS5yZW1vdmVQYWRkaW5nRXhjZXB0aW9uc1Byb3ZpZGVyPWZ1bmN0aW9uKHQpe3JldHVybiB0aGlzLl9wYWRkaW5nRXhjZXB0aW9uc1Byb3ZpZGVycy5kZWxldGUodCksdGhpcy5hdXRvRG9tYWluSWZBdXRvbWF0aWNNb2RlKCksdGhpc30sZS5wcm90b3R5cGUucGFkUHJvcG9ydGlvbj1mdW5jdGlvbih0KXtpZihudWxsPT10KXJldHVybiB0aGlzLl9wYWRQcm9wb3J0aW9uO2lmKHQ8MCl0aHJvdyBuZXcgRXJyb3IoInBhZFByb3BvcnRpb24gbXVzdCBiZSBub24tbmVnYXRpdmUiKTtyZXR1cm4gdGhpcy5fcGFkUHJvcG9ydGlvbj10LHRoaXMuYXV0b0RvbWFpbklmQXV0b21hdGljTW9kZSgpLHRoaXN9LGUucHJvdG90eXBlLl9wYWREb21haW49ZnVuY3Rpb24odCl7dmFyIGU9dGhpcztpZih0WzBdLnZhbHVlT2YoKT09PXRbMV0udmFsdWVPZigpKXJldHVybiB0aGlzLl9leHBhbmRTaW5nbGVWYWx1ZURvbWFpbih0KTtpZigwPT09dGhpcy5fcGFkUHJvcG9ydGlvbilyZXR1cm4gdDt2YXIgbj10aGlzLl9wYWRQcm9wb3J0aW9uLzIsaT10WzBdLHI9dFsxXSxvPSExLGE9ITE7dGhpcy5fcGFkZGluZ0V4Y2VwdGlvbnNQcm92aWRlcnMuZm9yRWFjaCgoZnVuY3Rpb24odCl7dChlKS5mb3JFYWNoKChmdW5jdGlvbih0KXt0LnZhbHVlT2YoKT09PWkudmFsdWVPZigpJiYobz0hMCksdC52YWx1ZU9mKCk9PT1yLnZhbHVlT2YoKSYmKGE9ITApfSkpfSkpO3ZhciBzPXRoaXMuX2JhY2tpbmdTY2FsZURvbWFpbigpO3RoaXMuX2JhY2tpbmdTY2FsZURvbWFpbih0KTt2YXIgbD1vP2k6dGhpcy5pbnZlcnQodGhpcy5zY2FsZShpKS0odGhpcy5zY2FsZShyKS10aGlzLnNjYWxlKGkpKSpuKSxjPWE/cjp0aGlzLmludmVydCh0aGlzLnNjYWxlKHIpKyh0aGlzLnNjYWxlKHIpLXRoaXMuc2NhbGUoaSkpKm4pO3JldHVybiB0aGlzLl9iYWNraW5nU2NhbGVEb21haW4ocyksdGhpcy5fc25hcHBpbmdEb21haW5FbmFibGVkP3RoaXMuX25pY2VEb21haW4oW2wsY10pOltsLGNdfSxlLnByb3RvdHlwZS5zbmFwcGluZ0RvbWFpbkVuYWJsZWQ9ZnVuY3Rpb24odCl7cmV0dXJuIG51bGw9PXQ/dGhpcy5fc25hcHBpbmdEb21haW5FbmFibGVkOih0aGlzLl9zbmFwcGluZ0RvbWFpbkVuYWJsZWQ9dCx0aGlzLmF1dG9Eb21haW5JZkF1dG9tYXRpY01vZGUoKSx0aGlzKX0sZS5wcm90b3R5cGUuX2V4cGFuZFNpbmdsZVZhbHVlRG9tYWluPWZ1bmN0aW9uKHQpe3JldHVybiB0fSxlLnByb3RvdHlwZS5pbnZlcnQ9ZnVuY3Rpb24odCl7dGhyb3cgbmV3IEVycm9yKCJTdWJjbGFzc2VzIHNob3VsZCBvdmVycmlkZSBpbnZlcnQiKX0sZS5wcm90b3R5cGUuZG9tYWluPWZ1bmN0aW9uKGUpe3JldHVybiBudWxsIT1lJiYodGhpcy5fZG9tYWluTWluPWVbMF0sdGhpcy5fZG9tYWluTWF4PWVbMV0pLHQucHJvdG90eXBlLmRvbWFpbi5jYWxsKHRoaXMsZSl9LGUucHJvdG90eXBlLmRvbWFpbk1pbj1mdW5jdGlvbih0KXtyZXR1cm4gbnVsbD09dD90aGlzLmRvbWFpbigpWzBdOih0aGlzLl9kb21haW5NaW49dCx0aGlzLmF1dG9Eb21haW5JZkF1dG9tYXRpY01vZGUoKSx0aGlzKX0sZS5wcm90b3R5cGUuZG9tYWluTWF4PWZ1bmN0aW9uKHQpe3JldHVybiBudWxsPT10P3RoaXMuZG9tYWluKClbMV06KHRoaXMuX2RvbWFpbk1heD10LHRoaXMuYXV0b0RvbWFpbklmQXV0b21hdGljTW9kZSgpLHRoaXMpfSxlLnByb3RvdHlwZS5leHRlbnRPZlZhbHVlcz1mdW5jdGlvbih0KXt2YXIgZT1VaHQuZXh0ZW50KHQuZmlsdGVyKChmdW5jdGlvbih0KXtyZXR1cm4gdW10Lk1hdGguaXNWYWxpZE51bWJlcigrdCl9KSkpO3JldHVybiBudWxsPT1lWzBdfHxudWxsPT1lWzFdP1tdOmV9LGUucHJvdG90eXBlLnpvb209ZnVuY3Rpb24odCxlKXt2YXIgbj10aGlzO3RoaXMuZG9tYWluKHRoaXMucmFuZ2UoKS5tYXAoKGZ1bmN0aW9uKGkpe3JldHVybiBuLmludmVydCh2bXQuem9vbU91dChpLHQsZSkpfSkpKX0sZS5wcm90b3R5cGUucGFuPWZ1bmN0aW9uKHQpe3ZhciBlPXRoaXM7dGhpcy5kb21haW4odGhpcy5yYW5nZSgpLm1hcCgoZnVuY3Rpb24obil7cmV0dXJuIGUuaW52ZXJ0KG4rdCl9KSkpfSxlLnByb3RvdHlwZS5zY2FsZVRyYW5zZm9ybWF0aW9uPWZ1bmN0aW9uKHQpe3Rocm93IG5ldyBFcnJvcigiU3ViY2xhc3NlcyBzaG91bGQgb3ZlcnJpZGUgc2NhbGVUcmFuc2Zvcm1hdGlvbiIpfSxlLnByb3RvdHlwZS5pbnZlcnRlZFRyYW5zZm9ybWF0aW9uPWZ1bmN0aW9uKHQpe3Rocm93IG5ldyBFcnJvcigiU3ViY2xhc3NlcyBzaG91bGQgb3ZlcnJpZGUgaW52ZXJ0ZWRUcmFuc2Zvcm1hdGlvbiIpfSxlLnByb3RvdHlwZS5nZXRUcmFuc2Zvcm1hdGlvbkV4dGVudD1mdW5jdGlvbigpe3Rocm93IG5ldyBFcnJvcigiU3ViY2xhc3NlcyBzaG91bGQgb3ZlcnJpZGUgZ2V0VHJhbnNmb3JtYXRpb25FeHRlbnQiKX0sZS5wcm90b3R5cGUuZ2V0VHJhbnNmb3JtYXRpb25Eb21haW49ZnVuY3Rpb24oKXt0aHJvdyBuZXcgRXJyb3IoIlN1YmNsYXNzZXMgc2hvdWxkIG92ZXJyaWRlIGdldFRyYW5zZm9ybWF0aW9uRG9tYWluIil9LGUucHJvdG90eXBlLnNldFRyYW5zZm9ybWF0aW9uRG9tYWluPWZ1bmN0aW9uKHQpe3Rocm93IG5ldyBFcnJvcigiU3ViY2xhc3NlcyBzaG91bGQgb3ZlcnJpZGUgc2V0VHJhbnNmb3JtYXRpb25Eb21haW4iKX0sZS5wcm90b3R5cGUuX3NldERvbWFpbj1mdW5jdGlvbihlKXt2YXIgbj1mdW5jdGlvbih0KXtyZXR1cm4gdW10Lk1hdGguaXNOYU4odCl8fHQ9PT0xLzB8fHQ9PT0tMS8wfTtuKGVbMF0pfHxuKGVbMV0pP3VtdC5XaW5kb3cud2FybigiV2FybmluZzogUXVhbnRpdGF0aXZlU2NhbGVzIGNhbm5vdCB0YWtlIE5hTiBvciBJbmZpbml0eSBhcyBhIGRvbWFpbiB2YWx1ZS4gSWdub3JpbmcuIik6dC5wcm90b3R5cGUuX3NldERvbWFpbi5jYWxsKHRoaXMsZSl9LGUucHJvdG90eXBlLmRlZmF1bHRUaWNrcz1mdW5jdGlvbigpe3Rocm93IG5ldyBFcnJvcigiU3ViY2xhc3NlcyBzaG91bGQgb3ZlcnJpZGUgX2dldERlZmF1bHRUaWNrcyIpfSxlLnByb3RvdHlwZS50aWNrcz1mdW5jdGlvbigpe3JldHVybiB0aGlzLl90aWNrR2VuZXJhdG9yKHRoaXMpfSxlLnByb3RvdHlwZS5fbmljZURvbWFpbj1mdW5jdGlvbih0LGUpe3Rocm93IG5ldyBFcnJvcigiU3ViY2xhc3NlcyBzaG91bGQgb3ZlcnJpZGUgX25pY2VEb21haW4iKX0sZS5wcm90b3R5cGUuX2RlZmF1bHRFeHRlbnQ9ZnVuY3Rpb24oKXt0aHJvdyBuZXcgRXJyb3IoIlN1YmNsYXNzZXMgc2hvdWxkIG92ZXJyaWRlIF9kZWZhdWx0RXh0ZW50Iil9LGUucHJvdG90eXBlLnRpY2tHZW5lcmF0b3I9ZnVuY3Rpb24odCl7cmV0dXJuIG51bGw9PXQ/dGhpcy5fdGlja0dlbmVyYXRvcjoodGhpcy5fdGlja0dlbmVyYXRvcj10LHRoaXMpfSxlLl9ERUZBVUxUX05VTV9USUNLUz0xMCxlfSkoYm10LlNjYWxlKTtlLlF1YW50aXRhdGl2ZVNjYWxlPW59KSksRW10PWJlKChmdW5jdGlvbih0LGUpewovKioKICAgICAqIENvcHlyaWdodCAyMDE0LXByZXNlbnQgUGFsYW50aXIgVGVjaG5vbG9naWVzCiAgICAgKiBAbGljZW5zZSBNSVQKICAgICAqLwpPYmplY3QuZGVmaW5lUHJvcGVydHkoZSwiX19lc01vZHVsZSIse3ZhbHVlOiEwfSk7dmFyIG49KGZ1bmN0aW9uKHQpe2Z1bmN0aW9uIGUoKXt2YXIgZT10LmNhbGwodGhpcyl8fHRoaXM7cmV0dXJuIGUuX2QzU2NhbGU9VWh0LnNjYWxlTGluZWFyKCksZX1yZXR1cm4gU2Z0Ll9fZXh0ZW5kcyhlLHQpLGUucHJvdG90eXBlLl9kZWZhdWx0RXh0ZW50PWZ1bmN0aW9uKCl7cmV0dXJuWzAsMV19LGUucHJvdG90eXBlLl9leHBhbmRTaW5nbGVWYWx1ZURvbWFpbj1mdW5jdGlvbih0KXtyZXR1cm4gdFswXT09PXRbMV0/W3RbMF0tMSx0WzFdKzFdOnR9LGUucHJvdG90eXBlLnNjYWxlPWZ1bmN0aW9uKHQpe3JldHVybiB0aGlzLl9kM1NjYWxlKHQpfSxlLnByb3RvdHlwZS5zY2FsZVRyYW5zZm9ybWF0aW9uPWZ1bmN0aW9uKHQpe3JldHVybiB0aGlzLnNjYWxlKHQpfSxlLnByb3RvdHlwZS5pbnZlcnRlZFRyYW5zZm9ybWF0aW9uPWZ1bmN0aW9uKHQpe3JldHVybiB0aGlzLmludmVydCh0KX0sZS5wcm90b3R5cGUuZ2V0VHJhbnNmb3JtYXRpb25FeHRlbnQ9ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5fZ2V0VW5ib3VuZGVkRXh0ZW50KCEwKX0sZS5wcm90b3R5cGUuZ2V0VHJhbnNmb3JtYXRpb25Eb21haW49ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5kb21haW4oKX0sZS5wcm90b3R5cGUuc2V0VHJhbnNmb3JtYXRpb25Eb21haW49ZnVuY3Rpb24odCl7dGhpcy5kb21haW4odCl9LGUucHJvdG90eXBlLl9nZXREb21haW49ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5fYmFja2luZ1NjYWxlRG9tYWluKCl9LGUucHJvdG90eXBlLl9iYWNraW5nU2NhbGVEb21haW49ZnVuY3Rpb24odCl7cmV0dXJuIG51bGw9PXQ/dGhpcy5fZDNTY2FsZS5kb21haW4oKToodGhpcy5fZDNTY2FsZS5kb21haW4odCksdGhpcyl9LGUucHJvdG90eXBlLl9nZXRSYW5nZT1mdW5jdGlvbigpe3JldHVybiB0aGlzLl9kM1NjYWxlLnJhbmdlKCl9LGUucHJvdG90eXBlLl9zZXRSYW5nZT1mdW5jdGlvbih0KXt0aGlzLl9kM1NjYWxlLnJhbmdlKHQpfSxlLnByb3RvdHlwZS5pbnZlcnQ9ZnVuY3Rpb24odCl7cmV0dXJuIHRoaXMuX2QzU2NhbGUuaW52ZXJ0KHQpfSxlLnByb3RvdHlwZS5kZWZhdWx0VGlja3M9ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5fZDNTY2FsZS50aWNrcyhlLl9ERUZBVUxUX05VTV9USUNLUyl9LGUucHJvdG90eXBlLl9uaWNlRG9tYWluPWZ1bmN0aW9uKHQsZSl7cmV0dXJuIHRoaXMuX2QzU2NhbGUuY29weSgpLmRvbWFpbih0KS5uaWNlKGUpLmRvbWFpbigpfSxlfSkoTW10LlF1YW50aXRhdGl2ZVNjYWxlKTtlLkxpbmVhcj1ufSkpLFRtdD1iZSgoZnVuY3Rpb24odCxlKXsKLyoqCiAgICAgKiBDb3B5cmlnaHQgMjAxNC1wcmVzZW50IFBhbGFudGlyIFRlY2hub2xvZ2llcwogICAgICogQGxpY2Vuc2UgTUlUCiAgICAgKi8KT2JqZWN0LmRlZmluZVByb3BlcnR5KGUsIl9fZXNNb2R1bGUiLHt2YWx1ZTohMH0pO3ZhciBuPShmdW5jdGlvbih0KXtmdW5jdGlvbiBlKGUpe3ZvaWQgMD09PWUmJihlPTEwKTt2YXIgbj10LmNhbGwodGhpcyl8fHRoaXM7cmV0dXJuIG4uX2QzU2NhbGU9VWh0LnNjYWxlTG9nKCkuYmFzZShlKSxuLl9zZXREb21haW4obi5fZGVmYXVsdEV4dGVudCgpKSxufXJldHVybiBTZnQuX19leHRlbmRzKGUsdCksZS5wcm90b3R5cGUuX2RlZmF1bHRFeHRlbnQ9ZnVuY3Rpb24oKXtyZXR1cm5bMSx0aGlzLl9kM1NjYWxlLmJhc2UoKV19LGUucHJvdG90eXBlLl9leHBhbmRTaW5nbGVWYWx1ZURvbWFpbj1mdW5jdGlvbih0KXtyZXR1cm4gdFswXT09PXRbMV0/W3RbMF0vdGhpcy5fZDNTY2FsZS5iYXNlKCksdFsxXSp0aGlzLl9kM1NjYWxlLmJhc2UoKV06dH0sZS5wcm90b3R5cGUuc2NhbGU9ZnVuY3Rpb24odCl7cmV0dXJuIHRoaXMuX2QzU2NhbGUodCl9LGUucHJvdG90eXBlLnNjYWxlVHJhbnNmb3JtYXRpb249ZnVuY3Rpb24odCl7cmV0dXJuIHRoaXMuc2NhbGUodCl9LGUucHJvdG90eXBlLmludmVydGVkVHJhbnNmb3JtYXRpb249ZnVuY3Rpb24odCl7cmV0dXJuIHRoaXMuaW52ZXJ0KHQpfSxlLnByb3RvdHlwZS5nZXRUcmFuc2Zvcm1hdGlvbkV4dGVudD1mdW5jdGlvbigpe3JldHVybiB0aGlzLl9nZXRVbmJvdW5kZWRFeHRlbnQoITApfSxlLnByb3RvdHlwZS5nZXRUcmFuc2Zvcm1hdGlvbkRvbWFpbj1mdW5jdGlvbigpe3JldHVybiB0aGlzLmRvbWFpbigpfSxlLnByb3RvdHlwZS5zZXRUcmFuc2Zvcm1hdGlvbkRvbWFpbj1mdW5jdGlvbih0KXt0aGlzLmRvbWFpbih0KX0sZS5wcm90b3R5cGUuX2dldERvbWFpbj1mdW5jdGlvbigpe3JldHVybiB0aGlzLl9iYWNraW5nU2NhbGVEb21haW4oKX0sZS5wcm90b3R5cGUuX2JhY2tpbmdTY2FsZURvbWFpbj1mdW5jdGlvbih0KXtyZXR1cm4gbnVsbD09dD90aGlzLl9kM1NjYWxlLmRvbWFpbigpOih0aGlzLl9kM1NjYWxlLmRvbWFpbih0KSx0aGlzKX0sZS5wcm90b3R5cGUuX2dldFJhbmdlPWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuX2QzU2NhbGUucmFuZ2UoKX0sZS5wcm90b3R5cGUuX3NldFJhbmdlPWZ1bmN0aW9uKHQpe3RoaXMuX2QzU2NhbGUucmFuZ2UodCl9LGUucHJvdG90eXBlLmludmVydD1mdW5jdGlvbih0KXtyZXR1cm4gdGhpcy5fZDNTY2FsZS5pbnZlcnQodCl9LGUucHJvdG90eXBlLmRlZmF1bHRUaWNrcz1mdW5jdGlvbigpe3JldHVybiB0aGlzLl9kM1NjYWxlLnRpY2tzKGUuX0RFRkFVTFRfTlVNX1RJQ0tTKX0sZS5wcm90b3R5cGUuX25pY2VEb21haW49ZnVuY3Rpb24odCxlKXtyZXR1cm4gdGhpcy5fZDNTY2FsZS5jb3B5KCkuZG9tYWluKHQpLm5pY2UoKS5kb21haW4oKX0sZX0pKE1tdC5RdWFudGl0YXRpdmVTY2FsZSk7ZS5Mb2c9bn0pKSxBbXQ9YmUoKGZ1bmN0aW9uKHQsZSl7Ci8qKgogICAgICogQ29weXJpZ2h0IDIwMTQtcHJlc2VudCBQYWxhbnRpciBUZWNobm9sb2dpZXMKICAgICAqIEBsaWNlbnNlIE1JVAogICAgICovCk9iamVjdC5kZWZpbmVQcm9wZXJ0eShlLCJfX2VzTW9kdWxlIix7dmFsdWU6ITB9KTt2YXIgbj0oZnVuY3Rpb24odCl7ZnVuY3Rpb24gZShlKXt2b2lkIDA9PT1lJiYoZT0xMCk7dmFyIG49dC5jYWxsKHRoaXMpfHx0aGlzO2lmKG4uX2xvZ1RpY2tHZW5lcmF0b3I9ZnVuY3Rpb24odCl7dmFyIGU9ZnVuY3Rpb24odCxlLG4pe3JldHVyblt0LGUsbl0uc29ydCgoZnVuY3Rpb24odCxlKXtyZXR1cm4gdC1lfSkpWzFdfSxpPXVtdC5NYXRoLm1pbihuLl91bnRyYW5zZm9ybWVkRG9tYWluLDApLHI9dW10Lk1hdGgubWF4KG4uX3VudHJhbnNmb3JtZWREb21haW4sMCksbz1pLGE9ZShpLHIsLW4uX3Bpdm90KSxzPWUoaSxyLG4uX3Bpdm90KSxsPXIsYz1uLl9sb2dUaWNrcygtYSwtbykubWFwKChmdW5jdGlvbih0KXtyZXR1cm4tdH0pKS5yZXZlcnNlKCksdT1uLl9sb2dUaWNrcyhzLGwpLGg9TWF0aC5tYXgoaSwtbi5fcGl2b3QpLGQ9TWF0aC5taW4ocixuLl9waXZvdCkscD1VaHQuc2NhbGVMaW5lYXIoKS5kb21haW4oW2gsZF0pLnRpY2tzKG4uX2hvd01hbnlUaWNrcyhoLGQpKSxmPWMuY29uY2F0KHApLmNvbmNhdCh1KTtyZXR1cm4gZi5sZW5ndGg8PTEmJihmPVVodC5zY2FsZUxpbmVhcigpLmRvbWFpbihbaSxyXSkudGlja3Moa210Lk1vZGlmaWVkTG9nLl9ERUZBVUxUX05VTV9USUNLUykpLGZ9LG4uX2QzU2NhbGU9VWh0LnNjYWxlTGluZWFyKCksbi5fYmFzZT1lLG4uX3Bpdm90PW4uX2Jhc2Usbi5fc2V0RG9tYWluKG4uX2RlZmF1bHRFeHRlbnQoKSksbi50aWNrR2VuZXJhdG9yKG4uX2xvZ1RpY2tHZW5lcmF0b3IpLGU8PTEpdGhyb3cgbmV3IEVycm9yKCJNb2RpZmllZExvZ1NjYWxlOiBUaGUgYmFzZSBtdXN0IGJlID4gMSIpO3JldHVybiBufXJldHVybiBTZnQuX19leHRlbmRzKGUsdCksZS5wcm90b3R5cGUuX2FkanVzdGVkTG9nPWZ1bmN0aW9uKHQpe3ZhciBlPXQ8MD8tMToxO3JldHVybih0Kj1lKTx0aGlzLl9waXZvdCYmKHQrPSh0aGlzLl9waXZvdC10KS90aGlzLl9waXZvdCksKHQ9TWF0aC5sb2codCkvTWF0aC5sb2codGhpcy5fYmFzZSkpKmV9LGUucHJvdG90eXBlLl9pbnZlcnRlZEFkanVzdGVkTG9nPWZ1bmN0aW9uKHQpe3ZhciBlPXQ8MD8tMToxO3JldHVybiB0Kj1lLCh0PU1hdGgucG93KHRoaXMuX2Jhc2UsdCkpPHRoaXMuX3Bpdm90JiYodD10aGlzLl9waXZvdCoodC0xKS8odGhpcy5fcGl2b3QtMSkpLHQqZX0sZS5wcm90b3R5cGUuc2NhbGU9ZnVuY3Rpb24odCl7cmV0dXJuIHRoaXMuX2QzU2NhbGUodGhpcy5fYWRqdXN0ZWRMb2codCkpfSxlLnByb3RvdHlwZS5pbnZlcnQ9ZnVuY3Rpb24odCl7cmV0dXJuIHRoaXMuX2ludmVydGVkQWRqdXN0ZWRMb2codGhpcy5fZDNTY2FsZS5pbnZlcnQodCkpfSxlLnByb3RvdHlwZS5zY2FsZVRyYW5zZm9ybWF0aW9uPWZ1bmN0aW9uKHQpe3JldHVybiB0aGlzLnNjYWxlKHQpfSxlLnByb3RvdHlwZS5pbnZlcnRlZFRyYW5zZm9ybWF0aW9uPWZ1bmN0aW9uKHQpe3JldHVybiB0aGlzLmludmVydCh0KX0sZS5wcm90b3R5cGUuZ2V0VHJhbnNmb3JtYXRpb25FeHRlbnQ9ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5fZ2V0VW5ib3VuZGVkRXh0ZW50KCEwKX0sZS5wcm90b3R5cGUuZ2V0VHJhbnNmb3JtYXRpb25Eb21haW49ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5kb21haW4oKX0sZS5wcm90b3R5cGUuc2V0VHJhbnNmb3JtYXRpb25Eb21haW49ZnVuY3Rpb24odCl7dGhpcy5kb21haW4odCl9LGUucHJvdG90eXBlLl9nZXREb21haW49ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5fdW50cmFuc2Zvcm1lZERvbWFpbn0sZS5wcm90b3R5cGUuX3NldERvbWFpbj1mdW5jdGlvbihlKXt0aGlzLl91bnRyYW5zZm9ybWVkRG9tYWluPWU7dmFyIG49W3RoaXMuX2FkanVzdGVkTG9nKGVbMF0pLHRoaXMuX2FkanVzdGVkTG9nKGVbMV0pXTt0LnByb3RvdHlwZS5fc2V0RG9tYWluLmNhbGwodGhpcyxuKX0sZS5wcm90b3R5cGUuX2JhY2tpbmdTY2FsZURvbWFpbj1mdW5jdGlvbih0KXtyZXR1cm4gbnVsbD09dD90aGlzLl9kM1NjYWxlLmRvbWFpbigpOih0aGlzLl9kM1NjYWxlLmRvbWFpbih0KSx0aGlzKX0sZS5wcm90b3R5cGUuX2xvZ1RpY2tzPWZ1bmN0aW9uKHQsZSl7dmFyIG49dGhpcyxpPXRoaXMuX2hvd01hbnlUaWNrcyh0LGUpO2lmKDA9PT1pKXJldHVybltdO3ZhciByPU1hdGguZmxvb3IoTWF0aC5sb2codCkvTWF0aC5sb2codGhpcy5fYmFzZSkpLG89TWF0aC5jZWlsKE1hdGgubG9nKGUpL01hdGgubG9nKHRoaXMuX2Jhc2UpKSxhPVVodC5yYW5nZShvLHIsLU1hdGguY2VpbCgoby1yKS9pKSkscz1VaHQucmFuZ2UodGhpcy5fYmFzZSwxLC0odGhpcy5fYmFzZS0xKSkubWFwKE1hdGguZmxvb3IpLGw9dW10LkFycmF5LnVuaXEocyksYz1hLm1hcCgoZnVuY3Rpb24odCl7cmV0dXJuIGwubWFwKChmdW5jdGlvbihlKXtyZXR1cm4gTWF0aC5wb3cobi5fYmFzZSx0LTEpKmV9KSl9KSk7cmV0dXJuIHVtdC5BcnJheS5mbGF0dGVuKGMpLmZpbHRlcigoZnVuY3Rpb24obil7cmV0dXJuIHQ8PW4mJm48PWV9KSkuc29ydCgoZnVuY3Rpb24odCxlKXtyZXR1cm4gdC1lfSkpfSxlLnByb3RvdHlwZS5faG93TWFueVRpY2tzPWZ1bmN0aW9uKHQsZSl7dmFyIG49dGhpcy5fYWRqdXN0ZWRMb2codW10Lk1hdGgubWluKHRoaXMuX3VudHJhbnNmb3JtZWREb21haW4sMCkpLGk9dGhpcy5fYWRqdXN0ZWRMb2codW10Lk1hdGgubWF4KHRoaXMuX3VudHJhbnNmb3JtZWREb21haW4sMCkpLHI9dGhpcy5fYWRqdXN0ZWRMb2codCksbz10aGlzLl9hZGp1c3RlZExvZyhlKTtyZXR1cm4gTWF0aC5jZWlsKChvLXIpLyhpLW4pKmttdC5Nb2RpZmllZExvZy5fREVGQVVMVF9OVU1fVElDS1MpfSxlLnByb3RvdHlwZS5fbmljZURvbWFpbj1mdW5jdGlvbih0LGUpe3JldHVybiB0fSxlLnByb3RvdHlwZS5fZGVmYXVsdEV4dGVudD1mdW5jdGlvbigpe3JldHVyblswLHRoaXMuX2Jhc2VdfSxlLnByb3RvdHlwZS5fZXhwYW5kU2luZ2xlVmFsdWVEb21haW49ZnVuY3Rpb24odCl7aWYodFswXT09PXRbMV0pe3ZhciBlPXRbMF07cmV0dXJuIGU+MD9bZS90aGlzLl9iYXNlLGUqdGhpcy5fYmFzZV06MD09PWU/Wy10aGlzLl9iYXNlLHRoaXMuX2Jhc2VdOltlKnRoaXMuX2Jhc2UsZS90aGlzLl9iYXNlXX1yZXR1cm4gdH0sZS5wcm90b3R5cGUuX2dldFJhbmdlPWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuX2QzU2NhbGUucmFuZ2UoKX0sZS5wcm90b3R5cGUuX3NldFJhbmdlPWZ1bmN0aW9uKHQpe3RoaXMuX2QzU2NhbGUucmFuZ2UodCl9LGUucHJvdG90eXBlLmRlZmF1bHRUaWNrcz1mdW5jdGlvbigpe3JldHVybiB0aGlzLl9kM1NjYWxlLnRpY2tzKGttdC5Nb2RpZmllZExvZy5fREVGQVVMVF9OVU1fVElDS1MpfSxlfSkoTW10LlF1YW50aXRhdGl2ZVNjYWxlKTtlLk1vZGlmaWVkTG9nPW59KSksQ210PWJlKChmdW5jdGlvbih0LGUpewovKioKICAgICAqIENvcHlyaWdodCAyMDE0LXByZXNlbnQgUGFsYW50aXIgVGVjaG5vbG9naWVzCiAgICAgKiBAbGljZW5zZSBNSVQKICAgICAqLwpPYmplY3QuZGVmaW5lUHJvcGVydHkoZSwiX19lc01vZHVsZSIse3ZhbHVlOiEwfSk7dmFyIG49KGZ1bmN0aW9uKHQpe2Z1bmN0aW9uIGUoKXt2YXIgZT10LmNhbGwodGhpcyl8fHRoaXM7cmV0dXJuIGUuX2QzU2NhbGU9VWh0LnNjYWxlVGltZSgpLGUuYXV0b0RvbWFpbigpLGV9cmV0dXJuIFNmdC5fX2V4dGVuZHMoZSx0KSxlLnByb3RvdHlwZS50aWNrSW50ZXJ2YWw9ZnVuY3Rpb24odCxuLGkpe3ZvaWQgMD09PW4mJihuPTEpLHZvaWQgMD09PWkmJihpPSExKTt2YXIgcj1VaHQuc2NhbGVUaW1lKCksbz1lLnRpbWVJbnRlcnZhbFRvRDNUaW1lKHQsaSkuZXZlcnkobik7cmV0dXJuIHIuZG9tYWluKHRoaXMuZG9tYWluKCkpLHIucmFuZ2UodGhpcy5yYW5nZSgpKSxyLnRpY2tzKG8pfSxlLnByb3RvdHlwZS5fc2V0RG9tYWluPWZ1bmN0aW9uKGUpe2lmKGVbMV08ZVswXSl0aHJvdyBuZXcgRXJyb3IoIlNjYWxlLlRpbWUgZG9tYWluIHZhbHVlcyBtdXN0IGJlIGluIGNocm9ub2xvZ2ljYWwgb3JkZXIiKTtyZXR1cm4gdC5wcm90b3R5cGUuX3NldERvbWFpbi5jYWxsKHRoaXMsZSl9LGUucHJvdG90eXBlLl9kZWZhdWx0RXh0ZW50PWZ1bmN0aW9uKCl7cmV0dXJuW25ldyBEYXRlKCIxOTcwLTAxLTAxIiksbmV3IERhdGUoIjE5NzAtMDEtMDIiKV19LGUucHJvdG90eXBlLl9leHBhbmRTaW5nbGVWYWx1ZURvbWFpbj1mdW5jdGlvbih0KXt2YXIgZT10WzBdLmdldFRpbWUoKSxuPXRbMV0uZ2V0VGltZSgpO2lmKGU9PT1uKXt2YXIgaT1uZXcgRGF0ZShlKTtpLnNldERhdGUoaS5nZXREYXRlKCktMSk7dmFyIHI9bmV3IERhdGUobik7cmV0dXJuIHIuc2V0RGF0ZShyLmdldERhdGUoKSsxKSxbaSxyXX1yZXR1cm4gdH0sZS5wcm90b3R5cGUuc2NhbGU9ZnVuY3Rpb24odCl7cmV0dXJuIHRoaXMuX2QzU2NhbGUodCl9LGUucHJvdG90eXBlLnNjYWxlVHJhbnNmb3JtYXRpb249ZnVuY3Rpb24odCl7cmV0dXJuIHRoaXMuc2NhbGUobmV3IERhdGUodCkpfSxlLnByb3RvdHlwZS5pbnZlcnRlZFRyYW5zZm9ybWF0aW9uPWZ1bmN0aW9uKHQpe3JldHVybiB0aGlzLmludmVydCh0KS5nZXRUaW1lKCl9LGUucHJvdG90eXBlLmdldFRyYW5zZm9ybWF0aW9uRXh0ZW50PWZ1bmN0aW9uKCl7dmFyIHQ9dGhpcy5fZ2V0VW5ib3VuZGVkRXh0ZW50KCEwKTtyZXR1cm5bdFswXS52YWx1ZU9mKCksdFsxXS52YWx1ZU9mKCldfSxlLnByb3RvdHlwZS5nZXRUcmFuc2Zvcm1hdGlvbkRvbWFpbj1mdW5jdGlvbigpe3ZhciB0PXRoaXMuZG9tYWluKCk7cmV0dXJuW3RbMF0udmFsdWVPZigpLHRbMV0udmFsdWVPZigpXX0sZS5wcm90b3R5cGUuc2V0VHJhbnNmb3JtYXRpb25Eb21haW49ZnVuY3Rpb24odCl7dmFyIGU9dFsxXTt0aGlzLmRvbWFpbihbbmV3IERhdGUodFswXSksbmV3IERhdGUoZSldKX0sZS5wcm90b3R5cGUuX2dldERvbWFpbj1mdW5jdGlvbigpe3JldHVybiB0aGlzLl9iYWNraW5nU2NhbGVEb21haW4oKX0sZS5wcm90b3R5cGUuX2JhY2tpbmdTY2FsZURvbWFpbj1mdW5jdGlvbih0KXtyZXR1cm4gbnVsbD09dD90aGlzLl9kM1NjYWxlLmRvbWFpbigpOih0aGlzLl9kM1NjYWxlLmRvbWFpbih0KSx0aGlzKX0sZS5wcm90b3R5cGUuX2dldFJhbmdlPWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuX2QzU2NhbGUucmFuZ2UoKX0sZS5wcm90b3R5cGUuX3NldFJhbmdlPWZ1bmN0aW9uKHQpe3RoaXMuX2QzU2NhbGUucmFuZ2UodCl9LGUucHJvdG90eXBlLmludmVydD1mdW5jdGlvbih0KXtyZXR1cm4gdGhpcy5fZDNTY2FsZS5pbnZlcnQodCl9LGUucHJvdG90eXBlLmRlZmF1bHRUaWNrcz1mdW5jdGlvbigpe3JldHVybiB0aGlzLl9kM1NjYWxlLnRpY2tzKGUuX0RFRkFVTFRfTlVNX1RJQ0tTKX0sZS5wcm90b3R5cGUuX25pY2VEb21haW49ZnVuY3Rpb24odCl7cmV0dXJuIHRoaXMuX2QzU2NhbGUuY29weSgpLmRvbWFpbih0KS5uaWNlKCkuZG9tYWluKCl9LGUudGltZUludGVydmFsVG9EM1RpbWU9ZnVuY3Rpb24odCxlKXtzd2l0Y2godCl7Y2FzZSBMbXQuVGltZUludGVydmFsLnNlY29uZDpyZXR1cm4gZT9VaHQudXRjU2Vjb25kOlVodC50aW1lU2Vjb25kO2Nhc2UgTG10LlRpbWVJbnRlcnZhbC5taW51dGU6cmV0dXJuIGU/VWh0LnV0Y01pbnV0ZTpVaHQudGltZU1pbnV0ZTtjYXNlIExtdC5UaW1lSW50ZXJ2YWwuaG91cjpyZXR1cm4gZT9VaHQudXRjSG91cjpVaHQudGltZUhvdXI7Y2FzZSBMbXQuVGltZUludGVydmFsLmRheTpyZXR1cm4gZT9VaHQudXRjRGF5OlVodC50aW1lRGF5O2Nhc2UgTG10LlRpbWVJbnRlcnZhbC53ZWVrOnJldHVybiBlP1VodC51dGNXZWVrOlVodC50aW1lV2VlaztjYXNlIExtdC5UaW1lSW50ZXJ2YWwubW9udGg6cmV0dXJuIGU/VWh0LnV0Y01vbnRoOlVodC50aW1lTW9udGg7Y2FzZSBMbXQuVGltZUludGVydmFsLnllYXI6cmV0dXJuIGU/VWh0LnV0Y1llYXI6VWh0LnRpbWVZZWFyO2RlZmF1bHQ6dGhyb3cgRXJyb3IoIlRpbWVJbnRlcnZhbCBzcGVjaWZpZWQgZG9lcyBub3QgZXhpc3Q6ICIrdCl9fSxlfSkoTW10LlF1YW50aXRhdGl2ZVNjYWxlKTtlLlRpbWU9bn0pKSxrbXQ9YmUoKGZ1bmN0aW9uKHQsZSl7Ci8qKgogICAgICogQ29weXJpZ2h0IDIwMTQtcHJlc2VudCBQYWxhbnRpciBUZWNobm9sb2dpZXMKICAgICAqIEBsaWNlbnNlIE1JVAogICAgICovCk9iamVjdC5kZWZpbmVQcm9wZXJ0eShlLCJfX2VzTW9kdWxlIix7dmFsdWU6ITB9KSxlLlRpY2tHZW5lcmF0b3JzPXltdCxTZnQuX19leHBvcnRTdGFyKHhtdCxlKSxTZnQuX19leHBvcnRTdGFyKHdtdCxlKSxTZnQuX19leHBvcnRTdGFyKFNtdCxlKSxTZnQuX19leHBvcnRTdGFyKEVtdCxlKSxTZnQuX19leHBvcnRTdGFyKFRtdCxlKSxTZnQuX19leHBvcnRTdGFyKEFtdCxlKSxTZnQuX19leHBvcnRTdGFyKENtdCxlKTt2YXIgbj14bXQ7ZS5pc1RyYW5zZm9ybWFibGU9ZnVuY3Rpb24gaSh0KXtyZXR1cm4gdCBpbnN0YW5jZW9mIE1tdC5RdWFudGl0YXRpdmVTY2FsZXx8dCBpbnN0YW5jZW9mIG4uQ2F0ZWdvcnl9fSkpLExtdD1iZSgoZnVuY3Rpb24odCxlKXsKLyoqCiAgICAgKiBDb3B5cmlnaHQgMjAxNC1wcmVzZW50IFBhbGFudGlyIFRlY2hub2xvZ2llcwogICAgICogQGxpY2Vuc2UgTUlUCiAgICAgKi8KT2JqZWN0LmRlZmluZVByb3BlcnR5KGUsIl9fZXNNb2R1bGUiLHt2YWx1ZTohMH0pLGUuVGltZUludGVydmFsPXZmdC5tYWtlRW51bShbInNlY29uZCIsIm1pbnV0ZSIsImhvdXIiLCJkYXkiLCJ3ZWVrIiwibW9udGgiLCJ5ZWFyIl0pLGUuVGltZUF4aXNPcmllbnRhdGlvbj12ZnQubWFrZUVudW0oWyJ0b3AiLCJib3R0b20iXSksZS5UaWVyTGFiZWxQb3NpdGlvbj12ZnQubWFrZUVudW0oWyJiZXR3ZWVuIiwiY2VudGVyIl0pO3ZhciBuLGk9KGZ1bmN0aW9uKHQpe2Z1bmN0aW9uIGkoZSxuLHIpe3ZhciBvPXQuY2FsbCh0aGlzLGUsbil8fHRoaXM7cmV0dXJuIG8uX21heFRpbWVJbnRlcnZhbFByZWNpc2lvbj1udWxsLG8uX3RpZXJMYWJlbFBvc2l0aW9ucz1bXSxvLl91c2VVVEM9cixvLmFkZENsYXNzKCJ0aW1lLWF4aXMiKSxvLnRpY2tMYWJlbFBhZGRpbmcoNSksby5heGlzQ29uZmlndXJhdGlvbnMoaS5fREVGQVVMVF9USU1FX0FYSVNfQ09ORklHVVJBVElPTlMoby5fdXNlVVRDKSksby5hbm5vdGF0aW9uRm9ybWF0dGVyKGZtdC50aW1lKCIlYSAlYiAlZCwgJVkiLG8uX3VzZVVUQykpLG99cmV0dXJuIFNmdC5fX2V4dGVuZHMoaSx0KSxpLnByb3RvdHlwZS50aWVyTGFiZWxQb3NpdGlvbnM9ZnVuY3Rpb24odCl7aWYobnVsbD09dClyZXR1cm4gdGhpcy5fdGllckxhYmVsUG9zaXRpb25zO2lmKCF0LmV2ZXJ5KChmdW5jdGlvbih0KXtyZXR1cm4iYmV0d2VlbiI9PT10LnRvTG93ZXJDYXNlKCl8fCJjZW50ZXIiPT09dC50b0xvd2VyQ2FzZSgpfSkpKXRocm93IG5ldyBFcnJvcigiVW5zdXBwb3J0ZWQgcG9zaXRpb24gZm9yIHRpZXIgbGFiZWxzIik7cmV0dXJuIHRoaXMuX3RpZXJMYWJlbFBvc2l0aW9ucz10LHRoaXMucmVkcmF3KCksdGhpc30saS5wcm90b3R5cGUubWF4VGltZUludGVydmFsUHJlY2lzaW9uPWZ1bmN0aW9uKHQpe3JldHVybiBudWxsPT10P3RoaXMuX21heFRpbWVJbnRlcnZhbFByZWNpc2lvbjoodGhpcy5fbWF4VGltZUludGVydmFsUHJlY2lzaW9uPXQsdGhpcy5yZWRyYXcoKSx0aGlzKX0saS5wcm90b3R5cGUuY3VycmVudEF4aXNDb25maWd1cmF0aW9uPWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuX3Bvc3NpYmxlVGltZUF4aXNDb25maWd1cmF0aW9uc1t0aGlzLl9tb3N0UHJlY2lzZUNvbmZpZ0luZGV4XX0saS5wcm90b3R5cGUuYXhpc0NvbmZpZ3VyYXRpb25zPWZ1bmN0aW9uKHQpe2lmKG51bGw9PXQpcmV0dXJuIHRoaXMuX3Bvc3NpYmxlVGltZUF4aXNDb25maWd1cmF0aW9uczt0aGlzLl9wb3NzaWJsZVRpbWVBeGlzQ29uZmlndXJhdGlvbnM9dCx0aGlzLl9udW1UaWVycz11bXQuTWF0aC5tYXgodGhpcy5fcG9zc2libGVUaW1lQXhpc0NvbmZpZ3VyYXRpb25zLm1hcCgoZnVuY3Rpb24odCl7cmV0dXJuIHQubGVuZ3RofSkpLDApLHRoaXMuX2lzQW5jaG9yZWQmJnRoaXMuX3NldHVwRG9tRWxlbWVudHMoKTtmb3IodmFyIGU9dGhpcy50aWVyTGFiZWxQb3NpdGlvbnMoKSxuPVtdLGk9MDtpPHRoaXMuX251bVRpZXJzO2krKyluLnB1c2goZVtpXXx8ImJldHdlZW4iKTtyZXR1cm4gdGhpcy50aWVyTGFiZWxQb3NpdGlvbnMobiksdGhpcy5yZWRyYXcoKSx0aGlzfSxpLnByb3RvdHlwZS5fZ2V0TW9zdFByZWNpc2VDb25maWd1cmF0aW9uSW5kZXg9ZnVuY3Rpb24oKXt2YXIgdD10aGlzLGU9dGhpcy5fcG9zc2libGVUaW1lQXhpc0NvbmZpZ3VyYXRpb25zLmxlbmd0aDtyZXR1cm4gdGhpcy5fcG9zc2libGVUaW1lQXhpc0NvbmZpZ3VyYXRpb25zLmZvckVhY2goKGZ1bmN0aW9uKG4saSl7aTxlJiZuLmV2ZXJ5KChmdW5jdGlvbihlKXtyZXR1cm4gdC5fY2hlY2tUaW1lQXhpc1RpZXJDb25maWd1cmF0aW9uKGUpfSkpJiYoZT1pKX0pKSxlPT09dGhpcy5fcG9zc2libGVUaW1lQXhpc0NvbmZpZ3VyYXRpb25zLmxlbmd0aCYmKHVtdC5XaW5kb3cud2Fybigiem9vbWVkIG91dCB0b28gZmFyOiBjb3VsZCBub3QgZmluZCBzdWl0YWJsZSBpbnRlcnZhbCB0byBkaXNwbGF5IGxhYmVscyIpLC0tZSksZX0saS5wcm90b3R5cGUub3JpZW50YXRpb249ZnVuY3Rpb24oZSl7aWYoZSYmKCJyaWdodCI9PT1lLnRvTG93ZXJDYXNlKCl8fCJsZWZ0Ij09PWUudG9Mb3dlckNhc2UoKSkpdGhyb3cgbmV3IEVycm9yKGUrIiBpcyBub3QgYSBzdXBwb3J0ZWQgb3JpZW50YXRpb24gZm9yIFRpbWVBeGlzIC0gb25seSBob3Jpem9udGFsIG9yaWVudGF0aW9ucyBhcmUgc3VwcG9ydGVkIik7cmV0dXJuIHQucHJvdG90eXBlLm9yaWVudGF0aW9uLmNhbGwodGhpcyxlKX0saS5wcm90b3R5cGUuX2NvbXB1dGVIZWlnaHQ9ZnVuY3Rpb24oKXt2YXIgdD10aGlzLl9tZWFzdXJlci5tZWFzdXJlKCkuaGVpZ2h0O3RoaXMuX3RpZXJIZWlnaHRzPVtdO2Zvcih2YXIgZT0wO2U8dGhpcy5fbnVtVGllcnM7ZSsrKXRoaXMuX3RpZXJIZWlnaHRzLnB1c2godCt0aGlzLnRpY2tMYWJlbFBhZGRpbmcoKSsoImJldHdlZW4iPT09dGhpcy5fdGllckxhYmVsUG9zaXRpb25zW2VdPzA6dGhpcy5fbWF4TGFiZWxUaWNrTGVuZ3RoKCkpKTtyZXR1cm4gVWh0LnN1bSh0aGlzLl90aWVySGVpZ2h0cyl9LGkucHJvdG90eXBlLl9nZXRJbnRlcnZhbExlbmd0aD1mdW5jdGlvbih0KXt2YXIgZT10aGlzLl9zY2FsZS5kb21haW4oKVswXSxuPWttdC5UaW1lLnRpbWVJbnRlcnZhbFRvRDNUaW1lKHQuaW50ZXJ2YWwsdGhpcy5fdXNlVVRDKS5vZmZzZXQoZSx0LnN0ZXApO3JldHVybiBuPnRoaXMuX3NjYWxlLmRvbWFpbigpWzFdP3RoaXMud2lkdGgoKTpNYXRoLmFicyh0aGlzLl9zY2FsZS5zY2FsZShuKS10aGlzLl9zY2FsZS5zY2FsZShlKSl9LGkucHJvdG90eXBlLl9tYXhXaWR0aEZvckludGVydmFsPWZ1bmN0aW9uKHQpe3JldHVybiB0aGlzLl9tZWFzdXJlci5tZWFzdXJlKHQuZm9ybWF0dGVyKGkuX0xPTkdfREFURSkpLndpZHRofSxpLnByb3RvdHlwZS5fY2hlY2tUaW1lQXhpc1RpZXJDb25maWd1cmF0aW9uPWZ1bmN0aW9uKHQpe2lmKG51bGwhPXRoaXMuX21heFRpbWVJbnRlcnZhbFByZWNpc2lvbil7dmFyIGU9aS5fU09SVEVEX1RJTUVfSU5URVJWQUxfSU5ERVhbdGhpcy5fbWF4VGltZUludGVydmFsUHJlY2lzaW9uXSxuPWkuX1NPUlRFRF9USU1FX0lOVEVSVkFMX0lOREVYW3QuaW50ZXJ2YWxdO2lmKG51bGwhPWUmJm51bGwhPW4mJm48ZSlyZXR1cm4hMX12YXIgcj10aGlzLl9tYXhXaWR0aEZvckludGVydmFsKHQpKzIqdGhpcy50aWNrTGFiZWxQYWRkaW5nKCk7cmV0dXJuIE1hdGgubWluKHRoaXMuX2dldEludGVydmFsTGVuZ3RoKHQpLHRoaXMud2lkdGgoKSk+PXJ9LGkucHJvdG90eXBlLl9zaXplRnJvbU9mZmVyPWZ1bmN0aW9uKGUsbil7dmFyIGk9dC5wcm90b3R5cGUuX3NpemVGcm9tT2ZmZXIuY2FsbCh0aGlzLGUsbikscj10aGlzLl90aWVySGVpZ2h0cy5yZWR1Y2UoKGZ1bmN0aW9uKHQsZSxuLHIpe3JldHVybiB0K2U+aS5oZWlnaHQ/dDp0K2V9KSksbz10aGlzLm1hcmdpbigpKyh0aGlzLmFubm90YXRpb25zRW5hYmxlZCgpP3RoaXMuYW5ub3RhdGlvblRpZXJDb3VudCgpKnRoaXMuX2Fubm90YXRpb25UaWVySGVpZ2h0KCk6MCk7cmV0dXJuIGkuaGVpZ2h0PU1hdGgubWluKGkuaGVpZ2h0LHIrbyksaX0saS5wcm90b3R5cGUuX3NldHVwPWZ1bmN0aW9uKCl7dC5wcm90b3R5cGUuX3NldHVwLmNhbGwodGhpcyksdGhpcy5fc2V0dXBEb21FbGVtZW50cygpfSxpLnByb3RvdHlwZS5fc2V0dXBEb21FbGVtZW50cz1mdW5jdGlvbigpe3RoaXMuY29udGVudCgpLnNlbGVjdEFsbCgiLiIraS5USU1FX0FYSVNfVElFUl9DTEFTUykucmVtb3ZlKCksdGhpcy5fdGllckxhYmVsQ29udGFpbmVycz1bXSx0aGlzLl90aWVyTWFya0NvbnRhaW5lcnM9W10sdGhpcy5fdGllckJhc2VsaW5lcz1bXSx0aGlzLl90aWNrTGFiZWxDb250YWluZXIucmVtb3ZlKCksdGhpcy5fYmFzZWxpbmUucmVtb3ZlKCk7Zm9yKHZhciB0PTA7dDx0aGlzLl9udW1UaWVyczsrK3Qpe3ZhciBlPXRoaXMuY29udGVudCgpLmFwcGVuZCgiZyIpLmNsYXNzZWQoaS5USU1FX0FYSVNfVElFUl9DTEFTUywhMCk7dGhpcy5fdGllckxhYmVsQ29udGFpbmVycy5wdXNoKGUuYXBwZW5kKCJnIikuY2xhc3NlZChtbXQuQXhpcy5USUNLX0xBQkVMX0NMQVNTKyItY29udGFpbmVyIiwhMCkpLHRoaXMuX3RpZXJNYXJrQ29udGFpbmVycy5wdXNoKGUuYXBwZW5kKCJnIikuY2xhc3NlZChtbXQuQXhpcy5USUNLX01BUktfQ0xBU1MrIi1jb250YWluZXIiLCEwKSksdGhpcy5fdGllckJhc2VsaW5lcy5wdXNoKGUuYXBwZW5kKCJsaW5lIikuY2xhc3NlZCgiYmFzZWxpbmUiLCEwKSl9dmFyIG49bmV3IHFmdC5TdmdDb250ZXh0KHRoaXMuX3RpZXJMYWJlbENvbnRhaW5lcnNbMF0ubm9kZSgpKTt0aGlzLl9tZWFzdXJlcj1uZXcgcWZ0LkNhY2hlTWVhc3VyZXIobil9LGkucHJvdG90eXBlLl9nZXRUaWNrSW50ZXJ2YWxWYWx1ZXM9ZnVuY3Rpb24odCl7cmV0dXJuIHRoaXMuX3NjYWxlLnRpY2tJbnRlcnZhbCh0LmludGVydmFsLHQuc3RlcCx0aGlzLl91c2VVVEMpfSxpLnByb3RvdHlwZS5fZ2V0VGlja1ZhbHVlcz1mdW5jdGlvbigpe3ZhciB0PXRoaXM7cmV0dXJuIHRoaXMuX3Bvc3NpYmxlVGltZUF4aXNDb25maWd1cmF0aW9uc1t0aGlzLl9tb3N0UHJlY2lzZUNvbmZpZ0luZGV4XS5yZWR1Y2UoKGZ1bmN0aW9uKGUsbil7cmV0dXJuIGUuY29uY2F0KHQuX2dldFRpY2tJbnRlcnZhbFZhbHVlcyhuKSl9KSxbXSl9LGkucHJvdG90eXBlLl9jbGVhblRpZXJzPWZ1bmN0aW9uKCl7Zm9yKHZhciB0PTA7dDx0aGlzLl90aWVyTGFiZWxDb250YWluZXJzLmxlbmd0aDt0KyspdGhpcy5fdGllckxhYmVsQ29udGFpbmVyc1t0XS5zZWxlY3RBbGwoIi4iK21tdC5BeGlzLlRJQ0tfTEFCRUxfQ0xBU1MpLnJlbW92ZSgpLHRoaXMuX3RpZXJNYXJrQ29udGFpbmVyc1t0XS5zZWxlY3RBbGwoIi4iK21tdC5BeGlzLlRJQ0tfTUFSS19DTEFTUykucmVtb3ZlKCksdGhpcy5fdGllckJhc2VsaW5lc1t0XS5zdHlsZSgidmlzaWJpbGl0eSIsImhpZGRlbiIpfSxpLnByb3RvdHlwZS5fZ2V0VGlja1ZhbHVlc0ZvckNvbmZpZ3VyYXRpb249ZnVuY3Rpb24odCl7dmFyIGU9dGhpcy5fc2NhbGUudGlja0ludGVydmFsKHQuaW50ZXJ2YWwsdC5zdGVwLHRoaXMuX3VzZVVUQyksbj10aGlzLl9zY2FsZS5kb21haW4oKSxpPWUubWFwKChmdW5jdGlvbih0KXtyZXR1cm4gdC52YWx1ZU9mKCl9KSk7cmV0dXJuLTE9PT1pLmluZGV4T2YoblswXS52YWx1ZU9mKCkpJiZlLnVuc2hpZnQoblswXSksLTE9PT1pLmluZGV4T2YoblsxXS52YWx1ZU9mKCkpJiZlLnB1c2goblsxXSksZX0saS5wcm90b3R5cGUuX3JlbmRlclRpZXJMYWJlbHM9ZnVuY3Rpb24odCxlLG4pe3ZhciBpPXRoaXMscj10aGlzLl9nZXRUaWNrVmFsdWVzRm9yQ29uZmlndXJhdGlvbihlKSxvPVtdOyJiZXR3ZWVuIj09PXRoaXMuX3RpZXJMYWJlbFBvc2l0aW9uc1tuXSYmMT09PWUuc3RlcD9yLm1hcCgoZnVuY3Rpb24odCxlKXtlKzE+PXIubGVuZ3RofHxvLnB1c2gobmV3IERhdGUoKHJbZSsxXS52YWx1ZU9mKCktcltlXS52YWx1ZU9mKCkpLzIrcltlXS52YWx1ZU9mKCkpKX0pKTpvPXI7dmFyIGE9dC5zZWxlY3RBbGwoIi4iK21tdC5BeGlzLlRJQ0tfTEFCRUxfQ0xBU1MpLmRhdGEobywoZnVuY3Rpb24odCl7cmV0dXJuIFN0cmluZyh0LnZhbHVlT2YoKSl9KSkscz1hLmVudGVyKCkuYXBwZW5kKCJnIikuY2xhc3NlZChtbXQuQXhpcy5USUNLX0xBQkVMX0NMQVNTLCEwKTtzLmFwcGVuZCgidGV4dCIpO3ZhciBsLGM9ImNlbnRlciI9PT10aGlzLl90aWVyTGFiZWxQb3NpdGlvbnNbbl18fDE9PT1lLnN0ZXA/MDp0aGlzLnRpY2tMYWJlbFBhZGRpbmcoKTtsPSJib3R0b20iPT09dGhpcy5vcmllbnRhdGlvbigpP1VodC5zdW0odGhpcy5fdGllckhlaWdodHMuc2xpY2UoMCxuKzEpKS10aGlzLnRpY2tMYWJlbFBhZGRpbmcoKToiY2VudGVyIj09PXRoaXMuX3RpZXJMYWJlbFBvc2l0aW9uc1tuXT90aGlzLmhlaWdodCgpLVVodC5zdW0odGhpcy5fdGllckhlaWdodHMuc2xpY2UoMCxuKSktdGhpcy50aWNrTGFiZWxQYWRkaW5nKCktdGhpcy5fbWF4TGFiZWxUaWNrTGVuZ3RoKCk6dGhpcy5oZWlnaHQoKS1VaHQuc3VtKHRoaXMuX3RpZXJIZWlnaHRzLnNsaWNlKDAsbikpLXRoaXMudGlja0xhYmVsUGFkZGluZygpO3ZhciB1PWEubWVyZ2UocyksaD11LnNlbGVjdEFsbCgidGV4dCIpO2guc2l6ZSgpPjAmJmguYXR0cigidHJhbnNmb3JtIiwidHJhbnNsYXRlKCIrYysiLCIrbCsiKSIpLGEuZXhpdCgpLnJlbW92ZSgpLHUuYXR0cigidHJhbnNmb3JtIiwoZnVuY3Rpb24odCl7cmV0dXJuInRyYW5zbGF0ZSgiK2kuX3NjYWxlLnNjYWxlKHQpKyIsMCkifSkpO3ZhciBkPSJjZW50ZXIiPT09dGhpcy5fdGllckxhYmVsUG9zaXRpb25zW25dfHwxPT09ZS5zdGVwPyJtaWRkbGUiOiJzdGFydCI7dS5zZWxlY3RBbGwoInRleHQiKS50ZXh0KGUuZm9ybWF0dGVyKS5zdHlsZSgidGV4dC1hbmNob3IiLGQpfSxpLnByb3RvdHlwZS5fcmVuZGVyVGlja01hcmtzPWZ1bmN0aW9uKHQsZSl7dmFyIG49dGhpcy5fdGllck1hcmtDb250YWluZXJzW2VdLnNlbGVjdEFsbCgiLiIrbW10LkF4aXMuVElDS19NQVJLX0NMQVNTKS5kYXRhKHQpLGk9bi5lbnRlcigpLmFwcGVuZCgibGluZSIpLmNsYXNzZWQobW10LkF4aXMuVElDS19NQVJLX0NMQVNTLCEwKS5tZXJnZShuKSxyPXRoaXMuX2dlbmVyYXRlVGlja01hcmtBdHRySGFzaCgpLG89dGhpcy5fdGllckhlaWdodHMuc2xpY2UoMCxlKS5yZWR1Y2UoKGZ1bmN0aW9uKHQsZSl7cmV0dXJuIHQrZX0pLDApOyJib3R0b20iPT09dGhpcy5vcmllbnRhdGlvbigpPyhyLnkxPW8sci55Mj1vKygiY2VudGVyIj09PXRoaXMuX3RpZXJMYWJlbFBvc2l0aW9uc1tlXT90aGlzLmlubmVyVGlja0xlbmd0aCgpOnRoaXMuX3RpZXJIZWlnaHRzW2VdKSk6KHIueTE9dGhpcy5oZWlnaHQoKS1vLHIueTI9dGhpcy5oZWlnaHQoKS0obysoImNlbnRlciI9PT10aGlzLl90aWVyTGFiZWxQb3NpdGlvbnNbZV0/dGhpcy5pbm5lclRpY2tMZW5ndGgoKTp0aGlzLl90aWVySGVpZ2h0c1tlXSkpKSxpLmF0dHJzKHIpLCJib3R0b20iPT09dGhpcy5vcmllbnRhdGlvbigpPyhyLnkxPW8sci55Mj1vKygiY2VudGVyIj09PXRoaXMuX3RpZXJMYWJlbFBvc2l0aW9uc1tlXT90aGlzLmVuZFRpY2tMZW5ndGgoKTp0aGlzLl90aWVySGVpZ2h0c1tlXSkpOihyLnkxPXRoaXMuaGVpZ2h0KCktbyxyLnkyPXRoaXMuaGVpZ2h0KCktKG8rKCJjZW50ZXIiPT09dGhpcy5fdGllckxhYmVsUG9zaXRpb25zW2VdP3RoaXMuZW5kVGlja0xlbmd0aCgpOnRoaXMuX3RpZXJIZWlnaHRzW2VdKSkpLFVodC5zZWxlY3QoaS5ub2RlcygpWzBdKS5hdHRycyhyKSxVaHQuc2VsZWN0KGkubm9kZXMoKVtpLnNpemUoKS0xXSkuYXR0cnMociksVWh0LnNlbGVjdChpLm5vZGVzKClbMF0pLmNsYXNzZWQobW10LkF4aXMuRU5EX1RJQ0tfTUFSS19DTEFTUywhMCksVWh0LnNlbGVjdChpLm5vZGVzKClbaS5zaXplKCktMV0pLmNsYXNzZWQobW10LkF4aXMuRU5EX1RJQ0tfTUFSS19DTEFTUywhMCksbi5leGl0KCkucmVtb3ZlKCl9LGkucHJvdG90eXBlLl9yZW5kZXJMYWJlbGxlc3NUaWNrTWFya3M9ZnVuY3Rpb24odCl7dmFyIGU9dGhpcy5fdGlja01hcmtDb250YWluZXIuc2VsZWN0QWxsKCIuIittbXQuQXhpcy5USUNLX01BUktfQ0xBU1MpLmRhdGEodCksbj1lLmVudGVyKCkuYXBwZW5kKCJsaW5lIikuY2xhc3NlZChtbXQuQXhpcy5USUNLX01BUktfQ0xBU1MsITApLm1lcmdlKGUpLGk9dGhpcy5fZ2VuZXJhdGVUaWNrTWFya0F0dHJIYXNoKCk7aS55Mj0iYm90dG9tIj09PXRoaXMub3JpZW50YXRpb24oKT90aGlzLnRpY2tMYWJlbFBhZGRpbmcoKTp0aGlzLmhlaWdodCgpLXRoaXMudGlja0xhYmVsUGFkZGluZygpLG4uYXR0cnMoaSksZS5leGl0KCkucmVtb3ZlKCl9LGkucHJvdG90eXBlLl9nZW5lcmF0ZUxhYmVsbGVzc1RpY2tzPWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuX21vc3RQcmVjaXNlQ29uZmlnSW5kZXg8MT9bXTp0aGlzLl9nZXRUaWNrSW50ZXJ2YWxWYWx1ZXModGhpcy5fcG9zc2libGVUaW1lQXhpc0NvbmZpZ3VyYXRpb25zW3RoaXMuX21vc3RQcmVjaXNlQ29uZmlnSW5kZXgtMV1bMF0pfSxpLnByb3RvdHlwZS5yZW5kZXJJbW1lZGlhdGVseT1mdW5jdGlvbigpe3ZhciB0PXRoaXM7dGhpcy5fbW9zdFByZWNpc2VDb25maWdJbmRleD10aGlzLl9nZXRNb3N0UHJlY2lzZUNvbmZpZ3VyYXRpb25JbmRleCgpO3ZhciBlPXRoaXMuX3Bvc3NpYmxlVGltZUF4aXNDb25maWd1cmF0aW9uc1t0aGlzLl9tb3N0UHJlY2lzZUNvbmZpZ0luZGV4XTt0aGlzLl9jbGVhblRpZXJzKCksZS5mb3JFYWNoKChmdW5jdGlvbihlLG4pe3JldHVybiB0Ll9yZW5kZXJUaWVyTGFiZWxzKHQuX3RpZXJMYWJlbENvbnRhaW5lcnNbbl0sZSxuKX0pKTtmb3IodmFyIG49ZS5tYXAoKGZ1bmN0aW9uKGUsbil7cmV0dXJuIHQuX2dldFRpY2tWYWx1ZXNGb3JDb25maWd1cmF0aW9uKGUpfSkpLGk9MCxyPTA7cjxNYXRoLm1heChlLmxlbmd0aCwxKTsrK3Ipe3ZhciBvPXRoaXMuX2dlbmVyYXRlQmFzZWxpbmVBdHRySGFzaCgpO28ueTErPSJib3R0b20iPT09dGhpcy5vcmllbnRhdGlvbigpP2k6LWksby55Mj1vLnkxLHRoaXMuX3RpZXJCYXNlbGluZXNbcl0uYXR0cnMobykuc3R5bGUoInZpc2liaWxpdHkiLCJpbmhlcml0IiksaSs9dGhpcy5fdGllckhlaWdodHNbcl19dmFyIGE9W10scz10aGlzLl9zY2FsZS5kb21haW4oKSxsPXRoaXMuX3NjYWxlLnNjYWxlKHNbMV0pLXRoaXMuX3NjYWxlLnNjYWxlKHNbMF0pO2ZvcigxLjUqdGhpcy5fZ2V0SW50ZXJ2YWxMZW5ndGgoZVswXSk+PWwmJihhPXRoaXMuX2dlbmVyYXRlTGFiZWxsZXNzVGlja3MoKSksdGhpcy5fcmVuZGVyTGFiZWxsZXNzVGlja01hcmtzKGEpLHRoaXMuX2hpZGVPdmVyZmxvd2luZ1RpZXJzKCkscj0wO3I8ZS5sZW5ndGg7KytyKXRoaXMuX3JlbmRlclRpY2tNYXJrcyhuW3JdLHIpLHRoaXMuX2hpZGVPdmVybGFwcGluZ0FuZEN1dE9mZkxhYmVscyhyKTtyZXR1cm4gdGhpcy5hbm5vdGF0aW9uc0VuYWJsZWQoKT90aGlzLl9kcmF3QW5ub3RhdGlvbnMoKTp0aGlzLl9yZW1vdmVBbm5vdGF0aW9ucygpLHRoaXN9LGkucHJvdG90eXBlLl9oaWRlT3ZlcmZsb3dpbmdUaWVycz1mdW5jdGlvbigpe3ZhciB0PXRoaXMsZT10aGlzLmhlaWdodCgpLG49MDt0aGlzLmNvbnRlbnQoKS5zZWxlY3RBbGwoIi4iK2kuVElNRV9BWElTX1RJRVJfQ0xBU1MpLmF0dHIoInZpc2liaWxpdHkiLChmdW5jdGlvbihpLHIpe3JldHVybihuKz10Ll90aWVySGVpZ2h0c1tyXSk8PWU/ImluaGVyaXQiOiJoaWRkZW4ifSkpfSxpLnByb3RvdHlwZS5faGlkZU92ZXJsYXBwaW5nQW5kQ3V0T2ZmTGFiZWxzPWZ1bmN0aW9uKHQpe3ZhciBlLG49dGhpcyxpPXRoaXMuZWxlbWVudCgpLm5vZGUoKS5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKSxyPXRoaXMuX3RpZXJNYXJrQ29udGFpbmVyc1t0XS5zZWxlY3RBbGwoIi4iK21tdC5BeGlzLlRJQ0tfTUFSS19DTEFTUykuZmlsdGVyKChmdW5jdGlvbih0LGUpe3ZhciBuPVVodC5zZWxlY3QodGhpcykuc3R5bGUoInZpc2liaWxpdHkiKTtyZXR1cm4idmlzaWJsZSI9PT1ufHwiaW5oZXJpdCI9PT1ufSkpLm5vZGVzKCkubWFwKChmdW5jdGlvbih0KXtyZXR1cm4gdC5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKX0pKTt0aGlzLl90aWVyTGFiZWxDb250YWluZXJzW3RdLnNlbGVjdEFsbCgiLiIrbW10LkF4aXMuVElDS19MQUJFTF9DTEFTUykuZmlsdGVyKChmdW5jdGlvbih0LGUpe3ZhciBuPVVodC5zZWxlY3QodGhpcykuc3R5bGUoInZpc2liaWxpdHkiKTtyZXR1cm4idmlzaWJsZSI9PT1ufHwiaW5oZXJpdCI9PT1ufSkpLmVhY2goKGZ1bmN0aW9uKHQsbyl7dmFyIGEscz10aGlzLmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpLGw9VWh0LnNlbGVjdCh0aGlzKSxjPXJbb10sdT1yW28rMV0saD1udWxsIT1lJiZ1bXQuRE9NLmNsaWVudFJlY3RzT3ZlcmxhcChzLGUpLGQ9bnVsbCE9YyYmdW10LkRPTS5jbGllbnRSZWN0c092ZXJsYXAocyxjKSxwPW51bGwhPXUmJnVtdC5ET00uY2xpZW50UmVjdHNPdmVybGFwKHMsdSk7YT1zLCEoTWF0aC5mbG9vcihpLmxlZnQpPD1NYXRoLmNlaWwoYS5sZWZ0KSYmTWF0aC5mbG9vcihpLnRvcCk8PU1hdGguY2VpbChhLnRvcCkmJk1hdGguZmxvb3IoYS5yaWdodCk8PU1hdGguY2VpbChpLmxlZnQrbi53aWR0aCgpKSYmTWF0aC5mbG9vcihhLmJvdHRvbSk8PU1hdGguY2VpbChpLnRvcCtuLmhlaWdodCgpKSl8fGh8fGR8fHA/bC5zdHlsZSgidmlzaWJpbGl0eSIsImhpZGRlbiIpOihlPXMsbC5zdHlsZSgidmlzaWJpbGl0eSIsImluaGVyaXQiKSl9KSl9LGkucHJvdG90eXBlLmludmFsaWRhdGVDYWNoZT1mdW5jdGlvbigpe3QucHJvdG90eXBlLmludmFsaWRhdGVDYWNoZS5jYWxsKHRoaXMpLHRoaXMuX21lYXN1cmVyLnJlc2V0KCl9LGkuVElNRV9BWElTX1RJRVJfQ0xBU1M9InRpbWUtYXhpcy10aWVyIixpLl9TT1JURURfVElNRV9JTlRFUlZBTF9JTkRFWD0oKG49e30pW2UuVGltZUludGVydmFsLnNlY29uZF09MCxuW2UuVGltZUludGVydmFsLm1pbnV0ZV09MSxuW2UuVGltZUludGVydmFsLmhvdXJdPTIsbltlLlRpbWVJbnRlcnZhbC5kYXldPTMsbltlLlRpbWVJbnRlcnZhbC53ZWVrXT00LG5bZS5UaW1lSW50ZXJ2YWwubW9udGhdPTUsbltlLlRpbWVJbnRlcnZhbC55ZWFyXT02LG4pLGkuX0RFRkFVTFRfVElNRV9BWElTX0NPTkZJR1VSQVRJT05TPWZ1bmN0aW9uKHQpe3ZhciBuPWZ1bmN0aW9uKGUpe3JldHVybiBmbXQudGltZShlLHQpfTtyZXR1cm5bW3tpbnRlcnZhbDplLlRpbWVJbnRlcnZhbC5zZWNvbmQsc3RlcDoxLGZvcm1hdHRlcjpuKCIlSTolTTolUyAlcCIpfSx7aW50ZXJ2YWw6ZS5UaW1lSW50ZXJ2YWwuZGF5LHN0ZXA6MSxmb3JtYXR0ZXI6bigiJUIgJWUsICVZIil9XSxbe2ludGVydmFsOmUuVGltZUludGVydmFsLnNlY29uZCxzdGVwOjUsZm9ybWF0dGVyOm4oIiVJOiVNOiVTICVwIil9LHtpbnRlcnZhbDplLlRpbWVJbnRlcnZhbC5kYXksc3RlcDoxLGZvcm1hdHRlcjpuKCIlQiAlZSwgJVkiKX1dLFt7aW50ZXJ2YWw6ZS5UaW1lSW50ZXJ2YWwuc2Vjb25kLHN0ZXA6MTAsZm9ybWF0dGVyOm4oIiVJOiVNOiVTICVwIil9LHtpbnRlcnZhbDplLlRpbWVJbnRlcnZhbC5kYXksc3RlcDoxLGZvcm1hdHRlcjpuKCIlQiAlZSwgJVkiKX1dLFt7aW50ZXJ2YWw6ZS5UaW1lSW50ZXJ2YWwuc2Vjb25kLHN0ZXA6MTUsZm9ybWF0dGVyOm4oIiVJOiVNOiVTICVwIil9LHtpbnRlcnZhbDplLlRpbWVJbnRlcnZhbC5kYXksc3RlcDoxLGZvcm1hdHRlcjpuKCIlQiAlZSwgJVkiKX1dLFt7aW50ZXJ2YWw6ZS5UaW1lSW50ZXJ2YWwuc2Vjb25kLHN0ZXA6MzAsZm9ybWF0dGVyOm4oIiVJOiVNOiVTICVwIil9LHtpbnRlcnZhbDplLlRpbWVJbnRlcnZhbC5kYXksc3RlcDoxLGZvcm1hdHRlcjpuKCIlQiAlZSwgJVkiKX1dLFt7aW50ZXJ2YWw6ZS5UaW1lSW50ZXJ2YWwubWludXRlLHN0ZXA6MSxmb3JtYXR0ZXI6bigiJUk6JU0gJXAiKX0se2ludGVydmFsOmUuVGltZUludGVydmFsLmRheSxzdGVwOjEsZm9ybWF0dGVyOm4oIiVCICVlLCAlWSIpfV0sW3tpbnRlcnZhbDplLlRpbWVJbnRlcnZhbC5taW51dGUsc3RlcDo1LGZvcm1hdHRlcjpuKCIlSTolTSAlcCIpfSx7aW50ZXJ2YWw6ZS5UaW1lSW50ZXJ2YWwuZGF5LHN0ZXA6MSxmb3JtYXR0ZXI6bigiJUIgJWUsICVZIil9XSxbe2ludGVydmFsOmUuVGltZUludGVydmFsLm1pbnV0ZSxzdGVwOjEwLGZvcm1hdHRlcjpuKCIlSTolTSAlcCIpfSx7aW50ZXJ2YWw6ZS5UaW1lSW50ZXJ2YWwuZGF5LHN0ZXA6MSxmb3JtYXR0ZXI6bigiJUIgJWUsICVZIil9XSxbe2ludGVydmFsOmUuVGltZUludGVydmFsLm1pbnV0ZSxzdGVwOjE1LGZvcm1hdHRlcjpuKCIlSTolTSAlcCIpfSx7aW50ZXJ2YWw6ZS5UaW1lSW50ZXJ2YWwuZGF5LHN0ZXA6MSxmb3JtYXR0ZXI6bigiJUIgJWUsICVZIil9XSxbe2ludGVydmFsOmUuVGltZUludGVydmFsLm1pbnV0ZSxzdGVwOjMwLGZvcm1hdHRlcjpuKCIlSTolTSAlcCIpfSx7aW50ZXJ2YWw6ZS5UaW1lSW50ZXJ2YWwuZGF5LHN0ZXA6MSxmb3JtYXR0ZXI6bigiJUIgJWUsICVZIil9XSxbe2ludGVydmFsOmUuVGltZUludGVydmFsLmhvdXIsc3RlcDoxLGZvcm1hdHRlcjpuKCIlSSAlcCIpfSx7aW50ZXJ2YWw6ZS5UaW1lSW50ZXJ2YWwuZGF5LHN0ZXA6MSxmb3JtYXR0ZXI6bigiJUIgJWUsICVZIil9XSxbe2ludGVydmFsOmUuVGltZUludGVydmFsLmhvdXIsc3RlcDozLGZvcm1hdHRlcjpuKCIlSSAlcCIpfSx7aW50ZXJ2YWw6ZS5UaW1lSW50ZXJ2YWwuZGF5LHN0ZXA6MSxmb3JtYXR0ZXI6bigiJUIgJWUsICVZIil9XSxbe2ludGVydmFsOmUuVGltZUludGVydmFsLmhvdXIsc3RlcDo2LGZvcm1hdHRlcjpuKCIlSSAlcCIpfSx7aW50ZXJ2YWw6ZS5UaW1lSW50ZXJ2YWwuZGF5LHN0ZXA6MSxmb3JtYXR0ZXI6bigiJUIgJWUsICVZIil9XSxbe2ludGVydmFsOmUuVGltZUludGVydmFsLmhvdXIsc3RlcDoxMixmb3JtYXR0ZXI6bigiJUkgJXAiKX0se2ludGVydmFsOmUuVGltZUludGVydmFsLmRheSxzdGVwOjEsZm9ybWF0dGVyOm4oIiVCICVlLCAlWSIpfV0sW3tpbnRlcnZhbDplLlRpbWVJbnRlcnZhbC5kYXksc3RlcDoxLGZvcm1hdHRlcjpuKCIlYSAlZSIpfSx7aW50ZXJ2YWw6ZS5UaW1lSW50ZXJ2YWwubW9udGgsc3RlcDoxLGZvcm1hdHRlcjpuKCIlQiAlWSIpfV0sW3tpbnRlcnZhbDplLlRpbWVJbnRlcnZhbC5kYXksc3RlcDoxLGZvcm1hdHRlcjpuKCIlZSIpfSx7aW50ZXJ2YWw6ZS5UaW1lSW50ZXJ2YWwubW9udGgsc3RlcDoxLGZvcm1hdHRlcjpuKCIlQiAlWSIpfV0sW3tpbnRlcnZhbDplLlRpbWVJbnRlcnZhbC5tb250aCxzdGVwOjEsZm9ybWF0dGVyOm4oIiVCIil9LHtpbnRlcnZhbDplLlRpbWVJbnRlcnZhbC55ZWFyLHN0ZXA6MSxmb3JtYXR0ZXI6bigiJVkiKX1dLFt7aW50ZXJ2YWw6ZS5UaW1lSW50ZXJ2YWwubW9udGgsc3RlcDoxLGZvcm1hdHRlcjpuKCIlYiIpfSx7aW50ZXJ2YWw6ZS5UaW1lSW50ZXJ2YWwueWVhcixzdGVwOjEsZm9ybWF0dGVyOm4oIiVZIil9XSxbe2ludGVydmFsOmUuVGltZUludGVydmFsLm1vbnRoLHN0ZXA6Myxmb3JtYXR0ZXI6bigiJWIiKX0se2ludGVydmFsOmUuVGltZUludGVydmFsLnllYXIsc3RlcDoxLGZvcm1hdHRlcjpuKCIlWSIpfV0sW3tpbnRlcnZhbDplLlRpbWVJbnRlcnZhbC5tb250aCxzdGVwOjYsZm9ybWF0dGVyOm4oIiViIil9LHtpbnRlcnZhbDplLlRpbWVJbnRlcnZhbC55ZWFyLHN0ZXA6MSxmb3JtYXR0ZXI6bigiJVkiKX1dLFt7aW50ZXJ2YWw6ZS5UaW1lSW50ZXJ2YWwueWVhcixzdGVwOjEsZm9ybWF0dGVyOm4oIiVZIil9XSxbe2ludGVydmFsOmUuVGltZUludGVydmFsLnllYXIsc3RlcDoxLGZvcm1hdHRlcjpuKCIleSIpfV0sW3tpbnRlcnZhbDplLlRpbWVJbnRlcnZhbC55ZWFyLHN0ZXA6NSxmb3JtYXR0ZXI6bigiJVkiKX1dLFt7aW50ZXJ2YWw6ZS5UaW1lSW50ZXJ2YWwueWVhcixzdGVwOjI1LGZvcm1hdHRlcjpuKCIlWSIpfV0sW3tpbnRlcnZhbDplLlRpbWVJbnRlcnZhbC55ZWFyLHN0ZXA6NTAsZm9ybWF0dGVyOm4oIiVZIil9XSxbe2ludGVydmFsOmUuVGltZUludGVydmFsLnllYXIsc3RlcDoxMDAsZm9ybWF0dGVyOm4oIiVZIil9XSxbe2ludGVydmFsOmUuVGltZUludGVydmFsLnllYXIsc3RlcDoyMDAsZm9ybWF0dGVyOm4oIiVZIil9XSxbe2ludGVydmFsOmUuVGltZUludGVydmFsLnllYXIsc3RlcDo1MDAsZm9ybWF0dGVyOm4oIiVZIil9XSxbe2ludGVydmFsOmUuVGltZUludGVydmFsLnllYXIsc3RlcDoxZTMsZm9ybWF0dGVyOm4oIiVZIil9XV19LGkuX0xPTkdfREFURT1uZXcgRGF0ZSg5OTk5LDgsMjksMTIsNTksOTk5OSksaX0pKG1tdC5BeGlzKTtlLlRpbWU9aX0pKSxQbXQ9YmUoKGZ1bmN0aW9uKHQsZSl7Ci8qKgogICAgICogQ29weXJpZ2h0IDIwMTQtcHJlc2VudCBQYWxhbnRpciBUZWNobm9sb2dpZXMKICAgICAqIEBsaWNlbnNlIE1JVAogICAgICovCk9iamVjdC5kZWZpbmVQcm9wZXJ0eShlLCJfX2VzTW9kdWxlIix7dmFsdWU6ITB9KSxTZnQuX19leHBvcnRTdGFyKGdtdCxlKSxTZnQuX19leHBvcnRTdGFyKF9tdCxlKSxTZnQuX19leHBvcnRTdGFyKExtdCxlKX0pKSxJbXQ9YmUoKGZ1bmN0aW9uKHQsZSl7Ci8qKgogICAgICogQ29weXJpZ2h0IDIwMTQtcHJlc2VudCBQYWxhbnRpciBUZWNobm9sb2dpZXMKICAgICAqIEBsaWNlbnNlIE1JVAogICAgICovCk9iamVjdC5kZWZpbmVQcm9wZXJ0eShlLCJfX2VzTW9kdWxlIix7dmFsdWU6ITB9KTt2YXIgbj0oZnVuY3Rpb24oKXtmdW5jdGlvbiB0KCl7dGhpcy5fZXZlbnRUb1Byb2Nlc3NpbmdGdW5jdGlvbj17fSx0aGlzLl9ldmVudFRhcmdldD1kb2N1bWVudCx0aGlzLl9ldmVudE5hbWVUb0NhbGxiYWNrU2V0PXt9LHRoaXMuX2Nvbm5lY3RlZD0hMX1yZXR1cm4gdC5wcm90b3R5cGUuX2hhc05vQ2FsbGJhY2tzPWZ1bmN0aW9uKCl7Zm9yKHZhciB0PU9iamVjdC5rZXlzKHRoaXMuX2V2ZW50TmFtZVRvQ2FsbGJhY2tTZXQpLGU9MDtlPHQubGVuZ3RoO2UrKylpZigwIT09dGhpcy5fZXZlbnROYW1lVG9DYWxsYmFja1NldFt0W2VdXS5zaXplKXJldHVybiExO3JldHVybiEwfSx0LnByb3RvdHlwZS5fY29ubmVjdD1mdW5jdGlvbigpe3ZhciB0PXRoaXM7dGhpcy5fY29ubmVjdGVkfHwoT2JqZWN0LmtleXModGhpcy5fZXZlbnRUb1Byb2Nlc3NpbmdGdW5jdGlvbikuZm9yRWFjaCgoZnVuY3Rpb24oZSl7dC5fZXZlbnRUYXJnZXQuYWRkRXZlbnRMaXN0ZW5lcihlLHQuX2V2ZW50VG9Qcm9jZXNzaW5nRnVuY3Rpb25bZV0sIndoZWVsIj09PWU/e3Bhc3NpdmU6ITF9OnZvaWQgMCl9KSksdGhpcy5fY29ubmVjdGVkPSEwKX0sdC5wcm90b3R5cGUuX2Rpc2Nvbm5lY3Q9ZnVuY3Rpb24oKXt2YXIgdD10aGlzO3RoaXMuX2Nvbm5lY3RlZCYmdGhpcy5faGFzTm9DYWxsYmFja3MoKSYmKE9iamVjdC5rZXlzKHRoaXMuX2V2ZW50VG9Qcm9jZXNzaW5nRnVuY3Rpb24pLmZvckVhY2goKGZ1bmN0aW9uKGUpe3QuX2V2ZW50VGFyZ2V0LnJlbW92ZUV2ZW50TGlzdGVuZXIoZSx0Ll9ldmVudFRvUHJvY2Vzc2luZ0Z1bmN0aW9uW2VdKX0pKSx0aGlzLl9jb25uZWN0ZWQ9ITEpfSx0LnByb3RvdHlwZS5fYWRkQ2FsbGJhY2tGb3JFdmVudD1mdW5jdGlvbih0LGUpe251bGw9PXRoaXMuX2V2ZW50TmFtZVRvQ2FsbGJhY2tTZXRbdF0mJih0aGlzLl9ldmVudE5hbWVUb0NhbGxiYWNrU2V0W3RdPW5ldyB1bXQuQ2FsbGJhY2tTZXQpLHRoaXMuX2V2ZW50TmFtZVRvQ2FsbGJhY2tTZXRbdF0uYWRkKGUpLHRoaXMuX2Nvbm5lY3QoKX0sdC5wcm90b3R5cGUuX3JlbW92ZUNhbGxiYWNrRm9yRXZlbnQ9ZnVuY3Rpb24odCxlKXtudWxsIT10aGlzLl9ldmVudE5hbWVUb0NhbGxiYWNrU2V0W3RdJiZ0aGlzLl9ldmVudE5hbWVUb0NhbGxiYWNrU2V0W3RdLmRlbGV0ZShlKSx0aGlzLl9kaXNjb25uZWN0KCl9LHQucHJvdG90eXBlLl9jYWxsQ2FsbGJhY2tzRm9yRXZlbnQ9ZnVuY3Rpb24odCl7Zm9yKHZhciBlPVtdLG49MTtuPGFyZ3VtZW50cy5sZW5ndGg7bisrKWVbbi0xXT1hcmd1bWVudHNbbl07dmFyIGk9dGhpcy5fZXZlbnROYW1lVG9DYWxsYmFja1NldFt0XTtudWxsIT1pJiZpLmNhbGxDYWxsYmFja3MuYXBwbHkoaSxlKX0sdH0pKCk7ZS5EaXNwYXRjaGVyPW59KSksTm10PWJlKChmdW5jdGlvbih0LGUpewovKioKICAgICAqIENvcHlyaWdodCAyMDE0LXByZXNlbnQgUGFsYW50aXIgVGVjaG5vbG9naWVzCiAgICAgKiBAbGljZW5zZSBNSVQKICAgICAqLwpPYmplY3QuZGVmaW5lUHJvcGVydHkoZSwiX19lc01vZHVsZSIse3ZhbHVlOiEwfSk7dmFyIG49KGZ1bmN0aW9uKHQpe2Z1bmN0aW9uIGUoKXt2YXIgbj10LmNhbGwodGhpcyl8fHRoaXM7cmV0dXJuIG4uX2V2ZW50VG9Qcm9jZXNzaW5nRnVuY3Rpb25bZS5fS0VZRE9XTl9FVkVOVF9OQU1FXT1mdW5jdGlvbih0KXtyZXR1cm4gbi5fcHJvY2Vzc0tleWRvd24odCl9LG4uX2V2ZW50VG9Qcm9jZXNzaW5nRnVuY3Rpb25bZS5fS0VZVVBfRVZFTlRfTkFNRV09ZnVuY3Rpb24odCl7cmV0dXJuIG4uX3Byb2Nlc3NLZXl1cCh0KX0sbn1yZXR1cm4gU2Z0Ll9fZXh0ZW5kcyhlLHQpLGUuZ2V0RGlzcGF0Y2hlcj1mdW5jdGlvbigpe3ZhciB0PWRvY3VtZW50W2UuX0RJU1BBVENIRVJfS0VZXTtyZXR1cm4gbnVsbD09dCYmKHQ9bmV3IGUsZG9jdW1lbnRbZS5fRElTUEFUQ0hFUl9LRVldPXQpLHR9LGUucHJvdG90eXBlLl9wcm9jZXNzS2V5ZG93bj1mdW5jdGlvbih0KXt0aGlzLl9jYWxsQ2FsbGJhY2tzRm9yRXZlbnQoZS5fS0VZRE9XTl9FVkVOVF9OQU1FLHQua2V5Q29kZSx0KX0sZS5wcm90b3R5cGUuX3Byb2Nlc3NLZXl1cD1mdW5jdGlvbih0KXt0aGlzLl9jYWxsQ2FsbGJhY2tzRm9yRXZlbnQoZS5fS0VZVVBfRVZFTlRfTkFNRSx0LmtleUNvZGUsdCl9LGUucHJvdG90eXBlLm9uS2V5RG93bj1mdW5jdGlvbih0KXtyZXR1cm4gdGhpcy5fYWRkQ2FsbGJhY2tGb3JFdmVudChlLl9LRVlET1dOX0VWRU5UX05BTUUsdCksdGhpc30sZS5wcm90b3R5cGUub2ZmS2V5RG93bj1mdW5jdGlvbih0KXtyZXR1cm4gdGhpcy5fcmVtb3ZlQ2FsbGJhY2tGb3JFdmVudChlLl9LRVlET1dOX0VWRU5UX05BTUUsdCksdGhpc30sZS5wcm90b3R5cGUub25LZXlVcD1mdW5jdGlvbih0KXtyZXR1cm4gdGhpcy5fYWRkQ2FsbGJhY2tGb3JFdmVudChlLl9LRVlVUF9FVkVOVF9OQU1FLHQpLHRoaXN9LGUucHJvdG90eXBlLm9mZktleVVwPWZ1bmN0aW9uKHQpe3JldHVybiB0aGlzLl9yZW1vdmVDYWxsYmFja0ZvckV2ZW50KGUuX0tFWVVQX0VWRU5UX05BTUUsdCksdGhpc30sZS5fRElTUEFUQ0hFUl9LRVk9Il9fUGxvdHRhYmxlX0Rpc3BhdGNoZXJfS2V5IixlLl9LRVlET1dOX0VWRU5UX05BTUU9ImtleWRvd24iLGUuX0tFWVVQX0VWRU5UX05BTUU9ImtleXVwIixlfSkoSW10LkRpc3BhdGNoZXIpO2UuS2V5PW59KSksT210PWJlKChmdW5jdGlvbih0LGUpewovKioKICAgICAqIENvcHlyaWdodCAyMDE0LXByZXNlbnQgUGFsYW50aXIgVGVjaG5vbG9naWVzCiAgICAgKiBAbGljZW5zZSBNSVQKICAgICAqLwpPYmplY3QuZGVmaW5lUHJvcGVydHkoZSwiX19lc01vZHVsZSIse3ZhbHVlOiEwfSk7dmFyIG49KGZ1bmN0aW9uKHQpe2Z1bmN0aW9uIGUobil7dmFyIGk9dC5jYWxsKHRoaXMpfHx0aGlzO2kuX2xhc3RNb3VzZVBvc2l0aW9uPXt4Oi0xLHk6LTF9LGkuX3RyYW5zbGF0b3I9dW10LmdldFRyYW5zbGF0b3Iobik7dmFyIHI9ZnVuY3Rpb24odCl7cmV0dXJuIGkuX21lYXN1cmVBbmREaXNwYXRjaChuLHQsZS5fTU9VU0VNT1ZFX0VWRU5UX05BTUUsInBhZ2UiKX07cmV0dXJuIGkuX2V2ZW50VG9Qcm9jZXNzaW5nRnVuY3Rpb25bZS5fTU9VU0VPVkVSX0VWRU5UX05BTUVdPXIsaS5fZXZlbnRUb1Byb2Nlc3NpbmdGdW5jdGlvbltlLl9NT1VTRU1PVkVfRVZFTlRfTkFNRV09cixpLl9ldmVudFRvUHJvY2Vzc2luZ0Z1bmN0aW9uW2UuX01PVVNFT1VUX0VWRU5UX05BTUVdPXIsaS5fZXZlbnRUb1Byb2Nlc3NpbmdGdW5jdGlvbltlLl9NT1VTRURPV05fRVZFTlRfTkFNRV09ZnVuY3Rpb24odCl7cmV0dXJuIGkuX21lYXN1cmVBbmREaXNwYXRjaChuLHQsZS5fTU9VU0VET1dOX0VWRU5UX05BTUUpfSxpLl9ldmVudFRvUHJvY2Vzc2luZ0Z1bmN0aW9uW2UuX01PVVNFVVBfRVZFTlRfTkFNRV09ZnVuY3Rpb24odCl7cmV0dXJuIGkuX21lYXN1cmVBbmREaXNwYXRjaChuLHQsZS5fTU9VU0VVUF9FVkVOVF9OQU1FLCJwYWdlIil9LGkuX2V2ZW50VG9Qcm9jZXNzaW5nRnVuY3Rpb25bZS5fV0hFRUxfRVZFTlRfTkFNRV09ZnVuY3Rpb24odCl7cmV0dXJuIGkuX21lYXN1cmVBbmREaXNwYXRjaChuLHQsZS5fV0hFRUxfRVZFTlRfTkFNRSl9LGkuX2V2ZW50VG9Qcm9jZXNzaW5nRnVuY3Rpb25bZS5fREJMQ0xJQ0tfRVZFTlRfTkFNRV09ZnVuY3Rpb24odCl7cmV0dXJuIGkuX21lYXN1cmVBbmREaXNwYXRjaChuLHQsZS5fREJMQ0xJQ0tfRVZFTlRfTkFNRSl9LGl9cmV0dXJuIFNmdC5fX2V4dGVuZHMoZSx0KSxlLmdldERpc3BhdGNoZXI9ZnVuY3Rpb24odCl7dmFyIG49dC5yb290KCkucm9vdEVsZW1lbnQoKSxpPW5bZS5fRElTUEFUQ0hFUl9LRVldO3JldHVybiBudWxsPT1pJiYoaT1uZXcgZSh0KSxuW2UuX0RJU1BBVENIRVJfS0VZXT1pKSxpfSxlLnByb3RvdHlwZS5vbk1vdXNlTW92ZT1mdW5jdGlvbih0KXtyZXR1cm4gdGhpcy5fYWRkQ2FsbGJhY2tGb3JFdmVudChlLl9NT1VTRU1PVkVfRVZFTlRfTkFNRSx0KSx0aGlzfSxlLnByb3RvdHlwZS5vZmZNb3VzZU1vdmU9ZnVuY3Rpb24odCl7cmV0dXJuIHRoaXMuX3JlbW92ZUNhbGxiYWNrRm9yRXZlbnQoZS5fTU9VU0VNT1ZFX0VWRU5UX05BTUUsdCksdGhpc30sZS5wcm90b3R5cGUub25Nb3VzZURvd249ZnVuY3Rpb24odCl7cmV0dXJuIHRoaXMuX2FkZENhbGxiYWNrRm9yRXZlbnQoZS5fTU9VU0VET1dOX0VWRU5UX05BTUUsdCksdGhpc30sZS5wcm90b3R5cGUub2ZmTW91c2VEb3duPWZ1bmN0aW9uKHQpe3JldHVybiB0aGlzLl9yZW1vdmVDYWxsYmFja0ZvckV2ZW50KGUuX01PVVNFRE9XTl9FVkVOVF9OQU1FLHQpLHRoaXN9LGUucHJvdG90eXBlLm9uTW91c2VVcD1mdW5jdGlvbih0KXtyZXR1cm4gdGhpcy5fYWRkQ2FsbGJhY2tGb3JFdmVudChlLl9NT1VTRVVQX0VWRU5UX05BTUUsdCksdGhpc30sZS5wcm90b3R5cGUub2ZmTW91c2VVcD1mdW5jdGlvbih0KXtyZXR1cm4gdGhpcy5fcmVtb3ZlQ2FsbGJhY2tGb3JFdmVudChlLl9NT1VTRVVQX0VWRU5UX05BTUUsdCksdGhpc30sZS5wcm90b3R5cGUub25XaGVlbD1mdW5jdGlvbih0KXtyZXR1cm4gdGhpcy5fYWRkQ2FsbGJhY2tGb3JFdmVudChlLl9XSEVFTF9FVkVOVF9OQU1FLHQpLHRoaXN9LGUucHJvdG90eXBlLm9mZldoZWVsPWZ1bmN0aW9uKHQpe3JldHVybiB0aGlzLl9yZW1vdmVDYWxsYmFja0ZvckV2ZW50KGUuX1dIRUVMX0VWRU5UX05BTUUsdCksdGhpc30sZS5wcm90b3R5cGUub25EYmxDbGljaz1mdW5jdGlvbih0KXtyZXR1cm4gdGhpcy5fYWRkQ2FsbGJhY2tGb3JFdmVudChlLl9EQkxDTElDS19FVkVOVF9OQU1FLHQpLHRoaXN9LGUucHJvdG90eXBlLm9mZkRibENsaWNrPWZ1bmN0aW9uKHQpe3JldHVybiB0aGlzLl9yZW1vdmVDYWxsYmFja0ZvckV2ZW50KGUuX0RCTENMSUNLX0VWRU5UX05BTUUsdCksdGhpc30sZS5wcm90b3R5cGUuX21lYXN1cmVBbmREaXNwYXRjaD1mdW5jdGlvbih0LGUsbixpKXtpZih2b2lkIDA9PT1pJiYoaT0iZWxlbWVudCIpLCJwYWdlIiE9PWkmJiJlbGVtZW50IiE9PWkpdGhyb3cgbmV3IEVycm9yKCJJbnZhbGlkIHNjb3BlICciK2krIicsIG11c3QgYmUgJ2VsZW1lbnQnIG9yICdwYWdlJyIpO2lmKCJwYWdlIj09PWl8fHRoaXMuZXZlbnRJbnNpZGUodCxlKSl7dmFyIHI9dGhpcy5fdHJhbnNsYXRvci5jb21wdXRlUG9zaXRpb24oZS5jbGllbnRYLGUuY2xpZW50WSk7dGhpcy5fbGFzdE1vdXNlUG9zaXRpb249cix0aGlzLl9jYWxsQ2FsbGJhY2tzRm9yRXZlbnQobix0aGlzLmxhc3RNb3VzZVBvc2l0aW9uKCksZSl9fSxlLnByb3RvdHlwZS5ldmVudEluc2lkZT1mdW5jdGlvbih0LGUpe3JldHVybiB1bXQuVHJhbnNsYXRvci5pc0V2ZW50SW5zaWRlKHQsZSl9LGUucHJvdG90eXBlLmxhc3RNb3VzZVBvc2l0aW9uPWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuX2xhc3RNb3VzZVBvc2l0aW9ufSxlLl9ESVNQQVRDSEVSX0tFWT0iX19QbG90dGFibGVfRGlzcGF0Y2hlcl9Nb3VzZSIsZS5fTU9VU0VPVkVSX0VWRU5UX05BTUU9Im1vdXNlb3ZlciIsZS5fTU9VU0VNT1ZFX0VWRU5UX05BTUU9Im1vdXNlbW92ZSIsZS5fTU9VU0VPVVRfRVZFTlRfTkFNRT0ibW91c2VvdXQiLGUuX01PVVNFRE9XTl9FVkVOVF9OQU1FPSJtb3VzZWRvd24iLGUuX01PVVNFVVBfRVZFTlRfTkFNRT0ibW91c2V1cCIsZS5fV0hFRUxfRVZFTlRfTkFNRT0id2hlZWwiLGUuX0RCTENMSUNLX0VWRU5UX05BTUU9ImRibGNsaWNrIixlfSkoSW10LkRpc3BhdGNoZXIpO2UuTW91c2U9bn0pKSxSbXQ9YmUoKGZ1bmN0aW9uKHQsZSl7Ci8qKgogICAgICogQ29weXJpZ2h0IDIwMTQtcHJlc2VudCBQYWxhbnRpciBUZWNobm9sb2dpZXMKICAgICAqIEBsaWNlbnNlIE1JVAogICAgICovCk9iamVjdC5kZWZpbmVQcm9wZXJ0eShlLCJfX2VzTW9kdWxlIix7dmFsdWU6ITB9KTt2YXIgbj0oZnVuY3Rpb24odCl7ZnVuY3Rpb24gZShuKXt2YXIgaT10LmNhbGwodGhpcyl8fHRoaXM7cmV0dXJuIGkuX3RyYW5zbGF0b3I9dW10LmdldFRyYW5zbGF0b3IobiksaS5fZXZlbnRUb1Byb2Nlc3NpbmdGdW5jdGlvbltlLl9UT1VDSFNUQVJUX0VWRU5UX05BTUVdPWZ1bmN0aW9uKHQpe3JldHVybiBpLl9tZWFzdXJlQW5kRGlzcGF0Y2gobix0LGUuX1RPVUNIU1RBUlRfRVZFTlRfTkFNRSwicGFnZSIpfSxpLl9ldmVudFRvUHJvY2Vzc2luZ0Z1bmN0aW9uW2UuX1RPVUNITU9WRV9FVkVOVF9OQU1FXT1mdW5jdGlvbih0KXtyZXR1cm4gaS5fbWVhc3VyZUFuZERpc3BhdGNoKG4sdCxlLl9UT1VDSE1PVkVfRVZFTlRfTkFNRSwicGFnZSIpfSxpLl9ldmVudFRvUHJvY2Vzc2luZ0Z1bmN0aW9uW2UuX1RPVUNIRU5EX0VWRU5UX05BTUVdPWZ1bmN0aW9uKHQpe3JldHVybiBpLl9tZWFzdXJlQW5kRGlzcGF0Y2gobix0LGUuX1RPVUNIRU5EX0VWRU5UX05BTUUsInBhZ2UiKX0saS5fZXZlbnRUb1Byb2Nlc3NpbmdGdW5jdGlvbltlLl9UT1VDSENBTkNFTF9FVkVOVF9OQU1FXT1mdW5jdGlvbih0KXtyZXR1cm4gaS5fbWVhc3VyZUFuZERpc3BhdGNoKG4sdCxlLl9UT1VDSENBTkNFTF9FVkVOVF9OQU1FLCJwYWdlIil9LGl9cmV0dXJuIFNmdC5fX2V4dGVuZHMoZSx0KSxlLmdldERpc3BhdGNoZXI9ZnVuY3Rpb24odCl7dmFyIG49dC5yb290KCkucm9vdEVsZW1lbnQoKSxpPW5bZS5fRElTUEFUQ0hFUl9LRVldO3JldHVybiBudWxsPT1pJiYoaT1uZXcgZSh0KSxuW2UuX0RJU1BBVENIRVJfS0VZXT1pKSxpfSxlLnByb3RvdHlwZS5vblRvdWNoU3RhcnQ9ZnVuY3Rpb24odCl7cmV0dXJuIHRoaXMuX2FkZENhbGxiYWNrRm9yRXZlbnQoZS5fVE9VQ0hTVEFSVF9FVkVOVF9OQU1FLHQpLHRoaXN9LGUucHJvdG90eXBlLm9mZlRvdWNoU3RhcnQ9ZnVuY3Rpb24odCl7cmV0dXJuIHRoaXMuX3JlbW92ZUNhbGxiYWNrRm9yRXZlbnQoZS5fVE9VQ0hTVEFSVF9FVkVOVF9OQU1FLHQpLHRoaXN9LGUucHJvdG90eXBlLm9uVG91Y2hNb3ZlPWZ1bmN0aW9uKHQpe3JldHVybiB0aGlzLl9hZGRDYWxsYmFja0ZvckV2ZW50KGUuX1RPVUNITU9WRV9FVkVOVF9OQU1FLHQpLHRoaXN9LGUucHJvdG90eXBlLm9mZlRvdWNoTW92ZT1mdW5jdGlvbih0KXtyZXR1cm4gdGhpcy5fcmVtb3ZlQ2FsbGJhY2tGb3JFdmVudChlLl9UT1VDSE1PVkVfRVZFTlRfTkFNRSx0KSx0aGlzfSxlLnByb3RvdHlwZS5vblRvdWNoRW5kPWZ1bmN0aW9uKHQpe3JldHVybiB0aGlzLl9hZGRDYWxsYmFja0ZvckV2ZW50KGUuX1RPVUNIRU5EX0VWRU5UX05BTUUsdCksdGhpc30sZS5wcm90b3R5cGUub2ZmVG91Y2hFbmQ9ZnVuY3Rpb24odCl7cmV0dXJuIHRoaXMuX3JlbW92ZUNhbGxiYWNrRm9yRXZlbnQoZS5fVE9VQ0hFTkRfRVZFTlRfTkFNRSx0KSx0aGlzfSxlLnByb3RvdHlwZS5vblRvdWNoQ2FuY2VsPWZ1bmN0aW9uKHQpe3JldHVybiB0aGlzLl9hZGRDYWxsYmFja0ZvckV2ZW50KGUuX1RPVUNIQ0FOQ0VMX0VWRU5UX05BTUUsdCksdGhpc30sZS5wcm90b3R5cGUub2ZmVG91Y2hDYW5jZWw9ZnVuY3Rpb24odCl7cmV0dXJuIHRoaXMuX3JlbW92ZUNhbGxiYWNrRm9yRXZlbnQoZS5fVE9VQ0hDQU5DRUxfRVZFTlRfTkFNRSx0KSx0aGlzfSxlLnByb3RvdHlwZS5fbWVhc3VyZUFuZERpc3BhdGNoPWZ1bmN0aW9uKHQsZSxuLGkpe2lmKHZvaWQgMD09PWkmJihpPSJlbGVtZW50IiksInBhZ2UiIT09aSYmImVsZW1lbnQiIT09aSl0aHJvdyBuZXcgRXJyb3IoIkludmFsaWQgc2NvcGUgJyIraSsiJywgbXVzdCBiZSAnZWxlbWVudCcgb3IgJ3BhZ2UnIik7aWYoImVsZW1lbnQiIT09aXx8dGhpcy5ldmVudEluc2lkZSh0LGUpKXtmb3IodmFyIHI9ZS5jaGFuZ2VkVG91Y2hlcyxvPXt9LGE9W10scz0wO3M8ci5sZW5ndGg7cysrKXt2YXIgbD1yW3NdLGM9bC5pZGVudGlmaWVyLHU9dGhpcy5fdHJhbnNsYXRvci5jb21wdXRlUG9zaXRpb24obC5jbGllbnRYLGwuY2xpZW50WSk7bnVsbCE9dSYmKG9bY109dSxhLnB1c2goYykpfWEubGVuZ3RoPjAmJnRoaXMuX2NhbGxDYWxsYmFja3NGb3JFdmVudChuLGEsbyxlKX19LGUucHJvdG90eXBlLmV2ZW50SW5zaWRlPWZ1bmN0aW9uKHQsZSl7cmV0dXJuIHVtdC5UcmFuc2xhdG9yLmlzRXZlbnRJbnNpZGUodCxlKX0sZS5fRElTUEFUQ0hFUl9LRVk9Il9fUGxvdHRhYmxlX0Rpc3BhdGNoZXJfVG91Y2giLGUuX1RPVUNIU1RBUlRfRVZFTlRfTkFNRT0idG91Y2hzdGFydCIsZS5fVE9VQ0hNT1ZFX0VWRU5UX05BTUU9InRvdWNobW92ZSIsZS5fVE9VQ0hFTkRfRVZFTlRfTkFNRT0idG91Y2hlbmQiLGUuX1RPVUNIQ0FOQ0VMX0VWRU5UX05BTUU9InRvdWNoY2FuY2VsIixlfSkoSW10LkRpc3BhdGNoZXIpO2UuVG91Y2g9bn0pKSx6bXQ9YmUoKGZ1bmN0aW9uKHQsZSl7Ci8qKgogICAgICogQ29weXJpZ2h0IDIwMTQtcHJlc2VudCBQYWxhbnRpciBUZWNobm9sb2dpZXMKICAgICAqIEBsaWNlbnNlIE1JVAogICAgICovCk9iamVjdC5kZWZpbmVQcm9wZXJ0eShlLCJfX2VzTW9kdWxlIix7dmFsdWU6ITB9KSxTZnQuX19leHBvcnRTdGFyKE5tdCxlKSxTZnQuX19leHBvcnRTdGFyKE9tdCxlKSxTZnQuX19leHBvcnRTdGFyKFJtdCxlKX0pKSxEbXQ9YmUoKGZ1bmN0aW9uKHQsZSl7Ci8qKgogICAgICogQ29weXJpZ2h0IDIwMTQtcHJlc2VudCBQYWxhbnRpciBUZWNobm9sb2dpZXMKICAgICAqIEBsaWNlbnNlIE1JVAogICAgICovCk9iamVjdC5kZWZpbmVQcm9wZXJ0eShlLCJfX2VzTW9kdWxlIix7dmFsdWU6ITB9KTt2YXIgbj0oZnVuY3Rpb24oKXtmdW5jdGlvbiB0KCl7dmFyIHQ9dGhpczt0aGlzLl9hbmNob3JDYWxsYmFjaz1mdW5jdGlvbihlKXtyZXR1cm4gdC5fYW5jaG9yKGUpfSx0aGlzLl9lbmFibGVkPSEwfXJldHVybiB0LnByb3RvdHlwZS5hdHRhY2hUbz1mdW5jdGlvbih0KXtyZXR1cm4gdGhpcy5fZGlzY29ubmVjdCgpLHRoaXMuX2NvbXBvbmVudEF0dGFjaGVkVG89dCx0aGlzLl9jb25uZWN0KCksdGhpc30sdC5wcm90b3R5cGUuZGV0YWNoRnJvbT1mdW5jdGlvbih0KXtyZXR1cm4gdGhpcy5kZXRhY2goKX0sdC5wcm90b3R5cGUuZGV0YWNoPWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuX2Rpc2Nvbm5lY3QoKSx0aGlzLl9jb21wb25lbnRBdHRhY2hlZFRvPW51bGwsdGhpc30sdC5wcm90b3R5cGUuZW5hYmxlZD1mdW5jdGlvbih0KXtyZXR1cm4gbnVsbD09dD90aGlzLl9lbmFibGVkOih0aGlzLl9lbmFibGVkPXQsdGhpcy5fZW5hYmxlZD90aGlzLl9jb25uZWN0KCk6dGhpcy5fZGlzY29ubmVjdCgpLHRoaXMpfSx0LnByb3RvdHlwZS5fYW5jaG9yPWZ1bmN0aW9uKHQpe3RoaXMuX2lzQW5jaG9yZWQ9ITB9LHQucHJvdG90eXBlLl91bmFuY2hvcj1mdW5jdGlvbigpe3RoaXMuX2lzQW5jaG9yZWQ9ITF9LHQucHJvdG90eXBlLl90cmFuc2xhdGVUb0NvbXBvbmVudFNwYWNlPWZ1bmN0aW9uKHQpe3ZhciBlPXRoaXMuX2NvbXBvbmVudEF0dGFjaGVkVG8ub3JpZ2luVG9Sb290KCk7cmV0dXJue3g6dC54LWUueCx5OnQueS1lLnl9fSx0LnByb3RvdHlwZS5faXNJbnNpZGVDb21wb25lbnQ9ZnVuY3Rpb24odCl7cmV0dXJuIDA8PXQueCYmMDw9dC55JiZ0Lng8PXRoaXMuX2NvbXBvbmVudEF0dGFjaGVkVG8ud2lkdGgoKSYmdC55PD10aGlzLl9jb21wb25lbnRBdHRhY2hlZFRvLmhlaWdodCgpfSx0LnByb3RvdHlwZS5fY29ubmVjdD1mdW5jdGlvbigpe3RoaXMuZW5hYmxlZCgpJiZudWxsIT10aGlzLl9jb21wb25lbnRBdHRhY2hlZFRvJiYhdGhpcy5faXNBbmNob3JlZCYmdGhpcy5fY29tcG9uZW50QXR0YWNoZWRUby5vbkFuY2hvcih0aGlzLl9hbmNob3JDYWxsYmFjayl9LHQucHJvdG90eXBlLl9kaXNjb25uZWN0PWZ1bmN0aW9uKCl7dGhpcy5faXNBbmNob3JlZCYmdGhpcy5fdW5hbmNob3IoKSxudWxsIT10aGlzLl9jb21wb25lbnRBdHRhY2hlZFRvJiZ0aGlzLl9jb21wb25lbnRBdHRhY2hlZFRvLm9mZkFuY2hvcih0aGlzLl9hbmNob3JDYWxsYmFjayl9LHR9KSgpO2UuSW50ZXJhY3Rpb249bn0pKSxCbXQ9YmUoKGZ1bmN0aW9uKHQsZSl7Ci8qKgogICAgICogQ29weXJpZ2h0IDIwMTQtcHJlc2VudCBQYWxhbnRpciBUZWNobm9sb2dpZXMKICAgICAqIEBsaWNlbnNlIE1JVAogICAgICovCk9iamVjdC5kZWZpbmVQcm9wZXJ0eShlLCJfX2VzTW9kdWxlIix7dmFsdWU6ITB9KTt2YXIgbj0oZnVuY3Rpb24odCl7ZnVuY3Rpb24gZSgpe3ZhciBlPW51bGwhPT10JiZ0LmFwcGx5KHRoaXMsYXJndW1lbnRzKXx8dGhpcztyZXR1cm4gZS5fY2xpY2tlZERvd249ITEsZS5fZG91YmxlQ2xpY2tpbmc9ITEsZS5fb25DbGlja0NhbGxiYWNrcz1uZXcgdW10LkNhbGxiYWNrU2V0LGUuX29uRG91YmxlQ2xpY2tDYWxsYmFja3M9bmV3IHVtdC5DYWxsYmFja1NldCxlLl9tb3VzZURvd25DYWxsYmFjaz1mdW5jdGlvbih0LG4pe3JldHVybiBlLl9oYW5kbGVDbGlja0Rvd24odCxuKX0sZS5fbW91c2VVcENhbGxiYWNrPWZ1bmN0aW9uKHQsbil7cmV0dXJuIGUuX2hhbmRsZUNsaWNrVXAodCxuKX0sZS5fZGJsQ2xpY2tDYWxsYmFjaz1mdW5jdGlvbih0LG4pe3JldHVybiBlLl9oYW5kbGVEYmxDbGljayh0LG4pfSxlLl90b3VjaFN0YXJ0Q2FsbGJhY2s9ZnVuY3Rpb24odCxuLGkpe3JldHVybiBlLl9oYW5kbGVDbGlja0Rvd24oblt0WzBdXSxpKX0sZS5fdG91Y2hFbmRDYWxsYmFjaz1mdW5jdGlvbih0LG4saSl7cmV0dXJuIGUuX2hhbmRsZUNsaWNrVXAoblt0WzBdXSxpKX0sZS5fdG91Y2hDYW5jZWxDYWxsYmFjaz1mdW5jdGlvbih0LG4pe3JldHVybiBlLl9jbGlja2VkRG93bj0hMX0sZX1yZXR1cm4gU2Z0Ll9fZXh0ZW5kcyhlLHQpLGUucHJvdG90eXBlLl9hbmNob3I9ZnVuY3Rpb24oZSl7dC5wcm90b3R5cGUuX2FuY2hvci5jYWxsKHRoaXMsZSksdGhpcy5fbW91c2VEaXNwYXRjaGVyPXptdC5Nb3VzZS5nZXREaXNwYXRjaGVyKGUpLHRoaXMuX21vdXNlRGlzcGF0Y2hlci5vbk1vdXNlRG93bih0aGlzLl9tb3VzZURvd25DYWxsYmFjayksdGhpcy5fbW91c2VEaXNwYXRjaGVyLm9uTW91c2VVcCh0aGlzLl9tb3VzZVVwQ2FsbGJhY2spLHRoaXMuX21vdXNlRGlzcGF0Y2hlci5vbkRibENsaWNrKHRoaXMuX2RibENsaWNrQ2FsbGJhY2spLHRoaXMuX3RvdWNoRGlzcGF0Y2hlcj16bXQuVG91Y2guZ2V0RGlzcGF0Y2hlcihlKSx0aGlzLl90b3VjaERpc3BhdGNoZXIub25Ub3VjaFN0YXJ0KHRoaXMuX3RvdWNoU3RhcnRDYWxsYmFjayksdGhpcy5fdG91Y2hEaXNwYXRjaGVyLm9uVG91Y2hFbmQodGhpcy5fdG91Y2hFbmRDYWxsYmFjayksdGhpcy5fdG91Y2hEaXNwYXRjaGVyLm9uVG91Y2hDYW5jZWwodGhpcy5fdG91Y2hDYW5jZWxDYWxsYmFjayl9LGUucHJvdG90eXBlLl91bmFuY2hvcj1mdW5jdGlvbigpe3QucHJvdG90eXBlLl91bmFuY2hvci5jYWxsKHRoaXMpLHRoaXMuX21vdXNlRGlzcGF0Y2hlci5vZmZNb3VzZURvd24odGhpcy5fbW91c2VEb3duQ2FsbGJhY2spLHRoaXMuX21vdXNlRGlzcGF0Y2hlci5vZmZNb3VzZVVwKHRoaXMuX21vdXNlVXBDYWxsYmFjayksdGhpcy5fbW91c2VEaXNwYXRjaGVyLm9mZkRibENsaWNrKHRoaXMuX2RibENsaWNrQ2FsbGJhY2spLHRoaXMuX21vdXNlRGlzcGF0Y2hlcj1udWxsLHRoaXMuX3RvdWNoRGlzcGF0Y2hlci5vZmZUb3VjaFN0YXJ0KHRoaXMuX3RvdWNoU3RhcnRDYWxsYmFjayksdGhpcy5fdG91Y2hEaXNwYXRjaGVyLm9mZlRvdWNoRW5kKHRoaXMuX3RvdWNoRW5kQ2FsbGJhY2spLHRoaXMuX3RvdWNoRGlzcGF0Y2hlci5vZmZUb3VjaENhbmNlbCh0aGlzLl90b3VjaENhbmNlbENhbGxiYWNrKSx0aGlzLl90b3VjaERpc3BhdGNoZXI9bnVsbH0sZS5wcm90b3R5cGUuX2hhbmRsZUNsaWNrRG93bj1mdW5jdGlvbih0LGUpe3ZhciBuPXRoaXMuX3RyYW5zbGF0ZVRvQ29tcG9uZW50U3BhY2UodCk7dGhpcy5faXNJbnNpZGVDb21wb25lbnQobikmJih0aGlzLl9jbGlja2VkRG93bj0hMCx0aGlzLl9jbGlja2VkUG9pbnQ9bil9LGUucHJvdG90eXBlLl9oYW5kbGVDbGlja1VwPWZ1bmN0aW9uKHQsbil7dmFyIGk9dGhpcyxyPXRoaXMuX3RyYW5zbGF0ZVRvQ29tcG9uZW50U3BhY2UodCk7dGhpcy5fY2xpY2tlZERvd24mJmUuX3BvaW50c0VxdWFsKHIsdGhpcy5fY2xpY2tlZFBvaW50KSYmc2V0VGltZW91dCgoZnVuY3Rpb24oKXtpLl9kb3VibGVDbGlja2luZ3x8aS5fb25DbGlja0NhbGxiYWNrcy5jYWxsQ2FsbGJhY2tzKHIsbil9KSwwKSx0aGlzLl9jbGlja2VkRG93bj0hMX0sZS5wcm90b3R5cGUuX2hhbmRsZURibENsaWNrPWZ1bmN0aW9uKHQsZSl7dmFyIG49dGhpcyxpPXRoaXMuX3RyYW5zbGF0ZVRvQ29tcG9uZW50U3BhY2UodCk7dGhpcy5fZG91YmxlQ2xpY2tpbmc9ITAsdGhpcy5fb25Eb3VibGVDbGlja0NhbGxiYWNrcy5jYWxsQ2FsbGJhY2tzKGksZSksc2V0VGltZW91dCgoZnVuY3Rpb24oKXtyZXR1cm4gbi5fZG91YmxlQ2xpY2tpbmc9ITF9KSwwKX0sZS5fcG9pbnRzRXF1YWw9ZnVuY3Rpb24odCxlKXtyZXR1cm4gdC54PT09ZS54JiZ0Lnk9PT1lLnl9LGUucHJvdG90eXBlLm9uQ2xpY2s9ZnVuY3Rpb24odCl7cmV0dXJuIHRoaXMuX29uQ2xpY2tDYWxsYmFja3MuYWRkKHQpLHRoaXN9LGUucHJvdG90eXBlLm9mZkNsaWNrPWZ1bmN0aW9uKHQpe3JldHVybiB0aGlzLl9vbkNsaWNrQ2FsbGJhY2tzLmRlbGV0ZSh0KSx0aGlzfSxlLnByb3RvdHlwZS5vbkRvdWJsZUNsaWNrPWZ1bmN0aW9uKHQpe3JldHVybiB0aGlzLl9vbkRvdWJsZUNsaWNrQ2FsbGJhY2tzLmFkZCh0KSx0aGlzfSxlLnByb3RvdHlwZS5vZmZEb3VibGVDbGljaz1mdW5jdGlvbih0KXtyZXR1cm4gdGhpcy5fb25Eb3VibGVDbGlja0NhbGxiYWNrcy5kZWxldGUodCksdGhpc30sZX0pKERtdC5JbnRlcmFjdGlvbik7ZS5DbGljaz1ufSkpLEhtdD1iZSgoZnVuY3Rpb24odCxlKXsKLyoqCiAgICAgKiBDb3B5cmlnaHQgMjAxNC1wcmVzZW50IFBhbGFudGlyIFRlY2hub2xvZ2llcwogICAgICogQGxpY2Vuc2UgTUlUCiAgICAgKi8KT2JqZWN0LmRlZmluZVByb3BlcnR5KGUsIl9fZXNNb2R1bGUiLHt2YWx1ZTohMH0pO3ZhciBuPShmdW5jdGlvbih0KXtmdW5jdGlvbiBlKG4pe3ZhciBpPXQuY2FsbCh0aGlzKXx8dGhpcztyZXR1cm4gaS5fZHJhZ2dpbmc9ITEsaS5fY29uc3RyYWluZWRUb0NvbXBvbmVudD0hMCxpLl9tb3VzZUZpbHRlcj1lLl9ERUZBVUxUX01PVVNFX0ZJTFRFUixpLl9kcmFnU3RhcnRDYWxsYmFja3M9bmV3IHVtdC5DYWxsYmFja1NldCxpLl9kcmFnQ2FsbGJhY2tzPW5ldyB1bXQuQ2FsbGJhY2tTZXQsaS5fZHJhZ0VuZENhbGxiYWNrcz1uZXcgdW10LkNhbGxiYWNrU2V0LGkuX21vdXNlRG93bkNhbGxiYWNrPWZ1bmN0aW9uKHQsZSl7cmV0dXJuIGkuX3N0YXJ0RHJhZyh0LGUpfSxpLl9tb3VzZU1vdmVDYWxsYmFjaz1mdW5jdGlvbih0LGUpe3JldHVybiBpLl9kb0RyYWcodCxlKX0saS5fbW91c2VVcENhbGxiYWNrPWZ1bmN0aW9uKHQsZSl7cmV0dXJuIGkuX2VuZERyYWcodCxlKX0saS5fdG91Y2hTdGFydENhbGxiYWNrPWZ1bmN0aW9uKHQsZSxuKXtyZXR1cm4gaS5fc3RhcnREcmFnKGVbdFswXV0sbil9LGkuX3RvdWNoTW92ZUNhbGxiYWNrPWZ1bmN0aW9uKHQsZSxuKXtyZXR1cm4gaS5fZG9EcmFnKGVbdFswXV0sbil9LGkuX3RvdWNoRW5kQ2FsbGJhY2s9ZnVuY3Rpb24odCxlLG4pe3JldHVybiBpLl9lbmREcmFnKGVbdFswXV0sbil9LGkuX21vdXNlQnV0dG9uPXZvaWQgMCE9PW4/bjowLGl9cmV0dXJuIFNmdC5fX2V4dGVuZHMoZSx0KSxlLnByb3RvdHlwZS5fYW5jaG9yPWZ1bmN0aW9uKGUpe3QucHJvdG90eXBlLl9hbmNob3IuY2FsbCh0aGlzLGUpLHRoaXMuX21vdXNlRGlzcGF0Y2hlcj16bXQuTW91c2UuZ2V0RGlzcGF0Y2hlcih0aGlzLl9jb21wb25lbnRBdHRhY2hlZFRvKSx0aGlzLl9tb3VzZURpc3BhdGNoZXIub25Nb3VzZURvd24odGhpcy5fbW91c2VEb3duQ2FsbGJhY2spLHRoaXMuX21vdXNlRGlzcGF0Y2hlci5vbk1vdXNlTW92ZSh0aGlzLl9tb3VzZU1vdmVDYWxsYmFjayksdGhpcy5fbW91c2VEaXNwYXRjaGVyLm9uTW91c2VVcCh0aGlzLl9tb3VzZVVwQ2FsbGJhY2spLHRoaXMuX3RvdWNoRGlzcGF0Y2hlcj16bXQuVG91Y2guZ2V0RGlzcGF0Y2hlcih0aGlzLl9jb21wb25lbnRBdHRhY2hlZFRvKSx0aGlzLl90b3VjaERpc3BhdGNoZXIub25Ub3VjaFN0YXJ0KHRoaXMuX3RvdWNoU3RhcnRDYWxsYmFjayksdGhpcy5fdG91Y2hEaXNwYXRjaGVyLm9uVG91Y2hNb3ZlKHRoaXMuX3RvdWNoTW92ZUNhbGxiYWNrKSx0aGlzLl90b3VjaERpc3BhdGNoZXIub25Ub3VjaEVuZCh0aGlzLl90b3VjaEVuZENhbGxiYWNrKX0sZS5wcm90b3R5cGUuX3VuYW5jaG9yPWZ1bmN0aW9uKCl7dC5wcm90b3R5cGUuX3VuYW5jaG9yLmNhbGwodGhpcyksdGhpcy5fbW91c2VEaXNwYXRjaGVyLm9mZk1vdXNlRG93bih0aGlzLl9tb3VzZURvd25DYWxsYmFjayksdGhpcy5fbW91c2VEaXNwYXRjaGVyLm9mZk1vdXNlTW92ZSh0aGlzLl9tb3VzZU1vdmVDYWxsYmFjayksdGhpcy5fbW91c2VEaXNwYXRjaGVyLm9mZk1vdXNlVXAodGhpcy5fbW91c2VVcENhbGxiYWNrKSx0aGlzLl9tb3VzZURpc3BhdGNoZXI9bnVsbCx0aGlzLl90b3VjaERpc3BhdGNoZXIub2ZmVG91Y2hTdGFydCh0aGlzLl90b3VjaFN0YXJ0Q2FsbGJhY2spLHRoaXMuX3RvdWNoRGlzcGF0Y2hlci5vZmZUb3VjaE1vdmUodGhpcy5fdG91Y2hNb3ZlQ2FsbGJhY2spLHRoaXMuX3RvdWNoRGlzcGF0Y2hlci5vZmZUb3VjaEVuZCh0aGlzLl90b3VjaEVuZENhbGxiYWNrKSx0aGlzLl90b3VjaERpc3BhdGNoZXI9bnVsbH0sZS5wcm90b3R5cGUuX3RyYW5zbGF0ZUFuZENvbnN0cmFpbj1mdW5jdGlvbih0KXt2YXIgZT10aGlzLl90cmFuc2xhdGVUb0NvbXBvbmVudFNwYWNlKHQpO3JldHVybiB0aGlzLl9jb25zdHJhaW5lZFRvQ29tcG9uZW50P3t4OnVtdC5NYXRoLmNsYW1wKGUueCwwLHRoaXMuX2NvbXBvbmVudEF0dGFjaGVkVG8ud2lkdGgoKSkseTp1bXQuTWF0aC5jbGFtcChlLnksMCx0aGlzLl9jb21wb25lbnRBdHRhY2hlZFRvLmhlaWdodCgpKX06ZX0sZS5wcm90b3R5cGUuX3N0YXJ0RHJhZz1mdW5jdGlvbih0LGUpe2lmKCEoZSBpbnN0YW5jZW9mIE1vdXNlRXZlbnQpfHx0aGlzLl9tb3VzZUZpbHRlcihlKSl7dmFyIG49dGhpcy5fdHJhbnNsYXRlVG9Db21wb25lbnRTcGFjZSh0KTt0aGlzLl9pc0luc2lkZUNvbXBvbmVudChuKSYmKGUucHJldmVudERlZmF1bHQoKSx0aGlzLl9kcmFnZ2luZz0hMCx0aGlzLl9kcmFnT3JpZ2luPW4sdGhpcy5fZHJhZ1N0YXJ0Q2FsbGJhY2tzLmNhbGxDYWxsYmFja3ModGhpcy5fZHJhZ09yaWdpbikpfX0sZS5wcm90b3R5cGUuX2RvRHJhZz1mdW5jdGlvbih0LGUpe3RoaXMuX2RyYWdnaW5nJiZ0aGlzLl9kcmFnQ2FsbGJhY2tzLmNhbGxDYWxsYmFja3ModGhpcy5fZHJhZ09yaWdpbix0aGlzLl90cmFuc2xhdGVBbmRDb25zdHJhaW4odCkpfSxlLnByb3RvdHlwZS5fZW5kRHJhZz1mdW5jdGlvbih0LGUpe2UgaW5zdGFuY2VvZiBNb3VzZUV2ZW50JiZlLmJ1dHRvbiE9PXRoaXMuX21vdXNlQnV0dG9ufHx0aGlzLl9kcmFnZ2luZyYmKHRoaXMuX2RyYWdnaW5nPSExLHRoaXMuX2RyYWdFbmRDYWxsYmFja3MuY2FsbENhbGxiYWNrcyh0aGlzLl9kcmFnT3JpZ2luLHRoaXMuX3RyYW5zbGF0ZUFuZENvbnN0cmFpbih0KSkpfSxlLnByb3RvdHlwZS5jb25zdHJhaW5lZFRvQ29tcG9uZW50PWZ1bmN0aW9uKHQpe3JldHVybiBudWxsPT10P3RoaXMuX2NvbnN0cmFpbmVkVG9Db21wb25lbnQ6KHRoaXMuX2NvbnN0cmFpbmVkVG9Db21wb25lbnQ9dCx0aGlzKX0sZS5wcm90b3R5cGUubW91c2VGaWx0ZXI9ZnVuY3Rpb24odCl7cmV0dXJuIDA9PT1hcmd1bWVudHMubGVuZ3RoP3RoaXMuX21vdXNlRmlsdGVyOih0aGlzLl9tb3VzZUZpbHRlcj10LHRoaXMpfSxlLnByb3RvdHlwZS5vbkRyYWdTdGFydD1mdW5jdGlvbih0KXtyZXR1cm4gdGhpcy5fZHJhZ1N0YXJ0Q2FsbGJhY2tzLmFkZCh0KSx0aGlzfSxlLnByb3RvdHlwZS5vZmZEcmFnU3RhcnQ9ZnVuY3Rpb24odCl7cmV0dXJuIHRoaXMuX2RyYWdTdGFydENhbGxiYWNrcy5kZWxldGUodCksdGhpc30sZS5wcm90b3R5cGUub25EcmFnPWZ1bmN0aW9uKHQpe3JldHVybiB0aGlzLl9kcmFnQ2FsbGJhY2tzLmFkZCh0KSx0aGlzfSxlLnByb3RvdHlwZS5vZmZEcmFnPWZ1bmN0aW9uKHQpe3JldHVybiB0aGlzLl9kcmFnQ2FsbGJhY2tzLmRlbGV0ZSh0KSx0aGlzfSxlLnByb3RvdHlwZS5vbkRyYWdFbmQ9ZnVuY3Rpb24odCl7cmV0dXJuIHRoaXMuX2RyYWdFbmRDYWxsYmFja3MuYWRkKHQpLHRoaXN9LGUucHJvdG90eXBlLm9mZkRyYWdFbmQ9ZnVuY3Rpb24odCl7cmV0dXJuIHRoaXMuX2RyYWdFbmRDYWxsYmFja3MuZGVsZXRlKHQpLHRoaXN9LGUuX0RFRkFVTFRfTU9VU0VfRklMVEVSPWZ1bmN0aW9uKHQpe3JldHVybiAwPT09dC5idXR0b259LGV9KShEbXQuSW50ZXJhY3Rpb24pO2UuRHJhZz1ufSkpLEZtdD1iZSgoZnVuY3Rpb24odCxlKXsKLyoqCiAgICAgKiBDb3B5cmlnaHQgMjAxNC1wcmVzZW50IFBhbGFudGlyIFRlY2hub2xvZ2llcwogICAgICogQGxpY2Vuc2UgTUlUCiAgICAgKi8KT2JqZWN0LmRlZmluZVByb3BlcnR5KGUsIl9fZXNNb2R1bGUiLHt2YWx1ZTohMH0pO3ZhciBuPShmdW5jdGlvbih0KXtmdW5jdGlvbiBlKCl7dmFyIGU9bnVsbCE9PXQmJnQuYXBwbHkodGhpcyxhcmd1bWVudHMpfHx0aGlzO3JldHVybiBlLl9rZXlQcmVzc0NhbGxiYWNrcz17fSxlLl9rZXlSZWxlYXNlQ2FsbGJhY2tzPXt9LGUuX21vdXNlTW92ZUNhbGxiYWNrPWZ1bmN0aW9uKHQpe3JldHVybiExfSxlLl9kb3duZWRLZXlzPW5ldyB1bXQuU2V0LGUuX2tleURvd25DYWxsYmFjaz1mdW5jdGlvbih0LG4pe3JldHVybiBlLl9oYW5kbGVLZXlEb3duRXZlbnQodCxuKX0sZS5fa2V5VXBDYWxsYmFjaz1mdW5jdGlvbih0KXtyZXR1cm4gZS5faGFuZGxlS2V5VXBFdmVudCh0KX0sZX1yZXR1cm4gU2Z0Ll9fZXh0ZW5kcyhlLHQpLGUucHJvdG90eXBlLl9hbmNob3I9ZnVuY3Rpb24oZSl7dC5wcm90b3R5cGUuX2FuY2hvci5jYWxsKHRoaXMsZSksdGhpcy5fcG9zaXRpb25EaXNwYXRjaGVyPXptdC5Nb3VzZS5nZXREaXNwYXRjaGVyKHRoaXMuX2NvbXBvbmVudEF0dGFjaGVkVG8pLHRoaXMuX3Bvc2l0aW9uRGlzcGF0Y2hlci5vbk1vdXNlTW92ZSh0aGlzLl9tb3VzZU1vdmVDYWxsYmFjayksdGhpcy5fa2V5RGlzcGF0Y2hlcj16bXQuS2V5LmdldERpc3BhdGNoZXIoKSx0aGlzLl9rZXlEaXNwYXRjaGVyLm9uS2V5RG93bih0aGlzLl9rZXlEb3duQ2FsbGJhY2spLHRoaXMuX2tleURpc3BhdGNoZXIub25LZXlVcCh0aGlzLl9rZXlVcENhbGxiYWNrKX0sZS5wcm90b3R5cGUuX3VuYW5jaG9yPWZ1bmN0aW9uKCl7dC5wcm90b3R5cGUuX3VuYW5jaG9yLmNhbGwodGhpcyksdGhpcy5fcG9zaXRpb25EaXNwYXRjaGVyLm9mZk1vdXNlTW92ZSh0aGlzLl9tb3VzZU1vdmVDYWxsYmFjayksdGhpcy5fcG9zaXRpb25EaXNwYXRjaGVyPW51bGwsdGhpcy5fa2V5RGlzcGF0Y2hlci5vZmZLZXlEb3duKHRoaXMuX2tleURvd25DYWxsYmFjayksdGhpcy5fa2V5RGlzcGF0Y2hlci5vZmZLZXlVcCh0aGlzLl9rZXlVcENhbGxiYWNrKSx0aGlzLl9rZXlEaXNwYXRjaGVyPW51bGx9LGUucHJvdG90eXBlLl9oYW5kbGVLZXlEb3duRXZlbnQ9ZnVuY3Rpb24odCxlKXt2YXIgbj10aGlzLl90cmFuc2xhdGVUb0NvbXBvbmVudFNwYWNlKHRoaXMuX3Bvc2l0aW9uRGlzcGF0Y2hlci5sYXN0TW91c2VQb3NpdGlvbigpKTt0aGlzLl9pc0luc2lkZUNvbXBvbmVudChuKSYmIWUucmVwZWF0JiYodGhpcy5fa2V5UHJlc3NDYWxsYmFja3NbdF0mJnRoaXMuX2tleVByZXNzQ2FsbGJhY2tzW3RdLmNhbGxDYWxsYmFja3ModCksdGhpcy5fZG93bmVkS2V5cy5hZGQodCkpfSxlLnByb3RvdHlwZS5faGFuZGxlS2V5VXBFdmVudD1mdW5jdGlvbih0KXt0aGlzLl9kb3duZWRLZXlzLmhhcyh0KSYmdGhpcy5fa2V5UmVsZWFzZUNhbGxiYWNrc1t0XSYmdGhpcy5fa2V5UmVsZWFzZUNhbGxiYWNrc1t0XS5jYWxsQ2FsbGJhY2tzKHQpLHRoaXMuX2Rvd25lZEtleXMuZGVsZXRlKHQpfSxlLnByb3RvdHlwZS5vbktleVByZXNzPWZ1bmN0aW9uKHQsZSl7cmV0dXJuIHRoaXMuX2tleVByZXNzQ2FsbGJhY2tzW3RdfHwodGhpcy5fa2V5UHJlc3NDYWxsYmFja3NbdF09bmV3IHVtdC5DYWxsYmFja1NldCksdGhpcy5fa2V5UHJlc3NDYWxsYmFja3NbdF0uYWRkKGUpLHRoaXN9LGUucHJvdG90eXBlLm9mZktleVByZXNzPWZ1bmN0aW9uKHQsZSl7cmV0dXJuIHRoaXMuX2tleVByZXNzQ2FsbGJhY2tzW3RdLmRlbGV0ZShlKSwwPT09dGhpcy5fa2V5UHJlc3NDYWxsYmFja3NbdF0uc2l6ZSYmZGVsZXRlIHRoaXMuX2tleVByZXNzQ2FsbGJhY2tzW3RdLHRoaXN9LGUucHJvdG90eXBlLm9uS2V5UmVsZWFzZT1mdW5jdGlvbih0LGUpe3JldHVybiB0aGlzLl9rZXlSZWxlYXNlQ2FsbGJhY2tzW3RdfHwodGhpcy5fa2V5UmVsZWFzZUNhbGxiYWNrc1t0XT1uZXcgdW10LkNhbGxiYWNrU2V0KSx0aGlzLl9rZXlSZWxlYXNlQ2FsbGJhY2tzW3RdLmFkZChlKSx0aGlzfSxlLnByb3RvdHlwZS5vZmZLZXlSZWxlYXNlPWZ1bmN0aW9uKHQsZSl7cmV0dXJuIHRoaXMuX2tleVJlbGVhc2VDYWxsYmFja3NbdF0uZGVsZXRlKGUpLDA9PT10aGlzLl9rZXlSZWxlYXNlQ2FsbGJhY2tzW3RdLnNpemUmJmRlbGV0ZSB0aGlzLl9rZXlSZWxlYXNlQ2FsbGJhY2tzW3RdLHRoaXN9LGV9KShEbXQuSW50ZXJhY3Rpb24pO2UuS2V5PW59KSksVm10PWJlKChmdW5jdGlvbih0LGUpewovKioKICAgICAqIENvcHlyaWdodCAyMDE0LXByZXNlbnQgUGFsYW50aXIgVGVjaG5vbG9naWVzCiAgICAgKiBAbGljZW5zZSBNSVQKICAgICAqLwpPYmplY3QuZGVmaW5lUHJvcGVydHkoZSwiX19lc01vZHVsZSIse3ZhbHVlOiEwfSk7dmFyIG49KGZ1bmN0aW9uKHQpe2Z1bmN0aW9uIGUoZSxuKXt2YXIgaT10LmNhbGwodGhpcyl8fHRoaXM7cmV0dXJuIGkuX3doZWVsRmlsdGVyPWZ1bmN0aW9uKHQpe3JldHVybiEwfSxpLl93aGVlbENhbGxiYWNrPWZ1bmN0aW9uKHQsZSl7cmV0dXJuIGkuX2hhbmRsZVdoZWVsRXZlbnQodCxlKX0saS5fdG91Y2hTdGFydENhbGxiYWNrPWZ1bmN0aW9uKHQsZSxuKXtyZXR1cm4gaS5faGFuZGxlVG91Y2hTdGFydCh0LGUsbil9LGkuX3RvdWNoTW92ZUNhbGxiYWNrPWZ1bmN0aW9uKHQsZSxuKXtyZXR1cm4gaS5faGFuZGxlUGluY2godCxlLG4pfSxpLl90b3VjaEVuZENhbGxiYWNrPWZ1bmN0aW9uKHQsZSxuKXtyZXR1cm4gaS5faGFuZGxlVG91Y2hFbmQodCxlLG4pfSxpLl90b3VjaENhbmNlbENhbGxiYWNrPWZ1bmN0aW9uKHQsZSxuKXtyZXR1cm4gaS5faGFuZGxlVG91Y2hFbmQodCxlLG4pfSxpLl9wYW5FbmRDYWxsYmFja3M9bmV3IHVtdC5DYWxsYmFja1NldCxpLl96b29tRW5kQ2FsbGJhY2tzPW5ldyB1bXQuQ2FsbGJhY2tTZXQsaS5fcGFuWm9vbVVwZGF0ZUNhbGxiYWNrcz1uZXcgdW10LkNhbGxiYWNrU2V0LGkuX3hTY2FsZXM9bmV3IHVtdC5TZXQsaS5feVNjYWxlcz1uZXcgdW10LlNldCxpLl9kcmFnSW50ZXJhY3Rpb249bmV3IFVtdC5EcmFnLGkuX3NldHVwRHJhZ0ludGVyYWN0aW9uKCksaS5fdG91Y2hJZHM9VWh0Lm1hcCgpLGkuX21pbkRvbWFpbkV4dGVudHM9bmV3IHVtdC5NYXAsaS5fbWF4RG9tYWluRXh0ZW50cz1uZXcgdW10Lk1hcCxpLl9taW5Eb21haW5WYWx1ZXM9bmV3IHVtdC5NYXAsaS5fbWF4RG9tYWluVmFsdWVzPW5ldyB1bXQuTWFwLG51bGwhPWUmJmkuYWRkWFNjYWxlKGUpLG51bGwhPW4mJmkuYWRkWVNjYWxlKG4pLGl9cmV0dXJuIFNmdC5fX2V4dGVuZHMoZSx0KSxlLnByb3RvdHlwZS5kcmFnSW50ZXJhY3Rpb249ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5fZHJhZ0ludGVyYWN0aW9ufSxlLnByb3RvdHlwZS53aGVlbEZpbHRlcj1mdW5jdGlvbih0KXtyZXR1cm4gMD09PWFyZ3VtZW50cy5sZW5ndGg/dGhpcy5fd2hlZWxGaWx0ZXI6KHRoaXMuX3doZWVsRmlsdGVyPXQsdGhpcyl9LGUucHJvdG90eXBlLnBhbj1mdW5jdGlvbih0KXt2YXIgZT10aGlzO3RoaXMueFNjYWxlcygpLmZvckVhY2goKGZ1bmN0aW9uKG4pe24ucGFuKGUuX2NvbnN0cmFpbmVkVHJhbnNsYXRpb24obix0LngpKX0pKSx0aGlzLnlTY2FsZXMoKS5mb3JFYWNoKChmdW5jdGlvbihuKXtuLnBhbihlLl9jb25zdHJhaW5lZFRyYW5zbGF0aW9uKG4sdC55KSl9KSksdGhpcy5fcGFuWm9vbVVwZGF0ZUNhbGxiYWNrcy5jYWxsQ2FsbGJhY2tzKCl9LGUucHJvdG90eXBlLnpvb209ZnVuY3Rpb24odCxlLG4pe3ZhciBpLHIsbz10aGlzO3JldHVybiB2b2lkIDA9PT1uJiYobj0hMCksbnVsbCE9ZSYmKGk9ZS54LHI9ZS55LG4mJih0aGlzLnhTY2FsZXMoKS5mb3JFYWNoKChmdW5jdGlvbihlKXt2YXIgbj1vLl9jb25zdHJhaW5lZFpvb20oZSx0LGkpO2k9bi5jZW50ZXJQb2ludCx0PW4uem9vbUFtb3VudH0pKSx0aGlzLnlTY2FsZXMoKS5mb3JFYWNoKChmdW5jdGlvbihlKXt2YXIgbj1vLl9jb25zdHJhaW5lZFpvb20oZSx0LHIpO3I9bi5jZW50ZXJQb2ludCx0PW4uem9vbUFtb3VudH0pKSkpLHRoaXMueFNjYWxlcygpLmZvckVhY2goKGZ1bmN0aW9uKGUpe3ZhciBuPWUucmFuZ2UoKTtlLnpvb20odCxudWxsPT1pPyhuWzFdK25bMF0pLzI6aSl9KSksdGhpcy55U2NhbGVzKCkuZm9yRWFjaCgoZnVuY3Rpb24oZSl7dmFyIG49ZS5yYW5nZSgpO2Uuem9vbSh0LG51bGw9PXI/KG5bMV0rblswXSkvMjpyKX0pKSx0aGlzLl9wYW5ab29tVXBkYXRlQ2FsbGJhY2tzLmNhbGxDYWxsYmFja3MoKSx7em9vbUFtb3VudDp0LGNlbnRlclZhbHVlOntjZW50ZXJYOmksY2VudGVyWTpyfX19LGUucHJvdG90eXBlLl9hbmNob3I9ZnVuY3Rpb24oZSl7dC5wcm90b3R5cGUuX2FuY2hvci5jYWxsKHRoaXMsZSksdGhpcy5fZHJhZ0ludGVyYWN0aW9uLmF0dGFjaFRvKGUpLHRoaXMuX21vdXNlRGlzcGF0Y2hlcj16bXQuTW91c2UuZ2V0RGlzcGF0Y2hlcih0aGlzLl9jb21wb25lbnRBdHRhY2hlZFRvKSx0aGlzLl9tb3VzZURpc3BhdGNoZXIub25XaGVlbCh0aGlzLl93aGVlbENhbGxiYWNrKSx0aGlzLl90b3VjaERpc3BhdGNoZXI9em10LlRvdWNoLmdldERpc3BhdGNoZXIodGhpcy5fY29tcG9uZW50QXR0YWNoZWRUbyksdGhpcy5fdG91Y2hEaXNwYXRjaGVyLm9uVG91Y2hTdGFydCh0aGlzLl90b3VjaFN0YXJ0Q2FsbGJhY2spLHRoaXMuX3RvdWNoRGlzcGF0Y2hlci5vblRvdWNoTW92ZSh0aGlzLl90b3VjaE1vdmVDYWxsYmFjayksdGhpcy5fdG91Y2hEaXNwYXRjaGVyLm9uVG91Y2hFbmQodGhpcy5fdG91Y2hFbmRDYWxsYmFjayksdGhpcy5fdG91Y2hEaXNwYXRjaGVyLm9uVG91Y2hDYW5jZWwodGhpcy5fdG91Y2hDYW5jZWxDYWxsYmFjayl9LGUucHJvdG90eXBlLl91bmFuY2hvcj1mdW5jdGlvbigpe3QucHJvdG90eXBlLl91bmFuY2hvci5jYWxsKHRoaXMpLHRoaXMuX21vdXNlRGlzcGF0Y2hlci5vZmZXaGVlbCh0aGlzLl93aGVlbENhbGxiYWNrKSx0aGlzLl9tb3VzZURpc3BhdGNoZXI9bnVsbCx0aGlzLl90b3VjaERpc3BhdGNoZXIub2ZmVG91Y2hTdGFydCh0aGlzLl90b3VjaFN0YXJ0Q2FsbGJhY2spLHRoaXMuX3RvdWNoRGlzcGF0Y2hlci5vZmZUb3VjaE1vdmUodGhpcy5fdG91Y2hNb3ZlQ2FsbGJhY2spLHRoaXMuX3RvdWNoRGlzcGF0Y2hlci5vZmZUb3VjaEVuZCh0aGlzLl90b3VjaEVuZENhbGxiYWNrKSx0aGlzLl90b3VjaERpc3BhdGNoZXIub2ZmVG91Y2hDYW5jZWwodGhpcy5fdG91Y2hDYW5jZWxDYWxsYmFjayksdGhpcy5fdG91Y2hEaXNwYXRjaGVyPW51bGwsdGhpcy5fZHJhZ0ludGVyYWN0aW9uLmRldGFjaCgpfSxlLnByb3RvdHlwZS5faGFuZGxlVG91Y2hTdGFydD1mdW5jdGlvbih0LGUsbil7Zm9yKHZhciBpPTA7aTx0Lmxlbmd0aCYmdGhpcy5fdG91Y2hJZHMuc2l6ZSgpPDI7aSsrKXt2YXIgcj10W2ldO3RoaXMuX3RvdWNoSWRzLnNldChyLnRvU3RyaW5nKCksdGhpcy5fdHJhbnNsYXRlVG9Db21wb25lbnRTcGFjZShlW3JdKSl9fSxlLnByb3RvdHlwZS5faGFuZGxlUGluY2g9ZnVuY3Rpb24odCxuLGkpe3ZhciByPXRoaXM7aWYoISh0aGlzLl90b3VjaElkcy5zaXplKCk8Mikpe3ZhciBvPXRoaXMuX3RvdWNoSWRzLnZhbHVlcygpO2lmKHRoaXMuX2lzSW5zaWRlQ29tcG9uZW50KHRoaXMuX3RyYW5zbGF0ZVRvQ29tcG9uZW50U3BhY2Uob1swXSkpJiZ0aGlzLl9pc0luc2lkZUNvbXBvbmVudCh0aGlzLl90cmFuc2xhdGVUb0NvbXBvbmVudFNwYWNlKG9bMV0pKSl7dmFyIGE9ZS5fcG9pbnREaXN0YW5jZShvWzBdLG9bMV0pO2lmKDAhPT1hKXt0LmZvckVhY2goKGZ1bmN0aW9uKHQpe3IuX3RvdWNoSWRzLmhhcyh0LnRvU3RyaW5nKCkpJiZyLl90b3VjaElkcy5zZXQodC50b1N0cmluZygpLHIuX3RyYW5zbGF0ZVRvQ29tcG9uZW50U3BhY2Uoblt0XSkpfSkpO3ZhciBzPXRoaXMuX3RvdWNoSWRzLnZhbHVlcygpLGw9ZS5fcG9pbnREaXN0YW5jZShzWzBdLHNbMV0pO2lmKDAhPT1sKXt2YXIgYz1hL2wsdT1zLm1hcCgoZnVuY3Rpb24odCxlKXtyZXR1cm57eDoodC54LW9bZV0ueCkvYyx5Oih0Lnktb1tlXS55KS9jfX0pKSxoPWUuY2VudGVyUG9pbnQob1swXSxvWzFdKSxkPXRoaXMuem9vbShjLGgpLHA9ZC5jZW50ZXJWYWx1ZSxmPWQuem9vbUFtb3VudCxtPXAuY2VudGVyWCxnPXAuY2VudGVyWSxfPW8ubWFwKChmdW5jdGlvbih0LGUpe3JldHVybnt4OnVbZV0ueCpmK3QueCx5OnVbZV0ueSpmK3QueX19KSk7dGhpcy5wYW4oe3g6bS0oX1swXS54K19bMV0ueCkvMix5OmctKF9bMF0ueStfWzFdLnkpLzJ9KX19fX19LGUuY2VudGVyUG9pbnQ9ZnVuY3Rpb24odCxlKXt2YXIgbj1NYXRoLm1pbih0LngsZS54KSxpPU1hdGgubWF4KHQueCxlLngpLHI9TWF0aC5taW4odC55LGUueSk7cmV0dXJue3g6KG4raSkvMix5OihNYXRoLm1heCh0LnksZS55KStyKS8yfX0sZS5fcG9pbnREaXN0YW5jZT1mdW5jdGlvbih0LGUpe3ZhciBuPU1hdGgubWluKHQueCxlLngpLGk9TWF0aC5tYXgodC54LGUueCkscj1NYXRoLm1pbih0LnksZS55KSxvPU1hdGgubWF4KHQueSxlLnkpO3JldHVybiBNYXRoLnNxcnQoTWF0aC5wb3coaS1uLDIpK01hdGgucG93KG8tciwyKSl9LGUucHJvdG90eXBlLl9oYW5kbGVUb3VjaEVuZD1mdW5jdGlvbih0LGUsbil7dmFyIGk9dGhpczt0LmZvckVhY2goKGZ1bmN0aW9uKHQpe2kuX3RvdWNoSWRzLnJlbW92ZSh0LnRvU3RyaW5nKCkpfSkpLHRoaXMuX3RvdWNoSWRzLnNpemUoKT4wJiZ0aGlzLl96b29tRW5kQ2FsbGJhY2tzLmNhbGxDYWxsYmFja3MoKX0sZS5wcm90b3R5cGUuX2hhbmRsZVdoZWVsRXZlbnQ9ZnVuY3Rpb24odCxuKXtpZih0aGlzLl93aGVlbEZpbHRlcihuKSl7dmFyIGk9dGhpcy5fdHJhbnNsYXRlVG9Db21wb25lbnRTcGFjZSh0KTtpZih0aGlzLl9pc0luc2lkZUNvbXBvbmVudChpKSl7bi5wcmV2ZW50RGVmYXVsdCgpO3ZhciByPU1hdGgucG93KDIsKDAhPT1uLmRlbHRhWT9uLmRlbHRhWTpuLmRlbHRhWCkqKG4uZGVsdGFNb2RlP2UuX1BJWEVMU19QRVJfTElORToxKSouMDAyKTt0aGlzLnpvb20ocixpKSx0aGlzLl96b29tRW5kQ2FsbGJhY2tzLmNhbGxDYWxsYmFja3MoKX19fSxlLnByb3RvdHlwZS5fY29uc3RyYWluZWRab29tPWZ1bmN0aW9uKHQsZSxuKXtyZXR1cm4gdm10LmNvbnN0cmFpbmVkWm9vbSh0LGUsbix0aGlzLm1pbkRvbWFpbkV4dGVudCh0KSx0aGlzLm1heERvbWFpbkV4dGVudCh0KSx0aGlzLm1pbkRvbWFpblZhbHVlKHQpLHRoaXMubWF4RG9tYWluVmFsdWUodCkpfSxlLnByb3RvdHlwZS5fY29uc3RyYWluZWRUcmFuc2xhdGlvbj1mdW5jdGlvbih0LGUpe3JldHVybiB2bXQuY29uc3RyYWluZWRUcmFuc2xhdGlvbih0LGUsdGhpcy5taW5Eb21haW5WYWx1ZSh0KSx0aGlzLm1heERvbWFpblZhbHVlKHQpKX0sZS5wcm90b3R5cGUuX3NldHVwRHJhZ0ludGVyYWN0aW9uPWZ1bmN0aW9uKCl7dmFyIHQsZT10aGlzO3RoaXMuX2RyYWdJbnRlcmFjdGlvbi5jb25zdHJhaW5lZFRvQ29tcG9uZW50KCExKSx0aGlzLl9kcmFnSW50ZXJhY3Rpb24ub25EcmFnU3RhcnQoKGZ1bmN0aW9uKCl7cmV0dXJuIHQ9bnVsbH0pKSx0aGlzLl9kcmFnSW50ZXJhY3Rpb24ub25EcmFnKChmdW5jdGlvbihuLGkpe2UuX3RvdWNoSWRzLnNpemUoKT49Mnx8KGUucGFuKHt4OihudWxsPT10P24ueDp0LngpLWkueCx5OihudWxsPT10P24ueTp0LnkpLWkueX0pLHQ9aSl9KSksdGhpcy5fZHJhZ0ludGVyYWN0aW9uLm9uRHJhZ0VuZCgoZnVuY3Rpb24oKXtyZXR1cm4gZS5fcGFuRW5kQ2FsbGJhY2tzLmNhbGxDYWxsYmFja3MoKX0pKX0sZS5wcm90b3R5cGUuX25vbkxpbmVhclNjYWxlV2l0aEV4dGVudHM9ZnVuY3Rpb24odCl7cmV0dXJuIShudWxsPT10aGlzLm1pbkRvbWFpbkV4dGVudCh0KXx8bnVsbD09dGhpcy5tYXhEb21haW5FeHRlbnQodCl8fHQgaW5zdGFuY2VvZiBrbXQuTGluZWFyfHx0IGluc3RhbmNlb2Yga210LlRpbWUpfSxlLnByb3RvdHlwZS54U2NhbGVzPWZ1bmN0aW9uKHQpe3ZhciBlPXRoaXM7aWYobnVsbD09dCl7dmFyIG49W107cmV0dXJuIHRoaXMuX3hTY2FsZXMuZm9yRWFjaCgoZnVuY3Rpb24odCl7bi5wdXNoKHQpfSkpLG59cmV0dXJuIHRoaXMuX3hTY2FsZXM9bmV3IHVtdC5TZXQsdC5mb3JFYWNoKChmdW5jdGlvbih0KXtlLmFkZFhTY2FsZSh0KX0pKSx0aGlzfSxlLnByb3RvdHlwZS55U2NhbGVzPWZ1bmN0aW9uKHQpe3ZhciBlPXRoaXM7aWYobnVsbD09dCl7dmFyIG49W107cmV0dXJuIHRoaXMuX3lTY2FsZXMuZm9yRWFjaCgoZnVuY3Rpb24odCl7bi5wdXNoKHQpfSkpLG59cmV0dXJuIHRoaXMuX3lTY2FsZXM9bmV3IHVtdC5TZXQsdC5mb3JFYWNoKChmdW5jdGlvbih0KXtlLmFkZFlTY2FsZSh0KX0pKSx0aGlzfSxlLnByb3RvdHlwZS5hZGRYU2NhbGU9ZnVuY3Rpb24odCl7cmV0dXJuIHRoaXMuX3hTY2FsZXMuYWRkKHQpLHRoaXN9LGUucHJvdG90eXBlLnJlbW92ZVhTY2FsZT1mdW5jdGlvbih0KXtyZXR1cm4gdGhpcy5feFNjYWxlcy5kZWxldGUodCksdGhpcy5fbWluRG9tYWluRXh0ZW50cy5kZWxldGUodCksdGhpcy5fbWF4RG9tYWluRXh0ZW50cy5kZWxldGUodCksdGhpcy5fbWluRG9tYWluVmFsdWVzLmRlbGV0ZSh0KSx0aGlzLl9tYXhEb21haW5WYWx1ZXMuZGVsZXRlKHQpLHRoaXN9LGUucHJvdG90eXBlLmFkZFlTY2FsZT1mdW5jdGlvbih0KXtyZXR1cm4gdGhpcy5feVNjYWxlcy5hZGQodCksdGhpc30sZS5wcm90b3R5cGUucmVtb3ZlWVNjYWxlPWZ1bmN0aW9uKHQpe3JldHVybiB0aGlzLl95U2NhbGVzLmRlbGV0ZSh0KSx0aGlzLl9taW5Eb21haW5FeHRlbnRzLmRlbGV0ZSh0KSx0aGlzLl9tYXhEb21haW5FeHRlbnRzLmRlbGV0ZSh0KSx0aGlzLl9taW5Eb21haW5WYWx1ZXMuZGVsZXRlKHQpLHRoaXMuX21heERvbWFpblZhbHVlcy5kZWxldGUodCksdGhpc30sZS5wcm90b3R5cGUubWluRG9tYWluRXh0ZW50PWZ1bmN0aW9uKHQsZSl7aWYobnVsbD09ZSlyZXR1cm4gdGhpcy5fbWluRG9tYWluRXh0ZW50cy5nZXQodCk7aWYoZS52YWx1ZU9mKCk8MCl0aHJvdyBuZXcgRXJyb3IoImV4dGVudCBtdXN0IGJlIG5vbi1uZWdhdGl2ZSIpO3ZhciBuPXRoaXMubWF4RG9tYWluRXh0ZW50KHQpO2lmKG51bGwhPW4mJm4udmFsdWVPZigpPGUudmFsdWVPZigpKXRocm93IG5ldyBFcnJvcigibWluRG9tYWluRXh0ZW50IG11c3QgYmUgc21hbGxlciB0aGFuIG1heERvbWFpbkV4dGVudCBmb3IgdGhlIHNhbWUgU2NhbGUiKTtyZXR1cm4gdGhpcy5fbm9uTGluZWFyU2NhbGVXaXRoRXh0ZW50cyh0KSYmdW10LldpbmRvdy53YXJuKCJQYW5uaW5nIGFuZCB6b29taW5nIHdpdGggZXh0ZW50cyBvbiBhIG5vbmxpbmVhciBzY2FsZSBtYXkgaGF2ZSB1bmludGVuZGVkIGJlaGF2aW9yLiIpLHRoaXMuX21pbkRvbWFpbkV4dGVudHMuc2V0KHQsZSksdGhpc30sZS5wcm90b3R5cGUubWF4RG9tYWluRXh0ZW50PWZ1bmN0aW9uKHQsZSl7aWYobnVsbD09ZSlyZXR1cm4gdGhpcy5fbWF4RG9tYWluRXh0ZW50cy5nZXQodCk7aWYoZS52YWx1ZU9mKCk8PTApdGhyb3cgbmV3IEVycm9yKCJleHRlbnQgbXVzdCBiZSBwb3NpdGl2ZSIpO3ZhciBuPXRoaXMubWluRG9tYWluRXh0ZW50KHQpO2lmKG51bGwhPW4mJmUudmFsdWVPZigpPG4udmFsdWVPZigpKXRocm93IG5ldyBFcnJvcigibWF4RG9tYWluRXh0ZW50IG11c3QgYmUgbGFyZ2VyIHRoYW4gbWluRG9tYWluRXh0ZW50IGZvciB0aGUgc2FtZSBTY2FsZSIpO3JldHVybiB0aGlzLl9ub25MaW5lYXJTY2FsZVdpdGhFeHRlbnRzKHQpJiZ1bXQuV2luZG93Lndhcm4oIlBhbm5pbmcgYW5kIHpvb21pbmcgd2l0aCBleHRlbnRzIG9uIGEgbm9ubGluZWFyIHNjYWxlIG1heSBoYXZlIHVuaW50ZW5kZWQgYmVoYXZpb3IuIiksdGhpcy5fbWF4RG9tYWluRXh0ZW50cy5zZXQodCxlKSx0aGlzfSxlLnByb3RvdHlwZS5taW5Eb21haW5WYWx1ZT1mdW5jdGlvbih0LGUpe3JldHVybiBudWxsPT1lP3RoaXMuX21pbkRvbWFpblZhbHVlcy5nZXQodCk6KHRoaXMuX21pbkRvbWFpblZhbHVlcy5zZXQodCxlKSx0aGlzKX0sZS5wcm90b3R5cGUubWF4RG9tYWluVmFsdWU9ZnVuY3Rpb24odCxlKXtyZXR1cm4gbnVsbD09ZT90aGlzLl9tYXhEb21haW5WYWx1ZXMuZ2V0KHQpOih0aGlzLl9tYXhEb21haW5WYWx1ZXMuc2V0KHQsZSksdGhpcyl9LGUucHJvdG90eXBlLnNldE1pbk1heERvbWFpblZhbHVlc1RvPWZ1bmN0aW9uKHQpe3RoaXMuX21pbkRvbWFpblZhbHVlcy5kZWxldGUodCksdGhpcy5fbWF4RG9tYWluVmFsdWVzLmRlbGV0ZSh0KTt2YXIgZT10LmdldFRyYW5zZm9ybWF0aW9uRG9tYWluKCksbj1lWzFdO3JldHVybiB0aGlzLm1pbkRvbWFpblZhbHVlKHQsZVswXSksdGhpcy5tYXhEb21haW5WYWx1ZSh0LG4pLHRoaXN9LGUucHJvdG90eXBlLm9uUGFuRW5kPWZ1bmN0aW9uKHQpe3JldHVybiB0aGlzLl9wYW5FbmRDYWxsYmFja3MuYWRkKHQpLHRoaXN9LGUucHJvdG90eXBlLm9mZlBhbkVuZD1mdW5jdGlvbih0KXtyZXR1cm4gdGhpcy5fcGFuRW5kQ2FsbGJhY2tzLmRlbGV0ZSh0KSx0aGlzfSxlLnByb3RvdHlwZS5vblpvb21FbmQ9ZnVuY3Rpb24odCl7cmV0dXJuIHRoaXMuX3pvb21FbmRDYWxsYmFja3MuYWRkKHQpLHRoaXN9LGUucHJvdG90eXBlLm9mZlpvb21FbmQ9ZnVuY3Rpb24odCl7cmV0dXJuIHRoaXMuX3pvb21FbmRDYWxsYmFja3MuZGVsZXRlKHQpLHRoaXN9LGUucHJvdG90eXBlLm9uUGFuWm9vbVVwZGF0ZT1mdW5jdGlvbih0KXtyZXR1cm4gdGhpcy5fcGFuWm9vbVVwZGF0ZUNhbGxiYWNrcy5hZGQodCksdGhpc30sZS5wcm90b3R5cGUub2ZmUGFuWm9vbVVwZGF0ZT1mdW5jdGlvbih0KXtyZXR1cm4gdGhpcy5fcGFuWm9vbVVwZGF0ZUNhbGxiYWNrcy5kZWxldGUodCksdGhpc30sZS5fUElYRUxTX1BFUl9MSU5FPTEyMCxlfSkoRG10LkludGVyYWN0aW9uKTtlLlBhblpvb209bn0pKSxqbXQ9YmUoKGZ1bmN0aW9uKHQsZSl7Ci8qKgogICAgICogQ29weXJpZ2h0IDIwMTQtcHJlc2VudCBQYWxhbnRpciBUZWNobm9sb2dpZXMKICAgICAqIEBsaWNlbnNlIE1JVAogICAgICovCk9iamVjdC5kZWZpbmVQcm9wZXJ0eShlLCJfX2VzTW9kdWxlIix7dmFsdWU6ITB9KTt2YXIgbj0oZnVuY3Rpb24odCl7ZnVuY3Rpb24gZSgpe3ZhciBlPW51bGwhPT10JiZ0LmFwcGx5KHRoaXMsYXJndW1lbnRzKXx8dGhpcztyZXR1cm4gZS5fb3ZlckNvbXBvbmVudD0hMSxlLl9wb2ludGVyRW50ZXJDYWxsYmFja3M9bmV3IHVtdC5DYWxsYmFja1NldCxlLl9wb2ludGVyTW92ZUNhbGxiYWNrcz1uZXcgdW10LkNhbGxiYWNrU2V0LGUuX3BvaW50ZXJFeGl0Q2FsbGJhY2tzPW5ldyB1bXQuQ2FsbGJhY2tTZXQsZS5fbW91c2VNb3ZlQ2FsbGJhY2s9ZnVuY3Rpb24odCxuKXtyZXR1cm4gZS5faGFuZGxlTW91c2VFdmVudCh0LG4pfSxlLl90b3VjaFN0YXJ0Q2FsbGJhY2s9ZnVuY3Rpb24odCxuLGkpe3JldHVybiBlLl9oYW5kbGVUb3VjaEV2ZW50KG5bdFswXV0saSl9LGV9cmV0dXJuIFNmdC5fX2V4dGVuZHMoZSx0KSxlLnByb3RvdHlwZS5fYW5jaG9yPWZ1bmN0aW9uKGUpe3QucHJvdG90eXBlLl9hbmNob3IuY2FsbCh0aGlzLGUpLHRoaXMuX21vdXNlRGlzcGF0Y2hlcj16bXQuTW91c2UuZ2V0RGlzcGF0Y2hlcih0aGlzLl9jb21wb25lbnRBdHRhY2hlZFRvKSx0aGlzLl9tb3VzZURpc3BhdGNoZXIub25Nb3VzZU1vdmUodGhpcy5fbW91c2VNb3ZlQ2FsbGJhY2spLHRoaXMuX3RvdWNoRGlzcGF0Y2hlcj16bXQuVG91Y2guZ2V0RGlzcGF0Y2hlcih0aGlzLl9jb21wb25lbnRBdHRhY2hlZFRvKSx0aGlzLl90b3VjaERpc3BhdGNoZXIub25Ub3VjaFN0YXJ0KHRoaXMuX3RvdWNoU3RhcnRDYWxsYmFjayl9LGUucHJvdG90eXBlLl91bmFuY2hvcj1mdW5jdGlvbigpe3QucHJvdG90eXBlLl91bmFuY2hvci5jYWxsKHRoaXMpLHRoaXMuX21vdXNlRGlzcGF0Y2hlci5vZmZNb3VzZU1vdmUodGhpcy5fbW91c2VNb3ZlQ2FsbGJhY2spLHRoaXMuX21vdXNlRGlzcGF0Y2hlcj1udWxsLHRoaXMuX3RvdWNoRGlzcGF0Y2hlci5vZmZUb3VjaFN0YXJ0KHRoaXMuX3RvdWNoU3RhcnRDYWxsYmFjayksdGhpcy5fdG91Y2hEaXNwYXRjaGVyPW51bGx9LGUucHJvdG90eXBlLl9oYW5kbGVNb3VzZUV2ZW50PWZ1bmN0aW9uKHQsZSl7dmFyIG49dGhpcy5fbW91c2VEaXNwYXRjaGVyLmV2ZW50SW5zaWRlKHRoaXMuX2NvbXBvbmVudEF0dGFjaGVkVG8sZSk7dGhpcy5faGFuZGxlUG9pbnRlckV2ZW50KHQsbil9LGUucHJvdG90eXBlLl9oYW5kbGVUb3VjaEV2ZW50PWZ1bmN0aW9uKHQsZSl7dmFyIG49dGhpcy5fdG91Y2hEaXNwYXRjaGVyLmV2ZW50SW5zaWRlKHRoaXMuX2NvbXBvbmVudEF0dGFjaGVkVG8sZSk7dGhpcy5faGFuZGxlUG9pbnRlckV2ZW50KHQsbil9LGUucHJvdG90eXBlLl9oYW5kbGVQb2ludGVyRXZlbnQ9ZnVuY3Rpb24odCxlKXt2YXIgbj10aGlzLl90cmFuc2xhdGVUb0NvbXBvbmVudFNwYWNlKHQpLGk9dGhpcy5faXNJbnNpZGVDb21wb25lbnQobik7aSYmZT8odGhpcy5fb3ZlckNvbXBvbmVudHx8dGhpcy5fcG9pbnRlckVudGVyQ2FsbGJhY2tzLmNhbGxDYWxsYmFja3MobiksdGhpcy5fcG9pbnRlck1vdmVDYWxsYmFja3MuY2FsbENhbGxiYWNrcyhuKSk6dGhpcy5fb3ZlckNvbXBvbmVudCYmdGhpcy5fcG9pbnRlckV4aXRDYWxsYmFja3MuY2FsbENhbGxiYWNrcyhuKSx0aGlzLl9vdmVyQ29tcG9uZW50PWkmJmV9LGUucHJvdG90eXBlLm9uUG9pbnRlckVudGVyPWZ1bmN0aW9uKHQpe3JldHVybiB0aGlzLl9wb2ludGVyRW50ZXJDYWxsYmFja3MuYWRkKHQpLHRoaXN9LGUucHJvdG90eXBlLm9mZlBvaW50ZXJFbnRlcj1mdW5jdGlvbih0KXtyZXR1cm4gdGhpcy5fcG9pbnRlckVudGVyQ2FsbGJhY2tzLmRlbGV0ZSh0KSx0aGlzfSxlLnByb3RvdHlwZS5vblBvaW50ZXJNb3ZlPWZ1bmN0aW9uKHQpe3JldHVybiB0aGlzLl9wb2ludGVyTW92ZUNhbGxiYWNrcy5hZGQodCksdGhpc30sZS5wcm90b3R5cGUub2ZmUG9pbnRlck1vdmU9ZnVuY3Rpb24odCl7cmV0dXJuIHRoaXMuX3BvaW50ZXJNb3ZlQ2FsbGJhY2tzLmRlbGV0ZSh0KSx0aGlzfSxlLnByb3RvdHlwZS5vblBvaW50ZXJFeGl0PWZ1bmN0aW9uKHQpe3JldHVybiB0aGlzLl9wb2ludGVyRXhpdENhbGxiYWNrcy5hZGQodCksdGhpc30sZS5wcm90b3R5cGUub2ZmUG9pbnRlckV4aXQ9ZnVuY3Rpb24odCl7cmV0dXJuIHRoaXMuX3BvaW50ZXJFeGl0Q2FsbGJhY2tzLmRlbGV0ZSh0KSx0aGlzfSxlfSkoRG10LkludGVyYWN0aW9uKTtlLlBvaW50ZXI9bn0pKSxVbXQ9YmUoKGZ1bmN0aW9uKHQsZSl7Ci8qKgogICAgICogQ29weXJpZ2h0IDIwMTQtcHJlc2VudCBQYWxhbnRpciBUZWNobm9sb2dpZXMKICAgICAqIEBsaWNlbnNlIE1JVAogICAgICovCk9iamVjdC5kZWZpbmVQcm9wZXJ0eShlLCJfX2VzTW9kdWxlIix7dmFsdWU6ITB9KSxTZnQuX19leHBvcnRTdGFyKEJtdCxlKSxTZnQuX19leHBvcnRTdGFyKEhtdCxlKSxTZnQuX19leHBvcnRTdGFyKEZtdCxlKSxTZnQuX19leHBvcnRTdGFyKFZtdCxlKSxTZnQuX19leHBvcnRTdGFyKGptdCxlKSxlLnpvb21PdXQ9dm10Lnpvb21PdXR9KSksR210PWJlKChmdW5jdGlvbih0LGUpe3ZhciBuOwovKioKICAgICAqIENvcHlyaWdodCAyMDE0LXByZXNlbnQgUGFsYW50aXIgVGVjaG5vbG9naWVzCiAgICAgKiBAbGljZW5zZSBNSVQKICAgICAqLwpPYmplY3QuZGVmaW5lUHJvcGVydHkoZSwiX19lc01vZHVsZSIse3ZhbHVlOiEwfSksKGZ1bmN0aW9uKHQpe3RbdC5WQUxVRT0wXT0iVkFMVUUiLHRbdC5QSVhFTD0xXT0iUElYRUwifSkobj1lLlByb3BlcnR5TW9kZXx8KGUuUHJvcGVydHlNb2RlPXt9KSk7dmFyIGk9KGZ1bmN0aW9uKHQpe2Z1bmN0aW9uIGUoKXt2YXIgZT10LmNhbGwodGhpcyl8fHRoaXM7cmV0dXJuIGUuX2JveFZpc2libGU9ITEsZS5fYm94Qm91bmRzPXt0b3BMZWZ0Ont4OjAseTowfSxib3R0b21SaWdodDp7eDowLHk6MH19LGUuX3hCb3VuZHNNb2RlPW4uUElYRUwsZS5feUJvdW5kc01vZGU9bi5QSVhFTCxlLmFkZENsYXNzKCJzZWxlY3Rpb24tYm94LWxheWVyIiksZS5fYWRqdXN0Qm91bmRzQ2FsbGJhY2s9ZnVuY3Rpb24oKXtlLnJlbmRlcigpfSxlLl9vdmVyZmxvd0hpZGRlbj0hMCxlLl94RXh0ZW50PVt2b2lkIDAsdm9pZCAwXSxlLl95RXh0ZW50PVt2b2lkIDAsdm9pZCAwXSxlfXJldHVybiBTZnQuX19leHRlbmRzKGUsdCksZS5wcm90b3R5cGUuX3NldHVwPWZ1bmN0aW9uKCl7dC5wcm90b3R5cGUuX3NldHVwLmNhbGwodGhpcyksdGhpcy5fYm94PXRoaXMuY29udGVudCgpLmFwcGVuZCgiZyIpLmNsYXNzZWQoInNlbGVjdGlvbi1ib3giLCEwKS5yZW1vdmUoKSx0aGlzLl9ib3hBcmVhPXRoaXMuX2JveC5hcHBlbmQoInJlY3QiKS5jbGFzc2VkKCJzZWxlY3Rpb24tYXJlYSIsITApfSxlLnByb3RvdHlwZS5fc2l6ZUZyb21PZmZlcj1mdW5jdGlvbih0LGUpe3JldHVybnt3aWR0aDp0LGhlaWdodDplfX0sZS5wcm90b3R5cGUuYm91bmRzPWZ1bmN0aW9uKHQpe3JldHVybiBudWxsPT10P3RoaXMuX2dldEJvdW5kcygpOih0aGlzLl9zZXRCb3VuZHModCksdGhpcy5feEJvdW5kc01vZGU9bi5QSVhFTCx0aGlzLl95Qm91bmRzTW9kZT1uLlBJWEVMLHRoaXMucmVuZGVyKCksdGhpcyl9LGUucHJvdG90eXBlLl9zZXRCb3VuZHM9ZnVuY3Rpb24odCl7dmFyIGU9e3g6TWF0aC5taW4odC50b3BMZWZ0LngsdC5ib3R0b21SaWdodC54KSx5Ok1hdGgubWluKHQudG9wTGVmdC55LHQuYm90dG9tUmlnaHQueSl9LG49e3g6TWF0aC5tYXgodC50b3BMZWZ0LngsdC5ib3R0b21SaWdodC54KSx5Ok1hdGgubWF4KHQudG9wTGVmdC55LHQuYm90dG9tUmlnaHQueSl9O3RoaXMuX2JveEJvdW5kcz17dG9wTGVmdDplLGJvdHRvbVJpZ2h0Om59fSxlLnByb3RvdHlwZS5fZ2V0Qm91bmRzPWZ1bmN0aW9uKCl7cmV0dXJue3RvcExlZnQ6e3g6dGhpcy5feEJvdW5kc01vZGU9PT1uLlBJWEVMP3RoaXMuX2JveEJvdW5kcy50b3BMZWZ0Lng6bnVsbD09dGhpcy5feFNjYWxlPzA6TWF0aC5taW4odGhpcy54U2NhbGUoKS5zY2FsZSh0aGlzLnhFeHRlbnQoKVswXSksdGhpcy54U2NhbGUoKS5zY2FsZSh0aGlzLnhFeHRlbnQoKVsxXSkpLHk6dGhpcy5feUJvdW5kc01vZGU9PT1uLlBJWEVMP3RoaXMuX2JveEJvdW5kcy50b3BMZWZ0Lnk6bnVsbD09dGhpcy5feVNjYWxlPzA6TWF0aC5taW4odGhpcy55U2NhbGUoKS5zY2FsZSh0aGlzLnlFeHRlbnQoKVswXSksdGhpcy55U2NhbGUoKS5zY2FsZSh0aGlzLnlFeHRlbnQoKVsxXSkpfSxib3R0b21SaWdodDp7eDp0aGlzLl94Qm91bmRzTW9kZT09PW4uUElYRUw/dGhpcy5fYm94Qm91bmRzLmJvdHRvbVJpZ2h0Lng6bnVsbD09dGhpcy5feFNjYWxlPzA6TWF0aC5tYXgodGhpcy54U2NhbGUoKS5zY2FsZSh0aGlzLnhFeHRlbnQoKVswXSksdGhpcy54U2NhbGUoKS5zY2FsZSh0aGlzLnhFeHRlbnQoKVsxXSkpLHk6dGhpcy5feUJvdW5kc01vZGU9PT1uLlBJWEVMP3RoaXMuX2JveEJvdW5kcy5ib3R0b21SaWdodC55Om51bGw9PXRoaXMuX3lTY2FsZT8wOk1hdGgubWF4KHRoaXMueVNjYWxlKCkuc2NhbGUodGhpcy55RXh0ZW50KClbMF0pLHRoaXMueVNjYWxlKCkuc2NhbGUodGhpcy55RXh0ZW50KClbMV0pKX19fSxlLnByb3RvdHlwZS5yZW5kZXJJbW1lZGlhdGVseT1mdW5jdGlvbigpe2lmKHQucHJvdG90eXBlLnJlbmRlckltbWVkaWF0ZWx5LmNhbGwodGhpcyksdGhpcy5fYm94VmlzaWJsZSl7dmFyIGU9dGhpcy5ib3VuZHMoKSxuPWUudG9wTGVmdC55LGk9ZS5ib3R0b21SaWdodC55LHI9ZS50b3BMZWZ0Lngsbz1lLmJvdHRvbVJpZ2h0Lng7aWYoISh1bXQuTWF0aC5pc1ZhbGlkTnVtYmVyKG4pJiZ1bXQuTWF0aC5pc1ZhbGlkTnVtYmVyKGkpJiZ1bXQuTWF0aC5pc1ZhbGlkTnVtYmVyKHIpJiZ1bXQuTWF0aC5pc1ZhbGlkTnVtYmVyKG8pKSl0aHJvdyBuZXcgRXJyb3IoImJvdW5kcyBoYXZlIG5vdCBiZWVuIHByb3Blcmx5IHNldCIpO3RoaXMuX2JveEFyZWEuYXR0cnMoe3g6cix5Om4sd2lkdGg6by1yLGhlaWdodDppLW59KSx0aGlzLmNvbnRlbnQoKS5ub2RlKCkuYXBwZW5kQ2hpbGQodGhpcy5fYm94Lm5vZGUoKSl9ZWxzZSB0aGlzLl9ib3gucmVtb3ZlKCk7cmV0dXJuIHRoaXN9LGUucHJvdG90eXBlLmJveFZpc2libGU9ZnVuY3Rpb24odCl7cmV0dXJuIG51bGw9PXQ/dGhpcy5fYm94VmlzaWJsZToodGhpcy5fYm94VmlzaWJsZT10LHRoaXMucmVuZGVyKCksdGhpcyl9LGUucHJvdG90eXBlLmZpeGVkV2lkdGg9ZnVuY3Rpb24oKXtyZXR1cm4hMH0sZS5wcm90b3R5cGUuZml4ZWRIZWlnaHQ9ZnVuY3Rpb24oKXtyZXR1cm4hMH0sZS5wcm90b3R5cGUueFNjYWxlPWZ1bmN0aW9uKHQpe3JldHVybiBudWxsPT10P3RoaXMuX3hTY2FsZToobnVsbCE9dGhpcy5feFNjYWxlJiZ0aGlzLl94U2NhbGUub2ZmVXBkYXRlKHRoaXMuX2FkanVzdEJvdW5kc0NhbGxiYWNrKSx0aGlzLl94U2NhbGU9dCx0aGlzLl94Qm91bmRzTW9kZT1uLlZBTFVFLHRoaXMuX3hTY2FsZS5vblVwZGF0ZSh0aGlzLl9hZGp1c3RCb3VuZHNDYWxsYmFjayksdGhpcy5yZW5kZXIoKSx0aGlzKX0sZS5wcm90b3R5cGUueVNjYWxlPWZ1bmN0aW9uKHQpe3JldHVybiBudWxsPT10P3RoaXMuX3lTY2FsZToobnVsbCE9dGhpcy5feVNjYWxlJiZ0aGlzLl95U2NhbGUub2ZmVXBkYXRlKHRoaXMuX2FkanVzdEJvdW5kc0NhbGxiYWNrKSx0aGlzLl95U2NhbGU9dCx0aGlzLl95Qm91bmRzTW9kZT1uLlZBTFVFLHRoaXMuX3lTY2FsZS5vblVwZGF0ZSh0aGlzLl9hZGp1c3RCb3VuZHNDYWxsYmFjayksdGhpcy5yZW5kZXIoKSx0aGlzKX0sZS5wcm90b3R5cGUueEV4dGVudD1mdW5jdGlvbih0KXtyZXR1cm4gbnVsbD09dD90aGlzLl9nZXRYRXh0ZW50KCk6KHRoaXMuX3NldFhFeHRlbnQodCksdGhpcy5feEJvdW5kc01vZGU9bi5WQUxVRSx0aGlzLnJlbmRlcigpLHRoaXMpfSxlLnByb3RvdHlwZS5fZ2V0WEV4dGVudD1mdW5jdGlvbigpe3JldHVybiB0aGlzLl94Qm91bmRzTW9kZT09PW4uVkFMVUU/dGhpcy5feEV4dGVudDpudWxsPT10aGlzLl94U2NhbGU/W3ZvaWQgMCx2b2lkIDBdOlt0aGlzLl94U2NhbGUuaW52ZXJ0KHRoaXMuX2JveEJvdW5kcy50b3BMZWZ0LngpLHRoaXMuX3hTY2FsZS5pbnZlcnQodGhpcy5fYm94Qm91bmRzLmJvdHRvbVJpZ2h0LngpXX0sZS5wcm90b3R5cGUuX3NldFhFeHRlbnQ9ZnVuY3Rpb24odCl7dGhpcy5feEV4dGVudD10fSxlLnByb3RvdHlwZS55RXh0ZW50PWZ1bmN0aW9uKHQpe3JldHVybiBudWxsPT10P3RoaXMuX2dldFlFeHRlbnQoKToodGhpcy5fc2V0WUV4dGVudCh0KSx0aGlzLl95Qm91bmRzTW9kZT1uLlZBTFVFLHRoaXMucmVuZGVyKCksdGhpcyl9LGUucHJvdG90eXBlLl9nZXRZRXh0ZW50PWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuX3lCb3VuZHNNb2RlPT09bi5WQUxVRT90aGlzLl95RXh0ZW50Om51bGw9PXRoaXMuX3lTY2FsZT9bdm9pZCAwLHZvaWQgMF06W3RoaXMuX3lTY2FsZS5pbnZlcnQodGhpcy5fYm94Qm91bmRzLnRvcExlZnQueSksdGhpcy5feVNjYWxlLmludmVydCh0aGlzLl9ib3hCb3VuZHMuYm90dG9tUmlnaHQueSldfSxlLnByb3RvdHlwZS5fc2V0WUV4dGVudD1mdW5jdGlvbih0KXt0aGlzLl95RXh0ZW50PXR9LGUucHJvdG90eXBlLmRlc3Ryb3k9ZnVuY3Rpb24oKXt0LnByb3RvdHlwZS5kZXN0cm95LmNhbGwodGhpcyksbnVsbCE9dGhpcy5feFNjYWxlJiZ0aGlzLnhTY2FsZSgpLm9mZlVwZGF0ZSh0aGlzLl9hZGp1c3RCb3VuZHNDYWxsYmFjayksbnVsbCE9dGhpcy5feVNjYWxlJiZ0aGlzLnlTY2FsZSgpLm9mZlVwZGF0ZSh0aGlzLl9hZGp1c3RCb3VuZHNDYWxsYmFjayl9LGV9KShwbXQuQ29tcG9uZW50KTtlLlNlbGVjdGlvbkJveExheWVyPWl9KSksV210PWJlKChmdW5jdGlvbih0LGUpewovKioKICAgICAqIENvcHlyaWdodCAyMDE0LXByZXNlbnQgUGFsYW50aXIgVGVjaG5vbG9naWVzCiAgICAgKiBAbGljZW5zZSBNSVQKICAgICAqLwpPYmplY3QuZGVmaW5lUHJvcGVydHkoZSwiX19lc01vZHVsZSIse3ZhbHVlOiEwfSk7dmFyIG49KGZ1bmN0aW9uKHQpe2Z1bmN0aW9uIGUoKXt2YXIgZT10LmNhbGwodGhpcyl8fHRoaXM7cmV0dXJuIGUuX2RldGVjdGlvblJhZGl1cz0zLGUuX3Jlc2l6YWJsZT0hMSxlLl9tb3ZhYmxlPSExLGUuX2hhc0Nvcm5lcnM9ITAsZS5hZGRDbGFzcygiZHJhZy1ib3gtbGF5ZXIiKSxlLl9kcmFnSW50ZXJhY3Rpb249bmV3IFVtdC5EcmFnLGUuX3NldFVwQ2FsbGJhY2tzKCksZS5fZHJhZ0ludGVyYWN0aW9uLmF0dGFjaFRvKGUpLGUuX2RyYWdTdGFydENhbGxiYWNrcz1uZXcgdW10LkNhbGxiYWNrU2V0LGUuX2RyYWdDYWxsYmFja3M9bmV3IHVtdC5DYWxsYmFja1NldCxlLl9kcmFnRW5kQ2FsbGJhY2tzPW5ldyB1bXQuQ2FsbGJhY2tTZXQsZX1yZXR1cm4gU2Z0Ll9fZXh0ZW5kcyhlLHQpLGUucHJvdG90eXBlLl9zZXRVcENhbGxiYWNrcz1mdW5jdGlvbigpe3ZhciB0LGUsbixpLHI9dGhpcyxvPTAsYT1mdW5jdGlvbihhKXt0PXIuX2dldFJlc2l6aW5nRWRnZXMoYSk7dmFyIHM9ci5ib3VuZHMoKSxsPXMudG9wTGVmdC54PD1hLngmJmEueDw9cy5ib3R0b21SaWdodC54JiZzLnRvcExlZnQueTw9YS55JiZhLnk8PXMuYm90dG9tUmlnaHQueTtyLmJveFZpc2libGUoKSYmKHQudG9wfHx0LmJvdHRvbXx8dC5sZWZ0fHx0LnJpZ2h0KT9vPTE6ci5ib3hWaXNpYmxlKCkmJnIubW92YWJsZSgpJiZsP289Mjoobz0wLHIuX3NldEJvdW5kcyh7dG9wTGVmdDphLGJvdHRvbVJpZ2h0OmF9KSxyLl94Qm91bmRzTW9kZT09PXZndC5Qcm9wZXJ0eU1vZGUuVkFMVUUmJm51bGwhPXIueFNjYWxlKCkmJnIuX3NldFhFeHRlbnQoW3IueFNjYWxlKCkuaW52ZXJ0KGEueCksci54U2NhbGUoKS5pbnZlcnQoYS54KV0pLHIuX3lCb3VuZHNNb2RlPT09dmd0LlByb3BlcnR5TW9kZS5WQUxVRSYmbnVsbCE9ci55U2NhbGUoKSYmci5fc2V0WUV4dGVudChbci55U2NhbGUoKS5pbnZlcnQoYS55KSxyLnlTY2FsZSgpLmludmVydChhLnkpXSksci5yZW5kZXIoKSksci5ib3hWaXNpYmxlKCEwKSxzPXIuYm91bmRzKCksZT17eDpzLnRvcExlZnQueCx5OnMudG9wTGVmdC55fSxuPXt4OnMuYm90dG9tUmlnaHQueCx5OnMuYm90dG9tUmlnaHQueX0saT1hLHIuX2RyYWdTdGFydENhbGxiYWNrcy5jYWxsQ2FsbGJhY2tzKHMpfSxzPWZ1bmN0aW9uKGEscyl7c3dpdGNoKG8pe2Nhc2UgMDpuLng9cy54LG4ueT1zLnk7YnJlYWs7Y2FzZSAxOnQuYm90dG9tP24ueT1zLnk6dC50b3AmJihlLnk9cy55KSx0LnJpZ2h0P24ueD1zLng6dC5sZWZ0JiYoZS54PXMueCk7YnJlYWs7Y2FzZSAyOnZhciBsPXMueC1pLngsYz1zLnktaS55O2UueCs9bCxlLnkrPWMsbi54Kz1sLG4ueSs9YyxpPXN9ci5fc2V0Qm91bmRzKHt0b3BMZWZ0OmUsYm90dG9tUmlnaHQ6bn0pLHIuX3hCb3VuZHNNb2RlPT09dmd0LlByb3BlcnR5TW9kZS5WQUxVRSYmbnVsbCE9ci54U2NhbGUoKSYmci5fc2V0WEV4dGVudChbci54U2NhbGUoKS5pbnZlcnQoZS54KSxyLnhTY2FsZSgpLmludmVydChuLngpXSksci5feUJvdW5kc01vZGU9PT12Z3QuUHJvcGVydHlNb2RlLlZBTFVFJiZudWxsIT1yLnlTY2FsZSgpJiZyLl9zZXRZRXh0ZW50KFtyLnlTY2FsZSgpLmludmVydChlLnkpLHIueVNjYWxlKCkuaW52ZXJ0KG4ueSldKSxyLnJlbmRlcigpLHIuX2RyYWdDYWxsYmFja3MuY2FsbENhbGxiYWNrcyhyLmJvdW5kcygpKX0sbD1mdW5jdGlvbih0LGUpezA9PT1vJiZ0Lng9PT1lLngmJnQueT09PWUueSYmci5ib3hWaXNpYmxlKCExKSxyLl9kcmFnRW5kQ2FsbGJhY2tzLmNhbGxDYWxsYmFja3Moci5ib3VuZHMoKSl9O3RoaXMuX2RyYWdJbnRlcmFjdGlvbi5vbkRyYWdTdGFydChhKSx0aGlzLl9kcmFnSW50ZXJhY3Rpb24ub25EcmFnKHMpLHRoaXMuX2RyYWdJbnRlcmFjdGlvbi5vbkRyYWdFbmQobCksdGhpcy5fZGlzY29ubmVjdEludGVyYWN0aW9uPWZ1bmN0aW9uKCl7ci5fZHJhZ0ludGVyYWN0aW9uLm9mZkRyYWdTdGFydChhKSxyLl9kcmFnSW50ZXJhY3Rpb24ub2ZmRHJhZyhzKSxyLl9kcmFnSW50ZXJhY3Rpb24ub2ZmRHJhZ0VuZChsKSxyLl9kcmFnSW50ZXJhY3Rpb24uZGV0YWNoKCl9fSxlLnByb3RvdHlwZS5fc2V0dXA9ZnVuY3Rpb24oKXt2YXIgZT10aGlzO3QucHJvdG90eXBlLl9zZXR1cC5jYWxsKHRoaXMpO3ZhciBuPWZ1bmN0aW9uKCl7cmV0dXJuIGUuX2JveC5hcHBlbmQoImxpbmUiKS5zdHlsZXMoe29wYWNpdHk6MCxzdHJva2U6InBpbmsiLCJwb2ludGVyLWV2ZW50cyI6InZpc2libGVTdHJva2UifSl9O2lmKHRoaXMuX2RldGVjdGlvbkVkZ2VUPW4oKS5jbGFzc2VkKCJkcmFnLWVkZ2UtdGIiLCEwKSx0aGlzLl9kZXRlY3Rpb25FZGdlQj1uKCkuY2xhc3NlZCgiZHJhZy1lZGdlLXRiIiwhMCksdGhpcy5fZGV0ZWN0aW9uRWRnZUw9bigpLmNsYXNzZWQoImRyYWctZWRnZS1sciIsITApLHRoaXMuX2RldGVjdGlvbkVkZ2VSPW4oKS5jbGFzc2VkKCJkcmFnLWVkZ2UtbHIiLCEwKSx0aGlzLl9oYXNDb3JuZXJzKXt2YXIgaT1mdW5jdGlvbigpe3JldHVybiBlLl9ib3guYXBwZW5kKCJjaXJjbGUiKS5zdHlsZXMoe29wYWNpdHk6MCxmaWxsOiJwaW5rIiwicG9pbnRlci1ldmVudHMiOiJ2aXNpYmxlRmlsbCJ9KX07dGhpcy5fZGV0ZWN0aW9uQ29ybmVyVEw9aSgpLmNsYXNzZWQoImRyYWctY29ybmVyLXRsIiwhMCksdGhpcy5fZGV0ZWN0aW9uQ29ybmVyVFI9aSgpLmNsYXNzZWQoImRyYWctY29ybmVyLXRyIiwhMCksdGhpcy5fZGV0ZWN0aW9uQ29ybmVyQkw9aSgpLmNsYXNzZWQoImRyYWctY29ybmVyLWJsIiwhMCksdGhpcy5fZGV0ZWN0aW9uQ29ybmVyQlI9aSgpLmNsYXNzZWQoImRyYWctY29ybmVyLWJyIiwhMCl9fSxlLnByb3RvdHlwZS5fZ2V0UmVzaXppbmdFZGdlcz1mdW5jdGlvbih0KXt2YXIgZT17dG9wOiExLGJvdHRvbTohMSxsZWZ0OiExLHJpZ2h0OiExfTtpZighdGhpcy5yZXNpemFibGUoKSlyZXR1cm4gZTt2YXIgbj10aGlzLmJvdW5kcygpLGk9bi50b3BMZWZ0Lnkscj1uLmJvdHRvbVJpZ2h0Lnksbz1uLnRvcExlZnQueCxhPW4uYm90dG9tUmlnaHQueCxzPXRoaXMuX2RldGVjdGlvblJhZGl1cztyZXR1cm4gby1zPD10LngmJnQueDw9YStzJiYoZS50b3A9aS1zPD10LnkmJnQueTw9aStzLGUuYm90dG9tPXItczw9dC55JiZ0Lnk8PXIrcyksaS1zPD10LnkmJnQueTw9citzJiYoZS5sZWZ0PW8tczw9dC54JiZ0Lng8PW8rcyxlLnJpZ2h0PWEtczw9dC54JiZ0Lng8PWErcyksZX0sZS5wcm90b3R5cGUucmVuZGVySW1tZWRpYXRlbHk9ZnVuY3Rpb24oKXtpZih0LnByb3RvdHlwZS5yZW5kZXJJbW1lZGlhdGVseS5jYWxsKHRoaXMpLHRoaXMuYm94VmlzaWJsZSgpKXt2YXIgZT10aGlzLmJvdW5kcygpLG49ZS50b3BMZWZ0LnksaT1lLmJvdHRvbVJpZ2h0Lnkscj1lLnRvcExlZnQueCxvPWUuYm90dG9tUmlnaHQueDt0aGlzLl9kZXRlY3Rpb25FZGdlVC5hdHRycyh7eDE6cix5MTpuLHgyOm8seTI6biwic3Ryb2tlLXdpZHRoIjoyKnRoaXMuX2RldGVjdGlvblJhZGl1c30pLHRoaXMuX2RldGVjdGlvbkVkZ2VCLmF0dHJzKHt4MTpyLHkxOmkseDI6byx5MjppLCJzdHJva2Utd2lkdGgiOjIqdGhpcy5fZGV0ZWN0aW9uUmFkaXVzfSksdGhpcy5fZGV0ZWN0aW9uRWRnZUwuYXR0cnMoe3gxOnIseTE6bix4MjpyLHkyOmksInN0cm9rZS13aWR0aCI6Mip0aGlzLl9kZXRlY3Rpb25SYWRpdXN9KSx0aGlzLl9kZXRlY3Rpb25FZGdlUi5hdHRycyh7eDE6byx5MTpuLHgyOm8seTI6aSwic3Ryb2tlLXdpZHRoIjoyKnRoaXMuX2RldGVjdGlvblJhZGl1c30pLHRoaXMuX2hhc0Nvcm5lcnMmJih0aGlzLl9kZXRlY3Rpb25Db3JuZXJUTC5hdHRycyh7Y3g6cixjeTpuLHI6dGhpcy5fZGV0ZWN0aW9uUmFkaXVzfSksdGhpcy5fZGV0ZWN0aW9uQ29ybmVyVFIuYXR0cnMoe2N4Om8sY3k6bixyOnRoaXMuX2RldGVjdGlvblJhZGl1c30pLHRoaXMuX2RldGVjdGlvbkNvcm5lckJMLmF0dHJzKHtjeDpyLGN5Omkscjp0aGlzLl9kZXRlY3Rpb25SYWRpdXN9KSx0aGlzLl9kZXRlY3Rpb25Db3JuZXJCUi5hdHRycyh7Y3g6byxjeTppLHI6dGhpcy5fZGV0ZWN0aW9uUmFkaXVzfSkpfXJldHVybiB0aGlzfSxlLnByb3RvdHlwZS5kZXRlY3Rpb25SYWRpdXM9ZnVuY3Rpb24odCl7aWYobnVsbD09dClyZXR1cm4gdGhpcy5fZGV0ZWN0aW9uUmFkaXVzO2lmKHQ8MCl0aHJvdyBuZXcgRXJyb3IoImRldGVjdGlvbiByYWRpdXMgY2Fubm90IGJlIG5lZ2F0aXZlLiIpO3JldHVybiB0aGlzLl9kZXRlY3Rpb25SYWRpdXM9dCx0aGlzLnJlbmRlcigpLHRoaXN9LGUucHJvdG90eXBlLnJlc2l6YWJsZT1mdW5jdGlvbih0KXtyZXR1cm4gbnVsbD09dD90aGlzLl9yZXNpemFibGU6KHRoaXMuX3Jlc2l6YWJsZT10LHRoaXMuX3NldFJlc2l6YWJsZUNsYXNzZXModCksdGhpcyl9LGUucHJvdG90eXBlLl9zZXRSZXNpemFibGVDbGFzc2VzPWZ1bmN0aW9uKHQpe3QmJnRoaXMuZW5hYmxlZCgpPyh0aGlzLmFkZENsYXNzKCJ4LXJlc2l6YWJsZSIpLHRoaXMuYWRkQ2xhc3MoInktcmVzaXphYmxlIikpOih0aGlzLnJlbW92ZUNsYXNzKCJ4LXJlc2l6YWJsZSIpLHRoaXMucmVtb3ZlQ2xhc3MoInktcmVzaXphYmxlIikpfSxlLnByb3RvdHlwZS5tb3ZhYmxlPWZ1bmN0aW9uKHQpe3JldHVybiBudWxsPT10P3RoaXMuX21vdmFibGU6KHRoaXMuX21vdmFibGU9dCx0aGlzLl9zZXRNb3ZhYmxlQ2xhc3MoKSx0aGlzKX0sZS5wcm90b3R5cGUuX3NldE1vdmFibGVDbGFzcz1mdW5jdGlvbigpe3RoaXMubW92YWJsZSgpJiZ0aGlzLmVuYWJsZWQoKT90aGlzLmFkZENsYXNzKCJtb3ZhYmxlIik6dGhpcy5yZW1vdmVDbGFzcygibW92YWJsZSIpfSxlLnByb3RvdHlwZS5vbkRyYWdTdGFydD1mdW5jdGlvbih0KXtyZXR1cm4gdGhpcy5fZHJhZ1N0YXJ0Q2FsbGJhY2tzLmFkZCh0KSx0aGlzfSxlLnByb3RvdHlwZS5vZmZEcmFnU3RhcnQ9ZnVuY3Rpb24odCl7cmV0dXJuIHRoaXMuX2RyYWdTdGFydENhbGxiYWNrcy5kZWxldGUodCksdGhpc30sZS5wcm90b3R5cGUub25EcmFnPWZ1bmN0aW9uKHQpe3JldHVybiB0aGlzLl9kcmFnQ2FsbGJhY2tzLmFkZCh0KSx0aGlzfSxlLnByb3RvdHlwZS5vZmZEcmFnPWZ1bmN0aW9uKHQpe3JldHVybiB0aGlzLl9kcmFnQ2FsbGJhY2tzLmRlbGV0ZSh0KSx0aGlzfSxlLnByb3RvdHlwZS5vbkRyYWdFbmQ9ZnVuY3Rpb24odCl7cmV0dXJuIHRoaXMuX2RyYWdFbmRDYWxsYmFja3MuYWRkKHQpLHRoaXN9LGUucHJvdG90eXBlLm9mZkRyYWdFbmQ9ZnVuY3Rpb24odCl7cmV0dXJuIHRoaXMuX2RyYWdFbmRDYWxsYmFja3MuZGVsZXRlKHQpLHRoaXN9LGUucHJvdG90eXBlLmRyYWdJbnRlcmFjdGlvbj1mdW5jdGlvbigpe3JldHVybiB0aGlzLl9kcmFnSW50ZXJhY3Rpb259LGUucHJvdG90eXBlLmVuYWJsZWQ9ZnVuY3Rpb24odCl7cmV0dXJuIG51bGw9PXQ/dGhpcy5fZHJhZ0ludGVyYWN0aW9uLmVuYWJsZWQoKToodGhpcy5fZHJhZ0ludGVyYWN0aW9uLmVuYWJsZWQodCksdGhpcy5fc2V0UmVzaXphYmxlQ2xhc3Nlcyh0aGlzLnJlc2l6YWJsZSgpKSx0aGlzLl9zZXRNb3ZhYmxlQ2xhc3MoKSx0aGlzKX0sZS5wcm90b3R5cGUuZGVzdHJveT1mdW5jdGlvbigpe3ZhciBlPXRoaXM7dC5wcm90b3R5cGUuZGVzdHJveS5jYWxsKHRoaXMpLHRoaXMuX2RyYWdTdGFydENhbGxiYWNrcy5mb3JFYWNoKChmdW5jdGlvbih0KXtyZXR1cm4gZS5fZHJhZ0NhbGxiYWNrcy5kZWxldGUodCl9KSksdGhpcy5fZHJhZ0NhbGxiYWNrcy5mb3JFYWNoKChmdW5jdGlvbih0KXtyZXR1cm4gZS5fZHJhZ0NhbGxiYWNrcy5kZWxldGUodCl9KSksdGhpcy5fZHJhZ0VuZENhbGxiYWNrcy5mb3JFYWNoKChmdW5jdGlvbih0KXtyZXR1cm4gZS5fZHJhZ0VuZENhbGxiYWNrcy5kZWxldGUodCl9KSksdGhpcy5fZGlzY29ubmVjdEludGVyYWN0aW9uKCl9LGUucHJvdG90eXBlLmRldGFjaD1mdW5jdGlvbigpe3JldHVybiB0aGlzLl9yZXNldFN0YXRlKCksdGhpcy5fZHJhZ0ludGVyYWN0aW9uLmRldGFjaCgpLHQucHJvdG90eXBlLmRldGFjaC5jYWxsKHRoaXMpLHRoaXN9LGUucHJvdG90eXBlLmFuY2hvcj1mdW5jdGlvbihlKXtyZXR1cm4gZT15ZnQuY29lcmNlRXh0ZXJuYWxEMyhlKSx0aGlzLl9kcmFnSW50ZXJhY3Rpb24uYXR0YWNoVG8odGhpcyksdC5wcm90b3R5cGUuYW5jaG9yLmNhbGwodGhpcyxlKSx0aGlzfSxlLnByb3RvdHlwZS5fcmVzZXRTdGF0ZT1mdW5jdGlvbigpe3RoaXMuYm91bmRzKHt0b3BMZWZ0Ont4OjAseTowfSxib3R0b21SaWdodDp7eDowLHk6MH19KX0sZX0pKEdtdC5TZWxlY3Rpb25Cb3hMYXllcik7ZS5EcmFnQm94TGF5ZXI9bn0pKSxxbXQ9YmUoKGZ1bmN0aW9uKHQsZSl7dmFyIG47Ci8qKgogICAgICogQ29weXJpZ2h0IDIwMTQtcHJlc2VudCBQYWxhbnRpciBUZWNobm9sb2dpZXMKICAgICAqIEBsaWNlbnNlIE1JVAogICAgICovCk9iamVjdC5kZWZpbmVQcm9wZXJ0eShlLCJfX2VzTW9kdWxlIix7dmFsdWU6ITB9KSwoZnVuY3Rpb24odCl7dFt0LlZBTFVFPTBdPSJWQUxVRSIsdFt0LlBJWEVMPTFdPSJQSVhFTCJ9KShufHwobj17fSkpO3ZhciBpPShmdW5jdGlvbih0KXtmdW5jdGlvbiBlKGkpe3ZhciByPXQuY2FsbCh0aGlzKXx8dGhpcztpZihyLl9tb2RlPW4uVkFMVUUsaSE9PWUuT1JJRU5UQVRJT05fVkVSVElDQUwmJmkhPT1lLk9SSUVOVEFUSU9OX0hPUklaT05UQUwpdGhyb3cgbmV3IEVycm9yKGkrIiBpcyBub3QgYSB2YWxpZCBvcmllbnRhdGlvbiBmb3IgR3VpZGVMaW5lTGF5ZXIiKTtyZXR1cm4gci5fb3JpZW50YXRpb249aSxyLl9vdmVyZmxvd0hpZGRlbj0hMCxyLmFkZENsYXNzKCJndWlkZS1saW5lLWxheWVyIiksci5faXNWZXJ0aWNhbCgpP3IuYWRkQ2xhc3MoInZlcnRpY2FsIik6ci5hZGRDbGFzcygiaG9yaXpvbnRhbCIpLHIuX3NjYWxlVXBkYXRlQ2FsbGJhY2s9ZnVuY3Rpb24oKXtyLl9zeW5jUGl4ZWxQb3NpdGlvbkFuZFZhbHVlKCksci5yZW5kZXIoKX0scn1yZXR1cm4gU2Z0Ll9fZXh0ZW5kcyhlLHQpLGUucHJvdG90eXBlLl9zZXR1cD1mdW5jdGlvbigpe3QucHJvdG90eXBlLl9zZXR1cC5jYWxsKHRoaXMpLHRoaXMuX2d1aWRlTGluZT10aGlzLmNvbnRlbnQoKS5hcHBlbmQoImxpbmUiKS5jbGFzc2VkKCJndWlkZS1saW5lIiwhMCl9LGUucHJvdG90eXBlLl9zaXplRnJvbU9mZmVyPWZ1bmN0aW9uKHQsZSl7cmV0dXJue3dpZHRoOnQsaGVpZ2h0OmV9fSxlLnByb3RvdHlwZS5faXNWZXJ0aWNhbD1mdW5jdGlvbigpe3JldHVybiB0aGlzLl9vcmllbnRhdGlvbj09PWUuT1JJRU5UQVRJT05fVkVSVElDQUx9LGUucHJvdG90eXBlLmZpeGVkV2lkdGg9ZnVuY3Rpb24oKXtyZXR1cm4hMH0sZS5wcm90b3R5cGUuZml4ZWRIZWlnaHQ9ZnVuY3Rpb24oKXtyZXR1cm4hMH0sZS5wcm90b3R5cGUuY29tcHV0ZUxheW91dD1mdW5jdGlvbihlLG4saSl7cmV0dXJuIHQucHJvdG90eXBlLmNvbXB1dGVMYXlvdXQuY2FsbCh0aGlzLGUsbixpKSxudWxsIT10aGlzLnNjYWxlKCkmJih0aGlzLl9pc1ZlcnRpY2FsKCk/dGhpcy5zY2FsZSgpLnJhbmdlKFswLHRoaXMud2lkdGgoKV0pOnRoaXMuc2NhbGUoKS5yYW5nZShbdGhpcy5oZWlnaHQoKSwwXSkpLHRoaXN9LGUucHJvdG90eXBlLnJlbmRlckltbWVkaWF0ZWx5PWZ1bmN0aW9uKCl7cmV0dXJuIHQucHJvdG90eXBlLnJlbmRlckltbWVkaWF0ZWx5LmNhbGwodGhpcyksdGhpcy5fc3luY1BpeGVsUG9zaXRpb25BbmRWYWx1ZSgpLHRoaXMuX2d1aWRlTGluZS5hdHRycyh7eDE6dGhpcy5faXNWZXJ0aWNhbCgpP3RoaXMucGl4ZWxQb3NpdGlvbigpOjAseTE6dGhpcy5faXNWZXJ0aWNhbCgpPzA6dGhpcy5waXhlbFBvc2l0aW9uKCkseDI6dGhpcy5faXNWZXJ0aWNhbCgpP3RoaXMucGl4ZWxQb3NpdGlvbigpOnRoaXMud2lkdGgoKSx5Mjp0aGlzLl9pc1ZlcnRpY2FsKCk/dGhpcy5oZWlnaHQoKTp0aGlzLnBpeGVsUG9zaXRpb24oKX0pLHRoaXN9LGUucHJvdG90eXBlLl9zeW5jUGl4ZWxQb3NpdGlvbkFuZFZhbHVlPWZ1bmN0aW9uKCl7bnVsbCE9dGhpcy5zY2FsZSgpJiYodGhpcy5fbW9kZT09PW4uVkFMVUUmJm51bGwhPXRoaXMudmFsdWUoKT90aGlzLl9waXhlbFBvc2l0aW9uPXRoaXMuc2NhbGUoKS5zY2FsZSh0aGlzLnZhbHVlKCkpOnRoaXMuX21vZGU9PT1uLlBJWEVMJiZudWxsIT10aGlzLnBpeGVsUG9zaXRpb24oKSYmKHRoaXMuX3ZhbHVlPXRoaXMuc2NhbGUoKS5pbnZlcnQodGhpcy5waXhlbFBvc2l0aW9uKCkpKSl9LGUucHJvdG90eXBlLl9zZXRQaXhlbFBvc2l0aW9uV2l0aG91dENoYW5naW5nTW9kZT1mdW5jdGlvbih0KXt0aGlzLl9waXhlbFBvc2l0aW9uPXQsbnVsbCE9dGhpcy5zY2FsZSgpJiYodGhpcy5fdmFsdWU9dGhpcy5zY2FsZSgpLmludmVydCh0aGlzLnBpeGVsUG9zaXRpb24oKSkpLHRoaXMucmVuZGVyKCl9LGUucHJvdG90eXBlLnNjYWxlPWZ1bmN0aW9uKHQpe2lmKG51bGw9PXQpcmV0dXJuIHRoaXMuX3NjYWxlO3ZhciBlPXRoaXMuX3NjYWxlO3JldHVybiBudWxsIT1lJiZlLm9mZlVwZGF0ZSh0aGlzLl9zY2FsZVVwZGF0ZUNhbGxiYWNrKSx0aGlzLl9zY2FsZT10LHRoaXMuX3NjYWxlLm9uVXBkYXRlKHRoaXMuX3NjYWxlVXBkYXRlQ2FsbGJhY2spLHRoaXMuX3N5bmNQaXhlbFBvc2l0aW9uQW5kVmFsdWUoKSx0aGlzLnJlZHJhdygpLHRoaXN9LGUucHJvdG90eXBlLnZhbHVlPWZ1bmN0aW9uKHQpe3JldHVybiBudWxsPT10P3RoaXMuX3ZhbHVlOih0aGlzLl92YWx1ZT10LHRoaXMuX21vZGU9bi5WQUxVRSx0aGlzLl9zeW5jUGl4ZWxQb3NpdGlvbkFuZFZhbHVlKCksdGhpcy5yZW5kZXIoKSx0aGlzKX0sZS5wcm90b3R5cGUucGl4ZWxQb3NpdGlvbj1mdW5jdGlvbih0KXtpZihudWxsPT10KXJldHVybiB0aGlzLl9waXhlbFBvc2l0aW9uO2lmKCF1bXQuTWF0aC5pc1ZhbGlkTnVtYmVyKHQpKXRocm93IG5ldyBFcnJvcigicGl4ZWxQb3NpdGlvbiBtdXN0IGJlIGEgZmluaXRlIG51bWJlciIpO3JldHVybiB0aGlzLl9waXhlbFBvc2l0aW9uPXQsdGhpcy5fbW9kZT1uLlBJWEVMLHRoaXMuX3N5bmNQaXhlbFBvc2l0aW9uQW5kVmFsdWUoKSx0aGlzLnJlbmRlcigpLHRoaXN9LGUucHJvdG90eXBlLmRlc3Ryb3k9ZnVuY3Rpb24oKXt0LnByb3RvdHlwZS5kZXN0cm95LmNhbGwodGhpcyksbnVsbCE9dGhpcy5zY2FsZSgpJiZ0aGlzLnNjYWxlKCkub2ZmVXBkYXRlKHRoaXMuX3NjYWxlVXBkYXRlQ2FsbGJhY2spfSxlLk9SSUVOVEFUSU9OX1ZFUlRJQ0FMPSJ2ZXJ0aWNhbCIsZS5PUklFTlRBVElPTl9IT1JJWk9OVEFMPSJob3Jpem9udGFsIixlfSkocG10LkNvbXBvbmVudCk7ZS5HdWlkZUxpbmVMYXllcj1pfSkpLFltdD1iZSgoZnVuY3Rpb24odCxlKXsKLyoqCiAgICAgKiBDb3B5cmlnaHQgMjAxNC1wcmVzZW50IFBhbGFudGlyIFRlY2hub2xvZ2llcwogICAgICogQGxpY2Vuc2UgTUlUCiAgICAgKi8KT2JqZWN0LmRlZmluZVByb3BlcnR5KGUsIl9fZXNNb2R1bGUiLHt2YWx1ZTohMH0pO3ZhciBuPShmdW5jdGlvbih0KXtmdW5jdGlvbiBlKGUpe3ZhciBuPXQuY2FsbCh0aGlzLGUpfHx0aGlzO24uX2RldGVjdGlvblJhZGl1cz0zLG4uX2VuYWJsZWQ9ITAsbi5hZGRDbGFzcygiZHJhZy1saW5lLWxheWVyIiksbi5hZGRDbGFzcygiZW5hYmxlZCIpLG4uX2RyYWdJbnRlcmFjdGlvbj1uZXcgVW10LkRyYWcsbi5fZHJhZ0ludGVyYWN0aW9uLmF0dGFjaFRvKG4pO3ZhciBpPSExLHI9ZnVuY3Rpb24odCl7KGZ1bmN0aW9uKHQpe3JldHVybiBuLl9pc1ZlcnRpY2FsKCkmJm4ucGl4ZWxQb3NpdGlvbigpLW4uZGV0ZWN0aW9uUmFkaXVzKCk8PXQueCYmdC54PD1uLnBpeGVsUG9zaXRpb24oKStuLmRldGVjdGlvblJhZGl1cygpfHwhbi5faXNWZXJ0aWNhbCgpJiZuLnBpeGVsUG9zaXRpb24oKS1uLmRldGVjdGlvblJhZGl1cygpPD10LnkmJnQueTw9bi5waXhlbFBvc2l0aW9uKCkrbi5kZXRlY3Rpb25SYWRpdXMoKX0pKHQpJiYoaT0hMCxuLl9kcmFnU3RhcnRDYWxsYmFja3MuY2FsbENhbGxiYWNrcyhuKSl9O24uX2RyYWdJbnRlcmFjdGlvbi5vbkRyYWdTdGFydChyKTt2YXIgbz1mdW5jdGlvbih0LGUpe2kmJihuLl9zZXRQaXhlbFBvc2l0aW9uV2l0aG91dENoYW5naW5nTW9kZShuLl9pc1ZlcnRpY2FsKCk/ZS54OmUueSksbi5fZHJhZ0NhbGxiYWNrcy5jYWxsQ2FsbGJhY2tzKG4pKX07bi5fZHJhZ0ludGVyYWN0aW9uLm9uRHJhZyhvKTt2YXIgYT1mdW5jdGlvbih0LGUpe2kmJihpPSExLG4uX2RyYWdFbmRDYWxsYmFja3MuY2FsbENhbGxiYWNrcyhuKSl9O3JldHVybiBuLl9kcmFnSW50ZXJhY3Rpb24ub25EcmFnRW5kKGEpLG4uX2Rpc2Nvbm5lY3RJbnRlcmFjdGlvbj1mdW5jdGlvbigpe24uX2RyYWdJbnRlcmFjdGlvbi5vZmZEcmFnU3RhcnQociksbi5fZHJhZ0ludGVyYWN0aW9uLm9mZkRyYWcobyksbi5fZHJhZ0ludGVyYWN0aW9uLm9mZkRyYWdFbmQoYSksbi5fZHJhZ0ludGVyYWN0aW9uLmRldGFjaCgpfSxuLl9kcmFnU3RhcnRDYWxsYmFja3M9bmV3IHVtdC5DYWxsYmFja1NldCxuLl9kcmFnQ2FsbGJhY2tzPW5ldyB1bXQuQ2FsbGJhY2tTZXQsbi5fZHJhZ0VuZENhbGxiYWNrcz1uZXcgdW10LkNhbGxiYWNrU2V0LG59cmV0dXJuIFNmdC5fX2V4dGVuZHMoZSx0KSxlLnByb3RvdHlwZS5fc2V0dXA9ZnVuY3Rpb24oKXt0LnByb3RvdHlwZS5fc2V0dXAuY2FsbCh0aGlzKSx0aGlzLl9kZXRlY3Rpb25FZGdlPXRoaXMuY29udGVudCgpLmFwcGVuZCgibGluZSIpLnN0eWxlcyh7b3BhY2l0eTowLHN0cm9rZToicGluayIsInBvaW50ZXItZXZlbnRzIjoidmlzaWJsZVN0cm9rZSJ9KS5jbGFzc2VkKCJkcmFnLWVkZ2UiLCEwKX0sZS5wcm90b3R5cGUucmVuZGVySW1tZWRpYXRlbHk9ZnVuY3Rpb24oKXtyZXR1cm4gdC5wcm90b3R5cGUucmVuZGVySW1tZWRpYXRlbHkuY2FsbCh0aGlzKSx0aGlzLl9kZXRlY3Rpb25FZGdlLmF0dHJzKHt4MTp0aGlzLl9pc1ZlcnRpY2FsKCk/dGhpcy5waXhlbFBvc2l0aW9uKCk6MCx5MTp0aGlzLl9pc1ZlcnRpY2FsKCk/MDp0aGlzLnBpeGVsUG9zaXRpb24oKSx4Mjp0aGlzLl9pc1ZlcnRpY2FsKCk/dGhpcy5waXhlbFBvc2l0aW9uKCk6dGhpcy53aWR0aCgpLHkyOnRoaXMuX2lzVmVydGljYWwoKT90aGlzLmhlaWdodCgpOnRoaXMucGl4ZWxQb3NpdGlvbigpLCJzdHJva2Utd2lkdGgiOjIqdGhpcy5fZGV0ZWN0aW9uUmFkaXVzfSksdGhpc30sZS5wcm90b3R5cGUuZGV0ZWN0aW9uUmFkaXVzPWZ1bmN0aW9uKHQpe2lmKG51bGw9PXQpcmV0dXJuIHRoaXMuX2RldGVjdGlvblJhZGl1cztpZih0PDApdGhyb3cgbmV3IEVycm9yKCJkZXRlY3Rpb24gcmFkaXVzIGNhbm5vdCBiZSBuZWdhdGl2ZS4iKTtyZXR1cm4gdGhpcy5fZGV0ZWN0aW9uUmFkaXVzPXQsdGhpcy5yZW5kZXIoKSx0aGlzfSxlLnByb3RvdHlwZS5lbmFibGVkPWZ1bmN0aW9uKHQpe3JldHVybiBudWxsPT10P3RoaXMuX2VuYWJsZWQ6KHRoaXMuX2VuYWJsZWQ9dCx0P3RoaXMuYWRkQ2xhc3MoImVuYWJsZWQiKTp0aGlzLnJlbW92ZUNsYXNzKCJlbmFibGVkIiksdGhpcy5fZHJhZ0ludGVyYWN0aW9uLmVuYWJsZWQodCksdGhpcyl9LGUucHJvdG90eXBlLm9uRHJhZ1N0YXJ0PWZ1bmN0aW9uKHQpe3JldHVybiB0aGlzLl9kcmFnU3RhcnRDYWxsYmFja3MuYWRkKHQpLHRoaXN9LGUucHJvdG90eXBlLm9mZkRyYWdTdGFydD1mdW5jdGlvbih0KXtyZXR1cm4gdGhpcy5fZHJhZ1N0YXJ0Q2FsbGJhY2tzLmRlbGV0ZSh0KSx0aGlzfSxlLnByb3RvdHlwZS5vbkRyYWc9ZnVuY3Rpb24odCl7cmV0dXJuIHRoaXMuX2RyYWdDYWxsYmFja3MuYWRkKHQpLHRoaXN9LGUucHJvdG90eXBlLm9mZkRyYWc9ZnVuY3Rpb24odCl7cmV0dXJuIHRoaXMuX2RyYWdDYWxsYmFja3MuZGVsZXRlKHQpLHRoaXN9LGUucHJvdG90eXBlLm9uRHJhZ0VuZD1mdW5jdGlvbih0KXtyZXR1cm4gdGhpcy5fZHJhZ0VuZENhbGxiYWNrcy5hZGQodCksdGhpc30sZS5wcm90b3R5cGUub2ZmRHJhZ0VuZD1mdW5jdGlvbih0KXtyZXR1cm4gdGhpcy5fZHJhZ0VuZENhbGxiYWNrcy5kZWxldGUodCksdGhpc30sZS5wcm90b3R5cGUuZGVzdHJveT1mdW5jdGlvbigpe3ZhciBlPXRoaXM7dC5wcm90b3R5cGUuZGVzdHJveS5jYWxsKHRoaXMpLHRoaXMuX2RyYWdTdGFydENhbGxiYWNrcy5mb3JFYWNoKChmdW5jdGlvbih0KXtyZXR1cm4gZS5fZHJhZ1N0YXJ0Q2FsbGJhY2tzLmRlbGV0ZSh0KX0pKSx0aGlzLl9kcmFnQ2FsbGJhY2tzLmZvckVhY2goKGZ1bmN0aW9uKHQpe3JldHVybiBlLl9kcmFnQ2FsbGJhY2tzLmRlbGV0ZSh0KX0pKSx0aGlzLl9kcmFnRW5kQ2FsbGJhY2tzLmZvckVhY2goKGZ1bmN0aW9uKHQpe3JldHVybiBlLl9kcmFnRW5kQ2FsbGJhY2tzLmRlbGV0ZSh0KX0pKSx0aGlzLl9kaXNjb25uZWN0SW50ZXJhY3Rpb24oKX0sZX0pKHFtdC5HdWlkZUxpbmVMYXllcik7ZS5EcmFnTGluZUxheWVyPW59KSksWG10PWJlKChmdW5jdGlvbih0LGUpe2Z1bmN0aW9uIG4odCxlLG4pe3ZhciBpPXt9O2lmKHZvaWQgMCE9PW4pZm9yKHZhciByPTA7cjxuLmxlbmd0aDtyKyspaVtuW3JdXT1uW3ItMV07cmV0dXJuIGZ1bmN0aW9uKG4pe3ZhciByLG89dC5zY2FsZShuKTtpZighZSlyZXR1cm4gbzt2YXIgYT12b2lkIDA9PT1pW25dP3ZvaWQgMDp0LnNjYWxlKGlbbl0pO3JldHVybiB2b2lkIDAhPT1hJiYocj1hKyhvLWEpLzIpLHJ9fQovKioKICAgICAqIENvcHlyaWdodCAyMDE0LXByZXNlbnQgUGFsYW50aXIgVGVjaG5vbG9naWVzCiAgICAgKiBAbGljZW5zZSBNSVQKICAgICAqLwpPYmplY3QuZGVmaW5lUHJvcGVydHkoZSwiX19lc01vZHVsZSIse3ZhbHVlOiEwfSk7dmFyIGk9KGZ1bmN0aW9uKHQpe2Z1bmN0aW9uIGUoZSxuKXt2YXIgaT10LmNhbGwodGhpcyl8fHRoaXM7cmV0dXJuIGkuYWRkQ2xhc3MoImdyaWRsaW5lcyIpLGkuX3hTY2FsZT1lLGkuX3lTY2FsZT1uLGkuX3JlbmRlckNhbGxiYWNrPWZ1bmN0aW9uKHQpe3JldHVybiBpLnJlbmRlcigpfSxpLl94U2NhbGUmJmkuX3hTY2FsZS5vblVwZGF0ZShpLl9yZW5kZXJDYWxsYmFjayksaS5feVNjYWxlJiZpLl95U2NhbGUub25VcGRhdGUoaS5fcmVuZGVyQ2FsbGJhY2spLGl9cmV0dXJuIFNmdC5fX2V4dGVuZHMoZSx0KSxlLnByb3RvdHlwZS5iZXR3ZWVuWD1mdW5jdGlvbih0KXtyZXR1cm4gdm9pZCAwPT09dD90aGlzLl9iZXR3ZWVuWDoodCE9PXRoaXMuX2JldHdlZW5YJiYodGhpcy5fYmV0d2Vlblg9dCx0aGlzLnJlbmRlcigpKSx0aGlzKX0sZS5wcm90b3R5cGUuYmV0d2Vlblk9ZnVuY3Rpb24odCl7cmV0dXJuIHZvaWQgMD09PXQ/dGhpcy5fYmV0d2Vlblk6KHQhPT10aGlzLl9iZXR3ZWVuWSYmKHRoaXMuX2JldHdlZW5ZPXQsdGhpcy5yZW5kZXIoKSksdGhpcyl9LGUucHJvdG90eXBlLmRlc3Ryb3k9ZnVuY3Rpb24oKXtyZXR1cm4gdC5wcm90b3R5cGUuZGVzdHJveS5jYWxsKHRoaXMpLHRoaXMuX3hTY2FsZSYmdGhpcy5feFNjYWxlLm9mZlVwZGF0ZSh0aGlzLl9yZW5kZXJDYWxsYmFjayksdGhpcy5feVNjYWxlJiZ0aGlzLl95U2NhbGUub2ZmVXBkYXRlKHRoaXMuX3JlbmRlckNhbGxiYWNrKSx0aGlzfSxlLnByb3RvdHlwZS5fc2V0dXA9ZnVuY3Rpb24oKXt0LnByb3RvdHlwZS5fc2V0dXAuY2FsbCh0aGlzKSx0aGlzLl94TGluZXNDb250YWluZXI9dGhpcy5jb250ZW50KCkuYXBwZW5kKCJnIikuY2xhc3NlZCgieC1ncmlkbGluZXMiLCEwKSx0aGlzLl95TGluZXNDb250YWluZXI9dGhpcy5jb250ZW50KCkuYXBwZW5kKCJnIikuY2xhc3NlZCgieS1ncmlkbGluZXMiLCEwKX0sZS5wcm90b3R5cGUucmVuZGVySW1tZWRpYXRlbHk9ZnVuY3Rpb24oKXtyZXR1cm4gdC5wcm90b3R5cGUucmVuZGVySW1tZWRpYXRlbHkuY2FsbCh0aGlzKSx0aGlzLl9yZWRyYXdYTGluZXMoKSx0aGlzLl9yZWRyYXdZTGluZXMoKSx0aGlzfSxlLnByb3RvdHlwZS5jb21wdXRlTGF5b3V0PWZ1bmN0aW9uKGUsbixpKXtyZXR1cm4gdC5wcm90b3R5cGUuY29tcHV0ZUxheW91dC5jYWxsKHRoaXMsZSxuLGkpLG51bGwhPXRoaXMuX3hTY2FsZSYmdGhpcy5feFNjYWxlLnJhbmdlKFswLHRoaXMud2lkdGgoKV0pLG51bGwhPXRoaXMuX3lTY2FsZSYmdGhpcy5feVNjYWxlLnJhbmdlKFt0aGlzLmhlaWdodCgpLDBdKSx0aGlzfSxlLnByb3RvdHlwZS5fcmVkcmF3WExpbmVzPWZ1bmN0aW9uKCl7aWYodGhpcy5feFNjYWxlKXt2YXIgdD10aGlzLmJldHdlZW5YKCksZT10aGlzLl94U2NhbGUudGlja3MoKS5zbGljZSh0PzE6MCksaT10aGlzLl94TGluZXNDb250YWluZXIuc2VsZWN0QWxsKCJsaW5lIikuZGF0YShlKTtpLmVudGVyKCkuYXBwZW5kKCJsaW5lIikubWVyZ2UoaSkuYXR0cigieDEiLG4odGhpcy5feFNjYWxlLHQsdGhpcy5feFNjYWxlLnRpY2tzKCkpKS5hdHRyKCJ5MSIsMCkuYXR0cigieDIiLG4odGhpcy5feFNjYWxlLHQsdGhpcy5feFNjYWxlLnRpY2tzKCkpKS5hdHRyKCJ5MiIsdGhpcy5oZWlnaHQoKSkuY2xhc3NlZCgiYmV0d2VlbmxpbmUiLHQpLmNsYXNzZWQoInplcm9saW5lIiwoZnVuY3Rpb24odCl7cmV0dXJuIDA9PT10fSkpLGkuZXhpdCgpLnJlbW92ZSgpfX0sZS5wcm90b3R5cGUuX3JlZHJhd1lMaW5lcz1mdW5jdGlvbigpe2lmKHRoaXMuX3lTY2FsZSl7dmFyIHQ9dGhpcy5iZXR3ZWVuWSgpLGU9dGhpcy5feVNjYWxlLnRpY2tzKCkuc2xpY2UodD8xOjApLGk9dGhpcy5feUxpbmVzQ29udGFpbmVyLnNlbGVjdEFsbCgibGluZSIpLmRhdGEoZSk7aS5lbnRlcigpLmFwcGVuZCgibGluZSIpLm1lcmdlKGkpLmF0dHIoIngxIiwwKS5hdHRyKCJ5MSIsbih0aGlzLl95U2NhbGUsdCx0aGlzLl95U2NhbGUudGlja3MoKSkpLmF0dHIoIngyIix0aGlzLndpZHRoKCkpLmF0dHIoInkyIixuKHRoaXMuX3lTY2FsZSx0LHRoaXMuX3lTY2FsZS50aWNrcygpKSkuY2xhc3NlZCgiYmV0d2VlbmxpbmUiLHQpLmNsYXNzZWQoInplcm9saW5lIiwoZnVuY3Rpb24odCl7cmV0dXJuIDA9PT10fSkpLGkuZXhpdCgpLnJlbW92ZSgpfX0sZX0pKHBtdC5Db21wb25lbnQpO2UuR3JpZGxpbmVzPWl9KSksJG10PWJlKChmdW5jdGlvbih0LGUpewovKioKICAgICAqIENvcHlyaWdodCAyMDE0LXByZXNlbnQgUGFsYW50aXIgVGVjaG5vbG9naWVzCiAgICAgKiBAbGljZW5zZSBNSVQKICAgICAqLwpPYmplY3QuZGVmaW5lUHJvcGVydHkoZSwiX19lc01vZHVsZSIse3ZhbHVlOiEwfSk7dmFyIG49KGZ1bmN0aW9uKHQpe2Z1bmN0aW9uIGUoKXt2YXIgZT10LmNhbGwodGhpcyl8fHRoaXM7cmV0dXJuIGUuX2RldGFjaENhbGxiYWNrPWZ1bmN0aW9uKHQpe3JldHVybiBlLnJlbW92ZSh0KX0sZX1yZXR1cm4gU2Z0Ll9fZXh0ZW5kcyhlLHQpLGUucHJvdG90eXBlLmFuY2hvcj1mdW5jdGlvbihlKXt2YXIgbj10aGlzO3JldHVybiBlPXlmdC5jb2VyY2VFeHRlcm5hbEQzKGUpLHQucHJvdG90eXBlLmFuY2hvci5jYWxsKHRoaXMsZSksdGhpcy5fZm9yRWFjaCgoZnVuY3Rpb24odCl7cmV0dXJuIHQuYW5jaG9yKG4uZWxlbWVudCgpKX0pKSx0aGlzfSxlLnByb3RvdHlwZS5yZW5kZXI9ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5fZm9yRWFjaCgoZnVuY3Rpb24odCl7cmV0dXJuIHQucmVuZGVyKCl9KSksdGhpc30sZS5wcm90b3R5cGUuaGFzPWZ1bmN0aW9uKHQpe3Rocm93IG5ldyBFcnJvcigiaGFzKCkgaXMgbm90IGltcGxlbWVudGVkIG9uIENvbXBvbmVudENvbnRhaW5lciIpfSxlLnByb3RvdHlwZS5fYWRvcHRBbmRBbmNob3I9ZnVuY3Rpb24odCl7dC5wYXJlbnQodGhpcyksdC5vbkRldGFjaCh0aGlzLl9kZXRhY2hDYWxsYmFjayksdGhpcy5faXNBbmNob3JlZCYmdC5hbmNob3IodGhpcy5lbGVtZW50KCkpfSxlLnByb3RvdHlwZS5yZW1vdmU9ZnVuY3Rpb24odCl7cmV0dXJuIHRoaXMuaGFzKHQpJiYodC5vZmZEZXRhY2godGhpcy5fZGV0YWNoQ2FsbGJhY2spLHRoaXMuX3JlbW92ZSh0KSx0LmRldGFjaCgpLHRoaXMucmVkcmF3KCkpLHRoaXN9LGUucHJvdG90eXBlLl9yZW1vdmU9ZnVuY3Rpb24odCl7cmV0dXJuITF9LGUucHJvdG90eXBlLl9mb3JFYWNoPWZ1bmN0aW9uKHQpe3Rocm93IG5ldyBFcnJvcigiX2ZvckVhY2goKSBpcyBub3QgaW1wbGVtZW50ZWQgb24gQ29tcG9uZW50Q29udGFpbmVyIil9LGUucHJvdG90eXBlLmRlc3Ryb3k9ZnVuY3Rpb24oKXt0LnByb3RvdHlwZS5kZXN0cm95LmNhbGwodGhpcyksdGhpcy5fZm9yRWFjaCgoZnVuY3Rpb24odCl7cmV0dXJuIHQuZGVzdHJveSgpfSkpfSxlLnByb3RvdHlwZS5pbnZhbGlkYXRlQ2FjaGU9ZnVuY3Rpb24oKXt0aGlzLl9mb3JFYWNoKChmdW5jdGlvbih0KXtyZXR1cm4gdC5pbnZhbGlkYXRlQ2FjaGUoKX0pKX0sZX0pKHBtdC5Db21wb25lbnQpO2UuQ29tcG9uZW50Q29udGFpbmVyPW59KSksS210PWJlKChmdW5jdGlvbih0LGUpewovKioKICAgICAqIENvcHlyaWdodCAyMDE0LXByZXNlbnQgUGFsYW50aXIgVGVjaG5vbG9naWVzCiAgICAgKiBAbGljZW5zZSBNSVQKICAgICAqLwpPYmplY3QuZGVmaW5lUHJvcGVydHkoZSwiX19lc01vZHVsZSIse3ZhbHVlOiEwfSk7dmFyIG49KGZ1bmN0aW9uKHQpe2Z1bmN0aW9uIGUoZSl7dm9pZCAwPT09ZSYmKGU9W10pO3ZhciBuPXQuY2FsbCh0aGlzKXx8dGhpcztyZXR1cm4gbi5fY29tcG9uZW50cz1bXSxuLmFkZENsYXNzKCJjb21wb25lbnQtZ3JvdXAiKSxlLmZvckVhY2goKGZ1bmN0aW9uKHQpe3JldHVybiBuLmFwcGVuZCh0KX0pKSxufXJldHVybiBTZnQuX19leHRlbmRzKGUsdCksZS5wcm90b3R5cGUuX2ZvckVhY2g9ZnVuY3Rpb24odCl7dGhpcy5jb21wb25lbnRzKCkuZm9yRWFjaCh0KX0sZS5wcm90b3R5cGUuaGFzPWZ1bmN0aW9uKHQpe3JldHVybiB0aGlzLl9jb21wb25lbnRzLmluZGV4T2YodCk+PTB9LGUucHJvdG90eXBlLnJlcXVlc3RlZFNwYWNlPWZ1bmN0aW9uKHQsZSl7dmFyIG49dGhpcy5fY29tcG9uZW50cy5tYXAoKGZ1bmN0aW9uKG4pe3JldHVybiBuLnJlcXVlc3RlZFNwYWNlKHQsZSl9KSk7cmV0dXJue21pbldpZHRoOnVtdC5NYXRoLm1heChuLChmdW5jdGlvbih0KXtyZXR1cm4gdC5taW5XaWR0aH0pLDApLG1pbkhlaWdodDp1bXQuTWF0aC5tYXgobiwoZnVuY3Rpb24odCl7cmV0dXJuIHQubWluSGVpZ2h0fSksMCl9fSxlLnByb3RvdHlwZS5jb21wdXRlTGF5b3V0PWZ1bmN0aW9uKGUsbixpKXt2YXIgcj10aGlzO3JldHVybiB0LnByb3RvdHlwZS5jb21wdXRlTGF5b3V0LmNhbGwodGhpcyxlLG4saSksdGhpcy5fZm9yRWFjaCgoZnVuY3Rpb24odCl7dC5jb21wdXRlTGF5b3V0KHt4OjAseTowfSxyLndpZHRoKCksci5oZWlnaHQoKSl9KSksdGhpc30sZS5wcm90b3R5cGUuX3NpemVGcm9tT2ZmZXI9ZnVuY3Rpb24odCxlKXtyZXR1cm57d2lkdGg6dCxoZWlnaHQ6ZX19LGUucHJvdG90eXBlLmZpeGVkV2lkdGg9ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5fY29tcG9uZW50cy5ldmVyeSgoZnVuY3Rpb24odCl7cmV0dXJuIHQuZml4ZWRXaWR0aCgpfSkpfSxlLnByb3RvdHlwZS5maXhlZEhlaWdodD1mdW5jdGlvbigpe3JldHVybiB0aGlzLl9jb21wb25lbnRzLmV2ZXJ5KChmdW5jdGlvbih0KXtyZXR1cm4gdC5maXhlZEhlaWdodCgpfSkpfSxlLnByb3RvdHlwZS5jb21wb25lbnRzPWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuX2NvbXBvbmVudHMuc2xpY2UoKX0sZS5wcm90b3R5cGUuYXBwZW5kPWZ1bmN0aW9uKHQpe3JldHVybiBudWxsPT10fHx0aGlzLmhhcyh0KXx8KHQuZGV0YWNoKCksdGhpcy5fY29tcG9uZW50cy5wdXNoKHQpLHRoaXMuX2Fkb3B0QW5kQW5jaG9yKHQpLHRoaXMucmVkcmF3KCkpLHRoaXN9LGUucHJvdG90eXBlLl9yZW1vdmU9ZnVuY3Rpb24odCl7dmFyIGU9dGhpcy5fY29tcG9uZW50cy5pbmRleE9mKHQpO3JldHVybiBlPj0wJiYodGhpcy5fY29tcG9uZW50cy5zcGxpY2UoZSwxKSwhMCl9LGV9KSgkbXQuQ29tcG9uZW50Q29udGFpbmVyKTtlLkdyb3VwPW59KSksWm10PWJlKChmdW5jdGlvbih0LGUpewovKioKICAgICAqIENvcHlyaWdodCAyMDE0LXByZXNlbnQgUGFsYW50aXIgVGVjaG5vbG9naWVzCiAgICAgKiBAbGljZW5zZSBNSVQKICAgICAqLwpPYmplY3QuZGVmaW5lUHJvcGVydHkoZSwiX19lc01vZHVsZSIse3ZhbHVlOiEwfSk7dmFyIG49KGZ1bmN0aW9uKHQpe2Z1bmN0aW9uIGUoZSl7dmFyIG49dC5jYWxsKHRoaXMpfHx0aGlzO2lmKG4uX3RleHRQYWRkaW5nPTUsbnVsbD09ZSl0aHJvdyBuZXcgRXJyb3IoIkludGVycG9sYXRlZENvbG9yTGVnZW5kIHJlcXVpcmVzIGEgaW50ZXJwb2xhdGVkQ29sb3JTY2FsZSIpO3JldHVybiBuLl9zY2FsZT1lLG4uX3JlZHJhd0NhbGxiYWNrPWZ1bmN0aW9uKHQpe3JldHVybiBuLnJlZHJhdygpfSxuLl9zY2FsZS5vblVwZGF0ZShuLl9yZWRyYXdDYWxsYmFjayksbi5fZm9ybWF0dGVyPWZtdC5nZW5lcmFsKCksbi5fb3JpZW50YXRpb249Imhvcml6b250YWwiLG4uX2V4cGFuZHM9ITEsbi5hZGRDbGFzcygibGVnZW5kIiksbi5hZGRDbGFzcygiaW50ZXJwb2xhdGVkLWNvbG9yLWxlZ2VuZCIpLG59cmV0dXJuIFNmdC5fX2V4dGVuZHMoZSx0KSxlLnByb3RvdHlwZS5kZXN0cm95PWZ1bmN0aW9uKCl7dC5wcm90b3R5cGUuZGVzdHJveS5jYWxsKHRoaXMpLHRoaXMuX3NjYWxlLm9mZlVwZGF0ZSh0aGlzLl9yZWRyYXdDYWxsYmFjayl9LGUucHJvdG90eXBlLmZvcm1hdHRlcj1mdW5jdGlvbih0KXtyZXR1cm4gdm9pZCAwPT09dD90aGlzLl9mb3JtYXR0ZXI6KHRoaXMuX2Zvcm1hdHRlcj10LHRoaXMucmVkcmF3KCksdGhpcyl9LGUucHJvdG90eXBlLmV4cGFuZHM9ZnVuY3Rpb24odCl7cmV0dXJuIG51bGw9PXQ/dGhpcy5fZXhwYW5kczoodGhpcy5fZXhwYW5kcz10LHRoaXMucmVkcmF3KCksdGhpcyl9LGUuX2Vuc3VyZU9yaWVudGF0aW9uPWZ1bmN0aW9uKHQpe2lmKCJob3Jpem9udGFsIj09PSh0PXQudG9Mb3dlckNhc2UoKSl8fCJsZWZ0Ij09PXR8fCJyaWdodCI9PT10KXJldHVybiB0O3Rocm93IG5ldyBFcnJvcignIicrdCsnIiBpcyBub3QgYSB2YWxpZCBvcmllbnRhdGlvbiBmb3IgSW50ZXJwb2xhdGVkQ29sb3JMZWdlbmQnKX0sZS5wcm90b3R5cGUub3JpZW50YXRpb249ZnVuY3Rpb24odCl7cmV0dXJuIG51bGw9PXQ/dGhpcy5fb3JpZW50YXRpb246KHRoaXMuX29yaWVudGF0aW9uPWUuX2Vuc3VyZU9yaWVudGF0aW9uKHQpLHRoaXMucmVkcmF3KCksdGhpcyl9LGUucHJvdG90eXBlLmZpeGVkV2lkdGg9ZnVuY3Rpb24oKXtyZXR1cm4hdGhpcy5leHBhbmRzKCl8fHRoaXMuX2lzVmVydGljYWwoKX0sZS5wcm90b3R5cGUuZml4ZWRIZWlnaHQ9ZnVuY3Rpb24oKXtyZXR1cm4hdGhpcy5leHBhbmRzKCl8fCF0aGlzLl9pc1ZlcnRpY2FsKCl9LGUucHJvdG90eXBlLl9nZW5lcmF0ZVRpY2tzPWZ1bmN0aW9uKHQpe3ZvaWQgMD09PXQmJih0PWUuX0RFRkFVTFRfTlVNX1NXQVRDSEVTKTt2YXIgbj10aGlzLl9zY2FsZS5kb21haW4oKTtpZigxPT09dClyZXR1cm5bblswXV07Zm9yKHZhciBpPShuWzFdLW5bMF0pLyh0LTEpLHI9W10sbz0wO288dDtvKyspci5wdXNoKG5bMF0raSpvKTtyZXR1cm4gcn0sZS5wcm90b3R5cGUuX3NldHVwPWZ1bmN0aW9uKCl7dC5wcm90b3R5cGUuX3NldHVwLmNhbGwodGhpcyksdGhpcy5fc3dhdGNoQ29udGFpbmVyPXRoaXMuY29udGVudCgpLmFwcGVuZCgiZyIpLmNsYXNzZWQoInN3YXRjaC1jb250YWluZXIiLCEwKSx0aGlzLl9zd2F0Y2hCb3VuZGluZ0JveD10aGlzLmNvbnRlbnQoKS5hcHBlbmQoInJlY3QiKS5jbGFzc2VkKCJzd2F0Y2gtYm91bmRpbmctYm94IiwhMCksdGhpcy5fbG93ZXJMYWJlbD10aGlzLmNvbnRlbnQoKS5hcHBlbmQoImciKS5jbGFzc2VkKGUuTEVHRU5EX0xBQkVMX0NMQVNTLCEwKSx0aGlzLl91cHBlckxhYmVsPXRoaXMuY29udGVudCgpLmFwcGVuZCgiZyIpLmNsYXNzZWQoZS5MRUdFTkRfTEFCRUxfQ0xBU1MsITApO3ZhciBuPW5ldyBxZnQuU3ZnQ29udGV4dCh0aGlzLmNvbnRlbnQoKS5ub2RlKCkpO3RoaXMuX21lYXN1cmVyPW5ldyBxZnQuTWVhc3VyZXIobiksdGhpcy5fd3JhcHBlcj1uZXcgcWZ0LldyYXBwZXIsdGhpcy5fd3JpdGVyPW5ldyBxZnQuV3JpdGVyKHRoaXMuX21lYXN1cmVyLG4sdGhpcy5fd3JhcHBlcil9LGUucHJvdG90eXBlLnJlcXVlc3RlZFNwYWNlPWZ1bmN0aW9uKHQsbil7dmFyIGkscixvPXRoaXMsYT10aGlzLl9tZWFzdXJlci5tZWFzdXJlKCkuaGVpZ2h0LHM9YSxsPXRoaXMuX3NjYWxlLmRvbWFpbigpLm1hcCgoZnVuY3Rpb24odCl7cmV0dXJuIG8uX21lYXN1cmVyLm1lYXN1cmUoby5fZm9ybWF0dGVyKHQpKS53aWR0aH0pKSxjPWUuX0RFRkFVTFRfTlVNX1NXQVRDSEVTO2lmKHRoaXMuX2lzVmVydGljYWwoKSl7dmFyIHU9dW10Lk1hdGgubWF4KGwsMCk7cj1zK2ErdGhpcy5fdGV4dFBhZGRpbmcrdSt0aGlzLl90ZXh0UGFkZGluZyxpPWMqYX1lbHNlIGk9cythK3Mscj10aGlzLl90ZXh0UGFkZGluZytsWzBdK2MqYStsWzFdK3RoaXMuX3RleHRQYWRkaW5nO3JldHVybnttaW5XaWR0aDpyLG1pbkhlaWdodDppfX0sZS5wcm90b3R5cGUuX2lzVmVydGljYWw9ZnVuY3Rpb24oKXtyZXR1cm4iaG9yaXpvbnRhbCIhPT10aGlzLl9vcmllbnRhdGlvbn0sZS5wcm90b3R5cGUucmVuZGVySW1tZWRpYXRlbHk9ZnVuY3Rpb24oKXt2YXIgZT10aGlzO3QucHJvdG90eXBlLnJlbmRlckltbWVkaWF0ZWx5LmNhbGwodGhpcyk7dmFyIG4saSxyLG8sYSxzLGw9dGhpcy5fc2NhbGUuZG9tYWluKCksYz10aGlzLl9mb3JtYXR0ZXIobFswXSksdT10aGlzLl9tZWFzdXJlci5tZWFzdXJlKGMpLndpZHRoLGg9dGhpcy5fZm9ybWF0dGVyKGxbMV0pLGQ9dGhpcy5fbWVhc3VyZXIubWVhc3VyZShoKS53aWR0aCxwPXRoaXMuX21lYXN1cmVyLm1lYXN1cmUoKS5oZWlnaHQsZj10aGlzLl90ZXh0UGFkZGluZyxtPXt4OjAseTowfSxnPXt4OjAseTowfSxfPXt4QWxpZ246ImNlbnRlciIseUFsaWduOiJjZW50ZXIiLHRleHRSb3RhdGlvbjowfSx5PXt4QWxpZ246ImNlbnRlciIseUFsaWduOiJjZW50ZXIiLHRleHRSb3RhdGlvbjowfSx2PXt4OjAseTowLHdpZHRoOjAsaGVpZ2h0OjB9O2lmKHRoaXMuX2lzVmVydGljYWwoKSl7cz1NYXRoLmZsb29yKHRoaXMuaGVpZ2h0KCkpO3ZhciBiPU1hdGgubWF4KHUsZCk7YT0odGhpcy53aWR0aCgpLWItMip0aGlzLl90ZXh0UGFkZGluZykvMixuPU1hdGgubWF4KHRoaXMud2lkdGgoKS1hLTIqZi1iLDApLGk9MSxvPWZ1bmN0aW9uKHQsbil7cmV0dXJuIGUuaGVpZ2h0KCktKG4rMSl9LHkueUFsaWduPSJ0b3AiLG0ueT0wLF8ueUFsaWduPSJib3R0b20iLGcueT0wLCJsZWZ0Ij09PXRoaXMuX29yaWVudGF0aW9uPyhyPWZ1bmN0aW9uKHQsZSl7cmV0dXJuIGYrYitmfSx5LnhBbGlnbj0icmlnaHQiLG0ueD0tKGErbitmKSxfLnhBbGlnbj0icmlnaHQiLGcueD0tKGErbitmKSk6KHI9ZnVuY3Rpb24odCxlKXtyZXR1cm4gYX0seS54QWxpZ249ImxlZnQiLG0ueD1hK24rZixfLnhBbGlnbj0ibGVmdCIsZy54PWErbitmKSx2LndpZHRoPW4sdi5oZWlnaHQ9cyppfWVsc2UgYT1NYXRoLm1heChmLCh0aGlzLmhlaWdodCgpLXApLzIpLHM9TWF0aC5tYXgoTWF0aC5mbG9vcih0aGlzLndpZHRoKCktNCpmLXUtZCksMCksbj0xLGk9TWF0aC5tYXgodGhpcy5oZWlnaHQoKS0yKmEsMCkscj1mdW5jdGlvbih0LGUpe3JldHVybiBNYXRoLmZsb29yKHUrMipmKStlfSxvPWZ1bmN0aW9uKHQsZSl7cmV0dXJuIGF9LHkueEFsaWduPSJyaWdodCIsbS54PS1mLF8ueEFsaWduPSJsZWZ0IixnLng9Zix2Lnk9YSx2LndpZHRoPXMqbix2LmhlaWdodD1pO3YueD1yKG51bGwsMCksdGhpcy5fdXBwZXJMYWJlbC50ZXh0KCIiKSx0aGlzLl93cml0ZXIud3JpdGUoaCx0aGlzLndpZHRoKCksdGhpcy5oZWlnaHQoKSx5LHRoaXMuX3VwcGVyTGFiZWwubm9kZSgpKSx0aGlzLl91cHBlckxhYmVsLmF0dHIoInRyYW5zZm9ybSIsInRyYW5zbGF0ZSgiK20ueCsiLCAiK20ueSsiKSIpLHRoaXMuX2xvd2VyTGFiZWwudGV4dCgiIiksdGhpcy5fd3JpdGVyLndyaXRlKGMsdGhpcy53aWR0aCgpLHRoaXMuaGVpZ2h0KCksXyx0aGlzLl9sb3dlckxhYmVsLm5vZGUoKSksdGhpcy5fbG93ZXJMYWJlbC5hdHRyKCJ0cmFuc2Zvcm0iLCJ0cmFuc2xhdGUoIitnLngrIiwgIitnLnkrIikiKSx0aGlzLl9zd2F0Y2hCb3VuZGluZ0JveC5hdHRycyh2KTt2YXIgeD10aGlzLl9nZW5lcmF0ZVRpY2tzKHMpLHc9dGhpcy5fc3dhdGNoQ29udGFpbmVyLnNlbGVjdEFsbCgicmVjdC5zd2F0Y2giKS5kYXRhKHgpLFM9dy5lbnRlcigpLmFwcGVuZCgicmVjdCIpLmNsYXNzZWQoInN3YXRjaCIsITApLE09dy5tZXJnZShTKTtyZXR1cm4gdy5leGl0KCkucmVtb3ZlKCksTS5hdHRycyh7ZmlsbDpmdW5jdGlvbih0LG4pe3JldHVybiBlLl9zY2FsZS5zY2FsZSh0KX0sd2lkdGg6bixoZWlnaHQ6aSx4OnIseTpvLCJzaGFwZS1yZW5kZXJpbmciOiJjcmlzcEVkZ2VzIn0pLGVtdC5BRERfVElUTEVfRUxFTUVOVFMmJlMuYXBwZW5kKCJ0aXRsZSIpLnRleHQoKGZ1bmN0aW9uKHQpe3JldHVybiBlLl9mb3JtYXR0ZXIodCl9KSksdGhpc30sZS5fREVGQVVMVF9OVU1fU1dBVENIRVM9MTEsZS5MRUdFTkRfTEFCRUxfQ0xBU1M9ImxlZ2VuZC1sYWJlbCIsZX0pKHBtdC5Db21wb25lbnQpO2UuSW50ZXJwb2xhdGVkQ29sb3JMZWdlbmQ9bn0pKSxKbXQ9YmUoKGZ1bmN0aW9uKHQsZSl7Ci8qKgogICAgICogQ29weXJpZ2h0IDIwMTQtcHJlc2VudCBQYWxhbnRpciBUZWNobm9sb2dpZXMKICAgICAqIEBsaWNlbnNlIE1JVAogICAgICovCk9iamVjdC5kZWZpbmVQcm9wZXJ0eShlLCJfX2VzTW9kdWxlIix7dmFsdWU6ITB9KTt2YXIgbj0oZnVuY3Rpb24odCl7ZnVuY3Rpb24gZShlLG4pe3ZvaWQgMD09PWUmJihlPSIiKSx2b2lkIDA9PT1uJiYobj0wKTt2YXIgaT10LmNhbGwodGhpcyl8fHRoaXM7cmV0dXJuIGkuYWRkQ2xhc3MoImxhYmVsIiksaS50ZXh0KGUpLGkuYW5nbGUobiksaS54QWxpZ25tZW50KCJjZW50ZXIiKS55QWxpZ25tZW50KCJjZW50ZXIiKSxpLl9wYWRkaW5nPTAsaX1yZXR1cm4gU2Z0Ll9fZXh0ZW5kcyhlLHQpLGUucHJvdG90eXBlLnJlcXVlc3RlZFNwYWNlPWZ1bmN0aW9uKHQsZSl7dmFyIG49dGhpcy5fbWVhc3VyZXIubWVhc3VyZSh0aGlzLl90ZXh0KTtyZXR1cm57bWluV2lkdGg6KDA9PT10aGlzLmFuZ2xlKCk/bi53aWR0aDpuLmhlaWdodCkrMip0aGlzLnBhZGRpbmcoKSxtaW5IZWlnaHQ6KDA9PT10aGlzLmFuZ2xlKCk/bi5oZWlnaHQ6bi53aWR0aCkrMip0aGlzLnBhZGRpbmcoKX19LGUucHJvdG90eXBlLl9zZXR1cD1mdW5jdGlvbigpe3QucHJvdG90eXBlLl9zZXR1cC5jYWxsKHRoaXMpLHRoaXMuX3RleHRDb250YWluZXI9dGhpcy5jb250ZW50KCkuYXBwZW5kKCJnIik7dmFyIGU9bmV3IHFmdC5TdmdDb250ZXh0KHRoaXMuX3RleHRDb250YWluZXIubm9kZSgpKTt0aGlzLl9tZWFzdXJlcj1uZXcgcWZ0LkNhY2hlTWVhc3VyZXIoZSksdGhpcy5fd3JhcHBlcj1uZXcgcWZ0LldyYXBwZXIsdGhpcy5fd3JpdGVyPW5ldyBxZnQuV3JpdGVyKHRoaXMuX21lYXN1cmVyLGUsdGhpcy5fd3JhcHBlciksdGhpcy50ZXh0KHRoaXMuX3RleHQpfSxlLnByb3RvdHlwZS50ZXh0PWZ1bmN0aW9uKHQpe2lmKG51bGw9PXQpcmV0dXJuIHRoaXMuX3RleHQ7aWYoInN0cmluZyIhPXR5cGVvZiB0KXRocm93IG5ldyBFcnJvcigiTGFiZWwudGV4dCgpIG9ubHkgdGFrZXMgc3RyaW5ncyBhcyBpbnB1dCIpO3JldHVybiB0aGlzLl90ZXh0PXQsdGhpcy5yZWRyYXcoKSx0aGlzfSxlLnByb3RvdHlwZS5hbmdsZT1mdW5jdGlvbih0KXtpZihudWxsPT10KXJldHVybiB0aGlzLl9hbmdsZTtpZigodCU9MzYwKT4xODA/dC09MzYwOnQ8LTE4MCYmKHQrPTM2MCksLTkwIT09dCYmMCE9PXQmJjkwIT09dCl0aHJvdyBuZXcgRXJyb3IodCsiIGlzIG5vdCBhIHZhbGlkIGFuZ2xlIGZvciBMYWJlbCIpO3JldHVybiB0aGlzLl9hbmdsZT10LHRoaXMucmVkcmF3KCksdGhpc30sZS5wcm90b3R5cGUucGFkZGluZz1mdW5jdGlvbih0KXtpZihudWxsPT10KXJldHVybiB0aGlzLl9wYWRkaW5nO2lmKCh0PSt0KTwwKXRocm93IG5ldyBFcnJvcih0KyIgaXMgbm90IGEgdmFsaWQgcGFkZGluZyB2YWx1ZS4gQ2Fubm90IGJlIGxlc3MgdGhhbiAwLiIpO3JldHVybiB0aGlzLl9wYWRkaW5nPXQsdGhpcy5yZWRyYXcoKSx0aGlzfSxlLnByb3RvdHlwZS5maXhlZFdpZHRoPWZ1bmN0aW9uKCl7cmV0dXJuITB9LGUucHJvdG90eXBlLmZpeGVkSGVpZ2h0PWZ1bmN0aW9uKCl7cmV0dXJuITB9LGUucHJvdG90eXBlLnJlbmRlckltbWVkaWF0ZWx5PWZ1bmN0aW9uKCl7dC5wcm90b3R5cGUucmVuZGVySW1tZWRpYXRlbHkuY2FsbCh0aGlzKSx0aGlzLl90ZXh0Q29udGFpbmVyLnNlbGVjdEFsbCgiZyIpLnJlbW92ZSgpO3ZhciBlPXRoaXMuX21lYXN1cmVyLm1lYXN1cmUodGhpcy5fdGV4dCksbj1NYXRoLm1heChNYXRoLm1pbigodGhpcy5oZWlnaHQoKS1lLmhlaWdodCkvMix0aGlzLnBhZGRpbmcoKSksMCksaT1NYXRoLm1heChNYXRoLm1pbigodGhpcy53aWR0aCgpLWUud2lkdGgpLzIsdGhpcy5wYWRkaW5nKCkpLDApO3RoaXMuX3RleHRDb250YWluZXIuYXR0cigidHJhbnNmb3JtIiwidHJhbnNsYXRlKCIraSsiLCIrbisiKSIpO3ZhciByPXRoaXMud2lkdGgoKS0yKmksbz10aGlzLmhlaWdodCgpLTIqbixhPXt4QWxpZ246dGhpcy54QWxpZ25tZW50KCkseUFsaWduOnRoaXMueUFsaWdubWVudCgpLHRleHRSb3RhdGlvbjp0aGlzLmFuZ2xlKCl9O3JldHVybiB0aGlzLl93cml0ZXIud3JpdGUodGhpcy5fdGV4dCxyLG8sYSksdGhpc30sZS5wcm90b3R5cGUuaW52YWxpZGF0ZUNhY2hlPWZ1bmN0aW9uKCl7dC5wcm90b3R5cGUuaW52YWxpZGF0ZUNhY2hlLmNhbGwodGhpcyksdGhpcy5fbWVhc3VyZXIucmVzZXQoKX0sZX0pKHBtdC5Db21wb25lbnQpO2UuTGFiZWw9bjt2YXIgaT0oZnVuY3Rpb24odCl7ZnVuY3Rpb24gZShuLGkpe3ZhciByPXQuY2FsbCh0aGlzLG4saSl8fHRoaXM7cmV0dXJuIHIuYWRkQ2xhc3MoZS5USVRMRV9MQUJFTF9DTEFTUykscn1yZXR1cm4gU2Z0Ll9fZXh0ZW5kcyhlLHQpLGUuVElUTEVfTEFCRUxfQ0xBU1M9InRpdGxlLWxhYmVsIixlfSkobik7ZS5UaXRsZUxhYmVsPWk7dmFyIHI9KGZ1bmN0aW9uKHQpe2Z1bmN0aW9uIGUobixpKXt2YXIgcj10LmNhbGwodGhpcyxuLGkpfHx0aGlzO3JldHVybiByLmFkZENsYXNzKGUuQVhJU19MQUJFTF9DTEFTUykscn1yZXR1cm4gU2Z0Ll9fZXh0ZW5kcyhlLHQpLGUuQVhJU19MQUJFTF9DTEFTUz0iYXhpcy1sYWJlbCIsZX0pKG4pO2UuQXhpc0xhYmVsPXJ9KSksUW10PWJlKChmdW5jdGlvbih0LGUpewovKioKICAgICAqIENvcHlyaWdodCAyMDE0LXByZXNlbnQgUGFsYW50aXIgVGVjaG5vbG9naWVzCiAgICAgKiBAbGljZW5zZSBNSVQKICAgICAqLwpPYmplY3QuZGVmaW5lUHJvcGVydHkoZSwiX19lc01vZHVsZSIse3ZhbHVlOiEwfSksZS5jaXJjbGU9ZnVuY3Rpb24gbigpe3JldHVybiBmdW5jdGlvbih0KXtyZXR1cm4gVWh0LnN5bWJvbCgpLnR5cGUoVWh0LnN5bWJvbENpcmNsZSkuc2l6ZShNYXRoLlBJKk1hdGgucG93KHQvMiwyKSl9fSxlLnNxdWFyZT1mdW5jdGlvbiBpKCl7cmV0dXJuIGZ1bmN0aW9uKHQpe3JldHVybiBVaHQuc3ltYm9sKCkudHlwZShVaHQuc3ltYm9sU3F1YXJlKS5zaXplKE1hdGgucG93KHQsMikpfX0sZS5jcm9zcz1mdW5jdGlvbiByKCl7cmV0dXJuIGZ1bmN0aW9uKHQpe3JldHVybiBVaHQuc3ltYm9sKCkudHlwZShVaHQuc3ltYm9sQ3Jvc3MpLnNpemUoNS85Kk1hdGgucG93KHQsMikpfX0sZS5kaWFtb25kPWZ1bmN0aW9uIG8oKXtyZXR1cm4gZnVuY3Rpb24odCl7cmV0dXJuIFVodC5zeW1ib2woKS50eXBlKFVodC5zeW1ib2xEaWFtb25kKS5zaXplKE1hdGgudGFuKE1hdGguUEkvNikqTWF0aC5wb3codCwyKS8yKX19LGUudHJpYW5nbGU9ZnVuY3Rpb24gYSgpe3JldHVybiBmdW5jdGlvbih0KXtyZXR1cm4gVWh0LnN5bWJvbCgpLnR5cGUoVWh0LnN5bWJvbFRyaWFuZ2xlKS5zaXplKE1hdGguc3FydCgzKSpNYXRoLnBvdyh0LzIsMikpfX0sZS5zdGFyPWZ1bmN0aW9uIHMoKXtyZXR1cm4gZnVuY3Rpb24odCl7cmV0dXJuIFVodC5zeW1ib2woKS50eXBlKFVodC5zeW1ib2xTdGFyKS5zaXplKC44OTA4MTMwOTE1MjkyODUyKk1hdGgucG93KHQvMiwyKSl9fTt2YXIgbD0zKigxL01hdGguc3FydCgxMikvMisxKTtlLnd5ZT1mdW5jdGlvbiBjKCl7cmV0dXJuIGZ1bmN0aW9uKHQpe3JldHVybiBVaHQuc3ltYm9sKCkudHlwZShVaHQuc3ltYm9sV3llKS5zaXplKGwqTWF0aC5wb3codC8yLjQsMikpfX19KSksdGd0PWJlKChmdW5jdGlvbih0LGUpewovKioKICAgICAqIENvcHlyaWdodCAyMDE0LXByZXNlbnQgUGFsYW50aXIgVGVjaG5vbG9naWVzCiAgICAgKiBAbGljZW5zZSBNSVQKICAgICAqLwpPYmplY3QuZGVmaW5lUHJvcGVydHkoZSwiX19lc01vZHVsZSIse3ZhbHVlOiEwfSk7dmFyIG49KGZ1bmN0aW9uKCl7ZnVuY3Rpb24gdCh0LGUsbil7dm9pZCAwPT09dCYmKHQ9W10pLHZvaWQgMD09PWUmJihlPTApLHZvaWQgMD09PW4mJihuPTEvMCksdGhpcy5jb2x1bW5zPXQsdGhpcy5ib3R0b21QYWRkaW5nPWUsdGhpcy5tYXhXaWR0aD1ufXJldHVybiB0LnByb3RvdHlwZS5hZGRDb2x1bW49ZnVuY3Rpb24odCl7dmFyIGU9dC53aWR0aCxuPXRoaXMuZ2V0V2lkdGhBdmFpbGFibGUoKTt0LndpZHRoPU1hdGgubWluKG4sZSksdGhpcy5jb2x1bW5zLnB1c2godCl9LHQucHJvdG90eXBlLmdldEJvdW5kcz1mdW5jdGlvbih0KXtmb3IodmFyIGU9dGhpcy5jb2x1bW5zW3RdLG49MCxpPTA7aTx0O2krKyluKz10aGlzLmNvbHVtbnNbaV0ud2lkdGg7cmV0dXJue3RvcExlZnQ6e3g6bix5OjB9LGJvdHRvbVJpZ2h0Ont4Om4rZS53aWR0aCx5OmUuaGVpZ2h0fX19LHQucHJvdG90eXBlLmdldEhlaWdodD1mdW5jdGlvbigpe3JldHVybiB1bXQuTWF0aC5tYXgodGhpcy5jb2x1bW5zLm1hcCgoZnVuY3Rpb24odCl7cmV0dXJuIHQuaGVpZ2h0fSkpLDApK3RoaXMuYm90dG9tUGFkZGluZ30sdC5wcm90b3R5cGUuZ2V0V2lkdGg9ZnVuY3Rpb24oKXtyZXR1cm4gTWF0aC5taW4odGhpcy5jb2x1bW5zLnJlZHVjZSgoZnVuY3Rpb24odCxlKXtyZXR1cm4gdCtlLndpZHRofSksMCksdGhpcy5tYXhXaWR0aCl9LHQucHJvdG90eXBlLmdldFdpZHRoQXZhaWxhYmxlPWZ1bmN0aW9uKCl7dmFyIHQ9dGhpcy5nZXRXaWR0aCgpO3JldHVybiBNYXRoLm1heCh0aGlzLm1heFdpZHRoLXQsMCl9LHR9KSgpLGk9KGZ1bmN0aW9uKCl7ZnVuY3Rpb24gdCh0LGUsbixpKXt2b2lkIDA9PT10JiYodD0xLzApLHZvaWQgMD09PWUmJihlPTEvMCksdm9pZCAwPT09biYmKG49MCksdm9pZCAwPT09aSYmKGk9W10pLHRoaXMubWF4V2lkdGg9dCx0aGlzLm1heEhlaWdodD1lLHRoaXMucGFkZGluZz1uLHRoaXMucm93cz1pfXJldHVybiB0LnByb3RvdHlwZS5hZGRSb3c9ZnVuY3Rpb24odCl7dC5tYXhXaWR0aD10aGlzLm1heFdpZHRoLTIqdGhpcy5wYWRkaW5nLHRoaXMucm93cy5wdXNoKHQpfSx0LnByb3RvdHlwZS5nZXRDb2x1bW5Cb3VuZHM9ZnVuY3Rpb24odCxlKXt2YXIgbj10aGlzLmdldFJvd0JvdW5kcyh0KSxpPXRoaXMucm93c1t0XS5nZXRCb3VuZHMoZSk7cmV0dXJuIGkudG9wTGVmdC54Kz1uLnRvcExlZnQueCxpLmJvdHRvbVJpZ2h0LngrPW4udG9wTGVmdC54LGkudG9wTGVmdC55Kz1uLnRvcExlZnQueSxpLmJvdHRvbVJpZ2h0LnkrPW4udG9wTGVmdC55LGl9LHQucHJvdG90eXBlLmdldFJvd0JvdW5kcz1mdW5jdGlvbih0KXtmb3IodmFyIGU9dGhpcy5wYWRkaW5nLG49dGhpcy5wYWRkaW5nLGk9MDtpPHQ7aSsrKW4rPXRoaXMucm93c1tpXS5nZXRIZWlnaHQoKTtyZXR1cm57dG9wTGVmdDp7eDplLHk6bn0sYm90dG9tUmlnaHQ6e3g6ZSt0aGlzLnJvd3NbdF0uZ2V0V2lkdGgoKSx5Om4rdGhpcy5yb3dzW3RdLmdldEhlaWdodCgpfX19LHQucHJvdG90eXBlLmdldEhlaWdodD1mdW5jdGlvbigpe3JldHVybiBNYXRoLm1pbih0aGlzLnJvd3MucmVkdWNlKChmdW5jdGlvbih0LGUpe3JldHVybiB0K2UuZ2V0SGVpZ2h0KCl9KSwwKSsyKnRoaXMucGFkZGluZyx0aGlzLm1heEhlaWdodCl9LHQucHJvdG90eXBlLmdldFdpZHRoPWZ1bmN0aW9uKCl7cmV0dXJuIE1hdGgubWluKHVtdC5NYXRoLm1heCh0aGlzLnJvd3MubWFwKChmdW5jdGlvbih0KXtyZXR1cm4gdC5nZXRXaWR0aCgpfSkpLDApKzIqdGhpcy5wYWRkaW5nLHRoaXMubWF4V2lkdGgpfSx0fSkoKSxyPShmdW5jdGlvbih0KXtmdW5jdGlvbiBlKGUpe3ZhciBuPXQuY2FsbCh0aGlzKXx8dGhpcztpZihuLl9wYWRkaW5nPTUsbi5fcm93Qm90dG9tUGFkZGluZz0zLG4uYWRkQ2xhc3MoImxlZ2VuZCIpLG4ubWF4RW50cmllc1BlclJvdygxKSxudWxsPT1lKXRocm93IG5ldyBFcnJvcigiTGVnZW5kIHJlcXVpcmVzIGEgY29sb3JTY2FsZSIpO3JldHVybiBuLl9jb2xvclNjYWxlPWUsbi5fcmVkcmF3Q2FsbGJhY2s9ZnVuY3Rpb24odCl7cmV0dXJuIG4ucmVkcmF3KCl9LG4uX2NvbG9yU2NhbGUub25VcGRhdGUobi5fcmVkcmF3Q2FsbGJhY2spLG4uX2Zvcm1hdHRlcj1mbXQuaWRlbnRpdHkoKSxuLm1heExpbmVzUGVyRW50cnkoMSksbi54QWxpZ25tZW50KCJyaWdodCIpLnlBbGlnbm1lbnQoInRvcCIpLG4uY29tcGFyYXRvcigoZnVuY3Rpb24odCxlKXt2YXIgaT1uLl9jb2xvclNjYWxlLmRvbWFpbigpLnNsaWNlKCkubWFwKChmdW5jdGlvbih0KXtyZXR1cm4gbi5fZm9ybWF0dGVyKHQpfSkpO3JldHVybiBpLmluZGV4T2YodCktaS5pbmRleE9mKGUpfSkpLG4uX3N5bWJvbEZhY3RvcnlBY2Nlc3Nvcj1mdW5jdGlvbigpe3JldHVybiBRbXQuY2lyY2xlKCl9LG4uX3N5bWJvbE9wYWNpdHlBY2Nlc3Nvcj1mdW5jdGlvbigpe3JldHVybiAxfSxufXJldHVybiBTZnQuX19leHRlbmRzKGUsdCksZS5wcm90b3R5cGUuX3NldHVwPWZ1bmN0aW9uKCl7dC5wcm90b3R5cGUuX3NldHVwLmNhbGwodGhpcyk7dmFyIG49dGhpcy5jb250ZW50KCkuYXBwZW5kKCJnIikuY2xhc3NlZChlLkxFR0VORF9ST1dfQ0xBU1MsITApO24uYXBwZW5kKCJnIikuY2xhc3NlZChlLkxFR0VORF9FTlRSWV9DTEFTUywhMCkuYXBwZW5kKCJ0ZXh0Iik7dmFyIGk9bmV3IHFmdC5TdmdDb250ZXh0KG4ubm9kZSgpLG51bGwsZW10LkFERF9USVRMRV9FTEVNRU5UUyk7dGhpcy5fbWVhc3VyZXI9bmV3IHFmdC5DYWNoZU1lYXN1cmVyKGkpLHRoaXMuX3dyYXBwZXI9KG5ldyBxZnQuV3JhcHBlcikubWF4TGluZXModGhpcy5tYXhMaW5lc1BlckVudHJ5KCkpLHRoaXMuX3dyaXRlcj1uZXcgcWZ0LldyaXRlcih0aGlzLl9tZWFzdXJlcixpLHRoaXMuX3dyYXBwZXIpfSxlLnByb3RvdHlwZS5mb3JtYXR0ZXI9ZnVuY3Rpb24odCl7cmV0dXJuIG51bGw9PXQ/dGhpcy5fZm9ybWF0dGVyOih0aGlzLl9mb3JtYXR0ZXI9dCx0aGlzLnJlZHJhdygpLHRoaXMpfSxlLnByb3RvdHlwZS5tYXhFbnRyaWVzUGVyUm93PWZ1bmN0aW9uKHQpe3JldHVybiBudWxsPT10P3RoaXMuX21heEVudHJpZXNQZXJSb3c6KHRoaXMuX21heEVudHJpZXNQZXJSb3c9dCx0aGlzLnJlZHJhdygpLHRoaXMpfSxlLnByb3RvdHlwZS5tYXhMaW5lc1BlckVudHJ5PWZ1bmN0aW9uKHQpe3JldHVybiBudWxsPT10P3RoaXMuX21heExpbmVzUGVyRW50cnk6KHRoaXMuX21heExpbmVzUGVyRW50cnk9dCx0aGlzLnJlZHJhdygpLHRoaXMpfSxlLnByb3RvdHlwZS5tYXhXaWR0aD1mdW5jdGlvbih0KXtyZXR1cm4gbnVsbD09dD90aGlzLl9tYXhXaWR0aDoodGhpcy5fbWF4V2lkdGg9dCx0aGlzLnJlZHJhdygpLHRoaXMpfSxlLnByb3RvdHlwZS5jb21wYXJhdG9yPWZ1bmN0aW9uKHQpe3JldHVybiBudWxsPT10P3RoaXMuX2NvbXBhcmF0b3I6KHRoaXMuX2NvbXBhcmF0b3I9dCx0aGlzLnJlZHJhdygpLHRoaXMpfSxlLnByb3RvdHlwZS5jb2xvclNjYWxlPWZ1bmN0aW9uKHQpe3JldHVybiBudWxsIT10Pyh0aGlzLl9jb2xvclNjYWxlLm9mZlVwZGF0ZSh0aGlzLl9yZWRyYXdDYWxsYmFjayksdGhpcy5fY29sb3JTY2FsZT10LHRoaXMuX2NvbG9yU2NhbGUub25VcGRhdGUodGhpcy5fcmVkcmF3Q2FsbGJhY2spLHRoaXMucmVkcmF3KCksdGhpcyk6dGhpcy5fY29sb3JTY2FsZX0sZS5wcm90b3R5cGUuZGVzdHJveT1mdW5jdGlvbigpe3QucHJvdG90eXBlLmRlc3Ryb3kuY2FsbCh0aGlzKSx0aGlzLl9jb2xvclNjYWxlLm9mZlVwZGF0ZSh0aGlzLl9yZWRyYXdDYWxsYmFjayl9LGUucHJvdG90eXBlLl9idWlsZExlZ2VuZFRhYmxlPWZ1bmN0aW9uKHQsZSl7dmFyIHI9dGhpcyxvPXRoaXMuX21lYXN1cmVyLm1lYXN1cmUoKS5oZWlnaHQsYT1uZXcgaSh0LGUsdGhpcy5fcGFkZGluZykscz10aGlzLl9jb2xvclNjYWxlLmRvbWFpbigpLnNsaWNlKCkuc29ydCgoZnVuY3Rpb24odCxlKXtyZXR1cm4gci5fY29tcGFyYXRvcihyLl9mb3JtYXR0ZXIodCksci5fZm9ybWF0dGVyKGUpKX0pKSxsPW5ldyBuO3JldHVybiBhLmFkZFJvdyhsKSxsLmJvdHRvbVBhZGRpbmc9dGhpcy5fcm93Qm90dG9tUGFkZGluZyxzLmZvckVhY2goKGZ1bmN0aW9uKHQsZSl7bC5jb2x1bW5zLmxlbmd0aC8yPT09ci5tYXhFbnRyaWVzUGVyUm93KCkmJigobD1uZXcgbikuYm90dG9tUGFkZGluZz1yLl9yb3dCb3R0b21QYWRkaW5nLGEuYWRkUm93KGwpKTt2YXIgaT1sLmdldFdpZHRoQXZhaWxhYmxlKCkscz1yLl9mb3JtYXR0ZXIodCksYz1yLl9tZWFzdXJlci5tZWFzdXJlKHMpLndpZHRoO2ktby1jPDAmJmwuY29sdW1ucy5sZW5ndGg+MSYmKChsPW5ldyBuKS5ib3R0b21QYWRkaW5nPXIuX3Jvd0JvdHRvbVBhZGRpbmcsYS5hZGRSb3cobCkpLGwuYWRkQ29sdW1uKHt3aWR0aDpvLGhlaWdodDpvLGRhdGE6e25hbWU6dCx0eXBlOiJzeW1ib2wifX0pLGk9bC5nZXRXaWR0aEF2YWlsYWJsZSgpO3ZhciB1PU1hdGgubWluKGksYyk7ci5fd3JhcHBlci5tYXhMaW5lcyhyLm1heExpbmVzUGVyRW50cnkoKSk7dmFyIGg9ci5fd3JhcHBlci53cmFwKHMsci5fbWVhc3VyZXIsdSkubm9MaW5lcztsLmFkZENvbHVtbih7d2lkdGg6dSxoZWlnaHQ6aCpvLGRhdGE6e25hbWU6dCx0eXBlOiJ0ZXh0In19KX0pKSxhfSxlLnByb3RvdHlwZS5yZXF1ZXN0ZWRTcGFjZT1mdW5jdGlvbih0LGUpe3ZhciBuPXRoaXMuX2J1aWxkTGVnZW5kVGFibGUodW10Lk1hdGgubWluKFt0aGlzLm1heFdpZHRoKCksdF0sdCksZSk7cmV0dXJue21pbkhlaWdodDpuLmdldEhlaWdodCgpLG1pbldpZHRoOm4uZ2V0V2lkdGgoKX19LGUucHJvdG90eXBlLmVudGl0aWVzQXQ9ZnVuY3Rpb24odCl7dmFyIG49dGhpcztpZighdGhpcy5faXNTZXR1cClyZXR1cm5bXTt2YXIgaT10aGlzLl9idWlsZExlZ2VuZFRhYmxlKHRoaXMud2lkdGgoKSx0aGlzLmhlaWdodCgpKTtyZXR1cm4gaS5yb3dzLnJlZHVjZSgoZnVuY3Rpb24ocixvLGEpe2lmKDAhPT1yLmxlbmd0aClyZXR1cm4gcjt2YXIgcz1pLmdldFJvd0JvdW5kcyhhKTtyZXR1cm4gdW10Lk1hdGgud2l0aGluKHQscyk/by5jb2x1bW5zLnJlZHVjZSgoZnVuY3Rpb24ocixvLHMpe3ZhciBsPWkuZ2V0Q29sdW1uQm91bmRzKGEscyk7aWYodW10Lk1hdGgud2l0aGluKHQsbCkpe3ZhciBjPW4uY29udGVudCgpLnNlbGVjdEFsbCgiLiIrZS5MRUdFTkRfUk9XX0NMQVNTKS5ub2RlcygpW2FdLHU9VWh0LnNlbGVjdChjKS5zZWxlY3RBbGwoIi4iK2UuTEVHRU5EX0VOVFJZX0NMQVNTKS5ub2RlcygpW01hdGguZmxvb3Iocy8yKV0saD1VaHQuc2VsZWN0KHUpLnNlbGVjdCgiLiIrZS5MRUdFTkRfU1lNQk9MX0NMQVNTKSxkPXVtdC5ET00uZ2V0VHJhbnNsYXRlVmFsdWVzKFVodC5zZWxlY3QoYykpLHA9dW10LkRPTS5nZXRUcmFuc2xhdGVWYWx1ZXMoaCk7cmV0dXJuW3tib3VuZHM6dW10LkRPTS5lbGVtZW50QkJveChVaHQuc2VsZWN0KGMpKSxkYXR1bTpvLmRhdGEubmFtZSxwb3NpdGlvbjp7eDpkWzBdK3BbMF0seTpkWzFdK3BbMV19LHNlbGVjdGlvbjpVaHQuc2VsZWN0KHUpLGNvbXBvbmVudDpufV19cmV0dXJuIHJ9KSxyKTpyfSksW10pfSxlLnByb3RvdHlwZS5yZW5kZXJJbW1lZGlhdGVseT1mdW5jdGlvbigpe3QucHJvdG90eXBlLnJlbmRlckltbWVkaWF0ZWx5LmNhbGwodGhpcyk7dmFyIG49dGhpcy5fYnVpbGRMZWdlbmRUYWJsZSh0aGlzLndpZHRoKCksdGhpcy5oZWlnaHQoKSk7dGhpcy5jb250ZW50KCkuc2VsZWN0QWxsKCIqIikucmVtb3ZlKCk7dmFyIGk9dGhpcy5jb250ZW50KCkuc2VsZWN0QWxsKCJnLiIrZS5MRUdFTkRfUk9XX0NMQVNTKS5kYXRhKG4ucm93cykscj1pLmVudGVyKCkuYXBwZW5kKCJnIikuY2xhc3NlZChlLkxFR0VORF9ST1dfQ0xBU1MsITApLm1lcmdlKGkpO2kuZXhpdCgpLnJlbW92ZSgpLHIuYXR0cigidHJhbnNmb3JtIiwoZnVuY3Rpb24odCxlKXt2YXIgaT1uLmdldFJvd0JvdW5kcyhlKTtyZXR1cm4idHJhbnNsYXRlKCIraS50b3BMZWZ0LngrIiwgIitpLnRvcExlZnQueSsiKSJ9KSk7dmFyIG89dGhpcztyZXR1cm4gci5lYWNoKChmdW5jdGlvbih0LGkpe2Zvcih2YXIgcj1bXSxhPTA7YTx0LmNvbHVtbnMubGVuZ3RoO2ErPTIpci5wdXNoKFt0LmNvbHVtbnNbYV0sdC5jb2x1bW5zW2ErMV1dKTt2YXIgcz1VaHQuc2VsZWN0KHRoaXMpLnNlbGVjdEFsbCgiZy4iK2UuTEVHRU5EX0VOVFJZX0NMQVNTKS5kYXRhKHIpLGw9cy5lbnRlcigpLmFwcGVuZCgiZyIpLmNsYXNzZWQoZS5MRUdFTkRfRU5UUllfQ0xBU1MsITApLm1lcmdlKHMpO2wuYXBwZW5kKCJwYXRoIikuYXR0cigiZCIsKGZ1bmN0aW9uKHQsZSl7dmFyIG49dFswXTtyZXR1cm4gby5zeW1ib2woKShuLmRhdGEubmFtZSxpKSguNipuLmhlaWdodCkobnVsbCl9KSkuYXR0cigidHJhbnNmb3JtIiwoZnVuY3Rpb24odCxlKXt2YXIgcj10WzBdLG89bi5yb3dzW2ldLmNvbHVtbnMuaW5kZXhPZihyKTtyZXR1cm4idHJhbnNsYXRlKCIrKG4uZ2V0Q29sdW1uQm91bmRzKGksbykudG9wTGVmdC54K3Iud2lkdGgvMikrIiwgIityLmhlaWdodC8yKyIpIn0pKS5hdHRyKCJmaWxsIiwoZnVuY3Rpb24odCl7cmV0dXJuIG8uX2NvbG9yU2NhbGUuc2NhbGUodFswXS5kYXRhLm5hbWUpfSkpLmF0dHIoIm9wYWNpdHkiLChmdW5jdGlvbih0LGUpe3JldHVybiBvLnN5bWJvbE9wYWNpdHkoKSh0WzBdLmRhdGEubmFtZSxpKX0pKS5jbGFzc2VkKGUuTEVHRU5EX1NZTUJPTF9DTEFTUywhMCksbC5hcHBlbmQoImciKS5jbGFzc2VkKCJ0ZXh0LWNvbnRhaW5lciIsITApLmF0dHIoInRyYW5zZm9ybSIsKGZ1bmN0aW9uKHQsZSl7dmFyIHI9bi5yb3dzW2ldLmNvbHVtbnMuaW5kZXhPZih0WzFdKTtyZXR1cm4idHJhbnNsYXRlKCIrbi5nZXRDb2x1bW5Cb3VuZHMoaSxyKS50b3BMZWZ0LngrIiwgMCkifSkpLmVhY2goKGZ1bmN0aW9uKHQsZSxuKXt2YXIgaT1VaHQuc2VsZWN0KHRoaXMpLHI9dFsxXTtvLl93cml0ZXIud3JpdGUoby5fZm9ybWF0dGVyKHIuZGF0YS5uYW1lKSxyLndpZHRoLG8uaGVpZ2h0KCkse3hBbGlnbjoibGVmdCIseUFsaWduOiJ0b3AiLHRleHRSb3RhdGlvbjowfSxpLm5vZGUoKSl9KSkscy5leGl0KCkucmVtb3ZlKCl9KSksdGhpc30sZS5wcm90b3R5cGUuc3ltYm9sPWZ1bmN0aW9uKHQpe3JldHVybiBudWxsPT10P3RoaXMuX3N5bWJvbEZhY3RvcnlBY2Nlc3NvcjoodGhpcy5fc3ltYm9sRmFjdG9yeUFjY2Vzc29yPXQsdGhpcy5yZW5kZXIoKSx0aGlzKX0sZS5wcm90b3R5cGUuc3ltYm9sT3BhY2l0eT1mdW5jdGlvbih0KXtyZXR1cm4gbnVsbD09dD90aGlzLl9zeW1ib2xPcGFjaXR5QWNjZXNzb3I6KHRoaXMuX3N5bWJvbE9wYWNpdHlBY2Nlc3Nvcj0ibnVtYmVyIj09dHlwZW9mIHQ/ZnVuY3Rpb24oKXtyZXR1cm4gdH06dCx0aGlzLnJlbmRlcigpLHRoaXMpfSxlLnByb3RvdHlwZS5maXhlZFdpZHRoPWZ1bmN0aW9uKCl7cmV0dXJuITB9LGUucHJvdG90eXBlLmZpeGVkSGVpZ2h0PWZ1bmN0aW9uKCl7cmV0dXJuITB9LGUucHJvdG90eXBlLmludmFsaWRhdGVDYWNoZT1mdW5jdGlvbigpe3QucHJvdG90eXBlLmludmFsaWRhdGVDYWNoZS5jYWxsKHRoaXMpLHRoaXMuX21lYXN1cmVyLnJlc2V0KCl9LGUuTEVHRU5EX1JPV19DTEFTUz0ibGVnZW5kLXJvdyIsZS5MRUdFTkRfRU5UUllfQ0xBU1M9ImxlZ2VuZC1lbnRyeSIsZS5MRUdFTkRfU1lNQk9MX0NMQVNTPSJsZWdlbmQtc3ltYm9sIixlfSkocG10LkNvbXBvbmVudCk7ZS5MZWdlbmQ9cn0pKSxlZ3Q9YmUoKGZ1bmN0aW9uKHQsZSl7dmFyIG47Ci8qKgogICAgICogQ29weXJpZ2h0IDIwMTQtcHJlc2VudCBQYWxhbnRpciBUZWNobm9sb2dpZXMKICAgICAqIEBsaWNlbnNlIE1JVAogICAgICovCk9iamVjdC5kZWZpbmVQcm9wZXJ0eShlLCJfX2VzTW9kdWxlIix7dmFsdWU6ITB9KSwobj1lLkFuaW1hdG9yfHwoZS5BbmltYXRvcj17fSkpLk1BSU49Im1haW4iLG4uUkVTRVQ9InJlc2V0In0pKTtmdW5jdGlvbiBuZ3QodCl7cmV0dXJuITA9PT0oZnVuY3Rpb24gdChlKXtyZXR1cm4gbnVsbCE9ZSYmIm9iamVjdCI9PXR5cGVvZiBlJiYhMT09PUFycmF5LmlzQXJyYXkoZSl9KSh0KSYmIltvYmplY3QgT2JqZWN0XSI9PT1PYmplY3QucHJvdG90eXBlLnRvU3RyaW5nLmNhbGwodCl9dmFyIGlndD1iZSgoZnVuY3Rpb24odCxlKXsKLyoqCiAgICAgKiBDb3B5cmlnaHQgMjAxNC1wcmVzZW50IFBhbGFudGlyIFRlY2hub2xvZ2llcwogICAgICogQGxpY2Vuc2UgTUlUCiAgICAgKi8KT2JqZWN0LmRlZmluZVByb3BlcnR5KGUsIl9fZXNNb2R1bGUiLHt2YWx1ZTohMH0pO3ZhciBuPTAsaT0oZnVuY3Rpb24oKXtmdW5jdGlvbiB0KHQsZSl7dm9pZCAwPT09dCYmKHQ9W10pLHZvaWQgMD09PWUmJihlPXt9KSx0aGlzLl91cGRhdGVJZD1uKyssdGhpcy5fZGF0YT10LHRoaXMuX21ldGFkYXRhPWUsdGhpcy5fY2FsbGJhY2tzPW5ldyB1bXQuQ2FsbGJhY2tTZXR9cmV0dXJuIHQucHJvdG90eXBlLm9uVXBkYXRlPWZ1bmN0aW9uKHQpe3JldHVybiB0aGlzLl9jYWxsYmFja3MuYWRkKHQpLHRoaXN9LHQucHJvdG90eXBlLm9mZlVwZGF0ZT1mdW5jdGlvbih0KXtyZXR1cm4gdGhpcy5fY2FsbGJhY2tzLmRlbGV0ZSh0KSx0aGlzfSx0LnByb3RvdHlwZS5kYXRhPWZ1bmN0aW9uKHQpe3JldHVybiBudWxsPT10P3RoaXMuX2RhdGE6KHRoaXMuX2RhdGE9dCx0aGlzLl9kaXNwYXRjaFVwZGF0ZSgpLHRoaXMpfSx0LnByb3RvdHlwZS5tZXRhZGF0YT1mdW5jdGlvbih0KXtyZXR1cm4gbnVsbD09dD90aGlzLl9tZXRhZGF0YToodGhpcy5fbWV0YWRhdGE9dCx0aGlzLl9kaXNwYXRjaFVwZGF0ZSgpLHRoaXMpfSx0LnByb3RvdHlwZS51cGRhdGVJZD1mdW5jdGlvbigpe3JldHVybiB0aGlzLl91cGRhdGVJZH0sdC5wcm90b3R5cGUuX2Rpc3BhdGNoVXBkYXRlPWZ1bmN0aW9uKCl7dGhpcy5fdXBkYXRlSWQ9bisrLHRoaXMuX2NhbGxiYWNrcy5jYWxsQ2FsbGJhY2tzKHRoaXMpfSx0fSkoKTtlLkRhdGFzZXQ9aX0pKSxyZ3Q9YmUoKGZ1bmN0aW9uKHQsZSl7ZnVuY3Rpb24gbih0KXtyZXR1cm4gdCBpbnN0YW5jZW9mIGw/dDp0IGluc3RhbmNlb2YgRGF0ZT9vKHQudmFsdWVPZigpKTp0IGluc3RhbmNlb2YgYm10LlNjYWxlP2kodCk6dCBpbnN0YW5jZW9mIGlndC5EYXRhc2V0P3IodCk6KGZ1bmN0aW9uIHQoZSl7dmFyIG4saTtyZXR1cm4hMSE9PW5ndChlKSYmImZ1bmN0aW9uIj09dHlwZW9mKG49ZS5jb25zdHJ1Y3RvcikmJiExIT09bmd0KGk9bi5wcm90b3R5cGUpJiYhMSE9PWkuaGFzT3duUHJvcGVydHkoImlzUHJvdG90eXBlT2YiKX0pKHQpP3ModCk6QXJyYXkuaXNBcnJheSh0KT9hKHQpOm8odCl9ZnVuY3Rpb24gaSh0KXtyZXR1cm4gcyh7ZG9tYWluOnQuZG9tYWluKCkscmFuZ2U6dC5yYW5nZSgpLHVwZGF0ZUlkOnQudXBkYXRlSWQoKSxyZWY6byh0KX0pfWZ1bmN0aW9uIHIodCl7cmV0dXJuIHMoe3JlZjpvKHQpLHVwZGF0ZUlkOnQudXBkYXRlSWQoKX0pfWZ1bmN0aW9uIG8odCl7cmV0dXJuIG5ldyB1KHQpfWZ1bmN0aW9uIGEodCl7cmV0dXJuIG5ldyBjKHQubWFwKChmdW5jdGlvbih0KXtyZXR1cm4gbih0KX0pKSl9ZnVuY3Rpb24gcyh0KXt2YXIgZT17fTtmb3IodmFyIGkgaW4gdCl0Lmhhc093blByb3BlcnR5KGkpJiYoZVtpXT1uKHRbaV0pKTtyZXR1cm4gbmV3IGgoZSl9Ci8qKgogICAgICogQ29weXJpZ2h0IDIwMTQtcHJlc2VudCBQYWxhbnRpciBUZWNobm9sb2dpZXMKICAgICAqIEBsaWNlbnNlIE1JVAogICAgICogQGZpbGVvdmVydmlldyBJbXBsZW1lbnRzIHRoZSBTaWduYXR1cmUgQVBJIHRvIGhlbHAgaW4gY29tcGFyaW5nIHdoZW4gdHdvCiAgICAgKiBQbG90dGFibGUgb2JqZWN0cyBoYXZlICJjaGFuZ2VkIi4KICAgICAqCiAgICAgKiBNZW1vaXphdGlvbiBpbiBQbG90dGFibGUgaXMgY29tcGxpY2F0ZWQgYnkgbXV0YWJsZSBzY2FsZXMgYW5kIGRhdGFzZXRzLiBXZSBjYW5ub3Qgc2ltcGx5CiAgICAgKiByZWZlcmVuY2UgY29tcGFyZSB0d28gZS5nLiBzY2FsZXMgc2luY2UgaXQgbWF5IGhhdmUgaW50ZXJuYWxseSBtdXRhdGVkLiBUbyByZXNvbHZlIHRoaXMsCiAgICAgKiB3ZSB3cml0ZSBhIHJlY3Vyc2l2ZSBTaWduYXR1cmUgaW50ZXJmYWNlIHRoYXQgaG9sZHMgYW4gaW1tdXRhYmxlIHNuYXBzaG90IG9mIHdoYXRldmVyCiAgICAgKiBzdGF0ZSB0aGUgc2NhbGUvZGF0YSB3YXMgaW4gYXQgdGhlIHRpbWUuIFRoZW4gb24gbWVtb2l6ZWQgZnVuY3Rpb24gaW52b2NhdGlvbiB3ZSBzaWduIHRoZQogICAgICogbmV3IGlucHV0cyBhbmQgY29tcGFyZSB0aGUgc2lnbmF0dXJlcyB0byBkZWNpZGUgaWYgd2Ugc2hvdWxkIHJlY29tcHV0ZS4KICAgICAqCiAgICAgKiBXZSBtdXN0IGhhbmQtd3JpdGUgYSBzaWduYXR1cmUgZm9yIGVhY2ggY3VzdG9tIGNsYXNzIHdlIHdpc2ggdG8gc3VwcG9ydC4KICAgICAqLwpPYmplY3QuZGVmaW5lUHJvcGVydHkoZSwiX19lc01vZHVsZSIse3ZhbHVlOiEwfSksZS5zaWduPW4sZS5zaWduU2NhbGU9aSxlLnNpZ25EYXRhc2V0PXIsZS5zaWduUmVmPW8sZS5zaWduQXJyYXk9YSxlLnNpZ25PYmo9czt2YXIgbD0oZnVuY3Rpb24oKXtmdW5jdGlvbiB0KCl7fXJldHVybiB0LnByb3RvdHlwZS5pc0RpZmZlcmVudD1mdW5jdGlvbih0KXtyZXR1cm4hKHQgaW5zdGFuY2VvZiB0aGlzLmNvbnN0cnVjdG9yKXx8dGhpcy5pc1NpZ25hdHVyZURpZmZlcmVudCh0KX0sdH0pKCk7ZS5TaWduYXR1cmU9bDt2YXIgYz0oZnVuY3Rpb24odCl7ZnVuY3Rpb24gZShlKXt2YXIgbj10LmNhbGwodGhpcyl8fHRoaXM7cmV0dXJuIG4uYXJyYXk9ZSxufXJldHVybiBTZnQuX19leHRlbmRzKGUsdCksZS5wcm90b3R5cGUuaXNTaWduYXR1cmVEaWZmZXJlbnQ9ZnVuY3Rpb24odCl7aWYodC5hcnJheS5sZW5ndGghPT10aGlzLmFycmF5Lmxlbmd0aClyZXR1cm4hMDtmb3IodmFyIGU9MDtlPHRoaXMuYXJyYXkubGVuZ3RoO2UrKylpZih0aGlzLmFycmF5W2VdLmlzRGlmZmVyZW50KHQuYXJyYXlbZV0pKXJldHVybiEwO3JldHVybiExfSxlfSkobCk7ZS5BcnJheVNpZ25hdHVyZT1jO3ZhciB1PShmdW5jdGlvbih0KXtmdW5jdGlvbiBlKGUpe3ZhciBuPXQuY2FsbCh0aGlzKXx8dGhpcztyZXR1cm4gbi5yZWY9ZSxufXJldHVybiBTZnQuX19leHRlbmRzKGUsdCksZS5wcm90b3R5cGUuaXNTaWduYXR1cmVEaWZmZXJlbnQ9ZnVuY3Rpb24odCl7cmV0dXJuIHRoaXMucmVmIT09dC5yZWZ9LGV9KShsKTtlLlJlZmVyZW5jZVNpZ25hdHVyZT11O3ZhciBoPShmdW5jdGlvbih0KXtmdW5jdGlvbiBlKGUpe3ZhciBuPXQuY2FsbCh0aGlzKXx8dGhpcztyZXR1cm4gbi5vYmo9ZSxufXJldHVybiBTZnQuX19leHRlbmRzKGUsdCksZS5wcm90b3R5cGUuaXNTaWduYXR1cmVEaWZmZXJlbnQ9ZnVuY3Rpb24odCl7dmFyIGU9T2JqZWN0LmtleXModGhpcy5vYmopLG49T2JqZWN0LmtleXModC5vYmopO2lmKGUubGVuZ3RoIT09bi5sZW5ndGgpcmV0dXJuITA7Zm9yKHZhciBpPTAscj1lO2k8ci5sZW5ndGg7aSsrKXt2YXIgbz1yW2ldO2lmKCF0Lm9iai5oYXNPd25Qcm9wZXJ0eShvKSlyZXR1cm4hMDtpZih0aGlzLm9ialtvXS5pc0RpZmZlcmVudCh0Lm9ialtvXSkpcmV0dXJuITB9cmV0dXJuITF9LGV9KShsKTtlLk9iamVjdFNpZ25hdHVyZT1ofSkpLG9ndD1iZSgoZnVuY3Rpb24odCxlKXsKLyoqCiAgICAgKiBDb3B5cmlnaHQgMjAxNC1wcmVzZW50IFBhbGFudGlyIFRlY2hub2xvZ2llcwogICAgICogQGxpY2Vuc2UgTUlUCiAgICAgKiBAZmlsZW92ZXJ2aWV3IEltcGxlbWVudHMgYSBmdW5jdGlvbiBtZW1vaXplciB1c2luZyB0aGUgU2lnbmF0dXJlIEFQSS4KICAgICAqLwpPYmplY3QuZGVmaW5lUHJvcGVydHkoZSwiX19lc01vZHVsZSIse3ZhbHVlOiEwfSksZS5tZW1vaXplPWZ1bmN0aW9uIG4odCl7dmFyIGUsbj12b2lkIDAsaT0hMSxyPSExLG89ZnVuY3Rpb24oKXtmb3IodmFyIG89W10sYT0wO2E8YXJndW1lbnRzLmxlbmd0aDthKyspb1thXT1hcmd1bWVudHNbYV07aWYoaSlyZXR1cm4gZTt2YXIgcz1yZ3Quc2lnbkFycmF5KG8pO3JldHVybiB2b2lkIDA9PT1ufHxuLmlzRGlmZmVyZW50KHMpPyhyJiZjb25zb2xlLndhcm4oImNhY2hlIG1pc3MhIGNvbXB1dGluZyIpLG49cyxlPXQuYXBwbHkodGhpcyxvKSk6ciYmY29uc29sZS53YXJuKCJjYWNoZSBoaXQhIiksZX07cmV0dXJuIG8uZG9Mb2NrZWQ9ZnVuY3Rpb24odCl7aWYoaSl0aHJvdyBuZXcgRXJyb3IoIkxvY2tpbmcgYW4gYWxyZWFkeSBsb2NrZWQgbWVtb2l6ZSBmdW5jdGlvbiEiKTtpPSEwO3ZhciBlPXQuYXBwbHkodGhpcyk7cmV0dXJuIGk9ITEsZX0sby5sb2dQZXJmb3JtYW5jZT1mdW5jdGlvbih0KXtyZXR1cm4gdm9pZCAwPT09dCYmKHQ9ITApLHI9dCx0aGlzfSxvfX0pKSxhZ3Q9YmUoKGZ1bmN0aW9uKHQsZSl7T2JqZWN0LmRlZmluZVByb3BlcnR5KGUsIl9fZXNNb2R1bGUiLHt2YWx1ZTohMH0pO3ZhciBuPShmdW5jdGlvbigpe2Z1bmN0aW9uIHQoKXt0aGlzLm1hcD1PYmplY3QuY3JlYXRlKG51bGwpLHRoaXMuZXhpc3RzPU9iamVjdC5jcmVhdGUobnVsbCl9cmV0dXJuIHQucHJvdG90eXBlLmRlbGV0ZT1mdW5jdGlvbih0KXtyZXR1cm4gZGVsZXRlIHRoaXMubWFwW3RdLGRlbGV0ZSB0aGlzLmV4aXN0c1t0XSwhMH0sdC5wcm90b3R5cGUuZ2V0PWZ1bmN0aW9uKHQpe3JldHVybiB0aGlzLm1hcFt0XX0sdC5wcm90b3R5cGUuaGFzPWZ1bmN0aW9uKHQpe3JldHVybiEhdGhpcy5leGlzdHNbdF19LHQucHJvdG90eXBlLnNldD1mdW5jdGlvbih0LGUpe3JldHVybiB0aGlzLm1hcFt0XT1lLHRoaXMuZXhpc3RzW3RdPSEwLHRoaXN9LHR9KSgpLGk9KGZ1bmN0aW9uKCl7ZnVuY3Rpb24gdCgpe3RoaXMubWFwPW5ldyBufXJldHVybiB0LnByb3RvdHlwZS5nZXQ9ZnVuY3Rpb24odCl7cmV0dXJuIHRoaXMubWFwLmdldCh0WzBdKS5nZXQodFsxXSl9LHQucHJvdG90eXBlLmhhcz1mdW5jdGlvbih0KXtyZXR1cm4gdGhpcy5tYXAuaGFzKHRbMF0pJiZ0aGlzLm1hcC5nZXQodFswXSkuaGFzKHRbMV0pfSx0LnByb3RvdHlwZS5zZXQ9ZnVuY3Rpb24odCxlKXtyZXR1cm4gdGhpcy5tYXAuaGFzKHRbMF0pfHx0aGlzLm1hcC5zZXQodFswXSxuZXcgbiksdGhpcy5tYXAuZ2V0KHRbMF0pLnNldCh0WzFdLGUpLHRoaXN9LHQucHJvdG90eXBlLmRlbGV0ZT1mdW5jdGlvbih0KXtyZXR1cm4gdGhpcy5tYXAuaGFzKHRbMF0pJiZ0aGlzLm1hcC5nZXQodFswXSkuZGVsZXRlKHRbMV0pLCEwfSx0LnByb3RvdHlwZS5jbGVhcj1mdW5jdGlvbigpe3RoaXMubWFwPW5ldyBufSx0LnJlc29sdmVyPWZ1bmN0aW9uKHQsZSxuKXtyZXR1cm5bbi51cGRhdGVJZCgpLGVdfSx0fSkoKTtmdW5jdGlvbiByKHQpe3ZhciBlPVFmdC5tZW1vaXplKHQsaS5yZXNvbHZlcik7cmV0dXJuIGUuY2FjaGU9bmV3IGksZX1lLm1lbW9pemVQcm9qZWN0b3I9cixlLm1lbW9pemVQcm9qZWN0b3JzPWZ1bmN0aW9uIG8odCl7cmV0dXJuIE9iamVjdC5rZXlzKHQpLmZvckVhY2goKGZ1bmN0aW9uKGUpe3RbZV09cih0W2VdKX0pKSx0fX0pKSxzZ3Q9YmUoKGZ1bmN0aW9uKHQsZSl7Ci8qKgogICAgICogQ29weXJpZ2h0IDIwMTQtcHJlc2VudCBQYWxhbnRpciBUZWNobm9sb2dpZXMKICAgICAqIEBsaWNlbnNlIE1JVAogICAgICogQGZpbGVvdmVydmlldyBJbXBsZW1lbnRzIGEgY29udmVuaWVudCB0aHVuayBmdW5jdGlvbiB0byBoYW5kbGUgdGhlIGNvbW1vbiBjYXNlCiAgICAgKiBvZiBjcmVhdGluZyBhIG1lbW9pemVkIGZ1bmN0aW9uIHRoYXQgdGFrZXMgaXRzIGlucHV0cyBmcm9tIG11dGFibGUgY2xhc3MgcHJvcGVydGllcy4KICAgICAqLwpPYmplY3QuZGVmaW5lUHJvcGVydHkoZSwiX19lc01vZHVsZSIse3ZhbHVlOiEwfSksZS5tZW1UaHVuaz1mdW5jdGlvbiBuKCl7Zm9yKHZhciB0PVtdLGU9MDtlPGFyZ3VtZW50cy5sZW5ndGg7ZSsrKXRbZV09YXJndW1lbnRzW2VdO3ZhciBuPXQuc2xpY2UoMCwtMSksaT10W3QubGVuZ3RoLTFdLHI9bGd0Lm1lbW9pemUoaSksbz1mdW5jdGlvbigpe3ZhciB0PXRoaXMsZT1uLm1hcCgoZnVuY3Rpb24oZSl7cmV0dXJuIGUuYXBwbHkodCl9KSk7cmV0dXJuIHIuYXBwbHkodm9pZCAwLGUpfTtyZXR1cm4gb319KSksbGd0PWJlKChmdW5jdGlvbih0LGUpewovKioKICAgICAqIENvcHlyaWdodCAyMDE0LXByZXNlbnQgUGFsYW50aXIgVGVjaG5vbG9naWVzCiAgICAgKiBAbGljZW5zZSBNSVQKICAgICAqLwpPYmplY3QuZGVmaW5lUHJvcGVydHkoZSwiX19lc01vZHVsZSIse3ZhbHVlOiEwfSksU2Z0Ll9fZXhwb3J0U3RhcihvZ3QsZSksU2Z0Ll9fZXhwb3J0U3RhcihhZ3QsZSksU2Z0Ll9fZXhwb3J0U3RhcihzZ3QsZSksZS5zaWduPXJndC5zaWdufSkpLGNndD1iZSgoZnVuY3Rpb24odCxlKXsKLyoqCiAgICAgKiBDb3B5cmlnaHQgMjAxNC1wcmVzZW50IFBhbGFudGlyIFRlY2hub2xvZ2llcwogICAgICogQGxpY2Vuc2UgTUlUCiAgICAgKi8KT2JqZWN0LmRlZmluZVByb3BlcnR5KGUsIl9fZXNNb2R1bGUiLHt2YWx1ZTohMH0pO3ZhciBuPShmdW5jdGlvbigpe2Z1bmN0aW9uIHQodCxlKXt0aGlzLl9jb250ZXh0PXQsdGhpcy5fZHJhd1N0ZXA9ZX1yZXR1cm4gdC5wcm90b3R5cGUuZ2V0RHJhd1N0ZXA9ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5fZHJhd1N0ZXB9LHQucHJvdG90eXBlLmRyYXc9ZnVuY3Rpb24odCxlKXt2YXIgbj1lW2UubGVuZ3RoLTFdLmF0dHJUb0FwcGxpZWRQcm9qZWN0b3I7dGhpcy5fY29udGV4dC5zYXZlKCksdGhpcy5fZHJhd1N0ZXAodGhpcy5fY29udGV4dCx0LG4pLHRoaXMuX2NvbnRleHQucmVzdG9yZSgpfSx0LnByb3RvdHlwZS5nZXRWaXN1YWxQcmltaXRpdmVzPWZ1bmN0aW9uKCl7cmV0dXJuW119LHQucHJvdG90eXBlLmdldFZpc3VhbFByaW1pdGl2ZUF0SW5kZXg9ZnVuY3Rpb24odCl7cmV0dXJuIG51bGx9LHQucHJvdG90eXBlLnJlbW92ZT1mdW5jdGlvbigpe30sdH0pKCk7ZnVuY3Rpb24gaSh0LGUsbixpKXtmb3IodmFyIHI9e30sbz0wLGE9ZTtvPGEubGVuZ3RoO28rKyl7dmFyIHM9YVtvXTt0Lmhhc093blByb3BlcnR5KHMpJiYocltzXT10W3NdKG4saSkpfXJldHVybiByfWZ1bmN0aW9uIHIodCl7cmV0dXJuIG51bGwhPXRbInN0cm9rZS13aWR0aCJdP3BhcnNlRmxvYXQodFsic3Ryb2tlLXdpZHRoIl0pOjF9ZnVuY3Rpb24gbyh0KXt2YXIgZT10WyJzdHJva2UtZGFzaGFycmF5Il07aWYobnVsbCE9ZSl0cnl7cmV0dXJuIGUuc3BsaXQoL1sgLF0rLykubWFwKChmdW5jdGlvbih0KXtyZXR1cm4gcGFyc2VJbnQodCwxMCl9KSl9Y2F0Y2godCl7cmV0dXJuIGNvbnNvbGUuZXJyb3IoImdldFN0cm9rZURhc2hBcnJheSBmYWlsZWQgd2l0aDogIit0KSxbXX1yZXR1cm5bXX1mdW5jdGlvbiBhKHQsZSl7aWYoZS5zdHJva2Upe3QubGluZVdpZHRoPXIoZSk7dmFyIG49VWh0LmNvbG9yKGUuc3Ryb2tlKSxpPW8oZSk7dC5zZXRMaW5lRGFzaChpKSxuLm9wYWNpdHkqPShmdW5jdGlvbiBhKHQpe3ZhciBlPW51bGwhPXQub3BhY2l0eT9wYXJzZUZsb2F0KHQub3BhY2l0eSk6MTtyZXR1cm4obnVsbCE9dFsic3Ryb2tlLW9wYWNpdHkiXT9wYXJzZUZsb2F0KHRbInN0cm9rZS1vcGFjaXR5Il0pOjEpKmV9KShlKSx0LnN0cm9rZVN0eWxlPW4udG9TdHJpbmcoKSx0LnN0cm9rZSgpfWlmKGUuZmlsbCl7dmFyIHM9VWh0LmNvbG9yKGUuZmlsbCk7cy5vcGFjaXR5Kj0oZnVuY3Rpb24gbCh0KXt2YXIgZT1udWxsIT10Lm9wYWNpdHk/cGFyc2VGbG9hdCh0Lm9wYWNpdHkpOjE7cmV0dXJuKG51bGwhPXRbImZpbGwtb3BhY2l0eSJdP3BhcnNlRmxvYXQodFsiZmlsbC1vcGFjaXR5Il0pOjEpKmV9KShlKSx0LmZpbGxTdHlsZT1zLnRvU3RyaW5nKCksdC5maWxsKCl9fWUuQ2FudmFzRHJhd2VyPW4sZS5Db250ZXh0U3R5bGVBdHRycz1bImZpbGwtb3BhY2l0eSIsImZpbGwiLCJvcGFjaXR5Iiwic3Ryb2tlLW9wYWNpdHkiLCJzdHJva2Utd2lkdGgiLCJzdHJva2UiLCJzdHJva2UtZGFzaGFycmF5Il0sZS5yZXNvbHZlQXR0cmlidXRlc1N1YnNldFdpdGhTdHlsZXM9ZnVuY3Rpb24gcyh0LG4scixvKXtyZXR1cm4gaSh0LGUuQ29udGV4dFN0eWxlQXR0cnMuY29uY2F0KG4pLHIsbyl9LGUucmVzb2x2ZUF0dHJpYnV0ZXM9aSxlLmdldFN0cm9rZVdpZHRoPXIsZS5nZXRTdHJva2VEYXNoQXJyYXk9byxlLnJlbmRlckFyZWE9ZnVuY3Rpb24gbCh0LGUsbixpKXt0LnNhdmUoKSx0LmJlZ2luUGF0aCgpLGUuY29udGV4dCh0KSxlKG4pLHQubGluZUpvaW49InJvdW5kIixhKHQsaSksdC5yZXN0b3JlKCl9LGUucmVuZGVyTGluZT1mdW5jdGlvbiBjKHQsZSxuLGkpe3Quc2F2ZSgpLHQuYmVnaW5QYXRoKCksZS5jb250ZXh0KHQpLGUobiksdC5saW5lSm9pbj0icm91bmQiLGEodCxpKSx0LnJlc3RvcmUoKX0sZS5yZW5kZXJQYXRoV2l0aFN0eWxlPWF9KSksdWd0PWJlKChmdW5jdGlvbih0LGUpewovKioKICAgICAqIENvcHlyaWdodCAyMDE0LXByZXNlbnQgUGFsYW50aXIgVGVjaG5vbG9naWVzCiAgICAgKiBAbGljZW5zZSBNSVQKICAgICAqLwpPYmplY3QuZGVmaW5lUHJvcGVydHkoZSwiX19lc01vZHVsZSIse3ZhbHVlOiEwfSk7dmFyIG49KGZ1bmN0aW9uKCl7ZnVuY3Rpb24gdCh0LGUpe3RoaXMuX3N2Z0RyYXdlckZhY3Rvcnk9dCx0aGlzLl9jYW52YXNEcmF3ZXJGYWN0b3J5PWV9cmV0dXJuIHQucHJvdG90eXBlLnVzZVNWRz1mdW5jdGlvbih0KXtudWxsIT10aGlzLl9jdXJyZW50RHJhd2VyJiZ0aGlzLl9jdXJyZW50RHJhd2VyLnJlbW92ZSgpO3ZhciBlPXRoaXMuX3N2Z0RyYXdlckZhY3RvcnkoKTtlLmF0dGFjaFRvKHQpLHRoaXMuX2N1cnJlbnREcmF3ZXI9ZX0sdC5wcm90b3R5cGUudXNlQ2FudmFzPWZ1bmN0aW9uKHQpe251bGwhPXRoaXMuX2N1cnJlbnREcmF3ZXImJnRoaXMuX2N1cnJlbnREcmF3ZXIucmVtb3ZlKCksdGhpcy5fY3VycmVudERyYXdlcj10aGlzLl9jYW52YXNEcmF3ZXJGYWN0b3J5KHQubm9kZSgpLmdldENvbnRleHQoIjJkIikpfSx0LnByb3RvdHlwZS5nZXREcmF3ZXI9ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5fY3VycmVudERyYXdlcn0sdC5wcm90b3R5cGUucmVtb3ZlPWZ1bmN0aW9uKCl7bnVsbCE9dGhpcy5fY3VycmVudERyYXdlciYmdGhpcy5fY3VycmVudERyYXdlci5yZW1vdmUoKX0sdC5wcm90b3R5cGUuZHJhdz1mdW5jdGlvbih0LGUpe3RoaXMuX2N1cnJlbnREcmF3ZXIuZHJhdyh0LGUpfSx0LnByb3RvdHlwZS5nZXRWaXN1YWxQcmltaXRpdmVzPWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuX2N1cnJlbnREcmF3ZXIuZ2V0VmlzdWFsUHJpbWl0aXZlcygpfSx0LnByb3RvdHlwZS5nZXRWaXN1YWxQcmltaXRpdmVBdEluZGV4PWZ1bmN0aW9uKHQpe3JldHVybiB0aGlzLl9jdXJyZW50RHJhd2VyLmdldFZpc3VhbFByaW1pdGl2ZUF0SW5kZXgodCl9LHR9KSgpO2UuUHJveHlEcmF3ZXI9bn0pKSxoZ3Q9YmUoKGZ1bmN0aW9uKHQsZSl7Ci8qKgogICAgICogQ29weXJpZ2h0IDIwMTQtcHJlc2VudCBQYWxhbnRpciBUZWNobm9sb2dpZXMKICAgICAqIEBsaWNlbnNlIE1JVAogICAgICovCk9iamVjdC5kZWZpbmVQcm9wZXJ0eShlLCJfX2VzTW9kdWxlIix7dmFsdWU6ITB9KTt2YXIgbj0oZnVuY3Rpb24oKXtmdW5jdGlvbiB0KHQsZSl7dGhpcy5fcm9vdD1VaHQuc2VsZWN0KGRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciLCJnIikpLHRoaXMuX2NsYXNzTmFtZT1lLHRoaXMuX3N2Z0VsZW1lbnROYW1lPXR9cmV0dXJuIHQucHJvdG90eXBlLmRyYXc9ZnVuY3Rpb24odCxlKXt2YXIgbj10aGlzO3RoaXMuX2NyZWF0ZUFuZERlc3Ryb3lET01FbGVtZW50cyh0KTtmb3IodmFyIGk9MCxyPWUubGVuZ3RoLG89ZnVuY3Rpb24ocil7dmFyIG89ZVtyXTt1bXQuV2luZG93LnNldFRpbWVvdXQoKGZ1bmN0aW9uKCl7cmV0dXJuIG4uX2RyYXdTdGVwKG8pfSksaSksaSs9by5hbmltYXRvci50b3RhbFRpbWUodC5sZW5ndGgpfSxhPTA7YTxyO2ErKylvKGEpfSx0LnByb3RvdHlwZS5nZXRWaXN1YWxQcmltaXRpdmVzPWZ1bmN0aW9uKCl7cmV0dXJuIG51bGw9PXRoaXMuX2NhY2hlZFZpc3VhbFByaW1pdGl2ZXNOb2RlcyYmKHRoaXMuX2NhY2hlZFZpc3VhbFByaW1pdGl2ZXNOb2Rlcz10aGlzLl9zZWxlY3Rpb24ubm9kZXMoKSksdGhpcy5fY2FjaGVkVmlzdWFsUHJpbWl0aXZlc05vZGVzfSx0LnByb3RvdHlwZS5nZXRWaXN1YWxQcmltaXRpdmVBdEluZGV4PWZ1bmN0aW9uKHQpe3JldHVybiBudWxsPT10aGlzLl9jYWNoZWRWaXN1YWxQcmltaXRpdmVzTm9kZU1hcD9udWxsOnRoaXMuX2NhY2hlZFZpc3VhbFByaW1pdGl2ZXNOb2RlTWFwLmdldCh0KX0sdC5wcm90b3R5cGUucmVtb3ZlPWZ1bmN0aW9uKCl7dGhpcy5fcm9vdC5yZW1vdmUoKX0sdC5wcm90b3R5cGUuYXR0YWNoVG89ZnVuY3Rpb24odCl7dC5ub2RlKCkuYXBwZW5kQ2hpbGQodGhpcy5fcm9vdC5ub2RlKCkpfSx0LnByb3RvdHlwZS5nZXRSb290PWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuX3Jvb3R9LHQucHJvdG90eXBlLnNlbGVjdG9yPWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuX3N2Z0VsZW1lbnROYW1lfSx0LnByb3RvdHlwZS5fYXBwbHlEZWZhdWx0QXR0cmlidXRlcz1mdW5jdGlvbih0KXt9LHQucHJvdG90eXBlLl9jcmVhdGVBbmREZXN0cm95RE9NRWxlbWVudHM9ZnVuY3Rpb24odCl7dmFyIGU9dC5tYXAoKGZ1bmN0aW9uKHQsZSl7cmV0dXJuIG51bGwhPXQ/e2Q6dCxpOmV9Om51bGx9KSkuZmlsdGVyKChmdW5jdGlvbih0KXtyZXR1cm4gbnVsbCE9dH0pKSxuPXRoaXMuX3Jvb3Quc2VsZWN0QWxsKHRoaXMuc2VsZWN0b3IoKSkuZGF0YShlKTt0aGlzLl9zZWxlY3Rpb249bi5lbnRlcigpLmFwcGVuZCh0aGlzLl9zdmdFbGVtZW50TmFtZSkubWVyZ2Uobiksbi5leGl0KCkucmVtb3ZlKCk7dmFyIGk9bmV3IHVtdC5NYXA7dGhpcy5fc2VsZWN0aW9uLmVhY2goKGZ1bmN0aW9uKHQpe2kuc2V0KHQuaSx0aGlzKX0pKSx0aGlzLl9jYWNoZWRWaXN1YWxQcmltaXRpdmVzTm9kZU1hcD1pLHRoaXMuX2NhY2hlZFZpc3VhbFByaW1pdGl2ZXNOb2Rlcz1udWxsLHRoaXMuX3NlbGVjdGlvbi5kYXRhKHRoaXMuX3NlbGVjdGlvbi5kYXRhKCkubWFwKChmdW5jdGlvbih0KXtyZXR1cm4gdC5kfSkpKSxudWxsIT10aGlzLl9jbGFzc05hbWUmJnRoaXMuX3NlbGVjdGlvbi5jbGFzc2VkKHRoaXMuX2NsYXNzTmFtZSwhMCksdGhpcy5fYXBwbHlEZWZhdWx0QXR0cmlidXRlcyh0aGlzLl9zZWxlY3Rpb24pfSx0LnByb3RvdHlwZS5fZHJhd1N0ZXA9ZnVuY3Rpb24odCl7dmFyIGU9dGhpcztbImZpbGwiLCJzdHJva2UiXS5mb3JFYWNoKChmdW5jdGlvbihuKXtudWxsIT10LmF0dHJUb0FwcGxpZWRQcm9qZWN0b3Jbbl0mJmUuX3NlbGVjdGlvbi5hdHRyKG4sdC5hdHRyVG9BcHBsaWVkUHJvamVjdG9yW25dKX0pKSx0LmFuaW1hdG9yLmFuaW1hdGUodGhpcy5fc2VsZWN0aW9uLHQuYXR0clRvQXBwbGllZFByb2plY3RvciksbnVsbCE9dGhpcy5fY2xhc3NOYW1lJiZ0aGlzLl9zZWxlY3Rpb24uY2xhc3NlZCh0aGlzLl9jbGFzc05hbWUsITApfSx0fSkoKTtlLlNWR0RyYXdlcj1ufSkpLGRndD1iZSgoZnVuY3Rpb24odCxlKXsKLyoqCiAgICAgKiBDb3B5cmlnaHQgMjAxNy1wcmVzZW50IFBhbGFudGlyIFRlY2hub2xvZ2llcwogICAgICogQGxpY2Vuc2UgTUlUCiAgICAgKi8KT2JqZWN0LmRlZmluZVByb3BlcnR5KGUsIl9fZXNNb2R1bGUiLHt2YWx1ZTohMH0pO3ZhciBuPShmdW5jdGlvbigpe2Z1bmN0aW9uIHQoKXt2YXIgdD10aGlzO3RoaXMuc2NhbGU9MCx0aGlzLnRyYW5zbGF0ZT0wLHRoaXMuY2FjaGVkRG9tYWluPVtudWxsLG51bGxdLHRoaXMubGFzdFNlZW5Eb21haW49W251bGwsbnVsbF0sdGhpcy51cGRhdGVEb21haW49ZnVuY3Rpb24oZSl7dC5sYXN0U2VlbkRvbWFpbj1lLmdldFRyYW5zZm9ybWF0aW9uRG9tYWluKCk7dmFyIG49ZS5zY2FsZVRyYW5zZm9ybWF0aW9uKHQuY2FjaGVkRG9tYWluWzFdKS1lLnNjYWxlVHJhbnNmb3JtYXRpb24odC5jYWNoZWREb21haW5bMF0pLGk9ZS5zY2FsZVRyYW5zZm9ybWF0aW9uKHQubGFzdFNlZW5Eb21haW5bMV0pLWUuc2NhbGVUcmFuc2Zvcm1hdGlvbih0Lmxhc3RTZWVuRG9tYWluWzBdKTt0LnNjYWxlPW4vaXx8MSx0LnRyYW5zbGF0ZT1lLnNjYWxlVHJhbnNmb3JtYXRpb24odC5jYWNoZWREb21haW5bMF0pLWUuc2NhbGVUcmFuc2Zvcm1hdGlvbih0Lmxhc3RTZWVuRG9tYWluWzBdKSp0LnNjYWxlfHwwfX1yZXR1cm4gdC5wcm90b3R5cGUucmVzZXQ9ZnVuY3Rpb24oKXt0aGlzLnNjYWxlPTEsdGhpcy50cmFuc2xhdGU9MCx0aGlzLmNhY2hlZERvbWFpbj10aGlzLmxhc3RTZWVuRG9tYWlufSx0LnByb3RvdHlwZS5zZXREb21haW49ZnVuY3Rpb24odCl7dGhpcy5jYWNoZWREb21haW49dC5nZXRUcmFuc2Zvcm1hdGlvbkRvbWFpbigpfSx0fSkoKSxpPShmdW5jdGlvbigpe2Z1bmN0aW9uIHQoZSxpKXt2YXIgcj10aGlzO3RoaXMucmVuZGVyQ2FsbGJhY2s9ZSx0aGlzLmFwcGx5VHJhbnNmb3JtQ2FsbGJhY2s9aSx0aGlzLmRvbWFpblRyYW5zZm9ybVg9bmV3IG4sdGhpcy5kb21haW5UcmFuc2Zvcm1ZPW5ldyBuLHRoaXMucmVuZGVyRGVmZXJyZWQ9ZnVuY3Rpb24oKXtyLmFwcGx5VHJhbnNmb3JtKCksY2xlYXJUaW1lb3V0KHIudGltZW91dFRva2VuKSxyLnRpbWVvdXRUb2tlbj1zZXRUaW1lb3V0KChmdW5jdGlvbigpe3IucmVuZGVyQ2FsbGJhY2soKX0pLHQuREVGRVJSRURfUkVOREVSSU5HX0RFTEFZKX19cmV0dXJuIHQucHJvdG90eXBlLnNldERvbWFpbnM9ZnVuY3Rpb24odCxlKXt0JiZ0aGlzLmRvbWFpblRyYW5zZm9ybVguc2V0RG9tYWluKHQpLGUmJnRoaXMuZG9tYWluVHJhbnNmb3JtWS5zZXREb21haW4oZSksdGhpcy5yZW5kZXJEZWZlcnJlZCgpfSx0LnByb3RvdHlwZS51cGRhdGVEb21haW5zPWZ1bmN0aW9uKHQsZSl7dCYmdGhpcy5kb21haW5UcmFuc2Zvcm1YLnVwZGF0ZURvbWFpbih0KSxlJiZ0aGlzLmRvbWFpblRyYW5zZm9ybVkudXBkYXRlRG9tYWluKGUpLHRoaXMucmVuZGVyRGVmZXJyZWQoKX0sdC5wcm90b3R5cGUucmVzZXRUcmFuc2Zvcm1zPWZ1bmN0aW9uKCl7dGhpcy5kb21haW5UcmFuc2Zvcm1YLnJlc2V0KCksdGhpcy5kb21haW5UcmFuc2Zvcm1ZLnJlc2V0KCksdGhpcy5hcHBseVRyYW5zZm9ybSgpfSx0LnByb3RvdHlwZS5hcHBseVRyYW5zZm9ybT1mdW5jdGlvbigpe3RoaXMuYXBwbHlUcmFuc2Zvcm1DYWxsYmFjayh0aGlzLmRvbWFpblRyYW5zZm9ybVgudHJhbnNsYXRlLHRoaXMuZG9tYWluVHJhbnNmb3JtWS50cmFuc2xhdGUsdGhpcy5kb21haW5UcmFuc2Zvcm1YLnNjYWxlLHRoaXMuZG9tYWluVHJhbnNmb3JtWS5zY2FsZSl9LHQuREVGRVJSRURfUkVOREVSSU5HX0RFTEFZPTIwMCx0fSkoKTtlLkRlZmVycmVkUmVuZGVyZXI9aX0pKSxwZ3Q9YmUoKGZ1bmN0aW9uKHQsZSl7Ci8qKgogICAgICogQ29weXJpZ2h0IDIwMTQtcHJlc2VudCBQYWxhbnRpciBUZWNobm9sb2dpZXMKICAgICAqIEBsaWNlbnNlIE1JVAogICAgICovCk9iamVjdC5kZWZpbmVQcm9wZXJ0eShlLCJfX2VzTW9kdWxlIix7dmFsdWU6ITB9KSxlLlJlbmRlcmVyPXZmdC5tYWtlRW51bShbInN2ZyIsImNhbnZhcyJdKTt2YXIgbj0oZnVuY3Rpb24odCl7ZnVuY3Rpb24gZSgpe3ZhciBuPXQuY2FsbCh0aGlzKXx8dGhpcztuLl9kYXRhQ2hhbmdlZD0hMSxuLl9hdHRyRXh0ZW50cz17fSxuLl9hbmltYXRlPSExLG4uX2FuaW1hdG9ycz17fSxuLl9wcm9wZXJ0eUV4dGVudHM9e30sbi5fcmVzZXRFbnRpdHlTdG9yZT1mdW5jdGlvbigpe24uX2NhY2hlZEVudGl0eVN0b3JlPXZvaWQgMH0sbi5fb3ZlcmZsb3dIaWRkZW49ITAsbi5hZGRDbGFzcygicGxvdCIpLG4uX2RhdGFzZXRUb0RyYXdlcj1uZXcgdW10Lk1hcCxuLl9hdHRyQmluZGluZ3M9VWh0Lm1hcCgpLG4uX2luY2x1ZGVkVmFsdWVzUHJvdmlkZXI9ZnVuY3Rpb24odCxlKXtyZXR1cm4gbi5faW5jbHVkZWRWYWx1ZXNGb3JTY2FsZSh0LGUpfSxuLl9yZW5kZXJDYWxsYmFjaz1mdW5jdGlvbigpe3JldHVybiBuLnJlbmRlcigpfSxuLl9vbkRhdGFzZXRVcGRhdGVDYWxsYmFjaz1mdW5jdGlvbigpe3JldHVybiBuLl9vbkRhdGFzZXRVcGRhdGUoKX0sbi5fcHJvcGVydHlCaW5kaW5ncz1VaHQubWFwKCk7dmFyIGk9KG5ldyBNZnQuRWFzaW5nKS5tYXhUb3RhbER1cmF0aW9uKGUuX0FOSU1BVElPTl9NQVhfRFVSQVRJT04pO3JldHVybiBuLmFuaW1hdG9yKGVndC5BbmltYXRvci5NQUlOLGkpLG4uYW5pbWF0b3IoZWd0LkFuaW1hdG9yLlJFU0VULG5ldyBNZnQuTnVsbCksbi5fZGVmZXJyZWRSZXNldEVudGl0eVN0b3JlPXVtdC5XaW5kb3cuZGVib3VuY2UoZGd0LkRlZmVycmVkUmVuZGVyZXIuREVGRVJSRURfUkVOREVSSU5HX0RFTEFZLG4uX3Jlc2V0RW50aXR5U3RvcmUpLG59cmV0dXJuIFNmdC5fX2V4dGVuZHMoZSx0KSxlLmdldFRvdGFsRHJhd1RpbWU9ZnVuY3Rpb24odCxlKXtyZXR1cm4gZS5yZWR1Y2UoKGZ1bmN0aW9uKGUsbil7cmV0dXJuIGUrbi5hbmltYXRvci50b3RhbFRpbWUodC5sZW5ndGgpfSksMCl9LGUuYXBwbHlEcmF3U3RlcHM9ZnVuY3Rpb24odCxlKXtyZXR1cm4gdC5tYXAoKGZ1bmN0aW9uKHQpe3ZhciBuPXQuYXR0clRvUHJvamVjdG9yLGk9e307cmV0dXJuIE9iamVjdC5rZXlzKG4pLmZvckVhY2goKGZ1bmN0aW9uKHQpe2lbdF09ZnVuY3Rpb24oaSxyKXtyZXR1cm4gblt0XShpLHIsZSl9fSkpLHthdHRyVG9BcHBsaWVkUHJvamVjdG9yOmksYW5pbWF0b3I6dC5hbmltYXRvcn19KSl9LGUucHJvdG90eXBlLmFuY2hvcj1mdW5jdGlvbihlKXtyZXR1cm4gZT15ZnQuY29lcmNlRXh0ZXJuYWxEMyhlKSx0LnByb3RvdHlwZS5hbmNob3IuY2FsbCh0aGlzLGUpLHRoaXMuX2RhdGFDaGFuZ2VkPSEwLHRoaXMuX3Jlc2V0RW50aXR5U3RvcmUoKSx0aGlzLl91cGRhdGVFeHRlbnRzKCksdGhpc30sZS5wcm90b3R5cGUuX3NldHVwPWZ1bmN0aW9uKCl7dmFyIGU9dGhpczt0aGlzLl9pc1NldHVwfHwodC5wcm90b3R5cGUuX3NldHVwLmNhbGwodGhpcyksbnVsbCE9dGhpcy5fY2FudmFzJiZ0aGlzLl9hcHBlbmRDYW52YXNOb2RlKCksdGhpcy5fcmVuZGVyQXJlYT10aGlzLmNvbnRlbnQoKS5hcHBlbmQoImciKS5jbGFzc2VkKCJyZW5kZXItYXJlYSIsITApLHRoaXMuZGF0YXNldHMoKS5mb3JFYWNoKChmdW5jdGlvbih0KXtyZXR1cm4gZS5fY3JlYXRlTm9kZXNGb3JEYXRhc2V0KHQpfSkpKX0sZS5wcm90b3R5cGUuX2FwcGVuZENhbnZhc05vZGU9ZnVuY3Rpb24oKXt2YXIgdD10aGlzLmVsZW1lbnQoKS5zZWxlY3QoIi5wbG90LWNhbnZhcy1jb250YWluZXIiKTt0LmVtcHR5KCkmJih0PXRoaXMuZWxlbWVudCgpLmFwcGVuZCgiZGl2IikuY2xhc3NlZCgicGxvdC1jYW52YXMtY29udGFpbmVyIiwhMCkpLm5vZGUoKS5hcHBlbmRDaGlsZCh0aGlzLl9jYW52YXMubm9kZSgpKX0sZS5wcm90b3R5cGUuc2V0Qm91bmRzPWZ1bmN0aW9uKGUsbixpLHIpe2lmKHQucHJvdG90eXBlLnNldEJvdW5kcy5jYWxsKHRoaXMsZSxuLGksciksdGhpcy5fdXBkYXRlRXh0ZW50cygpLG51bGwhPXRoaXMuX2NhbnZhcyl7aWYodGhpcy5fYnVmZmVyQ2FudmFzJiYhdGhpcy5fYnVmZmVyQ2FudmFzVmFsaWQpe3RoaXMuX2J1ZmZlckNhbnZhcy5hdHRyKCJ3aWR0aCIsdGhpcy5fY2FudmFzLmF0dHIoIndpZHRoIikpLHRoaXMuX2J1ZmZlckNhbnZhcy5hdHRyKCJoZWlnaHQiLHRoaXMuX2NhbnZhcy5hdHRyKCJoZWlnaHQiKSk7dmFyIG89dGhpcy5fYnVmZmVyQ2FudmFzLm5vZGUoKS5nZXRDb250ZXh0KCIyZCIpO2lmKG8pe3ZhciBhPXRoaXMuX2NhbnZhcy5ub2RlKCk7YS53aWR0aD4wJiZhLmhlaWdodD4wP28uY2FudmFzLndpZHRoPjAmJm8uY2FudmFzLmhlaWdodD4wJiZvLmRyYXdJbWFnZShhLDAsMCk6Y29uc29sZS53YXJuKCJGYWlsZWQgdG8gZmlsbCBidWZmZXIgY2FudmFzIHdpdGggd2l0aCAweDAgY2FudmFzIil9dGhpcy5fYnVmZmVyQ2FudmFzVmFsaWQ9ITB9dmFyIHM9bnVsbCE9d2luZG93LmRldmljZVBpeGVsUmF0aW8/d2luZG93LmRldmljZVBpeGVsUmF0aW86MTt0aGlzLl9jYW52YXMuYXR0cigid2lkdGgiLGUqcyksdGhpcy5fY2FudmFzLmF0dHIoImhlaWdodCIsbipzKTt2YXIgbD10aGlzLl9jYW52YXMubm9kZSgpLmdldENvbnRleHQoIjJkIik7aWYobCYmKGwuc2V0VHJhbnNmb3JtKHMsMCwwLHMsMCwwKSx0aGlzLl9idWZmZXJDYW52YXMpKXt2YXIgYz10aGlzLl9idWZmZXJDYW52YXMubm9kZSgpO2Mud2lkdGg+MCYmYy5oZWlnaHQ+MD9sLmNhbnZhcy53aWR0aD4wJiZsLmNhbnZhcy5oZWlnaHQ+MCYmbC5kcmF3SW1hZ2UoYywwLDAsZSxuKTpjb25zb2xlLndhcm4oIkZhaWxlZCB0byBmaWxsIGNhbnZhcyB3aXRoIDB4MCBidWZmZXIgY2FudmFzIil9fXJldHVybiB0aGlzfSxlLnByb3RvdHlwZS5kZXN0cm95PWZ1bmN0aW9uKCl7dmFyIGU9dGhpczt0LnByb3RvdHlwZS5kZXN0cm95LmNhbGwodGhpcyksdGhpcy5fc2NhbGVzKCkuZm9yRWFjaCgoZnVuY3Rpb24odCl7cmV0dXJuIHQub2ZmVXBkYXRlKGUuX3JlbmRlckNhbGxiYWNrKX0pKSx0aGlzLmRhdGFzZXRzKFtdKX0sZS5wcm90b3R5cGUuX2NyZWF0ZU5vZGVzRm9yRGF0YXNldD1mdW5jdGlvbih0KXt2YXIgZT10aGlzLl9kYXRhc2V0VG9EcmF3ZXIuZ2V0KHQpO3JldHVybiJzdmciPT09dGhpcy5yZW5kZXJlcigpP2UudXNlU1ZHKHRoaXMuX3JlbmRlckFyZWEpOmUudXNlQ2FudmFzKHRoaXMuX2NhbnZhcyksZX0sZS5wcm90b3R5cGUuX2NyZWF0ZURyYXdlcj1mdW5jdGlvbih0KXtyZXR1cm4gbmV3IHVndC5Qcm94eURyYXdlcigoZnVuY3Rpb24oKXtyZXR1cm4gbmV3IGhndC5TVkdEcmF3ZXIoInBhdGgiLCIiKX0pLChmdW5jdGlvbih0KXtyZXR1cm4gbmV3IGNndC5DYW52YXNEcmF3ZXIodCwoZnVuY3Rpb24oKXt9KSl9KSl9LGUucHJvdG90eXBlLl9nZXRBbmltYXRvcj1mdW5jdGlvbih0KXtyZXR1cm4gdGhpcy5fYW5pbWF0ZU9uTmV4dFJlbmRlcigpJiZ0aGlzLl9hbmltYXRvcnNbdF18fG5ldyBNZnQuTnVsbH0sZS5wcm90b3R5cGUuX29uRGF0YXNldFVwZGF0ZT1mdW5jdGlvbigpe3RoaXMuX3VwZGF0ZUV4dGVudHMoKSx0aGlzLl9kYXRhQ2hhbmdlZD0hMCx0aGlzLl9yZXNldEVudGl0eVN0b3JlKCksdGhpcy5yZW5kZXJMb3dQcmlvcml0eSgpfSxlLnByb3RvdHlwZS5hdHRyPWZ1bmN0aW9uKHQsZSxuKXtyZXR1cm4gbnVsbD09ZT90aGlzLl9hdHRyQmluZGluZ3MuZ2V0KHQpOih0aGlzLl9iaW5kQXR0cih0LGUsbiksdGhpcy5yZW5kZXIoKSx0aGlzKX0sZS5wcm90b3R5cGUuX2JpbmRQcm9wZXJ0eT1mdW5jdGlvbih0LGUsbixpKXt2YXIgcj10aGlzLl9wcm9wZXJ0eUJpbmRpbmdzLmdldCh0KSxvPW51bGwhPXI/ci5zY2FsZTpudWxsO3RoaXMuX3Byb3BlcnR5QmluZGluZ3Muc2V0KHQse2FjY2Vzc29yOiJmdW5jdGlvbiI9PXR5cGVvZiBlP2U6ZnVuY3Rpb24oKXtyZXR1cm4gZX0sc2NhbGU6bixwb3N0U2NhbGU6aX0pLG51bGwhPW8mJnRoaXMuX3VuaW5zdGFsbFNjYWxlRm9yS2V5KG8sdCksbnVsbCE9biYmdGhpcy5faW5zdGFsbFNjYWxlRm9yS2V5KG4sdCksdGhpcy5fY2xlYXJBdHRyVG9Qcm9qZWN0b3JDYWNoZSgpfSxlLnByb3RvdHlwZS5fYmluZEF0dHI9ZnVuY3Rpb24odCxlLG4pe3ZhciBpPXRoaXMuX2F0dHJCaW5kaW5ncy5nZXQodCkscj1udWxsIT1pP2kuc2NhbGU6bnVsbDt0aGlzLl9hdHRyQmluZGluZ3Muc2V0KHQse2FjY2Vzc29yOiJmdW5jdGlvbiI9PXR5cGVvZiBlP2U6ZnVuY3Rpb24oKXtyZXR1cm4gZX0sc2NhbGU6bn0pLG51bGwhPXImJnRoaXMuX3VuaW5zdGFsbFNjYWxlRm9yS2V5KHIsdCksbnVsbCE9biYmdGhpcy5faW5zdGFsbFNjYWxlRm9yS2V5KG4sdCksdGhpcy5fY2xlYXJBdHRyVG9Qcm9qZWN0b3JDYWNoZSgpfSxlLnByb3RvdHlwZS5fY2xlYXJBdHRyVG9Qcm9qZWN0b3JDYWNoZT1mdW5jdGlvbigpe2RlbGV0ZSB0aGlzLl9jYWNoZWRBdHRyVG9Qcm9qZWN0b3J9LGUucHJvdG90eXBlLl9nZXRBdHRyVG9Qcm9qZWN0b3I9ZnVuY3Rpb24oKXtpZihudWxsPT10aGlzLl9jYWNoZWRBdHRyVG9Qcm9qZWN0b3Ipe3ZhciB0PXRoaXMuX2dlbmVyYXRlQXR0clRvUHJvamVjdG9yKCk7ZS5PUFRJTUlaRV9NRU1PSVpFX1BST0pFQ1RPUlMmJih0PWxndC5tZW1vaXplUHJvamVjdG9ycyh0KSksdGhpcy5fY2FjaGVkQXR0clRvUHJvamVjdG9yPXR9cmV0dXJuIHVtdC5hc3NpZ24oe30sdGhpcy5fY2FjaGVkQXR0clRvUHJvamVjdG9yKX0sZS5wcm90b3R5cGUuX2dlbmVyYXRlQXR0clRvUHJvamVjdG9yPWZ1bmN0aW9uKCl7dmFyIHQ9e307dGhpcy5fYXR0ckJpbmRpbmdzLmVhY2goKGZ1bmN0aW9uKG4saSl7dFtpXT1lLl9zY2FsZWRBY2Nlc3NvcihuKX0pKTt2YXIgbj10aGlzLl9wcm9wZXJ0eVByb2plY3RvcnMoKTtyZXR1cm4gT2JqZWN0LmtleXMobikuZm9yRWFjaCgoZnVuY3Rpb24oZSl7bnVsbD09dFtlXSYmKHRbZV09bltlXSl9KSksdH0sZS5wcm90b3R5cGUucmVuZGVySW1tZWRpYXRlbHk9ZnVuY3Rpb24oKXtyZXR1cm4gdC5wcm90b3R5cGUucmVuZGVySW1tZWRpYXRlbHkuY2FsbCh0aGlzKSx0aGlzLl9pc0FuY2hvcmVkJiYodGhpcy5fcGFpbnQoKSx0aGlzLl9kYXRhQ2hhbmdlZD0hMSksdGhpc30sZS5wcm90b3R5cGUucmVuZGVyTG93UHJpb3JpdHk9ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5fcmVuZGVyQ2FsbGJhY2soKSx0aGlzfSxlLnByb3RvdHlwZS5hbmltYXRlZD1mdW5jdGlvbih0KXtyZXR1cm4gbnVsbD09dD90aGlzLl9hbmltYXRlOih0aGlzLl9hbmltYXRlPXQsdGhpcyl9LGUucHJvdG90eXBlLmRldGFjaD1mdW5jdGlvbigpe3JldHVybiB0LnByb3RvdHlwZS5kZXRhY2guY2FsbCh0aGlzKSx0aGlzLl91cGRhdGVFeHRlbnRzKCksdGhpc30sZS5wcm90b3R5cGUuX3NjYWxlcz1mdW5jdGlvbigpe3ZhciB0PVtdO3JldHVybiB0aGlzLl9hdHRyQmluZGluZ3MuZWFjaCgoZnVuY3Rpb24oZSxuKXt2YXIgaT1lLnNjYWxlO251bGwhPWkmJi0xPT09dC5pbmRleE9mKGkpJiZ0LnB1c2goaSl9KSksdGhpcy5fcHJvcGVydHlCaW5kaW5ncy5lYWNoKChmdW5jdGlvbihlLG4pe3ZhciBpPWUuc2NhbGU7bnVsbCE9aSYmLTE9PT10LmluZGV4T2YoaSkmJnQucHVzaChpKX0pKSx0fSxlLnByb3RvdHlwZS5fdXBkYXRlRXh0ZW50cz1mdW5jdGlvbigpe3ZhciB0PXRoaXM7dGhpcy5fcmVzZXRFbnRpdHlTdG9yZSgpLHRoaXMuX3NjYWxlcygpLmZvckVhY2goKGZ1bmN0aW9uKGUpe3JldHVybiBlLmFkZEluY2x1ZGVkVmFsdWVzUHJvdmlkZXIodC5faW5jbHVkZWRWYWx1ZXNQcm92aWRlcil9KSl9LGUucHJvdG90eXBlLl9maWx0ZXJGb3JQcm9wZXJ0eT1mdW5jdGlvbih0KXtyZXR1cm4gbnVsbH0sZS5wcm90b3R5cGUuZ2V0RXh0ZW50c0ZvckF0dHI9ZnVuY3Rpb24odCl7dmFyIGU9dGhpcztpZihudWxsPT10aGlzLl9hdHRyRXh0ZW50c1t0XSl7dmFyIG49bGd0Lm1lbVRodW5rKChmdW5jdGlvbigpe3JldHVybiBlLmRhdGFzZXRzKCl9KSwoZnVuY3Rpb24oKXtyZXR1cm4gZS5fYXR0ckJpbmRpbmdzLmdldCh0KX0pLChmdW5jdGlvbih0LGUpe3JldHVybiBudWxsPT1lfHxudWxsPT1lLmFjY2Vzc29yP251bGw6dC5tYXAoKGZ1bmN0aW9uKHQpe3JldHVybiBpKHQsZSxudWxsKX0pKX0pKTt0aGlzLl9hdHRyRXh0ZW50c1t0XT1ufXJldHVybiB0aGlzLl9hdHRyRXh0ZW50c1t0XSgpfSxlLnByb3RvdHlwZS5nZXRFeHRlbnRzRm9yUHJvcGVydHk9ZnVuY3Rpb24odCl7dmFyIGU9dGhpcztpZihudWxsPT10aGlzLl9wcm9wZXJ0eUV4dGVudHNbdF0pe3ZhciBuPWxndC5tZW1UaHVuaygoZnVuY3Rpb24oKXtyZXR1cm4gZS5kYXRhc2V0cygpfSksKGZ1bmN0aW9uKCl7cmV0dXJuIGUuX3Byb3BlcnR5QmluZGluZ3MuZ2V0KHQpfSksKGZ1bmN0aW9uKCl7cmV0dXJuIGUuX2ZpbHRlckZvclByb3BlcnR5KHQpfSksKGZ1bmN0aW9uKHQsZSxuKXtyZXR1cm4gbnVsbD09ZXx8bnVsbD09ZS5hY2Nlc3Nvcj9udWxsOnQubWFwKChmdW5jdGlvbih0KXtyZXR1cm4gaSh0LGUsbil9KSl9KSk7dGhpcy5fcHJvcGVydHlFeHRlbnRzW3RdPW59cmV0dXJuIHRoaXMuX3Byb3BlcnR5RXh0ZW50c1t0XSgpfSxlLnByb3RvdHlwZS5faW5jbHVkZWRWYWx1ZXNGb3JTY2FsZT1mdW5jdGlvbih0LGUpe3ZhciBuPXRoaXM7aWYoIXRoaXMuX2lzQW5jaG9yZWQmJiFlKXJldHVybltdO3ZhciBpPVtdO3JldHVybiB0aGlzLl9hdHRyQmluZGluZ3MuZWFjaCgoZnVuY3Rpb24oZSxyKXtpZihlLnNjYWxlPT09dCl7dmFyIG89bi5nZXRFeHRlbnRzRm9yQXR0cihyKTtudWxsIT1vJiYoaT1pLmNvbmNhdChVaHQubWVyZ2UobykpKX19KSksdGhpcy5fcHJvcGVydHlCaW5kaW5ncy5lYWNoKChmdW5jdGlvbihlLHIpe2lmKGUuc2NhbGU9PT10KXt2YXIgbz1uLmdldEV4dGVudHNGb3JQcm9wZXJ0eShyKTtudWxsIT1vJiYoaT1pLmNvbmNhdChVaHQubWVyZ2UobykpKX19KSksaX0sZS5wcm90b3R5cGUuYW5pbWF0b3I9ZnVuY3Rpb24odCxlKXtyZXR1cm4gdm9pZCAwPT09ZT90aGlzLl9hbmltYXRvcnNbdF06KHRoaXMuX2FuaW1hdG9yc1t0XT1lLHRoaXMpfSxlLnByb3RvdHlwZS5yZW5kZXJlcj1mdW5jdGlvbih0KXt2YXIgZT10aGlzO3JldHVybiB2b2lkIDA9PT10P251bGw9PXRoaXMuX2NhbnZhcz8ic3ZnIjoiY2FudmFzIjoobnVsbD09dGhpcy5fY2FudmFzJiYiY2FudmFzIj09PXQ/KHRoaXMuX2NhbnZhcz1VaHQuc2VsZWN0KGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoImNhbnZhcyIpKS5jbGFzc2VkKCJwbG90LWNhbnZhcyIsITApLHRoaXMuX2J1ZmZlckNhbnZhcz1VaHQuc2VsZWN0KGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoImNhbnZhcyIpKSxudWxsIT10aGlzLmVsZW1lbnQoKSYmdGhpcy5fYXBwZW5kQ2FudmFzTm9kZSgpLHRoaXMuX2RhdGFzZXRUb0RyYXdlci5mb3JFYWNoKChmdW5jdGlvbih0KXt0LnVzZUNhbnZhcyhlLl9jYW52YXMpfSkpLHRoaXMucmVuZGVyKCkpOm51bGwhPXRoaXMuX2NhbnZhcyYmInN2ZyI9PXQmJih0aGlzLl9jYW52YXMucmVtb3ZlKCksdGhpcy5fY2FudmFzPW51bGwsdGhpcy5fYnVmZmVyQ2FudmFzPW51bGwsdGhpcy5fZGF0YXNldFRvRHJhd2VyLmZvckVhY2goKGZ1bmN0aW9uKHQpe3QudXNlU1ZHKGUuX3JlbmRlckFyZWEpfSkpLHRoaXMucmVuZGVyKCkpLHRoaXMpfSxlLnByb3RvdHlwZS5hZGREYXRhc2V0PWZ1bmN0aW9uKHQpe3JldHVybiB0aGlzLl9hZGREYXRhc2V0KHQpLHRoaXMuX29uRGF0YXNldFVwZGF0ZSgpLHRoaXN9LGUucHJvdG90eXBlLl9hZGREYXRhc2V0PWZ1bmN0aW9uKHQpe3RoaXMuX3JlbW92ZURhdGFzZXQodCk7dmFyIGU9dGhpcy5fY3JlYXRlRHJhd2VyKHQpO3JldHVybiB0aGlzLl9kYXRhc2V0VG9EcmF3ZXIuc2V0KHQsZSksdGhpcy5faXNTZXR1cCYmdGhpcy5fY3JlYXRlTm9kZXNGb3JEYXRhc2V0KHQpLHQub25VcGRhdGUodGhpcy5fb25EYXRhc2V0VXBkYXRlQ2FsbGJhY2spLHRoaXN9LGUucHJvdG90eXBlLnJlbW92ZURhdGFzZXQ9ZnVuY3Rpb24odCl7cmV0dXJuIHRoaXMuX3JlbW92ZURhdGFzZXQodCksdGhpcy5fb25EYXRhc2V0VXBkYXRlKCksdGhpc30sZS5wcm90b3R5cGUuX3JlbW92ZURhdGFzZXQ9ZnVuY3Rpb24odCl7cmV0dXJuLTE9PT10aGlzLmRhdGFzZXRzKCkuaW5kZXhPZih0KXx8KHRoaXMuX3JlbW92ZURhdGFzZXROb2Rlcyh0KSx0Lm9mZlVwZGF0ZSh0aGlzLl9vbkRhdGFzZXRVcGRhdGVDYWxsYmFjayksdGhpcy5fZGF0YXNldFRvRHJhd2VyLmRlbGV0ZSh0KSksdGhpc30sZS5wcm90b3R5cGUuX3JlbW92ZURhdGFzZXROb2Rlcz1mdW5jdGlvbih0KXt0aGlzLl9kYXRhc2V0VG9EcmF3ZXIuZ2V0KHQpLnJlbW92ZSgpfSxlLnByb3RvdHlwZS5kYXRhc2V0cz1mdW5jdGlvbih0KXt2YXIgZT10aGlzLG49W107cmV0dXJuIHRoaXMuX2RhdGFzZXRUb0RyYXdlci5mb3JFYWNoKChmdW5jdGlvbih0LGUpe3JldHVybiBuLnB1c2goZSl9KSksbnVsbD09dD9uOihuLmZvckVhY2goKGZ1bmN0aW9uKHQpe3JldHVybiBlLl9yZW1vdmVEYXRhc2V0KHQpfSkpLHQuZm9yRWFjaCgoZnVuY3Rpb24odCl7cmV0dXJuIGUuX2FkZERhdGFzZXQodCl9KSksdGhpcy5fb25EYXRhc2V0VXBkYXRlKCksdGhpcyl9LGUucHJvdG90eXBlLl9nZW5lcmF0ZURyYXdTdGVwcz1mdW5jdGlvbigpe3JldHVyblt7YXR0clRvUHJvamVjdG9yOnRoaXMuX2dldEF0dHJUb1Byb2plY3RvcigpLGFuaW1hdG9yOm5ldyBNZnQuTnVsbH1dfSxlLnByb3RvdHlwZS5fYWRkaXRpb25hbFBhaW50PWZ1bmN0aW9uKHQpe30sZS5wcm90b3R5cGUuX2J1aWxkTGlnaHR3ZWlnaHRQbG90RW50aXRpZXM9ZnVuY3Rpb24odCl7dmFyIGU9dGhpcyxuPVtdO3JldHVybiB0LmZvckVhY2goKGZ1bmN0aW9uKHQsaSl7Zm9yKHZhciByPWUuX2RhdGFzZXRUb0RyYXdlci5nZXQodCksbz0wLGE9dC5kYXRhKCkscz1hLmxlbmd0aCxsPWZ1bmN0aW9uKHMpe3ZhciBsPWFbc10sYz1lLl9waXhlbFBvaW50KGwscyx0KTtpZih1bXQuTWF0aC5pc05hTihjLngpfHx1bXQuTWF0aC5pc05hTihjLnkpKXJldHVybiJjb250aW51ZSI7dmFyIHU9ZTtuLnB1c2goe2RhdHVtOmwsZ2V0IHBvc2l0aW9uKCl7cmV0dXJuIHUuX3BpeGVsUG9pbnQuY2FsbCh1LGwscyx0KX0saW5kZXg6cyxkYXRhc2V0OnQsZGF0YXNldEluZGV4OmksY29tcG9uZW50OmUsZHJhd2VyOnIsdmFsaWREYXR1bUluZGV4Om99KSxvKyt9LGM9MDtjPHM7YysrKWwoYyl9KSksbn0sZS5wcm90b3R5cGUuX2dldERhdGFUb0RyYXc9ZnVuY3Rpb24oKXt2YXIgdD1uZXcgdW10Lk1hcDtyZXR1cm4gdGhpcy5kYXRhc2V0cygpLmZvckVhY2goKGZ1bmN0aW9uKGUpe3JldHVybiB0LnNldChlLGUuZGF0YSgpKX0pKSx0fSxlLnByb3RvdHlwZS5fcGFpbnQ9ZnVuY3Rpb24oKXt2YXIgdD10aGlzO2RlbGV0ZSB0aGlzLl9jYWNoZWRBdHRyVG9Qcm9qZWN0b3I7dmFyIG49dGhpcy5fZ2VuZXJhdGVEcmF3U3RlcHMoKSxpPXRoaXMuX2dldERhdGFUb0RyYXcoKSxyPXRoaXMuZGF0YXNldHMoKS5tYXAoKGZ1bmN0aW9uKGUpe3JldHVybiB0Ll9kYXRhc2V0VG9EcmF3ZXIuZ2V0KGUpfSkpO2lmKCJjYW52YXMiPT09dGhpcy5yZW5kZXJlcigpKXt2YXIgbz10aGlzLl9jYW52YXMubm9kZSgpO28uZ2V0Q29udGV4dCgiMmQiKS5jbGVhclJlY3QoMCwwLG8uY2xpZW50V2lkdGgsby5jbGllbnRIZWlnaHQpLHRoaXMuX2J1ZmZlckNhbnZhc1ZhbGlkPSExfXRoaXMuZGF0YXNldHMoKS5mb3JFYWNoKChmdW5jdGlvbih0LG8pe3ZhciBhPWUuYXBwbHlEcmF3U3RlcHMobix0KTtyW29dLmRyYXcoaS5nZXQodCksYSl9KSk7dmFyIGE9dGhpcy5kYXRhc2V0cygpLm1hcCgoZnVuY3Rpb24odCxyKXtyZXR1cm4gZS5nZXRUb3RhbERyYXdUaW1lKGkuZ2V0KHQpLG4pfSkpLHM9dW10Lk1hdGgubWF4KGEsMCk7dGhpcy5fYWRkaXRpb25hbFBhaW50KHMpfSxlLnByb3RvdHlwZS5zZWxlY3Rpb25zPWZ1bmN0aW9uKHQpe3ZhciBlPXRoaXM7aWYodm9pZCAwPT09dCYmKHQ9dGhpcy5kYXRhc2V0cygpKSwiY2FudmFzIj09PXRoaXMucmVuZGVyZXIoKSlyZXR1cm4gVWh0LnNlbGVjdEFsbCgpO3ZhciBuPVtdO3JldHVybiB0LmZvckVhY2goKGZ1bmN0aW9uKHQpe3ZhciBpPWUuX2RhdGFzZXRUb0RyYXdlci5nZXQodCk7aWYobnVsbCE9aSl7dmFyIHI9aS5nZXRWaXN1YWxQcmltaXRpdmVzKCk7bi5wdXNoLmFwcGx5KG4scil9fSkpLFVodC5zZWxlY3RBbGwobil9LGUucHJvdG90eXBlLmVudGl0aWVzPWZ1bmN0aW9uKHQpe3ZhciBlPXRoaXM7cmV0dXJuIHRoaXMuX2dldEVudGl0eVN0b3JlKHQpLmVudGl0aWVzKCkubWFwKChmdW5jdGlvbih0KXtyZXR1cm4gZS5fbGlnaHR3ZWlnaHRQbG90RW50aXR5VG9QbG90RW50aXR5KHQpfSkpfSxlLnByb3RvdHlwZS5maWx0ZXJFbnRpdGllcz1mdW5jdGlvbih0KXt2YXIgZT10aGlzO3JldHVybiB0aGlzLl9nZXRFbnRpdHlTdG9yZSgpLmVudGl0aWVzKCkuZmlsdGVyKHQpLm1hcCgoZnVuY3Rpb24odCl7cmV0dXJuIGUuX2xpZ2h0d2VpZ2h0UGxvdEVudGl0eVRvUGxvdEVudGl0eSh0KX0pKX0sZS5wcm90b3R5cGUuX2dldEVudGl0eVN0b3JlPWZ1bmN0aW9uKHQpe3ZhciBlLG49dGhpcyxpPWZ1bmN0aW9uKHQpe3JldHVybiBuLl9lbnRpdHlCb3VuZHModCl9O3JldHVybiB2b2lkIDAhPT10PygoZT1uZXcgdW10LkVudGl0eVN0b3JlKS5hZGRBbGwodGhpcy5fYnVpbGRMaWdodHdlaWdodFBsb3RFbnRpdGllcyh0KSxpLHRoaXMuX2xvY2FsT3JpZ2luQm91bmRzKCkpLGUpOih2b2lkIDA9PT10aGlzLl9jYWNoZWRFbnRpdHlTdG9yZSYmKChlPW5ldyB1bXQuRW50aXR5U3RvcmUpLmFkZEFsbCh0aGlzLl9idWlsZExpZ2h0d2VpZ2h0UGxvdEVudGl0aWVzKHRoaXMuZGF0YXNldHMoKSksaSx0aGlzLl9sb2NhbE9yaWdpbkJvdW5kcygpKSx0aGlzLl9jYWNoZWRFbnRpdHlTdG9yZT1lKSx0aGlzLl9jYWNoZWRFbnRpdHlTdG9yZSl9LGUucHJvdG90eXBlLl9sb2NhbE9yaWdpbkJvdW5kcz1mdW5jdGlvbigpe3JldHVybnt0b3BMZWZ0Ont4OjAseTowfSxib3R0b21SaWdodDp7eDp0aGlzLndpZHRoKCkseTp0aGlzLmhlaWdodCgpfX19LGUucHJvdG90eXBlLl9lbnRpdHlCb3VuZHM9ZnVuY3Rpb24odCl7dmFyIGU9dGhpcy5fcGl4ZWxQb2ludCh0LmRhdHVtLHQuaW5kZXgsdC5kYXRhc2V0KTtyZXR1cm57eDplLngseTplLnksd2lkdGg6MCxoZWlnaHQ6MH19LGUucHJvdG90eXBlLl9saWdodHdlaWdodFBsb3RFbnRpdHlUb1Bsb3RFbnRpdHk9ZnVuY3Rpb24odCl7cmV0dXJue2JvdW5kczp0aGlzLl9lbnRpdHlCb3VuZHModCksY29tcG9uZW50OnQuY29tcG9uZW50LGRhdGFzZXQ6dC5kYXRhc2V0LGRhdGFzZXRJbmRleDp0LmRhdGFzZXRJbmRleCxkYXR1bTp0LmRhdHVtLGluZGV4OnQuaW5kZXgscG9zaXRpb246dC5wb3NpdGlvbixzZWxlY3Rpb246VWh0LnNlbGVjdCh0LmRyYXdlci5nZXRWaXN1YWxQcmltaXRpdmVBdEluZGV4KHQudmFsaWREYXR1bUluZGV4KSl9fSxlLnByb3RvdHlwZS5lbnRpdGllc0F0PWZ1bmN0aW9uKHQpe3Rocm93IG5ldyBFcnJvcigicGxvdHMgbXVzdCBpbXBsZW1lbnQgZW50aXRpZXNBdCIpfSxlLnByb3RvdHlwZS5lbnRpdHlOZWFyZXN0PWZ1bmN0aW9uKHQpe3ZhciBlPXRoaXMuX2dldEVudGl0eVN0b3JlKCkuZW50aXR5TmVhcmVzdCh0KTtyZXR1cm4gdm9pZCAwPT09ZT92b2lkIDA6dGhpcy5fbGlnaHR3ZWlnaHRQbG90RW50aXR5VG9QbG90RW50aXR5KGUpfSxlLnByb3RvdHlwZS5lbnRpdGllc0luPWZ1bmN0aW9uKHQsZSl7cmV0dXJuIHRoaXMuZW50aXRpZXNJbkJvdW5kcyhudWxsPT1lP3t4OnQudG9wTGVmdC54LHk6dC50b3BMZWZ0Lnksd2lkdGg6dC5ib3R0b21SaWdodC54LXQudG9wTGVmdC54LGhlaWdodDp0LmJvdHRvbVJpZ2h0LnktdC50b3BMZWZ0Lnl9Ont4OnQubWluLHk6ZS5taW4sd2lkdGg6dC5tYXgtdC5taW4saGVpZ2h0OmUubWF4LWUubWlufSl9LGUucHJvdG90eXBlLmVudGl0aWVzSW5Cb3VuZHM9ZnVuY3Rpb24odCl7dmFyIGU9dGhpcyxuPXRoaXMuX2dldEVudGl0eVN0b3JlKCkuZW50aXRpZXNJbkJvdW5kcyh0KTtpZihuKXJldHVybiBuLm1hcCgoZnVuY3Rpb24odCl7cmV0dXJuIGUuX2xpZ2h0d2VpZ2h0UGxvdEVudGl0eVRvUGxvdEVudGl0eSh0KX0pKX0sZS5wcm90b3R5cGUuZW50aXRpZXNJblhCb3VuZHM9ZnVuY3Rpb24odCl7dmFyIGU9dGhpcyxuPXRoaXMuX2dldEVudGl0eVN0b3JlKCkuZW50aXRpZXNJblhCb3VuZHModCk7aWYobilyZXR1cm4gbi5tYXAoKGZ1bmN0aW9uKHQpe3JldHVybiBlLl9saWdodHdlaWdodFBsb3RFbnRpdHlUb1Bsb3RFbnRpdHkodCl9KSl9LGUucHJvdG90eXBlLmVudGl0aWVzSW5ZQm91bmRzPWZ1bmN0aW9uKHQpe3ZhciBlPXRoaXMsbj10aGlzLl9nZXRFbnRpdHlTdG9yZSgpLmVudGl0aWVzSW5ZQm91bmRzKHQpO2lmKG4pcmV0dXJuIG4ubWFwKChmdW5jdGlvbih0KXtyZXR1cm4gZS5fbGlnaHR3ZWlnaHRQbG90RW50aXR5VG9QbG90RW50aXR5KHQpfSkpfSxlLnByb3RvdHlwZS5fdW5pbnN0YWxsU2NhbGVGb3JLZXk9ZnVuY3Rpb24odCxlKXt0Lm9mZlVwZGF0ZSh0aGlzLl9yZW5kZXJDYWxsYmFjayksdC5vZmZVcGRhdGUodGhpcy5fZGVmZXJyZWRSZXNldEVudGl0eVN0b3JlKSx0LnJlbW92ZUluY2x1ZGVkVmFsdWVzUHJvdmlkZXIodGhpcy5faW5jbHVkZWRWYWx1ZXNQcm92aWRlcil9LGUucHJvdG90eXBlLl9pbnN0YWxsU2NhbGVGb3JLZXk9ZnVuY3Rpb24odCxlKXt0Lm9uVXBkYXRlKHRoaXMuX3JlbmRlckNhbGxiYWNrKSx0Lm9uVXBkYXRlKHRoaXMuX2RlZmVycmVkUmVzZXRFbnRpdHlTdG9yZSksdC5hZGRJbmNsdWRlZFZhbHVlc1Byb3ZpZGVyKHRoaXMuX2luY2x1ZGVkVmFsdWVzUHJvdmlkZXIpfSxlLnByb3RvdHlwZS5fcHJvcGVydHlQcm9qZWN0b3JzPWZ1bmN0aW9uKCl7cmV0dXJue319LGUuX3NjYWxlZEFjY2Vzc29yPWZ1bmN0aW9uKHQpe3ZhciBlPXQuc2NhbGUsbj10LmFjY2Vzc29yLGk9dC5wb3N0U2NhbGUscj1udWxsPT1lP246ZnVuY3Rpb24odCxpLHIpe3JldHVybiBlLnNjYWxlKG4odCxpLHIpKX07cmV0dXJuIG51bGw9PWk/cjpmdW5jdGlvbih0LGUsbil7cmV0dXJuIGkocih0LGUsbiksdCxlLG4pfX0sZS5wcm90b3R5cGUuX3BpeGVsUG9pbnQ9ZnVuY3Rpb24odCxlLG4pe3JldHVybnt4OjAseTowfX0sZS5wcm90b3R5cGUuX2FuaW1hdGVPbk5leHRSZW5kZXI9ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5fYW5pbWF0ZSYmdGhpcy5fZGF0YUNoYW5nZWR9LGUuT1BUSU1JWkVfTUVNT0laRV9QUk9KRUNUT1JTPSExLGUuX0FOSU1BVElPTl9NQVhfRFVSQVRJT049NjAwLGV9KShwbXQuQ29tcG9uZW50KTtmdW5jdGlvbiBpKHQsZSxuKXt2YXIgaT1lLmFjY2Vzc29yLHI9ZS5zY2FsZTtpZihudWxsPT1yKXJldHVybltdO3ZhciBvPXQuZGF0YSgpO251bGwhPW4mJihvPW8uZmlsdGVyKChmdW5jdGlvbihlLGkpe3JldHVybiBuKGUsaSx0KX0pKSk7dmFyIGE9by5tYXAoKGZ1bmN0aW9uKGUsbil7cmV0dXJuIGkoZSxuLHQpfSkpO3JldHVybiByLmV4dGVudE9mVmFsdWVzKGEpfWUuUGxvdD1ufSkpLGZndD1iZSgoZnVuY3Rpb24odCxlKXsKLyoqCiAgICAgKiBDb3B5cmlnaHQgMjAxNC1wcmVzZW50IFBhbGFudGlyIFRlY2hub2xvZ2llcwogICAgICogQGxpY2Vuc2UgTUlUCiAgICAgKi8KT2JqZWN0LmRlZmluZVByb3BlcnR5KGUsIl9fZXNNb2R1bGUiLHt2YWx1ZTohMH0pO3ZhciBuPShmdW5jdGlvbih0KXtmdW5jdGlvbiBlKCl7cmV0dXJuIG51bGwhPT10JiZ0LmFwcGx5KHRoaXMsYXJndW1lbnRzKXx8dGhpc31yZXR1cm4gU2Z0Ll9fZXh0ZW5kcyhlLHQpLGUucHJvdG90eXBlLmVudGl0eU5lYXJlc3Q9ZnVuY3Rpb24odCl7dmFyIGUsbj0xLzA7cmV0dXJuIHRoaXMuY29tcG9uZW50cygpLmZvckVhY2goKGZ1bmN0aW9uKGkpe3ZhciByPWkuZW50aXR5TmVhcmVzdCh0KTtpZihudWxsIT1yKXt2YXIgbz11bXQuTWF0aC5kaXN0YW5jZVNxdWFyZWQoci5wb3NpdGlvbix0KTtvPD1uJiYobj1vLGU9cil9fSkpLGV9LGUucHJvdG90eXBlLmFwcGVuZD1mdW5jdGlvbihlKXtpZihudWxsIT1lJiYhKGUgaW5zdGFuY2VvZiBwZ3QuUGxvdCkpdGhyb3cgbmV3IEVycm9yKCJQbG90IEdyb3VwIG9ubHkgYWNjZXB0cyBwbG90cyIpO3JldHVybiB0LnByb3RvdHlwZS5hcHBlbmQuY2FsbCh0aGlzLGUpLHRoaXN9LGV9KShLbXQuR3JvdXApO2UuUGxvdEdyb3VwPW59KSksbWd0PWJlKChmdW5jdGlvbih0LGUpewovKioKICAgICAqIENvcHlyaWdodCAyMDE0LXByZXNlbnQgUGFsYW50aXIgVGVjaG5vbG9naWVzCiAgICAgKiBAbGljZW5zZSBNSVQKICAgICAqLwpPYmplY3QuZGVmaW5lUHJvcGVydHkoZSwiX19lc01vZHVsZSIse3ZhbHVlOiEwfSk7dmFyIG49KGZ1bmN0aW9uKHQpe2Z1bmN0aW9uIGUoZSl7dm9pZCAwPT09ZSYmKGU9W10pO3ZhciBuPXQuY2FsbCh0aGlzKXx8dGhpcztyZXR1cm4gbi5fcm93UGFkZGluZz0wLG4uX2NvbHVtblBhZGRpbmc9MCxuLl9yb3dzPVtdLG4uX3Jvd1dlaWdodHM9W10sbi5fY29sdW1uV2VpZ2h0cz1bXSxuLl9uUm93cz0wLG4uX25Db2xzPTAsbi5fY2FsY3VsYXRlZExheW91dD1udWxsLG4uYWRkQ2xhc3MoInRhYmxlIiksZS5mb3JFYWNoKChmdW5jdGlvbih0LGUpe3QuZm9yRWFjaCgoZnVuY3Rpb24odCxpKXtudWxsIT10JiZuLmFkZCh0LGUsaSl9KSl9KSksbn1yZXR1cm4gU2Z0Ll9fZXh0ZW5kcyhlLHQpLGUucHJvdG90eXBlLl9mb3JFYWNoPWZ1bmN0aW9uKHQpe2Zvcih2YXIgZT0wO2U8dGhpcy5fblJvd3M7ZSsrKWZvcih2YXIgbj0wO248dGhpcy5fbkNvbHM7bisrKW51bGwhPXRoaXMuX3Jvd3NbZV1bbl0mJnQodGhpcy5fcm93c1tlXVtuXSl9LGUucHJvdG90eXBlLmhhcz1mdW5jdGlvbih0KXtmb3IodmFyIGU9MDtlPHRoaXMuX25Sb3dzO2UrKylmb3IodmFyIG49MDtuPHRoaXMuX25Db2xzO24rKylpZih0aGlzLl9yb3dzW2VdW25dPT09dClyZXR1cm4hMDtyZXR1cm4hMX0sZS5wcm90b3R5cGUuY29tcG9uZW50QXQ9ZnVuY3Rpb24odCxlKXtyZXR1cm4gdDwwfHx0Pj10aGlzLl9uUm93c3x8ZTwwfHxlPj10aGlzLl9uQ29scz9udWxsOnRoaXMuX3Jvd3NbdF1bZV19LGUucHJvdG90eXBlLmFkZD1mdW5jdGlvbih0LGUsbil7aWYobnVsbD09dCl0aHJvdyBFcnJvcigiQ2Fubm90IGFkZCBudWxsIHRvIGEgdGFibGUgY2VsbCIpO2lmKCF0aGlzLmhhcyh0KSl7aWYobnVsbCE9KHRoaXMuX3Jvd3NbZV0mJnRoaXMuX3Jvd3NbZV1bbl0pKXRocm93IG5ldyBFcnJvcigiY2VsbCBpcyBvY2N1cGllZCIpO3QuZGV0YWNoKCksdGhpcy5fblJvd3M9TWF0aC5tYXgoZSsxLHRoaXMuX25Sb3dzKSx0aGlzLl9uQ29scz1NYXRoLm1heChuKzEsdGhpcy5fbkNvbHMpLHRoaXMuX3BhZFRhYmxlVG9TaXplKHRoaXMuX25Sb3dzLHRoaXMuX25Db2xzKSx0aGlzLl9yb3dzW2VdW25dPXQsdGhpcy5fYWRvcHRBbmRBbmNob3IodCksdGhpcy5yZWRyYXcoKX1yZXR1cm4gdGhpc30sZS5wcm90b3R5cGUuX3JlbW92ZT1mdW5jdGlvbih0KXtmb3IodmFyIGU9MDtlPHRoaXMuX25Sb3dzO2UrKylmb3IodmFyIG49MDtuPHRoaXMuX25Db2xzO24rKylpZih0aGlzLl9yb3dzW2VdW25dPT09dClyZXR1cm4gdGhpcy5fcm93c1tlXVtuXT1udWxsLCEwO3JldHVybiExfSxlLnByb3RvdHlwZS5faXRlcmF0ZUxheW91dD1mdW5jdGlvbih0LG4saSl7dm9pZCAwPT09aSYmKGk9ITEpO2Zvcih2YXIgcixvLGEscyxsLGM9dGhpcy5fcm93cyx1PVVodC50cmFuc3Bvc2UodGhpcy5fcm93cyksaD10LXRoaXMuX2NvbHVtblBhZGRpbmcqKHRoaXMuX25Db2xzLTEpLGQ9bi10aGlzLl9yb3dQYWRkaW5nKih0aGlzLl9uUm93cy0xKSxwPWUuX2NhbGNDb21wb25lbnRXZWlnaHRzKHRoaXMuX3Jvd1dlaWdodHMsYywoZnVuY3Rpb24odCl7cmV0dXJuIG51bGw9PXR8fHQuZml4ZWRIZWlnaHQoKX0pKSxmPWUuX2NhbGNDb21wb25lbnRXZWlnaHRzKHRoaXMuX2NvbHVtbldlaWdodHMsdSwoZnVuY3Rpb24odCl7cmV0dXJuIG51bGw9PXR8fHQuZml4ZWRXaWR0aCgpfSkpLG09Zi5tYXAoKGZ1bmN0aW9uKHQpe3JldHVybiAwPT09dD8uNTp0fSkpLGc9cC5tYXAoKGZ1bmN0aW9uKHQpe3JldHVybiAwPT09dD8uNTp0fSkpLF89ZS5fY2FsY1Byb3BvcnRpb25hbFNwYWNlKG0saCkseT1lLl9jYWxjUHJvcG9ydGlvbmFsU3BhY2UoZyxkKSx2PXVtdC5BcnJheS5jcmVhdGVGaWxsZWRBcnJheSgwLHRoaXMuX25Db2xzKSxiPXVtdC5BcnJheS5jcmVhdGVGaWxsZWRBcnJheSgwLHRoaXMuX25Sb3dzKSx4PTA7Oyl7dmFyIHc9dW10LkFycmF5LmFkZChiLHkpLFM9dW10LkFycmF5LmFkZCh2LF8pO3Y9KGE9dGhpcy5fZGV0ZXJtaW5lR3VhcmFudGVlcyhTLHcsaSkpLmd1YXJhbnRlZWRXaWR0aHMsYj1hLmd1YXJhbnRlZWRIZWlnaHRzLHM9YS53YW50c1dpZHRoQXJyLnNvbWUoKGZ1bmN0aW9uKHQpe3JldHVybiB0fSkpLGw9YS53YW50c0hlaWdodEFyci5zb21lKChmdW5jdGlvbih0KXtyZXR1cm4gdH0pKTt2YXIgTT1yLEU9bztyPWgtVWh0LnN1bShhLmd1YXJhbnRlZWRXaWR0aHMpLG89ZC1VaHQuc3VtKGEuZ3VhcmFudGVlZEhlaWdodHMpO3ZhciBUPXZvaWQgMDtzPyhUPWEud2FudHNXaWR0aEFyci5tYXAoKGZ1bmN0aW9uKHQpe3JldHVybiB0Py4xOjB9KSksVD11bXQuQXJyYXkuYWRkKFQsZikpOlQ9Zjt2YXIgQT12b2lkIDA7aWYobD8oQT1hLndhbnRzSGVpZ2h0QXJyLm1hcCgoZnVuY3Rpb24odCl7cmV0dXJuIHQ/LjE6MH0pKSxBPXVtdC5BcnJheS5hZGQoQSxwKSk6QT1wLF89ZS5fY2FsY1Byb3BvcnRpb25hbFNwYWNlKFQscikseT1lLl9jYWxjUHJvcG9ydGlvbmFsU3BhY2UoQSxvKSx4KyssIShyPjAmJnIhPT1NfHxvPjAmJm8hPT1FKSlicmVhaztpZih4PjUpYnJlYWt9cmV0dXJuIHI9aC1VaHQuc3VtKGEuZ3VhcmFudGVlZFdpZHRocyksbz1kLVVodC5zdW0oYS5ndWFyYW50ZWVkSGVpZ2h0cykse2NvbFByb3BvcnRpb25hbFNwYWNlOl89ZS5fY2FsY1Byb3BvcnRpb25hbFNwYWNlKGYscikscm93UHJvcG9ydGlvbmFsU3BhY2U6eT1lLl9jYWxjUHJvcG9ydGlvbmFsU3BhY2UocCxvKSxndWFyYW50ZWVkV2lkdGhzOmEuZ3VhcmFudGVlZFdpZHRocyxndWFyYW50ZWVkSGVpZ2h0czphLmd1YXJhbnRlZWRIZWlnaHRzLHdhbnRzV2lkdGg6cyx3YW50c0hlaWdodDpsfX0sZS5wcm90b3R5cGUuX2RldGVybWluZUd1YXJhbnRlZXM9ZnVuY3Rpb24odCxlLG4pe3ZvaWQgMD09PW4mJihuPSExKTt2YXIgaT11bXQuQXJyYXkuY3JlYXRlRmlsbGVkQXJyYXkoMCx0aGlzLl9uQ29scykscj11bXQuQXJyYXkuY3JlYXRlRmlsbGVkQXJyYXkoMCx0aGlzLl9uUm93cyksbz11bXQuQXJyYXkuY3JlYXRlRmlsbGVkQXJyYXkoITEsdGhpcy5fbkNvbHMpLGE9dW10LkFycmF5LmNyZWF0ZUZpbGxlZEFycmF5KCExLHRoaXMuX25Sb3dzKTtyZXR1cm4gdGhpcy5fcm93cy5mb3JFYWNoKChmdW5jdGlvbihzLGwpe3MuZm9yRWFjaCgoZnVuY3Rpb24ocyxjKXt2YXIgdTt1PW51bGwhPXM/cy5yZXF1ZXN0ZWRTcGFjZSh0W2NdLGVbbF0pOnttaW5XaWR0aDowLG1pbkhlaWdodDowfTt2YXIgaD1uP01hdGgubWluKHUubWluV2lkdGgsdFtjXSk6dS5taW5XaWR0aDtpW2NdPU1hdGgubWF4KGlbY10saCk7dmFyIGQ9bj9NYXRoLm1pbih1Lm1pbkhlaWdodCxlW2xdKTp1Lm1pbkhlaWdodDtyW2xdPU1hdGgubWF4KHJbbF0sZCksb1tjXT1vW2NdfHx1Lm1pbldpZHRoPnRbY10sYVtsXT1hW2xdfHx1Lm1pbkhlaWdodD5lW2xdfSkpfSkpLHtndWFyYW50ZWVkV2lkdGhzOmksZ3VhcmFudGVlZEhlaWdodHM6cix3YW50c1dpZHRoQXJyOm8sd2FudHNIZWlnaHRBcnI6YX19LGUucHJvdG90eXBlLnJlcXVlc3RlZFNwYWNlPWZ1bmN0aW9uKHQsZSl7cmV0dXJuIHRoaXMuX2NhbGN1bGF0ZWRMYXlvdXQ9dGhpcy5faXRlcmF0ZUxheW91dCh0LGUpLHttaW5XaWR0aDpVaHQuc3VtKHRoaXMuX2NhbGN1bGF0ZWRMYXlvdXQuZ3VhcmFudGVlZFdpZHRocyksbWluSGVpZ2h0OlVodC5zdW0odGhpcy5fY2FsY3VsYXRlZExheW91dC5ndWFyYW50ZWVkSGVpZ2h0cyl9fSxlLnByb3RvdHlwZS5jb21wdXRlTGF5b3V0PWZ1bmN0aW9uKGUsbixpKXt2YXIgcj10aGlzO3QucHJvdG90eXBlLmNvbXB1dGVMYXlvdXQuY2FsbCh0aGlzLGUsbixpKTt2YXIgbz1VaHQuc3VtKHRoaXMuX2NhbGN1bGF0ZWRMYXlvdXQuZ3VhcmFudGVlZFdpZHRocyksYT1VaHQuc3VtKHRoaXMuX2NhbGN1bGF0ZWRMYXlvdXQuZ3VhcmFudGVlZEhlaWdodHMpLHM9dGhpcy5fY2FsY3VsYXRlZExheW91dDsobz50aGlzLndpZHRoKCl8fGE+dGhpcy5oZWlnaHQoKSkmJihzPXRoaXMuX2l0ZXJhdGVMYXlvdXQodGhpcy53aWR0aCgpLHRoaXMuaGVpZ2h0KCksITApKTt2YXIgbD0wLGM9dW10LkFycmF5LmFkZChzLnJvd1Byb3BvcnRpb25hbFNwYWNlLHMuZ3VhcmFudGVlZEhlaWdodHMpLHU9dW10LkFycmF5LmFkZChzLmNvbFByb3BvcnRpb25hbFNwYWNlLHMuZ3VhcmFudGVlZFdpZHRocyk7cmV0dXJuIHRoaXMuX3Jvd3MuZm9yRWFjaCgoZnVuY3Rpb24odCxlKXt2YXIgbj0wO3QuZm9yRWFjaCgoZnVuY3Rpb24odCxpKXtudWxsIT10JiZ0LmNvbXB1dGVMYXlvdXQoe3g6bix5Omx9LHVbaV0sY1tlXSksbis9dVtpXStyLl9jb2x1bW5QYWRkaW5nfSkpLGwrPWNbZV0rci5fcm93UGFkZGluZ30pKSx0aGlzfSxlLnByb3RvdHlwZS5yb3dQYWRkaW5nPWZ1bmN0aW9uKHQpe2lmKG51bGw9PXQpcmV0dXJuIHRoaXMuX3Jvd1BhZGRpbmc7aWYoIXVtdC5NYXRoLmlzVmFsaWROdW1iZXIodCl8fHQ8MCl0aHJvdyBFcnJvcigicm93UGFkZGluZyBtdXN0IGJlIGEgbm9uLW5lZ2F0aXZlIGZpbml0ZSB2YWx1ZSIpO3JldHVybiB0aGlzLl9yb3dQYWRkaW5nPXQsdGhpcy5yZWRyYXcoKSx0aGlzfSxlLnByb3RvdHlwZS5jb2x1bW5QYWRkaW5nPWZ1bmN0aW9uKHQpe2lmKG51bGw9PXQpcmV0dXJuIHRoaXMuX2NvbHVtblBhZGRpbmc7aWYoIXVtdC5NYXRoLmlzVmFsaWROdW1iZXIodCl8fHQ8MCl0aHJvdyBFcnJvcigiY29sdW1uUGFkZGluZyBtdXN0IGJlIGEgbm9uLW5lZ2F0aXZlIGZpbml0ZSB2YWx1ZSIpO3JldHVybiB0aGlzLl9jb2x1bW5QYWRkaW5nPXQsdGhpcy5yZWRyYXcoKSx0aGlzfSxlLnByb3RvdHlwZS5yb3dXZWlnaHQ9ZnVuY3Rpb24odCxlKXtpZihudWxsPT1lKXJldHVybiB0aGlzLl9yb3dXZWlnaHRzW3RdO2lmKCF1bXQuTWF0aC5pc1ZhbGlkTnVtYmVyKGUpfHxlPDApdGhyb3cgRXJyb3IoInJvd1dlaWdodCBtdXN0IGJlIGEgbm9uLW5lZ2F0aXZlIGZpbml0ZSB2YWx1ZSIpO3JldHVybiB0aGlzLl9yb3dXZWlnaHRzW3RdPWUsdGhpcy5yZWRyYXcoKSx0aGlzfSxlLnByb3RvdHlwZS5jb2x1bW5XZWlnaHQ9ZnVuY3Rpb24odCxlKXtpZihudWxsPT1lKXJldHVybiB0aGlzLl9jb2x1bW5XZWlnaHRzW3RdO2lmKCF1bXQuTWF0aC5pc1ZhbGlkTnVtYmVyKGUpfHxlPDApdGhyb3cgRXJyb3IoImNvbHVtbldlaWdodCBtdXN0IGJlIGEgbm9uLW5lZ2F0aXZlIGZpbml0ZSB2YWx1ZSIpO3JldHVybiB0aGlzLl9jb2x1bW5XZWlnaHRzW3RdPWUsdGhpcy5yZWRyYXcoKSx0aGlzfSxlLnByb3RvdHlwZS5maXhlZFdpZHRoPWZ1bmN0aW9uKCl7dmFyIHQ9VWh0LnRyYW5zcG9zZSh0aGlzLl9yb3dzKTtyZXR1cm4gZS5fZml4ZWRTcGFjZSh0LChmdW5jdGlvbih0KXtyZXR1cm4gbnVsbD09dHx8dC5maXhlZFdpZHRoKCl9KSl9LGUucHJvdG90eXBlLmZpeGVkSGVpZ2h0PWZ1bmN0aW9uKCl7cmV0dXJuIGUuX2ZpeGVkU3BhY2UodGhpcy5fcm93cywoZnVuY3Rpb24odCl7cmV0dXJuIG51bGw9PXR8fHQuZml4ZWRIZWlnaHQoKX0pKX0sZS5wcm90b3R5cGUuX3BhZFRhYmxlVG9TaXplPWZ1bmN0aW9uKHQsZSl7Zm9yKHZhciBuPTA7bjx0O24rKyl7dm9pZCAwPT09dGhpcy5fcm93c1tuXSYmKHRoaXMuX3Jvd3Nbbl09W10sdGhpcy5fcm93V2VpZ2h0c1tuXT1udWxsKTtmb3IodmFyIGk9MDtpPGU7aSsrKXZvaWQgMD09PXRoaXMuX3Jvd3Nbbl1baV0mJih0aGlzLl9yb3dzW25dW2ldPW51bGwpfWZvcihpPTA7aTxlO2krKyl2b2lkIDA9PT10aGlzLl9jb2x1bW5XZWlnaHRzW2ldJiYodGhpcy5fY29sdW1uV2VpZ2h0c1tpXT1udWxsKX0sZS5fY2FsY0NvbXBvbmVudFdlaWdodHM9ZnVuY3Rpb24odCxlLG4pe3JldHVybiB0Lm1hcCgoZnVuY3Rpb24odCxpKXtyZXR1cm4gbnVsbCE9dD90OmVbaV0ubWFwKG4pLnJlZHVjZSgoZnVuY3Rpb24odCxlKXtyZXR1cm4gdCYmZX0pLCEwKT8wOjF9KSl9LGUuX2NhbGNQcm9wb3J0aW9uYWxTcGFjZT1mdW5jdGlvbih0LGUpe3ZhciBuPVVodC5zdW0odCk7cmV0dXJuIDA9PT1uP3VtdC5BcnJheS5jcmVhdGVGaWxsZWRBcnJheSgwLHQubGVuZ3RoKTp0Lm1hcCgoZnVuY3Rpb24odCl7cmV0dXJuIGUqdC9ufSkpfSxlLl9maXhlZFNwYWNlPWZ1bmN0aW9uKHQsZSl7dmFyIG49ZnVuY3Rpb24odCl7cmV0dXJuIHQucmVkdWNlKChmdW5jdGlvbih0LGUpe3JldHVybiB0JiZlfSksITApfTtyZXR1cm4gbih0Lm1hcCgoZnVuY3Rpb24odCl7cmV0dXJuIG4odC5tYXAoZSkpfSkpKX0sZX0pKCRtdC5Db21wb25lbnRDb250YWluZXIpO2UuVGFibGU9bn0pKSxnZ3Q9YmUoKGZ1bmN0aW9uKHQsZSl7Ci8qKgogICAgICogQ29weXJpZ2h0IDIwMTQtcHJlc2VudCBQYWxhbnRpciBUZWNobm9sb2dpZXMKICAgICAqIEBsaWNlbnNlIE1JVAogICAgICovCk9iamVjdC5kZWZpbmVQcm9wZXJ0eShlLCJfX2VzTW9kdWxlIix7dmFsdWU6ITB9KTt2YXIgbj0oZnVuY3Rpb24odCl7ZnVuY3Rpb24gZSgpe3ZhciBlPW51bGwhPT10JiZ0LmFwcGx5KHRoaXMsYXJndW1lbnRzKXx8dGhpcztyZXR1cm4gZS5fbWF4TGluZXM9MixlfXJldHVybiBTZnQuX19leHRlbmRzKGUsdCksZS5wcm90b3R5cGUucmVxdWVzdGVkU3BhY2U9ZnVuY3Rpb24odCxlKXt0aGlzLl93cmFwcGVyLm1heExpbmVzKHRoaXMuX21heExpbmVzKTt2YXIgbj0wPT09dGhpcy5hbmdsZSgpP3Q6ZTswPT09biYmKG49MS8wKTt2YXIgaT10aGlzLl93cmFwcGVyLndyYXAodGhpcy5fdGV4dCx0aGlzLl9tZWFzdXJlcixuKSxyPXRoaXMuX21lYXN1cmVyLm1lYXN1cmUoaS53cmFwcGVkVGV4dCk7cmV0dXJue21pbldpZHRoOigwPT09dGhpcy5hbmdsZSgpP3Iud2lkdGg6ci5oZWlnaHQpKzIqdGhpcy5wYWRkaW5nKCksbWluSGVpZ2h0OigwPT09dGhpcy5hbmdsZSgpP3IuaGVpZ2h0OnIud2lkdGgpKzIqdGhpcy5wYWRkaW5nKCl9fSxlLnByb3RvdHlwZS5tYXhMaW5lcz1mdW5jdGlvbih0KXtyZXR1cm4gMD09PWFyZ3VtZW50cy5sZW5ndGg/dGhpcy5fbWF4TGluZXM6KHRoaXMuX21heExpbmVzPXQsdGhpcy5yZWRyYXcoKSx0aGlzKX0sZX0pKEptdC5MYWJlbCk7ZS5XcmFwcGVkTGFiZWw9bn0pKSxfZ3Q9YmUoKGZ1bmN0aW9uKHQsZSl7Ci8qKgogICAgICogQ29weXJpZ2h0IDIwMTQtcHJlc2VudCBQYWxhbnRpciBUZWNobm9sb2dpZXMKICAgICAqIEBsaWNlbnNlIE1JVAogICAgICovCk9iamVjdC5kZWZpbmVQcm9wZXJ0eShlLCJfX2VzTW9kdWxlIix7dmFsdWU6ITB9KTt2YXIgbj0oZnVuY3Rpb24odCl7ZnVuY3Rpb24gZSgpe3ZhciBlPXQuY2FsbCh0aGlzKXx8dGhpcztyZXR1cm4gZS5hZGRDbGFzcygieC1kcmFnLWJveC1sYXllciIpLGUuX2hhc0Nvcm5lcnM9ITEsZX1yZXR1cm4gU2Z0Ll9fZXh0ZW5kcyhlLHQpLGUucHJvdG90eXBlLmNvbXB1dGVMYXlvdXQ9ZnVuY3Rpb24oZSxuLGkpe3JldHVybiB0LnByb3RvdHlwZS5jb21wdXRlTGF5b3V0LmNhbGwodGhpcyxlLG4saSksdGhpcy5fc2V0Qm91bmRzKHRoaXMuYm91bmRzKCkpLHRoaXN9LGUucHJvdG90eXBlLl9zZXRCb3VuZHM9ZnVuY3Rpb24oZSl7dC5wcm90b3R5cGUuX3NldEJvdW5kcy5jYWxsKHRoaXMse3RvcExlZnQ6e3g6ZS50b3BMZWZ0LngseTowfSxib3R0b21SaWdodDp7eDplLmJvdHRvbVJpZ2h0LngseTp0aGlzLmhlaWdodCgpfX0pfSxlLnByb3RvdHlwZS5fc2V0UmVzaXphYmxlQ2xhc3Nlcz1mdW5jdGlvbih0KXt0JiZ0aGlzLmVuYWJsZWQoKT90aGlzLmFkZENsYXNzKCJ4LXJlc2l6YWJsZSIpOnRoaXMucmVtb3ZlQ2xhc3MoIngtcmVzaXphYmxlIil9LGUucHJvdG90eXBlLnlTY2FsZT1mdW5jdGlvbihlKXtpZihudWxsPT1lKXJldHVybiB0LnByb3RvdHlwZS55U2NhbGUuY2FsbCh0aGlzKTt0aHJvdyBuZXcgRXJyb3IoInlTY2FsZXMgY2Fubm90IGJlIHNldCBvbiBhbiBYRHJhZ0JveExheWVyIil9LGUucHJvdG90eXBlLnlFeHRlbnQ9ZnVuY3Rpb24oZSl7aWYobnVsbD09ZSlyZXR1cm4gdC5wcm90b3R5cGUueUV4dGVudC5jYWxsKHRoaXMpO3Rocm93IG5ldyBFcnJvcigiWERyYWdCb3hMYXllciBoYXMgbm8geUV4dGVudCIpfSxlfSkoV210LkRyYWdCb3hMYXllcik7ZS5YRHJhZ0JveExheWVyPW59KSkseWd0PWJlKChmdW5jdGlvbih0LGUpewovKioKICAgICAqIENvcHlyaWdodCAyMDE0LXByZXNlbnQgUGFsYW50aXIgVGVjaG5vbG9naWVzCiAgICAgKiBAbGljZW5zZSBNSVQKICAgICAqLwpPYmplY3QuZGVmaW5lUHJvcGVydHkoZSwiX19lc01vZHVsZSIse3ZhbHVlOiEwfSk7dmFyIG49KGZ1bmN0aW9uKHQpe2Z1bmN0aW9uIGUoKXt2YXIgZT10LmNhbGwodGhpcyl8fHRoaXM7cmV0dXJuIGUuYWRkQ2xhc3MoInktZHJhZy1ib3gtbGF5ZXIiKSxlLl9oYXNDb3JuZXJzPSExLGV9cmV0dXJuIFNmdC5fX2V4dGVuZHMoZSx0KSxlLnByb3RvdHlwZS5jb21wdXRlTGF5b3V0PWZ1bmN0aW9uKGUsbixpKXtyZXR1cm4gdC5wcm90b3R5cGUuY29tcHV0ZUxheW91dC5jYWxsKHRoaXMsZSxuLGkpLHRoaXMuX3NldEJvdW5kcyh0aGlzLmJvdW5kcygpKSx0aGlzfSxlLnByb3RvdHlwZS5fc2V0Qm91bmRzPWZ1bmN0aW9uKGUpe3QucHJvdG90eXBlLl9zZXRCb3VuZHMuY2FsbCh0aGlzLHt0b3BMZWZ0Ont4OjAseTplLnRvcExlZnQueX0sYm90dG9tUmlnaHQ6e3g6dGhpcy53aWR0aCgpLHk6ZS5ib3R0b21SaWdodC55fX0pfSxlLnByb3RvdHlwZS5fc2V0UmVzaXphYmxlQ2xhc3Nlcz1mdW5jdGlvbih0KXt0JiZ0aGlzLmVuYWJsZWQoKT90aGlzLmFkZENsYXNzKCJ5LXJlc2l6YWJsZSIpOnRoaXMucmVtb3ZlQ2xhc3MoInktcmVzaXphYmxlIil9LGUucHJvdG90eXBlLnhTY2FsZT1mdW5jdGlvbihlKXtpZihudWxsPT1lKXJldHVybiB0LnByb3RvdHlwZS54U2NhbGUuY2FsbCh0aGlzKTt0aHJvdyBuZXcgRXJyb3IoInhTY2FsZXMgY2Fubm90IGJlIHNldCBvbiBhbiBZRHJhZ0JveExheWVyIil9LGUucHJvdG90eXBlLnhFeHRlbnQ9ZnVuY3Rpb24oZSl7aWYobnVsbD09ZSlyZXR1cm4gdC5wcm90b3R5cGUueEV4dGVudC5jYWxsKHRoaXMpO3Rocm93IG5ldyBFcnJvcigiWURyYWdCb3hMYXllciBoYXMgbm8geEV4dGVudCIpfSxlfSkoV210LkRyYWdCb3hMYXllcik7ZS5ZRHJhZ0JveExheWVyPW59KSksdmd0PWJlKChmdW5jdGlvbih0LGUpewovKioKICAgICAqIENvcHlyaWdodCAyMDE0LXByZXNlbnQgUGFsYW50aXIgVGVjaG5vbG9naWVzCiAgICAgKiBAbGljZW5zZSBNSVQKICAgICAqLwpPYmplY3QuZGVmaW5lUHJvcGVydHkoZSwiX19lc01vZHVsZSIse3ZhbHVlOiEwfSksU2Z0Ll9fZXhwb3J0U3RhcihXbXQsZSksU2Z0Ll9fZXhwb3J0U3RhcihZbXQsZSksU2Z0Ll9fZXhwb3J0U3RhcihYbXQsZSksU2Z0Ll9fZXhwb3J0U3RhcihLbXQsZSksU2Z0Ll9fZXhwb3J0U3RhcihxbXQsZSksU2Z0Ll9fZXhwb3J0U3RhcihabXQsZSksU2Z0Ll9fZXhwb3J0U3RhcihKbXQsZSksU2Z0Ll9fZXhwb3J0U3Rhcih0Z3QsZSksU2Z0Ll9fZXhwb3J0U3RhcihmZ3QsZSksU2Z0Ll9fZXhwb3J0U3RhcihHbXQsZSksU2Z0Ll9fZXhwb3J0U3RhcihtZ3QsZSksU2Z0Ll9fZXhwb3J0U3RhcihnZ3QsZSksU2Z0Ll9fZXhwb3J0U3RhcihfZ3QsZSksU2Z0Ll9fZXhwb3J0U3Rhcih5Z3QsZSl9KSksYmd0PWJlKChmdW5jdGlvbih0LGUpewovKioKICAgICAqIENvcHlyaWdodCAyMDE0LXByZXNlbnQgUGFsYW50aXIgVGVjaG5vbG9naWVzCiAgICAgKiBAbGljZW5zZSBNSVQKICAgICAqLwpPYmplY3QuZGVmaW5lUHJvcGVydHkoZSwiX19lc01vZHVsZSIse3ZhbHVlOiEwfSk7dmFyIG49KGZ1bmN0aW9uKHQpe2Z1bmN0aW9uIGUoKXtyZXR1cm4gdC5jYWxsKHRoaXMsInBhdGgiLCJhcmMgZmlsbCIpfHx0aGlzfXJldHVybiBTZnQuX19leHRlbmRzKGUsdCksZS5wcm90b3R5cGUuX2FwcGx5RGVmYXVsdEF0dHJpYnV0ZXM9ZnVuY3Rpb24odCl7dC5zdHlsZSgic3Ryb2tlIiwibm9uZSIpfSxlfSkoaGd0LlNWR0RyYXdlcik7ZS5BcmNTVkdEcmF3ZXI9bn0pKSx4Z3Q9YmUoKGZ1bmN0aW9uKHQsZSl7Ci8qKgogICAgICogQ29weXJpZ2h0IDIwMTQtcHJlc2VudCBQYWxhbnRpciBUZWNobm9sb2dpZXMKICAgICAqIEBsaWNlbnNlIE1JVAogICAgICovCk9iamVjdC5kZWZpbmVQcm9wZXJ0eShlLCJfX2VzTW9kdWxlIix7dmFsdWU6ITB9KTt2YXIgbj0oZnVuY3Rpb24odCl7ZnVuY3Rpb24gZSgpe3JldHVybiB0LmNhbGwodGhpcywicGF0aCIsImFyYyBvdXRsaW5lIil8fHRoaXN9cmV0dXJuIFNmdC5fX2V4dGVuZHMoZSx0KSxlLnByb3RvdHlwZS5fYXBwbHlEZWZhdWx0QXR0cmlidXRlcz1mdW5jdGlvbih0KXt0LnN0eWxlKCJmaWxsIiwibm9uZSIpfSxlfSkoaGd0LlNWR0RyYXdlcik7ZS5BcmNPdXRsaW5lU1ZHRHJhd2VyPW59KSksd2d0PWJlKChmdW5jdGlvbih0LGUpewovKioKICAgICAqIENvcHlyaWdodCAyMDE0LXByZXNlbnQgUGFsYW50aXIgVGVjaG5vbG9naWVzCiAgICAgKiBAbGljZW5zZSBNSVQKICAgICAqLwpPYmplY3QuZGVmaW5lUHJvcGVydHkoZSwiX19lc01vZHVsZSIse3ZhbHVlOiEwfSk7dmFyIG49KGZ1bmN0aW9uKHQpe2Z1bmN0aW9uIGUoKXtyZXR1cm4gdC5jYWxsKHRoaXMsInBhdGgiLCJhcmVhIil8fHRoaXN9cmV0dXJuIFNmdC5fX2V4dGVuZHMoZSx0KSxlLnByb3RvdHlwZS5fYXBwbHlEZWZhdWx0QXR0cmlidXRlcz1mdW5jdGlvbih0KXt0LnN0eWxlKCJzdHJva2UiLCJub25lIil9LGUucHJvdG90eXBlLmdldFZpc3VhbFByaW1pdGl2ZUF0SW5kZXg9ZnVuY3Rpb24oZSl7cmV0dXJuIHQucHJvdG90eXBlLmdldFZpc3VhbFByaW1pdGl2ZUF0SW5kZXguY2FsbCh0aGlzLDApfSxlfSkoaGd0LlNWR0RyYXdlcik7ZS5BcmVhU1ZHRHJhd2VyPW47dmFyIGk9WyJvcGFjaXR5IiwiZmlsbCIsImZpbGwtb3BhY2l0eSJdLHI9WyJvcGFjaXR5Iiwic3Ryb2tlIiwic3Ryb2tlLXdpZHRoIl07ZS5tYWtlQXJlYUNhbnZhc0RyYXdTdGVwPWZ1bmN0aW9uIG8odCxlKXtyZXR1cm4gZnVuY3Rpb24obixvLGEpe3ZhciBzPWNndC5yZXNvbHZlQXR0cmlidXRlcyhhLGksb1swXSwwKTtjZ3QucmVuZGVyQXJlYShuLHQoKSxvWzBdLHMpO3ZhciBsPWNndC5yZXNvbHZlQXR0cmlidXRlcyhhLHIsb1swXSwwKTtjZ3QucmVuZGVyTGluZShuLGUoKSxvWzBdLGwpfX19KSksU2d0PWJlKChmdW5jdGlvbih0LGUpewovKioKICAgICAqIENvcHlyaWdodCAyMDE0LXByZXNlbnQgUGFsYW50aXIgVGVjaG5vbG9naWVzCiAgICAgKiBAbGljZW5zZSBNSVQKICAgICAqLwpPYmplY3QuZGVmaW5lUHJvcGVydHkoZSwiX19lc01vZHVsZSIse3ZhbHVlOiEwfSk7dmFyIG49KGZ1bmN0aW9uKHQpe2Z1bmN0aW9uIGUoKXtyZXR1cm4gdC5jYWxsKHRoaXMsInBhdGgiLCJsaW5lIil8fHRoaXN9cmV0dXJuIFNmdC5fX2V4dGVuZHMoZSx0KSxlLnByb3RvdHlwZS5fYXBwbHlEZWZhdWx0QXR0cmlidXRlcz1mdW5jdGlvbih0KXt0LnN0eWxlKCJmaWxsIiwibm9uZSIpfSxlLnByb3RvdHlwZS5nZXRWaXN1YWxQcmltaXRpdmVBdEluZGV4PWZ1bmN0aW9uKGUpe3JldHVybiB0LnByb3RvdHlwZS5nZXRWaXN1YWxQcmltaXRpdmVBdEluZGV4LmNhbGwodGhpcywwKX0sZX0pKGhndC5TVkdEcmF3ZXIpO2UuTGluZVNWR0RyYXdlcj1uO3ZhciBpPVsib3BhY2l0eSIsInN0cm9rZS1vcGFjaXR5Iiwic3Ryb2tlLXdpZHRoIiwic3Ryb2tlIiwic3Ryb2tlLWRhc2hhcnJheSJdO2UubWFrZUxpbmVDYW52YXNEcmF3U3RlcD1mdW5jdGlvbiByKHQpe3JldHVybiBmdW5jdGlvbihlLG4scil7dmFyIG89Y2d0LnJlc29sdmVBdHRyaWJ1dGVzKHIsaSxuWzBdLDApO2NndC5yZW5kZXJMaW5lKGUsdCgpLG5bMF0sbyl9fX0pKSxNZ3Q9YmUoKGZ1bmN0aW9uKHQsZSl7Ci8qKgogICAgICogQ29weXJpZ2h0IDIwMTQtcHJlc2VudCBQYWxhbnRpciBUZWNobm9sb2dpZXMKICAgICAqIEBsaWNlbnNlIE1JVAogICAgICovCk9iamVjdC5kZWZpbmVQcm9wZXJ0eShlLCJfX2VzTW9kdWxlIix7dmFsdWU6ITB9KTt2YXIgbj0oZnVuY3Rpb24odCl7ZnVuY3Rpb24gZShlKXt2b2lkIDA9PT1lJiYoZT0iIik7dmFyIG49dC5jYWxsKHRoaXMsInJlY3QiLCIiKXx8dGhpcztyZXR1cm4gbi5fcm9vdENsYXNzTmFtZT1lLG4uX3Jvb3QuY2xhc3NlZChuLl9yb290Q2xhc3NOYW1lLCEwKSxufXJldHVybiBTZnQuX19leHRlbmRzKGUsdCksZX0pKGhndC5TVkdEcmF3ZXIpO2UuUmVjdGFuZ2xlU1ZHRHJhd2VyPW47dmFyIGk9Y2d0LkNvbnRleHRTdHlsZUF0dHJzLmNvbmNhdChbIngiLCJ5Iiwid2lkdGgiLCJoZWlnaHQiXSk7ZS5SZWN0YW5nbGVDYW52YXNEcmF3U3RlcD1mdW5jdGlvbih0LGUsbil7dC5zYXZlKCk7Zm9yKHZhciByPWUubGVuZ3RoLG89MDtvPHI7bysrKXt2YXIgYT1lW29dO2lmKG51bGwhPWEpe3ZhciBzPWNndC5yZXNvbHZlQXR0cmlidXRlcyhuLGksYSxvKTt0LmJlZ2luUGF0aCgpLHQucmVjdChzLngscy55LHMud2lkdGgscy5oZWlnaHQpLGNndC5yZW5kZXJQYXRoV2l0aFN0eWxlKHQscyl9fXQucmVzdG9yZSgpfTt2YXIgcj0oZnVuY3Rpb24odCl7ZnVuY3Rpb24gbihuKXtyZXR1cm4gdC5jYWxsKHRoaXMsbixlLlJlY3RhbmdsZUNhbnZhc0RyYXdTdGVwKXx8dGhpc31yZXR1cm4gU2Z0Ll9fZXh0ZW5kcyhuLHQpLG59KShjZ3QuQ2FudmFzRHJhd2VyKTtlLlJlY3RhbmdsZUNhbnZhc0RyYXdlcj1yfSkpLEVndD1iZSgoZnVuY3Rpb24odCxlKXsKLyoqCiAgICAgKiBDb3B5cmlnaHQgMjAxNC1wcmVzZW50IFBhbGFudGlyIFRlY2hub2xvZ2llcwogICAgICogQGxpY2Vuc2UgTUlUCiAgICAgKi8KT2JqZWN0LmRlZmluZVByb3BlcnR5KGUsIl9fZXNNb2R1bGUiLHt2YWx1ZTohMH0pO3ZhciBuPShmdW5jdGlvbih0KXtmdW5jdGlvbiBlKCl7cmV0dXJuIHQuY2FsbCh0aGlzLCJsaW5lIiwiIil8fHRoaXN9cmV0dXJuIFNmdC5fX2V4dGVuZHMoZSx0KSxlfSkoaGd0LlNWR0RyYXdlcik7ZS5TZWdtZW50U1ZHRHJhd2VyPW59KSksVGd0PWJlKChmdW5jdGlvbih0LGUpewovKioKICAgICAqIENvcHlyaWdodCAyMDE3LXByZXNlbnQgUGFsYW50aXIgVGVjaG5vbG9naWVzCiAgICAgKiBAbGljZW5zZSBNSVQKICAgICAqLwpPYmplY3QuZGVmaW5lUHJvcGVydHkoZSwiX19lc01vZHVsZSIse3ZhbHVlOiEwfSk7dmFyIG49KGZ1bmN0aW9uKCl7ZnVuY3Rpb24gdChlLG4saSl7dm9pZCAwPT09aSYmKGk9d2luZG93LmRldmljZVBpeGVsUmF0aW8pLHRoaXMuc2NyZWVuV2lkdGg9ZSx0aGlzLnNjcmVlbkhlaWdodD1uLHRoaXMuZGV2aWNlUGl4ZWxSYXRpbz1pLHRoaXMucGl4ZWxXaWR0aD1lKmksdGhpcy5waXhlbEhlaWdodD1uKmksdGhpcy5jYW52YXM9ZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgiY2FudmFzIiksdGhpcy5jdHg9dGhpcy5jYW52YXMuZ2V0Q29udGV4dCgiMmQiKSx0LnNpemVQaXhlbHModGhpcy5jdHgsZSxuLGkpfXJldHVybiB0LnNpemVQaXhlbHM9ZnVuY3Rpb24odCxlLG4saSl7dmFyIHI9dC5jYW52YXM7ci53aWR0aD1lKmksci5oZWlnaHQ9bippLHIuc3R5bGUud2lkdGg9ZSsicHgiLHIuc3R5bGUuaGVpZ2h0PW4rInB4Iix0LnNldFRyYW5zZm9ybSgxLDAsMCwxLDAsMCksdC5zY2FsZShpLGkpfSx0LnByb3RvdHlwZS5ibGl0PWZ1bmN0aW9uKHQsZSxuKXt2b2lkIDA9PT1lJiYoZT0wKSx2b2lkIDA9PT1uJiYobj0wKSx0LmRyYXdJbWFnZSh0aGlzLmNhbnZhcyxlLG4sdGhpcy5zY3JlZW5XaWR0aCx0aGlzLnNjcmVlbkhlaWdodCl9LHQucHJvdG90eXBlLmJsaXRDZW50ZXI9ZnVuY3Rpb24odCxlLG4pe3ZvaWQgMD09PWUmJihlPTApLHZvaWQgMD09PW4mJihuPTApLHRoaXMuYmxpdCh0LE1hdGguZmxvb3IoZS10aGlzLnNjcmVlbldpZHRoLzIpLE1hdGguZmxvb3Iobi10aGlzLnNjcmVlbkhlaWdodC8yKSl9LHQucHJvdG90eXBlLnJlc2l6ZT1mdW5jdGlvbihlLG4saSl7dm9pZCAwPT09aSYmKGk9ITEpO3ZhciByPXRoaXMuZGV2aWNlUGl4ZWxSYXRpbztyZXR1cm4gdGhpcy5zY3JlZW5XaWR0aD1lLHRoaXMuc2NyZWVuSGVpZ2h0PW4sdGhpcy5waXhlbFdpZHRoPWUqcix0aGlzLnBpeGVsSGVpZ2h0PW4qcix0LnNpemVQaXhlbHModGhpcy5jdHgsZSxuLHIpLGkmJnRoaXMuY3R4LnRyYW5zbGF0ZShlLzIsZS8yKSx0aGlzfSx0LnByb3RvdHlwZS5jbGVhcj1mdW5jdGlvbih0KXt2YXIgZT10aGlzLG49ZS5waXhlbFdpZHRoLGk9ZS5waXhlbEhlaWdodCxyPWUuY3R4O3JldHVybiByLnNhdmUoKSxyLnNldFRyYW5zZm9ybSgxLDAsMCwxLDAsMCksbnVsbD09dD9yLmNsZWFyUmVjdCgwLDAsbixpKTooci5maWxsU3R5bGU9dCxyLmZpbGxSZWN0KDAsMCxuLGkpKSxyLnJlc3RvcmUoKSx0aGlzfSx0LnByb3RvdHlwZS5nZXRJbWFnZURhdGE9ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5jdHguZ2V0SW1hZ2VEYXRhKDAsMCx0aGlzLnBpeGVsV2lkdGgsdGhpcy5waXhlbEhlaWdodCl9LHR9KSgpO2UuQ2FudmFzQnVmZmVyPW59KSksQWd0PWJlKChmdW5jdGlvbih0LGUpewovKioKICAgICAqIENvcHlyaWdodCAyMDE0LXByZXNlbnQgUGFsYW50aXIgVGVjaG5vbG9naWVzCiAgICAgKiBAbGljZW5zZSBNSVQKICAgICAqLwpPYmplY3QuZGVmaW5lUHJvcGVydHkoZSwiX19lc01vZHVsZSIse3ZhbHVlOiEwfSk7dmFyIG49KGZ1bmN0aW9uKHQpe2Z1bmN0aW9uIGUoKXtyZXR1cm4gdC5jYWxsKHRoaXMsInBhdGgiLCJzeW1ib2wiKXx8dGhpc31yZXR1cm4gU2Z0Ll9fZXh0ZW5kcyhlLHQpLGV9KShoZ3QuU1ZHRHJhd2VyKTtlLlN5bWJvbFNWR0RyYXdlcj1uO3ZhciBpPWNndC5Db250ZXh0U3R5bGVBdHRycy5jb25jYXQoWyJ4IiwieSJdKTtmdW5jdGlvbiByKHQsZSxuLGkscil7cmV0dXJuIG4rcj49MCYmbi1yPD10JiZpK3I+PTAmJmktcjw9ZX1mdW5jdGlvbiBvKHQsZSxuKXtpZihudWxsPT10KXJldHVybiExO2Zvcih2YXIgaT0wO2k8bi5sZW5ndGg7aSsrKXt2YXIgcj1uW2ldO2lmKHRbcl0hPWVbcl0pcmV0dXJuITF9cmV0dXJuITB9ZS5tYWtlU3ltYm9sQ2FudmFzRHJhd1N0ZXA9ZnVuY3Rpb24gYSh0LGUsbixzKXt2YXIgbD10aGlzO3JldHVybiBmdW5jdGlvbihhLGMsdSl7Zm9yKHZhciBoPWEuY2FudmFzLGQ9aC5jbGllbnRXaWR0aCxwPWguY2xpZW50SGVpZ2h0LGY9dm9pZCAwPT09cz9uZXcgVGd0LkNhbnZhc0J1ZmZlcigwLDApOnMsbT1lKCksZz1uKCksXz1udWxsLHk9bnVsbCx2PW51bGwsYj0wO2I8Yy5sZW5ndGg7YisrKXt2YXIgeD1jW2JdO2lmKG51bGwhPXgpe3ZhciB3PWNndC5yZXNvbHZlQXR0cmlidXRlcyh1LGkseCxiKSxTPWcoeCxiLHQpO2lmKHIoZCxwLHcueCx3LnksUykpe3ZhciBNPW8oXyx3LGNndC5Db250ZXh0U3R5bGVBdHRycyksRT1tKHgsYixsLl9kYXRhc2V0KTtpZihNJiZ2PT1TJiZ5PT1FKTtlbHNle3ZhciBUPVMrY2d0LmdldFN0cm9rZVdpZHRoKHcpKzE7KFQ+Zi5zY3JlZW5XaWR0aHx8VD5mLnNjcmVlbkhlaWdodCkmJmYucmVzaXplKFQsVCwhMCksZi5jbGVhcigpO3ZhciBBPWYuY3R4O0EuYmVnaW5QYXRoKCksRShTKS5jb250ZXh0KEEpKG51bGwpLEEuY2xvc2VQYXRoKCksY2d0LnJlbmRlclBhdGhXaXRoU3R5bGUoQSx3KSx5PUUsdj1TLF89d31mLmJsaXRDZW50ZXIoYSx3Lngsdy55KX19fX19fSkpLENndD1iZSgoZnVuY3Rpb24odCxlKXsKLyoqCiAgICAgKiBDb3B5cmlnaHQgMjAxNC1wcmVzZW50IFBhbGFudGlyIFRlY2hub2xvZ2llcwogICAgICogQGxpY2Vuc2UgTUlUCiAgICAgKi8KT2JqZWN0LmRlZmluZVByb3BlcnR5KGUsIl9fZXNNb2R1bGUiLHt2YWx1ZTohMH0pLFNmdC5fX2V4cG9ydFN0YXIoYmd0LGUpLFNmdC5fX2V4cG9ydFN0YXIoeGd0LGUpLFNmdC5fX2V4cG9ydFN0YXIod2d0LGUpLFNmdC5fX2V4cG9ydFN0YXIoY2d0LGUpLFNmdC5fX2V4cG9ydFN0YXIodWd0LGUpLFNmdC5fX2V4cG9ydFN0YXIoU2d0LGUpLFNmdC5fX2V4cG9ydFN0YXIoTWd0LGUpLFNmdC5fX2V4cG9ydFN0YXIoRWd0LGUpLFNmdC5fX2V4cG9ydFN0YXIoaGd0LGUpLFNmdC5fX2V4cG9ydFN0YXIoQWd0LGUpfSkpLGtndD1iZSgoZnVuY3Rpb24odCxlKXsKLyoqCiAgICAgKiBDb3B5cmlnaHQgMjAxNC1wcmVzZW50IFBhbGFudGlyIFRlY2hub2xvZ2llcwogICAgICogQGxpY2Vuc2UgTUlUCiAgICAgKi8KT2JqZWN0LmRlZmluZVByb3BlcnR5KGUsIl9fZXNNb2R1bGUiLHt2YWx1ZTohMH0pO3ZhciBuPShmdW5jdGlvbih0KXtmdW5jdGlvbiBlKCl7dmFyIGU9dC5jYWxsKHRoaXMpfHx0aGlzO3JldHVybiBlLl9hdXRvQWRqdXN0WFNjYWxlRG9tYWluPSExLGUuX2F1dG9BZGp1c3RZU2NhbGVEb21haW49ITEsZS5fZGVmZXJyZWRSZW5kZXJpbmc9ITEsZS5fYXBwbHlEZWZlcnJlZFJlbmRlcmluZ1RyYW5zZm9ybT1mdW5jdGlvbih0LG4saSxyKXtlLl9pc0FuY2hvcmVkJiYobnVsbCE9ZS5fcmVuZGVyQXJlYSYmZS5fcmVuZGVyQXJlYS5hdHRyKCJ0cmFuc2Zvcm0iLCJ0cmFuc2xhdGUoIit0KyIsICIrbisiKSBzY2FsZSgiK2krIiwgIityKyIpIiksbnVsbCE9ZS5fY2FudmFzJiZlLl9jYW52YXMuc3R5bGUoInRyYW5zZm9ybSIsInRyYW5zbGF0ZSgiK3QrInB4LCAiK24rInB4KSBzY2FsZSgiK2krIiwgIityKyIpIikpfSxlLmFkZENsYXNzKCJ4eS1wbG90IiksZS5fYWRqdXN0WURvbWFpbk9uQ2hhbmdlRnJvbVhDYWxsYmFjaz1mdW5jdGlvbih0KXtyZXR1cm4gZS5fYWRqdXN0WURvbWFpbk9uQ2hhbmdlRnJvbVgoKX0sZS5fYWRqdXN0WERvbWFpbk9uQ2hhbmdlRnJvbVlDYWxsYmFjaz1mdW5jdGlvbih0KXtyZXR1cm4gZS5fYWRqdXN0WERvbWFpbk9uQ2hhbmdlRnJvbVkoKX0sZS5fcmVuZGVyQ2FsbGJhY2s9ZnVuY3Rpb24oKXtpZihlLmRlZmVycmVkUmVuZGVyaW5nKCkpe3ZhciB0PWUueCgpJiZlLngoKS5zY2FsZSxuPWUueSgpJiZlLnkoKS5zY2FsZTtlLl9kZWZlcnJlZFJlbmRlcmVyLnVwZGF0ZURvbWFpbnModCxuKX1lbHNlIGUucmVuZGVyKCl9LGUuX2RlZmVycmVkUmVuZGVyZXI9bmV3IGRndC5EZWZlcnJlZFJlbmRlcmVyKChmdW5jdGlvbigpe3JldHVybiBlLnJlbmRlcigpfSksZS5fYXBwbHlEZWZlcnJlZFJlbmRlcmluZ1RyYW5zZm9ybSksZX1yZXR1cm4gU2Z0Ll9fZXh0ZW5kcyhlLHQpLGUucHJvdG90eXBlLnJlbmRlcj1mdW5jdGlvbigpe3JldHVybiB0aGlzLmRlZmVycmVkUmVuZGVyaW5nKCkmJnRoaXMuX2RlZmVycmVkUmVuZGVyZXIucmVzZXRUcmFuc2Zvcm1zKCksdC5wcm90b3R5cGUucmVuZGVyLmNhbGwodGhpcyl9LGUucHJvdG90eXBlLmRlZmVycmVkUmVuZGVyaW5nPWZ1bmN0aW9uKHQpe2lmKG51bGw9PXQpcmV0dXJuIHRoaXMuX2RlZmVycmVkUmVuZGVyaW5nO2lmKHQpe3ZhciBlPXRoaXMueCgpJiZ0aGlzLngoKS5zY2FsZSxuPXRoaXMueSgpJiZ0aGlzLnkoKS5zY2FsZTt0aGlzLl9kZWZlcnJlZFJlbmRlcmVyLnNldERvbWFpbnMoZSxuKX1yZXR1cm4gdGhpcy5fZGVmZXJyZWRSZW5kZXJpbmc9dCx0aGlzfSxlLnByb3RvdHlwZS54PWZ1bmN0aW9uKHQsbixpKXtpZihudWxsPT10KXJldHVybiB0aGlzLl9wcm9wZXJ0eUJpbmRpbmdzLmdldChlLl9YX0tFWSk7dGhpcy5fYmluZFByb3BlcnR5KGUuX1hfS0VZLHQsbixpKTt2YXIgcj10aGlzLndpZHRoKCk7cmV0dXJuIG51bGwhPW4mJm51bGwhPXImJm4ucmFuZ2UoWzAscl0pLHRoaXMuX2F1dG9BZGp1c3RZU2NhbGVEb21haW4mJnRoaXMuX3VwZGF0ZVlFeHRlbnRzQW5kQXV0b2RvbWFpbigpLHRoaXMucmVuZGVyKCksdGhpc30sZS5wcm90b3R5cGUueT1mdW5jdGlvbih0LG4saSl7aWYobnVsbD09dClyZXR1cm4gdGhpcy5fcHJvcGVydHlCaW5kaW5ncy5nZXQoZS5fWV9LRVkpO3RoaXMuX2JpbmRQcm9wZXJ0eShlLl9ZX0tFWSx0LG4saSk7dmFyIHI9dGhpcy5oZWlnaHQoKTtyZXR1cm4gbnVsbCE9biYmbnVsbCE9ciYmbi5yYW5nZShuIGluc3RhbmNlb2Yga210LkNhdGVnb3J5P1swLHJdOltyLDBdKSx0aGlzLl9hdXRvQWRqdXN0WFNjYWxlRG9tYWluJiZ0aGlzLl91cGRhdGVYRXh0ZW50c0FuZEF1dG9kb21haW4oKSx0aGlzLnJlbmRlcigpLHRoaXN9LGUucHJvdG90eXBlLl9maWx0ZXJGb3JQcm9wZXJ0eT1mdW5jdGlvbih0KXtyZXR1cm4ieCI9PT10JiZ0aGlzLl9hdXRvQWRqdXN0WFNjYWxlRG9tYWluP3RoaXMuX21ha2VGaWx0ZXJCeVByb3BlcnR5KCJ5Iik6InkiIT09dCYmInkwIiE9PXR8fCF0aGlzLl9hdXRvQWRqdXN0WVNjYWxlRG9tYWluP251bGw6dGhpcy5fbWFrZUZpbHRlckJ5UHJvcGVydHkoIngiKX0sZS5wcm90b3R5cGUuX21ha2VGaWx0ZXJCeVByb3BlcnR5PWZ1bmN0aW9uKHQpe3ZhciBlPXRoaXMuX3Byb3BlcnR5QmluZGluZ3MuZ2V0KHQpO2lmKG51bGwhPWUpe3ZhciBuPWUuYWNjZXNzb3IsaT1lLnNjYWxlO2lmKG51bGwhPWkpcmV0dXJuIGZ1bmN0aW9uKHQsZSxyKXt2YXIgbz1pLnJhbmdlKCk7cmV0dXJuIHVtdC5NYXRoLmluUmFuZ2UoaS5zY2FsZShuKHQsZSxyKSksb1swXSxvWzFdKX19cmV0dXJuIG51bGx9LGUucHJvdG90eXBlLl91bmluc3RhbGxTY2FsZUZvcktleT1mdW5jdGlvbihuLGkpe3QucHJvdG90eXBlLl91bmluc3RhbGxTY2FsZUZvcktleS5jYWxsKHRoaXMsbixpKSxuLm9mZlVwZGF0ZShpPT09ZS5fWF9LRVk/dGhpcy5fYWRqdXN0WURvbWFpbk9uQ2hhbmdlRnJvbVhDYWxsYmFjazp0aGlzLl9hZGp1c3RYRG9tYWluT25DaGFuZ2VGcm9tWUNhbGxiYWNrKX0sZS5wcm90b3R5cGUuX2luc3RhbGxTY2FsZUZvcktleT1mdW5jdGlvbihuLGkpe3QucHJvdG90eXBlLl9pbnN0YWxsU2NhbGVGb3JLZXkuY2FsbCh0aGlzLG4saSksbi5vblVwZGF0ZShpPT09ZS5fWF9LRVk/dGhpcy5fYWRqdXN0WURvbWFpbk9uQ2hhbmdlRnJvbVhDYWxsYmFjazp0aGlzLl9hZGp1c3RYRG9tYWluT25DaGFuZ2VGcm9tWUNhbGxiYWNrKX0sZS5wcm90b3R5cGUuZGVzdHJveT1mdW5jdGlvbigpe3JldHVybiB0LnByb3RvdHlwZS5kZXN0cm95LmNhbGwodGhpcyksdGhpcy54KCkuc2NhbGUmJnRoaXMueCgpLnNjYWxlLm9mZlVwZGF0ZSh0aGlzLl9hZGp1c3RZRG9tYWluT25DaGFuZ2VGcm9tWENhbGxiYWNrKSx0aGlzLnkoKS5zY2FsZSYmdGhpcy55KCkuc2NhbGUub2ZmVXBkYXRlKHRoaXMuX2FkanVzdFhEb21haW5PbkNoYW5nZUZyb21ZQ2FsbGJhY2spLHRoaXN9LGUucHJvdG90eXBlLmF1dG9yYW5nZU1vZGU9ZnVuY3Rpb24odCl7aWYobnVsbD09dClyZXR1cm4gdGhpcy5fYXV0b0FkanVzdFhTY2FsZURvbWFpbj8ieCI6dGhpcy5fYXV0b0FkanVzdFlTY2FsZURvbWFpbj8ieSI6Im5vbmUiO3N3aXRjaCh0KXtjYXNlIngiOnRoaXMuX2F1dG9BZGp1c3RYU2NhbGVEb21haW49ITAsdGhpcy5fYXV0b0FkanVzdFlTY2FsZURvbWFpbj0hMSx0aGlzLl9hZGp1c3RYRG9tYWluT25DaGFuZ2VGcm9tWSgpO2JyZWFrO2Nhc2UieSI6dGhpcy5fYXV0b0FkanVzdFhTY2FsZURvbWFpbj0hMSx0aGlzLl9hdXRvQWRqdXN0WVNjYWxlRG9tYWluPSEwLHRoaXMuX2FkanVzdFlEb21haW5PbkNoYW5nZUZyb21YKCk7YnJlYWs7Y2FzZSJub25lIjp0aGlzLl9hdXRvQWRqdXN0WFNjYWxlRG9tYWluPSExLHRoaXMuX2F1dG9BZGp1c3RZU2NhbGVEb21haW49ITE7YnJlYWs7ZGVmYXVsdDp0aHJvdyBuZXcgRXJyb3IoIkludmFsaWQgc2NhbGUgbmFtZSAnIit0KyInLCBtdXN0IGJlICd4JywgJ3knIG9yICdub25lJyIpfXJldHVybiB0aGlzfSxlLnByb3RvdHlwZS5jb21wdXRlTGF5b3V0PWZ1bmN0aW9uKGUsbixpKXt0LnByb3RvdHlwZS5jb21wdXRlTGF5b3V0LmNhbGwodGhpcyxlLG4saSk7dmFyIHI9dGhpcy54KCksbz1yJiZyLnNjYWxlO251bGwhPW8mJm8ucmFuZ2UoWzAsdGhpcy53aWR0aCgpXSk7dmFyIGE9dGhpcy55KCkscz1hJiZhLnNjYWxlO3JldHVybiBudWxsIT1zJiZzLnJhbmdlKHMgaW5zdGFuY2VvZiBrbXQuQ2F0ZWdvcnk/WzAsdGhpcy5oZWlnaHQoKV06W3RoaXMuaGVpZ2h0KCksMF0pLHRoaXN9LGUucHJvdG90eXBlLl91cGRhdGVYRXh0ZW50c0FuZEF1dG9kb21haW49ZnVuY3Rpb24oKXt2YXIgdD10aGlzLngoKS5zY2FsZTtudWxsIT10JiZ0LmF1dG9Eb21haW4oKX0sZS5wcm90b3R5cGUuX3VwZGF0ZVlFeHRlbnRzQW5kQXV0b2RvbWFpbj1mdW5jdGlvbigpe3ZhciB0PXRoaXMueSgpLnNjYWxlO251bGwhPXQmJnQuYXV0b0RvbWFpbigpfSxlLnByb3RvdHlwZS5zaG93QWxsRGF0YT1mdW5jdGlvbigpe3JldHVybiB0aGlzLl91cGRhdGVYRXh0ZW50c0FuZEF1dG9kb21haW4oKSx0aGlzLl91cGRhdGVZRXh0ZW50c0FuZEF1dG9kb21haW4oKSx0aGlzfSxlLnByb3RvdHlwZS5fYWRqdXN0WURvbWFpbk9uQ2hhbmdlRnJvbVg9ZnVuY3Rpb24oKXt0aGlzLl9wcm9qZWN0b3JzUmVhZHkoKSYmdGhpcy5fYXV0b0FkanVzdFlTY2FsZURvbWFpbiYmdGhpcy5fdXBkYXRlWUV4dGVudHNBbmRBdXRvZG9tYWluKCl9LGUucHJvdG90eXBlLl9hZGp1c3RYRG9tYWluT25DaGFuZ2VGcm9tWT1mdW5jdGlvbigpe3RoaXMuX3Byb2plY3RvcnNSZWFkeSgpJiZ0aGlzLl9hdXRvQWRqdXN0WFNjYWxlRG9tYWluJiZ0aGlzLl91cGRhdGVYRXh0ZW50c0FuZEF1dG9kb21haW4oKX0sZS5wcm90b3R5cGUuX3Byb2plY3RvcnNSZWFkeT1mdW5jdGlvbigpe3ZhciB0PXRoaXMueCgpLGU9dGhpcy55KCk7cmV0dXJuIG51bGwhPXQmJm51bGwhPXQuYWNjZXNzb3ImJm51bGwhPWUmJm51bGwhPWUuYWNjZXNzb3J9LGUucHJvdG90eXBlLl9waXhlbFBvaW50PWZ1bmN0aW9uKHQsZSxuKXt2YXIgaT1wZ3QuUGxvdC5fc2NhbGVkQWNjZXNzb3IodGhpcy54KCkpLHI9cGd0LlBsb3QuX3NjYWxlZEFjY2Vzc29yKHRoaXMueSgpKTtyZXR1cm57eDppKHQsZSxuKSx5OnIodCxlLG4pfX0sZS5wcm90b3R5cGUuX2dldERhdGFUb0RyYXc9ZnVuY3Rpb24oKXt2YXIgZT10aGlzLG49dC5wcm90b3R5cGUuX2dldERhdGFUb0RyYXcuY2FsbCh0aGlzKSxpPXRoaXMuYXR0cigiZGVmaW5lZCIpO3JldHVybiB0aGlzLmRhdGFzZXRzKCkuZm9yRWFjaCgoZnVuY3Rpb24odCl7bi5zZXQodCxuLmdldCh0KS5maWx0ZXIoKGZ1bmN0aW9uKG4scil7cmV0dXJuKGZ1bmN0aW9uKHQsbixyKXt2YXIgbz1wZ3QuUGxvdC5fc2NhbGVkQWNjZXNzb3IoZS54KCkpKHQsbixyKSxhPXBndC5QbG90Ll9zY2FsZWRBY2Nlc3NvcihlLnkoKSkodCxuLHIpO3JldHVybighaXx8ITEhPT1pLmFjY2Vzc29yKHQsbixyKSkmJnVtdC5NYXRoLmlzVmFsaWROdW1iZXIobykmJnVtdC5NYXRoLmlzVmFsaWROdW1iZXIoYSl9KShuLHIsdCl9KSkpfSkpLG59LGUuX1hfS0VZPSJ4IixlLl9ZX0tFWT0ieSIsZX0pKHBndC5QbG90KTtlLlhZUGxvdD1ufSkpLExndD1iZSgoZnVuY3Rpb24odCxlKXsKLyoqCiAgICAgKiBDb3B5cmlnaHQgMjAxNC1wcmVzZW50IFBhbGFudGlyIFRlY2hub2xvZ2llcwogICAgICogQGxpY2Vuc2UgTUlUCiAgICAgKi8KT2JqZWN0LmRlZmluZVByb3BlcnR5KGUsIl9fZXNNb2R1bGUiLHt2YWx1ZTohMH0pO3ZhciBuPXtsaW5lYXI6VWh0LmN1cnZlTGluZWFyLGxpbmVhckNsb3NlZDpVaHQuY3VydmVMaW5lYXJDbG9zZWQsc3RlcDpVaHQuY3VydmVTdGVwLHN0ZXBCZWZvcmU6VWh0LmN1cnZlU3RlcEJlZm9yZSxzdGVwQWZ0ZXI6VWh0LmN1cnZlU3RlcEFmdGVyLGJhc2lzOlVodC5jdXJ2ZUJhc2lzLGJhc2lzT3BlbjpVaHQuY3VydmVCYXNpc09wZW4sYmFzaXNDbG9zZWQ6VWh0LmN1cnZlQmFzaXNDbG9zZWQsYnVuZGxlOlVodC5jdXJ2ZUJ1bmRsZSxjYXJkaW5hbDpVaHQuY3VydmVDYXJkaW5hbCxjYXJkaW5hbE9wZW46VWh0LmN1cnZlQ2FyZGluYWxPcGVuLGNhcmRpbmFsQ2xvc2VkOlVodC5jdXJ2ZUNhcmRpbmFsQ2xvc2VkLG1vbm90b25lOlVodC5jdXJ2ZU1vbm90b25lWH07ZS5DdXJ2ZU5hbWU9dmZ0Lm1ha2VFbnVtKFsibGluZWFyIiwibGluZWFyQ2xvc2VkIiwic3RlcCIsInN0ZXBCZWZvcmUiLCJzdGVwQWZ0ZXIiLCJiYXNpcyIsImJhc2lzT3BlbiIsImJhc2lzQ2xvc2VkIiwiYnVuZGxlIiwiY2FyZGluYWwiLCJjYXJkaW5hbE9wZW4iLCJjYXJkaW5hbENsb3NlZCIsIm1vbm90b25lIl0pO3ZhciBpPShmdW5jdGlvbih0KXtmdW5jdGlvbiBlKCl7dmFyIGU9dC5jYWxsKHRoaXMpfHx0aGlzO2UuX2N1cnZlPSJsaW5lYXIiLGUuX2F1dG9yYW5nZVNtb290aD0hMSxlLl9jcm9wcGVkUmVuZGVyaW5nRW5hYmxlZD0hMCxlLl9jb2xsYXBzZURlbnNlVmVydGljYWxMaW5lc0VuYWJsZWQ9ITEsZS5fZG93bnNhbXBsaW5nRW5hYmxlZD0hMSxlLmFkZENsYXNzKCJsaW5lLXBsb3QiKTt2YXIgbj1uZXcgTWZ0LkVhc2luZztyZXR1cm4gbi5zdGVwRHVyYXRpb24ocGd0LlBsb3QuX0FOSU1BVElPTl9NQVhfRFVSQVRJT04pLG4uZWFzaW5nTW9kZSgiZXhwSW5PdXQiKSxuLm1heFRvdGFsRHVyYXRpb24ocGd0LlBsb3QuX0FOSU1BVElPTl9NQVhfRFVSQVRJT04pLGUuYW5pbWF0b3IoVmd0LkFuaW1hdG9yLk1BSU4sbiksZS5hdHRyKCJzdHJva2UiLChuZXcga210LkNvbG9yKS5yYW5nZSgpWzBdKSxlLmF0dHIoInN0cm9rZS13aWR0aCIsIjJweCIpLGV9cmV0dXJuIFNmdC5fX2V4dGVuZHMoZSx0KSxlLnByb3RvdHlwZS54PWZ1bmN0aW9uKGUsbixpKXtyZXR1cm4gbnVsbD09ZT90LnByb3RvdHlwZS54LmNhbGwodGhpcyk6KHQucHJvdG90eXBlLnguY2FsbCh0aGlzLGUsbixpKSx0aGlzLl9zZXRTY2FsZVNuYXBwaW5nKCksdGhpcyl9LGUucHJvdG90eXBlLnk9ZnVuY3Rpb24oZSxuLGkpe3JldHVybiBudWxsPT1lP3QucHJvdG90eXBlLnkuY2FsbCh0aGlzKToodC5wcm90b3R5cGUueS5jYWxsKHRoaXMsZSxuLGkpLHRoaXMuX3NldFNjYWxlU25hcHBpbmcoKSx0aGlzKX0sZS5wcm90b3R5cGUuYXV0b3JhbmdlTW9kZT1mdW5jdGlvbihlKXtyZXR1cm4gbnVsbD09ZT90LnByb3RvdHlwZS5hdXRvcmFuZ2VNb2RlLmNhbGwodGhpcyk6KHQucHJvdG90eXBlLmF1dG9yYW5nZU1vZGUuY2FsbCh0aGlzLGUpLHRoaXMuX3NldFNjYWxlU25hcHBpbmcoKSx0aGlzKX0sZS5wcm90b3R5cGUuYXV0b3JhbmdlU21vb3RoPWZ1bmN0aW9uKHQpe3JldHVybiBudWxsPT10P3RoaXMuX2F1dG9yYW5nZVNtb290aDoodGhpcy5fYXV0b3JhbmdlU21vb3RoPXQsdGhpcy5fc2V0U2NhbGVTbmFwcGluZygpLHRoaXMpfSxlLnByb3RvdHlwZS5fc2V0U2NhbGVTbmFwcGluZz1mdW5jdGlvbigpeyJ4Ij09PXRoaXMuYXV0b3JhbmdlTW9kZSgpJiZ0aGlzLngoKSYmdGhpcy54KCkuc2NhbGUmJnRoaXMueCgpLnNjYWxlIGluc3RhbmNlb2YgTW10LlF1YW50aXRhdGl2ZVNjYWxlJiZ0aGlzLngoKS5zY2FsZS5zbmFwcGluZ0RvbWFpbkVuYWJsZWQoIXRoaXMuYXV0b3JhbmdlU21vb3RoKCkpLCJ5Ij09PXRoaXMuYXV0b3JhbmdlTW9kZSgpJiZ0aGlzLnkoKSYmdGhpcy55KCkuc2NhbGUmJnRoaXMueSgpLnNjYWxlIGluc3RhbmNlb2YgTW10LlF1YW50aXRhdGl2ZVNjYWxlJiZ0aGlzLnkoKS5zY2FsZS5zbmFwcGluZ0RvbWFpbkVuYWJsZWQoIXRoaXMuYXV0b3JhbmdlU21vb3RoKCkpfSxlLnByb3RvdHlwZS5jdXJ2ZT1mdW5jdGlvbih0KXtyZXR1cm4gbnVsbD09dD90aGlzLl9jdXJ2ZToodGhpcy5fY3VydmU9dCx0aGlzLnJlbmRlcigpLHRoaXMpfSxlLnByb3RvdHlwZS5kb3duc2FtcGxpbmdFbmFibGVkPWZ1bmN0aW9uKHQpe3JldHVybiBudWxsPT10P3RoaXMuX2Rvd25zYW1wbGluZ0VuYWJsZWQ6KHRoaXMuX2Rvd25zYW1wbGluZ0VuYWJsZWQ9dCx0aGlzKX0sZS5wcm90b3R5cGUuY3JvcHBlZFJlbmRlcmluZ0VuYWJsZWQ9ZnVuY3Rpb24odCl7cmV0dXJuIG51bGw9PXQ/dGhpcy5fY3JvcHBlZFJlbmRlcmluZ0VuYWJsZWQ6KHRoaXMuX2Nyb3BwZWRSZW5kZXJpbmdFbmFibGVkPXQsdGhpcy5yZW5kZXIoKSx0aGlzKX0sZS5wcm90b3R5cGUuY29sbGFwc2VEZW5zZUxpbmVzRW5hYmxlZD1mdW5jdGlvbih0KXtyZXR1cm4gbnVsbD09dD90aGlzLl9jb2xsYXBzZURlbnNlVmVydGljYWxMaW5lc0VuYWJsZWQ6KHRoaXMuX2NvbGxhcHNlRGVuc2VWZXJ0aWNhbExpbmVzRW5hYmxlZD10LHRoaXMucmVuZGVyKCksdGhpcyl9LGUucHJvdG90eXBlLl9jcmVhdGVEcmF3ZXI9ZnVuY3Rpb24odCl7dmFyIGU9dGhpcztyZXR1cm4gbmV3IHVndC5Qcm94eURyYXdlcigoZnVuY3Rpb24oKXtyZXR1cm4gbmV3IFNndC5MaW5lU1ZHRHJhd2VyfSksKGZ1bmN0aW9uKG4pe3JldHVybiBuZXcgQ2d0LkNhbnZhc0RyYXdlcihuLFNndC5tYWtlTGluZUNhbnZhc0RyYXdTdGVwKChmdW5jdGlvbigpe3JldHVybiBlLl9kM0xpbmVGYWN0b3J5KHQpfSkpKX0pKX0sZS5wcm90b3R5cGUuZ2V0RXh0ZW50c0ZvclByb3BlcnR5PWZ1bmN0aW9uKGUpe3ZhciBuPXQucHJvdG90eXBlLmdldEV4dGVudHNGb3JQcm9wZXJ0eS5jYWxsKHRoaXMsZSk7aWYoIXRoaXMuX2F1dG9yYW5nZVNtb290aClyZXR1cm4gbjtpZih0aGlzLmF1dG9yYW5nZU1vZGUoKSE9PWUpcmV0dXJuIG47aWYoIngiIT09dGhpcy5hdXRvcmFuZ2VNb2RlKCkmJiJ5IiE9PXRoaXMuYXV0b3JhbmdlTW9kZSgpKXJldHVybiBuO3ZhciBpLHI9dGhpcy5fZ2V0RWRnZUludGVyc2VjdGlvblBvaW50cygpO3JldHVybiBpPSJ5Ij09PXRoaXMuYXV0b3JhbmdlTW9kZSgpP3IubGVmdC5jb25jYXQoci5yaWdodCkubWFwKChmdW5jdGlvbih0KXtyZXR1cm4gdC55fSkpOnIudG9wLmNvbmNhdChyLmJvdHRvbSkubWFwKChmdW5jdGlvbih0KXtyZXR1cm4gdC54fSkpLG4ubWFwKChmdW5jdGlvbih0KXtyZXR1cm4gVWh0LmV4dGVudChVaHQubWVyZ2UoW3QsaV0pKX0pKX0sZS5wcm90b3R5cGUuX2dldEVkZ2VJbnRlcnNlY3Rpb25Qb2ludHM9ZnVuY3Rpb24oKXt2YXIgdD10aGlzO2lmKCEodGhpcy55KCkuc2NhbGUgaW5zdGFuY2VvZiBNbXQuUXVhbnRpdGF0aXZlU2NhbGUmJnRoaXMueCgpLnNjYWxlIGluc3RhbmNlb2YgTW10LlF1YW50aXRhdGl2ZVNjYWxlKSlyZXR1cm57bGVmdDpbXSxyaWdodDpbXSx0b3A6W10sYm90dG9tOltdfTt2YXIgZT10aGlzLnkoKS5zY2FsZSxuPXRoaXMueCgpLnNjYWxlLGk9e2xlZnQ6W10scmlnaHQ6W10sdG9wOltdLGJvdHRvbTpbXX0scj1uLnNjYWxlKG4uZG9tYWluKClbMF0pLG89bi5zY2FsZShuLmRvbWFpbigpWzFdKSxhPWUuc2NhbGUoZS5kb21haW4oKVswXSkscz1lLnNjYWxlKGUuZG9tYWluKClbMV0pO3JldHVybiB0aGlzLmRhdGFzZXRzKCkuZm9yRWFjaCgoZnVuY3Rpb24obCl7Zm9yKHZhciBjLHUsaCxkLHA9bC5kYXRhKCksZj0xO2Y8cC5sZW5ndGg7ZisrKWM9aHx8bi5zY2FsZSh0LngoKS5hY2Nlc3NvcihwW2YtMV0sZi0xLGwpKSx1PWR8fGUuc2NhbGUodC55KCkuYWNjZXNzb3IocFtmLTFdLGYtMSxsKSksaD1uLnNjYWxlKHQueCgpLmFjY2Vzc29yKHBbZl0sZixsKSksZD1lLnNjYWxlKHQueSgpLmFjY2Vzc29yKHBbZl0sZixsKSksYzxyPT1yPD1oJiZpLmxlZnQucHVzaCh7eDpyLHk6ZS5pbnZlcnQodSsoci1jKSooZC11KS8oaC1jKSl9KSxjPG89PW88PWgmJmkucmlnaHQucHVzaCh7eDpvLHk6ZS5pbnZlcnQodSsoby1jKSooZC11KS8oaC1jKSl9KSx1PHM9PXM8PWQmJmkudG9wLnB1c2goe3g6bi5pbnZlcnQoYysocy11KSooaC1jKS8oZC11KSkseTpzfSksdTxhPT1hPD1kJiZpLmJvdHRvbS5wdXNoKHt4Om4uaW52ZXJ0KGMrKGEtdSkqKGgtYykvKGQtdSkpLHk6YX0pfSkpLGl9LGUucHJvdG90eXBlLl9nZXRSZXNldFlGdW5jdGlvbj1mdW5jdGlvbigpe3ZhciB0PXRoaXMueSgpLnNjYWxlLmRvbWFpbigpLGU9TWF0aC5tYXgodFswXSx0WzFdKSxuPU1hdGgubWluKHRbMF0sdFsxXSksaT1lPDAmJmV8fG4+MCYmbnx8MCxyPXRoaXMueSgpLnNjYWxlLnNjYWxlKGkpO3JldHVybiBmdW5jdGlvbih0LGUsbil7cmV0dXJuIHJ9fSxlLnByb3RvdHlwZS5fZ2VuZXJhdGVEcmF3U3RlcHM9ZnVuY3Rpb24oKXt2YXIgdD1bXTtpZih0aGlzLl9hbmltYXRlT25OZXh0UmVuZGVyKCkpe3ZhciBlPXRoaXMuX2dldEF0dHJUb1Byb2plY3RvcigpO2UuZD10aGlzLl9jb25zdHJ1Y3RMaW5lUHJvamVjdG9yKHBndC5QbG90Ll9zY2FsZWRBY2Nlc3Nvcih0aGlzLngoKSksdGhpcy5fZ2V0UmVzZXRZRnVuY3Rpb24oKSksdC5wdXNoKHthdHRyVG9Qcm9qZWN0b3I6ZSxhbmltYXRvcjp0aGlzLl9nZXRBbmltYXRvcihWZ3QuQW5pbWF0b3IuUkVTRVQpfSl9cmV0dXJuIHQucHVzaCh7YXR0clRvUHJvamVjdG9yOnRoaXMuX2dldEF0dHJUb1Byb2plY3RvcigpLGFuaW1hdG9yOnRoaXMuX2dldEFuaW1hdG9yKFZndC5BbmltYXRvci5NQUlOKX0pLHR9LGUucHJvdG90eXBlLl9nZW5lcmF0ZUF0dHJUb1Byb2plY3Rvcj1mdW5jdGlvbigpe3ZhciBlPXQucHJvdG90eXBlLl9nZW5lcmF0ZUF0dHJUb1Byb2plY3Rvci5jYWxsKHRoaXMpO3JldHVybiBPYmplY3Qua2V5cyhlKS5mb3JFYWNoKChmdW5jdGlvbih0KXtpZigiZCIhPT10KXt2YXIgbj1lW3RdO2VbdF09ZnVuY3Rpb24odCxlLGkpe3JldHVybiB0Lmxlbmd0aD4wP24odFswXSxlLGkpOm51bGx9fX0pKSxlfSxlLnByb3RvdHlwZS5lbnRpdGllc0F0PWZ1bmN0aW9uKHQpe3ZhciBlPXRoaXMuZW50aXR5TmVhcmVzdEJ5WFRoZW5ZKHQpO3JldHVybiBudWxsIT1lP1tlXTpbXX0sZS5wcm90b3R5cGUuZW50aXR5TmVhcmVzdEJ5WFRoZW5ZPWZ1bmN0aW9uKHQpe2Zvcih2YXIgZSxuPTEvMCxpPTEvMCxyPXRoaXMuYm91bmRzKCksbz10aGlzLmVudGl0aWVzKCksYT1vLmxlbmd0aCxzPTA7czxhO3MrKyl7dmFyIGw9b1tzXTtpZih1bXQuTWF0aC53aXRoaW4obC5wb3NpdGlvbixyKSl7dmFyIGM9TWF0aC5hYnModC54LWwucG9zaXRpb24ueCksdT1NYXRoLmFicyh0LnktbC5wb3NpdGlvbi55KTsoYzxufHxjPT09biYmdTxpKSYmKGU9bCxuPWMsaT11KX19cmV0dXJuIGV9LGUucHJvdG90eXBlLl9wcm9wZXJ0eVByb2plY3RvcnM9ZnVuY3Rpb24oKXt2YXIgZT10LnByb3RvdHlwZS5fcHJvcGVydHlQcm9qZWN0b3JzLmNhbGwodGhpcyk7cmV0dXJuIGUuZD10aGlzLl9jb25zdHJ1Y3RMaW5lUHJvamVjdG9yKHBndC5QbG90Ll9zY2FsZWRBY2Nlc3Nvcih0aGlzLngoKSkscGd0LlBsb3QuX3NjYWxlZEFjY2Vzc29yKHRoaXMueSgpKSksZX0sZS5wcm90b3R5cGUuX2NvbnN0cnVjdExpbmVQcm9qZWN0b3I9ZnVuY3Rpb24odCxlKXt2YXIgbj10aGlzO3JldHVybiBmdW5jdGlvbihpLHIsbyl7cmV0dXJuIG4uX2QzTGluZUZhY3Rvcnkobyx0LGUpKGkpfX0sZS5wcm90b3R5cGUuX2QzTGluZUZhY3Rvcnk9ZnVuY3Rpb24odCxlLG4pe3JldHVybiB2b2lkIDA9PT1lJiYoZT1wZ3QuUGxvdC5fc2NhbGVkQWNjZXNzb3IodGhpcy54KCkpKSx2b2lkIDA9PT1uJiYobj1wZ3QuUGxvdC5fc2NhbGVkQWNjZXNzb3IodGhpcy55KCkpKSxVaHQubGluZSgpLngoKGZ1bmN0aW9uKG4saSl7cmV0dXJuIGUobixpLHQpfSkpLnkoKGZ1bmN0aW9uKGUsaSl7cmV0dXJuIG4oZSxpLHQpfSkpLmN1cnZlKHRoaXMuX2dldEN1cnZlRmFjdG9yeSgpKS5kZWZpbmVkKChmdW5jdGlvbihpLHIpe3JldHVybihmdW5jdGlvbih0LGkscil7dmFyIG89ZSh0LGksciksYT1uKHQsaSxyKTtyZXR1cm4gdW10Lk1hdGguaXNWYWxpZE51bWJlcihvKSYmdW10Lk1hdGguaXNWYWxpZE51bWJlcihhKX0pKGkscix0KX0pKX0sZS5wcm90b3R5cGUuX2dldEN1cnZlRmFjdG9yeT1mdW5jdGlvbigpe3ZhciB0PXRoaXMuY3VydmUoKTtpZigic3RyaW5nIj09dHlwZW9mIHQpe3ZhciBlPW5bdF07cmV0dXJuIG51bGw9PWU/bi5saW5lYXI6ZX1yZXR1cm4gdH0sZS5wcm90b3R5cGUuX2dldERhdGFUb0RyYXc9ZnVuY3Rpb24oKXt2YXIgdD10aGlzLGU9bmV3IHVtdC5NYXA7cmV0dXJuIHRoaXMuZGF0YXNldHMoKS5mb3JFYWNoKChmdW5jdGlvbihuKXt2YXIgaT1uLmRhdGEoKTtpZih0Ll9jcm9wcGVkUmVuZGVyaW5nRW5hYmxlZHx8dC5fZG93bnNhbXBsaW5nRW5hYmxlZCl7Zm9yKHZhciByPVtdLG89aS5sZW5ndGgsYT0wO2E8bzthKyspclthXT1hO3QuX2Nyb3BwZWRSZW5kZXJpbmdFbmFibGVkJiYocj10Ll9maWx0ZXJDcm9wcGVkUmVuZGVyaW5nKG4scikpLHQuX2Rvd25zYW1wbGluZ0VuYWJsZWQmJihyPXQuX2ZpbHRlckRvd25zYW1wbGluZyhuLHIpKSx0Ll9jb2xsYXBzZURlbnNlVmVydGljYWxMaW5lc0VuYWJsZWQmJihyPXQuX2ZpbHRlckRlbnNlTGluZXMobixyKSk7dmFyIHM9W10sbD1yLmxlbmd0aDtmb3IoYT0wO2E8bDthKyspc1thXT1pW3JbYV1dO2Uuc2V0KG4sW3NdKX1lbHNlIGUuc2V0KG4sW2ldKX0pKSxlfSxlLnByb3RvdHlwZS5fZmlsdGVyQ3JvcHBlZFJlbmRlcmluZz1mdW5jdGlvbih0LGUpe2Zvcih2YXIgbj10aGlzLGk9cGd0LlBsb3QuX3NjYWxlZEFjY2Vzc29yKHRoaXMueCgpKSxyPXBndC5QbG90Ll9zY2FsZWRBY2Nlc3Nvcih0aGlzLnkoKSksbz10LmRhdGEoKSxhPVtdLHM9ZnVuY3Rpb24odCxlKXtyZXR1cm4gdW10Lk1hdGguaW5SYW5nZSh0LDAsbi53aWR0aCgpKSYmdW10Lk1hdGguaW5SYW5nZShlLDAsbi5oZWlnaHQoKSl9LGw9MDtsPGUubGVuZ3RoO2wrKyl7dmFyIGM9cyhpKG9bZVtsXV0sZVtsXSx0KSxyKG9bZVtsXV0sZVtsXSx0KSk7aWYoIWMmJm51bGwhPWVbbC0xXSYmbnVsbCE9b1tlW2wtMV1dKXt2YXIgdT1pKG9bZVtsLTFdXSxlW2wtMV0sdCksaD1yKG9bZVtsLTFdXSxlW2wtMV0sdCk7Yz1jfHxzKHUsaCl9aWYoIWMmJm51bGwhPWVbbCsxXSYmbnVsbCE9b1tlW2wrMV1dKXt2YXIgZD1pKG9bZVtsKzFdXSxlW2wrMV0sdCkscD1yKG9bZVtsKzFdXSxlW2wrMV0sdCk7Yz1jfHxzKGQscCl9YyYmYS5wdXNoKGVbbF0pfXJldHVybiBhfSxlLnByb3RvdHlwZS5fZmlsdGVyRG93bnNhbXBsaW5nPWZ1bmN0aW9uKHQsZSl7aWYoMD09PWUubGVuZ3RoKXJldHVybltdO2Zvcih2YXIgbj10LmRhdGEoKSxpPXBndC5QbG90Ll9zY2FsZWRBY2Nlc3Nvcih0aGlzLngoKSkscj1wZ3QuUGxvdC5fc2NhbGVkQWNjZXNzb3IodGhpcy55KCkpLG89W2VbMF1dLGE9ZnVuY3Rpb24obyxhKXt2YXIgcz1pKG5bZVtvXV0sZVtvXSx0KSxsPXIobltlW29dXSxlW29dLHQpLGM9aShuW2VbbysxXV0sZVtvKzFdLHQpLHU9cihuW2VbbysxXV0sZVtvKzFdLHQpO2lmKGE9PT0xLzApcmV0dXJuIE1hdGguZmxvb3Iocyk9PT1NYXRoLmZsb29yKGMpO3ZhciBoPWwrKGMtcykqYTtyZXR1cm4gTWF0aC5mbG9vcih1KT09PU1hdGguZmxvb3IoaCl9LHM9MDtzPGUubGVuZ3RoLTE7KXtmb3IodmFyIGw9ZVtzXSxjPWkobltlW3NdXSxlW3NdLHQpLHU9cihuW2Vbc11dLGVbc10sdCksaD1pKG5bZVtzKzFdXSxlW3MrMV0sdCksZD1yKG5bZVtzKzFdXSxlW3MrMV0sdCkscD1NYXRoLmZsb29yKGMpPT09TWF0aC5mbG9vcihoKT8xLzA6KGQtdSkvKGgtYyksZj1lW3NdLG09cD09PTEvMD91OmMsZz1mLF89bSx5PSEwO3M8ZS5sZW5ndGgtMSYmKHl8fGEocyxwKSk7KXtzKysseT0hMTt2YXIgdj1wPT09MS8wP3IobltlW3NdXSxlW3NdLHQpOmkobltlW3NdXSxlW3NdLHQpO3Y+XyYmKF89dixnPWVbc10pLHY8bSYmKG09dixmPWVbc10pfXZhciBiPWVbc107ZiE9PWwmJm8ucHVzaChmKSxnIT09ZiYmZyE9PWwmJm8ucHVzaChnKSxiIT09bCYmYiE9PWYmJmIhPT1nJiZvLnB1c2goYil9cmV0dXJuIG99LGUucHJvdG90eXBlLl9maWx0ZXJEZW5zZUxpbmVzPWZ1bmN0aW9uKHQsZSl7aWYoMD09PWUubGVuZ3RoKXJldHVybltdO3ZhciBuPXQuZGF0YSgpLGk9cGd0LlBsb3QuX3NjYWxlZEFjY2Vzc29yKHRoaXMueCgpKSxyPXBndC5QbG90Ll9zY2FsZWRBY2Nlc3Nvcih0aGlzLnkoKSk7cmV0dXJuIHRoaXMuX2J1Y2tldEJ5WCh0LGUsKGZ1bmN0aW9uKGUpe3JldHVybiBpKG5bZV0sZSx0KX0pLChmdW5jdGlvbihlKXtyZXR1cm4gcihuW2VdLGUsdCl9KSl9LGUucHJvdG90eXBlLl9idWNrZXRCeVg9ZnVuY3Rpb24odCxlLG4saSl7Zm9yKHZhciByPVtdLG89dC5kYXRhKCksYT1udWxsLHM9ZS5sZW5ndGgsbD0wO2w8PXM7KytsKXt2YXIgYz1lW2xdO2lmKG51bGwhPW9bY10pe3ZhciB1PU1hdGguZmxvb3IobihjKSksaD1pKGMpO251bGw9PWE/YT1uZXcgdW10LkJ1Y2tldChjLHUsaCk6YS5pc0luQnVja2V0KHUpP2EuYWRkVG9CdWNrZXQoaCxjKTooci5wdXNoLmFwcGx5KHIsYS5nZXRVbmlxdWVJbmRpY2VzKCkpLGE9bmV3IHVtdC5CdWNrZXQoYyx1LGgpKX19cmV0dXJuIG51bGwhPWEmJnIucHVzaC5hcHBseShyLGEuZ2V0VW5pcXVlSW5kaWNlcygpKSxyfSxlfSkoa2d0LlhZUGxvdCk7ZS5MaW5lPWl9KSksUGd0PWJlKChmdW5jdGlvbih0LGUpewovKioKICAgICAqIENvcHlyaWdodCAyMDE0LXByZXNlbnQgUGFsYW50aXIgVGVjaG5vbG9naWVzCiAgICAgKiBAbGljZW5zZSBNSVQKICAgICAqLwpPYmplY3QuZGVmaW5lUHJvcGVydHkoZSwiX19lc01vZHVsZSIse3ZhbHVlOiEwfSk7dmFyIG49KGZ1bmN0aW9uKHQpe2Z1bmN0aW9uIGUoKXt2YXIgZT10LmNhbGwodGhpcyl8fHRoaXM7cmV0dXJuIGUuYWRkQ2xhc3MoImFyZWEtcGxvdCIpLGUueTAoMCksZS5hdHRyKCJmaWxsLW9wYWNpdHkiLC4yNSksZS5hdHRyKCJmaWxsIiwobmV3IGttdC5Db2xvcikucmFuZ2UoKVswXSksZS5fbGluZURyYXdlcnM9bmV3IHVtdC5NYXAsZX1yZXR1cm4gU2Z0Ll9fZXh0ZW5kcyhlLHQpLGUucHJvdG90eXBlLnk9ZnVuY3Rpb24obixpKXtpZihudWxsPT1uKXJldHVybiB0LnByb3RvdHlwZS55LmNhbGwodGhpcyk7aWYobnVsbD09aT90LnByb3RvdHlwZS55LmNhbGwodGhpcyxuKTp0LnByb3RvdHlwZS55LmNhbGwodGhpcyxuLGkpLG51bGwhPWkpe3ZhciByPXRoaXMueTAoKS5hY2Nlc3NvcjtudWxsIT1yJiZ0aGlzLl9iaW5kUHJvcGVydHkoZS5fWTBfS0VZLHIsaSksdGhpcy5fdXBkYXRlWVNjYWxlKCl9cmV0dXJuIHRoaXN9LGUucHJvdG90eXBlLnkwPWZ1bmN0aW9uKHQpe2lmKG51bGw9PXQpcmV0dXJuIHRoaXMuX3Byb3BlcnR5QmluZGluZ3MuZ2V0KGUuX1kwX0tFWSk7dmFyIG49dGhpcy55KCk7cmV0dXJuIHRoaXMuX2JpbmRQcm9wZXJ0eShlLl9ZMF9LRVksdCxuJiZuLnNjYWxlKSx0aGlzLl91cGRhdGVZU2NhbGUoKSx0aGlzLnJlbmRlcigpLHRoaXN9LGUucHJvdG90eXBlLl9vbkRhdGFzZXRVcGRhdGU9ZnVuY3Rpb24oKXt0LnByb3RvdHlwZS5fb25EYXRhc2V0VXBkYXRlLmNhbGwodGhpcyksdGhpcy5fdXBkYXRlWVNjYWxlKCl9LGUucHJvdG90eXBlLl9hZGREYXRhc2V0PWZ1bmN0aW9uKGUpe3ZhciBuPXRoaXM7cmV0dXJuIHRoaXMuX2xpbmVEcmF3ZXJzLnNldChlLG5ldyBDZ3QuUHJveHlEcmF3ZXIoKGZ1bmN0aW9uKCl7cmV0dXJuIG5ldyBTZ3QuTGluZVNWR0RyYXdlcn0pLChmdW5jdGlvbih0KXtyZXR1cm4gbmV3IENndC5DYW52YXNEcmF3ZXIodCxTZ3QubWFrZUxpbmVDYW52YXNEcmF3U3RlcCgoZnVuY3Rpb24oKXt2YXIgdD1wZ3QuUGxvdC5fc2NhbGVkQWNjZXNzb3Iobi54KCkpLGk9cGd0LlBsb3QuX3NjYWxlZEFjY2Vzc29yKG4ueSgpKTtyZXR1cm4gbi5fZDNMaW5lRmFjdG9yeShlLHQsaSl9KSkpfSkpKSx0LnByb3RvdHlwZS5fYWRkRGF0YXNldC5jYWxsKHRoaXMsZSksdGhpc30sZS5wcm90b3R5cGUuX2NyZWF0ZU5vZGVzRm9yRGF0YXNldD1mdW5jdGlvbihlKXt0LnByb3RvdHlwZS5fY3JlYXRlTm9kZXNGb3JEYXRhc2V0LmNhbGwodGhpcyxlKTt2YXIgbj10aGlzLl9saW5lRHJhd2Vycy5nZXQoZSk7cmV0dXJuInN2ZyI9PT10aGlzLnJlbmRlcmVyKCk/bi51c2VTVkcodGhpcy5fcmVuZGVyQXJlYSk6bi51c2VDYW52YXModGhpcy5fY2FudmFzKSxufSxlLnByb3RvdHlwZS5fcmVtb3ZlRGF0YXNldE5vZGVzPWZ1bmN0aW9uKGUpe3QucHJvdG90eXBlLl9yZW1vdmVEYXRhc2V0Tm9kZXMuY2FsbCh0aGlzLGUpLHRoaXMuX2xpbmVEcmF3ZXJzLmdldChlKS5yZW1vdmUoKX0sZS5wcm90b3R5cGUuX2FkZGl0aW9uYWxQYWludD1mdW5jdGlvbigpe3ZhciB0PXRoaXMsZT10aGlzLl9nZW5lcmF0ZUxpbmVEcmF3U3RlcHMoKSxuPXRoaXMuX2dldERhdGFUb0RyYXcoKTt0aGlzLmRhdGFzZXRzKCkuZm9yRWFjaCgoZnVuY3Rpb24oaSl7dmFyIHI9cGd0LlBsb3QuYXBwbHlEcmF3U3RlcHMoZSxpKTt0Ll9saW5lRHJhd2Vycy5nZXQoaSkuZHJhdyhuLmdldChpKSxyKX0pKX0sZS5wcm90b3R5cGUuX2dlbmVyYXRlTGluZURyYXdTdGVwcz1mdW5jdGlvbigpe3ZhciB0PVtdO2lmKHRoaXMuX2FuaW1hdGVPbk5leHRSZW5kZXIoKSl7dmFyIGU9dGhpcy5fZ2VuZXJhdGVMaW5lQXR0clRvUHJvamVjdG9yKCk7ZS5kPXRoaXMuX2NvbnN0cnVjdExpbmVQcm9qZWN0b3IocGd0LlBsb3QuX3NjYWxlZEFjY2Vzc29yKHRoaXMueCgpKSx0aGlzLl9nZXRSZXNldFlGdW5jdGlvbigpKSx0LnB1c2goe2F0dHJUb1Byb2plY3RvcjplLGFuaW1hdG9yOnRoaXMuX2dldEFuaW1hdG9yKFZndC5BbmltYXRvci5SRVNFVCl9KX1yZXR1cm4gdC5wdXNoKHthdHRyVG9Qcm9qZWN0b3I6dGhpcy5fZ2VuZXJhdGVMaW5lQXR0clRvUHJvamVjdG9yKCksYW5pbWF0b3I6dGhpcy5fZ2V0QW5pbWF0b3IoVmd0LkFuaW1hdG9yLk1BSU4pfSksdH0sZS5wcm90b3R5cGUuX2dlbmVyYXRlTGluZUF0dHJUb1Byb2plY3Rvcj1mdW5jdGlvbigpe3ZhciB0PXRoaXMuX2dldEF0dHJUb1Byb2plY3RvcigpO3JldHVybiB0LmQ9dGhpcy5fY29uc3RydWN0TGluZVByb2plY3RvcihwZ3QuUGxvdC5fc2NhbGVkQWNjZXNzb3IodGhpcy54KCkpLHBndC5QbG90Ll9zY2FsZWRBY2Nlc3Nvcih0aGlzLnkoKSkpLHR9LGUucHJvdG90eXBlLl9jcmVhdGVEcmF3ZXI9ZnVuY3Rpb24odCl7dmFyIGU9dGhpcztyZXR1cm4gbmV3IHVndC5Qcm94eURyYXdlcigoZnVuY3Rpb24oKXtyZXR1cm4gbmV3IHdndC5BcmVhU1ZHRHJhd2VyfSksKGZ1bmN0aW9uKG4pe3JldHVybiBuZXcgQ2d0LkNhbnZhc0RyYXdlcihuLHdndC5tYWtlQXJlYUNhbnZhc0RyYXdTdGVwKChmdW5jdGlvbigpe3ZhciBuPWUuX2Nvb3JkaW5hdGVQcm9qZWN0b3JzKCksaT1uWzBdLHI9blsxXSxvPW5bMl0sYT1lLl9jcmVhdGVEZWZpbmVkUHJvamVjdG9yKGkscik7cmV0dXJuIGUuX2NyZWF0ZUFyZWFHZW5lcmF0b3IoaSxyLG8sYSx0KX0pLChmdW5jdGlvbigpe3ZhciBuPWUuX2Nvb3JkaW5hdGVQcm9qZWN0b3JzKCksaT1uWzBdLHI9blsxXSxvPWUuX2NyZWF0ZURlZmluZWRQcm9qZWN0b3IoaSxyKTtyZXR1cm4gZS5fY3JlYXRlVG9wTGluZUdlbmVyYXRvcihpLHIsbyx0KX0pKSl9KSl9LGUucHJvdG90eXBlLl9nZW5lcmF0ZURyYXdTdGVwcz1mdW5jdGlvbigpe3ZhciB0PVtdO2lmKHRoaXMuX2FuaW1hdGVPbk5leHRSZW5kZXIoKSl7dmFyIGU9dGhpcy5fZ2V0QXR0clRvUHJvamVjdG9yKCk7ZS5kPXRoaXMuX2NvbnN0cnVjdEFyZWFQcm9qZWN0b3IocGd0LlBsb3QuX3NjYWxlZEFjY2Vzc29yKHRoaXMueCgpKSx0aGlzLl9nZXRSZXNldFlGdW5jdGlvbigpLHBndC5QbG90Ll9zY2FsZWRBY2Nlc3Nvcih0aGlzLnkwKCkpKSx0LnB1c2goe2F0dHJUb1Byb2plY3RvcjplLGFuaW1hdG9yOnRoaXMuX2dldEFuaW1hdG9yKFZndC5BbmltYXRvci5SRVNFVCl9KX1yZXR1cm4gdC5wdXNoKHthdHRyVG9Qcm9qZWN0b3I6dGhpcy5fZ2V0QXR0clRvUHJvamVjdG9yKCksYW5pbWF0b3I6dGhpcy5fZ2V0QW5pbWF0b3IoVmd0LkFuaW1hdG9yLk1BSU4pfSksdH0sZS5wcm90b3R5cGUuX3VwZGF0ZVlTY2FsZT1mdW5jdGlvbigpe3ZhciB0PXRoaXMuZ2V0RXh0ZW50c0ZvclByb3BlcnR5KCJ5MCIpLGU9dW10LkFycmF5LmZsYXR0ZW4odCksbj11bXQuQXJyYXkudW5pcShlKSxpPTE9PT1uLmxlbmd0aD9uWzBdOm51bGwscj10aGlzLnkoKSxvPXImJnIuc2NhbGU7bnVsbCE9byYmKG51bGwhPXRoaXMuX2NvbnN0YW50QmFzZWxpbmVWYWx1ZVByb3ZpZGVyJiYoby5yZW1vdmVQYWRkaW5nRXhjZXB0aW9uc1Byb3ZpZGVyKHRoaXMuX2NvbnN0YW50QmFzZWxpbmVWYWx1ZVByb3ZpZGVyKSx0aGlzLl9jb25zdGFudEJhc2VsaW5lVmFsdWVQcm92aWRlcj1udWxsKSxudWxsIT1pJiYodGhpcy5fY29uc3RhbnRCYXNlbGluZVZhbHVlUHJvdmlkZXI9ZnVuY3Rpb24oKXtyZXR1cm5baV19LG8uYWRkUGFkZGluZ0V4Y2VwdGlvbnNQcm92aWRlcih0aGlzLl9jb25zdGFudEJhc2VsaW5lVmFsdWVQcm92aWRlcikpKX0sZS5wcm90b3R5cGUuX2dldFJlc2V0WUZ1bmN0aW9uPWZ1bmN0aW9uKCl7cmV0dXJuIHBndC5QbG90Ll9zY2FsZWRBY2Nlc3Nvcih0aGlzLnkwKCkpfSxlLnByb3RvdHlwZS5fY29vcmRpbmF0ZVByb2plY3RvcnM9ZnVuY3Rpb24oKXtyZXR1cm5bcGd0LlBsb3QuX3NjYWxlZEFjY2Vzc29yKHRoaXMueCgpKSxwZ3QuUGxvdC5fc2NhbGVkQWNjZXNzb3IodGhpcy55KCkpLHBndC5QbG90Ll9zY2FsZWRBY2Nlc3Nvcih0aGlzLnkwKCkpXX0sZS5wcm90b3R5cGUuX3Byb3BlcnR5UHJvamVjdG9ycz1mdW5jdGlvbigpe3ZhciBlPXQucHJvdG90eXBlLl9wcm9wZXJ0eVByb2plY3RvcnMuY2FsbCh0aGlzKSxuPXRoaXMuX2Nvb3JkaW5hdGVQcm9qZWN0b3JzKCk7cmV0dXJuIGUuZD10aGlzLl9jb25zdHJ1Y3RBcmVhUHJvamVjdG9yKG5bMF0sblsxXSxuWzJdKSxlfSxlLnByb3RvdHlwZS5zZWxlY3Rpb25zPWZ1bmN0aW9uKGUpe3ZhciBuPXRoaXM7aWYodm9pZCAwPT09ZSYmKGU9dGhpcy5kYXRhc2V0cygpKSwiY2FudmFzIj09PXRoaXMucmVuZGVyZXIoKSlyZXR1cm4gVWh0LnNlbGVjdEFsbCgpO3ZhciBpPXQucHJvdG90eXBlLnNlbGVjdGlvbnMuY2FsbCh0aGlzLGUpLm5vZGVzKCk7cmV0dXJuIGUubWFwKChmdW5jdGlvbih0KXtyZXR1cm4gbi5fbGluZURyYXdlcnMuZ2V0KHQpfSkpLmZpbHRlcigoZnVuY3Rpb24odCl7cmV0dXJuIG51bGwhPXR9KSkuZm9yRWFjaCgoZnVuY3Rpb24odCl7cmV0dXJuIGkucHVzaC5hcHBseShpLHQuZ2V0VmlzdWFsUHJpbWl0aXZlcygpKX0pKSxVaHQuc2VsZWN0QWxsKGkpfSxlLnByb3RvdHlwZS5fY29uc3RydWN0QXJlYVByb2plY3Rvcj1mdW5jdGlvbih0LGUsbil7dmFyIGk9dGhpcyxyPXRoaXMuX2NyZWF0ZURlZmluZWRQcm9qZWN0b3IocGd0LlBsb3QuX3NjYWxlZEFjY2Vzc29yKHRoaXMueCgpKSxwZ3QuUGxvdC5fc2NhbGVkQWNjZXNzb3IodGhpcy55KCkpKTtyZXR1cm4gZnVuY3Rpb24obyxhLHMpe3JldHVybiBpLl9jcmVhdGVBcmVhR2VuZXJhdG9yKHQsZSxuLHIscykobyl9fSxlLnByb3RvdHlwZS5fY3JlYXRlRGVmaW5lZFByb2plY3Rvcj1mdW5jdGlvbih0LGUpe3JldHVybiBmdW5jdGlvbihuLGkscil7dmFyIG89dChuLGksciksYT1lKG4saSxyKTtyZXR1cm4gdW10Lk1hdGguaXNWYWxpZE51bWJlcihvKSYmdW10Lk1hdGguaXNWYWxpZE51bWJlcihhKX19LGUucHJvdG90eXBlLl9jcmVhdGVBcmVhR2VuZXJhdG9yPWZ1bmN0aW9uKHQsZSxuLGkscil7dmFyIG89dGhpcy5fZ2V0Q3VydmVGYWN0b3J5KCk7cmV0dXJuIFVodC5hcmVhKCkueCgoZnVuY3Rpb24oZSxuKXtyZXR1cm4gdChlLG4scil9KSkueTEoKGZ1bmN0aW9uKHQsbil7cmV0dXJuIGUodCxuLHIpfSkpLnkwKChmdW5jdGlvbih0LGUpe3JldHVybiBuKHQsZSxyKX0pKS5jdXJ2ZShvKS5kZWZpbmVkKChmdW5jdGlvbih0LGUpe3JldHVybiBpKHQsZSxyKX0pKX0sZS5wcm90b3R5cGUuX2NyZWF0ZVRvcExpbmVHZW5lcmF0b3I9ZnVuY3Rpb24odCxlLG4saSl7dmFyIHI9dGhpcy5fZ2V0Q3VydmVGYWN0b3J5KCk7cmV0dXJuIFVodC5saW5lKCkueCgoZnVuY3Rpb24oZSxuKXtyZXR1cm4gdChlLG4saSl9KSkueSgoZnVuY3Rpb24odCxuKXtyZXR1cm4gZSh0LG4saSl9KSkuY3VydmUocikuZGVmaW5lZCgoZnVuY3Rpb24odCxlKXtyZXR1cm4gbih0LGUsaSl9KSl9LGUuX1kwX0tFWT0ieTAiLGV9KShMZ3QuTGluZSk7ZS5BcmVhPW59KSksSWd0PWJlKChmdW5jdGlvbih0LGUpewovKioKICAgICAqIENvcHlyaWdodCAyMDE0LXByZXNlbnQgUGFsYW50aXIgVGVjaG5vbG9naWVzCiAgICAgKiBAbGljZW5zZSBNSVQKICAgICAqLwpPYmplY3QuZGVmaW5lUHJvcGVydHkoZSwiX19lc01vZHVsZSIse3ZhbHVlOiEwfSksZS5CYXJPcmllbnRhdGlvbj12ZnQubWFrZUVudW0oWyJ2ZXJ0aWNhbCIsImhvcml6b250YWwiXSksZS5MYWJlbHNQb3NpdGlvbj12ZnQubWFrZUVudW0oWyJzdGFydCIsIm1pZGRsZSIsImVuZCIsIm91dHNpZGUiXSksZS5CYXJBbGlnbm1lbnQ9dmZ0Lm1ha2VFbnVtKFsic3RhcnQiLCJtaWRkbGUiLCJlbmQiXSk7dmFyIG49KGZ1bmN0aW9uKHQpe2Z1bmN0aW9uIG4ocil7dm9pZCAwPT09ciYmKHI9InZlcnRpY2FsIik7dmFyIG89dC5jYWxsKHRoaXMpfHx0aGlzO2lmKG8uX2xhYmVsRm9ybWF0dGVyPWZtdC5pZGVudGl0eSgpLG8uX2xhYmVsc0VuYWJsZWQ9ITEsby5fbGFiZWxzUG9zaXRpb249ZS5MYWJlbHNQb3NpdGlvbi5lbmQsby5faGlkZUJhcnNJZkFueUFyZVRvb1dpZGU9ITAsby5fYmFyQWxpZ25tZW50PSJtaWRkbGUiLG8uX2NvbXB1dGVCYXJQaXhlbFRoaWNrbmVzcz1sZ3QubWVtb2l6ZShpKSxvLl9maXhlZEJhclBpeGVsVGhpY2tuZXNzPSEwLG8uYWRkQ2xhc3MoImJhci1wbG90IiksInZlcnRpY2FsIiE9PXImJiJob3Jpem9udGFsIiE9PXIpdGhyb3cgbmV3IEVycm9yKHIrIiBpcyBub3QgYSB2YWxpZCBvcmllbnRhdGlvbiBmb3IgUGxvdHMuQmFyIik7cmV0dXJuIG8uX2lzVmVydGljYWw9InZlcnRpY2FsIj09PXIsby5hbmltYXRvcigiYmFzZWxpbmUiLG5ldyBNZnQuTnVsbCksby5hdHRyKCJmaWxsIiwobmV3IGttdC5Db2xvcikucmFuZ2UoKVswXSksby5hdHRyKG4uX0JBUl9USElDS05FU1NfS0VZLChmdW5jdGlvbigpe3JldHVybiBvLl9iYXJQaXhlbFRoaWNrbmVzcygpfSkpLG8uX2xhYmVsQ29uZmlnPW5ldyB1bXQuTWFwLG8uX2Jhc2VsaW5lVmFsdWVQcm92aWRlcj1mdW5jdGlvbigpe3JldHVybltvLmJhc2VsaW5lVmFsdWUoKV19LG99cmV0dXJuIFNmdC5fX2V4dGVuZHMobix0KSxuLnByb3RvdHlwZS5jb21wdXRlTGF5b3V0PWZ1bmN0aW9uKGUsbixpKXtyZXR1cm4gdC5wcm90b3R5cGUuY29tcHV0ZUxheW91dC5jYWxsKHRoaXMsZSxuLGkpLHRoaXMuX3VwZGF0ZUV4dGVudHMoKSx0aGlzfSxuLnByb3RvdHlwZS54PWZ1bmN0aW9uKGUsbil7cmV0dXJuIG51bGw9PWU/dC5wcm90b3R5cGUueC5jYWxsKHRoaXMpOihudWxsPT1uP3QucHJvdG90eXBlLnguY2FsbCh0aGlzLGUpOnQucHJvdG90eXBlLnguY2FsbCh0aGlzLGUsbiksdGhpcy5fdXBkYXRlVGhpY2tuZXNzQXR0cigpLHRoaXMuX3VwZGF0ZUxlbmd0aFNjYWxlKCksdGhpcyl9LG4ucHJvdG90eXBlLnk9ZnVuY3Rpb24oZSxuKXtyZXR1cm4gbnVsbD09ZT90LnByb3RvdHlwZS55LmNhbGwodGhpcyk6KG51bGw9PW4/dC5wcm90b3R5cGUueS5jYWxsKHRoaXMsZSk6dC5wcm90b3R5cGUueS5jYWxsKHRoaXMsZSxuKSx0aGlzLl91cGRhdGVMZW5ndGhTY2FsZSgpLHRoaXMpfSxuLnByb3RvdHlwZS5sZW5ndGg9ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5faXNWZXJ0aWNhbD90aGlzLnkoKTp0aGlzLngoKX0sbi5wcm90b3R5cGUucG9zaXRpb249ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5faXNWZXJ0aWNhbD90aGlzLngoKTp0aGlzLnkoKX0sbi5wcm90b3R5cGUuYmFyRW5kPWZ1bmN0aW9uKHQpe2lmKG51bGw9PXQpcmV0dXJuIHRoaXMuX3Byb3BlcnR5QmluZGluZ3MuZ2V0KG4uX0JBUl9FTkRfS0VZKTt2YXIgZT10aGlzLnBvc2l0aW9uKCk7cmV0dXJuIHRoaXMuX2JpbmRQcm9wZXJ0eShuLl9CQVJfRU5EX0tFWSx0LGUmJmUuc2NhbGUpLHRoaXMuX3VwZGF0ZVRoaWNrbmVzc0F0dHIoKSx0aGlzLl91cGRhdGVMZW5ndGhTY2FsZSgpLHRoaXMucmVuZGVyKCksdGhpc30sbi5wcm90b3R5cGUuYmFyQWxpZ25tZW50PWZ1bmN0aW9uKHQpe3JldHVybiBudWxsPT10P3RoaXMuX2JhckFsaWdubWVudDoodGhpcy5fYmFyQWxpZ25tZW50PXQsdGhpcy5fY2xlYXJBdHRyVG9Qcm9qZWN0b3JDYWNoZSgpLHRoaXMucmVuZGVyKCksdGhpcyl9LG4ucHJvdG90eXBlLm9yaWVudGF0aW9uPWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuX2lzVmVydGljYWw/InZlcnRpY2FsIjoiaG9yaXpvbnRhbCJ9LG4ucHJvdG90eXBlLl9jcmVhdGVEcmF3ZXI9ZnVuY3Rpb24oKXtyZXR1cm4gbmV3IHVndC5Qcm94eURyYXdlcigoZnVuY3Rpb24oKXtyZXR1cm4gbmV3IE1ndC5SZWN0YW5nbGVTVkdEcmF3ZXIobi5fQkFSX0FSRUFfQ0xBU1MpfSksKGZ1bmN0aW9uKHQpe3JldHVybiBuZXcgQ2d0LlJlY3RhbmdsZUNhbnZhc0RyYXdlcih0KX0pKX0sbi5wcm90b3R5cGUuX3NldHVwPWZ1bmN0aW9uKCl7dC5wcm90b3R5cGUuX3NldHVwLmNhbGwodGhpcyksdGhpcy5fYmFzZWxpbmU9dGhpcy5fcmVuZGVyQXJlYS5hcHBlbmQoImxpbmUiKS5jbGFzc2VkKCJiYXNlbGluZSIsITApfSxuLnByb3RvdHlwZS5iYXNlbGluZVZhbHVlPWZ1bmN0aW9uKHQpe2lmKG51bGw9PXQpe2lmKG51bGwhPXRoaXMuX2Jhc2VsaW5lVmFsdWUpcmV0dXJuIHRoaXMuX2Jhc2VsaW5lVmFsdWU7aWYoIXRoaXMuX3Byb2plY3RvcnNSZWFkeSgpKXJldHVybiAwO3ZhciBlPXRoaXMubGVuZ3RoKCkuc2NhbGU7cmV0dXJuIGUmJmUgaW5zdGFuY2VvZiBrbXQuVGltZT9uZXcgRGF0ZSgwKTowfXJldHVybiB0aGlzLl9iYXNlbGluZVZhbHVlPXQsdGhpcy5fdXBkYXRlTGVuZ3RoU2NhbGUoKSx0aGlzLl9jbGVhckF0dHJUb1Byb2plY3RvckNhY2hlKCksdGhpcy5yZW5kZXIoKSx0aGlzfSxuLnByb3RvdHlwZS5hZGREYXRhc2V0PWZ1bmN0aW9uKGUpe3JldHVybiB0LnByb3RvdHlwZS5hZGREYXRhc2V0LmNhbGwodGhpcyxlKSx0aGlzfSxuLnByb3RvdHlwZS5fYWRkRGF0YXNldD1mdW5jdGlvbihlKXtyZXR1cm4gdC5wcm90b3R5cGUuX2FkZERhdGFzZXQuY2FsbCh0aGlzLGUpLHRoaXN9LG4ucHJvdG90eXBlLnJlbW92ZURhdGFzZXQ9ZnVuY3Rpb24oZSl7cmV0dXJuIHQucHJvdG90eXBlLnJlbW92ZURhdGFzZXQuY2FsbCh0aGlzLGUpLHRoaXN9LG4ucHJvdG90eXBlLl9yZW1vdmVEYXRhc2V0PWZ1bmN0aW9uKGUpe3JldHVybiB0LnByb3RvdHlwZS5fcmVtb3ZlRGF0YXNldC5jYWxsKHRoaXMsZSksdGhpc30sbi5wcm90b3R5cGUuZGF0YXNldHM9ZnVuY3Rpb24oZSl7cmV0dXJuIG51bGw9PWU/dC5wcm90b3R5cGUuZGF0YXNldHMuY2FsbCh0aGlzKToodC5wcm90b3R5cGUuZGF0YXNldHMuY2FsbCh0aGlzLGUpLHRoaXMpfSxuLnByb3RvdHlwZS5sYWJlbHNFbmFibGVkPWZ1bmN0aW9uKHQsZSl7cmV0dXJuIG51bGw9PXQ/dGhpcy5fbGFiZWxzRW5hYmxlZDoodGhpcy5fbGFiZWxzRW5hYmxlZD10LG51bGwhPWUmJih0aGlzLl9sYWJlbHNQb3NpdGlvbj1lKSx0aGlzLl9jbGVhckF0dHJUb1Byb2plY3RvckNhY2hlKCksdGhpcy5yZW5kZXIoKSx0aGlzKX0sbi5wcm90b3R5cGUubGFiZWxGb3JtYXR0ZXI9ZnVuY3Rpb24odCl7cmV0dXJuIG51bGw9PXQ/dGhpcy5fbGFiZWxGb3JtYXR0ZXI6KHRoaXMuX2xhYmVsRm9ybWF0dGVyPXQsdGhpcy5fY2xlYXJBdHRyVG9Qcm9qZWN0b3JDYWNoZSgpLHRoaXMucmVuZGVyKCksdGhpcyl9LG4ucHJvdG90eXBlLl9jcmVhdGVOb2Rlc0ZvckRhdGFzZXQ9ZnVuY3Rpb24oZSl7dmFyIGk9dC5wcm90b3R5cGUuX2NyZWF0ZU5vZGVzRm9yRGF0YXNldC5jYWxsKHRoaXMsZSkscj10aGlzLl9yZW5kZXJBcmVhLmFwcGVuZCgiZyIpLmNsYXNzZWQobi5fTEFCRUxfQVJFQV9DTEFTUywhMCksbz1uZXcgcWZ0LlN2Z0NvbnRleHQoci5ub2RlKCkpLGE9bmV3IHFmdC5DYWNoZU1lYXN1cmVyKG8pLHM9bmV3IHFmdC5Xcml0ZXIoYSxvKTtyZXR1cm4gdGhpcy5fbGFiZWxDb25maWcuc2V0KGUse2xhYmVsQXJlYTpyLG1lYXN1cmVyOmEsd3JpdGVyOnN9KSxpfSxuLnByb3RvdHlwZS5fcmVtb3ZlRGF0YXNldE5vZGVzPWZ1bmN0aW9uKGUpe3QucHJvdG90eXBlLl9yZW1vdmVEYXRhc2V0Tm9kZXMuY2FsbCh0aGlzLGUpO3ZhciBuPXRoaXMuX2xhYmVsQ29uZmlnLmdldChlKTtudWxsIT1uJiYobi5sYWJlbEFyZWEucmVtb3ZlKCksdGhpcy5fbGFiZWxDb25maWcuZGVsZXRlKGUpKX0sbi5wcm90b3R5cGUuZW50aXR5TmVhcmVzdD1mdW5jdGlvbih0KXt2YXIgZT10aGlzLG49ZnVuY3Rpb24oKXt2YXIgbj1lLl9pc1ZlcnRpY2FsP2UuX2dldEVudGl0eVN0b3JlKCkuZW50aXR5TmVhcmVzdFgodCk6ZS5fZ2V0RW50aXR5U3RvcmUoKS5lbnRpdHlOZWFyZXN0WSh0KTtyZXR1cm4gdm9pZCAwPT09bj92b2lkIDA6ZS5fbGlnaHR3ZWlnaHRQbG90RW50aXR5VG9QbG90RW50aXR5KG4pfTtyZXR1cm4gdGhpcy5fZml4ZWRCYXJQaXhlbFRoaWNrbmVzcz90aGlzLl9jb21wdXRlQmFyUGl4ZWxUaGlja25lc3MuZG9Mb2NrZWQobik6bigpfSxuLnByb3RvdHlwZS5lbnRpdGllc0F0PWZ1bmN0aW9uKHQpe3ZhciBlPXRoaXMsbj1mdW5jdGlvbigpe3JldHVybiBlLl9lbnRpdGllc0ludGVyc2VjdGluZyh0LngsdC55KX07cmV0dXJuIHRoaXMuX2ZpeGVkQmFyUGl4ZWxUaGlja25lc3M/dGhpcy5fY29tcHV0ZUJhclBpeGVsVGhpY2tuZXNzLmRvTG9ja2VkKG4pOm4oKX0sbi5wcm90b3R5cGUuZW50aXRpZXNJbkJvdW5kcz1mdW5jdGlvbihlKXt2YXIgbj10aGlzLGk9ZnVuY3Rpb24oKXtyZXR1cm4gdC5wcm90b3R5cGUuZW50aXRpZXNJbkJvdW5kcy5jYWxsKG4sZSl9O3JldHVybiB0aGlzLl9maXhlZEJhclBpeGVsVGhpY2tuZXNzP3RoaXMuX2NvbXB1dGVCYXJQaXhlbFRoaWNrbmVzcy5kb0xvY2tlZChpKTppKCl9LG4ucHJvdG90eXBlLmVudGl0aWVzSW5YQm91bmRzPWZ1bmN0aW9uKGUpe3ZhciBuPXRoaXMsaT1mdW5jdGlvbigpe3JldHVybiB0LnByb3RvdHlwZS5lbnRpdGllc0luWEJvdW5kcy5jYWxsKG4sZSl9O3JldHVybiB0aGlzLl9maXhlZEJhclBpeGVsVGhpY2tuZXNzP3RoaXMuX2NvbXB1dGVCYXJQaXhlbFRoaWNrbmVzcy5kb0xvY2tlZChpKTppKCl9LG4ucHJvdG90eXBlLmVudGl0aWVzSW5ZQm91bmRzPWZ1bmN0aW9uKGUpe3ZhciBuPXRoaXMsaT1mdW5jdGlvbigpe3JldHVybiB0LnByb3RvdHlwZS5lbnRpdGllc0luWUJvdW5kcy5jYWxsKG4sZSl9O3JldHVybiB0aGlzLl9maXhlZEJhclBpeGVsVGhpY2tuZXNzP3RoaXMuX2NvbXB1dGVCYXJQaXhlbFRoaWNrbmVzcy5kb0xvY2tlZChpKTppKCl9LG4ucHJvdG90eXBlLl9lbnRpdGllc0ludGVyc2VjdGluZz1mdW5jdGlvbih0LGUpe2Zvcih2YXIgbj1bXSxpPXRoaXMuX2dldEVudGl0eVN0b3JlKCkuZW50aXRpZXMoKSxyPWkubGVuZ3RoLG89MDtvPHI7bysrKXt2YXIgYT1pW29dO3VtdC5ET00uaW50ZXJzZWN0c0JCb3godCxlLHRoaXMuX2VudGl0eUJvdW5kcyhhKSkmJm4ucHVzaCh0aGlzLl9saWdodHdlaWdodFBsb3RFbnRpdHlUb1Bsb3RFbnRpdHkoYSkpfXJldHVybiBufSxuLnByb3RvdHlwZS5fdXBkYXRlTGVuZ3RoU2NhbGU9ZnVuY3Rpb24oKXtpZih0aGlzLl9wcm9qZWN0b3JzUmVhZHkoKSl7dmFyIHQ9dGhpcy5sZW5ndGgoKS5zY2FsZTt0IGluc3RhbmNlb2YgTW10LlF1YW50aXRhdGl2ZVNjYWxlJiYodC5hZGRQYWRkaW5nRXhjZXB0aW9uc1Byb3ZpZGVyKHRoaXMuX2Jhc2VsaW5lVmFsdWVQcm92aWRlciksdC5hZGRJbmNsdWRlZFZhbHVlc1Byb3ZpZGVyKHRoaXMuX2Jhc2VsaW5lVmFsdWVQcm92aWRlcikpfX0sbi5wcm90b3R5cGUucmVuZGVySW1tZWRpYXRlbHk9ZnVuY3Rpb24oKXt2YXIgZT10aGlzO3JldHVybiB0aGlzLl9iYXJQaXhlbFRoaWNrbmVzcygpLHRoaXMuX2NvbXB1dGVCYXJQaXhlbFRoaWNrbmVzcy5kb0xvY2tlZCgoZnVuY3Rpb24oKXtyZXR1cm4gdC5wcm90b3R5cGUucmVuZGVySW1tZWRpYXRlbHkuY2FsbChlKX0pKX0sbi5wcm90b3R5cGUuX2FkZGl0aW9uYWxQYWludD1mdW5jdGlvbih0KXt2YXIgZT10aGlzLG49dGhpcy5sZW5ndGgoKS5zY2FsZS5zY2FsZSh0aGlzLmJhc2VsaW5lVmFsdWUoKSksaT17eDE6dGhpcy5faXNWZXJ0aWNhbD8wOm4seTE6dGhpcy5faXNWZXJ0aWNhbD9uOjAseDI6dGhpcy5faXNWZXJ0aWNhbD90aGlzLndpZHRoKCk6bix5Mjp0aGlzLl9pc1ZlcnRpY2FsP246dGhpcy5oZWlnaHQoKX07dGhpcy5fZ2V0QW5pbWF0b3IoImJhc2VsaW5lIikuYW5pbWF0ZSh0aGlzLl9iYXNlbGluZSxpKSx0aGlzLmRhdGFzZXRzKCkuZm9yRWFjaCgoZnVuY3Rpb24odCl7cmV0dXJuIGUuX2xhYmVsQ29uZmlnLmdldCh0KS5sYWJlbEFyZWEuc2VsZWN0QWxsKCJnIikucmVtb3ZlKCl9KSksdGhpcy5fbGFiZWxzRW5hYmxlZCYmdW10LldpbmRvdy5zZXRUaW1lb3V0KChmdW5jdGlvbigpe3JldHVybiBlLl9kcmF3TGFiZWxzKCl9KSx0KX0sbi5wcm90b3R5cGUuZ2V0RXh0ZW50c0ZvclByb3BlcnR5PWZ1bmN0aW9uKGUpe3ZhciBuLGk9dGhpcyxyPXQucHJvdG90eXBlLmdldEV4dGVudHNGb3JQcm9wZXJ0eS5jYWxsKHRoaXMsZSk7aWYoIngiPT09ZSYmdGhpcy5faXNWZXJ0aWNhbCluPXRoaXMueCgpO2Vsc2V7aWYoInkiIT09ZXx8dGhpcy5faXNWZXJ0aWNhbClyZXR1cm4gcjtuPXRoaXMueSgpfWlmKCEobiYmbi5zY2FsZSYmbi5zY2FsZSBpbnN0YW5jZW9mIE1tdC5RdWFudGl0YXRpdmVTY2FsZSkpcmV0dXJuIHI7dmFyIG89bi5zY2FsZSxhPXRoaXMuX2JhclBpeGVsVGhpY2tuZXNzKCk7cmV0dXJuIHIubWFwKChmdW5jdGlvbih0KXtyZXR1cm4gVWh0LmV4dGVudChbby5pbnZlcnQoaS5fZ2V0UG9zaXRpb25BdHRyKG8uc2NhbGUodFswXSksYSkpLG8uaW52ZXJ0KGkuX2dldFBvc2l0aW9uQXR0cihvLnNjYWxlKHRbMF0pLGEpK2EpLG8uaW52ZXJ0KGkuX2dldFBvc2l0aW9uQXR0cihvLnNjYWxlKHRbMV0pLGEpKSxvLmludmVydChpLl9nZXRQb3NpdGlvbkF0dHIoby5zY2FsZSh0WzFdKSxhKSthKV0pfSkpfSxuLnByb3RvdHlwZS5fZ2V0UG9zaXRpb25BdHRyPWZ1bmN0aW9uKHQsZSl7c3dpdGNoKHRoaXMuX2lzVmVydGljYWx8fCh0LT1lLGUqPS0xKSx0aGlzLl9iYXJBbGlnbm1lbnQpe2Nhc2Uic3RhcnQiOnJldHVybiB0O2Nhc2UiZW5kIjpyZXR1cm4gdC1lO2Nhc2UibWlkZGxlIjpkZWZhdWx0OnJldHVybiB0LWUvMn19LG4ucHJvdG90eXBlLl9kcmF3TGFiZWxzPWZ1bmN0aW9uKCl7dmFyIHQ9dGhpcyxlPXRoaXMuX2dldERhdGFUb0RyYXcoKSxuPXRoaXMuX2dldEF0dHJUb1Byb2plY3RvcigpLGk9dGhpcy5kYXRhc2V0cygpLnNvbWUoKGZ1bmN0aW9uKGkpe3JldHVybiBlLmdldChpKS5zb21lKChmdW5jdGlvbihlLHIpe3JldHVybiBudWxsIT1lJiZ0Ll9kcmF3TGFiZWwoZSxyLGksbil9KSl9KSk7dGhpcy5faGlkZUJhcnNJZkFueUFyZVRvb1dpZGUmJmkmJnRoaXMuZGF0YXNldHMoKS5mb3JFYWNoKChmdW5jdGlvbihlKXtyZXR1cm4gdC5fbGFiZWxDb25maWcuZ2V0KGUpLmxhYmVsQXJlYS5zZWxlY3RBbGwoImciKS5yZW1vdmUoKX0pKX0sbi5wcm90b3R5cGUuX2RyYXdMYWJlbD1mdW5jdGlvbih0LGUsbixpKXt2YXIgcj10aGlzLl9sYWJlbENvbmZpZy5nZXQobiksbz1yLmxhYmVsQXJlYSxhPXIubWVhc3VyZXIscz1yLndyaXRlcixsPSgwLHRoaXMubGVuZ3RoKCkuYWNjZXNzb3IpKHQsZSxuKSxjPXRoaXMubGVuZ3RoKCkuc2NhbGUsdT1udWxsIT1jP2Muc2NhbGUobCk6bCxoPW51bGwhPWM/Yy5zY2FsZSh0aGlzLmJhc2VsaW5lVmFsdWUoKSk6dGhpcy5iYXNlbGluZVZhbHVlKCksZD17eDppLngodCxlLG4pLHk6aS55KHQsZSxuKX0scD17d2lkdGg6aS53aWR0aCh0LGUsbiksaGVpZ2h0OmkuaGVpZ2h0KHQsZSxuKX0sZj10aGlzLl9sYWJlbEZvcm1hdHRlcihsLHQsZSxuKSxtPWEubWVhc3VyZShmKSxnPXRoaXMuX3Nob3VsZFNob3dMYWJlbE9uQmFyKGQscCxtKSxfPXRoaXMuX2NhbGN1bGF0ZUxhYmVsUHJvcGVydGllcyhkLHAsbSxnLHRoaXMuX2lzVmVydGljYWw/dTw9aDp1PGgpLHk9Xy5jb250YWluZXJEaW1lbnNpb25zLHY9Xy5sYWJlbENvbnRhaW5lck9yaWdpbixiPV8ubGFiZWxPcmlnaW4seD1fLmFsaWdubWVudCx3PWkuZmlsbCh0LGUsbiksUz10aGlzLl9jcmVhdGVMYWJlbENvbnRhaW5lcihvLHYsYixtLGcsdyk7cmV0dXJuIHMud3JpdGUoZix5LndpZHRoLHkuaGVpZ2h0LHt4QWxpZ246eC54LHlBbGlnbjp4Lnl9LFMubm9kZSgpKSx0aGlzLl9pc1ZlcnRpY2FsP3Aud2lkdGg8bS53aWR0aDpwLmhlaWdodDxtLmhlaWdodH0sbi5wcm90b3R5cGUuX3Nob3VsZFNob3dMYWJlbE9uQmFyPWZ1bmN0aW9uKHQsaSxyKXtpZih0aGlzLl9sYWJlbHNQb3NpdGlvbj09PWUuTGFiZWxzUG9zaXRpb24ub3V0c2lkZSlyZXR1cm4hMTt2YXIgbz10aGlzLl9pc1ZlcnRpY2FsP3QueTp0LngsYT10aGlzLl9pc1ZlcnRpY2FsP2kuaGVpZ2h0Omkud2lkdGgscz10aGlzLl9pc1ZlcnRpY2FsP3RoaXMuaGVpZ2h0KCk6dGhpcy53aWR0aCgpLGw9bythLGM9YTtyZXR1cm4gbD5zP2M9cy1vOm88MCYmKGM9bCksKHRoaXMuX2lzVmVydGljYWw/ci5oZWlnaHQ6ci53aWR0aCkrbi5fTEFCRUxfTUFSR0lOX0lOU0lERV9CQVI8PWN9LG4ucHJvdG90eXBlLl9jYWxjdWxhdGVMYWJlbFByb3BlcnRpZXM9ZnVuY3Rpb24odCxpLHIsbyxhKXt2YXIgcz10aGlzLGw9dGhpcy5faXNWZXJ0aWNhbD90Lnk6dC54LGM9dGhpcy5faXNWZXJ0aWNhbD9pLmhlaWdodDppLndpZHRoLHU9dGhpcy5faXNWZXJ0aWNhbD9yLmhlaWdodDpyLndpZHRoLGg9ImNlbnRlciIsZD1jLHA9bCxmPWwsbT1mdW5jdGlvbih0KXtzd2l0Y2godCl7Y2FzZSJ0b3BMZWZ0IjpyZXR1cm4gaD1zLl9pc1ZlcnRpY2FsPyJ0b3AiOiJsZWZ0IixwKz1uLl9MQUJFTF9NQVJHSU5fSU5TSURFX0JBUix2b2lkKGYrPW4uX0xBQkVMX01BUkdJTl9JTlNJREVfQkFSKTtjYXNlImNlbnRlciI6cmV0dXJuIHZvaWQoZis9KGMrdSkvMik7Y2FzZSJib3R0b21SaWdodCI6cmV0dXJuIGg9cy5faXNWZXJ0aWNhbD8iYm90dG9tIjoicmlnaHQiLHAtPW4uX0xBQkVMX01BUkdJTl9JTlNJREVfQkFSLHZvaWQoZis9ZC1uLl9MQUJFTF9NQVJHSU5fSU5TSURFX0JBUi11KX19O2lmKG8pc3dpdGNoKHRoaXMuX2xhYmVsc1Bvc2l0aW9uKXtjYXNlIGUuTGFiZWxzUG9zaXRpb24uc3RhcnQ6bShhPyJib3R0b21SaWdodCI6InRvcExlZnQiKTticmVhaztjYXNlIGUuTGFiZWxzUG9zaXRpb24ubWlkZGxlOm0oImNlbnRlciIpO2JyZWFrO2Nhc2UgZS5MYWJlbHNQb3NpdGlvbi5lbmQ6bShhPyJ0b3BMZWZ0IjoiYm90dG9tUmlnaHQiKX1lbHNlIGE/KGg9dGhpcy5faXNWZXJ0aWNhbD8idG9wIjoibGVmdCIsZD1jK24uX0xBQkVMX01BUkdJTl9JTlNJREVfQkFSK3UscC09bi5fTEFCRUxfTUFSR0lOX0lOU0lERV9CQVIrdSxmLT1uLl9MQUJFTF9NQVJHSU5fSU5TSURFX0JBUit1KTooaD10aGlzLl9pc1ZlcnRpY2FsPyJib3R0b20iOiJyaWdodCIsZD1jK24uX0xBQkVMX01BUkdJTl9JTlNJREVfQkFSK3UsZis9YytuLl9MQUJFTF9NQVJHSU5fSU5TSURFX0JBUik7cmV0dXJue2NvbnRhaW5lckRpbWVuc2lvbnM6e3dpZHRoOnRoaXMuX2lzVmVydGljYWw/aS53aWR0aDpkLGhlaWdodDp0aGlzLl9pc1ZlcnRpY2FsP2Q6aS5oZWlnaHR9LGxhYmVsQ29udGFpbmVyT3JpZ2luOnt4OnRoaXMuX2lzVmVydGljYWw/dC54OnAseTp0aGlzLl9pc1ZlcnRpY2FsP3A6dC55fSxsYWJlbE9yaWdpbjp7eDp0aGlzLl9pc1ZlcnRpY2FsP3QueCtpLndpZHRoLzItci53aWR0aC8yOmYseTp0aGlzLl9pc1ZlcnRpY2FsP2Y6dC55K2kuaGVpZ2h0LzItci5oZWlnaHQvMn0sYWxpZ25tZW50Ont4OnRoaXMuX2lzVmVydGljYWw/ImNlbnRlciI6aCx5OnRoaXMuX2lzVmVydGljYWw/aDoiY2VudGVyIn19fSxuLnByb3RvdHlwZS5fY3JlYXRlTGFiZWxDb250YWluZXI9ZnVuY3Rpb24odCxlLG4saSxyLG8pe3ZhciBhPXQuYXBwZW5kKCJnIikuYXR0cigidHJhbnNmb3JtIiwidHJhbnNsYXRlKCIrZS54KyIsICIrZS55KyIpIik7aWYocil7YS5jbGFzc2VkKCJvbi1iYXItbGFiZWwiLCEwKTt2YXIgcz0xLjYqdW10LkNvbG9yLmNvbnRyYXN0KCJ3aGl0ZSIsbyk8dW10LkNvbG9yLmNvbnRyYXN0KCJibGFjayIsbyk7YS5jbGFzc2VkKHM/ImRhcmstbGFiZWwiOiJsaWdodC1sYWJlbCIsITApfWVsc2UgYS5jbGFzc2VkKCJvZmYtYmFyLWxhYmVsIiwhMCk7cmV0dXJuIGF9LG4ucHJvdG90eXBlLl9nZW5lcmF0ZURyYXdTdGVwcz1mdW5jdGlvbigpe3ZhciB0PVtdO2lmKHRoaXMuX2FuaW1hdGVPbk5leHRSZW5kZXIoKSl7dmFyIGU9dGhpcy5fZ2V0QXR0clRvUHJvamVjdG9yKCksbj10aGlzLmxlbmd0aCgpLnNjYWxlLnNjYWxlKHRoaXMuYmFzZWxpbmVWYWx1ZSgpKSxpPXRoaXMuX2lzVmVydGljYWw/ImhlaWdodCI6IndpZHRoIjtlW3RoaXMuX2lzVmVydGljYWw/InkiOiJ4Il09ZnVuY3Rpb24oKXtyZXR1cm4gbn0sZVtpXT1mdW5jdGlvbigpe3JldHVybiAwfSx0LnB1c2goe2F0dHJUb1Byb2plY3RvcjplLGFuaW1hdG9yOnRoaXMuX2dldEFuaW1hdG9yKFZndC5BbmltYXRvci5SRVNFVCl9KX1yZXR1cm4gdC5wdXNoKHthdHRyVG9Qcm9qZWN0b3I6dGhpcy5fZ2V0QXR0clRvUHJvamVjdG9yKCksYW5pbWF0b3I6dGhpcy5fZ2V0QW5pbWF0b3IoVmd0LkFuaW1hdG9yLk1BSU4pfSksdH0sbi5wcm90b3R5cGUuX2dlbmVyYXRlQXR0clRvUHJvamVjdG9yPWZ1bmN0aW9uKCl7dmFyIGU9dGhpcyxpPXQucHJvdG90eXBlLl9nZW5lcmF0ZUF0dHJUb1Byb2plY3Rvci5jYWxsKHRoaXMpLHI9dGhpcy5sZW5ndGgoKS5zY2FsZS5zY2FsZSh0aGlzLmJhc2VsaW5lVmFsdWUoKSksbz10aGlzLl9pc1ZlcnRpY2FsPyJ5IjoieCIsYT10aGlzLl9pc1ZlcnRpY2FsPyJ4IjoieSIscz1wZ3QuUGxvdC5fc2NhbGVkQWNjZXNzb3IodGhpcy5wb3NpdGlvbigpKSxsPXBndC5QbG90Ll9zY2FsZWRBY2Nlc3Nvcih0aGlzLmxlbmd0aCgpKSxjPWZ1bmN0aW9uKHQsZSxuKXtyZXR1cm4gTWF0aC5hYnMoci1sKHQsZSxuKSl9LHU9aVtuLl9CQVJfVEhJQ0tORVNTX0tFWV0saD1pLmdhcCxkPW51bGw9PWg/dTpmdW5jdGlvbih0LGUsaSl7dmFyIHI9dSh0LGUsaSk7cmV0dXJuIHI8bi5fQkFSX0dBUExFU1NfVEhSRVNIT0xEX1BYP3I6ci1oKHQsZSxpKX07cmV0dXJuIGkud2lkdGg9dGhpcy5faXNWZXJ0aWNhbD9kOmMsaS5oZWlnaHQ9dGhpcy5faXNWZXJ0aWNhbD9jOmQsaVtvXT1mdW5jdGlvbih0LGUsbil7dmFyIGk9bCh0LGUsbik7cmV0dXJuIGk+cj9yOml9LGlbYV09ZnVuY3Rpb24odCxuLGkpe3JldHVybiBlLl9nZXRQb3NpdGlvbkF0dHIocyh0LG4saSksdSh0LG4saSkpfSxpfSxuLnByb3RvdHlwZS5fdXBkYXRlVGhpY2tuZXNzQXR0cj1mdW5jdGlvbigpe3ZhciB0PXRoaXMsZT10aGlzLnBvc2l0aW9uKCksaT10aGlzLmJhckVuZCgpO251bGwhPWUmJm51bGwhPWk/KHRoaXMuX2ZpeGVkQmFyUGl4ZWxUaGlja25lc3M9ITEsdGhpcy5hdHRyKG4uX0JBUl9USElDS05FU1NfS0VZLChmdW5jdGlvbih0LG4scil7dmFyIG89ZS5hY2Nlc3Nvcih0LG4sciksYT1pLmFjY2Vzc29yKHQsbixyKTtyZXR1cm4gbz1lLnNjYWxlP2Uuc2NhbGUuc2NhbGUobyk6byxhPWkuc2NhbGU/aS5zY2FsZS5zY2FsZShhKTphLE1hdGguYWJzKGEtbyl9KSkpOih0aGlzLl9maXhlZEJhclBpeGVsVGhpY2tuZXNzPSEwLHRoaXMuYXR0cihuLl9CQVJfVEhJQ0tORVNTX0tFWSwoZnVuY3Rpb24oKXtyZXR1cm4gdC5fYmFyUGl4ZWxUaGlja25lc3MoKX0pKSl9LG4ucHJvdG90eXBlLl9iYXJQaXhlbFRoaWNrbmVzcz1mdW5jdGlvbigpe3JldHVybiB0aGlzLl9maXhlZEJhclBpeGVsVGhpY2tuZXNzJiZ0aGlzLl9wcm9qZWN0b3JzUmVhZHkoKT90aGlzLl9jb21wdXRlQmFyUGl4ZWxUaGlja25lc3ModGhpcy5wb3NpdGlvbigpLHRoaXMuZGF0YXNldHMoKSx0aGlzLl9pc1ZlcnRpY2FsP3RoaXMud2lkdGgoKTp0aGlzLmhlaWdodCgpKTowfSxuLnByb3RvdHlwZS5lbnRpdGllcz1mdW5jdGlvbihlKXtyZXR1cm4gdm9pZCAwPT09ZSYmKGU9dGhpcy5kYXRhc2V0cygpKSx0aGlzLl9wcm9qZWN0b3JzUmVhZHkoKT90LnByb3RvdHlwZS5lbnRpdGllcy5jYWxsKHRoaXMsZSk6W119LG4ucHJvdG90eXBlLl9lbnRpdHlCb3VuZHM9ZnVuY3Rpb24odCl7cmV0dXJuIHRoaXMuX3BpeGVsQm91bmRzKHQuZGF0dW0sdC5pbmRleCx0LmRhdGFzZXQpfSxuLnByb3RvdHlwZS5fcGl4ZWxCb3VuZHM9ZnVuY3Rpb24odCxlLG4pe3ZhciBpPXRoaXMuX2dldEF0dHJUb1Byb2plY3RvcigpO3JldHVybnt4OmkueCh0LGUsbikseTppLnkodCxlLG4pLHdpZHRoOmkud2lkdGgodCxlLG4pLGhlaWdodDppLmhlaWdodCh0LGUsbil9fSxuLnByb3RvdHlwZS5fcGl4ZWxQb2ludD1mdW5jdGlvbih0LGUsbil7dmFyIGk9dGhpcy5fcGl4ZWxCb3VuZHModCxlLG4pLHI9cGd0LlBsb3QuX3NjYWxlZEFjY2Vzc29yKHRoaXMuX2lzVmVydGljYWw/dGhpcy55KCk6dGhpcy54KCkpKHQsZSxuKSxvPSh0aGlzLl9pc1ZlcnRpY2FsP3RoaXMueSgpLnNjYWxlOnRoaXMueCgpLnNjYWxlKS5zY2FsZSh0aGlzLmJhc2VsaW5lVmFsdWUoKSk7cmV0dXJuIHRoaXMuX3BpeGVsUG9pbnRCYXIocixvLGkpfSxuLnByb3RvdHlwZS5fcGl4ZWxQb2ludEJhcj1mdW5jdGlvbih0LGUsbil7dmFyIGkscjtyZXR1cm4gdGhpcy5faXNWZXJ0aWNhbD8oaT1uLngrbi53aWR0aC8yLHI9dDw9ZT9uLnk6bi55K24uaGVpZ2h0KTooaT10Pj1lP24ueCtuLndpZHRoOm4ueCxyPW4ueStuLmhlaWdodC8yKSx7eDppLHk6cn19LG4ucHJvdG90eXBlLl91bmluc3RhbGxTY2FsZUZvcktleT1mdW5jdGlvbihlLG4pe3QucHJvdG90eXBlLl91bmluc3RhbGxTY2FsZUZvcktleS5jYWxsKHRoaXMsZSxuKX0sbi5wcm90b3R5cGUuX2dldERhdGFUb0RyYXc9ZnVuY3Rpb24oKXt2YXIgdD10aGlzLGU9bmV3IHVtdC5NYXAsbj10aGlzLl9nZXRBdHRyVG9Qcm9qZWN0b3IoKSxpPXRoaXMud2lkdGgoKSxyPXRoaXMuaGVpZ2h0KCk7cmV0dXJuIHRoaXMuZGF0YXNldHMoKS5mb3JFYWNoKChmdW5jdGlvbihvKXt2YXIgYT1vLmRhdGEoKS5tYXAoKGZ1bmN0aW9uKGUsYSl7cmV0dXJuIHQuX2lzRGF0dW1PblNjcmVlbihuLGkscixlLGEsbyk/ZTpudWxsfSkpO2Uuc2V0KG8sYSl9KSksZX0sbi5wcm90b3R5cGUuX2lzRGF0dW1PblNjcmVlbj1mdW5jdGlvbih0LGUsbixpLHIsbyl7dmFyIGE9dC54KGkscixvKSxzPXQueShpLHIsbyksbD10LndpZHRoKGkscixvKSxjPXQuaGVpZ2h0KGkscixvKTtyZXR1cm4hISh1bXQuTWF0aC5pc1ZhbGlkTnVtYmVyKGEpJiZ1bXQuTWF0aC5pc1ZhbGlkTnVtYmVyKHMpJiZ1bXQuTWF0aC5pc1ZhbGlkTnVtYmVyKGwpJiZ1bXQuTWF0aC5pc1ZhbGlkTnVtYmVyKGMpKSYmdW10Lk1hdGguYm91bmRzSW50ZXJzZWN0cyhhLHMsbCxjLDAsMCxlLG4pfSxuLnByb3RvdHlwZS5pbnZhbGlkYXRlQ2FjaGU9ZnVuY3Rpb24oKXt2YXIgZT10aGlzO3QucHJvdG90eXBlLmludmFsaWRhdGVDYWNoZS5jYWxsKHRoaXMpLHRoaXMuZGF0YXNldHMoKS5mb3JFYWNoKChmdW5jdGlvbih0KXtyZXR1cm4gZS5fbGFiZWxDb25maWcuZ2V0KHQpLm1lYXN1cmVyLnJlc2V0KCl9KSl9LG4uX0JBUl9USElDS05FU1NfUkFUSU89Ljk1LG4uX0JBUl9HQVBMRVNTX1RIUkVTSE9MRF9QWD0zLG4uX1NJTkdMRV9CQVJfRElNRU5TSU9OX1JBVElPPS40LG4uX0JBUl9BUkVBX0NMQVNTPSJiYXItYXJlYSIsbi5fQkFSX0VORF9LRVk9ImJhckVuZCIsbi5fQkFSX1RISUNLTkVTU19LRVk9IndpZHRoIixuLl9MQUJFTF9BUkVBX0NMQVNTPSJiYXItbGFiZWwtdGV4dC1hcmVhIixuLl9MQUJFTF9NQVJHSU5fSU5TSURFX0JBUj0xMCxufSkoa2d0LlhZUGxvdCk7ZnVuY3Rpb24gaSh0LGUsaSl7dmFyIHIsbz10LnNjYWxlO2lmKG8gaW5zdGFuY2VvZiBrbXQuQ2F0ZWdvcnkpcj1vLnJhbmdlQmFuZCgpO2Vsc2V7dmFyIGE9dC5hY2Nlc3NvcixzPVVodC5zZXQodW10LkFycmF5LmZsYXR0ZW4oZS5tYXAoKGZ1bmN0aW9uKHQpe3JldHVybiB0LmRhdGEoKS5tYXAoKGZ1bmN0aW9uKGUsbil7cmV0dXJuIGEoZSxuLHQpfSkpLmZpbHRlcigoZnVuY3Rpb24odCl7cmV0dXJuIG51bGwhPXR9KSkubWFwKChmdW5jdGlvbih0KXtyZXR1cm4gdC52YWx1ZU9mKCl9KSl9KSkpKS52YWx1ZXMoKS5tYXAoKGZ1bmN0aW9uKHQpe3JldHVybit0fSkpO3Muc29ydCgoZnVuY3Rpb24odCxlKXtyZXR1cm4gdC1lfSkpO3ZhciBsPXMubWFwKChmdW5jdGlvbih0KXtyZXR1cm4gby5zY2FsZSh0KX0pKSxjPVVodC5wYWlycyhsKTtyPXVtdC5NYXRoLm1pbihjLChmdW5jdGlvbih0LGUpe3JldHVybiBNYXRoLmFicyh0WzFdLXRbMF0pfSksaSpuLl9TSU5HTEVfQkFSX0RJTUVOU0lPTl9SQVRJTykscio9bi5fQkFSX1RISUNLTkVTU19SQVRJT31yZXR1cm4gcn1lLkJhcj1ufSkpLE5ndD1iZSgoZnVuY3Rpb24odCxlKXsKLyoqCiAgICAgKiBDb3B5cmlnaHQgMjAxNC1wcmVzZW50IFBhbGFudGlyIFRlY2hub2xvZ2llcwogICAgICogQGxpY2Vuc2UgTUlUCiAgICAgKi8KT2JqZWN0LmRlZmluZVByb3BlcnR5KGUsIl9fZXNNb2R1bGUiLHt2YWx1ZTohMH0pO3ZhciBuPShmdW5jdGlvbih0KXtmdW5jdGlvbiBlKGUpe3ZvaWQgMD09PWUmJihlPSJ2ZXJ0aWNhbCIpO3ZhciBuPXQuY2FsbCh0aGlzLGUpfHx0aGlzO3JldHVybiBuLl9jbHVzdGVyT2Zmc2V0cz1uZXcgdW10Lk1hcCxufXJldHVybiBTZnQuX19leHRlbmRzKGUsdCksZS5wcm90b3R5cGUuX2dlbmVyYXRlQXR0clRvUHJvamVjdG9yPWZ1bmN0aW9uKCl7dmFyIGU9dGhpcyxuPXQucHJvdG90eXBlLl9nZW5lcmF0ZUF0dHJUb1Byb2plY3Rvci5jYWxsKHRoaXMpLGk9dGhpcy5fbWFrZUlubmVyU2NhbGUoKSxyPWZ1bmN0aW9uKHQsZSl7cmV0dXJuIGkucmFuZ2VCYW5kKCl9O24ud2lkdGg9dGhpcy5faXNWZXJ0aWNhbD9yOm4ud2lkdGgsbi5oZWlnaHQ9dGhpcy5faXNWZXJ0aWNhbD9uLmhlaWdodDpyO3ZhciBvPW4ueCxhPW4ueTtyZXR1cm4gbi54PXRoaXMuX2lzVmVydGljYWw/ZnVuY3Rpb24odCxuLGkpe3JldHVybiBvKHQsbixpKStlLl9jbHVzdGVyT2Zmc2V0cy5nZXQoaSl9OmZ1bmN0aW9uKHQsZSxuKXtyZXR1cm4gbyh0LGUsbil9LG4ueT10aGlzLl9pc1ZlcnRpY2FsP2Z1bmN0aW9uKHQsZSxuKXtyZXR1cm4gYSh0LGUsbil9OmZ1bmN0aW9uKHQsbixpKXtyZXR1cm4gYSh0LG4saSkrZS5fY2x1c3Rlck9mZnNldHMuZ2V0KGkpfSxufSxlLnByb3RvdHlwZS5fdXBkYXRlQ2x1c3RlclBvc2l0aW9uPWZ1bmN0aW9uKCl7dmFyIHQ9dGhpcyxlPXRoaXMuX21ha2VJbm5lclNjYWxlKCk7dGhpcy5kYXRhc2V0cygpLmZvckVhY2goKGZ1bmN0aW9uKG4saSl7cmV0dXJuIHQuX2NsdXN0ZXJPZmZzZXRzLnNldChuLGUuc2NhbGUoU3RyaW5nKGkpKS1lLnJhbmdlQmFuZCgpLzIpfSkpfSxlLnByb3RvdHlwZS5fbWFrZUlubmVyU2NhbGU9ZnVuY3Rpb24oKXt2YXIgdD1uZXcga210LkNhdGVnb3J5O3QuZG9tYWluKHRoaXMuZGF0YXNldHMoKS5tYXAoKGZ1bmN0aW9uKHQsZSl7cmV0dXJuIFN0cmluZyhlKX0pKSk7dmFyIGU9cGd0LlBsb3QuX3NjYWxlZEFjY2Vzc29yKHRoaXMuYXR0cihJZ3QuQmFyLl9CQVJfVEhJQ0tORVNTX0tFWSkpO3JldHVybiB0LnJhbmdlKFswLGUobnVsbCwwLG51bGwpXSksdH0sZS5wcm90b3R5cGUuX2dldERhdGFUb0RyYXc9ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5fdXBkYXRlQ2x1c3RlclBvc2l0aW9uKCksdC5wcm90b3R5cGUuX2dldERhdGFUb0RyYXcuY2FsbCh0aGlzKX0sZX0pKElndC5CYXIpO2UuQ2x1c3RlcmVkQmFyPW59KSksT2d0PWJlKChmdW5jdGlvbih0LGUpewovKioKICAgICAqIENvcHlyaWdodCAyMDE0LXByZXNlbnQgUGFsYW50aXIgVGVjaG5vbG9naWVzCiAgICAgKiBAbGljZW5zZSBNSVQKICAgICAqLwpPYmplY3QuZGVmaW5lUHJvcGVydHkoZSwiX19lc01vZHVsZSIse3ZhbHVlOiEwfSk7dmFyIG49KGZ1bmN0aW9uKHQpe2Z1bmN0aW9uIGUoKXt2YXIgZT10LmNhbGwodGhpcyl8fHRoaXM7cmV0dXJuIGUuX3N0YXJ0QW5nbGU9MCxlLl9lbmRBbmdsZT0yKk1hdGguUEksZS5fbGFiZWxGb3JtYXR0ZXI9Zm10LmlkZW50aXR5KCksZS5fbGFiZWxzRW5hYmxlZD0hMSxlLmlubmVyUmFkaXVzKDApLGUub3V0ZXJSYWRpdXMoKGZ1bmN0aW9uKCl7dmFyIHQ9ZS5fcGllQ2VudGVyKCk7cmV0dXJuIE1hdGgubWluKE1hdGgubWF4KGUud2lkdGgoKS10LngsdC54KSxNYXRoLm1heChlLmhlaWdodCgpLXQueSx0LnkpKX0pKSxlLmFkZENsYXNzKCJwaWUtcGxvdCIpLGUuYXR0cigiZmlsbCIsKGZ1bmN0aW9uKHQsZSl7cmV0dXJuIFN0cmluZyhlKX0pLG5ldyBrbXQuQ29sb3IpLGUuX3N0cm9rZURyYXdlcnM9bmV3IHVtdC5NYXAsZX1yZXR1cm4gU2Z0Ll9fZXh0ZW5kcyhlLHQpLGUucHJvdG90eXBlLl9zZXR1cD1mdW5jdGlvbigpe3ZhciBlPXRoaXM7dC5wcm90b3R5cGUuX3NldHVwLmNhbGwodGhpcyksdGhpcy5fc3Ryb2tlRHJhd2Vycy5mb3JFYWNoKChmdW5jdGlvbih0KXtyZXR1cm4gdC5hdHRhY2hUbyhlLl9yZW5kZXJBcmVhKX0pKX0sZS5wcm90b3R5cGUuY29tcHV0ZUxheW91dD1mdW5jdGlvbihlLG4saSl7dC5wcm90b3R5cGUuY29tcHV0ZUxheW91dC5jYWxsKHRoaXMsZSxuLGkpO3ZhciByPXRoaXMuX3BpZUNlbnRlcigpO3RoaXMuX3JlbmRlckFyZWEuYXR0cigidHJhbnNmb3JtIiwidHJhbnNsYXRlKCIrci54KyIsIityLnkrIikiKTt2YXIgbz1NYXRoLm1pbihNYXRoLm1heCh0aGlzLndpZHRoKCktci54LHIueCksTWF0aC5tYXgodGhpcy5oZWlnaHQoKS1yLnksci55KSk7cmV0dXJuIG51bGwhPXRoaXMuaW5uZXJSYWRpdXMoKS5zY2FsZSYmdGhpcy5pbm5lclJhZGl1cygpLnNjYWxlLnJhbmdlKFswLG9dKSxudWxsIT10aGlzLm91dGVyUmFkaXVzKCkuc2NhbGUmJnRoaXMub3V0ZXJSYWRpdXMoKS5zY2FsZS5yYW5nZShbMCxvXSksdGhpc30sZS5wcm90b3R5cGUuYWRkRGF0YXNldD1mdW5jdGlvbihlKXtyZXR1cm4gdC5wcm90b3R5cGUuYWRkRGF0YXNldC5jYWxsKHRoaXMsZSksdGhpc30sZS5wcm90b3R5cGUuX2FkZERhdGFzZXQ9ZnVuY3Rpb24oZSl7aWYoMT09PXRoaXMuZGF0YXNldHMoKS5sZW5ndGgpcmV0dXJuIHVtdC5XaW5kb3cud2FybigiT25seSBvbmUgZGF0YXNldCBpcyBzdXBwb3J0ZWQgaW4gUGllIHBsb3RzIiksdGhpczt0aGlzLl91cGRhdGVQaWVBbmdsZXMoKSx0LnByb3RvdHlwZS5fYWRkRGF0YXNldC5jYWxsKHRoaXMsZSk7dmFyIG49bmV3IHhndC5BcmNPdXRsaW5lU1ZHRHJhd2VyO3JldHVybiB0aGlzLl9pc1NldHVwJiZuLmF0dGFjaFRvKHRoaXMuX3JlbmRlckFyZWEpLHRoaXMuX3N0cm9rZURyYXdlcnMuc2V0KGUsbiksdGhpc30sZS5wcm90b3R5cGUucmVtb3ZlRGF0YXNldD1mdW5jdGlvbihlKXtyZXR1cm4gdC5wcm90b3R5cGUucmVtb3ZlRGF0YXNldC5jYWxsKHRoaXMsZSksdGhpc30sZS5wcm90b3R5cGUuX3JlbW92ZURhdGFzZXROb2Rlcz1mdW5jdGlvbihlKXt0LnByb3RvdHlwZS5fcmVtb3ZlRGF0YXNldE5vZGVzLmNhbGwodGhpcyxlKSx0aGlzLl9zdHJva2VEcmF3ZXJzLmdldChlKS5yZW1vdmUoKX0sZS5wcm90b3R5cGUuX3JlbW92ZURhdGFzZXQ9ZnVuY3Rpb24oZSl7cmV0dXJuIHQucHJvdG90eXBlLl9yZW1vdmVEYXRhc2V0LmNhbGwodGhpcyxlKSx0aGlzLl9zdHJva2VEcmF3ZXJzLmRlbGV0ZShlKSx0aGlzLl9zdGFydEFuZ2xlcz1bXSx0aGlzLl9lbmRBbmdsZXM9W10sdGhpc30sZS5wcm90b3R5cGUuc2VsZWN0aW9ucz1mdW5jdGlvbihlKXt2YXIgbj10aGlzO3ZvaWQgMD09PWUmJihlPXRoaXMuZGF0YXNldHMoKSk7dmFyIGk9dC5wcm90b3R5cGUuc2VsZWN0aW9ucy5jYWxsKHRoaXMsZSkubm9kZXMoKTtyZXR1cm4gZS5mb3JFYWNoKChmdW5jdGlvbih0KXt2YXIgZT1uLl9zdHJva2VEcmF3ZXJzLmdldCh0KTtudWxsIT1lJiZpLnB1c2guYXBwbHkoaSxlLmdldFZpc3VhbFByaW1pdGl2ZXMoKSl9KSksVWh0LnNlbGVjdEFsbChpKX0sZS5wcm90b3R5cGUuX29uRGF0YXNldFVwZGF0ZT1mdW5jdGlvbigpe3QucHJvdG90eXBlLl9vbkRhdGFzZXRVcGRhdGUuY2FsbCh0aGlzKSx0aGlzLl91cGRhdGVQaWVBbmdsZXMoKSx0aGlzLnJlbmRlcigpfSxlLnByb3RvdHlwZS5fY3JlYXRlRHJhd2VyPWZ1bmN0aW9uKCl7cmV0dXJuIG5ldyB1Z3QuUHJveHlEcmF3ZXIoKGZ1bmN0aW9uKCl7cmV0dXJuIG5ldyBiZ3QuQXJjU1ZHRHJhd2VyfSksKGZ1bmN0aW9uKCl7cmV0dXJuIG5tdC53YXJuKCJjYW52YXMgcmVuZGVyZXIgaXMgbm90IHN1cHBvcnRlZCBvbiBQaWUgUGxvdCEiKSxudWxsfSkpfSxlLnByb3RvdHlwZS5lbnRpdGllcz1mdW5jdGlvbihlKXt2YXIgbj10aGlzO3JldHVybiB2b2lkIDA9PT1lJiYoZT10aGlzLmRhdGFzZXRzKCkpLHQucHJvdG90eXBlLmVudGl0aWVzLmNhbGwodGhpcyxlKS5tYXAoKGZ1bmN0aW9uKHQpe3QucG9zaXRpb24ueCs9bi53aWR0aCgpLzIsdC5wb3NpdGlvbi55Kz1uLmhlaWdodCgpLzI7dmFyIGU9VWh0LnNlbGVjdChuLl9zdHJva2VEcmF3ZXJzLmdldCh0LmRhdGFzZXQpLmdldFZpc3VhbFByaW1pdGl2ZUF0SW5kZXgodC5pbmRleCkpLGk9dDtyZXR1cm4gaS5zdHJva2VTZWxlY3Rpb249ZSxpfSkpfSxlLnByb3RvdHlwZS5zZWN0b3JWYWx1ZT1mdW5jdGlvbih0LG4pe3JldHVybiBudWxsPT10P3RoaXMuX3Byb3BlcnR5QmluZGluZ3MuZ2V0KGUuX1NFQ1RPUl9WQUxVRV9LRVkpOih0aGlzLl9iaW5kUHJvcGVydHkoZS5fU0VDVE9SX1ZBTFVFX0tFWSx0LG4pLHRoaXMuX3VwZGF0ZVBpZUFuZ2xlcygpLHRoaXMucmVuZGVyKCksdGhpcyl9LGUucHJvdG90eXBlLmlubmVyUmFkaXVzPWZ1bmN0aW9uKHQsbil7cmV0dXJuIG51bGw9PXQ/dGhpcy5fcHJvcGVydHlCaW5kaW5ncy5nZXQoZS5fSU5ORVJfUkFESVVTX0tFWSk6KHRoaXMuX2JpbmRQcm9wZXJ0eShlLl9JTk5FUl9SQURJVVNfS0VZLHQsbiksdGhpcy5yZW5kZXIoKSx0aGlzKX0sZS5wcm90b3R5cGUub3V0ZXJSYWRpdXM9ZnVuY3Rpb24odCxuKXtyZXR1cm4gbnVsbD09dD90aGlzLl9wcm9wZXJ0eUJpbmRpbmdzLmdldChlLl9PVVRFUl9SQURJVVNfS0VZKToodGhpcy5fYmluZFByb3BlcnR5KGUuX09VVEVSX1JBRElVU19LRVksdCxuKSx0aGlzLnJlbmRlcigpLHRoaXMpfSxlLnByb3RvdHlwZS5zdGFydEFuZ2xlPWZ1bmN0aW9uKHQpe3JldHVybiBudWxsPT10P3RoaXMuX3N0YXJ0QW5nbGU6KHRoaXMuX3N0YXJ0QW5nbGU9dCx0aGlzLl91cGRhdGVQaWVBbmdsZXMoKSx0aGlzLnJlbmRlcigpLHRoaXMpfSxlLnByb3RvdHlwZS5lbmRBbmdsZT1mdW5jdGlvbih0KXtyZXR1cm4gbnVsbD09dD90aGlzLl9lbmRBbmdsZToodGhpcy5fZW5kQW5nbGU9dCx0aGlzLl91cGRhdGVQaWVBbmdsZXMoKSx0aGlzLnJlbmRlcigpLHRoaXMpfSxlLnByb3RvdHlwZS5sYWJlbHNFbmFibGVkPWZ1bmN0aW9uKHQpe3JldHVybiBudWxsPT10P3RoaXMuX2xhYmVsc0VuYWJsZWQ6KHRoaXMuX2xhYmVsc0VuYWJsZWQ9dCx0aGlzLnJlbmRlcigpLHRoaXMpfSxlLnByb3RvdHlwZS5sYWJlbEZvcm1hdHRlcj1mdW5jdGlvbih0KXtyZXR1cm4gbnVsbD09dD90aGlzLl9sYWJlbEZvcm1hdHRlcjoodGhpcy5fbGFiZWxGb3JtYXR0ZXI9dCx0aGlzLnJlbmRlcigpLHRoaXMpfSxlLnByb3RvdHlwZS5lbnRpdGllc0F0PWZ1bmN0aW9uKHQpe3ZhciBlPXRoaXMud2lkdGgoKS8yLG49dGhpcy5oZWlnaHQoKS8yLGk9dGhpcy5fc2xpY2VJbmRleEZvclBvaW50KHt4OnQueC1lLHk6dC55LW59KTtyZXR1cm4gbnVsbD09aT9bXTpbdGhpcy5lbnRpdGllcygpW2ldXX0sZS5wcm90b3R5cGUuX3Byb3BlcnR5UHJvamVjdG9ycz1mdW5jdGlvbigpe3ZhciBlPXRoaXMsbj10LnByb3RvdHlwZS5fcHJvcGVydHlQcm9qZWN0b3JzLmNhbGwodGhpcyksaT1wZ3QuUGxvdC5fc2NhbGVkQWNjZXNzb3IodGhpcy5pbm5lclJhZGl1cygpKSxyPXBndC5QbG90Ll9zY2FsZWRBY2Nlc3Nvcih0aGlzLm91dGVyUmFkaXVzKCkpO3JldHVybiBuLmQ9ZnVuY3Rpb24odCxuLG8pe3JldHVybiBVaHQuYXJjKCkuaW5uZXJSYWRpdXMoaSh0LG4sbykpLm91dGVyUmFkaXVzKHIodCxuLG8pKS5zdGFydEFuZ2xlKGUuX3N0YXJ0QW5nbGVzW25dKS5lbmRBbmdsZShlLl9lbmRBbmdsZXNbbl0pKHQsbil9LG59LGUucHJvdG90eXBlLl91cGRhdGVQaWVBbmdsZXM9ZnVuY3Rpb24oKXtpZihudWxsIT10aGlzLnNlY3RvclZhbHVlKCkmJjAhPT10aGlzLmRhdGFzZXRzKCkubGVuZ3RoKXt2YXIgdD1wZ3QuUGxvdC5fc2NhbGVkQWNjZXNzb3IodGhpcy5zZWN0b3JWYWx1ZSgpKSxlPXRoaXMuZGF0YXNldHMoKVswXSxuPXRoaXMuX2dldERhdGFUb0RyYXcoKS5nZXQoZSksaT1VaHQucGllKCkuc29ydChudWxsKS5zdGFydEFuZ2xlKHRoaXMuX3N0YXJ0QW5nbGUpLmVuZEFuZ2xlKHRoaXMuX2VuZEFuZ2xlKS52YWx1ZSgoZnVuY3Rpb24obixpKXtyZXR1cm4gdChuLGksZSl9KSkobik7dGhpcy5fc3RhcnRBbmdsZXM9aS5tYXAoKGZ1bmN0aW9uKHQpe3JldHVybiB0LnN0YXJ0QW5nbGV9KSksdGhpcy5fZW5kQW5nbGVzPWkubWFwKChmdW5jdGlvbih0KXtyZXR1cm4gdC5lbmRBbmdsZX0pKX19LGUucHJvdG90eXBlLl9waWVDZW50ZXI9ZnVuY3Rpb24oKXt2YXIgdCxlLG4saSxyPXRoaXMuX3N0YXJ0QW5nbGU8dGhpcy5fZW5kQW5nbGU/dGhpcy5fc3RhcnRBbmdsZTp0aGlzLl9lbmRBbmdsZSxvPXRoaXMuX3N0YXJ0QW5nbGU8dGhpcy5fZW5kQW5nbGU/dGhpcy5fZW5kQW5nbGU6dGhpcy5fc3RhcnRBbmdsZSxhPU1hdGguc2luKHIpLHM9TWF0aC5jb3MociksbD1NYXRoLnNpbihvKSxjPU1hdGguY29zKG8pO3JldHVybiBhPj0wJiZsPj0wP3M+PTAmJmM+PTA/KHQ9cyxlPTAsaT0wLG49bCk6czwwJiZjPDA/KHQ9MCxlPS1jLGk9MCxuPWEpOnM+PTAmJmM8MD8odD1zLGU9LWMsaT0wLG49YSk6czwwJiZjPj0wJiYodD0xLGU9MSxpPTEsbj1NYXRoLm1heChhLGwpKTphPj0wJiZsPDA/cz49MCYmYz49MD8odD1NYXRoLm1heChzLGMpLGU9MSxpPTEsbj0xKTpzPDAmJmM8MD8odD0wLGU9MSxpPS1sLG49YSk6cz49MCYmYzwwPyh0PXMsZT0xLGk9LWwsbj0xKTpzPDAmJmM+PTAmJih0PWMsZT0xLGk9MSxuPWEpOmE8MCYmbD49MD9zPj0wJiZjPj0wPyh0PTEsZT0wLGk9LWEsbj1sKTpzPDAmJmM8MD8odD0xLGU9TWF0aC5tYXgoLXMsLWMpLGk9MSxuPTEpOnM+PTAmJmM8MD8odD0xLGU9LWMsaT0tYSxuPTEpOnM8MCYmYz49MCYmKHQ9MSxlPS1zLGk9MSxuPWwpOmE8MCYmbDwwJiYocz49MCYmYz49MD8odD1jLGU9MCxpPS1hLG49MCk6czwwJiZjPDA/KHQ9MCxlPS1zLGk9LWwsbj0wKTpzPj0wJiZjPDA/KHQ9MSxlPTEsaT1NYXRoLm1heChzLC1jKSxuPTEpOnM8MCYmYz49MCYmKHQ9YyxlPS1zLGk9MSxuPTApKSx7eDppK249PTA/MDppLyhpK24pKnRoaXMud2lkdGgoKSx5OnQrZT09MD8wOnQvKHQrZSkqdGhpcy5oZWlnaHQoKX19LGUucHJvdG90eXBlLl9nZXREYXRhVG9EcmF3PWZ1bmN0aW9uKCl7dmFyIG49dC5wcm90b3R5cGUuX2dldERhdGFUb0RyYXcuY2FsbCh0aGlzKTtpZigwPT09dGhpcy5kYXRhc2V0cygpLmxlbmd0aClyZXR1cm4gbjt2YXIgaT1wZ3QuUGxvdC5fc2NhbGVkQWNjZXNzb3IodGhpcy5zZWN0b3JWYWx1ZSgpKSxyPXRoaXMuZGF0YXNldHMoKVswXSxvPW4uZ2V0KHIpLmZpbHRlcigoZnVuY3Rpb24odCxuKXtyZXR1cm4gZS5faXNWYWxpZERhdGEoaSh0LG4scikpfSkpO3JldHVybiBuLnNldChyLG8pLG59LGUuX2lzVmFsaWREYXRhPWZ1bmN0aW9uKHQpe3JldHVybiB1bXQuTWF0aC5pc1ZhbGlkTnVtYmVyKHQpJiZ0Pj0wfSxlLnByb3RvdHlwZS5fcGl4ZWxQb2ludD1mdW5jdGlvbih0LG4saSl7dmFyIHI9cGd0LlBsb3QuX3NjYWxlZEFjY2Vzc29yKHRoaXMuc2VjdG9yVmFsdWUoKSk7aWYoIWUuX2lzVmFsaWREYXRhKHIodCxuLGkpKSlyZXR1cm57eDpOYU4seTpOYU59O3ZhciBvPShwZ3QuUGxvdC5fc2NhbGVkQWNjZXNzb3IodGhpcy5pbm5lclJhZGl1cygpKSh0LG4saSkrcGd0LlBsb3QuX3NjYWxlZEFjY2Vzc29yKHRoaXMub3V0ZXJSYWRpdXMoKSkodCxuLGkpKS8yLGE9VWh0LnBpZSgpLnNvcnQobnVsbCkudmFsdWUoKGZ1bmN0aW9uKHQsbil7dmFyIG89cih0LG4saSk7cmV0dXJuIGUuX2lzVmFsaWREYXRhKG8pP286MH0pKS5zdGFydEFuZ2xlKHRoaXMuX3N0YXJ0QW5nbGUpLmVuZEFuZ2xlKHRoaXMuX2VuZEFuZ2xlKShpLmRhdGEoKSkscz0oYVtuXS5zdGFydEFuZ2xlK2Fbbl0uZW5kQW5nbGUpLzI7cmV0dXJue3g6bypNYXRoLnNpbihzKSx5Oi1vKk1hdGguY29zKHMpfX0sZS5wcm90b3R5cGUuX2FkZGl0aW9uYWxQYWludD1mdW5jdGlvbih0KXt2YXIgZT10aGlzO3RoaXMuX3JlbmRlckFyZWEuc2VsZWN0KCIubGFiZWwtYXJlYSIpLnJlbW92ZSgpLHRoaXMuX2xhYmVsc0VuYWJsZWQmJnVtdC5XaW5kb3cuc2V0VGltZW91dCgoZnVuY3Rpb24oKXtyZXR1cm4gZS5fZHJhd0xhYmVscygpfSksdCk7dmFyIG49dGhpcy5fZ2VuZXJhdGVTdHJva2VEcmF3U3RlcHMoKSxpPXRoaXMuX2dldERhdGFUb0RyYXcoKTt0aGlzLmRhdGFzZXRzKCkuZm9yRWFjaCgoZnVuY3Rpb24odCl7dmFyIHI9cGd0LlBsb3QuYXBwbHlEcmF3U3RlcHMobix0KTtlLl9zdHJva2VEcmF3ZXJzLmdldCh0KS5kcmF3KGkuZ2V0KHQpLHIpfSkpfSxlLnByb3RvdHlwZS5fZ2VuZXJhdGVTdHJva2VEcmF3U3RlcHM9ZnVuY3Rpb24oKXtyZXR1cm5be2F0dHJUb1Byb2plY3Rvcjp0aGlzLl9nZXRBdHRyVG9Qcm9qZWN0b3IoKSxhbmltYXRvcjpuZXcgTWZ0Lk51bGx9XX0sZS5wcm90b3R5cGUuX3NsaWNlSW5kZXhGb3JQb2ludD1mdW5jdGlvbih0KXt2YXIgZSxuPU1hdGguc3FydChNYXRoLnBvdyh0LngsMikrTWF0aC5wb3codC55LDIpKSxpPU1hdGguYWNvcygtdC55L24pO3QueDwwJiYoaT0yKk1hdGguUEktaSk7Zm9yKHZhciByPTA7cjx0aGlzLl9zdGFydEFuZ2xlcy5sZW5ndGg7cisrKWlmKHRoaXMuX3N0YXJ0QW5nbGVzW3JdPGkmJnRoaXMuX2VuZEFuZ2xlc1tyXT5pKXtlPXI7YnJlYWt9aWYodm9pZCAwIT09ZSl7dmFyIG89dGhpcy5kYXRhc2V0cygpWzBdLGE9by5kYXRhKClbZV0scz10aGlzLmlubmVyUmFkaXVzKCkuYWNjZXNzb3IoYSxlLG8pLGw9dGhpcy5vdXRlclJhZGl1cygpLmFjY2Vzc29yKGEsZSxvKTtpZihuPnMmJm48bClyZXR1cm4gZX1yZXR1cm4gbnVsbH0sZS5wcm90b3R5cGUuX2RyYXdMYWJlbHM9ZnVuY3Rpb24oKXtmb3IodmFyIHQ9dGhpcyxlPXRoaXMuX2dldEF0dHJUb1Byb2plY3RvcigpLG49dGhpcy5fcmVuZGVyQXJlYS5hcHBlbmQoImciKS5jbGFzc2VkKCJsYWJlbC1hcmVhIiwhMCksaT1uZXcgcWZ0LlN2Z0NvbnRleHQobi5ub2RlKCkpLHI9bmV3IHFmdC5DYWNoZU1lYXN1cmVyKGkpLG89bmV3IHFmdC5Xcml0ZXIocixpKSxhPXRoaXMuZGF0YXNldHMoKVswXSxzPXRoaXMuX2dldERhdGFUb0RyYXcoKS5nZXQoYSksbD1zLmxlbmd0aCxjPWZ1bmN0aW9uKGkpe3ZhciBsPXNbaV0sYz11LnNlY3RvclZhbHVlKCkuYWNjZXNzb3IobCxpLGEpO2lmKCF1bXQuTWF0aC5pc1ZhbGlkTnVtYmVyKGMpKXJldHVybiJjb250aW51ZSI7Yz11Ll9sYWJlbEZvcm1hdHRlcihjLGwsaSxhKTt2YXIgaD1yLm1lYXN1cmUoYyksZD0odS5fZW5kQW5nbGVzW2ldK3UuX3N0YXJ0QW5nbGVzW2ldKS8yLHA9dS5vdXRlclJhZGl1cygpLmFjY2Vzc29yKGwsaSxhKTt1Lm91dGVyUmFkaXVzKCkuc2NhbGUmJihwPXUub3V0ZXJSYWRpdXMoKS5zY2FsZS5zY2FsZShwKSk7dmFyIGY9dS5pbm5lclJhZGl1cygpLmFjY2Vzc29yKGwsaSxhKTt1LmlubmVyUmFkaXVzKCkuc2NhbGUmJihmPXUuaW5uZXJSYWRpdXMoKS5zY2FsZS5zY2FsZShmKSk7dmFyIG09KHArZikvMixnPU1hdGguc2luKGQpKm0taC53aWR0aC8yLF89LU1hdGguY29zKGQpKm0taC5oZWlnaHQvMix5PVt7eDpnLHk6X30se3g6Zyx5Ol8raC5oZWlnaHR9LHt4OmcraC53aWR0aCx5Ol99LHt4OmcraC53aWR0aCx5Ol8raC5oZWlnaHR9XSx2PXkuZXZlcnkoKGZ1bmN0aW9uKGUpe3JldHVybiBNYXRoLmFicyhlLngpPD10LndpZHRoKCkvMiYmTWF0aC5hYnMoZS55KTw9dC5oZWlnaHQoKS8yfSkpO3YmJih2PXkubWFwKChmdW5jdGlvbihlKXtyZXR1cm4gdC5fc2xpY2VJbmRleEZvclBvaW50KGUpfSkpLmV2ZXJ5KChmdW5jdGlvbih0KXtyZXR1cm4gdD09PWl9KSkpO3ZhciBiPWUuZmlsbChsLGksYSkseD0xLjYqdW10LkNvbG9yLmNvbnRyYXN0KCJ3aGl0ZSIsYik8dW10LkNvbG9yLmNvbnRyYXN0KCJibGFjayIsYiksdz1uLmFwcGVuZCgiZyIpLmF0dHIoInRyYW5zZm9ybSIsInRyYW5zbGF0ZSgiK2crIiwiK18rIikiKTt3LmNsYXNzZWQoeD8iZGFyay1sYWJlbCI6ImxpZ2h0LWxhYmVsIiwhMCksdy5zdHlsZSgidmlzaWJpbGl0eSIsdj8iaW5oZXJpdCI6ImhpZGRlbiIpLG8ud3JpdGUoYyxoLndpZHRoLGguaGVpZ2h0LHt4QWxpZ246ImNlbnRlciIseUFsaWduOiJjZW50ZXIifSx3Lm5vZGUoKSl9LHU9dGhpcyxoPTA7aDxsO2grKyljKGgpfSxlLl9JTk5FUl9SQURJVVNfS0VZPSJpbm5lci1yYWRpdXMiLGUuX09VVEVSX1JBRElVU19LRVk9Im91dGVyLXJhZGl1cyIsZS5fU0VDVE9SX1ZBTFVFX0tFWT0ic2VjdG9yLXZhbHVlIixlfSkocGd0LlBsb3QpO2UuUGllPW59KSksUmd0PWJlKChmdW5jdGlvbih0LGUpewovKioKICAgICAqIENvcHlyaWdodCAyMDE0LXByZXNlbnQgUGFsYW50aXIgVGVjaG5vbG9naWVzCiAgICAgKiBAbGljZW5zZSBNSVQKICAgICAqLwpPYmplY3QuZGVmaW5lUHJvcGVydHkoZSwiX19lc01vZHVsZSIse3ZhbHVlOiEwfSk7dmFyIG49KGZ1bmN0aW9uKHQpe2Z1bmN0aW9uIGUoKXt2YXIgZT10LmNhbGwodGhpcyl8fHRoaXM7cmV0dXJuIGUuX2xhYmVsc0VuYWJsZWQ9ITEsZS5fbGFiZWw9bnVsbCxlLmFuaW1hdG9yKCJyZWN0YW5nbGVzIixuZXcgTWZ0Lk51bGwpLGUuYWRkQ2xhc3MoInJlY3RhbmdsZS1wbG90IiksZS5hdHRyKCJmaWxsIiwobmV3IGttdC5Db2xvcikucmFuZ2UoKVswXSksZX1yZXR1cm4gU2Z0Ll9fZXh0ZW5kcyhlLHQpLGUucHJvdG90eXBlLl9jcmVhdGVEcmF3ZXI9ZnVuY3Rpb24oKXtyZXR1cm4gbmV3IHVndC5Qcm94eURyYXdlcigoZnVuY3Rpb24oKXtyZXR1cm4gbmV3IE1ndC5SZWN0YW5nbGVTVkdEcmF3ZXJ9KSwoZnVuY3Rpb24odCl7cmV0dXJuIG5ldyBDZ3QuUmVjdGFuZ2xlQ2FudmFzRHJhd2VyKHQpfSkpfSxlLnByb3RvdHlwZS5fZ2VuZXJhdGVBdHRyVG9Qcm9qZWN0b3I9ZnVuY3Rpb24oKXt2YXIgbj10aGlzLGk9dC5wcm90b3R5cGUuX2dlbmVyYXRlQXR0clRvUHJvamVjdG9yLmNhbGwodGhpcykscj1wZ3QuUGxvdC5fc2NhbGVkQWNjZXNzb3IodGhpcy54KCkpLG89aVtlLl9YMl9LRVldLGE9cGd0LlBsb3QuX3NjYWxlZEFjY2Vzc29yKHRoaXMueSgpKSxzPWlbZS5fWTJfS0VZXSxsPXRoaXMueCgpLnNjYWxlLGM9dGhpcy55KCkuc2NhbGU7cmV0dXJuIG51bGwhPW8/KGkud2lkdGg9ZnVuY3Rpb24odCxlLG4pe3JldHVybiBNYXRoLmFicyhvKHQsZSxuKS1yKHQsZSxuKSl9LGkueD1mdW5jdGlvbih0LGUsbil7cmV0dXJuIE1hdGgubWluKG8odCxlLG4pLHIodCxlLG4pKX0pOihpLndpZHRoPWZ1bmN0aW9uKHQsZSxpKXtyZXR1cm4gbi5fcmVjdGFuZ2xlV2lkdGgobCl9LGkueD1mdW5jdGlvbih0LGUsbil7cmV0dXJuIHIodCxlLG4pLS41Kmkud2lkdGgodCxlLG4pfSksbnVsbCE9cz8oaS5oZWlnaHQ9ZnVuY3Rpb24odCxlLG4pe3JldHVybiBNYXRoLmFicyhzKHQsZSxuKS1hKHQsZSxuKSl9LGkueT1mdW5jdGlvbih0LGUsbil7cmV0dXJuIE1hdGgubWF4KHModCxlLG4pLGEodCxlLG4pKS1pLmhlaWdodCh0LGUsbil9KTooaS5oZWlnaHQ9ZnVuY3Rpb24odCxlLGkpe3JldHVybiBuLl9yZWN0YW5nbGVXaWR0aChjKX0saS55PWZ1bmN0aW9uKHQsZSxuKXtyZXR1cm4gYSh0LGUsbiktLjUqaS5oZWlnaHQodCxlLG4pfSksZGVsZXRlIGlbZS5fWDJfS0VZXSxkZWxldGUgaVtlLl9ZMl9LRVldLGl9LGUucHJvdG90eXBlLl9nZW5lcmF0ZURyYXdTdGVwcz1mdW5jdGlvbigpe3JldHVyblt7YXR0clRvUHJvamVjdG9yOnRoaXMuX2dldEF0dHJUb1Byb2plY3RvcigpLGFuaW1hdG9yOnRoaXMuX2dldEFuaW1hdG9yKCJyZWN0YW5nbGVzIil9XX0sZS5wcm90b3R5cGUuX2ZpbHRlckZvclByb3BlcnR5PWZ1bmN0aW9uKGUpe3JldHVybiB0LnByb3RvdHlwZS5fZmlsdGVyRm9yUHJvcGVydHkuY2FsbCh0aGlzLCJ4MiI9PT1lPyJ4IjoieTIiPT09ZT8ieSI6ZSl9LGUucHJvdG90eXBlLng9ZnVuY3Rpb24obixpLHIpe2lmKG51bGw9PW4pcmV0dXJuIHQucHJvdG90eXBlLnguY2FsbCh0aGlzKTtpZihudWxsPT1pP3QucHJvdG90eXBlLnguY2FsbCh0aGlzLG4pOnQucHJvdG90eXBlLnguY2FsbCh0aGlzLG4saSxyKSxudWxsIT1pKXt2YXIgbz10aGlzLngyKCksYT1vJiZvLmFjY2Vzc29yO251bGwhPWEmJnRoaXMuX2JpbmRQcm9wZXJ0eShlLl9YMl9LRVksYSxpLG8ucG9zdFNjYWxlKX1yZXR1cm4gaSBpbnN0YW5jZW9mIGttdC5DYXRlZ29yeSYmaS5pbm5lclBhZGRpbmcoMCkub3V0ZXJQYWRkaW5nKDApLHRoaXN9LGUucHJvdG90eXBlLngyPWZ1bmN0aW9uKHQsbil7aWYobnVsbD09dClyZXR1cm4gdGhpcy5fcHJvcGVydHlCaW5kaW5ncy5nZXQoZS5fWDJfS0VZKTt2YXIgaT10aGlzLngoKTtyZXR1cm4gdGhpcy5fYmluZFByb3BlcnR5KGUuX1gyX0tFWSx0LGkmJmkuc2NhbGUsbiksdGhpcy5yZW5kZXIoKSx0aGlzfSxlLnByb3RvdHlwZS55PWZ1bmN0aW9uKG4saSxyKXtpZihudWxsPT1uKXJldHVybiB0LnByb3RvdHlwZS55LmNhbGwodGhpcyk7aWYobnVsbD09aT90LnByb3RvdHlwZS55LmNhbGwodGhpcyxuKTp0LnByb3RvdHlwZS55LmNhbGwodGhpcyxuLGksciksbnVsbCE9aSl7dmFyIG89dGhpcy55MigpLGE9byYmby5hY2Nlc3NvcjtudWxsIT1hJiZ0aGlzLl9iaW5kUHJvcGVydHkoZS5fWTJfS0VZLGEsaSxvLnBvc3RTY2FsZSl9cmV0dXJuIGkgaW5zdGFuY2VvZiBrbXQuQ2F0ZWdvcnkmJmkuaW5uZXJQYWRkaW5nKDApLm91dGVyUGFkZGluZygwKSx0aGlzfSxlLnByb3RvdHlwZS55Mj1mdW5jdGlvbih0LG4pe2lmKG51bGw9PXQpcmV0dXJuIHRoaXMuX3Byb3BlcnR5QmluZGluZ3MuZ2V0KGUuX1kyX0tFWSk7dmFyIGk9dGhpcy55KCk7cmV0dXJuIHRoaXMuX2JpbmRQcm9wZXJ0eShlLl9ZMl9LRVksdCxpJiZpLnNjYWxlLG4pLHRoaXMucmVuZGVyKCksdGhpc30sZS5wcm90b3R5cGUuZW50aXRpZXNBdD1mdW5jdGlvbih0KXt2YXIgZT10aGlzLl9nZXRBdHRyVG9Qcm9qZWN0b3IoKTtyZXR1cm4gdGhpcy5lbnRpdGllcygpLmZpbHRlcigoZnVuY3Rpb24obil7dmFyIGk9bi5kYXR1bSxyPW4uaW5kZXgsbz1uLmRhdGFzZXQsYT1lLngoaSxyLG8pLHM9ZS55KGkscixvKSxsPWUud2lkdGgoaSxyLG8pLGM9ZS5oZWlnaHQoaSxyLG8pO3JldHVybiBhPD10LngmJnQueDw9YStsJiZzPD10LnkmJnQueTw9cytjfSkpfSxlLnByb3RvdHlwZS5fZW50aXR5Qm91bmRzPWZ1bmN0aW9uKHQpe3JldHVybiB0aGlzLl9lbnRpdHlCQm94KHQuZGF0dW0sdC5pbmRleCx0LmRhdGFzZXQsdGhpcy5fZ2V0QXR0clRvUHJvamVjdG9yKCkpfSxlLnByb3RvdHlwZS5fZW50aXR5QkJveD1mdW5jdGlvbih0LGUsbixpKXtyZXR1cm57eDppLngodCxlLG4pLHk6aS55KHQsZSxuKSx3aWR0aDppLndpZHRoKHQsZSxuKSxoZWlnaHQ6aS5oZWlnaHQodCxlLG4pfX0sZS5wcm90b3R5cGUubGFiZWw9ZnVuY3Rpb24odCl7cmV0dXJuIG51bGw9PXQ/dGhpcy5fbGFiZWw6KHRoaXMuX2xhYmVsPXQsdGhpcy5yZW5kZXIoKSx0aGlzKX0sZS5wcm90b3R5cGUubGFiZWxzRW5hYmxlZD1mdW5jdGlvbih0KXtyZXR1cm4gbnVsbD09dD90aGlzLl9sYWJlbHNFbmFibGVkOih0aGlzLl9sYWJlbHNFbmFibGVkPXQsdGhpcy5yZW5kZXIoKSx0aGlzKX0sZS5wcm90b3R5cGUuX3Byb3BlcnR5UHJvamVjdG9ycz1mdW5jdGlvbigpe3ZhciBlPXQucHJvdG90eXBlLl9wcm9wZXJ0eVByb2plY3RvcnMuY2FsbCh0aGlzKTtyZXR1cm4gbnVsbCE9dGhpcy54MigpJiYoZS54Mj1wZ3QuUGxvdC5fc2NhbGVkQWNjZXNzb3IodGhpcy54MigpKSksbnVsbCE9dGhpcy55MigpJiYoZS55Mj1wZ3QuUGxvdC5fc2NhbGVkQWNjZXNzb3IodGhpcy55MigpKSksZX0sZS5wcm90b3R5cGUuX3BpeGVsUG9pbnQ9ZnVuY3Rpb24odCxlLG4pe3ZhciBpPXRoaXMuX2dldEF0dHJUb1Byb2plY3RvcigpLHI9aS54KHQsZSxuKSxvPWkueSh0LGUsbik7cmV0dXJue3g6citpLndpZHRoKHQsZSxuKS8yLHk6bytpLmhlaWdodCh0LGUsbikvMn19LGUucHJvdG90eXBlLl9yZWN0YW5nbGVXaWR0aD1mdW5jdGlvbih0KXtpZih0IGluc3RhbmNlb2Yga210LkNhdGVnb3J5KXJldHVybiB0LnJhbmdlQmFuZCgpO3ZhciBlPXQ9PT10aGlzLngoKS5zY2FsZT90aGlzLngoKS5hY2Nlc3Nvcjp0aGlzLnkoKS5hY2Nlc3NvcixuPVVodC5zZXQodW10LkFycmF5LmZsYXR0ZW4odGhpcy5kYXRhc2V0cygpLm1hcCgoZnVuY3Rpb24odCl7cmV0dXJuIHQuZGF0YSgpLm1hcCgoZnVuY3Rpb24obixpKXtyZXR1cm4gZShuLGksdCkudmFsdWVPZigpfSkpfSkpKSkudmFsdWVzKCkubWFwKChmdW5jdGlvbih0KXtyZXR1cm4rdH0pKSxpPXVtdC5NYXRoLm1pbihuLDApLHI9dW10Lk1hdGgubWF4KG4sMCksbz10LnNjYWxlKGkpO3JldHVybih0LnNjYWxlKHIpLW8pL01hdGguYWJzKHItaSl9LGUucHJvdG90eXBlLl9nZXREYXRhVG9EcmF3PWZ1bmN0aW9uKCl7dmFyIHQ9bmV3IHVtdC5NYXAsZT10aGlzLl9nZXRBdHRyVG9Qcm9qZWN0b3IoKTtyZXR1cm4gdGhpcy5kYXRhc2V0cygpLmZvckVhY2goKGZ1bmN0aW9uKG4pe3ZhciBpPW4uZGF0YSgpLm1hcCgoZnVuY3Rpb24odCxpKXtyZXR1cm4gdW10Lk1hdGguaXNWYWxpZE51bWJlcihlLngodCxpLG4pKSYmdW10Lk1hdGguaXNWYWxpZE51bWJlcihlLnkodCxpLG4pKSYmdW10Lk1hdGguaXNWYWxpZE51bWJlcihlLndpZHRoKHQsaSxuKSkmJnVtdC5NYXRoLmlzVmFsaWROdW1iZXIoZS5oZWlnaHQodCxpLG4pKT90Om51bGx9KSk7dC5zZXQobixpKX0pKSx0fSxlLnByb3RvdHlwZS5fYWRkaXRpb25hbFBhaW50PWZ1bmN0aW9uKHQpe3ZhciBlPXRoaXM7dGhpcy5fcmVuZGVyQXJlYS5zZWxlY3RBbGwoIi5sYWJlbC1hcmVhIikucmVtb3ZlKCksdGhpcy5fbGFiZWxzRW5hYmxlZCYmbnVsbCE9dGhpcy5sYWJlbCgpJiZ1bXQuV2luZG93LnNldFRpbWVvdXQoKGZ1bmN0aW9uKCl7cmV0dXJuIGUuX2RyYXdMYWJlbHMoKX0pLHQpfSxlLnByb3RvdHlwZS5fZHJhd0xhYmVscz1mdW5jdGlvbigpe3ZhciB0PXRoaXMsZT10aGlzLl9nZXREYXRhVG9EcmF3KCk7dGhpcy5kYXRhc2V0cygpLmZvckVhY2goKGZ1bmN0aW9uKG4saSl7cmV0dXJuIHQuX2RyYXdMYWJlbChlLG4saSl9KSl9LGUucHJvdG90eXBlLl9kcmF3TGFiZWw9ZnVuY3Rpb24odCxlLG4pe2Zvcih2YXIgaT10aGlzLl9nZXRBdHRyVG9Qcm9qZWN0b3IoKSxyPXRoaXMuX3JlbmRlckFyZWEuYXBwZW5kKCJnIikuY2xhc3NlZCgibGFiZWwtYXJlYSIsITApLG89bmV3IHFmdC5TdmdDb250ZXh0KHIubm9kZSgpKSxhPW5ldyBxZnQuQ2FjaGVNZWFzdXJlcihvKSxzPW5ldyBxZnQuV3JpdGVyKGEsbyksbD10aGlzLngoKS5zY2FsZS5yYW5nZSgpLGM9dGhpcy55KCkuc2NhbGUucmFuZ2UoKSx1PU1hdGgubWluLmFwcGx5KG51bGwsbCksaD1NYXRoLm1heC5hcHBseShudWxsLGwpLGQ9TWF0aC5taW4uYXBwbHkobnVsbCxjKSxwPU1hdGgubWF4LmFwcGx5KG51bGwsYyksZj10LmdldChlKSxtPWYubGVuZ3RoLGc9MDtnPG07ZysrKXt2YXIgXz1mW2ddO2lmKG51bGwhPV8pe3ZhciB5PSIiK3RoaXMubGFiZWwoKShfLGcsZSksdj1hLm1lYXN1cmUoeSksYj1pLngoXyxnLGUpLHg9aS55KF8sZyxlKSx3PWkud2lkdGgoXyxnLGUpLFM9aS5oZWlnaHQoXyxnLGUpO2lmKHYuaGVpZ2h0PD1TJiZ2LndpZHRoPD13KXt2YXIgTT17bWluOmIrPSh3LXYud2lkdGgpLzIsbWF4OmIrdi53aWR0aH0sRT17bWluOngrPShTLXYuaGVpZ2h0KS8yLG1heDp4K3YuaGVpZ2h0fTtpZihNLm1pbjx1fHxNLm1heD5ofHxFLm1pbjxkfHxFLm1heD5wKWNvbnRpbnVlO2lmKHRoaXMuX292ZXJsYXlMYWJlbChNLEUsZyxuLHQpKWNvbnRpbnVlO3ZhciBUPWkuZmlsbChfLGcsZSksQT0xLjYqdW10LkNvbG9yLmNvbnRyYXN0KCJ3aGl0ZSIsVCk8dW10LkNvbG9yLmNvbnRyYXN0KCJibGFjayIsVCksQz1yLmFwcGVuZCgiZyIpLmF0dHIoInRyYW5zZm9ybSIsInRyYW5zbGF0ZSgiK2IrIiwiK3grIikiKTtDLmNsYXNzZWQoQT8iZGFyay1sYWJlbCI6ImxpZ2h0LWxhYmVsIiwhMCkscy53cml0ZSh5LHYud2lkdGgsdi5oZWlnaHQse3hBbGlnbjoiY2VudGVyIix5QWxpZ246ImNlbnRlciJ9LEMubm9kZSgpKX19fX0sZS5wcm90b3R5cGUuX292ZXJsYXlMYWJlbD1mdW5jdGlvbih0LGUsbixpLHIpe2Zvcih2YXIgbz10aGlzLl9nZXRBdHRyVG9Qcm9qZWN0b3IoKSxhPXRoaXMuZGF0YXNldHMoKSxzPWk7czxhLmxlbmd0aDtzKyspZm9yKHZhciBsPWFbc10sYz1yLmdldChsKSx1PWMubGVuZ3RoLGg9cz09PWk/bisxOjA7aDx1O2grKylpZih1bXQuRE9NLmludGVyc2VjdHNCQm94KHQsZSx0aGlzLl9lbnRpdHlCQm94KGNbaF0saCxsLG8pKSlyZXR1cm4hMDtyZXR1cm4hMX0sZS5fWDJfS0VZPSJ4MiIsZS5fWTJfS0VZPSJ5MiIsZX0pKGtndC5YWVBsb3QpO2UuUmVjdGFuZ2xlPW59KSksemd0PWJlKChmdW5jdGlvbih0LGUpewovKioKICAgICAqIENvcHlyaWdodCAyMDE0LXByZXNlbnQgUGFsYW50aXIgVGVjaG5vbG9naWVzCiAgICAgKiBAbGljZW5zZSBNSVQKICAgICAqLwpPYmplY3QuZGVmaW5lUHJvcGVydHkoZSwiX19lc01vZHVsZSIse3ZhbHVlOiEwfSk7dmFyIG49KGZ1bmN0aW9uKHQpe2Z1bmN0aW9uIGUoKXt2YXIgZT10LmNhbGwodGhpcyl8fHRoaXM7ZS5fbGFiZWxGb3JtYXR0ZXI9Zm10LmlkZW50aXR5KCksZS5fbGFiZWxzRW5hYmxlZD0hMSxlLmFkZENsYXNzKCJzY2F0dGVyLXBsb3QiKTt2YXIgbj1uZXcgTWZ0LkVhc2luZztuLnN0YXJ0RGVsYXkoNSksbi5zdGVwRHVyYXRpb24oMjUwKSxuLm1heFRvdGFsRHVyYXRpb24ocGd0LlBsb3QuX0FOSU1BVElPTl9NQVhfRFVSQVRJT04pLGUuYW5pbWF0b3IoVmd0LkFuaW1hdG9yLk1BSU4sbiksZS5hdHRyKCJvcGFjaXR5IiwuNiksZS5hdHRyKCJmaWxsIiwobmV3IGttdC5Db2xvcikucmFuZ2UoKVswXSksZS5zaXplKDYpO3ZhciBpPVFtdC5jaXJjbGUoKTtyZXR1cm4gZS5zeW1ib2woKGZ1bmN0aW9uKCl7cmV0dXJuIGl9KSksZS5fbGFiZWxDb25maWc9bmV3IHVtdC5NYXAsZX1yZXR1cm4gU2Z0Ll9fZXh0ZW5kcyhlLHQpLGUucHJvdG90eXBlLl9idWlsZExpZ2h0d2VpZ2h0UGxvdEVudGl0aWVzPWZ1bmN0aW9uKGUpe3ZhciBuPXRoaXM7cmV0dXJuIHQucHJvdG90eXBlLl9idWlsZExpZ2h0d2VpZ2h0UGxvdEVudGl0aWVzLmNhbGwodGhpcyxlKS5tYXAoKGZ1bmN0aW9uKHQpe3ZhciBlPXBndC5QbG90Ll9zY2FsZWRBY2Nlc3NvcihuLnNpemUoKSkodC5kYXR1bSx0LmluZGV4LHQuZGF0YXNldCk7cmV0dXJuIHQuZGlhbWV0ZXI9ZSx0fSkpfSxlLnByb3RvdHlwZS5fY3JlYXRlRHJhd2VyPWZ1bmN0aW9uKHQpe3ZhciBlPXRoaXM7cmV0dXJuIG5ldyB1Z3QuUHJveHlEcmF3ZXIoKGZ1bmN0aW9uKCl7cmV0dXJuIG5ldyBBZ3QuU3ltYm9sU1ZHRHJhd2VyfSksKGZ1bmN0aW9uKG4pe3JldHVybiBuZXcgQ2d0LkNhbnZhc0RyYXdlcihuLEFndC5tYWtlU3ltYm9sQ2FudmFzRHJhd1N0ZXAodCwoZnVuY3Rpb24oKXtyZXR1cm4gcGd0LlBsb3QuX3NjYWxlZEFjY2Vzc29yKGUuc3ltYm9sKCkpfSksKGZ1bmN0aW9uKCl7cmV0dXJuIHBndC5QbG90Ll9zY2FsZWRBY2Nlc3NvcihlLnNpemUoKSl9KSkpfSkpfSxlLnByb3RvdHlwZS5zaXplPWZ1bmN0aW9uKHQsbil7cmV0dXJuIG51bGw9PXQ/dGhpcy5fcHJvcGVydHlCaW5kaW5ncy5nZXQoZS5fU0laRV9LRVkpOih0aGlzLl9iaW5kUHJvcGVydHkoZS5fU0laRV9LRVksdCxuKSx0aGlzLnJlbmRlcigpLHRoaXMpfSxlLnByb3RvdHlwZS5zeW1ib2w9ZnVuY3Rpb24odCl7cmV0dXJuIG51bGw9PXQ/dGhpcy5fcHJvcGVydHlCaW5kaW5ncy5nZXQoZS5fU1lNQk9MX0tFWSk6KHRoaXMuX3Byb3BlcnR5QmluZGluZ3Muc2V0KGUuX1NZTUJPTF9LRVkse2FjY2Vzc29yOnR9KSx0aGlzLnJlbmRlcigpLHRoaXMpfSxlLnByb3RvdHlwZS5fZ2VuZXJhdGVEcmF3U3RlcHM9ZnVuY3Rpb24oKXt2YXIgdD1bXTtpZih0aGlzLl9hbmltYXRlT25OZXh0UmVuZGVyKCkpe3ZhciBlPXRoaXMuX2dldEF0dHJUb1Byb2plY3RvcigpLG49cGd0LlBsb3QuX3NjYWxlZEFjY2Vzc29yKHRoaXMuc3ltYm9sKCkpO2UuZD1mdW5jdGlvbih0LGUsaSl7cmV0dXJuIG4odCxlLGkpKDApKG51bGwpfSx0LnB1c2goe2F0dHJUb1Byb2plY3RvcjplLGFuaW1hdG9yOnRoaXMuX2dldEFuaW1hdG9yKFZndC5BbmltYXRvci5SRVNFVCl9KX1yZXR1cm4gdC5wdXNoKHthdHRyVG9Qcm9qZWN0b3I6dGhpcy5fZ2V0QXR0clRvUHJvamVjdG9yKCksYW5pbWF0b3I6dGhpcy5fZ2V0QW5pbWF0b3IoVmd0LkFuaW1hdG9yLk1BSU4pfSksdH0sZS5wcm90b3R5cGUuX3Byb3BlcnR5UHJvamVjdG9ycz1mdW5jdGlvbigpe3ZhciBlPXQucHJvdG90eXBlLl9wcm9wZXJ0eVByb2plY3RvcnMuY2FsbCh0aGlzKSxuPXBndC5QbG90Ll9zY2FsZWRBY2Nlc3Nvcih0aGlzLngoKSksaT1wZ3QuUGxvdC5fc2NhbGVkQWNjZXNzb3IodGhpcy55KCkpO3JldHVybiBlLng9bixlLnk9aSxlLnRyYW5zZm9ybT1mdW5jdGlvbih0LGUscil7cmV0dXJuInRyYW5zbGF0ZSgiK24odCxlLHIpKyIsIitpKHQsZSxyKSsiKSJ9LGUuZD10aGlzLl9jb25zdHJ1Y3RTeW1ib2xHZW5lcmF0b3IoKSxlfSxlLnByb3RvdHlwZS5fY29uc3RydWN0U3ltYm9sR2VuZXJhdG9yPWZ1bmN0aW9uKCl7dmFyIHQ9cGd0LlBsb3QuX3NjYWxlZEFjY2Vzc29yKHRoaXMuc3ltYm9sKCkpLGU9cGd0LlBsb3QuX3NjYWxlZEFjY2Vzc29yKHRoaXMuc2l6ZSgpKTtyZXR1cm4gZnVuY3Rpb24obixpLHIpe3JldHVybiB0KG4saSxyKShlKG4saSxyKSkobnVsbCl9fSxlLnByb3RvdHlwZS5fZW50aXR5Qm91bmRzPWZ1bmN0aW9uKHQpe3JldHVybnt4OnQucG9zaXRpb24ueC10LmRpYW1ldGVyLzIseTp0LnBvc2l0aW9uLnktdC5kaWFtZXRlci8yLHdpZHRoOnQuZGlhbWV0ZXIsaGVpZ2h0OnQuZGlhbWV0ZXJ9fSxlLnByb3RvdHlwZS5fZW50aXR5VmlzaWJsZU9uUGxvdD1mdW5jdGlvbih0LGUpe3ZhciBuPXttaW46ZS50b3BMZWZ0LngsbWF4OmUuYm90dG9tUmlnaHQueH0saT17bWluOmUudG9wTGVmdC55LG1heDplLmJvdHRvbVJpZ2h0Lnl9LHI9dGhpcy5fZW50aXR5Qm91bmRzKHQpO3JldHVybiB1bXQuRE9NLmludGVyc2VjdHNCQm94KG4saSxyKX0sZS5wcm90b3R5cGUuZW50aXRpZXNBdD1mdW5jdGlvbih0KXt2YXIgZT1wZ3QuUGxvdC5fc2NhbGVkQWNjZXNzb3IodGhpcy54KCkpLG49cGd0LlBsb3QuX3NjYWxlZEFjY2Vzc29yKHRoaXMueSgpKSxpPXBndC5QbG90Ll9zY2FsZWRBY2Nlc3Nvcih0aGlzLnNpemUoKSk7cmV0dXJuIHRoaXMuZW50aXRpZXMoKS5maWx0ZXIoKGZ1bmN0aW9uKHIpe3ZhciBvPXIuZGF0dW0sYT1yLmluZGV4LHM9ci5kYXRhc2V0LGw9ZShvLGEscyksYz1uKG8sYSxzKSx1PWkobyxhLHMpO3JldHVybiBsLXUvMjw9dC54JiZ0Lng8PWwrdS8yJiZjLXUvMjw9dC55JiZ0Lnk8PWMrdS8yfSkpfSxlLnByb3RvdHlwZS5sYWJlbHNFbmFibGVkPWZ1bmN0aW9uKHQpe3JldHVybiBudWxsPT10P3RoaXMuX2xhYmVsc0VuYWJsZWQ6KHRoaXMuX2xhYmVsc0VuYWJsZWQ9dCx0aGlzLl9jbGVhckF0dHJUb1Byb2plY3RvckNhY2hlKCksdGhpcy5yZW5kZXIoKSx0aGlzKX0sZS5wcm90b3R5cGUuX2NyZWF0ZU5vZGVzRm9yRGF0YXNldD1mdW5jdGlvbihuKXt2YXIgaT10LnByb3RvdHlwZS5fY3JlYXRlTm9kZXNGb3JEYXRhc2V0LmNhbGwodGhpcyxuKSxyPXRoaXMuX3JlbmRlckFyZWEuYXBwZW5kKCJnIikuY2xhc3NlZChlLl9MQUJFTF9BUkVBX0NMQVNTLCEwKSxvPW5ldyBxZnQuU3ZnQ29udGV4dChyLm5vZGUoKSksYT1uZXcgcWZ0LkNhY2hlTWVhc3VyZXIobykscz1uZXcgcWZ0LldyaXRlcihhLG8pO3JldHVybiB0aGlzLl9sYWJlbENvbmZpZy5zZXQobix7bGFiZWxBcmVhOnIsbWVhc3VyZXI6YSx3cml0ZXI6c30pLGl9LGUucHJvdG90eXBlLl9yZW1vdmVEYXRhc2V0Tm9kZXM9ZnVuY3Rpb24oZSl7dC5wcm90b3R5cGUuX3JlbW92ZURhdGFzZXROb2Rlcy5jYWxsKHRoaXMsZSk7dmFyIG49dGhpcy5fbGFiZWxDb25maWcuZ2V0KGUpO251bGwhPW4mJihuLmxhYmVsQXJlYS5yZW1vdmUoKSx0aGlzLl9sYWJlbENvbmZpZy5kZWxldGUoZSkpfSxlLnByb3RvdHlwZS5fYWRkaXRpb25hbFBhaW50PWZ1bmN0aW9uKHQpe3ZhciBlPXRoaXM7dGhpcy5kYXRhc2V0cygpLmZvckVhY2goKGZ1bmN0aW9uKHQpe3JldHVybiBlLl9sYWJlbENvbmZpZy5nZXQodCkubGFiZWxBcmVhLnNlbGVjdEFsbCgiZyIpLnJlbW92ZSgpfSkpLHRoaXMuX2xhYmVsc0VuYWJsZWQmJnVtdC5XaW5kb3cuc2V0VGltZW91dCgoZnVuY3Rpb24oKXtyZXR1cm4gZS5fZHJhd0xhYmVscygpfSksdCl9LGUucHJvdG90eXBlLl9kcmF3TGFiZWxzPWZ1bmN0aW9uKCl7dmFyIHQ9dGhpcyxlPXRoaXMuX2dldERhdGFUb0RyYXcoKSxuPXRoaXMuX2dldEF0dHJUb1Byb2plY3RvcigpO3RoaXMuZGF0YXNldHMoKS5mb3JFYWNoKChmdW5jdGlvbihpKXtmb3IodmFyIHI9ZS5nZXQoaSksbz1yLmxlbmd0aCxhPTA7YTxvO2ErKyl7dmFyIHM9clthXTtudWxsIT1zJiZ0Ll9kcmF3TGFiZWwocyxhLGksbil9fSkpfSxlLnByb3RvdHlwZS5fZHJhd0xhYmVsPWZ1bmN0aW9uKHQsZSxuLGkpe2lmKG51bGwhPXQubGFiZWwpe3ZhciByPXRoaXMuX2xhYmVsQ29uZmlnLmdldChuKSxvPXIubGFiZWxBcmVhLGE9ci5tZWFzdXJlcixzPXIud3JpdGVyLGw9e3g6aS54KHQsZSxuKSx5OmkueSh0LGUsbil9LGM9cGd0LlBsb3QuX3NjYWxlZEFjY2Vzc29yKHRoaXMuc2l6ZSgpKSh0LGUsbiksdT10aGlzLl9sYWJlbEZvcm1hdHRlcih0LmxhYmVsLHQsZSxuKSxoPWEubWVhc3VyZSh1KSxkPXRoaXMuX2NhbGN1bGF0ZUxhYmVsUHJvcGVydGllcyhsLGMsaCkscD1kLmNvbnRhaW5lckRpbWVuc2lvbnMsZj1kLmFsaWdubWVudCxtPXRoaXMuX2NyZWF0ZUxhYmVsQ29udGFpbmVyKG8sZC5sYWJlbENvbnRhaW5lck9yaWdpbixkLmxhYmVsT3JpZ2luLGgpO3Mud3JpdGUodSxwLndpZHRoLHAuaGVpZ2h0LHt4QWxpZ246Zi54LHlBbGlnbjpmLnl9LG0ubm9kZSgpKX19LGUucHJvdG90eXBlLl9jYWxjdWxhdGVMYWJlbFByb3BlcnRpZXM9ZnVuY3Rpb24odCxuLGkpe3JldHVybntjb250YWluZXJEaW1lbnNpb25zOnt3aWR0aDppLndpZHRoLGhlaWdodDppLmhlaWdodH0sbGFiZWxDb250YWluZXJPcmlnaW46e3g6dC54LWkud2lkdGgvMix5OnQueS1pLmhlaWdodC8yKyhuPGkuaGVpZ2h0P24vMitlLl9MQUJFTF9NQVJHSU5fRlJPTV9CVUJCTEU6MCl9LGxhYmVsT3JpZ2luOnt4OnQueCx5OnQueX0sYWxpZ25tZW50Ont4OiJjZW50ZXIiLHk6ImNlbnRlciJ9fX0sZS5wcm90b3R5cGUuX2NyZWF0ZUxhYmVsQ29udGFpbmVyPWZ1bmN0aW9uKHQsZSxuLGkpe3ZhciByPXQuYXBwZW5kKCJnIikuYXR0cigidHJhbnNmb3JtIiwidHJhbnNsYXRlKCIrZS54KyIsICIrZS55KyIpIik7cmV0dXJuIHIuY2xhc3NlZCgib24tYmFyLWxhYmVsIiwhMCkscn0sZS5fU0laRV9LRVk9InNpemUiLGUuX1NZTUJPTF9LRVk9InN5bWJvbCIsZS5fTEFCRUxfQVJFQV9DTEFTUz0ic2NhdHRlci1sYWJlbC10ZXh0LWFyZWEiLGUuX0xBQkVMX01BUkdJTl9GUk9NX0JVQkJMRT0xNSxlfSkoa2d0LlhZUGxvdCk7ZS5TY2F0dGVyPW59KSksRGd0PWJlKChmdW5jdGlvbih0LGUpewovKioKICAgICAqIENvcHlyaWdodCAyMDE0LXByZXNlbnQgUGFsYW50aXIgVGVjaG5vbG9naWVzCiAgICAgKiBAbGljZW5zZSBNSVQKICAgICAqLwpPYmplY3QuZGVmaW5lUHJvcGVydHkoZSwiX19lc01vZHVsZSIse3ZhbHVlOiEwfSk7dmFyIG49KGZ1bmN0aW9uKHQpe2Z1bmN0aW9uIGUoKXt2YXIgZT10LmNhbGwodGhpcyl8fHRoaXM7cmV0dXJuIGUuYWRkQ2xhc3MoInNlZ21lbnQtcGxvdCIpLGUuYXR0cigic3Ryb2tlIiwobmV3IGttdC5Db2xvcikucmFuZ2UoKVswXSksZS5hdHRyKCJzdHJva2Utd2lkdGgiLCIycHgiKSxlfXJldHVybiBTZnQuX19leHRlbmRzKGUsdCksZS5wcm90b3R5cGUuX2NyZWF0ZURyYXdlcj1mdW5jdGlvbigpe3JldHVybiBuZXcgdWd0LlByb3h5RHJhd2VyKChmdW5jdGlvbigpe3JldHVybiBuZXcgRWd0LlNlZ21lbnRTVkdEcmF3ZXJ9KSwoZnVuY3Rpb24oKXtyZXR1cm4gbm10Lndhcm4oImNhbnZhcyByZW5kZXJlciBpcyBub3Qgc3VwcG9ydGVkIG9uIFNlZ21lbnQgUGxvdCEiKSxudWxsfSkpfSxlLnByb3RvdHlwZS5fZ2VuZXJhdGVEcmF3U3RlcHM9ZnVuY3Rpb24oKXtyZXR1cm5be2F0dHJUb1Byb2plY3Rvcjp0aGlzLl9nZXRBdHRyVG9Qcm9qZWN0b3IoKSxhbmltYXRvcjpuZXcgTWZ0Lk51bGx9XX0sZS5wcm90b3R5cGUuX2ZpbHRlckZvclByb3BlcnR5PWZ1bmN0aW9uKGUpe3JldHVybiB0LnByb3RvdHlwZS5fZmlsdGVyRm9yUHJvcGVydHkuY2FsbCh0aGlzLCJ4MiI9PT1lPyJ4IjoieTIiPT09ZT8ieSI6ZSl9LGUucHJvdG90eXBlLng9ZnVuY3Rpb24obixpKXtpZihudWxsPT1uKXJldHVybiB0LnByb3RvdHlwZS54LmNhbGwodGhpcyk7aWYobnVsbD09aSl0LnByb3RvdHlwZS54LmNhbGwodGhpcyxuKTtlbHNle3QucHJvdG90eXBlLnguY2FsbCh0aGlzLG4saSk7dmFyIHI9dGhpcy54MigpLG89ciYmci5hY2Nlc3NvcjtudWxsIT1vJiZ0aGlzLl9iaW5kUHJvcGVydHkoZS5fWDJfS0VZLG8saSl9cmV0dXJuIHRoaXN9LGUucHJvdG90eXBlLngyPWZ1bmN0aW9uKHQpe2lmKG51bGw9PXQpcmV0dXJuIHRoaXMuX3Byb3BlcnR5QmluZGluZ3MuZ2V0KGUuX1gyX0tFWSk7dmFyIG49dGhpcy54KCk7cmV0dXJuIHRoaXMuX2JpbmRQcm9wZXJ0eShlLl9YMl9LRVksdCxuJiZuLnNjYWxlKSx0aGlzLnJlbmRlcigpLHRoaXN9LGUucHJvdG90eXBlLnk9ZnVuY3Rpb24obixpKXtpZihudWxsPT1uKXJldHVybiB0LnByb3RvdHlwZS55LmNhbGwodGhpcyk7aWYobnVsbD09aSl0LnByb3RvdHlwZS55LmNhbGwodGhpcyxuKTtlbHNle3QucHJvdG90eXBlLnkuY2FsbCh0aGlzLG4saSk7dmFyIHI9dGhpcy55MigpLG89ciYmci5hY2Nlc3NvcjtudWxsIT1vJiZ0aGlzLl9iaW5kUHJvcGVydHkoZS5fWTJfS0VZLG8saSl9cmV0dXJuIHRoaXN9LGUucHJvdG90eXBlLnkyPWZ1bmN0aW9uKHQpe2lmKG51bGw9PXQpcmV0dXJuIHRoaXMuX3Byb3BlcnR5QmluZGluZ3MuZ2V0KGUuX1kyX0tFWSk7dmFyIG49dGhpcy55KCk7cmV0dXJuIHRoaXMuX2JpbmRQcm9wZXJ0eShlLl9ZMl9LRVksdCxuJiZuLnNjYWxlKSx0aGlzLnJlbmRlcigpLHRoaXN9LGUucHJvdG90eXBlLl9wcm9wZXJ0eVByb2plY3RvcnM9ZnVuY3Rpb24oKXt2YXIgZT10LnByb3RvdHlwZS5fcHJvcGVydHlQcm9qZWN0b3JzLmNhbGwodGhpcyk7cmV0dXJuIGUueDE9cGd0LlBsb3QuX3NjYWxlZEFjY2Vzc29yKHRoaXMueCgpKSxlLngyPW51bGw9PXRoaXMueDIoKT9wZ3QuUGxvdC5fc2NhbGVkQWNjZXNzb3IodGhpcy54KCkpOnBndC5QbG90Ll9zY2FsZWRBY2Nlc3Nvcih0aGlzLngyKCkpLGUueTE9cGd0LlBsb3QuX3NjYWxlZEFjY2Vzc29yKHRoaXMueSgpKSxlLnkyPW51bGw9PXRoaXMueTIoKT9wZ3QuUGxvdC5fc2NhbGVkQWNjZXNzb3IodGhpcy55KCkpOnBndC5QbG90Ll9zY2FsZWRBY2Nlc3Nvcih0aGlzLnkyKCkpLGV9LGUucHJvdG90eXBlLmVudGl0aWVzQXQ9ZnVuY3Rpb24odCl7dmFyIGU9dGhpcy5lbnRpdHlOZWFyZXN0KHQpO3JldHVybiBudWxsIT1lP1tlXTpbXX0sZS5wcm90b3R5cGUuZW50aXRpZXNJbj1mdW5jdGlvbih0LGUpe3ZhciBuLGk7cmV0dXJuIG51bGw9PWU/KG49e21pbjp0LnRvcExlZnQueCxtYXg6dC5ib3R0b21SaWdodC54fSxpPXttaW46dC50b3BMZWZ0LnksbWF4OnQuYm90dG9tUmlnaHQueX0pOihuPXQsaT1lKSx0aGlzLl9lbnRpdGllc0ludGVyc2VjdGluZyhuLGkpfSxlLnByb3RvdHlwZS5fZW50aXRpZXNJbnRlcnNlY3Rpbmc9ZnVuY3Rpb24odCxlKXtmb3IodmFyIG49W10saT10aGlzLl9nZXRBdHRyVG9Qcm9qZWN0b3IoKSxyPXRoaXMuZW50aXRpZXMoKSxvPXIubGVuZ3RoLGE9MDthPG87YSsrKXt2YXIgcz1yW2FdO3RoaXMuX2xpbmVJbnRlcnNlY3RzQm94KHMsdCxlLGkpJiZuLnB1c2gocyl9cmV0dXJuIG59LGUucHJvdG90eXBlLl9saW5lSW50ZXJzZWN0c0JveD1mdW5jdGlvbih0LGUsbixpKXt2YXIgcj10aGlzLG89aS54MSh0LmRhdHVtLHQuaW5kZXgsdC5kYXRhc2V0KSxhPWkueDIodC5kYXR1bSx0LmluZGV4LHQuZGF0YXNldCkscz1pLnkxKHQuZGF0dW0sdC5pbmRleCx0LmRhdGFzZXQpLGw9aS55Mih0LmRhdHVtLHQuaW5kZXgsdC5kYXRhc2V0KTtpZihlLm1pbjw9byYmbzw9ZS5tYXgmJm4ubWluPD1zJiZzPD1uLm1heHx8ZS5taW48PWEmJmE8PWUubWF4JiZuLm1pbjw9bCYmbDw9bi5tYXgpcmV0dXJuITA7dmFyIGM9e3g6byx5OnN9LHU9e3g6YSx5Omx9LGg9W3t4OmUubWluLHk6bi5taW59LHt4OmUubWluLHk6bi5tYXh9LHt4OmUubWF4LHk6bi5tYXh9LHt4OmUubWF4LHk6bi5taW59XTtyZXR1cm4gaC5maWx0ZXIoKGZ1bmN0aW9uKHQsZSl7cmV0dXJuIDAhPT1lJiZyLl9saW5lSW50ZXJzZWN0c1NlZ21lbnQoYyx1LHQsaFtlLTFdKSYmci5fbGluZUludGVyc2VjdHNTZWdtZW50KHQsaFtlLTFdLGMsdSl9KSkubGVuZ3RoPjB9LGUucHJvdG90eXBlLl9saW5lSW50ZXJzZWN0c1NlZ21lbnQ9ZnVuY3Rpb24odCxlLG4saSl7dmFyIHI9ZnVuY3Rpb24odCxlLG4pe3JldHVybihlLngtdC54KSoobi55LWUueSktKGUueS10LnkpKihuLngtZS54KX07cmV0dXJuIHIodCxlLG4pKnIodCxlLGkpPDB9LGUuX1gyX0tFWT0ieDIiLGUuX1kyX0tFWT0ieTIiLGV9KShrZ3QuWFlQbG90KTtlLlNlZ21lbnQ9bn0pKSxCZ3Q9YmUoKGZ1bmN0aW9uKHQsZSl7Ci8qKgogICAgICogQ29weXJpZ2h0IDIwMTQtcHJlc2VudCBQYWxhbnRpciBUZWNobm9sb2dpZXMKICAgICAqIEBsaWNlbnNlIE1JVAogICAgICovCk9iamVjdC5kZWZpbmVQcm9wZXJ0eShlLCJfX2VzTW9kdWxlIix7dmFsdWU6ITB9KTt2YXIgbj0oZnVuY3Rpb24odCl7ZnVuY3Rpb24gZSgpe3ZhciBlPXQuY2FsbCh0aGlzKXx8dGhpcztyZXR1cm4gZS5fc3RhY2tpbmdSZXN1bHQ9bGd0Lm1lbVRodW5rKChmdW5jdGlvbigpe3JldHVybiBlLmRhdGFzZXRzKCl9KSwoZnVuY3Rpb24oKXtyZXR1cm4gZS54KCkuYWNjZXNzb3J9KSwoZnVuY3Rpb24oKXtyZXR1cm4gZS55KCkuYWNjZXNzb3J9KSwoZnVuY3Rpb24oKXtyZXR1cm4gZS5fc3RhY2tpbmdPcmRlcn0pLChmdW5jdGlvbih0LGUsbixpKXtyZXR1cm4gdW10LlN0YWNraW5nLnN0YWNrKHQsZSxuLGkpfSkpLGUuX3N0YWNrZWRFeHRlbnQ9bGd0Lm1lbVRodW5rKGUuX3N0YWNraW5nUmVzdWx0LChmdW5jdGlvbigpe3JldHVybiBlLngoKS5hY2Nlc3Nvcn0pLChmdW5jdGlvbigpe3JldHVybiBlLl9maWx0ZXJGb3JQcm9wZXJ0eSgieSIpfSksKGZ1bmN0aW9uKHQsZSxuKXtyZXR1cm4gdW10LlN0YWNraW5nLnN0YWNrZWRFeHRlbnQodCxlLG4pfSkpLGUuX2Jhc2VsaW5lVmFsdWU9MCxlLl9zdGFja2luZ09yZGVyPSJib3R0b211cCIsZS5hZGRDbGFzcygic3RhY2tlZC1hcmVhLXBsb3QiKSxlLl9iYXNlbGluZVZhbHVlUHJvdmlkZXI9ZnVuY3Rpb24oKXtyZXR1cm5bZS5fYmFzZWxpbmVWYWx1ZV19LGUuY3JvcHBlZFJlbmRlcmluZ0VuYWJsZWQoITEpLGV9cmV0dXJuIFNmdC5fX2V4dGVuZHMoZSx0KSxlLnByb3RvdHlwZS5jcm9wcGVkUmVuZGVyaW5nRW5hYmxlZD1mdW5jdGlvbihlKXtyZXR1cm4gbnVsbD09ZT90LnByb3RvdHlwZS5jcm9wcGVkUmVuZGVyaW5nRW5hYmxlZC5jYWxsKHRoaXMpOmU/KHVtdC5XaW5kb3cud2FybigiV2FybmluZzogU3RhY2tlZCBBcmVhIFBsb3QgZG9lcyBub3Qgc3VwcG9ydCBjcm9wcGVkIHJlbmRlcmluZy4iKSx0aGlzKTp0LnByb3RvdHlwZS5jcm9wcGVkUmVuZGVyaW5nRW5hYmxlZC5jYWxsKHRoaXMsZSl9LGUucHJvdG90eXBlLl9nZXRBbmltYXRvcj1mdW5jdGlvbih0KXtyZXR1cm4gbmV3IE1mdC5OdWxsfSxlLnByb3RvdHlwZS5fc2V0dXA9ZnVuY3Rpb24oKXt0LnByb3RvdHlwZS5fc2V0dXAuY2FsbCh0aGlzKSx0aGlzLl9iYXNlbGluZT10aGlzLl9yZW5kZXJBcmVhLmFwcGVuZCgibGluZSIpLmNsYXNzZWQoImJhc2VsaW5lIiwhMCl9LGUucHJvdG90eXBlLng9ZnVuY3Rpb24oZSxuKXtyZXR1cm4gbnVsbD09ZT90LnByb3RvdHlwZS54LmNhbGwodGhpcyk6KG51bGw9PW4/dC5wcm90b3R5cGUueC5jYWxsKHRoaXMsZSk6dC5wcm90b3R5cGUueC5jYWxsKHRoaXMsZSxuKSx0aGlzLl9jaGVja1NhbWVEb21haW4oKSx0aGlzKX0sZS5wcm90b3R5cGUueT1mdW5jdGlvbihlLG4pe3JldHVybiBudWxsPT1lP3QucHJvdG90eXBlLnkuY2FsbCh0aGlzKToobnVsbD09bj90LnByb3RvdHlwZS55LmNhbGwodGhpcyxlKTp0LnByb3RvdHlwZS55LmNhbGwodGhpcyxlLG4pLHRoaXMuX2NoZWNrU2FtZURvbWFpbigpLHRoaXMpfSxlLnByb3RvdHlwZS55T2Zmc2V0PWZ1bmN0aW9uKHQsZSl7dmFyIG49dGhpcy5fc3RhY2tpbmdSZXN1bHQoKTtpZihudWxsIT1uKXt2YXIgaT1uLmdldCh0KTtpZihudWxsIT1pKXt2YXIgcj1pLmdldChTdHJpbmcoZSkpO2lmKG51bGwhPXIpcmV0dXJuIHIub2Zmc2V0fX19LGUucHJvdG90eXBlLnN0YWNraW5nT3JkZXI9ZnVuY3Rpb24odCl7cmV0dXJuIG51bGw9PXQ/dGhpcy5fc3RhY2tpbmdPcmRlcjoodGhpcy5fc3RhY2tpbmdPcmRlcj10LHRoaXMuX29uRGF0YXNldFVwZGF0ZSgpLHRoaXMpfSxlLnByb3RvdHlwZS5kb3duc2FtcGxpbmdFbmFibGVkPWZ1bmN0aW9uKGUpe3JldHVybiBudWxsPT1lP3QucHJvdG90eXBlLmRvd25zYW1wbGluZ0VuYWJsZWQuY2FsbCh0aGlzKToodW10LldpbmRvdy53YXJuKCJXYXJuaW5nOiBTdGFja2VkIEFyZWEgUGxvdCBkb2VzIG5vdCBzdXBwb3J0IGRvd25zYW1wbGluZyIpLHRoaXMpfSxlLnByb3RvdHlwZS5fYWRkaXRpb25hbFBhaW50PWZ1bmN0aW9uKCl7dmFyIHQ9dGhpcy55KCkuc2NhbGUuc2NhbGUodGhpcy5fYmFzZWxpbmVWYWx1ZSksZT17eDE6MCx5MTp0LHgyOnRoaXMud2lkdGgoKSx5Mjp0fTt0aGlzLl9nZXRBbmltYXRvcigiYmFzZWxpbmUiKS5hbmltYXRlKHRoaXMuX2Jhc2VsaW5lLGUpfSxlLnByb3RvdHlwZS5fdXBkYXRlWVNjYWxlPWZ1bmN0aW9uKCl7dmFyIHQ9dGhpcy55KCksZT10JiZ0LnNjYWxlO251bGwhPWUmJihlLmFkZFBhZGRpbmdFeGNlcHRpb25zUHJvdmlkZXIodGhpcy5fYmFzZWxpbmVWYWx1ZVByb3ZpZGVyKSxlLmFkZEluY2x1ZGVkVmFsdWVzUHJvdmlkZXIodGhpcy5fYmFzZWxpbmVWYWx1ZVByb3ZpZGVyKSl9LGUucHJvdG90eXBlLl9vbkRhdGFzZXRVcGRhdGU9ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5fY2hlY2tTYW1lRG9tYWluKCksdC5wcm90b3R5cGUuX29uRGF0YXNldFVwZGF0ZS5jYWxsKHRoaXMpLHRoaXN9LGUucHJvdG90eXBlLmdldEV4dGVudHNGb3JQcm9wZXJ0eT1mdW5jdGlvbihlKXtyZXR1cm4ieSI9PT1lP1t0aGlzLl9zdGFja2VkRXh0ZW50KCldOnQucHJvdG90eXBlLmdldEV4dGVudHNGb3JQcm9wZXJ0eS5jYWxsKHRoaXMsZSl9LGUucHJvdG90eXBlLl9jaGVja1NhbWVEb21haW49ZnVuY3Rpb24oKXtpZih0aGlzLl9wcm9qZWN0b3JzUmVhZHkoKSl7dmFyIHQ9dGhpcy5kYXRhc2V0cygpLG49dGhpcy54KCkuYWNjZXNzb3IsaT10Lm1hcCgoZnVuY3Rpb24odCl7cmV0dXJuIFVodC5zZXQodC5kYXRhKCkubWFwKChmdW5jdGlvbihlLGkpe3JldHVybiB1bXQuU3RhY2tpbmcubm9ybWFsaXplS2V5KG4oZSxpLHQpKX0pKSkudmFsdWVzKCl9KSkscj1lLl9kb21haW5LZXlzKHQsbik7aS5zb21lKChmdW5jdGlvbih0KXtyZXR1cm4gdC5sZW5ndGghPT1yLmxlbmd0aH0pKSYmdW10LldpbmRvdy53YXJuKCJ0aGUgZG9tYWlucyBhY3Jvc3MgdGhlIGRhdGFzZXRzIGFyZSBub3QgdGhlIHNhbWUuIFBsb3QgbWF5IHByb2R1Y2UgdW5pbnRlbmRlZCBiZWhhdmlvci4iKX19LGUuX2RvbWFpbktleXM9ZnVuY3Rpb24odCxlKXt2YXIgbj1VaHQuc2V0KCk7cmV0dXJuIHQuZm9yRWFjaCgoZnVuY3Rpb24odCl7Zm9yKHZhciBpPXQuZGF0YSgpLHI9aS5sZW5ndGgsbz0wO288cjtvKyspbi5hZGQoZShpW29dLG8sdCkpfSkpLG4udmFsdWVzKCl9LGUucHJvdG90eXBlLl9jb29yZGluYXRlUHJvamVjdG9ycz1mdW5jdGlvbigpe3ZhciB0PXRoaXMsZT1wZ3QuUGxvdC5fc2NhbGVkQWNjZXNzb3IodGhpcy54KCkpLG49dGhpcy55KCkuYWNjZXNzb3IsaT10aGlzLngoKS5hY2Nlc3NvcixyPWZ1bmN0aW9uKHQsZSxuKXtyZXR1cm4gdW10LlN0YWNraW5nLm5vcm1hbGl6ZUtleShpKHQsZSxuKSl9LG89dGhpcy5fc3RhY2tpbmdSZXN1bHQoKTtyZXR1cm5bZSxmdW5jdGlvbihlLGksYSl7dmFyIHM9K24oZSxpLGEpLGw9by5nZXQoYSkuZ2V0KHIoZSxpLGEpKS5vZmZzZXQ7cmV0dXJuIHQueSgpLnNjYWxlLnNjYWxlKHMrbCl9LGZ1bmN0aW9uKGUsbixpKXt2YXIgYT1vLmdldChpKS5nZXQocihlLG4saSkpLm9mZnNldDtyZXR1cm4gdC55KCkuc2NhbGUuc2NhbGUoYSl9XX0sZS5wcm90b3R5cGUuX3Byb3BlcnR5UHJvamVjdG9ycz1mdW5jdGlvbigpe3ZhciBlPXQucHJvdG90eXBlLl9wcm9wZXJ0eVByb2plY3RvcnMuY2FsbCh0aGlzKSxuPXRoaXMuX2Nvb3JkaW5hdGVQcm9qZWN0b3JzKCk7cmV0dXJuIGUuZD10aGlzLl9jb25zdHJ1Y3RBcmVhUHJvamVjdG9yKG5bMF0sblsxXSxuWzJdKSxlfSxlLnByb3RvdHlwZS5fcGl4ZWxQb2ludD1mdW5jdGlvbihlLG4saSl7dmFyIHI9dC5wcm90b3R5cGUuX3BpeGVsUG9pbnQuY2FsbCh0aGlzLGUsbixpKSxvPXRoaXMueCgpLmFjY2Vzc29yKGUsbixpKSxhPXRoaXMueSgpLmFjY2Vzc29yKGUsbixpKSxzPXRoaXMueSgpLnNjYWxlLnNjYWxlKCthK3RoaXMuX3N0YWNraW5nUmVzdWx0KCkuZ2V0KGkpLmdldCh1bXQuU3RhY2tpbmcubm9ybWFsaXplS2V5KG8pKS5vZmZzZXQpO3JldHVybnt4OnIueCx5OnN9fSxlfSkoUGd0LkFyZWEpO2UuU3RhY2tlZEFyZWE9bn0pKSxIZ3Q9YmUoKGZ1bmN0aW9uKHQsZSl7Ci8qKgogICAgICogQ29weXJpZ2h0IDIwMTQtcHJlc2VudCBQYWxhbnRpciBUZWNobm9sb2dpZXMKICAgICAqIEBsaWNlbnNlIE1JVAogICAgICovCk9iamVjdC5kZWZpbmVQcm9wZXJ0eShlLCJfX2VzTW9kdWxlIix7dmFsdWU6ITB9KTt2YXIgbj0oZnVuY3Rpb24odCl7ZnVuY3Rpb24gZShlKXt2b2lkIDA9PT1lJiYoZT0idmVydGljYWwiKTt2YXIgbj10LmNhbGwodGhpcyxlKXx8dGhpcztyZXR1cm4gbi5fZXh0cmVtYUZvcm1hdHRlcj1mbXQuaWRlbnRpdHkoKSxuLl9zdGFja2luZ1Jlc3VsdD1sZ3QubWVtVGh1bmsoKGZ1bmN0aW9uKCl7cmV0dXJuIG4uZGF0YXNldHMoKX0pLChmdW5jdGlvbigpe3JldHVybiBuLnBvc2l0aW9uKCkuYWNjZXNzb3J9KSwoZnVuY3Rpb24oKXtyZXR1cm4gbi5sZW5ndGgoKS5hY2Nlc3Nvcn0pLChmdW5jdGlvbigpe3JldHVybiBuLl9zdGFja2luZ09yZGVyfSksKGZ1bmN0aW9uKHQsZSxuLGkpe3JldHVybiB1bXQuU3RhY2tpbmcuc3RhY2sodCxlLG4saSl9KSksbi5fc3RhY2tlZEV4dGVudD1sZ3QubWVtVGh1bmsobi5fc3RhY2tpbmdSZXN1bHQsKGZ1bmN0aW9uKCl7cmV0dXJuIG4ucG9zaXRpb24oKS5hY2Nlc3Nvcn0pLChmdW5jdGlvbigpe3JldHVybiBuLl9maWx0ZXJGb3JQcm9wZXJ0eShuLl9pc1ZlcnRpY2FsPyJ5IjoieCIpfSksKGZ1bmN0aW9uKHQsZSxuKXtyZXR1cm4gdW10LlN0YWNraW5nLnN0YWNrZWRFeHRlbnQodCxlLG4pfSkpLG4uYWRkQ2xhc3MoInN0YWNrZWQtYmFyLXBsb3QiKSxuLl9zdGFja2luZ09yZGVyPSJib3R0b211cCIsbn1yZXR1cm4gU2Z0Ll9fZXh0ZW5kcyhlLHQpLGUucHJvdG90eXBlLnN0YWNraW5nT3JkZXI9ZnVuY3Rpb24odCl7cmV0dXJuIG51bGw9PXQ/dGhpcy5fc3RhY2tpbmdPcmRlcjoodGhpcy5fc3RhY2tpbmdPcmRlcj10LHRoaXMuX29uRGF0YXNldFVwZGF0ZSgpLHRoaXMpfSxlLnByb3RvdHlwZS5leHRyZW1hRm9ybWF0dGVyPWZ1bmN0aW9uKHQpe3JldHVybiAwPT09YXJndW1lbnRzLmxlbmd0aD90aGlzLl9leHRyZW1hRm9ybWF0dGVyOih0aGlzLl9leHRyZW1hRm9ybWF0dGVyPXQsdGhpcy5yZW5kZXIoKSx0aGlzKX0sZS5wcm90b3R5cGUuX3NldHVwPWZ1bmN0aW9uKCl7dC5wcm90b3R5cGUuX3NldHVwLmNhbGwodGhpcyksdGhpcy5fbGFiZWxBcmVhPXRoaXMuX3JlbmRlckFyZWEuYXBwZW5kKCJnIikuY2xhc3NlZChJZ3QuQmFyLl9MQUJFTF9BUkVBX0NMQVNTLCEwKTt2YXIgZT1uZXcgcWZ0LlN2Z0NvbnRleHQodGhpcy5fbGFiZWxBcmVhLm5vZGUoKSk7dGhpcy5fbWVhc3VyZXI9bmV3IHFmdC5DYWNoZU1lYXN1cmVyKGUpLHRoaXMuX3dyaXRlcj1uZXcgcWZ0LldyaXRlcih0aGlzLl9tZWFzdXJlcixlKX0sZS5wcm90b3R5cGUuX2RyYXdMYWJlbHM9ZnVuY3Rpb24oKXt2YXIgbj10aGlzO3QucHJvdG90eXBlLl9kcmF3TGFiZWxzLmNhbGwodGhpcyksdGhpcy5fbGFiZWxBcmVhLnNlbGVjdEFsbCgiZyIpLnJlbW92ZSgpO3ZhciBpPSt0aGlzLmJhc2VsaW5lVmFsdWUoKSxyPXRoaXMucG9zaXRpb24oKS5zY2FsZSxvPXRoaXMubGVuZ3RoKCkuc2NhbGUsYT11bXQuU3RhY2tpbmcuc3RhY2tlZEV4dGVudHModGhpcy5fc3RhY2tpbmdSZXN1bHQoKSkscz1hLm1pbmltdW1FeHRlbnRzLGw9W10sYz1mdW5jdGlvbih0LGUpe3ZhciBhPW4uX2dlbmVyYXRlQXR0clRvUHJvamVjdG9yKCkscz1uLndpZHRoKCksYz1uLmhlaWdodCgpO3QuZm9yRWFjaCgoZnVuY3Rpb24odCl7aWYodC5leHRlbnQhPT1pKXt2YXIgdT1uLmV4dHJlbWFGb3JtYXR0ZXIoKSh0LmV4dGVudCksaD1uLl9tZWFzdXJlci5tZWFzdXJlKHUpLGQ9dC5zdGFja2VkRGF0dW0scD1kLm9yaWdpbmFsRGF0dW0sZj1kLm9yaWdpbmFsSW5kZXgsbT1kLm9yaWdpbmFsRGF0YXNldDtpZighbi5faXNEYXR1bU9uU2NyZWVuKGEscyxjLHAsZixtKSlyZXR1cm47dmFyIGc9cGd0LlBsb3QuX3NjYWxlZEFjY2Vzc29yKG4uYXR0cihJZ3QuQmFyLl9CQVJfVEhJQ0tORVNTX0tFWSkpKHAsZixtKSxfPW8uc2NhbGUodC5leHRlbnQpLHk9bi5fZ2V0UG9zaXRpb25BdHRyKHIuc2NhbGUodC5heGlzVmFsdWUpLGcpK2cvMix2PWUobi5faXNWZXJ0aWNhbD97eDp5LHk6X306e3g6Xyx5Onl9LGgsZyksYj0oZnVuY3Rpb24odCxlLGkpe3ZhciByPWUudG9wTGVmdCxvPXIueCxhPXIueSxzPWUuYm90dG9tUmlnaHQueC1lLnRvcExlZnQueCxsPWUuYm90dG9tUmlnaHQueS1lLnRvcExlZnQueSxjPW4uX2lzVmVydGljYWw/cz5pOmw+aTtpZighYyl7dmFyIHU9bi5fbGFiZWxBcmVhLmFwcGVuZCgiZyIpLmF0dHIoInRyYW5zZm9ybSIsInRyYW5zbGF0ZSgiK28rIiwgIithKyIpIik7dS5jbGFzc2VkKCJzdGFja2VkLWJhci1sYWJlbCIsITApLG4uX3dyaXRlci53cml0ZSh0LHMsbCx7eEFsaWduOiJjZW50ZXIiLHlBbGlnbjoiY2VudGVyIn0sdS5ub2RlKCkpfXJldHVybiBjfSkodSx7dG9wTGVmdDp2LGJvdHRvbVJpZ2h0Ont4OnYueCtoLndpZHRoLHk6di55K2guaGVpZ2h0fX0sZyk7bC5wdXNoKGIpfX0pKX07YyhhLm1heGltdW1FeHRlbnRzLChmdW5jdGlvbih0LGkscil7dmFyIG89bi5faXNWZXJ0aWNhbD9pLndpZHRoOmkuaGVpZ2h0O3JldHVybnt4Om4uX2lzVmVydGljYWw/dC54LW8vMjp0LngrZS5fRVhUUkVNQV9MQUJFTF9NQVJHSU5fRlJPTV9CQVIseTpuLl9pc1ZlcnRpY2FsP3QueS0obi5faXNWZXJ0aWNhbD9pLmhlaWdodDppLndpZHRoKTp0Lnktby8yfX0pKSxjKHMsKGZ1bmN0aW9uKHQsaSxyKXt2YXIgbz1uLl9pc1ZlcnRpY2FsP2kud2lkdGg6aS5oZWlnaHQ7cmV0dXJue3g6bi5faXNWZXJ0aWNhbD90Lngtby8yOnQueC0obi5faXNWZXJ0aWNhbD9pLmhlaWdodDppLndpZHRoKSx5Om4uX2lzVmVydGljYWw/dC55K2UuX0VYVFJFTUFfTEFCRUxfTUFSR0lOX0ZST01fQkFSOnQueS1vLzJ9fSkpLGwuc29tZSgoZnVuY3Rpb24odCl7cmV0dXJuIHR9KSkmJnRoaXMuX2xhYmVsQXJlYS5zZWxlY3RBbGwoImciKS5yZW1vdmUoKX0sZS5wcm90b3R5cGUuX2dlbmVyYXRlQXR0clRvUHJvamVjdG9yPWZ1bmN0aW9uKCl7dmFyIGU9dGhpcyxuPXQucHJvdG90eXBlLl9nZW5lcmF0ZUF0dHJUb1Byb2plY3Rvci5jYWxsKHRoaXMpLGk9dGhpcy5faXNWZXJ0aWNhbD8ieSI6IngiLHI9dGhpcy5sZW5ndGgoKS5zY2FsZSxvPXRoaXMubGVuZ3RoKCkuYWNjZXNzb3IsYT10aGlzLnBvc2l0aW9uKCkuYWNjZXNzb3Iscz1mdW5jdGlvbih0LGUsbil7cmV0dXJuIHVtdC5TdGFja2luZy5ub3JtYWxpemVLZXkoYSh0LGUsbikpfSxsPXRoaXMuX3N0YWNraW5nUmVzdWx0KCksYz1mdW5jdGlvbih0LGUsbil7cmV0dXJuIHIuc2NhbGUobC5nZXQobikuZ2V0KHModCxlLG4pKS5vZmZzZXQpfSx1PWZ1bmN0aW9uKHQsZSxuKXtyZXR1cm4gci5zY2FsZSgrbyh0LGUsbikrbC5nZXQobikuZ2V0KHModCxlLG4pKS5vZmZzZXQpfSxoPWZ1bmN0aW9uKHQsZSxuKXtyZXR1cm4gTWF0aC5hYnModSh0LGUsbiktYyh0LGUsbikpfTtuW3RoaXMuX2lzVmVydGljYWw/ImhlaWdodCI6IndpZHRoIl09aDt2YXIgZD1mdW5jdGlvbih0LGUsbil7cmV0dXJuK28odCxlLG4pPDA/Yyh0LGUsbik6dSh0LGUsbil9O3JldHVybiBuW2ldPWZ1bmN0aW9uKHQsbixpKXtyZXR1cm4gZS5faXNWZXJ0aWNhbD9kKHQsbixpKTpkKHQsbixpKS1oKHQsbixpKX0sbn0sZS5wcm90b3R5cGUuZ2V0RXh0ZW50c0ZvclByb3BlcnR5PWZ1bmN0aW9uKGUpe3JldHVybiBlPT09KHRoaXMuX2lzVmVydGljYWw/InkiOiJ4Iik/W3RoaXMuX3N0YWNrZWRFeHRlbnQoKV06dC5wcm90b3R5cGUuZ2V0RXh0ZW50c0ZvclByb3BlcnR5LmNhbGwodGhpcyxlKX0sZS5wcm90b3R5cGUuaW52YWxpZGF0ZUNhY2hlPWZ1bmN0aW9uKCl7dC5wcm90b3R5cGUuaW52YWxpZGF0ZUNhY2hlLmNhbGwodGhpcyksdGhpcy5fbWVhc3VyZXIucmVzZXQoKX0sZS5fRVhUUkVNQV9MQUJFTF9NQVJHSU5fRlJPTV9CQVI9NSxlfSkoSWd0LkJhcik7ZS5TdGFja2VkQmFyPW59KSksRmd0PWJlKChmdW5jdGlvbih0LGUpewovKioKICAgICAqIENvcHlyaWdodCAyMDE0LXByZXNlbnQgUGFsYW50aXIgVGVjaG5vbG9naWVzCiAgICAgKiBAbGljZW5zZSBNSVQKICAgICAqLwpPYmplY3QuZGVmaW5lUHJvcGVydHkoZSwiX19lc01vZHVsZSIse3ZhbHVlOiEwfSk7dmFyIG49KGZ1bmN0aW9uKHQpe2Z1bmN0aW9uIGUoKXt2YXIgZT10LmNhbGwodGhpcyl8fHRoaXM7cmV0dXJuIGUuX2Nvbm5lY3RvcnNFbmFibGVkPSExLGUuYWRkQ2xhc3MoIndhdGVyZmFsbC1wbG90IiksZX1yZXR1cm4gU2Z0Ll9fZXh0ZW5kcyhlLHQpLGUucHJvdG90eXBlLmNvbm5lY3RvcnNFbmFibGVkPWZ1bmN0aW9uKHQpe3JldHVybiBudWxsPT10P3RoaXMuX2Nvbm5lY3RvcnNFbmFibGVkOih0aGlzLl9jb25uZWN0b3JzRW5hYmxlZD10LHRoaXMpfSxlLnByb3RvdHlwZS50b3RhbD1mdW5jdGlvbih0KXtyZXR1cm4gbnVsbD09dD90aGlzLl9wcm9wZXJ0eUJpbmRpbmdzLmdldChlLl9UT1RBTF9LRVkpOih0aGlzLl9iaW5kUHJvcGVydHkoZS5fVE9UQUxfS0VZLHQsbnVsbCksdGhpcyl9LGUucHJvdG90eXBlLl9hZGRpdGlvbmFsUGFpbnQ9ZnVuY3Rpb24odCl7dmFyIGU9dGhpczt0aGlzLl9jb25uZWN0b3JBcmVhLnNlbGVjdEFsbCgibGluZSIpLnJlbW92ZSgpLHRoaXMuX2Nvbm5lY3RvcnNFbmFibGVkJiZ1bXQuV2luZG93LnNldFRpbWVvdXQoKGZ1bmN0aW9uKCl7cmV0dXJuIGUuX2RyYXdDb25uZWN0b3JzKCl9KSx0KX0sZS5wcm90b3R5cGUuX2NyZWF0ZU5vZGVzRm9yRGF0YXNldD1mdW5jdGlvbihuKXt2YXIgaT10LnByb3RvdHlwZS5fY3JlYXRlTm9kZXNGb3JEYXRhc2V0LmNhbGwodGhpcyxuKTtyZXR1cm4gdGhpcy5fY29ubmVjdG9yQXJlYT10aGlzLl9yZW5kZXJBcmVhLmFwcGVuZCgiZyIpLmNsYXNzZWQoZS5fQ09OTkVDVE9SX0FSRUFfQ0xBU1MsITApLGl9LGUucHJvdG90eXBlLmdldEV4dGVudHNGb3JQcm9wZXJ0eT1mdW5jdGlvbihlKXtyZXR1cm4ieSI9PT1lP1t0aGlzLl9leHRlbnRdOnQucHJvdG90eXBlLmdldEV4dGVudHNGb3JQcm9wZXJ0eS5jYWxsKHRoaXMsZSl9LGUucHJvdG90eXBlLl9nZW5lcmF0ZUF0dHJUb1Byb2plY3Rvcj1mdW5jdGlvbigpe3ZhciBuPXRoaXMsaT10LnByb3RvdHlwZS5fZ2VuZXJhdGVBdHRyVG9Qcm9qZWN0b3IuY2FsbCh0aGlzKSxyPXRoaXMueSgpLnNjYWxlLG89cGd0LlBsb3QuX3NjYWxlZEFjY2Vzc29yKHRoaXMudG90YWwoKSk7cmV0dXJuIG51bGw9PXRoaXMuYXR0cigieSIpJiYoaS55PWZ1bmN0aW9uKHQsZSxpKXt2YXIgYT1uLnkoKS5hY2Nlc3Nvcih0LGUsaSk7aWYobyh0LGUsaSkpcmV0dXJuIE1hdGgubWluKHIuc2NhbGUoYSksci5zY2FsZSgwKSk7dmFyIHM9bi5fc3VidG90YWxzW2VdO2lmKDA9PT1lKXJldHVybiByLnNjYWxlKGE8MD9zLWE6cyk7dmFyIGw9bi5fc3VidG90YWxzW2UtMV07cmV0dXJuIHIuc2NhbGUocz5sP3M6bCl9KSxudWxsPT10aGlzLmF0dHIoImhlaWdodCIpJiYoaS5oZWlnaHQ9ZnVuY3Rpb24odCxlLGkpe3ZhciBhPW8odCxlLGkpLHM9bi55KCkuYWNjZXNzb3IodCxlLGkpO2lmKGEpcmV0dXJuIE1hdGguYWJzKHIuc2NhbGUocyktci5zY2FsZSgwKSk7dmFyIGw9bi5fc3VidG90YWxzW2VdO2lmKDA9PT1lKXJldHVybiBNYXRoLmFicyhyLnNjYWxlKGwpLXIuc2NhbGUobC1zKSk7dmFyIGM9bi5fc3VidG90YWxzW2UtMV07cmV0dXJuIE1hdGguYWJzKHIuc2NhbGUobCktci5zY2FsZShjKSl9KSxpLmNsYXNzPWZ1bmN0aW9uKHQsaSxyKXt2YXIgYT0iIjtyZXR1cm4gbnVsbCE9bi5hdHRyKCJjbGFzcyIpJiYoYT1uLmF0dHIoImNsYXNzIikuYWNjZXNzb3IodCxpLHIpKyIgIiksbyh0LGkscik/YStlLl9CQVJfVE9UQUxfQ0xBU1M6YSsobi55KCkuYWNjZXNzb3IodCxpLHIpPjA/ZS5fQkFSX0dST1dUSF9DTEFTUzplLl9CQVJfREVDTElORV9DTEFTUyl9LGl9LGUucHJvdG90eXBlLl9vbkRhdGFzZXRVcGRhdGU9ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5fdXBkYXRlU3VidG90YWxzKCksdC5wcm90b3R5cGUuX29uRGF0YXNldFVwZGF0ZS5jYWxsKHRoaXMpLHRoaXN9LGUucHJvdG90eXBlLl9jYWxjdWxhdGVTdWJ0b3RhbHNBbmRFeHRlbnQ9ZnVuY3Rpb24odCl7Zm9yKHZhciBlPU51bWJlci5NQVhfVkFMVUUsbj1OdW1iZXIuTUlOX1ZBTFVFLGk9MCxyPSExLG89dC5kYXRhKCksYT1vLmxlbmd0aCxzPTA7czxhO3MrKyl7dmFyIGw9b1tzXSxjPXRoaXMueSgpLmFjY2Vzc29yKGwscyx0KSx1PXRoaXMudG90YWwoKS5hY2Nlc3NvcihsLHMsdCk7aWYodSYmMCE9PXN8fChpKz1jKSx0aGlzLl9zdWJ0b3RhbHMucHVzaChpKSxpPGUmJihlPWkpLGk+biYmKG49aSksdSYmKGM8ZSYmKGU9YyksYz5uJiYobj1jKSksIXImJnUpe2Zvcih2YXIgaD1jLWksZD0wO2Q8dGhpcy5fc3VidG90YWxzLmxlbmd0aDtkKyspdGhpcy5fc3VidG90YWxzW2RdKz1oO3I9ITAsaSs9aCxlKz1oLG4rPWh9fXRoaXMuX2V4dGVudD1bZSxuXX0sZS5wcm90b3R5cGUuX2RyYXdDb25uZWN0b3JzPWZ1bmN0aW9uKCl7Zm9yKHZhciB0PXRoaXMuX2dldEF0dHJUb1Byb2plY3RvcigpLG49dGhpcy5kYXRhc2V0cygpWzBdLGk9MTtpPG4uZGF0YSgpLmxlbmd0aDtpKyspe3ZhciByPWktMSxvPW4uZGF0YSgpW2ldLGE9bi5kYXRhKClbcl0scz10LngoYSxyLG4pLGw9dC54KG8saSxuKSt0LndpZHRoKG8saSxuKSxjPXQueShvLGksbik7KHRoaXMuX3N1YnRvdGFsc1tpXT4wJiZ0aGlzLl9zdWJ0b3RhbHNbaV0+dGhpcy5fc3VidG90YWxzW3JdfHx0aGlzLl9zdWJ0b3RhbHNbaV08MCYmdGhpcy5fc3VidG90YWxzW2ldPj10aGlzLl9zdWJ0b3RhbHNbcl0pJiYoYz10LnkobyxpLG4pK3QuaGVpZ2h0KG8saSxuKSksdGhpcy5fY29ubmVjdG9yQXJlYS5hcHBlbmQoImxpbmUiKS5jbGFzc2VkKGUuX0NPTk5FQ1RPUl9DTEFTUywhMCkuYXR0cigieDEiLHMpLmF0dHIoIngyIixsKS5hdHRyKCJ5MSIsYykuYXR0cigieTIiLGMpfX0sZS5wcm90b3R5cGUuX3VwZGF0ZVN1YnRvdGFscz1mdW5jdGlvbigpe3ZhciB0PXRoaXMuZGF0YXNldHMoKTtpZih0Lmxlbmd0aD4wKXt2YXIgZT10W3QubGVuZ3RoLTFdO3RoaXMuX3N1YnRvdGFscz1uZXcgQXJyYXksdGhpcy5fY2FsY3VsYXRlU3VidG90YWxzQW5kRXh0ZW50KGUpfX0sZS5fQkFSX0RFQ0xJTkVfQ0xBU1M9IndhdGVyZmFsbC1kZWNsaW5lIixlLl9CQVJfR1JPV1RIX0NMQVNTPSJ3YXRlcmZhbGwtZ3Jvd3RoIixlLl9CQVJfVE9UQUxfQ0xBU1M9IndhdGVyZmFsbC10b3RhbCIsZS5fQ09OTkVDVE9SX0NMQVNTPSJjb25uZWN0b3IiLGUuX0NPTk5FQ1RPUl9BUkVBX0NMQVNTPSJjb25uZWN0b3ItYXJlYSIsZS5fVE9UQUxfS0VZPSJ0b3RhbCIsZX0pKElndC5CYXIpO2UuV2F0ZXJmYWxsPW59KSksVmd0PWJlKChmdW5jdGlvbih0LGUpewovKioKICAgICAqIENvcHlyaWdodCAyMDE0LXByZXNlbnQgUGFsYW50aXIgVGVjaG5vbG9naWVzCiAgICAgKiBAbGljZW5zZSBNSVQKICAgICAqLwpPYmplY3QuZGVmaW5lUHJvcGVydHkoZSwiX19lc01vZHVsZSIse3ZhbHVlOiEwfSksU2Z0Ll9fZXhwb3J0U3RhcihQZ3QsZSksU2Z0Ll9fZXhwb3J0U3RhcihJZ3QsZSksU2Z0Ll9fZXhwb3J0U3RhcihlZ3QsZSksU2Z0Ll9fZXhwb3J0U3RhcihOZ3QsZSksU2Z0Ll9fZXhwb3J0U3RhcihMZ3QsZSksU2Z0Ll9fZXhwb3J0U3RhcihPZ3QsZSksU2Z0Ll9fZXhwb3J0U3RhcihSZ3QsZSksU2Z0Ll9fZXhwb3J0U3Rhcih6Z3QsZSksU2Z0Ll9fZXhwb3J0U3RhcihEZ3QsZSksU2Z0Ll9fZXhwb3J0U3RhcihCZ3QsZSksU2Z0Ll9fZXhwb3J0U3RhcihIZ3QsZSksU2Z0Ll9fZXhwb3J0U3RhcihGZ3QsZSl9KSksamd0PWJlKChmdW5jdGlvbih0LGUpewovKioKICAgICAqIENvcHlyaWdodCAyMDE0LXByZXNlbnQgUGFsYW50aXIgVGVjaG5vbG9naWVzCiAgICAgKiBAbGljZW5zZSBNSVQKICAgICAqLwpPYmplY3QuZGVmaW5lUHJvcGVydHkoZSwiX19lc01vZHVsZSIse3ZhbHVlOiEwfSksZS52ZXJzaW9uPSIzLjkuMCJ9KSksVWd0PWJlKChmdW5jdGlvbih0LGUpe09iamVjdC5kZWZpbmVQcm9wZXJ0eShlLCJfX2VzTW9kdWxlIix7dmFsdWU6ITB9KSxlLkFuaW1hdG9ycz1NZnQsZS5BeGVzPVBtdCxlLkNvbXBvbmVudHM9dmd0LGUuQ29uZmlncz1lbXQsZS5Gb3JtYXR0ZXJzPWZtdCxlLlJlbmRlckNvbnRyb2xsZXI9ZG10LGUuUmVuZGVyUG9saWNpZXM9aG10LGUuU3ltYm9sRmFjdG9yaWVzPVFtdCxlLkRpc3BhdGNoZXJzPXptdCxlLkRyYXdlcnM9Q2d0LGUuSW50ZXJhY3Rpb25zPVVtdCxlLlBsb3RzPVZndCxlLlNjYWxlcz1rbXQsZS5VdGlscz11bXQsU2Z0Ll9fZXhwb3J0U3RhcihtbXQsZSksZS5UaW1lSW50ZXJ2YWw9TG10LlRpbWVJbnRlcnZhbCxTZnQuX19leHBvcnRTdGFyKHBtdCxlKSxTZnQuX19leHBvcnRTdGFyKCRtdCxlKSxTZnQuX19leHBvcnRTdGFyKGlndCxlKSxlLnZlcnNpb249amd0LnZlcnNpb24sU2Z0Ll9fZXhwb3J0U3RhcihJbXQsZSksU2Z0Ll9fZXhwb3J0U3Rhcih1Z3QsZSksU2Z0Ll9fZXhwb3J0U3RhcihEbXQsZSksU2Z0Ll9fZXhwb3J0U3RhcihGbXQsZSksU2Z0Ll9fZXhwb3J0U3RhcihrZ3QsZSksU2Z0Ll9fZXhwb3J0U3RhcihwZ3QsZSksU2Z0Ll9fZXhwb3J0U3RhcihNbXQsZSksU2Z0Ll9fZXhwb3J0U3RhcihibXQsZSl9KSk7Y29uc3QgR2d0PVt7Y2hhcmFjdGVyOiLil7wiLG1ldGhvZDpVZ3QuU3ltYm9sRmFjdG9yaWVzLnNxdWFyZX0se2NoYXJhY3Rlcjoi4peGIixtZXRob2Q6VWd0LlN5bWJvbEZhY3Rvcmllcy5kaWFtb25kfSx7Y2hhcmFjdGVyOiLilrIiLG1ldGhvZDpVZ3QuU3ltYm9sRmFjdG9yaWVzLnRyaWFuZ2xlfSx7Y2hhcmFjdGVyOiLimIUiLG1ldGhvZDpVZ3QuU3ltYm9sRmFjdG9yaWVzLnN0YXJ9LHtjaGFyYWN0ZXI6IuKcmiIsbWV0aG9kOlVndC5TeW1ib2xGYWN0b3JpZXMuY3Jvc3N9XTt2YXIgV2d0O2Z1bmN0aW9uIHFndCh0KXtyZXR1cm4gZT0+e2xldCBuLGk9TWF0aC5hYnMoZSk7cmV0dXJuIGk8MWUtMTUmJihpPTApLG49cHkoaT49MWU0fHxpPjAmJmk8LjAxPyIuIit0KyJ+ZSI6Ii4iK3QrIn5nIiksbihlKX19IShmdW5jdGlvbih0KXt0LlNURVA9InN0ZXAiLHQuUkVMQVRJVkU9InJlbGF0aXZlIix0LldBTExfVElNRT0id2FsbF90aW1lIn0pKFdndHx8KFdndD17fSkpO2NvbnN0IFlndD1weSgiLjR+cyIpO2Z1bmN0aW9uIFhndCgpe2xldCB0PW5ldyBVZ3QuU2NhbGVzLkxpbmVhcjt0LnRpY2tHZW5lcmF0b3IoVWd0LlNjYWxlcy5UaWNrR2VuZXJhdG9ycy5pbnRlZ2VyVGlja0dlbmVyYXRvcigpKTtsZXQgZT1uZXcgVWd0LkF4ZXMuTnVtZXJpYyh0LCJib3R0b20iKTtyZXR1cm4gZS5mb3JtYXR0ZXIoWWd0KSx7c2NhbGU6dCxheGlzOmUsYWNjZXNzb3I6dD0+dC5zdGVwfX1sZXQgJGd0PVVndC5Gb3JtYXR0ZXJzLnRpbWUoIiVhICViICVlLCAlSDolTTolUyIpLEtndD0odCxlLG4pPT57aWYobnVsbCE9dC5yZWxhdGl2ZSlyZXR1cm4gdC5yZWxhdGl2ZTtsZXQgaT1uLmRhdGEoKTtyZXR1cm4oK3Qud2FsbF90aW1lLShpLmxlbmd0aD4wPytpWzBdLndhbGxfdGltZTowKSkvMzZlNX0sWmd0PXQ9PntsZXQgZT0iIixuPU1hdGguZmxvb3IodC8yNCk7dC09MjQqbixuJiYoZSs9bisiZCAiKTtsZXQgaT1NYXRoLmZsb29yKHQpO3QtPWksdCo9NjAsKGl8fG4pJiYoZSs9aSsiaCAiKTtsZXQgcj1NYXRoLmZsb29yKHQpO3JldHVybiB0LT1yLHQqPTYwLChyfHxpfHxuKSYmKGUrPXIrIm0gIiksZStNYXRoLmZsb29yKHQpKyJzIn07ZnVuY3Rpb24gSmd0KHQpe3N3aXRjaCh0KXtjYXNlIFdndC5TVEVQOnJldHVybiBYZ3QoKTtjYXNlIFdndC5XQUxMX1RJTUU6cmV0dXJuKGZ1bmN0aW9uIGUoKXtsZXQgdD1uZXcgVWd0LlNjYWxlcy5UaW1lO3JldHVybntzY2FsZTp0LGF4aXM6bmV3IFVndC5BeGVzLlRpbWUodCwiYm90dG9tIiksYWNjZXNzb3I6dD0+dC53YWxsX3RpbWV9fSkoKTtjYXNlIFdndC5SRUxBVElWRTpyZXR1cm4oZnVuY3Rpb24gbigpe2xldCB0PW5ldyBVZ3QuU2NhbGVzLkxpbmVhcjtyZXR1cm57c2NhbGU6dCxheGlzOm5ldyBVZ3QuQXhlcy5OdW1lcmljKHQsImJvdHRvbSIpLGFjY2Vzc29yOktndH19KSgpO2RlZmF1bHQ6dGhyb3cgbmV3IEVycm9yKCJpbnZhbGlkIHhUeXBlOiAiK3QpfX12YXIgUWd0O2Z1bmN0aW9uIHRfdCh0KXtyZXR1cm4gY2xhc3MgZXh0ZW5kcyB0e2NvbnN0cnVjdG9yKCl7c3VwZXIoLi4uYXJndW1lbnRzKSx0aGlzLmxvYWRLZXk9IiIsdGhpcy5kYXRhVG9Mb2FkPVtdLHRoaXMuZ2V0RGF0YUxvYWROYW1lPXQ9PlN0cmluZyh0KSx0aGlzLmRhdGFMb2FkaW5nPSExLHRoaXMuX2lzQ29ubmVjdGVkPSExLHRoaXMuX2RhdGFMb2FkU3RhdGU9bmV3IE1hcCx0aGlzLl9jYW5jZWxsZXI9bmV3IEVPLHRoaXMuX2xvYWREYXRhQXN5bmM9bnVsbCx0aGlzLl9sb2FkRGF0YT13ZS50aHJvdHRsZSh0aGlzLl9sb2FkRGF0YUltcGwsMTAwLHtsZWFkaW5nOiEwLHRyYWlsaW5nOiEwfSl9Y29ubmVjdGVkQ2FsbGJhY2soKXtzdXBlci5jb25uZWN0ZWRDYWxsYmFjaygpLHRoaXMuX2lzQ29ubmVjdGVkPSEwfWRpc2Nvbm5lY3RlZENhbGxiYWNrKCl7c3VwZXIuZGlzY29ubmVjdGVkQ2FsbGJhY2soKSx0aGlzLl9pc0Nvbm5lY3RlZD0hMX1zdGF0aWMgZ2V0IHByb3BlcnRpZXMoKXtyZXR1cm57YWN0aXZlOnt0eXBlOkJvb2xlYW4sb2JzZXJ2ZXI6Il9sb2FkRGF0YUlmQWN0aXZlIn0sX2lzQ29ubmVjdGVkOnt0eXBlOkJvb2xlYW59LGxvYWRLZXk6e3R5cGU6U3RyaW5nfSxkYXRhVG9Mb2FkOnt0eXBlOkFycmF5fSxnZXREYXRhTG9hZE5hbWU6e3R5cGU6T2JqZWN0fSxsb2FkRGF0YUNhbGxiYWNrOnt0eXBlOk9iamVjdH0scmVxdWVzdERhdGE6e3R5cGU6T2JqZWN0fX19c3RhdGljIGdldCBvYnNlcnZlcnMoKXtyZXR1cm5bIl9kYXRhVG9Mb2FkQ2hhbmdlZChfaXNDb25uZWN0ZWQsIGRhdGFUb0xvYWQuKikiXX1vbkxvYWRGaW5pc2goKXt9cmVsb2FkKCl7dGhpcy5fZGF0YUxvYWRTdGF0ZS5jbGVhcigpLHRoaXMuX2xvYWREYXRhKCl9cmVzZXQoKXtudWxsIT10aGlzLl9sb2FkRGF0YUFzeW5jJiYoY2xlYXJUaW1lb3V0KHRoaXMuX2xvYWREYXRhQXN5bmMpLHRoaXMuX2xvYWREYXRhQXN5bmM9bnVsbCksdGhpcy5fY2FuY2VsbGVyJiZ0aGlzLl9jYW5jZWxsZXIuY2FuY2VsQWxsKCksdGhpcy5fZGF0YUxvYWRTdGF0ZSYmdGhpcy5fZGF0YUxvYWRTdGF0ZS5jbGVhcigpLHRoaXMuX2lzQ29ubmVjdGVkJiZ0aGlzLl9sb2FkRGF0YSgpfV9kYXRhVG9Mb2FkQ2hhbmdlZCgpe3RoaXMuX2lzQ29ubmVjdGVkJiZ0aGlzLl9sb2FkRGF0YSgpfWRldGFjaGVkKCl7bnVsbCE9dGhpcy5fbG9hZERhdGFBc3luYyYmKGNsZWFyVGltZW91dCh0aGlzLl9sb2FkRGF0YUFzeW5jKSx0aGlzLl9sb2FkRGF0YUFzeW5jPW51bGwpfV9sb2FkRGF0YUlmQWN0aXZlKCl7dGhpcy5hY3RpdmUmJnRoaXMuX2xvYWREYXRhKCl9X2xvYWREYXRhSW1wbCgpe3RoaXMuYWN0aXZlJiYobnVsbCE9PXRoaXMuX2xvYWREYXRhQXN5bmMmJmNsZWFyVGltZW91dCh0aGlzLl9sb2FkRGF0YUFzeW5jKSx0aGlzLl9sb2FkRGF0YUFzeW5jPXNldFRpbWVvdXQodGhpcy5fY2FuY2VsbGVyLmNhbmNlbGxhYmxlKCh0PT57aWYodC5jYW5jZWxsZWQpcmV0dXJuO3RoaXMuZGF0YUxvYWRpbmc9ITA7Y29uc3QgZT10aGlzLmRhdGFUb0xvYWQuZmlsdGVyKCh0PT57Y29uc3QgZT10aGlzLmdldERhdGFMb2FkTmFtZSh0KTtyZXR1cm4hdGhpcy5fZGF0YUxvYWRTdGF0ZS5oYXMoZSl9KSk7Zm9yKGNvbnN0IHQgb2YgZSl7Y29uc3QgZT10aGlzLmdldERhdGFMb2FkTmFtZSh0KTt0aGlzLl9kYXRhTG9hZFN0YXRlLnNldChlLFFndC5MT0FESU5HKX1jb25zdCBuPXRoaXMuX2NhbmNlbGxlci5jYW5jZWxsYWJsZSgodD0+e2lmKHQuY2FuY2VsbGVkKXJldHVybjtjb25zdHtpdGVtOmUsZGF0YTpufT10LnZhbHVlLGk9dGhpcy5nZXREYXRhTG9hZE5hbWUoZSk7dGhpcy5fZGF0YUxvYWRTdGF0ZS5zZXQoaSxRZ3QuTE9BREVEKSx0aGlzLmxvYWREYXRhQ2FsbGJhY2sodGhpcyxlLG4pfSkpLGk9dGhpcy5fY2FuY2VsbGVyLmNhbmNlbGxhYmxlKCh0PT57aWYoIXQuY2FuY2VsbGVkKXtjb25zdCB0PW5ldyBTZXQoZS5tYXAoKHQ9PnRoaXMuZ2V0RGF0YUxvYWROYW1lKHQpKSkpO3RoaXMuZGF0YVRvTG9hZC5zb21lKChlPT50Lmhhcyh0aGlzLmdldERhdGFMb2FkTmFtZShlKSkpKSYmdGhpcy5vbkxvYWRGaW5pc2goKSx0aGlzLl9sb2FkRGF0YUFzeW5jPW51bGx9QXJyYXkuZnJvbSh0aGlzLl9kYXRhTG9hZFN0YXRlLnZhbHVlcygpKS5pbmNsdWRlcyhRZ3QuTE9BRElORyl8fCh0aGlzLmRhdGFMb2FkaW5nPSExKX0pKTt0aGlzLnJlcXVlc3REYXRhKGUsbiwoKCk9Pmkodm9pZCAwKSkpfSkpKSl9fX0hKGZ1bmN0aW9uKHQpe3RbdC5MT0FESU5HPTBdPSJMT0FESU5HIix0W3QuTE9BREVEPTFdPSJMT0FERUQifSkoUWd0fHwoUWd0PXt9KSksbmwoe21vZHVsZU5hbWU6InBsb3R0YWJsZS1zdHlsZSIsc3R5bGVDb250ZW50OiJcbiAgICBcbi5wbG90dGFibGUtY29sb3JzLTAge1xuICBiYWNrZ3JvdW5kLWNvbG9yOiAjNTI3OWM3OyAvKiBJTkRJR08gKi9cbn1cblxuLnBsb3R0YWJsZS1jb2xvcnMtMSB7XG4gIGJhY2tncm91bmQtY29sb3I6ICNmZDM3M2U7IC8qIENPUkFMX1JFRCAqL1xufVxuXG4ucGxvdHRhYmxlLWNvbG9ycy0yIHtcbiAgYmFja2dyb3VuZC1jb2xvcjogIzYzYzI2MTsgLyogRkVSTiAqL1xufVxuXG4ucGxvdHRhYmxlLWNvbG9ycy0zIHtcbiAgYmFja2dyb3VuZC1jb2xvcjogI2ZhZDQxOTsgLyogQlJJR0hUX1NVTiAqL1xufVxuXG4ucGxvdHRhYmxlLWNvbG9ycy00IHtcbiAgYmFja2dyb3VuZC1jb2xvcjogIzJjMmI2ZjsgLyogSkFDQVJUQSAqL1xufVxuXG4ucGxvdHRhYmxlLWNvbG9ycy01IHtcbiAgYmFja2dyb3VuZC1jb2xvcjogI2ZmNzkzOTsgLyogQlVSTklOR19PUkFOR0UgKi9cbn1cblxuLnBsb3R0YWJsZS1jb2xvcnMtNiB7XG4gIGJhY2tncm91bmQtY29sb3I6ICNkYjJlNjU7IC8qIENFUklTRV9SRUQgKi9cbn1cblxuLnBsb3R0YWJsZS1jb2xvcnMtNyB7XG4gIGJhY2tncm91bmQtY29sb3I6ICM5OWNlNTA7IC8qIENPTklGRVIgKi9cbn1cblxuLnBsb3R0YWJsZS1jb2xvcnMtOCB7XG4gIGJhY2tncm91bmQtY29sb3I6ICM5NjI1NjU7IC8qIFJPWUFMX0hFQVRIICovXG59XG5cbi5wbG90dGFibGUtY29sb3JzLTkge1xuICBiYWNrZ3JvdW5kLWNvbG9yOiAjMDZjY2NjOyAvKiBST0JJTlNfRUdHX0JMVUUgKi9cbn1cblxuLyoqXG4gKiBVc2VyLXN1cHBsaWVkIHJlbmRlclRvIGVsZW1lbnQuXG4gKi9cbi5wbG90dGFibGUge1xuICBkaXNwbGF5OiBibG9jazsgLyogbXVzdCBiZSBibG9jayBlbGVtZW50cyBmb3Igd2lkdGgvaGVpZ2h0IGNhbGN1bGF0aW9ucyB0byB3b3JrIGluIEZpcmVmb3guICovXG4gIHBvaW50ZXItZXZlbnRzOiB2aXNpYmxlRmlsbDtcbiAgcG9zaXRpb246IHJlbGF0aXZlO1xuICAvKipcbiAgICogUHJlIDMuMCwgdXNlcnMgY291bGQgc2V0IHRoZSBkaW1lbnNpb24gb2YgdGhlIHJvb3QgZWxlbWVudCBpbiB0d28gd2F5czogZWl0aGVyIHVzaW5nIENTU1xuICAgKiAoaW5saW5lIG9yIHRocm91Z2ggYSBzdHlsZXNoZWV0KSwgb3IgdXNpbmcgdGhlIFNWRyB3aWR0aC9oZWlnaHQgYXR0cmlidXRlcy4gQnkgZGVmYXVsdCwgd2VcbiAgICogc2V0IHRoZSBTVkcgd2lkdGgvaGVpZ2h0IGF0dHJpYnV0ZXMgdG8gMTAwJS5cbiAgICpcbiAgICogUG9zdCAzLjAgdGhlIHJvb3QgZWxlbWVudCBpcyBhbHdheXMgYSBub3JtYWwgZGl2IGFuZCB0aGUgb25seSB3YXkgdG8gc2V0IHRoZSBkaW1lbnNpb25zIGlzXG4gICAqIHRvIHVzZSBDU1MuIFRvIHJlcGxpY2F0ZSB0aGUgXCIxMDAlLWJ5LWRlZmF1bHRcIiBiZWhhdmlvciwgd2UgYXBwbHkgd2lkdGgvaGVpZ2h0IDEwMCUuXG4gICAqL1xuICB3aWR0aDogMTAwJTtcbiAgaGVpZ2h0OiAxMDAlO1xufVxuXG4vKipcbiAqIFRoZSBfZWxlbWVudCB0aGF0IHJvb3RzIGVhY2ggQ29tcG9uZW50J3MgRE9NLlxuICovXG4ucGxvdHRhYmxlIC5jb21wb25lbnQge1xuICAvKiBBbGxvdyBjb21wb25lbnRzIHRvIGJlIHBvc2l0aW9uZWQgd2l0aCBleHBsaWNpdCBsZWZ0L3RvcC93aWR0aC9oZWlnaHQgc3R5bGVzICovXG4gIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbn1cblxuLnBsb3R0YWJsZSAuYmFja2dyb3VuZC1jb250YWluZXIsXG4ucGxvdHRhYmxlIC5jb250ZW50LFxuLnBsb3R0YWJsZSAuZm9yZWdyb3VuZC1jb250YWluZXIge1xuICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gIHdpZHRoOiAxMDAlO1xuICBoZWlnaHQ6IDEwMCU7XG59XG5cbi8qKlxuICogRG9uJ3QgYWxsb3cgc3ZnIGVsZW1lbnRzIGFib3ZlIHRoZSBjb250ZW50IHRvIHN0ZWFsIGV2ZW50c1xuICovXG4ucGxvdHRhYmxlIC5mb3JlZ3JvdW5kLWNvbnRhaW5lciB7XG4gIHBvaW50ZXItZXZlbnRzOiBub25lO1xufVxuXG4ucGxvdHRhYmxlIC5jb21wb25lbnQtb3ZlcmZsb3ctaGlkZGVuIHtcbiAgb3ZlcmZsb3c6IGhpZGRlbjtcbn1cblxuLnBsb3R0YWJsZSAuY29tcG9uZW50LW92ZXJmbG93LXZpc2libGUge1xuICBvdmVyZmxvdzogdmlzaWJsZTtcbn1cblxuLnBsb3R0YWJsZSAucGxvdC1jYW52YXMtY29udGFpbmVyIHtcbiAgd2lkdGg6IDEwMCU7XG4gIGhlaWdodDogMTAwJTtcbiAgb3ZlcmZsb3c6IGhpZGRlbjtcbn1cblxuLnBsb3R0YWJsZSAucGxvdC1jYW52YXMge1xuICB3aWR0aDogMTAwJTtcbiAgaGVpZ2h0OiAxMDAlO1xuICAvKipcbiAgICogUGxheSB3ZWxsIHdpdGggZGVmZXJyZWQgcmVuZGVyaW5nLlxuICAgKi9cbiAgdHJhbnNmb3JtLW9yaWdpbjogMHB4IDBweCAwcHg7XG59XG5cbi5wbG90dGFibGUgdGV4dCB7XG4gIHRleHQtcmVuZGVyaW5nOiBnZW9tZXRyaWNQcmVjaXNpb247XG59XG5cbi5wbG90dGFibGUgLmxhYmVsIHRleHQge1xuICBmaWxsOiAjMzIzMTNGO1xufVxuXG4ucGxvdHRhYmxlIC5iYXItbGFiZWwtdGV4dC1hcmVhIHRleHQsXG4ucGxvdHRhYmxlIC5zY2F0dGVyLWxhYmVsLXRleHQtYXJlYSB0ZXh0IHtcbiAgZm9udC1zaXplOiAxMnB4O1xufVxuXG4ucGxvdHRhYmxlIC5sYWJlbC1hcmVhIHRleHQge1xuICBmaWxsOiAjMzIzMTNGO1xuICBmb250LXNpemU6IDE0cHg7XG59XG5cbi5wbG90dGFibGUgLmxpZ2h0LWxhYmVsIHRleHQge1xuICBmaWxsOiB3aGl0ZTtcbn1cblxuLnBsb3R0YWJsZSAuZGFyay1sYWJlbCB0ZXh0IHtcbiAgZmlsbDogIzMyMzEzRjtcbn1cblxuLnBsb3R0YWJsZSAub2ZmLWJhci1sYWJlbCB0ZXh0IHtcbiAgZmlsbDogIzMyMzEzRjtcbn1cblxuLnBsb3R0YWJsZSAuc3RhY2tlZC1iYXItbGFiZWwgdGV4dCB7XG4gIGZpbGw6ICMzMjMxM0Y7XG4gIGZvbnQtc3R5bGU6IG5vcm1hbDtcbn1cblxuLnBsb3R0YWJsZSAuc3RhY2tlZC1iYXItcGxvdCAub2ZmLWJhci1sYWJlbCB7XG4gIC8qIEhBQ0tIQUNLICMyNzk1OiBjb3JyZWN0IG9mZi1iYXIgbGFiZWwgbG9naWMgdG8gYmUgaW1wbGVtZW50ZWQgb24gU3RhY2tlZEJhciAqL1xuICB2aXNpYmlsaXR5OiBoaWRkZW4gIWltcG9ydGFudDtcbn1cblxuLnBsb3R0YWJsZSAuYXhpcy1sYWJlbCB0ZXh0IHtcbiAgZm9udC1zaXplOiAxMHB4O1xuICBmb250LXdlaWdodDogYm9sZDtcbiAgbGV0dGVyLXNwYWNpbmc6IDFweDtcbiAgbGluZS1oZWlnaHQ6IG5vcm1hbDtcbiAgdGV4dC10cmFuc2Zvcm06IHVwcGVyY2FzZTtcbn1cblxuLnBsb3R0YWJsZSAudGl0bGUtbGFiZWwgdGV4dCB7XG4gIGZvbnQtc2l6ZTogMjBweDtcbiAgZm9udC13ZWlnaHQ6IGJvbGQ7XG59XG5cbi5wbG90dGFibGUgLmF4aXMgbGluZS5iYXNlbGluZSB7XG4gIHN0cm9rZTogI0NDQztcbiAgc3Ryb2tlLXdpZHRoOiAxcHg7XG59XG5cbi5wbG90dGFibGUgLmF4aXMgbGluZS50aWNrLW1hcmsge1xuICBzdHJva2U6ICNDQ0M7XG4gIHN0cm9rZS13aWR0aDogMXB4O1xufVxuXG4ucGxvdHRhYmxlIC5heGlzIHRleHQge1xuICBmaWxsOiAjMzIzMTNGO1xuICBmb250LXNpemU6IDEycHg7XG4gIGZvbnQtd2VpZ2h0OiAyMDA7XG4gIGxpbmUtaGVpZ2h0OiBub3JtYWw7XG59XG5cbi5wbG90dGFibGUgLmF4aXMgLmFubm90YXRpb24tY2lyY2xlIHtcbiAgZmlsbDogd2hpdGU7XG4gIHN0cm9rZS13aWR0aDogMXB4O1xuICBzdHJva2U6ICNDQ0M7XG59XG5cbi5wbG90dGFibGUgLmF4aXMgLmFubm90YXRpb24tbGluZSB7XG4gIHN0cm9rZTogI0NDQztcbiAgc3Ryb2tlLXdpZHRoOiAxcHg7XG59XG5cbi5wbG90dGFibGUgLmF4aXMgLmFubm90YXRpb24tcmVjdCB7XG4gIHN0cm9rZTogI0NDQztcbiAgc3Ryb2tlLXdpZHRoOiAxcHg7XG4gIGZpbGw6IHdoaXRlO1xufVxuXG4ucGxvdHRhYmxlIC5iYXItcGxvdCAuYmFzZWxpbmUge1xuICBzdHJva2U6ICM5OTk7XG59XG5cbi5wbG90dGFibGUgLmdyaWRsaW5lcyBsaW5lIHtcbiAgc3Ryb2tlOiAjM0MzQzNDOyAvKiBoYWNraGFjazogZ3JpZGxpbmVzIHNob3VsZCBiZSBzb2xpZDsgc2VlICM4MjAgKi9cbiAgb3BhY2l0eTogMC4yNTtcbiAgc3Ryb2tlLXdpZHRoOiAxcHg7XG59XG5cbi5wbG90dGFibGUgLnNlbGVjdGlvbi1ib3gtbGF5ZXIgLnNlbGVjdGlvbi1hcmVhIHtcbiAgZmlsbDogYmxhY2s7XG4gIGZpbGwtb3BhY2l0eTogMC4wMztcbiAgc3Ryb2tlOiAjQ0NDO1xufVxuLyogRHJhZ0JveExheWVyICovXG4ucGxvdHRhYmxlIC5kcmFnLWJveC1sYXllci54LXJlc2l6YWJsZSAuZHJhZy1lZGdlLWxyIHtcbiAgY3Vyc29yOiBldy1yZXNpemU7XG59XG4ucGxvdHRhYmxlIC5kcmFnLWJveC1sYXllci55LXJlc2l6YWJsZSAuZHJhZy1lZGdlLXRiIHtcbiAgY3Vyc29yOiBucy1yZXNpemU7XG59XG5cbi5wbG90dGFibGUgLmRyYWctYm94LWxheWVyLngtcmVzaXphYmxlLnktcmVzaXphYmxlIC5kcmFnLWNvcm5lci10bCB7XG4gIGN1cnNvcjogbndzZS1yZXNpemU7XG59XG4ucGxvdHRhYmxlIC5kcmFnLWJveC1sYXllci54LXJlc2l6YWJsZS55LXJlc2l6YWJsZSAuZHJhZy1jb3JuZXItdHIge1xuICBjdXJzb3I6IG5lc3ctcmVzaXplO1xufVxuLnBsb3R0YWJsZSAuZHJhZy1ib3gtbGF5ZXIueC1yZXNpemFibGUueS1yZXNpemFibGUgLmRyYWctY29ybmVyLWJsIHtcbiAgY3Vyc29yOiBuZXN3LXJlc2l6ZTtcbn1cbi5wbG90dGFibGUgLmRyYWctYm94LWxheWVyLngtcmVzaXphYmxlLnktcmVzaXphYmxlIC5kcmFnLWNvcm5lci1iciB7XG4gIGN1cnNvcjogbndzZS1yZXNpemU7XG59XG5cbi5wbG90dGFibGUgLmRyYWctYm94LWxheWVyLm1vdmFibGUgLnNlbGVjdGlvbi1hcmVhIHtcbiAgY3Vyc29yOiBtb3ZlOyAvKiBJRSBmYWxsYmFjayAqL1xuICBjdXJzb3I6IC1tb3otZ3JhYjtcbiAgY3Vyc29yOiAtd2Via2l0LWdyYWI7XG4gIGN1cnNvcjogZ3JhYjtcbn1cblxuLnBsb3R0YWJsZSAuZHJhZy1ib3gtbGF5ZXIubW92YWJsZSAuc2VsZWN0aW9uLWFyZWE6YWN0aXZlIHtcbiAgY3Vyc29yOiAtbW96LWdyYWJiaW5nO1xuICBjdXJzb3I6IC13ZWJraXQtZ3JhYmJpbmc7XG4gIGN1cnNvcjogZ3JhYmJpbmc7XG59XG4vKiAvRHJhZ0JveExheWVyICovXG5cbi5wbG90dGFibGUgLmd1aWRlLWxpbmUtbGF5ZXIgbGluZS5ndWlkZS1saW5lIHtcbiAgc3Ryb2tlOiAjQ0NDO1xuICBzdHJva2Utd2lkdGg6IDFweDtcbn1cblxuLnBsb3R0YWJsZSAuZHJhZy1saW5lLWxheWVyLmVuYWJsZWQudmVydGljYWwgbGluZS5kcmFnLWVkZ2Uge1xuICBjdXJzb3I6IGV3LXJlc2l6ZTtcbn1cblxuLnBsb3R0YWJsZSAuZHJhZy1saW5lLWxheWVyLmVuYWJsZWQuaG9yaXpvbnRhbCBsaW5lLmRyYWctZWRnZSB7XG4gIGN1cnNvcjogbnMtcmVzaXplO1xufVxuXG4ucGxvdHRhYmxlIC5sZWdlbmQgdGV4dCB7XG4gIGZpbGw6ICMzMjMxM0Y7XG4gIGZvbnQtc2l6ZTogMTJweDtcbiAgZm9udC13ZWlnaHQ6IGJvbGQ7XG4gIGxpbmUtaGVpZ2h0OiBub3JtYWw7XG59XG5cbi5wbG90dGFibGUgLmludGVycG9sYXRlZC1jb2xvci1sZWdlbmQgcmVjdC5zd2F0Y2gtYm91bmRpbmctYm94IHtcbiAgZmlsbDogbm9uZTtcbiAgc3Ryb2tlOiAjQ0NDO1xuICBzdHJva2Utd2lkdGg6IDFweDtcbiAgcG9pbnRlci1ldmVudHM6IG5vbmU7XG59XG5cbi5wbG90dGFibGUgLndhdGVyZmFsbC1wbG90IGxpbmUuY29ubmVjdG9yIHtcbiAgc3Ryb2tlOiAjQ0NDO1xuICBzdHJva2Utd2lkdGg6IDFweDtcbn1cblxuLnBsb3R0YWJsZSAucGllLXBsb3QgLmFyYy5vdXRsaW5lIHtcbiAgc3Ryb2tlLWxpbmVqb2luOiByb3VuZDtcbn1cblxuIn0pO2NvbnN0IGVfdD1bMSwwLDAsMSwwLDBdO2NsYXNzIG5fdCBleHRlbmRzIFVndC5VdGlscy5UcmFuc2xhdG9ye2NvbXB1dGVQb3NpdGlvbih0LGUpe2NvbnN0IG49e3g6dCx5OmV9LGk9KGZ1bmN0aW9uIHIodCl7Y29uc3QgZT0oZnVuY3Rpb24gbih0KXtjb25zdCBlPVtdO2Zvcig7dCYmdCBpbnN0YW5jZW9mIEhUTUxFbGVtZW50OylpZihlLnB1c2godCksdC5hc3NpZ25lZFNsb3QpdD10LmFzc2lnbmVkU2xvdDtlbHNlIGlmKHQucGFyZW50RWxlbWVudCl0PXQucGFyZW50RWxlbWVudDtlbHNle2NvbnN0IGU9dC5wYXJlbnROb2RlO3Q9ZSBpbnN0YW5jZW9mIERvY3VtZW50RnJhZ21lbnQ/ZS5ob3N0OmUhPT10P2U6bnVsbH1yZXR1cm4gZX0pKHQpO2xldCBpPWVfdCxyPW51bGw7Zm9yKGNvbnN0IHQgb2YgZSl7Y29uc3QgZT1VZ3QuVXRpbHMuRE9NLmdldEVsZW1lbnRUcmFuc2Zvcm0odCk7aWYobnVsbCE9ZSl7Y29uc3Qgbj10LmNsaWVudFdpZHRoLzIscj10LmNsaWVudEhlaWdodC8yO2k9VWd0LlV0aWxzLk1hdGgubXVsdGlwbHlUcmFuc2xhdGUoaSxbbixyXSksaT1VZ3QuVXRpbHMuTWF0aC5tdWx0aXBseU1hdHJpeChpLFVndC5VdGlscy5NYXRoLmludmVydE1hdHJpeChlKSksaT1VZ3QuVXRpbHMuTWF0aC5tdWx0aXBseVRyYW5zbGF0ZShpLFstbiwtcl0pfWxldCBuPXQuc2Nyb2xsTGVmdCxvPXQuc2Nyb2xsVG9wO251bGwhPT1yJiZ0IT09cnx8KG4tPXQub2Zmc2V0TGVmdCt0LmNsaWVudExlZnQsby09dC5vZmZzZXRUb3ArdC5jbGllbnRUb3Ascj10Lm9mZnNldFBhcmVudCksaT1VZ3QuVXRpbHMuTWF0aC5tdWx0aXBseVRyYW5zbGF0ZShpLFtuLG9dKX1yZXR1cm4gaX0pKHRoaXMuX3Jvb3RFbGVtZW50KTtyZXR1cm4gbnVsbD09aT9uOlVndC5VdGlscy5NYXRoLmFwcGx5VHJhbnNmb3JtKGksbil9fWNsYXNzIGlfdCBleHRlbmRzIFVndC5EaXNwYXRjaGVycy5Nb3VzZXtjb25zdHJ1Y3Rvcih0KXtzdXBlcih0KSx0aGlzLl9ldmVudFRhcmdldD10LnJvb3QoKS5yb290RWxlbWVudCgpLm5vZGUoKSx0aGlzLl90cmFuc2xhdG9yPW5ldyBuX3QodC5yb290KCkucm9vdEVsZW1lbnQoKS5ub2RlKCkpfXN0YXRpYyBnZXREaXNwYXRjaGVyKHQpe2NvbnN0IGU9dC5yb290KCkucm9vdEVsZW1lbnQoKTtsZXQgbj1lW2lfdC5fRElTUEFUQ0hFUl9LRVldO3JldHVybiBufHwobj1uZXcgaV90KHQpLGVbaV90Ll9ESVNQQVRDSEVSX0tFWV09biksbn19Y2xhc3Mgcl90IGV4dGVuZHMgVWd0LkRpc3BhdGNoZXJzLlRvdWNoe2NvbnN0cnVjdG9yKHQpe3N1cGVyKHQpLHRoaXMuX2V2ZW50VGFyZ2V0PXQucm9vdCgpLnJvb3RFbGVtZW50KCkubm9kZSgpLHRoaXMuX3RyYW5zbGF0b3I9bmV3IG5fdCh0LnJvb3QoKS5yb290RWxlbWVudCgpLm5vZGUoKSl9c3RhdGljIGdldERpc3BhdGNoZXIodCl7Y29uc3QgZT10LnJvb3QoKS5yb290RWxlbWVudCgpO2xldCBuPWVbcl90Ll9ESVNQQVRDSEVSX0tFWV07cmV0dXJuIG58fChuPW5ldyByX3QodCksZVtyX3QuX0RJU1BBVENIRVJfS0VZXT1uKSxufX1VZ3QuSW50ZXJhY3Rpb24ucHJvdG90eXBlLl9pc0luc2lkZUNvbXBvbmVudD1mdW5jdGlvbih0KXtyZXR1cm4gMDw9dC54JiYwPD10LnkmJnQueDx0aGlzLl9jb21wb25lbnRBdHRhY2hlZFRvLndpZHRoKCkmJnQueTx0aGlzLl9jb21wb25lbnRBdHRhY2hlZFRvLmhlaWdodCgpfTtjbGFzcyBvX3QgZXh0ZW5kcyBVZ3QuSW50ZXJhY3Rpb25zLlBvaW50ZXJ7X2FuY2hvcih0KXtjb25zdCBlPXRoaXM7ZS5faXNBbmNob3JlZD0hMCxlLl9tb3VzZURpc3BhdGNoZXI9aV90LmdldERpc3BhdGNoZXIoZS5fY29tcG9uZW50QXR0YWNoZWRUbyksZS5fbW91c2VEaXNwYXRjaGVyLm9uTW91c2VNb3ZlKGUuX21vdXNlTW92ZUNhbGxiYWNrKSxlLl90b3VjaERpc3BhdGNoZXI9cl90LmdldERpc3BhdGNoZXIoZS5fY29tcG9uZW50QXR0YWNoZWRUbyksZS5fdG91Y2hEaXNwYXRjaGVyLm9uVG91Y2hTdGFydChlLl90b3VjaFN0YXJ0Q2FsbGJhY2spfX12YXIgYV90OyEoZnVuY3Rpb24odCl7dC5BVVRPPSJhdXRvIix0LkJPVFRPTT0iYm90dG9tIix0LlJJR0hUPSJyaWdodCJ9KShhX3R8fChhX3Q9e30pKTtjb25zdCBzX3Q9e2JveFNoYWRvdzoiMCAxcHggNHB4IHJnYmEoMCwgMCwgMCwgLjMpIixvcGFjaXR5OjAscG9zaXRpb246ImZpeGVkIix3aWxsQ2hhbmdlOiJ0cmFuc2Zvcm0iLHpJbmRleDo1fTtsZXQgbF90PWNsYXNzIGV4dGVuZHModHIoeWUpKXtjb25zdHJ1Y3Rvcigpe3N1cGVyKC4uLmFyZ3VtZW50cyksdGhpcy5wb3NpdGlvbj1hX3QuQVVUTyx0aGlzLm1pbkRpc3RGcm9tRWRnZT0xNSx0aGlzLl9zdHlsZUNhY2hlPW51bGwsdGhpcy5fcmFmPW51bGwsdGhpcy5fdHVubmVsPW51bGx9cmVhZHkoKXt0aGlzLl9zdHlsZUNhY2hlPW51bGwsdGhpcy5fcmFmPW51bGwsdGhpcy5fdHVubmVsPW51bGx9YXR0YWNoZWQoKXt0aGlzLl90dW5uZWw9dGhpcy5fY3JlYXRlVHVubmVsKCksdGhpcy5faGlkZU9uQmx1cj0oKT0+e2RvY3VtZW50LmhpZGRlbiYmdGhpcy5oaWRlKCl9LHdpbmRvdy5hZGRFdmVudExpc3RlbmVyKCJ2aXNpYmlsaXR5Y2hhbmdlIix0aGlzLl9oaWRlT25CbHVyKX1kZXRhY2hlZCgpe3RoaXMuaGlkZSgpLHRoaXMuX3JlbW92ZVR1bm5lbCh0aGlzLl90dW5uZWwpLHRoaXMuX3R1bm5lbD1udWxsLHdpbmRvdy5yZW1vdmVFdmVudExpc3RlbmVyKCJ2aXNpYmlsaXR5Y2hhbmdlIix0aGlzLl9oaWRlT25CbHVyKX1jb250ZW50KCl7cmV0dXJuIHRoaXMuX3R1bm5lbC5zaGFkb3dSb290fWhpZGUoKXt3aW5kb3cuY2FuY2VsQW5pbWF0aW9uRnJhbWUodGhpcy5fcmFmKSx0aGlzLl9zdHlsZUNhY2hlPW51bGwsdGhpcy5fdHVubmVsLnN0eWxlLm9wYWNpdHk9MH11cGRhdGVBbmRQb3NpdGlvbih0KXt3aW5kb3cuY2FuY2VsQW5pbWF0aW9uRnJhbWUodGhpcy5fcmFmKSx0aGlzLl9yYWY9d2luZG93LnJlcXVlc3RBbmltYXRpb25GcmFtZSgoKCk9Pnt0aGlzLmlzQXR0YWNoZWQmJnRoaXMuX3JlcG9zaXRpb25JbXBsKHQpfSkpfV9yZXBvc2l0aW9uSW1wbCh0KXtjb25zdCBlPXRoaXMuX3R1bm5lbCxuPXQuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCksaT1lLmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpLHI9d2luZG93LmlubmVySGVpZ2h0LG89ZG9jdW1lbnQuYm9keS5jbGllbnRXaWR0aCxhPW4udG9wLHM9YStuLmhlaWdodCxsPWkuaGVpZ2h0KzIwO2xldCBjPW51bGwsdT1NYXRoLm1heCh0aGlzLm1pbkRpc3RGcm9tRWRnZSxuLmxlZnQpLGg9bnVsbCxkPWE7dGhpcy5wb3NpdGlvbj09YV90LlJJR0hUP3U9bi5yaWdodDooZD1zKzIwLG88dStpLndpZHRoK3RoaXMubWluRGlzdEZyb21FZGdlJiYodT1udWxsLGg9dGhpcy5taW5EaXN0RnJvbUVkZ2UpKSx0aGlzLnBvc2l0aW9uPT1hX3QuQVVUTyYmbi50b3AtbD4wJiZyPG4udG9wK24uaGVpZ2h0K2wmJihkPW51bGwsYz1yLWErMjApO2NvbnN0IHA9e2NvbnRhaW46ImNvbnRlbnQiLG9wYWNpdHk6MSxsZWZ0OnU/YCR7dX1weGA6bnVsbCxyaWdodDpoP2Ake2h9cHhgOm51bGwsdG9wOmQ/YCR7ZH1weGA6bnVsbCxib3R0b206Yz9gJHtjfXB4YDpudWxsfTt3ZS5pc0VxdWFsKHRoaXMuX3N0eWxlQ2FjaGUscCl8fChPYmplY3QuYXNzaWduKGUuc3R5bGUscCksdGhpcy5fc3R5bGVDYWNoZT1wKX1fY3JlYXRlVHVubmVsKCl7aWYoIXRoaXMuY29udGVudENvbXBvbmVudE5hbWUpdGhyb3cgbmV3IFJhbmdlRXJyb3IoIlJlcXVpcmUgYGNvbnRlbnRDb21wb25lbnROYW1lYCB0byBiZSBhIG5hbWUgb2YgYSBQb2x5bWVyIGNvbXBvbmVudCIpO2NvbnN0IHQ9ZG9jdW1lbnQuY3JlYXRlRWxlbWVudCh0aGlzLmNvbnRlbnRDb21wb25lbnROYW1lKTtyZXR1cm4gT2JqZWN0LmFzc2lnbih0LnN0eWxlLHNfdCksZG9jdW1lbnQuYm9keS5hcHBlbmRDaGlsZCh0KSx0fV9yZW1vdmVUdW5uZWwodCl7ZG9jdW1lbnQuYm9keS5yZW1vdmVDaGlsZCh0KX19O3QoW28oe3R5cGU6U3RyaW5nfSksZSgiZGVzaWduOnR5cGUiLFN0cmluZyldLGxfdC5wcm90b3R5cGUsImNvbnRlbnRDb21wb25lbnROYW1lIix2b2lkIDApLHQoW28oe3R5cGU6U3RyaW5nfSksZSgiZGVzaWduOnR5cGUiLFN0cmluZyldLGxfdC5wcm90b3R5cGUsInBvc2l0aW9uIix2b2lkIDApLHQoW28oe3R5cGU6TnVtYmVyfSksZSgiZGVzaWduOnR5cGUiLE51bWJlcildLGxfdC5wcm90b3R5cGUsIm1pbkRpc3RGcm9tRWRnZSIsdm9pZCAwKSxsX3Q9dChbaSgidnotY2hhcnQtdG9vbHRpcCIpXSxsX3QpO2NvbnN0IGNfdD1weSgiLjJ+ZSIpLHVfdD1weSgifiIpLGhfdD1weSgiLH4iKTtmdW5jdGlvbiBkX3QodCl7aWYoMD09PXQpcmV0dXJuIjAiO2NvbnN0IGU9TWF0aC5hYnModCk7cmV0dXJuIGU+PTFlNXx8ZTwuMDAxP2NfdCh0KTp1X3QodCl9Y29uc3QgcF90PXtmb3JtYXRUaWNrOmRfdCxmb3JtYXRTaG9ydDpkX3QsZm9ybWF0UmVhZGFibGU6dD0+aF90KHQpfTtweSgiLjR+Iik7Y29uc3QgZl90PUZBKCkudGlja0Zvcm1hdCgpO2xldCBtX3Q7Y29uc3QgZ190PXtmb3JtYXRUaWNrOnQ9PmZfdChuZXcgRGF0ZSh0KSksZm9ybWF0U2hvcnQ6dD0+bmV3IERhdGUodCkudG9Mb2NhbGVTdHJpbmcobV90LHt5ZWFyOiJudW1lcmljIixtb250aDoic2hvcnQiLGRheToibnVtZXJpYyIsaG91cjoibnVtZXJpYyIsbWludXRlOiJudW1lcmljIixzZWNvbmQ6Im51bWVyaWMifSksZm9ybWF0UmVhZGFibGU6dD0+bmV3IERhdGUodCkudG9Mb2NhbGVTdHJpbmcobV90LHt5ZWFyOiJudW1lcmljIixtb250aDoic2hvcnQiLGRheToibnVtZXJpYyIsaG91cjoibnVtZXJpYyIsbWludXRlOiJudW1lcmljIixzZWNvbmQ6Im51bWVyaWMiLHRpbWVab25lTmFtZToic2hvcnQiLGZyYWN0aW9uYWxTZWNvbmREaWdpdHM6M30pfTt2YXIgX190OyEoZnVuY3Rpb24odCl7dFt0LkxJTkVBUj0wXT0iTElORUFSIix0W3QuTE9HMTA9MV09IkxPRzEwIix0W3QuVElNRT0yXT0iVElNRSJ9KShfX3R8fChfX3Q9e30pKTtjbGFzcyB5X3R7Y29uc3RydWN0b3IoKXt0aGlzLmRlZmF1bHRGb3JtYXR0ZXI9cF90fXRyYW5zZm9ybSh0LGUsbil7Y29uc3RbaSxyXT10LG89ci1pLFthLHNdPWU7cmV0dXJuIDA9PT1vP2E6KHMtYSkvbyoobi1pKSthfWZvcndhcmQodCxlLG4pe3JldHVybiB0aGlzLnRyYW5zZm9ybSh0LGUsbil9cmV2ZXJzZSh0LGUsbil7cmV0dXJuIHRoaXMudHJhbnNmb3JtKGUsdCxuKX1uaWNlRG9tYWluKHQpe2xldFtlLG5dPXQ7aWYobjxlKXRocm93IG5ldyBFcnJvcigiVW5leHBlY3RlZCBpbnB1dDogbWluIGlzIGxhcmdlciB0aGFuIG1heCIpO2lmKG49PT1lKXJldHVybiAwPT09ZT9bLTEsMV06ZTwwP1syKmUsMF06WzAsMiplXTtjb25zdCBpPXpNKCkscj0uMDUqKG4tZStOdW1iZXIuRVBTSUxPTiksW28sYV09aS5kb21haW4oW2UtcixuK3JdKS5uaWNlKCkuZG9tYWluKCk7cmV0dXJuW28sYV19dGlja3ModCxlKXtyZXR1cm4gek0oKS5kb21haW4odCkudGlja3MoZSl9aXNTYWZlTnVtYmVyKHQpe3JldHVybiBOdW1iZXIuaXNGaW5pdGUodCl9fWNsYXNzIHZfdHtjb25zdHJ1Y3Rvcigpe3RoaXMuZGVmYXVsdEZvcm1hdHRlcj1wX3R9dHJhbnNmb3JtKHQpe3JldHVybiBNYXRoLmxvZzEwKHQ+MD90Ok51bWJlci5NSU5fVkFMVUUpfXVudHJhbnNmb3JtKHQpe3JldHVybiBNYXRoLmV4cCh0L01hdGguTE9HMTBFKX1mb3J3YXJkKHQsZSxuKXtpZihuPD0wKXJldHVybiBlWzBdO2NvbnN0W2kscl09dCxbbyxhXT1lLHM9dGhpcy50cmFuc2Zvcm0oaSksbD10aGlzLnRyYW5zZm9ybShyKS1zLGM9YS1vO3JldHVybiBuPXRoaXMudHJhbnNmb3JtKG4pLGMvKGwrTnVtYmVyLkVQU0lMT04pKihuLXMpK299cmV2ZXJzZSh0LGUsbil7Y29uc3RbaSxyXT10LFtvLGFdPWUscz10aGlzLnRyYW5zZm9ybShpKSxsPXRoaXMudHJhbnNmb3JtKHIpO3JldHVybiB0aGlzLnVudHJhbnNmb3JtKChsLXMpLyhhLW8rTnVtYmVyLkVQU0lMT04pKihuLW8pK3MpfW5pY2VEb21haW4odCl7Y29uc3RbZSxuXT10O2lmKGU+bil0aHJvdyBuZXcgRXJyb3IoIlVuZXhwZWN0ZWQgaW5wdXQ6IG1pbiBpcyBsYXJnZXIgdGhhbiBtYXgiKTtjb25zdCBpPU1hdGgubWF4KGUsTnVtYmVyLk1JTl9WQUxVRSkscj1NYXRoLm1heChuLE51bWJlci5NSU5fVkFMVUUpO3JldHVybiBuPD0wP1tOdW1iZXIuTUlOX1ZBTFVFLDFdOltNYXRoLm1heChOdW1iZXIuTUlOX1ZBTFVFLC41KmkpLDIqcl19dGlja3ModCxlKXtjb25zdCBuPXRbMF08PTA/TnVtYmVyLk1JTl9WQUxVRTp0WzBdLGk9dFsxXTw9MD9OdW1iZXIuTUlOX1ZBTFVFOnRbMV0scj1XTSgpLmRvbWFpbihbbixpXSkudGlja3MoZSk7cmV0dXJuIHIubGVuZ3RoP3I6dH1pc1NhZmVOdW1iZXIodCl7cmV0dXJuIE51bWJlci5pc0Zpbml0ZSh0KSYmdD4wfX1jbGFzcyBiX3R7Y29uc3RydWN0b3IoKXt0aGlzLnNjYWxlPUZBKCksdGhpcy5kZWZhdWx0Rm9ybWF0dGVyPWdfdH1mb3J3YXJkKHQsZSxuKXtyZXR1cm4gdGhpcy5zY2FsZS5kb21haW4odCkucmFuZ2UoZSkobil9cmV2ZXJzZSh0LGUsbil7cmV0dXJuIHRoaXMuc2NhbGUuZG9tYWluKHQpLnJhbmdlKGUpLmludmVydChuKS5nZXRUaW1lKCl9bmljZURvbWFpbih0KXtjb25zdFtlLG5dPXRoaXMuc2NhbGUuZG9tYWluKHQpLm5pY2UoKS5kb21haW4oKTtyZXR1cm5bZS5nZXRUaW1lKCksbi5nZXRUaW1lKCldfXRpY2tzKHQsZSl7cmV0dXJuIHRoaXMuc2NhbGUuZG9tYWluKHQpLnRpY2tzKGUpLm1hcCgodD0+dC5nZXRUaW1lKCkpKX1pc1NhZmVOdW1iZXIodCl7cmV0dXJuIE51bWJlci5pc0Zpbml0ZSh0KX19Y2xhc3MgeF90IGV4dGVuZHMgVWd0LlNjYWxlcy5MaW5lYXJ7Y29uc3RydWN0b3IoKXtzdXBlcigpLHRoaXMuX2lnbm9yZU91dGxpZXI9ITEsdGhpcy5wYWRQcm9wb3J0aW9uKC4yKX1zZXRWYWx1ZVByb3ZpZGVyRm9yRG9tYWluKHQpe3JldHVybiB0aGlzLl92YWx1ZVByb3ZpZGVyRm9yRG9tYWluPXQsdGhpc31fbmljZURvbWFpbih0LGUpe2NvbnN0W24saV09dDtyZXR1cm4oZnVuY3Rpb24gcih0KXtzd2l0Y2godCl7Y2FzZSBfX3QuTElORUFSOnJldHVybiBuZXcgeV90O2Nhc2UgX190LkxPRzEwOnJldHVybiBuZXcgdl90O2Nhc2UgX190LlRJTUU6cmV0dXJuIG5ldyBiX3Q7ZGVmYXVsdDp0aHJvdyBuZXcgUmFuZ2VFcnJvcihgU2NhbGVUeXBlICR7dH0gbm90IHN1cHBvcnRlZC5gKX19KShfX3QuTElORUFSKS5uaWNlRG9tYWluKFtuLGldKX1fZ2V0VW5ib3VuZGVkRXh0ZW50KHQpe2NvbnN0IGU9dGhpcy5fZ2V0QWxsSW5jbHVkZWRWYWx1ZXModCk7bGV0IG49dGhpcy5fZGVmYXVsdEV4dGVudCgpO2lmKDAhPT1lLmxlbmd0aCl7Y29uc3QgdD1bVWd0LlV0aWxzLk1hdGgubWluKGUsblswXSksVWd0LlV0aWxzLk1hdGgubWF4KGUsblsxXSldO249dGhpcy5fbmljZURvbWFpbih0KX1yZXR1cm4gbn1fZ2V0QWxsSW5jbHVkZWRWYWx1ZXModD0hMSl7Y29uc3QgZT10aGlzLl92YWx1ZVByb3ZpZGVyRm9yRG9tYWluP3RoaXMuX3ZhbHVlUHJvdmlkZXJGb3JEb21haW4oKTpbXTtyZXR1cm4gdGhpcy5leHRlbnRPZlZhbHVlcyhlKX1leHRlbnRPZlZhbHVlcyh0KXtjb25zdCBlPXQuZmlsdGVyKCh0PT5VZ3QuVXRpbHMuTWF0aC5pc1ZhbGlkTnVtYmVyKHQpKSk7bGV0IG49ZTtpZih0aGlzLmlnbm9yZU91dGxpZXIoKSl7Y29uc3QgdD1lLnNvcnQoKCh0LGUpPT50LWUpKSxpPUdsKHQsLjA1KSxyPUdsKHQsLjk1KTtuPWUuZmlsdGVyKCh0PT50Pj1pJiZ0PD1yKSl9Y29uc3QgaT1MbChuKTtyZXR1cm4gbnVsbD09aVswXXx8bnVsbD09aVsxXT9bXTppfWlnbm9yZU91dGxpZXIodCl7cmV0dXJuImJvb2xlYW4iPT10eXBlb2YgdD8odGhpcy5faWdub3JlT3V0bGllcj10LHRoaXMpOnRoaXMuX2lnbm9yZU91dGxpZXJ9fWNsYXNzIHdfdCBleHRlbmRzIFVndC5RdWFudGl0YXRpdmVTY2FsZXtjb25zdHJ1Y3Rvcigpe3N1cGVyKC4uLmFyZ3VtZW50cyksdGhpcy5faWdub3JlT3V0bGllcj0hMX1zZXRWYWx1ZVByb3ZpZGVyRm9yRG9tYWluKHQpe3JldHVybiB0aGlzLl92YWx1ZVByb3ZpZGVyRm9yRG9tYWluPXQsdGhpc31pZ25vcmVPdXRsaWVyKHQpe3JldHVybiJib29sZWFuIj09dHlwZW9mIHQ/KHRoaXMuX2lnbm9yZU91dGxpZXI9dCx0aGlzKTp0aGlzLl9pZ25vcmVPdXRsaWVyfV9nZXRBbGxJbmNsdWRlZFZhbHVlcyh0PSExKXtjb25zdCBlPXRoaXMuX3ZhbHVlUHJvdmlkZXJGb3JEb21haW4/dGhpcy5fdmFsdWVQcm92aWRlckZvckRvbWFpbigpOltdO3JldHVybiB0aGlzLmV4dGVudE9mVmFsdWVzKGUpfX1jb25zdCBTX3Q9TWF0aC5wb3coMiwtMTA3NCk7ZnVuY3Rpb24gTV90KHQpe3JldHVybiBNYXRoLmxvZzEwKHQpfWZ1bmN0aW9uIEVfdCh0KXtyZXR1cm4gTWF0aC5wb3coMTAsdCl9Y2xhc3MgVF90IGV4dGVuZHMgd190e2NvbnN0cnVjdG9yKCl7c3VwZXIoKSx0aGlzLl9kM0xvZ1NjYWxlPVdNKCksdGhpcy5wYWRQcm9wb3J0aW9uKC4yKX1zY2FsZSh0KXtyZXR1cm4gdDw9MD9OYU46dGhpcy5fZDNMb2dTY2FsZSh0KX1pbnZlcnQodCl7cmV0dXJuIHRoaXMuX2QzTG9nU2NhbGUuaW52ZXJ0KHQpfXNjYWxlVHJhbnNmb3JtYXRpb24odCl7cmV0dXJuIHRoaXMuc2NhbGUodCl9aW52ZXJ0ZWRUcmFuc2Zvcm1hdGlvbih0KXtyZXR1cm4gdGhpcy5pbnZlcnQodCl9Z2V0VHJhbnNmb3JtYXRpb25Eb21haW4oKXtyZXR1cm4gdGhpcy5kb21haW4oKX1zZXRUcmFuc2Zvcm1hdGlvbkRvbWFpbih0KXt0aGlzLmRvbWFpbih0KX1nZXRUcmFuc2Zvcm1hdGlvbkV4dGVudCgpe3JldHVybiB0aGlzLl9nZXRVbmJvdW5kZWRFeHRlbnQoITApfV9nZXREb21haW4oKXtyZXR1cm4gdGhpcy5fdW50cmFuc2Zvcm1lZERvbWFpbn1fc2V0RG9tYWluKHQpe3RoaXMuX3VudHJhbnNmb3JtZWREb21haW49dDtjb25zdFtlLG5dPXQ7c3VwZXIuX3NldERvbWFpbihbTWF0aC5tYXgoU190LGUpLG5dKX1fbmljZURvbWFpbih0LGUpe2NvbnN0W24saV09dCxyPU1hdGgubWF4KE1fdChTX3QpLE1fdChuKSksbz1NX3QoaSksYT1vLXIscz1hP2EqdGhpcy5wYWRQcm9wb3J0aW9uKCk6MTtyZXR1cm5bRV90KE1hdGgubWF4KE1fdChTX3QpLHItcykpLEVfdChvK3MpXX1fZ2V0VW5ib3VuZGVkRXh0ZW50KHQpe2NvbnN0IGU9dGhpcy5fZ2V0QWxsSW5jbHVkZWRWYWx1ZXModCk7bGV0IG49dGhpcy5fZGVmYXVsdEV4dGVudCgpO2lmKDAhPT1lLmxlbmd0aCl7Y29uc3QgdD1bVWd0LlV0aWxzLk1hdGgubWluKGUsblswXSksVWd0LlV0aWxzLk1hdGgubWF4KGUsblsxXSldO249dGhpcy5fbmljZURvbWFpbih0KX1yZXR1cm4gbn1fZ2V0QWxsSW5jbHVkZWRWYWx1ZXModD0hMSl7cmV0dXJuIHN1cGVyLl9nZXRBbGxJbmNsdWRlZFZhbHVlcygpLm1hcCgodD0+dD4wP3Q6U190KSl9X2RlZmF1bHRFeHRlbnQoKXtyZXR1cm5bMSwxMF19X2JhY2tpbmdTY2FsZURvbWFpbih0KXtyZXR1cm4gbnVsbD09dD90aGlzLl9kM0xvZ1NjYWxlLmRvbWFpbigpOih0aGlzLl9kM0xvZ1NjYWxlLmRvbWFpbih0KSx0aGlzKX1fZ2V0UmFuZ2UoKXtyZXR1cm4gdGhpcy5fZDNMb2dTY2FsZS5yYW5nZSgpfV9zZXRSYW5nZSh0KXt0aGlzLl9kM0xvZ1NjYWxlLnJhbmdlKHQpfWRlZmF1bHRUaWNrcygpe3JldHVybiB0aGlzLl9kM0xvZ1NjYWxlLnRpY2tzKDEpfXRpY2tzKCl7cmV0dXJuIHRoaXMuX2QzTG9nU2NhbGUudGlja3MoKX1leHRlbnRPZlZhbHVlcyh0KXtjb25zdCBlPXQuZmlsdGVyKCh0PT5VZ3QuVXRpbHMuTWF0aC5pc1ZhbGlkTnVtYmVyKHQpJiZ0PjApKTtsZXQgbj1lO2lmKHRoaXMuaWdub3JlT3V0bGllcigpKXtjb25zdCB0PWUubWFwKE1fdCkuc29ydCgoKHQsZSk9PnQtZSkpLGk9R2wodCwuMDUpLHI9R2wodCwuOTUpO249dC5maWx0ZXIoKHQ9PnQ+PWkmJnQ8PXIpKS5tYXAoRV90KX1jb25zdCBpPUxsKG4pO3JldHVybiBudWxsPT1pWzBdfHxudWxsPT1pWzFdP1tdOml9fWNsYXNzIEFfdCBleHRlbmRzIFVndC5Db21wb25lbnRzLlNlbGVjdGlvbkJveExheWVye2NvbnN0cnVjdG9yKHQsZSxuKXtzdXBlcigpLHRoaXMuZWFzZUZuPVRmLHRoaXMuX2FuaW1hdGlvblRpbWU9NzUwLHRoaXMueFNjYWxlKHQpLHRoaXMueVNjYWxlKGUpLHRoaXMuX2RyYWdJbnRlcmFjdGlvbj1uZXcgVWd0LkludGVyYWN0aW9ucy5EcmFnLHRoaXMuX2RvdWJsZUNsaWNrSW50ZXJhY3Rpb249bmV3IFVndC5JbnRlcmFjdGlvbnMuQ2xpY2ssdGhpcy5zZXR1cENhbGxiYWNrcygpLHRoaXMudW56b29tTWV0aG9kPW4sdGhpcy5vbkRldGFjaCgoKCk9Pnt0aGlzLl9kb3VibGVDbGlja0ludGVyYWN0aW9uLmRldGFjaEZyb20odGhpcyksdGhpcy5fZHJhZ0ludGVyYWN0aW9uLmRldGFjaEZyb20odGhpcyl9KSksdGhpcy5vbkFuY2hvcigoKCk9Pnt0aGlzLl9kb3VibGVDbGlja0ludGVyYWN0aW9uLmF0dGFjaFRvKHRoaXMpLHRoaXMuX2RyYWdJbnRlcmFjdGlvbi5hdHRhY2hUbyh0aGlzKX0pKX1pbnRlcmFjdGlvblN0YXJ0KHQpe3RoaXMub25TdGFydD10fWludGVyYWN0aW9uRW5kKHQpe3RoaXMub25FbmQ9dH1kcmFnSW50ZXJhY3Rpb24oKXtyZXR1cm4gdGhpcy5fZHJhZ0ludGVyYWN0aW9ufXNldHVwQ2FsbGJhY2tzKCl7bGV0IHQ9ITE7dGhpcy5fZHJhZ0ludGVyYWN0aW9uLm9uRHJhZ1N0YXJ0KCh0PT57dGhpcy5ib3VuZHMoe3RvcExlZnQ6dCxib3R0b21SaWdodDp0fSksdGhpcy5vblN0YXJ0KCl9KSksdGhpcy5fZHJhZ0ludGVyYWN0aW9uLm9uRHJhZygoKGUsbik9Pnt0aGlzLmJvdW5kcyh7dG9wTGVmdDplLGJvdHRvbVJpZ2h0Om59KSx0aGlzLmJveFZpc2libGUoITApLHQ9ITB9KSksdGhpcy5fZHJhZ0ludGVyYWN0aW9uLm9uRHJhZ0VuZCgoKGUsbik9Pnt0aGlzLmJveFZpc2libGUoITEpLHRoaXMuYm91bmRzKHt0b3BMZWZ0OmUsYm90dG9tUmlnaHQ6bn0pLHQ/dGhpcy56b29tKCk6dGhpcy5vbkVuZCgpLHQ9ITF9KSksdGhpcy5fZG91YmxlQ2xpY2tJbnRlcmFjdGlvbi5vbkRvdWJsZUNsaWNrKHRoaXMudW56b29tLmJpbmQodGhpcykpfWFuaW1hdGlvblRpbWUodCl7aWYobnVsbD09dClyZXR1cm4gdGhpcy5fYW5pbWF0aW9uVGltZTtpZih0PDApdGhyb3cgbmV3IEVycm9yKCJhbmltYXRpb25UaW1lIGNhbm5vdCBiZSBuZWdhdGl2ZSIpO3JldHVybiB0aGlzLl9hbmltYXRpb25UaW1lPXQsdGhpc31lYXNlKHQpe2lmKCJmdW5jdGlvbiIhPXR5cGVvZiB0KXRocm93IG5ldyBFcnJvcigiZWFzZSBmdW5jdGlvbiBtdXN0IGJlIGEgZnVuY3Rpb24iKTtyZXR1cm4gMD09PXQoMCkmJjE9PT10KDEpfHxVZ3QuVXRpbHMuV2luZG93Lndhcm4oIkVhc2luZyBmdW5jdGlvbiBkb2VzIG5vdCBtYWludGFpbiBpbnZhcmlhbnQgZigwKT09MCAmJiBmKDEpPT0xLiBCYWQgYmVoYXZpb3IgbWF5IHJlc3VsdC4iKSx0aGlzLmVhc2VGbj10LHRoaXN9em9vbSgpe2xldCB0PXRoaXMueEV4dGVudCgpWzBdLnZhbHVlT2YoKSxlPXRoaXMueEV4dGVudCgpWzFdLnZhbHVlT2YoKSxuPXRoaXMueUV4dGVudCgpWzFdLnZhbHVlT2YoKSxpPXRoaXMueUV4dGVudCgpWzBdLnZhbHVlT2YoKTt0IT09ZSYmbiE9PWkmJnRoaXMuaW50ZXJwb2xhdGVab29tKHQsZSxuLGkpfXVuem9vbSgpe2xldCB0PXRoaXMueFNjYWxlKCk7dC5fZG9tYWluTWluPW51bGwsdC5fZG9tYWluTWF4PW51bGw7bGV0IGU9dC5fZ2V0RXh0ZW50KCk7dGhpcy54U2NhbGUoKS5kb21haW4oZSksdGhpcy51bnpvb21NZXRob2QoKX1pc1pvb21pbmcodCl7dGhpcy5fZHJhZ0ludGVyYWN0aW9uLmVuYWJsZWQoIXQpLHRoaXMuX2RvdWJsZUNsaWNrSW50ZXJhY3Rpb24uZW5hYmxlZCghdCl9aW50ZXJwb2xhdGVab29tKHQsZSxuLGkpe2xldCByPXRoaXMueFNjYWxlKCkuZG9tYWluKClbMF0udmFsdWVPZigpLG89dGhpcy54U2NhbGUoKS5kb21haW4oKVsxXS52YWx1ZU9mKCksYT10aGlzLnlTY2FsZSgpLmRvbWFpbigpWzBdLnZhbHVlT2YoKSxzPXRoaXMueVNjYWxlKCkuZG9tYWluKClbMV0udmFsdWVPZigpLGw9dGhpcy5lYXNlRm4sYz0odCxlLG4pPT5CZCh0LGUpKGwobikpO3RoaXMuaXNab29taW5nKCEwKTtsZXQgdT1EYXRlLm5vdygpLGg9KCk9PntsZXQgbD1EYXRlLm5vdygpLGQ9MD09PXRoaXMuX2FuaW1hdGlvblRpbWU/MTpNYXRoLm1pbigxLChsLXUpL3RoaXMuX2FuaW1hdGlvblRpbWUpLHA9YyhyLHQsZCksZj1jKG8sZSxkKSxtPWMoYSxuLGQpLGc9YyhzLGksZCk7dGhpcy54U2NhbGUoKS5kb21haW4oW3AsZl0pLHRoaXMueVNjYWxlKCkuZG9tYWluKFttLGddKSxkPDE/VWd0LlV0aWxzLkRPTS5yZXF1ZXN0QW5pbWF0aW9uRnJhbWVQb2x5ZmlsbChoKToodGhpcy5vbkVuZCgpLHRoaXMuaXNab29taW5nKCExKSl9O2goKX19dmFyIENfdCxrX3QsTF90LFBfdDshKGZ1bmN0aW9uKHQpe3RbdC5OT05FPTBdPSJOT05FIix0W3QuRFJBR19aT09NSU5HPTFdPSJEUkFHX1pPT01JTkciLHRbdC5QQU5OSU5HPTJdPSJQQU5OSU5HIn0pKENfdHx8KENfdD17fSkpO2NsYXNzIElfdCBleHRlbmRzIFVndC5Db21wb25lbnRzLkdyb3Vwe2NvbnN0cnVjdG9yKHQsZSxuKXtzdXBlcigpLHRoaXMuc3RhdGU9Q190Lk5PTkUsdGhpcy5wYW5TdGFydENhbGxiYWNrPW5ldyBVZ3QuVXRpbHMuQ2FsbGJhY2tTZXQsdGhpcy5wYW5FbmRDYWxsYmFjaz1uZXcgVWd0LlV0aWxzLkNhbGxiYWNrU2V0LHRoaXMucGFuWm9vbT1uZXcgVWd0LkludGVyYWN0aW9ucy5QYW5ab29tKHQsZSksdGhpcy5wYW5ab29tLmRyYWdJbnRlcmFjdGlvbigpLm1vdXNlRmlsdGVyKCh0PT5JX3QuaXNQYW5LZXkodCkmJjA9PT10LmJ1dHRvbikpLHRoaXMucGFuWm9vbS53aGVlbEZpbHRlcih0aGlzLmNhblNjcm9sbFpvb20pLHRoaXMuZHJhZ1pvb21MYXllcj1uZXcgQV90KHQsZSxuKSx0aGlzLmRyYWdab29tTGF5ZXIuZHJhZ0ludGVyYWN0aW9uKCkubW91c2VGaWx0ZXIoKHQ9PiFJX3QuaXNQYW5LZXkodCkmJjA9PT10LmJ1dHRvbikpLHRoaXMuYXBwZW5kKHRoaXMuZHJhZ1pvb21MYXllcik7Y29uc3QgaT10aGlzLm9uV2hlZWwuYmluZCh0aGlzKTt0aGlzLm9uQW5jaG9yKCgoKT0+e3RoaXMuX21vdXNlRGlzcGF0Y2hlcj1VZ3QuRGlzcGF0Y2hlcnMuTW91c2UuZ2V0RGlzcGF0Y2hlcih0aGlzKSx0aGlzLl9tb3VzZURpc3BhdGNoZXIub25XaGVlbChpKSx0aGlzLnBhblpvb20uYXR0YWNoVG8odGhpcyl9KSksdGhpcy5vbkRldGFjaCgoKCk9Pnt0aGlzLnBhblpvb20uZGV0YWNoRnJvbSh0aGlzKSx0aGlzLl9tb3VzZURpc3BhdGNoZXImJih0aGlzLl9tb3VzZURpc3BhdGNoZXIub2ZmV2hlZWwoaSksdGhpcy5fbW91c2VEaXNwYXRjaGVyPW51bGwpfSkpLHRoaXMucGFuWm9vbS5kcmFnSW50ZXJhY3Rpb24oKS5vbkRyYWdTdGFydCgoKCk9Pnt0aGlzLnN0YXRlPT1DX3QuTk9ORSYmdGhpcy5zZXRTdGF0ZShDX3QuUEFOTklORyl9KSksdGhpcy5wYW5ab29tLmRyYWdJbnRlcmFjdGlvbigpLm9uRHJhZ0VuZCgoKCk9Pnt0aGlzLnN0YXRlPT1DX3QuUEFOTklORyYmdGhpcy5zZXRTdGF0ZShDX3QuTk9ORSl9KSksdGhpcy5kcmFnWm9vbUxheWVyLmRyYWdJbnRlcmFjdGlvbigpLm9uRHJhZ1N0YXJ0KCgoKT0+e3RoaXMuc3RhdGU9PUNfdC5OT05FJiZ0aGlzLnNldFN0YXRlKENfdC5EUkFHX1pPT01JTkcpfSkpLHRoaXMuZHJhZ1pvb21MYXllci5kcmFnSW50ZXJhY3Rpb24oKS5vbkRyYWdFbmQoKCgpPT57dGhpcy5zdGF0ZT09Q190LkRSQUdfWk9PTUlORyYmdGhpcy5zZXRTdGF0ZShDX3QuTk9ORSl9KSl9b25XaGVlbCh0LGUpe2lmKHRoaXMuY2FuU2Nyb2xsWm9vbShlKSlyZXR1cm47Y29uc3Qgbj10aGlzLmVsZW1lbnQoKTtpZighbi5zZWxlY3QoIi5oZWxwIikuZW1wdHkoKSlyZXR1cm47Y29uc3QgaT1uLmFwcGVuZCgiZGl2IikuY2xhc3NlZCgiaGVscCIsITApO2kuYXBwZW5kKCJzcGFuIikudGV4dCgiQWx0ICsgU2Nyb2xsIHRvIFpvb20iKSxpLm9uKCJhbmltYXRpb25lbmQiLCgoKT0+e2kucmVtb3ZlKCl9KSl9c3RhdGljIGlzUGFuS2V5KHQpe3JldHVybiBCb29sZWFuKHQuYWx0S2V5KXx8Qm9vbGVhbih0LnNoaWZ0S2V5KX1jYW5TY3JvbGxab29tKHQpe3JldHVybiB0LmFsdEtleX1zZXRTdGF0ZSh0KXtpZih0aGlzLnN0YXRlPT10KXJldHVybjtjb25zdCBlPXRoaXMuc3RhdGU7dGhpcy5zdGF0ZT10LHRoaXMucm9vdCgpLnJlbW92ZUNsYXNzKHRoaXMuc3RhdGVDbGFzc05hbWUoZSkpLHRoaXMucm9vdCgpLmFkZENsYXNzKHRoaXMuc3RhdGVDbGFzc05hbWUodCkpLGU9PUNfdC5QQU5OSU5HJiZ0aGlzLnBhbkVuZENhbGxiYWNrLmNhbGxDYWxsYmFja3MoKSx0PT1DX3QuUEFOTklORyYmdGhpcy5wYW5TdGFydENhbGxiYWNrLmNhbGxDYWxsYmFja3MoKX1zdGF0ZUNsYXNzTmFtZSh0KXtzd2l0Y2godCl7Y2FzZSBDX3QuUEFOTklORzpyZXR1cm4icGFubmluZyI7Y2FzZSBDX3QuRFJBR19aT09NSU5HOnJldHVybiJkcmFnLXpvb21pbmciO2Nhc2UgQ190Lk5PTkU6ZGVmYXVsdDpyZXR1cm4iIn19b25QYW5TdGFydCh0KXt0aGlzLnBhblN0YXJ0Q2FsbGJhY2suYWRkKHQpfW9uUGFuRW5kKHQpe3RoaXMucGFuRW5kQ2FsbGJhY2suYWRkKHQpfW9uU2Nyb2xsWm9vbSh0KXt0aGlzLnBhblpvb20ub25ab29tRW5kKHQpfW9uRHJhZ1pvb21TdGFydCh0KXt0aGlzLmRyYWdab29tTGF5ZXIuaW50ZXJhY3Rpb25TdGFydCh0KX1vbkRyYWdab29tRW5kKHQpe3RoaXMuZHJhZ1pvb21MYXllci5pbnRlcmFjdGlvbkVuZCh0KX19IShmdW5jdGlvbih0KXt0W3QuVEVYVD0wXT0iVEVYVCIsdFt0LkRPTT0xXT0iRE9NIn0pKGtfdHx8KGtfdD17fSkpLChmdW5jdGlvbih0KXt0LkxPRz0ibG9nIix0LkxJTkVBUj0ibGluZWFyIn0pKExfdHx8KExfdD17fSkpO2NsYXNzIE5fdHtjb25zdHJ1Y3Rvcih0LGUsbixpLHIsbyxhLHMsbCxjLHUpe3RoaXMuZGlydHlEYXRhc2V0cz1uZXcgU2V0LHRoaXMuc2VyaWVzTmFtZXM9W10sdGhpcy5uYW1lMmRhdGFzZXRzPXt9LHRoaXMuY29sb3JTY2FsZT1pLHRoaXMudG9vbHRpcD1yLHRoaXMuZGF0YXNldHM9W10sdGhpcy5faWdub3JlWU91dGxpZXJzPSExLHRoaXMubGFzdFBvaW50c0RhdGFzZXQ9bmV3IFVndC5EYXRhc2V0LHRoaXMubmFuRGF0YXNldD1uZXcgVWd0LkRhdGFzZXQsdGhpcy55VmFsdWVBY2Nlc3Nvcj1lLHRoaXMuc3ltYm9sRnVuY3Rpb249Yyx0aGlzLl9kZWZhdWx0WFJhbmdlPXMsdGhpcy5fZGVmYXVsdFlSYW5nZT1sLHRoaXMudG9vbHRpcENvbHVtbnM9byx0aGlzLmJ1aWxkQ2hhcnQodCxlLG4sYSx1KX1idWlsZENoYXJ0KHQsZSxuLGkscil7dGhpcy5kZXN0cm95KCk7Y29uc3Qgbz10KCk7dGhpcy54QWNjZXNzb3I9by5hY2Nlc3Nvcix0aGlzLnhTY2FsZT1vLnNjYWxlLHRoaXMueEF4aXM9by5heGlzLHRoaXMueEF4aXMubWFyZ2luKDApLnRpY2tMYWJlbFBhZGRpbmcoMyksciYmdGhpcy54QXhpcy5mb3JtYXR0ZXIociksdGhpcy55U2NhbGU9Tl90LmdldFlTY2FsZUZyb21UeXBlKG4pLHRoaXMueVNjYWxlLnNldFZhbHVlUHJvdmlkZXJGb3JEb21haW4oKCgpPT50aGlzLmdldFZhbHVlc0ZvcllBeGlzRG9tYWluQ29tcHV0ZSgpKSksdGhpcy55QXhpcz1uZXcgVWd0LkF4ZXMuTnVtZXJpYyh0aGlzLnlTY2FsZSwibGVmdCIpO2xldCBhPXFndCgzKTt0aGlzLnlBeGlzLm1hcmdpbigwKS50aWNrTGFiZWxQYWRkaW5nKDUpLmZvcm1hdHRlcihhKSx0aGlzLnlBeGlzLnVzZXNUZXh0V2lkdGhBcHByb3hpbWF0aW9uKCEwKSx0aGlzLmZpbGxBcmVhPWk7Y29uc3Qgcz1uZXcgSV90KHRoaXMueFNjYWxlLHRoaXMueVNjYWxlLCgoKT0+dGhpcy5yZXNldERvbWFpbigpKSk7dGhpcy50b29sdGlwSW50ZXJhY3Rpb249dGhpcy5jcmVhdGVUb29sdGlwSW50ZXJhY3Rpb24ocyksdGhpcy50b29sdGlwUG9pbnRzQ29tcG9uZW50PW5ldyBVZ3QuQ29tcG9uZW50O2NvbnN0IGw9dGhpcy5idWlsZFBsb3QodGhpcy54U2NhbGUsdGhpcy55U2NhbGUsaSk7dGhpcy5ncmlkbGluZXM9bmV3IFVndC5Db21wb25lbnRzLkdyaWRsaW5lcyh0aGlzLnhTY2FsZSx0aGlzLnlTY2FsZSk7bGV0IGM9bnVsbDtuIT09TF90LkxPRyYmKGM9bmV3IFVndC5Db21wb25lbnRzLkd1aWRlTGluZUxheWVyKCJob3Jpem9udGFsIiksYy5zY2FsZSh0aGlzLnlTY2FsZSkudmFsdWUoMCkpO2xldCB1PW5ldyBVZ3QuQ29tcG9uZW50cy5HdWlkZUxpbmVMYXllcigidmVydGljYWwiKTt1LnNjYWxlKHRoaXMueFNjYWxlKS52YWx1ZSgwKSx0aGlzLmNlbnRlcj1uZXcgVWd0LkNvbXBvbmVudHMuR3JvdXAoW3RoaXMuZ3JpZGxpbmVzLGMsdSxsLHRoaXMudG9vbHRpcFBvaW50c0NvbXBvbmVudCxzXSksdGhpcy5jZW50ZXIuYWRkQ2xhc3MoIm1haW4iKSx0aGlzLm91dGVyPW5ldyBVZ3QuQ29tcG9uZW50cy5UYWJsZShbW3RoaXMueUF4aXMsdGhpcy5jZW50ZXJdLFtudWxsLHRoaXMueEF4aXNdXSl9YnVpbGRQbG90KHQsZSxuKXtuJiYodGhpcy5tYXJnaW5BcmVhUGxvdD1uZXcgVWd0LlBsb3RzLkFyZWEsdGhpcy5tYXJnaW5BcmVhUGxvdC54KHRoaXMueEFjY2Vzc29yLHQpLHRoaXMubWFyZ2luQXJlYVBsb3QueShuLmhpZ2hlckFjY2Vzc29yLGUpLHRoaXMubWFyZ2luQXJlYVBsb3QueTAobi5sb3dlckFjY2Vzc29yKSx0aGlzLm1hcmdpbkFyZWFQbG90LmF0dHIoImZpbGwiLCgodCxlLG4pPT50aGlzLmNvbG9yU2NhbGUuc2NhbGUobi5tZXRhZGF0YSgpLm5hbWUpKSksdGhpcy5tYXJnaW5BcmVhUGxvdC5hdHRyKCJmaWxsLW9wYWNpdHkiLC4zKSx0aGlzLm1hcmdpbkFyZWFQbG90LmF0dHIoInN0cm9rZS13aWR0aCIsMCkpLHRoaXMuc21vb3RoZWRBY2Nlc3Nvcj10PT50LnNtb290aGVkO2xldCBpPW5ldyBVZ3QuUGxvdHMuTGluZTtpLngodGhpcy54QWNjZXNzb3IsdCksaS55KHRoaXMueVZhbHVlQWNjZXNzb3IsZSksaS5hdHRyKCJzdHJva2UiLCgodCxlLG4pPT50aGlzLmNvbG9yU2NhbGUuc2NhbGUobi5tZXRhZGF0YSgpLm5hbWUpKSksdGhpcy5saW5lUGxvdD1pLHRoaXMuc2V0dXBUb29sdGlwcyhpKTtsZXQgcj1uZXcgVWd0LlBsb3RzLkxpbmU7aWYoci54KHRoaXMueEFjY2Vzc29yLHQpLHIueSh0aGlzLnNtb290aGVkQWNjZXNzb3IsZSksci5hdHRyKCJzdHJva2UiLCgodCxlLG4pPT50aGlzLmNvbG9yU2NhbGUuc2NhbGUobi5tZXRhZGF0YSgpLm5hbWUpKSksdGhpcy5zbW9vdGhMaW5lUGxvdD1yLHRoaXMuc3ltYm9sRnVuY3Rpb24pe2NvbnN0IG49bmV3IFVndC5QbG90cy5TY2F0dGVyO24ueCh0aGlzLnhBY2Nlc3Nvcix0KSxuLnkodGhpcy55VmFsdWVBY2Nlc3NvcixlKSxuLmF0dHIoImZpbGwiLCgodCxlLG4pPT50aGlzLmNvbG9yU2NhbGUuc2NhbGUobi5tZXRhZGF0YSgpLm5hbWUpKSksbi5hdHRyKCJvcGFjaXR5IiwxKSxuLnNpemUoOCksbi5zeW1ib2woKCh0LGUsbik9PnRoaXMuc3ltYm9sRnVuY3Rpb24obi5tZXRhZGF0YSgpLm5hbWUpKSksdGhpcy5tYXJrZXJzU2NhdHRlclBsb3Q9bn1sZXQgbz1uZXcgVWd0LlBsb3RzLlNjYXR0ZXI7by54KHRoaXMueEFjY2Vzc29yLHQpLG8ueSh0aGlzLnlWYWx1ZUFjY2Vzc29yLGUpLG8uYXR0cigiZmlsbCIsKHQ9PnRoaXMuY29sb3JTY2FsZS5zY2FsZSh0Lm5hbWUpKSksby5hdHRyKCJvcGFjaXR5IiwxKSxvLnNpemUoOCksby5kYXRhc2V0cyhbdGhpcy5sYXN0UG9pbnRzRGF0YXNldF0pLHRoaXMuc2NhdHRlclBsb3Q9bztsZXQgYT1uZXcgVWd0LlBsb3RzLlNjYXR0ZXI7YS54KHRoaXMueEFjY2Vzc29yLHQpLGEueSgodD0+dC5kaXNwbGF5WSksZSksYS5hdHRyKCJmaWxsIiwodD0+dGhpcy5jb2xvclNjYWxlLnNjYWxlKHQubmFtZSkpKSxhLmF0dHIoIm9wYWNpdHkiLDEpLGEuc2l6ZSgxMiksYS5kYXRhc2V0cyhbdGhpcy5uYW5EYXRhc2V0XSksYS5zeW1ib2woVWd0LlN5bWJvbEZhY3Rvcmllcy50cmlhbmdsZSksdGhpcy5uYW5EaXNwbGF5PWE7Y29uc3Qgcz1bYSxvLHIsaV07cmV0dXJuIHRoaXMubWFyZ2luQXJlYVBsb3QmJnMucHVzaCh0aGlzLm1hcmdpbkFyZWFQbG90KSx0aGlzLm1hcmtlcnNTY2F0dGVyUGxvdCYmcy5wdXNoKHRoaXMubWFya2Vyc1NjYXR0ZXJQbG90KSxuZXcgVWd0LkNvbXBvbmVudHMuR3JvdXAocyl9aWdub3JlWU91dGxpZXJzKHQpe3QhPT10aGlzLl9pZ25vcmVZT3V0bGllcnMmJih0aGlzLl9pZ25vcmVZT3V0bGllcnM9dCx0aGlzLnVwZGF0ZVNwZWNpYWxEYXRhc2V0cygpLHRoaXMueVNjYWxlLmlnbm9yZU91dGxpZXIodCksdGhpcy5yZXNldFlEb21haW4oKSl9Z2V0VmFsdWVzRm9yWUF4aXNEb21haW5Db21wdXRlKCl7Y29uc3QgdD10aGlzLmdldEFjY2Vzc29yc0ZvckNvbXB1dGluZ1lSYW5nZSgpO3JldHVybiB3ZS5mbGF0dGVuRGVlcCh0aGlzLmRhdGFzZXRzLm1hcCgoZT0+dC5tYXAoKHQ9PmUuZGF0YSgpLm1hcCgobj0+dChuLC0xLGUpKSkpKSkpKS5maWx0ZXIoaXNGaW5pdGUpfXVwZGF0ZVNwZWNpYWxEYXRhc2V0cygpe2NvbnN0IHQ9dGhpcy5nZXRZQXhpc0FjY2Vzc29yKCk7bGV0IGU9dGhpcy5kYXRhc2V0cy5tYXAoKGU9PntsZXQgbj1udWxsLGk9ZS5kYXRhKCkuZmlsdGVyKChuPT4haXNOYU4odChuLC0xLGUpKSkpO3JldHVybiBpLmxlbmd0aD4wJiYobj1pW2kubGVuZ3RoLTFdLG4ubmFtZT1lLm1ldGFkYXRhKCkubmFtZSxuLnJlbGF0aXZlPUtndChuLDAsZSkpLG59KSkuZmlsdGVyKCh0PT5udWxsIT10KSk7dGhpcy5sYXN0UG9pbnRzRGF0YXNldC5kYXRhKGUpLHRoaXMubWFya2Vyc1NjYXR0ZXJQbG90JiZ0aGlzLm1hcmtlcnNTY2F0dGVyUGxvdC5kYXRhc2V0cyh0aGlzLmRhdGFzZXRzLm1hcCh0aGlzLmNyZWF0ZVNhbXBsZWREYXRhc2V0Rm9yTWFya2VycykpO2xldCBuPXdlLmZsYXR0ZW4odGhpcy5kYXRhc2V0cy5tYXAoKGU9PntsZXQgbj1udWxsLGk9ZS5kYXRhKCkscj0wO2Zvcig7cjxpLmxlbmd0aCYmbnVsbD09bjspaXNOYU4odChpW3JdLC0xLGUpKXx8KG49dChpW3JdLC0xLGUpKSxyKys7bnVsbD09biYmKG49MCk7bGV0IG89W107Zm9yKHI9MDtyPGkubGVuZ3RoO3IrKylpc05hTih0KGlbcl0sLTEsZSkpPyhpW3JdLm5hbWU9ZS5tZXRhZGF0YSgpLm5hbWUsaVtyXS5kaXNwbGF5WT1uLGlbcl0ucmVsYXRpdmU9S2d0KGlbcl0sMCxlKSxvLnB1c2goaVtyXSkpOm49dChpW3JdLC0xLGUpO3JldHVybiBvfSkpKTt0aGlzLm5hbkRhdGFzZXQuZGF0YShuKX1yZXNldERvbWFpbigpe3RoaXMucmVzZXRYRG9tYWluKCksdGhpcy5yZXNldFlEb21haW4oKX1yZXNldFhEb21haW4oKXtsZXQgdDtpZihudWxsIT10aGlzLl9kZWZhdWx0WFJhbmdlKXQ9dGhpcy5fZGVmYXVsdFhSYW5nZTtlbHNle2NvbnN0IGU9dGhpcy54U2NhbGU7ZS5fZG9tYWluTWluPW51bGwsZS5fZG9tYWluTWF4PW51bGwsdD1lLl9nZXRFeHRlbnQoKX10aGlzLnhTY2FsZS5kb21haW4odCl9cmVzZXRZRG9tYWluKCl7bnVsbCE9dGhpcy5fZGVmYXVsdFlSYW5nZT90aGlzLnlTY2FsZS5kb21haW4odGhpcy5fZGVmYXVsdFlSYW5nZSk6KHRoaXMueVNjYWxlLmF1dG9Eb21haW4oKSx0aGlzLnlTY2FsZS5kb21haW4odGhpcy55U2NhbGUuZG9tYWluKCkpKX1nZXRBY2Nlc3NvcnNGb3JDb21wdXRpbmdZUmFuZ2UoKXtjb25zdCB0PVt0aGlzLmdldFlBeGlzQWNjZXNzb3IoKV07cmV0dXJuIHRoaXMuZmlsbEFyZWEmJnQucHVzaCh0aGlzLmZpbGxBcmVhLmxvd2VyQWNjZXNzb3IsdGhpcy5maWxsQXJlYS5oaWdoZXJBY2Nlc3NvciksdH1nZXRZQXhpc0FjY2Vzc29yKCl7cmV0dXJuIHRoaXMuc21vb3RoaW5nRW5hYmxlZD90aGlzLnNtb290aGVkQWNjZXNzb3I6dGhpcy55VmFsdWVBY2Nlc3Nvcn1jcmVhdGVUb29sdGlwSW50ZXJhY3Rpb24odCl7Y29uc3QgZT1uZXcgb190LG49KCk9PntlLmVuYWJsZWQoITEpLHRoaXMuaGlkZVRvb2x0aXBzKCl9LGk9KCk9PmUuZW5hYmxlZCghMCk7cmV0dXJuIHQub25QYW5TdGFydChuKSx0Lm9uRHJhZ1pvb21TdGFydChuKSx0Lm9uUGFuRW5kKGkpLHQub25EcmFnWm9vbUVuZChpKSx0Lm9uU2Nyb2xsWm9vbSgoKCk9PnRoaXMudXBkYXRlVG9vbHRpcENvbnRlbnQodGhpcy5fbGFzdE1vdXNlUG9zaXRpb24pKSksZS5vblBvaW50ZXJNb3ZlKCh0PT57dGhpcy5fbGFzdE1vdXNlUG9zaXRpb249dCx0aGlzLnVwZGF0ZVRvb2x0aXBDb250ZW50KHQpfSkpLGUub25Qb2ludGVyRXhpdCgoKCk9PnRoaXMuaGlkZVRvb2x0aXBzKCkpKSxlfXVwZGF0ZVRvb2x0aXBDb250ZW50KHQpe3RoaXMubGluZVBsb3QmJih3aW5kb3cuY2FuY2VsQW5pbWF0aW9uRnJhbWUodGhpcy5fdG9vbHRpcFVwZGF0ZUFuaW1hdGlvbkZyYW1lKSx0aGlzLl90b29sdGlwVXBkYXRlQW5pbWF0aW9uRnJhbWU9d2luZG93LnJlcXVlc3RBbmltYXRpb25GcmFtZSgoKCk9PntsZXQgZT17eDp0LngseTp0LnksZGF0dW06bnVsbCxkYXRhc2V0Om51bGx9LG49dGhpcy5ncmlkbGluZXMuY29udGVudCgpLm5vZGUoKS5nZXRCQm94KCksaT10aGlzLmxpbmVQbG90LmRhdGFzZXRzKCkubWFwKCh0PT50aGlzLmZpbmRDbG9zZXN0UG9pbnQoZSx0KSkpLmZpbHRlcihCb29sZWFuKSxyPVVndC5VdGlscy5ET00uaW50ZXJzZWN0c0JCb3gsbz1pLmZpbHRlcigodD0+cih0LngsdC55LG4pfHxpc05hTih0aGlzLnlWYWx1ZUFjY2Vzc29yKHQuZGF0dW0sMCx0LmRhdGFzZXQpKSkpLGE9by5maWx0ZXIoKHQ9PiFpc05hTih0aGlzLnlWYWx1ZUFjY2Vzc29yKHQuZGF0dW0sMCx0LmRhdGFzZXQpKSkpO2lmKDAhPT1pLmxlbmd0aCl7dGhpcy5zY2F0dGVyUGxvdC5hdHRyKCJkaXNwbGF5Iiwibm9uZSIpO2NvbnN0IHQ9dGhpcy50b29sdGlwUG9pbnRzQ29tcG9uZW50LmNvbnRlbnQoKS5zZWxlY3RBbGwoIi5wb2ludCIpLmRhdGEoYSwodD0+dC5kYXRhc2V0Lm1ldGFkYXRhKCkubmFtZSkpO3QuZW50ZXIoKS5hcHBlbmQoImNpcmNsZSIpLmNsYXNzZWQoInBvaW50IiwhMCksdC5hdHRyKCJyIiw0KS5hdHRyKCJjeCIsKHQ9PnQueCkpLmF0dHIoImN5IiwodD0+dC55KSkuc3R5bGUoInN0cm9rZSIsIm5vbmUiKS5hdHRyKCJmaWxsIiwodD0+dGhpcy5jb2xvclNjYWxlLnNjYWxlKHQuZGF0YXNldC5tZXRhZGF0YSgpLm5hbWUpKSksdC5leGl0KCkucmVtb3ZlKCksdGhpcy5kcmF3VG9vbHRpcHMobyxlLHRoaXMudG9vbHRpcENvbHVtbnMpfWVsc2UgdGhpcy5oaWRlVG9vbHRpcHMoKX0pKSl9aGlkZVRvb2x0aXBzKCl7d2luZG93LmNhbmNlbEFuaW1hdGlvbkZyYW1lKHRoaXMuX3Rvb2x0aXBVcGRhdGVBbmltYXRpb25GcmFtZSksdGhpcy50b29sdGlwLmhpZGUoKSx0aGlzLnNjYXR0ZXJQbG90LmF0dHIoImRpc3BsYXkiLCJibG9jayIpLHRoaXMudG9vbHRpcFBvaW50c0NvbXBvbmVudC5jb250ZW50KCkuc2VsZWN0QWxsKCIucG9pbnQiKS5yZW1vdmUoKX1zZXR1cFRvb2x0aXBzKHQpe3Qub25EZXRhY2goKCgpPT57dGhpcy50b29sdGlwSW50ZXJhY3Rpb24uZGV0YWNoRnJvbSh0KSx0aGlzLnRvb2x0aXBJbnRlcmFjdGlvbi5lbmFibGVkKCExKX0pKSx0Lm9uQW5jaG9yKCgoKT0+e3RoaXMudG9vbHRpcEludGVyYWN0aW9uLmF0dGFjaFRvKHQpLHRoaXMudG9vbHRpcEludGVyYWN0aW9uLmVuYWJsZWQoITApfSkpfWRyYXdUb29sdGlwcyh0LGUsbil7aWYoIXQubGVuZ3RoKXJldHVybiB2b2lkIHRoaXMudG9vbHRpcC5oaWRlKCk7Y29uc3R7Y29sb3JTY2FsZTppfT10aGlzO249W3t0aXRsZToiIixzdGF0aWM6ITEsZXZhbFR5cGU6a190LkRPTSxldmFsdWF0ZSh0KXtyZXR1cm4gU3UodGhpcykuc2VsZWN0KCJzcGFuIikuc3R5bGUoImJhY2tncm91bmQtY29sb3IiLCgoKT0+aS5zY2FsZSh0LmRhdGFzZXQubWV0YWRhdGEoKS5uYW1lKSkpLCIifSxlbnRlcih0KXtTdSh0aGlzKS5hcHBlbmQoInNwYW4iKS5jbGFzc2VkKCJzd2F0Y2giLCEwKS5zdHlsZSgiYmFja2dyb3VuZC1jb2xvciIsKCgpPT5pLnNjYWxlKHQuZGF0YXNldC5tZXRhZGF0YSgpLm5hbWUpKSl9fSwuLi5uXTtjb25zdCByPXQ9Pk1hdGgucG93KHQueC1lLngsMikrTWF0aC5wb3codC55LWUueSwyKSxvPXdlLm1pbih0Lm1hcChyKSksYT10aGlzLnNtb290aGluZ0VuYWJsZWQ/dGhpcy5zbW9vdGhlZEFjY2Vzc29yOnRoaXMueVZhbHVlQWNjZXNzb3I7dD0iYXNjZW5kaW5nIj09PXRoaXMudG9vbHRpcFNvcnRpbmdNZXRob2Q/d2Uuc29ydEJ5KHQsKHQ9PmEodC5kYXR1bSwtMSx0LmRhdGFzZXQpKSk6ImRlc2NlbmRpbmciPT09dGhpcy50b29sdGlwU29ydGluZ01ldGhvZD93ZS5zb3J0QnkodCwodD0+YSh0LmRhdHVtLC0xLHQuZGF0YXNldCkpKS5yZXZlcnNlKCk6Im5lYXJlc3QiPT09dGhpcy50b29sdGlwU29ydGluZ01ldGhvZD93ZS5zb3J0QnkodCxyKTp0LnNsaWNlKDApLnJldmVyc2UoKTtjb25zdCBzPXRoaXMsbD1TdSh0aGlzLnRvb2x0aXAuY29udGVudCgpKS5zZWxlY3QoInRhYmxlIiksYz1sLnNlbGVjdCgidGhlYWQiKS5zZWxlY3RBbGwoInRoIikuZGF0YShuLCgodCxlLG4pPT50LnRpdGxlKSk7Yy5lbnRlcigpLmFwcGVuZCgidGgiKS50ZXh0KCh0PT50LnRpdGxlKSkubm9kZXMoKSxjLmV4aXQoKS5yZW1vdmUoKTtjb25zdCB1PWwuc2VsZWN0KCJ0Ym9keSIpLnNlbGVjdEFsbCgidHIiKS5kYXRhKHQsKCh0LGUsbik9PnQuZGF0YXNldC5tZXRhZGF0YSgpLm5hbWUpKTt1LmNsYXNzZWQoImRpc3RhbnQiLCh0PT57bGV0IG49dC5kYXRhc2V0LmRhdGEoKVswXSxpPXdlLmxhc3QodC5kYXRhc2V0LmRhdGEoKSkscj10aGlzLnhTY2FsZS5zY2FsZSh0aGlzLnhBY2Nlc3NvcihuLDAsdC5kYXRhc2V0KSksbz10aGlzLnhTY2FsZS5zY2FsZSh0aGlzLnhBY2Nlc3NvcihpLDAsdC5kYXRhc2V0KSksYT10aGlzLnNtb290aGluZ0VuYWJsZWQ/dC5kYXR1bS5zbW9vdGhlZDp0aGlzLnlWYWx1ZUFjY2Vzc29yKHQuZGF0dW0sMCx0LmRhdGFzZXQpO3JldHVybiBlLng8cnx8ZS54Pm98fGlzTmFOKGEpfSkpLmNsYXNzZWQoImNsb3Nlc3QiLCh0PT5yKHQpPT09bykpLmVhY2goKGZ1bmN0aW9uKHQpe3MuZHJhd1Rvb2x0aXBSb3codGhpcyxuLHQpfSkpLm9yZGVyKCksdS5leGl0KCkucmVtb3ZlKCksdS5lbnRlcigpLmFwcGVuZCgidHIiKS5lYWNoKChmdW5jdGlvbih0KXtzLmRyYXdUb29sdGlwUm93KHRoaXMsbix0KX0pKS5ub2RlcygpLHRoaXMudG9vbHRpcC51cGRhdGVBbmRQb3NpdGlvbih0aGlzLnRhcmdldFNWRy5ub2RlKCkpfWRyYXdUb29sdGlwUm93KHQsZSxuKXtjb25zdCBpPXRoaXMscj1TdSh0KS5zZWxlY3RBbGwoInRkIikuZGF0YShlKTtyLmVhY2goKGZ1bmN0aW9uKHQpe3Quc3RhdGljfHxpLmRyYXdUb29sdGlwQ29sdW1uLmNhbGwoaSx0aGlzLHQsbil9KSksci5leGl0KCkucmVtb3ZlKCksci5lbnRlcigpLmFwcGVuZCgidGQiKS5lYWNoKChmdW5jdGlvbih0KXsiZW50ZXIiaW4gdCYmdC5lbnRlciYmdC5lbnRlci5jYWxsKHRoaXMsbiksaS5kcmF3VG9vbHRpcENvbHVtbi5jYWxsKGksdGhpcyx0LG4pfSkpfWRyYXdUb29sdGlwQ29sdW1uKHQsZSxuKXtjb25zdHtzbW9vdGhpbmdFbmFibGVkOml9PXRoaXM7ImV2YWxUeXBlImluIGUmJmUuZXZhbFR5cGU9PWtfdC5ET00/ZS5ldmFsdWF0ZS5jYWxsKHQsbix7c21vb3RoaW5nRW5hYmxlZDppfSk6U3UodCkudGV4dChlLmV2YWx1YXRlLmNhbGwodCxuLHtzbW9vdGhpbmdFbmFibGVkOml9KSl9ZmluZENsb3Nlc3RQb2ludCh0LGUpe2NvbnN0IG49ZS5kYXRhKCkubWFwKCgodCxuKT0+dGhpcy54U2NhbGUuc2NhbGUodGhpcy54QWNjZXNzb3IodCxuLGUpKSkpO2xldCBpPXdlLnNvcnRlZEluZGV4KG4sdC54KTtpZigwPT1uLmxlbmd0aClyZXR1cm4gbnVsbDtpPT09bi5sZW5ndGg/aS09MTowIT09aSYmKGk9TWF0aC5hYnMobltpLTFdLXQueCk8TWF0aC5hYnMobltpXS10LngpP2ktMTppKTtjb25zdCByPWUuZGF0YSgpW2ldLG89dGhpcy5zbW9vdGhpbmdFbmFibGVkP3RoaXMuc21vb3RoZWRBY2Nlc3NvcihyLGksZSk6dGhpcy55VmFsdWVBY2Nlc3NvcihyLGksZSk7cmV0dXJue3g6bltpXSx5OnRoaXMueVNjYWxlLnNjYWxlKG8pLGRhdHVtOnIsZGF0YXNldDplfX1yZXNtb290aERhdGFzZXQodCl7bGV0IGU9dC5kYXRhKCk7Y29uc3Qgbj10aGlzLnNtb290aGluZ1dlaWdodDtsZXQgaT1lLmxlbmd0aD4wPzA6TmFOLHI9MDtjb25zdCBvPWUubWFwKCgoZSxuKT0+dGhpcy55VmFsdWVBY2Nlc3NvcihlLG4sdCkpKSxhPW8uZXZlcnkoKHQ9PnQ9PW9bMF0pKTtlLmZvckVhY2goKCh0LGUpPT57Y29uc3Qgcz1vW2VdO2lmKGF8fCFOdW1iZXIuaXNGaW5pdGUocykpdC5zbW9vdGhlZD1zO2Vsc2V7aT1pKm4rKDEtbikqcyxyKys7bGV0IGU9MTsxIT09biYmKGU9MS1NYXRoLnBvdyhuLHIpKSx0LnNtb290aGVkPWkvZX19KSl9Z2V0RGF0YXNldCh0KXtyZXR1cm4gdm9pZCAwPT09dGhpcy5uYW1lMmRhdGFzZXRzW3RdJiYodGhpcy5uYW1lMmRhdGFzZXRzW3RdPW5ldyBVZ3QuRGF0YXNldChbXSx7bmFtZTp0LG1ldGE6bnVsbH0pKSx0aGlzLm5hbWUyZGF0YXNldHNbdF19c3RhdGljIGdldFlTY2FsZUZyb21UeXBlKHQpe2lmKHQ9PT1MX3QuTE9HKXJldHVybiBuZXcgVF90O2lmKHQ9PT1MX3QuTElORUFSKXJldHVybiBuZXcgeF90O3Rocm93IG5ldyBFcnJvcigiVW5yZWNvZ25pemVkIHlTY2FsZSB0eXBlICIrdCl9c2V0VmlzaWJsZVNlcmllcyh0KXt0aGlzLmRpc2FibGVDaGFuZ2VzKCksKHQ9dC5zb3J0KCkpLnJldmVyc2UoKSx0aGlzLnNlcmllc05hbWVzPXR9ZGlzYWJsZUNoYW5nZXMoKXt0aGlzLmRpcnR5RGF0YXNldHMuc2l6ZXx8KHRoaXMubGluZVBsb3QuZGF0YXNldHMoW10pLHRoaXMuc21vb3RoTGluZVBsb3QmJnRoaXMuc21vb3RoTGluZVBsb3QuZGF0YXNldHMoW10pLHRoaXMubWFyZ2luQXJlYVBsb3QmJnRoaXMubWFyZ2luQXJlYVBsb3QuZGF0YXNldHMoW10pKX1jb21taXRDaGFuZ2VzKCl7dGhpcy5kYXRhc2V0cz10aGlzLnNlcmllc05hbWVzLm1hcCgodD0+dGhpcy5nZXREYXRhc2V0KHQpKSksWy4uLnRoaXMuZGlydHlEYXRhc2V0c10uZm9yRWFjaCgodD0+e3RoaXMuc21vb3RoaW5nRW5hYmxlZCYmdGhpcy5yZXNtb290aERhdGFzZXQodGhpcy5nZXREYXRhc2V0KHQpKX0pKSx0aGlzLnVwZGF0ZVNwZWNpYWxEYXRhc2V0cygpLHRoaXMubGluZVBsb3QuZGF0YXNldHModGhpcy5kYXRhc2V0cyksdGhpcy5zbW9vdGhpbmdFbmFibGVkJiZ0aGlzLnNtb290aExpbmVQbG90LmRhdGFzZXRzKHRoaXMuZGF0YXNldHMpLHRoaXMubWFyZ2luQXJlYVBsb3QmJnRoaXMubWFyZ2luQXJlYVBsb3QuZGF0YXNldHModGhpcy5kYXRhc2V0cyksdGhpcy5tZWFzdXJlQkJveEFuZE1heWJlSW52YWxpZGF0ZUxheW91dEluUmFmKCksdGhpcy5kaXJ0eURhdGFzZXRzLmNsZWFyKCl9Y3JlYXRlU2FtcGxlZERhdGFzZXRGb3JNYXJrZXJzKHQpe2NvbnN0IGU9dC5kYXRhKCk7aWYoZS5sZW5ndGg8PTIwKXJldHVybiB0O2NvbnN0IG49TWF0aC5jZWlsKGUubGVuZ3RoLzIwKSxpPW5ldyBBcnJheShNYXRoLmZsb29yKGUubGVuZ3RoL24pKTtmb3IobGV0IHQ9MCxyPTA7dDxpLmxlbmd0aDt0Kysscis9bilpW3RdPWVbcl07cmV0dXJuIG5ldyBVZ3QuRGF0YXNldChpLHQubWV0YWRhdGEoKSl9c2V0U2VyaWVzRGF0YSh0LGUpe3RoaXMuZGlzYWJsZUNoYW5nZXMoKSx0aGlzLmdldERhdGFzZXQodCkuZGF0YShlKSx0aGlzLmRpcnR5RGF0YXNldHMuYWRkKHQpfXNldFNlcmllc01ldGFkYXRhKHQsZSl7dGhpcy5kaXNhYmxlQ2hhbmdlcygpLHRoaXMuZ2V0RGF0YXNldCh0KS5tZXRhZGF0YShPYmplY3QuYXNzaWduKE9iamVjdC5hc3NpZ24oe30sdGhpcy5nZXREYXRhc2V0KHQpLm1ldGFkYXRhKCkpLHttZXRhOmV9KSksdGhpcy5kaXJ0eURhdGFzZXRzLmFkZCh0KX1zbW9vdGhpbmdVcGRhdGUodCl7dGhpcy5zbW9vdGhpbmdXZWlnaHQ9dCx0aGlzLmRhdGFzZXRzLmZvckVhY2goKHQ9PnRoaXMucmVzbW9vdGhEYXRhc2V0KHQpKSksdGhpcy5zbW9vdGhpbmdFbmFibGVkfHwodGhpcy5saW5lUGxvdC5hZGRDbGFzcygiZ2hvc3QiKSx0aGlzLnNjYXR0ZXJQbG90LnkodGhpcy5zbW9vdGhlZEFjY2Vzc29yLHRoaXMueVNjYWxlKSx0aGlzLnNtb290aGluZ0VuYWJsZWQ9ITAsdGhpcy5zbW9vdGhMaW5lUGxvdC5kYXRhc2V0cyh0aGlzLmRhdGFzZXRzKSksdGhpcy5tYXJrZXJzU2NhdHRlclBsb3QmJnRoaXMubWFya2Vyc1NjYXR0ZXJQbG90LnkodGhpcy5nZXRZQXhpc0FjY2Vzc29yKCksdGhpcy55U2NhbGUpLHRoaXMudXBkYXRlU3BlY2lhbERhdGFzZXRzKCl9c21vb3RoaW5nRGlzYWJsZSgpe3RoaXMuc21vb3RoaW5nRW5hYmxlZCYmKHRoaXMubGluZVBsb3QucmVtb3ZlQ2xhc3MoImdob3N0IiksdGhpcy5zY2F0dGVyUGxvdC55KHRoaXMueVZhbHVlQWNjZXNzb3IsdGhpcy55U2NhbGUpLHRoaXMuc21vb3RoTGluZVBsb3QuZGF0YXNldHMoW10pLHRoaXMuc21vb3RoaW5nRW5hYmxlZD0hMSx0aGlzLnVwZGF0ZVNwZWNpYWxEYXRhc2V0cygpKSx0aGlzLm1hcmtlcnNTY2F0dGVyUGxvdCYmdGhpcy5tYXJrZXJzU2NhdHRlclBsb3QueSh0aGlzLmdldFlBeGlzQWNjZXNzb3IoKSx0aGlzLnlTY2FsZSl9c2V0Q29sb3JTY2FsZSh0KXt0aGlzLmNvbG9yU2NhbGU9dH1zZXRUb29sdGlwQ29sdW1ucyh0KXt0aGlzLnRvb2x0aXBDb2x1bW5zPXR9c2V0VG9vbHRpcFNvcnRpbmdNZXRob2QodCl7dGhpcy50b29sdGlwU29ydGluZ01ldGhvZD10fXJlbmRlclRvKHQpe3RoaXMudGFyZ2V0U1ZHPXQsdGhpcy5vdXRlci5yZW5kZXJUbyh0KSxudWxsIT10aGlzLl9kZWZhdWx0WFJhbmdlJiZ0aGlzLnJlc2V0WERvbWFpbigpLG51bGwhPXRoaXMuX2RlZmF1bHRZUmFuZ2UmJnRoaXMucmVzZXRZRG9tYWluKCksdGhpcy5tZWFzdXJlQkJveEFuZE1heWJlSW52YWxpZGF0ZUxheW91dEluUmFmKCl9cmVkcmF3KCl7d2luZG93LmNhbmNlbEFuaW1hdGlvbkZyYW1lKHRoaXMuX3JlZHJhd1JhZiksdGhpcy5fcmVkcmF3UmFmPXdpbmRvdy5yZXF1ZXN0QW5pbWF0aW9uRnJhbWUoKCgpPT57dGhpcy5tZWFzdXJlQkJveEFuZE1heWJlSW52YWxpZGF0ZUxheW91dCgpLHRoaXMub3V0ZXIucmVkcmF3KCl9KSl9bWVhc3VyZUJCb3hBbmRNYXliZUludmFsaWRhdGVMYXlvdXRJblJhZigpe3dpbmRvdy5jYW5jZWxBbmltYXRpb25GcmFtZSh0aGlzLl9pbnZhbGlkYXRlTGF5b3V0UmFmKSx0aGlzLl9pbnZhbGlkYXRlTGF5b3V0UmFmPXdpbmRvdy5yZXF1ZXN0QW5pbWF0aW9uRnJhbWUoKCgpPT57dGhpcy5tZWFzdXJlQkJveEFuZE1heWJlSW52YWxpZGF0ZUxheW91dCgpfSkpfW1lYXN1cmVCQm94QW5kTWF5YmVJbnZhbGlkYXRlTGF5b3V0KCl7aWYodGhpcy5fbGFzdERyYXdCQm94KXtjb25zdHt3aWR0aDp0fT10aGlzLl9sYXN0RHJhd0JCb3gse3dpZHRoOmV9PXRoaXMudGFyZ2V0U1ZHLm5vZGUoKS5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKTswPT10JiZ0PGUmJnRoaXMub3V0ZXIuaW52YWxpZGF0ZUNhY2hlKCl9dGhpcy5fbGFzdERyYXdCQm94PXRoaXMudGFyZ2V0U1ZHLm5vZGUoKS5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKX1kZXN0cm95KCl7d2luZG93LmNhbmNlbEFuaW1hdGlvbkZyYW1lKHRoaXMuX3JlZHJhd1JhZiksd2luZG93LmNhbmNlbEFuaW1hdGlvbkZyYW1lKHRoaXMuX2ludmFsaWRhdGVMYXlvdXRSYWYpLHRoaXMub3V0ZXImJnRoaXMub3V0ZXIuZGVzdHJveSgpfW9uQW5jaG9yKHQpe3RoaXMub3V0ZXImJnRoaXMub3V0ZXIub25BbmNob3IodCl9aXNEYXRhRml0VG9Eb21haW4oKXtyZXR1cm4gdCh0aGlzLnhBeGlzLmdldFNjYWxlKCkpJiZ0KHRoaXMueUF4aXMuZ2V0U2NhbGUoKSk7ZnVuY3Rpb24gdCh0KXtjb25zdCBlPXQuZ2V0VHJhbnNmb3JtYXRpb25Eb21haW4oKSxuPXQuZ2V0VHJhbnNmb3JtYXRpb25FeHRlbnQoKTtyZXR1cm4gblswXT09PWVbMF0mJm5bMV09PT1lWzFdfX19IShmdW5jdGlvbih0KXt0LkdST1VQPSJHIix0LkRJVj0iRElWIix0LlNWRz0iU1ZHIix0LlRFWFQ9IlRFWFQifSkoUF90fHwoUF90PXt9KSk7Y2xhc3MgT190IGV4dGVuZHMgY2xhc3N7Y29uc3RydWN0b3IodCl7dGhpcy51bmlxdWVJZD0wLHRoaXMucm9vdD10fWV4cG9ydEFzU3RyaW5nKCl7Y29uc3QgdD10aGlzLmNvbnZlcnQodGhpcy5yb290KTtpZighdClyZXR1cm4iIjtjb25zdCBlPXRoaXMuY3JlYXRlUm9vdFN2ZygpO3JldHVybiBlLmFwcGVuZENoaWxkKHQpLGUub3V0ZXJIVE1MfWNyZWF0ZVVuaXF1ZUlkKHQpe3JldHVybmAke3R9XyR7dGhpcy51bmlxdWVJZCsrfWB9Z2V0U2l6ZSgpe3JldHVybiB0aGlzLnJvb3QuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCl9Y3JlYXRlUm9vdFN2Zygpe2NvbnN0IHQ9ZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgic3ZnIiksZT10aGlzLmdldFNpemUoKTtyZXR1cm4gdC5zZXRBdHRyaWJ1dGVOUygic3ZnIiwidmlld0JveCIsYDAgMCAke2Uud2lkdGh9ICR7ZS5oZWlnaHR9YCksdC5zZXRBdHRyaWJ1dGUoInhtbG5zIiwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciKSx0fWNvbnZlcnQodCl7bGV0IGU9bnVsbDtjb25zdCBuPXQubm9kZU5hbWUudG9VcHBlckNhc2UoKTtpZih0Lm5vZGVUeXBlIT1Ob2RlLkVMRU1FTlRfTk9ERXx8biE9UF90LkRJViYmbiE9UF90LlNWRyllPXQuY2xvbmVOb2RlKCk7ZWxzZXtlPWRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoUF90LkdST1VQKTtjb25zdCBuPXdpbmRvdy5nZXRDb21wdXRlZFN0eWxlKHQpLGk9cGFyc2VJbnQobi5sZWZ0LDEwKSxyPXBhcnNlSW50KG4udG9wLDEwKTtpZihpfHxyKXtjb25zdCB0PXRoaXMuY3JlYXRlVW5pcXVlSWQoImNsaXAiKTtlLnNldEF0dHJpYnV0ZSgidHJhbnNmb3JtIixgdHJhbnNsYXRlKCR7aX0sICR7cn0pYCksZS5zZXRBdHRyaWJ1dGUoImNsaXAtcGF0aCIsYHVybCgjJHt0fSlgKTtjb25zdCBvPXBhcnNlSW50KG4ud2lkdGgsMTApLGE9cGFyc2VJbnQobi5oZWlnaHQsMTApLHM9ZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgicmVjdCIpO3Muc2V0QXR0cmlidXRlKCJ3aWR0aCIsU3RyaW5nKG8pKSxzLnNldEF0dHJpYnV0ZSgiaGVpZ2h0IixTdHJpbmcoYSkpO2NvbnN0IGw9ZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKCJzdmciLCJjbGlwUGF0aCIpO2wuaWQ9dCxsLmFwcGVuZENoaWxkKHMpLGUuYXBwZW5kQ2hpbGQobCl9fXJldHVybiBBcnJheS5mcm9tKHQuY2hpbGROb2RlcykubWFwKCh0PT50aGlzLmNvbnZlcnQodCkpKS5maWx0ZXIoQm9vbGVhbikuZm9yRWFjaCgodD0+ZS5hcHBlbmRDaGlsZCh0KSkpLGUubm9kZU5hbWUudG9VcHBlckNhc2UoKT09UF90LkdST1VQJiYhZS5oYXNDaGlsZE5vZGVzKCl8fHRoaXMuc2hvdWxkT21pdE5vZGUodCk/bnVsbDp0aGlzLnN0cmlwQ2xhc3ModGhpcy50cmFuc2ZlclN0eWxlKHQsZSkpfXN0cmlwQ2xhc3ModCl7cmV0dXJuIHQubm9kZVR5cGU9PU5vZGUuRUxFTUVOVF9OT0RFJiZ0LnJlbW92ZUF0dHJpYnV0ZSgiY2xhc3MiKSx0fXRyYW5zZmVyU3R5bGUodCxlKXtpZihlLm5vZGVUeXBlIT1Ob2RlLkVMRU1FTlRfTk9ERSlyZXR1cm4gZTtjb25zdCBuPWUsaT1lLm5vZGVOYW1lLnRvVXBwZXJDYXNlKCkscj13aW5kb3cuZ2V0Q29tcHV0ZWRTdHlsZSh0KTtyZXR1cm4gaT09UF90LlRFWFQmJk9iamVjdC5hc3NpZ24obi5zdHlsZSx7Zm9udEZhbWlseTpyLmZvbnRGYW1pbHksZm9udFNpemU6ci5mb250U2l6ZSxmb250V2VpZ2h0OnIuZm9udFdlaWdodH0pLGkhPVBfdC5HUk9VUCYmKG4uc2V0QXR0cmlidXRlKCJmaWxsIixyLmZpbGwpLG4uc2V0QXR0cmlidXRlKCJzdHJva2UiLHIuc3Ryb2tlKSxuLnNldEF0dHJpYnV0ZSgic3Ryb2tlLXdpZHRoIixyLnN0cm9rZVdpZHRoKSksIjEiIT1yLm9wYWNpdHkmJm4uc2V0QXR0cmlidXRlKCJvcGFjaXR5IixyLm9wYWNpdHkpLGV9c2hvdWxkT21pdE5vZGUodCl7cmV0dXJuITF9fXtzaG91bGRPbWl0Tm9kZSh0KXtyZXR1cm4gdC5ub2RlVHlwZT09Tm9kZS5FTEVNRU5UX05PREUmJnQuY2xhc3NMaXN0LmNvbnRhaW5zKCJzY2F0dGVyLXBsb3QiKX19bmwoe21vZHVsZU5hbWU6InZ6LXBhbi16b29tLXN0eWxlIixzdHlsZUNvbnRlbnQ6IlxuICAgIC5oZWxwIHtcbiAgICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG4gICAgICBhbmltYXRpb24tZGVsYXk6IDFzO1xuICAgICAgYW5pbWF0aW9uLWR1cmF0aW9uOiAxcztcbiAgICAgIGFuaW1hdGlvbi1uYW1lOiBmYWRlLW91dDtcbiAgICAgIGJhY2tncm91bmQ6IHJnYmEoMzAsIDMwLCAzMCwgMC42KTtcbiAgICAgIGJvdHRvbTogMDtcbiAgICAgIGNvbG9yOiAjZmZmO1xuICAgICAgZGlzcGxheTogZmxleDtcbiAgICAgIGp1c3RpZnktY29udGVudDogY2VudGVyO1xuICAgICAgbGVmdDogMDtcbiAgICAgIG9wYWNpdHk6IDE7XG4gICAgICBwYWRkaW5nOiAyMHB4O1xuICAgICAgcG9pbnRlci1ldmVudHM6IG5vbmU7XG4gICAgICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gICAgICByaWdodDogMDtcbiAgICAgIHRvcDogMDtcbiAgICB9XG5cbiAgICAuaGVscCA+IHNwYW4ge1xuICAgICAgd2hpdGUtc3BhY2U6IG5vcm1hbDtcbiAgICB9XG5cbiAgICBAa2V5ZnJhbWVzIGZhZGUtb3V0IHtcbiAgICAgIDAlIHtcbiAgICAgICAgb3BhY2l0eTogMTtcbiAgICAgIH1cblxuICAgICAgMTAwJSB7XG4gICAgICAgIG9wYWNpdHk6IDA7XG4gICAgICB9XG4gICAgfVxuICAifSk7Y29uc3QgUl90PXFndCg0KSx6X3Q9dD0+aXNOYU4odCk/Ik5hTiI6Ul90KHQpLERfdD1be3RpdGxlOiJOYW1lIixldmFsdWF0ZTp0PT50LmRhdGFzZXQubWV0YWRhdGEoKS5uYW1lfSx7dGl0bGU6IlNtb290aGVkIixldmFsdWF0ZSh0LGUpe2NvbnN0e3Ntb290aGluZ0VuYWJsZWQ6bn09ZTtyZXR1cm4gel90KG4/dC5kYXR1bS5zbW9vdGhlZDp0LmRhdHVtLnNjYWxhcil9fSx7dGl0bGU6IlZhbHVlIixldmFsdWF0ZTp0PT56X3QodC5kYXR1bS5zY2FsYXIpfSx7dGl0bGU6IlN0ZXAiLGV2YWx1YXRlOnQ9PllndCh0LmRhdHVtLnN0ZXApfSx7dGl0bGU6IlRpbWUiLGV2YWx1YXRlOnQ9PiRndCh0LmRhdHVtLndhbGxfdGltZSl9LHt0aXRsZToiUmVsYXRpdmUiLGV2YWx1YXRlOnQ9PlpndChLZ3QodC5kYXR1bSwwLHQuZGF0YXNldCkpfV07bGV0IEJfdD1jbGFzcyBleHRlbmRzKHRyKHllKSl7Y29uc3RydWN0b3IoKXtzdXBlciguLi5hcmd1bWVudHMpLHRoaXMuY29sb3JTY2FsZT0obmV3IFVndC5TY2FsZXMuQ29sb3IpLnJhbmdlKFlBLnNsaWNlKDApKSx0aGlzLnNtb290aGluZ0VuYWJsZWQ9ITEsdGhpcy5zbW9vdGhpbmdXZWlnaHQ9LjYsdGhpcy54VHlwZT1udWxsLHRoaXMueENvbXBvbmVudHNDcmVhdGlvbk1ldGhvZD1udWxsLHRoaXMueVZhbHVlQWNjZXNzb3I9dD0+dC5zY2FsYXIsdGhpcy50b29sdGlwQ29sdW1ucz1EX3QsdGhpcy55U2NhbGVUeXBlPUxfdC5MSU5FQVIsdGhpcy5pZ25vcmVZT3V0bGllcnM9ITEsdGhpcy50b29sdGlwU29ydGluZ01ldGhvZD0iZGVmYXVsdCIsdGhpcy50b29sdGlwUG9zaXRpb249YV90LkJPVFRPTSx0aGlzLl92aXNpYmxlU2VyaWVzQ2FjaGU9W10sdGhpcy5fc2VyaWVzRGF0YUNhY2hlPXt9LHRoaXMuX3Nlcmllc01ldGFkYXRhQ2FjaGU9e30sdGhpcy5fbWFrZUNoYXJ0QXN5bmNDYWxsYmFja0lkPW51bGx9cmVhZHkoKXtzdXBlci5yZWFkeSgpLHRoaXMuc2NvcGVTdWJ0cmVlKHRoaXMuJC5jaGFydGRpdiwhMCl9YXR0YWNoZWQoKXtjb25zdCB0PXtjYXB0dXJlOiEwLHBhc3NpdmU6ITB9O3RoaXMuX2xpc3Rlbih0aGlzLCJtb3VzZWRvd24iLHRoaXMuX29uTW91c2VEb3duLmJpbmQodGhpcyksdCksdGhpcy5fbGlzdGVuKHRoaXMsIm1vdXNldXAiLHRoaXMuX29uTW91c2VVcC5iaW5kKHRoaXMpLHQpLHRoaXMuX2xpc3Rlbih3aW5kb3csImtleWRvd24iLHRoaXMuX29uS2V5RG93bi5iaW5kKHRoaXMpLHQpLHRoaXMuX2xpc3Rlbih3aW5kb3csImtleXVwIix0aGlzLl9vbktleVVwLmJpbmQodGhpcyksdCl9ZGV0YWNoZWQoKXt0aGlzLmNhbmNlbEFzeW5jKHRoaXMuX21ha2VDaGFydEFzeW5jQ2FsbGJhY2tJZCksdGhpcy5fY2hhcnQmJih0aGlzLl9jaGFydC5kZXN0cm95KCksdGhpcy5fY2hhcnQ9dm9pZCAwKSx0aGlzLl9saXN0ZW5lcnMmJih0aGlzLl9saXN0ZW5lcnMuZm9yRWFjaCgoKHtub2RlOnQsZXZlbnROYW1lOmUsZnVuYzpuLG9wdGlvbjppfSk9Pnt0LnJlbW92ZUV2ZW50TGlzdGVuZXIoZSxuLGkpfSkpLHRoaXMuX2xpc3RlbmVycy5jbGVhcigpKX1fbGlzdGVuKHQsZSxuLGk9e30pe3RoaXMuX2xpc3RlbmVyc3x8KHRoaXMuX2xpc3RlbmVycz1uZXcgU2V0KSx0aGlzLl9saXN0ZW5lcnMuYWRkKHtub2RlOnQsZXZlbnROYW1lOmUsZnVuYzpuLG9wdGlvbjppfSksdC5hZGRFdmVudExpc3RlbmVyKGUsbixpKX1fb25LZXlEb3duKHQpe3RoaXMudG9nZ2xlQ2xhc3MoInBhbmtleSIsSV90LmlzUGFuS2V5KHQpKX1fb25LZXlVcCh0KXt0aGlzLnRvZ2dsZUNsYXNzKCJwYW5rZXkiLElfdC5pc1BhbktleSh0KSl9X29uTW91c2VEb3duKHQpe3RoaXMudG9nZ2xlQ2xhc3MoIm1vdXNlZG93biIsITApfV9vbk1vdXNlVXAodCl7dGhpcy50b2dnbGVDbGFzcygibW91c2Vkb3duIiwhMSl9aXNEYXRhRml0VG9Eb21haW4oKXtyZXR1cm4hdGhpcy5fY2hhcnR8fHRoaXMuX2NoYXJ0LmlzRGF0YUZpdFRvRG9tYWluKCl9c2V0VmlzaWJsZVNlcmllcyh0KXt3ZS5pc0VxdWFsKHRoaXMuX3Zpc2libGVTZXJpZXNDYWNoZSx0KXx8KHRoaXMuX3Zpc2libGVTZXJpZXNDYWNoZT10KX1zZXRTZXJpZXNEYXRhKHQsZSl7dGhpcy5fc2VyaWVzRGF0YUNhY2hlW3RdPWUsdGhpcy5fY2hhcnQmJnRoaXMuX2NoYXJ0LnNldFNlcmllc0RhdGEodCxlKX1zZXRTZXJpZXNNZXRhZGF0YSh0LGUpe3RoaXMuX3Nlcmllc01ldGFkYXRhQ2FjaGVbdF09ZSx0aGlzLl9jaGFydCYmdGhpcy5fY2hhcnQuc2V0U2VyaWVzTWV0YWRhdGEodCxlKX1jb21taXRDaGFuZ2VzKCl7dGhpcy5fY2hhcnQmJnRoaXMuX2NoYXJ0LmNvbW1pdENoYW5nZXMoKX1yZXNldERvbWFpbigpe3RoaXMuX2NoYXJ0JiZ0aGlzLl9jaGFydC5yZXNldERvbWFpbigpfXJlZHJhdygpe3RoaXMuX2NoYXJ0JiZ0aGlzLl9jaGFydC5yZWRyYXcoKX1fbWFrZUNoYXJ0KCl7bnVsbCE9PXRoaXMuX21ha2VDaGFydEFzeW5jQ2FsbGJhY2tJZCYmKHRoaXMuY2FuY2VsQXN5bmModGhpcy5fbWFrZUNoYXJ0QXN5bmNDYWxsYmFja0lkKSx0aGlzLl9tYWtlQ2hhcnRBc3luY0NhbGxiYWNrSWQ9bnVsbCksdGhpcy5fbWFrZUNoYXJ0QXN5bmNDYWxsYmFja0lkPXRoaXMuYXN5bmMoKGZ1bmN0aW9uKCl7dGhpcy5fbWFrZUNoYXJ0QXN5bmNDYWxsYmFja0lkPW51bGw7bGV0IHQ9dGhpcy54Q29tcG9uZW50c0NyZWF0aW9uTWV0aG9kO2lmKHRoaXMueFR5cGV8fHQ/dGhpcy54VHlwZSYmKHQ9KCk9PkpndCh0aGlzLnhUeXBlKSk6dD1YZ3QsdCYmdGhpcy55VmFsdWVBY2Nlc3NvciYmdGhpcy50b29sdGlwQ29sdW1ucyl7dmFyIGU9bmV3IE5fdCh0LHRoaXMueVZhbHVlQWNjZXNzb3IsdGhpcy55U2NhbGVUeXBlLHRoaXMuY29sb3JTY2FsZSx0aGlzLiQudG9vbHRpcCx0aGlzLnRvb2x0aXBDb2x1bW5zLHRoaXMuZmlsbEFyZWEsdGhpcy5kZWZhdWx0WFJhbmdlLHRoaXMuZGVmYXVsdFlSYW5nZSx0aGlzLnN5bWJvbEZ1bmN0aW9uLHRoaXMueEF4aXNGb3JtYXR0ZXIpLG49U3UodGhpcy4kLmNoYXJ0ZGl2KTtlLnJlbmRlclRvKG4pLHRoaXMuX2NoYXJ0JiZ0aGlzLl9jaGFydC5kZXN0cm95KCksdGhpcy5fY2hhcnQ9ZSx0aGlzLl9jaGFydC5vbkFuY2hvcigoKCk9PnRoaXMuZmlyZSgiY2hhcnQtYXR0YWNoZWQiKSkpfX0pLDM1MCl9X3JlbG9hZEZyb21DYWNoZSgpe3RoaXMuX2NoYXJ0JiYodGhpcy5fdmlzaWJsZVNlcmllc0NhY2hlLmZvckVhY2goKHQ9Pnt0aGlzLl9jaGFydC5zZXRTZXJpZXNEYXRhKHQsdGhpcy5fc2VyaWVzRGF0YUNhY2hlW3RdfHxbXSl9KSksdGhpcy5fdmlzaWJsZVNlcmllc0NhY2hlLmZpbHRlcigodD0+dGhpcy5fc2VyaWVzTWV0YWRhdGFDYWNoZVt0XSkpLmZvckVhY2goKHQ9Pnt0aGlzLl9jaGFydC5zZXRTZXJpZXNNZXRhZGF0YSh0LHRoaXMuX3Nlcmllc01ldGFkYXRhQ2FjaGVbdF0pfSkpLHRoaXMuX2NoYXJ0LnNldFZpc2libGVTZXJpZXModGhpcy5fdmlzaWJsZVNlcmllc0NhY2hlKSx0aGlzLl9jaGFydC5jb21taXRDaGFuZ2VzKCkpfV9zbW9vdGhpbmdDaGFuZ2VkKCl7dGhpcy5fY2hhcnQmJih0aGlzLnNtb290aGluZ0VuYWJsZWQ/dGhpcy5fY2hhcnQuc21vb3RoaW5nVXBkYXRlKHRoaXMuc21vb3RoaW5nV2VpZ2h0KTp0aGlzLl9jaGFydC5zbW9vdGhpbmdEaXNhYmxlKCkpfV9vdXRsaWVyc0NoYW5nZWQoKXt0aGlzLl9jaGFydCYmdGhpcy5fY2hhcnQuaWdub3JlWU91dGxpZXJzKHRoaXMuaWdub3JlWU91dGxpZXJzKX1fY29sb3JTY2FsZUNoYW5nZWQoKXt0aGlzLl9jaGFydCYmKHRoaXMuX2NoYXJ0LnNldENvbG9yU2NhbGUodGhpcy5jb2xvclNjYWxlKSx0aGlzLl9jaGFydC5yZWRyYXcoKSl9X3Rvb2x0aXBDb2x1bW5zQ2hhbmdlZCgpe3RoaXMuX2NoYXJ0JiZ0aGlzLl9jaGFydC5zZXRUb29sdGlwQ29sdW1ucyh0aGlzLnRvb2x0aXBDb2x1bW5zKX1fdG9vbHRpcFNvcnRpbmdNZXRob2RDaGFuZ2VkKCl7dGhpcy5fY2hhcnQmJnRoaXMuX2NoYXJ0LnNldFRvb2x0aXBTb3J0aW5nTWV0aG9kKHRoaXMudG9vbHRpcFNvcnRpbmdNZXRob2QpfWdldEV4cG9ydGVyKCl7cmV0dXJuIG5ldyBPX3QodGhpcy4kLmNoYXJ0ZGl2KX19O0JfdC50ZW1wbGF0ZT1fZWAKICAgIDxkaXYgaWQ9ImNoYXJ0ZGl2Ij48L2Rpdj4KICAgIDx2ei1jaGFydC10b29sdGlwCiAgICAgIGlkPSJ0b29sdGlwIgogICAgICBwb3NpdGlvbj0iW1t0b29sdGlwUG9zaXRpb25dXSIKICAgICAgY29udGVudC1jb21wb25lbnQtbmFtZT0idnotbGluZS1jaGFydC10b29sdGlwIgogICAgPjwvdnotY2hhcnQtdG9vbHRpcD4KICAgIDxzdHlsZSBpbmNsdWRlPSJwbG90dGFibGUtc3R5bGUiPjwvc3R5bGU+CiAgICA8c3R5bGUgaW5jbHVkZT0idnotcGFuLXpvb20tc3R5bGUiPjwvc3R5bGU+CiAgICA8c3R5bGU+CiAgICAgIDpob3N0IHsKICAgICAgICAtbW96LXVzZXItc2VsZWN0OiBub25lOwogICAgICAgIC13ZWJraXQtdXNlci1zZWxlY3Q6IG5vbmU7CiAgICAgICAgZGlzcGxheTogZmxleDsKICAgICAgICBmbGV4LWRpcmVjdGlvbjogY29sdW1uOwogICAgICAgIGZsZXgtZ3JvdzogMTsKICAgICAgICBmbGV4LXNocmluazogMTsKICAgICAgICBvdXRsaW5lOiBub25lOwogICAgICAgIHBvc2l0aW9uOiByZWxhdGl2ZTsKICAgICAgICB3aGl0ZS1zcGFjZTogbm93cmFwOwogICAgICB9CiAgICAgIGRpdiB7CiAgICAgICAgLXdlYmtpdC11c2VyLXNlbGVjdDogbm9uZTsKICAgICAgICAtbW96LXVzZXItc2VsZWN0OiBub25lOwogICAgICAgIGZsZXgtZ3JvdzogMTsKICAgICAgICBmbGV4LXNocmluazogMTsKICAgICAgfQoKICAgICAgI2NoYXJ0ZGl2IC5tYWluIHsKICAgICAgICBjb250YWluOiBzdHJpY3Q7CiAgICAgICAgY3Vyc29yOiBjcm9zc2hhaXI7CiAgICAgIH0KCiAgICAgIDpob3N0KC5wYW5rZXkpICNjaGFydGRpdiA6bm90KC5kcmFnLXpvb21pbmcpIC5tYWluIHsKICAgICAgICBjdXJzb3I6IC13ZWJraXQtZ3JhYjsKICAgICAgICBjdXJzb3I6IGdyYWI7CiAgICAgIH0KCiAgICAgIDpob3N0KC5tb3VzZWRvd24pICNjaGFydGRpdiAucGFubmluZyAubWFpbiB7CiAgICAgICAgY3Vyc29yOiAtd2Via2l0LWdyYWJiaW5nOwogICAgICAgIGN1cnNvcjogZ3JhYmJpbmc7CiAgICAgIH0KCiAgICAgICNjaGFydGRpdiB7CiAgICAgICAgY29udGFpbjogc3RyaWN0OwogICAgICB9CgogICAgICAjY2hhcnRkaXYgbGluZS5ndWlkZS1saW5lIHsKICAgICAgICBzdHJva2U6ICM5OTk7CiAgICAgICAgc3Ryb2tlLXdpZHRoOiAxLjVweDsKICAgICAgfQogICAgICAjY2hhcnRkaXY6aG92ZXIgLm1haW4gewogICAgICAgIHdpbGwtY2hhbmdlOiB0cmFuc2Zvcm07CiAgICAgIH0KCiAgICAgIC5naG9zdCB7CiAgICAgICAgb3BhY2l0eTogMC4yOwogICAgICAgIHN0cm9rZS13aWR0aDogMXB4OwogICAgICB9CiAgICA8L3N0eWxlPgogIGAsdChbbyh7dHlwZTpPYmplY3R9KSxlKCJkZXNpZ246dHlwZSIsVWd0LlNjYWxlcy5Db2xvcildLEJfdC5wcm90b3R5cGUsImNvbG9yU2NhbGUiLHZvaWQgMCksdChbbyh7dHlwZTpPYmplY3R9KSxlKCJkZXNpZ246dHlwZSIsRnVuY3Rpb24pXSxCX3QucHJvdG90eXBlLCJzeW1ib2xGdW5jdGlvbiIsdm9pZCAwKSx0KFtvKHt0eXBlOkJvb2xlYW4sbm90aWZ5OiEwfSksZSgiZGVzaWduOnR5cGUiLEJvb2xlYW4pXSxCX3QucHJvdG90eXBlLCJzbW9vdGhpbmdFbmFibGVkIix2b2lkIDApLHQoW28oe3R5cGU6TnVtYmVyfSksZSgiZGVzaWduOnR5cGUiLE51bWJlcildLEJfdC5wcm90b3R5cGUsInNtb290aGluZ1dlaWdodCIsdm9pZCAwKSx0KFtvKHt0eXBlOlN0cmluZ30pLGUoImRlc2lnbjp0eXBlIixTdHJpbmcpXSxCX3QucHJvdG90eXBlLCJ4VHlwZSIsdm9pZCAwKSx0KFtvKHt0eXBlOk9iamVjdH0pLGUoImRlc2lnbjp0eXBlIixGdW5jdGlvbildLEJfdC5wcm90b3R5cGUsInhDb21wb25lbnRzQ3JlYXRpb25NZXRob2QiLHZvaWQgMCksdChbbyh7dHlwZTpPYmplY3R9KSxlKCJkZXNpZ246dHlwZSIsRnVuY3Rpb24pXSxCX3QucHJvdG90eXBlLCJ4QXhpc0Zvcm1hdHRlciIsdm9pZCAwKSx0KFtvKHt0eXBlOk9iamVjdH0pLGUoImRlc2lnbjp0eXBlIixGdW5jdGlvbildLEJfdC5wcm90b3R5cGUsInlWYWx1ZUFjY2Vzc29yIix2b2lkIDApLHQoW28oe3R5cGU6QXJyYXl9KSxlKCJkZXNpZ246dHlwZSIsQXJyYXkpXSxCX3QucHJvdG90eXBlLCJ0b29sdGlwQ29sdW1ucyIsdm9pZCAwKSx0KFtvKHt0eXBlOk9iamVjdH0pLGUoImRlc2lnbjp0eXBlIixPYmplY3QpXSxCX3QucHJvdG90eXBlLCJmaWxsQXJlYSIsdm9pZCAwKSx0KFtvKHt0eXBlOkFycmF5fSksZSgiZGVzaWduOnR5cGUiLEFycmF5KV0sQl90LnByb3RvdHlwZSwiZGVmYXVsdFhSYW5nZSIsdm9pZCAwKSx0KFtvKHt0eXBlOkFycmF5fSksZSgiZGVzaWduOnR5cGUiLEFycmF5KV0sQl90LnByb3RvdHlwZSwiZGVmYXVsdFlSYW5nZSIsdm9pZCAwKSx0KFtvKHt0eXBlOlN0cmluZ30pLGUoImRlc2lnbjp0eXBlIixTdHJpbmcpXSxCX3QucHJvdG90eXBlLCJ5U2NhbGVUeXBlIix2b2lkIDApLHQoW28oe3R5cGU6Qm9vbGVhbn0pLGUoImRlc2lnbjp0eXBlIixCb29sZWFuKV0sQl90LnByb3RvdHlwZSwiaWdub3JlWU91dGxpZXJzIix2b2lkIDApLHQoW28oe3R5cGU6U3RyaW5nfSksZSgiZGVzaWduOnR5cGUiLFN0cmluZyldLEJfdC5wcm90b3R5cGUsInRvb2x0aXBTb3J0aW5nTWV0aG9kIix2b2lkIDApLHQoW28oe3R5cGU6U3RyaW5nfSksZSgiZGVzaWduOnR5cGUiLFN0cmluZyldLEJfdC5wcm90b3R5cGUsInRvb2x0aXBQb3NpdGlvbiIsdm9pZCAwKSx0KFtvKHt0eXBlOk9iamVjdH0pLGUoImRlc2lnbjp0eXBlIixPYmplY3QpXSxCX3QucHJvdG90eXBlLCJfY2hhcnQiLHZvaWQgMCksdChbbyh7dHlwZTpBcnJheX0pLGUoImRlc2lnbjp0eXBlIixBcnJheSldLEJfdC5wcm90b3R5cGUsIl92aXNpYmxlU2VyaWVzQ2FjaGUiLHZvaWQgMCksdChbbyh7dHlwZTpPYmplY3R9KSxlKCJkZXNpZ246dHlwZSIsT2JqZWN0KV0sQl90LnByb3RvdHlwZSwiX3Nlcmllc0RhdGFDYWNoZSIsdm9pZCAwKSx0KFtvKHt0eXBlOk9iamVjdH0pLGUoImRlc2lnbjp0eXBlIixPYmplY3QpXSxCX3QucHJvdG90eXBlLCJfc2VyaWVzTWV0YWRhdGFDYWNoZSIsdm9pZCAwKSx0KFtvKHt0eXBlOk51bWJlcn0pLGUoImRlc2lnbjp0eXBlIixOdW1iZXIpXSxCX3QucHJvdG90eXBlLCJfbWFrZUNoYXJ0QXN5bmNDYWxsYmFja0lkIix2b2lkIDApLHQoW2EoInhDb21wb25lbnRzQ3JlYXRpb25NZXRob2QiLCJ4VHlwZSIsInlWYWx1ZUFjY2Vzc29yIiwieVNjYWxlVHlwZSIsImlzQXR0YWNoZWQiKSxlKCJkZXNpZ246dHlwZSIsRnVuY3Rpb24pLGUoImRlc2lnbjpwYXJhbXR5cGVzIixbXSksZSgiZGVzaWduOnJldHVybnR5cGUiLHZvaWQgMCldLEJfdC5wcm90b3R5cGUsIl9tYWtlQ2hhcnQiLG51bGwpLHQoW2EoIl9jaGFydCIsIl92aXNpYmxlU2VyaWVzQ2FjaGUiKSxlKCJkZXNpZ246dHlwZSIsRnVuY3Rpb24pLGUoImRlc2lnbjpwYXJhbXR5cGVzIixbXSksZSgiZGVzaWduOnJldHVybnR5cGUiLHZvaWQgMCldLEJfdC5wcm90b3R5cGUsIl9yZWxvYWRGcm9tQ2FjaGUiLG51bGwpLHQoW2EoInNtb290aGluZ0VuYWJsZWQiLCJzbW9vdGhpbmdXZWlnaHQiLCJfY2hhcnQiKSxlKCJkZXNpZ246dHlwZSIsRnVuY3Rpb24pLGUoImRlc2lnbjpwYXJhbXR5cGVzIixbXSksZSgiZGVzaWduOnJldHVybnR5cGUiLHZvaWQgMCldLEJfdC5wcm90b3R5cGUsIl9zbW9vdGhpbmdDaGFuZ2VkIixudWxsKSx0KFthKCJpZ25vcmVZT3V0bGllcnMiLCJfY2hhcnQiKSxlKCJkZXNpZ246dHlwZSIsRnVuY3Rpb24pLGUoImRlc2lnbjpwYXJhbXR5cGVzIixbXSksZSgiZGVzaWduOnJldHVybnR5cGUiLHZvaWQgMCldLEJfdC5wcm90b3R5cGUsIl9vdXRsaWVyc0NoYW5nZWQiLG51bGwpLHQoW2EoImNvbG9yU2NhbGUiKSxlKCJkZXNpZ246dHlwZSIsRnVuY3Rpb24pLGUoImRlc2lnbjpwYXJhbXR5cGVzIixbXSksZSgiZGVzaWduOnJldHVybnR5cGUiLHZvaWQgMCldLEJfdC5wcm90b3R5cGUsIl9jb2xvclNjYWxlQ2hhbmdlZCIsbnVsbCksdChbYSgidG9vbHRpcENvbHVtbnMiKSxlKCJkZXNpZ246dHlwZSIsRnVuY3Rpb24pLGUoImRlc2lnbjpwYXJhbXR5cGVzIixbXSksZSgiZGVzaWduOnJldHVybnR5cGUiLHZvaWQgMCldLEJfdC5wcm90b3R5cGUsIl90b29sdGlwQ29sdW1uc0NoYW5nZWQiLG51bGwpLHQoW2EoInRvb2x0aXBTb3J0aW5nTWV0aG9kIiwiX2NoYXJ0IiksZSgiZGVzaWduOnR5cGUiLEZ1bmN0aW9uKSxlKCJkZXNpZ246cGFyYW10eXBlcyIsW10pLGUoImRlc2lnbjpyZXR1cm50eXBlIix2b2lkIDApXSxCX3QucHJvdG90eXBlLCJfdG9vbHRpcFNvcnRpbmdNZXRob2RDaGFuZ2VkIixudWxsKSxCX3Q9dChbaSgidnotbGluZS1jaGFydDIiKV0sQl90KTtsZXQgSF90PWNsYXNzIGV4dGVuZHMgeWV7fTtIX3QudGVtcGxhdGU9X2VgCiAgICA8ZGl2IGNsYXNzPSJjb250ZW50Ij4KICAgICAgPHRhYmxlPgogICAgICAgIDx0aGVhZD48L3RoZWFkPgogICAgICAgIDx0Ym9keT48L3Rib2R5PgogICAgICA8L3RhYmxlPgogICAgPC9kaXY+CiAgICA8c3R5bGU+CiAgICAgIDpob3N0IHsKICAgICAgICBwb2ludGVyLWV2ZW50czogbm9uZTsKICAgICAgfQoKICAgICAgLmNvbnRlbnQgewogICAgICAgIGJhY2tncm91bmQ6IHJnYmEoMCwgMCwgMCwgMC44KTsKICAgICAgICBib3JkZXItcmFkaXVzOiA0cHg7CiAgICAgICAgY29sb3I6ICNmZmY7CiAgICAgICAgb3ZlcmZsb3c6IGhpZGRlbjsKICAgICAgICBwb2ludGVyLWV2ZW50czogbm9uZTsKICAgICAgfQoKICAgICAgdGFibGUgewogICAgICAgIGZvbnQtc2l6ZTogMTNweDsKICAgICAgICBsaW5lLWhlaWdodDogMS40ZW07CiAgICAgICAgbWFyZ2luLXRvcDogMTBweDsKICAgICAgICBwYWRkaW5nOiA4cHg7CiAgICAgIH0KCiAgICAgIHRoZWFkIHsKICAgICAgICBmb250LXNpemU6IDE0cHg7CiAgICAgIH0KCiAgICAgIHRib2R5IHsKICAgICAgICBmb250LXNpemU6IDEzcHg7CiAgICAgICAgbGluZS1oZWlnaHQ6IDIxcHg7CiAgICAgICAgd2hpdGUtc3BhY2U6IG5vd3JhcDsKICAgICAgfQoKICAgICAgdGQgewogICAgICAgIHBhZGRpbmc6IDAgNXB4OwogICAgICB9CgogICAgICAuc3dhdGNoIHsKICAgICAgICBib3JkZXItcmFkaXVzOiA1MCU7CiAgICAgICAgZGlzcGxheTogYmxvY2s7CiAgICAgICAgaGVpZ2h0OiAxOHB4OwogICAgICAgIHdpZHRoOiAxOHB4OwogICAgICB9CgogICAgICAuY2xvc2VzdCAuc3dhdGNoIHsKICAgICAgICBib3gtc2hhZG93OiBpbnNldCAwIDAgMCAycHggI2ZmZjsKICAgICAgfQoKICAgICAgdGggewogICAgICAgIHBhZGRpbmc6IDAgNXB4OwogICAgICAgIHRleHQtYWxpZ246IGxlZnQ7CiAgICAgIH0KCiAgICAgIC5kaXN0YW50IHRkOm5vdCguc3dhdGNoKSB7CiAgICAgICAgb3BhY2l0eTogMC44OwogICAgICB9CgogICAgICAuZ2hvc3QgewogICAgICAgIG9wYWNpdHk6IDAuMjsKICAgICAgICBzdHJva2Utd2lkdGg6IDFweDsKICAgICAgfQogICAgPC9zdHlsZT4KICBgLEhfdD10KFtpKCJ2ei1saW5lLWNoYXJ0LXRvb2x0aXAiKV0sSF90KTtjb25zdCBGX3Q9W10sVl90PXdlLnRocm90dGxlKChmdW5jdGlvbiB0KCl7aWYoMD09Rl90Lmxlbmd0aClyZXR1cm47Y29uc3QgZT1GX3Quc2hpZnQoKTtlJiZlLmFjdGl2ZSYmKGUucmVkcmF3KCksZS5fbWF5YmVSZW5kZXJlZEluQmFkU3RhdGU9ITEpLHdpbmRvdy5jYW5jZWxBbmltYXRpb25GcmFtZSgwKSx3aW5kb3cucmVxdWVzdEFuaW1hdGlvbkZyYW1lKHQpfSksMTAwKTtsZXQgal90PWNsYXNzIGV4dGVuZHModF90KHRyKHllKSkpe2NvbnN0cnVjdG9yKCl7c3VwZXIoLi4uYXJndW1lbnRzKSx0aGlzLl9yZWRyYXdSYWY9bnVsbCx0aGlzLmFjdGl2ZT0hMSx0aGlzLmxvZ1NjYWxlQWN0aXZlPSExLHRoaXMuY29sb3JTY2FsZT17c2NhbGU6eE99LHRoaXMuX3Jlc2V0RG9tYWluT25OZXh0TG9hZD0hMCx0aGlzLl9tYXliZVJlbmRlcmVkSW5CYWRTdGF0ZT0hMX1vbkxvYWRGaW5pc2goKXt0aGlzLmNvbW1pdENoYW5nZXMoKSx0aGlzLmRhdGFUb0xvYWQubGVuZ3RoPjAmJnRoaXMuX3Jlc2V0RG9tYWluT25OZXh0TG9hZCYmKHRoaXMuX3Jlc2V0RG9tYWluT25OZXh0TG9hZD0hMSx0aGlzLmdldENoYXJ0KCkucmVzZXREb21haW4oKSksdGhpcy5yZWRyYXcoKX1kaXNjb25uZWN0ZWRDYWxsYmFjaygpe3N1cGVyLmRpc2Nvbm5lY3RlZENhbGxiYWNrKCksbnVsbCE9PXRoaXMuX3JlZHJhd1JhZiYmY2FuY2VsQW5pbWF0aW9uRnJhbWUodGhpcy5fcmVkcmF3UmFmKX1leHBvcnRBc1N2Z1N0cmluZygpe3JldHVybiB0aGlzLmdldENoYXJ0KCkuZ2V0RXhwb3J0ZXIoKS5leHBvcnRBc1N0cmluZygpfWdldENoYXJ0KCl7cmV0dXJuIHRoaXMuJC5jaGFydH1yZXNldERvbWFpbigpe3RoaXMuZ2V0Q2hhcnQoKS5yZXNldERvbWFpbigpfXNldFNlcmllc0RhdGEodCxlKXt0aGlzLmdldENoYXJ0KCkuc2V0U2VyaWVzRGF0YSh0LGUpfXNldFNlcmllc01ldGFkYXRhKHQsZSl7dGhpcy5nZXRDaGFydCgpLnNldFNlcmllc01ldGFkYXRhKHQsZSl9Y29tbWl0Q2hhbmdlcygpe3RoaXMuZ2V0Q2hhcnQoKS5jb21taXRDaGFuZ2VzKCl9cmVkcmF3KCl7bnVsbCE9PXRoaXMuX3JlZHJhd1JhZiYmY2FuY2VsQW5pbWF0aW9uRnJhbWUodGhpcy5fcmVkcmF3UmFmKSx0aGlzLl9yZWRyYXdSYWY9d2luZG93LnJlcXVlc3RBbmltYXRpb25GcmFtZSgoKCk9Pnt0aGlzLmFjdGl2ZT90aGlzLmdldENoYXJ0KCkucmVkcmF3KCk6dGhpcy5fbWF5YmVSZW5kZXJlZEluQmFkU3RhdGU9ITB9KSl9X2xvYWRLZXlDaGFuZ2VkKCl7dGhpcy5yZXNldCgpLHRoaXMuX3Jlc2V0RG9tYWluT25OZXh0TG9hZD0hMH1fZGF0YVNlcmllc0NoYW5nZWQoKXt0aGlzLmdldENoYXJ0KCkuc2V0VmlzaWJsZVNlcmllcyh0aGlzLmRhdGFTZXJpZXMpfV9sb2dTY2FsZUNoYW5nZWQodCl7dGhpcy5nZXRDaGFydCgpLnlTY2FsZVR5cGU9dD9MX3QuTE9HOkxfdC5MSU5FQVIsdGhpcy5yZWRyYXcoKX1fZml4QmFkU3RhdGVXaGVuQWN0aXZlKCl7dGhpcy5hY3RpdmUmJnRoaXMuX21heWJlUmVuZGVyZWRJbkJhZFN0YXRlJiYoRl90LnB1c2godGhpcyksVl90KCkpfV9vbkNoYXJ0QXR0YWNoZWQoKXt0aGlzLmFjdGl2ZXx8KHRoaXMuX21heWJlUmVuZGVyZWRJbkJhZFN0YXRlPSEwKX19O2pfdC50ZW1wbGF0ZT1fZWAKICAgIDxkaXYgaWQ9ImNoYXJ0LWFuZC1zcGlubmVyLWNvbnRhaW5lciI+CiAgICAgIDx2ei1saW5lLWNoYXJ0MgogICAgICAgIGlkPSJjaGFydCIKICAgICAgICBkYXRhLWxvYWRpbmckPSJbW2RhdGFMb2FkaW5nXV0iCiAgICAgICAgY29sb3Itc2NhbGU9IltbY29sb3JTY2FsZV1dIgogICAgICAgIGRlZmF1bHQteC1yYW5nZT0iW1tkZWZhdWx0WFJhbmdlXV0iCiAgICAgICAgZGVmYXVsdC15LXJhbmdlPSJbW2RlZmF1bHRZUmFuZ2VdXSIKICAgICAgICBmaWxsLWFyZWE9IltbZmlsbEFyZWFdXSIKICAgICAgICBpZ25vcmUteS1vdXRsaWVycz0iW1tpZ25vcmVZT3V0bGllcnNdXSIKICAgICAgICBvbi1jaGFydC1hdHRhY2hlZD0iX29uQ2hhcnRBdHRhY2hlZCIKICAgICAgICBzbW9vdGhpbmctZW5hYmxlZD0iW1tzbW9vdGhpbmdFbmFibGVkXV0iCiAgICAgICAgc21vb3RoaW5nLXdlaWdodD0iW1tzbW9vdGhpbmdXZWlnaHRdXSIKICAgICAgICBzeW1ib2wtZnVuY3Rpb249Iltbc3ltYm9sRnVuY3Rpb25dXSIKICAgICAgICB0b29sdGlwLWNvbHVtbnM9IltbdG9vbHRpcENvbHVtbnNdXSIKICAgICAgICB0b29sdGlwLXBvc2l0aW9uPSJbW3Rvb2x0aXBQb3NpdGlvbl1dIgogICAgICAgIHRvb2x0aXAtc29ydGluZy1tZXRob2Q9IltbdG9vbHRpcFNvcnRpbmdNZXRob2RdXSIKICAgICAgICB4LWNvbXBvbmVudHMtY3JlYXRpb24tbWV0aG9kPSJbW3hDb21wb25lbnRzQ3JlYXRpb25NZXRob2RdXSIKICAgICAgICB4LXR5cGU9IltbeFR5cGVdXSIKICAgICAgICB5LXZhbHVlLWFjY2Vzc29yPSJbW3lWYWx1ZUFjY2Vzc29yXV0iCiAgICAgID48L3Z6LWxpbmUtY2hhcnQyPgogICAgICA8dGVtcGxhdGUgaXM9ImRvbS1pZiIgaWY9IltbZGF0YUxvYWRpbmddXSI+CiAgICAgICAgPGRpdiBpZD0ibG9hZGluZy1zcGlubmVyLWNvbnRhaW5lciI+CiAgICAgICAgICA8cGFwZXItc3Bpbm5lci1saXRlIGFjdGl2ZT0iIj48L3BhcGVyLXNwaW5uZXItbGl0ZT4KICAgICAgICA8L2Rpdj4KICAgICAgPC90ZW1wbGF0ZT4KICAgIDwvZGl2PgogICAgPHN0eWxlPgogICAgICA6aG9zdCB7CiAgICAgICAgaGVpZ2h0OiAxMDAlOwogICAgICAgIHdpZHRoOiAxMDAlOwogICAgICAgIGRpc3BsYXk6IGZsZXg7CiAgICAgICAgZmxleC1kaXJlY3Rpb246IGNvbHVtbjsKICAgICAgfQoKICAgICAgOmhvc3QoW19tYXliZS1yZW5kZXJlZC1pbi1iYWQtc3RhdGVdKSB2ei1saW5lLWNoYXJ0IHsKICAgICAgICB2aXNpYmlsaXR5OiBoaWRkZW47CiAgICAgIH0KCiAgICAgICNjaGFydC1hbmQtc3Bpbm5lci1jb250YWluZXIgewogICAgICAgIGRpc3BsYXk6IGZsZXg7CiAgICAgICAgZmxleC1ncm93OiAxOwogICAgICAgIHBvc2l0aW9uOiByZWxhdGl2ZTsKICAgICAgfQoKICAgICAgI2xvYWRpbmctc3Bpbm5lci1jb250YWluZXIgewogICAgICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7CiAgICAgICAgYm90dG9tOiAwOwogICAgICAgIGRpc3BsYXk6IGZsZXg7CiAgICAgICAgZGlzcGxheTogZmxleDsKICAgICAgICBqdXN0aWZ5LWNvbnRlbnQ6IGNlbnRlcjsKICAgICAgICBsZWZ0OiAwOwogICAgICAgIHBvaW50ZXItZXZlbnRzOiBub25lOwogICAgICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTsKICAgICAgICByaWdodDogMDsKICAgICAgICB0b3A6IDA7CiAgICAgIH0KCiAgICAgIHZ6LWxpbmUtY2hhcnQyIHsKICAgICAgICAtd2Via2l0LXVzZXItc2VsZWN0OiBub25lOwogICAgICAgIC1tb3otdXNlci1zZWxlY3Q6IG5vbmU7CiAgICAgIH0KCiAgICAgIHZ6LWxpbmUtY2hhcnQyW2RhdGEtbG9hZGluZ10gewogICAgICAgIG9wYWNpdHk6IDAuMzsKICAgICAgfQogICAgPC9zdHlsZT4KICBgLHQoW28oe3R5cGU6Qm9vbGVhbixvYnNlcnZlcjoiX2ZpeEJhZFN0YXRlV2hlbkFjdGl2ZSJ9KSxlKCJkZXNpZ246dHlwZSIsQm9vbGVhbildLGpfdC5wcm90b3R5cGUsImFjdGl2ZSIsdm9pZCAwKSx0KFtvKHt0eXBlOkFycmF5fSksZSgiZGVzaWduOnR5cGUiLEFycmF5KV0sal90LnByb3RvdHlwZSwiZGF0YVNlcmllcyIsdm9pZCAwKSx0KFtvKHt0eXBlOk9iamVjdH0pLGUoImRlc2lnbjp0eXBlIixocildLGpfdC5wcm90b3R5cGUsInJlcXVlc3RNYW5hZ2VyIix2b2lkIDApLHQoW28oe3R5cGU6Qm9vbGVhbixvYnNlcnZlcjoiX2xvZ1NjYWxlQ2hhbmdlZCJ9KSxlKCJkZXNpZ246dHlwZSIsQm9vbGVhbildLGpfdC5wcm90b3R5cGUsImxvZ1NjYWxlQWN0aXZlIix2b2lkIDApLHQoW28oe3R5cGU6T2JqZWN0fSksZSgiZGVzaWduOnR5cGUiLE9iamVjdCldLGpfdC5wcm90b3R5cGUsInhDb21wb25lbnRzQ3JlYXRpb25NZXRob2QiLHZvaWQgMCksdChbbyh7dHlwZTpTdHJpbmd9KSxlKCJkZXNpZ246dHlwZSIsU3RyaW5nKV0sal90LnByb3RvdHlwZSwieFR5cGUiLHZvaWQgMCksdChbbyh7dHlwZTpPYmplY3R9KSxlKCJkZXNpZ246dHlwZSIsRnVuY3Rpb24pXSxqX3QucHJvdG90eXBlLCJ5VmFsdWVBY2Nlc3NvciIsdm9pZCAwKSx0KFtvKHt0eXBlOk9iamVjdH0pLGUoImRlc2lnbjp0eXBlIixPYmplY3QpXSxqX3QucHJvdG90eXBlLCJmaWxsQXJlYSIsdm9pZCAwKSx0KFtvKHt0eXBlOkJvb2xlYW59KSxlKCJkZXNpZ246dHlwZSIsQm9vbGVhbildLGpfdC5wcm90b3R5cGUsInNtb290aGluZ0VuYWJsZWQiLHZvaWQgMCksdChbbyh7dHlwZTpOdW1iZXJ9KSxlKCJkZXNpZ246dHlwZSIsTnVtYmVyKV0sal90LnByb3RvdHlwZSwic21vb3RoaW5nV2VpZ2h0Iix2b2lkIDApLHQoW28oe3R5cGU6QXJyYXl9KSxlKCJkZXNpZ246dHlwZSIsQXJyYXkpXSxqX3QucHJvdG90eXBlLCJ0b29sdGlwQ29sdW1ucyIsdm9pZCAwKSx0KFtvKHt0eXBlOlN0cmluZ30pLGUoImRlc2lnbjp0eXBlIixPYmplY3QpXSxqX3QucHJvdG90eXBlLCJ0b29sdGlwU29ydGluZ01ldGhvZCIsdm9pZCAwKSx0KFtvKHt0eXBlOlN0cmluZ30pLGUoImRlc2lnbjp0eXBlIixTdHJpbmcpXSxqX3QucHJvdG90eXBlLCJ0b29sdGlwUG9zaXRpb24iLHZvaWQgMCksdChbbyh7dHlwZTpCb29sZWFufSksZSgiZGVzaWduOnR5cGUiLEJvb2xlYW4pXSxqX3QucHJvdG90eXBlLCJpZ25vcmVZT3V0bGllcnMiLHZvaWQgMCksdChbbyh7dHlwZTpBcnJheX0pLGUoImRlc2lnbjp0eXBlIixBcnJheSldLGpfdC5wcm90b3R5cGUsImRlZmF1bHRYUmFuZ2UiLHZvaWQgMCksdChbbyh7dHlwZTpBcnJheX0pLGUoImRlc2lnbjp0eXBlIixBcnJheSldLGpfdC5wcm90b3R5cGUsImRlZmF1bHRZUmFuZ2UiLHZvaWQgMCksdChbbyh7dHlwZTpPYmplY3R9KSxlKCJkZXNpZ246dHlwZSIsRnVuY3Rpb24pXSxqX3QucHJvdG90eXBlLCJzeW1ib2xGdW5jdGlvbiIsdm9pZCAwKSx0KFtvKHt0eXBlOk9iamVjdH0pLGUoImRlc2lnbjp0eXBlIixPYmplY3QpXSxqX3QucHJvdG90eXBlLCJjb2xvclNjYWxlIix2b2lkIDApLHQoW28oe3R5cGU6Qm9vbGVhbn0pLGUoImRlc2lnbjp0eXBlIixCb29sZWFuKV0sal90LnByb3RvdHlwZSwiX3Jlc2V0RG9tYWluT25OZXh0TG9hZCIsdm9pZCAwKSx0KFtvKHt0eXBlOkJvb2xlYW4scmVmbGVjdFRvQXR0cmlidXRlOiEwfSksZSgiZGVzaWduOnR5cGUiLEJvb2xlYW4pXSxqX3QucHJvdG90eXBlLCJfbWF5YmVSZW5kZXJlZEluQmFkU3RhdGUiLHZvaWQgMCksdChbYSgibG9hZEtleSIpLGUoImRlc2lnbjp0eXBlIixGdW5jdGlvbiksZSgiZGVzaWduOnBhcmFtdHlwZXMiLFtdKSxlKCJkZXNpZ246cmV0dXJudHlwZSIsdm9pZCAwKV0sal90LnByb3RvdHlwZSwiX2xvYWRLZXlDaGFuZ2VkIixudWxsKSx0KFthKCJkYXRhU2VyaWVzLioiKSxlKCJkZXNpZ246dHlwZSIsRnVuY3Rpb24pLGUoImRlc2lnbjpwYXJhbXR5cGVzIixbXSksZSgiZGVzaWduOnJldHVybnR5cGUiLHZvaWQgMCldLGpfdC5wcm90b3R5cGUsIl9kYXRhU2VyaWVzQ2hhbmdlZCIsbnVsbCksal90PXQoW2koInRmLWxpbmUtY2hhcnQtZGF0YS1sb2FkZXIiKV0sal90KSxubCh7bW9kdWxlTmFtZToidGYtY3VzdG9tLXNjYWxhci1jYXJkLXN0eWxlIixzdHlsZUNvbnRlbnQ6IlxuICAgIDpob3N0IHtcbiAgICAgIG1hcmdpbjogNXB4IDEwcHg7XG4gICAgICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7XG4gICAgICB3aWR0aDogMzMwcHg7XG4gICAgICB2ZXJ0aWNhbC1hbGlnbjogdGV4dC10b3A7XG4gICAgfVxuXG4gICAgOmhvc3QoW19leHBhbmRlZF0pIHtcbiAgICAgIHdpZHRoOiAxMDAlO1xuICAgIH1cblxuICAgIDpob3N0KFtfZXhwYW5kZWRdKSAjdGYtbGluZS1jaGFydC1kYXRhLWxvYWRlci1jb250YWluZXIge1xuICAgICAgaGVpZ2h0OiA0MDBweDtcbiAgICB9XG5cbiAgICBoMSB7XG4gICAgICBmb250LXNpemU6IDE5cHg7XG4gICAgICBmb250LXdlaWdodDogbm9ybWFsO1xuICAgIH1cblxuICAgICN0Zi1saW5lLWNoYXJ0LWRhdGEtbG9hZGVyLWNvbnRhaW5lciB7XG4gICAgICBoZWlnaHQ6IDIwMHB4O1xuICAgICAgd2lkdGg6IDEwMCU7XG4gICAgfVxuXG4gICAgI2J1dHRvbnMge1xuICAgICAgZGlzcGxheTogZmxleDtcbiAgICAgIGZsZXgtZGlyZWN0aW9uOiByb3c7XG4gICAgfVxuXG4gICAgcGFwZXItaWNvbi1idXR0b24ge1xuICAgICAgY29sb3I6ICMyMTk2ZjM7XG4gICAgICBib3JkZXItcmFkaXVzOiAxMDAlO1xuICAgICAgd2lkdGg6IDMycHg7XG4gICAgICBoZWlnaHQ6IDMycHg7XG4gICAgICBwYWRkaW5nOiA0cHg7XG4gICAgfVxuXG4gICAgcGFwZXItaWNvbi1idXR0b25bc2VsZWN0ZWRdIHtcbiAgICAgIGJhY2tncm91bmQ6IHZhcigtLXRiLXVpLWxpZ2h0LWFjY2VudCk7XG4gICAgfVxuXG4gICAgLmRvd25sb2FkLWxpbmtzIHtcbiAgICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgICBoZWlnaHQ6IDMycHg7XG4gICAgfVxuXG4gICAgLmRvd25sb2FkLWxpbmtzIGEge1xuICAgICAgZm9udC1zaXplOiAxMHB4O1xuICAgICAgYWxpZ24tc2VsZjogY2VudGVyO1xuICAgICAgbWFyZ2luOiAycHg7XG4gICAgfVxuXG4gICAgLmRvd25sb2FkLWxpbmtzIHBhcGVyLWRyb3Bkb3duLW1lbnUge1xuICAgICAgd2lkdGg6IDEwMHB4O1xuICAgICAgLS1wYXBlci1pbnB1dC1jb250YWluZXItbGFiZWw6IHtcbiAgICAgICAgZm9udC1zaXplOiAxMHB4O1xuICAgICAgfVxuICAgICAgLS1wYXBlci1pbnB1dC1jb250YWluZXItaW5wdXQ6IHtcbiAgICAgICAgZm9udC1zaXplOiAxMHB4O1xuICAgICAgfVxuICAgIH1cbiAgIn0pO2NsYXNzIFVfdHtjb25zdHJ1Y3Rvcih0LGUsbixpLHIpe3RoaXMucnVuPXQsdGhpcy50YWc9ZSx0aGlzLm5hbWU9bix0aGlzLnNjYWxhckRhdGE9aSx0aGlzLnN5bWJvbD1yfWdldE5hbWUoKXtyZXR1cm4gdGhpcy5uYW1lfXNldERhdGEodCl7dGhpcy5zY2FsYXJEYXRhPXR9Z2V0RGF0YSgpe3JldHVybiB0aGlzLnNjYWxhckRhdGF9Z2V0UnVuKCl7cmV0dXJuIHRoaXMucnVufWdldFRhZygpe3JldHVybiB0aGlzLnRhZ31nZXRTeW1ib2woKXtyZXR1cm4gdGhpcy5zeW1ib2x9fWZ1bmN0aW9uIEdfdCh0LGUpe3JldHVybmAke2V9ICgke3R9KWB9Y2xhc3MgV190e2NvbnN0cnVjdG9yKHQpe3RoaXMucnVuQmFzZWRDb2xvclNjYWxlPXR9c2NhbGUodCl7cmV0dXJuIHRoaXMucnVuQmFzZWRDb2xvclNjYWxlLnNjYWxlKHRoaXMucGFyc2VSdW5OYW1lKHQpKX1wYXJzZVJ1bk5hbWUodCl7Y29uc3QgZT10Lm1hdGNoKC9cKCguKilcKSQvKTtyZXR1cm4gZT9lWzFdOiIifX1sZXQgcV90PWNsYXNzIGV4dGVuZHModHIoeWUpKXtjb25zdHJ1Y3Rvcigpe3N1cGVyKC4uLmFyZ3VtZW50cyksdGhpcy5hY3RpdmU9ITAsdGhpcy5fY29sb3JTY2FsZT1uZXcgV190KHtzY2FsZTp4T30pLHRoaXMuX25hbWVUb0RhdGFTZXJpZXM9e30sdGhpcy5fZXhwYW5kZWQ9ITEsdGhpcy5fcmVxdWVzdERhdGE9KHQsZSxuKT0+e2NvbnN0IGk9Z3IoKS5wbHVnaW5Sb3V0ZSgiY3VzdG9tX3NjYWxhcnMiLCIvc2NhbGFycyIpO1Byb21pc2UuYWxsKHQubWFwKCh0PT57Y29uc3Qgbj1PTyhpLHt0YWc6dGhpcy5fdGFnRmlsdGVyLHJ1bjp0fSk7cmV0dXJuIHRoaXMucmVxdWVzdE1hbmFnZXIucmVxdWVzdChuKS50aGVuKChuPT57ZSh7aXRlbTp0LGRhdGE6bn0pfSkpfSkpKS5maW5hbGx5KCgoKT0+e24oKX0pKX0sdGhpcy5fcnVuVG9OZXh0QXZhaWxhYmxlU3ltYm9sSW5kZXg9e30sdGhpcy5fbWF0Y2hlc0xpc3RPcGVuZWQ9ITEsdGhpcy5fZmlsbEFyZWE9e2xvd2VyQWNjZXNzb3I6dD0+dC5sb3dlcixoaWdoZXJBY2Nlc3Nvcjp0PT50LnVwcGVyfSx0aGlzLl90b29sdGlwQ29sdW1ucz0oKCk9Pntjb25zdCB0PXFndCg0KSxlPWU9PmlzTmFOKGUpPyJOYU4iOnQoZSk7cmV0dXJuW3t0aXRsZToiTmFtZSIsZXZhbHVhdGU6dD0+dC5kYXRhc2V0Lm1ldGFkYXRhKCkubmFtZX0se3RpdGxlOiJWYWx1ZSIsZXZhbHVhdGU6dD0+ZSh0LmRhdHVtLnNjYWxhcil9LHt0aXRsZToiTG93ZXIgTWFyZ2luIixldmFsdWF0ZTp0PT5lKHQuZGF0dW0ubG93ZXIpfSx7dGl0bGU6IlVwcGVyIE1hcmdpbiIsZXZhbHVhdGU6dD0+ZSh0LmRhdHVtLnVwcGVyKX0se3RpdGxlOiJTdGVwIixldmFsdWF0ZTp0PT5ZZ3QodC5kYXR1bS5zdGVwKX0se3RpdGxlOiJUaW1lIixldmFsdWF0ZTp0PT4kZ3QodC5kYXR1bS53YWxsX3RpbWUpfSx7dGl0bGU6IlJlbGF0aXZlIixldmFsdWF0ZTp0PT5aZ3QoS2d0KHQuZGF0dW0sMCx0LmRhdGFzZXQpKX1dfSkoKSx0aGlzLl9taXNzaW5nVGFncz1bXSx0aGlzLl9taXNzaW5nVGFnc0NvbGxhcHNpYmxlT3BlbmVkPSExfXJlbG9hZCgpe3RoaXMuJC5sb2FkZXIucmVsb2FkKCl9cmVkcmF3KCl7dGhpcy4kLmxvYWRlci5yZWRyYXcoKX1fdG9nZ2xlRXhwYW5kZWQodCl7dGhpcy5zZXQoIl9leHBhbmRlZCIsIXRoaXMuX2V4cGFuZGVkKSx0aGlzLnJlZHJhdygpfV90b2dnbGVMb2dTY2FsZSgpe3RoaXMuc2V0KCJfbG9nU2NhbGVBY3RpdmUiLCF0aGlzLl9sb2dTY2FsZUFjdGl2ZSl9X3Jlc2V0RG9tYWluKCl7Y29uc3QgdD10aGlzLiQubG9hZGVyO3QmJnQucmVzZXREb21haW4oKX1fY3N2VXJsKHQsZSl7cmV0dXJuIGU/T08odGhpcy5fZG93bmxvYWREYXRhVXJsKHQsZSkse2Zvcm1hdDoiY3N2In0pOiIifV9qc29uVXJsKHQsZSl7cmV0dXJuIGU/T08odGhpcy5fZG93bmxvYWREYXRhVXJsKHQsZSkse2Zvcm1hdDoianNvbiJ9KToiIn1fZG93bmxvYWREYXRhVXJsKHQsZSl7Y29uc3Qgbj10W2VdLGk9e3RhZzpuLmdldFRhZygpLHJ1bjpuLmdldFJ1bigpfTtyZXR1cm4gT08oZ3IoKS5wbHVnaW5Sb3V0ZSgiY3VzdG9tX3NjYWxhcnMiLCIvZG93bmxvYWRfZGF0YSIpLGkpfV9jcmVhdGVQcm9jZXNzRGF0YUZ1bmN0aW9uKHQpe3JldHVybihlLG4saSk9PntpZighaS5yZWdleF92YWxpZClyZXR1cm4gdm9pZCB0aGlzLnNldCgiX3RhZ0ZpbHRlckludmFsaWQiLCEwKTtjb25zdCByPXdlLmNsb25lKHRoaXMuX25hbWVUb0RhdGFTZXJpZXMpLG89W107d2UuZm9yRWFjaCh0LCh0PT57bGV0IGU9ITE7Y29uc3QgYT1pLnRhZ190b19ldmVudHNbdC52YWx1ZV0scz1pLnRhZ190b19ldmVudHNbdC5sb3dlcl0sbD1pLnRhZ190b19ldmVudHNbdC51cHBlcl07aWYod2UuaXNVbmRlZmluZWQoYSkmJihvLnB1c2godC52YWx1ZSksZT0hMCksd2UuaXNVbmRlZmluZWQocykmJihvLnB1c2godC5sb3dlciksZT0hMCksd2UuaXNVbmRlZmluZWQobCkmJihvLnB1c2godC51cHBlciksZT0hMCksZSlyZXR1cm47Y29uc3QgYz10PT50WzFdLHU9dGhpcy5fZmluZFN0ZXBNaXNtYXRjaCh0LGEubWFwKGMpLHMubWFwKGMpLGwubWFwKGMpKTtpZih1KXJldHVybiB2b2lkIHRoaXMuc2V0KCJfc3RlcHNNaXNtYXRjaCIsdSk7Y29uc3QgaD10PT50WzJdLGQ9YS5tYXAoKCh0LGUpPT4oe3dhbGxfdGltZTpuZXcgRGF0ZSgxZTMqdFswXSksc3RlcDpjKHQpLHNjYWxhcjpoKHQpLGxvd2VyOmgoc1tlXSksdXBwZXI6aChsW2VdKX0pKSkscD1HX3Qobix0LnZhbHVlKSxmPXJbcF07aWYoZilmLnNldERhdGEoZCk7ZWxzZXtjb25zdCBlPXRoaXMuX2NyZWF0ZU5ld0RhdGFTZXJpZXMobix0LnZhbHVlLHAsZCk7cltwXT1lfX0pKSx0aGlzLnNldCgiX25hbWVUb0RhdGFTZXJpZXMiLHIpO2NvbnN0IGE9d2UuZmluZEluZGV4KHRoaXMuX21pc3NpbmdUYWdzLCh0PT50LnJ1bj09PW4pKTtpZihvLmxlbmd0aCYmMyE9by5sZW5ndGgpe2NvbnN0IHQ9e3J1bjpuLHRhZ3M6b307YT49MD90aGlzLnNwbGljZSgiX21pc3NpbmdUYWdzIixhLDEsdCk6dGhpcy5wdXNoKCJfbWlzc2luZ1RhZ3MiLHQpfWVsc2UgYT49MCYmdGhpcy5zcGxpY2UoIl9taXNzaW5nVGFncyIsYSwxKX19X2ZpbmRTdGVwTWlzbWF0Y2godCxlLG4saSl7cmV0dXJuIHdlLmlzRXF1YWwobixlKSYmd2UuaXNFcXVhbChpLGUpP251bGw6e3Nlcmllc09iamVjdDp0LHZhbHVlU3RlcHM6ZSxsb3dlclN0ZXBzOm4sdXBwZXJTdGVwczppfX1fY3JlYXRlTmV3RGF0YVNlcmllcyh0LGUsbixpKXt0aGlzLl9ydW5Ub05leHRBdmFpbGFibGVTeW1ib2xJbmRleFt0XXw9MDtjb25zdCByPW5ldyBVX3QodCxlLG4saSxHZ3RbdGhpcy5fcnVuVG9OZXh0QXZhaWxhYmxlU3ltYm9sSW5kZXhbdF1dKTtyZXR1cm4gdGhpcy5fcnVuVG9OZXh0QXZhaWxhYmxlU3ltYm9sSW5kZXhbdF09KHRoaXMuX3J1blRvTmV4dEF2YWlsYWJsZVN5bWJvbEluZGV4W3RdKzEpJUdndC5sZW5ndGgscn1fdXBkYXRlQ2hhcnQoKXt3ZS5mb3JPd24odGhpcy5fbmFtZVRvRGF0YVNlcmllcywodD0+e3RoaXMuJC5sb2FkZXIuc2V0U2VyaWVzRGF0YSh0LmdldE5hbWUoKSx0LmdldERhdGEoKSl9KSksdGhpcy4kLmxvYWRlci5jb21taXRDaGFuZ2VzKCl9Z2V0IF9zZXJpZXNOYW1lcygpe2NvbnN0IHQ9bmV3IFNldCh0aGlzLnJ1bnMpO3JldHVybiBPYmplY3QuZW50cmllcyh0aGlzLl9uYW1lVG9EYXRhU2VyaWVzKS5maWx0ZXIoKChbZSxuXSk9PnQuaGFzKG4ucnVuKSkpLm1hcCgoKFt0XSk9PnQpKX1fZGV0ZXJtaW5lQ29sb3IodCxlKXtyZXR1cm4gdC5zY2FsZShlKX1fcmVmcmVzaERhdGFTZXJpZXMoKXt0aGlzLnNldCgiX25hbWVUb0RhdGFTZXJpZXMiLHt9KX1fY3JlYXRlU3ltYm9sRnVuY3Rpb24oKXtyZXR1cm4gdD0+dGhpcy5fbmFtZVRvRGF0YVNlcmllc1t0XS5nZXRTeW1ib2woKS5tZXRob2QoKX1fZGV0ZXJtaW5lU3ltYm9sKHQsZSl7cmV0dXJuIHRbZV0uZ2V0U3ltYm9sKCkuY2hhcmFjdGVyfWdldCBfdGFnRmlsdGVyKCl7cmV0dXJuIHdlLmZsYXR0ZW4odGhpcy5tYXJnaW5DaGFydFNlcmllcy5tYXAoKHQ9Plt0LnZhbHVlLHQubG93ZXIsdC51cHBlcl0pKSkubWFwKCh0PT4iKCIrdGhpcy5fZXNjYXBlUmVnZXhDaGFyYWN0ZXJzKHQpKyIpIikpLmpvaW4oInwiKX1fZXNjYXBlUmVnZXhDaGFyYWN0ZXJzKHQpe3JldHVybiB0LnJlcGxhY2UoL1suKis/XiR7fSgpfFtcXVxcXS9nLCJcXCQmIil9X2dldFRvZ2dsZUNvbGxhcHNpYmxlSWNvbih0KXtyZXR1cm4gdD8iZXhwYW5kLWxlc3MiOiJleHBhbmQtbW9yZSJ9X3RvZ2dsZU1hdGNoZXNPcGVuKCl7dGhpcy5zZXQoIl9tYXRjaGVzTGlzdE9wZW5lZCIsIXRoaXMuX21hdGNoZXNMaXN0T3BlbmVkKX1nZXQgX3RpdGxlRGlzcGxheVN0cmluZygpe3JldHVybiB0aGlzLnRpdGxlfHwidW50aXRsZWQifV9zZXBhcmF0ZVdpdGhDb21tYXModCl7cmV0dXJuIHQuam9pbigiLCAiKX1fdG9nZ2xlTWlzc2luZ1RhZ3NDb2xsYXBzaWJsZU9wZW4oKXt0aGlzLnNldCgiX21pc3NpbmdUYWdzQ29sbGFwc2libGVPcGVuZWQiLCF0aGlzLl9taXNzaW5nVGFnc0NvbGxhcHNpYmxlT3BlbmVkKX1fbWF0Y2hMaXN0RW50cnlDb2xvclVwZGF0ZWQoKXtjb25zdCB0PXRoaXMuJCQoIiNtYXRjaC1saXN0LXJlcGVhdCIpO3QmJnRoaXMucm9vdC5xdWVyeVNlbGVjdG9yQWxsKCIubWF0Y2gtbGlzdC1lbnRyeSIpLmZvckVhY2goKGU9Pntjb25zdCBuPXQuaXRlbUZvckVsZW1lbnQoZSk7ZS5zdHlsZS5jb2xvcj10aGlzLl9kZXRlcm1pbmVDb2xvcih0aGlzLl9jb2xvclNjYWxlLG4pfSkpfX07cV90LnRlbXBsYXRlPV9lYAogICAgPHRmLWNhcmQtaGVhZGluZyBkaXNwbGF5LW5hbWU9IltbX3RpdGxlRGlzcGxheVN0cmluZ11dIj48L3RmLWNhcmQtaGVhZGluZz4KICAgIDxkaXYgaWQ9InRmLWxpbmUtY2hhcnQtZGF0YS1sb2FkZXItY29udGFpbmVyIj4KICAgICAgPHRmLWxpbmUtY2hhcnQtZGF0YS1sb2FkZXIKICAgICAgICBpZD0ibG9hZGVyIgogICAgICAgIGFjdGl2ZT0iW1thY3RpdmVdXSIKICAgICAgICBjb2xvci1zY2FsZT0iW1tfY29sb3JTY2FsZV1dIgogICAgICAgIGRhdGEtc2VyaWVzPSJbW19zZXJpZXNOYW1lc11dIgogICAgICAgIGZpbGwtYXJlYT0iW1tfZmlsbEFyZWFdXSIKICAgICAgICBpZ25vcmUteS1vdXRsaWVycz0iW1tpZ25vcmVZT3V0bGllcnNdXSIKICAgICAgICBsb2FkLWtleT0iW1tfdGFnRmlsdGVyXV0iCiAgICAgICAgZGF0YS10by1sb2FkPSJbW3J1bnNdXSIKICAgICAgICByZXF1ZXN0LWRhdGE9IltbX3JlcXVlc3REYXRhXV0iCiAgICAgICAgbG9nLXNjYWxlLWFjdGl2ZT0iW1tfbG9nU2NhbGVBY3RpdmVdXSIKICAgICAgICBsb2FkLWRhdGEtY2FsbGJhY2s9IltbX2NyZWF0ZVByb2Nlc3NEYXRhRnVuY3Rpb24obWFyZ2luQ2hhcnRTZXJpZXMpXV0iCiAgICAgICAgcmVxdWVzdC1tYW5hZ2VyPSJbW3JlcXVlc3RNYW5hZ2VyXV0iCiAgICAgICAgc3ltYm9sLWZ1bmN0aW9uPSJbW19jcmVhdGVTeW1ib2xGdW5jdGlvbigpXV0iCiAgICAgICAgdG9vbHRpcC1jb2x1bW5zPSJbW190b29sdGlwQ29sdW1uc11dIgogICAgICAgIHRvb2x0aXAtc29ydGluZy1tZXRob2Q9IltbdG9vbHRpcFNvcnRpbmdNZXRob2RdXSIKICAgICAgICB4LXR5cGU9IltbeFR5cGVdXSIKICAgICAgPgogICAgICA8L3RmLWxpbmUtY2hhcnQtZGF0YS1sb2FkZXI+CiAgICA8L2Rpdj4KICAgIDxkaXYgaWQ9ImJ1dHRvbnMiPgogICAgICA8cGFwZXItaWNvbi1idXR0b24KICAgICAgICBzZWxlY3RlZCQ9IltbX2V4cGFuZGVkXV0iCiAgICAgICAgaWNvbj0iZnVsbHNjcmVlbiIKICAgICAgICBvbi10YXA9Il90b2dnbGVFeHBhbmRlZCIKICAgICAgPjwvcGFwZXItaWNvbi1idXR0b24+CiAgICAgIDxwYXBlci1pY29uLWJ1dHRvbgogICAgICAgIHNlbGVjdGVkJD0iW1tfbG9nU2NhbGVBY3RpdmVdXSIKICAgICAgICBpY29uPSJsaW5lLXdlaWdodCIKICAgICAgICBvbi10YXA9Il90b2dnbGVMb2dTY2FsZSIKICAgICAgICB0aXRsZT0iVG9nZ2xlIHktYXhpcyBsb2cgc2NhbGUiCiAgICAgID48L3BhcGVyLWljb24tYnV0dG9uPgogICAgICA8cGFwZXItaWNvbi1idXR0b24KICAgICAgICBpY29uPSJzZXR0aW5ncy1vdmVyc2NhbiIKICAgICAgICBvbi10YXA9Il9yZXNldERvbWFpbiIKICAgICAgICB0aXRsZT0iRml0IGRvbWFpbiB0byBkYXRhIgogICAgICA+PC9wYXBlci1pY29uLWJ1dHRvbj4KICAgICAgPHNwYW4gc3R5bGU9ImZsZXgtZ3JvdzogMSI+PC9zcGFuPgogICAgICA8dGVtcGxhdGUgaXM9ImRvbS1pZiIgaWY9Iltbc2hvd0Rvd25sb2FkTGlua3NdXSI+CiAgICAgICAgPGRpdiBjbGFzcz0iZG93bmxvYWQtbGlua3MiPgogICAgICAgICAgPHBhcGVyLWRyb3Bkb3duLW1lbnUKICAgICAgICAgICAgbm8tbGFiZWwtZmxvYXQ9InRydWUiCiAgICAgICAgICAgIGxhYmVsPSJzZXJpZXMgdG8gZG93bmxvYWQiCiAgICAgICAgICAgIHNlbGVjdGVkLWl0ZW0tbGFiZWw9Int7X2RhdGFTZXJpZXNOYW1lVG9Eb3dubG9hZH19IgogICAgICAgICAgPgogICAgICAgICAgICA8cGFwZXItbGlzdGJveCBjbGFzcz0iZHJvcGRvd24tY29udGVudCIgc2xvdD0iZHJvcGRvd24tY29udGVudCI+CiAgICAgICAgICAgICAgPHRlbXBsYXRlCiAgICAgICAgICAgICAgICBpcz0iZG9tLXJlcGVhdCIKICAgICAgICAgICAgICAgIGl0ZW1zPSJbW19zZXJpZXNOYW1lc11dIgogICAgICAgICAgICAgICAgYXM9ImRhdGFTZXJpZXNOYW1lIgogICAgICAgICAgICAgID4KICAgICAgICAgICAgICAgIDxwYXBlci1pdGVtIG5vLWxhYmVsLWZsb2F0PSJ0cnVlIgogICAgICAgICAgICAgICAgICA+W1tkYXRhU2VyaWVzTmFtZV1dPC9wYXBlci1pdGVtCiAgICAgICAgICAgICAgICA+CiAgICAgICAgICAgICAgPC90ZW1wbGF0ZT4KICAgICAgICAgICAgPC9wYXBlci1saXN0Ym94PgogICAgICAgICAgPC9wYXBlci1kcm9wZG93bi1tZW51PgogICAgICAgICAgPGEKICAgICAgICAgICAgZG93bmxvYWQ9IltbX2RhdGFTZXJpZXNOYW1lVG9Eb3dubG9hZF1dLmNzdiIKICAgICAgICAgICAgaHJlZj0iW1tfY3N2VXJsKF9uYW1lVG9EYXRhU2VyaWVzLCBfZGF0YVNlcmllc05hbWVUb0Rvd25sb2FkKV1dIgogICAgICAgICAgICA+Q1NWPC9hCiAgICAgICAgICA+CiAgICAgICAgICA8YQogICAgICAgICAgICBkb3dubG9hZD0iW1tfZGF0YVNlcmllc05hbWVUb0Rvd25sb2FkXV0uanNvbiIKICAgICAgICAgICAgaHJlZj0iW1tfanNvblVybChfbmFtZVRvRGF0YVNlcmllcywgX2RhdGFTZXJpZXNOYW1lVG9Eb3dubG9hZCldXSIKICAgICAgICAgICAgPkpTT048L2EKICAgICAgICAgID4KICAgICAgICA8L2Rpdj4KICAgICAgPC90ZW1wbGF0ZT4KICAgIDwvZGl2PgoKICAgIDwhLS0gaGVyZSAtLT4KICAgIDx0ZW1wbGF0ZSBpcz0iZG9tLWlmIiBpZj0iW1tfbWlzc2luZ1RhZ3MubGVuZ3RoXV0iPgogICAgICA8ZGl2IGNsYXNzPSJjb2xsYXBzaWJsZS1saXN0LXRpdGxlIj4KICAgICAgICA8cGFwZXItaWNvbi1idXR0b24KICAgICAgICAgIGljb249IltbX2dldFRvZ2dsZUNvbGxhcHNpYmxlSWNvbihfbWlzc2luZ1RhZ3NDb2xsYXBzaWJsZU9wZW5lZCldXSIKICAgICAgICAgIG9uLWNsaWNrPSJfdG9nZ2xlTWlzc2luZ1RhZ3NDb2xsYXBzaWJsZU9wZW4iCiAgICAgICAgICBjbGFzcz0idG9nZ2xlLWNvbGxhcHNpYmxlLWJ1dHRvbiIKICAgICAgICA+CiAgICAgICAgPC9wYXBlci1pY29uLWJ1dHRvbj4KICAgICAgICA8c3BhbiBjbGFzcz0iY29sbGFwc2libGUtdGl0bGUtdGV4dCI+CiAgICAgICAgICA8aXJvbi1pY29uIGljb249Imljb25zOmVycm9yIj48L2lyb24taWNvbj4gTWlzc2luZyBUYWdzCiAgICAgICAgPC9zcGFuPgogICAgICA8L2Rpdj4KICAgICAgPGlyb24tY29sbGFwc2Ugb3BlbmVkPSJbW19taXNzaW5nVGFnc0NvbGxhcHNpYmxlT3BlbmVkXV0iPgogICAgICAgIDxkaXYgY2xhc3M9ImVycm9yLWNvbnRlbnQiPgogICAgICAgICAgPGlyb24taWNvbiBjbGFzcz0iZXJyb3ItaWNvbiIgaWNvbj0iaWNvbnM6ZXJyb3IiPjwvaXJvbi1pY29uPgogICAgICAgICAgPHRlbXBsYXRlIGlzPSJkb20tcmVwZWF0IiBpdGVtcz0iW1tfbWlzc2luZ1RhZ3NdXSIgYXM9Im1pc3NpbmdFbnRyeSI+CiAgICAgICAgICAgIDxkaXYgY2xhc3M9Im1pc3NpbmctdGFncy1mb3ItcnVuLWNvbnRhaW5lciI+CiAgICAgICAgICAgICAgUnVuICJbW21pc3NpbmdFbnRyeS5ydW5dXSIgbGFja3MgZGF0YSBmb3IgdGFncwogICAgICAgICAgICAgIDx1bD4KICAgICAgICAgICAgICAgIDx0ZW1wbGF0ZQogICAgICAgICAgICAgICAgICBpcz0iZG9tLXJlcGVhdCIKICAgICAgICAgICAgICAgICAgaXRlbXM9IltbbWlzc2luZ0VudHJ5LnRhZ3NdXSIKICAgICAgICAgICAgICAgICAgYXM9InRhZyIKICAgICAgICAgICAgICAgID4KICAgICAgICAgICAgICAgICAgPGxpPltbdGFnXV08L2xpPgogICAgICAgICAgICAgICAgPC90ZW1wbGF0ZT4KICAgICAgICAgICAgICA8L3VsPgogICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgIDwvdGVtcGxhdGU+CiAgICAgICAgPC9kaXY+CiAgICAgIDwvaXJvbi1jb2xsYXBzZT4KICAgIDwvdGVtcGxhdGU+CgogICAgPHRlbXBsYXRlIGlzPSJkb20taWYiIGlmPSJbW190YWdGaWx0ZXJJbnZhbGlkXV0iPgogICAgICA8ZGl2IGNsYXNzPSJlcnJvci1jb250ZW50Ij4KICAgICAgICA8aXJvbi1pY29uIGNsYXNzPSJlcnJvci1pY29uIiBpY29uPSJpY29uczplcnJvciI+PC9pcm9uLWljb24+CiAgICAgICAgVGhpcyByZWd1bGFyIGV4cHJlc2lvbiBpcyBpbnZhbGlkOjxiciAvPgogICAgICAgIDxzcGFuIGNsYXNzPSJpbnZhbGlkLXJlZ2V4Ij5bW190YWdGaWx0ZXJdXTwvc3Bhbj4KICAgICAgPC9kaXY+CiAgICA8L3RlbXBsYXRlPgoKICAgIDx0ZW1wbGF0ZSBpcz0iZG9tLWlmIiBpZj0iW1tfc3RlcHNNaXNtYXRjaF1dIj4KICAgICAgPGRpdiBjbGFzcz0iZXJyb3ItY29udGVudCI+CiAgICAgICAgPGlyb24taWNvbiBjbGFzcz0iZXJyb3ItaWNvbiIgaWNvbj0iaWNvbnM6ZXJyb3IiPjwvaXJvbi1pY29uPgogICAgICAgIFRoZSBzdGVwcyBmb3IgdmFsdWUsIGxvd2VyLCBhbmQgdXBwZXIgdGFncyBkbyBub3QgbWF0Y2g6CiAgICAgICAgPHVsPgogICAgICAgICAgPGxpPgogICAgICAgICAgICA8c3BhbiBjbGFzcz0idGFnLW5hbWUiPltbX3N0ZXBzTWlzbWF0Y2guc2VyaWVzT2JqZWN0LnZhbHVlXV08L3NwYW4+OgogICAgICAgICAgICBbW19zZXBhcmF0ZVdpdGhDb21tYXMoX3N0ZXBzTWlzbWF0Y2gudmFsdWVTdGVwcyldXQogICAgICAgICAgPC9saT4KICAgICAgICAgIDxsaT4KICAgICAgICAgICAgPHNwYW4gY2xhc3M9InRhZy1uYW1lIj5bW19zdGVwc01pc21hdGNoLnNlcmllc09iamVjdC5sb3dlcl1dPC9zcGFuPjoKICAgICAgICAgICAgW1tfc2VwYXJhdGVXaXRoQ29tbWFzKF9zdGVwc01pc21hdGNoLmxvd2VyU3RlcHMpXV0KICAgICAgICAgIDwvbGk+CiAgICAgICAgICA8bGk+CiAgICAgICAgICAgIDxzcGFuIGNsYXNzPSJ0YWctbmFtZSI+W1tfc3RlcHNNaXNtYXRjaC5zZXJpZXNPYmplY3QudXBwZXJdXTwvc3Bhbj46CiAgICAgICAgICAgIFtbX3NlcGFyYXRlV2l0aENvbW1hcyhfc3RlcHNNaXNtYXRjaC51cHBlclN0ZXBzKV1dCiAgICAgICAgICA8L2xpPgogICAgICAgIDwvdWw+CiAgICAgIDwvZGl2PgogICAgPC90ZW1wbGF0ZT4KCiAgICA8ZGl2IGlkPSJtYXRjaGVzLWNvbnRhaW5lciI+CiAgICAgIDxkaXYgY2xhc3M9ImNvbGxhcHNpYmxlLWxpc3QtdGl0bGUiPgogICAgICAgIDx0ZW1wbGF0ZSBpcz0iZG9tLWlmIiBpZj0iW1tfc2VyaWVzTmFtZXMubGVuZ3RoXV0iPgogICAgICAgICAgPHBhcGVyLWljb24tYnV0dG9uCiAgICAgICAgICAgIGljb249IltbX2dldFRvZ2dsZUNvbGxhcHNpYmxlSWNvbihfbWF0Y2hlc0xpc3RPcGVuZWQpXV0iCiAgICAgICAgICAgIG9uLWNsaWNrPSJfdG9nZ2xlTWF0Y2hlc09wZW4iCiAgICAgICAgICAgIGNsYXNzPSJ0b2dnbGUtbWF0Y2hlcy1idXR0b24iCiAgICAgICAgICA+CiAgICAgICAgICA8L3BhcGVyLWljb24tYnV0dG9uPgogICAgICAgIDwvdGVtcGxhdGU+CgogICAgICAgIDxzcGFuIGNsYXNzPSJjb2xsYXBzaWJsZS10aXRsZS10ZXh0Ij4KICAgICAgICAgIE1hdGNoZXMgKFtbX3Nlcmllc05hbWVzLmxlbmd0aF1dKQogICAgICAgIDwvc3Bhbj4KICAgICAgPC9kaXY+CiAgICAgIDx0ZW1wbGF0ZSBpcz0iZG9tLWlmIiBpZj0iW1tfc2VyaWVzTmFtZXMubGVuZ3RoXV0iPgogICAgICAgIDxpcm9uLWNvbGxhcHNlIG9wZW5lZD0iW1tfbWF0Y2hlc0xpc3RPcGVuZWRdXSI+CiAgICAgICAgICA8ZGl2IGlkPSJtYXRjaGVzLWxpc3QiPgogICAgICAgICAgICA8dGVtcGxhdGUKICAgICAgICAgICAgICBpcz0iZG9tLXJlcGVhdCIKICAgICAgICAgICAgICBpdGVtcz0iW1tfc2VyaWVzTmFtZXNdXSIKICAgICAgICAgICAgICBhcz0ic2VyaWVzTmFtZSIKICAgICAgICAgICAgICBpZD0ibWF0Y2gtbGlzdC1yZXBlYXQiCiAgICAgICAgICAgICAgb24tZG9tLWNoYW5nZT0iX21hdGNoTGlzdEVudHJ5Q29sb3JVcGRhdGVkIgogICAgICAgICAgICA+CiAgICAgICAgICAgICAgPGRpdiBjbGFzcz0ibWF0Y2gtbGlzdC1lbnRyeSI+CiAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz0ibWF0Y2gtZW50cnktc3ltYm9sIj4KICAgICAgICAgICAgICAgICAgW1tfZGV0ZXJtaW5lU3ltYm9sKF9uYW1lVG9EYXRhU2VyaWVzLCBzZXJpZXNOYW1lKV1dCiAgICAgICAgICAgICAgICA8L3NwYW4+CiAgICAgICAgICAgICAgICBbW3Nlcmllc05hbWVdXQogICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICA8L3RlbXBsYXRlPgogICAgICAgICAgPC9kaXY+CiAgICAgICAgPC9pcm9uLWNvbGxhcHNlPgogICAgICA8L3RlbXBsYXRlPgogICAgPC9kaXY+CgogICAgPHN0eWxlIGluY2x1ZGU9InRmLWN1c3RvbS1zY2FsYXItY2FyZC1zdHlsZSI+PC9zdHlsZT4KICAgIDxzdHlsZT4KICAgICAgLmVycm9yLWNvbnRlbnQgewogICAgICAgIGJhY2tncm91bmQ6ICNmMDA7CiAgICAgICAgYm9yZGVyLXJhZGl1czogNXB4OwogICAgICAgIGNvbG9yOiAjZmZmOwogICAgICAgIG1hcmdpbjogMTBweCAwIDAgMDsKICAgICAgICBwYWRkaW5nOiAxMHB4OwogICAgICB9CgogICAgICAuZXJyb3ItaWNvbiB7CiAgICAgICAgZGlzcGxheTogYmxvY2s7CiAgICAgICAgZmlsbDogI2ZmZjsKICAgICAgICBtYXJnaW46IDAgYXV0byA1cHggYXV0bzsKICAgICAgfQoKICAgICAgLmludmFsaWQtcmVnZXggewogICAgICAgIGZvbnQtd2VpZ2h0OiBib2xkOwogICAgICB9CgogICAgICAuZXJyb3ItY29udGVudCB1bCB7CiAgICAgICAgbWFyZ2luOiAxcHggMCAwIDA7CiAgICAgICAgcGFkZGluZzogMCAwIDAgMTlweDsKICAgICAgfQoKICAgICAgLnRhZy1uYW1lIHsKICAgICAgICBmb250LXdlaWdodDogYm9sZDsKICAgICAgfQoKICAgICAgLmNvbGxhcHNpYmxlLWxpc3QtdGl0bGUgewogICAgICAgIG1hcmdpbjogMTBweCAwIDVweCAwOwogICAgICB9CgogICAgICAuY29sbGFwc2libGUtdGl0bGUtdGV4dCB7CiAgICAgICAgdmVydGljYWwtYWxpZ246IG1pZGRsZTsKICAgICAgfQoKICAgICAgI21hdGNoZXMtbGlzdCB7CiAgICAgICAgbWF4LWhlaWdodDogMjAwcHg7CiAgICAgICAgb3ZlcmZsb3cteTogYXV0bzsKICAgICAgfQoKICAgICAgLm1hdGNoLWxpc3QtZW50cnkgewogICAgICAgIG1hcmdpbjogMCAwIDVweCAwOwogICAgICB9CgogICAgICAubWF0Y2gtZW50cnktc3ltYm9sIHsKICAgICAgICBmb250LWZhbWlseTogYXJpYWwsIHNhbnMtc2VyaWY7CiAgICAgICAgZGlzcGxheTogaW5saW5lLWJsb2NrOwogICAgICAgIHdpZHRoOiAxMHB4OwogICAgICB9CgogICAgICAubWlzc2luZy10YWdzLWZvci1ydW4tY29udGFpbmVyIHsKICAgICAgICBtYXJnaW46IDhweCAwIDAgMDsKICAgICAgfQogICAgPC9zdHlsZT4KICBgLHQoW28oe3R5cGU6QXJyYXl9KSxlKCJkZXNpZ246dHlwZSIsQXJyYXkpXSxxX3QucHJvdG90eXBlLCJydW5zIix2b2lkIDApLHQoW28oe3R5cGU6U3RyaW5nfSksZSgiZGVzaWduOnR5cGUiLFN0cmluZyldLHFfdC5wcm90b3R5cGUsInhUeXBlIix2b2lkIDApLHQoW28oe3R5cGU6Qm9vbGVhbn0pLGUoImRlc2lnbjp0eXBlIixCb29sZWFuKV0scV90LnByb3RvdHlwZSwiYWN0aXZlIix2b2lkIDApLHQoW28oe3R5cGU6U3RyaW5nfSksZSgiZGVzaWduOnR5cGUiLFN0cmluZyldLHFfdC5wcm90b3R5cGUsInRpdGxlIix2b2lkIDApLHQoW28oe3R5cGU6QXJyYXl9KSxlKCJkZXNpZ246dHlwZSIsQXJyYXkpXSxxX3QucHJvdG90eXBlLCJtYXJnaW5DaGFydFNlcmllcyIsdm9pZCAwKSx0KFtvKHt0eXBlOkJvb2xlYW59KSxlKCJkZXNpZ246dHlwZSIsQm9vbGVhbildLHFfdC5wcm90b3R5cGUsImlnbm9yZVlPdXRsaWVycyIsdm9pZCAwKSx0KFtvKHt0eXBlOk9iamVjdH0pLGUoImRlc2lnbjp0eXBlIixocildLHFfdC5wcm90b3R5cGUsInJlcXVlc3RNYW5hZ2VyIix2b2lkIDApLHQoW28oe3R5cGU6Qm9vbGVhbn0pLGUoImRlc2lnbjp0eXBlIixCb29sZWFuKV0scV90LnByb3RvdHlwZSwic2hvd0Rvd25sb2FkTGlua3MiLHZvaWQgMCksdChbbyh7dHlwZTpPYmplY3R9KSxlKCJkZXNpZ246dHlwZSIsT2JqZWN0KV0scV90LnByb3RvdHlwZSwidGFnTWV0YWRhdGEiLHZvaWQgMCksdChbbyh7dHlwZTpTdHJpbmd9KSxlKCJkZXNpZ246dHlwZSIsU3RyaW5nKV0scV90LnByb3RvdHlwZSwidG9vbHRpcFNvcnRpbmdNZXRob2QiLHZvaWQgMCksdChbbyh7dHlwZTpPYmplY3R9KSxlKCJkZXNpZ246dHlwZSIsT2JqZWN0KV0scV90LnByb3RvdHlwZSwiX2NvbG9yU2NhbGUiLHZvaWQgMCksdChbbyh7dHlwZTpCb29sZWFufSksZSgiZGVzaWduOnR5cGUiLEJvb2xlYW4pXSxxX3QucHJvdG90eXBlLCJfdGFnRmlsdGVySW52YWxpZCIsdm9pZCAwKSx0KFtvKHt0eXBlOk9iamVjdH0pLGUoImRlc2lnbjp0eXBlIixPYmplY3QpXSxxX3QucHJvdG90eXBlLCJfbmFtZVRvRGF0YVNlcmllcyIsdm9pZCAwKSx0KFtvKHt0eXBlOkJvb2xlYW4scmVmbGVjdFRvQXR0cmlidXRlOiEwfSksZSgiZGVzaWduOnR5cGUiLEJvb2xlYW4pXSxxX3QucHJvdG90eXBlLCJfZXhwYW5kZWQiLHZvaWQgMCksdChbbyh7dHlwZTpCb29sZWFufSksZSgiZGVzaWduOnR5cGUiLEJvb2xlYW4pXSxxX3QucHJvdG90eXBlLCJfbG9nU2NhbGVBY3RpdmUiLHZvaWQgMCksdChbbyh7dHlwZTpPYmplY3R9KSxlKCJkZXNpZ246dHlwZSIsRnVuY3Rpb24pXSxxX3QucHJvdG90eXBlLCJfcmVxdWVzdERhdGEiLHZvaWQgMCksdChbbyh7dHlwZTpPYmplY3R9KSxlKCJkZXNpZ246dHlwZSIsT2JqZWN0KV0scV90LnByb3RvdHlwZSwiX3J1blRvTmV4dEF2YWlsYWJsZVN5bWJvbEluZGV4Iix2b2lkIDApLHQoW28oe3R5cGU6Qm9vbGVhbn0pLGUoImRlc2lnbjp0eXBlIixCb29sZWFuKV0scV90LnByb3RvdHlwZSwiX21hdGNoZXNMaXN0T3BlbmVkIix2b2lkIDApLHQoW28oe3R5cGU6T2JqZWN0fSksZSgiZGVzaWduOnR5cGUiLE9iamVjdCldLHFfdC5wcm90b3R5cGUsIl9maWxsQXJlYSIsdm9pZCAwKSx0KFtvKHt0eXBlOkFycmF5fSksZSgiZGVzaWduOnR5cGUiLEFycmF5KV0scV90LnByb3RvdHlwZSwiX3Rvb2x0aXBDb2x1bW5zIix2b2lkIDApLHQoW28oe3R5cGU6QXJyYXl9KSxlKCJkZXNpZ246dHlwZSIsQXJyYXkpXSxxX3QucHJvdG90eXBlLCJfbWlzc2luZ1RhZ3MiLHZvaWQgMCksdChbbyh7dHlwZTpCb29sZWFufSksZSgiZGVzaWduOnR5cGUiLEJvb2xlYW4pXSxxX3QucHJvdG90eXBlLCJfbWlzc2luZ1RhZ3NDb2xsYXBzaWJsZU9wZW5lZCIsdm9pZCAwKSx0KFtvKHt0eXBlOk9iamVjdH0pLGUoImRlc2lnbjp0eXBlIixPYmplY3QpXSxxX3QucHJvdG90eXBlLCJfc3RlcHNNaXNtYXRjaCIsdm9pZCAwKSx0KFthKCJfbmFtZVRvRGF0YVNlcmllcyIpLGUoImRlc2lnbjp0eXBlIixGdW5jdGlvbiksZSgiZGVzaWduOnBhcmFtdHlwZXMiLFtdKSxlKCJkZXNpZ246cmV0dXJudHlwZSIsdm9pZCAwKV0scV90LnByb3RvdHlwZSwiX3VwZGF0ZUNoYXJ0IixudWxsKSx0KFtzKCJfbmFtZVRvRGF0YVNlcmllcyIsInJ1bnMiKSxlKCJkZXNpZ246dHlwZSIsT2JqZWN0KSxlKCJkZXNpZ246cGFyYW10eXBlcyIsW10pXSxxX3QucHJvdG90eXBlLCJfc2VyaWVzTmFtZXMiLG51bGwpLHQoW2EoIl90YWdGaWx0ZXIiKSxlKCJkZXNpZ246dHlwZSIsRnVuY3Rpb24pLGUoImRlc2lnbjpwYXJhbXR5cGVzIixbXSksZSgiZGVzaWduOnJldHVybnR5cGUiLHZvaWQgMCldLHFfdC5wcm90b3R5cGUsIl9yZWZyZXNoRGF0YVNlcmllcyIsbnVsbCksdChbcygibWFyZ2luQ2hhcnRTZXJpZXMiKSxlKCJkZXNpZ246dHlwZSIsU3RyaW5nKSxlKCJkZXNpZ246cGFyYW10eXBlcyIsW10pXSxxX3QucHJvdG90eXBlLCJfdGFnRmlsdGVyIixudWxsKSx0KFtzKCJ0aXRsZSIpLGUoImRlc2lnbjp0eXBlIixTdHJpbmcpLGUoImRlc2lnbjpwYXJhbXR5cGVzIixbXSldLHFfdC5wcm90b3R5cGUsIl90aXRsZURpc3BsYXlTdHJpbmciLG51bGwpLHFfdD10KFtpKCJ0Zi1jdXN0b20tc2NhbGFyLW1hcmdpbi1jaGFydC1jYXJkIildLHFfdCk7dmFyIFlfdD1PYmplY3QuZnJlZXplKHtfX3Byb3RvX186bnVsbCxUWVBFUzpbXSxnZXRSdW5zTmFtZWQ6ZnVuY3Rpb24gWF90KHQpe3JldHVybiB3ZS5rZXlzKHQpLnNvcnQoZXIpfSxnZXRUYWdzOm9yLGZpbHRlclRhZ3M6ZnVuY3Rpb24gJF90KHQsZSl7bGV0IG49W107cmV0dXJuIGUuZm9yRWFjaCgoZT0+bj1uLmNvbmNhdCh0W2VdKSkpLHdlLnVuaXEobikuc29ydChlcil9LExpc3RlbktleTpmbCxCYXNlU3RvcmU6bWwsQ2FuY2VsbGVyOkVPLEVudmlyb25tZW50U3RvcmU6Z2wsZW52aXJvbm1lbnRTdG9yZTpfbCxFeHBlcmltZW50c1N0b3JlOl9PLGV4cGVyaW1lbnRzU3RvcmU6eU8sUmVxdWVzdENhbmNlbGxhdGlvbkVycm9yOmFyLEludmFsaWRSZXF1ZXN0T3B0aW9uc0Vycm9yOnNyLFJlcXVlc3ROZXR3b3JrRXJyb3I6bHIsZ2V0IEh0dHBNZXRob2RUeXBlKCl7cmV0dXJuIGNyfSxSZXF1ZXN0T3B0aW9uczp1cixSZXF1ZXN0TWFuYWdlcjpocixjcmVhdGVSb3V0ZXI6bXIsZ2V0Um91dGVyOmdyLHNldFJvdXRlcjpmdW5jdGlvbiBLX3QodCl7aWYobnVsbD09dCl0aHJvdyBuZXcgRXJyb3IoIlJvdXRlciByZXF1aXJlZCwgYnV0IGdvdDogIit0KTtmcj10fSxjcmVhdGVTZWFyY2hQYXJhbTp5cixSdW5zU3RvcmU6eWwscnVuc1N0b3JlOnZsLGFkZFBhcmFtczpPT30pO2xldCBaX3Q9Y2xhc3MgZXh0ZW5kcyh0cih5ZSkpe2NvbnN0cnVjdG9yKCl7c3VwZXIoLi4uYXJndW1lbnRzKSx0aGlzLmFjdGl2ZT0hMCx0aGlzLl9jb2xvclNjYWxlPW5ldyBXX3Qoe3NjYWxlOnhPfSksdGhpcy5fbmFtZVRvRGF0YVNlcmllcz17fSx0aGlzLl9leHBhbmRlZD0hMSx0aGlzLl9yZXF1ZXN0RGF0YT0odCxlLG4pPT57Y29uc3QgaT1ncigpLnBsdWdpblJvdXRlKCJjdXN0b21fc2NhbGFycyIsIi9zY2FsYXJzIik7UHJvbWlzZS5hbGwodC5tYXAoKHQ9Pntjb25zdCBuPU9PKGkse3RhZzp0aGlzLl90YWdGaWx0ZXIscnVuOnR9KTtyZXR1cm4gdGhpcy5yZXF1ZXN0TWFuYWdlci5yZXF1ZXN0KG4pLnRoZW4oKG49PntlKHtpdGVtOnQsZGF0YTpufSl9KSl9KSkpLmZpbmFsbHkoKCgpPT57bigpfSkpfSx0aGlzLl9ydW5Ub05leHRBdmFpbGFibGVTeW1ib2xJbmRleD17fSx0aGlzLl9tYXRjaGVzTGlzdE9wZW5lZD0hMX1yZWxvYWQoKXt0aGlzLiQubG9hZGVyLnJlbG9hZCgpfXJlZHJhdygpe3RoaXMuJC5sb2FkZXIucmVkcmF3KCl9X3RvZ2dsZUV4cGFuZGVkKHQpe3RoaXMuc2V0KCJfZXhwYW5kZWQiLCF0aGlzLl9leHBhbmRlZCksdGhpcy5yZWRyYXcoKX1fdG9nZ2xlTG9nU2NhbGUoKXt0aGlzLnNldCgiX2xvZ1NjYWxlQWN0aXZlIiwhdGhpcy5fbG9nU2NhbGVBY3RpdmUpfV9yZXNldERvbWFpbigpe2NvbnN0IHQ9dGhpcy4kLmxvYWRlcjt0JiZ0LnJlc2V0RG9tYWluKCl9X2NzdlVybCh0LGUpe3JldHVybiBlP09PKHRoaXMuX2Rvd25sb2FkRGF0YVVybCh0LGUpLHtmb3JtYXQ6ImNzdiJ9KToiIn1fanNvblVybCh0LGUpe3JldHVybiBlP09PKHRoaXMuX2Rvd25sb2FkRGF0YVVybCh0LGUpLHtmb3JtYXQ6Impzb24ifSk6IiJ9X2Rvd25sb2FkRGF0YVVybCh0LGUpe2NvbnN0IG49dFtlXSxpPXt0YWc6bi5nZXRUYWcoKSxydW46bi5nZXRSdW4oKX07cmV0dXJuIE9PKGdyKCkucGx1Z2luUm91dGUoImN1c3RvbV9zY2FsYXJzIiwiL2Rvd25sb2FkX2RhdGEiKSxpKX1fY3JlYXRlUHJvY2Vzc0RhdGFGdW5jdGlvbigpe3JldHVybih0LGUsbik9PntpZihuLnJlZ2V4X3ZhbGlkKXtjb25zdCB0PXdlLmNsb25lKHRoaXMuX25hbWVUb0RhdGFTZXJpZXMpO3dlLmZvck93bihuLnRhZ190b19ldmVudHMsKChuLGkpPT57Y29uc3Qgcj1uLm1hcCgodD0+KHt3YWxsX3RpbWU6bmV3IERhdGUoMWUzKnRbMF0pLHN0ZXA6dFsxXSxzY2FsYXI6dFsyXX0pKSksbz1HX3QoZSxpKSxhPXRbb107aWYoYSlhLnNldERhdGEocik7ZWxzZXt3ZS5pc1VuZGVmaW5lZCh0aGlzLl9ydW5Ub05leHRBdmFpbGFibGVTeW1ib2xJbmRleFtlXSkmJih0aGlzLl9ydW5Ub05leHRBdmFpbGFibGVTeW1ib2xJbmRleFtlXT0wKTtjb25zdCBuPW5ldyBVX3QoZSxpLG8scixHZ3RbdGhpcy5fcnVuVG9OZXh0QXZhaWxhYmxlU3ltYm9sSW5kZXhbZV1dKTt0W29dPW4sdGhpcy5fcnVuVG9OZXh0QXZhaWxhYmxlU3ltYm9sSW5kZXhbZV09KHRoaXMuX3J1blRvTmV4dEF2YWlsYWJsZVN5bWJvbEluZGV4W2VdKzEpJUdndC5sZW5ndGh9fSkpLHRoaXMuc2V0KCJfbmFtZVRvRGF0YVNlcmllcyIsdCl9fX1fdXBkYXRlQ2hhcnQoKXtPYmplY3QuZW50cmllcyh0aGlzLl9uYW1lVG9EYXRhU2VyaWVzKS5mb3JFYWNoKCgoW3QsZV0pPT57dGhpcy4kLmxvYWRlci5zZXRTZXJpZXNEYXRhKHQsZS5nZXREYXRhKCkpfSkpLHRoaXMuJC5sb2FkZXIuY29tbWl0Q2hhbmdlcygpfV9jb21wdXRlU2VsZWN0ZWRSdW5zU2V0KHQpe2NvbnN0IGU9e307cmV0dXJuIHdlLmZvckVhY2godCwodD0+e2VbdF09MX0pKSxlfWdldCBfc2VyaWVzTmFtZXMoKXtjb25zdCB0PW5ldyBTZXQodGhpcy5ydW5zKTtyZXR1cm4gT2JqZWN0LmVudHJpZXModGhpcy5fbmFtZVRvRGF0YVNlcmllcykuZmlsdGVyKCgoW2Usbl0pPT50LmhhcyhuLnJ1bikpKS5tYXAoKChbdF0pPT50KSl9X2RldGVybWluZUNvbG9yKHQsZSl7cmV0dXJuIHQuc2NhbGUoZSl9X3JlZnJlc2hEYXRhU2VyaWVzKCl7dGhpcy5zZXQoIl9uYW1lVG9EYXRhU2VyaWVzIix7fSl9X2NyZWF0ZVN5bWJvbEZ1bmN0aW9uKCl7cmV0dXJuIHQ9PnRoaXMuX25hbWVUb0RhdGFTZXJpZXNbdF0uZ2V0U3ltYm9sKCkubWV0aG9kKCl9X2RldGVybWluZVN5bWJvbCh0LGUpe3JldHVybiB0W2VdLmdldFN5bWJvbCgpLmNoYXJhY3Rlcn1nZXQgX3RhZ0ZpbHRlcigpe3ZhciB0PXRoaXMudGFnUmVnZXhlcztyZXR1cm4gMT09PXQubGVuZ3RoP3RbMF06dC5tYXAoKHQ9PiIoIit0KyIpIikpLmpvaW4oInwiKX1fZ2V0VG9nZ2xlTWF0Y2hlc0ljb24odCl7cmV0dXJuIHQ/ImV4cGFuZC1sZXNzIjoiZXhwYW5kLW1vcmUifV90b2dnbGVNYXRjaGVzT3Blbigpe3RoaXMuc2V0KCJfbWF0Y2hlc0xpc3RPcGVuZWQiLCF0aGlzLl9tYXRjaGVzTGlzdE9wZW5lZCl9Z2V0IF90aXRsZURpc3BsYXlTdHJpbmcoKXtyZXR1cm4gdGhpcy50aXRsZXx8InVudGl0bGVkIn1fbWF0Y2hMaXN0RW50cnlDb2xvclVwZGF0ZWQodCl7Y29uc3QgZT10aGlzLiQkKCIjbWF0Y2gtbGlzdC1yZXBlYXQiKTtlJiZ0aGlzLnJvb3QucXVlcnlTZWxlY3RvckFsbCgiLm1hdGNoLWxpc3QtZW50cnkiKS5mb3JFYWNoKCh0PT57Y29uc3Qgbj1lLml0ZW1Gb3JFbGVtZW50KHQpO3Quc3R5bGUuY29sb3I9dGhpcy5fZGV0ZXJtaW5lQ29sb3IodGhpcy5fY29sb3JTY2FsZSxuKX0pKX19O1pfdC50ZW1wbGF0ZT1fZWAKICAgIDx0Zi1jYXJkLWhlYWRpbmcgZGlzcGxheS1uYW1lPSJbW190aXRsZURpc3BsYXlTdHJpbmddXSI+PC90Zi1jYXJkLWhlYWRpbmc+CiAgICA8ZGl2IGlkPSJ0Zi1saW5lLWNoYXJ0LWRhdGEtbG9hZGVyLWNvbnRhaW5lciI+CiAgICAgIDx0Zi1saW5lLWNoYXJ0LWRhdGEtbG9hZGVyCiAgICAgICAgaWQ9ImxvYWRlciIKICAgICAgICBhY3RpdmU9IltbYWN0aXZlXV0iCiAgICAgICAgY29sb3Itc2NhbGU9IltbX2NvbG9yU2NhbGVdXSIKICAgICAgICBkYXRhLXNlcmllcz0iW1tfc2VyaWVzTmFtZXNdXSIKICAgICAgICBpZ25vcmUteS1vdXRsaWVycz0iW1tpZ25vcmVZT3V0bGllcnNdXSIKICAgICAgICBsb2FkLWtleT0iW1tfdGFnRmlsdGVyXV0iCiAgICAgICAgZGF0YS10by1sb2FkPSJbW3J1bnNdXSIKICAgICAgICByZXF1ZXN0LWRhdGE9IltbX3JlcXVlc3REYXRhXV0iCiAgICAgICAgbG9nLXNjYWxlLWFjdGl2ZT0iW1tfbG9nU2NhbGVBY3RpdmVdXSIKICAgICAgICBsb2FkLWRhdGEtY2FsbGJhY2s9IltbX2NyZWF0ZVByb2Nlc3NEYXRhRnVuY3Rpb24oKV1dIgogICAgICAgIHJlcXVlc3QtbWFuYWdlcj0iW1tyZXF1ZXN0TWFuYWdlcl1dIgogICAgICAgIHNtb290aGluZy1lbmFibGVkPSJbW3Ntb290aGluZ0VuYWJsZWRdXSIKICAgICAgICBzbW9vdGhpbmctd2VpZ2h0PSJbW3Ntb290aGluZ1dlaWdodF1dIgogICAgICAgIHN5bWJvbC1mdW5jdGlvbj0iW1tfY3JlYXRlU3ltYm9sRnVuY3Rpb24oKV1dIgogICAgICAgIHRvb2x0aXAtc29ydGluZy1tZXRob2Q9IltbdG9vbHRpcFNvcnRpbmdNZXRob2RdXSIKICAgICAgICB4LXR5cGU9IltbeFR5cGVdXSIKICAgICAgPgogICAgICA8L3RmLWxpbmUtY2hhcnQtZGF0YS1sb2FkZXI+CiAgICA8L2Rpdj4KICAgIDxkaXYgaWQ9ImJ1dHRvbnMiPgogICAgICA8cGFwZXItaWNvbi1idXR0b24KICAgICAgICBzZWxlY3RlZCQ9IltbX2V4cGFuZGVkXV0iCiAgICAgICAgaWNvbj0iZnVsbHNjcmVlbiIKICAgICAgICBvbi10YXA9Il90b2dnbGVFeHBhbmRlZCIKICAgICAgPjwvcGFwZXItaWNvbi1idXR0b24+CiAgICAgIDxwYXBlci1pY29uLWJ1dHRvbgogICAgICAgIHNlbGVjdGVkJD0iW1tfbG9nU2NhbGVBY3RpdmVdXSIKICAgICAgICBpY29uPSJsaW5lLXdlaWdodCIKICAgICAgICBvbi10YXA9Il90b2dnbGVMb2dTY2FsZSIKICAgICAgICB0aXRsZT0iVG9nZ2xlIHktYXhpcyBsb2cgc2NhbGUiCiAgICAgID48L3BhcGVyLWljb24tYnV0dG9uPgogICAgICA8cGFwZXItaWNvbi1idXR0b24KICAgICAgICBpY29uPSJzZXR0aW5ncy1vdmVyc2NhbiIKICAgICAgICBvbi10YXA9Il9yZXNldERvbWFpbiIKICAgICAgICB0aXRsZT0iRml0IGRvbWFpbiB0byBkYXRhIgogICAgICA+PC9wYXBlci1pY29uLWJ1dHRvbj4KICAgICAgPHNwYW4gc3R5bGU9ImZsZXgtZ3JvdzogMSI+PC9zcGFuPgogICAgICA8dGVtcGxhdGUgaXM9ImRvbS1pZiIgaWY9Iltbc2hvd0Rvd25sb2FkTGlua3NdXSI+CiAgICAgICAgPGRpdiBjbGFzcz0iZG93bmxvYWQtbGlua3MiPgogICAgICAgICAgPHBhcGVyLWRyb3Bkb3duLW1lbnUKICAgICAgICAgICAgbm8tbGFiZWwtZmxvYXQ9InRydWUiCiAgICAgICAgICAgIGxhYmVsPSJzZXJpZXMgdG8gZG93bmxvYWQiCiAgICAgICAgICAgIHNlbGVjdGVkLWl0ZW0tbGFiZWw9Int7X2RhdGFTZXJpZXNOYW1lVG9Eb3dubG9hZH19IgogICAgICAgICAgPgogICAgICAgICAgICA8cGFwZXItbGlzdGJveCBjbGFzcz0iZHJvcGRvd24tY29udGVudCIgc2xvdD0iZHJvcGRvd24tY29udGVudCI+CiAgICAgICAgICAgICAgPHRlbXBsYXRlCiAgICAgICAgICAgICAgICBpcz0iZG9tLXJlcGVhdCIKICAgICAgICAgICAgICAgIGl0ZW1zPSJbW19zZXJpZXNOYW1lc11dIgogICAgICAgICAgICAgICAgYXM9ImRhdGFTZXJpZXNOYW1lIgogICAgICAgICAgICAgID4KICAgICAgICAgICAgICAgIDxwYXBlci1pdGVtIG5vLWxhYmVsLWZsb2F0PSJ0cnVlIgogICAgICAgICAgICAgICAgICA+W1tkYXRhU2VyaWVzTmFtZV1dPC9wYXBlci1pdGVtCiAgICAgICAgICAgICAgICA+CiAgICAgICAgICAgICAgPC90ZW1wbGF0ZT4KICAgICAgICAgICAgPC9wYXBlci1saXN0Ym94PgogICAgICAgICAgPC9wYXBlci1kcm9wZG93bi1tZW51PgogICAgICAgICAgPGEKICAgICAgICAgICAgZG93bmxvYWQ9IltbX2RhdGFTZXJpZXNOYW1lVG9Eb3dubG9hZF1dLmNzdiIKICAgICAgICAgICAgaHJlZj0iW1tfY3N2VXJsKF9uYW1lVG9EYXRhU2VyaWVzLCBfZGF0YVNlcmllc05hbWVUb0Rvd25sb2FkKV1dIgogICAgICAgICAgICA+Q1NWPC9hCiAgICAgICAgICA+CiAgICAgICAgICA8YQogICAgICAgICAgICBkb3dubG9hZD0iW1tfZGF0YVNlcmllc05hbWVUb0Rvd25sb2FkXV0uanNvbiIKICAgICAgICAgICAgaHJlZj0iW1tfanNvblVybChfbmFtZVRvRGF0YVNlcmllcywgX2RhdGFTZXJpZXNOYW1lVG9Eb3dubG9hZCldXSIKICAgICAgICAgICAgPkpTT048L2EKICAgICAgICAgID4KICAgICAgICA8L2Rpdj4KICAgICAgPC90ZW1wbGF0ZT4KICAgIDwvZGl2PgogICAgPGRpdiBpZD0ibWF0Y2hlcy1jb250YWluZXIiPgogICAgICA8ZGl2IGlkPSJtYXRjaGVzLWxpc3QtdGl0bGUiPgogICAgICAgIDx0ZW1wbGF0ZSBpcz0iZG9tLWlmIiBpZj0iW1tfc2VyaWVzTmFtZXMubGVuZ3RoXV0iPgogICAgICAgICAgPHBhcGVyLWljb24tYnV0dG9uCiAgICAgICAgICAgIGljb249IltbX2dldFRvZ2dsZU1hdGNoZXNJY29uKF9tYXRjaGVzTGlzdE9wZW5lZCldXSIKICAgICAgICAgICAgb24tY2xpY2s9Il90b2dnbGVNYXRjaGVzT3BlbiIKICAgICAgICAgICAgY2xhc3M9InRvZ2dsZS1tYXRjaGVzLWJ1dHRvbiIKICAgICAgICAgID4KICAgICAgICAgIDwvcGFwZXItaWNvbi1idXR0b24+CiAgICAgICAgPC90ZW1wbGF0ZT4KCiAgICAgICAgPHNwYW4gY2xhc3M9Im1hdGNoZXMtdGV4dCI+IE1hdGNoZXMgKFtbX3Nlcmllc05hbWVzLmxlbmd0aF1dKSA8L3NwYW4+CiAgICAgIDwvZGl2PgogICAgICA8dGVtcGxhdGUgaXM9ImRvbS1pZiIgaWY9IltbX3Nlcmllc05hbWVzLmxlbmd0aF1dIj4KICAgICAgICA8aXJvbi1jb2xsYXBzZSBvcGVuZWQ9IltbX21hdGNoZXNMaXN0T3BlbmVkXV0iPgogICAgICAgICAgPGRpdiBpZD0ibWF0Y2hlcy1saXN0Ij4KICAgICAgICAgICAgPHRlbXBsYXRlCiAgICAgICAgICAgICAgaXM9ImRvbS1yZXBlYXQiCiAgICAgICAgICAgICAgaXRlbXM9IltbX3Nlcmllc05hbWVzXV0iCiAgICAgICAgICAgICAgYXM9InNlcmllc05hbWUiCiAgICAgICAgICAgICAgaWQ9Im1hdGNoLWxpc3QtcmVwZWF0IgogICAgICAgICAgICAgIG9uLWRvbS1jaGFuZ2U9Il9tYXRjaExpc3RFbnRyeUNvbG9yVXBkYXRlZCIKICAgICAgICAgICAgPgogICAgICAgICAgICAgIDxkaXYgY2xhc3M9Im1hdGNoLWxpc3QtZW50cnkiPgogICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9Im1hdGNoLWVudHJ5LXN5bWJvbCI+CiAgICAgICAgICAgICAgICAgIFtbX2RldGVybWluZVN5bWJvbChfbmFtZVRvRGF0YVNlcmllcywgc2VyaWVzTmFtZSldXQogICAgICAgICAgICAgICAgPC9zcGFuPgogICAgICAgICAgICAgICAgW1tzZXJpZXNOYW1lXV0KICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgPC90ZW1wbGF0ZT4KICAgICAgICAgIDwvZGl2PgogICAgICAgIDwvaXJvbi1jb2xsYXBzZT4KICAgICAgPC90ZW1wbGF0ZT4KICAgIDwvZGl2PgoKICAgIDxzdHlsZSBpbmNsdWRlPSJ0Zi1jdXN0b20tc2NhbGFyLWNhcmQtc3R5bGUiPjwvc3R5bGU+CiAgICA8c3R5bGU+CiAgICAgICNtYXRjaGVzLWxpc3QtdGl0bGUgewogICAgICAgIG1hcmdpbjogMTBweCAwIDVweCAwOwogICAgICB9CgogICAgICAjbWF0Y2hlcy1saXN0IHsKICAgICAgICBtYXgtaGVpZ2h0OiAyMDBweDsKICAgICAgICBvdmVyZmxvdy15OiBhdXRvOwogICAgICB9CgogICAgICAubWF0Y2gtbGlzdC1lbnRyeSB7CiAgICAgICAgbWFyZ2luOiAwIDAgNXB4IDA7CiAgICAgIH0KCiAgICAgIC5tYXRjaC1lbnRyeS1zeW1ib2wgewogICAgICAgIGZvbnQtZmFtaWx5OiBhcmlhbCwgc2Fucy1zZXJpZjsKICAgICAgICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7CiAgICAgICAgd2lkdGg6IDEwcHg7CiAgICAgIH0KCiAgICAgIC5tYXRjaGVzLXRleHQgewogICAgICAgIHZlcnRpY2FsLWFsaWduOiBtaWRkbGU7CiAgICAgIH0KICAgIDwvc3R5bGU+CiAgYCx0KFtvKHt0eXBlOkFycmF5fSksZSgiZGVzaWduOnR5cGUiLEFycmF5KV0sWl90LnByb3RvdHlwZSwicnVucyIsdm9pZCAwKSx0KFtvKHt0eXBlOlN0cmluZ30pLGUoImRlc2lnbjp0eXBlIixTdHJpbmcpXSxaX3QucHJvdG90eXBlLCJ4VHlwZSIsdm9pZCAwKSx0KFtvKHt0eXBlOkJvb2xlYW59KSxlKCJkZXNpZ246dHlwZSIsQm9vbGVhbildLFpfdC5wcm90b3R5cGUsImFjdGl2ZSIsdm9pZCAwKSx0KFtvKHt0eXBlOlN0cmluZ30pLGUoImRlc2lnbjp0eXBlIixTdHJpbmcpXSxaX3QucHJvdG90eXBlLCJ0aXRsZSIsdm9pZCAwKSx0KFtvKHt0eXBlOkFycmF5fSksZSgiZGVzaWduOnR5cGUiLEFycmF5KV0sWl90LnByb3RvdHlwZSwidGFnUmVnZXhlcyIsdm9pZCAwKSx0KFtvKHt0eXBlOkJvb2xlYW59KSxlKCJkZXNpZ246dHlwZSIsQm9vbGVhbildLFpfdC5wcm90b3R5cGUsImlnbm9yZVlPdXRsaWVycyIsdm9pZCAwKSx0KFtvKHt0eXBlOk9iamVjdH0pLGUoImRlc2lnbjp0eXBlIixocildLFpfdC5wcm90b3R5cGUsInJlcXVlc3RNYW5hZ2VyIix2b2lkIDApLHQoW28oe3R5cGU6Qm9vbGVhbn0pLGUoImRlc2lnbjp0eXBlIixCb29sZWFuKV0sWl90LnByb3RvdHlwZSwic2hvd0Rvd25sb2FkTGlua3MiLHZvaWQgMCksdChbbyh7dHlwZTpCb29sZWFufSksZSgiZGVzaWduOnR5cGUiLEJvb2xlYW4pXSxaX3QucHJvdG90eXBlLCJzbW9vdGhpbmdFbmFibGVkIix2b2lkIDApLHQoW28oe3R5cGU6TnVtYmVyfSksZSgiZGVzaWduOnR5cGUiLE51bWJlcildLFpfdC5wcm90b3R5cGUsInNtb290aGluZ1dlaWdodCIsdm9pZCAwKSx0KFtvKHt0eXBlOk9iamVjdH0pLGUoImRlc2lnbjp0eXBlIixPYmplY3QpXSxaX3QucHJvdG90eXBlLCJ0YWdNZXRhZGF0YSIsdm9pZCAwKSx0KFtvKHt0eXBlOlN0cmluZ30pLGUoImRlc2lnbjp0eXBlIixTdHJpbmcpXSxaX3QucHJvdG90eXBlLCJ0b29sdGlwU29ydGluZ01ldGhvZCIsdm9pZCAwKSx0KFtvKHt0eXBlOk9iamVjdH0pLGUoImRlc2lnbjp0eXBlIixXX3QpXSxaX3QucHJvdG90eXBlLCJfY29sb3JTY2FsZSIsdm9pZCAwKSx0KFtvKHt0eXBlOk9iamVjdH0pLGUoImRlc2lnbjp0eXBlIixPYmplY3QpXSxaX3QucHJvdG90eXBlLCJfbmFtZVRvRGF0YVNlcmllcyIsdm9pZCAwKSx0KFtvKHt0eXBlOkJvb2xlYW4scmVmbGVjdFRvQXR0cmlidXRlOiEwfSksZSgiZGVzaWduOnR5cGUiLEJvb2xlYW4pXSxaX3QucHJvdG90eXBlLCJfZXhwYW5kZWQiLHZvaWQgMCksdChbbyh7dHlwZTpCb29sZWFufSksZSgiZGVzaWduOnR5cGUiLEJvb2xlYW4pXSxaX3QucHJvdG90eXBlLCJfbG9nU2NhbGVBY3RpdmUiLHZvaWQgMCksdChbbyh7dHlwZTpPYmplY3R9KSxlKCJkZXNpZ246dHlwZSIsRnVuY3Rpb24pXSxaX3QucHJvdG90eXBlLCJfcmVxdWVzdERhdGEiLHZvaWQgMCksdChbbyh7dHlwZTpPYmplY3R9KSxlKCJkZXNpZ246dHlwZSIsT2JqZWN0KV0sWl90LnByb3RvdHlwZSwiX3J1blRvTmV4dEF2YWlsYWJsZVN5bWJvbEluZGV4Iix2b2lkIDApLHQoW28oe3R5cGU6Qm9vbGVhbn0pLGUoImRlc2lnbjp0eXBlIixCb29sZWFuKV0sWl90LnByb3RvdHlwZSwiX21hdGNoZXNMaXN0T3BlbmVkIix2b2lkIDApLHQoW2EoIl9uYW1lVG9EYXRhU2VyaWVzIiksZSgiZGVzaWduOnR5cGUiLEZ1bmN0aW9uKSxlKCJkZXNpZ246cGFyYW10eXBlcyIsW10pLGUoImRlc2lnbjpyZXR1cm50eXBlIix2b2lkIDApXSxaX3QucHJvdG90eXBlLCJfdXBkYXRlQ2hhcnQiLG51bGwpLHQoW3MoIl9uYW1lVG9EYXRhU2VyaWVzIiwicnVucyIpLGUoImRlc2lnbjp0eXBlIixPYmplY3QpLGUoImRlc2lnbjpwYXJhbXR5cGVzIixbXSldLFpfdC5wcm90b3R5cGUsIl9zZXJpZXNOYW1lcyIsbnVsbCksdChbYSgiX3RhZ0ZpbHRlciIpLGUoImRlc2lnbjp0eXBlIixGdW5jdGlvbiksZSgiZGVzaWduOnBhcmFtdHlwZXMiLFtdKSxlKCJkZXNpZ246cmV0dXJudHlwZSIsdm9pZCAwKV0sWl90LnByb3RvdHlwZSwiX3JlZnJlc2hEYXRhU2VyaWVzIixudWxsKSx0KFtzKCJ0YWdSZWdleGVzIiksZSgiZGVzaWduOnR5cGUiLFN0cmluZyksZSgiZGVzaWduOnBhcmFtdHlwZXMiLFtdKV0sWl90LnByb3RvdHlwZSwiX3RhZ0ZpbHRlciIsbnVsbCksdChbcygidGl0bGUiKSxlKCJkZXNpZ246dHlwZSIsU3RyaW5nKSxlKCJkZXNpZ246cGFyYW10eXBlcyIsW10pXSxaX3QucHJvdG90eXBlLCJfdGl0bGVEaXNwbGF5U3RyaW5nIixudWxsKSxaX3Q9dChbaSgidGYtY3VzdG9tLXNjYWxhci1tdWx0aS1saW5lLWNoYXJ0LWNhcmQiKV0sWl90KTtsZXQgSl90PWNsYXNzIGV4dGVuZHMgeWV7Y29uc3RydWN0b3IoKXtzdXBlciguLi5hcmd1bWVudHMpLHRoaXMuX3JlcXVlc3RNYW5hZ2VyPW5ldyBocig1MCksdGhpcy5fY2FuY2VsbGVyPW5ldyBFTyx0aGlzLl9zaG93RG93bmxvYWRMaW5rcz16cygiX3Nob3dEb3dubG9hZExpbmtzIix7ZGVmYXVsdFZhbHVlOiExLHVzZUxvY2FsU3RvcmFnZTohMH0pLmNhbGwodGhpcyksdGhpcy5fc21vb3RoaW5nV2VpZ2h0PVZzKCJfc21vb3RoaW5nV2VpZ2h0Iix7ZGVmYXVsdFZhbHVlOi42fSkuY2FsbCh0aGlzKSx0aGlzLl9pZ25vcmVZT3V0bGllcnM9enMoIl9pZ25vcmVZT3V0bGllcnMiLHtkZWZhdWx0VmFsdWU6ITAsdXNlTG9jYWxTdG9yYWdlOiEwfSkuY2FsbCh0aGlzKSx0aGlzLl94VHlwZT0ic3RlcCIsdGhpcy5fYWN0aXZlPSEwLHRoaXMucmVsb2FkT25SZWFkeT0hMCx0aGlzLl9zaG93RG93bmxvYWRMaW5rc09ic2VydmVyPURzKCJfc2hvd0Rvd25sb2FkTGlua3MiLHtkZWZhdWx0VmFsdWU6ITEsdXNlTG9jYWxTdG9yYWdlOiEwfSksdGhpcy5fc21vb3RoaW5nV2VpZ2h0T2JzZXJ2ZXI9anMoIl9zbW9vdGhpbmdXZWlnaHQiLHtkZWZhdWx0VmFsdWU6LjZ9KSx0aGlzLl9pZ25vcmVZT3V0bGllcnNPYnNlcnZlcj1EcygiX2lnbm9yZVlPdXRsaWVycyIse2RlZmF1bHRWYWx1ZTohMCx1c2VMb2NhbFN0b3JhZ2U6ITB9KX1yZWFkeSgpe3N1cGVyLnJlYWR5KCksdGhpcy5yZWxvYWRPblJlYWR5JiZ0aGlzLnJlbG9hZCgpfXJlbG9hZCgpe2NvbnN0IHQ9Z3IoKS5wbHVnaW5zTGlzdGluZygpLGU9dGhpcy5fY2FuY2VsbGVyLmNhbmNlbGxhYmxlKCh0PT57dC5jYW5jZWxsZWR8fCh0aGlzLnNldCgiX2RhdGFOb3RGb3VuZCIsIXQudmFsdWUuY3VzdG9tX3NjYWxhcnMpLHRoaXMuX2RhdGFOb3RGb3VuZHx8dGhpcy5fcmV0cmlldmVMYXlvdXRBbmREYXRhKCkpfSkpO3RoaXMuX3JlcXVlc3RNYW5hZ2VyLnJlcXVlc3QodCkudGhlbihlKX1fcmVsb2FkQ2hhcnRzKCl7dGhpcy5yb290LnF1ZXJ5U2VsZWN0b3JBbGwoInRmLWN1c3RvbS1zY2FsYXItbWFyZ2luLWNoYXJ0LWNhcmQsIHRmLWN1c3RvbS1zY2FsYXItbXVsdGktbGluZS1jaGFydC1jYXJkIikuZm9yRWFjaCgodD0+e3QucmVsb2FkKCl9KSl9X3JldHJpZXZlTGF5b3V0QW5kRGF0YSgpe2NvbnN0IHQ9Z3IoKS5wbHVnaW5Sb3V0ZSgiY3VzdG9tX3NjYWxhcnMiLCIvbGF5b3V0IiksZT10aGlzLl9jYW5jZWxsZXIuY2FuY2VsbGFibGUoKHQ9Pnt0LmNhbmNlbGxlZHx8KHRoaXMuc2V0KCJfbGF5b3V0Iix0LnZhbHVlKSx0aGlzLl9kYXRhTm90Rm91bmR8fHRoaXMuX3JlbG9hZENoYXJ0cygpKX0pKTt0aGlzLl9yZXF1ZXN0TWFuYWdlci5yZXF1ZXN0KHQpLnRoZW4oZSl9Z2V0IF9zbW9vdGhpbmdFbmFibGVkKCl7cmV0dXJuIHRoaXMuX3Ntb290aGluZ1dlaWdodD4wfWdldCBfY2F0ZWdvcmllcygpe3ZhciB0PXRoaXMuX2xheW91dDtpZighdC5jYXRlZ29yeSlyZXR1cm5bXTtsZXQgZT0hMTtyZXR1cm4gdGhpcy5fb3BlbmVkQ2F0ZWdvcmllc3x8KGU9ITAsdGhpcy5fb3BlbmVkQ2F0ZWdvcmllcz17fSksdC5jYXRlZ29yeS5tYXAoKHQ9PihlJiYhdC5jbG9zZWQmJih0aGlzLl9vcGVuZWRDYXRlZ29yaWVzW3QudGl0bGVdPSEwKSx7bmFtZTp0LnRpdGxlLGl0ZW1zOnQuY2hhcnQsbWV0YWRhdGE6e3R5cGU6dnIuUFJFRklYX0dST1VQLG9wZW5lZDohIXRoaXMuX29wZW5lZENhdGVnb3JpZXNbdC50aXRsZV19fSkpKX1fY2F0ZWdvcnlPcGVuZWRUb2dnbGVkKHQpe2NvbnN0IGU9dC50YXJnZXQ7ZS5vcGVuZWQ/dGhpcy5fb3BlbmVkQ2F0ZWdvcmllc1tlLmNhdGVnb3J5Lm5hbWVdPSEwOmRlbGV0ZSB0aGlzLl9vcGVuZWRDYXRlZ29yaWVzW2UuY2F0ZWdvcnkubmFtZV19fTtKX3QudGVtcGxhdGU9X2VgCiAgICA8dGYtZGFzaGJvYXJkLWxheW91dD4KICAgICAgPGRpdiBjbGFzcz0ic2lkZWJhciIgc2xvdD0ic2lkZWJhciI+CiAgICAgICAgPGRpdiBjbGFzcz0ic2V0dGluZ3MiPgogICAgICAgICAgPGRpdiBjbGFzcz0ic2lkZWJhci1zZWN0aW9uIj4KICAgICAgICAgICAgPGRpdiBjbGFzcz0ibGluZS1pdGVtIj4KICAgICAgICAgICAgICA8cGFwZXItY2hlY2tib3ggY2hlY2tlZD0ie3tfc2hvd0Rvd25sb2FkTGlua3N9fSIKICAgICAgICAgICAgICAgID5TaG93IGRhdGEgZG93bmxvYWQgbGlua3M8L3BhcGVyLWNoZWNrYm94CiAgICAgICAgICAgICAgPgogICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgPGRpdiBjbGFzcz0ibGluZS1pdGVtIj4KICAgICAgICAgICAgICA8cGFwZXItY2hlY2tib3ggY2hlY2tlZD0ie3tfaWdub3JlWU91dGxpZXJzfX0iCiAgICAgICAgICAgICAgICA+SWdub3JlIG91dGxpZXJzIGluIGNoYXJ0IHNjYWxpbmc8L3BhcGVyLWNoZWNrYm94CiAgICAgICAgICAgICAgPgogICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgPGRpdiBpZD0idG9vbHRpcC1zb3J0aW5nIj4KICAgICAgICAgICAgICA8ZGl2IGlkPSJ0b29sdGlwLXNvcnRpbmctbGFiZWwiPlRvb2x0aXAgc29ydGluZyBtZXRob2Q6PC9kaXY+CiAgICAgICAgICAgICAgPHBhcGVyLWRyb3Bkb3duLW1lbnUKICAgICAgICAgICAgICAgIG5vLWxhYmVsLWZsb2F0PSIiCiAgICAgICAgICAgICAgICBzZWxlY3RlZC1pdGVtLWxhYmVsPSJ7e190b29sdGlwU29ydGluZ01ldGhvZH19IgogICAgICAgICAgICAgID4KICAgICAgICAgICAgICAgIDxwYXBlci1saXN0Ym94CiAgICAgICAgICAgICAgICAgIGNsYXNzPSJkcm9wZG93bi1jb250ZW50IgogICAgICAgICAgICAgICAgICBzZWxlY3RlZD0iMCIKICAgICAgICAgICAgICAgICAgc2xvdD0iZHJvcGRvd24tY29udGVudCIKICAgICAgICAgICAgICAgID4KICAgICAgICAgICAgICAgICAgPHBhcGVyLWl0ZW0+ZGVmYXVsdDwvcGFwZXItaXRlbT4KICAgICAgICAgICAgICAgICAgPHBhcGVyLWl0ZW0+ZGVzY2VuZGluZzwvcGFwZXItaXRlbT4KICAgICAgICAgICAgICAgICAgPHBhcGVyLWl0ZW0+YXNjZW5kaW5nPC9wYXBlci1pdGVtPgogICAgICAgICAgICAgICAgICA8cGFwZXItaXRlbT5uZWFyZXN0PC9wYXBlci1pdGVtPgogICAgICAgICAgICAgICAgPC9wYXBlci1saXN0Ym94PgogICAgICAgICAgICAgIDwvcGFwZXItZHJvcGRvd24tbWVudT4KICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICA8L2Rpdj4KICAgICAgICAgIDxkaXYgY2xhc3M9InNpZGViYXItc2VjdGlvbiI+CiAgICAgICAgICAgIDx0Zi1zbW9vdGhpbmctaW5wdXQKICAgICAgICAgICAgICB3ZWlnaHQ9Int7X3Ntb290aGluZ1dlaWdodH19IgogICAgICAgICAgICAgIHN0ZXA9IjAuMDAxIgogICAgICAgICAgICAgIG1pbj0iMCIKICAgICAgICAgICAgICBtYXg9IjEiCiAgICAgICAgICAgID48L3RmLXNtb290aGluZy1pbnB1dD4KICAgICAgICAgIDwvZGl2PgogICAgICAgICAgPGRpdiBjbGFzcz0ic2lkZWJhci1zZWN0aW9uIj4KICAgICAgICAgICAgPHRmLW9wdGlvbi1zZWxlY3RvcgogICAgICAgICAgICAgIGlkPSJ4LXR5cGUtc2VsZWN0b3IiCiAgICAgICAgICAgICAgbmFtZT0iSG9yaXpvbnRhbCBBeGlzIgogICAgICAgICAgICAgIHNlbGVjdGVkLWlkPSJ7e194VHlwZX19IgogICAgICAgICAgICA+CiAgICAgICAgICAgICAgPHBhcGVyLWJ1dHRvbiBpZD0ic3RlcCI+c3RlcDwvcGFwZXItYnV0dG9uCiAgICAgICAgICAgICAgPjwhLS0KICAgICAgICAgICAgLS0+PHBhcGVyLWJ1dHRvbiBpZD0icmVsYXRpdmUiPnJlbGF0aXZlPC9wYXBlci1idXR0b24KICAgICAgICAgICAgICA+PCEtLQogICAgICAgICAgICAtLT48cGFwZXItYnV0dG9uIGlkPSJ3YWxsX3RpbWUiPndhbGw8L3BhcGVyLWJ1dHRvbj4KICAgICAgICAgICAgPC90Zi1vcHRpb24tc2VsZWN0b3I+CiAgICAgICAgICA8L2Rpdj4KICAgICAgICA8L2Rpdj4KICAgICAgICA8ZGl2IGNsYXNzPSJzaWRlYmFyLXNlY3Rpb24gcnVucy1zZWxlY3RvciI+CiAgICAgICAgICA8dGYtcnVucy1zZWxlY3RvciBzZWxlY3RlZC1ydW5zPSJ7e19zZWxlY3RlZFJ1bnN9fSI+CiAgICAgICAgICA8L3RmLXJ1bnMtc2VsZWN0b3I+CiAgICAgICAgPC9kaXY+CiAgICAgIDwvZGl2PgogICAgICA8ZGl2IGNsYXNzPSJjZW50ZXIiIHNsb3Q9ImNlbnRlciIgaWQ9ImNhdGVnb3JpZXMtY29udGFpbmVyIj4KICAgICAgICA8dGVtcGxhdGUgaXM9ImRvbS1pZiIgaWY9IltbX2RhdGFOb3RGb3VuZF1dIj4KICAgICAgICAgIDxkaXYgY2xhc3M9Im5vLWRhdGEtd2FybmluZyI+CiAgICAgICAgICAgIDxoMz5UaGUgY3VzdG9tIHNjYWxhcnMgZGFzaGJvYXJkIGlzIGluYWN0aXZlLjwvaDM+CiAgICAgICAgICAgIDxwPlByb2JhYmxlIGNhdXNlczo8L3A+CiAgICAgICAgICAgIDxvbD4KICAgICAgICAgICAgICA8bGk+WW91IGhhdmVuJ3QgbGFpZCBvdXQgdGhlIGRhc2hib2FyZC48L2xpPgogICAgICAgICAgICAgIDxsaT5Zb3UgaGF2ZW7igJl0IHdyaXR0ZW4gYW55IHNjYWxhciBkYXRhIHRvIHlvdXIgZXZlbnQgZmlsZXMuPC9saT4KICAgICAgICAgICAgPC9vbD4KCiAgICAgICAgICAgIDxwPgogICAgICAgICAgICAgIFRvIGxheSBvdXQgdGhlIGRhc2hib2FyZCwgcGFzcyBhIDxjb2RlPkxheW91dDwvY29kZT4gcHJvdG9idWZmZXIKICAgICAgICAgICAgICB0byB0aGUgPGNvZGU+c2V0X2xheW91dDwvY29kZT4gbWV0aG9kLiBGb3IgZXhhbXBsZSwKICAgICAgICAgICAgPC9wPgogICAgICAgICAgICA8cHJlPgpmcm9tIHRlbnNvcmJvYXJkIGltcG9ydCBzdW1tYXJ5CmZyb20gdGVuc29yYm9hcmQucGx1Z2lucy5jdXN0b21fc2NhbGFyIGltcG9ydCBsYXlvdXRfcGIyCi4uLgojIFRoaXMgYWN0aW9uIGRvZXMgbm90IGhhdmUgdG8gYmUgcGVyZm9ybWVkIGF0IGV2ZXJ5IHN0ZXAsIHNvIHRoZSBhY3Rpb24gaXMgbm90CiMgdGFrZW4gY2FyZSBvZiBieSBhbiBvcCBpbiB0aGUgZ3JhcGguIFdlIG9ubHkgbmVlZCB0byBzcGVjaWZ5IHRoZSBsYXlvdXQgb25jZQojIChpbnN0ZWFkIG9mIHBlciBzdGVwKS4KbGF5b3V0X3N1bW1hcnkgPSBzdW1tYXJ5X2xpYi5jdXN0b21fc2NhbGFyX3BiKGxheW91dF9wYjIuTGF5b3V0KAogIGNhdGVnb3J5PVsKICAgIGxheW91dF9wYjIuQ2F0ZWdvcnkoCiAgICAgIHRpdGxlPSdsb3NzZXMnLAogICAgICBjaGFydD1bCiAgICAgICAgICBsYXlvdXRfcGIyLkNoYXJ0KAogICAgICAgICAgICAgIHRpdGxlPSdsb3NzZXMnLAogICAgICAgICAgICAgIG11bHRpbGluZT1sYXlvdXRfcGIyLk11bHRpbGluZUNoYXJ0Q29udGVudCgKICAgICAgICAgICAgICAgIHRhZz1bcidsb3NzLionXSwKICAgICAgICAgICAgICApKSwKICAgICAgICAgIGxheW91dF9wYjIuQ2hhcnQoCiAgICAgICAgICAgICAgdGl0bGU9J2JheicsCiAgICAgICAgICAgICAgbWFyZ2luPWxheW91dF9wYjIuTWFyZ2luQ2hhcnRDb250ZW50KAogICAgICAgICAgICAgICAgc2VyaWVzPVsKICAgICAgICAgICAgICAgICAgbGF5b3V0X3BiMi5NYXJnaW5DaGFydENvbnRlbnQuU2VyaWVzKAogICAgICAgICAgICAgICAgICAgIHZhbHVlPSdsb3NzL2Jhei9zY2FsYXJfc3VtbWFyeScsCiAgICAgICAgICAgICAgICAgICAgbG93ZXI9J2Jhel9sb3dlci9iYXovc2NhbGFyX3N1bW1hcnknLAogICAgICAgICAgICAgICAgICAgIHVwcGVyPSdiYXpfdXBwZXIvYmF6L3NjYWxhcl9zdW1tYXJ5JyksCiAgICAgICAgICAgICAgICBdLAogICAgICAgICAgICAgICkpLAogICAgICBdKSwKICAgIGxheW91dF9wYjIuQ2F0ZWdvcnkoCiAgICAgIHRpdGxlPSd0cmlnIGZ1bmN0aW9ucycsCiAgICAgIGNoYXJ0PVsKICAgICAgICAgIGxheW91dF9wYjIuQ2hhcnQoCiAgICAgICAgICAgICAgdGl0bGU9J3dhdmUgdHJpZyBmdW5jdGlvbnMnLAogICAgICAgICAgICAgIG11bHRpbGluZT1sYXlvdXRfcGIyLk11bHRpbGluZUNoYXJ0Q29udGVudCgKICAgICAgICAgICAgICAgIHRhZz1bcid0cmlnRnVuY3Rpb25zL2Nvc2luZScsIHIndHJpZ0Z1bmN0aW9ucy9zaW5lJ10sCiAgICAgICAgICAgICAgKSksCiAgICAgICAgICAjIFRoZSByYW5nZSBvZiB0YW5nZW50IGlzIGRpZmZlcmVudC4gTGV0J3MgZ2l2ZSBpdCBpdHMgb3duIGNoYXJ0LgogICAgICAgICAgbGF5b3V0X3BiMi5DaGFydCgKICAgICAgICAgICAgICB0aXRsZT0ndGFuJywKICAgICAgICAgICAgICBtdWx0aWxpbmU9bGF5b3V0X3BiMi5NdWx0aWxpbmVDaGFydENvbnRlbnQoCiAgICAgICAgICAgICAgICB0YWc9W3IndHJpZ0Z1bmN0aW9ucy90YW5nZW50J10sCiAgICAgICAgICAgICAgKSksCiAgICAgIF0sCiAgICAgICMgVGhpcyBjYXRlZ29yeSB3ZSBjYXJlIGxlc3MgYWJvdXQuIExldCdzIG1ha2UgaXQgaW5pdGlhbGx5IGNsb3NlZC4KICAgICAgY2xvc2VkPVRydWUpLAogIF0pKQp3cml0ZXIuYWRkX3N1bW1hcnkobGF5b3V0X3N1bW1hcnkpCjwvcHJlCiAgICAgICAgICAgID4KICAgICAgICAgICAgPHA+CiAgICAgICAgICAgICAgSWYgeW914oCZcmUgbmV3IHRvIHVzaW5nIFRlbnNvckJvYXJkLCBhbmQgd2FudCB0byBmaW5kIG91dCBob3cgdG8KICAgICAgICAgICAgICBhZGQgZGF0YSBhbmQgc2V0IHVwIHlvdXIgZXZlbnQgZmlsZXMsIGNoZWNrIG91dCB0aGUKICAgICAgICAgICAgICA8YQogICAgICAgICAgICAgICAgaHJlZj0iaHR0cHM6Ly9naXRodWIuY29tL3RlbnNvcmZsb3cvdGVuc29yYm9hcmQvYmxvYi9tYXN0ZXIvUkVBRE1FLm1kIgogICAgICAgICAgICAgICAgPlJFQURNRTwvYQogICAgICAgICAgICAgID4KICAgICAgICAgICAgICBhbmQgcGVyaGFwcyB0aGUKICAgICAgICAgICAgICA8YQogICAgICAgICAgICAgICAgaHJlZj0iaHR0cHM6Ly93d3cudGVuc29yZmxvdy5vcmcvZ2V0X3N0YXJ0ZWQvc3VtbWFyaWVzX2FuZF90ZW5zb3Jib2FyZCIKICAgICAgICAgICAgICAgID5UZW5zb3JCb2FyZCB0dXRvcmlhbDwvYQogICAgICAgICAgICAgID4uCiAgICAgICAgICAgIDwvcD4KICAgICAgICAgIDwvZGl2PgogICAgICAgIDwvdGVtcGxhdGU+CiAgICAgICAgPHRlbXBsYXRlIGlzPSJkb20taWYiIGlmPSJbWyFfZGF0YU5vdEZvdW5kXV0iPgogICAgICAgICAgPHRlbXBsYXRlIGlzPSJkb20tcmVwZWF0IiBpdGVtcz0iW1tfY2F0ZWdvcmllc11dIiBhcz0iY2F0ZWdvcnkiPgogICAgICAgICAgICA8dGYtY2F0ZWdvcnktcGFnaW5hdGVkLXZpZXcKICAgICAgICAgICAgICBhcz0iY2hhcnQiCiAgICAgICAgICAgICAgY2F0ZWdvcnk9IltbY2F0ZWdvcnldXSIKICAgICAgICAgICAgICBkaXNhYmxlLXBhZ2luYXRpb24KICAgICAgICAgICAgICBpbml0aWFsLW9wZW5lZD0iW1tjYXRlZ29yeS5tZXRhZGF0YS5vcGVuZWRdXSIKICAgICAgICAgICAgPgogICAgICAgICAgICAgIDx0ZW1wbGF0ZT4KICAgICAgICAgICAgICAgIDx0ZW1wbGF0ZSBpcz0iZG9tLWlmIiBpZj0iW1tjaGFydC5tdWx0aWxpbmVdXSI+CiAgICAgICAgICAgICAgICAgIDx0Zi1jdXN0b20tc2NhbGFyLW11bHRpLWxpbmUtY2hhcnQtY2FyZAogICAgICAgICAgICAgICAgICAgIGFjdGl2ZT0iW1thY3RpdmVdXSIKICAgICAgICAgICAgICAgICAgICByZXF1ZXN0LW1hbmFnZXI9IltbX3JlcXVlc3RNYW5hZ2VyXV0iCiAgICAgICAgICAgICAgICAgICAgcnVucz0iW1tfc2VsZWN0ZWRSdW5zXV0iCiAgICAgICAgICAgICAgICAgICAgdGl0bGU9IltbY2hhcnQudGl0bGVdXSIKICAgICAgICAgICAgICAgICAgICB4LXR5cGU9IltbX3hUeXBlXV0iCiAgICAgICAgICAgICAgICAgICAgc21vb3RoaW5nLWVuYWJsZWQ9IltbX3Ntb290aGluZ0VuYWJsZWRdXSIKICAgICAgICAgICAgICAgICAgICBzbW9vdGhpbmctd2VpZ2h0PSJbW19zbW9vdGhpbmdXZWlnaHRdXSIKICAgICAgICAgICAgICAgICAgICB0b29sdGlwLXNvcnRpbmctbWV0aG9kPSJbW3Rvb2x0aXBTb3J0aW5nTWV0aG9kXV0iCiAgICAgICAgICAgICAgICAgICAgaWdub3JlLXktb3V0bGllcnM9IltbX2lnbm9yZVlPdXRsaWVyc11dIgogICAgICAgICAgICAgICAgICAgIHNob3ctZG93bmxvYWQtbGlua3M9IltbX3Nob3dEb3dubG9hZExpbmtzXV0iCiAgICAgICAgICAgICAgICAgICAgdGFnLXJlZ2V4ZXM9IltbY2hhcnQubXVsdGlsaW5lLnRhZ11dIgogICAgICAgICAgICAgICAgICA+PC90Zi1jdXN0b20tc2NhbGFyLW11bHRpLWxpbmUtY2hhcnQtY2FyZD4KICAgICAgICAgICAgICAgIDwvdGVtcGxhdGU+CiAgICAgICAgICAgICAgICA8dGVtcGxhdGUgaXM9ImRvbS1pZiIgaWY9IltbY2hhcnQubWFyZ2luXV0iPgogICAgICAgICAgICAgICAgICA8dGYtY3VzdG9tLXNjYWxhci1tYXJnaW4tY2hhcnQtY2FyZAogICAgICAgICAgICAgICAgICAgIGFjdGl2ZT0iW1thY3RpdmVdXSIKICAgICAgICAgICAgICAgICAgICByZXF1ZXN0LW1hbmFnZXI9IltbX3JlcXVlc3RNYW5hZ2VyXV0iCiAgICAgICAgICAgICAgICAgICAgcnVucz0iW1tfc2VsZWN0ZWRSdW5zXV0iCiAgICAgICAgICAgICAgICAgICAgdGl0bGU9IltbY2hhcnQudGl0bGVdXSIKICAgICAgICAgICAgICAgICAgICB4LXR5cGU9IltbX3hUeXBlXV0iCiAgICAgICAgICAgICAgICAgICAgdG9vbHRpcC1zb3J0aW5nLW1ldGhvZD0iW1t0b29sdGlwU29ydGluZ01ldGhvZF1dIgogICAgICAgICAgICAgICAgICAgIGlnbm9yZS15LW91dGxpZXJzPSJbW19pZ25vcmVZT3V0bGllcnNdXSIKICAgICAgICAgICAgICAgICAgICBzaG93LWRvd25sb2FkLWxpbmtzPSJbW19zaG93RG93bmxvYWRMaW5rc11dIgogICAgICAgICAgICAgICAgICAgIG1hcmdpbi1jaGFydC1zZXJpZXM9IltbY2hhcnQubWFyZ2luLnNlcmllc11dIgogICAgICAgICAgICAgICAgICA+PC90Zi1jdXN0b20tc2NhbGFyLW1hcmdpbi1jaGFydC1jYXJkPgogICAgICAgICAgICAgICAgPC90ZW1wbGF0ZT4KICAgICAgICAgICAgICA8L3RlbXBsYXRlPgogICAgICAgICAgICA8L3RmLWNhdGVnb3J5LXBhZ2luYXRlZC12aWV3PgogICAgICAgICAgPC90ZW1wbGF0ZT4KICAgICAgICA8L3RlbXBsYXRlPgogICAgICA8L2Rpdj4KICAgIDwvdGYtZGFzaGJvYXJkLWxheW91dD4KCiAgICA8c3R5bGUgaW5jbHVkZT0iZGFzaGJvYXJkLXN0eWxlIj48L3N0eWxlPgogICAgPHN0eWxlPgogICAgICAjdG9vbHRpcC1zb3J0aW5nIHsKICAgICAgICBhbGlnbi1pdGVtczogY2VudGVyOwogICAgICAgIGRpc3BsYXk6IGZsZXg7CiAgICAgICAgZm9udC1zaXplOiAxNHB4OwogICAgICAgIG1hcmdpbi10b3A6IDE1cHg7CiAgICAgIH0KICAgICAgI3Rvb2x0aXAtc29ydGluZyBwYXBlci1kcm9wZG93bi1tZW51IHsKICAgICAgICBtYXJnaW4tbGVmdDogMTBweDsKICAgICAgICAtLXBhcGVyLWlucHV0LWNvbnRhaW5lci1mb2N1cy1jb2xvcjogdmFyKC0tdGItb3JhbmdlLXN0cm9uZyk7CiAgICAgICAgd2lkdGg6IDEwNXB4OwogICAgICB9CiAgICAgIC5saW5lLWl0ZW0gewogICAgICAgIGRpc3BsYXk6IGJsb2NrOwogICAgICAgIHBhZGRpbmctdG9wOiA1cHg7CiAgICAgIH0KICAgICAgLm5vLWRhdGEtd2FybmluZyB7CiAgICAgICAgbWF4LXdpZHRoOiA1NDBweDsKICAgICAgICBtYXJnaW46IDgwcHggYXV0byAwIGF1dG87CiAgICAgIH0KICAgIDwvc3R5bGU+CiAgYCx0KFtvKHt0eXBlOk9iamVjdH0pLGUoImRlc2lnbjp0eXBlIixocildLEpfdC5wcm90b3R5cGUsIl9yZXF1ZXN0TWFuYWdlciIsdm9pZCAwKSx0KFtvKHt0eXBlOk9iamVjdH0pLGUoImRlc2lnbjp0eXBlIixFTyldLEpfdC5wcm90b3R5cGUsIl9jYW5jZWxsZXIiLHZvaWQgMCksdChbbyh7dHlwZTpBcnJheX0pLGUoImRlc2lnbjp0eXBlIixBcnJheSldLEpfdC5wcm90b3R5cGUsIl9zZWxlY3RlZFJ1bnMiLHZvaWQgMCksdChbbyh7dHlwZTpCb29sZWFuLG5vdGlmeTohMCxvYnNlcnZlcjoiX3Nob3dEb3dubG9hZExpbmtzT2JzZXJ2ZXIifSksZSgiZGVzaWduOnR5cGUiLEJvb2xlYW4pXSxKX3QucHJvdG90eXBlLCJfc2hvd0Rvd25sb2FkTGlua3MiLHZvaWQgMCksdChbbyh7dHlwZTpOdW1iZXIsbm90aWZ5OiEwLG9ic2VydmVyOiJfc21vb3RoaW5nV2VpZ2h0T2JzZXJ2ZXIifSksZSgiZGVzaWduOnR5cGUiLE51bWJlcildLEpfdC5wcm90b3R5cGUsIl9zbW9vdGhpbmdXZWlnaHQiLHZvaWQgMCksdChbbyh7dHlwZTpCb29sZWFuLG9ic2VydmVyOiJfaWdub3JlWU91dGxpZXJzT2JzZXJ2ZXIifSksZSgiZGVzaWduOnR5cGUiLEJvb2xlYW4pXSxKX3QucHJvdG90eXBlLCJfaWdub3JlWU91dGxpZXJzIix2b2lkIDApLHQoW28oe3R5cGU6U3RyaW5nfSksZSgiZGVzaWduOnR5cGUiLFN0cmluZyldLEpfdC5wcm90b3R5cGUsIl94VHlwZSIsdm9pZCAwKSx0KFtvKHt0eXBlOk9iamVjdH0pLGUoImRlc2lnbjp0eXBlIixPYmplY3QpXSxKX3QucHJvdG90eXBlLCJfbGF5b3V0Iix2b2lkIDApLHQoW28oe3R5cGU6Qm9vbGVhbn0pLGUoImRlc2lnbjp0eXBlIixCb29sZWFuKV0sSl90LnByb3RvdHlwZSwiX2RhdGFOb3RGb3VuZCIsdm9pZCAwKSx0KFtvKHt0eXBlOk9iamVjdH0pLGUoImRlc2lnbjp0eXBlIixPYmplY3QpXSxKX3QucHJvdG90eXBlLCJfb3BlbmVkQ2F0ZWdvcmllcyIsdm9pZCAwKSx0KFtvKHt0eXBlOkJvb2xlYW59KSxlKCJkZXNpZ246dHlwZSIsQm9vbGVhbildLEpfdC5wcm90b3R5cGUsIl9hY3RpdmUiLHZvaWQgMCksdChbbyh7dHlwZTpCb29sZWFufSksZSgiZGVzaWduOnR5cGUiLEJvb2xlYW4pXSxKX3QucHJvdG90eXBlLCJyZWxvYWRPblJlYWR5Iix2b2lkIDApLHQoW3MoIl9zbW9vdGhpbmdXZWlnaHQiKSxlKCJkZXNpZ246dHlwZSIsQm9vbGVhbiksZSgiZGVzaWduOnBhcmFtdHlwZXMiLFtdKV0sSl90LnByb3RvdHlwZSwiX3Ntb290aGluZ0VuYWJsZWQiLG51bGwpLHQoW3MoIl9sYXlvdXQiKSxlKCJkZXNpZ246dHlwZSIsQXJyYXkpLGUoImRlc2lnbjpwYXJhbXR5cGVzIixbXSldLEpfdC5wcm90b3R5cGUsIl9jYXRlZ29yaWVzIixudWxsKSxKX3Q9dChbaSgidGYtY3VzdG9tLXNjYWxhci1kYXNoYm9hcmQiKV0sSl90KTtjbGFzcyBRX3R7Y29uc3RydWN0b3IodCxlKXt0aGlzLnJ1bjJkYXRhc2V0cz17fSx0aGlzLmNvbG9yU2NhbGU9ZSx0aGlzLmJ1aWxkQ2hhcnQodCl9Z2V0RGF0YXNldCh0KXtyZXR1cm4gdm9pZCAwPT09dGhpcy5ydW4yZGF0YXNldHNbdF0mJih0aGlzLnJ1bjJkYXRhc2V0c1t0XT1uZXcgVWd0LkRhdGFzZXQoW10se3J1bjp0fSkpLHRoaXMucnVuMmRhdGFzZXRzW3RdfWJ1aWxkQ2hhcnQodCl7dGhpcy5vdXRlciYmdGhpcy5vdXRlci5kZXN0cm95KCk7bGV0IGU9Smd0KHQpO3RoaXMueEFjY2Vzc29yPWUuYWNjZXNzb3IsdGhpcy54U2NhbGU9ZS5zY2FsZSx0aGlzLnhBeGlzPWUuYXhpcyx0aGlzLnhBeGlzLm1hcmdpbigwKSx0aGlzLnhBeGlzLnRpY2tMYWJlbFBhZGRpbmcoMyksdGhpcy55U2NhbGU9bmV3IFVndC5TY2FsZXMuTGluZWFyLHRoaXMueUF4aXM9bmV3IFVndC5BeGVzLk51bWVyaWModGhpcy55U2NhbGUsImxlZnQiKTtsZXQgbj1xZ3QoMyk7dGhpcy55QXhpcy5tYXJnaW4oMCkudGlja0xhYmVsUGFkZGluZyg1KS5mb3JtYXR0ZXIobiksdGhpcy55QXhpcy51c2VzVGV4dFdpZHRoQXBwcm94aW1hdGlvbighMCk7bGV0IGk9dGhpcy5idWlsZFBsb3QodGhpcy54QWNjZXNzb3IsdGhpcy54U2NhbGUsdGhpcy55U2NhbGUpO3RoaXMuZ3JpZGxpbmVzPW5ldyBVZ3QuQ29tcG9uZW50cy5HcmlkbGluZXModGhpcy54U2NhbGUsdGhpcy55U2NhbGUpLHRoaXMuY2VudGVyPW5ldyBVZ3QuQ29tcG9uZW50cy5Hcm91cChbdGhpcy5ncmlkbGluZXMsaV0pLHRoaXMub3V0ZXI9bmV3IFVndC5Db21wb25lbnRzLlRhYmxlKFtbdGhpcy55QXhpcyx0aGlzLmNlbnRlcl0sW251bGwsdGhpcy54QXhpc11dKX1idWlsZFBsb3QodCxlLG4pe2xldCBpPVswLDIyOCwxNTg3LDMwODUsNWUzLDY5MTUsODQxMyw5NzcyLDFlNF0scj13ZS5yYW5nZShpLmxlbmd0aC0xKS5tYXAoKHQ9PihpW3QrMV0taVt0XSkvMjUwMCkpLG89aS5tYXAoKCh0LGUpPT50PT50W2VdWzFdKSksYT1vWzRdLHM9d2UucmFuZ2Uoby5sZW5ndGgtMSkubWFwKChpPT57bGV0IGE9bmV3IFVndC5QbG90cy5BcmVhO2EueCh0LGUpO2xldCBzPWk+ND9vW2ldOm9baSsxXTtyZXR1cm4gYS55KGk+ND9vW2krMV06b1tpXSxuKSxhLnkwKHMpLGEuYXR0cigiZmlsbCIsKCh0LGUsbik9PnRoaXMuY29sb3JTY2FsZS5zY2FsZShuLm1ldGFkYXRhKCkucnVuKSkpLGEuYXR0cigic3Ryb2tlIiwoKHQsZSxuKT0+dGhpcy5jb2xvclNjYWxlLnNjYWxlKG4ubWV0YWRhdGEoKS5ydW4pKSksYS5hdHRyKCJzdHJva2Utd2VpZ2h0IiwoKHQsZSxuKT0+IjAuNXB4IikpLGEuYXR0cigic3Ryb2tlLW9wYWNpdHkiLCgoKT0+cltpXSkpLGEuYXR0cigiZmlsbC1vcGFjaXR5IiwoKCk9PnJbaV0pKSxhfSkpLGw9bmV3IFVndC5QbG90cy5MaW5lO3JldHVybiBsLngodCxlKSxsLnkoYSxuKSxsLmF0dHIoInN0cm9rZSIsKCh0LGUsbik9PnRoaXMuY29sb3JTY2FsZS5zY2FsZShuLnJ1bikpKSx0aGlzLnBsb3RzPXMsbmV3IFVndC5Db21wb25lbnRzLkdyb3VwKHMpfXNldFZpc2libGVTZXJpZXModCl7dGhpcy5ydW5zPXQ7bGV0IGU9dC5tYXAoKHQ9PnRoaXMuZ2V0RGF0YXNldCh0KSkpO3RoaXMucGxvdHMuZm9yRWFjaCgodD0+dC5kYXRhc2V0cyhlKSkpfXNldFNlcmllc0RhdGEodCxlKXt0aGlzLmdldERhdGFzZXQodCkuZGF0YShlKX1yZW5kZXJUbyh0KXt0aGlzLnRhcmdldFNWRz10LHRoaXMub3V0ZXIucmVuZGVyVG8odCl9cmVkcmF3KCl7dGhpcy5vdXRlci5yZWRyYXcoKX1kZXN0cm95KCl7dGhpcy5vdXRlci5kZXN0cm95KCl9fWxldCB0eXQ9Y2xhc3MgZXh0ZW5kcyh0cih5ZSkpe2NvbnN0cnVjdG9yKCl7c3VwZXIoLi4uYXJndW1lbnRzKSx0aGlzLmNvbG9yU2NhbGU9KG5ldyBVZ3QuU2NhbGVzLkNvbG9yKS5yYW5nZShZQS5zbGljZSgpKSx0aGlzLnhUeXBlPSJzdGVwIix0aGlzLl92aXNpYmxlU2VyaWVzQ2FjaGU9W10sdGhpcy5fc2VyaWVzRGF0YUNhY2hlPXt9LHRoaXMuX21ha2VDaGFydEFzeW5jQ2FsbGJhY2tJZD1udWxsfXNldFZpc2libGVTZXJpZXModCl7dGhpcy5fdmlzaWJsZVNlcmllc0NhY2hlPXQsdGhpcy5fY2hhcnQmJih0aGlzLl9jaGFydC5zZXRWaXNpYmxlU2VyaWVzKHQpLHRoaXMucmVkcmF3KCkpfXNldFNlcmllc0RhdGEodCxlKXt0aGlzLl9zZXJpZXNEYXRhQ2FjaGVbdF09ZSx0aGlzLl9jaGFydCYmdGhpcy5fY2hhcnQuc2V0U2VyaWVzRGF0YSh0LGUpfXJlZHJhdygpe3RoaXMuX2NoYXJ0LnJlZHJhdygpfV9tYWtlQ2hhcnQoKXt2YXIgdD10aGlzLnhUeXBlLGU9dGhpcy5jb2xvclNjYWxlLG49dGhpcy5fYXR0YWNoZWQ7bnVsbD09PXRoaXMuX21ha2VDaGFydEFzeW5jQ2FsbGJhY2tJZCYmdGhpcy5jYW5jZWxBc3luYyh0aGlzLl9tYWtlQ2hhcnRBc3luY0NhbGxiYWNrSWQpLHRoaXMuX21ha2VDaGFydEFzeW5jQ2FsbGJhY2tJZD10aGlzLmFzeW5jKChmdW5jdGlvbigpe2lmKHRoaXMuX21ha2VDaGFydEFzeW5jQ2FsbGJhY2tJZD1udWxsLG4pe3RoaXMuX2NoYXJ0JiZ0aGlzLl9jaGFydC5kZXN0cm95KCk7dmFyIGk9bmV3IFFfdCh0LGUpLHI9U3UodGhpcy4kLmNoYXJ0ZGl2KTtpLnJlbmRlclRvKHIpLHRoaXMuX2NoYXJ0PWl9fSksMzUwKX1fcmVsb2FkRnJvbUNhY2hlKCl7dGhpcy5fY2hhcnQmJih0aGlzLl9jaGFydC5zZXRWaXNpYmxlU2VyaWVzKHRoaXMuX3Zpc2libGVTZXJpZXNDYWNoZSksdGhpcy5fdmlzaWJsZVNlcmllc0NhY2hlLmZvckVhY2goZnVuY3Rpb24odCl7dGhpcy5fY2hhcnQuc2V0U2VyaWVzRGF0YSh0LHRoaXMuX3Nlcmllc0RhdGFDYWNoZVt0XXx8W10pfS5iaW5kKHRoaXMpKSl9YXR0YWNoZWQoKXt0aGlzLl9hdHRhY2hlZD0hMH1kZXRhY2hlZCgpe3RoaXMuX2F0dGFjaGVkPSExfX07dHl0LnRlbXBsYXRlPV9lYAogICAgPHN0eWxlIGluY2x1ZGU9InBsb3R0YWJsZS1zdHlsZSI+PC9zdHlsZT4KICAgIDxkaXYgaWQ9ImNoYXJ0ZGl2Ij48L2Rpdj4KICAgIDxzdHlsZT4KICAgICAgOmhvc3QgewogICAgICAgIC13ZWJraXQtdXNlci1zZWxlY3Q6IG5vbmU7CiAgICAgICAgLW1vei11c2VyLXNlbGVjdDogbm9uZTsKICAgICAgICBkaXNwbGF5OiBmbGV4OwogICAgICAgIGZsZXgtZGlyZWN0aW9uOiBjb2x1bW47CiAgICAgICAgZmxleC1ncm93OiAxOwogICAgICAgIGZsZXgtc2hyaW5rOiAxOwogICAgICAgIHBvc2l0aW9uOiByZWxhdGl2ZTsKICAgICAgfQogICAgICAjY2hhcnRkaXYgewogICAgICAgIC13ZWJraXQtdXNlci1zZWxlY3Q6IG5vbmU7CiAgICAgICAgLW1vei11c2VyLXNlbGVjdDogbm9uZTsKICAgICAgICBmbGV4LWdyb3c6IDE7CiAgICAgICAgZmxleC1zaHJpbms6IDE7CiAgICAgIH0KICAgIDwvc3R5bGU+CiAgYCx0KFtvKHt0eXBlOk9iamVjdH0pLGUoImRlc2lnbjp0eXBlIixVZ3QuU2NhbGVzLkNvbG9yKV0sdHl0LnByb3RvdHlwZSwiY29sb3JTY2FsZSIsdm9pZCAwKSx0KFtvKHt0eXBlOlN0cmluZ30pLGUoImRlc2lnbjp0eXBlIixTdHJpbmcpXSx0eXQucHJvdG90eXBlLCJ4VHlwZSIsdm9pZCAwKSx0KFtvKHt0eXBlOkJvb2xlYW59KSxlKCJkZXNpZ246dHlwZSIsQm9vbGVhbildLHR5dC5wcm90b3R5cGUsIl9hdHRhY2hlZCIsdm9pZCAwKSx0KFtvKHt0eXBlOk9iamVjdH0pLGUoImRlc2lnbjp0eXBlIixRX3QpXSx0eXQucHJvdG90eXBlLCJfY2hhcnQiLHZvaWQgMCksdChbbyh7dHlwZTpBcnJheX0pLGUoImRlc2lnbjp0eXBlIixBcnJheSldLHR5dC5wcm90b3R5cGUsIl92aXNpYmxlU2VyaWVzQ2FjaGUiLHZvaWQgMCksdChbbyh7dHlwZTpPYmplY3R9KSxlKCJkZXNpZ246dHlwZSIsT2JqZWN0KV0sdHl0LnByb3RvdHlwZSwiX3Nlcmllc0RhdGFDYWNoZSIsdm9pZCAwKSx0KFtvKHt0eXBlOk51bWJlcn0pLGUoImRlc2lnbjp0eXBlIixOdW1iZXIpXSx0eXQucHJvdG90eXBlLCJfbWFrZUNoYXJ0QXN5bmNDYWxsYmFja0lkIix2b2lkIDApLHQoW2EoInhUeXBlIiwiY29sb3JTY2FsZSIsIl9hdHRhY2hlZCIpLGUoImRlc2lnbjp0eXBlIixGdW5jdGlvbiksZSgiZGVzaWduOnBhcmFtdHlwZXMiLFtdKSxlKCJkZXNpZ246cmV0dXJudHlwZSIsdm9pZCAwKV0sdHl0LnByb3RvdHlwZSwiX21ha2VDaGFydCIsbnVsbCksdChbYSgiX2NoYXJ0IiksZSgiZGVzaWduOnR5cGUiLEZ1bmN0aW9uKSxlKCJkZXNpZ246cGFyYW10eXBlcyIsW10pLGUoImRlc2lnbjpyZXR1cm50eXBlIix2b2lkIDApXSx0eXQucHJvdG90eXBlLCJfcmVsb2FkRnJvbUNhY2hlIixudWxsKSx0eXQ9dChbaSgidnotZGlzdHJpYnV0aW9uLWNoYXJ0IildLHR5dCk7bGV0IGV5dD1jbGFzcyBleHRlbmRzKHRfdCh0cih5ZSkpKXtjb25zdHJ1Y3Rvcigpe3N1cGVyKC4uLmFyZ3VtZW50cyksdGhpcy5nZXREYXRhTG9hZE5hbWU9KHtydW46dH0pPT50LHRoaXMucmVxdWVzdERhdGE9KHQsZSxuKT0+e2NvbnN0IGk9Z3IoKS5wbHVnaW5Sb3V0ZSgiZGlzdHJpYnV0aW9ucyIsIi9kaXN0cmlidXRpb25zIik7UHJvbWlzZS5hbGwodC5tYXAoKHQ9Pntjb25zdCBuPU9PKGkse3RhZzp0LnRhZyxydW46dC5ydW59KTtyZXR1cm4gdGhpcy5yZXF1ZXN0TWFuYWdlci5yZXF1ZXN0KG4pLnRoZW4oKG49PntlKHtpdGVtOnQsZGF0YTpufSl9KSl9KSkpLmZpbmFsbHkoKCgpPT57bigpfSkpfSx0aGlzLmxvYWREYXRhQ2FsbGJhY2s9KHQsZSxuKT0+e2NvbnN0IGk9bi5tYXAoKHQ9Pntjb25zdFtlLG4saV09dDtyZXR1cm4gaS53YWxsX3RpbWU9bmV3IERhdGUoMWUzKmUpLGkuc3RlcD1uLGl9KSkscj10aGlzLmdldERhdGFMb2FkTmFtZShlKTt0aGlzLiQuY2hhcnQuc2V0U2VyaWVzRGF0YShyLGkpLHRoaXMuJC5jaGFydC5zZXRWaXNpYmxlU2VyaWVzKFtyXSl9LHRoaXMuX2NvbG9yU2NhbGU9e3NjYWxlOnhPfSx0aGlzLl9leHBhbmRlZD0hMSx0aGlzLl9jYW5jZWxsZXI9bmV3IEVPfV9yZWxvYWRPblJ1blRhZ0NoYW5nZSgpe3RoaXMucmVsb2FkKCl9X3VwZGF0ZURhdGFUb0xvYWQoKXt0aGlzLmRhdGFUb0xvYWQ9W3tydW46dGhpcy5ydW4sdGFnOnRoaXMudGFnfV19Z2V0IF9ydW5Db2xvcigpe3JldHVybiB0aGlzLl9jb2xvclNjYWxlLnNjYWxlKHRoaXMucnVuKX1yZWRyYXcoKXt0aGlzLiQuY2hhcnQucmVkcmF3KCl9X3RvZ2dsZUV4cGFuZGVkKHQpe3RoaXMuc2V0KCJfZXhwYW5kZWQiLCF0aGlzLl9leHBhbmRlZCksdGhpcy5yZWRyYXcoKX19O2V5dC50ZW1wbGF0ZT1fZWAKICAgIDx0Zi1jYXJkLWhlYWRpbmcKICAgICAgdGFnPSJbW3RhZ11dIgogICAgICBydW49IltbcnVuXV0iCiAgICAgIGRpc3BsYXktbmFtZT0iW1t0YWdNZXRhZGF0YS5kaXNwbGF5TmFtZV1dIgogICAgICBkZXNjcmlwdGlvbj0iW1t0YWdNZXRhZGF0YS5kZXNjcmlwdGlvbl1dIgogICAgICBjb2xvcj0iW1tfcnVuQ29sb3JdXSIKICAgID48L3RmLWNhcmQtaGVhZGluZz4KICAgIDwhLS0KICAgICAgVGhlIG1haW4gZGlzdHJpYnV0aW9uIHRoYXQgd2UgcmVuZGVyLiBEYXRhIGlzIHNldCBkaXJlY3RseSB3aXRoCiAgICAgIFxgc2V0U2VyaWVzRGF0YVxgLCBub3Qgd2l0aCBhIGJvdW5kIHByb3BlcnR5LgogICAgLS0+CiAgICA8dnotZGlzdHJpYnV0aW9uLWNoYXJ0CiAgICAgIGlkPSJjaGFydCIKICAgICAgeC10eXBlPSJbW3hUeXBlXV0iCiAgICAgIGNvbG9yLXNjYWxlPSJbW19jb2xvclNjYWxlXV0iCiAgICA+PC92ei1kaXN0cmlidXRpb24tY2hhcnQ+CiAgICA8ZGl2IHN0eWxlPSJkaXNwbGF5OiBmbGV4OyBmbGV4LWRpcmVjdGlvbjogcm93OyI+CiAgICAgIDxwYXBlci1pY29uLWJ1dHRvbgogICAgICAgIHNlbGVjdGVkJD0iW1tfZXhwYW5kZWRdXSIKICAgICAgICBpY29uPSJmdWxsc2NyZWVuIgogICAgICAgIG9uLXRhcD0iX3RvZ2dsZUV4cGFuZGVkIgogICAgICA+PC9wYXBlci1pY29uLWJ1dHRvbj4KICAgIDwvZGl2PgogICAgPHN0eWxlPgogICAgICA6aG9zdCB7CiAgICAgICAgZGlzcGxheTogZmxleDsKICAgICAgICBmbGV4LWRpcmVjdGlvbjogY29sdW1uOwogICAgICAgIHdpZHRoOiAzMzBweDsKICAgICAgICBoZWlnaHQ6IDIzNXB4OwogICAgICAgIG1hcmdpbi1yaWdodDogMTBweDsKICAgICAgICBtYXJnaW4tYm90dG9tOiAxNXB4OwogICAgICB9CiAgICAgIDpob3N0KFtfZXhwYW5kZWRdKSB7CiAgICAgICAgd2lkdGg6IDcwMHB4OwogICAgICAgIGhlaWdodDogNTAwcHg7CiAgICAgIH0KCiAgICAgIHZ6LWhpc3RvZ3JhbS10aW1lc2VyaWVzIHsKICAgICAgICAtbW96LXVzZXItc2VsZWN0OiBub25lOwogICAgICAgIC13ZWJraXQtdXNlci1zZWxlY3Q6IG5vbmU7CiAgICAgIH0KCiAgICAgIHBhcGVyLWljb24tYnV0dG9uIHsKICAgICAgICBjb2xvcjogIzIxOTZmMzsKICAgICAgICBib3JkZXItcmFkaXVzOiAxMDAlOwogICAgICAgIHdpZHRoOiAzMnB4OwogICAgICAgIGhlaWdodDogMzJweDsKICAgICAgICBwYWRkaW5nOiA0cHg7CiAgICAgIH0KICAgICAgcGFwZXItaWNvbi1idXR0b25bc2VsZWN0ZWRdIHsKICAgICAgICBiYWNrZ3JvdW5kOiB2YXIoLS10Yi11aS1saWdodC1hY2NlbnQpOwogICAgICB9CgogICAgICB0Zi1jYXJkLWhlYWRpbmcgewogICAgICAgIG1hcmdpbi1ib3R0b206IDEwcHg7CiAgICAgIH0KICAgIDwvc3R5bGU+CiAgYCx0KFtvKHt0eXBlOlN0cmluZ30pLGUoImRlc2lnbjp0eXBlIixTdHJpbmcpXSxleXQucHJvdG90eXBlLCJydW4iLHZvaWQgMCksdChbbyh7dHlwZTpTdHJpbmd9KSxlKCJkZXNpZ246dHlwZSIsU3RyaW5nKV0sZXl0LnByb3RvdHlwZSwidGFnIix2b2lkIDApLHQoW28oe3R5cGU6T2JqZWN0fSksZSgiZGVzaWduOnR5cGUiLE9iamVjdCldLGV5dC5wcm90b3R5cGUsInRhZ01ldGFkYXRhIix2b2lkIDApLHQoW28oe3R5cGU6U3RyaW5nfSksZSgiZGVzaWduOnR5cGUiLFN0cmluZyldLGV5dC5wcm90b3R5cGUsInhUeXBlIix2b2lkIDApLHQoW28oe3R5cGU6T2JqZWN0fSksZSgiZGVzaWduOnR5cGUiLE9iamVjdCldLGV5dC5wcm90b3R5cGUsImdldERhdGFMb2FkTmFtZSIsdm9pZCAwKSx0KFtvKHt0eXBlOk9iamVjdH0pLGUoImRlc2lnbjp0eXBlIixPYmplY3QpXSxleXQucHJvdG90eXBlLCJsb2FkRGF0YUNhbGxiYWNrIix2b2lkIDApLHQoW28oe3R5cGU6T2JqZWN0fSksZSgiZGVzaWduOnR5cGUiLE9iamVjdCldLGV5dC5wcm90b3R5cGUsIl9jb2xvclNjYWxlIix2b2lkIDApLHQoW28oe3R5cGU6Qm9vbGVhbixyZWZsZWN0VG9BdHRyaWJ1dGU6ITB9KSxlKCJkZXNpZ246dHlwZSIsQm9vbGVhbildLGV5dC5wcm90b3R5cGUsIl9leHBhbmRlZCIsdm9pZCAwKSx0KFtvKHt0eXBlOk9iamVjdH0pLGUoImRlc2lnbjp0eXBlIixocildLGV5dC5wcm90b3R5cGUsInJlcXVlc3RNYW5hZ2VyIix2b2lkIDApLHQoW28oe3R5cGU6T2JqZWN0fSksZSgiZGVzaWduOnR5cGUiLEVPKV0sZXl0LnByb3RvdHlwZSwiX2NhbmNlbGxlciIsdm9pZCAwKSx0KFthKCJydW4iLCJ0YWciKSxlKCJkZXNpZ246dHlwZSIsRnVuY3Rpb24pLGUoImRlc2lnbjpwYXJhbXR5cGVzIixbXSksZSgiZGVzaWduOnJldHVybnR5cGUiLHZvaWQgMCldLGV5dC5wcm90b3R5cGUsIl9yZWxvYWRPblJ1blRhZ0NoYW5nZSIsbnVsbCksdChbYSgicnVuIiwidGFnIiksZSgiZGVzaWduOnR5cGUiLEZ1bmN0aW9uKSxlKCJkZXNpZ246cGFyYW10eXBlcyIsW10pLGUoImRlc2lnbjpyZXR1cm50eXBlIix2b2lkIDApXSxleXQucHJvdG90eXBlLCJfdXBkYXRlRGF0YVRvTG9hZCIsbnVsbCksdChbcygicnVuIiksZSgiZGVzaWduOnR5cGUiLFN0cmluZyksZSgiZGVzaWduOnBhcmFtdHlwZXMiLFtdKV0sZXl0LnByb3RvdHlwZSwiX3J1bkNvbG9yIixudWxsKSxleXQ9dChbaSgidGYtZGlzdHJpYnV0aW9uLWxvYWRlciIpXSxleXQpO2xldCBueXQ9Y2xhc3MgZXh0ZW5kcyh0cih5ZSkpe2NvbnN0cnVjdG9yKCl7c3VwZXIoLi4uYXJndW1lbnRzKSx0aGlzLnJlbG9hZE9uUmVhZHk9ITAsdGhpcy5feFR5cGU9InN0ZXAiLHRoaXMuX3JlcXVlc3RNYW5hZ2VyPW5ldyBocn1yZWFkeSgpe3N1cGVyLnJlYWR5KCksdGhpcy5yZWxvYWRPblJlYWR5JiZ0aGlzLnJlbG9hZCgpfXJlbG9hZCgpe3RoaXMuX2ZldGNoVGFncygpLnRoZW4oKCgpPT57dGhpcy5fcmVsb2FkRGlzdHJpYnV0aW9ucygpfSkpfV9mZXRjaFRhZ3MoKXtjb25zdCB0PWdyKCkucGx1Z2luUm91dGUoImRpc3RyaWJ1dGlvbnMiLCIvdGFncyIpO3JldHVybiB0aGlzLl9yZXF1ZXN0TWFuYWdlci5yZXF1ZXN0KHQpLnRoZW4oKHQ9PntpZih3ZS5pc0VxdWFsKHQsdGhpcy5fcnVuVG9UYWdJbmZvKSlyZXR1cm47Y29uc3QgZT13ZS5tYXBWYWx1ZXModCwodD0+T2JqZWN0LmtleXModCkpKSxuPW9yKGUpO3RoaXMuc2V0KCJfZGF0YU5vdEZvdW5kIiwwPT09bi5sZW5ndGgpLHRoaXMuc2V0KCJfcnVuVG9UYWciLGUpLHRoaXMuc2V0KCJfcnVuVG9UYWdJbmZvIix0KSx0aGlzLmFzeW5jKCgoKT0+e3RoaXMuc2V0KCJfY2F0ZWdvcmllc0RvbVJlYWR5IiwhMCl9KSl9KSl9X3JlbG9hZERpc3RyaWJ1dGlvbnMoKXt0aGlzLnJvb3QucXVlcnlTZWxlY3RvckFsbCgidGYtZGlzdHJpYnV0aW9uLWxvYWRlciIpLmZvckVhY2goKHQ9Pnt0LnJlbG9hZCgpfSkpfV9zaG91bGRPcGVuKHQpe3JldHVybiB0PD0yfWdldCBfY2F0ZWdvcmllcygpe3JldHVybiBTcih0aGlzLl9ydW5Ub1RhZyx0aGlzLl9zZWxlY3RlZFJ1bnMsdGhpcy5fdGFnRmlsdGVyKX1fdGFnTWV0YWRhdGEodCxlLG4pe3JldHVybiB0W2VdW25dfX07bnl0LnRlbXBsYXRlPV9lYAogICAgPHRmLWRhc2hib2FyZC1sYXlvdXQ+CiAgICAgIDxkaXYgY2xhc3M9InNpZGViYXIiIHNsb3Q9InNpZGViYXIiPgogICAgICAgIDxkaXYgY2xhc3M9InNldHRpbmdzIj4KICAgICAgICAgIDxkaXYgY2xhc3M9InNpZGViYXItc2VjdGlvbiI+CiAgICAgICAgICAgIDx0Zi1vcHRpb24tc2VsZWN0b3IKICAgICAgICAgICAgICBpZD0ieFR5cGVTZWxlY3RvciIKICAgICAgICAgICAgICBuYW1lPSJIb3Jpem9udGFsIGF4aXMiCiAgICAgICAgICAgICAgc2VsZWN0ZWQtaWQ9Int7X3hUeXBlfX0iCiAgICAgICAgICAgID4KICAgICAgICAgICAgICA8cGFwZXItYnV0dG9uIGlkPSJzdGVwIj5zdGVwPC9wYXBlci1idXR0b24+CiAgICAgICAgICAgICAgPHBhcGVyLWJ1dHRvbiBpZD0icmVsYXRpdmUiPnJlbGF0aXZlPC9wYXBlci1idXR0b24+CiAgICAgICAgICAgICAgPHBhcGVyLWJ1dHRvbiBpZD0id2FsbF90aW1lIj53YWxsPC9wYXBlci1idXR0b24+CiAgICAgICAgICAgIDwvdGYtb3B0aW9uLXNlbGVjdG9yPgogICAgICAgICAgPC9kaXY+CiAgICAgICAgPC9kaXY+CiAgICAgICAgPGRpdiBjbGFzcz0ic2lkZWJhci1zZWN0aW9uIHJ1bnMtc2VsZWN0b3IiPgogICAgICAgICAgPHRmLXJ1bnMtc2VsZWN0b3Igc2VsZWN0ZWQtcnVucz0ie3tfc2VsZWN0ZWRSdW5zfX0iPgogICAgICAgICAgPC90Zi1ydW5zLXNlbGVjdG9yPgogICAgICAgIDwvZGl2PgogICAgICA8L2Rpdj4KCiAgICAgIDxkaXYgY2xhc3M9ImNlbnRlciIgc2xvdD0iY2VudGVyIj4KICAgICAgICA8dGVtcGxhdGUgaXM9ImRvbS1pZiIgaWY9IltbX2RhdGFOb3RGb3VuZF1dIj4KICAgICAgICAgIDxkaXYgY2xhc3M9Im5vLWRhdGEtd2FybmluZyI+CiAgICAgICAgICAgIDxoMz5ObyBkaXN0cmlidXRpb24gZGF0YSB3YXMgZm91bmQuPC9oMz4KICAgICAgICAgICAgPHA+UHJvYmFibGUgY2F1c2VzOjwvcD4KICAgICAgICAgICAgPHVsPgogICAgICAgICAgICAgIDxsaT4KICAgICAgICAgICAgICAgIFlvdSBoYXZlbuKAmXQgd3JpdHRlbiBhbnkgaGlzdG9ncmFtIGRhdGEgdG8geW91ciBldmVudCBmaWxlcy4KICAgICAgICAgICAgICAgIChIaXN0b2dyYW1zIGFuZCBkaXN0cmlidXRpb25zIGJvdGggdXNlIHRoZSBoaXN0b2dyYW0gc3VtbWFyeQogICAgICAgICAgICAgICAgb3BlcmF0aW9uLikKICAgICAgICAgICAgICA8L2xpPgoKICAgICAgICAgICAgICA8bGk+VGVuc29yQm9hcmQgY2Fu4oCZdCBmaW5kIHlvdXIgZXZlbnQgZmlsZXMuPC9saT4KICAgICAgICAgICAgPC91bD4KCiAgICAgICAgICAgIDxwPgogICAgICAgICAgICAgIElmIHlvdeKAmXJlIG5ldyB0byB1c2luZyBUZW5zb3JCb2FyZCwgYW5kIHdhbnQgdG8gZmluZCBvdXQgaG93IHRvCiAgICAgICAgICAgICAgYWRkIGRhdGEgYW5kIHNldCB1cCB5b3VyIGV2ZW50IGZpbGVzLCBjaGVjayBvdXQgdGhlCiAgICAgICAgICAgICAgPGEKICAgICAgICAgICAgICAgIGhyZWY9Imh0dHBzOi8vZ2l0aHViLmNvbS90ZW5zb3JmbG93L3RlbnNvcmJvYXJkL2Jsb2IvbWFzdGVyL1JFQURNRS5tZCIKICAgICAgICAgICAgICAgID5SRUFETUU8L2EKICAgICAgICAgICAgICA+CiAgICAgICAgICAgICAgYW5kIHBlcmhhcHMgdGhlCiAgICAgICAgICAgICAgPGEKICAgICAgICAgICAgICAgIGhyZWY9Imh0dHBzOi8vd3d3LnRlbnNvcmZsb3cub3JnL2dldF9zdGFydGVkL3N1bW1hcmllc19hbmRfdGVuc29yYm9hcmQiCiAgICAgICAgICAgICAgICA+VGVuc29yQm9hcmQgdHV0b3JpYWw8L2EKICAgICAgICAgICAgICA+LgogICAgICAgICAgICA8L3A+CgogICAgICAgICAgICA8cD4KICAgICAgICAgICAgICBJZiB5b3UgdGhpbmsgVGVuc29yQm9hcmQgaXMgY29uZmlndXJlZCBwcm9wZXJseSwgcGxlYXNlIHNlZQogICAgICAgICAgICAgIDxhCiAgICAgICAgICAgICAgICBocmVmPSJodHRwczovL2dpdGh1Yi5jb20vdGVuc29yZmxvdy90ZW5zb3Jib2FyZC9ibG9iL21hc3Rlci9SRUFETUUubWQjbXktdGVuc29yYm9hcmQtaXNudC1zaG93aW5nLWFueS1kYXRhLXdoYXRzLXdyb25nIgogICAgICAgICAgICAgICAgPnRoZSBzZWN0aW9uIG9mIHRoZSBSRUFETUUgZGV2b3RlZCB0byBtaXNzaW5nIGRhdGEgcHJvYmxlbXM8L2EKICAgICAgICAgICAgICA+CiAgICAgICAgICAgICAgYW5kIGNvbnNpZGVyIGZpbGluZyBhbiBpc3N1ZSBvbiBHaXRIdWIuCiAgICAgICAgICAgIDwvcD4KICAgICAgICAgIDwvZGl2PgogICAgICAgIDwvdGVtcGxhdGU+CiAgICAgICAgPHRlbXBsYXRlIGlzPSJkb20taWYiIGlmPSJbWyFfZGF0YU5vdEZvdW5kXV0iPgogICAgICAgICAgPHRmLXRhZy1maWx0ZXJlciB0YWctZmlsdGVyPSJ7e190YWdGaWx0ZXJ9fSI+PC90Zi10YWctZmlsdGVyZXI+CiAgICAgICAgICA8dGVtcGxhdGUgaXM9ImRvbS1yZXBlYXQiIGl0ZW1zPSJbW19jYXRlZ29yaWVzXV0iIGFzPSJjYXRlZ29yeSI+CiAgICAgICAgICAgIDx0Zi1jYXRlZ29yeS1wYWdpbmF0ZWQtdmlldwogICAgICAgICAgICAgIGNhdGVnb3J5PSJbW2NhdGVnb3J5XV0iCiAgICAgICAgICAgICAgaW5pdGlhbC1vcGVuZWQ9IltbX3Nob3VsZE9wZW4oaW5kZXgpXV0iCiAgICAgICAgICAgID4KICAgICAgICAgICAgICA8dGVtcGxhdGU+CiAgICAgICAgICAgICAgICA8dGYtZGlzdHJpYnV0aW9uLWxvYWRlcgogICAgICAgICAgICAgICAgICBhY3RpdmU9IltbYWN0aXZlXV0iCiAgICAgICAgICAgICAgICAgIHJ1bj0iW1tpdGVtLnJ1bl1dIgogICAgICAgICAgICAgICAgICB0YWc9IltbaXRlbS50YWddXSIKICAgICAgICAgICAgICAgICAgdGFnLW1ldGFkYXRhPSJbW190YWdNZXRhZGF0YShfcnVuVG9UYWdJbmZvLCBpdGVtLnJ1biwgaXRlbS50YWcpXV0iCiAgICAgICAgICAgICAgICAgIHgtdHlwZT0iW1tfeFR5cGVdXSIKICAgICAgICAgICAgICAgICAgcmVxdWVzdC1tYW5hZ2VyPSJbW19yZXF1ZXN0TWFuYWdlcl1dIgogICAgICAgICAgICAgICAgPjwvdGYtZGlzdHJpYnV0aW9uLWxvYWRlcj4KICAgICAgICAgICAgICA8L3RlbXBsYXRlPgogICAgICAgICAgICA8L3RmLWNhdGVnb3J5LXBhZ2luYXRlZC12aWV3PgogICAgICAgICAgPC90ZW1wbGF0ZT4KICAgICAgICA8L3RlbXBsYXRlPgogICAgICA8L2Rpdj4KICAgIDwvdGYtZGFzaGJvYXJkLWxheW91dD4KCiAgICA8c3R5bGUgaW5jbHVkZT0iZGFzaGJvYXJkLXN0eWxlIj48L3N0eWxlPgogICAgPHN0eWxlPgogICAgICAubm8tZGF0YS13YXJuaW5nIHsKICAgICAgICBtYXgtd2lkdGg6IDU0MHB4OwogICAgICAgIG1hcmdpbjogODBweCBhdXRvIDAgYXV0bzsKICAgICAgfQogICAgPC9zdHlsZT4KICBgLHQoW28oe3R5cGU6Qm9vbGVhbn0pLGUoImRlc2lnbjp0eXBlIixCb29sZWFuKV0sbnl0LnByb3RvdHlwZSwicmVsb2FkT25SZWFkeSIsdm9pZCAwKSx0KFtvKHt0eXBlOlN0cmluZ30pLGUoImRlc2lnbjp0eXBlIixTdHJpbmcpXSxueXQucHJvdG90eXBlLCJfeFR5cGUiLHZvaWQgMCksdChbbyh7dHlwZTpBcnJheX0pLGUoImRlc2lnbjp0eXBlIixBcnJheSldLG55dC5wcm90b3R5cGUsIl9zZWxlY3RlZFJ1bnMiLHZvaWQgMCksdChbbyh7dHlwZTpPYmplY3R9KSxlKCJkZXNpZ246dHlwZSIsT2JqZWN0KV0sbnl0LnByb3RvdHlwZSwiX3J1blRvVGFnIix2b2lkIDApLHQoW28oe3R5cGU6T2JqZWN0fSksZSgiZGVzaWduOnR5cGUiLE9iamVjdCldLG55dC5wcm90b3R5cGUsIl9ydW5Ub1RhZ0luZm8iLHZvaWQgMCksdChbbyh7dHlwZTpCb29sZWFufSksZSgiZGVzaWduOnR5cGUiLEJvb2xlYW4pXSxueXQucHJvdG90eXBlLCJfZGF0YU5vdEZvdW5kIix2b2lkIDApLHQoW28oe3R5cGU6U3RyaW5nfSksZSgiZGVzaWduOnR5cGUiLFN0cmluZyldLG55dC5wcm90b3R5cGUsIl90YWdGaWx0ZXIiLHZvaWQgMCksdChbbyh7dHlwZTpCb29sZWFufSksZSgiZGVzaWduOnR5cGUiLEJvb2xlYW4pXSxueXQucHJvdG90eXBlLCJfY2F0ZWdvcmllc0RvbVJlYWR5Iix2b2lkIDApLHQoW28oe3R5cGU6T2JqZWN0fSksZSgiZGVzaWduOnR5cGUiLGhyKV0sbnl0LnByb3RvdHlwZSwiX3JlcXVlc3RNYW5hZ2VyIix2b2lkIDApLHQoW3MoIl9ydW5Ub1RhZyIsIl9zZWxlY3RlZFJ1bnMiLCJfdGFnRmlsdGVyIiwiX2NhdGVnb3JpZXNEb21SZWFkeSIpLGUoImRlc2lnbjp0eXBlIixBcnJheSksZSgiZGVzaWduOnBhcmFtdHlwZXMiLFtdKV0sbnl0LnByb3RvdHlwZSwiX2NhdGVnb3JpZXMiLG51bGwpLG55dD10KFtpKCJ0Zi1kaXN0cmlidXRpb24tZGFzaGJvYXJkIildLG55dCk7dmFyIGl5dD1PYmplY3QuZnJlZXplKHtfX3Byb3RvX186bnVsbCxMaXN0ZW5LZXk6aHMsYWRkSGFzaExpc3RlbmVyOmZzLGFkZFN0b3JhZ2VMaXN0ZW5lcjptcyxmaXJlU3RvcmFnZUNoYW5nZWQ6Z3MscmVtb3ZlSGFzaExpc3RlbmVyQnlLZXk6X3MscmVtb3ZlU3RvcmFnZUxpc3RlbmVyQnlLZXk6eXMsVEFCOlRzLERJU0FNQklHVUFUT1I6ImRpc2FtYmlndWF0b3IiLGdldFVybERpY3Q6Q3MsZ2V0U3RyaW5nOmtzLHNldFN0cmluZzpMcyxnZXRTdHJpbmdJbml0aWFsaXplcjpQcyxnZXRTdHJpbmdPYnNlcnZlcjpJcyxkaXNwb3NlU3RyaW5nQmluZGluZzpOcyxnZXRCb29sZWFuOk9zLHNldEJvb2xlYW46UnMsZ2V0Qm9vbGVhbkluaXRpYWxpemVyOnpzLGdldEJvb2xlYW5PYnNlcnZlcjpEcyxkaXNwb3NlQm9vbGVhbkJpbmRpbmc6QnMsZ2V0TnVtYmVyOkhzLHNldE51bWJlcjpGcyxnZXROdW1iZXJJbml0aWFsaXplcjpWcyxnZXROdW1iZXJPYnNlcnZlcjpqcyxkaXNwb3NlTnVtYmVyQmluZGluZzpVcyxnZXRPYmplY3Q6R3Msc2V0T2JqZWN0OldzLGdldE9iamVjdEluaXRpYWxpemVyOnFzLGdldE9iamVjdE9ic2VydmVyOllzLGRpc3Bvc2VPYmplY3RCaW5kaW5nOlhzLG1ha2VCaW5kaW5nczokcyxtaWdyYXRlTGVnYWN5VVJMU2NoZW1lOmZ1bmN0aW9uIHJ5dCgpe2NvbnN0IHQ9bmV3IFNldChbImV4YW1wbGVzUGF0aCIsImhpZGVNb2RlbFBhbmUyIiwibW9kZWxOYW1lMSIsIm1vZGVsTmFtZTIiLCJpbmZlcmVuY2VBZGRyZXNzMSIsImluZmVyZW5jZUFkZHJlc3MyIiwibW9kZWxUeXBlIiwibW9kZWxWZXJzaW9uMSIsIm1vZGVsVmVyc2lvbjIiLCJtb2RlbFNpZ25hdHVyZTEiLCJtb2RlbFNpZ25hdHVyZTIiLCJtYXhFeGFtcGxlcyIsImxhYmVsVm9jYWJQYXRoIiwibXVsdGlDbGFzcyIsInNlcXVlbmNlRXhhbXBsZXMiLCJtYXhDbGFzc2VzVG9EaXNwbGF5Iiwic2FtcGxpbmdPZGRzIiwidXNlUHJlZGljdEFwaSIsInByZWRpY3RJbnB1dFRlbnNvciIsInByZWRpY3RPdXRwdXRUZW5zb3IiXSksZT10bChacygpKTtpZigid2hhdGlmIj09PWVbVHNdKWZvcihsZXQgbiBvZiB0KW4gaW4gZSYmKGVbYHAud2hhdGlmLiR7bn1gXT1lW25dKTtKcyhRcyhlKSksQXM9ZX19KSxveXQ9ZnVuY3Rpb24gYXl0KHQsZSl7cmV0dXJuIHQ9PT1lfHx0IT10JiZlIT1lfSxzeXQ9ZnVuY3Rpb24gbHl0KHQsZSl7Zm9yKHZhciBuPXQubGVuZ3RoO24tLTspaWYob3l0KHRbbl1bMF0sZSkpcmV0dXJuIG47cmV0dXJuLTF9LGN5dD1BcnJheS5wcm90b3R5cGUuc3BsaWNlO2Z1bmN0aW9uIHV5dCh0KXt2YXIgZT0tMSxuPW51bGw9PXQ/MDp0Lmxlbmd0aDtmb3IodGhpcy5jbGVhcigpOysrZTxuOyl7dmFyIGk9dFtlXTt0aGlzLnNldChpWzBdLGlbMV0pfX11eXQucHJvdG90eXBlLmNsZWFyPWZ1bmN0aW9uIGh5dCgpe3RoaXMuX19kYXRhX189W10sdGhpcy5zaXplPTB9LHV5dC5wcm90b3R5cGUuZGVsZXRlPWZ1bmN0aW9uIGR5dCh0KXt2YXIgZT10aGlzLl9fZGF0YV9fLG49c3l0KGUsdCk7cmV0dXJuIShuPDB8fChuPT1lLmxlbmd0aC0xP2UucG9wKCk6Y3l0LmNhbGwoZSxuLDEpLC0tdGhpcy5zaXplLDApKX0sdXl0LnByb3RvdHlwZS5nZXQ9ZnVuY3Rpb24gcHl0KHQpe3ZhciBlPXRoaXMuX19kYXRhX18sbj1zeXQoZSx0KTtyZXR1cm4gbjwwP3ZvaWQgMDplW25dWzFdfSx1eXQucHJvdG90eXBlLmhhcz1mdW5jdGlvbiBmeXQodCl7cmV0dXJuIHN5dCh0aGlzLl9fZGF0YV9fLHQpPi0xfSx1eXQucHJvdG90eXBlLnNldD1mdW5jdGlvbiBteXQodCxlKXt2YXIgbj10aGlzLl9fZGF0YV9fLGk9c3l0KG4sdCk7cmV0dXJuIGk8MD8oKyt0aGlzLnNpemUsbi5wdXNoKFt0LGVdKSk6bltpXVsxXT1lLHRoaXN9O3ZhciBneXQsX3l0PXV5dCx5eXQ9Im9iamVjdCI9PXR5cGVvZiB2ZSYmdmUmJnZlLk9iamVjdD09PU9iamVjdCYmdmUsdnl0PSJvYmplY3QiPT10eXBlb2Ygc2VsZiYmc2VsZiYmc2VsZi5PYmplY3Q9PT1PYmplY3QmJnNlbGYsYnl0PXl5dHx8dnl0fHxGdW5jdGlvbigicmV0dXJuIHRoaXMiKSgpLHh5dD1ieXQuU3ltYm9sLHd5dD1PYmplY3QucHJvdG90eXBlLFN5dD13eXQuaGFzT3duUHJvcGVydHksTXl0PXd5dC50b1N0cmluZyxFeXQ9eHl0P3h5dC50b1N0cmluZ1RhZzp2b2lkIDAsVHl0PU9iamVjdC5wcm90b3R5cGUudG9TdHJpbmcsQXl0PXh5dD94eXQudG9TdHJpbmdUYWc6dm9pZCAwLEN5dD1mdW5jdGlvbiBreXQodCl7cmV0dXJuIG51bGw9PXQ/dm9pZCAwPT09dD8iW29iamVjdCBVbmRlZmluZWRdIjoiW29iamVjdCBOdWxsXSI6QXl0JiZBeXQgaW4gT2JqZWN0KHQpPyhmdW5jdGlvbiBlKHQpe3ZhciBlPVN5dC5jYWxsKHQsRXl0KSxuPXRbRXl0XTt0cnl7dFtFeXRdPXZvaWQgMDt2YXIgaT0hMH1jYXRjaCh0KXt9dmFyIHI9TXl0LmNhbGwodCk7cmV0dXJuIGkmJihlP3RbRXl0XT1uOmRlbGV0ZSB0W0V5dF0pLHJ9KSh0KTooZnVuY3Rpb24gbih0KXtyZXR1cm4gVHl0LmNhbGwodCl9KSh0KX0sTHl0PWZ1bmN0aW9uIFB5dCh0KXt2YXIgZT10eXBlb2YgdDtyZXR1cm4gbnVsbCE9dCYmKCJvYmplY3QiPT1lfHwiZnVuY3Rpb24iPT1lKX0sSXl0PWZ1bmN0aW9uIE55dCh0KXtpZighTHl0KHQpKXJldHVybiExO3ZhciBlPUN5dCh0KTtyZXR1cm4iW29iamVjdCBGdW5jdGlvbl0iPT1lfHwiW29iamVjdCBHZW5lcmF0b3JGdW5jdGlvbl0iPT1lfHwiW29iamVjdCBBc3luY0Z1bmN0aW9uXSI9PWV8fCJbb2JqZWN0IFByb3h5XSI9PWV9LE95dD1ieXRbIl9fY29yZS1qc19zaGFyZWRfXyJdLFJ5dD0oZ3l0PS9bXi5dKyQvLmV4ZWMoT3l0JiZPeXQua2V5cyYmT3l0LmtleXMuSUVfUFJPVE98fCIiKSk/IlN5bWJvbChzcmMpXzEuIitneXQ6IiIsenl0PUZ1bmN0aW9uLnByb3RvdHlwZS50b1N0cmluZyxEeXQ9ZnVuY3Rpb24gQnl0KHQpe2lmKG51bGwhPXQpe3RyeXtyZXR1cm4genl0LmNhbGwodCl9Y2F0Y2godCl7fXRyeXtyZXR1cm4gdCsiIn1jYXRjaCh0KXt9fXJldHVybiIifSxIeXQ9L15cW29iamVjdCAuKz9Db25zdHJ1Y3RvclxdJC8sRnl0PVJlZ0V4cCgiXiIrRnVuY3Rpb24ucHJvdG90eXBlLnRvU3RyaW5nLmNhbGwoT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eSkucmVwbGFjZSgvW1xcXiQuKis/KClbXF17fXxdL2csIlxcJCYiKS5yZXBsYWNlKC9oYXNPd25Qcm9wZXJ0eXwoZnVuY3Rpb24pLio/KD89XFxcKCl8IGZvciAuKz8oPz1cXFxdKS9nLCIkMS4qPyIpKyIkIiksVnl0PWZ1bmN0aW9uIGp5dCh0LGUpe3ZhciBuPShmdW5jdGlvbiBpKHQsZSl7cmV0dXJuIG51bGw9PXQ/dm9pZCAwOnRbZV19KSh0LGUpO3JldHVybihmdW5jdGlvbiByKHQpe3JldHVybiEoIUx5dCh0KXx8KGZ1bmN0aW9uIGUodCl7cmV0dXJuISFSeXQmJlJ5dCBpbiB0fSkodCkpJiYoSXl0KHQpP0Z5dDpIeXQpLnRlc3QoRHl0KHQpKX0pKG4pP246dm9pZCAwfSxVeXQ9Vnl0KGJ5dCwiTWFwIiksR3l0PVZ5dChPYmplY3QsImNyZWF0ZSIpLFd5dD1PYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LHF5dD1PYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5O2Z1bmN0aW9uIFl5dCh0KXt2YXIgZT0tMSxuPW51bGw9PXQ/MDp0Lmxlbmd0aDtmb3IodGhpcy5jbGVhcigpOysrZTxuOyl7dmFyIGk9dFtlXTt0aGlzLnNldChpWzBdLGlbMV0pfX1ZeXQucHJvdG90eXBlLmNsZWFyPWZ1bmN0aW9uIFh5dCgpe3RoaXMuX19kYXRhX189R3l0P0d5dChudWxsKTp7fSx0aGlzLnNpemU9MH0sWXl0LnByb3RvdHlwZS5kZWxldGU9ZnVuY3Rpb24gJHl0KHQpe3ZhciBlPXRoaXMuaGFzKHQpJiZkZWxldGUgdGhpcy5fX2RhdGFfX1t0XTtyZXR1cm4gdGhpcy5zaXplLT1lPzE6MCxlfSxZeXQucHJvdG90eXBlLmdldD1mdW5jdGlvbiBLeXQodCl7dmFyIGU9dGhpcy5fX2RhdGFfXztpZihHeXQpe3ZhciBuPWVbdF07cmV0dXJuIl9fbG9kYXNoX2hhc2hfdW5kZWZpbmVkX18iPT09bj92b2lkIDA6bn1yZXR1cm4gV3l0LmNhbGwoZSx0KT9lW3RdOnZvaWQgMH0sWXl0LnByb3RvdHlwZS5oYXM9ZnVuY3Rpb24gWnl0KHQpe3ZhciBlPXRoaXMuX19kYXRhX187cmV0dXJuIEd5dD92b2lkIDAhPT1lW3RdOnF5dC5jYWxsKGUsdCl9LFl5dC5wcm90b3R5cGUuc2V0PWZ1bmN0aW9uIEp5dCh0LGUpe3ZhciBuPXRoaXMuX19kYXRhX187cmV0dXJuIHRoaXMuc2l6ZSs9dGhpcy5oYXModCk/MDoxLG5bdF09R3l0JiZ2b2lkIDA9PT1lPyJfX2xvZGFzaF9oYXNoX3VuZGVmaW5lZF9fIjplLHRoaXN9O3ZhciBReXQ9WXl0LHR2dD1mdW5jdGlvbiBldnQodCxlKXt2YXIgbj10Ll9fZGF0YV9fO3JldHVybihmdW5jdGlvbiBpKHQpe3ZhciBlPXR5cGVvZiB0O3JldHVybiJzdHJpbmciPT1lfHwibnVtYmVyIj09ZXx8InN5bWJvbCI9PWV8fCJib29sZWFuIj09ZT8iX19wcm90b19fIiE9PXQ6bnVsbD09PXR9KShlKT9uWyJzdHJpbmciPT10eXBlb2YgZT8ic3RyaW5nIjoiaGFzaCJdOm4ubWFwfTtmdW5jdGlvbiBudnQodCl7dmFyIGU9LTEsbj1udWxsPT10PzA6dC5sZW5ndGg7Zm9yKHRoaXMuY2xlYXIoKTsrK2U8bjspe3ZhciBpPXRbZV07dGhpcy5zZXQoaVswXSxpWzFdKX19bnZ0LnByb3RvdHlwZS5jbGVhcj1mdW5jdGlvbiBpdnQoKXt0aGlzLnNpemU9MCx0aGlzLl9fZGF0YV9fPXtoYXNoOm5ldyBReXQsbWFwOm5ldyhVeXR8fF95dCksc3RyaW5nOm5ldyBReXR9fSxudnQucHJvdG90eXBlLmRlbGV0ZT1mdW5jdGlvbiBydnQodCl7dmFyIGU9dHZ0KHRoaXMsdCkuZGVsZXRlKHQpO3JldHVybiB0aGlzLnNpemUtPWU/MTowLGV9LG52dC5wcm90b3R5cGUuZ2V0PWZ1bmN0aW9uIG92dCh0KXtyZXR1cm4gdHZ0KHRoaXMsdCkuZ2V0KHQpfSxudnQucHJvdG90eXBlLmhhcz1mdW5jdGlvbiBhdnQodCl7cmV0dXJuIHR2dCh0aGlzLHQpLmhhcyh0KX0sbnZ0LnByb3RvdHlwZS5zZXQ9ZnVuY3Rpb24gc3Z0KHQsZSl7dmFyIG49dHZ0KHRoaXMsdCksaT1uLnNpemU7cmV0dXJuIG4uc2V0KHQsZSksdGhpcy5zaXplKz1uLnNpemU9PWk/MDoxLHRoaXN9O3ZhciBsdnQ9bnZ0O2Z1bmN0aW9uIGN2dCh0KXt2YXIgZT10aGlzLl9fZGF0YV9fPW5ldyBfeXQodCk7dGhpcy5zaXplPWUuc2l6ZX1jdnQucHJvdG90eXBlLmNsZWFyPWZ1bmN0aW9uIHV2dCgpe3RoaXMuX19kYXRhX189bmV3IF95dCx0aGlzLnNpemU9MH0sY3Z0LnByb3RvdHlwZS5kZWxldGU9ZnVuY3Rpb24gaHZ0KHQpe3ZhciBlPXRoaXMuX19kYXRhX18sbj1lLmRlbGV0ZSh0KTtyZXR1cm4gdGhpcy5zaXplPWUuc2l6ZSxufSxjdnQucHJvdG90eXBlLmdldD1mdW5jdGlvbiBkdnQodCl7cmV0dXJuIHRoaXMuX19kYXRhX18uZ2V0KHQpfSxjdnQucHJvdG90eXBlLmhhcz1mdW5jdGlvbiBwdnQodCl7cmV0dXJuIHRoaXMuX19kYXRhX18uaGFzKHQpfSxjdnQucHJvdG90eXBlLnNldD1mdW5jdGlvbiBmdnQodCxlKXt2YXIgbj10aGlzLl9fZGF0YV9fO2lmKG4gaW5zdGFuY2VvZiBfeXQpe3ZhciBpPW4uX19kYXRhX187aWYoIVV5dHx8aS5sZW5ndGg8MTk5KXJldHVybiBpLnB1c2goW3QsZV0pLHRoaXMuc2l6ZT0rK24uc2l6ZSx0aGlzO249dGhpcy5fX2RhdGFfXz1uZXcgbHZ0KGkpfXJldHVybiBuLnNldCh0LGUpLHRoaXMuc2l6ZT1uLnNpemUsdGhpc307dmFyIG12dD1jdnQsZ3Z0PWZ1bmN0aW9uIF92dCh0LGUpe2Zvcih2YXIgbj0tMSxpPW51bGw9PXQ/MDp0Lmxlbmd0aDsrK248aSYmITEhPT1lKHRbbl0sbix0KTspO3JldHVybiB0fSx5dnQ9KGZ1bmN0aW9uKCl7dHJ5e3ZhciB0PVZ5dChPYmplY3QsImRlZmluZVByb3BlcnR5Iik7cmV0dXJuIHQoe30sIiIse30pLHR9Y2F0Y2godCl7fX0pKCksdnZ0PWZ1bmN0aW9uIGJ2dCh0LGUsbil7Il9fcHJvdG9fXyI9PWUmJnl2dD95dnQodCxlLHtjb25maWd1cmFibGU6ITAsZW51bWVyYWJsZTohMCx2YWx1ZTpuLHdyaXRhYmxlOiEwfSk6dFtlXT1ufSx4dnQ9T2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eSx3dnQ9ZnVuY3Rpb24gU3Z0KHQsZSxuKXt2YXIgaT10W2VdO3h2dC5jYWxsKHQsZSkmJm95dChpLG4pJiYodm9pZCAwIT09bnx8ZSBpbiB0KXx8dnZ0KHQsZSxuKX0sTXZ0PWZ1bmN0aW9uIEV2dCh0LGUsbixpKXt2YXIgcj0hbjtufHwobj17fSk7Zm9yKHZhciBvPS0xLGE9ZS5sZW5ndGg7KytvPGE7KXt2YXIgcz1lW29dLGw9aT9pKG5bc10sdFtzXSxzLG4sdCk6dm9pZCAwO3ZvaWQgMD09PWwmJihsPXRbc10pLHI/dnZ0KG4scyxsKTp3dnQobixzLGwpfXJldHVybiBufSxUdnQ9ZnVuY3Rpb24gQXZ0KHQpe3JldHVybiBudWxsIT10JiYib2JqZWN0Ij09dHlwZW9mIHR9LEN2dD1mdW5jdGlvbiBrdnQodCl7cmV0dXJuIFR2dCh0KSYmIltvYmplY3QgQXJndW1lbnRzXSI9PUN5dCh0KX0sTHZ0PU9iamVjdC5wcm90b3R5cGUsUHZ0PUx2dC5oYXNPd25Qcm9wZXJ0eSxJdnQ9THZ0LnByb3BlcnR5SXNFbnVtZXJhYmxlLE52dD1DdnQoKGZ1bmN0aW9uKCl7cmV0dXJuIGFyZ3VtZW50c30pKCkpP0N2dDpmdW5jdGlvbih0KXtyZXR1cm4gVHZ0KHQpJiZQdnQuY2FsbCh0LCJjYWxsZWUiKSYmIUl2dC5jYWxsKHQsImNhbGxlZSIpfSxPdnQ9QXJyYXkuaXNBcnJheSxSdnQ9ZnVuY3Rpb24genZ0KCl7cmV0dXJuITF9LER2dD1iZSgoZnVuY3Rpb24odCxlKXt2YXIgbj1lJiYhZS5ub2RlVHlwZSYmZSxpPW4mJnQmJiF0Lm5vZGVUeXBlJiZ0LHI9aSYmaS5leHBvcnRzPT09bj9ieXQuQnVmZmVyOnZvaWQgMDt0LmV4cG9ydHM9KHI/ci5pc0J1ZmZlcjp2b2lkIDApfHxSdnR9KSksQnZ0PS9eKD86MHxbMS05XVxkKikkLyxIdnQ9ZnVuY3Rpb24gRnZ0KHQsZSl7dmFyIG49dHlwZW9mIHQ7cmV0dXJuISEoZT1udWxsPT1lPzkwMDcxOTkyNTQ3NDA5OTE6ZSkmJigibnVtYmVyIj09bnx8InN5bWJvbCIhPW4mJkJ2dC50ZXN0KHQpKSYmdD4tMSYmdCUxPT0wJiZ0PGV9LFZ2dD1mdW5jdGlvbiBqdnQodCl7cmV0dXJuIm51bWJlciI9PXR5cGVvZiB0JiZ0Pi0xJiZ0JTE9PTAmJnQ8PTkwMDcxOTkyNTQ3NDA5OTF9LFV2dD17fTtVdnRbIltvYmplY3QgRmxvYXQzMkFycmF5XSJdPVV2dFsiW29iamVjdCBGbG9hdDY0QXJyYXldIl09VXZ0WyJbb2JqZWN0IEludDhBcnJheV0iXT1VdnRbIltvYmplY3QgSW50MTZBcnJheV0iXT1VdnRbIltvYmplY3QgSW50MzJBcnJheV0iXT1VdnRbIltvYmplY3QgVWludDhBcnJheV0iXT1VdnRbIltvYmplY3QgVWludDhDbGFtcGVkQXJyYXldIl09VXZ0WyJbb2JqZWN0IFVpbnQxNkFycmF5XSJdPVV2dFsiW29iamVjdCBVaW50MzJBcnJheV0iXT0hMCxVdnRbIltvYmplY3QgQXJndW1lbnRzXSJdPVV2dFsiW29iamVjdCBBcnJheV0iXT1VdnRbIltvYmplY3QgQXJyYXlCdWZmZXJdIl09VXZ0WyJbb2JqZWN0IEJvb2xlYW5dIl09VXZ0WyJbb2JqZWN0IERhdGFWaWV3XSJdPVV2dFsiW29iamVjdCBEYXRlXSJdPVV2dFsiW29iamVjdCBFcnJvcl0iXT1VdnRbIltvYmplY3QgRnVuY3Rpb25dIl09VXZ0WyJbb2JqZWN0IE1hcF0iXT1VdnRbIltvYmplY3QgTnVtYmVyXSJdPVV2dFsiW29iamVjdCBPYmplY3RdIl09VXZ0WyJbb2JqZWN0IFJlZ0V4cF0iXT1VdnRbIltvYmplY3QgU2V0XSJdPVV2dFsiW29iamVjdCBTdHJpbmddIl09VXZ0WyJbb2JqZWN0IFdlYWtNYXBdIl09ITE7dmFyIEd2dD1mdW5jdGlvbiBXdnQodCl7cmV0dXJuIGZ1bmN0aW9uKGUpe3JldHVybiB0KGUpfX0scXZ0PWJlKChmdW5jdGlvbih0LGUpe3ZhciBuPWUmJiFlLm5vZGVUeXBlJiZlLGk9biYmdCYmIXQubm9kZVR5cGUmJnQscj1pJiZpLmV4cG9ydHM9PT1uJiZ5eXQucHJvY2VzcyxvPShmdW5jdGlvbigpe3RyeXtyZXR1cm4gaSYmaS5yZXF1aXJlJiZpLnJlcXVpcmUoInV0aWwiKS50eXBlc3x8ciYmci5iaW5kaW5nJiZyLmJpbmRpbmcoInV0aWwiKX1jYXRjaCh0KXt9fSkoKTt0LmV4cG9ydHM9b30pKSxZdnQ9cXZ0JiZxdnQuaXNUeXBlZEFycmF5LFh2dD1ZdnQ/R3Z0KFl2dCk6ZnVuY3Rpb24gJHZ0KHQpe3JldHVybiBUdnQodCkmJlZ2dCh0Lmxlbmd0aCkmJiEhVXZ0W0N5dCh0KV19LEt2dD1PYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LFp2dD1mdW5jdGlvbiBKdnQodCxlKXt2YXIgbj1PdnQodCksaT0hbiYmTnZ0KHQpLHI9IW4mJiFpJiZEdnQodCksbz0hbiYmIWkmJiFyJiZYdnQodCksYT1ufHxpfHxyfHxvLHM9YT8oZnVuY3Rpb24gbCh0LGUpe2Zvcih2YXIgbj0tMSxpPUFycmF5KHQpOysrbjx0OylpW25dPWUobik7cmV0dXJuIGl9KSh0Lmxlbmd0aCxTdHJpbmcpOltdLGM9cy5sZW5ndGg7Zm9yKHZhciB1IGluIHQpIWUmJiFLdnQuY2FsbCh0LHUpfHxhJiYoImxlbmd0aCI9PXV8fHImJigib2Zmc2V0Ij09dXx8InBhcmVudCI9PXUpfHxvJiYoImJ1ZmZlciI9PXV8fCJieXRlTGVuZ3RoIj09dXx8ImJ5dGVPZmZzZXQiPT11KXx8SHZ0KHUsYykpfHxzLnB1c2godSk7cmV0dXJuIHN9LFF2dD1PYmplY3QucHJvdG90eXBlLHRidD1mdW5jdGlvbiBlYnQodCl7dmFyIGU9dCYmdC5jb25zdHJ1Y3RvcjtyZXR1cm4gdD09PSgiZnVuY3Rpb24iPT10eXBlb2YgZSYmZS5wcm90b3R5cGV8fFF2dCl9LG5idD1mdW5jdGlvbiBpYnQodCxlKXtyZXR1cm4gZnVuY3Rpb24obil7cmV0dXJuIHQoZShuKSl9fSxyYnQ9bmJ0KE9iamVjdC5rZXlzLE9iamVjdCksb2J0PU9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHksYWJ0PWZ1bmN0aW9uIHNidCh0KXtpZighdGJ0KHQpKXJldHVybiByYnQodCk7dmFyIGU9W107Zm9yKHZhciBuIGluIE9iamVjdCh0KSlvYnQuY2FsbCh0LG4pJiYiY29uc3RydWN0b3IiIT1uJiZlLnB1c2gobik7cmV0dXJuIGV9LGxidD1mdW5jdGlvbiBjYnQodCl7cmV0dXJuIG51bGwhPXQmJlZ2dCh0Lmxlbmd0aCkmJiFJeXQodCl9LHVidD1mdW5jdGlvbiBoYnQodCl7cmV0dXJuIGxidCh0KT9adnQodCk6YWJ0KHQpfSxkYnQ9T2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eSxwYnQ9ZnVuY3Rpb24gZmJ0KHQpe3JldHVybiBsYnQodCk/WnZ0KHQsITApOihmdW5jdGlvbiBlKHQpe2lmKCFMeXQodCkpcmV0dXJuKGZ1bmN0aW9uIGUodCl7dmFyIGU9W107aWYobnVsbCE9dClmb3IodmFyIG4gaW4gT2JqZWN0KHQpKWUucHVzaChuKTtyZXR1cm4gZX0pKHQpO3ZhciBuPXRidCh0KSxpPVtdO2Zvcih2YXIgciBpbiB0KSgiY29uc3RydWN0b3IiIT1yfHwhbiYmZGJ0LmNhbGwodCxyKSkmJmkucHVzaChyKTtyZXR1cm4gaX0pKHQpfSxtYnQ9YmUoKGZ1bmN0aW9uKHQsZSl7dmFyIG49ZSYmIWUubm9kZVR5cGUmJmUsaT1uJiZ0JiYhdC5ub2RlVHlwZSYmdCxyPWkmJmkuZXhwb3J0cz09PW4/Ynl0LkJ1ZmZlcjp2b2lkIDAsbz1yP3IuYWxsb2NVbnNhZmU6dm9pZCAwO3QuZXhwb3J0cz1mdW5jdGlvbiBhKHQsZSl7aWYoZSlyZXR1cm4gdC5zbGljZSgpO3ZhciBuPXQubGVuZ3RoLGk9bz9vKG4pOm5ldyB0LmNvbnN0cnVjdG9yKG4pO3JldHVybiB0LmNvcHkoaSksaX19KSksZ2J0PWZ1bmN0aW9uIF9idCh0LGUpe2Zvcih2YXIgbj0tMSxpPW51bGw9PXQ/MDp0Lmxlbmd0aCxyPTAsbz1bXTsrK248aTspe3ZhciBhPXRbbl07ZShhLG4sdCkmJihvW3IrK109YSl9cmV0dXJuIG99LHlidD1mdW5jdGlvbiB2YnQoKXtyZXR1cm5bXX0sYmJ0PU9iamVjdC5wcm90b3R5cGUucHJvcGVydHlJc0VudW1lcmFibGUseGJ0PU9iamVjdC5nZXRPd25Qcm9wZXJ0eVN5bWJvbHMsd2J0PXhidD9mdW5jdGlvbih0KXtyZXR1cm4gbnVsbD09dD9bXToodD1PYmplY3QodCksZ2J0KHhidCh0KSwoZnVuY3Rpb24oZSl7cmV0dXJuIGJidC5jYWxsKHQsZSl9KSkpfTp5YnQsU2J0PWZ1bmN0aW9uIE1idCh0LGUpe2Zvcih2YXIgbj0tMSxpPWUubGVuZ3RoLHI9dC5sZW5ndGg7KytuPGk7KXRbcituXT1lW25dO3JldHVybiB0fSxFYnQ9bmJ0KE9iamVjdC5nZXRQcm90b3R5cGVPZixPYmplY3QpLFRidD1PYmplY3QuZ2V0T3duUHJvcGVydHlTeW1ib2xzP2Z1bmN0aW9uKHQpe2Zvcih2YXIgZT1bXTt0OylTYnQoZSx3YnQodCkpLHQ9RWJ0KHQpO3JldHVybiBlfTp5YnQsQWJ0PWZ1bmN0aW9uIENidCh0LGUsbil7dmFyIGk9ZSh0KTtyZXR1cm4gT3Z0KHQpP2k6U2J0KGksbih0KSl9LGtidD1mdW5jdGlvbiBMYnQodCl7cmV0dXJuIEFidCh0LHVidCx3YnQpfSxQYnQ9ZnVuY3Rpb24gSWJ0KHQpe3JldHVybiBBYnQodCxwYnQsVGJ0KX0sTmJ0PVZ5dChieXQsIkRhdGFWaWV3IiksT2J0PVZ5dChieXQsIlByb21pc2UiKSxSYnQ9Vnl0KGJ5dCwiU2V0IiksemJ0PVZ5dChieXQsIldlYWtNYXAiKSxEYnQ9IltvYmplY3QgTWFwXSIsQmJ0PSJbb2JqZWN0IFByb21pc2VdIixIYnQ9IltvYmplY3QgU2V0XSIsRmJ0PSJbb2JqZWN0IFdlYWtNYXBdIixWYnQ9IltvYmplY3QgRGF0YVZpZXddIixqYnQ9RHl0KE5idCksVWJ0PUR5dChVeXQpLEdidD1EeXQoT2J0KSxXYnQ9RHl0KFJidCkscWJ0PUR5dCh6YnQpLFlidD1DeXQ7KE5idCYmWWJ0KG5ldyBOYnQobmV3IEFycmF5QnVmZmVyKDEpKSkhPVZidHx8VXl0JiZZYnQobmV3IFV5dCkhPURidHx8T2J0JiZZYnQoT2J0LnJlc29sdmUoKSkhPUJidHx8UmJ0JiZZYnQobmV3IFJidCkhPUhidHx8emJ0JiZZYnQobmV3IHpidCkhPUZidCkmJihZYnQ9ZnVuY3Rpb24odCl7dmFyIGU9Q3l0KHQpLG49IltvYmplY3QgT2JqZWN0XSI9PWU/dC5jb25zdHJ1Y3Rvcjp2b2lkIDAsaT1uP0R5dChuKToiIjtpZihpKXN3aXRjaChpKXtjYXNlIGpidDpyZXR1cm4gVmJ0O2Nhc2UgVWJ0OnJldHVybiBEYnQ7Y2FzZSBHYnQ6cmV0dXJuIEJidDtjYXNlIFdidDpyZXR1cm4gSGJ0O2Nhc2UgcWJ0OnJldHVybiBGYnR9cmV0dXJuIGV9KTt2YXIgWGJ0PVlidCwkYnQ9T2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eSxLYnQ9Ynl0LlVpbnQ4QXJyYXksWmJ0PWZ1bmN0aW9uIEpidCh0KXt2YXIgZT1uZXcgdC5jb25zdHJ1Y3Rvcih0LmJ5dGVMZW5ndGgpO3JldHVybiBuZXcgS2J0KGUpLnNldChuZXcgS2J0KHQpKSxlfSxRYnQ9L1x3KiQvLHR4dD14eXQ/eHl0LnByb3RvdHlwZTp2b2lkIDAsZXh0PXR4dD90eHQudmFsdWVPZjp2b2lkIDAsbnh0PU9iamVjdC5jcmVhdGUsaXh0PShmdW5jdGlvbigpe2Z1bmN0aW9uIHQoKXt9cmV0dXJuIGZ1bmN0aW9uKGUpe2lmKCFMeXQoZSkpcmV0dXJue307aWYobnh0KXJldHVybiBueHQoZSk7dC5wcm90b3R5cGU9ZTt2YXIgbj1uZXcgdDtyZXR1cm4gdC5wcm90b3R5cGU9dm9pZCAwLG59fSkoKSxyeHQ9cXZ0JiZxdnQuaXNNYXAsb3h0PXJ4dD9HdnQocnh0KTpmdW5jdGlvbiBheHQodCl7cmV0dXJuIFR2dCh0KSYmIltvYmplY3QgTWFwXSI9PVhidCh0KX0sc3h0PXF2dCYmcXZ0LmlzU2V0LGx4dD1zeHQ/R3Z0KHN4dCk6ZnVuY3Rpb24gY3h0KHQpe3JldHVybiBUdnQodCkmJiJbb2JqZWN0IFNldF0iPT1YYnQodCl9LHV4dD0iW29iamVjdCBBcmd1bWVudHNdIixoeHQ9IltvYmplY3QgRnVuY3Rpb25dIixkeHQ9IltvYmplY3QgT2JqZWN0XSIscHh0PXt9O3B4dFt1eHRdPXB4dFsiW29iamVjdCBBcnJheV0iXT1weHRbIltvYmplY3QgQXJyYXlCdWZmZXJdIl09cHh0WyJbb2JqZWN0IERhdGFWaWV3XSJdPXB4dFsiW29iamVjdCBCb29sZWFuXSJdPXB4dFsiW29iamVjdCBEYXRlXSJdPXB4dFsiW29iamVjdCBGbG9hdDMyQXJyYXldIl09cHh0WyJbb2JqZWN0IEZsb2F0NjRBcnJheV0iXT1weHRbIltvYmplY3QgSW50OEFycmF5XSJdPXB4dFsiW29iamVjdCBJbnQxNkFycmF5XSJdPXB4dFsiW29iamVjdCBJbnQzMkFycmF5XSJdPXB4dFsiW29iamVjdCBNYXBdIl09cHh0WyJbb2JqZWN0IE51bWJlcl0iXT1weHRbZHh0XT1weHRbIltvYmplY3QgUmVnRXhwXSJdPXB4dFsiW29iamVjdCBTZXRdIl09cHh0WyJbb2JqZWN0IFN0cmluZ10iXT1weHRbIltvYmplY3QgU3ltYm9sXSJdPXB4dFsiW29iamVjdCBVaW50OEFycmF5XSJdPXB4dFsiW29iamVjdCBVaW50OENsYW1wZWRBcnJheV0iXT1weHRbIltvYmplY3QgVWludDE2QXJyYXldIl09cHh0WyJbb2JqZWN0IFVpbnQzMkFycmF5XSJdPSEwLHB4dFsiW29iamVjdCBFcnJvcl0iXT1weHRbaHh0XT1weHRbIltvYmplY3QgV2Vha01hcF0iXT0hMTt2YXIgZnh0PWZ1bmN0aW9uIHQoZSxuLGkscixvLGEpe3ZhciBzLGw9MSZuLGM9MiZuLHU9NCZuO2lmKGkmJihzPW8/aShlLHIsbyxhKTppKGUpKSx2b2lkIDAhPT1zKXJldHVybiBzO2lmKCFMeXQoZSkpcmV0dXJuIGU7dmFyIGg9T3Z0KGUpO2lmKGgpe2lmKHM9KGZ1bmN0aW9uIGQodCl7dmFyIGU9dC5sZW5ndGgsbj1uZXcgdC5jb25zdHJ1Y3RvcihlKTtyZXR1cm4gZSYmInN0cmluZyI9PXR5cGVvZiB0WzBdJiYkYnQuY2FsbCh0LCJpbmRleCIpJiYobi5pbmRleD10LmluZGV4LG4uaW5wdXQ9dC5pbnB1dCksbn0pKGUpLCFsKXJldHVybihmdW5jdGlvbiBwKHQsZSl7dmFyIG49LTEsaT10Lmxlbmd0aDtmb3IoZXx8KGU9QXJyYXkoaSkpOysrbjxpOyllW25dPXRbbl07cmV0dXJuIGV9KShlLHMpfWVsc2V7dmFyIGY9WGJ0KGUpLG09Zj09aHh0fHwiW29iamVjdCBHZW5lcmF0b3JGdW5jdGlvbl0iPT1mO2lmKER2dChlKSlyZXR1cm4gbWJ0KGUsbCk7aWYoZj09ZHh0fHxmPT11eHR8fG0mJiFvKXtpZihzPWN8fG0/e306KGZ1bmN0aW9uIGcodCl7cmV0dXJuImZ1bmN0aW9uIiE9dHlwZW9mIHQuY29uc3RydWN0b3J8fHRidCh0KT97fTppeHQoRWJ0KHQpKX0pKGUpLCFsKXJldHVybiBjPyhmdW5jdGlvbiB5KHQsZSl7cmV0dXJuIE12dCh0LFRidCh0KSxlKX0pKGUsKGZ1bmN0aW9uIF8odCxlKXtyZXR1cm4gdCYmTXZ0KGUscGJ0KGUpLHQpfSkocyxlKSk6KGZ1bmN0aW9uIGIodCxlKXtyZXR1cm4gTXZ0KHQsd2J0KHQpLGUpfSkoZSwoZnVuY3Rpb24gdih0LGUpe3JldHVybiB0JiZNdnQoZSx1YnQoZSksdCl9KShzLGUpKX1lbHNle2lmKCFweHRbZl0pcmV0dXJuIG8/ZTp7fTtzPShmdW5jdGlvbiB4KHQsZSxuKXt2YXIgaT10LmNvbnN0cnVjdG9yO3N3aXRjaChlKXtjYXNlIltvYmplY3QgQXJyYXlCdWZmZXJdIjpyZXR1cm4gWmJ0KHQpO2Nhc2UiW29iamVjdCBCb29sZWFuXSI6Y2FzZSJbb2JqZWN0IERhdGVdIjpyZXR1cm4gbmV3IGkoK3QpO2Nhc2UiW29iamVjdCBEYXRhVmlld10iOnJldHVybihmdW5jdGlvbiByKHQsZSl7dmFyIG49ZT9aYnQodC5idWZmZXIpOnQuYnVmZmVyO3JldHVybiBuZXcgdC5jb25zdHJ1Y3RvcihuLHQuYnl0ZU9mZnNldCx0LmJ5dGVMZW5ndGgpfSkodCxuKTtjYXNlIltvYmplY3QgRmxvYXQzMkFycmF5XSI6Y2FzZSJbb2JqZWN0IEZsb2F0NjRBcnJheV0iOmNhc2UiW29iamVjdCBJbnQ4QXJyYXldIjpjYXNlIltvYmplY3QgSW50MTZBcnJheV0iOmNhc2UiW29iamVjdCBJbnQzMkFycmF5XSI6Y2FzZSJbb2JqZWN0IFVpbnQ4QXJyYXldIjpjYXNlIltvYmplY3QgVWludDhDbGFtcGVkQXJyYXldIjpjYXNlIltvYmplY3QgVWludDE2QXJyYXldIjpjYXNlIltvYmplY3QgVWludDMyQXJyYXldIjpyZXR1cm4oZnVuY3Rpb24gbyh0LGUpe3ZhciBuPWU/WmJ0KHQuYnVmZmVyKTp0LmJ1ZmZlcjtyZXR1cm4gbmV3IHQuY29uc3RydWN0b3Iobix0LmJ5dGVPZmZzZXQsdC5sZW5ndGgpfSkodCxuKTtjYXNlIltvYmplY3QgTWFwXSI6cmV0dXJuIG5ldyBpO2Nhc2UiW29iamVjdCBOdW1iZXJdIjpjYXNlIltvYmplY3QgU3RyaW5nXSI6cmV0dXJuIG5ldyBpKHQpO2Nhc2UiW29iamVjdCBSZWdFeHBdIjpyZXR1cm4oZnVuY3Rpb24gYSh0KXt2YXIgZT1uZXcgdC5jb25zdHJ1Y3Rvcih0LnNvdXJjZSxRYnQuZXhlYyh0KSk7cmV0dXJuIGUubGFzdEluZGV4PXQubGFzdEluZGV4LGV9KSh0KTtjYXNlIltvYmplY3QgU2V0XSI6cmV0dXJuIG5ldyBpO2Nhc2UiW29iamVjdCBTeW1ib2xdIjpyZXR1cm4oZnVuY3Rpb24gcyh0KXtyZXR1cm4gZXh0P09iamVjdChleHQuY2FsbCh0KSk6e319KSh0KX19KShlLGYsbCl9fWF8fChhPW5ldyBtdnQpO3ZhciB3PWEuZ2V0KGUpO2lmKHcpcmV0dXJuIHc7YS5zZXQoZSxzKSxseHQoZSk/ZS5mb3JFYWNoKChmdW5jdGlvbihyKXtzLmFkZCh0KHIsbixpLHIsZSxhKSl9KSk6b3h0KGUpJiZlLmZvckVhY2goKGZ1bmN0aW9uKHIsbyl7cy5zZXQobyx0KHIsbixpLG8sZSxhKSl9KSk7dmFyIFM9dT9jP1BidDprYnQ6Yz9rZXlzSW46dWJ0LE09aD92b2lkIDA6UyhlKTtyZXR1cm4gZ3Z0KE18fGUsKGZ1bmN0aW9uKHIsbyl7TSYmKHI9ZVtvPXJdKSx3dnQocyxvLHQocixuLGksbyxlLGEpKX0pKSxzfSxteHQ9ZnVuY3Rpb24gZ3h0KHQpe3JldHVybiBmdW5jdGlvbigpe3JldHVybiB0fX0sX3h0PShmdW5jdGlvbiB5eHQodCl7cmV0dXJuIGZ1bmN0aW9uKGUsbixpKXtmb3IodmFyIHI9LTEsbz1PYmplY3QoZSksYT1pKGUpLHM9YS5sZW5ndGg7cy0tOyl7dmFyIGw9YVt0P3M6KytyXTtpZighMT09PW4ob1tsXSxsLG8pKWJyZWFrfXJldHVybiBlfX0pKCksdnh0PWZ1bmN0aW9uIGJ4dCh0LGUpe3JldHVybiB0JiZfeHQodCxlLHVidCl9LHh4dD0oZnVuY3Rpb24gd3h0KHQsZSl7cmV0dXJuIGZ1bmN0aW9uKG4saSl7aWYobnVsbD09bilyZXR1cm4gbjtpZighbGJ0KG4pKXJldHVybiB0KG4saSk7Zm9yKHZhciByPW4ubGVuZ3RoLG89ZT9yOi0xLGE9T2JqZWN0KG4pOyhlP28tLTorK288cikmJiExIT09aShhW29dLG8sYSk7KTtyZXR1cm4gbn19KSh2eHQpLFN4dD1mdW5jdGlvbiBNeHQodCl7cmV0dXJuIHR9LEV4dD1mdW5jdGlvbiBUeHQodCxlKXt2YXIgbj1bXTtyZXR1cm4geHh0KHQsKGZ1bmN0aW9uKHQsaSxyKXtlKHQsaSxyKSYmbi5wdXNoKHQpfSkpLG59O2Z1bmN0aW9uIEF4dCh0KXt2YXIgZT0tMSxuPW51bGw9PXQ/MDp0Lmxlbmd0aDtmb3IodGhpcy5fX2RhdGFfXz1uZXcgbHZ0OysrZTxuOyl0aGlzLmFkZCh0W2VdKX1BeHQucHJvdG90eXBlLmFkZD1BeHQucHJvdG90eXBlLnB1c2g9ZnVuY3Rpb24gQ3h0KHQpe3JldHVybiB0aGlzLl9fZGF0YV9fLnNldCh0LCJfX2xvZGFzaF9oYXNoX3VuZGVmaW5lZF9fIiksdGhpc30sQXh0LnByb3RvdHlwZS5oYXM9ZnVuY3Rpb24ga3h0KHQpe3JldHVybiB0aGlzLl9fZGF0YV9fLmhhcyh0KX07dmFyIEx4dD1BeHQsUHh0PWZ1bmN0aW9uIEl4dCh0LGUpe2Zvcih2YXIgbj0tMSxpPW51bGw9PXQ/MDp0Lmxlbmd0aDsrK248aTspaWYoZSh0W25dLG4sdCkpcmV0dXJuITA7cmV0dXJuITF9LE54dD1mdW5jdGlvbiBPeHQodCxlKXtyZXR1cm4gdC5oYXMoZSl9LFJ4dD1mdW5jdGlvbiB6eHQodCxlLG4saSxyLG8pe3ZhciBhPTEmbixzPXQubGVuZ3RoLGw9ZS5sZW5ndGg7aWYocyE9bCYmIShhJiZsPnMpKXJldHVybiExO3ZhciBjPW8uZ2V0KHQpO2lmKGMmJm8uZ2V0KGUpKXJldHVybiBjPT1lO3ZhciB1PS0xLGg9ITAsZD0yJm4/bmV3IEx4dDp2b2lkIDA7Zm9yKG8uc2V0KHQsZSksby5zZXQoZSx0KTsrK3U8czspe3ZhciBwPXRbdV0sZj1lW3VdO2lmKGkpdmFyIG09YT9pKGYscCx1LGUsdCxvKTppKHAsZix1LHQsZSxvKTtpZih2b2lkIDAhPT1tKXtpZihtKWNvbnRpbnVlO2g9ITE7YnJlYWt9aWYoZCl7aWYoIVB4dChlLChmdW5jdGlvbih0LGUpe2lmKCFOeHQoZCxlKSYmKHA9PT10fHxyKHAsdCxuLGksbykpKXJldHVybiBkLnB1c2goZSl9KSkpe2g9ITE7YnJlYWt9fWVsc2UgaWYocCE9PWYmJiFyKHAsZixuLGksbykpe2g9ITE7YnJlYWt9fXJldHVybiBvLmRlbGV0ZSh0KSxvLmRlbGV0ZShlKSxofSxEeHQ9ZnVuY3Rpb24gQnh0KHQpe3ZhciBlPS0xLG49QXJyYXkodC5zaXplKTtyZXR1cm4gdC5mb3JFYWNoKChmdW5jdGlvbih0LGkpe25bKytlXT1baSx0XX0pKSxufSxIeHQ9ZnVuY3Rpb24gRnh0KHQpe3ZhciBlPS0xLG49QXJyYXkodC5zaXplKTtyZXR1cm4gdC5mb3JFYWNoKChmdW5jdGlvbih0KXtuWysrZV09dH0pKSxufSxWeHQ9eHl0P3h5dC5wcm90b3R5cGU6dm9pZCAwLGp4dD1WeHQ/Vnh0LnZhbHVlT2Y6dm9pZCAwLFV4dD1PYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LEd4dD0iW29iamVjdCBBcmd1bWVudHNdIixXeHQ9IltvYmplY3QgQXJyYXldIixxeHQ9IltvYmplY3QgT2JqZWN0XSIsWXh0PU9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHksWHh0PWZ1bmN0aW9uIHQoZSxuLGkscixvKXtyZXR1cm4gZT09PW58fChudWxsPT1lfHxudWxsPT1ufHwhVHZ0KGUpJiYhVHZ0KG4pP2UhPWUmJm4hPW46KGZ1bmN0aW9uIGEodCxlLG4saSxyLG8pe3ZhciBhPU92dCh0KSxzPU92dChlKSxsPWE/V3h0OlhidCh0KSxjPXM/V3h0OlhidChlKSx1PShsPWw9PUd4dD9xeHQ6bCk9PXF4dCxoPShjPWM9PUd4dD9xeHQ6Yyk9PXF4dCxkPWw9PWM7aWYoZCYmRHZ0KHQpKXtpZighRHZ0KGUpKXJldHVybiExO2E9ITAsdT0hMX1pZihkJiYhdSlyZXR1cm4gb3x8KG89bmV3IG12dCksYXx8WHZ0KHQpP1J4dCh0LGUsbixpLHIsbyk6KGZ1bmN0aW9uIHAodCxlLG4saSxyLG8sYSl7c3dpdGNoKG4pe2Nhc2UiW29iamVjdCBEYXRhVmlld10iOmlmKHQuYnl0ZUxlbmd0aCE9ZS5ieXRlTGVuZ3RofHx0LmJ5dGVPZmZzZXQhPWUuYnl0ZU9mZnNldClyZXR1cm4hMTt0PXQuYnVmZmVyLGU9ZS5idWZmZXI7Y2FzZSJbb2JqZWN0IEFycmF5QnVmZmVyXSI6cmV0dXJuISh0LmJ5dGVMZW5ndGghPWUuYnl0ZUxlbmd0aHx8IW8obmV3IEtidCh0KSxuZXcgS2J0KGUpKSk7Y2FzZSJbb2JqZWN0IEJvb2xlYW5dIjpjYXNlIltvYmplY3QgRGF0ZV0iOmNhc2UiW29iamVjdCBOdW1iZXJdIjpyZXR1cm4gb3l0KCt0LCtlKTtjYXNlIltvYmplY3QgRXJyb3JdIjpyZXR1cm4gdC5uYW1lPT1lLm5hbWUmJnQubWVzc2FnZT09ZS5tZXNzYWdlO2Nhc2UiW29iamVjdCBSZWdFeHBdIjpjYXNlIltvYmplY3QgU3RyaW5nXSI6cmV0dXJuIHQ9PWUrIiI7Y2FzZSJbb2JqZWN0IE1hcF0iOnZhciBzPUR4dDtjYXNlIltvYmplY3QgU2V0XSI6aWYoc3x8KHM9SHh0KSx0LnNpemUhPWUuc2l6ZSYmISgxJmkpKXJldHVybiExO3ZhciBsPWEuZ2V0KHQpO2lmKGwpcmV0dXJuIGw9PWU7aXw9MixhLnNldCh0LGUpO3ZhciBjPVJ4dChzKHQpLHMoZSksaSxyLG8sYSk7cmV0dXJuIGEuZGVsZXRlKHQpLGM7Y2FzZSJbb2JqZWN0IFN5bWJvbF0iOmlmKGp4dClyZXR1cm4ganh0LmNhbGwodCk9PWp4dC5jYWxsKGUpfXJldHVybiExfSkodCxlLGwsbixpLHIsbyk7aWYoISgxJm4pKXt2YXIgZj11JiZZeHQuY2FsbCh0LCJfX3dyYXBwZWRfXyIpLG09aCYmWXh0LmNhbGwoZSwiX193cmFwcGVkX18iKTtpZihmfHxtKXt2YXIgZz1mP3QudmFsdWUoKTp0LF89bT9lLnZhbHVlKCk6ZTtyZXR1cm4gb3x8KG89bmV3IG12dCkscihnLF8sbixpLG8pfX1yZXR1cm4hIWQmJihvfHwobz1uZXcgbXZ0KSwoZnVuY3Rpb24geSh0LGUsbixpLHIsbyl7dmFyIGE9MSZuLHM9a2J0KHQpLGw9cy5sZW5ndGg7aWYobCE9a2J0KGUpLmxlbmd0aCYmIWEpcmV0dXJuITE7Zm9yKHZhciBjPWw7Yy0tOyl7dmFyIHU9c1tjXTtpZighKGE/dSBpbiBlOlV4dC5jYWxsKGUsdSkpKXJldHVybiExfXZhciBoPW8uZ2V0KHQpO2lmKGgmJm8uZ2V0KGUpKXJldHVybiBoPT1lO3ZhciBkPSEwO28uc2V0KHQsZSksby5zZXQoZSx0KTtmb3IodmFyIHA9YTsrK2M8bDspe3ZhciBmPXRbdT1zW2NdXSxtPWVbdV07aWYoaSl2YXIgZz1hP2kobSxmLHUsZSx0LG8pOmkoZixtLHUsdCxlLG8pO2lmKCEodm9pZCAwPT09Zz9mPT09bXx8cihmLG0sbixpLG8pOmcpKXtkPSExO2JyZWFrfXB8fChwPSJjb25zdHJ1Y3RvciI9PXUpfWlmKGQmJiFwKXt2YXIgXz10LmNvbnN0cnVjdG9yLHk9ZS5jb25zdHJ1Y3RvcjtfPT15fHwhKCJjb25zdHJ1Y3RvciJpbiB0KXx8ISgiY29uc3RydWN0b3IiaW4gZSl8fCJmdW5jdGlvbiI9PXR5cGVvZiBfJiZfIGluc3RhbmNlb2YgXyYmImZ1bmN0aW9uIj09dHlwZW9mIHkmJnkgaW5zdGFuY2VvZiB5fHwoZD0hMSl9cmV0dXJuIG8uZGVsZXRlKHQpLG8uZGVsZXRlKGUpLGR9KSh0LGUsbixpLHIsbykpfSkoZSxuLGkscix0LG8pKX0sJHh0PWZ1bmN0aW9uIEt4dCh0KXtyZXR1cm4gdD09dCYmIUx5dCh0KX0sWnh0PWZ1bmN0aW9uIEp4dCh0LGUpe3JldHVybiBmdW5jdGlvbihuKXtyZXR1cm4gbnVsbCE9biYmblt0XT09PWUmJih2b2lkIDAhPT1lfHx0IGluIE9iamVjdChuKSl9fSxReHQ9ZnVuY3Rpb24gdHd0KHQpe3JldHVybiJzeW1ib2wiPT10eXBlb2YgdHx8VHZ0KHQpJiYiW29iamVjdCBTeW1ib2xdIj09Q3l0KHQpfSxld3Q9L1wufFxbKD86W15bXF1dKnwoWyInXSkoPzooPyFcMSlbXlxcXXxcXC4pKj9cMSlcXS8sbnd0PS9eXHcqJC8saXd0PWZ1bmN0aW9uIHJ3dCh0LGUpe2lmKE92dCh0KSlyZXR1cm4hMTt2YXIgbj10eXBlb2YgdDtyZXR1cm4hKCJudW1iZXIiIT1uJiYic3ltYm9sIiE9biYmImJvb2xlYW4iIT1uJiZudWxsIT10JiYhUXh0KHQpKXx8bnd0LnRlc3QodCl8fCFld3QudGVzdCh0KXx8bnVsbCE9ZSYmdCBpbiBPYmplY3QoZSl9O2Z1bmN0aW9uIG93dCh0LGUpe2lmKCJmdW5jdGlvbiIhPXR5cGVvZiB0fHxudWxsIT1lJiYiZnVuY3Rpb24iIT10eXBlb2YgZSl0aHJvdyBuZXcgVHlwZUVycm9yKCJFeHBlY3RlZCBhIGZ1bmN0aW9uIik7dmFyIG49ZnVuY3Rpb24oKXt2YXIgaT1hcmd1bWVudHMscj1lP2UuYXBwbHkodGhpcyxpKTppWzBdLG89bi5jYWNoZTtpZihvLmhhcyhyKSlyZXR1cm4gby5nZXQocik7dmFyIGE9dC5hcHBseSh0aGlzLGkpO3JldHVybiBuLmNhY2hlPW8uc2V0KHIsYSl8fG8sYX07cmV0dXJuIG4uY2FjaGU9bmV3KG93dC5DYWNoZXx8bHZ0KSxufW93dC5DYWNoZT1sdnQ7dmFyIGF3dCxzd3Q9b3d0LGx3dD0vW14uW1xdXSt8XFsoPzooLT9cZCsoPzpcLlxkKyk/KXwoWyInXSkoKD86KD8hXDIpW15cXF18XFwuKSo/KVwyKVxdfCg/PSg/OlwufFxbXF0pKD86XC58XFtcXXwkKSkvZyxjd3Q9L1xcKFxcKT8vZyx1d3Q9KGZ1bmN0aW9uIGh3dCh0KXt2YXIgZT1zd3QodCwoZnVuY3Rpb24odCl7cmV0dXJuIDUwMD09PW4uc2l6ZSYmbi5jbGVhcigpLHR9KSksbj1lLmNhY2hlO3JldHVybiBlfSkoKGZ1bmN0aW9uKHQpe3ZhciBlPVtdO3JldHVybiA0Nj09PXQuY2hhckNvZGVBdCgwKSYmZS5wdXNoKCIiKSx0LnJlcGxhY2UobHd0LChmdW5jdGlvbih0LG4saSxyKXtlLnB1c2goaT9yLnJlcGxhY2UoY3d0LCIkMSIpOm58fHQpfSkpLGV9KSksZHd0PWZ1bmN0aW9uIHB3dCh0LGUpe2Zvcih2YXIgbj0tMSxpPW51bGw9PXQ/MDp0Lmxlbmd0aCxyPUFycmF5KGkpOysrbjxpOylyW25dPWUodFtuXSxuLHQpO3JldHVybiByfSxmd3Q9eHl0P3h5dC5wcm90b3R5cGU6dm9pZCAwLG13dD1md3Q/Znd0LnRvU3RyaW5nOnZvaWQgMCxnd3Q9ZnVuY3Rpb24gdChlKXtpZigic3RyaW5nIj09dHlwZW9mIGUpcmV0dXJuIGU7aWYoT3Z0KGUpKXJldHVybiBkd3QoZSx0KSsiIjtpZihReHQoZSkpcmV0dXJuIG13dD9td3QuY2FsbChlKToiIjt2YXIgbj1lKyIiO3JldHVybiIwIj09biYmMS9lPT0tMS8wPyItMCI6bn0sX3d0PWZ1bmN0aW9uIHl3dCh0KXtyZXR1cm4gbnVsbD09dD8iIjpnd3QodCl9LHZ3dD1mdW5jdGlvbiBid3QodCxlKXtyZXR1cm4gT3Z0KHQpP3Q6aXd0KHQsZSk/W3RdOnV3dChfd3QodCkpfSx4d3Q9ZnVuY3Rpb24gd3d0KHQpe2lmKCJzdHJpbmciPT10eXBlb2YgdHx8UXh0KHQpKXJldHVybiB0O3ZhciBlPXQrIiI7cmV0dXJuIjAiPT1lJiYxL3Q9PS0xLzA/Ii0wIjplfSxTd3Q9ZnVuY3Rpb24gTXd0KHQsZSl7Zm9yKHZhciBuPTAsaT0oZT12d3QoZSx0KSkubGVuZ3RoO251bGwhPXQmJm48aTspdD10W3h3dChlW24rK10pXTtyZXR1cm4gbiYmbj09aT90OnZvaWQgMH0sRXd0PWZ1bmN0aW9uIFR3dCh0LGUpe3JldHVybiBudWxsIT10JiZlIGluIE9iamVjdCh0KX0sQXd0PWZ1bmN0aW9uIEN3dCh0LGUsbil7Zm9yKHZhciBpPS0xLHI9KGU9dnd0KGUsdCkpLmxlbmd0aCxvPSExOysraTxyOyl7dmFyIGE9eHd0KGVbaV0pO2lmKCEobz1udWxsIT10JiZuKHQsYSkpKWJyZWFrO3Q9dFthXX1yZXR1cm4gb3x8KytpIT1yP286ISEocj1udWxsPT10PzA6dC5sZW5ndGgpJiZWdnQocikmJkh2dChhLHIpJiYoT3Z0KHQpfHxOdnQodCkpfSxrd3Q9ZnVuY3Rpb24gTHd0KHQpe3JldHVybiBmdW5jdGlvbihlKXtyZXR1cm4gbnVsbD09ZT92b2lkIDA6ZVt0XX19LFB3dD1mdW5jdGlvbiBJd3QodCl7cmV0dXJuImZ1bmN0aW9uIj09dHlwZW9mIHQ/dDpudWxsPT10P1N4dDoib2JqZWN0Ij09dHlwZW9mIHQ/T3Z0KHQpPyhmdW5jdGlvbiBlKHQsbil7cmV0dXJuIGl3dCh0KSYmJHh0KG4pP1p4dCh4d3QodCksbik6ZnVuY3Rpb24oZSl7dmFyIGk9KGZ1bmN0aW9uIHIodCxlLG4pe3ZhciBpPW51bGw9PXQ/dm9pZCAwOlN3dCh0LGUpO3JldHVybiB2b2lkIDA9PT1pP246aX0pKGUsdCk7cmV0dXJuIHZvaWQgMD09PWkmJmk9PT1uPyhmdW5jdGlvbiBvKHQsZSl7cmV0dXJuIG51bGwhPXQmJkF3dCh0LGUsRXd0KX0pKGUsdCk6WHh0KG4saSwzKX19KSh0WzBdLHRbMV0pOihmdW5jdGlvbiBuKHQpe3ZhciBlPShmdW5jdGlvbiBuKHQpe2Zvcih2YXIgZT11YnQodCksbj1lLmxlbmd0aDtuLS07KXt2YXIgaT1lW25dLHI9dFtpXTtlW25dPVtpLHIsJHh0KHIpXX1yZXR1cm4gZX0pKHQpO3JldHVybiAxPT1lLmxlbmd0aCYmZVswXVsyXT9aeHQoZVswXVswXSxlWzBdWzFdKTpmdW5jdGlvbihuKXtyZXR1cm4gbj09PXR8fChmdW5jdGlvbiBpKHQsZSxuLHIpe3ZhciBvPW4ubGVuZ3RoLGE9byxzPSFyO2lmKG51bGw9PXQpcmV0dXJuIWE7Zm9yKHQ9T2JqZWN0KHQpO28tLTspe3ZhciBsPW5bb107aWYocyYmbFsyXT9sWzFdIT09dFtsWzBdXTohKGxbMF1pbiB0KSlyZXR1cm4hMX1mb3IoOysrbzxhOyl7dmFyIGM9KGw9bltvXSlbMF0sdT10W2NdLGg9bFsxXTtpZihzJiZsWzJdKXtpZih2b2lkIDA9PT11JiYhKGMgaW4gdCkpcmV0dXJuITF9ZWxzZXt2YXIgZD1uZXcgbXZ0O2lmKHIpdmFyIHA9cih1LGgsYyx0LGUsZCk7aWYoISh2b2lkIDA9PT1wP1h4dChoLHUsMyxyLGQpOnApKXJldHVybiExfX1yZXR1cm4hMH0pKG4sdCxlKX19KSh0KTooZnVuY3Rpb24gaSh0KXtyZXR1cm4gaXd0KHQpP2t3dCh4d3QodCkpOihmdW5jdGlvbiBlKHQpe3JldHVybiBmdW5jdGlvbihlKXtyZXR1cm4gU3d0KGUsdCl9fSkodCl9KSh0KX0sTnd0PU9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHksT3d0PWZ1bmN0aW9uIFJ3dCh0LGUpe3JldHVybiBudWxsIT10JiZOd3QuY2FsbCh0LGUpfSx6d3Q9T2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eSxEd3Q9ZnVuY3Rpb24gQnd0KHQsZSl7dmFyIG49LTEsaT1sYnQodCk/QXJyYXkodC5sZW5ndGgpOltdO3JldHVybiB4eHQodCwoZnVuY3Rpb24odCxyLG8pe2lbKytuXT1lKHQscixvKX0pKSxpfSxId3Q9ZnVuY3Rpb24gRnd0KHQsZSxuLGkpe3ZhciByPS0xLG89bnVsbD09dD8wOnQubGVuZ3RoO2ZvcihpJiZvJiYobj10Wysrcl0pOysrcjxvOyluPWUobix0W3JdLHIsdCk7cmV0dXJuIG59LFZ3dD1mdW5jdGlvbiBqd3QodCxlLG4saSxyKXtyZXR1cm4gcih0LChmdW5jdGlvbih0LHIsbyl7bj1pPyhpPSExLHQpOmUobix0LHIsbyl9KSksbn0sVXd0PWt3dCgibGVuZ3RoIiksR3d0PVJlZ0V4cCgiW1xcdTIwMGRcXHVkODAwLVxcdWRmZmZcXHUwMzAwLVxcdTAzNmZcXHVmZTIwLVxcdWZlMmZcXHUyMGQwLVxcdTIwZmZcXHVmZTBlXFx1ZmUwZl0iKSxXd3Q9IltcXHUwMzAwLVxcdTAzNmZcXHVmZTIwLVxcdWZlMmZcXHUyMGQwLVxcdTIwZmZdIixxd3Q9IlxcdWQ4M2NbXFx1ZGZmYi1cXHVkZmZmXSIsWXd0PSJbXlxcdWQ4MDAtXFx1ZGZmZl0iLFh3dD0iKD86XFx1ZDgzY1tcXHVkZGU2LVxcdWRkZmZdKXsyfSIsJHd0PSJbXFx1ZDgwMC1cXHVkYmZmXVtcXHVkYzAwLVxcdWRmZmZdIixLd3Q9Iig/OiIrV3d0KyJ8Iitxd3QrIik/Iixad3Q9IltcXHVmZTBlXFx1ZmUwZl0/IixKd3Q9Wnd0K0t3dCsiKD86XFx1MjAwZCg/OiIrW1l3dCxYd3QsJHd0XS5qb2luKCJ8IikrIikiK1p3dCtLd3QrIikqIixRd3Q9Iig/OiIrW1l3dCtXd3QrIj8iLFd3dCxYd3QsJHd0LCJbXFx1ZDgwMC1cXHVkZmZmXSJdLmpvaW4oInwiKSsiKSIsdFN0PVJlZ0V4cChxd3QrIig/PSIrcXd0KyIpfCIrUXd0K0p3dCwiZyIpLGVTdD14eXQ/eHl0LmlzQ29uY2F0U3ByZWFkYWJsZTp2b2lkIDAsblN0PWZ1bmN0aW9uIGlTdCh0KXtyZXR1cm4gT3Z0KHQpfHxOdnQodCl8fCEhKGVTdCYmdCYmdFtlU3RdKX0sclN0PWZ1bmN0aW9uIHQoZSxuLGkscixvKXt2YXIgYT0tMSxzPWUubGVuZ3RoO2ZvcihpfHwoaT1uU3QpLG98fChvPVtdKTsrK2E8czspe3ZhciBsPWVbYV07bj4wJiZpKGwpP24+MT90KGwsbi0xLGkscixvKTpTYnQobyxsKTpyfHwob1tvLmxlbmd0aF09bCl9cmV0dXJuIG99LG9TdD1mdW5jdGlvbiBhU3QodCxlLG4pe3N3aXRjaChuLmxlbmd0aCl7Y2FzZSAwOnJldHVybiB0LmNhbGwoZSk7Y2FzZSAxOnJldHVybiB0LmNhbGwoZSxuWzBdKTtjYXNlIDI6cmV0dXJuIHQuY2FsbChlLG5bMF0sblsxXSk7Y2FzZSAzOnJldHVybiB0LmNhbGwoZSxuWzBdLG5bMV0sblsyXSl9cmV0dXJuIHQuYXBwbHkoZSxuKX0sc1N0PU1hdGgubWF4LGxTdD1EYXRlLm5vdyxjU3Q9KGZ1bmN0aW9uIHVTdCh0KXt2YXIgZT0wLG49MDtyZXR1cm4gZnVuY3Rpb24oKXt2YXIgaT1sU3QoKSxyPTE2LShpLW4pO2lmKG49aSxyPjApe2lmKCsrZT49ODAwKXJldHVybiBhcmd1bWVudHNbMF19ZWxzZSBlPTA7cmV0dXJuIHQuYXBwbHkodm9pZCAwLGFyZ3VtZW50cyl9fSkoeXZ0P2Z1bmN0aW9uKHQsZSl7cmV0dXJuIHl2dCh0LCJ0b1N0cmluZyIse2NvbmZpZ3VyYWJsZTohMCxlbnVtZXJhYmxlOiExLHZhbHVlOm14dChlKSx3cml0YWJsZTohMH0pfTpTeHQpLGhTdD1mdW5jdGlvbiBkU3QodCl7cmV0dXJuIHQhPXR9LHBTdD1mdW5jdGlvbiBmU3QodCxlKXtyZXR1cm4hKG51bGw9PXR8fCF0Lmxlbmd0aCkmJihmdW5jdGlvbiBuKHQsZSxpKXtyZXR1cm4gZT09ZT8oZnVuY3Rpb24gcih0LGUsbil7Zm9yKHZhciBpPW4tMSxyPXQubGVuZ3RoOysraTxyOylpZih0W2ldPT09ZSlyZXR1cm4gaTtyZXR1cm4tMX0pKHQsZSxpKTooZnVuY3Rpb24gbyh0LGUsbixpKXtmb3IodmFyIHI9dC5sZW5ndGgsbz1uKyhpPzE6LTEpO2k/by0tOisrbzxyOylpZihlKHRbb10sbyx0KSlyZXR1cm4gbztyZXR1cm4tMX0pKHQsaFN0LGkpfSkodCxlLDApPi0xfSxtU3Q9ZnVuY3Rpb24gZ1N0KHQsZSxuKXtmb3IodmFyIGk9LTEscj1udWxsPT10PzA6dC5sZW5ndGg7KytpPHI7KWlmKG4oZSx0W2ldKSlyZXR1cm4hMDtyZXR1cm4hMX0sX1N0PVJidCYmMS9IeHQobmV3IFJidChbLC0wXSkpWzFdPT0xLzA/ZnVuY3Rpb24odCl7cmV0dXJuIG5ldyBSYnQodCl9OmZ1bmN0aW9uIHlTdCgpe30sdlN0PWZ1bmN0aW9uIGJTdCh0KXtyZXR1cm4gVHZ0KHQpJiZsYnQodCl9LHhTdD0oZnVuY3Rpb24gd1N0KHQsZSl7cmV0dXJuIGNTdCgoZnVuY3Rpb24gbih0LGUsaSl7cmV0dXJuIGU9c1N0KHZvaWQgMD09PWU/dC5sZW5ndGgtMTplLDApLGZ1bmN0aW9uKCl7Zm9yKHZhciBuPWFyZ3VtZW50cyxyPS0xLG89c1N0KG4ubGVuZ3RoLWUsMCksYT1BcnJheShvKTsrK3I8bzspYVtyXT1uW2Urcl07cj0tMTtmb3IodmFyIHM9QXJyYXkoZSsxKTsrK3I8ZTspc1tyXT1uW3JdO3JldHVybiBzW2VdPWkoYSksb1N0KHQsdGhpcyxzKX19KSh0LGUsU3h0KSx0KyIiKX0pKChmdW5jdGlvbih0KXtyZXR1cm4oZnVuY3Rpb24gZSh0LG4saSl7dmFyIHI9LTEsbz1wU3QsYT10Lmxlbmd0aCxzPSEwLGw9W10sYz1sO2lmKGkpcz0hMSxvPW1TdDtlbHNlIGlmKGE+PTIwMCl7dmFyIHU9bj9udWxsOl9TdCh0KTtpZih1KXJldHVybiBIeHQodSk7cz0hMSxvPU54dCxjPW5ldyBMeHR9ZWxzZSBjPW4/W106bDt0OmZvcig7KytyPGE7KXt2YXIgaD10W3JdLGQ9bj9uKGgpOmg7aWYoaD1pfHwwIT09aD9oOjAscyYmZD09ZCl7Zm9yKHZhciBwPWMubGVuZ3RoO3AtLTspaWYoY1twXT09PWQpY29udGludWUgdDtuJiZjLnB1c2goZCksbC5wdXNoKGgpfWVsc2UgbyhjLGQsaSl8fChjIT09bCYmYy5wdXNoKGQpLGwucHVzaChoKSl9cmV0dXJuIGx9KShyU3QodCwxLHZTdCwhMCkpfSkpO3RyeXthd3Q9e2Nsb25lOmZ1bmN0aW9uIFNTdCh0KXtyZXR1cm4gZnh0KHQsNCl9LGNvbnN0YW50Om14dCxlYWNoOmZ1bmN0aW9uIE1TdCh0LGUpe3JldHVybihPdnQodCk/Z3Z0Onh4dCkodCwoZnVuY3Rpb24gbih0KXtyZXR1cm4iZnVuY3Rpb24iPT10eXBlb2YgdD90OlN4dH0pKGUpKX0sZmlsdGVyOmZ1bmN0aW9uIEVTdCh0LGUpe3JldHVybihPdnQodCk/Z2J0OkV4dCkodCxQd3QoZSkpfSxoYXM6ZnVuY3Rpb24gVFN0KHQsZSl7cmV0dXJuIG51bGwhPXQmJkF3dCh0LGUsT3d0KX0saXNBcnJheTpPdnQsaXNFbXB0eTpmdW5jdGlvbiBBU3QodCl7aWYobnVsbD09dClyZXR1cm4hMDtpZihsYnQodCkmJihPdnQodCl8fCJzdHJpbmciPT10eXBlb2YgdHx8ImZ1bmN0aW9uIj09dHlwZW9mIHQuc3BsaWNlfHxEdnQodCl8fFh2dCh0KXx8TnZ0KHQpKSlyZXR1cm4hdC5sZW5ndGg7dmFyIGU9WGJ0KHQpO2lmKCJbb2JqZWN0IE1hcF0iPT1lfHwiW29iamVjdCBTZXRdIj09ZSlyZXR1cm4hdC5zaXplO2lmKHRidCh0KSlyZXR1cm4hYWJ0KHQpLmxlbmd0aDtmb3IodmFyIG4gaW4gdClpZih6d3QuY2FsbCh0LG4pKXJldHVybiExO3JldHVybiEwfSxpc0Z1bmN0aW9uOkl5dCxpc1VuZGVmaW5lZDpmdW5jdGlvbiBDU3QodCl7cmV0dXJuIHZvaWQgMD09PXR9LGtleXM6dWJ0LG1hcDpmdW5jdGlvbiBrU3QodCxlKXtyZXR1cm4oT3Z0KHQpP2R3dDpEd3QpKHQsUHd0KGUpKX0scmVkdWNlOmZ1bmN0aW9uIExTdCh0LGUsbil7dmFyIGk9T3Z0KHQpP0h3dDpWd3Qscj1hcmd1bWVudHMubGVuZ3RoPDM7cmV0dXJuIGkodCxQd3QoZSksbixyLHh4dCl9LHNpemU6ZnVuY3Rpb24gUFN0KHQpe2lmKG51bGw9PXQpcmV0dXJuIDA7aWYobGJ0KHQpKXJldHVybihmdW5jdGlvbiBlKHQpe3JldHVybiJzdHJpbmciPT10eXBlb2YgdHx8IU92dCh0KSYmVHZ0KHQpJiYiW29iamVjdCBTdHJpbmddIj09Q3l0KHQpfSkodCk/KGZ1bmN0aW9uIG4odCl7cmV0dXJuKGZ1bmN0aW9uIGUodCl7cmV0dXJuIEd3dC50ZXN0KHQpfSkodCk/KGZ1bmN0aW9uIG4odCl7Zm9yKHZhciBlPXRTdC5sYXN0SW5kZXg9MDt0U3QudGVzdCh0KTspKytlO3JldHVybiBlfSkodCk6VXd0KHQpfSkodCk6dC5sZW5ndGg7dmFyIGk9WGJ0KHQpO3JldHVybiJbb2JqZWN0IE1hcF0iPT1pfHwiW29iamVjdCBTZXRdIj09aT90LnNpemU6YWJ0KHQpLmxlbmd0aH0sdHJhbnNmb3JtOmZ1bmN0aW9uIElTdCh0LGUsbil7dmFyIGk9T3Z0KHQpLHI9aXx8RHZ0KHQpfHxYdnQodCk7aWYoZT1Qd3QoZSksbnVsbD09bil7dmFyIG89dCYmdC5jb25zdHJ1Y3RvcjtuPXI/aT9uZXcgbzpbXTpMeXQodCkmJkl5dChvKT9peHQoRWJ0KHQpKTp7fX1yZXR1cm4ocj9ndnQ6dnh0KSh0LChmdW5jdGlvbih0LGkscil7cmV0dXJuIGUobix0LGkscil9KSksbn0sdW5pb246eFN0LHZhbHVlczpmdW5jdGlvbiBOU3QodCl7cmV0dXJuIG51bGw9PXQ/W106KGZ1bmN0aW9uIGUodCxuKXtyZXR1cm4gZHd0KG4sKGZ1bmN0aW9uKGUpe3JldHVybiB0W2VdfSkpfSkodCx1YnQodCkpfX19Y2F0Y2godCl7fWF3dHx8KGF3dD13aW5kb3cuXyk7dmFyIE9TdD1hd3QsUlN0PURTdCx6U3Q9IlwwIjtmdW5jdGlvbiBEU3QodCl7dGhpcy5faXNEaXJlY3RlZD0hT1N0Lmhhcyh0LCJkaXJlY3RlZCIpfHx0LmRpcmVjdGVkLHRoaXMuX2lzTXVsdGlncmFwaD0hIU9TdC5oYXModCwibXVsdGlncmFwaCIpJiZ0Lm11bHRpZ3JhcGgsdGhpcy5faXNDb21wb3VuZD0hIU9TdC5oYXModCwiY29tcG91bmQiKSYmdC5jb21wb3VuZCx0aGlzLl9sYWJlbD12b2lkIDAsdGhpcy5fZGVmYXVsdE5vZGVMYWJlbEZuPU9TdC5jb25zdGFudCh2b2lkIDApLHRoaXMuX2RlZmF1bHRFZGdlTGFiZWxGbj1PU3QuY29uc3RhbnQodm9pZCAwKSx0aGlzLl9ub2Rlcz17fSx0aGlzLl9pc0NvbXBvdW5kJiYodGhpcy5fcGFyZW50PXt9LHRoaXMuX2NoaWxkcmVuPXt9LHRoaXMuX2NoaWxkcmVuWyJcMCJdPXt9KSx0aGlzLl9pbj17fSx0aGlzLl9wcmVkcz17fSx0aGlzLl9vdXQ9e30sdGhpcy5fc3Vjcz17fSx0aGlzLl9lZGdlT2Jqcz17fSx0aGlzLl9lZGdlTGFiZWxzPXt9fWZ1bmN0aW9uIEJTdCh0LGUpe3RbZV0/dFtlXSsrOnRbZV09MX1mdW5jdGlvbiBIU3QodCxlKXstLXRbZV18fGRlbGV0ZSB0W2VdfWZ1bmN0aW9uIEZTdCh0LGUsbixpKXt2YXIgcj0iIitlLG89IiIrbjtpZighdCYmcj5vKXt2YXIgYT1yO3I9byxvPWF9cmV0dXJuIHIrIgEiK28rIgEiKyhPU3QuaXNVbmRlZmluZWQoaSk/IlwwIjppKX1mdW5jdGlvbiBWU3QodCxlLG4saSl7dmFyIHI9IiIrZSxvPSIiK247aWYoIXQmJnI+byl7dmFyIGE9cjtyPW8sbz1hfXZhciBzPXt2OnIsdzpvfTtyZXR1cm4gaSYmKHMubmFtZT1pKSxzfWZ1bmN0aW9uIGpTdCh0LGUpe3JldHVybiBGU3QodCxlLnYsZS53LGUubmFtZSl9RFN0LnByb3RvdHlwZS5fbm9kZUNvdW50PTAsRFN0LnByb3RvdHlwZS5fZWRnZUNvdW50PTAsRFN0LnByb3RvdHlwZS5pc0RpcmVjdGVkPWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuX2lzRGlyZWN0ZWR9LERTdC5wcm90b3R5cGUuaXNNdWx0aWdyYXBoPWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuX2lzTXVsdGlncmFwaH0sRFN0LnByb3RvdHlwZS5pc0NvbXBvdW5kPWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuX2lzQ29tcG91bmR9LERTdC5wcm90b3R5cGUuc2V0R3JhcGg9ZnVuY3Rpb24odCl7cmV0dXJuIHRoaXMuX2xhYmVsPXQsdGhpc30sRFN0LnByb3RvdHlwZS5ncmFwaD1mdW5jdGlvbigpe3JldHVybiB0aGlzLl9sYWJlbH0sRFN0LnByb3RvdHlwZS5zZXREZWZhdWx0Tm9kZUxhYmVsPWZ1bmN0aW9uKHQpe3JldHVybiBPU3QuaXNGdW5jdGlvbih0KXx8KHQ9T1N0LmNvbnN0YW50KHQpKSx0aGlzLl9kZWZhdWx0Tm9kZUxhYmVsRm49dCx0aGlzfSxEU3QucHJvdG90eXBlLm5vZGVDb3VudD1mdW5jdGlvbigpe3JldHVybiB0aGlzLl9ub2RlQ291bnR9LERTdC5wcm90b3R5cGUubm9kZXM9ZnVuY3Rpb24oKXtyZXR1cm4gT1N0LmtleXModGhpcy5fbm9kZXMpfSxEU3QucHJvdG90eXBlLnNvdXJjZXM9ZnVuY3Rpb24oKXt2YXIgdD10aGlzO3JldHVybiBPU3QuZmlsdGVyKHRoaXMubm9kZXMoKSwoZnVuY3Rpb24oZSl7cmV0dXJuIE9TdC5pc0VtcHR5KHQuX2luW2VdKX0pKX0sRFN0LnByb3RvdHlwZS5zaW5rcz1mdW5jdGlvbigpe3ZhciB0PXRoaXM7cmV0dXJuIE9TdC5maWx0ZXIodGhpcy5ub2RlcygpLChmdW5jdGlvbihlKXtyZXR1cm4gT1N0LmlzRW1wdHkodC5fb3V0W2VdKX0pKX0sRFN0LnByb3RvdHlwZS5zZXROb2Rlcz1mdW5jdGlvbih0LGUpe3ZhciBuPWFyZ3VtZW50cyxpPXRoaXM7cmV0dXJuIE9TdC5lYWNoKHQsKGZ1bmN0aW9uKHQpe24ubGVuZ3RoPjE/aS5zZXROb2RlKHQsZSk6aS5zZXROb2RlKHQpfSkpLHRoaXN9LERTdC5wcm90b3R5cGUuc2V0Tm9kZT1mdW5jdGlvbih0LGUpe3JldHVybiBPU3QuaGFzKHRoaXMuX25vZGVzLHQpPyhhcmd1bWVudHMubGVuZ3RoPjEmJih0aGlzLl9ub2Rlc1t0XT1lKSx0aGlzKToodGhpcy5fbm9kZXNbdF09YXJndW1lbnRzLmxlbmd0aD4xP2U6dGhpcy5fZGVmYXVsdE5vZGVMYWJlbEZuKHQpLHRoaXMuX2lzQ29tcG91bmQmJih0aGlzLl9wYXJlbnRbdF09elN0LHRoaXMuX2NoaWxkcmVuW3RdPXt9LHRoaXMuX2NoaWxkcmVuWyJcMCJdW3RdPSEwKSx0aGlzLl9pblt0XT17fSx0aGlzLl9wcmVkc1t0XT17fSx0aGlzLl9vdXRbdF09e30sdGhpcy5fc3Vjc1t0XT17fSwrK3RoaXMuX25vZGVDb3VudCx0aGlzKX0sRFN0LnByb3RvdHlwZS5ub2RlPWZ1bmN0aW9uKHQpe3JldHVybiB0aGlzLl9ub2Rlc1t0XX0sRFN0LnByb3RvdHlwZS5oYXNOb2RlPWZ1bmN0aW9uKHQpe3JldHVybiBPU3QuaGFzKHRoaXMuX25vZGVzLHQpfSxEU3QucHJvdG90eXBlLnJlbW92ZU5vZGU9ZnVuY3Rpb24odCl7dmFyIGU9dGhpcztpZihPU3QuaGFzKHRoaXMuX25vZGVzLHQpKXt2YXIgbj1mdW5jdGlvbih0KXtlLnJlbW92ZUVkZ2UoZS5fZWRnZU9ianNbdF0pfTtkZWxldGUgdGhpcy5fbm9kZXNbdF0sdGhpcy5faXNDb21wb3VuZCYmKHRoaXMuX3JlbW92ZUZyb21QYXJlbnRzQ2hpbGRMaXN0KHQpLGRlbGV0ZSB0aGlzLl9wYXJlbnRbdF0sT1N0LmVhY2godGhpcy5jaGlsZHJlbih0KSwoZnVuY3Rpb24odCl7ZS5zZXRQYXJlbnQodCl9KSksZGVsZXRlIHRoaXMuX2NoaWxkcmVuW3RdKSxPU3QuZWFjaChPU3Qua2V5cyh0aGlzLl9pblt0XSksbiksZGVsZXRlIHRoaXMuX2luW3RdLGRlbGV0ZSB0aGlzLl9wcmVkc1t0XSxPU3QuZWFjaChPU3Qua2V5cyh0aGlzLl9vdXRbdF0pLG4pLGRlbGV0ZSB0aGlzLl9vdXRbdF0sZGVsZXRlIHRoaXMuX3N1Y3NbdF0sLS10aGlzLl9ub2RlQ291bnR9cmV0dXJuIHRoaXN9LERTdC5wcm90b3R5cGUuc2V0UGFyZW50PWZ1bmN0aW9uKHQsZSl7aWYoIXRoaXMuX2lzQ29tcG91bmQpdGhyb3cgbmV3IEVycm9yKCJDYW5ub3Qgc2V0IHBhcmVudCBpbiBhIG5vbi1jb21wb3VuZCBncmFwaCIpO2lmKE9TdC5pc1VuZGVmaW5lZChlKSllPXpTdDtlbHNle2Zvcih2YXIgbj1lKz0iIjshT1N0LmlzVW5kZWZpbmVkKG4pO249dGhpcy5wYXJlbnQobikpaWYobj09PXQpdGhyb3cgbmV3IEVycm9yKCJTZXR0aW5nICIrZSsiIGFzIHBhcmVudCBvZiAiK3QrIiB3b3VsZCBjcmVhdGUgYSBjeWNsZSIpO3RoaXMuc2V0Tm9kZShlKX1yZXR1cm4gdGhpcy5zZXROb2RlKHQpLHRoaXMuX3JlbW92ZUZyb21QYXJlbnRzQ2hpbGRMaXN0KHQpLHRoaXMuX3BhcmVudFt0XT1lLHRoaXMuX2NoaWxkcmVuW2VdW3RdPSEwLHRoaXN9LERTdC5wcm90b3R5cGUuX3JlbW92ZUZyb21QYXJlbnRzQ2hpbGRMaXN0PWZ1bmN0aW9uKHQpe2RlbGV0ZSB0aGlzLl9jaGlsZHJlblt0aGlzLl9wYXJlbnRbdF1dW3RdfSxEU3QucHJvdG90eXBlLnBhcmVudD1mdW5jdGlvbih0KXtpZih0aGlzLl9pc0NvbXBvdW5kKXt2YXIgZT10aGlzLl9wYXJlbnRbdF07aWYoZSE9PXpTdClyZXR1cm4gZX19LERTdC5wcm90b3R5cGUuY2hpbGRyZW49ZnVuY3Rpb24odCl7aWYoT1N0LmlzVW5kZWZpbmVkKHQpJiYodD16U3QpLHRoaXMuX2lzQ29tcG91bmQpe3ZhciBlPXRoaXMuX2NoaWxkcmVuW3RdO2lmKGUpcmV0dXJuIE9TdC5rZXlzKGUpfWVsc2V7aWYodD09PXpTdClyZXR1cm4gdGhpcy5ub2RlcygpO2lmKHRoaXMuaGFzTm9kZSh0KSlyZXR1cm5bXX19LERTdC5wcm90b3R5cGUucHJlZGVjZXNzb3JzPWZ1bmN0aW9uKHQpe3ZhciBlPXRoaXMuX3ByZWRzW3RdO2lmKGUpcmV0dXJuIE9TdC5rZXlzKGUpfSxEU3QucHJvdG90eXBlLnN1Y2Nlc3NvcnM9ZnVuY3Rpb24odCl7dmFyIGU9dGhpcy5fc3Vjc1t0XTtpZihlKXJldHVybiBPU3Qua2V5cyhlKX0sRFN0LnByb3RvdHlwZS5uZWlnaGJvcnM9ZnVuY3Rpb24odCl7dmFyIGU9dGhpcy5wcmVkZWNlc3NvcnModCk7aWYoZSlyZXR1cm4gT1N0LnVuaW9uKGUsdGhpcy5zdWNjZXNzb3JzKHQpKX0sRFN0LnByb3RvdHlwZS5pc0xlYWY9ZnVuY3Rpb24odCl7cmV0dXJuIDA9PT0odGhpcy5pc0RpcmVjdGVkKCk/dGhpcy5zdWNjZXNzb3JzKHQpOnRoaXMubmVpZ2hib3JzKHQpKS5sZW5ndGh9LERTdC5wcm90b3R5cGUuZmlsdGVyTm9kZXM9ZnVuY3Rpb24odCl7dmFyIGU9bmV3IHRoaXMuY29uc3RydWN0b3Ioe2RpcmVjdGVkOnRoaXMuX2lzRGlyZWN0ZWQsbXVsdGlncmFwaDp0aGlzLl9pc011bHRpZ3JhcGgsY29tcG91bmQ6dGhpcy5faXNDb21wb3VuZH0pO2Uuc2V0R3JhcGgodGhpcy5ncmFwaCgpKTt2YXIgbj10aGlzO09TdC5lYWNoKHRoaXMuX25vZGVzLChmdW5jdGlvbihuLGkpe3QoaSkmJmUuc2V0Tm9kZShpLG4pfSkpLE9TdC5lYWNoKHRoaXMuX2VkZ2VPYmpzLChmdW5jdGlvbih0KXtlLmhhc05vZGUodC52KSYmZS5oYXNOb2RlKHQudykmJmUuc2V0RWRnZSh0LG4uZWRnZSh0KSl9KSk7dmFyIGk9e307ZnVuY3Rpb24gcih0KXt2YXIgbz1uLnBhcmVudCh0KTtyZXR1cm4gdm9pZCAwPT09b3x8ZS5oYXNOb2RlKG8pPyhpW3RdPW8sbyk6byBpbiBpP2lbb106cihvKX1yZXR1cm4gdGhpcy5faXNDb21wb3VuZCYmT1N0LmVhY2goZS5ub2RlcygpLChmdW5jdGlvbih0KXtlLnNldFBhcmVudCh0LHIodCkpfSkpLGV9LERTdC5wcm90b3R5cGUuc2V0RGVmYXVsdEVkZ2VMYWJlbD1mdW5jdGlvbih0KXtyZXR1cm4gT1N0LmlzRnVuY3Rpb24odCl8fCh0PU9TdC5jb25zdGFudCh0KSksdGhpcy5fZGVmYXVsdEVkZ2VMYWJlbEZuPXQsdGhpc30sRFN0LnByb3RvdHlwZS5lZGdlQ291bnQ9ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5fZWRnZUNvdW50fSxEU3QucHJvdG90eXBlLmVkZ2VzPWZ1bmN0aW9uKCl7cmV0dXJuIE9TdC52YWx1ZXModGhpcy5fZWRnZU9ianMpfSxEU3QucHJvdG90eXBlLnNldFBhdGg9ZnVuY3Rpb24odCxlKXt2YXIgbj10aGlzLGk9YXJndW1lbnRzO3JldHVybiBPU3QucmVkdWNlKHQsKGZ1bmN0aW9uKHQscil7cmV0dXJuIGkubGVuZ3RoPjE/bi5zZXRFZGdlKHQscixlKTpuLnNldEVkZ2UodCxyKSxyfSkpLHRoaXN9LERTdC5wcm90b3R5cGUuc2V0RWRnZT1mdW5jdGlvbigpe3ZhciB0LGUsbixpLHI9ITEsbz1hcmd1bWVudHNbMF07Im9iamVjdCI9PXR5cGVvZiBvJiZudWxsIT09byYmInYiaW4gbz8odD1vLnYsZT1vLncsbj1vLm5hbWUsMj09PWFyZ3VtZW50cy5sZW5ndGgmJihpPWFyZ3VtZW50c1sxXSxyPSEwKSk6KHQ9byxlPWFyZ3VtZW50c1sxXSxuPWFyZ3VtZW50c1szXSxhcmd1bWVudHMubGVuZ3RoPjImJihpPWFyZ3VtZW50c1syXSxyPSEwKSksdD0iIit0LGU9IiIrZSxPU3QuaXNVbmRlZmluZWQobil8fChuPSIiK24pO3ZhciBhPUZTdCh0aGlzLl9pc0RpcmVjdGVkLHQsZSxuKTtpZihPU3QuaGFzKHRoaXMuX2VkZ2VMYWJlbHMsYSkpcmV0dXJuIHImJih0aGlzLl9lZGdlTGFiZWxzW2FdPWkpLHRoaXM7aWYoIU9TdC5pc1VuZGVmaW5lZChuKSYmIXRoaXMuX2lzTXVsdGlncmFwaCl0aHJvdyBuZXcgRXJyb3IoIkNhbm5vdCBzZXQgYSBuYW1lZCBlZGdlIHdoZW4gaXNNdWx0aWdyYXBoID0gZmFsc2UiKTt0aGlzLnNldE5vZGUodCksdGhpcy5zZXROb2RlKGUpLHRoaXMuX2VkZ2VMYWJlbHNbYV09cj9pOnRoaXMuX2RlZmF1bHRFZGdlTGFiZWxGbih0LGUsbik7dmFyIHM9VlN0KHRoaXMuX2lzRGlyZWN0ZWQsdCxlLG4pO3JldHVybiB0PXMudixlPXMudyxPYmplY3QuZnJlZXplKHMpLHRoaXMuX2VkZ2VPYmpzW2FdPXMsQlN0KHRoaXMuX3ByZWRzW2VdLHQpLEJTdCh0aGlzLl9zdWNzW3RdLGUpLHRoaXMuX2luW2VdW2FdPXMsdGhpcy5fb3V0W3RdW2FdPXMsdGhpcy5fZWRnZUNvdW50KyssdGhpc30sRFN0LnByb3RvdHlwZS5lZGdlPWZ1bmN0aW9uKHQsZSxuKXt2YXIgaT0xPT09YXJndW1lbnRzLmxlbmd0aD9qU3QodGhpcy5faXNEaXJlY3RlZCxhcmd1bWVudHNbMF0pOkZTdCh0aGlzLl9pc0RpcmVjdGVkLHQsZSxuKTtyZXR1cm4gdGhpcy5fZWRnZUxhYmVsc1tpXX0sRFN0LnByb3RvdHlwZS5oYXNFZGdlPWZ1bmN0aW9uKHQsZSxuKXt2YXIgaT0xPT09YXJndW1lbnRzLmxlbmd0aD9qU3QodGhpcy5faXNEaXJlY3RlZCxhcmd1bWVudHNbMF0pOkZTdCh0aGlzLl9pc0RpcmVjdGVkLHQsZSxuKTtyZXR1cm4gT1N0Lmhhcyh0aGlzLl9lZGdlTGFiZWxzLGkpfSxEU3QucHJvdG90eXBlLnJlbW92ZUVkZ2U9ZnVuY3Rpb24odCxlLG4pe3ZhciBpPTE9PT1hcmd1bWVudHMubGVuZ3RoP2pTdCh0aGlzLl9pc0RpcmVjdGVkLGFyZ3VtZW50c1swXSk6RlN0KHRoaXMuX2lzRGlyZWN0ZWQsdCxlLG4pLHI9dGhpcy5fZWRnZU9ianNbaV07cmV0dXJuIHImJih0PXIudixlPXIudyxkZWxldGUgdGhpcy5fZWRnZUxhYmVsc1tpXSxkZWxldGUgdGhpcy5fZWRnZU9ianNbaV0sSFN0KHRoaXMuX3ByZWRzW2VdLHQpLEhTdCh0aGlzLl9zdWNzW3RdLGUpLGRlbGV0ZSB0aGlzLl9pbltlXVtpXSxkZWxldGUgdGhpcy5fb3V0W3RdW2ldLHRoaXMuX2VkZ2VDb3VudC0tKSx0aGlzfSxEU3QucHJvdG90eXBlLmluRWRnZXM9ZnVuY3Rpb24odCxlKXt2YXIgbj10aGlzLl9pblt0XTtpZihuKXt2YXIgaT1PU3QudmFsdWVzKG4pO3JldHVybiBlP09TdC5maWx0ZXIoaSwoZnVuY3Rpb24odCl7cmV0dXJuIHQudj09PWV9KSk6aX19LERTdC5wcm90b3R5cGUub3V0RWRnZXM9ZnVuY3Rpb24odCxlKXt2YXIgbj10aGlzLl9vdXRbdF07aWYobil7dmFyIGk9T1N0LnZhbHVlcyhuKTtyZXR1cm4gZT9PU3QuZmlsdGVyKGksKGZ1bmN0aW9uKHQpe3JldHVybiB0Lnc9PT1lfSkpOml9fSxEU3QucHJvdG90eXBlLm5vZGVFZGdlcz1mdW5jdGlvbih0LGUpe3ZhciBuPXRoaXMuaW5FZGdlcyh0LGUpO2lmKG4pcmV0dXJuIG4uY29uY2F0KHRoaXMub3V0RWRnZXModCxlKSl9O3ZhciBVU3Q9e0dyYXBoOlJTdCx2ZXJzaW9uOiIyLjEuOCJ9LEdTdD17d3JpdGU6ZnVuY3Rpb24gV1N0KHQpe3ZhciBlPXtvcHRpb25zOntkaXJlY3RlZDp0LmlzRGlyZWN0ZWQoKSxtdWx0aWdyYXBoOnQuaXNNdWx0aWdyYXBoKCksY29tcG91bmQ6dC5pc0NvbXBvdW5kKCl9LG5vZGVzOllTdCh0KSxlZGdlczpYU3QodCl9O3JldHVybiBPU3QuaXNVbmRlZmluZWQodC5ncmFwaCgpKXx8KGUudmFsdWU9T1N0LmNsb25lKHQuZ3JhcGgoKSkpLGV9LHJlYWQ6ZnVuY3Rpb24gcVN0KHQpe3ZhciBlPW5ldyBSU3QodC5vcHRpb25zKS5zZXRHcmFwaCh0LnZhbHVlKTtyZXR1cm4gT1N0LmVhY2godC5ub2RlcywoZnVuY3Rpb24odCl7ZS5zZXROb2RlKHQudix0LnZhbHVlKSx0LnBhcmVudCYmZS5zZXRQYXJlbnQodC52LHQucGFyZW50KX0pKSxPU3QuZWFjaCh0LmVkZ2VzLChmdW5jdGlvbih0KXtlLnNldEVkZ2Uoe3Y6dC52LHc6dC53LG5hbWU6dC5uYW1lfSx0LnZhbHVlKX0pKSxlfX07ZnVuY3Rpb24gWVN0KHQpe3JldHVybiBPU3QubWFwKHQubm9kZXMoKSwoZnVuY3Rpb24oZSl7dmFyIG49dC5ub2RlKGUpLGk9dC5wYXJlbnQoZSkscj17djplfTtyZXR1cm4gT1N0LmlzVW5kZWZpbmVkKG4pfHwoci52YWx1ZT1uKSxPU3QuaXNVbmRlZmluZWQoaSl8fChyLnBhcmVudD1pKSxyfSkpfWZ1bmN0aW9uIFhTdCh0KXtyZXR1cm4gT1N0Lm1hcCh0LmVkZ2VzKCksKGZ1bmN0aW9uKGUpe3ZhciBuPXQuZWRnZShlKSxpPXt2OmUudix3OmUud307cmV0dXJuIE9TdC5pc1VuZGVmaW5lZChlLm5hbWUpfHwoaS5uYW1lPWUubmFtZSksT1N0LmlzVW5kZWZpbmVkKG4pfHwoaS52YWx1ZT1uKSxpfSkpfXZhciAkU3Q9S1N0O2Z1bmN0aW9uIEtTdCgpe3RoaXMuX2Fycj1bXSx0aGlzLl9rZXlJbmRpY2VzPXt9fUtTdC5wcm90b3R5cGUuc2l6ZT1mdW5jdGlvbigpe3JldHVybiB0aGlzLl9hcnIubGVuZ3RofSxLU3QucHJvdG90eXBlLmtleXM9ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5fYXJyLm1hcCgoZnVuY3Rpb24odCl7cmV0dXJuIHQua2V5fSkpfSxLU3QucHJvdG90eXBlLmhhcz1mdW5jdGlvbih0KXtyZXR1cm4gT1N0Lmhhcyh0aGlzLl9rZXlJbmRpY2VzLHQpfSxLU3QucHJvdG90eXBlLnByaW9yaXR5PWZ1bmN0aW9uKHQpe3ZhciBlPXRoaXMuX2tleUluZGljZXNbdF07aWYodm9pZCAwIT09ZSlyZXR1cm4gdGhpcy5fYXJyW2VdLnByaW9yaXR5fSxLU3QucHJvdG90eXBlLm1pbj1mdW5jdGlvbigpe2lmKDA9PT10aGlzLnNpemUoKSl0aHJvdyBuZXcgRXJyb3IoIlF1ZXVlIHVuZGVyZmxvdyIpO3JldHVybiB0aGlzLl9hcnJbMF0ua2V5fSxLU3QucHJvdG90eXBlLmFkZD1mdW5jdGlvbih0LGUpe3ZhciBuPXRoaXMuX2tleUluZGljZXM7aWYodD1TdHJpbmcodCksIU9TdC5oYXMobix0KSl7dmFyIGk9dGhpcy5fYXJyLHI9aS5sZW5ndGg7cmV0dXJuIG5bdF09cixpLnB1c2goe2tleTp0LHByaW9yaXR5OmV9KSx0aGlzLl9kZWNyZWFzZShyKSwhMH1yZXR1cm4hMX0sS1N0LnByb3RvdHlwZS5yZW1vdmVNaW49ZnVuY3Rpb24oKXt0aGlzLl9zd2FwKDAsdGhpcy5fYXJyLmxlbmd0aC0xKTt2YXIgdD10aGlzLl9hcnIucG9wKCk7cmV0dXJuIGRlbGV0ZSB0aGlzLl9rZXlJbmRpY2VzW3Qua2V5XSx0aGlzLl9oZWFwaWZ5KDApLHQua2V5fSxLU3QucHJvdG90eXBlLmRlY3JlYXNlPWZ1bmN0aW9uKHQsZSl7dmFyIG49dGhpcy5fa2V5SW5kaWNlc1t0XTtpZihlPnRoaXMuX2FycltuXS5wcmlvcml0eSl0aHJvdyBuZXcgRXJyb3IoIk5ldyBwcmlvcml0eSBpcyBncmVhdGVyIHRoYW4gY3VycmVudCBwcmlvcml0eS4gS2V5OiAiK3QrIiBPbGQ6ICIrdGhpcy5fYXJyW25dLnByaW9yaXR5KyIgTmV3OiAiK2UpO3RoaXMuX2FycltuXS5wcmlvcml0eT1lLHRoaXMuX2RlY3JlYXNlKG4pfSxLU3QucHJvdG90eXBlLl9oZWFwaWZ5PWZ1bmN0aW9uKHQpe3ZhciBlPXRoaXMuX2FycixuPTIqdCxpPW4rMSxyPXQ7bjxlLmxlbmd0aCYmKHI9ZVtuXS5wcmlvcml0eTxlW3JdLnByaW9yaXR5P246cixpPGUubGVuZ3RoJiYocj1lW2ldLnByaW9yaXR5PGVbcl0ucHJpb3JpdHk/aTpyKSxyIT09dCYmKHRoaXMuX3N3YXAodCxyKSx0aGlzLl9oZWFwaWZ5KHIpKSl9LEtTdC5wcm90b3R5cGUuX2RlY3JlYXNlPWZ1bmN0aW9uKHQpe2Zvcih2YXIgZSxuPXRoaXMuX2FycixpPW5bdF0ucHJpb3JpdHk7MCE9PXQmJiEobltlPXQ+PjFdLnByaW9yaXR5PGkpOyl0aGlzLl9zd2FwKHQsZSksdD1lfSxLU3QucHJvdG90eXBlLl9zd2FwPWZ1bmN0aW9uKHQsZSl7dmFyIG49dGhpcy5fYXJyLGk9dGhpcy5fa2V5SW5kaWNlcyxyPW5bdF0sbz1uW2VdO25bdF09byxuW2VdPXIsaVtvLmtleV09dCxpW3Iua2V5XT1lfTt2YXIgWlN0PWZ1bmN0aW9uIEpTdCh0LGUsbixpKXtyZXR1cm4oZnVuY3Rpb24gcih0LGUsbixpKXt2YXIgcixvLGE9e30scz1uZXcgJFN0LGw9ZnVuY3Rpb24odCl7dmFyIGU9dC52IT09cj90LnY6dC53LGk9YVtlXSxsPW4odCksYz1vLmRpc3RhbmNlK2w7aWYobDwwKXRocm93IG5ldyBFcnJvcigiZGlqa3N0cmEgZG9lcyBub3QgYWxsb3cgbmVnYXRpdmUgZWRnZSB3ZWlnaHRzLiBCYWQgZWRnZTogIit0KyIgV2VpZ2h0OiAiK2wpO2M8aS5kaXN0YW5jZSYmKGkuZGlzdGFuY2U9YyxpLnByZWRlY2Vzc29yPXIscy5kZWNyZWFzZShlLGMpKX07Zm9yKHQubm9kZXMoKS5mb3JFYWNoKChmdW5jdGlvbih0KXt2YXIgbj10PT09ZT8wOk51bWJlci5QT1NJVElWRV9JTkZJTklUWTthW3RdPXtkaXN0YW5jZTpufSxzLmFkZCh0LG4pfSkpO3Muc2l6ZSgpPjAmJihyPXMucmVtb3ZlTWluKCksKG89YVtyXSkuZGlzdGFuY2UhPT1OdW1iZXIuUE9TSVRJVkVfSU5GSU5JVFkpOylpKHIpLmZvckVhY2gobCk7cmV0dXJuIGF9KSh0LFN0cmluZyhlKSxufHxRU3QsaXx8ZnVuY3Rpb24oZSl7cmV0dXJuIHQub3V0RWRnZXMoZSl9KX0sUVN0PU9TdC5jb25zdGFudCgxKSx0TXQ9ZnVuY3Rpb24gZU10KHQpe3ZhciBlPTAsbj1bXSxpPXt9LHI9W107ZnVuY3Rpb24gbyhhKXt2YXIgcz1pW2FdPXtvblN0YWNrOiEwLGxvd2xpbms6ZSxpbmRleDplKyt9O2lmKG4ucHVzaChhKSx0LnN1Y2Nlc3NvcnMoYSkuZm9yRWFjaCgoZnVuY3Rpb24odCl7T1N0LmhhcyhpLHQpP2lbdF0ub25TdGFjayYmKHMubG93bGluaz1NYXRoLm1pbihzLmxvd2xpbmssaVt0XS5pbmRleCkpOihvKHQpLHMubG93bGluaz1NYXRoLm1pbihzLmxvd2xpbmssaVt0XS5sb3dsaW5rKSl9KSkscy5sb3dsaW5rPT09cy5pbmRleCl7dmFyIGwsYz1bXTtkb3tsPW4ucG9wKCksaVtsXS5vblN0YWNrPSExLGMucHVzaChsKX13aGlsZShhIT09bCk7ci5wdXNoKGMpfX1yZXR1cm4gdC5ub2RlcygpLmZvckVhY2goKGZ1bmN0aW9uKHQpe09TdC5oYXMoaSx0KXx8byh0KX0pKSxyfSxuTXQ9T1N0LmNvbnN0YW50KDEpLGlNdD1yTXQ7ZnVuY3Rpb24gck10KHQpe3ZhciBlPXt9LG49e30saT1bXTtpZihPU3QuZWFjaCh0LnNpbmtzKCksKGZ1bmN0aW9uIHIobyl7aWYoT1N0LmhhcyhuLG8pKXRocm93IG5ldyBvTXQ7T1N0LmhhcyhlLG8pfHwobltvXT0hMCxlW29dPSEwLE9TdC5lYWNoKHQucHJlZGVjZXNzb3JzKG8pLHIpLGRlbGV0ZSBuW29dLGkucHVzaChvKSl9KSksT1N0LnNpemUoZSkhPT10Lm5vZGVDb3VudCgpKXRocm93IG5ldyBvTXQ7cmV0dXJuIGl9ZnVuY3Rpb24gb010KCl7fXJNdC5DeWNsZUV4Y2VwdGlvbj1vTXQsb010LnByb3RvdHlwZT1uZXcgRXJyb3I7dmFyIGFNdD1mdW5jdGlvbiBzTXQodCxlLG4pe09TdC5pc0FycmF5KGUpfHwoZT1bZV0pO3ZhciBpPSh0LmlzRGlyZWN0ZWQoKT90LnN1Y2Nlc3NvcnM6dC5uZWlnaGJvcnMpLmJpbmQodCkscj1bXSxvPXt9O3JldHVybiBPU3QuZWFjaChlLChmdW5jdGlvbihlKXtpZighdC5oYXNOb2RlKGUpKXRocm93IG5ldyBFcnJvcigiR3JhcGggZG9lcyBub3QgaGF2ZSBub2RlOiAiK2UpO2xNdCh0LGUsInBvc3QiPT09bixvLGkscil9KSkscn07ZnVuY3Rpb24gbE10KHQsZSxuLGkscixvKXtPU3QuaGFzKGksZSl8fChpW2VdPSEwLG58fG8ucHVzaChlKSxPU3QuZWFjaChyKGUpLChmdW5jdGlvbihlKXtsTXQodCxlLG4saSxyLG8pfSkpLG4mJm8ucHVzaChlKSl9dmFyIGNNdCx1TXQ9e0dyYXBoOlVTdC5HcmFwaCxqc29uOkdTdCxhbGc6e2NvbXBvbmVudHM6ZnVuY3Rpb24gaE10KHQpe3ZhciBlLG49e30saT1bXTtmdW5jdGlvbiByKGkpe09TdC5oYXMobixpKXx8KG5baV09ITAsZS5wdXNoKGkpLE9TdC5lYWNoKHQuc3VjY2Vzc29ycyhpKSxyKSxPU3QuZWFjaCh0LnByZWRlY2Vzc29ycyhpKSxyKSl9cmV0dXJuIE9TdC5lYWNoKHQubm9kZXMoKSwoZnVuY3Rpb24odCl7ZT1bXSxyKHQpLGUubGVuZ3RoJiZpLnB1c2goZSl9KSksaX0sZGlqa3N0cmE6WlN0LGRpamtzdHJhQWxsOmZ1bmN0aW9uIGRNdCh0LGUsbil7cmV0dXJuIE9TdC50cmFuc2Zvcm0odC5ub2RlcygpLChmdW5jdGlvbihpLHIpe2lbcl09WlN0KHQscixlLG4pfSkse30pfSxmaW5kQ3ljbGVzOmZ1bmN0aW9uIHBNdCh0KXtyZXR1cm4gT1N0LmZpbHRlcih0TXQodCksKGZ1bmN0aW9uKGUpe3JldHVybiBlLmxlbmd0aD4xfHwxPT09ZS5sZW5ndGgmJnQuaGFzRWRnZShlWzBdLGVbMF0pfSkpfSxmbG95ZFdhcnNoYWxsOmZ1bmN0aW9uIGZNdCh0LGUsbil7cmV0dXJuKGZ1bmN0aW9uIGkodCxlLG4pe3ZhciBpPXt9LHI9dC5ub2RlcygpO3JldHVybiByLmZvckVhY2goKGZ1bmN0aW9uKHQpe2lbdF09e30saVt0XVt0XT17ZGlzdGFuY2U6MH0sci5mb3JFYWNoKChmdW5jdGlvbihlKXt0IT09ZSYmKGlbdF1bZV09e2Rpc3RhbmNlOk51bWJlci5QT1NJVElWRV9JTkZJTklUWX0pfSkpLG4odCkuZm9yRWFjaCgoZnVuY3Rpb24obil7dmFyIHI9bi52PT09dD9uLnc6bi52LG89ZShuKTtpW3RdW3JdPXtkaXN0YW5jZTpvLHByZWRlY2Vzc29yOnR9fSkpfSkpLHIuZm9yRWFjaCgoZnVuY3Rpb24odCl7dmFyIGU9aVt0XTtyLmZvckVhY2goKGZ1bmN0aW9uKG4pe3ZhciBvPWlbbl07ci5mb3JFYWNoKChmdW5jdGlvbihuKXt2YXIgaT1lW25dLHI9b1tuXSxhPW9bdF0uZGlzdGFuY2UraS5kaXN0YW5jZTthPHIuZGlzdGFuY2UmJihyLmRpc3RhbmNlPWEsci5wcmVkZWNlc3Nvcj1pLnByZWRlY2Vzc29yKX0pKX0pKX0pKSxpfSkodCxlfHxuTXQsbnx8ZnVuY3Rpb24oZSl7cmV0dXJuIHQub3V0RWRnZXMoZSl9KX0saXNBY3ljbGljOmZ1bmN0aW9uIG1NdCh0KXt0cnl7aU10KHQpfWNhdGNoKHQpe2lmKHQgaW5zdGFuY2VvZiBpTXQuQ3ljbGVFeGNlcHRpb24pcmV0dXJuITE7dGhyb3cgdH1yZXR1cm4hMH0scG9zdG9yZGVyOmZ1bmN0aW9uIGdNdCh0LGUpe3JldHVybiBhTXQodCxlLCJwb3N0Iil9LHByZW9yZGVyOmZ1bmN0aW9uIF9NdCh0LGUpe3JldHVybiBhTXQodCxlLCJwcmUiKX0scHJpbTpmdW5jdGlvbiB5TXQodCxlKXt2YXIgbixpPW5ldyBSU3Qscj17fSxvPW5ldyAkU3Q7ZnVuY3Rpb24gYSh0KXt2YXIgaT10LnY9PT1uP3Qudzp0LnYsYT1vLnByaW9yaXR5KGkpO2lmKHZvaWQgMCE9PWEpe3ZhciBzPWUodCk7czxhJiYocltpXT1uLG8uZGVjcmVhc2UoaSxzKSl9fWlmKDA9PT10Lm5vZGVDb3VudCgpKXJldHVybiBpO09TdC5lYWNoKHQubm9kZXMoKSwoZnVuY3Rpb24odCl7by5hZGQodCxOdW1iZXIuUE9TSVRJVkVfSU5GSU5JVFkpLGkuc2V0Tm9kZSh0KX0pKSxvLmRlY3JlYXNlKHQubm9kZXMoKVswXSwwKTtmb3IodmFyIHM9ITE7by5zaXplKCk+MDspe2lmKG49by5yZW1vdmVNaW4oKSxPU3QuaGFzKHIsbikpaS5zZXRFZGdlKG4scltuXSk7ZWxzZXtpZihzKXRocm93IG5ldyBFcnJvcigiSW5wdXQgZ3JhcGggaXMgbm90IGNvbm5lY3RlZDogIit0KTtzPSEwfXQubm9kZUVkZ2VzKG4pLmZvckVhY2goYSl9cmV0dXJuIGl9LHRhcmphbjp0TXQsdG9wc29ydDppTXR9LHZlcnNpb246VVN0LnZlcnNpb259O3RyeXtjTXQ9dU10fWNhdGNoKHQpe31jTXR8fChjTXQ9d2luZG93LmdyYXBobGliKTt2YXIgdk10PWNNdCxiTXQ9ZnVuY3Rpb24geE10KHQsZSl7cmV0dXJuIHQ9PT1lfHx0IT10JiZlIT1lfSx3TXQ9ZnVuY3Rpb24gU010KHQsZSl7Zm9yKHZhciBuPXQubGVuZ3RoO24tLTspaWYoYk10KHRbbl1bMF0sZSkpcmV0dXJuIG47cmV0dXJuLTF9LE1NdD1BcnJheS5wcm90b3R5cGUuc3BsaWNlO2Z1bmN0aW9uIEVNdCh0KXt2YXIgZT0tMSxuPW51bGw9PXQ/MDp0Lmxlbmd0aDtmb3IodGhpcy5jbGVhcigpOysrZTxuOyl7dmFyIGk9dFtlXTt0aGlzLnNldChpWzBdLGlbMV0pfX1FTXQucHJvdG90eXBlLmNsZWFyPWZ1bmN0aW9uIFRNdCgpe3RoaXMuX19kYXRhX189W10sdGhpcy5zaXplPTB9LEVNdC5wcm90b3R5cGUuZGVsZXRlPWZ1bmN0aW9uIEFNdCh0KXt2YXIgZT10aGlzLl9fZGF0YV9fLG49d010KGUsdCk7cmV0dXJuIShuPDB8fChuPT1lLmxlbmd0aC0xP2UucG9wKCk6TU10LmNhbGwoZSxuLDEpLC0tdGhpcy5zaXplLDApKX0sRU10LnByb3RvdHlwZS5nZXQ9ZnVuY3Rpb24gQ010KHQpe3ZhciBlPXRoaXMuX19kYXRhX18sbj13TXQoZSx0KTtyZXR1cm4gbjwwP3ZvaWQgMDplW25dWzFdfSxFTXQucHJvdG90eXBlLmhhcz1mdW5jdGlvbiBrTXQodCl7cmV0dXJuIHdNdCh0aGlzLl9fZGF0YV9fLHQpPi0xfSxFTXQucHJvdG90eXBlLnNldD1mdW5jdGlvbiBMTXQodCxlKXt2YXIgbj10aGlzLl9fZGF0YV9fLGk9d010KG4sdCk7cmV0dXJuIGk8MD8oKyt0aGlzLnNpemUsbi5wdXNoKFt0LGVdKSk6bltpXVsxXT1lLHRoaXN9O3ZhciBQTXQ9RU10LElNdD0ib2JqZWN0Ij09dHlwZW9mIHZlJiZ2ZSYmdmUuT2JqZWN0PT09T2JqZWN0JiZ2ZSxOTXQ9Im9iamVjdCI9PXR5cGVvZiBzZWxmJiZzZWxmJiZzZWxmLk9iamVjdD09PU9iamVjdCYmc2VsZixPTXQ9SU10fHxOTXR8fEZ1bmN0aW9uKCJyZXR1cm4gdGhpcyIpKCksUk10PU9NdC5TeW1ib2wsek10PU9iamVjdC5wcm90b3R5cGUsRE10PXpNdC5oYXNPd25Qcm9wZXJ0eSxCTXQ9ek10LnRvU3RyaW5nLEhNdD1STXQ/Uk10LnRvU3RyaW5nVGFnOnZvaWQgMCxGTXQ9T2JqZWN0LnByb3RvdHlwZS50b1N0cmluZyxWTXQ9Uk10P1JNdC50b1N0cmluZ1RhZzp2b2lkIDAsak10PWZ1bmN0aW9uIFVNdCh0KXtyZXR1cm4gbnVsbD09dD92b2lkIDA9PT10PyJbb2JqZWN0IFVuZGVmaW5lZF0iOiJbb2JqZWN0IE51bGxdIjpWTXQmJlZNdCBpbiBPYmplY3QodCk/KGZ1bmN0aW9uIGUodCl7dmFyIGU9RE10LmNhbGwodCxITXQpLG49dFtITXRdO3RyeXt0W0hNdF09dm9pZCAwO3ZhciBpPSEwfWNhdGNoKHQpe312YXIgcj1CTXQuY2FsbCh0KTtyZXR1cm4gaSYmKGU/dFtITXRdPW46ZGVsZXRlIHRbSE10XSkscn0pKHQpOihmdW5jdGlvbiBuKHQpe3JldHVybiBGTXQuY2FsbCh0KX0pKHQpfSxHTXQ9ZnVuY3Rpb24gV010KHQpe3ZhciBlPXR5cGVvZiB0O3JldHVybiBudWxsIT10JiYoIm9iamVjdCI9PWV8fCJmdW5jdGlvbiI9PWUpfSxxTXQ9ZnVuY3Rpb24gWU10KHQpe2lmKCFHTXQodCkpcmV0dXJuITE7dmFyIGU9ak10KHQpO3JldHVybiJbb2JqZWN0IEZ1bmN0aW9uXSI9PWV8fCJbb2JqZWN0IEdlbmVyYXRvckZ1bmN0aW9uXSI9PWV8fCJbb2JqZWN0IEFzeW5jRnVuY3Rpb25dIj09ZXx8IltvYmplY3QgUHJveHldIj09ZX0sWE10PU9NdFsiX19jb3JlLWpzX3NoYXJlZF9fIl0sJE10PShmdW5jdGlvbigpe3ZhciB0PS9bXi5dKyQvLmV4ZWMoWE10JiZYTXQua2V5cyYmWE10LmtleXMuSUVfUFJPVE98fCIiKTtyZXR1cm4gdD8iU3ltYm9sKHNyYylfMS4iK3Q6IiJ9KSgpLEtNdD1GdW5jdGlvbi5wcm90b3R5cGUudG9TdHJpbmcsWk10PWZ1bmN0aW9uIEpNdCh0KXtpZihudWxsIT10KXt0cnl7cmV0dXJuIEtNdC5jYWxsKHQpfWNhdGNoKHQpe310cnl7cmV0dXJuIHQrIiJ9Y2F0Y2godCl7fX1yZXR1cm4iIn0sUU10PS9eXFtvYmplY3QgLis/Q29uc3RydWN0b3JcXSQvLHRFdD1SZWdFeHAoIl4iK0Z1bmN0aW9uLnByb3RvdHlwZS50b1N0cmluZy5jYWxsKE9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkpLnJlcGxhY2UoL1tcXF4kLiorPygpW1xde318XS9nLCJcXCQmIikucmVwbGFjZSgvaGFzT3duUHJvcGVydHl8KGZ1bmN0aW9uKS4qPyg/PVxcXCgpfCBmb3IgLis/KD89XFxcXSkvZywiJDEuKj8iKSsiJCIpLGVFdD1mdW5jdGlvbiBuRXQodCxlKXt2YXIgbj0oZnVuY3Rpb24gaSh0LGUpe3JldHVybiBudWxsPT10P3ZvaWQgMDp0W2VdfSkodCxlKTtyZXR1cm4oZnVuY3Rpb24gcih0KXtyZXR1cm4hKCFHTXQodCl8fChmdW5jdGlvbiBlKHQpe3JldHVybiEhJE10JiYkTXQgaW4gdH0pKHQpKSYmKHFNdCh0KT90RXQ6UU10KS50ZXN0KFpNdCh0KSl9KShuKT9uOnZvaWQgMH0saUV0PWVFdChPTXQsIk1hcCIpLHJFdD1lRXQoT2JqZWN0LCJjcmVhdGUiKSxvRXQ9T2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eSxhRXQ9T2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eTtmdW5jdGlvbiBzRXQodCl7dmFyIGU9LTEsbj1udWxsPT10PzA6dC5sZW5ndGg7Zm9yKHRoaXMuY2xlYXIoKTsrK2U8bjspe3ZhciBpPXRbZV07dGhpcy5zZXQoaVswXSxpWzFdKX19c0V0LnByb3RvdHlwZS5jbGVhcj1mdW5jdGlvbiBsRXQoKXt0aGlzLl9fZGF0YV9fPXJFdD9yRXQobnVsbCk6e30sdGhpcy5zaXplPTB9LHNFdC5wcm90b3R5cGUuZGVsZXRlPWZ1bmN0aW9uIGNFdCh0KXt2YXIgZT10aGlzLmhhcyh0KSYmZGVsZXRlIHRoaXMuX19kYXRhX19bdF07cmV0dXJuIHRoaXMuc2l6ZS09ZT8xOjAsZX0sc0V0LnByb3RvdHlwZS5nZXQ9ZnVuY3Rpb24gdUV0KHQpe3ZhciBlPXRoaXMuX19kYXRhX187aWYockV0KXt2YXIgbj1lW3RdO3JldHVybiJfX2xvZGFzaF9oYXNoX3VuZGVmaW5lZF9fIj09PW4/dm9pZCAwOm59cmV0dXJuIG9FdC5jYWxsKGUsdCk/ZVt0XTp2b2lkIDB9LHNFdC5wcm90b3R5cGUuaGFzPWZ1bmN0aW9uIGhFdCh0KXt2YXIgZT10aGlzLl9fZGF0YV9fO3JldHVybiByRXQ/dm9pZCAwIT09ZVt0XTphRXQuY2FsbChlLHQpfSxzRXQucHJvdG90eXBlLnNldD1mdW5jdGlvbiBkRXQodCxlKXt2YXIgbj10aGlzLl9fZGF0YV9fO3JldHVybiB0aGlzLnNpemUrPXRoaXMuaGFzKHQpPzA6MSxuW3RdPXJFdCYmdm9pZCAwPT09ZT8iX19sb2Rhc2hfaGFzaF91bmRlZmluZWRfXyI6ZSx0aGlzfTt2YXIgcEV0PXNFdCxmRXQ9ZnVuY3Rpb24gbUV0KHQsZSl7dmFyIG49dC5fX2RhdGFfXztyZXR1cm4oZnVuY3Rpb24gaSh0KXt2YXIgZT10eXBlb2YgdDtyZXR1cm4ic3RyaW5nIj09ZXx8Im51bWJlciI9PWV8fCJzeW1ib2wiPT1lfHwiYm9vbGVhbiI9PWU/Il9fcHJvdG9fXyIhPT10Om51bGw9PT10fSkoZSk/blsic3RyaW5nIj09dHlwZW9mIGU/InN0cmluZyI6Imhhc2giXTpuLm1hcH07ZnVuY3Rpb24gZ0V0KHQpe3ZhciBlPS0xLG49bnVsbD09dD8wOnQubGVuZ3RoO2Zvcih0aGlzLmNsZWFyKCk7KytlPG47KXt2YXIgaT10W2VdO3RoaXMuc2V0KGlbMF0saVsxXSl9fWdFdC5wcm90b3R5cGUuY2xlYXI9ZnVuY3Rpb24gX0V0KCl7dGhpcy5zaXplPTAsdGhpcy5fX2RhdGFfXz17aGFzaDpuZXcgcEV0LG1hcDpuZXcoaUV0fHxQTXQpLHN0cmluZzpuZXcgcEV0fX0sZ0V0LnByb3RvdHlwZS5kZWxldGU9ZnVuY3Rpb24geUV0KHQpe3ZhciBlPWZFdCh0aGlzLHQpLmRlbGV0ZSh0KTtyZXR1cm4gdGhpcy5zaXplLT1lPzE6MCxlfSxnRXQucHJvdG90eXBlLmdldD1mdW5jdGlvbiB2RXQodCl7cmV0dXJuIGZFdCh0aGlzLHQpLmdldCh0KX0sZ0V0LnByb3RvdHlwZS5oYXM9ZnVuY3Rpb24gYkV0KHQpe3JldHVybiBmRXQodGhpcyx0KS5oYXModCl9LGdFdC5wcm90b3R5cGUuc2V0PWZ1bmN0aW9uIHhFdCh0LGUpe3ZhciBuPWZFdCh0aGlzLHQpLGk9bi5zaXplO3JldHVybiBuLnNldCh0LGUpLHRoaXMuc2l6ZSs9bi5zaXplPT1pPzA6MSx0aGlzfTt2YXIgd0V0PWdFdDtmdW5jdGlvbiBTRXQodCl7dmFyIGU9dGhpcy5fX2RhdGFfXz1uZXcgUE10KHQpO3RoaXMuc2l6ZT1lLnNpemV9U0V0LnByb3RvdHlwZS5jbGVhcj1mdW5jdGlvbiBNRXQoKXt0aGlzLl9fZGF0YV9fPW5ldyBQTXQsdGhpcy5zaXplPTB9LFNFdC5wcm90b3R5cGUuZGVsZXRlPWZ1bmN0aW9uIEVFdCh0KXt2YXIgZT10aGlzLl9fZGF0YV9fLG49ZS5kZWxldGUodCk7cmV0dXJuIHRoaXMuc2l6ZT1lLnNpemUsbn0sU0V0LnByb3RvdHlwZS5nZXQ9ZnVuY3Rpb24gVEV0KHQpe3JldHVybiB0aGlzLl9fZGF0YV9fLmdldCh0KX0sU0V0LnByb3RvdHlwZS5oYXM9ZnVuY3Rpb24gQUV0KHQpe3JldHVybiB0aGlzLl9fZGF0YV9fLmhhcyh0KX0sU0V0LnByb3RvdHlwZS5zZXQ9ZnVuY3Rpb24gQ0V0KHQsZSl7dmFyIG49dGhpcy5fX2RhdGFfXztpZihuIGluc3RhbmNlb2YgUE10KXt2YXIgaT1uLl9fZGF0YV9fO2lmKCFpRXR8fGkubGVuZ3RoPDE5OSlyZXR1cm4gaS5wdXNoKFt0LGVdKSx0aGlzLnNpemU9KytuLnNpemUsdGhpcztuPXRoaXMuX19kYXRhX189bmV3IHdFdChpKX1yZXR1cm4gbi5zZXQodCxlKSx0aGlzLnNpemU9bi5zaXplLHRoaXN9O3ZhciBrRXQ9U0V0LExFdD1mdW5jdGlvbiBQRXQodCxlKXtmb3IodmFyIG49LTEsaT1udWxsPT10PzA6dC5sZW5ndGg7KytuPGkmJiExIT09ZSh0W25dLG4sdCk7KTtyZXR1cm4gdH0sSUV0PShmdW5jdGlvbigpe3RyeXt2YXIgdD1lRXQoT2JqZWN0LCJkZWZpbmVQcm9wZXJ0eSIpO3JldHVybiB0KHt9LCIiLHt9KSx0fWNhdGNoKHQpe319KSgpLE5FdD1mdW5jdGlvbiBPRXQodCxlLG4peyJfX3Byb3RvX18iPT1lJiZJRXQ/SUV0KHQsZSx7Y29uZmlndXJhYmxlOiEwLGVudW1lcmFibGU6ITAsdmFsdWU6bix3cml0YWJsZTohMH0pOnRbZV09bn0sUkV0PU9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHksekV0PWZ1bmN0aW9uIERFdCh0LGUsbil7dmFyIGk9dFtlXTtSRXQuY2FsbCh0LGUpJiZiTXQoaSxuKSYmKHZvaWQgMCE9PW58fGUgaW4gdCl8fE5FdCh0LGUsbil9LEJFdD1mdW5jdGlvbiBIRXQodCxlLG4saSl7dmFyIHI9IW47bnx8KG49e30pO2Zvcih2YXIgbz0tMSxhPWUubGVuZ3RoOysrbzxhOyl7dmFyIHM9ZVtvXSxsPWk/aShuW3NdLHRbc10scyxuLHQpOnZvaWQgMDt2b2lkIDA9PT1sJiYobD10W3NdKSxyP05FdChuLHMsbCk6ekV0KG4scyxsKX1yZXR1cm4gbn0sRkV0PWZ1bmN0aW9uIFZFdCh0KXtyZXR1cm4gbnVsbCE9dCYmIm9iamVjdCI9PXR5cGVvZiB0fSxqRXQ9ZnVuY3Rpb24gVUV0KHQpe3JldHVybiBGRXQodCkmJiJbb2JqZWN0IEFyZ3VtZW50c10iPT1qTXQodCl9LEdFdD1PYmplY3QucHJvdG90eXBlLFdFdD1HRXQuaGFzT3duUHJvcGVydHkscUV0PUdFdC5wcm9wZXJ0eUlzRW51bWVyYWJsZSxZRXQ9akV0KChmdW5jdGlvbigpe3JldHVybiBhcmd1bWVudHN9KSgpKT9qRXQ6ZnVuY3Rpb24odCl7cmV0dXJuIEZFdCh0KSYmV0V0LmNhbGwodCwiY2FsbGVlIikmJiFxRXQuY2FsbCh0LCJjYWxsZWUiKX0sWEV0PUFycmF5LmlzQXJyYXksJEV0PWZ1bmN0aW9uIEtFdCgpe3JldHVybiExfSxaRXQ9YmUoKGZ1bmN0aW9uKHQsZSl7dmFyIG49ZSYmIWUubm9kZVR5cGUmJmUsaT1uJiZ0JiYhdC5ub2RlVHlwZSYmdCxyPWkmJmkuZXhwb3J0cz09PW4/T010LkJ1ZmZlcjp2b2lkIDA7dC5leHBvcnRzPShyP3IuaXNCdWZmZXI6dm9pZCAwKXx8JEV0fSkpLEpFdD0vXig/OjB8WzEtOV1cZCopJC8sUUV0PWZ1bmN0aW9uIHRUdCh0LGUpe3ZhciBuPXR5cGVvZiB0O3JldHVybiEhKGU9bnVsbD09ZT85MDA3MTk5MjU0NzQwOTkxOmUpJiYoIm51bWJlciI9PW58fCJzeW1ib2wiIT1uJiZKRXQudGVzdCh0KSkmJnQ+LTEmJnQlMT09MCYmdDxlfSxlVHQ9ZnVuY3Rpb24gblR0KHQpe3JldHVybiJudW1iZXIiPT10eXBlb2YgdCYmdD4tMSYmdCUxPT0wJiZ0PD05MDA3MTk5MjU0NzQwOTkxfSxpVHQ9e307aVR0WyJbb2JqZWN0IEZsb2F0MzJBcnJheV0iXT1pVHRbIltvYmplY3QgRmxvYXQ2NEFycmF5XSJdPWlUdFsiW29iamVjdCBJbnQ4QXJyYXldIl09aVR0WyJbb2JqZWN0IEludDE2QXJyYXldIl09aVR0WyJbb2JqZWN0IEludDMyQXJyYXldIl09aVR0WyJbb2JqZWN0IFVpbnQ4QXJyYXldIl09aVR0WyJbb2JqZWN0IFVpbnQ4Q2xhbXBlZEFycmF5XSJdPWlUdFsiW29iamVjdCBVaW50MTZBcnJheV0iXT1pVHRbIltvYmplY3QgVWludDMyQXJyYXldIl09ITAsaVR0WyJbb2JqZWN0IEFyZ3VtZW50c10iXT1pVHRbIltvYmplY3QgQXJyYXldIl09aVR0WyJbb2JqZWN0IEFycmF5QnVmZmVyXSJdPWlUdFsiW29iamVjdCBCb29sZWFuXSJdPWlUdFsiW29iamVjdCBEYXRhVmlld10iXT1pVHRbIltvYmplY3QgRGF0ZV0iXT1pVHRbIltvYmplY3QgRXJyb3JdIl09aVR0WyJbb2JqZWN0IEZ1bmN0aW9uXSJdPWlUdFsiW29iamVjdCBNYXBdIl09aVR0WyJbb2JqZWN0IE51bWJlcl0iXT1pVHRbIltvYmplY3QgT2JqZWN0XSJdPWlUdFsiW29iamVjdCBSZWdFeHBdIl09aVR0WyJbb2JqZWN0IFNldF0iXT1pVHRbIltvYmplY3QgU3RyaW5nXSJdPWlUdFsiW29iamVjdCBXZWFrTWFwXSJdPSExO3ZhciByVHQ9ZnVuY3Rpb24gb1R0KHQpe3JldHVybiBmdW5jdGlvbihlKXtyZXR1cm4gdChlKX19LGFUdD1iZSgoZnVuY3Rpb24odCxlKXt2YXIgbj1lJiYhZS5ub2RlVHlwZSYmZSxpPW4mJnQmJiF0Lm5vZGVUeXBlJiZ0LHI9aSYmaS5leHBvcnRzPT09biYmSU10LnByb2Nlc3Msbz0oZnVuY3Rpb24oKXt0cnl7cmV0dXJuIGkmJmkucmVxdWlyZSYmaS5yZXF1aXJlKCJ1dGlsIikudHlwZXN8fHImJnIuYmluZGluZyYmci5iaW5kaW5nKCJ1dGlsIil9Y2F0Y2godCl7fX0pKCk7dC5leHBvcnRzPW99KSksc1R0PWFUdCYmYVR0LmlzVHlwZWRBcnJheSxsVHQ9c1R0P3JUdChzVHQpOmZ1bmN0aW9uIGNUdCh0KXtyZXR1cm4gRkV0KHQpJiZlVHQodC5sZW5ndGgpJiYhIWlUdFtqTXQodCldfSx1VHQ9T2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eSxoVHQ9ZnVuY3Rpb24gZFR0KHQsZSl7dmFyIG49WEV0KHQpLGk9IW4mJllFdCh0KSxyPSFuJiYhaSYmWkV0KHQpLG89IW4mJiFpJiYhciYmbFR0KHQpLGE9bnx8aXx8cnx8byxzPWE/KGZ1bmN0aW9uIGwodCxlKXtmb3IodmFyIG49LTEsaT1BcnJheSh0KTsrK248dDspaVtuXT1lKG4pO3JldHVybiBpfSkodC5sZW5ndGgsU3RyaW5nKTpbXSxjPXMubGVuZ3RoO2Zvcih2YXIgdSBpbiB0KSFlJiYhdVR0LmNhbGwodCx1KXx8YSYmKCJsZW5ndGgiPT11fHxyJiYoIm9mZnNldCI9PXV8fCJwYXJlbnQiPT11KXx8byYmKCJidWZmZXIiPT11fHwiYnl0ZUxlbmd0aCI9PXV8fCJieXRlT2Zmc2V0Ij09dSl8fFFFdCh1LGMpKXx8cy5wdXNoKHUpO3JldHVybiBzfSxwVHQ9T2JqZWN0LnByb3RvdHlwZSxmVHQ9ZnVuY3Rpb24gbVR0KHQpe3ZhciBlPXQmJnQuY29uc3RydWN0b3I7cmV0dXJuIHQ9PT0oImZ1bmN0aW9uIj09dHlwZW9mIGUmJmUucHJvdG90eXBlfHxwVHQpfSxnVHQ9ZnVuY3Rpb24gX1R0KHQsZSl7cmV0dXJuIGZ1bmN0aW9uKG4pe3JldHVybiB0KGUobikpfX0seVR0PWdUdChPYmplY3Qua2V5cyxPYmplY3QpLHZUdD1PYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LGJUdD1mdW5jdGlvbiB4VHQodCl7cmV0dXJuIG51bGwhPXQmJmVUdCh0Lmxlbmd0aCkmJiFxTXQodCl9LHdUdD1mdW5jdGlvbiBTVHQodCl7cmV0dXJuIGJUdCh0KT9oVHQodCk6KGZ1bmN0aW9uIGUodCl7aWYoIWZUdCh0KSlyZXR1cm4geVR0KHQpO3ZhciBlPVtdO2Zvcih2YXIgbiBpbiBPYmplY3QodCkpdlR0LmNhbGwodCxuKSYmImNvbnN0cnVjdG9yIiE9biYmZS5wdXNoKG4pO3JldHVybiBlfSkodCl9LE1UdD1PYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LEVUdD1mdW5jdGlvbiBUVHQodCl7cmV0dXJuIGJUdCh0KT9oVHQodCwhMCk6KGZ1bmN0aW9uIGUodCl7aWYoIUdNdCh0KSlyZXR1cm4oZnVuY3Rpb24gZSh0KXt2YXIgZT1bXTtpZihudWxsIT10KWZvcih2YXIgbiBpbiBPYmplY3QodCkpZS5wdXNoKG4pO3JldHVybiBlfSkodCk7dmFyIG49ZlR0KHQpLGk9W107Zm9yKHZhciByIGluIHQpKCJjb25zdHJ1Y3RvciIhPXJ8fCFuJiZNVHQuY2FsbCh0LHIpKSYmaS5wdXNoKHIpO3JldHVybiBpfSkodCl9LEFUdD1iZSgoZnVuY3Rpb24odCxlKXt2YXIgbj1lJiYhZS5ub2RlVHlwZSYmZSxpPW4mJnQmJiF0Lm5vZGVUeXBlJiZ0LHI9aSYmaS5leHBvcnRzPT09bj9PTXQuQnVmZmVyOnZvaWQgMCxvPXI/ci5hbGxvY1Vuc2FmZTp2b2lkIDA7dC5leHBvcnRzPWZ1bmN0aW9uIGEodCxlKXtpZihlKXJldHVybiB0LnNsaWNlKCk7dmFyIG49dC5sZW5ndGgsaT1vP28obik6bmV3IHQuY29uc3RydWN0b3Iobik7cmV0dXJuIHQuY29weShpKSxpfX0pKSxDVHQ9ZnVuY3Rpb24ga1R0KHQsZSl7dmFyIG49LTEsaT10Lmxlbmd0aDtmb3IoZXx8KGU9QXJyYXkoaSkpOysrbjxpOyllW25dPXRbbl07cmV0dXJuIGV9LExUdD1mdW5jdGlvbiBQVHQodCxlKXtmb3IodmFyIG49LTEsaT1udWxsPT10PzA6dC5sZW5ndGgscj0wLG89W107KytuPGk7KXt2YXIgYT10W25dO2UoYSxuLHQpJiYob1tyKytdPWEpfXJldHVybiBvfSxJVHQ9ZnVuY3Rpb24gTlR0KCl7cmV0dXJuW119LE9UdD1PYmplY3QucHJvdG90eXBlLnByb3BlcnR5SXNFbnVtZXJhYmxlLFJUdD1PYmplY3QuZ2V0T3duUHJvcGVydHlTeW1ib2xzLHpUdD1SVHQ/ZnVuY3Rpb24odCl7cmV0dXJuIG51bGw9PXQ/W106KHQ9T2JqZWN0KHQpLExUdChSVHQodCksKGZ1bmN0aW9uKGUpe3JldHVybiBPVHQuY2FsbCh0LGUpfSkpKX06SVR0LERUdD1mdW5jdGlvbiBCVHQodCxlKXtmb3IodmFyIG49LTEsaT1lLmxlbmd0aCxyPXQubGVuZ3RoOysrbjxpOyl0W3Irbl09ZVtuXTtyZXR1cm4gdH0sSFR0PWdUdChPYmplY3QuZ2V0UHJvdG90eXBlT2YsT2JqZWN0KSxGVHQ9T2JqZWN0LmdldE93blByb3BlcnR5U3ltYm9scz9mdW5jdGlvbih0KXtmb3IodmFyIGU9W107dDspRFR0KGUselR0KHQpKSx0PUhUdCh0KTtyZXR1cm4gZX06SVR0LFZUdD1mdW5jdGlvbiBqVHQodCxlLG4pe3ZhciBpPWUodCk7cmV0dXJuIFhFdCh0KT9pOkRUdChpLG4odCkpfSxVVHQ9ZnVuY3Rpb24gR1R0KHQpe3JldHVybiBWVHQodCx3VHQselR0KX0sV1R0PWZ1bmN0aW9uIHFUdCh0KXtyZXR1cm4gVlR0KHQsRVR0LEZUdCl9LFlUdD1lRXQoT010LCJEYXRhVmlldyIpLFhUdD1lRXQoT010LCJQcm9taXNlIiksJFR0PWVFdChPTXQsIlNldCIpLEtUdD1lRXQoT010LCJXZWFrTWFwIiksWlR0PSJbb2JqZWN0IE1hcF0iLEpUdD0iW29iamVjdCBQcm9taXNlXSIsUVR0PSJbb2JqZWN0IFNldF0iLHRBdD0iW29iamVjdCBXZWFrTWFwXSIsZUF0PSJbb2JqZWN0IERhdGFWaWV3XSIsbkF0PVpNdChZVHQpLGlBdD1aTXQoaUV0KSxyQXQ9Wk10KFhUdCksb0F0PVpNdCgkVHQpLGFBdD1aTXQoS1R0KSxzQXQ9ak10OyhZVHQmJnNBdChuZXcgWVR0KG5ldyBBcnJheUJ1ZmZlcigxKSkpIT1lQXR8fGlFdCYmc0F0KG5ldyBpRXQpIT1aVHR8fFhUdCYmc0F0KFhUdC5yZXNvbHZlKCkpIT1KVHR8fCRUdCYmc0F0KG5ldyAkVHQpIT1RVHR8fEtUdCYmc0F0KG5ldyBLVHQpIT10QXQpJiYoc0F0PWZ1bmN0aW9uKHQpe3ZhciBlPWpNdCh0KSxuPSJbb2JqZWN0IE9iamVjdF0iPT1lP3QuY29uc3RydWN0b3I6dm9pZCAwLGk9bj9aTXQobik6IiI7aWYoaSlzd2l0Y2goaSl7Y2FzZSBuQXQ6cmV0dXJuIGVBdDtjYXNlIGlBdDpyZXR1cm4gWlR0O2Nhc2UgckF0OnJldHVybiBKVHQ7Y2FzZSBvQXQ6cmV0dXJuIFFUdDtjYXNlIGFBdDpyZXR1cm4gdEF0fXJldHVybiBlfSk7dmFyIGxBdD1zQXQsY0F0PU9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHksdUF0PU9NdC5VaW50OEFycmF5LGhBdD1mdW5jdGlvbiBkQXQodCl7dmFyIGU9bmV3IHQuY29uc3RydWN0b3IodC5ieXRlTGVuZ3RoKTtyZXR1cm4gbmV3IHVBdChlKS5zZXQobmV3IHVBdCh0KSksZX0scEF0PS9cdyokLyxmQXQ9Uk10P1JNdC5wcm90b3R5cGU6dm9pZCAwLG1BdD1mQXQ/ZkF0LnZhbHVlT2Y6dm9pZCAwLGdBdD1mdW5jdGlvbiBfQXQodCxlKXt2YXIgbj1lP2hBdCh0LmJ1ZmZlcik6dC5idWZmZXI7cmV0dXJuIG5ldyB0LmNvbnN0cnVjdG9yKG4sdC5ieXRlT2Zmc2V0LHQubGVuZ3RoKX0seUF0PU9iamVjdC5jcmVhdGUsdkF0PShmdW5jdGlvbigpe2Z1bmN0aW9uIHQoKXt9cmV0dXJuIGZ1bmN0aW9uKGUpe2lmKCFHTXQoZSkpcmV0dXJue307aWYoeUF0KXJldHVybiB5QXQoZSk7dC5wcm90b3R5cGU9ZTt2YXIgbj1uZXcgdDtyZXR1cm4gdC5wcm90b3R5cGU9dm9pZCAwLG59fSkoKSxiQXQ9ZnVuY3Rpb24geEF0KHQpe3JldHVybiJmdW5jdGlvbiIhPXR5cGVvZiB0LmNvbnN0cnVjdG9yfHxmVHQodCk/e306dkF0KEhUdCh0KSl9LHdBdD1hVHQmJmFUdC5pc01hcCxTQXQ9d0F0P3JUdCh3QXQpOmZ1bmN0aW9uIE1BdCh0KXtyZXR1cm4gRkV0KHQpJiYiW29iamVjdCBNYXBdIj09bEF0KHQpfSxFQXQ9YVR0JiZhVHQuaXNTZXQsVEF0PUVBdD9yVHQoRUF0KTpmdW5jdGlvbiBBQXQodCl7cmV0dXJuIEZFdCh0KSYmIltvYmplY3QgU2V0XSI9PWxBdCh0KX0sQ0F0PSJbb2JqZWN0IEFyZ3VtZW50c10iLGtBdD0iW29iamVjdCBGdW5jdGlvbl0iLExBdD0iW29iamVjdCBPYmplY3RdIixQQXQ9e307UEF0W0NBdF09UEF0WyJbb2JqZWN0IEFycmF5XSJdPVBBdFsiW29iamVjdCBBcnJheUJ1ZmZlcl0iXT1QQXRbIltvYmplY3QgRGF0YVZpZXddIl09UEF0WyJbb2JqZWN0IEJvb2xlYW5dIl09UEF0WyJbb2JqZWN0IERhdGVdIl09UEF0WyJbb2JqZWN0IEZsb2F0MzJBcnJheV0iXT1QQXRbIltvYmplY3QgRmxvYXQ2NEFycmF5XSJdPVBBdFsiW29iamVjdCBJbnQ4QXJyYXldIl09UEF0WyJbb2JqZWN0IEludDE2QXJyYXldIl09UEF0WyJbb2JqZWN0IEludDMyQXJyYXldIl09UEF0WyJbb2JqZWN0IE1hcF0iXT1QQXRbIltvYmplY3QgTnVtYmVyXSJdPVBBdFtMQXRdPVBBdFsiW29iamVjdCBSZWdFeHBdIl09UEF0WyJbb2JqZWN0IFNldF0iXT1QQXRbIltvYmplY3QgU3RyaW5nXSJdPVBBdFsiW29iamVjdCBTeW1ib2xdIl09UEF0WyJbb2JqZWN0IFVpbnQ4QXJyYXldIl09UEF0WyJbb2JqZWN0IFVpbnQ4Q2xhbXBlZEFycmF5XSJdPVBBdFsiW29iamVjdCBVaW50MTZBcnJheV0iXT1QQXRbIltvYmplY3QgVWludDMyQXJyYXldIl09ITAsUEF0WyJbb2JqZWN0IEVycm9yXSJdPVBBdFtrQXRdPVBBdFsiW29iamVjdCBXZWFrTWFwXSJdPSExO3ZhciBJQXQ9ZnVuY3Rpb24gdChlLG4saSxyLG8sYSl7dmFyIHMsbD0xJm4sYz0yJm4sdT00Jm47aWYoaSYmKHM9bz9pKGUscixvLGEpOmkoZSkpLHZvaWQgMCE9PXMpcmV0dXJuIHM7aWYoIUdNdChlKSlyZXR1cm4gZTt2YXIgaD1YRXQoZSk7aWYoaCl7aWYocz0oZnVuY3Rpb24gZCh0KXt2YXIgZT10Lmxlbmd0aCxuPW5ldyB0LmNvbnN0cnVjdG9yKGUpO3JldHVybiBlJiYic3RyaW5nIj09dHlwZW9mIHRbMF0mJmNBdC5jYWxsKHQsImluZGV4IikmJihuLmluZGV4PXQuaW5kZXgsbi5pbnB1dD10LmlucHV0KSxufSkoZSksIWwpcmV0dXJuIENUdChlLHMpfWVsc2V7dmFyIHA9bEF0KGUpLGY9cD09a0F0fHwiW29iamVjdCBHZW5lcmF0b3JGdW5jdGlvbl0iPT1wO2lmKFpFdChlKSlyZXR1cm4gQVR0KGUsbCk7aWYocD09TEF0fHxwPT1DQXR8fGYmJiFvKXtpZihzPWN8fGY/e306YkF0KGUpLCFsKXJldHVybiBjPyhmdW5jdGlvbiBnKHQsZSl7cmV0dXJuIEJFdCh0LEZUdCh0KSxlKX0pKGUsKGZ1bmN0aW9uIG0odCxlKXtyZXR1cm4gdCYmQkV0KGUsRVR0KGUpLHQpfSkocyxlKSk6KGZ1bmN0aW9uIHkodCxlKXtyZXR1cm4gQkV0KHQselR0KHQpLGUpfSkoZSwoZnVuY3Rpb24gXyh0LGUpe3JldHVybiB0JiZCRXQoZSx3VHQoZSksdCl9KShzLGUpKX1lbHNle2lmKCFQQXRbcF0pcmV0dXJuIG8/ZTp7fTtzPShmdW5jdGlvbiB2KHQsZSxuKXt2YXIgaT10LmNvbnN0cnVjdG9yO3N3aXRjaChlKXtjYXNlIltvYmplY3QgQXJyYXlCdWZmZXJdIjpyZXR1cm4gaEF0KHQpO2Nhc2UiW29iamVjdCBCb29sZWFuXSI6Y2FzZSJbb2JqZWN0IERhdGVdIjpyZXR1cm4gbmV3IGkoK3QpO2Nhc2UiW29iamVjdCBEYXRhVmlld10iOnJldHVybihmdW5jdGlvbiByKHQsZSl7dmFyIG49ZT9oQXQodC5idWZmZXIpOnQuYnVmZmVyO3JldHVybiBuZXcgdC5jb25zdHJ1Y3RvcihuLHQuYnl0ZU9mZnNldCx0LmJ5dGVMZW5ndGgpfSkodCxuKTtjYXNlIltvYmplY3QgRmxvYXQzMkFycmF5XSI6Y2FzZSJbb2JqZWN0IEZsb2F0NjRBcnJheV0iOmNhc2UiW29iamVjdCBJbnQ4QXJyYXldIjpjYXNlIltvYmplY3QgSW50MTZBcnJheV0iOmNhc2UiW29iamVjdCBJbnQzMkFycmF5XSI6Y2FzZSJbb2JqZWN0IFVpbnQ4QXJyYXldIjpjYXNlIltvYmplY3QgVWludDhDbGFtcGVkQXJyYXldIjpjYXNlIltvYmplY3QgVWludDE2QXJyYXldIjpjYXNlIltvYmplY3QgVWludDMyQXJyYXldIjpyZXR1cm4gZ0F0KHQsbik7Y2FzZSJbb2JqZWN0IE1hcF0iOnJldHVybiBuZXcgaTtjYXNlIltvYmplY3QgTnVtYmVyXSI6Y2FzZSJbb2JqZWN0IFN0cmluZ10iOnJldHVybiBuZXcgaSh0KTtjYXNlIltvYmplY3QgUmVnRXhwXSI6cmV0dXJuKGZ1bmN0aW9uIG8odCl7dmFyIGU9bmV3IHQuY29uc3RydWN0b3IodC5zb3VyY2UscEF0LmV4ZWModCkpO3JldHVybiBlLmxhc3RJbmRleD10Lmxhc3RJbmRleCxlfSkodCk7Y2FzZSJbb2JqZWN0IFNldF0iOnJldHVybiBuZXcgaTtjYXNlIltvYmplY3QgU3ltYm9sXSI6cmV0dXJuKGZ1bmN0aW9uIGEodCl7cmV0dXJuIG1BdD9PYmplY3QobUF0LmNhbGwodCkpOnt9fSkodCl9fSkoZSxwLGwpfX1hfHwoYT1uZXcga0V0KTt2YXIgYj1hLmdldChlKTtpZihiKXJldHVybiBiO2Euc2V0KGUscyksVEF0KGUpP2UuZm9yRWFjaCgoZnVuY3Rpb24ocil7cy5hZGQodChyLG4saSxyLGUsYSkpfSkpOlNBdChlKSYmZS5mb3JFYWNoKChmdW5jdGlvbihyLG8pe3Muc2V0KG8sdChyLG4saSxvLGUsYSkpfSkpO3ZhciB4PXU/Yz9XVHQ6VVR0OmM/a2V5c0luOndUdCx3PWg/dm9pZCAwOngoZSk7cmV0dXJuIExFdCh3fHxlLChmdW5jdGlvbihyLG8pe3cmJihyPWVbbz1yXSksekV0KHMsbyx0KHIsbixpLG8sZSxhKSl9KSksc30sTkF0PWZ1bmN0aW9uIE9BdCh0KXtyZXR1cm4gZnVuY3Rpb24oKXtyZXR1cm4gdH19LFJBdD1mdW5jdGlvbiB6QXQodCl7cmV0dXJuIHR9LERBdD1mdW5jdGlvbiBCQXQodCxlLG4pe3N3aXRjaChuLmxlbmd0aCl7Y2FzZSAwOnJldHVybiB0LmNhbGwoZSk7Y2FzZSAxOnJldHVybiB0LmNhbGwoZSxuWzBdKTtjYXNlIDI6cmV0dXJuIHQuY2FsbChlLG5bMF0sblsxXSk7Y2FzZSAzOnJldHVybiB0LmNhbGwoZSxuWzBdLG5bMV0sblsyXSl9cmV0dXJuIHQuYXBwbHkoZSxuKX0sSEF0PU1hdGgubWF4LEZBdD1mdW5jdGlvbiBWQXQodCxlLG4pe3JldHVybiBlPUhBdCh2b2lkIDA9PT1lP3QubGVuZ3RoLTE6ZSwwKSxmdW5jdGlvbigpe2Zvcih2YXIgaT1hcmd1bWVudHMscj0tMSxvPUhBdChpLmxlbmd0aC1lLDApLGE9QXJyYXkobyk7KytyPG87KWFbcl09aVtlK3JdO3I9LTE7Zm9yKHZhciBzPUFycmF5KGUrMSk7KytyPGU7KXNbcl09aVtyXTtyZXR1cm4gc1tlXT1uKGEpLERBdCh0LHRoaXMscyl9fSxqQXQ9RGF0ZS5ub3csVUF0PShmdW5jdGlvbiBHQXQodCl7dmFyIGU9MCxuPTA7cmV0dXJuIGZ1bmN0aW9uKCl7dmFyIGk9akF0KCkscj0xNi0oaS1uKTtpZihuPWkscj4wKXtpZigrK2U+PTgwMClyZXR1cm4gYXJndW1lbnRzWzBdfWVsc2UgZT0wO3JldHVybiB0LmFwcGx5KHZvaWQgMCxhcmd1bWVudHMpfX0pKElFdD9mdW5jdGlvbih0LGUpe3JldHVybiBJRXQodCwidG9TdHJpbmciLHtjb25maWd1cmFibGU6ITAsZW51bWVyYWJsZTohMSx2YWx1ZTpOQXQoZSksd3JpdGFibGU6ITB9KX06UkF0KSxXQXQ9ZnVuY3Rpb24gcUF0KHQsZSl7cmV0dXJuIFVBdChGQXQodCxlLFJBdCksdCsiIil9LFlBdD1mdW5jdGlvbiBYQXQodCxlLG4pe2lmKCFHTXQobikpcmV0dXJuITE7dmFyIGk9dHlwZW9mIGU7cmV0dXJuISEoIm51bWJlciI9PWk/YlR0KG4pJiZRRXQoZSxuLmxlbmd0aCk6InN0cmluZyI9PWkmJmUgaW4gbikmJmJNdChuW2VdLHQpfSwkQXQ9T2JqZWN0LnByb3RvdHlwZSxLQXQ9JEF0Lmhhc093blByb3BlcnR5LFpBdD1XQXQoKGZ1bmN0aW9uKHQsZSl7dD1PYmplY3QodCk7dmFyIG49LTEsaT1lLmxlbmd0aCxyPWk+Mj9lWzJdOnZvaWQgMDtmb3IociYmWUF0KGVbMF0sZVsxXSxyKSYmKGk9MSk7KytuPGk7KWZvcih2YXIgbz1lW25dLGE9RVR0KG8pLHM9LTEsbD1hLmxlbmd0aDsrK3M8bDspe3ZhciBjPWFbc10sdT10W2NdOyh2b2lkIDA9PT11fHxiTXQodSwkQXRbY10pJiYhS0F0LmNhbGwodCxjKSkmJih0W2NdPW9bY10pfXJldHVybiB0fSkpLEpBdD0oZnVuY3Rpb24gUUF0KHQpe3JldHVybiBmdW5jdGlvbihlLG4saSl7Zm9yKHZhciByPS0xLG89T2JqZWN0KGUpLGE9aShlKSxzPWEubGVuZ3RoO3MtLTspe3ZhciBsPWFbdD9zOisrcl07aWYoITE9PT1uKG9bbF0sbCxvKSlicmVha31yZXR1cm4gZX19KSgpLHRDdD1mdW5jdGlvbiBlQ3QodCxlKXtyZXR1cm4gdCYmSkF0KHQsZSx3VHQpfSxuQ3Q9KGZ1bmN0aW9uIGlDdCh0LGUpe3JldHVybiBmdW5jdGlvbihuLGkpe2lmKG51bGw9PW4pcmV0dXJuIG47aWYoIWJUdChuKSlyZXR1cm4gdChuLGkpO2Zvcih2YXIgcj1uLmxlbmd0aCxvPWU/cjotMSxhPU9iamVjdChuKTsoZT9vLS06KytvPHIpJiYhMSE9PWkoYVtvXSxvLGEpOyk7cmV0dXJuIG59fSkodEN0KSxyQ3Q9ZnVuY3Rpb24gb0N0KHQpe3JldHVybiJmdW5jdGlvbiI9PXR5cGVvZiB0P3Q6UkF0fSxhQ3Q9ZnVuY3Rpb24gc0N0KHQsZSl7cmV0dXJuKFhFdCh0KT9MRXQ6bkN0KSh0LHJDdChlKSl9LGxDdD1hQ3QsY0N0PWZ1bmN0aW9uIHVDdCh0LGUpe3ZhciBuPVtdO3JldHVybiBuQ3QodCwoZnVuY3Rpb24odCxpLHIpe2UodCxpLHIpJiZuLnB1c2godCl9KSksbn07ZnVuY3Rpb24gaEN0KHQpe3ZhciBlPS0xLG49bnVsbD09dD8wOnQubGVuZ3RoO2Zvcih0aGlzLl9fZGF0YV9fPW5ldyB3RXQ7KytlPG47KXRoaXMuYWRkKHRbZV0pfWhDdC5wcm90b3R5cGUuYWRkPWhDdC5wcm90b3R5cGUucHVzaD1mdW5jdGlvbiBkQ3QodCl7cmV0dXJuIHRoaXMuX19kYXRhX18uc2V0KHQsIl9fbG9kYXNoX2hhc2hfdW5kZWZpbmVkX18iKSx0aGlzfSxoQ3QucHJvdG90eXBlLmhhcz1mdW5jdGlvbiBwQ3QodCl7cmV0dXJuIHRoaXMuX19kYXRhX18uaGFzKHQpfTt2YXIgZkN0PWhDdCxtQ3Q9ZnVuY3Rpb24gZ0N0KHQsZSl7Zm9yKHZhciBuPS0xLGk9bnVsbD09dD8wOnQubGVuZ3RoOysrbjxpOylpZihlKHRbbl0sbix0KSlyZXR1cm4hMDtyZXR1cm4hMX0sX0N0PWZ1bmN0aW9uIHlDdCh0LGUpe3JldHVybiB0LmhhcyhlKX0sdkN0PWZ1bmN0aW9uIGJDdCh0LGUsbixpLHIsbyl7dmFyIGE9MSZuLHM9dC5sZW5ndGgsbD1lLmxlbmd0aDtpZihzIT1sJiYhKGEmJmw+cykpcmV0dXJuITE7dmFyIGM9by5nZXQodCk7aWYoYyYmby5nZXQoZSkpcmV0dXJuIGM9PWU7dmFyIHU9LTEsaD0hMCxkPTImbj9uZXcgZkN0OnZvaWQgMDtmb3Ioby5zZXQodCxlKSxvLnNldChlLHQpOysrdTxzOyl7dmFyIHA9dFt1XSxmPWVbdV07aWYoaSl2YXIgbT1hP2koZixwLHUsZSx0LG8pOmkocCxmLHUsdCxlLG8pO2lmKHZvaWQgMCE9PW0pe2lmKG0pY29udGludWU7aD0hMTticmVha31pZihkKXtpZighbUN0KGUsKGZ1bmN0aW9uKHQsZSl7aWYoIV9DdChkLGUpJiYocD09PXR8fHIocCx0LG4saSxvKSkpcmV0dXJuIGQucHVzaChlKX0pKSl7aD0hMTticmVha319ZWxzZSBpZihwIT09ZiYmIXIocCxmLG4saSxvKSl7aD0hMTticmVha319cmV0dXJuIG8uZGVsZXRlKHQpLG8uZGVsZXRlKGUpLGh9LHhDdD1mdW5jdGlvbiB3Q3QodCl7dmFyIGU9LTEsbj1BcnJheSh0LnNpemUpO3JldHVybiB0LmZvckVhY2goKGZ1bmN0aW9uKHQsaSl7blsrK2VdPVtpLHRdfSkpLG59LFNDdD1mdW5jdGlvbiBNQ3QodCl7dmFyIGU9LTEsbj1BcnJheSh0LnNpemUpO3JldHVybiB0LmZvckVhY2goKGZ1bmN0aW9uKHQpe25bKytlXT10fSkpLG59LEVDdD1STXQ/Uk10LnByb3RvdHlwZTp2b2lkIDAsVEN0PUVDdD9FQ3QudmFsdWVPZjp2b2lkIDAsQUN0PU9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHksQ0N0PSJbb2JqZWN0IEFyZ3VtZW50c10iLGtDdD0iW29iamVjdCBBcnJheV0iLExDdD0iW29iamVjdCBPYmplY3RdIixQQ3Q9T2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eSxJQ3Q9ZnVuY3Rpb24gdChlLG4saSxyLG8pe3JldHVybiBlPT09bnx8KG51bGw9PWV8fG51bGw9PW58fCFGRXQoZSkmJiFGRXQobik/ZSE9ZSYmbiE9bjooZnVuY3Rpb24gYSh0LGUsbixpLHIsbyl7dmFyIGE9WEV0KHQpLHM9WEV0KGUpLGw9YT9rQ3Q6bEF0KHQpLGM9cz9rQ3Q6bEF0KGUpLHU9KGw9bD09Q0N0P0xDdDpsKT09TEN0LGg9KGM9Yz09Q0N0P0xDdDpjKT09TEN0LGQ9bD09YztpZihkJiZaRXQodCkpe2lmKCFaRXQoZSkpcmV0dXJuITE7YT0hMCx1PSExfWlmKGQmJiF1KXJldHVybiBvfHwobz1uZXcga0V0KSxhfHxsVHQodCk/dkN0KHQsZSxuLGkscixvKTooZnVuY3Rpb24gcCh0LGUsbixpLHIsbyxhKXtzd2l0Y2gobil7Y2FzZSJbb2JqZWN0IERhdGFWaWV3XSI6aWYodC5ieXRlTGVuZ3RoIT1lLmJ5dGVMZW5ndGh8fHQuYnl0ZU9mZnNldCE9ZS5ieXRlT2Zmc2V0KXJldHVybiExO3Q9dC5idWZmZXIsZT1lLmJ1ZmZlcjtjYXNlIltvYmplY3QgQXJyYXlCdWZmZXJdIjpyZXR1cm4hKHQuYnl0ZUxlbmd0aCE9ZS5ieXRlTGVuZ3RofHwhbyhuZXcgdUF0KHQpLG5ldyB1QXQoZSkpKTtjYXNlIltvYmplY3QgQm9vbGVhbl0iOmNhc2UiW29iamVjdCBEYXRlXSI6Y2FzZSJbb2JqZWN0IE51bWJlcl0iOnJldHVybiBiTXQoK3QsK2UpO2Nhc2UiW29iamVjdCBFcnJvcl0iOnJldHVybiB0Lm5hbWU9PWUubmFtZSYmdC5tZXNzYWdlPT1lLm1lc3NhZ2U7Y2FzZSJbb2JqZWN0IFJlZ0V4cF0iOmNhc2UiW29iamVjdCBTdHJpbmddIjpyZXR1cm4gdD09ZSsiIjtjYXNlIltvYmplY3QgTWFwXSI6dmFyIHM9eEN0O2Nhc2UiW29iamVjdCBTZXRdIjppZihzfHwocz1TQ3QpLHQuc2l6ZSE9ZS5zaXplJiYhKDEmaSkpcmV0dXJuITE7dmFyIGw9YS5nZXQodCk7aWYobClyZXR1cm4gbD09ZTtpfD0yLGEuc2V0KHQsZSk7dmFyIGM9dkN0KHModCkscyhlKSxpLHIsbyxhKTtyZXR1cm4gYS5kZWxldGUodCksYztjYXNlIltvYmplY3QgU3ltYm9sXSI6aWYoVEN0KXJldHVybiBUQ3QuY2FsbCh0KT09VEN0LmNhbGwoZSl9cmV0dXJuITF9KSh0LGUsbCxuLGkscixvKTtpZighKDEmbikpe3ZhciBmPXUmJlBDdC5jYWxsKHQsIl9fd3JhcHBlZF9fIiksbT1oJiZQQ3QuY2FsbChlLCJfX3dyYXBwZWRfXyIpO2lmKGZ8fG0pe3ZhciBnPWY/dC52YWx1ZSgpOnQsXz1tP2UudmFsdWUoKTplO3JldHVybiBvfHwobz1uZXcga0V0KSxyKGcsXyxuLGksbyl9fXJldHVybiEhZCYmKG98fChvPW5ldyBrRXQpLChmdW5jdGlvbiB5KHQsZSxuLGkscixvKXt2YXIgYT0xJm4scz1VVHQodCksbD1zLmxlbmd0aDtpZihsIT1VVHQoZSkubGVuZ3RoJiYhYSlyZXR1cm4hMTtmb3IodmFyIGM9bDtjLS07KXt2YXIgdT1zW2NdO2lmKCEoYT91IGluIGU6QUN0LmNhbGwoZSx1KSkpcmV0dXJuITF9dmFyIGg9by5nZXQodCk7aWYoaCYmby5nZXQoZSkpcmV0dXJuIGg9PWU7dmFyIGQ9ITA7by5zZXQodCxlKSxvLnNldChlLHQpO2Zvcih2YXIgcD1hOysrYzxsOyl7dmFyIGY9dFt1PXNbY11dLG09ZVt1XTtpZihpKXZhciBnPWE/aShtLGYsdSxlLHQsbyk6aShmLG0sdSx0LGUsbyk7aWYoISh2b2lkIDA9PT1nP2Y9PT1tfHxyKGYsbSxuLGksbyk6Zykpe2Q9ITE7YnJlYWt9cHx8KHA9ImNvbnN0cnVjdG9yIj09dSl9aWYoZCYmIXApe3ZhciBfPXQuY29uc3RydWN0b3IseT1lLmNvbnN0cnVjdG9yO189PXl8fCEoImNvbnN0cnVjdG9yImluIHQpfHwhKCJjb25zdHJ1Y3RvciJpbiBlKXx8ImZ1bmN0aW9uIj09dHlwZW9mIF8mJl8gaW5zdGFuY2VvZiBfJiYiZnVuY3Rpb24iPT10eXBlb2YgeSYmeSBpbnN0YW5jZW9mIHl8fChkPSExKX1yZXR1cm4gby5kZWxldGUodCksby5kZWxldGUoZSksZH0pKHQsZSxuLGkscixvKSl9KShlLG4saSxyLHQsbykpfSxOQ3Q9ZnVuY3Rpb24gT0N0KHQpe3JldHVybiB0PT10JiYhR010KHQpfSxSQ3Q9ZnVuY3Rpb24gekN0KHQsZSl7cmV0dXJuIGZ1bmN0aW9uKG4pe3JldHVybiBudWxsIT1uJiZuW3RdPT09ZSYmKHZvaWQgMCE9PWV8fHQgaW4gT2JqZWN0KG4pKX19LERDdD1mdW5jdGlvbiBCQ3QodCl7cmV0dXJuInN5bWJvbCI9PXR5cGVvZiB0fHxGRXQodCkmJiJbb2JqZWN0IFN5bWJvbF0iPT1qTXQodCl9LEhDdD0vXC58XFsoPzpbXltcXV0qfChbIiddKSg/Oig/IVwxKVteXFxdfFxcLikqP1wxKVxdLyxGQ3Q9L15cdyokLyxWQ3Q9ZnVuY3Rpb24gakN0KHQsZSl7aWYoWEV0KHQpKXJldHVybiExO3ZhciBuPXR5cGVvZiB0O3JldHVybiEoIm51bWJlciIhPW4mJiJzeW1ib2wiIT1uJiYiYm9vbGVhbiIhPW4mJm51bGwhPXQmJiFEQ3QodCkpfHxGQ3QudGVzdCh0KXx8IUhDdC50ZXN0KHQpfHxudWxsIT1lJiZ0IGluIE9iamVjdChlKX07ZnVuY3Rpb24gVUN0KHQsZSl7aWYoImZ1bmN0aW9uIiE9dHlwZW9mIHR8fG51bGwhPWUmJiJmdW5jdGlvbiIhPXR5cGVvZiBlKXRocm93IG5ldyBUeXBlRXJyb3IoIkV4cGVjdGVkIGEgZnVuY3Rpb24iKTt2YXIgbj1mdW5jdGlvbigpe3ZhciBpPWFyZ3VtZW50cyxyPWU/ZS5hcHBseSh0aGlzLGkpOmlbMF0sbz1uLmNhY2hlO2lmKG8uaGFzKHIpKXJldHVybiBvLmdldChyKTt2YXIgYT10LmFwcGx5KHRoaXMsaSk7cmV0dXJuIG4uY2FjaGU9by5zZXQocixhKXx8byxhfTtyZXR1cm4gbi5jYWNoZT1uZXcoVUN0LkNhY2hlfHx3RXQpLG59VUN0LkNhY2hlPXdFdDt2YXIgR0N0LFdDdD1VQ3QscUN0PS9bXi5bXF1dK3xcWyg/OigtP1xkKyg/OlwuXGQrKT8pfChbIiddKSgoPzooPyFcMilbXlxcXXxcXC4pKj8pXDIpXF18KD89KD86XC58XFtcXSkoPzpcLnxcW1xdfCQpKS9nLFlDdD0vXFwoXFwpPy9nLFhDdD0oZnVuY3Rpb24gJEN0KHQpe3ZhciBlPVdDdCh0LChmdW5jdGlvbih0KXtyZXR1cm4gNTAwPT09bi5zaXplJiZuLmNsZWFyKCksdH0pKSxuPWUuY2FjaGU7cmV0dXJuIGV9KSgoZnVuY3Rpb24odCl7dmFyIGU9W107cmV0dXJuIDQ2PT09dC5jaGFyQ29kZUF0KDApJiZlLnB1c2goIiIpLHQucmVwbGFjZShxQ3QsKGZ1bmN0aW9uKHQsbixpLHIpe2UucHVzaChpP3IucmVwbGFjZShZQ3QsIiQxIik6bnx8dCl9KSksZX0pKSxLQ3Q9ZnVuY3Rpb24gWkN0KHQsZSl7Zm9yKHZhciBuPS0xLGk9bnVsbD09dD8wOnQubGVuZ3RoLHI9QXJyYXkoaSk7KytuPGk7KXJbbl09ZSh0W25dLG4sdCk7cmV0dXJuIHJ9LEpDdD1STXQ/Uk10LnByb3RvdHlwZTp2b2lkIDAsUUN0PUpDdD9KQ3QudG9TdHJpbmc6dm9pZCAwLHRrdD1mdW5jdGlvbiB0KGUpe2lmKCJzdHJpbmciPT10eXBlb2YgZSlyZXR1cm4gZTtpZihYRXQoZSkpcmV0dXJuIEtDdChlLHQpKyIiO2lmKERDdChlKSlyZXR1cm4gUUN0P1FDdC5jYWxsKGUpOiIiO3ZhciBuPWUrIiI7cmV0dXJuIjAiPT1uJiYxL2U9PS0xLzA/Ii0wIjpufSxla3Q9ZnVuY3Rpb24gbmt0KHQpe3JldHVybiBudWxsPT10PyIiOnRrdCh0KX0saWt0PWZ1bmN0aW9uIHJrdCh0LGUpe3JldHVybiBYRXQodCk/dDpWQ3QodCxlKT9bdF06WEN0KGVrdCh0KSl9LG9rdD1mdW5jdGlvbiBha3QodCl7aWYoInN0cmluZyI9PXR5cGVvZiB0fHxEQ3QodCkpcmV0dXJuIHQ7dmFyIGU9dCsiIjtyZXR1cm4iMCI9PWUmJjEvdD09LTEvMD8iLTAiOmV9LHNrdD1mdW5jdGlvbiBsa3QodCxlKXtmb3IodmFyIG49MCxpPShlPWlrdChlLHQpKS5sZW5ndGg7bnVsbCE9dCYmbjxpOyl0PXRbb2t0KGVbbisrXSldO3JldHVybiBuJiZuPT1pP3Q6dm9pZCAwfSxja3Q9ZnVuY3Rpb24gdWt0KHQsZSl7cmV0dXJuIG51bGwhPXQmJmUgaW4gT2JqZWN0KHQpfSxoa3Q9ZnVuY3Rpb24gZGt0KHQsZSxuKXtmb3IodmFyIGk9LTEscj0oZT1pa3QoZSx0KSkubGVuZ3RoLG89ITE7KytpPHI7KXt2YXIgYT1va3QoZVtpXSk7aWYoIShvPW51bGwhPXQmJm4odCxhKSkpYnJlYWs7dD10W2FdfXJldHVybiBvfHwrK2khPXI/bzohIShyPW51bGw9PXQ/MDp0Lmxlbmd0aCkmJmVUdChyKSYmUUV0KGEscikmJihYRXQodCl8fFlFdCh0KSl9LHBrdD1mdW5jdGlvbiBma3QodCxlKXtyZXR1cm4gbnVsbCE9dCYmaGt0KHQsZSxja3QpfSxta3Q9ZnVuY3Rpb24gZ2t0KHQpe3JldHVybiJmdW5jdGlvbiI9PXR5cGVvZiB0P3Q6bnVsbD09dD9SQXQ6Im9iamVjdCI9PXR5cGVvZiB0P1hFdCh0KT8oZnVuY3Rpb24gZSh0LG4pe3JldHVybiBWQ3QodCkmJk5DdChuKT9SQ3Qob2t0KHQpLG4pOmZ1bmN0aW9uKGUpe3ZhciBpPShmdW5jdGlvbiByKHQsZSxuKXt2YXIgaT1udWxsPT10P3ZvaWQgMDpza3QodCxlKTtyZXR1cm4gdm9pZCAwPT09aT9uOml9KShlLHQpO3JldHVybiB2b2lkIDA9PT1pJiZpPT09bj9wa3QoZSx0KTpJQ3QobixpLDMpfX0pKHRbMF0sdFsxXSk6KGZ1bmN0aW9uIG4odCl7dmFyIGU9KGZ1bmN0aW9uIG4odCl7Zm9yKHZhciBlPXdUdCh0KSxuPWUubGVuZ3RoO24tLTspe3ZhciBpPWVbbl0scj10W2ldO2Vbbl09W2kscixOQ3QocildfXJldHVybiBlfSkodCk7cmV0dXJuIDE9PWUubGVuZ3RoJiZlWzBdWzJdP1JDdChlWzBdWzBdLGVbMF1bMV0pOmZ1bmN0aW9uKG4pe3JldHVybiBuPT09dHx8KGZ1bmN0aW9uIGkodCxlLG4scil7dmFyIG89bi5sZW5ndGgsYT1vLHM9IXI7aWYobnVsbD09dClyZXR1cm4hYTtmb3IodD1PYmplY3QodCk7by0tOyl7dmFyIGw9bltvXTtpZihzJiZsWzJdP2xbMV0hPT10W2xbMF1dOiEobFswXWluIHQpKXJldHVybiExfWZvcig7KytvPGE7KXt2YXIgYz0obD1uW29dKVswXSx1PXRbY10saD1sWzFdO2lmKHMmJmxbMl0pe2lmKHZvaWQgMD09PXUmJiEoYyBpbiB0KSlyZXR1cm4hMX1lbHNle3ZhciBkPW5ldyBrRXQ7aWYocil2YXIgcD1yKHUsaCxjLHQsZSxkKTtpZighKHZvaWQgMD09PXA/SUN0KGgsdSwzLHIsZCk6cCkpcmV0dXJuITF9fXJldHVybiEwfSkobix0LGUpfX0pKHQpOihmdW5jdGlvbiBpKHQpe3JldHVybiBWQ3QodCk/KGZ1bmN0aW9uIGUodCl7cmV0dXJuIGZ1bmN0aW9uKGUpe3JldHVybiBudWxsPT1lP3ZvaWQgMDplW3RdfX0pKG9rdCh0KSk6KGZ1bmN0aW9uIG4odCl7cmV0dXJuIGZ1bmN0aW9uKGUpe3JldHVybiBza3QoZSx0KX19KSh0KX0pKHQpfSxfa3Q9L15ccyt8XHMrJC9nLHlrdD0vXlstK10weFswLTlhLWZdKyQvaSx2a3Q9L14wYlswMV0rJC9pLGJrdD0vXjBvWzAtN10rJC9pLHhrdD1wYXJzZUludCx3a3Q9ZnVuY3Rpb24gU2t0KHQpe3JldHVybiB0PzEvMD09PSh0PShmdW5jdGlvbiBlKHQpe2lmKCJudW1iZXIiPT10eXBlb2YgdClyZXR1cm4gdDtpZihEQ3QodCkpcmV0dXJuIE5hTjtpZihHTXQodCkpe3ZhciBlPSJmdW5jdGlvbiI9PXR5cGVvZiB0LnZhbHVlT2Y/dC52YWx1ZU9mKCk6dDt0PUdNdChlKT9lKyIiOmV9aWYoInN0cmluZyIhPXR5cGVvZiB0KXJldHVybiAwPT09dD90Oit0O3Q9dC5yZXBsYWNlKF9rdCwiIik7dmFyIG49dmt0LnRlc3QodCk7cmV0dXJuIG58fGJrdC50ZXN0KHQpP3hrdCh0LnNsaWNlKDIpLG4/Mjo4KTp5a3QudGVzdCh0KT9OYU46K3R9KSh0KSl8fHQ9PT0tMS8wPzE3OTc2OTMxMzQ4NjIzMTU3ZTI5MioodDwwPy0xOjEpOnQ9PXQ/dDowOjA9PT10P3Q6MH0sTWt0PU1hdGgubWF4LEVrdD0oZnVuY3Rpb24gQWt0KHQpe3JldHVybiBmdW5jdGlvbihlLG4saSl7dmFyIHI9T2JqZWN0KGUpO2lmKCFiVHQoZSkpe3ZhciBvPW1rdChuKTtlPXdUdChlKSxuPWZ1bmN0aW9uKHQpe3JldHVybiBvKHJbdF0sdCxyKX19dmFyIGE9dChlLG4saSk7cmV0dXJuIGE+LTE/cltvP2VbYV06YV06dm9pZCAwfX0pKChmdW5jdGlvbiBUa3QodCxlLG4pe3ZhciBpPW51bGw9PXQ/MDp0Lmxlbmd0aDtpZighaSlyZXR1cm4tMTt2YXIgcj1udWxsPT1uPzA6KGZ1bmN0aW9uIG8odCl7dmFyIGU9d2t0KHQpLG49ZSUxO3JldHVybiBlPT1lP24/ZS1uOmU6MH0pKG4pO3JldHVybiByPDAmJihyPU1rdChpK3IsMCkpLChmdW5jdGlvbiBhKHQsZSxuLGkpe2Zvcih2YXIgcj10Lmxlbmd0aCxvPW4rKGk/MTotMSk7aT9vLS06KytvPHI7KWlmKGUodFtvXSxvLHQpKXJldHVybiBvO3JldHVybi0xfSkodCxta3QoZSkscil9KSksQ2t0PVJNdD9STXQuaXNDb25jYXRTcHJlYWRhYmxlOnZvaWQgMCxra3Q9ZnVuY3Rpb24gTGt0KHQpe3JldHVybiBYRXQodCl8fFlFdCh0KXx8ISEoQ2t0JiZ0JiZ0W0NrdF0pfSxQa3Q9ZnVuY3Rpb24gdChlLG4saSxyLG8pe3ZhciBhPS0xLHM9ZS5sZW5ndGg7Zm9yKGl8fChpPWtrdCksb3x8KG89W10pOysrYTxzOyl7dmFyIGw9ZVthXTtuPjAmJmkobCk/bj4xP3QobCxuLTEsaSxyLG8pOkRUdChvLGwpOnJ8fChvW28ubGVuZ3RoXT1sKX1yZXR1cm4gb30sSWt0PWZ1bmN0aW9uIE5rdCh0KXtyZXR1cm4gbnVsbCE9dCYmdC5sZW5ndGg/UGt0KHQsMSk6W119LE9rdD1PYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LFJrdD1mdW5jdGlvbiB6a3QodCxlKXtyZXR1cm4gbnVsbCE9dCYmT2t0LmNhbGwodCxlKX0sRGt0PWZ1bmN0aW9uIEJrdCh0LGUpe3ZhciBuPS0xLGk9YlR0KHQpP0FycmF5KHQubGVuZ3RoKTpbXTtyZXR1cm4gbkN0KHQsKGZ1bmN0aW9uKHQscixvKXtpWysrbl09ZSh0LHIsbyl9KSksaX0sSGt0PWZ1bmN0aW9uIEZrdCh0LGUsbil7Zm9yKHZhciBpPS0xLHI9dC5sZW5ndGg7KytpPHI7KXt2YXIgbz10W2ldLGE9ZShvKTtpZihudWxsIT1hJiYodm9pZCAwPT09cz9hPT1hJiYhREN0KGEpOm4oYSxzKSkpdmFyIHM9YSxsPW99cmV0dXJuIGx9LFZrdD1mdW5jdGlvbiBqa3QodCxlKXtyZXR1cm4gdD5lfSxVa3Q9ZnVuY3Rpb24gR2t0KHQsZSxuKXsodm9pZCAwIT09biYmIWJNdCh0W2VdLG4pfHx2b2lkIDA9PT1uJiYhKGUgaW4gdCkpJiZORXQodCxlLG4pfSxXa3Q9RnVuY3Rpb24ucHJvdG90eXBlLnRvU3RyaW5nLHFrdD1PYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LFlrdD1Xa3QuY2FsbChPYmplY3QpLFhrdD1mdW5jdGlvbiAka3QodCxlKXtpZigoImNvbnN0cnVjdG9yIiE9PWV8fCJmdW5jdGlvbiIhPXR5cGVvZiB0W2VdKSYmIl9fcHJvdG9fXyIhPWUpcmV0dXJuIHRbZV19LEtrdD1mdW5jdGlvbiB0KGUsbixpLHIsbyl7ZSE9PW4mJkpBdChuLChmdW5jdGlvbihhLHMpe2lmKG98fChvPW5ldyBrRXQpLEdNdChhKSkhKGZ1bmN0aW9uIGwodCxlLG4saSxyLG8sYSl7dmFyIHM9WGt0KHQsbiksbD1Ya3QoZSxuKSxjPWEuZ2V0KGwpO2lmKGMpVWt0KHQsbixjKTtlbHNle3ZhciB1PW8/byhzLGwsbisiIix0LGUsYSk6dm9pZCAwLGg9dm9pZCAwPT09dTtpZihoKXt2YXIgZD1YRXQobCkscD0hZCYmWkV0KGwpLGY9IWQmJiFwJiZsVHQobCk7dT1sLGR8fHB8fGY/WEV0KHMpP3U9czooZnVuY3Rpb24gbSh0KXtyZXR1cm4gRkV0KHQpJiZiVHQodCl9KShzKT91PUNUdChzKTpwPyhoPSExLHU9QVR0KGwsITApKTpmPyhoPSExLHU9Z0F0KGwsITApKTp1PVtdOihmdW5jdGlvbiBnKHQpe2lmKCFGRXQodCl8fCJbb2JqZWN0IE9iamVjdF0iIT1qTXQodCkpcmV0dXJuITE7dmFyIGU9SFR0KHQpO2lmKG51bGw9PT1lKXJldHVybiEwO3ZhciBuPXFrdC5jYWxsKGUsImNvbnN0cnVjdG9yIikmJmUuY29uc3RydWN0b3I7cmV0dXJuImZ1bmN0aW9uIj09dHlwZW9mIG4mJm4gaW5zdGFuY2VvZiBuJiZXa3QuY2FsbChuKT09WWt0fSkobCl8fFlFdChsKT8odT1zLFlFdChzKT91PShmdW5jdGlvbiBfKHQpe3JldHVybiBCRXQodCxFVHQodCkpfSkocyk6R010KHMpJiYhcU10KHMpfHwodT1iQXQobCkpKTpoPSExfWgmJihhLnNldChsLHUpLHIodSxsLGksbyxhKSxhLmRlbGV0ZShsKSksVWt0KHQsbix1KX19KShlLG4scyxpLHQscixvKTtlbHNle3ZhciBjPXI/cihYa3QoZSxzKSxhLHMrIiIsZSxuLG8pOnZvaWQgMDt2b2lkIDA9PT1jJiYoYz1hKSxVa3QoZSxzLGMpfX0pLEVUdCl9LFprdD0oZnVuY3Rpb24gSmt0KHQpe3JldHVybiBXQXQoKGZ1bmN0aW9uKGUsbil7dmFyIGk9LTEscj1uLmxlbmd0aCxvPXI+MT9uW3ItMV06dm9pZCAwLGE9cj4yP25bMl06dm9pZCAwO2ZvcihvPXQubGVuZ3RoPjMmJiJmdW5jdGlvbiI9PXR5cGVvZiBvPyhyLS0sbyk6dm9pZCAwLGEmJllBdChuWzBdLG5bMV0sYSkmJihvPXI8Mz92b2lkIDA6byxyPTEpLGU9T2JqZWN0KGUpOysraTxyOyl7dmFyIHM9bltpXTtzJiZ0KGUscyxpLG8pfXJldHVybiBlfSkpfSkoKGZ1bmN0aW9uKHQsZSxuKXtLa3QodCxlLG4pfSkpLFFrdD1mdW5jdGlvbiB0THQodCxlKXtyZXR1cm4gdDxlfSxlTHQ9ZnVuY3Rpb24gbkx0KHQsZSxuLGkpe2lmKCFHTXQodCkpcmV0dXJuIHQ7Zm9yKHZhciByPS0xLG89KGU9aWt0KGUsdCkpLmxlbmd0aCxhPW8tMSxzPXQ7bnVsbCE9cyYmKytyPG87KXt2YXIgbD1va3QoZVtyXSksYz1uO2lmKHIhPWEpe3ZhciB1PXNbbF07dm9pZCAwPT09KGM9aT9pKHUsbCxzKTp2b2lkIDApJiYoYz1HTXQodSk/dTpRRXQoZVtyKzFdKT9bXTp7fSl9ekV0KHMsbCxjKSxzPXNbbF19cmV0dXJuIHR9LGlMdD0oZnVuY3Rpb24gckx0KHQpe3JldHVybiBVQXQoRkF0KHQsdm9pZCAwLElrdCksdCsiIil9KSgoZnVuY3Rpb24odCxlKXtyZXR1cm4gbnVsbD09dD97fTooZnVuY3Rpb24gbih0LGUpe3JldHVybihmdW5jdGlvbiBuKHQsZSxpKXtmb3IodmFyIHI9LTEsbz1lLmxlbmd0aCxhPXt9OysrcjxvOyl7dmFyIHM9ZVtyXSxsPXNrdCh0LHMpO2kobCxzKSYmZUx0KGEsaWt0KHMsdCksbCl9cmV0dXJuIGF9KSh0LGUsKGZ1bmN0aW9uKGUsbil7cmV0dXJuIHBrdCh0LG4pfSkpfSkodCxlKX0pKSxvTHQ9TWF0aC5jZWlsLGFMdD1NYXRoLm1heCxzTHQ9KGZ1bmN0aW9uIGxMdCh0KXtyZXR1cm4gZnVuY3Rpb24oZSxuLGkpe3JldHVybiBpJiYibnVtYmVyIiE9dHlwZW9mIGkmJllBdChlLG4saSkmJihuPWk9dm9pZCAwKSxlPXdrdChlKSx2b2lkIDA9PT1uPyhuPWUsZT0wKTpuPXdrdChuKSwoZnVuY3Rpb24gcih0LGUsbixpKXtmb3IodmFyIHI9LTEsbz1hTHQob0x0KChlLXQpLyhufHwxKSksMCksYT1BcnJheShvKTtvLS07KWFbaT9vOisrcl09dCx0Kz1uO3JldHVybiBhfSkoZSxuLGk9dm9pZCAwPT09aT9lPG4/MTotMTp3a3QoaSksdCl9fSkoKSxjTHQ9ZnVuY3Rpb24gdUx0KHQsZSxuLGkpe3ZhciByPS0xLG89bnVsbD09dD8wOnQubGVuZ3RoO2ZvcihpJiZvJiYobj10Wysrcl0pOysrcjxvOyluPWUobix0W3JdLHIsdCk7cmV0dXJuIG59LGhMdD1mdW5jdGlvbiBkTHQodCxlLG4saSxyKXtyZXR1cm4gcih0LChmdW5jdGlvbih0LHIsbyl7bj1pPyhpPSExLHQpOmUobix0LHIsbyl9KSksbn0scEx0PWZ1bmN0aW9uIGZMdCh0LGUpe2lmKHQhPT1lKXt2YXIgbj12b2lkIDAhPT10LGk9bnVsbD09PXQscj10PT10LG89REN0KHQpLGE9dm9pZCAwIT09ZSxzPW51bGw9PT1lLGw9ZT09ZSxjPURDdChlKTtpZighcyYmIWMmJiFvJiZ0PmV8fG8mJmEmJmwmJiFzJiYhY3x8aSYmYSYmbHx8IW4mJmx8fCFyKXJldHVybiAxO2lmKCFpJiYhbyYmIWMmJnQ8ZXx8YyYmbiYmciYmIWkmJiFvfHxzJiZuJiZyfHwhYSYmcnx8IWwpcmV0dXJuLTF9cmV0dXJuIDB9LG1MdD1XQXQoKGZ1bmN0aW9uKHQsZSl7aWYobnVsbD09dClyZXR1cm5bXTt2YXIgbj1lLmxlbmd0aDtyZXR1cm4gbj4xJiZZQXQodCxlWzBdLGVbMV0pP2U9W106bj4yJiZZQXQoZVswXSxlWzFdLGVbMl0pJiYoZT1bZVswXV0pLChmdW5jdGlvbiBpKHQsZSxuKXt2YXIgaT0tMTtyZXR1cm4gZT1LQ3QoZS5sZW5ndGg/ZTpbUkF0XSxyVHQobWt0KSksKGZ1bmN0aW9uIHIodCxlKXt2YXIgbj10Lmxlbmd0aDtmb3IodC5zb3J0KGUpO24tLTspdFtuXT10W25dLnZhbHVlO3JldHVybiB0fSkoRGt0KHQsKGZ1bmN0aW9uKHQsbixyKXtyZXR1cm57Y3JpdGVyaWE6S0N0KGUsKGZ1bmN0aW9uKGUpe3JldHVybiBlKHQpfSkpLGluZGV4OisraSx2YWx1ZTp0fX0pKSwoZnVuY3Rpb24odCxlKXtyZXR1cm4oZnVuY3Rpb24gaSh0LGUsbil7Zm9yKHZhciBpPS0xLHI9dC5jcml0ZXJpYSxvPWUuY3JpdGVyaWEsYT1yLmxlbmd0aCxzPW4ubGVuZ3RoOysraTxhOyl7dmFyIGw9cEx0KHJbaV0sb1tpXSk7aWYobClyZXR1cm4gaT49cz9sOmwqKCJkZXNjIj09bltpXT8tMToxKX1yZXR1cm4gdC5pbmRleC1lLmluZGV4fSkodCxlLG4pfSkpfSkodCxQa3QoZSwxKSxbXSl9KSksZ0x0PTA7dHJ5e0dDdD17Y2xvbmVEZWVwOmZ1bmN0aW9uIF9MdCh0KXtyZXR1cm4gSUF0KHQsNSl9LGNvbnN0YW50Ok5BdCxkZWZhdWx0czpaQXQsZWFjaDpsQ3QsZmlsdGVyOmZ1bmN0aW9uIHlMdCh0LGUpe3JldHVybihYRXQodCk/TFR0OmNDdCkodCxta3QoZSkpfSxmaW5kOkVrdCxmbGF0dGVuOklrdCxmb3JFYWNoOmFDdCxmb3JJbjpmdW5jdGlvbiB2THQodCxlKXtyZXR1cm4gbnVsbD09dD90OkpBdCh0LHJDdChlKSxFVHQpfSxoYXM6ZnVuY3Rpb24gYkx0KHQsZSl7cmV0dXJuIG51bGwhPXQmJmhrdCh0LGUsUmt0KX0saXNVbmRlZmluZWQ6ZnVuY3Rpb24geEx0KHQpe3JldHVybiB2b2lkIDA9PT10fSxsYXN0OmZ1bmN0aW9uIHdMdCh0KXt2YXIgZT1udWxsPT10PzA6dC5sZW5ndGg7cmV0dXJuIGU/dFtlLTFdOnZvaWQgMH0sbWFwOmZ1bmN0aW9uIFNMdCh0LGUpe3JldHVybihYRXQodCk/S0N0OkRrdCkodCxta3QoZSkpfSxtYXBWYWx1ZXM6ZnVuY3Rpb24gTUx0KHQsZSl7dmFyIG49e307cmV0dXJuIGU9bWt0KGUpLHRDdCh0LChmdW5jdGlvbih0LGkscil7TkV0KG4saSxlKHQsaSxyKSl9KSksbn0sbWF4OmZ1bmN0aW9uIEVMdCh0KXtyZXR1cm4gdCYmdC5sZW5ndGg/SGt0KHQsUkF0LFZrdCk6dm9pZCAwfSxtZXJnZTpaa3QsbWluOmZ1bmN0aW9uIFRMdCh0KXtyZXR1cm4gdCYmdC5sZW5ndGg/SGt0KHQsUkF0LFFrdCk6dm9pZCAwfSxtaW5CeTpmdW5jdGlvbiBBTHQodCxlKXtyZXR1cm4gdCYmdC5sZW5ndGg/SGt0KHQsbWt0KGUpLFFrdCk6dm9pZCAwfSxub3c6ZnVuY3Rpb24oKXtyZXR1cm4gT010LkRhdGUubm93KCl9LHBpY2s6aUx0LHJhbmdlOnNMdCxyZWR1Y2U6ZnVuY3Rpb24gQ0x0KHQsZSxuKXt2YXIgaT1YRXQodCk/Y0x0OmhMdCxyPWFyZ3VtZW50cy5sZW5ndGg8MztyZXR1cm4gaSh0LG1rdChlKSxuLHIsbkN0KX0sc29ydEJ5Om1MdCx1bmlxdWVJZDpmdW5jdGlvbiBrTHQodCl7dmFyIGU9KytnTHQ7cmV0dXJuIGVrdCh0KStlfSx2YWx1ZXM6ZnVuY3Rpb24gTEx0KHQpe3JldHVybiBudWxsPT10P1tdOihmdW5jdGlvbiBlKHQsbil7cmV0dXJuIEtDdChuLChmdW5jdGlvbihlKXtyZXR1cm4gdFtlXX0pKX0pKHQsd1R0KHQpKX0semlwT2JqZWN0OmZ1bmN0aW9uIFBMdCh0LGUpe3JldHVybihmdW5jdGlvbiBuKHQsZSxpKXtmb3IodmFyIHI9LTEsbz10Lmxlbmd0aCxhPWUubGVuZ3RoLHM9e307KytyPG87KWkocyx0W3JdLHI8YT9lW3JdOnZvaWQgMCk7cmV0dXJuIHN9KSh0fHxbXSxlfHxbXSx6RXQpfX19Y2F0Y2godCl7fUdDdHx8KEdDdD13aW5kb3cuXyk7dmFyIElMdD1HQ3QsTkx0PU9MdDtmdW5jdGlvbiBPTHQoKXt2YXIgdD17fTt0Ll9uZXh0PXQuX3ByZXY9dCx0aGlzLl9zZW50aW5lbD10fWZ1bmN0aW9uIFJMdCh0KXt0Ll9wcmV2Ll9uZXh0PXQuX25leHQsdC5fbmV4dC5fcHJldj10Ll9wcmV2LGRlbGV0ZSB0Ll9uZXh0LGRlbGV0ZSB0Ll9wcmV2fWZ1bmN0aW9uIHpMdCh0LGUpe2lmKCJfbmV4dCIhPT10JiYiX3ByZXYiIT09dClyZXR1cm4gZX1PTHQucHJvdG90eXBlLmRlcXVldWU9ZnVuY3Rpb24oKXt2YXIgdD10aGlzLl9zZW50aW5lbCxlPXQuX3ByZXY7aWYoZSE9PXQpcmV0dXJuIFJMdChlKSxlfSxPTHQucHJvdG90eXBlLmVucXVldWU9ZnVuY3Rpb24odCl7dmFyIGU9dGhpcy5fc2VudGluZWw7dC5fcHJldiYmdC5fbmV4dCYmUkx0KHQpLHQuX25leHQ9ZS5fbmV4dCxlLl9uZXh0Ll9wcmV2PXQsZS5fbmV4dD10LHQuX3ByZXY9ZX0sT0x0LnByb3RvdHlwZS50b1N0cmluZz1mdW5jdGlvbigpe2Zvcih2YXIgdD1bXSxlPXRoaXMuX3NlbnRpbmVsLG49ZS5fcHJldjtuIT09ZTspdC5wdXNoKEpTT04uc3RyaW5naWZ5KG4sekx0KSksbj1uLl9wcmV2O3JldHVybiJbIit0LmpvaW4oIiwgIikrIl0ifTt2YXIgREx0PXZNdC5HcmFwaCxCTHQ9SUx0LmNvbnN0YW50KDEpO2Z1bmN0aW9uIEhMdCh0LGUsbixpLHIpe3ZhciBvPXI/W106dm9pZCAwO3JldHVybiBJTHQuZm9yRWFjaCh0LmluRWRnZXMoaS52KSwoZnVuY3Rpb24oaSl7dmFyIGE9dC5lZGdlKGkpLHM9dC5ub2RlKGkudik7ciYmby5wdXNoKHt2Omkudix3Omkud30pLHMub3V0LT1hLEZMdChlLG4scyl9KSksSUx0LmZvckVhY2godC5vdXRFZGdlcyhpLnYpLChmdW5jdGlvbihpKXt2YXIgcj10LmVkZ2UoaSksbz10Lm5vZGUoaS53KTtvLmluLT1yLEZMdChlLG4sbyl9KSksdC5yZW1vdmVOb2RlKGkudiksb31mdW5jdGlvbiBGTHQodCxlLG4pe24ub3V0P24uaW4/dFtuLm91dC1uLmluK2VdLmVucXVldWUobik6dFt0Lmxlbmd0aC0xXS5lbnF1ZXVlKG4pOnRbMF0uZW5xdWV1ZShuKX12YXIgVkx0PXZNdC5HcmFwaCxqTHQ9e2FkZER1bW15Tm9kZTplUHQsc2ltcGxpZnk6ZnVuY3Rpb24gVUx0KHQpe3ZhciBlPShuZXcgVkx0KS5zZXRHcmFwaCh0LmdyYXBoKCkpO3JldHVybiBJTHQuZm9yRWFjaCh0Lm5vZGVzKCksKGZ1bmN0aW9uKG4pe2Uuc2V0Tm9kZShuLHQubm9kZShuKSl9KSksSUx0LmZvckVhY2godC5lZGdlcygpLChmdW5jdGlvbihuKXt2YXIgaT1lLmVkZ2Uobi52LG4udyl8fHt3ZWlnaHQ6MCxtaW5sZW46MX0scj10LmVkZ2Uobik7ZS5zZXRFZGdlKG4udixuLncse3dlaWdodDppLndlaWdodCtyLndlaWdodCxtaW5sZW46TWF0aC5tYXgoaS5taW5sZW4sci5taW5sZW4pfSl9KSksZX0sYXNOb25Db21wb3VuZEdyYXBoOmZ1bmN0aW9uIEdMdCh0KXt2YXIgZT1uZXcgVkx0KHttdWx0aWdyYXBoOnQuaXNNdWx0aWdyYXBoKCl9KS5zZXRHcmFwaCh0LmdyYXBoKCkpO3JldHVybiBJTHQuZm9yRWFjaCh0Lm5vZGVzKCksKGZ1bmN0aW9uKG4pe3QuY2hpbGRyZW4obikubGVuZ3RofHxlLnNldE5vZGUobix0Lm5vZGUobikpfSkpLElMdC5mb3JFYWNoKHQuZWRnZXMoKSwoZnVuY3Rpb24obil7ZS5zZXRFZGdlKG4sdC5lZGdlKG4pKX0pKSxlfSxzdWNjZXNzb3JXZWlnaHRzOmZ1bmN0aW9uIFdMdCh0KXt2YXIgZT1JTHQubWFwKHQubm9kZXMoKSwoZnVuY3Rpb24oZSl7dmFyIG49e307cmV0dXJuIElMdC5mb3JFYWNoKHQub3V0RWRnZXMoZSksKGZ1bmN0aW9uKGUpe25bZS53XT0obltlLnddfHwwKSt0LmVkZ2UoZSkud2VpZ2h0fSkpLG59KSk7cmV0dXJuIElMdC56aXBPYmplY3QodC5ub2RlcygpLGUpfSxwcmVkZWNlc3NvcldlaWdodHM6ZnVuY3Rpb24gcUx0KHQpe3ZhciBlPUlMdC5tYXAodC5ub2RlcygpLChmdW5jdGlvbihlKXt2YXIgbj17fTtyZXR1cm4gSUx0LmZvckVhY2godC5pbkVkZ2VzKGUpLChmdW5jdGlvbihlKXtuW2Uudl09KG5bZS52XXx8MCkrdC5lZGdlKGUpLndlaWdodH0pKSxufSkpO3JldHVybiBJTHQuemlwT2JqZWN0KHQubm9kZXMoKSxlKX0saW50ZXJzZWN0UmVjdDpmdW5jdGlvbiBZTHQodCxlKXt2YXIgbixpLHI9dC54LG89dC55LGE9ZS54LXIscz1lLnktbyxsPXQud2lkdGgvMixjPXQuaGVpZ2h0LzI7aWYoIWEmJiFzKXRocm93IG5ldyBFcnJvcigiTm90IHBvc3NpYmxlIHRvIGZpbmQgaW50ZXJzZWN0aW9uIGluc2lkZSBvZiB0aGUgcmVjdGFuZ2xlIik7cmV0dXJuIE1hdGguYWJzKHMpKmw+TWF0aC5hYnMoYSkqYz8oczwwJiYoYz0tYyksbj1jKmEvcyxpPWMpOihhPDAmJihsPS1sKSxuPWwsaT1sKnMvYSkse3g6cituLHk6bytpfX0sYnVpbGRMYXllck1hdHJpeDpmdW5jdGlvbiBYTHQodCl7dmFyIGU9SUx0Lm1hcChJTHQucmFuZ2UoblB0KHQpKzEpLChmdW5jdGlvbigpe3JldHVybltdfSkpO3JldHVybiBJTHQuZm9yRWFjaCh0Lm5vZGVzKCksKGZ1bmN0aW9uKG4pe3ZhciBpPXQubm9kZShuKSxyPWkucmFuaztJTHQuaXNVbmRlZmluZWQocil8fChlW3JdW2kub3JkZXJdPW4pfSkpLGV9LG5vcm1hbGl6ZVJhbmtzOmZ1bmN0aW9uICRMdCh0KXt2YXIgZT1JTHQubWluKElMdC5tYXAodC5ub2RlcygpLChmdW5jdGlvbihlKXtyZXR1cm4gdC5ub2RlKGUpLnJhbmt9KSkpO0lMdC5mb3JFYWNoKHQubm9kZXMoKSwoZnVuY3Rpb24obil7dmFyIGk9dC5ub2RlKG4pO0lMdC5oYXMoaSwicmFuayIpJiYoaS5yYW5rLT1lKX0pKX0scmVtb3ZlRW1wdHlSYW5rczpmdW5jdGlvbiBLTHQodCl7dmFyIGU9SUx0Lm1pbihJTHQubWFwKHQubm9kZXMoKSwoZnVuY3Rpb24oZSl7cmV0dXJuIHQubm9kZShlKS5yYW5rfSkpKSxuPVtdO0lMdC5mb3JFYWNoKHQubm9kZXMoKSwoZnVuY3Rpb24oaSl7dmFyIHI9dC5ub2RlKGkpLnJhbmstZTtuW3JdfHwobltyXT1bXSksbltyXS5wdXNoKGkpfSkpO3ZhciBpPTAscj10LmdyYXBoKCkubm9kZVJhbmtGYWN0b3I7SUx0LmZvckVhY2gobiwoZnVuY3Rpb24oZSxuKXtJTHQuaXNVbmRlZmluZWQoZSkmJm4lciE9MD8tLWk6aSYmSUx0LmZvckVhY2goZSwoZnVuY3Rpb24oZSl7dC5ub2RlKGUpLnJhbmsrPWl9KSl9KSl9LGFkZEJvcmRlck5vZGU6ZnVuY3Rpb24gWkx0KHQsZSxuLGkpe3ZhciByPXt3aWR0aDowLGhlaWdodDowfTtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD49NCYmKHIucmFuaz1uLHIub3JkZXI9aSksZVB0KHQsImJvcmRlciIscixlKX0sbWF4UmFuazpuUHQscGFydGl0aW9uOmZ1bmN0aW9uIEpMdCh0LGUpe3ZhciBuPXtsaHM6W10scmhzOltdfTtyZXR1cm4gSUx0LmZvckVhY2godCwoZnVuY3Rpb24odCl7ZSh0KT9uLmxocy5wdXNoKHQpOm4ucmhzLnB1c2godCl9KSksbn0sdGltZTpmdW5jdGlvbiBRTHQodCxlKXt2YXIgbj1JTHQubm93KCk7dHJ5e3JldHVybiBlKCl9ZmluYWxseXtjb25zb2xlLmxvZyh0KyIgdGltZTogIisoSUx0Lm5vdygpLW4pKyJtcyIpfX0sbm90aW1lOmZ1bmN0aW9uIHRQdCh0LGUpe3JldHVybiBlKCl9fTtmdW5jdGlvbiBlUHQodCxlLG4saSl7dmFyIHI7ZG97cj1JTHQudW5pcXVlSWQoaSl9d2hpbGUodC5oYXNOb2RlKHIpKTtyZXR1cm4gbi5kdW1teT1lLHQuc2V0Tm9kZShyLG4pLHJ9ZnVuY3Rpb24gblB0KHQpe3JldHVybiBJTHQubWF4KElMdC5tYXAodC5ub2RlcygpLChmdW5jdGlvbihlKXt2YXIgbj10Lm5vZGUoZSkucmFuaztpZighSUx0LmlzVW5kZWZpbmVkKG4pKXJldHVybiBufSkpKX12YXIgaVB0PWZ1bmN0aW9uIHJQdCh0KXt2YXIgZT17fTtJTHQuZm9yRWFjaCh0LnNvdXJjZXMoKSwoZnVuY3Rpb24gbihpKXt2YXIgcj10Lm5vZGUoaSk7aWYoSUx0LmhhcyhlLGkpKXJldHVybiByLnJhbms7ZVtpXT0hMDt2YXIgbz1JTHQubWluKElMdC5tYXAodC5vdXRFZGdlcyhpKSwoZnVuY3Rpb24oZSl7cmV0dXJuIG4oZS53KS10LmVkZ2UoZSkubWlubGVufSkpKTtyZXR1cm4gbyE9PU51bWJlci5QT1NJVElWRV9JTkZJTklUWSYmbnVsbCE9b3x8KG89MCksci5yYW5rPW99KSl9LG9QdD1mdW5jdGlvbiBhUHQodCxlKXtyZXR1cm4gdC5ub2RlKGUudykucmFuay10Lm5vZGUoZS52KS5yYW5rLXQuZWRnZShlKS5taW5sZW59LHNQdD12TXQuR3JhcGgsbFB0PW9QdCxjUHQ9ZnVuY3Rpb24gdVB0KHQpe3ZhciBlLG4saT1uZXcgc1B0KHtkaXJlY3RlZDohMX0pLHI9dC5ub2RlcygpWzBdLG89dC5ub2RlQ291bnQoKTtmb3IoaS5zZXROb2RlKHIse30pO2hQdChpLHQpPG87KWU9ZFB0KGksdCksbj1pLmhhc05vZGUoZS52KT9sUHQodCxlKTotbFB0KHQsZSkscFB0KGksdCxuKTtyZXR1cm4gaX07ZnVuY3Rpb24gaFB0KHQsZSl7cmV0dXJuIElMdC5mb3JFYWNoKHQubm9kZXMoKSwoZnVuY3Rpb24gbihpKXtJTHQuZm9yRWFjaChlLm5vZGVFZGdlcyhpKSwoZnVuY3Rpb24ocil7dmFyIG89ci52LGE9aT09PW8/ci53Om87dC5oYXNOb2RlKGEpfHxsUHQoZSxyKXx8KHQuc2V0Tm9kZShhLHt9KSx0LnNldEVkZ2UoaSxhLHt9KSxuKGEpKX0pKX0pKSx0Lm5vZGVDb3VudCgpfWZ1bmN0aW9uIGRQdCh0LGUpe3JldHVybiBJTHQubWluQnkoZS5lZGdlcygpLChmdW5jdGlvbihuKXtpZih0Lmhhc05vZGUobi52KSE9PXQuaGFzTm9kZShuLncpKXJldHVybiBsUHQoZSxuKX0pKX1mdW5jdGlvbiBwUHQodCxlLG4pe0lMdC5mb3JFYWNoKHQubm9kZXMoKSwoZnVuY3Rpb24odCl7ZS5ub2RlKHQpLnJhbmsrPW59KSl9dmFyIGZQdD1vUHQsbVB0PWlQdCxnUHQ9dk10LmFsZy5wcmVvcmRlcixfUHQ9dk10LmFsZy5wb3N0b3JkZXIseVB0PWpMdC5zaW1wbGlmeSx2UHQ9YlB0O2Z1bmN0aW9uIGJQdCh0KXt0PXlQdCh0KSxtUHQodCk7dmFyIGUsbj1jUHQodCk7Zm9yKFNQdChuKSx4UHQobix0KTtlPUVQdChuKTspQVB0KG4sdCxlLFRQdChuLHQsZSkpfWZ1bmN0aW9uIHhQdCh0LGUpe3ZhciBuPV9QdCh0LHQubm9kZXMoKSk7bj1uLnNsaWNlKDAsbi5sZW5ndGgtMSksSUx0LmZvckVhY2gobiwoZnVuY3Rpb24obil7IShmdW5jdGlvbiBpKHQsZSxuKXt2YXIgaT10Lm5vZGUobik7dC5lZGdlKG4saS5wYXJlbnQpLmN1dHZhbHVlPXdQdCh0LGUsbil9KSh0LGUsbil9KSl9ZnVuY3Rpb24gd1B0KHQsZSxuKXt2YXIgaT10Lm5vZGUobikucGFyZW50LHI9ITAsbz1lLmVkZ2UobixpKSxhPTA7cmV0dXJuIG98fChyPSExLG89ZS5lZGdlKGksbikpLGE9by53ZWlnaHQsSUx0LmZvckVhY2goZS5ub2RlRWRnZXMobiksKGZ1bmN0aW9uKG8pe3ZhciBzPW8udj09PW4sbD1zP28udzpvLnY7aWYobCE9PWkpe3ZhciBjPXM9PT1yLHU9ZS5lZGdlKG8pLndlaWdodDtpZihhKz1jP3U6LXUsKGZ1bmN0aW9uIGgodCxlLG4pe3JldHVybiB0Lmhhc0VkZ2UoZSxuKX0pKHQsbixsKSl7dmFyIGQ9dC5lZGdlKG4sbCkuY3V0dmFsdWU7YSs9Yz8tZDpkfX19KSksYX1mdW5jdGlvbiBTUHQodCxlKXthcmd1bWVudHMubGVuZ3RoPDImJihlPXQubm9kZXMoKVswXSksTVB0KHQse30sMSxlKX1mdW5jdGlvbiBNUHQodCxlLG4saSxyKXt2YXIgbz1uLGE9dC5ub2RlKGkpO3JldHVybiBlW2ldPSEwLElMdC5mb3JFYWNoKHQubmVpZ2hib3JzKGkpLChmdW5jdGlvbihyKXtJTHQuaGFzKGUscil8fChuPU1QdCh0LGUsbixyLGkpKX0pKSxhLmxvdz1vLGEubGltPW4rKyxyP2EucGFyZW50PXI6ZGVsZXRlIGEucGFyZW50LG59ZnVuY3Rpb24gRVB0KHQpe3JldHVybiBJTHQuZmluZCh0LmVkZ2VzKCksKGZ1bmN0aW9uKGUpe3JldHVybiB0LmVkZ2UoZSkuY3V0dmFsdWU8MH0pKX1mdW5jdGlvbiBUUHQodCxlLG4pe3ZhciBpPW4udixyPW4udztlLmhhc0VkZ2UoaSxyKXx8KGk9bi53LHI9bi52KTt2YXIgbz10Lm5vZGUoaSksYT10Lm5vZGUocikscz1vLGw9ITE7by5saW0+YS5saW0mJihzPWEsbD0hMCk7dmFyIGM9SUx0LmZpbHRlcihlLmVkZ2VzKCksKGZ1bmN0aW9uKGUpe3JldHVybiBsPT09Q1B0KDAsdC5ub2RlKGUudikscykmJmwhPT1DUHQoMCx0Lm5vZGUoZS53KSxzKX0pKTtyZXR1cm4gSUx0Lm1pbkJ5KGMsKGZ1bmN0aW9uKHQpe3JldHVybiBmUHQoZSx0KX0pKX1mdW5jdGlvbiBBUHQodCxlLG4saSl7dC5yZW1vdmVFZGdlKG4udixuLncpLHQuc2V0RWRnZShpLnYsaS53LHt9KSxTUHQodCkseFB0KHQsZSksKGZ1bmN0aW9uIHIodCxlKXt2YXIgbj1JTHQuZmluZCh0Lm5vZGVzKCksKGZ1bmN0aW9uKHQpe3JldHVybiFlLm5vZGUodCkucGFyZW50fSkpLGk9Z1B0KHQsbik7aT1pLnNsaWNlKDEpLElMdC5mb3JFYWNoKGksKGZ1bmN0aW9uKG4pe3ZhciBpPXQubm9kZShuKS5wYXJlbnQscj1lLmVkZ2UobixpKSxvPSExO3J8fChyPWUuZWRnZShpLG4pLG89ITApLGUubm9kZShuKS5yYW5rPWUubm9kZShpKS5yYW5rKyhvP3IubWlubGVuOi1yLm1pbmxlbil9KSl9KSh0LGUpfWZ1bmN0aW9uIENQdCh0LGUsbil7cmV0dXJuIG4ubG93PD1lLmxpbSYmZS5saW08PW4ubGltfWJQdC5pbml0TG93TGltVmFsdWVzPVNQdCxiUHQuaW5pdEN1dFZhbHVlcz14UHQsYlB0LmNhbGNDdXRWYWx1ZT13UHQsYlB0LmxlYXZlRWRnZT1FUHQsYlB0LmVudGVyRWRnZT1UUHQsYlB0LmV4Y2hhbmdlRWRnZXM9QVB0O3ZhciBrUHQ9aVB0LExQdD1rUHQ7ZnVuY3Rpb24gUFB0KHQpe3ZQdCh0KX12YXIgSVB0PWZ1bmN0aW9uIE5QdCh0KXt2YXIgZT1qTHQuYWRkRHVtbXlOb2RlKHQsInJvb3QiLHt9LCJfcm9vdCIpLG49KGZ1bmN0aW9uIGkodCl7dmFyIGU9e307ZnVuY3Rpb24gbihpLHIpe3ZhciBvPXQuY2hpbGRyZW4oaSk7byYmby5sZW5ndGgmJklMdC5mb3JFYWNoKG8sKGZ1bmN0aW9uKHQpe24odCxyKzEpfSkpLGVbaV09cn1yZXR1cm4gSUx0LmZvckVhY2godC5jaGlsZHJlbigpLChmdW5jdGlvbih0KXtuKHQsMSl9KSksZX0pKHQpLHI9SUx0Lm1heChJTHQudmFsdWVzKG4pKS0xLG89MipyKzE7dC5ncmFwaCgpLm5lc3RpbmdSb290PWUsSUx0LmZvckVhY2godC5lZGdlcygpLChmdW5jdGlvbihlKXt0LmVkZ2UoZSkubWlubGVuKj1vfSkpO3ZhciBhPShmdW5jdGlvbiBzKHQpe3JldHVybiBJTHQucmVkdWNlKHQuZWRnZXMoKSwoZnVuY3Rpb24oZSxuKXtyZXR1cm4gZSt0LmVkZ2Uobikud2VpZ2h0fSksMCl9KSh0KSsxO0lMdC5mb3JFYWNoKHQuY2hpbGRyZW4oKSwoZnVuY3Rpb24oaSl7T1B0KHQsZSxvLGEscixuLGkpfSkpLHQuZ3JhcGgoKS5ub2RlUmFua0ZhY3Rvcj1vfTtmdW5jdGlvbiBPUHQodCxlLG4saSxyLG8sYSl7dmFyIHM9dC5jaGlsZHJlbihhKTtpZihzLmxlbmd0aCl7dmFyIGw9akx0LmFkZEJvcmRlck5vZGUodCwiX2J0IiksYz1qTHQuYWRkQm9yZGVyTm9kZSh0LCJfYmIiKSx1PXQubm9kZShhKTt0LnNldFBhcmVudChsLGEpLHUuYm9yZGVyVG9wPWwsdC5zZXRQYXJlbnQoYyxhKSx1LmJvcmRlckJvdHRvbT1jLElMdC5mb3JFYWNoKHMsKGZ1bmN0aW9uKHMpe09QdCh0LGUsbixpLHIsbyxzKTt2YXIgdT10Lm5vZGUocyksaD11LmJvcmRlclRvcD91LmJvcmRlclRvcDpzLGQ9dS5ib3JkZXJCb3R0b20/dS5ib3JkZXJCb3R0b206cyxwPXUuYm9yZGVyVG9wP2k6MippLGY9aCE9PWQ/MTpyLW9bYV0rMTt0LnNldEVkZ2UobCxoLHt3ZWlnaHQ6cCxtaW5sZW46ZixuZXN0aW5nRWRnZTohMH0pLHQuc2V0RWRnZShkLGMse3dlaWdodDpwLG1pbmxlbjpmLG5lc3RpbmdFZGdlOiEwfSl9KSksdC5wYXJlbnQoYSl8fHQuc2V0RWRnZShlLGwse3dlaWdodDowLG1pbmxlbjpyK29bYV19KX1lbHNlIGEhPT1lJiZ0LnNldEVkZ2UoZSxhLHt3ZWlnaHQ6MCxtaW5sZW46bn0pfWZ1bmN0aW9uIFJQdCh0LGUsbixpLHIsbyl7dmFyIGE9cltlXVtvLTFdLHM9akx0LmFkZER1bW15Tm9kZSh0LCJib3JkZXIiLHt3aWR0aDowLGhlaWdodDowLHJhbms6byxib3JkZXJUeXBlOmV9LG4pO3JbZV1bb109cyx0LnNldFBhcmVudChzLGkpLGEmJnQuc2V0RWRnZShhLHMse3dlaWdodDoxfSl9ZnVuY3Rpb24gelB0KHQpe0lMdC5mb3JFYWNoKHQubm9kZXMoKSwoZnVuY3Rpb24oZSl7RFB0KHQubm9kZShlKSl9KSksSUx0LmZvckVhY2godC5lZGdlcygpLChmdW5jdGlvbihlKXtEUHQodC5lZGdlKGUpKX0pKX1mdW5jdGlvbiBEUHQodCl7dmFyIGU9dC53aWR0aDt0LndpZHRoPXQuaGVpZ2h0LHQuaGVpZ2h0PWV9ZnVuY3Rpb24gQlB0KHQpe3QueT0tdC55fWZ1bmN0aW9uIEhQdCh0KXt2YXIgZT10Lng7dC54PXQueSx0Lnk9ZX12YXIgRlB0PWZ1bmN0aW9uIFZQdCh0LGUpe2Zvcih2YXIgbj0wLGk9MTtpPGUubGVuZ3RoOysraSluKz1qUHQodCxlW2ktMV0sZVtpXSk7cmV0dXJuIG59O2Z1bmN0aW9uIGpQdCh0LGUsbil7Zm9yKHZhciBpPUlMdC56aXBPYmplY3QobixJTHQubWFwKG4sKGZ1bmN0aW9uKHQsZSl7cmV0dXJuIGV9KSkpLHI9SUx0LmZsYXR0ZW4oSUx0Lm1hcChlLChmdW5jdGlvbihlKXtyZXR1cm4gSUx0LnNvcnRCeShJTHQubWFwKHQub3V0RWRnZXMoZSksKGZ1bmN0aW9uKGUpe3JldHVybntwb3M6aVtlLnddLHdlaWdodDp0LmVkZ2UoZSkud2VpZ2h0fX0pKSwicG9zIil9KSksITApLG89MTtvPG4ubGVuZ3RoOylvPDw9MTt2YXIgYT0yKm8tMTtvLT0xO3ZhciBzPUlMdC5tYXAobmV3IEFycmF5KGEpLChmdW5jdGlvbigpe3JldHVybiAwfSkpLGw9MDtyZXR1cm4gSUx0LmZvckVhY2goci5mb3JFYWNoKChmdW5jdGlvbih0KXt2YXIgZT10LnBvcytvO3NbZV0rPXQud2VpZ2h0O2Zvcih2YXIgbj0wO2U+MDspZSUyJiYobis9c1tlKzFdKSxzW2U9ZS0xPj4xXSs9dC53ZWlnaHQ7bCs9dC53ZWlnaHQqbn0pKSksbH1mdW5jdGlvbiBVUHQodCxlLG4pe2Zvcih2YXIgaTtlLmxlbmd0aCYmKGk9SUx0Lmxhc3QoZSkpLmk8PW47KWUucG9wKCksdC5wdXNoKGkudnMpLG4rKztyZXR1cm4gbn12YXIgR1B0PWZ1bmN0aW9uIHQoZSxuLGkscil7dmFyIG89ZS5jaGlsZHJlbihuKSxhPWUubm9kZShuKSxzPWE/YS5ib3JkZXJMZWZ0OnZvaWQgMCxsPWE/YS5ib3JkZXJSaWdodDp2b2lkIDAsYz17fTtzJiYobz1JTHQuZmlsdGVyKG8sKGZ1bmN0aW9uKHQpe3JldHVybiB0IT09cyYmdCE9PWx9KSkpO3ZhciB1PShmdW5jdGlvbiBoKHQsZSl7cmV0dXJuIElMdC5tYXAoZSwoZnVuY3Rpb24oZSl7dmFyIG49dC5pbkVkZ2VzKGUpO2lmKG4ubGVuZ3RoKXt2YXIgaT1JTHQucmVkdWNlKG4sKGZ1bmN0aW9uKGUsbil7dmFyIGk9dC5lZGdlKG4pLHI9dC5ub2RlKG4udik7cmV0dXJue3N1bTplLnN1bStpLndlaWdodCpyLm9yZGVyLHdlaWdodDplLndlaWdodCtpLndlaWdodH19KSx7c3VtOjAsd2VpZ2h0OjB9KTtyZXR1cm57djplLGJhcnljZW50ZXI6aS5zdW0vaS53ZWlnaHQsd2VpZ2h0Omkud2VpZ2h0fX1yZXR1cm57djplfX0pKX0pKGUsbyk7SUx0LmZvckVhY2godSwoZnVuY3Rpb24obil7aWYoZS5jaGlsZHJlbihuLnYpLmxlbmd0aCl7dmFyIG89dChlLG4udixpLHIpO2Nbbi52XT1vLElMdC5oYXMobywiYmFyeWNlbnRlciIpJiYoZnVuY3Rpb24gYSh0LGUpe0lMdC5pc1VuZGVmaW5lZCh0LmJhcnljZW50ZXIpPyh0LmJhcnljZW50ZXI9ZS5iYXJ5Y2VudGVyLHQud2VpZ2h0PWUud2VpZ2h0KToodC5iYXJ5Y2VudGVyPSh0LmJhcnljZW50ZXIqdC53ZWlnaHQrZS5iYXJ5Y2VudGVyKmUud2VpZ2h0KS8odC53ZWlnaHQrZS53ZWlnaHQpLHQud2VpZ2h0Kz1lLndlaWdodCl9KShuLG8pfX0pKTt2YXIgZD0oZnVuY3Rpb24gcCh0LGUpe3ZhciBuPXt9O3JldHVybiBJTHQuZm9yRWFjaCh0LChmdW5jdGlvbih0LGUpe3ZhciBpPW5bdC52XT17aW5kZWdyZWU6MCxpbjpbXSxvdXQ6W10sdnM6W3Qudl0saTplfTtJTHQuaXNVbmRlZmluZWQodC5iYXJ5Y2VudGVyKXx8KGkuYmFyeWNlbnRlcj10LmJhcnljZW50ZXIsaS53ZWlnaHQ9dC53ZWlnaHQpfSkpLElMdC5mb3JFYWNoKGUuZWRnZXMoKSwoZnVuY3Rpb24odCl7dmFyIGU9blt0LnZdLGk9blt0LnddO0lMdC5pc1VuZGVmaW5lZChlKXx8SUx0LmlzVW5kZWZpbmVkKGkpfHwoaS5pbmRlZ3JlZSsrLGUub3V0LnB1c2goblt0LnddKSl9KSksKGZ1bmN0aW9uIGkodCl7dmFyIGU9W107ZnVuY3Rpb24gbih0KXtyZXR1cm4gZnVuY3Rpb24oZSl7ZS5tZXJnZWR8fChJTHQuaXNVbmRlZmluZWQoZS5iYXJ5Y2VudGVyKXx8SUx0LmlzVW5kZWZpbmVkKHQuYmFyeWNlbnRlcil8fGUuYmFyeWNlbnRlcj49dC5iYXJ5Y2VudGVyKSYmKGZ1bmN0aW9uIG4odCxlKXt2YXIgbj0wLGk9MDt0LndlaWdodCYmKG4rPXQuYmFyeWNlbnRlcip0LndlaWdodCxpKz10LndlaWdodCksZS53ZWlnaHQmJihuKz1lLmJhcnljZW50ZXIqZS53ZWlnaHQsaSs9ZS53ZWlnaHQpLHQudnM9ZS52cy5jb25jYXQodC52cyksdC5iYXJ5Y2VudGVyPW4vaSx0LndlaWdodD1pLHQuaT1NYXRoLm1pbihlLmksdC5pKSxlLm1lcmdlZD0hMH0pKHQsZSl9fWZ1bmN0aW9uIGkoZSl7cmV0dXJuIGZ1bmN0aW9uKG4pe24uaW4ucHVzaChlKSwwPT0tLW4uaW5kZWdyZWUmJnQucHVzaChuKX19Zm9yKDt0Lmxlbmd0aDspe3ZhciByPXQucG9wKCk7ZS5wdXNoKHIpLElMdC5mb3JFYWNoKHIuaW4ucmV2ZXJzZSgpLG4ocikpLElMdC5mb3JFYWNoKHIub3V0LGkocikpfXJldHVybiBJTHQubWFwKElMdC5maWx0ZXIoZSwoZnVuY3Rpb24odCl7cmV0dXJuIXQubWVyZ2VkfSkpLChmdW5jdGlvbih0KXtyZXR1cm4gSUx0LnBpY2sodCxbInZzIiwiaSIsImJhcnljZW50ZXIiLCJ3ZWlnaHQiXSl9KSl9KShJTHQuZmlsdGVyKG4sKGZ1bmN0aW9uKHQpe3JldHVybiF0LmluZGVncmVlfSkpKX0pKHUsaSk7IShmdW5jdGlvbiBmKHQsZSl7SUx0LmZvckVhY2godCwoZnVuY3Rpb24odCl7dC52cz1JTHQuZmxhdHRlbih0LnZzLm1hcCgoZnVuY3Rpb24odCl7cmV0dXJuIGVbdF0/ZVt0XS52czp0fSkpLCEwKX0pKX0pKGQsYyk7dmFyIG09KGZ1bmN0aW9uIGcodCxlKXt2YXIgbj1qTHQucGFydGl0aW9uKHQsKGZ1bmN0aW9uKHQpe3JldHVybiBJTHQuaGFzKHQsImJhcnljZW50ZXIiKX0pKSxpPW4ubGhzLHI9SUx0LnNvcnRCeShuLnJocywoZnVuY3Rpb24odCl7cmV0dXJuLXQuaX0pKSxvPVtdLGE9MCxzPTAsbD0wO2kuc29ydCgoZnVuY3Rpb24gYyh0KXtyZXR1cm4gZnVuY3Rpb24oZSxuKXtyZXR1cm4gZS5iYXJ5Y2VudGVyPG4uYmFyeWNlbnRlcj8tMTplLmJhcnljZW50ZXI+bi5iYXJ5Y2VudGVyPzE6dD9uLmktZS5pOmUuaS1uLml9fSkoISFlKSksbD1VUHQobyxyLGwpLElMdC5mb3JFYWNoKGksKGZ1bmN0aW9uKHQpe2wrPXQudnMubGVuZ3RoLG8ucHVzaCh0LnZzKSxhKz10LmJhcnljZW50ZXIqdC53ZWlnaHQscys9dC53ZWlnaHQsbD1VUHQobyxyLGwpfSkpO3ZhciB1PXt2czpJTHQuZmxhdHRlbihvLCEwKX07cmV0dXJuIHMmJih1LmJhcnljZW50ZXI9YS9zLHUud2VpZ2h0PXMpLHV9KShkLHIpO2lmKHMmJihtLnZzPUlMdC5mbGF0dGVuKFtzLG0udnMsbF0sITApLGUucHJlZGVjZXNzb3JzKHMpLmxlbmd0aCkpe3ZhciBfPWUubm9kZShlLnByZWRlY2Vzc29ycyhzKVswXSkseT1lLm5vZGUoZS5wcmVkZWNlc3NvcnMobClbMF0pO0lMdC5oYXMobSwiYmFyeWNlbnRlciIpfHwobS5iYXJ5Y2VudGVyPTAsbS53ZWlnaHQ9MCksbS5iYXJ5Y2VudGVyPShtLmJhcnljZW50ZXIqbS53ZWlnaHQrXy5vcmRlcit5Lm9yZGVyKS8obS53ZWlnaHQrMiksbS53ZWlnaHQrPTJ9cmV0dXJuIG19LFdQdD12TXQuR3JhcGgscVB0PXZNdC5HcmFwaDtmdW5jdGlvbiBZUHQodCxlLG4pe3JldHVybiBJTHQubWFwKGUsKGZ1bmN0aW9uKGUpe3JldHVybihmdW5jdGlvbiBpKHQsZSxuKXt2YXIgaT0oZnVuY3Rpb24gcih0KXtmb3IodmFyIGU7dC5oYXNOb2RlKGU9SUx0LnVuaXF1ZUlkKCJfcm9vdCIpKTspO3JldHVybiBlfSkodCksbz1uZXcgV1B0KHtjb21wb3VuZDohMH0pLnNldEdyYXBoKHtyb290Oml9KS5zZXREZWZhdWx0Tm9kZUxhYmVsKChmdW5jdGlvbihlKXtyZXR1cm4gdC5ub2RlKGUpfSkpO3JldHVybiBJTHQuZm9yRWFjaCh0Lm5vZGVzKCksKGZ1bmN0aW9uKHIpe3ZhciBhPXQubm9kZShyKSxzPXQucGFyZW50KHIpOyhhLnJhbms9PT1lfHxhLm1pblJhbms8PWUmJmU8PWEubWF4UmFuaykmJihvLnNldE5vZGUociksby5zZXRQYXJlbnQocixzfHxpKSxJTHQuZm9yRWFjaCh0W25dKHIpLChmdW5jdGlvbihlKXt2YXIgbj1lLnY9PT1yP2UudzplLnYsaT1vLmVkZ2UobixyKSxhPUlMdC5pc1VuZGVmaW5lZChpKT8wOmkud2VpZ2h0O28uc2V0RWRnZShuLHIse3dlaWdodDp0LmVkZ2UoZSkud2VpZ2h0K2F9KX0pKSxJTHQuaGFzKGEsIm1pblJhbmsiKSYmby5zZXROb2RlKHIse2JvcmRlckxlZnQ6YS5ib3JkZXJMZWZ0W2VdLGJvcmRlclJpZ2h0OmEuYm9yZGVyUmlnaHRbZV19KSl9KSksb30pKHQsZSxuKX0pKX1mdW5jdGlvbiBYUHQodCxlKXt2YXIgbj1uZXcgcVB0O0lMdC5mb3JFYWNoKHQsKGZ1bmN0aW9uKHQpe3ZhciBpPXQuZ3JhcGgoKS5yb290LHI9R1B0KHQsaSxuLGUpO0lMdC5mb3JFYWNoKHIudnMsKGZ1bmN0aW9uKGUsbil7dC5ub2RlKGUpLm9yZGVyPW59KSksKGZ1bmN0aW9uIG8odCxlLG4pe3ZhciBpLHI9e307SUx0LmZvckVhY2gobiwoZnVuY3Rpb24obil7Zm9yKHZhciBvLGEscz10LnBhcmVudChuKTtzOyl7aWYoKG89dC5wYXJlbnQocykpPyhhPXJbb10scltvXT1zKTooYT1pLGk9cyksYSYmYSE9PXMpcmV0dXJuIHZvaWQgZS5zZXRFZGdlKGEscyk7cz1vfX0pKX0pKHQsbixyLnZzKX0pKX1mdW5jdGlvbiAkUHQodCxlKXtJTHQuZm9yRWFjaChlLChmdW5jdGlvbihlKXtJTHQuZm9yRWFjaChlLChmdW5jdGlvbihlLG4pe3Qubm9kZShlKS5vcmRlcj1ufSkpfSkpfXZhciBLUHQ9dk10LkdyYXBoO2Z1bmN0aW9uIFpQdCh0LGUsbil7aWYoZT5uKXt2YXIgaT1lO2U9bixuPWl9dmFyIHI9dFtlXTtyfHwodFtlXT1yPXt9KSxyW25dPSEwfWZ1bmN0aW9uIEpQdCh0LGUsbil7aWYoZT5uKXt2YXIgaT1lO2U9bixuPWl9cmV0dXJuIElMdC5oYXModFtlXSxuKX12YXIgUVB0PWpMdC5ub3JtYWxpemVSYW5rcyx0SXQ9akx0LnJlbW92ZUVtcHR5UmFua3MsZUl0PWpMdCxuSXQ9dk10LkdyYXBoLGlJdD1bIm5vZGVzZXAiLCJlZGdlc2VwIiwicmFua3NlcCIsIm1hcmdpbngiLCJtYXJnaW55Il0sckl0PXtyYW5rc2VwOjUwLGVkZ2VzZXA6MjAsbm9kZXNlcDo1MCxyYW5rZGlyOiJ0YiJ9LG9JdD1bImFjeWNsaWNlciIsInJhbmtlciIsInJhbmtkaXIiLCJhbGlnbiJdLGFJdD1bIndpZHRoIiwiaGVpZ2h0Il0sc0l0PXt3aWR0aDowLGhlaWdodDowfSxsSXQ9WyJtaW5sZW4iLCJ3ZWlnaHQiLCJ3aWR0aCIsImhlaWdodCIsImxhYmVsb2Zmc2V0Il0sY0l0PXttaW5sZW46MSx3ZWlnaHQ6MSx3aWR0aDowLGhlaWdodDowLGxhYmVsb2Zmc2V0OjEwLGxhYmVscG9zOiJyIn0sdUl0PVsibGFiZWxwb3MiXTtmdW5jdGlvbiBoSXQodCxlKXtyZXR1cm4gSUx0Lm1hcFZhbHVlcyhJTHQucGljayh0LGUpLE51bWJlcil9ZnVuY3Rpb24gZEl0KHQpe3ZhciBlPXt9O3JldHVybiBJTHQuZm9yRWFjaCh0LChmdW5jdGlvbih0LG4pe2Vbbi50b0xvd2VyQ2FzZSgpXT10fSkpLGV9dmFyIHBJdCxmSXQsbUl0PXZNdC5HcmFwaCxnSXQ9e2dyYXBobGliOnZNdCxsYXlvdXQ6ZnVuY3Rpb24gX0l0KHQsZSl7dmFyIG49ZSYmZS5kZWJ1Z1RpbWluZz9lSXQudGltZTplSXQubm90aW1lO24oImxheW91dCIsKGZ1bmN0aW9uKCl7dmFyIGU9bigiICBidWlsZExheW91dEdyYXBoIiwoZnVuY3Rpb24oKXtyZXR1cm4oZnVuY3Rpb24gZSh0KXt2YXIgZT1uZXcgbkl0KHttdWx0aWdyYXBoOiEwLGNvbXBvdW5kOiEwfSksbj1kSXQodC5ncmFwaCgpKTtyZXR1cm4gZS5zZXRHcmFwaChJTHQubWVyZ2Uoe30sckl0LGhJdChuLGlJdCksSUx0LnBpY2sobixvSXQpKSksSUx0LmZvckVhY2godC5ub2RlcygpLChmdW5jdGlvbihuKXt2YXIgaT1kSXQodC5ub2RlKG4pKTtlLnNldE5vZGUobixJTHQuZGVmYXVsdHMoaEl0KGksYUl0KSxzSXQpKSxlLnNldFBhcmVudChuLHQucGFyZW50KG4pKX0pKSxJTHQuZm9yRWFjaCh0LmVkZ2VzKCksKGZ1bmN0aW9uKG4pe3ZhciBpPWRJdCh0LmVkZ2UobikpO2Uuc2V0RWRnZShuLElMdC5tZXJnZSh7fSxjSXQsaEl0KGksbEl0KSxJTHQucGljayhpLHVJdCkpKX0pKSxlfSkodCl9KSk7bigiICBydW5MYXlvdXQiLChmdW5jdGlvbigpeyEoZnVuY3Rpb24gdChlLG4pe24oIiAgICBtYWtlU3BhY2VGb3JFZGdlTGFiZWxzIiwoZnVuY3Rpb24oKXshKGZ1bmN0aW9uIHQoZSl7dmFyIG49ZS5ncmFwaCgpO24ucmFua3NlcC89MixJTHQuZm9yRWFjaChlLmVkZ2VzKCksKGZ1bmN0aW9uKHQpe3ZhciBpPWUuZWRnZSh0KTtpLm1pbmxlbio9MiwiYyIhPT1pLmxhYmVscG9zLnRvTG93ZXJDYXNlKCkmJigiVEIiPT09bi5yYW5rZGlyfHwiQlQiPT09bi5yYW5rZGlyP2kud2lkdGgrPWkubGFiZWxvZmZzZXQ6aS5oZWlnaHQrPWkubGFiZWxvZmZzZXQpfSkpfSkoZSl9KSksbigiICAgIHJlbW92ZVNlbGZFZGdlcyIsKGZ1bmN0aW9uKCl7IShmdW5jdGlvbiB0KGUpe0lMdC5mb3JFYWNoKGUuZWRnZXMoKSwoZnVuY3Rpb24odCl7aWYodC52PT09dC53KXt2YXIgbj1lLm5vZGUodC52KTtuLnNlbGZFZGdlc3x8KG4uc2VsZkVkZ2VzPVtdKSxuLnNlbGZFZGdlcy5wdXNoKHtlOnQsbGFiZWw6ZS5lZGdlKHQpfSksZS5yZW1vdmVFZGdlKHQpfX0pKX0pKGUpfSkpLG4oIiAgICBhY3ljbGljIiwoZnVuY3Rpb24oKXshKGZ1bmN0aW9uIHQoZSl7dmFyIG49ImdyZWVkeSI9PT1lLmdyYXBoKCkuYWN5Y2xpY2VyPyhmdW5jdGlvbiByKHQsZSl7aWYodC5ub2RlQ291bnQoKTw9MSlyZXR1cm5bXTt2YXIgbj0oZnVuY3Rpb24gaSh0LGUpe3ZhciBuPW5ldyBETHQsaT0wLHI9MDtJTHQuZm9yRWFjaCh0Lm5vZGVzKCksKGZ1bmN0aW9uKHQpe24uc2V0Tm9kZSh0LHt2OnQsaW46MCxvdXQ6MH0pfSkpLElMdC5mb3JFYWNoKHQuZWRnZXMoKSwoZnVuY3Rpb24odCl7dmFyIG89bi5lZGdlKHQudix0LncpfHwwLGE9ZSh0KTtuLnNldEVkZ2UodC52LHQudyxvK2EpLHI9TWF0aC5tYXgocixuLm5vZGUodC52KS5vdXQrPWEpLGk9TWF0aC5tYXgoaSxuLm5vZGUodC53KS5pbis9YSl9KSk7dmFyIG89SUx0LnJhbmdlKHIraSszKS5tYXAoKGZ1bmN0aW9uKCl7cmV0dXJuIG5ldyBOTHR9KSksYT1pKzE7cmV0dXJuIElMdC5mb3JFYWNoKG4ubm9kZXMoKSwoZnVuY3Rpb24odCl7Rkx0KG8sYSxuLm5vZGUodCkpfSkpLHtncmFwaDpuLGJ1Y2tldHM6byx6ZXJvSWR4OmF9fSkodCxlfHxCTHQpLHI9KGZ1bmN0aW9uIG8odCxlLG4pe2Zvcih2YXIgaSxyPVtdLG89ZVtlLmxlbmd0aC0xXSxhPWVbMF07dC5ub2RlQ291bnQoKTspe2Zvcig7aT1hLmRlcXVldWUoKTspSEx0KHQsZSxuLGkpO2Zvcig7aT1vLmRlcXVldWUoKTspSEx0KHQsZSxuLGkpO2lmKHQubm9kZUNvdW50KCkpZm9yKHZhciBzPWUubGVuZ3RoLTI7cz4wOy0tcylpZihpPWVbc10uZGVxdWV1ZSgpKXtyPXIuY29uY2F0KEhMdCh0LGUsbixpLCEwKSk7YnJlYWt9fXJldHVybiByfSkobi5ncmFwaCxuLmJ1Y2tldHMsbi56ZXJvSWR4KTtyZXR1cm4gSUx0LmZsYXR0ZW4oSUx0Lm1hcChyLChmdW5jdGlvbihlKXtyZXR1cm4gdC5vdXRFZGdlcyhlLnYsZS53KX0pKSwhMCl9KShlLChmdW5jdGlvbiBpKHQpe3JldHVybiBmdW5jdGlvbihlKXtyZXR1cm4gdC5lZGdlKGUpLndlaWdodH19KShlKSk6KGZ1bmN0aW9uIG8odCl7dmFyIGU9W10sbj17fSxpPXt9O3JldHVybiBJTHQuZm9yRWFjaCh0Lm5vZGVzKCksKGZ1bmN0aW9uIHIobyl7SUx0LmhhcyhpLG8pfHwoaVtvXT0hMCxuW29dPSEwLElMdC5mb3JFYWNoKHQub3V0RWRnZXMobyksKGZ1bmN0aW9uKHQpe0lMdC5oYXMobix0LncpP2UucHVzaCh0KTpyKHQudyl9KSksZGVsZXRlIG5bb10pfSkpLGV9KShlKTtJTHQuZm9yRWFjaChuLChmdW5jdGlvbih0KXt2YXIgbj1lLmVkZ2UodCk7ZS5yZW1vdmVFZGdlKHQpLG4uZm9yd2FyZE5hbWU9dC5uYW1lLG4ucmV2ZXJzZWQ9ITAsZS5zZXRFZGdlKHQudyx0LnYsbixJTHQudW5pcXVlSWQoInJldiIpKX0pKX0pKGUpfSkpLG4oIiAgICBuZXN0aW5nR3JhcGgucnVuIiwoZnVuY3Rpb24oKXtJUHQoZSl9KSksbigiICAgIHJhbmsiLChmdW5jdGlvbigpeyEoZnVuY3Rpb24gdChlKXtzd2l0Y2goZS5ncmFwaCgpLnJhbmtlcil7Y2FzZSJuZXR3b3JrLXNpbXBsZXgiOlBQdChlKTticmVhaztjYXNlInRpZ2h0LXRyZWUiOiEoZnVuY3Rpb24gbih0KXtrUHQodCksY1B0KHQpfSkoZSk7YnJlYWs7Y2FzZSJsb25nZXN0LXBhdGgiOkxQdChlKTticmVhaztkZWZhdWx0OlBQdChlKX19KShlSXQuYXNOb25Db21wb3VuZEdyYXBoKGUpKX0pKSxuKCIgICAgaW5qZWN0RWRnZUxhYmVsUHJveGllcyIsKGZ1bmN0aW9uKCl7IShmdW5jdGlvbiB0KGUpe0lMdC5mb3JFYWNoKGUuZWRnZXMoKSwoZnVuY3Rpb24odCl7dmFyIG49ZS5lZGdlKHQpO2lmKG4ud2lkdGgmJm4uaGVpZ2h0KXt2YXIgaT1lLm5vZGUodC52KSxyPWUubm9kZSh0LncpO2VJdC5hZGREdW1teU5vZGUoZSwiZWRnZS1wcm94eSIse3Jhbms6KHIucmFuay1pLnJhbmspLzIraS5yYW5rLGU6dH0sIl9lcCIpfX0pKX0pKGUpfSkpLG4oIiAgICByZW1vdmVFbXB0eVJhbmtzIiwoZnVuY3Rpb24oKXt0SXQoZSl9KSksbigiICAgIG5lc3RpbmdHcmFwaC5jbGVhbnVwIiwoZnVuY3Rpb24oKXshKGZ1bmN0aW9uIHQoZSl7dmFyIG49ZS5ncmFwaCgpO2UucmVtb3ZlTm9kZShuLm5lc3RpbmdSb290KSxkZWxldGUgbi5uZXN0aW5nUm9vdCxJTHQuZm9yRWFjaChlLmVkZ2VzKCksKGZ1bmN0aW9uKHQpe2UuZWRnZSh0KS5uZXN0aW5nRWRnZSYmZS5yZW1vdmVFZGdlKHQpfSkpfSkoZSl9KSksbigiICAgIG5vcm1hbGl6ZVJhbmtzIiwoZnVuY3Rpb24oKXtRUHQoZSl9KSksbigiICAgIGFzc2lnblJhbmtNaW5NYXgiLChmdW5jdGlvbigpeyEoZnVuY3Rpb24gdChlKXt2YXIgbj0wO0lMdC5mb3JFYWNoKGUubm9kZXMoKSwoZnVuY3Rpb24odCl7dmFyIGk9ZS5ub2RlKHQpO2kuYm9yZGVyVG9wJiYoaS5taW5SYW5rPWUubm9kZShpLmJvcmRlclRvcCkucmFuayxpLm1heFJhbms9ZS5ub2RlKGkuYm9yZGVyQm90dG9tKS5yYW5rLG49SUx0Lm1heChuLGkubWF4UmFuaykpfSkpLGUuZ3JhcGgoKS5tYXhSYW5rPW59KShlKX0pKSxuKCIgICAgcmVtb3ZlRWRnZUxhYmVsUHJveGllcyIsKGZ1bmN0aW9uKCl7IShmdW5jdGlvbiB0KGUpe0lMdC5mb3JFYWNoKGUubm9kZXMoKSwoZnVuY3Rpb24odCl7dmFyIG49ZS5ub2RlKHQpOyJlZGdlLXByb3h5Ij09PW4uZHVtbXkmJihlLmVkZ2Uobi5lKS5sYWJlbFJhbms9bi5yYW5rLGUucmVtb3ZlTm9kZSh0KSl9KSl9KShlKX0pKSxuKCIgICAgbm9ybWFsaXplLnJ1biIsKGZ1bmN0aW9uKCl7IShmdW5jdGlvbiB0KGUpe2UuZ3JhcGgoKS5kdW1teUNoYWlucz1bXSxJTHQuZm9yRWFjaChlLmVkZ2VzKCksKGZ1bmN0aW9uKHQpeyEoZnVuY3Rpb24gbih0LGUpe3ZhciBuLGkscixvPWUudixhPXQubm9kZShvKS5yYW5rLHM9ZS53LGw9dC5ub2RlKHMpLnJhbmssYz1lLm5hbWUsdT10LmVkZ2UoZSksaD11LmxhYmVsUmFuaztpZihsIT09YSsxKXtmb3IodC5yZW1vdmVFZGdlKGUpLHI9MCwrK2E7YTxsOysrciwrK2EpdS5wb2ludHM9W10sbj1qTHQuYWRkRHVtbXlOb2RlKHQsImVkZ2UiLGk9e3dpZHRoOjAsaGVpZ2h0OjAsZWRnZUxhYmVsOnUsZWRnZU9iajplLHJhbms6YX0sIl9kIiksYT09PWgmJihpLndpZHRoPXUud2lkdGgsaS5oZWlnaHQ9dS5oZWlnaHQsaS5kdW1teT0iZWRnZS1sYWJlbCIsaS5sYWJlbHBvcz11LmxhYmVscG9zKSx0LnNldEVkZ2UobyxuLHt3ZWlnaHQ6dS53ZWlnaHR9LGMpLDA9PT1yJiZ0LmdyYXBoKCkuZHVtbXlDaGFpbnMucHVzaChuKSxvPW47dC5zZXRFZGdlKG8scyx7d2VpZ2h0OnUud2VpZ2h0fSxjKX19KShlLHQpfSkpfSkoZSl9KSksbigiICAgIHBhcmVudER1bW15Q2hhaW5zIiwoZnVuY3Rpb24oKXshKGZ1bmN0aW9uIHQoZSl7dmFyIG49KGZ1bmN0aW9uIGkodCl7dmFyIGU9e30sbj0wO3JldHVybiBJTHQuZm9yRWFjaCh0LmNoaWxkcmVuKCksKGZ1bmN0aW9uIGkocil7dmFyIG89bjtJTHQuZm9yRWFjaCh0LmNoaWxkcmVuKHIpLGkpLGVbcl09e2xvdzpvLGxpbTpuKyt9fSkpLGV9KShlKTtJTHQuZm9yRWFjaChlLmdyYXBoKCkuZHVtbXlDaGFpbnMsKGZ1bmN0aW9uKHQpe2Zvcih2YXIgaT1lLm5vZGUodCkscj1pLmVkZ2VPYmosbz0oZnVuY3Rpb24gYSh0LGUsbixpKXt2YXIgcixvLGE9W10scz1bXSxsPU1hdGgubWluKGVbbl0ubG93LGVbaV0ubG93KSxjPU1hdGgubWF4KGVbbl0ubGltLGVbaV0ubGltKTtyPW47ZG97cj10LnBhcmVudChyKSxhLnB1c2gocil9d2hpbGUociYmKGVbcl0ubG93Pmx8fGM+ZVtyXS5saW0pKTtmb3Iobz1yLHI9aTsocj10LnBhcmVudChyKSkhPT1vOylzLnB1c2gocik7cmV0dXJue3BhdGg6YS5jb25jYXQocy5yZXZlcnNlKCkpLGxjYTpvfX0pKGUsbixyLnYsci53KSxzPW8ucGF0aCxsPW8ubGNhLGM9MCx1PXNbY10saD0hMDt0IT09ci53Oyl7aWYoaT1lLm5vZGUodCksaCl7Zm9yKDsodT1zW2NdKSE9PWwmJmUubm9kZSh1KS5tYXhSYW5rPGkucmFuazspYysrO3U9PT1sJiYoaD0hMSl9aWYoIWgpe2Zvcig7YzxzLmxlbmd0aC0xJiZlLm5vZGUodT1zW2MrMV0pLm1pblJhbms8PWkucmFuazspYysrO3U9c1tjXX1lLnNldFBhcmVudCh0LHUpLHQ9ZS5zdWNjZXNzb3JzKHQpWzBdfX0pKX0pKGUpfSkpLG4oIiAgICBhZGRCb3JkZXJTZWdtZW50cyIsKGZ1bmN0aW9uKCl7IShmdW5jdGlvbiB0KGUpe0lMdC5mb3JFYWNoKGUuY2hpbGRyZW4oKSwoZnVuY3Rpb24gdChuKXt2YXIgaT1lLmNoaWxkcmVuKG4pLHI9ZS5ub2RlKG4pO2lmKGkubGVuZ3RoJiZJTHQuZm9yRWFjaChpLHQpLElMdC5oYXMociwibWluUmFuayIpKXtyLmJvcmRlckxlZnQ9W10sci5ib3JkZXJSaWdodD1bXTtmb3IodmFyIG89ci5taW5SYW5rLGE9ci5tYXhSYW5rKzE7bzxhOysrbylSUHQoZSwiYm9yZGVyTGVmdCIsIl9ibCIsbixyLG8pLFJQdChlLCJib3JkZXJSaWdodCIsIl9iciIsbixyLG8pfX0pKX0pKGUpfSkpLG4oIiAgICBvcmRlciIsKGZ1bmN0aW9uKCl7IShmdW5jdGlvbiB0KGUpe3ZhciBuPWpMdC5tYXhSYW5rKGUpLGk9WVB0KGUsSUx0LnJhbmdlKDEsbisxKSwiaW5FZGdlcyIpLHI9WVB0KGUsSUx0LnJhbmdlKG4tMSwtMSwtMSksIm91dEVkZ2VzIiksbz0oZnVuY3Rpb24gYSh0KXt2YXIgZT17fSxuPUlMdC5maWx0ZXIodC5ub2RlcygpLChmdW5jdGlvbihlKXtyZXR1cm4hdC5jaGlsZHJlbihlKS5sZW5ndGh9KSksaT1JTHQubWF4KElMdC5tYXAobiwoZnVuY3Rpb24oZSl7cmV0dXJuIHQubm9kZShlKS5yYW5rfSkpKSxyPUlMdC5tYXAoSUx0LnJhbmdlKGkrMSksKGZ1bmN0aW9uKCl7cmV0dXJuW119KSksbz1JTHQuc29ydEJ5KG4sKGZ1bmN0aW9uKGUpe3JldHVybiB0Lm5vZGUoZSkucmFua30pKTtyZXR1cm4gSUx0LmZvckVhY2gobywoZnVuY3Rpb24gbihpKXtpZighSUx0LmhhcyhlLGkpKXtlW2ldPSEwO3ZhciBvPXQubm9kZShpKTtyW28ucmFua10ucHVzaChpKSxJTHQuZm9yRWFjaCh0LnN1Y2Nlc3NvcnMoaSksbil9fSkpLHJ9KShlKTskUHQoZSxvKTtmb3IodmFyIHMsbD1OdW1iZXIuUE9TSVRJVkVfSU5GSU5JVFksYz0wLHU9MDt1PDQ7KytjLCsrdSl7WFB0KGMlMj9pOnIsYyU0Pj0yKSxvPWpMdC5idWlsZExheWVyTWF0cml4KGUpO3ZhciBoPUZQdChlLG8pO2g8bCYmKHU9MCxzPUlMdC5jbG9uZURlZXAobyksbD1oKX0kUHQoZSxzKX0pKGUpfSkpLG4oIiAgICBpbnNlcnRTZWxmRWRnZXMiLChmdW5jdGlvbigpeyEoZnVuY3Rpb24gdChlKXt2YXIgbj1lSXQuYnVpbGRMYXllck1hdHJpeChlKTtJTHQuZm9yRWFjaChuLChmdW5jdGlvbih0KXt2YXIgbj0wO0lMdC5mb3JFYWNoKHQsKGZ1bmN0aW9uKHQsaSl7dmFyIHI9ZS5ub2RlKHQpO3Iub3JkZXI9aStuLElMdC5mb3JFYWNoKHIuc2VsZkVkZ2VzLChmdW5jdGlvbih0KXtlSXQuYWRkRHVtbXlOb2RlKGUsInNlbGZlZGdlIix7d2lkdGg6dC5sYWJlbC53aWR0aCxoZWlnaHQ6dC5sYWJlbC5oZWlnaHQscmFuazpyLnJhbmssb3JkZXI6aSsgKytuLGU6dC5lLGxhYmVsOnQubGFiZWx9LCJfc2UiKX0pKSxkZWxldGUgci5zZWxmRWRnZXN9KSl9KSl9KShlKX0pKSxuKCIgICAgYWRqdXN0Q29vcmRpbmF0ZVN5c3RlbSIsKGZ1bmN0aW9uKCl7IShmdW5jdGlvbiB0KGUpe3ZhciBuPWUuZ3JhcGgoKS5yYW5rZGlyLnRvTG93ZXJDYXNlKCk7ImxyIiE9PW4mJiJybCIhPT1ufHx6UHQoZSl9KShlKX0pKSxuKCIgICAgcG9zaXRpb24iLChmdW5jdGlvbigpeyEoZnVuY3Rpb24gdChlKXsoZnVuY3Rpb24gbih0KXt2YXIgZT1qTHQuYnVpbGRMYXllck1hdHJpeCh0KSxuPXQuZ3JhcGgoKS5yYW5rc2VwLGk9MDtJTHQuZm9yRWFjaChlLChmdW5jdGlvbihlKXt2YXIgcj1JTHQubWF4KElMdC5tYXAoZSwoZnVuY3Rpb24oZSl7cmV0dXJuIHQubm9kZShlKS5oZWlnaHR9KSkpO0lMdC5mb3JFYWNoKGUsKGZ1bmN0aW9uKGUpe3Qubm9kZShlKS55PWkrci8yfSkpLGkrPXIrbn0pKX0pKGU9akx0LmFzTm9uQ29tcG91bmRHcmFwaChlKSksSUx0LmZvckVhY2goKGZ1bmN0aW9uIGkodCl7dmFyIGUsbj1qTHQuYnVpbGRMYXllck1hdHJpeCh0KSxpPUlMdC5tZXJnZSgoZnVuY3Rpb24gcih0LGUpe3ZhciBuPXt9O3JldHVybiBJTHQucmVkdWNlKGUsKGZ1bmN0aW9uIGkoZSxyKXt2YXIgbz0wLGE9MCxzPWUubGVuZ3RoLGw9SUx0Lmxhc3Qocik7cmV0dXJuIElMdC5mb3JFYWNoKHIsKGZ1bmN0aW9uKGUsaSl7dmFyIGM9KGZ1bmN0aW9uIHUodCxlKXtpZih0Lm5vZGUoZSkuZHVtbXkpcmV0dXJuIElMdC5maW5kKHQucHJlZGVjZXNzb3JzKGUpLChmdW5jdGlvbihlKXtyZXR1cm4gdC5ub2RlKGUpLmR1bW15fSkpfSkodCxlKSxoPWM/dC5ub2RlKGMpLm9yZGVyOnM7KGN8fGU9PT1sKSYmKElMdC5mb3JFYWNoKHIuc2xpY2UoYSxpKzEpLChmdW5jdGlvbihlKXtJTHQuZm9yRWFjaCh0LnByZWRlY2Vzc29ycyhlKSwoZnVuY3Rpb24oaSl7dmFyIHI9dC5ub2RlKGkpLGE9ci5vcmRlcjshKGE8b3x8aDxhKXx8ci5kdW1teSYmdC5ub2RlKGUpLmR1bW15fHxaUHQobixpLGUpfSkpfSkpLGE9aSsxLG89aCl9KSkscn0pKSxufSkodCxuKSwoZnVuY3Rpb24gbyh0LGUpe3ZhciBuPXt9O2Z1bmN0aW9uIGkoZSxpLHIsbyxhKXt2YXIgcztJTHQuZm9yRWFjaChJTHQucmFuZ2UoaSxyKSwoZnVuY3Rpb24oaSl7dC5ub2RlKHM9ZVtpXSkuZHVtbXkmJklMdC5mb3JFYWNoKHQucHJlZGVjZXNzb3JzKHMpLChmdW5jdGlvbihlKXt2YXIgaT10Lm5vZGUoZSk7aS5kdW1teSYmKGkub3JkZXI8b3x8aS5vcmRlcj5hKSYmWlB0KG4sZSxzKX0pKX0pKX1yZXR1cm4gSUx0LnJlZHVjZShlLChmdW5jdGlvbiByKGUsbil7dmFyIHIsbz0tMSxhPTA7cmV0dXJuIElMdC5mb3JFYWNoKG4sKGZ1bmN0aW9uKHMsbCl7aWYoImJvcmRlciI9PT10Lm5vZGUocykuZHVtbXkpe3ZhciBjPXQucHJlZGVjZXNzb3JzKHMpO2MubGVuZ3RoJiYocj10Lm5vZGUoY1swXSkub3JkZXIsaShuLGEsbCxvLHIpLGE9bCxvPXIpfWkobixhLG4ubGVuZ3RoLHIsZS5sZW5ndGgpfSkpLG59KSksbn0pKHQsbikpLGE9e307SUx0LmZvckVhY2goWyJ1IiwiZCJdLChmdW5jdGlvbihyKXtlPSJ1Ij09PXI/bjpJTHQudmFsdWVzKG4pLnJldmVyc2UoKSxJTHQuZm9yRWFjaChbImwiLCJyIl0sKGZ1bmN0aW9uKG4peyJyIj09PW4mJihlPUlMdC5tYXAoZSwoZnVuY3Rpb24odCl7cmV0dXJuIElMdC52YWx1ZXModCkucmV2ZXJzZSgpfSkpKTt2YXIgbz0oInUiPT09cj90LnByZWRlY2Vzc29yczp0LnN1Y2Nlc3NvcnMpLmJpbmQodCkscz0oZnVuY3Rpb24gbCh0LGUsbixpKXt2YXIgcj17fSxvPXt9LGE9e307cmV0dXJuIElMdC5mb3JFYWNoKGUsKGZ1bmN0aW9uKHQpe0lMdC5mb3JFYWNoKHQsKGZ1bmN0aW9uKHQsZSl7clt0XT10LG9bdF09dCxhW3RdPWV9KSl9KSksSUx0LmZvckVhY2goZSwoZnVuY3Rpb24odCl7dmFyIGU9LTE7SUx0LmZvckVhY2godCwoZnVuY3Rpb24odCl7dmFyIHM9aSh0KTtpZihzLmxlbmd0aClmb3IodmFyIGw9KChzPUlMdC5zb3J0QnkocywoZnVuY3Rpb24odCl7cmV0dXJuIGFbdF19KSkpLmxlbmd0aC0xKS8yLGM9TWF0aC5mbG9vcihsKSx1PU1hdGguY2VpbChsKTtjPD11OysrYyl7dmFyIGg9c1tjXTtvW3RdPT09dCYmZTxhW2hdJiYhSlB0KG4sdCxoKSYmKG9baF09dCxvW3RdPXJbdF09cltoXSxlPWFbaF0pfX0pKX0pKSx7cm9vdDpyLGFsaWduOm99fSkoMCxlLGksbyksYz0oZnVuY3Rpb24gdSh0LGUsbixpLHIpe3ZhciBvPXt9LGE9KGZ1bmN0aW9uIHModCxlLG4saSl7dmFyIHI9bmV3IEtQdCxvPXQuZ3JhcGgoKSxhPShmdW5jdGlvbiBzKHQsZSxuKXtyZXR1cm4gZnVuY3Rpb24oaSxyLG8pe3ZhciBhLHM9aS5ub2RlKHIpLGw9aS5ub2RlKG8pLGM9MDtpZihjKz1zLndpZHRoLzIsSUx0LmhhcyhzLCJsYWJlbHBvcyIpKXN3aXRjaChzLmxhYmVscG9zLnRvTG93ZXJDYXNlKCkpe2Nhc2UibCI6YT0tcy53aWR0aC8yO2JyZWFrO2Nhc2UiciI6YT1zLndpZHRoLzJ9aWYoYSYmKGMrPW4/YTotYSksYT0wLGMrPShzLmR1bW15P2U6dCkvMixjKz0obC5kdW1teT9lOnQpLzIsYys9bC53aWR0aC8yLElMdC5oYXMobCwibGFiZWxwb3MiKSlzd2l0Y2gobC5sYWJlbHBvcy50b0xvd2VyQ2FzZSgpKXtjYXNlImwiOmE9bC53aWR0aC8yO2JyZWFrO2Nhc2UiciI6YT0tbC53aWR0aC8yfXJldHVybiBhJiYoYys9bj9hOi1hKSxhPTAsY319KShvLm5vZGVzZXAsby5lZGdlc2VwLGkpO3JldHVybiBJTHQuZm9yRWFjaChlLChmdW5jdGlvbihlKXt2YXIgaTtJTHQuZm9yRWFjaChlLChmdW5jdGlvbihlKXt2YXIgbz1uW2VdO2lmKHIuc2V0Tm9kZShvKSxpKXt2YXIgcz1uW2ldLGw9ci5lZGdlKHMsbyk7ci5zZXRFZGdlKHMsbyxNYXRoLm1heChhKHQsZSxpKSxsfHwwKSl9aT1lfSkpfSkpLHJ9KSh0LGUsbixyKSxsPXI/ImJvcmRlckxlZnQiOiJib3JkZXJSaWdodCI7ZnVuY3Rpb24gYyh0LGUpe2Zvcih2YXIgbj1hLm5vZGVzKCksaT1uLnBvcCgpLHI9e307aTspcltpXT90KGkpOihyW2ldPSEwLG4ucHVzaChpKSxuPW4uY29uY2F0KGUoaSkpKSxpPW4ucG9wKCl9cmV0dXJuIGMoKGZ1bmN0aW9uIHUodCl7b1t0XT1hLmluRWRnZXModCkucmVkdWNlKChmdW5jdGlvbih0LGUpe3JldHVybiBNYXRoLm1heCh0LG9bZS52XSthLmVkZ2UoZSkpfSksMCl9KSxhLnByZWRlY2Vzc29ycy5iaW5kKGEpKSxjKChmdW5jdGlvbiBoKGUpe3ZhciBuPWEub3V0RWRnZXMoZSkucmVkdWNlKChmdW5jdGlvbih0LGUpe3JldHVybiBNYXRoLm1pbih0LG9bZS53XS1hLmVkZ2UoZSkpfSksTnVtYmVyLlBPU0lUSVZFX0lORklOSVRZKSxpPXQubm9kZShlKTtuIT09TnVtYmVyLlBPU0lUSVZFX0lORklOSVRZJiZpLmJvcmRlclR5cGUhPT1sJiYob1tlXT1NYXRoLm1heChvW2VdLG4pKX0pLGEuc3VjY2Vzc29ycy5iaW5kKGEpKSxJTHQuZm9yRWFjaChpLChmdW5jdGlvbih0KXtvW3RdPW9bblt0XV19KSksb30pKHQsZSxzLnJvb3Qscy5hbGlnbiwiciI9PT1uKTsiciI9PT1uJiYoYz1JTHQubWFwVmFsdWVzKGMsKGZ1bmN0aW9uKHQpe3JldHVybi10fSkpKSxhW3Irbl09Y30pKX0pKTt2YXIgcz0oZnVuY3Rpb24gbCh0LGUpe3JldHVybiBJTHQubWluQnkoSUx0LnZhbHVlcyhlKSwoZnVuY3Rpb24oZSl7dmFyIG49TnVtYmVyLk5FR0FUSVZFX0lORklOSVRZLGk9TnVtYmVyLlBPU0lUSVZFX0lORklOSVRZO3JldHVybiBJTHQuZm9ySW4oZSwoZnVuY3Rpb24oZSxyKXt2YXIgbz0oZnVuY3Rpb24gYSh0LGUpe3JldHVybiB0Lm5vZGUoZSkud2lkdGh9KSh0LHIpLzI7bj1NYXRoLm1heChlK28sbiksaT1NYXRoLm1pbihlLW8saSl9KSksbi1pfSkpfSkodCxhKTtyZXR1cm4oZnVuY3Rpb24gYyh0LGUpe3ZhciBuPUlMdC52YWx1ZXMoZSksaT1JTHQubWluKG4pLHI9SUx0Lm1heChuKTtJTHQuZm9yRWFjaChbInUiLCJkIl0sKGZ1bmN0aW9uKG4pe0lMdC5mb3JFYWNoKFsibCIsInIiXSwoZnVuY3Rpb24obyl7dmFyIGEscz1uK28sbD10W3NdO2lmKGwhPT1lKXt2YXIgYz1JTHQudmFsdWVzKGwpOyhhPSJsIj09PW8/aS1JTHQubWluKGMpOnItSUx0Lm1heChjKSkmJih0W3NdPUlMdC5tYXBWYWx1ZXMobCwoZnVuY3Rpb24odCl7cmV0dXJuIHQrYX0pKSl9fSkpfSkpfSkoYSxzKSwoZnVuY3Rpb24gdSh0LGUpe3JldHVybiBJTHQubWFwVmFsdWVzKHQudWwsKGZ1bmN0aW9uKG4saSl7aWYoZSlyZXR1cm4gdFtlLnRvTG93ZXJDYXNlKCldW2ldO3ZhciByPUlMdC5zb3J0QnkoSUx0Lm1hcCh0LGkpKTtyZXR1cm4oclsxXStyWzJdKS8yfSkpfSkoYSx0LmdyYXBoKCkuYWxpZ24pfSkoZSksKGZ1bmN0aW9uKHQsbil7ZS5ub2RlKG4pLng9dH0pKX0pKGUpfSkpLG4oIiAgICBwb3NpdGlvblNlbGZFZGdlcyIsKGZ1bmN0aW9uKCl7IShmdW5jdGlvbiB0KGUpe0lMdC5mb3JFYWNoKGUubm9kZXMoKSwoZnVuY3Rpb24odCl7dmFyIG49ZS5ub2RlKHQpO2lmKCJzZWxmZWRnZSI9PT1uLmR1bW15KXt2YXIgaT1lLm5vZGUobi5lLnYpLHI9aS54K2kud2lkdGgvMixvPWkueSxhPW4ueC1yLHM9aS5oZWlnaHQvMjtlLnNldEVkZ2Uobi5lLG4ubGFiZWwpLGUucmVtb3ZlTm9kZSh0KSxuLmxhYmVsLnBvaW50cz1be3g6cisyKmEvMyx5Om8tc30se3g6cis1KmEvNix5Om8tc30se3g6cithLHk6b30se3g6cis1KmEvNix5Om8rc30se3g6cisyKmEvMyx5Om8rc31dLG4ubGFiZWwueD1uLngsbi5sYWJlbC55PW4ueX19KSl9KShlKX0pKSxuKCIgICAgcmVtb3ZlQm9yZGVyTm9kZXMiLChmdW5jdGlvbigpeyEoZnVuY3Rpb24gdChlKXtJTHQuZm9yRWFjaChlLm5vZGVzKCksKGZ1bmN0aW9uKHQpe2lmKGUuY2hpbGRyZW4odCkubGVuZ3RoKXt2YXIgbj1lLm5vZGUodCksaT1lLm5vZGUobi5ib3JkZXJUb3ApLHI9ZS5ub2RlKG4uYm9yZGVyQm90dG9tKSxvPWUubm9kZShJTHQubGFzdChuLmJvcmRlckxlZnQpKSxhPWUubm9kZShJTHQubGFzdChuLmJvcmRlclJpZ2h0KSk7bi53aWR0aD1NYXRoLmFicyhhLngtby54KSxuLmhlaWdodD1NYXRoLmFicyhyLnktaS55KSxuLng9by54K24ud2lkdGgvMixuLnk9aS55K24uaGVpZ2h0LzJ9fSkpLElMdC5mb3JFYWNoKGUubm9kZXMoKSwoZnVuY3Rpb24odCl7ImJvcmRlciI9PT1lLm5vZGUodCkuZHVtbXkmJmUucmVtb3ZlTm9kZSh0KX0pKX0pKGUpfSkpLG4oIiAgICBub3JtYWxpemUudW5kbyIsKGZ1bmN0aW9uKCl7IShmdW5jdGlvbiB0KGUpe0lMdC5mb3JFYWNoKGUuZ3JhcGgoKS5kdW1teUNoYWlucywoZnVuY3Rpb24odCl7dmFyIG4saT1lLm5vZGUodCkscj1pLmVkZ2VMYWJlbDtmb3IoZS5zZXRFZGdlKGkuZWRnZU9iaixyKTtpLmR1bW15OyluPWUuc3VjY2Vzc29ycyh0KVswXSxlLnJlbW92ZU5vZGUodCksci5wb2ludHMucHVzaCh7eDppLngseTppLnl9KSwiZWRnZS1sYWJlbCI9PT1pLmR1bW15JiYoci54PWkueCxyLnk9aS55LHIud2lkdGg9aS53aWR0aCxyLmhlaWdodD1pLmhlaWdodCksaT1lLm5vZGUodD1uKX0pKX0pKGUpfSkpLG4oIiAgICBmaXh1cEVkZ2VMYWJlbENvb3JkcyIsKGZ1bmN0aW9uKCl7IShmdW5jdGlvbiB0KGUpe0lMdC5mb3JFYWNoKGUuZWRnZXMoKSwoZnVuY3Rpb24odCl7dmFyIG49ZS5lZGdlKHQpO2lmKElMdC5oYXMobiwieCIpKXN3aXRjaCgibCIhPT1uLmxhYmVscG9zJiYiciIhPT1uLmxhYmVscG9zfHwobi53aWR0aC09bi5sYWJlbG9mZnNldCksbi5sYWJlbHBvcyl7Y2FzZSJsIjpuLngtPW4ud2lkdGgvMituLmxhYmVsb2Zmc2V0O2JyZWFrO2Nhc2UiciI6bi54Kz1uLndpZHRoLzIrbi5sYWJlbG9mZnNldH19KSl9KShlKX0pKSxuKCIgICAgdW5kb0Nvb3JkaW5hdGVTeXN0ZW0iLChmdW5jdGlvbigpeyEoZnVuY3Rpb24gdChlKXt2YXIgbj1lLmdyYXBoKCkucmFua2Rpci50b0xvd2VyQ2FzZSgpOyJidCIhPT1uJiYicmwiIT09bnx8KGZ1bmN0aW9uIGkodCl7SUx0LmZvckVhY2godC5ub2RlcygpLChmdW5jdGlvbihlKXtCUHQodC5ub2RlKGUpKX0pKSxJTHQuZm9yRWFjaCh0LmVkZ2VzKCksKGZ1bmN0aW9uKGUpe3ZhciBuPXQuZWRnZShlKTtJTHQuZm9yRWFjaChuLnBvaW50cyxCUHQpLElMdC5oYXMobiwieSIpJiZCUHQobil9KSl9KShlKSwibHIiIT09biYmInJsIiE9PW58fCgoZnVuY3Rpb24gcih0KXtJTHQuZm9yRWFjaCh0Lm5vZGVzKCksKGZ1bmN0aW9uKGUpe0hQdCh0Lm5vZGUoZSkpfSkpLElMdC5mb3JFYWNoKHQuZWRnZXMoKSwoZnVuY3Rpb24oZSl7dmFyIG49dC5lZGdlKGUpO0lMdC5mb3JFYWNoKG4ucG9pbnRzLEhQdCksSUx0LmhhcyhuLCJ4IikmJkhQdChuKX0pKX0pKGUpLHpQdChlKSl9KShlKX0pKSxuKCIgICAgdHJhbnNsYXRlR3JhcGgiLChmdW5jdGlvbigpeyEoZnVuY3Rpb24gdChlKXt2YXIgbj1OdW1iZXIuUE9TSVRJVkVfSU5GSU5JVFksaT0wLHI9TnVtYmVyLlBPU0lUSVZFX0lORklOSVRZLG89MCxhPWUuZ3JhcGgoKSxzPWEubWFyZ2lueHx8MCxsPWEubWFyZ2lueXx8MDtmdW5jdGlvbiBjKHQpe3ZhciBlPXQueCxhPXQueSxzPXQud2lkdGgsbD10LmhlaWdodDtuPU1hdGgubWluKG4sZS1zLzIpLGk9TWF0aC5tYXgoaSxlK3MvMikscj1NYXRoLm1pbihyLGEtbC8yKSxvPU1hdGgubWF4KG8sYStsLzIpfUlMdC5mb3JFYWNoKGUubm9kZXMoKSwoZnVuY3Rpb24odCl7YyhlLm5vZGUodCkpfSkpLElMdC5mb3JFYWNoKGUuZWRnZXMoKSwoZnVuY3Rpb24odCl7dmFyIG49ZS5lZGdlKHQpO0lMdC5oYXMobiwieCIpJiZjKG4pfSkpLG4tPXMsci09bCxJTHQuZm9yRWFjaChlLm5vZGVzKCksKGZ1bmN0aW9uKHQpe3ZhciBpPWUubm9kZSh0KTtpLngtPW4saS55LT1yfSkpLElMdC5mb3JFYWNoKGUuZWRnZXMoKSwoZnVuY3Rpb24odCl7dmFyIGk9ZS5lZGdlKHQpO0lMdC5mb3JFYWNoKGkucG9pbnRzLChmdW5jdGlvbih0KXt0LngtPW4sdC55LT1yfSkpLElMdC5oYXMoaSwieCIpJiYoaS54LT1uKSxJTHQuaGFzKGksInkiKSYmKGkueS09cil9KSksYS53aWR0aD1pLW4rcyxhLmhlaWdodD1vLXIrbH0pKGUpfSkpLG4oIiAgICBhc3NpZ25Ob2RlSW50ZXJzZWN0cyIsKGZ1bmN0aW9uKCl7IShmdW5jdGlvbiB0KGUpe0lMdC5mb3JFYWNoKGUuZWRnZXMoKSwoZnVuY3Rpb24odCl7dmFyIG4saSxyPWUuZWRnZSh0KSxvPWUubm9kZSh0LnYpLGE9ZS5ub2RlKHQudyk7ci5wb2ludHM/KG49ci5wb2ludHNbMF0saT1yLnBvaW50c1tyLnBvaW50cy5sZW5ndGgtMV0pOihyLnBvaW50cz1bXSxuPWEsaT1vKSxyLnBvaW50cy51bnNoaWZ0KGVJdC5pbnRlcnNlY3RSZWN0KG8sbikpLHIucG9pbnRzLnB1c2goZUl0LmludGVyc2VjdFJlY3QoYSxpKSl9KSl9KShlKX0pKSxuKCIgICAgcmV2ZXJzZVBvaW50cyIsKGZ1bmN0aW9uKCl7IShmdW5jdGlvbiB0KGUpe0lMdC5mb3JFYWNoKGUuZWRnZXMoKSwoZnVuY3Rpb24odCl7dmFyIG49ZS5lZGdlKHQpO24ucmV2ZXJzZWQmJm4ucG9pbnRzLnJldmVyc2UoKX0pKX0pKGUpfSkpLG4oIiAgICBhY3ljbGljLnVuZG8iLChmdW5jdGlvbigpeyEoZnVuY3Rpb24gdChlKXtJTHQuZm9yRWFjaChlLmVkZ2VzKCksKGZ1bmN0aW9uKHQpe3ZhciBuPWUuZWRnZSh0KTtpZihuLnJldmVyc2VkKXtlLnJlbW92ZUVkZ2UodCk7dmFyIGk9bi5mb3J3YXJkTmFtZTtkZWxldGUgbi5yZXZlcnNlZCxkZWxldGUgbi5mb3J3YXJkTmFtZSxlLnNldEVkZ2UodC53LHQudixuLGkpfX0pKX0pKGUpfSkpfSkoZSxuKX0pKSxuKCIgIHVwZGF0ZUlucHV0R3JhcGgiLChmdW5jdGlvbigpeyEoZnVuY3Rpb24gbih0LGUpe0lMdC5mb3JFYWNoKHQubm9kZXMoKSwoZnVuY3Rpb24obil7dmFyIGk9dC5ub2RlKG4pLHI9ZS5ub2RlKG4pO2kmJihpLng9ci54LGkueT1yLnksZS5jaGlsZHJlbihuKS5sZW5ndGgmJihpLndpZHRoPXIud2lkdGgsaS5oZWlnaHQ9ci5oZWlnaHQpKX0pKSxJTHQuZm9yRWFjaCh0LmVkZ2VzKCksKGZ1bmN0aW9uKG4pe3ZhciBpPXQuZWRnZShuKSxyPWUuZWRnZShuKTtpLnBvaW50cz1yLnBvaW50cyxJTHQuaGFzKHIsIngiKSYmKGkueD1yLngsaS55PXIueSl9KSksdC5ncmFwaCgpLndpZHRoPWUuZ3JhcGgoKS53aWR0aCx0LmdyYXBoKCkuaGVpZ2h0PWUuZ3JhcGgoKS5oZWlnaHR9KSh0LGUpfSkpfSkpfSxkZWJ1Zzp7ZGVidWdPcmRlcmluZzpmdW5jdGlvbiB5SXQodCl7dmFyIGU9akx0LmJ1aWxkTGF5ZXJNYXRyaXgodCksbj1uZXcgbUl0KHtjb21wb3VuZDohMCxtdWx0aWdyYXBoOiEwfSkuc2V0R3JhcGgoe30pO3JldHVybiBJTHQuZm9yRWFjaCh0Lm5vZGVzKCksKGZ1bmN0aW9uKGUpe24uc2V0Tm9kZShlLHtsYWJlbDplfSksbi5zZXRQYXJlbnQoZSwibGF5ZXIiK3Qubm9kZShlKS5yYW5rKX0pKSxJTHQuZm9yRWFjaCh0LmVkZ2VzKCksKGZ1bmN0aW9uKHQpe24uc2V0RWRnZSh0LnYsdC53LHt9LHQubmFtZSl9KSksSUx0LmZvckVhY2goZSwoZnVuY3Rpb24odCxlKXtuLnNldE5vZGUoImxheWVyIitlLHtyYW5rOiJzYW1lIn0pLElMdC5yZWR1Y2UodCwoZnVuY3Rpb24odCxlKXtyZXR1cm4gbi5zZXRFZGdlKHQsZSx7c3R5bGU6ImludmlzIn0pLGV9KSl9KSksbn19LHV0aWw6e3RpbWU6akx0LnRpbWUsbm90aW1lOmpMdC5ub3RpbWV9LHZlcnNpb246IjAuOC41In07IShmdW5jdGlvbih0KXt0LkZFVENIX1BCVFhUX0JZVEVTPSJGRVRDSF9QQlRYVF9CWVRFUyIsdC5GRVRDSF9QQlRYVF9CWVRFU19GUk9NX0ZJTEVTWVNURU09IkZFVENIX1BCVFhUX0JZVEVTX0ZST01fRklMRVNZU1RFTSIsdC5GRVRDSF9QQlRYVF9CWVRFU19GUk9NX1NFUlZFUj0iRkVUQ0hfUEJUWFRfQllURVNfRlJPTV9TRVJWRVIiLHQuUEFSU0VfUEJUWFRfSU5UT19PQkpFQ1Q9IlBBUlNFX1BCVFhUX0lOVE9fT0JKRUNUIix0LkZFVENIX01FVEFEQVRBX1BCVFhUX0JZVEVTPSJGRVRDSF9NRVRBREFUQV9QQlRYVF9CWVRFUyIsdC5QQVJTRV9NRVRBREFUQV9QQlRYVF9JTlRPX09CSkVDVD0iUEFSU0VfTUVUQURBVEFfUEJUWFRfSU5UT19PQkpFQ1QiLHQuTk9STUFMSVpJTkdfTkFNRVM9Ik5PUk1BTElaSU5HX05BTUVTIix0LkJVSUxEX1NMSU1fR1JBUEg9IkJVSUxEX1NMSU1fR1JBUEgiLHQuSElFUkFSQ0hZX0FERF9OT0RFUz0iSElFUkFSQ0hZX0FERF9OT0RFUyIsdC5ISUVSQVJDSFlfREVURUNUX1NFUklFUz0iSElFUkFSQ0hZX0RFVEVDVF9TRVJJRVMiLHQuSElFUkFSQ0hZX0FERF9FREdFUz0iSElFUkFSQ0hZX0FERF9FREdFUyIsdC5ISUVSQVJDSFlfRklORF9TSU1JTEFSX1NVQkdSQVBIUz0iSElFUkFSQ0hZX0ZJTkRfU0lNSUxBUl9TVUJHUkFQSFMiLHQuUkVOREVSX0JVSUxEX0hJRVJBUkNIWT0iUkVOREVSX0JVSUxEX0hJRVJBUkNIWSIsdC5SRU5ERVJfU0NFTkVfTEFZT1VUPSJSRU5ERVJfU0NFTkVfTEFZT1VUIix0LlJFTkRFUl9TQ0VORV9CVUlMRF9TQ0VORT0iUkVOREVSX1NDRU5FX0JVSUxEX1NDRU5FIix0LkdSQVBIX0xPQURfU1VDQ0VFREVEPSJHUkFQSF9MT0FEX1NVQ0NFRURFRCIsdC5HUkFQSF9MT0FEX0ZBSUxFRD0iR1JBUEhfTE9BRF9GQUlMRUQifSkocEl0fHwocEl0PXt9KSksKGZ1bmN0aW9uKHQpe3QuTk9ERV9FWFBBTlNJT05fVE9HR0xFRD0iTk9ERV9FWFBBTlNJT05fVE9HR0xFRCIsdC5OT0RFX1NFQVJDSF9SRVNVTFRfRk9DVVNFRD0iTk9ERV9TRUFSQ0hfUkVTVUxUX0ZPQ1VTRUQiLHQuTk9ERV9BVVhJTElBUllfRVhUUkFDVElPTl9DSEFOR0VEPSJOT0RFX0FVWElMSUFSWV9FWFRSQUNUSU9OX0NIQU5HRUQiLHQuR1JBUEhfVFlQRV9DSEFOR0VEPSJHUkFQSF9UWVBFX0NIQU5HRUQiLHQuVFJBQ0VfSU5QVVRfTU9ERV9UT0dHTEVEPSJUUkFDRV9JTlBVVF9NT0RFX1RPR0dMRUQiLHQuTk9ERV9DT0xPUl9NT0RFX0NIQU5HRUQ9Ik5PREVfQ09MT1JfTU9ERV9DSEFOR0VEIix0LlVQTE9BREVEX0dSQVBIX0ZST01fRklMRVNZU1RFTT0iVVBMT0FERURfR1JBUEhfRlJPTV9GSUxFU1lTVEVNIn0pKGZJdHx8KGZJdD17fSkpO2NvbnN0IHZJdD1PYmplY3QuYXNzaWduKE9iamVjdC5hc3NpZ24oe30scEl0KSxmSXQpO3ZhciBiSXQ7IShmdW5jdGlvbih0KXt0Lk9QX0dSQVBIPSJvcF9ncmFwaCIsdC5DT05DRVBUVUFMX0dSQVBIPSJjb25jZXB0dWFsX2dyYXBoIix0LlBST0ZJTEU9InByb2ZpbGUifSkoYkl0fHwoYkl0PXt9KSk7bGV0IHhJdD17Tm9kZTp7Q09OVEFJTkVSOiJub2RlcyIsR1JPVVA6Im5vZGUiLFNIQVBFOiJub2Rlc2hhcGUiLENPTE9SX1RBUkdFVDoibm9kZWNvbG9ydGFyZ2V0IixMQUJFTDoibm9kZWxhYmVsIixCVVRUT05fQ09OVEFJTkVSOiJidXR0b25jb250YWluZXIiLEJVVFRPTl9DSVJDTEU6ImJ1dHRvbmNpcmNsZSIsRVhQQU5EX0JVVFRPTjoiZXhwYW5kYnV0dG9uIixDT0xMQVBTRV9CVVRUT046ImNvbGxhcHNlYnV0dG9uIn0sRWRnZTp7Q09OVEFJTkVSOiJlZGdlcyIsR1JPVVA6ImVkZ2UiLExJTkU6ImVkZ2VsaW5lIixSRUZFUkVOQ0VfRURHRToicmVmZXJlbmNlZWRnZSIsUkVGX0xJTkU6InJlZmxpbmUiLFNFTEVDVEFCTEU6InNlbGVjdGFibGVlZGdlIixTRUxFQ1RFRDoic2VsZWN0ZWRlZGdlIixTVFJVQ1RVUkFMOiJzdHJ1Y3R1cmFsIn0sQW5ub3RhdGlvbjp7T1VUQk9YOiJvdXQtYW5ub3RhdGlvbnMiLElOQk9YOiJpbi1hbm5vdGF0aW9ucyIsR1JPVVA6ImFubm90YXRpb24iLE5PREU6ImFubm90YXRpb24tbm9kZSIsRURHRToiYW5ub3RhdGlvbi1lZGdlIixDT05UUk9MX0VER0U6ImFubm90YXRpb24tY29udHJvbC1lZGdlIixMQUJFTDoiYW5ub3RhdGlvbi1sYWJlbCIsRUxMSVBTSVM6ImFubm90YXRpb24tZWxsaXBzaXMifSxTY2VuZTp7R1JPVVA6InNjZW5lIixDT1JFOiJjb3JlIixGVU5DVElPTl9MSUJSQVJZOiJmdW5jdGlvbi1saWJyYXJ5IixJTkVYVFJBQ1Q6ImluLWV4dHJhY3QiLE9VVEVYVFJBQ1Q6Im91dC1leHRyYWN0In0sU3Vic2NlbmU6e0dST1VQOiJzdWJzY2VuZSJ9LE9QTk9ERToib3AiLE1FVEFOT0RFOiJtZXRhIixTRVJJRVNOT0RFOiJzZXJpZXMiLEJSSURHRU5PREU6ImJyaWRnZSIsRUxMSVBTSVNOT0RFOiJlbGxpcHNpcyJ9O2NvbnN0IHdJdD0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciO2Z1bmN0aW9uIFNJdCh0LGUsbil7bGV0IGk9dC5ub2RlKCkuY2hpbGROb2Rlcztmb3IobGV0IHQ9MDt0PGkubGVuZ3RoO3QrKyl7bGV0IHI9aVt0XTtpZihyLnRhZ05hbWU9PT1lKWlmKG4gaW5zdGFuY2VvZiBBcnJheSl7bGV0IHQ9ITA7Zm9yKGxldCBlPTA7ZTxuLmxlbmd0aDtlKyspdD10JiZyLmNsYXNzTGlzdC5jb250YWlucyhuW2VdKTtpZih0KXJldHVybiBTdShyKX1lbHNlIGlmKCFufHxyLmNsYXNzTGlzdC5jb250YWlucyhuKSlyZXR1cm4gU3Uocil9cmV0dXJuIFN1KG51bGwpfWZ1bmN0aW9uIE1JdCh0LGUsbixpKXtsZXQgcj1TSXQodCxlLG4pO2lmKCFyLmVtcHR5KCkpcmV0dXJuIHI7bGV0IG89ZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIsZSk7aWYobiBpbnN0YW5jZW9mIEFycmF5KWZvcihsZXQgdD0wO3Q8bi5sZW5ndGg7dCsrKW8uY2xhc3NMaXN0LmFkZChuW3RdKTtlbHNlIG8uY2xhc3NMaXN0LmFkZChuKTtyZXR1cm4gaT90Lm5vZGUoKS5pbnNlcnRCZWZvcmUobyxpKTp0Lm5vZGUoKS5hcHBlbmRDaGlsZChvKSxTdShvKS5kYXR1bSh0LmRhdHVtKCkpfWNsYXNzIEVJdHtjb25zdHJ1Y3Rvcih0KXt0aGlzLnRvdGFsQnl0ZXM9MCx0aGlzLm91dHB1dFNpemU9dH1hZGRFeGVjdXRpb25UaW1lKHQsZSl7dGhpcy5zdGFydFRpbWU9bnVsbCE9dGhpcy5zdGFydFRpbWU/TWF0aC5taW4odGhpcy5zdGFydFRpbWUsdCk6dCx0aGlzLmVuZFRpbWU9bnVsbCE9dGhpcy5lbmRUaW1lP01hdGgubWF4KHRoaXMuZW5kVGltZSxlKTplfWFkZEJ5dGVzQWxsb2NhdGlvbih0KXt0aGlzLnRvdGFsQnl0ZXM9bnVsbCE9dGhpcy50b3RhbEJ5dGVzP01hdGgubWF4KHRoaXMudG90YWxCeXRlcyx0KTp0fWNvbWJpbmUodCl7bnVsbCE9dC50b3RhbEJ5dGVzJiYodGhpcy50b3RhbEJ5dGVzKz10LnRvdGFsQnl0ZXMpLG51bGwhPXQuZ2V0VG90YWxNaWNyb3MoKSYmdGhpcy5hZGRFeGVjdXRpb25UaW1lKHQuc3RhcnRUaW1lLHQuZW5kVGltZSl9Z2V0VG90YWxNaWNyb3MoKXtyZXR1cm4gbnVsbD09dGhpcy5zdGFydFRpbWV8fG51bGw9PXRoaXMuZW5kVGltZT9udWxsOnRoaXMuZW5kVGltZS10aGlzLnN0YXJ0VGltZX19Y29uc3QgVEl0PS43NSxBSXQ9UU0oKS5leHBvbmVudCguMykuZG9tYWluKFsxLDVlNl0pLnJhbmdlKFtUSXQsMTJdKS5jbGFtcCghMCk7ZnVuY3Rpb24gQ0l0KHQpeyEoZnVuY3Rpb24gZSh0KXt0Lmhhc093blByb3BlcnR5KCJ0aW1pbmdJZCIpfSkodCl9ZnVuY3Rpb24ga0l0KHQsZSxuKXtsZXQgaT1EYXRlLm5vdygpLHI9ZSgpO2NvbnN0IG89RGF0ZS5ub3coKS1pO3JldHVybiBjb25zb2xlLmxvZyh0LCI6IixvLCJtcyIpLG4mJkNJdCh7dGltaW5nSWQ6bixldmVudFZhbHVlOm99KSxyfWZ1bmN0aW9uIExJdCh0KXtyZXR1cm57c2V0TWVzc2FnZTpmdW5jdGlvbihlKXt0LnNldCgicHJvZ3Jlc3MiLHt2YWx1ZTp0LnByb2dyZXNzLnZhbHVlLG1zZzplfSl9LHVwZGF0ZVByb2dyZXNzOmZ1bmN0aW9uKGUpe3Quc2V0KCJwcm9ncmVzcyIse3ZhbHVlOnQucHJvZ3Jlc3MudmFsdWUrZSxtc2c6dC5wcm9ncmVzcy5tc2d9KX0scmVwb3J0RXJyb3I6ZnVuY3Rpb24oZSxuKXtjb25zb2xlLmVycm9yKG4uc3RhY2spLHQuc2V0KCJwcm9ncmVzcyIse3ZhbHVlOnQucHJvZ3Jlc3MudmFsdWUsbXNnOmUsZXJyb3I6ITB9KX19fWZ1bmN0aW9uIFBJdCh0LGUsbil7cmV0dXJue3NldE1lc3NhZ2U6ZnVuY3Rpb24oZSl7dC5zZXRNZXNzYWdlKG4rIjogIitlKX0sdXBkYXRlUHJvZ3Jlc3M6ZnVuY3Rpb24obil7dC51cGRhdGVQcm9ncmVzcyhuKmUvMTAwKX0scmVwb3J0RXJyb3I6ZnVuY3Rpb24oZSxpKXt0LnJlcG9ydEVycm9yKG4rIjogIitlLGkpfX19ZnVuY3Rpb24gSUl0KHQsZSxuLGkscil7cmV0dXJuIG5ldyBQcm9taXNlKCgobyxhKT0+e2kuc2V0TWVzc2FnZSh0KSxzZXRUaW1lb3V0KChmdW5jdGlvbigpe3RyeXtsZXQgYT1rSXQodCxuLHIpO2kudXBkYXRlUHJvZ3Jlc3MoZSksbyhhKX1jYXRjaChlKXtpLnJlcG9ydEVycm9yKCJGYWlsZWQgIit0LGUpfX0pLDIwKX0pKX1mdW5jdGlvbiBOSXQodCxlLG4saSxyKXtyZXR1cm4gbmV3IFByb21pc2UoKChvLGEpPT57bGV0IHM9ZnVuY3Rpb24oZSl7aS5yZXBvcnRFcnJvcigiRmFpbGVkICIrdCxlKSxhKGUpfTtpLnNldE1lc3NhZ2UodCksc2V0VGltZW91dCgoZnVuY3Rpb24oKXt0cnl7bGV0IGE9RGF0ZS5ub3coKTtuKCkudGhlbigoZnVuY3Rpb24obil7Y29uc3Qgcz1EYXRlLm5vdygpLWE7Y29uc29sZS5sb2codCwiOiIscywibXMiKSxpLnVwZGF0ZVByb2dyZXNzKGUpLENJdCh7dGltaW5nSWQ6cixldmVudFZhbHVlOnN9KSxvKG4pfSkpLmNhdGNoKHMpfWNhdGNoKHQpe3ModCl9fSksMjApfSkpfWNvbnN0IE9JdD1be3N5bWJvbDoiQiJ9LHtzeW1ib2w6IktCIixudW1Vbml0czoxMDI0fSx7c3ltYm9sOiJNQiIsbnVtVW5pdHM6MTAyNH0se3N5bWJvbDoiR0IiLG51bVVuaXRzOjEwMjR9LHtzeW1ib2w6IlRCIixudW1Vbml0czoxMDI0fSx7c3ltYm9sOiJQQiIsbnVtVW5pdHM6MTAyNH1dLFJJdD1be3N5bWJvbDoiwrVzIn0se3N5bWJvbDoibXMiLG51bVVuaXRzOjFlM30se3N5bWJvbDoicyIsbnVtVW5pdHM6MWUzfSx7c3ltYm9sOiJtaW4iLG51bVVuaXRzOjYwfSx7c3ltYm9sOiJociIsbnVtVW5pdHM6NjB9LHtzeW1ib2w6ImRheXMiLG51bVVuaXRzOjI0fV07ZnVuY3Rpb24gekl0KHQsZSxuPTApe3JldHVybiBuKzE8ZS5sZW5ndGgmJnQ+PWVbbisxXS5udW1Vbml0cz96SXQodC9lW24rMV0ubnVtVW5pdHMsZSxuKzEpOk51bWJlcih0LnRvUHJlY2lzaW9uKDMpKSsiICIrZVtuXS5zeW1ib2x9ZnVuY3Rpb24gREl0KHQpe3JldHVybiEoIXR8fCEodC50b3RhbEJ5dGVzPjB8fHQuZ2V0VG90YWxNaWNyb3MoKT4wfHx0Lm91dHB1dFNpemUpKX1mdW5jdGlvbiBCSXQodCl7aWYodC5sZW5ndGg8MilyZXR1cm4gdDtsZXQgZT0wLG49MCxpPXdlLm1pbih3ZS5tYXAodCwodD0+dC5sZW5ndGgpKSk7Zm9yKDs7KXtlKys7bGV0IHI9d2UubWFwKHQsKHQ9PnQuc3Vic3RyaW5nKDAsZSkpKTtpZighci5ldmVyeSgoKHQsZSk9PjA9PT1lfHx0PT09cltlLTFdKSkpYnJlYWs7aWYoZT49aSlyZXR1cm4gdDtuPWV9cmV0dXJuIHdlLm1hcCh0LCh0PT50LnN1YnN0cmluZyhuKSkpfWNvbnN0IEhJdD1kb2N1bWVudC5jcmVhdGVFbGVtZW50KCJjYW52YXMiKS5nZXRDb250ZXh0KCIyZCIpO2Z1bmN0aW9uIEZJdCh0LGUpe3JldHVybiBISXQuZm9udD1gJHtlfXB4IFJvYm90bywgc2Fucy1zZXJpZmAsSEl0Lm1lYXN1cmVUZXh0KHQpLndpZHRofWNvbnN0IFZJdD0iLyIsakl0PSJfX3Jvb3RfXyIsVUl0PSJfX2Z1bmN0aW9uX2xpYnJhcnlfXyI7dmFyIEdJdCxXSXQscUl0LFlJdDshKGZ1bmN0aW9uKHQpe3RbdC5GVUxMPTBdPSJGVUxMIix0W3QuRU1CRURERUQ9MV09IkVNQkVEREVEIix0W3QuTUVUQT0yXT0iTUVUQSIsdFt0LlNFUklFUz0zXT0iU0VSSUVTIix0W3QuQ09SRT00XT0iQ09SRSIsdFt0LlNIQURPVz01XT0iU0hBRE9XIix0W3QuQlJJREdFPTZdPSJCUklER0UiLHRbdC5FREdFPTddPSJFREdFIn0pKEdJdHx8KEdJdD17fSkpLChmdW5jdGlvbih0KXt0W3QuTUVUQT0wXT0iTUVUQSIsdFt0Lk9QPTFdPSJPUCIsdFt0LlNFUklFUz0yXT0iU0VSSUVTIix0W3QuQlJJREdFPTNdPSJCUklER0UiLHRbdC5FTExJUFNJUz00XT0iRUxMSVBTSVMifSkoV0l0fHwoV0l0PXt9KSksKGZ1bmN0aW9uKHQpe3RbdC5JTkNMVURFPTBdPSJJTkNMVURFIix0W3QuRVhDTFVERT0xXT0iRVhDTFVERSIsdFt0LlVOU1BFQ0lGSUVEPTJdPSJVTlNQRUNJRklFRCJ9KShxSXR8fChxSXQ9e30pKSwoZnVuY3Rpb24odCl7dFt0LkdST1VQPTBdPSJHUk9VUCIsdFt0LlVOR1JPVVA9MV09IlVOR1JPVVAifSkoWUl0fHwoWUl0PXt9KSk7Y2xhc3MgWEl0e2NvbnN0cnVjdG9yKCl7dGhpcy5ub2Rlcz17fSx0aGlzLmVkZ2VzPVtdfX1jbGFzcyAkSXR7Y29uc3RydWN0b3IodCl7dGhpcy50eXBlPVdJdC5FTExJUFNJUyx0aGlzLmlzR3JvdXBOb2RlPSExLHRoaXMuY2FyZGluYWxpdHk9MSx0aGlzLnBhcmVudE5vZGU9bnVsbCx0aGlzLnN0YXRzPW51bGwsdGhpcy5zZXROdW1Nb3JlTm9kZXModCksdGhpcy5pbmNsdWRlPXFJdC5VTlNQRUNJRklFRH1zZXROdW1Nb3JlTm9kZXModCl7dGhpcy5udW1Nb3JlTm9kZXM9dCx0aGlzLm5hbWU9Ii4uLiAiK3QrIiBtb3JlIn19Y2xhc3MgS0l0e2NvbnN0cnVjdG9yKHQpe3RoaXMub3A9dC5vcCx0aGlzLm5hbWU9dC5uYW1lLHRoaXMuZGV2aWNlPXQuZGV2aWNlLHRoaXMuYXR0cj10LmF0dHIsdGhpcy5pbnB1dHM9KGZ1bmN0aW9uIGUodCl7Y29uc3QgZT1bXTtsZXQgbj1udWxsO2ZvcihsZXQgaSBvZiB0fHxbXSl7Y29uc3QgdD1pLnN0YXJ0c1dpdGgoIl4iKTt0JiYoaT1pLnN1YnN0cmluZygxKSk7bGV0IHI9aSxvPSIwIjtjb25zdCBhPWkuaW5jbHVkZXMoIjoiKSYmaS5tYXRjaChyTnQpO2EmJihyPWFbMV0sbz1hWzJdKSxuIT09ciYmKG49cixlLnB1c2goe25hbWU6cixvdXRwdXRUZW5zb3JLZXk6byxpc0NvbnRyb2xEZXBlbmRlbmN5OnR9KSl9cmV0dXJuIGV9KSh0LmlucHV0KSx0aGlzLm91dHB1dFNoYXBlcz0oZnVuY3Rpb24gbih0KXtpZighdClyZXR1cm4gbnVsbDtmb3IobGV0IGU9MDtlPHQubGVuZ3RoO2UrKyl7bGV0e2tleTpuLHZhbHVlOml9PXRbZV07aWYoIl9vdXRwdXRfc2hhcGVzIj09PW4pe2lmKCFpLmxpc3Quc2hhcGUpcmV0dXJuIG51bGw7bGV0IG49aS5saXN0LnNoYXBlLm1hcCgodD0+dC51bmtub3duX3Jhbms/bnVsbDpudWxsPT10LmRpbXx8MT09PXQuZGltLmxlbmd0aCYmbnVsbD09dC5kaW1bMF0uc2l6ZT9bXTp0LmRpbS5tYXAoKHQ9PnQuc2l6ZSkpKSk7cmV0dXJuIHQuc3BsaWNlKGUsMSksbn19cmV0dXJuIG51bGx9KSh0LmF0dHIpLHRoaXMueGxhQ2x1c3Rlcj0oZnVuY3Rpb24gaSh0KXtpZighdClyZXR1cm4gbnVsbDtmb3IobGV0IGU9MDtlPHQubGVuZ3RoO2UrKylpZigiX1hsYUNsdXN0ZXIiPT09dFtlXS5rZXkpcmV0dXJuIHRbZV0udmFsdWUuc3x8bnVsbDtyZXR1cm4gbnVsbH0pKHQuYXR0ciksdGhpcy5jb21wYXRpYmxlPSExLHRoaXMudHlwZT1XSXQuT1AsdGhpcy5pc0dyb3VwTm9kZT0hMSx0aGlzLmNhcmRpbmFsaXR5PTEsdGhpcy5pbkVtYmVkZGluZ3M9W10sdGhpcy5vdXRFbWJlZGRpbmdzPVtdLHRoaXMucGFyZW50Tm9kZT1udWxsLHRoaXMuaW5jbHVkZT1xSXQuVU5TUEVDSUZJRUQsdGhpcy5vd25pbmdTZXJpZXM9bnVsbH19ZnVuY3Rpb24gWkl0KHQsZT17fSl7cmV0dXJuIG5ldyBKSXQodCxlKX1jbGFzcyBKSXR7Y29uc3RydWN0b3IodCxlPXt9KXt0aGlzLm5hbWU9dCx0aGlzLnR5cGU9V0l0Lk1FVEEsdGhpcy5kZXB0aD0xLHRoaXMuaXNHcm91cE5vZGU9ITAsdGhpcy5jYXJkaW5hbGl0eT0wLHRoaXMubWV0YWdyYXBoPXNOdCh0LEdJdC5NRVRBLGUpLHRoaXMuYnJpZGdlZ3JhcGg9bnVsbCx0aGlzLm9wSGlzdG9ncmFtPXt9LHRoaXMuZGV2aWNlSGlzdG9ncmFtPXt9LHRoaXMueGxhQ2x1c3Rlckhpc3RvZ3JhbT17fSx0aGlzLmNvbXBhdGliaWxpdHlIaXN0b2dyYW09e2NvbXBhdGlibGU6MCxpbmNvbXBhdGlibGU6MH0sdGhpcy50ZW1wbGF0ZUlkPW51bGwsdGhpcy5wYXJlbnROb2RlPW51bGwsdGhpcy5oYXNOb25Db250cm9sRWRnZXM9ITEsdGhpcy5pbmNsdWRlPXFJdC5VTlNQRUNJRklFRCx0aGlzLmFzc29jaWF0ZWRGdW5jdGlvbj0iIn1nZXRGaXJzdENoaWxkKCl7cmV0dXJuIHRoaXMubWV0YWdyYXBoLm5vZGUodGhpcy5tZXRhZ3JhcGgubm9kZXMoKVswXSl9Z2V0Um9vdE9wKCl7bGV0IHQ9dGhpcy5uYW1lLnNwbGl0KCIvIik7cmV0dXJuIHRoaXMubWV0YWdyYXBoLm5vZGUodGhpcy5uYW1lKyIvKCIrdFt0Lmxlbmd0aC0xXSsiKSIpfWxlYXZlcygpe2xldCB0LGU9W10sbj1bdGhpc107Zm9yKDtuLmxlbmd0aDspe2xldCBpPW4uc2hpZnQoKTtpLmlzR3JvdXBOb2RlPyh0PWkubWV0YWdyYXBoLHdlLmVhY2godC5ub2RlcygpLChlPT5uLnB1c2godC5ub2RlKGUpKSkpKTplLnB1c2goaS5uYW1lKX1yZXR1cm4gZX19ZnVuY3Rpb24gUUl0KHQsZSl7cmV0dXJuIG5ldyB0TnQodCxlKX1jbGFzcyB0TnR7Y29uc3RydWN0b3IodCxlKXt0aGlzLnY9dCx0aGlzLnc9ZSx0aGlzLmJhc2VFZGdlTGlzdD1bXSx0aGlzLmluYm91bmQ9bnVsbCx0aGlzLm51bVJlZ3VsYXJFZGdlcz0wLHRoaXMubnVtQ29udHJvbEVkZ2VzPTAsdGhpcy5udW1SZWZFZGdlcz0wLHRoaXMudG90YWxTaXplPTB9YWRkQmFzZUVkZ2UodCxlKXt0aGlzLmJhc2VFZGdlTGlzdC5wdXNoKHQpLHQuaXNDb250cm9sRGVwZW5kZW5jeT90aGlzLm51bUNvbnRyb2xFZGdlcys9MTp0aGlzLm51bVJlZ3VsYXJFZGdlcys9MSx0LmlzUmVmZXJlbmNlRWRnZSYmKHRoaXMubnVtUmVmRWRnZXMrPTEpLHRoaXMudG90YWxTaXplKz10TnQuY29tcHV0ZVNpemVPZkVkZ2UodCxlKSxlLm1heE1ldGFFZGdlU2l6ZT1NYXRoLm1heChlLm1heE1ldGFFZGdlU2l6ZSx0aGlzLnRvdGFsU2l6ZSl9c3RhdGljIGNvbXB1dGVTaXplT2ZFZGdlKHQsZSl7bGV0IG49ZS5ub2RlKHQudik7aWYoIW4ub3V0cHV0U2hhcGVzKXJldHVybiAxO2UuaGFzU2hhcGVJbmZvPSEwO2NvbnN0IGk9T2JqZWN0LmtleXMobi5vdXRwdXRTaGFwZXMpLm1hcCgodD0+bi5vdXRwdXRTaGFwZXNbdF0pKS5tYXAoKHQ9Pm51bGw9PXQ/MTp0LnJlZHVjZSgoKHQsZSk9PigtMT09PWUmJihlPTEpLHQqZSkpLDEpKSk7cmV0dXJuIHdlLnN1bShpKX19ZnVuY3Rpb24gZU50KHQsZSxuLGkscixvKXtyZXR1cm4gbmV3IGlOdCh0LGUsbixpLHIsbyl9ZnVuY3Rpb24gbk50KHQsZSxuLGkscil7cmV0dXJuKG4/bisiLyI6IiIpK3QrKHZvaWQgMCE9PWkmJnZvaWQgMCE9PXI/IlsiK2krIi0iK3IrIl0iOiIjIikrZX1jbGFzcyBpTnR7Y29uc3RydWN0b3IodCxlLG4saSxyLG8pe3RoaXMubmFtZT1yfHxuTnQodCxlLG4pLHRoaXMudHlwZT1XSXQuU0VSSUVTLHRoaXMuaGFzTG9vcD0hMSx0aGlzLnByZWZpeD10LHRoaXMuc3VmZml4PWUsdGhpcy5jbHVzdGVySWQ9aSx0aGlzLmlkcz1bXSx0aGlzLnBhcmVudD1uLHRoaXMuaXNHcm91cE5vZGU9ITAsdGhpcy5jYXJkaW5hbGl0eT0wLHRoaXMubWV0YWdyYXBoPXNOdChyLEdJdC5TRVJJRVMsbyksdGhpcy5icmlkZ2VncmFwaD1udWxsLHRoaXMucGFyZW50Tm9kZT1udWxsLHRoaXMuZGV2aWNlSGlzdG9ncmFtPXt9LHRoaXMueGxhQ2x1c3Rlckhpc3RvZ3JhbT17fSx0aGlzLmNvbXBhdGliaWxpdHlIaXN0b2dyYW09e2NvbXBhdGlibGU6MCxpbmNvbXBhdGlibGU6MH0sdGhpcy5oYXNOb25Db250cm9sRWRnZXM9ITEsdGhpcy5pbmNsdWRlPXFJdC5VTlNQRUNJRklFRH19Y29uc3Qgck50PS9eKFteOl0rKTooKFx3Kzp8KVxkKykkLztmdW5jdGlvbiBvTnQodCxlLG4saSxyLG8pe2UhPT1uLm5hbWUmJnQuZWRnZXMucHVzaCh7djplLHc6bi5uYW1lLG91dHB1dFRlbnNvcktleTppLm91dHB1dFRlbnNvcktleSxpc0NvbnRyb2xEZXBlbmRlbmN5OmkuaXNDb250cm9sRGVwZW5kZW5jeSxpc1JlZmVyZW5jZUVkZ2U6ITA9PT1yLnJlZkVkZ2VzW24ub3ArIiAiK29dfSl9Y29uc3QgYU50PXtlbmFibGVFbWJlZGRpbmc6ITAsaW5FbWJlZGRpbmdUeXBlczpbIkNvbnN0Il0sb3V0RW1iZWRkaW5nVHlwZXM6WyJeW2EtekEtWl0rU3VtbWFyeSQiXSxyZWZFZGdlczp7IkFzc2lnbiAwIjohMCwiQXNzaWduQWRkIDAiOiEwLCJBc3NpZ25TdWIgMCI6ITAsImFzc2lnbiAwIjohMCwiYXNzaWduX2FkZCAwIjohMCwiYXNzaWduX3N1YiAwIjohMCwiY291bnRfdXBfdG8gMCI6ITAsIlNjYXR0ZXJBZGQgMCI6ITAsIlNjYXR0ZXJTdWIgMCI6ITAsIlNjYXR0ZXJVcGRhdGUgMCI6ITAsInNjYXR0ZXJfYWRkIDAiOiEwLCJzY2F0dGVyX3N1YiAwIjohMCwic2NhdHRlcl91cGRhdGUgMCI6ITB9fTtmdW5jdGlvbiBzTnQodCxlLG49e30pe2NvbnN0IGk9bmV3IGdJdC5ncmFwaGxpYi5HcmFwaChuKTtyZXR1cm4gaS5zZXRHcmFwaCh7bmFtZTp0LHJhbmtkaXI6bi5yYW5rZGlyfHwiQlQiLHR5cGU6ZX0pLGl9ZnVuY3Rpb24gbE50KHQpe3JldHVybiBmdW5jdGlvbihlKXtmb3IobGV0IG49MDtuPHQubGVuZ3RoO24rKyl7bGV0IGk9bmV3IFJlZ0V4cCh0W25dKTtpZigic3RyaW5nIj09dHlwZW9mIGUub3AmJmUub3AubWF0Y2goaSkpcmV0dXJuITB9cmV0dXJuITF9fWZ1bmN0aW9uIGNOdCh0KXtsZXQgZT10LnNwbGl0KFZJdCk7cmV0dXJuIHQrVkl0KyIoIitlW2UubGVuZ3RoLTFdKyIpIn1mdW5jdGlvbiB1TnQodCl7bGV0IGU9dC5ub2RlcygpLm1hcCgoZnVuY3Rpb24oZSl7cmV0dXJuIHQubmVpZ2hib3JzKGUpLmxlbmd0aH0pKTtyZXR1cm4gZS5zb3J0KCksZX1mdW5jdGlvbiBoTnQodCxlKXtsZXQgbj1bXSxpPXQuaW5kZXhPZihWSXQpO2Zvcig7aT49MDspbi5wdXNoKHQuc3Vic3RyaW5nKDAsaSkpLGk9dC5pbmRleE9mKFZJdCxpKzEpO2lmKGUpe2xldCBpPWVbdF07aSYmbi5wdXNoKGkpfXJldHVybiBuLnB1c2godCksbn1mdW5jdGlvbiBkTnQodCl7cmV0dXJuIHQ9PT1xSXQuRVhDTFVERT8iQWRkIHRvIG1haW4gZ3JhcGgiOiJSZW1vdmUgZnJvbSBtYWluIGdyYXBoIn1sZXQgcE50PSIjMGY5ZDU4IixmTnQ9IiNkYjQ0MzciLG1OdD17REVGQVVMVF9GSUxMOiIjZDlkOWQ5IixERUZBVUxUX1NUUk9LRToiI2E2YTZhNiIsU0FUVVJBVElPTjouNixMSUdIVE5FU1M6Ljg1LEVYUEFOREVEX0NPTE9SOiIjZjBmMGYwIixIVUVTOlsyMjAsMTAwLDE4MCw0MCwyMCwzNDAsMjYwLDMwMCwxNDAsNjBdLFNUUlVDVFVSRV9QQUxFVFRFKHQsZSl7bGV0IG49bU50LkhVRVMsaT1uW3Qlbi5sZW5ndGhdLHI9TWF0aC5zaW4oaSpNYXRoLlBJLzM2MCk7cmV0dXJuICRoKGksLjAxKihlPzMwOjkwLTYwKnIpLC4wMSooZT85NTo4MCkpLnRvU3RyaW5nKCl9LERFVklDRV9QQUxFVFRFOnQ9Pm1OdC5TVFJVQ1RVUkVfUEFMRVRURSh0KSxYTEFfQ0xVU1RFUl9QQUxFVFRFOnQ9Pm1OdC5TVFJVQ1RVUkVfUEFMRVRURSh0KSxVTktOT1dOOiIjZWVlIixHUkFESUVOVF9PVVRMSU5FOiIjODg4In07Y29uc3QgZ050PVsiTm9PcCJdLF9OdD1bXSx5TnQ9WyIjZmZmNWYwIiwiI2ZiNmE0YSJdLHZOdD1uZXcgUmVnRXhwKCJeKD86X19mdW5jdGlvbl9saWJyYXJ5X18pPyhcXHcrKV9bYS16MC05XXs4fSg/Ol9cXGQrKT8kIik7Y2xhc3MgYk50e2NvbnN0cnVjdG9yKHQsZSxuKXt0aGlzLmhpZXJhcmNoeT10LHRoaXMuZGlzcGxheWluZ1N0YXRzPWUsdGhpcy5hdXRvRXh0cmFjdE5vZGVzPW4sdGhpcy5pbmRleD17fSx0aGlzLnJlbmRlcmVkT3BOYW1lcz1bXSx0aGlzLmNvbXB1dGVTY2FsZXMoKSx0aGlzLmhhc1N1YmhpZXJhcmNoeT17fSx0aGlzLnJvb3Q9bmV3IENOdCh0LnJvb3QsdC5ncmFwaE9wdGlvbnMpLHRoaXMuaW5kZXhbdC5yb290Lm5hbWVdPXRoaXMucm9vdCx0aGlzLnJlbmRlcmVkT3BOYW1lcy5wdXNoKHQucm9vdC5uYW1lKSx0aGlzLmJ1aWxkU3ViaGllcmFyY2h5KHQucm9vdC5uYW1lKSx0aGlzLnJvb3QuZXhwYW5kZWQ9ITAsdGhpcy50cmFjZUlucHV0cz0hMX1jb21wdXRlU2NhbGVzKCl7dGhpcy5kZXZpY2VDb2xvck1hcD1iTSgpLmRvbWFpbih0aGlzLmhpZXJhcmNoeS5kZXZpY2VzKS5yYW5nZSh3ZS5tYXAoemwodGhpcy5oaWVyYXJjaHkuZGV2aWNlcy5sZW5ndGgpLG1OdC5ERVZJQ0VfUEFMRVRURSkpLHRoaXMueGxhQ2x1c3RlckNvbG9yTWFwPWJNKCkuZG9tYWluKHRoaXMuaGllcmFyY2h5LnhsYUNsdXN0ZXJzKS5yYW5nZSh3ZS5tYXAoemwodGhpcy5oaWVyYXJjaHkueGxhQ2x1c3RlcnMubGVuZ3RoKSxtTnQuWExBX0NMVVNURVJfUEFMRVRURSkpO2xldCB0PXRoaXMuaGllcmFyY2h5LnJvb3QubWV0YWdyYXBoLGU9V2wodC5ub2RlcygpLCgoZSxuKT0+e2xldCBpPXQubm9kZShlKTtpZihudWxsIT1pLnN0YXRzKXJldHVybiBpLnN0YXRzLnRvdGFsQnl0ZXN9KSk7dGhpcy5tZW1vcnlVc2FnZVNjYWxlPXpNKCkuZG9tYWluKFswLGVdKS5yYW5nZSh5TnQpO2xldCBuPVdsKHQubm9kZXMoKSwoKGUsbik9PntsZXQgaT10Lm5vZGUoZSk7aWYobnVsbCE9aS5zdGF0cylyZXR1cm4gaS5zdGF0cy5nZXRUb3RhbE1pY3JvcygpfSkpO3RoaXMuY29tcHV0ZVRpbWVTY2FsZT16TSgpLmRvbWFpbihbMCxuXSkucmFuZ2UoeU50KSx0aGlzLmVkZ2VXaWR0aFNpemVkQmFzZWRTY2FsZT10aGlzLmhpZXJhcmNoeS5oYXNTaGFwZUluZm8/QUl0OnpNKCkuZG9tYWluKFsxLHRoaXMuaGllcmFyY2h5Lm1heE1ldGFFZGdlU2l6ZV0pLnJhbmdlKFtUSXQsMTJdKX1nZXRSZW5kZXJOb2RlQnlOYW1lKHQpe3JldHVybiB0aGlzLmluZGV4W3RdfWdldE5vZGVCeU5hbWUodCl7cmV0dXJuIHRoaXMuaGllcmFyY2h5Lm5vZGUodCl9Y29sb3JIaXN0b2dyYW0odCxlKXtpZihPYmplY3Qua2V5cyh0KS5sZW5ndGg+MCl7Y29uc3Qgbj13ZS5zdW0oT2JqZWN0LmtleXModCkubWFwKChlPT50W2VdKSkpO3JldHVybiBPYmplY3Qua2V5cyh0KS5tYXAoKGk9Pih7Y29sb3I6ZShpKSxwcm9wb3J0aW9uOnRbaV0vbn0pKSl9cmV0dXJuIG51bGx9Z2V0T3JDcmVhdGVSZW5kZXJOb2RlQnlOYW1lKHQpe2lmKCF0KXJldHVybiBudWxsO2lmKHQgaW4gdGhpcy5pbmRleClyZXR1cm4gdGhpcy5pbmRleFt0XTtsZXQgZT10aGlzLmhpZXJhcmNoeS5ub2RlKHQpO2lmKCFlKXJldHVybiBudWxsO2xldCBuPWUuaXNHcm91cE5vZGU/bmV3IENOdChlLHRoaXMuaGllcmFyY2h5LmdyYXBoT3B0aW9ucyk6bmV3IE1OdChlKTt0aGlzLmluZGV4W3RdPW4sdGhpcy5yZW5kZXJlZE9wTmFtZXMucHVzaCh0KSxlLnN0YXRzJiYobi5tZW1vcnlDb2xvcj10aGlzLm1lbW9yeVVzYWdlU2NhbGUoZS5zdGF0cy50b3RhbEJ5dGVzKSxuLmNvbXB1dGVUaW1lQ29sb3I9dGhpcy5jb21wdXRlVGltZVNjYWxlKGUuc3RhdHMuZ2V0VG90YWxNaWNyb3MoKSkpLG4uaXNGYWRlZE91dD10aGlzLmRpc3BsYXlpbmdTdGF0cyYmIURJdChlLnN0YXRzKTt2YXIgaT1udWxsLHI9bnVsbCxvPW51bGw7aWYoZS5pc0dyb3VwTm9kZSl7aT1lLmRldmljZUhpc3RvZ3JhbSxyPWUueGxhQ2x1c3Rlckhpc3RvZ3JhbTtsZXQgdD1lLmNvbXBhdGliaWxpdHlIaXN0b2dyYW0uY29tcGF0aWJsZSxuPWUuY29tcGF0aWJpbGl0eUhpc3RvZ3JhbS5pbmNvbXBhdGlibGU7MD09dCYmMD09bnx8KG89dC8odCtuKSl9ZWxzZXtsZXQgdD1uLm5vZGUuZGV2aWNlO3QmJihpPXtbdF06MX0pO2xldCBlPW4ubm9kZS54bGFDbHVzdGVyO2UmJihyPXtbZV06MX0pLG4ubm9kZS50eXBlPT09V0l0Lk9QJiYobz1uLm5vZGUuY29tcGF0aWJsZT8xOjApfXJldHVybiBpJiYobi5kZXZpY2VDb2xvcnM9dGhpcy5jb2xvckhpc3RvZ3JhbShpLHRoaXMuZGV2aWNlQ29sb3JNYXApKSxyJiYobi54bGFDbHVzdGVyQ29sb3JzPXRoaXMuY29sb3JIaXN0b2dyYW0ocix0aGlzLnhsYUNsdXN0ZXJDb2xvck1hcCkpLG51bGwhPW8mJihuLmNvbXBhdGliaWxpdHlDb2xvcnM9W3tjb2xvcjpwTnQscHJvcG9ydGlvbjpvfSx7Y29sb3I6Zk50LHByb3BvcnRpb246MS1vfV0pLHRoaXMuaW5kZXhbdF19Z2V0TmVhcmVzdFZpc2libGVBbmNlc3Rvcih0KXtsZXQgZT1oTnQodCksbj0wLGk9bnVsbCxyPXQ7Zm9yKDtuPGUubGVuZ3RoJiYocj1lW25dLGk9dGhpcy5nZXRSZW5kZXJOb2RlQnlOYW1lKHIpLGkuZXhwYW5kZWQpO24rKyk7aWYobj09ZS5sZW5ndGgtMil7bGV0IHQ9ZVtuKzFdO2lmKGkuaW5Bbm5vdGF0aW9ucy5ub2RlTmFtZXNbdF0pcmV0dXJuIHQ7aWYoaS5vdXRBbm5vdGF0aW9ucy5ub2RlTmFtZXNbdF0pcmV0dXJuIHR9cmV0dXJuIHJ9c2V0RGVwdGgodCl7a050KHRoaXMucm9vdCwrdCl9aXNOb2RlQXV4aWxpYXJ5KHQpe2xldCBlPXRoaXMuZ2V0UmVuZGVyTm9kZUJ5TmFtZSh0Lm5vZGUucGFyZW50Tm9kZS5uYW1lKSxuPXdlLmZpbmQoZS5pc29sYXRlZEluRXh0cmFjdCwoZT0+ZS5ub2RlLm5hbWU9PT10Lm5vZGUubmFtZSkpO3JldHVybiEhbnx8KG49d2UuZmluZChlLmlzb2xhdGVkT3V0RXh0cmFjdCwoZT0+ZS5ub2RlLm5hbWU9PT10Lm5vZGUubmFtZSkpLCEhbil9Z2V0TmFtZXNPZlJlbmRlcmVkT3BzKCl7cmV0dXJuIHRoaXMucmVuZGVyZWRPcE5hbWVzfWNsb25lQW5kQWRkRnVuY3Rpb25PcE5vZGUodCxlLG4saSl7Y29uc3Qgcj1uLm5hbWUucmVwbGFjZShlLGkpO2xldCBvPXQubWV0YWdyYXBoLm5vZGUocik7aWYobylyZXR1cm4gbztvPW5ldyBLSXQoe25hbWU6cixpbnB1dDpbXSxkZXZpY2U6bi5kZXZpY2Usb3A6bi5vcCxhdHRyOndlLmNsb25lRGVlcChuLmF0dHIpfSksby5jYXJkaW5hbGl0eT1uLmNhcmRpbmFsaXR5LG8uaW5jbHVkZT1uLmluY2x1ZGUsby5vdXRwdXRTaGFwZXM9d2UuY2xvbmVEZWVwKG4ub3V0cHV0U2hhcGVzKSxvLnhsYUNsdXN0ZXI9bi54bGFDbHVzdGVyLG8uZnVuY3Rpb25JbnB1dEluZGV4PW4uZnVuY3Rpb25JbnB1dEluZGV4LG8uZnVuY3Rpb25PdXRwdXRJbmRleD1uLmZ1bmN0aW9uT3V0cHV0SW5kZXgsby5pbnB1dHM9bi5pbnB1dHMubWFwKCh0PT57Y29uc3Qgbj13ZS5jbG9uZSh0KTtyZXR1cm4gbi5uYW1lPXQubmFtZS5yZXBsYWNlKGUsaSksbn0pKSxvLnBhcmVudE5vZGU9dCx0Lm1ldGFncmFwaC5zZXROb2RlKG8ubmFtZSxvKSx0aGlzLmhpZXJhcmNoeS5zZXROb2RlKG8ubmFtZSxvKTtjb25zdCBhPW49PnRoaXMuY2xvbmVBbmRBZGRGdW5jdGlvbk9wTm9kZSh0LGUsbixpKTtyZXR1cm4gby5pbkVtYmVkZGluZ3M9bi5pbkVtYmVkZGluZ3MubWFwKGEpLG8ub3V0RW1iZWRkaW5ncz1uLm91dEVtYmVkZGluZ3MubWFwKGEpLG99Y2xvbmVGdW5jdGlvbkxpYnJhcnlNZXRhbm9kZSh0LGUsbixpLHIpe2NvbnN0IG89e30sYT10aGlzLmNsb25lRnVuY3Rpb25MaWJyYXJ5TWV0YW5vZGVIZWxwZXIodCxlLG4saSxyLG8pO3JldHVybiB3ZS5pc0VtcHR5KG8pfHx0aGlzLnBhdGNoRWRnZXNGcm9tRnVuY3Rpb25PdXRwdXRzKGUsbyksYX1jbG9uZUZ1bmN0aW9uTGlicmFyeU1ldGFub2RlSGVscGVyKHQsZSxuLGkscixvKXtjb25zdCBhPVpJdChuLm5hbWUucmVwbGFjZShpLHIpKTtyZXR1cm4gYS5kZXB0aD1uLmRlcHRoLGEuY2FyZGluYWxpdHk9bi5jYXJkaW5hbGl0eSxhLnRlbXBsYXRlSWQ9bi50ZW1wbGF0ZUlkLGEub3BIaXN0b2dyYW09d2UuY2xvbmUobi5vcEhpc3RvZ3JhbSksYS5kZXZpY2VIaXN0b2dyYW09d2UuY2xvbmUobi5kZXZpY2VIaXN0b2dyYW0pLGEueGxhQ2x1c3Rlckhpc3RvZ3JhbT13ZS5jbG9uZShuLnhsYUNsdXN0ZXJIaXN0b2dyYW0pLGEuaGFzTm9uQ29udHJvbEVkZ2VzPW4uaGFzTm9uQ29udHJvbEVkZ2VzLGEuaW5jbHVkZT1uLmluY2x1ZGUsYS5ub2RlQXR0cmlidXRlcz13ZS5jbG9uZShuLm5vZGVBdHRyaWJ1dGVzKSxhLmFzc29jaWF0ZWRGdW5jdGlvbj1uLmFzc29jaWF0ZWRGdW5jdGlvbix3ZS5lYWNoKG4ubWV0YWdyYXBoLm5vZGVzKCksKHM9Pntjb25zdCBsPW4ubWV0YWdyYXBoLm5vZGUocyk7c3dpdGNoKGwudHlwZSl7Y2FzZSBXSXQuTUVUQTpjb25zdCBuPXRoaXMuY2xvbmVGdW5jdGlvbkxpYnJhcnlNZXRhbm9kZUhlbHBlcih0LGUsbCxpLHIsbyk7bi5wYXJlbnROb2RlPWEsYS5tZXRhZ3JhcGguc2V0Tm9kZShuLm5hbWUsbiksdGhpcy5oaWVyYXJjaHkuc2V0Tm9kZShuLm5hbWUsbik7YnJlYWs7Y2FzZSBXSXQuT1A6Y29uc3Qgcz10aGlzLmNsb25lQW5kQWRkRnVuY3Rpb25PcE5vZGUoYSxpLGwscik7d2UuaXNOdW1iZXIocy5mdW5jdGlvbklucHV0SW5kZXgpJiZ0aGlzLnBhdGNoRWRnZXNJbnRvRnVuY3Rpb25JbnB1dHMoZSxzKSx3ZS5pc051bWJlcihzLmZ1bmN0aW9uT3V0cHV0SW5kZXgpJiYob1tzLmZ1bmN0aW9uT3V0cHV0SW5kZXhdPXMpO2JyZWFrO2RlZmF1bHQ6Y29uc29sZS53YXJuKGwubmFtZSsiIGlzIG9kZGx5IG5laXRoZXIgYSBtZXRhbm9kZSBub3IgYW4gb3Bub2RlLiIpfX0pKSx0aGlzLmNsb25lTGlicmFyeU1ldGFub2RlRWRnZXMobixhLGksciksYX1jbG9uZUxpYnJhcnlNZXRhbm9kZUVkZ2VzKHQsZSxuLGkpe3dlLmVhY2godC5tZXRhZ3JhcGguZWRnZXMoKSwocj0+e2NvbnN0IG89dC5tZXRhZ3JhcGguZWRnZShyKSxhPW8udi5yZXBsYWNlKG4saSkscz1vLncucmVwbGFjZShuLGkpLGw9bmV3IHROdChhLHMpO2wuaW5ib3VuZD1vLmluYm91bmQsbC5udW1SZWd1bGFyRWRnZXM9by5udW1SZWd1bGFyRWRnZXMsbC5udW1Db250cm9sRWRnZXM9by5udW1Db250cm9sRWRnZXMsbC5udW1SZWZFZGdlcz1vLm51bVJlZkVkZ2VzLGwudG90YWxTaXplPW8udG90YWxTaXplLG8uYmFzZUVkZ2VMaXN0JiYobC5iYXNlRWRnZUxpc3Q9by5iYXNlRWRnZUxpc3QubWFwKCh0PT57Y29uc3QgZT13ZS5jbG9uZSh0KTtyZXR1cm4gZS52PXQudi5yZXBsYWNlKG4saSksZS53PXQudy5yZXBsYWNlKG4saSksZX0pKSksZS5tZXRhZ3JhcGgubm9kZShzKT9lLm1ldGFncmFwaC5zZXRFZGdlKGEscyxsKTplLm1ldGFncmFwaC5zZXRFZGdlKHMsYSxsKX0pKX1wYXRjaEVkZ2VzSW50b0Z1bmN0aW9uSW5wdXRzKHQsZSl7bGV0IG49TWF0aC5taW4oZS5mdW5jdGlvbklucHV0SW5kZXgsdC5pbnB1dHMubGVuZ3RoLTEpLGk9d2UuY2xvbmUodC5pbnB1dHNbbl0pO2Zvcig7aS5pc0NvbnRyb2xEZXBlbmRlbmN5OyluKyssaT10LmlucHV0c1tuXTtlLmlucHV0cy5wdXNoKGkpO2NvbnN0IHI9dGhpcy5oaWVyYXJjaHkuZ2V0UHJlZGVjZXNzb3JzKHQubmFtZSk7bGV0IG8sYT0wO3dlLmVhY2goci5yZWd1bGFyLCh0PT57aWYoYSs9dC5udW1SZWd1bGFyRWRnZXMsYT5uKXJldHVybiBvPXQsITF9KSksd2UuZWFjaChvLmJhc2VFZGdlTGlzdCwobj0+e24udz09PXQubmFtZSYmKG4udz1lLm5hbWUpLG4udj09PXQubmFtZSYmKG4udj1lLm5hbWUpfSkpfXBhdGNoRWRnZXNGcm9tRnVuY3Rpb25PdXRwdXRzKHQsZSl7Y29uc3Qgbj10aGlzLmhpZXJhcmNoeS5nZXRTdWNjZXNzb3JzKHQubmFtZSk7d2UuZWFjaChuLnJlZ3VsYXIsKG49Pnt3ZS5lYWNoKG4uYmFzZUVkZ2VMaXN0LChuPT57Y29uc3QgaT10aGlzLmhpZXJhcmNoeS5ub2RlKG4udyk7d2UuZWFjaChpLmlucHV0cywoaT0+e2kubmFtZT09PXQubmFtZSYmKGkubmFtZT1lW2kub3V0cHV0VGVuc29yS2V5XS5uYW1lLGkub3V0cHV0VGVuc29yS2V5PW4ub3V0cHV0VGVuc29yS2V5KX0pKX0pKSx3ZS5lYWNoKG4uYmFzZUVkZ2VMaXN0LCh0PT57dC52PWVbdC5vdXRwdXRUZW5zb3JLZXldLm5hbWUsdC5vdXRwdXRUZW5zb3JLZXk9IjAifSkpfSkpfWJ1aWxkU3ViaGllcmFyY2h5KHQpe2lmKHQgaW4gdGhpcy5oYXNTdWJoaWVyYXJjaHkpcmV0dXJuO3RoaXMuaGFzU3ViaGllcmFyY2h5W3RdPSEwO2xldCBlPXRoaXMuaW5kZXhbdF07aWYoZS5ub2RlLnR5cGUhPT1XSXQuTUVUQSYmZS5ub2RlLnR5cGUhPT1XSXQuU0VSSUVTKXJldHVybjtsZXQgbj1lLGk9bi5ub2RlLm1ldGFncmFwaCxyPW4uY29yZUdyYXBoO2NvbnN0IG89W10sYT1bXTt3ZS5pc0VtcHR5KHRoaXMuaGllcmFyY2h5LmxpYnJhcnlGdW5jdGlvbnMpfHwod2UuZWFjaChpLm5vZGVzKCksKHQ9Pntjb25zdCBlPWkubm9kZSh0KSxuPXRoaXMuaGllcmFyY2h5LmxpYnJhcnlGdW5jdGlvbnNbZS5vcF07aWYoIW4pcmV0dXJuO2lmKDA9PT10LmluZGV4T2YoVUl0KSlyZXR1cm47Y29uc3Qgcj10aGlzLmNsb25lRnVuY3Rpb25MaWJyYXJ5TWV0YW5vZGUoaSxlLG4ubm9kZSxuLm5vZGUubmFtZSxlLm5hbWUpO28ucHVzaChlKSxhLnB1c2gocil9KSksd2UuZWFjaChhLCgodCxlKT0+e2NvbnN0IG49b1tlXTt0LnBhcmVudE5vZGU9bi5wYXJlbnROb2RlLGkuc2V0Tm9kZShuLm5hbWUsdCksdGhpcy5oaWVyYXJjaHkuc2V0Tm9kZShuLm5hbWUsdCl9KSkpLHdlLmVhY2goaS5ub2RlcygpLCh0PT57bGV0IGU9dGhpcy5nZXRPckNyZWF0ZVJlbmRlck5vZGVCeU5hbWUodCksbj1lLm5vZGU7ci5zZXROb2RlKHQsZSksbi5pc0dyb3VwTm9kZXx8KHdlLmVhY2gobi5pbkVtYmVkZGluZ3MsKHQ9PntsZXQgbj1uZXcgRU50KG51bGwpLGk9bmV3IE1OdCh0KTtUTnQoZSx0LGksbix3TnQuQ09OU1RBTlQpLHRoaXMuaW5kZXhbdC5uYW1lXT1pfSkpLHdlLmVhY2gobi5vdXRFbWJlZGRpbmdzLCh0PT57bGV0IG49bmV3IEVOdChudWxsKSxpPW5ldyBNTnQodCk7QU50KGUsdCxpLG4sd050LlNVTU1BUlkpLHRoaXMuaW5kZXhbdC5uYW1lXT1pfSkpKX0pKSx3ZS5lYWNoKGkuZWRnZXMoKSwodD0+e2xldCBlPWkuZWRnZSh0KSxuPW5ldyBFTnQoZSk7bi5pc0ZhZGVkT3V0PXRoaXMuaW5kZXhbdC52XS5pc0ZhZGVkT3V0fHx0aGlzLmluZGV4W3Qud10uaXNGYWRlZE91dCxyLnNldEVkZ2UodC52LHQudyxuKX0pKSxuLm5vZGUudHlwZT09PVdJdC5NRVRBJiYoZnVuY3Rpb24gcyh0LGUpeyhmdW5jdGlvbiBuKHQpe2xldCBlPXQuY29yZUdyYXBoO3dlLmVhY2goZS5ub2RlcygpLChuPT57ZS5ub2RlKG4pLm5vZGUuaW5jbHVkZSE9PXFJdC5FWENMVURFfHxuLnN0YXJ0c1dpdGgoVUl0KXx8KHQuY29yZUdyYXBoLm91dEVkZ2VzKG4pLmxlbmd0aD50LmNvcmVHcmFwaC5pbkVkZ2VzKG4pLmxlbmd0aD9QTnQodCxuKTpJTnQodCxuKSl9KSl9KSh0KSxnTnQubGVuZ3RoJiYoZnVuY3Rpb24gaSh0KXtsZXQgZT10LmNvcmVHcmFwaDt3ZS5lYWNoKGUubm9kZXMoKSwobj0+e2xldCBpPWUubm9kZShuKTtpLm5vZGUuaW5jbHVkZT09PXFJdC5VTlNQRUNJRklFRCYmTk50KGkubm9kZSxnTnQpJiZQTnQodCxuKX0pKX0pKHQpLF9OdC5sZW5ndGgmJihmdW5jdGlvbiByKHQpe2xldCBlPXQuY29yZUdyYXBoO3dlLmVhY2goZS5ub2RlcygpLChuPT57bGV0IGk9ZS5ub2RlKG4pO2kubm9kZS5pbmNsdWRlPT09cUl0LlVOU1BFQ0lGSUVEJiZOTnQoaS5ub2RlLF9OdCkmJklOdCh0LG4pfSkpfSkodCksZSYmKGZ1bmN0aW9uIG8odCl7bGV0IGU9dC5jb3JlR3JhcGgsbj17fSxpPXt9LHI9MDtpZih3ZS5lYWNoKGUubm9kZXMoKSwodD0+e2lmKGUubm9kZSh0KS5ub2RlLmluY2x1ZGUhPT1xSXQuVU5TUEVDSUZJRUQpcmV0dXJuO2xldCBvPXdlLnJlZHVjZShlLnByZWRlY2Vzc29ycyh0KSwoKG4saSk9Pm4rKGUuZWRnZShpLHQpLm1ldGFlZGdlLm51bVJlZ3VsYXJFZGdlcz8xOjApKSwwKTswPT09byYmZS5wcmVkZWNlc3NvcnModCkubGVuZ3RoPjAmJihvPWUucHJlZGVjZXNzb3JzKHQpLmxlbmd0aCk7bGV0IGE9d2UucmVkdWNlKGUuc3VjY2Vzc29ycyh0KSwoKG4saSk9Pm4rKGUuZWRnZSh0LGkpLm1ldGFlZGdlLm51bVJlZ3VsYXJFZGdlcz8xOjApKSwwKTswPT09YSYmZS5zdWNjZXNzb3JzKHQpLmxlbmd0aD4wJiYoYT1lLnN1Y2Nlc3NvcnModCkubGVuZ3RoKSxuW3RdPW8saVt0XT1hLHIrK30pKSxyPDE1KXJldHVybjtsZXQgbz1NYXRoLnJvdW5kKC43NSpyKSxhPU1hdGgucm91bmQoLjI1KnIpLHM9T2JqZWN0LmtleXMobikuc29ydCgoKHQsZSk9Pm5bdF0tbltlXSkpLGw9bltzW29dXSxjPWwrbC1uW3NbYV1dO2M9TWF0aC5tYXgoYyw0KTtmb3IobGV0IGU9ci0xO25bc1tlXV0+YztlLS0pSU50KHQsc1tlXSk7bGV0IHU9T2JqZWN0LmtleXMoaSkuc29ydCgoKHQsZSk9PmlbdF0taVtlXSkpLGg9aVt1W29dXSxkPWgrNCooaC1pW3VbYV1dKTtkPU1hdGgubWF4KGQsNCk7Zm9yKGxldCBuPXItMTtpW3Vbbl1dPmQ7bi0tKXtsZXQgaT1lLm5vZGUodVtuXSk7aSYmIWkuaXNJbkV4dHJhY3QmJlBOdCh0LHVbbl0pfX0pKHQpLChmdW5jdGlvbiBhKHQpe2xldCBlPXQuY29yZUdyYXBoLG49e307d2UuZWFjaChlLmVkZ2VzKCksKHQ9PntlLmVkZ2UodCkubWV0YWVkZ2UubnVtUmVndWxhckVkZ2VzfHwoKG5bdC52XT1uW3Qudl18fFtdKS5wdXNoKHQpLChuW3Qud109blt0LnddfHxbXSkucHVzaCh0KSl9KSksd2UuZWFjaChuLCgodCxuKT0+e3QubGVuZ3RoPjQmJndlLmVhY2godCwodD0+TE50KGUsdC52LHQudykpKX0pKX0pKHQpO2xldCBzPXQuY29yZUdyYXBoO3dlLmVhY2gocy5ub2RlcygpLChlPT57bGV0IG49cy5ub2RlKGUpLGk9cy5uZWlnaGJvcnMoZSkubGVuZ3RoO2lmKG4ubm9kZS5pbmNsdWRlPT09cUl0LlVOU1BFQ0lGSUVEJiYwPT09aSl7bGV0IGk9bi5vdXRBbm5vdGF0aW9ucy5saXN0Lmxlbmd0aD4wLHI9bi5pbkFubm90YXRpb25zLmxpc3QubGVuZ3RoPjA7bi5pc0luRXh0cmFjdD8odC5pc29sYXRlZEluRXh0cmFjdC5wdXNoKG4pLG4ubm9kZS5pbmNsdWRlPXFJdC5FWENMVURFLHMucmVtb3ZlTm9kZShlKSk6bi5pc091dEV4dHJhY3Q/KHQuaXNvbGF0ZWRPdXRFeHRyYWN0LnB1c2gobiksbi5ub2RlLmluY2x1ZGU9cUl0LkVYQ0xVREUscy5yZW1vdmVOb2RlKGUpKTppJiYhcj8obi5pc0luRXh0cmFjdD0hMCx0Lmlzb2xhdGVkSW5FeHRyYWN0LnB1c2gobiksbi5ub2RlLmluY2x1ZGU9cUl0LkVYQ0xVREUscy5yZW1vdmVOb2RlKGUpKTpyJiYhaSYmKG4uaXNPdXRFeHRyYWN0PSEwLHQuaXNvbGF0ZWRPdXRFeHRyYWN0LnB1c2gobiksbi5ub2RlLmluY2x1ZGU9cUl0LkVYQ0xVREUscy5yZW1vdmVOb2RlKGUpKX19KSl9KShuLHRoaXMuYXV0b0V4dHJhY3ROb2Rlcyksd2UuaXNFbXB0eSh0aGlzLmhpZXJhcmNoeS5saWJyYXJ5RnVuY3Rpb25zKXx8dGhpcy5idWlsZFN1YmhpZXJhcmNoaWVzRm9yTmVlZGVkRnVuY3Rpb25zKGkpLHQ9PT1qSXQmJndlLmZvck93bih0aGlzLmhpZXJhcmNoeS5saWJyYXJ5RnVuY3Rpb25zLCgodCxlKT0+e2NvbnN0IGk9dC5ub2RlLG89dGhpcy5nZXRPckNyZWF0ZVJlbmRlck5vZGVCeU5hbWUoaS5uYW1lKTtuLmxpYnJhcnlGdW5jdGlvbnNFeHRyYWN0LnB1c2gobyksby5ub2RlLmluY2x1ZGU9cUl0LkVYQ0xVREUsci5yZW1vdmVOb2RlKGkubmFtZSl9KSk7bGV0IGw9bi5ub2RlLnBhcmVudE5vZGU7aWYoIWwpcmV0dXJuO2xldCBjPXRoaXMuaW5kZXhbbC5uYW1lXSx1PSh0LC4uLmUpPT5lLmNvbmNhdChbdD8iSU4iOiJPVVQiXSkuam9pbigifn4iKSxoPXRoaXMuaGllcmFyY2h5LmdldEJyaWRnZWdyYXBoKHQpLGQ9e2luOnt9LG91dDp7fSxjb250cm9sOnt9fTt3ZS5lYWNoKGguZWRnZXMoKSwodD0+e2xldCBlPSEhaS5ub2RlKHQudyksbj1lP3Qudjp0Lnc7aC5lZGdlKHQpLm51bVJlZ3VsYXJFZGdlcz9lP2Qub3V0W25dPShkLm91dFtuXXx8MCkrMTpkLmluW25dPShkLmluW25dfHwwKSsxOmQuY29udHJvbFtuXT0oZC5jb250cm9sW25dfHwwKSsxfSkpO2xldCBwPXRoaXMuaGllcmFyY2h5LmdldE5vZGVNYXAoKTt3ZS5lYWNoKGguZWRnZXMoKSwobj0+e2xldCBvPWguZWRnZShuKSxhPSEhaS5ub2RlKG4udyksW3MsZl09YT9bbi53LG4udl06W24udixuLnddLG09dGhpcy5pbmRleFtzXSxnPXRoaXMuaW5kZXhbZl0sXz1nP2cubm9kZTpwW2ZdLHk9IW8ubnVtUmVndWxhckVkZ2VzJiZkLmNvbnRyb2xbZl0+NCxbLHZdPWE/W2UuaW5Bbm5vdGF0aW9ucyxtLmluQW5ub3RhdGlvbnNdOltlLm91dEFubm90YXRpb25zLG0ub3V0QW5ub3RhdGlvbnNdLGI9bnVsbCx4PSExO2lmKCEoKGE/ZC5vdXQ6ZC5pbilbZl0+NCkmJiF5JiZtLmlzSW5Db3JlKCkpe2xldCBlPWU9PmMuY29yZUdyYXBoLmVkZ2UoYT97djplLHc6dH06e3Y6dCx3OmV9KTtiPWUoZiksYnx8KGI9ZSh1KGEsZixsLm5hbWUpKSkseD0hIWJ9bGV0IHc9ITE7aWYoYiYmIW8ubnVtUmVndWxhckVkZ2VzKXtsZXQgdD1iLGU9Yy5ub2RlO2Zvcig7dC5hZGpvaW5pbmdNZXRhZWRnZTspdD10LmFkam9pbmluZ01ldGFlZGdlLGU9ZS5wYXJlbnROb2RlO2xldCBuPXRoaXMuaGllcmFyY2h5LmdldFRvcG9sb2dpY2FsT3JkZXJpbmcoZS5uYW1lKSxpPXQubWV0YWVkZ2U7dz1uW2kudl0+bltpLnddfWlmKHg9eCYmIXcsIXgpcmV0dXJuIHZvaWQgdi5wdXNoKG5ldyB4TnQoXyxnLG5ldyBFTnQobyksd050LlNIT1JUQ1VULGEpKTtsZXQgUz11KGEsdCksTT11KGEsZix0KSxFPXIubm9kZShNKTtpZighRSl7bGV0IHQ9ci5ub2RlKFMpO3R8fCh0PW5ldyBNTnQoe25hbWU6Uyx0eXBlOldJdC5CUklER0UsaXNHcm91cE5vZGU6ITEsY2FyZGluYWxpdHk6MCxwYXJlbnROb2RlOm51bGwsc3RhdHM6bnVsbCxpbmNsdWRlOnFJdC5VTlNQRUNJRklFRCxpbmJvdW5kOmEsbm9kZUF0dHJpYnV0ZXM6e319KSx0aGlzLmluZGV4W1NdPXQsci5zZXROb2RlKFMsdCkpLEU9bmV3IE1OdCh7bmFtZTpNLHR5cGU6V0l0LkJSSURHRSxpc0dyb3VwTm9kZTohMSxjYXJkaW5hbGl0eToxLHBhcmVudE5vZGU6bnVsbCxzdGF0czpudWxsLGluY2x1ZGU6cUl0LlVOU1BFQ0lGSUVELGluYm91bmQ6YSxub2RlQXR0cmlidXRlczp7fX0pLHRoaXMuaW5kZXhbTV09RSxyLnNldE5vZGUoTSxFKSxyLnNldFBhcmVudChNLFMpLHQubm9kZS5jYXJkaW5hbGl0eSsrfWxldCBUPW5ldyBFTnQobyk7VC5hZGpvaW5pbmdNZXRhZWRnZT1iLGE/ci5zZXRFZGdlKE0scyxUKTpyLnNldEVkZ2UocyxNLFQpfSkpLHdlLmVhY2goWyEwLCExXSwoZT0+e2xldCBuPXUoZSx0KSxpPXIubm9kZShuKTtpJiZ3ZS5lYWNoKHIubm9kZXMoKSwobz0+e2lmKHIubm9kZShvKS5ub2RlLnR5cGU9PT1XSXQuQlJJREdFKXJldHVybjtpZighKGU/IXIucHJlZGVjZXNzb3JzKG8pLmxlbmd0aDohci5zdWNjZXNzb3JzKG8pLmxlbmd0aCkpcmV0dXJuO2xldCBhPXUoZSx0LCJTVFJVQ1RVUkFMX1RBUkdFVCIpLHM9ci5ub2RlKGEpO3N8fChzPW5ldyBNTnQoe25hbWU6YSx0eXBlOldJdC5CUklER0UsaXNHcm91cE5vZGU6ITEsY2FyZGluYWxpdHk6MSxwYXJlbnROb2RlOm51bGwsc3RhdHM6bnVsbCxpbmNsdWRlOnFJdC5VTlNQRUNJRklFRCxpbmJvdW5kOmUsbm9kZUF0dHJpYnV0ZXM6e319KSxzLnN0cnVjdHVyYWw9ITAsdGhpcy5pbmRleFthXT1zLHIuc2V0Tm9kZShhLHMpLGkubm9kZS5jYXJkaW5hbGl0eSsrLHIuc2V0UGFyZW50KGEsbikpO2xldCBsPW5ldyBFTnQobnVsbCk7bC5zdHJ1Y3R1cmFsPSEwLGwud2VpZ2h0LS0sZT9yLnNldEVkZ2UoYSxvLGwpOnIuc2V0RWRnZShvLGEsbCl9KSl9KSl9YnVpbGRTdWJoaWVyYXJjaGllc0Zvck5lZWRlZEZ1bmN0aW9ucyh0KXt3ZS5lYWNoKHQuZWRnZXMoKSwoZT0+e2xldCBuPXQuZWRnZShlKSxpPW5ldyBFTnQobik7d2UuZm9yRWFjaChpLm1ldGFlZGdlLmJhc2VFZGdlTGlzdCwodD0+e2NvbnN0IGU9dC52LnNwbGl0KFZJdCk7Zm9yKGxldCB0PWUubGVuZ3RoO3Q+PTA7dC0tKXtjb25zdCBuPWUuc2xpY2UoMCx0KSxpPXRoaXMuaGllcmFyY2h5Lm5vZGUobi5qb2luKFZJdCkpO2lmKGkpe2lmKGkudHlwZT09PVdJdC5PUCYmdGhpcy5oaWVyYXJjaHkubGlicmFyeUZ1bmN0aW9uc1tpLm9wXSlmb3IobGV0IHQ9MTt0PG4ubGVuZ3RoO3QrKyl7Y29uc3QgZT1uLnNsaWNlKDAsdCkuam9pbihWSXQpO2UmJnRoaXMuYnVpbGRTdWJoaWVyYXJjaHkoZSl9YnJlYWt9fX0pKX0pKX19Y2xhc3MgeE50e2NvbnN0cnVjdG9yKHQsZSxuLGkscil7dGhpcy5ub2RlPXQsdGhpcy5yZW5kZXJOb2RlSW5mbz1lLHRoaXMucmVuZGVyTWV0YWVkZ2VJbmZvPW4sdGhpcy5hbm5vdGF0aW9uVHlwZT1pLHRoaXMuZHg9MCx0aGlzLmR5PTAsdGhpcy53aWR0aD0wLHRoaXMuaGVpZ2h0PTAsbiYmbi5tZXRhZWRnZSYmKHRoaXMudj1uLm1ldGFlZGdlLnYsdGhpcy53PW4ubWV0YWVkZ2UudyksdGhpcy5pc0luPXIsdGhpcy5wb2ludHM9W119fXZhciB3TnQ7IShmdW5jdGlvbih0KXt0W3QuU0hPUlRDVVQ9MF09IlNIT1JUQ1VUIix0W3QuQ09OU1RBTlQ9MV09IkNPTlNUQU5UIix0W3QuU1VNTUFSWT0yXT0iU1VNTUFSWSIsdFt0LkVMTElQU0lTPTNdPSJFTExJUFNJUyJ9KSh3TnR8fCh3TnQ9e30pKTtjbGFzcyBTTnR7Y29uc3RydWN0b3IoKXt0aGlzLmxpc3Q9W10sdGhpcy5ub2RlTmFtZXM9e319cHVzaCh0KXtpZih0Lm5vZGUubmFtZSBpbiB0aGlzLm5vZGVOYW1lcylyZXR1cm47aWYodGhpcy5ub2RlTmFtZXNbdC5ub2RlLm5hbWVdPSEwLHRoaXMubGlzdC5sZW5ndGg8NSlyZXR1cm4gdm9pZCB0aGlzLmxpc3QucHVzaCh0KTtsZXQgZT10aGlzLmxpc3RbdGhpcy5saXN0Lmxlbmd0aC0xXTtpZihlLmFubm90YXRpb25UeXBlPT09d050LkVMTElQU0lTKXtsZXQgdD1lLm5vZGU7cmV0dXJuIHZvaWQgdC5zZXROdW1Nb3JlTm9kZXMoKyt0Lm51bU1vcmVOb2Rlcyl9bGV0IG49bmV3ICRJdCgxKTt0aGlzLmxpc3QucHVzaChuZXcgeE50KG4sbmV3IE1OdChuKSxudWxsLHdOdC5FTExJUFNJUyx0LmlzSW4pKX19Y2xhc3MgTU50e2NvbnN0cnVjdG9yKHQpe2lmKHRoaXMubm9kZT10LHRoaXMuZXhwYW5kZWQ9ITEsdGhpcy5pbkFubm90YXRpb25zPW5ldyBTTnQsdGhpcy5vdXRBbm5vdGF0aW9ucz1uZXcgU050LHRoaXMueD0wLHRoaXMueT0wLHRoaXMud2lkdGg9MCx0aGlzLmhlaWdodD0wLHRoaXMuaW5ib3hXaWR0aD0wLHRoaXMub3V0Ym94V2lkdGg9MCx0aGlzLmV4Y2x1ZGVkPSExLHRoaXMuc3RydWN0dXJhbD0hMSx0aGlzLmxhYmVsT2Zmc2V0PTAsdGhpcy5yYWRpdXM9MCx0aGlzLmxhYmVsSGVpZ2h0PTAsdGhpcy5wYWRkaW5nVG9wPTAsdGhpcy5wYWRkaW5nTGVmdD0wLHRoaXMucGFkZGluZ1JpZ2h0PTAsdGhpcy5wYWRkaW5nQm90dG9tPTAsdGhpcy5pc0luRXh0cmFjdD0hMSx0aGlzLmlzT3V0RXh0cmFjdD0hMSx0aGlzLmNvcmVCb3g9e3dpZHRoOjAsaGVpZ2h0OjB9LHRoaXMuaXNGYWRlZE91dD0hMSx0aGlzLmRpc3BsYXlOYW1lPXQubmFtZS5zdWJzdHJpbmcodC5uYW1lLmxhc3RJbmRleE9mKFZJdCkrMSksdC50eXBlPT09V0l0Lk1FVEEmJnQuYXNzb2NpYXRlZEZ1bmN0aW9uKXtjb25zdCB0PXRoaXMuZGlzcGxheU5hbWUubWF0Y2godk50KTt0P3RoaXMuZGlzcGxheU5hbWU9dFsxXTp3ZS5zdGFydHNXaXRoKHRoaXMuZGlzcGxheU5hbWUsVUl0KSYmKHRoaXMuZGlzcGxheU5hbWU9dGhpcy5kaXNwbGF5TmFtZS5zdWJzdHJpbmcoVUl0Lmxlbmd0aCkpfX1pc0luQ29yZSgpe3JldHVybiF0aGlzLmlzSW5FeHRyYWN0JiYhdGhpcy5pc091dEV4dHJhY3QmJiF0aGlzLmlzTGlicmFyeUZ1bmN0aW9ufX1jbGFzcyBFTnR7Y29uc3RydWN0b3IodCl7dGhpcy5tZXRhZWRnZT10LHRoaXMuYWRqb2luaW5nTWV0YWVkZ2U9bnVsbCx0aGlzLnN0cnVjdHVyYWw9ITEsdGhpcy53ZWlnaHQ9MSx0aGlzLmlzRmFkZWRPdXQ9ITF9fWZ1bmN0aW9uIFROdCh0LGUsbixpLHIpe2xldCBvPW5ldyB4TnQoZSxuLGksciwhMCk7dC5pbkFubm90YXRpb25zLnB1c2gobyl9ZnVuY3Rpb24gQU50KHQsZSxuLGkscil7bGV0IG89bmV3IHhOdChlLG4saSxyLCExKTt0Lm91dEFubm90YXRpb25zLnB1c2gobyl9Y2xhc3MgQ050IGV4dGVuZHMgTU50e2NvbnN0cnVjdG9yKHQsZSl7c3VwZXIodCk7bGV0IG49dC5tZXRhZ3JhcGguZ3JhcGgoKTt0aGlzLmNvcmVHcmFwaD1zTnQobi5uYW1lLEdJdC5DT1JFLGUpLHRoaXMuaW5FeHRyYWN0Qm94PXt3aWR0aDowLGhlaWdodDowfSx0aGlzLm91dEV4dHJhY3RCb3g9e3dpZHRoOjAsaGVpZ2h0OjB9LHRoaXMubGlicmFyeUZ1bmN0aW9uc0JveD17d2lkdGg6MCxoZWlnaHQ6MH0sdGhpcy5pc29sYXRlZEluRXh0cmFjdD1bXSx0aGlzLmlzb2xhdGVkT3V0RXh0cmFjdD1bXSx0aGlzLmxpYnJhcnlGdW5jdGlvbnNFeHRyYWN0PVtdfX1mdW5jdGlvbiBrTnQodCxlKXt0LmNvcmVHcmFwaCYmKGZ1bmN0aW9uIG4odCxlKXt3ZS5lYWNoKHQubm9kZXMoKSwobj0+e2xldCBpPXQubm9kZShuKTtpZihpLmV4cGFuZGVkPWU+MSxlPjApc3dpdGNoKGkubm9kZS50eXBlKXtjYXNlIFdJdC5NRVRBOmNhc2UgV0l0LlNFUklFUzprTnQoaSxlLTEpfX0pKX0pKHQuY29yZUdyYXBoLGUpfWZ1bmN0aW9uIExOdCh0LGUsbil7bGV0IGk9dC5ub2RlKGUpLHI9dC5ub2RlKG4pLG89dC5lZGdlKGUsbik7KGkubm9kZS5pbmNsdWRlIT09cUl0LklOQ0xVREUmJnIubm9kZS5pbmNsdWRlIT09cUl0LklOQ0xVREV8fGkubm9kZS5pbmNsdWRlPT09cUl0LkVYQ0xVREV8fHIubm9kZS5pbmNsdWRlPT09cUl0LkVYQ0xVREUpJiYoQU50KGksci5ub2RlLHIsbyx3TnQuU0hPUlRDVVQpLFROdChyLGkubm9kZSxpLG8sd050LlNIT1JUQ1VUKSx0LnJlbW92ZUVkZ2UoZSxuKSl9ZnVuY3Rpb24gUE50KHQsZSxuKXtsZXQgaT10LmNvcmVHcmFwaCxyPWkubm9kZShlKTtyLmlzT3V0RXh0cmFjdD0hMCx3ZS5lYWNoKGkucHJlZGVjZXNzb3JzKGUpLCgodCxuKT0+e0xOdChpLHQsZSl9KSksd2UuZWFjaChpLnN1Y2Nlc3NvcnMoZSksKCh0LG4pPT57TE50KGksZSx0KX0pKSwwPT09aS5uZWlnaGJvcnMoZSkubGVuZ3RoJiYoci5ub2RlLmluY2x1ZGU9cUl0LkVYQ0xVREUsdC5pc29sYXRlZE91dEV4dHJhY3QucHVzaChyKSxpLnJlbW92ZU5vZGUoZSkpfWZ1bmN0aW9uIElOdCh0LGUsbil7bGV0IGk9dC5jb3JlR3JhcGgscj1pLm5vZGUoZSk7ci5pc0luRXh0cmFjdD0hMCx3ZS5lYWNoKGkuc3VjY2Vzc29ycyhlKSwoKHQsbik9PntMTnQoaSxlLHQpfSkpLHdlLmVhY2goaS5wcmVkZWNlc3NvcnMoZSksKCh0LG4pPT57TE50KGksdCxlKX0pKSwwPT09aS5uZWlnaGJvcnMoZSkubGVuZ3RoJiYoci5ub2RlLmluY2x1ZGU9cUl0LkVYQ0xVREUsdC5pc29sYXRlZEluRXh0cmFjdC5wdXNoKHIpLGkucmVtb3ZlTm9kZShlKSl9ZnVuY3Rpb24gTk50KHQsZSl7aWYodC50eXBlPT09V0l0Lk9QKXtmb3IobGV0IG49MDtuPGUubGVuZ3RoO24rKylpZih0Lm9wPT09ZVtuXSlyZXR1cm4hMH1lbHNlIGlmKHQudHlwZT09PVdJdC5NRVRBKXtsZXQgbj10LmdldFJvb3RPcCgpO2lmKG4pZm9yKGxldCB0PTA7dDxlLmxlbmd0aDt0KyspaWYobi5vcD09PWVbdF0pcmV0dXJuITB9cmV0dXJuITF9Y29uc3QgT050PXthbmltYXRpb246e2R1cmF0aW9uOjI1MH0sZ3JhcGg6e21ldGE6e25vZGVTZXA6NSxyYW5rU2VwOjI1LGVkZ2VTZXA6NX0sc2VyaWVzOntub2RlU2VwOjUscmFua1NlcDoyNSxlZGdlU2VwOjV9LHBhZGRpbmc6e3BhZGRpbmdUb3A6NDAscGFkZGluZ0xlZnQ6MjB9fSxzdWJzY2VuZTp7bWV0YTp7cGFkZGluZ1RvcDoxMCxwYWRkaW5nQm90dG9tOjEwLHBhZGRpbmdMZWZ0OjEwLHBhZGRpbmdSaWdodDoxMCxsYWJlbEhlaWdodDoyMCxleHRyYWN0WE9mZnNldDoxNSxleHRyYWN0WU9mZnNldDoyMH0sc2VyaWVzOntwYWRkaW5nVG9wOjEwLHBhZGRpbmdCb3R0b206MTAscGFkZGluZ0xlZnQ6MTAscGFkZGluZ1JpZ2h0OjEwLGxhYmVsSGVpZ2h0OjEwfX0sbm9kZVNpemU6e21ldGE6e3JhZGl1czo1LHdpZHRoOjYwLG1heExhYmVsV2lkdGg6NTIsaGVpZ2h0OnpNKCkuZG9tYWluKFsxLDIwMF0pLnJhbmdlKFsxNSw2MF0pLmNsYW1wKCEwKSxleHBhbmRCdXR0b25SYWRpdXM6M30sb3A6e3dpZHRoOjE1LGhlaWdodDo2LHJhZGl1czozLGxhYmVsT2Zmc2V0Oi04LG1heExhYmVsV2lkdGg6MzB9LHNlcmllczp7ZXhwYW5kZWQ6e3JhZGl1czoxMCxsYWJlbE9mZnNldDowfSx2ZXJ0aWNhbDp7d2lkdGg6MTYsaGVpZ2h0OjEzLGxhYmVsT2Zmc2V0Oi0xM30saG9yaXpvbnRhbDp7d2lkdGg6MjQsaGVpZ2h0OjgscmFkaXVzOjEwLGxhYmVsT2Zmc2V0Oi0xMH19LGJyaWRnZTp7d2lkdGg6MjAsaGVpZ2h0OjIwLHJhZGl1czoyLGxhYmVsT2Zmc2V0OjB9fSxzaG9ydGN1dFNpemU6e29wOnt3aWR0aDoxMCxoZWlnaHQ6NH0sbWV0YTp7d2lkdGg6MTIsaGVpZ2h0OjQscmFkaXVzOjF9LHNlcmllczp7d2lkdGg6MTQsaGVpZ2h0OjR9fSxhbm5vdGF0aW9uczp7aW5ib3hXaWR0aDo1MCxvdXRib3hXaWR0aDo1MCx4T2Zmc2V0OjEwLHlPZmZzZXQ6MyxsYWJlbE9mZnNldDoyLG1heExhYmVsV2lkdGg6NDB9LGNvbnN0YW50OntzaXplOnt3aWR0aDo0LGhlaWdodDo0fX0sc2VyaWVzOnttYXhTdGFja0NvdW50OjMscGFyYWxsZWxTdGFja09mZnNldFJhdGlvOi4yLHRvd2VyU3RhY2tPZmZzZXRSYXRpbzouNX0sbWluaW1hcDp7c2l6ZToxNTB9fSxSTnQ9MTQwO2Z1bmN0aW9uIHpOdCh0KXt0Lm5vZGUuaXNHcm91cE5vZGUmJihmdW5jdGlvbiBlKHQpe2xldCBlPXQuY29yZUdyYXBoLm5vZGVzKCkubWFwKChlPT50LmNvcmVHcmFwaC5ub2RlKGUpKSkuY29uY2F0KHQuaXNvbGF0ZWRJbkV4dHJhY3QsdC5pc29sYXRlZE91dEV4dHJhY3QsdC5saWJyYXJ5RnVuY3Rpb25zRXh0cmFjdCk7d2UuZWFjaChlLCh0PT57c3dpdGNoKHQubm9kZS50eXBlKXtjYXNlIFdJdC5PUDp3ZS5leHRlbmQodCxPTnQubm9kZVNpemUub3ApO2JyZWFrO2Nhc2UgV0l0LkJSSURHRTp3ZS5leHRlbmQodCxPTnQubm9kZVNpemUuYnJpZGdlKTticmVhaztjYXNlIFdJdC5NRVRBOnQuZXhwYW5kZWQ/ek50KHQpOih3ZS5leHRlbmQodCxPTnQubm9kZVNpemUubWV0YSksdC5oZWlnaHQ9T050Lm5vZGVTaXplLm1ldGEuaGVpZ2h0KHQubm9kZS5jYXJkaW5hbGl0eSkpO2JyZWFrO2Nhc2UgV0l0LlNFUklFUzp0LmV4cGFuZGVkPyh3ZS5leHRlbmQodCxPTnQubm9kZVNpemUuc2VyaWVzLmV4cGFuZGVkKSx6TnQodCkpOndlLmV4dGVuZCh0LHQubm9kZS5oYXNOb25Db250cm9sRWRnZXM/T050Lm5vZGVTaXplLnNlcmllcy52ZXJ0aWNhbDpPTnQubm9kZVNpemUuc2VyaWVzLmhvcml6b250YWwpO2JyZWFrO2RlZmF1bHQ6dGhyb3cgRXJyb3IoIlVucmVjb2duaXplZCBub2RlIHR5cGU6ICIrdC5ub2RlLnR5cGUpfXQuZXhwYW5kZWR8fChmdW5jdGlvbiBlKHQpe3QuaW5ib3hXaWR0aD10LmluQW5ub3RhdGlvbnMubGlzdC5sZW5ndGg+MD9PTnQuYW5ub3RhdGlvbnMuaW5ib3hXaWR0aDowLHQub3V0Ym94V2lkdGg9dC5vdXRBbm5vdGF0aW9ucy5saXN0Lmxlbmd0aD4wP09OdC5hbm5vdGF0aW9ucy5vdXRib3hXaWR0aDowLHQuY29yZUJveC53aWR0aD10LndpZHRoLHQuY29yZUJveC5oZWlnaHQ9dC5oZWlnaHQsdC53aWR0aD1NYXRoLm1heCh0LmNvcmVCb3gud2lkdGgrdC5pbmJveFdpZHRoK3Qub3V0Ym94V2lkdGgsMyp0LmRpc3BsYXlOYW1lLmxlbmd0aCl9KSh0KSwoZnVuY3Rpb24gbih0KXtpZih0LmV4cGFuZGVkKXJldHVybjtsZXQgZT10LmluQW5ub3RhdGlvbnMubGlzdCxuPXQub3V0QW5ub3RhdGlvbnMubGlzdDt3ZS5lYWNoKGUsKHQ9PkJOdCh0KSkpLHdlLmVhY2gobiwodD0+Qk50KHQpKSk7bGV0IGk9T050LmFubm90YXRpb25zLHI9d2UucmVkdWNlKGUsKChlLG4scik9PntsZXQgbz1yPjA/aS55T2Zmc2V0OjA7cmV0dXJuIG4uZHg9LSh0LmNvcmVCb3gud2lkdGgrbi53aWR0aCkvMi1pLnhPZmZzZXQsbi5keT1lK28rbi5oZWlnaHQvMixlK28rbi5oZWlnaHR9KSwwKTt3ZS5lYWNoKGUsKHQ9Pnt0LmR5LT1yLzIsdC5sYWJlbE9mZnNldD1pLmxhYmVsT2Zmc2V0fSkpO2xldCBvPXdlLnJlZHVjZShuLCgoZSxuLHIpPT57bGV0IG89cj4wP2kueU9mZnNldDowO3JldHVybiBuLmR4PSh0LmNvcmVCb3gud2lkdGgrbi53aWR0aCkvMitpLnhPZmZzZXQsbi5keT1lK28rbi5oZWlnaHQvMixlK28rbi5oZWlnaHR9KSwwKTt3ZS5lYWNoKG4sKHQ9Pnt0LmR5LT1vLzIsdC5sYWJlbE9mZnNldD1pLmxhYmVsT2Zmc2V0fSkpO2xldCBhPU1hdGgubWluKHQuaGVpZ2h0LzItdC5yYWRpdXMsci8yKTthPWE8MD8wOmE7bGV0IHM9ek0oKS5kb21haW4oWzAsZS5sZW5ndGgtMV0pLnJhbmdlKFstYSxhXSk7d2UuZWFjaChlLCgobixpKT0+e24ucG9pbnRzPVt7ZHg6bi5keCtuLndpZHRoLzIsZHk6bi5keX0se2R4Oi10LmNvcmVCb3gud2lkdGgvMixkeTplLmxlbmd0aD4xP3MoaSk6MH1dfSkpO2xldCBsPU1hdGgubWluKHQuaGVpZ2h0LzItdC5yYWRpdXMsby8yKTtsPWw8MD8wOmw7bGV0IGM9ek0oKS5kb21haW4oWzAsbi5sZW5ndGgtMV0pLnJhbmdlKFstbCxsXSk7d2UuZWFjaChuLCgoZSxpKT0+e2UucG9pbnRzPVt7ZHg6dC5jb3JlQm94LndpZHRoLzIsZHk6bi5sZW5ndGg+MT9jKGkpOjB9LHtkeDplLmR4LWUud2lkdGgvMixkeTplLmR5fV19KSksdC5oZWlnaHQ9TWF0aC5tYXgodC5oZWlnaHQscixvKX0pKHQpfSkpfSkodCksdC5ub2RlLnR5cGU9PT1XSXQuTUVUQT8oZnVuY3Rpb24gbih0KXtsZXQgZT1PTnQuc3Vic2NlbmUubWV0YTt3ZS5leHRlbmQodCxlKSx3ZS5leHRlbmQodC5jb3JlQm94LEROdCh0LmNvcmVHcmFwaCxPTnQuZ3JhcGgubWV0YSkpO2xldCBuPXQuaXNvbGF0ZWRJbkV4dHJhY3QubGVuZ3RoP3dlLm1heEJ5KHQuaXNvbGF0ZWRJbkV4dHJhY3QsKHQ9PnQud2lkdGgpKS53aWR0aDpudWxsO3QuaW5FeHRyYWN0Qm94LndpZHRoPW51bGwhPW4/bjowLHQuaW5FeHRyYWN0Qm94LmhlaWdodD13ZS5yZWR1Y2UodC5pc29sYXRlZEluRXh0cmFjdCwoKHQsbixpKT0+e2xldCByPWk+MD9lLmV4dHJhY3RZT2Zmc2V0OjA7cmV0dXJuIG4ueD0wLG4ueT10K3Irbi5oZWlnaHQvMix0K3Irbi5oZWlnaHR9KSwwKTtsZXQgaT10Lmlzb2xhdGVkT3V0RXh0cmFjdC5sZW5ndGg/d2UubWF4QnkodC5pc29sYXRlZE91dEV4dHJhY3QsKHQ9PnQud2lkdGgpKS53aWR0aDpudWxsO3Qub3V0RXh0cmFjdEJveC53aWR0aD1udWxsIT1pP2k6MCx0Lm91dEV4dHJhY3RCb3guaGVpZ2h0PXdlLnJlZHVjZSh0Lmlzb2xhdGVkT3V0RXh0cmFjdCwoKHQsbixpKT0+e2xldCByPWk+MD9lLmV4dHJhY3RZT2Zmc2V0OjA7cmV0dXJuIG4ueD0wLG4ueT10K3Irbi5oZWlnaHQvMix0K3Irbi5oZWlnaHR9KSwwKTtsZXQgcj10LmxpYnJhcnlGdW5jdGlvbnNFeHRyYWN0Lmxlbmd0aD93ZS5tYXhCeSh0LmxpYnJhcnlGdW5jdGlvbnNFeHRyYWN0LCh0PT50LndpZHRoKSkud2lkdGg6bnVsbDt0LmxpYnJhcnlGdW5jdGlvbnNCb3gud2lkdGg9bnVsbCE9cj9yOjAsdC5saWJyYXJ5RnVuY3Rpb25zQm94LmhlaWdodD13ZS5yZWR1Y2UodC5saWJyYXJ5RnVuY3Rpb25zRXh0cmFjdCwoKHQsbixpKT0+e2xldCByPWk+MD9lLmV4dHJhY3RZT2Zmc2V0OjA7cmV0dXJuIG4ueD0wLG4ueT10K3Irbi5oZWlnaHQvMix0K3Irbi5oZWlnaHR9KSwwKTtsZXQgbz0wO3QuaXNvbGF0ZWRJbkV4dHJhY3QubGVuZ3RoPjAmJm8rKyx0Lmlzb2xhdGVkT3V0RXh0cmFjdC5sZW5ndGg+MCYmbysrLHQubGlicmFyeUZ1bmN0aW9uc0V4dHJhY3QubGVuZ3RoPjAmJm8rKyx0LmNvcmVHcmFwaC5ub2RlQ291bnQoKT4wJiZvKys7bGV0IGE9bzw9MT8wOm8qT050LnN1YnNjZW5lLm1ldGEuZXh0cmFjdFhPZmZzZXQ7Y29uc3Qgcz1NYXRoLm1heChSTnQsdC5pbkV4dHJhY3RCb3gud2lkdGgrdC5vdXRFeHRyYWN0Qm94LndpZHRoKTt0LmNvcmVCb3gud2lkdGgrPXMrYSt0LmxpYnJhcnlGdW5jdGlvbnNCb3gud2lkdGgrYSx0LmNvcmVCb3guaGVpZ2h0PWUubGFiZWxIZWlnaHQrTWF0aC5tYXgodC5pbkV4dHJhY3RCb3guaGVpZ2h0LHQuY29yZUJveC5oZWlnaHQsdC5saWJyYXJ5RnVuY3Rpb25zQm94LmhlaWdodCx0Lm91dEV4dHJhY3RCb3guaGVpZ2h0KSx0LndpZHRoPXQuY29yZUJveC53aWR0aCtlLnBhZGRpbmdMZWZ0K2UucGFkZGluZ1JpZ2h0LHQuaGVpZ2h0PXQucGFkZGluZ1RvcCt0LmNvcmVCb3guaGVpZ2h0K3QucGFkZGluZ0JvdHRvbX0pKHQpOnQubm9kZS50eXBlPT09V0l0LlNFUklFUyYmKGZ1bmN0aW9uIGkodCl7bGV0IGU9dC5jb3JlR3JhcGgsbj1PTnQuc3Vic2NlbmUuc2VyaWVzO3dlLmV4dGVuZCh0LG4pLHdlLmV4dGVuZCh0LmNvcmVCb3gsRE50KHQuY29yZUdyYXBoLE9OdC5ncmFwaC5zZXJpZXMpKSx3ZS5lYWNoKGUubm9kZXMoKSwodD0+e2Uubm9kZSh0KS5leGNsdWRlZD0hMX0pKSx0LndpZHRoPXQuY29yZUJveC53aWR0aCtuLnBhZGRpbmdMZWZ0K24ucGFkZGluZ1JpZ2h0LHQuaGVpZ2h0PXQuY29yZUJveC5oZWlnaHQrbi5wYWRkaW5nVG9wK24ucGFkZGluZ0JvdHRvbX0pKHQpfWZ1bmN0aW9uIEROdCh0LGUpe3dlLmV4dGVuZCh0LmdyYXBoKCkse25vZGVzZXA6ZS5ub2RlU2VwLHJhbmtzZXA6ZS5yYW5rU2VwLGVkZ2VzZXA6ZS5lZGdlU2VwfSk7bGV0IG49W107aWYod2UuZWFjaCh0Lm5vZGVzKCksKGU9Pnt0Lm5vZGUoZSkubm9kZS50eXBlPT09V0l0LkJSSURHRXx8bi5wdXNoKGUpfSkpLCFuLmxlbmd0aClyZXR1cm57d2lkdGg6MCxoZWlnaHQ6MH07Z0l0LmxheW91dCh0KTtsZXQgaT0xLzAscj0xLzAsbz0tMS8wLGE9LTEvMDtyZXR1cm4gd2UuZWFjaChuLChlPT57bGV0IG49dC5ub2RlKGUpLHM9LjUqbi53aWR0aCxsPW4ueC1zLGM9bi54K3M7aT1sPGk/bDppLG89Yz5vP2M6bztsZXQgdT0uNSpuLmhlaWdodCxoPW4ueS11LGQ9bi55K3U7cj1oPHI/aDpyLGE9ZD5hP2Q6YX0pKSx3ZS5lYWNoKHQuZWRnZXMoKSwoZT0+e2xldCBuPXQuZWRnZShlKTtpZihuLnN0cnVjdHVyYWwpcmV0dXJuO2xldCBzPXQubm9kZShuLm1ldGFlZGdlLnYpLGw9dC5ub2RlKG4ubWV0YWVkZ2Uudyk7aWYoMz09PW4ucG9pbnRzLmxlbmd0aCYmKGZ1bmN0aW9uIGModCl7bGV0IGU9Rk50KHRbMF0sdFsxXSk7Zm9yKGxldCBuPTE7bjx0Lmxlbmd0aC0xO24rKyl7bGV0IGk9Rk50KHRbbl0sdFtuKzFdKTtpZihNYXRoLmFicyhpLWUpPjEpcmV0dXJuITE7ZT1pfXJldHVybiEwfSkobi5wb2ludHMpKXtpZihudWxsIT1zKXtsZXQgdD1zLmV4cGFuZGVkP3MueDpITnQocyk7bi5wb2ludHNbMF0ueD10fWlmKG51bGwhPWwpe2xldCB0PWwuZXhwYW5kZWQ/bC54OkhOdChsKTtuLnBvaW50c1syXS54PXR9bi5wb2ludHM9W24ucG9pbnRzWzBdLG4ucG9pbnRzWzFdXX1udWxsIT1sJiYobi5wb2ludHNbbi5wb2ludHMubGVuZ3RoLTFdPVZOdChuLnBvaW50c1tuLnBvaW50cy5sZW5ndGgtMl0sbCkpLG51bGwhPXMmJihuLnBvaW50c1swXT1WTnQobi5wb2ludHNbMV0scykpLHdlLmVhY2gobi5wb2ludHMsKHQ9PntpPXQueDxpP3QueDppLG89dC54Pm8/dC54Om8scj10Lnk8cj90Lnk6cixhPXQueT5hP3QueTphfSkpfSkpLHdlLmVhY2godC5ub2RlcygpLChlPT57bGV0IG49dC5ub2RlKGUpO24ueC09aSxuLnktPXJ9KSksd2UuZWFjaCh0LmVkZ2VzKCksKGU9Pnt3ZS5lYWNoKHQuZWRnZShlKS5wb2ludHMsKHQ9Pnt0LngtPWksdC55LT1yfSkpfSkpLHt3aWR0aDpvLWksaGVpZ2h0OmEtcn19ZnVuY3Rpb24gQk50KHQpe3N3aXRjaCh0LmFubm90YXRpb25UeXBlKXtjYXNlIHdOdC5DT05TVEFOVDp3ZS5leHRlbmQodCxPTnQuY29uc3RhbnQuc2l6ZSk7YnJlYWs7Y2FzZSB3TnQuU0hPUlRDVVQ6aWYodC5ub2RlLnR5cGU9PT1XSXQuT1Apd2UuZXh0ZW5kKHQsT050LnNob3J0Y3V0U2l6ZS5vcCk7ZWxzZSBpZih0Lm5vZGUudHlwZT09PVdJdC5NRVRBKXdlLmV4dGVuZCh0LE9OdC5zaG9ydGN1dFNpemUubWV0YSk7ZWxzZXtpZih0Lm5vZGUudHlwZSE9PVdJdC5TRVJJRVMpdGhyb3cgRXJyb3IoIkludmFsaWQgbm9kZSB0eXBlOiAiK3Qubm9kZS50eXBlKTt3ZS5leHRlbmQodCxPTnQuc2hvcnRjdXRTaXplLnNlcmllcyl9YnJlYWs7Y2FzZSB3TnQuU1VNTUFSWTp3ZS5leHRlbmQodCxPTnQuY29uc3RhbnQuc2l6ZSl9fWZ1bmN0aW9uIEhOdCh0KXtyZXR1cm4gdC5leHBhbmRlZD90Lng6dC54LXQud2lkdGgvMisodC5pbkFubm90YXRpb25zLmxpc3QubGVuZ3RoP3QuaW5ib3hXaWR0aDowKSt0LmNvcmVCb3gud2lkdGgvMn1mdW5jdGlvbiBGTnQodCxlKXtyZXR1cm4gMTgwKk1hdGguYXRhbigoZS55LXQueSkvKGUueC10LngpKS9NYXRoLlBJfWZ1bmN0aW9uIFZOdCh0LGUpe2xldCBuLGkscj1lLmV4cGFuZGVkP2UueDpITnQoZSksbz1lLnksYT10LngtcixzPXQueS1vLGw9ZS5leHBhbmRlZD9lLndpZHRoOmUuY29yZUJveC53aWR0aCxjPWUuZXhwYW5kZWQ/ZS5oZWlnaHQ6ZS5jb3JlQm94LmhlaWdodDtyZXR1cm4gTWF0aC5hYnMocykqbC8yPk1hdGguYWJzKGEpKmMvMj8oczwwJiYoYz0tYyksbj0wPT09cz8wOmMvMiphL3MsaT1jLzIpOihhPDAmJihsPS1sKSxuPWwvMixpPTA9PT1hPzA6bC8yKnMvYSkse3g6cituLHk6bytpfX1jb25zdCBqTnQ9U0l0LFVOdD14SXQ7bGV0IEdOdD1be2JhY2tncm91bmRfY29sb3I6IiNDQzJGMkMiLGxhYmVsOiJOYU4ifSx7YmFja2dyb3VuZF9jb2xvcjoiI0ZGOEQwMCIsbGFiZWw6Ii3iiJ4ifSx7YmFja2dyb3VuZF9jb2xvcjoiI0VBRUFFQSIsbGFiZWw6Ii0ifSx7YmFja2dyb3VuZF9jb2xvcjoiI0E1QTVBNSIsbGFiZWw6IjAifSx7YmFja2dyb3VuZF9jb2xvcjoiIzI2MjYyNiIsbGFiZWw6IisifSx7YmFja2dyb3VuZF9jb2xvcjoiIzAwM0VENCIsbGFiZWw6IiviiJ4ifV07ZnVuY3Rpb24gV050KHQsZSxuKXtudWxsIT10LmF0dHIoInRyYW5zZm9ybSIpJiYodD10LnRyYW5zaXRpb24oInBvc2l0aW9uIikpLHQuYXR0cigidHJhbnNmb3JtIiwidHJhbnNsYXRlKCIrZSsiLCIrbisiKSIpfWZ1bmN0aW9uIHFOdCh0LGUsbixpLHIpe3QudHJhbnNpdGlvbigpLmF0dHIoIngiLGUtaS8yKS5hdHRyKCJ5IixuLXIvMikuYXR0cigid2lkdGgiLGkpLmF0dHIoImhlaWdodCIscil9ZnVuY3Rpb24gWU50KHQsZSxuLGkscil7dC50cmFuc2l0aW9uKCkuYXR0cigiY3giLGUpLmF0dHIoImN5IixuKS5hdHRyKCJyeCIsaS8yKS5hdHRyKCJyeSIsci8yKX1mdW5jdGlvbiBYTnQodCxlKXtyZXR1cm4gZT90LnRvRml4ZWQoMCk6TWF0aC5hYnModCk+PTE/dC50b0ZpeGVkKDEpOnQudG9FeHBvbmVudGlhbCgxKX1sZXQgJE50PWNsYXNzIGV4dGVuZHModHIoeWUpKXtjb25zdHJ1Y3Rvcigpe3N1cGVyKC4uLmFyZ3VtZW50cyksdGhpcy5zcGVjaWZpY0hlYWx0aFBpbGxTdGVwPTAsdGhpcy5oZWFsdGhQaWxsRW50cmllcz1HTnR9cmVhZHkoKXtzdXBlci5yZWFkeSgpO3ZhciB0PWRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJtYWluQ29udGFpbmVyIiksZT1kb2N1bWVudC5xdWVyeVNlbGVjdG9yKCJ0Zi1kYXNoYm9hcmQtbGF5b3V0IC5zY3JvbGxiYXIiKTt0JiZlJiYodC5zdHlsZS5vdmVyZmxvdz0iaGlkZGVuIixlLnN0eWxlLm92ZXJmbG93PSJoaWRkZW4iKX1faGVhbHRoUGlsbHNBdmFpbGFibGUodCxlKXtyZXR1cm4gdCYmZX1fY29tcHV0ZVRlbnNvckNvdW50U3RyaW5nKHQsZSl7cmV0dXJuIHQ/dFtlXS50b0ZpeGVkKDApOiIifWdldCBoZWFsdGhQaWxsVmFsdWVzRm9yU2VsZWN0ZWROb2RlKCl7dmFyIHQ9dGhpcy5zZWxlY3RlZE5vZGU7aWYodGhpcy5hcmVIZWFsdGhQaWxsc0xvYWRpbmcpcmV0dXJuIG51bGw7aWYoIXQpcmV0dXJuIG51bGw7Y29uc3QgZT10aGlzLm5vZGVOYW1lc1RvSGVhbHRoUGlsbHNbdF07aWYoIWUpcmV0dXJuIG51bGw7Y29uc3Qgbj1lW3RoaXMuYWxsU3RlcHNNb2RlRW5hYmxlZD8wOnRoaXMuaGVhbHRoUGlsbFN0ZXBJbmRleF07cmV0dXJuIG4/bi52YWx1ZS5zbGljZSgyLDgpOm51bGx9Z2V0IF9jdXJyZW50U3RlcERpc3BsYXlWYWx1ZSgpe3ZhciB0PXRoaXMubm9kZU5hbWVzVG9IZWFsdGhQaWxscyxlPXRoaXMuaGVhbHRoUGlsbFN0ZXBJbmRleCxuPXRoaXMuYXJlSGVhbHRoUGlsbHNMb2FkaW5nO2lmKHRoaXMuYWxsU3RlcHNNb2RlRW5hYmxlZClyZXR1cm4gdGhpcy5zcGVjaWZpY0hlYWx0aFBpbGxTdGVwLnRvRml4ZWQoMCk7aWYobilyZXR1cm4gMDtmb3IobGV0IG4gaW4gdClyZXR1cm4gdFtuXVtlXS5zdGVwLnRvRml4ZWQoMCk7cmV0dXJuIDB9Z2V0IF9iaWdnZXN0U3RlcEV2ZXJTZWVuKCl7dmFyIHQ9dGhpcy5ub2RlTmFtZXNUb0hlYWx0aFBpbGxzO2ZvcihsZXQgbiBpbiB0KXt2YXIgZT10W25dO3JldHVybiBNYXRoLm1heCh0aGlzLl9iaWdnZXN0U3RlcEV2ZXJTZWVuLGVbZS5sZW5ndGgtMV0uc3RlcCl9cmV0dXJuIHRoaXMuX2JpZ2dlc3RTdGVwRXZlclNlZW58fDB9Z2V0IF9tYXhTdGVwSW5kZXgoKXt2YXIgdD10aGlzLm5vZGVOYW1lc1RvSGVhbHRoUGlsbHM7Zm9yKGxldCBlIGluIHQpcmV0dXJuIHRbZV0ubGVuZ3RoLTE7cmV0dXJuIDB9X2hhc0RlYnVnZ2VyTnVtZXJpY0FsZXJ0cyh0KXtyZXR1cm4gdCYmdC5sZW5ndGh9X3VwZGF0ZUFsZXJ0c0xpc3QoKXt2YXIgdD10aGlzLmRlYnVnZ2VyTnVtZXJpY0FsZXJ0cyxlPXRoaXMuJCQoIiNudW1lcmljLWFsZXJ0cy1ib2R5Iik7aWYoZSl7ZS5pbm5lclRleHQ9IiI7Zm9yKHZhciBuPTA7bjx0Lmxlbmd0aDtuKyspe3ZhciBpPXRbbl0scj1kb2N1bWVudC5jcmVhdGVFbGVtZW50KCJ0ciIpLG89ZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgidGQiKTtvLmlubmVyVGV4dD0oZj1pLmZpcnN0X3RpbWVzdGFtcCwobT0rbmV3IERhdGUtK25ldyBEYXRlKGYvMWUzKSk8M2U0PyJqdXN0IG5vdyI6bTw2ZTQ/TWF0aC5mbG9vcihtLzFlMykrIiBzZWNvbmRzIGFnbyI6bTwxMmU0PyJhIG1pbnV0ZSBhZ28iOm08MzZlNT9NYXRoLmZsb29yKG0vNmU0KSsiIG1pbnV0ZXMgYWdvIjoxPT1NYXRoLmZsb29yKG0vMzZlNSk/ImFuIGhvdXIgYWdvIjptPDg2NGU1P01hdGguZmxvb3IobS8zNmU1KSsiIGhvdXJzIGFnbyI6bTwxNzI4ZTU/Inllc3RlcmRheSI6TWF0aC5mbG9vcihtLzg2NGU1KSsiIGRheXMgYWdvIiksby5jbGFzc0xpc3QuYWRkKCJmaXJzdC1vZmZlbnNlLXRkIiksci5hcHBlbmRDaGlsZChvKTt2YXIgYT1kb2N1bWVudC5jcmVhdGVFbGVtZW50KCJ0ZCIpO2EuY2xhc3NMaXN0LmFkZCgidGVuc29yLWRldmljZS10ZCIpO3ZhciBzPWRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoImRpdiIpO3MuY2xhc3NMaXN0LmFkZCgidGVuc29yLXNlY3Rpb24td2l0aGluLXRhYmxlIikscy5pbm5lclRleHQ9aS50ZW5zb3JfbmFtZSx0aGlzLl9hZGRPcEV4cGFuc2lvbkxpc3RlbmVyKHMsaS50ZW5zb3JfbmFtZSksYS5hcHBlbmRDaGlsZChzKTt2YXIgbD1kb2N1bWVudC5jcmVhdGVFbGVtZW50KCJkaXYiKTtsLmNsYXNzTGlzdC5hZGQoImRldmljZS1zZWN0aW9uLXdpdGhpbi10YWJsZSIpLGwuaW5uZXJUZXh0PSIoIitpLmRldmljZV9uYW1lKyIpIixhLmFwcGVuZENoaWxkKGwpLHIuYXBwZW5kQ2hpbGQoYSk7dmFyIGM9ZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgiZGl2Iik7Yy5jbGFzc0xpc3QuYWRkKCJtaW5pLWhlYWx0aC1waWxsIik7dmFyIHU9ZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgidGQiKTtpZih1LmNsYXNzTGlzdC5hZGQoIm1pbmktaGVhbHRoLXBpbGwtdGQiKSx1LmFwcGVuZENoaWxkKGMpLHIuYXBwZW5kQ2hpbGQodSksaS5uZWdfaW5mX2V2ZW50X2NvdW50KXt2YXIgaD1kb2N1bWVudC5jcmVhdGVFbGVtZW50KCJkaXYiKTtoLmNsYXNzTGlzdC5hZGQoIm5lZ2F0aXZlLWluZi1taW5pLWhlYWx0aC1waWxsLXNlY3Rpb24iKSxoLmlubmVyVGV4dD1pLm5lZ19pbmZfZXZlbnRfY291bnQsaC5zZXRBdHRyaWJ1dGUoInRpdGxlIixpLm5lZ19pbmZfZXZlbnRfY291bnQrIiBldmVudHMgd2l0aCAt4oieIiksYy5hcHBlbmRDaGlsZChoKX1pZihpLnBvc19pbmZfZXZlbnRfY291bnQpe3ZhciBkPWRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoImRpdiIpO2QuY2xhc3NMaXN0LmFkZCgicG9zaXRpdmUtaW5mLW1pbmktaGVhbHRoLXBpbGwtc2VjdGlvbiIpLGQuaW5uZXJUZXh0PWkucG9zX2luZl9ldmVudF9jb3VudCxkLnNldEF0dHJpYnV0ZSgidGl0bGUiLGkucG9zX2luZl9ldmVudF9jb3VudCsiIGV2ZW50cyB3aXRoICviiJ4iKSxjLmFwcGVuZENoaWxkKGQpfWlmKGkubmFuX2V2ZW50X2NvdW50KXt2YXIgcD1kb2N1bWVudC5jcmVhdGVFbGVtZW50KCJkaXYiKTtwLmNsYXNzTGlzdC5hZGQoIm5hbi1taW5pLWhlYWx0aC1waWxsLXNlY3Rpb24iKSxwLmlubmVyVGV4dD1pLm5hbl9ldmVudF9jb3VudCxwLnNldEF0dHJpYnV0ZSgidGl0bGUiLGkubmFuX2V2ZW50X2NvdW50KyIgZXZlbnRzIHdpdGggTmFOIiksYy5hcHBlbmRDaGlsZChwKX1xaShlKS5hcHBlbmRDaGlsZChyKX12YXIgZixtfX1fYWRkT3BFeHBhbnNpb25MaXN0ZW5lcih0LGUpe3QuYWRkRXZlbnRMaXN0ZW5lcigiY2xpY2siLCgoKT0+e3ZhciB0LG49KGZ1bmN0aW9uIGkodCxlLG4pe2NvbnN0IGk9bi5zcGxpdCgiLyIpLHI9aVtpLmxlbmd0aC0xXS5tYXRjaCgvKC4qKTpcdysvKTsyPT09ci5sZW5ndGgmJihpW2kubGVuZ3RoLTFdPXJbMV0pO2xldCBvPWlbMF0sYT1lLmdldFJlbmRlck5vZGVCeU5hbWUobyk7Zm9yKGxldCBuPTE7bjxpLmxlbmd0aCYmYS5ub2RlLnR5cGUhPT1XSXQuT1A7bisrKWUuYnVpbGRTdWJoaWVyYXJjaHkobyksYS5leHBhbmRlZD0hMCx0LnNldE5vZGVFeHBhbmRlZChhKSxvKz0iLyIraVtuXSxhPWUuZ2V0UmVuZGVyTm9kZUJ5TmFtZShvKTtyZXR1cm4gYS5ub2RlLm5hbWV9KShkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgic2NlbmUiKSx0aGlzLnJlbmRlckhpZXJhcmNoeSxlKSxyPWRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IoInRmLWdyYXBoLWluZm8jZ3JhcGgtaW5mbyIpO3ImJih0PXIuc2Nyb2xsSGVpZ2h0LXIuc2Nyb2xsVG9wKTt2YXIgbz10aGlzLnNlbGVjdGVkTm9kZTt0aGlzLnNldCgic2VsZWN0ZWROb2RlIixuKTt2YXIgYT0oKT0+e3Iuc2Nyb2xsVG9wPXIuc2Nyb2xsSGVpZ2h0LXR9O3ImJihvP2EoKTp3aW5kb3cuc2V0VGltZW91dChhLDIwKSl9KSl9fTt2YXIgS050OyROdC50ZW1wbGF0ZT1fZWAKICAgIDxzdHlsZT4KICAgICAgOmhvc3QgewogICAgICAgIGZvbnQtc2l6ZTogMTJweDsKICAgICAgICBtYXJnaW46IDA7CiAgICAgICAgcGFkZGluZzogMDsKICAgICAgICBkaXNwbGF5OiBibG9jazsKICAgICAgfQoKICAgICAgaDIgewogICAgICAgIHBhZGRpbmc6IDA7CiAgICAgICAgdGV4dC1hbGlnbjogY2VudGVyOwogICAgICAgIG1hcmdpbjogMDsKICAgICAgfQoKICAgICAgLmhlYWx0aC1waWxsLWxlZ2VuZCB7CiAgICAgICAgcGFkZGluZzogMTVweDsKICAgICAgfQoKICAgICAgLmhlYWx0aC1waWxsLWxlZ2VuZCBoMiB7CiAgICAgICAgdGV4dC1hbGlnbjogbGVmdDsKICAgICAgfQoKICAgICAgLmhlYWx0aC1waWxsLWVudHJ5IHsKICAgICAgICBtYXJnaW46IDEwcHggMTBweCAxMHB4IDA7CiAgICAgIH0KCiAgICAgIC5oZWFsdGgtcGlsbC1lbnRyeSAuY29sb3ItcHJldmlldyB7CiAgICAgICAgd2lkdGg6IDI2cHg7CiAgICAgICAgaGVpZ2h0OiAyNnB4OwogICAgICAgIGJvcmRlci1yYWRpdXM6IDNweDsKICAgICAgICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7CiAgICAgICAgbWFyZ2luOiAwIDEwcHggMCAwOwogICAgICB9CgogICAgICAuaGVhbHRoLXBpbGwtZW50cnkgLmNvbG9yLWxhYmVsLAogICAgICAuaGVhbHRoLXBpbGwtZW50cnkgLnRlbnNvci1jb3VudCB7CiAgICAgICAgY29sb3I6ICM3Nzc7CiAgICAgICAgZGlzcGxheTogaW5saW5lLWJsb2NrOwogICAgICAgIGhlaWdodDogMjZweDsKICAgICAgICBmb250LXNpemU6IDIycHg7CiAgICAgICAgbGluZS1oZWlnaHQ6IDI2cHg7CiAgICAgICAgdmVydGljYWwtYWxpZ246IHRvcDsKICAgICAgfQoKICAgICAgLmhlYWx0aC1waWxsLWVudHJ5IC50ZW5zb3ItY291bnQgewogICAgICAgIGZsb2F0OiByaWdodDsKICAgICAgfQoKICAgICAgI2hlYWx0aC1waWxsLXN0ZXAtc2xpZGVyIHsKICAgICAgICB3aWR0aDogMTAwJTsKICAgICAgICBtYXJnaW46IDAgMCAwIC0xNXB4OwogICAgICAgIC8qIDMxIGNvbWVzIGZyb20gYWRkaW5nIGEgcGFkZGluZyBvZiAxNXB4IGZyb20gYm90aCBzaWRlcyBvZiB0aGUgcGFwZXItc2xpZGVyLCBzdWJ0cmFjdGluZwogICAqIDFweCBzbyB0aGF0IHRoZSBzbGlkZXIgd2lkdGggYWxpZ25zIHdpdGggdGhlIGltYWdlICh0aGUgbGFzdCBzbGlkZXIgbWFya2VyIHRha2VzIHVwIDFweCksCiAgICogYW5kIGFkZGluZyAycHggdG8gYWNjb3VudCBmb3IgYSBib3JkZXIgb2YgMXB4IG9uIGJvdGggc2lkZXMgb2YgdGhlIGltYWdlLiAzMCAtIDEgKyAyLgogICAqIEFwcGFyZW50bHksIHRoZSBwYXBlci1zbGlkZXIgbGFja3MgYSBtaXhpbiBmb3IgdGhvc2UgcGFkZGluZyB2YWx1ZXMuICovCiAgICAgICAgd2lkdGg6IGNhbGMoMTAwJSArIDMxcHgpOwogICAgICB9CgogICAgICAjaGVhbHRoLXBpbGxzLWxvYWRpbmctc3Bpbm5lciB7CiAgICAgICAgd2lkdGg6IDIwcHg7CiAgICAgICAgaGVpZ2h0OiAyMHB4OwogICAgICAgIHZlcnRpY2FsLWFsaWduOiB0b3A7CiAgICAgIH0KCiAgICAgICNoZWFsdGgtcGlsbC1zdGVwLW51bWJlci1pbnB1dCB7CiAgICAgICAgdGV4dC1hbGlnbjogY2VudGVyOwogICAgICAgIHZlcnRpY2FsLWFsaWduOiB0b3A7CiAgICAgIH0KCiAgICAgICNudW1lcmljLWFsZXJ0cy10YWJsZS1jb250YWluZXIgewogICAgICAgIG1heC1oZWlnaHQ6IDQwMHB4OwogICAgICAgIG92ZXJmbG93LXg6IGhpZGRlbjsKICAgICAgICBvdmVyZmxvdy15OiBhdXRvOwogICAgICB9CgogICAgICAjbnVtZXJpYy1hbGVydHMtdGFibGUgewogICAgICAgIHRleHQtYWxpZ246IGxlZnQ7CiAgICAgIH0KCiAgICAgICNudW1lcmljLWFsZXJ0cy10YWJsZSB0ZCB7CiAgICAgICAgdmVydGljYWwtYWxpZ246IHRvcDsKICAgICAgfQoKICAgICAgI251bWVyaWMtYWxlcnRzLXRhYmxlIC5maXJzdC1vZmZlbnNlLXRkIHsKICAgICAgICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7CiAgICAgIH0KCiAgICAgIC5maXJzdC1vZmZlbnNlLXRkIHsKICAgICAgICB3aWR0aDogODBweDsKICAgICAgfQoKICAgICAgLnRlbnNvci1kZXZpY2UtdGQgewogICAgICAgIG1heC13aWR0aDogMTQwcHg7CiAgICAgICAgd29yZC13cmFwOiBicmVhay13b3JkOwogICAgICB9CgogICAgICAudGVuc29yLXNlY3Rpb24td2l0aGluLXRhYmxlIHsKICAgICAgICBjb2xvcjogIzI2NjIzNjsKICAgICAgICBjdXJzb3I6IHBvaW50ZXI7CiAgICAgICAgb3BhY2l0eTogMC44OwogICAgICAgIHRleHQtZGVjb3JhdGlvbjogdW5kZXJsaW5lOwogICAgICB9CgogICAgICAudGVuc29yLXNlY3Rpb24td2l0aGluLXRhYmxlOmhvdmVyIHsKICAgICAgICBvcGFjaXR5OiAxOwogICAgICB9CgogICAgICAuZGV2aWNlLXNlY3Rpb24td2l0aGluLXRhYmxlIHsKICAgICAgICBjb2xvcjogIzY2NjsKICAgICAgfQoKICAgICAgLm1pbmktaGVhbHRoLXBpbGwgewogICAgICAgIHdpZHRoOiAxMzBweDsKICAgICAgfQoKICAgICAgLm1pbmktaGVhbHRoLXBpbGwgPiBkaXYgewogICAgICAgIGhlaWdodDogMTAwJTsKICAgICAgICB3aWR0aDogNjBweDsKICAgICAgICBib3JkZXItcmFkaXVzOiAzcHg7CiAgICAgIH0KCiAgICAgICNldmVudC1jb3VudHMtdGggewogICAgICAgIHBhZGRpbmc6IDAgMCAwIDEwcHg7CiAgICAgIH0KCiAgICAgIC5uZWdhdGl2ZS1pbmYtbWluaS1oZWFsdGgtcGlsbC1zZWN0aW9uIHsKICAgICAgICBiYWNrZ3JvdW5kOiByZ2IoMjU1LCAxNDEsIDApOwogICAgICAgIHdpZHRoOiAyMHB4OwogICAgICB9CgogICAgICAucG9zaXRpdmUtaW5mLW1pbmktaGVhbHRoLXBpbGwtc2VjdGlvbiB7CiAgICAgICAgYmFja2dyb3VuZDogcmdiKDAsIDYyLCAyMTIpOwogICAgICAgIHdpZHRoOiAyMHB4OwogICAgICB9CgogICAgICAubmFuLW1pbmktaGVhbHRoLXBpbGwtc2VjdGlvbiB7CiAgICAgICAgYmFja2dyb3VuZDogcmdiKDIwNCwgNDcsIDQ0KTsKICAgICAgICB3aWR0aDogMjBweDsKICAgICAgfQoKICAgICAgLm5lZ2F0aXZlLWluZi1taW5pLWhlYWx0aC1waWxsLXNlY3Rpb24sCiAgICAgIC5wb3NpdGl2ZS1pbmYtbWluaS1oZWFsdGgtcGlsbC1zZWN0aW9uLAogICAgICAubmFuLW1pbmktaGVhbHRoLXBpbGwtc2VjdGlvbiB7CiAgICAgICAgY29sb3I6ICNmZmY7CiAgICAgICAgZGlzcGxheTogaW5saW5lLWJsb2NrOwogICAgICAgIGhlaWdodDogMTAwJTsKICAgICAgICBsaW5lLWhlaWdodDogMjBweDsKICAgICAgICBtYXJnaW46IDAgMCAwIDEwcHg7CiAgICAgICAgdGV4dC1hbGlnbjogY2VudGVyOwogICAgICB9CgogICAgICAubm8tbnVtZXJpYy1hbGVydHMtbm90aWZpY2F0aW9uIHsKICAgICAgICBtYXJnaW46IDA7CiAgICAgIH0KICAgIDwvc3R5bGU+CiAgICA8cGFwZXItbWF0ZXJpYWwgZWxldmF0aW9uPSIxIiBjbGFzcz0iY2FyZCBoZWFsdGgtcGlsbC1sZWdlbmQiPgogICAgICA8ZGl2IGNsYXNzPSJ0aXRsZSI+CiAgICAgICAgRW5hYmxlIGFsbCAobm90IGp1c3Qgc2FtcGxlZCkgc3RlcHMuIFJlcXVpcmVzIHNsb3cgZGlzayByZWFkLgogICAgICA8L2Rpdj4KICAgICAgPHBhcGVyLXRvZ2dsZS1idXR0b24KICAgICAgICBpZD0iZW5hYmxlQWxsU3RlcHNNb2RlVG9nZ2xlIgogICAgICAgIGNoZWNrZWQ9Int7YWxsU3RlcHNNb2RlRW5hYmxlZH19IgogICAgICA+CiAgICAgIDwvcGFwZXItdG9nZ2xlLWJ1dHRvbj4KICAgICAgPGgyPgogICAgICAgIFN0ZXAgb2YgSGVhbHRoIFBpbGxzOgogICAgICAgIDx0ZW1wbGF0ZSBpcz0iZG9tLWlmIiBpZj0iW1thbGxTdGVwc01vZGVFbmFibGVkXV0iPgogICAgICAgICAgPGlucHV0CiAgICAgICAgICAgIHR5cGU9Im51bWJlciIKICAgICAgICAgICAgaWQ9ImhlYWx0aC1waWxsLXN0ZXAtbnVtYmVyLWlucHV0IgogICAgICAgICAgICBtaW49IjAiCiAgICAgICAgICAgIG1heD0iW1tfYmlnZ2VzdFN0ZXBFdmVyU2Vlbl1dIgogICAgICAgICAgICB2YWx1ZT0ie3tzcGVjaWZpY0hlYWx0aFBpbGxTdGVwOjppbnB1dH19IgogICAgICAgICAgLz4KICAgICAgICA8L3RlbXBsYXRlPgogICAgICAgIDx0ZW1wbGF0ZSBpcz0iZG9tLWlmIiBpZj0iW1shYWxsU3RlcHNNb2RlRW5hYmxlZF1dIj4KICAgICAgICAgIFtbX2N1cnJlbnRTdGVwRGlzcGxheVZhbHVlXV0KICAgICAgICA8L3RlbXBsYXRlPgogICAgICAgIDxwYXBlci1zcGlubmVyLWxpdGUKICAgICAgICAgIGFjdGl2ZQogICAgICAgICAgaGlkZGVuJD0iW1shYXJlSGVhbHRoUGlsbHNMb2FkaW5nXV0iCiAgICAgICAgICBpZD0iaGVhbHRoLXBpbGxzLWxvYWRpbmctc3Bpbm5lciIKICAgICAgICA+PC9wYXBlci1zcGlubmVyLWxpdGU+CiAgICAgIDwvaDI+CiAgICAgIDx0ZW1wbGF0ZSBpcz0iZG9tLWlmIiBpZj0iW1thbGxTdGVwc01vZGVFbmFibGVkXV0iPgogICAgICAgIDxwYXBlci1zbGlkZXIKICAgICAgICAgIGlkPSJoZWFsdGgtcGlsbC1zdGVwLXNsaWRlciIKICAgICAgICAgIGltbWVkaWF0ZS12YWx1ZT0ie3tzcGVjaWZpY0hlYWx0aFBpbGxTdGVwfX0iCiAgICAgICAgICBtYXg9IltbX2JpZ2dlc3RTdGVwRXZlclNlZW5dXSIKICAgICAgICAgIHNuYXBzCiAgICAgICAgICBzdGVwPSIxIgogICAgICAgICAgdmFsdWU9Int7c3BlY2lmaWNIZWFsdGhQaWxsU3RlcH19IgogICAgICAgID48L3BhcGVyLXNsaWRlcj4KICAgICAgPC90ZW1wbGF0ZT4KICAgICAgPHRlbXBsYXRlIGlzPSJkb20taWYiIGlmPSJbWyFhbGxTdGVwc01vZGVFbmFibGVkXV0iPgogICAgICAgIDx0ZW1wbGF0ZSBpcz0iZG9tLWlmIiBpZj0iW1tfbWF4U3RlcEluZGV4XV0iPgogICAgICAgICAgPHBhcGVyLXNsaWRlcgogICAgICAgICAgICBpZD0iaGVhbHRoLXBpbGwtc3RlcC1zbGlkZXIiCiAgICAgICAgICAgIGltbWVkaWF0ZS12YWx1ZT0ie3toZWFsdGhQaWxsU3RlcEluZGV4fX0iCiAgICAgICAgICAgIG1heD0iW1tfbWF4U3RlcEluZGV4XV0iCiAgICAgICAgICAgIHNuYXBzCiAgICAgICAgICAgIHN0ZXA9IjEiCiAgICAgICAgICAgIHZhbHVlPSJ7e2hlYWx0aFBpbGxTdGVwSW5kZXh9fSIKICAgICAgICAgID48L3BhcGVyLXNsaWRlcj4KICAgICAgICA8L3RlbXBsYXRlPgogICAgICA8L3RlbXBsYXRlPgogICAgICA8aDI+CiAgICAgICAgSGVhbHRoIFBpbGwKICAgICAgICA8dGVtcGxhdGUgaXM9ImRvbS1pZiIgaWY9IltbaGVhbHRoUGlsbFZhbHVlc0ZvclNlbGVjdGVkTm9kZV1dIj4KICAgICAgICAgIENvdW50cyBmb3IgU2VsZWN0ZWQgTm9kZQogICAgICAgIDwvdGVtcGxhdGU+CiAgICAgICAgPHRlbXBsYXRlIGlzPSJkb20taWYiIGlmPSJbWyFoZWFsdGhQaWxsVmFsdWVzRm9yU2VsZWN0ZWROb2RlXV0iPgogICAgICAgICAgTGVnZW5kCiAgICAgICAgPC90ZW1wbGF0ZT4KICAgICAgPC9oMj4KICAgICAgPHRlbXBsYXRlIGlzPSJkb20tcmVwZWF0IiBpdGVtcz0iW1toZWFsdGhQaWxsRW50cmllc11dIj4KICAgICAgICA8ZGl2IGNsYXNzPSJoZWFsdGgtcGlsbC1lbnRyeSI+CiAgICAgICAgICA8ZGl2CiAgICAgICAgICAgIGNsYXNzPSJjb2xvci1wcmV2aWV3IgogICAgICAgICAgICBzdHlsZT0iYmFja2dyb3VuZDpbW2l0ZW0uYmFja2dyb3VuZF9jb2xvcl1dIgogICAgICAgICAgPjwvZGl2PgogICAgICAgICAgPGRpdiBjbGFzcz0iY29sb3ItbGFiZWwiPltbaXRlbS5sYWJlbF1dPC9kaXY+CiAgICAgICAgICA8ZGl2IGNsYXNzPSJ0ZW5zb3ItY291bnQiPgogICAgICAgICAgICBbW19jb21wdXRlVGVuc29yQ291bnRTdHJpbmcoaGVhbHRoUGlsbFZhbHVlc0ZvclNlbGVjdGVkTm9kZSwKICAgICAgICAgICAgaW5kZXgpXV0KICAgICAgICAgIDwvZGl2PgogICAgICAgIDwvZGl2PgogICAgICA8L3RlbXBsYXRlPgogICAgICA8ZGl2IGhpZGRlbiQ9IltbIV9oYXNEZWJ1Z2dlck51bWVyaWNBbGVydHMoZGVidWdnZXJOdW1lcmljQWxlcnRzKV1dIj4KICAgICAgICA8aDIgaWQ9Im51bWVyaWMtYWxlcnRzLWhlYWRlciI+TnVtZXJpYyBBbGVydHM8L2gyPgogICAgICAgIDxwPkFsZXJ0cyBhcmUgc29ydGVkIGZyb20gdG9wIHRvIGJvdHRvbSBieSBpbmNyZWFzaW5nIHRpbWVzdGFtcC48L3A+CiAgICAgICAgPGRpdiBpZD0ibnVtZXJpYy1hbGVydHMtdGFibGUtY29udGFpbmVyIj4KICAgICAgICAgIDx0YWJsZSBpZD0ibnVtZXJpYy1hbGVydHMtdGFibGUiPgogICAgICAgICAgICA8dGhlYWQ+CiAgICAgICAgICAgICAgPHRyPgogICAgICAgICAgICAgICAgPHRoPkZpcnN0IE9mZmVuc2U8L3RoPgogICAgICAgICAgICAgICAgPHRoPlRlbnNvciAoRGV2aWNlKTwvdGg+CiAgICAgICAgICAgICAgICA8dGggaWQ9ImV2ZW50LWNvdW50cy10aCI+RXZlbnQgQ291bnRzPC90aD4KICAgICAgICAgICAgICA8L3RyPgogICAgICAgICAgICA8L3RoZWFkPgogICAgICAgICAgICA8dGJvZHkgaWQ9Im51bWVyaWMtYWxlcnRzLWJvZHkiPjwvdGJvZHk+CiAgICAgICAgICA8L3RhYmxlPgogICAgICAgIDwvZGl2PgogICAgICA8L2Rpdj4KICAgICAgPHRlbXBsYXRlCiAgICAgICAgaXM9ImRvbS1pZiIKICAgICAgICBpZj0iW1shX2hhc0RlYnVnZ2VyTnVtZXJpY0FsZXJ0cyhkZWJ1Z2dlck51bWVyaWNBbGVydHMpXV0iCiAgICAgID4KICAgICAgICA8cCBjbGFzcz0ibm8tbnVtZXJpYy1hbGVydHMtbm90aWZpY2F0aW9uIj4KICAgICAgICAgIE5vIG51bWVyaWMgYWxlcnRzIHNvIGZhci4gVGhhdCBpcyBsaWtlbHkgZ29vZC4gQWxlcnRzIGluZGljYXRlIHRoZQogICAgICAgICAgcHJlc2VuY2Ugb2YgTmFOIG9yICgrLy0pIEluZmluaXR5IHZhbHVlcywgd2hpY2ggbWF5IGJlIGNvbmNlcm5pbmcuCiAgICAgICAgPC9wPgogICAgICA8L3RlbXBsYXRlPgogICAgPC9wYXBlci1tYXRlcmlhbD4KICBgLHQoW28oe3R5cGU6T2JqZWN0fSksZSgiZGVzaWduOnR5cGUiLGJOdCldLCROdC5wcm90b3R5cGUsInJlbmRlckhpZXJhcmNoeSIsdm9pZCAwKSx0KFtvKHt0eXBlOkFycmF5LG5vdGlmeTohMH0pLGUoImRlc2lnbjp0eXBlIixPYmplY3QpXSwkTnQucHJvdG90eXBlLCJkZWJ1Z2dlck51bWVyaWNBbGVydHMiLHZvaWQgMCksdChbbyh7dHlwZTpPYmplY3R9KSxlKCJkZXNpZ246dHlwZSIsT2JqZWN0KV0sJE50LnByb3RvdHlwZSwibm9kZU5hbWVzVG9IZWFsdGhQaWxscyIsdm9pZCAwKSx0KFtvKHt0eXBlOk51bWJlcixub3RpZnk6ITB9KSxlKCJkZXNpZ246dHlwZSIsT2JqZWN0KV0sJE50LnByb3RvdHlwZSwiaGVhbHRoUGlsbFN0ZXBJbmRleCIsdm9pZCAwKSx0KFtvKHt0eXBlOk51bWJlcixub3RpZnk6ITB9KSxlKCJkZXNpZ246dHlwZSIsTnVtYmVyKV0sJE50LnByb3RvdHlwZSwic3BlY2lmaWNIZWFsdGhQaWxsU3RlcCIsdm9pZCAwKSx0KFtvKHt0eXBlOlN0cmluZyxub3RpZnk6ITB9KSxlKCJkZXNpZ246dHlwZSIsT2JqZWN0KV0sJE50LnByb3RvdHlwZSwic2VsZWN0ZWROb2RlIix2b2lkIDApLHQoW28oe3R5cGU6U3RyaW5nLG5vdGlmeTohMH0pLGUoImRlc2lnbjp0eXBlIixPYmplY3QpXSwkTnQucHJvdG90eXBlLCJoaWdobGlnaHRlZE5vZGUiLHZvaWQgMCksdChbbyh7dHlwZTpOdW1iZXIsbm90aWZ5OiEwfSksZSgiZGVzaWduOnR5cGUiLE9iamVjdCldLCROdC5wcm90b3R5cGUsInNlbGVjdGVkTm9kZUluY2x1ZGUiLHZvaWQgMCksdChbbyh7dHlwZTpCb29sZWFufSksZSgiZGVzaWduOnR5cGUiLE9iamVjdCldLCROdC5wcm90b3R5cGUsImFyZUhlYWx0aFBpbGxzTG9hZGluZyIsdm9pZCAwKSx0KFtvKHt0eXBlOkFycmF5fSksZSgiZGVzaWduOnR5cGUiLEFycmF5KV0sJE50LnByb3RvdHlwZSwiaGVhbHRoUGlsbEVudHJpZXMiLHZvaWQgMCksdChbbyh7dHlwZTpCb29sZWFuLG5vdGlmeTohMH0pLGUoImRlc2lnbjp0eXBlIixPYmplY3QpXSwkTnQucHJvdG90eXBlLCJhbGxTdGVwc01vZGVFbmFibGVkIix2b2lkIDApLHQoW3MoIm5vZGVOYW1lc1RvSGVhbHRoUGlsbHMiLCJoZWFsdGhQaWxsU3RlcEluZGV4Iiwic2VsZWN0ZWROb2RlIiwiYWxsU3RlcHNNb2RlRW5hYmxlZCIsImFyZUhlYWx0aFBpbGxzTG9hZGluZyIpLGUoImRlc2lnbjp0eXBlIixBcnJheSksZSgiZGVzaWduOnBhcmFtdHlwZXMiLFtdKV0sJE50LnByb3RvdHlwZSwiaGVhbHRoUGlsbFZhbHVlc0ZvclNlbGVjdGVkTm9kZSIsbnVsbCksdChbcygibm9kZU5hbWVzVG9IZWFsdGhQaWxscyIsImhlYWx0aFBpbGxTdGVwSW5kZXgiLCJhbGxTdGVwc01vZGVFbmFibGVkIiwic3BlY2lmaWNIZWFsdGhQaWxsU3RlcCIsImFyZUhlYWx0aFBpbGxzTG9hZGluZyIpLGUoImRlc2lnbjp0eXBlIixPYmplY3QpLGUoImRlc2lnbjpwYXJhbXR5cGVzIixbXSldLCROdC5wcm90b3R5cGUsIl9jdXJyZW50U3RlcERpc3BsYXlWYWx1ZSIsbnVsbCksdChbcygibm9kZU5hbWVzVG9IZWFsdGhQaWxscyIpLGUoImRlc2lnbjp0eXBlIixOdW1iZXIpLGUoImRlc2lnbjpwYXJhbXR5cGVzIixbXSldLCROdC5wcm90b3R5cGUsIl9iaWdnZXN0U3RlcEV2ZXJTZWVuIixudWxsKSx0KFtzKCJub2RlTmFtZXNUb0hlYWx0aFBpbGxzIiksZSgiZGVzaWduOnR5cGUiLE51bWJlciksZSgiZGVzaWduOnBhcmFtdHlwZXMiLFtdKV0sJE50LnByb3RvdHlwZSwiX21heFN0ZXBJbmRleCIsbnVsbCksdChbYSgiZGVidWdnZXJOdW1lcmljQWxlcnRzIiksZSgiZGVzaWduOnR5cGUiLEZ1bmN0aW9uKSxlKCJkZXNpZ246cGFyYW10eXBlcyIsW10pLGUoImRlc2lnbjpyZXR1cm50eXBlIix2b2lkIDApXSwkTnQucHJvdG90eXBlLCJfdXBkYXRlQWxlcnRzTGlzdCIsbnVsbCksJE50PXQoW2koInRmLWdyYXBoLWRlYnVnZ2VyLWRhdGEtY2FyZCIpXSwkTnQpLChmdW5jdGlvbih0KXt0LkNPTlNUPSJDT05TVCIsdC5NRVRBPSJNRVRBIix0Lk9QPSJPUCIsdC5TRVJJRVM9IlNFUklFUyIsdC5TVU1NQVJZPSJTVU1NQVJZIn0pKEtOdHx8KEtOdD17fSkpO2xldCBaTnQ9Y2xhc3MgZXh0ZW5kcyh0cih5ZSkpe2NvbnN0cnVjdG9yKCl7c3VwZXIoLi4uYXJndW1lbnRzKSx0aGlzLnZlcnRpY2FsPSExLHRoaXMuZmlsbE92ZXJyaWRlPW51bGwsdGhpcy5zdHJva2VPdmVycmlkZT1udWxsLHRoaXMuaGVpZ2h0PTIwLHRoaXMuZmFkZWQ9ITF9Z2V0U3ZnRGVmaW5hYmxlRWxlbWVudCgpe3JldHVybiB0aGlzLiQuc3ZnRGVmc31nZXQgX2ZpbGwoKXt2YXIgdD10aGlzLmZpbGxPdmVycmlkZTtpZihudWxsIT10KXJldHVybiB0O3N3aXRjaCh0aGlzLnR5cGUpe2Nhc2UgS050Lk1FVEE6cmV0dXJuIG1OdC5ERUZBVUxUX0ZJTEw7Y2FzZSBLTnQuU0VSSUVTOnJldHVybiJ3aGl0ZSI7ZGVmYXVsdDpyZXR1cm4iI2ZmZmZmZiJ9fWdldCBfc3Ryb2tlKCl7dmFyIHQ9dGhpcy5zdHJva2VPdmVycmlkZTtpZihudWxsIT10KXJldHVybiB0O3N3aXRjaCh0aGlzLnR5cGUpe2Nhc2UgS050Lk1FVEE6cmV0dXJuIG1OdC5ERUZBVUxUX1NUUk9LRTtjYXNlIEtOdC5TRVJJRVM6ZGVmYXVsdDpyZXR1cm4iI2IyYjJiMiJ9fV9pc1R5cGUodCxlKXtyZXR1cm4gdD09PWV9X2ZhZGVkQ2xhc3ModCxlKXtyZXR1cm4gdD8iZmFkZWQtIitlOiIifX07Wk50LnRlbXBsYXRlPV9lYAogICAgPHN0eWxlPgogICAgICA6aG9zdCB7CiAgICAgICAgZm9udC1zaXplOiAwOwogICAgICB9CgogICAgICAuZmFkZWQtcmVjdCB7CiAgICAgICAgZmlsbDogdXJsKCNyZWN0SGF0Y2gpOwogICAgICB9CgogICAgICAuZmFkZWQtZWxsaXBzZSB7CiAgICAgICAgZmlsbDogdXJsKCNlbGxpcHNlSGF0Y2gpOwogICAgICB9CgogICAgICAuZmFkZWQtcmVjdCwKICAgICAgLmZhZGVkLWVsbGlwc2UsCiAgICAgIC5mYWRlZC1zZXJpZXMgewogICAgICAgIHN0cm9rZTogdmFyKC0tdGItZ3JhcGgtZmFkZWQpICFpbXBvcnRhbnQ7CiAgICAgIH0KICAgICAgI3JlY3RIYXRjaCBsaW5lLAogICAgICAjZWxsaXBzZUhhdGNoIGxpbmUgewogICAgICAgIGNvbG9yOiAjZTBkNGIzICFpbXBvcnRhbnQ7CiAgICAgICAgZmlsbDogd2hpdGU7CiAgICAgICAgc3Ryb2tlOiAjZTBkNGIzICFpbXBvcnRhbnQ7CiAgICAgIH0KICAgIDwvc3R5bGU+CiAgICA8IS0tIFNWRyBmb3IgZGVmaW5pdGlvbnMgLS0+CiAgICA8c3ZnIGhlaWdodD0iMCIgd2lkdGg9IjAiIGlkPSJzdmdEZWZzIj4KICAgICAgPGRlZnM+CiAgICAgICAgPCEtLSBIYXRjaCBwYXR0ZXJucyBmb3IgZmFkZWQgb3V0IG5vZGVzLiAtLT4KICAgICAgICA8cGF0dGVybgogICAgICAgICAgaWQ9InJlY3RIYXRjaCIKICAgICAgICAgIHBhdHRlcm5UcmFuc2Zvcm09InJvdGF0ZSg0NSAwIDApIgogICAgICAgICAgd2lkdGg9IjUiCiAgICAgICAgICBoZWlnaHQ9IjUiCiAgICAgICAgICBwYXR0ZXJuVW5pdHM9InVzZXJTcGFjZU9uVXNlIgogICAgICAgID4KICAgICAgICAgIDxsaW5lIHgxPSIwIiB5MT0iMCIgeDI9IjAiIHkyPSI1IiBzdHlsZT0ic3Ryb2tlLXdpZHRoOiAxIj48L2xpbmU+CiAgICAgICAgPC9wYXR0ZXJuPgogICAgICAgIDxwYXR0ZXJuCiAgICAgICAgICBpZD0iZWxsaXBzZUhhdGNoIgogICAgICAgICAgcGF0dGVyblRyYW5zZm9ybT0icm90YXRlKDQ1IDAgMCkiCiAgICAgICAgICB3aWR0aD0iMiIKICAgICAgICAgIGhlaWdodD0iMiIKICAgICAgICAgIHBhdHRlcm5Vbml0cz0idXNlclNwYWNlT25Vc2UiCiAgICAgICAgPgogICAgICAgICAgPGxpbmUgeDE9IjAiIHkxPSIwIiB4Mj0iMCIgeTI9IjIiIHN0eWxlPSJzdHJva2Utd2lkdGg6IDEiPjwvbGluZT4KICAgICAgICA8L3BhdHRlcm4+CiAgICAgICAgPCEtLSBUZW1wbGF0ZSBmb3IgYW4gT3Agbm9kZSBlbGxpcHNlLiAtLT4KICAgICAgICA8ZWxsaXBzZQogICAgICAgICAgaWQ9Im9wLW5vZGUtc3RhbXAiCiAgICAgICAgICByeD0iNy41IgogICAgICAgICAgcnk9IjMiCiAgICAgICAgICBzdHJva2U9ImluaGVyaXQiCiAgICAgICAgICBmaWxsPSJpbmhlcml0IgogICAgICAgID48L2VsbGlwc2U+CiAgICAgICAgPCEtLSBUZW1wbGF0ZSBmb3IgYW4gT3Agbm9kZSBhbm5vdGF0aW9uIGVsbGlwc2UgKHNtYWxsZXIpLiAtLT4KICAgICAgICA8ZWxsaXBzZQogICAgICAgICAgaWQ9Im9wLW5vZGUtYW5ub3RhdGlvbi1zdGFtcCIKICAgICAgICAgIHJ4PSI1IgogICAgICAgICAgcnk9IjIiCiAgICAgICAgICBzdHJva2U9ImluaGVyaXQiCiAgICAgICAgICBmaWxsPSJpbmhlcml0IgogICAgICAgID48L2VsbGlwc2U+CiAgICAgICAgPCEtLSBWZXJ0aWNhbGx5IHN0YWNrZWQgc2VyaWVzIG9mIE9wIG5vZGVzIHdoZW4gdW5leHBhbmRlZC4gLS0+CiAgICAgICAgPGcgaWQ9Im9wLXNlcmllcy12ZXJ0aWNhbC1zdGFtcCI+CiAgICAgICAgICA8dXNlIHhsaW5rOmhyZWY9IiNvcC1ub2RlLXN0YW1wIiB4PSI4IiB5PSI5Ij48L3VzZT4KICAgICAgICAgIDx1c2UgeGxpbms6aHJlZj0iI29wLW5vZGUtc3RhbXAiIHg9IjgiIHk9IjYiPjwvdXNlPgogICAgICAgICAgPHVzZSB4bGluazpocmVmPSIjb3Atbm9kZS1zdGFtcCIgeD0iOCIgeT0iMyI+PC91c2U+CiAgICAgICAgPC9nPgogICAgICAgIDxnIGlkPSJvcC1zZXJpZXMtaG9yaXpvbnRhbC1zdGFtcCI+CiAgICAgICAgICA8dXNlIHhsaW5rOmhyZWY9IiNvcC1ub2RlLXN0YW1wIiB4PSIxNiIgeT0iNCI+PC91c2U+CiAgICAgICAgICA8dXNlIHhsaW5rOmhyZWY9IiNvcC1ub2RlLXN0YW1wIiB4PSIxMiIgeT0iNCI+PC91c2U+CiAgICAgICAgICA8dXNlIHhsaW5rOmhyZWY9IiNvcC1ub2RlLXN0YW1wIiB4PSI4IiB5PSI0Ij48L3VzZT4KICAgICAgICA8L2c+CiAgICAgICAgPGcKICAgICAgICAgIGlkPSJzdW1tYXJ5LWljb24iCiAgICAgICAgICBmaWxsPSIjODQ4NDg0IgogICAgICAgICAgaGVpZ2h0PSIxMiIKICAgICAgICAgIHZpZXdCb3g9IjAgMCAyNCAyNCIKICAgICAgICAgIHdpZHRoPSIxMiIKICAgICAgICA+CiAgICAgICAgICA8cGF0aAogICAgICAgICAgICBkPSJNMTkgM0g1Yy0xLjEgMC0yIC45LTIgMnYxNGMwIDEuMS45IDIgMiAyaDE0YzEuMSAwIDItLjkgMi0yVjVjMC0xLjEtLjktMi0yLTJ6TTkgMTdIN3YtN2gydjd6bTQgMGgtMlY3aDJ2MTB6bTQgMGgtMnYtNGgydjR6IgogICAgICAgICAgPjwvcGF0aD4KICAgICAgICA8L2c+CiAgICAgIDwvZGVmcz4KICAgIDwvc3ZnPgogICAgPHRlbXBsYXRlIGlzPSJkb20taWYiIGlmPSJbW19pc1R5cGUodHlwZSwgJ0NPTlNUJyldXSI+CiAgICAgIDxzdmcKICAgICAgICBoZWlnaHQkPSJbW2hlaWdodF1dIgogICAgICAgIHByZXNlcnZlQXNwZWN0UmF0aW89InhNaW5ZTWlkIG1lZXQiCiAgICAgICAgdmlld0JveD0iMCAwIDEwIDEwIgogICAgICA+CiAgICAgICAgPGNpcmNsZQogICAgICAgICAgY3g9IjUiCiAgICAgICAgICBjeT0iNSIKICAgICAgICAgIHI9IjMiCiAgICAgICAgICBmaWxsJD0iW1tfZmlsbF1dIgogICAgICAgICAgc3Ryb2tlJD0iW1tfc3Ryb2tlXV0iCiAgICAgICAgPjwvY2lyY2xlPgogICAgICA8L3N2Zz4KICAgIDwvdGVtcGxhdGU+CiAgICA8dGVtcGxhdGUgaXM9ImRvbS1pZiIgaWY9IltbX2lzVHlwZSh0eXBlLCAnU1VNTUFSWScpXV0iPgogICAgICA8c3ZnCiAgICAgICAgd2lkdGgkPSJbW2hlaWdodF1dIgogICAgICAgIGhlaWdodCQ9IltbaGVpZ2h0XV0iCiAgICAgICAgdmlld0JveD0iMCAwIDI0IDI0IgogICAgICAgIGZpbGw9IiM4NDg0ODQiCiAgICAgID4KICAgICAgICA8cGF0aAogICAgICAgICAgZD0iTTE5IDNINWMtMS4xIDAtMiAuOS0yIDJ2MTRjMCAxLjEuOSAyIDIgMmgxNGMxLjEgMCAyLS45IDItMlY1YzAtMS4xLS45LTItMi0yek05IDE3SDd2LTdoMnY3em00IDBoLTJWN2gydjEwem00IDBoLTJ2LTRoMnY0eiIKICAgICAgICA+PC9wYXRoPgogICAgICA8L3N2Zz4KICAgIDwvdGVtcGxhdGU+CiAgICA8dGVtcGxhdGUgaXM9ImRvbS1pZiIgaWY9IltbX2lzVHlwZSh0eXBlLCAnT1AnKV1dIj4KICAgICAgPHN2ZwogICAgICAgIGhlaWdodCQ9IltbaGVpZ2h0XV0iCiAgICAgICAgcHJlc2VydmVBc3BlY3RSYXRpbz0ieE1pbllNaWQgbWVldCIKICAgICAgICB2aWV3Qm94PSIwIDAgMTYgOCIKICAgICAgPgogICAgICAgIDx1c2UKICAgICAgICAgIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIgogICAgICAgICAgeGxpbms6aHJlZj0iI29wLW5vZGUtc3RhbXAiCiAgICAgICAgICBmaWxsJD0iW1tfZmlsbF1dIgogICAgICAgICAgc3Ryb2tlJD0iW1tfc3Ryb2tlXV0iCiAgICAgICAgICBjbGFzcyQ9Int7X2ZhZGVkQ2xhc3MoZmFkZWQsICdlbGxpcHNlJyl9fSIKICAgICAgICAgIHg9IjgiCiAgICAgICAgICB5PSI0IgogICAgICAgID48L3VzZT4KICAgICAgPC9zdmc+CiAgICA8L3RlbXBsYXRlPgogICAgPHRlbXBsYXRlIGlzPSJkb20taWYiIGlmPSJbW19pc1R5cGUodHlwZSwgJ01FVEEnKV1dIj4KICAgICAgPHN2ZwogICAgICAgIGhlaWdodCQ9IltbaGVpZ2h0XV0iCiAgICAgICAgcHJlc2VydmVBc3BlY3RSYXRpbz0ieE1pbllNaWQgbWVldCIKICAgICAgICB2aWV3Qm94PSIwIDAgMzcgMTYiCiAgICAgID4KICAgICAgICA8cmVjdAogICAgICAgICAgeD0iMSIKICAgICAgICAgIHk9IjEiCiAgICAgICAgICBmaWxsJD0iW1tfZmlsbF1dIgogICAgICAgICAgc3Ryb2tlJD0iW1tfc3Ryb2tlXV0iCiAgICAgICAgICBjbGFzcyQ9Int7X2ZhZGVkQ2xhc3MoZmFkZWQsICdyZWN0Jyl9fSIKICAgICAgICAgIHN0cm9rZS13aWR0aD0iMnB4IgogICAgICAgICAgaGVpZ2h0PSIxNCIKICAgICAgICAgIHdpZHRoPSIzNSIKICAgICAgICAgIHJ4PSI1IgogICAgICAgICAgcnk9IjUiCiAgICAgICAgPjwvcmVjdD4KICAgICAgPC9zdmc+CiAgICA8L3RlbXBsYXRlPgogICAgPHRlbXBsYXRlIGlzPSJkb20taWYiIGlmPSJbW19pc1R5cGUodHlwZSwgJ1NFUklFUycpXV0iPgogICAgICA8dGVtcGxhdGUgaXM9ImRvbS1pZiIgaWY9IltbdmVydGljYWxdXSI+CiAgICAgICAgPHN2ZwogICAgICAgICAgaGVpZ2h0JD0iW1toZWlnaHRdXSIKICAgICAgICAgIHByZXNlcnZlQXNwZWN0UmF0aW89InhNaW5ZTWlkIG1lZXQiCiAgICAgICAgICB2aWV3Qm94PSIwIDAgMTYgMTUiCiAgICAgICAgPgogICAgICAgICAgPHVzZQogICAgICAgICAgICB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayIKICAgICAgICAgICAgeGxpbms6aHJlZj0iI29wLXNlcmllcy12ZXJ0aWNhbC1zdGFtcCIKICAgICAgICAgICAgZmlsbCQ9IltbX2ZpbGxdXSIKICAgICAgICAgICAgc3Ryb2tlJD0iW1tfc3Ryb2tlXV0iCiAgICAgICAgICAgIGNsYXNzJD0ie3tfZmFkZWRDbGFzcyhmYWRlZCwgJ3NlcmllcycpfX0iCiAgICAgICAgICAgIHg9IjAiCiAgICAgICAgICAgIHk9IjIiCiAgICAgICAgICA+PC91c2U+CiAgICAgICAgPC9zdmc+CiAgICAgIDwvdGVtcGxhdGU+CiAgICAgIDx0ZW1wbGF0ZSBpcz0iZG9tLWlmIiBpZj0iW1shdmVydGljYWxdXSI+CiAgICAgICAgPHN2ZwogICAgICAgICAgaGVpZ2h0JD0iW1toZWlnaHRdXSIKICAgICAgICAgIHByZXNlcnZlQXNwZWN0UmF0aW89InhNaW5ZTWlkIG1lZXQiCiAgICAgICAgICB2aWV3Qm94PSIwIDAgMjQgMTAiCiAgICAgICAgPgogICAgICAgICAgPHVzZQogICAgICAgICAgICB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayIKICAgICAgICAgICAgeGxpbms6aHJlZj0iI29wLXNlcmllcy1ob3Jpem9udGFsLXN0YW1wIgogICAgICAgICAgICBmaWxsJD0iW1tfZmlsbF1dIgogICAgICAgICAgICBzdHJva2UkPSJbW19zdHJva2VdXSIKICAgICAgICAgICAgY2xhc3MkPSJ7e19mYWRlZENsYXNzKGZhZGVkLCAnc2VyaWVzJyl9fSIKICAgICAgICAgICAgeD0iMCIKICAgICAgICAgICAgeT0iMSIKICAgICAgICAgID48L3VzZT4KICAgICAgICA8L3N2Zz4KICAgICAgPC90ZW1wbGF0ZT4KICAgIDwvdGVtcGxhdGU+CiAgYCx0KFtvKHt0eXBlOlN0cmluZ30pLGUoImRlc2lnbjp0eXBlIixTdHJpbmcpXSxaTnQucHJvdG90eXBlLCJ0eXBlIix2b2lkIDApLHQoW28oe3R5cGU6Qm9vbGVhbn0pLGUoImRlc2lnbjp0eXBlIixCb29sZWFuKV0sWk50LnByb3RvdHlwZSwidmVydGljYWwiLHZvaWQgMCksdChbbyh7dHlwZTpTdHJpbmd9KSxlKCJkZXNpZ246dHlwZSIsU3RyaW5nKV0sWk50LnByb3RvdHlwZSwiZmlsbE92ZXJyaWRlIix2b2lkIDApLHQoW28oe3R5cGU6U3RyaW5nfSksZSgiZGVzaWduOnR5cGUiLFN0cmluZyldLFpOdC5wcm90b3R5cGUsInN0cm9rZU92ZXJyaWRlIix2b2lkIDApLHQoW28oe3R5cGU6TnVtYmVyfSksZSgiZGVzaWduOnR5cGUiLE51bWJlcildLFpOdC5wcm90b3R5cGUsImhlaWdodCIsdm9pZCAwKSx0KFtvKHt0eXBlOkJvb2xlYW59KSxlKCJkZXNpZ246dHlwZSIsQm9vbGVhbildLFpOdC5wcm90b3R5cGUsImZhZGVkIix2b2lkIDApLHQoW3MoInR5cGUiLCJmaWxsT3ZlcnJpZGUiKSxlKCJkZXNpZ246dHlwZSIsU3RyaW5nKSxlKCJkZXNpZ246cGFyYW10eXBlcyIsW10pXSxaTnQucHJvdG90eXBlLCJfZmlsbCIsbnVsbCksdChbcygidHlwZSIsInN0cm9rZU92ZXJyaWRlIiksZSgiZGVzaWduOnR5cGUiLFN0cmluZyksZSgiZGVzaWduOnBhcmFtdHlwZXMiLFtdKV0sWk50LnByb3RvdHlwZSwiX3N0cm9rZSIsbnVsbCksWk50PXQoW2koInRmLWdyYXBoLWljb24iKV0sWk50KTt2YXIgSk50PU9iamVjdC5mcmVlemUoe19fcHJvdG9fXzpudWxsLGdldCBHcmFwaEljb25UeXBlKCl7cmV0dXJuIEtOdH19KTtmdW5jdGlvbiBRTnQodCxlKXtjb25zdCBuPXQuZ2V0Q29udGV4dE1lbnUoKSxpPVN1KHQuZ2V0Q29udGV4dE1lbnUoKSk7cmV0dXJuIGZ1bmN0aW9uKHIsbyl7bGV0IGE9dXU7Y29uc3Qgcz0oZnVuY3Rpb24gbCh0KXtsZXQgZT0wLG49MCxpPXQ7Zm9yKDtpJiZpLm9mZnNldExlZnQ+PTAmJmkub2Zmc2V0VG9wPj0wOyllKz1pLm9mZnNldExlZnQtaS5zY3JvbGxMZWZ0LG4rPWkub2Zmc2V0VG9wLWkuc2Nyb2xsVG9wLGk9aS5vZmZzZXRQYXJlbnQ7cmV0dXJue2xlZnQ6ZSx0b3A6bn19KSh0KTtmdW5jdGlvbiBjKHQpe3QmJnQuY29tcG9zZWRQYXRoKCkuaW5jbHVkZXMobil8fChpLnN0eWxlKCJkaXNwbGF5Iiwibm9uZSIpLGRvY3VtZW50LmJvZHkucmVtb3ZlRXZlbnRMaXN0ZW5lcigibW91c2Vkb3duIixjLHtjYXB0dXJlOiEwfSkpfWkuc3R5bGUoImRpc3BsYXkiLCJibG9jayIpLnN0eWxlKCJsZWZ0IixhLmNsaWVudFgtcy5sZWZ0KzErInB4Iikuc3R5bGUoInRvcCIsYS5jbGllbnRZLXMudG9wKzErInB4IiksYS5wcmV2ZW50RGVmYXVsdCgpLGEuc3RvcFByb3BhZ2F0aW9uKCksZG9jdW1lbnQuYm9keS5hZGRFdmVudExpc3RlbmVyKCJtb3VzZWRvd24iLGMse2NhcHR1cmU6ITB9KSxpLmh0bWwoIiIpLGkuYXBwZW5kKCJ1bCIpLnNlbGVjdEFsbCgibGkiKS5kYXRhKGUpLmVudGVyKCkuYXBwZW5kKCJsaSIpLm9uKCJjbGljayIsKCh0LGUpPT57dC5hY3Rpb24odGhpcyxyLG8pLGMoKX0pKS5odG1sKChmdW5jdGlvbih0KXtyZXR1cm4gdC50aXRsZShyKX0pKX19bGV0IHRPdD1lRSgpLmRvbWFpbihbVEl0LDEyXSkucmFuZ2UoWyJzbWFsbCIsIm1lZGl1bSIsImxhcmdlIiwieGxhcmdlIl0pO2Z1bmN0aW9uIGVPdCh0KXtyZXR1cm4gdC52KyItLSIrdC53fWZ1bmN0aW9uIG5PdCh0LGUpe2xldCBuPWUuZ2V0Tm9kZUJ5TmFtZSh0LnYpO2lmKG51bGw9PW4ub3V0cHV0U2hhcGVzfHx3ZS5pc0VtcHR5KG4ub3V0cHV0U2hhcGVzKSlyZXR1cm4gbnVsbDtsZXQgaT1uLm91dHB1dFNoYXBlc1t0Lm91dHB1dFRlbnNvcktleV07cmV0dXJuIG51bGw9PWk/bnVsbDowPT09aS5sZW5ndGg/InNjYWxhciI6aS5tYXAoKHQ9Pi0xPT09dD8iPyI6dCkpLmpvaW4oIsOXIil9ZnVuY3Rpb24gaU90KHQsZSl7cmV0dXJuIGUuZWRnZUxhYmVsRnVuY3Rpb24/ZS5lZGdlTGFiZWxGdW5jdGlvbih0LGUpOnQuYmFzZUVkZ2VMaXN0Lmxlbmd0aD4xP3QuYmFzZUVkZ2VMaXN0Lmxlbmd0aCsiIHRlbnNvcnMiOm5PdCh0LmJhc2VFZGdlTGlzdFswXSxlKX1mdW5jdGlvbiByT3QodCxlLG4pe2NvbnN0IGk9ZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKHdJdCwicGF0aCIpO2ZvcihsZXQgcj0xO3I8dC5sZW5ndGg7cisrKWlmKGkuc2V0QXR0cmlidXRlKCJkIixuKHQuc2xpY2UoMCxyKSkpLGkuZ2V0VG90YWxMZW5ndGgoKT5lKXJldHVybiByLTE7cmV0dXJuIHQubGVuZ3RoLTF9ZnVuY3Rpb24gb090KHQsZSxuKXtsZXQgaT1WaygpLngoKHQ9PnQueCkpLnkoKHQ9PnQueSkpLHI9U3UoZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIsInBhdGgiKSkuYXR0cigiZCIsaSh0KSksbz0rZS5hdHRyKCJtYXJrZXJXaWR0aCIpLGE9ZS5hdHRyKCJ2aWV3Qm94Iikuc3BsaXQoIiAiKS5tYXAoTnVtYmVyKSxzPWFbMl0tYVswXSxsPStlLmF0dHIoInJlZlgiKSxjPXIubm9kZSgpO2lmKG4pe2NvbnN0IGU9byooMS1sL3MpLG49Yy5nZXRQb2ludEF0TGVuZ3RoKGUpLHI9ck90KHQsZSxpKTtyZXR1cm4gdFtyLTFdPXt4Om4ueCx5Om4ueX0sdC5zbGljZShyLTEpfXtjb25zdCBlPTEtbC9zLG49Yy5nZXRUb3RhbExlbmd0aCgpLW8qZSxyPWMuZ2V0UG9pbnRBdExlbmd0aChuKSxhPXJPdCh0LG4saSk7cmV0dXJuIHRbYV09e3g6ci54LHk6ci55fSx0LnNsaWNlKDAsYSsxKX19ZnVuY3Rpb24gYU90KHQsZSxuLGkpe2k9aXx8eEl0LkVkZ2UuTElORSxlLmxhYmVsJiZlLmxhYmVsLnN0cnVjdHVyYWwmJihpKz0iICIreEl0LkVkZ2UuU1RSVUNUVVJBTCksZS5sYWJlbCYmZS5sYWJlbC5tZXRhZWRnZSYmZS5sYWJlbC5tZXRhZWRnZS5udW1SZWZFZGdlcyYmKGkrPSIgIit4SXQuRWRnZS5SRUZFUkVOQ0VfRURHRSksbi5oYW5kbGVFZGdlU2VsZWN0ZWQmJihpKz0iICIreEl0LkVkZ2UuU0VMRUNUQUJMRSk7bGV0IHIsbz0icGF0aF8iK2VPdChlKTtpZihuLnJlbmRlckhpZXJhcmNoeS5lZGdlV2lkdGhGdW5jdGlvbilyPW4ucmVuZGVySGllcmFyY2h5LmVkZ2VXaWR0aEZ1bmN0aW9uKGUsaSk7ZWxzZXtsZXQgdD0xO251bGwhPWUubGFiZWwmJm51bGwhPWUubGFiZWwubWV0YWVkZ2UmJih0PWUubGFiZWwubWV0YWVkZ2UudG90YWxTaXplKSxyPW4ucmVuZGVySGllcmFyY2h5LmVkZ2VXaWR0aFNpemVkQmFzZWRTY2FsZSh0KX1sZXQgYT10LmFwcGVuZCgicGF0aCIpLmF0dHIoImlkIixvKS5hdHRyKCJjbGFzcyIsaSkuc3R5bGUoInN0cm9rZS13aWR0aCIscisicHgiKTtpZihlLmxhYmVsJiZlLmxhYmVsLm1ldGFlZGdlKWlmKGUubGFiZWwubWV0YWVkZ2UubnVtUmVmRWRnZXMpe2NvbnN0IHQ9YHJlZmVyZW5jZS1hcnJvd2hlYWQtJHt0T3Qocil9YDthLnN0eWxlKCJtYXJrZXItc3RhcnQiLGB1cmwoIyR7dH0pYCksZS5sYWJlbC5zdGFydE1hcmtlcklkPXR9ZWxzZXtjb25zdCB0PWBkYXRhZmxvdy1hcnJvd2hlYWQtJHt0T3Qocil9YDthLnN0eWxlKCJtYXJrZXItZW5kIixgdXJsKCMke3R9KWApLGUubGFiZWwuZW5kTWFya2VySWQ9dH1pZihudWxsPT1lLmxhYmVsfHxudWxsPT1lLmxhYmVsLm1ldGFlZGdlKXJldHVybjtsZXQgcz1pT3QoZS5sYWJlbC5tZXRhZWRnZSxuLnJlbmRlckhpZXJhcmNoeSk7bnVsbCE9cyYmdC5hcHBlbmQoInRleHQiKS5hcHBlbmQoInRleHRQYXRoIikuYXR0cigieGxpbms6aHJlZiIsIiMiK28pLmF0dHIoInN0YXJ0T2Zmc2V0IiwiNTAlIikuYXR0cigidGV4dC1hbmNob3IiLCJtaWRkbGUiKS5hdHRyKCJkb21pbmFudC1iYXNlbGluZSIsImNlbnRyYWwiKS50ZXh0KHMpfWxldCBzT3Q9VmsoKS5jdXJ2ZShUTCkueCgodD0+dC54KSkueSgodD0+dC55KSk7dmFyIGxPdDtmdW5jdGlvbiBjT3QodCxlLG4pe2xldCBpPU1JdCh0LCJnIix4SXQuTm9kZS5DT05UQUlORVIpLnNlbGVjdEFsbCgoZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5jaGlsZE5vZGVzfSkpLmRhdGEoZSwodD0+dC5ub2RlLm5hbWUrIjoiK3Qubm9kZS50eXBlKSk7cmV0dXJuIGkuZW50ZXIoKS5hcHBlbmQoImciKS5hdHRyKCJkYXRhLW5hbWUiLCh0PT50Lm5vZGUubmFtZSkpLmVhY2goKGZ1bmN0aW9uKHQpe2xldCBlPVN1KHRoaXMpO24uYWRkTm9kZUdyb3VwKHQubm9kZS5uYW1lLGUpfSkpLm1lcmdlKGkpLmF0dHIoImNsYXNzIiwodD0+eEl0Lk5vZGUuR1JPVVArIiAiK2JPdCh0KSkpLmVhY2goKGZ1bmN0aW9uKHQpe2xldCBlPVN1KHRoaXMpO0xPdChNSXQoZSwiZyIseEl0LkFubm90YXRpb24uSU5CT1gpLHQuaW5Bbm5vdGF0aW9ucyx0LG4pLExPdChNSXQoZSwiZyIseEl0LkFubm90YXRpb24uT1VUQk9YKSx0Lm91dEFubm90YXRpb25zLHQsbik7bGV0IGk9dk90KGUsdCx4SXQuTm9kZS5TSEFQRSk7dC5ub2RlLmlzR3JvdXBOb2RlJiYoZnVuY3Rpb24gcih0LGUsbil7bGV0IGk9TUl0KHQsImciLHhJdC5Ob2RlLkJVVFRPTl9DT05UQUlORVIpO01JdChpLCJjaXJjbGUiLHhJdC5Ob2RlLkJVVFRPTl9DSVJDTEUpLE1JdChpLCJwYXRoIix4SXQuTm9kZS5FWFBBTkRfQlVUVE9OKS5hdHRyKCJkIiwiTTAsLTIuMiBWMi4yIE0tMi4yLDAgSDIuMiIpLE1JdChpLCJwYXRoIix4SXQuTm9kZS5DT0xMQVBTRV9CVVRUT04pLmF0dHIoImQiLCJNLTIuMiwwIEgyLjIiKSxpLm9uKCJjbGljayIsKHQ9Pnt1dS5zdG9wUHJvcGFnYXRpb24oKSxuLmZpcmUoIm5vZGUtdG9nZ2xlLWV4cGFuZCIse25hbWU6dC5ub2RlLm5hbWV9KX0pKSwoZnVuY3Rpb24gcih0LGUpe2xldCBuPUhOdChlKSsoZS5leHBhbmRlZD9lLndpZHRoOmUuY29yZUJveC53aWR0aCkvMi02LGk9ZS55LShlLmV4cGFuZGVkP2UuaGVpZ2h0OmUuY29yZUJveC5oZWlnaHQpLzIrNjtlLm5vZGUudHlwZSE9PVdJdC5TRVJJRVN8fGUuZXhwYW5kZWR8fChuKz0xMCxpLT0yKTtsZXQgcj0idHJhbnNsYXRlKCIrbisiLCIraSsiKSI7dC5zZWxlY3RBbGwoInBhdGgiKS50cmFuc2l0aW9uKCkuYXR0cigidHJhbnNmb3JtIixyKSx0LnNlbGVjdCgiY2lyY2xlIikudHJhbnNpdGlvbigpLmF0dHIoe2N4Om4sY3k6aSxyOk9OdC5ub2RlU2l6ZS5tZXRhLmV4cGFuZEJ1dHRvblJhZGl1c30pfSkoaSxlKX0pKGksdCxuKSxoT3QoaSx0LG4pLChmdW5jdGlvbiBvKHQsZSxuKXtpZihlLm5vZGUuaXNHcm91cE5vZGUpe2lmKGUuZXhwYW5kZWQpcmV0dXJuIElPdCh0LGUsbix4SXQuU3Vic2NlbmUuR1JPVVApO2pOdCh0LCJnIix4SXQuU3Vic2NlbmUuR1JPVVApLnJlbW92ZSgpfX0pKGUsdCxuKSxoT3QoKGZ1bmN0aW9uIGEodCxlLG4pe2xldCBpPWUuZGlzcGxheU5hbWUscj1lLm5vZGUudHlwZT09PVdJdC5NRVRBJiYhZS5leHBhbmRlZCxvPU1JdCh0LCJ0ZXh0Iix4SXQuTm9kZS5MQUJFTCksYT1vLm5vZGUoKTthLnBhcmVudE5vZGUuYXBwZW5kQ2hpbGQoYSksby5hdHRyKCJkeSIsIi4zNWVtIikuYXR0cigidGV4dC1hbmNob3IiLCJtaWRkbGUiKTtsZXQgcz04O3N3aXRjaChlLm5vZGUudHlwZSl7Y2FzZSBXSXQuTUVUQTpzPWUuZXhwYW5kZWQ/OTo4O2JyZWFrO2Nhc2UgV0l0Lk9QOnM9Nn1pZihyKXtpLmxlbmd0aD5uLm1heE1ldGFub2RlTGFiZWxMZW5ndGgmJihpPWkuc3Vic3RyKDAsbi5tYXhNZXRhbm9kZUxhYmVsTGVuZ3RoLTIpKyLigKYiKTtsZXQgdD0oZnVuY3Rpb24gbCh0KXtyZXR1cm4gX090fHwoX090PXpNKCkuZG9tYWluKFt0Lm1heE1ldGFub2RlTGFiZWxMZW5ndGhMYXJnZUZvbnQsdC5tYXhNZXRhbm9kZUxhYmVsTGVuZ3RoXSkucmFuZ2UoW3QubWF4TWV0YW5vZGVMYWJlbExlbmd0aEZvbnRTaXplLHQubWluTWV0YW5vZGVMYWJlbExlbmd0aEZvbnRTaXplXSkuY2xhbXAoITApKSxfT3R9KShuKTtvLmF0dHIoImZvbnQtc2l6ZSIsdChpLmxlbmd0aCkrInB4Iikscz10KGkubGVuZ3RoKX1yZXR1cm4gZ090KG8udGV4dChpKSxlLm5vZGUudHlwZSxzLGUpLG99KShlLHQsbiksdCxuLHQubm9kZS50eXBlPT09V0l0Lk1FVEEpLE1PdChlLHQsbiksKGZ1bmN0aW9uIHModCxlKXtsZXQgbj1qTnQodCwiZyIseEl0Lk5vZGUuU0hBUEUpLGk9SE50KGUpO3N3aXRjaChlLm5vZGUudHlwZSl7Y2FzZSBXSXQuT1A6e2NvbnN0IHI9ZS5ub2RlO3dlLmlzTnVtYmVyKHIuZnVuY3Rpb25JbnB1dEluZGV4KXx8d2UuaXNOdW1iZXIoci5mdW5jdGlvbk91dHB1dEluZGV4KT8oZnVuY3Rpb24gcih0LGUsbixpLG8pe2NvbnN0IGE9by8yLHM9aS8yLGw9W1tlLG4tYV0sW2UrcyxuK2FdLFtlLXMsbithXV07dC50cmFuc2l0aW9uKCkuYXR0cigicG9pbnRzIixsLm1hcCgodD0+dC5qb2luKCIsIikpKS5qb2luKCIgIikpfSkoak50KG4sInBvbHlnb24iKSxlLngsZS55LGUuY29yZUJveC53aWR0aCxlLmNvcmVCb3guaGVpZ2h0KTpZTnQoak50KG4sImVsbGlwc2UiKSxpLGUueSxlLmNvcmVCb3gud2lkdGgsZS5jb3JlQm94LmhlaWdodCkseU90KHQsaSxlLnksZS5sYWJlbE9mZnNldCk7YnJlYWt9Y2FzZSBXSXQuTUVUQTp7bGV0IHI9bi5zZWxlY3RBbGwoInJlY3QiKTtlLmV4cGFuZGVkPyhxTnQocixlLngsZS55LGUud2lkdGgsZS5oZWlnaHQpLHVPdCh0LGUpLHlPdCh0LGksZS55LC1lLmhlaWdodC8yK2UubGFiZWxIZWlnaHQvMikpOihxTnQocixpLGUueSxlLmNvcmVCb3gud2lkdGgsZS5jb3JlQm94LmhlaWdodCkseU90KHQsaSxlLnksMCkpO2JyZWFrfWNhc2UgV0l0LlNFUklFUzp7bGV0IHI9ak50KG4sInVzZSIpO2UuZXhwYW5kZWQ/KHFOdChyLGUueCxlLnksZS53aWR0aCxlLmhlaWdodCksdU90KHQsZSkseU90KHQsaSxlLnksLWUuaGVpZ2h0LzIrZS5sYWJlbEhlaWdodC8yKSk6KHFOdChyLGksZS55LGUuY29yZUJveC53aWR0aCxlLmNvcmVCb3guaGVpZ2h0KSx5T3QodCxpLGUueSxlLmxhYmVsT2Zmc2V0KSk7YnJlYWt9Y2FzZSBXSXQuQlJJREdFOnFOdChqTnQobiwicmVjdCIpLGUueCxlLnksZS53aWR0aCxlLmhlaWdodCk7YnJlYWs7ZGVmYXVsdDp0aHJvdyBFcnJvcigiVW5yZWNvZ25pemVkIG5vZGUgdHlwZTogIitlLm5vZGUudHlwZSl9fSkoZSx0KX0pKSxpLmV4aXQoKS5lYWNoKChmdW5jdGlvbih0KXtuLnJlbW92ZU5vZGVHcm91cCh0Lm5vZGUubmFtZSk7bGV0IGU9U3UodGhpcyk7dC5pbkFubm90YXRpb25zLmxpc3QubGVuZ3RoPjAmJmUuc2VsZWN0KCIuIit4SXQuQW5ub3RhdGlvbi5JTkJPWCkuc2VsZWN0QWxsKCIuIit4SXQuQW5ub3RhdGlvbi5HUk9VUCkuZWFjaCgoZT0+e24ucmVtb3ZlQW5ub3RhdGlvbkdyb3VwKGUsdCl9KSksdC5vdXRBbm5vdGF0aW9ucy5saXN0Lmxlbmd0aD4wJiZlLnNlbGVjdCgiLiIreEl0LkFubm90YXRpb24uT1VUQk9YKS5zZWxlY3RBbGwoIi4iK3hJdC5Bbm5vdGF0aW9uLkdST1VQKS5lYWNoKChlPT57bi5yZW1vdmVBbm5vdGF0aW9uR3JvdXAoZSx0KX0pKX0pKS5yZW1vdmUoKSxpfWZ1bmN0aW9uIHVPdCh0LGUpe2xldCBuPWUueC1lLndpZHRoLzIrZS5wYWRkaW5nTGVmdCxpPWUueS1lLmhlaWdodC8yK2UucGFkZGluZ1RvcDtXTnQoak50KHQsImciLHhJdC5TdWJzY2VuZS5HUk9VUCksbixpKX1mdW5jdGlvbiBoT3QodCxlLG4saSl7aWYoaSlyZXR1cm4gdm9pZCB0LmF0dHIoInBvaW50ZXItZXZlbnRzIiwibm9uZSIpO2xldCByPVFOdChuLGRPdChlLm5vZGUsbikpO3Qub24oImRibGNsaWNrIiwodD0+e24uZmlyZSgibm9kZS10b2dnbGUtZXhwYW5kIix7bmFtZTp0Lm5vZGUubmFtZX0pfSkpLm9uKCJtb3VzZW92ZXIiLCh0PT57bi5pc05vZGVFeHBhbmRlZCh0KXx8bi5maXJlKCJub2RlLWhpZ2hsaWdodCIse25hbWU6dC5ub2RlLm5hbWV9KX0pKS5vbigibW91c2VvdXQiLCh0PT57bi5pc05vZGVFeHBhbmRlZCh0KXx8bi5maXJlKCJub2RlLXVuaGlnaGxpZ2h0Iix7bmFtZTp0Lm5vZGUubmFtZX0pfSkpLm9uKCJjbGljayIsKHQ9Pnt1dS5zdG9wUHJvcGFnYXRpb24oKSxuLmZpcmUoIm5vZGUtc2VsZWN0Iix7bmFtZTp0Lm5vZGUubmFtZX0pfSkpLm9uKCJjb250ZXh0bWVudSIsKCh0LGUpPT57bi5maXJlKCJub2RlLXNlbGVjdCIse25hbWU6dC5ub2RlLm5hbWV9KSxyLmNhbGwodCxlKX0pKX1mdW5jdGlvbiBkT3QodCxlKXtsZXQgbj1be3RpdGxlOmU9PmROdCh0LmluY2x1ZGUpLGFjdGlvbjoobixpLHIpPT57ZS5maXJlKCJub2RlLXRvZ2dsZS1leHRyYWN0Iix7bmFtZTp0Lm5hbWV9KX19XTtyZXR1cm4gZS5ub2RlQ29udGV4dE1lbnVJdGVtcyYmKG49bi5jb25jYXQoZS5ub2RlQ29udGV4dE1lbnVJdGVtcykpLHBPdCh0KSYmbi5wdXNoKHt0aXRsZTplPT5tT3QodCksYWN0aW9uOihuLGkscik9PntlLmZpcmUoIm5vZGUtdG9nZ2xlLXNlcmllc2dyb3VwIix7bmFtZTpmT3QodCl9KX19KSxufWZ1bmN0aW9uIHBPdCh0KXtyZXR1cm4gbnVsbCE9PWZPdCh0KX1mdW5jdGlvbiBmT3QodCl7cmV0dXJuIHQ/dC50eXBlPT09V0l0LlNFUklFUz90Lm5hbWU6dC50eXBlPT09V0l0Lk9QP3Qub3duaW5nU2VyaWVzOm51bGw6bnVsbH1mdW5jdGlvbiBtT3QodCl7cmV0dXJuKGZ1bmN0aW9uIG4odCl7cmV0dXJuIHQ9PT1ZSXQuR1JPVVA/IlVuZ3JvdXAgdGhpcyBzZXJpZXMgb2Ygbm9kZXMiOiJHcm91cCB0aGlzIHNlcmllcyBvZiBub2RlcyJ9KShudWxsIT09KGZ1bmN0aW9uIGUodCl7bGV0IGU9bnVsbDtyZXR1cm4gdD8odC50eXBlPT09V0l0LlNFUklFUz9lPXQ6dC5wYXJlbnROb2RlJiZ0LnBhcmVudE5vZGUudHlwZT09PVdJdC5TRVJJRVMmJihlPXQucGFyZW50Tm9kZSksZSk6bnVsbH0pKHQpP1lJdC5HUk9VUDpZSXQuVU5HUk9VUCl9ZnVuY3Rpb24gZ090KHQsZSxuLGkpe2xldCByPXQubm9kZSgpLG89ci50ZXh0Q29udGVudCxhPW51bGw7c3dpdGNoKGUpe2Nhc2UgV0l0Lk1FVEE6aSYmIWkuZXhwYW5kZWQmJihhPU9OdC5ub2RlU2l6ZS5tZXRhLm1heExhYmVsV2lkdGgpO2JyZWFrO2Nhc2UgV0l0Lk9QOmE9T050Lm5vZGVTaXplLm9wLm1heExhYmVsV2lkdGg7YnJlYWs7Y2FzZS0xOmE9T050LmFubm90YXRpb25zLm1heExhYmVsV2lkdGh9aWYobnVsbCE9PWEpcmV0dXJuIHIudGV4dENvbnRlbnQ9KGZ1bmN0aW9uIHModCxlLG4pe2lmKCF0KXJldHVybiIiO2lmKEZJdCh0LGUpPD1uKXJldHVybiB0O2xldCBpPTAscj10Lmxlbmd0aDtmb3IoO2k8cjspe2NvbnN0IG89aStNYXRoLnJvdW5kKChyLWkpLzIpO0ZJdCh0LnNsaWNlKDAsbykrIuKApiIsZSk8PW4/aT1vOnI9by0xfXJldHVybiAwPT09aT90WzBdOnQuc2xpY2UoMCxpKSsi4oCmIn0pKHIudGV4dENvbnRlbnQsbixhKSx0LmFwcGVuZCgidGl0bGUiKS50ZXh0KG8pfSEoZnVuY3Rpb24odCl7dC5OT05FPSJub25lIix0LkNPTVBVVEVfVElNRT0iY29tcHV0ZV90aW1lIix0LkRFVklDRT0iZGV2aWNlIix0Lk1FTU9SWT0ibWVtb3J5Iix0Lk9QX0NPTVBBVElCSUxJVFk9Im9wX2NvbXBhdGliaWxpdHkiLHQuU1RSVUNUVVJFPSJzdHJ1Y3R1cmUiLHQuWExBX0NMVVNURVI9InhsYV9jbHVzdGVyIn0pKGxPdHx8KGxPdD17fSkpO2xldCBfT3Q9bnVsbDtmdW5jdGlvbiB5T3QodCxlLG4saSl7ak50KHQsInRleHQiLHhJdC5Ob2RlLkxBQkVMKS50cmFuc2l0aW9uKCkuYXR0cigieCIsZSkuYXR0cigieSIsbitpKX1mdW5jdGlvbiB2T3QodCxlLG4pe2xldCBpPU1JdCh0LCJnIixuKTtzd2l0Y2goZS5ub2RlLnR5cGUpe2Nhc2UgV0l0Lk9QOmNvbnN0IHQ9ZS5ub2RlO2lmKHdlLmlzTnVtYmVyKHQuZnVuY3Rpb25JbnB1dEluZGV4KXx8d2UuaXNOdW1iZXIodC5mdW5jdGlvbk91dHB1dEluZGV4KSl7TUl0KGksInBvbHlnb24iLHhJdC5Ob2RlLkNPTE9SX1RBUkdFVCk7YnJlYWt9TUl0KGksImVsbGlwc2UiLHhJdC5Ob2RlLkNPTE9SX1RBUkdFVCk7YnJlYWs7Y2FzZSBXSXQuU0VSSUVTOmxldCBuPSJhbm5vdGF0aW9uIixyPWU7ci5jb3JlR3JhcGgmJihuPXIubm9kZS5oYXNOb25Db250cm9sRWRnZXM/InZlcnRpY2FsIjoiaG9yaXpvbnRhbCIpO2xldCBvPVt4SXQuTm9kZS5DT0xPUl9UQVJHRVRdO3IuaXNGYWRlZE91dCYmby5wdXNoKCJmYWRlZC1lbGxpcHNlIiksTUl0KGksInVzZSIsbykuYXR0cigieGxpbms6aHJlZiIsIiNvcC1zZXJpZXMtIituKyItc3RhbXAiKSxNSXQoaSwicmVjdCIseEl0Lk5vZGUuQ09MT1JfVEFSR0VUKS5hdHRyKCJyeCIsZS5yYWRpdXMpLmF0dHIoInJ5IixlLnJhZGl1cyk7YnJlYWs7Y2FzZSBXSXQuQlJJREdFOmNhc2UgV0l0Lk1FVEE6TUl0KGksInJlY3QiLHhJdC5Ob2RlLkNPTE9SX1RBUkdFVCkuYXR0cigicngiLGUucmFkaXVzKS5hdHRyKCJyeSIsZS5yYWRpdXMpO2JyZWFrO2RlZmF1bHQ6dGhyb3cgRXJyb3IoIlVucmVjb2duaXplZCBub2RlIHR5cGU6ICIrZS5ub2RlLnR5cGUpfXJldHVybiBpfWZ1bmN0aW9uIGJPdCh0KXtzd2l0Y2godC5ub2RlLnR5cGUpe2Nhc2UgV0l0Lk9QOnJldHVybiB4SXQuT1BOT0RFO2Nhc2UgV0l0Lk1FVEE6cmV0dXJuIHhJdC5NRVRBTk9ERTtjYXNlIFdJdC5TRVJJRVM6cmV0dXJuIHhJdC5TRVJJRVNOT0RFO2Nhc2UgV0l0LkJSSURHRTpyZXR1cm4geEl0LkJSSURHRU5PREU7Y2FzZSBXSXQuRUxMSVBTSVM6cmV0dXJuIHhJdC5FTExJUFNJU05PREV9dGhyb3cgRXJyb3IoIlVucmVjb2duaXplZCBub2RlIHR5cGU6ICIrdC5ub2RlLnR5cGUpfWZ1bmN0aW9uIHhPdCh0LGUsbil7bGV0IGk9KGZ1bmN0aW9uIHIodCl7cmV0dXJuIHQucmVwbGFjZSgvKFs6LlxbXF0sL1xcXChcKV0pL2csIlxcJDEiKX0pKHQpO2lmKCFuKXJldHVybmB1cmwoIyR7aX0pYDtsZXQgbz1TdShuKSxhPW8uc2VsZWN0KCJkZWZzI19ncmFwaC1ncmFkaWVudHMiKTthLmVtcHR5KCkmJihhPW8uYXBwZW5kKCJkZWZzIikuYXR0cigiaWQiLCJfZ3JhcGgtZ3JhZGllbnRzIikpO2xldCBzPWEuc2VsZWN0KCJsaW5lYXJHcmFkaWVudCMiK2kpO2lmKHMuZW1wdHkoKSl7cz1hLmFwcGVuZCgibGluZWFyR3JhZGllbnQiKS5hdHRyKCJpZCIsdCkscy5zZWxlY3RBbGwoIioiKS5yZW1vdmUoKTtsZXQgbj0wO3dlLmVhY2goZSwodD0+e2xldCBlPXQuY29sb3I7cy5hcHBlbmQoInN0b3AiKS5hdHRyKCJvZmZzZXQiLG4pLmF0dHIoInN0b3AtY29sb3IiLGUpLHMuYXBwZW5kKCJzdG9wIikuYXR0cigib2Zmc2V0IixuK3QucHJvcG9ydGlvbikuYXR0cigic3RvcC1jb2xvciIsZSksbis9dC5wcm9wb3J0aW9ufSkpfXJldHVybmB1cmwoIyR7aX0pYH1mdW5jdGlvbiB3T3QodCl7U3UodCkuc2VsZWN0KCJkZWZzI19ncmFwaC1ncmFkaWVudHMiKS5yZW1vdmUoKX1mdW5jdGlvbiBTT3QodCxlLG4saSxyKXtsZXQgbz1tTnQ7c3dpdGNoKHQ9dHx8KCgpPT4wKSxlKXtjYXNlIGxPdC5OT05FOmNhc2UgbE90LlNUUlVDVFVSRTppZihuLm5vZGUudHlwZT09PVdJdC5NRVRBKXtsZXQgcj1uLm5vZGUudGVtcGxhdGVJZDtyZXR1cm4gZT09PWxPdC5TVFJVQ1RVUkUmJm51bGwhPT1yP28uU1RSVUNUVVJFX1BBTEVUVEUodChyKSxpKTpvLlVOS05PV059cmV0dXJuIG4ubm9kZS50eXBlPT09V0l0LlNFUklFUz9pP28uRVhQQU5ERURfQ09MT1I6IndoaXRlIjpuLm5vZGUudHlwZT09PVdJdC5CUklER0U/bi5zdHJ1Y3R1cmFsPyIjZjBlIjpuLm5vZGUuaW5ib3VuZD8iIzBlZiI6IiNmZTAiOndlLmlzTnVtYmVyKG4ubm9kZS5mdW5jdGlvbklucHV0SW5kZXgpPyIjNzk1NTQ4Ijp3ZS5pc051bWJlcihuLm5vZGUuZnVuY3Rpb25PdXRwdXRJbmRleCk/IiMwMDk2ODgiOiJ3aGl0ZSI7Y2FzZSBsT3QuREVWSUNFOnJldHVybiBudWxsPT1uLmRldmljZUNvbG9ycz9vLlVOS05PV046aT9vLkVYUEFOREVEX0NPTE9SOnhPdCgiZGV2aWNlLSIrbi5ub2RlLm5hbWUsbi5kZXZpY2VDb2xvcnMscik7Y2FzZSBsT3QuWExBX0NMVVNURVI6cmV0dXJuIG51bGw9PW4ueGxhQ2x1c3RlckNvbG9ycz9vLlVOS05PV046aT9vLkVYUEFOREVEX0NPTE9SOnhPdCgieGxhLSIrbi5ub2RlLm5hbWUsbi54bGFDbHVzdGVyQ29sb3JzLHIpO2Nhc2UgbE90LkNPTVBVVEVfVElNRTpyZXR1cm4gaT9vLkVYUEFOREVEX0NPTE9SOm4uY29tcHV0ZVRpbWVDb2xvcnx8by5VTktOT1dOO2Nhc2UgbE90Lk1FTU9SWTpyZXR1cm4gaT9vLkVYUEFOREVEX0NPTE9SOm4ubWVtb3J5Q29sb3J8fG8uVU5LTk9XTjtjYXNlIGxPdC5PUF9DT01QQVRJQklMSVRZOnJldHVybiBudWxsPT1uLmNvbXBhdGliaWxpdHlDb2xvcnM/by5VTktOT1dOOmk/by5FWFBBTkRFRF9DT0xPUjp4T3QoIm9wLWNvbXBhdC0iK24ubm9kZS5uYW1lLG4uY29tcGF0aWJpbGl0eUNvbG9ycyxyKTtkZWZhdWx0OnRocm93IG5ldyBFcnJvcigiVW5rbm93biBjYXNlIHRvIGNvbG9yIG5vZGVzIGJ5Iil9fWZ1bmN0aW9uIE1PdCh0LGUsbixpKXtpPWl8fHhJdC5Ob2RlLlNIQVBFO2NvbnN0IHI9bi5pc05vZGVIaWdobGlnaHRlZChlLm5vZGUubmFtZSksbz1uLmlzTm9kZVNlbGVjdGVkKGUubm9kZS5uYW1lKSxhPWUuaXNJbkV4dHJhY3R8fGUuaXNPdXRFeHRyYWN0fHxlLmlzTGlicmFyeUZ1bmN0aW9uLHM9ZS5leHBhbmRlZCYmaSE9PXhJdC5Bbm5vdGF0aW9uLk5PREUsbD1lLmlzRmFkZWRPdXQ7dC5jbGFzc2VkKCJoaWdobGlnaHRlZCIsciksdC5jbGFzc2VkKCJzZWxlY3RlZCIsbyksdC5jbGFzc2VkKCJleHRyYWN0IixhKSx0LmNsYXNzZWQoImV4cGFuZGVkIixzKSx0LmNsYXNzZWQoImZhZGVkIixsKTtjb25zdCBjPXQuc2VsZWN0KCIuIitpKyIgLiIreEl0Lk5vZGUuQ09MT1JfVEFSR0VUKSx1PVNPdChuLnRlbXBsYXRlSW5kZXgsbi5jb2xvckJ5LGUscyxuLmdldEdyYXBoU3ZnUm9vdCgpKTtjLnN0eWxlKCJmaWxsIix1KSxjLnN0eWxlKCJzdHJva2UiLG8/bnVsbDpFT3QodSkpfWZ1bmN0aW9uIEVPdCh0KXtyZXR1cm4idXJsIj09PXQuc3Vic3RyaW5nKDAsMyk/bU50LkdSQURJRU5UX09VVExJTkU6amgodCkuZGFya2VyKCkudG9TdHJpbmcoKX1mdW5jdGlvbiBUT3QodCxlLG4saSl7Y29uc3Qgcj1TdSh0KTtpZihyLnNlbGVjdEFsbCgiLmlucHV0LWhpZ2hsaWdodCIpLmNsYXNzZWQoImlucHV0LWhpZ2hsaWdodCIsITEpLHIuc2VsZWN0QWxsKCIubm9uLWlucHV0IikuY2xhc3NlZCgibm9uLWlucHV0IiwhMSksci5zZWxlY3RBbGwoIi5pbnB1dC1wYXJlbnQiKS5jbGFzc2VkKCJpbnB1dC1wYXJlbnQiLCExKSxyLnNlbGVjdEFsbCgiLmlucHV0LWNoaWxkIikuY2xhc3NlZCgiaW5wdXQtY2hpbGQiLCExKSxyLnNlbGVjdEFsbCgiLmlucHV0LWVkZ2UtaGlnaGxpZ2h0IikuY2xhc3NlZCgiaW5wdXQtZWRnZS1oaWdobGlnaHQiLCExKSxyLnNlbGVjdEFsbCgiLm5vbi1pbnB1dC1lZGdlLWhpZ2hsaWdodCIpLmNsYXNzZWQoIm5vbi1pbnB1dC1lZGdlLWhpZ2hsaWdodCIsITEpLHIuc2VsZWN0QWxsKCIuaW5wdXQtaGlnaGxpZ2h0LXNlbGVjdGVkIikuY2xhc3NlZCgiaW5wdXQtaGlnaGxpZ2h0LXNlbGVjdGVkIiwhMSksIWV8fCFpfHwhbilyZXR1cm47bGV0IG89QU90KG4sZSksYT17fTt3ZS5lYWNoKG8sKGZ1bmN0aW9uKG4pe2E9Q090KHQsZSxuLGEpfSkpO2xldCBzPU9iamVjdC5rZXlzKGEpLGw9KGZ1bmN0aW9uIGModCxlKXtsZXQgbj17fTtyZXR1cm4gd2UuZWFjaChlLChmdW5jdGlvbihlKXtsZXQgaT10LmdldE5vZGVCeU5hbWUoZSkscj1rT3QodCxpKTtuW3IubmFtZV09cn0pKSxufSkoZSxzKTshKGZ1bmN0aW9uIHUodCxlKXt3ZS5mb3JPd24oZSwoZnVuY3Rpb24oZSl7bGV0IG49ZTtmb3IoO24ubmFtZSE9PWpJdDspe2NvbnN0IGU9U3UodCkuc2VsZWN0KGAubm9kZVtkYXRhLW5hbWU9IiR7bi5uYW1lfSJdYCk7IWUubm9kZXMoKS5sZW5ndGh8fGUuY2xhc3NlZCgiaW5wdXQtaGlnaGxpZ2h0Iil8fGUuY2xhc3NlZCgic2VsZWN0ZWQiKXx8ZS5jbGFzc2VkKCJvcCIpfHxlLmNsYXNzZWQoImlucHV0LXBhcmVudCIsITApLG49bi5wYXJlbnROb2RlfX0pKX0pKHQsbCksci5zZWxlY3RBbGwoImcubm9kZTpub3QoLnNlbGVjdGVkKTpub3QoLmlucHV0LWhpZ2hsaWdodCk6bm90KC5pbnB1dC1wYXJlbnQpOm5vdCguaW5wdXQtY2hpbGRyZW4pIikuY2xhc3NlZCgibm9uLWlucHV0IiwhMCkuZWFjaCgoZnVuY3Rpb24odCl7ci5zZWxlY3RBbGwoYFtkYXRhLW5hbWU9IiR7dC5ub2RlLm5hbWV9Il1gKS5jbGFzc2VkKCJub24taW5wdXQiLCEwKX0pKSxyLnNlbGVjdEFsbCgiZy5lZGdlOm5vdCguaW5wdXQtZWRnZS1oaWdobGlnaHQpIikuY2xhc3NlZCgibm9uLWlucHV0LWVkZ2UtaGlnaGxpZ2h0IiwhMCl9ZnVuY3Rpb24gQU90KHQsZSl7bGV0IG49W10saT1lLmdldE5vZGVCeU5hbWUodCk7aWYoaSBpbnN0YW5jZW9mIEtJdClyZXR1cm5baV0uY29uY2F0KGkuaW5FbWJlZGRpbmdzKTtsZXQgcj1pLm1ldGFncmFwaC5ub2RlcygpO3JldHVybiB3ZS5lYWNoKHIsKGZ1bmN0aW9uKHQpe249bi5jb25jYXQoQU90KHQsZSkpfSkpLG59ZnVuY3Rpb24gQ090KHQsZSxuLGkpe2lmKGlbbi5uYW1lXSlyZXR1cm4gaTtpW24ubmFtZV09ITA7bGV0IHI9bi5pbnB1dHMsbz1rT3QoZSxuKTtTdSh0KS5zZWxlY3QoYC5ub2RlW2RhdGEtbmFtZT0iJHtvLm5hbWV9Il1gKS5jbGFzc2VkKCJpbnB1dC1oaWdobGlnaHQiLCEwKTtsZXQgYT17fTt3ZS5lYWNoKHIsKGZ1bmN0aW9uKHQpe2xldCBuPWUuZ2V0Tm9kZUJ5TmFtZSh0Lm5hbWUpO2lmKHZvaWQgMD09PW4pcmV0dXJuO2lmKG4gaW5zdGFuY2VvZiBKSXQpe2xldCB0PWNOdChuLm5hbWUpO249ZS5nZXROb2RlQnlOYW1lKHQpfWxldCBpPWtPdChlLG4pLHI9YVtpLm5hbWVdO3I/ci5vcE5vZGVzLnB1c2gobik6YVtpLm5hbWVdPXt2aXNpYmxlUGFyZW50Omksb3BOb2Rlczpbbl19fSkpO2xldCBzPXt9LGw9W29dO3Nbby5uYW1lXT17dHJhY2VkOiExLGluZGV4OjAsY29ubmVjdGlvbkVuZHBvaW50czpbXX07bGV0IGM9bztmb3IobGV0IHQ9MTtjLm5hbWUhPT1qSXQ7dCsrKWM9Yy5wYXJlbnROb2RlLHNbYy5uYW1lXT17dHJhY2VkOiExLGluZGV4OnQsY29ubmVjdGlvbkVuZHBvaW50czpbXX0sbFt0XT1jO3JldHVybiB3ZS5mb3JPd24oYSwoZnVuY3Rpb24obixyKXtsZXQgYT1uLnZpc2libGVQYXJlbnQ7d2UuZWFjaChuLm9wTm9kZXMsKGZ1bmN0aW9uKG4pe2k9Q090KHQsZSxuLGkpfSkpLGEubmFtZSE9PW8ubmFtZSYmKGZ1bmN0aW9uIGModCxlLG4saSl7bGV0IHI9ZSxvPWUsYT1bXTtmb3IoOyFuW3IubmFtZV07KW8ubmFtZSE9PXIubmFtZSYmYS5wdXNoKFtvLHJdKSxvPXIscj1yLnBhcmVudE5vZGU7bGV0IHM9bltyLm5hbWVdLmluZGV4LGw9aVtNYXRoLm1heChzLTEsMCldLm5hbWUsYz1sLHU9by5uYW1lLGg9by5uYW1lO2NvbnN0IGQ9U3UodCk7ZC5zZWxlY3RBbGwoYFtkYXRhLWVkZ2U9IiR7aH0tLSR7bH0iXWApLmNsYXNzZWQoImlucHV0LWVkZ2UtaGlnaGxpZ2h0IiwhMCksd2UuZWFjaChhLChmdW5jdGlvbih0KXtkLnNlbGVjdEFsbChgW2RhdGEtZWRnZT0iJHt0WzBdLm5hbWV9LS0ke2N9fn4ke3RbMV0ubmFtZX1+fk9VVCJdYCkuY2xhc3NlZCgiaW5wdXQtZWRnZS1oaWdobGlnaHQiLCEwKX0pKTtmb3IobGV0IHQ9MTt0PHM7dCsrKWQuc2VsZWN0QWxsKGBbZGF0YS1lZGdlPSIke3V9fn4ke2lbdF0ubmFtZX1+fklOLS0ke2lbdC0xXS5uYW1lfSJdYCkuY2xhc3NlZCgiaW5wdXQtZWRnZS1oaWdobGlnaHQiLCEwKX0pKHQsYSxzLGwpfSkpLGl9ZnVuY3Rpb24ga090KHQsZSl7bGV0IG49ITEsaT1lO2Zvcig7IW47KWlmKGk9KGU9aSkucGFyZW50Tm9kZSx2b2lkIDA9PT1pKW49ITA7ZWxzZXtsZXQgZT10LmdldFJlbmRlck5vZGVCeU5hbWUoaS5uYW1lKTtlJiYoZS5leHBhbmRlZHx8aSBpbnN0YW5jZW9mIEtJdCkmJihuPSEwKX1yZXR1cm4gZX1mdW5jdGlvbiBMT3QodCxlLG4saSl7bGV0IHI9dC5zZWxlY3RBbGwoKGZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuY2hpbGROb2Rlc30pKS5kYXRhKGUubGlzdCwodD0+dC5ub2RlLm5hbWUpKTtyZXR1cm4gci5lbnRlcigpLmFwcGVuZCgiZyIpLmF0dHIoImRhdGEtbmFtZSIsKHQ9PnQubm9kZS5uYW1lKSkuZWFjaCgoZnVuY3Rpb24odCl7bGV0IGU9U3UodGhpcyk7aS5hZGRBbm5vdGF0aW9uR3JvdXAodCxuLGUpO2xldCByPXhJdC5Bbm5vdGF0aW9uLkVER0Usbz10LnJlbmRlck1ldGFlZGdlSW5mbyYmdC5yZW5kZXJNZXRhZWRnZUluZm8ubWV0YWVkZ2U7byYmIW8ubnVtUmVndWxhckVkZ2VzJiYocis9IiAiK3hJdC5Bbm5vdGF0aW9uLkNPTlRST0xfRURHRSksbyYmby5udW1SZWZFZGdlcyYmKHIrPSIgIit4SXQuRWRnZS5SRUZfTElORSksYU90KGUsdCxpLHIpLHQuYW5ub3RhdGlvblR5cGUhPT13TnQuRUxMSVBTSVM/KChmdW5jdGlvbiBhKHQsZSl7bGV0IG49ZS5ub2RlLm5hbWUuc3BsaXQoIi8iKTtQT3QodCxuW24ubGVuZ3RoLTFdLGUsbnVsbCl9KShlLHQpLChmdW5jdGlvbiBzKHQsZSl7ZS5hbm5vdGF0aW9uVHlwZT09PXdOdC5TVU1NQVJZP01JdCh0LCJ1c2UiKS5hdHRyKCJjbGFzcyIsInN1bW1hcnkiKS5hdHRyKCJ4bGluazpocmVmIiwiI3N1bW1hcnktaWNvbiIpLmF0dHIoImN1cnNvciIsInBvaW50ZXIiKTpNSXQodk90KHQsZSx4SXQuQW5ub3RhdGlvbi5OT0RFKSwidGl0bGUiKS50ZXh0KGUubm9kZS5uYW1lKX0pKGUsdCkpOlBPdChlLHQubm9kZS5uYW1lLHQseEl0LkFubm90YXRpb24uRUxMSVBTSVMpfSkpLm1lcmdlKHIpLmF0dHIoImNsYXNzIiwodD0+eEl0LkFubm90YXRpb24uR1JPVVArIiAiKyhmdW5jdGlvbiBlKHQpe3JldHVybih3TnRbdF18fCIiKS50b0xvd2VyQ2FzZSgpfHxudWxsfSkodC5hbm5vdGF0aW9uVHlwZSkrIiAiK2JPdCh0KSkpLmVhY2goKGZ1bmN0aW9uKHQpe2xldCBlPVN1KHRoaXMpOyEoZnVuY3Rpb24gcih0LGUsbixpKXtsZXQgcj1ITnQoZSk7bi5yZW5kZXJOb2RlSW5mbyYmbi5hbm5vdGF0aW9uVHlwZSE9PXdOdC5FTExJUFNJUyYmTU90KHQsbi5yZW5kZXJOb2RlSW5mbyxpLHhJdC5Bbm5vdGF0aW9uLk5PREUpLG4uYW5ub3RhdGlvblR5cGU9PT13TnQuU1VNTUFSWSYmKG4ud2lkdGgrPTEwKSx0LnNlbGVjdCgidGV4dC4iK3hJdC5Bbm5vdGF0aW9uLkxBQkVMKS50cmFuc2l0aW9uKCkuYXR0cigieCIscituLmR4KyhuLmlzSW4/LTE6MSkqKG4ud2lkdGgvMituLmxhYmVsT2Zmc2V0KSkuYXR0cigieSIsZS55K24uZHkpLHQuc2VsZWN0KCJ1c2Uuc3VtbWFyeSIpLnRyYW5zaXRpb24oKS5hdHRyKCJ4IixyK24uZHgtMykuYXR0cigieSIsZS55K24uZHktNiksWU50KHQuc2VsZWN0KCIuIit4SXQuQW5ub3RhdGlvbi5OT0RFKyIgZWxsaXBzZSIpLHIrbi5keCxlLnkrbi5keSxuLndpZHRoLG4uaGVpZ2h0KSxxTnQodC5zZWxlY3QoIi4iK3hJdC5Bbm5vdGF0aW9uLk5PREUrIiByZWN0IikscituLmR4LGUueStuLmR5LG4ud2lkdGgsbi5oZWlnaHQpLHFOdCh0LnNlbGVjdCgiLiIreEl0LkFubm90YXRpb24uTk9ERSsiIHVzZSIpLHIrbi5keCxlLnkrbi5keSxuLndpZHRoLG4uaGVpZ2h0KSx0LnNlbGVjdCgicGF0aC4iK3hJdC5Bbm5vdGF0aW9uLkVER0UpLnRyYW5zaXRpb24oKS5hdHRyKCJkIiwodD0+e2xldCBuPXQucG9pbnRzLm1hcCgodD0+KHt4OnQuZHgrcix5OnQuZHkrZS55fSkpKTtyZXR1cm4gc090KG4pfSkpfSkoZSxuLHQsaSksdC5hbm5vdGF0aW9uVHlwZSE9PXdOdC5FTExJUFNJUyYmKGZ1bmN0aW9uIG8odCxlLG4saSl7dC5vbigibW91c2VvdmVyIiwodD0+e2kuZmlyZSgiYW5ub3RhdGlvbi1oaWdobGlnaHQiLHtuYW1lOnQubm9kZS5uYW1lLGhvc3ROYW1lOmUubm9kZS5uYW1lfSl9KSkub24oIm1vdXNlb3V0IiwodD0+e2kuZmlyZSgiYW5ub3RhdGlvbi11bmhpZ2hsaWdodCIse25hbWU6dC5ub2RlLm5hbWUsaG9zdE5hbWU6ZS5ub2RlLm5hbWV9KX0pKS5vbigiY2xpY2siLCh0PT57dXUuc3RvcFByb3BhZ2F0aW9uKCksaS5maXJlKCJhbm5vdGF0aW9uLXNlbGVjdCIse25hbWU6dC5ub2RlLm5hbWUsaG9zdE5hbWU6ZS5ub2RlLm5hbWV9KX0pKSxuLmFubm90YXRpb25UeXBlIT09d050LlNVTU1BUlkmJm4uYW5ub3RhdGlvblR5cGUhPT13TnQuQ09OU1RBTlQmJnQub24oImNvbnRleHRtZW51IixRTnQoaSxkT3Qobi5ub2RlLGkpKSl9KShlLG4sdCxpKX0pKSxyLmV4aXQoKS5lYWNoKChmdW5jdGlvbih0KXtpLnJlbW92ZUFubm90YXRpb25Hcm91cCh0LG4pfSkpLnJlbW92ZSgpLHJ9ZnVuY3Rpb24gUE90KHQsZSxuLGkpe2xldCByPXhJdC5Bbm5vdGF0aW9uLkxBQkVMO3JldHVybiBpJiYocis9IiAiK2kpLGdPdCh0LmFwcGVuZCgidGV4dCIpLmF0dHIoImNsYXNzIixyKS5hdHRyKCJkeSIsIi4zNWVtIikuYXR0cigidGV4dC1hbmNob3IiLG4uaXNJbj8iZW5kIjoic3RhcnQiKS50ZXh0KGUpLC0xLDUpfWZ1bmN0aW9uIElPdCh0LGUsbixpKXtsZXQgcj1TSXQodCwiZyIsaT1pfHx4SXQuU2NlbmUuR1JPVVApLmVtcHR5KCksbz1NSXQodCwiZyIsaSksYT1NSXQobywiZyIseEl0LlNjZW5lLkNPUkUpLHM9d2UucmVkdWNlKGUuY29yZUdyYXBoLm5vZGVzKCksKCh0LG4pPT57bGV0IGk9ZS5jb3JlR3JhcGgubm9kZShuKTtyZXR1cm4gaS5leGNsdWRlZHx8dC5wdXNoKGkpLHR9KSxbXSk7cmV0dXJuIGUubm9kZS50eXBlPT09V0l0LlNFUklFUyYmcy5yZXZlcnNlKCksKGZ1bmN0aW9uIGwodCxlLG4pe2NvbnN0IGk9bjtsZXQgcj1bXTtyPXdlLnJlZHVjZShlLmVkZ2VzKCksKCh0LG4pPT57bGV0IGk9ZS5lZGdlKG4pO3JldHVybiB0LnB1c2goe3Y6bi52LHc6bi53LGxhYmVsOml9KSx0fSkscik7bGV0IG89TUl0KHQsImciLHhJdC5FZGdlLkNPTlRBSU5FUikuc2VsZWN0QWxsKChmdW5jdGlvbigpe3JldHVybiB0aGlzLmNoaWxkTm9kZXN9KSkuZGF0YShyLGVPdCk7by5lbnRlcigpLmFwcGVuZCgiZyIpLmF0dHIoImNsYXNzIix4SXQuRWRnZS5HUk9VUCkuYXR0cigiZGF0YS1lZGdlIixlT3QpLmVhY2goKGZ1bmN0aW9uKHQpe2xldCBlPVN1KHRoaXMpO3QubGFiZWwuZWRnZUdyb3VwPWUsaS5fZWRnZUdyb3VwSW5kZXhbZU90KHQpXT1lLGkuaGFuZGxlRWRnZVNlbGVjdGVkJiZlLm9uKCJjbGljayIsKHQ9Pnt1dS5zdG9wUHJvcGFnYXRpb24oKSxpLmZpcmUoImVkZ2Utc2VsZWN0Iix7ZWRnZURhdGE6dCxlZGdlR3JvdXA6ZX0pfSkpLGFPdChlLHQsaSl9KSkubWVyZ2UobykuZWFjaCgoZnVuY3Rpb24oKXshKGZ1bmN0aW9uIHQoZSxuKXtTdShuKS5zZWxlY3QoInBhdGguIit4SXQuRWRnZS5MSU5FKS50cmFuc2l0aW9uKCkuYXR0clR3ZWVuKCJkIiwoZnVuY3Rpb24odCxuLGkpe3JldHVybihmdW5jdGlvbiByKHQsZSxuLGksbyl7bGV0IGE9bi5sYWJlbCxzPWEuYWRqb2luaW5nTWV0YWVkZ2UsbD1hLnBvaW50cztjb25zdHtzaGFkb3dSb290OmN9PXQ7aWYobi5sYWJlbC5zdGFydE1hcmtlcklkJiYobD1vT3QobCxTdShjLnF1ZXJ5U2VsZWN0b3IoIiMiK24ubGFiZWwuc3RhcnRNYXJrZXJJZCkpLCEwKSksbi5sYWJlbC5lbmRNYXJrZXJJZCYmKGw9b090KGwsU3UoYy5xdWVyeVNlbGVjdG9yKCIjIituLmxhYmVsLmVuZE1hcmtlcklkKSksITEpKSwhcylyZXR1cm4gVWQobyxzT3QobCkpO2xldCB1PXMuZWRnZUdyb3VwLm5vZGUoKS5maXJzdENoaWxkLGg9YS5tZXRhZWRnZS5pbmJvdW5kO3JldHVybiBmdW5jdGlvbih0KXtsZXQgbj11LmdldFBvaW50QXRMZW5ndGgoaD91LmdldFRvdGFsTGVuZ3RoKCk6MCkubWF0cml4VHJhbnNmb3JtKHUuZ2V0Q1RNKCkpLm1hdHJpeFRyYW5zZm9ybShlLmdldENUTSgpLmludmVyc2UoKSksaT1oPzA6bC5sZW5ndGgtMTtyZXR1cm4gbFtpXS54PW4ueCxsW2ldLnk9bi55LHNPdChsKX19KShlLHRoaXMsdCwwLGkpfSkpfSkobix0aGlzKX0pKS5lYWNoKChmdW5jdGlvbih0KXshKGZ1bmN0aW9uIGUodCxuLGkpe3QuY2xhc3NlZCgiZmFkZWQiLG4ubGFiZWwuaXNGYWRlZE91dCk7bGV0IHI9bi5sYWJlbC5tZXRhZWRnZTt0LnNlbGVjdCgicGF0aC4iK3hJdC5FZGdlLkxJTkUpLmNsYXNzZWQoImNvbnRyb2wtZGVwIixyJiYhci5udW1SZWd1bGFyRWRnZXMpfSkoU3UodGhpcyksdCl9KSksby5leGl0KCkuZWFjaCgodD0+e2RlbGV0ZSBpLl9lZGdlR3JvdXBJbmRleFtlT3QodCldfSkpLnJlbW92ZSgpfSkoYSxlLmNvcmVHcmFwaCxuKSxjT3QoYSxzLG4pLGUuaXNvbGF0ZWRJbkV4dHJhY3QubGVuZ3RoPjA/Y090KE1JdChvLCJnIix4SXQuU2NlbmUuSU5FWFRSQUNUKSxlLmlzb2xhdGVkSW5FeHRyYWN0LG4pOlNJdChvLCJnIix4SXQuU2NlbmUuSU5FWFRSQUNUKS5yZW1vdmUoKSxlLmlzb2xhdGVkT3V0RXh0cmFjdC5sZW5ndGg+MD9jT3QoTUl0KG8sImciLHhJdC5TY2VuZS5PVVRFWFRSQUNUKSxlLmlzb2xhdGVkT3V0RXh0cmFjdCxuKTpTSXQobywiZyIseEl0LlNjZW5lLk9VVEVYVFJBQ1QpLnJlbW92ZSgpLGUubGlicmFyeUZ1bmN0aW9uc0V4dHJhY3QubGVuZ3RoPjA/Y090KE1JdChvLCJnIix4SXQuU2NlbmUuRlVOQ1RJT05fTElCUkFSWSksZS5saWJyYXJ5RnVuY3Rpb25zRXh0cmFjdCxuKTpTSXQobywiZyIseEl0LlNjZW5lLkZVTkNUSU9OX0xJQlJBUlkpLnJlbW92ZSgpLChmdW5jdGlvbiBjKHQsZSl7bGV0IG49ZS5ub2RlLnR5cGU9PT1XSXQuU0VSSUVTPzA6T050LnN1YnNjZW5lLm1ldGEubGFiZWxIZWlnaHQ7V050KGpOdCh0LCJnIixVTnQuU2NlbmUuQ09SRSksMCxuKTtsZXQgaT1lLmlzb2xhdGVkSW5FeHRyYWN0Lmxlbmd0aD4wLHI9ZS5pc29sYXRlZE91dEV4dHJhY3QubGVuZ3RoPjAsbz1lLmxpYnJhcnlGdW5jdGlvbnNFeHRyYWN0Lmxlbmd0aD4wLGE9T050LnN1YnNjZW5lLm1ldGEuZXh0cmFjdFhPZmZzZXQscz0wO2lmKGkmJihzKz1lLm91dEV4dHJhY3RCb3gud2lkdGgpLHImJihzKz1lLm91dEV4dHJhY3RCb3gud2lkdGgpLGkpe2xldCBpPWUuY29yZUJveC53aWR0aDtpPXM8Uk50P2ktUk50K2UuaW5FeHRyYWN0Qm94LndpZHRoLzI6aS1lLmluRXh0cmFjdEJveC53aWR0aC8yLWUub3V0RXh0cmFjdEJveC53aWR0aC0ocj9hOjApLGk9aS1lLmxpYnJhcnlGdW5jdGlvbnNCb3gud2lkdGgtKG8/YTowKSxXTnQoak50KHQsImciLFVOdC5TY2VuZS5JTkVYVFJBQ1QpLGksbil9aWYocil7bGV0IGk9ZS5jb3JlQm94LndpZHRoO3M8Uk50P2k9aS1STnQrZS5vdXRFeHRyYWN0Qm94LndpZHRoLzI6aS09ZS5vdXRFeHRyYWN0Qm94LndpZHRoLzIsaT1pLWUubGlicmFyeUZ1bmN0aW9uc0JveC53aWR0aC0obz9hOjApLFdOdChqTnQodCwiZyIsVU50LlNjZW5lLk9VVEVYVFJBQ1QpLGksbil9aWYobyl7bGV0IGk9ZS5jb3JlQm94LndpZHRoLWUubGlicmFyeUZ1bmN0aW9uc0JveC53aWR0aC8yO1dOdChqTnQodCwiZyIsVU50LlNjZW5lLkZVTkNUSU9OX0xJQlJBUlkpLGksbil9fSkobyxlKSxyJiZvLmF0dHIoIm9wYWNpdHkiLDApLnRyYW5zaXRpb24oKS5hdHRyKCJvcGFjaXR5IiwxKSxvfWxldCBOT3Q9Y2xhc3MgZXh0ZW5kcyh0cih5ZSkpe2NvbnN0cnVjdG9yKCl7c3VwZXIoLi4uYXJndW1lbnRzKSx0aGlzLm5vZGU9bnVsbCx0aGlzLnJlbmRlckluZm89bnVsbCx0aGlzLmNvbG9yQnk9bE90LlNUUlVDVFVSRSx0aGlzLnRlbXBsYXRlSW5kZXg9bnVsbCx0aGlzLnR5cGU9bnVsbCx0aGlzLnZlcnRpY2FsPSExLHRoaXMuY29uc3Q9ITEsdGhpcy5zdW1tYXJ5PSExLHRoaXMuZmlsbD1udWxsLHRoaXMuaGVpZ2h0PTIwfV9jb21wdXRlRmlsbE92ZXJyaWRlKHQsZSxuLGkscil7cmV0dXJuIHQmJmUmJmk/U090KGksbixlLCExKTpyfV9nZXRTdHJva2VPdmVycmlkZSh0KXtyZXR1cm4gdD9FT3QodCk6bnVsbH1fZ2V0VHlwZSh0LGUsbixpKXtjb25zdHtHcmFwaEljb25UeXBlOnJ9PUpOdDtpZih0KXN3aXRjaCh0LnR5cGUpe2Nhc2UgV0l0Lk9QOntjb25zdCBpPXQub3A7cmV0dXJuInN0cmluZyIhPXR5cGVvZiBpP3IuT1A6IkNvbnN0Ij09PWl8fG4/ci5DT05TVDppLmVuZHNXaXRoKCJTdW1tYXJ5Iil8fGU/ci5TVU1NQVJZOnIuT1B9Y2FzZSBXSXQuTUVUQTpyZXR1cm4gci5NRVRBO2Nhc2UgV0l0LlNFUklFUzpyZXR1cm4gci5TRVJJRVN9cmV0dXJuIGl9X2lzVmVydGljYWwodCxlKXtyZXR1cm4gdD90Lmhhc05vbkNvbnRyb2xFZGdlczohIWV9X2dldEZhZGVkKHQpe3JldHVybiB0JiZ0LmlzRmFkZWRPdXR9X29uRmlsbE92ZXJyaWRlQ2hhbmdlZCh0LGUpe2NvbnN0e25vZGU6bixyZW5kZXJJbmZvOmksY29sb3JCeTpyLHRlbXBsYXRlSW5kZXg6b309dGhpczt0IT09ZSYmd090KHRoaXMuJC5pY29uLmdldFN2Z0RlZmluYWJsZUVsZW1lbnQoKSksbiYmaSYmbyYmU090KG8scixpLCExLHRoaXMuJC5pY29uLmdldFN2Z0RlZmluYWJsZUVsZW1lbnQoKSl9fTtOT3QudGVtcGxhdGU9X2VgCiAgICA8c3R5bGU+CiAgICAgIHRmLWdyYXBoLWljb24gewogICAgICAgIC0tdGItZ3JhcGgtZmFkZWQ6IHZhcigtLXRiLWdyYXBoLWZhZGVkKTsKICAgICAgfQogICAgPC9zdHlsZT4KICAgIDx0Zi1ncmFwaC1pY29uCiAgICAgIGlkPSJpY29uIgogICAgICB0eXBlPSJbW19nZXRUeXBlKG5vZGUsIHN1bW1hcnksIGNvbnN0LCB0eXBlKV1dIgogICAgICBoZWlnaHQ9IltbaGVpZ2h0XV0iCiAgICAgIGZpbGwtb3ZlcnJpZGU9IltbX2ZpbGxPdmVycmlkZV1dIgogICAgICBzdHJva2Utb3ZlcnJpZGU9IltbX2dldFN0cm9rZU92ZXJyaWRlKF9maWxsT3ZlcnJpZGUpXV0iCiAgICAgIGZhZGVkPSJbW19nZXRGYWRlZChyZW5kZXJJbmZvKV1dIgogICAgICB2ZXJ0aWNhbD0iW1tfaXNWZXJ0aWNhbChub2RlLCB2ZXJ0aWNhbCldXSIKICAgID48L3RmLWdyYXBoLWljb24+CiAgYCx0KFtvKHt0eXBlOk9iamVjdH0pLGUoImRlc2lnbjp0eXBlIixPYmplY3QpXSxOT3QucHJvdG90eXBlLCJub2RlIix2b2lkIDApLHQoW28oe3R5cGU6T2JqZWN0fSksZSgiZGVzaWduOnR5cGUiLE9iamVjdCldLE5PdC5wcm90b3R5cGUsInJlbmRlckluZm8iLHZvaWQgMCksdChbbyh7dHlwZTpPYmplY3R9KSxlKCJkZXNpZ246dHlwZSIsU3RyaW5nKV0sTk90LnByb3RvdHlwZSwiY29sb3JCeSIsdm9pZCAwKSx0KFtvKHt0eXBlOk9iamVjdH0pLGUoImRlc2lnbjp0eXBlIixGdW5jdGlvbildLE5PdC5wcm90b3R5cGUsInRlbXBsYXRlSW5kZXgiLHZvaWQgMCksdChbbyh7dHlwZTpTdHJpbmd9KSxlKCJkZXNpZ246dHlwZSIsU3RyaW5nKV0sTk90LnByb3RvdHlwZSwidHlwZSIsdm9pZCAwKSx0KFtvKHt0eXBlOkJvb2xlYW59KSxlKCJkZXNpZ246dHlwZSIsQm9vbGVhbildLE5PdC5wcm90b3R5cGUsInZlcnRpY2FsIix2b2lkIDApLHQoW28oe3R5cGU6Qm9vbGVhbn0pLGUoImRlc2lnbjp0eXBlIixCb29sZWFuKV0sTk90LnByb3RvdHlwZSwiY29uc3QiLHZvaWQgMCksdChbbyh7dHlwZTpCb29sZWFufSksZSgiZGVzaWduOnR5cGUiLEJvb2xlYW4pXSxOT3QucHJvdG90eXBlLCJzdW1tYXJ5Iix2b2lkIDApLHQoW28oe3R5cGU6U3RyaW5nfSksZSgiZGVzaWduOnR5cGUiLFN0cmluZyldLE5PdC5wcm90b3R5cGUsImZpbGwiLHZvaWQgMCksdChbbyh7dHlwZTpOdW1iZXJ9KSxlKCJkZXNpZ246dHlwZSIsTnVtYmVyKV0sTk90LnByb3RvdHlwZSwiaGVpZ2h0Iix2b2lkIDApLHQoW28oe3R5cGU6U3RyaW5nLGNvbXB1dGVkOiJfY29tcHV0ZUZpbGxPdmVycmlkZShub2RlLCByZW5kZXJJbmZvLCBjb2xvckJ5LCB0ZW1wbGF0ZUluZGV4LCBmaWxsKSIsb2JzZXJ2ZXI6Il9vbkZpbGxPdmVycmlkZUNoYW5nZWQifSksZSgiZGVzaWduOnR5cGUiLFN0cmluZyldLE5PdC5wcm90b3R5cGUsIl9maWxsT3ZlcnJpZGUiLHZvaWQgMCksTk90PXQoW2koInRmLW5vZGUtaWNvbiIpXSxOT3QpO2xldCBPT3Q9Y2xhc3MgZXh0ZW5kcyh0cih5ZSkpe19pdGVtVHlwZUNoYW5nZWQoKXsic3Vibm9kZSIhPT10aGlzLml0ZW1UeXBlP3RoaXMuJFsibGlzdC1pdGVtIl0uY2xhc3NMaXN0LmFkZCgiY2xpY2thYmxlIik6dGhpcy4kWyJsaXN0LWl0ZW0iXS5jbGFzc0xpc3QucmVtb3ZlKCJjbGlja2FibGUiKX1fbm9kZUxpc3RlbmVyKHQpe3RoaXMuZmlyZSgibm9kZS1saXN0LWl0ZW0tIit0LnR5cGUse25vZGVOYW1lOnRoaXMubmFtZSx0eXBlOnRoaXMuaXRlbVR5cGV9KX1fZmFkZWRDbGFzcyh0KXtyZXR1cm4gdCYmdC5pc0ZhZGVkT3V0PyJmYWRlZCI6IiJ9fTtmdW5jdGlvbiBST3QodCxlLG4pe3JldHVybiB3ZS5zb3J0QnkodCxbdD0+ZS5ub2RlKHQpLm9wLHQ9PmUubm9kZSh0KS50ZW1wbGF0ZUlkLHQ9PmUubmVpZ2hib3JzKHQpLmxlbmd0aCx0PT5lLnByZWRlY2Vzc29ycyh0KS5sZW5ndGgsdD0+ZS5zdWNjZXNzb3JzKHQpLmxlbmd0aCx0PT50LnN1YnN0cihuLmxlbmd0aCldKX1mdW5jdGlvbiB6T3QodCxlKXtpZighKGZ1bmN0aW9uIG4odCxlKXtsZXQgbj11TnQodCksaT11TnQoZSk7Zm9yKGxldCB0PTA7dDxuLmxlbmd0aDt0KyspaWYoblt0XSE9PWlbdF0pcmV0dXJuITE7cmV0dXJuITB9KSh0LGUpKXJldHVybiExO2xldCBpPXQuZ3JhcGgoKS5uYW1lLHI9ZS5ncmFwaCgpLm5hbWUsbz17fSxhPXt9LHM9W107ZnVuY3Rpb24gbCh0LGUpe2xldCBuPXQuc3Vic3RyKGkubGVuZ3RoKSxsPWUuc3Vic3RyKHIubGVuZ3RoKTtyZXR1cm4gb1tuXV5hW2xdPyhjb25zb2xlLndhcm4oImRpZmZlcmVudCB2aXNpdCBwYXR0ZXJuIiwiWyIraSsiXSIsbiwiWyIrcisiXSIsbCksITApOihvW25dfHwob1tuXT1hW2xdPSEwLHMucHVzaCh7bjE6dCxuMjplfSkpLCExKX1sZXQgYz10LnNvdXJjZXMoKSx1PWUuc291cmNlcygpO2lmKGMubGVuZ3RoIT09dS5sZW5ndGgpcmV0dXJuIGNvbnNvbGUubG9nKCJkaWZmZXJlbnQgc291cmNlIGxlbmd0aCIpLCExO2M9Uk90KGMsdCxpKSx1PVJPdCh1LGUscik7Zm9yKGxldCB0PTA7dDxjLmxlbmd0aDt0KyspaWYobChjW3RdLHVbdF0pKXJldHVybiExO2Zvcig7cy5sZW5ndGg+MDspe2xldCBuPXMucG9wKCk7aWYoIURPdCh0Lm5vZGUobi5uMSksZS5ub2RlKG4ubjIpKSlyZXR1cm4hMTtsZXQgbz10LnN1Y2Nlc3NvcnMobi5uMSksYT1lLnN1Y2Nlc3NvcnMobi5uMik7aWYoby5sZW5ndGghPT1hLmxlbmd0aClyZXR1cm4gY29uc29sZS5sb2coIiMgb2Ygc3VjY2Vzc29ycyBtaXNtYXRjaCIsbyxhKSwhMTtvPVJPdChvLHQsaSksYT1ST3QoYSxlLHIpO2ZvcihsZXQgdD0wO3Q8by5sZW5ndGg7dCsrKWlmKGwob1t0XSxhW3RdKSlyZXR1cm4hMX1yZXR1cm4hMH1mdW5jdGlvbiBET3QodCxlKXtpZih0LnR5cGU9PT1XSXQuTUVUQSl7bGV0IG49dCxpPWU7cmV0dXJuIG4udGVtcGxhdGVJZCYmaS50ZW1wbGF0ZUlkJiZuLnRlbXBsYXRlSWQ9PT1pLnRlbXBsYXRlSWR9aWYodC50eXBlPT09V0l0Lk9QJiZlLnR5cGU9PT1XSXQuT1ApcmV0dXJuIHQub3A9PT1lLm9wO2lmKHQudHlwZT09PVdJdC5TRVJJRVMmJmUudHlwZT09PVdJdC5TRVJJRVMpe2xldCBuPXQsaT1lLHI9bi5tZXRhZ3JhcGgubm9kZUNvdW50KCk7cmV0dXJuIHI9PT1pLm1ldGFncmFwaC5ub2RlQ291bnQoKSYmKDA9PT1yfHxuLm1ldGFncmFwaC5ub2RlKG4ubWV0YWdyYXBoLm5vZGVzKClbMF0pLm9wPT09aS5tZXRhZ3JhcGgubm9kZShpLm1ldGFncmFwaC5ub2RlcygpWzBdKS5vcCl9cmV0dXJuITF9dmFyIEJPdDtPT3QudGVtcGxhdGU9X2VgCiAgICA8c3R5bGU+CiAgICAgICNsaXN0LWl0ZW0gewogICAgICAgIHdpZHRoOiAxMDAlOwogICAgICAgIGNvbG9yOiAjNTY1NjU2OwogICAgICAgIGZvbnQtc2l6ZTogMTFwdDsKICAgICAgICBmb250LXdlaWdodDogNDAwOwogICAgICAgIHBvc2l0aW9uOiByZWxhdGl2ZTsKICAgICAgICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7CiAgICAgIH0KCiAgICAgICNsaXN0LWl0ZW06aG92ZXIgewogICAgICAgIGJhY2tncm91bmQtY29sb3I6IHZhcigtLWdvb2dsZS15ZWxsb3ctMTAwKTsKICAgICAgfQoKICAgICAgLmNsaWNrYWJsZSB7CiAgICAgICAgY3Vyc29yOiBwb2ludGVyOwogICAgICB9CgogICAgICAjbGlzdC1pdGVtIHNwYW4gewogICAgICAgIG1hcmdpbi1sZWZ0OiA0MHB4OwogICAgICB9CgogICAgICAjbGlzdC1pdGVtLmV4Y2x1ZGVkIHNwYW4gewogICAgICAgIGNvbG9yOiAjOTk5OwogICAgICB9CgogICAgICAjbGlzdC1pdGVtIHNwYW4uZWRnZS1sYWJlbCB7CiAgICAgICAgZmxvYXQ6IHJpZ2h0OwogICAgICAgIGZvbnQtc2l6ZTogMTBweDsKICAgICAgICBtYXJnaW4tbGVmdDogM3B4OwogICAgICAgIG1hcmdpbi1yaWdodDogNXB4OwogICAgICB9CgogICAgICAubm9kZS1pY29uIHsKICAgICAgICBwb3NpdGlvbjogYWJzb2x1dGU7CiAgICAgICAgdG9wOiAxcHg7CiAgICAgICAgbGVmdDogMnB4OwogICAgICB9CgogICAgICAuZmFkZWQgc3BhbiB7CiAgICAgICAgY29sb3I6IHZhcigtLXRiLWdyYXBoLWZhZGVkKTsKICAgICAgfQogICAgPC9zdHlsZT4KCiAgICA8ZGl2CiAgICAgIGlkPSJsaXN0LWl0ZW0iCiAgICAgIG9uLW1vdXNlb3Zlcj0iX25vZGVMaXN0ZW5lciIKICAgICAgb24tbW91c2VvdXQ9Il9ub2RlTGlzdGVuZXIiCiAgICAgIG9uLWNsaWNrPSJfbm9kZUxpc3RlbmVyIgogICAgPgogICAgICA8ZGl2IGNsYXNzJD0ie3tfZmFkZWRDbGFzcyhpdGVtUmVuZGVySW5mbyl9fSI+CiAgICAgICAgPHRmLW5vZGUtaWNvbgogICAgICAgICAgY2xhc3M9Im5vZGUtaWNvbiIKICAgICAgICAgIGhlaWdodD0iMTIiCiAgICAgICAgICBjb2xvci1ieT0iW1tjb2xvckJ5XV0iCiAgICAgICAgICBjb2xvci1ieS1wYXJhbXM9IltbY29sb3JCeVBhcmFtc11dIgogICAgICAgICAgbm9kZT0iW1tpdGVtTm9kZV1dIgogICAgICAgICAgcmVuZGVyLWluZm89IltbaXRlbVJlbmRlckluZm9dXSIKICAgICAgICAgIHRlbXBsYXRlLWluZGV4PSJbW3RlbXBsYXRlSW5kZXhdXSIKICAgICAgICA+CiAgICAgICAgPC90Zi1ub2RlLWljb24+CiAgICAgICAgPHNwYW4gdGl0bGUkPSJbW25hbWVdXSI+W1tuYW1lXV08L3NwYW4+CiAgICAgIDwvZGl2PgogICAgPC9kaXY+CiAgYCx0KFtvKHt0eXBlOk9iamVjdH0pLGUoImRlc2lnbjp0eXBlIixPYmplY3QpXSxPT3QucHJvdG90eXBlLCJjYXJkTm9kZSIsdm9pZCAwKSx0KFtvKHt0eXBlOk9iamVjdH0pLGUoImRlc2lnbjp0eXBlIixPYmplY3QpXSxPT3QucHJvdG90eXBlLCJpdGVtTm9kZSIsdm9pZCAwKSx0KFtvKHt0eXBlOlN0cmluZ30pLGUoImRlc2lnbjp0eXBlIixTdHJpbmcpXSxPT3QucHJvdG90eXBlLCJlZGdlTGFiZWwiLHZvaWQgMCksdChbbyh7dHlwZTpPYmplY3R9KSxlKCJkZXNpZ246dHlwZSIsT2JqZWN0KV0sT090LnByb3RvdHlwZSwiaXRlbVJlbmRlckluZm8iLHZvaWQgMCksdChbbyh7dHlwZTpTdHJpbmd9KSxlKCJkZXNpZ246dHlwZSIsU3RyaW5nKV0sT090LnByb3RvdHlwZSwibmFtZSIsdm9pZCAwKSx0KFtvKHt0eXBlOlN0cmluZyxvYnNlcnZlcjoiX2l0ZW1UeXBlQ2hhbmdlZCJ9KSxlKCJkZXNpZ246dHlwZSIsU3RyaW5nKV0sT090LnByb3RvdHlwZSwiaXRlbVR5cGUiLHZvaWQgMCksdChbbyh7dHlwZTpTdHJpbmd9KSxlKCJkZXNpZ246dHlwZSIsU3RyaW5nKV0sT090LnByb3RvdHlwZSwiY29sb3JCeSIsdm9pZCAwKSx0KFtvKHt0eXBlOk9iamVjdH0pLGUoImRlc2lnbjp0eXBlIixPYmplY3QpXSxPT3QucHJvdG90eXBlLCJjb2xvckJ5UGFyYW1zIix2b2lkIDApLHQoW28oe3R5cGU6T2JqZWN0fSksZSgiZGVzaWduOnR5cGUiLEZ1bmN0aW9uKV0sT090LnByb3RvdHlwZSwidGVtcGxhdGVJbmRleCIsdm9pZCAwKSxPT3Q9dChbaSgidGYtZ3JhcGgtb3AtY29tcGF0LWxpc3QtaXRlbSIpXSxPT3QpLChmdW5jdGlvbih0KXt0W3QuVEVNUExBVEVTX1VQREFURUQ9MF09IlRFTVBMQVRFU19VUERBVEVEIn0pKEJPdHx8KEJPdD17fSkpO2NsYXNzIEhPdCBleHRlbmRzIGNsYXNze2NvbnN0cnVjdG9yKCl7dGhpcy5ldmVudFR5cGVUb0xpc3RlbmVycz1uZXcgTWFwfWdldExpc3RlbmVycyh0KXtyZXR1cm4gdGhpcy5ldmVudFR5cGVUb0xpc3RlbmVycy5oYXModCl8fHRoaXMuZXZlbnRUeXBlVG9MaXN0ZW5lcnMuc2V0KHQsW10pLHRoaXMuZXZlbnRUeXBlVG9MaXN0ZW5lcnMuZ2V0KHQpfWFkZExpc3RlbmVyKHQsZSl7dGhpcy5nZXRMaXN0ZW5lcnModCkucHVzaChlKX1yZW1vdmVMaXN0ZW5lcih0LGUpe2NvbnN0IG49dGhpcy5nZXRMaXN0ZW5lcnModCkuZmlsdGVyKCh0PT50IT09ZSkpO3RoaXMuZXZlbnRUeXBlVG9MaXN0ZW5lcnMuc2V0KHQsbil9ZGlzcGF0Y2hFdmVudCh0LGUpe2Zvcihjb25zdCBuIG9mIHRoaXMuZ2V0TGlzdGVuZXJzKHQpKW4oZSl9fXtjb25zdHJ1Y3Rvcih0KXtzdXBlcigpLHRoaXMuaGFzU2hhcGVJbmZvPSExLHRoaXMubWF4TWV0YUVkZ2VTaXplPTEsdGhpcy5ncmFwaE9wdGlvbnM9e30sdGhpcy50ZW1wbGF0ZXM9bnVsbCx0aGlzLmdyYXBoT3B0aW9ucy5jb21wb3VuZD0hMCx0aGlzLmdyYXBoT3B0aW9ucy5yYW5rZGlyPXQucmFua0RpcmVjdGlvbix0aGlzLnJvb3Q9Wkl0KGpJdCx0aGlzLmdyYXBoT3B0aW9ucyksdGhpcy5saWJyYXJ5RnVuY3Rpb25zPXt9LHRoaXMuc2VyaWVzR3JvdXBNYXA9bmV3IE1hcCh0LnNlcmllc01hcCksdGhpcy5kZXZpY2VzPW51bGwsdGhpcy54bGFDbHVzdGVycz1udWxsLHRoaXMudmVyaWZ5VGVtcGxhdGU9dC52ZXJpZnlUZW1wbGF0ZSx0aGlzLmluZGV4PXt9LHRoaXMuaW5kZXguX19yb290X189dGhpcy5yb290LHRoaXMub3JkZXJpbmdzPXt9fWdldFNlcmllc0dyb3VwVHlwZSh0KXt2YXIgZTtyZXR1cm4gbnVsbCE9PShlPXRoaXMuc2VyaWVzR3JvdXBNYXAuZ2V0KHQpKSYmdm9pZCAwIT09ZT9lOllJdC5HUk9VUH1zZXRTZXJpZXNHcm91cFR5cGUodCxlKXtyZXR1cm4gdGhpcy5zZXJpZXNHcm91cE1hcC5zZXQodCxlKX1idWlsZFNlcmllc0dyb3VwTWFwVG9nZ2xlZCh0KXtjb25zdCBlPXRoaXMuZ2V0U2VyaWVzR3JvdXBUeXBlKHQpPT09WUl0LkdST1VQP1lJdC5VTkdST1VQOllJdC5HUk9VUDtyZXR1cm4gbmV3IE1hcChbLi4udGhpcy5zZXJpZXNHcm91cE1hcCxbdCxlXV0pfWdldE5vZGVNYXAoKXtyZXR1cm4gdGhpcy5pbmRleH1ub2RlKHQpe3JldHVybiB0aGlzLmluZGV4W3RdfXNldE5vZGUodCxlKXt0aGlzLmluZGV4W3RdPWV9Z2V0QnJpZGdlZ3JhcGgodCl7bGV0IGU9dGhpcy5pbmRleFt0XTtpZighZSl0aHJvdyBFcnJvcigiQ291bGQgbm90IGZpbmQgbm9kZSBpbiBoaWVyYXJjaHk6ICIrdCk7aWYoISgibWV0YWdyYXBoImluIGUpKXJldHVybiBudWxsO2lmKGUuYnJpZGdlZ3JhcGgpcmV0dXJuIGUuYnJpZGdlZ3JhcGg7bGV0IG49ZS5icmlkZ2VncmFwaD1zTnQoIkJSSURHRUdSQVBIIixHSXQuQlJJREdFLHRoaXMuZ3JhcGhPcHRpb25zKTtpZighZS5wYXJlbnROb2RlfHwhKCJtZXRhZ3JhcGgiaW4gZS5wYXJlbnROb2RlKSlyZXR1cm4gbjtsZXQgaT1lLnBhcmVudE5vZGUscj1pLm1ldGFncmFwaCxvPXRoaXMuZ2V0QnJpZGdlZ3JhcGgoaS5uYW1lKTtyZXR1cm4gd2UuZWFjaChbcixvXSwoZT0+e2UuZWRnZXMoKS5maWx0ZXIoKGU9PmUudj09PXR8fGUudz09PXQpKS5mb3JFYWNoKChpPT57bGV0IHI9aS53PT09dCxvPWUuZWRnZShpKTt3ZS5lYWNoKG8uYmFzZUVkZ2VMaXN0LChlPT57bGV0W28sYV09cj9bZS53LGkudl06W2UudixpLnddLHM9dGhpcy5nZXRDaGlsZE5hbWUodCxvKSxsPXt2OnI/YTpzLHc6cj9zOmF9LGM9bi5lZGdlKGwpO2N8fChjPVFJdChsLnYsbC53KSxjLmluYm91bmQ9cixuLnNldEVkZ2UobC52LGwudyxjKSksYy5hZGRCYXNlRWRnZShlLHRoaXMpfSkpfSkpfSkpLG59Z2V0Q2hpbGROYW1lKHQsZSl7bGV0IG49dGhpcy5pbmRleFtlXTtmb3IoO247KXtpZihuLnBhcmVudE5vZGUmJm4ucGFyZW50Tm9kZS5uYW1lPT09dClyZXR1cm4gbi5uYW1lO249bi5wYXJlbnROb2RlfXRocm93IEVycm9yKCJDb3VsZCBub3QgZmluZCBpbW1lZGlhdGUgY2hpbGQgZm9yIGRlc2NlbmRhbnQ6ICIrZSl9Z2V0UHJlZGVjZXNzb3JzKHQpe2xldCBlPXRoaXMuaW5kZXhbdF07aWYoIWUpdGhyb3cgRXJyb3IoIkNvdWxkIG5vdCBmaW5kIG5vZGUgd2l0aCBuYW1lOiAiK3QpO2xldCBuPXRoaXMuZ2V0T25lV2F5RWRnZXMoZSwhMCk7cmV0dXJuIGUuaXNHcm91cE5vZGV8fHdlLmVhY2goZS5pbkVtYmVkZGluZ3MsKGk9Pnt3ZS5lYWNoKGUuaW5wdXRzLChlPT57aWYoZS5uYW1lPT09aS5uYW1lKXtsZXQgcj1uZXcgdE50KGkubmFtZSx0KTtyLmFkZEJhc2VFZGdlKHtpc0NvbnRyb2xEZXBlbmRlbmN5OmUuaXNDb250cm9sRGVwZW5kZW5jeSxvdXRwdXRUZW5zb3JLZXk6ZS5vdXRwdXRUZW5zb3JLZXksaXNSZWZlcmVuY2VFZGdlOiExLHY6aS5uYW1lLHc6dH0sdGhpcyksbi5yZWd1bGFyLnB1c2gocil9fSkpfSkpLG59Z2V0U3VjY2Vzc29ycyh0KXtsZXQgZT10aGlzLmluZGV4W3RdO2lmKCFlKXRocm93IEVycm9yKCJDb3VsZCBub3QgZmluZCBub2RlIHdpdGggbmFtZTogIit0KTtsZXQgbj10aGlzLmdldE9uZVdheUVkZ2VzKGUsITEpO3JldHVybiBlLmlzR3JvdXBOb2RlfHx3ZS5lYWNoKGUub3V0RW1iZWRkaW5ncywoZT0+e3dlLmVhY2goZS5pbnB1dHMsKGk9PntpZihpLm5hbWU9PT10KXtsZXQgcj1uZXcgdE50KHQsZS5uYW1lKTtyLmFkZEJhc2VFZGdlKHtpc0NvbnRyb2xEZXBlbmRlbmN5OmkuaXNDb250cm9sRGVwZW5kZW5jeSxvdXRwdXRUZW5zb3JLZXk6aS5vdXRwdXRUZW5zb3JLZXksaXNSZWZlcmVuY2VFZGdlOiExLHY6dCx3OmUubmFtZX0sdGhpcyksbi5yZWd1bGFyLnB1c2gocil9fSkpfSkpLG59Z2V0T25lV2F5RWRnZXModCxlKXtsZXQgbj17Y29udHJvbDpbXSxyZWd1bGFyOltdfTtpZighdC5wYXJlbnROb2RlfHwhdC5wYXJlbnROb2RlLmlzR3JvdXBOb2RlKXJldHVybiBuO2xldCBpPXQucGFyZW50Tm9kZSxyPWkubWV0YWdyYXBoLG89dGhpcy5nZXRCcmlkZ2VncmFwaChpLm5hbWUpO3JldHVybiBGT3Qocix0LGUsbiksRk90KG8sdCxlLG4pLG59Z2V0VG9wb2xvZ2ljYWxPcmRlcmluZyh0KXtsZXQgZT10aGlzLmluZGV4W3RdO2lmKCFlKXRocm93IEVycm9yKCJDb3VsZCBub3QgZmluZCBub2RlIHdpdGggbmFtZTogIit0KTtpZighZS5pc0dyb3VwTm9kZSlyZXR1cm4gbnVsbDtpZih0IGluIHRoaXMub3JkZXJpbmdzKXJldHVybiB0aGlzLm9yZGVyaW5nc1t0XTtsZXQgbj17fSxpPXt9LHI9ZS5tZXRhZ3JhcGg7d2UuZWFjaChyLmVkZ2VzKCksKHQ9PntyLmVkZ2UodCkubnVtUmVndWxhckVkZ2VzJiYodC52IGluIG58fChuW3Qudl09W10pLG5bdC52XS5wdXNoKHQudyksaVt0LnddPSEwKX0pKTtsZXQgbz13ZS5kaWZmZXJlbmNlKHdlLmtleXMobiksd2Uua2V5cyhpKSksYT10aGlzLm9yZGVyaW5nc1t0XT17fSxzPTA7Zm9yKDtvLmxlbmd0aDspe2xldCB0PW8uc2hpZnQoKTthW3RdPXMrKyx3ZS5lYWNoKG5bdF0sKHQ9Pm8ucHVzaCh0KSkpLGRlbGV0ZSBuW3RdfXJldHVybiBhfWdldFRlbXBsYXRlSW5kZXgoKXtpZighdGhpcy50ZW1wbGF0ZXMpcmV0dXJuIG51bGw7bGV0IHQ9a2codGhpcy50ZW1wbGF0ZXMpO2lmKCF0Lmxlbmd0aClyZXR1cm4gbnVsbDtsZXQgZT1iTSgpLmRvbWFpbih0KS5yYW5nZSh6bCgwLHQubGVuZ3RoKSk7cmV0dXJuIHQ9PmUodCl9dXBkYXRlVGVtcGxhdGVzKCl7a0l0KCJGaW5kaW5nIHNpbWlsYXIgc3ViZ3JhcGhzIiwoKCk9Pnt0aGlzLnRlbXBsYXRlcz0oZnVuY3Rpb24gdChlLG4pe2xldCBpPShmdW5jdGlvbiBvKHQsZSl7cmV0dXJuIHdlLnJlZHVjZSh0LChmdW5jdGlvbih0LG4pe2xldCBpPW5bMF0scj1bXTtyZXR1cm4gblsxXS5ub2Rlcy5mb3JFYWNoKChmdW5jdGlvbih0KXtmb3IobGV0IG49MDtuPHIubGVuZ3RoO24rKylpZighZXx8ek90KHJbbl0ubWV0YW5vZGUubWV0YWdyYXBoLHQubWV0YWdyYXBoKSlyZXR1cm4gdC50ZW1wbGF0ZUlkPXJbbl0ubWV0YW5vZGUudGVtcGxhdGVJZCx2b2lkIHJbbl0ubWVtYmVycy5wdXNoKHQubmFtZSk7dC50ZW1wbGF0ZUlkPWkrIlsiK3IubGVuZ3RoKyJdIixyLnB1c2goe21ldGFub2RlOnQsbWVtYmVyczpbdC5uYW1lXX0pfSkpLHIuZm9yRWFjaCgoZnVuY3Rpb24oZSl7dFtlLm1ldGFub2RlLnRlbXBsYXRlSWRdPXtsZXZlbDpuWzFdLmxldmVsLG5vZGVzOmUubWVtYmVyc319KSksdH0pLHt9KX0pKChmdW5jdGlvbiByKHQpe2NvbnN0IGU9dC5nZXROb2RlTWFwKCk7bGV0IG49T2JqZWN0LmtleXMoZSkucmVkdWNlKCgodCxuKT0+e2NvbnN0IGk9ZVtuXTtpZihpLnR5cGUhPT1XSXQuTUVUQSlyZXR1cm4gdDtsZXQgcj1uLnNwbGl0KCIvIikubGVuZ3RoLTEsbz0oZnVuY3Rpb24gYSh0KXtyZXR1cm4gd2UubWFwKHtkZXB0aDp0LmRlcHRoLCJ8VnwiOnQubWV0YWdyYXBoLm5vZGVzKCkubGVuZ3RoLCJ8RXwiOnQubWV0YWdyYXBoLmVkZ2VzKCkubGVuZ3RofSwoZnVuY3Rpb24odCxlKXtyZXR1cm4gZSsiPSIrdH0pKS5qb2luKCIgIikrIiBbb3BzXSAiK3dlLm1hcCh0Lm9wSGlzdG9ncmFtLChmdW5jdGlvbih0LGUpe3JldHVybiBlKyI9Iit0fSkpLmpvaW4oIiwiKX0pKGkpLHM9dFtvXXx8e25vZGVzOltdLGxldmVsOnJ9O3JldHVybiB0W29dPXMscy5ub2Rlcy5wdXNoKGkpLHMubGV2ZWw+ciYmKHMubGV2ZWw9ciksdH0pLHt9KTtyZXR1cm4gT2JqZWN0LmtleXMobikubWFwKCh0PT5bdCxuW3RdXSkpLmZpbHRlcigoKFt0LGVdKT0+e2NvbnN0e25vZGVzOm59PWU7aWYobi5sZW5ndGg+MSlyZXR1cm4hMDtjb25zdCBpPW5bMF07cmV0dXJuIGkudHlwZT09PVdJdC5NRVRBJiZpLmFzc29jaWF0ZWRGdW5jdGlvbn0pKS5zb3J0KCgoW3QsZV0pPT5lLm5vZGVzWzBdLmRlcHRoKSl9KShlKSxuKTtyZXR1cm4gT2JqZWN0LmtleXMoaSkuc29ydCgodD0+aVt0XS5sZXZlbCkpLnJlZHVjZSgoKHQsZSk9Pih0W2VdPWlbZV0sdCkpLHt9KX0pKHRoaXMsdGhpcy52ZXJpZnlUZW1wbGF0ZSksdGhpcy5kaXNwYXRjaEV2ZW50KEJPdC5URU1QTEFURVNfVVBEQVRFRCl9KSx2SXQuSElFUkFSQ0hZX0ZJTkRfU0lNSUxBUl9TVUJHUkFQSFMpfX1mdW5jdGlvbiBGT3QodCxlLG4saSl7bGV0IHI9bj90LmluRWRnZXMoZS5uYW1lKTp0Lm91dEVkZ2VzKGUubmFtZSk7d2UuZWFjaChyLChlPT57bGV0IG49dC5lZGdlKGUpOyhuLm51bVJlZ3VsYXJFZGdlcz9pLnJlZ3VsYXI6aS5jb250cm9sKS5wdXNoKG4pfSkpfWNvbnN0IFZPdD17dmVyaWZ5VGVtcGxhdGU6ITAsc2VyaWVzTm9kZU1pblNpemU6NSxzZXJpZXNNYXA6bmV3IE1hcCxyYW5rRGlyZWN0aW9uOiJCVCIsdXNlR2VuZXJhbGl6ZWRTZXJpZXNQYXR0ZXJuczohMX07ZnVuY3Rpb24gak90KHQsZSxuKXtjb25zdCBpPW5ldyBIT3QoZSkscj17fTtyZXR1cm4gSUl0KCJBZGRpbmcgbm9kZXMiLDMwLCgoKT0+e2xldCBlPXt9LG49e307d2UuZWFjaCh0Lm5vZGVzLCgodCxpKT0+e3QuZGV2aWNlJiYoZVt0LmRldmljZV09ITApLHQueGxhQ2x1c3RlciYmKG5bdC54bGFDbHVzdGVyXT0hMCl9KSksaS5kZXZpY2VzPXdlLmtleXMoZSksaS54bGFDbHVzdGVycz13ZS5rZXlzKG4pLChmdW5jdGlvbiByKHQsZSl7Y29uc3Qgbj17fTt3ZS5lYWNoKGUubm9kZXMsKChlLGkpPT57bGV0IHI9aE50KGUubmFtZSksbz10LnJvb3Q7by5kZXB0aD1NYXRoLm1heChyLmxlbmd0aCxvLmRlcHRoKSxuW2Uub3BdfHwobltlLm9wXT1bXSksbltlLm9wXS5wdXNoKGUpO2ZvcihsZXQgaT0wO2k8ci5sZW5ndGgmJihvLmRlcHRoPU1hdGgubWF4KG8uZGVwdGgsci5sZW5ndGgtaSksby5jYXJkaW5hbGl0eSs9ZS5jYXJkaW5hbGl0eSxvLm9wSGlzdG9ncmFtW2Uub3BdPShvLm9wSGlzdG9ncmFtW2Uub3BdfHwwKSsxLG51bGwhPWUuZGV2aWNlJiYoby5kZXZpY2VIaXN0b2dyYW1bZS5kZXZpY2VdPShvLmRldmljZUhpc3RvZ3JhbVtlLmRldmljZV18fDApKzEpLG51bGwhPWUueGxhQ2x1c3RlciYmKG8ueGxhQ2x1c3Rlckhpc3RvZ3JhbVtlLnhsYUNsdXN0ZXJdPShvLnhsYUNsdXN0ZXJIaXN0b2dyYW1bZS54bGFDbHVzdGVyXXx8MCkrMSksZS5jb21wYXRpYmxlP28uY29tcGF0aWJpbGl0eUhpc3RvZ3JhbS5jb21wYXRpYmxlPShvLmNvbXBhdGliaWxpdHlIaXN0b2dyYW0uY29tcGF0aWJsZXx8MCkrMTpvLmNvbXBhdGliaWxpdHlIaXN0b2dyYW0uaW5jb21wYXRpYmxlPShvLmNvbXBhdGliaWxpdHlIaXN0b2dyYW0uaW5jb21wYXRpYmxlfHwwKSsxLHdlLmVhY2goZS5pbkVtYmVkZGluZ3MsKHQ9Pnt0LmNvbXBhdGlibGU/by5jb21wYXRpYmlsaXR5SGlzdG9ncmFtLmNvbXBhdGlibGU9KG8uY29tcGF0aWJpbGl0eUhpc3RvZ3JhbS5jb21wYXRpYmxlfHwwKSsxOm8uY29tcGF0aWJpbGl0eUhpc3RvZ3JhbS5pbmNvbXBhdGlibGU9KG8uY29tcGF0aWJpbGl0eUhpc3RvZ3JhbS5pbmNvbXBhdGlibGV8fDApKzF9KSksd2UuZWFjaChlLm91dEVtYmVkZGluZ3MsKHQ9Pnt0LmNvbXBhdGlibGU/by5jb21wYXRpYmlsaXR5SGlzdG9ncmFtLmNvbXBhdGlibGU9KG8uY29tcGF0aWJpbGl0eUhpc3RvZ3JhbS5jb21wYXRpYmxlfHwwKSsxOm8uY29tcGF0aWJpbGl0eUhpc3RvZ3JhbS5pbmNvbXBhdGlibGU9KG8uY29tcGF0aWJpbGl0eUhpc3RvZ3JhbS5pbmNvbXBhdGlibGV8fDApKzF9KSksaSE9PXIubGVuZ3RoLTEpO2krKyl7bGV0IGU9cltpXSxhPXQubm9kZShlKTtpZighYSYmKGE9Wkl0KGUsdC5ncmFwaE9wdGlvbnMpLGEucGFyZW50Tm9kZT1vLHQuc2V0Tm9kZShlLGEpLG8ubWV0YWdyYXBoLnNldE5vZGUoZSxhKSwwPT09ZS5pbmRleE9mKFVJdCkmJm8ubmFtZT09PWpJdCkpe2NvbnN0IGk9ZS5zdWJzdHJpbmcoVUl0Lmxlbmd0aCk7bltpXXx8KG5baV09W10pLHQubGlicmFyeUZ1bmN0aW9uc1tpXT17bm9kZTphLHVzYWdlczpuW2ldfSxhLmFzc29jaWF0ZWRGdW5jdGlvbj1pfW89YX10LnNldE5vZGUoZS5uYW1lLGUpLGUucGFyZW50Tm9kZT1vLG8ubWV0YWdyYXBoLnNldE5vZGUoZS5uYW1lLGUpLHdlLmVhY2goZS5pbkVtYmVkZGluZ3MsKGZ1bmN0aW9uKG4pe3Quc2V0Tm9kZShuLm5hbWUsbiksbi5wYXJlbnROb2RlPWV9KSksd2UuZWFjaChlLm91dEVtYmVkZGluZ3MsKGZ1bmN0aW9uKG4pe3Quc2V0Tm9kZShuLm5hbWUsbiksbi5wYXJlbnROb2RlPWV9KSl9KSl9KShpLHQpfSksbix2SXQuSElFUkFSQ0hZX0FERF9OT0RFUykudGhlbigoKCk9PklJdCgiRGV0ZWN0IHNlcmllcyIsMzAsKCgpPT57ZS5zZXJpZXNOb2RlTWluU2l6ZT4wJiZVT3QoaS5yb290LGkscixlLnNlcmllc05vZGVNaW5TaXplLGUuc2VyaWVzTWFwLGUudXNlR2VuZXJhbGl6ZWRTZXJpZXNQYXR0ZXJucyl9KSxuLHZJdC5ISUVSQVJDSFlfREVURUNUX1NFUklFUykpKS50aGVuKCgoKT0+SUl0KCJBZGRpbmcgZWRnZXMiLDQwLCgoKT0+eyEoZnVuY3Rpb24gZSh0LG4saSl7bGV0IHI9dC5nZXROb2RlTWFwKCksbz1bXSxhPVtdLHM9KHQsZSk9PntsZXQgbj0wO2Zvcig7dDspZVtuKytdPXQubmFtZSx0PXQucGFyZW50Tm9kZTtyZXR1cm4gbi0xfTt3ZS5lYWNoKG4uZWRnZXMsKGU9PntsZXQgaT1zKG4ubm9kZXNbZS52XSxvKSxsPXMobi5ub2Rlc1tlLnddLGEpO2lmKC0xPT09aXx8LTE9PT1sKXJldHVybjtmb3IoO29baV09PT1hW2xdOylpZihpLS0sbC0tLGk8MHx8bDwwKXRocm93IEVycm9yKCJObyBkaWZmZXJlbmNlIGZvdW5kIGJldHdlZW4gYW5jZXN0b3IgcGF0aHMuIik7bGV0IGM9cltvW2krMV1dLHU9b1tpXSxoPWFbbF0sZD1jLm1ldGFncmFwaC5lZGdlKHUsaCk7ZHx8KGQ9UUl0KHUsaCksYy5tZXRhZ3JhcGguc2V0RWRnZSh1LGgsZCkpLGMuaGFzTm9uQ29udHJvbEVkZ2VzfHxlLmlzQ29udHJvbERlcGVuZGVuY3l8fChjLmhhc05vbkNvbnRyb2xFZGdlcz0hMCksZC5hZGRCYXNlRWRnZShlLHQpfSkpfSkoaSx0KX0pLG4sdkl0LkhJRVJBUkNIWV9BRERfRURHRVMpKSkudGhlbigoKCk9PmkpKX1mdW5jdGlvbiBVT3QodCxlLG4saSxyLG8pe2xldCBhPXQubWV0YWdyYXBoO3dlLmVhY2goYS5ub2RlcygpLCh0PT57bGV0IHM9YS5ub2RlKHQpO3MudHlwZT09PVdJdC5NRVRBJiZVT3QocyxlLG4saSxyLG8pfSkpO2xldCBzPShmdW5jdGlvbiBsKHQpe3JldHVybiB3ZS5yZWR1Y2UodC5ub2RlcygpLCgoZSxuKT0+e2xldCBpPXQubm9kZShuKTtpZihpLnR5cGU9PT1XSXQuTUVUQSlyZXR1cm4gZTtsZXQgcj1pLm9wO3JldHVybiByJiYoZVtyXT1lW3JdfHxbXSxlW3JdLnB1c2goaS5uYW1lKSksZX0pLHt9KX0pKGEpLGM9KG8/V090OkdPdCkocyxhLGUuZ3JhcGhPcHRpb25zKTt3ZS5lYWNoKGMsKGZ1bmN0aW9uKHQscil7bGV0IG89dC5tZXRhZ3JhcGgubm9kZXMoKTt3ZS5lYWNoKG8sKHQ9PntsZXQgZT1hLm5vZGUodCk7ZS5vd25pbmdTZXJpZXN8fChlLm93bmluZ1Nlcmllcz1yKX0pKSxvLmxlbmd0aDxpJiZlLmdldFNlcmllc0dyb3VwVHlwZSh0Lm5hbWUpPT09WUl0LkdST1VQJiZlLnNldFNlcmllc0dyb3VwVHlwZSh0Lm5hbWUsWUl0LlVOR1JPVVApLGUuZ2V0U2VyaWVzR3JvdXBUeXBlKHQubmFtZSkhPT1ZSXQuVU5HUk9VUCYmKGUuc2V0Tm9kZShyLHQpLGEuc2V0Tm9kZShyLHQpLHdlLmVhY2gobywoZT0+e2xldCBpPWEubm9kZShlKTt0Lm1ldGFncmFwaC5zZXROb2RlKGUsaSksdC5wYXJlbnROb2RlPWkucGFyZW50Tm9kZSx0LmNhcmRpbmFsaXR5KyssbnVsbCE9aS5kZXZpY2UmJih0LmRldmljZUhpc3RvZ3JhbVtpLmRldmljZV09KHQuZGV2aWNlSGlzdG9ncmFtW2kuZGV2aWNlXXx8MCkrMSksbnVsbCE9aS54bGFDbHVzdGVyJiYodC54bGFDbHVzdGVySGlzdG9ncmFtW2kueGxhQ2x1c3Rlcl09KHQueGxhQ2x1c3Rlckhpc3RvZ3JhbVtpLnhsYUNsdXN0ZXJdfHwwKSsxKSxpLmNvbXBhdGlibGU/dC5jb21wYXRpYmlsaXR5SGlzdG9ncmFtLmNvbXBhdGlibGU9KHQuY29tcGF0aWJpbGl0eUhpc3RvZ3JhbS5jb21wYXRpYmxlfHwwKSsxOnQuY29tcGF0aWJpbGl0eUhpc3RvZ3JhbS5pbmNvbXBhdGlibGU9KHQuY29tcGF0aWJpbGl0eUhpc3RvZ3JhbS5pbmNvbXBhdGlibGV8fDApKzEsd2UuZWFjaChpLmluRW1iZWRkaW5ncywoZT0+e2UuY29tcGF0aWJsZT90LmNvbXBhdGliaWxpdHlIaXN0b2dyYW0uY29tcGF0aWJsZT0odC5jb21wYXRpYmlsaXR5SGlzdG9ncmFtLmNvbXBhdGlibGV8fDApKzE6dC5jb21wYXRpYmlsaXR5SGlzdG9ncmFtLmluY29tcGF0aWJsZT0odC5jb21wYXRpYmlsaXR5SGlzdG9ncmFtLmluY29tcGF0aWJsZXx8MCkrMX0pKSx3ZS5lYWNoKGkub3V0RW1iZWRkaW5ncywoZT0+e2UuY29tcGF0aWJsZT90LmNvbXBhdGliaWxpdHlIaXN0b2dyYW0uY29tcGF0aWJsZT0odC5jb21wYXRpYmlsaXR5SGlzdG9ncmFtLmNvbXBhdGlibGV8fDApKzE6dC5jb21wYXRpYmlsaXR5SGlzdG9ncmFtLmluY29tcGF0aWJsZT0odC5jb21wYXRpYmlsaXR5SGlzdG9ncmFtLmluY29tcGF0aWJsZXx8MCkrMX0pKSxpLnBhcmVudE5vZGU9dCxuW2VdPXIsYS5yZW1vdmVOb2RlKGUpfSkpKX0pKX1mdW5jdGlvbiBHT3QodCxlLG4pe2xldCBpPXt9O3JldHVybiB3ZS5lYWNoKHQsKGZ1bmN0aW9uKHQscil7aWYodC5sZW5ndGg8PTEpcmV0dXJuO2xldCBvPXt9O3dlLmVhY2godCwoZnVuY3Rpb24odCl7Y29uc3QgZT0iKiI9PT10LmNoYXJBdCh0Lmxlbmd0aC0xKSxpPXQuc3BsaXQoIi8iKSxyPWlbaS5sZW5ndGgtMV0sYT1pLnNsaWNlKDAsaS5sZW5ndGgtMSkuam9pbigiLyIpLHM9ci5tYXRjaCgvXihcRCopKFxkKykkLyk7bGV0IGwsYyx1PSIiO3M/KGw9c1sxXSxjPXNbMl0pOihsPWU/ci5zdWJzdHIoMCxyLmxlbmd0aC0xKTpyLGM9MCx1PWU/IioiOiIiKTtjb25zdCBoPW5OdChsLHUsYSk7b1toXT1vW2hdfHxbXTtjb25zdCBkPWVOdChsLHUsYSwrYyx0LG4pO29baF0ucHVzaChkKX0pKSx3ZS5lYWNoKG8sKGZ1bmN0aW9uKHQsbyl7aWYodC5sZW5ndGg8MilyZXR1cm47dC5zb3J0KChmdW5jdGlvbih0LGUpe3JldHVybit0LmNsdXN0ZXJJZC0rZS5jbHVzdGVySWR9KSk7bGV0IGE9W3RbMF1dO2ZvcihsZXQgbz0xO288dC5sZW5ndGg7bysrKXtsZXQgcz10W29dO3MuY2x1c3RlcklkIT09YVthLmxlbmd0aC0xXS5jbHVzdGVySWQrMT8ocU90KGEsaSwrcixlLG4pLGE9W3NdKTphLnB1c2gocyl9cU90KGEsaSwrcixlLG4pfSkpfSkpLGl9ZnVuY3Rpb24gV090KHQsZSxuKXtsZXQgaT17fTtyZXR1cm4gd2UuZWFjaCh0LChmdW5jdGlvbih0LHIpe2lmKHQubGVuZ3RoPD0xKXJldHVybjtsZXQgbz17fSxhPXt9O3dlLmVhY2godCwoZnVuY3Rpb24odCl7bGV0IGU9IioiPT09dC5jaGFyQXQodC5sZW5ndGgtMSksaT10LnNwbGl0KCIvIikscj1pW2kubGVuZ3RoLTFdLHM9aS5zbGljZSgwLGkubGVuZ3RoLTEpLmpvaW4oIi8iKTtjb25zdCBsPS8oXGQrKS9nO2xldCBjLHUsaCxkLHAsZj0wO2Zvcig7Yz1sLmV4ZWMocik7KSsrZix1PXIuc2xpY2UoMCxjLmluZGV4KSxoPWNbMF0sZD1yLnNsaWNlKGMuaW5kZXgrY1swXS5sZW5ndGgpLHA9bk50KHUsZCxzKSxvW3BdPW9bcF0sb1twXXx8KG9bcF09ZU50KHUsZCxzLCtoLHQsbikpLG9bcF0uaWRzLnB1c2goaCksYVt0XT1hW3RdfHxbXSxhW3RdLnB1c2goW3AsaF0pO2Y8MSYmKHU9ZT9yLnN1YnN0cigwLHIubGVuZ3RoLTEpOnIsaD0wLGQ9ZT8iKiI6IiIscD1uTnQodSxkLHMpLG9bcF09b1twXSxvW3BdfHwob1twXT1lTnQodSxkLHMsK2gsdCxuKSksb1twXS5pZHMucHVzaChoKSxhW3RdPWFbdF18fFtdLGFbdF0ucHVzaChbcCxoXSkpfSkpO3ZhciBzPXt9O3dlLmVhY2goYSwoZnVuY3Rpb24odCxlKXt0LnNvcnQoKGZ1bmN0aW9uKHQsZSl7cmV0dXJuIG9bZVswXV0uaWRzLmxlbmd0aC1vW3RbMF1dLmlkcy5sZW5ndGh9KSk7dmFyIGk9dFswXVswXSxyPXRbMF1bMV07c1tpXT1zW2ldfHxbXTtjb25zdCBhPWUuc3BsaXQoIi8iKSxsPWEuc2xpY2UoMCxhLmxlbmd0aC0xKS5qb2luKCIvIik7dmFyIGM9ZU50KG9baV0ucHJlZml4LG9baV0uc3VmZml4LGwsK3IsZSxuKTtzW2ldLnB1c2goYyl9KSksd2UuZWFjaChzLChmdW5jdGlvbih0LG8pe2lmKHQubGVuZ3RoPDIpcmV0dXJuO3Quc29ydCgoZnVuY3Rpb24odCxlKXtyZXR1cm4rdC5jbHVzdGVySWQtK2UuY2x1c3RlcklkfSkpO2xldCBhPVt0WzBdXTtmb3IobGV0IG89MTtvPHQubGVuZ3RoO28rKyl7bGV0IHM9dFtvXTtzLmNsdXN0ZXJJZCE9PWFbYS5sZW5ndGgtMV0uY2x1c3RlcklkKzE/KHFPdChhLGksK3IsZSxuKSxhPVtzXSk6YS5wdXNoKHMpfXFPdChhLGksK3IsZSxuKX0pKX0pKSxpfWZ1bmN0aW9uIHFPdCh0LGUsbixpLHIpe2lmKHQubGVuZ3RoPjEpe2xldCBvPW5OdCh0WzBdLnByZWZpeCx0WzBdLnN1ZmZpeCx0WzBdLnBhcmVudCx0WzBdLmNsdXN0ZXJJZCx0W3QubGVuZ3RoLTFdLmNsdXN0ZXJJZCksYT1lTnQodFswXS5wcmVmaXgsdFswXS5zdWZmaXgsdFswXS5wYXJlbnQsbixvLHIpO3dlLmVhY2godCwoZnVuY3Rpb24odCl7YS5pZHMucHVzaCh0LmNsdXN0ZXJJZCksYS5tZXRhZ3JhcGguc2V0Tm9kZSh0Lm5hbWUsaS5ub2RlKHQubmFtZSkpfSkpLGVbb109YX19bGV0IFlPdD1jbGFzcyBleHRlbmRzKHRyKHllKSl7Y29uc3RydWN0b3IoKXtzdXBlciguLi5hcmd1bWVudHMpLHRoaXMuX2V4cGFuZGVkPSEwLHRoaXMuX29wQ29tcGF0Q29sb3I9cE50LHRoaXMuX29wSW5jb21wYXRDb2xvcj1mTnQsdGhpcy5fdGVtcGxhdGVJbmRleD1udWxsfV9nZXROb2RlKHQsZSl7cmV0dXJuIGUubm9kZSh0KX1fZ2V0UmVuZGVySW5mbyh0LGUpe3JldHVybiB0aGlzLnJlbmRlckhpZXJhcmNoeS5nZXRPckNyZWF0ZVJlbmRlck5vZGVCeU5hbWUodCl9X3RvZ2dsZUV4cGFuZGVkKCl7dGhpcy5fZXhwYW5kZWQ9IXRoaXMuX2V4cGFuZGVkfV9nZXRUb2dnbGVJY29uKHQpe3JldHVybiB0PyJleHBhbmQtbGVzcyI6ImV4cGFuZC1tb3JlIn1fcmVzaXplTGlzdCh0KXt2YXIgZT1kb2N1bWVudC5xdWVyeVNlbGVjdG9yKHQpO2UmJmUuZmlyZSgiaXJvbi1yZXNpemUiKX1nZXQgX2luY29tcGF0aWJsZU9wTm9kZXMoKXtjb25zdCB0PXRoaXMuZ3JhcGhIaWVyYXJjaHk7cmV0dXJuIHQmJnQucm9vdD8odGhpcy5hc3luYyh0aGlzLl9yZXNpemVMaXN0LmJpbmQodGhpcywiI2luY29tcGF0aWJsZU9wc0xpc3QiKSksKGZ1bmN0aW9uIGUodCl7Y29uc3QgZT1bXSxuPXt9O3JldHVybiB3ZS5lYWNoKHQucm9vdC5sZWF2ZXMoKSwoaT0+e2xldCByPXQubm9kZShpKTtpZihyLnR5cGU9PVdJdC5PUCl7bGV0IGk9cjtpZighaS5jb21wYXRpYmxlKWlmKGkub3duaW5nU2VyaWVzKXtpZih0LmdldFNlcmllc0dyb3VwVHlwZShpLm93bmluZ1Nlcmllcyk9PT1ZSXQuVU5HUk9VUCllLnB1c2goaSk7ZWxzZSBpZighbltpLm93bmluZ1Nlcmllc10pe2xldCByPXQubm9kZShpLm93bmluZ1Nlcmllcyk7ciYmKG5baS5vd25pbmdTZXJpZXNdPXIsZS5wdXNoKHIpKX19ZWxzZSBlLnB1c2goaSk7d2UuZWFjaChpLmluRW1iZWRkaW5ncywodD0+e3QuY29tcGF0aWJsZXx8ZS5wdXNoKHQpfSkpLHdlLmVhY2goaS5vdXRFbWJlZGRpbmdzLCh0PT57dC5jb21wYXRpYmxlfHxlLnB1c2godCl9KSl9fSkpLGV9KSh0KSk6W119Z2V0IF9vcENvbXBhdFNjb3JlKCl7dmFyIHQ9dGhpcy5ncmFwaEhpZXJhcmNoeTtpZih0JiZ0LnJvb3Qpe3ZhciBlPXQucm9vdCxuPWUuY29tcGF0aWJpbGl0eUhpc3RvZ3JhbS5jb21wYXRpYmxlLGk9ZS5jb21wYXRpYmlsaXR5SGlzdG9ncmFtLmluY29tcGF0aWJsZTtyZXR1cm4gMD09biYmMD09aT8wOk1hdGguZmxvb3IoMTAwKm4vKG4raSkpLzEwMH1yZXR1cm4gMH1nZXQgX29wQ29tcGF0U2NvcmVMYWJlbCgpe3ZhciB0PXRoaXMuX29wQ29tcGF0U2NvcmU7cmV0dXJuIHB5KCIuMCUiKSh0KX1nZXQgX3RvdGFsSW5jb21wYXRPcHMoKXt2YXIgdD10aGlzLmdyYXBoSGllcmFyY2h5O3JldHVybiB0JiZ0LnJvb3Q/dC5yb290LmNvbXBhdGliaWxpdHlIaXN0b2dyYW0uaW5jb21wYXRpYmxlOjB9X2dyYXBoSGllcmFyY2h5Q2hhbmdlZCgpe3RoaXMuX3RlbXBsYXRlSW5kZXg9dGhpcy5ncmFwaEhpZXJhcmNoeS5nZXRUZW1wbGF0ZUluZGV4KCksdGhpcy5ncmFwaEhpZXJhcmNoeS5hZGRMaXN0ZW5lcihCT3QuVEVNUExBVEVTX1VQREFURUQsKCgpPT57dGhpcy5fdGVtcGxhdGVJbmRleD10aGlzLmdyYXBoSGllcmFyY2h5LmdldFRlbXBsYXRlSW5kZXgoKX0pKX19O1lPdC50ZW1wbGF0ZT1fZWAKICAgIDxzdHlsZT4KICAgICAgOmhvc3QgewogICAgICAgIG1heC1oZWlnaHQ6IDUwMHB4OwogICAgICB9CgogICAgICAuaW5jb21wYXRpYmxlLW9wcy1saXN0IHsKICAgICAgICBoZWlnaHQ6IDM1MHB4OwogICAgICAgIG1heC1oZWlnaHQ6IDQwMHB4OwogICAgICAgIG92ZXJmbG93LXk6IHNjcm9sbDsKICAgICAgICBkaXNwbGF5OiBmbGV4OwogICAgICAgIGZsZXgtZGlyZWN0aW9uOiBjb2x1bW47CiAgICAgIH0KCiAgICAgIGlyb24tbGlzdCB7CiAgICAgICAgZmxleDogMSAxIGF1dG87CiAgICAgIH0KCiAgICAgIHBhcGVyLWl0ZW0gewogICAgICAgIHBhZGRpbmc6IDA7CiAgICAgICAgYmFja2dyb3VuZDogI2U5ZTllOTsKICAgICAgfQoKICAgICAgcGFwZXItaXRlbS1ib2R5W3R3by1saW5lXSB7CiAgICAgICAgbWluLWhlaWdodDogMDsKICAgICAgICBwYWRkaW5nOiA4cHggMTJweCA0cHg7CiAgICAgIH0KCiAgICAgIC5leHBhbmRlZEluZm8gewogICAgICAgIHBhZGRpbmc6IDhweCAxMnB4OwogICAgICAgIGZvbnQtd2VpZ2h0OiA1MDA7CiAgICAgICAgZm9udC1zaXplOiAxMnB0OwogICAgICAgIHdpZHRoOiAxMDAlOwogICAgICB9CgogICAgICAubm9kZS1uYW1lIHsKICAgICAgICB3aGl0ZS1zcGFjZTogbm9ybWFsOwogICAgICAgIHdvcmQtd3JhcDogYnJlYWstd29yZDsKICAgICAgICBmb250LXNpemU6IDE0cHQ7CiAgICAgICAgZm9udC13ZWlnaHQ6IDUwMDsKICAgICAgfQoKICAgICAgLnN1YnRpdGxlIHsKICAgICAgICBmb250LXNpemU6IDEycHQ7CiAgICAgICAgY29sb3I6ICM1ZTVlNWU7CiAgICAgIH0KCiAgICAgIC50b2dnbGUtYnV0dG9uIHsKICAgICAgICBmbG9hdDogcmlnaHQ7CiAgICAgICAgbWF4LWhlaWdodDogMjBweDsKICAgICAgICBtYXgtd2lkdGg6IDIwcHg7CiAgICAgICAgcGFkZGluZzogMDsKICAgICAgfQoKICAgICAgLm5vbi1jb250cm9sLWxpc3QtaXRlbSB7CiAgICAgICAgcGFkZGluZy1sZWZ0OiAxMHB4OwogICAgICB9CgogICAgICBkaXYub3AtY29tcGF0LWRpc3BsYXkgewogICAgICAgIG1hcmdpbi10b3A6IDEwcHg7CiAgICAgICAgZGlzcGxheTogaW5saW5lLWJsb2NrOwogICAgICB9CgogICAgICBzdmcub3AtY29tcGF0IHsKICAgICAgICB3aWR0aDogMjUwcHg7CiAgICAgICAgaGVpZ2h0OiAyNXB4OwogICAgICAgIGZsb2F0OiBsZWZ0OwogICAgICB9CgogICAgICBkaXYub3AtY29tcGF0LXZhbHVlIHsKICAgICAgICBmbG9hdDogcmlnaHQ7CiAgICAgICAgaGVpZ2h0OiAxMDAlOwogICAgICAgIGZvbnQtc2l6ZTogMTRweDsKICAgICAgICBjb2xvcjogYmxhY2s7CiAgICAgICAgbWFyZ2luLWxlZnQ6IDEwcHg7CiAgICAgIH0KICAgIDwvc3R5bGU+CgogICAgPHBhcGVyLWl0ZW0+CiAgICAgIDxwYXBlci1pdGVtLWJvZHkgdHdvLWxpbmU+CiAgICAgICAgPGRpdj4KICAgICAgICAgIDxwYXBlci1pY29uLWJ1dHRvbgogICAgICAgICAgICBpY29uPSJ7e19nZXRUb2dnbGVJY29uKF9leHBhbmRlZCl9fSIKICAgICAgICAgICAgb24tY2xpY2s9Il90b2dnbGVFeHBhbmRlZCIKICAgICAgICAgICAgY2xhc3M9InRvZ2dsZS1idXR0b24iCiAgICAgICAgICA+CiAgICAgICAgICA8L3BhcGVyLWljb24tYnV0dG9uPgogICAgICAgICAgPGRpdiBjbGFzcz0ibm9kZS1uYW1lIiBpZD0ibm9kZXRpdGxlIj5bW25vZGVUaXRsZV1dPC9kaXY+CiAgICAgICAgPC9kaXY+CiAgICAgICAgPGRpdiBzZWNvbmRhcnk+CiAgICAgICAgICA8ZGl2IGNsYXNzPSJzdWJ0aXRsZSI+CiAgICAgICAgICAgIDxkaXYgY2xhc3M9Im9wLWNvbXBhdC1kaXNwbGF5Ij4KICAgICAgICAgICAgICA8c3ZnCiAgICAgICAgICAgICAgICBjbGFzcz0ib3AtY29tcGF0IgogICAgICAgICAgICAgICAgcHJlc2VydmVBc3BlY3RSYXRpbz0ieE1pbllNaWQgbWVldCIKICAgICAgICAgICAgICAgIHZpZXdCb3g9IjAgMCAyNTAgMjUiCiAgICAgICAgICAgICAgPgogICAgICAgICAgICAgICAgPGRlZnM+CiAgICAgICAgICAgICAgICAgIDxsaW5lYXJHcmFkaWVudCBpZD0ib3AtY29tcGF0LWZpbGwiPgogICAgICAgICAgICAgICAgICAgIDxzdG9wIG9mZnNldD0iMCIgc3RvcC1jb2xvciQ9IltbX29wQ29tcGF0Q29sb3JdXSI+PC9zdG9wPgogICAgICAgICAgICAgICAgICAgIDxzdG9wCiAgICAgICAgICAgICAgICAgICAgICBvZmZzZXQkPSJbW19vcENvbXBhdFNjb3JlXV0iCiAgICAgICAgICAgICAgICAgICAgICBzdG9wLWNvbG9yJD0iW1tfb3BDb21wYXRDb2xvcl1dIgogICAgICAgICAgICAgICAgICAgID48L3N0b3A+CiAgICAgICAgICAgICAgICAgICAgPHN0b3AKICAgICAgICAgICAgICAgICAgICAgIG9mZnNldCQ9IltbX29wQ29tcGF0U2NvcmVdXSIKICAgICAgICAgICAgICAgICAgICAgIHN0b3AtY29sb3IkPSJbW19vcEluY29tcGF0Q29sb3JdXSIKICAgICAgICAgICAgICAgICAgICA+PC9zdG9wPgogICAgICAgICAgICAgICAgICAgIDxzdG9wIG9mZnNldD0iMSIgc3RvcC1jb2xvciQ9IltbX29wSW5jb21wYXRDb2xvciBdXSI+PC9zdG9wPgogICAgICAgICAgICAgICAgICA8L2xpbmVhckdyYWRpZW50PgogICAgICAgICAgICAgICAgPC9kZWZzPgogICAgICAgICAgICAgICAgPHJlY3QKICAgICAgICAgICAgICAgICAgaGVpZ2h0PSIyNSIKICAgICAgICAgICAgICAgICAgd2lkdGg9IjI1MCIKICAgICAgICAgICAgICAgICAgcng9IjUiCiAgICAgICAgICAgICAgICAgIHJ5PSI1IgogICAgICAgICAgICAgICAgICBzdHlsZT0iZmlsbDogdXJsKCcjb3AtY29tcGF0LWZpbGwnKTsiCiAgICAgICAgICAgICAgICA+PC9yZWN0PgogICAgICAgICAgICAgIDwvc3ZnPgogICAgICAgICAgICAgIDxkaXYgY2xhc3M9Im9wLWNvbXBhdC12YWx1ZSI+W1tfb3BDb21wYXRTY29yZUxhYmVsXV08L2Rpdj4KICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICA8L2Rpdj4KICAgICAgICA8L2Rpdj4KICAgICAgPC9wYXBlci1pdGVtLWJvZHk+CiAgICA8L3BhcGVyLWl0ZW0+CgogICAgPGlyb24tY29sbGFwc2Ugb3BlbmVkPSJ7e19leHBhbmRlZH19Ij4KICAgICAgPHRlbXBsYXRlIGlzPSJkb20taWYiIGlmPSJ7e19leHBhbmRlZH19IiByZXN0YW1wPSJ0cnVlIj4KICAgICAgICA8ZGl2IGNsYXNzPSJleHBhbmRlZEluZm8iPgogICAgICAgICAgSW5jb21wYXRpYmxlIE9wZXJhdGlvbnM6ICg8c3Bhbj5bW190b3RhbEluY29tcGF0T3BzXV08L3NwYW4+KQogICAgICAgICAgPGlyb24tbGlzdAogICAgICAgICAgICBjbGFzcz0iaW5jb21wYXRpYmxlLW9wcy1saXN0IgogICAgICAgICAgICBpZD0iaW5jb21wYXRpYmxlT3BzTGlzdCIKICAgICAgICAgICAgaXRlbXM9IltbX2luY29tcGF0aWJsZU9wTm9kZXNdXSIKICAgICAgICAgID4KICAgICAgICAgICAgPHRlbXBsYXRlPgogICAgICAgICAgICAgIDx0Zi1ncmFwaC1vcC1jb21wYXQtbGlzdC1pdGVtCiAgICAgICAgICAgICAgICBjbGFzcz0ibm9uLWNvbnRyb2wtbGlzdC1pdGVtIgogICAgICAgICAgICAgICAgaXRlbS1ub2RlPSJbW2l0ZW1dXSIKICAgICAgICAgICAgICAgIGl0ZW0tcmVuZGVyLWluZm89IltbX2dldFJlbmRlckluZm8oaXRlbS5uYW1lLCByZW5kZXJIaWVyYXJjaHkpXV0iCiAgICAgICAgICAgICAgICBuYW1lPSJbW2l0ZW0ubmFtZV1dIgogICAgICAgICAgICAgICAgdGVtcGxhdGUtaW5kZXg9IltbX3RlbXBsYXRlSW5kZXhdXSIKICAgICAgICAgICAgICAgIGNvbG9yLWJ5PSJbW2NvbG9yQnldXSIKICAgICAgICAgICAgICAgIGl0ZW0tdHlwZT0iaW5jb21wYXRpYmxlLW9wcyIKICAgICAgICAgICAgICA+CiAgICAgICAgICAgICAgPC90Zi1ncmFwaC1vcC1jb21wYXQtbGlzdC1pdGVtPgogICAgICAgICAgICA8L3RlbXBsYXRlPgogICAgICAgICAgPC9pcm9uLWxpc3Q+CiAgICAgICAgPC9kaXY+CiAgICAgIDwvdGVtcGxhdGU+CiAgICA8L2lyb24tY29sbGFwc2U+CiAgYCx0KFtvKHt0eXBlOk9iamVjdH0pLGUoImRlc2lnbjp0eXBlIixIT3QpXSxZT3QucHJvdG90eXBlLCJncmFwaEhpZXJhcmNoeSIsdm9pZCAwKSx0KFtvKHt0eXBlOk9iamVjdH0pLGUoImRlc2lnbjp0eXBlIixiTnQpXSxZT3QucHJvdG90eXBlLCJyZW5kZXJIaWVyYXJjaHkiLHZvaWQgMCksdChbbyh7dHlwZTpTdHJpbmd9KSxlKCJkZXNpZ246dHlwZSIsU3RyaW5nKV0sWU90LnByb3RvdHlwZSwibm9kZVRpdGxlIix2b2lkIDApLHQoW28oe3R5cGU6Qm9vbGVhbn0pLGUoImRlc2lnbjp0eXBlIixCb29sZWFuKV0sWU90LnByb3RvdHlwZSwiX2V4cGFuZGVkIix2b2lkIDApLHQoW28oe3R5cGU6U3RyaW5nfSksZSgiZGVzaWduOnR5cGUiLFN0cmluZyldLFlPdC5wcm90b3R5cGUsIl9vcENvbXBhdENvbG9yIix2b2lkIDApLHQoW28oe3R5cGU6U3RyaW5nfSksZSgiZGVzaWduOnR5cGUiLFN0cmluZyldLFlPdC5wcm90b3R5cGUsIl9vcEluY29tcGF0Q29sb3IiLHZvaWQgMCksdChbbyh7dHlwZTpPYmplY3R9KSxlKCJkZXNpZ246dHlwZSIsRnVuY3Rpb24pXSxZT3QucHJvdG90eXBlLCJfdGVtcGxhdGVJbmRleCIsdm9pZCAwKSx0KFtzKCJncmFwaEhpZXJhcmNoeSIpLGUoImRlc2lnbjp0eXBlIixBcnJheSksZSgiZGVzaWduOnBhcmFtdHlwZXMiLFtdKV0sWU90LnByb3RvdHlwZSwiX2luY29tcGF0aWJsZU9wTm9kZXMiLG51bGwpLHQoW3MoImdyYXBoSGllcmFyY2h5IiksZSgiZGVzaWduOnR5cGUiLE51bWJlciksZSgiZGVzaWduOnBhcmFtdHlwZXMiLFtdKV0sWU90LnByb3RvdHlwZSwiX29wQ29tcGF0U2NvcmUiLG51bGwpLHQoW3MoIl9vcENvbXBhdFNjb3JlIiksZSgiZGVzaWduOnR5cGUiLFN0cmluZyksZSgiZGVzaWduOnBhcmFtdHlwZXMiLFtdKV0sWU90LnByb3RvdHlwZSwiX29wQ29tcGF0U2NvcmVMYWJlbCIsbnVsbCksdChbcygiZ3JhcGhIaWVyYXJjaHkiKSxlKCJkZXNpZ246dHlwZSIsTnVtYmVyKSxlKCJkZXNpZ246cGFyYW10eXBlcyIsW10pXSxZT3QucHJvdG90eXBlLCJfdG90YWxJbmNvbXBhdE9wcyIsbnVsbCksdChbYSgiZ3JhcGhIaWVyYXJjaHkiKSxlKCJkZXNpZ246dHlwZSIsRnVuY3Rpb24pLGUoImRlc2lnbjpwYXJhbXR5cGVzIixbXSksZSgiZGVzaWduOnJldHVybnR5cGUiLHZvaWQgMCldLFlPdC5wcm90b3R5cGUsIl9ncmFwaEhpZXJhcmNoeUNoYW5nZWQiLG51bGwpLFlPdD10KFtpKCJ0Zi1ncmFwaC1vcC1jb21wYXQtY2FyZCIpXSxZT3QpO2xldCBYT3Q9Y2xhc3MgZXh0ZW5kcyh0cih5ZSkpe19pdGVtVHlwZUNoYW5nZWQoKXsic3Vibm9kZSIhPT10aGlzLml0ZW1UeXBlP3RoaXMuJFsibGlzdC1pdGVtIl0uY2xhc3NMaXN0LmFkZCgiY2xpY2thYmxlIik6dGhpcy4kWyJsaXN0LWl0ZW0iXS5jbGFzc0xpc3QucmVtb3ZlKCJjbGlja2FibGUiKX1fbm9kZUxpc3RlbmVyKHQpe3RoaXMuZmlyZSgibm9kZS1saXN0LWl0ZW0tIit0LnR5cGUse2NhcmROb2RlOnRoaXMuY2FyZE5vZGUubmFtZSxub2RlTmFtZTp0aGlzLm5hbWUsdHlwZTp0aGlzLml0ZW1UeXBlfSl9X2ZhZGVkQ2xhc3ModCl7cmV0dXJuIHQmJnQuaXNGYWRlZE91dD8iZmFkZWQiOiIifX07WE90LnRlbXBsYXRlPV9lYAogICAgPHN0eWxlPgogICAgICAjbGlzdC1pdGVtIHsKICAgICAgICB3aWR0aDogMTAwJTsKICAgICAgICBjb2xvcjogIzU2NTY1NjsKICAgICAgICBmb250LXNpemU6IDExcHQ7CiAgICAgICAgZm9udC13ZWlnaHQ6IDQwMDsKICAgICAgICBwb3NpdGlvbjogcmVsYXRpdmU7CiAgICAgICAgZGlzcGxheTogaW5saW5lLWJsb2NrOwogICAgICB9CgogICAgICAjbGlzdC1pdGVtOmhvdmVyIHsKICAgICAgICBiYWNrZ3JvdW5kLWNvbG9yOiB2YXIoLS1nb29nbGUteWVsbG93LTEwMCk7CiAgICAgIH0KCiAgICAgIC5jbGlja2FibGUgewogICAgICAgIGN1cnNvcjogcG9pbnRlcjsKICAgICAgfQoKICAgICAgI2xpc3QtaXRlbSBzcGFuIHsKICAgICAgICBtYXJnaW4tbGVmdDogNDBweDsKICAgICAgfQoKICAgICAgI2xpc3QtaXRlbS5leGNsdWRlZCBzcGFuIHsKICAgICAgICBjb2xvcjogIzk5OTsKICAgICAgfQoKICAgICAgI2xpc3QtaXRlbSBzcGFuLmVkZ2UtbGFiZWwgewogICAgICAgIGZsb2F0OiByaWdodDsKICAgICAgICBmb250LXNpemU6IDEwcHg7CiAgICAgICAgbWFyZ2luLWxlZnQ6IDNweDsKICAgICAgICBtYXJnaW4tcmlnaHQ6IDVweDsKICAgICAgfQoKICAgICAgLm5vZGUtaWNvbiB7CiAgICAgICAgcG9zaXRpb246IGFic29sdXRlOwogICAgICAgIHRvcDogMXB4OwogICAgICAgIGxlZnQ6IDJweDsKICAgICAgfQoKICAgICAgLmZhZGVkIHNwYW4gewogICAgICAgIGNvbG9yOiB2YXIoLS10Yi1ncmFwaC1mYWRlZCk7CiAgICAgIH0KICAgIDwvc3R5bGU+CiAgICA8ZGl2CiAgICAgIGlkPSJsaXN0LWl0ZW0iCiAgICAgIG9uLW1vdXNlb3Zlcj0iX25vZGVMaXN0ZW5lciIKICAgICAgb24tbW91c2VvdXQ9Il9ub2RlTGlzdGVuZXIiCiAgICAgIG9uLWNsaWNrPSJfbm9kZUxpc3RlbmVyIgogICAgPgogICAgICA8ZGl2IGNsYXNzJD0ie3tfZmFkZWRDbGFzcyhpdGVtUmVuZGVySW5mbyl9fSI+CiAgICAgICAgPHRmLW5vZGUtaWNvbgogICAgICAgICAgY2xhc3M9Im5vZGUtaWNvbiIKICAgICAgICAgIGhlaWdodD0iMTIiCiAgICAgICAgICBjb2xvci1ieT0iW1tjb2xvckJ5XV0iCiAgICAgICAgICBjb2xvci1ieS1wYXJhbXM9IltbY29sb3JCeVBhcmFtc11dIgogICAgICAgICAgbm9kZT0iW1tpdGVtTm9kZV1dIgogICAgICAgICAgcmVuZGVyLWluZm89IltbaXRlbVJlbmRlckluZm9dXSIKICAgICAgICAgIHRlbXBsYXRlLWluZGV4PSJbW3RlbXBsYXRlSW5kZXhdXSIKICAgICAgICA+PC90Zi1ub2RlLWljb24+CiAgICAgICAgPHNwYW4gdGl0bGUkPSJbW25hbWVdXSI+W1tuYW1lXV08L3NwYW4+CiAgICAgICAgPHNwYW4gY2xhc3M9ImVkZ2UtbGFiZWwiPltbZWRnZUxhYmVsXV08L3NwYW4+CiAgICAgIDwvZGl2PgogICAgPC9kaXY+CiAgYCx0KFtvKHt0eXBlOk9iamVjdH0pLGUoImRlc2lnbjp0eXBlIixPYmplY3QpXSxYT3QucHJvdG90eXBlLCJjYXJkTm9kZSIsdm9pZCAwKSx0KFtvKHt0eXBlOk9iamVjdH0pLGUoImRlc2lnbjp0eXBlIixPYmplY3QpXSxYT3QucHJvdG90eXBlLCJpdGVtTm9kZSIsdm9pZCAwKSx0KFtvKHt0eXBlOlN0cmluZ30pLGUoImRlc2lnbjp0eXBlIixTdHJpbmcpXSxYT3QucHJvdG90eXBlLCJlZGdlTGFiZWwiLHZvaWQgMCksdChbbyh7dHlwZTpPYmplY3R9KSxlKCJkZXNpZ246dHlwZSIsT2JqZWN0KV0sWE90LnByb3RvdHlwZSwiaXRlbVJlbmRlckluZm8iLHZvaWQgMCksdChbbyh7dHlwZTpTdHJpbmd9KSxlKCJkZXNpZ246dHlwZSIsU3RyaW5nKV0sWE90LnByb3RvdHlwZSwibmFtZSIsdm9pZCAwKSx0KFtvKHt0eXBlOlN0cmluZyxvYnNlcnZlcjoiX2l0ZW1UeXBlQ2hhbmdlZCJ9KSxlKCJkZXNpZ246dHlwZSIsU3RyaW5nKV0sWE90LnByb3RvdHlwZSwiaXRlbVR5cGUiLHZvaWQgMCksdChbbyh7dHlwZTpTdHJpbmd9KSxlKCJkZXNpZ246dHlwZSIsU3RyaW5nKV0sWE90LnByb3RvdHlwZSwiY29sb3JCeSIsdm9pZCAwKSx0KFtvKHt0eXBlOk9iamVjdH0pLGUoImRlc2lnbjp0eXBlIixPYmplY3QpXSxYT3QucHJvdG90eXBlLCJjb2xvckJ5UGFyYW1zIix2b2lkIDApLHQoW28oe3R5cGU6T2JqZWN0fSksZSgiZGVzaWduOnR5cGUiLE9iamVjdCldLFhPdC5wcm90b3R5cGUsInRlbXBsYXRlSW5kZXgiLHZvaWQgMCksWE90PXQoW2koInRmLW5vZGUtbGlzdC1pdGVtIildLFhPdCk7bGV0ICRPdD1jbGFzcyBleHRlbmRzKHRyKHllKSl7Y29uc3RydWN0b3IoKXtzdXBlciguLi5hcmd1bWVudHMpLHRoaXMuX2V4cGFuZGVkPSEwLHRoaXMuX29wZW5lZENvbnRyb2xQcmVkPSExLHRoaXMuX29wZW5lZENvbnRyb2xTdWNjPSExLHRoaXMuX3RlbXBsYXRlSW5kZXg9bnVsbH1leHBhbmROb2RlKCl7dGhpcy5maXJlKCJfbm9kZS5leHBhbmQiLHRoaXMubm9kZSl9X2dldE5vZGUodCxlKXtyZXR1cm4gZS5ub2RlKHQpfV9nZXROb2RlU3RhdHModCxlKXt2YXIgbj10aGlzLl9nZXROb2RlKHQsZSk7cmV0dXJuIG4/bi5zdGF0czpudWxsfV9nZXRUb3RhbE1pY3Jvcyh0KXtyZXR1cm4gdD90LmdldFRvdGFsTWljcm9zKCk6MH1nZXQgX2hhc0Rpc3BsYXlhYmxlTm9kZVN0YXRzKCl7cmV0dXJuIERJdCh0aGlzLl9ub2RlU3RhdHMpfWdldCBfbm9kZVN0YXRzRm9ybWF0dGVkQnl0ZXMoKXt2YXIgdD10aGlzLl9ub2RlU3RhdHM7aWYodCYmdC50b3RhbEJ5dGVzKXJldHVybiB6SXQodC50b3RhbEJ5dGVzLE9JdCl9Z2V0IF9ub2RlU3RhdHNGb3JtYXR0ZWRDb21wdXRlVGltZSgpe3ZhciB0PXRoaXMuX25vZGVTdGF0cztpZih0JiZ0LmdldFRvdGFsTWljcm9zKCkpcmV0dXJuIHpJdCh0LmdldFRvdGFsTWljcm9zKCksUkl0KX1nZXQgX25vZGVTdGF0c0Zvcm1hdHRlZE91dHB1dFNpemVzKCl7dmFyIHQ9dGhpcy5fbm9kZVN0YXRzO2lmKHQmJnQub3V0cHV0U2l6ZSYmdC5vdXRwdXRTaXplLmxlbmd0aClyZXR1cm4gd2UubWFwKHQub3V0cHV0U2l6ZSwoZnVuY3Rpb24odCl7cmV0dXJuIDA9PT10Lmxlbmd0aD8ic2NhbGFyIjoiWyIrdC5qb2luKCIsICIpKyJdIn0pKX1fZ2V0UmVuZGVySW5mbyh0LGUpe3JldHVybiB0aGlzLnJlbmRlckhpZXJhcmNoeS5nZXRPckNyZWF0ZVJlbmRlck5vZGVCeU5hbWUodCl9Z2V0IF9hdHRyaWJ1dGVzKCl7dmFyIHQ9dGhpcy5fbm9kZTtpZih0aGlzLmFzeW5jKHRoaXMuX3Jlc2l6ZUxpc3QuYmluZCh0aGlzLCIjYXR0cmlidXRlc0xpc3QiKSksIXR8fCF0LmF0dHIpcmV0dXJuW107dmFyIGU9W107cmV0dXJuIHdlLmVhY2godC5hdHRyLChmdW5jdGlvbih0KXsiX3Rvb19sYXJnZV9hdHRycyI9PT10LmtleT9lPWUuY29uY2F0KHQudmFsdWUubGlzdC5zLm1hcCgoZnVuY3Rpb24odCl7cmV0dXJue2tleTp0LHZhbHVlOiJUb28gbGFyZ2UgdG8gc2hvdy4uLiJ9fSkpKTplLnB1c2goe2tleTp0LmtleSx2YWx1ZTpKU09OLnN0cmluZ2lmeSh0LnZhbHVlKX0pfSkpLGV9Z2V0IF9kZXZpY2UoKXt2YXIgdD10aGlzLl9ub2RlO3JldHVybiB0P3QuZGV2aWNlOm51bGx9Z2V0IF9zdWNjZXNzb3JzKCl7dmFyIHQ9dGhpcy5fbm9kZSxlPXRoaXMuZ3JhcGhIaWVyYXJjaHk7cmV0dXJuIHRoaXMuX3JlZnJlc2hOb2RlSXRlbUxpc3QoImlucHV0c0xpc3QiKSx0P3RoaXMuX2NvbnZlcnRFZGdlTGlzdFRvRWRnZUluZm9MaXN0KGUuZ2V0U3VjY2Vzc29ycyh0Lm5hbWUpLCExLHQuaXNHcm91cE5vZGUpOntyZWd1bGFyOltdLGNvbnRyb2w6W119fWdldCBfcHJlZGVjZXNzb3JzKCl7dmFyIHQ9dGhpcy5fbm9kZSxlPXRoaXMuZ3JhcGhIaWVyYXJjaHk7cmV0dXJuIHRoaXMuX3JlZnJlc2hOb2RlSXRlbUxpc3QoIm91dHB1dHNMaXN0IiksdD90aGlzLl9jb252ZXJ0RWRnZUxpc3RUb0VkZ2VJbmZvTGlzdChlLmdldFByZWRlY2Vzc29ycyh0Lm5hbWUpLCEwLHQuaXNHcm91cE5vZGUpOntyZWd1bGFyOltdLGNvbnRyb2w6W119fWdldCBfZnVuY3Rpb25Vc2FnZXMoKXt2YXIgdD10aGlzLl9ub2RlLGU9dGhpcy5ncmFwaEhpZXJhcmNoeTtpZih0aGlzLl9yZWZyZXNoTm9kZUl0ZW1MaXN0KCJmdW5jdGlvblVzYWdlc0xpc3QiKSwhdHx8dC50eXBlIT09V0l0Lk1FVEEpcmV0dXJuW107Y29uc3Qgbj1lLmxpYnJhcnlGdW5jdGlvbnNbdC5hc3NvY2lhdGVkRnVuY3Rpb25dO3JldHVybiBuP24udXNhZ2VzOltdfV9yZWZyZXNoTm9kZUl0ZW1MaXN0KHQpe3RoaXMuYXN5bmModGhpcy5fcmVzaXplTGlzdC5iaW5kKHRoaXMsYCMke3R9YCkpfV9jb252ZXJ0RWRnZUxpc3RUb0VkZ2VJbmZvTGlzdCh0LGUsbil7dmFyIGk9dD0+d2UubWFwKHQuYmFzZUVkZ2VMaXN0LCh0PT57dmFyIG49ZT90LnY6dC53O3JldHVybntuYW1lOm4sbm9kZTp0aGlzLl9nZXROb2RlKG4sdGhpcy5ncmFwaEhpZXJhcmNoeSksZWRnZUxhYmVsOm5PdCh0LHRoaXMucmVuZGVySGllcmFyY2h5KSxyZW5kZXJJbmZvOnRoaXMuX2dldFJlbmRlckluZm8obix0aGlzLnJlbmRlckhpZXJhcmNoeSl9fSkpLHI9ZnVuY3Rpb24odCl7dmFyIHI9W107cmV0dXJuIHdlLmVhY2godCwodD0+e3ZhciBvPWU/dC52OnQudztuJiYxIT10LmJhc2VFZGdlTGlzdC5sZW5ndGg/ci5wdXNoKHtuYW1lOm8sbm9kZTp0aGlzLl9nZXROb2RlKG8sdGhpcy5ncmFwaEhpZXJhcmNoeSksZWRnZUxhYmVsOmlPdCh0LHRoaXMucmVuZGVySGllcmFyY2h5KSxyZW5kZXJJbmZvOnRoaXMuX2dldFJlbmRlckluZm8obyx0aGlzLnJlbmRlckhpZXJhcmNoeSl9KTpyPXIuY29uY2F0KGkodCkpfSkpLHJ9LmJpbmQodGhpcyk7cmV0dXJue3JlZ3VsYXI6cih0LnJlZ3VsYXIpLGNvbnRyb2w6cih0LmNvbnRyb2wpfX1nZXQgX3N1Ym5vZGVzKCl7dmFyIHQ9dGhpcy5fbm9kZTtyZXR1cm4gdCYmdC5tZXRhZ3JhcGg/dC5tZXRhZ3JhcGgubm9kZXMoKTpudWxsfWdldCBfdG90YWxQcmVkZWNlc3NvcnMoKXt2YXIgdD10aGlzLl9wcmVkZWNlc3NvcnM7cmV0dXJuIHQucmVndWxhci5sZW5ndGgrdC5jb250cm9sLmxlbmd0aH1nZXQgX3RvdGFsU3VjY2Vzc29ycygpe3ZhciB0PXRoaXMuX3N1Y2Nlc3NvcnM7cmV0dXJuIHQucmVndWxhci5sZW5ndGgrdC5jb250cm9sLmxlbmd0aH1fdG9nZ2xlQ29udHJvbFByZWQoKXt0aGlzLl9vcGVuZWRDb250cm9sUHJlZD0hdGhpcy5fb3BlbmVkQ29udHJvbFByZWR9X3RvZ2dsZUNvbnRyb2xTdWNjKCl7dGhpcy5fb3BlbmVkQ29udHJvbFN1Y2M9IXRoaXMuX29wZW5lZENvbnRyb2xTdWNjfV90b2dnbGVFeHBhbmRlZCgpe3RoaXMuX2V4cGFuZGVkPSF0aGlzLl9leHBhbmRlZH1fZ2V0VG9nZ2xlSWNvbih0KXtyZXR1cm4gdD8iZXhwYW5kLWxlc3MiOiJleHBhbmQtbW9yZSJ9X3Jlc2V0U3RhdGUoKXt0aGlzLl9vcGVuZWRDb250cm9sUHJlZD0hMSx0aGlzLl9vcGVuZWRDb250cm9sU3VjYz0hMSx0aGlzLnNldCgiX2dyb3VwQnV0dG9uVGV4dCIsbU90KHRoaXMuX25vZGUpKX1fcmVzaXplTGlzdCh0KXt2YXIgZT1kb2N1bWVudC5xdWVyeVNlbGVjdG9yKHQpO2UmJmUuZmlyZSgiaXJvbi1yZXNpemUiKX1fdG9nZ2xlSW5jbHVkZSgpe3RoaXMuZmlyZSgibm9kZS10b2dnbGUtaW5jbHVzaW9uIix7bmFtZTp0aGlzLmdyYXBoTm9kZU5hbWV9KX1fbm9kZUluY2x1ZGVTdGF0ZUNoYW5nZWQodCxlKXt0aGlzLnNldCgiX2F1eEJ1dHRvblRleHQiLGROdCh0KSl9X3RvZ2dsZUdyb3VwKCl7dmFyIHQ9Zk90KHRoaXMuX25vZGUpO3RoaXMuZmlyZSgibm9kZS10b2dnbGUtc2VyaWVzZ3JvdXAiLHtuYW1lOnR9KX1faXNMaWJyYXJ5RnVuY3Rpb24odCl7cmV0dXJuIHQmJnQubmFtZS5zdGFydHNXaXRoKFVJdCl9X2lzSW5TZXJpZXModCl7cmV0dXJuIHBPdCh0KX1fZ3JhcGhIaWVyYXJjaHlDaGFuZ2VkKCl7dGhpcy5fdGVtcGxhdGVJbmRleD10aGlzLmdyYXBoSGllcmFyY2h5LmdldFRlbXBsYXRlSW5kZXgoKSx0aGlzLmdyYXBoSGllcmFyY2h5LmFkZExpc3RlbmVyKEJPdC5URU1QTEFURVNfVVBEQVRFRCwoKCk9Pnt0aGlzLl90ZW1wbGF0ZUluZGV4PXRoaXMuZ3JhcGhIaWVyYXJjaHkuZ2V0VGVtcGxhdGVJbmRleCgpfSkpfX07JE90LnRlbXBsYXRlPV9lYAogICAgPHN0eWxlPgogICAgICAuc3ViLWxpc3QtZ3JvdXAgewogICAgICAgIGZvbnQtd2VpZ2h0OiA1MDA7CiAgICAgICAgZm9udC1zaXplOiAxMnB0OwogICAgICAgIHBhZGRpbmctYm90dG9tOiA4cHg7CiAgICAgICAgd2lkdGg6IDEwMCU7CiAgICAgIH0KCiAgICAgIC5zdWItbGlzdCB7CiAgICAgICAgbWF4LWhlaWdodDogMzAwcHg7CiAgICAgICAgb3ZlcmZsb3cteTogc2Nyb2xsOwogICAgICB9CgogICAgICAuYXR0ci1sZWZ0IHsKICAgICAgICBmbG9hdDogbGVmdDsKICAgICAgICB3aWR0aDogMzAlOwogICAgICAgIHdvcmQtd3JhcDogYnJlYWstd29yZDsKICAgICAgICBjb2xvcjogIzU2NTY1NjsKICAgICAgICBmb250LXNpemU6IDExcHQ7CiAgICAgICAgZm9udC13ZWlnaHQ6IDQwMDsKICAgICAgfQoKICAgICAgLmF0dHItcmlnaHQgewogICAgICAgIG1hcmdpbi1sZWZ0OiAzMCU7CiAgICAgICAgd29yZC13cmFwOiBicmVhay13b3JkOwogICAgICAgIGNvbG9yOiAjNTY1NjU2OwogICAgICAgIGZvbnQtd2VpZ2h0OiA0MDA7CiAgICAgIH0KCiAgICAgIC5zdWItbGlzdC10YWJsZSB7CiAgICAgICAgZGlzcGxheTogdGFibGU7CiAgICAgICAgd2lkdGg6IDEwMCU7CiAgICAgIH0KCiAgICAgIC5zdWItbGlzdC10YWJsZS1yb3cgewogICAgICAgIGRpc3BsYXk6IHRhYmxlLXJvdzsKICAgICAgfQoKICAgICAgLnN1Yi1saXN0LXRhYmxlLXJvdyAuc3ViLWxpc3QtdGFibGUtY2VsbDpsYXN0LWNoaWxkIHsKICAgICAgICB0ZXh0LWFsaWduOiByaWdodDsKICAgICAgfQoKICAgICAgLnN1Yi1saXN0LXRhYmxlLWNlbGwgewogICAgICAgIGNvbG9yOiAjNTY1NjU2OwogICAgICAgIGRpc3BsYXk6IHRhYmxlLWNlbGw7CiAgICAgICAgZm9udC1zaXplOiAxMXB0OwogICAgICAgIGZvbnQtd2VpZ2h0OiA0MDA7CiAgICAgICAgbWF4LXdpZHRoOiAyMDBweDsKICAgICAgICBwYWRkaW5nOiAwIDRweDsKICAgICAgfQoKICAgICAgcGFwZXItaXRlbSB7CiAgICAgICAgcGFkZGluZzogMDsKICAgICAgICBiYWNrZ3JvdW5kOiAjZTllOWU5OwogICAgICB9CgogICAgICBwYXBlci1pdGVtLWJvZHlbdHdvLWxpbmVdIHsKICAgICAgICBtaW4taGVpZ2h0OiAwOwogICAgICAgIHBhZGRpbmc6IDhweCAxMnB4IDRweDsKICAgICAgfQoKICAgICAgLmV4cGFuZGVkSW5mbyB7CiAgICAgICAgcGFkZGluZzogOHB4IDEycHg7CiAgICAgIH0KCiAgICAgIC5jb250cm9sRGVwcyB7CiAgICAgICAgcGFkZGluZzogMCAwIDAgOHB4OwogICAgICB9CgogICAgICAubm9kZS1uYW1lIHsKICAgICAgICB3aGl0ZS1zcGFjZTogbm9ybWFsOwogICAgICAgIHdvcmQtd3JhcDogYnJlYWstd29yZDsKICAgICAgICBmb250LXNpemU6IDE0cHQ7CiAgICAgICAgZm9udC13ZWlnaHQ6IDUwMDsKICAgICAgfQoKICAgICAgLm5vZGUtaWNvbiB7CiAgICAgICAgZmxvYXQ6IHJpZ2h0OwogICAgICB9CgogICAgICAuc3VidGl0bGUgewogICAgICAgIGZvbnQtc2l6ZTogMTJwdDsKICAgICAgICBjb2xvcjogIzVlNWU1ZTsKICAgICAgfQoKICAgICAgLmNvbnRyb2xMaW5lIHsKICAgICAgICBmb250LXNpemU6IDExcHQ7CiAgICAgICAgZm9udC13ZWlnaHQ6IDQwMDsKICAgICAgfQoKICAgICAgLnRvZ2dsZS1idXR0b24gewogICAgICAgIGZsb2F0OiByaWdodDsKICAgICAgICBtYXgtaGVpZ2h0OiAyMHB4OwogICAgICAgIG1heC13aWR0aDogMjBweDsKICAgICAgICBwYWRkaW5nOiAwOwogICAgICB9CgogICAgICAuY29udHJvbC10b2dnbGUtYnV0dG9uIHsKICAgICAgICBmbG9hdDogbGVmdDsKICAgICAgICBtYXgtaGVpZ2h0OiAyMHB4OwogICAgICAgIG1heC13aWR0aDogMjBweDsKICAgICAgICBwYWRkaW5nOiAwOwogICAgICB9CgogICAgICAudG9nZ2xlLWluY2x1ZGUtZ3JvdXAgewogICAgICAgIHBhZGRpbmctdG9wOiA0cHg7CiAgICAgIH0KCiAgICAgIC50b2dnbGUtaW5jbHVkZSB7CiAgICAgICAgbWFyZ2luOiA1cHggNnB4OwogICAgICAgIHRleHQtdHJhbnNmb3JtOiBub25lOwogICAgICAgIHBhZGRpbmc6IDRweCA2cHg7CiAgICAgICAgZm9udC1zaXplOiAxMHB0OwogICAgICAgIGJhY2tncm91bmQtY29sb3I6ICNmYWZhZmE7CiAgICAgICAgY29sb3I6ICM2NjY7CiAgICAgIH0KCiAgICAgIC50b2dnbGUtaW5jbHVkZTpob3ZlciB7CiAgICAgICAgYmFja2dyb3VuZC1jb2xvcjogdmFyKC0tZ29vZ2xlLXllbGxvdy0xMDApOwogICAgICB9CgogICAgICAubm9uLWNvbnRyb2wtbGlzdC1pdGVtIHsKICAgICAgICBwYWRkaW5nLWxlZnQ6IDEwcHg7CiAgICAgIH0KICAgIDwvc3R5bGU+CiAgICA8cGFwZXItaXRlbT4KICAgICAgPHBhcGVyLWl0ZW0tYm9keSB0d28tbGluZT4KICAgICAgICA8ZGl2PgogICAgICAgICAgPHBhcGVyLWljb24tYnV0dG9uCiAgICAgICAgICAgIGljb249Int7X2dldFRvZ2dsZUljb24oX2V4cGFuZGVkKX19IgogICAgICAgICAgICBvbi1jbGljaz0iX3RvZ2dsZUV4cGFuZGVkIgogICAgICAgICAgICBjbGFzcz0idG9nZ2xlLWJ1dHRvbiIKICAgICAgICAgID4KICAgICAgICAgIDwvcGFwZXItaWNvbi1idXR0b24+CiAgICAgICAgICA8ZGl2IGNsYXNzPSJub2RlLW5hbWUiPgogICAgICAgICAgICA8dGYtd2JyLXN0cmluZyB2YWx1ZT0iW1tfbm9kZS5uYW1lXV0iIGRlbGltaXRlci1wYXR0ZXJuPSIvIj4KICAgICAgICAgICAgPC90Zi13YnItc3RyaW5nPgogICAgICAgICAgPC9kaXY+CiAgICAgICAgPC9kaXY+CiAgICAgICAgPGRpdiBzZWNvbmRhcnk+CiAgICAgICAgICA8dGYtbm9kZS1pY29uCiAgICAgICAgICAgIGNsYXNzPSJub2RlLWljb24iCiAgICAgICAgICAgIG5vZGU9IltbX25vZGVdXSIKICAgICAgICAgICAgcmVuZGVyLWluZm89IltbX2dldFJlbmRlckluZm8oZ3JhcGhOb2RlTmFtZSwgcmVuZGVySGllcmFyY2h5KV1dIgogICAgICAgICAgICBjb2xvci1ieT0iW1tjb2xvckJ5XV0iCiAgICAgICAgICAgIHRlbXBsYXRlLWluZGV4PSJbW190ZW1wbGF0ZUluZGV4XV0iCiAgICAgICAgICA+PC90Zi1ub2RlLWljb24+CiAgICAgICAgICA8dGVtcGxhdGUgaXM9ImRvbS1pZiIgaWY9Int7X25vZGUub3B9fSI+CiAgICAgICAgICAgIDxkaXYgY2xhc3M9InN1YnRpdGxlIj4KICAgICAgICAgICAgICBPcGVyYXRpb246CiAgICAgICAgICAgICAgPHNwYW4+W1tfbm9kZS5vcF1dPC9zcGFuPgogICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgIDwvdGVtcGxhdGU+CiAgICAgICAgICA8dGVtcGxhdGUgaXM9ImRvbS1pZiIgaWY9Int7X25vZGUubWV0YWdyYXBofX0iPgogICAgICAgICAgICA8ZGl2IGNsYXNzPSJzdWJ0aXRsZSI+CiAgICAgICAgICAgICAgU3ViZ3JhcGg6CiAgICAgICAgICAgICAgPHNwYW4+W1tfbm9kZS5jYXJkaW5hbGl0eV1dPC9zcGFuPiBub2RlcwogICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgIDwvdGVtcGxhdGU+CiAgICAgICAgPC9kaXY+CiAgICAgIDwvcGFwZXItaXRlbS1ib2R5PgogICAgPC9wYXBlci1pdGVtPgogICAgPGlyb24tY29sbGFwc2Ugb3BlbmVkPSJ7e19leHBhbmRlZH19Ij4KICAgICAgPHRlbXBsYXRlIGlzPSJkb20taWYiIGlmPSJ7e19leHBhbmRlZH19IiByZXN0YW1wPSJ0cnVlIj4KICAgICAgICA8ZGl2IGNsYXNzPSJleHBhbmRlZEluZm8iPgogICAgICAgICAgPGRpdiBjbGFzcz0ic3ViLWxpc3QtZ3JvdXAgYXR0cmlidXRlcyI+CiAgICAgICAgICAgIEF0dHJpYnV0ZXMgKDxzcGFuPltbX2F0dHJpYnV0ZXMubGVuZ3RoXV08L3NwYW4+KQogICAgICAgICAgICA8aXJvbi1saXN0CiAgICAgICAgICAgICAgY2xhc3M9InN1Yi1saXN0IgogICAgICAgICAgICAgIGlkPSJhdHRyaWJ1dGVzTGlzdCIKICAgICAgICAgICAgICBpdGVtcz0iW1tfYXR0cmlidXRlc11dIgogICAgICAgICAgICA+CiAgICAgICAgICAgICAgPHRlbXBsYXRlPgogICAgICAgICAgICAgICAgPGRpdj4KICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iYXR0ci1sZWZ0Ij5bW2l0ZW0ua2V5XV08L2Rpdj4KICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iYXR0ci1yaWdodCI+W1tpdGVtLnZhbHVlXV08L2Rpdj4KICAgICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICAgIDwvdGVtcGxhdGU+CiAgICAgICAgICAgIDwvaXJvbi1saXN0PgogICAgICAgICAgPC9kaXY+CgogICAgICAgICAgPHRlbXBsYXRlIGlzPSJkb20taWYiIGlmPSJ7e19kZXZpY2V9fSI+CiAgICAgICAgICAgIDxkaXYgY2xhc3M9InN1Yi1saXN0LWdyb3VwIGRldmljZSI+CiAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iYXR0ci1sZWZ0Ij5EZXZpY2U8L2Rpdj4KICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJhdHRyLXJpZ2h0Ij5bW19kZXZpY2VdXTwvZGl2PgogICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgIDwvdGVtcGxhdGU+CgogICAgICAgICAgPGRpdiBjbGFzcz0ic3ViLWxpc3QtZ3JvdXAgcHJlZGVjZXNzb3JzIj4KICAgICAgICAgICAgSW5wdXRzICg8c3Bhbj5bW190b3RhbFByZWRlY2Vzc29yc11dPC9zcGFuPikKICAgICAgICAgICAgPGlyb24tbGlzdAogICAgICAgICAgICAgIGNsYXNzPSJzdWItbGlzdCIKICAgICAgICAgICAgICBpZD0iaW5wdXRzTGlzdCIKICAgICAgICAgICAgICBpdGVtcz0iW1tfcHJlZGVjZXNzb3JzLnJlZ3VsYXJdXSIKICAgICAgICAgICAgPgogICAgICAgICAgICAgIDx0ZW1wbGF0ZT4KICAgICAgICAgICAgICAgIDx0Zi1ub2RlLWxpc3QtaXRlbQogICAgICAgICAgICAgICAgICBjbGFzcz0ibm9uLWNvbnRyb2wtbGlzdC1pdGVtIgogICAgICAgICAgICAgICAgICBjYXJkLW5vZGU9IltbX25vZGVdXSIKICAgICAgICAgICAgICAgICAgaXRlbS1ub2RlPSJbW2l0ZW0ubm9kZV1dIgogICAgICAgICAgICAgICAgICBlZGdlLWxhYmVsPSJbW2l0ZW0uZWRnZUxhYmVsXV0iCiAgICAgICAgICAgICAgICAgIGl0ZW0tcmVuZGVyLWluZm89IltbaXRlbS5yZW5kZXJJbmZvXV0iCiAgICAgICAgICAgICAgICAgIG5hbWU9IltbaXRlbS5uYW1lXV0iCiAgICAgICAgICAgICAgICAgIGl0ZW0tdHlwZT0icHJlZGVjZXNzb3JzIgogICAgICAgICAgICAgICAgICBjb2xvci1ieT0iW1tjb2xvckJ5XV0iCiAgICAgICAgICAgICAgICAgIHRlbXBsYXRlLWluZGV4PSJbW190ZW1wbGF0ZUluZGV4XV0iCiAgICAgICAgICAgICAgICA+CiAgICAgICAgICAgICAgICA8L3RmLW5vZGUtbGlzdC1pdGVtPgogICAgICAgICAgICAgIDwvdGVtcGxhdGU+CiAgICAgICAgICAgIDwvaXJvbi1saXN0PgogICAgICAgICAgICA8dGVtcGxhdGUgaXM9ImRvbS1pZiIgaWY9IltbX3ByZWRlY2Vzc29ycy5jb250cm9sLmxlbmd0aF1dIj4KICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJjb250cm9sRGVwcyI+CiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJjb250cm9sTGluZSI+CiAgICAgICAgICAgICAgICAgIDxwYXBlci1pY29uLWJ1dHRvbgogICAgICAgICAgICAgICAgICAgIGljb249Int7X2dldFRvZ2dsZUljb24oX29wZW5lZENvbnRyb2xQcmVkKX19IgogICAgICAgICAgICAgICAgICAgIG9uLWNsaWNrPSJfdG9nZ2xlQ29udHJvbFByZWQiCiAgICAgICAgICAgICAgICAgICAgY2xhc3M9ImNvbnRyb2wtdG9nZ2xlLWJ1dHRvbiIKICAgICAgICAgICAgICAgICAgPgogICAgICAgICAgICAgICAgICA8L3BhcGVyLWljb24tYnV0dG9uPgogICAgICAgICAgICAgICAgICBDb250cm9sIGRlcGVuZGVuY2llcwogICAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgICAgICA8aXJvbi1jb2xsYXBzZSBvcGVuZWQ9Int7X29wZW5lZENvbnRyb2xQcmVkfX0iIG5vLWFuaW1hdGlvbj4KICAgICAgICAgICAgICAgICAgPHRlbXBsYXRlCiAgICAgICAgICAgICAgICAgICAgaXM9ImRvbS1pZiIKICAgICAgICAgICAgICAgICAgICBpZj0ie3tfb3BlbmVkQ29udHJvbFByZWR9fSIKICAgICAgICAgICAgICAgICAgICByZXN0YW1wPSJ0cnVlIgogICAgICAgICAgICAgICAgICA+CiAgICAgICAgICAgICAgICAgICAgPGlyb24tbGlzdAogICAgICAgICAgICAgICAgICAgICAgY2xhc3M9InN1Yi1saXN0IgogICAgICAgICAgICAgICAgICAgICAgaXRlbXM9IltbX3ByZWRlY2Vzc29ycy5jb250cm9sXV0iCiAgICAgICAgICAgICAgICAgICAgPgogICAgICAgICAgICAgICAgICAgICAgPHRlbXBsYXRlPgogICAgICAgICAgICAgICAgICAgICAgICA8dGYtbm9kZS1saXN0LWl0ZW0KICAgICAgICAgICAgICAgICAgICAgICAgICBjYXJkLW5vZGU9IltbX25vZGVdXSIKICAgICAgICAgICAgICAgICAgICAgICAgICBpdGVtLW5vZGU9IltbaXRlbS5ub2RlXV0iCiAgICAgICAgICAgICAgICAgICAgICAgICAgaXRlbS1yZW5kZXItaW5mbz0iW1tpdGVtLnJlbmRlckluZm9dXSIKICAgICAgICAgICAgICAgICAgICAgICAgICBuYW1lPSJbW2l0ZW0ubmFtZV1dIgogICAgICAgICAgICAgICAgICAgICAgICAgIGl0ZW0tdHlwZT0icHJlZGVjZXNzb3JzIgogICAgICAgICAgICAgICAgICAgICAgICAgIGNvbG9yLWJ5PSJbW2NvbG9yQnldXSIKICAgICAgICAgICAgICAgICAgICAgICAgICB0ZW1wbGF0ZS1pbmRleD0iW1tfdGVtcGxhdGVJbmRleF1dIgogICAgICAgICAgICAgICAgICAgICAgICA+CiAgICAgICAgICAgICAgICAgICAgICAgIDwvdGYtbm9kZS1saXN0LWl0ZW0+CiAgICAgICAgICAgICAgICAgICAgICA8L3RlbXBsYXRlPgogICAgICAgICAgICAgICAgICAgIDwvaXJvbi1saXN0PgogICAgICAgICAgICAgICAgICA8L3RlbXBsYXRlPgogICAgICAgICAgICAgICAgPC9pcm9uLWNvbGxhcHNlPgogICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICA8L3RlbXBsYXRlPgogICAgICAgICAgPC9kaXY+CgogICAgICAgICAgPGRpdiBjbGFzcz0ic3ViLWxpc3QtZ3JvdXAgc3VjY2Vzc29ycyI+CiAgICAgICAgICAgIE91dHB1dHMgKDxzcGFuPltbX3RvdGFsU3VjY2Vzc29yc11dPC9zcGFuPikKICAgICAgICAgICAgPGlyb24tbGlzdAogICAgICAgICAgICAgIGNsYXNzPSJzdWItbGlzdCIKICAgICAgICAgICAgICBpZD0ib3V0cHV0c0xpc3QiCiAgICAgICAgICAgICAgaXRlbXM9IltbX3N1Y2Nlc3NvcnMucmVndWxhcl1dIgogICAgICAgICAgICA+CiAgICAgICAgICAgICAgPHRlbXBsYXRlPgogICAgICAgICAgICAgICAgPHRmLW5vZGUtbGlzdC1pdGVtCiAgICAgICAgICAgICAgICAgIGNsYXNzPSJub24tY29udHJvbC1saXN0LWl0ZW0iCiAgICAgICAgICAgICAgICAgIGNhcmQtbm9kZT0iW1tfbm9kZV1dIgogICAgICAgICAgICAgICAgICBpdGVtLW5vZGU9IltbaXRlbS5ub2RlXV0iCiAgICAgICAgICAgICAgICAgIGVkZ2UtbGFiZWw9IltbaXRlbS5lZGdlTGFiZWxdXSIKICAgICAgICAgICAgICAgICAgaXRlbS1yZW5kZXItaW5mbz0iW1tpdGVtLnJlbmRlckluZm9dXSIKICAgICAgICAgICAgICAgICAgbmFtZT0iW1tpdGVtLm5hbWVdXSIKICAgICAgICAgICAgICAgICAgaXRlbS10eXBlPSJzdWNjZXNzb3IiCiAgICAgICAgICAgICAgICAgIGNvbG9yLWJ5PSJbW2NvbG9yQnldXSIKICAgICAgICAgICAgICAgICAgdGVtcGxhdGUtaW5kZXg9IltbX3RlbXBsYXRlSW5kZXhdXSIKICAgICAgICAgICAgICAgID4KICAgICAgICAgICAgICAgIDwvdGYtbm9kZS1saXN0LWl0ZW0+CiAgICAgICAgICAgICAgPC90ZW1wbGF0ZT4KICAgICAgICAgICAgPC9pcm9uLWxpc3Q+CiAgICAgICAgICAgIDx0ZW1wbGF0ZSBpcz0iZG9tLWlmIiBpZj0iW1tfc3VjY2Vzc29ycy5jb250cm9sLmxlbmd0aF1dIj4KICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJjb250cm9sRGVwcyI+CiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJjb250cm9sTGluZSI+CiAgICAgICAgICAgICAgICAgIDxwYXBlci1pY29uLWJ1dHRvbgogICAgICAgICAgICAgICAgICAgIGljb249Int7X2dldFRvZ2dsZUljb24oX29wZW5lZENvbnRyb2xTdWNjKX19IgogICAgICAgICAgICAgICAgICAgIG9uLWNsaWNrPSJfdG9nZ2xlQ29udHJvbFN1Y2MiCiAgICAgICAgICAgICAgICAgICAgY2xhc3M9ImNvbnRyb2wtdG9nZ2xlLWJ1dHRvbiIKICAgICAgICAgICAgICAgICAgPgogICAgICAgICAgICAgICAgICA8L3BhcGVyLWljb24tYnV0dG9uPgogICAgICAgICAgICAgICAgICBDb250cm9sIGRlcGVuZGVuY2llcwogICAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgICAgICA8aXJvbi1jb2xsYXBzZSBvcGVuZWQ9Int7X29wZW5lZENvbnRyb2xTdWNjfX0iIG5vLWFuaW1hdGlvbj4KICAgICAgICAgICAgICAgICAgPHRlbXBsYXRlCiAgICAgICAgICAgICAgICAgICAgaXM9ImRvbS1pZiIKICAgICAgICAgICAgICAgICAgICBpZj0ie3tfb3BlbmVkQ29udHJvbFN1Y2N9fSIKICAgICAgICAgICAgICAgICAgICByZXN0YW1wPSJ0cnVlIgogICAgICAgICAgICAgICAgICA+CiAgICAgICAgICAgICAgICAgICAgPGlyb24tbGlzdCBjbGFzcz0ic3ViLWxpc3QiIGl0ZW1zPSJbW19zdWNjZXNzb3JzLmNvbnRyb2xdXSI+CiAgICAgICAgICAgICAgICAgICAgICA8dGVtcGxhdGU+CiAgICAgICAgICAgICAgICAgICAgICAgIDx0Zi1ub2RlLWxpc3QtaXRlbQogICAgICAgICAgICAgICAgICAgICAgICAgIGNhcmQtbm9kZT0iW1tfbm9kZV1dIgogICAgICAgICAgICAgICAgICAgICAgICAgIGl0ZW0tbm9kZT0iW1tpdGVtLm5vZGVdXSIKICAgICAgICAgICAgICAgICAgICAgICAgICBpdGVtLXJlbmRlci1pbmZvPSJbW2l0ZW0ucmVuZGVySW5mb11dIgogICAgICAgICAgICAgICAgICAgICAgICAgIG5hbWU9IltbaXRlbS5uYW1lXV0iCiAgICAgICAgICAgICAgICAgICAgICAgICAgaXRlbS10eXBlPSJzdWNjZXNzb3JzIgogICAgICAgICAgICAgICAgICAgICAgICAgIGNvbG9yLWJ5PSJbW2NvbG9yQnldXSIKICAgICAgICAgICAgICAgICAgICAgICAgICB0ZW1wbGF0ZS1pbmRleD0iW1tfdGVtcGxhdGVJbmRleF1dIgogICAgICAgICAgICAgICAgICAgICAgICA+CiAgICAgICAgICAgICAgICAgICAgICAgIDwvdGYtbm9kZS1saXN0LWl0ZW0+CiAgICAgICAgICAgICAgICAgICAgICA8L3RlbXBsYXRlPgogICAgICAgICAgICAgICAgICAgIDwvaXJvbi1saXN0PgogICAgICAgICAgICAgICAgICA8L3RlbXBsYXRlPgogICAgICAgICAgICAgICAgPC9pcm9uLWNvbGxhcHNlPgogICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICA8L3RlbXBsYXRlPgogICAgICAgICAgPC9kaXY+CiAgICAgICAgICA8dGVtcGxhdGUgaXM9ImRvbS1pZiIgaWY9Int7X2hhc0Rpc3BsYXlhYmxlTm9kZVN0YXRzfX0iPgogICAgICAgICAgICA8ZGl2IGNsYXNzPSJzdWItbGlzdC1ncm91cCBub2RlLXN0YXRzIj4KICAgICAgICAgICAgICBOb2RlIFN0YXRzCiAgICAgICAgICAgICAgPGRpdiBjbGFzcz0ic3ViLWxpc3QtdGFibGUiPgogICAgICAgICAgICAgICAgPHRlbXBsYXRlIGlzPSJkb20taWYiIGlmPSJ7e19ub2RlU3RhdHMudG90YWxCeXRlc319Ij4KICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0ic3ViLWxpc3QtdGFibGUtcm93Ij4KICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJzdWItbGlzdC10YWJsZS1jZWxsIj5NZW1vcnk8L2Rpdj4KICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJzdWItbGlzdC10YWJsZS1jZWxsIj4KICAgICAgICAgICAgICAgICAgICAgIFtbX25vZGVTdGF0c0Zvcm1hdHRlZEJ5dGVzXV0KICAgICAgICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgICAgICA8L3RlbXBsYXRlPgogICAgICAgICAgICAgICAgPHRlbXBsYXRlIGlzPSJkb20taWYiIGlmPSJ7e19nZXRUb3RhbE1pY3Jvcyhfbm9kZVN0YXRzKX19Ij4KICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0ic3ViLWxpc3QtdGFibGUtcm93Ij4KICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJzdWItbGlzdC10YWJsZS1jZWxsIj5Db21wdXRlIFRpbWU8L2Rpdj4KICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJzdWItbGlzdC10YWJsZS1jZWxsIj4KICAgICAgICAgICAgICAgICAgICAgIFtbX25vZGVTdGF0c0Zvcm1hdHRlZENvbXB1dGVUaW1lXV0KICAgICAgICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgICAgICA8L3RlbXBsYXRlPgogICAgICAgICAgICAgICAgPHRlbXBsYXRlIGlzPSJkb20taWYiIGlmPSJ7e19ub2RlU3RhdHMub3V0cHV0U2l6ZX19Ij4KICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0ic3ViLWxpc3QtdGFibGUtcm93Ij4KICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJzdWItbGlzdC10YWJsZS1jZWxsIj5UZW5zb3IgT3V0cHV0IFNpemVzPC9kaXY+CiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0ic3ViLWxpc3QtdGFibGUtY2VsbCI+CiAgICAgICAgICAgICAgICAgICAgICA8dGVtcGxhdGUKICAgICAgICAgICAgICAgICAgICAgICAgaXM9ImRvbS1yZXBlYXQiCiAgICAgICAgICAgICAgICAgICAgICAgIGl0ZW1zPSJ7e19ub2RlU3RhdHNGb3JtYXR0ZWRPdXRwdXRTaXplc319IgogICAgICAgICAgICAgICAgICAgICAgPgogICAgICAgICAgICAgICAgICAgICAgICBbW2l0ZW1dXSA8YnIgLz4KICAgICAgICAgICAgICAgICAgICAgIDwvdGVtcGxhdGU+CiAgICAgICAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICAgICAgPC90ZW1wbGF0ZT4KICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICA8L3RlbXBsYXRlPgoKICAgICAgICAgIDx0ZW1wbGF0ZSBpcz0iZG9tLWlmIiBpZj0iW1tfZnVuY3Rpb25Vc2FnZXMubGVuZ3RoXV0iPgogICAgICAgICAgICA8ZGl2IGNsYXNzPSJzdWItbGlzdC1ncm91cCBwcmVkZWNlc3NvcnMiPgogICAgICAgICAgICAgIFVzYWdlcyBvZiB0aGUgRnVuY3Rpb24gKDxzcGFuPltbX2Z1bmN0aW9uVXNhZ2VzLmxlbmd0aF1dPC9zcGFuPikKICAgICAgICAgICAgICA8aXJvbi1saXN0CiAgICAgICAgICAgICAgICBjbGFzcz0ic3ViLWxpc3QiCiAgICAgICAgICAgICAgICBpZD0iZnVuY3Rpb25Vc2FnZXNMaXN0IgogICAgICAgICAgICAgICAgaXRlbXM9IltbX2Z1bmN0aW9uVXNhZ2VzXV0iCiAgICAgICAgICAgICAgPgogICAgICAgICAgICAgICAgPHRlbXBsYXRlPgogICAgICAgICAgICAgICAgICA8dGYtbm9kZS1saXN0LWl0ZW0KICAgICAgICAgICAgICAgICAgICBjbGFzcz0ibm9uLWNvbnRyb2wtbGlzdC1pdGVtIgogICAgICAgICAgICAgICAgICAgIGNhcmQtbm9kZT0iW1tfbm9kZV1dIgogICAgICAgICAgICAgICAgICAgIGl0ZW0tbm9kZT0iW1tpdGVtXV0iCiAgICAgICAgICAgICAgICAgICAgbmFtZT0iW1tpdGVtLm5hbWVdXSIKICAgICAgICAgICAgICAgICAgICBpdGVtLXR5cGU9ImZ1bmN0aW9uVXNhZ2VzIgogICAgICAgICAgICAgICAgICAgIGNvbG9yLWJ5PSJbW2NvbG9yQnldXSIKICAgICAgICAgICAgICAgICAgICB0ZW1wbGF0ZS1pbmRleD0iW1tfdGVtcGxhdGVJbmRleF1dIgogICAgICAgICAgICAgICAgICA+CiAgICAgICAgICAgICAgICAgIDwvdGYtbm9kZS1saXN0LWl0ZW0+CiAgICAgICAgICAgICAgICA8L3RlbXBsYXRlPgogICAgICAgICAgICAgIDwvaXJvbi1saXN0PgogICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgIDwvdGVtcGxhdGU+CgogICAgICAgICAgPHRlbXBsYXRlIGlzPSJkb20taWYiIGlmPSJbWyFfaXNMaWJyYXJ5RnVuY3Rpb24oX25vZGUpXV0iPgogICAgICAgICAgICA8ZGl2IGNsYXNzPSJ0b2dnbGUtaW5jbHVkZS1ncm91cCI+CiAgICAgICAgICAgICAgPHBhcGVyLWJ1dHRvbgogICAgICAgICAgICAgICAgcmFpc2VkCiAgICAgICAgICAgICAgICBjbGFzcz0idG9nZ2xlLWluY2x1ZGUiCiAgICAgICAgICAgICAgICBvbi1jbGljaz0iX3RvZ2dsZUluY2x1ZGUiCiAgICAgICAgICAgICAgPgogICAgICAgICAgICAgICAgPHNwYW4+W1tfYXV4QnV0dG9uVGV4dF1dPC9zcGFuPgogICAgICAgICAgICAgIDwvcGFwZXItYnV0dG9uPgogICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgIDwvdGVtcGxhdGU+CgogICAgICAgICAgPHRlbXBsYXRlIGlzPSJkb20taWYiIGlmPSJ7e19pc0luU2VyaWVzKF9ub2RlKX19Ij4KICAgICAgICAgICAgPGRpdiBjbGFzcz0idG9nZ2xlLWluY2x1ZGUtZ3JvdXAiPgogICAgICAgICAgICAgIDxwYXBlci1idXR0b24KICAgICAgICAgICAgICAgIHJhaXNlZAogICAgICAgICAgICAgICAgY2xhc3M9InRvZ2dsZS1pbmNsdWRlIgogICAgICAgICAgICAgICAgb24tY2xpY2s9Il90b2dnbGVHcm91cCIKICAgICAgICAgICAgICA+CiAgICAgICAgICAgICAgICA8c3Bhbj5bW19ncm91cEJ1dHRvblRleHRdXTwvc3Bhbj4KICAgICAgICAgICAgICA8L3BhcGVyLWJ1dHRvbj4KICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICA8L3RlbXBsYXRlPgogICAgICAgIDwvZGl2PgogICAgICA8L3RlbXBsYXRlPgogICAgPC9pcm9uLWNvbGxhcHNlPgogIGAsdChbbyh7dHlwZTpTdHJpbmd9KSxlKCJkZXNpZ246dHlwZSIsU3RyaW5nKV0sJE90LnByb3RvdHlwZSwiZ3JhcGhOb2RlTmFtZSIsdm9pZCAwKSx0KFtvKHt0eXBlOk9iamVjdH0pLGUoImRlc2lnbjp0eXBlIixIT3QpXSwkT3QucHJvdG90eXBlLCJncmFwaEhpZXJhcmNoeSIsdm9pZCAwKSx0KFtvKHt0eXBlOk9iamVjdH0pLGUoImRlc2lnbjp0eXBlIixPYmplY3QpXSwkT3QucHJvdG90eXBlLCJyZW5kZXJIaWVyYXJjaHkiLHZvaWQgMCksdChbbyh7dHlwZTpTdHJpbmd9KSxlKCJkZXNpZ246dHlwZSIsU3RyaW5nKV0sJE90LnByb3RvdHlwZSwiY29sb3JCeSIsdm9pZCAwKSx0KFtvKHt0eXBlOk9iamVjdCxjb21wdXRlZDoiX2dldE5vZGUoZ3JhcGhOb2RlTmFtZSwgZ3JhcGhIaWVyYXJjaHkpIixvYnNlcnZlcjoiX3Jlc2V0U3RhdGUifSksZSgiZGVzaWduOnR5cGUiLE9iamVjdCldLCRPdC5wcm90b3R5cGUsIl9ub2RlIix2b2lkIDApLHQoW28oe3R5cGU6T2JqZWN0LGNvbXB1dGVkOiJfZ2V0Tm9kZVN0YXRzKGdyYXBoTm9kZU5hbWUsIGdyYXBoSGllcmFyY2h5KSIsb2JzZXJ2ZXI6Il9yZXNldFN0YXRlIn0pLGUoImRlc2lnbjp0eXBlIixPYmplY3QpXSwkT3QucHJvdG90eXBlLCJfbm9kZVN0YXRzIix2b2lkIDApLHQoW28oe3R5cGU6TnVtYmVyLG9ic2VydmVyOiJfbm9kZUluY2x1ZGVTdGF0ZUNoYW5nZWQifSksZSgiZGVzaWduOnR5cGUiLE51bWJlcildLCRPdC5wcm90b3R5cGUsIm5vZGVJbmNsdWRlIix2b2lkIDApLHQoW28oe3R5cGU6Qm9vbGVhbn0pLGUoImRlc2lnbjp0eXBlIixCb29sZWFuKV0sJE90LnByb3RvdHlwZSwiX2V4cGFuZGVkIix2b2lkIDApLHQoW28oe3R5cGU6Qm9vbGVhbn0pLGUoImRlc2lnbjp0eXBlIixCb29sZWFuKV0sJE90LnByb3RvdHlwZSwiX29wZW5lZENvbnRyb2xQcmVkIix2b2lkIDApLHQoW28oe3R5cGU6Qm9vbGVhbn0pLGUoImRlc2lnbjp0eXBlIixCb29sZWFuKV0sJE90LnByb3RvdHlwZSwiX29wZW5lZENvbnRyb2xTdWNjIix2b2lkIDApLHQoW28oe3R5cGU6U3RyaW5nfSksZSgiZGVzaWduOnR5cGUiLFN0cmluZyldLCRPdC5wcm90b3R5cGUsIl9hdXhCdXR0b25UZXh0Iix2b2lkIDApLHQoW28oe3R5cGU6U3RyaW5nfSksZSgiZGVzaWduOnR5cGUiLFN0cmluZyldLCRPdC5wcm90b3R5cGUsIl9ncm91cEJ1dHRvblRleHQiLHZvaWQgMCksdChbbyh7dHlwZTpPYmplY3R9KSxlKCJkZXNpZ246dHlwZSIsRnVuY3Rpb24pXSwkT3QucHJvdG90eXBlLCJfdGVtcGxhdGVJbmRleCIsdm9pZCAwKSx0KFtzKCJfbm9kZVN0YXRzIiksZSgiZGVzaWduOnR5cGUiLEJvb2xlYW4pLGUoImRlc2lnbjpwYXJhbXR5cGVzIixbXSldLCRPdC5wcm90b3R5cGUsIl9oYXNEaXNwbGF5YWJsZU5vZGVTdGF0cyIsbnVsbCksdChbcygiX25vZGVTdGF0cyIpLGUoImRlc2lnbjp0eXBlIixTdHJpbmcpLGUoImRlc2lnbjpwYXJhbXR5cGVzIixbXSldLCRPdC5wcm90b3R5cGUsIl9ub2RlU3RhdHNGb3JtYXR0ZWRCeXRlcyIsbnVsbCksdChbcygiX25vZGVTdGF0cyIpLGUoImRlc2lnbjp0eXBlIixTdHJpbmcpLGUoImRlc2lnbjpwYXJhbXR5cGVzIixbXSldLCRPdC5wcm90b3R5cGUsIl9ub2RlU3RhdHNGb3JtYXR0ZWRDb21wdXRlVGltZSIsbnVsbCksdChbcygiX25vZGVTdGF0cyIpLGUoImRlc2lnbjp0eXBlIixBcnJheSksZSgiZGVzaWduOnBhcmFtdHlwZXMiLFtdKV0sJE90LnByb3RvdHlwZSwiX25vZGVTdGF0c0Zvcm1hdHRlZE91dHB1dFNpemVzIixudWxsKSx0KFtzKCJfbm9kZSIpLGUoImRlc2lnbjp0eXBlIixBcnJheSksZSgiZGVzaWduOnBhcmFtdHlwZXMiLFtdKV0sJE90LnByb3RvdHlwZSwiX2F0dHJpYnV0ZXMiLG51bGwpLHQoW3MoIl9ub2RlIiksZSgiZGVzaWduOnR5cGUiLFN0cmluZyksZSgiZGVzaWduOnBhcmFtdHlwZXMiLFtdKV0sJE90LnByb3RvdHlwZSwiX2RldmljZSIsbnVsbCksdChbcygiX25vZGUiLCJncmFwaEhpZXJhcmNoeSIpLGUoImRlc2lnbjp0eXBlIixPYmplY3QpLGUoImRlc2lnbjpwYXJhbXR5cGVzIixbXSldLCRPdC5wcm90b3R5cGUsIl9zdWNjZXNzb3JzIixudWxsKSx0KFtzKCJfbm9kZSIsImdyYXBoSGllcmFyY2h5IiksZSgiZGVzaWduOnR5cGUiLE9iamVjdCksZSgiZGVzaWduOnBhcmFtdHlwZXMiLFtdKV0sJE90LnByb3RvdHlwZSwiX3ByZWRlY2Vzc29ycyIsbnVsbCksdChbcygiX25vZGUiLCJncmFwaEhpZXJhcmNoeSIpLGUoImRlc2lnbjp0eXBlIixBcnJheSksZSgiZGVzaWduOnBhcmFtdHlwZXMiLFtdKV0sJE90LnByb3RvdHlwZSwiX2Z1bmN0aW9uVXNhZ2VzIixudWxsKSx0KFtzKCJfbm9kZSIpLGUoImRlc2lnbjp0eXBlIixBcnJheSksZSgiZGVzaWduOnBhcmFtdHlwZXMiLFtdKV0sJE90LnByb3RvdHlwZSwiX3N1Ym5vZGVzIixudWxsKSx0KFtzKCJfcHJlZGVjZXNzb3JzIiksZSgiZGVzaWduOnR5cGUiLE51bWJlciksZSgiZGVzaWduOnBhcmFtdHlwZXMiLFtdKV0sJE90LnByb3RvdHlwZSwiX3RvdGFsUHJlZGVjZXNzb3JzIixudWxsKSx0KFtzKCJfc3VjY2Vzc29ycyIpLGUoImRlc2lnbjp0eXBlIixOdW1iZXIpLGUoImRlc2lnbjpwYXJhbXR5cGVzIixbXSldLCRPdC5wcm90b3R5cGUsIl90b3RhbFN1Y2Nlc3NvcnMiLG51bGwpLHQoW2EoImdyYXBoSGllcmFyY2h5IiksZSgiZGVzaWduOnR5cGUiLEZ1bmN0aW9uKSxlKCJkZXNpZ246cGFyYW10eXBlcyIsW10pLGUoImRlc2lnbjpyZXR1cm50eXBlIix2b2lkIDApXSwkT3QucHJvdG90eXBlLCJfZ3JhcGhIaWVyYXJjaHlDaGFuZ2VkIixudWxsKSwkT3Q9dChbaSgidGYtbm9kZS1pbmZvIildLCRPdCk7bGV0IEtPdD1jbGFzcyBleHRlbmRzKHRyKHllKSl7cmVhZHkoKXtzdXBlci5yZWFkeSgpLHRoaXMuYWRkRXZlbnRMaXN0ZW5lcigibm9kZS1saXN0LWl0ZW0tY2xpY2siLHRoaXMuX25vZGVMaXN0SXRlbUNsaWNrZWQuYmluZCh0aGlzKSksdGhpcy5hZGRFdmVudExpc3RlbmVyKCJub2RlLWxpc3QtaXRlbS1tb3VzZW92ZXIiLHRoaXMuX25vZGVMaXN0SXRlbU1vdXNlb3Zlci5iaW5kKHRoaXMpKSx0aGlzLmFkZEV2ZW50TGlzdGVuZXIoIm5vZGUtbGlzdC1pdGVtLW1vdXNlb3V0Iix0aGlzLl9ub2RlTGlzdEl0ZW1Nb3VzZW91dC5iaW5kKHRoaXMpKX1fbm9kZUxpc3RJdGVtQ2xpY2tlZCh0KXt0aGlzLnNlbGVjdGVkTm9kZT10LmRldGFpbC5ub2RlTmFtZX1fbm9kZUxpc3RJdGVtTW91c2VvdmVyKHQpe3RoaXMuaGlnaGxpZ2h0ZWROb2RlPXQuZGV0YWlsLm5vZGVOYW1lfV9ub2RlTGlzdEl0ZW1Nb3VzZW91dCgpe3RoaXMuaGlnaGxpZ2h0ZWROb2RlPW51bGx9X2hlYWx0aFBpbGxzQXZhaWxhYmxlKHQsZSl7cmV0dXJuIHQmJmUmJk9iamVjdC5rZXlzKGUpLmxlbmd0aD4wfV9lcXVhbHModCxlKXtyZXR1cm4gdD09PWV9fTtLT3QudGVtcGxhdGU9X2VgCiAgICA8c3R5bGU+CiAgICAgIDpob3N0IHsKICAgICAgICBmb250LXNpemU6IDEycHg7CiAgICAgICAgbWFyZ2luOiAwOwogICAgICAgIHBhZGRpbmc6IDA7CiAgICAgICAgZGlzcGxheTogYmxvY2s7CiAgICAgICAgbWF4LWhlaWdodDogNjUwcHg7CiAgICAgICAgb3ZlcmZsb3cteDogaGlkZGVuOwogICAgICAgIG92ZXJmbG93LXk6IGF1dG87CiAgICAgIH0KCiAgICAgIGgyIHsKICAgICAgICBwYWRkaW5nOiAwOwogICAgICAgIHRleHQtYWxpZ246IGNlbnRlcjsKICAgICAgICBtYXJnaW46IDA7CiAgICAgIH0KICAgIDwvc3R5bGU+CiAgICA8dGVtcGxhdGUgaXM9ImRvbS1pZiIgaWY9Int7c2VsZWN0ZWROb2RlfX0iPgogICAgICA8cGFwZXItbWF0ZXJpYWwgZWxldmF0aW9uPSIxIiBjbGFzcz0iY2FyZCI+CiAgICAgICAgPHRmLW5vZGUtaW5mbwogICAgICAgICAgZ3JhcGgtaGllcmFyY2h5PSJbW2dyYXBoSGllcmFyY2h5XV0iCiAgICAgICAgICByZW5kZXItaGllcmFyY2h5PSJbW3JlbmRlckhpZXJhcmNoeV1dIgogICAgICAgICAgZmxhdC1ncmFwaD0iW1tncmFwaF1dIgogICAgICAgICAgZ3JhcGgtbm9kZS1uYW1lPSJbW3NlbGVjdGVkTm9kZV1dIgogICAgICAgICAgbm9kZS1pbmNsdWRlPSJbW3NlbGVjdGVkTm9kZUluY2x1ZGVdXSIKICAgICAgICAgIGhpZ2hsaWdodGVkLW5vZGU9Int7aGlnaGxpZ2h0ZWROb2RlfX0iCiAgICAgICAgICBjb2xvci1ieT0iW1tjb2xvckJ5XV0iCiAgICAgICAgPgogICAgICAgIDwvdGYtbm9kZS1pbmZvPgogICAgICA8L3BhcGVyLW1hdGVyaWFsPgogICAgPC90ZW1wbGF0ZT4KICAgIDx0ZW1wbGF0ZSBpcz0iZG9tLWlmIiBpZj0iW1tfZXF1YWxzKGNvbG9yQnksICdvcF9jb21wYXRpYmlsaXR5JyldXSI+CiAgICAgIDx0Zi1ncmFwaC1vcC1jb21wYXQtY2FyZAogICAgICAgIGdyYXBoLWhpZXJhcmNoeT0iW1tncmFwaEhpZXJhcmNoeV1dIgogICAgICAgIHJlbmRlci1oaWVyYXJjaHk9IltbcmVuZGVySGllcmFyY2h5XV0iCiAgICAgICAgY29sb3ItYnk9IltbY29sb3JCeV1dIgogICAgICAgIG5vZGUtdGl0bGU9IltbY29tcGF0Tm9kZVRpdGxlXV0iCiAgICAgID4KICAgICAgPC90Zi1ncmFwaC1vcC1jb21wYXQtY2FyZD4KICAgIDwvdGVtcGxhdGU+CiAgICA8dGVtcGxhdGUKICAgICAgaXM9ImRvbS1pZiIKICAgICAgaWY9IltbX2hlYWx0aFBpbGxzQXZhaWxhYmxlKGRlYnVnZ2VyRGF0YUVuYWJsZWQsIG5vZGVOYW1lc1RvSGVhbHRoUGlsbHMpXV0iCiAgICA+CiAgICAgIDx0Zi1ncmFwaC1kZWJ1Z2dlci1kYXRhLWNhcmQKICAgICAgICByZW5kZXItaGllcmFyY2h5PSJbW3JlbmRlckhpZXJhcmNoeV1dIgogICAgICAgIGRlYnVnZ2VyLW51bWVyaWMtYWxlcnRzPSJbW2RlYnVnZ2VyTnVtZXJpY0FsZXJ0c11dIgogICAgICAgIG5vZGUtbmFtZXMtdG8taGVhbHRoLXBpbGxzPSJbW25vZGVOYW1lc1RvSGVhbHRoUGlsbHNdXSIKICAgICAgICBzZWxlY3RlZC1ub2RlPSJ7e3NlbGVjdGVkTm9kZX19IgogICAgICAgIGhpZ2hsaWdodGVkLW5vZGU9Int7aGlnaGxpZ2h0ZWROb2RlfX0iCiAgICAgICAgYXJlLWhlYWx0aC1waWxscy1sb2FkaW5nPSJbW2FyZUhlYWx0aFBpbGxzTG9hZGluZ11dIgogICAgICAgIGFsbC1zdGVwcy1tb2RlLWVuYWJsZWQ9Int7YWxsU3RlcHNNb2RlRW5hYmxlZH19IgogICAgICAgIHNwZWNpZmljLWhlYWx0aC1waWxsLXN0ZXA9Int7c3BlY2lmaWNIZWFsdGhQaWxsU3RlcH19IgogICAgICAgIGhlYWx0aC1waWxsLXN0ZXAtaW5kZXg9Int7aGVhbHRoUGlsbFN0ZXBJbmRleH19IgogICAgICA+CiAgICAgIDwvdGYtZ3JhcGgtZGVidWdnZXItZGF0YS1jYXJkPgogICAgPC90ZW1wbGF0ZT4KICBgLHQoW28oe3R5cGU6U3RyaW5nfSksZSgiZGVzaWduOnR5cGUiLFN0cmluZyldLEtPdC5wcm90b3R5cGUsInRpdGxlIix2b2lkIDApLHQoW28oe3R5cGU6T2JqZWN0fSksZSgiZGVzaWduOnR5cGUiLEhPdCldLEtPdC5wcm90b3R5cGUsImdyYXBoSGllcmFyY2h5Iix2b2lkIDApLHQoW28oe3R5cGU6T2JqZWN0fSksZSgiZGVzaWduOnR5cGUiLFhJdCldLEtPdC5wcm90b3R5cGUsImdyYXBoIix2b2lkIDApLHQoW28oe3R5cGU6T2JqZWN0fSksZSgiZGVzaWduOnR5cGUiLGJOdCldLEtPdC5wcm90b3R5cGUsInJlbmRlckhpZXJhcmNoeSIsdm9pZCAwKSx0KFtvKHt0eXBlOk9iamVjdH0pLGUoImRlc2lnbjp0eXBlIixPYmplY3QpXSxLT3QucHJvdG90eXBlLCJub2RlTmFtZXNUb0hlYWx0aFBpbGxzIix2b2lkIDApLHQoW28oe3R5cGU6TnVtYmVyLG5vdGlmeTohMH0pLGUoImRlc2lnbjp0eXBlIixOdW1iZXIpXSxLT3QucHJvdG90eXBlLCJoZWFsdGhQaWxsU3RlcEluZGV4Iix2b2lkIDApLHQoW28oe3R5cGU6U3RyaW5nfSksZSgiZGVzaWduOnR5cGUiLFN0cmluZyldLEtPdC5wcm90b3R5cGUsImNvbG9yQnkiLHZvaWQgMCksdChbbyh7dHlwZTpTdHJpbmd9KSxlKCJkZXNpZ246dHlwZSIsU3RyaW5nKV0sS090LnByb3RvdHlwZSwiY29tcGF0Tm9kZVRpdGxlIix2b2lkIDApLHQoW28oe3R5cGU6U3RyaW5nLG5vdGlmeTohMH0pLGUoImRlc2lnbjp0eXBlIixTdHJpbmcpXSxLT3QucHJvdG90eXBlLCJzZWxlY3RlZE5vZGUiLHZvaWQgMCksdChbbyh7dHlwZTpTdHJpbmcsbm90aWZ5OiEwfSksZSgiZGVzaWduOnR5cGUiLFN0cmluZyldLEtPdC5wcm90b3R5cGUsImhpZ2hsaWdodGVkTm9kZSIsdm9pZCAwKSx0KFtvKHt0eXBlOk51bWJlcixub3RpZnk6ITB9KSxlKCJkZXNpZ246dHlwZSIsTnVtYmVyKV0sS090LnByb3RvdHlwZSwic2VsZWN0ZWROb2RlSW5jbHVkZSIsdm9pZCAwKSx0KFtvKHt0eXBlOkJvb2xlYW59KSxlKCJkZXNpZ246dHlwZSIsQm9vbGVhbildLEtPdC5wcm90b3R5cGUsImRlYnVnZ2VyRGF0YUVuYWJsZWQiLHZvaWQgMCksS090PXQoW2koInRmLWdyYXBoLWluZm8iKV0sS090KTtjbGFzcyBaT3R7Y29uc3RydWN0b3IodCxlLG4saSxyLG8pe3RoaXMuc3ZnPXQsdGhpcy5sYWJlbFBhZGRpbmc9byx0aGlzLnpvb21HPWUsdGhpcy5tYWluWm9vbT1uLHRoaXMubWF4V2FuZEg9cjtsZXQgYT1TdShpLnNoYWRvd1Jvb3QpLHM9YS5zZWxlY3QoInN2ZyIpLGw9cy5zZWxlY3QoInJlY3QiKTt0aGlzLnZpZXdwb2ludENvb3JkPXt4OjAseTowfTtsZXQgYz12aCgpLnN1YmplY3QoT2JqZWN0KS5vbigiZHJhZyIsKHQ9Pnt0aGlzLnZpZXdwb2ludENvb3JkLng9dXUueCx0aGlzLnZpZXdwb2ludENvb3JkLnk9dXUueSx0aGlzLnVwZGF0ZVZpZXdwb2ludCgpfSkpO2wuZGF0dW0odGhpcy52aWV3cG9pbnRDb29yZCkuY2FsbChjKSxzLm9uKCJjbGljayIsKCgpPT57aWYodXUuZGVmYXVsdFByZXZlbnRlZClyZXR1cm47bGV0IHQ9TnVtYmVyKGwuYXR0cigid2lkdGgiKSksZT1OdW1iZXIobC5hdHRyKCJoZWlnaHQiKSksbj1haChzLm5vZGUoKSk7dGhpcy52aWV3cG9pbnRDb29yZC54PW5bMF0tdC8yLHRoaXMudmlld3BvaW50Q29vcmQueT1uWzFdLWUvMix0aGlzLnVwZGF0ZVZpZXdwb2ludCgpfSkpLHRoaXMudmlld3BvaW50PWwubm9kZSgpLHRoaXMubWluaW1hcFN2Zz1zLm5vZGUoKSx0aGlzLm1pbmltYXA9aSx0aGlzLmNhbnZhcz1hLnNlbGVjdCgiY2FudmFzLmZpcnN0Iikubm9kZSgpLHRoaXMuY2FudmFzQnVmZmVyPWEuc2VsZWN0KCJjYW52YXMuc2Vjb25kIikubm9kZSgpLHRoaXMuZG93bmxvYWRDYW52YXM9YS5zZWxlY3QoImNhbnZhcy5kb3dubG9hZCIpLm5vZGUoKSxTdSh0aGlzLmRvd25sb2FkQ2FudmFzKS5zdHlsZSgiZGlzcGxheSIsIm5vbmUiKSx0aGlzLnVwZGF0ZSgpfXVwZGF0ZVZpZXdwb2ludCgpe1N1KHRoaXMudmlld3BvaW50KS5hdHRyKCJ4Iix0aGlzLnZpZXdwb2ludENvb3JkLngpLmF0dHIoInkiLHRoaXMudmlld3BvaW50Q29vcmQueSk7bGV0IHQ9LXRoaXMudmlld3BvaW50Q29vcmQueCp0aGlzLnNjYWxlTWFpbi90aGlzLnNjYWxlTWluaW1hcCxlPS10aGlzLnZpZXdwb2ludENvb3JkLnkqdGhpcy5zY2FsZU1haW4vdGhpcy5zY2FsZU1pbmltYXA7U3UodGhpcy5zdmcpLmNhbGwodGhpcy5tYWluWm9vbS50cmFuc2Zvcm0sS1AudHJhbnNsYXRlKHQsZSkuc2NhbGUodGhpcy5zY2FsZU1haW4pKX1nZXRJbWFnZUJsb2IoKXtyZXR1cm4gbmV3IFByb21pc2UoKHQ9Pnt0aGlzLmRvd25sb2FkQ2FudmFzLnRvQmxvYigoZT0+e3QoZSl9KSwiaW1hZ2UvcG5nIil9KSl9dXBkYXRlKCl7bGV0IHQ9bnVsbDt0cnl7aWYodD10aGlzLnpvb21HLmdldEJCb3goKSwwPT09dC53aWR0aClyZXR1cm59Y2F0Y2godCl7cmV0dXJufWxldCBlPVN1KHRoaXMuc3ZnKSxuPSIiO2NvbnN0IGk9dGhpcy5zdmcscj0oaS5nZXRSb290Tm9kZT9pLmdldFJvb3ROb2RlKCk6dGhpcy5zdmcucGFyZW50Tm9kZSkuc3R5bGVTaGVldHM7Zm9yKGxldCB0PTA7dDxyLmxlbmd0aDt0KyspdHJ5e2xldCBlPXJbdF0uY3NzUnVsZXN8fHJbdF0ucnVsZXM7aWYobnVsbD09ZSljb250aW51ZTtmb3IobGV0IHQ9MDt0PGUubGVuZ3RoO3QrKyluKz1lW3RdLmNzc1RleHQucmVwbGFjZSgvID90Zi1bXHctXSsgPy9nLCIiKSsiXG4ifWNhdGNoKHQpe2lmKCJTZWN1cml0eUVycm9yIiE9PXQubmFtZSl0aHJvdyB0fWxldCBvPWUuYXBwZW5kKCJzdHlsZSIpO28udGV4dChuKTtsZXQgYT1TdSh0aGlzLnpvb21HKSxzPWEuYXR0cigidHJhbnNmb3JtIik7YS5hdHRyKCJ0cmFuc2Zvcm0iLG51bGwpLHQuaGVpZ2h0Kz10LnksdC53aWR0aCs9dC54LHQuaGVpZ2h0Kz0yKnRoaXMubGFiZWxQYWRkaW5nLHQud2lkdGgrPTIqdGhpcy5sYWJlbFBhZGRpbmcsZS5hdHRyKCJ3aWR0aCIsdC53aWR0aCkuYXR0cigiaGVpZ2h0Iix0LmhlaWdodCksdGhpcy5zY2FsZU1pbmltYXA9dGhpcy5tYXhXYW5kSC9NYXRoLm1heCh0LndpZHRoLHQuaGVpZ2h0KSx0aGlzLm1pbmltYXBTaXplPXt3aWR0aDp0LndpZHRoKnRoaXMuc2NhbGVNaW5pbWFwLGhlaWdodDp0LmhlaWdodCp0aGlzLnNjYWxlTWluaW1hcH0sU3UodGhpcy5taW5pbWFwU3ZnKS5hdHRyKHRoaXMubWluaW1hcFNpemUpLFN1KHRoaXMuY2FudmFzQnVmZmVyKS5hdHRyKHRoaXMubWluaW1hcFNpemUpO2NvbnN0IGw9U3UodGhpcy5kb3dubG9hZENhbnZhcyk7bC5zdHlsZSgid2lkdGgiLHQud2lkdGgpLGwuc3R5bGUoImhlaWdodCIsdC5oZWlnaHQpLGwuYXR0cigid2lkdGgiLDMqdC53aWR0aCksbC5hdHRyKCJoZWlnaHQiLDMqdC5oZWlnaHQpLG51bGwhPXRoaXMudHJhbnNsYXRlJiZudWxsIT10aGlzLnpvb20mJnJlcXVlc3RBbmltYXRpb25GcmFtZSgoKCk9PnRoaXMuem9vbSgpKSk7bGV0IGM9KG5ldyBYTUxTZXJpYWxpemVyKS5zZXJpYWxpemVUb1N0cmluZyh0aGlzLnN2Zyk7by5yZW1vdmUoKSxlLmF0dHIoIndpZHRoIixudWxsKS5hdHRyKCJoZWlnaHQiLG51bGwpLGEuYXR0cigidHJhbnNmb3JtIixzKTtsZXQgdT1uZXcgSW1hZ2U7dS5vbmxvYWQ9KCk9PntsZXQgdD10aGlzLmNhbnZhc0J1ZmZlci5nZXRDb250ZXh0KCIyZCIpO3QuY2xlYXJSZWN0KDAsMCx0aGlzLmNhbnZhc0J1ZmZlci53aWR0aCx0aGlzLmNhbnZhc0J1ZmZlci5oZWlnaHQpLHQuZHJhd0ltYWdlKHUsMCwwLHRoaXMubWluaW1hcFNpemUud2lkdGgsdGhpcy5taW5pbWFwU2l6ZS5oZWlnaHQpLHJlcXVlc3RBbmltYXRpb25GcmFtZSgoKCk9PntTdSh0aGlzLmNhbnZhc0J1ZmZlcikuc3R5bGUoImRpc3BsYXkiLG51bGwpLFN1KHRoaXMuY2FudmFzKS5zdHlsZSgiZGlzcGxheSIsIm5vbmUiKSxbdGhpcy5jYW52YXMsdGhpcy5jYW52YXNCdWZmZXJdPVt0aGlzLmNhbnZhc0J1ZmZlcix0aGlzLmNhbnZhc119KSk7bGV0IGU9dGhpcy5kb3dubG9hZENhbnZhcy5nZXRDb250ZXh0KCIyZCIpO2UuY2xlYXJSZWN0KDAsMCx0aGlzLmRvd25sb2FkQ2FudmFzLndpZHRoLHRoaXMuZG93bmxvYWRDYW52YXMuaGVpZ2h0KSxlLmRyYXdJbWFnZSh1LDAsMCx0aGlzLmRvd25sb2FkQ2FudmFzLndpZHRoLHRoaXMuZG93bmxvYWRDYW52YXMuaGVpZ2h0KX0sdS5vbmVycm9yPSgpPT57bGV0IHQ9bmV3IEJsb2IoW2NdLHt0eXBlOiJpbWFnZS9zdmcreG1sO2NoYXJzZXQ9dXRmLTgifSk7dS5zcmM9VVJMLmNyZWF0ZU9iamVjdFVSTCh0KX0sdS5zcmM9ImRhdGE6aW1hZ2Uvc3ZnK3htbDtjaGFyc2V0PXV0Zi04LCIrZW5jb2RlVVJJQ29tcG9uZW50KGMpfXpvb20odCl7aWYobnVsbD09dGhpcy5zY2FsZU1pbmltYXApcmV0dXJuO3QmJih0aGlzLnRyYW5zbGF0ZT1bdC54LHQueV0sdGhpcy5zY2FsZU1haW49dC5rKTtsZXQgZT10aGlzLnN2Zy5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKSxuPVN1KHRoaXMudmlld3BvaW50KTt0aGlzLnZpZXdwb2ludENvb3JkLng9LXRoaXMudHJhbnNsYXRlWzBdKnRoaXMuc2NhbGVNaW5pbWFwL3RoaXMuc2NhbGVNYWluLHRoaXMudmlld3BvaW50Q29vcmQueT0tdGhpcy50cmFuc2xhdGVbMV0qdGhpcy5zY2FsZU1pbmltYXAvdGhpcy5zY2FsZU1haW47bGV0IGk9ZS53aWR0aCp0aGlzLnNjYWxlTWluaW1hcC90aGlzLnNjYWxlTWFpbixyPWUuaGVpZ2h0KnRoaXMuc2NhbGVNaW5pbWFwL3RoaXMuc2NhbGVNYWluO24uYXR0cigieCIsdGhpcy52aWV3cG9pbnRDb29yZC54KS5hdHRyKCJ5Iix0aGlzLnZpZXdwb2ludENvb3JkLnkpLmF0dHIoIndpZHRoIixpKS5hdHRyKCJoZWlnaHQiLHIpO2xldCBvPXRoaXMubWluaW1hcFNpemUud2lkdGgsYT10aGlzLm1pbmltYXBTaXplLmhlaWdodCxzPXRoaXMudmlld3BvaW50Q29vcmQueCxsPXRoaXMudmlld3BvaW50Q29vcmQueTsoTWF0aC5taW4oTWF0aC5tYXgoMCxzK2kpLG8pLU1hdGgubWluKE1hdGgubWF4KDAscyksbykpKihNYXRoLm1pbihNYXRoLm1heCgwLGwrciksYSktTWF0aC5taW4oTWF0aC5tYXgoMCxsKSxhKSkvKG8qYSk8Ljg/dGhpcy5taW5pbWFwLmNsYXNzTGlzdC5yZW1vdmUoImhpZGRlbiIpOnRoaXMubWluaW1hcC5jbGFzc0xpc3QuYWRkKCJoaWRkZW4iKX19bGV0IEpPdD1jbGFzcyBleHRlbmRzIHlle2luaXQodCxlLG4saSxyKXtyZXR1cm4gbmV3IFpPdCh0LGUsbix0aGlzLGkscil9fTtKT3QudGVtcGxhdGU9X2VgCiAgICA8c3R5bGU+CiAgICAgIDpob3N0IHsKICAgICAgICBiYWNrZ3JvdW5kLWNvbG9yOiB3aGl0ZTsKICAgICAgICB0cmFuc2l0aW9uOiBvcGFjaXR5IDAuM3MgbGluZWFyOwogICAgICAgIHBvaW50ZXItZXZlbnRzOiBhdXRvOwogICAgICB9CgogICAgICA6aG9zdCguaGlkZGVuKSB7CiAgICAgICAgb3BhY2l0eTogMDsKICAgICAgICBwb2ludGVyLWV2ZW50czogbm9uZTsKICAgICAgfQoKICAgICAgY2FudmFzIHsKICAgICAgICBib3JkZXI6IDFweCBzb2xpZCAjOTk5OwogICAgICB9CgogICAgICByZWN0IHsKICAgICAgICBmaWxsOiB3aGl0ZTsKICAgICAgICBzdHJva2U6ICMxMTExMTE7CiAgICAgICAgc3Ryb2tlLXdpZHRoOiAxcHg7CiAgICAgICAgZmlsbC1vcGFjaXR5OiAwOwogICAgICAgIGZpbHRlcjogdXJsKCNtaW5pbWFwRHJvcFNoYWRvdyk7CiAgICAgICAgY3Vyc29yOiBtb3ZlOwogICAgICB9CgogICAgICBzdmcgewogICAgICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTsKICAgICAgfQogICAgPC9zdHlsZT4KICAgIDxzdmc+CiAgICAgIDxkZWZzPgogICAgICAgIDxmaWx0ZXIKICAgICAgICAgIGlkPSJtaW5pbWFwRHJvcFNoYWRvdyIKICAgICAgICAgIHg9Ii0yMCUiCiAgICAgICAgICB5PSItMjAlIgogICAgICAgICAgd2lkdGg9IjE1MCUiCiAgICAgICAgICBoZWlnaHQ9IjE1MCUiCiAgICAgICAgPgogICAgICAgICAgPGZlT2Zmc2V0IHJlc3VsdD0ib2ZmT3V0IiBpbj0iU291cmNlR3JhcGhpYyIgZHg9IjEiIGR5PSIxIj48L2ZlT2Zmc2V0PgogICAgICAgICAgPGZlQ29sb3JNYXRyaXgKICAgICAgICAgICAgcmVzdWx0PSJtYXRyaXhPdXQiCiAgICAgICAgICAgIGluPSJvZmZPdXQiCiAgICAgICAgICAgIHR5cGU9Im1hdHJpeCIKICAgICAgICAgICAgdmFsdWVzPSIwLjEgMCAwIDAgMCAwIDAuMSAwIDAgMCAwIDAgMC4xIDAgMCAwIDAgMCAwLjUgMCIKICAgICAgICAgID48L2ZlQ29sb3JNYXRyaXg+CiAgICAgICAgICA8ZmVHYXVzc2lhbkJsdXIKICAgICAgICAgICAgcmVzdWx0PSJibHVyT3V0IgogICAgICAgICAgICBpbj0ibWF0cml4T3V0IgogICAgICAgICAgICBzdGREZXZpYXRpb249IjIiCiAgICAgICAgICA+PC9mZUdhdXNzaWFuQmx1cj4KICAgICAgICAgIDxmZUJsZW5kIGluPSJTb3VyY2VHcmFwaGljIiBpbjI9ImJsdXJPdXQiIG1vZGU9Im5vcm1hbCI+PC9mZUJsZW5kPgogICAgICAgIDwvZmlsdGVyPgogICAgICA8L2RlZnM+CiAgICAgIDxyZWN0PjwvcmVjdD4KICAgIDwvc3ZnPgogICAgPGNhbnZhcyBjbGFzcz0iZmlyc3QiPjwvY2FudmFzPgogICAgPCEtLSBBZGRpdGlvbmFsIGNhbnZhcyB0byB1c2UgYXMgYnVmZmVyIHRvIGF2b2lkIGZsaWNrZXJpbmcgYmV0d2VlbiB1cGRhdGVzIC0tPgogICAgPGNhbnZhcyBjbGFzcz0ic2Vjb25kIj48L2NhbnZhcz4KICAgIDxjYW52YXMgY2xhc3M9ImRvd25sb2FkIj48L2NhbnZhcz4KICBgLEpPdD10KFtpKCJ0Zi1ncmFwaC1taW5pbWFwIildLEpPdCk7Y29uc3QgUU90PV9lYAogIDxzdHlsZT4KICAgIDpob3N0IHsKICAgICAgZGlzcGxheTogZmxleDsKICAgICAgZm9udC1zaXplOiAyMHB4OwogICAgICBoZWlnaHQ6IDEwMCU7CiAgICAgIHdpZHRoOiAxMDAlOwogICAgfQoKICAgICNzdmcgewogICAgICBmbGV4OiAxOwogICAgICBmb250LWZhbWlseTogUm9ib3RvLCBzYW5zLXNlcmlmOwogICAgICBoZWlnaHQ6IDEwMCU7CiAgICAgIG92ZXJmbG93OiBoaWRkZW47CiAgICAgIHdpZHRoOiAxMDAlOwogICAgfQoKICAgICNoaWRkZW4gewogICAgICBwb3NpdGlvbjogZml4ZWQ7CiAgICAgIHRvcDogMHB4OwogICAgICB2aXNpYmlsaXR5OiBoaWRkZW47CiAgICB9CgogICAgdGV4dCB7CiAgICAgIHVzZXItc2VsZWN0OiBub25lOwogICAgfQoKICAgIC8qIC0tLSBOb2RlIGFuZCBhbm5vdGF0aW9uLW5vZGUgZm9yIE1ldGFub2RlIC0tLSAqLwoKICAgIC5tZXRhID4gLm5vZGVzaGFwZSA+IHJlY3QsCiAgICAubWV0YSA+IC5hbm5vdGF0aW9uLW5vZGUgPiByZWN0IHsKICAgICAgY3Vyc29yOiBwb2ludGVyOwogICAgICBmaWxsOiBoc2woMCwgMCUsIDcwJSk7CiAgICB9CiAgICAubm9kZS5tZXRhLmhpZ2hsaWdodGVkID4gLm5vZGVzaGFwZSA+IHJlY3QsCiAgICAubm9kZS5tZXRhLmhpZ2hsaWdodGVkID4gLmFubm90YXRpb24tbm9kZSA+IHJlY3QgewogICAgICBzdHJva2Utd2lkdGg6IDI7CiAgICB9CiAgICAuYW5ub3RhdGlvbi5tZXRhLmhpZ2hsaWdodGVkID4gLm5vZGVzaGFwZSA+IHJlY3QsCiAgICAuYW5ub3RhdGlvbi5tZXRhLmhpZ2hsaWdodGVkID4gLmFubm90YXRpb24tbm9kZSA+IHJlY3QgewogICAgICBzdHJva2Utd2lkdGg6IDE7CiAgICB9CiAgICAubWV0YS5zZWxlY3RlZCA+IC5ub2Rlc2hhcGUgPiByZWN0LAogICAgLm1ldGEuc2VsZWN0ZWQgPiAuYW5ub3RhdGlvbi1ub2RlID4gcmVjdCB7CiAgICAgIHN0cm9rZTogcmVkOwogICAgICBzdHJva2Utd2lkdGg6IDI7CiAgICB9CiAgICAubm9kZS5tZXRhLnNlbGVjdGVkLmV4cGFuZGVkID4gLm5vZGVzaGFwZSA+IHJlY3QsCiAgICAubm9kZS5tZXRhLnNlbGVjdGVkLmV4cGFuZGVkID4gLmFubm90YXRpb24tbm9kZSA+IHJlY3QgewogICAgICBzdHJva2U6IHJlZDsKICAgICAgc3Ryb2tlLXdpZHRoOiAzOwogICAgfQogICAgLmFubm90YXRpb24ubWV0YS5zZWxlY3RlZCA+IC5ub2Rlc2hhcGUgPiByZWN0LAogICAgLmFubm90YXRpb24ubWV0YS5zZWxlY3RlZCA+IC5hbm5vdGF0aW9uLW5vZGUgPiByZWN0IHsKICAgICAgc3Ryb2tlOiByZWQ7CiAgICAgIHN0cm9rZS13aWR0aDogMjsKICAgIH0KICAgIC5ub2RlLm1ldGEuc2VsZWN0ZWQuZXhwYW5kZWQuaGlnaGxpZ2h0ZWQgPiAubm9kZXNoYXBlID4gcmVjdCwKICAgIC5ub2RlLm1ldGEuc2VsZWN0ZWQuZXhwYW5kZWQuaGlnaGxpZ2h0ZWQgPiAuYW5ub3RhdGlvbi1ub2RlID4gcmVjdCB7CiAgICAgIHN0cm9rZTogcmVkOwogICAgICBzdHJva2Utd2lkdGg6IDQ7CiAgICB9CgogICAgLmZhZGVkLAogICAgLmZhZGVkIHJlY3QsCiAgICAuZmFkZWQgZWxsaXBzZSwKICAgIC5mYWRlZCBwYXRoLAogICAgLmZhZGVkIHVzZSwKICAgICNyZWN0SGF0Y2ggbGluZSwKICAgICNlbGxpcHNlSGF0Y2ggbGluZSB7CiAgICAgIGNvbG9yOiAjZTBkNGIzICFpbXBvcnRhbnQ7CiAgICAgIGZpbGw6IHdoaXRlOwogICAgICBzdHJva2U6ICNlMGQ0YjMgIWltcG9ydGFudDsKICAgIH0KCiAgICAuZmFkZWQgcGF0aCB7CiAgICAgIHN0cm9rZS13aWR0aDogMXB4ICFpbXBvcnRhbnQ7CiAgICB9CgogICAgLmZhZGVkIHJlY3QgewogICAgICBmaWxsOiB1cmwoI3JlY3RIYXRjaCkgIWltcG9ydGFudDsKICAgIH0KCiAgICAuZmFkZWQgZWxsaXBzZSwKICAgIC5mYWRlZCB1c2UgewogICAgICBmaWxsOiB1cmwoI2VsbGlwc2VIYXRjaCkgIWltcG9ydGFudDsKICAgIH0KCiAgICAuZmFkZWQgdGV4dCB7CiAgICAgIG9wYWNpdHk6IDA7CiAgICB9CgogICAgLyogUnVsZXMgdXNlZCBmb3IgaW5wdXQtdHJhY2luZy4gKi8KICAgIC5pbnB1dC1oaWdobGlnaHQgPiAqID4gcmVjdCwKICAgIC5pbnB1dC1oaWdobGlnaHQgPiAqID4gZWxsaXBzZSwKICAgIC5pbnB1dC1oaWdobGlnaHQgPiAqID4gdXNlIHsKICAgICAgZmlsbDogd2hpdGU7CiAgICAgIHN0cm9rZTogI2ZmOTgwMCAhaW1wb3J0YW50OwogICAgfQoKICAgIC8qICAtIEZhZGVkIG5vbi1pbnB1dCBzdHlsaW5nICovCiAgICAubm9uLWlucHV0ID4gKiA+IHJlY3QsCi5ub24taW5wdXQgPiAqID4gZWxsaXBzZSwKLm5vbi1pbnB1dCA+ICogPiB1c2UsCi8qIEZvciBDb25zdCBub2Rlcy4gKi8KLm5vbi1pbnB1dCA+ICogPiAuY29uc3RhbnQ6bm90KFtjbGFzcyo9ImlucHV0LWhpZ2hsaWdodCJdKSA+CiAgLmFubm90YXRpb24tbm9kZSA+IGVsbGlwc2UsCi8qIEZvciBzdHlsaW5nIG9mIGFubm90YXRpb24gbm9kZXMgb2Ygbm9uLWlucHV0IG5vZGVzLiAqLwoubm9uLWlucHV0ID4gZyA+IC5hbm5vdGF0aW9uID4gLmFubm90YXRpb24tbm9kZSA+IHJlY3QgewogICAgICBzdHJva2U6ICNlMGQ0YjMgIWltcG9ydGFudDsKICAgICAgc3Ryb2tlLXdpZHRoOiBpbmhlcml0OwogICAgICBzdHJva2UtZGFzaGFycmF5OiBpbmhlcml0OwogICAgfQoKICAgIC5ub24taW5wdXQgcGF0aCB7CiAgICAgIHZpc2liaWxpdHk6IGhpZGRlbjsKICAgIH0KCiAgICAubm9uLWlucHV0ID4gLm5vZGVzaGFwZSA+IHJlY3QsCi5ub24taW5wdXQgPiAuYW5ub3RhdGlvbi1ub2RlID4gcmVjdCwKLyogRm9yIHN0eWxpbmcgb2YgYW5ub3RhdGlvbiBub2RlcyBvZiBub24taW5wdXQgbm9kZXMuICovCi5ub24taW5wdXQgPiBnID4gLmFubm90YXRpb24gPiAuYW5ub3RhdGlvbi1ub2RlID4gcmVjdCB7CiAgICAgIGZpbGw6IHVybCgjcmVjdEhhdGNoKSAhaW1wb3J0YW50OwogICAgfQoKICAgIC5ub24taW5wdXQgZWxsaXBzZSwKICAgIC5ub24taW5wdXQgdXNlIHsKICAgICAgZmlsbDogdXJsKCNlbGxpcHNlSGF0Y2gpICFpbXBvcnRhbnQ7CiAgICB9CgogICAgLm5vbi1pbnB1dCA+IHRleHQgewogICAgICBvcGFjaXR5OiAwOwogICAgfQoKICAgIC5ub24taW5wdXQgLmFubm90YXRpb24gPiAuYW5ub3RhdGlvbi1lZGdlIHsKICAgICAgbWFya2VyLWVuZDogdXJsKCNhbm5vdGF0aW9uLWFycm93aGVhZC1mYWRlZCk7CiAgICB9CgogICAgLm5vbi1pbnB1dCAuYW5ub3RhdGlvbiA+IC5hbm5vdGF0aW9uLWVkZ2UucmVmbGluZSB7CiAgICAgIG1hcmtlci1zdGFydDogdXJsKCNyZWYtYW5ub3RhdGlvbi1hcnJvd2hlYWQtZmFkZWQpOwogICAgfQoKICAgIC8qIElucHV0IGVkZ2VzLiAqLwogICAgLmlucHV0LWVkZ2UtaGlnaGxpZ2h0ID4gdGV4dCB7CiAgICAgIGZpbGw6IGJsYWNrICFpbXBvcnRhbnQ7CiAgICB9CiAgICAuaW5wdXQtaGlnaGxpZ2h0ID4gLmluLWFubm90YXRpb25zID4gLmFubm90YXRpb24gPiAuYW5ub3RhdGlvbi1lZGdlLAogICAgLmlucHV0LWhpZ2hsaWdodC1zZWxlY3RlZAogICAgICA+IC5pbi1hbm5vdGF0aW9ucwogICAgICA+IC5hbm5vdGF0aW9uCiAgICAgID4gLmFubm90YXRpb24tZWRnZSB7CiAgICAgIHN0cm9rZTogIzk5OSAhaW1wb3J0YW50OwogICAgfQoKICAgIC8qIE5vbi1pbnB1dCBlZGdlcy4gKi8KICAgIC5ub24taW5wdXQtZWRnZS1oaWdobGlnaHQsCi5ub24taW5wdXQgPiBnID4gLmFubm90YXRpb24gPiBwYXRoLAovKiBBbm5vdGF0aW9uIHN0eWxlcyAobGFiZWwgYW5kIGVkZ2VzIHJlc3BlY3RpdmVseSkuICovCi5ub24taW5wdXQgPiBnID4KLmFubm90YXRpb246bm90KC5pbnB1dC1oaWdobGlnaHQpOm5vdCguaW5wdXQtaGlnaGxpZ2h0LXNlbGVjdGVkKSA+Ci5hbm5vdGF0aW9uLWxhYmVsCi8qLmFubm90YXRpb24tZWRnZSovIHsKICAgICAgdmlzaWJpbGl0eTogaGlkZGVuOwogICAgfQoKICAgIC8qIC0tLSBPcCBOb2RlIC0tLSAqLwoKICAgIC5vcCA+IC5ub2Rlc2hhcGUgPiAubm9kZWNvbG9ydGFyZ2V0LAogICAgLm9wID4gLmFubm90YXRpb24tbm9kZSA+IC5ub2RlY29sb3J0YXJnZXQgewogICAgICBjdXJzb3I6IHBvaW50ZXI7CiAgICAgIGZpbGw6ICNmZmY7CiAgICAgIHN0cm9rZTogI2NjYzsKICAgIH0KCiAgICAub3Auc2VsZWN0ZWQgPiAubm9kZXNoYXBlID4gLm5vZGVjb2xvcnRhcmdldCwKICAgIC5vcC5zZWxlY3RlZCA+IC5hbm5vdGF0aW9uLW5vZGUgPiAubm9kZWNvbG9ydGFyZ2V0IHsKICAgICAgc3Ryb2tlOiByZWQ7CiAgICAgIHN0cm9rZS13aWR0aDogMjsKICAgIH0KCiAgICAub3AuaGlnaGxpZ2h0ZWQgPiAubm9kZXNoYXBlID4gLm5vZGVjb2xvcnRhcmdldCwKICAgIC5vcC5oaWdobGlnaHRlZCA+IC5hbm5vdGF0aW9uLW5vZGUgPiAubm9kZWNvbG9ydGFyZ2V0IHsKICAgICAgc3Ryb2tlLXdpZHRoOiAyOwogICAgfQoKICAgIC8qIC0tLSBTZXJpZXMgTm9kZSAtLS0gKi8KCiAgICAvKiBCeSBkZWZhdWx0LCBkb24ndCBzaG93IHRoZSBzZXJpZXMgYmFja2dyb3VuZCA8cmVjdD4uICovCiAgICAuc2VyaWVzID4gLm5vZGVzaGFwZSA+IHJlY3QgewogICAgICBmaWxsOiBoc2woMCwgMCUsIDcwJSk7CiAgICAgIGZpbGwtb3BhY2l0eTogMDsKICAgICAgc3Ryb2tlLWRhc2hhcnJheTogNSwgNTsKICAgICAgc3Ryb2tlLW9wYWNpdHk6IDA7CiAgICAgIGN1cnNvcjogcG9pbnRlcjsKICAgIH0KCiAgICAvKiBPbmNlIGV4cGFuZGVkLCBzaG93IHRoZSBzZXJpZXMgYmFja2dyb3VuZCA8cmVjdD4gYW5kIGhpZGUgdGhlIDx1c2U+LiAqLwogICAgLnNlcmllcy5leHBhbmRlZCA+IC5ub2Rlc2hhcGUgPiByZWN0IHsKICAgICAgZmlsbC1vcGFjaXR5OiAwLjE1OwogICAgICBzdHJva2U6IGhzbCgwLCAwJSwgNzAlKTsKICAgICAgc3Ryb2tlLW9wYWNpdHk6IDE7CiAgICB9CiAgICAuc2VyaWVzLmV4cGFuZGVkID4gLm5vZGVzaGFwZSA+IHVzZSB7CiAgICAgIHZpc2liaWxpdHk6IGhpZGRlbjsKICAgIH0KCiAgICAvKioKICogVE9ETzogU2ltcGxpZnkgdGhpcyBieSBhcHBseWluZyBhIHN0YWJsZSBjbGFzcyBuYW1lIHRvIGFsbCA8Zz4KICogZWxlbWVudHMgdGhhdCBjdXJyZW50bHkgaGF2ZSBlaXRoZXIgdGhlIG5vZGVzaGFwZSBvciBhbm5vdGF0aW9uLW5vZGUgY2xhc3Nlcy4KICovCiAgICAuc2VyaWVzID4gLm5vZGVzaGFwZSA+IHVzZSwKICAgIC5zZXJpZXMgPiAuYW5ub3RhdGlvbi1ub2RlID4gdXNlIHsKICAgICAgc3Ryb2tlOiAjY2NjOwogICAgfQogICAgLnNlcmllcy5oaWdobGlnaHRlZCA+IC5ub2Rlc2hhcGUgPiB1c2UsCiAgICAuc2VyaWVzLmhpZ2hsaWdodGVkID4gLmFubm90YXRpb24tbm9kZSA+IHVzZSB7CiAgICAgIHN0cm9rZS13aWR0aDogMjsKICAgIH0KICAgIC5zZXJpZXMuc2VsZWN0ZWQgPiAubm9kZXNoYXBlID4gdXNlLAogICAgLnNlcmllcy5zZWxlY3RlZCA+IC5hbm5vdGF0aW9uLW5vZGUgPiB1c2UgewogICAgICBzdHJva2U6IHJlZDsKICAgICAgc3Ryb2tlLXdpZHRoOiAyOwogICAgfQoKICAgIC5zZXJpZXMuc2VsZWN0ZWQgPiAubm9kZXNoYXBlID4gcmVjdCB7CiAgICAgIHN0cm9rZTogcmVkOwogICAgICBzdHJva2Utd2lkdGg6IDI7CiAgICB9CgogICAgLmFubm90YXRpb24uc2VyaWVzLnNlbGVjdGVkID4gLmFubm90YXRpb24tbm9kZSA+IHVzZSB7CiAgICAgIHN0cm9rZTogcmVkOwogICAgICBzdHJva2Utd2lkdGg6IDI7CiAgICB9CgogICAgLyogLS0tIEJyaWRnZSBOb2RlIC0tLSAqLwogICAgLmJyaWRnZSA+IC5ub2Rlc2hhcGUgPiByZWN0IHsKICAgICAgc3Ryb2tlOiAjZjBmOwogICAgICBvcGFjaXR5OiAwLjI7CiAgICAgIGRpc3BsYXk6IG5vbmU7CiAgICB9CgogICAgLyogLS0tIFN0cnVjdHVyYWwgRWxlbWVudHMgLS0tICovCiAgICAuZWRnZSA+IHBhdGguZWRnZWxpbmUuc3RydWN0dXJhbCB7CiAgICAgIHN0cm9rZTogI2YwZjsKICAgICAgb3BhY2l0eTogMC4yOwogICAgICBkaXNwbGF5OiBub25lOwogICAgfQoKICAgIC8qIFJlZmVyZW5jZSBFZGdlICovCiAgICAuZWRnZSA+IHBhdGguZWRnZWxpbmUucmVmZXJlbmNlZWRnZSB7CiAgICAgIHN0cm9rZTogI2ZmYjc0ZDsKICAgICAgb3BhY2l0eTogMTsKICAgIH0KCiAgICAvKiAtLS0gU2VyaWVzIE5vZGVzIC0tLSAqLwoKICAgIC8qIEhpZGUgdGhlIHJlY3QgZm9yIGEgc2VyaWVzJyBhbm5vdGF0aW9uLiAqLwogICAgLnNlcmllcyA+IC5hbm5vdGF0aW9uLW5vZGUgPiByZWN0IHsKICAgICAgZGlzcGxheTogbm9uZTsKICAgIH0KCiAgICAvKiAtLS0gTm9kZSBsYWJlbCAtLS0gKi8KCiAgICAubm9kZSB7CiAgICAgIC8qIFByb3ZpZGUgYSBoaW50IHRvIGJyb3dzZXJzIHRvIGF2b2lkIHVzaW5nIHRoZWlyIHN0YXRpYyByYXN0ZXJpemF0aW9uCiAgICAgIGF0IGluaXRpYWwgc2NhbGUsIHdoaWNoIGxvb2tzIHZlcnkgcGl4ZWxhdGVkIG9uIENocm9taXVtIHdoZW4gem9vbWVkIGluLgogICAgICBOb3RlIHRoYXQgd2UgaW50ZW50aW9uYWxseSBkbyAqbm90KiB1c2UgJ3dpbGwtY2hhbmdlOiB0cmFuc2Zvcm0nIGFuZAogICAgICAndHJhbnNsYXRlWigwKSBoZXJlLCB3aGljaCBpbnRyb2R1Y2UgYmx1cnJpbmVzcyBvbiBGaXJlZm94LgogICAgICBTZWUgaHR0cHM6Ly9naXRodWIuY29tL3RlbnNvcmZsb3cvdGVuc29yYm9hcmQvaXNzdWVzLzQ3NDQgKi8KICAgICAgdHJhbnNmb3JtOiB0cmFuc2xhdGVaKDFweCk7CiAgICB9CgogICAgLm5vZGUgPiB0ZXh0Lm5vZGVsYWJlbCB7CiAgICAgIGN1cnNvcjogcG9pbnRlcjsKICAgICAgZmlsbDogIzQ0NDsKICAgIH0KCiAgICAubWV0YS5leHBhbmRlZCA+IHRleHQubm9kZWxhYmVsIHsKICAgICAgZm9udC1zaXplOiA5cHg7CiAgICB9CgogICAgLnNlcmllcyA+IHRleHQubm9kZWxhYmVsIHsKICAgICAgZm9udC1zaXplOiA4cHg7CiAgICB9CgogICAgLm9wID4gdGV4dC5ub2RlbGFiZWwgewogICAgICBmb250LXNpemU6IDZweDsKICAgIH0KCiAgICAuYnJpZGdlID4gdGV4dC5ub2RlbGFiZWwgewogICAgICBkaXNwbGF5OiBub25lOwogICAgfQoKICAgIC5ub2RlLm1ldGEuZXhwYW5kZWQgPiB0ZXh0Lm5vZGVsYWJlbCB7CiAgICAgIGN1cnNvcjogbm9ybWFsOwogICAgfQoKICAgIC5hbm5vdGF0aW9uLm1ldGEuaGlnaGxpZ2h0ZWQgPiB0ZXh0LmFubm90YXRpb24tbGFiZWwgewogICAgICBmaWxsOiAjNTBhM2Y3OwogICAgfQoKICAgIC5hbm5vdGF0aW9uLm1ldGEuc2VsZWN0ZWQgPiB0ZXh0LmFubm90YXRpb24tbGFiZWwgewogICAgICBmaWxsOiAjNDI4NWY0OwogICAgfQoKICAgIC8qIC0tLSBBbm5vdGF0aW9uIC0tLSAqLwoKICAgIC8qIG9ubHkgYXBwbGllZCBmb3IgYW5ub3RhdGlvbnMgdGhhdCBhcmUgbm90IHN1bW1hcnkgb3IgY29uc3RhbnQuCiguc3VtbWFyeSwgLmNvbnN0YW50IGdldHMgb3ZlcnJpZGRlbiBiZWxvdykgKi8KICAgIC5hbm5vdGF0aW9uID4gLmFubm90YXRpb24tbm9kZSA+ICogewogICAgICBzdHJva2Utd2lkdGg6IDAuNTsKICAgICAgc3Ryb2tlLWRhc2hhcnJheTogMSwgMTsKICAgIH0KCiAgICAuYW5ub3RhdGlvbi5zdW1tYXJ5ID4gLmFubm90YXRpb24tbm9kZSA+ICosCiAgICAuYW5ub3RhdGlvbi5jb25zdGFudCA+IC5hbm5vdGF0aW9uLW5vZGUgPiAqIHsKICAgICAgc3Ryb2tlLXdpZHRoOiAxOwogICAgICBzdHJva2UtZGFzaGFycmF5OiBub25lOwogICAgfQoKICAgIC5hbm5vdGF0aW9uID4gLmFubm90YXRpb24tZWRnZSB7CiAgICAgIGZpbGw6IG5vbmU7CiAgICAgIHN0cm9rZTogI2FhYTsKICAgICAgc3Ryb2tlLXdpZHRoOiAwLjU7CiAgICAgIG1hcmtlci1lbmQ6IHVybCgjYW5ub3RhdGlvbi1hcnJvd2hlYWQpOwogICAgfQoKICAgIC5mYWRlZCAuYW5ub3RhdGlvbiA+IC5hbm5vdGF0aW9uLWVkZ2UgewogICAgICBtYXJrZXItZW5kOiB1cmwoI2Fubm90YXRpb24tYXJyb3doZWFkLWZhZGVkKTsKICAgIH0KCiAgICAuYW5ub3RhdGlvbiA+IC5hbm5vdGF0aW9uLWVkZ2UucmVmbGluZSB7CiAgICAgIG1hcmtlci1zdGFydDogdXJsKCNyZWYtYW5ub3RhdGlvbi1hcnJvd2hlYWQpOwogICAgfQoKICAgIC5mYWRlZCAuYW5ub3RhdGlvbiA+IC5hbm5vdGF0aW9uLWVkZ2UucmVmbGluZSB7CiAgICAgIG1hcmtlci1zdGFydDogdXJsKCNyZWYtYW5ub3RhdGlvbi1hcnJvd2hlYWQtZmFkZWQpOwogICAgfQoKICAgIC5hbm5vdGF0aW9uID4gLmFubm90YXRpb24tY29udHJvbC1lZGdlIHsKICAgICAgc3Ryb2tlLWRhc2hhcnJheTogMSwgMTsKICAgIH0KCiAgICAjYW5ub3RhdGlvbi1hcnJvd2hlYWQgewogICAgICBmaWxsOiAjYWFhOwogICAgfQoKICAgICNhbm5vdGF0aW9uLWFycm93aGVhZC1mYWRlZCB7CiAgICAgIGZpbGw6ICNlMGQ0YjM7CiAgICB9CgogICAgI3JlZi1hbm5vdGF0aW9uLWFycm93aGVhZCB7CiAgICAgIGZpbGw6ICNhYWE7CiAgICB9CgogICAgI3JlZi1hbm5vdGF0aW9uLWFycm93aGVhZC1mYWRlZCB7CiAgICAgIGZpbGw6ICNlMGQ0YjM7CiAgICB9CgogICAgLmFubm90YXRpb24gPiAuYW5ub3RhdGlvbi1sYWJlbCB7CiAgICAgIGZvbnQtc2l6ZTogNXB4OwogICAgICBjdXJzb3I6IHBvaW50ZXI7CiAgICB9CiAgICAuYW5ub3RhdGlvbiA+IC5hbm5vdGF0aW9uLWxhYmVsLmFubm90YXRpb24tZWxsaXBzaXMgewogICAgICBjdXJzb3I6IGRlZmF1bHQ7CiAgICB9CgogICAgLyogSGlkZSBhbm5vdGF0aW9ucyBvbiBleHBhbmRlZCBtZXRhIG5vZGVzIHNpbmNlIHRoZXkncmUgcmVkdW5kYW50LiAqLwogICAgLmV4cGFuZGVkID4gLmluLWFubm90YXRpb25zLAogICAgLmV4cGFuZGVkID4gLm91dC1hbm5vdGF0aW9ucyB7CiAgICAgIGRpc3BsYXk6IG5vbmU7CiAgICB9CgogICAgLyogLS0tIEFubm90YXRpb246IENvbnN0YW50IC0tLSAqLwoKICAgIC5jb25zdGFudCA+IC5hbm5vdGF0aW9uLW5vZGUgPiBlbGxpcHNlIHsKICAgICAgY3Vyc29yOiBwb2ludGVyOwogICAgICBmaWxsOiB3aGl0ZTsKICAgICAgc3Ryb2tlOiAjODQ4NDg0OwogICAgfQoKICAgIC5jb25zdGFudC5zZWxlY3RlZCA+IC5hbm5vdGF0aW9uLW5vZGUgPiBlbGxpcHNlIHsKICAgICAgZmlsbDogd2hpdGU7CiAgICAgIHN0cm9rZTogcmVkOwogICAgfQoKICAgIC5jb25zdGFudC5oaWdobGlnaHRlZCA+IC5hbm5vdGF0aW9uLW5vZGUgPiBlbGxpcHNlIHsKICAgICAgc3Ryb2tlLXdpZHRoOiAxLjU7CiAgICB9CgogICAgLyogLS0tIEFubm90YXRpb246IFN1bW1hcnkgLS0tICovCgogICAgLnN1bW1hcnkgPiAuYW5ub3RhdGlvbi1ub2RlID4gZWxsaXBzZSB7CiAgICAgIGN1cnNvcjogcG9pbnRlcjsKICAgICAgZmlsbDogI2RiNDQzNzsKICAgICAgc3Ryb2tlOiAjZGI0NDM3OwogICAgfQoKICAgIC5zdW1tYXJ5LnNlbGVjdGVkID4gLmFubm90YXRpb24tbm9kZSA+IGVsbGlwc2UgewogICAgICBmaWxsOiAjYTUyNzE0OwogICAgICBzdHJva2U6ICNhNTI3MTQ7CiAgICB9CgogICAgLnN1bW1hcnkuaGlnaGxpZ2h0ZWQgPiAuYW5ub3RhdGlvbi1ub2RlID4gZWxsaXBzZSB7CiAgICAgIHN0cm9rZS13aWR0aDogMS41OwogICAgfQoKICAgIC8qIC0tLSBFZGdlIC0tLSAqLwoKICAgIC5lZGdlID4gcGF0aC5lZGdlbGluZSB7CiAgICAgIGZpbGw6IG5vbmU7CiAgICAgIHN0cm9rZTogI2JiYjsKICAgICAgc3Ryb2tlLWxpbmVjYXA6IHJvdW5kOwogICAgICBzdHJva2Utd2lkdGg6IDAuNzU7CiAgICB9CgogICAgLmVkZ2UgLnNlbGVjdGFibGVlZGdlIHsKICAgICAgY3Vyc29yOiBwb2ludGVyOwogICAgfQoKICAgIC5zZWxlY3RlZGVkZ2UgPiBwYXRoLmVkZ2VsaW5lIHsKICAgICAgY3Vyc29yOiBkZWZhdWx0OwogICAgICBzdHJva2U6ICNmMDA7CiAgICB9CgogICAgLmVkZ2Uuc2VsZWN0ZWRlZGdlIHRleHQgewogICAgICBmaWxsOiAjMDAwOwogICAgfQoKICAgIC8qIExhYmVscyBzaG93aW5nIHRlbnNvciBzaGFwZXMgb24gZWRnZXMgKi8KICAgIC5lZGdlID4gdGV4dCB7CiAgICAgIGZvbnQtc2l6ZTogMy41cHg7CiAgICAgIGZpbGw6ICM2NjY7CiAgICB9CgogICAgLmRhdGFmbG93LWFycm93aGVhZCB7CiAgICAgIGZpbGw6ICNiYmI7CiAgICB9CgogICAgLnJlZmVyZW5jZS1hcnJvd2hlYWQgewogICAgICBmaWxsOiAjZmZiNzRkOwogICAgfQoKICAgIC5zZWxlY3RlZC1hcnJvd2hlYWQgewogICAgICBmaWxsOiAjZjAwOwogICAgfQoKICAgIC5lZGdlIC5jb250cm9sLWRlcCB7CiAgICAgIHN0cm9rZS1kYXNoYXJyYXk6IDIsIDI7CiAgICB9CgogICAgLyogLS0tIEdyb3VwIG5vZGUgZXhwYW5kL2NvbGxhcHNlIGJ1dHRvbiAtLS0gKi8KCiAgICAvKiBIaWRlcyBleHBhbmQvY29sbGFwc2UgYnV0dG9ucyB3aGVuIGEgbm9kZSBpc24ndCBleHBhbmRlZCBvciBoaWdobGlnaHRlZC4gVXNpbmcKICAgaW5jcmVkaWJseSBzbWFsbCBvcGFjaXR5IHNvIHRoYXQgdGhlIGJvdW5kaW5nIGJveCBvZiB0aGUgPGc+IHBhcmVudCBzdGlsbCB0YWtlcwogICB0aGlzIGNvbnRhaW5lciBpbnRvIGFjY291bnQgZXZlbiB3aGVuIGl0IGlzbid0IHZpc2libGUgKi8KICAgIC5ub2RlOm5vdCguaGlnaGxpZ2h0ZWQpOm5vdCguZXhwYW5kZWQpID4gLm5vZGVzaGFwZSA+IC5idXR0b25jb250YWluZXIgewogICAgICBvcGFjaXR5OiAwLjAxOwogICAgfQogICAgLm5vZGUuaGlnaGxpZ2h0ZWQgPiAubm9kZXNoYXBlID4gLmJ1dHRvbmNvbnRhaW5lciB7CiAgICAgIGN1cnNvcjogcG9pbnRlcjsKICAgIH0KICAgIC5idXR0b25jaXJjbGUgewogICAgICBmaWxsOiAjZTc4MTFkOwogICAgfQogICAgLmJ1dHRvbmNpcmNsZTpob3ZlciB7CiAgICAgIGZpbGw6ICNiOTY3MTc7CiAgICB9CiAgICAuZXhwYW5kYnV0dG9uLAogICAgLmNvbGxhcHNlYnV0dG9uIHsKICAgICAgc3Ryb2tlOiB3aGl0ZTsKICAgIH0KICAgIC8qIERvIG5vdCBsZXQgdGhlIHBhdGggZWxlbWVudHMgaW4gdGhlIGJ1dHRvbiB0YWtlIHBvaW50ZXIgZm9jdXMgKi8KICAgIC5ub2RlID4gLm5vZGVzaGFwZSA+IC5idXR0b25jb250YWluZXIgPiAuZXhwYW5kYnV0dG9uLAogICAgLm5vZGUgPiAubm9kZXNoYXBlID4gLmJ1dHRvbmNvbnRhaW5lciA+IC5jb2xsYXBzZWJ1dHRvbiB7CiAgICAgIHBvaW50ZXItZXZlbnRzOiBub25lOwogICAgfQogICAgLyogT25seSBzaG93IHRoZSBleHBhbmQgYnV0dG9uIHdoZW4gYSBub2RlIGlzIGNvbGxhcHNlZCBhbmQgb25seSBzaG93IHRoZQogICBjb2xsYXBzZSBidXR0b24gd2hlbiBhIG5vZGUgaXMgZXhwYW5kZWQuICovCiAgICAubm9kZS5leHBhbmRlZCA+IC5ub2Rlc2hhcGUgPiAuYnV0dG9uY29udGFpbmVyID4gLmV4cGFuZGJ1dHRvbiB7CiAgICAgIGRpc3BsYXk6IG5vbmU7CiAgICB9CiAgICAubm9kZTpub3QoLmV4cGFuZGVkKSA+IC5ub2Rlc2hhcGUgPiAuYnV0dG9uY29udGFpbmVyID4gLmNvbGxhcHNlYnV0dG9uIHsKICAgICAgZGlzcGxheTogbm9uZTsKICAgIH0KCiAgICAuaGVhbHRoLXBpbGwtc3RhdHMgewogICAgICBmb250LXNpemU6IDRweDsKICAgICAgdGV4dC1hbmNob3I6IG1pZGRsZTsKICAgIH0KCiAgICAuaGVhbHRoLXBpbGwgcmVjdCB7CiAgICAgIGZpbHRlcjogdXJsKCNoZWFsdGgtcGlsbC1zaGFkb3cpOwogICAgICByeDogMzsKICAgICAgcnk6IDM7CiAgICB9CgogICAgLnRpdGxlQ29udGFpbmVyIHsKICAgICAgcG9zaXRpb246IHJlbGF0aXZlOwogICAgICB0b3A6IDIwcHg7CiAgICB9CgogICAgLnRpdGxlLAogICAgLmF1eFRpdGxlLAogICAgLmZ1bmN0aW9uTGlicmFyeVRpdGxlIHsKICAgICAgcG9zaXRpb246IGFic29sdXRlOwogICAgfQoKICAgICNtaW5pbWFwIHsKICAgICAgcG9zaXRpb246IGFic29sdXRlOwogICAgICByaWdodDogMjBweDsKICAgICAgYm90dG9tOiAyMHB4OwogICAgfQoKICAgIC5jb250ZXh0LW1lbnUgewogICAgICBwb3NpdGlvbjogYWJzb2x1dGU7CiAgICAgIGRpc3BsYXk6IG5vbmU7CiAgICAgIGJhY2tncm91bmQtY29sb3I6ICNlMmUyZTI7CiAgICAgIGJvcmRlci1yYWRpdXM6IDJweDsKICAgICAgZm9udC1zaXplOiAxNHB4OwogICAgICBtaW4td2lkdGg6IDE1MHB4OwogICAgICBib3JkZXI6IDFweCBzb2xpZCAjZDRkNGQ0OwogICAgfQoKICAgIC5jb250ZXh0LW1lbnUgdWwgewogICAgICBsaXN0LXN0eWxlLXR5cGU6IG5vbmU7CiAgICAgIG1hcmdpbjogMDsKICAgICAgcGFkZGluZzogMDsKICAgICAgY3Vyc29yOiBkZWZhdWx0OwogICAgfQoKICAgIC5jb250ZXh0LW1lbnUgdWwgbGkgewogICAgICBwYWRkaW5nOiA0cHggMTZweDsKICAgIH0KCiAgICAuY29udGV4dC1tZW51IHVsIGxpOmhvdmVyIHsKICAgICAgYmFja2dyb3VuZC1jb2xvcjogI2YzOTEzZTsKICAgICAgY29sb3I6IHdoaXRlOwogICAgfQogIDwvc3R5bGU+CiAgPGRpdiBjbGFzcz0idGl0bGVDb250YWluZXIiPgogICAgPGRpdiBpZD0idGl0bGUiIGNsYXNzPSJ0aXRsZSI+TWFpbiBHcmFwaDwvZGl2PgogICAgPGRpdiBpZD0iYXV4VGl0bGUiIGNsYXNzPSJhdXhUaXRsZSI+QXV4aWxpYXJ5IE5vZGVzPC9kaXY+CiAgICA8ZGl2IGlkPSJmdW5jdGlvbkxpYnJhcnlUaXRsZSIgY2xhc3M9ImZ1bmN0aW9uTGlicmFyeVRpdGxlIj5GdW5jdGlvbnM8L2Rpdj4KICA8L2Rpdj4KICA8c3ZnIGlkPSJzdmciPgogICAgPGRlZnM+CiAgICAgIDwhLS0gQXJyb3cgaGVhZHMgZm9yIHJlZmVyZW5jZSBlZGdlIHBhdGhzIG9mIGRpZmZlcmVudCBwcmVkZWZpbmVkIHNpemVzIHBlciBjb2xvci4gLS0+CiAgICAgIDxwYXRoCiAgICAgICAgaWQ9InJlZmVyZW5jZS1hcnJvd2hlYWQtcGF0aCIKICAgICAgICBkPSJNIDAsMCBMIDEwLDUgTCAwLDEwIEMgMyw3IDMsMyAwLDAiCiAgICAgID48L3BhdGg+CiAgICAgIDxtYXJrZXIKICAgICAgICBjbGFzcz0icmVmZXJlbmNlLWFycm93aGVhZCIKICAgICAgICBpZD0icmVmZXJlbmNlLWFycm93aGVhZC1zbWFsbCIKICAgICAgICB2aWV3Qm94PSIwIDAgMTAgMTAiCiAgICAgICAgbWFya2VyV2lkdGg9IjUiCiAgICAgICAgbWFya2VySGVpZ2h0PSI1IgogICAgICAgIHJlZlg9IjIiCiAgICAgICAgcmVmWT0iNSIKICAgICAgICBvcmllbnQ9ImF1dG8tc3RhcnQtcmV2ZXJzZSIKICAgICAgICBtYXJrZXJVbml0cz0idXNlclNwYWNlT25Vc2UiCiAgICAgID4KICAgICAgICA8dXNlIHhsaW5rOmhyZWY9IiNyZWZlcmVuY2UtYXJyb3doZWFkLXBhdGgiPjwvdXNlPgogICAgICA8L21hcmtlcj4KICAgICAgPG1hcmtlcgogICAgICAgIGNsYXNzPSJyZWZlcmVuY2UtYXJyb3doZWFkIgogICAgICAgIGlkPSJyZWZlcmVuY2UtYXJyb3doZWFkLW1lZGl1bSIKICAgICAgICB2aWV3Qm94PSIwIDAgMTAgMTAiCiAgICAgICAgbWFya2VyV2lkdGg9IjEzIgogICAgICAgIG1hcmtlckhlaWdodD0iMTMiCiAgICAgICAgcmVmWD0iMiIKICAgICAgICByZWZZPSI1IgogICAgICAgIG9yaWVudD0iYXV0by1zdGFydC1yZXZlcnNlIgogICAgICAgIG1hcmtlclVuaXRzPSJ1c2VyU3BhY2VPblVzZSIKICAgICAgPgogICAgICAgIDx1c2UgeGxpbms6aHJlZj0iI3JlZmVyZW5jZS1hcnJvd2hlYWQtcGF0aCI+PC91c2U+CiAgICAgIDwvbWFya2VyPgogICAgICA8bWFya2VyCiAgICAgICAgY2xhc3M9InJlZmVyZW5jZS1hcnJvd2hlYWQiCiAgICAgICAgaWQ9InJlZmVyZW5jZS1hcnJvd2hlYWQtbGFyZ2UiCiAgICAgICAgdmlld0JveD0iMCAwIDEwIDEwIgogICAgICAgIG1hcmtlcldpZHRoPSIxNiIKICAgICAgICBtYXJrZXJIZWlnaHQ9IjE2IgogICAgICAgIHJlZlg9IjIiCiAgICAgICAgcmVmWT0iNSIKICAgICAgICBvcmllbnQ9ImF1dG8tc3RhcnQtcmV2ZXJzZSIKICAgICAgICBtYXJrZXJVbml0cz0idXNlclNwYWNlT25Vc2UiCiAgICAgID4KICAgICAgICA8dXNlIHhsaW5rOmhyZWY9IiNyZWZlcmVuY2UtYXJyb3doZWFkLXBhdGgiPjwvdXNlPgogICAgICA8L21hcmtlcj4KICAgICAgPG1hcmtlcgogICAgICAgIGNsYXNzPSJyZWZlcmVuY2UtYXJyb3doZWFkIgogICAgICAgIGlkPSJyZWZlcmVuY2UtYXJyb3doZWFkLXhsYXJnZSIKICAgICAgICB2aWV3Qm94PSIwIDAgMTAgMTAiCiAgICAgICAgbWFya2VyV2lkdGg9IjIwIgogICAgICAgIG1hcmtlckhlaWdodD0iMjAiCiAgICAgICAgcmVmWD0iMiIKICAgICAgICByZWZZPSI1IgogICAgICAgIG9yaWVudD0iYXV0by1zdGFydC1yZXZlcnNlIgogICAgICAgIG1hcmtlclVuaXRzPSJ1c2VyU3BhY2VPblVzZSIKICAgICAgPgogICAgICAgIDx1c2UgeGxpbms6aHJlZj0iI3JlZmVyZW5jZS1hcnJvd2hlYWQtcGF0aCI+PC91c2U+CiAgICAgIDwvbWFya2VyPgoKICAgICAgPCEtLSBBcnJvdyBoZWFkcyBmb3IgZGF0YWZsb3cgZWRnZSBwYXRocyBvZiBkaWZmZXJlbnQgcHJlZGVmaW5lZCBzaXplcyBwZXIgY29sb3IuIC0tPgogICAgICA8cGF0aAogICAgICAgIGlkPSJkYXRhZmxvdy1hcnJvd2hlYWQtcGF0aCIKICAgICAgICBkPSJNIDAsMCBMIDEwLDUgTCAwLDEwIEMgMyw3IDMsMyAwLDAiCiAgICAgID48L3BhdGg+CiAgICAgIDxtYXJrZXIKICAgICAgICBjbGFzcz0iZGF0YWZsb3ctYXJyb3doZWFkIgogICAgICAgIGlkPSJkYXRhZmxvdy1hcnJvd2hlYWQtc21hbGwiCiAgICAgICAgdmlld0JveD0iMCAwIDEwIDEwIgogICAgICAgIG1hcmtlcldpZHRoPSI1IgogICAgICAgIG1hcmtlckhlaWdodD0iNSIKICAgICAgICByZWZYPSIyIgogICAgICAgIHJlZlk9IjUiCiAgICAgICAgb3JpZW50PSJhdXRvLXN0YXJ0LXJldmVyc2UiCiAgICAgICAgbWFya2VyVW5pdHM9InVzZXJTcGFjZU9uVXNlIgogICAgICA+CiAgICAgICAgPHVzZSB4bGluazpocmVmPSIjZGF0YWZsb3ctYXJyb3doZWFkLXBhdGgiPjwvdXNlPgogICAgICA8L21hcmtlcj4KICAgICAgPG1hcmtlcgogICAgICAgIGNsYXNzPSJkYXRhZmxvdy1hcnJvd2hlYWQiCiAgICAgICAgaWQ9ImRhdGFmbG93LWFycm93aGVhZC1tZWRpdW0iCiAgICAgICAgdmlld0JveD0iMCAwIDEwIDEwIgogICAgICAgIG1hcmtlcldpZHRoPSIxMyIKICAgICAgICBtYXJrZXJIZWlnaHQ9IjEzIgogICAgICAgIHJlZlg9IjIiCiAgICAgICAgcmVmWT0iNSIKICAgICAgICBvcmllbnQ9ImF1dG8tc3RhcnQtcmV2ZXJzZSIKICAgICAgICBtYXJrZXJVbml0cz0idXNlclNwYWNlT25Vc2UiCiAgICAgID4KICAgICAgICA8dXNlIHhsaW5rOmhyZWY9IiNkYXRhZmxvdy1hcnJvd2hlYWQtcGF0aCI+PC91c2U+CiAgICAgIDwvbWFya2VyPgogICAgICA8bWFya2VyCiAgICAgICAgY2xhc3M9ImRhdGFmbG93LWFycm93aGVhZCIKICAgICAgICBpZD0iZGF0YWZsb3ctYXJyb3doZWFkLWxhcmdlIgogICAgICAgIHZpZXdCb3g9IjAgMCAxMCAxMCIKICAgICAgICBtYXJrZXJXaWR0aD0iMTYiCiAgICAgICAgbWFya2VySGVpZ2h0PSIxNiIKICAgICAgICByZWZYPSIyIgogICAgICAgIHJlZlk9IjUiCiAgICAgICAgb3JpZW50PSJhdXRvLXN0YXJ0LXJldmVyc2UiCiAgICAgICAgbWFya2VyVW5pdHM9InVzZXJTcGFjZU9uVXNlIgogICAgICA+CiAgICAgICAgPHVzZSB4bGluazpocmVmPSIjZGF0YWZsb3ctYXJyb3doZWFkLXBhdGgiPjwvdXNlPgogICAgICA8L21hcmtlcj4KICAgICAgPG1hcmtlcgogICAgICAgIGNsYXNzPSJkYXRhZmxvdy1hcnJvd2hlYWQiCiAgICAgICAgaWQ9ImRhdGFmbG93LWFycm93aGVhZC14bGFyZ2UiCiAgICAgICAgdmlld0JveD0iMCAwIDEwIDEwIgogICAgICAgIG1hcmtlcldpZHRoPSIyMCIKICAgICAgICBtYXJrZXJIZWlnaHQ9IjIwIgogICAgICAgIHJlZlg9IjIiCiAgICAgICAgcmVmWT0iNSIKICAgICAgICBvcmllbnQ9ImF1dG8tc3RhcnQtcmV2ZXJzZSIKICAgICAgICBtYXJrZXJVbml0cz0idXNlclNwYWNlT25Vc2UiCiAgICAgID4KICAgICAgICA8dXNlIHhsaW5rOmhyZWY9IiNkYXRhZmxvdy1hcnJvd2hlYWQtcGF0aCI+PC91c2U+CiAgICAgIDwvbWFya2VyPgoKICAgICAgPCEtLSBBcnJvdyBoZWFkIGZvciBhbm5vdGF0aW9uIGVkZ2UgcGF0aHMuIC0tPgogICAgICA8bWFya2VyCiAgICAgICAgaWQ9ImFubm90YXRpb24tYXJyb3doZWFkIgogICAgICAgIG1hcmtlcldpZHRoPSI1IgogICAgICAgIG1hcmtlckhlaWdodD0iNSIKICAgICAgICByZWZYPSI1IgogICAgICAgIHJlZlk9IjIuNSIKICAgICAgICBvcmllbnQ9ImF1dG8iCiAgICAgID4KICAgICAgICA8cGF0aCBkPSJNIDAsMCBMIDUsMi41IEwgMCw1IEwgMCwwIj48L3BhdGg+CiAgICAgIDwvbWFya2VyPgogICAgICA8bWFya2VyCiAgICAgICAgaWQ9ImFubm90YXRpb24tYXJyb3doZWFkLWZhZGVkIgogICAgICAgIG1hcmtlcldpZHRoPSI1IgogICAgICAgIG1hcmtlckhlaWdodD0iNSIKICAgICAgICByZWZYPSI1IgogICAgICAgIHJlZlk9IjIuNSIKICAgICAgICBvcmllbnQ9ImF1dG8iCiAgICAgID4KICAgICAgICA8cGF0aCBkPSJNIDAsMCBMIDUsMi41IEwgMCw1IEwgMCwwIj48L3BhdGg+CiAgICAgIDwvbWFya2VyPgogICAgICA8bWFya2VyCiAgICAgICAgaWQ9InJlZi1hbm5vdGF0aW9uLWFycm93aGVhZCIKICAgICAgICBtYXJrZXJXaWR0aD0iNSIKICAgICAgICBtYXJrZXJIZWlnaHQ9IjUiCiAgICAgICAgcmVmWD0iMCIKICAgICAgICByZWZZPSIyLjUiCiAgICAgICAgb3JpZW50PSJhdXRvIgogICAgICA+CiAgICAgICAgPHBhdGggZD0iTSA1LDAgTCAwLDIuNSBMIDUsNSBMIDUsMCI+PC9wYXRoPgogICAgICA8L21hcmtlcj4KICAgICAgPG1hcmtlcgogICAgICAgIGlkPSJyZWYtYW5ub3RhdGlvbi1hcnJvd2hlYWQtZmFkZWQiCiAgICAgICAgbWFya2VyV2lkdGg9IjUiCiAgICAgICAgbWFya2VySGVpZ2h0PSI1IgogICAgICAgIHJlZlg9IjAiCiAgICAgICAgcmVmWT0iMi41IgogICAgICAgIG9yaWVudD0iYXV0byIKICAgICAgPgogICAgICAgIDxwYXRoIGQ9Ik0gNSwwIEwgMCwyLjUgTCA1LDUgTCA1LDAiPjwvcGF0aD4KICAgICAgPC9tYXJrZXI+CiAgICAgIDwhLS0gVGVtcGxhdGUgZm9yIGFuIE9wIG5vZGUgZWxsaXBzZS4gLS0+CiAgICAgIDxlbGxpcHNlCiAgICAgICAgaWQ9Im9wLW5vZGUtc3RhbXAiCiAgICAgICAgcng9IjcuNSIKICAgICAgICByeT0iMyIKICAgICAgICBzdHJva2U9ImluaGVyaXQiCiAgICAgICAgZmlsbD0iaW5oZXJpdCIKICAgICAgPjwvZWxsaXBzZT4KICAgICAgPCEtLSBUZW1wbGF0ZSBmb3IgYW4gT3Agbm9kZSBhbm5vdGF0aW9uIGVsbGlwc2UgKHNtYWxsZXIpLiAtLT4KICAgICAgPGVsbGlwc2UKICAgICAgICBpZD0ib3Atbm9kZS1hbm5vdGF0aW9uLXN0YW1wIgogICAgICAgIHJ4PSI1IgogICAgICAgIHJ5PSIyIgogICAgICAgIHN0cm9rZT0iaW5oZXJpdCIKICAgICAgICBmaWxsPSJpbmhlcml0IgogICAgICA+PC9lbGxpcHNlPgogICAgICA8IS0tIFZlcnRpY2FsbHkgc3RhY2tlZCBzZXJpZXMgb2YgT3Agbm9kZXMgd2hlbiB1bmV4cGFuZGVkLiAtLT4KICAgICAgPGcgaWQ9Im9wLXNlcmllcy12ZXJ0aWNhbC1zdGFtcCI+CiAgICAgICAgPHVzZSB4bGluazpocmVmPSIjb3Atbm9kZS1zdGFtcCIgeD0iOCIgeT0iOSI+PC91c2U+CiAgICAgICAgPHVzZSB4bGluazpocmVmPSIjb3Atbm9kZS1zdGFtcCIgeD0iOCIgeT0iNiI+PC91c2U+CiAgICAgICAgPHVzZSB4bGluazpocmVmPSIjb3Atbm9kZS1zdGFtcCIgeD0iOCIgeT0iMyI+PC91c2U+CiAgICAgIDwvZz4KICAgICAgPCEtLSBIb3Jpem9udGFsbHkgc3RhY2tlZCBzZXJpZXMgb2YgT3Agbm9kZXMgd2hlbiB1bmV4cGFuZGVkLiAtLT4KICAgICAgPGcgaWQ9Im9wLXNlcmllcy1ob3Jpem9udGFsLXN0YW1wIj4KICAgICAgICA8dXNlIHhsaW5rOmhyZWY9IiNvcC1ub2RlLXN0YW1wIiB4PSIxNiIgeT0iNCI+PC91c2U+CiAgICAgICAgPHVzZSB4bGluazpocmVmPSIjb3Atbm9kZS1zdGFtcCIgeD0iMTIiIHk9IjQiPjwvdXNlPgogICAgICAgIDx1c2UgeGxpbms6aHJlZj0iI29wLW5vZGUtc3RhbXAiIHg9IjgiIHk9IjQiPjwvdXNlPgogICAgICA8L2c+CiAgICAgIDwhLS0gSG9yaXpvbnRhbGx5IHN0YWNrZWQgc2VyaWVzIG9mIE9wIG5vZGVzIGZvciBhbm5vdGF0aW9uLiAtLT4KICAgICAgPGcgaWQ9Im9wLXNlcmllcy1hbm5vdGF0aW9uLXN0YW1wIj4KICAgICAgICA8dXNlIHhsaW5rOmhyZWY9IiNvcC1ub2RlLWFubm90YXRpb24tc3RhbXAiIHg9IjkiIHk9IjIiPjwvdXNlPgogICAgICAgIDx1c2UgeGxpbms6aHJlZj0iI29wLW5vZGUtYW5ub3RhdGlvbi1zdGFtcCIgeD0iNyIgeT0iMiI+PC91c2U+CiAgICAgICAgPHVzZSB4bGluazpocmVmPSIjb3Atbm9kZS1hbm5vdGF0aW9uLXN0YW1wIiB4PSI1IiB5PSIyIj48L3VzZT4KICAgICAgPC9nPgogICAgICA8c3ZnCiAgICAgICAgaWQ9InN1bW1hcnktaWNvbiIKICAgICAgICBmaWxsPSIjODQ4NDg0IgogICAgICAgIGhlaWdodD0iMTIiCiAgICAgICAgdmlld0JveD0iMCAwIDI0IDI0IgogICAgICAgIHdpZHRoPSIxMiIKICAgICAgPgogICAgICAgIDxwYXRoCiAgICAgICAgICBkPSJNMTkgM0g1Yy0xLjEgMC0yIC45LTIgMnYxNGMwIDEuMS45IDIgMiAyaDE0YzEuMSAwIDItLjkgMi0yVjVjMC0xLjEtLjktMi0yLTJ6TTkgMTdIN3YtN2gydjd6bTQgMGgtMlY3aDJ2MTB6bTQgMGgtMnYtNGgydjR6IgogICAgICAgID48L3BhdGg+CiAgICAgIDwvc3ZnPgoKICAgICAgPCEtLSBIYXRjaCBwYXR0ZXJucyBmb3IgZmFkZWQgb3V0IG5vZGVzLiAtLT4KICAgICAgPHBhdHRlcm4KICAgICAgICBpZD0icmVjdEhhdGNoIgogICAgICAgIHBhdHRlcm5UcmFuc2Zvcm09InJvdGF0ZSg0NSAwIDApIgogICAgICAgIHdpZHRoPSI1IgogICAgICAgIGhlaWdodD0iNSIKICAgICAgICBwYXR0ZXJuVW5pdHM9InVzZXJTcGFjZU9uVXNlIgogICAgICA+CiAgICAgICAgPGxpbmUgeDE9IjAiIHkxPSIwIiB4Mj0iMCIgeTI9IjUiIHN0eWxlPSJzdHJva2Utd2lkdGg6IDEiPjwvbGluZT4KICAgICAgPC9wYXR0ZXJuPgogICAgICA8cGF0dGVybgogICAgICAgIGlkPSJlbGxpcHNlSGF0Y2giCiAgICAgICAgcGF0dGVyblRyYW5zZm9ybT0icm90YXRlKDQ1IDAgMCkiCiAgICAgICAgd2lkdGg9IjIiCiAgICAgICAgaGVpZ2h0PSIyIgogICAgICAgIHBhdHRlcm5Vbml0cz0idXNlclNwYWNlT25Vc2UiCiAgICAgID4KICAgICAgICA8bGluZSB4MT0iMCIgeTE9IjAiIHgyPSIwIiB5Mj0iMiIgc3R5bGU9InN0cm9rZS13aWR0aDogMSI+PC9saW5lPgogICAgICA8L3BhdHRlcm4+CgogICAgICA8IS0tIEEgc2hhZG93IGZvciBoZWFsdGggcGlsbHMuIC0tPgogICAgICA8ZmlsdGVyCiAgICAgICAgaWQ9ImhlYWx0aC1waWxsLXNoYWRvdyIKICAgICAgICB4PSItNDAlIgogICAgICAgIHk9Ii00MCUiCiAgICAgICAgd2lkdGg9IjE4MCUiCiAgICAgICAgaGVpZ2h0PSIxODAlIgogICAgICA+CiAgICAgICAgPGZlR2F1c3NpYW5CbHVyIGluPSJTb3VyY2VBbHBoYSIgc3RkRGV2aWF0aW9uPSIwLjgiPjwvZmVHYXVzc2lhbkJsdXI+CiAgICAgICAgPGZlT2Zmc2V0IGR4PSIwIiBkeT0iMCIgcmVzdWx0PSJvZmZzZXRibHVyIj48L2ZlT2Zmc2V0PgogICAgICAgIDxmZUZsb29kIGZsb29kLWNvbG9yPSIjMDAwMDAwIj48L2ZlRmxvb2Q+CiAgICAgICAgPGZlQ29tcG9zaXRlIGluMj0ib2Zmc2V0Ymx1ciIgb3BlcmF0b3I9ImluIj48L2ZlQ29tcG9zaXRlPgogICAgICAgIDxmZU1lcmdlPgogICAgICAgICAgPGZlTWVyZ2VOb2RlPjwvZmVNZXJnZU5vZGU+CiAgICAgICAgICA8ZmVNZXJnZU5vZGUgaW49IlNvdXJjZUdyYXBoaWMiPjwvZmVNZXJnZU5vZGU+CiAgICAgICAgPC9mZU1lcmdlPgogICAgICA8L2ZpbHRlcj4KICAgIDwvZGVmcz4KICAgIDwhLS0gTWFrZSBhIGxhcmdlIHJlY3RhbmdsZSB0aGF0IGZpbGxzIHRoZSBzdmcgc3BhY2Ugc28gdGhhdAogIHpvb20gZXZlbnRzIGdldCBjYXB0dXJlZCBvbiBzYWZhcmkgLS0+CiAgICA8cmVjdCBmaWxsPSJ3aGl0ZSIgd2lkdGg9IjEwMDAwIiBoZWlnaHQ9IjEwMDAwIj48L3JlY3Q+CiAgICA8ZyBpZD0icm9vdCI+PC9nPgogIDwvc3ZnPgogIDx0Zi1ncmFwaC1taW5pbWFwIGlkPSJtaW5pbWFwIj48L3RmLWdyYXBoLW1pbmltYXA+CiAgPGRpdiBpZD0iY29udGV4dE1lbnUiIGNsYXNzPSJjb250ZXh0LW1lbnUiPjwvZGl2PgpgO2xldCB0UnQ9Y2xhc3MgZXh0ZW5kcyh0cih5ZSkpe2NvbnN0cnVjdG9yKCl7c3VwZXIoLi4uYXJndW1lbnRzKSx0aGlzLl96b29tZWQ9ITEsdGhpcy5fem9vbVN0YXJ0Q29vcmRzPW51bGwsdGhpcy5fem9vbVRyYW5zZm9ybT1udWxsLHRoaXMuX21heFpvb21EaXN0YW5jZUZvckNsaWNrPTIwLHRoaXMuX25vZGVHcm91cEluZGV4PXt9LHRoaXMuX2Fubm90YXRpb25Hcm91cEluZGV4PXt9LHRoaXMuX2VkZ2VHcm91cEluZGV4PXt9LHRoaXMubWF4TWV0YW5vZGVMYWJlbExlbmd0aEZvbnRTaXplPTksdGhpcy5taW5NZXRhbm9kZUxhYmVsTGVuZ3RoRm9udFNpemU9Nix0aGlzLm1heE1ldGFub2RlTGFiZWxMZW5ndGhMYXJnZUZvbnQ9MTEsdGhpcy5tYXhNZXRhbm9kZUxhYmVsTGVuZ3RoPTE4fWdldE5vZGUodCl7cmV0dXJuIHRoaXMucmVuZGVySGllcmFyY2h5LmdldFJlbmRlck5vZGVCeU5hbWUodCl9aXNOb2RlRXhwYW5kZWQodCl7cmV0dXJuIHQuZXhwYW5kZWR9c2V0Tm9kZUV4cGFuZGVkKHQpe3RoaXMuX2J1aWxkKHRoaXMucmVuZGVySGllcmFyY2h5KSx0aGlzLl91cGRhdGVMYWJlbHMoIXRoaXMuX3pvb21lZCl9cGFuVG9Ob2RlKHQpeyhmdW5jdGlvbiBlKHQsbixpLHIpe2NvbnN0IG89U3Uobikuc2VsZWN0KGBbZGF0YS1uYW1lPSIke3R9Il1gKS5ub2RlKCk7aWYoIW8pcmV0dXJuIGNvbnNvbGUud2FybihgcGFuVG9Ob2RlKCkgZmFpbGVkIGZvciBub2RlIG5hbWUgIiR7dH0iYCksITE7bGV0IGE9by5nZXRCQm94KCkscz1vLmdldFNjcmVlbkNUTSgpLGw9bi5jcmVhdGVTVkdQb2ludCgpLGM9bi5jcmVhdGVTVkdQb2ludCgpO2wueD1hLngsbC55PWEueSxjLng9YS54K2Eud2lkdGgsYy55PWEueSthLmhlaWdodCxsPWwubWF0cml4VHJhbnNmb3JtKHMpLGM9Yy5tYXRyaXhUcmFuc2Zvcm0ocyk7bGV0IHU9KHQsZSxuLGkpPT4hKHQ+biYmZTxpKSxoPW4uZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCk7Y29uc3QgZD1oLnRvcCtoLmhlaWdodC0xNTA7aWYodShsLngsYy54LGgubGVmdCxoLmxlZnQraC53aWR0aC0zMjApfHx1KGwueSxjLnksaC50b3AsZCkpe2xldCB0PWgubGVmdCtoLndpZHRoLzItKGwueCtjLngpLzIsZT1oLnRvcCtoLmhlaWdodC8yLShsLnkrYy55KS8yO2NvbnN0IGk9WlAobik7cmV0dXJuIFN1KG4pLnRyYW5zaXRpb24oKS5kdXJhdGlvbig1MDApLmNhbGwoci50cmFuc2xhdGVCeSx0L2kuayxlL2kuayksITB9cmV0dXJuITF9KSh0LHRoaXMuJC5zdmcsMCx0aGlzLl96b29tKSYmKHRoaXMuX3pvb21lZD0hMCl9Z2V0R3JhcGhTdmdSb290KCl7cmV0dXJuIHRoaXMuJC5zdmd9Z2V0Q29udGV4dE1lbnUoKXtyZXR1cm4gdGhpcy4kLmNvbnRleHRNZW51fV9yZXNldFN0YXRlKCl7dGhpcy5fbm9kZUdyb3VwSW5kZXg9e30sdGhpcy5fYW5ub3RhdGlvbkdyb3VwSW5kZXg9e30sdGhpcy5fZWRnZUdyb3VwSW5kZXg9e30sdGhpcy5fdXBkYXRlTGFiZWxzKCExKSxTdSh0aGlzLiQuc3ZnKS5zZWxlY3QoIiNyb290Iikuc2VsZWN0QWxsKCIqIikucmVtb3ZlKCksd090KHRoaXMuJC5zdmcpfV9idWlsZCh0KXt0aGlzLnRlbXBsYXRlSW5kZXg9dC5oaWVyYXJjaHkuZ2V0VGVtcGxhdGVJbmRleCgpLGtJdCgidGYtZ3JhcGgtc2NlbmUgKGxheW91dCk6IixmdW5jdGlvbigpe3pOdCh0LnJvb3QpfS5iaW5kKHRoaXMpLHZJdC5SRU5ERVJfU0NFTkVfTEFZT1VUKSxrSXQoInRmLWdyYXBoLXNjZW5lIChidWlsZCBzY2VuZSk6IixmdW5jdGlvbigpe0lPdChTdSh0aGlzLiQucm9vdCksdC5yb290LHRoaXMpLChmdW5jdGlvbiBlKHQsbil7U3UodCkub24oImNsaWNrIiwoKCk9PntuLmZpcmUoImdyYXBoLXNlbGVjdCIpfSkpfSkodGhpcy4kLnN2Zyx0aGlzKSx0aGlzLl91cGRhdGVJbnB1dFRyYWNlKCl9LmJpbmQodGhpcyksdkl0LlJFTkRFUl9TQ0VORV9CVUlMRF9TQ0VORSksc2V0VGltZW91dChmdW5jdGlvbigpe3RoaXMuX3VwZGF0ZUhlYWx0aFBpbGxzKHRoaXMubm9kZU5hbWVzVG9IZWFsdGhQaWxscyx0aGlzLmhlYWx0aFBpbGxTdGVwSW5kZXgpLHRoaXMubWluaW1hcC51cGRhdGUoKX0uYmluZCh0aGlzKSxPTnQuYW5pbWF0aW9uLmR1cmF0aW9uKX1yZWFkeSgpe3N1cGVyLnJlYWR5KCksdGhpcy5fem9vbT1hSSgpLm9uKCJlbmQiLGZ1bmN0aW9uKCl7dGhpcy5fem9vbVN0YXJ0Q29vcmRzJiYoTWF0aC5zcXJ0KE1hdGgucG93KHRoaXMuX3pvb21TdGFydENvb3Jkcy54LXRoaXMuX3pvb21UcmFuc2Zvcm0ueCwyKStNYXRoLnBvdyh0aGlzLl96b29tU3RhcnRDb29yZHMueS10aGlzLl96b29tVHJhbnNmb3JtLnksMikpPHRoaXMuX21heFpvb21EaXN0YW5jZUZvckNsaWNrP3RoaXMuX2ZpcmVFbmFibGVDbGljaygpOnNldFRpbWVvdXQodGhpcy5fZmlyZUVuYWJsZUNsaWNrLmJpbmQodGhpcyksNTApKSx0aGlzLl96b29tU3RhcnRDb29yZHM9bnVsbH0uYmluZCh0aGlzKSkub24oInpvb20iLGZ1bmN0aW9uKCl7dGhpcy5fem9vbVRyYW5zZm9ybT11dS50cmFuc2Zvcm0sdGhpcy5fem9vbVN0YXJ0Q29vcmRzfHwodGhpcy5fem9vbVN0YXJ0Q29vcmRzPXRoaXMuX3pvb21UcmFuc2Zvcm0sdGhpcy5maXJlKCJkaXNhYmxlLWNsaWNrIikpLHRoaXMuX3pvb21lZD0hMCxTdSh0aGlzLiQucm9vdCkuYXR0cigidHJhbnNmb3JtIix1dS50cmFuc2Zvcm0pLHRoaXMubWluaW1hcC56b29tKHV1LnRyYW5zZm9ybSl9LmJpbmQodGhpcykpLFN1KHRoaXMuJC5zdmcpLmNhbGwodGhpcy5fem9vbSkub24oImRibGNsaWNrLnpvb20iLG51bGwpLFN1KHdpbmRvdykub24oInJlc2l6ZSIsZnVuY3Rpb24oKXt0aGlzLm1pbmltYXAuem9vbSgpfS5iaW5kKHRoaXMpKSx0aGlzLm1pbmltYXA9dGhpcy4kLm1pbmltYXAuaW5pdCh0aGlzLiQuc3ZnLHRoaXMuJC5yb290LHRoaXMuX3pvb20sT050Lm1pbmltYXAuc2l6ZSxPTnQuc3Vic2NlbmUubWV0YS5sYWJlbEhlaWdodCl9YXR0YWNoZWQoKXt0aGlzLnNldCgiX2lzQXR0YWNoZWQiLCEwKX1kZXRhY2hlZCgpe3RoaXMuc2V0KCJfaXNBdHRhY2hlZCIsITEpfV9yZW5kZXJIaWVyYXJjaHlDaGFuZ2VkKCl7dmFyIHQ9dGhpcy5yZW5kZXJIaWVyYXJjaHk7dGhpcy5faGFzUmVuZGVySGllcmFyY2h5QmVlbkZpdE9uY2U9ITEsdGhpcy5fcmVzZXRTdGF0ZSgpLHRoaXMuX2J1aWxkKHQpfV9hbmltYXRlQW5kRml0KCl7IXRoaXMuX2hhc1JlbmRlckhpZXJhcmNoeUJlZW5GaXRPbmNlJiZ0aGlzLl9pc0F0dGFjaGVkJiZzZXRUaW1lb3V0KHRoaXMuZml0LmJpbmQodGhpcyksT050LmFuaW1hdGlvbi5kdXJhdGlvbil9X3VwZGF0ZUxhYmVscyh0KXt2YXIgZT10aGlzLiQkKCIudGl0bGUiKSxuPWUuc3R5bGUsaT10aGlzLiQkKCIuYXV4VGl0bGUiKSxyPWkuc3R5bGUsbz10aGlzLiQkKCIuZnVuY3Rpb25MaWJyYXJ5VGl0bGUiKS5zdHlsZTtjb25zdCBhPVN1KHRoaXMuJC5zdmcpO3ZhciBzPWEuc2VsZWN0KCIuIitVTnQuU2NlbmUuR1JPVVArIj4uIitVTnQuU2NlbmUuQ09SRSkubm9kZSgpO2lmKHQmJnMmJnRoaXMucHJvZ3Jlc3MmJjEwMD09PXRoaXMucHJvZ3Jlc3MudmFsdWUpe3ZhciBsPWEuc2VsZWN0KCIuIitVTnQuU2NlbmUuR1JPVVArIj4uIitVTnQuU2NlbmUuSU5FWFRSQUNUKS5ub2RlKCl8fGEuc2VsZWN0KCIuIitVTnQuU2NlbmUuR1JPVVArIj4uIitVTnQuU2NlbmUuT1VURVhUUkFDVCkubm9kZSgpLGM9cy5nZXRDVE0oKS5lLHU9bD9sLmdldENUTSgpLmU6bnVsbDtuLmRpc3BsYXk9ImlubGluZSIsbi5sZWZ0PWMrInB4IixudWxsIT09dSYmdSE9PWM/KHIuZGlzcGxheT0iaW5saW5lIix1PU1hdGgubWF4KGMrZS5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKS53aWR0aCx1KSxyLmxlZnQ9dSsicHgiKTpyLmRpc3BsYXk9Im5vbmUiO2xldCB0PWEuc2VsZWN0KCIuIitVTnQuU2NlbmUuR1JPVVArIj4uIitVTnQuU2NlbmUuRlVOQ1RJT05fTElCUkFSWSkubm9kZSgpLGg9dD90LmdldENUTSgpLmU6bnVsbDtudWxsIT09aCYmaCE9PXU/KG8uZGlzcGxheT0iaW5saW5lIixoPU1hdGgubWF4KHUraS5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKS53aWR0aCxoKSxvLmxlZnQ9aCsicHgiKTpvLmRpc3BsYXk9Im5vbmUifWVsc2Ugbi5kaXNwbGF5PSJub25lIixyLmRpc3BsYXk9Im5vbmUiLG8uZGlzcGxheT0ibm9uZSJ9bm9kZUNvbG9yc0NoYW5nZWQoKXtudWxsIT10aGlzLnJlbmRlckhpZXJhcmNoeSYmKHRoaXMudGVtcGxhdGVJbmRleD10aGlzLnJlbmRlckhpZXJhcmNoeS5oaWVyYXJjaHkuZ2V0VGVtcGxhdGVJbmRleCgpLHdlLmVhY2godGhpcy5fbm9kZUdyb3VwSW5kZXgsKCh0LGUpPT57dGhpcy5fdXBkYXRlTm9kZVN0YXRlKGUpfSkpLHRoaXMubWluaW1hcC51cGRhdGUoKSl9Zml0KCl7dGhpcy5faGFzUmVuZGVySGllcmFyY2h5QmVlbkZpdE9uY2U9ITAsKGZ1bmN0aW9uIHQoZSxuLGkscil7bGV0IG89ZS5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKSxhPW51bGw7dHJ5e2lmKGE9bi5nZXRCQm94KCksMD09PWEud2lkdGgpcmV0dXJufWNhdGNoKHQpe3JldHVybn1sZXQgcz0uOSpNYXRoLm1pbihvLndpZHRoL2Eud2lkdGgsby5oZWlnaHQvYS5oZWlnaHQsMiksbD1PTnQuZ3JhcGg7Y29uc3QgYz1LUC5zY2FsZShzKS50cmFuc2xhdGUobC5wYWRkaW5nLnBhZGRpbmdMZWZ0LGwucGFkZGluZy5wYWRkaW5nVG9wKTtTdShlKS50cmFuc2l0aW9uKCkuZHVyYXRpb24oNTAwKS5jYWxsKGkudHJhbnNmb3JtLGMpLm9uKCJlbmQuZml0dGVkIiwoKCk9PntpLm9uKCJlbmQuZml0dGVkIixudWxsKSxyKCl9KSl9KSh0aGlzLiQuc3ZnLHRoaXMuJC5yb290LHRoaXMuX3pvb20sZnVuY3Rpb24oKXt0aGlzLl96b29tZWQ9ITF9LmJpbmQodGhpcykpfWdldEltYWdlQmxvYigpe3JldHVybiB0aGlzLm1pbmltYXAuZ2V0SW1hZ2VCbG9iKCl9aXNOb2RlU2VsZWN0ZWQodCl7cmV0dXJuIHQ9PT10aGlzLnNlbGVjdGVkTm9kZX1pc05vZGVIaWdobGlnaHRlZCh0KXtyZXR1cm4gdD09PXRoaXMuaGlnaGxpZ2h0ZWROb2RlfWFkZEFubm90YXRpb25Hcm91cCh0LGUsbil7dmFyIGk9dC5ub2RlLm5hbWU7dGhpcy5fYW5ub3RhdGlvbkdyb3VwSW5kZXhbaV09dGhpcy5fYW5ub3RhdGlvbkdyb3VwSW5kZXhbaV18fHt9LHRoaXMuX2Fubm90YXRpb25Hcm91cEluZGV4W2ldW2Uubm9kZS5uYW1lXT1ufWdldEFubm90YXRpb25Hcm91cHNJbmRleCh0KXtyZXR1cm4gdGhpcy5fYW5ub3RhdGlvbkdyb3VwSW5kZXhbdF19cmVtb3ZlQW5ub3RhdGlvbkdyb3VwKHQsZSl7ZGVsZXRlIHRoaXMuX2Fubm90YXRpb25Hcm91cEluZGV4W3Qubm9kZS5uYW1lXVtlLm5vZGUubmFtZV19YWRkTm9kZUdyb3VwKHQsZSl7dGhpcy5fbm9kZUdyb3VwSW5kZXhbdF09ZX1nZXROb2RlR3JvdXAodCl7cmV0dXJuIHRoaXMuX25vZGVHcm91cEluZGV4W3RdfXJlbW92ZU5vZGVHcm91cCh0KXtkZWxldGUgdGhpcy5fbm9kZUdyb3VwSW5kZXhbdF19YWRkRWRnZUdyb3VwKHQsZSl7dGhpcy5fZWRnZUdyb3VwSW5kZXhbdF09ZX1nZXRFZGdlR3JvdXAodCl7cmV0dXJuIHRoaXMuX2VkZ2VHcm91cEluZGV4W3RdfV91cGRhdGVIZWFsdGhQaWxscygpeyEoZnVuY3Rpb24gdChlLG4saSl7aWYoIW4pcmV0dXJuO2xldCByPTE7U3UoZSkuc2VsZWN0QWxsKCJnLm5vZGVzaGFwZSIpLmVhY2goKGZ1bmN0aW9uKHQpe2NvbnN0IGU9blt0Lm5vZGUubmFtZV07IShmdW5jdGlvbiBvKHQsZSxuLGkscj02MCxhPTEwLHM9MCxsKXtpZihTdSh0LnBhcmVudE5vZGUpLnNlbGVjdEFsbCgiLmhlYWx0aC1waWxsIikucmVtb3ZlKCksIWUpcmV0dXJuO2NvbnN0IGM9ZS52YWx1ZSx1PWMuc2xpY2UoMiw4KSxoPXVbMF0sZD11WzFdLHA9dVs1XTtsZXQgZj1jWzFdO2NvbnN0IG09e21pbjpjWzhdLG1heDpjWzldLG1lYW46Y1sxMF0sc3RkZGV2Ok1hdGguc3FydChjWzExXSl9O251bGw9PXImJihyPTYwKSxudWxsPT1hJiYoYT0xMCksbnVsbD09cyYmKHM9MCksbnVsbCE9biYmbi5ub2RlLnR5cGU9PT1XSXQuT1AmJihyLz0yLGEvPTIpO2xldCBnPWRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUyh3SXQsImciKTtnLmNsYXNzTGlzdC5hZGQoImhlYWx0aC1waWxsIik7bGV0IF89ZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKHdJdCwiZGVmcyIpO2cuYXBwZW5kQ2hpbGQoXyk7bGV0IHk9ZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKHdJdCwibGluZWFyR3JhZGllbnQiKTtjb25zdCB2PSJoZWFsdGgtcGlsbC1ncmFkaWVudC0iK2k7eS5zZXRBdHRyaWJ1dGUoImlkIix2KTtsZXQgYj0wLHg9IjAlIjtmb3IobGV0IHQ9MDt0PHUubGVuZ3RoO3QrKyl7aWYoIXVbdF0pY29udGludWU7Yis9dVt0XTtsZXQgZT1kb2N1bWVudC5jcmVhdGVFbGVtZW50TlMod0l0LCJzdG9wIik7ZS5zZXRBdHRyaWJ1dGUoIm9mZnNldCIseCksZS5zZXRBdHRyaWJ1dGUoInN0b3AtY29sb3IiLEdOdFt0XS5iYWNrZ3JvdW5kX2NvbG9yKSx5LmFwcGVuZENoaWxkKGUpO2xldCBuPWRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUyh3SXQsInN0b3AiKSxpPTEwMCpiL2YrIiUiO24uc2V0QXR0cmlidXRlKCJvZmZzZXQiLGkpLG4uc2V0QXR0cmlidXRlKCJzdG9wLWNvbG9yIixHTnRbdF0uYmFja2dyb3VuZF9jb2xvcikseS5hcHBlbmRDaGlsZChuKSx4PWl9Xy5hcHBlbmRDaGlsZCh5KTtsZXQgdz1kb2N1bWVudC5jcmVhdGVFbGVtZW50TlMod0l0LCJyZWN0Iik7dy5zZXRBdHRyaWJ1dGUoImZpbGwiLCJ1cmwoIyIrdisiKSIpLHcuc2V0QXR0cmlidXRlKCJ3aWR0aCIsU3RyaW5nKHIpKSx3LnNldEF0dHJpYnV0ZSgiaGVpZ2h0IixTdHJpbmcoYSkpLHcuc2V0QXR0cmlidXRlKCJ5IixTdHJpbmcocykpLGcuYXBwZW5kQ2hpbGQodyk7bGV0IFM9ZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKHdJdCwidGl0bGUiKTtTLnRleHRDb250ZW50PShmdW5jdGlvbiBNKHQsZSxuLGkpe2xldCByPSJEZXZpY2U6ICIrdC5kZXZpY2VfbmFtZSsiXG4iO3IrPSJkdHlwZTogIit0LmR0eXBlKyJcbiI7bGV0IG89IihzY2FsYXIpIjt0LnNoYXBlLmxlbmd0aD4wJiYobz0iKCIrdC5zaGFwZS5qb2luKCIsIikrIikiKSxyKz0iXG5zaGFwZTogIitvKyJcblxuIixyKz0iIyhlbGVtZW50cyk6ICIrZSsiXG4iO2NvbnN0IGE9W107Zm9yKGxldCB0PTA7dDxuLmxlbmd0aDt0Kyspblt0XT4wJiZhLnB1c2goIiMoIitHTnRbdF0ubGFiZWwrIik6ICIrblt0XSk7cmV0dXJuIHIrPWEuam9pbigiLCAiKSsiXG5cbiIsaS5tYXg+PWkubWluJiYocis9Im1pbjogIitpLm1pbisiLCBtYXg6ICIraS5tYXgrIlxuIixyKz0ibWVhbjogIitpLm1lYW4rIiwgc3RkZGV2OiAiK2kuc3RkZGV2KSxyfSkoZSxmLHUsbSksZy5hcHBlbmRDaGlsZChTKTtsZXQgRT0hMTtpZihudWxsIT1uKXtsZXQgdD1uLnktYS1uLmhlaWdodC8yLTI7aWYobi5sYWJlbE9mZnNldDwwJiYodCs9bi5sYWJlbE9mZnNldCksZy5zZXRBdHRyaWJ1dGUoInRyYW5zZm9ybSIsInRyYW5zbGF0ZSgiKyhuLngtci8yKSsiLCAiK3QrIikiKSx1WzJdfHx1WzNdfHx1WzRdKXtsZXQgdD1uLm5vZGUuYXR0cjtpZih0JiZ0Lmxlbmd0aClmb3IobGV0IGU9MDtlPHQubGVuZ3RoO2UrKylpZigiVCI9PT10W2VdLmtleSl7bGV0IG49dFtlXS52YWx1ZS50eXBlO0U9biYmL15EVF8oQk9PTHxJTlR8VUlOVCkvLnRlc3Qobik7YnJlYWt9fX1sZXQgVD1kb2N1bWVudC5jcmVhdGVFbGVtZW50TlMod0l0LCJ0ZXh0Iik7aWYoTnVtYmVyLmlzRmluaXRlKG0ubWluKSYmTnVtYmVyLmlzRmluaXRlKG0ubWF4KSl7Y29uc3QgdD1YTnQobS5taW4sRSksZT1YTnQobS5tYXgsRSk7aWYoVC50ZXh0Q29udGVudD1mPjE/dCsiIH4gIitlOnQsaD4wfHxkPjB8fHA+MCl7VC50ZXh0Q29udGVudCs9IiAoIjtjb25zdCB0PVtdO2g+MCYmdC5wdXNoKGBOYU7DlyR7aH1gKSxkPjAmJnQucHVzaChgLeKInsOXJHtkfWApLHA+MCYmdC5wdXNoKGAr4oiew5cke3B9YCksVC50ZXh0Q29udGVudCs9dC5qb2luKCI7ICIpKyIpIn19ZWxzZSBULnRleHRDb250ZW50PSIoTm8gZmluaXRlIGVsZW1lbnRzKSI7VC5jbGFzc0xpc3QuYWRkKCJoZWFsdGgtcGlsbC1zdGF0cyIpLG51bGw9PWwmJihsPXIvMiksVC5zZXRBdHRyaWJ1dGUoIngiLFN0cmluZyhsKSksVC5zZXRBdHRyaWJ1dGUoInkiLFN0cmluZyhzLTIpKSxnLmFwcGVuZENoaWxkKFQpLHFpKHQucGFyZW50Tm9kZSkuYXBwZW5kQ2hpbGQoZyl9KSh0aGlzLGU/ZVtpXTpudWxsLHQscisrKX0pKX0pKHRoaXMuJC5zdmcsdGhpcy5ub2RlTmFtZXNUb0hlYWx0aFBpbGxzLHRoaXMuaGVhbHRoUGlsbFN0ZXBJbmRleCl9X3VwZGF0ZU5vZGVTdGF0ZSh0KXt2YXIgZT10aGlzLmdldE5vZGUodCksbj10aGlzLmdldE5vZGVHcm91cCh0KTtuJiZNT3QobixlLHRoaXMpLGUubm9kZS50eXBlPT09V0l0Lk1FVEEmJmUubm9kZS5hc3NvY2lhdGVkRnVuY3Rpb24mJiFlLmlzTGlicmFyeUZ1bmN0aW9uJiZNT3QoU3UoIi4iK1VOdC5TY2VuZS5HUk9VUCsiPi4iK1VOdC5TY2VuZS5GVU5DVElPTl9MSUJSQVJZKycgZ1tkYXRhLW5hbWU9IicrKFVJdCtlLm5vZGUuYXNzb2NpYXRlZEZ1bmN0aW9uKSsnIl0nKSxlLHRoaXMpO3ZhciBpPXRoaXMuZ2V0QW5ub3RhdGlvbkdyb3Vwc0luZGV4KHQpO3dlLmVhY2goaSwoKHQsbik9PntNT3QodCxlLHRoaXMsVU50LkFubm90YXRpb24uTk9ERSl9KSl9X3NlbGVjdGVkTm9kZUNoYW5nZWQodCxlKXtpZih0IT09ZSYmKGUmJnRoaXMuX3VwZGF0ZU5vZGVTdGF0ZShlKSx0KSl7dGhpcy5taW5pbWFwLnVwZGF0ZSgpO2Zvcih2YXIgbixpPXRoaXMucmVuZGVySGllcmFyY2h5LmhpZXJhcmNoeS5ub2RlKHQpLHI9W107bnVsbCE9aS5wYXJlbnROb2RlJiZpLnBhcmVudE5vZGUubmFtZSE9akl0OylyLnB1c2goKGk9aS5wYXJlbnROb2RlKS5uYW1lKTt3ZS5mb3JFYWNoUmlnaHQociwodD0+e3RoaXMucmVuZGVySGllcmFyY2h5LmJ1aWxkU3ViaGllcmFyY2h5KHQpO3ZhciBlPXRoaXMucmVuZGVySGllcmFyY2h5LmdldFJlbmRlck5vZGVCeU5hbWUodCk7ZS5ub2RlLmlzR3JvdXBOb2RlJiYhZS5leHBhbmRlZCYmKGUuZXhwYW5kZWQ9ITAsbnx8KG49ZSkpfSkpLG4mJih0aGlzLnNldE5vZGVFeHBhbmRlZChuKSx0aGlzLl96b29tZWQ9ITApLHQmJnRoaXMuX3VwZGF0ZU5vZGVTdGF0ZSh0KSxzZXRUaW1lb3V0KCgoKT0+e3RoaXMucGFuVG9Ob2RlKHQpfSksT050LmFuaW1hdGlvbi5kdXJhdGlvbil9fV9oaWdobGlnaHRlZE5vZGVDaGFuZ2VkKHQsZSl7dCE9PWUmJih0JiZ0aGlzLl91cGRhdGVOb2RlU3RhdGUodCksZSYmdGhpcy5fdXBkYXRlTm9kZVN0YXRlKGUpKX1fb25ab29tQ2hhbmdlZCgpe3RoaXMuX3VwZGF0ZUxhYmVscyghdGhpcy5fem9vbWVkKX1fZmlyZUVuYWJsZUNsaWNrKCl7dGhpcy5maXJlKCJlbmFibGUtY2xpY2siKX1fdXBkYXRlSW5wdXRUcmFjZSgpe1RPdCh0aGlzLmdldEdyYXBoU3ZnUm9vdCgpLHRoaXMucmVuZGVySGllcmFyY2h5LHRoaXMuc2VsZWN0ZWROb2RlLHRoaXMudHJhY2VJbnB1dHMpfX07dFJ0LnRlbXBsYXRlPVFPdCx0KFtvKHt0eXBlOk9iamVjdH0pLGUoImRlc2lnbjp0eXBlIixiTnQpXSx0UnQucHJvdG90eXBlLCJyZW5kZXJIaWVyYXJjaHkiLHZvaWQgMCksdChbbyh7dHlwZTpTdHJpbmd9KSxlKCJkZXNpZ246dHlwZSIsU3RyaW5nKV0sdFJ0LnByb3RvdHlwZSwibmFtZSIsdm9pZCAwKSx0KFtvKHt0eXBlOlN0cmluZ30pLGUoImRlc2lnbjp0eXBlIixTdHJpbmcpXSx0UnQucHJvdG90eXBlLCJjb2xvckJ5Iix2b2lkIDApLHQoW28oe3R5cGU6Qm9vbGVhbn0pLGUoImRlc2lnbjp0eXBlIixCb29sZWFuKV0sdFJ0LnByb3RvdHlwZSwidHJhY2VJbnB1dHMiLHZvaWQgMCksdChbbyh7dHlwZTpCb29sZWFufSksZSgiZGVzaWduOnR5cGUiLEJvb2xlYW4pXSx0UnQucHJvdG90eXBlLCJfaGFzUmVuZGVySGllcmFyY2h5QmVlbkZpdE9uY2UiLHZvaWQgMCksdChbbyh7dHlwZTpCb29sZWFufSksZSgiZGVzaWduOnR5cGUiLEJvb2xlYW4pXSx0UnQucHJvdG90eXBlLCJfaXNBdHRhY2hlZCIsdm9pZCAwKSx0KFtvKHt0eXBlOk9iamVjdH0pLGUoImRlc2lnbjp0eXBlIixPYmplY3QpXSx0UnQucHJvdG90eXBlLCJfem9vbSIsdm9pZCAwKSx0KFtvKHt0eXBlOlN0cmluZyxvYnNlcnZlcjoiX2hpZ2hsaWdodGVkTm9kZUNoYW5nZWQifSksZSgiZGVzaWduOnR5cGUiLFN0cmluZyldLHRSdC5wcm90b3R5cGUsImhpZ2hsaWdodGVkTm9kZSIsdm9pZCAwKSx0KFtvKHt0eXBlOlN0cmluZyxvYnNlcnZlcjoiX3NlbGVjdGVkTm9kZUNoYW5nZWQifSksZSgiZGVzaWduOnR5cGUiLFN0cmluZyldLHRSdC5wcm90b3R5cGUsInNlbGVjdGVkTm9kZSIsdm9pZCAwKSx0KFtvKHt0eXBlOk9iamVjdH0pLGUoImRlc2lnbjp0eXBlIixPYmplY3QpXSx0UnQucHJvdG90eXBlLCJoYW5kbGVFZGdlU2VsZWN0ZWQiLHZvaWQgMCksdChbbyh7dHlwZTpCb29sZWFuLG9ic2VydmVyOiJfb25ab29tQ2hhbmdlZCJ9KSxlKCJkZXNpZ246dHlwZSIsQm9vbGVhbildLHRSdC5wcm90b3R5cGUsIl96b29tZWQiLHZvaWQgMCksdChbbyh7dHlwZTpPYmplY3R9KSxlKCJkZXNpZ246dHlwZSIsT2JqZWN0KV0sdFJ0LnByb3RvdHlwZSwiX3pvb21TdGFydENvb3JkcyIsdm9pZCAwKSx0KFtvKHt0eXBlOk9iamVjdH0pLGUoImRlc2lnbjp0eXBlIixPYmplY3QpXSx0UnQucHJvdG90eXBlLCJfem9vbVRyYW5zZm9ybSIsdm9pZCAwKSx0KFtvKHt0eXBlOk51bWJlcn0pLGUoImRlc2lnbjp0eXBlIixOdW1iZXIpXSx0UnQucHJvdG90eXBlLCJfbWF4Wm9vbURpc3RhbmNlRm9yQ2xpY2siLHZvaWQgMCksdChbbyh7dHlwZTpPYmplY3R9KSxlKCJkZXNpZ246dHlwZSIsRnVuY3Rpb24pXSx0UnQucHJvdG90eXBlLCJ0ZW1wbGF0ZUluZGV4Iix2b2lkIDApLHQoW28oe3R5cGU6T2JqZWN0fSksZSgiZGVzaWduOnR5cGUiLE9iamVjdCldLHRSdC5wcm90b3R5cGUsIl9ub2RlR3JvdXBJbmRleCIsdm9pZCAwKSx0KFtvKHt0eXBlOk9iamVjdH0pLGUoImRlc2lnbjp0eXBlIixPYmplY3QpXSx0UnQucHJvdG90eXBlLCJfYW5ub3RhdGlvbkdyb3VwSW5kZXgiLHZvaWQgMCksdChbbyh7dHlwZTpPYmplY3R9KSxlKCJkZXNpZ246dHlwZSIsT2JqZWN0KV0sdFJ0LnByb3RvdHlwZSwiX2VkZ2VHcm91cEluZGV4Iix2b2lkIDApLHQoW28oe3R5cGU6TnVtYmVyfSksZSgiZGVzaWduOnR5cGUiLE51bWJlcildLHRSdC5wcm90b3R5cGUsIm1heE1ldGFub2RlTGFiZWxMZW5ndGhGb250U2l6ZSIsdm9pZCAwKSx0KFtvKHt0eXBlOk51bWJlcn0pLGUoImRlc2lnbjp0eXBlIixOdW1iZXIpXSx0UnQucHJvdG90eXBlLCJtaW5NZXRhbm9kZUxhYmVsTGVuZ3RoRm9udFNpemUiLHZvaWQgMCksdChbbyh7dHlwZTpOdW1iZXJ9KSxlKCJkZXNpZ246dHlwZSIsTnVtYmVyKV0sdFJ0LnByb3RvdHlwZSwibWF4TWV0YW5vZGVMYWJlbExlbmd0aExhcmdlRm9udCIsdm9pZCAwKSx0KFtvKHt0eXBlOk51bWJlcn0pLGUoImRlc2lnbjp0eXBlIixOdW1iZXIpXSx0UnQucHJvdG90eXBlLCJtYXhNZXRhbm9kZUxhYmVsTGVuZ3RoIix2b2lkIDApLHQoW28oe3R5cGU6T2JqZWN0fSksZSgiZGVzaWduOnR5cGUiLE9iamVjdCldLHRSdC5wcm90b3R5cGUsInByb2dyZXNzIix2b2lkIDApLHQoW28oe3R5cGU6QXJyYXl9KSxlKCJkZXNpZ246dHlwZSIsQXJyYXkpXSx0UnQucHJvdG90eXBlLCJub2RlQ29udGV4dE1lbnVJdGVtcyIsdm9pZCAwKSx0KFtvKHt0eXBlOk9iamVjdH0pLGUoImRlc2lnbjp0eXBlIixPYmplY3QpXSx0UnQucHJvdG90eXBlLCJub2RlTmFtZXNUb0hlYWx0aFBpbGxzIix2b2lkIDApLHQoW28oe3R5cGU6TnVtYmVyfSksZSgiZGVzaWduOnR5cGUiLE51bWJlcildLHRSdC5wcm90b3R5cGUsImhlYWx0aFBpbGxTdGVwSW5kZXgiLHZvaWQgMCksdChbYSgicmVuZGVySGllcmFyY2h5IiksZSgiZGVzaWduOnR5cGUiLEZ1bmN0aW9uKSxlKCJkZXNpZ246cGFyYW10eXBlcyIsW10pLGUoImRlc2lnbjpyZXR1cm50eXBlIix2b2lkIDApXSx0UnQucHJvdG90eXBlLCJfcmVuZGVySGllcmFyY2h5Q2hhbmdlZCIsbnVsbCksdChbYSgiX2lzQXR0YWNoZWQiLCJyZW5kZXJIaWVyYXJjaHkiKSxlKCJkZXNpZ246dHlwZSIsRnVuY3Rpb24pLGUoImRlc2lnbjpwYXJhbXR5cGVzIixbXSksZSgiZGVzaWduOnJldHVybnR5cGUiLHZvaWQgMCldLHRSdC5wcm90b3R5cGUsIl9hbmltYXRlQW5kRml0IixudWxsKSx0KFthKCJjb2xvckJ5IiksZSgiZGVzaWduOnR5cGUiLEZ1bmN0aW9uKSxlKCJkZXNpZ246cGFyYW10eXBlcyIsW10pLGUoImRlc2lnbjpyZXR1cm50eXBlIix2b2lkIDApXSx0UnQucHJvdG90eXBlLCJub2RlQ29sb3JzQ2hhbmdlZCIsbnVsbCksdChbYSgibm9kZU5hbWVzVG9IZWFsdGhQaWxscyIsImhlYWx0aFBpbGxTdGVwSW5kZXgiKSxlKCJkZXNpZ246dHlwZSIsRnVuY3Rpb24pLGUoImRlc2lnbjpwYXJhbXR5cGVzIixbXSksZSgiZGVzaWduOnJldHVybnR5cGUiLHZvaWQgMCldLHRSdC5wcm90b3R5cGUsIl91cGRhdGVIZWFsdGhQaWxscyIsbnVsbCksdChbYSgidHJhY2VJbnB1dHMiLCJzZWxlY3RlZE5vZGUiKSxlKCJkZXNpZ246dHlwZSIsRnVuY3Rpb24pLGUoImRlc2lnbjpwYXJhbXR5cGVzIixbXSksZSgiZGVzaWduOnJldHVybnR5cGUiLHZvaWQgMCldLHRSdC5wcm90b3R5cGUsIl91cGRhdGVJbnB1dFRyYWNlIixudWxsKSx0UnQ9dChbaSgidGYtZ3JhcGgtc2NlbmUiKV0sdFJ0KTtsZXQgZVJ0PWNsYXNzIGV4dGVuZHModHIoeWUpKXtjb25zdHJ1Y3Rvcigpe3N1cGVyKC4uLmFyZ3VtZW50cyksdGhpcy5fcmVuZGVyRGVwdGg9MSx0aGlzLl9hbGxvd0dyYXBoU2VsZWN0PSEwLHRoaXMuZWRnZVdpZHRoRnVuY3Rpb249IiIsdGhpcy5oYW5kbGVOb2RlU2VsZWN0ZWQ9IiIsdGhpcy5lZGdlTGFiZWxGdW5jdGlvbj0iIix0aGlzLmhhbmRsZUVkZ2VTZWxlY3RlZD0iIn1wYW5Ub05vZGUodCl7dGhpcy4kJCgidGYtZ3JhcGgtc2NlbmUiKS5wYW5Ub05vZGUodCl9X2F1dG9FeHRyYWN0Tm9kZXNDaGFuZ2VkKCl7dmFyIHQ9dGhpcy5ncmFwaEhpZXJhcmNoeTtpZih0KXtmb3IoY29uc3QgZSBvZiBPYmplY3QudmFsdWVzKHQuZ2V0Tm9kZU1hcCgpKSllLmluY2x1ZGU9cUl0LlVOU1BFQ0lGSUVEO3RoaXMuX2J1aWxkUmVuZGVySGllcmFyY2h5KHQpfX1fYnVpbGROZXdSZW5kZXJIaWVyYXJjaHkoKXt2YXIgdD10aGlzLmdyYXBoSGllcmFyY2h5O3QmJnRoaXMuX2J1aWxkUmVuZGVySGllcmFyY2h5KHQpfV9zdGF0c0NoYW5nZWQoKXt2YXIgdD10aGlzLnN0YXRzLGU9dGhpcy5kZXZpY2VzRm9yU3RhdHM7dGhpcy5ncmFwaEhpZXJhcmNoeSYmKHQmJmUmJigoZnVuY3Rpb24gbih0LGUsaSl7d2UuZWFjaCh0Lm5vZGVzLCh0PT57dC5zdGF0cz1udWxsfSkpLHdlLmVhY2goZS5kZXZfc3RhdHMsKGU9PntpJiYhaVtlLmRldmljZV18fHdlLmVhY2goZS5ub2RlX3N0YXRzLChuPT57bGV0IGk9bi5ub2RlX25hbWUgaW4gdC5ub2Rlcz9uLm5vZGVfbmFtZTpjTnQobi5ub2RlX25hbWUpO2lmKCEoaSBpbiB0Lm5vZGVzKSlyZXR1cm47bGV0IHI9MDtuLm1lbW9yeSYmd2UuZWFjaChuLm1lbW9yeSwodD0+e3QudG90YWxfYnl0ZXMmJih0LnRvdGFsX2J5dGVzPjA/cis9TnVtYmVyKHQudG90YWxfYnl0ZXMpOmNvbnNvbGUubG9nKCJpZ25vcmluZyBuZWdhdGl2ZSBtZW1vcnkgYWxsb2NhdGlvbiBmb3IgIitpKSl9KSk7bGV0IG89bnVsbDtuLm91dHB1dCYmKG89d2UubWFwKG4ub3V0cHV0LCh0PT53ZS5tYXAodC50ZW5zb3JfZGVzY3JpcHRpb24uc2hhcGUuZGltLCh0PT5OdW1iZXIodC5zaXplKSkpKSkpLHQubm9kZXNbaV0uZGV2aWNlPWUuZGV2aWNlLG51bGw9PXQubm9kZXNbaV0uc3RhdHMmJih0Lm5vZGVzW2ldLnN0YXRzPW5ldyBFSXQobykpLHQubm9kZXNbaV0uc3RhdHMuYWRkQnl0ZXNBbGxvY2F0aW9uKHIpLG4uYWxsX2VuZF9yZWxfbWljcm9zJiYobi5hbGxfZW5kX3JlbF9taWNyb3M+MD90Lm5vZGVzW2ldLnN0YXRzLmFkZEV4ZWN1dGlvblRpbWUobi5hbGxfc3RhcnRfbWljcm9zLG4uYWxsX3N0YXJ0X21pY3JvcytuLmFsbF9lbmRfcmVsX21pY3Jvcyk6Y29uc29sZS5sb2coImlnbm9yaW5nIG5lZ2F0aXZlIHJ1bnRpbWUgZm9yICIraSkpfSkpfSkpfSkodGhpcy5iYXNpY0dyYXBoLHQsZSksKGZ1bmN0aW9uIGkodCxlKXtsZXQgbj17fSxpPXt9O3dlLmVhY2godC5yb290LmxlYXZlcygpLChlPT57bGV0IHI9dC5ub2RlKGUpO251bGwhPXIuZGV2aWNlJiYobltyLmRldmljZV09ITApLG51bGwhPXIueGxhQ2x1c3RlciYmKGlbci54bGFDbHVzdGVyXT0hMCl9KSksdC5kZXZpY2VzPXdlLmtleXMobiksdC54bGFDbHVzdGVycz13ZS5rZXlzKGkpLHdlLmVhY2godC5nZXROb2RlTWFwKCksKCh0LGUpPT57dC5pc0dyb3VwTm9kZSYmKHQuc3RhdHM9bmV3IEVJdChudWxsKSx0LmRldmljZUhpc3RvZ3JhbT17fSl9KSksd2UuZWFjaCh0LnJvb3QubGVhdmVzKCksKGU9PntsZXQgbj10Lm5vZGUoZSksaT1uO2Zvcig7bnVsbCE9aS5wYXJlbnROb2RlOyl7aWYobnVsbCE9bi5kZXZpY2Upe2xldCB0PWkucGFyZW50Tm9kZS5kZXZpY2VIaXN0b2dyYW07dFtuLmRldmljZV09KHRbbi5kZXZpY2VdfHwwKSsxfWlmKG51bGwhPW4ueGxhQ2x1c3Rlcil7bGV0IHQ9aS5wYXJlbnROb2RlLnhsYUNsdXN0ZXJIaXN0b2dyYW07dFtuLnhsYUNsdXN0ZXJdPSh0W24ueGxhQ2x1c3Rlcl18fDApKzF9bnVsbCE9bi5zdGF0cyYmaS5wYXJlbnROb2RlLnN0YXRzLmNvbWJpbmUobi5zdGF0cyksaT1pLnBhcmVudE5vZGV9fSkpfSkodGhpcy5ncmFwaEhpZXJhcmNoeSkpLHRoaXMuX2J1aWxkUmVuZGVySGllcmFyY2h5KHRoaXMuZ3JhcGhIaWVyYXJjaHkpKX1yZWFkeSgpe3N1cGVyLnJlYWR5KCksdGhpcy5hZGRFdmVudExpc3RlbmVyKCJncmFwaC1zZWxlY3QiLHRoaXMuX2dyYXBoU2VsZWN0ZWQuYmluZCh0aGlzKSksdGhpcy5hZGRFdmVudExpc3RlbmVyKCJkaXNhYmxlLWNsaWNrIix0aGlzLl9kaXNhYmxlQ2xpY2suYmluZCh0aGlzKSksdGhpcy5hZGRFdmVudExpc3RlbmVyKCJlbmFibGUtY2xpY2siLHRoaXMuX2VuYWJsZUNsaWNrLmJpbmQodGhpcykpLHRoaXMuYWRkRXZlbnRMaXN0ZW5lcigibm9kZS10b2dnbGUtZXhwYW5kIix0aGlzLl9ub2RlVG9nZ2xlRXhwYW5kLmJpbmQodGhpcykpLHRoaXMuYWRkRXZlbnRMaXN0ZW5lcigibm9kZS1zZWxlY3QiLHRoaXMuX25vZGVTZWxlY3RlZC5iaW5kKHRoaXMpKSx0aGlzLmFkZEV2ZW50TGlzdGVuZXIoIm5vZGUtaGlnaGxpZ2h0Iix0aGlzLl9ub2RlSGlnaGxpZ2h0ZWQuYmluZCh0aGlzKSksdGhpcy5hZGRFdmVudExpc3RlbmVyKCJub2RlLXVuaGlnaGxpZ2h0Iix0aGlzLl9ub2RlVW5oaWdobGlnaHRlZC5iaW5kKHRoaXMpKSx0aGlzLmFkZEV2ZW50TGlzdGVuZXIoIm5vZGUtdG9nZ2xlLWV4dHJhY3QiLHRoaXMuX25vZGVUb2dnbGVFeHRyYWN0LmJpbmQodGhpcykpLHRoaXMuYWRkRXZlbnRMaXN0ZW5lcigibm9kZS10b2dnbGUtc2VyaWVzZ3JvdXAiLHRoaXMuX25vZGVUb2dnbGVTZXJpZXNHcm91cC5iaW5kKHRoaXMpKSx0aGlzLmFkZEV2ZW50TGlzdGVuZXIoImVkZ2Utc2VsZWN0Iix0aGlzLl9lZGdlU2VsZWN0ZWQuYmluZCh0aGlzKSksdGhpcy5hZGRFdmVudExpc3RlbmVyKCJhbm5vdGF0aW9uLXNlbGVjdCIsdGhpcy5fbm9kZVNlbGVjdGVkLmJpbmQodGhpcykpLHRoaXMuYWRkRXZlbnRMaXN0ZW5lcigiYW5ub3RhdGlvbi1oaWdobGlnaHQiLHRoaXMuX25vZGVIaWdobGlnaHRlZC5iaW5kKHRoaXMpKSx0aGlzLmFkZEV2ZW50TGlzdGVuZXIoImFubm90YXRpb24tdW5oaWdobGlnaHQiLHRoaXMuX25vZGVVbmhpZ2hsaWdodGVkLmJpbmQodGhpcykpfV9idWlsZFJlbmRlckhpZXJhcmNoeSh0KXtpZih0LnJvb3QudHlwZSE9PVdJdC5NRVRBKXJldHVybjtjb25zdCBlPXRoaXMsbj1rSXQoIm5ldyB0Zl9ncmFwaF9yZW5kZXIuSGllcmFyY2h5IiwoKCk9Pntjb25zdCBuPW5ldyBiTnQodCwhIXRoaXMuc3RhdHMsdGhpcy5hdXRvRXh0cmFjdE5vZGVzKTtmdW5jdGlvbiBpKHQpe3JldHVybnttaW5WYWx1ZTp0LmRvbWFpbigpWzBdLG1heFZhbHVlOnQuZG9tYWluKClbMV0sc3RhcnRDb2xvcjp0LnJhbmdlKClbMF0sZW5kQ29sb3I6dC5yYW5nZSgpWzFdfX1yZXR1cm4gbi5lZGdlTGFiZWxGdW5jdGlvbj10aGlzLmVkZ2VMYWJlbEZ1bmN0aW9uLG4uZWRnZVdpZHRoRnVuY3Rpb249dGhpcy5lZGdlV2lkdGhGdW5jdGlvbixlLl9zZXRDb2xvckJ5UGFyYW1zKHtjb21wdXRlX3RpbWU6aShuLmNvbXB1dGVUaW1lU2NhbGUpLG1lbW9yeTppKG4ubWVtb3J5VXNhZ2VTY2FsZSksZGV2aWNlOndlLm1hcChuLmRldmljZUNvbG9yTWFwLmRvbWFpbigpLChmdW5jdGlvbih0KXtyZXR1cm57ZGV2aWNlOnQsY29sb3I6bi5kZXZpY2VDb2xvck1hcCh0KX19KSkseGxhX2NsdXN0ZXI6d2UubWFwKG4ueGxhQ2x1c3RlckNvbG9yTWFwLmRvbWFpbigpLChmdW5jdGlvbih0KXtyZXR1cm57eGxhX2NsdXN0ZXI6dCxjb2xvcjpuLnhsYUNsdXN0ZXJDb2xvck1hcCh0KX19KSl9KSxufSksdkl0LlJFTkRFUl9CVUlMRF9ISUVSQVJDSFkpO2UuX3NldFJlbmRlckhpZXJhcmNoeShuKX1fZ2V0VmlzaWJsZSh0KXtyZXR1cm4gdD90aGlzLnJlbmRlckhpZXJhcmNoeS5nZXROZWFyZXN0VmlzaWJsZUFuY2VzdG9yKHQpOnR9Zml0KCl7dGhpcy4kLnNjZW5lLmZpdCgpfWdldEltYWdlQmxvYigpe3JldHVybiB0aGlzLiQuc2NlbmUuZ2V0SW1hZ2VCbG9iKCl9X2dyYXBoQ2hhbmdlZCgpe3RoaXMuZ3JhcGhIaWVyYXJjaHkmJih0aGlzLmdyYXBoSGllcmFyY2h5LmFkZExpc3RlbmVyKEJPdC5URU1QTEFURVNfVVBEQVRFRCwoKCk9Pnt0aGlzLiQuc2NlbmUubm9kZUNvbG9yc0NoYW5nZWQoKX0pKSx0aGlzLmZpcmUoImdyYXBoLXNlbGVjdCIpKX1fZ3JhcGhTZWxlY3RlZCh0KXt0aGlzLl9hbGxvd0dyYXBoU2VsZWN0JiYodGhpcy5zZXQoInNlbGVjdGVkTm9kZSIsbnVsbCksdGhpcy5zZXQoInNlbGVjdGVkRWRnZSIsbnVsbCkpLHRoaXMuX2FsbG93R3JhcGhTZWxlY3Q9ITB9X2Rpc2FibGVDbGljayh0KXt0aGlzLl9hbGxvd0dyYXBoU2VsZWN0PSExfV9lbmFibGVDbGljayh0KXt0aGlzLl9hbGxvd0dyYXBoU2VsZWN0PSEwfV9zZWxlY3RlZE5vZGVDaGFuZ2VkKCl7dGhpcy5oYW5kbGVOb2RlU2VsZWN0ZWQmJnRoaXMuaGFuZGxlTm9kZVNlbGVjdGVkKHRoaXMuc2VsZWN0ZWROb2RlKX1fc2VsZWN0ZWRFZGdlQ2hhbmdlZCgpe3ZhciB0PXRoaXMuc2VsZWN0ZWRFZGdlO3RoaXMuX2Rlc2VsZWN0UHJldmlvdXNFZGdlKCksdCYmKHRoaXMuX2xhc3RTZWxlY3RlZEVkZ2VHcm91cC5jbGFzc2VkKFVOdC5FZGdlLlNFTEVDVEVELCEwKSx0aGlzLl91cGRhdGVNYXJrZXJPZlNlbGVjdGVkRWRnZSh0KSksdGhpcy5oYW5kbGVFZGdlU2VsZWN0ZWQmJnRoaXMuaGFuZGxlRWRnZVNlbGVjdGVkKHQpfV9ub2RlU2VsZWN0ZWQodCl7dGhpcy5fYWxsb3dHcmFwaFNlbGVjdCYmdGhpcy5zZXQoInNlbGVjdGVkTm9kZSIsdC5kZXRhaWwubmFtZSksdGhpcy5fYWxsb3dHcmFwaFNlbGVjdD0hMH1fZWRnZVNlbGVjdGVkKHQpe3RoaXMuX2FsbG93R3JhcGhTZWxlY3QmJih0aGlzLnNldCgiX2xhc3RTZWxlY3RlZEVkZ2VHcm91cCIsdC5kZXRhaWwuZWRnZUdyb3VwKSx0aGlzLnNldCgic2VsZWN0ZWRFZGdlIix0LmRldGFpbC5lZGdlRGF0YSkpLHRoaXMuX2FsbG93R3JhcGhTZWxlY3Q9ITB9X25vZGVIaWdobGlnaHRlZCh0KXt0aGlzLnNldCgiaGlnaGxpZ2h0ZWROb2RlIix0LmRldGFpbC5uYW1lKX1fbm9kZVVuaGlnaGxpZ2h0ZWQodCl7dGhpcy5zZXQoImhpZ2hsaWdodGVkTm9kZSIsbnVsbCl9X25vZGVUb2dnbGVFeHBhbmQodCl7dGhpcy5fbm9kZVNlbGVjdGVkKHQpO3ZhciBlPXQuZGV0YWlsLm5hbWUsbj10aGlzLnJlbmRlckhpZXJhcmNoeS5nZXRSZW5kZXJOb2RlQnlOYW1lKGUpO24ubm9kZS50eXBlIT09V0l0Lk9QJiYodGhpcy5yZW5kZXJIaWVyYXJjaHkuYnVpbGRTdWJoaWVyYXJjaHkoZSksbi5leHBhbmRlZD0hbi5leHBhbmRlZCx0aGlzLmFzeW5jKChmdW5jdGlvbigpe3RoaXMuJC5zY2VuZS5zZXROb2RlRXhwYW5kZWQobil9KSw3NSksQ0l0KHthY3Rpb25JZDp2SXQuTk9ERV9FWFBBTlNJT05fVE9HR0xFRCxldmVudExhYmVsOm4uZXhwYW5kZWQ/ImV4cGFuZGVkIjoiY29sbGFwc2VkIn0pKX1fbm9kZVRvZ2dsZUV4dHJhY3QodCl7dGhpcy5ub2RlVG9nZ2xlRXh0cmFjdCh0LmRldGFpbC5uYW1lKX1ub2RlVG9nZ2xlRXh0cmFjdCh0KXtjb25zdCBlPXRoaXMucmVuZGVySGllcmFyY2h5LmdldFJlbmRlck5vZGVCeU5hbWUodCk7ZS5ub2RlLmluY2x1ZGU9ZS5ub2RlLmluY2x1ZGU9PXFJdC5JTkNMVURFP3FJdC5FWENMVURFOmUubm9kZS5pbmNsdWRlPT1xSXQuRVhDTFVERXx8dGhpcy5yZW5kZXJIaWVyYXJjaHkuaXNOb2RlQXV4aWxpYXJ5KGUpP3FJdC5JTkNMVURFOnFJdC5FWENMVURFLHRoaXMuX2J1aWxkUmVuZGVySGllcmFyY2h5KHRoaXMuZ3JhcGhIaWVyYXJjaHkpLENJdCh7YWN0aW9uSWQ6dkl0Lk5PREVfQVVYSUxJQVJZX0VYVFJBQ1RJT05fQ0hBTkdFRCxldmVudExhYmVsOmUubm9kZS5pbmNsdWRlPT09cUl0LklOQ0xVREU/IkF1eGlsaWFyeSB0byBNYWluIjoiTWFpbiB0byBBdXhpbGlhcnkifSl9X25vZGVUb2dnbGVTZXJpZXNHcm91cCh0KXt0aGlzLm5vZGVUb2dnbGVTZXJpZXNHcm91cCh0LmRldGFpbC5uYW1lKX1ub2RlVG9nZ2xlU2VyaWVzR3JvdXAodCl7dGhpcy5zZXQoInByb2dyZXNzIix7dmFsdWU6MCxtc2c6IiJ9KTt2YXIgZT1QSXQoTEl0KHRoaXMpLDEwMCwiTmFtZXNwYWNlIGhpZXJhcmNoeSIpO2NvbnN0IG49T2JqZWN0LmFzc2lnbihPYmplY3QuYXNzaWduKHt9LHRoaXMuaGllcmFyY2h5UGFyYW1zKSx7c2VyaWVzTWFwOnRoaXMuZ3JhcGhIaWVyYXJjaHkuYnVpbGRTZXJpZXNHcm91cE1hcFRvZ2dsZWQodCl9KTtqT3QodGhpcy5iYXNpY0dyYXBoLG4sZSkudGhlbihmdW5jdGlvbih0KXt0aGlzLnNldCgiZ3JhcGhIaWVyYXJjaHkiLHQpLHRoaXMuX2J1aWxkUmVuZGVySGllcmFyY2h5KHRoaXMuZ3JhcGhIaWVyYXJjaHkpfS5iaW5kKHRoaXMpKX1fZGVzZWxlY3RQcmV2aW91c0VkZ2UoKXtTdSgiLiIrVU50LkVkZ2UuU0VMRUNURUQpLmNsYXNzZWQoVU50LkVkZ2UuU0VMRUNURUQsITEpLmVhY2goKCh0LGUpPT57aWYodC5sYWJlbCl7Y29uc3QgZT1TdSh0aGlzKS5zZWxlY3RBbGwoInBhdGguZWRnZWxpbmUiKTt0LmxhYmVsLnN0YXJ0TWFya2VySWQmJmUuc3R5bGUoIm1hcmtlci1zdGFydCIsYHVybCgjJHt0LmxhYmVsLnN0YXJ0TWFya2VySWR9KWApLHQubGFiZWwuZW5kTWFya2VySWQmJmUuc3R5bGUoIm1hcmtlci1lbmQiLGB1cmwoIyR7dC5sYWJlbC5lbmRNYXJrZXJJZH0pYCl9fSkpfV91cGRhdGVNYXJrZXJPZlNlbGVjdGVkRWRnZSh0KXtpZih0LmxhYmVsKXtjb25zdCBlPXQubGFiZWwuc3RhcnRNYXJrZXJJZHx8dC5sYWJlbC5lbmRNYXJrZXJJZDtpZihlKXtjb25zdCBuPWUucmVwbGFjZSgiZGF0YWZsb3ctIiwic2VsZWN0ZWQtIik7bGV0IGk9dGhpcy4kJCgiIyIrbik7aWYoIWkpe2NvbnN0IHQ9dGhpcy4kLnNjZW5lLnF1ZXJ5U2VsZWN0b3IoIiMiK2UpO2k9dC5jbG9uZU5vZGUoITApLGkuc2V0QXR0cmlidXRlKCJpZCIsbiksaS5jbGFzc0xpc3QuYWRkKCJzZWxlY3RlZC1hcnJvd2hlYWQiKSx0LnBhcmVudE5vZGUuYXBwZW5kQ2hpbGQoaSl9Y29uc3Qgcj10LmxhYmVsLnN0YXJ0TWFya2VySWQ/Im1hcmtlci1zdGFydCI6Im1hcmtlci1lbmQiO3RoaXMuX2xhc3RTZWxlY3RlZEVkZ2VHcm91cC5zZWxlY3RBbGwoInBhdGguZWRnZWxpbmUiKS5zdHlsZShyLGB1cmwoIyR7bn0pYCl9fX1ub3QodCl7cmV0dXJuIXR9fTtlUnQudGVtcGxhdGU9X2VgCiAgICA8c3R5bGU+CiAgICAgIC5jb250YWluZXIgewogICAgICAgIHdpZHRoOiAxMDAlOwogICAgICAgIGhlaWdodDogMTAwJTsKICAgICAgICBiYWNrZ3JvdW5kOiB3aGl0ZTsKICAgICAgICBib3gtc2hhZG93OiAwIDFweCA1cHggcmdiYSgwLCAwLCAwLCAwLjIpOwogICAgICB9CgogICAgICAudmVydGljYWwgewogICAgICAgIHdpZHRoOiAxMDAlOwogICAgICAgIGhlaWdodDogMTAwJTsKICAgICAgICBAYXBwbHkgLS1sYXlvdXQtdmVydGljYWw7CiAgICAgIH0KCiAgICAgIC5hdXRvIHsKICAgICAgICBAYXBwbHkgLS1sYXlvdXQtZmxleC1hdXRvOwogICAgICAgIEBhcHBseSAtLWxheW91dC12ZXJ0aWNhbDsKICAgICAgfQoKICAgICAgaDIgewogICAgICAgIHRleHQtYWxpZ246IGNlbnRlcjsKICAgICAgfQoKICAgICAgcGFwZXItYnV0dG9uIHsKICAgICAgICB0ZXh0LXRyYW5zZm9ybTogbm9uZTsKICAgICAgfQogICAgPC9zdHlsZT4KICAgIDxkaXYgY2xhc3M9ImNvbnRhaW5lciI+CiAgICAgIDxkaXYgY2xhc3M9InZlcnRpY2FsIj4KICAgICAgICA8dGVtcGxhdGUgaXM9ImRvbS1pZiIgaWY9IltbdGl0bGVdXSI+CiAgICAgICAgICA8aDI+W1t0aXRsZV1dPC9oMj4KICAgICAgICA8L3RlbXBsYXRlPgogICAgICAgIDx0Zi1ncmFwaC1zY2VuZQogICAgICAgICAgaWQ9InNjZW5lIgogICAgICAgICAgY2xhc3M9ImF1dG8iCiAgICAgICAgICByZW5kZXItaGllcmFyY2h5PSJbW3JlbmRlckhpZXJhcmNoeV1dIgogICAgICAgICAgaGlnaGxpZ2h0ZWQtbm9kZT0iW1tfZ2V0VmlzaWJsZShoaWdobGlnaHRlZE5vZGUpXV0iCiAgICAgICAgICBzZWxlY3RlZC1ub2RlPSJ7e3NlbGVjdGVkTm9kZX19IgogICAgICAgICAgc2VsZWN0ZWQtZWRnZT0ie3tzZWxlY3RlZEVkZ2V9fSIKICAgICAgICAgIGNvbG9yLWJ5PSJbW2NvbG9yQnldXSIKICAgICAgICAgIHByb2dyZXNzPSJbW3Byb2dyZXNzXV0iCiAgICAgICAgICBub2RlLWNvbnRleHQtbWVudS1pdGVtcz0iW1tub2RlQ29udGV4dE1lbnVJdGVtc11dIgogICAgICAgICAgbm9kZS1uYW1lcy10by1oZWFsdGgtcGlsbHM9Iltbbm9kZU5hbWVzVG9IZWFsdGhQaWxsc11dIgogICAgICAgICAgaGVhbHRoLXBpbGwtc3RlcC1pbmRleD0ie3toZWFsdGhQaWxsU3RlcEluZGV4fX0iCiAgICAgICAgICBoYW5kbGUtZWRnZS1zZWxlY3RlZD0iW1toYW5kbGVFZGdlU2VsZWN0ZWRdXSIKICAgICAgICAgIHRyYWNlLWlucHV0cz0iW1t0cmFjZUlucHV0c11dIgogICAgICAgID48L3RmLWdyYXBoLXNjZW5lPgogICAgICA8L2Rpdj4KICAgIDwvZGl2PgogIGAsdChbbyh7dHlwZTpPYmplY3Qsbm90aWZ5OiEwLG9ic2VydmVyOiJfZ3JhcGhDaGFuZ2VkIn0pLGUoImRlc2lnbjp0eXBlIixIT3QpXSxlUnQucHJvdG90eXBlLCJncmFwaEhpZXJhcmNoeSIsdm9pZCAwKSx0KFtvKHt0eXBlOk9iamVjdH0pLGUoImRlc2lnbjp0eXBlIixYSXQpXSxlUnQucHJvdG90eXBlLCJiYXNpY0dyYXBoIix2b2lkIDApLHQoW28oe3R5cGU6T2JqZWN0fSksZSgiZGVzaWduOnR5cGUiLE9iamVjdCldLGVSdC5wcm90b3R5cGUsInN0YXRzIix2b2lkIDApLHQoW28oe3R5cGU6T2JqZWN0fSksZSgiZGVzaWduOnR5cGUiLE9iamVjdCldLGVSdC5wcm90b3R5cGUsImRldmljZXNGb3JTdGF0cyIsdm9pZCAwKSx0KFtvKHt0eXBlOk9iamVjdH0pLGUoImRlc2lnbjp0eXBlIixPYmplY3QpXSxlUnQucHJvdG90eXBlLCJoaWVyYXJjaHlQYXJhbXMiLHZvaWQgMCksdChbbyh7dHlwZTpPYmplY3Qsbm90aWZ5OiEwfSksZSgiZGVzaWduOnR5cGUiLE9iamVjdCldLGVSdC5wcm90b3R5cGUsInByb2dyZXNzIix2b2lkIDApLHQoW28oe3R5cGU6U3RyaW5nfSksZSgiZGVzaWduOnR5cGUiLFN0cmluZyldLGVSdC5wcm90b3R5cGUsInRpdGxlIix2b2lkIDApLHQoW28oe3R5cGU6U3RyaW5nLG5vdGlmeTohMH0pLGUoImRlc2lnbjp0eXBlIixTdHJpbmcpXSxlUnQucHJvdG90eXBlLCJzZWxlY3RlZE5vZGUiLHZvaWQgMCksdChbbyh7dHlwZTpPYmplY3Qsbm90aWZ5OiEwfSksZSgiZGVzaWduOnR5cGUiLE9iamVjdCldLGVSdC5wcm90b3R5cGUsInNlbGVjdGVkRWRnZSIsdm9pZCAwKSx0KFtvKHt0eXBlOk9iamVjdH0pLGUoImRlc2lnbjp0eXBlIixPYmplY3QpXSxlUnQucHJvdG90eXBlLCJfbGFzdFNlbGVjdGVkRWRnZUdyb3VwIix2b2lkIDApLHQoW28oe3R5cGU6U3RyaW5nLG5vdGlmeTohMH0pLGUoImRlc2lnbjp0eXBlIixTdHJpbmcpXSxlUnQucHJvdG90eXBlLCJoaWdobGlnaHRlZE5vZGUiLHZvaWQgMCksdChbbyh7dHlwZTpTdHJpbmd9KSxlKCJkZXNpZ246dHlwZSIsU3RyaW5nKV0sZVJ0LnByb3RvdHlwZSwiY29sb3JCeSIsdm9pZCAwKSx0KFtvKHt0eXBlOk9iamVjdCxub3RpZnk6ITAscmVhZE9ubHk6ITB9KSxlKCJkZXNpZ246dHlwZSIsT2JqZWN0KV0sZVJ0LnByb3RvdHlwZSwiY29sb3JCeVBhcmFtcyIsdm9pZCAwKSx0KFtvKHt0eXBlOk9iamVjdCxyZWFkT25seTohMCxub3RpZnk6ITB9KSxlKCJkZXNpZ246dHlwZSIsYk50KV0sZVJ0LnByb3RvdHlwZSwicmVuZGVySGllcmFyY2h5Iix2b2lkIDApLHQoW28oe3R5cGU6Qm9vbGVhbn0pLGUoImRlc2lnbjp0eXBlIixCb29sZWFuKV0sZVJ0LnByb3RvdHlwZSwidHJhY2VJbnB1dHMiLHZvaWQgMCksdChbbyh7dHlwZTpCb29sZWFufSksZSgiZGVzaWduOnR5cGUiLEJvb2xlYW4pXSxlUnQucHJvdG90eXBlLCJhdXRvRXh0cmFjdE5vZGVzIix2b2lkIDApLHQoW28oe3R5cGU6QXJyYXl9KSxlKCJkZXNpZ246dHlwZSIsQXJyYXkpXSxlUnQucHJvdG90eXBlLCJub2RlQ29udGV4dE1lbnVJdGVtcyIsdm9pZCAwKSx0KFtvKHt0eXBlOk51bWJlcn0pLGUoImRlc2lnbjp0eXBlIixOdW1iZXIpXSxlUnQucHJvdG90eXBlLCJfcmVuZGVyRGVwdGgiLHZvaWQgMCksdChbbyh7dHlwZTpCb29sZWFufSksZSgiZGVzaWduOnR5cGUiLEJvb2xlYW4pXSxlUnQucHJvdG90eXBlLCJfYWxsb3dHcmFwaFNlbGVjdCIsdm9pZCAwKSx0KFtvKHt0eXBlOk9iamVjdH0pLGUoImRlc2lnbjp0eXBlIixPYmplY3QpXSxlUnQucHJvdG90eXBlLCJub2RlTmFtZXNUb0hlYWx0aFBpbGxzIix2b2lkIDApLHQoW28oe3R5cGU6TnVtYmVyfSksZSgiZGVzaWduOnR5cGUiLE51bWJlcildLGVSdC5wcm90b3R5cGUsImhlYWx0aFBpbGxTdGVwSW5kZXgiLHZvaWQgMCksdChbbyh7dHlwZTpPYmplY3R9KSxlKCJkZXNpZ246dHlwZSIsT2JqZWN0KV0sZVJ0LnByb3RvdHlwZSwiZWRnZVdpZHRoRnVuY3Rpb24iLHZvaWQgMCksdChbbyh7dHlwZTpPYmplY3R9KSxlKCJkZXNpZ246dHlwZSIsT2JqZWN0KV0sZVJ0LnByb3RvdHlwZSwiaGFuZGxlTm9kZVNlbGVjdGVkIix2b2lkIDApLHQoW28oe3R5cGU6T2JqZWN0fSksZSgiZGVzaWduOnR5cGUiLE9iamVjdCldLGVSdC5wcm90b3R5cGUsImVkZ2VMYWJlbEZ1bmN0aW9uIix2b2lkIDApLHQoW28oe3R5cGU6T2JqZWN0fSksZSgiZGVzaWduOnR5cGUiLE9iamVjdCldLGVSdC5wcm90b3R5cGUsImhhbmRsZUVkZ2VTZWxlY3RlZCIsdm9pZCAwKSx0KFthKCJhdXRvRXh0cmFjdE5vZGVzIiksZSgiZGVzaWduOnR5cGUiLEZ1bmN0aW9uKSxlKCJkZXNpZ246cGFyYW10eXBlcyIsW10pLGUoImRlc2lnbjpyZXR1cm50eXBlIix2b2lkIDApXSxlUnQucHJvdG90eXBlLCJfYXV0b0V4dHJhY3ROb2Rlc0NoYW5nZWQiLG51bGwpLHQoW2EoImdyYXBoSGllcmFyY2h5IiwiZWRnZVdpZHRoRnVuY3Rpb24iLCJoYW5kbGVOb2RlU2VsZWN0ZWQiLCJlZGdlTGFiZWxGdW5jdGlvbiIsImhhbmRsZUVkZ2VTZWxlY3RlZCIpLGUoImRlc2lnbjp0eXBlIixGdW5jdGlvbiksZSgiZGVzaWduOnBhcmFtdHlwZXMiLFtdKSxlKCJkZXNpZ246cmV0dXJudHlwZSIsdm9pZCAwKV0sZVJ0LnByb3RvdHlwZSwiX2J1aWxkTmV3UmVuZGVySGllcmFyY2h5IixudWxsKSx0KFthKCJzdGF0cyIsImRldmljZXNGb3JTdGF0cyIpLGUoImRlc2lnbjp0eXBlIixGdW5jdGlvbiksZSgiZGVzaWduOnBhcmFtdHlwZXMiLFtdKSxlKCJkZXNpZ246cmV0dXJudHlwZSIsdm9pZCAwKV0sZVJ0LnByb3RvdHlwZSwiX3N0YXRzQ2hhbmdlZCIsbnVsbCksdChbYSgic2VsZWN0ZWROb2RlIiksZSgiZGVzaWduOnR5cGUiLEZ1bmN0aW9uKSxlKCJkZXNpZ246cGFyYW10eXBlcyIsW10pLGUoImRlc2lnbjpyZXR1cm50eXBlIix2b2lkIDApXSxlUnQucHJvdG90eXBlLCJfc2VsZWN0ZWROb2RlQ2hhbmdlZCIsbnVsbCksdChbYSgic2VsZWN0ZWRFZGdlIiksZSgiZGVzaWduOnR5cGUiLEZ1bmN0aW9uKSxlKCJkZXNpZ246cGFyYW10eXBlcyIsW10pLGUoImRlc2lnbjpyZXR1cm50eXBlIix2b2lkIDApXSxlUnQucHJvdG90eXBlLCJfc2VsZWN0ZWRFZGdlQ2hhbmdlZCIsbnVsbCksZVJ0PXQoW2koInRmLWdyYXBoIildLGVSdCk7Y29uc3QgblJ0PXtNQVhfTk9ERV9DT1VOVDoxZTQsTUFYX0VER0VfQ09VTlQ6MWU0fTtsZXQgaVJ0PWNsYXNzIGV4dGVuZHModHIoeWUpKXtjb25zdHJ1Y3Rvcigpe3N1cGVyKC4uLmFyZ3VtZW50cyksdGhpcy5oaWVyYXJjaHlQYXJhbXM9Vk90LHRoaXMuYWxsU3RlcHNNb2RlRW5hYmxlZD0hMSx0aGlzLnNwZWNpZmljSGVhbHRoUGlsbFN0ZXA9MCx0aGlzLmNvbXBhdE5vZGVUaXRsZT0iVFBVIENvbXBhdGliaWxpdHkifWZpdCgpe3RoaXMuJC5ncmFwaC5maXQoKX1kb3dubG9hZEFzSW1hZ2UodCl7cmV0dXJuIG4odGhpcyx2b2lkIDAsdm9pZCAwLChmdW5jdGlvbiooKXtjb25zdCBlPXlpZWxkIHRoaXMuJC5ncmFwaC5nZXRJbWFnZUJsb2IoKSxuPWRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoImEiKTtuLmhyZWY9VVJMLmNyZWF0ZU9iamVjdFVSTChlKSxuLmRvd25sb2FkPXQsbi5jbGljaygpLFVSTC5yZXZva2VPYmplY3RVUkwobi5ocmVmKX0pKX1faXNOb3RDb21wbGV0ZSh0KXtyZXR1cm4gdC52YWx1ZTwxMDB9X2dldENvbnRhaW5lckNsYXNzKHQpe3ZhciBlPSJjb250YWluZXIiO3JldHVybiB0LmVycm9yJiYoZSs9IiBlcnJvciIpLHRoaXMuX2lzTm90Q29tcGxldGUodCkmJihlKz0iIGxvYWRpbmciKSxlfV9vbk5vZGVJbmNsdXNpb25Ub2dnbGVkKHQpe3RoaXMuJC5ncmFwaC5ub2RlVG9nZ2xlRXh0cmFjdCh0LmRldGFpbC5uYW1lKX1fb25Ob2RlU2VyaWVzR3JvdXBUb2dnbGVkKHQpe3RoaXMuJC5ncmFwaC5ub2RlVG9nZ2xlU2VyaWVzR3JvdXAodC5kZXRhaWwubmFtZSl9X3VwZGF0ZU5vZGVJbmNsdWRlKCl7Y29uc3QgdD10aGlzLnJlbmRlckhpZXJhcmNoeT90aGlzLnJlbmRlckhpZXJhcmNoeS5nZXROb2RlQnlOYW1lKHRoaXMuc2VsZWN0ZWROb2RlKTpudWxsO3RoaXMuX3NlbGVjdGVkTm9kZUluY2x1ZGU9dD90LmluY2x1ZGU6cUl0LlVOU1BFQ0lGSUVEfV9zbGltR3JhcGhDaGFuZ2VkKCl7aWYoIXRoaXMuZ3JhcGgpcmV0dXJuO2NvbnN0e01BWF9OT0RFX0NPVU5UOnQsTUFYX0VER0VfQ09VTlQ6ZX09blJ0O09iamVjdC5rZXlzKHRoaXMuZ3JhcGgubm9kZXMpLmxlbmd0aD50JiZ0aGlzLmdyYXBoLmVkZ2VzLmxlbmd0aD5lJiZ0aGlzLmNvbG9yQnk9PT1sT3QuU1RSVUNUVVJFJiYodGhpcy5jb2xvckJ5PWxPdC5OT05FKX1fZW5zdXJlVGVtcGxhdGVzKCl7dGhpcy5ncmFwaEhpZXJhcmNoeSYmdGhpcy5jb2xvckJ5PT09bE90LlNUUlVDVFVSRSYmKHRoaXMuZ3JhcGhIaWVyYXJjaHkuZ2V0VGVtcGxhdGVJbmRleCgpfHx0aGlzLmdyYXBoSGllcmFyY2h5LnVwZGF0ZVRlbXBsYXRlcygpKX19O2lSdC50ZW1wbGF0ZT1fZWAKICAgIDxzdHlsZT4KICAgICAgOjpob3N0IHsKICAgICAgICBkaXNwbGF5OiBibG9jazsKICAgICAgfQoKICAgICAgL2RlZXAvIC5jbG9zZSB7CiAgICAgICAgcG9zaXRpb246IGFic29sdXRlOwogICAgICAgIGN1cnNvcjogcG9pbnRlcjsKICAgICAgICBsZWZ0OiAxNXB4OwogICAgICAgIGJvdHRvbTogMTVweDsKICAgICAgfQoKICAgICAgLmNvbnRhaW5lciB7CiAgICAgICAgd2lkdGg6IDEwMCU7CiAgICAgICAgaGVpZ2h0OiAxMDAlOwogICAgICAgIG9wYWNpdHk6IDE7CiAgICAgIH0KCiAgICAgIC5jb250YWluZXIubG9hZGluZyB7CiAgICAgICAgY3Vyc29yOiBwcm9ncmVzczsKICAgICAgICBvcGFjaXR5OiAwLjE7CiAgICAgIH0KCiAgICAgIC5jb250YWluZXIubG9hZGluZy5lcnJvciB7CiAgICAgICAgY3Vyc29yOiBhdXRvOwogICAgICB9CgogICAgICAjaW5mbyB7CiAgICAgICAgcG9zaXRpb246IGFic29sdXRlOwogICAgICAgIHJpZ2h0OiA1cHg7CiAgICAgICAgdG9wOiA1cHg7CiAgICAgICAgcGFkZGluZzogMHB4OwogICAgICAgIG1heC13aWR0aDogMzgwcHg7CiAgICAgICAgbWluLXdpZHRoOiAzMjBweDsKICAgICAgICBiYWNrZ3JvdW5kLWNvbG9yOiByZ2JhKDI1NSwgMjU1LCAyNTUsIDAuOSk7CiAgICAgICAgQGFwcGx5IC0tc2hhZG93LWVsZXZhdGlvbi0yZHA7CiAgICAgIH0KCiAgICAgICNtYWluIHsKICAgICAgICB3aWR0aDogMTAwJTsKICAgICAgICBoZWlnaHQ6IDEwMCU7CiAgICAgIH0KCiAgICAgICNwcm9ncmVzcy1iYXIgewogICAgICAgIGRpc3BsYXk6IGZsZXg7CiAgICAgICAgZmxleC1kaXJlY3Rpb246IGNvbHVtbjsKICAgICAgICBhbGlnbi1pdGVtczogY2VudGVyOwogICAgICAgIGp1c3RpZnktY29udGVudDogY2VudGVyOwogICAgICAgIHdpZHRoOiAxMDAlOwogICAgICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTsKICAgICAgICB0b3A6IDQwcHg7CiAgICAgICAgbGVmdDogMDsKICAgICAgICBmb250LXNpemU6IDEzcHg7CiAgICAgIH0KCiAgICAgICNwcm9ncmVzcy1tc2cgewogICAgICAgIG1hcmdpbi1ib3R0b206IDVweDsKICAgICAgICB3aGl0ZS1zcGFjZTogcHJlLXdyYXA7CiAgICAgICAgd2lkdGg6IDQwMHB4OwogICAgICB9CgogICAgICBwYXBlci1wcm9ncmVzcyB7CiAgICAgICAgd2lkdGg6IDQwMHB4OwogICAgICAgIC0tcGFwZXItcHJvZ3Jlc3MtaGVpZ2h0OiA2cHg7CiAgICAgICAgLS1wYXBlci1wcm9ncmVzcy1hY3RpdmUtY29sb3I6ICNmMzkxM2U7CiAgICAgIH0KCiAgICAgIC5jb250ZXh0LW1lbnUgewogICAgICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTsKICAgICAgICBkaXNwbGF5OiBub25lOwogICAgICAgIGJhY2tncm91bmQtY29sb3I6ICNlMmUyZTI7CiAgICAgICAgYm9yZGVyLXJhZGl1czogMnB4OwogICAgICAgIGZvbnQtc2l6ZTogMTRweDsKICAgICAgICBtaW4td2lkdGg6IDE1MHB4OwogICAgICAgIGJvcmRlcjogMXB4IHNvbGlkICNkNGQ0ZDQ7CiAgICAgIH0KCiAgICAgIC9kZWVwLyAuY29udGV4dC1tZW51IHVsIHsKICAgICAgICBsaXN0LXN0eWxlLXR5cGU6IG5vbmU7CiAgICAgICAgbWFyZ2luOiAwOwogICAgICAgIHBhZGRpbmc6IDA7CiAgICAgICAgY3Vyc29yOiBkZWZhdWx0OwogICAgICB9CgogICAgICAvZGVlcC8gLmNvbnRleHQtbWVudSB1bCBsaSB7CiAgICAgICAgcGFkZGluZzogNHB4IDE2cHg7CiAgICAgIH0KCiAgICAgIC9kZWVwLyAuY29udGV4dC1tZW51IHVsIGxpOmhvdmVyIHsKICAgICAgICBiYWNrZ3JvdW5kLWNvbG9yOiAjZjM5MTNlOwogICAgICAgIGNvbG9yOiB3aGl0ZTsKICAgICAgfQogICAgPC9zdHlsZT4KICAgIDx0ZW1wbGF0ZSBpcz0iZG9tLWlmIiBpZj0iW1tfaXNOb3RDb21wbGV0ZShwcm9ncmVzcyldXSI+CiAgICAgIDxkaXYgaWQ9InByb2dyZXNzLWJhciI+CiAgICAgICAgPGRpdiBpZD0icHJvZ3Jlc3MtbXNnIj5bW3Byb2dyZXNzLm1zZ11dPC9kaXY+CiAgICAgICAgPHBhcGVyLXByb2dyZXNzIHZhbHVlPSJbW3Byb2dyZXNzLnZhbHVlXV0iPjwvcGFwZXItcHJvZ3Jlc3M+CiAgICAgIDwvZGl2PgogICAgPC90ZW1wbGF0ZT4KICAgIDxkaXYgY2xhc3MkPSJbW19nZXRDb250YWluZXJDbGFzcyhwcm9ncmVzcyldXSI+CiAgICAgIDxkaXYgaWQ9Im1haW4iPgogICAgICAgIDx0Zi1ncmFwaAogICAgICAgICAgaWQ9ImdyYXBoIgogICAgICAgICAgZ3JhcGgtaGllcmFyY2h5PSJ7e2dyYXBoSGllcmFyY2h5fX0iCiAgICAgICAgICBiYXNpYy1ncmFwaD0iW1tncmFwaF1dIgogICAgICAgICAgaGllcmFyY2h5LXBhcmFtcz0iW1toaWVyYXJjaHlQYXJhbXNdXSIKICAgICAgICAgIHJlbmRlci1oaWVyYXJjaHk9Int7cmVuZGVySGllcmFyY2h5fX0iCiAgICAgICAgICBkZXZpY2VzLWZvci1zdGF0cz0iW1tkZXZpY2VzRm9yU3RhdHNdXSIKICAgICAgICAgIHN0YXRzPSJbW3N0YXRzXV0iCiAgICAgICAgICBzZWxlY3RlZC1ub2RlPSJ7e3NlbGVjdGVkTm9kZX19IgogICAgICAgICAgaGlnaGxpZ2h0ZWQtbm9kZT0ie3tfaGlnaGxpZ2h0ZWROb2RlfX0iCiAgICAgICAgICBjb2xvci1ieT0iW1tjb2xvckJ5XV0iCiAgICAgICAgICBjb2xvci1ieS1wYXJhbXM9Int7Y29sb3JCeVBhcmFtc319IgogICAgICAgICAgcHJvZ3Jlc3M9Int7cHJvZ3Jlc3N9fSIKICAgICAgICAgIGVkZ2UtbGFiZWwtZnVuY3Rpb249IltbZWRnZUxhYmVsRnVuY3Rpb25dXSIKICAgICAgICAgIGVkZ2Utd2lkdGgtZnVuY3Rpb249IltbZWRnZVdpZHRoRnVuY3Rpb25dXSIKICAgICAgICAgIG5vZGUtbmFtZXMtdG8taGVhbHRoLXBpbGxzPSJbW25vZGVOYW1lc1RvSGVhbHRoUGlsbHNdXSIKICAgICAgICAgIGhlYWx0aC1waWxsLXN0ZXAtaW5kZXg9IltbaGVhbHRoUGlsbFN0ZXBJbmRleF1dIgogICAgICAgICAgaGFuZGxlLW5vZGUtc2VsZWN0ZWQ9IltbaGFuZGxlTm9kZVNlbGVjdGVkXV0iCiAgICAgICAgICBoYW5kbGUtZWRnZS1zZWxlY3RlZD0iW1toYW5kbGVFZGdlU2VsZWN0ZWRdXSIKICAgICAgICAgIHRyYWNlLWlucHV0cz0iW1t0cmFjZUlucHV0c11dIgogICAgICAgICAgYXV0by1leHRyYWN0LW5vZGVzPSJbW2F1dG9FeHRyYWN0Tm9kZXNdXSIKICAgICAgICA+PC90Zi1ncmFwaD4KICAgICAgPC9kaXY+CiAgICAgIDxkaXYgaWQ9ImluZm8iPgogICAgICAgIDx0Zi1ncmFwaC1pbmZvCiAgICAgICAgICBpZD0iZ3JhcGgtaW5mbyIKICAgICAgICAgIHRpdGxlPSJzZWxlY3RlZCIKICAgICAgICAgIGdyYXBoLWhpZXJhcmNoeT0iW1tncmFwaEhpZXJhcmNoeV1dIgogICAgICAgICAgcmVuZGVyLWhpZXJhcmNoeT0iW1tyZW5kZXJIaWVyYXJjaHldXSIKICAgICAgICAgIGdyYXBoPSJbW2dyYXBoXV0iCiAgICAgICAgICBzZWxlY3RlZC1ub2RlPSJ7e3NlbGVjdGVkTm9kZX19IgogICAgICAgICAgc2VsZWN0ZWQtbm9kZS1pbmNsdWRlPSJ7e19zZWxlY3RlZE5vZGVJbmNsdWRlfX0iCiAgICAgICAgICBoaWdobGlnaHRlZC1ub2RlPSJ7e19oaWdobGlnaHRlZE5vZGV9fSIKICAgICAgICAgIGNvbG9yLWJ5PSJbW2NvbG9yQnldXSIKICAgICAgICAgIGNvbG9yLWJ5LXBhcmFtcz0iW1tjb2xvckJ5UGFyYW1zXV0iCiAgICAgICAgICBkZWJ1Z2dlci1kYXRhLWVuYWJsZWQ9IltbZGVidWdnZXJEYXRhRW5hYmxlZF1dIgogICAgICAgICAgYXJlLWhlYWx0aC1waWxscy1sb2FkaW5nPSJbW2FyZUhlYWx0aFBpbGxzTG9hZGluZ11dIgogICAgICAgICAgZGVidWdnZXItbnVtZXJpYy1hbGVydHM9IltbZGVidWdnZXJOdW1lcmljQWxlcnRzXV0iCiAgICAgICAgICBub2RlLW5hbWVzLXRvLWhlYWx0aC1waWxscz0iW1tub2RlTmFtZXNUb0hlYWx0aFBpbGxzXV0iCiAgICAgICAgICBhbGwtc3RlcHMtbW9kZS1lbmFibGVkPSJ7e2FsbFN0ZXBzTW9kZUVuYWJsZWR9fSIKICAgICAgICAgIHNwZWNpZmljLWhlYWx0aC1waWxsLXN0ZXA9Int7c3BlY2lmaWNIZWFsdGhQaWxsU3RlcH19IgogICAgICAgICAgaGVhbHRoLXBpbGwtc3RlcC1pbmRleD0ie3toZWFsdGhQaWxsU3RlcEluZGV4fX0iCiAgICAgICAgICBjb21wYXQtbm9kZS10aXRsZT0iW1tjb21wYXROb2RlVGl0bGVdXSIKICAgICAgICAgIG9uLW5vZGUtdG9nZ2xlLWluY2x1c2lvbj0iX29uTm9kZUluY2x1c2lvblRvZ2dsZWQiCiAgICAgICAgICBvbi1ub2RlLXRvZ2dsZS1zZXJpZXNncm91cD0iX29uTm9kZVNlcmllc0dyb3VwVG9nZ2xlZCIKICAgICAgICA+PC90Zi1ncmFwaC1pbmZvPgogICAgICA8L2Rpdj4KICAgIDwvZGl2PgogIGAsdChbbyh7dHlwZTpPYmplY3R9KSxlKCJkZXNpZ246dHlwZSIsSE90KV0saVJ0LnByb3RvdHlwZSwiZ3JhcGhIaWVyYXJjaHkiLHZvaWQgMCksdChbbyh7dHlwZTpPYmplY3R9KSxlKCJkZXNpZ246dHlwZSIsWEl0KV0saVJ0LnByb3RvdHlwZSwiZ3JhcGgiLHZvaWQgMCksdChbbyh7dHlwZTpPYmplY3R9KSxlKCJkZXNpZ246dHlwZSIsT2JqZWN0KV0saVJ0LnByb3RvdHlwZSwiaGllcmFyY2h5UGFyYW1zIix2b2lkIDApLHQoW28oe3R5cGU6T2JqZWN0fSksZSgiZGVzaWduOnR5cGUiLE9iamVjdCldLGlSdC5wcm90b3R5cGUsInN0YXRzIix2b2lkIDApLHQoW28oe3R5cGU6T2JqZWN0fSksZSgiZGVzaWduOnR5cGUiLE9iamVjdCldLGlSdC5wcm90b3R5cGUsInByb2dyZXNzIix2b2lkIDApLHQoW28oe3R5cGU6Qm9vbGVhbn0pLGUoImRlc2lnbjp0eXBlIixCb29sZWFuKV0saVJ0LnByb3RvdHlwZSwidHJhY2VJbnB1dHMiLHZvaWQgMCksdChbbyh7dHlwZTpCb29sZWFufSksZSgiZGVzaWduOnR5cGUiLEJvb2xlYW4pXSxpUnQucHJvdG90eXBlLCJhdXRvRXh0cmFjdE5vZGVzIix2b2lkIDApLHQoW28oe3R5cGU6U3RyaW5nLG5vdGlmeTohMH0pLGUoImRlc2lnbjp0eXBlIixTdHJpbmcpXSxpUnQucHJvdG90eXBlLCJjb2xvckJ5Iix2b2lkIDApLHQoW28oe3R5cGU6T2JqZWN0LG5vdGlmeTohMH0pLGUoImRlc2lnbjp0eXBlIixPYmplY3QpXSxpUnQucHJvdG90eXBlLCJjb2xvckJ5UGFyYW1zIix2b2lkIDApLHQoW28oe3R5cGU6T2JqZWN0LG5vdGlmeTohMH0pLGUoImRlc2lnbjp0eXBlIixiTnQpXSxpUnQucHJvdG90eXBlLCJyZW5kZXJIaWVyYXJjaHkiLHZvaWQgMCksdChbbyh7dHlwZTpCb29sZWFufSksZSgiZGVzaWduOnR5cGUiLEJvb2xlYW4pXSxpUnQucHJvdG90eXBlLCJkZWJ1Z2dlckRhdGFFbmFibGVkIix2b2lkIDApLHQoW28oe3R5cGU6Qm9vbGVhbn0pLGUoImRlc2lnbjp0eXBlIixCb29sZWFuKV0saVJ0LnByb3RvdHlwZSwiYXJlSGVhbHRoUGlsbHNMb2FkaW5nIix2b2lkIDApLHQoW28oe3R5cGU6QXJyYXksbm90aWZ5OiEwfSksZSgiZGVzaWduOnR5cGUiLEFycmF5KV0saVJ0LnByb3RvdHlwZSwiZGVidWdnZXJOdW1lcmljQWxlcnRzIix2b2lkIDApLHQoW28oe3R5cGU6T2JqZWN0fSksZSgiZGVzaWduOnR5cGUiLE9iamVjdCldLGlSdC5wcm90b3R5cGUsIm5vZGVOYW1lc1RvSGVhbHRoUGlsbHMiLHZvaWQgMCksdChbbyh7dHlwZTpCb29sZWFuLG5vdGlmeTohMH0pLGUoImRlc2lnbjp0eXBlIixCb29sZWFuKV0saVJ0LnByb3RvdHlwZSwiYWxsU3RlcHNNb2RlRW5hYmxlZCIsdm9pZCAwKSx0KFtvKHt0eXBlOk51bWJlcixub3RpZnk6ITB9KSxlKCJkZXNpZ246dHlwZSIsTnVtYmVyKV0saVJ0LnByb3RvdHlwZSwic3BlY2lmaWNIZWFsdGhQaWxsU3RlcCIsdm9pZCAwKSx0KFtvKHt0eXBlOk51bWJlcn0pLGUoImRlc2lnbjp0eXBlIixOdW1iZXIpXSxpUnQucHJvdG90eXBlLCJoZWFsdGhQaWxsU3RlcEluZGV4Iix2b2lkIDApLHQoW28oe3R5cGU6U3RyaW5nLG5vdGlmeTohMH0pLGUoImRlc2lnbjp0eXBlIixTdHJpbmcpXSxpUnQucHJvdG90eXBlLCJzZWxlY3RlZE5vZGUiLHZvaWQgMCksdChbbyh7dHlwZTpTdHJpbmd9KSxlKCJkZXNpZ246dHlwZSIsU3RyaW5nKV0saVJ0LnByb3RvdHlwZSwiY29tcGF0Tm9kZVRpdGxlIix2b2lkIDApLHQoW28oe3R5cGU6T2JqZWN0fSksZSgiZGVzaWduOnR5cGUiLE9iamVjdCldLGlSdC5wcm90b3R5cGUsImVkZ2VXaWR0aEZ1bmN0aW9uIix2b2lkIDApLHQoW28oe3R5cGU6TnVtYmVyfSksZSgiZGVzaWduOnR5cGUiLE51bWJlcildLGlSdC5wcm90b3R5cGUsIl9zZWxlY3RlZE5vZGVJbmNsdWRlIix2b2lkIDApLHQoW28oe3R5cGU6U3RyaW5nfSksZSgiZGVzaWduOnR5cGUiLFN0cmluZyldLGlSdC5wcm90b3R5cGUsIl9oaWdobGlnaHRlZE5vZGUiLHZvaWQgMCksdChbbyh7dHlwZTpPYmplY3R9KSxlKCJkZXNpZ246dHlwZSIsT2JqZWN0KV0saVJ0LnByb3RvdHlwZSwiaGFuZGxlTm9kZVNlbGVjdGVkIix2b2lkIDApLHQoW28oe3R5cGU6T2JqZWN0fSksZSgiZGVzaWduOnR5cGUiLE9iamVjdCldLGlSdC5wcm90b3R5cGUsImVkZ2VMYWJlbEZ1bmN0aW9uIix2b2lkIDApLHQoW28oe3R5cGU6T2JqZWN0fSksZSgiZGVzaWduOnR5cGUiLE9iamVjdCldLGlSdC5wcm90b3R5cGUsImhhbmRsZUVkZ2VTZWxlY3RlZCIsdm9pZCAwKSx0KFthKCJzZWxlY3RlZE5vZGUiLCJyZW5kZXJIaWVyYXJjaHkiKSxlKCJkZXNpZ246dHlwZSIsRnVuY3Rpb24pLGUoImRlc2lnbjpwYXJhbXR5cGVzIixbXSksZSgiZGVzaWduOnJldHVybnR5cGUiLHZvaWQgMCldLGlSdC5wcm90b3R5cGUsIl91cGRhdGVOb2RlSW5jbHVkZSIsbnVsbCksdChbYSgiZ3JhcGgiKSxlKCJkZXNpZ246dHlwZSIsRnVuY3Rpb24pLGUoImRlc2lnbjpwYXJhbXR5cGVzIixbXSksZSgiZGVzaWduOnJldHVybnR5cGUiLHZvaWQgMCldLGlSdC5wcm90b3R5cGUsIl9zbGltR3JhcGhDaGFuZ2VkIixudWxsKSx0KFthKCJjb2xvckJ5IiwiZ3JhcGhIaWVyYXJjaHkiKSxlKCJkZXNpZ246dHlwZSIsRnVuY3Rpb24pLGUoImRlc2lnbjpwYXJhbXR5cGVzIixbXSksZSgiZGVzaWduOnJldHVybnR5cGUiLHZvaWQgMCldLGlSdC5wcm90b3R5cGUsIl9lbnN1cmVUZW1wbGF0ZXMiLG51bGwpLGlSdD10KFtpKCJ0Zi1ncmFwaC1ib2FyZCIpXSxpUnQpO2xldCByUnQ9Y2xhc3MgZXh0ZW5kcyh0cih5ZSkpe2NvbnN0cnVjdG9yKCl7c3VwZXIoLi4uYXJndW1lbnRzKSx0aGlzLl9yYXdSZWdleElucHV0PSIiLHRoaXMuX3ByZXZpb3VzUmVnZXhJbnB1dD0iIix0aGlzLl9zZWFyY2hUaW1lb3V0RGVsYXk9MTUwLHRoaXMuX21heFJlZ2V4UmVzdWx0cz00Mn1nZXQgX3JlZ2V4SW5wdXQoKXtyZXR1cm4gdGhpcy5fcmF3UmVnZXhJbnB1dC50cmltKCl9X3JlZ2V4SW5wdXRDaGFuZ2VkKCl7dGhpcy5fcmVxdWVzdFNlYXJjaCgpfV9jbGVhclNlYXJjaFJlc3VsdHMoKXt0aGlzLnNldCgiX3JlZ2V4TWF0Y2hlcyIsW10pfV9yZXF1ZXN0U2VhcmNoKCl7dGhpcy5fc2VhcmNoUGVuZGluZ3x8KHRoaXMuX3JlZ2V4SW5wdXQhPT10aGlzLl9wcmV2aW91c1JlZ2V4SW5wdXQ/KHRoaXMuX3NlYXJjaFBlbmRpbmc9ITAsdGhpcy5fZXhlY3V0ZVNlYXJjaCgpLHRoaXMuYXN5bmMoKCgpPT57dGhpcy5fc2VhcmNoUGVuZGluZz0hMSx0aGlzLl9yZXF1ZXN0U2VhcmNoKCl9KSx0aGlzLl9zZWFyY2hUaW1lb3V0RGVsYXkpKTp0aGlzLl9zZWFyY2hQZW5kaW5nPSExKX1fZXhlY3V0ZVNlYXJjaCgpe2lmKHRoaXMuX3ByZXZpb3VzUmVnZXhJbnB1dD10aGlzLl9yZWdleElucHV0LCF0aGlzLl9yZWdleElucHV0KXJldHVybiB2b2lkIHRoaXMuX2NsZWFyU2VhcmNoUmVzdWx0cygpO3RyeXt2YXIgdD1uZXcgUmVnRXhwKHRoaXMuX3JlZ2V4SW5wdXQpfWNhdGNoKHQpe3JldHVybiB2b2lkIHRoaXMuX2NsZWFyU2VhcmNoUmVzdWx0cygpfWNvbnN0IGU9W10sbj10aGlzLnJlbmRlckhpZXJhcmNoeS5oaWVyYXJjaHkuZ2V0Tm9kZU1hcCgpO3dlLmVhY2gobiwoKG4saSk9PntpZihlLmxlbmd0aD49dGhpcy5fbWF4UmVnZXhSZXN1bHRzKXJldHVybiExO3QudGVzdChpKSYmZS5wdXNoKGkpfSkpLHRoaXMuc2V0KCJfcmVnZXhNYXRjaGVzIixlKX1fbWF0Y2hDbGlja2VkKHQpe3RoaXMuc2V0KCJzZWxlY3RlZE5vZGUiLHQubW9kZWwuaXRlbSksQ0l0KHthY3Rpb25JZDp2SXQuTk9ERV9TRUFSQ0hfUkVTVUxUX0ZPQ1VTRUR9KX19O3JSdC50ZW1wbGF0ZT1fZWAKICAgIDxkaXYgaWQ9InNlYXJjaC1jb250YWluZXIiPgogICAgICA8cGFwZXItaW5wdXQKICAgICAgICBpZD0icnVucy1yZWdleCIKICAgICAgICBsYWJlbD0iU2VhcmNoIG5vZGVzIChyZWdleCkiCiAgICAgICAgdmFsdWU9Int7X3Jhd1JlZ2V4SW5wdXR9fSIKICAgICAgPgogICAgICA8L3BhcGVyLWlucHV0PgogICAgICA8ZGl2IGlkPSJzZWFyY2gtcmVzdWx0cy1hbmNob3IiPgogICAgICAgIDxkaXYgaWQ9InNlYXJjaC1yZXN1bHRzIj4KICAgICAgICAgIDx0ZW1wbGF0ZSBpcz0iZG9tLXJlcGVhdCIgaXRlbXM9IltbX3JlZ2V4TWF0Y2hlc11dIj4KICAgICAgICAgICAgPGRpdiBpZD0ic2VhcmNoLW1hdGNoIiBvbi1jbGljaz0iX21hdGNoQ2xpY2tlZCI+W1tpdGVtXV08L2Rpdj4KICAgICAgICAgIDwvdGVtcGxhdGU+CiAgICAgICAgPC9kaXY+CiAgICAgIDwvZGl2PgogICAgPC9kaXY+CiAgICA8c3R5bGU+CiAgICAgICNzZWFyY2gtY29udGFpbmVyIHsKICAgICAgICB3aWR0aDogMTAwJTsKICAgICAgICBvdmVyZmxvdzogdmlzaWJsZTsKICAgICAgfQoKICAgICAgI3J1bnMtcmVnZXggewogICAgICAgIHdpZHRoOiAxMDAlOwogICAgICB9CgogICAgICAjc2VhcmNoLXJlc3VsdHMtYW5jaG9yIHsKICAgICAgICBwb3NpdGlvbjogcmVsYXRpdmU7CiAgICAgIH0KCiAgICAgICNzZWFyY2gtcmVzdWx0cyB7CiAgICAgICAgY29sb3I6ICNmZmY7CiAgICAgICAgcG9zaXRpb246IGFic29sdXRlOwogICAgICAgIG1heC1oZWlnaHQ6IDIwMHB4OwogICAgICAgIG92ZXJmbG93LXg6IGhpZGRlbjsKICAgICAgICBvdmVyZmxvdy15OiBhdXRvOwogICAgICAgIHRleHQtYWxpZ246IHJpZ2h0OwogICAgICAgIG1heC13aWR0aDogMTAwJTsKICAgICAgICBib3gtc2l6aW5nOiBib3JkZXItYm94OwogICAgICB9CgogICAgICAjc2VhcmNoLW1hdGNoIHsKICAgICAgICBiYWNrZ3JvdW5kOiB2YXIoLS10Yi1vcmFuZ2Utc3Ryb25nKTsKICAgICAgICBwYWRkaW5nOiAzcHg7CiAgICAgICAgZmxvYXQ6IHJpZ2h0OwogICAgICAgIHdpZHRoOiAxMDAlOwogICAgICAgIGJveC1zaXppbmc6IGJvcmRlci1ib3g7CiAgICAgICAgZGlyZWN0aW9uOiBydGw7CiAgICAgIH0KCiAgICAgICNzZWFyY2gtbWF0Y2g6aG92ZXIgewogICAgICAgIGJhY2tncm91bmQ6IHZhcigtLXRiLW9yYW5nZS13ZWFrKTsKICAgICAgICBjdXJzb3I6IHBvaW50ZXI7CiAgICAgIH0KICAgIDwvc3R5bGU+CiAgYCx0KFtvKHt0eXBlOk9iamVjdH0pLGUoImRlc2lnbjp0eXBlIixPYmplY3QpXSxyUnQucHJvdG90eXBlLCJyZW5kZXJIaWVyYXJjaHkiLHZvaWQgMCksdChbbyh7dHlwZTpTdHJpbmcsbm90aWZ5OiEwfSksZSgiZGVzaWduOnR5cGUiLFN0cmluZyldLHJSdC5wcm90b3R5cGUsInNlbGVjdGVkTm9kZSIsdm9pZCAwKSx0KFtvKHt0eXBlOlN0cmluZ30pLGUoImRlc2lnbjp0eXBlIixTdHJpbmcpXSxyUnQucHJvdG90eXBlLCJfcmF3UmVnZXhJbnB1dCIsdm9pZCAwKSx0KFtvKHt0eXBlOlN0cmluZ30pLGUoImRlc2lnbjp0eXBlIixTdHJpbmcpXSxyUnQucHJvdG90eXBlLCJfcHJldmlvdXNSZWdleElucHV0Iix2b2lkIDApLHQoW28oe3R5cGU6TnVtYmVyfSksZSgiZGVzaWduOnR5cGUiLE51bWJlcildLHJSdC5wcm90b3R5cGUsIl9zZWFyY2hUaW1lb3V0RGVsYXkiLHZvaWQgMCksdChbbyh7dHlwZTpCb29sZWFufSksZSgiZGVzaWduOnR5cGUiLEJvb2xlYW4pXSxyUnQucHJvdG90eXBlLCJfc2VhcmNoUGVuZGluZyIsdm9pZCAwKSx0KFtvKHt0eXBlOk51bWJlcn0pLGUoImRlc2lnbjp0eXBlIixOdW1iZXIpXSxyUnQucHJvdG90eXBlLCJfbWF4UmVnZXhSZXN1bHRzIix2b2lkIDApLHQoW28oe3R5cGU6QXJyYXl9KSxlKCJkZXNpZ246dHlwZSIsQXJyYXkpXSxyUnQucHJvdG90eXBlLCJfcmVnZXhNYXRjaGVzIix2b2lkIDApLHQoW3MoInJlbmRlckhpZXJhcmNoeSIsIl9yYXdSZWdleElucHV0IiksZSgiZGVzaWduOnR5cGUiLFN0cmluZyksZSgiZGVzaWduOnBhcmFtdHlwZXMiLFtdKV0sclJ0LnByb3RvdHlwZSwiX3JlZ2V4SW5wdXQiLG51bGwpLHQoW2EoIl9yZWdleElucHV0IiksZSgiZGVzaWduOnR5cGUiLEZ1bmN0aW9uKSxlKCJkZXNpZ246cGFyYW10eXBlcyIsW10pLGUoImRlc2lnbjpyZXR1cm50eXBlIix2b2lkIDApXSxyUnQucHJvdG90eXBlLCJfcmVnZXhJbnB1dENoYW5nZWQiLG51bGwpLHJSdD10KFtpKCJ0Zi1ncmFwaC1ub2RlLXNlYXJjaCIpXSxyUnQpO2NvbnN0IG9SdD0vZGV2aWNlOihbXjpdKzpbMC05XSspJC8sYVJ0PVt7cmVnZXg6b1J0fV0sc1J0PVtdLGxSdD1uZXcgU2V0KFtsT3QuQ09NUFVURV9USU1FLGxPdC5NRU1PUlldKTtsZXQgY1J0PWNsYXNzIGV4dGVuZHModHIoeWUpKXtjb25zdHJ1Y3Rvcigpe3N1cGVyKC4uLmFyZ3VtZW50cyksdGhpcy5Db2xvckJ5PWxPdCx0aGlzLnN0YXRzPW51bGwsdGhpcy5kZXZpY2VzRm9yU3RhdHM9bnVsbCx0aGlzLmNvbG9yQnk9bE90LlNUUlVDVFVSRSx0aGlzLmRhdGFzZXRzPVtdLHRoaXMuX3NlbGVjdGVkUnVuSW5kZXg9MCx0aGlzLnRyYWNlSW5wdXRzPSExLHRoaXMuYXV0b0V4dHJhY3ROb2Rlcz0hMCx0aGlzLl9zZWxlY3RlZFRhZ0luZGV4PTAsdGhpcy5fc2VsZWN0ZWRHcmFwaFR5cGU9Ykl0Lk9QX0dSQVBILHRoaXMuc2hvd1Nlc3Npb25SdW5zRHJvcGRvd249ITAsdGhpcy5zaG93VXBsb2FkQnV0dG9uPSEwLHRoaXMuX2xlZ2VuZE9wZW5lZD0hMCx0aGlzLl9kb3dubG9hZEZpbGVuYW1lPSJncmFwaC5wbmcifV9vbkdyYXBoVHlwZUNoYW5nZWRCeVVzZXJHZXN0dXJlKCl7Q0l0KHthY3Rpb25JZDp2SXQuR1JBUEhfVFlQRV9DSEFOR0VELGV2ZW50TGFiZWw6dGhpcy5fc2VsZWN0ZWRHcmFwaFR5cGV9KX1fb25Db2xvckJ5Q2hhbmdlZEJ5VXNlckdlc3R1cmUoKXtDSXQoe2FjdGlvbklkOnZJdC5OT0RFX0NPTE9SX01PREVfQ0hBTkdFRCxldmVudExhYmVsOnRoaXMuY29sb3JCeX0pfV9vblRyYWNlSW5wdXRzQ2hhbmdlZEJ5VXNlckdlc3R1cmUoKXtDSXQoe2FjdGlvbklkOnZJdC5UUkFDRV9JTlBVVF9NT0RFX1RPR0dMRUR9KX1feGxhQ2x1c3RlcnNQcm92aWRlZCh0KXtyZXR1cm4gdCYmdC5oaWVyYXJjaHkmJnQuaGllcmFyY2h5LnhsYUNsdXN0ZXJzLmxlbmd0aD4wfV9zdGF0c0NoYW5nZWQodCl7aWYobnVsbCE9dCl7dmFyIGU9e307d2UuZWFjaCh0LmRldl9zdGF0cywoZnVuY3Rpb24odCl7dmFyIG49d2Uuc29tZShhUnQsKGZ1bmN0aW9uKGUpe3JldHVybiBlLnJlZ2V4LnRlc3QodC5kZXZpY2UpfSkpLGk9d2Uuc29tZShzUnQsKGZ1bmN0aW9uKGUpe3JldHVybiBlLnJlZ2V4LnRlc3QodC5kZXZpY2UpfSkpO24mJiFpJiYoZVt0LmRldmljZV09ITApfSkpLHRoaXMuc2V0KCJkZXZpY2VzRm9yU3RhdHMiLGUpfX1nZXQgX2N1cnJlbnREZXZpY2VzKCl7dmFyIHQ9dGhpcy5kZXZpY2VzRm9yU3RhdHM7Y29uc3QgZT10aGlzLnN0YXRzLG49KGU/ZS5kZXZfc3RhdHM6W10pLm1hcCgodD0+dC5kZXZpY2UpKS5maWx0ZXIoKHQ9PmFSdC5zb21lKChlPT5lLnJlZ2V4LnRlc3QodCkpKSkpLGk9Qkl0KG4pO2lmKDE9PWkubGVuZ3RoKXtjb25zdCB0PWlbMF0ubWF0Y2gob1J0KTt0JiYoaVswXT10WzFdKX1yZXR1cm4gbi5tYXAoKChlLG4pPT57bGV0IHI9bnVsbDtyZXR1cm4gc1J0LmZvckVhY2goKHQ9Pnt0LnJlZ2V4LnRlc3QoZSkmJihyPXQubXNnKX0pKSx7ZGV2aWNlOmUsc3VmZml4Omlbbl0sdXNlZDp0W2VdLGlnbm9yZWRNc2c6cn19KSl9X2RldmljZUNoZWNrYm94Q2xpY2tlZCh0KXtjb25zdCBlPXQudGFyZ2V0LG49T2JqZWN0LmFzc2lnbih7fSx0aGlzLmRldmljZXNGb3JTdGF0cyksaT1lLnZhbHVlO2UuY2hlY2tlZD9uW2ldPSEwOmRlbGV0ZSBuW2ldLHRoaXMuc2V0KCJkZXZpY2VzRm9yU3RhdHMiLG4pfV9udW1UYWdzKHQsZSl7cmV0dXJuIHRoaXMuX2dldFRhZ3ModCxlKS5sZW5ndGh9X2dldFRhZ3ModCxlKXtyZXR1cm4gdCYmdFtlXT90W2VdLnRhZ3M6W119X2ZpdCgpe3RoaXMuZmlyZSgiZml0LXRhcCIpfV9pc0dyYWRpZW50Q29sb3JpbmcodCxlKXtyZXR1cm4gbFJ0LmhhcyhlKSYmbnVsbCE9dH1fZXF1YWxzKHQsZSl7cmV0dXJuIHQ9PT1lfWdldCBfY3VycmVudERldmljZVBhcmFtcygpe2NvbnN0IHQ9dGhpcy5jb2xvckJ5UGFyYW1zLmRldmljZS5maWx0ZXIoKHQ9PmFSdC5zb21lKChlPT5lLnJlZ2V4LnRlc3QodC5kZXZpY2UpKSkpKSxlPUJJdCh0Lm1hcCgodD0+dC5kZXZpY2UpKSk7aWYoMT09ZS5sZW5ndGgpe3ZhciBuPWVbMF0ubWF0Y2gob1J0KTtuJiYoZVswXT1uWzFdKX1yZXR1cm4gdC5tYXAoKCh0LG4pPT4oe2RldmljZTplW25dLGNvbG9yOnQuY29sb3J9KSkpfWdldCBfY3VycmVudFhsYUNsdXN0ZXJQYXJhbXMoKXtyZXR1cm4gdGhpcy5jb2xvckJ5UGFyYW1zLnhsYV9jbHVzdGVyfWdldCBfY3VycmVudEdyYWRpZW50UGFyYW1zKCl7dmFyIHQ9dGhpcy5jb2xvckJ5UGFyYW1zLGU9dGhpcy5jb2xvckJ5O2lmKCF0aGlzLl9pc0dyYWRpZW50Q29sb3JpbmcodGhpcy5zdGF0cyxlKSlyZXR1cm47Y29uc3Qgbj10W2VdO2xldCBpPW4ubWluVmFsdWUscj1uLm1heFZhbHVlO3JldHVybiBlPT09bE90Lk1FTU9SWT8oaT16SXQoaSxPSXQpLHI9ekl0KHIsT0l0KSk6ZT09PWxPdC5DT01QVVRFX1RJTUUmJihpPXpJdChpLFJJdCkscj16SXQocixSSXQpKSx7bWluVmFsdWU6aSxtYXhWYWx1ZTpyLHN0YXJ0Q29sb3I6bi5zdGFydENvbG9yLGVuZENvbG9yOm4uZW5kQ29sb3J9fWRvd25sb2FkKCl7dGhpcy5maXJlKCJkb3dubG9hZC1pbWFnZS1yZXF1ZXN0ZWQiLHRoaXMuX2Rvd25sb2FkRmlsZW5hbWUpfV91cGRhdGVGaWxlSW5wdXQodCl7Y29uc3QgZT10LnRhcmdldC5maWxlc1swXTtpZighZSlyZXR1cm47bGV0IG49ZS5uYW1lO2NvbnN0IGk9bi5sYXN0SW5kZXhPZigiLiIpO2k+PTAmJihuPW4uc3Vic3RyaW5nKDAsaSkpO2NvbnN0IHI9bi5sYXN0SW5kZXhPZigiLyIpO3I+PTAmJihuPW4uc3Vic3RyaW5nKHIrMSkpLHRoaXMuX3NldERvd25sb2FkRmlsZW5hbWUobiksdGhpcy5zZXQoInNlbGVjdGVkRmlsZSIsdCksQ0l0KHthY3Rpb25JZDp2SXQuVVBMT0FERURfR1JBUEhfRlJPTV9GSUxFU1lTVEVNfSl9X2RhdGFzZXRzQ2hhbmdlZCh0LGUpe3ZhciBuO251bGwhPWUmJih0aGlzLl9zZWxlY3RlZFJ1bkluZGV4PTApLHRoaXMuX3NldERvd25sb2FkRmlsZW5hbWUobnVsbD09PShuPXRoaXMuZGF0YXNldHNbdGhpcy5fc2VsZWN0ZWRSdW5JbmRleF0pfHx2b2lkIDA9PT1uP3ZvaWQgMDpuLm5hbWUpfV9jb21wdXRlU2VsZWN0aW9uKHQsZSxuLGkpe3JldHVybiB0W2VdJiZ0W2VdLnRhZ3Nbbl0/e3J1bjp0W2VdLm5hbWUsdGFnOnRbZV0udGFnc1tuXS50YWcsdHlwZTppfTpudWxsfV9zZWxlY3RlZFJ1bkluZGV4Q2hhbmdlZCh0KXt2YXIgZTt0aGlzLmRhdGFzZXRzJiYodGhpcy5jb2xvckJ5PWxPdC5TVFJVQ1RVUkUsdGhpcy5fc2VsZWN0ZWRUYWdJbmRleD0wLHRoaXMuX3NlbGVjdGVkR3JhcGhUeXBlPXRoaXMuX2dldERlZmF1bHRTZWxlY3Rpb25UeXBlKCksdGhpcy50cmFjZUlucHV0cz0hMSx0aGlzLl9zZXREb3dubG9hZEZpbGVuYW1lKG51bGw9PT0oZT10aGlzLmRhdGFzZXRzW3RdKXx8dm9pZCAwPT09ZT92b2lkIDA6ZS5uYW1lKSl9X3NlbGVjdGVkVGFnSW5kZXhDaGFuZ2VkKCl7dGhpcy5fc2VsZWN0ZWRHcmFwaFR5cGU9dGhpcy5fZ2V0RGVmYXVsdFNlbGVjdGlvblR5cGUoKX1fZ2V0RGVmYXVsdFNlbGVjdGlvblR5cGUoKXtjb25zdHtkYXRhc2V0czp0LF9zZWxlY3RlZFJ1bkluZGV4OmUsX3NlbGVjdGVkVGFnSW5kZXg6bn09dGhpcztpZighdHx8IXRbZV18fCF0W2VdLnRhZ3Nbbl18fHRbZV0udGFnc1tuXS5vcEdyYXBoKXJldHVybiBiSXQuT1BfR1JBUEg7Y29uc3QgaT10W2VdO3JldHVybiBpLnRhZ3Nbbl0ucHJvZmlsZT9iSXQuUFJPRklMRTppLnRhZ3Nbbl0uY29uY2VwdHVhbEdyYXBoP2JJdC5DT05DRVBUVUFMX0dSQVBIOmJJdC5PUF9HUkFQSH1fZ2V0RmlsZSgpe3RoaXMuJCQoIiNmaWxlIikuY2xpY2soKX1fc2V0RG93bmxvYWRGaWxlbmFtZSh0KXt0aGlzLl9kb3dubG9hZEZpbGVuYW1lPSh0fHwiZ3JhcGgiKSsiLnBuZyJ9X3N0YXRzTm90TnVsbCh0KXtyZXR1cm4gbnVsbCE9PXR9X3RvZ2dsZUxlZ2VuZE9wZW4oKXt0aGlzLnNldCgiX2xlZ2VuZE9wZW5lZCIsIXRoaXMuX2xlZ2VuZE9wZW5lZCl9X2dldFRvZ2dsZUxlZ2VuZEljb24odCl7cmV0dXJuIHQ/ImV4cGFuZC1tb3JlIjoiZXhwYW5kLWxlc3MifV9nZXRTZWxlY3Rpb25PcEdyYXBoRGlzYWJsZWQodCxlLG4pe3JldHVybiF0W2VdfHwhdFtlXS50YWdzW25dfHwhdFtlXS50YWdzW25dLm9wR3JhcGh9X2dldFNlbGVjdGlvblByb2ZpbGVEaXNhYmxlZCh0LGUsbil7cmV0dXJuIXRbZV18fCF0W2VdLnRhZ3Nbbl18fCF0W2VdLnRhZ3Nbbl0ucHJvZmlsZX1fZ2V0U2VsZWN0aW9uQ29uY2VwdHVhbEdyYXBoRGlzYWJsZWQodCxlLG4pe3JldHVybiF0W2VdfHwhdFtlXS50YWdzW25dfHwhdFtlXS50YWdzW25dLmNvbmNlcHR1YWxHcmFwaH19O2NSdC50ZW1wbGF0ZT1fZWAKICAgIDxzdHlsZT4KICAgICAgOmhvc3QgewogICAgICAgIGNvbG9yOiBncmF5OwogICAgICAgIGRpc3BsYXk6IGZsZXg7CiAgICAgICAgZmxleC1kaXJlY3Rpb246IGNvbHVtbjsKICAgICAgICBmb250LXNpemU6IDEycHg7CiAgICAgICAgd2lkdGg6IDEwMCU7CiAgICAgICAgLS10Yi1ncmFwaC1jb250cm9scy10ZXh0LWNvbG9yOiAjNTU1OwogICAgICAgIC0tdGItZ3JhcGgtY29udHJvbHMtdGl0bGUtZm9udC1zaXplOiAxNHB4OwogICAgICAgIC0tdGItZ3JhcGgtY29udHJvbHMtc3VidGl0bGUtZm9udC1zaXplOiAxNHB4OwogICAgICAgIC0tcGFwZXItaW5wdXQtY29udGFpbmVyLXNoYXJlZC1pbnB1dC1zdHlsZV8tX2ZvbnQtc2l6ZTogMTRweDsKICAgICAgICAtLXBhcGVyLWZvbnQtc3ViaGVhZF8tX2ZvbnQtc2l6ZTogMTRweDsKICAgICAgfQoKICAgICAgcGFwZXItZHJvcGRvd24tbWVudSB7CiAgICAgICAgLS1wYXBlci1kcm9wZG93bi1tZW51LWlucHV0OiB7CiAgICAgICAgICBwYWRkaW5nOiAwOwogICAgICAgICAgY29sb3I6IGdyYXk7CiAgICAgICAgfQogICAgICAgIC0taXJvbi1pY29uLXdpZHRoOiAxNXB4OwogICAgICAgIC0taXJvbi1pY29uLWhlaWdodDogMTVweDsKICAgICAgICAtLXByaW1hcnktdGV4dC1jb2xvcjogZ3JheTsKICAgICAgICAtLXBhcGVyLWl0ZW0tbWluLWhlaWdodDogMzBweDsKICAgICAgfQoKICAgICAgcGFwZXItYnV0dG9uW3JhaXNlZF0ua2V5Ym9hcmQtZm9jdXMgewogICAgICAgIGZvbnQtd2VpZ2h0OiBub3JtYWw7CiAgICAgIH0KCiAgICAgIC5ydW4tZHJvcGRvd24gewogICAgICAgIC0tcGFwZXItaW5wdXQtY29udGFpbmVyOiB7CiAgICAgICAgICBwYWRkaW5nOiA1cHggMCA1cHggNXB4OwogICAgICAgIH0KICAgICAgfQoKICAgICAgdGFibGUgewogICAgICAgIGJvcmRlci1jb2xsYXBzZTogY29sbGFwc2U7CiAgICAgICAgYm9yZGVyLXNwYWNpbmc6IDA7CiAgICAgIH0KCiAgICAgIHRhYmxlIHRyIHsKICAgICAgICBoZWlnaHQ6IDIwcHg7CiAgICAgIH0KCiAgICAgIHRhYmxlIHRkIHsKICAgICAgICBwYWRkaW5nOiAwOwogICAgICAgIG1hcmdpbjogMDsKICAgICAgfQoKICAgICAgLmFsbGNvbnRyb2xzIHsKICAgICAgICBwYWRkaW5nOiAwIDIwcHggMjBweDsKICAgICAgICBmbGV4LWdyb3c6IDE7CiAgICAgICAgb3ZlcmZsb3cteTogYXV0bzsKICAgICAgfQoKICAgICAgLmxlZ2VuZC1ob2xkZXIgewogICAgICAgIGJhY2tncm91bmQ6ICNlOWU5ZTk7CiAgICAgICAgYm94LXNpemluZzogYm9yZGVyLWJveDsKICAgICAgICBjb2xvcjogdmFyKC0tdGItZ3JhcGgtY29udHJvbHMtdGV4dC1jb2xvcik7CiAgICAgICAgd2lkdGg6IDEwMCU7CiAgICAgIH0KCiAgICAgIC5sZWdlbmQtdG9vbGJhciB7CiAgICAgICAgYXBwZWFyYW5jZTogbm9uZTsKICAgICAgICBiYWNrZ3JvdW5kLWNvbG9yOiBpbmhlcml0OwogICAgICAgIGJvcmRlci10b3A6IDFweCBzb2xpZCAjY2NjOwogICAgICAgIGJvcmRlci1ib3R0b206IDFweCBzb2xpZCAjY2NjOwogICAgICAgIGJvcmRlci1yaWdodDogbm9uZTsKICAgICAgICBib3JkZXItbGVmdDogbm9uZTsKICAgICAgICBjdXJzb3I6IHBvaW50ZXI7CiAgICAgICAgZm9udDogaW5oZXJpdDsKICAgICAgICBkaXNwbGF5OiBmbGV4OwogICAgICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7CiAgICAgICAganVzdGlmeS1jb250ZW50OiBzcGFjZS1iZXR3ZWVuOwogICAgICAgIHdpZHRoOiAxMDAlOwogICAgICB9CgogICAgICAubGVnZW5kLXRvb2xiYXIsCiAgICAgIC5sZWdlbmQtY29udGVudCB7CiAgICAgICAgcGFkZGluZzogOHB4IDIwcHg7CiAgICAgIH0KCiAgICAgIC50b2dnbGUtbGVnZW5kLWJ1dHRvbiB7CiAgICAgICAgbWF4LWhlaWdodDogMjBweDsKICAgICAgICBtYXgtd2lkdGg6IDIwcHg7CiAgICAgICAgcGFkZGluZzogMDsKICAgICAgfQoKICAgICAgLnRvZ2dsZS1sZWdlbmQtdGV4dCB7CiAgICAgICAgZm9udC1zaXplOiB2YXIoLS10Yi1ncmFwaC1jb250cm9scy1zdWJ0aXRsZS1mb250LXNpemUpOwogICAgICB9CgogICAgICBwYXBlci1yYWRpby1idXR0b24gewogICAgICAgIGRpc3BsYXk6IGJsb2NrOwogICAgICAgIHBhZGRpbmc6IDVweDsKICAgICAgfQogICAgICBzdmcuaWNvbiwKICAgICAgdGYtZ3JhcGgtaWNvbiB7CiAgICAgICAgd2lkdGg6IDYwcHg7CiAgICAgICAgaGVpZ2h0OiAxOHB4OwogICAgICB9CiAgICAgIC5kb21haW5WYWx1ZXMgewogICAgICAgIG1hcmdpbi1ib3R0b206IDEwcHg7CiAgICAgICAgd2lkdGg6IDE2NXB4OwogICAgICB9CiAgICAgIC5kb21haW5TdGFydCB7CiAgICAgICAgZmxvYXQ6IGxlZnQ7CiAgICAgIH0KICAgICAgLmRvbWFpbkVuZCB7CiAgICAgICAgZmxvYXQ6IHJpZ2h0OwogICAgICB9CiAgICAgIC5jb2xvckJveCB7CiAgICAgICAgd2lkdGg6IDIwcHg7CiAgICAgIH0KCiAgICAgIC5pbWFnZS1pY29uIHsKICAgICAgICB3aWR0aDogMjRweDsKICAgICAgICBoZWlnaHQ6IDI0cHg7CiAgICAgIH0KCiAgICAgIC5oZWxwLWljb24gewogICAgICAgIGhlaWdodDogMTVweDsKICAgICAgICBtYXJnaW46IDA7CiAgICAgICAgcGFkZGluZzogMDsKICAgICAgfQoKICAgICAgLmdyYXkgewogICAgICAgIGNvbG9yOiAjNjY2OwogICAgICB9CgogICAgICAudGl0bGUgewogICAgICAgIGZvbnQtc2l6ZTogdmFyKC0tdGItZ3JhcGgtY29udHJvbHMtdGl0bGUtZm9udC1zaXplKTsKICAgICAgICBtYXJnaW46IDhweCA1cHggOHB4IDA7CiAgICAgICAgY29sb3I6IGJsYWNrOwogICAgICB9CiAgICAgIC50aXRsZSBzbWFsbCB7CiAgICAgICAgZm9udC13ZWlnaHQ6IG5vcm1hbDsKICAgICAgfQogICAgICAuZGV2aWNlTGlzdCwKICAgICAgLnhsYUNsdXN0ZXJMaXN0IHsKICAgICAgICBtYXgtaGVpZ2h0OiAyMDBweDsKICAgICAgICBvdmVyZmxvdy15OiBhdXRvOwogICAgICB9CgogICAgICAjZmlsZSB7CiAgICAgICAgcGFkZGluZzogOHB4IDA7CiAgICAgIH0KCiAgICAgIC5jb2xvci1sZWdlbmQtcm93IHsKICAgICAgICBhbGlnbi1pdGVtczogY2VudGVyOwogICAgICAgIGNsZWFyOiBib3RoOwogICAgICAgIGRpc3BsYXk6IGZsZXg7CiAgICAgICAgaGVpZ2h0OiAyMHB4OwogICAgICAgIG1hcmdpbi10b3A6IDVweDsKICAgICAgfQoKICAgICAgLmNvbG9yLWxlZ2VuZC1yb3cgLmxhYmVsLAogICAgICAuY29sb3ItbGVnZW5kLXJvdyBzdmcsCiAgICAgIC5jb2xvci1sZWdlbmQtcm93IHRmLWdyYXBoLWljb24gewogICAgICAgIGZsZXg6IDAgMCA0MHB4OwogICAgICAgIG1hcmdpbi1yaWdodDogMjBweDsKICAgICAgfQoKICAgICAgLmRldmljZXMtY2hlY2tib3ggaW5wdXQgewogICAgICAgIHRleHQtYWxpZ246IGxlZnQ7CiAgICAgICAgdmVydGljYWwtYWxpZ246IG1pZGRsZTsKICAgICAgfQoKICAgICAgLmNvbnRyb2wtaG9sZGVyIC5pY29uLWJ1dHRvbiB7CiAgICAgICAgZm9udC1zaXplOiB2YXIoLS10Yi1ncmFwaC1jb250cm9scy1zdWJ0aXRsZS1mb250LXNpemUpOwogICAgICAgIG1hcmdpbjogMCAtNXB4OwogICAgICAgIHBhZGRpbmc6IDVweDsKICAgICAgICBkaXNwbGF5OiBmbGV4OwogICAgICAgIGp1c3RpZnktY29udGVudDogZmxleC1zdGFydDsKICAgICAgICBjb2xvcjogdmFyKC0tdGItZ3JhcGgtY29udHJvbHMtdGV4dC1jb2xvcik7CiAgICAgIH0KCiAgICAgIC5idXR0b24tdGV4dCB7CiAgICAgICAgcGFkZGluZy1sZWZ0OiAyMHB4OwogICAgICAgIHRleHQtdHJhbnNmb3JtOiBub25lOwogICAgICB9CgogICAgICAudXBsb2FkLWJ1dHRvbiB7CiAgICAgICAgd2lkdGg6IDE2NXB4OwogICAgICAgIGhlaWdodDogMjVweDsKICAgICAgICB0ZXh0LXRyYW5zZm9ybTogbm9uZTsKICAgICAgICBtYXJnaW4tdG9wOiA0cHg7CiAgICAgIH0KCiAgICAgIC5idXR0b24taWNvbiB7CiAgICAgICAgd2lkdGg6IDI2cHg7CiAgICAgICAgaGVpZ2h0OiAyNnB4OwogICAgICAgIGNvbG9yOiB2YXIoLS1wYXBlci1vcmFuZ2UtNTAwKTsKICAgICAgfQoKICAgICAgLmhpZGRlbi1pbnB1dCB7CiAgICAgICAgZGlzcGxheTogbm9uZTsKICAgICAgfQoKICAgICAgLmFsbGNvbnRyb2xzIC5jb250cm9sLWhvbGRlciB7CiAgICAgICAgY2xlYXI6IGJvdGg7CiAgICAgICAgZGlzcGxheTogZmxleDsKICAgICAgICBqdXN0aWZ5LWNvbnRlbnQ6IHNwYWNlLWJldHdlZW47CiAgICAgIH0KCiAgICAgIC5hbGxjb250cm9scyAuY29udHJvbC1ob2xkZXIuY29udHJvbC1vcHRpb25zIHsKICAgICAgICBwYWRkaW5nOiAwIDAgMTVweCAxNXB4OwogICAgICAgIGZsZXgtZGlyZWN0aW9uOiBjb2x1bW47CiAgICAgIH0KCiAgICAgIC5hbGxjb250cm9scyAuY29udHJvbC1ob2xkZXIgcGFwZXItdG9nZ2xlLWJ1dHRvbiB7CiAgICAgICAgbWFyZ2luLWJvdHRvbTogNXB4OwogICAgICB9CgogICAgICBzcGFuLmNvdW50ZXIgewogICAgICAgIGZvbnQtc2l6ZTogdmFyKC0tdGItZ3JhcGgtY29udHJvbHMtc3VidGl0bGUtZm9udC1zaXplKTsKICAgICAgICBjb2xvcjogZ3JheTsKICAgICAgICBtYXJnaW4tbGVmdDogNHB4OwogICAgICB9CgogICAgICAucnVucy1yb3cgLnRpdGxlLAogICAgICAudGFncy1yb3cgLnRpdGxlIHsKICAgICAgICBkaXNwbGF5OiBmbGV4OwogICAgICAgIGFsaWduLWl0ZW1zOiBiYXNlbGluZTsKICAgICAgfQoKICAgICAgLnJ1bnMtcm93IHBhcGVyLWl0ZW0sCiAgICAgIC50YWdzLXJvdyBwYXBlci1pdGVtIHsKICAgICAgICAtLXBhcGVyLWl0ZW06IHsKICAgICAgICAgIHdoaXRlLXNwYWNlOiBub3dyYXA7CiAgICAgICAgfQogICAgICB9CgogICAgICB0YWJsZS5jb250cm9sLWhvbGRlciB7CiAgICAgICAgYm9yZGVyOiAwOwogICAgICAgIGJvcmRlci1jb2xsYXBzZTogY29sbGFwc2U7CiAgICAgIH0KCiAgICAgIHRhYmxlLnRmLWdyYXBoLWNvbnRyb2xzIHRkLmlucHV0LWVsZW1lbnQtdGFibGUtZGF0YSB7CiAgICAgICAgcGFkZGluZzogMCAwIDAgMjBweDsKICAgICAgfQoKICAgICAgLnNwYWNlciB7CiAgICAgICAgZmxleC1ncm93OiAxOwogICAgICB9CgogICAgICAuY29sb3ItdGV4dCB7CiAgICAgICAgb3ZlcmZsb3c6IGhpZGRlbjsKICAgICAgfQoKICAgICAgLmNvbG9yLXRleHQuZ3JhZGllbnQtY29udGFpbmVyIHsKICAgICAgICBtYXJnaW46IDAgNXB4OwogICAgICB9CgogICAgICAvKiogT3ZlcnJpZGUgaW5saW5lIHN0eWxlcyB0aGF0IHN1cHByZXNzIHBvaW50ZXIgZXZlbnRzIGZvciBkaXNhYmxlZCBidXR0b25zLiBPdGhlcndpc2UsIHRoZSAqLwogICAgICAvKiAgdG9vbHRpcHMgZG8gbm90IGFwcGVhci4gKi8KICAgICAgcGFwZXItcmFkaW8tZ3JvdXAgcGFwZXItcmFkaW8tYnV0dG9uIHsKICAgICAgICBwb2ludGVyLWV2ZW50czogYXV0byAhaW1wb3J0YW50OwogICAgICB9CgogICAgICAubGVnZW5kLWNsYXJpZmllciB7CiAgICAgICAgY29sb3I6ICMyNjYyMzY7CiAgICAgICAgY3Vyc29yOiBoZWxwOwogICAgICAgIGRpc3BsYXk6IGlubGluZS1ibG9jazsKICAgICAgICB0ZXh0LWRlY29yYXRpb246IHVuZGVybGluZTsKICAgICAgfQoKICAgICAgLmxlZ2VuZC1jbGFyaWZpZXIgcGFwZXItdG9vbHRpcCB7CiAgICAgICAgd2lkdGg6IDE1MHB4OwogICAgICB9CgogICAgICAvKiogT3RoZXJ3aXNlLCBwb2x5bWVyIFVJIGNvbnRyb2xzIGFwcGVhciBhdG9wIG5vZGUgc2VhcmNoLiAqLwogICAgICB0Zi1ncmFwaC1ub2RlLXNlYXJjaCB7CiAgICAgICAgei1pbmRleDogMTsKICAgICAgICB3aWR0aDogMTAwJTsKICAgICAgfQoKICAgICAgcGFwZXItZHJvcGRvd24tbWVudSB7CiAgICAgICAgZmxleC1ncm93OiAxOwogICAgICB9CiAgICA8L3N0eWxlPgoKICAgIDxkaXYgY2xhc3M9ImFsbGNvbnRyb2xzIj4KICAgICAgPGRpdiBjbGFzcz0iY29udHJvbC1ob2xkZXIiPgogICAgICAgIDx0Zi1ncmFwaC1ub2RlLXNlYXJjaAogICAgICAgICAgc2VsZWN0ZWQtbm9kZT0ie3tzZWxlY3RlZE5vZGV9fSIKICAgICAgICAgIHJlbmRlci1oaWVyYXJjaHk9IltbcmVuZGVySGllcmFyY2h5XV0iCiAgICAgICAgPjwvdGYtZ3JhcGgtbm9kZS1zZWFyY2g+CiAgICAgIDwvZGl2PgogICAgICA8ZGl2IGNsYXNzPSJjb250cm9sLWhvbGRlciI+CiAgICAgICAgPHBhcGVyLWJ1dHRvbiBjbGFzcz0iaWNvbi1idXR0b24iIG9uLXRhcD0iX2ZpdCIgYWx0PSJGaXQgdG8gc2NyZWVuIj4KICAgICAgICAgIDxpcm9uLWljb24gaWNvbj0iYXNwZWN0LXJhdGlvIiBjbGFzcz0iYnV0dG9uLWljb24iPjwvaXJvbi1pY29uPgogICAgICAgICAgPHNwYW4gY2xhc3M9ImJ1dHRvbi10ZXh0Ij5GaXQgdG8gc2NyZWVuPC9zcGFuPgogICAgICAgIDwvcGFwZXItYnV0dG9uPgogICAgICA8L2Rpdj4KICAgICAgPGRpdiBjbGFzcz0iY29udHJvbC1ob2xkZXIiPgogICAgICAgIDxwYXBlci1idXR0b24KICAgICAgICAgIGNsYXNzPSJpY29uLWJ1dHRvbiIKICAgICAgICAgIG9uLWNsaWNrPSJkb3dubG9hZCIKICAgICAgICAgIGFsdD0iRG93bmxvYWQgUE5HIgogICAgICAgID4KICAgICAgICAgIDxpcm9uLWljb24gaWNvbj0iZmlsZS1kb3dubG9hZCIgY2xhc3M9ImJ1dHRvbi1pY29uIj48L2lyb24taWNvbj4KICAgICAgICAgIDxzcGFuIGNsYXNzPSJidXR0b24tdGV4dCI+RG93bmxvYWQgUE5HPC9zcGFuPgogICAgICAgIDwvcGFwZXItYnV0dG9uPgogICAgICA8L2Rpdj4KICAgICAgPHRlbXBsYXRlIGlzPSJkb20taWYiIGlmPSJbW3Nob3dVcGxvYWRCdXR0b25dXSI+CiAgICAgICAgPGRpdiBjbGFzcz0iY29udHJvbC1ob2xkZXIiPgogICAgICAgICAgPHBhcGVyLWJ1dHRvbgogICAgICAgICAgICBjbGFzcz0iaWNvbi1idXR0b24iCiAgICAgICAgICAgIG9uLWNsaWNrPSJfZ2V0RmlsZSIKICAgICAgICAgICAgYWx0PSJVcGxvYWQgZmlsZSIKICAgICAgICAgICAgdGl0bGU9IlVwbG9hZCBhIHBidHh0IGZpbGUgdG8gdmlldyBhIGdyYXBoIGZyb20gdGhlIGxvY2FsIGZpbGVzeXN0ZW0iCiAgICAgICAgICA+CiAgICAgICAgICAgIDxpcm9uLWljb24gaWNvbj0iZmlsZS11cGxvYWQiIGNsYXNzPSJidXR0b24taWNvbiI+PC9pcm9uLWljb24+CiAgICAgICAgICAgIDxzcGFuIGNsYXNzPSJidXR0b24tdGV4dCI+VXBsb2FkIGZpbGU8L3NwYW4+CiAgICAgICAgICA8L3BhcGVyLWJ1dHRvbj4KCiAgICAgICAgICA8ZGl2IGNsYXNzPSJoaWRkZW4taW5wdXQiPgogICAgICAgICAgICA8aW5wdXQKICAgICAgICAgICAgICB0eXBlPSJmaWxlIgogICAgICAgICAgICAgIGlkPSJmaWxlIgogICAgICAgICAgICAgIG5hbWU9ImZpbGUiCiAgICAgICAgICAgICAgb24tY2hhbmdlPSJfdXBkYXRlRmlsZUlucHV0IgogICAgICAgICAgICAgIGFjY2VwdD0iLnBidHh0IgogICAgICAgICAgICAvPgogICAgICAgICAgPC9kaXY+CiAgICAgICAgPC9kaXY+CiAgICAgIDwvdGVtcGxhdGU+CiAgICAgIDxkaXYgY2xhc3M9ImNvbnRyb2wtaG9sZGVyIHJ1bnMtcm93Ij4KICAgICAgICA8ZGl2IGNsYXNzPSJ0aXRsZSI+CiAgICAgICAgICBSdW4gPHNwYW4gY2xhc3M9ImNvdW50ZXIiPihbW2RhdGFzZXRzLmxlbmd0aF1dKTwvc3Bhbj4KICAgICAgICA8L2Rpdj4KICAgICAgICA8cGFwZXItZHJvcGRvd24tbWVudQogICAgICAgICAgbm8tbGFiZWwtZmxvYXQKICAgICAgICAgIG5vLWFuaW1hdGlvbnMKICAgICAgICAgIG5vaW5rCiAgICAgICAgICBob3Jpem9udGFsLWFsaWduPSJsZWZ0IgogICAgICAgICAgY2xhc3M9InJ1bi1kcm9wZG93biIKICAgICAgICA+CiAgICAgICAgICA8cGFwZXItbGlzdGJveAogICAgICAgICAgICBjbGFzcz0iZHJvcGRvd24tY29udGVudCIKICAgICAgICAgICAgc2VsZWN0ZWQ9Int7X3NlbGVjdGVkUnVuSW5kZXh9fSIKICAgICAgICAgICAgc2xvdD0iZHJvcGRvd24tY29udGVudCIKICAgICAgICAgID4KICAgICAgICAgICAgPHRlbXBsYXRlIGlzPSJkb20tcmVwZWF0IiBpdGVtcz0iW1tkYXRhc2V0c11dIj4KICAgICAgICAgICAgICA8cGFwZXItaXRlbT5bW2l0ZW0ubmFtZV1dPC9wYXBlci1pdGVtPgogICAgICAgICAgICA8L3RlbXBsYXRlPgogICAgICAgICAgPC9wYXBlci1saXN0Ym94PgogICAgICAgIDwvcGFwZXItZHJvcGRvd24tbWVudT4KICAgICAgPC9kaXY+CiAgICAgIDx0ZW1wbGF0ZSBpcz0iZG9tLWlmIiBpZj0iW1tzaG93U2Vzc2lvblJ1bnNEcm9wZG93bl1dIj4KICAgICAgICA8ZGl2IGNsYXNzPSJjb250cm9sLWhvbGRlciB0YWdzLXJvdyI+CiAgICAgICAgICA8ZGl2IGNsYXNzPSJ0aXRsZSI+CiAgICAgICAgICAgIFRhZwogICAgICAgICAgICA8c3BhbiBjbGFzcz0iY291bnRlciIKICAgICAgICAgICAgICA+KFtbX251bVRhZ3MoZGF0YXNldHMsIF9zZWxlY3RlZFJ1bkluZGV4KV1dKTwvc3BhbgogICAgICAgICAgICA+CiAgICAgICAgICA8L2Rpdj4KICAgICAgICAgIDxwYXBlci1kcm9wZG93bi1tZW51CiAgICAgICAgICAgIG5vLWxhYmVsLWZsb2F0CiAgICAgICAgICAgIG5vLWFuaW1hdGlvbnMKICAgICAgICAgICAgaG9yaXpvbnRhbC1hbGlnbj0ibGVmdCIKICAgICAgICAgICAgbm9pbmsKICAgICAgICAgICAgY2xhc3M9InJ1bi1kcm9wZG93biIKICAgICAgICAgID4KICAgICAgICAgICAgPHBhcGVyLWxpc3Rib3gKICAgICAgICAgICAgICBjbGFzcz0iZHJvcGRvd24tY29udGVudCIKICAgICAgICAgICAgICBzZWxlY3RlZD0ie3tfc2VsZWN0ZWRUYWdJbmRleH19IgogICAgICAgICAgICAgIHNsb3Q9ImRyb3Bkb3duLWNvbnRlbnQiCiAgICAgICAgICAgID4KICAgICAgICAgICAgICA8dGVtcGxhdGUKICAgICAgICAgICAgICAgIGlzPSJkb20tcmVwZWF0IgogICAgICAgICAgICAgICAgaXRlbXM9IltbX2dldFRhZ3MoZGF0YXNldHMsIF9zZWxlY3RlZFJ1bkluZGV4KV1dIgogICAgICAgICAgICAgID4KICAgICAgICAgICAgICAgIDxwYXBlci1pdGVtPltbaXRlbS5kaXNwbGF5TmFtZV1dPC9wYXBlci1pdGVtPgogICAgICAgICAgICAgIDwvdGVtcGxhdGU+CiAgICAgICAgICAgIDwvcGFwZXItbGlzdGJveD4KICAgICAgICAgIDwvcGFwZXItZHJvcGRvd24tbWVudT4KICAgICAgICA8L2Rpdj4KICAgICAgPC90ZW1wbGF0ZT4KICAgICAgPGRpdiBjbGFzcz0idGl0bGUiPkdyYXBoIHR5cGU8L2Rpdj4KICAgICAgPGRpdiBjbGFzcz0iY29udHJvbC1ob2xkZXIgY29udHJvbC1vcHRpb25zIj4KICAgICAgICA8cGFwZXItcmFkaW8tZ3JvdXAKICAgICAgICAgIHNlbGVjdGVkPSJ7e19zZWxlY3RlZEdyYXBoVHlwZX19IgogICAgICAgICAgb24tcGFwZXItcmFkaW8tZ3JvdXAtY2hhbmdlZD0iX29uR3JhcGhUeXBlQ2hhbmdlZEJ5VXNlckdlc3R1cmUiCiAgICAgICAgPgogICAgICAgICAgPCEtLSBOb3RlIHRoYXQgdGhlIG5hbWUgaGFzIHRvIG1hdGNoIHRoYXQgb2YgdGZfZ3JhcGhfY29tbW9uLlNlbGVjdGlvblR5cGUuIC0tPgogICAgICAgICAgPHBhcGVyLXJhZGlvLWJ1dHRvbgogICAgICAgICAgICBuYW1lPSJvcF9ncmFwaCIKICAgICAgICAgICAgZGlzYWJsZWQ9IltbX2dldFNlbGVjdGlvbk9wR3JhcGhEaXNhYmxlZChkYXRhc2V0cywgX3NlbGVjdGVkUnVuSW5kZXgsIF9zZWxlY3RlZFRhZ0luZGV4KV1dIgogICAgICAgICAgICA+T3AgZ3JhcGg8L3BhcGVyLXJhZGlvLWJ1dHRvbgogICAgICAgICAgPgogICAgICAgICAgPHBhcGVyLXJhZGlvLWJ1dHRvbgogICAgICAgICAgICBuYW1lPSJjb25jZXB0dWFsX2dyYXBoIgogICAgICAgICAgICBkaXNhYmxlZD0iW1tfZ2V0U2VsZWN0aW9uQ29uY2VwdHVhbEdyYXBoRGlzYWJsZWQoZGF0YXNldHMsIF9zZWxlY3RlZFJ1bkluZGV4LCBfc2VsZWN0ZWRUYWdJbmRleCldXSIKICAgICAgICAgICAgPkNvbmNlcHR1YWwgZ3JhcGg8L3BhcGVyLXJhZGlvLWJ1dHRvbgogICAgICAgICAgPgogICAgICAgICAgPHBhcGVyLXJhZGlvLWJ1dHRvbgogICAgICAgICAgICBuYW1lPSJwcm9maWxlIgogICAgICAgICAgICBkaXNhYmxlZD0iW1tfZ2V0U2VsZWN0aW9uUHJvZmlsZURpc2FibGVkKGRhdGFzZXRzLCBfc2VsZWN0ZWRSdW5JbmRleCwgX3NlbGVjdGVkVGFnSW5kZXgpXV0iCiAgICAgICAgICAgID5Qcm9maWxlPC9wYXBlci1yYWRpby1idXR0b24KICAgICAgICAgID4KICAgICAgICA8L3BhcGVyLXJhZGlvLWdyb3VwPgogICAgICA8L2Rpdj4KICAgICAgPGRpdiBjbGFzcz0idGl0bGUiPk5vZGUgb3B0aW9uczwvZGl2PgogICAgICA8ZGl2IGNsYXNzPSJjb250cm9sLWhvbGRlciBjb250cm9sLW9wdGlvbnMiPgogICAgICAgIDxwYXBlci10b2dnbGUtYnV0dG9uCiAgICAgICAgICBjaGVja2VkPSJ7e3RyYWNlSW5wdXRzfX0iCiAgICAgICAgICBvbi1jaGFuZ2U9Il9vblRyYWNlSW5wdXRzQ2hhbmdlZEJ5VXNlckdlc3R1cmUiCiAgICAgICAgPgogICAgICAgICAgVHJhY2UgaW5wdXRzCiAgICAgICAgPC9wYXBlci10b2dnbGUtYnV0dG9uPgogICAgICAgIDxwYXBlci10b2dnbGUtYnV0dG9uIGNoZWNrZWQ9Int7YXV0b0V4dHJhY3ROb2Rlc319Ij4KICAgICAgICAgIEF1dG8tZXh0cmFjdCBoaWdoLWRlZ3JlZSBub2RlcwogICAgICAgIDwvcGFwZXItdG9nZ2xlLWJ1dHRvbj4KICAgICAgPC9kaXY+CiAgICAgIDx0ZW1wbGF0ZSBpcz0iZG9tLWlmIiBpZj0iW1toZWFsdGhQaWxsc0ZlYXR1cmVFbmFibGVkXV0iPgogICAgICAgIDxkaXYgY2xhc3M9ImNvbnRyb2wtaG9sZGVyIj4KICAgICAgICAgIDxwYXBlci10b2dnbGUtYnV0dG9uIGNoZWNrZWQ9Int7aGVhbHRoUGlsbHNUb2dnbGVkT259fSIKICAgICAgICAgICAgPlNob3cgaGVhbHRoIHBpbGxzPC9wYXBlci10b2dnbGUtYnV0dG9uCiAgICAgICAgICA+CiAgICAgICAgPC9kaXY+CiAgICAgIDwvdGVtcGxhdGU+CiAgICAgIDxkaXYgY2xhc3M9InRpdGxlIj5Db2xvciBieTwvZGl2PgogICAgICA8ZGl2IGNsYXNzPSJjb250cm9sLWhvbGRlciBjb250cm9sLW9wdGlvbnMiPgogICAgICAgIDxwYXBlci1yYWRpby1ncm91cAogICAgICAgICAgc2VsZWN0ZWQ9Int7Y29sb3JCeX19IgogICAgICAgICAgb24tcGFwZXItcmFkaW8tZ3JvdXAtY2hhbmdlZD0iX29uQ29sb3JCeUNoYW5nZWRCeVVzZXJHZXN0dXJlIgogICAgICAgID4KICAgICAgICAgIDxwYXBlci1yYWRpby1idXR0b24gbmFtZT0iW1tDb2xvckJ5Lk5PTkVdXSI+Tm9uZTwvcGFwZXItcmFkaW8tYnV0dG9uPgoKICAgICAgICAgIDxwYXBlci1yYWRpby1idXR0b24gbmFtZT0iW1tDb2xvckJ5LlNUUlVDVFVSRV1dIgogICAgICAgICAgICA+U3RydWN0dXJlPC9wYXBlci1yYWRpby1idXR0b24KICAgICAgICAgID4KCiAgICAgICAgICA8cGFwZXItcmFkaW8tYnV0dG9uIG5hbWU9IltbQ29sb3JCeS5ERVZJQ0VdXSIKICAgICAgICAgICAgPkRldmljZTwvcGFwZXItcmFkaW8tYnV0dG9uCiAgICAgICAgICA+CgogICAgICAgICAgPHBhcGVyLXJhZGlvLWJ1dHRvbgogICAgICAgICAgICBpZD0ieGxhLWNsdXN0ZXItcmFkaW8tYnV0dG9uIgogICAgICAgICAgICBuYW1lPSJbW0NvbG9yQnkuWExBX0NMVVNURVJdXSIKICAgICAgICAgICAgZGlzYWJsZWQ9IltbIV94bGFDbHVzdGVyc1Byb3ZpZGVkKHJlbmRlckhpZXJhcmNoeSldXSIKICAgICAgICAgID4KICAgICAgICAgICAgWExBIGNsdXN0ZXIKICAgICAgICAgIDwvcGFwZXItcmFkaW8tYnV0dG9uPgogICAgICAgICAgPHBhcGVyLXRvb2x0aXAKICAgICAgICAgICAgYW5pbWF0aW9uLWRlbGF5PSIwIgogICAgICAgICAgICBmb3I9InhsYS1jbHVzdGVyLXJhZGlvLWJ1dHRvbiIKICAgICAgICAgICAgcG9zaXRpb249InJpZ2h0IgogICAgICAgICAgICBvZmZzZXQ9IjAiCiAgICAgICAgICA+CiAgICAgICAgICAgIENvbG9yaW5nIGJ5IFhMQSBjbHVzdGVyIGlzIG9ubHkgZW5hYmxlZCBpZiBhdCBsZWFzdCAxIG9wIHNwZWNpZmllcwogICAgICAgICAgICBhbiBYTEEgY2x1c3Rlci4KICAgICAgICAgIDwvcGFwZXItdG9vbHRpcD4KCiAgICAgICAgICA8cGFwZXItcmFkaW8tYnV0dG9uCiAgICAgICAgICAgIGlkPSJjb21wdXRlLXRpbWUtcmFkaW8tYnV0dG9uIgogICAgICAgICAgICBuYW1lPSJbW0NvbG9yQnkuQ09NUFVURV9USU1FXV0iCiAgICAgICAgICAgIGRpc2FibGVkPSJbWyFzdGF0c11dIgogICAgICAgICAgPgogICAgICAgICAgICBDb21wdXRlIHRpbWUKICAgICAgICAgIDwvcGFwZXItcmFkaW8tYnV0dG9uPgogICAgICAgICAgPHBhcGVyLXRvb2x0aXAKICAgICAgICAgICAgYW5pbWF0aW9uLWRlbGF5PSIwIgogICAgICAgICAgICBmb3I9ImNvbXB1dGUtdGltZS1yYWRpby1idXR0b24iCiAgICAgICAgICAgIHBvc2l0aW9uPSJyaWdodCIKICAgICAgICAgICAgb2Zmc2V0PSIwIgogICAgICAgICAgPgogICAgICAgICAgICBDb2xvcmluZyBieSBjb21wdXRlIHRpbWUgaXMgb25seSBlbmFibGVkIGlmIHRoZSBSdW5NZXRhZGF0YSBwcm90byBpcwogICAgICAgICAgICBwYXNzZWQgdG8gdGhlIEZpbGVXcml0ZXIgd2hlbiBhIHNwZWNpZmljIHNlc3Npb24gaXMgcnVuLgogICAgICAgICAgPC9wYXBlci10b29sdGlwPgoKICAgICAgICAgIDxwYXBlci1yYWRpby1idXR0b24KICAgICAgICAgICAgaWQ9Im1lbW9yeS1yYWRpby1idXR0b24iCiAgICAgICAgICAgIG5hbWU9IltbQ29sb3JCeS5NRU1PUlldXSIKICAgICAgICAgICAgZGlzYWJsZWQ9IltbIXN0YXRzXV0iCiAgICAgICAgICA+CiAgICAgICAgICAgIE1lbW9yeQogICAgICAgICAgPC9wYXBlci1yYWRpby1idXR0b24+CiAgICAgICAgICA8cGFwZXItdG9vbHRpcAogICAgICAgICAgICBhbmltYXRpb24tZGVsYXk9IjAiCiAgICAgICAgICAgIGZvcj0ibWVtb3J5LXJhZGlvLWJ1dHRvbiIKICAgICAgICAgICAgcG9zaXRpb249InJpZ2h0IgogICAgICAgICAgICBvZmZzZXQ9IjAiCiAgICAgICAgICA+CiAgICAgICAgICAgIENvbG9yaW5nIGJ5IG1lbW9yeSBpcyBvbmx5IGVuYWJsZWQgaWYgdGhlIFJ1bk1ldGFkYXRhIHByb3RvIGlzCiAgICAgICAgICAgIHBhc3NlZCB0byB0aGUgRmlsZVdyaXRlciB3aGVuIGEgc3BlY2lmaWMgc2Vzc2lvbiBpcyBydW4uCiAgICAgICAgICA8L3BhcGVyLXRvb2x0aXA+CgogICAgICAgICAgPHBhcGVyLXJhZGlvLWJ1dHRvbgogICAgICAgICAgICBpZD0idHB1LWNvbXBhdGliaWxpdHktcmFkaW8tYnV0dG9uIgogICAgICAgICAgICBuYW1lPSJbW0NvbG9yQnkuT1BfQ09NUEFUSUJJTElUWV1dIgogICAgICAgICAgPgogICAgICAgICAgICBUUFUgY29tcGF0aWJpbGl0eQogICAgICAgICAgPC9wYXBlci1yYWRpby1idXR0b24+CiAgICAgICAgICA8cGFwZXItdG9vbHRpcAogICAgICAgICAgICBhbmltYXRpb24tZGVsYXk9IjAiCiAgICAgICAgICAgIGZvcj0idHB1LWNvbXBhdGliaWxpdHktcmFkaW8tYnV0dG9uIgogICAgICAgICAgICBwb3NpdGlvbj0icmlnaHQiCiAgICAgICAgICAgIG9mZnNldD0iMCIKICAgICAgICAgID4KICAgICAgICAgICAgQ29sb3JpbmcgYnkgd2hldGhlciBhbiBvcGVyYXRpb24gaXMgY29tcGF0aWJsZSBmb3IgdGhlIFRQVSBkZXZpY2UuCiAgICAgICAgICA8L3BhcGVyLXRvb2x0aXA+CiAgICAgICAgPC9wYXBlci1yYWRpby1ncm91cD4KICAgICAgICA8c3BhbiBjbGFzcz0ic3BhY2VyIj48L3NwYW4+CiAgICAgIDwvZGl2PgogICAgPC9kaXY+CiAgICA8ZGl2IGNsYXNzPSJsZWdlbmQtaG9sZGVyIj4KICAgICAgPGJ1dHRvbiBjbGFzcz0ibGVnZW5kLXRvb2xiYXIiIG9uLWNsaWNrPSJfdG9nZ2xlTGVnZW5kT3BlbiI+CiAgICAgICAgPHNwYW4gY2xhc3M9InRvZ2dsZS1sZWdlbmQtdGV4dCI+TGVnZW5kPC9zcGFuPgogICAgICAgIDxpcm9uLWljb24KICAgICAgICAgIGljb249IltbX2dldFRvZ2dsZUxlZ2VuZEljb24oX2xlZ2VuZE9wZW5lZCldXSIKICAgICAgICAgIGNsYXNzPSJ0b2dnbGUtbGVnZW5kLWJ1dHRvbiIKICAgICAgICA+CiAgICAgICAgPC9pcm9uLWljb24+CiAgICAgIDwvYnV0dG9uPgogICAgICA8aXJvbi1jb2xsYXBzZSBvcGVuZWQ9IltbX2xlZ2VuZE9wZW5lZF1dIiBjbGFzcz0ibGVnZW5kLWNvbnRlbnQiPgogICAgICAgIDwhLS0gQ29sb3ItbW9kZS1zcGVjaWZpYyBsZWdlbmQgaXRlbXMgLS0+CiAgICAgICAgPGRpdj4KICAgICAgICAgIDx0ZW1wbGF0ZSBpcz0iZG9tLWlmIiBpZj0iW1tfaXNHcmFkaWVudENvbG9yaW5nKHN0YXRzLCBjb2xvckJ5KV1dIj4KICAgICAgICAgICAgPHN2ZyB3aWR0aD0iMTQwIiBoZWlnaHQ9IjIwIiBjbGFzcz0iY29sb3ItdGV4dCBncmFkaWVudC1jb250YWluZXIiPgogICAgICAgICAgICAgIDxkZWZzPgogICAgICAgICAgICAgICAgPGxpbmVhckdyYWRpZW50CiAgICAgICAgICAgICAgICAgIGlkPSJsaW5lYXJHcmFkaWVudCIKICAgICAgICAgICAgICAgICAgeDE9IjAlIgogICAgICAgICAgICAgICAgICB5MT0iMCUiCiAgICAgICAgICAgICAgICAgIHgyPSIxMDAlIgogICAgICAgICAgICAgICAgICB5Mj0iMCUiCiAgICAgICAgICAgICAgICA+CiAgICAgICAgICAgICAgICAgIDxzdG9wCiAgICAgICAgICAgICAgICAgICAgY2xhc3M9InN0YXJ0IgogICAgICAgICAgICAgICAgICAgIG9mZnNldD0iMCUiCiAgICAgICAgICAgICAgICAgICAgc3RvcC1jb2xvciQ9IltbX2N1cnJlbnRHcmFkaWVudFBhcmFtcy5zdGFydENvbG9yXV0iCiAgICAgICAgICAgICAgICAgID48L3N0b3A+CiAgICAgICAgICAgICAgICAgIDxzdG9wCiAgICAgICAgICAgICAgICAgICAgY2xhc3M9ImVuZCIKICAgICAgICAgICAgICAgICAgICBvZmZzZXQ9IjEwMCUiCiAgICAgICAgICAgICAgICAgICAgc3RvcC1jb2xvciQ9IltbX2N1cnJlbnRHcmFkaWVudFBhcmFtcy5lbmRDb2xvcl1dIgogICAgICAgICAgICAgICAgICA+PC9zdG9wPgogICAgICAgICAgICAgICAgPC9saW5lYXJHcmFkaWVudD4KICAgICAgICAgICAgICA8L2RlZnM+CiAgICAgICAgICAgICAgPHJlY3QKICAgICAgICAgICAgICAgIHg9IjAiCiAgICAgICAgICAgICAgICB5PSIwIgogICAgICAgICAgICAgICAgd2lkdGg9IjEzNSIKICAgICAgICAgICAgICAgIGhlaWdodD0iMjAiCiAgICAgICAgICAgICAgICBmaWxsPSJ1cmwoI2xpbmVhckdyYWRpZW50KSIKICAgICAgICAgICAgICAgIHN0cm9rZT0iYmxhY2siCiAgICAgICAgICAgICAgPjwvcmVjdD4KICAgICAgICAgICAgPC9zdmc+CiAgICAgICAgICAgIDxkaXYgY2xhc3M9ImRvbWFpblZhbHVlcyBjb2xvci10ZXh0Ij4KICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJkb21haW5TdGFydCI+W1tfY3VycmVudEdyYWRpZW50UGFyYW1zLm1pblZhbHVlXV08L2Rpdj4KICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJkb21haW5FbmQiPltbX2N1cnJlbnRHcmFkaWVudFBhcmFtcy5tYXhWYWx1ZV1dPC9kaXY+CiAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICA8YnIgc3R5bGU9ImNsZWFyOiBib3RoIiAvPgogICAgICAgICAgICA8ZGl2PkRldmljZXMgaW5jbHVkZWQgaW4gc3RhdHM6PC9kaXY+CiAgICAgICAgICAgIDxkaXYgY2xhc3M9ImRldmljZUxpc3QiPgogICAgICAgICAgICAgIDx0ZW1wbGF0ZSBpcz0iZG9tLXJlcGVhdCIgaXRlbXM9IltbX2N1cnJlbnREZXZpY2VzXV0iPgogICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iY29sb3ItbGVnZW5kLXJvdyBkZXZpY2VzLWNoZWNrYm94Ij4KICAgICAgICAgICAgICAgICAgPHNwYW4KICAgICAgICAgICAgICAgICAgICA+PGlucHV0CiAgICAgICAgICAgICAgICAgICAgICB0eXBlPSJjaGVja2JveCIKICAgICAgICAgICAgICAgICAgICAgIHZhbHVlJD0iW1tpdGVtLmRldmljZV1dIgogICAgICAgICAgICAgICAgICAgICAgY2hlY2tlZCQ9IltbaXRlbS51c2VkXV0iCiAgICAgICAgICAgICAgICAgICAgICBvbi1jbGljaz0iX2RldmljZUNoZWNrYm94Q2xpY2tlZCIKICAgICAgICAgICAgICAgICAgLz48L3NwYW4+CiAgICAgICAgICAgICAgICAgIDxzcGFuPltbaXRlbS5zdWZmaXhdXTwvc3Bhbj4KICAgICAgICAgICAgICAgICAgPHRlbXBsYXRlIGlzPSJkb20taWYiIGlmPSJbW2l0ZW0uaWdub3JlZE1zZ11dIj4KICAgICAgICAgICAgICAgICAgICA8cGFwZXItaWNvbi1idXR0b24KICAgICAgICAgICAgICAgICAgICAgIGljb249ImhlbHAiCiAgICAgICAgICAgICAgICAgICAgICBjbGFzcz0iaGVscC1pY29uIgogICAgICAgICAgICAgICAgICAgID48L3BhcGVyLWljb24tYnV0dG9uPgogICAgICAgICAgICAgICAgICAgIDxwYXBlci10b29sdGlwCiAgICAgICAgICAgICAgICAgICAgICBwb3NpdGlvbj0icmlnaHQiCiAgICAgICAgICAgICAgICAgICAgICBvZmZzZXQ9IjAiCiAgICAgICAgICAgICAgICAgICAgICBhbmltYXRpb24tZGVsYXk9IjAiCiAgICAgICAgICAgICAgICAgICAgICA+W1tpdGVtLmlnbm9yZWRNc2ddXTwvcGFwZXItdG9vbHRpcAogICAgICAgICAgICAgICAgICAgID4KICAgICAgICAgICAgICAgICAgPC90ZW1wbGF0ZT4KICAgICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICAgIDwvdGVtcGxhdGU+CiAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgPC90ZW1wbGF0ZT4KICAgICAgICAgIDx0ZW1wbGF0ZSBpcz0iZG9tLWlmIiBpZj0iW1tfZXF1YWxzKGNvbG9yQnksICdzdHJ1Y3R1cmUnKV1dIj4KICAgICAgICAgICAgPGRpdiBjbGFzcz0iY29sb3ItdGV4dCI+CiAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iY29sb3ItbGVnZW5kLXJvdyI+CiAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz0ibGFiZWwiPiBjb2xvcnMgPC9zcGFuPgogICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9ImNvbG9yLWxlZ2VuZC12YWx1ZSI+c2FtZSBzdWJzdHJ1Y3R1cmU8L3NwYW4+CiAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iY29sb3ItbGVnZW5kLXJvdyI+CiAgICAgICAgICAgICAgICA8dGYtZ3JhcGgtaWNvbgogICAgICAgICAgICAgICAgICB0eXBlPSJNRVRBIgogICAgICAgICAgICAgICAgICBoZWlnaHQ9IjE2IgogICAgICAgICAgICAgICAgICBmaWxsLW92ZXJyaWRlPSIjZWVlIgogICAgICAgICAgICAgICAgICBzdHJva2Utb3ZlcnJpZGU9IiNhNmE2YTYiCiAgICAgICAgICAgICAgICA+PC90Zi1ncmFwaC1pY29uPgogICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9ImNvbG9yLWxlZ2VuZC12YWx1ZSI+dW5pcXVlIHN1YnN0cnVjdHVyZTwvc3Bhbj4KICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICA8L3RlbXBsYXRlPgogICAgICAgICAgPHRlbXBsYXRlIGlzPSJkb20taWYiIGlmPSJbW19lcXVhbHMoY29sb3JCeSwgJ2RldmljZScpXV0iPgogICAgICAgICAgICA8ZGl2PgogICAgICAgICAgICAgIDx0ZW1wbGF0ZSBpcz0iZG9tLXJlcGVhdCIgaXRlbXM9IltbX2N1cnJlbnREZXZpY2VQYXJhbXNdXSI+CiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJjb2xvci1sZWdlbmQtcm93Ij4KICAgICAgICAgICAgICAgICAgPHRmLWdyYXBoLWljb24KICAgICAgICAgICAgICAgICAgICB0eXBlPSJNRVRBIgogICAgICAgICAgICAgICAgICAgIGhlaWdodD0iMTYiCiAgICAgICAgICAgICAgICAgICAgZmlsbC1vdmVycmlkZT0iW1tpdGVtLmNvbG9yXV0iCiAgICAgICAgICAgICAgICAgICAgc3Ryb2tlLW92ZXJyaWRlPSIjYTZhNmE2IgogICAgICAgICAgICAgICAgICA+PC90Zi1ncmFwaC1pY29uPgogICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz0iY29sb3ItbGVnZW5kLXZhbHVlIj5bW2l0ZW0uZGV2aWNlXV08L3NwYW4+CiAgICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgICA8L3RlbXBsYXRlPgogICAgICAgICAgICAgIDxkaXYgY2xhc3M9ImNvbG9yLWxlZ2VuZC1yb3ciPgogICAgICAgICAgICAgICAgPHRmLWdyYXBoLWljb24KICAgICAgICAgICAgICAgICAgdHlwZT0iTUVUQSIKICAgICAgICAgICAgICAgICAgaGVpZ2h0PSIxNiIKICAgICAgICAgICAgICAgICAgZmlsbC1vdmVycmlkZT0iI2VlZSIKICAgICAgICAgICAgICAgICAgc3Ryb2tlLW92ZXJyaWRlPSIjYTZhNmE2IgogICAgICAgICAgICAgICAgPjwvdGYtZ3JhcGgtaWNvbj4KICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPSJjb2xvci1sZWdlbmQtdmFsdWUiPnVua25vd24gZGV2aWNlPC9zcGFuPgogICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgIDwvdGVtcGxhdGU+CiAgICAgICAgICA8dGVtcGxhdGUgaXM9ImRvbS1pZiIgaWY9IltbX2VxdWFscyhjb2xvckJ5LCAneGxhX2NsdXN0ZXInKV1dIj4KICAgICAgICAgICAgPGRpdj4KICAgICAgICAgICAgICA8dGVtcGxhdGUgaXM9ImRvbS1yZXBlYXQiIGl0ZW1zPSJbW19jdXJyZW50WGxhQ2x1c3RlclBhcmFtc11dIj4KICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9ImNvbG9yLWxlZ2VuZC1yb3ciPgogICAgICAgICAgICAgICAgICA8c3ZnPgogICAgICAgICAgICAgICAgICAgIDx1c2UKICAgICAgICAgICAgICAgICAgICAgIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIgogICAgICAgICAgICAgICAgICAgICAgeGxpbms6aHJlZj0iI3VuZmlsbGVkLXJlY3QiCiAgICAgICAgICAgICAgICAgICAgICB4PSIwIgogICAgICAgICAgICAgICAgICAgICAgeT0iMCIKICAgICAgICAgICAgICAgICAgICAgIHN0eWxlPSJmaWxsOltbaXRlbS5jb2xvcl1dIgogICAgICAgICAgICAgICAgICAgID48L3VzZT4KICAgICAgICAgICAgICAgICAgPC9zdmc+CiAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPSJjb2xvci1sZWdlbmQtdmFsdWUiPltbaXRlbS54bGFfY2x1c3Rlcl1dPC9zcGFuPgogICAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgICAgPC90ZW1wbGF0ZT4KICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJjb2xvci1sZWdlbmQtcm93Ij4KICAgICAgICAgICAgICAgIDxzdmc+CiAgICAgICAgICAgICAgICAgIDx1c2UKICAgICAgICAgICAgICAgICAgICB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayIKICAgICAgICAgICAgICAgICAgICB4bGluazpocmVmPSIjZ3JleS1yZWN0IgogICAgICAgICAgICAgICAgICAgIHg9IjAiCiAgICAgICAgICAgICAgICAgICAgeT0iMCIKICAgICAgICAgICAgICAgICAgPjwvdXNlPgogICAgICAgICAgICAgICAgPC9zdmc+CiAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz0iY29sb3ItbGVnZW5kLXZhbHVlIj51bmtub3duIFhMQSBjbHVzdGVyPC9zcGFuPgogICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgIDwvdGVtcGxhdGU+CiAgICAgICAgICA8dGVtcGxhdGUgaXM9ImRvbS1pZiIgaWY9IltbX2VxdWFscyhjb2xvckJ5LCAnb3BfY29tcGF0aWJpbGl0eScpXV0iPgogICAgICAgICAgICA8ZGl2IGNsYXNzPSJjb2xvci10ZXh0Ij4KICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJjb2xvci1sZWdlbmQtcm93Ij4KICAgICAgICAgICAgICAgIDx0Zi1ncmFwaC1pY29uCiAgICAgICAgICAgICAgICAgIHR5cGU9Ik9QIgogICAgICAgICAgICAgICAgICBoZWlnaHQ9IjE2IgogICAgICAgICAgICAgICAgICBmaWxsLW92ZXJyaWRlPSIjMGY5ZDU4IgogICAgICAgICAgICAgICAgICBzdHJva2Utb3ZlcnJpZGU9IiNjY2MiCiAgICAgICAgICAgICAgICA+PC90Zi1ncmFwaC1pY29uPgogICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9ImNvbG9yLWxlZ2VuZC12YWx1ZSI+VmFsaWQgT3A8L3NwYW4+CiAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iY29sb3ItbGVnZW5kLXJvdyI+CiAgICAgICAgICAgICAgICA8dGYtZ3JhcGgtaWNvbgogICAgICAgICAgICAgICAgICB0eXBlPSJPUCIKICAgICAgICAgICAgICAgICAgaGVpZ2h0PSIxNiIKICAgICAgICAgICAgICAgICAgZmlsbC1vdmVycmlkZT0iI2RiNDQzNyIKICAgICAgICAgICAgICAgICAgc3Ryb2tlLW92ZXJyaWRlPSIjY2NjIgogICAgICAgICAgICAgICAgPjwvdGYtZ3JhcGgtaWNvbj4KICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPSJjb2xvci1sZWdlbmQtdmFsdWUiPkludmFsaWQgT3A8L3NwYW4+CiAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgPC90ZW1wbGF0ZT4KICAgICAgICAgIDx0ZW1wbGF0ZSBpcz0iZG9tLWlmIiBpZj0iW1tfc3RhdHNOb3ROdWxsKHN0YXRzKV1dIj4KICAgICAgICAgICAgPGRpdiBjbGFzcz0iY29sb3ItbGVnZW5kLXJvdyI+CiAgICAgICAgICAgICAgPHRmLWdyYXBoLWljb24gdHlwZT0iTUVUQSIgaGVpZ2h0PSIxNiIgZmFkZWQ+PC90Zi1ncmFwaC1pY29uPgogICAgICAgICAgICAgIDxzcGFuIGNsYXNzPSJjb2xvci1sZWdlbmQtdmFsdWUiPnVudXNlZCBzdWJzdHJ1Y3R1cmU8L3NwYW4+CiAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgPC90ZW1wbGF0ZT4KICAgICAgICA8L2Rpdj4KCiAgICAgICAgPCEtLSBDb21tb24gbGVnZW5kIGl0ZW1zIC0tPgogICAgICAgIDxkaXY+CiAgICAgICAgICA8dGFibGU+CiAgICAgICAgICAgIDx0Ym9keT4KICAgICAgICAgICAgICA8dHI+CiAgICAgICAgICAgICAgICA8dGQ+PC90ZD4KICAgICAgICAgICAgICAgIDx0ZD4oKiA9IGV4cGFuZGFibGUpPC90ZD4KICAgICAgICAgICAgICA8L3RyPgogICAgICAgICAgICAgIDx0cj4KICAgICAgICAgICAgICAgIDx0ZD4KICAgICAgICAgICAgICAgICAgPHRmLWdyYXBoLWljb24KICAgICAgICAgICAgICAgICAgICB0eXBlPSJNRVRBIgogICAgICAgICAgICAgICAgICAgIGhlaWdodD0iMTYiCiAgICAgICAgICAgICAgICAgICAgZmlsbC1vdmVycmlkZT0iI2Q5ZDlkOSIKICAgICAgICAgICAgICAgICAgICBzdHJva2Utb3ZlcnJpZGU9IiNjY2MiCiAgICAgICAgICAgICAgICAgID48L3RmLWdyYXBoLWljb24+CiAgICAgICAgICAgICAgICA8L3RkPgogICAgICAgICAgICAgICAgPHRkPgogICAgICAgICAgICAgICAgICBOYW1lc3BhY2U8c3BhbiBjbGFzcz0iZ3JheSI+Kjwvc3Bhbj4KICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0ibGVnZW5kLWNsYXJpZmllciI+CiAgICAgICAgICAgICAgICAgICAgPHNwYW4+Pzwvc3Bhbj4KICAgICAgICAgICAgICAgICAgICA8cGFwZXItdG9vbHRpcAogICAgICAgICAgICAgICAgICAgICAgYW5pbWF0aW9uLWRlbGF5PSIwIgogICAgICAgICAgICAgICAgICAgICAgcG9zaXRpb249InJpZ2h0IgogICAgICAgICAgICAgICAgICAgICAgb2Zmc2V0PSIwIgogICAgICAgICAgICAgICAgICAgID4KICAgICAgICAgICAgICAgICAgICAgIEVuY2Fwc3VsYXRlcyBhIHNldCBvZiBub2Rlcy4gTmFtZXNwYWNlIGlzIGhpZXJhcmNoaWNhbCBhbmQKICAgICAgICAgICAgICAgICAgICAgIGJhc2VkIG9uIHNjb3BlLgogICAgICAgICAgICAgICAgICAgIDwvcGFwZXItdG9vbHRpcD4KICAgICAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgICAgICA8L3RkPgogICAgICAgICAgICAgIDwvdHI+CiAgICAgICAgICAgICAgPHRyPgogICAgICAgICAgICAgICAgPHRkPgogICAgICAgICAgICAgICAgICA8dGYtZ3JhcGgtaWNvbiB0eXBlPSJPUCIgaGVpZ2h0PSIxNiI+PC90Zi1ncmFwaC1pY29uPgogICAgICAgICAgICAgICAgPC90ZD4KICAgICAgICAgICAgICAgIDx0ZD4KICAgICAgICAgICAgICAgICAgT3BOb2RlCiAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9ImxlZ2VuZC1jbGFyaWZpZXIiPgogICAgICAgICAgICAgICAgICAgIDxzcGFuPj88L3NwYW4+CiAgICAgICAgICAgICAgICAgICAgPHBhcGVyLXRvb2x0aXAKICAgICAgICAgICAgICAgICAgICAgIGFuaW1hdGlvbi1kZWxheT0iMCIKICAgICAgICAgICAgICAgICAgICAgIHBvc2l0aW9uPSJyaWdodCIKICAgICAgICAgICAgICAgICAgICAgIG9mZnNldD0iMCIKICAgICAgICAgICAgICAgICAgICA+CiAgICAgICAgICAgICAgICAgICAgICBOb2RlIHRoYXQgcGVyZm9ybXMgYW4gb3BlcmF0aW9uLiBUaGVzZSBub2RlcyBjYW5ub3QKICAgICAgICAgICAgICAgICAgICAgIGV4cGFuZC4KICAgICAgICAgICAgICAgICAgICA8L3BhcGVyLXRvb2x0aXA+CiAgICAgICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICAgICAgPC90ZD4KICAgICAgICAgICAgICA8L3RyPgogICAgICAgICAgICAgIDx0cj4KICAgICAgICAgICAgICAgIDx0ZD4KICAgICAgICAgICAgICAgICAgPHRmLWdyYXBoLWljb24gdHlwZT0iU0VSSUVTIiBoZWlnaHQ9IjE2Ij48L3RmLWdyYXBoLWljb24+CiAgICAgICAgICAgICAgICA8L3RkPgogICAgICAgICAgICAgICAgPHRkPgogICAgICAgICAgICAgICAgICBVbmNvbm5lY3RlZCBzZXJpZXM8c3BhbiBjbGFzcz0iZ3JheSI+Kjwvc3Bhbj4KICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0ibGVnZW5kLWNsYXJpZmllciI+CiAgICAgICAgICAgICAgICAgICAgPHNwYW4+Pzwvc3Bhbj4KICAgICAgICAgICAgICAgICAgICA8cGFwZXItdG9vbHRpcAogICAgICAgICAgICAgICAgICAgICAgYW5pbWF0aW9uLWRlbGF5PSIwIgogICAgICAgICAgICAgICAgICAgICAgcG9zaXRpb249InJpZ2h0IgogICAgICAgICAgICAgICAgICAgICAgb2Zmc2V0PSIwIgogICAgICAgICAgICAgICAgICAgID4KICAgICAgICAgICAgICAgICAgICAgIFNlcXVlbmNlIG9mIG51bWJlcmVkIG5vZGVzIHRoYXQgYXJlIG5vdCBjb25uZWN0ZWQgdG8gZWFjaAogICAgICAgICAgICAgICAgICAgICAgb3RoZXIuCiAgICAgICAgICAgICAgICAgICAgPC9wYXBlci10b29sdGlwPgogICAgICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgICAgIDwvdGQ+CiAgICAgICAgICAgICAgPC90cj4KICAgICAgICAgICAgICA8dHI+CiAgICAgICAgICAgICAgICA8dGQ+CiAgICAgICAgICAgICAgICAgIDx0Zi1ncmFwaC1pY29uCiAgICAgICAgICAgICAgICAgICAgdHlwZT0iU0VSSUVTIgogICAgICAgICAgICAgICAgICAgIGhlaWdodD0iMTYiCiAgICAgICAgICAgICAgICAgICAgdmVydGljYWwKICAgICAgICAgICAgICAgICAgPjwvdGYtZ3JhcGgtaWNvbj4KICAgICAgICAgICAgICAgIDwvdGQ+CiAgICAgICAgICAgICAgICA8dGQ+CiAgICAgICAgICAgICAgICAgIENvbm5lY3RlZCBzZXJpZXM8c3BhbiBjbGFzcz0iZ3JheSI+Kjwvc3Bhbj4KICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0ibGVnZW5kLWNsYXJpZmllciI+CiAgICAgICAgICAgICAgICAgICAgPHNwYW4+Pzwvc3Bhbj4KICAgICAgICAgICAgICAgICAgICA8cGFwZXItdG9vbHRpcAogICAgICAgICAgICAgICAgICAgICAgYW5pbWF0aW9uLWRlbGF5PSIwIgogICAgICAgICAgICAgICAgICAgICAgcG9zaXRpb249InJpZ2h0IgogICAgICAgICAgICAgICAgICAgICAgb2Zmc2V0PSIwIgogICAgICAgICAgICAgICAgICAgID4KICAgICAgICAgICAgICAgICAgICAgIFNlcXVlbmNlIG9mIG51bWJlcmVkIG5vZGVzIHRoYXQgYXJlIGNvbm5lY3RlZCB0byBlYWNoCiAgICAgICAgICAgICAgICAgICAgICBvdGhlci4KICAgICAgICAgICAgICAgICAgICA8L3BhcGVyLXRvb2x0aXA+CiAgICAgICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICAgICAgPC90ZD4KICAgICAgICAgICAgICA8L3RyPgogICAgICAgICAgICAgIDx0cj4KICAgICAgICAgICAgICAgIDx0ZD4KICAgICAgICAgICAgICAgICAgPHN2ZyBjbGFzcz0iaWNvbiI+CiAgICAgICAgICAgICAgICAgICAgPGNpcmNsZQogICAgICAgICAgICAgICAgICAgICAgZmlsbD0id2hpdGUiCiAgICAgICAgICAgICAgICAgICAgICBzdHJva2U9IiM4NDg0ODQiCiAgICAgICAgICAgICAgICAgICAgICBjeD0iMTAiCiAgICAgICAgICAgICAgICAgICAgICBjeT0iMTAiCiAgICAgICAgICAgICAgICAgICAgICByPSI1IgogICAgICAgICAgICAgICAgICAgID48L2NpcmNsZT4KICAgICAgICAgICAgICAgICAgPC9zdmc+CiAgICAgICAgICAgICAgICA8L3RkPgogICAgICAgICAgICAgICAgPHRkPgogICAgICAgICAgICAgICAgICBDb25zdGFudAogICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJsZWdlbmQtY2xhcmlmaWVyIj4KICAgICAgICAgICAgICAgICAgICA8c3Bhbj4/PC9zcGFuPgogICAgICAgICAgICAgICAgICAgIDxwYXBlci10b29sdGlwCiAgICAgICAgICAgICAgICAgICAgICBhbmltYXRpb24tZGVsYXk9IjAiCiAgICAgICAgICAgICAgICAgICAgICBwb3NpdGlvbj0icmlnaHQiCiAgICAgICAgICAgICAgICAgICAgICBvZmZzZXQ9IjAiCiAgICAgICAgICAgICAgICAgICAgPgogICAgICAgICAgICAgICAgICAgICAgTm9kZSB0aGF0IG91dHB1dHMgYSBjb25zdGFudCB2YWx1ZS4KICAgICAgICAgICAgICAgICAgICA8L3BhcGVyLXRvb2x0aXA+CiAgICAgICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICAgICAgPC90ZD4KICAgICAgICAgICAgICA8L3RyPgogICAgICAgICAgICAgIDx0cj4KICAgICAgICAgICAgICAgIDx0ZD4KICAgICAgICAgICAgICAgICAgPHRmLWdyYXBoLWljb24gdHlwZT0iU1VNTUFSWSIgaGVpZ2h0PSIyMCI+PC90Zi1ncmFwaC1pY29uPgogICAgICAgICAgICAgICAgPC90ZD4KICAgICAgICAgICAgICAgIDx0ZD4KICAgICAgICAgICAgICAgICAgU3VtbWFyeQogICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJsZWdlbmQtY2xhcmlmaWVyIj4KICAgICAgICAgICAgICAgICAgICA8c3Bhbj4/PC9zcGFuPgogICAgICAgICAgICAgICAgICAgIDxwYXBlci10b29sdGlwCiAgICAgICAgICAgICAgICAgICAgICBhbmltYXRpb24tZGVsYXk9IjAiCiAgICAgICAgICAgICAgICAgICAgICBwb3NpdGlvbj0icmlnaHQiCiAgICAgICAgICAgICAgICAgICAgICBvZmZzZXQ9IjAiCiAgICAgICAgICAgICAgICAgICAgPgogICAgICAgICAgICAgICAgICAgICAgTm9kZSB0aGF0IGNvbGxlY3RzIGRhdGEgZm9yIHZpc3VhbGl6YXRpb24gd2l0aGluCiAgICAgICAgICAgICAgICAgICAgICBUZW5zb3JCb2FyZC4KICAgICAgICAgICAgICAgICAgICA8L3BhcGVyLXRvb2x0aXA+CiAgICAgICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICAgICAgPC90ZD4KICAgICAgICAgICAgICA8L3RyPgogICAgICAgICAgICAgIDx0cj4KICAgICAgICAgICAgICAgIDx0ZD4KICAgICAgICAgICAgICAgICAgPHN2ZwogICAgICAgICAgICAgICAgICAgIGNsYXNzPSJpY29uIgogICAgICAgICAgICAgICAgICAgIGhlaWdodD0iMTVweCIKICAgICAgICAgICAgICAgICAgICBwcmVzZXJ2ZUFzcGVjdFJhdGlvPSJ4TWluWU1pZCBtZWV0IgogICAgICAgICAgICAgICAgICAgIHZpZXdCb3g9IjAgMCAxNSAxNSIKICAgICAgICAgICAgICAgICAgPgogICAgICAgICAgICAgICAgICAgIDxkZWZzPgogICAgICAgICAgICAgICAgICAgICAgPG1hcmtlcgogICAgICAgICAgICAgICAgICAgICAgICBpZD0iZGF0YWZsb3ctYXJyb3doZWFkLWxlZ2VuZCIKICAgICAgICAgICAgICAgICAgICAgICAgZmlsbD0iI2JiYiIKICAgICAgICAgICAgICAgICAgICAgICAgbWFya2VyV2lkdGg9IjEwIgogICAgICAgICAgICAgICAgICAgICAgICBtYXJrZXJIZWlnaHQ9IjEwIgogICAgICAgICAgICAgICAgICAgICAgICByZWZYPSI5IgogICAgICAgICAgICAgICAgICAgICAgICByZWZZPSI1IgogICAgICAgICAgICAgICAgICAgICAgICBvcmllbnQ9ImF1dG8tc3RhcnQtcmV2ZXJzZSIKICAgICAgICAgICAgICAgICAgICAgID4KICAgICAgICAgICAgICAgICAgICAgICAgPHBhdGggZD0iTSAwLDAgTCAxMCw1IEwgMCwxMCBDIDMsNyAzLDMgMCwwIj48L3BhdGg+CiAgICAgICAgICAgICAgICAgICAgICA8L21hcmtlcj4KICAgICAgICAgICAgICAgICAgICA8L2RlZnM+CiAgICAgICAgICAgICAgICAgICAgPHBhdGgKICAgICAgICAgICAgICAgICAgICAgIG1hcmtlci1lbmQ9InVybCgjZGF0YWZsb3ctYXJyb3doZWFkLWxlZ2VuZCkiCiAgICAgICAgICAgICAgICAgICAgICBzdHJva2U9IiNiYmIiCiAgICAgICAgICAgICAgICAgICAgICBkPSJNMiA5IGwgMjkgMCIKICAgICAgICAgICAgICAgICAgICAgIHN0cm9rZS1saW5lY2FwPSJyb3VuZCIKICAgICAgICAgICAgICAgICAgICA+PC9wYXRoPgogICAgICAgICAgICAgICAgICA8L3N2Zz4KICAgICAgICAgICAgICAgIDwvdGQ+CiAgICAgICAgICAgICAgICA8dGQ+CiAgICAgICAgICAgICAgICAgIERhdGFmbG93IGVkZ2UKICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0ibGVnZW5kLWNsYXJpZmllciI+CiAgICAgICAgICAgICAgICAgICAgPHNwYW4+Pzwvc3Bhbj4KICAgICAgICAgICAgICAgICAgICA8cGFwZXItdG9vbHRpcAogICAgICAgICAgICAgICAgICAgICAgYW5pbWF0aW9uLWRlbGF5PSIwIgogICAgICAgICAgICAgICAgICAgICAgcG9zaXRpb249InJpZ2h0IgogICAgICAgICAgICAgICAgICAgICAgb2Zmc2V0PSIwIgogICAgICAgICAgICAgICAgICAgID4KICAgICAgICAgICAgICAgICAgICAgIEVkZ2Ugc2hvd2luZyB0aGUgZGF0YSBmbG93IGJldHdlZW4gb3BlcmF0aW9ucy4gRWRnZXMgZmxvdwogICAgICAgICAgICAgICAgICAgICAgdXB3YXJkcyB1bmxlc3MgYXJyb3doZWFkcyBzcGVjaWZ5IG90aGVyd2lzZS4KICAgICAgICAgICAgICAgICAgICA8L3BhcGVyLXRvb2x0aXA+CiAgICAgICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICAgICAgPC90ZD4KICAgICAgICAgICAgICA8L3RyPgogICAgICAgICAgICAgIDx0cj4KICAgICAgICAgICAgICAgIDx0ZD4KICAgICAgICAgICAgICAgICAgPHN2ZwogICAgICAgICAgICAgICAgICAgIGNsYXNzPSJpY29uIgogICAgICAgICAgICAgICAgICAgIGhlaWdodD0iMTVweCIKICAgICAgICAgICAgICAgICAgICBwcmVzZXJ2ZUFzcGVjdFJhdGlvPSJ4TWluWU1pZCBtZWV0IgogICAgICAgICAgICAgICAgICAgIHZpZXdCb3g9IjAgMCAxNSAxNSIKICAgICAgICAgICAgICAgICAgPgogICAgICAgICAgICAgICAgICAgIDxwYXRoCiAgICAgICAgICAgICAgICAgICAgICBzdHJva2U9IiNiYmIiCiAgICAgICAgICAgICAgICAgICAgICBkPSJNMiA5IGwgMjkgMCIKICAgICAgICAgICAgICAgICAgICAgIHN0cm9rZS1saW5lY2FwPSJyb3VuZCIKICAgICAgICAgICAgICAgICAgICAgIHN0cm9rZS1kYXNoYXJyYXk9IjIsIDIiCiAgICAgICAgICAgICAgICAgICAgPjwvcGF0aD4KICAgICAgICAgICAgICAgICAgPC9zdmc+CiAgICAgICAgICAgICAgICA8L3RkPgogICAgICAgICAgICAgICAgPHRkPgogICAgICAgICAgICAgICAgICBDb250cm9sIGRlcGVuZGVuY3kgZWRnZQogICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJsZWdlbmQtY2xhcmlmaWVyIj4KICAgICAgICAgICAgICAgICAgICA8c3Bhbj4/PC9zcGFuPgogICAgICAgICAgICAgICAgICAgIDxwYXBlci10b29sdGlwCiAgICAgICAgICAgICAgICAgICAgICBhbmltYXRpb24tZGVsYXk9IjAiCiAgICAgICAgICAgICAgICAgICAgICBwb3NpdGlvbj0icmlnaHQiCiAgICAgICAgICAgICAgICAgICAgICBvZmZzZXQ9IjAiCiAgICAgICAgICAgICAgICAgICAgPgogICAgICAgICAgICAgICAgICAgICAgRWRnZSBzaG93aW5nIHRoZSBjb250cm9sIGRlcGVuZGVuY3kgYmV0d2VlbiBvcGVyYXRpb25zLgogICAgICAgICAgICAgICAgICAgIDwvcGFwZXItdG9vbHRpcD4KICAgICAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgICAgICA8L3RkPgogICAgICAgICAgICAgIDwvdHI+CiAgICAgICAgICAgICAgPHRyPgogICAgICAgICAgICAgICAgPHRkPgogICAgICAgICAgICAgICAgICA8c3ZnCiAgICAgICAgICAgICAgICAgICAgY2xhc3M9Imljb24iCiAgICAgICAgICAgICAgICAgICAgaGVpZ2h0PSIxNXB4IgogICAgICAgICAgICAgICAgICAgIHByZXNlcnZlQXNwZWN0UmF0aW89InhNaW5ZTWlkIG1lZXQiCiAgICAgICAgICAgICAgICAgICAgdmlld0JveD0iMCAwIDE1IDE1IgogICAgICAgICAgICAgICAgICA+CiAgICAgICAgICAgICAgICAgICAgPGRlZnM+CiAgICAgICAgICAgICAgICAgICAgICA8bWFya2VyCiAgICAgICAgICAgICAgICAgICAgICAgIGlkPSJyZWZlcmVuY2UtYXJyb3doZWFkLWxlZ2VuZCIKICAgICAgICAgICAgICAgICAgICAgICAgZmlsbD0iI0ZGQjc0RCIKICAgICAgICAgICAgICAgICAgICAgICAgbWFya2VyV2lkdGg9IjEwIgogICAgICAgICAgICAgICAgICAgICAgICBtYXJrZXJIZWlnaHQ9IjEwIgogICAgICAgICAgICAgICAgICAgICAgICByZWZYPSI5IgogICAgICAgICAgICAgICAgICAgICAgICByZWZZPSI1IgogICAgICAgICAgICAgICAgICAgICAgICBvcmllbnQ9ImF1dG8tc3RhcnQtcmV2ZXJzZSIKICAgICAgICAgICAgICAgICAgICAgID4KICAgICAgICAgICAgICAgICAgICAgICAgPHBhdGggZD0iTSAwLDAgTCAxMCw1IEwgMCwxMCBDIDMsNyAzLDMgMCwwIj48L3BhdGg+CiAgICAgICAgICAgICAgICAgICAgICA8L21hcmtlcj4KICAgICAgICAgICAgICAgICAgICA8L2RlZnM+CiAgICAgICAgICAgICAgICAgICAgPHBhdGgKICAgICAgICAgICAgICAgICAgICAgIG1hcmtlci1lbmQ9InVybCgjcmVmZXJlbmNlLWFycm93aGVhZC1sZWdlbmQpIgogICAgICAgICAgICAgICAgICAgICAgc3Ryb2tlPSIjRkZCNzREIgogICAgICAgICAgICAgICAgICAgICAgZD0iTTIgOSBsIDI5IDAiCiAgICAgICAgICAgICAgICAgICAgICBzdHJva2UtbGluZWNhcD0icm91bmQiCiAgICAgICAgICAgICAgICAgICAgPjwvcGF0aD4KICAgICAgICAgICAgICAgICAgPC9zdmc+CiAgICAgICAgICAgICAgICA8L3RkPgogICAgICAgICAgICAgICAgPHRkPgogICAgICAgICAgICAgICAgICBSZWZlcmVuY2UgZWRnZQogICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJsZWdlbmQtY2xhcmlmaWVyIj4KICAgICAgICAgICAgICAgICAgICA8c3Bhbj4/PC9zcGFuPgogICAgICAgICAgICAgICAgICAgIDxwYXBlci10b29sdGlwCiAgICAgICAgICAgICAgICAgICAgICBhbmltYXRpb24tZGVsYXk9IjAiCiAgICAgICAgICAgICAgICAgICAgICBwb3NpdGlvbj0icmlnaHQiCiAgICAgICAgICAgICAgICAgICAgICBvZmZzZXQ9IjAiCiAgICAgICAgICAgICAgICAgICAgPgogICAgICAgICAgICAgICAgICAgICAgRWRnZSBzaG93aW5nIHRoYXQgdGhlIG91dGdvaW5nIG9wZXJhdGlvbiBub2RlIGNhbiBtdXRhdGUKICAgICAgICAgICAgICAgICAgICAgIHRoZSBpbmNvbWluZyB0ZW5zb3IuCiAgICAgICAgICAgICAgICAgICAgPC9wYXBlci10b29sdGlwPgogICAgICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgICAgIDwvdGQ+CiAgICAgICAgICAgICAgPC90cj4KICAgICAgICAgICAgPC90Ym9keT4KICAgICAgICAgIDwvdGFibGU+CiAgICAgICAgPC9kaXY+CiAgICAgIDwvaXJvbi1jb2xsYXBzZT4KICAgIDwvZGl2PgogIGAsdChbbyh7dHlwZTpPYmplY3Qsb2JzZXJ2ZXI6Il9zdGF0c0NoYW5nZWQifSksZSgiZGVzaWduOnR5cGUiLE9iamVjdCldLGNSdC5wcm90b3R5cGUsInN0YXRzIix2b2lkIDApLHQoW28oe3R5cGU6T2JqZWN0LG5vdGlmeTohMH0pLGUoImRlc2lnbjp0eXBlIixPYmplY3QpXSxjUnQucHJvdG90eXBlLCJkZXZpY2VzRm9yU3RhdHMiLHZvaWQgMCksdChbbyh7dHlwZTpTdHJpbmcsbm90aWZ5OiEwfSksZSgiZGVzaWduOnR5cGUiLFN0cmluZyldLGNSdC5wcm90b3R5cGUsImNvbG9yQnkiLHZvaWQgMCksdChbbyh7dHlwZTpPYmplY3Qsbm90aWZ5OiEwfSksZSgiZGVzaWduOnR5cGUiLE9iamVjdCldLGNSdC5wcm90b3R5cGUsImNvbG9yQnlQYXJhbXMiLHZvaWQgMCksdChbbyh7dHlwZTpBcnJheSxvYnNlcnZlcjoiX2RhdGFzZXRzQ2hhbmdlZCJ9KSxlKCJkZXNpZ246dHlwZSIsT2JqZWN0KV0sY1J0LnByb3RvdHlwZSwiZGF0YXNldHMiLHZvaWQgMCksdChbbyh7dHlwZTpPYmplY3R9KSxlKCJkZXNpZ246dHlwZSIsYk50KV0sY1J0LnByb3RvdHlwZSwicmVuZGVySGllcmFyY2h5Iix2b2lkIDApLHQoW28oe3R5cGU6T2JqZWN0LG5vdGlmeTohMCxyZWFkT25seTohMCxjb21wdXRlZDoiX2NvbXB1dGVTZWxlY3Rpb24oZGF0YXNldHMsIF9zZWxlY3RlZFJ1bkluZGV4LCBfc2VsZWN0ZWRUYWdJbmRleCwgX3NlbGVjdGVkR3JhcGhUeXBlKSJ9KSxlKCJkZXNpZ246dHlwZSIsT2JqZWN0KV0sY1J0LnByb3RvdHlwZSwic2VsZWN0aW9uIix2b2lkIDApLHQoW28oe3R5cGU6T2JqZWN0LG5vdGlmeTohMH0pLGUoImRlc2lnbjp0eXBlIixPYmplY3QpXSxjUnQucHJvdG90eXBlLCJzZWxlY3RlZEZpbGUiLHZvaWQgMCksdChbbyh7dHlwZTpOdW1iZXIsb2JzZXJ2ZXI6Il9zZWxlY3RlZFJ1bkluZGV4Q2hhbmdlZCJ9KSxlKCJkZXNpZ246dHlwZSIsTnVtYmVyKV0sY1J0LnByb3RvdHlwZSwiX3NlbGVjdGVkUnVuSW5kZXgiLHZvaWQgMCksdChbbyh7dHlwZTpCb29sZWFuLG5vdGlmeTohMH0pLGUoImRlc2lnbjp0eXBlIixCb29sZWFuKV0sY1J0LnByb3RvdHlwZSwidHJhY2VJbnB1dHMiLHZvaWQgMCksdChbbyh7dHlwZTpCb29sZWFuLG5vdGlmeTohMH0pLGUoImRlc2lnbjp0eXBlIixCb29sZWFuKV0sY1J0LnByb3RvdHlwZSwiYXV0b0V4dHJhY3ROb2RlcyIsdm9pZCAwKSx0KFtvKHt0eXBlOk51bWJlcixvYnNlcnZlcjoiX3NlbGVjdGVkVGFnSW5kZXhDaGFuZ2VkIn0pLGUoImRlc2lnbjp0eXBlIixOdW1iZXIpXSxjUnQucHJvdG90eXBlLCJfc2VsZWN0ZWRUYWdJbmRleCIsdm9pZCAwKSx0KFtvKHt0eXBlOlN0cmluZ30pLGUoImRlc2lnbjp0eXBlIixTdHJpbmcpXSxjUnQucHJvdG90eXBlLCJfc2VsZWN0ZWRHcmFwaFR5cGUiLHZvaWQgMCksdChbbyh7dHlwZTpTdHJpbmcsbm90aWZ5OiEwfSksZSgiZGVzaWduOnR5cGUiLFN0cmluZyldLGNSdC5wcm90b3R5cGUsInNlbGVjdGVkTm9kZSIsdm9pZCAwKSx0KFtvKHt0eXBlOkJvb2xlYW59KSxlKCJkZXNpZ246dHlwZSIsQm9vbGVhbildLGNSdC5wcm90b3R5cGUsInNob3dTZXNzaW9uUnVuc0Ryb3Bkb3duIix2b2lkIDApLHQoW28oe3R5cGU6Qm9vbGVhbn0pLGUoImRlc2lnbjp0eXBlIixCb29sZWFuKV0sY1J0LnByb3RvdHlwZSwic2hvd1VwbG9hZEJ1dHRvbiIsdm9pZCAwKSx0KFtvKHt0eXBlOkJvb2xlYW59KSxlKCJkZXNpZ246dHlwZSIsQm9vbGVhbildLGNSdC5wcm90b3R5cGUsImhlYWx0aFBpbGxzRmVhdHVyZUVuYWJsZWQiLHZvaWQgMCksdChbbyh7dHlwZTpCb29sZWFuLG5vdGlmeTohMH0pLGUoImRlc2lnbjp0eXBlIixCb29sZWFuKV0sY1J0LnByb3RvdHlwZSwiaGVhbHRoUGlsbHNUb2dnbGVkT24iLHZvaWQgMCksdChbbyh7dHlwZTpCb29sZWFufSksZSgiZGVzaWduOnR5cGUiLEJvb2xlYW4pXSxjUnQucHJvdG90eXBlLCJfbGVnZW5kT3BlbmVkIix2b2lkIDApLHQoW3MoImRldmljZXNGb3JTdGF0cyIpLGUoImRlc2lnbjp0eXBlIixBcnJheSksZSgiZGVzaWduOnBhcmFtdHlwZXMiLFtdKV0sY1J0LnByb3RvdHlwZSwiX2N1cnJlbnREZXZpY2VzIixudWxsKSx0KFtzKCJjb2xvckJ5UGFyYW1zIiksZSgiZGVzaWduOnR5cGUiLEFycmF5KSxlKCJkZXNpZ246cGFyYW10eXBlcyIsW10pXSxjUnQucHJvdG90eXBlLCJfY3VycmVudERldmljZVBhcmFtcyIsbnVsbCksdChbcygiY29sb3JCeVBhcmFtcyIpLGUoImRlc2lnbjp0eXBlIixBcnJheSksZSgiZGVzaWduOnBhcmFtdHlwZXMiLFtdKV0sY1J0LnByb3RvdHlwZSwiX2N1cnJlbnRYbGFDbHVzdGVyUGFyYW1zIixudWxsKSx0KFtzKCJjb2xvckJ5UGFyYW1zIiwiY29sb3JCeSIpLGUoImRlc2lnbjp0eXBlIixPYmplY3QpLGUoImRlc2lnbjpwYXJhbXR5cGVzIixbXSldLGNSdC5wcm90b3R5cGUsIl9jdXJyZW50R3JhZGllbnRQYXJhbXMiLG51bGwpLGNSdD10KFtpKCJ0Zi1ncmFwaC1jb250cm9scyIpXSxjUnQpO2NsYXNzIHVSdHtpc05vdFRwdU9wKHQpe3JldHVybi0xIT10LnRvTG93ZXJDYXNlKCkuc2VhcmNoKCJjcHU6Iil8fC0xIT10LnRvTG93ZXJDYXNlKCkuc2VhcmNoKCJncHU6Iil8fC0xPT10LnRvTG93ZXJDYXNlKCkuc2VhcmNoKCJ0cHUiKX1vcFZhbGlkKHQpe3JldHVybiAwPT10Lm5hbWUuc2VhcmNoKFVJdCl8fCF0Lm9wfHwhKCF0LmRldmljZXx8IXRoaXMuaXNOb3RUcHVPcCh0LmRldmljZSkpfHwhKCF0LmRldmljZXx8LTE9PXQuZGV2aWNlLnNlYXJjaCgiVFBVX1NZU1RFTSIpKXx8d2UuaW5jbHVkZXModVJ0LldISVRFTElTVCx0Lm9wKX19ZnVuY3Rpb24gaFJ0KHQpe3JldHVybiBuZXcgUHJvbWlzZSgoKGUsbik9PntmZXRjaCh0KS50aGVuKCh0PT57dC5vaz90LmFycmF5QnVmZmVyKCkudGhlbihlLG4pOnQudGV4dCgpLnRoZW4obixuKX0pKX0pKX11UnQuV0hJVEVMSVNUPVsiQWJzIiwiQWNvcyIsIkFjb3NoIiwiQWRkIiwiQWRkTiIsIkFkZFYyIiwiQWRqdXN0Q29udHJhc3R2MiIsIkFkanVzdEh1ZSIsIkFkanVzdFNhdHVyYXRpb24iLCJBbGwiLCJBbGxUb0FsbCIsIkFuZ2xlIiwiQW55IiwiQXBwcm94aW1hdGVFcXVhbCIsIkFyZ01heCIsIkFyZ01pbiIsIkFzaW4iLCJBc2luaCIsIkFzc2VydCIsIkFzc2lnbkFkZFZhcmlhYmxlT3AiLCJBc3NpZ25TdWJWYXJpYWJsZU9wIiwiQXNzaWduVmFyaWFibGVPcCIsIkF0YW4iLCJBdGFuMiIsIkF0YW5oIiwiQXZnUG9vbCIsIkF2Z1Bvb2wzRCIsIkF2Z1Bvb2wzREdyYWQiLCJBdmdQb29sR3JhZCIsIkJhdGNoTWF0TXVsIiwiQmF0Y2hNYXRNdWxWMiIsIkJhdGNoVG9TcGFjZSIsIkJhdGNoVG9TcGFjZU5EIiwiQmVzc2VsSTBlIiwiQmVzc2VsSTFlIiwiQmV0YWluYyIsIkJpYXNBZGQiLCJCaWFzQWRkR3JhZCIsIkJpYXNBZGRWMSIsIkJpdGNhc3QiLCJCaXR3aXNlQW5kIiwiQml0d2lzZU9yIiwiQml0d2lzZVhvciIsIkJyb2FkY2FzdEFyZ3MiLCJCcm9hZGNhc3RHcmFkaWVudEFyZ3MiLCJCcm9hZGNhc3RUbyIsIkJ1Y2tldGl6ZSIsIkNhc2UiLCJDYXN0IiwiQ2VpbCIsIkNoZWNrTnVtZXJpY3MiLCJDaG9sZXNreSIsIkNsaXBCeVZhbHVlIiwiQ29sbGVjdGl2ZVBlcm11dGUiLCJDb2xsZWN0aXZlUmVkdWNlVjIiLCJDb21wbGV4IiwiQ29tcGxleEFicyIsIkNvbmNhdCIsIkNvbmNhdE9mZnNldCIsIkNvbmNhdFYyIiwiQ29uaiIsIkNvbmp1Z2F0ZVRyYW5zcG9zZSIsIkNvbnN0IiwiQ29udHJvbFRyaWdnZXIiLCJDb252MkQiLCJDb252MkRCYWNrcHJvcEZpbHRlciIsIkNvbnYyREJhY2twcm9wSW5wdXQiLCJDb252M0QiLCJDb252M0RCYWNrcHJvcEZpbHRlclYyIiwiQ29udjNEQmFja3Byb3BJbnB1dFYyIiwiQ29zIiwiQ29zaCIsIkNyb3NzIiwiQ3Jvc3NSZXBsaWNhU3VtIiwiQ3VtcHJvZCIsIkN1bXN1bSIsIkRhdGFGb3JtYXREaW1NYXAiLCJEYXRhRm9ybWF0VmVjUGVybXV0ZSIsIkRlcHRoVG9TcGFjZSIsIkRlcHRod2lzZUNvbnYyZE5hdGl2ZSIsIkRlcHRod2lzZUNvbnYyZE5hdGl2ZUJhY2twcm9wRmlsdGVyIiwiRGVwdGh3aXNlQ29udjJkTmF0aXZlQmFja3Byb3BJbnB1dCIsIkRlcXVhbnRpemUiLCJEZXZpY2VJbmRleCIsIkRpYWciLCJEaWFnUGFydCIsIkRpZ2FtbWEiLCJEaXYiLCJEaXZOb05hbiIsIkR5bmFtaWNTdGl0Y2giLCJFaW5zdW0iLCJFbHUiLCJFbHVHcmFkIiwiRW1wdHkiLCJFbXB0eVRlbnNvckxpc3QiLCJFbnN1cmVTaGFwZSIsIkVxdWFsIiwiRXJmIiwiRXJmYyIsIkVyZmludiIsIkV4cCIsIkV4cGFuZERpbXMiLCJFeHBtMSIsIkV4dHJhY3RJbWFnZVBhdGNoZXMiLCJGRlQiLCJGRlQyRCIsIkZGVDNEIiwiRmFrZVBhcmFtIiwiRmFrZVF1YW50V2l0aE1pbk1heEFyZ3MiLCJGYWtlUXVhbnRXaXRoTWluTWF4QXJnc0dyYWRpZW50IiwiRmFrZVF1YW50V2l0aE1pbk1heFZhcnMiLCJGYWtlUXVhbnRXaXRoTWluTWF4VmFyc0dyYWRpZW50IiwiRmlsbCIsIkZsb29yIiwiRmxvb3JEaXYiLCJGbG9vck1vZCIsIkZ1c2VkQmF0Y2hOb3JtIiwiRnVzZWRCYXRjaE5vcm1HcmFkIiwiRnVzZWRCYXRjaE5vcm1HcmFkVjIiLCJGdXNlZEJhdGNoTm9ybUdyYWRWMyIsIkZ1c2VkQmF0Y2hOb3JtVjIiLCJGdXNlZEJhdGNoTm9ybVYzIiwiR2F0aGVyIiwiR2F0aGVyTmQiLCJHYXRoZXJWMiIsIkdldEl0ZW0iLCJHcmVhdGVyIiwiR3JlYXRlckVxdWFsIiwiSFNWVG9SR0IiLCJJRkZUIiwiSUZGVDJEIiwiSUZGVDNEIiwiSVJGRlQiLCJJUkZGVDJEIiwiSVJGRlQzRCIsIklkZW50aXR5IiwiSWRlbnRpdHlOIiwiSWYiLCJJZ2FtbWEiLCJJZ2FtbWFHcmFkQSIsIklnYW1tYWMiLCJJbWFnIiwiSW5Ub3BLVjIiLCJJbmZlZWREZXF1ZXVlIiwiSW5mZWVkRGVxdWV1ZVR1cGxlIiwiSW5wbGFjZUFkZCIsIklucGxhY2VVcGRhdGUiLCJJbnYiLCJJbnZlcnQiLCJJbnZlcnRQZXJtdXRhdGlvbiIsIklzRmluaXRlIiwiSXNJbmYiLCJJc05hbiIsIkt0aE9yZGVyU3RhdGlzdGljIiwiTDJMb3NzIiwiTFJOIiwiTFJOR3JhZCIsIkxlYWt5UmVsdSIsIkxlYWt5UmVsdUdyYWQiLCJMZWZ0U2hpZnQiLCJMZXNzIiwiTGVzc0VxdWFsIiwiTGdhbW1hIiwiTGluU3BhY2UiLCJMaXN0RGlmZiIsIkxvZyIsIkxvZzFwIiwiTG9nU29mdG1heCIsIkxvZ2ljYWxBbmQiLCJMb2dpY2FsTm90IiwiTG9naWNhbE9yIiwiTG93ZXJCb3VuZCIsIk1ha2VVbmlxdWUiLCJNYXRNdWwiLCJNYXRyaXhCYW5kUGFydCIsIk1hdHJpeERpYWciLCJNYXRyaXhEaWFnUGFydCIsIk1hdHJpeERpYWdQYXJ0VjIiLCJNYXRyaXhEaWFnUGFydFYzIiwiTWF0cml4RGlhZ1YyIiwiTWF0cml4RGlhZ1YzIiwiTWF0cml4SW52ZXJzZSIsIk1hdHJpeFNldERpYWciLCJNYXRyaXhTZXREaWFnVjIiLCJNYXRyaXhTZXREaWFnVjMiLCJNYXRyaXhTb2x2ZSIsIk1hdHJpeFRyaWFuZ3VsYXJTb2x2ZSIsIk1heCIsIk1heFBvb2wiLCJNYXhQb29sM0QiLCJNYXhQb29sM0RHcmFkIiwiTWF4UG9vbDNER3JhZEdyYWQiLCJNYXhQb29sR3JhZCIsIk1heFBvb2xHcmFkR3JhZCIsIk1heFBvb2xHcmFkR3JhZFYyIiwiTWF4UG9vbEdyYWRWMiIsIk1heFBvb2xWMiIsIk1heGltdW0iLCJNZWFuIiwiTWluIiwiTWluaW11bSIsIk1pcnJvclBhZCIsIk1pcnJvclBhZEdyYWQiLCJNb2QiLCJNdWwiLCJNdWxOb05hbiIsIk11bHRpbm9taWFsIiwiTmR0cmkiLCJOZWciLCJOZXh0QWZ0ZXIiLCJOb09wIiwiTm9uTWF4U3VwcHJlc3Npb25WNCIsIk5vdEVxdWFsIiwiT25lSG90IiwiT25lc0xpa2UiLCJPdXRmZWVkRW5xdWV1ZSIsIk91dGZlZWRFbnF1ZXVlVHVwbGUiLCJQYWNrIiwiUGFkIiwiUGFkVjIiLCJQYXJhbGxlbER5bmFtaWNTdGl0Y2giLCJQYXJhbWV0ZXJpemVkVHJ1bmNhdGVkTm9ybWFsIiwiUGFydGl0aW9uZWRDYWxsIiwiUGxhY2Vob2xkZXJXaXRoRGVmYXVsdCIsIlBvbHlnYW1tYSIsIlBvcHVsYXRpb25Db3VudCIsIlBvdyIsIlByZXZlbnRHcmFkaWVudCIsIlByb2QiLCJRciIsIlF1YW50aXplQW5kRGVxdWFudGl6ZVYyIiwiUXVhbnRpemVBbmREZXF1YW50aXplVjMiLCJSRkZUIiwiUkZGVDJEIiwiUkZGVDNEIiwiUkdCVG9IU1YiLCJSYW5kb21HYW1tYUdyYWQiLCJSYW5kb21TaHVmZmxlIiwiUmFuZG9tU3RhbmRhcmROb3JtYWwiLCJSYW5kb21Vbmlmb3JtIiwiUmFuZG9tVW5pZm9ybUludCIsIlJhbmdlIiwiUmFuayIsIlJlYWRWYXJpYWJsZU9wIiwiUmVhbCIsIlJlYWxEaXYiLCJSZWNpcHJvY2FsIiwiUmVjaXByb2NhbEdyYWQiLCJSZWx1IiwiUmVsdTYiLCJSZWx1NkdyYWQiLCJSZWx1R3JhZCIsIlJlc2hhcGUiLCJSZXNpemVCaWxpbmVhciIsIlJlc2l6ZUJpbGluZWFyR3JhZCIsIlJlc2l6ZU5lYXJlc3ROZWlnaGJvciIsIlJlc2l6ZU5lYXJlc3ROZWlnaGJvckdyYWQiLCJSZXNvdXJjZUFwcGx5QWRhTWF4IiwiUmVzb3VyY2VBcHBseUFkYWRlbHRhIiwiUmVzb3VyY2VBcHBseUFkYWdyYWQiLCJSZXNvdXJjZUFwcGx5QWRhZ3JhZERBIiwiUmVzb3VyY2VBcHBseUFkYWdyYWRWMiIsIlJlc291cmNlQXBwbHlBZGFtIiwiUmVzb3VyY2VBcHBseUFkZFNpZ24iLCJSZXNvdXJjZUFwcGx5Q2VudGVyZWRSTVNQcm9wIiwiUmVzb3VyY2VBcHBseUZ0cmwiLCJSZXNvdXJjZUFwcGx5RnRybFYyIiwiUmVzb3VyY2VBcHBseUdyYWRpZW50RGVzY2VudCIsIlJlc291cmNlQXBwbHlLZXJhc01vbWVudHVtIiwiUmVzb3VyY2VBcHBseU1vbWVudHVtIiwiUmVzb3VyY2VBcHBseVBvd2VyU2lnbiIsIlJlc291cmNlQXBwbHlQcm94aW1hbEFkYWdyYWQiLCJSZXNvdXJjZUFwcGx5UHJveGltYWxHcmFkaWVudERlc2NlbnQiLCJSZXNvdXJjZUFwcGx5Uk1TUHJvcCIsIlJlc291cmNlR2F0aGVyIiwiUmVzb3VyY2VTY2F0dGVyQWRkIiwiUmVzb3VyY2VTY2F0dGVyRGl2IiwiUmVzb3VyY2VTY2F0dGVyTWF4IiwiUmVzb3VyY2VTY2F0dGVyTWluIiwiUmVzb3VyY2VTY2F0dGVyTXVsIiwiUmVzb3VyY2VTY2F0dGVyTmRBZGQiLCJSZXNvdXJjZVNjYXR0ZXJOZFN1YiIsIlJlc291cmNlU2NhdHRlck5kVXBkYXRlIiwiUmVzb3VyY2VTY2F0dGVyU3ViIiwiUmVzb3VyY2VTY2F0dGVyVXBkYXRlIiwiUmVzb3VyY2VTdHJpZGVkU2xpY2VBc3NpZ24iLCJSZXZlcnNlIiwiUmV2ZXJzZVNlcXVlbmNlIiwiUmV2ZXJzZVYyIiwiUmlnaHRTaGlmdCIsIlJpbnQiLCJSbmdSZWFkQW5kU2tpcCIsIlJuZ1NraXAiLCJSb2xsIiwiUm91bmQiLCJSc3FydCIsIlJzcXJ0R3JhZCIsIlNjYXR0ZXJOZCIsIlNlbGVjdCIsIlNlbGVjdFYyIiwiU2VsZkFkam9pbnRFaWdWMiIsIlNlbHUiLCJTZWx1R3JhZCIsIlNoYXBlIiwiU2hhcGVOIiwiU2lnbW9pZCIsIlNpZ21vaWRHcmFkIiwiU2lnbiIsIlNpbiIsIlNpbmgiLCJTaXplIiwiU2xpY2UiLCJTbmFwc2hvdCIsIlNvZnRtYXgiLCJTb2Z0bWF4Q3Jvc3NFbnRyb3B5V2l0aExvZ2l0cyIsIlNvZnRwbHVzIiwiU29mdHBsdXNHcmFkIiwiU29mdHNpZ24iLCJTb2Z0c2lnbkdyYWQiLCJTcGFjZVRvQmF0Y2giLCJTcGFjZVRvQmF0Y2hORCIsIlNwYWNlVG9EZXB0aCIsIlNwYXJzZU1hdE11bCIsIlNwYXJzZVNvZnRtYXhDcm9zc0VudHJvcHlXaXRoTG9naXRzIiwiU3BhcnNlVG9EZW5zZSIsIlNwbGl0IiwiU3BsaXRWIiwiU3FydCIsIlNxcnRHcmFkIiwiU3F1YXJlIiwiU3F1YXJlZERpZmZlcmVuY2UiLCJTcXVlZXplIiwiU3RhY2tDbG9zZVYyIiwiU3RhY2tQb3BWMiIsIlN0YWNrUHVzaFYyIiwiU3RhY2tWMiIsIlN0YXRlZnVsUGFydGl0aW9uZWRDYWxsIiwiU3RhdGVmdWxTdGFuZGFyZE5vcm1hbFYyIiwiU3RhdGVmdWxUcnVuY2F0ZWROb3JtYWwiLCJTdGF0ZWZ1bFVuaWZvcm0iLCJTdGF0ZWZ1bFVuaWZvcm1GdWxsSW50IiwiU3RhdGVmdWxVbmlmb3JtSW50IiwiU3RhdGVsZXNzQ2FzZSIsIlN0YXRlbGVzc0lmIiwiU3RhdGVsZXNzTXVsdGlub21pYWwiLCJTdGF0ZWxlc3NSYW5kb21HZXRBbGciLCJTdGF0ZWxlc3NSYW5kb21HZXRLZXlDb3VudGVyIiwiU3RhdGVsZXNzUmFuZG9tR2V0S2V5Q291bnRlckFsZyIsIlN0YXRlbGVzc1JhbmRvbU5vcm1hbCIsIlN0YXRlbGVzc1JhbmRvbU5vcm1hbFYyIiwiU3RhdGVsZXNzUmFuZG9tVW5pZm9ybSIsIlN0YXRlbGVzc1JhbmRvbVVuaWZvcm1GdWxsSW50IiwiU3RhdGVsZXNzUmFuZG9tVW5pZm9ybUZ1bGxJbnRWMiIsIlN0YXRlbGVzc1JhbmRvbVVuaWZvcm1JbnQiLCJTdGF0ZWxlc3NSYW5kb21Vbmlmb3JtSW50VjIiLCJTdGF0ZWxlc3NSYW5kb21Vbmlmb3JtVjIiLCJTdGF0ZWxlc3NUcnVuY2F0ZWROb3JtYWwiLCJTdGF0ZWxlc3NUcnVuY2F0ZWROb3JtYWxWMiIsIlN0YXRlbGVzc1doaWxlIiwiU3RvcEdyYWRpZW50IiwiU3RyaWRlZFNsaWNlIiwiU3RyaWRlZFNsaWNlR3JhZCIsIlN1YiIsIlN1bSIsIlN2ZCIsIlN5bWJvbGljR3JhZGllbnQiLCJUUFVFbWJlZGRpbmdBY3RpdmF0aW9ucyIsIlRhbiIsIlRhbmgiLCJUYW5oR3JhZCIsIlRlbnNvckFycmF5Q2xvc2VWMyIsIlRlbnNvckFycmF5Q29uY2F0VjMiLCJUZW5zb3JBcnJheUdhdGhlclYzIiwiVGVuc29yQXJyYXlHcmFkVjMiLCJUZW5zb3JBcnJheVJlYWRWMyIsIlRlbnNvckFycmF5U2NhdHRlclYzIiwiVGVuc29yQXJyYXlTaXplVjMiLCJUZW5zb3JBcnJheVNwbGl0VjMiLCJUZW5zb3JBcnJheVYzIiwiVGVuc29yQXJyYXlXcml0ZVYzIiwiVGVuc29yTGlzdENvbmNhdFYyIiwiVGVuc29yTGlzdEVsZW1lbnRTaGFwZSIsIlRlbnNvckxpc3RGcm9tVGVuc29yIiwiVGVuc29yTGlzdEdhdGhlciIsIlRlbnNvckxpc3RHZXRJdGVtIiwiVGVuc29yTGlzdExlbmd0aCIsIlRlbnNvckxpc3RQb3BCYWNrIiwiVGVuc29yTGlzdFB1c2hCYWNrIiwiVGVuc29yTGlzdFJlc2VydmUiLCJUZW5zb3JMaXN0U2V0SXRlbSIsIlRlbnNvckxpc3RTcGxpdCIsIlRlbnNvckxpc3RTdGFjayIsIlRlbnNvclNjYXR0ZXJBZGQiLCJUZW5zb3JTY2F0dGVyTWF4IiwiVGVuc29yU2NhdHRlck1pbiIsIlRlbnNvclNjYXR0ZXJTdWIiLCJUZW5zb3JTY2F0dGVyVXBkYXRlIiwiVGVuc29yU3RyaWRlZFNsaWNlVXBkYXRlIiwiVGlsZSIsIlRvcEtVbmlxdWUiLCJUb3BLVjIiLCJUb3BLV2l0aFVuaXF1ZSIsIlRyYW5zcG9zZSIsIlRyaWRpYWdvbmFsU29sdmUiLCJUcnVuY2F0ZURpdiIsIlRydW5jYXRlTW9kIiwiVHJ1bmNhdGVkTm9ybWFsIiwiVW5pcXVlIiwiVW5wYWNrIiwiVW5zb3J0ZWRTZWdtZW50TWF4IiwiVW5zb3J0ZWRTZWdtZW50TWluIiwiVW5zb3J0ZWRTZWdtZW50UHJvZCIsIlVuc29ydGVkU2VnbWVudFN1bSIsIlVwcGVyQm91bmQiLCJWYXJJc0luaXRpYWxpemVkT3AiLCJWYXJpYWJsZVNoYXBlIiwiV2hlcmUiLCJXaGlsZSIsIlhkaXZ5IiwiWGxhQnJvYWRjYXN0SGVscGVyIiwiWGxhQ29udiIsIlhsYUNvbnZWMiIsIlhsYURlcXVhbnRpemUiLCJYbGFEb3QiLCJYbGFEb3RWMiIsIlhsYUR5bmFtaWNTbGljZSIsIlhsYUR5bmFtaWNVcGRhdGVTbGljZSIsIlhsYUVpbnN1bSIsIlhsYUdhdGhlciIsIlhsYUhvc3RDb21wdXRlIiwiWGxhSWYiLCJYbGFLZXlWYWx1ZVNvcnQiLCJYbGFQYWQiLCJYbGFSZWN2IiwiWGxhUmVjdkZyb21Ib3N0IiwiWGxhUmVkdWNlIiwiWGxhUmVkdWNlV2luZG93IiwiWGxhUmVwbGljYUlkIiwiWGxhU2NhdHRlciIsIlhsYVNlbGVjdEFuZFNjYXR0ZXIiLCJYbGFTZWxmQWRqb2ludEVpZyIsIlhsYVNlbmQiLCJYbGFTZW5kVG9Ib3N0IiwiWGxhU2V0Qm91bmQiLCJYbGFTZXREeW5hbWljRGltZW5zaW9uU2l6ZSIsIlhsYVNoYXJkaW5nIiwiWGxhU29ydCIsIlhsYVNwbWRGdWxsVG9TaGFyZFNoYXBlIiwiWGxhU3BtZFNoYXJkVG9GdWxsU2hhcGUiLCJYbGFTdmQiLCJYbGFWYXJpYWRpY1JlZHVjZSIsIlhsYVZhcmlhZGljU29ydCIsIlhsYVdoaWxlIiwiWGxvZzFweSIsIlhsb2d5IiwiWmVyb3NMaWtlIiwiWmV0YSIsIkVudGVyIiwiRXhpdCIsIkxvb3BDb25kIiwiTWVyZ2UiLCJOZXh0SXRlcmF0aW9uIiwiU3dpdGNoIiwiX0FyZyIsIl9BcnJheVRvTGlzdCIsIl9GdXNlZEJhdGNoTm9ybUV4IiwiX0xpc3RUb0FycmF5IiwiX1BhcmFsbGVsQ29uY2F0VXBkYXRlIiwiX1JlY3ZUUFVFbWJlZGRpbmdBY3RpdmF0aW9ucyIsIl9SZWN2VFBVRW1iZWRkaW5nRGVkdXBsaWNhdGlvbkRhdGEiLCJfUmV0dmFsIiwiX1NlbmRUUFVFbWJlZGRpbmdHcmFkaWVudHMiLCJfVFBVQ29tcGlsZSIsIl9UUFVFeGVjdXRlIiwiX1VuYXJ5T3BzQ29tcG9zaXRpb24iLCJUUFVDb21waWxhdGlvblJlc3VsdCIsIlRQVVJlcGxpY2F0ZWRJbnB1dCIsIlRQVVJlcGxpY2F0ZWRPdXRwdXQiLCJUUFVSZXBsaWNhdGVNZXRhZGF0YSIsIk1lcmdlVjJDaGVja3BvaW50cyIsIlJlc3RvcmVWMiIsIlNhdmVWMiIsIkFib3J0IiwiQXNzZXJ0IiwiQXNzaWduIiwiUGxhY2Vob2xkZXIiLCJQbGFjZWhvbGRlclYyIiwiU2hhcmRlZEZpbGVuYW1lIiwiU3RyaW5nSm9pbiIsIlZhcmlhYmxlIiwiVmFyaWFibGVWMiIsIlZhckhhbmRsZU9wIiwiQXVkaW9TdW1tYXJ5IiwiQXVkaW9TdW1tYXJ5VjIiLCJEZWJ1Z051bWVyaWNTdW1tYXJ5IiwiSGlzdG9ncmFtU3VtbWFyeSIsIkltYWdlU3VtbWFyeSIsIk1lcmdlU3VtbWFyeSIsIlNjYWxhclN1bW1hcnkiLCJTdGF0c0FnZ3JlZ2F0b3JTdW1tYXJ5Il07Y29uc3QgZFJ0PXsibGlicmFyeS5mdW5jdGlvbiI6ITAsImxpYnJhcnkuZnVuY3Rpb24ubm9kZV9kZWYiOiEwLCJsaWJyYXJ5LmZ1bmN0aW9uLm5vZGVfZGVmLmlucHV0IjohMCwibGlicmFyeS5mdW5jdGlvbi5ub2RlX2RlZi5hdHRyIjohMCwibGlicmFyeS5mdW5jdGlvbi5ub2RlX2RlZi5hdHRyLnZhbHVlLmxpc3QuYiI6ITAsImxpYnJhcnkuZnVuY3Rpb24ubm9kZV9kZWYuYXR0ci52YWx1ZS5saXN0LmYiOiEwLCJsaWJyYXJ5LmZ1bmN0aW9uLm5vZGVfZGVmLmF0dHIudmFsdWUubGlzdC5mdW5jIjohMCwibGlicmFyeS5mdW5jdGlvbi5ub2RlX2RlZi5hdHRyLnZhbHVlLmxpc3QuaSI6ITAsImxpYnJhcnkuZnVuY3Rpb24ubm9kZV9kZWYuYXR0ci52YWx1ZS5saXN0LnMiOiEwLCJsaWJyYXJ5LmZ1bmN0aW9uLm5vZGVfZGVmLmF0dHIudmFsdWUubGlzdC5zaGFwZSI6ITAsImxpYnJhcnkuZnVuY3Rpb24ubm9kZV9kZWYuYXR0ci52YWx1ZS5saXN0LnNoYXBlLmRpbSI6ITAsImxpYnJhcnkuZnVuY3Rpb24ubm9kZV9kZWYuYXR0ci52YWx1ZS5saXN0LnRlbnNvciI6ITAsImxpYnJhcnkuZnVuY3Rpb24ubm9kZV9kZWYuYXR0ci52YWx1ZS5saXN0LnR5cGUiOiEwLCJsaWJyYXJ5LmZ1bmN0aW9uLm5vZGVfZGVmLmF0dHIudmFsdWUuc2hhcGUuZGltIjohMCwibGlicmFyeS5mdW5jdGlvbi5ub2RlX2RlZi5hdHRyLnZhbHVlLnRlbnNvci5zdHJpbmdfdmFsIjohMCwibGlicmFyeS5mdW5jdGlvbi5ub2RlX2RlZi5hdHRyLnZhbHVlLnRlbnNvci50ZW5zb3Jfc2hhcGUuZGltIjohMCwibGlicmFyeS5mdW5jdGlvbi5zaWduYXR1cmUuaW5wdXRfYXJnIjohMCwibGlicmFyeS5mdW5jdGlvbi5zaWduYXR1cmUub3V0cHV0X2FyZyI6ITAsImxpYnJhcnkudmVyc2lvbnMiOiEwLG5vZGU6ITAsIm5vZGUuaW5wdXQiOiEwLCJub2RlLmF0dHIiOiEwLCJub2RlLmF0dHIudmFsdWUubGlzdC5iIjohMCwibm9kZS5hdHRyLnZhbHVlLmxpc3QuZiI6ITAsIm5vZGUuYXR0ci52YWx1ZS5saXN0LmZ1bmMiOiEwLCJub2RlLmF0dHIudmFsdWUubGlzdC5pIjohMCwibm9kZS5hdHRyLnZhbHVlLmxpc3QucyI6ITAsIm5vZGUuYXR0ci52YWx1ZS5saXN0LnNoYXBlIjohMCwibm9kZS5hdHRyLnZhbHVlLmxpc3Quc2hhcGUuZGltIjohMCwibm9kZS5hdHRyLnZhbHVlLmxpc3QudGVuc29yIjohMCwibm9kZS5hdHRyLnZhbHVlLmxpc3QudHlwZSI6ITAsIm5vZGUuYXR0ci52YWx1ZS5zaGFwZS5kaW0iOiEwLCJub2RlLmF0dHIudmFsdWUudGVuc29yLnN0cmluZ192YWwiOiEwLCJub2RlLmF0dHIudmFsdWUudGVuc29yLnRlbnNvcl9zaGFwZS5kaW0iOiEwfSxwUnQ9eyJzdGVwX3N0YXRzLmRldl9zdGF0cyI6ITAsInN0ZXBfc3RhdHMuZGV2X3N0YXRzLm5vZGVfc3RhdHMiOiEwLCJzdGVwX3N0YXRzLmRldl9zdGF0cy5ub2RlX3N0YXRzLm91dHB1dCI6ITAsInN0ZXBfc3RhdHMuZGV2X3N0YXRzLm5vZGVfc3RhdHMubWVtb3J5IjohMCwic3RlcF9zdGF0cy5kZXZfc3RhdHMubm9kZV9zdGF0cy5vdXRwdXQudGVuc29yX2Rlc2NyaXB0aW9uLnNoYXBlLmRpbSI6ITB9O2Z1bmN0aW9uIGZSdCh0LGUpe2xldCBuPXt9LGk9W10scj1bXSxvPW47ZnVuY3Rpb24gYSh0LG4saSxyKXtsZXQgbz10W25dO251bGw9PW8/dFtuXT1yLmpvaW4oIi4iKWluIGU/W2ldOmk6QXJyYXkuaXNBcnJheShvKT9vLnB1c2goaSk6dFtuXT1bbyxpXX1yZXR1cm4oZnVuY3Rpb24gcyh0LGUsbj0xZTYsaT0iXG4iKXtyZXR1cm4gbmV3IFByb21pc2UoKGZ1bmN0aW9uKHIsbyl7IShmdW5jdGlvbiBhKHMsbCxjKXtjb25zdCB1PWM+PXQuYnl0ZUxlbmd0aCxoPWwuc3BsaXQoaSk7aFswXT1zK2hbMF07Y29uc3QgZD11PyIiOmgucG9wKCk7Zm9yKGxldCB0IG9mIGgpdHJ5e2UodCl9Y2F0Y2godCl7cmV0dXJuIHZvaWQgbyh0KX1pZih1KXJldHVybiB2b2lkIHIoITApO2NvbnN0IHA9bmV3IEJsb2IoW3Quc2xpY2UoYyxjK24pXSksZj1uZXcgRmlsZVJlYWRlcjtmLm9ubG9hZD1mdW5jdGlvbih0KXthKGQsdC50YXJnZXQucmVzdWx0LGMrbil9LGYucmVhZEFzVGV4dChwKX0pKCIiLCIiLDApfSkpfSkodCwoZnVuY3Rpb24odCl7aWYodD10LnRyaW0oKSlzd2l0Y2godFt0Lmxlbmd0aC0xXSl7Y2FzZSJ7IjpsZXQgZT10LnN1YnN0cmluZygwLHQubGVuZ3RoLTIpLnRyaW0oKSxuPXt9O2kucHVzaChvKSxyLnB1c2goZSksYShvLGUsbixyKSxvPW47YnJlYWs7Y2FzZSJ9IjpvPWkucG9wKCksci5wb3AoKTticmVhaztkZWZhdWx0OmxldCBzPShmdW5jdGlvbiBlKHQpe2xldCBlPXQuaW5kZXhPZigiOiIpO3JldHVybntuYW1lOnQuc3Vic3RyaW5nKDAsZSkudHJpbSgpLHZhbHVlOihmdW5jdGlvbiBuKHQpe2lmKCJ0cnVlIj09PXQpcmV0dXJuITA7aWYoImZhbHNlIj09PXQpcmV0dXJuITE7aWYoJyInPT09dFswXSlyZXR1cm4gdC5zdWJzdHJpbmcoMSx0Lmxlbmd0aC0xKTtsZXQgZT1wYXJzZUZsb2F0KHQpO3JldHVybiBpc05hTihlKT90OmV9KSh0LnN1YnN0cmluZyhlKzIpLnRyaW0oKSl9fSkodCk7YShvLHMubmFtZSxzLnZhbHVlLHIuY29uY2F0KHMubmFtZSkpfX0pKS50aGVuKChmdW5jdGlvbigpe3JldHVybiBufSkpfWxldCBtUnQ9Y2xhc3MgZXh0ZW5kcyh0cih5ZSkpe2NvbnN0cnVjdG9yKCl7c3VwZXIoLi4uYXJndW1lbnRzKSx0aGlzLmNvbXBhdGliaWxpdHlQcm92aWRlcj1uZXcgdVJ0LHRoaXMuaGllcmFyY2h5UGFyYW1zPVZPdCx0aGlzLl90ZW1wbGF0ZT1udWxsfV9zZWxlY3Rpb25DaGFuZ2VkKCl7dGhpcy5zZWxlY3Rpb24mJnRoaXMuZGVib3VuY2UoInNlbGVjdGlvbmNoYW5nZSIsKCgpPT57dGhpcy5fbG9hZCh0aGlzLnNlbGVjdGlvbil9KSl9X2xvYWQodCl7Y29uc3R7cnVuOmUsdGFnOm4sdHlwZTppfT10O3N3aXRjaChpKXtjYXNlIGJJdC5PUF9HUkFQSDpjYXNlIGJJdC5DT05DRVBUVUFMX0dSQVBIOnsoZnVuY3Rpb24oKXt0aGlzLl9zZXRPdXRTdGF0cyhudWxsKX0pLmJpbmQodGhpcykoKTtjb25zdCB0PW5ldyBVUkxTZWFyY2hQYXJhbXM7dC5zZXQoInJ1biIsZSksdC5zZXQoImNvbmNlcHR1YWwiLFN0cmluZyhpPT09Ykl0LkNPTkNFUFRVQUxfR1JBUEgpKSxuJiZ0LnNldCgidGFnIixuKTtjb25zdCByPWdyKCkucGx1Z2luUm91dGUoImdyYXBocyIsIi9ncmFwaCIsdCk7cmV0dXJuIHRoaXMuX2ZldGNoQW5kQ29uc3RydWN0SGllcmFyY2hpY2FsR3JhcGgocikudGhlbigoKCk9Pnt0aGlzLl9ncmFwaFJ1blRhZz17cnVuOmUsdGFnOm59fSkpfWNhc2UgYkl0LlBST0ZJTEU6e2NvbnN0e3RhZ3M6dH09dGhpcy5kYXRhc2V0cy5maW5kKCgoe25hbWU6dH0pPT50PT09ZSkpLGk9dC5maW5kKCh0PT50LnRhZz09PW4pKS5vcEdyYXBoP246bnVsbDtjb25zb2xlLmFzc2VydCh0LmZpbmQoKHQ9PnQudGFnPT09aSkpLGBSZXF1aXJlZCB0YWcgKCR7aX0pIGlzIG1pc3NpbmcuYCk7Y29uc3Qgcj10aGlzLl9ncmFwaFJ1blRhZyYmdGhpcy5fZ3JhcGhSdW5UYWcucnVuPT09ZSYmdGhpcy5fZ3JhcGhSdW5UYWcudGFnPT09aT9Qcm9taXNlLnJlc29sdmUoKTp0aGlzLl9sb2FkKHtydW46ZSx0YWc6aSx0eXBlOmJJdC5PUF9HUkFQSH0pLG89bmV3IFVSTFNlYXJjaFBhcmFtcztvLnNldCgidGFnIixuKSxvLnNldCgicnVuIixlKTtjb25zdCBhPWdyKCkucGx1Z2luUm91dGUoImdyYXBocyIsIi9ydW5fbWV0YWRhdGEiLG8pO3JldHVybiByLnRoZW4oKCgpPT50aGlzLl9yZWFkQW5kUGFyc2VNZXRhZGF0YShhKSkpfWRlZmF1bHQ6cmV0dXJuIFByb21pc2UucmVqZWN0KG5ldyBFcnJvcihgVW5rbm93biBzZWxlY3Rpb24gdHlwZTogJHtpfWApKX19X3JlYWRBbmRQYXJzZU1ldGFkYXRhKHQpe3RoaXMuc2V0KCJwcm9ncmVzcyIse3ZhbHVlOjAsbXNnOiIifSksKGZ1bmN0aW9uIGUodCxuKXtyZXR1cm4oZnVuY3Rpb24gaSh0LGUsbixyLG8pe3Iuc2V0TWVzc2FnZSh0KTt0cnl7bGV0IGk9a0l0KHQsbixvKTtyZXR1cm4gci51cGRhdGVQcm9ncmVzcyhlKSxpfWNhdGNoKGUpe3IucmVwb3J0RXJyb3IoIkZhaWxlZCAiK3QsZSl9fSkoIlJlYWRpbmcgbWV0YWRhdGEgcGJ0eHQiLDQwLCgoKT0+bnVsbD09dD9Qcm9taXNlLnJlc29sdmUobnVsbCk6aFJ0KHQpKSxuLHZJdC5GRVRDSF9NRVRBREFUQV9QQlRYVF9CWVRFUykudGhlbigodD0+Tkl0KCJQYXJzaW5nIG1ldGFkYXRhLnBidHh0Iiw2MCwoKCk9Pm51bGwhPXQ/KGZ1bmN0aW9uIGUodCl7cmV0dXJuIGZSdCh0LHBSdCkudGhlbigodD0+dC5zdGVwX3N0YXRzKSl9KSh0KTpQcm9taXNlLnJlc29sdmUobnVsbCkpLG4sdkl0LlBBUlNFX01FVEFEQVRBX1BCVFhUX0lOVE9fT0JKRUNUKSkpfSkodCxMSXQodGhpcykpLnRoZW4oZnVuY3Rpb24odCl7dGhpcy5fc2V0T3V0U3RhdHModCl9LmJpbmQodGhpcykpfV9mZXRjaEFuZENvbnN0cnVjdEhpZXJhcmNoaWNhbEdyYXBoKHQsZSl7cmV0dXJuIHRoaXMuc2V0KCJwcm9ncmVzcyIse3ZhbHVlOjAsbXNnOiIifSksKGZ1bmN0aW9uIGkodCxlLHIsbz1uZXcgdVJ0LGE9Vk90KXtjb25zdCBzPVBJdCh0LDMwLCJEYXRhIiksbD1QSXQodCwyMCwiR3JhcGgiKSxjPVBJdCh0LDUwLCJOYW1lc3BhY2UgaGllcmFyY2h5IiksdT1EYXRlLm5vdygpO3JldHVybihmdW5jdGlvbiBoKHQsZSxpKXtyZXR1cm4gTkl0KCJSZWFkaW5nIGdyYXBoIHBidHh0Iiw0MCwoKCk9Pm4odGhpcyx2b2lkIDAsdm9pZCAwLChmdW5jdGlvbiooKXtjb25zdCBuPURhdGUubm93KCk7aWYoZSl7Y29uc3QgdD15aWVsZCBuZXcgUHJvbWlzZSgoZnVuY3Rpb24odCxuKXtsZXQgaT1uZXcgRmlsZVJlYWRlcjtpLm9ubG9hZD0oKT0+dChpLnJlc3VsdCksaS5vbmVycm9yPSgpPT5uKGkuZXJyb3IpLGkucmVhZEFzQXJyYXlCdWZmZXIoZSl9KSk7cmV0dXJuIENJdCh7dGltaW5nSWQ6dkl0LkZFVENIX1BCVFhUX0JZVEVTX0ZST01fRklMRVNZU1RFTSxldmVudFZhbHVlOkRhdGUubm93KCktbn0pLHR9Y29uc3QgaT15aWVsZCBoUnQodCk7cmV0dXJuIENJdCh7dGltaW5nSWQ6dkl0LkZFVENIX1BCVFhUX0JZVEVTX0ZST01fU0VSVkVSLGV2ZW50VmFsdWU6RGF0ZS5ub3coKS1ufSksaX0pKSksaSx2SXQuRkVUQ0hfUEJUWFRfQllURVMpLnRoZW4oKHQ9Pk5JdCgiUGFyc2luZyBncmFwaC5wYnR4dCIsNjAsKCgpPT4oZnVuY3Rpb24gZSh0KXtyZXR1cm4gZlJ0KHQsZFJ0KX0pKHQpKSxpLHZJdC5QQVJTRV9QQlRYVF9JTlRPX09CSkVDVCkpKX0pKGUscixzKS50aGVuKChmdW5jdGlvbih0KXtpZighdC5ub2RlKXRocm93IG5ldyBFcnJvcigiVGhlIGdyYXBoIGlzIGVtcHR5LiBUaGlzIGNhbiBoYXBwZW4gd2hlbiBUZW5zb3JGbG93IGNvdWxkIG5vdCB0cmFjZSBhbnkgZ3JhcGguIFBsZWFzZSByZWZlciB0byBodHRwczovL2dpdGh1Yi5jb20vdGVuc29yZmxvdy90ZW5zb3Jib2FyZC9pc3N1ZXMvMTk2MSBmb3IgbW9yZSBpbmZvcm1hdGlvbi4iKTtyZXR1cm4oZnVuY3Rpb24gZSh0LG4saSl7bGV0IHI9e30sbz17fSxhPXt9LHM9bE50KG4uaW5FbWJlZGRpbmdUeXBlcyksbD1sTnQobi5vdXRFbWJlZGRpbmdUeXBlcyksYz1bXSx1PXQubm9kZSxoPW5ldyBBcnJheSh1Lmxlbmd0aCk7cmV0dXJuIElJdCgiTm9ybWFsaXppbmcgbmFtZXMiLDMwLCgoKT0+e2xldCBlPW5ldyBBcnJheSh1Lmxlbmd0aCksbj0wO2NvbnN0IGk9dD0+e2xldCBpPW5ldyBLSXQodCk7cmV0dXJuIHMoaSk/KGMucHVzaChpLm5hbWUpLHJbaS5uYW1lXT1pLGkpOmwoaSk/KGMucHVzaChpLm5hbWUpLG9baS5uYW1lXT1pLHdlLmVhY2goaS5pbnB1dHMsKHQ9PntsZXQgZT10Lm5hbWU7YVtlXT1hW2VdfHxbXSxhW2VdLnB1c2goaSl9KSksaSk6KGVbbl09aSxoW25dPWkubmFtZSxuKyssaSl9O3JldHVybiB3ZS5lYWNoKHUsaSksdC5saWJyYXJ5JiZ0LmxpYnJhcnkuZnVuY3Rpb24mJndlLmVhY2godC5saWJyYXJ5LmZ1bmN0aW9uLCh0PT57Y29uc3QgZT1VSXQrdC5zaWduYXR1cmUubmFtZTtpZihpKHtuYW1lOmUsaW5wdXQ6W10sZGV2aWNlOiIiLG9wOiIiLGF0dHI6W119KSx0LnNpZ25hdHVyZS5pbnB1dF9hcmcpe2xldCBuPTA7Y29uc3Qgcj10PT57aSh7bmFtZTplK1ZJdCt0Lm5hbWUsaW5wdXQ6W10sZGV2aWNlOiIiLG9wOiJpbnB1dF9hcmciLGF0dHI6W3trZXk6IlQiLHZhbHVlOnt0eXBlOnQudHlwZX19XX0pLmZ1bmN0aW9uSW5wdXRJbmRleD1uLG4rK307dC5zaWduYXR1cmUuaW5wdXRfYXJnLm5hbWU/cih0LnNpZ25hdHVyZS5pbnB1dF9hcmcpOndlLmVhY2godC5zaWduYXR1cmUuaW5wdXRfYXJnLHIpfWxldCBuPTA7Y29uc3Qgcj17fTtpZih0LnNpZ25hdHVyZS5vdXRwdXRfYXJnKXtjb25zdCBpPXQ9PntyW2UrVkl0K3QubmFtZV09bixuKyt9O3Quc2lnbmF0dXJlLm91dHB1dF9hcmcubmFtZT9pKHQuc2lnbmF0dXJlLm91dHB1dF9hcmcpOndlLmVhY2godC5zaWduYXR1cmUub3V0cHV0X2FyZyxpKX13ZS5lYWNoKHQubm9kZV9kZWYsKHQ9Pnt0Lm5hbWU9ZSsiLyIrdC5uYW1lLCJzdHJpbmciPT10eXBlb2YgdC5pbnB1dCYmKHQuaW5wdXQ9W3QuaW5wdXRdKTtjb25zdCBuPWkodCk7d2UuaXNOdW1iZXIoclt0Lm5hbWVdKSYmKG4uZnVuY3Rpb25PdXRwdXRJbmRleD1yW3QubmFtZV0pLHdlLmVhY2gobi5pbnB1dHMsKHQ9Pnt0Lm5hbWU9ZStWSXQrdC5uYW1lfSkpfSkpfSkpLGUuc3BsaWNlKG4pLGguc3BsaWNlKG4pLGV9KSxpLHZJdC5OT1JNQUxJWklOR19OQU1FUykudGhlbigodD0+SUl0KCJCdWlsZGluZyB0aGUgZGF0YSBzdHJ1Y3R1cmUiLDcwLCgoKT0+e2xldCBlPShmdW5jdGlvbiBpKHQsZSl7bGV0IG49e30saT17fTt0LnNvcnQoKTtmb3IobGV0IGU9MDtlPHQubGVuZ3RoLTE7KytlKXtsZXQgcj10W2VdO3dlLmVhY2goaE50KHIpLnNsaWNlKDAsLTEpLCh0PT57aVt0XT0hMH0pKTtmb3IobGV0IGk9ZSsxO2k8dC5sZW5ndGg7KytpKXtsZXQgZT10W2ldO2lmKCF3ZS5zdGFydHNXaXRoKGUscikpYnJlYWs7aWYoZS5sZW5ndGg+ci5sZW5ndGgmJmUuY2hhckF0KHIubGVuZ3RoKT09PVZJdCl7bltyXT1jTnQocik7YnJlYWt9fX1yZXR1cm4gd2UuZWFjaChlLCh0PT57dCBpbiBpJiYoblt0XT1jTnQodCkpfSkpLG59KShoLGMpLHM9bmV3IFhJdDtyZXR1cm4gd2UuZWFjaCh0LCh0PT57bGV0IG49ZVt0Lm5hbWVdfHx0Lm5hbWU7cy5ub2Rlc1tuXT10LHQubmFtZSBpbiBhJiYodC5vdXRFbWJlZGRpbmdzPWFbdC5uYW1lXSx3ZS5lYWNoKHQub3V0RW1iZWRkaW5ncywodD0+e3QubmFtZT1lW3QubmFtZV18fHQubmFtZX0pKSksdC5uYW1lPW59KSksd2UuZWFjaCh0LCh0PT57d2UuZWFjaCh0LmlucHV0cywoKGksYSk9PntsZXQgbD1pLm5hbWU7aWYobCBpbiByKXtsZXQgaT1yW2xdO3QuaW5FbWJlZGRpbmdzLnB1c2goaSk7Zm9yKGxldCByIG9mIGkuaW5wdXRzKW9OdChzLGVbci5uYW1lXXx8ci5uYW1lLHQscixuLGEpfWVsc2UgaWYobCBpbiBvKXtsZXQgcj1vW2xdO2ZvcihsZXQgbyBvZiByLmlucHV0cylvTnQocyxlW28ubmFtZV18fG8ubmFtZSx0LGksbixhKX1lbHNlIG9OdChzLGVbbF18fGwsdCxpLG4sYSl9KSl9KSksd2UuZWFjaChyLCgodCxuKT0+e3QubmFtZT1lW3QubmFtZV18fHQubmFtZX0pKSxzfSksaSx2SXQuQlVJTERfU0xJTV9HUkFQSCkpKX0pKHQsYU50LGwpfSksKCgpPT57dGhyb3cgbmV3IEVycm9yKCJNYWxmb3JtZWQgR3JhcGhEZWYuIFRoaXMgY2FuIHNvbWV0aW1lcyBiZSBjYXVzZWQgYnkgYSBiYWQgbmV0d29yayBjb25uZWN0aW9uIG9yIGRpZmZpY3VsdHkgcmVjb25jaWxpbmcgbXVsdGlwbGUgR3JhcGhEZWZzOyBmb3IgdGhlIGxhdHRlciBjYXNlLCBwbGVhc2UgcmVmZXIgdG8gaHR0cHM6Ly9naXRodWIuY29tL3RlbnNvcmZsb3cvdGVuc29yYm9hcmQvaXNzdWVzLzE5MjkuIil9KSkudGhlbigodD0+bih0aGlzLHZvaWQgMCx2b2lkIDAsKGZ1bmN0aW9uKigpeyEoZnVuY3Rpb24gZSh0LG4pe2lmKG51bGw9PT1uKXRocm93IG5ldyBFcnJvcigiQ29tcGF0aWJpbGl0eSBwcm92aWRlciByZXF1aXJlZCwgYnV0IGdvdDogIituKTt3ZS5lYWNoKHQubm9kZXMsKHQ9Pnt0LmNvbXBhdGlibGU9bi5vcFZhbGlkKHQpLHdlLmVhY2godC5pbkVtYmVkZGluZ3MsKHQ9Pnt0LmNvbXBhdGlibGU9bi5vcFZhbGlkKHQpfSkpLHdlLmVhY2godC5vdXRFbWJlZGRpbmdzLCh0PT57dC5jb21wYXRpYmxlPW4ub3BWYWxpZCh0KX0pKX0pKX0pKHQsbyk7Y29uc3Qgbj15aWVsZCBqT3QodCxhLGMpO3JldHVybiBDSXQoe3RpbWluZ0lkOnZJdC5HUkFQSF9MT0FEX1NVQ0NFRURFRCxldmVudFZhbHVlOkRhdGUubm93KCktdX0pLHtncmFwaDp0LGdyYXBoSGllcmFyY2h5Om59fSkpKSkuY2F0Y2goKGU9Pnt0aHJvdyB0LnJlcG9ydEVycm9yKGBHcmFwaCB2aXN1YWxpemF0aW9uIGZhaWxlZC5cblxuJHtlfWAsZSksQ0l0KHt0aW1pbmdJZDp2SXQuR1JBUEhfTE9BRF9GQUlMRUQsZXZlbnRWYWx1ZTpEYXRlLm5vdygpLXV9KSxlfSkpfSkoTEl0KHRoaXMpLHQsZSx0aGlzLmNvbXBhdGliaWxpdHlQcm92aWRlcix0aGlzLmhpZXJhcmNoeVBhcmFtcykudGhlbihmdW5jdGlvbih7Z3JhcGg6dCxncmFwaEhpZXJhcmNoeTplfSl7dGhpcy5fc2V0T3V0R3JhcGgodCksdGhpcy5fc2V0T3V0R3JhcGhIaWVyYXJjaHkoZSl9LmJpbmQodGhpcykpfV9zZWxlY3RlZEZpbGVDaGFuZ2VkKCl7dmFyIHQ9dGhpcy5zZWxlY3RlZEZpbGU7aWYoIXQpcmV0dXJuO2NvbnN0IGU9dC50YXJnZXQsbj1lLmZpbGVzWzBdO24mJihlLnZhbHVlPSIiLHRoaXMuX2ZldGNoQW5kQ29uc3RydWN0SGllcmFyY2hpY2FsR3JhcGgobnVsbCxuKSl9fTt0KFtvKHt0eXBlOkFycmF5fSksZSgiZGVzaWduOnR5cGUiLEFycmF5KV0sbVJ0LnByb3RvdHlwZSwiZGF0YXNldHMiLHZvaWQgMCksdChbbyh7dHlwZTpPYmplY3Qsbm90aWZ5OiEwfSksZSgiZGVzaWduOnR5cGUiLE9iamVjdCldLG1SdC5wcm90b3R5cGUsInByb2dyZXNzIix2b2lkIDApLHQoW28oe3R5cGU6T2JqZWN0fSksZSgiZGVzaWduOnR5cGUiLE9iamVjdCldLG1SdC5wcm90b3R5cGUsInNlbGVjdGlvbiIsdm9pZCAwKSx0KFtvKHt0eXBlOk9iamVjdH0pLGUoImRlc2lnbjp0eXBlIixPYmplY3QpXSxtUnQucHJvdG90eXBlLCJzZWxlY3RlZEZpbGUiLHZvaWQgMCksdChbbyh7dHlwZTpPYmplY3R9KSxlKCJkZXNpZ246dHlwZSIsT2JqZWN0KV0sbVJ0LnByb3RvdHlwZSwiY29tcGF0aWJpbGl0eVByb3ZpZGVyIix2b2lkIDApLHQoW28oe3R5cGU6T2JqZWN0fSksZSgiZGVzaWduOnR5cGUiLE9iamVjdCldLG1SdC5wcm90b3R5cGUsImhpZXJhcmNoeVBhcmFtcyIsdm9pZCAwKSx0KFtvKHt0eXBlOk9iamVjdCxyZWFkT25seTohMCxub3RpZnk6ITB9KSxlKCJkZXNpZ246dHlwZSIsSE90KV0sbVJ0LnByb3RvdHlwZSwib3V0R3JhcGhIaWVyYXJjaHkiLHZvaWQgMCksdChbbyh7dHlwZTpPYmplY3QscmVhZE9ubHk6ITAsbm90aWZ5OiEwfSksZSgiZGVzaWduOnR5cGUiLFhJdCldLG1SdC5wcm90b3R5cGUsIm91dEdyYXBoIix2b2lkIDApLHQoW28oe3R5cGU6T2JqZWN0LHJlYWRPbmx5OiEwLG5vdGlmeTohMH0pLGUoImRlc2lnbjp0eXBlIixPYmplY3QpXSxtUnQucHJvdG90eXBlLCJvdXRTdGF0cyIsdm9pZCAwKSx0KFtvKHt0eXBlOk9iamVjdH0pLGUoImRlc2lnbjp0eXBlIixPYmplY3QpXSxtUnQucHJvdG90eXBlLCJfZ3JhcGhSdW5UYWciLHZvaWQgMCksdChbYSgic2VsZWN0aW9uIiwiY29tcGF0aWJpbGl0eVByb3ZpZGVyIiksZSgiZGVzaWduOnR5cGUiLEZ1bmN0aW9uKSxlKCJkZXNpZ246cGFyYW10eXBlcyIsW10pLGUoImRlc2lnbjpyZXR1cm50eXBlIix2b2lkIDApXSxtUnQucHJvdG90eXBlLCJfc2VsZWN0aW9uQ2hhbmdlZCIsbnVsbCksdChbYSgic2VsZWN0ZWRGaWxlIiwiY29tcGF0aWJpbGl0eVByb3ZpZGVyIiksZSgiZGVzaWduOnR5cGUiLEZ1bmN0aW9uKSxlKCJkZXNpZ246cGFyYW10eXBlcyIsW10pLGUoImRlc2lnbjpyZXR1cm50eXBlIix2b2lkIDApXSxtUnQucHJvdG90eXBlLCJfc2VsZWN0ZWRGaWxlQ2hhbmdlZCIsbnVsbCksbVJ0PXQoW2koInRmLWdyYXBoLWRhc2hib2FyZC1sb2FkZXIiKV0sbVJ0KTtsZXQgZ1J0PWNsYXNzIGV4dGVuZHModHIoeWUpKXtjb25zdHJ1Y3Rvcigpe3N1cGVyKC4uLmFyZ3VtZW50cyksdGhpcy5fZGF0YXNldHM9W10sdGhpcy5fZGF0YXNldHNGZXRjaGVkPSExLHRoaXMuX3NlbGVjdGVkRGF0YXNldD0wLHRoaXMuX3JlcXVlc3RNYW5hZ2VyPW5ldyBocix0aGlzLl9jYW5jZWxsZXI9bmV3IEVPLHRoaXMuc3BlY2lmaWNIZWFsdGhQaWxsU3RlcD0wLHRoaXMuaGVhbHRoUGlsbHNUb2dnbGVkT249ITEsdGhpcy5fZGVidWdnZXJOdW1lcmljQWxlcnRzPVtdLHRoaXMuX25vZGVOYW1lc1RvSGVhbHRoUGlsbHM9e30sdGhpcy5faGVhbHRoUGlsbFJlcXVlc3RJZD0xLHRoaXMuX2hlYWx0aFBpbGxTdGVwUmVxdWVzdFRpbWVyRGVsYXk9NTAwLHRoaXMucnVuPVBzKCJydW4iLHtkZWZhdWx0VmFsdWU6IiIsdXNlTG9jYWxTdG9yYWdlOiExfSkuY2FsbCh0aGlzKSx0aGlzLl9ydW5PYnNlcnZlcj1JcygicnVuIix7ZGVmYXVsdFZhbHVlOiIiLHBvbHltZXJQcm9wZXJ0eToicnVuIix1c2VMb2NhbFN0b3JhZ2U6ITF9KX1hdHRhY2hlZCgpe3RoaXMuc2V0KCJfaXNBdHRhY2hlZCIsITApfWRldGFjaGVkKCl7dGhpcy5zZXQoIl9pc0F0dGFjaGVkIiwhMSl9cmVhZHkoKXtzdXBlci5yZWFkeSgpLHRoaXMuYWRkRXZlbnRMaXN0ZW5lcigibm9kZS10b2dnbGUtZXhwYW5kIix0aGlzLl9oYW5kbGVOb2RlVG9nZ2xlRXhwYW5kLmJpbmQodGhpcykpfXJlbG9hZCgpe3RoaXMuX2RlYnVnZ2VyRGF0YUVuYWJsZWR8fHRoaXMuX3JlcXVlc3RNYW5hZ2VyLnJlcXVlc3QoZ3IoKS5wbHVnaW5zTGlzdGluZygpKS50aGVuKHRoaXMuX2NhbmNlbGxlci5jYW5jZWxsYWJsZSgodD0+e3QuY2FuY2VsbGVkfHx0LnZhbHVlLmRlYnVnZ2VyJiZ0aGlzLnNldCgiX2RlYnVnZ2VyRGF0YUVuYWJsZWQiLCEwKX0pKSksdGhpcy5fbWF5YmVGZXRjaEhlYWx0aFBpbGxzKCl9X2ZpdCgpe3RoaXMuJCQoIiNncmFwaGJvYXJkIikuZml0KCl9X29uRG93bmxvYWRJbWFnZVJlcXVlc3RlZCh0KXt0aGlzLiQkKCIjZ3JhcGhib2FyZCIpLmRvd25sb2FkQXNJbWFnZSh0LmRldGFpbCl9X2dldEdyYXBoRGlzcGxheUNsYXNzTmFtZSh0LGUpe3JldHVybiB0fHxlLmxlbmd0aD8iIjoibm8tZ3JhcGgifV9mZXRjaERhdGFzZXQoKXtyZXR1cm4gdGhpcy5fcmVxdWVzdE1hbmFnZXIucmVxdWVzdChncigpLnBsdWdpblJvdXRlKCJncmFwaHMiLCIvaW5mbyIpKX1fZmV0Y2hIZWFsdGhQaWxscyh0LGUpe2NvbnN0IG49e25vZGVfbmFtZXM6SlNPTi5zdHJpbmdpZnkodCkscnVuOiJfX2RlYnVnZ2VyX2RhdGFfXyJ9O3ZvaWQgMCE9PWUmJihuLnN0ZXA9ZSk7Y29uc3QgaT1ncigpLnBsdWdpblJvdXRlKCJkZWJ1Z2dlciIsIi9oZWFsdGhfcGlsbHMiKTtyZXR1cm4gdGhpcy5fcmVxdWVzdE1hbmFnZXIucmVxdWVzdChpLG4pfV9mZXRjaERlYnVnZ2VyTnVtZXJpY3NBbGVydHMoKXtyZXR1cm4gdGhpcy5fcmVxdWVzdE1hbmFnZXIucmVxdWVzdChncigpLnBsdWdpblJvdXRlKCJkZWJ1Z2dlciIsIi9udW1lcmljc19hbGVydF9yZXBvcnQiKSl9X2dyYXBoVXJsKHQsZSxuKXtyZXR1cm4gZ3IoKS5wbHVnaW5Sb3V0ZSgiZ3JhcGhzIiwiL2dyYXBoIixuZXcgVVJMU2VhcmNoUGFyYW1zKHtydW46dCxsaW1pdF9hdHRyX3NpemU6ZSxsYXJnZV9hdHRyc19rZXk6bn0pKX1fc2hvdWxkUmVxdWVzdEhlYWx0aFBpbGxzKCl7cmV0dXJuIHRoaXMuX2RlYnVnZ2VyRGF0YUVuYWJsZWQmJnRoaXMuaGVhbHRoUGlsbHNUb2dnbGVkT24mJnRoaXMuX3JlbmRlckhpZXJhcmNoeSYmdGhpcy5fZGF0YXNldHNTdGF0ZSh0aGlzLl9kYXRhc2V0c0ZldGNoZWQsdGhpcy5fZGF0YXNldHMsIlBSRVNFTlQiKX1fbWF5YmVJbml0aWFsaXplRGFzaGJvYXJkKCl7IXRoaXMuX2luaXRpYWxpemVkJiZ0aGlzLl9pc0F0dGFjaGVkJiYodGhpcy5zZXQoIl9jb21wYXRpYmlsaXR5UHJvdmlkZXIiLG5ldyB1UnQpLHRoaXMuX2luaXRpYWxpemVkPSEwLHRoaXMuX2ZldGNoRGF0YXNldCgpLnRoZW4oKHQ9Pntjb25zdCBlPU9iamVjdC5rZXlzKHQpO3RoaXMuX2RhdGFzZXRzPWUuc29ydChlcikubWFwKChlPT57Y29uc3Qgbj10W2VdLGk9T2JqZWN0LmtleXMobi50YWdzKS5zb3J0KGVyKS5tYXAoKHQ9Pm4udGFnc1t0XSkpLm1hcCgoKHt0YWc6dCxjb25jZXB0dWFsX2dyYXBoOmUsb3BfZ3JhcGg6bixwcm9maWxlOml9KT0+KHt0YWc6dCxkaXNwbGF5TmFtZTp0LGNvbmNlcHR1YWxHcmFwaDplLG9wR3JhcGg6bixwcm9maWxlOml9KSkpO3JldHVybntuYW1lOmUsdGFnczpuLnJ1bl9ncmFwaD9be3RhZzpudWxsLGRpc3BsYXlOYW1lOiJEZWZhdWx0Iixjb25jZXB0dWFsR3JhcGg6ITEsb3BHcmFwaDohMCxwcm9maWxlOiExfSwuLi5pXTppfX0pKSx0aGlzLl9kYXRhc2V0c0ZldGNoZWQ9ITB9KSkpfV9kZXRlcm1pbmVTZWxlY3RlZERhdGFzZXQoKXt2YXIgdD10aGlzLl9kYXRhc2V0c0ZldGNoZWQsZT10aGlzLl9kYXRhc2V0cyxuPXRoaXMucnVuO2lmKCFuKXJldHVybiB2b2lkIHRoaXMuc2V0KCJfc2VsZWN0ZWREYXRhc2V0IiwwKTtjb25zdCBpPWUuZmluZEluZGV4KCh0PT50Lm5hbWU9PT1uKSk7aWYoLTEhPT1pKXRoaXMuc2V0KCJfc2VsZWN0ZWREYXRhc2V0IixpKTtlbHNlIGlmKHQpe2NvbnN0IHQ9dGhpcy4kJCgiI2Vycm9yLWRpYWxvZyIpO3QudGV4dENvbnRlbnQ9YE5vIGRhdGFzZXQgbmFtZWQgIiR7bn0iIGNvdWxkIGJlIGZvdW5kLmAsdC5vcGVuKCl9fV91cGRhdGVTZWxlY3RlZERhdGFzZXROYW1lKCl7dmFyIHQ9dGhpcy5fZGF0YXNldHMsZT10aGlzLl9zZWxlY3RlZERhdGFzZXQ7dGhpcy5fZGF0YXNldHNGZXRjaGVkJiYodC5sZW5ndGg8PWV8fHRoaXMuc2V0KCJydW4iLHRbZV0ubmFtZSkpfV9yZXF1ZXN0SGVhbHRoUGlsbHMoKXt0aGlzLnNldCgiX2FyZUhlYWx0aFBpbGxzTG9hZGluZyIsITApO3ZhciB0PSsrdGhpcy5faGVhbHRoUGlsbFJlcXVlc3RJZDtudWxsIT09dGhpcy5faGVhbHRoUGlsbFN0ZXBSZXF1ZXN0VGltZXJJZCYmKHdpbmRvdy5jbGVhclRpbWVvdXQodGhpcy5faGVhbHRoUGlsbFN0ZXBSZXF1ZXN0VGltZXJJZCksdGhpcy5faGVhbHRoUGlsbFN0ZXBSZXF1ZXN0VGltZXJJZD1udWxsKSx0aGlzLmFsbFN0ZXBzTW9kZUVuYWJsZWQ/dGhpcy5faGVhbHRoUGlsbFN0ZXBSZXF1ZXN0VGltZXJJZD1zZXRUaW1lb3V0KGZ1bmN0aW9uKCl7dGhpcy5faGVhbHRoUGlsbFN0ZXBSZXF1ZXN0VGltZXJJZD1udWxsLHRoaXMuX2luaXRpYXRlTmV0d29ya1JlcXVlc3RGb3JIZWFsdGhQaWxscyh0KX0uYmluZCh0aGlzKSx0aGlzLl9oZWFsdGhQaWxsU3RlcFJlcXVlc3RUaW1lckRlbGF5KTp0aGlzLl9pbml0aWF0ZU5ldHdvcmtSZXF1ZXN0Rm9ySGVhbHRoUGlsbHModCl9X2luaXRpYXRlTmV0d29ya1JlcXVlc3RGb3JIZWFsdGhQaWxscyh0KXtpZih0aGlzLl9oZWFsdGhQaWxsUmVxdWVzdElkIT09dClyZXR1cm47Y29uc3QgZT10aGlzLmFsbFN0ZXBzTW9kZUVuYWJsZWQ/dGhpcy5zcGVjaWZpY0hlYWx0aFBpbGxTdGVwOnZvaWQgMCxuPXRoaXMuX2ZldGNoSGVhbHRoUGlsbHModGhpcy5fcmVuZGVySGllcmFyY2h5LmdldE5hbWVzT2ZSZW5kZXJlZE9wcygpLGUpLGk9dGhpcy5fZmV0Y2hEZWJ1Z2dlck51bWVyaWNzQWxlcnRzKCk7UHJvbWlzZS5hbGwoW24saV0pLnRoZW4oZnVuY3Rpb24oZSl7dmFyIG49ZVswXSxpPWVbMV07aWYodGhpcy5oZWFsdGhQaWxsc1RvZ2dsZWRPbiYmdD09PXRoaXMuX2hlYWx0aFBpbGxSZXF1ZXN0SWQpe2Zvcih2YXIgciBpbiBuKXt0aGlzLnNldCgiX2hlYWx0aFBpbGxTdGVwSW5kZXgiLG5bcl0ubGVuZ3RoLTEpO2JyZWFrfXRoaXMuc2V0KCJfZGVidWdnZXJOdW1lcmljQWxlcnRzIixpKSx0aGlzLnNldCgiX25vZGVOYW1lc1RvSGVhbHRoUGlsbHMiLG4pLHRoaXMuc2V0KCJfYXJlSGVhbHRoUGlsbHNMb2FkaW5nIiwhMSksdGhpcy5zZXQoIl9oZWFsdGhQaWxsU3RlcFJlcXVlc3RUaW1lcklkIixudWxsKX19LmJpbmQodGhpcykpfV9kYXRhc2V0c1N0YXRlKHQsZSxuKXtyZXR1cm4gdD9lJiZlLmxlbmd0aD8iUFJFU0VOVCI9PT1uOiJFTVBUWSI9PT1uOiJOT1RfTE9BREVEIj09PW59X3JlbmRlckhpZXJhcmNoeUNoYW5nZWQodCl7dGhpcy5yZWxvYWQoKX1faGFuZGxlTm9kZVRvZ2dsZUV4cGFuZCgpe3RoaXMuX21heWJlRmV0Y2hIZWFsdGhQaWxscygpfV9oZWFsdGhQaWxsc1RvZ2dsZWRPbkNoYW5nZWQodCl7dD90aGlzLnJlbG9hZCgpOnRoaXMuc2V0KCJfbm9kZU5hbWVzVG9IZWFsdGhQaWxscyIse30pfV9tYXliZUZldGNoSGVhbHRoUGlsbHMoKXt0aGlzLl9zaG91bGRSZXF1ZXN0SGVhbHRoUGlsbHMoKSYmdGhpcy5fcmVxdWVzdEhlYWx0aFBpbGxzKCl9fTtnUnQudGVtcGxhdGU9X2VgCiAgICA8cGFwZXItZGlhbG9nIGlkPSJlcnJvci1kaWFsb2ciIHdpdGgtYmFja2Ryb3A+PC9wYXBlci1kaWFsb2c+CiAgICA8dGYtZGFzaGJvYXJkLWxheW91dD4KICAgICAgPHRmLWdyYXBoLWNvbnRyb2xzCiAgICAgICAgaWQ9ImNvbnRyb2xzIgogICAgICAgIGNsYXNzPSJzaWRlYmFyIgogICAgICAgIHNsb3Q9InNpZGViYXIiCiAgICAgICAgZGV2aWNlcy1mb3Itc3RhdHM9Int7X2RldmljZXNGb3JTdGF0c319IgogICAgICAgIGNvbG9yLWJ5LXBhcmFtcz0iW1tfY29sb3JCeVBhcmFtc11dIgogICAgICAgIHN0YXRzPSJbW19zdGF0c11dIgogICAgICAgIGNvbG9yLWJ5PSJ7e19jb2xvckJ5fX0iCiAgICAgICAgZGF0YXNldHM9IltbX2RhdGFzZXRzXV0iCiAgICAgICAgcmVuZGVyLWhpZXJhcmNoeT0iW1tfcmVuZGVySGllcmFyY2h5XV0iCiAgICAgICAgc2VsZWN0aW9uPSJ7e19zZWxlY3Rpb259fSIKICAgICAgICBzZWxlY3RlZC1maWxlPSJ7e19zZWxlY3RlZEZpbGV9fSIKICAgICAgICBzZWxlY3RlZC1ub2RlPSJ7e19zZWxlY3RlZE5vZGV9fSIKICAgICAgICBoZWFsdGgtcGlsbHMtZmVhdHVyZS1lbmFibGVkPSJbW19kZWJ1Z2dlckRhdGFFbmFibGVkXV0iCiAgICAgICAgaGVhbHRoLXBpbGxzLXRvZ2dsZWQtb249Int7aGVhbHRoUGlsbHNUb2dnbGVkT259fSIKICAgICAgICBvbi1maXQtdGFwPSJfZml0IgogICAgICAgIHRyYWNlLWlucHV0cz0ie3tfdHJhY2VJbnB1dHN9fSIKICAgICAgICBhdXRvLWV4dHJhY3Qtbm9kZXM9Int7X2F1dG9FeHRyYWN0Tm9kZXN9fSIKICAgICAgICBvbi1kb3dubG9hZC1pbWFnZS1yZXF1ZXN0ZWQ9Il9vbkRvd25sb2FkSW1hZ2VSZXF1ZXN0ZWQiCiAgICAgID48L3RmLWdyYXBoLWNvbnRyb2xzPgogICAgICA8ZGl2CiAgICAgICAgY2xhc3MkPSJjZW50ZXIgW1tfZ2V0R3JhcGhEaXNwbGF5Q2xhc3NOYW1lKF9zZWxlY3RlZEZpbGUsIF9kYXRhc2V0cyldXSIKICAgICAgICBzbG90PSJjZW50ZXIiCiAgICAgID4KICAgICAgICA8dGYtZ3JhcGgtZGFzaGJvYXJkLWxvYWRlcgogICAgICAgICAgaWQ9ImxvYWRlciIKICAgICAgICAgIGRhdGFzZXRzPSJbW19kYXRhc2V0c11dIgogICAgICAgICAgc2VsZWN0aW9uPSJbW19zZWxlY3Rpb25dXSIKICAgICAgICAgIHNlbGVjdGVkLWZpbGU9IltbX3NlbGVjdGVkRmlsZV1dIgogICAgICAgICAgb3V0LWdyYXBoLWhpZXJhcmNoeT0ie3tfZ3JhcGhIaWVyYXJjaHl9fSIKICAgICAgICAgIG91dC1ncmFwaD0ie3tfZ3JhcGh9fSIKICAgICAgICAgIG91dC1zdGF0cz0ie3tfc3RhdHN9fSIKICAgICAgICAgIHByb2dyZXNzPSJ7e19wcm9ncmVzc319IgogICAgICAgICAgaGllcmFyY2h5LXBhcmFtcz0iW1tfaGllcmFyY2h5UGFyYW1zXV0iCiAgICAgICAgICBjb21wYXRpYmlsaXR5LXByb3ZpZGVyPSJbW19jb21wYXRpYmlsaXR5UHJvdmlkZXJdXSIKICAgICAgICA+PC90Zi1ncmFwaC1kYXNoYm9hcmQtbG9hZGVyPgogICAgICAgIDxkaXYgY2xhc3M9Im5vLWRhdGEtbWVzc2FnZSI+CiAgICAgICAgICA8aDM+Tm8gZ3JhcGggZGVmaW5pdGlvbiBmaWxlcyB3ZXJlIGZvdW5kLjwvaDM+CiAgICAgICAgICA8cD4KICAgICAgICAgICAgVG8gc3RvcmUgYSBncmFwaCwgY3JlYXRlIGEKICAgICAgICAgICAgPGNvZGU+dGYuc3VtbWFyeS5GaWxlV3JpdGVyPC9jb2RlPgogICAgICAgICAgICBhbmQgcGFzcyB0aGUgZ3JhcGggZWl0aGVyIHZpYSB0aGUgY29uc3RydWN0b3IsIG9yIGJ5IGNhbGxpbmcgaXRzCiAgICAgICAgICAgIDxjb2RlPmFkZF9ncmFwaCgpPC9jb2RlPiBtZXRob2QuIFlvdSBtYXkgd2FudCB0byBjaGVjayBvdXQgdGhlCiAgICAgICAgICAgIDxhIGhyZWY9Imh0dHBzOi8vd3d3LnRlbnNvcmZsb3cub3JnL3RlbnNvcmJvYXJkL2dyYXBocyIKICAgICAgICAgICAgICA+ZXhhbWluaW5nIHRoZSBUZW5zb3JGbG93IGdyYXBoIHR1dG9yaWFsPC9hCiAgICAgICAgICAgID4uCiAgICAgICAgICA8L3A+CgogICAgICAgICAgPHA+CiAgICAgICAgICAgIElmIHlvdeKAmXJlIG5ldyB0byB1c2luZyBUZW5zb3JCb2FyZCwgYW5kIHdhbnQgdG8gZmluZCBvdXQgaG93IHRvIGFkZAogICAgICAgICAgICBkYXRhIGFuZCBzZXQgdXAgeW91ciBldmVudCBmaWxlcywgY2hlY2sgb3V0IHRoZQogICAgICAgICAgICA8YQogICAgICAgICAgICAgIGhyZWY9Imh0dHBzOi8vZ2l0aHViLmNvbS90ZW5zb3JmbG93L3RlbnNvcmJvYXJkL2Jsb2IvbWFzdGVyL1JFQURNRS5tZCIKICAgICAgICAgICAgICA+UkVBRE1FPC9hCiAgICAgICAgICAgID4KICAgICAgICAgICAgYW5kIHBlcmhhcHMgdGhlCiAgICAgICAgICAgIDxhCiAgICAgICAgICAgICAgaHJlZj0iaHR0cHM6Ly93d3cudGVuc29yZmxvdy5vcmcvZ2V0X3N0YXJ0ZWQvc3VtbWFyaWVzX2FuZF90ZW5zb3Jib2FyZCIKICAgICAgICAgICAgICA+VGVuc29yQm9hcmQgdHV0b3JpYWw8L2EKICAgICAgICAgICAgPi4KICAgICAgICAgIDwvcD4KCiAgICAgICAgICA8cD4KICAgICAgICAgICAgSWYgeW91IHRoaW5rIFRlbnNvckJvYXJkIGlzIGNvbmZpZ3VyZWQgcHJvcGVybHksIHBsZWFzZSBzZWUKICAgICAgICAgICAgPGEKICAgICAgICAgICAgICBocmVmPSJodHRwczovL2dpdGh1Yi5jb20vdGVuc29yZmxvdy90ZW5zb3Jib2FyZC9ibG9iL21hc3Rlci9SRUFETUUubWQjbXktdGVuc29yYm9hcmQtaXNudC1zaG93aW5nLWFueS1kYXRhLXdoYXRzLXdyb25nIgogICAgICAgICAgICAgID50aGUgc2VjdGlvbiBvZiB0aGUgUkVBRE1FIGRldm90ZWQgdG8gbWlzc2luZyBkYXRhIHByb2JsZW1zPC9hCiAgICAgICAgICAgID4KICAgICAgICAgICAgYW5kIGNvbnNpZGVyIGZpbGluZyBhbiBpc3N1ZSBvbiBHaXRIdWIuCiAgICAgICAgICA8L3A+CiAgICAgICAgPC9kaXY+CiAgICAgICAgPGRpdiBjbGFzcz0iZ3JhcGhib2FyZCI+CiAgICAgICAgICA8dGYtZ3JhcGgtYm9hcmQKICAgICAgICAgICAgaWQ9ImdyYXBoYm9hcmQiCiAgICAgICAgICAgIGRldmljZXMtZm9yLXN0YXRzPSJbW19kZXZpY2VzRm9yU3RhdHNdXSIKICAgICAgICAgICAgY29sb3ItYnk9Int7X2NvbG9yQnl9fSIKICAgICAgICAgICAgY29sb3ItYnktcGFyYW1zPSJ7e19jb2xvckJ5UGFyYW1zfX0iCiAgICAgICAgICAgIGdyYXBoLWhpZXJhcmNoeT0iW1tfZ3JhcGhIaWVyYXJjaHldXSIKICAgICAgICAgICAgZ3JhcGg9IltbX2dyYXBoXV0iCiAgICAgICAgICAgIGhpZXJhcmNoeS1wYXJhbXM9IltbX2hpZXJhcmNoeVBhcmFtc11dIgogICAgICAgICAgICBwcm9ncmVzcz0iW1tfcHJvZ3Jlc3NdXSIKICAgICAgICAgICAgZGVidWdnZXItZGF0YS1lbmFibGVkPSJbW19kZWJ1Z2dlckRhdGFFbmFibGVkXV0iCiAgICAgICAgICAgIGFyZS1oZWFsdGgtcGlsbHMtbG9hZGluZz0iW1tfYXJlSGVhbHRoUGlsbHNMb2FkaW5nXV0iCiAgICAgICAgICAgIGRlYnVnZ2VyLW51bWVyaWMtYWxlcnRzPSJbW19kZWJ1Z2dlck51bWVyaWNBbGVydHNdXSIKICAgICAgICAgICAgbm9kZS1uYW1lcy10by1oZWFsdGgtcGlsbHM9IltbX25vZGVOYW1lc1RvSGVhbHRoUGlsbHNdXSIKICAgICAgICAgICAgYWxsLXN0ZXBzLW1vZGUtZW5hYmxlZD0ie3thbGxTdGVwc01vZGVFbmFibGVkfX0iCiAgICAgICAgICAgIHNwZWNpZmljLWhlYWx0aC1waWxsLXN0ZXA9Int7c3BlY2lmaWNIZWFsdGhQaWxsU3RlcH19IgogICAgICAgICAgICBoZWFsdGgtcGlsbC1zdGVwLWluZGV4PSJbW19oZWFsdGhQaWxsU3RlcEluZGV4XV0iCiAgICAgICAgICAgIHJlbmRlci1oaWVyYXJjaHk9Int7X3JlbmRlckhpZXJhcmNoeX19IgogICAgICAgICAgICBzZWxlY3RlZC1ub2RlPSJ7e19zZWxlY3RlZE5vZGV9fSIKICAgICAgICAgICAgc3RhdHM9IltbX3N0YXRzXV0iCiAgICAgICAgICAgIHRyYWNlLWlucHV0cz0iW1tfdHJhY2VJbnB1dHNdXSIKICAgICAgICAgICAgYXV0by1leHRyYWN0LW5vZGVzPSJbW19hdXRvRXh0cmFjdE5vZGVzXV0iCiAgICAgICAgICA+PC90Zi1ncmFwaC1ib2FyZD4KICAgICAgICA8L2Rpdj4KICAgICAgPC9kaXY+CiAgICA8L3RmLWRhc2hib2FyZC1sYXlvdXQ+CiAgICA8c3R5bGU+CiAgICAgIDpob3N0IC9kZWVwLyB7CiAgICAgICAgZm9udC1mYW1pbHk6ICdSb2JvdG8nLCBzYW5zLXNlcmlmOwogICAgICB9CgogICAgICAuc2lkZWJhciB7CiAgICAgICAgZGlzcGxheTogZmxleDsKICAgICAgICBoZWlnaHQ6IDEwMCU7CiAgICAgIH0KCiAgICAgIC5jZW50ZXIgewogICAgICAgIHBvc2l0aW9uOiByZWxhdGl2ZTsKICAgICAgICBoZWlnaHQ6IDEwMCU7CiAgICAgIH0KCiAgICAgIHBhcGVyLWRpYWxvZyB7CiAgICAgICAgcGFkZGluZzogMjBweDsKICAgICAgfQoKICAgICAgLm5vLWRhdGEtbWVzc2FnZSB7CiAgICAgICAgbWF4LXdpZHRoOiA1NDBweDsKICAgICAgICBtYXJnaW46IDgwcHggYXV0byAwIGF1dG87CiAgICAgIH0KCiAgICAgIC5ncmFwaGJvYXJkIHsKICAgICAgICBoZWlnaHQ6IDEwMCU7CiAgICAgIH0KCiAgICAgIC5uby1ncmFwaCAuZ3JhcGhib2FyZCB7CiAgICAgICAgZGlzcGxheTogbm9uZTsKICAgICAgfQoKICAgICAgLmNlbnRlcjpub3QoLm5vLWdyYXBoKSAubm8tZGF0YS1tZXNzYWdlIHsKICAgICAgICBkaXNwbGF5OiBub25lOwogICAgICB9CiAgICA8L3N0eWxlPgogIGAsdChbbyh7dHlwZTpBcnJheX0pLGUoImRlc2lnbjp0eXBlIixBcnJheSldLGdSdC5wcm90b3R5cGUsIl9kYXRhc2V0cyIsdm9pZCAwKSx0KFtvKHt0eXBlOkJvb2xlYW59KSxlKCJkZXNpZ246dHlwZSIsQm9vbGVhbildLGdSdC5wcm90b3R5cGUsIl9kYXRhc2V0c0ZldGNoZWQiLHZvaWQgMCksdChbbyh7dHlwZTpOdW1iZXJ9KSxlKCJkZXNpZ246dHlwZSIsTnVtYmVyKV0sZ1J0LnByb3RvdHlwZSwiX3NlbGVjdGVkRGF0YXNldCIsdm9pZCAwKSx0KFtvKHt0eXBlOk9iamVjdCxvYnNlcnZlcjoiX3JlbmRlckhpZXJhcmNoeUNoYW5nZWQifSksZSgiZGVzaWduOnR5cGUiLGJOdCldLGdSdC5wcm90b3R5cGUsIl9yZW5kZXJIaWVyYXJjaHkiLHZvaWQgMCksdChbbyh7dHlwZTpPYmplY3R9KSxlKCJkZXNpZ246dHlwZSIsaHIpXSxnUnQucHJvdG90eXBlLCJfcmVxdWVzdE1hbmFnZXIiLHZvaWQgMCksdChbbyh7dHlwZTpPYmplY3R9KSxlKCJkZXNpZ246dHlwZSIsRU8pXSxnUnQucHJvdG90eXBlLCJfY2FuY2VsbGVyIix2b2lkIDApLHQoW28oe3R5cGU6Qm9vbGVhbn0pLGUoImRlc2lnbjp0eXBlIixCb29sZWFuKV0sZ1J0LnByb3RvdHlwZSwiX2RlYnVnZ2VyRGF0YUVuYWJsZWQiLHZvaWQgMCksdChbbyh7dHlwZTpCb29sZWFufSksZSgiZGVzaWduOnR5cGUiLEJvb2xlYW4pXSxnUnQucHJvdG90eXBlLCJhbGxTdGVwc01vZGVFbmFibGVkIix2b2lkIDApLHQoW28oe3R5cGU6TnVtYmVyfSksZSgiZGVzaWduOnR5cGUiLE51bWJlcildLGdSdC5wcm90b3R5cGUsInNwZWNpZmljSGVhbHRoUGlsbFN0ZXAiLHZvaWQgMCksdChbbyh7dHlwZTpCb29sZWFuLG9ic2VydmVyOiJfaGVhbHRoUGlsbHNUb2dnbGVkT25DaGFuZ2VkIn0pLGUoImRlc2lnbjp0eXBlIixCb29sZWFuKV0sZ1J0LnByb3RvdHlwZSwiaGVhbHRoUGlsbHNUb2dnbGVkT24iLHZvaWQgMCksdChbbyh7dHlwZTpTdHJpbmcsbm90aWZ5OiEwfSksZSgiZGVzaWduOnR5cGUiLFN0cmluZyldLGdSdC5wcm90b3R5cGUsInNlbGVjdGVkTm9kZSIsdm9pZCAwKSx0KFtvKHt0eXBlOkJvb2xlYW59KSxlKCJkZXNpZ246dHlwZSIsQm9vbGVhbildLGdSdC5wcm90b3R5cGUsIl9pc0F0dGFjaGVkIix2b2lkIDApLHQoW28oe3R5cGU6Qm9vbGVhbn0pLGUoImRlc2lnbjp0eXBlIixCb29sZWFuKV0sZ1J0LnByb3RvdHlwZSwiX2luaXRpYWxpemVkIix2b2lkIDApLHQoW28oe3R5cGU6Qm9vbGVhbn0pLGUoImRlc2lnbjp0eXBlIixCb29sZWFuKV0sZ1J0LnByb3RvdHlwZSwiX2FyZUhlYWx0aFBpbGxzTG9hZGluZyIsdm9pZCAwKSx0KFtvKHt0eXBlOkFycmF5LG5vdGlmeTohMH0pLGUoImRlc2lnbjp0eXBlIixBcnJheSldLGdSdC5wcm90b3R5cGUsIl9kZWJ1Z2dlck51bWVyaWNBbGVydHMiLHZvaWQgMCksdChbbyh7dHlwZTpPYmplY3R9KSxlKCJkZXNpZ246dHlwZSIsT2JqZWN0KV0sZ1J0LnByb3RvdHlwZSwiX25vZGVOYW1lc1RvSGVhbHRoUGlsbHMiLHZvaWQgMCksdChbbyh7dHlwZTpOdW1iZXJ9KSxlKCJkZXNpZ246dHlwZSIsTnVtYmVyKV0sZ1J0LnByb3RvdHlwZSwiX2hlYWx0aFBpbGxTdGVwSW5kZXgiLHZvaWQgMCksdChbbyh7dHlwZTpOdW1iZXJ9KSxlKCJkZXNpZ246dHlwZSIsTnVtYmVyKV0sZ1J0LnByb3RvdHlwZSwiX2hlYWx0aFBpbGxSZXF1ZXN0SWQiLHZvaWQgMCksdChbbyh7dHlwZTpOdW1iZXJ9KSxlKCJkZXNpZ246dHlwZSIsTnVtYmVyKV0sZ1J0LnByb3RvdHlwZSwiX2hlYWx0aFBpbGxTdGVwUmVxdWVzdFRpbWVySWQiLHZvaWQgMCksdChbbyh7dHlwZTpOdW1iZXJ9KSxlKCJkZXNpZ246dHlwZSIsTnVtYmVyKV0sZ1J0LnByb3RvdHlwZSwiX2hlYWx0aFBpbGxTdGVwUmVxdWVzdFRpbWVyRGVsYXkiLHZvaWQgMCksdChbbyh7dHlwZTpBcnJheX0pLGUoImRlc2lnbjp0eXBlIixBcnJheSldLGdSdC5wcm90b3R5cGUsInJ1bnMiLHZvaWQgMCksdChbbyh7dHlwZTpTdHJpbmcsbm90aWZ5OiEwLG9ic2VydmVyOiJfcnVuT2JzZXJ2ZXIifSksZSgiZGVzaWduOnR5cGUiLFN0cmluZyldLGdSdC5wcm90b3R5cGUsInJ1biIsdm9pZCAwKSx0KFtvKHt0eXBlOk9iamVjdH0pLGUoImRlc2lnbjp0eXBlIixPYmplY3QpXSxnUnQucHJvdG90eXBlLCJfc2VsZWN0aW9uIix2b2lkIDApLHQoW28oe3R5cGU6T2JqZWN0fSksZSgiZGVzaWduOnR5cGUiLE9iamVjdCldLGdSdC5wcm90b3R5cGUsIl9jb21wYXRpYmlsaXR5UHJvdmlkZXIiLHZvaWQgMCksdChbbyh7dHlwZTpCb29sZWFufSksZSgiZGVzaWduOnR5cGUiLEJvb2xlYW4pXSxnUnQucHJvdG90eXBlLCJfdHJhY2VJbnB1dHMiLHZvaWQgMCksdChbbyh7dHlwZTpCb29sZWFufSksZSgiZGVzaWduOnR5cGUiLEJvb2xlYW4pXSxnUnQucHJvdG90eXBlLCJfYXV0b0V4dHJhY3ROb2RlcyIsdm9pZCAwKSx0KFtvKHt0eXBlOk9iamVjdH0pLGUoImRlc2lnbjp0eXBlIixPYmplY3QpXSxnUnQucHJvdG90eXBlLCJfc2VsZWN0ZWRGaWxlIix2b2lkIDApLHQoW2EoIl9pc0F0dGFjaGVkIiksZSgiZGVzaWduOnR5cGUiLEZ1bmN0aW9uKSxlKCJkZXNpZ246cGFyYW10eXBlcyIsW10pLGUoImRlc2lnbjpyZXR1cm50eXBlIix2b2lkIDApXSxnUnQucHJvdG90eXBlLCJfbWF5YmVJbml0aWFsaXplRGFzaGJvYXJkIixudWxsKSx0KFthKCJfZGF0YXNldHNGZXRjaGVkIiwiX2RhdGFzZXRzIiwicnVuIiksZSgiZGVzaWduOnR5cGUiLEZ1bmN0aW9uKSxlKCJkZXNpZ246cGFyYW10eXBlcyIsW10pLGUoImRlc2lnbjpyZXR1cm50eXBlIix2b2lkIDApXSxnUnQucHJvdG90eXBlLCJfZGV0ZXJtaW5lU2VsZWN0ZWREYXRhc2V0IixudWxsKSx0KFthKCJfZGF0YXNldHNGZXRjaGVkIiwiX2RhdGFzZXRzIiwiX3NlbGVjdGVkRGF0YXNldCIpLGUoImRlc2lnbjp0eXBlIixGdW5jdGlvbiksZSgiZGVzaWduOnBhcmFtdHlwZXMiLFtdKSxlKCJkZXNpZ246cmV0dXJudHlwZSIsdm9pZCAwKV0sZ1J0LnByb3RvdHlwZSwiX3VwZGF0ZVNlbGVjdGVkRGF0YXNldE5hbWUiLG51bGwpLGdSdD10KFtpKCJ0Zi1ncmFwaC1kYXNoYm9hcmQiKV0sZ1J0KTtjb25zdCBfUnQ9c0k7bGV0IHlSdD1jbGFzcyBleHRlbmRzKHRyKHllKSl7Y29uc3RydWN0b3IoKXtzdXBlciguLi5hcmd1bWVudHMpLHRoaXMubW9kZT0ib2Zmc2V0Iix0aGlzLnRpbWVQcm9wZXJ0eT0ic3RlcCIsdGhpcy5iaW5zPSJiaW5zIix0aGlzLng9IngiLHRoaXMuZHg9ImR4Iix0aGlzLnk9InkiLHRoaXMuY29sb3JTY2FsZT1fUnQuc2NhbGVPcmRpbmFsKF9SdC5zY2hlbWVDYXRlZ29yeTEwKSx0aGlzLm1vZGVUcmFuc2l0aW9uRHVyYXRpb249NTAwLHRoaXMuX25hbWU9bnVsbCx0aGlzLl9kYXRhPW51bGx9cmVhZHkoKXtzdXBlci5yZWFkeSgpLHRoaXMuc2NvcGVTdWJ0cmVlKHRoaXMuJC5zdmcsITApfWF0dGFjaGVkKCl7dGhpcy5fYXR0YWNoZWQ9ITB9ZGV0YWNoZWQoKXt0aGlzLl9hdHRhY2hlZD0hMX1zZXRTZXJpZXNEYXRhKHQsZSl7dGhpcy5fbmFtZT10LHRoaXMuX2RhdGE9ZSx0aGlzLnJlZHJhdygpfV9yZWRyYXdPbkNoYW5nZSgpe3RoaXMucmVkcmF3KCl9cmVkcmF3KCl7dGhpcy5fZHJhdygwKX1fbW9kZVJlZHJhdygpe3RoaXMuX2RyYXcodGhpcy5tb2RlVHJhbnNpdGlvbkR1cmF0aW9uKX1fZHJhdyh0KXtpZighdGhpcy5fYXR0YWNoZWR8fCF0aGlzLl9kYXRhKXJldHVybjtpZih2b2lkIDA9PT10KXRocm93IG5ldyBFcnJvcigidnotaGlzdG9ncmFtLXRpbWVzZXJpZXMgX2RyYXcgbmVlZHMgZHVyYXRpb24iKTtpZih0aGlzLl9kYXRhLmxlbmd0aDw9MCl0aHJvdyBuZXcgRXJyb3IoIk5vdCBlbm91Z2ggc3RlcHMgaW4gdGhlIGRhdGEiKTtpZighdGhpcy5fZGF0YVswXS5oYXNPd25Qcm9wZXJ0eSh0aGlzLmJpbnMpKXRocm93IG5ldyBFcnJvcigiTm8gYmlucyBwcm9wZXJ0eSBvZiAnIit0aGlzLmJpbnMrIicgaW4gZGF0YSIpO2lmKHRoaXMuX2RhdGFbMF1bdGhpcy5iaW5zXS5sZW5ndGg8PTApdGhyb3cgbmV3IEVycm9yKCJNdXN0IGhhdmUgYXQgbGVhc3Qgb25lIGJpbiBpbiBiaW5zIGluIGRhdGEiKTtpZighdGhpcy5fZGF0YVswXVt0aGlzLmJpbnNdWzBdLmhhc093blByb3BlcnR5KHRoaXMueCkpdGhyb3cgbmV3IEVycm9yKCJObyB4IHByb3BlcnR5ICciK3RoaXMueCsiJyBvbiBiaW5zIGRhdGEiKTtpZighdGhpcy5fZGF0YVswXVt0aGlzLmJpbnNdWzBdLmhhc093blByb3BlcnR5KHRoaXMuZHgpKXRocm93IG5ldyBFcnJvcigiTm8gZHggcHJvcGVydHkgJyIrdGhpcy5keCsiJyBvbiBiaW5zIGRhdGEiKTtpZighdGhpcy5fZGF0YVswXVt0aGlzLmJpbnNdWzBdLmhhc093blByb3BlcnR5KHRoaXMueSkpdGhyb3cgbmV3IEVycm9yKCJObyB5IHByb3BlcnR5ICciK3RoaXMueSsiJyBvbiBiaW5zIGRhdGEiKTt2YXIgZT10aGlzLnRpbWVQcm9wZXJ0eSxuPXRoaXMueCxpPXRoaXMuYmlucyxyPXRoaXMuZHgsbz10aGlzLnksYT10aGlzLl9kYXRhLHM9dGhpcy5tb2RlLGw9X1J0LmhjbCh0aGlzLmNvbG9yU2NhbGUodGhpcy5fbmFtZSkpLGM9X1J0LnNlbGVjdCh0aGlzLiQudG9vbHRpcCksdT1mdW5jdGlvbih0KXtyZXR1cm4gdFtuXX0saD1mdW5jdGlvbih0KXtyZXR1cm4gdFtvXX0sZD1mdW5jdGlvbih0KXtyZXR1cm4gdFtuXSt0W3JdfSxwPWZ1bmN0aW9uKHQpe3JldHVybiB0W2VdfTsicmVsYXRpdmUiPT09ZSYmKHA9ZnVuY3Rpb24odCl7cmV0dXJuIHQud2FsbF90aW1lLWFbMF0ud2FsbF90aW1lfSk7dmFyIGYsbT10aGlzLiQuc3ZnLmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpLGc9bS53aWR0aCxfPW0uaGVpZ2h0LHk9e3RvcDo1LHJpZ2h0OjYwLGJvdHRvbToyMCxsZWZ0OjI0fTsib2Zmc2V0Ij09PXM/eS50b3A9NSsoZj1fLzIuNSk6Zj1fLXkudG9wLXkuYm90dG9tO3ZhciB2PWcteS5sZWZ0LXkucmlnaHQsYj1fLXkudG9wLXkuYm90dG9tO19SdC5taW4oYSx1KSxfUnQubWF4KGEsZCk7dmFyIHg9X1J0LmZvcm1hdCgiLjNuIiksdz1fUnQuZm9ybWF0KCIuMGYiKTsid2FsbF90aW1lIj09PWU/dz1fUnQudGltZUZvcm1hdCgiJW0vJWQgJVgiKToicmVsYXRpdmUiPT09ZSYmKHc9ZnVuY3Rpb24odCl7cmV0dXJuIF9SdC5mb3JtYXQoIi4xciIpKHQvMzZlNSkrImgifSk7dmFyIFM9YS5tYXAoKGZ1bmN0aW9uKHQsZSl7cmV0dXJuW19SdC5taW4odFtpXSx1KSxfUnQubWF4KHRbaV0sZCldfSkpLE09YS5tYXAoKGZ1bmN0aW9uKHQpe3JldHVybiBfUnQuZXh0ZW50KHRbaV0saCl9KSksRT01MDAsVD1fUnQuZXh0ZW50KGEscCksQT0oIndhbGxfdGltZSI9PT1lP19SdC5zY2FsZVRpbWUoKTpfUnQuc2NhbGVMaW5lYXIoKSkuZG9tYWluKFQpLnJhbmdlKFswLCJvZmZzZXQiPT09cz9iOjBdKSxDPV9SdC5zY2FsZUxpbmVhcigpLmRvbWFpbihbMCxfUnQubWF4KGEsKGZ1bmN0aW9uKHQsZSl7cmV0dXJuIE1bZV1bMV19KSldKS5yYW5nZShbZiwwXSksaz1fUnQuc2NhbGVMaW5lYXIoKS5kb21haW4oQy5kb21haW4oKSkucmFuZ2UoW0UsMF0pLEw9X1J0LnNjYWxlTGluZWFyKCkuZG9tYWluKFtfUnQubWluKGEsKGZ1bmN0aW9uKHQsZSl7cmV0dXJuIFNbZV1bMF19KSksX1J0Lm1heChhLChmdW5jdGlvbih0LGUpe3JldHVybiBTW2VdWzFdfSkpXSkubmljZSgpLnJhbmdlKFswLHZdKSxQPV9SdC5zY2FsZUxpbmVhcigpLmRvbWFpbihMLmRvbWFpbigpKS5yYW5nZShbMCxFXSk7Y29uc3QgST1fUnQuc2NhbGVMaW5lYXIoKS5kb21haW4oX1J0LmV4dGVudChhLHApKS5yYW5nZShbbC5icmlnaHRlcigpLGwuZGFya2VyKCldKS5pbnRlcnBvbGF0ZShfUnQuaW50ZXJwb2xhdGVIY2wpO3ZhciBOPV9SdC5heGlzQm90dG9tKEwpLnRpY2tzKE1hdGgubWF4KDIsdi8yMCkpLE89X1J0LmF4aXNSaWdodChBKS50aWNrcyhNYXRoLm1heCgyLGIvMTUpKS50aWNrRm9ybWF0KHcpLFI9X1J0LmF4aXNSaWdodChDKS50aWNrcyhNYXRoLm1heCgyLGIvMTUpKS50aWNrU2l6ZSh2KzUpLnRpY2tGb3JtYXQoeCksej1mdW5jdGlvbih0KXtyZXR1cm4gdFtuXSt0W3JdLzJ9LEQ9X1J0LmxpbmUoKS54KChmdW5jdGlvbih0KXtyZXR1cm4gUCh6KHQpKX0pKS55KChmdW5jdGlvbih0KXtyZXR1cm4gayh0W29dKX0pKSxCPXRoaXMuJC5zdmcsSD1fUnQuc2VsZWN0KEIpLEY9SC50cmFuc2l0aW9uKCkuZHVyYXRpb24odCksVj1ILnNlbGVjdCgiZyIpLmNsYXNzZWQoInNtYWxsIiwoZnVuY3Rpb24oKXtyZXR1cm4gdj4wJiZ2PD0xNTB9KSkuY2xhc3NlZCgibWVkaXVtIiwoZnVuY3Rpb24oKXtyZXR1cm4gdj4xNTAmJnY8PTMwMH0pKS5jbGFzc2VkKCJsYXJnZSIsKGZ1bmN0aW9uKCl7cmV0dXJuIHY+MzAwfSkpLGo9Ri5zZWxlY3QoImciKS5hdHRyKCJ0cmFuc2Zvcm0iLCJ0cmFuc2xhdGUoIit5LmxlZnQrIiwiK3kudG9wKyIpIiksVT1fUnQuYmlzZWN0b3IoZCkubGVmdCxHPVYuc2VsZWN0KCIuc3RhZ2UiKS5vbigibW91c2VvdmVyIiwoZnVuY3Rpb24oKXtKLnN0eWxlKCJvcGFjaXR5IiwxKSxldC5zdHlsZSgib3BhY2l0eSIsMSkscnQuc3R5bGUoIm9wYWNpdHkiLDEpLHN0LnN0eWxlKCJvcGFjaXR5IiwxKSxjLnN0eWxlKCJvcGFjaXR5IiwxKX0pKS5vbigibW91c2VvdXQiLChmdW5jdGlvbigpe0ouc3R5bGUoIm9wYWNpdHkiLDApLGV0LnN0eWxlKCJvcGFjaXR5IiwwKSxydC5zdHlsZSgib3BhY2l0eSIsMCksc3Quc3R5bGUoIm9wYWNpdHkiLDApLEouY2xhc3NlZCgiaG92ZXItY2xvc2VzdCIsITEpLEsuY2xhc3NlZCgib3V0bGluZS1ob3ZlciIsITEpLGMuc3R5bGUoIm9wYWNpdHkiLDApfSkpLm9uKCJtb3VzZW1vdmUiLChmdW5jdGlvbiBXKCl7dmFyIHQsYT1fUnQubW91c2UodGhpcyksbD1MLmludmVydChhWzBdKTtmdW5jdGlvbiB1KHQpe3JldHVybiBNYXRoLm1pbih0W2ldLmxlbmd0aC0xLFUodFtpXSxsKSl9QS5pbnZlcnQoYVsxXSk7dmFyIGgsZD0xLzA7Si5hdHRyKCJ0cmFuc2Zvcm0iLChmdW5jdGlvbihlLGwpe3ZhciBjPXUoZSk7aD1lO3ZhciBtPUwoZVtpXVtjXVtuXStlW2ldW2NdW3JdLzIpLGc9QyhlW2ldW2NdW29dKSxfPSJvZmZzZXQiPT09cz9BKHAoZSkpLShmLWcpOmcseT1NYXRoLmFicyhhWzFdLV8pO3JldHVybiB5PGQmJihkPXksdD1lKSwidHJhbnNsYXRlKCIrbSsiLCIrZysiKSJ9KSksSi5zZWxlY3QoInRleHQiKS50ZXh0KChmdW5jdGlvbih0KXt2YXIgZT11KHQpO3JldHVybiB0W2ldW2VdW29dfSkpLEouY2xhc3NlZCgiaG92ZXItY2xvc2VzdCIsKGZ1bmN0aW9uKGUpe3JldHVybiBlPT09dH0pKSxLLmNsYXNzZWQoIm91dGxpbmUtaG92ZXIiLChmdW5jdGlvbihlKXtyZXR1cm4gZT09PXR9KSk7dmFyIG09dShoKTtldC5hdHRyKCJ0cmFuc2Zvcm0iLChmdW5jdGlvbih0KXtyZXR1cm4idHJhbnNsYXRlKCIrTChoW2ldW21dW25dK2hbaV1bbV1bcl0vMikrIiwgIitiKyIpIn0pKS5zZWxlY3QoInRleHQiKS50ZXh0KChmdW5jdGlvbih0KXtyZXR1cm4geChoW2ldW21dW25dK2hbaV1bbV1bcl0vMil9KSk7dmFyIGc9Ty50aWNrRm9ybWF0KCk7cnQuYXR0cigidHJhbnNmb3JtIiwoZnVuY3Rpb24oZSl7cmV0dXJuInRyYW5zbGF0ZSgiK3YrIiwgIisoIm9mZnNldCI9PT1zP0EocCh0KSk6MCkrIikifSkpLnN0eWxlKCJkaXNwbGF5Iiwib2Zmc2V0Ij09PXM/IiI6Im5vbmUiKS5zZWxlY3QoInRleHQiKS50ZXh0KChmdW5jdGlvbihlKXtyZXR1cm4gZyhwKHQpKX0pKTt2YXIgXz1SLnRpY2tGb3JtYXQoKTtzdC5hdHRyKCJ0cmFuc2Zvcm0iLChmdW5jdGlvbihlKXtyZXR1cm4idHJhbnNsYXRlKCIrdisiLCAiKygib2Zmc2V0Ij09PXM/MDpDKHRbaV1bbV1bb10pKSsiKSJ9KSkuc3R5bGUoImRpc3BsYXkiLCJvZmZzZXQiPT09cz8ibm9uZSI6IiIpLnNlbGVjdCgidGV4dCIpLnRleHQoKGZ1bmN0aW9uKGUpe3JldHVybiBfKHRbaV1bbV1bb10pfSkpO3ZhciB5PV9SdC5tb3VzZShCKTtjLnN0eWxlKCJ0cmFuc2Zvcm0iLCJ0cmFuc2xhdGUoIisoeVswXSsxNSkrInB4LCIrKHlbMV0tMTUpKyJweCkiKS5zZWxlY3QoInNwYW4iKS50ZXh0KCJvZmZzZXQiPT09cz9fKHRbaV1bbV1bb10pOigic3RlcCI9PT1lPyJzdGVwICI6IiIpK2cocCh0KSkpfSkpO0cuc2VsZWN0KCIuYmFja2dyb3VuZCIpLmF0dHIoInRyYW5zZm9ybSIsInRyYW5zbGF0ZSgiKy15LmxlZnQrIiwiKy15LnRvcCsiKSIpLmF0dHIoIndpZHRoIixnKS5hdHRyKCJoZWlnaHQiLF8pO3ZhciBxPUcuc2VsZWN0QWxsKCIuaGlzdG9ncmFtIikuZGF0YShhKTtxLmV4aXQoKS5yZW1vdmUoKTt2YXIgWT1xLmVudGVyKCkuYXBwZW5kKCJnIikuYXR0cigiY2xhc3MiLCJoaXN0b2dyYW0iKSxYPVkubWVyZ2UocSkuc29ydCgoZnVuY3Rpb24odCxlKXtyZXR1cm4gcCh0KS1wKGUpfSkpLCQ9ai5zZWxlY3RBbGwoIi5oaXN0b2dyYW0iKS5hdHRyKCJ0cmFuc2Zvcm0iLChmdW5jdGlvbih0KXtyZXR1cm4idHJhbnNsYXRlKDAsICIrKCJvZmZzZXQiPT09cz9BKHAodCkpLWY6MCkrIikifSkpO1kuYXBwZW5kKCJsaW5lIikuYXR0cigiY2xhc3MiLCJiYXNlbGluZSIpLCQuc2VsZWN0KCIuYmFzZWxpbmUiKS5zdHlsZSgic3Ryb2tlLW9wYWNpdHkiLChmdW5jdGlvbih0KXtyZXR1cm4ib2Zmc2V0Ij09PXM/LjE6MH0pKS5hdHRyKCJ5MSIsZikuYXR0cigieTIiLGYpLmF0dHIoIngyIix2KSxZLmFwcGVuZCgicGF0aCIpLmF0dHIoImNsYXNzIiwib3V0bGluZSIpO3ZhciBLPVguc2VsZWN0KCIub3V0bGluZSIpLmF0dHIoInZlY3Rvci1lZmZlY3QiLCJub24tc2NhbGluZy1zdHJva2UiKS5hdHRyKCJkIiwoZnVuY3Rpb24odCl7cmV0dXJuKGZ1bmN0aW9uKHQpe3JldHVybiJNIitQKHoodFswXSkpKyIsIitrKDApKyJMIitEKHQpLnNsaWNlKDEpKyJMIitQKHoodFt0Lmxlbmd0aC0xXSkpKyIsIitrKDApfSkodFtpXSl9KSkuc3R5bGUoInN0cm9rZS13aWR0aCIsMSk7JC5zZWxlY3QoIi5vdXRsaW5lIikuYXR0cigidHJhbnNmb3JtIiwic2NhbGUoIit2L0UrIiwgIitmL0UrIikiKS5zdHlsZSgic3Ryb2tlIiwoZnVuY3Rpb24odCl7cmV0dXJuIm9mZnNldCI9PT1zPyJ3aGl0ZSI6SShwKHQpKX0pKS5zdHlsZSgiZmlsbC1vcGFjaXR5IiwoZnVuY3Rpb24odCl7cmV0dXJuIm9mZnNldCI9PT1zPzE6MH0pKS5zdHlsZSgiZmlsbCIsKGZ1bmN0aW9uKHQpe3JldHVybiBJKHAodCkpfSkpO3ZhciBaPVkuYXBwZW5kKCJnIikuYXR0cigiY2xhc3MiLCJob3ZlciIpLEo9WC5zZWxlY3QoIi5ob3ZlciIpLnN0eWxlKCJmaWxsIiwoZnVuY3Rpb24odCl7cmV0dXJuIEkocCh0KSl9KSk7Wi5hcHBlbmQoImNpcmNsZSIpLmF0dHIoInIiLDIpLFouYXBwZW5kKCJ0ZXh0Iikuc3R5bGUoImRpc3BsYXkiLCJub25lIikuYXR0cigiZHgiLDQpO3ZhciBRPVYuc2VsZWN0KCIueC1heGlzLWhvdmVyIikuc2VsZWN0QWxsKCIubGFiZWwiKS5kYXRhKFsieCJdKSx0dD1RLmVudGVyKCkuYXBwZW5kKCJnIikuYXR0cigiY2xhc3MiLCJsYWJlbCIpLGV0PVEubWVyZ2UodHQpO3R0LmFwcGVuZCgicmVjdCIpLmF0dHIoIngiLC0yMCkuYXR0cigieSIsNikuYXR0cigid2lkdGgiLDQwKS5hdHRyKCJoZWlnaHQiLDE0KSx0dC5hcHBlbmQoImxpbmUiKS5hdHRyKCJ4MSIsMCkuYXR0cigieDIiLDApLmF0dHIoInkxIiwwKS5hdHRyKCJ5MiIsNiksdHQuYXBwZW5kKCJ0ZXh0IikuYXR0cigiZHkiLDE4KTt2YXIgbnQ9Vi5zZWxlY3QoIi55LWF4aXMtaG92ZXIiKS5zZWxlY3RBbGwoIi5sYWJlbCIpLmRhdGEoWyJ5Il0pLGl0PW50LmVudGVyKCkuYXBwZW5kKCJnIikuYXR0cigiY2xhc3MiLCJsYWJlbCIpLHJ0PW50Lm1lcmdlKGl0KTtpdC5hcHBlbmQoInJlY3QiKS5hdHRyKCJ4Iiw4KS5hdHRyKCJ5IiwtNikuYXR0cigid2lkdGgiLDQwKS5hdHRyKCJoZWlnaHQiLDE0KSxpdC5hcHBlbmQoImxpbmUiKS5hdHRyKCJ4MSIsMCkuYXR0cigieDIiLDYpLmF0dHIoInkxIiwwKS5hdHRyKCJ5MiIsMCksaXQuYXBwZW5kKCJ0ZXh0IikuYXR0cigiZHgiLDgpLmF0dHIoImR5Iiw0KTt2YXIgb3Q9Vi5zZWxlY3QoIi55LXNsaWNlLWF4aXMtaG92ZXIiKS5zZWxlY3RBbGwoIi5sYWJlbCIpLmRhdGEoWyJ5Il0pLGF0PW90LmVudGVyKCkuYXBwZW5kKCJnIikuYXR0cigiY2xhc3MiLCJsYWJlbCIpLHN0PW90Lm1lcmdlKGF0KTthdC5hcHBlbmQoInJlY3QiKS5hdHRyKCJ4Iiw4KS5hdHRyKCJ5IiwtNikuYXR0cigid2lkdGgiLDQwKS5hdHRyKCJoZWlnaHQiLDE0KSxhdC5hcHBlbmQoImxpbmUiKS5hdHRyKCJ4MSIsMCkuYXR0cigieDIiLDYpLmF0dHIoInkxIiwwKS5hdHRyKCJ5MiIsMCksYXQuYXBwZW5kKCJ0ZXh0IikuYXR0cigiZHgiLDgpLmF0dHIoImR5Iiw0KSxqLnNlbGVjdCgiLnkuYXhpcy5zbGljZSIpLnN0eWxlKCJvcGFjaXR5Iiwib2Zmc2V0Ij09PXM/MDoxKS5hdHRyKCJ0cmFuc2Zvcm0iLCJ0cmFuc2xhdGUoMCwgIisoIm9mZnNldCI9PT1zPy1mOjApKyIpIikuY2FsbChSKSxqLnNlbGVjdCgiLnguYXhpcyIpLmF0dHIoInRyYW5zZm9ybSIsInRyYW5zbGF0ZSgwLCAiK2IrIikiKS5jYWxsKE4pLGouc2VsZWN0KCIueS5heGlzIikuc3R5bGUoIm9wYWNpdHkiLCJvZmZzZXQiPT09cz8xOjApLmF0dHIoInRyYW5zZm9ybSIsInRyYW5zbGF0ZSgiK3YrIiwgIisoIm9mZnNldCI9PT1zPzA6YikrIikiKS5jYWxsKE8pLGouc2VsZWN0QWxsKCIudGljayB0ZXh0IikuYXR0cigiZmlsbCIsIiNhYWEiKSxqLnNlbGVjdEFsbCgiLmF4aXMgcGF0aC5kb21haW4iKS5hdHRyKCJzdHJva2UiLCJub25lIil9fTtmdW5jdGlvbiB2UnQodCl7Y29uc3RbZSxuLGldPXQ7cmV0dXJue3dhbGxfdGltZTplLHN0ZXA6bixtaW46WWwoaS5tYXAoKChbdCwsXSk9PnQpKSksbWF4OldsKGkubWFwKCgoWyx0XSk9PnQpKSksYnVja2V0czppLm1hcCgoKFt0LGUsbl0pPT4oe2xlZnQ6dCxyaWdodDplLGNvdW50Om59KSkpfX1mdW5jdGlvbiBiUnQodCxlLG4saT0zMCl7bj09PWUmJihuPTEuMSplKzEsZT1lLzEuMS0xKTtjb25zdCByPShuLWUpL2k7bGV0IG89MDtyZXR1cm4gemwoZSxuLHIpLm1hcCgoaT0+e2NvbnN0IGE9aStyO2xldCBzPTA7Zm9yKDtvPHQuYnVja2V0cy5sZW5ndGg7KXtjb25zdCByPU1hdGgubWluKG4sdC5idWNrZXRzW29dLnJpZ2h0KSxsPU1hdGgubWF4KGUsdC5idWNrZXRzW29dLmxlZnQpLGM9TWF0aC5taW4ocixhKS1NYXRoLm1heChsLGkpLHU9Yy8oci1sKSp0LmJ1Y2tldHNbb10uY291bnQ7aWYocys9Yz4wP3U6MCxyPmEpYnJlYWs7bysrfXJldHVybnt4OmksZHg6cix5OnN9fSkpfXlSdC50ZW1wbGF0ZT1fZWAKICAgIDxkaXYgaWQ9InRvb2x0aXAiPjxzcGFuPjwvc3Bhbj48L2Rpdj4KICAgIDxzdmcgaWQ9InN2ZyI+CiAgICAgIDxnPgogICAgICAgIDxnIGNsYXNzPSJheGlzIHgiPjwvZz4KICAgICAgICA8ZyBjbGFzcz0iYXhpcyB5Ij48L2c+CiAgICAgICAgPGcgY2xhc3M9ImF4aXMgeSBzbGljZSI+PC9nPgogICAgICAgIDxnIGNsYXNzPSJzdGFnZSI+CiAgICAgICAgICA8cmVjdCBjbGFzcz0iYmFja2dyb3VuZCI+PC9yZWN0PgogICAgICAgIDwvZz4KICAgICAgICA8ZyBjbGFzcz0ieC1heGlzLWhvdmVyIj48L2c+CiAgICAgICAgPGcgY2xhc3M9InktYXhpcy1ob3ZlciI+PC9nPgogICAgICAgIDxnIGNsYXNzPSJ5LXNsaWNlLWF4aXMtaG92ZXIiPjwvZz4KICAgICAgPC9nPgogICAgPC9zdmc+CgogICAgPHN0eWxlPgogICAgICA6aG9zdCB7CiAgICAgICAgZGlzcGxheTogZmxleDsKICAgICAgICBmbGV4LWRpcmVjdGlvbjogY29sdW1uOwogICAgICAgIGZsZXgtZ3JvdzogMTsKICAgICAgICBmbGV4LXNocmluazogMTsKICAgICAgICBwb3NpdGlvbjogcmVsYXRpdmU7CiAgICAgIH0KCiAgICAgIHN2ZyB7CiAgICAgICAgZm9udC1mYW1pbHk6IHJvYm90bywgc2Fucy1zZXJpZjsKICAgICAgICBvdmVyZmxvdzogdmlzaWJsZTsKICAgICAgICBkaXNwbGF5OiBibG9jazsKICAgICAgICB3aWR0aDogMTAwJTsKICAgICAgICBmbGV4LWdyb3c6IDE7CiAgICAgICAgZmxleC1zaHJpbms6IDE7CiAgICAgIH0KCiAgICAgICN0b29sdGlwIHsKICAgICAgICBwb3NpdGlvbjogYWJzb2x1dGU7CiAgICAgICAgZGlzcGxheTogYmxvY2s7CiAgICAgICAgb3BhY2l0eTogMDsKICAgICAgICBmb250LXdlaWdodDogYm9sZDsKICAgICAgICBmb250LXNpemU6IDExcHg7CiAgICAgIH0KCiAgICAgIC5iYWNrZ3JvdW5kIHsKICAgICAgICBmaWxsLW9wYWNpdHk6IDA7CiAgICAgICAgZmlsbDogcmVkOwogICAgICB9CgogICAgICAuaGlzdG9ncmFtIHsKICAgICAgICBwb2ludGVyLWV2ZW50czogbm9uZTsKICAgICAgfQoKICAgICAgLmhvdmVyIHsKICAgICAgICBmb250LXNpemU6IDlweDsKICAgICAgICBkb21pbmFudC1iYXNlbGluZTogbWlkZGxlOwogICAgICAgIG9wYWNpdHk6IDA7CiAgICAgIH0KCiAgICAgIC5ob3ZlciBjaXJjbGUgewogICAgICAgIHN0cm9rZTogd2hpdGU7CiAgICAgICAgc3Ryb2tlLW9wYWNpdHk6IDAuNTsKICAgICAgICBzdHJva2Utd2lkdGg6IDFweDsKICAgICAgfQoKICAgICAgLmhvdmVyIHRleHQgewogICAgICAgIGZpbGw6IGJsYWNrOwogICAgICAgIG9wYWNpdHk6IDA7CiAgICAgIH0KCiAgICAgIC5ob3Zlci5ob3Zlci1jbG9zZXN0IGNpcmNsZSB7CiAgICAgICAgZmlsbDogYmxhY2sgIWltcG9ydGFudDsKICAgICAgfQoKICAgICAgLmhvdmVyLmhvdmVyLWNsb3Nlc3QgdGV4dCB7CiAgICAgICAgb3BhY2l0eTogMTsKICAgICAgfQoKICAgICAgLmJhc2VsaW5lIHsKICAgICAgICBzdHJva2U6IGJsYWNrOwogICAgICAgIHN0cm9rZS1vcGFjaXR5OiAwLjE7CiAgICAgIH0KCiAgICAgIC5vdXRsaW5lIHsKICAgICAgICBmaWxsOiBub25lOwogICAgICAgIHN0cm9rZTogd2hpdGU7CiAgICAgICAgc3Ryb2tlLW9wYWNpdHk6IDAuNTsKICAgICAgfQoKICAgICAgLm91dGxpbmUub3V0bGluZS1ob3ZlciB7CiAgICAgICAgc3Ryb2tlOiBibGFjayAhaW1wb3J0YW50OwogICAgICAgIHN0cm9rZS1vcGFjaXR5OiAxOwogICAgICB9CgogICAgICAueC1heGlzLWhvdmVyLAogICAgICAueS1heGlzLWhvdmVyLAogICAgICAueS1zbGljZS1heGlzLWhvdmVyIHsKICAgICAgICBwb2ludGVyLWV2ZW50czogbm9uZTsKICAgICAgfQoKICAgICAgLngtYXhpcy1ob3ZlciAubGFiZWwsCiAgICAgIC55LWF4aXMtaG92ZXIgLmxhYmVsLAogICAgICAueS1zbGljZS1heGlzLWhvdmVyIC5sYWJlbCB7CiAgICAgICAgb3BhY2l0eTogMDsKICAgICAgICBmb250LXdlaWdodDogYm9sZDsKICAgICAgICBmb250LXNpemU6IDExcHg7CiAgICAgICAgdGV4dC1hbmNob3I6IGVuZDsKICAgICAgfQoKICAgICAgLngtYXhpcy1ob3ZlciB0ZXh0IHsKICAgICAgICB0ZXh0LWFuY2hvcjogbWlkZGxlOwogICAgICB9CgogICAgICAueS1heGlzLWhvdmVyIHRleHQsCiAgICAgIC55LXNsaWNlLWF4aXMtaG92ZXIgdGV4dCB7CiAgICAgICAgdGV4dC1hbmNob3I6IHN0YXJ0OwogICAgICB9CgogICAgICAueC1heGlzLWhvdmVyIGxpbmUsCiAgICAgIC55LWF4aXMtaG92ZXIgbGluZSwKICAgICAgLnktc2xpY2UtYXhpcy1ob3ZlciBsaW5lIHsKICAgICAgICBzdHJva2U6IGJsYWNrOwogICAgICB9CgogICAgICAueC1heGlzLWhvdmVyIHJlY3QsCiAgICAgIC55LWF4aXMtaG92ZXIgcmVjdCwKICAgICAgLnktc2xpY2UtYXhpcy1ob3ZlciByZWN0IHsKICAgICAgICBmaWxsOiB3aGl0ZTsKICAgICAgfQoKICAgICAgLmF4aXMgewogICAgICAgIGZvbnQtc2l6ZTogMTFweDsKICAgICAgfQoKICAgICAgLmF4aXMgcGF0aC5kb21haW4gewogICAgICAgIGZpbGw6IG5vbmU7CiAgICAgIH0KCiAgICAgIC5heGlzIC50aWNrIGxpbmUgewogICAgICAgIHN0cm9rZTogI2RkZDsKICAgICAgfQoKICAgICAgLmF4aXMuc2xpY2UgewogICAgICAgIG9wYWNpdHk6IDA7CiAgICAgIH0KCiAgICAgIC5heGlzLnNsaWNlIC50aWNrIGxpbmUgewogICAgICAgIHN0cm9rZS1kYXNoYXJyYXk6IDI7CiAgICAgIH0KCiAgICAgIC5zbWFsbCAuYXhpcyB0ZXh0IHsKICAgICAgICBkaXNwbGF5OiBub25lOwogICAgICB9CiAgICAgIC5zbWFsbCAuYXhpcyAudGljazpmaXJzdC1vZi10eXBlIHRleHQgewogICAgICAgIGRpc3BsYXk6IGJsb2NrOwogICAgICB9CiAgICAgIC5zbWFsbCAuYXhpcyAudGljazpsYXN0LW9mLXR5cGUgdGV4dCB7CiAgICAgICAgZGlzcGxheTogYmxvY2s7CiAgICAgIH0KICAgICAgLm1lZGl1bSAuYXhpcyB0ZXh0IHsKICAgICAgICBkaXNwbGF5OiBub25lOwogICAgICB9CiAgICAgIC5tZWRpdW0gLmF4aXMgLnRpY2s6bnRoLWNoaWxkKDJuICsgMSkgdGV4dCB7CiAgICAgICAgZGlzcGxheTogYmxvY2s7CiAgICAgIH0KICAgICAgLmxhcmdlIC5heGlzIHRleHQgewogICAgICAgIGRpc3BsYXk6IG5vbmU7CiAgICAgIH0KICAgICAgLmxhcmdlIC5heGlzIC50aWNrOm50aC1jaGlsZCgybiArIDEpIHRleHQgewogICAgICAgIGRpc3BsYXk6IGJsb2NrOwogICAgICB9CiAgICA8L3N0eWxlPgogIGAsdChbbyh7dHlwZTpTdHJpbmd9KSxlKCJkZXNpZ246dHlwZSIsU3RyaW5nKV0seVJ0LnByb3RvdHlwZSwibW9kZSIsdm9pZCAwKSx0KFtvKHt0eXBlOlN0cmluZ30pLGUoImRlc2lnbjp0eXBlIixTdHJpbmcpXSx5UnQucHJvdG90eXBlLCJ0aW1lUHJvcGVydHkiLHZvaWQgMCksdChbbyh7dHlwZTpTdHJpbmd9KSxlKCJkZXNpZ246dHlwZSIsU3RyaW5nKV0seVJ0LnByb3RvdHlwZSwiYmlucyIsdm9pZCAwKSx0KFtvKHt0eXBlOlN0cmluZ30pLGUoImRlc2lnbjp0eXBlIixTdHJpbmcpXSx5UnQucHJvdG90eXBlLCJ4Iix2b2lkIDApLHQoW28oe3R5cGU6U3RyaW5nfSksZSgiZGVzaWduOnR5cGUiLFN0cmluZyldLHlSdC5wcm90b3R5cGUsImR4Iix2b2lkIDApLHQoW28oe3R5cGU6U3RyaW5nfSksZSgiZGVzaWduOnR5cGUiLFN0cmluZyldLHlSdC5wcm90b3R5cGUsInkiLHZvaWQgMCksdChbbyh7dHlwZTpPYmplY3R9KSxlKCJkZXNpZ246dHlwZSIsT2JqZWN0KV0seVJ0LnByb3RvdHlwZSwiY29sb3JTY2FsZSIsdm9pZCAwKSx0KFtvKHt0eXBlOk51bWJlcn0pLGUoImRlc2lnbjp0eXBlIixOdW1iZXIpXSx5UnQucHJvdG90eXBlLCJtb2RlVHJhbnNpdGlvbkR1cmF0aW9uIix2b2lkIDApLHQoW28oe3R5cGU6Qm9vbGVhbn0pLGUoImRlc2lnbjp0eXBlIixCb29sZWFuKV0seVJ0LnByb3RvdHlwZSwiX2F0dGFjaGVkIix2b2lkIDApLHQoW28oe3R5cGU6U3RyaW5nfSksZSgiZGVzaWduOnR5cGUiLFN0cmluZyldLHlSdC5wcm90b3R5cGUsIl9uYW1lIix2b2lkIDApLHQoW28oe3R5cGU6QXJyYXl9KSxlKCJkZXNpZ246dHlwZSIsQXJyYXkpXSx5UnQucHJvdG90eXBlLCJfZGF0YSIsdm9pZCAwKSx0KFthKCJ0aW1lUHJvcGVydHkiLCJjb2xvclNjYWxlIiwiX2F0dGFjaGVkIiksZSgiZGVzaWduOnR5cGUiLEZ1bmN0aW9uKSxlKCJkZXNpZ246cGFyYW10eXBlcyIsW10pLGUoImRlc2lnbjpyZXR1cm50eXBlIix2b2lkIDApXSx5UnQucHJvdG90eXBlLCJfcmVkcmF3T25DaGFuZ2UiLG51bGwpLHQoW2EoIm1vZGUiKSxlKCJkZXNpZ246dHlwZSIsRnVuY3Rpb24pLGUoImRlc2lnbjpwYXJhbXR5cGVzIixbXSksZSgiZGVzaWduOnJldHVybnR5cGUiLHZvaWQgMCldLHlSdC5wcm90b3R5cGUsIl9tb2RlUmVkcmF3IixudWxsKSx5UnQ9dChbaSgidnotaGlzdG9ncmFtLXRpbWVzZXJpZXMiKV0seVJ0KTtsZXQgeFJ0PWNsYXNzIGV4dGVuZHModF90KHRyKHllKSkpe2NvbnN0cnVjdG9yKCl7c3VwZXIoLi4uYXJndW1lbnRzKSx0aGlzLmdldERhdGFMb2FkTmFtZT0oe3J1bjp0fSk9PnQsdGhpcy5yZXF1ZXN0RGF0YT0odCxlLG4pPT57Y29uc3QgaT1ncigpLnBsdWdpblJvdXRlKCJoaXN0b2dyYW1zIiwiL2hpc3RvZ3JhbXMiKTtQcm9taXNlLmFsbCh0Lm1hcCgodD0+e2NvbnN0IG49T08oaSx7dGFnOnQudGFnLHJ1bjp0LnJ1bn0pO3JldHVybiB0aGlzLnJlcXVlc3RNYW5hZ2VyLnJlcXVlc3QobikudGhlbigobj0+e2Uoe2l0ZW06dCxkYXRhOm59KX0pKX0pKSkuZmluYWxseSgoKCk9PntuKCl9KSl9LHRoaXMubG9hZERhdGFDYWxsYmFjaz0odCxlLG4pPT57Y29uc3QgaT0oZnVuY3Rpb24gcih0KXtjb25zdCBlPXQubWFwKHZSdCksbj1ZbChlLCh0PT50Lm1pbikpLGk9V2woZSwodD0+dC5tYXgpKTtyZXR1cm4gZS5tYXAoKHQ9Pih7d2FsbF90aW1lOnQud2FsbF90aW1lLHN0ZXA6dC5zdGVwLGJpbnM6YlJ0KHQsbixpKX0pKSl9KShuKSxvPXRoaXMuZ2V0RGF0YUxvYWROYW1lKGUpO3RoaXMuJC5jaGFydC5zZXRTZXJpZXNEYXRhKG8saSl9LHRoaXMuX2NvbG9yU2NhbGVGdW5jdGlvbj14Tyx0aGlzLl9leHBhbmRlZD0hMX1fcmVsb2FkT25SdW5UYWdSZXF1ZXN0TWFuYWdlckNoYW5nZSgpe3RoaXMucmVsb2FkKCl9X3VwZGF0ZURhdGFUb0xvYWQoKXt0aGlzLmRhdGFUb0xvYWQ9W3tydW46dGhpcy5ydW4sdGFnOnRoaXMudGFnfV19Z2V0IF9ydW5Db2xvcigpe3JldHVybiB0aGlzLl9jb2xvclNjYWxlRnVuY3Rpb24odGhpcy5ydW4pfXJlZHJhdygpe3RoaXMuJC5jaGFydC5yZWRyYXcoKX1fdG9nZ2xlRXhwYW5kZWQodCl7dGhpcy5zZXQoIl9leHBhbmRlZCIsIXRoaXMuX2V4cGFuZGVkKSx0aGlzLnJlZHJhdygpfX07eFJ0LnRlbXBsYXRlPV9lYAogICAgPHRmLWNhcmQtaGVhZGluZwogICAgICB0YWc9IltbdGFnXV0iCiAgICAgIHJ1bj0iW1tydW5dXSIKICAgICAgZGlzcGxheS1uYW1lPSJbW3RhZ01ldGFkYXRhLmRpc3BsYXlOYW1lXV0iCiAgICAgIGRlc2NyaXB0aW9uPSJbW3RhZ01ldGFkYXRhLmRlc2NyaXB0aW9uXV0iCiAgICAgIGNvbG9yPSJbW19ydW5Db2xvcl1dIgogICAgPjwvdGYtY2FyZC1oZWFkaW5nPgogICAgPCEtLQogICAgICBUaGUgbWFpbiBoaXN0b2dyYW0gdGhhdCB3ZSByZW5kZXIuIERhdGEgaXMgc2V0IGRpcmVjdGx5IHdpdGgKICAgICAgXGBzZXRTZXJpZXNEYXRhXGAsIG5vdCB3aXRoIGEgYm91bmQgcHJvcGVydHkuCiAgICAtLT4KICAgIDx2ei1oaXN0b2dyYW0tdGltZXNlcmllcwogICAgICBpZD0iY2hhcnQiCiAgICAgIHRpbWUtcHJvcGVydHk9IltbdGltZVByb3BlcnR5XV0iCiAgICAgIG1vZGU9IltbaGlzdG9ncmFtTW9kZV1dIgogICAgICBjb2xvci1zY2FsZT0iW1tfY29sb3JTY2FsZUZ1bmN0aW9uXV0iCiAgICA+PC92ei1oaXN0b2dyYW0tdGltZXNlcmllcz4KICAgIDxkaXYgc3R5bGU9ImRpc3BsYXk6IGZsZXg7IGZsZXgtZGlyZWN0aW9uOiByb3c7Ij4KICAgICAgPHBhcGVyLWljb24tYnV0dG9uCiAgICAgICAgc2VsZWN0ZWQkPSJbW19leHBhbmRlZF1dIgogICAgICAgIGljb249ImZ1bGxzY3JlZW4iCiAgICAgICAgb24tdGFwPSJfdG9nZ2xlRXhwYW5kZWQiCiAgICAgID48L3BhcGVyLWljb24tYnV0dG9uPgogICAgPC9kaXY+CiAgICA8c3R5bGU+CiAgICAgIDpob3N0IHsKICAgICAgICBkaXNwbGF5OiBmbGV4OwogICAgICAgIGZsZXgtZGlyZWN0aW9uOiBjb2x1bW47CiAgICAgICAgd2lkdGg6IDMzMHB4OwogICAgICAgIGhlaWdodDogMjM1cHg7CiAgICAgICAgbWFyZ2luLXJpZ2h0OiAxMHB4OwogICAgICAgIG1hcmdpbi1ib3R0b206IDE1cHg7CiAgICAgIH0KICAgICAgOmhvc3QoW19leHBhbmRlZF0pIHsKICAgICAgICB3aWR0aDogNzAwcHg7CiAgICAgICAgaGVpZ2h0OiA1MDBweDsKICAgICAgfQoKICAgICAgdnotaGlzdG9ncmFtLXRpbWVzZXJpZXMgewogICAgICAgIC1tb3otdXNlci1zZWxlY3Q6IG5vbmU7CiAgICAgICAgLXdlYmtpdC11c2VyLXNlbGVjdDogbm9uZTsKICAgICAgICB3aWxsLWNoYW5nZTogdHJhbnNmb3JtOwogICAgICB9CgogICAgICBwYXBlci1pY29uLWJ1dHRvbiB7CiAgICAgICAgY29sb3I6ICMyMTk2ZjM7CiAgICAgICAgYm9yZGVyLXJhZGl1czogMTAwJTsKICAgICAgICB3aWR0aDogMzJweDsKICAgICAgICBoZWlnaHQ6IDMycHg7CiAgICAgICAgcGFkZGluZzogNHB4OwogICAgICB9CgogICAgICBwYXBlci1pY29uLWJ1dHRvbltzZWxlY3RlZF0gewogICAgICAgIGJhY2tncm91bmQ6IHZhcigtLXRiLXVpLWxpZ2h0LWFjY2VudCk7CiAgICAgIH0KCiAgICAgIHRmLWNhcmQtaGVhZGluZyB7CiAgICAgICAgbWFyZ2luLWJvdHRvbTogMTBweDsKICAgICAgICB3aWR0aDogOTAlOwogICAgICB9CiAgICA8L3N0eWxlPgogIGAsdChbbyh7dHlwZTpTdHJpbmd9KSxlKCJkZXNpZ246dHlwZSIsU3RyaW5nKV0seFJ0LnByb3RvdHlwZSwicnVuIix2b2lkIDApLHQoW28oe3R5cGU6U3RyaW5nfSksZSgiZGVzaWduOnR5cGUiLFN0cmluZyldLHhSdC5wcm90b3R5cGUsInRhZyIsdm9pZCAwKSx0KFtvKHt0eXBlOk9iamVjdH0pLGUoImRlc2lnbjp0eXBlIixPYmplY3QpXSx4UnQucHJvdG90eXBlLCJnZXREYXRhTG9hZE5hbWUiLHZvaWQgMCksdChbbyh7dHlwZTpPYmplY3R9KSxlKCJkZXNpZ246dHlwZSIsaHIpXSx4UnQucHJvdG90eXBlLCJyZXF1ZXN0TWFuYWdlciIsdm9pZCAwKSx0KFtvKHt0eXBlOk9iamVjdH0pLGUoImRlc2lnbjp0eXBlIixPYmplY3QpXSx4UnQucHJvdG90eXBlLCJsb2FkRGF0YUNhbGxiYWNrIix2b2lkIDApLHQoW28oe3R5cGU6T2JqZWN0fSksZSgiZGVzaWduOnR5cGUiLE9iamVjdCldLHhSdC5wcm90b3R5cGUsInRhZ01ldGFkYXRhIix2b2lkIDApLHQoW28oe3R5cGU6U3RyaW5nfSksZSgiZGVzaWduOnR5cGUiLFN0cmluZyldLHhSdC5wcm90b3R5cGUsInRpbWVQcm9wZXJ0eSIsdm9pZCAwKSx0KFtvKHt0eXBlOlN0cmluZ30pLGUoImRlc2lnbjp0eXBlIixTdHJpbmcpXSx4UnQucHJvdG90eXBlLCJoaXN0b2dyYW1Nb2RlIix2b2lkIDApLHQoW28oe3R5cGU6T2JqZWN0fSksZSgiZGVzaWduOnR5cGUiLEZ1bmN0aW9uKV0seFJ0LnByb3RvdHlwZSwiX2NvbG9yU2NhbGVGdW5jdGlvbiIsdm9pZCAwKSx0KFtvKHt0eXBlOkJvb2xlYW4scmVmbGVjdFRvQXR0cmlidXRlOiEwfSksZSgiZGVzaWduOnR5cGUiLEJvb2xlYW4pXSx4UnQucHJvdG90eXBlLCJfZXhwYW5kZWQiLHZvaWQgMCksdChbYSgicnVuIiwidGFnIiwicmVxdWVzdE1hbmFnZXIiKSxlKCJkZXNpZ246dHlwZSIsRnVuY3Rpb24pLGUoImRlc2lnbjpwYXJhbXR5cGVzIixbXSksZSgiZGVzaWduOnJldHVybnR5cGUiLHZvaWQgMCldLHhSdC5wcm90b3R5cGUsIl9yZWxvYWRPblJ1blRhZ1JlcXVlc3RNYW5hZ2VyQ2hhbmdlIixudWxsKSx0KFthKCJydW4iLCJ0YWciKSxlKCJkZXNpZ246dHlwZSIsRnVuY3Rpb24pLGUoImRlc2lnbjpwYXJhbXR5cGVzIixbXSksZSgiZGVzaWduOnJldHVybnR5cGUiLHZvaWQgMCldLHhSdC5wcm90b3R5cGUsIl91cGRhdGVEYXRhVG9Mb2FkIixudWxsKSx0KFtzKCJydW4iKSxlKCJkZXNpZ246dHlwZSIsU3RyaW5nKSxlKCJkZXNpZ246cGFyYW10eXBlcyIsW10pXSx4UnQucHJvdG90eXBlLCJfcnVuQ29sb3IiLG51bGwpLHhSdD10KFtpKCJ0Zi1oaXN0b2dyYW0tbG9hZGVyIildLHhSdCk7bGV0IHdSdD1jbGFzcyBleHRlbmRzKHRyKHllKSl7Y29uc3RydWN0b3IoKXtzdXBlciguLi5hcmd1bWVudHMpLHRoaXMucmVsb2FkT25SZWFkeT0hMCx0aGlzLl9oaXN0b2dyYW1Nb2RlPSJvZmZzZXQiLHRoaXMuX3RpbWVQcm9wZXJ0eT0ic3RlcCIsdGhpcy5fcmVzdGFtcD0hMSx0aGlzLl9yZXF1ZXN0TWFuYWdlcj1uZXcgaHJ9X3JlZHJhd0NhdGVnb3J5UGFuZSh0LGUpe2UmJnQudGFyZ2V0LnF1ZXJ5U2VsZWN0b3JBbGwoInRmLWhpc3RvZ3JhbS1sb2FkZXIiKS5mb3JFYWNoKCh0PT50LnJlZHJhdygpKSl9cmVhZHkoKXtzdXBlci5yZWFkeSgpLHRoaXMucmVsb2FkT25SZWFkeSYmdGhpcy5yZWxvYWQoKX1yZWxvYWQoKXt0aGlzLl9mZXRjaFRhZ3MoKS50aGVuKCgoKT0+e3RoaXMuX3JlbG9hZEhpc3RvZ3JhbXMoKX0pKX1fZmV0Y2hUYWdzKCl7Y29uc3QgdD1ncigpLnBsdWdpblJvdXRlKCJoaXN0b2dyYW1zIiwiL3RhZ3MiKTtyZXR1cm4gdGhpcy5fcmVxdWVzdE1hbmFnZXIucmVxdWVzdCh0KS50aGVuKCh0PT57aWYod2UuaXNFcXVhbCh0LHRoaXMuX3J1blRvVGFnSW5mbykpcmV0dXJuO2NvbnN0IGU9d2UubWFwVmFsdWVzKHQsKHQ9Pk9iamVjdC5rZXlzKHQpKSksbj1vcihlKTt0aGlzLnNldCgiX2RhdGFOb3RGb3VuZCIsMD09PW4ubGVuZ3RoKSx0aGlzLnNldCgiX3J1blRvVGFnIixlKSx0aGlzLnNldCgiX3J1blRvVGFnSW5mbyIsdCksdGhpcy5hc3luYygoKCk9Pnt0aGlzLnNldCgiX2NhdGVnb3JpZXNEb21SZWFkeSIsITApfSkpfSkpfV9yZWxvYWRIaXN0b2dyYW1zKCl7dGhpcy5yb290LnF1ZXJ5U2VsZWN0b3JBbGwoInRmLWhpc3RvZ3JhbS1sb2FkZXIiKS5mb3JFYWNoKCh0PT57dC5yZWxvYWQoKX0pKX1fc2hvdWxkT3Blbih0KXtyZXR1cm4gdDw9Mn1nZXQgX2NhdGVnb3JpZXMoKXtyZXR1cm4gU3IodGhpcy5fcnVuVG9UYWcsdGhpcy5fc2VsZWN0ZWRSdW5zLHRoaXMuX3RhZ0ZpbHRlcil9X3RhZ01ldGFkYXRhKHQsZSxuKXtyZXR1cm4gdFtlXVtuXX19O2Z1bmN0aW9uIFNSdCh0KXtyZXR1cm4iIiE9PXQuZGlzcGxheU5hbWUmJnZvaWQgMCE9PXQuZGlzcGxheU5hbWU/dC5kaXNwbGF5TmFtZTp0Lm5hbWV9ZnVuY3Rpb24gTVJ0KHQpe2lmKCIiIT09dC5kaXNwbGF5TmFtZSYmdm9pZCAwIT09dC5kaXNwbGF5TmFtZSlyZXR1cm4gdC5kaXNwbGF5TmFtZTtsZXQgZT10Lm5hbWUuZ3JvdXAsbj10Lm5hbWUudGFnO3JldHVybiB2b2lkIDA9PT1lJiYoZT0iIiksdm9pZCAwPT09biYmKG49IiIpLCIiPT09ZT9uOmUrIi4iK259ZnVuY3Rpb24gRVJ0KHQsZSl7cmV0dXJuIGU8dC5ocGFyYW1Db2x1bW5zLmxlbmd0aD9TUnQodC5ocGFyYW1Db2x1bW5zW2VdLmhwYXJhbUluZm8pOk1SdCh0Lm1ldHJpY0NvbHVtbnNbZS10LmhwYXJhbUNvbHVtbnMubGVuZ3RoXS5tZXRyaWNJbmZvKX1mdW5jdGlvbiBUUnQodCl7cmV0dXJuIHQuaHBhcmFtQ29sdW1ucy5sZW5ndGh9ZnVuY3Rpb24gQVJ0KHQpe3JldHVybiB0Lm1ldHJpY0NvbHVtbnMubGVuZ3RofWZ1bmN0aW9uIENSdCh0KXtyZXR1cm4gVFJ0KHQpK0FSdCh0KX1mdW5jdGlvbiBrUnQodCxlKXtyZXR1cm4gdFtlXX1mdW5jdGlvbiBMUnQodCxlKXtyZXR1cm4gdC5maW5kKCh0PT53ZS5pc0VxdWFsKHQubmFtZSxlKSkpfWZ1bmN0aW9uIFBSdCh0LGUsbil7cmV0dXJuIGUuaHBhcmFtc1t0LmhwYXJhbUNvbHVtbnNbbl0uaHBhcmFtSW5mby5uYW1lXX1mdW5jdGlvbiBJUnQodCxlLG4pe2NvbnN0IGk9TFJ0KGUubWV0cmljVmFsdWVzLHQubWV0cmljQ29sdW1uc1tuXS5tZXRyaWNJbmZvLm5hbWUpO3JldHVybiB2b2lkIDA9PT1pP3ZvaWQgMDppLnZhbHVlfWZ1bmN0aW9uIE5SdCh0LGUsbil7cmV0dXJuIG48dC5ocGFyYW1Db2x1bW5zLmxlbmd0aD9QUnQodCxlLG4pOklSdCh0LGUsbi10LmhwYXJhbUNvbHVtbnMubGVuZ3RoKX1mdW5jdGlvbiBPUnQodCxlLG4pe3JldHVybiBMbChlLChlPT5OUnQodCxlLG4pKSl9ZnVuY3Rpb24gUlJ0KHQsZSxuKXtsZXQgaTtpZihuPGUuaHBhcmFtSW5mb3MubGVuZ3RoKWk9dC5ocGFyYW1Db2x1bW5zLmZpbmRJbmRleCgodD0+dC5ocGFyYW1JbmZvLm5hbWU9PT1lLmhwYXJhbUluZm9zW25dLm5hbWUpKTtlbHNle2NvbnN0IHI9ZS5tZXRyaWNJbmZvc1tuLWUuaHBhcmFtSW5mb3MubGVuZ3RoXS5uYW1lO2k9dC5ocGFyYW1Db2x1bW5zLmxlbmd0aCt0Lm1ldHJpY0NvbHVtbnMuZmluZEluZGV4KCh0PT50Lm1ldHJpY0luZm8ubmFtZT09PXIpKX1yZXR1cm4gY29uc29sZS5hc3NlcnQoLTEhPT1pKSxpfWZ1bmN0aW9uIHpSdCh0KXtyZXR1cm4gdC5ocGFyYW1JbmZvcy5sZW5ndGh9ZnVuY3Rpb24gRFJ0KHQpe3JldHVybiB0Lm1ldHJpY0luZm9zLmxlbmd0aH1mdW5jdGlvbiBCUnQodCxlLG4pe3JldHVybiBMbChlLChlPT5qUnQodCxlLG4pKSl9ZnVuY3Rpb24gSFJ0KHQsZSl7cmV0dXJuIHQuZmluZCgodD0+dC5uYW1lPT09ZSkpfWZ1bmN0aW9uIEZSdCh0LGUsbil7cmV0dXJuIGUuaHBhcmFtc1t0LmhwYXJhbUluZm9zW25dLm5hbWVdfWZ1bmN0aW9uIFZSdCh0LGUsbil7Y29uc3QgaT1MUnQoZS5tZXRyaWNWYWx1ZXMsdC5tZXRyaWNJbmZvc1tuXS5uYW1lKTtyZXR1cm4gdm9pZCAwPT09aT92b2lkIDA6aS52YWx1ZX1mdW5jdGlvbiBqUnQodCxlLG4pe3JldHVybiBuPHQuaHBhcmFtSW5mb3MubGVuZ3RoP0ZSdCh0LGUsbik6VlJ0KHQsZSxuLXQuaHBhcmFtSW5mb3MubGVuZ3RoKX1mdW5jdGlvbiBVUnQodCl7cmV0dXJuIHdlLmlzTnVtYmVyKHQpP3QudG9QcmVjaXNpb24oNSk6dm9pZCAwPT09dD8iIjp0LnRvU3RyaW5nKCl9ZnVuY3Rpb24gR1J0KHQsZSl7cmV0dXJuIHQqdCtlKmV9ZnVuY3Rpb24gV1J0KHQsZSxuLGkpe3JldHVybiBNYXRoLnNxcnQoR1J0KHQtbixlLWkpKX1mdW5jdGlvbiBxUnQodCxlLG4saSxyLG8pe2lmKHQ8biYmZTxpKXJldHVybiBXUnQodCxlLG4saSk7aWYobjw9dCYmdDxyJiZlPGkpcmV0dXJuIGktZTtpZihyPD10JiZlPGkpcmV0dXJuIFdSdCh0LGUscixpKTtpZih0PG4mJmk8PWUmJmU8bylyZXR1cm4gbi10O2lmKG48PXQmJnQ8ciYmaTw9ZSYmZTxvKXJldHVybiAwO2lmKHI8PXQmJmk8PWUmJmU8bylyZXR1cm4gdC1yO2lmKHQ8biYmbzw9ZSlyZXR1cm4gV1J0KHQsZSxuLG8pO2lmKG48PXQmJnQ8ciYmbzw9ZSlyZXR1cm4gZS1vO2lmKHI8PXQmJm88PWUpcmV0dXJuIFdSdCh0LGUscixvKTt0aHJvdyJQb2ludCAoeCx5KSBtdXN0IGJlIGluIG9uZSBvZiB0aGUgcmVnaW9ucyBkZWZpbmVkIGFib3ZlLiJ9ZnVuY3Rpb24gWVJ0KHQsZSl7cmV0dXJuIHZvaWQgMD09PWU/InRyYW5zbGF0ZSgiK3QrIikiOiJ0cmFuc2xhdGUoIit0KyIsIitlKyIpIn1mdW5jdGlvbiBYUnQodCxlLG4pe2NvbnN0IGk9dC5nZXQoZSx0KTtBcnJheS5pc0FycmF5KGkpP3Quc3BsaWNlLmFwcGx5KHQsW2UsMCxpLmxlbmd0aF0uY29uY2F0KG4pKTp0LnNldChlLG4pfWZ1bmN0aW9uICRSdCh0KXtsZXQgZT0wO2ZvcihsZXQgbj0wO248dC5sZW5ndGg7KytuKWU9MzEqZSt0LmNoYXJDb2RlQXQobikmNDI5NDk2NzI5NTtyZXR1cm4gZStNYXRoLnBvdygyLDMxKX13UnQudGVtcGxhdGU9X2VgCiAgICA8dGYtZGFzaGJvYXJkLWxheW91dD4KICAgICAgPGRpdiBzbG90PSJzaWRlYmFyIj4KICAgICAgICA8ZGl2IGNsYXNzPSJzZXR0aW5ncyI+CiAgICAgICAgICA8ZGl2IGNsYXNzPSJzaWRlYmFyLXNlY3Rpb24iPgogICAgICAgICAgICA8dGYtb3B0aW9uLXNlbGVjdG9yCiAgICAgICAgICAgICAgaWQ9Imhpc3RvZ3JhbU1vZGVTZWxlY3RvciIKICAgICAgICAgICAgICBuYW1lPSJIaXN0b2dyYW0gbW9kZSIKICAgICAgICAgICAgICBzZWxlY3RlZC1pZD0ie3tfaGlzdG9ncmFtTW9kZX19IgogICAgICAgICAgICA+CiAgICAgICAgICAgICAgPHBhcGVyLWJ1dHRvbiBpZD0ib3ZlcmxheSI+b3ZlcmxheTwvcGFwZXItYnV0dG9uPgogICAgICAgICAgICAgIDxwYXBlci1idXR0b24gaWQ9Im9mZnNldCI+b2Zmc2V0PC9wYXBlci1idXR0b24+CiAgICAgICAgICAgIDwvdGYtb3B0aW9uLXNlbGVjdG9yPgogICAgICAgICAgPC9kaXY+CiAgICAgICAgICA8ZGl2IGNsYXNzPSJzaWRlYmFyLXNlY3Rpb24iPgogICAgICAgICAgICA8dGYtb3B0aW9uLXNlbGVjdG9yCiAgICAgICAgICAgICAgaWQ9InRpbWVQcm9wZXJ0eVNlbGVjdG9yIgogICAgICAgICAgICAgIG5hbWU9Ik9mZnNldCB0aW1lIGF4aXMiCiAgICAgICAgICAgICAgc2VsZWN0ZWQtaWQ9Int7X3RpbWVQcm9wZXJ0eX19IgogICAgICAgICAgICA+CiAgICAgICAgICAgICAgPHBhcGVyLWJ1dHRvbiBpZD0ic3RlcCI+c3RlcDwvcGFwZXItYnV0dG9uPgogICAgICAgICAgICAgIDxwYXBlci1idXR0b24gaWQ9InJlbGF0aXZlIj5yZWxhdGl2ZTwvcGFwZXItYnV0dG9uPgogICAgICAgICAgICAgIDxwYXBlci1idXR0b24gaWQ9IndhbGxfdGltZSI+d2FsbDwvcGFwZXItYnV0dG9uPgogICAgICAgICAgICA8L3RmLW9wdGlvbi1zZWxlY3Rvcj4KICAgICAgICAgIDwvZGl2PgogICAgICAgIDwvZGl2PgogICAgICAgIDxkaXYgY2xhc3M9InNpZGViYXItc2VjdGlvbiBydW5zLXNlbGVjdG9yIj4KICAgICAgICAgIDx0Zi1ydW5zLXNlbGVjdG9yIHNlbGVjdGVkLXJ1bnM9Int7X3NlbGVjdGVkUnVuc319Ij4KICAgICAgICAgIDwvdGYtcnVucy1zZWxlY3Rvcj4KICAgICAgICA8L2Rpdj4KICAgICAgPC9kaXY+CiAgICAgIDxkaXYgc2xvdD0iY2VudGVyIj4KICAgICAgICA8dGVtcGxhdGUgaXM9ImRvbS1pZiIgaWY9IltbX2RhdGFOb3RGb3VuZF1dIj4KICAgICAgICAgIDxkaXYgY2xhc3M9Im5vLWRhdGEtd2FybmluZyI+CiAgICAgICAgICAgIDxoMz5ObyBoaXN0b2dyYW0gZGF0YSB3YXMgZm91bmQuPC9oMz4KICAgICAgICAgICAgPHA+UHJvYmFibGUgY2F1c2VzOjwvcD4KICAgICAgICAgICAgPHVsPgogICAgICAgICAgICAgIDxsaT4KICAgICAgICAgICAgICAgIFlvdSBoYXZlbuKAmXQgd3JpdHRlbiBhbnkgaGlzdG9ncmFtIGRhdGEgdG8geW91ciBldmVudCBmaWxlcy4KICAgICAgICAgICAgICA8L2xpPgogICAgICAgICAgICAgIDxsaT5UZW5zb3JCb2FyZCBjYW7igJl0IGZpbmQgeW91ciBldmVudCBmaWxlcy48L2xpPgogICAgICAgICAgICA8L3VsPgoKICAgICAgICAgICAgPHA+CiAgICAgICAgICAgICAgSWYgeW914oCZcmUgbmV3IHRvIHVzaW5nIFRlbnNvckJvYXJkLCBhbmQgd2FudCB0byBmaW5kIG91dCBob3cgdG8KICAgICAgICAgICAgICBhZGQgZGF0YSBhbmQgc2V0IHVwIHlvdXIgZXZlbnQgZmlsZXMsIGNoZWNrIG91dCB0aGUKICAgICAgICAgICAgICA8YQogICAgICAgICAgICAgICAgaHJlZj0iaHR0cHM6Ly9naXRodWIuY29tL3RlbnNvcmZsb3cvdGVuc29yYm9hcmQvYmxvYi9tYXN0ZXIvUkVBRE1FLm1kIgogICAgICAgICAgICAgICAgPlJFQURNRTwvYQogICAgICAgICAgICAgID4KICAgICAgICAgICAgICBhbmQgcGVyaGFwcyB0aGUKICAgICAgICAgICAgICA8YQogICAgICAgICAgICAgICAgaHJlZj0iaHR0cHM6Ly93d3cudGVuc29yZmxvdy5vcmcvZ2V0X3N0YXJ0ZWQvc3VtbWFyaWVzX2FuZF90ZW5zb3Jib2FyZCIKICAgICAgICAgICAgICAgID5UZW5zb3JCb2FyZCB0dXRvcmlhbDwvYQogICAgICAgICAgICAgID4uCiAgICAgICAgICAgIDwvcD4KCiAgICAgICAgICAgIDxwPgogICAgICAgICAgICAgIElmIHlvdSB0aGluayBUZW5zb3JCb2FyZCBpcyBjb25maWd1cmVkIHByb3Blcmx5LCBwbGVhc2Ugc2VlCiAgICAgICAgICAgICAgPGEKICAgICAgICAgICAgICAgIGhyZWY9Imh0dHBzOi8vZ2l0aHViLmNvbS90ZW5zb3JmbG93L3RlbnNvcmJvYXJkL2Jsb2IvbWFzdGVyL1JFQURNRS5tZCNteS10ZW5zb3Jib2FyZC1pc250LXNob3dpbmctYW55LWRhdGEtd2hhdHMtd3JvbmciCiAgICAgICAgICAgICAgICA+dGhlIHNlY3Rpb24gb2YgdGhlIFJFQURNRSBkZXZvdGVkIHRvIG1pc3NpbmcgZGF0YSBwcm9ibGVtczwvYQogICAgICAgICAgICAgID4KICAgICAgICAgICAgICBhbmQgY29uc2lkZXIgZmlsaW5nIGFuIGlzc3VlIG9uIEdpdEh1Yi4KICAgICAgICAgICAgPC9wPgogICAgICAgICAgPC9kaXY+CiAgICAgICAgPC90ZW1wbGF0ZT4KICAgICAgICA8dGVtcGxhdGUgaXM9ImRvbS1pZiIgaWY9IltbIV9kYXRhTm90Rm91bmRdXSI+CiAgICAgICAgICA8dGYtdGFnLWZpbHRlcmVyIHRhZy1maWx0ZXI9Int7X3RhZ0ZpbHRlcn19Ij48L3RmLXRhZy1maWx0ZXJlcj4KICAgICAgICAgIDx0ZW1wbGF0ZSBpcz0iZG9tLXJlcGVhdCIgaXRlbXM9IltbX2NhdGVnb3JpZXNdXSIgYXM9ImNhdGVnb3J5Ij4KICAgICAgICAgICAgPHRmLWNhdGVnb3J5LXBhZ2luYXRlZC12aWV3CiAgICAgICAgICAgICAgY2F0ZWdvcnk9IltbY2F0ZWdvcnldXSIKICAgICAgICAgICAgICBpbml0aWFsLW9wZW5lZD0iW1tfc2hvdWxkT3BlbihpbmRleCldXSIKICAgICAgICAgICAgPgogICAgICAgICAgICAgIDx0ZW1wbGF0ZT4KICAgICAgICAgICAgICAgIDx0Zi1oaXN0b2dyYW0tbG9hZGVyCiAgICAgICAgICAgICAgICAgIHJ1bj0iW1tpdGVtLnJ1bl1dIgogICAgICAgICAgICAgICAgICB0YWc9IltbaXRlbS50YWddXSIKICAgICAgICAgICAgICAgICAgYWN0aXZlPSJbW2FjdGl2ZV1dIgogICAgICAgICAgICAgICAgICB0YWctbWV0YWRhdGE9IltbX3RhZ01ldGFkYXRhKF9ydW5Ub1RhZ0luZm8sIGl0ZW0ucnVuLCBpdGVtLnRhZyldXSIKICAgICAgICAgICAgICAgICAgdGltZS1wcm9wZXJ0eT0iW1tfdGltZVByb3BlcnR5XV0iCiAgICAgICAgICAgICAgICAgIGhpc3RvZ3JhbS1tb2RlPSJbW19oaXN0b2dyYW1Nb2RlXV0iCiAgICAgICAgICAgICAgICAgIHJlcXVlc3QtbWFuYWdlcj0iW1tfcmVxdWVzdE1hbmFnZXJdXSIKICAgICAgICAgICAgICAgID48L3RmLWhpc3RvZ3JhbS1sb2FkZXI+CiAgICAgICAgICAgICAgPC90ZW1wbGF0ZT4KICAgICAgICAgICAgPC90Zi1jYXRlZ29yeS1wYWdpbmF0ZWQtdmlldz4KICAgICAgICAgIDwvdGVtcGxhdGU+CiAgICAgICAgPC90ZW1wbGF0ZT4KICAgICAgPC9kaXY+CiAgICA8L3RmLWRhc2hib2FyZC1sYXlvdXQ+CgogICAgPHN0eWxlIGluY2x1ZGU9ImRhc2hib2FyZC1zdHlsZSI+PC9zdHlsZT4KICAgIDxzdHlsZT4KICAgICAgLm5vLWRhdGEtd2FybmluZyB7CiAgICAgICAgbWF4LXdpZHRoOiA1NDBweDsKICAgICAgICBtYXJnaW46IDgwcHggYXV0byAwIGF1dG87CiAgICAgIH0KICAgIDwvc3R5bGU+CiAgYCx0KFtvKHt0eXBlOkJvb2xlYW59KSxlKCJkZXNpZ246dHlwZSIsQm9vbGVhbildLHdSdC5wcm90b3R5cGUsInJlbG9hZE9uUmVhZHkiLHZvaWQgMCksdChbbyh7dHlwZTpTdHJpbmd9KSxlKCJkZXNpZ246dHlwZSIsU3RyaW5nKV0sd1J0LnByb3RvdHlwZSwiX2hpc3RvZ3JhbU1vZGUiLHZvaWQgMCksdChbbyh7dHlwZTpTdHJpbmd9KSxlKCJkZXNpZ246dHlwZSIsU3RyaW5nKV0sd1J0LnByb3RvdHlwZSwiX3RpbWVQcm9wZXJ0eSIsdm9pZCAwKSx0KFtvKHt0eXBlOkFycmF5fSksZSgiZGVzaWduOnR5cGUiLEFycmF5KV0sd1J0LnByb3RvdHlwZSwiX3NlbGVjdGVkUnVucyIsdm9pZCAwKSx0KFtvKHt0eXBlOk9iamVjdH0pLGUoImRlc2lnbjp0eXBlIixPYmplY3QpXSx3UnQucHJvdG90eXBlLCJfcnVuVG9UYWciLHZvaWQgMCksdChbbyh7dHlwZTpPYmplY3R9KSxlKCJkZXNpZ246dHlwZSIsT2JqZWN0KV0sd1J0LnByb3RvdHlwZSwiX3J1blRvVGFnSW5mbyIsdm9pZCAwKSx0KFtvKHt0eXBlOkJvb2xlYW59KSxlKCJkZXNpZ246dHlwZSIsQm9vbGVhbildLHdSdC5wcm90b3R5cGUsIl9kYXRhTm90Rm91bmQiLHZvaWQgMCksdChbbyh7dHlwZTpTdHJpbmd9KSxlKCJkZXNpZ246dHlwZSIsU3RyaW5nKV0sd1J0LnByb3RvdHlwZSwiX3RhZ0ZpbHRlciIsdm9pZCAwKSx0KFtvKHt0eXBlOkJvb2xlYW59KSxlKCJkZXNpZ246dHlwZSIsQm9vbGVhbildLHdSdC5wcm90b3R5cGUsIl9yZXN0YW1wIix2b2lkIDApLHQoW28oe3R5cGU6Qm9vbGVhbn0pLGUoImRlc2lnbjp0eXBlIixCb29sZWFuKV0sd1J0LnByb3RvdHlwZSwiX2NhdGVnb3JpZXNEb21SZWFkeSIsdm9pZCAwKSx0KFtvKHt0eXBlOk9iamVjdH0pLGUoImRlc2lnbjp0eXBlIixocildLHdSdC5wcm90b3R5cGUsIl9yZXF1ZXN0TWFuYWdlciIsdm9pZCAwKSx0KFtzKCJfcnVuVG9UYWciLCJfc2VsZWN0ZWRSdW5zIiwiX3RhZ0ZpbHRlciIsIl9jYXRlZ29yaWVzRG9tUmVhZHkiKSxlKCJkZXNpZ246dHlwZSIsQXJyYXkpLGUoImRlc2lnbjpwYXJhbXR5cGVzIixbXSldLHdSdC5wcm90b3R5cGUsIl9jYXRlZ29yaWVzIixudWxsKSx3UnQ9dChbaSgidGYtaGlzdG9ncmFtLWRhc2hib2FyZCIpXSx3UnQpO3ZhciBLUnQ9T2JqZWN0LmZyZWV6ZSh7X19wcm90b19fOm51bGwsaHBhcmFtTmFtZTpTUnQsbWV0cmljTmFtZTpNUnQsc2NoZW1hQ29sdW1uTmFtZTpFUnQsbnVtSFBhcmFtczpUUnQsbnVtTWV0cmljczpBUnQsbnVtQ29sdW1uczpDUnQsaHBhcmFtVmFsdWVCeU5hbWU6a1J0LG1ldHJpY1ZhbHVlQnlOYW1lOkxSdCxocGFyYW1WYWx1ZUJ5SW5kZXg6UFJ0LG1ldHJpY1ZhbHVlQnlJbmRleDpJUnQsY29sdW1uVmFsdWVCeUluZGV4Ok5SdCxudW1lcmljQ29sdW1uRXh0ZW50Ok9SdCxnZXRBYnNvbHV0ZUNvbHVtbkluZGV4OlJSdCxzY2hlbWFWaXNpYmxlQ29sdW1uTmFtZTpmdW5jdGlvbiBaUnQodCxlKXtyZXR1cm4gZTx0LmhwYXJhbUluZm9zLmxlbmd0aD9TUnQodC5ocGFyYW1JbmZvc1tlXSk6TVJ0KHQubWV0cmljSW5mb3NbZS10LmhwYXJhbUluZm9zLmxlbmd0aF0pfSxudW1WaXNpYmxlSFBhcmFtczp6UnQsbnVtVmlzaWJsZU1ldHJpY3M6RFJ0LG51bVZpc2libGVDb2x1bW5zOmZ1bmN0aW9uIEpSdCh0KXtyZXR1cm4gelJ0KHQpK0RSdCh0KX0sdmlzaWJsZU51bWVyaWNDb2x1bW5FeHRlbnQ6QlJ0LHByZXR0eVByaW50SFBhcmFtVmFsdWVCeU5hbWU6ZnVuY3Rpb24gUVJ0KHQsZSl7cmV0dXJuIFVSdChrUnQodCxlKSl9LHByZXR0eVByaW50TWV0cmljVmFsdWVCeU5hbWU6ZnVuY3Rpb24gdHp0KHQsZSl7cmV0dXJuIFVSdChMUnQodCxlKSl9LHNlc3Npb25Hcm91cFdpdGhOYW1lOkhSdCxocGFyYW1WYWx1ZUJ5VmlzaWJsZUluZGV4OkZSdCxtZXRyaWNWYWx1ZUJ5VmlzaWJsZUluZGV4OlZSdCxjb2x1bW5WYWx1ZUJ5VmlzaWJsZUluZGV4OmpSdCxwcmV0dHlQcmludDpVUnQsbDJOb3JtU3F1YXJlZDpHUnQsZXVjbGlkZWFuRGlzdDpXUnQscG9pbnRUb1JlY3RhbmdsZURpc3Q6cVJ0LHRyYW5zbGF0ZVN0cjpZUnQscm90YXRlU3RyOmZ1bmN0aW9uIGV6dCh0LGUsbil7bGV0IGk9InJvdGF0ZSgiK3Q7cmV0dXJuIHZvaWQgMCE9PWUmJnZvaWQgMCE9PW4mJihpPWkrIiwiK2UrIiwiK24pLGkrPSIpIixpfSxpc051bGxPclVuZGVmaW5lZDpmdW5jdGlvbiBuenQodCl7cmV0dXJuIG51bGw9PXR9LHF1YWRUcmVlVmlzaXRQb2ludHNJblJlY3Q6ZnVuY3Rpb24gaXp0KHQsZSxuLGkscixvKXt0LnZpc2l0KCgoYSxzLGwsYyx1KT0+e2lmKHZvaWQgMD09PWEubGVuZ3RoKXtkb3tjb25zdCBzPXQueCgpKGEuZGF0YSksbD10LnkoKShhLmRhdGEpO2U8PXMmJnM8aSYmbjw9bCYmbDxyJiZvKGEuZGF0YSl9d2hpbGUoYT1hLm5leHQpO3JldHVybiEwfXJldHVybiBzPj1pfHxjPD1lfHxsPj1yfHx1PD1ufSkpfSxxdWFkVHJlZVZpc2l0UG9pbnRzSW5EaXNrOmZ1bmN0aW9uIHJ6dCh0LGUsbixpLHIpe3QudmlzaXQoKChvLGEscyxsLGMpPT57aWYodm9pZCAwPT09by5sZW5ndGgpe2Rve2NvbnN0IGE9dC54KCkoby5kYXRhKSxzPXQueSgpKG8uZGF0YSksbD1XUnQoZSxuLGEscyk7bDw9aSYmcihvLmRhdGEsbCl9d2hpbGUobz1vLm5leHQpO3JldHVybiEwfXJldHVybiBxUnQoZSxuLGEscyxsLGMpPml9KSl9LGZpbHRlclNldDpmdW5jdGlvbiBvenQodCxlKXtjb25zdCBuPW5ldyBTZXQ7cmV0dXJuIHQuZm9yRWFjaCgodD0+e2UodCkmJm4uYWRkKHQpfSkpLG59LHNldEFycmF5T2JzZXJ2YWJseTpYUnQsaGFzaE9mU3RyaW5nOiRSdH0pO2xldCBhenQ9Y2xhc3MgZXh0ZW5kcyB5ZXtjb25zdHJ1Y3Rvcigpe3N1cGVyKC4uLmFyZ3VtZW50cyksdGhpcy5vcmllbnRhdGlvbj0iaG9yaXpvbnRhbCJ9fTthenQudGVtcGxhdGU9X2VgCiAgICA8c2xvdCBuYW1lPSJjb250ZW50Ij48L3Nsb3Q+CgogICAgPHN0eWxlPgogICAgICA6aG9zdCB7CiAgICAgICAgZGlzcGxheTogYmxvY2s7CiAgICAgIH0KCiAgICAgIDpob3N0IHNsb3QgewogICAgICAgIGRpc3BsYXk6IGZsZXg7CiAgICAgICAgaGVpZ2h0OiAxMDAlOwogICAgICAgIHdpZHRoOiAxMDAlOwogICAgICB9CgogICAgICA6aG9zdCA6OnNsb3R0ZWQoKikgewogICAgICAgIGZsZXg6IDAgMCBhdXRvOwogICAgICB9CgogICAgICA6aG9zdChbb3JpZW50YXRpb249J2hvcml6b250YWwnXSkgc2xvdCB7CiAgICAgICAgZmxleC1kaXJlY3Rpb246IHJvdzsKICAgICAgICBvdmVyZmxvdy14OiBhdXRvOwogICAgICB9CgogICAgICA6aG9zdChbb3JpZW50YXRpb249J3ZlcnRpY2FsJ10pIHNsb3QgewogICAgICAgIGZsZXgtZGlyZWN0aW9uOiBjb2x1bW47CiAgICAgICAgb3ZlcmZsb3cteTogYXV0bzsKICAgICAgfQoKICAgICAgOmhvc3QgOjpzbG90dGVkKCo6bm90KDpsYXN0LWNoaWxkKSkgewogICAgICAgIGJvcmRlcjogMCBzb2xpZCB2YXIoLS1kaXZpZGVyLWNvbG9yLCAjY2NjKTsKICAgICAgfQoKICAgICAgOmhvc3QoW29yaWVudGF0aW9uPSd2ZXJ0aWNhbCddKSA6OnNsb3R0ZWQoKjpub3QoOmxhc3QtY2hpbGQpKSB7CiAgICAgICAgYm9yZGVyLWJvdHRvbS13aWR0aDogNXB4OwogICAgICB9CgogICAgICA6aG9zdChbb3JpZW50YXRpb249J2hvcml6b250YWwnXSkgOjpzbG90dGVkKCo6bm90KDpsYXN0LWNoaWxkKSkgewogICAgICAgIGJvcmRlci1yaWdodC13aWR0aDogNXB4OwogICAgICB9CiAgICA8L3N0eWxlPgogIGAsdChbbyh7dHlwZTpTdHJpbmcscmVmbGVjdFRvQXR0cmlidXRlOiEwfSksZSgiZGVzaWduOnR5cGUiLFN0cmluZyldLGF6dC5wcm90b3R5cGUsIm9yaWVudGF0aW9uIix2b2lkIDApLGF6dD10KFtpKCJocGFyYW1zLXNwbGl0LWxheW91dCIpXSxhenQpO2xldCBzenQ9Y2xhc3MgZXh0ZW5kcyh0cih5ZSkpe2NvbnN0cnVjdG9yKCl7c3VwZXIoLi4uYXJndW1lbnRzKSx0aGlzLmNvbmZpZ3VyYXRpb249e3NjaGVtYTp7aHBhcmFtQ29sdW1uczpbXSxtZXRyaWNDb2x1bW5zOltdfSxjb2x1bW5zVmlzaWJpbGl0eTpbXSx2aXNpYmxlU2NoZW1hOntocGFyYW1JbmZvczpbXSxtZXRyaWNJbmZvczpbXX19LHRoaXMuc2Vzc2lvbkdyb3Vwcz1bXSx0aGlzLmRhdGFMb2FkZWRXaXRoTm9uRW1wdHlIcGFyYW1zPSExLHRoaXMuZGF0YUxvYWRlZFdpdGhFbXB0eUhwYXJhbXM9ITEsdGhpcy5fc3RhdHVzZXM9W3t2YWx1ZToiU1RBVFVTX1VOS05PV04iLGRpc3BsYXlOYW1lOiJVbmtub3duIixhbGxvd2VkOiEwfSx7dmFsdWU6IlNUQVRVU19TVUNDRVNTIixkaXNwbGF5TmFtZToiU3VjY2VzcyIsYWxsb3dlZDohMH0se3ZhbHVlOiJTVEFUVVNfRkFJTFVSRSIsZGlzcGxheU5hbWU6IkZhaWx1cmUiLGFsbG93ZWQ6ITB9LHt2YWx1ZToiU1RBVFVTX1JVTk5JTkciLGRpc3BsYXlOYW1lOiJSdW5uaW5nIixhbGxvd2VkOiEwfV0sdGhpcy5fZ2V0RXhwZXJpbWVudFJlc29sdmVkPW5ldyBQcm9taXNlKCh0PT57dGhpcy5fcmVzb2x2ZUdldEV4cGVyaW1lbnQ9dH0pKSx0aGlzLl9saXN0U2Vzc2lvbkdyb3Vwc0NhbmNlbGxlcj1uZXcgRU8sdGhpcy5fcGFnZVNpemVJbnB1dD17dmFsdWU6IjEwMCIsaW52YWxpZDohMX0sdGhpcy5fcGFnZU51bWJlcklucHV0PXt2YWx1ZToiMSIsaW52YWxpZDohMX0sdGhpcy5fcGFnZUNvdW50U3RyPSI/Iix0aGlzLl9ocGFyYW1OYW1lPVNSdCx0aGlzLl9tZXRyaWNOYW1lPU1SdCx0aGlzLl9wcmV0dHlQcmludD1VUnR9cmVsb2FkKCl7dGhpcy5fcXVlcnlTZXJ2ZXIoKX1fY3N2VXJsKHQsZSl7cmV0dXJuIHRoaXMuX2Rvd25sb2FkRGF0YVVybCh0LGUsImNzdiIpfV9qc29uVXJsKHQsZSl7cmV0dXJuIHRoaXMuX2Rvd25sb2FkRGF0YVVybCh0LGUsImpzb24iKX1fbGF0ZXhVcmwodCxlKXtyZXR1cm4gdGhpcy5fZG93bmxvYWREYXRhVXJsKHQsZSwibGF0ZXgiKX1fZG93bmxvYWREYXRhVXJsKHQsZSxuKXtyZXR1cm4gdGhpcy5iYWNrZW5kLmdldERvd25sb2FkVXJsKG4sdCxlLmNvbHVtbnNWaXNpYmlsaXR5KX1fY29tcHV0ZUV4cGVyaW1lbnRBbmRSZWxhdGVkUHJvcHMoKXtjb25zdCB0PUtSdDt0LmlzTnVsbE9yVW5kZWZpbmVkKHRoaXMuYmFja2VuZCl8fHQuaXNOdWxsT3JVbmRlZmluZWQodGhpcy5leHBlcmltZW50TmFtZSl8fHRoaXMuYmFja2VuZC5nZXRFeHBlcmltZW50KHtleHBlcmltZW50TmFtZTp0aGlzLmV4cGVyaW1lbnROYW1lfSkudGhlbigodD0+e3dlLmlzRXF1YWwodCx0aGlzLl9leHBlcmltZW50KXx8KHRoaXMuc2V0KCJfZXhwZXJpbWVudCIsdCksdGhpcy5fY29tcHV0ZUhQYXJhbXMoKSx0aGlzLl9jb21wdXRlTWV0cmljcygpLHRoaXMuX3F1ZXJ5U2VydmVyKCksdGhpcy5fcmVzb2x2ZUdldEV4cGVyaW1lbnQoKSl9KSkuZmluYWxseSgoKCk9Pnt0aGlzLl9jb21wdXRlRGF0YUZvdW5kKCl9KSl9X2NvbXB1dGVEYXRhRm91bmQoKXtjb25zdCB0PUJvb2xlYW4odGhpcy5fZXhwZXJpbWVudCYmdGhpcy5fZXhwZXJpbWVudC5ocGFyYW1JbmZvcyYmdGhpcy5fZXhwZXJpbWVudC5ocGFyYW1JbmZvcy5sZW5ndGg+MCYmdGhpcy5fZXhwZXJpbWVudC5tZXRyaWNJbmZvcyYmdGhpcy5fZXhwZXJpbWVudC5tZXRyaWNJbmZvcy5sZW5ndGg+MCk7dGhpcy5zZXQoImRhdGFMb2FkZWRXaXRoTm9uRW1wdHlIcGFyYW1zIix0KSx0aGlzLnNldCgiZGF0YUxvYWRlZFdpdGhFbXB0eUhwYXJhbXMiLCF0KX1fY29tcHV0ZUhQYXJhbXMoKXtjb25zdCB0PVtdO3RoaXMuX2V4cGVyaW1lbnQuaHBhcmFtSW5mb3MuZm9yRWFjaCgoKGUsbik9Pntjb25zdCBpPXtpbmZvOmUsZGlzcGxheWVkOm48NSxmaWx0ZXI6e319O2kuaW5mby5oYXNPd25Qcm9wZXJ0eSgiZG9tYWluRGlzY3JldGUiKT8oaS5maWx0ZXIuZG9tYWluRGlzY3JldGU9W10saS5pbmZvLmRvbWFpbkRpc2NyZXRlLmZvckVhY2goKHQ9PntpLmZpbHRlci5kb21haW5EaXNjcmV0ZS5wdXNoKHt2YWx1ZTp0LGNoZWNrZWQ6ITB9KX0pKSk6IkRBVEFfVFlQRV9CT09MIj09PWkuaW5mby50eXBlP2kuZmlsdGVyLmRvbWFpbkRpc2NyZXRlPVt7dmFsdWU6ITEsY2hlY2tlZDohMH0se3ZhbHVlOiEwLGNoZWNrZWQ6ITB9XToiREFUQV9UWVBFX0ZMT0FUNjQiPT09aS5pbmZvLnR5cGU/aS5maWx0ZXIuaW50ZXJ2YWw9e21pbjp7dmFsdWU6IiIsaW52YWxpZDohMX0sbWF4Ont2YWx1ZToiIixpbnZhbGlkOiExfX06IkRBVEFfVFlQRV9TVFJJTkciPT09aS5pbmZvLnR5cGU/aS5maWx0ZXIucmVnZXhwPSIiOmNvbnNvbGUud2FybigidW5rbm93biBocGFyYW0uaW5mby50eXBlOiAlcyIsaS5pbmZvLnR5cGUpLHQucHVzaChpKX0pKSx0aGlzLnNldCgiX2hwYXJhbXMiLHQpfV9jb21wdXRlTWV0cmljcygpe2NvbnN0IHQ9W107dGhpcy5fZXhwZXJpbWVudC5tZXRyaWNJbmZvcy5mb3JFYWNoKCgoZSxuKT0+e3QucHVzaCh7aW5mbzplLGZpbHRlcjp7aW50ZXJ2YWw6e21pbjp7dmFsdWU6IiIsaW52YWxpZDohMX0sbWF4Ont2YWx1ZToiIixpbnZhbGlkOiExfX19LGRpc3BsYXllZDpuPDV9KX0pKSx0aGlzLnNldCgiX21ldHJpY3MiLHQpfV9jb21wdXRlU2NoZW1hKCl7cmV0dXJuIHRoaXMuX2hwYXJhbXMmJnRoaXMuX21ldHJpY3M/e2hwYXJhbUNvbHVtbnM6dGhpcy5faHBhcmFtcy5tYXAoKHQ9Pih7aHBhcmFtSW5mbzp0LmluZm99KSkpLG1ldHJpY0NvbHVtbnM6dGhpcy5fbWV0cmljcy5tYXAoKHQ9Pih7bWV0cmljSW5mbzp0LmluZm99KSkpfTp7aHBhcmFtQ29sdW1uczpbXSxtZXRyaWNDb2x1bW5zOltdfX1fdXBkYXRlQ29uZmlndXJhdGlvbigpe3RoaXMuZGVib3VuY2UoIl91cGRhdGVDb25maWd1cmF0aW9uIiwoKCk9Pnt0aGlzLmNvbmZpZ3VyYXRpb249e3NjaGVtYTp0aGlzLl9jb21wdXRlU2NoZW1hKCksY29sdW1uc1Zpc2liaWxpdHk6dGhpcy5fY29tcHV0ZUNvbHVtbnNWaXNpYmlsaXR5KCksdmlzaWJsZVNjaGVtYTp0aGlzLl9jb21wdXRlVmlzaWJsZVNjaGVtYSgpfX0pKX1fY29tcHV0ZUNvbHVtbnNWaXNpYmlsaXR5KCl7cmV0dXJuIHRoaXMuX2hwYXJhbXMmJnRoaXMuX21ldHJpY3M/dGhpcy5faHBhcmFtcy5tYXAoKHQ9PnQuZGlzcGxheWVkKSkuY29uY2F0KHRoaXMuX21ldHJpY3MubWFwKCh0PT50LmRpc3BsYXllZCkpKTpbXX1fY29tcHV0ZVZpc2libGVTY2hlbWEoKXtyZXR1cm4gdGhpcy5faHBhcmFtcyYmdGhpcy5fbWV0cmljcz97aHBhcmFtSW5mb3M6dGhpcy5faHBhcmFtcy5maWx0ZXIoKHQ9PnQuZGlzcGxheWVkKSkubWFwKCh0PT50LmluZm8pKSxtZXRyaWNJbmZvczp0aGlzLl9tZXRyaWNzLmZpbHRlcigodD0+dC5kaXNwbGF5ZWQpKS5tYXAoKHQ9PnQuaW5mbykpfTp7aHBhcmFtSW5mb3M6W10sbWV0cmljSW5mb3M6W119fV9xdWVyeVNlcnZlcigpe3RoaXMuZGVib3VuY2UoInF1ZXJ5U2VydmVyIiwoKCk9PnRoaXMuX3F1ZXJ5U2VydmVyTm9EZWJvdW5jZSgpKSwxMDApfV9xdWVyeVNlcnZlck5vRGVib3VuY2UoKXtpZih0aGlzLl9ocGFyYW1zJiZ0aGlzLl9tZXRyaWNzKXJldHVybiB0aGlzLl9zZW5kTGlzdFNlc3Npb25Hcm91cHNSZXF1ZXN0KCkudGhlbih0aGlzLl9saXN0U2Vzc2lvbkdyb3Vwc0NhbmNlbGxlci5jYW5jZWxsYWJsZSgoKHt2YWx1ZTp0LGNhbmNlbGxlZDplfSk9PntlfHwodC50b3RhbFNpemU+PTA/KHRoaXMuc2V0KCJfcGFnZUNvdW50U3RyIixTdHJpbmcoTWF0aC5jZWlsKHQudG90YWxTaXplLyt0aGlzLl9wYWdlU2l6ZUlucHV0LnZhbHVlKSkpLHRoaXMuc2V0KCJfdG90YWxTZXNzaW9uR3JvdXBzQ291bnRTdHIiLHQudG90YWxTaXplKSk6KHRoaXMuc2V0KCJfcGFnZUNvdW50U3RyIiwiPyIpLHRoaXMuc2V0KCJfdG90YWxTZXNzaW9uR3JvdXBzQ291bnRTdHIiLCJVbmtub3duIikpLFhSdCh0aGlzLCJzZXNzaW9uR3JvdXBzIix0LnNlc3Npb25Hcm91cHMpKX0pKSl9X3NlbmRMaXN0U2Vzc2lvbkdyb3Vwc1JlcXVlc3QoKXtjb25zdCB0PXRoaXMuX2J1aWxkTGlzdFNlc3Npb25Hcm91cHNSZXF1ZXN0KCk7aWYobnVsbCE9PXQpcmV0dXJuIHRoaXMuc2V0KCJfc2Vzc2lvbkdyb3Vwc1JlcXVlc3QiLHQpLHRoaXMuX2xpc3RTZXNzaW9uR3JvdXBzQ2FuY2VsbGVyLmNhbmNlbEFsbCgpLHRoaXMuYmFja2VuZC5saXN0U2Vzc2lvbkdyb3Vwcyh0KX1fYnVpbGRMaXN0U2Vzc2lvbkdyb3Vwc1JlcXVlc3QoKXtjb25zdCB0PXRoaXM7bGV0IGU9ITA7ZnVuY3Rpb24gbihuKXtjb25zdCBpPXQuZ2V0KG4rIi5taW4udmFsdWUiKTtjb25zb2xlLmFzc2VydCh2b2lkIDAhPT1pKTtjb25zdCByPSIiPT09aT8iLUluZmluaXR5IjoraTt0LnNldChuKyIubWluLmludmFsaWQiLGlzTmFOKHIpKSxlPWUmJiFpc05hTihyKTtjb25zdCBvPXQuZ2V0KG4rIi5tYXgudmFsdWUiKTtjb25zb2xlLmFzc2VydCh2b2lkIDAhPT1vKTtjb25zdCBhPSIiPT09bz8iSW5maW5pdHkiOitvO3JldHVybiB0LnNldChuKyIubWF4LmludmFsaWQiLGlzTmFOKGEpKSxlPWUmJiFpc05hTihhKSxpc05hTihyKXx8aXNOYU4oYSk/bnVsbDp7bWluVmFsdWU6cixtYXhWYWx1ZTphfX1mdW5jdGlvbiBpKG4pe2NvbnN0IGk9dC5nZXQobisiLnZhbHVlIik7Y29uc29sZS5hc3NlcnQodm9pZCAwIT09aSk7Y29uc3Qgcj0raSxvPU51bWJlci5pc0ludGVnZXIocikmJnI+MDtyZXR1cm4gdC5zZXQobisiLmludmFsaWQiLCFvKSxlPWUmJm8sbz9yOm51bGx9Y29uc3Qgcj10aGlzLl9zdGF0dXNlcy5maWx0ZXIoKHQ9PnQuYWxsb3dlZCkpLm1hcCgodD0+dC52YWx1ZSkpO2xldCBvPVtdO2lmKHRoaXMuX2hwYXJhbXMuZm9yRWFjaCgoKHQsZSk9PntsZXQgaT17aHBhcmFtOnQuaW5mby5uYW1lfTtpZih0LmZpbHRlci5kb21haW5EaXNjcmV0ZSlpLmZpbHRlckRpc2NyZXRlPVtdLHQuZmlsdGVyLmRvbWFpbkRpc2NyZXRlLmZvckVhY2goKHQ9Pnt0LmNoZWNrZWQmJmkuZmlsdGVyRGlzY3JldGUucHVzaCh0LnZhbHVlKX0pKTtlbHNlIGlmKHQuZmlsdGVyLmludGVydmFsKWkuZmlsdGVySW50ZXJ2YWw9bigiX2hwYXJhbXMuIitlKyIuZmlsdGVyLmludGVydmFsIik7ZWxzZXtpZighdC5maWx0ZXIucmVnZXhwKXJldHVybiBjb25zb2xlLmVycm9yKCJocGFyYW0uZmlsdGVyIHdpdGggbm8gZG9tYWluRGlzY3JldGUsIGludGVydmFsIG9yIHJlZ2V4cCBwcm9wZXJ0aWVzIHNldDogJXMiLHQpLG51bGw7aS5maWx0ZXJSZWdleHA9dC5maWx0ZXIucmVnZXhwfW8ucHVzaChpKX0pKSx0aGlzLl9tZXRyaWNzLmZvckVhY2goKCh0LGUpPT57bGV0IGk9e21ldHJpYzp0LmluZm8ubmFtZSxmaWx0ZXJJbnRlcnZhbDpuKCJfbWV0cmljcy4iK2UrIi5maWx0ZXIuaW50ZXJ2YWwiKX07by5wdXNoKGkpfSkpLHZvaWQgMCE9PXRoaXMuX3NvcnRCeUluZGV4JiZ2b2lkIDAhPT10aGlzLl9zb3J0RGlyZWN0aW9uKXtpZighKHRoaXMuX3NvcnRCeUluZGV4IGluIG8pKXJldHVybiBjb25zb2xlLmVycm9yKCJObyBjb2x1bW4gaW4gY29sUGFyYW1zIHdpdGggaW5kZXggc29ydEJ5SW5kZXg6ICVzIix0aGlzLl9zb3J0QnlJbmRleCksbnVsbDtvW3RoaXMuX3NvcnRCeUluZGV4XS5vcmRlcj0wPT09dGhpcy5fc29ydERpcmVjdGlvbj8iT1JERVJfQVNDIjoiT1JERVJfREVTQyJ9Y29uc3QgYT1pKCJfcGFnZU51bWJlcklucHV0Iikscz1pKCJfcGFnZVNpemVJbnB1dCIpO3JldHVybiBlP3tleHBlcmltZW50TmFtZTp0aGlzLmV4cGVyaW1lbnROYW1lLGFsbG93ZWRTdGF0dXNlczpyLGNvbFBhcmFtczpvLHN0YXJ0SW5kZXg6cyooYS0xKSxzbGljZVNpemU6c306bnVsbH1fbWV0cmljU29ydEJ5SW5kZXgodCl7cmV0dXJuIHQrdGhpcy5faHBhcmFtcy5sZW5ndGh9fTtzenQudGVtcGxhdGU9X2VgCiAgICA8aHBhcmFtcy1zcGxpdC1sYXlvdXQgb3JpZW50YXRpb249InZlcnRpY2FsIj4KICAgICAgPGRpdiBzbG90PSJjb250ZW50IiBjbGFzcz0ic2VjdGlvbiBoeXBlcnBhcmFtZXRlcnMiPgogICAgICAgIDxkaXYgY2xhc3M9InNlY3Rpb24tdGl0bGUiPkh5cGVycGFyYW1ldGVyczwvZGl2PgogICAgICAgIDx0ZW1wbGF0ZSBpcz0iZG9tLXJlcGVhdCIgaXRlbXM9Int7X2hwYXJhbXN9fSIgYXM9ImhwYXJhbSI+CiAgICAgICAgICA8ZGl2IGNsYXNzPSJocGFyYW0iPgogICAgICAgICAgICA8cGFwZXItY2hlY2tib3gKICAgICAgICAgICAgICBjaGVja2VkPSJ7e2hwYXJhbS5kaXNwbGF5ZWR9fSIKICAgICAgICAgICAgICBjbGFzcz0iaHBhcmFtLWNoZWNrYm94IgogICAgICAgICAgICA+CiAgICAgICAgICAgICAgW1tfaHBhcmFtTmFtZShocGFyYW0uaW5mbyldXQogICAgICAgICAgICA8L3BhcGVyLWNoZWNrYm94PgogICAgICAgICAgICA8IS0tIFByZWNpc2VseSBvbmUgb2YgdGhlIHRlbXBsYXRlcyBiZWxvdyB3aWxsIGJlIHN0YW1wZWQuLS0+CiAgICAgICAgICAgIDwhLS0gMS4gQSBsaXN0IG9mIGNoZWNrYm94ZXMgLS0+CiAgICAgICAgICAgIDx0ZW1wbGF0ZSBpcz0iZG9tLWlmIiBpZj0iW1tocGFyYW0uZmlsdGVyLmRvbWFpbkRpc2NyZXRlXV0iPgogICAgICAgICAgICAgIDx0ZW1wbGF0ZQogICAgICAgICAgICAgICAgaXM9ImRvbS1yZXBlYXQiCiAgICAgICAgICAgICAgICBpdGVtcz0iW1tocGFyYW0uZmlsdGVyLmRvbWFpbkRpc2NyZXRlXV0iCiAgICAgICAgICAgICAgPgogICAgICAgICAgICAgICAgPHBhcGVyLWNoZWNrYm94CiAgICAgICAgICAgICAgICAgIGNoZWNrZWQ9Int7aXRlbS5jaGVja2VkfX0iCiAgICAgICAgICAgICAgICAgIGNsYXNzPSJkaXNjcmV0ZS12YWx1ZS1jaGVja2JveCIKICAgICAgICAgICAgICAgICAgb24tY2hhbmdlPSJfcXVlcnlTZXJ2ZXIiCiAgICAgICAgICAgICAgICA+CiAgICAgICAgICAgICAgICAgIFtbX3ByZXR0eVByaW50KGl0ZW0udmFsdWUpXV0KICAgICAgICAgICAgICAgIDwvcGFwZXItY2hlY2tib3g+CiAgICAgICAgICAgICAgPC90ZW1wbGF0ZT4KICAgICAgICAgICAgPC90ZW1wbGF0ZT4KICAgICAgICAgICAgPCEtLSAyLiBBIG51bWVyaWMgaW50ZXJ2YWwgLS0+CiAgICAgICAgICAgIDx0ZW1wbGF0ZSBpcz0iZG9tLWlmIiBpZj0iW1tocGFyYW0uZmlsdGVyLmludGVydmFsXV0iPgogICAgICAgICAgICAgIDxwYXBlci1pbnB1dAogICAgICAgICAgICAgICAgbGFiZWw9Ik1pbiIKICAgICAgICAgICAgICAgIHZhbHVlPSJ7e2hwYXJhbS5maWx0ZXIuaW50ZXJ2YWwubWluLnZhbHVlfX0iCiAgICAgICAgICAgICAgICBhbGxvd2VkX3BhdHRlcm49IlswLTkuZVxcLV0iCiAgICAgICAgICAgICAgICBvbi12YWx1ZS1jaGFuZ2VkPSJfcXVlcnlTZXJ2ZXIiCiAgICAgICAgICAgICAgICBlcnJvci1tZXNzYWdlPSJJbnZhbGlkIGlucHV0IgogICAgICAgICAgICAgICAgaW52YWxpZD0iW1tocGFyYW0uZmlsdGVyLmludGVydmFsLm1pbi5pbnZhbGlkXV0iCiAgICAgICAgICAgICAgICBwbGFjZWhvbGRlcj0iLWluZmluaXR5IgogICAgICAgICAgICAgID4KICAgICAgICAgICAgICA8L3BhcGVyLWlucHV0PgogICAgICAgICAgICAgIDxwYXBlci1pbnB1dAogICAgICAgICAgICAgICAgbGFiZWw9Ik1heCIKICAgICAgICAgICAgICAgIHZhbHVlPSJ7e2hwYXJhbS5maWx0ZXIuaW50ZXJ2YWwubWF4LnZhbHVlfX0iCiAgICAgICAgICAgICAgICBhbGxvd2VkX3BhdHRlcm49IlswLTkuZVxcLV0iCiAgICAgICAgICAgICAgICBvbi12YWx1ZS1jaGFuZ2VkPSJfcXVlcnlTZXJ2ZXIiCiAgICAgICAgICAgICAgICBlcnJvci1tZXNzYWdlPSJJbnZhbGlkIGlucHV0IgogICAgICAgICAgICAgICAgaW52YWxpZD0iW1tocGFyYW0uZmlsdGVyLmludGVydmFsLm1heC5pbnZhbGlkXV0iCiAgICAgICAgICAgICAgICBwbGFjZWhvbGRlcj0iK2luZmluaXR5IgogICAgICAgICAgICAgID4KICAgICAgICAgICAgICA8L3BhcGVyLWlucHV0PgogICAgICAgICAgICA8L3RlbXBsYXRlPgogICAgICAgICAgICA8IS0tIDMuIEEgcmVnZXhwIC0tPgogICAgICAgICAgICA8dGVtcGxhdGUgaXM9ImRvbS1pZiIgaWY9IltbaHBhcmFtLmZpbHRlci5yZWdleHBdXSI+CiAgICAgICAgICAgICAgPHBhcGVyLWlucHV0CiAgICAgICAgICAgICAgICBsYWJlbD0iUmVndWxhciBleHByZXNzaW9uIgogICAgICAgICAgICAgICAgdmFsdWU9Int7aHBhcmFtLmZpbHRlci5yZWdleHB9fSIKICAgICAgICAgICAgICAgIG9uLXZhbHVlLWNoYW5nZWQ9Il9xdWVyeVNlcnZlciIKICAgICAgICAgICAgICA+CiAgICAgICAgICAgICAgPC9wYXBlci1pbnB1dD4KICAgICAgICAgICAgPC90ZW1wbGF0ZT4KICAgICAgICAgIDwvZGl2PgogICAgICAgIDwvdGVtcGxhdGU+CiAgICAgIDwvZGl2PgogICAgICA8ZGl2IHNsb3Q9ImNvbnRlbnQiIGNsYXNzPSJzZWN0aW9uIG1ldHJpY3MiPgogICAgICAgIDxkaXYgY2xhc3M9InNlY3Rpb24tdGl0bGUiPk1ldHJpY3M8L2Rpdj4KICAgICAgICA8dGVtcGxhdGUgaXM9ImRvbS1yZXBlYXQiIGl0ZW1zPSJ7e19tZXRyaWNzfX0iIGFzPSJtZXRyaWMiPgogICAgICAgICAgPGRpdiBjbGFzcz0ibWV0cmljIj4KICAgICAgICAgICAgPCEtLSBUT0RPKGVyZXopOiBNYWtlIGl0IGVhc2llciB0byBoYW5kbGUgYSBsYXJnZSBudW1iZXIgb2YKICAgICAgICAgICAgICAgICAgbWV0cmljczoKICAgICAgICAgICAgICAgICAgMS4gQWRkIGFuICdpc29sYXRvcicgcmFkaW8tYnV0dG9uIHRvIHNlbGVjdCBqdXN0IG9uZQogICAgICAgICAgICAgICAgICBtZXRyaWMgYW5kCiAgICAgICAgICAgICAgICAgIGhpZGUgYWxsIHRoZSByZXN0CiAgICAgICAgICAgICAgICAgIDIuIEFkZCBhICd0b2dnbGUtYWxsJyBidXR0b24gdGhhdCB3aWxsIGhpZGUvdW5oaWRlCiAgICAgICAgICAgICAgICAgICAgYWxsIHRoZQogICAgICAgICAgICAgICAgICBtZXRyaWNzLgogICAgICAgICAgICAgICAgICBVc2Ugc2ltaWxhciBsb2dpYy9hcHBlYXJhbmNlIHRvIHRoZSBydW4tc2VsZWN0b3Igb2YKICAgICAgICAgICAgICAgICAgc2NhbGFycy4tLT4KICAgICAgICAgICAgPHBhcGVyLWNoZWNrYm94CiAgICAgICAgICAgICAgY2hlY2tlZD0ie3ttZXRyaWMuZGlzcGxheWVkfX0iCiAgICAgICAgICAgICAgY2xhc3M9Im1ldHJpYy1jaGVja2JveCIKICAgICAgICAgICAgPgogICAgICAgICAgICAgIFtbX21ldHJpY05hbWUobWV0cmljLmluZm8pXV0KICAgICAgICAgICAgPC9wYXBlci1jaGVja2JveD4KICAgICAgICAgICAgPGRpdiBjbGFzcz0iaW5saW5lLWVsZW1lbnQiPgogICAgICAgICAgICAgIDxwYXBlci1pbnB1dAogICAgICAgICAgICAgICAgbGFiZWw9Ik1pbiIKICAgICAgICAgICAgICAgIHZhbHVlPSJ7e21ldHJpYy5maWx0ZXIuaW50ZXJ2YWwubWluLnZhbHVlfX0iCiAgICAgICAgICAgICAgICBhbGxvd2VkLXBhdHRlcm49IlswLTkuZVxcLV0iCiAgICAgICAgICAgICAgICBvbi12YWx1ZS1jaGFuZ2VkPSJfcXVlcnlTZXJ2ZXIiCiAgICAgICAgICAgICAgICBlcnJvci1tZXNzYWdlPSJJbnZhbGlkIGlucHV0IgogICAgICAgICAgICAgICAgaW52YWxpZD0ie3ttZXRyaWMuZmlsdGVyLmludGVydmFsLm1pbi5pbnZhbGlkfX0iCiAgICAgICAgICAgICAgICBwbGFjZWhvbGRlcj0iLWluZmluaXR5IgogICAgICAgICAgICAgID4KICAgICAgICAgICAgICA8L3BhcGVyLWlucHV0PgogICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgPGRpdiBjbGFzcz0iaW5saW5lLWVsZW1lbnQiPgogICAgICAgICAgICAgIDxwYXBlci1pbnB1dAogICAgICAgICAgICAgICAgbGFiZWw9Ik1heCIKICAgICAgICAgICAgICAgIGFsbG93ZWQtcGF0dGVybj0iWzAtOS5lXFwtXSIKICAgICAgICAgICAgICAgIHZhbHVlPSJ7e21ldHJpYy5maWx0ZXIuaW50ZXJ2YWwubWF4LnZhbHVlfX0iCiAgICAgICAgICAgICAgICBvbi12YWx1ZS1jaGFuZ2VkPSJfcXVlcnlTZXJ2ZXIiCiAgICAgICAgICAgICAgICBlcnJvci1tZXNzYWdlPSJJbnZhbGlkIGlucHV0IgogICAgICAgICAgICAgICAgaW52YWxpZD0ie3ttZXRyaWMuZmlsdGVyLmludGVydmFsLm1heC5pbnZhbGlkfX0iCiAgICAgICAgICAgICAgICBwbGFjZWhvbGRlcj0iK2luZmluaXR5IgogICAgICAgICAgICAgID4KICAgICAgICAgICAgICA8L3BhcGVyLWlucHV0PgogICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgIDwvZGl2PgogICAgICAgIDwvdGVtcGxhdGU+CiAgICAgIDwvZGl2PgogICAgICA8ZGl2IHNsb3Q9ImNvbnRlbnQiIGNsYXNzPSJzZWN0aW9uIHN0YXR1cyI+CiAgICAgICAgPGRpdiBjbGFzcz0ic2VjdGlvbi10aXRsZSI+U3RhdHVzPC9kaXY+CiAgICAgICAgPHRlbXBsYXRlIGlzPSJkb20tcmVwZWF0IiBpdGVtcz0iW1tfc3RhdHVzZXNdXSIgYXM9InN0YXR1cyI+CiAgICAgICAgICA8cGFwZXItY2hlY2tib3ggY2hlY2tlZD0ie3tzdGF0dXMuYWxsb3dlZH19IiBvbi1jaGFuZ2U9Il9xdWVyeVNlcnZlciI+CiAgICAgICAgICAgIFtbc3RhdHVzLmRpc3BsYXlOYW1lXV0KICAgICAgICAgIDwvcGFwZXItY2hlY2tib3g+CiAgICAgICAgPC90ZW1wbGF0ZT4KICAgICAgPC9kaXY+CiAgICAgIDxkaXYgc2xvdD0iY29udGVudCIgY2xhc3M9InNlY3Rpb24gc29ydGluZyI+CiAgICAgICAgPGRpdiBjbGFzcz0ic2VjdGlvbi10aXRsZSI+U29ydGluZzwvZGl2PgogICAgICAgIDxwYXBlci1kcm9wZG93bi1tZW51CiAgICAgICAgICBsYWJlbD0iU29ydCBieSIKICAgICAgICAgIG9uLXNlbGVjdGVkLWl0ZW0tY2hhbmdlZD0iX3F1ZXJ5U2VydmVyIgogICAgICAgICAgaG9yaXpvbnRhbC1hbGlnbj0ibGVmdCIKICAgICAgICA+CiAgICAgICAgICA8cGFwZXItbGlzdGJveAogICAgICAgICAgICBjbGFzcz0iZHJvcGRvd24tY29udGVudCIKICAgICAgICAgICAgc2xvdD0iZHJvcGRvd24tY29udGVudCIKICAgICAgICAgICAgc2VsZWN0ZWQ9Int7X3NvcnRCeUluZGV4fX0iCiAgICAgICAgICAgIG9uLXNlbGVjdGVkLWl0ZW0tY2hhbmdlZD0iX3F1ZXJ5U2VydmVyIgogICAgICAgICAgPgogICAgICAgICAgICA8dGVtcGxhdGUgaXM9ImRvbS1yZXBlYXQiIGl0ZW1zPSJbW19ocGFyYW1zXV0iIGFzPSJocGFyYW0iPgogICAgICAgICAgICAgIDxwYXBlci1pdGVtPiBbW19ocGFyYW1OYW1lKGhwYXJhbS5pbmZvKV1dIDwvcGFwZXItaXRlbT4KICAgICAgICAgICAgPC90ZW1wbGF0ZT4KICAgICAgICAgICAgPHRlbXBsYXRlIGlzPSJkb20tcmVwZWF0IiBpdGVtcz0iW1tfbWV0cmljc11dIiBhcz0ibWV0cmljIj4KICAgICAgICAgICAgICA8cGFwZXItaXRlbT4gW1tfbWV0cmljTmFtZShtZXRyaWMuaW5mbyldXSA8L3BhcGVyLWl0ZW0+CiAgICAgICAgICAgIDwvdGVtcGxhdGU+CiAgICAgICAgICA8L3BhcGVyLWxpc3Rib3g+CiAgICAgICAgPC9wYXBlci1kcm9wZG93bi1tZW51PgogICAgICAgIDxwYXBlci1kcm9wZG93bi1tZW51CiAgICAgICAgICBsYWJlbD0iRGlyZWN0aW9uIgogICAgICAgICAgb24tc2VsZWN0ZWQtaXRlbS1jaGFuZ2VkPSJfcXVlcnlTZXJ2ZXIiCiAgICAgICAgICBob3Jpem9udGFsLWFsaWduPSJsZWZ0IgogICAgICAgID4KICAgICAgICAgIDxwYXBlci1saXN0Ym94CiAgICAgICAgICAgIGNsYXNzPSJkcm9wZG93bi1jb250ZW50IgogICAgICAgICAgICBzbG90PSJkcm9wZG93bi1jb250ZW50IgogICAgICAgICAgICBzZWxlY3RlZD0ie3tfc29ydERpcmVjdGlvbn19IgogICAgICAgICAgPgogICAgICAgICAgICA8cGFwZXItaXRlbT5Bc2NlbmRpbmc8L3BhcGVyLWl0ZW0+CiAgICAgICAgICAgIDxwYXBlci1pdGVtPkRlc2NlbmRpbmc8L3BhcGVyLWl0ZW0+CiAgICAgICAgICA8L3BhcGVyLWxpc3Rib3g+CiAgICAgICAgPC9wYXBlci1kcm9wZG93bi1tZW51PgogICAgICA8L2Rpdj4KICAgICAgPGRpdiBzbG90PSJjb250ZW50IiBjbGFzcz0ic2VjdGlvbiBwYWdpbmciPgogICAgICAgIDxkaXYgY2xhc3M9InNlY3Rpb24tdGl0bGUiPlBhZ2luZzwvZGl2PgogICAgICAgIDxkaXY+CiAgICAgICAgICBOdW1iZXIgb2YgbWF0Y2hpbmcgc2Vzc2lvbiBncm91cHM6IFtbX3RvdGFsU2Vzc2lvbkdyb3Vwc0NvdW50U3RyXV0KICAgICAgICA8L2Rpdj4KICAgICAgICA8ZGl2IGNsYXNzPSJpbmxpbmUtZWxlbWVudCBwYWdlLW51bWJlci1pbnB1dCI+CiAgICAgICAgICA8cGFwZXItaW5wdXQKICAgICAgICAgICAgbGFiZWw9IlBhZ2UgIyIKICAgICAgICAgICAgdmFsdWU9Int7X3BhZ2VOdW1iZXJJbnB1dC52YWx1ZX19IgogICAgICAgICAgICBhbGxvd2VkLXBhdHRlcm49IlswLTldIgogICAgICAgICAgICBlcnJvci1tZXNzYWdlPSJJbnZhbGlkIGlucHV0IgogICAgICAgICAgICBpbnZhbGlkPSJbW19wYWdlTnVtYmVySW5wdXQuaW52YWxpZF1dIgogICAgICAgICAgICBvbi12YWx1ZS1jaGFuZ2VkPSJfcXVlcnlTZXJ2ZXIiCiAgICAgICAgICA+CiAgICAgICAgICAgIDxkaXYgc2xvdD0ic3VmZml4IiBjbGFzcz0icGFnZS1zdWZmaXgiPi8gW1tfcGFnZUNvdW50U3RyXV08L2Rpdj4KICAgICAgICAgIDwvcGFwZXItaW5wdXQ+CiAgICAgICAgPC9kaXY+CiAgICAgICAgPGRpdiBjbGFzcz0iaW5saW5lLWVsZW1lbnQgcGFnZS1zaXplLWlucHV0Ij4KICAgICAgICAgIDxwYXBlci1pbnB1dAogICAgICAgICAgICBsYWJlbD0iTWF4ICMgb2Ygc2Vzc2lvbiBncm91cHMgcGVyIHBhZ2U6IgogICAgICAgICAgICB2YWx1ZT0ie3tfcGFnZVNpemVJbnB1dC52YWx1ZX19IgogICAgICAgICAgICBhbGxvd2VkLXBhdHRlcm49IlswLTldIgogICAgICAgICAgICBlcnJvci1tZXNzYWdlPSJJbnZhbGlkIGlucHV0IgogICAgICAgICAgICBpbnZhbGlkPSJbW19wYWdlU2l6ZUlucHV0LmludmFsaWRdXSIKICAgICAgICAgICAgb24tdmFsdWUtY2hhbmdlZD0iX3F1ZXJ5U2VydmVyIgogICAgICAgICAgPgogICAgICAgICAgPC9wYXBlci1pbnB1dD4KICAgICAgICA8L2Rpdj4KICAgICAgPC9kaXY+CiAgICAgIDxkaXYgc2xvdD0iY29udGVudCIgY2xhc3M9InNlY3Rpb24gZG93bmxvYWQiPgogICAgICAgIDx0ZW1wbGF0ZSBpcz0iZG9tLWlmIiBpZj0iW1tfc2Vzc2lvbkdyb3Vwc1JlcXVlc3RdXSI+CiAgICAgICAgICBEb3dubG9hZCBkYXRhIGFzCiAgICAgICAgICA8c3Bhbj4KICAgICAgICAgICAgPGEKICAgICAgICAgICAgICBpZD0iY3N2TGluayIKICAgICAgICAgICAgICBkb3dubG9hZD0iaHBhcmFtc190YWJsZS5jc3YiCiAgICAgICAgICAgICAgaHJlZj0iW1tfY3N2VXJsKF9zZXNzaW9uR3JvdXBzUmVxdWVzdCwgY29uZmlndXJhdGlvbildXSIKICAgICAgICAgICAgICA+Q1NWPC9hCiAgICAgICAgICAgID4KICAgICAgICAgICAgPGEKICAgICAgICAgICAgICBpZD0ianNvbkxpbmsiCiAgICAgICAgICAgICAgZG93bmxvYWQ9ImhwYXJhbXNfdGFibGUuanNvbiIKICAgICAgICAgICAgICBocmVmPSJbW19qc29uVXJsKF9zZXNzaW9uR3JvdXBzUmVxdWVzdCwgY29uZmlndXJhdGlvbildXSIKICAgICAgICAgICAgICA+SlNPTjwvYQogICAgICAgICAgICA+CiAgICAgICAgICAgIDxhCiAgICAgICAgICAgICAgaWQ9ImxhdGV4TGluayIKICAgICAgICAgICAgICBkb3dubG9hZD0iaHBhcmFtc190YWJsZS50ZXgiCiAgICAgICAgICAgICAgaHJlZj0iW1tfbGF0ZXhVcmwoX3Nlc3Npb25Hcm91cHNSZXF1ZXN0LCBjb25maWd1cmF0aW9uKV1dIgogICAgICAgICAgICAgID5MYVRlWDwvYQogICAgICAgICAgICA+CiAgICAgICAgICA8L3NwYW4+CiAgICAgICAgPC90ZW1wbGF0ZT4KICAgICAgPC9kaXY+CiAgICA8L2hwYXJhbXMtc3BsaXQtbGF5b3V0PgogICAgPHN0eWxlPgogICAgICAuc2VjdGlvbiB7CiAgICAgICAgcGFkZGluZzogMTBweDsKICAgICAgfQogICAgICAuc2VjdGlvbi10aXRsZSB7CiAgICAgICAgZGlzcGxheTogYmxvY2s7CiAgICAgICAgZm9udC13ZWlnaHQ6IGJvbGQ7CiAgICAgICAgdGV4dC1kZWNvcmF0aW9uOiB1bmRlcmxpbmU7CiAgICAgICAgbWFyZ2luLWJvdHRvbTogN3B4OwogICAgICB9CiAgICAgIC5kaXNjcmV0ZS12YWx1ZS1jaGVja2JveCwKICAgICAgLm1ldHJpYy1jaGVja2JveCwKICAgICAgLmhwYXJhbS1jaGVja2JveCB7CiAgICAgICAgZGlzcGxheTogYmxvY2s7CiAgICAgIH0KICAgICAgLmRpc2NyZXRlLXZhbHVlLWNoZWNrYm94IHsKICAgICAgICBtYXJnaW4tbGVmdDogMjBweDsKICAgICAgfQogICAgICAuaHBhcmFtLAogICAgICAubWV0cmljIHsKICAgICAgICBkaXNwbGF5OiBibG9jazsKICAgICAgfQogICAgICAuaW5saW5lLWVsZW1lbnQgewogICAgICAgIGRpc3BsYXk6IGlubGluZS1ibG9jazsKICAgICAgICB3aWR0aDogNDAlOwogICAgICAgIG1hcmdpbi1sZWZ0OiAxMHB4OwogICAgICB9CiAgICAgIC5wYWdlLW51bWJlci1pbnB1dCB7CiAgICAgICAgd2lkdGg6IDIwJTsKICAgICAgfQogICAgICAucGFnZS1zaXplLWlucHV0IHsKICAgICAgICB3aWR0aDogNjAlOwogICAgICB9CiAgICAgIHZhYWRpbi1zcGxpdC1sYXlvdXQgewogICAgICAgIGhlaWdodDogMTAwJTsKICAgICAgfQogICAgICBwYXBlci1saXN0Ym94IHsKICAgICAgICBtYXgtaGVpZ2h0OiAxNWVtOwogICAgICB9CiAgICAgIC5wYWdlLXN1ZmZpeCB7CiAgICAgICAgd2hpdGUtc3BhY2U6IG5vd3JhcDsKICAgICAgfQogICAgPC9zdHlsZT4KICBgLHQoW28oe3R5cGU6U3RyaW5nfSksZSgiZGVzaWduOnR5cGUiLFN0cmluZyldLHN6dC5wcm90b3R5cGUsImV4cGVyaW1lbnROYW1lIix2b2lkIDApLHQoW28oe3R5cGU6T2JqZWN0LG5vdGlmeTohMH0pLGUoImRlc2lnbjp0eXBlIixPYmplY3QpXSxzenQucHJvdG90eXBlLCJjb25maWd1cmF0aW9uIix2b2lkIDApLHQoW28oe3R5cGU6QXJyYXksbm90aWZ5OiEwfSksZSgiZGVzaWduOnR5cGUiLE9iamVjdCldLHN6dC5wcm90b3R5cGUsInNlc3Npb25Hcm91cHMiLHZvaWQgMCksdChbbyh7dHlwZTpCb29sZWFuLG5vdGlmeTohMH0pLGUoImRlc2lnbjp0eXBlIixCb29sZWFuKV0sc3p0LnByb3RvdHlwZSwiZGF0YUxvYWRlZFdpdGhOb25FbXB0eUhwYXJhbXMiLHZvaWQgMCksdChbbyh7dHlwZTpCb29sZWFuLG5vdGlmeTohMH0pLGUoImRlc2lnbjp0eXBlIixCb29sZWFuKV0sc3p0LnByb3RvdHlwZSwiZGF0YUxvYWRlZFdpdGhFbXB0eUhwYXJhbXMiLHZvaWQgMCksdChbbyh7dHlwZTpPYmplY3R9KSxlKCJkZXNpZ246dHlwZSIsT2JqZWN0KV0sc3p0LnByb3RvdHlwZSwiX2V4cGVyaW1lbnQiLHZvaWQgMCksdChbbyh7dHlwZTpBcnJheX0pLGUoImRlc2lnbjp0eXBlIixBcnJheSldLHN6dC5wcm90b3R5cGUsIl9ocGFyYW1zIix2b2lkIDApLHQoW28oe3R5cGU6QXJyYXl9KSxlKCJkZXNpZ246dHlwZSIsQXJyYXkpXSxzenQucHJvdG90eXBlLCJfbWV0cmljcyIsdm9pZCAwKSx0KFtvKHt0eXBlOkFycmF5fSksZSgiZGVzaWduOnR5cGUiLE9iamVjdCldLHN6dC5wcm90b3R5cGUsIl9zdGF0dXNlcyIsdm9pZCAwKSx0KFtvKHt0eXBlOk9iamVjdH0pLGUoImRlc2lnbjp0eXBlIixPYmplY3QpXSxzenQucHJvdG90eXBlLCJfZ2V0RXhwZXJpbWVudFJlc29sdmVkIix2b2lkIDApLHQoW28oe3R5cGU6T2JqZWN0fSksZSgiZGVzaWduOnR5cGUiLEZ1bmN0aW9uKV0sc3p0LnByb3RvdHlwZSwiX3Jlc29sdmVHZXRFeHBlcmltZW50Iix2b2lkIDApLHQoW28oe3R5cGU6T2JqZWN0fSksZSgiZGVzaWduOnR5cGUiLE9iamVjdCldLHN6dC5wcm90b3R5cGUsIl9saXN0U2Vzc2lvbkdyb3Vwc0NhbmNlbGxlciIsdm9pZCAwKSx0KFtvKHt0eXBlOk51bWJlcn0pLGUoImRlc2lnbjp0eXBlIixOdW1iZXIpXSxzenQucHJvdG90eXBlLCJfc29ydEJ5SW5kZXgiLHZvaWQgMCksdChbbyh7dHlwZTpOdW1iZXJ9KSxlKCJkZXNpZ246dHlwZSIsTnVtYmVyKV0sc3p0LnByb3RvdHlwZSwiX3NvcnREaXJlY3Rpb24iLHZvaWQgMCksdChbbyh7dHlwZTpPYmplY3R9KSxlKCJkZXNpZ246dHlwZSIsT2JqZWN0KV0sc3p0LnByb3RvdHlwZSwiX3BhZ2VTaXplSW5wdXQiLHZvaWQgMCksdChbbyh7dHlwZTpPYmplY3R9KSxlKCJkZXNpZ246dHlwZSIsT2JqZWN0KV0sc3p0LnByb3RvdHlwZSwiX3BhZ2VOdW1iZXJJbnB1dCIsdm9pZCAwKSx0KFtvKHt0eXBlOlN0cmluZ30pLGUoImRlc2lnbjp0eXBlIixTdHJpbmcpXSxzenQucHJvdG90eXBlLCJfcGFnZUNvdW50U3RyIix2b2lkIDApLHQoW28oe3R5cGU6U3RyaW5nfSksZSgiZGVzaWduOnR5cGUiLFN0cmluZyldLHN6dC5wcm90b3R5cGUsIl90b3RhbFNlc3Npb25Hcm91cHNDb3VudFN0ciIsdm9pZCAwKSx0KFtvKHt0eXBlOk9iamVjdH0pLGUoImRlc2lnbjp0eXBlIixPYmplY3QpXSxzenQucHJvdG90eXBlLCJfc2Vzc2lvbkdyb3Vwc1JlcXVlc3QiLHZvaWQgMCksdChbYSgiYmFja2VuZCIsImV4cGVyaW1lbnROYW1lIiksZSgiZGVzaWduOnR5cGUiLEZ1bmN0aW9uKSxlKCJkZXNpZ246cGFyYW10eXBlcyIsW10pLGUoImRlc2lnbjpyZXR1cm50eXBlIix2b2lkIDApXSxzenQucHJvdG90eXBlLCJfY29tcHV0ZUV4cGVyaW1lbnRBbmRSZWxhdGVkUHJvcHMiLG51bGwpLHQoW2EoIl9ocGFyYW1zLioiLCJfbWV0cmljcy4qIiksZSgiZGVzaWduOnR5cGUiLEZ1bmN0aW9uKSxlKCJkZXNpZ246cGFyYW10eXBlcyIsW10pLGUoImRlc2lnbjpyZXR1cm50eXBlIix2b2lkIDApXSxzenQucHJvdG90eXBlLCJfdXBkYXRlQ29uZmlndXJhdGlvbiIsbnVsbCksc3p0PXQoW2koInRmLWhwYXJhbXMtcXVlcnktcGFuZSIpXSxzenQpO2xldCBsenQ9Y2xhc3MgZXh0ZW5kcyB5ZXtjb25zdHJ1Y3Rvcigpe3N1cGVyKC4uLmFyZ3VtZW50cyksdGhpcy5vcHRpb25zPW51bGx9X2NvbmZpZ3VyYXRpb25DaGFuZ2VkKCl7Y29uc3QgdD10aGlzLmNvbmZpZ3VyYXRpb24udmlzaWJsZVNjaGVtYSxlPXRoaXMuY29uZmlndXJhdGlvbi5zY2hlbWEsbj17Y29sdW1uczp0LmhwYXJhbUluZm9zLm1hcCgoKG4saSk9Pih7bmFtZTpTUnQobiksaW5kZXg6aSxhYnNvbHV0ZUluZGV4OlJSdChlLHQsaSksc2NhbGU6dGhpcy5faXNOdW1lcmljQ29sdW1uKGkpPyJMSU5FQVIiOiJOT05fTlVNRVJJQyJ9KSkpLmNvbmNhdCh0Lm1ldHJpY0luZm9zLm1hcCgoKG4saSk9Pntjb25zdCByPWkrdC5ocGFyYW1JbmZvcy5sZW5ndGg7cmV0dXJue3NjYWxlOiJMSU5FQVIiLG5hbWU6TVJ0KG4pLGluZGV4OnIsYWJzb2x1dGVJbmRleDpSUnQoZSx0LHIpfX0pKSksbWluQ29sb3I6IiMwMDAwRkYiLG1heENvbG9yOiIjRkYwMDAwIixjb25maWd1cmF0aW9uOnRoaXMuY29uZmlndXJhdGlvbn07dGhpcy5zZXQoIm9wdGlvbnMiLG4pLHppKCksdGhpcy5zZXQoIm9wdGlvbnMuY29sb3JCeUNvbHVtbkluZGV4Iix0aGlzLl9kZWZhdWx0Q29sb3JCeUNvbHVtbkluZGV4KCkpfV91bnNlbGVjdERpc2FibGVkTG9nU2NhbGVzKCl7bnVsbCE9PXRoaXMub3B0aW9ucyYmdGhpcy5vcHRpb25zLmNvbHVtbnMuZm9yRWFjaCgodD0+e2NvbnN0IGU9Im9wdGlvbnMuY29sdW1ucy4iK3QuaW5kZXg7dGhpcy5fYWxsb3dMb2dTY2FsZSh0KXx8IkxPRyIhPT10LnNjYWxlfHx0aGlzLnNldChlKyIuc2NhbGUiLCJMSU5FQVIiKX0pKX1fYWxsb3dMb2dTY2FsZSh0KXtpZighdGhpcy5faXNOdW1lcmljQ29sdW1uKHQuaW5kZXgpfHwhdGhpcy5zZXNzaW9uR3JvdXBzKXJldHVybiExO2NvbnN0W2Usbl09QlJ0KHRoaXMuY29uZmlndXJhdGlvbi52aXNpYmxlU2NoZW1hLHRoaXMuc2Vzc2lvbkdyb3Vwcyx0LmluZGV4KTtyZXR1cm4gZT4wfHxuPDB9X2lzTnVtZXJpY0NvbHVtbih0KXtyZXR1cm4gdD49dGhpcy5jb25maWd1cmF0aW9uLnZpc2libGVTY2hlbWEuaHBhcmFtSW5mb3MubGVuZ3RofHwiREFUQV9UWVBFX0ZMT0FUNjQiPT09dGhpcy5jb25maWd1cmF0aW9uLnZpc2libGVTY2hlbWEuaHBhcmFtSW5mb3NbdF0udHlwZX1fZGVmYXVsdENvbG9yQnlDb2x1bW5JbmRleCgpe2lmKHRoaXMuY29uZmlndXJhdGlvbi52aXNpYmxlU2NoZW1hLm1ldHJpY0luZm9zLmxlbmd0aD4wKXJldHVybiB0aGlzLmNvbmZpZ3VyYXRpb24udmlzaWJsZVNjaGVtYS5ocGFyYW1JbmZvcy5sZW5ndGg7Y29uc3QgdD10aGlzLmNvbmZpZ3VyYXRpb24udmlzaWJsZVNjaGVtYS5ocGFyYW1JbmZvcy5maW5kSW5kZXgoKHQ9PiJEQVRBX1RZUEVfRkxPQVQ2NCI9PT10LnR5cGUpKTtyZXR1cm4tMSE9PXQ/dDp2b2lkIDB9fTtsenQudGVtcGxhdGU9X2VgCiAgICA8ZGl2IGNsYXNzPSJjb250cm9sLXBhbmVsIj4KICAgICAgPCEtLSAnQ29sb3IgYnknIGRyb3AgZG93biBtZW51IC0tPgogICAgICA8cGFwZXItZHJvcGRvd24tbWVudQogICAgICAgIGxhYmVsPSJDb2xvciBieSIKICAgICAgICBpZD0iY29sb3JCeURyb3BEb3duTWVudSIKICAgICAgICBob3Jpem9udGFsLWFsaWduPSJsZWZ0IgogICAgICA+CiAgICAgICAgPHBhcGVyLWxpc3Rib3gKICAgICAgICAgIGNsYXNzPSJkcm9wZG93bi1jb250ZW50IgogICAgICAgICAgc2xvdD0iZHJvcGRvd24tY29udGVudCIKICAgICAgICAgIHNlbGVjdGVkPSJ7e29wdGlvbnMuY29sb3JCeUNvbHVtbkluZGV4fX0iCiAgICAgICAgICBpZD0iY29sb3JCeUxpc3RCb3giCiAgICAgICAgPgogICAgICAgICAgPHRlbXBsYXRlCiAgICAgICAgICAgIGlzPSJkb20tcmVwZWF0IgogICAgICAgICAgICBpdGVtcz0iW1tvcHRpb25zLmNvbHVtbnNdXSIKICAgICAgICAgICAgYXM9ImNvbHVtbiIKICAgICAgICAgICAgaWQ9ImNvbG9yQnlDb2x1bW5UZW1wbGF0ZSIKICAgICAgICAgID4KICAgICAgICAgICAgPHBhcGVyLWl0ZW0gZGlzYWJsZWQ9IltbIV9pc051bWVyaWNDb2x1bW4oY29sdW1uLmluZGV4KV1dIj4KICAgICAgICAgICAgICBbW2NvbHVtbi5uYW1lXV0KICAgICAgICAgICAgPC9wYXBlci1pdGVtPgogICAgICAgICAgPC90ZW1wbGF0ZT4KICAgICAgICA8L3BhcGVyLWxpc3Rib3g+CiAgICAgIDwvcGFwZXItZHJvcGRvd24tbWVudT4KCiAgICAgIDwhLS0gQ29sdW1ucyBzY2FsZXMgLS0+CiAgICAgIDxkaXYgY2xhc3M9ImNvbHVtbnMtY29udGFpbmVyIj4KICAgICAgICA8IS0tIFNjYWxlIG9wdGlvbnMgZm9yIGVhY2ggbnVtZXJpYyBmZWF0dXJlIC0tPgogICAgICAgIDx0ZW1wbGF0ZSBpcz0iZG9tLXJlcGVhdCIgaXRlbXM9Int7b3B0aW9ucy5jb2x1bW5zfX0iIGFzPSJjb2x1bW4iPgogICAgICAgICAgPHRlbXBsYXRlIGlzPSJkb20taWYiIGlmPSJbW19pc051bWVyaWNDb2x1bW4oY29sdW1uLmluZGV4KV1dIj4KICAgICAgICAgICAgPGRpdiBjbGFzcz0iY29sdW1uIj4KICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJjb2x1bW4tdGl0bGUiPltbY29sdW1uLm5hbWVdXTwvZGl2PgogICAgICAgICAgICAgIDxkaXY+CiAgICAgICAgICAgICAgICA8cGFwZXItcmFkaW8tZ3JvdXAKICAgICAgICAgICAgICAgICAgY2xhc3M9InNjYWxlLXJhZGlvLWdyb3VwIgogICAgICAgICAgICAgICAgICBzZWxlY3RlZD0ie3tjb2x1bW4uc2NhbGV9fSIKICAgICAgICAgICAgICAgID4KICAgICAgICAgICAgICAgICAgPHBhcGVyLXJhZGlvLWJ1dHRvbiBuYW1lPSJMSU5FQVIiPgogICAgICAgICAgICAgICAgICAgIExpbmVhcgogICAgICAgICAgICAgICAgICA8L3BhcGVyLXJhZGlvLWJ1dHRvbj4KICAgICAgICAgICAgICAgICAgPCEtLSBUaGUgaWQgaGVyZSBpcyB1c2VkIHRvIGFjY2VzcyB0aGlzIGJ1dHRvbiBpbiB1bml0CiAgICAgICAgICAgICAgICAgICAgICAgdGVzdHMuLS0+CiAgICAgICAgICAgICAgICAgIDxwYXBlci1yYWRpby1idXR0b24KICAgICAgICAgICAgICAgICAgICBpZD0ibG9nU2NhbGVCdXR0b25fW1tjb2x1bW4ubmFtZV1dIgogICAgICAgICAgICAgICAgICAgIG5hbWU9IkxPRyIKICAgICAgICAgICAgICAgICAgICBkaXNhYmxlZD0iW1shX2FsbG93TG9nU2NhbGUoY29sdW1uLCBzZXNzaW9uR3JvdXBzLiopXV0iCiAgICAgICAgICAgICAgICAgID4KICAgICAgICAgICAgICAgICAgICBMb2dhcml0aG1pYwogICAgICAgICAgICAgICAgICA8L3BhcGVyLXJhZGlvLWJ1dHRvbj4KICAgICAgICAgICAgICAgICAgPHBhcGVyLXJhZGlvLWJ1dHRvbiBuYW1lPSJRVUFOVElMRSI+CiAgICAgICAgICAgICAgICAgICAgUXVhbnRpbGUKICAgICAgICAgICAgICAgICAgPC9wYXBlci1yYWRpby1idXR0b24+CiAgICAgICAgICAgICAgICA8L3BhcGVyLXJhZGlvLWdyb3VwPgogICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgIDwvdGVtcGxhdGU+CiAgICAgICAgPC90ZW1wbGF0ZT4KICAgICAgPC9kaXY+CiAgICA8L2Rpdj4KCiAgICA8c3R5bGU+CiAgICAgIDpob3N0IHsKICAgICAgICBkaXNwbGF5OiBibG9jazsKICAgICAgfQogICAgICAuY29udHJvbC1wYW5lbCB7CiAgICAgICAgb3ZlcmZsb3c6IGF1dG87CiAgICAgIH0KICAgICAgLmNvbHVtbiB7CiAgICAgICAgZmxleC1ncm93OiAxOwogICAgICAgIGZsZXgtc2hyaW5rOiAxOwogICAgICAgIG1hcmdpbi1yaWdodDogNXB4OwogICAgICAgIGJvcmRlcjogc29saWQgMXB4IGRhcmtncmF5OwogICAgICAgIHBhZGRpbmc6IDNweDsKICAgICAgfQogICAgICAuY29sdW1uLXRpdGxlIHsKICAgICAgICAvKiBGaXQgZXZlcnkgdGl0bGUgaW4gb25lIGxpbmUgc28gdGhlIHJhZGlvIGJveGVzIGFsaWduIHZlcnRpY2FsbHkuICovCiAgICAgICAgd2hpdGUtc3BhY2U6IG5vd3JhcDsKICAgICAgICB0ZXh0LWRlY29yYXRpb246IHVuZGVybGluZTsKICAgICAgfQogICAgICAuY29sdW1ucy1jb250YWluZXIgewogICAgICAgIGRpc3BsYXk6IGZsZXg7CiAgICAgICAgZmxleC1kaXJlY3Rpb246IHJvdzsKICAgICAgfQogICAgICAuc2NhbGUtcmFkaW8tZ3JvdXAgcGFwZXItcmFkaW8tYnV0dG9uIHsKICAgICAgICBwYWRkaW5nOiAycHg7CiAgICAgICAgZGlzcGxheTogYmxvY2s7CiAgICAgIH0KICAgICAgcGFwZXItbGlzdGJveCB7CiAgICAgICAgbWF4LWhlaWdodDogMTVlbTsKICAgICAgfQogICAgPC9zdHlsZT4KICBgLHQoW28oe3R5cGU6T2JqZWN0fSksZSgiZGVzaWduOnR5cGUiLE9iamVjdCldLGx6dC5wcm90b3R5cGUsImNvbmZpZ3VyYXRpb24iLHZvaWQgMCksdChbbyh7dHlwZTpBcnJheX0pLGUoImRlc2lnbjp0eXBlIixBcnJheSldLGx6dC5wcm90b3R5cGUsInNlc3Npb25Hcm91cHMiLHZvaWQgMCksdChbbyh7dHlwZTpPYmplY3Qsbm90aWZ5OiEwfSksZSgiZGVzaWduOnR5cGUiLE9iamVjdCldLGx6dC5wcm90b3R5cGUsIm9wdGlvbnMiLHZvaWQgMCksdChbYSgiY29uZmlndXJhdGlvbi4qIiksZSgiZGVzaWduOnR5cGUiLEZ1bmN0aW9uKSxlKCJkZXNpZ246cGFyYW10eXBlcyIsW10pLGUoImRlc2lnbjpyZXR1cm50eXBlIix2b2lkIDApXSxsenQucHJvdG90eXBlLCJfY29uZmlndXJhdGlvbkNoYW5nZWQiLG51bGwpLHQoW2EoInNlc3Npb25Hcm91cHMuKiIpLGUoImRlc2lnbjp0eXBlIixGdW5jdGlvbiksZSgiZGVzaWduOnBhcmFtdHlwZXMiLFtdKSxlKCJkZXNpZ246cmV0dXJudHlwZSIsdm9pZCAwKV0sbHp0LnByb3RvdHlwZSwiX3Vuc2VsZWN0RGlzYWJsZWRMb2dTY2FsZXMiLG51bGwpLGx6dD10KFtpKCJ0Zi1ocGFyYW1zLXNjYWxlLWFuZC1jb2xvci1jb250cm9scyIpXSxsenQpO2NsYXNzIGN6dCBleHRlbmRzIEhUTUxFbGVtZW50e3N0YXRpYyBnZXQgdmVyc2lvbigpe3JldHVybiIxLjYuMSJ9fWN1c3RvbUVsZW1lbnRzLmRlZmluZSgidmFhZGluLWx1bW8tc3R5bGVzIixjenQpO2NvbnN0IHV6dD1kb2N1bWVudC5jcmVhdGVFbGVtZW50KCJ0ZW1wbGF0ZSIpO3V6dC5pbm5lckhUTUw9JzxjdXN0b20tc3R5bGU+XG4gIDxzdHlsZT5cbiAgICBodG1sIHtcbiAgICAgIC8qIEJhc2UgKGJhY2tncm91bmQpICovXG4gICAgICAtLWx1bW8tYmFzZS1jb2xvcjogI0ZGRjtcblxuICAgICAgLyogVGludCAqL1xuICAgICAgLS1sdW1vLXRpbnQtNXBjdDogaHNsYSgwLCAwJSwgMTAwJSwgMC4zKTtcbiAgICAgIC0tbHVtby10aW50LTEwcGN0OiBoc2xhKDAsIDAlLCAxMDAlLCAwLjM3KTtcbiAgICAgIC0tbHVtby10aW50LTIwcGN0OiBoc2xhKDAsIDAlLCAxMDAlLCAwLjQ0KTtcbiAgICAgIC0tbHVtby10aW50LTMwcGN0OiBoc2xhKDAsIDAlLCAxMDAlLCAwLjUpO1xuICAgICAgLS1sdW1vLXRpbnQtNDBwY3Q6IGhzbGEoMCwgMCUsIDEwMCUsIDAuNTcpO1xuICAgICAgLS1sdW1vLXRpbnQtNTBwY3Q6IGhzbGEoMCwgMCUsIDEwMCUsIDAuNjQpO1xuICAgICAgLS1sdW1vLXRpbnQtNjBwY3Q6IGhzbGEoMCwgMCUsIDEwMCUsIDAuNyk7XG4gICAgICAtLWx1bW8tdGludC03MHBjdDogaHNsYSgwLCAwJSwgMTAwJSwgMC43Nyk7XG4gICAgICAtLWx1bW8tdGludC04MHBjdDogaHNsYSgwLCAwJSwgMTAwJSwgMC44NCk7XG4gICAgICAtLWx1bW8tdGludC05MHBjdDogaHNsYSgwLCAwJSwgMTAwJSwgMC45KTtcbiAgICAgIC0tbHVtby10aW50OiAjRkZGO1xuXG4gICAgICAvKiBTaGFkZSAqL1xuICAgICAgLS1sdW1vLXNoYWRlLTVwY3Q6IGhzbGEoMjE0LCA2MSUsIDI1JSwgMC4wNSk7XG4gICAgICAtLWx1bW8tc2hhZGUtMTBwY3Q6IGhzbGEoMjE0LCA1NyUsIDI0JSwgMC4xKTtcbiAgICAgIC0tbHVtby1zaGFkZS0yMHBjdDogaHNsYSgyMTQsIDUzJSwgMjMlLCAwLjE2KTtcbiAgICAgIC0tbHVtby1zaGFkZS0zMHBjdDogaHNsYSgyMTQsIDUwJSwgMjIlLCAwLjI2KTtcbiAgICAgIC0tbHVtby1zaGFkZS00MHBjdDogaHNsYSgyMTQsIDQ3JSwgMjElLCAwLjM4KTtcbiAgICAgIC0tbHVtby1zaGFkZS01MHBjdDogaHNsYSgyMTQsIDQ1JSwgMjAlLCAwLjUpO1xuICAgICAgLS1sdW1vLXNoYWRlLTYwcGN0OiBoc2xhKDIxNCwgNDMlLCAxOSUsIDAuNjEpO1xuICAgICAgLS1sdW1vLXNoYWRlLTcwcGN0OiBoc2xhKDIxNCwgNDIlLCAxOCUsIDAuNzIpO1xuICAgICAgLS1sdW1vLXNoYWRlLTgwcGN0OiBoc2xhKDIxNCwgNDElLCAxNyUsIDAuODMpO1xuICAgICAgLS1sdW1vLXNoYWRlLTkwcGN0OiBoc2xhKDIxNCwgNDAlLCAxNiUsIDAuOTQpO1xuICAgICAgLS1sdW1vLXNoYWRlOiBoc2woMjE0LCAzNSUsIDE1JSk7XG5cbiAgICAgIC8qIENvbnRyYXN0ICovXG4gICAgICAtLWx1bW8tY29udHJhc3QtNXBjdDogdmFyKC0tbHVtby1zaGFkZS01cGN0KTtcbiAgICAgIC0tbHVtby1jb250cmFzdC0xMHBjdDogdmFyKC0tbHVtby1zaGFkZS0xMHBjdCk7XG4gICAgICAtLWx1bW8tY29udHJhc3QtMjBwY3Q6IHZhcigtLWx1bW8tc2hhZGUtMjBwY3QpO1xuICAgICAgLS1sdW1vLWNvbnRyYXN0LTMwcGN0OiB2YXIoLS1sdW1vLXNoYWRlLTMwcGN0KTtcbiAgICAgIC0tbHVtby1jb250cmFzdC00MHBjdDogdmFyKC0tbHVtby1zaGFkZS00MHBjdCk7XG4gICAgICAtLWx1bW8tY29udHJhc3QtNTBwY3Q6IHZhcigtLWx1bW8tc2hhZGUtNTBwY3QpO1xuICAgICAgLS1sdW1vLWNvbnRyYXN0LTYwcGN0OiB2YXIoLS1sdW1vLXNoYWRlLTYwcGN0KTtcbiAgICAgIC0tbHVtby1jb250cmFzdC03MHBjdDogdmFyKC0tbHVtby1zaGFkZS03MHBjdCk7XG4gICAgICAtLWx1bW8tY29udHJhc3QtODBwY3Q6IHZhcigtLWx1bW8tc2hhZGUtODBwY3QpO1xuICAgICAgLS1sdW1vLWNvbnRyYXN0LTkwcGN0OiB2YXIoLS1sdW1vLXNoYWRlLTkwcGN0KTtcbiAgICAgIC0tbHVtby1jb250cmFzdDogdmFyKC0tbHVtby1zaGFkZSk7XG5cbiAgICAgIC8qIFRleHQgKi9cbiAgICAgIC0tbHVtby1oZWFkZXItdGV4dC1jb2xvcjogdmFyKC0tbHVtby1jb250cmFzdCk7XG4gICAgICAtLWx1bW8tYm9keS10ZXh0LWNvbG9yOiB2YXIoLS1sdW1vLWNvbnRyYXN0LTkwcGN0KTtcbiAgICAgIC0tbHVtby1zZWNvbmRhcnktdGV4dC1jb2xvcjogdmFyKC0tbHVtby1jb250cmFzdC03MHBjdCk7XG4gICAgICAtLWx1bW8tdGVydGlhcnktdGV4dC1jb2xvcjogdmFyKC0tbHVtby1jb250cmFzdC01MHBjdCk7XG4gICAgICAtLWx1bW8tZGlzYWJsZWQtdGV4dC1jb2xvcjogdmFyKC0tbHVtby1jb250cmFzdC0zMHBjdCk7XG5cbiAgICAgIC8qIFByaW1hcnkgKi9cbiAgICAgIC0tbHVtby1wcmltYXJ5LWNvbG9yOiBoc2woMjE0LCA5MCUsIDUyJSk7XG4gICAgICAtLWx1bW8tcHJpbWFyeS1jb2xvci01MHBjdDogaHNsYSgyMTQsIDkwJSwgNTIlLCAwLjUpO1xuICAgICAgLS1sdW1vLXByaW1hcnktY29sb3ItMTBwY3Q6IGhzbGEoMjE0LCA5MCUsIDUyJSwgMC4xKTtcbiAgICAgIC0tbHVtby1wcmltYXJ5LXRleHQtY29sb3I6IHZhcigtLWx1bW8tcHJpbWFyeS1jb2xvcik7XG4gICAgICAtLWx1bW8tcHJpbWFyeS1jb250cmFzdC1jb2xvcjogI0ZGRjtcblxuICAgICAgLyogRXJyb3IgKi9cbiAgICAgIC0tbHVtby1lcnJvci1jb2xvcjogaHNsKDMsIDEwMCUsIDYxJSk7XG4gICAgICAtLWx1bW8tZXJyb3ItY29sb3ItNTBwY3Q6IGhzbGEoMywgMTAwJSwgNjAlLCAwLjUpO1xuICAgICAgLS1sdW1vLWVycm9yLWNvbG9yLTEwcGN0OiBoc2xhKDMsIDEwMCUsIDYwJSwgMC4xKTtcbiAgICAgIC0tbHVtby1lcnJvci10ZXh0LWNvbG9yOiBoc2woMywgOTIlLCA1MyUpO1xuICAgICAgLS1sdW1vLWVycm9yLWNvbnRyYXN0LWNvbG9yOiAjRkZGO1xuXG4gICAgICAvKiBTdWNjZXNzICovXG4gICAgICAtLWx1bW8tc3VjY2Vzcy1jb2xvcjogaHNsKDE0NSwgODAlLCA0MiUpOyAvKiBoc2woMTQ0LDgyJSwzNyUpOyAqL1xuICAgICAgLS1sdW1vLXN1Y2Nlc3MtY29sb3ItNTBwY3Q6IGhzbGEoMTQ1LCA3NiUsIDQ0JSwgMC41NSk7XG4gICAgICAtLWx1bW8tc3VjY2Vzcy1jb2xvci0xMHBjdDogaHNsYSgxNDUsIDc2JSwgNDQlLCAwLjEyKTtcbiAgICAgIC0tbHVtby1zdWNjZXNzLXRleHQtY29sb3I6IGhzbCgxNDUsIDEwMCUsIDMyJSk7XG4gICAgICAtLWx1bW8tc3VjY2Vzcy1jb250cmFzdC1jb2xvcjogI0ZGRjtcbiAgICB9XG4gIDwvc3R5bGU+XG48L2N1c3RvbS1zdHlsZT48ZG9tLW1vZHVsZSBpZD0ibHVtby1jb2xvciI+XG4gIDx0ZW1wbGF0ZT5cbiAgICA8c3R5bGU+XG4gICAgICBbdGhlbWV+PSJkYXJrIl0ge1xuICAgICAgICAvKiBCYXNlIChiYWNrZ3JvdW5kKSAqL1xuICAgICAgICAtLWx1bW8tYmFzZS1jb2xvcjogaHNsKDIxNCwgMzUlLCAyMSUpO1xuXG4gICAgICAgIC8qIFRpbnQgKi9cbiAgICAgICAgLS1sdW1vLXRpbnQtNXBjdDogaHNsYSgyMTQsIDY1JSwgODUlLCAwLjA2KTtcbiAgICAgICAgLS1sdW1vLXRpbnQtMTBwY3Q6IGhzbGEoMjE0LCA2MCUsIDgwJSwgMC4xNCk7XG4gICAgICAgIC0tbHVtby10aW50LTIwcGN0OiBoc2xhKDIxNCwgNjQlLCA4MiUsIDAuMjMpO1xuICAgICAgICAtLWx1bW8tdGludC0zMHBjdDogaHNsYSgyMTQsIDY5JSwgODQlLCAwLjMyKTtcbiAgICAgICAgLS1sdW1vLXRpbnQtNDBwY3Q6IGhzbGEoMjE0LCA3MyUsIDg2JSwgMC40MSk7XG4gICAgICAgIC0tbHVtby10aW50LTUwcGN0OiBoc2xhKDIxNCwgNzglLCA4OCUsIDAuNSk7XG4gICAgICAgIC0tbHVtby10aW50LTYwcGN0OiBoc2xhKDIxNCwgODIlLCA5MCUsIDAuNik7XG4gICAgICAgIC0tbHVtby10aW50LTcwcGN0OiBoc2xhKDIxNCwgODclLCA5MiUsIDAuNyk7XG4gICAgICAgIC0tbHVtby10aW50LTgwcGN0OiBoc2xhKDIxNCwgOTElLCA5NCUsIDAuOCk7XG4gICAgICAgIC0tbHVtby10aW50LTkwcGN0OiBoc2xhKDIxNCwgOTYlLCA5NiUsIDAuOSk7XG4gICAgICAgIC0tbHVtby10aW50OiBoc2woMjE0LCAxMDAlLCA5OCUpO1xuXG4gICAgICAgIC8qIFNoYWRlICovXG4gICAgICAgIC0tbHVtby1zaGFkZS01cGN0OiBoc2xhKDIxNCwgMCUsIDAlLCAwLjA3KTtcbiAgICAgICAgLS1sdW1vLXNoYWRlLTEwcGN0OiBoc2xhKDIxNCwgNCUsIDIlLCAwLjE1KTtcbiAgICAgICAgLS1sdW1vLXNoYWRlLTIwcGN0OiBoc2xhKDIxNCwgOCUsIDQlLCAwLjIzKTtcbiAgICAgICAgLS1sdW1vLXNoYWRlLTMwcGN0OiBoc2xhKDIxNCwgMTIlLCA2JSwgMC4zMik7XG4gICAgICAgIC0tbHVtby1zaGFkZS00MHBjdDogaHNsYSgyMTQsIDE2JSwgOCUsIDAuNDEpO1xuICAgICAgICAtLWx1bW8tc2hhZGUtNTBwY3Q6IGhzbGEoMjE0LCAyMCUsIDEwJSwgMC41KTtcbiAgICAgICAgLS1sdW1vLXNoYWRlLTYwcGN0OiBoc2xhKDIxNCwgMjQlLCAxMiUsIDAuNik7XG4gICAgICAgIC0tbHVtby1zaGFkZS03MHBjdDogaHNsYSgyMTQsIDI4JSwgMTMlLCAwLjcpO1xuICAgICAgICAtLWx1bW8tc2hhZGUtODBwY3Q6IGhzbGEoMjE0LCAzMiUsIDEzJSwgMC44KTtcbiAgICAgICAgLS1sdW1vLXNoYWRlLTkwcGN0OiBoc2xhKDIxNCwgMzMlLCAxMyUsIDAuOSk7XG4gICAgICAgIC0tbHVtby1zaGFkZTogaHNsKDIxNCwgMzMlLCAxMyUpO1xuXG4gICAgICAgIC8qIENvbnRyYXN0ICovXG4gICAgICAgIC0tbHVtby1jb250cmFzdC01cGN0OiB2YXIoLS1sdW1vLXRpbnQtNXBjdCk7XG4gICAgICAgIC0tbHVtby1jb250cmFzdC0xMHBjdDogdmFyKC0tbHVtby10aW50LTEwcGN0KTtcbiAgICAgICAgLS1sdW1vLWNvbnRyYXN0LTIwcGN0OiB2YXIoLS1sdW1vLXRpbnQtMjBwY3QpO1xuICAgICAgICAtLWx1bW8tY29udHJhc3QtMzBwY3Q6IHZhcigtLWx1bW8tdGludC0zMHBjdCk7XG4gICAgICAgIC0tbHVtby1jb250cmFzdC00MHBjdDogdmFyKC0tbHVtby10aW50LTQwcGN0KTtcbiAgICAgICAgLS1sdW1vLWNvbnRyYXN0LTUwcGN0OiB2YXIoLS1sdW1vLXRpbnQtNTBwY3QpO1xuICAgICAgICAtLWx1bW8tY29udHJhc3QtNjBwY3Q6IHZhcigtLWx1bW8tdGludC02MHBjdCk7XG4gICAgICAgIC0tbHVtby1jb250cmFzdC03MHBjdDogdmFyKC0tbHVtby10aW50LTcwcGN0KTtcbiAgICAgICAgLS1sdW1vLWNvbnRyYXN0LTgwcGN0OiB2YXIoLS1sdW1vLXRpbnQtODBwY3QpO1xuICAgICAgICAtLWx1bW8tY29udHJhc3QtOTBwY3Q6IHZhcigtLWx1bW8tdGludC05MHBjdCk7XG4gICAgICAgIC0tbHVtby1jb250cmFzdDogdmFyKC0tbHVtby10aW50KTtcblxuICAgICAgICAvKiBUZXh0ICovXG4gICAgICAgIC0tbHVtby1oZWFkZXItdGV4dC1jb2xvcjogdmFyKC0tbHVtby1jb250cmFzdCk7XG4gICAgICAgIC0tbHVtby1ib2R5LXRleHQtY29sb3I6IHZhcigtLWx1bW8tY29udHJhc3QtOTBwY3QpO1xuICAgICAgICAtLWx1bW8tc2Vjb25kYXJ5LXRleHQtY29sb3I6IHZhcigtLWx1bW8tY29udHJhc3QtNzBwY3QpO1xuICAgICAgICAtLWx1bW8tdGVydGlhcnktdGV4dC1jb2xvcjogdmFyKC0tbHVtby1jb250cmFzdC01MHBjdCk7XG4gICAgICAgIC0tbHVtby1kaXNhYmxlZC10ZXh0LWNvbG9yOiB2YXIoLS1sdW1vLWNvbnRyYXN0LTMwcGN0KTtcblxuICAgICAgICAvKiBQcmltYXJ5ICovXG4gICAgICAgIC0tbHVtby1wcmltYXJ5LWNvbG9yOiBoc2woMjE0LCA4NiUsIDU1JSk7XG4gICAgICAgIC0tbHVtby1wcmltYXJ5LWNvbG9yLTUwcGN0OiBoc2xhKDIxNCwgODYlLCA1NSUsIDAuNSk7XG4gICAgICAgIC0tbHVtby1wcmltYXJ5LWNvbG9yLTEwcGN0OiBoc2xhKDIxNCwgOTAlLCA2MyUsIDAuMSk7XG4gICAgICAgIC0tbHVtby1wcmltYXJ5LXRleHQtY29sb3I6IGhzbCgyMTQsIDEwMCUsIDcwJSk7XG4gICAgICAgIC0tbHVtby1wcmltYXJ5LWNvbnRyYXN0LWNvbG9yOiAjRkZGO1xuXG4gICAgICAgIC8qIEVycm9yICovXG4gICAgICAgIC0tbHVtby1lcnJvci1jb2xvcjogaHNsKDMsIDkwJSwgNjMlKTtcbiAgICAgICAgLS1sdW1vLWVycm9yLWNvbG9yLTUwcGN0OiBoc2xhKDMsIDkwJSwgNjMlLCAwLjUpO1xuICAgICAgICAtLWx1bW8tZXJyb3ItY29sb3ItMTBwY3Q6IGhzbGEoMywgOTAlLCA2MyUsIDAuMSk7XG4gICAgICAgIC0tbHVtby1lcnJvci10ZXh0LWNvbG9yOiBoc2woMywgMTAwJSwgNjclKTtcblxuICAgICAgICAvKiBTdWNjZXNzICovXG4gICAgICAgIC0tbHVtby1zdWNjZXNzLWNvbG9yOiBoc2woMTQ1LCA2NSUsIDQyJSk7XG4gICAgICAgIC0tbHVtby1zdWNjZXNzLWNvbG9yLTUwcGN0OiBoc2xhKDE0NSwgNjUlLCA0MiUsIDAuNSk7XG4gICAgICAgIC0tbHVtby1zdWNjZXNzLWNvbG9yLTEwcGN0OiBoc2xhKDE0NSwgNjUlLCA0MiUsIDAuMSk7XG4gICAgICAgIC0tbHVtby1zdWNjZXNzLXRleHQtY29sb3I6IGhzbCgxNDUsIDg1JSwgNDclKTtcbiAgICAgIH1cblxuICAgICAgaHRtbCB7XG4gICAgICAgIGNvbG9yOiB2YXIoLS1sdW1vLWJvZHktdGV4dC1jb2xvcik7XG4gICAgICAgIGJhY2tncm91bmQtY29sb3I6IHZhcigtLWx1bW8tYmFzZS1jb2xvcik7XG4gICAgICB9XG5cbiAgICAgIFt0aGVtZX49ImRhcmsiXSB7XG4gICAgICAgIGNvbG9yOiB2YXIoLS1sdW1vLWJvZHktdGV4dC1jb2xvcik7XG4gICAgICAgIGJhY2tncm91bmQtY29sb3I6IHZhcigtLWx1bW8tYmFzZS1jb2xvcik7XG4gICAgICB9XG5cbiAgICAgIGgxLFxuICAgICAgaDIsXG4gICAgICBoMyxcbiAgICAgIGg0LFxuICAgICAgaDUsXG4gICAgICBoNiB7XG4gICAgICAgIGNvbG9yOiB2YXIoLS1sdW1vLWhlYWRlci10ZXh0LWNvbG9yKTtcbiAgICAgIH1cblxuICAgICAgYSB7XG4gICAgICAgIGNvbG9yOiB2YXIoLS1sdW1vLXByaW1hcnktdGV4dC1jb2xvcik7XG4gICAgICB9XG5cbiAgICAgIGJsb2NrcXVvdGUge1xuICAgICAgICBjb2xvcjogdmFyKC0tbHVtby1zZWNvbmRhcnktdGV4dC1jb2xvcik7XG4gICAgICB9XG5cbiAgICAgIGNvZGUsXG4gICAgICBwcmUge1xuICAgICAgICBiYWNrZ3JvdW5kLWNvbG9yOiB2YXIoLS1sdW1vLWNvbnRyYXN0LTEwcGN0KTtcbiAgICAgICAgYm9yZGVyLXJhZGl1czogdmFyKC0tbHVtby1ib3JkZXItcmFkaXVzLW0pO1xuICAgICAgfVxuICAgIDwvc3R5bGU+XG4gIDwvdGVtcGxhdGU+XG48L2RvbS1tb2R1bGU+PGRvbS1tb2R1bGUgaWQ9Imx1bW8tY29sb3ItbGVnYWN5Ij5cbiAgPHRlbXBsYXRlPlxuICAgIDxzdHlsZSBpbmNsdWRlPSJsdW1vLWNvbG9yIj5cbiAgICAgIDpob3N0IHtcbiAgICAgICAgY29sb3I6IHZhcigtLWx1bW8tYm9keS10ZXh0LWNvbG9yKSAhaW1wb3J0YW50O1xuICAgICAgICBiYWNrZ3JvdW5kLWNvbG9yOiB2YXIoLS1sdW1vLWJhc2UtY29sb3IpICFpbXBvcnRhbnQ7XG4gICAgICB9XG4gICAgPC9zdHlsZT5cbiAgPC90ZW1wbGF0ZT5cbjwvZG9tLW1vZHVsZT4nLGRvY3VtZW50LmhlYWQuYXBwZW5kQ2hpbGQodXp0LmNvbnRlbnQpO2NvbnN0IGh6dD1kb2N1bWVudC5jcmVhdGVFbGVtZW50KCJ0ZW1wbGF0ZSIpO2h6dC5pbm5lckhUTUw9JzxjdXN0b20tc3R5bGU+XG4gIDxzdHlsZT5cbiAgICBAZm9udC1mYWNlIHtcbiAgICAgIGZvbnQtZmFtaWx5OiBcJ2x1bW8taWNvbnNcJztcbiAgICAgIHNyYzogdXJsKGRhdGE6YXBwbGljYXRpb24vZm9udC13b2ZmO2NoYXJzZXQ9dXRmLTg7YmFzZTY0LGQwOUdSZ0FCQUFBQUFCRWNBQXNBQUFBQUlpd0FBUUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFCSFUxVkNBQUFCQ0FBQUFEc0FBQUJVSUlzbGVrOVRMeklBQUFGRUFBQUFRd0FBQUZaQUlVdUtZMjFoY0FBQUFZZ0FBQUQ0QUFBRHJzQ1U4ZDVuYkhsbUFBQUNnQUFBQzJNQUFCZDRoOVRvMldobFlXUUFBQTNrQUFBQU1BQUFBRFphLzZTc2FHaGxZUUFBRGhRQUFBQWRBQUFBSkFicEEzNW9iWFI0QUFBT05BQUFBQkFBQUFDc3BCQUFBR3h2WTJFQUFBNUVBQUFBV0FBQUFGaDU1SUFzYldGNGNBQUFEcHdBQUFBZkFBQUFJQUZLQVhCdVlXMWxBQUFPdkFBQUFURUFBQUl1VVVKWkNIQnZjM1FBQUEvd0FBQUJLd0FBQWVsbThTelZlSnhqWUdSZ1lPQmlNR0N3WTJCeWNmTUpZZURMU1N6Slk1QmlZR0dBQUpBOE1wc3hKek05a1lFRHhnUEtzWUJwRGlCbWc0Z0NBQ1k3QlVnQWVKeGpZR1MreURpQmdaV0JnYW1LYVE4REEwTVBoR1o4d0dESXlBUVVaV0JsWnNBS0F0SmNVeGdjWGpHKzBtSU8rcC9GRU1VY3hEQU5LTXdJa2dNQUJuOE1MUUI0bk8zU1dXNkRNQUJGMFV0d0NFbklQTS96aExLOExxaGZYUnliU1AxNFhVWXRIVjloR1lRd1FCTklvM2NVSVBraFFlTTdyaWIxZWtxblhnOTgxWHVDMXF2eTg0bHpvamxlaDNwdXhMMGhQakdqUlU0NzN0ZWxvRWVmQVVOR2pKa3daY2FjQlV0V3JObXdaY2VlQTBkT25MbHc1Y2FkQjA5ZWxQR2hHZitqME5USS82NUtmWGVyVDZKaHFLbnBSS3RnT3B1cWFUcnRLalBVbHFIbWh0bzIxSTdwTDZpNmhscVkzcTdxR1dyZlVBZUdPalRVa2FHT0RYVmlxRk5EblJucTNGQVhocm8wMUpXaHJnMTFZNmhiUTkwWjZ0NVFENFo2Tk5TVG9aNE45V0tvVjBPOUdlcmRVQitHK2pUVWw2R1dSdmtMMjRCa0VYaWN0Vmg5YkZ2VkZiL254dmJ6KzdSZi9ONnpIY2QyYkNmUCtXZ2MxWjlOMGpwTm5FTDZrYlJWUzZIQTJoUVlHaDlUR1IxQ2JDcWEyclhyV09rUUUvc0hOSmdtdFp2b1ZOWnFFMUIxRE5IeHpUUXhDZWhVVFlpSlRReUVOdWkwcVNMZXpyM1BkdXlRZmdtUldPZmRlOCs5NTUxejdybm4vTzRqTG9KL2JSUDBVYUtRTUxGSmpwQkF2cGhMWkMzRGswb2s3V0J6UjIvdXBKczdSeXcvbmZGYmxuL3V1Ti9hcEN2d3JLTHJTdlVxUnVmYm01cG4wZnMwdzRnWXhuR1ZQNnFIbk80YldpRFFHUWd3dFM2bG0zbEIzUW9YMU0ydndFbXV6aXJGMzl5K0VzMitESjhkMXBreXFCSXFvemUzRDErWno0RHJGb2F6eEk4ZFd3TXJEbFoyRE1xUUFSOUFST3NKVSsyY21sVFBhelRjbzUyRjF4VGEyYTIrSzh2dnE5MmRWSG10TG9QZVFYL0FaUFJZR3RoRFlPZVpqQmpLb0ZzVkd1bFIzbFdVOTVXZUNLNDRxSFU3TWhXVUdVS1pEVDNvS1VjRzJHV3VoK0VERGZVWUEvamhBaGwwVE9zSk5ZU0V1N21RbWkzVXpmWHdaS0E0QnNWc0hMWFFZR2dSVzk1dUV0cEoxVmZuOVhpTHJpUkJsRkVxeHNEakEwOXlDTlVvUXh4d2Q3S1dTVHQyeTNHVEtpZmxxSFJTb1daYzNtMTFXYS9mSmRGZ1hENHNTWWZsZUpCS2Q4R016N0o4ZFpuL2NHUkNjS0dEbkEyR2UzZkt6Y3ZsblRETnRoR1dMWHpYL1dhWHRVQW1SZ2VMbEhTcjMwcjBHOVVUWE1iMEF0bXd6T295NzNma1NsSFprZHV3L1RZdVU5Y0FENFl1dFBveFRUc0EzNzk3d1ZyNFovMU5DNXpBUkhyNHZ0eEpqeElmaVpNaE1rYldrKzE0Qm5KWkt3cUdad0Rmc3dMeXhXRFNnMTFyRkxKRjdOb3B4amQxaDEvUU9UK29lemdmdTNZcStIaytkdWY1eCs0MG8xR1RrYUlnaWtLL0lFbkM2YVl4Q1VCYVpKU040WFRZRmpVL1lNTklLcUp3aERHT0NDSThGRFhuWG1YanRHaEdKeVNocWpBT25CT2tXMkpHOVM3R2dZZU1XQVU1SnpobldtQk9hT00rQ0tFUG9xU2ZGREMyVW5xK0RMbFVnVVZVRkZMWkdKZzZqdGxvanNkc2E4a1BPYlB1SmRpNWRuQmRCc0xKTUdUV0RhNHQySnZ0d3VQbzlzK1k4NnN1di9XMzNRRzFyQWFPQVVWK3Z4NEs2ZjJEMDRQVktsQzdXTFNyWnpBaTQ1WlY2bElDN1dvWHFtUnl2VXFvVndyelVvVnNJamVUWFdRditSSDVHVGxCWGlCL0luOGxuMEliQkNBRk9hakFKcmdaWXlPSFdxT2ZVZS9hSGpJMTJSNk9RbzFqQ2d0MjE1bCs0ZjZYUGIrME1Ob3UwVis0M24yRjc3dFNmUmIyNGQ3eml0Z25LbXZZSHM2OXp1Z2FQdkJ3djZpb1hrYjJMZEw2NUF0dzUxdUxrWGx1MWJoTU1SY1hTUGNZb3FLSVJsaDM0bFFQOC81SmJ1VUZ5ZTR2eEQ2LzZNeEZGMTFDMHVWTHI5VWxndzQ0dFMzcE1WaU5MVUV4YnljRmdMSWN0K1FETWliUmlteDF5ZFV6OEZYWml1T0lEQk9NVlgyblVaYytodU5FNVhVSjgxdWlKb2lhYndxYVZGMHVhY0tiYXUvcGw0UjJWVzBYWGxKcmE2Ym9WcllHNjQ2VEY1Tll6d3k0dmpFTlZyRGxjTnBaUGw4REg2WFg4WFdDeDBtdldWWlk2S0ZMcnZzWTY2L3pQaWN0NUZueGFOVVIvanV2WkNNM1R2RDYwRTJXMXRaaXpiWFRQRHVhYmNtMG5iYnpwV0twbUExYXlCUThnaWVkTFVNK0Ewa05qQmpRam11WXo3WXJnSVhZdm1GNjNaTEJ3U1hycG45VGI5d3dkZC9VMUgwUE1RSzNYY084dWwzV1Q3UHlQUGRweTBUZW1LeE5SY0pOYXVpWEpublVEcFVwcFFXczRTblVJeTBFRVNHWXFKWVFMR0h4emFHV3dWSWFTNlk3bVFGTThaallEUTNheGpmNjFTV2pVMzNKd09aQTFwd2FHMUw5bXpmNzFhSFJkWDFKSHc2RnAwYVhoTndicXllR05nNE5iZHpHQ0J4b3o0WlhqeTROdTY5WnI2c0RZNnZNckxVNW5BMVA4SmtiZFdYSjZFUmZNcnl2TmgxSmZROStUNGRJaEd2Szl3M2R4akJCemF0c1EvTWxPSFZJRG5ZcER6Nm9kQVhsUTAxdDJQYTVJYWZkOE1NcHhBZURLUDBDNkNqZ1ZMVDVvc0I2aWNVeDAxbFdqWHh6VC9HeVJGMndlbEVNNVovN2pHM1ZqUTFTck5uNUlieXpPRzVkb2JCMy9RSHh5WnZzWGNvejhJb0V3UzdwbENnK3p4SFFrNDI0cTlCZkVwa0VTSmJGSFF1c0RCU1dGa3VCa29QTzBrTEt3UlZZanhHWGxIVGNURFFNSi9INlRYOWFma083bW5yYVRPMWZlVG5aQVhMdTRjcDdIQVhNbU5HMXllRms5VGdTL05IaFpSLzRRb0JUci9aQis2aENneWwxNU5xMVViTjZuRTEvWm5QMVUyY2l6Q0JwdnM4Y0pRWko0TGtZeDVOL3laUEFVWk5RUTBWNGYzQlFsbFdySzNZUnpsMzBkT1Q2UlZuMnVwTnVyNndvU2E4Q3FwZFQvYUtuQk00bzNqTnVyOWQ5eHF0VVQ2dmVCRXQ5Q2E5YXQrRVJ6RUVoVWtSOHNhNW1RNGFWdkpvVmVFQTh6STRlaTVtVUxYRkd5VTd6LzZUQWVZTFZjcHpTV1pZOFBZWUY1eXJUVjYwc1QwK1hWMTQxdlgrK1dmMTZWMmJGZUdWUFpYeEZwa3Z5ZUtUV0xsemZXMG1uS3hzWTZZMzI5NC8wOTk4U0NmWDFibG01cGJjdkZHbHEvcjA3TVJBTWhZSURpVzVKRktXVzN2ZHJFcENzWlNKRytvbTdadS9QU1NjWkpoTmtMYm1XNVdzcjEycFdxVzV6S3Rsd1JTNGJGT3hVdzE3bUN6eTZsc2tDRGwxV1lPR1dEWXJBRHJNQTdCRER3ZVdXTmQ1a29pSm5SMWR6K3l0TFAycTBTcVBCMWxuSzJjY0I3UlllNEZTb1BrczNpQjN0NHR4VFNIY3RiMnN5MWl2azBwdkh1Q05tNncxZjZ3eHYzK09DZ043OExxZFFuVVZoN1Iwb1RBcDB6T2YycmJXNzcwVnU1QzJkSXlHZFRuSG84elNqaTdkcHBqMFVTb1ZDeitsaFJNVGg1M1RlcTlWYkdmYmp1U2JBb29TZFhheVk0UFlIZzM3NEM2ZjdnbDFCL0RYdUo0L1FYeE9CZEpGSnNwRnNJM2VncG9XVVVDamxUSUZuTllObCtaeVpLbUJlWUtHSGtEMVF5RGxoYUtiS3dLY0lKcUo0VExKMk9tZFkvSldYYWU0RGRHQnc4SFo3ZVhjZ0ZGMnpyMlNvYWxEcnk1aUtxb2EwUHVoZTNoUFEyczNlbFRZTStNSStuM3JLMEtnTDcvTGEzR2VNTHQ2bTd1OTEydkdudnRPUmlJYTBxQm1ocVZpK1hXOVhOQm1xYjhlVmdLeklIZkdJNWJOb0c3WDBVQ3plSVNtcUljTy9uWThGSDdVOGF2WDlmeC9TVCtoeDBzZXpQdzlReThNdW0zR1dmMk40VXkveUlZR1ZCWGJKSFdJWnA3ZGZUY3B0ZE1UcjlRbXE3RGFpSy91a3FDTDRrdDRSVWZTNVhQbk10bVQyMi9tUUZxRjdlbVNxdHJsdThTVkVseERSSnJaT0RrcHV3ZTBWZlRmamRFcDFmN0E3ditmb3pOQlhVSi82V1R1SzJUdEZscEZWWkFaM0xjRnZVaTFaMnAyWVQrRU1Ba0dKVlN0T3pMVEFQZzRJcVdJQWx6UlNqT0JrbDJ6eGozVEt5Y3B6VC9NbnZYM3VhU01XTStnVTBya1hqb2hoZWZWUk1hcHMzL2tMTVNLdjIzbFQyM3V4UXJrUWp5T0psZU1Ec2RoQW5ENlpHRWxXWjVNakNYekNFL2hrV1grV0Y0a256R2hWT3lLMmVRWmVrVjNleW8wekw4a3VZV0NuREN2ampoQWtjVFBPQkRYVmRvYXYzSFZjRm5Rakx2dFY5UzJwMHpBNkplZ1B3TVF4dCt5RmIzbGw5ekdscS81ZFJLYjNjRXlRWW9hTllwaGFySjd4Q0I3QVd4c0xZM2pqWlhZMFhzWmowV2p3YzlJNlBQL2RLQUJuQ1phcUhwYVpFQUN4azRaZUxaU0tOZ1pBQmwrbFlRWDFzSlFPU1gzbjZyNDEwZXZjb3VkNUplQUdVWFZQOUgxdFpPS2VqVHE0T25vMHowZXJybzFGcm5PcG9odmExZC9oVGR0VnNRZEtONVc5UmxUM05qRDBuem55S05UZ0tBTWZXTldjeW9kVjBJR0xQSUhPRjBvNEp5cXVmYUs0ejZXSUl6dUdoM2Q4Yzhjd1FnOEVSK09WeHlyamRtOHZOdWh0czRMb09paEd4SU11VWRnendpWU43eGhoMStvWm5KTnVURzdnUVp2dTRYV1o5R0FaWmpHRXVid2VQcVlodEtEVEgrOVZRa2wxNy9pR3lic25KKzgrc0t0eVByY2xsOXR5NjVac2RzdC85aXFwRUtoN001VmRCeGgzY3NPZE5jNnRXM0kxdXlNMVB6T1hlZ1NPckxGc0ZOSTJPMjdNK1RGMkFwbk45TVV2NXVkNkxqeEl2RVFuSFJ6eEl1NElzQTlNTEZrSm4ydGNab1o3T043ZFhlN3VqcmM4SHJ1c1BLYW1scVh3ZDc3bFFVdUxwaWxhdTRQVU1hcHVlQmI3aXJVNFJvVVhFWVh1VnVJR2xSR21PcCsybE5rYVJQVnppT3FtbGFadmFxRzRkRmdTajBqeEVKV3J2MTJJVVdudG13K3JmUWFyUkUwQXBoNG9jSTZubFVsR3FzK3UzLytUL2V0aFc2MlBwSHAyZUhiWnN0bmgvd09POTV5REFIaWNZMkJrWUdBQTRwbUo2UUh4L0RaZkdiaVpYd0JGR0dwVU56UWk2UCt2bWFjeTNRSnlPUmlZUUtJQU5vVUxWWGljWTJCa1lHQU8rcDhGSkY4d0FBSHpWQVpHQmxTZ0RRQlc5Z052QUFBQWVKeGpZR0JnWUg0eE5EQUF6d1FtandBQUFBQUFUZ0NhQU9nQkNnRXNBVTRCY0FHYUFjUUI3Z0lhQXB3QzZBU2FCTHdFMWdUeUJRNEZLZ1Y2QmRBRi9nWkVCbVlHdGdjWUI1QUlHQWhTQ0dvSS9nbEdDYjRKMmdvRUNqd0tnZ3E0Q3ZBTFVBdVdDN3g0bkdOZ1pHQmcwR1pNWVJCbEFBRW1JT1lDUWdhRy8yQStBd0FZbEFHOEFIaWNiWkU5VHNNd0dJYmY5QS9SU2dnRVltSHhBZ3RxK2pOMlpHajNEdDNUMUdsVE9YSGt1Qlc5QXlmZ0VCeUNnVE53Q0E3QlcvTkpsVkJ0eWQvangrOFhLd21BYTN3aHduRkU2SWIxT0JxNDRPNlBtNlFiNFJiNVFiaU5IaDZGTy9SRDRTNmVNUkh1NFJhYVQ0aGFselIzZUJWdTRBcHZ3azM2ZCtFVytVTzRqWHQ4Q25mb3Y0VzdXT0JIdUllbjZNWHNDdHZQVTF2V2M3M2VtY1NkeElrVzJ0VzVMZFVvSHA3a1RKZmFKVjZ2MVBLZzZ2MTY3SDJtTW1jTE5iV2wxOFpZVlRtNzFhbVBOOTVYazhFZ0V4K250b0RCRGdVcytzaVJzcGFvTWVmN3J1a05Fcml6aVhOdXdTN0htb2U5d2dneHYrZTU1SXpKTXFRVGVOWVYwMHNjdU5iWTgrWXhyVWZHZmNhTVpiL0NOUFFlMDRiVDBsVGhiRXVUMHNmWWhLNksvMjNBbWYzTHgrSDI0aGNqNEdTY0FBQUFlSnh0anRsdWd6QVFSYmtKVUVKSXV1Lzd2cVI4bEdOUEFjV3gwWUFiNWUvTGtsUjk2RWdlblN1ZkdZMDM4UHFLdmY5cmhnR0c4QkVneEE0aWpCQmpqQVFUVExHTFBlempBSWM0d2pGT2NJb3puT01DbDdqQ05XNXdpenZjNHdHUGVNSXpYdkNLTjd6akF6Tjhlb25RUldaU1NhWW1qdnVnNmFzZTk4aEZsdGV4TUptbVZObVYyV0J2ZE5nWlVjK3VqQVd6WFczVURudTF3NDNhc1N0SGM4R3B6QVhYL3B5MGpxVFFaSlRna2N4SkxwYUNGMGxEMzJ4TnQrNDN0QXNuMjlEZnQwMnVES1MyY2pHVU5nc2syNnFLMmxGdGhZb1UyN0lOUHFtaURxZzVnb2UwcHFSNXFTb3FNZGVrL0NVWkZ5d0w0NnJFc2lJbWxlcWlxb015dDRiYVhsdS8xR0xkTkZmNXpiY05tZHIxWVVXQ1plNDdvK3pVbWIvRG9TdGJ3M2NWc2VmOUFMamppUFFBKSBmb3JtYXQoXCd3b2ZmXCcpO1xuICAgICAgZm9udC13ZWlnaHQ6IG5vcm1hbDtcbiAgICAgIGZvbnQtc3R5bGU6IG5vcm1hbDtcbiAgICB9XG5cbiAgICBodG1sIHtcbiAgICAgIC0tbHVtby1pY29ucy1hbGlnbi1jZW50ZXI6ICJcXGVhMDEiO1xuICAgICAgLS1sdW1vLWljb25zLWFsaWduLWxlZnQ6ICJcXGVhMDIiO1xuICAgICAgLS1sdW1vLWljb25zLWFsaWduLXJpZ2h0OiAiXFxlYTAzIjtcbiAgICAgIC0tbHVtby1pY29ucy1hbmdsZS1kb3duOiAiXFxlYTA0IjtcbiAgICAgIC0tbHVtby1pY29ucy1hbmdsZS1sZWZ0OiAiXFxlYTA1IjtcbiAgICAgIC0tbHVtby1pY29ucy1hbmdsZS1yaWdodDogIlxcZWEwNiI7XG4gICAgICAtLWx1bW8taWNvbnMtYW5nbGUtdXA6ICJcXGVhMDciO1xuICAgICAgLS1sdW1vLWljb25zLWFycm93LWRvd246ICJcXGVhMDgiO1xuICAgICAgLS1sdW1vLWljb25zLWFycm93LWxlZnQ6ICJcXGVhMDkiO1xuICAgICAgLS1sdW1vLWljb25zLWFycm93LXJpZ2h0OiAiXFxlYTBhIjtcbiAgICAgIC0tbHVtby1pY29ucy1hcnJvdy11cDogIlxcZWEwYiI7XG4gICAgICAtLWx1bW8taWNvbnMtYmFyLWNoYXJ0OiAiXFxlYTBjIjtcbiAgICAgIC0tbHVtby1pY29ucy1iZWxsOiAiXFxlYTBkIjtcbiAgICAgIC0tbHVtby1pY29ucy1jYWxlbmRhcjogIlxcZWEwZSI7XG4gICAgICAtLWx1bW8taWNvbnMtY2hlY2ttYXJrOiAiXFxlYTBmIjtcbiAgICAgIC0tbHVtby1pY29ucy1jaGV2cm9uLWRvd246ICJcXGVhMTAiO1xuICAgICAgLS1sdW1vLWljb25zLWNoZXZyb24tbGVmdDogIlxcZWExMSI7XG4gICAgICAtLWx1bW8taWNvbnMtY2hldnJvbi1yaWdodDogIlxcZWExMiI7XG4gICAgICAtLWx1bW8taWNvbnMtY2hldnJvbi11cDogIlxcZWExMyI7XG4gICAgICAtLWx1bW8taWNvbnMtY2xvY2s6ICJcXGVhMTQiO1xuICAgICAgLS1sdW1vLWljb25zLWNvZzogIlxcZWExNSI7XG4gICAgICAtLWx1bW8taWNvbnMtY3Jvc3M6ICJcXGVhMTYiO1xuICAgICAgLS1sdW1vLWljb25zLWRvd25sb2FkOiAiXFxlYTE3IjtcbiAgICAgIC0tbHVtby1pY29ucy1kcm9wZG93bjogIlxcZWExOCI7XG4gICAgICAtLWx1bW8taWNvbnMtZWRpdDogIlxcZWExOSI7XG4gICAgICAtLWx1bW8taWNvbnMtZXJyb3I6ICJcXGVhMWEiO1xuICAgICAgLS1sdW1vLWljb25zLWV5ZTogIlxcZWExYiI7XG4gICAgICAtLWx1bW8taWNvbnMtZXllLWRpc2FibGVkOiAiXFxlYTFjIjtcbiAgICAgIC0tbHVtby1pY29ucy1tZW51OiAiXFxlYTFkIjtcbiAgICAgIC0tbHVtby1pY29ucy1taW51czogIlxcZWExZSI7XG4gICAgICAtLWx1bW8taWNvbnMtb3JkZXJlZC1saXN0OiAiXFxlYTFmIjtcbiAgICAgIC0tbHVtby1pY29ucy1waG9uZTogIlxcZWEyMCI7XG4gICAgICAtLWx1bW8taWNvbnMtcGhvdG86ICJcXGVhMjEiO1xuICAgICAgLS1sdW1vLWljb25zLXBsYXk6ICJcXGVhMjIiO1xuICAgICAgLS1sdW1vLWljb25zLXBsdXM6ICJcXGVhMjMiO1xuICAgICAgLS1sdW1vLWljb25zLXJlZG86ICJcXGVhMjQiO1xuICAgICAgLS1sdW1vLWljb25zLXJlbG9hZDogIlxcZWEyNSI7XG4gICAgICAtLWx1bW8taWNvbnMtc2VhcmNoOiAiXFxlYTI2IjtcbiAgICAgIC0tbHVtby1pY29ucy11bmRvOiAiXFxlYTI3IjtcbiAgICAgIC0tbHVtby1pY29ucy11bm9yZGVyZWQtbGlzdDogIlxcZWEyOCI7XG4gICAgICAtLWx1bW8taWNvbnMtdXBsb2FkOiAiXFxlYTI5IjtcbiAgICAgIC0tbHVtby1pY29ucy11c2VyOiAiXFxlYTJhIjtcbiAgICB9XG4gIDwvc3R5bGU+XG48L2N1c3RvbS1zdHlsZT4nLGRvY3VtZW50LmhlYWQuYXBwZW5kQ2hpbGQoaHp0LmNvbnRlbnQpO2NvbnN0IGR6dD1kb2N1bWVudC5jcmVhdGVFbGVtZW50KCJ0ZW1wbGF0ZSIpO2R6dC5pbm5lckhUTUw9IjxjdXN0b20tc3R5bGU+XG4gIDxzdHlsZT5cbiAgICBodG1sIHtcbiAgICAgIC0tbHVtby1zaXplLXhzOiAxLjYyNXJlbTtcbiAgICAgIC0tbHVtby1zaXplLXM6IDEuODc1cmVtO1xuICAgICAgLS1sdW1vLXNpemUtbTogMi4yNXJlbTtcbiAgICAgIC0tbHVtby1zaXplLWw6IDIuNzVyZW07XG4gICAgICAtLWx1bW8tc2l6ZS14bDogMy41cmVtO1xuXG4gICAgICAvKiBJY29ucyAqL1xuICAgICAgLS1sdW1vLWljb24tc2l6ZS1zOiAxLjI1ZW07XG4gICAgICAtLWx1bW8taWNvbi1zaXplLW06IDEuNWVtO1xuICAgICAgLS1sdW1vLWljb24tc2l6ZS1sOiAyLjI1ZW07XG4gICAgICAvKiBGb3IgYmFja3dhcmRzIGNvbXBhdGliaWxpdHkgKi9cbiAgICAgIC0tbHVtby1pY29uLXNpemU6IHZhcigtLWx1bW8taWNvbi1zaXplLW0pO1xuICAgIH1cbiAgPC9zdHlsZT5cbjwvY3VzdG9tLXN0eWxlPiIsZG9jdW1lbnQuaGVhZC5hcHBlbmRDaGlsZChkenQuY29udGVudCk7Y29uc3QgcHp0PWRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoInRlbXBsYXRlIik7cHp0LmlubmVySFRNTD0iPGN1c3RvbS1zdHlsZT5cbiAgPHN0eWxlPlxuICAgIGh0bWwge1xuICAgICAgLyogU3F1YXJlICovXG4gICAgICAtLWx1bW8tc3BhY2UteHM6IDAuMjVyZW07XG4gICAgICAtLWx1bW8tc3BhY2UtczogMC41cmVtO1xuICAgICAgLS1sdW1vLXNwYWNlLW06IDFyZW07XG4gICAgICAtLWx1bW8tc3BhY2UtbDogMS41cmVtO1xuICAgICAgLS1sdW1vLXNwYWNlLXhsOiAyLjVyZW07XG5cbiAgICAgIC8qIFdpZGUgKi9cbiAgICAgIC0tbHVtby1zcGFjZS13aWRlLXhzOiBjYWxjKHZhcigtLWx1bW8tc3BhY2UteHMpIC8gMikgdmFyKC0tbHVtby1zcGFjZS14cyk7XG4gICAgICAtLWx1bW8tc3BhY2Utd2lkZS1zOiBjYWxjKHZhcigtLWx1bW8tc3BhY2UtcykgLyAyKSB2YXIoLS1sdW1vLXNwYWNlLXMpO1xuICAgICAgLS1sdW1vLXNwYWNlLXdpZGUtbTogY2FsYyh2YXIoLS1sdW1vLXNwYWNlLW0pIC8gMikgdmFyKC0tbHVtby1zcGFjZS1tKTtcbiAgICAgIC0tbHVtby1zcGFjZS13aWRlLWw6IGNhbGModmFyKC0tbHVtby1zcGFjZS1sKSAvIDIpIHZhcigtLWx1bW8tc3BhY2UtbCk7XG4gICAgICAtLWx1bW8tc3BhY2Utd2lkZS14bDogY2FsYyh2YXIoLS1sdW1vLXNwYWNlLXhsKSAvIDIpIHZhcigtLWx1bW8tc3BhY2UteGwpO1xuXG4gICAgICAvKiBUYWxsICovXG4gICAgICAtLWx1bW8tc3BhY2UtdGFsbC14czogdmFyKC0tbHVtby1zcGFjZS14cykgY2FsYyh2YXIoLS1sdW1vLXNwYWNlLXhzKSAvIDIpO1xuICAgICAgLS1sdW1vLXNwYWNlLXRhbGwtczogdmFyKC0tbHVtby1zcGFjZS1zKSBjYWxjKHZhcigtLWx1bW8tc3BhY2UtcykgLyAyKTtcbiAgICAgIC0tbHVtby1zcGFjZS10YWxsLW06IHZhcigtLWx1bW8tc3BhY2UtbSkgY2FsYyh2YXIoLS1sdW1vLXNwYWNlLW0pIC8gMik7XG4gICAgICAtLWx1bW8tc3BhY2UtdGFsbC1sOiB2YXIoLS1sdW1vLXNwYWNlLWwpIGNhbGModmFyKC0tbHVtby1zcGFjZS1sKSAvIDIpO1xuICAgICAgLS1sdW1vLXNwYWNlLXRhbGwteGw6IHZhcigtLWx1bW8tc3BhY2UteGwpIGNhbGModmFyKC0tbHVtby1zcGFjZS14bCkgLyAyKTtcbiAgICB9XG4gIDwvc3R5bGU+XG48L2N1c3RvbS1zdHlsZT4iLGRvY3VtZW50LmhlYWQuYXBwZW5kQ2hpbGQocHp0LmNvbnRlbnQpO2NvbnN0IGZ6dD1kb2N1bWVudC5jcmVhdGVFbGVtZW50KCJ0ZW1wbGF0ZSIpO2Z6dC5pbm5lckhUTUw9IjxjdXN0b20tc3R5bGU+XG4gIDxzdHlsZT5cbiAgICBodG1sIHtcbiAgICAgIC8qIEJvcmRlciByYWRpdXMgKi9cbiAgICAgIC0tbHVtby1ib3JkZXItcmFkaXVzLXM6IDAuMjVlbTsgLyogQ2hlY2tib3gsIGJhZGdlLCBkYXRlLXBpY2tlciB5ZWFyIGluZGljYXRvciwgZXRjICovXG4gICAgICAtLWx1bW8tYm9yZGVyLXJhZGl1cy1tOiB2YXIoLS1sdW1vLWJvcmRlci1yYWRpdXMsIDAuMjVlbSk7IC8qIEJ1dHRvbiwgdGV4dCBmaWVsZCwgbWVudSBvdmVybGF5LCBldGMgKi9cbiAgICAgIC0tbHVtby1ib3JkZXItcmFkaXVzLWw6IDAuNWVtOyAvKiBEaWFsb2csIG5vdGlmaWNhdGlvbiwgZXRjICovXG4gICAgICAtLWx1bW8tYm9yZGVyLXJhZGl1czogMC4yNWVtOyAvKiBEZXByZWNhdGVkICovXG5cbiAgICAgIC8qIFNoYWRvdyAqL1xuICAgICAgLS1sdW1vLWJveC1zaGFkb3cteHM6IDAgMXB4IDRweCAtMXB4IHZhcigtLWx1bW8tc2hhZGUtNTBwY3QpO1xuICAgICAgLS1sdW1vLWJveC1zaGFkb3ctczogMCAycHggNHB4IC0xcHggdmFyKC0tbHVtby1zaGFkZS0yMHBjdCksIDAgM3B4IDEycHggLTFweCB2YXIoLS1sdW1vLXNoYWRlLTMwcGN0KTtcbiAgICAgIC0tbHVtby1ib3gtc2hhZG93LW06IDAgMnB4IDZweCAtMXB4IHZhcigtLWx1bW8tc2hhZGUtMjBwY3QpLCAwIDhweCAyNHB4IC00cHggdmFyKC0tbHVtby1zaGFkZS00MHBjdCk7XG4gICAgICAtLWx1bW8tYm94LXNoYWRvdy1sOiAwIDNweCAxOHB4IC0ycHggdmFyKC0tbHVtby1zaGFkZS0yMHBjdCksIDAgMTJweCA0OHB4IC02cHggdmFyKC0tbHVtby1zaGFkZS00MHBjdCk7XG4gICAgICAtLWx1bW8tYm94LXNoYWRvdy14bDogMCA0cHggMjRweCAtM3B4IHZhcigtLWx1bW8tc2hhZGUtMjBwY3QpLCAwIDE4cHggNjRweCAtOHB4IHZhcigtLWx1bW8tc2hhZGUtNDBwY3QpO1xuXG4gICAgICAvKiBDbGlja2FibGUgZWxlbWVudCBjdXJzb3IgKi9cbiAgICAgIC0tbHVtby1jbGlja2FibGUtY3Vyc29yOiBkZWZhdWx0O1xuICAgIH1cbiAgPC9zdHlsZT5cbjwvY3VzdG9tLXN0eWxlPiIsZG9jdW1lbnQuaGVhZC5hcHBlbmRDaGlsZChmenQuY29udGVudCk7Y29uc3QgbXp0PWRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoInRlbXBsYXRlIik7bXp0LmlubmVySFRNTD0nPGN1c3RvbS1zdHlsZT5cbiAgPHN0eWxlPlxuICAgIGh0bWwge1xuICAgICAgLyogRm9udCBmYW1pbGllcyAqL1xuICAgICAgLS1sdW1vLWZvbnQtZmFtaWx5OiAtYXBwbGUtc3lzdGVtLCBCbGlua01hY1N5c3RlbUZvbnQsICJSb2JvdG8iLCAiU2Vnb2UgVUkiLCBIZWx2ZXRpY2EsIEFyaWFsLCBzYW5zLXNlcmlmLCAiQXBwbGUgQ29sb3IgRW1vamkiLCAiU2Vnb2UgVUkgRW1vamkiLCAiU2Vnb2UgVUkgU3ltYm9sIjtcblxuICAgICAgLyogRm9udCBzaXplcyAqL1xuICAgICAgLS1sdW1vLWZvbnQtc2l6ZS14eHM6IC43NXJlbTtcbiAgICAgIC0tbHVtby1mb250LXNpemUteHM6IC44MTI1cmVtO1xuICAgICAgLS1sdW1vLWZvbnQtc2l6ZS1zOiAuODc1cmVtO1xuICAgICAgLS1sdW1vLWZvbnQtc2l6ZS1tOiAxcmVtO1xuICAgICAgLS1sdW1vLWZvbnQtc2l6ZS1sOiAxLjEyNXJlbTtcbiAgICAgIC0tbHVtby1mb250LXNpemUteGw6IDEuMzc1cmVtO1xuICAgICAgLS1sdW1vLWZvbnQtc2l6ZS14eGw6IDEuNzVyZW07XG4gICAgICAtLWx1bW8tZm9udC1zaXplLXh4eGw6IDIuNXJlbTtcblxuICAgICAgLyogTGluZSBoZWlnaHRzICovXG4gICAgICAtLWx1bW8tbGluZS1oZWlnaHQteHM6IDEuMjU7XG4gICAgICAtLWx1bW8tbGluZS1oZWlnaHQtczogMS4zNzU7XG4gICAgICAtLWx1bW8tbGluZS1oZWlnaHQtbTogMS42MjU7XG4gICAgfVxuXG4gIDwvc3R5bGU+XG48L2N1c3RvbS1zdHlsZT48ZG9tLW1vZHVsZSBpZD0ibHVtby10eXBvZ3JhcGh5Ij5cbiAgPHRlbXBsYXRlPlxuICAgIDxzdHlsZT5cbiAgICAgIGh0bWwge1xuICAgICAgICBmb250LWZhbWlseTogdmFyKC0tbHVtby1mb250LWZhbWlseSk7XG4gICAgICAgIGZvbnQtc2l6ZTogdmFyKC0tbHVtby1mb250LXNpemUsIHZhcigtLWx1bW8tZm9udC1zaXplLW0pKTtcbiAgICAgICAgbGluZS1oZWlnaHQ6IHZhcigtLWx1bW8tbGluZS1oZWlnaHQtbSk7XG4gICAgICAgIC13ZWJraXQtdGV4dC1zaXplLWFkanVzdDogMTAwJTtcbiAgICAgICAgLXdlYmtpdC1mb250LXNtb290aGluZzogYW50aWFsaWFzZWQ7XG4gICAgICAgIC1tb3otb3N4LWZvbnQtc21vb3RoaW5nOiBncmF5c2NhbGU7XG4gICAgICB9XG5cbiAgICAgIC8qIENhbuKAmXQgY29tYmluZSB3aXRoIHRoZSBhYm92ZSBzZWxlY3RvciBiZWNhdXNlIHRoYXQgZG9lc27igJl0IHdvcmsgaW4gYnJvd3NlcnMgd2l0aG91dCBuYXRpdmUgc2hhZG93IGRvbSAqL1xuICAgICAgOmhvc3Qge1xuICAgICAgICBmb250LWZhbWlseTogdmFyKC0tbHVtby1mb250LWZhbWlseSk7XG4gICAgICAgIGZvbnQtc2l6ZTogdmFyKC0tbHVtby1mb250LXNpemUsIHZhcigtLWx1bW8tZm9udC1zaXplLW0pKTtcbiAgICAgICAgbGluZS1oZWlnaHQ6IHZhcigtLWx1bW8tbGluZS1oZWlnaHQtbSk7XG4gICAgICAgIC13ZWJraXQtdGV4dC1zaXplLWFkanVzdDogMTAwJTtcbiAgICAgICAgLXdlYmtpdC1mb250LXNtb290aGluZzogYW50aWFsaWFzZWQ7XG4gICAgICAgIC1tb3otb3N4LWZvbnQtc21vb3RoaW5nOiBncmF5c2NhbGU7XG4gICAgICB9XG5cbiAgICAgIHNtYWxsLFxuICAgICAgW3RoZW1lfj0iZm9udC1zaXplLXMiXSB7XG4gICAgICAgIGZvbnQtc2l6ZTogdmFyKC0tbHVtby1mb250LXNpemUtcyk7XG4gICAgICAgIGxpbmUtaGVpZ2h0OiB2YXIoLS1sdW1vLWxpbmUtaGVpZ2h0LXMpO1xuICAgICAgfVxuXG4gICAgICBbdGhlbWV+PSJmb250LXNpemUteHMiXSB7XG4gICAgICAgIGZvbnQtc2l6ZTogdmFyKC0tbHVtby1mb250LXNpemUteHMpO1xuICAgICAgICBsaW5lLWhlaWdodDogdmFyKC0tbHVtby1saW5lLWhlaWdodC14cyk7XG4gICAgICB9XG5cbiAgICAgIGgxLFxuICAgICAgaDIsXG4gICAgICBoMyxcbiAgICAgIGg0LFxuICAgICAgaDUsXG4gICAgICBoNiB7XG4gICAgICAgIGZvbnQtd2VpZ2h0OiA2MDA7XG4gICAgICAgIGxpbmUtaGVpZ2h0OiB2YXIoLS1sdW1vLWxpbmUtaGVpZ2h0LXhzKTtcbiAgICAgICAgbWFyZ2luLXRvcDogMS4yNWVtO1xuICAgICAgfVxuXG4gICAgICBoMSB7XG4gICAgICAgIGZvbnQtc2l6ZTogdmFyKC0tbHVtby1mb250LXNpemUteHh4bCk7XG4gICAgICAgIG1hcmdpbi1ib3R0b206IDAuNzVlbTtcbiAgICAgIH1cblxuICAgICAgaDIge1xuICAgICAgICBmb250LXNpemU6IHZhcigtLWx1bW8tZm9udC1zaXplLXh4bCk7XG4gICAgICAgIG1hcmdpbi1ib3R0b206IDAuNWVtO1xuICAgICAgfVxuXG4gICAgICBoMyB7XG4gICAgICAgIGZvbnQtc2l6ZTogdmFyKC0tbHVtby1mb250LXNpemUteGwpO1xuICAgICAgICBtYXJnaW4tYm90dG9tOiAwLjVlbTtcbiAgICAgIH1cblxuICAgICAgaDQge1xuICAgICAgICBmb250LXNpemU6IHZhcigtLWx1bW8tZm9udC1zaXplLWwpO1xuICAgICAgICBtYXJnaW4tYm90dG9tOiAwLjVlbTtcbiAgICAgIH1cblxuICAgICAgaDUge1xuICAgICAgICBmb250LXNpemU6IHZhcigtLWx1bW8tZm9udC1zaXplLW0pO1xuICAgICAgICBtYXJnaW4tYm90dG9tOiAwLjI1ZW07XG4gICAgICB9XG5cbiAgICAgIGg2IHtcbiAgICAgICAgZm9udC1zaXplOiB2YXIoLS1sdW1vLWZvbnQtc2l6ZS14cyk7XG4gICAgICAgIG1hcmdpbi1ib3R0b206IDA7XG4gICAgICAgIHRleHQtdHJhbnNmb3JtOiB1cHBlcmNhc2U7XG4gICAgICAgIGxldHRlci1zcGFjaW5nOiAwLjAzZW07XG4gICAgICB9XG5cbiAgICAgIHAsXG4gICAgICBibG9ja3F1b3RlIHtcbiAgICAgICAgbWFyZ2luLXRvcDogMC41ZW07XG4gICAgICAgIG1hcmdpbi1ib3R0b206IDAuNzVlbTtcbiAgICAgIH1cblxuICAgICAgYSB7XG4gICAgICAgIHRleHQtZGVjb3JhdGlvbjogbm9uZTtcbiAgICAgIH1cblxuICAgICAgYTpob3ZlciB7XG4gICAgICAgIHRleHQtZGVjb3JhdGlvbjogdW5kZXJsaW5lO1xuICAgICAgfVxuXG4gICAgICBociB7XG4gICAgICAgIGRpc3BsYXk6IGJsb2NrO1xuICAgICAgICBhbGlnbi1zZWxmOiBzdHJldGNoO1xuICAgICAgICBoZWlnaHQ6IDFweDtcbiAgICAgICAgYm9yZGVyOiAwO1xuICAgICAgICBwYWRkaW5nOiAwO1xuICAgICAgICBtYXJnaW46IHZhcigtLWx1bW8tc3BhY2UtcykgY2FsYyh2YXIoLS1sdW1vLWJvcmRlci1yYWRpdXMtbSkgLyAyKTtcbiAgICAgICAgYmFja2dyb3VuZC1jb2xvcjogdmFyKC0tbHVtby1jb250cmFzdC0xMHBjdCk7XG4gICAgICB9XG5cbiAgICAgIGJsb2NrcXVvdGUge1xuICAgICAgICBib3JkZXItbGVmdDogMnB4IHNvbGlkIHZhcigtLWx1bW8tY29udHJhc3QtMzBwY3QpO1xuICAgICAgfVxuXG4gICAgICBiLFxuICAgICAgc3Ryb25nIHtcbiAgICAgICAgZm9udC13ZWlnaHQ6IDYwMDtcbiAgICAgIH1cblxuICAgICAgLyogUlRMIHNwZWNpZmljIHN0eWxlcyAqL1xuXG4gICAgICBibG9ja3F1b3RlW2Rpcj0icnRsIl0ge1xuICAgICAgICBib3JkZXItbGVmdDogbm9uZTtcbiAgICAgICAgYm9yZGVyLXJpZ2h0OiAycHggc29saWQgdmFyKC0tbHVtby1jb250cmFzdC0zMHBjdCk7XG4gICAgICB9XG5cbiAgICA8L3N0eWxlPlxuICA8L3RlbXBsYXRlPlxuPC9kb20tbW9kdWxlPicsZG9jdW1lbnQuaGVhZC5hcHBlbmRDaGlsZChtenQuY29udGVudCk7Y29uc3QgZ3p0PV9lYDxkb20tbW9kdWxlIGlkPSJsdW1vLWNoZWNrYm94IiB0aGVtZS1mb3I9InZhYWRpbi1jaGVja2JveCI+CiAgPHRlbXBsYXRlPgogICAgPHN0eWxlIGluY2x1ZGU9Imx1bW8tY2hlY2tib3gtc3R5bGUgbHVtby1jaGVja2JveC1lZmZlY3RzIj4KICAgICAgLyogSUUxMSBvbmx5ICovCiAgICAgIDo6LW1zLWJhY2tkcm9wLAogICAgICBbcGFydD0iY2hlY2tib3giXSB7CiAgICAgICAgbGluZS1oZWlnaHQ6IDE7CiAgICAgIH0KICAgIDwvc3R5bGU+CiAgPC90ZW1wbGF0ZT4KPC9kb20tbW9kdWxlPjxkb20tbW9kdWxlIGlkPSJsdW1vLWNoZWNrYm94LXN0eWxlIj4KICA8dGVtcGxhdGU+CiAgICA8c3R5bGU+CiAgICAgIDpob3N0IHsKICAgICAgICAtd2Via2l0LXRhcC1oaWdobGlnaHQtY29sb3I6IHRyYW5zcGFyZW50OwogICAgICAgIC13ZWJraXQtdXNlci1zZWxlY3Q6IG5vbmU7CiAgICAgICAgLW1vei11c2VyLXNlbGVjdDogbm9uZTsKICAgICAgICAtbXMtdXNlci1zZWxlY3Q6IG5vbmU7CiAgICAgICAgdXNlci1zZWxlY3Q6IG5vbmU7CiAgICAgICAgY3Vyc29yOiBkZWZhdWx0OwogICAgICAgIG91dGxpbmU6IG5vbmU7CiAgICAgIH0KCiAgICAgIFtwYXJ0PSJsYWJlbCJdOm5vdChbZW1wdHldKSB7CiAgICAgICAgbWFyZ2luOiAwLjE4NzVlbSAwLjg3NWVtIDAuMTg3NWVtIDAuMzc1ZW07CiAgICAgIH0KCiAgICAgIFtwYXJ0PSJjaGVja2JveCJdIHsKICAgICAgICB3aWR0aDogY2FsYygxZW0gKyAycHgpOwogICAgICAgIGhlaWdodDogY2FsYygxZW0gKyAycHgpOwogICAgICAgIG1hcmdpbjogMC4xODc1ZW07CiAgICAgICAgcG9zaXRpb246IHJlbGF0aXZlOwogICAgICAgIGJvcmRlci1yYWRpdXM6IHZhcigtLWx1bW8tYm9yZGVyLXJhZGl1cy1zKTsKICAgICAgICBiYWNrZ3JvdW5kLWNvbG9yOiB2YXIoLS1sdW1vLWNvbnRyYXN0LTIwcGN0KTsKICAgICAgICB0cmFuc2l0aW9uOiB0cmFuc2Zvcm0gMC4ycyBjdWJpYy1iZXppZXIoLjEyLCAuMzIsIC41NCwgMiksIGJhY2tncm91bmQtY29sb3IgMC4xNXM7CiAgICAgICAgcG9pbnRlci1ldmVudHM6IG5vbmU7CiAgICAgICAgbGluZS1oZWlnaHQ6IDEuMjsKICAgICAgfQoKICAgICAgOmhvc3QoW2luZGV0ZXJtaW5hdGVdKSBbcGFydD0iY2hlY2tib3giXSwKICAgICAgOmhvc3QoW2NoZWNrZWRdKSBbcGFydD0iY2hlY2tib3giXSB7CiAgICAgICAgYmFja2dyb3VuZC1jb2xvcjogdmFyKC0tbHVtby1wcmltYXJ5LWNvbG9yKTsKICAgICAgfQoKICAgICAgLyogTmVlZGVkIHRvIGFsaWduIHRoZSBjaGVja2JveCBuaWNlbHkgb24gdGhlIGJhc2VsaW5lICovCiAgICAgIFtwYXJ0PSJjaGVja2JveCJdOjpiZWZvcmUgewogICAgICAgIGNvbnRlbnQ6ICJcXDIwMDMiOwogICAgICB9CgogICAgICAvKiBDaGVja21hcmsgKi8KICAgICAgW3BhcnQ9ImNoZWNrYm94Il06OmFmdGVyIHsKICAgICAgICBjb250ZW50OiAiIjsKICAgICAgICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7CiAgICAgICAgd2lkdGg6IDA7CiAgICAgICAgaGVpZ2h0OiAwOwogICAgICAgIGJvcmRlcjogMCBzb2xpZCB2YXIoLS1sdW1vLXByaW1hcnktY29udHJhc3QtY29sb3IpOwogICAgICAgIGJvcmRlci13aWR0aDogMC4xODc1ZW0gMCAwIDAuMTg3NWVtOwogICAgICAgIGJveC1zaXppbmc6IGJvcmRlci1ib3g7CiAgICAgICAgdHJhbnNmb3JtLW9yaWdpbjogMCAwOwogICAgICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTsKICAgICAgICB0b3A6IDAuODEyNWVtOwogICAgICAgIGxlZnQ6IDAuNWVtOwogICAgICAgIHRyYW5zZm9ybTogc2NhbGUoMC41NSkgcm90YXRlKC0xMzVkZWcpOwogICAgICAgIG9wYWNpdHk6IDA7CiAgICAgIH0KCiAgICAgIDpob3N0KFtjaGVja2VkXSkgW3BhcnQ9ImNoZWNrYm94Il06OmFmdGVyIHsKICAgICAgICBvcGFjaXR5OiAxOwogICAgICAgIHdpZHRoOiAwLjYyNWVtOwogICAgICAgIGhlaWdodDogMS4wNjI1ZW07CiAgICAgIH0KCiAgICAgIC8qIEluZGV0ZXJtaW5hdGUgY2hlY2ttYXJrICovCgogICAgICA6aG9zdChbaW5kZXRlcm1pbmF0ZV0pIFtwYXJ0PSJjaGVja2JveCJdOjphZnRlciB7CiAgICAgICAgdHJhbnNmb3JtOiBub25lOwogICAgICAgIG9wYWNpdHk6IDE7CiAgICAgICAgdG9wOiA0NSU7CiAgICAgICAgaGVpZ2h0OiAxMCU7CiAgICAgICAgbGVmdDogMjIlOwogICAgICAgIHJpZ2h0OiAyMiU7CiAgICAgICAgd2lkdGg6IGF1dG87CiAgICAgICAgYm9yZGVyOiAwOwogICAgICAgIGJhY2tncm91bmQtY29sb3I6IHZhcigtLWx1bW8tcHJpbWFyeS1jb250cmFzdC1jb2xvcik7CiAgICAgICAgdHJhbnNpdGlvbjogb3BhY2l0eSAwLjI1czsKICAgICAgfQoKICAgICAgLyogRm9jdXMgcmluZyAqLwoKICAgICAgOmhvc3QoW2ZvY3VzLXJpbmddKSBbcGFydD0iY2hlY2tib3giXSB7CiAgICAgICAgYm94LXNoYWRvdzogMCAwIDAgM3B4IHZhcigtLWx1bW8tcHJpbWFyeS1jb2xvci01MHBjdCk7CiAgICAgIH0KCiAgICAgIC8qIERpc2FibGVkICovCgogICAgICA6aG9zdChbZGlzYWJsZWRdKSB7CiAgICAgICAgcG9pbnRlci1ldmVudHM6IG5vbmU7CiAgICAgICAgY29sb3I6IHZhcigtLWx1bW8tZGlzYWJsZWQtdGV4dC1jb2xvcik7CiAgICAgIH0KCiAgICAgIDpob3N0KFtkaXNhYmxlZF0pIFtwYXJ0PSJsYWJlbCJdIDo6c2xvdHRlZCgqKSB7CiAgICAgICAgY29sb3I6IGluaGVyaXQ7CiAgICAgIH0KCiAgICAgIDpob3N0KFtkaXNhYmxlZF0pIFtwYXJ0PSJjaGVja2JveCJdIHsKICAgICAgICBiYWNrZ3JvdW5kLWNvbG9yOiB2YXIoLS1sdW1vLWNvbnRyYXN0LTEwcGN0KTsKICAgICAgfQoKICAgICAgOmhvc3QoW2Rpc2FibGVkXSkgW3BhcnQ9ImNoZWNrYm94Il06OmFmdGVyIHsKICAgICAgICBib3JkZXItY29sb3I6IHZhcigtLWx1bW8tY29udHJhc3QtMzBwY3QpOwogICAgICB9CgogICAgICA6aG9zdChbaW5kZXRlcm1pbmF0ZV1bZGlzYWJsZWRdKSBbcGFydD0iY2hlY2tib3giXTo6YWZ0ZXIgewogICAgICAgIGJhY2tncm91bmQtY29sb3I6IHZhcigtLWx1bW8tY29udHJhc3QtMzBwY3QpOwogICAgICB9CgogICAgICAvKiBSVEwgc3BlY2lmaWMgc3R5bGVzICovCgogICAgICA6aG9zdChbZGlyPSJydGwiXSkgW3BhcnQ9ImxhYmVsIl06bm90KFtlbXB0eV0pIHsKICAgICAgICBtYXJnaW46IDAuMTg3NWVtIDAuMzc1ZW0gMC4xODc1ZW0gMC44NzVlbTsKICAgICAgfQogICAgPC9zdHlsZT4KICA8L3RlbXBsYXRlPgo8L2RvbS1tb2R1bGU+PGRvbS1tb2R1bGUgaWQ9Imx1bW8tY2hlY2tib3gtZWZmZWN0cyI+CiAgPHRlbXBsYXRlPgogICAgPHN0eWxlPgogICAgICAvKiBUcmFuc2l0aW9uIHRoZSBjaGVja21hcmsgaWYgYWN0aXZhdGVkIHdpdGggdGhlIG1vdXNlIChkaXNhYmxlZCBmb3IgZ3JpZCBzZWxlY3QtYWxsIHRoaXMgd2F5KSAqLwogICAgICA6aG9zdCg6aG92ZXIpIFtwYXJ0PSJjaGVja2JveCJdOjphZnRlciB7CiAgICAgICAgdHJhbnNpdGlvbjogd2lkdGggMC4xcywgaGVpZ2h0IDAuMjVzOwogICAgICB9CgogICAgICAvKiBVc2VkIGZvciBhY3RpdmF0aW9uICJoYWxvIiAqLwogICAgICBbcGFydD0iY2hlY2tib3giXTo6YmVmb3JlIHsKICAgICAgICBjb2xvcjogdHJhbnNwYXJlbnQ7CiAgICAgICAgZGlzcGxheTogaW5saW5lLWJsb2NrOwogICAgICAgIHdpZHRoOiAxMDAlOwogICAgICAgIGhlaWdodDogMTAwJTsKICAgICAgICBib3JkZXItcmFkaXVzOiBpbmhlcml0OwogICAgICAgIGJhY2tncm91bmQtY29sb3I6IGluaGVyaXQ7CiAgICAgICAgdHJhbnNmb3JtOiBzY2FsZSgxLjQpOwogICAgICAgIG9wYWNpdHk6IDA7CiAgICAgICAgdHJhbnNpdGlvbjogdHJhbnNmb3JtIDAuMXMsIG9wYWNpdHkgMC44czsKICAgICAgfQoKICAgICAgLyogSG92ZXIgKi8KCiAgICAgIDpob3N0KDpub3QoW2NoZWNrZWRdKTpub3QoW2luZGV0ZXJtaW5hdGVdKTpub3QoW2Rpc2FibGVkXSk6aG92ZXIpIFtwYXJ0PSJjaGVja2JveCJdIHsKICAgICAgICBiYWNrZ3JvdW5kLWNvbG9yOiB2YXIoLS1sdW1vLWNvbnRyYXN0LTMwcGN0KTsKICAgICAgfQoKICAgICAgLyogRGlzYWJsZSBob3ZlciBmb3IgdG91Y2ggZGV2aWNlcyAqLwogICAgICBAbWVkaWEgKHBvaW50ZXI6IGNvYXJzZSkgewogICAgICAgIDpob3N0KDpub3QoW2NoZWNrZWRdKTpub3QoW2luZGV0ZXJtaW5hdGVdKTpub3QoW2Rpc2FibGVkXSk6aG92ZXIpIFtwYXJ0PSJjaGVja2JveCJdIHsKICAgICAgICAgIGJhY2tncm91bmQtY29sb3I6IHZhcigtLWx1bW8tY29udHJhc3QtMjBwY3QpOwogICAgICAgIH0KICAgICAgfQoKICAgICAgLyogQWN0aXZlICovCgogICAgICA6aG9zdChbYWN0aXZlXSkgW3BhcnQ9ImNoZWNrYm94Il0gewogICAgICAgIHRyYW5zZm9ybTogc2NhbGUoMC45KTsKICAgICAgICB0cmFuc2l0aW9uLWR1cmF0aW9uOiAwLjA1czsKICAgICAgfQoKICAgICAgOmhvc3QoW2FjdGl2ZV1bY2hlY2tlZF0pIFtwYXJ0PSJjaGVja2JveCJdIHsKICAgICAgICB0cmFuc2Zvcm06IHNjYWxlKDEuMSk7CiAgICAgIH0KCiAgICAgIDpob3N0KFthY3RpdmVdOm5vdChbY2hlY2tlZF0pKSBbcGFydD0iY2hlY2tib3giXTo6YmVmb3JlIHsKICAgICAgICB0cmFuc2l0aW9uLWR1cmF0aW9uOiAwLjAxcywgMC4wMXM7CiAgICAgICAgdHJhbnNmb3JtOiBzY2FsZSgwKTsKICAgICAgICBvcGFjaXR5OiAwLjQ7CiAgICAgIH0KICAgIDwvc3R5bGU+CiAgPC90ZW1wbGF0ZT4KPC9kb20tbW9kdWxlPmA7ZG9jdW1lbnQuaGVhZC5hcHBlbmRDaGlsZChnenQuY29udGVudCk7Y29uc3QgX3p0PXQ9PmNsYXNzIGV4dGVuZHMgdHtzdGF0aWMgZ2V0IHByb3BlcnRpZXMoKXtyZXR1cm57dGhlbWU6e3R5cGU6U3RyaW5nLHJlYWRPbmx5OiEwfX19YXR0cmlidXRlQ2hhbmdlZENhbGxiYWNrKHQsZSxuKXtzdXBlci5hdHRyaWJ1dGVDaGFuZ2VkQ2FsbGJhY2sodCxlLG4pLCJ0aGVtZSI9PT10JiZ0aGlzLl9zZXRUaGVtZShuKX19LHl6dD10PT5jbGFzcyBleHRlbmRzKF96dCh0KSl7c3RhdGljIGZpbmFsaXplKCl7c3VwZXIuZmluYWxpemUoKTtjb25zdCB0PXRoaXMucHJvdG90eXBlLl90ZW1wbGF0ZSxlPXRoaXMudGVtcGxhdGUmJnRoaXMudGVtcGxhdGUucGFyZW50RWxlbWVudCYmdGhpcy50ZW1wbGF0ZS5wYXJlbnRFbGVtZW50LmlkPT09dGhpcy5pcyxuPU9iamVjdC5nZXRQcm90b3R5cGVPZih0aGlzLnByb3RvdHlwZSkuX3RlbXBsYXRlO24mJiFlJiZBcnJheS5mcm9tKG4uY29udGVudC5xdWVyeVNlbGVjdG9yQWxsKCJzdHlsZVtpbmNsdWRlXSIpKS5mb3JFYWNoKChlPT57dGhpcy5faW5jbHVkZVN0eWxlKGUuZ2V0QXR0cmlidXRlKCJpbmNsdWRlIiksdCl9KSksdGhpcy5faW5jbHVkZU1hdGNoaW5nVGhlbWVzKHQpfXN0YXRpYyBfaW5jbHVkZU1hdGNoaW5nVGhlbWVzKHQpe2NvbnN0IGU9Qi5wcm90b3R5cGUubW9kdWxlcztsZXQgbj0hMTtjb25zdCBpPXRoaXMuaXMrIi1kZWZhdWx0LXRoZW1lIjtPYmplY3Qua2V5cyhlKS5zb3J0KCgodCxlKT0+e2NvbnN0IG49MD09PXQuaW5kZXhPZigidmFhZGluLSIpLGk9MD09PWUuaW5kZXhPZigidmFhZGluLSIpLHI9WyJsdW1vLSIsIm1hdGVyaWFsLSJdLG89ci5maWx0ZXIoKGU9PjA9PT10LmluZGV4T2YoZSkpKS5sZW5ndGg+MCxhPXIuZmlsdGVyKCh0PT4wPT09ZS5pbmRleE9mKHQpKSkubGVuZ3RoPjA7cmV0dXJuIG4hPT1pP24/LTE6MTpvIT09YT9vPy0xOjE6MH0pKS5mb3JFYWNoKChyPT57aWYociE9PWkpe2NvbnN0IGk9ZVtyXS5nZXRBdHRyaWJ1dGUoInRoZW1lLWZvciIpO2kmJmkuc3BsaXQoIiAiKS5mb3JFYWNoKChlPT57bmV3IFJlZ0V4cCgiXiIrZS5zcGxpdCgiKiIpLmpvaW4oIi4qIikrIiQiKS50ZXN0KHRoaXMuaXMpJiYobj0hMCx0aGlzLl9pbmNsdWRlU3R5bGUocix0KSl9KSl9fSkpLCFuJiZlW2ldJiZ0aGlzLl9pbmNsdWRlU3R5bGUoaSx0KX1zdGF0aWMgX2luY2x1ZGVTdHlsZSh0LGUpe2lmKGUmJiFlLmNvbnRlbnQucXVlcnlTZWxlY3Rvcihgc3R5bGVbaW5jbHVkZT0iJHt0fSJdYCkpe2NvbnN0IG49ZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgic3R5bGUiKTtuLnNldEF0dHJpYnV0ZSgiaW5jbHVkZSIsdCksZS5jb250ZW50LmFwcGVuZENoaWxkKG4pfX19Ci8qKgogICAgQGxpY2Vuc2UKICAgIENvcHlyaWdodCAoYykgMjAxNyBWYWFkaW4gTHRkLgogICAgVGhpcyBwcm9ncmFtIGlzIGF2YWlsYWJsZSB1bmRlciBBcGFjaGUgTGljZW5zZSBWZXJzaW9uIDIuMCwgYXZhaWxhYmxlIGF0IGh0dHBzOi8vdmFhZGluLmNvbS9saWNlbnNlLwogICAgKi87bGV0IHZ6dD0hMTt3aW5kb3cuYWRkRXZlbnRMaXN0ZW5lcigia2V5ZG93biIsKCgpPT57dnp0PSEwfSkse2NhcHR1cmU6ITB9KSx3aW5kb3cuYWRkRXZlbnRMaXN0ZW5lcigibW91c2Vkb3duIiwoKCk9Pnt2enQ9ITF9KSx7Y2FwdHVyZTohMH0pO2NvbnN0IGJ6dD10PT5jbGFzcyBleHRlbmRzKCh0PT5jbGFzcyBleHRlbmRzIHR7c3RhdGljIGdldCBwcm9wZXJ0aWVzKCl7dmFyIHQ9e3RhYmluZGV4Ont0eXBlOk51bWJlcix2YWx1ZTowLHJlZmxlY3RUb0F0dHJpYnV0ZTohMCxvYnNlcnZlcjoiX3RhYmluZGV4Q2hhbmdlZCJ9fTtyZXR1cm4gd2luZG93LlNoYWR5RE9NJiYodC50YWJJbmRleD10LnRhYmluZGV4KSx0fX0pKHQpKXtzdGF0aWMgZ2V0IHByb3BlcnRpZXMoKXtyZXR1cm57YXV0b2ZvY3VzOnt0eXBlOkJvb2xlYW59LF9wcmV2aW91c1RhYkluZGV4Ont0eXBlOk51bWJlcn0sZGlzYWJsZWQ6e3R5cGU6Qm9vbGVhbixvYnNlcnZlcjoiX2Rpc2FibGVkQ2hhbmdlZCIscmVmbGVjdFRvQXR0cmlidXRlOiEwfSxfaXNTaGlmdFRhYmJpbmc6e3R5cGU6Qm9vbGVhbn19fXJlYWR5KCl7dGhpcy5hZGRFdmVudExpc3RlbmVyKCJmb2N1c2luIiwodD0+e3QuY29tcG9zZWRQYXRoKClbMF09PT10aGlzP3RoaXMuY29udGFpbnModC5yZWxhdGVkVGFyZ2V0KXx8dGhpcy5fZm9jdXMoKTotMT09PXQuY29tcG9zZWRQYXRoKCkuaW5kZXhPZih0aGlzLmZvY3VzRWxlbWVudCl8fHRoaXMuZGlzYWJsZWR8fHRoaXMuX3NldEZvY3VzZWQoITApfSkpLHRoaXMuYWRkRXZlbnRMaXN0ZW5lcigiZm9jdXNvdXQiLCh0PT50aGlzLl9zZXRGb2N1c2VkKCExKSkpLHN1cGVyLnJlYWR5KCk7Y29uc3QgdD10PT57dC5jb21wb3NlZHx8dC50YXJnZXQuZGlzcGF0Y2hFdmVudChuZXcgQ3VzdG9tRXZlbnQodC50eXBlLHtidWJibGVzOiEwLGNvbXBvc2VkOiEwLGNhbmNlbGFibGU6ITF9KSl9O3RoaXMuc2hhZG93Um9vdC5hZGRFdmVudExpc3RlbmVyKCJmb2N1c2luIix0KSx0aGlzLnNoYWRvd1Jvb3QuYWRkRXZlbnRMaXN0ZW5lcigiZm9jdXNvdXQiLHQpLHRoaXMuYWRkRXZlbnRMaXN0ZW5lcigia2V5ZG93biIsKHQ9PntpZighdC5kZWZhdWx0UHJldmVudGVkJiY5PT09dC5rZXlDb2RlKWlmKHQuc2hpZnRLZXkpdGhpcy5faXNTaGlmdFRhYmJpbmc9ITAsSFRNTEVsZW1lbnQucHJvdG90eXBlLmZvY3VzLmFwcGx5KHRoaXMpLHRoaXMuX3NldEZvY3VzZWQoITEpLHNldFRpbWVvdXQoKCgpPT50aGlzLl9pc1NoaWZ0VGFiYmluZz0hMSksMCk7ZWxzZXtjb25zdCB0PXdpbmRvdy5uYXZpZ2F0b3IudXNlckFnZW50Lm1hdGNoKC9GaXJlZm94XC8oXGRcZFwuXGQpLyk7aWYodCYmcGFyc2VGbG9hdCh0WzFdKT49NjMmJnBhcnNlRmxvYXQodFsxXSk8NjYmJnRoaXMucGFyZW50Tm9kZSYmdGhpcy5uZXh0U2libGluZyl7Y29uc3QgdD1kb2N1bWVudC5jcmVhdGVFbGVtZW50KCJpbnB1dCIpO3Quc3R5bGUucG9zaXRpb249ImFic29sdXRlIix0LnN0eWxlLm9wYWNpdHk9IjAiLHQudGFiSW5kZXg9dGhpcy50YWJJbmRleCx0aGlzLnBhcmVudE5vZGUuaW5zZXJ0QmVmb3JlKHQsdGhpcy5uZXh0U2libGluZyksdC5mb2N1cygpLHQuYWRkRXZlbnRMaXN0ZW5lcigiZm9jdXNvdXQiLCgoKT0+dGhpcy5wYXJlbnROb2RlLnJlbW92ZUNoaWxkKHQpKSl9fX0pKSx0aGlzLmF1dG9mb2N1cyYmIXRoaXMuZGlzYWJsZWQmJndpbmRvdy5yZXF1ZXN0QW5pbWF0aW9uRnJhbWUoKCgpPT57dGhpcy5fZm9jdXMoKSx0aGlzLl9zZXRGb2N1c2VkKCEwKSx0aGlzLnNldEF0dHJpYnV0ZSgiZm9jdXMtcmluZyIsIiIpfSkpfWRpc2Nvbm5lY3RlZENhbGxiYWNrKCl7c3VwZXIuZGlzY29ubmVjdGVkQ2FsbGJhY2soKSx0aGlzLmhhc0F0dHJpYnV0ZSgiZm9jdXNlZCIpJiZ0aGlzLl9zZXRGb2N1c2VkKCExKX1fc2V0Rm9jdXNlZCh0KXt0P3RoaXMuc2V0QXR0cmlidXRlKCJmb2N1c2VkIiwiIik6dGhpcy5yZW1vdmVBdHRyaWJ1dGUoImZvY3VzZWQiKSx0JiZ2enQ/dGhpcy5zZXRBdHRyaWJ1dGUoImZvY3VzLXJpbmciLCIiKTp0aGlzLnJlbW92ZUF0dHJpYnV0ZSgiZm9jdXMtcmluZyIpfWdldCBmb2N1c0VsZW1lbnQoKXtyZXR1cm4gd2luZG93LmNvbnNvbGUud2FybihgUGxlYXNlIGltcGxlbWVudCB0aGUgJ2ZvY3VzRWxlbWVudCcgcHJvcGVydHkgaW4gPCR7dGhpcy5sb2NhbE5hbWV9PmApLHRoaXN9X2ZvY3VzKCl7dGhpcy5mb2N1c0VsZW1lbnQmJiF0aGlzLl9pc1NoaWZ0VGFiYmluZyYmKHRoaXMuZm9jdXNFbGVtZW50LmZvY3VzKCksdGhpcy5fc2V0Rm9jdXNlZCghMCkpfWZvY3VzKCl7dGhpcy5mb2N1c0VsZW1lbnQmJiF0aGlzLmRpc2FibGVkJiYodGhpcy5mb2N1c0VsZW1lbnQuZm9jdXMoKSx0aGlzLl9zZXRGb2N1c2VkKCEwKSl9Ymx1cigpe3RoaXMuZm9jdXNFbGVtZW50JiYodGhpcy5mb2N1c0VsZW1lbnQuYmx1cigpLHRoaXMuX3NldEZvY3VzZWQoITEpKX1fZGlzYWJsZWRDaGFuZ2VkKHQpe3RoaXMuZm9jdXNFbGVtZW50LmRpc2FibGVkPXQsdD8odGhpcy5ibHVyKCksdGhpcy5fcHJldmlvdXNUYWJJbmRleD10aGlzLnRhYmluZGV4LHRoaXMudGFiaW5kZXg9LTEsdGhpcy5zZXRBdHRyaWJ1dGUoImFyaWEtZGlzYWJsZWQiLCJ0cnVlIikpOih2b2lkIDAhPT10aGlzLl9wcmV2aW91c1RhYkluZGV4JiYodGhpcy50YWJpbmRleD10aGlzLl9wcmV2aW91c1RhYkluZGV4KSx0aGlzLnJlbW92ZUF0dHJpYnV0ZSgiYXJpYS1kaXNhYmxlZCIpKX1fdGFiaW5kZXhDaGFuZ2VkKHQpe3ZvaWQgMCE9PXQmJih0aGlzLmZvY3VzRWxlbWVudC50YWJJbmRleD10KSx0aGlzLmRpc2FibGVkJiZ0aGlzLnRhYmluZGV4JiYoLTEhPT10aGlzLnRhYmluZGV4JiYodGhpcy5fcHJldmlvdXNUYWJJbmRleD10aGlzLnRhYmluZGV4KSx0aGlzLnRhYmluZGV4PXQ9dm9pZCAwKSx3aW5kb3cuU2hhZHlET00mJnRoaXMuc2V0UHJvcGVydGllcyh7dGFiSW5kZXg6dCx0YWJpbmRleDp0fSl9Y2xpY2soKXt0aGlzLmRpc2FibGVkfHxzdXBlci5jbGljaygpfX0KLyoqCiAgICBAbGljZW5zZQogICAgQ29weXJpZ2h0IChjKSAyMDIwIFZhYWRpbiBMdGQuCiAgICBUaGlzIHByb2dyYW0gaXMgYXZhaWxhYmxlIHVuZGVyIEFwYWNoZSBMaWNlbnNlIFZlcnNpb24gMi4wLCBhdmFpbGFibGUgYXQgaHR0cHM6Ly92YWFkaW4uY29tL2xpY2Vuc2UvCiAgICAqLztjbGFzcyB4enR7c3RhdGljIGRldGVjdFNjcm9sbFR5cGUoKXtjb25zdCB0PWRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoImRpdiIpO3QudGV4dENvbnRlbnQ9IkFCQ0QiLHQuZGlyPSJydGwiLHQuc3R5bGUuZm9udFNpemU9IjE0cHgiLHQuc3R5bGUud2lkdGg9IjRweCIsdC5zdHlsZS5oZWlnaHQ9IjFweCIsdC5zdHlsZS5wb3NpdGlvbj0iYWJzb2x1dGUiLHQuc3R5bGUudG9wPSItMTAwMHB4Iix0LnN0eWxlLm92ZXJmbG93PSJzY3JvbGwiLGRvY3VtZW50LmJvZHkuYXBwZW5kQ2hpbGQodCk7bGV0IGU9InJldmVyc2UiO3JldHVybiB0LnNjcm9sbExlZnQ+MD9lPSJkZWZhdWx0IjoodC5zY3JvbGxMZWZ0PTIsdC5zY3JvbGxMZWZ0PDImJihlPSJuZWdhdGl2ZSIpKSxkb2N1bWVudC5ib2R5LnJlbW92ZUNoaWxkKHQpLGV9c3RhdGljIGdldE5vcm1hbGl6ZWRTY3JvbGxMZWZ0KHQsZSxuKXtjb25zdHtzY3JvbGxMZWZ0Oml9PW47aWYoInJ0bCIhPT1lfHwhdClyZXR1cm4gaTtzd2l0Y2godCl7Y2FzZSJuZWdhdGl2ZSI6cmV0dXJuIG4uc2Nyb2xsV2lkdGgtbi5jbGllbnRXaWR0aCtpO2Nhc2UicmV2ZXJzZSI6cmV0dXJuIG4uc2Nyb2xsV2lkdGgtbi5jbGllbnRXaWR0aC1pfXJldHVybiBpfXN0YXRpYyBzZXROb3JtYWxpemVkU2Nyb2xsTGVmdCh0LGUsbixpKXtpZigicnRsIj09PWUmJnQpc3dpdGNoKHQpe2Nhc2UibmVnYXRpdmUiOm4uc2Nyb2xsTGVmdD1uLmNsaWVudFdpZHRoLW4uc2Nyb2xsV2lkdGgraTticmVhaztjYXNlInJldmVyc2UiOm4uc2Nyb2xsTGVmdD1uLnNjcm9sbFdpZHRoLW4uY2xpZW50V2lkdGgtaTticmVhaztkZWZhdWx0Om4uc2Nyb2xsTGVmdD1pfWVsc2Ugbi5zY3JvbGxMZWZ0PWl9fWNvbnN0IHd6dD1bXTtsZXQgU3p0O25ldyBNdXRhdGlvbk9ic2VydmVyKChmdW5jdGlvbigpe2NvbnN0IHQ9RXp0KCk7d3p0LmZvckVhY2goKGU9PntNenQoZSx0KX0pKX0pKS5vYnNlcnZlKGRvY3VtZW50LmRvY3VtZW50RWxlbWVudCx7YXR0cmlidXRlczohMCxhdHRyaWJ1dGVGaWx0ZXI6WyJkaXIiXX0pO2NvbnN0IE16dD1mdW5jdGlvbih0LGUpe2U/dC5zZXRBdHRyaWJ1dGUoImRpciIsZSk6dC5yZW1vdmVBdHRyaWJ1dGUoImRpciIpfSxFenQ9ZnVuY3Rpb24oKXtyZXR1cm4gZG9jdW1lbnQuZG9jdW1lbnRFbGVtZW50LmdldEF0dHJpYnV0ZSgiZGlyIil9LFR6dD10PT5jbGFzcyBleHRlbmRzIHR7c3RhdGljIGdldCBwcm9wZXJ0aWVzKCl7cmV0dXJue2Rpcjp7dHlwZTpTdHJpbmcscmVhZE9ubHk6ITB9fX1zdGF0aWMgZmluYWxpemUoKXtzdXBlci5maW5hbGl6ZSgpLFN6dHx8KFN6dD14enQuZGV0ZWN0U2Nyb2xsVHlwZSgpKX1jb25uZWN0ZWRDYWxsYmFjaygpe3N1cGVyLmNvbm5lY3RlZENhbGxiYWNrKCksdGhpcy5oYXNBdHRyaWJ1dGUoImRpciIpfHwodGhpcy5fX3N1YnNjcmliZSgpLE16dCh0aGlzLEV6dCgpKSl9YXR0cmlidXRlQ2hhbmdlZENhbGxiYWNrKHQsZSxuKXtpZihzdXBlci5hdHRyaWJ1dGVDaGFuZ2VkQ2FsbGJhY2sodCxlLG4pLCJkaXIiIT09dClyZXR1cm47Y29uc3QgaT1uPT09RXp0KCkmJi0xPT09d3p0LmluZGV4T2YodGhpcykscj0hbiYmZSYmLTE9PT13enQuaW5kZXhPZih0aGlzKSxvPW4hPT1FenQoKSYmZT09PUV6dCgpO2l8fHI/KHRoaXMuX19zdWJzY3JpYmUoKSxNenQodGhpcyxFenQoKSkpOm8mJnRoaXMuX19zdWJzY3JpYmUoITEpfWRpc2Nvbm5lY3RlZENhbGxiYWNrKCl7c3VwZXIuZGlzY29ubmVjdGVkQ2FsbGJhY2soKSx0aGlzLl9fc3Vic2NyaWJlKCExKSx0aGlzLnJlbW92ZUF0dHJpYnV0ZSgiZGlyIil9X19zdWJzY3JpYmUodD0hMCl7dD8tMT09PXd6dC5pbmRleE9mKHRoaXMpJiZ3enQucHVzaCh0aGlzKTp3enQuaW5kZXhPZih0aGlzKT4tMSYmd3p0LnNwbGljZSh3enQuaW5kZXhPZih0aGlzKSwxKX1fX2dldE5vcm1hbGl6ZWRTY3JvbGxMZWZ0KHQpe3JldHVybiB4enQuZ2V0Tm9ybWFsaXplZFNjcm9sbExlZnQoU3p0LHRoaXMuZ2V0QXR0cmlidXRlKCJkaXIiKXx8Imx0ciIsdCl9X19zZXROb3JtYWxpemVkU2Nyb2xsTGVmdCh0LGUpe3JldHVybiB4enQuc2V0Tm9ybWFsaXplZFNjcm9sbExlZnQoU3p0LHRoaXMuZ2V0QXR0cmlidXRlKCJkaXIiKXx8Imx0ciIsdCxlKX19LEF6dD0vXC9cKlwqXHMrdmFhZGluLWRldi1tb2RlOnN0YXJ0KFtcc1xTXSopdmFhZGluLWRldi1tb2RlOmVuZFxzK1wqXCpcLy9pLEN6dD13aW5kb3cuVmFhZGluJiZ3aW5kb3cuVmFhZGluLkZsb3cmJndpbmRvdy5WYWFkaW4uRmxvdy5jbGllbnRzO2Z1bmN0aW9uIGt6dCh0LGUpe2lmKCJmdW5jdGlvbiIhPXR5cGVvZiB0KXJldHVybjtjb25zdCBuPUF6dC5leGVjKHQudG9TdHJpbmcoKSk7aWYobil0cnl7dD1uZXcgRnVuY3Rpb24oblsxXSl9Y2F0Y2godCl7Y29uc29sZS5sb2coInZhYWRpbi1kZXZlbG9wbWVudC1tb2RlLWRldGVjdG9yOiB1bmNvbW1lbnRBbmRSdW4oKSBmYWlsZWQiLHQpfXJldHVybiB0KGUpfWZ1bmN0aW9uIEx6dCgpe313aW5kb3cuVmFhZGluPXdpbmRvdy5WYWFkaW58fHt9LHZvaWQgMD09PXdpbmRvdy5WYWFkaW4uZGV2ZWxvcG1lbnRNb2RlJiYod2luZG93LlZhYWRpbi5kZXZlbG9wbWVudE1vZGU9KGZ1bmN0aW9uIFB6dCgpe3RyeXtyZXR1cm4hIShmdW5jdGlvbiB0KCl7cmV0dXJuIGxvY2FsU3RvcmFnZS5nZXRJdGVtKCJ2YWFkaW4uZGV2ZWxvcG1lbnRtb2RlLmZvcmNlIil9KSgpfHwhIShmdW5jdGlvbiBlKCl7cmV0dXJuWyJsb2NhbGhvc3QiLCIxMjcuMC4wLjEiXS5pbmRleE9mKHdpbmRvdy5sb2NhdGlvbi5ob3N0bmFtZSk+PTB9KSgpJiYoQ3p0PyEoZnVuY3Rpb24gbigpe3JldHVybiEhKEN6dCYmT2JqZWN0LmtleXMoQ3p0KS5tYXAoKHQ9PkN6dFt0XSkpLmZpbHRlcigodD0+dC5wcm9kdWN0aW9uTW9kZSkpLmxlbmd0aD4wKX0pKCk6IShmdW5jdGlvbiBpKCl7cmV0dXJuIGt6dCgoZnVuY3Rpb24gdCgpe3JldHVybiEwfSkpfSkoKSl9Y2F0Y2godCl7cmV0dXJuITF9fSkoKSk7Y29uc3QgSXp0PWZ1bmN0aW9uKCl7cmV0dXJuKGZ1bmN0aW9uKHQsZSl7aWYod2luZG93LlZhYWRpbi5kZXZlbG9wbWVudE1vZGUpcmV0dXJuIGt6dCh0LHZvaWQgMCl9KShMenQpfTtsZXQgTnp0O3dpbmRvdy5WYWFkaW58fCh3aW5kb3cuVmFhZGluPXt9KSx3aW5kb3cuVmFhZGluLnJlZ2lzdHJhdGlvbnM9d2luZG93LlZhYWRpbi5yZWdpc3RyYXRpb25zfHxbXSx3aW5kb3cuVmFhZGluLmRldmVsb3BtZW50TW9kZUNhbGxiYWNrPXdpbmRvdy5WYWFkaW4uZGV2ZWxvcG1lbnRNb2RlQ2FsbGJhY2t8fHt9LHdpbmRvdy5WYWFkaW4uZGV2ZWxvcG1lbnRNb2RlQ2FsbGJhY2tbInZhYWRpbi11c2FnZS1zdGF0aXN0aWNzIl09ZnVuY3Rpb24oKXtJenQmJkl6dCgpfTtjb25zdCBPenQ9bmV3IFNldCxSenQ9dD0+Y2xhc3MgZXh0ZW5kcyhUenQodCkpe3N0YXRpYyBmaW5hbGl6ZSgpe3N1cGVyLmZpbmFsaXplKCk7Y29uc3R7aXM6dH09dGhpczt0JiYhT3p0Lmhhcyh0KSYmKHdpbmRvdy5WYWFkaW4ucmVnaXN0cmF0aW9ucy5wdXNoKHRoaXMpLE96dC5hZGQodCksd2luZG93LlZhYWRpbi5kZXZlbG9wbWVudE1vZGVDYWxsYmFjayYmKE56dD1Fbi5kZWJvdW5jZShOenQseXQsKCgpPT57d2luZG93LlZhYWRpbi5kZXZlbG9wbWVudE1vZGVDYWxsYmFja1sidmFhZGluLXVzYWdlLXN0YXRpc3RpY3MiXSgpfSkpLEFuKE56dCkpKX1jb25zdHJ1Y3Rvcigpe3N1cGVyKCksbnVsbD09PWRvY3VtZW50LmRvY3R5cGUmJmNvbnNvbGUud2FybignVmFhZGluIGNvbXBvbmVudHMgcmVxdWlyZSB0aGUgInN0YW5kYXJkcyBtb2RlIiBkZWNsYXJhdGlvbi4gUGxlYXNlIGFkZCA8IURPQ1RZUEUgaHRtbD4gdG8gdGhlIEhUTUwgZG9jdW1lbnQuJyl9fQovKioKICAgIEBsaWNlbnNlCiAgICBDb3B5cmlnaHQgKGMpIDIwMTcgVmFhZGluIEx0ZC4KICAgIFRoaXMgcHJvZ3JhbSBpcyBhdmFpbGFibGUgdW5kZXIgQXBhY2hlIExpY2Vuc2UgVmVyc2lvbiAyLjAsIGF2YWlsYWJsZSBhdCBodHRwczovL3ZhYWRpbi5jb20vbGljZW5zZS8KICAgICovO2NsYXNzIHp6dCBleHRlbmRzKFJ6dChienQoeXp0KGRpKHllKSkpKSl7c3RhdGljIGdldCB0ZW1wbGF0ZSgpe3JldHVybiBfZWAKICAgIDxzdHlsZT4KICAgICAgOmhvc3QgewogICAgICAgIGRpc3BsYXk6IGlubGluZS1ibG9jazsKICAgICAgfQoKICAgICAgOmhvc3QoW2hpZGRlbl0pIHsKICAgICAgICBkaXNwbGF5OiBub25lICFpbXBvcnRhbnQ7CiAgICAgIH0KCiAgICAgIGxhYmVsIHsKICAgICAgICBkaXNwbGF5OiBpbmxpbmUtZmxleDsKICAgICAgICBhbGlnbi1pdGVtczogYmFzZWxpbmU7CiAgICAgICAgb3V0bGluZTogbm9uZTsKICAgICAgfQoKICAgICAgW3BhcnQ9ImNoZWNrYm94Il0gewogICAgICAgIHBvc2l0aW9uOiByZWxhdGl2ZTsKICAgICAgICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7CiAgICAgICAgZmxleDogbm9uZTsKICAgICAgfQoKICAgICAgaW5wdXRbdHlwZT0iY2hlY2tib3giXSB7CiAgICAgICAgcG9zaXRpb246IGFic29sdXRlOwogICAgICAgIHRvcDogMDsKICAgICAgICBsZWZ0OiAwOwogICAgICAgIHJpZ2h0OiAwOwogICAgICAgIHdpZHRoOiAxMDAlOwogICAgICAgIGhlaWdodDogMTAwJTsKICAgICAgICBvcGFjaXR5OiAwOwogICAgICAgIGN1cnNvcjogaW5oZXJpdDsKICAgICAgICBtYXJnaW46IDA7CiAgICAgIH0KCiAgICAgIDpob3N0KFtkaXNhYmxlZF0pIHsKICAgICAgICAtd2Via2l0LXRhcC1oaWdobGlnaHQtY29sb3I6IHRyYW5zcGFyZW50OwogICAgICB9CiAgICA8L3N0eWxlPgoKICAgIDxsYWJlbD4KICAgICAgPHNwYW4gcGFydD0iY2hlY2tib3giPgogICAgICAgIDxpbnB1dCB0eXBlPSJjaGVja2JveCIgY2hlY2tlZD0ie3tjaGVja2VkOjpjaGFuZ2V9fSIgZGlzYWJsZWRcJD0iW1tkaXNhYmxlZF1dIiBpbmRldGVybWluYXRlPSJ7e2luZGV0ZXJtaW5hdGU6OmNoYW5nZX19IiByb2xlPSJwcmVzZW50YXRpb24iIHRhYmluZGV4PSItMSI+CiAgICAgIDwvc3Bhbj4KCiAgICAgIDxzcGFuIHBhcnQ9ImxhYmVsIj4KICAgICAgICA8c2xvdD48L3Nsb3Q+CiAgICAgIDwvc3Bhbj4KICAgIDwvbGFiZWw+CmB9c3RhdGljIGdldCBpcygpe3JldHVybiJ2YWFkaW4tY2hlY2tib3gifXN0YXRpYyBnZXQgdmVyc2lvbigpe3JldHVybiIyLjUuMCJ9c3RhdGljIGdldCBwcm9wZXJ0aWVzKCl7cmV0dXJue2NoZWNrZWQ6e3R5cGU6Qm9vbGVhbix2YWx1ZTohMSxub3RpZnk6ITAsb2JzZXJ2ZXI6Il9jaGVja2VkQ2hhbmdlZCIscmVmbGVjdFRvQXR0cmlidXRlOiEwfSxpbmRldGVybWluYXRlOnt0eXBlOkJvb2xlYW4sbm90aWZ5OiEwLG9ic2VydmVyOiJfaW5kZXRlcm1pbmF0ZUNoYW5nZWQiLHJlZmxlY3RUb0F0dHJpYnV0ZTohMCx2YWx1ZTohMX0sdmFsdWU6e3R5cGU6U3RyaW5nLHZhbHVlOiJvbiJ9LF9uYXRpdmVDaGVja2JveDp7dHlwZTpPYmplY3R9fX1jb25zdHJ1Y3Rvcigpe3N1cGVyKCl9Z2V0IG5hbWUoKXtyZXR1cm4gdGhpcy5jaGVja2VkP3RoaXMuX3N0b3JlZE5hbWU6IiJ9c2V0IG5hbWUodCl7dGhpcy5fc3RvcmVkTmFtZT10fXJlYWR5KCl7c3VwZXIucmVhZHkoKSx0aGlzLnNldEF0dHJpYnV0ZSgicm9sZSIsImNoZWNrYm94IiksdGhpcy5fbmF0aXZlQ2hlY2tib3g9dGhpcy5zaGFkb3dSb290LnF1ZXJ5U2VsZWN0b3IoJ2lucHV0W3R5cGU9ImNoZWNrYm94Il0nKSx0aGlzLmFkZEV2ZW50TGlzdGVuZXIoImNsaWNrIix0aGlzLl9oYW5kbGVDbGljay5iaW5kKHRoaXMpKSx0aGlzLl9hZGRBY3RpdmVMaXN0ZW5lcnMoKTtjb25zdCB0PXRoaXMuZ2V0QXR0cmlidXRlKCJuYW1lIik7dCYmKHRoaXMubmFtZT10KSx0aGlzLnNoYWRvd1Jvb3QucXVlcnlTZWxlY3RvcignW3BhcnR+PSJsYWJlbCJdJykucXVlcnlTZWxlY3Rvcigic2xvdCIpLmFkZEV2ZW50TGlzdGVuZXIoInNsb3RjaGFuZ2UiLHRoaXMuX3VwZGF0ZUxhYmVsQXR0cmlidXRlLmJpbmQodGhpcykpLHRoaXMuX3VwZGF0ZUxhYmVsQXR0cmlidXRlKCl9X3VwZGF0ZUxhYmVsQXR0cmlidXRlKCl7Y29uc3QgdD10aGlzLnNoYWRvd1Jvb3QucXVlcnlTZWxlY3RvcignW3BhcnR+PSJsYWJlbCJdJyksZT10LmZpcnN0RWxlbWVudENoaWxkLmFzc2lnbmVkTm9kZXMoKTt0aGlzLl9pc0Fzc2lnbmVkTm9kZXNFbXB0eShlKT90LnNldEF0dHJpYnV0ZSgiZW1wdHkiLCIiKTp0LnJlbW92ZUF0dHJpYnV0ZSgiZW1wdHkiKX1faXNBc3NpZ25lZE5vZGVzRW1wdHkodCl7cmV0dXJuIDA9PT10Lmxlbmd0aHx8MT09dC5sZW5ndGgmJnRbMF0ubm9kZVR5cGU9PU5vZGUuVEVYVF9OT0RFJiYiIj09PXRbMF0udGV4dENvbnRlbnQudHJpbSgpfV9jaGVja2VkQ2hhbmdlZCh0KXt0aGlzLnNldEF0dHJpYnV0ZSgiYXJpYS1jaGVja2VkIix0aGlzLmluZGV0ZXJtaW5hdGU/Im1peGVkIjpCb29sZWFuKHQpKX1faW5kZXRlcm1pbmF0ZUNoYW5nZWQodCl7dGhpcy5zZXRBdHRyaWJ1dGUoImFyaWEtY2hlY2tlZCIsdD8ibWl4ZWQiOnRoaXMuY2hlY2tlZCl9X2FkZEFjdGl2ZUxpc3RlbmVycygpe3RoaXMuX2FkZEV2ZW50TGlzdGVuZXJUb05vZGUodGhpcywiZG93biIsKHQ9Pnt0aGlzLl9faW50ZXJhY3Rpb25zQWxsb3dlZCh0KSYmdGhpcy5zZXRBdHRyaWJ1dGUoImFjdGl2ZSIsIiIpfSkpLHRoaXMuX2FkZEV2ZW50TGlzdGVuZXJUb05vZGUodGhpcywidXAiLCgoKT0+dGhpcy5yZW1vdmVBdHRyaWJ1dGUoImFjdGl2ZSIpKSksdGhpcy5hZGRFdmVudExpc3RlbmVyKCJrZXlkb3duIiwodD0+e3RoaXMuX19pbnRlcmFjdGlvbnNBbGxvd2VkKHQpJiYzMj09PXQua2V5Q29kZSYmKHQucHJldmVudERlZmF1bHQoKSx0aGlzLnNldEF0dHJpYnV0ZSgiYWN0aXZlIiwiIikpfSkpLHRoaXMuYWRkRXZlbnRMaXN0ZW5lcigia2V5dXAiLCh0PT57dGhpcy5fX2ludGVyYWN0aW9uc0FsbG93ZWQodCkmJjMyPT09dC5rZXlDb2RlJiYodC5wcmV2ZW50RGVmYXVsdCgpLHRoaXMuX3RvZ2dsZUNoZWNrZWQoKSx0aGlzLnJlbW92ZUF0dHJpYnV0ZSgiYWN0aXZlIiksdGhpcy5pbmRldGVybWluYXRlJiYodGhpcy5pbmRldGVybWluYXRlPSExKSl9KSl9Z2V0IGZvY3VzRWxlbWVudCgpe3JldHVybiB0aGlzLnNoYWRvd1Jvb3QucXVlcnlTZWxlY3RvcigiaW5wdXQiKX1fX2ludGVyYWN0aW9uc0FsbG93ZWQodCl7cmV0dXJuIXRoaXMuZGlzYWJsZWQmJiJhIiE9PXQudGFyZ2V0LmxvY2FsTmFtZX1faGFuZGxlQ2xpY2sodCl7dGhpcy5fX2ludGVyYWN0aW9uc0FsbG93ZWQodCkmJih0aGlzLmluZGV0ZXJtaW5hdGU/KHRoaXMuaW5kZXRlcm1pbmF0ZT0hMSx0LnByZXZlbnREZWZhdWx0KCksdGhpcy5fdG9nZ2xlQ2hlY2tlZCgpKTp0LmNvbXBvc2VkUGF0aCgpWzBdIT09dGhpcy5fbmF0aXZlQ2hlY2tib3gmJih0LnByZXZlbnREZWZhdWx0KCksdGhpcy5fdG9nZ2xlQ2hlY2tlZCgpKSl9X3RvZ2dsZUNoZWNrZWQoKXt0aGlzLmNoZWNrZWQ9IXRoaXMuY2hlY2tlZCx0aGlzLmRpc3BhdGNoRXZlbnQobmV3IEN1c3RvbUV2ZW50KCJjaGFuZ2UiLHtjb21wb3NlZDohMSxidWJibGVzOiEwfSkpfX1jdXN0b21FbGVtZW50cy5kZWZpbmUoenp0LmlzLHp6dCk7Y29uc3QgRHp0PV9lYDxkb20tbW9kdWxlIGlkPSJsdW1vLWdyaWQiIHRoZW1lLWZvcj0idmFhZGluLWdyaWQiPgogIDx0ZW1wbGF0ZT4KICAgIDxzdHlsZT4KICAgICAgOmhvc3QgewogICAgICAgIGZvbnQtZmFtaWx5OiB2YXIoLS1sdW1vLWZvbnQtZmFtaWx5KTsKICAgICAgICBmb250LXNpemU6IHZhcigtLWx1bW8tZm9udC1zaXplLW0pOwogICAgICAgIGxpbmUtaGVpZ2h0OiB2YXIoLS1sdW1vLWxpbmUtaGVpZ2h0LXMpOwogICAgICAgIGNvbG9yOiB2YXIoLS1sdW1vLWJvZHktdGV4dC1jb2xvcik7CiAgICAgICAgYmFja2dyb3VuZC1jb2xvcjogdmFyKC0tbHVtby1iYXNlLWNvbG9yKTsKICAgICAgICBib3gtc2l6aW5nOiBib3JkZXItYm94OwogICAgICAgIC13ZWJraXQtdGV4dC1zaXplLWFkanVzdDogMTAwJTsKICAgICAgICAtd2Via2l0LXRhcC1oaWdobGlnaHQtY29sb3I6IHRyYW5zcGFyZW50OwogICAgICAgIC13ZWJraXQtZm9udC1zbW9vdGhpbmc6IGFudGlhbGlhc2VkOwogICAgICAgIC1tb3otb3N4LWZvbnQtc21vb3RoaW5nOiBncmF5c2NhbGU7CgogICAgICAgIC8qIEZvciBpbnRlcm5hbCB1c2Ugb25seSAqLwogICAgICAgIC0tX2x1bW8tZ3JpZC1ib3JkZXItY29sb3I6IHZhcigtLWx1bW8tY29udHJhc3QtMjBwY3QpOwogICAgICAgIC0tX2x1bW8tZ3JpZC1zZWNvbmRhcnktYm9yZGVyLWNvbG9yOiB2YXIoLS1sdW1vLWNvbnRyYXN0LTEwcGN0KTsKICAgICAgICAtLV9sdW1vLWdyaWQtYm9yZGVyLXdpZHRoOiAxcHg7CiAgICAgICAgLS1fbHVtby1ncmlkLXNlbGVjdGVkLXJvdy1jb2xvcjogdmFyKC0tbHVtby1wcmltYXJ5LWNvbG9yLTEwcGN0KTsKICAgICAgfQoKICAgICAgLyogTm8gKG91dGVyKSBib3JkZXIgKi8KCiAgICAgIDpob3N0KDpub3QoW3RoZW1lfj0ibm8tYm9yZGVyIl0pKSB7CiAgICAgICAgYm9yZGVyOiB2YXIoLS1fbHVtby1ncmlkLWJvcmRlci13aWR0aCkgc29saWQgdmFyKC0tX2x1bW8tZ3JpZC1ib3JkZXItY29sb3IpOwogICAgICB9CgogICAgICAvKiBDZWxsIHN0eWxlcyAqLwoKICAgICAgW3BhcnR+PSJjZWxsIl0gewogICAgICAgIG1pbi1oZWlnaHQ6IHZhcigtLWx1bW8tc2l6ZS1tKTsKICAgICAgICBiYWNrZ3JvdW5kLWNvbG9yOiB2YXIoLS1sdW1vLWJhc2UtY29sb3IpOwogICAgICB9CgogICAgICBbcGFydH49ImNlbGwiXSA6OnNsb3R0ZWQodmFhZGluLWdyaWQtY2VsbC1jb250ZW50KSB7CiAgICAgICAgY3Vyc29yOiBkZWZhdWx0OwogICAgICAgIHBhZGRpbmc6IHZhcigtLWx1bW8tc3BhY2UteHMpIHZhcigtLWx1bW8tc3BhY2UtbSk7CiAgICAgIH0KCiAgICAgIC8qIEFwcGx5IHJvdyBib3JkZXJzIGJ5IGRlZmF1bHQgYW5kIGludHJvZHVjZSB0aGUgIm5vLXJvdy1ib3JkZXJzIiB2YXJpYW50ICovCiAgICAgIDpob3N0KDpub3QoW3RoZW1lfj0ibm8tcm93LWJvcmRlcnMiXSkpIFtwYXJ0fj0iY2VsbCJdOm5vdChbcGFydH49ImRldGFpbHMtY2VsbCJdKSB7CiAgICAgICAgYm9yZGVyLXRvcDogdmFyKC0tX2x1bW8tZ3JpZC1ib3JkZXItd2lkdGgpIHNvbGlkIHZhcigtLV9sdW1vLWdyaWQtc2Vjb25kYXJ5LWJvcmRlci1jb2xvcik7CiAgICAgIH0KCiAgICAgIC8qIEhpZGUgZmlyc3QgYm9keSByb3cgdG9wIGJvcmRlciAqLwogICAgICA6aG9zdCg6bm90KFt0aGVtZX49Im5vLXJvdy1ib3JkZXJzIl0pKSBbcGFydD0icm93Il1bZmlyc3RdIFtwYXJ0fj0iY2VsbCJdOm5vdChbcGFydH49ImRldGFpbHMtY2VsbCJdKSB7CiAgICAgICAgYm9yZGVyLXRvcDogMDsKICAgICAgICBtaW4taGVpZ2h0OiBjYWxjKHZhcigtLWx1bW8tc2l6ZS1tKSAtIHZhcigtLV9sdW1vLWdyaWQtYm9yZGVyLXdpZHRoKSk7CiAgICAgIH0KCiAgICAgIC8qIEZvY3VzLXJpbmcgKi8KCiAgICAgIFtwYXJ0fj0iY2VsbCJdOmZvY3VzIHsKICAgICAgICBvdXRsaW5lOiBub25lOwogICAgICB9CgogICAgICA6aG9zdChbbmF2aWdhdGluZ10pIFtwYXJ0fj0iY2VsbCJdOmZvY3VzOjpiZWZvcmUgewogICAgICAgIGNvbnRlbnQ6ICIiOwogICAgICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTsKICAgICAgICB0b3A6IDA7CiAgICAgICAgcmlnaHQ6IDA7CiAgICAgICAgYm90dG9tOiAwOwogICAgICAgIGxlZnQ6IDA7CiAgICAgICAgcG9pbnRlci1ldmVudHM6IG5vbmU7CiAgICAgICAgYm94LXNoYWRvdzogaW5zZXQgMCAwIDAgMnB4IHZhcigtLWx1bW8tcHJpbWFyeS1jb2xvci01MHBjdCk7CiAgICAgIH0KCiAgICAgIC8qIERyYWcgYW5kIERyb3Agc3R5bGVzICovCiAgICAgIDpob3N0KFtkcmFnb3Zlcl0pOjphZnRlciB7CiAgICAgICAgY29udGVudDogIiI7CiAgICAgICAgcG9zaXRpb246IGFic29sdXRlOwogICAgICAgIHotaW5kZXg6IDEwMDsKICAgICAgICB0b3A6IDA7CiAgICAgICAgcmlnaHQ6IDA7CiAgICAgICAgYm90dG9tOiAwOwogICAgICAgIGxlZnQ6IDA7CiAgICAgICAgcG9pbnRlci1ldmVudHM6IG5vbmU7CiAgICAgICAgYm94LXNoYWRvdzogaW5zZXQgMCAwIDAgMnB4IHZhcigtLWx1bW8tcHJpbWFyeS1jb2xvci01MHBjdCk7CiAgICAgIH0KCiAgICAgIFtwYXJ0fj0icm93Il1bZHJhZ292ZXJdIHsKICAgICAgICB6LWluZGV4OiAxMDAgIWltcG9ydGFudDsKICAgICAgfQoKICAgICAgW3BhcnR+PSJyb3ciXVtkcmFnb3Zlcl0gW3BhcnR+PSJjZWxsIl0gewogICAgICAgIG92ZXJmbG93OiB2aXNpYmxlOwogICAgICB9CgogICAgICBbcGFydH49InJvdyJdW2RyYWdvdmVyXSBbcGFydH49ImNlbGwiXTo6YWZ0ZXIgewogICAgICAgIGNvbnRlbnQ6ICIiOwogICAgICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTsKICAgICAgICB0b3A6IDA7CiAgICAgICAgcmlnaHQ6IDA7CiAgICAgICAgYm90dG9tOiAwOwogICAgICAgIGxlZnQ6IDA7CiAgICAgICAgaGVpZ2h0OiBjYWxjKHZhcigtLV9sdW1vLWdyaWQtYm9yZGVyLXdpZHRoKSArIDJweCk7CiAgICAgICAgcG9pbnRlci1ldmVudHM6IG5vbmU7CiAgICAgICAgYmFja2dyb3VuZDogdmFyKC0tbHVtby1wcmltYXJ5LWNvbG9yLTUwcGN0KTsKICAgICAgfQoKICAgICAgOmhvc3QoW3RoZW1lfj0ibm8tcm93LWJvcmRlcnMiXSkgW2RyYWdvdmVyXSBbcGFydH49ImNlbGwiXTo6YWZ0ZXIgewogICAgICAgIGhlaWdodDogMnB4OwogICAgICB9CgogICAgICBbcGFydH49InJvdyJdW2RyYWdvdmVyPSJiZWxvdyJdIFtwYXJ0fj0iY2VsbCJdOjphZnRlciB7CiAgICAgICAgdG9wOiAxMDAlOwogICAgICAgIGJvdHRvbTogYXV0bzsKICAgICAgICBtYXJnaW4tdG9wOiAtMXB4OwogICAgICB9CgogICAgICBbcGFydH49InJvdyJdW2RyYWdvdmVyPSJhYm92ZSJdIFtwYXJ0fj0iY2VsbCJdOjphZnRlciB7CiAgICAgICAgdG9wOiBhdXRvOwogICAgICAgIGJvdHRvbTogMTAwJTsKICAgICAgICBtYXJnaW4tYm90dG9tOiAtMXB4OwogICAgICB9CgogICAgICBbcGFydH49InJvdyJdW2RldGFpbHMtb3BlbmVkXVtkcmFnb3Zlcj0iYmVsb3ciXSBbcGFydH49ImNlbGwiXTpub3QoW3BhcnR+PSJkZXRhaWxzLWNlbGwiXSk6OmFmdGVyLAogICAgICBbcGFydH49InJvdyJdW2RldGFpbHMtb3BlbmVkXVtkcmFnb3Zlcj0iYWJvdmUiXSBbcGFydH49ImRldGFpbHMtY2VsbCJdOjphZnRlciB7CiAgICAgICAgZGlzcGxheTogbm9uZTsKICAgICAgfQoKICAgICAgW3BhcnR+PSJyb3ciXVtkcmFnb3Zlcl1bZHJhZ292ZXI9Im9uLXRvcCJdIFtwYXJ0fj0iY2VsbCJdOjphZnRlciB7CiAgICAgICAgaGVpZ2h0OiAxMDAlOwogICAgICB9CgogICAgICBbcGFydH49InJvdyJdW2RyYWdzdGFydF0gewogICAgICAgIC8qIEFkZCBib3R0b20tc3BhY2UgdG8gdGhlIHJvdyBzbyB0aGUgZHJhZyBudW1iZXIgZG9lc24ndCBnZXQgY2xpcHBlZC4gTmVlZGVkIGZvciBJRS9FZGdlICovCiAgICAgICAgYm9yZGVyLWJvdHRvbTogMTAwcHggc29saWQgdHJhbnNwYXJlbnQ7CiAgICAgICAgei1pbmRleDogMTAwICFpbXBvcnRhbnQ7CiAgICAgICAgb3BhY2l0eTogMC45OwogICAgICB9CgogICAgICBbcGFydH49InJvdyJdW2RyYWdzdGFydF0gW3BhcnR+PSJjZWxsIl0gewogICAgICAgIGJvcmRlcjogbm9uZSAhaW1wb3J0YW50OwogICAgICAgIGJveC1zaGFkb3c6IG5vbmUgIWltcG9ydGFudDsKICAgICAgfQoKICAgICAgW3BhcnR+PSJyb3ciXVtkcmFnc3RhcnRdIFtwYXJ0fj0iY2VsbCJdW2xhc3QtY29sdW1uXSB7CiAgICAgICAgYm9yZGVyLXJhZGl1czogMCB2YXIoLS1sdW1vLWJvcmRlci1yYWRpdXMtcykgdmFyKC0tbHVtby1ib3JkZXItcmFkaXVzLXMpIDA7CiAgICAgIH0KCiAgICAgIFtwYXJ0fj0icm93Il1bZHJhZ3N0YXJ0XSBbcGFydH49ImNlbGwiXVtmaXJzdC1jb2x1bW5dIHsKICAgICAgICBib3JkZXItcmFkaXVzOiB2YXIoLS1sdW1vLWJvcmRlci1yYWRpdXMtcykgMCAwIHZhcigtLWx1bW8tYm9yZGVyLXJhZGl1cy1zKTsKICAgICAgfQoKICAgICAgW2lvc10gW3BhcnR+PSJyb3ciXVtkcmFnc3RhcnRdIFtwYXJ0fj0iY2VsbCJdIHsKICAgICAgICBiYWNrZ3JvdW5kOiB2YXIoLS1sdW1vLXByaW1hcnktY29sb3ItNTBwY3QpOwogICAgICB9CgogICAgICAjc2Nyb2xsZXI6bm90KFtpb3NdKSBbcGFydH49InJvdyJdW2RyYWdzdGFydF06bm90KFtkcmFnc3RhcnQ9IiJdKTo6YWZ0ZXIgewogICAgICAgIGRpc3BsYXk6IGJsb2NrOwogICAgICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTsKICAgICAgICBsZWZ0OiB2YXIoLS1fZ3JpZC1kcmFnLXN0YXJ0LXgpOwogICAgICAgIHRvcDogdmFyKC0tX2dyaWQtZHJhZy1zdGFydC15KTsKICAgICAgICB6LWluZGV4OiAxMDA7CiAgICAgICAgY29udGVudDogYXR0cihkcmFnc3RhcnQpOwogICAgICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7CiAgICAgICAganVzdGlmeS1jb250ZW50OiBjZW50ZXI7CiAgICAgICAgYm94LXNpemluZzogYm9yZGVyLWJveDsKICAgICAgICBwYWRkaW5nOiBjYWxjKHZhcigtLWx1bW8tc3BhY2UteHMpICogMC44KTsKICAgICAgICBjb2xvcjogdmFyKC0tbHVtby1lcnJvci1jb250cmFzdC1jb2xvcik7CiAgICAgICAgYmFja2dyb3VuZC1jb2xvcjogdmFyKC0tbHVtby1lcnJvci1jb2xvcik7CiAgICAgICAgYm9yZGVyLXJhZGl1czogdmFyKC0tbHVtby1ib3JkZXItcmFkaXVzLW0pOwogICAgICAgIGZvbnQtZmFtaWx5OiB2YXIoLS1sdW1vLWZvbnQtZmFtaWx5KTsKICAgICAgICBmb250LXNpemU6IHZhcigtLWx1bW8tZm9udC1zaXplLXh4cyk7CiAgICAgICAgbGluZS1oZWlnaHQ6IDE7CiAgICAgICAgZm9udC13ZWlnaHQ6IDUwMDsKICAgICAgICB0ZXh0LXRyYW5zZm9ybTogaW5pdGlhbDsKICAgICAgICBsZXR0ZXItc3BhY2luZzogaW5pdGlhbDsKICAgICAgICBtaW4td2lkdGg6IGNhbGModmFyKC0tbHVtby1zaXplLXMpICogMC43KTsKICAgICAgICB0ZXh0LWFsaWduOiBjZW50ZXI7CiAgICAgIH0KCiAgICAgIC8qIEhlYWRlcnMgYW5kIGZvb3RlcnMgKi8KCiAgICAgIFtwYXJ0fj0iaGVhZGVyLWNlbGwiXSA6OnNsb3R0ZWQodmFhZGluLWdyaWQtY2VsbC1jb250ZW50KSwKICAgICAgW3BhcnR+PSJmb290ZXItY2VsbCJdIDo6c2xvdHRlZCh2YWFkaW4tZ3JpZC1jZWxsLWNvbnRlbnQpLAogICAgICBbcGFydH49InJlb3JkZXItZ2hvc3QiXSB7CiAgICAgICAgZm9udC1zaXplOiB2YXIoLS1sdW1vLWZvbnQtc2l6ZS1zKTsKICAgICAgICBmb250LXdlaWdodDogNTAwOwogICAgICB9CgogICAgICBbcGFydH49ImZvb3Rlci1jZWxsIl0gOjpzbG90dGVkKHZhYWRpbi1ncmlkLWNlbGwtY29udGVudCkgewogICAgICAgIGZvbnQtd2VpZ2h0OiA0MDA7CiAgICAgIH0KCiAgICAgIFtwYXJ0PSJyb3ciXTpvbmx5LWNoaWxkIFtwYXJ0fj0iaGVhZGVyLWNlbGwiXSB7CiAgICAgICAgbWluLWhlaWdodDogdmFyKC0tbHVtby1zaXplLXhsKTsKICAgICAgfQoKICAgICAgLyogSGVhZGVyIGJvcmRlcnMgKi8KCiAgICAgIC8qIEhpZGUgZmlyc3QgaGVhZGVyIHJvdyB0b3AgYm9yZGVyICovCiAgICAgIDpob3N0KDpub3QoW3RoZW1lfj0ibm8tcm93LWJvcmRlcnMiXSkpIFtwYXJ0PSJyb3ciXTpmaXJzdC1jaGlsZCBbcGFydH49ImhlYWRlci1jZWxsIl0gewogICAgICAgIGJvcmRlci10b3A6IDA7CiAgICAgIH0KCiAgICAgIFtwYXJ0PSJyb3ciXTpsYXN0LWNoaWxkIFtwYXJ0fj0iaGVhZGVyLWNlbGwiXSB7CiAgICAgICAgYm9yZGVyLWJvdHRvbTogdmFyKC0tX2x1bW8tZ3JpZC1ib3JkZXItd2lkdGgpIHNvbGlkIHRyYW5zcGFyZW50OwogICAgICB9CgogICAgICA6aG9zdCg6bm90KFt0aGVtZX49Im5vLXJvdy1ib3JkZXJzIl0pKSBbcGFydD0icm93Il06bGFzdC1jaGlsZCBbcGFydH49ImhlYWRlci1jZWxsIl0gewogICAgICAgIGJvcmRlci1ib3R0b20tY29sb3I6IHZhcigtLV9sdW1vLWdyaWQtc2Vjb25kYXJ5LWJvcmRlci1jb2xvcik7CiAgICAgIH0KCiAgICAgIC8qIE92ZXJmbG93IHVzZXMgYSBzdHJvbmdlciBib3JkZXIgY29sb3IgKi8KICAgICAgOmhvc3QoW292ZXJmbG93fj0idG9wIl0pIFtwYXJ0PSJyb3ciXTpsYXN0LWNoaWxkIFtwYXJ0fj0iaGVhZGVyLWNlbGwiXSB7CiAgICAgICAgYm9yZGVyLWJvdHRvbS1jb2xvcjogdmFyKC0tX2x1bW8tZ3JpZC1ib3JkZXItY29sb3IpOwogICAgICB9CgogICAgICAvKiBGb290ZXIgYm9yZGVycyAqLwoKICAgICAgW3BhcnQ9InJvdyJdOmZpcnN0LWNoaWxkIFtwYXJ0fj0iZm9vdGVyLWNlbGwiXSB7CiAgICAgICAgYm9yZGVyLXRvcDogdmFyKC0tX2x1bW8tZ3JpZC1ib3JkZXItd2lkdGgpIHNvbGlkIHRyYW5zcGFyZW50OwogICAgICB9CgogICAgICA6aG9zdCg6bm90KFt0aGVtZX49Im5vLXJvdy1ib3JkZXJzIl0pKSBbcGFydD0icm93Il06Zmlyc3QtY2hpbGQgW3BhcnR+PSJmb290ZXItY2VsbCJdIHsKICAgICAgICBib3JkZXItdG9wLWNvbG9yOiB2YXIoLS1fbHVtby1ncmlkLXNlY29uZGFyeS1ib3JkZXItY29sb3IpOwogICAgICB9CgogICAgICAvKiBPdmVyZmxvdyB1c2VzIGEgc3Ryb25nZXIgYm9yZGVyIGNvbG9yICovCiAgICAgIDpob3N0KFtvdmVyZmxvd349ImJvdHRvbSJdKSBbcGFydD0icm93Il06Zmlyc3QtY2hpbGQgW3BhcnR+PSJmb290ZXItY2VsbCJdIHsKICAgICAgICBib3JkZXItdG9wLWNvbG9yOiB2YXIoLS1fbHVtby1ncmlkLWJvcmRlci1jb2xvcik7CiAgICAgIH0KCiAgICAgIC8qIENvbHVtbiByZW9yZGVyaW5nICovCgogICAgICA6aG9zdChbcmVvcmRlcmluZ10pIFtwYXJ0fj0iY2VsbCJdIHsKICAgICAgICBiYWNrZ3JvdW5kOiBsaW5lYXItZ3JhZGllbnQodmFyKC0tbHVtby1zaGFkZS0yMHBjdCksIHZhcigtLWx1bW8tc2hhZGUtMjBwY3QpKSB2YXIoLS1sdW1vLWJhc2UtY29sb3IpOwogICAgICB9CgogICAgICA6aG9zdChbcmVvcmRlcmluZ10pIFtwYXJ0fj0iY2VsbCJdW3Jlb3JkZXItc3RhdHVzPSJhbGxvd2VkIl0gewogICAgICAgIGJhY2tncm91bmQ6IHZhcigtLWx1bW8tYmFzZS1jb2xvcik7CiAgICAgIH0KCiAgICAgIDpob3N0KFtyZW9yZGVyaW5nXSkgW3BhcnR+PSJjZWxsIl1bcmVvcmRlci1zdGF0dXM9ImRyYWdnaW5nIl0gewogICAgICAgIGJhY2tncm91bmQ6IGxpbmVhci1ncmFkaWVudCh2YXIoLS1sdW1vLWNvbnRyYXN0LTVwY3QpLCB2YXIoLS1sdW1vLWNvbnRyYXN0LTVwY3QpKSB2YXIoLS1sdW1vLWJhc2UtY29sb3IpOwogICAgICB9CgogICAgICBbcGFydH49InJlb3JkZXItZ2hvc3QiXSB7CiAgICAgICAgb3BhY2l0eTogMC44NTsKICAgICAgICBib3gtc2hhZG93OiB2YXIoLS1sdW1vLWJveC1zaGFkb3ctcyk7CiAgICAgICAgLyogVE9ETyBVc2UgdGhlIHNhbWUgc3R5bGVzIGFzIGZvciB0aGUgY2VsbCBlbGVtZW50IChyZW9yZGVyLWdob3N0IGNvcGllcyBzdHlsZXMgZnJvbSB0aGUgY2VsbCBlbGVtZW50KSAqLwogICAgICAgIHBhZGRpbmc6IHZhcigtLWx1bW8tc3BhY2UtcykgdmFyKC0tbHVtby1zcGFjZS1tKSAhaW1wb3J0YW50OwogICAgICB9CgogICAgICAvKiBDb2x1bW4gcmVzaXppbmcgKi8KCiAgICAgIFtwYXJ0PSJyZXNpemUtaGFuZGxlIl0gewogICAgICAgIHdpZHRoOiAzcHg7CiAgICAgICAgYmFja2dyb3VuZC1jb2xvcjogdmFyKC0tbHVtby1wcmltYXJ5LWNvbG9yLTUwcGN0KTsKICAgICAgICBvcGFjaXR5OiAwOwogICAgICAgIHRyYW5zaXRpb246IG9wYWNpdHkgMC4yczsKICAgICAgfQoKICAgICAgOmhvc3QoOm5vdChbcmVvcmRlcmluZ10pKSAqOm5vdChbY29sdW1uLXJlc2l6aW5nXSkgW3BhcnR+PSJjZWxsIl06aG92ZXIgW3BhcnQ9InJlc2l6ZS1oYW5kbGUiXSwKICAgICAgW3BhcnQ9InJlc2l6ZS1oYW5kbGUiXTphY3RpdmUgewogICAgICAgIG9wYWNpdHk6IDE7CiAgICAgICAgdHJhbnNpdGlvbi1kZWxheTogMC4xNXM7CiAgICAgIH0KCiAgICAgIC8qIENvbHVtbiBib3JkZXJzICovCgogICAgICA6aG9zdChbdGhlbWV+PSJjb2x1bW4tYm9yZGVycyJdKSBbcGFydH49ImNlbGwiXTpub3QoW2xhc3QtY29sdW1uXSk6bm90KFtwYXJ0fj0iZGV0YWlscy1jZWxsIl0pIHsKICAgICAgICBib3JkZXItcmlnaHQ6IHZhcigtLV9sdW1vLWdyaWQtYm9yZGVyLXdpZHRoKSBzb2xpZCB2YXIoLS1fbHVtby1ncmlkLXNlY29uZGFyeS1ib3JkZXItY29sb3IpOwogICAgICB9CgogICAgICAvKiBGcm96ZW4gY29sdW1ucyAqLwoKICAgICAgW2xhc3QtZnJvemVuXSB7CiAgICAgICAgYm9yZGVyLXJpZ2h0OiB2YXIoLS1fbHVtby1ncmlkLWJvcmRlci13aWR0aCkgc29saWQgdHJhbnNwYXJlbnQ7CiAgICAgICAgb3ZlcmZsb3c6IGhpZGRlbjsKICAgICAgfQoKICAgICAgOmhvc3QoW292ZXJmbG93fj0ibGVmdCJdKSBbcGFydH49ImNlbGwiXVtsYXN0LWZyb3plbl06bm90KFtwYXJ0fj0iZGV0YWlscy1jZWxsIl0pIHsKICAgICAgICBib3JkZXItcmlnaHQtY29sb3I6IHZhcigtLV9sdW1vLWdyaWQtYm9yZGVyLWNvbG9yKTsKICAgICAgfQoKICAgICAgLyogUm93IHN0cmlwZXMgKi8KCiAgICAgIDpob3N0KFt0aGVtZX49InJvdy1zdHJpcGVzIl0pIFtwYXJ0fj0icm93Il06bm90KFtvZGRdKSBbcGFydH49ImJvZHktY2VsbCJdLAogICAgICA6aG9zdChbdGhlbWV+PSJyb3ctc3RyaXBlcyJdKSBbcGFydH49InJvdyJdOm5vdChbb2RkXSkgW3BhcnR+PSJkZXRhaWxzLWNlbGwiXSB7CiAgICAgICAgYmFja2dyb3VuZC1pbWFnZTogbGluZWFyLWdyYWRpZW50KHZhcigtLWx1bW8tY29udHJhc3QtNXBjdCksIHZhcigtLWx1bW8tY29udHJhc3QtNXBjdCkpOwogICAgICAgIGJhY2tncm91bmQtcmVwZWF0OiByZXBlYXQteDsKICAgICAgfQoKICAgICAgLyogU2VsZWN0ZWQgcm93ICovCgogICAgICAvKiBSYWlzZSB0aGUgc2VsZWN0ZWQgcm93cyBhYm92ZSB1bnNlbGVjdGVkIHJvd3MgKHNvIHRoYXQgYm94LXNoYWRvdyBjYW4gY292ZXIgdW5zZWxlY3RlZCByb3dzKSAqLwogICAgICA6aG9zdCg6bm90KFtyZW9yZGVyaW5nXSkpIFtwYXJ0fj0icm93Il1bc2VsZWN0ZWRdIHsKICAgICAgICB6LWluZGV4OiAxOwogICAgICB9CgogICAgICA6aG9zdCg6bm90KFtyZW9yZGVyaW5nXSkpIFtwYXJ0fj0icm93Il1bc2VsZWN0ZWRdIFtwYXJ0fj0iYm9keS1jZWxsIl06bm90KFtwYXJ0fj0iZGV0YWlscy1jZWxsIl0pIHsKICAgICAgICBiYWNrZ3JvdW5kLWltYWdlOiBsaW5lYXItZ3JhZGllbnQodmFyKC0tX2x1bW8tZ3JpZC1zZWxlY3RlZC1yb3ctY29sb3IpLCB2YXIoLS1fbHVtby1ncmlkLXNlbGVjdGVkLXJvdy1jb2xvcikpOwogICAgICAgIGJhY2tncm91bmQtcmVwZWF0OiByZXBlYXQ7CiAgICAgIH0KCiAgICAgIC8qIENvdmVyIHRoZSBib3JkZXIgb2YgYW4gdW5zZWxlY3RlZCByb3cgKi8KICAgICAgOmhvc3QoOm5vdChbdGhlbWV+PSJuby1yb3ctYm9yZGVycyJdKSkgW3BhcnR+PSJyb3ciXVtzZWxlY3RlZF0gW3BhcnR+PSJjZWxsIl06bm90KFtwYXJ0fj0iZGV0YWlscy1jZWxsIl0pIHsKICAgICAgICBib3gtc2hhZG93OiAwIHZhcigtLV9sdW1vLWdyaWQtYm9yZGVyLXdpZHRoKSAwIDAgdmFyKC0tX2x1bW8tZ3JpZC1zZWxlY3RlZC1yb3ctY29sb3IpOwogICAgICB9CgogICAgICAvKiBDb21wYWN0ICovCgogICAgICA6aG9zdChbdGhlbWV+PSJjb21wYWN0Il0pIFtwYXJ0PSJyb3ciXTpvbmx5LWNoaWxkIFtwYXJ0fj0iaGVhZGVyLWNlbGwiXSB7CiAgICAgICAgbWluLWhlaWdodDogdmFyKC0tbHVtby1zaXplLW0pOwogICAgICB9CgogICAgICA6aG9zdChbdGhlbWV+PSJjb21wYWN0Il0pIFtwYXJ0fj0iY2VsbCJdIHsKICAgICAgICBtaW4taGVpZ2h0OiB2YXIoLS1sdW1vLXNpemUtcyk7CiAgICAgIH0KCiAgICAgIDpob3N0KFt0aGVtZX49ImNvbXBhY3QiXSkgW3BhcnQ9InJvdyJdW2ZpcnN0XSBbcGFydH49ImNlbGwiXTpub3QoW3BhcnR+PSJkZXRhaWxzLWNlbGwiXSkgewogICAgICAgIG1pbi1oZWlnaHQ6IGNhbGModmFyKC0tbHVtby1zaXplLXMpIC0gdmFyKC0tX2x1bW8tZ3JpZC1ib3JkZXItd2lkdGgpKTsKICAgICAgfQoKICAgICAgOmhvc3QoW3RoZW1lfj0iY29tcGFjdCJdKSBbcGFydH49ImNlbGwiXSA6OnNsb3R0ZWQodmFhZGluLWdyaWQtY2VsbC1jb250ZW50KSB7CiAgICAgICAgcGFkZGluZzogdmFyKC0tbHVtby1zcGFjZS14cykgdmFyKC0tbHVtby1zcGFjZS1zKTsKICAgICAgfQoKICAgICAgLyogV3JhcCBjZWxsIGNvbnRlbnRzICovCgogICAgICA6aG9zdChbdGhlbWV+PSJ3cmFwLWNlbGwtY29udGVudCJdKSBbcGFydH49ImNlbGwiXSA6OnNsb3R0ZWQodmFhZGluLWdyaWQtY2VsbC1jb250ZW50KSB7CiAgICAgICAgd2hpdGUtc3BhY2U6IG5vcm1hbDsKICAgICAgfQoKICAgICAgLyogUlRMIHNwZWNpZmljIHN0eWxlcyAqLwoKICAgICAgOmhvc3QoW2Rpcj0icnRsIl0pIFtwYXJ0fj0icm93Il1bZHJhZ3N0YXJ0XSBbcGFydH49ImNlbGwiXVtsYXN0LWNvbHVtbl0gewogICAgICAgIGJvcmRlci1yYWRpdXM6IHZhcigtLWx1bW8tYm9yZGVyLXJhZGl1cy1zKSAwIDAgdmFyKC0tbHVtby1ib3JkZXItcmFkaXVzLXMpOwogICAgICB9CgogICAgICA6aG9zdChbZGlyPSJydGwiXSkgW3BhcnR+PSJyb3ciXVtkcmFnc3RhcnRdIFtwYXJ0fj0iY2VsbCJdW2ZpcnN0LWNvbHVtbl0gewogICAgICAgIGJvcmRlci1yYWRpdXM6IDAgdmFyKC0tbHVtby1ib3JkZXItcmFkaXVzLXMpIHZhcigtLWx1bW8tYm9yZGVyLXJhZGl1cy1zKSAwOwogICAgICB9CgogICAgICA6aG9zdChbZGlyPSJydGwiXVt0aGVtZX49ImNvbHVtbi1ib3JkZXJzIl0pIFtwYXJ0fj0iY2VsbCJdOm5vdChbbGFzdC1jb2x1bW5dKTpub3QoW3BhcnR+PSJkZXRhaWxzLWNlbGwiXSkgewogICAgICAgIGJvcmRlci1yaWdodDogbm9uZTsKICAgICAgICBib3JkZXItbGVmdDogdmFyKC0tX2x1bW8tZ3JpZC1ib3JkZXItd2lkdGgpIHNvbGlkIHZhcigtLV9sdW1vLWdyaWQtc2Vjb25kYXJ5LWJvcmRlci1jb2xvcik7CiAgICAgIH0KCiAgICAgIDpob3N0KFtkaXI9InJ0bCJdKSBbbGFzdC1mcm96ZW5dIHsKICAgICAgICBib3JkZXItcmlnaHQ6IG5vbmU7CiAgICAgICAgYm9yZGVyLWxlZnQ6IHZhcigtLV9sdW1vLWdyaWQtYm9yZGVyLXdpZHRoKSBzb2xpZCB0cmFuc3BhcmVudDsKICAgICAgfQoKICAgICAgOmhvc3QoW2Rpcj0icnRsIl1bb3ZlcmZsb3d+PSJyaWdodCJdKSBbcGFydH49ImNlbGwiXVtsYXN0LWZyb3plbl06bm90KFtwYXJ0fj0iZGV0YWlscy1jZWxsIl0pIHsKICAgICAgICBib3JkZXItbGVmdC1jb2xvcjogdmFyKC0tX2x1bW8tZ3JpZC1ib3JkZXItY29sb3IpOwogICAgICB9CiAgICA8L3N0eWxlPgogIDwvdGVtcGxhdGU+CjwvZG9tLW1vZHVsZT48ZG9tLW1vZHVsZSB0aGVtZS1mb3I9InZhYWRpbi1jaGVja2JveCIgaWQ9InZhYWRpbi1ncmlkLXNlbGVjdC1hbGwtY2hlY2tib3gtbHVtbyI+CiAgPHRlbXBsYXRlPgogICAgPHN0eWxlPgogICAgICA6aG9zdCgudmFhZGluLWdyaWQtc2VsZWN0LWFsbC1jaGVja2JveCkgewogICAgICAgIGZvbnQtc2l6ZTogdmFyKC0tbHVtby1mb250LXNpemUtbSk7CiAgICAgIH0KICAgPC9zdHlsZT4KICA8L3RlbXBsYXRlPgo8L2RvbS1tb2R1bGU+YDtkb2N1bWVudC5oZWFkLmFwcGVuZENoaWxkKER6dC5jb250ZW50KTsKLyoqCiAgICBAbGljZW5zZQogICAgQ29weXJpZ2h0IChjKSAyMDE2IFRoZSBQb2x5bWVyIFByb2plY3QgQXV0aG9ycy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAgIFRoaXMgY29kZSBtYXkgb25seSBiZSB1c2VkIHVuZGVyIHRoZSBCU0Qgc3R5bGUgbGljZW5zZSBmb3VuZCBhdCBodHRwOi8vcG9seW1lci5naXRodWIuaW8vTElDRU5TRS50eHQKICAgIFRoZSBjb21wbGV0ZSBzZXQgb2YgYXV0aG9ycyBtYXkgYmUgZm91bmQgYXQgaHR0cDovL3BvbHltZXIuZ2l0aHViLmlvL0FVVEhPUlMudHh0CiAgICBUaGUgY29tcGxldGUgc2V0IG9mIGNvbnRyaWJ1dG9ycyBtYXkgYmUgZm91bmQgYXQgaHR0cDovL3BvbHltZXIuZ2l0aHViLmlvL0NPTlRSSUJVVE9SUy50eHQKICAgIENvZGUgZGlzdHJpYnV0ZWQgYnkgR29vZ2xlIGFzIHBhcnQgb2YgdGhlIHBvbHltZXIgcHJvamVjdCBpcyBhbHNvCiAgICBzdWJqZWN0IHRvIGFuIGFkZGl0aW9uYWwgSVAgcmlnaHRzIGdyYW50IGZvdW5kIGF0IGh0dHA6Ly9wb2x5bWVyLmdpdGh1Yi5pby9QQVRFTlRTLnR4dAogICAgKi8KdmFyIEJ6dD1uYXZpZ2F0b3IudXNlckFnZW50Lm1hdGNoKC9pUCg/OmhvbmV8YWQ7KD86IFU7KT8gQ1BVKSBPUyAoXGQrKS8pLEh6dD1CenQmJkJ6dFsxXT49OCxGenQ9X3QsVnp0PXl0LGp6dD12dDtjb25zdCBVenQ9SXIoe2JlaGF2aW9yczpbbW8sem9dLF9yYXRpbzouNSxfc2Nyb2xsZXJQYWRkaW5nVG9wOjAsX3Njcm9sbFBvc2l0aW9uOjAsX3BoeXNpY2FsU2l6ZTowLF9waHlzaWNhbEF2ZXJhZ2U6MCxfcGh5c2ljYWxBdmVyYWdlQ291bnQ6MCxfcGh5c2ljYWxUb3A6MCxfdmlydHVhbENvdW50OjAsX2VzdFNjcm9sbEhlaWdodDowLF9zY3JvbGxIZWlnaHQ6MCxfdmlld3BvcnRIZWlnaHQ6MCxfdmlld3BvcnRXaWR0aDowLF9waHlzaWNhbEl0ZW1zOm51bGwsX3BoeXNpY2FsU2l6ZXM6bnVsbCxfZmlyc3RWaXNpYmxlSW5kZXhWYWw6bnVsbCxfY29sbGVjdGlvbjpudWxsLF9sYXN0VmlzaWJsZUluZGV4VmFsOm51bGwsX21heFBhZ2VzOjIsX2ZvY3VzZWRWaXJ0dWFsSW5kZXg6LTEsX2l0ZW1zUGVyUm93OjEsX3Jvd0hlaWdodDowLF90ZW1wbGF0ZUNvc3Q6MCxnZXQgX3BoeXNpY2FsQm90dG9tKCl7cmV0dXJuIHRoaXMuX3BoeXNpY2FsVG9wK3RoaXMuX3BoeXNpY2FsU2l6ZX0sZ2V0IF9zY3JvbGxCb3R0b20oKXtyZXR1cm4gdGhpcy5fc2Nyb2xsUG9zaXRpb24rdGhpcy5fdmlld3BvcnRIZWlnaHR9LGdldCBfdmlydHVhbEVuZCgpe3JldHVybiB0aGlzLl92aXJ0dWFsU3RhcnQrdGhpcy5fcGh5c2ljYWxDb3VudC0xfSxnZXQgX2hpZGRlbkNvbnRlbnRTaXplKCl7cmV0dXJuKHRoaXMuZ3JpZD90aGlzLl9waHlzaWNhbFJvd3MqdGhpcy5fcm93SGVpZ2h0OnRoaXMuX3BoeXNpY2FsU2l6ZSktdGhpcy5fdmlld3BvcnRIZWlnaHR9LGdldCBfbWF4U2Nyb2xsVG9wKCl7cmV0dXJuIHRoaXMuX2VzdFNjcm9sbEhlaWdodC10aGlzLl92aWV3cG9ydEhlaWdodCt0aGlzLl9zY3JvbGxPZmZzZXR9LGdldCBfbWF4VmlydHVhbFN0YXJ0KCl7dmFyIHQ9dGhpcy5fY29udmVydEluZGV4VG9Db21wbGV0ZVJvdyh0aGlzLl92aXJ0dWFsQ291bnQpO3JldHVybiBNYXRoLm1heCgwLHQtdGhpcy5fcGh5c2ljYWxDb3VudCl9LHNldCBfdmlydHVhbFN0YXJ0KHQpe3Q9dGhpcy5fY2xhbXAodCwwLHRoaXMuX21heFZpcnR1YWxTdGFydCksdGhpcy5ncmlkJiYodC09dCV0aGlzLl9pdGVtc1BlclJvdyksdGhpcy5fdmlydHVhbFN0YXJ0VmFsPXR9LGdldCBfdmlydHVhbFN0YXJ0KCl7cmV0dXJuIHRoaXMuX3ZpcnR1YWxTdGFydFZhbHx8MH0sc2V0IF9waHlzaWNhbFN0YXJ0KHQpeyh0JT10aGlzLl9waHlzaWNhbENvdW50KTwwJiYodD10aGlzLl9waHlzaWNhbENvdW50K3QpLHRoaXMuZ3JpZCYmKHQtPXQldGhpcy5faXRlbXNQZXJSb3cpLHRoaXMuX3BoeXNpY2FsU3RhcnRWYWw9dH0sZ2V0IF9waHlzaWNhbFN0YXJ0KCl7cmV0dXJuIHRoaXMuX3BoeXNpY2FsU3RhcnRWYWx8fDB9LGdldCBfcGh5c2ljYWxFbmQoKXtyZXR1cm4odGhpcy5fcGh5c2ljYWxTdGFydCt0aGlzLl9waHlzaWNhbENvdW50LTEpJXRoaXMuX3BoeXNpY2FsQ291bnR9LHNldCBfcGh5c2ljYWxDb3VudCh0KXt0aGlzLl9waHlzaWNhbENvdW50VmFsPXR9LGdldCBfcGh5c2ljYWxDb3VudCgpe3JldHVybiB0aGlzLl9waHlzaWNhbENvdW50VmFsfHwwfSxnZXQgX29wdFBoeXNpY2FsU2l6ZSgpe3JldHVybiAwPT09dGhpcy5fdmlld3BvcnRIZWlnaHQ/MS8wOnRoaXMuX3ZpZXdwb3J0SGVpZ2h0KnRoaXMuX21heFBhZ2VzfSxnZXQgX2lzVmlzaWJsZSgpe3JldHVybiBCb29sZWFuKHRoaXMub2Zmc2V0V2lkdGh8fHRoaXMub2Zmc2V0SGVpZ2h0KX0sZ2V0IGZpcnN0VmlzaWJsZUluZGV4KCl7dmFyIHQ9dGhpcy5fZmlyc3RWaXNpYmxlSW5kZXhWYWw7aWYobnVsbD09dCl7dmFyIGU9dGhpcy5fcGh5c2ljYWxUb3ArdGhpcy5fc2Nyb2xsT2Zmc2V0O3Q9dGhpcy5faXRlcmF0ZUl0ZW1zKChmdW5jdGlvbih0LG4pe3JldHVybihlKz10aGlzLl9nZXRQaHlzaWNhbFNpemVJbmNyZW1lbnQodCkpPnRoaXMuX3Njcm9sbFBvc2l0aW9uP3RoaXMuZ3JpZD9uLW4ldGhpcy5faXRlbXNQZXJSb3c6bjp0aGlzLmdyaWQmJnRoaXMuX3ZpcnR1YWxDb3VudC0xPT09bj9uLW4ldGhpcy5faXRlbXNQZXJSb3c6dm9pZCAwfSkpfHwwLHRoaXMuX2ZpcnN0VmlzaWJsZUluZGV4VmFsPXR9cmV0dXJuIHR9LGdldCBsYXN0VmlzaWJsZUluZGV4KCl7dmFyIHQ9dGhpcy5fbGFzdFZpc2libGVJbmRleFZhbDtpZihudWxsPT10KXtpZih0aGlzLmdyaWQpdD1NYXRoLm1pbih0aGlzLl92aXJ0dWFsQ291bnQsdGhpcy5maXJzdFZpc2libGVJbmRleCt0aGlzLl9lc3RSb3dzSW5WaWV3KnRoaXMuX2l0ZW1zUGVyUm93LTEpO2Vsc2V7dmFyIGU9dGhpcy5fcGh5c2ljYWxUb3ArdGhpcy5fc2Nyb2xsT2Zmc2V0O3RoaXMuX2l0ZXJhdGVJdGVtcygoZnVuY3Rpb24obixpKXtlPHRoaXMuX3Njcm9sbEJvdHRvbSYmKHQ9aSksZSs9dGhpcy5fZ2V0UGh5c2ljYWxTaXplSW5jcmVtZW50KG4pfSkpfXRoaXMuX2xhc3RWaXNpYmxlSW5kZXhWYWw9dH1yZXR1cm4gdH0sZ2V0IF9zY3JvbGxPZmZzZXQoKXtyZXR1cm4gdGhpcy5fc2Nyb2xsZXJQYWRkaW5nVG9wfSxhdHRhY2hlZDpmdW5jdGlvbigpe3RoaXMuX2RlYm91bmNlKCJfcmVuZGVyIix0aGlzLl9yZW5kZXIsRnp0KSx0aGlzLmxpc3Rlbih0aGlzLCJpcm9uLXJlc2l6ZSIsIl9yZXNpemVIYW5kbGVyIil9LGRldGFjaGVkOmZ1bmN0aW9uKCl7dGhpcy51bmxpc3Rlbih0aGlzLCJpcm9uLXJlc2l6ZSIsIl9yZXNpemVIYW5kbGVyIil9LHVwZGF0ZVZpZXdwb3J0Qm91bmRhcmllczpmdW5jdGlvbigpe3ZhciB0PXdpbmRvdy5nZXRDb21wdXRlZFN0eWxlKHRoaXMpO3RoaXMuX3Njcm9sbGVyUGFkZGluZ1RvcD10aGlzLnNjcm9sbFRhcmdldD09PXRoaXM/MDpwYXJzZUludCh0WyJwYWRkaW5nLXRvcCJdLDEwKSx0aGlzLl9pc1JUTD1Cb29sZWFuKCJydGwiPT09dC5kaXJlY3Rpb24pLHRoaXMuX3ZpZXdwb3J0V2lkdGg9dGhpcy4kLml0ZW1zLm9mZnNldFdpZHRoLHRoaXMuX3ZpZXdwb3J0SGVpZ2h0PXRoaXMuX3Njcm9sbFRhcmdldEhlaWdodCx0aGlzLmdyaWQmJnRoaXMuX3VwZGF0ZUdyaWRNZXRyaWNzKCl9LF9zY3JvbGxIYW5kbGVyOmZ1bmN0aW9uKCl7dmFyIHQ9TWF0aC5tYXgoMCxNYXRoLm1pbih0aGlzLl9tYXhTY3JvbGxUb3AsdGhpcy5fc2Nyb2xsVG9wKSksZT10LXRoaXMuX3Njcm9sbFBvc2l0aW9uLG49ZT49MDtpZih0aGlzLl9zY3JvbGxQb3NpdGlvbj10LHRoaXMuX2ZpcnN0VmlzaWJsZUluZGV4VmFsPW51bGwsdGhpcy5fbGFzdFZpc2libGVJbmRleFZhbD1udWxsLE1hdGguYWJzKGUpPnRoaXMuX3BoeXNpY2FsU2l6ZSYmdGhpcy5fcGh5c2ljYWxTaXplPjApe2UtPXRoaXMuX3Njcm9sbE9mZnNldDt2YXIgaT1NYXRoLnJvdW5kKGUvdGhpcy5fcGh5c2ljYWxBdmVyYWdlKSp0aGlzLl9pdGVtc1BlclJvdzt0aGlzLl92aXJ0dWFsU3RhcnQ9dGhpcy5fdmlydHVhbFN0YXJ0K2ksdGhpcy5fcGh5c2ljYWxTdGFydD10aGlzLl9waHlzaWNhbFN0YXJ0K2ksdGhpcy5fcGh5c2ljYWxUb3A9TWF0aC5mbG9vcih0aGlzLl92aXJ0dWFsU3RhcnQvdGhpcy5faXRlbXNQZXJSb3cpKnRoaXMuX3BoeXNpY2FsQXZlcmFnZSx0aGlzLl91cGRhdGUoKX1lbHNlIGlmKHRoaXMuX3BoeXNpY2FsQ291bnQ+MCl7dmFyIHI9dGhpcy5fZ2V0UmV1c2FibGVzKG4pO24/KHRoaXMuX3BoeXNpY2FsVG9wPXIucGh5c2ljYWxUb3AsdGhpcy5fdmlydHVhbFN0YXJ0PXRoaXMuX3ZpcnR1YWxTdGFydCtyLmluZGV4ZXMubGVuZ3RoLHRoaXMuX3BoeXNpY2FsU3RhcnQ9dGhpcy5fcGh5c2ljYWxTdGFydCtyLmluZGV4ZXMubGVuZ3RoKToodGhpcy5fdmlydHVhbFN0YXJ0PXRoaXMuX3ZpcnR1YWxTdGFydC1yLmluZGV4ZXMubGVuZ3RoLHRoaXMuX3BoeXNpY2FsU3RhcnQ9dGhpcy5fcGh5c2ljYWxTdGFydC1yLmluZGV4ZXMubGVuZ3RoKSx0aGlzLl91cGRhdGUoci5pbmRleGVzLG4/bnVsbDpyLmluZGV4ZXMpLHRoaXMuX2RlYm91bmNlKCJfaW5jcmVhc2VQb29sSWZOZWVkZWQiLHRoaXMuX2luY3JlYXNlUG9vbElmTmVlZGVkLmJpbmQodGhpcywwKSxqenQpfX0sX2dldFJldXNhYmxlczpmdW5jdGlvbih0KXt2YXIgZSxuLGkscj1bXSxvPXRoaXMuX2hpZGRlbkNvbnRlbnRTaXplKnRoaXMuX3JhdGlvLGE9dGhpcy5fdmlydHVhbFN0YXJ0LHM9dGhpcy5fdmlydHVhbEVuZCxsPXRoaXMuX3BoeXNpY2FsQ291bnQsYz10aGlzLl9waHlzaWNhbFRvcCt0aGlzLl9zY3JvbGxPZmZzZXQsdT10aGlzLl9zY3JvbGxUb3AsaD10aGlzLl9zY3JvbGxCb3R0b207Zm9yKHQ/KGU9dGhpcy5fcGh5c2ljYWxTdGFydCxuPXUtYyk6KGU9dGhpcy5fcGh5c2ljYWxFbmQsbj10aGlzLl9waHlzaWNhbEJvdHRvbSt0aGlzLl9zY3JvbGxPZmZzZXQtaCk7bi09aT10aGlzLl9nZXRQaHlzaWNhbFNpemVJbmNyZW1lbnQoZSksIShyLmxlbmd0aD49bHx8bjw9byk7KWlmKHQpe2lmKHMrci5sZW5ndGgrMT49dGhpcy5fdmlydHVhbENvdW50KWJyZWFrO2lmKGMraT49dS10aGlzLl9zY3JvbGxPZmZzZXQpYnJlYWs7ci5wdXNoKGUpLGMrPWksZT0oZSsxKSVsfWVsc2V7aWYoYS1yLmxlbmd0aDw9MClicmVhaztpZihjK3RoaXMuX3BoeXNpY2FsU2l6ZS1pPD1oKWJyZWFrO3IucHVzaChlKSxjLT1pLGU9MD09PWU/bC0xOmUtMX1yZXR1cm57aW5kZXhlczpyLHBoeXNpY2FsVG9wOmMtdGhpcy5fc2Nyb2xsT2Zmc2V0fX0sX3VwZGF0ZTpmdW5jdGlvbih0LGUpe2lmKCEodCYmMD09PXQubGVuZ3RofHwwPT09dGhpcy5fcGh5c2ljYWxDb3VudCkpe2lmKHRoaXMuX21hbmFnZUZvY3VzKCksdGhpcy5fYXNzaWduTW9kZWxzKHQpLHRoaXMuX3VwZGF0ZU1ldHJpY3ModCksZSlmb3IoO2UubGVuZ3RoOyl7dmFyIG49ZS5wb3AoKTt0aGlzLl9waHlzaWNhbFRvcC09dGhpcy5fZ2V0UGh5c2ljYWxTaXplSW5jcmVtZW50KG4pfXRoaXMuX3Bvc2l0aW9uSXRlbXMoKSx0aGlzLl91cGRhdGVTY3JvbGxlclNpemUoKX19LF9pc0NsaWVudEZ1bGw6ZnVuY3Rpb24oKXtyZXR1cm4gMCE9dGhpcy5fc2Nyb2xsQm90dG9tJiZ0aGlzLl9waHlzaWNhbEJvdHRvbS0xPj10aGlzLl9zY3JvbGxCb3R0b20mJnRoaXMuX3BoeXNpY2FsVG9wPD10aGlzLl9zY3JvbGxQb3NpdGlvbn0sX2luY3JlYXNlUG9vbElmTmVlZGVkOmZ1bmN0aW9uKHQpe3ZhciBlPXRoaXMuX2NsYW1wKHRoaXMuX3BoeXNpY2FsQ291bnQrdCwzLHRoaXMuX3ZpcnR1YWxDb3VudC10aGlzLl92aXJ0dWFsU3RhcnQpLG49KGU9dGhpcy5fY29udmVydEluZGV4VG9Db21wbGV0ZVJvdyhlKSktdGhpcy5fcGh5c2ljYWxDb3VudCxpPU1hdGgucm91bmQoLjUqdGhpcy5fcGh5c2ljYWxDb3VudCk7aWYoIShuPDApKXtpZihuPjApe3ZhciByPXdpbmRvdy5wZXJmb3JtYW5jZS5ub3coKTtbXS5wdXNoLmFwcGx5KHRoaXMuX3BoeXNpY2FsSXRlbXMsdGhpcy5fY3JlYXRlUG9vbChuKSk7Zm9yKHZhciBvPTA7bzxuO28rKyl0aGlzLl9waHlzaWNhbFNpemVzLnB1c2goMCk7dGhpcy5fcGh5c2ljYWxDb3VudD10aGlzLl9waHlzaWNhbENvdW50K24sdGhpcy5fcGh5c2ljYWxTdGFydD50aGlzLl9waHlzaWNhbEVuZCYmdGhpcy5faXNJbmRleFJlbmRlcmVkKHRoaXMuX2ZvY3VzZWRWaXJ0dWFsSW5kZXgpJiZ0aGlzLl9nZXRQaHlzaWNhbEluZGV4KHRoaXMuX2ZvY3VzZWRWaXJ0dWFsSW5kZXgpPHRoaXMuX3BoeXNpY2FsRW5kJiYodGhpcy5fcGh5c2ljYWxTdGFydD10aGlzLl9waHlzaWNhbFN0YXJ0K24pLHRoaXMuX3VwZGF0ZSgpLHRoaXMuX3RlbXBsYXRlQ29zdD0od2luZG93LnBlcmZvcm1hbmNlLm5vdygpLXIpL24saT1NYXRoLnJvdW5kKC41KnRoaXMuX3BoeXNpY2FsQ291bnQpfXRoaXMuX3ZpcnR1YWxFbmQ+PXRoaXMuX3ZpcnR1YWxDb3VudC0xfHwwPT09aXx8KHRoaXMuX2lzQ2xpZW50RnVsbCgpP3RoaXMuX3BoeXNpY2FsU2l6ZTx0aGlzLl9vcHRQaHlzaWNhbFNpemUmJnRoaXMuX2RlYm91bmNlKCJfaW5jcmVhc2VQb29sSWZOZWVkZWQiLHRoaXMuX2luY3JlYXNlUG9vbElmTmVlZGVkLmJpbmQodGhpcyx0aGlzLl9jbGFtcChNYXRoLnJvdW5kKDUwL3RoaXMuX3RlbXBsYXRlQ29zdCksMSxpKSksVnp0KTp0aGlzLl9kZWJvdW5jZSgiX2luY3JlYXNlUG9vbElmTmVlZGVkIix0aGlzLl9pbmNyZWFzZVBvb2xJZk5lZWRlZC5iaW5kKHRoaXMsaSksanp0KSl9fSxfcmVuZGVyOmZ1bmN0aW9uKCl7aWYodGhpcy5pc0F0dGFjaGVkJiZ0aGlzLl9pc1Zpc2libGUpaWYoMCE9PXRoaXMuX3BoeXNpY2FsQ291bnQpe3ZhciB0PXRoaXMuX2dldFJldXNhYmxlcyghMCk7dGhpcy5fcGh5c2ljYWxUb3A9dC5waHlzaWNhbFRvcCx0aGlzLl92aXJ0dWFsU3RhcnQ9dGhpcy5fdmlydHVhbFN0YXJ0K3QuaW5kZXhlcy5sZW5ndGgsdGhpcy5fcGh5c2ljYWxTdGFydD10aGlzLl9waHlzaWNhbFN0YXJ0K3QuaW5kZXhlcy5sZW5ndGgsdGhpcy5fdXBkYXRlKHQuaW5kZXhlcyksdGhpcy5fdXBkYXRlKCksdGhpcy5faW5jcmVhc2VQb29sSWZOZWVkZWQoMCl9ZWxzZSB0aGlzLl92aXJ0dWFsQ291bnQ+MCYmKHRoaXMudXBkYXRlVmlld3BvcnRCb3VuZGFyaWVzKCksdGhpcy5faW5jcmVhc2VQb29sSWZOZWVkZWQoMykpfSxfaXRlbXNDaGFuZ2VkOmZ1bmN0aW9uKHQpeyJpdGVtcyI9PT10LnBhdGgmJih0aGlzLl92aXJ0dWFsU3RhcnQ9MCx0aGlzLl9waHlzaWNhbFRvcD0wLHRoaXMuX3ZpcnR1YWxDb3VudD10aGlzLml0ZW1zP3RoaXMuaXRlbXMubGVuZ3RoOjAsdGhpcy5fY29sbGVjdGlvbj1udWxsLHRoaXMuX3BoeXNpY2FsSW5kZXhGb3JLZXk9e30sdGhpcy5fZmlyc3RWaXNpYmxlSW5kZXhWYWw9bnVsbCx0aGlzLl9sYXN0VmlzaWJsZUluZGV4VmFsPW51bGwsdGhpcy5fcGh5c2ljYWxDb3VudD10aGlzLl9waHlzaWNhbENvdW50fHwwLHRoaXMuX3BoeXNpY2FsSXRlbXM9dGhpcy5fcGh5c2ljYWxJdGVtc3x8W10sdGhpcy5fcGh5c2ljYWxTaXplcz10aGlzLl9waHlzaWNhbFNpemVzfHxbXSx0aGlzLl9waHlzaWNhbFN0YXJ0PTAsdGhpcy5fc2Nyb2xsVG9wPnRoaXMuX3Njcm9sbE9mZnNldCYmdGhpcy5fcmVzZXRTY3JvbGxQb3NpdGlvbigwKSx0aGlzLl9yZW1vdmVGb2N1c2VkSXRlbSgpLHRoaXMuX2RlYm91bmNlKCJfcmVuZGVyIix0aGlzLl9yZW5kZXIsRnp0KSl9LF9pdGVyYXRlSXRlbXM6ZnVuY3Rpb24odCxlKXt2YXIgbixpLHIsbztpZigyPT09YXJndW1lbnRzLmxlbmd0aCYmZSl7Zm9yKG89MDtvPGUubGVuZ3RoO28rKylpZihpPXRoaXMuX2NvbXB1dGVWaWR4KG49ZVtvXSksbnVsbCE9KHI9dC5jYWxsKHRoaXMsbixpKSkpcmV0dXJuIHJ9ZWxzZXtmb3Iobj10aGlzLl9waHlzaWNhbFN0YXJ0LGk9dGhpcy5fdmlydHVhbFN0YXJ0O248dGhpcy5fcGh5c2ljYWxDb3VudDtuKyssaSsrKWlmKG51bGwhPShyPXQuY2FsbCh0aGlzLG4saSkpKXJldHVybiByO2ZvcihuPTA7bjx0aGlzLl9waHlzaWNhbFN0YXJ0O24rKyxpKyspaWYobnVsbCE9KHI9dC5jYWxsKHRoaXMsbixpKSkpcmV0dXJuIHJ9fSxfY29tcHV0ZVZpZHg6ZnVuY3Rpb24odCl7cmV0dXJuIHQ+PXRoaXMuX3BoeXNpY2FsU3RhcnQ/dGhpcy5fdmlydHVhbFN0YXJ0Kyh0LXRoaXMuX3BoeXNpY2FsU3RhcnQpOnRoaXMuX3ZpcnR1YWxTdGFydCsodGhpcy5fcGh5c2ljYWxDb3VudC10aGlzLl9waHlzaWNhbFN0YXJ0KSt0fSxfdXBkYXRlTWV0cmljczpmdW5jdGlvbih0KXt6aSgpO3ZhciBlPTAsbj0wLGk9dGhpcy5fcGh5c2ljYWxBdmVyYWdlQ291bnQscj10aGlzLl9waHlzaWNhbEF2ZXJhZ2U7dGhpcy5faXRlcmF0ZUl0ZW1zKChmdW5jdGlvbih0LGkpe24rPXRoaXMuX3BoeXNpY2FsU2l6ZXNbdF0sdGhpcy5fcGh5c2ljYWxTaXplc1t0XT10aGlzLl9waHlzaWNhbEl0ZW1zW3RdLm9mZnNldEhlaWdodCxlKz10aGlzLl9waHlzaWNhbFNpemVzW3RdLHRoaXMuX3BoeXNpY2FsQXZlcmFnZUNvdW50Kz10aGlzLl9waHlzaWNhbFNpemVzW3RdPzE6MH0pLHQpLHRoaXMuZ3JpZD8odGhpcy5fdXBkYXRlR3JpZE1ldHJpY3MoKSx0aGlzLl9waHlzaWNhbFNpemU9TWF0aC5jZWlsKHRoaXMuX3BoeXNpY2FsQ291bnQvdGhpcy5faXRlbXNQZXJSb3cpKnRoaXMuX3Jvd0hlaWdodCk6KG49MT09PXRoaXMuX2l0ZW1zUGVyUm93P246TWF0aC5jZWlsKHRoaXMuX3BoeXNpY2FsQ291bnQvdGhpcy5faXRlbXNQZXJSb3cpKnRoaXMuX3Jvd0hlaWdodCx0aGlzLl9waHlzaWNhbFNpemU9dGhpcy5fcGh5c2ljYWxTaXplK2Utbix0aGlzLl9pdGVtc1BlclJvdz0xKSx0aGlzLl9waHlzaWNhbEF2ZXJhZ2VDb3VudCE9PWkmJih0aGlzLl9waHlzaWNhbEF2ZXJhZ2U9TWF0aC5yb3VuZCgocippK2UpL3RoaXMuX3BoeXNpY2FsQXZlcmFnZUNvdW50KSl9LF9wb3NpdGlvbkl0ZW1zOmZ1bmN0aW9uKCl7dGhpcy5fYWRqdXN0U2Nyb2xsUG9zaXRpb24oKTt2YXIgdD10aGlzLl9waHlzaWNhbFRvcDt0aGlzLl9pdGVyYXRlSXRlbXMoKGZ1bmN0aW9uKGUsbil7dGhpcy50cmFuc2xhdGUzZCgwLHQrInB4IiwwLHRoaXMuX3BoeXNpY2FsSXRlbXNbZV0pLHQrPXRoaXMuX3BoeXNpY2FsU2l6ZXNbZV19KSl9LF9nZXRQaHlzaWNhbFNpemVJbmNyZW1lbnQ6ZnVuY3Rpb24odCl7cmV0dXJuIHRoaXMuZ3JpZD90aGlzLl9jb21wdXRlVmlkeCh0KSV0aGlzLl9pdGVtc1BlclJvdyE9dGhpcy5faXRlbXNQZXJSb3ctMT8wOnRoaXMuX3Jvd0hlaWdodDp0aGlzLl9waHlzaWNhbFNpemVzW3RdfSxfYWRqdXN0U2Nyb2xsUG9zaXRpb246ZnVuY3Rpb24oKXt2YXIgdD0wPT09dGhpcy5fdmlydHVhbFN0YXJ0P3RoaXMuX3BoeXNpY2FsVG9wOk1hdGgubWluKHRoaXMuX3Njcm9sbFBvc2l0aW9uK3RoaXMuX3BoeXNpY2FsVG9wLDApO2lmKDAhPT10KXt0aGlzLl9waHlzaWNhbFRvcD10aGlzLl9waHlzaWNhbFRvcC10O3ZhciBlPXRoaXMuX3Njcm9sbFRvcDshSHp0JiZlPjAmJnRoaXMuX3Jlc2V0U2Nyb2xsUG9zaXRpb24oZS10KX19LF9yZXNldFNjcm9sbFBvc2l0aW9uOmZ1bmN0aW9uKHQpe3RoaXMuc2Nyb2xsVGFyZ2V0JiZ0Pj0wJiYodGhpcy5fc2Nyb2xsVG9wPXQsdGhpcy5fc2Nyb2xsUG9zaXRpb249dGhpcy5fc2Nyb2xsVG9wKX0sX3VwZGF0ZVNjcm9sbGVyU2l6ZTpmdW5jdGlvbih0KXt0aGlzLl9lc3RTY3JvbGxIZWlnaHQ9dGhpcy5ncmlkP3RoaXMuX3ZpcnR1YWxSb3dDb3VudCp0aGlzLl9yb3dIZWlnaHQ6dGhpcy5fcGh5c2ljYWxCb3R0b20rTWF0aC5tYXgodGhpcy5fdmlydHVhbENvdW50LXRoaXMuX3BoeXNpY2FsQ291bnQtdGhpcy5fdmlydHVhbFN0YXJ0LDApKnRoaXMuX3BoeXNpY2FsQXZlcmFnZSwoKHQ9KHQ9KHQ9dHx8MD09PXRoaXMuX3Njcm9sbEhlaWdodCl8fHRoaXMuX3Njcm9sbFBvc2l0aW9uPj10aGlzLl9lc3RTY3JvbGxIZWlnaHQtdGhpcy5fcGh5c2ljYWxTaXplKXx8dGhpcy5ncmlkJiZ0aGlzLiQuaXRlbXMuc3R5bGUuaGVpZ2h0PHRoaXMuX2VzdFNjcm9sbEhlaWdodCl8fE1hdGguYWJzKHRoaXMuX2VzdFNjcm9sbEhlaWdodC10aGlzLl9zY3JvbGxIZWlnaHQpPj10aGlzLl92aWV3cG9ydEhlaWdodCkmJih0aGlzLiQuaXRlbXMuc3R5bGUuaGVpZ2h0PXRoaXMuX2VzdFNjcm9sbEhlaWdodCsicHgiLHRoaXMuX3Njcm9sbEhlaWdodD10aGlzLl9lc3RTY3JvbGxIZWlnaHQpfSxzY3JvbGxUb0luZGV4OmZ1bmN0aW9uKHQpe2lmKCEoIm51bWJlciIhPXR5cGVvZiB0fHx0PDB8fHQ+dGhpcy5pdGVtcy5sZW5ndGgtMSkmJih6aSgpLDAhPT10aGlzLl9waHlzaWNhbENvdW50KSl7dD10aGlzLl9jbGFtcCh0LDAsdGhpcy5fdmlydHVhbENvdW50LTEpLCghdGhpcy5faXNJbmRleFJlbmRlcmVkKHQpfHx0Pj10aGlzLl9tYXhWaXJ0dWFsU3RhcnQpJiYodGhpcy5fdmlydHVhbFN0YXJ0PXRoaXMuZ3JpZD90LTIqdGhpcy5faXRlbXNQZXJSb3c6dC0xKSx0aGlzLl9tYW5hZ2VGb2N1cygpLHRoaXMuX2Fzc2lnbk1vZGVscygpLHRoaXMuX3VwZGF0ZU1ldHJpY3MoKSx0aGlzLl9waHlzaWNhbFRvcD1NYXRoLmZsb29yKHRoaXMuX3ZpcnR1YWxTdGFydC90aGlzLl9pdGVtc1BlclJvdykqdGhpcy5fcGh5c2ljYWxBdmVyYWdlO2Zvcih2YXIgZT10aGlzLl9waHlzaWNhbFN0YXJ0LG49dGhpcy5fdmlydHVhbFN0YXJ0LGk9MCxyPXRoaXMuX2hpZGRlbkNvbnRlbnRTaXplO248dCYmaTw9cjspaSs9dGhpcy5fZ2V0UGh5c2ljYWxTaXplSW5jcmVtZW50KGUpLGU9KGUrMSkldGhpcy5fcGh5c2ljYWxDb3VudCxuKys7dGhpcy5fdXBkYXRlU2Nyb2xsZXJTaXplKCEwKSx0aGlzLl9wb3NpdGlvbkl0ZW1zKCksdGhpcy5fcmVzZXRTY3JvbGxQb3NpdGlvbih0aGlzLl9waHlzaWNhbFRvcCt0aGlzLl9zY3JvbGxPZmZzZXQraSksdGhpcy5faW5jcmVhc2VQb29sSWZOZWVkZWQoMCksdGhpcy5fZmlyc3RWaXNpYmxlSW5kZXhWYWw9bnVsbCx0aGlzLl9sYXN0VmlzaWJsZUluZGV4VmFsPW51bGx9fSxfcmVzZXRBdmVyYWdlOmZ1bmN0aW9uKCl7dGhpcy5fcGh5c2ljYWxBdmVyYWdlPTAsdGhpcy5fcGh5c2ljYWxBdmVyYWdlQ291bnQ9MH0sX3Jlc2l6ZUhhbmRsZXI6ZnVuY3Rpb24oKXt0aGlzLl9kZWJvdW5jZSgiX3JlbmRlciIsKGZ1bmN0aW9uKCl7dGhpcy5fZmlyc3RWaXNpYmxlSW5kZXhWYWw9bnVsbCx0aGlzLl9sYXN0VmlzaWJsZUluZGV4VmFsPW51bGwsdGhpcy51cGRhdGVWaWV3cG9ydEJvdW5kYXJpZXMoKSx0aGlzLl9pc1Zpc2libGU/KHRoaXMudG9nZ2xlU2Nyb2xsTGlzdGVuZXIoITApLHRoaXMuX3Jlc2V0QXZlcmFnZSgpLHRoaXMuX3JlbmRlcigpKTp0aGlzLnRvZ2dsZVNjcm9sbExpc3RlbmVyKCExKX0pLEZ6dCl9LF9jb252ZXJ0SW5kZXhUb0NvbXBsZXRlUm93OmZ1bmN0aW9uKHQpe3JldHVybiB0aGlzLl9pdGVtc1BlclJvdz10aGlzLl9pdGVtc1BlclJvd3x8MSx0aGlzLmdyaWQ/TWF0aC5jZWlsKHQvdGhpcy5faXRlbXNQZXJSb3cpKnRoaXMuX2l0ZW1zUGVyUm93OnR9LF9pc0luZGV4UmVuZGVyZWQ6ZnVuY3Rpb24odCl7cmV0dXJuIHQ+PXRoaXMuX3ZpcnR1YWxTdGFydCYmdDw9dGhpcy5fdmlydHVhbEVuZH0sX2dldFBoeXNpY2FsSW5kZXg6ZnVuY3Rpb24odCl7cmV0dXJuKHRoaXMuX3BoeXNpY2FsU3RhcnQrKHQtdGhpcy5fdmlydHVhbFN0YXJ0KSkldGhpcy5fcGh5c2ljYWxDb3VudH0sX2NsYW1wOmZ1bmN0aW9uKHQsZSxuKXtyZXR1cm4gTWF0aC5taW4obixNYXRoLm1heChlLHQpKX0sX2RlYm91bmNlOmZ1bmN0aW9uKHQsZSxuKXt0aGlzLl9kZWJvdW5jZXJzPXRoaXMuX2RlYm91bmNlcnN8fHt9LHRoaXMuX2RlYm91bmNlcnNbdF09RW4uZGVib3VuY2UodGhpcy5fZGVib3VuY2Vyc1t0XSxuLGUuYmluZCh0aGlzKSksQW4odGhpcy5fZGVib3VuY2Vyc1t0XSl9fSk7Ci8qKgogICAgQGxpY2Vuc2UKICAgIENvcHlyaWdodCAoYykgMjAxNyBWYWFkaW4gTHRkLgogICAgVGhpcyBwcm9ncmFtIGlzIGF2YWlsYWJsZSB1bmRlciBBcGFjaGUgTGljZW5zZSBWZXJzaW9uIDIuMCwgYXZhaWxhYmxlIGF0IGh0dHBzOi8vdmFhZGluLmNvbS9saWNlbnNlLwogICAgKi9jbGFzcyBHenQgZXh0ZW5kcyBVenR7c3RhdGljIGdldCBpcygpe3JldHVybiJ2YWFkaW4tZ3JpZC1zY3JvbGxlciJ9c3RhdGljIGdldCBwcm9wZXJ0aWVzKCl7cmV0dXJue3NpemU6e3R5cGU6TnVtYmVyLG5vdGlmeTohMH0sX3ZpZHhPZmZzZXQ6e3ZhbHVlOjB9fX1zdGF0aWMgZ2V0IG9ic2VydmVycygpe3JldHVyblsiX2VmZmVjdGl2ZVNpemVDaGFuZ2VkKF9lZmZlY3RpdmVTaXplKSJdfWNvbm5lY3RlZENhbGxiYWNrKCl7c3VwZXIuY29ubmVjdGVkQ2FsbGJhY2soKSx0aGlzLl9zY3JvbGxIYW5kbGVyKCl9X3VwZGF0ZVNjcm9sbGVySXRlbSh0LGUpe31fYWZ0ZXJTY3JvbGwoKXt9X2dldFJvd1RhcmdldCgpe31fY3JlYXRlU2Nyb2xsZXJSb3dzKCl7fV9jYW5Qb3B1bGF0ZSgpe31zY3JvbGxUb0luZGV4KHQpe3RoaXMuX3dhcm5Qcml2YXRlQVBJQWNjZXNzKCJzY3JvbGxUb0luZGV4IiksdGhpcy5fc2Nyb2xsaW5nVG9JbmRleD0hMCx0PU1hdGgubWluKE1hdGgubWF4KHQsMCksdGhpcy5fZWZmZWN0aXZlU2l6ZS0xKSx0aGlzLiQudGFibGUuc2Nyb2xsVG9wPXQvdGhpcy5fZWZmZWN0aXZlU2l6ZSoodGhpcy4kLnRhYmxlLnNjcm9sbEhlaWdodC10aGlzLiQudGFibGUub2Zmc2V0SGVpZ2h0KSx0aGlzLl9zY3JvbGxIYW5kbGVyKCksdGhpcy5fYWNjZXNzSXJvbkxpc3RBUEkoKCgpPT50aGlzLl9tYXhTY3JvbGxUb3ApKSYmdGhpcy5fdmlydHVhbENvdW50PHRoaXMuX2VmZmVjdGl2ZVNpemUmJnRoaXMuX2FkanVzdFZpcnR1YWxJbmRleE9mZnNldCgxZTYpLHRoaXMuX2FjY2Vzc0lyb25MaXN0QVBJKCgoKT0+c3VwZXIuc2Nyb2xsVG9JbmRleCh0LXRoaXMuX3ZpZHhPZmZzZXQpKSksdGhpcy5fc2Nyb2xsSGFuZGxlcigpO2NvbnN0IGU9QXJyYXkuZnJvbSh0aGlzLiQuaXRlbXMuY2hpbGRyZW4pLmZpbHRlcigoZT0+ZS5pbmRleD09PXQpKVswXTtpZihlKXtjb25zdCB0PWUuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCkudG9wLXRoaXMuJC5oZWFkZXIuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCkuYm90dG9tO01hdGguYWJzKHQpPjEmJih0aGlzLiQudGFibGUuc2Nyb2xsVG9wKz10LHRoaXMuX3Njcm9sbEhhbmRsZXIoKSl9dGhpcy5fc2Nyb2xsaW5nVG9JbmRleD0hMX1fZWZmZWN0aXZlU2l6ZUNoYW5nZWQodCl7bGV0IGUsbj0wO3RoaXMuX2l0ZXJhdGVJdGVtcygoKHQsaSk9PntpZihpPT09dGhpcy5fZmlyc3RWaXNpYmxlSW5kZXgpe2NvbnN0IGk9dGhpcy5fcGh5c2ljYWxJdGVtc1t0XTtlPWkuaW5kZXgsbj1pLmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpLnRvcH19KSksdGhpcy5pdGVtcyYmdDx0aGlzLml0ZW1zLmxlbmd0aCYmKHRoaXMuX3Njcm9sbFRvcD0wKSxBcnJheS5pc0FycmF5KHRoaXMuaXRlbXMpfHwodGhpcy5pdGVtcz17bGVuZ3RoOk1hdGgubWluKHQsdGhpcy5fZWRnZXx8dGhpcy5faWU/M2U0OjFlNSl9KSx0aGlzLl9hY2Nlc3NJcm9uTGlzdEFQSSgoKCk9PnN1cGVyLl9pdGVtc0NoYW5nZWQoe3BhdGg6Iml0ZW1zIn0pKSksdGhpcy5fdmlydHVhbENvdW50PU1hdGgubWluKHRoaXMuaXRlbXMubGVuZ3RoLHQpfHwwLDA9PT10aGlzLl9zY3JvbGxUb3AmJih0aGlzLl9hY2Nlc3NJcm9uTGlzdEFQSSgoKCk9PnRoaXMuX3Njcm9sbFRvSW5kZXgoTWF0aC5taW4odC0xLGUpKSkpLHRoaXMuX2l0ZXJhdGVJdGVtcygoKHQsaSk9Pntjb25zdCByPXRoaXMuX3BoeXNpY2FsSXRlbXNbdF07aWYoci5pbmRleD09PWUmJih0aGlzLiQudGFibGUuc2Nyb2xsVG9wKz1NYXRoLnJvdW5kKHIuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCkudG9wLW4pKSxyLmluZGV4PT09dGhpcy5fZm9jdXNlZEl0ZW1JbmRleCYmdGhpcy5faXRlbXNGb2N1c2FibGUmJnRoaXMuJC5pdGVtcy5jb250YWlucyh0aGlzLnNoYWRvd1Jvb3QuYWN0aXZlRWxlbWVudCkpe2NvbnN0IHQ9QXJyYXkuZnJvbSh0aGlzLl9pdGVtc0ZvY3VzYWJsZS5wYXJlbnRFbGVtZW50LmNoaWxkcmVuKS5pbmRleE9mKHRoaXMuX2l0ZW1zRm9jdXNhYmxlKTtyLmNoaWxkcmVuW3RdLmZvY3VzKCl9fSkpKSx0aGlzLl9hc3NpZ25Nb2RlbHMoKSxyZXF1ZXN0QW5pbWF0aW9uRnJhbWUoKCgpPT50aGlzLl91cGRhdGUoKSkpLHRoaXMuX191cGRhdGVGb290ZXJQb3NpdGlvbmluZygpLHRoaXMuX2llJiYodGhpcy4kLnRhYmxlLnN0eWxlLmRpc3BsYXk9ImJsb2NrIixzZXRUaW1lb3V0KCgoKT0+e3RoaXMuJC50YWJsZS5zdHlsZS5kaXNwbGF5PSJmbGV4Iix0aGlzLl90cmFuc2xhdGVTdGF0aW9uYXJ5RWxlbWVudHMoKX0pKSl9X3Bvc2l0aW9uSXRlbXMoKXtsZXQgdDt0aGlzLl9hZGp1c3RTY3JvbGxQb3NpdGlvbigpLGlzTmFOKHRoaXMuX3BoeXNpY2FsVG9wKSYmKHQ9ITAsdGhpcy5fcGh5c2ljYWxUb3A9MCk7bGV0IGU9dGhpcy5fcGh5c2ljYWxUb3A7dGhpcy5faXRlcmF0ZUl0ZW1zKCgodCxuKT0+e3RoaXMuX3BoeXNpY2FsSXRlbXNbdF0uc3R5bGUudHJhbnNmb3JtPWB0cmFuc2xhdGVZKCR7ZX1weClgLGUrPXRoaXMuX3BoeXNpY2FsU2l6ZXNbdF19KSksdCYmdGhpcy5fc2Nyb2xsVG9JbmRleCgwKX1faW5jcmVhc2VQb29sSWZOZWVkZWQodCl7MD09PXQmJnRoaXMuX3Njcm9sbGluZ1RvSW5kZXh8fCF0aGlzLl9jYW5Qb3B1bGF0ZSgpfHwhdGhpcy5fZWZmZWN0aXZlU2l6ZXx8KHRoaXMuX2luaXRpYWxQb29sQ3JlYXRlZD90aGlzLl9vcHRQaHlzaWNhbFNpemUhPT0xLzAmJih0aGlzLl9kZWJvdW5jZUluY3JlYXNlUG9vbD1Fbi5kZWJvdW5jZSh0aGlzLl9kZWJvdW5jZUluY3JlYXNlUG9vbCxfdCwoKCk9Pnt0aGlzLl91cGRhdGVNZXRyaWNzKCk7bGV0IHQ9TWF0aC5jZWlsKCh0aGlzLl9vcHRQaHlzaWNhbFNpemUtdGhpcy5fcGh5c2ljYWxTaXplKS90aGlzLl9waHlzaWNhbEF2ZXJhZ2UpO3RoaXMuX3BoeXNpY2FsQ291bnQrdD50aGlzLl9lZmZlY3RpdmVTaXplJiYodD1NYXRoLm1heCgwLHRoaXMuX2VmZmVjdGl2ZVNpemUtdGhpcy5fcGh5c2ljYWxDb3VudCkpLHRoaXMuX3BoeXNpY2FsU2l6ZSYmdD4wJiZ0aGlzLl9vcHRQaHlzaWNhbFNpemUhPT0xLzAmJihzdXBlci5faW5jcmVhc2VQb29sSWZOZWVkZWQodCksdGhpcy5fX3Jlb3JkZXJDaGlsZE5vZGVzKCkpfSkpKToodGhpcy5faW5pdGlhbFBvb2xDcmVhdGVkPSEwLHN1cGVyLl9pbmNyZWFzZVBvb2xJZk5lZWRlZCgyNSkpKX1fX3Jlb3JkZXJDaGlsZE5vZGVzKCl7Y29uc3QgdD1BcnJheS5mcm9tKHRoaXMuJC5pdGVtcy5jaGlsZE5vZGVzKTt0LnJlZHVjZSgoKHQsZSxuLGkpPT57aWYoMD09PW58fGlbbi0xXS5pbmRleD09PWUuaW5kZXgtMSlyZXR1cm4gdH0pLCEwKXx8dC5zb3J0KCgodCxlKT0+dC5pbmRleC1lLmluZGV4KSkuZm9yRWFjaCgodD0+dGhpcy4kLml0ZW1zLmFwcGVuZENoaWxkKHQpKSl9X2NyZWF0ZVBvb2wodCl7Y29uc3QgZT1kb2N1bWVudC5jcmVhdGVEb2N1bWVudEZyYWdtZW50KCksbj10aGlzLl9jcmVhdGVTY3JvbGxlclJvd3ModCk7bi5mb3JFYWNoKCh0PT5lLmFwcGVuZENoaWxkKHQpKSksdGhpcy5fZ2V0Um93VGFyZ2V0KCkuYXBwZW5kQ2hpbGQoZSk7Y29uc3QgaT10aGlzLnF1ZXJ5U2VsZWN0b3IoIltzbG90XSIpO2lmKGkpe2NvbnN0IHQ9aS5nZXRBdHRyaWJ1dGUoInNsb3QiKTtpLnNldEF0dHJpYnV0ZSgic2xvdCIsImZvby1iYXIiKSxpLnNldEF0dHJpYnV0ZSgic2xvdCIsdCl9cmV0dXJuIGtpKHRoaXMsKCgpPT50aGlzLm5vdGlmeVJlc2l6ZSgpKSksbn1fYXNzaWduTW9kZWxzKHQpe3RoaXMuX2l0ZXJhdGVJdGVtcygoKHQsZSk9Pntjb25zdCBuPXRoaXMuX3BoeXNpY2FsSXRlbXNbdF07dGhpcy5fdG9nZ2xlQXR0cmlidXRlKCJoaWRkZW4iLGU+PXRoaXMuX2VmZmVjdGl2ZVNpemUsbiksdGhpcy5fdXBkYXRlU2Nyb2xsZXJJdGVtKG4sZSsodGhpcy5fdmlkeE9mZnNldHx8MCkpfSksdCl9X3Njcm9sbEhhbmRsZXIoKXtjb25zdCB0PXRoaXMuJC50YWJsZS5zY3JvbGxUb3AtdGhpcy5fc2Nyb2xsUG9zaXRpb247dGhpcy5fYWNjZXNzSXJvbkxpc3RBUEkoc3VwZXIuX3Njcm9sbEhhbmRsZXIpO2NvbnN0IGU9dGhpcy5fdmlkeE9mZnNldDt0aGlzLl9hY2Nlc3NJcm9uTGlzdEFQSSgoKCk9PnRoaXMuX21heFNjcm9sbFRvcCkpJiZ0aGlzLl92aXJ0dWFsQ291bnQ8dGhpcy5fZWZmZWN0aXZlU2l6ZT90aGlzLl9hZGp1c3RWaXJ0dWFsSW5kZXhPZmZzZXQodCk6dGhpcy5fdmlkeE9mZnNldD0wLHRoaXMuX3ZpZHhPZmZzZXQhPT1lJiZ0aGlzLl91cGRhdGUoKSx0aGlzLl9hZnRlclNjcm9sbCgpfV9hZGp1c3RWaXJ0dWFsSW5kZXhPZmZzZXQodCl7aWYoTWF0aC5hYnModCk+MWU0KXtpZih0aGlzLl9ub1NjYWxlKXJldHVybiB2b2lkKHRoaXMuX25vU2NhbGU9ITEpO2NvbnN0IHQ9dGhpcy4kLnRhYmxlLnNjcm9sbFRvcC8odGhpcy4kLnRhYmxlLnNjcm9sbEhlaWdodC10aGlzLiQudGFibGUub2Zmc2V0SGVpZ2h0KTt0aGlzLl92aWR4T2Zmc2V0PU1hdGgucm91bmQodCp0aGlzLl9lZmZlY3RpdmVTaXplLXQqdGhpcy5fdmlydHVhbENvdW50KX1lbHNle2NvbnN0IHQ9dGhpcy5fdmlkeE9mZnNldHx8MCxlPTFlMyxuPTEwMDswPT09dGhpcy5fc2Nyb2xsVG9wPyh0aGlzLl92aWR4T2Zmc2V0PTAsdCE9PXRoaXMuX3ZpZHhPZmZzZXQmJnN1cGVyLnNjcm9sbFRvSW5kZXgoMCkpOnRoaXMuZmlyc3RWaXNpYmxlSW5kZXg8ZSYmdGhpcy5fdmlkeE9mZnNldD4wJiYodGhpcy5fdmlkeE9mZnNldC09TWF0aC5taW4odGhpcy5fdmlkeE9mZnNldCxuKSx0IT09dGhpcy5fdmlkeE9mZnNldCYmc3VwZXIuc2Nyb2xsVG9JbmRleCh0aGlzLmZpcnN0VmlzaWJsZUluZGV4Kyh0LXRoaXMuX3ZpZHhPZmZzZXQpKSx0aGlzLl9ub1NjYWxlPSEwKTtjb25zdCBpPXRoaXMuX2VmZmVjdGl2ZVNpemUtdGhpcy5fdmlydHVhbENvdW50O3RoaXMuX3Njcm9sbFRvcD49dGhpcy5fbWF4U2Nyb2xsVG9wJiZ0aGlzLl9tYXhTY3JvbGxUb3A+MD8odGhpcy5fdmlkeE9mZnNldD1pLHQhPT10aGlzLl92aWR4T2Zmc2V0JiZzdXBlci5zY3JvbGxUb0luZGV4KHRoaXMuX3ZpcnR1YWxDb3VudCkpOnRoaXMuZmlyc3RWaXNpYmxlSW5kZXg+dGhpcy5fdmlydHVhbENvdW50LWUmJnRoaXMuX3ZpZHhPZmZzZXQ8aSYmKHRoaXMuX3ZpZHhPZmZzZXQrPU1hdGgubWluKGktdGhpcy5fdmlkeE9mZnNldCxuKSx0IT09dGhpcy5fdmlkeE9mZnNldCYmc3VwZXIuc2Nyb2xsVG9JbmRleCh0aGlzLmZpcnN0VmlzaWJsZUluZGV4LSh0aGlzLl92aWR4T2Zmc2V0LXQpKSx0aGlzLl9ub1NjYWxlPSEwKX19X2FjY2Vzc0lyb25MaXN0QVBJKHQpe3RoaXMuX3dhcm5Qcml2YXRlQVBJQWNjZXNzQXN5bmNFbmFibGVkPSExO2NvbnN0IGU9dC5hcHBseSh0aGlzKTtyZXR1cm4gdGhpcy5fZGVib3VuY2VyV2FyblByaXZhdGVBUElBY2Nlc3M9RW4uZGVib3VuY2UodGhpcy5fZGVib3VuY2VyV2FyblByaXZhdGVBUElBY2Nlc3MsX3QsKCgpPT50aGlzLl93YXJuUHJpdmF0ZUFQSUFjY2Vzc0FzeW5jRW5hYmxlZD0hMCkpLGV9X2RlYm91bmNlUmVuZGVyKHQsZSl7c3VwZXIuX2RlYm91bmNlUmVuZGVyKCgoKT0+dGhpcy5fYWNjZXNzSXJvbkxpc3RBUEkodCkpLGUpfV93YXJuUHJpdmF0ZUFQSUFjY2Vzcyh0KXt0aGlzLl93YXJuUHJpdmF0ZUFQSUFjY2Vzc0FzeW5jRW5hYmxlZCYmY29uc29sZS53YXJuKGBBY2Nlc3NpbmcgcHJpdmF0ZSBBUEkgKCR7dH0pIWApfV9yZW5kZXIoKXt0aGlzLl9hY2Nlc3NJcm9uTGlzdEFQSShzdXBlci5fcmVuZGVyKX1fY3JlYXRlRm9jdXNCYWNrZmlsbEl0ZW0oKXt9X211bHRpU2VsZWN0aW9uQ2hhbmdlZCgpe31jbGVhclNlbGVjdGlvbigpe31faXRlbXNDaGFuZ2VkKCl7fV9tYW5hZ2VGb2N1cygpe31fcmVtb3ZlRm9jdXNlZEl0ZW0oKXt9Z2V0IF9maXJzdFZpc2libGVJbmRleCgpe3JldHVybiB0aGlzLl9hY2Nlc3NJcm9uTGlzdEFQSSgoKCk9PnN1cGVyLmZpcnN0VmlzaWJsZUluZGV4KSl9Z2V0IF9sYXN0VmlzaWJsZUluZGV4KCl7cmV0dXJuIHRoaXMuX2FjY2Vzc0lyb25MaXN0QVBJKCgoKT0+c3VwZXIubGFzdFZpc2libGVJbmRleCkpfV9zY3JvbGxUb0luZGV4KHQpe3RoaXMuX2FjY2Vzc0lyb25MaXN0QVBJKCgoKT0+dGhpcy5zY3JvbGxUb0luZGV4KHQpKSl9Z2V0IGZpcnN0VmlzaWJsZUluZGV4KCl7cmV0dXJuIHRoaXMuX3dhcm5Qcml2YXRlQVBJQWNjZXNzKCJmaXJzdFZpc2libGVJbmRleCIpLHN1cGVyLmZpcnN0VmlzaWJsZUluZGV4fXNldCBmaXJzdFZpc2libGVJbmRleCh0KXt0aGlzLl93YXJuUHJpdmF0ZUFQSUFjY2VzcygiZmlyc3RWaXNpYmxlSW5kZXgiKSxzdXBlci5maXJzdFZpc2libGVJbmRleD10fWdldCBsYXN0VmlzaWJsZUluZGV4KCl7cmV0dXJuIHRoaXMuX3dhcm5Qcml2YXRlQVBJQWNjZXNzKCJsYXN0VmlzaWJsZUluZGV4Iiksc3VwZXIubGFzdFZpc2libGVJbmRleH1zZXQgbGFzdFZpc2libGVJbmRleCh0KXt0aGlzLl93YXJuUHJpdmF0ZUFQSUFjY2VzcygibGFzdFZpc2libGVJbmRleCIpLHN1cGVyLmxhc3RWaXNpYmxlSW5kZXg9dH11cGRhdGVWaWV3cG9ydEJvdW5kYXJpZXMoKXt0aGlzLl93YXJuUHJpdmF0ZUFQSUFjY2VzcygidXBkYXRlVmlld3BvcnRCb3VuZGFyaWVzIiksc3VwZXIudXBkYXRlVmlld3BvcnRCb3VuZGFyaWVzLmFwcGx5KHRoaXMsYXJndW1lbnRzKX1fcmVzaXplSGFuZGxlcigpe3N1cGVyLl9yZXNpemVIYW5kbGVyKCksemkoKX19Y3VzdG9tRWxlbWVudHMuZGVmaW5lKEd6dC5pcyxHenQpOwovKioKICAgIEBsaWNlbnNlCiAgICBDb3B5cmlnaHQgKGMpIDIwMTcgVmFhZGluIEx0ZC4KICAgIFRoaXMgcHJvZ3JhbSBpcyBhdmFpbGFibGUgdW5kZXIgQXBhY2hlIExpY2Vuc2UgVmVyc2lvbiAyLjAsIGF2YWlsYWJsZSBhdCBodHRwczovL3ZhYWRpbi5jb20vbGljZW5zZS8KICAgICovCmNvbnN0IFd6dD10PT5jbGFzcyBleHRlbmRzIHR7c3RhdGljIGdldCBvYnNlcnZlcnMoKXtyZXR1cm5bIl9hMTF5VXBkYXRlR3JpZFNpemUoc2l6ZSwgX2NvbHVtblRyZWUsIF9jb2x1bW5UcmVlLiopIl19X2ExMXlHZXRIZWFkZXJSb3dDb3VudCh0KXtyZXR1cm4gdC5maWx0ZXIoKHQ9PnQuc29tZSgodD0+dC5faGVhZGVyVGVtcGxhdGV8fHQuaGVhZGVyUmVuZGVyZXJ8fHQucGF0aHx8dC5oZWFkZXIpKSkpLmxlbmd0aH1fYTExeUdldEZvb3RlclJvd0NvdW50KHQpe3JldHVybiB0LmZpbHRlcigodD0+dC5zb21lKCh0PT50Ll9oZWFkZXJUZW1wbGF0ZXx8dC5oZWFkZXJSZW5kZXJlcikpKSkubGVuZ3RofV9hMTF5VXBkYXRlR3JpZFNpemUodCxlKXtpZih2b2lkIDA9PT10fHx2b2lkIDA9PT1lKXJldHVybjtjb25zdCBuPWVbZS5sZW5ndGgtMV07dGhpcy4kLnRhYmxlLnNldEF0dHJpYnV0ZSgiYXJpYS1yb3djb3VudCIsdCt0aGlzLl9hMTF5R2V0SGVhZGVyUm93Q291bnQoZSkrdGhpcy5fYTExeUdldEZvb3RlclJvd0NvdW50KGUpKSx0aGlzLiQudGFibGUuc2V0QXR0cmlidXRlKCJhcmlhLWNvbGNvdW50IixuJiZuLmxlbmd0aHx8MCksdGhpcy5fYTExeVVwZGF0ZUhlYWRlclJvd3MoKSx0aGlzLl9hMTF5VXBkYXRlRm9vdGVyUm93cygpfV9hMTF5VXBkYXRlSGVhZGVyUm93cygpe0FycmF5LmZyb20odGhpcy4kLmhlYWRlci5jaGlsZHJlbikuZm9yRWFjaCgoKHQsZSk9PnQuc2V0QXR0cmlidXRlKCJhcmlhLXJvd2luZGV4IixlKzEpKSl9X2ExMXlVcGRhdGVGb290ZXJSb3dzKCl7QXJyYXkuZnJvbSh0aGlzLiQuZm9vdGVyLmNoaWxkcmVuKS5mb3JFYWNoKCgodCxlKT0+dC5zZXRBdHRyaWJ1dGUoImFyaWEtcm93aW5kZXgiLHRoaXMuX2ExMXlHZXRIZWFkZXJSb3dDb3VudCh0aGlzLl9jb2x1bW5UcmVlKSt0aGlzLnNpemUrZSsxKSkpfV9hMTF5VXBkYXRlUm93Um93aW5kZXgodCxlKXt0LnNldEF0dHJpYnV0ZSgiYXJpYS1yb3dpbmRleCIsZSt0aGlzLl9hMTF5R2V0SGVhZGVyUm93Q291bnQodGhpcy5fY29sdW1uVHJlZSkrMSl9X2ExMXlVcGRhdGVSb3dTZWxlY3RlZCh0LGUpe3Quc2V0QXR0cmlidXRlKCJhcmlhLXNlbGVjdGVkIixCb29sZWFuKGUpKSxBcnJheS5mcm9tKHQuY2hpbGRyZW4pLmZvckVhY2goKHQ9PnQuc2V0QXR0cmlidXRlKCJhcmlhLXNlbGVjdGVkIixCb29sZWFuKGUpKSkpfV9hMTF5VXBkYXRlUm93TGV2ZWwodCxlKXt0LnNldEF0dHJpYnV0ZSgiYXJpYS1sZXZlbCIsZSsxKX1fYTExeVVwZGF0ZVJvd0RldGFpbHNPcGVuZWQodCxlKXtBcnJheS5mcm9tKHQuY2hpbGRyZW4pLmZvckVhY2goKHQ9PnsiYm9vbGVhbiI9PXR5cGVvZiBlP3Quc2V0QXR0cmlidXRlKCJhcmlhLWV4cGFuZGVkIixlKTp0Lmhhc0F0dHJpYnV0ZSgiYXJpYS1leHBhbmRlZCIpJiZ0LnJlbW92ZUF0dHJpYnV0ZSgiYXJpYS1leHBhbmRlZCIpfSkpfV9hMTF5U2V0Um93RGV0YWlsc0NlbGwodCxlKXtBcnJheS5mcm9tKHQuY2hpbGRyZW4pLmZvckVhY2goKHQ9Pnt0IT09ZSYmdC5zZXRBdHRyaWJ1dGUoImFyaWEtY29udHJvbHMiLGUuaWQpfSkpfV9hMTF5VXBkYXRlQ2VsbENvbHNwYW4odCxlKXt0LnNldEF0dHJpYnV0ZSgiYXJpYS1jb2xzcGFuIixOdW1iZXIoZSkpfV9hMTF5VXBkYXRlU29ydGVycygpe0FycmF5LmZyb20odGhpcy5xdWVyeVNlbGVjdG9yQWxsKCJ2YWFkaW4tZ3JpZC1zb3J0ZXIiKSkuZm9yRWFjaCgodD0+e2xldCBlPXQucGFyZW50Tm9kZTtmb3IoO2UmJiJ2YWFkaW4tZ3JpZC1jZWxsLWNvbnRlbnQiIT09ZS5sb2NhbE5hbWU7KWU9ZS5wYXJlbnROb2RlO2UmJmUuYXNzaWduZWRTbG90JiZlLmFzc2lnbmVkU2xvdC5wYXJlbnROb2RlLnNldEF0dHJpYnV0ZSgiYXJpYS1zb3J0Iix7YXNjOiJhc2NlbmRpbmciLGRlc2M6ImRlc2NlbmRpbmcifVtTdHJpbmcodC5kaXJlY3Rpb24pXXx8Im5vbmUiKX0pKX19Ci8qKgogICAgQGxpY2Vuc2UKICAgIENvcHlyaWdodCAoYykgMjAxNyBWYWFkaW4gTHRkLgogICAgVGhpcyBwcm9ncmFtIGlzIGF2YWlsYWJsZSB1bmRlciBBcGFjaGUgTGljZW5zZSBWZXJzaW9uIDIuMCwgYXZhaWxhYmxlIGF0IGh0dHBzOi8vdmFhZGluLmNvbS9saWNlbnNlLwogICAgKi8scXp0PXQ9PmNsYXNzIGV4dGVuZHMgdHtzdGF0aWMgZ2V0IHByb3BlcnRpZXMoKXtyZXR1cm57YWN0aXZlSXRlbTp7dHlwZTpPYmplY3Qsbm90aWZ5OiEwLHZhbHVlOm51bGx9fX1yZWFkeSgpe3N1cGVyLnJlYWR5KCksdGhpcy4kLnNjcm9sbGVyLmFkZEV2ZW50TGlzdGVuZXIoImNsaWNrIix0aGlzLl9vbkNsaWNrLmJpbmQodGhpcykpLHRoaXMuYWRkRXZlbnRMaXN0ZW5lcigiY2VsbC1hY3RpdmF0ZSIsdGhpcy5fYWN0aXZhdGVJdGVtLmJpbmQodGhpcykpfV9hY3RpdmF0ZUl0ZW0odCl7Y29uc3QgZT10LmRldGFpbC5tb2RlbCxuPWU/ZS5pdGVtOm51bGw7biYmKHRoaXMuYWN0aXZlSXRlbT10aGlzLl9pdGVtc0VxdWFsKHRoaXMuYWN0aXZlSXRlbSxuKT9udWxsOm4pfV9vbkNsaWNrKHQpe2lmKHQuZGVmYXVsdFByZXZlbnRlZClyZXR1cm47Y29uc3QgZT10LmNvbXBvc2VkUGF0aCgpLG49ZVtlLmluZGV4T2YodGhpcy4kLnRhYmxlKS0zXTtpZighbnx8bi5nZXRBdHRyaWJ1dGUoInBhcnQiKS5pbmRleE9mKCJkZXRhaWxzLWNlbGwiKT4tMSlyZXR1cm47Y29uc3QgaT1uLl9jb250ZW50LHI9dGhpcy5nZXRSb290Tm9kZSgpLmFjdGl2ZUVsZW1lbnQ7aS5jb250YWlucyhyKSYmKCF0aGlzLl9pZXx8dGhpcy5faXNGb2N1c2FibGUocikpfHx0aGlzLl9pc0ZvY3VzYWJsZSh0LnRhcmdldCl8fHRoaXMuZGlzcGF0Y2hFdmVudChuZXcgQ3VzdG9tRXZlbnQoImNlbGwtYWN0aXZhdGUiLHtkZXRhaWw6e21vZGVsOnRoaXMuX19nZXRSb3dNb2RlbChuLnBhcmVudEVsZW1lbnQpfX0pKX1faXNGb2N1c2FibGUodCl7cmV0dXJuIFl6dCh0KX19LFl6dD10PT57aWYoIXQucGFyZW50Tm9kZSlyZXR1cm4hMTtjb25zdCBlPS0xIT09QXJyYXkuZnJvbSh0LnBhcmVudE5vZGUucXVlcnlTZWxlY3RvckFsbCgiW3RhYmluZGV4XSwgYnV0dG9uLCBpbnB1dCwgc2VsZWN0LCB0ZXh0YXJlYSwgb2JqZWN0LCBpZnJhbWUsIGxhYmVsLCBhW2hyZWZdLCBhcmVhW2hyZWZdIikpLmZpbHRlcigodD0+ImNlbGwgYm9keS1jZWxsIiE9PXQuZ2V0QXR0cmlidXRlKCJwYXJ0IikpKS5pbmRleE9mKHQpO3JldHVybiF0LmRpc2FibGVkJiZlfSxYenQ9dD0+Y2xhc3MgZXh0ZW5kcyB0e3N0YXRpYyBnZXQgcHJvcGVydGllcygpe3JldHVybntpdGVtczpBcnJheX19c3RhdGljIGdldCBvYnNlcnZlcnMoKXtyZXR1cm5bIl9pdGVtc0NoYW5nZWQoaXRlbXMsIGl0ZW1zLiosIGlzQXR0YWNoZWQpIl19X2l0ZW1zQ2hhbmdlZCh0LGUsbil7aWYobil7aWYoIUFycmF5LmlzQXJyYXkodCkpcmV0dXJuIG51bGw9PXQmJih0aGlzLnNpemU9MCksdm9pZCh0aGlzLmRhdGFQcm92aWRlcj09PXRoaXMuX2FycmF5RGF0YVByb3ZpZGVyJiYodGhpcy5kYXRhUHJvdmlkZXI9dm9pZCAwKSk7dGhpcy5zaXplPXQubGVuZ3RoLHRoaXMuZGF0YVByb3ZpZGVyPXRoaXMuZGF0YVByb3ZpZGVyfHx0aGlzLl9hcnJheURhdGFQcm92aWRlcix0aGlzLmNsZWFyQ2FjaGUoKSx0aGlzLl9lbnN1cmVGaXJzdFBhZ2VMb2FkZWQoKX19X2FycmF5RGF0YVByb3ZpZGVyKHQsZSl7bGV0IG49KEFycmF5LmlzQXJyYXkodGhpcy5pdGVtcyk/dGhpcy5pdGVtczpbXSkuc2xpY2UoMCk7dGhpcy5fZmlsdGVycyYmdGhpcy5fY2hlY2tQYXRocyh0aGlzLl9maWx0ZXJzLCJmaWx0ZXJpbmciLG4pJiYobj10aGlzLl9maWx0ZXIobikpLHRoaXMuc2l6ZT1uLmxlbmd0aCx0LnNvcnRPcmRlcnMubGVuZ3RoJiZ0aGlzLl9jaGVja1BhdGhzKHRoaXMuX3NvcnRlcnMsInNvcnRpbmciLG4pJiYobj1uLnNvcnQodGhpcy5fbXVsdGlTb3J0LmJpbmQodGhpcykpKTtjb25zdCBpPXQucGFnZSp0LnBhZ2VTaXplO2Uobi5zbGljZShpLGkrdC5wYWdlU2l6ZSksbi5sZW5ndGgpfV9jaGVja1BhdGhzKHQsZSxuKXtpZighbi5sZW5ndGgpcmV0dXJuITE7bGV0IGk9ITA7Zm9yKHZhciByIGluIHQpe2NvbnN0IG89dFtyXS5wYXRoO2lmKCFvfHwtMT09PW8uaW5kZXhPZigiLiIpKWNvbnRpbnVlO2NvbnN0IGE9by5yZXBsYWNlKC9cLlteXC5dKiQvLCIiKTt2b2lkIDA9PT1wby5nZXQoYSxuWzBdKSYmKGNvbnNvbGUud2FybihgUGF0aCAiJHtvfSIgdXNlZCBmb3IgJHtlfSBkb2VzIG5vdCBleGlzdCBpbiBhbGwgb2YgdGhlIGl0ZW1zLCAke2V9IGlzIGRpc2FibGVkLmApLGk9ITEpfXJldHVybiBpfV9tdWx0aVNvcnQodCxlKXtyZXR1cm4gdGhpcy5fc29ydGVycy5tYXAoKG49PiJhc2MiPT09bi5kaXJlY3Rpb24/dGhpcy5fY29tcGFyZShwby5nZXQobi5wYXRoLHQpLHBvLmdldChuLnBhdGgsZSkpOiJkZXNjIj09PW4uZGlyZWN0aW9uP3RoaXMuX2NvbXBhcmUocG8uZ2V0KG4ucGF0aCxlKSxwby5nZXQobi5wYXRoLHQpKTowKSkucmVkdWNlKCgodCxlKT0+dHx8ZSksMCl9X25vcm1hbGl6ZUVtcHR5VmFsdWUodCl7cmV0dXJuW3ZvaWQgMCxudWxsXS5pbmRleE9mKHQpPj0wPyIiOmlzTmFOKHQpP3QudG9TdHJpbmcoKTp0fV9jb21wYXJlKHQsZSl7cmV0dXJuKHQ9dGhpcy5fbm9ybWFsaXplRW1wdHlWYWx1ZSh0KSk8KGU9dGhpcy5fbm9ybWFsaXplRW1wdHlWYWx1ZShlKSk/LTE6dD5lPzE6MH1fZmlsdGVyKHQpe3JldHVybiB0LmZpbHRlcigoKHQsZSk9PjA9PT10aGlzLl9maWx0ZXJzLmZpbHRlcigoZT0+e2NvbnN0IG49dGhpcy5fbm9ybWFsaXplRW1wdHlWYWx1ZShwby5nZXQoZS5wYXRoLHQpKSxpPXRoaXMuX25vcm1hbGl6ZUVtcHR5VmFsdWUoZS52YWx1ZSkudG9TdHJpbmcoKS50b0xvd2VyQ2FzZSgpO3JldHVybi0xPT09bi50b1N0cmluZygpLnRvTG93ZXJDYXNlKCkuaW5kZXhPZihpKX0pKS5sZW5ndGgpKX19Ci8qKgogICAgQGxpY2Vuc2UKICAgIENvcHlyaWdodCAoYykgMjAxNyBWYWFkaW4gTHRkLgogICAgVGhpcyBwcm9ncmFtIGlzIGF2YWlsYWJsZSB1bmRlciBBcGFjaGUgTGljZW5zZSBWZXJzaW9uIDIuMCwgYXZhaWxhYmxlIGF0IGh0dHBzOi8vdmFhZGluLmNvbS9saWNlbnNlLwogICAgKi8sJHp0PXQ9PmNsYXNzIGV4dGVuZHMoZGkodCkpe3JlYWR5KCl7c3VwZXIucmVhZHkoKTtjb25zdCB0PXRoaXMuJC5zY3JvbGxlcjtuaSh0LCJ0cmFjayIsdGhpcy5fb25IZWFkZXJUcmFjay5iaW5kKHRoaXMpKSx0LmFkZEV2ZW50TGlzdGVuZXIoInRvdWNobW92ZSIsKGU9PnQuaGFzQXR0cmlidXRlKCJjb2x1bW4tcmVzaXppbmciKSYmZS5wcmV2ZW50RGVmYXVsdCgpKSksdC5hZGRFdmVudExpc3RlbmVyKCJjb250ZXh0bWVudSIsKHQ9PiJyZXNpemUtaGFuZGxlIj09dC50YXJnZXQuZ2V0QXR0cmlidXRlKCJwYXJ0IikmJnQucHJldmVudERlZmF1bHQoKSkpLHQuYWRkRXZlbnRMaXN0ZW5lcigibW91c2Vkb3duIiwodD0+InJlc2l6ZS1oYW5kbGUiPT09dC50YXJnZXQuZ2V0QXR0cmlidXRlKCJwYXJ0IikmJnQucHJldmVudERlZmF1bHQoKSkpfV9vbkhlYWRlclRyYWNrKHQpe2NvbnN0IGU9dC50YXJnZXQ7aWYoInJlc2l6ZS1oYW5kbGUiPT09ZS5nZXRBdHRyaWJ1dGUoInBhcnQiKSl7bGV0IG89ZS5wYXJlbnRFbGVtZW50Ll9jb2x1bW47Zm9yKHRoaXMuX3RvZ2dsZUF0dHJpYnV0ZSgiY29sdW1uLXJlc2l6aW5nIiwhMCx0aGlzLiQuc2Nyb2xsZXIpOyJ2YWFkaW4tZ3JpZC1jb2x1bW4tZ3JvdXAiPT09by5sb2NhbE5hbWU7KW89QXJyYXkucHJvdG90eXBlLnNsaWNlLmNhbGwoby5fY2hpbGRDb2x1bW5zLDApLnNvcnQoKGZ1bmN0aW9uKHQsZSl7cmV0dXJuIHQuX29yZGVyLWUuX29yZGVyfSkpLmZpbHRlcigoZnVuY3Rpb24odCl7cmV0dXJuIXQuaGlkZGVufSkpLnBvcCgpO2NvbnN0IGE9QXJyYXkuZnJvbSh0aGlzLiQuaGVhZGVyLnF1ZXJ5U2VsZWN0b3JBbGwoJ1twYXJ0fj0icm93Il06bGFzdC1jaGlsZCBbcGFydH49ImNlbGwiXScpKTt2YXIgbj1hLmZpbHRlcigodD0+dC5fY29sdW1uPT09bykpWzBdO2lmKG4ub2Zmc2V0V2lkdGgpe3ZhciBpPXdpbmRvdy5nZXRDb21wdXRlZFN0eWxlKG4pLHI9MTArcGFyc2VJbnQoaS5wYWRkaW5nTGVmdCkrcGFyc2VJbnQoaS5wYWRkaW5nUmlnaHQpK3BhcnNlSW50KGkuYm9yZGVyTGVmdFdpZHRoKStwYXJzZUludChpLmJvcmRlclJpZ2h0V2lkdGgpK3BhcnNlSW50KGkubWFyZ2luTGVmdCkrcGFyc2VJbnQoaS5tYXJnaW5SaWdodCk7Y29uc3QgZT1uLm9mZnNldFdpZHRoKyh0aGlzLl9faXNSVEw/bi5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKS5sZWZ0LXQuZGV0YWlsLng6dC5kZXRhaWwueC1uLmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpLnJpZ2h0KTtvLndpZHRoPU1hdGgubWF4KHIsZSkrInB4IixvLmZsZXhHcm93PTB9YS5zb3J0KChmdW5jdGlvbih0LGUpe3JldHVybiB0Ll9jb2x1bW4uX29yZGVyLWUuX2NvbHVtbi5fb3JkZXJ9KSkuZm9yRWFjaCgoZnVuY3Rpb24odCxlLGkpe2U8aS5pbmRleE9mKG4pJiYodC5fY29sdW1uLndpZHRoPXQub2Zmc2V0V2lkdGgrInB4Iix0Ll9jb2x1bW4uZmxleEdyb3c9MCl9KSksImVuZCI9PT10LmRldGFpbC5zdGF0ZSYmKHRoaXMuX3RvZ2dsZUF0dHJpYnV0ZSgiY29sdW1uLXJlc2l6aW5nIiwhMSx0aGlzLiQuc2Nyb2xsZXIpLHRoaXMuZGlzcGF0Y2hFdmVudChuZXcgQ3VzdG9tRXZlbnQoImNvbHVtbi1yZXNpemUiLHtkZXRhaWw6e3Jlc2l6ZWRDb2x1bW46b319KSkpLHRoaXMuX3Jlc2l6ZUhhbmRsZXIoKX19fQovKioKICAgIEBsaWNlbnNlCiAgICBDb3B5cmlnaHQgKGMpIDIwMTcgVmFhZGluIEx0ZC4KICAgIFRoaXMgcHJvZ3JhbSBpcyBhdmFpbGFibGUgdW5kZXIgQXBhY2hlIExpY2Vuc2UgVmVyc2lvbiAyLjAsIGF2YWlsYWJsZSBhdCBodHRwczovL3ZhYWRpbi5jb20vbGljZW5zZS8KICAgICovLEt6dD1jbGFzcyB0e2NvbnN0cnVjdG9yKHQsZSxuKXt0aGlzLmdyaWQ9dCx0aGlzLnBhcmVudENhY2hlPWUsdGhpcy5wYXJlbnRJdGVtPW4sdGhpcy5pdGVtQ2FjaGVzPXt9LHRoaXMuaXRlbXM9e30sdGhpcy5lZmZlY3RpdmVTaXplPTAsdGhpcy5zaXplPTAsdGhpcy5wZW5kaW5nUmVxdWVzdHM9e319aXNMb2FkaW5nKCl7cmV0dXJuIEJvb2xlYW4oT2JqZWN0LmtleXModGhpcy5wZW5kaW5nUmVxdWVzdHMpLmxlbmd0aHx8T2JqZWN0LmtleXModGhpcy5pdGVtQ2FjaGVzKS5maWx0ZXIoKHQ9PnRoaXMuaXRlbUNhY2hlc1t0XS5pc0xvYWRpbmcoKSkpWzBdKX1nZXRJdGVtRm9ySW5kZXgodCl7Y29uc3R7Y2FjaGU6ZSxzY2FsZWRJbmRleDpufT10aGlzLmdldENhY2hlQW5kSW5kZXgodCk7cmV0dXJuIGUuaXRlbXNbbl19dXBkYXRlU2l6ZSgpe3RoaXMuZWZmZWN0aXZlU2l6ZT0hdGhpcy5wYXJlbnRJdGVtfHx0aGlzLmdyaWQuX2lzRXhwYW5kZWQodGhpcy5wYXJlbnRJdGVtKT90aGlzLnNpemUrT2JqZWN0LmtleXModGhpcy5pdGVtQ2FjaGVzKS5yZWR1Y2UoKCh0LGUpPT57Y29uc3Qgbj10aGlzLml0ZW1DYWNoZXNbZV07cmV0dXJuIG4udXBkYXRlU2l6ZSgpLHQrbi5lZmZlY3RpdmVTaXplfSksMCk6MH1lbnN1cmVTdWJDYWNoZUZvclNjYWxlZEluZGV4KGUpe2lmKCF0aGlzLml0ZW1DYWNoZXNbZV0pe2NvbnN0IG49bmV3IHQodGhpcy5ncmlkLHRoaXMsdGhpcy5pdGVtc1tlXSk7dGhpcy5pdGVtQ2FjaGVzW2VdPW4sdGhpcy5ncmlkLl9sb2FkUGFnZSgwLG4pfX1nZXRDYWNoZUFuZEluZGV4KHQpe2xldCBlPXQ7Y29uc3Qgbj1PYmplY3Qua2V5cyh0aGlzLml0ZW1DYWNoZXMpO2Zvcih2YXIgaT0wO2k8bi5sZW5ndGg7aSsrKXtjb25zdCB0PU51bWJlcihuW2ldKSxyPXRoaXMuaXRlbUNhY2hlc1t0XTtpZihlPD10KXJldHVybntjYWNoZTp0aGlzLHNjYWxlZEluZGV4OmV9O2lmKGU8PXQrci5lZmZlY3RpdmVTaXplKXJldHVybiByLmdldENhY2hlQW5kSW5kZXgoZS10LTEpO2UtPXIuZWZmZWN0aXZlU2l6ZX1yZXR1cm57Y2FjaGU6dGhpcyxzY2FsZWRJbmRleDplfX19LFp6dD10PT5jbGFzcyBleHRlbmRzIHR7c3RhdGljIGdldCBwcm9wZXJ0aWVzKCl7cmV0dXJue3BhZ2VTaXplOnt0eXBlOk51bWJlcix2YWx1ZTo1MCxvYnNlcnZlcjoiX3BhZ2VTaXplQ2hhbmdlZCJ9LGRhdGFQcm92aWRlcjp7dHlwZTpPYmplY3Qsbm90aWZ5OiEwLG9ic2VydmVyOiJfZGF0YVByb3ZpZGVyQ2hhbmdlZCJ9LGxvYWRpbmc6e3R5cGU6Qm9vbGVhbixub3RpZnk6ITAscmVhZE9ubHk6ITAscmVmbGVjdFRvQXR0cmlidXRlOiEwfSxfY2FjaGU6e3R5cGU6T2JqZWN0LHZhbHVlOmZ1bmN0aW9uKCl7cmV0dXJuIG5ldyBLenQodGhpcyl9fSxpdGVtSWRQYXRoOnt0eXBlOlN0cmluZyx2YWx1ZTpudWxsfSxleHBhbmRlZEl0ZW1zOnt0eXBlOk9iamVjdCxub3RpZnk6ITAsdmFsdWU6KCk9PltdfX19c3RhdGljIGdldCBvYnNlcnZlcnMoKXtyZXR1cm5bIl9zaXplQ2hhbmdlZChzaXplKSIsIl9pdGVtSWRQYXRoQ2hhbmdlZChpdGVtSWRQYXRoKSIsIl9leHBhbmRlZEl0ZW1zQ2hhbmdlZChleHBhbmRlZEl0ZW1zLiopIl19X3NpemVDaGFuZ2VkKHQpe2NvbnN0IGU9dC10aGlzLl9jYWNoZS5zaXplO3RoaXMuX2NhY2hlLnNpemUrPWUsdGhpcy5fY2FjaGUuZWZmZWN0aXZlU2l6ZSs9ZSx0aGlzLl9lZmZlY3RpdmVTaXplPXRoaXMuX2NhY2hlLmVmZmVjdGl2ZVNpemUsdGhpcy5faW5jcmVhc2VQb29sSWZOZWVkZWQoMCksdGhpcy5fZGVib3VuY2VJbmNyZWFzZVBvb2wmJnRoaXMuX2RlYm91bmNlSW5jcmVhc2VQb29sLmZsdXNoKCl9X2dldEl0ZW0odCxlKXtpZih0Pj10aGlzLl9lZmZlY3RpdmVTaXplKXJldHVybjtlLmluZGV4PXQ7Y29uc3R7Y2FjaGU6bixzY2FsZWRJbmRleDppfT10aGlzLl9jYWNoZS5nZXRDYWNoZUFuZEluZGV4KHQpLHI9bi5pdGVtc1tpXTtyPyh0aGlzLl90b2dnbGVBdHRyaWJ1dGUoImxvYWRpbmciLCExLGUpLHRoaXMuX3VwZGF0ZUl0ZW0oZSxyKSx0aGlzLl9pc0V4cGFuZGVkKHIpJiZuLmVuc3VyZVN1YkNhY2hlRm9yU2NhbGVkSW5kZXgoaSkpOih0aGlzLl90b2dnbGVBdHRyaWJ1dGUoImxvYWRpbmciLCEwLGUpLHRoaXMuX2xvYWRQYWdlKHRoaXMuX2dldFBhZ2VGb3JJbmRleChpKSxuKSl9X2V4cGFuZGVkSW5zdGFuY2VDaGFuZ2VkQ2FsbGJhY2sodCxlKXt2b2lkIDAhPT10Lml0ZW0mJihlP3RoaXMuZXhwYW5kSXRlbSh0Lml0ZW0pOnRoaXMuY29sbGFwc2VJdGVtKHQuaXRlbSkpfWdldEl0ZW1JZCh0KXtyZXR1cm4gdGhpcy5pdGVtSWRQYXRoP3RoaXMuZ2V0KHRoaXMuaXRlbUlkUGF0aCx0KTp0fV9pc0V4cGFuZGVkKHQpe3JldHVybiB0aGlzLl9fZXhwYW5kZWRLZXlzLmhhcyh0aGlzLmdldEl0ZW1JZCh0KSl9X2V4cGFuZGVkSXRlbXNDaGFuZ2VkKHQpe3RoaXMuX19jYWNoZUV4cGFuZGVkS2V5cygpLHRoaXMuX2NhY2hlLnVwZGF0ZVNpemUoKSx0aGlzLl9lZmZlY3RpdmVTaXplPXRoaXMuX2NhY2hlLmVmZmVjdGl2ZVNpemUsdGhpcy5fYXNzaWduTW9kZWxzKCl9X2l0ZW1JZFBhdGhDaGFuZ2VkKHQpe3RoaXMuX19jYWNoZUV4cGFuZGVkS2V5cygpfV9fY2FjaGVFeHBhbmRlZEtleXMoKXt0aGlzLmV4cGFuZGVkSXRlbXMmJih0aGlzLl9fZXhwYW5kZWRLZXlzPW5ldyBTZXQsdGhpcy5leHBhbmRlZEl0ZW1zLmZvckVhY2goKHQ9Pnt0aGlzLl9fZXhwYW5kZWRLZXlzLmFkZCh0aGlzLmdldEl0ZW1JZCh0KSl9KSkpfWV4cGFuZEl0ZW0odCl7dGhpcy5faXNFeHBhbmRlZCh0KXx8dGhpcy5wdXNoKCJleHBhbmRlZEl0ZW1zIix0KX1jb2xsYXBzZUl0ZW0odCl7dGhpcy5faXNFeHBhbmRlZCh0KSYmdGhpcy5zcGxpY2UoImV4cGFuZGVkSXRlbXMiLHRoaXMuX2dldEl0ZW1JbmRleEluQXJyYXkodCx0aGlzLmV4cGFuZGVkSXRlbXMpLDEpfV9nZXRJbmRleExldmVsKHQpe2xldHtjYWNoZTplfT10aGlzLl9jYWNoZS5nZXRDYWNoZUFuZEluZGV4KHQpLG49MDtmb3IoO2UucGFyZW50Q2FjaGU7KWU9ZS5wYXJlbnRDYWNoZSxuKys7cmV0dXJuIG59X2NhblBvcHVsYXRlKCl7cmV0dXJuIEJvb2xlYW4odGhpcy5faGFzRGF0YSYmdGhpcy5fY29sdW1uVHJlZSl9X2xvYWRQYWdlKHQsZSl7aWYoIWUucGVuZGluZ1JlcXVlc3RzW3RdJiZ0aGlzLmRhdGFQcm92aWRlcil7dGhpcy5fc2V0TG9hZGluZyghMCksZS5wZW5kaW5nUmVxdWVzdHNbdF09ITA7Y29uc3Qgbj17cGFnZTp0LHBhZ2VTaXplOnRoaXMucGFnZVNpemUsc29ydE9yZGVyczp0aGlzLl9tYXBTb3J0ZXJzKCksZmlsdGVyczp0aGlzLl9tYXBGaWx0ZXJzKCkscGFyZW50SXRlbTplLnBhcmVudEl0ZW19O3RoaXMuX2RlYm91bmNlSW5jcmVhc2VQb29sJiZ0aGlzLl9kZWJvdW5jZUluY3JlYXNlUG9vbC5mbHVzaCgpLHRoaXMuZGF0YVByb3ZpZGVyKG4sKChpLHIpPT57dm9pZCAwIT09cj9lLnNpemU9cjpuLnBhcmVudEl0ZW0mJihlLnNpemU9aS5sZW5ndGgpO2NvbnN0IG89QXJyYXkuZnJvbSh0aGlzLiQuaXRlbXMuY2hpbGRyZW4pLm1hcCgodD0+dC5faXRlbSkpO2kuZm9yRWFjaCgoKG4saSk9Pntjb25zdCByPXQqdGhpcy5wYWdlU2l6ZStpO2UuaXRlbXNbcl09bix0aGlzLl9pc0V4cGFuZGVkKG4pJiZvLmluZGV4T2Yobik+LTEmJmUuZW5zdXJlU3ViQ2FjaGVGb3JTY2FsZWRJbmRleChyKX0pKSx0aGlzLl9oYXNEYXRhPSEwLGRlbGV0ZSBlLnBlbmRpbmdSZXF1ZXN0c1t0XSx0aGlzLl9kZWJvdW5jZXJBcHBseUNhY2hlZERhdGE9RW4uZGVib3VuY2UodGhpcy5fZGVib3VuY2VyQXBwbHlDYWNoZWREYXRhLGd0LmFmdGVyKDApLCgoKT0+e3RoaXMuX3NldExvYWRpbmcoITEpLHRoaXMuX2NhY2hlLnVwZGF0ZVNpemUoKSx0aGlzLl9lZmZlY3RpdmVTaXplPXRoaXMuX2NhY2hlLmVmZmVjdGl2ZVNpemUsQXJyYXkuZnJvbSh0aGlzLiQuaXRlbXMuY2hpbGRyZW4pLmZpbHRlcigodD0+IXQuaGlkZGVuKSkuZm9yRWFjaCgodD0+e3RoaXMuX2NhY2hlLmdldEl0ZW1Gb3JJbmRleCh0LmluZGV4KSYmdGhpcy5fZ2V0SXRlbSh0LmluZGV4LHQpfSkpLHRoaXMuX2luY3JlYXNlUG9vbElmTmVlZGVkKDApLHRoaXMuX19zY3JvbGxUb1BlbmRpbmdJbmRleCgpfSkpLHRoaXMuX2NhY2hlLmlzTG9hZGluZygpfHx0aGlzLl9kZWJvdW5jZXJBcHBseUNhY2hlZERhdGEuZmx1c2goKSx0aGlzLl9faXRlbXNSZWNlaXZlZCgpfSkpfX1fZ2V0UGFnZUZvckluZGV4KHQpe3JldHVybiBNYXRoLmZsb29yKHQvdGhpcy5wYWdlU2l6ZSl9Y2xlYXJDYWNoZSgpe3RoaXMuX2NhY2hlPW5ldyBLenQodGhpcyksQXJyYXkuZnJvbSh0aGlzLiQuaXRlbXMuY2hpbGRyZW4pLmZvckVhY2goKHQ9PntBcnJheS5mcm9tKHQuY2hpbGRyZW4pLmZvckVhY2goKHQ9Pnt0Ll9pbnN0YW5jZSYmdC5faW5zdGFuY2UuX3NldFBlbmRpbmdQcm9wZXJ0eSgiaXRlbSIse30sITEpfSkpfSkpLHRoaXMuX2NhY2hlLnNpemU9dGhpcy5zaXplfHwwLHRoaXMuX2NhY2hlLnVwZGF0ZVNpemUoKSx0aGlzLl9oYXNEYXRhPSExLHRoaXMuX2Fzc2lnbk1vZGVscygpLHRoaXMuX2VmZmVjdGl2ZVNpemUmJnRoaXMuX2luaXRpYWxQb29sQ3JlYXRlZHx8dGhpcy5fbG9hZFBhZ2UoMCx0aGlzLl9jYWNoZSl9X3BhZ2VTaXplQ2hhbmdlZCh0LGUpe3ZvaWQgMCE9PWUmJnQhPT1lJiZ0aGlzLmNsZWFyQ2FjaGUoKX1fY2hlY2tTaXplKCl7dm9pZCAwPT09dGhpcy5zaXplJiYwPT09dGhpcy5fZWZmZWN0aXZlU2l6ZSYmY29uc29sZS53YXJuKCJUaGUgPHZhYWRpbi1ncmlkPiBuZWVkcyB0aGUgdG90YWwgbnVtYmVyIG9mIGl0ZW1zIGluIG9yZGVyIHRvIGRpc3BsYXkgcm93cy4gU2V0IHRoZSB0b3RhbCBudW1iZXIgb2YgaXRlbXMgdG8gdGhlIGBzaXplYCBwcm9wZXJ0eSwgb3IgcHJvdmlkZSB0aGUgdG90YWwgbnVtYmVyIG9mIGl0ZW1zIGluIHRoZSBzZWNvbmQgYXJndW1lbnQgb2YgdGhlIGBkYXRhUHJvdmlkZXJg4oCZcyBgY2FsbGJhY2tgIGNhbGwuIil9X2RhdGFQcm92aWRlckNoYW5nZWQodCxlKXt2b2lkIDAhPT1lJiZ0aGlzLmNsZWFyQ2FjaGUoKSx0JiZ0aGlzLml0ZW1zJiZ0aGlzLml0ZW1zLmxlbmd0aCYmdGhpcy5fc2Nyb2xsVG9JbmRleCh0aGlzLl9maXJzdFZpc2libGVJbmRleCksdGhpcy5fZW5zdXJlRmlyc3RQYWdlTG9hZGVkKCksdGhpcy5fZGVib3VuY2VyQ2hlY2tTaXplPUVuLmRlYm91bmNlKHRoaXMuX2RlYm91bmNlckNoZWNrU2l6ZSxndC5hZnRlcigyZTMpLHRoaXMuX2NoZWNrU2l6ZS5iaW5kKHRoaXMpKSx0aGlzLl9zY3JvbGxIYW5kbGVyKCl9X2Vuc3VyZUZpcnN0UGFnZUxvYWRlZCgpe3RoaXMuX2hhc0RhdGF8fHRoaXMuX2xvYWRQYWdlKDAsdGhpcy5fY2FjaGUpfV9pdGVtc0VxdWFsKHQsZSl7cmV0dXJuIHRoaXMuZ2V0SXRlbUlkKHQpPT09dGhpcy5nZXRJdGVtSWQoZSl9X2dldEl0ZW1JbmRleEluQXJyYXkodCxlKXtsZXQgbj0tMTtyZXR1cm4gZS5mb3JFYWNoKCgoZSxpKT0+e3RoaXMuX2l0ZW1zRXF1YWwoZSx0KSYmKG49aSl9KSksbn1zY3JvbGxUb0luZGV4KHQpe3N1cGVyLnNjcm9sbFRvSW5kZXgodCksaXNOYU4odCl8fCF0aGlzLl9jYWNoZS5pc0xvYWRpbmcoKSYmdGhpcy5jbGllbnRIZWlnaHR8fCh0aGlzLl9fcGVuZGluZ1Njcm9sbFRvSW5kZXg9dCl9X19zY3JvbGxUb1BlbmRpbmdJbmRleCgpe2lmKHRoaXMuX19wZW5kaW5nU2Nyb2xsVG9JbmRleCYmdGhpcy4kLml0ZW1zLmNoaWxkcmVuLmxlbmd0aCl7Y29uc3QgdD10aGlzLl9fcGVuZGluZ1Njcm9sbFRvSW5kZXg7ZGVsZXRlIHRoaXMuX19wZW5kaW5nU2Nyb2xsVG9JbmRleCx0aGlzLnNjcm9sbFRvSW5kZXgodCl9fX0KLyoqCiAgICBAbGljZW5zZQogICAgQ29weXJpZ2h0IChjKSAyMDE3IFZhYWRpbiBMdGQuCiAgICBUaGlzIHByb2dyYW0gaXMgYXZhaWxhYmxlIHVuZGVyIEFwYWNoZSBMaWNlbnNlIFZlcnNpb24gMi4wLCBhdmFpbGFibGUgYXQgaHR0cHM6Ly92YWFkaW4uY29tL2xpY2Vuc2UvCiAgICAqLyxKenQ9dD0+Y2xhc3MgZXh0ZW5kcyB0e3JlYWR5KCl7c3VwZXIucmVhZHkoKSx0aGlzLl9hZGROb2RlT2JzZXJ2ZXIoKX1faGFzQ29sdW1uR3JvdXBzKHQpe2ZvcihsZXQgZT0wO2U8dC5sZW5ndGg7ZSsrKWlmKCJ2YWFkaW4tZ3JpZC1jb2x1bW4tZ3JvdXAiPT09dFtlXS5sb2NhbE5hbWUpcmV0dXJuITA7cmV0dXJuITF9X2dldENoaWxkQ29sdW1ucyh0KXtyZXR1cm4gUmkuZ2V0RmxhdHRlbmVkTm9kZXModCkuZmlsdGVyKHRoaXMuX2lzQ29sdW1uRWxlbWVudCl9X2ZsYXR0ZW5Db2x1bW5Hcm91cHModCl7cmV0dXJuIHQubWFwKCh0PT4idmFhZGluLWdyaWQtY29sdW1uLWdyb3VwIj09PXQubG9jYWxOYW1lP3RoaXMuX2dldENoaWxkQ29sdW1ucyh0KTpbdF0pKS5yZWR1Y2UoKCh0LGUpPT50LmNvbmNhdChlKSksW10pfV9nZXRDb2x1bW5UcmVlKCl7Zm9yKHZhciB0PVtdLGU9UmkuZ2V0RmxhdHRlbmVkTm9kZXModGhpcykuZmlsdGVyKHRoaXMuX2lzQ29sdW1uRWxlbWVudCk7dC5wdXNoKGUpLHRoaXMuX2hhc0NvbHVtbkdyb3VwcyhlKTspZT10aGlzLl9mbGF0dGVuQ29sdW1uR3JvdXBzKGUpO3JldHVybiB0fV91cGRhdGVDb2x1bW5UcmVlKCl7dmFyIHQ9dGhpcy5fZ2V0Q29sdW1uVHJlZSgpO3RoaXMuX2FycmF5RXF1YWxzKHQsdGhpcy5fY29sdW1uVHJlZSl8fCh0aGlzLl9jb2x1bW5UcmVlPXQpfV9hZGROb2RlT2JzZXJ2ZXIoKXt0aGlzLl9vYnNlcnZlcj1uZXcgUmkodGhpcywodD0+e2NvbnN0IGU9dC5hZGRlZE5vZGVzLmZpbHRlcigodD0+InRlbXBsYXRlIj09PXQubG9jYWxOYW1lJiZ0LmNsYXNzTGlzdC5jb250YWlucygicm93LWRldGFpbHMiKSkpWzBdO2UmJnRoaXMuX3Jvd0RldGFpbHNUZW1wbGF0ZSE9PWUmJih0aGlzLl9yb3dEZXRhaWxzVGVtcGxhdGU9ZSksKHQuYWRkZWROb2Rlcy5maWx0ZXIodGhpcy5faXNDb2x1bW5FbGVtZW50KS5sZW5ndGg+MHx8dC5yZW1vdmVkTm9kZXMuZmlsdGVyKHRoaXMuX2lzQ29sdW1uRWxlbWVudCkubGVuZ3RoPjApJiZ0aGlzLl91cGRhdGVDb2x1bW5UcmVlKCksdGhpcy5fZGVib3VuY2VyQ2hlY2tJbXBvcnRzPUVuLmRlYm91bmNlKHRoaXMuX2RlYm91bmNlckNoZWNrSW1wb3J0cyxndC5hZnRlcigyZTMpLHRoaXMuX2NoZWNrSW1wb3J0cy5iaW5kKHRoaXMpKSx0aGlzLl9lbnN1cmVGaXJzdFBhZ2VMb2FkZWQoKX0pKX1fYXJyYXlFcXVhbHModCxlKXtpZighdHx8IWV8fHQubGVuZ3RoIT1lLmxlbmd0aClyZXR1cm4hMTtmb3IodmFyIG49MCxpPXQubGVuZ3RoO248aTtuKyspaWYodFtuXWluc3RhbmNlb2YgQXJyYXkmJmVbbl1pbnN0YW5jZW9mIEFycmF5KXtpZighdGhpcy5fYXJyYXlFcXVhbHModFtuXSxlW25dKSlyZXR1cm4hMX1lbHNlIGlmKHRbbl0hPWVbbl0pcmV0dXJuITE7cmV0dXJuITB9X2NoZWNrSW1wb3J0cygpe1sidmFhZGluLWdyaWQtY29sdW1uLWdyb3VwIiwidmFhZGluLWdyaWQtZmlsdGVyIiwidmFhZGluLWdyaWQtZmlsdGVyLWNvbHVtbiIsInZhYWRpbi1ncmlkLXRyZWUtdG9nZ2xlIiwidmFhZGluLWdyaWQtc2VsZWN0aW9uLWNvbHVtbiIsInZhYWRpbi1ncmlkLXNvcnQtY29sdW1uIiwidmFhZGluLWdyaWQtc29ydGVyIl0uZm9yRWFjaCgodD0+e3ZhciBlPXRoaXMucXVlcnlTZWxlY3Rvcih0KTshZXx8ZSBpbnN0YW5jZW9mIHllfHxjb25zb2xlLndhcm4oYE1ha2Ugc3VyZSB5b3UgaGF2ZSBpbXBvcnRlZCB0aGUgcmVxdWlyZWQgbW9kdWxlIGZvciA8JHt0fT4gZWxlbWVudC5gKX0pKX1fdXBkYXRlRmlyc3RBbmRMYXN0Q29sdW1uKCl7QXJyYXkuZnJvbSh0aGlzLnNoYWRvd1Jvb3QucXVlcnlTZWxlY3RvckFsbCgidHIiKSkuZm9yRWFjaCgodD0+dGhpcy5fdXBkYXRlRmlyc3RBbmRMYXN0Q29sdW1uRm9yUm93KHQpKSl9X3VwZGF0ZUZpcnN0QW5kTGFzdENvbHVtbkZvclJvdyh0KXtBcnJheS5mcm9tKHQucXVlcnlTZWxlY3RvckFsbCgnW3BhcnR+PSJjZWxsIl06bm90KFtwYXJ0fj0iZGV0YWlscy1jZWxsIl0pJykpLnNvcnQoKCh0LGUpPT50Ll9jb2x1bW4uX29yZGVyLWUuX2NvbHVtbi5fb3JkZXIpKS5mb3JFYWNoKCgodCxlLG4pPT57dGhpcy5fdG9nZ2xlQXR0cmlidXRlKCJmaXJzdC1jb2x1bW4iLDA9PT1lLHQpLHRoaXMuX3RvZ2dsZUF0dHJpYnV0ZSgibGFzdC1jb2x1bW4iLGU9PT1uLmxlbmd0aC0xLHQpfSkpfV9pc0NvbHVtbkVsZW1lbnQodCl7cmV0dXJuIHQubm9kZVR5cGU9PT1Ob2RlLkVMRU1FTlRfTk9ERSYmL1xiY29sdW1uXGIvLnRlc3QodC5sb2NhbE5hbWUpfX0KLyoqCiAgICBAbGljZW5zZQogICAgQ29weXJpZ2h0IChjKSAyMDE4IFZhYWRpbiBMdGQuCiAgICBUaGlzIHByb2dyYW0gaXMgYXZhaWxhYmxlIHVuZGVyIEFwYWNoZSBMaWNlbnNlIFZlcnNpb24gMi4wLCBhdmFpbGFibGUgYXQgaHR0cHM6Ly92YWFkaW4uY29tL2xpY2Vuc2UvCiAgICAqLyxRenQ9dD0+Y2xhc3MgZXh0ZW5kcyB0e2dldEV2ZW50Q29udGV4dCh0KXtjb25zdCBlPXt9LG49dC5jb21wb3NlZFBhdGgoKSxpPW5bbi5pbmRleE9mKHRoaXMuJC50YWJsZSktM107cmV0dXJuIGk/KGUuc2VjdGlvbj1bImJvZHkiLCJoZWFkZXIiLCJmb290ZXIiLCJkZXRhaWxzIl0uZmlsdGVyKCh0PT5pLmdldEF0dHJpYnV0ZSgicGFydCIpLmluZGV4T2YodCk+LTEpKVswXSxpLl9jb2x1bW4mJihlLmNvbHVtbj1pLl9jb2x1bW4pLCJib2R5IiE9PWUuc2VjdGlvbiYmImRldGFpbHMiIT09ZS5zZWN0aW9ufHxPYmplY3QuYXNzaWduKGUsdGhpcy5fX2dldFJvd01vZGVsKGkucGFyZW50RWxlbWVudCkpLGUpOmV9fQovKioKICAgIEBsaWNlbnNlCiAgICBDb3B5cmlnaHQgKGMpIDIwMTcgVmFhZGluIEx0ZC4KICAgIFRoaXMgcHJvZ3JhbSBpcyBhdmFpbGFibGUgdW5kZXIgQXBhY2hlIExpY2Vuc2UgVmVyc2lvbiAyLjAsIGF2YWlsYWJsZSBhdCBodHRwczovL3ZhYWRpbi5jb20vbGljZW5zZS8KICAgICovLHREdD10PT5jbGFzcyBleHRlbmRzIHR7c3RhdGljIGdldCBwcm9wZXJ0aWVzKCl7cmV0dXJue19maWx0ZXJzOnt0eXBlOkFycmF5LHZhbHVlOmZ1bmN0aW9uKCl7cmV0dXJuW119fX19cmVhZHkoKXtzdXBlci5yZWFkeSgpLHRoaXMuYWRkRXZlbnRMaXN0ZW5lcigiZmlsdGVyLWNoYW5nZWQiLHRoaXMuX2ZpbHRlckNoYW5nZWQuYmluZCh0aGlzKSl9X2ZpbHRlckNoYW5nZWQodCl7LTE9PT10aGlzLl9maWx0ZXJzLmluZGV4T2YodC50YXJnZXQpJiZ0aGlzLl9maWx0ZXJzLnB1c2godC50YXJnZXQpLHQuc3RvcFByb3BhZ2F0aW9uKCksdGhpcy5kYXRhUHJvdmlkZXImJnRoaXMuY2xlYXJDYWNoZSgpfV9tYXBGaWx0ZXJzKCl7cmV0dXJuIHRoaXMuX2ZpbHRlcnMubWFwKCh0PT4oe3BhdGg6dC5wYXRoLHZhbHVlOnQudmFsdWV9KSkpfX0KLyoqCiAgICBAbGljZW5zZQogICAgQ29weXJpZ2h0IChjKSAyMDE3IFZhYWRpbiBMdGQuCiAgICBUaGlzIHByb2dyYW0gaXMgYXZhaWxhYmxlIHVuZGVyIEFwYWNoZSBMaWNlbnNlIFZlcnNpb24gMi4wLCBhdmFpbGFibGUgYXQgaHR0cHM6Ly92YWFkaW4uY29tL2xpY2Vuc2UvCiAgICAqLztjbGFzcyBlRHQgZXh0ZW5kcyBjbGFzcyBleHRlbmRzIHlle317c3RhdGljIGdldCBpcygpe3JldHVybiJ2YWFkaW4tZ3JpZC10ZW1wbGF0aXplciJ9c3RhdGljIGdldCBwcm9wZXJ0aWVzKCl7cmV0dXJue2RhdGFIb3N0Ok9iamVjdCx0ZW1wbGF0ZTpPYmplY3QsX3RlbXBsYXRlSW5zdGFuY2VzOnt0eXBlOkFycmF5LHZhbHVlOmZ1bmN0aW9uKCl7cmV0dXJuW119fSxfcGFyZW50UGF0aFZhbHVlczp7dmFsdWU6ZnVuY3Rpb24oKXtyZXR1cm57fX19LF9ncmlkOk9iamVjdH19c3RhdGljIGdldCBvYnNlcnZlcnMoKXtyZXR1cm5bIl90ZW1wbGF0ZUluc3RhbmNlc0NoYW5nZWQoX3RlbXBsYXRlSW5zdGFuY2VzLiosIF9wYXJlbnRQYXRoVmFsdWVzLiopIl19Y29uc3RydWN0b3IoKXtzdXBlcigpLHRoaXMuX2luc3RhbmNlUHJvcHM9e2RldGFpbHNPcGVuZWQ6ITAsaW5kZXg6ITAsaXRlbTohMCxzZWxlY3RlZDohMCxleHBhbmRlZDohMCxsZXZlbDohMH19Y3JlYXRlSW5zdGFuY2UoKXt0aGlzLl9lbnN1cmVUZW1wbGF0aXplZCgpO2NvbnN0IHQ9bmV3IHRoaXMuX1RlbXBsYXRlQ2xhc3Moe30pO3JldHVybiB0aGlzLmFkZEluc3RhbmNlKHQpLHR9YWRkSW5zdGFuY2UodCl7LTE9PT10aGlzLl90ZW1wbGF0ZUluc3RhbmNlcy5pbmRleE9mKHQpJiYodGhpcy5fdGVtcGxhdGVJbnN0YW5jZXMucHVzaCh0KSxyZXF1ZXN0QW5pbWF0aW9uRnJhbWUoKCgpPT50aGlzLm5vdGlmeVBhdGgoIl90ZW1wbGF0ZUluc3RhbmNlcy4qIix0aGlzLl90ZW1wbGF0ZUluc3RhbmNlcykpKSl9cmVtb3ZlSW5zdGFuY2UodCl7Y29uc3QgZT10aGlzLl90ZW1wbGF0ZUluc3RhbmNlcy5pbmRleE9mKHQpO3RoaXMuc3BsaWNlKCJfdGVtcGxhdGVJbnN0YW5jZXMiLGUsMSl9X2Vuc3VyZVRlbXBsYXRpemVkKCl7dGhpcy5fVGVtcGxhdGVDbGFzc3x8KHRoaXMuX1RlbXBsYXRlQ2xhc3M9WHIodGhpcy50ZW1wbGF0ZSx0aGlzLHtpbnN0YW5jZVByb3BzOnRoaXMuX2luc3RhbmNlUHJvcHMscGFyZW50TW9kZWw6ITAsZm9yd2FyZEhvc3RQcm9wOmZ1bmN0aW9uKHQsZSl7dGhpcy5fZm9yd2FyZFBhcmVudFByb3AodCxlKSx0aGlzLl90ZW1wbGF0ZUluc3RhbmNlcyYmdGhpcy5fdGVtcGxhdGVJbnN0YW5jZXMuZm9yRWFjaCgobj0+bi5ub3RpZnlQYXRoKHQsZSkpKX0sbm90aWZ5SW5zdGFuY2VQcm9wOmZ1bmN0aW9uKHQsZSxuKXtpZigiaW5kZXgiPT09ZXx8Iml0ZW0iPT09ZSlyZXR1cm47Y29uc3QgaT1gX18ke2V9X19gO2lmKHRbaV09PT1uKXJldHVybjt0W2ldPW47Y29uc3Qgcj1BcnJheS5mcm9tKHRoaXMuX2dyaWQuJC5pdGVtcy5jaGlsZHJlbikuZmlsdGVyKChlPT50aGlzLl9ncmlkLl9pdGVtc0VxdWFsKGUuX2l0ZW0sdC5pdGVtKSkpWzBdO3ImJkFycmF5LmZyb20oci5jaGlsZHJlbikuZm9yRWFjaCgodD0+e3QuX2luc3RhbmNlJiYodC5faW5zdGFuY2VbaV09bix0Ll9pbnN0YW5jZS5ub3RpZnlQYXRoKGUsbikpfSkpO2NvbnN0IG89Iml0ZW0uIjtpZihBcnJheS5pc0FycmF5KHRoaXMuX2dyaWQuaXRlbXMpJiYwPT09ZS5pbmRleE9mKG8pKXtjb25zdCBpPXRoaXMuX2dyaWQuaXRlbXMuaW5kZXhPZih0Lml0ZW0pLHI9ZS5zbGljZShvLmxlbmd0aCk7dGhpcy5fZ3JpZC5ub3RpZnlQYXRoKGBpdGVtcy4ke2l9LiR7cn1gLG4pfWNvbnN0IGE9YF8ke2V9SW5zdGFuY2VDaGFuZ2VkQ2FsbGJhY2tgO3RoaXMuX2dyaWQmJnRoaXMuX2dyaWRbYV0mJnRoaXMuX2dyaWRbYV0odCxuKX19KSl9X2ZvcndhcmRQYXJlbnRQcm9wKHQsZSl7dGhpcy5fcGFyZW50UGF0aFZhbHVlc1t0XT1lLHRoaXMuX3RlbXBsYXRlSW5zdGFuY2VzLmZvckVhY2goKG49Pm4ubm90aWZ5UGF0aCh0LGUpKSl9X3RlbXBsYXRlSW5zdGFuY2VzQ2hhbmdlZCh0LGUpe2xldCBuLGk7aWYoIl90ZW1wbGF0ZUluc3RhbmNlcyI9PT10LnBhdGgpbj0wLGk9dGhpcy5fdGVtcGxhdGVJbnN0YW5jZXMubGVuZ3RoO2Vsc2V7aWYoIl90ZW1wbGF0ZUluc3RhbmNlcy5zcGxpY2VzIiE9PXQucGF0aClyZXR1cm47bj10LnZhbHVlLmluZGV4LGk9dC52YWx1ZS5hZGRlZENvdW50fU9iamVjdC5rZXlzKHRoaXMuX3BhcmVudFBhdGhWYWx1ZXN8fHt9KS5mb3JFYWNoKCh0PT57Zm9yKHZhciBlPW47ZTxuK2k7ZSsrKXRoaXMuX3RlbXBsYXRlSW5zdGFuY2VzW2VdLnNldCh0LHRoaXMuX3BhcmVudFBhdGhWYWx1ZXNbdF0pfSkpfX1jdXN0b21FbGVtZW50cy5kZWZpbmUoZUR0LmlzLGVEdCk7Ci8qKgogICAgQGxpY2Vuc2UKICAgIENvcHlyaWdodCAoYykgMjAxNyBWYWFkaW4gTHRkLgogICAgVGhpcyBwcm9ncmFtIGlzIGF2YWlsYWJsZSB1bmRlciBBcGFjaGUgTGljZW5zZSBWZXJzaW9uIDIuMCwgYXZhaWxhYmxlIGF0IGh0dHBzOi8vdmFhZGluLmNvbS9saWNlbnNlLwogICAgKi8KY29uc3QgbkR0PXQ9PmNsYXNzIGV4dGVuZHMgdHtzdGF0aWMgZ2V0IHByb3BlcnRpZXMoKXtyZXR1cm57ZGV0YWlsc09wZW5lZEl0ZW1zOnt0eXBlOkFycmF5LHZhbHVlOmZ1bmN0aW9uKCl7cmV0dXJuW119fSxfcm93RGV0YWlsc1RlbXBsYXRlOk9iamVjdCxyb3dEZXRhaWxzUmVuZGVyZXI6RnVuY3Rpb24sX2RldGFpbHNDZWxsczp7dHlwZTpBcnJheX19fXN0YXRpYyBnZXQgb2JzZXJ2ZXJzKCl7cmV0dXJuWyJfZGV0YWlsc09wZW5lZEl0ZW1zQ2hhbmdlZChkZXRhaWxzT3BlbmVkSXRlbXMuKiwgX3Jvd0RldGFpbHNUZW1wbGF0ZSwgcm93RGV0YWlsc1JlbmRlcmVyKSIsIl9yb3dEZXRhaWxzVGVtcGxhdGVPclJlbmRlcmVyQ2hhbmdlZChfcm93RGV0YWlsc1RlbXBsYXRlLCByb3dEZXRhaWxzUmVuZGVyZXIpIl19X3Jvd0RldGFpbHNUZW1wbGF0ZU9yUmVuZGVyZXJDaGFuZ2VkKHQsZSl7aWYodCYmZSl0aHJvdyBuZXcgRXJyb3IoIllvdSBzaG91bGQgb25seSB1c2UgZWl0aGVyIGEgcmVuZGVyZXIgb3IgYSB0ZW1wbGF0ZSBmb3Igcm93IGRldGFpbHMiKTtpZih0fHxlKXtpZih0JiYhdC50ZW1wbGF0aXplcil7dmFyIG49bmV3IGVEdDtuLl9ncmlkPXRoaXMsbi5kYXRhSG9zdD10aGlzLmRhdGFIb3N0LG4udGVtcGxhdGU9dCx0LnRlbXBsYXRpemVyPW59dGhpcy5fY29sdW1uVHJlZSYmQXJyYXkuZnJvbSh0aGlzLiQuaXRlbXMuY2hpbGRyZW4pLmZvckVhY2goKHQ9Pnt0LnF1ZXJ5U2VsZWN0b3IoIltwYXJ0fj1kZXRhaWxzLWNlbGxdIil8fCh0aGlzLl91cGRhdGVSb3codCx0aGlzLl9jb2x1bW5UcmVlW3RoaXMuX2NvbHVtblRyZWUubGVuZ3RoLTFdKSx0aGlzLl9hMTF5VXBkYXRlUm93RGV0YWlsc09wZW5lZCh0LCExKSksZGVsZXRlIHQucXVlcnlTZWxlY3RvcigiW3BhcnR+PWRldGFpbHMtY2VsbF0iKS5faW5zdGFuY2V9KSksdGhpcy5kZXRhaWxzT3BlbmVkSXRlbXMubGVuZ3RoJiYoQXJyYXkuZnJvbSh0aGlzLiQuaXRlbXMuY2hpbGRyZW4pLmZvckVhY2godGhpcy5fdG9nZ2xlRGV0YWlsc0NlbGwsdGhpcyksdGhpcy5fdXBkYXRlKCkpfX1fZGV0YWlsc09wZW5lZEl0ZW1zQ2hhbmdlZCh0LGUsbil7ImRldGFpbHNPcGVuZWRJdGVtcy5sZW5ndGgiIT09dC5wYXRoJiZ0LnZhbHVlJiZBcnJheS5mcm9tKHRoaXMuJC5pdGVtcy5jaGlsZHJlbikuZm9yRWFjaCgodD0+e3RoaXMuX3RvZ2dsZURldGFpbHNDZWxsKHQsdC5faXRlbSksdGhpcy5fYTExeVVwZGF0ZVJvd0RldGFpbHNPcGVuZWQodCx0aGlzLl9pc0RldGFpbHNPcGVuZWQodC5faXRlbSkpLHRoaXMuX3RvZ2dsZUF0dHJpYnV0ZSgiZGV0YWlscy1vcGVuZWQiLHRoaXMuX2lzRGV0YWlsc09wZW5lZCh0Ll9pdGVtKSx0KX0pKX1fY29uZmlndXJlRGV0YWlsc0NlbGwodCl7dC5zZXRBdHRyaWJ1dGUoInBhcnQiLCJjZWxsIGRldGFpbHMtY2VsbCIpLHRoaXMuX3RvZ2dsZUF0dHJpYnV0ZSgiZnJvemVuIiwhMCx0KX1fdG9nZ2xlRGV0YWlsc0NlbGwodCxlKXtjb25zdCBuPXQucXVlcnlTZWxlY3RvcignW3BhcnR+PSJkZXRhaWxzLWNlbGwiXScpO2lmKCFuKXJldHVybjtjb25zdCBpPSF0aGlzLl9pc0RldGFpbHNPcGVuZWQoZSkscj0hIW4uaGlkZGVuIT09aTsobi5faW5zdGFuY2V8fG4uX3JlbmRlcmVyKSYmbi5oaWRkZW49PT1pfHwobi5oaWRkZW49aSxpP3Quc3R5bGUucmVtb3ZlUHJvcGVydHkoInBhZGRpbmctYm90dG9tIik6KHRoaXMucm93RGV0YWlsc1JlbmRlcmVyPyhuLl9yZW5kZXJlcj10aGlzLnJvd0RldGFpbHNSZW5kZXJlcixuLl9yZW5kZXJlci5jYWxsKHRoaXMsbi5fY29udGVudCx0aGlzLHtpbmRleDp0LmluZGV4LGl0ZW06ZX0pKTp0aGlzLl9yb3dEZXRhaWxzVGVtcGxhdGUmJiFuLl9pbnN0YW5jZSYmKG4uX2luc3RhbmNlPXRoaXMuX3Jvd0RldGFpbHNUZW1wbGF0ZS50ZW1wbGF0aXplci5jcmVhdGVJbnN0YW5jZSgpLG4uX2NvbnRlbnQuaW5uZXJIVE1MPSIiLG4uX2NvbnRlbnQuYXBwZW5kQ2hpbGQobi5faW5zdGFuY2Uucm9vdCksdGhpcy5fdXBkYXRlSXRlbSh0LGUpKSx6aSgpLHQuc3R5bGUuc2V0UHJvcGVydHkoInBhZGRpbmctYm90dG9tIixgJHtuLm9mZnNldEhlaWdodH1weGApLHJlcXVlc3RBbmltYXRpb25GcmFtZSgoKCk9PnRoaXMubm90aWZ5UmVzaXplKCkpKSkpLHImJih0aGlzLl91cGRhdGVNZXRyaWNzKCksdGhpcy5fcG9zaXRpb25JdGVtcygpKX1fdXBkYXRlRGV0YWlsc0NlbGxIZWlnaHRzKCl7QXJyYXkuZnJvbSh0aGlzLiQuaXRlbXMucXVlcnlTZWxlY3RvckFsbCgnW3BhcnR+PSJkZXRhaWxzLWNlbGwiXTpub3QoW2hpZGRlbl0pJykpLmZvckVhY2goKHQ9Pnt0LnBhcmVudEVsZW1lbnQuc3R5bGUuc2V0UHJvcGVydHkoInBhZGRpbmctYm90dG9tIixgJHt0Lm9mZnNldEhlaWdodH1weGApfSkpfV9pc0RldGFpbHNPcGVuZWQodCl7cmV0dXJuIHRoaXMuZGV0YWlsc09wZW5lZEl0ZW1zJiYtMSE9PXRoaXMuX2dldEl0ZW1JbmRleEluQXJyYXkodCx0aGlzLmRldGFpbHNPcGVuZWRJdGVtcyl9b3Blbkl0ZW1EZXRhaWxzKHQpe3RoaXMuX2lzRGV0YWlsc09wZW5lZCh0KXx8dGhpcy5wdXNoKCJkZXRhaWxzT3BlbmVkSXRlbXMiLHQpfWNsb3NlSXRlbURldGFpbHModCl7dGhpcy5faXNEZXRhaWxzT3BlbmVkKHQpJiZ0aGlzLnNwbGljZSgiZGV0YWlsc09wZW5lZEl0ZW1zIix0aGlzLl9nZXRJdGVtSW5kZXhJbkFycmF5KHQsdGhpcy5kZXRhaWxzT3BlbmVkSXRlbXMpLDEpfV9kZXRhaWxzT3BlbmVkSW5zdGFuY2VDaGFuZ2VkQ2FsbGJhY2sodCxlKXtzdXBlci5fZGV0YWlsc09wZW5lZEluc3RhbmNlQ2hhbmdlZENhbGxiYWNrJiZzdXBlci5fZGV0YWlsc09wZW5lZEluc3RhbmNlQ2hhbmdlZENhbGxiYWNrKHQsZSksZT90aGlzLm9wZW5JdGVtRGV0YWlscyh0Lml0ZW0pOnRoaXMuY2xvc2VJdGVtRGV0YWlscyh0Lml0ZW0pfX0KLyoqCiAgICBAbGljZW5zZQogICAgQ29weXJpZ2h0IChjKSAyMDE3IFZhYWRpbiBMdGQuCiAgICBUaGlzIHByb2dyYW0gaXMgYXZhaWxhYmxlIHVuZGVyIEFwYWNoZSBMaWNlbnNlIFZlcnNpb24gMi4wLCBhdmFpbGFibGUgYXQgaHR0cHM6Ly92YWFkaW4uY29tL2xpY2Vuc2UvCiAgICAqLyxpRHQ9dD0+Y2xhc3MgZXh0ZW5kcyB0e2dldCBfdGltZW91dHMoKXtyZXR1cm57U0NST0xMSU5HOjUwMCxJR05PUkVfV0hFRUw6NTAwfX1zdGF0aWMgZ2V0IHByb3BlcnRpZXMoKXtyZXR1cm57X2Zyb3plbkNlbGxzOnt0eXBlOkFycmF5LHZhbHVlOigpPT5bXX0sX3Jvd1dpdGhGb2N1c2VkRWxlbWVudDpFbGVtZW50LF9kZWx0YVlBY2M6e3R5cGU6TnVtYmVyLHZhbHVlOjB9LF91c2VTdGlja3k6e3R5cGU6Qm9vbGVhbix2YWx1ZTp3aW5kb3cuQ1NTJiZ3aW5kb3cuQ1NTLnN1cHBvcnRzJiYod2luZG93LkNTUy5zdXBwb3J0cygicG9zaXRpb24iLCJzdGlja3kiKXx8d2luZG93LkNTUy5zdXBwb3J0cygicG9zaXRpb24iLCItd2Via2l0LXN0aWNreSIpKX19fXN0YXRpYyBnZXQgb2JzZXJ2ZXJzKCl7cmV0dXJuWyJfc2Nyb2xsVmlld3BvcnRIZWlnaHRVcGRhdGVkKF92aWV3cG9ydEhlaWdodCkiXX1zZXQgX3Njcm9sbFRvcCh0KXt0aGlzLiQudGFibGUuc2Nyb2xsVG9wPXR9Z2V0IF9zY3JvbGxUb3AoKXtyZXR1cm4gdGhpcy4kLnRhYmxlLnNjcm9sbFRvcH1jb25zdHJ1Y3Rvcigpe3N1cGVyKCksdGhpcy5fc2Nyb2xsTGluZUhlaWdodD10aGlzLl9nZXRTY3JvbGxMaW5lSGVpZ2h0KCl9X2dldFNjcm9sbExpbmVIZWlnaHQoKXtjb25zdCB0PWRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoImRpdiIpO3Quc3R5bGUuZm9udFNpemU9ImluaXRpYWwiLHQuc3R5bGUuZGlzcGxheT0ibm9uZSIsZG9jdW1lbnQuYm9keS5hcHBlbmRDaGlsZCh0KTtjb25zdCBlPXdpbmRvdy5nZXRDb21wdXRlZFN0eWxlKHQpLmZvbnRTaXplO3JldHVybiBkb2N1bWVudC5ib2R5LnJlbW92ZUNoaWxkKHQpLGU/d2luZG93LnBhcnNlSW50KGUpOnZvaWQgMH1fc2Nyb2xsVmlld3BvcnRIZWlnaHRVcGRhdGVkKHQpe3RoaXMuX3Njcm9sbFBhZ2VIZWlnaHQ9dC10aGlzLiQuaGVhZGVyLmNsaWVudEhlaWdodC10aGlzLiQuZm9vdGVyLmNsaWVudEhlaWdodC10aGlzLl9zY3JvbGxMaW5lSGVpZ2h0fXJlYWR5KCl7c3VwZXIucmVhZHkoKSx0aGlzLiQub3V0ZXJzY3JvbGxlcj1kb2N1bWVudC5jcmVhdGVFbGVtZW50KCJkaXYiKSx0aGlzLnNjcm9sbFRhcmdldD10aGlzLiQudGFibGUsdGhpcy5hZGRFdmVudExpc3RlbmVyKCJ3aGVlbCIsdGhpcy5fb25XaGVlbCksdGhpcy4kLml0ZW1zLmFkZEV2ZW50TGlzdGVuZXIoImZvY3VzaW4iLCh0PT57Y29uc3QgZT10LmNvbXBvc2VkUGF0aCgpLmluZGV4T2YodGhpcy4kLml0ZW1zKTt0aGlzLl9yb3dXaXRoRm9jdXNlZEVsZW1lbnQ9dC5jb21wb3NlZFBhdGgoKVtlLTFdfSkpLHRoaXMuJC5pdGVtcy5hZGRFdmVudExpc3RlbmVyKCJmb2N1c291dCIsKCgpPT50aGlzLl9yb3dXaXRoRm9jdXNlZEVsZW1lbnQ9dm9pZCAwKSksdGhpcy5zY3JvbGxUYXJnZXQuYWRkRXZlbnRMaXN0ZW5lcigibW91c2Vkb3duIiwoKCk9PnRoaXMuX19tb3VzZURvd249ITApKSx0aGlzLnNjcm9sbFRhcmdldC5hZGRFdmVudExpc3RlbmVyKCJtb3VzZXVwIiwoKCk9Pnt0aGlzLl9fbW91c2VEb3duPSExLHRoaXMuX19wZW5kaW5nUmVvcmRlciYmKHRoaXMuX19wZW5kaW5nUmVvcmRlcj0hMSxzZXRUaW1lb3V0KCgoKT0+dGhpcy5fcmVvcmRlclJvd3MoKSksdGhpcy5fdGltZW91dHMuU0NST0xMSU5HKSl9KSl9c2Nyb2xsVG9JbmRleCh0KXt0aGlzLl9hY2Nlc3NJcm9uTGlzdEFQSSgoKCk9PnN1cGVyLnNjcm9sbFRvSW5kZXgodCkpKX1fb25XaGVlbCh0KXtpZih0LmN0cmxLZXl8fHRoaXMuX2hhc1Njcm9sbGVkQW5jZXN0b3IodC50YXJnZXQsdC5kZWx0YVgsdC5kZWx0YVkpKXJldHVybjtjb25zdCBlPXRoaXMuJC50YWJsZTtsZXQgbj10LmRlbHRhWTtpZih0LmRlbHRhTW9kZT09PVdoZWVsRXZlbnQuRE9NX0RFTFRBX0xJTkU/bio9dGhpcy5fc2Nyb2xsTGluZUhlaWdodDp0LmRlbHRhTW9kZT09PVdoZWVsRXZlbnQuRE9NX0RFTFRBX1BBR0UmJihuKj10aGlzLl9zY3JvbGxQYWdlSGVpZ2h0KSx0aGlzLl93aGVlbEFuaW1hdGlvbkZyYW1lKXJldHVybiB0aGlzLl9kZWx0YVlBY2MrPW4sdm9pZCB0LnByZXZlbnREZWZhdWx0KCk7bis9dGhpcy5fZGVsdGFZQWNjLHRoaXMuX2RlbHRhWUFjYz0wLHRoaXMuX3doZWVsQW5pbWF0aW9uRnJhbWU9ITAsdGhpcy5fZGVib3VuY2VyV2hlZWxBbmltYXRpb25GcmFtZT1Fbi5kZWJvdW5jZSh0aGlzLl9kZWJvdW5jZXJXaGVlbEFuaW1hdGlvbkZyYW1lLF90LCgoKT0+dGhpcy5fd2hlZWxBbmltYXRpb25GcmFtZT0hMSkpO3ZhciBpPU1hdGguYWJzKHQuZGVsdGFYKStNYXRoLmFicyhuKTt0aGlzLl9jYW5TY3JvbGwoZSx0LmRlbHRhWCxuKT8odC5wcmV2ZW50RGVmYXVsdCgpLGUuc2Nyb2xsVG9wKz1uLGUuc2Nyb2xsTGVmdCs9dC5kZWx0YVgsdGhpcy5fc2Nyb2xsSGFuZGxlcigpLHRoaXMuX2hhc1Jlc2lkdWFsTW9tZW50dW09ITAsdGhpcy5faWdub3JlTmV3V2hlZWw9ITAsdGhpcy5fZGVib3VuY2VySWdub3JlTmV3V2hlZWw9RW4uZGVib3VuY2UodGhpcy5fZGVib3VuY2VySWdub3JlTmV3V2hlZWwsZ3QuYWZ0ZXIodGhpcy5fdGltZW91dHMuSUdOT1JFX1dIRUVMKSwoKCk9PnRoaXMuX2lnbm9yZU5ld1doZWVsPSExKSkpOnRoaXMuX2hhc1Jlc2lkdWFsTW9tZW50dW0mJmk8PXRoaXMuX3ByZXZpb3VzTW9tZW50dW18fHRoaXMuX2lnbm9yZU5ld1doZWVsP3QucHJldmVudERlZmF1bHQoKTppPnRoaXMuX3ByZXZpb3VzTW9tZW50dW0mJih0aGlzLl9oYXNSZXNpZHVhbE1vbWVudHVtPSExKSx0aGlzLl9wcmV2aW91c01vbWVudHVtPWl9X2hhc1Njcm9sbGVkQW5jZXN0b3IodCxlLG4pe3JldHVybiJ2YWFkaW4tZ3JpZC1jZWxsLWNvbnRlbnQiIT09dC5sb2NhbE5hbWUmJighKCF0aGlzLl9jYW5TY3JvbGwodCxlLG4pfHwtMT09PVsiYXV0byIsInNjcm9sbCJdLmluZGV4T2YoZ2V0Q29tcHV0ZWRTdHlsZSh0KS5vdmVyZmxvdykpfHwodCE9PXRoaXMmJnQucGFyZW50RWxlbWVudD90aGlzLl9oYXNTY3JvbGxlZEFuY2VzdG9yKHQucGFyZW50RWxlbWVudCxlLG4pOnZvaWQgMCkpfV9jYW5TY3JvbGwodCxlLG4pe3JldHVybiBuPjAmJnQuc2Nyb2xsVG9wPHQuc2Nyb2xsSGVpZ2h0LXQub2Zmc2V0SGVpZ2h0fHxuPDAmJnQuc2Nyb2xsVG9wPjB8fGU+MCYmdC5zY3JvbGxMZWZ0PHQuc2Nyb2xsV2lkdGgtdC5vZmZzZXRXaWR0aHx8ZTwwJiZ0LnNjcm9sbExlZnQ+MH1fc2NoZWR1bGVTY3JvbGxpbmcoKXt0aGlzLl9zY3JvbGxpbmdGcmFtZXx8KHRoaXMuX3Njcm9sbGluZ0ZyYW1lPXJlcXVlc3RBbmltYXRpb25GcmFtZSgoKCk9PnRoaXMuX3RvZ2dsZUF0dHJpYnV0ZSgic2Nyb2xsaW5nIiwhMCx0aGlzLiQuc2Nyb2xsZXIpKSkpLHRoaXMuX2RlYm91bmNlU2Nyb2xsaW5nPUVuLmRlYm91bmNlKHRoaXMuX2RlYm91bmNlU2Nyb2xsaW5nLGd0LmFmdGVyKHRoaXMuX3RpbWVvdXRzLlNDUk9MTElORyksKCgpPT57Y2FuY2VsQW5pbWF0aW9uRnJhbWUodGhpcy5fc2Nyb2xsaW5nRnJhbWUpLGRlbGV0ZSB0aGlzLl9zY3JvbGxpbmdGcmFtZSx0aGlzLl90b2dnbGVBdHRyaWJ1dGUoInNjcm9sbGluZyIsITEsdGhpcy4kLnNjcm9sbGVyKSx0aGlzLl9yZW9yZGVyUm93cygpfSkpfV9hZnRlclNjcm9sbCgpe3RoaXMuX3RyYW5zbGF0ZVN0YXRpb25hcnlFbGVtZW50cygpLHRoaXMuaGFzQXR0cmlidXRlKCJyZW9yZGVyaW5nIil8fHRoaXMuX3NjaGVkdWxlU2Nyb2xsaW5nKCksdGhpcy5fdXBkYXRlT3ZlcmZsb3coKX1fdXBkYXRlT3ZlcmZsb3coKXtsZXQgdD0iIjtjb25zdCBlPXRoaXMuJC50YWJsZTtlLnNjcm9sbFRvcDxlLnNjcm9sbEhlaWdodC1lLmNsaWVudEhlaWdodCYmKHQrPSIgYm90dG9tIiksZS5zY3JvbGxUb3A+MCYmKHQrPSIgdG9wIiksZS5zY3JvbGxMZWZ0PGUuc2Nyb2xsV2lkdGgtZS5jbGllbnRXaWR0aCYmKHQrPSIgcmlnaHQiKSxlLnNjcm9sbExlZnQ+MCYmKHQrPSIgbGVmdCIpLHRoaXMuX2RlYm91bmNlT3ZlcmZsb3c9RW4uZGVib3VuY2UodGhpcy5fZGVib3VuY2VPdmVyZmxvdyxfdCwoKCk9Pntjb25zdCBlPXQudHJpbSgpO2UubGVuZ3RoPjAmJnRoaXMuZ2V0QXR0cmlidXRlKCJvdmVyZmxvdyIpIT09ZT90aGlzLnNldEF0dHJpYnV0ZSgib3ZlcmZsb3ciLGUpOjA9PWUubGVuZ3RoJiZ0aGlzLmhhc0F0dHJpYnV0ZSgib3ZlcmZsb3ciKSYmdGhpcy5yZW1vdmVBdHRyaWJ1dGUoIm92ZXJmbG93Iil9KSl9X3Jlb3JkZXJSb3dzKCl7aWYodGhpcy5fX21vdXNlRG93bilyZXR1cm4gdm9pZCh0aGlzLl9fcGVuZGluZ1Jlb3JkZXI9ITApO2NvbnN0IHQ9dGhpcy4kLml0ZW1zLGU9dC5xdWVyeVNlbGVjdG9yQWxsKCJ0ciIpO2lmKCFlLmxlbmd0aClyZXR1cm47Y29uc3Qgbj10aGlzLl92aXJ0dWFsU3RhcnQrdGhpcy5fdmlkeE9mZnNldCxpPXRoaXMuX3Jvd1dpdGhGb2N1c2VkRWxlbWVudHx8QXJyYXkuZnJvbShlKS5maWx0ZXIoKHQ9PiF0LmhpZGRlbikpWzBdO2lmKCFpKXJldHVybjtjb25zdCByPWkuaW5kZXgtbixvPUFycmF5LmZyb20oZSkuaW5kZXhPZihpKS1yO2lmKG8+MClmb3IobGV0IG49MDtuPG87bisrKXQuYXBwZW5kQ2hpbGQoZVtuXSk7ZWxzZSBpZihvPDApZm9yKGxldCBuPWUubGVuZ3RoK287bjxlLmxlbmd0aDtuKyspdC5pbnNlcnRCZWZvcmUoZVtuXSxlWzBdKTtpZih0aGlzLl9zYWZhcmkpe2NvbnN0e3RyYW5zZm9ybTp0fT10aGlzLiQuaGVhZGVyLnN0eWxlO3RoaXMuJC5oZWFkZXIuc3R5bGUudHJhbnNmb3JtPSIiLHNldFRpbWVvdXQoKCgpPT50aGlzLiQuaGVhZGVyLnN0eWxlLnRyYW5zZm9ybT10KSl9fV9mcm96ZW5DZWxsc0NoYW5nZWQoKXt0aGlzLl9kZWJvdW5jZXJDYWNoZUVsZW1lbnRzPUVuLmRlYm91bmNlKHRoaXMuX2RlYm91bmNlckNhY2hlRWxlbWVudHMsdnQsKCgpPT57QXJyYXkuZnJvbSh0aGlzLnNoYWRvd1Jvb3QucXVlcnlTZWxlY3RvckFsbCgnW3BhcnR+PSJjZWxsIl0nKSkuZm9yRWFjaCgoZnVuY3Rpb24odCl7dC5zdHlsZS50cmFuc2Zvcm09IiJ9KSksdGhpcy5fZnJvemVuQ2VsbHM9QXJyYXkucHJvdG90eXBlLnNsaWNlLmNhbGwodGhpcy4kLnRhYmxlLnF1ZXJ5U2VsZWN0b3JBbGwoIltmcm96ZW5dIikpLHRoaXMuX3VwZGF0ZVNjcm9sbGVyTWVhc3VyZW1lbnRzKCksdGhpcy5fdHJhbnNsYXRlU3RhdGlvbmFyeUVsZW1lbnRzKCl9KSksdGhpcy5fdXBkYXRlTGFzdEZyb3plbigpfV91cGRhdGVTY3JvbGxlck1lYXN1cmVtZW50cygpe3RoaXMuX2Zyb3plbkNlbGxzLmxlbmd0aD4wJiZ0aGlzLl9faXNSVEwmJih0aGlzLl9fc2Nyb2xsZXJNZXRyaWNzPXtzY3JvbGxXaWR0aDp0aGlzLiQudGFibGUuc2Nyb2xsV2lkdGgsY2xpZW50V2lkdGg6dGhpcy4kLnRhYmxlLmNsaWVudFdpZHRofSl9X3VwZGF0ZUxhc3RGcm96ZW4oKXtpZighdGhpcy5fY29sdW1uVHJlZSlyZXR1cm47Y29uc3QgdD10aGlzLl9jb2x1bW5UcmVlW3RoaXMuX2NvbHVtblRyZWUubGVuZ3RoLTFdLnNsaWNlKDApO3Quc29ydCgoKHQsZSk9PnQuX29yZGVyLWUuX29yZGVyKSk7Y29uc3QgZT10LnJlZHVjZSgoKHQsZSxuKT0+KGUuX2xhc3RGcm96ZW49ITEsZS5mcm96ZW4mJiFlLmhpZGRlbj9uOnQpKSx2b2lkIDApO3ZvaWQgMCE9PWUmJih0W2VdLl9sYXN0RnJvemVuPSEwKX1fdHJhbnNsYXRlU3RhdGlvbmFyeUVsZW1lbnRzKCl7Y29uc3QgdD1NYXRoLm1heCgwLHRoaXMuX3Njcm9sbExlZnQpLGU9TWF0aC5tYXgoMCx0aGlzLl9zY3JvbGxUb3ApO2xldCBuPTAsaT0wLHI9MDtpZih0aGlzLl91c2VTdGlja3l8fChuPXQsaT1lLHI9dGhpcy4kLnRhYmxlLmNsaWVudEhlaWdodC10aGlzLiQuZm9vdGVyLm9mZnNldEhlaWdodC10aGlzLiQuZm9vdGVyLm9mZnNldFRvcCksdGhpcy4kLmhlYWRlci5zdHlsZS50cmFuc2Zvcm09dGhpcy5fZ2V0VHJhbnNsYXRlKC10K24saSksdGhpcy4kLmZvb3Rlci5zdHlsZS50cmFuc2Zvcm09dGhpcy5fZ2V0VHJhbnNsYXRlKC10K24saStyKSx0aGlzLiQuaXRlbXMuc3R5bGUudHJhbnNmb3JtPXRoaXMuX2dldFRyYW5zbGF0ZSgtdCtuLDApLHRoaXMuX2Zyb3plbkNlbGxzLmxlbmd0aD4wKXtjb25zdCB0PXRoaXMuX19pc1JUTD90aGlzLl9fZ2V0Tm9ybWFsaXplZFNjcm9sbExlZnQodGhpcy4kLnRhYmxlKSt0aGlzLl9fc2Nyb2xsZXJNZXRyaWNzLmNsaWVudFdpZHRoLXRoaXMuX19zY3JvbGxlck1ldHJpY3Muc2Nyb2xsV2lkdGg6dGhpcy5fc2Nyb2xsTGVmdDtmb3IodmFyIG89dGhpcy5fZ2V0VHJhbnNsYXRlKHQsMCksYT0wO2E8dGhpcy5fZnJvemVuQ2VsbHMubGVuZ3RoO2ErKyl0aGlzLl9mcm96ZW5DZWxsc1thXS5zdHlsZS50cmFuc2Zvcm09b319X2dldFRyYW5zbGF0ZSh0LGUpe3JldHVybmB0cmFuc2xhdGUoJHt0fXB4LCAke2V9cHgpYH19Ci8qKgogICAgQGxpY2Vuc2UKICAgIENvcHlyaWdodCAoYykgMjAxNyBWYWFkaW4gTHRkLgogICAgVGhpcyBwcm9ncmFtIGlzIGF2YWlsYWJsZSB1bmRlciBBcGFjaGUgTGljZW5zZSBWZXJzaW9uIDIuMCwgYXZhaWxhYmxlIGF0IGh0dHBzOi8vdmFhZGluLmNvbS9saWNlbnNlLwogICAgKi8sckR0PXQ9PmNsYXNzIGV4dGVuZHMgdHtzdGF0aWMgZ2V0IHByb3BlcnRpZXMoKXtyZXR1cm57c2VsZWN0ZWRJdGVtczp7dHlwZTpPYmplY3Qsbm90aWZ5OiEwLHZhbHVlOigpPT5bXX19fXN0YXRpYyBnZXQgb2JzZXJ2ZXJzKCl7cmV0dXJuWyJfc2VsZWN0ZWRJdGVtc0NoYW5nZWQoc2VsZWN0ZWRJdGVtcy4qKSJdfV9pc1NlbGVjdGVkKHQpe3JldHVybiB0aGlzLnNlbGVjdGVkSXRlbXMmJnRoaXMuX2dldEl0ZW1JbmRleEluQXJyYXkodCx0aGlzLnNlbGVjdGVkSXRlbXMpPi0xfXNlbGVjdEl0ZW0odCl7dGhpcy5faXNTZWxlY3RlZCh0KXx8dGhpcy5wdXNoKCJzZWxlY3RlZEl0ZW1zIix0KX1kZXNlbGVjdEl0ZW0odCl7Y29uc3QgZT10aGlzLl9nZXRJdGVtSW5kZXhJbkFycmF5KHQsdGhpcy5zZWxlY3RlZEl0ZW1zKTtlPi0xJiZ0aGlzLnNwbGljZSgic2VsZWN0ZWRJdGVtcyIsZSwxKX1fdG9nZ2xlSXRlbSh0KXstMT09PXRoaXMuX2dldEl0ZW1JbmRleEluQXJyYXkodCx0aGlzLnNlbGVjdGVkSXRlbXMpP3RoaXMuc2VsZWN0SXRlbSh0KTp0aGlzLmRlc2VsZWN0SXRlbSh0KX1fc2VsZWN0ZWRJdGVtc0NoYW5nZWQodCl7IXRoaXMuJC5pdGVtcy5jaGlsZHJlbi5sZW5ndGh8fCJzZWxlY3RlZEl0ZW1zIiE9PXQucGF0aCYmInNlbGVjdGVkSXRlbXMuc3BsaWNlcyIhPT10LnBhdGh8fEFycmF5LmZyb20odGhpcy4kLml0ZW1zLmNoaWxkcmVuKS5mb3JFYWNoKCh0PT57dGhpcy5fdXBkYXRlSXRlbSh0LHQuX2l0ZW0pfSkpfV9zZWxlY3RlZEluc3RhbmNlQ2hhbmdlZENhbGxiYWNrKHQsZSl7c3VwZXIuX3NlbGVjdGVkSW5zdGFuY2VDaGFuZ2VkQ2FsbGJhY2smJnN1cGVyLl9zZWxlY3RlZEluc3RhbmNlQ2hhbmdlZENhbGxiYWNrKHQsZSksZT90aGlzLnNlbGVjdEl0ZW0odC5pdGVtKTp0aGlzLmRlc2VsZWN0SXRlbSh0Lml0ZW0pfX0KLyoqCiAgICBAbGljZW5zZQogICAgQ29weXJpZ2h0IChjKSAyMDE3IFZhYWRpbiBMdGQuCiAgICBUaGlzIHByb2dyYW0gaXMgYXZhaWxhYmxlIHVuZGVyIEFwYWNoZSBMaWNlbnNlIFZlcnNpb24gMi4wLCBhdmFpbGFibGUgYXQgaHR0cHM6Ly92YWFkaW4uY29tL2xpY2Vuc2UvCiAgICAqLyxvRHQ9dD0+Y2xhc3MgZXh0ZW5kcyB0e3N0YXRpYyBnZXQgcHJvcGVydGllcygpe3JldHVybnttdWx0aVNvcnQ6e3R5cGU6Qm9vbGVhbix2YWx1ZTohMX0sX3NvcnRlcnM6e3R5cGU6QXJyYXksdmFsdWU6ZnVuY3Rpb24oKXtyZXR1cm5bXX19LF9wcmV2aW91c1NvcnRlcnM6e3R5cGU6QXJyYXksdmFsdWU6ZnVuY3Rpb24oKXtyZXR1cm5bXX19fX1yZWFkeSgpe3N1cGVyLnJlYWR5KCksdGhpcy5hZGRFdmVudExpc3RlbmVyKCJzb3J0ZXItY2hhbmdlZCIsdGhpcy5fb25Tb3J0ZXJDaGFuZ2VkKSx3aW5kb3cuU2hhZHlET00mJnZ0LnJ1bigoKCk9Pntjb25zdCB0PXRoaXMucXVlcnlTZWxlY3RvckFsbCgidmFhZGluLWdyaWQtc29ydGVyIik7QXJyYXkuZnJvbSh0KS5mb3JFYWNoKCh0PT57dCBpbnN0YW5jZW9mIHllJiZ0LmRpc3BhdGNoRXZlbnQobmV3IEN1c3RvbUV2ZW50KCJzb3J0ZXItY2hhbmdlZCIse2J1YmJsZXM6ITAsY29tcG9zZWQ6ITB9KSl9KSl9KSl9X29uU29ydGVyQ2hhbmdlZCh0KXtjb25zdCBlPXQudGFyZ2V0O3RoaXMuX3JlbW92ZUFycmF5SXRlbSh0aGlzLl9zb3J0ZXJzLGUpLGUuX29yZGVyPW51bGwsdGhpcy5tdWx0aVNvcnQ/KGUuZGlyZWN0aW9uJiZ0aGlzLl9zb3J0ZXJzLnVuc2hpZnQoZSksdGhpcy5fc29ydGVycy5mb3JFYWNoKCgodCxlKT0+dC5fb3JkZXI9dGhpcy5fc29ydGVycy5sZW5ndGg+MT9lOm51bGwpLHRoaXMpKTplLmRpcmVjdGlvbiYmKHRoaXMuX3NvcnRlcnMuZm9yRWFjaCgodD0+e3QuX29yZGVyPW51bGwsdC5kaXJlY3Rpb249bnVsbH0pKSx0aGlzLl9zb3J0ZXJzPVtlXSksdC5zdG9wUHJvcGFnYXRpb24oKSx0aGlzLmRhdGFQcm92aWRlciYmSlNPTi5zdHJpbmdpZnkodGhpcy5fcHJldmlvdXNTb3J0ZXJzKSE9PUpTT04uc3RyaW5naWZ5KHRoaXMuX21hcFNvcnRlcnMoKSkmJnRoaXMuY2xlYXJDYWNoZSgpLHRoaXMuX2ExMXlVcGRhdGVTb3J0ZXJzKCksdGhpcy5fcHJldmlvdXNTb3J0ZXJzPXRoaXMuX21hcFNvcnRlcnMoKX1fbWFwU29ydGVycygpe3JldHVybiB0aGlzLl9zb3J0ZXJzLm1hcCgodD0+KHtwYXRoOnQucGF0aCxkaXJlY3Rpb246dC5kaXJlY3Rpb259KSkpfV9yZW1vdmVBcnJheUl0ZW0odCxlKXtjb25zdCBuPXQuaW5kZXhPZihlKTtuPi0xJiZ0LnNwbGljZShuLDEpfX0KLyoqCiAgICBAbGljZW5zZQogICAgQ29weXJpZ2h0IChjKSAyMDE4IFZhYWRpbiBMdGQuCiAgICBUaGlzIHByb2dyYW0gaXMgYXZhaWxhYmxlIHVuZGVyIEFwYWNoZSBMaWNlbnNlIFZlcnNpb24gMi4wLCBhdmFpbGFibGUgYXQgaHR0cHM6Ly92YWFkaW4uY29tL2xpY2Vuc2UvCiAgICAqLyxhRHQ9dD0+Y2xhc3MgZXh0ZW5kcyB0e3N0YXRpYyBnZXQgcHJvcGVydGllcygpe3JldHVybntjZWxsQ2xhc3NOYW1lR2VuZXJhdG9yOkZ1bmN0aW9ufX1zdGF0aWMgZ2V0IG9ic2VydmVycygpe3JldHVyblsiX19jZWxsQ2xhc3NOYW1lR2VuZXJhdG9yQ2hhbmdlZChjZWxsQ2xhc3NOYW1lR2VuZXJhdG9yKSJdfV9fY2VsbENsYXNzTmFtZUdlbmVyYXRvckNoYW5nZWQodCl7dGhpcy5nZW5lcmF0ZUNlbGxDbGFzc05hbWVzKCl9Z2VuZXJhdGVDZWxsQ2xhc3NOYW1lcygpe0FycmF5LmZyb20odGhpcy4kLml0ZW1zLmNoaWxkcmVuKS5maWx0ZXIoKHQ9PiF0LmhpZGRlbikpLmZvckVhY2goKHQ9PnRoaXMuX2dlbmVyYXRlQ2VsbENsYXNzTmFtZXModCx0aGlzLl9fZ2V0Um93TW9kZWwodCkpKSl9X2dlbmVyYXRlQ2VsbENsYXNzTmFtZXModCxlKXtBcnJheS5mcm9tKHQuY2hpbGRyZW4pLmZvckVhY2goKHQ9PntpZih0Ll9fZ2VuZXJhdGVkQ2xhc3NlcyYmdC5fX2dlbmVyYXRlZENsYXNzZXMuZm9yRWFjaCgoZT0+dC5jbGFzc0xpc3QucmVtb3ZlKGUpKSksdGhpcy5jZWxsQ2xhc3NOYW1lR2VuZXJhdG9yKXtjb25zdCBuPXRoaXMuY2VsbENsYXNzTmFtZUdlbmVyYXRvcih0Ll9jb2x1bW4sZSk7dC5fX2dlbmVyYXRlZENsYXNzZXM9biYmbi5zcGxpdCgiICIpLmZpbHRlcigodD0+dC5sZW5ndGg+MCkpLHQuX19nZW5lcmF0ZWRDbGFzc2VzJiZ0Ll9fZ2VuZXJhdGVkQ2xhc3Nlcy5mb3JFYWNoKChlPT50LmNsYXNzTGlzdC5hZGQoZSkpKX19KSl9fQovKioKICAgIEBsaWNlbnNlCiAgICBDb3B5cmlnaHQgKGMpIDIwMTkgVmFhZGluIEx0ZC4KICAgIFRoaXMgcHJvZ3JhbSBpcyBhdmFpbGFibGUgdW5kZXIgQXBhY2hlIExpY2Vuc2UgVmVyc2lvbiAyLjAsIGF2YWlsYWJsZSBhdCBodHRwczovL3ZhYWRpbi5jb20vbGljZW5zZS8KICAgICovLHNEdD0iYmV0d2VlbiIsbER0PSJvbi10b3Atb3ItYmV0d2VlbiIsY0R0PSJhYm92ZSIsdUR0PSJiZWxvdyIsaER0PSJlbXB0eSIsZER0PXQ9PmNsYXNzIGV4dGVuZHMgdHtzdGF0aWMgZ2V0IHByb3BlcnRpZXMoKXtyZXR1cm57ZHJvcE1vZGU6U3RyaW5nLHJvd3NEcmFnZ2FibGU6Qm9vbGVhbixkcmFnRmlsdGVyOkZ1bmN0aW9uLGRyb3BGaWx0ZXI6RnVuY3Rpb24sX19kbmRBdXRvU2Nyb2xsVGhyZXNob2xkOnt2YWx1ZTo1MH19fXN0YXRpYyBnZXQgb2JzZXJ2ZXJzKCl7cmV0dXJuWyJfZHJhZ0Ryb3BBY2Nlc3NDaGFuZ2VkKHJvd3NEcmFnZ2FibGUsIGRyb3BNb2RlLCBkcmFnRmlsdGVyLCBkcm9wRmlsdGVyKSJdfXJlYWR5KCl7c3VwZXIucmVhZHkoKSx0aGlzLiQudGFibGUuYWRkRXZlbnRMaXN0ZW5lcigiZHJhZ3N0YXJ0Iix0aGlzLl9vbkRyYWdTdGFydC5iaW5kKHRoaXMpKSx0aGlzLiQudGFibGUuYWRkRXZlbnRMaXN0ZW5lcigiZHJhZ2VuZCIsdGhpcy5fb25EcmFnRW5kLmJpbmQodGhpcykpLHRoaXMuJC50YWJsZS5hZGRFdmVudExpc3RlbmVyKCJkcmFnb3ZlciIsdGhpcy5fb25EcmFnT3Zlci5iaW5kKHRoaXMpKSx0aGlzLiQudGFibGUuYWRkRXZlbnRMaXN0ZW5lcigiZHJhZ2xlYXZlIix0aGlzLl9vbkRyYWdMZWF2ZS5iaW5kKHRoaXMpKSx0aGlzLiQudGFibGUuYWRkRXZlbnRMaXN0ZW5lcigiZHJvcCIsdGhpcy5fb25Ecm9wLmJpbmQodGhpcykpLHRoaXMuJC50YWJsZS5hZGRFdmVudExpc3RlbmVyKCJkcmFnZW50ZXIiLCh0PT57dGhpcy5kcm9wTW9kZSYmKHQucHJldmVudERlZmF1bHQoKSx0LnN0b3BQcm9wYWdhdGlvbigpKX0pKX1fb25EcmFnU3RhcnQodCl7aWYodGhpcy5yb3dzRHJhZ2dhYmxlKXtsZXQgZT10LnRhcmdldDtpZigidmFhZGluLWdyaWQtY2VsbC1jb250ZW50Ij09PWUubG9jYWxOYW1lJiYoZT1lLmFzc2lnbmVkU2xvdC5wYXJlbnROb2RlLnBhcmVudE5vZGUpLGUucGFyZW50Tm9kZSE9PXRoaXMuJC5pdGVtcylyZXR1cm47aWYodC5zdG9wUHJvcGFnYXRpb24oKSx0aGlzLl90b2dnbGVBdHRyaWJ1dGUoImRyYWdnaW5nLXJvd3MiLCEwLHRoaXMpLHRoaXMuX3NhZmFyaSl7Y29uc3QgdD1lLnN0eWxlLnRyYW5zZm9ybTtlLnN0eWxlLnRvcD0vdHJhbnNsYXRlWVwoKC4qKVwpLy5leGVjKHQpWzFdLGUuc3R5bGUudHJhbnNmb3JtPSJub25lIixyZXF1ZXN0QW5pbWF0aW9uRnJhbWUoKCgpPT57ZS5zdHlsZS50b3A9IiIsZS5zdHlsZS50cmFuc2Zvcm09dH0pKX1jb25zdCBuPWUuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCk7d2luZG93LlNoYWR5RE9NfHwodGhpcy5faW9zP3QuZGF0YVRyYW5zZmVyLnNldERyYWdJbWFnZShlKTp0LmRhdGFUcmFuc2Zlci5zZXREcmFnSW1hZ2UoZSx0LmNsaWVudFgtbi5sZWZ0LHQuY2xpZW50WS1uLnRvcCkpO2xldCBpPVtlXTt0aGlzLl9pc1NlbGVjdGVkKGUuX2l0ZW0pJiYoaT10aGlzLl9fZ2V0Vmlld3BvcnRSb3dzKCkuZmlsdGVyKCh0PT50aGlzLl9pc1NlbGVjdGVkKHQuX2l0ZW0pKSkuZmlsdGVyKCh0PT4hdGhpcy5kcmFnRmlsdGVyfHx0aGlzLmRyYWdGaWx0ZXIodGhpcy5fX2dldFJvd01vZGVsKHQpKSkpKSx0LmRhdGFUcmFuc2Zlci5zZXREYXRhKCJ0ZXh0Iix0aGlzLl9fZm9ybWF0RGVmYXVsdFRyYW5zZmVyRGF0YShpKSksZS5zZXRBdHRyaWJ1dGUoImRyYWdzdGFydCIsaS5sZW5ndGg+MT9pLmxlbmd0aDoiIiksdGhpcy51cGRhdGVTdHlsZXMoeyItLV9ncmlkLWRyYWctc3RhcnQteCI6dC5jbGllbnRYLW4ubGVmdCsyMCsicHgiLCItLV9ncmlkLWRyYWctc3RhcnQteSI6dC5jbGllbnRZLW4udG9wKzEwKyJweCJ9KSxyZXF1ZXN0QW5pbWF0aW9uRnJhbWUoKCgpPT57ZS5yZW1vdmVBdHRyaWJ1dGUoImRyYWdzdGFydCIpLHRoaXMudXBkYXRlU3R5bGVzKHsiLS1fZ3JpZC1kcmFnLXN0YXJ0LXgiOiIiLCItLV9ncmlkLWRyYWctc3RhcnQteSI6IiJ9KX0pKTtjb25zdCByPW5ldyBDdXN0b21FdmVudCgiZ3JpZC1kcmFnc3RhcnQiLHtkZXRhaWw6e2RyYWdnZWRJdGVtczppLm1hcCgodD0+dC5faXRlbSkpLHNldERyYWdEYXRhOihlLG4pPT50LmRhdGFUcmFuc2Zlci5zZXREYXRhKGUsbiksc2V0RHJhZ2dlZEl0ZW1zQ291bnQ6dD0+ZS5zZXRBdHRyaWJ1dGUoImRyYWdzdGFydCIsdCl9fSk7ci5vcmlnaW5hbEV2ZW50PXQsdGhpcy5kaXNwYXRjaEV2ZW50KHIpfX1fb25EcmFnRW5kKHQpe3RoaXMuX3RvZ2dsZUF0dHJpYnV0ZSgiZHJhZ2dpbmctcm93cyIsITEsdGhpcyksdC5zdG9wUHJvcGFnYXRpb24oKTtjb25zdCBlPW5ldyBDdXN0b21FdmVudCgiZ3JpZC1kcmFnZW5kIik7ZS5vcmlnaW5hbEV2ZW50PXQsdGhpcy5kaXNwYXRjaEV2ZW50KGUpfV9vbkRyYWdMZWF2ZSh0KXt0LnN0b3BQcm9wYWdhdGlvbigpLHRoaXMuX2NsZWFyRHJhZ1N0eWxlcygpfV9vbkRyYWdPdmVyKHQpe2lmKHRoaXMuZHJvcE1vZGUpe2lmKHRoaXMuX2Ryb3BMb2NhdGlvbj12b2lkIDAsdGhpcy5fZHJhZ092ZXJJdGVtPXZvaWQgMCx0aGlzLl9fZG5kQXV0b1Njcm9sbCh0LmNsaWVudFkpKXJldHVybiB2b2lkIHRoaXMuX2NsZWFyRHJhZ1N0eWxlcygpO2xldCBlPXQuY29tcG9zZWRQYXRoKCkuZmlsdGVyKCh0PT4idHIiPT09dC5sb2NhbE5hbWUpKVswXTtpZih0aGlzLl9lZmZlY3RpdmVTaXplJiYib24tZ3JpZCIhPT10aGlzLmRyb3BNb2RlKWlmKGUmJmUucGFyZW50Tm9kZT09PXRoaXMuJC5pdGVtcyl7Y29uc3Qgbj1lLmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpO3RoaXMuX2Ryb3BMb2NhdGlvbj0ib24tdG9wIix0aGlzLmRyb3BNb2RlPT09c0R0P3RoaXMuX2Ryb3BMb2NhdGlvbj10LmNsaWVudFktbi50b3A8bi5ib3R0b20tdC5jbGllbnRZP2NEdDp1RHQ6dGhpcy5kcm9wTW9kZT09PWxEdCYmKHQuY2xpZW50WS1uLnRvcDxuLmhlaWdodC8zP3RoaXMuX2Ryb3BMb2NhdGlvbj1jRHQ6dC5jbGllbnRZLW4udG9wPm4uaGVpZ2h0LzMqMiYmKHRoaXMuX2Ryb3BMb2NhdGlvbj11RHQpKX1lbHNle2lmKGUpcmV0dXJuO2lmKHRoaXMuZHJvcE1vZGUhPT1zRHQmJnRoaXMuZHJvcE1vZGUhPT1sRHQpcmV0dXJuO2U9QXJyYXkuZnJvbSh0aGlzLiQuaXRlbXMuY2hpbGRyZW4pLmZpbHRlcigodD0+IXQuaGlkZGVuKSkucG9wKCksdGhpcy5fZHJvcExvY2F0aW9uPXVEdH1lbHNlIHRoaXMuX2Ryb3BMb2NhdGlvbj1oRHQ7aWYoZSYmZS5oYXNBdHRyaWJ1dGUoImRyb3AtZGlzYWJsZWQiKSlyZXR1cm4gdm9pZCh0aGlzLl9kcm9wTG9jYXRpb249dm9pZCAwKTt0LnN0b3BQcm9wYWdhdGlvbigpLHQucHJldmVudERlZmF1bHQoKSx0aGlzLl9kcm9wTG9jYXRpb249PT1oRHQ/dGhpcy5fdG9nZ2xlQXR0cmlidXRlKCJkcmFnb3ZlciIsITAsdGhpcyk6ZT8odGhpcy5fZHJhZ092ZXJJdGVtPWUuX2l0ZW0sZS5nZXRBdHRyaWJ1dGUoImRyYWdvdmVyIikhPT10aGlzLl9kcm9wTG9jYXRpb24mJmUuc2V0QXR0cmlidXRlKCJkcmFnb3ZlciIsdGhpcy5fZHJvcExvY2F0aW9uKSk6dGhpcy5fY2xlYXJEcmFnU3R5bGVzKCl9fV9fZG5kQXV0b1Njcm9sbCh0KXtpZih0aGlzLl9fZG5kQXV0b1Njcm9sbGluZylyZXR1cm4hMDtjb25zdCBlPXRoaXMuJC5oZWFkZXIuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCkuYm90dG9tLG49dGhpcy4kLmZvb3Rlci5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKS50b3AsaT1lLXQrdGhpcy5fX2RuZEF1dG9TY3JvbGxUaHJlc2hvbGQscj10LW4rdGhpcy5fX2RuZEF1dG9TY3JvbGxUaHJlc2hvbGQ7bGV0IG89MDtpZihyPjA/bz0yKnI6aT4wJiYobz0yKi1pKSxvKXtjb25zdCB0PXRoaXMuJC50YWJsZS5zY3JvbGxUb3A7aWYodGhpcy4kLnRhYmxlLnNjcm9sbFRvcCs9byx0IT09dGhpcy4kLnRhYmxlLnNjcm9sbFRvcClyZXR1cm4gdGhpcy5fX2RuZEF1dG9TY3JvbGxpbmc9ITAsc2V0VGltZW91dCgoKCk9PnRoaXMuX19kbmRBdXRvU2Nyb2xsaW5nPSExKSwyMCksdGhpcy5fc2Nyb2xsSGFuZGxlcigpLCEwfX1fX2dldFZpZXdwb3J0Um93cygpe2NvbnN0IHQ9dGhpcy4kLmhlYWRlci5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKS5ib3R0b20sZT10aGlzLiQuZm9vdGVyLmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpLnRvcDtyZXR1cm4gQXJyYXkuZnJvbSh0aGlzLiQuaXRlbXMuY2hpbGRyZW4pLmZpbHRlcigobj0+e2NvbnN0IGk9bi5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKTtyZXR1cm4gaS5ib3R0b20+dCYmaS50b3A8ZX0pKX1fY2xlYXJEcmFnU3R5bGVzKCl7dGhpcy5yZW1vdmVBdHRyaWJ1dGUoImRyYWdvdmVyIiksQXJyYXkuZnJvbSh0aGlzLiQuaXRlbXMuY2hpbGRyZW4pLmZvckVhY2goKHQ9PnQucmVtb3ZlQXR0cmlidXRlKCJkcmFnb3ZlciIpKSl9X29uRHJvcCh0KXtpZih0aGlzLmRyb3BNb2RlKXt0LnN0b3BQcm9wYWdhdGlvbigpLHQucHJldmVudERlZmF1bHQoKTtjb25zdCBlPXQuZGF0YVRyYW5zZmVyLnR5cGVzJiZBcnJheS5mcm9tKHQuZGF0YVRyYW5zZmVyLnR5cGVzKS5tYXAoKGU9Pih7dHlwZTplLGRhdGE6dC5kYXRhVHJhbnNmZXIuZ2V0RGF0YShlKX0pKSk7dGhpcy5fY2xlYXJEcmFnU3R5bGVzKCk7Y29uc3Qgbj1uZXcgQ3VzdG9tRXZlbnQoImdyaWQtZHJvcCIse2J1YmJsZXM6dC5idWJibGVzLGNhbmNlbGFibGU6dC5jYW5jZWxhYmxlLGRldGFpbDp7ZHJvcFRhcmdldEl0ZW06dGhpcy5fZHJhZ092ZXJJdGVtLGRyb3BMb2NhdGlvbjp0aGlzLl9kcm9wTG9jYXRpb24sZHJhZ0RhdGE6ZX19KTtuLm9yaWdpbmFsRXZlbnQ9dCx0aGlzLmRpc3BhdGNoRXZlbnQobil9fV9fZm9ybWF0RGVmYXVsdFRyYW5zZmVyRGF0YSh0KXtyZXR1cm4gdC5tYXAoKHQ9PkFycmF5LmZyb20odC5jaGlsZHJlbikuZmlsdGVyKCh0PT4hdC5oaWRkZW4mJi0xPT09dC5nZXRBdHRyaWJ1dGUoInBhcnQiKS5pbmRleE9mKCJkZXRhaWxzLWNlbGwiKSkpLnNvcnQoKCh0LGUpPT50Ll9jb2x1bW4uX29yZGVyPmUuX2NvbHVtbi5fb3JkZXI/MTotMSkpLm1hcCgodD0+dC5fY29udGVudC50ZXh0Q29udGVudC50cmltKCkpKS5maWx0ZXIoKHQ9PnQpKS5qb2luKCJcdCIpKSkuam9pbigiXG4iKX1fZHJhZ0Ryb3BBY2Nlc3NDaGFuZ2VkKHQsZSxuLGkpe3RoaXMuZmlsdGVyRHJhZ0FuZERyb3AoKX1maWx0ZXJEcmFnQW5kRHJvcCgpe0FycmF5LmZyb20odGhpcy4kLml0ZW1zLmNoaWxkcmVuKS5maWx0ZXIoKHQ9PiF0LmhpZGRlbikpLmZvckVhY2goKHQ9Pnt0aGlzLl9maWx0ZXJEcmFnQW5kRHJvcCh0LHRoaXMuX19nZXRSb3dNb2RlbCh0KSl9KSl9X2ZpbHRlckRyYWdBbmREcm9wKHQsZSl7Y29uc3Qgbj0hdGhpcy5yb3dzRHJhZ2dhYmxlfHx0aGlzLmRyYWdGaWx0ZXImJiF0aGlzLmRyYWdGaWx0ZXIoZSksaT0hdGhpcy5kcm9wTW9kZXx8dGhpcy5kcm9wRmlsdGVyJiYhdGhpcy5kcm9wRmlsdGVyKGUpOyh3aW5kb3cuU2hhZHlET00/W3RdOkFycmF5LmZyb20odC5jaGlsZHJlbikubWFwKCh0PT50Ll9jb250ZW50KSkpLmZvckVhY2goKHQ9PntuP3QucmVtb3ZlQXR0cmlidXRlKCJkcmFnZ2FibGUiKTp0LnNldEF0dHJpYnV0ZSgiZHJhZ2dhYmxlIiwhMCl9KSksdGhpcy5fdG9nZ2xlQXR0cmlidXRlKCJkcmFnLWRpc2FibGVkIixuLHQpLHRoaXMuX3RvZ2dsZUF0dHJpYnV0ZSgiZHJvcC1kaXNhYmxlZCIsaSx0KX19Ci8qKgogICAgQGxpY2Vuc2UKICAgIENvcHlyaWdodCAoYykgMjAxNyBWYWFkaW4gTHRkLgogICAgVGhpcyBwcm9ncmFtIGlzIGF2YWlsYWJsZSB1bmRlciBBcGFjaGUgTGljZW5zZSBWZXJzaW9uIDIuMCwgYXZhaWxhYmxlIGF0IGh0dHBzOi8vdmFhZGluLmNvbS9saWNlbnNlLwogICAgKi8scER0PXQ9PmNsYXNzIGV4dGVuZHMgdHtzdGF0aWMgZ2V0IHByb3BlcnRpZXMoKXtyZXR1cm57X2hlYWRlckZvY3VzYWJsZTp7dHlwZTpPYmplY3Qsb2JzZXJ2ZXI6Il9mb2N1c2FibGVDaGFuZ2VkIn0sX2l0ZW1zRm9jdXNhYmxlOnt0eXBlOk9iamVjdCxvYnNlcnZlcjoiX2ZvY3VzYWJsZUNoYW5nZWQifSxfZm9vdGVyRm9jdXNhYmxlOnt0eXBlOk9iamVjdCxvYnNlcnZlcjoiX2ZvY3VzYWJsZUNoYW5nZWQifSxfbmF2aWdhdGluZ0lzSGlkZGVuOkJvb2xlYW4sX2ZvY3VzZWRJdGVtSW5kZXg6e3R5cGU6TnVtYmVyLHZhbHVlOjB9LF9mb2N1c2VkQ29sdW1uT3JkZXI6TnVtYmVyfX1yZWFkeSgpe3N1cGVyLnJlYWR5KCksdGhpcy5faW9zfHx0aGlzLl9hbmRyb2lkfHwodGhpcy5hZGRFdmVudExpc3RlbmVyKCJrZXlkb3duIix0aGlzLl9vbktleURvd24pLHRoaXMuYWRkRXZlbnRMaXN0ZW5lcigia2V5dXAiLHRoaXMuX29uS2V5VXApLHRoaXMuYWRkRXZlbnRMaXN0ZW5lcigiZm9jdXNpbiIsdGhpcy5fb25Gb2N1c0luKSx0aGlzLmFkZEV2ZW50TGlzdGVuZXIoImZvY3Vzb3V0Iix0aGlzLl9vbkZvY3VzT3V0KSx0aGlzLiQudGFibGUuYWRkRXZlbnRMaXN0ZW5lcigiZm9jdXNpbiIsdGhpcy5fb25DZWxsRm9jdXNJbi5iaW5kKHRoaXMpKSx0aGlzLiQudGFibGUuYWRkRXZlbnRMaXN0ZW5lcigiZm9jdXNvdXQiLHRoaXMuX29uQ2VsbEZvY3VzT3V0LmJpbmQodGhpcykpLHRoaXMuYWRkRXZlbnRMaXN0ZW5lcigibW91c2Vkb3duIiwoKCk9Pnt0aGlzLl90b2dnbGVBdHRyaWJ1dGUoIm5hdmlnYXRpbmciLCExLHRoaXMpLHRoaXMuX2lzTW91c2Vkb3duPSEwfSkpLHRoaXMuYWRkRXZlbnRMaXN0ZW5lcigibW91c2V1cCIsKCgpPT50aGlzLl9pc01vdXNlZG93bj0hMSkpKX1fZm9jdXNhYmxlQ2hhbmdlZCh0LGUpe2UmJmUuc2V0QXR0cmlidXRlKCJ0YWJpbmRleCIsIi0xIiksdCYmdC5zZXRBdHRyaWJ1dGUoInRhYmluZGV4IiwiMCIpfV9vbktleURvd24odCl7bGV0IGUsbj10LmtleTtzd2l0Y2goIlVwIiE9PW4mJiJEb3duIiE9PW4mJiJMZWZ0IiE9PW4mJiJSaWdodCIhPT1ufHwobj0iQXJyb3ciK24pLCJFc2MiPT09biYmKG49IkVzY2FwZSIpLCJTcGFjZWJhciI9PT1uJiYobj0iICIpLG4pe2Nhc2UiQXJyb3dVcCI6Y2FzZSJBcnJvd0Rvd24iOmNhc2UiQXJyb3dMZWZ0IjpjYXNlIkFycm93UmlnaHQiOmNhc2UiUGFnZVVwIjpjYXNlIlBhZ2VEb3duIjpjYXNlIkhvbWUiOmNhc2UiRW5kIjplPSJOYXZpZ2F0aW9uIjticmVhaztjYXNlIkVudGVyIjpjYXNlIkVzY2FwZSI6Y2FzZSJGMiI6ZT0iSW50ZXJhY3Rpb24iO2JyZWFrO2Nhc2UiVGFiIjplPSJUYWIiO2JyZWFrO2Nhc2UiICI6ZT0iU3BhY2UifXRoaXMuX2RldGVjdEludGVyYWN0aW5nKHQpLHRoaXMuaGFzQXR0cmlidXRlKCJpbnRlcmFjdGluZyIpJiYiSW50ZXJhY3Rpb24iIT09ZSYmKGU9dm9pZCAwKSxlJiZ0aGlzW2Bfb24ke2V9S2V5RG93bmBdKHQsbil9X2Vuc3VyZVNjcm9sbGVkVG9JbmRleCh0KXtBcnJheS5mcm9tKHRoaXMuJC5pdGVtcy5jaGlsZHJlbikuZmlsdGVyKChlPT5lLmluZGV4PT09dCkpWzBdfHx0aGlzLl9zY3JvbGxUb0luZGV4KHQpfV9vbk5hdmlnYXRpb25LZXlEb3duKHQsZSl7ZnVuY3Rpb24gbih0KXtyZXR1cm4gQXJyYXkucHJvdG90eXBlLmluZGV4T2YuY2FsbCh0LnBhcmVudE5vZGUuY2hpbGRyZW4sdCl9dGhpcy5fc2Nyb2xsSGFuZGxlcigpLHQucHJldmVudERlZmF1bHQoKTtjb25zdCBpPXRoaXMuX2xhc3RWaXNpYmxlSW5kZXgtdGhpcy5fZmlyc3RWaXNpYmxlSW5kZXgtMTtsZXQgcj0wLG89MDtzd2l0Y2goZSl7Y2FzZSJBcnJvd1JpZ2h0IjpyPXRoaXMuX19pc1JUTD8tMToxO2JyZWFrO2Nhc2UiQXJyb3dMZWZ0IjpyPXRoaXMuX19pc1JUTD8xOi0xO2JyZWFrO2Nhc2UiSG9tZSI6cj0tMS8wLHQuY3RybEtleSYmKG89LTEvMCk7YnJlYWs7Y2FzZSJFbmQiOnI9MS8wLHQuY3RybEtleSYmKG89MS8wKTticmVhaztjYXNlIkFycm93RG93biI6bz0xO2JyZWFrO2Nhc2UiQXJyb3dVcCI6bz0tMTticmVhaztjYXNlIlBhZ2VEb3duIjpvPWk7YnJlYWs7Y2FzZSJQYWdlVXAiOm89LWl9Y29uc3QgYT10LmNvbXBvc2VkUGF0aCgpWzBdLHM9bihhKSxsPXRoaXMuX2VsZW1lbnRNYXRjaGVzKGEsJ1twYXJ0fj0iZGV0YWlscy1jZWxsIl0nKSxjPWEucGFyZW50Tm9kZSx1PWMucGFyZW50Tm9kZSxoPSh1PT09dGhpcy4kLml0ZW1zP3RoaXMuX2VmZmVjdGl2ZVNpemU6dS5jaGlsZHJlbi5sZW5ndGgpLTEsZD11PT09dGhpcy4kLml0ZW1zP3ZvaWQgMCE9PXRoaXMuX2ZvY3VzZWRJdGVtSW5kZXg/dGhpcy5fZm9jdXNlZEl0ZW1JbmRleDpjLmluZGV4Om4oYyk7bGV0IHA9TWF0aC5tYXgoMCxNYXRoLm1pbihkK28saCkpLGY9ITE7aWYodT09PXRoaXMuJC5pdGVtcyl7Y29uc3QgdD1jLl9pdGVtLGU9dGhpcy5fY2FjaGUuZ2V0SXRlbUZvckluZGV4KHApO2Y9bD8wPT09bzoxPT09byYmdGhpcy5faXNEZXRhaWxzT3BlbmVkKHQpfHwtMT09PW8mJnAhPT1kJiZ0aGlzLl9pc0RldGFpbHNPcGVuZWQoZSksZiE9PWwmJigxPT09byYmZnx8LTE9PT1vJiYhZikmJihwPWQpfWlmKHUhPT10aGlzLiQuaXRlbXMpaWYocD5kKWZvcig7cDxoJiZ1LmNoaWxkcmVuW3BdLmhpZGRlbjspcCsrO2Vsc2UgaWYocDxkKWZvcig7cD4wJiZ1LmNoaWxkcmVuW3BdLmhpZGRlbjspcC0tO3ZvaWQgMD09PXRoaXMuX2ZvY3VzZWRDb2x1bW5PcmRlciYmKHRoaXMuX2ZvY3VzZWRDb2x1bW5PcmRlcj1sPzA6dGhpcy5fZ2V0Q29sdW1ucyh1LGQpLmZpbHRlcigodD0+IXQuaGlkZGVuKSlbc10uX29yZGVyKTtjb25zdCBtPXRoaXMuX2dldENvbHVtbnModSxwKS5maWx0ZXIoKHQ9PiF0LmhpZGRlbikpLGc9bS5tYXAoKHQ9PnQuX29yZGVyKSkuc29ydCgoKHQsZSk9PnQtZSkpLF89Zy5sZW5ndGgtMSx5PWcuaW5kZXhPZihnLnNsaWNlKDApLnNvcnQoKCh0LGUpPT5NYXRoLmFicyh0LXRoaXMuX2ZvY3VzZWRDb2x1bW5PcmRlciktTWF0aC5hYnMoZS10aGlzLl9mb2N1c2VkQ29sdW1uT3JkZXIpKSlbMF0pLHY9MD09PW8mJmw/eTpNYXRoLm1heCgwLE1hdGgubWluKHkrcixfKSk7diE9PXkmJih0aGlzLl9mb2N1c2VkQ29sdW1uT3JkZXI9dm9pZCAwKSx1PT09dGhpcy4kLml0ZW1zJiZ0aGlzLl9lbnN1cmVTY3JvbGxlZFRvSW5kZXgocCksdGhpcy5fdG9nZ2xlQXR0cmlidXRlKCJuYXZpZ2F0aW5nIiwhMCx0aGlzKTtjb25zdCBiPW0ucmVkdWNlKCgodCxlLG4pPT4odFtlLl9vcmRlcl09bix0KSkse30pW2dbdl1dLHg9dT09PXRoaXMuJC5pdGVtcz9BcnJheS5mcm9tKHUuY2hpbGRyZW4pLmZpbHRlcigodD0+dC5pbmRleD09PXApKVswXTp1LmNoaWxkcmVuW3BdO2lmKCF4KXJldHVybjtjb25zdCB3PWY/QXJyYXkuZnJvbSh4LmNoaWxkcmVuKS5maWx0ZXIoKHQ9PnRoaXMuX2VsZW1lbnRNYXRjaGVzKHQsJ1twYXJ0fj0iZGV0YWlscy1jZWxsIl0nKSkpWzBdOnguY2hpbGRyZW5bYl07aWYodGhpcy5fc2Nyb2xsSG9yaXpvbnRhbGx5VG9DZWxsKHcpLHU9PT10aGlzLiQuaXRlbXMmJih0aGlzLl9mb2N1c2VkSXRlbUluZGV4PXApLHU9PT10aGlzLiQuaXRlbXMpe2NvbnN0IHQ9dy5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKSxlPXRoaXMuJC5mb290ZXIuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCkudG9wLG49dGhpcy4kLmhlYWRlci5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKS5ib3R0b207dC5ib3R0b20+ZT8odGhpcy4kLnRhYmxlLnNjcm9sbFRvcCs9dC5ib3R0b20tZSx0aGlzLl9zY3JvbGxIYW5kbGVyKCkpOnQudG9wPG4mJih0aGlzLiQudGFibGUuc2Nyb2xsVG9wLT1uLXQudG9wLHRoaXMuX3Njcm9sbEhhbmRsZXIoKSl9dy5mb2N1cygpfV9wYXJzZUV2ZW50UGF0aCh0KXtjb25zdCBlPXQuaW5kZXhPZih0aGlzLiQudGFibGUpO3JldHVybntyb3dHcm91cDp0W2UtMV0scm93OnRbZS0yXSxjZWxsOnRbZS0zXX19X29uSW50ZXJhY3Rpb25LZXlEb3duKHQsZSl7Y29uc3Qgbj10LmNvbXBvc2VkUGF0aCgpWzBdLGk9ImlucHV0Ij09PW4ubG9jYWxOYW1lJiYhL14oYnV0dG9ufGNoZWNrYm94fGNvbG9yfGZpbGV8aW1hZ2V8cmFkaW98cmFuZ2V8cmVzZXR8c3VibWl0KSQvaS50ZXN0KG4udHlwZSk7bGV0IHI7c3dpdGNoKGUpe2Nhc2UiRW50ZXIiOnI9IXRoaXMuaGFzQXR0cmlidXRlKCJpbnRlcmFjdGluZyIpfHwhaTticmVhaztjYXNlIkVzY2FwZSI6cj0hMTticmVhaztjYXNlIkYyIjpyPSF0aGlzLmhhc0F0dHJpYnV0ZSgiaW50ZXJhY3RpbmciKX1jb25zdHtjZWxsOm99PXRoaXMuX3BhcnNlRXZlbnRQYXRoKHQuY29tcG9zZWRQYXRoKCkpO2lmKHRoaXMuaGFzQXR0cmlidXRlKCJpbnRlcmFjdGluZyIpIT09cilpZihyKXtjb25zdCBlPW8uX2NvbnRlbnQucXVlcnlTZWxlY3RvcigiW2ZvY3VzLXRhcmdldF0iKXx8by5fY29udGVudC5maXJzdEVsZW1lbnRDaGlsZDtlJiYodC5wcmV2ZW50RGVmYXVsdCgpLGUuZm9jdXMoKSx0aGlzLl90b2dnbGVBdHRyaWJ1dGUoImludGVyYWN0aW5nIiwhMCx0aGlzKSx0aGlzLl90b2dnbGVBdHRyaWJ1dGUoIm5hdmlnYXRpbmciLCExLHRoaXMpKX1lbHNlIHQucHJldmVudERlZmF1bHQoKSx0aGlzLl9mb2N1c2VkQ29sdW1uT3JkZXI9dm9pZCAwLG8uZm9jdXMoKSx0aGlzLl90b2dnbGVBdHRyaWJ1dGUoImludGVyYWN0aW5nIiwhMSx0aGlzKSx0aGlzLl90b2dnbGVBdHRyaWJ1dGUoIm5hdmlnYXRpbmciLCEwLHRoaXMpfV9wcmVkaWN0Rm9jdXNTdGVwVGFyZ2V0KHQsZSl7Y29uc3Qgbj1bdGhpcy4kLnRhYmxlLHRoaXMuX2hlYWRlckZvY3VzYWJsZSx0aGlzLl9pdGVtc0ZvY3VzYWJsZSx0aGlzLl9mb290ZXJGb2N1c2FibGUsdGhpcy4kLmZvY3VzZXhpdF07bGV0IGk9bi5pbmRleE9mKHQpO2ZvcihpKz1lO2k+PTAmJmk8PW4ubGVuZ3RoLTEmJighbltpXXx8bltpXS5wYXJlbnROb2RlLmhpZGRlbik7KWkrPWU7cmV0dXJuIG5baV19X29uVGFiS2V5RG93bih0KXtjb25zdCBlPXRoaXMuX3ByZWRpY3RGb2N1c1N0ZXBUYXJnZXQodC5jb21wb3NlZFBhdGgoKVswXSx0LnNoaWZ0S2V5Py0xOjEpO2lmKGU9PT10aGlzLiQudGFibGUpdGhpcy4kLnRhYmxlLmZvY3VzKCk7ZWxzZSBpZihlPT09dGhpcy4kLmZvY3VzZXhpdCl0aGlzLiQuZm9jdXNleGl0LmZvY3VzKCk7ZWxzZSBpZihlPT09dGhpcy5faXRlbXNGb2N1c2FibGUpe2xldCBuPWU7Y29uc3QgaT10aGlzLl9pdGVtc0ZvY3VzYWJsZS5wYXJlbnROb2RlO2lmKHRoaXMuX2Vuc3VyZVNjcm9sbGVkVG9JbmRleCh0aGlzLl9mb2N1c2VkSXRlbUluZGV4KSxpLmluZGV4IT09dGhpcy5fZm9jdXNlZEl0ZW1JbmRleCl7Y29uc3QgdD1BcnJheS5mcm9tKGkuY2hpbGRyZW4pLmluZGV4T2YodGhpcy5faXRlbXNGb2N1c2FibGUpLGU9QXJyYXkuZnJvbSh0aGlzLiQuaXRlbXMuY2hpbGRyZW4pLmZpbHRlcigodD0+dC5pbmRleD09PXRoaXMuX2ZvY3VzZWRJdGVtSW5kZXgpKVswXTtlJiYobj1lLmNoaWxkcmVuW3RdKX10LnByZXZlbnREZWZhdWx0KCksbi5mb2N1cygpfWVsc2UgdC5wcmV2ZW50RGVmYXVsdCgpLGUuZm9jdXMoKTt0aGlzLl90b2dnbGVBdHRyaWJ1dGUoIm5hdmlnYXRpbmciLCEwLHRoaXMpfV9vblNwYWNlS2V5RG93bih0KXt0LnByZXZlbnREZWZhdWx0KCk7Y29uc3QgZT10LmNvbXBvc2VkUGF0aCgpWzBdO2UuX2NvbnRlbnQmJmUuX2NvbnRlbnQuZmlyc3RFbGVtZW50Q2hpbGR8fHRoaXMuZGlzcGF0Y2hFdmVudChuZXcgQ3VzdG9tRXZlbnQoImNlbGwtYWN0aXZhdGUiLHtkZXRhaWw6e21vZGVsOnRoaXMuX19nZXRSb3dNb2RlbChlLnBhcmVudEVsZW1lbnQpfX0pKX1fb25LZXlVcCh0KXtpZighL14oIHxTcGFjZUJhcikkLy50ZXN0KHQua2V5KSlyZXR1cm47dC5wcmV2ZW50RGVmYXVsdCgpO2NvbnN0IGU9dC5jb21wb3NlZFBhdGgoKVswXTtpZihlLl9jb250ZW50JiZlLl9jb250ZW50LmZpcnN0RWxlbWVudENoaWxkKXtjb25zdCB0PXRoaXMuaGFzQXR0cmlidXRlKCJuYXZpZ2F0aW5nIik7ZS5fY29udGVudC5maXJzdEVsZW1lbnRDaGlsZC5jbGljaygpLHRoaXMuX3RvZ2dsZUF0dHJpYnV0ZSgibmF2aWdhdGluZyIsdCx0aGlzKX19X29uRm9jdXNJbih0KXt0aGlzLl9pc01vdXNlZG93bnx8dGhpcy5fdG9nZ2xlQXR0cmlidXRlKCJuYXZpZ2F0aW5nIiwhMCx0aGlzKTtjb25zdCBlPXQuY29tcG9zZWRQYXRoKClbMF07ZT09PXRoaXMuJC50YWJsZXx8ZT09PXRoaXMuJC5mb2N1c2V4aXQ/KHRoaXMuX3ByZWRpY3RGb2N1c1N0ZXBUYXJnZXQoZSxlPT09dGhpcy4kLnRhYmxlPzE6LTEpLmZvY3VzKCksdGhpcy5fdG9nZ2xlQXR0cmlidXRlKCJpbnRlcmFjdGluZyIsITEsdGhpcykpOnRoaXMuX2RldGVjdEludGVyYWN0aW5nKHQpfV9vbkZvY3VzT3V0KHQpe3RoaXMuX3RvZ2dsZUF0dHJpYnV0ZSgibmF2aWdhdGluZyIsITEsdGhpcyksdGhpcy5fZGV0ZWN0SW50ZXJhY3RpbmcodCl9X29uQ2VsbEZvY3VzSW4odCl7aWYodGhpcy5fZGV0ZWN0SW50ZXJhY3RpbmcodCksMz09PXQuY29tcG9zZWRQYXRoKCkuaW5kZXhPZih0aGlzLiQudGFibGUpKXtjb25zdCBlPXQuY29tcG9zZWRQYXRoKClbMF07dGhpcy5fYWN0aXZlUm93R3JvdXA9ZS5wYXJlbnROb2RlLnBhcmVudE5vZGUsdGhpcy5fYWN0aXZlUm93R3JvdXA9PT10aGlzLiQuaGVhZGVyP3RoaXMuX2hlYWRlckZvY3VzYWJsZT1lOnRoaXMuX2FjdGl2ZVJvd0dyb3VwPT09dGhpcy4kLml0ZW1zP3RoaXMuX2l0ZW1zRm9jdXNhYmxlPWU6dGhpcy5fYWN0aXZlUm93R3JvdXA9PT10aGlzLiQuZm9vdGVyJiYodGhpcy5fZm9vdGVyRm9jdXNhYmxlPWUpLGUuX2NvbnRlbnQuZGlzcGF0Y2hFdmVudChuZXcgQ3VzdG9tRXZlbnQoImNlbGwtZm9jdXNpbiIse2J1YmJsZXM6ITF9KSl9dGhpcy5fZGV0ZWN0Rm9jdXNlZEl0ZW1JbmRleCh0KX1fb25DZWxsRm9jdXNPdXQodCl7Mz09PXQuY29tcG9zZWRQYXRoKCkuaW5kZXhPZih0aGlzLiQudGFibGUpJiZ0LmNvbXBvc2VkUGF0aCgpWzBdLl9jb250ZW50LmRpc3BhdGNoRXZlbnQobmV3IEN1c3RvbUV2ZW50KCJjZWxsLWZvY3Vzb3V0Iix7YnViYmxlczohMX0pKX1fZGV0ZWN0SW50ZXJhY3RpbmcodCl7dGhpcy5fdG9nZ2xlQXR0cmlidXRlKCJpbnRlcmFjdGluZyIsdC5jb21wb3NlZFBhdGgoKS5zb21lKCh0PT4idmFhZGluLWdyaWQtY2VsbC1jb250ZW50Ij09PXQubG9jYWxOYW1lKSksdGhpcyl9X2RldGVjdEZvY3VzZWRJdGVtSW5kZXgodCl7Y29uc3R7cm93R3JvdXA6ZSxyb3c6bn09dGhpcy5fcGFyc2VFdmVudFBhdGgodC5jb21wb3NlZFBhdGgoKSk7ZT09PXRoaXMuJC5pdGVtcyYmKHRoaXMuX2ZvY3VzZWRJdGVtSW5kZXg9bi5pbmRleCl9X3ByZXZlbnRTY3JvbGxlclJvdGF0aW5nQ2VsbEZvY3VzKHQsZSl7dC5pbmRleD09PXRoaXMuX2ZvY3VzZWRJdGVtSW5kZXgmJnRoaXMuaGFzQXR0cmlidXRlKCJuYXZpZ2F0aW5nIikmJnRoaXMuX2FjdGl2ZVJvd0dyb3VwPT09dGhpcy4kLml0ZW1zJiYodGhpcy5fbmF2aWdhdGluZ0lzSGlkZGVuPSEwLHRoaXMuX3RvZ2dsZUF0dHJpYnV0ZSgibmF2aWdhdGluZyIsITEsdGhpcykpLGU9PT10aGlzLl9mb2N1c2VkSXRlbUluZGV4JiZ0aGlzLl9uYXZpZ2F0aW5nSXNIaWRkZW4mJih0aGlzLl9uYXZpZ2F0aW5nSXNIaWRkZW49ITEsdGhpcy5fdG9nZ2xlQXR0cmlidXRlKCJuYXZpZ2F0aW5nIiwhMCx0aGlzKSl9X2dldENvbHVtbnModCxlKXtsZXQgbj10aGlzLl9jb2x1bW5UcmVlLmxlbmd0aC0xO3JldHVybiB0PT09dGhpcy4kLmhlYWRlcj9uPWU6dD09PXRoaXMuJC5mb290ZXImJihuPXRoaXMuX2NvbHVtblRyZWUubGVuZ3RoLTEtZSksdGhpcy5fY29sdW1uVHJlZVtuXX1fcmVzZXRLZXlib2FyZE5hdmlnYXRpb24oKXtpZih0aGlzLiQuaGVhZGVyLmZpcnN0RWxlbWVudENoaWxkJiYodGhpcy5faGVhZGVyRm9jdXNhYmxlPUFycmF5LmZyb20odGhpcy4kLmhlYWRlci5maXJzdEVsZW1lbnRDaGlsZC5jaGlsZHJlbikuZmlsdGVyKCh0PT4hdC5oaWRkZW4pKVswXSksdGhpcy4kLml0ZW1zLmZpcnN0RWxlbWVudENoaWxkKXtjb25zdCB0PXRoaXMuX2l0ZXJhdGVJdGVtcygoKHQsZSk9PntpZih0aGlzLl9maXJzdFZpc2libGVJbmRleD09PWUpcmV0dXJuIHRoaXMuJC5pdGVtcy5jaGlsZHJlblt0XX0pKTt0JiYodGhpcy5faXRlbXNGb2N1c2FibGU9QXJyYXkuZnJvbSh0LmNoaWxkcmVuKS5maWx0ZXIoKHQ9PiF0LmhpZGRlbikpWzBdKX10aGlzLiQuZm9vdGVyLmZpcnN0RWxlbWVudENoaWxkJiYodGhpcy5fZm9vdGVyRm9jdXNhYmxlPUFycmF5LmZyb20odGhpcy4kLmZvb3Rlci5maXJzdEVsZW1lbnRDaGlsZC5jaGlsZHJlbikuZmlsdGVyKCh0PT4hdC5oaWRkZW4pKVswXSl9X3Njcm9sbEhvcml6b250YWxseVRvQ2VsbCh0KXtpZih0Lmhhc0F0dHJpYnV0ZSgiZnJvemVuIil8fHRoaXMuX2VsZW1lbnRNYXRjaGVzKHQsJ1twYXJ0fj0iZGV0YWlscy1jZWxsIl0nKSlyZXR1cm47Y29uc3QgZT10LmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpLG49dC5wYXJlbnROb2RlLGk9QXJyYXkuZnJvbShuLmNoaWxkcmVuKS5pbmRleE9mKHQpLHI9dGhpcy4kLnRhYmxlLmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpO2xldCBvPXIubGVmdCxhPXIucmlnaHQ7Zm9yKGxldCB0PWktMTt0Pj0wO3QtLSl7Y29uc3QgZT1uLmNoaWxkcmVuW3RdO2lmKCFlLmhhc0F0dHJpYnV0ZSgiaGlkZGVuIikmJiF0aGlzLl9lbGVtZW50TWF0Y2hlcyhlLCdbcGFydH49ImRldGFpbHMtY2VsbCJdJykmJmUuaGFzQXR0cmlidXRlKCJmcm96ZW4iKSl7bz1lLmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpLnJpZ2h0O2JyZWFrfX1mb3IobGV0IHQ9aSsxO3Q8bi5jaGlsZHJlbi5sZW5ndGg7dCsrKXtjb25zdCBlPW4uY2hpbGRyZW5bdF07aWYoIWUuaGFzQXR0cmlidXRlKCJoaWRkZW4iKSYmIXRoaXMuX2VsZW1lbnRNYXRjaGVzKGUsJ1twYXJ0fj0iZGV0YWlscy1jZWxsIl0nKSYmZS5oYXNBdHRyaWJ1dGUoImZyb3plbiIpKXthPWUuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCkubGVmdDticmVha319ZS5sZWZ0PG8mJih0aGlzLiQudGFibGUuc2Nyb2xsTGVmdCs9TWF0aC5yb3VuZChlLmxlZnQtbykpLGUucmlnaHQ+YSYmKHRoaXMuJC50YWJsZS5zY3JvbGxMZWZ0Kz1NYXRoLnJvdW5kKGUucmlnaHQtYSkpfV9lbGVtZW50TWF0Y2hlcyh0LGUpe3JldHVybiB0Lm1hdGNoZXM/dC5tYXRjaGVzKGUpOi0xIT09QXJyYXkuZnJvbSh0LnBhcmVudE5vZGUucXVlcnlTZWxlY3RvckFsbChlKSkuaW5kZXhPZih0KX19Ci8qKgogICAgQGxpY2Vuc2UKICAgIENvcHlyaWdodCAoYykgMjAxNyBWYWFkaW4gTHRkLgogICAgVGhpcyBwcm9ncmFtIGlzIGF2YWlsYWJsZSB1bmRlciBBcGFjaGUgTGljZW5zZSBWZXJzaW9uIDIuMCwgYXZhaWxhYmxlIGF0IGh0dHBzOi8vdmFhZGluLmNvbS9saWNlbnNlLwogICAgKi8sZkR0PXQ9PmNsYXNzIGV4dGVuZHMoZGkodCkpe3N0YXRpYyBnZXQgcHJvcGVydGllcygpe3JldHVybntjb2x1bW5SZW9yZGVyaW5nQWxsb3dlZDp7dHlwZTpCb29sZWFuLHZhbHVlOiExfSxfb3JkZXJCYXNlU2NvcGU6e3R5cGU6TnVtYmVyLHZhbHVlOjFlN319fXN0YXRpYyBnZXQgb2JzZXJ2ZXJzKCl7cmV0dXJuWyJfdXBkYXRlT3JkZXJzKF9jb2x1bW5UcmVlLCBfY29sdW1uVHJlZS4qKSJdfXJlYWR5KCl7c3VwZXIucmVhZHkoKSxuaSh0aGlzLCJ0cmFjayIsdGhpcy5fb25UcmFja0V2ZW50KSx0aGlzLl9yZW9yZGVyR2hvc3Q9dGhpcy5zaGFkb3dSb290LnF1ZXJ5U2VsZWN0b3IoJ1twYXJ0PSJyZW9yZGVyLWdob3N0Il0nKSx0aGlzLmFkZEV2ZW50TGlzdGVuZXIoInRvdWNoc3RhcnQiLHRoaXMuX29uVG91Y2hTdGFydC5iaW5kKHRoaXMpKSx0aGlzLmFkZEV2ZW50TGlzdGVuZXIoInRvdWNobW92ZSIsdGhpcy5fb25Ub3VjaE1vdmUuYmluZCh0aGlzKSksdGhpcy5hZGRFdmVudExpc3RlbmVyKCJ0b3VjaGVuZCIsdGhpcy5fb25Ub3VjaEVuZC5iaW5kKHRoaXMpKSx0aGlzLmFkZEV2ZW50TGlzdGVuZXIoImNvbnRleHRtZW51Iix0aGlzLl9vbkNvbnRleHRNZW51LmJpbmQodGhpcykpfV9vbkNvbnRleHRNZW51KHQpe3RoaXMuaGFzQXR0cmlidXRlKCJyZW9yZGVyaW5nIikmJnQucHJldmVudERlZmF1bHQoKX1fb25Ub3VjaFN0YXJ0KHQpe3RoaXMuX3N0YXJ0VG91Y2hSZW9yZGVyVGltZW91dD1zZXRUaW1lb3V0KCgoKT0+e3RoaXMuX29uVHJhY2tTdGFydCh7ZGV0YWlsOnt4OnQudG91Y2hlc1swXS5jbGllbnRYLHk6dC50b3VjaGVzWzBdLmNsaWVudFl9fSl9KSwxMDApfV9vblRvdWNoTW92ZSh0KXt0aGlzLl9kcmFnZ2VkQ29sdW1uJiZ0LnByZXZlbnREZWZhdWx0KCksY2xlYXJUaW1lb3V0KHRoaXMuX3N0YXJ0VG91Y2hSZW9yZGVyVGltZW91dCl9X29uVG91Y2hFbmQoKXtjbGVhclRpbWVvdXQodGhpcy5fc3RhcnRUb3VjaFJlb3JkZXJUaW1lb3V0KSx0aGlzLl9vblRyYWNrRW5kKCl9X29uVHJhY2tFdmVudCh0KXtpZigic3RhcnQiPT09dC5kZXRhaWwuc3RhdGUpe2NvbnN0IGU9dC5jb21wb3NlZFBhdGgoKSxuPWVbZS5pbmRleE9mKHRoaXMuJC5oZWFkZXIpLTJdO2lmKCFufHwhbi5fY29udGVudClyZXR1cm47Y29uc3QgaT10aGlzLmdldFJvb3ROb2RlKCkuYWN0aXZlRWxlbWVudDtpZihuLl9jb250ZW50LmNvbnRhaW5zKHRoaXMuZ2V0Um9vdE5vZGUoKS5hY3RpdmVFbGVtZW50KSYmKCF0aGlzLl9pZXx8IXRoaXMuX2lzRm9jdXNhYmxlKGkpKSlyZXR1cm47aWYodGhpcy4kLnNjcm9sbGVyLmhhc0F0dHJpYnV0ZSgiY29sdW1uLXJlc2l6aW5nIikpcmV0dXJuO3RoaXMuX3RvdWNoRGV2aWNlfHx0aGlzLl9vblRyYWNrU3RhcnQodCl9ZWxzZSJ0cmFjayI9PT10LmRldGFpbC5zdGF0ZT90aGlzLl9vblRyYWNrKHQpOiJlbmQiPT09dC5kZXRhaWwuc3RhdGUmJnRoaXMuX29uVHJhY2tFbmQodCl9X29uVHJhY2tTdGFydCh0KXtpZighdGhpcy5jb2x1bW5SZW9yZGVyaW5nQWxsb3dlZClyZXR1cm47Y29uc3QgZT10LnBhdGh8fHFpKHQpLnBhdGg7aWYoZSYmZS5maWx0ZXIoKHQ9PnQuaGFzQXR0cmlidXRlJiZ0Lmhhc0F0dHJpYnV0ZSgiZHJhZ2dhYmxlIikpKVswXSlyZXR1cm47Y29uc3Qgbj10aGlzLl9jZWxsRnJvbVBvaW50KHQuZGV0YWlsLngsdC5kZXRhaWwueSk7aWYobiYmLTEhPT1uLmdldEF0dHJpYnV0ZSgicGFydCIpLmluZGV4T2YoImhlYWRlci1jZWxsIikpe2Zvcih0aGlzLl90b2dnbGVBdHRyaWJ1dGUoInJlb3JkZXJpbmciLCEwLHRoaXMpLHRoaXMuX2RyYWdnZWRDb2x1bW49bi5fY29sdW1uOzE9PT10aGlzLl9kcmFnZ2VkQ29sdW1uLnBhcmVudEVsZW1lbnQuY2hpbGRFbGVtZW50Q291bnQ7KXRoaXMuX2RyYWdnZWRDb2x1bW49dGhpcy5fZHJhZ2dlZENvbHVtbi5wYXJlbnRFbGVtZW50O3RoaXMuX3NldFNpYmxpbmdzUmVvcmRlclN0YXR1cyh0aGlzLl9kcmFnZ2VkQ29sdW1uLCJhbGxvd2VkIiksdGhpcy5fZHJhZ2dlZENvbHVtbi5fcmVvcmRlclN0YXR1cz0iZHJhZ2dpbmciLHRoaXMuX3VwZGF0ZUdob3N0KG4pLHRoaXMuX3Jlb3JkZXJHaG9zdC5zdHlsZS52aXNpYmlsaXR5PSJ2aXNpYmxlIix0aGlzLl91cGRhdGVHaG9zdFBvc2l0aW9uKHQuZGV0YWlsLngsdGhpcy5fdG91Y2hEZXZpY2U/dC5kZXRhaWwueS01MDp0LmRldGFpbC55KSx0aGlzLl9hdXRvU2Nyb2xsZXIoKX19X29uVHJhY2sodCl7aWYoIXRoaXMuX2RyYWdnZWRDb2x1bW4pcmV0dXJuO2NvbnN0IGU9dGhpcy5fY2VsbEZyb21Qb2ludCh0LmRldGFpbC54LHQuZGV0YWlsLnkpO2lmKCFlKXJldHVybjtjb25zdCBuPXRoaXMuX2dldFRhcmdldENvbHVtbihlLHRoaXMuX2RyYWdnZWRDb2x1bW4pO3RoaXMuX2lzU3dhcEFsbG93ZWQodGhpcy5fZHJhZ2dlZENvbHVtbixuKSYmdGhpcy5faXNTd2FwcGFibGVCeVBvc2l0aW9uKG4sdC5kZXRhaWwueCkmJnRoaXMuX3N3YXBDb2x1bW5PcmRlcnModGhpcy5fZHJhZ2dlZENvbHVtbixuKSx0aGlzLl91cGRhdGVHaG9zdFBvc2l0aW9uKHQuZGV0YWlsLngsdGhpcy5fdG91Y2hEZXZpY2U/dC5kZXRhaWwueS01MDp0LmRldGFpbC55KSx0aGlzLl9sYXN0RHJhZ0NsaWVudFg9dC5kZXRhaWwueH1fb25UcmFja0VuZCgpe3RoaXMuX2RyYWdnZWRDb2x1bW4mJih0aGlzLl90b2dnbGVBdHRyaWJ1dGUoInJlb3JkZXJpbmciLCExLHRoaXMpLHRoaXMuX2RyYWdnZWRDb2x1bW4uX3Jlb3JkZXJTdGF0dXM9IiIsdGhpcy5fc2V0U2libGluZ3NSZW9yZGVyU3RhdHVzKHRoaXMuX2RyYWdnZWRDb2x1bW4sIiIpLHRoaXMuX2RyYWdnZWRDb2x1bW49bnVsbCx0aGlzLl9sYXN0RHJhZ0NsaWVudFg9bnVsbCx0aGlzLl9yZW9yZGVyR2hvc3Quc3R5bGUudmlzaWJpbGl0eT0iaGlkZGVuIix0aGlzLmRpc3BhdGNoRXZlbnQobmV3IEN1c3RvbUV2ZW50KCJjb2x1bW4tcmVvcmRlciIse2RldGFpbDp7Y29sdW1uczp0aGlzLl9nZXRDb2x1bW5zSW5PcmRlcigpfX0pKSl9X2dldENvbHVtbnNJbk9yZGVyKCl7cmV0dXJuIHRoaXMuX2NvbHVtblRyZWUuc2xpY2UoMCkucG9wKCkuZmlsdGVyKCh0PT4hdC5oaWRkZW4pKS5zb3J0KCgodCxlKT0+dC5fb3JkZXItZS5fb3JkZXIpKX1fY2VsbEZyb21Qb2ludCh0LGUpe2xldCBuO2lmKHQ9dHx8MCxlPWV8fDAsdGhpcy5fZHJhZ2dlZENvbHVtbnx8dGhpcy5fdG9nZ2xlQXR0cmlidXRlKCJuby1jb250ZW50LXBvaW50ZXItZXZlbnRzIiwhMCx0aGlzLiQuc2Nyb2xsZXIpLG0/bj10aGlzLnNoYWRvd1Jvb3QuZWxlbWVudEZyb21Qb2ludCh0LGUpOihuPWRvY3VtZW50LmVsZW1lbnRGcm9tUG9pbnQodCxlKSwidmFhZGluLWdyaWQtY2VsbC1jb250ZW50Ij09PW4ubG9jYWxOYW1lJiYobj1uLmFzc2lnbmVkU2xvdC5wYXJlbnROb2RlKSksdGhpcy5fdG9nZ2xlQXR0cmlidXRlKCJuby1jb250ZW50LXBvaW50ZXItZXZlbnRzIiwhMSx0aGlzLiQuc2Nyb2xsZXIpLG4mJm4uX2NvbHVtbilyZXR1cm4gbn1fdXBkYXRlR2hvc3RQb3NpdGlvbih0LGUpe2NvbnN0IG49dGhpcy5fcmVvcmRlckdob3N0LmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpLGk9dC1uLndpZHRoLzIscj1lLW4uaGVpZ2h0LzIsbz1wYXJzZUludCh0aGlzLl9yZW9yZGVyR2hvc3QuX2xlZnR8fDApLGE9cGFyc2VJbnQodGhpcy5fcmVvcmRlckdob3N0Ll90b3B8fDApO3RoaXMuX3Jlb3JkZXJHaG9zdC5fbGVmdD1vLShuLmxlZnQtaSksdGhpcy5fcmVvcmRlckdob3N0Ll90b3A9YS0obi50b3AtciksdGhpcy5fcmVvcmRlckdob3N0LnN0eWxlLnRyYW5zZm9ybT1gdHJhbnNsYXRlKCR7dGhpcy5fcmVvcmRlckdob3N0Ll9sZWZ0fXB4LCAke3RoaXMuX3Jlb3JkZXJHaG9zdC5fdG9wfXB4KWB9X2dldElubmVyVGV4dCh0KXtyZXR1cm4gdC5sb2NhbE5hbWU/Im5vbmUiPT09Z2V0Q29tcHV0ZWRTdHlsZSh0KS5kaXNwbGF5PyIiOkFycmF5LmZyb20odC5jaGlsZE5vZGVzKS5tYXAoKHQ9PnRoaXMuX2dldElubmVyVGV4dCh0KSkpLmpvaW4oIiIpOnQudGV4dENvbnRlbnR9X3VwZGF0ZUdob3N0KHQpe2NvbnN0IGU9dGhpcy5fcmVvcmRlckdob3N0O2UudGV4dENvbnRlbnQ9dGhpcy5fZ2V0SW5uZXJUZXh0KHQuX2NvbnRlbnQpO2NvbnN0IG49d2luZG93LmdldENvbXB1dGVkU3R5bGUodCk7cmV0dXJuWyJib3hTaXppbmciLCJkaXNwbGF5Iiwid2lkdGgiLCJoZWlnaHQiLCJiYWNrZ3JvdW5kIiwiYWxpZ25JdGVtcyIsInBhZGRpbmciLCJib3JkZXIiLCJmbGV4LWRpcmVjdGlvbiIsIm92ZXJmbG93Il0uZm9yRWFjaCgodD0+ZS5zdHlsZVt0XT1uW3RdKSksZX1fdXBkYXRlT3JkZXJzKHQsZSl7dm9pZCAwIT09dCYmdm9pZCAwIT09ZSYmKHRbMF0uZm9yRWFjaCgoKHQsZSk9PnQuX29yZGVyPTApKSx0WzBdLmZvckVhY2goKCh0LGUpPT50Ll9vcmRlcj0oZSsxKSp0aGlzLl9vcmRlckJhc2VTY29wZSkpKX1fc2V0U2libGluZ3NSZW9yZGVyU3RhdHVzKHQsZSl7QXJyYXkuZnJvbSh0LnBhcmVudE5vZGUuY2hpbGRyZW4pLmZpbHRlcigoZT0+L2NvbHVtbi8udGVzdChlLmxvY2FsTmFtZSkmJnRoaXMuX2lzU3dhcEFsbG93ZWQoZSx0KSkpLmZvckVhY2goKHQ9PnQuX3Jlb3JkZXJTdGF0dXM9ZSkpfV9hdXRvU2Nyb2xsZXIoKXtpZih0aGlzLl9sYXN0RHJhZ0NsaWVudFgpe2NvbnN0IHQ9dGhpcy5fbGFzdERyYWdDbGllbnRYLXRoaXMuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCkucmlnaHQrNTAsZT10aGlzLmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpLmxlZnQtdGhpcy5fbGFzdERyYWdDbGllbnRYKzUwO3Q+MD90aGlzLiQudGFibGUuc2Nyb2xsTGVmdCs9dC8xMDplPjAmJih0aGlzLiQudGFibGUuc2Nyb2xsTGVmdC09ZS8xMCksdGhpcy5fc2Nyb2xsSGFuZGxlcigpfXRoaXMuX2RyYWdnZWRDb2x1bW4mJnRoaXMuYXN5bmModGhpcy5fYXV0b1Njcm9sbGVyLDEwKX1faXNTd2FwQWxsb3dlZCh0LGUpe2lmKHQmJmUpe2NvbnN0IG49dC5wYXJlbnRFbGVtZW50PT09ZS5wYXJlbnRFbGVtZW50LGk9dC5mcm96ZW49PT1lLmZyb3plbjtyZXR1cm4gdCE9PWUmJm4mJml9fV9pc1N3YXBwYWJsZUJ5UG9zaXRpb24odCxlKXtjb25zdCBuPUFycmF5LmZyb20odGhpcy4kLmhlYWRlci5xdWVyeVNlbGVjdG9yQWxsKCd0cjpub3QoW2hpZGRlbl0pIFtwYXJ0fj0iY2VsbCJdJykpLmZpbHRlcigoZT0+dC5jb250YWlucyhlLl9jb2x1bW4pKSlbMF0saT10aGlzLiQuaGVhZGVyLnF1ZXJ5U2VsZWN0b3IoInRyOm5vdChbaGlkZGVuXSkgW3Jlb3JkZXItc3RhdHVzPWRyYWdnaW5nXSIpLmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpLHI9bi5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKTtyZXR1cm4gci5sZWZ0PmkubGVmdD9lPnIucmlnaHQtaS53aWR0aDplPHIubGVmdCtpLndpZHRofV9zd2FwQ29sdW1uT3JkZXJzKHQsZSl7Y29uc3Qgbj10Ll9vcmRlcjt0Ll9vcmRlcj1lLl9vcmRlcixlLl9vcmRlcj1uLHRoaXMuX3VwZGF0ZUxhc3RGcm96ZW4oKSx0aGlzLl91cGRhdGVGaXJzdEFuZExhc3RDb2x1bW4oKX1fZ2V0VGFyZ2V0Q29sdW1uKHQsZSl7aWYodCYmZSl7bGV0IG49dC5fY29sdW1uO2Zvcig7bi5wYXJlbnRFbGVtZW50IT09ZS5wYXJlbnRFbGVtZW50JiZuIT09dGhpczspbj1uLnBhcmVudEVsZW1lbnQ7cmV0dXJuIG4ucGFyZW50RWxlbWVudD09PWUucGFyZW50RWxlbWVudD9uOnQuX2NvbHVtbn19fQovKioKICAgIEBsaWNlbnNlCiAgICBDb3B5cmlnaHQgKGMpIDIwMTggVmFhZGluIEx0ZC4KICAgIFRoaXMgcHJvZ3JhbSBpcyBhdmFpbGFibGUgdW5kZXIgQXBhY2hlIExpY2Vuc2UgVmVyc2lvbiAyLjAsIGF2YWlsYWJsZSBhdCBodHRwczovL3ZhYWRpbi5jb20vbGljZW5zZS8KICAgICovLG1EdD10PT5jbGFzcyBleHRlbmRzIHR7c3RhdGljIGdldCBwcm9wZXJ0aWVzKCl7cmV0dXJue3Jlc2l6YWJsZTp7dHlwZTpCb29sZWFuLHZhbHVlOmZ1bmN0aW9uKCl7aWYoInZhYWRpbi1ncmlkLWNvbHVtbi1ncm91cCI9PT10aGlzLmxvY2FsTmFtZSlyZXR1cm47Y29uc3QgdD10aGlzLnBhcmVudE5vZGU7cmV0dXJuIHQmJiJ2YWFkaW4tZ3JpZC1jb2x1bW4tZ3JvdXAiPT09dC5sb2NhbE5hbWUmJnQucmVzaXphYmxlfHwhMX19LF9oZWFkZXJUZW1wbGF0ZTp7dHlwZTpPYmplY3R9LF9mb290ZXJUZW1wbGF0ZTp7dHlwZTpPYmplY3R9LGZyb3plbjp7dHlwZTpCb29sZWFuLHZhbHVlOiExfSxoaWRkZW46e3R5cGU6Qm9vbGVhbn0saGVhZGVyOnt0eXBlOlN0cmluZ30sdGV4dEFsaWduOnt0eXBlOlN0cmluZ30sX2xhc3RGcm96ZW46e3R5cGU6Qm9vbGVhbix2YWx1ZTohMX0sX29yZGVyOk51bWJlcixfcmVvcmRlclN0YXR1czpCb29sZWFuLF9lbXB0eUNlbGxzOkFycmF5LF9oZWFkZXJDZWxsOk9iamVjdCxfZm9vdGVyQ2VsbDpPYmplY3QsX2dyaWQ6T2JqZWN0LGhlYWRlclJlbmRlcmVyOkZ1bmN0aW9uLGZvb3RlclJlbmRlcmVyOkZ1bmN0aW9ufX1zdGF0aWMgZ2V0IG9ic2VydmVycygpe3JldHVyblsiX3dpZHRoQ2hhbmdlZCh3aWR0aCwgX2hlYWRlckNlbGwsIF9mb290ZXJDZWxsLCBfY2VsbHMuKikiLCJfZnJvemVuQ2hhbmdlZChmcm96ZW4sIF9oZWFkZXJDZWxsLCBfZm9vdGVyQ2VsbCwgX2NlbGxzLiopIiwiX2ZsZXhHcm93Q2hhbmdlZChmbGV4R3JvdywgX2hlYWRlckNlbGwsIF9mb290ZXJDZWxsLCBfY2VsbHMuKikiLCJfcGF0aE9ySGVhZGVyQ2hhbmdlZChwYXRoLCBoZWFkZXIsIF9oZWFkZXJDZWxsLCBfZm9vdGVyQ2VsbCwgX2NlbGxzLiosIHJlbmRlcmVyLCBoZWFkZXJSZW5kZXJlciwgX2JvZHlUZW1wbGF0ZSwgX2hlYWRlclRlbXBsYXRlKSIsIl90ZXh0QWxpZ25DaGFuZ2VkKHRleHRBbGlnbiwgX2NlbGxzLiosIF9oZWFkZXJDZWxsLCBfZm9vdGVyQ2VsbCkiLCJfb3JkZXJDaGFuZ2VkKF9vcmRlciwgX2hlYWRlckNlbGwsIF9mb290ZXJDZWxsLCBfY2VsbHMuKikiLCJfbGFzdEZyb3plbkNoYW5nZWQoX2xhc3RGcm96ZW4pIiwiX3NldEJvZHlUZW1wbGF0ZU9yUmVuZGVyZXIoX2JvZHlUZW1wbGF0ZSwgcmVuZGVyZXIsIF9jZWxscywgX2NlbGxzLiopIiwiX3NldEhlYWRlclRlbXBsYXRlT3JSZW5kZXJlcihfaGVhZGVyVGVtcGxhdGUsIGhlYWRlclJlbmRlcmVyLCBfaGVhZGVyQ2VsbCkiLCJfc2V0Rm9vdGVyVGVtcGxhdGVPclJlbmRlcmVyKF9mb290ZXJUZW1wbGF0ZSwgZm9vdGVyUmVuZGVyZXIsIF9mb290ZXJDZWxsKSIsIl9yZXNpemFibGVDaGFuZ2VkKHJlc2l6YWJsZSwgX2hlYWRlckNlbGwpIiwiX3Jlb3JkZXJTdGF0dXNDaGFuZ2VkKF9yZW9yZGVyU3RhdHVzLCBfaGVhZGVyQ2VsbCwgX2Zvb3RlckNlbGwsIF9jZWxscy4qKSIsIl9oaWRkZW5DaGFuZ2VkKGhpZGRlbiwgX2hlYWRlckNlbGwsIF9mb290ZXJDZWxsLCBfY2VsbHMuKikiXX1jb25uZWN0ZWRDYWxsYmFjaygpe3N1cGVyLmNvbm5lY3RlZENhbGxiYWNrKCksdGhpcy5fYm9keVRlbXBsYXRlJiYodGhpcy5fYm9keVRlbXBsYXRlLnRlbXBsYXRpemVyLl9ncmlkPXRoaXMuX2dyaWQpLHRoaXMuX2hlYWRlclRlbXBsYXRlJiYodGhpcy5faGVhZGVyVGVtcGxhdGUudGVtcGxhdGl6ZXIuX2dyaWQ9dGhpcy5fZ3JpZCksdGhpcy5fZm9vdGVyVGVtcGxhdGUmJih0aGlzLl9mb290ZXJUZW1wbGF0ZS50ZW1wbGF0aXplci5fZ3JpZD10aGlzLl9ncmlkKSx0aGlzLl90ZW1wbGF0ZU9ic2VydmVyLmZsdXNoKCksdGhpcy5fYm9keVRlbXBsYXRlfHx0aGlzLl90ZW1wbGF0ZU9ic2VydmVyLmNhbGxiYWNrKCkscmVxdWVzdEFuaW1hdGlvbkZyYW1lKCgoKT0+e3RoaXMuX2FsbENlbGxzLmZvckVhY2goKHQ9Pnt0Ll9jb250ZW50LnBhcmVudE5vZGV8fHRoaXMuX2dyaWQmJnRoaXMuX2dyaWQuYXBwZW5kQ2hpbGQodC5fY29udGVudCl9KSl9KSl9ZGlzY29ubmVjdGVkQ2FsbGJhY2soKXtzdXBlci5kaXNjb25uZWN0ZWRDYWxsYmFjaygpLHJlcXVlc3RBbmltYXRpb25GcmFtZSgoKCk9Pnt0aGlzLl9maW5kSG9zdEdyaWQoKXx8dGhpcy5fYWxsQ2VsbHMuZm9yRWFjaCgodD0+e3QuX2NvbnRlbnQucGFyZW50Tm9kZSYmdC5fY29udGVudC5wYXJlbnROb2RlLnJlbW92ZUNoaWxkKHQuX2NvbnRlbnQpfSkpfSkpLHRoaXMuX2dyaWRWYWx1ZT12b2lkIDB9X2ZpbmRIb3N0R3JpZCgpe2xldCB0PXRoaXM7Zm9yKDt0JiYhL152YWFkaW4uKmdyaWQoLXBybyk/JC8udGVzdCh0LmxvY2FsTmFtZSk7KXQ9dC5hc3NpZ25lZFNsb3Q/dC5hc3NpZ25lZFNsb3QucGFyZW50Tm9kZTp0LnBhcmVudE5vZGU7cmV0dXJuIHR8fHZvaWQgMH1nZXQgX2dyaWQoKXtyZXR1cm4gdGhpcy5fZ3JpZFZhbHVlfHwodGhpcy5fZ3JpZFZhbHVlPXRoaXMuX2ZpbmRIb3N0R3JpZCgpKSx0aGlzLl9ncmlkVmFsdWV9Z2V0IF9hbGxDZWxscygpe3JldHVybltdLmNvbmNhdCh0aGlzLl9jZWxsc3x8W10pLmNvbmNhdCh0aGlzLl9lbXB0eUNlbGxzfHxbXSkuY29uY2F0KHRoaXMuX2hlYWRlckNlbGwpLmNvbmNhdCh0aGlzLl9mb290ZXJDZWxsKS5maWx0ZXIoKHQ9PnQpKX1jb25zdHJ1Y3Rvcigpe3N1cGVyKCksdGhpcy5fdGVtcGxhdGVPYnNlcnZlcj1uZXcgUmkodGhpcywodD0+e3RoaXMuX2hlYWRlclRlbXBsYXRlPXRoaXMuX3ByZXBhcmVIZWFkZXJUZW1wbGF0ZSgpLHRoaXMuX2Zvb3RlclRlbXBsYXRlPXRoaXMuX3ByZXBhcmVGb290ZXJUZW1wbGF0ZSgpLHRoaXMuX2JvZHlUZW1wbGF0ZT10aGlzLl9wcmVwYXJlQm9keVRlbXBsYXRlKCl9KSl9X3ByZXBhcmVIZWFkZXJUZW1wbGF0ZSgpe3JldHVybiB0aGlzLl9wcmVwYXJlVGVtcGxhdGl6ZXIodGhpcy5fZmluZFRlbXBsYXRlKCEwKXx8bnVsbCx7fSl9X3ByZXBhcmVGb290ZXJUZW1wbGF0ZSgpe3JldHVybiB0aGlzLl9wcmVwYXJlVGVtcGxhdGl6ZXIodGhpcy5fZmluZFRlbXBsYXRlKCExLCEwKXx8bnVsbCx7fSl9X3ByZXBhcmVCb2R5VGVtcGxhdGUoKXtyZXR1cm4gdGhpcy5fcHJlcGFyZVRlbXBsYXRpemVyKHRoaXMuX2ZpbmRUZW1wbGF0ZSgpfHxudWxsKX1fcHJlcGFyZVRlbXBsYXRpemVyKHQsZSl7aWYodCYmIXQudGVtcGxhdGl6ZXIpe2NvbnN0IG49bmV3IGVEdDtuLl9ncmlkPXRoaXMuX2dyaWQsbi5kYXRhSG9zdD10aGlzLmRhdGFIb3N0LG4uX2luc3RhbmNlUHJvcHM9ZXx8bi5faW5zdGFuY2VQcm9wcyxuLnRlbXBsYXRlPXQsdC50ZW1wbGF0aXplcj1ufXJldHVybiB0fV9yZW5kZXJIZWFkZXJBbmRGb290ZXIoKXt0aGlzLmhlYWRlclJlbmRlcmVyJiZ0aGlzLl9oZWFkZXJDZWxsJiZ0aGlzLl9fcnVuUmVuZGVyZXIodGhpcy5oZWFkZXJSZW5kZXJlcix0aGlzLl9oZWFkZXJDZWxsKSx0aGlzLmZvb3RlclJlbmRlcmVyJiZ0aGlzLl9mb290ZXJDZWxsJiZ0aGlzLl9fcnVuUmVuZGVyZXIodGhpcy5mb290ZXJSZW5kZXJlcix0aGlzLl9mb290ZXJDZWxsKX1fX3J1blJlbmRlcmVyKHQsZSxuKXtjb25zdCBpPVtlLl9jb250ZW50LHRoaXNdO24mJm4uaXRlbSYmaS5wdXNoKG4pLHQuYXBwbHkodGhpcyxpKX1fX3NldENvbHVtblRlbXBsYXRlT3JSZW5kZXJlcih0LGUsbil7aWYoIXRoaXMuaGlkZGVuKXtpZih0JiZlKXRocm93IG5ldyBFcnJvcigiWW91IHNob3VsZCBvbmx5IHVzZSBlaXRoZXIgYSByZW5kZXJlciBvciBhIHRlbXBsYXRlIik7bi5mb3JFYWNoKChuPT57Y29uc3QgaT10aGlzLl9ncmlkLl9fZ2V0Um93TW9kZWwobi5wYXJlbnRFbGVtZW50KTtpZihlKW4uX3JlbmRlcmVyPWUsKGkuaXRlbXx8ZT09PXRoaXMuaGVhZGVyUmVuZGVyZXJ8fGU9PT10aGlzLmZvb3RlclJlbmRlcmVyKSYmdGhpcy5fX3J1blJlbmRlcmVyKGUsbixpKTtlbHNlIGlmKG4uX3RlbXBsYXRlIT09dCl7bi5fdGVtcGxhdGU9dCxuLl9jb250ZW50LmlubmVySFRNTD0iIix0LnRlbXBsYXRpemVyLl9ncmlkPXQudGVtcGxhdGl6ZXIuX2dyaWR8fHRoaXMuX2dyaWQ7Y29uc3QgZT10LnRlbXBsYXRpemVyLmNyZWF0ZUluc3RhbmNlKCk7bi5fY29udGVudC5hcHBlbmRDaGlsZChlLnJvb3QpLG4uX2luc3RhbmNlPWUsaS5pdGVtJiZuLl9pbnN0YW5jZS5zZXRQcm9wZXJ0aWVzKGkpfX0pKX19X3NldEJvZHlUZW1wbGF0ZU9yUmVuZGVyZXIodCxlLG4saSl7KHR8fGUpJiZuJiZ0aGlzLl9fc2V0Q29sdW1uVGVtcGxhdGVPclJlbmRlcmVyKHQsZSxuKX1fc2V0SGVhZGVyVGVtcGxhdGVPclJlbmRlcmVyKHQsZSxuKXsodHx8ZSkmJm4mJnRoaXMuX19zZXRDb2x1bW5UZW1wbGF0ZU9yUmVuZGVyZXIodCxlLFtuXSl9X3NldEZvb3RlclRlbXBsYXRlT3JSZW5kZXJlcih0LGUsbil7KHR8fGUpJiZuJiYodGhpcy5fX3NldENvbHVtblRlbXBsYXRlT3JSZW5kZXJlcih0LGUsW25dKSx0aGlzLl9ncmlkLl9fdXBkYXRlSGVhZGVyRm9vdGVyUm93VmlzaWJpbGl0eShuLnBhcmVudEVsZW1lbnQpKX1fc2VsZWN0Rmlyc3RUZW1wbGF0ZSh0PSExLGU9ITEpe3JldHVybiBSaS5nZXRGbGF0dGVuZWROb2Rlcyh0aGlzKS5maWx0ZXIoKG49PiJ0ZW1wbGF0ZSI9PT1uLmxvY2FsTmFtZSYmbi5jbGFzc0xpc3QuY29udGFpbnMoImhlYWRlciIpPT09dCYmbi5jbGFzc0xpc3QuY29udGFpbnMoImZvb3RlciIpPT09ZSkpWzBdfV9maW5kVGVtcGxhdGUodCxlKXtjb25zdCBuPXRoaXMuX3NlbGVjdEZpcnN0VGVtcGxhdGUodCxlKTtyZXR1cm4gbiYmdGhpcy5kYXRhSG9zdCYmKG4uX3Jvb3REYXRhSG9zdD10aGlzLmRhdGFIb3N0Ll9yb290RGF0YUhvc3R8fHRoaXMuZGF0YUhvc3QpLG59X2ZsZXhHcm93Q2hhbmdlZCh0LGUsbixpKXt0aGlzLnBhcmVudEVsZW1lbnQmJnRoaXMucGFyZW50RWxlbWVudC5fY29sdW1uUHJvcENoYW5nZWQmJnRoaXMucGFyZW50RWxlbWVudC5fY29sdW1uUHJvcENoYW5nZWQoImZsZXhHcm93IiksdGhpcy5fYWxsQ2VsbHMuZm9yRWFjaCgoZT0+ZS5zdHlsZS5mbGV4R3Jvdz10KSl9X29yZGVyQ2hhbmdlZCh0LGUsbixpKXt0aGlzLl9hbGxDZWxscy5mb3JFYWNoKChlPT5lLnN0eWxlLm9yZGVyPXQpKX1fd2lkdGhDaGFuZ2VkKHQsZSxuLGkpe3RoaXMucGFyZW50RWxlbWVudCYmdGhpcy5wYXJlbnRFbGVtZW50Ll9jb2x1bW5Qcm9wQ2hhbmdlZCYmdGhpcy5wYXJlbnRFbGVtZW50Ll9jb2x1bW5Qcm9wQ2hhbmdlZCgid2lkdGgiKSx0aGlzLl9hbGxDZWxscy5mb3JFYWNoKChlPT5lLnN0eWxlLndpZHRoPXQpKSx0aGlzLl9ncmlkJiZ0aGlzLl9ncmlkLl9fZm9yY2VSZWZsb3cmJnRoaXMuX2dyaWQuX19mb3JjZVJlZmxvdygpfV9mcm96ZW5DaGFuZ2VkKHQsZSxuLGkpe3RoaXMucGFyZW50RWxlbWVudCYmdGhpcy5wYXJlbnRFbGVtZW50Ll9jb2x1bW5Qcm9wQ2hhbmdlZCYmdGhpcy5wYXJlbnRFbGVtZW50Ll9jb2x1bW5Qcm9wQ2hhbmdlZCgiZnJvemVuIix0KSx0aGlzLl9hbGxDZWxscy5mb3JFYWNoKChlPT50aGlzLl90b2dnbGVBdHRyaWJ1dGUoImZyb3plbiIsdCxlKSkpLHRoaXMuX2dyaWQmJnRoaXMuX2dyaWQuX2Zyb3plbkNlbGxzQ2hhbmdlZCYmdGhpcy5fZ3JpZC5fZnJvemVuQ2VsbHNDaGFuZ2VkKCl9X2xhc3RGcm96ZW5DaGFuZ2VkKHQpe3RoaXMuX2FsbENlbGxzLmZvckVhY2goKGU9PnRoaXMuX3RvZ2dsZUF0dHJpYnV0ZSgibGFzdC1mcm96ZW4iLHQsZSkpKSx0aGlzLnBhcmVudEVsZW1lbnQmJnRoaXMucGFyZW50RWxlbWVudC5fY29sdW1uUHJvcENoYW5nZWQmJih0aGlzLnBhcmVudEVsZW1lbnQuX2xhc3RGcm96ZW49dCl9X3BhdGhPckhlYWRlckNoYW5nZWQodCxlLG4saSxyLG8sYSxzLGwpe2NvbnN0IGM9dm9pZCAwIT09ZTshYSYmIWwmJmMmJm4mJnRoaXMuX19zZXRUZXh0Q29udGVudChuLl9jb250ZW50LGUpLHQmJnIudmFsdWUmJihvfHxzfHx0aGlzLl9fc2V0Q29sdW1uVGVtcGxhdGVPclJlbmRlcmVyKHZvaWQgMCwoKGUsbix7aXRlbTppfSk9PnRoaXMuX19zZXRUZXh0Q29udGVudChlLHRoaXMuZ2V0KHQsaSkpKSxyLnZhbHVlKSxhfHxsfHxjfHwhbnx8bnVsbD09PWV8fHRoaXMuX19zZXRUZXh0Q29udGVudChuLl9jb250ZW50LHRoaXMuX2dlbmVyYXRlSGVhZGVyKHQpKSksbiYmdGhpcy5fZ3JpZC5fX3VwZGF0ZUhlYWRlckZvb3RlclJvd1Zpc2liaWxpdHkobi5wYXJlbnRFbGVtZW50KX1fX3NldFRleHRDb250ZW50KHQsZSl7dC50ZXh0Q29udGVudCE9PWUmJih0LnRleHRDb250ZW50PWUpfV9nZW5lcmF0ZUhlYWRlcih0KXtyZXR1cm4gdC5zdWJzdHIodC5sYXN0SW5kZXhPZigiLiIpKzEpLnJlcGxhY2UoLyhbQS1aXSkvZywiLSQxIikudG9Mb3dlckNhc2UoKS5yZXBsYWNlKC8tL2csIiAiKS5yZXBsYWNlKC9eLi8sKHQ9PnQudG9VcHBlckNhc2UoKSkpfV90b2dnbGVBdHRyaWJ1dGUodCxlLG4pe24uaGFzQXR0cmlidXRlKHQpPT09IWUmJihlP24uc2V0QXR0cmlidXRlKHQsIiIpOm4ucmVtb3ZlQXR0cmlidXRlKHQpKX1fcmVvcmRlclN0YXR1c0NoYW5nZWQodCxlLG4saSl7dGhpcy5fYWxsQ2VsbHMuZm9yRWFjaCgoZT0+ZS5zZXRBdHRyaWJ1dGUoInJlb3JkZXItc3RhdHVzIix0KSkpfV9yZXNpemFibGVDaGFuZ2VkKHQsZSl7dm9pZCAwIT09dCYmdm9pZCAwIT09ZSYmZSYmW2VdLmNvbmNhdCh0aGlzLl9lbXB0eUNlbGxzKS5mb3JFYWNoKChlPT57aWYoZSl7Y29uc3Qgbj1lLnF1ZXJ5U2VsZWN0b3IoJ1twYXJ0fj0icmVzaXplLWhhbmRsZSJdJyk7aWYobiYmZS5yZW1vdmVDaGlsZChuKSx0KXtjb25zdCB0PWRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoImRpdiIpO3Quc2V0QXR0cmlidXRlKCJwYXJ0IiwicmVzaXplLWhhbmRsZSIpLGUuYXBwZW5kQ2hpbGQodCl9fX0pKX1fdGV4dEFsaWduQ2hhbmdlZCh0LGUsbixpKXtpZih2b2lkIDA9PT10KXJldHVybjtpZigtMT09PVsic3RhcnQiLCJlbmQiLCJjZW50ZXIiXS5pbmRleE9mKHQpKXJldHVybiB2b2lkIGNvbnNvbGUud2FybigndGV4dEFsaWduIGNhbiBvbmx5IGJlIHNldCBhcyAic3RhcnQiLCAiZW5kIiBvciAiY2VudGVyIicpO2xldCByOyJsdHIiPT09Z2V0Q29tcHV0ZWRTdHlsZSh0aGlzLl9ncmlkKS5kaXJlY3Rpb24/InN0YXJ0Ij09PXQ/cj0ibGVmdCI6ImVuZCI9PT10JiYocj0icmlnaHQiKToic3RhcnQiPT09dD9yPSJyaWdodCI6ImVuZCI9PT10JiYocj0ibGVmdCIpLHRoaXMuX2FsbENlbGxzLmZvckVhY2goKGU9PntlLl9jb250ZW50LnN0eWxlLnRleHRBbGlnbj10LGdldENvbXB1dGVkU3R5bGUoZS5fY29udGVudCkudGV4dEFsaWduIT09dCYmKGUuX2NvbnRlbnQuc3R5bGUudGV4dEFsaWduPXIpfSkpfV9oaWRkZW5DaGFuZ2VkKHQsZSxuLGkpe3RoaXMucGFyZW50RWxlbWVudCYmdGhpcy5wYXJlbnRFbGVtZW50Ll9jb2x1bW5Qcm9wQ2hhbmdlZCYmdGhpcy5wYXJlbnRFbGVtZW50Ll9jb2x1bW5Qcm9wQ2hhbmdlZCgiaGlkZGVuIix0KSwhIXQhPSEhdGhpcy5fcHJldmlvdXNIaWRkZW4mJnRoaXMuX2dyaWQmJighMD09PXQmJnRoaXMuX2FsbENlbGxzLmZvckVhY2goKHQ9Pnt0Ll9jb250ZW50LnBhcmVudE5vZGUmJnQuX2NvbnRlbnQucGFyZW50Tm9kZS5yZW1vdmVDaGlsZCh0Ll9jb250ZW50KX0pKSx0aGlzLl9ncmlkLl9kZWJvdW5jZXJIaWRkZW5DaGFuZ2VkPUVuLmRlYm91bmNlKHRoaXMuX2dyaWQuX2RlYm91bmNlckhpZGRlbkNoYW5nZWQsX3QsKCgpPT57dGhpcy5fZ3JpZCYmdGhpcy5fZ3JpZC5fcmVuZGVyQ29sdW1uVHJlZSYmdGhpcy5fZ3JpZC5fcmVuZGVyQ29sdW1uVHJlZSh0aGlzLl9ncmlkLl9jb2x1bW5UcmVlKX0pKSx0aGlzLl9ncmlkLl91cGRhdGVMYXN0RnJvemVuJiZ0aGlzLl9ncmlkLl91cGRhdGVMYXN0RnJvemVuKCksdGhpcy5fZ3JpZC5ub3RpZnlSZXNpemUmJnRoaXMuX2dyaWQubm90aWZ5UmVzaXplKCksdGhpcy5fZ3JpZC5fcmVzZXRLZXlib2FyZE5hdmlnYXRpb24mJnRoaXMuX2dyaWQuX3Jlc2V0S2V5Ym9hcmROYXZpZ2F0aW9uKCkpLHRoaXMuX3ByZXZpb3VzSGlkZGVuPXR9fTtjbGFzcyBnRHQgZXh0ZW5kcyhtRHQoVHp0KHllKSkpe3N0YXRpYyBnZXQgaXMoKXtyZXR1cm4idmFhZGluLWdyaWQtY29sdW1uIn1zdGF0aWMgZ2V0IHByb3BlcnRpZXMoKXtyZXR1cm57d2lkdGg6e3R5cGU6U3RyaW5nLHZhbHVlOiIxMDBweCJ9LGZsZXhHcm93Ont0eXBlOk51bWJlcix2YWx1ZToxfSxyZW5kZXJlcjpGdW5jdGlvbixwYXRoOnt0eXBlOlN0cmluZ30sYXV0b1dpZHRoOnt0eXBlOkJvb2xlYW4sdmFsdWU6ITF9LF9ib2R5VGVtcGxhdGU6e3R5cGU6T2JqZWN0fSxfY2VsbHM6QXJyYXl9fX1jdXN0b21FbGVtZW50cy5kZWZpbmUoZ0R0LmlzLGdEdCk7Ci8qKgogICAgQGxpY2Vuc2UKICAgIENvcHlyaWdodCAoYykgMjAxNyBWYWFkaW4gTHRkLgogICAgVGhpcyBwcm9ncmFtIGlzIGF2YWlsYWJsZSB1bmRlciBBcGFjaGUgTGljZW5zZSBWZXJzaW9uIDIuMCwgYXZhaWxhYmxlIGF0IGh0dHBzOi8vdmFhZGluLmNvbS9saWNlbnNlLwogICAgKi8KY29uc3QgX0R0PWRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoImRvbS1tb2R1bGUiKTtfRHQuYXBwZW5kQ2hpbGQoX2VgCiAgPHN0eWxlPgogICAgQGtleWZyYW1lcyB2YWFkaW4tZ3JpZC1hcHBlYXIgewogICAgICB0byB7CiAgICAgICAgb3BhY2l0eTogMTsKICAgICAgfQogICAgfQoKICAgIDpob3N0IHsKICAgICAgZGlzcGxheTogYmxvY2s7CiAgICAgIGFuaW1hdGlvbjogMW1zIHZhYWRpbi1ncmlkLWFwcGVhcjsKICAgICAgaGVpZ2h0OiA0MDBweDsKICAgICAgZmxleDogMSAxIGF1dG87CiAgICAgIGFsaWduLXNlbGY6IHN0cmV0Y2g7CiAgICAgIHBvc2l0aW9uOiByZWxhdGl2ZTsKICAgIH0KCiAgICA6aG9zdChbaGlkZGVuXSkgewogICAgICBkaXNwbGF5OiBub25lICFpbXBvcnRhbnQ7CiAgICB9CgogICAgI3Njcm9sbGVyIHsKICAgICAgZGlzcGxheTogYmxvY2s7CiAgICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlWSgwKTsKICAgICAgd2lkdGg6IGF1dG87CiAgICAgIGhlaWdodDogYXV0bzsKICAgICAgcG9zaXRpb246IGFic29sdXRlOwogICAgICB0b3A6IDA7CiAgICAgIHJpZ2h0OiAwOwogICAgICBib3R0b206IDA7CiAgICAgIGxlZnQ6IDA7CiAgICB9CgogICAgOmhvc3QoW2hlaWdodC1ieS1yb3dzXSkgewogICAgICBoZWlnaHQ6IGF1dG87CiAgICAgIGFsaWduLXNlbGY6IGZsZXgtc3RhcnQ7CiAgICAgIGZsZXgtZ3JvdzogMDsKICAgICAgd2lkdGg6IDEwMCU7CiAgICB9CgogICAgOmhvc3QoW2hlaWdodC1ieS1yb3dzXSkgI3Njcm9sbGVyIHsKICAgICAgd2lkdGg6IDEwMCU7CiAgICAgIGhlaWdodDogMTAwJTsKICAgICAgcG9zaXRpb246IHJlbGF0aXZlOwogICAgfQoKICAgICN0YWJsZSB7CiAgICAgIGRpc3BsYXk6IGZsZXg7CiAgICAgIGZsZXgtZGlyZWN0aW9uOiBjb2x1bW47CiAgICAgIHdpZHRoOiAxMDAlOwogICAgICBoZWlnaHQ6IDEwMCU7CiAgICAgIG92ZXJmbG93OiBhdXRvOwogICAgICBwb3NpdGlvbjogcmVsYXRpdmU7CiAgICAgIG91dGxpbmU6IG5vbmU7CiAgICAgIC8qIFdvcmthcm91bmQgZm9yIGEgRGVza3RvcCBTYWZhcmkgYnVnOiBuZXcgc3RhY2tpbmcgY29udGV4dCBoZXJlIHByZXZlbnRzIHRoZSBzY3JvbGxiYXIgZnJvbSBnZXR0aW5nIGhpZGRlbiAqLwogICAgICB6LWluZGV4OiAwOwogICAgfQoKICAgICNoZWFkZXIsCiAgICAjZm9vdGVyIHsKICAgICAgZGlzcGxheTogYmxvY2s7CiAgICAgIHBvc2l0aW9uOiAtd2Via2l0LXN0aWNreTsKICAgICAgcG9zaXRpb246IHN0aWNreTsKICAgICAgbGVmdDogMDsKICAgICAgb3ZlcmZsb3c6IHZpc2libGU7CiAgICAgIHdpZHRoOiAxMDAlOwogICAgICB6LWluZGV4OiAxOwogICAgfQoKICAgICNoZWFkZXIgewogICAgICB0b3A6IDA7CiAgICB9CgogICAgdGggewogICAgICB0ZXh0LWFsaWduOiBpbmhlcml0OwogICAgfQoKICAgIC8qIFNhZmFyaSBkb2Vzbid0IHdvcmsgd2l0aCAiaW5oZXJpdCIgKi8KICAgIFtzYWZhcmldIHRoIHsKICAgICAgdGV4dC1hbGlnbjogaW5pdGlhbDsKICAgIH0KCiAgICAjZm9vdGVyIHsKICAgICAgYm90dG9tOiAwOwogICAgfQoKICAgICNpdGVtcyB7CiAgICAgIGZsZXgtZ3JvdzogMTsKICAgICAgZmxleC1zaHJpbms6IDA7CiAgICAgIGRpc3BsYXk6IGJsb2NrOwogICAgICBwb3NpdGlvbjogLXdlYmtpdC1zdGlja3k7CiAgICAgIHBvc2l0aW9uOiBzdGlja3k7CiAgICAgIHdpZHRoOiAxMDAlOwogICAgICBsZWZ0OiAwOwogICAgICBvdmVyZmxvdzogdmlzaWJsZTsKICAgIH0KCiAgICBbcGFydH49InJvdyJdIHsKICAgICAgZGlzcGxheTogZmxleDsKICAgICAgd2lkdGg6IDEwMCU7CiAgICAgIGJveC1zaXppbmc6IGJvcmRlci1ib3g7CiAgICAgIG1hcmdpbjogMDsKICAgIH0KCiAgICBbcGFydH49InJvdyJdW2xvYWRpbmddIFtwYXJ0fj0iYm9keS1jZWxsIl0gOjpzbG90dGVkKHZhYWRpbi1ncmlkLWNlbGwtY29udGVudCkgewogICAgICBvcGFjaXR5OiAwOwogICAgfQoKICAgICNpdGVtcyBbcGFydH49InJvdyJdIHsKICAgICAgcG9zaXRpb246IGFic29sdXRlOwogICAgfQoKICAgICNpdGVtcyBbcGFydH49InJvdyJdOmVtcHR5IHsKICAgICAgaGVpZ2h0OiAxZW07CiAgICB9CgogICAgW3BhcnR+PSJjZWxsIl06bm90KFtwYXJ0fj0iZGV0YWlscy1jZWxsIl0pIHsKICAgICAgZmxleC1zaHJpbms6IDA7CiAgICAgIGZsZXgtZ3JvdzogMTsKICAgICAgYm94LXNpemluZzogYm9yZGVyLWJveDsKICAgICAgZGlzcGxheTogZmxleDsKICAgICAgd2lkdGg6IDEwMCU7CiAgICAgIHBvc2l0aW9uOiByZWxhdGl2ZTsKICAgICAgYWxpZ24taXRlbXM6IGNlbnRlcjsKICAgICAgcGFkZGluZzogMDsKICAgICAgd2hpdGUtc3BhY2U6IG5vd3JhcDsKICAgIH0KCiAgICBbcGFydH49ImRldGFpbHMtY2VsbCJdIHsKICAgICAgcG9zaXRpb246IGFic29sdXRlOwogICAgICBib3R0b206IDA7CiAgICAgIHdpZHRoOiAxMDAlOwogICAgICBib3gtc2l6aW5nOiBib3JkZXItYm94OwogICAgICBwYWRkaW5nOiAwOwogICAgfQoKICAgIFtwYXJ0fj0iY2VsbCJdIDo6c2xvdHRlZCh2YWFkaW4tZ3JpZC1jZWxsLWNvbnRlbnQpIHsKICAgICAgZGlzcGxheTogYmxvY2s7CiAgICAgIHdpZHRoOiAxMDAlOwogICAgICBib3gtc2l6aW5nOiBib3JkZXItYm94OwogICAgICBvdmVyZmxvdzogaGlkZGVuOwogICAgICB0ZXh0LW92ZXJmbG93OiBlbGxpcHNpczsKICAgIH0KCiAgICBbaGlkZGVuXSB7CiAgICAgIGRpc3BsYXk6IG5vbmUgIWltcG9ydGFudDsKICAgIH0KCiAgICBbZnJvemVuXSB7CiAgICAgIHotaW5kZXg6IDI7CiAgICAgIHdpbGwtY2hhbmdlOiB0cmFuc2Zvcm07CiAgICB9CgogICAgW25vLXNjcm9sbGJhcnNdW3NhZmFyaV0gI3RhYmxlLAogICAgW25vLXNjcm9sbGJhcnNdW2ZpcmVmb3hdICN0YWJsZSB7CiAgICAgIG92ZXJmbG93OiBoaWRkZW47CiAgICB9CgogICAgLyogUmVvcmRlcmluZyBzdHlsZXMgKi8KICAgIDpob3N0KFtyZW9yZGVyaW5nXSkgW3BhcnR+PSJjZWxsIl0gOjpzbG90dGVkKHZhYWRpbi1ncmlkLWNlbGwtY29udGVudCksCiAgICA6aG9zdChbcmVvcmRlcmluZ10pIFtwYXJ0fj0icmVzaXplLWhhbmRsZSJdLAogICAgI3Njcm9sbGVyW25vLWNvbnRlbnQtcG9pbnRlci1ldmVudHNdIFtwYXJ0fj0iY2VsbCJdIDo6c2xvdHRlZCh2YWFkaW4tZ3JpZC1jZWxsLWNvbnRlbnQpIHsKICAgICAgcG9pbnRlci1ldmVudHM6IG5vbmU7CiAgICB9CgogICAgW3BhcnR+PSJyZW9yZGVyLWdob3N0Il0gewogICAgICB2aXNpYmlsaXR5OiBoaWRkZW47CiAgICAgIHBvc2l0aW9uOiBmaXhlZDsKICAgICAgcG9pbnRlci1ldmVudHM6IG5vbmU7CiAgICAgIG9wYWNpdHk6IDAuNTsKCiAgICAgIC8qIFByZXZlbnQgb3ZlcmZsb3dpbmcgdGhlIGdyaWQgaW4gRmlyZWZveCAqLwogICAgICB0b3A6IDA7CiAgICAgIGxlZnQ6IDA7CiAgICB9CgogICAgOmhvc3QoW3Jlb3JkZXJpbmddKSB7CiAgICAgIC1tb3otdXNlci1zZWxlY3Q6IG5vbmU7CiAgICAgIC13ZWJraXQtdXNlci1zZWxlY3Q6IG5vbmU7CiAgICAgIHVzZXItc2VsZWN0OiBub25lOwogICAgfQoKICAgICNzY3JvbGxlcltpZV1bY29sdW1uLXJlb3JkZXJpbmctYWxsb3dlZF0gW3BhcnR+PSJoZWFkZXItY2VsbCJdIHsKICAgICAgLW1zLXVzZXItc2VsZWN0OiBub25lOwogICAgfQoKICAgIC8qIFJlc2l6aW5nIHN0eWxlcyAqLwogICAgW3BhcnR+PSJyZXNpemUtaGFuZGxlIl0gewogICAgICBwb3NpdGlvbjogYWJzb2x1dGU7CiAgICAgIHRvcDogMDsKICAgICAgcmlnaHQ6IDA7CiAgICAgIGhlaWdodDogMTAwJTsKICAgICAgY3Vyc29yOiBjb2wtcmVzaXplOwogICAgICB6LWluZGV4OiAxOwogICAgfQoKICAgIFtwYXJ0fj0icmVzaXplLWhhbmRsZSJdOjpiZWZvcmUgewogICAgICBwb3NpdGlvbjogYWJzb2x1dGU7CiAgICAgIGNvbnRlbnQ6ICIiOwogICAgICBoZWlnaHQ6IDEwMCU7CiAgICAgIHdpZHRoOiAzNXB4OwogICAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZVgoLTUwJSk7CiAgICB9CgogICAgW2xhc3QtY29sdW1uXSBbcGFydH49InJlc2l6ZS1oYW5kbGUiXTo6YmVmb3JlLAogICAgW2xhc3QtZnJvemVuXSBbcGFydH49InJlc2l6ZS1oYW5kbGUiXTo6YmVmb3JlIHsKICAgICAgd2lkdGg6IDE4cHg7CiAgICAgIHRyYW5zZm9ybTogbm9uZTsKICAgICAgcmlnaHQ6IDA7CiAgICB9CgogICAgI3Njcm9sbGVyW2NvbHVtbi1yZXNpemluZ10gewogICAgICAtbXMtdXNlci1zZWxlY3Q6IG5vbmU7CiAgICAgIC1tb3otdXNlci1zZWxlY3Q6IG5vbmU7CiAgICAgIC13ZWJraXQtdXNlci1zZWxlY3Q6IG5vbmU7CiAgICAgIHVzZXItc2VsZWN0OiBub25lOwogICAgfQoKICAgIC8qIFNpemVyIHN0eWxlcyAqLwogICAgI3NpemVyIHsKICAgICAgZGlzcGxheTogZmxleDsKICAgICAgcG9zaXRpb246IGFic29sdXRlOwogICAgICB2aXNpYmlsaXR5OiBoaWRkZW47CiAgICB9CgogICAgI3NpemVyIFtwYXJ0fj0iZGV0YWlscy1jZWxsIl0gewogICAgICBkaXNwbGF5OiBub25lICFpbXBvcnRhbnQ7CiAgICB9CgogICAgI3NpemVyIFtwYXJ0fj0iY2VsbCJdW2hpZGRlbl0gewogICAgICBkaXNwbGF5OiBub25lICFpbXBvcnRhbnQ7CiAgICB9CgogICAgI3NpemVyIFtwYXJ0fj0iY2VsbCJdIHsKICAgICAgZGlzcGxheTogYmxvY2s7CiAgICAgIGZsZXgtc2hyaW5rOiAwOwogICAgICBsaW5lLWhlaWdodDogMDsKICAgICAgaGVpZ2h0OiAwICFpbXBvcnRhbnQ7CiAgICAgIG1pbi1oZWlnaHQ6IDAgIWltcG9ydGFudDsKICAgICAgbWF4LWhlaWdodDogMCAhaW1wb3J0YW50OwogICAgICBwYWRkaW5nOiAwICFpbXBvcnRhbnQ7CiAgICAgIGJvcmRlcjogbm9uZSAhaW1wb3J0YW50OwogICAgfQoKICAgICNzaXplciBbcGFydH49ImNlbGwiXTo6YmVmb3JlIHsKICAgICAgY29udGVudDogIi0iOwogICAgfQoKICAgICNzaXplciBbcGFydH49ImNlbGwiXSA6OnNsb3R0ZWQodmFhZGluLWdyaWQtY2VsbC1jb250ZW50KSB7CiAgICAgIGRpc3BsYXk6IG5vbmUgIWltcG9ydGFudDsKICAgIH0KCiAgICAvKiBSVEwgc3BlY2lmaWMgc3R5bGVzICovCgogICAgOmhvc3QoW2Rpcj0icnRsIl0pICNpdGVtcywKICAgIDpob3N0KFtkaXI9InJ0bCJdKSAjaGVhZGVyLAogICAgOmhvc3QoW2Rpcj0icnRsIl0pICNmb290ZXIgewogICAgICBsZWZ0OiBhdXRvOwogICAgfQoKICAgIDpob3N0KFtkaXI9InJ0bCJdKSBbcGFydH49InJlb3JkZXItZ2hvc3QiXSB7CiAgICAgIGxlZnQ6IGF1dG87CiAgICAgIHJpZ2h0OiAwOwogICAgfQoKICAgIDpob3N0KFtkaXI9InJ0bCJdKSBbcGFydH49InJlc2l6ZS1oYW5kbGUiXSB7CiAgICAgIGxlZnQ6IDA7CiAgICAgIHJpZ2h0OiBhdXRvOwogICAgfQoKICAgIDpob3N0KFtkaXI9InJ0bCJdKSBbcGFydH49InJlc2l6ZS1oYW5kbGUiXTo6YmVmb3JlIHsKICAgICAgdHJhbnNmb3JtOiB0cmFuc2xhdGVYKDUwJSk7CiAgICB9CgogICAgOmhvc3QoW2Rpcj0icnRsIl0pIFtsYXN0LWNvbHVtbl0gW3BhcnR+PSJyZXNpemUtaGFuZGxlIl06OmJlZm9yZSwKICAgIDpob3N0KFtkaXI9InJ0bCJdKSBbbGFzdC1mcm96ZW5dIFtwYXJ0fj0icmVzaXplLWhhbmRsZSJdOjpiZWZvcmUgewogICAgICBsZWZ0OiAwOwogICAgICByaWdodDogYXV0bzsKICAgIH0KICA8L3N0eWxlPgpgKSxfRHQucmVnaXN0ZXIoInZhYWRpbi1ncmlkLXN0eWxlcyIpOwovKioKICAgIEBsaWNlbnNlCiAgICBDb3B5cmlnaHQgKGMpIDIwMTcgVmFhZGluIEx0ZC4KICAgIFRoaXMgcHJvZ3JhbSBpcyBhdmFpbGFibGUgdW5kZXIgQXBhY2hlIExpY2Vuc2UgVmVyc2lvbiAyLjAsIGF2YWlsYWJsZSBhdCBodHRwczovL3ZhYWRpbi5jb20vbGljZW5zZS8KICAgICovCmNvbnN0IHlEdD0oKCk9Pnt0cnl7cmV0dXJuIGRvY3VtZW50LmNyZWF0ZUV2ZW50KCJUb3VjaEV2ZW50IiksITB9Y2F0Y2godCl7cmV0dXJuITF9fSkoKTtjbGFzcyB2RHQgZXh0ZW5kcyhSenQoeXp0KFp6dChYenQoSnp0KHF6dChpRHQockR0KG9EdChuRHQocER0KFd6dCh0RHQoZkR0KCR6dChRenQoZER0KGFEdChHenQpKSkpKSkpKSkpKSkpKSkpKSkpe3N0YXRpYyBnZXQgdGVtcGxhdGUoKXtyZXR1cm4gX2VgCiAgICA8c3R5bGUgaW5jbHVkZT0idmFhZGluLWdyaWQtc3R5bGVzIj48L3N0eWxlPgoKICAgIDxkaXYgaWQ9InNjcm9sbGVyIiBzYWZhcmlcJD0iW1tfc2FmYXJpXV0iIGlvc1wkPSJbW19pb3NdXSIgaWVcJD0iW1tfaWVdXSIgbG9hZGluZ1wkPSJbW2xvYWRpbmddXSIgY29sdW1uLXJlb3JkZXJpbmctYWxsb3dlZFwkPSJbW2NvbHVtblJlb3JkZXJpbmdBbGxvd2VkXV0iPgoKICAgICAgPHRhYmxlIGlkPSJ0YWJsZSIgcm9sZT0iZ3JpZCIgYXJpYS1tdWx0aXNlbGVjdGFibGU9InRydWUiIHRhYmluZGV4PSIwIj4KICAgICAgICA8Y2FwdGlvbiBpZD0ic2l6ZXIiIHBhcnQ9InJvdyI+PC9jYXB0aW9uPgogICAgICAgIDx0aGVhZCBpZD0iaGVhZGVyIiByb2xlPSJyb3dncm91cCI+PC90aGVhZD4KICAgICAgICA8dGJvZHkgaWQ9Iml0ZW1zIiByb2xlPSJyb3dncm91cCI+PC90Ym9keT4KICAgICAgICA8dGZvb3QgaWQ9ImZvb3RlciIgcm9sZT0icm93Z3JvdXAiPjwvdGZvb3Q+CiAgICAgIDwvdGFibGU+CgogICAgICA8ZGl2IHBhcnQ9InJlb3JkZXItZ2hvc3QiPjwvZGl2PgogICAgPC9kaXY+CgogICAgPCEtLSBUaGUgdGVtcGxhdGUgbmVlZHMgYXQgbGVhc3Qgb25lIHNsb3Qgb3IgZWxzZSBzaGFkeSBkb2Vzbid0IGRpc3RyaWJ1dGUgLS0+CiAgICA8c2xvdCBuYW1lPSJub2Rpc3RyaWJ1dGUiPjwvc2xvdD4KCiAgICA8ZGl2IGlkPSJmb2N1c2V4aXQiIHRhYmluZGV4PSIwIj48L2Rpdj4KYH1zdGF0aWMgZ2V0IGlzKCl7cmV0dXJuInZhYWRpbi1ncmlkIn1zdGF0aWMgZ2V0IHZlcnNpb24oKXtyZXR1cm4iNS43LjExIn1zdGF0aWMgZ2V0IG9ic2VydmVycygpe3JldHVyblsiX2NvbHVtblRyZWVDaGFuZ2VkKF9jb2x1bW5UcmVlLCBfY29sdW1uVHJlZS4qKSJdfXN0YXRpYyBnZXQgcHJvcGVydGllcygpe3JldHVybntfc2FmYXJpOnt0eXBlOkJvb2xlYW4sdmFsdWU6L14oKD8hY2hyb21lfGFuZHJvaWQpLikqc2FmYXJpL2kudGVzdChuYXZpZ2F0b3IudXNlckFnZW50KX0sX2lvczp7dHlwZTpCb29sZWFuLHZhbHVlOi9pUGFkfGlQaG9uZXxpUG9kLy50ZXN0KG5hdmlnYXRvci51c2VyQWdlbnQpJiYhd2luZG93Lk1TU3RyZWFtfHwiTWFjSW50ZWwiPT09bmF2aWdhdG9yLnBsYXRmb3JtJiZuYXZpZ2F0b3IubWF4VG91Y2hQb2ludHM+MX0sX2VkZ2U6e3R5cGU6Qm9vbGVhbix2YWx1ZToidW5kZWZpbmVkIiE9dHlwZW9mIENTUyYmQ1NTLnN1cHBvcnRzKCIoLW1zLWltZS1hbGlnbjphdXRvKSIpfSxfaWU6e3R5cGU6Qm9vbGVhbix2YWx1ZTohKCFuYXZpZ2F0b3IudXNlckFnZW50Lm1hdGNoKC9UcmlkZW50Lyl8fG5hdmlnYXRvci51c2VyQWdlbnQubWF0Y2goL01TSUUvKSl9LF9maXJlZm94Ont0eXBlOkJvb2xlYW4sdmFsdWU6bmF2aWdhdG9yLnVzZXJBZ2VudC50b0xvd2VyQ2FzZSgpLmluZGV4T2YoImZpcmVmb3giKT4tMX0sX2FuZHJvaWQ6e3R5cGU6Qm9vbGVhbix2YWx1ZTovYW5kcm9pZC9pLnRlc3QobmF2aWdhdG9yLnVzZXJBZ2VudCl9LF90b3VjaERldmljZTp7dHlwZTpCb29sZWFuLHZhbHVlOnlEdH0saGVpZ2h0QnlSb3dzOnt0eXBlOkJvb2xlYW4sdmFsdWU6ITEscmVmbGVjdFRvQXR0cmlidXRlOiEwLG9ic2VydmVyOiJfaGVpZ2h0QnlSb3dzQ2hhbmdlZCJ9LF9yZWNhbGN1bGF0ZUNvbHVtbldpZHRoT25jZUxvYWRpbmdGaW5pc2hlZDp7dHlwZTpCb29sZWFuLHZhbHVlOiEwfX19Y29uc3RydWN0b3IoKXtzdXBlcigpLHRoaXMuYWRkRXZlbnRMaXN0ZW5lcigiYW5pbWF0aW9uZW5kIix0aGlzLl9vbkFuaW1hdGlvbkVuZCl9Y29ubmVjdGVkQ2FsbGJhY2soKXtzdXBlci5jb25uZWN0ZWRDYWxsYmFjaygpLHRoaXMucmVjYWxjdWxhdGVDb2x1bW5XaWR0aHMoKX1hdHRyaWJ1dGVDaGFuZ2VkQ2FsbGJhY2sodCxlLG4pe3N1cGVyLmF0dHJpYnV0ZUNoYW5nZWRDYWxsYmFjayh0LGUsbiksImRpciI9PT10JiYodGhpcy5fX2lzUlRMPSJydGwiPT09bix0aGlzLl91cGRhdGVTY3JvbGxlck1lYXN1cmVtZW50cygpKX1fX2hhc1Jvd3NXaXRoQ2xpZW50SGVpZ2h0KCl7cmV0dXJuISFBcnJheS5mcm9tKHRoaXMuJC5pdGVtcy5jaGlsZHJlbikuZmlsdGVyKCh0PT50LmNsaWVudEhlaWdodCkpLmxlbmd0aH1fX2l0ZW1zUmVjZWl2ZWQoKXt0aGlzLl9yZWNhbGN1bGF0ZUNvbHVtbldpZHRoT25jZUxvYWRpbmdGaW5pc2hlZCYmIXRoaXMuX2NhY2hlLmlzTG9hZGluZygpJiZ0aGlzLl9faGFzUm93c1dpdGhDbGllbnRIZWlnaHQoKSYmKHRoaXMuX3JlY2FsY3VsYXRlQ29sdW1uV2lkdGhPbmNlTG9hZGluZ0ZpbmlzaGVkPSExLHRoaXMucmVjYWxjdWxhdGVDb2x1bW5XaWR0aHMoKSl9X3JlY2FsY3VsYXRlQ29sdW1uV2lkdGhzKHQpe3QuZm9yRWFjaCgodD0+e3Qud2lkdGg9ImF1dG8iLHQuX29yaWdGbGV4R3Jvdz10LmZsZXhHcm93LHQuZmxleEdyb3c9MH0pKSx0LmZvckVhY2goKHQ9Pnt0Ll9jdXJyZW50V2lkdGg9MCx0Ll9hbGxDZWxscy5mb3JFYWNoKChlPT57dC5fY3VycmVudFdpZHRoPU1hdGgubWF4KHQuX2N1cnJlbnRXaWR0aCxlLm9mZnNldFdpZHRoKzEpfSkpfSkpLHQuZm9yRWFjaCgodD0+e3Qud2lkdGg9YCR7dC5fY3VycmVudFdpZHRofXB4YCx0LmZsZXhHcm93PXQuX29yaWdGbGV4R3Jvdyx0Ll9jdXJyZW50V2lkdGg9dm9pZCAwLHQuX29yaWdGbGV4R3Jvdz12b2lkIDB9KSl9cmVjYWxjdWxhdGVDb2x1bW5XaWR0aHMoKXtpZih0aGlzLl9jb2x1bW5UcmVlKWlmKHRoaXMuX2NhY2hlLmlzTG9hZGluZygpKXRoaXMuX3JlY2FsY3VsYXRlQ29sdW1uV2lkdGhPbmNlTG9hZGluZ0ZpbmlzaGVkPSEwO2Vsc2V7Y29uc3QgdD10aGlzLl9nZXRDb2x1bW5zKCkuZmlsdGVyKCh0PT4hdC5oaWRkZW4mJnQuYXV0b1dpZHRoKSk7dGhpcy5fcmVjYWxjdWxhdGVDb2x1bW5XaWR0aHModCl9fV9jcmVhdGVTY3JvbGxlclJvd3ModCl7Y29uc3QgZT1bXTtmb3IodmFyIG49MDtuPHQ7bisrKXtjb25zdCB0PWRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoInRyIik7dC5zZXRBdHRyaWJ1dGUoInBhcnQiLCJyb3ciKSx0LnNldEF0dHJpYnV0ZSgicm9sZSIsInJvdyIpLHRoaXMuX2NvbHVtblRyZWUmJnRoaXMuX3VwZGF0ZVJvdyh0LHRoaXMuX2NvbHVtblRyZWVbdGhpcy5fY29sdW1uVHJlZS5sZW5ndGgtMV0sImJvZHkiLCExLCEwKSxlLnB1c2godCl9cmV0dXJuIHRoaXMuX2NvbHVtblRyZWUmJnRoaXMuX2NvbHVtblRyZWVbdGhpcy5fY29sdW1uVHJlZS5sZW5ndGgtMV0uZm9yRWFjaCgodD0+dC5ub3RpZnlQYXRoJiZ0Lm5vdGlmeVBhdGgoIl9jZWxscy4qIix0Ll9jZWxscykpKSwoZnVuY3Rpb24gaSh0LGUsbil7TWl8fEFpKCksRWkucHVzaChbdCxlLG5dKX0pKHRoaXMsKCgpPT57dGhpcy5fdXBkYXRlRmlyc3RBbmRMYXN0Q29sdW1uKCksdGhpcy5fcmVzZXRLZXlib2FyZE5hdmlnYXRpb24oKX0pKSxlfV9nZXRSb3dUYXJnZXQoKXtyZXR1cm4gdGhpcy4kLml0ZW1zfV9jcmVhdGVDZWxsKHQpe2NvbnN0IGU9InZhYWRpbi1ncmlkLWNlbGwtY29udGVudC0iKyh0aGlzLl9jb250ZW50SW5kZXg9dGhpcy5fY29udGVudEluZGV4KzF8fDApLG49ZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgidmFhZGluLWdyaWQtY2VsbC1jb250ZW50Iik7bi5zZXRBdHRyaWJ1dGUoInNsb3QiLGUpO2NvbnN0IGk9ZG9jdW1lbnQuY3JlYXRlRWxlbWVudCh0KTtpLmlkPWUucmVwbGFjZSgiLWNvbnRlbnQtIiwiLSIpLGkuc2V0QXR0cmlidXRlKCJ0YWJpbmRleCIsIi0xIiksaS5zZXRBdHRyaWJ1dGUoInJvbGUiLCJ0ZCI9PT10PyJncmlkY2VsbCI6ImNvbHVtbmhlYWRlciIpO2NvbnN0IHI9ZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgic2xvdCIpO3JldHVybiByLnNldEF0dHJpYnV0ZSgibmFtZSIsZSksaS5hcHBlbmRDaGlsZChyKSxpLl9jb250ZW50PW4sbi5hZGRFdmVudExpc3RlbmVyKCJtb3VzZWRvd24iLCgoKT0+e2lmKHdpbmRvdy5jaHJvbWUpe2NvbnN0IHQ9KCk9PntuLmNvbnRhaW5zKHRoaXMuZ2V0Um9vdE5vZGUoKS5hY3RpdmVFbGVtZW50KXx8aS5mb2N1cygpLGRvY3VtZW50LnJlbW92ZUV2ZW50TGlzdGVuZXIoIm1vdXNldXAiLHQsITApfTtkb2N1bWVudC5hZGRFdmVudExpc3RlbmVyKCJtb3VzZXVwIix0LCEwKX1lbHNlIHNldFRpbWVvdXQoKCgpPT57bi5jb250YWlucyh0aGlzLmdldFJvb3ROb2RlKCkuYWN0aXZlRWxlbWVudCl8fGkuZm9jdXMoKX0pKX0pKSxpfV91cGRhdGVSb3codCxlLG4saSxyKXtuPW58fCJib2R5Ijtjb25zdCBvPWRvY3VtZW50LmNyZWF0ZURvY3VtZW50RnJhZ21lbnQoKTtBcnJheS5mcm9tKHQuY2hpbGRyZW4pLmZvckVhY2goKHQ9PnQuX3ZhY2FudD0hMCkpLHQuaW5uZXJIVE1MPSIiLCJzaXplciIhPT10LmlkJiYodC5oaWRkZW49ITApLGUuZmlsdGVyKCh0PT4hdC5oaWRkZW4pKS5mb3JFYWNoKCgoZSxhLHMpPT57bGV0IGw7aWYoImJvZHkiPT09bil7aWYoZS5fY2VsbHM9ZS5fY2VsbHN8fFtdLGw9ZS5fY2VsbHMuZmlsdGVyKCh0PT50Ll92YWNhbnQpKVswXSxsfHwobD10aGlzLl9jcmVhdGVDZWxsKCJ0ZCIpLGUuX2NlbGxzLnB1c2gobCkpLGwuc2V0QXR0cmlidXRlKCJwYXJ0IiwiY2VsbCBib2R5LWNlbGwiKSx0LmFwcGVuZENoaWxkKGwpLGE9PT1zLmxlbmd0aC0xJiYodGhpcy5fcm93RGV0YWlsc1RlbXBsYXRlfHx0aGlzLnJvd0RldGFpbHNSZW5kZXJlcikpe3RoaXMuX2RldGFpbHNDZWxscz10aGlzLl9kZXRhaWxzQ2VsbHN8fFtdO2NvbnN0IGU9dGhpcy5fZGV0YWlsc0NlbGxzLmZpbHRlcigodD0+dC5fdmFjYW50KSlbMF18fHRoaXMuX2NyZWF0ZUNlbGwoInRkIik7LTE9PT10aGlzLl9kZXRhaWxzQ2VsbHMuaW5kZXhPZihlKSYmdGhpcy5fZGV0YWlsc0NlbGxzLnB1c2goZSksZS5fY29udGVudC5wYXJlbnRFbGVtZW50fHxvLmFwcGVuZENoaWxkKGUuX2NvbnRlbnQpLHRoaXMuX2NvbmZpZ3VyZURldGFpbHNDZWxsKGUpLHQuYXBwZW5kQ2hpbGQoZSksdGhpcy5fYTExeVNldFJvd0RldGFpbHNDZWxsKHQsZSksZS5fdmFjYW50PSExfWUubm90aWZ5UGF0aCYmIXImJmUubm90aWZ5UGF0aCgiX2NlbGxzLioiLGUuX2NlbGxzKX1lbHNle2NvbnN0IHI9ImhlYWRlciI9PT1uPyJ0aCI6InRkIjtpfHwidmFhZGluLWdyaWQtY29sdW1uLWdyb3VwIj09PWUubG9jYWxOYW1lPyhsPWVbYF8ke259Q2VsbGBdfHx0aGlzLl9jcmVhdGVDZWxsKHIpLGwuX2NvbHVtbj1lLHQuYXBwZW5kQ2hpbGQobCksZVtgXyR7bn1DZWxsYF09bCk6KGUuX2VtcHR5Q2VsbHM9ZS5fZW1wdHlDZWxsc3x8W10sbD1lLl9lbXB0eUNlbGxzLmZpbHRlcigodD0+dC5fdmFjYW50KSlbMF18fHRoaXMuX2NyZWF0ZUNlbGwociksbC5fY29sdW1uPWUsdC5hcHBlbmRDaGlsZChsKSwtMT09PWUuX2VtcHR5Q2VsbHMuaW5kZXhPZihsKSYmZS5fZW1wdHlDZWxscy5wdXNoKGwpKSxsLnNldEF0dHJpYnV0ZSgicGFydCIsYGNlbGwgJHtufS1jZWxsYCksdGhpcy5fX3VwZGF0ZUhlYWRlckZvb3RlclJvd1Zpc2liaWxpdHkodCl9bC5fY29udGVudC5wYXJlbnRFbGVtZW50fHxvLmFwcGVuZENoaWxkKGwuX2NvbnRlbnQpLGwuX3ZhY2FudD0hMSxsLl9jb2x1bW49ZX0pKSx0aGlzLmFwcGVuZENoaWxkKG8pLHRoaXMuX2Zyb3plbkNlbGxzQ2hhbmdlZCgpLHRoaXMuX3VwZGF0ZUZpcnN0QW5kTGFzdENvbHVtbkZvclJvdyh0KX1fX3VwZGF0ZUhlYWRlckZvb3RlclJvd1Zpc2liaWxpdHkodCl7aWYoIXQpcmV0dXJuO2NvbnN0IGU9QXJyYXkuZnJvbSh0LmNoaWxkcmVuKS5maWx0ZXIoKGU9Pntjb25zdCBuPWUuX2NvbHVtbjtpZihuLl9lbXB0eUNlbGxzJiZuLl9lbXB0eUNlbGxzLmluZGV4T2YoZSk+LTEpcmV0dXJuITE7aWYodC5wYXJlbnRFbGVtZW50PT09dGhpcy4kLmhlYWRlcil7aWYobi5oZWFkZXJSZW5kZXJlcnx8bi5faGVhZGVyVGVtcGxhdGUpcmV0dXJuITA7aWYobnVsbD09PW4uaGVhZGVyKXJldHVybiExO2lmKG4ucGF0aHx8dm9pZCAwIT09bi5oZWFkZXIpcmV0dXJuITB9ZWxzZSBpZihuLmZvb3RlclJlbmRlcmVyfHxuLl9mb290ZXJUZW1wbGF0ZSlyZXR1cm4hMH0pKTt0LmhpZGRlbiE9PSFlLmxlbmd0aCYmKHQuaGlkZGVuPSFlLmxlbmd0aCx0aGlzLm5vdGlmeVJlc2l6ZSgpKX1fdXBkYXRlU2Nyb2xsZXJJdGVtKHQsZSl7dGhpcy5fcHJldmVudFNjcm9sbGVyUm90YXRpbmdDZWxsRm9jdXModCxlKSx0aGlzLl9jb2x1bW5UcmVlJiYodGhpcy5fdG9nZ2xlQXR0cmlidXRlKCJmaXJzdCIsMD09PWUsdCksdGhpcy5fdG9nZ2xlQXR0cmlidXRlKCJvZGQiLGUlMix0KSx0aGlzLl9hMTF5VXBkYXRlUm93Um93aW5kZXgodCxlKSx0aGlzLl9nZXRJdGVtKGUsdCkpfV9jb2x1bW5UcmVlQ2hhbmdlZCh0LGUpe3RoaXMuX3JlbmRlckNvbHVtblRyZWUodCksdGhpcy5yZWNhbGN1bGF0ZUNvbHVtbldpZHRocygpfV9yZW5kZXJDb2x1bW5UcmVlKHQpe2ZvcihBcnJheS5mcm9tKHRoaXMuJC5pdGVtcy5jaGlsZHJlbikuZm9yRWFjaCgoZT0+dGhpcy5fdXBkYXRlUm93KGUsdFt0Lmxlbmd0aC0xXSxudWxsLCExLCEwKSkpO3RoaXMuJC5oZWFkZXIuY2hpbGRyZW4ubGVuZ3RoPHQubGVuZ3RoOyl7Y29uc3QgdD1kb2N1bWVudC5jcmVhdGVFbGVtZW50KCJ0ciIpO3Quc2V0QXR0cmlidXRlKCJwYXJ0Iiwicm93IiksdC5zZXRBdHRyaWJ1dGUoInJvbGUiLCJyb3ciKSx0aGlzLiQuaGVhZGVyLmFwcGVuZENoaWxkKHQpO2NvbnN0IGU9ZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgidHIiKTtlLnNldEF0dHJpYnV0ZSgicGFydCIsInJvdyIpLGUuc2V0QXR0cmlidXRlKCJyb2xlIiwicm93IiksdGhpcy4kLmZvb3Rlci5hcHBlbmRDaGlsZChlKX1mb3IoO3RoaXMuJC5oZWFkZXIuY2hpbGRyZW4ubGVuZ3RoPnQubGVuZ3RoOyl0aGlzLiQuaGVhZGVyLnJlbW92ZUNoaWxkKHRoaXMuJC5oZWFkZXIuZmlyc3RFbGVtZW50Q2hpbGQpLHRoaXMuJC5mb290ZXIucmVtb3ZlQ2hpbGQodGhpcy4kLmZvb3Rlci5maXJzdEVsZW1lbnRDaGlsZCk7QXJyYXkuZnJvbSh0aGlzLiQuaGVhZGVyLmNoaWxkcmVuKS5mb3JFYWNoKCgoZSxuKT0+dGhpcy5fdXBkYXRlUm93KGUsdFtuXSwiaGVhZGVyIixuPT09dC5sZW5ndGgtMSkpKSxBcnJheS5mcm9tKHRoaXMuJC5mb290ZXIuY2hpbGRyZW4pLmZvckVhY2goKChlLG4pPT50aGlzLl91cGRhdGVSb3coZSx0W3QubGVuZ3RoLTEtbl0sImZvb3RlciIsMD09PW4pKSksdGhpcy5fdXBkYXRlUm93KHRoaXMuJC5zaXplcix0W3QubGVuZ3RoLTFdKSx0aGlzLl9yZXNpemVIYW5kbGVyKCksdGhpcy5fZnJvemVuQ2VsbHNDaGFuZ2VkKCksdGhpcy5fdXBkYXRlRmlyc3RBbmRMYXN0Q29sdW1uKCksdGhpcy5fcmVzZXRLZXlib2FyZE5hdmlnYXRpb24oKSx0aGlzLl9hMTF5VXBkYXRlSGVhZGVyUm93cygpLHRoaXMuX2ExMXlVcGRhdGVGb290ZXJSb3dzKCksdGhpcy5fX3VwZGF0ZUZvb3RlclBvc2l0aW9uaW5nKCl9X191cGRhdGVGb290ZXJQb3NpdGlvbmluZygpe3RoaXMuX2ZpcmVmb3gmJih0aGlzLiQuaXRlbXMuc3R5bGUucGFkZGluZ0JvdHRvbT0wLHRoaXMuaGVpZ2h0QnlSb3dzfHwodGhpcy4kLml0ZW1zLnN0eWxlLnBhZGRpbmdCb3R0b209YCR7dGhpcy4kLmZvb3Rlci5vZmZzZXRIZWlnaHR9cHhgKSksdGhpcy5faW9zJiYhd2luZG93LkNTUy5zdXBwb3J0cygicG9zaXRpb24iLCJzdGlja3kiKSYmKHRoaXMuJC50YWJsZS5zdHlsZS5oZWlnaHQ9IiIsdGhpcy4kLnRhYmxlLnN0eWxlLm1pbkhlaWdodD0iMTAwJSIsdGhpcy4kLnRhYmxlLnN0eWxlLm1heEhlaWdodD0iMTAwJSIsc2V0VGltZW91dCgoKCk9PnRoaXMuJC50YWJsZS5zdHlsZS5oZWlnaHQ9YCR7dGhpcy4kLnNjcm9sbGVyLm9mZnNldEhlaWdodH1weGApKSl9X3VwZGF0ZUl0ZW0odCxlKXt0Ll9pdGVtPWU7Y29uc3Qgbj10aGlzLl9fZ2V0Um93TW9kZWwodCk7dGhpcy5fdG9nZ2xlQXR0cmlidXRlKCJzZWxlY3RlZCIsbi5zZWxlY3RlZCx0KSx0aGlzLl9hMTF5VXBkYXRlUm93U2VsZWN0ZWQodCxuLnNlbGVjdGVkKSx0aGlzLl9hMTF5VXBkYXRlUm93TGV2ZWwodCxuLmxldmVsKSx0aGlzLl90b2dnbGVBdHRyaWJ1dGUoImV4cGFuZGVkIixuLmV4cGFuZGVkLHQpLCh0aGlzLl9yb3dEZXRhaWxzVGVtcGxhdGV8fHRoaXMucm93RGV0YWlsc1JlbmRlcmVyKSYmdGhpcy5fdG9nZ2xlRGV0YWlsc0NlbGwodCxlKSx0aGlzLl9nZW5lcmF0ZUNlbGxDbGFzc05hbWVzKHQsbiksdGhpcy5fZmlsdGVyRHJhZ0FuZERyb3AodCxuKSxBcnJheS5mcm9tKHQuY2hpbGRyZW4pLmZvckVhY2goKHQ9PntpZih0Ll9yZW5kZXJlcil7Y29uc3QgZT10Ll9jb2x1bW58fHRoaXM7dC5fcmVuZGVyZXIuY2FsbChlLHQuX2NvbnRlbnQsZSxuKX1lbHNlIHQuX2luc3RhbmNlJiYodC5faW5zdGFuY2UuX19kZXRhaWxzT3BlbmVkX189bi5kZXRhaWxzT3BlbmVkLHQuX2luc3RhbmNlLl9fc2VsZWN0ZWRfXz1uLnNlbGVjdGVkLHQuX2luc3RhbmNlLl9fbGV2ZWxfXz1uLmxldmVsLHQuX2luc3RhbmNlLl9fZXhwYW5kZWRfXz1uLmV4cGFuZGVkLHQuX2luc3RhbmNlLnNldFByb3BlcnRpZXMobikpfSkpLHRoaXMuX2RlYm91bmNlclVwZGF0ZUhlaWdodHM9RW4uZGVib3VuY2UodGhpcy5fZGVib3VuY2VyVXBkYXRlSGVpZ2h0cyxndC5hZnRlcigxKSwoKCk9Pnt0aGlzLl91cGRhdGVNZXRyaWNzKCksdGhpcy5fcG9zaXRpb25JdGVtcygpLHRoaXMuX3VwZGF0ZVNjcm9sbGVyU2l6ZSgpfSkpfV9yZXNpemVIYW5kbGVyKCl7dGhpcy5fdXBkYXRlRGV0YWlsc0NlbGxIZWlnaHRzKCksdGhpcy5fYWNjZXNzSXJvbkxpc3RBUEkoc3VwZXIuX3Jlc2l6ZUhhbmRsZXIsITApLHRoaXMuX3VwZGF0ZVNjcm9sbGVyTWVhc3VyZW1lbnRzKCksdGhpcy5fX3VwZGF0ZUZvb3RlclBvc2l0aW9uaW5nKCl9X29uQW5pbWF0aW9uRW5kKHQpezA9PT10LmFuaW1hdGlvbk5hbWUuaW5kZXhPZigidmFhZGluLWdyaWQtYXBwZWFyIikmJih0aGlzLl9yZW5kZXIoKSx0LnN0b3BQcm9wYWdhdGlvbigpLHRoaXMubm90aWZ5UmVzaXplKCksdGhpcy5fX2l0ZW1zUmVjZWl2ZWQoKSxyZXF1ZXN0QW5pbWF0aW9uRnJhbWUoKCgpPT57dGhpcy5fX3Njcm9sbFRvUGVuZGluZ0luZGV4KCksdGhpcy4kLnRhYmxlLnN0eWxlLndlYmtpdE92ZXJmbG93U2Nyb2xsaW5nPSJ0b3VjaCJ9KSkpfV90b2dnbGVBdHRyaWJ1dGUodCxlLG4pe24uaGFzQXR0cmlidXRlKHQpPT09IWUmJihlP24uc2V0QXR0cmlidXRlKHQsIiIpOm4ucmVtb3ZlQXR0cmlidXRlKHQpKX1fX2dldFJvd01vZGVsKHQpe3JldHVybntpbmRleDp0LmluZGV4LGl0ZW06dC5faXRlbSxsZXZlbDp0aGlzLl9nZXRJbmRleExldmVsKHQuaW5kZXgpLGV4cGFuZGVkOnRoaXMuX2lzRXhwYW5kZWQodC5faXRlbSksc2VsZWN0ZWQ6dGhpcy5faXNTZWxlY3RlZCh0Ll9pdGVtKSxkZXRhaWxzT3BlbmVkOiEoIXRoaXMuX3Jvd0RldGFpbHNUZW1wbGF0ZSYmIXRoaXMucm93RGV0YWlsc1JlbmRlcmVyKSYmdGhpcy5faXNEZXRhaWxzT3BlbmVkKHQuX2l0ZW0pfX1yZW5kZXIoKXt0aGlzLl9jb2x1bW5UcmVlJiYodGhpcy5fY29sdW1uVHJlZS5mb3JFYWNoKCh0PT57dC5mb3JFYWNoKCh0PT50Ll9yZW5kZXJIZWFkZXJBbmRGb290ZXIoKSkpfSkpLHRoaXMuX3VwZGF0ZSgpKX1ub3RpZnlSZXNpemUoKXtzdXBlci5ub3RpZnlSZXNpemUoKX1faGVpZ2h0QnlSb3dzQ2hhbmdlZCh0LGUpeyh0fHxlKSYmdGhpcy5ub3RpZnlSZXNpemUoKX1fX2ZvcmNlUmVmbG93KCl7dGhpcy5fZGVib3VuY2VyRm9yY2VSZWZsb3c9RW4uZGVib3VuY2UodGhpcy5fZGVib3VuY2VyRm9yY2VSZWZsb3csX3QsKCgpPT57dGhpcy4kLnNjcm9sbGVyLnN0eWxlLm92ZXJmbG93PSJoaWRkZW4iLHNldFRpbWVvdXQoKCgpPT50aGlzLiQuc2Nyb2xsZXIuc3R5bGUub3ZlcmZsb3c9IiIpKX0pKX19Y3VzdG9tRWxlbWVudHMuZGVmaW5lKHZEdC5pcyx2RHQpO2xldCBiRHQ9Y2xhc3MgZXh0ZW5kcyB5ZXtjb25zdHJ1Y3Rvcigpe3N1cGVyKC4uLmFyZ3VtZW50cyksdGhpcy5fcnVuPSIifV9jc3ZVcmwodCxlLG4pe3JldHVybiBlP09PKG4odCxlKSx7Zm9ybWF0OiJjc3YifSk6IiJ9X2pzb25VcmwodCxlLG4pe3JldHVybiBlP24odCxlKToiIn1fY3N2TmFtZSh0LGUpe3JldHVybiBlP2BydW4tJHtlfS10YWctJHt0fS5jc3ZgOiIifV9qc29uTmFtZSh0LGUpe3JldHVybiBlP2BydW4tJHtlfS10YWctJHt0fS5qc29uYDoiIn19O2JEdC50ZW1wbGF0ZT1fZWAKICAgIDxwYXBlci1kcm9wZG93bi1tZW51CiAgICAgIG5vLWxhYmVsLWZsb2F0PSJ0cnVlIgogICAgICBsYWJlbD0icnVuIHRvIGRvd25sb2FkIgogICAgICBzZWxlY3RlZC1pdGVtLWxhYmVsPSJ7e19ydW59fSIKICAgID4KICAgICAgPHBhcGVyLWxpc3Rib3ggc2xvdD0iZHJvcGRvd24tY29udGVudCI+CiAgICAgICAgPHRlbXBsYXRlIGlzPSJkb20tcmVwZWF0IiBpdGVtcz0iW1tydW5zXV0iPgogICAgICAgICAgPHBhcGVyLWl0ZW0gbm8tbGFiZWwtZmxvYXQ9InRydWUiPltbaXRlbV1dPC9wYXBlci1pdGVtPgogICAgICAgIDwvdGVtcGxhdGU+CiAgICAgIDwvcGFwZXItbGlzdGJveD4KICAgIDwvcGFwZXItZHJvcGRvd24tbWVudT4KICAgIDx0ZW1wbGF0ZSBpcz0iZG9tLWlmIiBpZj0iW1tfcnVuXV0iPgogICAgICA8YSBkb3dubG9hZD0iW1tfY3N2TmFtZSh0YWcsIF9ydW4pXV0iIGhyZWY9IltbX2NzdlVybCh0YWcsIF9ydW4sIHVybEZuKV1dIgogICAgICAgID5DU1Y8L2EKICAgICAgPjwhLS0KICAgICAgLS0+PGEKICAgICAgICBkb3dubG9hZD0iW1tfanNvbk5hbWUodGFnLCBfcnVuKV1dIgogICAgICAgIGhyZWY9IltbX2pzb25VcmwodGFnLCBfcnVuLCB1cmxGbildXSIKICAgICAgICA+SlNPTjwvYQogICAgICA+CiAgICA8L3RlbXBsYXRlPgogICAgPHN0eWxlPgogICAgICA6aG9zdCB7CiAgICAgICAgZGlzcGxheTogZmxleDsKICAgICAgICBhbGlnbi1pdGVtczogY2VudGVyOwogICAgICAgIGhlaWdodDogMzJweDsKICAgICAgfQogICAgICBwYXBlci1kcm9wZG93bi1tZW51IHsKICAgICAgICB3aWR0aDogMTAwcHg7CiAgICAgICAgLS1wYXBlci1pbnB1dC1jb250YWluZXItbGFiZWw6IHsKICAgICAgICAgIGZvbnQtc2l6ZTogMTBweDsKICAgICAgICB9CiAgICAgICAgLS1wYXBlci1pbnB1dC1jb250YWluZXItaW5wdXQ6IHsKICAgICAgICAgIGZvbnQtc2l6ZTogMTBweDsKICAgICAgICB9CiAgICAgIH0KICAgICAgYSB7CiAgICAgICAgZm9udC1zaXplOiAxMHB4OwogICAgICAgIG1hcmdpbjogMCAwLjJlbTsKICAgICAgfQogICAgICBwYXBlci1pbnB1dCB7CiAgICAgICAgZm9udC1zaXplOiAyMnB4OwogICAgICB9CiAgICA8L3N0eWxlPgogIGAsdChbbyh7dHlwZTpTdHJpbmd9KSxlKCJkZXNpZ246dHlwZSIsU3RyaW5nKV0sYkR0LnByb3RvdHlwZSwiX3J1biIsdm9pZCAwKSx0KFtvKHt0eXBlOkFycmF5fSksZSgiZGVzaWduOnR5cGUiLEFycmF5KV0sYkR0LnByb3RvdHlwZSwicnVucyIsdm9pZCAwKSx0KFtvKHt0eXBlOlN0cmluZ30pLGUoImRlc2lnbjp0eXBlIixTdHJpbmcpXSxiRHQucHJvdG90eXBlLCJ0YWciLHZvaWQgMCksdChbbyh7dHlwZTpPYmplY3R9KSxlKCJkZXNpZ246dHlwZSIsT2JqZWN0KV0sYkR0LnByb3RvdHlwZSwidXJsRm4iLHZvaWQgMCksYkR0PXQoW2koInRmLWRvd25sb2FkZXIiKV0sYkR0KSxuZXcgVVJMU2VhcmNoUGFyYW1zKHdpbmRvdy5sb2NhdGlvbi5zZWFyY2gpO2xldCB4RHQ9Y2xhc3MgZXh0ZW5kcyB5ZXtjb25zdHJ1Y3Rvcigpe3N1cGVyKC4uLmFyZ3VtZW50cyksdGhpcy5jb2xvclNjYWxlPW51bGwsdGhpcy5fbG9hZERhdGFDYWxsYmFjaz0odCxlLG4pPT57aWYobnVsbD09bilyZXR1cm4gdm9pZCBjb25zb2xlLmVycm9yKCJGYWlsZWQgdG8gbG9hZCBkYXRhIGZvcjoiLGUpO2NvbnN0IGk9bi5tYXAoKHQ9Pih7d2FsbF90aW1lOm5ldyBEYXRlKDFlMyp0WzBdKSxzdGVwOnRbMV0sc2NhbGFyOnRbMl19KSkpLHI9dGhpcy5fZ2V0U2VyaWVzTmFtZUZyb21EYXR1bShlKTt0LnNldFNlcmllc01ldGFkYXRhKHIsZSksdC5zZXRTZXJpZXNEYXRhKHIsaSl9LHRoaXMuZ2V0RGF0YUxvYWRVcmw9KHt0YWc6dCxydW46ZX0pPT5ncigpLnBsdWdpblJvdXRlKCJzY2FsYXJzIiwiL3NjYWxhcnMiLG5ldyBVUkxTZWFyY2hQYXJhbXMoe3RhZzp0LHJ1bjplfSkpLHRoaXMuX2Rvd25sb2FkVXJsRm49KHQsZSk9PnRoaXMuZ2V0RGF0YUxvYWRVcmwoe3RhZzp0LHJ1bjplfSksdGhpcy5yZXF1ZXN0RGF0YT0odCxlLG4pPT50aGlzLmluQ29sYWI/dGhpcy5fcmVxdWVzdERhdGFHZXQodCxlLG4pOnRoaXMuX3JlcXVlc3REYXRhUG9zdCh0LGUsbiksdGhpcy5fcmVxdWVzdERhdGFHZXQ9KHQsZSxuKT0+e2NvbnN0IGk9Z3IoKS5wbHVnaW5Sb3V0ZSgic2NhbGFycyIsIi9zY2FsYXJzIik7UHJvbWlzZS5hbGwodC5tYXAoKHQ9Pntjb25zdCBuPU9PKGkse3RhZzp0LnRhZyxydW46dC5ydW59KTtyZXR1cm4gdGhpcy5yZXF1ZXN0TWFuYWdlci5yZXF1ZXN0KG4pLnRoZW4oKG49PntlKHtpdGVtOnQsZGF0YTpufSl9KSl9KSkpLmZpbmFsbHkoKCgpPT57bigpfSkpfSx0aGlzLl9yZXF1ZXN0RGF0YVBvc3Q9KHQsZSxuKT0+e3ZhciBpO2NvbnN0IHI9Z3IoKS5wbHVnaW5Sb3V0ZSgic2NhbGFycyIsIi9zY2FsYXJzX211bHRpcnVuIiksbz1uZXcgTWFwO2Zvcihjb25zdHt0YWc6ZSxydW46bn1vZiB0KXtsZXQgdD1vLmdldChlKTtudWxsPT10JiZvLnNldChlLHQ9W10pLHQucHVzaChuKX1jb25zdCBhPW51bGwhPT0oaT10aGlzLmJhdGNoU2l6ZSkmJnZvaWQgMCE9PWk/aTo2NCxzPVtdO2Zvcihjb25zdFt0LGVdb2Ygbylmb3IobGV0IG49MDtuPGUubGVuZ3RoO24rPWEpcy5wdXNoKHt0YWc6dCxydW5zOmUuc2xpY2UobixuK2EpfSk7UHJvbWlzZS5hbGwocy5tYXAoKCh7dGFnOnQscnVuczpufSk9PnRoaXMucmVxdWVzdE1hbmFnZXIucmVxdWVzdChyLHt0YWc6dCxydW5zOm59KS50aGVuKChpPT57Zm9yKGNvbnN0IHIgb2Ygbil7Y29uc3Qgbj17dGFnOnQscnVuOnJ9O09iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbChpLHIpP2Uoe2l0ZW06bixkYXRhOmlbcl19KTplKHtpdGVtOm4sZGF0YTpudWxsfSl9fSkpKSkpLmZpbmFsbHkoKCgpPT57bigpfSkpfSx0aGlzLl9nZXREYXRhTG9hZE5hbWU9dD0+dGhpcy5fZ2V0U2VyaWVzTmFtZUZyb21EYXR1bSh0KSx0aGlzLl9leHBhbmRlZD0hMSx0aGlzLl90b29sdGlwQ29sdW1ucz0oKCk9Pntjb25zdCB0PURfdC5zbGljZSgpLGU9dC5maW5kSW5kZXgoKHQ9PiJOYW1lIj09dC50aXRsZSkpO3JldHVybiB0LnNwbGljZShlLDEse3RpdGxlOiJOYW1lIixldmFsdWF0ZTp0PT57Y29uc3QgZT10LmRhdGFzZXQubWV0YWRhdGEoKS5tZXRhO3JldHVybiB0aGlzLl9nZXRTZXJpZXNEaXNwbGF5TmFtZUZyb21EYXR1bShlKX19KSx0fSkoKX1fZ2V0Q2hhcnREYXRhTG9hZGVyKCl7cmV0dXJuIHRoaXMuc2hhZG93Um9vdC5xdWVyeVNlbGVjdG9yKCJ0Zi1saW5lLWNoYXJ0LWRhdGEtbG9hZGVyIil9cmVsb2FkKCl7dGhpcy5fZ2V0Q2hhcnREYXRhTG9hZGVyKCkucmVsb2FkKCl9cmVkcmF3KCl7dGhpcy5fZ2V0Q2hhcnREYXRhTG9hZGVyKCkucmVkcmF3KCl9X3RvZ2dsZUV4cGFuZGVkKHQpe3RoaXMuc2V0KCJfZXhwYW5kZWQiLCF0aGlzLl9leHBhbmRlZCksdGhpcy5yZWRyYXcoKX1fdG9nZ2xlTG9nU2NhbGUoKXt0aGlzLnNldCgiX2xvZ1NjYWxlQWN0aXZlIiwhdGhpcy5fbG9nU2NhbGVBY3RpdmUpfV9yZXNldERvbWFpbigpe2NvbnN0IHQ9dGhpcy5fZ2V0Q2hhcnREYXRhTG9hZGVyKCk7dCYmdC5yZXNldERvbWFpbigpfV91cGRhdGVEb3dubG9hZExpbmsoKXtjb25zdCB0PXRoaXMuX2dldENoYXJ0RGF0YUxvYWRlcigpLmV4cG9ydEFzU3ZnU3RyaW5nKCk7dGhpcy5zaGFkb3dSb290LnF1ZXJ5U2VsZWN0b3IoIiNzdmdMaW5rIikuaHJlZj1gZGF0YTppbWFnZS9zdmcreG1sO2Jhc2U2NCwke2J0b2EodCl9YH1fcnVuc0Zyb21EYXRhKHQpe3JldHVybiB0Lm1hcCgodD0+dC5ydW4pKX1fZ2V0RGF0YVNlcmllcygpe3JldHVybiB0aGlzLmRhdGFUb0xvYWQubWFwKCh0PT50aGlzLl9nZXRTZXJpZXNOYW1lRnJvbURhdHVtKHQpKSl9X2dldFNlcmllc05hbWVGcm9tRGF0dW0oe3J1bjp0LGV4cGVyaW1lbnQ6ZT17bmFtZToiX2RlZmF1bHQifX0pe3JldHVybiBKU09OLnN0cmluZ2lmeShbZS5uYW1lLHRdKX1fZ2V0U2VyaWVzRGlzcGxheU5hbWVGcm9tRGF0dW0odCl7cmV0dXJuIHQucnVufV9nZXRDb2xvclNjYWxlKCl7cmV0dXJuIG51bGwhPT10aGlzLmNvbG9yU2NhbGU/dGhpcy5jb2xvclNjYWxlOntzY2FsZTp0PT57Y29uc3RbLGVdPUpTT04ucGFyc2UodCk7cmV0dXJuIHhPKGUpfX19fTt4RHQudGVtcGxhdGU9X2VgCiAgICA8dGYtY2FyZC1oZWFkaW5nCiAgICAgIHRhZz0iW1t0YWddXSIKICAgICAgZGlzcGxheS1uYW1lPSJbW3RhZ01ldGFkYXRhLmRpc3BsYXlOYW1lXV0iCiAgICAgIGRlc2NyaXB0aW9uPSJbW3RhZ01ldGFkYXRhLmRlc2NyaXB0aW9uXV0iCiAgICA+PC90Zi1jYXJkLWhlYWRpbmc+CiAgICA8ZGl2IGlkPSJ0Zi1saW5lLWNoYXJ0LWRhdGEtbG9hZGVyLWNvbnRhaW5lciI+CiAgICAgIDx0Zi1saW5lLWNoYXJ0LWRhdGEtbG9hZGVyCiAgICAgICAgYWN0aXZlPSJbW2FjdGl2ZV1dIgogICAgICAgIGNvbG9yLXNjYWxlPSJbW19nZXRDb2xvclNjYWxlKGNvbG9yU2NhbGUpXV0iCiAgICAgICAgZGF0YS1zZXJpZXM9IltbX2dldERhdGFTZXJpZXMoZGF0YVRvTG9hZC4qKV1dIgogICAgICAgIGRhdGEtdG8tbG9hZD0iW1tkYXRhVG9Mb2FkXV0iCiAgICAgICAgZ2V0LWRhdGEtbG9hZC1uYW1lPSJbW19nZXREYXRhTG9hZE5hbWVdXSIKICAgICAgICBnZXQtZGF0YS1sb2FkLXVybD0iW1tnZXREYXRhTG9hZFVybF1dIgogICAgICAgIHJlcXVlc3QtZGF0YT0iW1tyZXF1ZXN0RGF0YV1dIgogICAgICAgIGlnbm9yZS15LW91dGxpZXJzPSJbW2lnbm9yZVlPdXRsaWVyc11dIgogICAgICAgIGxvYWQtZGF0YS1jYWxsYmFjaz0iW1tfbG9hZERhdGFDYWxsYmFja11dIgogICAgICAgIGxvYWQta2V5PSJbW3RhZ11dIgogICAgICAgIGxvZy1zY2FsZS1hY3RpdmU9IltbX2xvZ1NjYWxlQWN0aXZlXV0iCiAgICAgICAgcmVxdWVzdC1tYW5hZ2VyPSJbW3JlcXVlc3RNYW5hZ2VyXV0iCiAgICAgICAgc21vb3RoaW5nLWVuYWJsZWQ9Iltbc21vb3RoaW5nRW5hYmxlZF1dIgogICAgICAgIHNtb290aGluZy13ZWlnaHQ9Iltbc21vb3RoaW5nV2VpZ2h0XV0iCiAgICAgICAgdGFnLW1ldGFkYXRhPSJbW3RhZ01ldGFkYXRhXV0iCiAgICAgICAgdG9vbHRpcC1jb2x1bW5zPSJbW190b29sdGlwQ29sdW1uc11dIgogICAgICAgIHRvb2x0aXAtcG9zaXRpb249ImF1dG8iCiAgICAgICAgdG9vbHRpcC1zb3J0aW5nLW1ldGhvZD0iW1t0b29sdGlwU29ydGluZ01ldGhvZF1dIgogICAgICAgIHgtdHlwZT0iW1t4VHlwZV1dIgogICAgICA+CiAgICAgIDwvdGYtbGluZS1jaGFydC1kYXRhLWxvYWRlcj4KICAgIDwvZGl2PgogICAgPGRpdiBpZD0iYnV0dG9ucyI+CiAgICAgIDxwYXBlci1pY29uLWJ1dHRvbgogICAgICAgIHNlbGVjdGVkJD0iW1tfZXhwYW5kZWRdXSIKICAgICAgICBpY29uPSJmdWxsc2NyZWVuIgogICAgICAgIG9uLXRhcD0iX3RvZ2dsZUV4cGFuZGVkIgogICAgICA+PC9wYXBlci1pY29uLWJ1dHRvbj4KICAgICAgPHBhcGVyLWljb24tYnV0dG9uCiAgICAgICAgc2VsZWN0ZWQkPSJbW19sb2dTY2FsZUFjdGl2ZV1dIgogICAgICAgIGljb249ImxpbmUtd2VpZ2h0IgogICAgICAgIG9uLXRhcD0iX3RvZ2dsZUxvZ1NjYWxlIgogICAgICAgIHRpdGxlPSJUb2dnbGUgeS1heGlzIGxvZyBzY2FsZSIKICAgICAgPjwvcGFwZXItaWNvbi1idXR0b24+CiAgICAgIDxwYXBlci1pY29uLWJ1dHRvbgogICAgICAgIGljb249InNldHRpbmdzLW92ZXJzY2FuIgogICAgICAgIG9uLXRhcD0iX3Jlc2V0RG9tYWluIgogICAgICAgIHRpdGxlPSJGaXQgZG9tYWluIHRvIGRhdGEiCiAgICAgID48L3BhcGVyLWljb24tYnV0dG9uPgogICAgICA8dGVtcGxhdGUgaXM9ImRvbS1pZiIgaWY9Iltbc2hvd0Rvd25sb2FkTGlua3NdXSI+CiAgICAgICAgPHBhcGVyLW1lbnUtYnV0dG9uIG9uLXBhcGVyLWRyb3Bkb3duLW9wZW49Il91cGRhdGVEb3dubG9hZExpbmsiPgogICAgICAgICAgPHBhcGVyLWljb24tYnV0dG9uCiAgICAgICAgICAgIGNsYXNzPSJkcm9wZG93bi10cmlnZ2VyIgogICAgICAgICAgICBzbG90PSJkcm9wZG93bi10cmlnZ2VyIgogICAgICAgICAgICBpY29uPSJmaWxlLWRvd25sb2FkIgogICAgICAgICAgPjwvcGFwZXItaWNvbi1idXR0b24+CiAgICAgICAgICA8cGFwZXItbGlzdGJveCBjbGFzcz0iZHJvcGRvd24tY29udGVudCIgc2xvdD0iZHJvcGRvd24tY29udGVudCI+CiAgICAgICAgICAgIDxwYXBlci1pdGVtPgogICAgICAgICAgICAgIDxhIGlkPSJzdmdMaW5rIiBkb3dubG9hZD0iW1t0YWddXS5zdmciPgogICAgICAgICAgICAgICAgRG93bmxvYWQgQ3VycmVudCBDaGFydCBhcyBTVkcKICAgICAgICAgICAgICA8L2E+CiAgICAgICAgICAgIDwvcGFwZXItaXRlbT4KICAgICAgICAgIDwvcGFwZXItbGlzdGJveD4KICAgICAgICA8L3BhcGVyLW1lbnUtYnV0dG9uPgogICAgICA8L3RlbXBsYXRlPgogICAgICA8c3BhbiBzdHlsZT0iZmxleC1ncm93OiAxIj48L3NwYW4+CiAgICAgIDx0ZW1wbGF0ZSBpcz0iZG9tLWlmIiBpZj0iW1tzaG93RG93bmxvYWRMaW5rc11dIj4KICAgICAgICA8ZGl2IGNsYXNzPSJkb3dubG9hZC1saW5rcyI+CiAgICAgICAgICA8dGYtZG93bmxvYWRlcgogICAgICAgICAgICBydW5zPSJbW19ydW5zRnJvbURhdGEoZGF0YVRvTG9hZCldXSIKICAgICAgICAgICAgdGFnPSJbW3RhZ11dIgogICAgICAgICAgICB1cmwtZm49IltbX2Rvd25sb2FkVXJsRm5dXSIKICAgICAgICAgID48L3RmLWRvd25sb2FkZXI+CiAgICAgICAgPC9kaXY+CiAgICAgIDwvdGVtcGxhdGU+CiAgICA8L2Rpdj4KICAgIDxzdHlsZT4KICAgICAgOmhvc3QgewogICAgICAgIG1hcmdpbjogNXB4OwogICAgICAgIGRpc3BsYXk6IGJsb2NrOwogICAgICAgIHdpZHRoOiAzMzBweDsKICAgICAgfQoKICAgICAgOmhvc3QoW19leHBhbmRlZF0pIHsKICAgICAgICB3aWR0aDogMTAwJTsKICAgICAgfQoKICAgICAgOmhvc3QoW19leHBhbmRlZF0pICN0Zi1saW5lLWNoYXJ0LWRhdGEtbG9hZGVyLWNvbnRhaW5lciB7CiAgICAgICAgaGVpZ2h0OiA0MDBweDsKICAgICAgfQoKICAgICAgI3RmLWxpbmUtY2hhcnQtZGF0YS1sb2FkZXItY29udGFpbmVyIHsKICAgICAgICBoZWlnaHQ6IDIwMHB4OwogICAgICAgIHdpZHRoOiAxMDAlOwogICAgICB9CgogICAgICB0Zi1jYXJkLWhlYWRpbmcgewogICAgICAgIGRpc3BsYXk6IGJsb2NrOwogICAgICAgIG1hcmdpbi1ib3R0b206IDEwcHg7CiAgICAgIH0KCiAgICAgICNidXR0b25zIHsKICAgICAgICBkaXNwbGF5OiBmbGV4OwogICAgICAgIGZsZXgtZGlyZWN0aW9uOiByb3c7CiAgICAgIH0KCiAgICAgIHBhcGVyLWljb24tYnV0dG9uIHsKICAgICAgICBjb2xvcjogIzIxOTZmMzsKICAgICAgICBib3JkZXItcmFkaXVzOiAxMDAlOwogICAgICAgIHdpZHRoOiAzMnB4OwogICAgICAgIGhlaWdodDogMzJweDsKICAgICAgICBwYWRkaW5nOiA0cHg7CiAgICAgIH0KCiAgICAgIHBhcGVyLWljb24tYnV0dG9uW3NlbGVjdGVkXSB7CiAgICAgICAgYmFja2dyb3VuZDogdmFyKC0tdGItdWktbGlnaHQtYWNjZW50KTsKICAgICAgfQoKICAgICAgLmRvd25sb2FkLWxpbmtzIHsKICAgICAgICBkaXNwbGF5OiBmbGV4OwogICAgICAgIGhlaWdodDogMzJweDsKICAgICAgfQoKICAgICAgLmRvd25sb2FkLWxpbmtzIGEgewogICAgICAgIGFsaWduLXNlbGY6IGNlbnRlcjsKICAgICAgICBmb250LXNpemU6IDEwcHg7CiAgICAgICAgbWFyZ2luOiAycHg7CiAgICAgIH0KCiAgICAgIC5kb3dubG9hZC1saW5rcyBwYXBlci1kcm9wZG93bi1tZW51IHsKICAgICAgICB3aWR0aDogMTAwcHg7CiAgICAgICAgLS1wYXBlci1pbnB1dC1jb250YWluZXItbGFiZWw6IHsKICAgICAgICAgIGZvbnQtc2l6ZTogMTBweDsKICAgICAgICB9CiAgICAgICAgLS1wYXBlci1pbnB1dC1jb250YWluZXItaW5wdXQ6IHsKICAgICAgICAgIGZvbnQtc2l6ZTogMTBweDsKICAgICAgICB9CiAgICAgIH0KCiAgICAgIHBhcGVyLW1lbnUtYnV0dG9uIHsKICAgICAgICBwYWRkaW5nOiAwOwogICAgICB9CiAgICAgIHBhcGVyLWl0ZW0gYSB7CiAgICAgICAgY29sb3I6IGluaGVyaXQ7CiAgICAgICAgdGV4dC1kZWNvcmF0aW9uOiBub25lOwogICAgICAgIHdoaXRlLXNwYWNlOiBub3dyYXA7CiAgICAgIH0KICAgIDwvc3R5bGU+CiAgYCx0KFtvKHt0eXBlOlN0cmluZ30pLGUoImRlc2lnbjp0eXBlIixTdHJpbmcpXSx4RHQucHJvdG90eXBlLCJ0YWciLHZvaWQgMCksdChbbyh7dHlwZTpBcnJheX0pLGUoImRlc2lnbjp0eXBlIixBcnJheSldLHhEdC5wcm90b3R5cGUsImRhdGFUb0xvYWQiLHZvaWQgMCksdChbbyh7dHlwZTpTdHJpbmd9KSxlKCJkZXNpZ246dHlwZSIsU3RyaW5nKV0seER0LnByb3RvdHlwZSwieFR5cGUiLHZvaWQgMCksdChbbyh7dHlwZTpCb29sZWFufSksZSgiZGVzaWduOnR5cGUiLEJvb2xlYW4pXSx4RHQucHJvdG90eXBlLCJhY3RpdmUiLHZvaWQgMCksdChbbyh7dHlwZTpCb29sZWFufSksZSgiZGVzaWduOnR5cGUiLEJvb2xlYW4pXSx4RHQucHJvdG90eXBlLCJpZ25vcmVZT3V0bGllcnMiLHZvaWQgMCksdChbbyh7dHlwZTpPYmplY3R9KSxlKCJkZXNpZ246dHlwZSIsaHIpXSx4RHQucHJvdG90eXBlLCJyZXF1ZXN0TWFuYWdlciIsdm9pZCAwKSx0KFtvKHt0eXBlOkJvb2xlYW59KSxlKCJkZXNpZ246dHlwZSIsQm9vbGVhbildLHhEdC5wcm90b3R5cGUsInNob3dEb3duTGlua3MiLHZvaWQgMCksdChbbyh7dHlwZTpCb29sZWFufSksZSgiZGVzaWduOnR5cGUiLEJvb2xlYW4pXSx4RHQucHJvdG90eXBlLCJzbW9vdGhpbmdFbmFibGVkIix2b2lkIDApLHQoW28oe3R5cGU6TnVtYmVyfSksZSgiZGVzaWduOnR5cGUiLE51bWJlcildLHhEdC5wcm90b3R5cGUsInNtb290aGluZ1dlaWdodCIsdm9pZCAwKSx0KFtvKHt0eXBlOk9iamVjdH0pLGUoImRlc2lnbjp0eXBlIixPYmplY3QpXSx4RHQucHJvdG90eXBlLCJ0YWdNZXRhZGF0YSIsdm9pZCAwKSx0KFtvKHt0eXBlOk9iamVjdH0pLGUoImRlc2lnbjp0eXBlIixPYmplY3QpXSx4RHQucHJvdG90eXBlLCJjb2xvclNjYWxlIix2b2lkIDApLHQoW28oe3R5cGU6U3RyaW5nfSksZSgiZGVzaWduOnR5cGUiLFN0cmluZyldLHhEdC5wcm90b3R5cGUsInRvb2x0aXBTb3J0aW5nTWV0aG9kIix2b2lkIDApLHQoW28oe3R5cGU6TnVtYmVyfSksZSgiZGVzaWduOnR5cGUiLE51bWJlcildLHhEdC5wcm90b3R5cGUsImJhdGNoU2l6ZSIsdm9pZCAwKSx0KFtvKHt0eXBlOkJvb2xlYW59KSxlKCJkZXNpZ246dHlwZSIsTnVtYmVyKV0seER0LnByb3RvdHlwZSwiaW5Db2xhYiIsdm9pZCAwKSx0KFtvKHt0eXBlOk9iamVjdH0pLGUoImRlc2lnbjp0eXBlIixPYmplY3QpXSx4RHQucHJvdG90eXBlLCJfbG9hZERhdGFDYWxsYmFjayIsdm9pZCAwKSx0KFtvKHt0eXBlOk9iamVjdH0pLGUoImRlc2lnbjp0eXBlIixGdW5jdGlvbildLHhEdC5wcm90b3R5cGUsImdldERhdGFMb2FkVXJsIix2b2lkIDApLHQoW28oe3R5cGU6T2JqZWN0fSksZSgiZGVzaWduOnR5cGUiLE9iamVjdCldLHhEdC5wcm90b3R5cGUsIl9kb3dubG9hZFVybEZuIix2b2lkIDApLHQoW28oe3R5cGU6T2JqZWN0fSksZSgiZGVzaWduOnR5cGUiLEZ1bmN0aW9uKV0seER0LnByb3RvdHlwZSwicmVxdWVzdERhdGEiLHZvaWQgMCksdChbbyh7dHlwZTpPYmplY3R9KSxlKCJkZXNpZ246dHlwZSIsT2JqZWN0KV0seER0LnByb3RvdHlwZSwiX2dldERhdGFMb2FkTmFtZSIsdm9pZCAwKSx0KFtvKHt0eXBlOkJvb2xlYW4scmVmbGVjdFRvQXR0cmlidXRlOiEwfSksZSgiZGVzaWduOnR5cGUiLEJvb2xlYW4pXSx4RHQucHJvdG90eXBlLCJfZXhwYW5kZWQiLHZvaWQgMCksdChbbyh7dHlwZTpCb29sZWFufSksZSgiZGVzaWduOnR5cGUiLEJvb2xlYW4pXSx4RHQucHJvdG90eXBlLCJfbG9nU2NhbGVBY3RpdmUiLHZvaWQgMCksdChbbyh7dHlwZTpBcnJheX0pLGUoImRlc2lnbjp0eXBlIixBcnJheSldLHhEdC5wcm90b3R5cGUsIl90b29sdGlwQ29sdW1ucyIsdm9pZCAwKSx4RHQ9dChbaSgidGYtc2NhbGFyLWNhcmQiKV0seER0KTtsZXQgd0R0PWNsYXNzIGV4dGVuZHMoKGZ1bmN0aW9uIHQoZSxuKXtyZXR1cm4gUHIoe30sdHIobiksZSl9KShbZ29dLHllKSl7Y29uc3RydWN0b3IoKXtzdXBlciguLi5hcmd1bWVudHMpLHRoaXMuc2Vzc2lvbkdyb3VwPW51bGwsdGhpcy5feFR5cGU9V2d0LlNURVAsdGhpcy5fbm9NdWx0aUV4cGVyaW1lbnRzPSExLHRoaXMuX3JlcXVlc3REYXRhPSh0LGUsbik9PntQcm9taXNlLmFsbCh0Lm1hcCgodD0+dGhpcy5iYWNrZW5kLmxpc3RNZXRyaWNFdmFscyh7ZXhwZXJpbWVudE5hbWU6dGhpcy5leHBlcmltZW50TmFtZSxzZXNzaW9uTmFtZTp0LnJ1bixtZXRyaWNOYW1lOnQudGFnfSkudGhlbigobj0+e2Uoe2l0ZW06dCxkYXRhOm59KX0pKSkpKS5maW5hbGx5KCgoKT0+e24oKX0pKX0sdGhpcy5fY29sb3JTY2FsZT17c2NhbGU6dD0+e2NvbnN0IGU9SlNPTi5wYXJzZSh0KVsxXSxuPXRoaXMuX2luZGV4T2ZTZXNzaW9uLmdldChlKTtyZXR1cm4gZ09bKHRoaXMuX3Nlc3Npb25Hcm91cE5hbWVIYXNoK24pJWdPLmxlbmd0aF19fX1jb25uZWN0ZWRDYWxsYmFjaygpe3N1cGVyLmNvbm5lY3RlZENhbGxiYWNrKCksdGhpcy5hZGRFdmVudExpc3RlbmVyKCJpcm9uLXJlc2l6ZSIsdGhpcy5yZWRyYXcuYmluZCh0aGlzKSl9cmVkcmF3KCl7dGhpcy5zaGFkb3dSb290LnF1ZXJ5U2VsZWN0b3JBbGwoInRmLXNjYWxhci1jYXJkIikuZm9yRWFjaCgodD0+dC5yZWRyYXcoKSkpfV9zZXNzaW9uR3JvdXBDaGFuZ2VkKCl7dGhpcy5zZXNzaW9uR3JvdXAmJjAhPU9iamVjdC5rZXlzKHRoaXMuc2Vzc2lvbkdyb3VwKS5sZW5ndGg/KHRoaXMuX2luZGV4T2ZTZXNzaW9uPW5ldyBNYXAodGhpcy5zZXNzaW9uR3JvdXAuc2Vzc2lvbnMubWFwKCgodCxlKT0+W3QubmFtZSxlXSkpKSx0aGlzLl9zZXNzaW9uR3JvdXBOYW1lSGFzaD0kUnQodGhpcy5zZXNzaW9uR3JvdXAubmFtZSkpOih0aGlzLl9pbmRleE9mU2Vzc2lvbj1uZXcgTWFwLHRoaXMuX3Nlc3Npb25Hcm91cE5hbWVIYXNoPTApLHRoaXMuc2hhZG93Um9vdC5xdWVyeVNlbGVjdG9yQWxsKCJ0Zi1zY2FsYXItY2FyZCIpLmZvckVhY2goKHQ9Pntjb25zdCBlPXQsbj1lLmdldCgidGFnIik7ZS5zZXQoInRhZyIsIiIpLGUuc2V0KCJ0YWciLG4pfSkpfV9oYXZlTWV0cmljcygpe3JldHVybiB0aGlzLnZpc2libGVTY2hlbWEmJkFycmF5LmlzQXJyYXkodGhpcy52aXNpYmxlU2NoZW1hLm1ldHJpY0luZm9zKSYmdGhpcy52aXNpYmxlU2NoZW1hLm1ldHJpY0luZm9zLmxlbmd0aD4wfV9oYXZlTWV0cmljc0FuZFNlc3Npb25Hcm91cCgpe3JldHVybiB0aGlzLnNlc3Npb25Hcm91cCYmdGhpcy5faGF2ZU1ldHJpY3MoKX1fY29tcHV0ZVNlcmllc0ZvclNlc3Npb25Hcm91cE1ldHJpYyh0LGUpe3JldHVybiBudWxsPT09dHx8MD09T2JqZWN0LmtleXModCkubGVuZ3RofHxudWxsPT09ZT9bXTp0LnNlc3Npb25zLmZpbHRlcigodD0+dm9pZCAwIT09TFJ0KHQubWV0cmljVmFsdWVzLGUubmFtZSkpKS5tYXAoKHQ9Pih7dGFnOmUubmFtZSxydW46dC5uYW1lfSkpKX1fY29tcHV0ZVRhZ01ldGFkYXRhKHQpe3JldHVybntkaXNwbGF5TmFtZTpNUnQodCksZGVzY3JpcHRpb246dC5kZXNjcmlwdGlvbnx8IiJ9fX07d0R0LnRlbXBsYXRlPV9lYAogICAgPHRlbXBsYXRlIGlzPSJkb20taWYiIGlmPSJbWyFzZXNzaW9uR3JvdXBdXSI+CiAgICAgIDxkaXY+CiAgICAgICAgPGgzPk5vIHNlc3Npb24gZ3JvdXAgc2VsZWN0ZWQ8L2gzPgogICAgICAgIDxwPlBsZWFzZSBzZWxlY3QgYSBzZXNzaW9uIGdyb3VwIHRvIHNlZSBpdHMgbWV0cmljLWdyYXBocyBoZXJlLjwvcD4KICAgICAgPC9kaXY+CiAgICA8L3RlbXBsYXRlPgogICAgPHRlbXBsYXRlIGlzPSJkb20taWYiIGlmPSJbWyFfaGF2ZU1ldHJpY3ModmlzaWJsZVNjaGVtYS4qKV1dIj4KICAgICAgPGRpdj4KICAgICAgICA8aDM+Tm8gbWV0cmljcyBhcmUgZW5hYmxlZDwvaDM+CiAgICAgICAgPHA+UGxlYXNlIGVuYWJsZSBzb21lIG1ldHJpY3MgdG8gc2VlIGNvbnRlbnQgaGVyZS48L3A+CiAgICAgIDwvZGl2PgogICAgPC90ZW1wbGF0ZT4KICAgIDxkaXYgY2xhc3M9ImxheW91dCBob3Jpem9udGFsIHdyYXAgc2Vzc2lvbi1ncm91cC1kZXRhaWxzIj4KICAgICAgPHRlbXBsYXRlCiAgICAgICAgaXM9ImRvbS1pZiIKICAgICAgICBpZj0iW1tfaGF2ZU1ldHJpY3NBbmRTZXNzaW9uR3JvdXAodmlzaWJsZVNjaGVtYS4qLCBzZXNzaW9uR3JvdXApXV0iCiAgICAgID4KICAgICAgICA8dGVtcGxhdGUKICAgICAgICAgIGlzPSJkb20tcmVwZWF0IgogICAgICAgICAgaXRlbXM9IltbdmlzaWJsZVNjaGVtYS5tZXRyaWNJbmZvc11dIgogICAgICAgICAgYXM9Im1ldHJpY0luZm8iCiAgICAgICAgPgogICAgICAgICAgPCEtLSBOb3RlIHRoYXQgd2UgZG8gbm90IHByb3ZpZGUgYSByZXF1ZXN0LW1hbmFnZXIgYXR0cmlidXRlIHNpbmNlCiAgICAgICAgICAgICAgIHdlIHByb3ZpZGUgYSBmdW5jdGlvbiBpbiByZXF1ZXN0LWRhdGEgZm9yIGNhbGxpbmcgdGhlIGJhY2tlbmQKICAgICAgICAgICAgICAgdG8gZ2V0IHRoZSBtZXRyaWNzIGRhdGEuCiAgICAgICAgICAgIC0tPgogICAgICAgICAgPHRmLXNjYWxhci1jYXJkCiAgICAgICAgICAgIGNsYXNzPSJzY2FsYXItY2FyZCIKICAgICAgICAgICAgY29sb3Itc2NhbGU9IltbX2NvbG9yU2NhbGVdXSIKICAgICAgICAgICAgZGF0YS10by1sb2FkPSJbW19jb21wdXRlU2VyaWVzRm9yU2Vzc2lvbkdyb3VwTWV0cmljKHNlc3Npb25Hcm91cCwgbWV0cmljSW5mbyldXSIKICAgICAgICAgICAgdGFnPSJbW21ldHJpY0luZm8ubmFtZS50YWddXSIKICAgICAgICAgICAgdGFnLW1ldGFkYXRhPSJbW19jb21wdXRlVGFnTWV0YWRhdGEobWV0cmljSW5mbyldXSIKICAgICAgICAgICAgeC10eXBlPSJbW194VHlwZV1dIgogICAgICAgICAgICBtdWx0aS1leHBlcmltZW50cz0iW1tfbm9NdWx0aUV4cGVyaW1lbnRzXV0iCiAgICAgICAgICAgIHJlcXVlc3QtZGF0YT0iW1tfcmVxdWVzdERhdGFdXSIKICAgICAgICAgICAgYWN0aXZlCiAgICAgICAgICA+CiAgICAgICAgICA8L3RmLXNjYWxhci1jYXJkPgogICAgICAgIDwvdGVtcGxhdGU+CiAgICAgIDwvdGVtcGxhdGU+CiAgICA8L2Rpdj4KICAgIDwhLS0gImlyb24tZmxleCIgaXMgbmVlZGVkIHRvIHVzZSB0aGUgbGF5b3V0IGNsYXNzZXMgaW4gdGhlIGRpdiBhYm92ZSAtLT4KICAgIDxzdHlsZSBpbmNsdWRlPSJpcm9uLWZsZXgiPgogICAgICA6aG9zdCB7CiAgICAgICAgZGlzcGxheTogYmxvY2s7CiAgICAgIH0KICAgIDwvc3R5bGU+CiAgYCx0KFtvKHt0eXBlOk9iamVjdH0pLGUoImRlc2lnbjp0eXBlIixPYmplY3QpXSx3RHQucHJvdG90eXBlLCJiYWNrZW5kIix2b2lkIDApLHQoW28oe3R5cGU6U3RyaW5nfSksZSgiZGVzaWduOnR5cGUiLFN0cmluZyldLHdEdC5wcm90b3R5cGUsImV4cGVyaW1lbnROYW1lIix2b2lkIDApLHQoW28oe3R5cGU6T2JqZWN0fSksZSgiZGVzaWduOnR5cGUiLE9iamVjdCldLHdEdC5wcm90b3R5cGUsInZpc2libGVTY2hlbWEiLHZvaWQgMCksdChbbyh7dHlwZTpPYmplY3R9KSxlKCJkZXNpZ246dHlwZSIsT2JqZWN0KV0sd0R0LnByb3RvdHlwZSwic2Vzc2lvbkdyb3VwIix2b2lkIDApLHQoW28oe3R5cGU6U3RyaW5nfSksZSgiZGVzaWduOnR5cGUiLFN0cmluZyldLHdEdC5wcm90b3R5cGUsIl94VHlwZSIsdm9pZCAwKSx0KFtvKHt0eXBlOkJvb2xlYW59KSxlKCJkZXNpZ246dHlwZSIsQm9vbGVhbildLHdEdC5wcm90b3R5cGUsIl9ub011bHRpRXhwZXJpbWVudHMiLHZvaWQgMCksdChbbyh7dHlwZTpPYmplY3R9KSxlKCJkZXNpZ246dHlwZSIsT2JqZWN0KV0sd0R0LnByb3RvdHlwZSwiX2luZGV4T2ZTZXNzaW9uIix2b2lkIDApLHQoW28oe3R5cGU6TnVtYmVyfSksZSgiZGVzaWduOnR5cGUiLE51bWJlcildLHdEdC5wcm90b3R5cGUsIl9zZXNzaW9uR3JvdXBOYW1lSGFzaCIsdm9pZCAwKSx0KFtvKHt0eXBlOk9iamVjdH0pLGUoImRlc2lnbjp0eXBlIixGdW5jdGlvbildLHdEdC5wcm90b3R5cGUsIl9yZXF1ZXN0RGF0YSIsdm9pZCAwKSx0KFtvKHt0eXBlOk9iamVjdH0pLGUoImRlc2lnbjp0eXBlIixPYmplY3QpXSx3RHQucHJvdG90eXBlLCJfY29sb3JTY2FsZSIsdm9pZCAwKSx0KFthKCJzZXNzaW9uR3JvdXAuKiIpLGUoImRlc2lnbjp0eXBlIixGdW5jdGlvbiksZSgiZGVzaWduOnBhcmFtdHlwZXMiLFtdKSxlKCJkZXNpZ246cmV0dXJudHlwZSIsdm9pZCAwKV0sd0R0LnByb3RvdHlwZSwiX3Nlc3Npb25Hcm91cENoYW5nZWQiLG51bGwpLHdEdD10KFtpKCJ0Zi1ocGFyYW1zLXNlc3Npb24tZ3JvdXAtZGV0YWlscyIpXSx3RHQpO2xldCBTRHQ9Y2xhc3MgZXh0ZW5kcyh0cih5ZSkpe2NvbnN0cnVjdG9yKCl7c3VwZXIoLi4uYXJndW1lbnRzKSx0aGlzLl9ocGFyYW1OYW1lPVNSdCx0aGlzLl9tZXRyaWNOYW1lPU1SdH1fdmlzaWJsZVNjaGVtYU9yU2Vzc2lvbkdyb3Vwc0NoYW5nZWQoKXtjb25zdCB0PXRoaXMuJC5zZXNzaW9uR3JvdXBzVGFibGUuZ2V0KCJkZXRhaWxzT3BlbmVkSXRlbXMiKTt0aGlzLiQuc2Vzc2lvbkdyb3Vwc1RhYmxlLnNldCgiZGV0YWlsc09wZW5lZEl0ZW1zIixbXSksemkoKTtjb25zdCBlPW5ldyBNYXA7dGhpcy5zZXNzaW9uR3JvdXBzLmZvckVhY2goKHQ9PntlLnNldCh0Lm5hbWUsdCl9KSksdGhpcy4kLnNlc3Npb25Hcm91cHNUYWJsZS5zZXQoImRldGFpbHNPcGVuZWRJdGVtcyIsdC5tYXAoKHQ9PmUuZ2V0KHQubmFtZSkpKS5maWx0ZXIoQm9vbGVhbikpfV9zZXNzaW9uR3JvdXBIUGFyYW0odCxlKXtyZXR1cm4gbnVsbCE9dCYmMCE9T2JqZWN0LmtleXModCkubGVuZ3RoJiZPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwodC5ocGFyYW1zLGUpP1VSdCh0LmhwYXJhbXNbZV0pOiIifV9zZXNzaW9uR3JvdXBNZXRyaWModCxlKXtpZihudWxsPT10fHwwPT1PYmplY3Qua2V5cyh0KS5sZW5ndGgpcmV0dXJuIiI7Zm9yKGxldCBuPTA7bjx0Lm1ldHJpY1ZhbHVlcy5sZW5ndGg7KytuKXtsZXQgaT10Lm1ldHJpY1ZhbHVlc1tuXTtpZihpLm5hbWUuZ3JvdXA9PT1lLmdyb3VwJiZpLm5hbWUudGFnPT1lLnRhZylyZXR1cm4gVVJ0KGkudmFsdWUpfXJldHVybiIifV9yb3dOdW1iZXIodCl7cmV0dXJuIHQrMX19O1NEdC50ZW1wbGF0ZT1fZWAKICAgIDx2YWFkaW4tZ3JpZAogICAgICBjbGFzcz0ic2Vzc2lvbi1ncm91cC10YWJsZSIKICAgICAgaWQ9InNlc3Npb25Hcm91cHNUYWJsZSIKICAgICAgY29sdW1uLXJlb3JkZXJpbmctYWxsb3dlZD0iIgogICAgICBpdGVtcz0iW1tzZXNzaW9uR3JvdXBzXV0iCiAgICA+CiAgICAgIDx2YWFkaW4tZ3JpZC1jb2x1bW4gZmxleC1ncm93PSIwIiB3aWR0aD0iMTBlbSIgcmVzaXphYmxlPSIiPgogICAgICAgIDx0ZW1wbGF0ZSBjbGFzcz0iaGVhZGVyIj4KICAgICAgICAgIDxkaXYgY2xhc3M9InRhYmxlLWhlYWRlciB0YWJsZS1jZWxsIj5UcmlhbCBJRDwvZGl2PgogICAgICAgIDwvdGVtcGxhdGU+CiAgICAgICAgPHRlbXBsYXRlPgogICAgICAgICAgPGRpdiBjbGFzcz0idGFibGUtY2VsbCI+W1tpdGVtLm5hbWVdXTwvZGl2PgogICAgICAgIDwvdGVtcGxhdGU+CiAgICAgIDwvdmFhZGluLWdyaWQtY29sdW1uPgogICAgICA8dGVtcGxhdGUgaXM9ImRvbS1pZiIgaWY9IltbZW5hYmxlU2hvd01ldHJpY3NdXSI+CiAgICAgICAgPHZhYWRpbi1ncmlkLWNvbHVtbiBmbGV4LWdyb3c9IjAiIGF1dG9XaWR0aD0iIiByZXNpemFibGU9IiI+CiAgICAgICAgICA8dGVtcGxhdGUgY2xhc3M9ImhlYWRlciI+CiAgICAgICAgICAgIDxkaXYgY2xhc3M9InRhYmxlLWhlYWRlciB0YWJsZS1jZWxsIj5TaG93IE1ldHJpY3M8L2Rpdj4KICAgICAgICAgIDwvdGVtcGxhdGU+CiAgICAgICAgICA8dGVtcGxhdGU+CiAgICAgICAgICAgIDxwYXBlci1jaGVja2JveCBjbGFzcz0idGFibGUtY2VsbCIgY2hlY2tlZD0ie3tkZXRhaWxzT3BlbmVkfX0iPgogICAgICAgICAgICA8L3BhcGVyLWNoZWNrYm94PgogICAgICAgICAgPC90ZW1wbGF0ZT4KICAgICAgICA8L3ZhYWRpbi1ncmlkLWNvbHVtbj4KICAgICAgPC90ZW1wbGF0ZT4KICAgICAgPHRlbXBsYXRlCiAgICAgICAgaXM9ImRvbS1yZXBlYXQiCiAgICAgICAgaXRlbXM9IltbdmlzaWJsZVNjaGVtYS5ocGFyYW1JbmZvc11dIgogICAgICAgIGFzPSJocGFyYW1JbmZvIgogICAgICAgIGluZGV4LWFzPSJocGFyYW1JbmRleCIKICAgICAgPgogICAgICAgIDx2YWFkaW4tZ3JpZC1jb2x1bW4gZmxleC1ncm93PSIyIiB3aWR0aD0iMTBlbSIgcmVzaXphYmxlPSIiPgogICAgICAgICAgPHRlbXBsYXRlIGNsYXNzPSJoZWFkZXIiPgogICAgICAgICAgICA8ZGl2IGNsYXNzPSJ0YWJsZS1oZWFkZXIgdGFibGUtY2VsbCI+CiAgICAgICAgICAgICAgW1tfaHBhcmFtTmFtZShocGFyYW1JbmZvKV1dCiAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgPC90ZW1wbGF0ZT4KICAgICAgICAgIDx0ZW1wbGF0ZT4KICAgICAgICAgICAgPGRpdiBjbGFzcz0idGFibGUtY2VsbCI+CiAgICAgICAgICAgICAgW1tfc2Vzc2lvbkdyb3VwSFBhcmFtKGl0ZW0sIGhwYXJhbUluZm8ubmFtZSldXQogICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgIDwvdGVtcGxhdGU+CiAgICAgICAgPC92YWFkaW4tZ3JpZC1jb2x1bW4+CiAgICAgIDwvdGVtcGxhdGU+CiAgICAgIDx0ZW1wbGF0ZQogICAgICAgIGlzPSJkb20tcmVwZWF0IgogICAgICAgIGl0ZW1zPSJ7e3Zpc2libGVTY2hlbWEubWV0cmljSW5mb3N9fSIKICAgICAgICBhcz0ibWV0cmljSW5mbyIKICAgICAgICBpbmRleC1hcz0ibWV0cmljSW5kZXgiCiAgICAgID4KICAgICAgICA8dmFhZGluLWdyaWQtY29sdW1uIGZsZXgtZ3Jvdz0iMiIgd2lkdGg9IjEwZW0iIHJlc2l6YWJsZT0iIj4KICAgICAgICAgIDx0ZW1wbGF0ZSBjbGFzcz0iaGVhZGVyIj4KICAgICAgICAgICAgPGRpdiBjbGFzcz0idGFibGUtaGVhZGVyIHRhYmxlLWNlbGwiPgogICAgICAgICAgICAgIFtbX21ldHJpY05hbWUobWV0cmljSW5mbyldXQogICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgIDwvdGVtcGxhdGU+CiAgICAgICAgICA8dGVtcGxhdGU+CiAgICAgICAgICAgIDxkaXYgY2xhc3M9InRhYmxlLWNlbGwiPgogICAgICAgICAgICAgIFtbX3Nlc3Npb25Hcm91cE1ldHJpYyhpdGVtLCBtZXRyaWNJbmZvLm5hbWUpXV0KICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICA8L3RlbXBsYXRlPgogICAgICAgIDwvdmFhZGluLWdyaWQtY29sdW1uPgogICAgICA8L3RlbXBsYXRlPgogICAgICA8dGVtcGxhdGUgY2xhc3M9InJvdy1kZXRhaWxzIj4KICAgICAgICA8dGYtaHBhcmFtcy1zZXNzaW9uLWdyb3VwLWRldGFpbHMKICAgICAgICAgIGJhY2tlbmQ9IltbYmFja2VuZF1dIgogICAgICAgICAgZXhwZXJpbWVudC1uYW1lPSJbW2V4cGVyaW1lbnROYW1lXV0iCiAgICAgICAgICBzZXNzaW9uLWdyb3VwPSJbW2l0ZW1dXSIKICAgICAgICAgIHZpc2libGUtc2NoZW1hPSJbW3Zpc2libGVTY2hlbWFdXSIKICAgICAgICAgIGNsYXNzPSJzZXNzaW9uLWdyb3VwLWRldGFpbHMiCiAgICAgICAgPgogICAgICAgIDwvdGYtaHBhcmFtcy1zZXNzaW9uLWdyb3VwLWRldGFpbHM+CiAgICAgIDwvdGVtcGxhdGU+CiAgICA8L3ZhYWRpbi1ncmlkPgoKICAgIDxzdHlsZT4KICAgICAgOmhvc3QgewogICAgICAgIGRpc3BsYXk6IGlubGluZTsKICAgICAgfQogICAgICAudGFibGUtY2VsbCB7CiAgICAgICAgd2hpdGUtc3BhY2U6IG5vd3JhcDsKICAgICAgICB0ZXh0LW92ZXJmbG93OiBlbGxpcHNpczsKICAgICAgICBvdmVyZmxvdzogaGlkZGVuOwogICAgICB9CiAgICAgIC50YWJsZS1oZWFkZXIgewogICAgICAgIC8qIGxpbmUtYnJlYWsgb3ZlcmZsb3dpbmcgY29sdW1uIGhlYWRlcnMgKi8KICAgICAgICB3aGl0ZS1zcGFjZTogbm9ybWFsOwogICAgICAgIG92ZXJmbG93LXdyYXA6IGJyZWFrLXdvcmQ7CiAgICAgIH0KICAgICAgLnNlc3Npb24tZ3JvdXAtdGFibGUgewogICAgICAgIGhlaWdodDogMTAwJTsKICAgICAgfQogICAgICAuc2Vzc2lvbi1ncm91cC1kZXRhaWxzIHsKICAgICAgICBoZWlnaHQ6IDM2MHB4OwogICAgICAgIG92ZXJmbG93LXk6IGF1dG87CiAgICAgIH0KICAgIDwvc3R5bGU+CiAgYCx0KFtvKHt0eXBlOk9iamVjdH0pLGUoImRlc2lnbjp0eXBlIixPYmplY3QpXSxTRHQucHJvdG90eXBlLCJ2aXNpYmxlU2NoZW1hIix2b2lkIDApLHQoW28oe3R5cGU6QXJyYXl9KSxlKCJkZXNpZ246dHlwZSIsQXJyYXkpXSxTRHQucHJvdG90eXBlLCJzZXNzaW9uR3JvdXBzIix2b2lkIDApLHQoW28oe3R5cGU6Qm9vbGVhbn0pLGUoImRlc2lnbjp0eXBlIixCb29sZWFuKV0sU0R0LnByb3RvdHlwZSwiZW5hYmxlU2hvd01ldHJpY3MiLHZvaWQgMCksdChbbyh7dHlwZTpPYmplY3R9KSxlKCJkZXNpZ246dHlwZSIsT2JqZWN0KV0sU0R0LnByb3RvdHlwZSwiYmFja2VuZCIsdm9pZCAwKSx0KFtvKHt0eXBlOlN0cmluZ30pLGUoImRlc2lnbjp0eXBlIixTdHJpbmcpXSxTRHQucHJvdG90eXBlLCJleHBlcmltZW50TmFtZSIsdm9pZCAwKSx0KFthKCJ2aXNpYmxlU2NoZW1hLioiLCJzZXNzaW9uR3JvdXBzLioiKSxlKCJkZXNpZ246dHlwZSIsRnVuY3Rpb24pLGUoImRlc2lnbjpwYXJhbXR5cGVzIixbXSksZSgiZGVzaWduOnJldHVybnR5cGUiLHZvaWQgMCldLFNEdC5wcm90b3R5cGUsIl92aXNpYmxlU2NoZW1hT3JTZXNzaW9uR3JvdXBzQ2hhbmdlZCIsbnVsbCksU0R0PXQoW2koInRmLWhwYXJhbXMtdGFibGUtdmlldyIpXSxTRHQpO2xldCBNRHQ9Y2xhc3MgZXh0ZW5kcyB5ZXtjb25zdHJ1Y3Rvcigpe3N1cGVyKC4uLmFyZ3VtZW50cyksdGhpcy5zZXNzaW9uR3JvdXA9bnVsbCx0aGlzLnZpc2libGVTY2hlbWE9bnVsbH1fcHJvcGVydGllc0FyZVBvcHVsYXRlZCh0LGUpe3JldHVybiBudWxsIT10JiZudWxsIT1lfV9zaW5nbGV0b25TZXNzaW9uR3JvdXBzKHQpe3JldHVybiBudWxsPT10P1tdOlt0XX19O2Z1bmN0aW9uIEVEdCh0LGUsbil7ZnVuY3Rpb24gaSgpe2lmKDA9PT10Lmxlbmd0aClyZXR1cm5bMSwyXTtjb25zdFtlLG5dPUxsKHQpO3JldHVybiBlIT09bj9bZSxuXTplPjA/Wy41KmUsMS41KmVdOmU8MD9bMS41KmUsLjUqZV06Wy0xLDFdfWlmKCJMSU5FQVIiPT09bilyZXR1cm4gek0oKS5kb21haW4oaSgpKS5yYW5nZShbZSwwXSk7aWYoIkxPRyI9PT1uKXtjb25zdCBuPWkoKTtyZXR1cm4gblswXTw9MCYmblsxXT49MD9FRHQodCxlLCJMSU5FQVIiKTpXTSgpLmRvbWFpbihuKS5yYW5nZShbZSwwXSl9aWYoIlFVQU5USUxFIj09PW4pe2NvbnN0IG49MjAsaT16bChuKS5tYXAoKHQ9PmUtdCplLyhuLTEpKSk7cmV0dXJuIDA9PT10Lmxlbmd0aCYmKHQ9WzFdKSx0RSgpLmRvbWFpbih3ZS51bmlxKHQpKS5yYW5nZShpKX1pZigiTk9OX05VTUVSSUMiPT09bilyZXR1cm4gU00oKS5kb21haW4od2UudW5pcSh0LnNvcnQoKSkpLnJhbmdlKFtlLDBdKS5wYWRkaW5nKC4xKTt0aHJvdyBSYW5nZUVycm9yKCJVbmtub3duIHNjYWxlOiAiK24pfXZhciBURHQsQUR0O01EdC50ZW1wbGF0ZT1fZWAKICAgIDwhLS0gSWYgc2Vzc2lvbkdyb3VwIG9yIHZpc2libGVTY2hlbWEgYXJlIG5vdCBwb3B1bGF0ZWQsIGRvIG5vdCBkaXNwbGF5CiAgICAgICAgIGFueXRoaW5nLgogICAgICAtLT4KICAgIDx0ZW1wbGF0ZQogICAgICBpcz0iZG9tLWlmIgogICAgICBpZj0iW1tfcHJvcGVydGllc0FyZVBvcHVsYXRlZCh2aXNpYmxlU2NoZW1hLCBzZXNzaW9uR3JvdXApXV0iCiAgICA+CiAgICAgIDwhLS0gRGlzcGxheSBvbmUgcm93IHdpdGhvdXQgYSAic2hvdy1tZXRyaWNzIiBjb2x1bW4gLS0+CiAgICAgIDx0Zi1ocGFyYW1zLXRhYmxlLXZpZXcKICAgICAgICB2aXNpYmxlLXNjaGVtYT0iW1t2aXNpYmxlU2NoZW1hXV0iCiAgICAgICAgc2Vzc2lvbi1ncm91cHM9IltbX3NpbmdsZXRvblNlc3Npb25Hcm91cHMoc2Vzc2lvbkdyb3VwKV1dIgogICAgICA+CiAgICAgIDwvdGYtaHBhcmFtcy10YWJsZS12aWV3PgogICAgPC90ZW1wbGF0ZT4KICAgIDx0ZW1wbGF0ZQogICAgICBpcz0iZG9tLWlmIgogICAgICBpZj0iW1shX3Byb3BlcnRpZXNBcmVQb3B1bGF0ZWQodmlzaWJsZVNjaGVtYSwgc2Vzc2lvbkdyb3VwKV1dIgogICAgPgogICAgICA8ZGl2PkNsaWNrIG9yIGhvdmVyIG92ZXIgYSBzZXNzaW9uIGdyb3VwIHRvIGRpc3BsYXkgaXRzIHZhbHVlcyBoZXJlLjwvZGl2PgogICAgPC90ZW1wbGF0ZT4KCiAgICA8c3R5bGU+CiAgICAgIDpob3N0IHsKICAgICAgICBkaXNwbGF5OiBibG9jazsKICAgICAgfQogICAgPC9zdHlsZT4KICBgLHQoW28oe3R5cGU6T2JqZWN0fSksZSgiZGVzaWduOnR5cGUiLE9iamVjdCldLE1EdC5wcm90b3R5cGUsInNlc3Npb25Hcm91cCIsdm9pZCAwKSx0KFtvKHt0eXBlOk9iamVjdH0pLGUoImRlc2lnbjp0eXBlIixPYmplY3QpXSxNRHQucHJvdG90eXBlLCJ2aXNpYmxlU2NoZW1hIix2b2lkIDApLE1EdD10KFtpKCJ0Zi1ocGFyYW1zLXNlc3Npb24tZ3JvdXAtdmFsdWVzIildLE1EdCksKGZ1bmN0aW9uKHQpe3QuTElORUFSPSJMSU5FQVIiLHQuTE9HPSJMT0ciLHQuUVVBTlRJTEU9IlFVQU5USUxFIix0Lk5PTl9OVU1FUklDPSJOT05fTlVNRVJJQyJ9KShURHR8fChURHQ9e30pKTtjbGFzcyBDRHR7aXNQYXNzaW5nKHQpe3JldHVybiEwfX1jbGFzcyBrRHR7Y29uc3RydWN0b3IodCxlLG4saSl7dGhpcy5fbG93ZXI9dCx0aGlzLl91cHBlcj1lLHRoaXMuX2xvd2VyT3Blbj1uLHRoaXMuX3VwcGVyT3Blbj1pfWlzUGFzc2luZyh0KXtjb25zdCBlPXQ7cmV0dXJuIHRoaXMuX2JlZm9yZSh0aGlzLl9sb3dlcixlLCF0aGlzLl9sb3dlck9wZW4pJiZ0aGlzLl9iZWZvcmUoZSx0aGlzLl91cHBlciwhdGhpcy5fdXBwZXJPcGVuKX1fYmVmb3JlKHQsZSxuKXtyZXR1cm4gbj90PD1lOnQ8ZX19Y2xhc3MgTER0e2NvbnN0cnVjdG9yKHQpe3RoaXMuX2RvbWFpblNldD10fWlzUGFzc2luZyh0KXtyZXR1cm4tMSE9PXRoaXMuX2RvbWFpblNldC5maW5kSW5kZXgoKGU9PmU9PT10KSl9fWNsYXNzIFBEdHtjb25zdHJ1Y3Rvcih0LGUsbixpKXt0aGlzLl9zdmdQcm9wcz10LHRoaXMuX3NjaGVtYT1lLHRoaXMuX2ludGVyYWN0aW9uTWFuYWdlcj1uLHRoaXMuX2NvbEluZGV4PWksdGhpcy5faXNEaXNwbGF5ZWQ9ITEsdGhpcy5feVNjYWxlPW51bGwsdGhpcy5fc2NhbGVUeXBlPW51bGwsdGhpcy5zZXRCcnVzaFNlbGVjdGlvbihudWxsKX1jb2xJbmRleCgpe3JldHVybiB0aGlzLl9jb2xJbmRleH15U2NhbGUoKXtyZXR1cm4gdGhpcy5feVNjYWxlfXNjYWxlVHlwZSgpe3JldHVybiB0aGlzLl9zY2FsZVR5cGV9YnJ1c2hTZWxlY3Rpb24oKXtyZXR1cm4gdGhpcy5fYnJ1c2hTZWxlY3Rpb259aXNEaXNwbGF5ZWQoKXtyZXR1cm4gdGhpcy5faXNEaXNwbGF5ZWR9c2V0QnJ1c2hTZWxlY3Rpb24odCl7dGhpcy5fYnJ1c2hTZWxlY3Rpb249dCx0aGlzLl9icnVzaEZpbHRlcj10aGlzLl9idWlsZEJydXNoRmlsdGVyKHRoaXMuYnJ1c2hTZWxlY3Rpb24oKSx0aGlzLnNjYWxlVHlwZSgpLHRoaXMueVNjYWxlKCkpfXNldERvbWFpbkFuZFNjYWxlKHQsZSl7dGhpcy5fc2NhbGVUeXBlPWUsdGhpcy5feVNjYWxlPUVEdCh0LnNsaWNlKCksdGhpcy5fc3ZnUHJvcHMuaGVpZ2h0LHRoaXMuc2NhbGVUeXBlKCkpLHRoaXMuX2JydXNoRmlsdGVyPXRoaXMuX2J1aWxkQnJ1c2hGaWx0ZXIodGhpcy5icnVzaFNlbGVjdGlvbigpLHRoaXMuc2NhbGVUeXBlKCksdGhpcy55U2NhbGUoKSl9YnJ1c2hGaWx0ZXIoKXtyZXR1cm4gdGhpcy5fYnJ1c2hGaWx0ZXJ9dXBkYXRlRE9NKHQpe2xldCBlPWFjKHRoaXMueVNjYWxlKCkpO3RoaXMuc2NhbGVUeXBlKCk9PT1URHQuUVVBTlRJTEUmJihlPWUudGlja1ZhbHVlcyh0aGlzLnlTY2FsZSgpLnF1YW50aWxlcygpKS50aWNrRm9ybWF0KHB5KCItLjZnIikpKTtjb25zdCBuPVN1KHQpO24uc2VsZWN0QWxsKCJnIikucmVtb3ZlKCksbi5hcHBlbmQoImciKS5jbGFzc2VkKCJheGlzIiwhMCkuY2FsbChlKS5hcHBlbmQoInRleHQiKS5jbGFzc2VkKCJheGlzLXRpdGxlIiwhMCkuc3R5bGUoImN1cnNvciIsIm1vdmUiKS5zdHlsZSgidGV4dC1hbmNob3IiLCJtaWRkbGUiKS5hdHRyKCJ5IiwtOSkudGV4dCgodD0+RVJ0KHRoaXMuX3NjaGVtYSx0KSkpLG4uY2FsbCh2aCgpLm9uKCJzdGFydCIsKCgpPT57dC5zZXRBdHRyaWJ1dGUoImlzLWRyYWdnaW5nIiwiIiksdGhpcy5faW50ZXJhY3Rpb25NYW5hZ2VyLm9uRHJhZ1N0YXJ0KHRoaXMuY29sSW5kZXgoKSl9KSkub24oImRyYWciLCgoKT0+dGhpcy5faW50ZXJhY3Rpb25NYW5hZ2VyLm9uRHJhZyh1dS54KSkpLm9uKCJlbmQiLCgoKT0+e3RoaXMuX2ludGVyYWN0aW9uTWFuYWdlci5vbkRyYWdFbmQoKSx0LnJlbW92ZUF0dHJpYnV0ZSgiaXMtZHJhZ2dpbmciKX0pKSk7Y29uc3QgaT1LbSgpLmV4dGVudChbWy04LDBdLFs4LHRoaXMuX3N2Z1Byb3BzLmhlaWdodCsxXV0pLm9uKCJzdGFydCIsKCgpPT57TkR0KHV1KSYmKHQuc2V0QXR0cmlidXRlKCJpcy1icnVzaGluZyIsIiIpLHRoaXMuX2ludGVyYWN0aW9uTWFuYWdlci5vbkJydXNoQ2hhbmdlZCh0aGlzLmNvbEluZGV4KCksdXUuc2VsZWN0aW9uKSl9KSkub24oImJydXNoIiwoKCk9PntORHQodXUpJiZ0aGlzLl9pbnRlcmFjdGlvbk1hbmFnZXIub25CcnVzaENoYW5nZWQodGhpcy5jb2xJbmRleCgpLHV1LnNlbGVjdGlvbil9KSkub24oImVuZCIsKCgpPT57TkR0KHV1KSYmKHRoaXMuX2ludGVyYWN0aW9uTWFuYWdlci5vbkJydXNoQ2hhbmdlZCh0aGlzLmNvbEluZGV4KCksdXUuc2VsZWN0aW9uKSx0LnJlbW92ZUF0dHJpYnV0ZSgiaXMtYnJ1c2hpbmciKSl9KSkscj1TdSh0KS5hcHBlbmQoImciKS5jbGFzc2VkKCJicnVzaCIsITApO3IuY2FsbChpKSxpLm1vdmUocix0aGlzLmJydXNoU2VsZWN0aW9uKCkpfXNldERpc3BsYXllZCh0KXt0aGlzLl9pc0Rpc3BsYXllZD10fV9idWlsZEJydXNoRmlsdGVyKHQsZSxuKXtpZihudWxsPT09dClyZXR1cm4gbmV3IENEdDtpZihudWxsPT09ZSlyZXR1cm4gY29uc29sZS5lcnJvcigiU2NhbGUgdHlwZSBpcyBudWxsLCBidXQgYnJ1c2hTZWxlY3Rpb24gaXNuJ3Q6ICIsdCksbmV3IENEdDtzd2l0Y2goZSl7Y2FzZSBURHQuTElORUFSOmNhc2UgVER0LkxPRzp7Y29uc3RbZSxpXT0oZnVuY3Rpb24gaSh0LGUsbil7cmV0dXJuW3QuaW52ZXJ0KGUpLHQuaW52ZXJ0KG4pXS5zb3J0KCgodCxlKT0+dC1lKSl9KShuLHRbMF0sdFsxXSk7cmV0dXJuIG5ldyBrRHQoZSxpLCExLCExKX1jYXNlIFREdC5RVUFOVElMRTp7Y29uc3RbZSxpXT0oZnVuY3Rpb24gcih0LGUsbil7Y29uc3QgaT10LnJhbmdlKCkscj1pLmZpbHRlcigodD0+ZTw9dCYmdDw9bikpLm1hcCgoZT0+e2NvbnN0IG49dC5pbnZlcnRFeHRlbnQoZSk7cmV0dXJuIGU9PT1pW2kubGVuZ3RoLTFdP1tuWzBdLG5bMV0rMV06bn0pKTtyZXR1cm4gMD09ci5sZW5ndGg/WzAsMF06TGwocWwocikpfSkobix0WzBdLHRbMV0pO3JldHVybiBuZXcga0R0KGUsaSwhMSwhMCl9Y2FzZSBURHQuTk9OX05VTUVSSUM6cmV0dXJuIG5ldyBMRHQoKGZ1bmN0aW9uIG8odCxlLG4pe3JldHVybiB0LmRvbWFpbigpLmZpbHRlcigoaT0+e2NvbnN0IHI9dChpKTtyZXR1cm4gZTw9ciYmcjw9bn0pKX0pKG4sdFswXSx0WzFdKSl9cmV0dXJuIGNvbnNvbGUuZXJyb3IoIlVua25vd24gc2NhbGUgdHlwZTogIixlKSxuZXcgQ0R0fX1jbGFzcyBJRHR7Y29uc3RydWN0b3IodCxlLG4pe3RoaXMuX3N2Z1Byb3BzPXQsdGhpcy5fc2NoZW1hPWUsdGhpcy5fYXhlcz10aGlzLl9jcmVhdGVBeGVzKG4pLHRoaXMuX3N0YXRpb25hcnlBeGVzUG9zaXRpb25zPVNNKCkucmFuZ2UoWzEsdGhpcy5fc3ZnUHJvcHMud2lkdGgtMV0pLnBhZGRpbmcoLjUpLHRoaXMuX2RyYWdnZWRBeGlzPW51bGwsdGhpcy5fc3ZnUHJvcHMuc3ZnRy5zZWxlY3RBbGwoImcuYXhpcy1wYXJlbnQiKS5yZW1vdmUoKSx0aGlzLl9wYXJlbnRzU2VsPXRoaXMuX3N2Z1Byb3BzLnN2Z0cuc2VsZWN0QWxsKCIuYXhpcy1wYXJlbnQiKX11cGRhdGVBeGVzKHQsZSl7Y29uc29sZS5hc3NlcnQoIXRoaXMuaXNBeGlzRHJhZ2dpbmcoKSk7Y29uc3Qgbj1uZXcgU2V0O3QuY29sdW1ucy5mb3JFYWNoKCh0PT57Y29uc3QgaT10LmFic29sdXRlSW5kZXg7bGV0IHI9dGhpcy5fYXhlc1tpXTtyLnNldERpc3BsYXllZCghMCk7Y29uc3Qgbz1lLm1hcCgodD0+TlJ0KHRoaXMuX3NjaGVtYSx0LGkpKSk7ci5zZXREb21haW5BbmRTY2FsZShvLHQuc2NhbGUpLG4uYWRkKGkpfSkpLHRoaXMuX2F4ZXMuZm9yRWFjaCgodD0+e24uaGFzKHQuY29sSW5kZXgoKSl8fHQuc2V0RGlzcGxheWVkKCExKX0pKSx0aGlzLl91cGRhdGVTdGF0aW9uYXJ5QXhlc1Bvc2l0aW9ucyhuKSx0aGlzLl9wYXJlbnRzU2VsPXRoaXMuX3BhcmVudHNTZWwuZGF0YShBcnJheS5mcm9tKG4pLCh0PT50KSksdGhpcy5fcGFyZW50c1NlbC5leGl0KCkucmVtb3ZlKCksdGhpcy5fcGFyZW50c1NlbD10aGlzLl9wYXJlbnRzU2VsLmVudGVyKCkuYXBwZW5kKCJnIikuY2xhc3NlZCgiYXhpcy1wYXJlbnQiLCEwKS5tZXJnZSh0aGlzLl9wYXJlbnRzU2VsKTtjb25zdCBpPXRoaXM7dGhpcy5fcGFyZW50c1NlbC5jYWxsKCh0PT50aGlzLl91cGRhdGVBeGVzUG9zaXRpb25zSW5ET00odCkpKS5lYWNoKChmdW5jdGlvbih0KXtpLl9heGVzW3RdLnVwZGF0ZURPTSh0aGlzKX0pKX1tYXBWaXNpYmxlQXhlcyh0KXtyZXR1cm4gdGhpcy5fc3RhdGlvbmFyeUF4ZXNQb3NpdGlvbnMuZG9tYWluKCkubWFwKChlPT50KHRoaXMuZ2V0QXhpc1Bvc2l0aW9uKGUpLHRoaXMuX2F4ZXNbZV0pKSl9YWxsVmlzaWJsZUF4ZXNTYXRpc2Z5KHQpe3JldHVybiB0aGlzLl9zdGF0aW9uYXJ5QXhlc1Bvc2l0aW9ucy5kb21haW4oKS5ldmVyeSgoZT0+dCh0aGlzLmdldEF4aXNQb3NpdGlvbihlKSx0aGlzLl9heGVzW2VdKSkpfWdldEF4aXNGb3JDb2xJbmRleCh0KXtyZXR1cm4gdGhpcy5fYXhlc1t0XX1kcmFnU3RhcnQodCl7Y29uc29sZS5hc3NlcnQoIXRoaXMuaXNBeGlzRHJhZ2dpbmcoKSksY29uc29sZS5hc3NlcnQodGhpcy5fYXhlc1t0XS5pc0Rpc3BsYXllZCgpKSx0aGlzLl9kcmFnZ2VkQXhpcz10aGlzLl9heGVzW3RdLHRoaXMuX2RyYWdnZWRBeGlzUG9zaXRpb249dGhpcy5fc3RhdGlvbmFyeUF4ZXNQb3NpdGlvbnModCl9ZHJhZyh0KXt0PU1hdGgubWluKE1hdGgubWF4KHQsMCksdGhpcy5fc3ZnUHJvcHMud2lkdGgpLHRoaXMuX2RyYWdnZWRBeGlzUG9zaXRpb249dDtsZXQgZT10aGlzLl9zdGF0aW9uYXJ5QXhlc1Bvc2l0aW9ucy5kb21haW4oKTtlLnNvcnQoKCh0LGUpPT50aGlzLmdldEF4aXNQb3NpdGlvbih0KS10aGlzLmdldEF4aXNQb3NpdGlvbihlKSkpLHRoaXMuX3N0YXRpb25hcnlBeGVzUG9zaXRpb25zLmRvbWFpbihlKSx0aGlzLl91cGRhdGVBeGVzUG9zaXRpb25zSW5ET00odGhpcy5fcGFyZW50c1NlbCl9ZHJhZ0VuZCh0KXtjb25zb2xlLmFzc2VydCh0aGlzLmlzQXhpc0RyYWdnaW5nKCkpLHRoaXMuX2RyYWdnZWRBeGlzUG9zaXRpb249bnVsbCx0aGlzLl9kcmFnZ2VkQXhpcz1udWxsLHRoaXMuX3VwZGF0ZUF4ZXNQb3NpdGlvbnNJbkRPTSh0aGlzLl9wYXJlbnRzU2VsLnRyYW5zaXRpb24oKS5kdXJhdGlvbih0KSl9aXNBeGlzRHJhZ2dpbmcoKXtyZXR1cm4gbnVsbCE9PXRoaXMuX2RyYWdnZWRBeGlzfWdldEF4aXNQb3NpdGlvbih0KXtyZXR1cm4gbnVsbCE9PXRoaXMuX2RyYWdnZWRBeGlzJiZ0aGlzLl9kcmFnZ2VkQXhpcy5jb2xJbmRleCgpPT09dD90aGlzLl9kcmFnZ2VkQXhpc1Bvc2l0aW9uOnRoaXMuX3N0YXRpb25hcnlBeGVzUG9zaXRpb25zKHQpfV91cGRhdGVTdGF0aW9uYXJ5QXhlc1Bvc2l0aW9ucyh0KXtjb25zdCBlPXRoaXMuX3N0YXRpb25hcnlBeGVzUG9zaXRpb25zLmRvbWFpbigpLmZpbHRlcigoZT0+dC5oYXMoZSkpKSxuPUFycmF5LmZyb20obmV3IFNldChbLi4uZSwuLi5BcnJheS5mcm9tKHQpXSkpO3RoaXMuX3N0YXRpb25hcnlBeGVzUG9zaXRpb25zLmRvbWFpbihuKX1fdXBkYXRlQXhlc1Bvc2l0aW9uc0luRE9NKHQpe3QuYXR0cigidHJhbnNmb3JtIiwodD0+WVJ0KHRoaXMuZ2V0QXhpc1Bvc2l0aW9uKHQpKSkpfV9jcmVhdGVBeGVzKHQpe3JldHVybiB6bChDUnQodGhpcy5fc2NoZW1hKSkubWFwKChlPT5uZXcgUER0KHRoaXMuX3N2Z1Byb3BzLHRoaXMuX3NjaGVtYSx0LGUpKSl9fWZ1bmN0aW9uIE5EdCh0KXtyZXR1cm4gbnVsbCE9PXQuc291cmNlRXZlbnR9IShmdW5jdGlvbih0KXt0W3QuRk9SRUdST1VORD0wXT0iRk9SRUdST1VORCIsdFt0LkJBQ0tHUk9VTkQ9MV09IkJBQ0tHUk9VTkQifSkoQUR0fHwoQUR0PXt9KSk7Y2xhc3MgT0R0e2NvbnN0cnVjdG9yKHQpe3ZvaWQgMD09PXQmJih0PXNoKG51bGwpKSxjb25zb2xlLmFzc2VydCh0LnNpemUoKTw9MSksdGhpcy5fc2Vzc2lvbkdyb3VwU2VsPXR9c2Vzc2lvbkdyb3VwKCl7cmV0dXJuIDE9PT10aGlzLl9zZXNzaW9uR3JvdXBTZWwuc2l6ZSgpP3RoaXMuX3Nlc3Npb25Hcm91cFNlbC5kYXR1bSgpOm51bGx9aXNOdWxsKCl7cmV0dXJuIG51bGw9PT10aGlzLnNlc3Npb25Hcm91cCgpfXNlbGVjdGlvbigpe3JldHVybiB0aGlzLl9zZXNzaW9uR3JvdXBTZWx9ZXF1YWxzVG8odCl7cmV0dXJuIHRoaXMuaXNOdWxsKCk/dC5pc051bGwoKTohdC5pc051bGwoKSYmdC5zZXNzaW9uR3JvdXAoKS5uYW1lPT10aGlzLnNlc3Npb25Hcm91cCgpLm5hbWV9fWNsYXNzIFJEdHtjb25zdHJ1Y3Rvcih0LGUsbil7dGhpcy5fc3ZnUHJvcHM9dCx0aGlzLl9zY2hlbWE9ZSx0aGlzLl9heGVzQ29sbGVjdGlvbj1uLHRoaXMuX3Nlc3Npb25Hcm91cHM9W10sdGhpcy5fc3ZnUHJvcHMuc3ZnRy5zZWxlY3RBbGwoImcuYmFja2dyb3VuZCIpLnJlbW92ZSgpLHRoaXMuX3N2Z1Byb3BzLnN2Z0cuc2VsZWN0QWxsKCJnLmZvcmVncm91bmQiKS5yZW1vdmUoKSx0aGlzLl9iZ1BhdGhzU2VsPXRoaXMuX3N2Z1Byb3BzLnN2Z0cuYXBwZW5kKCJnIikuY2xhc3NlZCgiYmFja2dyb3VuZCIsITApLnNlbGVjdEFsbCgicGF0aCIpLHRoaXMuX2ZnUGF0aHNTZWw9dGhpcy5fc3ZnUHJvcHMuc3ZnRy5hcHBlbmQoImciKS5jbGFzc2VkKCJmb3JlZ3JvdW5kIiwhMCkuc2VsZWN0QWxsKCJwYXRoIiksdGhpcy5fdXBkYXRlVmlzaWJsZUZnUGF0aHNTZWwoKSx0aGlzLl9wZWFrZWRTZXNzaW9uR3JvdXBIYW5kbGU9bmV3IE9EdCx0aGlzLl9zZWxlY3RlZFNlc3Npb25Hcm91cEhhbmRsZT1uZXcgT0R0LHRoaXMuX2QzbGluZT1WaygpLmN1cnZlKEJrKX1nZXRTZXNzaW9uR3JvdXBIYW5kbGUodCl7cmV0dXJuIG51bGw9PXQ/bmV3IE9EdDpuZXcgT0R0KHRoaXMuX2ZnUGF0aHNTZWwuZmlsdGVyKChlPT5lLm5hbWU9PT10Lm5hbWUpKSl9aGlkZUJhY2tncm91bmRMaW5lcygpe3RoaXMuX2JnUGF0aHNTZWwuYXR0cigidmlzaWJpbGl0eSIsImhpZGRlbiIpfXNob3dCYWNrZ3JvdW5kTGluZXMoKXt0aGlzLl9iZ1BhdGhzU2VsLmF0dHIoInZpc2liaWxpdHkiLG51bGwpfXBlYWtlZFNlc3Npb25Hcm91cEhhbmRsZSgpe3JldHVybiB0aGlzLl9wZWFrZWRTZXNzaW9uR3JvdXBIYW5kbGV9c2VsZWN0ZWRTZXNzaW9uR3JvdXBIYW5kbGUoKXtyZXR1cm4gdGhpcy5fc2VsZWN0ZWRTZXNzaW9uR3JvdXBIYW5kbGV9cmVjb21wdXRlQ29udHJvbFBvaW50cyh0LGU9MCl7KHQ9PT1BRHQuRk9SRUdST1VORD90aGlzLl9mZ1BhdGhzU2VsOnRoaXMuX2JnUGF0aHNTZWwpLnRyYW5zaXRpb24oKS5kdXJhdGlvbihlKS5hdHRyKCJkIiwodD0+dGhpcy5fcGF0aERBdHRyaWJ1dGUodCkpKSx0PT09QUR0LkZPUkVHUk9VTkQmJndpbmRvdy5zZXRUaW1lb3V0KCgoKT0+e2NvbnN0IHQ9dGhpczt0aGlzLl9mZ1BhdGhzU2VsLmVhY2goKGZ1bmN0aW9uKGUpe3QuX3NldENvbnRyb2xQb2ludHNQcm9wZXJ0eSh0aGlzLGUpfSkpfSkpfXJlY29tcHV0ZUZvcmVncm91bmRMaW5lc1Zpc2liaWxpdHkoKXt0aGlzLl9mZ1BhdGhzU2VsLmNsYXNzZWQoImludmlzaWJsZS1wYXRoIiwodD0+IXRoaXMuX2F4ZXNDb2xsZWN0aW9uLmFsbFZpc2libGVBeGVzU2F0aXNmeSgoKGUsbik9Pm4uYnJ1c2hGaWx0ZXIoKS5pc1Bhc3NpbmcoTlJ0KHRoaXMuX3NjaGVtYSx0LG4uY29sSW5kZXgoKSkpKSkpKSx0aGlzLl91cGRhdGVWaXNpYmxlRmdQYXRoc1NlbCgpfXNldEZvcmVncm91bmRMaW5lc0NvbG9yKHQsZSxuKXtjb25zdCBpPXRoaXMuX2NyZWF0ZUxpbmVDb2xvckZ1bmN0aW9uKHQsZSxuKTt0aGlzLl9mZ1BhdGhzU2VsLmF0dHIoInN0cm9rZSIsaSl9cmVkcmF3KHQsZSxuLGkpe2NvbnN0IHI9dGhpcy5fcGVha2VkU2Vzc2lvbkdyb3VwSGFuZGxlLnNlc3Npb25Hcm91cCgpLG89dGhpcy5fc2VsZWN0ZWRTZXNzaW9uR3JvdXBIYW5kbGUuc2Vzc2lvbkdyb3VwKCk7dGhpcy5fc2Vzc2lvbkdyb3Vwcz10LHRoaXMuX2ZnUGF0aHNTZWw9dGhpcy5fcmVjb21wdXRlUGF0aFNlbGVjdGlvbih0aGlzLl9mZ1BhdGhzU2VsKSx0aGlzLl9iZ1BhdGhzU2VsPXRoaXMuX3JlY29tcHV0ZVBhdGhTZWxlY3Rpb24odGhpcy5fYmdQYXRoc1NlbCksdGhpcy5fcGVha2VkU2Vzc2lvbkdyb3VwSGFuZGxlPXRoaXMuZ2V0U2Vzc2lvbkdyb3VwSGFuZGxlKHIpLHRoaXMuX3NlbGVjdGVkU2Vzc2lvbkdyb3VwSGFuZGxlPXRoaXMuZ2V0U2Vzc2lvbkdyb3VwSGFuZGxlKG8pLHRoaXMucmVjb21wdXRlQ29udHJvbFBvaW50cyhBRHQuRk9SRUdST1VORCksdGhpcy5yZWNvbXB1dGVDb250cm9sUG9pbnRzKEFEdC5CQUNLR1JPVU5EKSx0aGlzLnJlY29tcHV0ZUZvcmVncm91bmRMaW5lc1Zpc2liaWxpdHkoKSx0aGlzLnNldEZvcmVncm91bmRMaW5lc0NvbG9yKGUsbixpKX11cGRhdGVQZWFrZWRTZXNzaW9uR3JvdXAodCl7dGhpcy5fcGVha2VkU2Vzc2lvbkdyb3VwSGFuZGxlLnNlbGVjdGlvbigpLmNsYXNzZWQoInBlYWtlZC1wYXRoIiwhMSksdGhpcy5fcGVha2VkU2Vzc2lvbkdyb3VwSGFuZGxlPXQsdGhpcy5fcGVha2VkU2Vzc2lvbkdyb3VwSGFuZGxlLnNlbGVjdGlvbigpLmNsYXNzZWQoInBlYWtlZC1wYXRoIiwhMCl9Y2xlYXJQZWFrZWRTZXNzaW9uR3JvdXAoKXt0aGlzLnVwZGF0ZVBlYWtlZFNlc3Npb25Hcm91cChuZXcgT0R0KX11cGRhdGVTZWxlY3RlZFNlc3Npb25Hcm91cCh0KXt0aGlzLl9zZWxlY3RlZFNlc3Npb25Hcm91cEhhbmRsZS5zZWxlY3Rpb24oKS5jbGFzc2VkKCJzZWxlY3RlZC1wYXRoIiwhMSksdGhpcy5fc2VsZWN0ZWRTZXNzaW9uR3JvdXBIYW5kbGU9dCx0aGlzLl9zZWxlY3RlZFNlc3Npb25Hcm91cEhhbmRsZS5zZWxlY3Rpb24oKS5jbGFzc2VkKCJzZWxlY3RlZC1wYXRoIiwhMCl9ZmluZENsb3Nlc3RTZXNzaW9uR3JvdXAodCxlKXtjb25zdCBuPXRoaXMuX2F4ZXNDb2xsZWN0aW9uLm1hcFZpc2libGVBeGVzKCgodCxlKT0+dCkpLGk9KGZ1bmN0aW9uIHIodCxlLG4saSl7aWYoZS5sZW5ndGg8MilyZXR1cm4gY29uc29sZS5lcnJvcigiTGVzcyB0aGFuIHR3byBheGVzIGluIHBhcmFsbGVsIGNvb3JkaW5hdGVzIHBsb3QuIiksbnVsbDtjb25zdCByPW5bMF0sbz1uWzFdO2lmKHI8PWVbMF18fHI+PWVbZS5sZW5ndGgtMV0pcmV0dXJuIG51bGw7Y29uc3QgYT13ZS5zb3J0ZWRJbmRleChlLHIpO2NvbnNvbGUuYXNzZXJ0KGE+MCksY29uc29sZS5hc3NlcnQoYTxlLmxlbmd0aCk7Y29uc3Qgcz1hLTE7bGV0IGw9bnVsbCxjPW51bGw7cmV0dXJuIHQuZm9yRWFjaCgodD0+e2NvbnN0IGU9KGZ1bmN0aW9uIG4odCxlLGksYSl7Y29uc3Qgcz10LWksbD1lLWEsYz1yLWksdT1vLWEsaD0ocypjK2wqdSkvKHMqcytsKmwpO3JldHVybiBoPD0wP0dSdChjLHUpOmg+PTE/R1J0KHQtcixlLW8pOkdSdChjLWgqcyx1LWgqbCl9KSh0LmNvbnRyb2xQb2ludHNbc11bMF0sdC5jb250cm9sUG9pbnRzW3NdWzFdLHQuY29udHJvbFBvaW50c1thXVswXSx0LmNvbnRyb2xQb2ludHNbYV1bMV0pO2U+aXx8KG51bGw9PT1sfHxlPGwpJiYobD1lLGM9dCl9KSksY30pKHRoaXMuX3Zpc2libGVGZ1BhdGhzU2VsLm5vZGVzKCksbixbdCxlXSwxMDApO3JldHVybiBudWxsPT09aT9uZXcgT0R0Om5ldyBPRHQoU3UoaSkpfV9jcmVhdGVMaW5lQ29sb3JGdW5jdGlvbih0LGUsbil7aWYobnVsbD09PXQpcmV0dXJuKCk9PiJyZWQiO2NvbnN0IGk9ek0oKS5kb21haW4oT1J0KHRoaXMuX3NjaGVtYSx0aGlzLl9zZXNzaW9uR3JvdXBzLHQpKS5yYW5nZShbZSxuXSkuaW50ZXJwb2xhdGUoY3ApO3JldHVybiBlPT5pKE5SdCh0aGlzLl9zY2hlbWEsZSx0KSl9X3JlY29tcHV0ZVBhdGhTZWxlY3Rpb24odCl7cmV0dXJuKHQ9dC5kYXRhKHRoaXMuX3Nlc3Npb25Hcm91cHMsKHQ9PnQubmFtZSkpKS5leGl0KCkucmVtb3ZlKCksdC5lbnRlcigpLmFwcGVuZCgicGF0aCIpLm1lcmdlKHQpfV9zZXRDb250cm9sUG9pbnRzUHJvcGVydHkodCxlKXt0LmNvbnRyb2xQb2ludHM9dGhpcy5fY29tcHV0ZUNvbnRyb2xQb2ludHMoZSl9X2NvbXB1dGVDb250cm9sUG9pbnRzKHQpe3JldHVybiB0aGlzLl9heGVzQ29sbGVjdGlvbi5tYXBWaXNpYmxlQXhlcygoKGUsbik9PltlLG4ueVNjYWxlKCkoTlJ0KHRoaXMuX3NjaGVtYSx0LG4uY29sSW5kZXgoKSkpXSkpfV9wYXRoREF0dHJpYnV0ZSh0KXtyZXR1cm4gdGhpcy5fZDNsaW5lKHRoaXMuX2NvbXB1dGVDb250cm9sUG9pbnRzKHQpKX1fdXBkYXRlVmlzaWJsZUZnUGF0aHNTZWwoKXt0aGlzLl92aXNpYmxlRmdQYXRoc1NlbD10aGlzLl9mZ1BhdGhzU2VsLmZpbHRlcigiOm5vdCguaW52aXNpYmxlLXBhdGgpIil9fWNsYXNzIHpEdHtjb25zdHJ1Y3Rvcih0LGUpe3RoaXMuc3ZnPVN1KHQpO2NvbnN0IG49MTAwKmUrMTArMTA7dGhpcy5zdmcuYXR0cigidmlld0JveCIsYDAgMCAke259IDI0MGApLHRoaXMuc3ZnLmF0dHIoInByZXNlcnZlQXNwZWN0UmF0aW8iLCJ4TWlkWU1pZCIpLHRoaXMuc3ZnLnN0eWxlKCJtaW4td2lkdGgiLG4rInB4IiksdGhpcy5zdmcuc3R5bGUoIm1pbi1oZWlnaHQiLCIyNDBweCIpLHRoaXMud2lkdGg9bi0xMC0xMCx0aGlzLmhlaWdodD0yMDAsdGhpcy5zdmdHPXRoaXMuc3ZnLmFwcGVuZCgiZyIpLmF0dHIoInRyYW5zZm9ybSIsWVJ0KDEwLDMwKSl9fWNsYXNzIEREdHtjb25zdHJ1Y3Rvcih0LGUsbixpKXt0aGlzLl9zdmdQcm9wcz10LHRoaXMuX3NjaGVtYT1lLHRoaXMuX3BlYWtlZFNlc3Npb25Hcm91cENoYW5nZWRDQj1uLHRoaXMuX3NlbGVjdGVkU2Vzc2lvbkdyb3VwQ2hhbmdlZENCPWksdGhpcy5fYXhlc0NvbGxlY3Rpb249bmV3IElEdCh0LGUsdGhpcyksdGhpcy5fbGluZXNDb2xsZWN0aW9uPW5ldyBSRHQodCxlLHRoaXMuX2F4ZXNDb2xsZWN0aW9uKSx0aGlzLl9zdmdQcm9wcy5zdmcub24oImNsaWNrIiwoKCk9PnRoaXMub25DbGljaygpKSkub24oIm1vdXNlbW92ZSBtb3VzZWVudGVyIiwoKCk9Pntjb25zdFt0LGVdPWFoKHRoaXMuX3N2Z1Byb3BzLnN2Z0cubm9kZSgpKTt0aGlzLm9uTW91c2VNb3ZlZCh0LGUpfSkpLm9uKCJtb3VzZWxlYXZlIiwoKCk9PnRoaXMub25Nb3VzZUxlYXZlKCkpKX1vbkRyYWdTdGFydCh0KXt0aGlzLl9heGVzQ29sbGVjdGlvbi5kcmFnU3RhcnQodCksdGhpcy5fbGluZXNDb2xsZWN0aW9uLmhpZGVCYWNrZ3JvdW5kTGluZXMoKX1vbkRyYWcodCl7dGhpcy5fYXhlc0NvbGxlY3Rpb24uZHJhZyh0KSx0aGlzLl9saW5lc0NvbGxlY3Rpb24ucmVjb21wdXRlQ29udHJvbFBvaW50cyhBRHQuRk9SRUdST1VORCl9b25EcmFnRW5kKCl7dGhpcy5fYXhlc0NvbGxlY3Rpb24uZHJhZ0VuZCg1MDApLHRoaXMuX2xpbmVzQ29sbGVjdGlvbi5yZWNvbXB1dGVDb250cm9sUG9pbnRzKEFEdC5GT1JFR1JPVU5ELDUwMCksd2luZG93LnNldFRpbWVvdXQoKCgpPT57dGhpcy5fbGluZXNDb2xsZWN0aW9uLnJlY29tcHV0ZUNvbnRyb2xQb2ludHMoQUR0LkJBQ0tHUk9VTkQpLHRoaXMuX2xpbmVzQ29sbGVjdGlvbi5zaG93QmFja2dyb3VuZExpbmVzKCl9KSw1MDApfW9uQnJ1c2hDaGFuZ2VkKHQsZSl7dGhpcy5fYXhlc0NvbGxlY3Rpb24uZ2V0QXhpc0ZvckNvbEluZGV4KHQpLnNldEJydXNoU2VsZWN0aW9uKGUpLHRoaXMuX2xpbmVzQ29sbGVjdGlvbi5yZWNvbXB1dGVGb3JlZ3JvdW5kTGluZXNWaXNpYmlsaXR5KCl9b25Nb3VzZU1vdmVkKHQsZSl7dGhpcy5fbGluZXNDb2xsZWN0aW9uLnVwZGF0ZVBlYWtlZFNlc3Npb25Hcm91cCh0aGlzLl9saW5lc0NvbGxlY3Rpb24uZmluZENsb3Nlc3RTZXNzaW9uR3JvdXAodCxlKSksdGhpcy5fcGVha2VkU2Vzc2lvbkdyb3VwQ2hhbmdlZENCKHRoaXMuX2xpbmVzQ29sbGVjdGlvbi5wZWFrZWRTZXNzaW9uR3JvdXBIYW5kbGUoKS5zZXNzaW9uR3JvdXAoKSl9b25Nb3VzZUxlYXZlKCl7dGhpcy5fbGluZXNDb2xsZWN0aW9uLnBlYWtlZFNlc3Npb25Hcm91cEhhbmRsZSgpLmlzTnVsbCgpfHwodGhpcy5fbGluZXNDb2xsZWN0aW9uLmNsZWFyUGVha2VkU2Vzc2lvbkdyb3VwKCksdGhpcy5fcGVha2VkU2Vzc2lvbkdyb3VwQ2hhbmdlZENCKG51bGwpKX1vbkNsaWNrKCl7dGhpcy5fbGluZXNDb2xsZWN0aW9uLnBlYWtlZFNlc3Npb25Hcm91cEhhbmRsZSgpLnNlc3Npb25Hcm91cCgpPT09dGhpcy5fbGluZXNDb2xsZWN0aW9uLnNlbGVjdGVkU2Vzc2lvbkdyb3VwSGFuZGxlKCkuc2Vzc2lvbkdyb3VwKCk/dGhpcy5fbGluZXNDb2xsZWN0aW9uLnVwZGF0ZVNlbGVjdGVkU2Vzc2lvbkdyb3VwKG5ldyBPRHQpOnRoaXMuX2xpbmVzQ29sbGVjdGlvbi51cGRhdGVTZWxlY3RlZFNlc3Npb25Hcm91cCh0aGlzLl9saW5lc0NvbGxlY3Rpb24ucGVha2VkU2Vzc2lvbkdyb3VwSGFuZGxlKCkpLHRoaXMuX3NlbGVjdGVkU2Vzc2lvbkdyb3VwQ2hhbmdlZENCKHRoaXMuX2xpbmVzQ29sbGVjdGlvbi5zZWxlY3RlZFNlc3Npb25Hcm91cEhhbmRsZSgpLnNlc3Npb25Hcm91cCgpKX1vbk9wdGlvbnNPclNlc3Npb25Hcm91cHNDaGFuZ2VkKHQsZSl7dGhpcy5fYXhlc0NvbGxlY3Rpb24udXBkYXRlQXhlcyh0LGUpO2NvbnN0IG49dGhpcy5fbGluZXNDb2xsZWN0aW9uLnBlYWtlZFNlc3Npb25Hcm91cEhhbmRsZSgpLGk9dGhpcy5fbGluZXNDb2xsZWN0aW9uLnNlbGVjdGVkU2Vzc2lvbkdyb3VwSGFuZGxlKCk7dGhpcy5fbGluZXNDb2xsZWN0aW9uLnJlZHJhdyhlLHZvaWQgMCE9PXQuY29sb3JCeUNvbHVtbkluZGV4P3QuY29sdW1uc1t0LmNvbG9yQnlDb2x1bW5JbmRleF0uYWJzb2x1dGVJbmRleDpudWxsLHQubWluQ29sb3IsdC5tYXhDb2xvciksbi5lcXVhbHNUbyh0aGlzLl9saW5lc0NvbGxlY3Rpb24ucGVha2VkU2Vzc2lvbkdyb3VwSGFuZGxlKCkpfHx0aGlzLl9wZWFrZWRTZXNzaW9uR3JvdXBDaGFuZ2VkQ0IodGhpcy5fbGluZXNDb2xsZWN0aW9uLnBlYWtlZFNlc3Npb25Hcm91cEhhbmRsZSgpLnNlc3Npb25Hcm91cCgpKSxpLmVxdWFsc1RvKHRoaXMuX2xpbmVzQ29sbGVjdGlvbi5zZWxlY3RlZFNlc3Npb25Hcm91cEhhbmRsZSgpKXx8dGhpcy5fc2VsZWN0ZWRTZXNzaW9uR3JvdXBDaGFuZ2VkQ0IodGhpcy5fbGluZXNDb2xsZWN0aW9uLnNlbGVjdGVkU2Vzc2lvbkdyb3VwSGFuZGxlKCkuc2Vzc2lvbkdyb3VwKCkpfXNjaGVtYSgpe3JldHVybiB0aGlzLl9zY2hlbWF9fWxldCBCRHQ9Y2xhc3MgZXh0ZW5kcyh0cih5ZSkpe2NvbnN0cnVjdG9yKCl7c3VwZXIoLi4uYXJndW1lbnRzKSx0aGlzLnNlbGVjdGVkU2Vzc2lvbkdyb3VwPW51bGwsdGhpcy5jbG9zZXN0U2Vzc2lvbkdyb3VwPW51bGwsdGhpcy5yZWRyYXdDb3VudD0wfV9vcHRpb25zT3JTZXNzaW9uR3JvdXBzQ2hhbmdlZCgpe2lmKCF0aGlzLm9wdGlvbnMpcmV0dXJuO2NvbnN0IHQ9dGhpcy5vcHRpb25zLmNvbmZpZ3VyYXRpb247aWYodm9pZCAwPT09dGhpcy5faW50ZXJhY3Rpb25NYW5hZ2VyfHwhd2UuaXNFcXVhbCh0aGlzLl9pbnRlcmFjdGlvbk1hbmFnZXIuc2NoZW1hKCksdC5zY2hlbWEpKXtTdSh0aGlzLiQuc3ZnKS5zZWxlY3RBbGwoIioiKS5yZW1vdmUoKTtjb25zdCBlPW5ldyB6RHQodGhpcy4kLnN2ZyxDUnQodC5zY2hlbWEpKTt0aGlzLnNjb3BlU3VidHJlZSh0aGlzLiQuc3ZnLCEwKSx0aGlzLl9pbnRlcmFjdGlvbk1hbmFnZXI9bmV3IEREdChlLHQuc2NoZW1hLCh0PT50aGlzLmNsb3Nlc3RTZXNzaW9uR3JvdXBDaGFuZ2VkKHQpKSwodD0+dGhpcy5zZWxlY3RlZFNlc3Npb25Hcm91cENoYW5nZWQodCkpKX10aGlzLl9jb21wdXRlVmFsaWRTZXNzaW9uR3JvdXBzKCksdGhpcy5faW50ZXJhY3Rpb25NYW5hZ2VyLm9uT3B0aW9uc09yU2Vzc2lvbkdyb3Vwc0NoYW5nZWQodGhpcy5vcHRpb25zLHRoaXMuX3ZhbGlkU2Vzc2lvbkdyb3VwcyksdGhpcy5yZWRyYXdDb3VudCsrfWNsb3Nlc3RTZXNzaW9uR3JvdXBDaGFuZ2VkKHQpe3RoaXMuY2xvc2VzdFNlc3Npb25Hcm91cD10fXNlbGVjdGVkU2Vzc2lvbkdyb3VwQ2hhbmdlZCh0KXt0aGlzLnNlbGVjdGVkU2Vzc2lvbkdyb3VwPXR9X2NvbXB1dGVWYWxpZFNlc3Npb25Hcm91cHMoKXtjb25zdCB0PUtSdDtpZih2b2lkIDA9PT10aGlzLnNlc3Npb25Hcm91cHMpcmV0dXJuIHZvaWQodGhpcy5fdmFsaWRTZXNzaW9uR3JvdXBzPXZvaWQgMCk7Y29uc3QgZT10aGlzLm9wdGlvbnMuY29uZmlndXJhdGlvbi5zY2hlbWE7dGhpcy5fdmFsaWRTZXNzaW9uR3JvdXBzPXRoaXMuc2Vzc2lvbkdyb3Vwcy5maWx0ZXIoKG49Pntmb3IobGV0IGk9MDtpPHQubnVtQ29sdW1ucyhlKTsrK2kpaWYodGhpcy5vcHRpb25zLmNvbmZpZ3VyYXRpb24uY29sdW1uc1Zpc2liaWxpdHlbaV0mJnZvaWQgMD09PXQuY29sdW1uVmFsdWVCeUluZGV4KGUsbixpKSlyZXR1cm4hMTtyZXR1cm4hMH0pKX19O0JEdC50ZW1wbGF0ZT1fZWAKICAgIDxkaXYgaWQ9ImNvbnRhaW5lciI+CiAgICAgIDxzdmcgaWQ9InN2ZyI+PC9zdmc+CiAgICA8L2Rpdj4KICAgIDxzdHlsZT4KICAgICAgOmhvc3QgewogICAgICAgIGRpc3BsYXk6IGJsb2NrOwogICAgICB9CiAgICAgIHN2ZyB7CiAgICAgICAgZm9udDogMTBweCBzYW5zLXNlcmlmOwogICAgICB9CgogICAgICAuYmFja2dyb3VuZCBwYXRoIHsKICAgICAgICBmaWxsOiBub25lOwogICAgICAgIHN0cm9rZTogI2RkZDsKICAgICAgICBzaGFwZS1yZW5kZXJpbmc6IGNyaXNwRWRnZXM7CiAgICAgIH0KCiAgICAgIC5mb3JlZ3JvdW5kIHBhdGggewogICAgICAgIGZpbGw6IG5vbmU7CiAgICAgICAgc3Ryb2tlLW9wYWNpdHk6IDAuNzsKICAgICAgICBzdHJva2Utd2lkdGg6IDE7CiAgICAgIH0KCiAgICAgIC8qIFdpbGwgYmUgc2V0IG9uIGZvcmVncm91bmQgcGF0aHMgdGhhdCBhcmUgbm90ICJjb250YWluZWQiIGluIHRoZSBjdXJyZW50CiAgICAgICAgIGF4ZXMgYnJ1c2hlcy4gSWYgbm8gYnJ1c2hlcyBhcmUgc2V0LCBubyBwYXRoIHdpbGwgaGF2ZSB0aGlzIGNsYXNzLiAqLwogICAgICAuZm9yZWdyb3VuZCAuaW52aXNpYmxlLXBhdGggewogICAgICAgIGRpc3BsYXk6IG5vbmU7CiAgICAgIH0KCiAgICAgIC8qIFN0eWxlIGZvciB0aGUgcGF0aCBjbG9zZXN0IHRvIHRoZSBtb3VzZSBwb2ludGVyICh0eXBpY2FsbHkgd2lsbCBiZWNvbWUKICAgICAgdGhlIHNlbGVjdGVkIHBhdGggd2hlbiB0aGUgdXNlciBjbGlja3MpLiAqLwogICAgICAuZm9yZWdyb3VuZCAucGVha2VkLXBhdGggewogICAgICAgIHN0cm9rZS13aWR0aDogMzsKICAgICAgfQoKICAgICAgLyogVGhlIGN1cnJlbnRseSBzZWxlY3RlZCBwYXRoIGNsYXNzLiBXZSB1c2UgIWltcG9ydGFudCB0byBvdmVycmlkZSB0aGUKICAgICAgICAgaW5saW5lIHN0eWxlIHRoYXQgc2V0cyB0aGUgcmVndWxhciBjb2xvciBvZiBhIHBhdGguICovCiAgICAgIC5mb3JlZ3JvdW5kIC5zZWxlY3RlZC1wYXRoIHsKICAgICAgICBzdHJva2Utd2lkdGg6IDMgIWltcG9ydGFudDsKICAgICAgICBzdHJva2U6ICMwZjAgIWltcG9ydGFudDsKICAgICAgfQoKICAgICAgI2NvbnRhaW5lciB7CiAgICAgICAgaGVpZ2h0OiAxMDAlOwogICAgICAgIHdpZHRoOiAxMDAlOwogICAgICB9CgogICAgICBzdmcgewogICAgICAgIHdpZHRoOiAxMDAlOwogICAgICAgIGhlaWdodDogMTAwJTsKICAgICAgfQoKICAgICAgLmF4aXMgdGV4dCB7CiAgICAgICAgdGV4dC1zaGFkb3c6IDAgMXB4IDAgI2ZmZiwgMXB4IDAgMCAjZmZmLCAwIC0xcHggMCAjZmZmLCAtMXB4IDAgMCAjZmZmOwogICAgICAgIGZpbGw6ICMwMDA7CiAgICAgICAgY3Vyc29yOiBtb3ZlOwogICAgICB9CiAgICA8L3N0eWxlPgogIGAsdChbbyh7dHlwZTpBcnJheX0pLGUoImRlc2lnbjp0eXBlIixBcnJheSldLEJEdC5wcm90b3R5cGUsInNlc3Npb25Hcm91cHMiLHZvaWQgMCksdChbbyh7dHlwZTpPYmplY3R9KSxlKCJkZXNpZ246dHlwZSIsT2JqZWN0KV0sQkR0LnByb3RvdHlwZSwib3B0aW9ucyIsdm9pZCAwKSx0KFtvKHt0eXBlOk9iamVjdCxub3RpZnk6ITB9KSxlKCJkZXNpZ246dHlwZSIsT2JqZWN0KV0sQkR0LnByb3RvdHlwZSwic2VsZWN0ZWRTZXNzaW9uR3JvdXAiLHZvaWQgMCksdChbbyh7dHlwZTpPYmplY3Qsbm90aWZ5OiEwfSksZSgiZGVzaWduOnR5cGUiLE9iamVjdCldLEJEdC5wcm90b3R5cGUsImNsb3Nlc3RTZXNzaW9uR3JvdXAiLHZvaWQgMCksdChbbyh7dHlwZTpOdW1iZXJ9KSxlKCJkZXNpZ246dHlwZSIsTnVtYmVyKV0sQkR0LnByb3RvdHlwZSwicmVkcmF3Q291bnQiLHZvaWQgMCksdChbbyh7dHlwZTpBcnJheX0pLGUoImRlc2lnbjp0eXBlIixBcnJheSldLEJEdC5wcm90b3R5cGUsIl92YWxpZFNlc3Npb25Hcm91cHMiLHZvaWQgMCksdChbbyh7dHlwZTpPYmplY3R9KSxlKCJkZXNpZ246dHlwZSIsT2JqZWN0KV0sQkR0LnByb3RvdHlwZSwiX2ludGVyYWN0aW9uTWFuYWdlciIsdm9pZCAwKSx0KFthKCJvcHRpb25zLioiLCJzZXNzaW9uR3JvdXBzLioiKSxlKCJkZXNpZ246dHlwZSIsRnVuY3Rpb24pLGUoImRlc2lnbjpwYXJhbXR5cGVzIixbXSksZSgiZGVzaWduOnJldHVybnR5cGUiLHZvaWQgMCldLEJEdC5wcm90b3R5cGUsIl9vcHRpb25zT3JTZXNzaW9uR3JvdXBzQ2hhbmdlZCIsbnVsbCksQkR0PXQoW2koInRmLWhwYXJhbXMtcGFyYWxsZWwtY29vcmRzLXBsb3QiKV0sQkR0KTtsZXQgSER0PWNsYXNzIGV4dGVuZHMgeWV7X2Nsb3Nlc3RPclNlbGVjdGVkKHQsZSl7cmV0dXJuIG51bGwhPT10P3Q6ZX19O0hEdC50ZW1wbGF0ZT1fZWAKICAgIDwhLS0gQ29udHJvbHMgYmVoYXZpb3Igb2YgcGFyYWxsZWwgY29vcmRpbmF0ZXMgcGxvdAogICAgICAgICBvdXRwdXRzIHNldCBvcHRpb25zIHRvIHRoZSBfb3B0aW9ucyBwcm9wZXJ0eS4KICAgICAgLS0+CiAgICA8aHBhcmFtcy1zcGxpdC1sYXlvdXQgb3JpZW50YXRpb249InZlcnRpY2FsIj4KICAgICAgPCEtLSBUaGUgc2NhbGUgYW5kIGNvbG9yIGNvbnRyb2xzLiAtLT4KICAgICAgPHRmLWhwYXJhbXMtc2NhbGUtYW5kLWNvbG9yLWNvbnRyb2xzCiAgICAgICAgaWQ9ImNvbnRyb2xzIgogICAgICAgIHNsb3Q9ImNvbnRlbnQiCiAgICAgICAgY2xhc3M9InNlY3Rpb24iCiAgICAgICAgY29uZmlndXJhdGlvbj0iW1tjb25maWd1cmF0aW9uXV0iCiAgICAgICAgc2Vzc2lvbi1ncm91cHM9Iltbc2Vzc2lvbkdyb3Vwc11dIgogICAgICAgIG9wdGlvbnM9Int7X29wdGlvbnN9fSIKICAgICAgPgogICAgICA8L3RmLWhwYXJhbXMtc2NhbGUtYW5kLWNvbG9yLWNvbnRyb2xzPgogICAgICA8IS0tIFRoZSBhY3R1YWwgcGFyYWxsZWwgY29vcmRpbmF0ZXMgcGxvdCAtLT4KICAgICAgPHRmLWhwYXJhbXMtcGFyYWxsZWwtY29vcmRzLXBsb3QKICAgICAgICBpZD0icGxvdCIKICAgICAgICBzbG90PSJjb250ZW50IgogICAgICAgIGNsYXNzPSJzZWN0aW9uIgogICAgICAgIHNlc3Npb24tZ3JvdXBzPSJbW3Nlc3Npb25Hcm91cHNdXSIKICAgICAgICBzZWxlY3RlZC1zZXNzaW9uLWdyb3VwPSJ7e19zZWxlY3RlZEdyb3VwfX0iCiAgICAgICAgY2xvc2VzdC1zZXNzaW9uLWdyb3VwPSJ7e19jbG9zZXN0R3JvdXB9fSIKICAgICAgICBvcHRpb25zPSJbW19vcHRpb25zXV0iCiAgICAgID4KICAgICAgPC90Zi1ocGFyYW1zLXBhcmFsbGVsLWNvb3Jkcy1wbG90PgogICAgICA8dGYtaHBhcmFtcy1zZXNzaW9uLWdyb3VwLXZhbHVlcwogICAgICAgIGlkPSJ2YWx1ZXMiCiAgICAgICAgc2xvdD0iY29udGVudCIKICAgICAgICBjbGFzcz0ic2VjdGlvbiIKICAgICAgICB2aXNpYmxlLXNjaGVtYT0iW1tjb25maWd1cmF0aW9uLnZpc2libGVTY2hlbWFdXSIKICAgICAgICBzZXNzaW9uLWdyb3VwPSJbW19jbG9zZXN0T3JTZWxlY3RlZCgKICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfY2xvc2VzdEdyb3VwLCBfc2VsZWN0ZWRHcm91cCldXSIKICAgICAgPgogICAgICA8L3RmLWhwYXJhbXMtc2Vzc2lvbi1ncm91cC12YWx1ZXM+CiAgICAgIDx0Zi1ocGFyYW1zLXNlc3Npb24tZ3JvdXAtZGV0YWlscwogICAgICAgIGlkPSJkZXRhaWxzIgogICAgICAgIHNsb3Q9ImNvbnRlbnQiCiAgICAgICAgY2xhc3M9InNlY3Rpb24iCiAgICAgICAgYmFja2VuZD0iW1tiYWNrZW5kXV0iCiAgICAgICAgZXhwZXJpbWVudC1uYW1lPSJbW2V4cGVyaW1lbnROYW1lXV0iCiAgICAgICAgc2Vzc2lvbi1ncm91cD0iW1tfc2VsZWN0ZWRHcm91cF1dIgogICAgICAgIHZpc2libGUtc2NoZW1hPSJbW2NvbmZpZ3VyYXRpb24udmlzaWJsZVNjaGVtYV1dIgogICAgICA+CiAgICAgIDwvdGYtaHBhcmFtcy1zZXNzaW9uLWdyb3VwLWRldGFpbHM+CiAgICA8L2hwYXJhbXMtc3BsaXQtbGF5b3V0PgoKICAgIDxzdHlsZT4KICAgICAgLnNlY3Rpb24gewogICAgICAgIHBhZGRpbmc6IDEwcHg7CiAgICAgIH0KICAgICAgI3ZhbHVlcyB7CiAgICAgICAgaGVpZ2h0OiAxMTVweDsKICAgICAgfQogICAgICAjZGV0YWlscyB7CiAgICAgICAgZmxleC1ncm93OiAxOwogICAgICAgIG1heC1oZWlnaHQ6IGZpdC1jb250ZW50OwogICAgICB9CiAgICA8L3N0eWxlPgogIGAsdChbbyh7dHlwZTpPYmplY3R9KSxlKCJkZXNpZ246dHlwZSIsT2JqZWN0KV0sSER0LnByb3RvdHlwZSwiYmFja2VuZCIsdm9pZCAwKSx0KFtvKHt0eXBlOlN0cmluZ30pLGUoImRlc2lnbjp0eXBlIixTdHJpbmcpXSxIRHQucHJvdG90eXBlLCJleHBlcmltZW50TmFtZSIsdm9pZCAwKSx0KFtvKHt0eXBlOk9iamVjdH0pLGUoImRlc2lnbjp0eXBlIixPYmplY3QpXSxIRHQucHJvdG90eXBlLCJjb25maWd1cmF0aW9uIix2b2lkIDApLHQoW28oe3R5cGU6QXJyYXl9KSxlKCJkZXNpZ246dHlwZSIsQXJyYXkpXSxIRHQucHJvdG90eXBlLCJzZXNzaW9uR3JvdXBzIix2b2lkIDApLEhEdD10KFtpKCJ0Zi1ocGFyYW1zLXBhcmFsbGVsLWNvb3Jkcy12aWV3IildLEhEdCk7bGV0IEZEdD1jbGFzcyBleHRlbmRzKHRyKHllKSl7Y29uc3RydWN0b3IoKXtzdXBlciguLi5hcmd1bWVudHMpLHRoaXMuc2VsZWN0ZWRTZXNzaW9uR3JvdXA9bnVsbCx0aGlzLmNsb3Nlc3RTZXNzaW9uR3JvdXA9bnVsbCx0aGlzLl9jb250YWluZXI9bnVsbCx0aGlzLl9zdmc9bnVsbCx0aGlzLndpZHRoPTAsdGhpcy5oZWlnaHQ9MCx0aGlzLl9icnVzaGVkQ2VsbEluZGV4PW51bGwsdGhpcy5fYnJ1c2hTZWxlY3Rpb249bnVsbH1yZWFkeSgpe3N1cGVyLnJlYWR5KCksdGhpcy5fY29udGFpbmVyPXRoaXMuJC5jb250YWluZXIsdGhpcy5fc3ZnPVN1KHRoaXMuJC5zdmcpLHRoaXMuX3JlZHJhdygpfV9zZXNzaW9uR3JvdXBzQ2hhbmdlZCgpe251bGwhPT10aGlzLnNlbGVjdGVkU2Vzc2lvbkdyb3VwJiYodGhpcy5zZWxlY3RlZFNlc3Npb25Hcm91cD1IUnQodGhpcy5zZXNzaW9uR3JvdXBzLHRoaXMuc2VsZWN0ZWRTZXNzaW9uR3JvdXAubmFtZSl8fG51bGwpLHRoaXMuX3JlZHJhdygpfV92aXNpYmxlU2NoZW1hQ2hhbmdlZCgpe3RoaXMuX2JydXNoZWRDZWxsSW5kZXg9bnVsbCx0aGlzLl9icnVzaFNlbGVjdGlvbj1udWxsLHRoaXMuX3JlZHJhdygpfV9yZWRyYXcoKXt0aGlzLmRlYm91bmNlKCJfcmVkcmF3IiwoKCk9Pntjb25zdCB0PUtSdDt0aGlzLndpZHRoPU1hdGgubWF4KDE1MCp0Lm51bVZpc2libGVDb2x1bW5zKHRoaXMudmlzaWJsZVNjaGVtYSksMTIwMCksdGhpcy5oZWlnaHQ9TWF0aC5tYXgoMTEyLjUqdC5udW1WaXNpYmxlTWV0cmljcyh0aGlzLnZpc2libGVTY2hlbWEpLDQ4MCksdGhpcy5fY29udGFpbmVyLnN0eWxlLndpZHRoPXRoaXMud2lkdGgrInB4Iix0aGlzLl9jb250YWluZXIuc3R5bGUuaGVpZ2h0PXRoaXMuaGVpZ2h0KyJweCIsdGhpcy5fc3ZnLmF0dHIoIndpZHRoIix0aGlzLndpZHRoKS5hdHRyKCJoZWlnaHQiLHRoaXMuaGVpZ2h0KSx0aGlzLl9zdmcuc2VsZWN0QWxsKCJnIikucmVtb3ZlKCksdGhpcy5fZHJhdygpfSksMTAwKX1fZHJhdygpe2NvbnN0IHQ9S1J0LGU9dGhpcztpZighdGhpcy5zZXNzaW9uR3JvdXBzfHwwPT10aGlzLnNlc3Npb25Hcm91cHMubGVuZ3RofHwhdGhpcy52aXNpYmxlU2NoZW1hfHwwPT10aGlzLnZpc2libGVTY2hlbWEubWV0cmljSW5mb3MubGVuZ3RoKXJldHVybjtjb25zdCBuPXpsKHQubnVtVmlzaWJsZUNvbHVtbnMoZS52aXNpYmxlU2NoZW1hKSksaT16bCh0Lm51bVZpc2libGVNZXRyaWNzKGUudmlzaWJsZVNjaGVtYSkpLHI9eE0oKS5kb21haW4obikucmFuZ2UoWzg1LHRoaXMud2lkdGgtMS01XSkucGFkZGluZ0lubmVyKC4xKSxvPXhNKCkuZG9tYWluKGkpLnJhbmdlKFt0aGlzLmhlaWdodC0xLTUtNTAsNV0pLnBhZGRpbmdJbm5lciguMSksYT1yLmJhbmR3aWR0aCgpLHM9by5iYW5kd2lkdGgoKSxsPW4ubWFwKCh0PT5lLl9jZWxsU2NhbGUodCxbMCxhLTFdKSkpLGM9aS5tYXAoKG49PmUuX2NlbGxTY2FsZShuK3QubnVtVmlzaWJsZUhQYXJhbXMoZS52aXNpYmxlU2NoZW1hKSxbcy0xLDBdKSkpLHU9dGhpcy5fc3ZnLnNlbGVjdEFsbCgiLngtYXhpcyIpLmRhdGEobikuZW50ZXIoKS5hcHBlbmQoImciKS5jbGFzc2VkKCJ4LWF4aXMiLCEwKS5hdHRyKCJ0cmFuc2Zvcm0iLChlPT50LnRyYW5zbGF0ZVN0cihyKGUpLDApKSk7ZnVuY3Rpb24gaCh0KXtyZXR1cm4ieC1heGlzLWNsaXAtcGF0aC0iK3R9ZnVuY3Rpb24gZCh0KXtyZXR1cm4ieC1sYWJlbC1jbGlwLXBhdGgtIit0fXUuYXBwZW5kKCJjbGlwUGF0aCIpLmF0dHIoImlkIixoKS5hcHBlbmQoInJlY3QiKS5hdHRyKCJ4IiwtNSkuYXR0cigieSIsMCkuYXR0cigid2lkdGgiLGErMTApLmF0dHIoImhlaWdodCIsZS5oZWlnaHQtMjUpLHUuYXBwZW5kKCJjbGlwUGF0aCIpLmF0dHIoImlkIixkKS5hcHBlbmQoInJlY3QiKS5hdHRyKCJ4IiwwKS5hdHRyKCJ5IixlLmhlaWdodC0yNSkuYXR0cigid2lkdGgiLGEpLmF0dHIoImhlaWdodCIsMjUpLHUuYXBwZW5kKCJnIikuYXR0cigiY2xpcC1wYXRoIiwodD0+InVybCgjIitoKHQpKyIpIikpLmVhY2goKGZ1bmN0aW9uKHQpe1N1KHRoaXMpLmNhbGwoZyxvYyhsW3RdKS50aWNrU2l6ZShlLmhlaWdodC01MCksYSw0MCxlLm9wdGlvbnMuY29sdW1uc1t0XS5zY2FsZSl9KSksdS5hcHBlbmQoImciKS5jbGFzc2VkKCJ4LWF4aXMtbGFiZWwiLCEwKS5hdHRyKCJjbGlwLXBhdGgiLCh0PT4idXJsKCMiK2QodCkrIikiKSkuYXBwZW5kKCJ0ZXh0IikuYXR0cigidGV4dC1hbmNob3IiLCJtaWRkbGUiKS5hdHRyKCJ4IixhLzIpLmF0dHIoInkiLGUuaGVpZ2h0LTEtMTIuNSkudGV4dCgobj0+dC5zY2hlbWFWaXNpYmxlQ29sdW1uTmFtZShlLnZpc2libGVTY2hlbWEsbikpKS5hcHBlbmQoInRpdGxlIikudGV4dCgobj0+dC5zY2hlbWFWaXNpYmxlQ29sdW1uTmFtZShlLnZpc2libGVTY2hlbWEsbikpKTtjb25zdCBwPXRoaXMuX3N2Zy5zZWxlY3RBbGwoIi55LWF4aXMiKS5kYXRhKGkpLmVudGVyKCkuYXBwZW5kKCJnIikuY2xhc3NlZCgieS1heGlzIiwhMCkuYXR0cigidHJhbnNmb3JtIiwobj0+dC50cmFuc2xhdGVTdHIoZS53aWR0aC0xLG8obikpKSk7ZnVuY3Rpb24gZih0KXtyZXR1cm4ieS1heGlzLWNsaXAtcGF0aC0iK3R9ZnVuY3Rpb24gbSh0KXtyZXR1cm4ieS1sYWJlbC1jbGlwLXBhdGgtIit0fWZ1bmN0aW9uIGcodCxlLG4saSxyKXtjb25zdCBvPU1hdGguZmxvb3Iobi9pKSxhPWUuc2NhbGUoKTtpZigiUVVBTlRJTEUiPT09cil7bGV0IHQ9YS5xdWFudGlsZXMoKTtjb25zdCBuPU1hdGguY2VpbCh0Lmxlbmd0aC9vKTt0PXpsKDAsdC5sZW5ndGgsbikubWFwKChlPT50W2VdKSksZS50aWNrVmFsdWVzKHQpLnRpY2tGb3JtYXQocHkoIi0uMmciKSl9IkxJTkVBUiIhPT1yJiYiTE9HIiE9PXJ8fGUudGlja3MobyksdC5jYWxsKGUpLHQuc2VsZWN0QWxsKCIuZG9tYWluIikucmVtb3ZlKCksdC5zZWxlY3RBbGwoIi50aWNrIGxpbmUiKS5hdHRyKCJzdHJva2UiLCIjZGRkIil9cC5hcHBlbmQoImNsaXBQYXRoIikuYXR0cigiaWQiLGYpLmFwcGVuZCgicmVjdCIpLmF0dHIoIngiLC0oZS53aWR0aC00MC0xKSkuYXR0cigieSIsLTUpLmF0dHIoIndpZHRoIixlLndpZHRoLTQwKS5hdHRyKCJoZWlnaHQiLHMrMTApLHAuYXBwZW5kKCJjbGlwUGF0aCIpLmF0dHIoImlkIixtKS5hcHBlbmQoInJlY3QiKS5hdHRyKCJ4IiwtKGUud2lkdGgtMSkpLmF0dHIoInkiLDApLmF0dHIoIndpZHRoIiw0MCkuYXR0cigiaGVpZ2h0IixzKSxwLmFwcGVuZCgiZyIpLmF0dHIoImNsaXAtcGF0aCIsKHQ9PiJ1cmwoIyIrZih0KSsiKSIpKS5lYWNoKChmdW5jdGlvbihuKXtTdSh0aGlzKS5jYWxsKGcsYWMoY1tuXSkudGlja1NpemUoZS53aWR0aC04MCkscywyMCxlLm9wdGlvbnMuY29sdW1uc1tuK3QubnVtVmlzaWJsZUhQYXJhbXMoZS52aXNpYmxlU2NoZW1hKV0uc2NhbGUpfSkpLHAuYXBwZW5kKCJnIikuY2xhc3NlZCgieS1heGlzLWxhYmVsIiwhMCkuYXR0cigiY2xpcC1wYXRoIiwodD0+InVybCgjIittKHQpKyIpIikpLmFwcGVuZCgidGV4dCIpLmF0dHIoInRleHQtYW5jaG9yIiwibWlkZGxlIikuYXR0cigieCIsLShlLndpZHRoLTIwLTEpKS5hdHRyKCJ5IixzLzIpLmF0dHIoInRyYW5zZm9ybSIsdC5yb3RhdGVTdHIoOTAsLShlLndpZHRoLTIwLTEpLHMvMikpLnRleHQoKG49PnQubWV0cmljTmFtZShlLnZpc2libGVTY2hlbWEubWV0cmljSW5mb3Nbbl0pKSkuYXBwZW5kKCJ0aXRsZSIpLnRleHQoKG49PnQubWV0cmljTmFtZShlLnZpc2libGVTY2hlbWEubWV0cmljSW5mb3Nbbl0pKSk7Y29uc3QgXz10aGlzLl9zdmcuc2VsZWN0QWxsKCIuY2VsbCIpLmRhdGEoVGwobixpKSkuZW50ZXIoKS5hcHBlbmQoImciKS5jbGFzc2VkKCJjZWxsIiwhMCkuYXR0cigidHJhbnNmb3JtIiwoKFtlLG5dKT0+dC50cmFuc2xhdGVTdHIocihlKSxvKG4pKSkpO18uYXBwZW5kKCJnIikuY2xhc3NlZCgiZnJhbWUiLCEwKS5hcHBlbmQoInJlY3QiKS5hdHRyKCJ4IiwtNSkuYXR0cigieSIsLTUpLmF0dHIoIndpZHRoIixhKzEwKS5hdHRyKCJoZWlnaHQiLHMrMTApLmF0dHIoInN0cm9rZSIsIiMwMDAiKS5hdHRyKCJmaWxsIiwibm9uZSIpLmF0dHIoInNoYXBlLXJlbmRlcmluZyIsImNyaXNwRWRnZXMiKTtsZXQgeT1udWxsO3ZvaWQgMCE9PWUub3B0aW9ucy5jb2xvckJ5Q29sdW1uSW5kZXgmJih5PXpNKCkuZG9tYWluKHRoaXMuX2NvbEV4dGVudCh0aGlzLm9wdGlvbnMuY29sb3JCeUNvbHVtbkluZGV4KSkucmFuZ2UoW3RoaXMub3B0aW9ucy5taW5Db2xvcix0aGlzLm9wdGlvbnMubWF4Q29sb3JdKS5pbnRlcnBvbGF0ZShjcCkpO2NvbnN0IHY9dm9pZCAwPT09ZS5vcHRpb25zLmNvbG9yQnlDb2x1bW5JbmRleD8oKT0+InJlZCI6KHtzZXNzaW9uR3JvdXA6dH0pPT55KHRoaXMuX2NvbFZhbHVlKHQsZS5vcHRpb25zLmNvbG9yQnlDb2x1bW5JbmRleCkpO2Z1bmN0aW9uIGIodCxuKXtyZXR1cm4gbFtuXShlLl9jb2xWYWx1ZSh0LG4pKX1mdW5jdGlvbiB4KHQsbil7cmV0dXJuIGNbbl0oZS5fbWV0cmljVmFsdWUodCxuKSl9Y29uc3RbdyxTLE1dPShmdW5jdGlvbiBFKHQscil7Y29uc3Qgbz10LnNlbGVjdEFsbCgiLmRhdGEtbWFya2VyIikuZGF0YSgoKFt0LG5dKT0+ZS5zZXNzaW9uR3JvdXBzLmZpbHRlcigoaT0+dm9pZCAwIT09ZS5fY29sVmFsdWUoaSx0KSYmdm9pZCAwIT09ZS5fbWV0cmljVmFsdWUoaSxuKSkpLm1hcCgoZT0+KHtjb2w6dCxtZXRyaWM6bixzZXNzaW9uR3JvdXA6ZSx4OmIoZSx0KSx5OngoZSxuKSxzZXNzaW9uR3JvdXBNYXJrZXJzOm51bGx9KSkpKSkuZW50ZXIoKS5hcHBlbmQoImNpcmNsZSIpLmNsYXNzZWQoImRhdGEtbWFya2VyIiwhMCkuYXR0cigiY3giLCgoe3g6dH0pPT50KSkuYXR0cigiY3kiLCgoe3k6dH0pPT50KSkuYXR0cigiciIsMikuYXR0cigiZmlsbCIsciksYT1uZXcgTWFwO2Uuc2Vzc2lvbkdyb3Vwcy5mb3JFYWNoKCh0PT57YS5zZXQodCxbXSl9KSksby5lYWNoKChmdW5jdGlvbih0KXthLmdldCh0LnNlc3Npb25Hcm91cCkucHVzaCh0aGlzKX0pKSxvLmVhY2goKHQ9Pntjb25zdCBlPWEuZ2V0KHQuc2Vzc2lvbkdyb3VwKTt0LnNlc3Npb25Hcm91cE1hcmtlcnM9bmV3IFNldChlKX0pKTtjb25zdCBzPW4ubWFwKCh0PT5pLm1hcCgoZT0+by5maWx0ZXIoKG49Pm4uY29sPT10JiZuLm1ldHJpYz09ZSkpKSkpKTtyZXR1cm5bbyxzLGFdfSkoXy5hcHBlbmQoImciKSx2KSxUPW4ubWFwKCh0PT5pLm1hcCgoZT0+KGZ1bmN0aW9uIG4odCxlKXtjb25zdCBuPVtdO3JldHVybiBTW3RdW2VdLmVhY2goKGZ1bmN0aW9uKCl7bi5wdXNoKHRoaXMpfSkpLFBfKCkueCgodD0+U3UodCkuZGF0dW0oKS54KSkueSgodD0+U3UodCkuZGF0dW0oKS55KSkuYWRkQWxsKG4pfSkodCxlKSkpKSk7bGV0IEE9bnVsbDtJKCkmJihBPV8uZmlsdGVyKCh0PT53ZS5pc0VxdWFsKHQsZS5fYnJ1c2hlZENlbGxJbmRleCkpKSxjb25zb2xlLmFzc2VydCgxPT1BLnNpemUoKSxBKSk7bGV0IEM9bmV3IFNldCh3Lm5vZGVzKCkpO2Z1bmN0aW9uIGsoKXtsZXQgbj1uZXcgU2V0KHcubm9kZXMoKSk7KGZ1bmN0aW9uIGkoKXtyZXR1cm4hSSgpfHxlLl9icnVzaFNlbGVjdGlvblswXVswXT09PWUuX2JydXNoU2VsZWN0aW9uWzFdWzBdfHxlLl9icnVzaFNlbGVjdGlvblswXVsxXT09PWUuX2JydXNoU2VsZWN0aW9uWzFdWzFdfSkoKXx8KG49KGZ1bmN0aW9uIHIoZSxuKXtjb25zb2xlLmFzc2VydChudWxsIT09ZSksY29uc29sZS5hc3NlcnQobnVsbCE9PW4pO2NvbnN0W2kscl09ZSxvPW5ldyBTZXQ7cmV0dXJuIHQucXVhZFRyZWVWaXNpdFBvaW50c0luUmVjdChUW2ldW3JdLG5bMF1bMF0sblswXVsxXSxuWzFdWzBdLG5bMV1bMV0sKHQ9PntTdSh0KS5kYXR1bSgpLnNlc3Npb25Hcm91cE1hcmtlcnMuZm9yRWFjaCgodD0+e28uYWRkKHQpfSkpfSkpLG99KShlLl9icnVzaGVkQ2VsbEluZGV4LGUuX2JydXNoU2VsZWN0aW9uKSksc2goQXJyYXkuZnJvbSh0LmZpbHRlclNldChuLCh0PT4hQy5oYXModCkpKSkpLmF0dHIoImZpbGwiLHYpLHNoKEFycmF5LmZyb20odC5maWx0ZXJTZXQoQywodD0+IW4uaGFzKHQpKSkpKS5hdHRyKCJmaWxsIiwiI2RkZCIpLEM9bn1rKCk7Y29uc3QgTD1abSgpLmV4dGVudChbWy00LC00XSxbYS0xKzUtMSxzLTErNS0xXV0pLm9uKCJzdGFydCIsKGZ1bmN0aW9uKCl7SSgpJiZBLm5vZGUoKSE9dGhpcyYmTC5tb3ZlKEEsbnVsbCksUCh0aGlzKX0pKS5vbigiYnJ1c2giLChmdW5jdGlvbigpe1AodGhpcyl9KSkub24oImVuZCIsKGZ1bmN0aW9uKCl7UCh0aGlzKX0pKTtmdW5jdGlvbiBQKHQpe2NvbnN0IG49JG0odCk7IUkoKSYmbnVsbD09PW58fEkoKSYmdD09PUEubm9kZSgpJiZ3ZS5pc0VxdWFsKG4sZS5fYnJ1c2hTZWxlY3Rpb24pfHwoZS5fYnJ1c2hTZWxlY3Rpb249bixudWxsIT09bj8oQT1TdSh0KSxlLl9icnVzaGVkQ2VsbEluZGV4PUEuZGF0dW0oKSk6KEE9bnVsbCxlLl9icnVzaGVkQ2VsbEluZGV4PW51bGwpLGsoKSl9ZnVuY3Rpb24gSSgpe3JldHVybiBudWxsIT09ZS5fYnJ1c2hlZENlbGxJbmRleCYmbnVsbCE9PWUuX2JydXNoU2VsZWN0aW9ufV8uY2FsbChMKSxJKCkmJkwubW92ZShBLGUuX2JydXNoU2VsZWN0aW9uKTtsZXQgTj1udWxsLE89bnVsbDtudWxsIT09dGhpcy5zZWxlY3RlZFNlc3Npb25Hcm91cCYmKE89c2goTS5nZXQodGhpcy5zZWxlY3RlZFNlc3Npb25Hcm91cCkpLmNsYXNzZWQoInNlbGVjdGVkLW1hcmtlciIsITApKSxfLm9uKCJjbGljayIsKGZ1bmN0aW9uKCl7Y29uc3QgdD1OPT09Tz9udWxsOk47aWYodD09PU8pcmV0dXJuO251bGwhPT1PJiZPLmNsYXNzZWQoInNlbGVjdGVkLW1hcmtlciIsITEpLE89dCxudWxsIT09TyYmTy5jbGFzc2VkKCJzZWxlY3RlZC1tYXJrZXIiLCEwKTtjb25zdCBuPW51bGw9PT1PP251bGw6Ty5kYXR1bSgpLnNlc3Npb25Hcm91cDtlLnNlbGVjdGVkU2Vzc2lvbkdyb3VwPW59KSkub24oIm1vdXNlbW92ZSBtb3VzZWVudGVyIiwoZnVuY3Rpb24oW24saV0pe2NvbnN0W3Isb109YWgodGhpcyksYT0oZnVuY3Rpb24gcyhlLG4saSxyLG8pe2xldCBhPTEvMCxzPW51bGw7cmV0dXJuIHQucXVhZFRyZWVWaXNpdFBvaW50c0luRGlzayhUW2VdW25dLGkscixvLCgodCxlKT0+e2lmKEMuaGFzKHQpJiZlPGEpe2NvbnN0IG49U3UodCkuZGF0dW0oKTthPWUscz1uLnNlc3Npb25Hcm91cH19KSksbnVsbD09PXM/bnVsbDpzaChNLmdldChzKSl9KShuLGkscixvLDIwKTtOIT09YSYmKG51bGwhPT1OJiZOLmNsYXNzZWQoImNsb3Nlc3QtbWFya2VyIiwhMSksTj1hLG51bGwhPT1OPyhOLmNsYXNzZWQoImNsb3Nlc3QtbWFya2VyIiwhMCksZS5jbG9zZXN0U2Vzc2lvbkdyb3VwPU4uZGF0dW0oKS5zZXNzaW9uR3JvdXApOmUuY2xvc2VzdFNlc3Npb25Hcm91cD1udWxsKX0pKS5vbigibW91c2VsZWF2ZSIsKGZ1bmN0aW9uKFt0LG5dKXtudWxsIT09TiYmKE4uY2xhc3NlZCgiY2xvc2VzdC1tYXJrZXIiLCExKSxOPW51bGwsZS5jbG9zZXN0U2Vzc2lvbkdyb3VwPW51bGwpfSkpLHRoaXMuX3N2Zy5zZWxlY3RBbGwoIioiKS5jbGFzc2VkKCJ0Zi1ocGFyYW1zLXNjYXR0ZXItcGxvdC1tYXRyaXgtcGxvdCIsITApfV9jZWxsU2NhbGUodCxlKXtjb25zdCBuPXRoaXMuX2NvbEV4dGVudCh0KSxpPXpNKCkuZG9tYWluKG4pLnJhbmdlKGUpO2lmKCJMSU5FQVIiPT09dGhpcy5vcHRpb25zLmNvbHVtbnNbdF0uc2NhbGUpcmV0dXJuIGk7aWYoIkxPRyI9PT10aGlzLm9wdGlvbnMuY29sdW1uc1t0XS5zY2FsZSlyZXR1cm4gblswXTw9MCYmblsxXT49MD9pOldNKCkuZG9tYWluKG4pLnJhbmdlKGUpO2lmKCJRVUFOVElMRSI9PT10aGlzLm9wdGlvbnMuY29sdW1uc1t0XS5zY2FsZSl7Y29uc3Qgbj0oZVsxXS1lWzBdKS8xOSxpPXpsKDIwKS5tYXAoKHQ9PmVbMF0rbip0KSk7cmV0dXJuIHRFKCkuZG9tYWluKHdlLnVuaXEodGhpcy5zZXNzaW9uR3JvdXBzLm1hcCgoZT0+dGhpcy5fY29sVmFsdWUoZSx0KSkpKSkucmFuZ2UoaSl9aWYoIk5PTl9OVU1FUklDIj09PXRoaXMub3B0aW9ucy5jb2x1bW5zW3RdLnNjYWxlKXJldHVybiBTTSgpLmRvbWFpbih3ZS51bmlxKHRoaXMuc2Vzc2lvbkdyb3Vwcy5tYXAoKGU9PnRoaXMuX2NvbFZhbHVlKGUsdCkpKS5zb3J0KCkpKS5yYW5nZShlKS5wYWRkaW5nKC4xKTt0aHJvdyJVbmtub3duIHNjYWxlIGZvciBjb2x1bW46ICIrdCsiLiBvcHRpb25zOiAiK3RoaXMub3B0aW9uc31fY29sVmFsdWUodCxlKXtyZXR1cm4galJ0KHRoaXMudmlzaWJsZVNjaGVtYSx0LGUpfV9tZXRyaWNWYWx1ZSh0LGUpe3JldHVybiBWUnQodGhpcy52aXNpYmxlU2NoZW1hLHQsZSl9X2NvbEV4dGVudCh0KXtyZXR1cm4gQlJ0KHRoaXMudmlzaWJsZVNjaGVtYSx0aGlzLnNlc3Npb25Hcm91cHMsdCl9fTtGRHQudGVtcGxhdGU9X2VgCiAgICA8ZGl2IGlkPSJjb250YWluZXIiPgogICAgICA8c3ZnIGlkPSJzdmciPjwvc3ZnPgogICAgPC9kaXY+CgogICAgPHN0eWxlPgogICAgICA6aG9zdCB7CiAgICAgICAgZGlzcGxheTogYmxvY2s7CiAgICAgIH0KICAgICAgc3ZnIHsKICAgICAgICBmb250OiAxMHB4IHNhbnMtc2VyaWY7CiAgICAgIH0KCiAgICAgIC8qIFRoZSBjbG9zZXN0IGRhdGEgcG9pbnQgbWFya2VyIHRvIHRoZSBtb3VzZSBwb2ludGVyLiBXZSB1c2UgIWltcG9ydGFudAogICAgICAgICB0byBvdmVycmlkZSB0aGUgaW5saW5lIHN0eWxlIHRoYXQgc2V0cyB0aGUgcmVndWxhciBzdHlsZSBvZiBhIG1hcmtlci4KICAgICAgKi8KICAgICAgLmNsb3Nlc3QtbWFya2VyIHsKICAgICAgICByOiA2ICFpbXBvcnRhbnQ7CiAgICAgIH0KCiAgICAgIC8qIFRoZSBjdXJyZW50bHkgc2VsZWN0ZWQgZGF0YSBwb2ludCBtYXJrZXIuIFdlIHVzZSAhaW1wb3J0YW50IHRvCiAgICAgICAgIG92ZXJyaWRlIHRoZSBpbmxpbmUgc3R5bGUgdGhhdCBzZXRzIHRoZSByZWd1bGFyIHN0eWxlIG9mIGEgbWFya2VyLiAqLwogICAgICAuc2VsZWN0ZWQtbWFya2VyIHsKICAgICAgICByOiA2ICFpbXBvcnRhbnQ7CiAgICAgICAgZmlsbDogIzBmMCAhaW1wb3J0YW50OwogICAgICB9CiAgICA8L3N0eWxlPgogIGAsdChbbyh7dHlwZTpPYmplY3R9KSxlKCJkZXNpZ246dHlwZSIsT2JqZWN0KV0sRkR0LnByb3RvdHlwZSwidmlzaWJsZVNjaGVtYSIsdm9pZCAwKSx0KFtvKHt0eXBlOkFycmF5fSksZSgiZGVzaWduOnR5cGUiLEFycmF5KV0sRkR0LnByb3RvdHlwZSwic2Vzc2lvbkdyb3VwcyIsdm9pZCAwKSx0KFtvKHt0eXBlOk9iamVjdH0pLGUoImRlc2lnbjp0eXBlIixPYmplY3QpXSxGRHQucHJvdG90eXBlLCJvcHRpb25zIix2b2lkIDApLHQoW28oe3R5cGU6T2JqZWN0LG5vdGlmeTohMH0pLGUoImRlc2lnbjp0eXBlIixPYmplY3QpXSxGRHQucHJvdG90eXBlLCJzZWxlY3RlZFNlc3Npb25Hcm91cCIsdm9pZCAwKSx0KFtvKHt0eXBlOk9iamVjdCxub3RpZnk6ITB9KSxlKCJkZXNpZ246dHlwZSIsT2JqZWN0KV0sRkR0LnByb3RvdHlwZSwiY2xvc2VzdFNlc3Npb25Hcm91cCIsdm9pZCAwKSx0KFtvKHt0eXBlOk9iamVjdH0pLGUoImRlc2lnbjp0eXBlIixIVE1MRWxlbWVudCldLEZEdC5wcm90b3R5cGUsIl9jb250YWluZXIiLHZvaWQgMCksdChbbyh7dHlwZTpPYmplY3R9KSxlKCJkZXNpZ246dHlwZSIsT2JqZWN0KV0sRkR0LnByb3RvdHlwZSwiX3N2ZyIsdm9pZCAwKSx0KFtvKHt0eXBlOk51bWJlcn0pLGUoImRlc2lnbjp0eXBlIixOdW1iZXIpXSxGRHQucHJvdG90eXBlLCJ3aWR0aCIsdm9pZCAwKSx0KFtvKHt0eXBlOk51bWJlcn0pLGUoImRlc2lnbjp0eXBlIixOdW1iZXIpXSxGRHQucHJvdG90eXBlLCJoZWlnaHQiLHZvaWQgMCksdChbbyh7dHlwZTpPYmplY3R9KSxlKCJkZXNpZ246dHlwZSIsT2JqZWN0KV0sRkR0LnByb3RvdHlwZSwiX2JydXNoZWRDZWxsSW5kZXgiLHZvaWQgMCksdChbbyh7dHlwZTpPYmplY3R9KSxlKCJkZXNpZ246dHlwZSIsT2JqZWN0KV0sRkR0LnByb3RvdHlwZSwiX2JydXNoU2VsZWN0aW9uIix2b2lkIDApLHQoW2EoInNlc3Npb25Hcm91cHMuKiIpLGUoImRlc2lnbjp0eXBlIixGdW5jdGlvbiksZSgiZGVzaWduOnBhcmFtdHlwZXMiLFtdKSxlKCJkZXNpZ246cmV0dXJudHlwZSIsdm9pZCAwKV0sRkR0LnByb3RvdHlwZSwiX3Nlc3Npb25Hcm91cHNDaGFuZ2VkIixudWxsKSx0KFthKCJ2aXNpYmxlU2NoZW1hLioiKSxlKCJkZXNpZ246dHlwZSIsRnVuY3Rpb24pLGUoImRlc2lnbjpwYXJhbXR5cGVzIixbXSksZSgiZGVzaWduOnJldHVybnR5cGUiLHZvaWQgMCldLEZEdC5wcm90b3R5cGUsIl92aXNpYmxlU2NoZW1hQ2hhbmdlZCIsbnVsbCksdChbYSgib3B0aW9ucy4qIiksZSgiZGVzaWduOnR5cGUiLEZ1bmN0aW9uKSxlKCJkZXNpZ246cGFyYW10eXBlcyIsW10pLGUoImRlc2lnbjpyZXR1cm50eXBlIix2b2lkIDApXSxGRHQucHJvdG90eXBlLCJfcmVkcmF3IixudWxsKSxGRHQ9dChbaSgidGYtaHBhcmFtcy1zY2F0dGVyLXBsb3QtbWF0cml4LXBsb3QiKV0sRkR0KTtsZXQgVkR0PWNsYXNzIGV4dGVuZHMgeWV7X2Nsb3Nlc3RPclNlbGVjdGVkKHQsZSl7cmV0dXJuIG51bGwhPT10P3Q6ZX19O1ZEdC50ZW1wbGF0ZT1fZWAKICAgIDxocGFyYW1zLXNwbGl0LWxheW91dCBvcmllbnRhdGlvbj0idmVydGljYWwiPgogICAgICA8IS0tIENvbnRyb2xzIGJlaGF2aW9yIG9mIHRoZSBzY2F0dGVyIHBsb3QgbWF0cml4CiAgICAgICAgICAgICBvdXRwdXRzIHRoZSBjb25maWd1cmVkIG9wdGlvbnMgdG8gdGhlIF9vcHRpb25zIHByb3BlcnR5LiAtLT4KICAgICAgPHRmLWhwYXJhbXMtc2NhbGUtYW5kLWNvbG9yLWNvbnRyb2xzCiAgICAgICAgc2xvdD0iY29udGVudCIKICAgICAgICBjbGFzcz0ic2VjdGlvbiIKICAgICAgICBpZD0iY29udHJvbHMiCiAgICAgICAgY29uZmlndXJhdGlvbj0iW1tjb25maWd1cmF0aW9uXV0iCiAgICAgICAgc2Vzc2lvbi1ncm91cHM9Iltbc2Vzc2lvbkdyb3Vwc11dIgogICAgICAgIG9wdGlvbnM9Int7X29wdGlvbnN9fSIKICAgICAgPgogICAgICA8L3RmLWhwYXJhbXMtc2NhbGUtYW5kLWNvbG9yLWNvbnRyb2xzPgogICAgICA8IS0tIFRoZSBhY3R1YWwgc2NhdHRlciBwbG90IG1hdHJpeCAtLT4KICAgICAgPHRmLWhwYXJhbXMtc2NhdHRlci1wbG90LW1hdHJpeC1wbG90CiAgICAgICAgc2xvdD0iY29udGVudCIKICAgICAgICBjbGFzcz0ic2VjdGlvbiIKICAgICAgICBpZD0icGxvdCIKICAgICAgICB2aXNpYmxlLXNjaGVtYT0iW1tjb25maWd1cmF0aW9uLnZpc2libGVTY2hlbWFdXSIKICAgICAgICBzZXNzaW9uLWdyb3Vwcz0iW1tzZXNzaW9uR3JvdXBzXV0iCiAgICAgICAgc2VsZWN0ZWQtc2Vzc2lvbi1ncm91cD0ie3tfc2VsZWN0ZWRHcm91cH19IgogICAgICAgIGNsb3Nlc3Qtc2Vzc2lvbi1ncm91cD0ie3tfY2xvc2VzdEdyb3VwfX0iCiAgICAgICAgb3B0aW9ucz0iW1tfb3B0aW9uc11dIgogICAgICA+CiAgICAgIDwvdGYtaHBhcmFtcy1zY2F0dGVyLXBsb3QtbWF0cml4LXBsb3Q+CiAgICAgIDx0Zi1ocGFyYW1zLXNlc3Npb24tZ3JvdXAtdmFsdWVzCiAgICAgICAgc2xvdD0iY29udGVudCIKICAgICAgICBjbGFzcz0ic2VjdGlvbiIKICAgICAgICBpZD0idmFsdWVzIgogICAgICAgIHZpc2libGUtc2NoZW1hPSJbW2NvbmZpZ3VyYXRpb24udmlzaWJsZVNjaGVtYV1dIgogICAgICAgIHNlc3Npb24tZ3JvdXA9IltbX2Nsb3Nlc3RPclNlbGVjdGVkKAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfY2xvc2VzdEdyb3VwLCBfc2VsZWN0ZWRHcm91cCldXSIKICAgICAgPgogICAgICA8L3RmLWhwYXJhbXMtc2Vzc2lvbi1ncm91cC12YWx1ZXM+CiAgICAgIDwhLS0gU2hvd3Mgc2Vzc2lvbiBncm91cCBkZXRhaWxzIGZvciB0aGUgY2xpY2tlZCBtYXJrZXIuIC0tPgogICAgICA8dGYtaHBhcmFtcy1zZXNzaW9uLWdyb3VwLWRldGFpbHMKICAgICAgICBzbG90PSJjb250ZW50IgogICAgICAgIGNsYXNzPSJzZWN0aW9uIgogICAgICAgIGlkPSJkZXRhaWxzIgogICAgICAgIGJhY2tlbmQ9IltbYmFja2VuZF1dIgogICAgICAgIGV4cGVyaW1lbnQtbmFtZT0iW1tleHBlcmltZW50TmFtZV1dIgogICAgICAgIHNlc3Npb24tZ3JvdXA9IltbX3NlbGVjdGVkR3JvdXBdXSIKICAgICAgICB2aXNpYmxlLXNjaGVtYT0iW1tjb25maWd1cmF0aW9uLnZpc2libGVTY2hlbWFdXSIKICAgICAgPgogICAgICA8L3RmLWhwYXJhbXMtc2Vzc2lvbi1ncm91cC1kZXRhaWxzPgogICAgPC9ocGFyYW1zLXNwbGl0LWxheW91dD4KICAgIDxzdHlsZT4KICAgICAgLnNlY3Rpb24gewogICAgICAgIHBhZGRpbmc6IDEwcHg7CiAgICAgIH0KICAgICAgI2NvbnRyb2xzIHsKICAgICAgICBmbGV4LWdyb3c6IDA7CiAgICAgICAgZmxleC1zaHJpbms6IDA7CiAgICAgICAgZmxleC1iYXNpczogYXV0bzsKICAgICAgICBoZWlnaHQ6IGF1dG87CiAgICAgICAgb3ZlcmZsb3cteTogYXV0bzsKICAgICAgICBtYXgtaGVpZ2h0OiBmaXQtY29udGVudDsKICAgICAgfQogICAgICAjcGxvdCB7CiAgICAgICAgZmxleC1ncm93OiAxOwogICAgICAgIGZsZXgtc2hyaW5rOiAxOwogICAgICAgIGZsZXgtYmFzaXM6IGF1dG87CiAgICAgICAgaGVpZ2h0OiBhdXRvOwogICAgICAgIG92ZXJmbG93LXk6IGF1dG87CiAgICAgICAgbWF4LWhlaWdodDogZml0LWNvbnRlbnQ7CiAgICAgIH0KICAgICAgI3ZhbHVlcyB7CiAgICAgICAgZmxleC1ncm93OiAwOwogICAgICAgIGZsZXgtc2hyaW5rOiAwOwogICAgICAgIGZsZXgtYmFzaXM6IGF1dG87CiAgICAgICAgaGVpZ2h0OiAxMTVweDsKICAgICAgICBvdmVyZmxvdy15OiBhdXRvOwogICAgICAgIG1heC1oZWlnaHQ6IGZpdC1jb250ZW50OwogICAgICB9CiAgICAgICNkZXRhaWxzIHsKICAgICAgICBmbGV4LWdyb3c6IDA7CiAgICAgICAgZmxleC1zaHJpbms6IDE7CiAgICAgICAgZmxleC1iYXNpczogYXV0bzsKICAgICAgICBoZWlnaHQ6IGF1dG87CiAgICAgICAgb3ZlcmZsb3cteTogYXV0bzsKICAgICAgICBtYXgtaGVpZ2h0OiBmaXQtY29udGVudDsKICAgICAgfQogICAgICB2YWFkaW4tc3BsaXQtbGF5b3V0IHsKICAgICAgICBoZWlnaHQ6IDEwMCU7CiAgICAgIH0KICAgIDwvc3R5bGU+CiAgYCx0KFtvKHt0eXBlOk9iamVjdH0pLGUoImRlc2lnbjp0eXBlIixPYmplY3QpXSxWRHQucHJvdG90eXBlLCJiYWNrZW5kIix2b2lkIDApLHQoW28oe3R5cGU6U3RyaW5nfSksZSgiZGVzaWduOnR5cGUiLFN0cmluZyldLFZEdC5wcm90b3R5cGUsImV4cGVyaW1lbnROYW1lIix2b2lkIDApLHQoW28oe3R5cGU6T2JqZWN0fSksZSgiZGVzaWduOnR5cGUiLE9iamVjdCldLFZEdC5wcm90b3R5cGUsImNvbmZpZ3VyYXRpb24iLHZvaWQgMCksdChbbyh7dHlwZTpBcnJheX0pLGUoImRlc2lnbjp0eXBlIixBcnJheSldLFZEdC5wcm90b3R5cGUsInNlc3Npb25Hcm91cHMiLHZvaWQgMCksVkR0PXQoW2koInRmLWhwYXJhbXMtc2NhdHRlci1wbG90LW1hdHJpeC12aWV3IildLFZEdCk7bGV0IGpEdD1jbGFzcyBleHRlbmRzIHlle2NvbnN0cnVjdG9yKCl7c3VwZXIoLi4uYXJndW1lbnRzKSx0aGlzLl9zZWxlY3RlZFRhYj0wfX07akR0LnRlbXBsYXRlPV9lYAogICAgPHBhcGVyLWhlYWRlci1wYW5lbD4KICAgICAgPHBhcGVyLXRvb2xiYXIgc2xvdD0iaGVhZGVyIiBjbGFzcz0idGFiLWJhciI+CiAgICAgICAgPHBhcGVyLXRhYnMgc2VsZWN0ZWQ9Int7X3NlbGVjdGVkVGFifX0iIHNsb3Q9InRvcCI+CiAgICAgICAgICA8IS0tIHZpZXctaWQgY2FuIGJlIHVzZWQgYnkgaW50ZWdyYXRpb24gdGVzdHMgdG8gbG9jYXRlIGEgdGFiLgogICAgICAgICAgICAgICBJdCBzaG91bGQgYmUgdGhlIG5hbWUgb2YgdGhlIHJvb3QgZWxlbWVudCBpbXBsZW1lbnRpbmcgdGhlIHZpZXcKICAgICAgICAgICAgICAgd2l0aG91dCB0aGUgJ3RmLWhwYXJhbXMtJyBwcmVmaXguIC0tPgogICAgICAgICAgPHBhcGVyLXRhYiB2aWV3LWlkPSJ0YWJsZS12aWV3Ij4gVEFCTEUgVklFVyA8L3BhcGVyLXRhYj4KICAgICAgICAgIDxwYXBlci10YWIgdmlldy1pZD0icGFyYWxsZWwtY29vcmRzLXZpZXciPgogICAgICAgICAgICBQQVJBTExFTCBDT09SRElOQVRFUyBWSUVXCiAgICAgICAgICA8L3BhcGVyLXRhYj4KICAgICAgICAgIDxwYXBlci10YWIgdmlldy1pZD0ic2NhdHRlci1wbG90LW1hdHJpeC12aWV3Ij4KICAgICAgICAgICAgU0NBVFRFUiBQTE9UIE1BVFJJWCBWSUVXCiAgICAgICAgICA8L3BhcGVyLXRhYj4KICAgICAgICAgIDxkaXYgY2xhc3M9ImhlbHAtYW5kLWZlZWRiYWNrIj4KICAgICAgICAgICAgPHRlbXBsYXRlIGlzPSJkb20taWYiIGlmPSJbW2J1Z1JlcG9ydFVybF1dIj4KICAgICAgICAgICAgICA8YQogICAgICAgICAgICAgICAgaHJlZiQ9IltbYnVnUmVwb3J0VXJsXV0iCiAgICAgICAgICAgICAgICB0YXJnZXQ9Il9ibGFuayIKICAgICAgICAgICAgICAgIHJlbD0ibm9vcGVuZXIgbm9yZWZlcnJlciIKICAgICAgICAgICAgICA+CiAgICAgICAgICAgICAgICA8cGFwZXItYnV0dG9uCiAgICAgICAgICAgICAgICAgIGlkPSJidWctcmVwb3J0IgogICAgICAgICAgICAgICAgICByYWlzZWQKICAgICAgICAgICAgICAgICAgdGl0bGU9IlNlbmQgYSBidWcgcmVwb3J0IG9yIGZlYXR1cmUgcmVxdWVzdCIKICAgICAgICAgICAgICAgID4KICAgICAgICAgICAgICAgICAgQnVnIFJlcG9ydCAvIEZlYXR1cmUgUmVxdWVzdAogICAgICAgICAgICAgICAgPC9wYXBlci1idXR0b24+CiAgICAgICAgICAgICAgPC9hPgogICAgICAgICAgICA8L3RlbXBsYXRlPgogICAgICAgICAgICA8dGVtcGxhdGUgaXM9ImRvbS1pZiIgaWY9IltbaGVscFVybF1dIj4KICAgICAgICAgICAgICA8YSBocmVmJD0iW1toZWxwVXJsXV0iIHRhcmdldD0iX2JsYW5rIiByZWw9Im5vb3BlbmVyIG5vcmVmZXJyZXIiPgogICAgICAgICAgICAgICAgPHBhcGVyLWljb24tYnV0dG9uCiAgICAgICAgICAgICAgICAgIGljb249ImhlbHAtb3V0bGluZSIKICAgICAgICAgICAgICAgICAgdGl0bGU9IlZpZXcgZG9jdW1lbnRhdGlvbiIKICAgICAgICAgICAgICAgID4KICAgICAgICAgICAgICAgIDwvcGFwZXItaWNvbi1idXR0b24+CiAgICAgICAgICAgICAgPC9hPgogICAgICAgICAgICA8L3RlbXBsYXRlPgogICAgICAgICAgPC9kaXY+CiAgICAgICAgPC9wYXBlci10YWJzPgogICAgICA8L3BhcGVyLXRvb2xiYXI+CiAgICAgIDxpcm9uLXBhZ2VzIHNlbGVjdGVkPSJbW19zZWxlY3RlZFRhYl1dIiBjbGFzcz0iZml0IHRhYi12aWV3Ij4KICAgICAgICA8ZGl2IGlkPSIwIiBjbGFzcz0idGFiIj4KICAgICAgICAgIDx0Zi1ocGFyYW1zLXRhYmxlLXZpZXcKICAgICAgICAgICAgYmFja2VuZD0iW1tiYWNrZW5kXV0iCiAgICAgICAgICAgIGV4cGVyaW1lbnQtbmFtZT0iW1tleHBlcmltZW50TmFtZV1dIgogICAgICAgICAgICB2aXNpYmxlLXNjaGVtYT0iW1tjb25maWd1cmF0aW9uLnZpc2libGVTY2hlbWFdXSIKICAgICAgICAgICAgc2Vzc2lvbi1ncm91cHM9Iltbc2Vzc2lvbkdyb3Vwc11dIgogICAgICAgICAgICBlbmFibGUtc2hvdy1tZXRyaWNzCiAgICAgICAgICA+CiAgICAgICAgICA8L3RmLWhwYXJhbXMtdGFibGUtdmlldz4KICAgICAgICA8L2Rpdj4KICAgICAgICA8ZGl2IGlkPSIxIiBjbGFzcz0idGFiIj4KICAgICAgICAgIDx0Zi1ocGFyYW1zLXBhcmFsbGVsLWNvb3Jkcy12aWV3CiAgICAgICAgICAgIGJhY2tlbmQ9IltbYmFja2VuZF1dIgogICAgICAgICAgICBleHBlcmltZW50LW5hbWU9IltbZXhwZXJpbWVudE5hbWVdXSIKICAgICAgICAgICAgY29uZmlndXJhdGlvbj0iW1tjb25maWd1cmF0aW9uXV0iCiAgICAgICAgICAgIHNlc3Npb24tZ3JvdXBzPSJbW3Nlc3Npb25Hcm91cHNdXSIKICAgICAgICAgID4KICAgICAgICAgIDwvdGYtaHBhcmFtcy1wYXJhbGxlbC1jb29yZHMtdmlldz4KICAgICAgICA8L2Rpdj4KICAgICAgICA8ZGl2IGlkPSIyIiBjbGFzcz0idGFiIj4KICAgICAgICAgIDx0Zi1ocGFyYW1zLXNjYXR0ZXItcGxvdC1tYXRyaXgtdmlldwogICAgICAgICAgICBiYWNrZW5kPSJbW2JhY2tlbmRdXSIKICAgICAgICAgICAgZXhwZXJpbWVudC1uYW1lPSJbW2V4cGVyaW1lbnROYW1lXV0iCiAgICAgICAgICAgIGNvbmZpZ3VyYXRpb249IltbY29uZmlndXJhdGlvbl1dIgogICAgICAgICAgICBzZXNzaW9uLWdyb3Vwcz0iW1tzZXNzaW9uR3JvdXBzXV0iCiAgICAgICAgICA+CiAgICAgICAgICA8L3RmLWhwYXJhbXMtc2NhdHRlci1wbG90LW1hdHJpeC12aWV3PgogICAgICAgIDwvZGl2PgogICAgICA8L2lyb24tcGFnZXM+CiAgICA8L3BhcGVyLWhlYWRlci1wYW5lbD4KCiAgICA8c3R5bGU+CiAgICAgIC50YWItdmlldyB7CiAgICAgICAgaGVpZ2h0OiAxMDAlOwogICAgICB9CiAgICAgIC50YWItYmFyIHsKICAgICAgICBvdmVyZmxvdy15OiBhdXRvOwogICAgICAgIGNvbG9yOiB3aGl0ZTsKICAgICAgICBiYWNrZ3JvdW5kLWNvbG9yOiB2YXIoCiAgICAgICAgICAtLXRiLXRvb2xiYXItYmFja2dyb3VuZC1jb2xvciwKICAgICAgICAgIHZhcigtLXRiLW9yYW5nZS1zdHJvbmcpCiAgICAgICAgKTsKICAgICAgfQogICAgICAudGFiIHsKICAgICAgICBoZWlnaHQ6IDEwMCU7CiAgICAgIH0KICAgICAgcGFwZXItdGFicyB7CiAgICAgICAgZmxleC1ncm93OiAxOwogICAgICAgIHdpZHRoOiAxMDAlOwogICAgICAgIGhlaWdodDogMTAwJTsKICAgICAgICAtLXBhcGVyLXRhYnMtc2VsZWN0aW9uLWJhci1jb2xvcjogd2hpdGU7CiAgICAgICAgLS1wYXBlci10YWJzLWNvbnRlbnQ6IHsKICAgICAgICAgIC13ZWJraXQtZm9udC1zbW9vdGhpbmc6IGFudGlhbGlhc2VkOwogICAgICAgIH0KICAgICAgfQogICAgICB0Zi1ocGFyYW1zLXRhYmxlLXZpZXcgewogICAgICAgIHdpZHRoOiAxMDAlOwogICAgICAgIGhlaWdodDogMTAwJTsKICAgICAgfQogICAgICAuaGVscC1hbmQtZmVlZGJhY2sgewogICAgICAgIGRpc3BsYXk6IGlubGluZS1mbGV4OyAvKiBFbnN1cmUgdGhhdCBpY29ucyBzdGF5IGFsaWduZWQgKi8KICAgICAgICBqdXN0aWZ5LWNvbnRlbnQ6IGZsZXgtZW5kOwogICAgICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7CiAgICAgICAgdGV4dC1hbGlnbjogcmlnaHQ7CiAgICAgICAgY29sb3I6IHdoaXRlOwogICAgICB9CiAgICAgICNidWctcmVwb3J0IHsKICAgICAgICBib3JkZXI6IHNvbGlkIGJsYWNrOwogICAgICAgIGJhY2tncm91bmQ6IHJlZDsKICAgICAgICB3aGl0ZS1zcGFjZTogbm9ybWFsOwogICAgICAgIHdvcmQtYnJlYWs6IGJyZWFrLXdvcmRzOwogICAgICAgIGZvbnQtc2l6ZTogMTJweDsKICAgICAgICBtYXgtd2lkdGg6IDE1MHB4OwogICAgICAgIHRleHQtYWxpZ246IGxlZnQ7CiAgICAgIH0KICAgICAgLmhlbHAtYW5kLWZlZWRiYWNrIGEgewogICAgICAgIGNvbG9yOiB3aGl0ZTsKICAgICAgICB0ZXh0LWRlY29yYXRpb246IG5vbmU7CiAgICAgIH0KICAgIDwvc3R5bGU+CiAgYCx0KFtvKHt0eXBlOk9iamVjdH0pLGUoImRlc2lnbjp0eXBlIixPYmplY3QpXSxqRHQucHJvdG90eXBlLCJiYWNrZW5kIix2b2lkIDApLHQoW28oe3R5cGU6U3RyaW5nfSksZSgiZGVzaWduOnR5cGUiLFN0cmluZyldLGpEdC5wcm90b3R5cGUsImhlbHBVcmwiLHZvaWQgMCksdChbbyh7dHlwZTpTdHJpbmd9KSxlKCJkZXNpZ246dHlwZSIsU3RyaW5nKV0sakR0LnByb3RvdHlwZSwiYnVnUmVwb3J0VXJsIix2b2lkIDApLHQoW28oe3R5cGU6U3RyaW5nfSksZSgiZGVzaWduOnR5cGUiLFN0cmluZyldLGpEdC5wcm90b3R5cGUsImV4cGVyaW1lbnROYW1lIix2b2lkIDApLHQoW28oe3R5cGU6T2JqZWN0fSksZSgiZGVzaWduOnR5cGUiLE9iamVjdCldLGpEdC5wcm90b3R5cGUsImNvbmZpZ3VyYXRpb24iLHZvaWQgMCksdChbbyh7dHlwZTpBcnJheX0pLGUoImRlc2lnbjp0eXBlIixBcnJheSldLGpEdC5wcm90b3R5cGUsInNlc3Npb25Hcm91cHMiLHZvaWQgMCksdChbbyh7dHlwZTpOdW1iZXJ9KSxlKCJkZXNpZ246dHlwZSIsTnVtYmVyKV0sakR0LnByb3RvdHlwZSwiX3NlbGVjdGVkVGFiIix2b2lkIDApLGpEdD10KFtpKCJ0Zi1ocGFyYW1zLXNlc3Npb25zLXBhbmUiKV0sakR0KTtjbGFzcyBVRHR7Y29uc3RydWN0b3IodCxlLG49ITApe3RoaXMuX2FwaVVybD10LHRoaXMuX3JlcXVlc3RNYW5hZ2VyPWUsdGhpcy5fdXNlSHR0cEdldD1ufWdldEV4cGVyaW1lbnQodCl7cmV0dXJuIHRoaXMuX3NlbmRSZXF1ZXN0KCJleHBlcmltZW50Iix0KX1nZXREb3dubG9hZFVybCh0LGUsbil7cmV0dXJuIHRoaXMuX2FwaVVybCsiL2Rvd25sb2FkX2RhdGE/IituZXcgVVJMU2VhcmNoUGFyYW1zKHtmb3JtYXQ6dCxjb2x1bW5zVmlzaWJpbGl0eTpKU09OLnN0cmluZ2lmeShuKSxyZXF1ZXN0OkpTT04uc3RyaW5naWZ5KGUpfSl9bGlzdFNlc3Npb25Hcm91cHModCl7cmV0dXJuIHRoaXMuX3NlbmRSZXF1ZXN0KCJzZXNzaW9uX2dyb3VwcyIsdCl9bGlzdE1ldHJpY0V2YWxzKHQpe3JldHVybiB0aGlzLl9zZW5kUmVxdWVzdCgibWV0cmljX2V2YWxzIix0KX1fc2VuZFJlcXVlc3QodCxlKXtpZih0aGlzLl91c2VIdHRwR2V0KXtjb25zdCBuPWVuY29kZVVSSUNvbXBvbmVudChKU09OLnN0cmluZ2lmeShlKSk7cmV0dXJuIHRoaXMuX3JlcXVlc3RNYW5hZ2VyLnJlcXVlc3QodGhpcy5fYXBpVXJsKyIvIit0KyI/cmVxdWVzdD0iK24pfWNvbnN0IG49bmV3IHVyO3JldHVybiBuLndpdGhDcmVkZW50aWFscz0hMCxuLm1ldGhvZFR5cGU9Y3IuUE9TVCxuLmNvbnRlbnRUeXBlPSJ0ZXh0L3BsYWluIixuLmJvZHk9SlNPTi5zdHJpbmdpZnkoZSksdGhpcy5fcmVxdWVzdE1hbmFnZXIucmVxdWVzdFdpdGhPcHRpb25zKHRoaXMuX2FwaVVybCsiLyIrdCxuKX19bGV0IEdEdD1jbGFzcyBleHRlbmRzKHRyKHllKSl7cmVsb2FkKCl7dGhpcy4kWyJxdWVyeS1wYW5lIl0ucmVsb2FkKCl9fTtHRHQudGVtcGxhdGU9X2VgCiAgICA8aHBhcmFtcy1zcGxpdC1sYXlvdXQ+CiAgICAgIDxkaXYgc2xvdD0iY29udGVudCIgY2xhc3M9InNpZGViYXIiPgogICAgICAgIDx0Zi1ocGFyYW1zLXF1ZXJ5LXBhbmUKICAgICAgICAgIGlkPSJxdWVyeS1wYW5lIgogICAgICAgICAgYmFja2VuZD0iW1tiYWNrZW5kXV0iCiAgICAgICAgICBleHBlcmltZW50LW5hbWU9IltbZXhwZXJpbWVudE5hbWVdXSIKICAgICAgICAgIGNvbmZpZ3VyYXRpb249Int7X2NvbmZpZ3VyYXRpb259fSIKICAgICAgICAgIHNlc3Npb24tZ3JvdXBzPSJ7e19zZXNzaW9uR3JvdXBzfX0iCiAgICAgICAgICBkYXRhLWxvYWRlZC13aXRoLW5vbi1lbXB0eS1ocGFyYW1zPSJ7e19kYXRhTG9hZGVkV2l0aE5vbkVtcHR5SHBhcmFtc319IgogICAgICAgICAgZGF0YS1sb2FkZWQtd2l0aC1lbXB0eS1ocGFyYW1zPSJ7e19kYXRhTG9hZGVkV2l0aEVtcHR5SHBhcmFtc319IgogICAgICAgID4KICAgICAgICA8L3RmLWhwYXJhbXMtcXVlcnktcGFuZT4KICAgICAgPC9kaXY+CiAgICAgIDxkaXYgc2xvdD0iY29udGVudCIgY2xhc3M9ImNlbnRlciI+CiAgICAgICAgPHRlbXBsYXRlIGlzPSJkb20taWYiIGlmPSJbW19kYXRhTG9hZGVkV2l0aEVtcHR5SHBhcmFtc11dIj4KICAgICAgICAgIDxkaXYgY2xhc3M9Im5vLWRhdGEtd2FybmluZyI+CiAgICAgICAgICAgIDxoMz5ObyBocGFyYW1zIGRhdGEgd2FzIGZvdW5kLjwvaDM+CiAgICAgICAgICAgIDxwPlByb2JhYmxlIGNhdXNlczo8L3A+CiAgICAgICAgICAgIDx1bD4KICAgICAgICAgICAgICA8bGk+WW91IGhhdmVu4oCZdCB3cml0dGVuIGFueSBocGFyYW1zIGRhdGEgdG8geW91ciBldmVudCBmaWxlcy48L2xpPgogICAgICAgICAgICAgIDxsaT4KICAgICAgICAgICAgICAgIEV2ZW50IGZpbGVzIGFyZSBzdGlsbCBiZWluZyBsb2FkZWQgKHRyeSByZWxvYWRpbmcgdGhpcyBwYWdlKS4KICAgICAgICAgICAgICA8L2xpPgogICAgICAgICAgICAgIDxsaT5UZW5zb3JCb2FyZCBjYW7igJl0IGZpbmQgeW91ciBldmVudCBmaWxlcy48L2xpPgogICAgICAgICAgICA8L3VsPgoKICAgICAgICAgICAgPHA+CiAgICAgICAgICAgICAgSWYgeW914oCZcmUgbmV3IHRvIHVzaW5nIFRlbnNvckJvYXJkLCBhbmQgd2FudCB0byBmaW5kIG91dCBob3cgdG8KICAgICAgICAgICAgICBhZGQgZGF0YSBhbmQgc2V0IHVwIHlvdXIgZXZlbnQgZmlsZXMsIGNoZWNrIG91dCB0aGUKICAgICAgICAgICAgICA8YQogICAgICAgICAgICAgICAgaHJlZj0iaHR0cHM6Ly9naXRodWIuY29tL3RlbnNvcmZsb3cvdGVuc29yYm9hcmQvYmxvYi9tYXN0ZXIvUkVBRE1FLm1kIgogICAgICAgICAgICAgICAgPlJFQURNRTwvYQogICAgICAgICAgICAgID4KICAgICAgICAgICAgICBhbmQgcGVyaGFwcyB0aGUKICAgICAgICAgICAgICA8YQogICAgICAgICAgICAgICAgaHJlZj0iaHR0cHM6Ly93d3cudGVuc29yZmxvdy5vcmcvZ2V0X3N0YXJ0ZWQvc3VtbWFyaWVzX2FuZF90ZW5zb3Jib2FyZCIKICAgICAgICAgICAgICAgID5UZW5zb3JCb2FyZCB0dXRvcmlhbDwvYQogICAgICAgICAgICAgID4uCiAgICAgICAgICAgIDwvcD4KCiAgICAgICAgICAgIDxwPgogICAgICAgICAgICAgIElmIHlvdSB0aGluayBUZW5zb3JCb2FyZCBpcyBjb25maWd1cmVkIHByb3Blcmx5LCBwbGVhc2Ugc2VlCiAgICAgICAgICAgICAgPGEKICAgICAgICAgICAgICAgIGhyZWY9Imh0dHBzOi8vZ2l0aHViLmNvbS90ZW5zb3JmbG93L3RlbnNvcmJvYXJkL2Jsb2IvbWFzdGVyL1JFQURNRS5tZCNteS10ZW5zb3Jib2FyZC1pc250LXNob3dpbmctYW55LWRhdGEtd2hhdHMtd3JvbmciCiAgICAgICAgICAgICAgICA+dGhlIHNlY3Rpb24gb2YgdGhlIFJFQURNRSBkZXZvdGVkIHRvIG1pc3NpbmcgZGF0YSBwcm9ibGVtczwvYQogICAgICAgICAgICAgID4KICAgICAgICAgICAgICBhbmQgY29uc2lkZXIgZmlsaW5nIGFuIGlzc3VlIG9uIEdpdEh1Yi4KICAgICAgICAgICAgPC9wPgogICAgICAgICAgPC9kaXY+CiAgICAgICAgPC90ZW1wbGF0ZT4KCiAgICAgICAgPHRlbXBsYXRlIGlzPSJkb20taWYiIGlmPSJbW19kYXRhTG9hZGVkV2l0aE5vbkVtcHR5SHBhcmFtc11dIj4KICAgICAgICAgIDx0Zi1ocGFyYW1zLXNlc3Npb25zLXBhbmUKICAgICAgICAgICAgaWQ9InNlc3Npb25zLXBhbmUiCiAgICAgICAgICAgIGJhY2tlbmQ9IltbYmFja2VuZF1dIgogICAgICAgICAgICBoZWxwLXVybD0iW1toZWxwVXJsXV0iCiAgICAgICAgICAgIGJ1Zy1yZXBvcnQtdXJsPSJbW2J1Z1JlcG9ydFVybF1dIgogICAgICAgICAgICBleHBlcmltZW50LW5hbWU9IltbZXhwZXJpbWVudE5hbWVdXSIKICAgICAgICAgICAgY29uZmlndXJhdGlvbj0iW1tfY29uZmlndXJhdGlvbl1dIgogICAgICAgICAgICBzZXNzaW9uLWdyb3Vwcz0iW1tfc2Vzc2lvbkdyb3Vwc11dIgogICAgICAgICAgPgogICAgICAgICAgPC90Zi1ocGFyYW1zLXNlc3Npb25zLXBhbmU+CiAgICAgICAgPC90ZW1wbGF0ZT4KICAgICAgPC9kaXY+CiAgICA8L2hwYXJhbXMtc3BsaXQtbGF5b3V0PgogICAgPHN0eWxlPgogICAgICBocGFyYW1zLXNwbGl0LWxheW91dCB7CiAgICAgICAgd2lkdGg6IDEwMCU7CiAgICAgIH0KCiAgICAgIC5zaWRlYmFyIHsKICAgICAgICB3aWR0aDogMjAlOwogICAgICAgIGhlaWdodDogMTAwJTsKICAgICAgICBvdmVyZmxvdzogYXV0bzsKICAgICAgICBmbGV4LWdyb3c6IDA7CiAgICAgICAgZmxleC1zaHJpbms6IDA7CiAgICAgICAgbWluLXdpZHRoOiAxMCU7CiAgICAgIH0KCiAgICAgIC5jZW50ZXIgewogICAgICAgIGhlaWdodDogMTAwJTsKICAgICAgICBvdmVyZmxvdy15OiBhdXRvOwogICAgICAgIGZsZXgtZ3JvdzogMTsKICAgICAgICBmbGV4LXNocmluazogMTsKICAgICAgICB3aWR0aDogODAlOwogICAgICB9CgogICAgICA6aG9zdCB7CiAgICAgICAgZGlzcGxheTogZmxleDsKICAgICAgICBmbGV4LWRpcmVjdGlvbjogcm93OwogICAgICAgIGhlaWdodDogMTAwJTsKICAgICAgICB3aWR0aDogMTAwJTsKICAgICAgfQoKICAgICAgLm5vLWRhdGEtd2FybmluZyB7CiAgICAgICAgbWF4LXdpZHRoOiA1NDBweDsKICAgICAgICBtYXJnaW46IDgwcHggYXV0byAwIGF1dG87CiAgICAgIH0KICAgIDwvc3R5bGU+CiAgYCx0KFtvKHt0eXBlOk9iamVjdH0pLGUoImRlc2lnbjp0eXBlIixVRHQpXSxHRHQucHJvdG90eXBlLCJiYWNrZW5kIix2b2lkIDApLHQoW28oe3R5cGU6U3RyaW5nfSksZSgiZGVzaWduOnR5cGUiLFN0cmluZyldLEdEdC5wcm90b3R5cGUsImV4cGVyaW1lbnROYW1lIix2b2lkIDApLHQoW28oe3R5cGU6U3RyaW5nfSksZSgiZGVzaWduOnR5cGUiLFN0cmluZyldLEdEdC5wcm90b3R5cGUsImhlbHBVcmwiLHZvaWQgMCksdChbbyh7dHlwZTpTdHJpbmd9KSxlKCJkZXNpZ246dHlwZSIsU3RyaW5nKV0sR0R0LnByb3RvdHlwZSwiYnVnUmVwb3J0VXJsIix2b2lkIDApLHQoW28oe3R5cGU6T2JqZWN0fSksZSgiZGVzaWduOnR5cGUiLE9iamVjdCldLEdEdC5wcm90b3R5cGUsIl9jb25maWd1cmF0aW9uIix2b2lkIDApLHQoW28oe3R5cGU6QXJyYXl9KSxlKCJkZXNpZ246dHlwZSIsQXJyYXkpXSxHRHQucHJvdG90eXBlLCJfc2Vzc2lvbkdyb3VwcyIsdm9pZCAwKSx0KFtvKHt0eXBlOkJvb2xlYW59KSxlKCJkZXNpZ246dHlwZSIsQm9vbGVhbildLEdEdC5wcm90b3R5cGUsIl9kYXRhTG9hZGVkV2l0aE5vbkVtcHR5SHBhcmFtcyIsdm9pZCAwKSx0KFtvKHt0eXBlOkJvb2xlYW59KSxlKCJkZXNpZ246dHlwZSIsQm9vbGVhbildLEdEdC5wcm90b3R5cGUsIl9kYXRhTG9hZGVkV2l0aEVtcHR5SHBhcmFtcyIsdm9pZCAwKSxHRHQ9dChbaSgidGYtaHBhcmFtcy1tYWluIildLEdEdCk7Y29uc3QgV0R0PSJ0cnVlIj09PW5ldyBVUkxTZWFyY2hQYXJhbXMod2luZG93LmxvY2F0aW9uLnNlYXJjaCkuZ2V0KCJ0ZW5zb3Jib2FyZENvbGFiIik7bGV0IHFEdD1jbGFzcyBleHRlbmRzKHRyKHllKSl7Y29uc3RydWN0b3IoKXtzdXBlciguLi5hcmd1bWVudHMpLHRoaXMuX2JhY2tlbmQ9bmV3IFVEdChncigpLnBsdWdpblJvdXRlKCJocGFyYW1zIiwiIiksbmV3IGhyLFdEdCl9cmVsb2FkKCl7dGhpcy4kWyJocGFyYW1zLW1haW4iXS5yZWxvYWQoKX19O3FEdC50ZW1wbGF0ZT1fZWAKICAgIDwhLS0gVGVuc29yQm9hcmQgZG9lcyBub3Qgc3BlY2lmeSBhbiBleHBlcmltZW50TmFtZS4gQ3VycmVudGx5IGl0IG9ubHkKICAgICAgICAgc3VwcG9ydHMgb25lIGV4cGVyaW1lbnQgcGVyIGludm9jYXRpb24uIC0tPgogICAgPHRmLWhwYXJhbXMtbWFpbgogICAgICBpZD0iaHBhcmFtcy1tYWluIgogICAgICBiYWNrZW5kPSJbW19iYWNrZW5kXV0iCiAgICAgIGV4cGVyaW1lbnQtbmFtZT0iIgogICAgPgogICAgPC90Zi1ocGFyYW1zLW1haW4+CiAgYCx0KFtvKHt0eXBlOk9iamVjdH0pLGUoImRlc2lnbjp0eXBlIixPYmplY3QpXSxxRHQucHJvdG90eXBlLCJfYmFja2VuZCIsdm9pZCAwKSxxRHQ9dChbaSgidGYtaHBhcmFtcy1kYXNoYm9hcmQiKV0scUR0KTtsZXQgWUR0PWNsYXNzIGV4dGVuZHModHIoeWUpKXtjb25zdHJ1Y3Rvcigpe3N1cGVyKC4uLmFyZ3VtZW50cyksdGhpcy5hY3R1YWxTaXplPSExLHRoaXMuYnJpZ2h0bmVzc0FkanVzdG1lbnQ9LjUsdGhpcy5jb250cmFzdFBlcmNlbnRhZ2U9MCx0aGlzLl9tZXRhZGF0YUNhbmNlbGxlcj1uZXcgRU8sdGhpcy5faW1hZ2VDYW5jZWxsZXI9bmV3IEVPLHRoaXMuX3N0ZXBzPVtdLHRoaXMuX2lzSW1hZ2VMb2FkaW5nPSExfWdldCBfcnVuQ29sb3IoKXtyZXR1cm4geE8odGhpcy5ydW4pfWdldCBfaGFzQXRMZWFzdE9uZVN0ZXAoKXt2YXIgdD10aGlzLl9zdGVwcztyZXR1cm4hIXQmJnQubGVuZ3RoPjB9Z2V0IF9oYXNNdWx0aXBsZVN0ZXBzKCl7dmFyIHQ9dGhpcy5fc3RlcHM7cmV0dXJuISF0JiZ0Lmxlbmd0aD4xfWdldCBfY3VycmVudFN0ZXAoKXtyZXR1cm4gdGhpcy5fc3RlcHNbdGhpcy5fc3RlcEluZGV4XXx8bnVsbH1nZXQgX3N0ZXBWYWx1ZSgpe3ZhciB0PXRoaXMuX2N1cnJlbnRTdGVwO3JldHVybiB0P3Quc3RlcDowfWdldCBfY3VycmVudFdhbGxUaW1lKCl7dmFyIHQ9dGhpcy5fY3VycmVudFN0ZXA7cmV0dXJuIHQ/QU8odC53YWxsX3RpbWUpOiIifWdldCBfbWF4U3RlcEluZGV4KCl7cmV0dXJuIHRoaXMuX3N0ZXBzLmxlbmd0aC0xfWdldCBfc2FtcGxlVGV4dCgpe3JldHVybmAke3RoaXMuc2FtcGxlKzF9YH1nZXQgX2hhc011bHRpcGxlU2FtcGxlcygpe3JldHVybiB0aGlzLm9mU2FtcGxlcz4xfV9nZXRBcmlhRXhwYW5kZWQoKXtyZXR1cm4gdGhpcy5hY3R1YWxTaXplPyJ0cnVlIjoiZmFsc2UifWF0dGFjaGVkKCl7dGhpcy5yZWxvYWQoKX1yZWxvYWQoKXtpZighdGhpcy5pc0F0dGFjaGVkKXJldHVybjt0aGlzLl9tZXRhZGF0YUNhbmNlbGxlci5jYW5jZWxBbGwoKTtjb25zdCB0PU9PKGdyKCkucGx1Z2luUm91dGUoImltYWdlcyIsIi9pbWFnZXMiKSx7dGFnOnRoaXMudGFnLHJ1bjp0aGlzLnJ1bixzYW1wbGU6dGhpcy5zYW1wbGV9KSxlPXRoaXMuX21ldGFkYXRhQ2FuY2VsbGVyLmNhbmNlbGxhYmxlKCh0PT57aWYodC5jYW5jZWxsZWQpcmV0dXJuO2NvbnN0IGU9dC52YWx1ZS5tYXAodGhpcy5fY3JlYXRlU3RlcERhdHVtLmJpbmQodGhpcykpO3RoaXMuc2V0KCJfc3RlcHMiLGUpLHRoaXMuc2V0KCJfc3RlcEluZGV4IixlLmxlbmd0aC0xKX0pKTt0aGlzLnJlcXVlc3RNYW5hZ2VyLnJlcXVlc3QodCkudGhlbihlKX1fY3JlYXRlU3RlcERhdHVtKHQpe2xldCBlPWdyKCkucGx1Z2luUm91dGUoImltYWdlcyIsIi9pbmRpdmlkdWFsSW1hZ2UiKTtyZXR1cm4gZT1PTyhlLHt0czp0LndhbGxfdGltZX0pLGUrPSImIit0LnF1ZXJ5LHt3YWxsX3RpbWU6bmV3IERhdGUoMWUzKnQud2FsbF90aW1lKSxzdGVwOnQuc3RlcCx1cmw6ZX19X3VwZGF0ZUltYWdlVXJsKCl7dmFyIHQ9dGhpcy5fY3VycmVudFN0ZXAsZT10aGlzLmJyaWdodG5lc3NBZGp1c3RtZW50LG49dGhpcy5jb250cmFzdFBlcmNlbnRhZ2U7aWYoIXQpcmV0dXJuO2NvbnN0IGk9bmV3IEltYWdlO3RoaXMuX2ltYWdlQ2FuY2VsbGVyLmNhbmNlbEFsbCgpLGkub25sb2FkPWkub25lcnJvcj10aGlzLl9pbWFnZUNhbmNlbGxlci5jYW5jZWxsYWJsZSgodD0+e2lmKHQuY2FuY2VsbGVkKXJldHVybjtjb25zdCBlPXRoaXMuJCQoIiNtYWluLWltYWdlLWNvbnRhaW5lciIpO2UudGV4dENvbnRlbnQ9IiIscWkoZSkuYXBwZW5kQ2hpbGQoaSksdGhpcy5zZXQoIl9pc0ltYWdlTG9hZGluZyIsITEpfSkpLmJpbmQodGhpcyksaS5zdHlsZS5maWx0ZXI9YGNvbnRyYXN0KCR7bn0lKSBgLGkuc3R5bGUuZmlsdGVyKz1gYnJpZ2h0bmVzcygke2V9KWAsdGhpcy5zZXQoIl9pc0ltYWdlTG9hZGluZyIsITApLGkuc3JjPXQudXJsfV9oYW5kbGVUYXAodCl7dGhpcy5zZXQoImFjdHVhbFNpemUiLCF0aGlzLmFjdHVhbFNpemUpfV90b0xvY2FsZVN0cmluZyh0KXtyZXR1cm4gdC50b0xvY2FsZVN0cmluZygpfX07WUR0LnRlbXBsYXRlPV9lYAogICAgPHRmLWNhcmQtaGVhZGluZwogICAgICB0YWc9IltbdGFnXV0iCiAgICAgIHJ1bj0iW1tydW5dXSIKICAgICAgZGlzcGxheS1uYW1lPSJbW3RhZ01ldGFkYXRhLmRpc3BsYXlOYW1lXV0iCiAgICAgIGRlc2NyaXB0aW9uPSJbW3RhZ01ldGFkYXRhLmRlc2NyaXB0aW9uXV0iCiAgICAgIGNvbG9yPSJbW19ydW5Db2xvcl1dIgogICAgPgogICAgICA8dGVtcGxhdGUgaXM9ImRvbS1pZiIgaWY9IltbX2hhc011bHRpcGxlU2FtcGxlc11dIj4KICAgICAgICA8ZGl2PnNhbXBsZTogW1tfc2FtcGxlVGV4dF1dIG9mIFtbb2ZTYW1wbGVzXV08L2Rpdj4KICAgICAgPC90ZW1wbGF0ZT4KICAgICAgPHRlbXBsYXRlIGlzPSJkb20taWYiIGlmPSJbW19oYXNBdExlYXN0T25lU3RlcF1dIj4KICAgICAgICA8ZGl2IGNsYXNzPSJoZWFkaW5nLXJvdyI+CiAgICAgICAgICA8ZGl2IGNsYXNzPSJoZWFkaW5nLWxhYmVsIj4KICAgICAgICAgICAgc3RlcAogICAgICAgICAgICA8c3BhbiBzdHlsZT0iZm9udC13ZWlnaHQ6IGJvbGQiCiAgICAgICAgICAgICAgPltbX3RvTG9jYWxlU3RyaW5nKF9zdGVwVmFsdWUpXV08L3NwYW4KICAgICAgICAgICAgPgogICAgICAgICAgPC9kaXY+CiAgICAgICAgICA8ZGl2IGNsYXNzPSJoZWFkaW5nLWxhYmVsIGhlYWRpbmctcmlnaHQgZGF0ZXRpbWUiPgogICAgICAgICAgICA8dGVtcGxhdGUgaXM9ImRvbS1pZiIgaWY9IltbX2N1cnJlbnRXYWxsVGltZV1dIj4KICAgICAgICAgICAgICBbW19jdXJyZW50V2FsbFRpbWVdXQogICAgICAgICAgICA8L3RlbXBsYXRlPgogICAgICAgICAgPC9kaXY+CiAgICAgICAgICA8ZGl2IGNsYXNzPSJsYWJlbCByaWdodCI+CiAgICAgICAgICAgIDxwYXBlci1zcGlubmVyLWxpdGUgYWN0aXZlIGhpZGRlbiQ9IltbIV9pc0ltYWdlTG9hZGluZ11dIj4KICAgICAgICAgICAgPC9wYXBlci1zcGlubmVyLWxpdGU+CiAgICAgICAgICA8L2Rpdj4KICAgICAgICA8L2Rpdj4KICAgICAgPC90ZW1wbGF0ZT4KICAgICAgPHRlbXBsYXRlIGlzPSJkb20taWYiIGlmPSJbW19oYXNNdWx0aXBsZVN0ZXBzXV0iPgogICAgICAgIDxkaXY+CiAgICAgICAgICA8cGFwZXItc2xpZGVyCiAgICAgICAgICAgIGlkPSJzdGVwcyIKICAgICAgICAgICAgaW1tZWRpYXRlLXZhbHVlPSJ7e19zdGVwSW5kZXh9fSIKICAgICAgICAgICAgbWF4PSJbW19tYXhTdGVwSW5kZXhdXSIKICAgICAgICAgICAgbWF4LW1hcmtlcnM9IltbX21heFN0ZXBJbmRleF1dIgogICAgICAgICAgICBzbmFwcwogICAgICAgICAgICBzdGVwPSIxIgogICAgICAgICAgICB2YWx1ZT0ie3tfc3RlcEluZGV4fX0iCiAgICAgICAgICA+PC9wYXBlci1zbGlkZXI+CiAgICAgICAgPC9kaXY+CiAgICAgIDwvdGVtcGxhdGU+CiAgICA8L3RmLWNhcmQtaGVhZGluZz4KCiAgICA8IS0tIFNlbWFudGljYWxseSBhIGJ1dHRvbiBidXQgPGltZz4gaW5zaWRlIGEgPGJ1dHRvbj4gZGlzYWxsb3dzIHVzZXIgdG8gZG8KICAgIGFuIGludGVyZXN0aW5nIG9wZXJhdGlvbiBsaWtlICJDb3B5IEltYWdlIiBpbiBub24tQ2hyb21pdW0gYnJvd3NlcnMuIC0tPgogICAgPGEKICAgICAgaWQ9Im1haW4taW1hZ2UtY29udGFpbmVyIgogICAgICByb2xlPSJidXR0b24iCiAgICAgIGFyaWEtbGFiZWw9IlRvZ2dsZSBhY3R1YWwgc2l6ZSIKICAgICAgYXJpYS1leHBhbmRlZCQ9IltbX2dldEFyaWFFeHBhbmRlZChhY3R1YWxTaXplKV1dIgogICAgICBvbi10YXA9Il9oYW5kbGVUYXAiCiAgICA+PC9hPgoKICAgIDxzdHlsZSBpbmNsdWRlPSJ0Zi1jYXJkLWhlYWRpbmctc3R5bGUiPgogICAgICAvKiogTWFrZSBidXR0b24gYSBkaXYuICovCiAgICAgIGJ1dHRvbiB7CiAgICAgICAgd2lkdGg6IDEwMCU7CiAgICAgICAgZGlzcGxheTogYmxvY2s7CiAgICAgICAgYmFja2dyb3VuZDogbm9uZTsKICAgICAgICBib3JkZXI6IDA7CiAgICAgICAgcGFkZGluZzogMDsKICAgICAgfQoKICAgICAgLyoqIEZpcmVmb3g6IEdldCByaWQgb2YgZG90dGVkIGxpbmUgaW5zaWRlIGJ1dHRvbi4gKi8KICAgICAgYnV0dG9uOjotbW96LWZvY3VzLWlubmVyIHsKICAgICAgICBib3JkZXI6IDA7CiAgICAgICAgcGFkZGluZzogMDsKICAgICAgfQoKICAgICAgLyoqIEZpcmVmb3g6IFNpbXVsYXRlIENocm9tZSdzIG91dGVyIGdsb3cgb24gYnV0dG9uIHdoZW4gZm9jdXNlZC4gKi8KICAgICAgYnV0dG9uOi1tb3otZm9jdXNyaW5nIHsKICAgICAgICBvdXRsaW5lOiBub25lOwogICAgICAgIGJveC1zaGFkb3c6IDBweCAwcHggMXB4IDJweCBIaWdobGlnaHQ7CiAgICAgIH0KCiAgICAgIDpob3N0IHsKICAgICAgICBkaXNwbGF5OiBibG9jazsKICAgICAgICB3aWR0aDogMzUwcHg7CiAgICAgICAgaGVpZ2h0OiBhdXRvOwogICAgICAgIHBvc2l0aW9uOiByZWxhdGl2ZTsKICAgICAgICBtYXJnaW46IDAgMTVweCA0MHB4IDA7CiAgICAgICAgb3ZlcmZsb3cteDogYXV0bzsKICAgICAgfQoKICAgICAgLyoqIFdoZW4gYWN0dWFsIHNpemUgc2hvd24gaXMgb24sIHVzZSB0aGUgYWN0dWFsIGltYWdlIHdpZHRoLiAqLwogICAgICA6aG9zdChbYWN0dWFsLXNpemVdKSB7CiAgICAgICAgbWF4LXdpZHRoOiAxMDAlOwogICAgICAgIHdpZHRoOiBhdXRvOwogICAgICB9CgogICAgICA6aG9zdChbYWN0dWFsLXNpemVdKSAjbWFpbi1pbWFnZS1jb250YWluZXIgewogICAgICAgIG1heC1oZWlnaHQ6IG5vbmU7CiAgICAgICAgd2lkdGg6IGF1dG87CiAgICAgIH0KCiAgICAgIDpob3N0KFthY3R1YWwtc2l6ZV0pICNtYWluLWltYWdlLWNvbnRhaW5lciBpbWcgewogICAgICAgIHdpZHRoOiBhdXRvOwogICAgICB9CgogICAgICBwYXBlci1zcGlubmVyLWxpdGUgewogICAgICAgIHdpZHRoOiAxNHB4OwogICAgICAgIGhlaWdodDogMTRweDsKICAgICAgICB2ZXJ0aWNhbC1hbGlnbjogdGV4dC1ib3R0b207CiAgICAgICAgLS1wYXBlci1zcGlubmVyLWNvbG9yOiB2YXIoLS10Yi1vcmFuZ2Utc3Ryb25nKTsKICAgICAgfQoKICAgICAgI3N0ZXBzIHsKICAgICAgICBoZWlnaHQ6IDE1cHg7CiAgICAgICAgbWFyZ2luOiAwIDAgMCAtMTVweDsKICAgICAgICAvKgogICAgICAgICAqIDMxIGNvbWVzIGZyb20gYWRkaW5nIGEgcGFkZGluZyBvZiAxNXB4IGZyb20gYm90aCBzaWRlcyBvZiB0aGUKICAgICAgICAgKiBwYXBlci1zbGlkZXIsIHN1YnRyYWN0aW5nIDFweCBzbyB0aGF0IHRoZSBzbGlkZXIgd2lkdGggYWxpZ25zCiAgICAgICAgICogd2l0aCB0aGUgaW1hZ2UgKHRoZSBsYXN0IHNsaWRlciBtYXJrZXIgdGFrZXMgdXAgMXB4KSwgYW5kCiAgICAgICAgICogYWRkaW5nIDJweCB0byBhY2NvdW50IGZvciBhIGJvcmRlciBvZiAxcHggb24gYm90aCBzaWRlcyBvZgogICAgICAgICAqIHRoZSBpbWFnZS4gMzAgLSAxICsgMi4KICAgICAgICAgKi8KICAgICAgICB3aWR0aDogY2FsYygxMDAlICsgMzFweCk7CiAgICAgICAgLS1wYXBlci1zbGlkZXItYWN0aXZlLWNvbG9yOiB2YXIoLS10Yi1vcmFuZ2Utc3Ryb25nKTsKICAgICAgICAtLXBhcGVyLXNsaWRlci1rbm9iLWNvbG9yOiB2YXIoLS10Yi1vcmFuZ2Utc3Ryb25nKTsKICAgICAgICAtLXBhcGVyLXNsaWRlci1rbm9iLXN0YXJ0LWJvcmRlci1jb2xvcjogdmFyKC0tdGItb3JhbmdlLXN0cm9uZyk7CiAgICAgICAgLS1wYXBlci1zbGlkZXIta25vYi1zdGFydC1jb2xvcjogdmFyKC0tdGItb3JhbmdlLXN0cm9uZyk7CiAgICAgICAgLS1wYXBlci1zbGlkZXItbWFya2Vycy1jb2xvcjogdmFyKC0tdGItb3JhbmdlLXN0cm9uZyk7CiAgICAgICAgLS1wYXBlci1zbGlkZXItcGluLWNvbG9yOiB2YXIoLS10Yi1vcmFuZ2Utc3Ryb25nKTsKICAgICAgICAtLXBhcGVyLXNsaWRlci1waW4tc3RhcnQtY29sb3I6IHZhcigtLXRiLW9yYW5nZS1zdHJvbmcpOwogICAgICB9CgogICAgICAjbWFpbi1pbWFnZS1jb250YWluZXIgewogICAgICAgIG1heC1oZWlnaHQ6IDEwMjRweDsKICAgICAgICBvdmVyZmxvdzogYXV0bzsKICAgICAgfQoKICAgICAgI21haW4taW1hZ2UtY29udGFpbmVyIGltZyB7CiAgICAgICAgY3Vyc29yOiBwb2ludGVyOwogICAgICAgIGRpc3BsYXk6IGJsb2NrOwogICAgICAgIGltYWdlLXJlbmRlcmluZzogLW1vei1jcmlzcC1lZGdlczsKICAgICAgICBpbWFnZS1yZW5kZXJpbmc6IHBpeGVsYXRlZDsKICAgICAgICB3aWR0aDogMTAwJTsKICAgICAgICBoZWlnaHQ6IGF1dG87CiAgICAgIH0KCiAgICAgIHBhcGVyLWljb24tYnV0dG9uIHsKICAgICAgICBjb2xvcjogIzIxOTZmMzsKICAgICAgICBib3JkZXItcmFkaXVzOiAxMDAlOwogICAgICAgIHdpZHRoOiAzMnB4OwogICAgICAgIGhlaWdodDogMzJweDsKICAgICAgICBwYWRkaW5nOiA0cHg7CiAgICAgIH0KICAgICAgcGFwZXItaWNvbi1idXR0b25bc2VsZWN0ZWRdIHsKICAgICAgICBiYWNrZ3JvdW5kOiB2YXIoLS10Yi11aS1saWdodC1hY2NlbnQpOwogICAgICB9CiAgICAgIFtoaWRkZW5dIHsKICAgICAgICBkaXNwbGF5OiBub25lOwogICAgICB9CiAgICA8L3N0eWxlPgogIGAsdChbbyh7dHlwZTpTdHJpbmd9KSxlKCJkZXNpZ246dHlwZSIsU3RyaW5nKV0sWUR0LnByb3RvdHlwZSwicnVuIix2b2lkIDApLHQoW28oe3R5cGU6U3RyaW5nfSksZSgiZGVzaWduOnR5cGUiLFN0cmluZyldLFlEdC5wcm90b3R5cGUsInRhZyIsdm9pZCAwKSx0KFtvKHt0eXBlOk51bWJlcn0pLGUoImRlc2lnbjp0eXBlIixOdW1iZXIpXSxZRHQucHJvdG90eXBlLCJzYW1wbGUiLHZvaWQgMCksdChbbyh7dHlwZTpOdW1iZXJ9KSxlKCJkZXNpZ246dHlwZSIsTnVtYmVyKV0sWUR0LnByb3RvdHlwZSwib2ZTYW1wbGVzIix2b2lkIDApLHQoW28oe3R5cGU6T2JqZWN0fSksZSgiZGVzaWduOnR5cGUiLE9iamVjdCldLFlEdC5wcm90b3R5cGUsInRhZ01ldGFkYXRhIix2b2lkIDApLHQoW28oe3R5cGU6Qm9vbGVhbixyZWZsZWN0VG9BdHRyaWJ1dGU6ITB9KSxlKCJkZXNpZ246dHlwZSIsQm9vbGVhbildLFlEdC5wcm90b3R5cGUsImFjdHVhbFNpemUiLHZvaWQgMCksdChbbyh7dHlwZTpOdW1iZXJ9KSxlKCJkZXNpZ246dHlwZSIsTnVtYmVyKV0sWUR0LnByb3RvdHlwZSwiYnJpZ2h0bmVzc0FkanVzdG1lbnQiLHZvaWQgMCksdChbbyh7dHlwZTpOdW1iZXJ9KSxlKCJkZXNpZ246dHlwZSIsTnVtYmVyKV0sWUR0LnByb3RvdHlwZSwiY29udHJhc3RQZXJjZW50YWdlIix2b2lkIDApLHQoW28oe3R5cGU6T2JqZWN0fSksZSgiZGVzaWduOnR5cGUiLGhyKV0sWUR0LnByb3RvdHlwZSwicmVxdWVzdE1hbmFnZXIiLHZvaWQgMCksdChbbyh7dHlwZTpPYmplY3R9KSxlKCJkZXNpZ246dHlwZSIsT2JqZWN0KV0sWUR0LnByb3RvdHlwZSwiX21ldGFkYXRhQ2FuY2VsbGVyIix2b2lkIDApLHQoW28oe3R5cGU6T2JqZWN0fSksZSgiZGVzaWduOnR5cGUiLE9iamVjdCldLFlEdC5wcm90b3R5cGUsIl9pbWFnZUNhbmNlbGxlciIsdm9pZCAwKSx0KFtvKHt0eXBlOkFycmF5LG5vdGlmeTohMH0pLGUoImRlc2lnbjp0eXBlIixBcnJheSldLFlEdC5wcm90b3R5cGUsIl9zdGVwcyIsdm9pZCAwKSx0KFtvKHt0eXBlOk51bWJlcixub3RpZnk6ITB9KSxlKCJkZXNpZ246dHlwZSIsTnVtYmVyKV0sWUR0LnByb3RvdHlwZSwiX3N0ZXBJbmRleCIsdm9pZCAwKSx0KFtvKHt0eXBlOkJvb2xlYW59KSxlKCJkZXNpZ246dHlwZSIsQm9vbGVhbildLFlEdC5wcm90b3R5cGUsIl9pc0ltYWdlTG9hZGluZyIsdm9pZCAwKSx0KFtzKCJydW4iKSxlKCJkZXNpZ246dHlwZSIsU3RyaW5nKSxlKCJkZXNpZ246cGFyYW10eXBlcyIsW10pXSxZRHQucHJvdG90eXBlLCJfcnVuQ29sb3IiLG51bGwpLHQoW3MoIl9zdGVwcyIpLGUoImRlc2lnbjp0eXBlIixCb29sZWFuKSxlKCJkZXNpZ246cGFyYW10eXBlcyIsW10pXSxZRHQucHJvdG90eXBlLCJfaGFzQXRMZWFzdE9uZVN0ZXAiLG51bGwpLHQoW3MoIl9zdGVwcyIpLGUoImRlc2lnbjp0eXBlIixCb29sZWFuKSxlKCJkZXNpZ246cGFyYW10eXBlcyIsW10pXSxZRHQucHJvdG90eXBlLCJfaGFzTXVsdGlwbGVTdGVwcyIsbnVsbCksdChbcygiX3N0ZXBzIiwiX3N0ZXBJbmRleCIpLGUoImRlc2lnbjp0eXBlIixPYmplY3QpLGUoImRlc2lnbjpwYXJhbXR5cGVzIixbXSldLFlEdC5wcm90b3R5cGUsIl9jdXJyZW50U3RlcCIsbnVsbCksdChbcygiX2N1cnJlbnRTdGVwIiksZSgiZGVzaWduOnR5cGUiLE51bWJlciksZSgiZGVzaWduOnBhcmFtdHlwZXMiLFtdKV0sWUR0LnByb3RvdHlwZSwiX3N0ZXBWYWx1ZSIsbnVsbCksdChbcygiX2N1cnJlbnRTdGVwIiksZSgiZGVzaWduOnR5cGUiLFN0cmluZyksZSgiZGVzaWduOnBhcmFtdHlwZXMiLFtdKV0sWUR0LnByb3RvdHlwZSwiX2N1cnJlbnRXYWxsVGltZSIsbnVsbCksdChbcygiX3N0ZXBzIiksZSgiZGVzaWduOnR5cGUiLE51bWJlciksZSgiZGVzaWduOnBhcmFtdHlwZXMiLFtdKV0sWUR0LnByb3RvdHlwZSwiX21heFN0ZXBJbmRleCIsbnVsbCksdChbcygic2FtcGxlIiksZSgiZGVzaWduOnR5cGUiLFN0cmluZyksZSgiZGVzaWduOnBhcmFtdHlwZXMiLFtdKV0sWUR0LnByb3RvdHlwZSwiX3NhbXBsZVRleHQiLG51bGwpLHQoW3MoIm9mU2FtcGxlcyIpLGUoImRlc2lnbjp0eXBlIixCb29sZWFuKSxlKCJkZXNpZ246cGFyYW10eXBlcyIsW10pXSxZRHQucHJvdG90eXBlLCJfaGFzTXVsdGlwbGVTYW1wbGVzIixudWxsKSx0KFthKCJydW4iLCJ0YWciKSxlKCJkZXNpZ246dHlwZSIsRnVuY3Rpb24pLGUoImRlc2lnbjpwYXJhbXR5cGVzIixbXSksZSgiZGVzaWduOnJldHVybnR5cGUiLHZvaWQgMCldLFlEdC5wcm90b3R5cGUsInJlbG9hZCIsbnVsbCksdChbYSgiX2N1cnJlbnRTdGVwIiwiYnJpZ2h0bmVzc0FkanVzdG1lbnQiLCJjb250cmFzdFBlcmNlbnRhZ2UiKSxlKCJkZXNpZ246dHlwZSIsRnVuY3Rpb24pLGUoImRlc2lnbjpwYXJhbXR5cGVzIixbXSksZSgiZGVzaWduOnJldHVybnR5cGUiLHZvaWQgMCldLFlEdC5wcm90b3R5cGUsIl91cGRhdGVJbWFnZVVybCIsbnVsbCksWUR0PXQoW2koInRmLWltYWdlLWxvYWRlciIpXSxZRHQpO2xldCBYRHQ9Y2xhc3MgZXh0ZW5kcyh0cih5ZSkpe2NvbnN0cnVjdG9yKCl7c3VwZXIoLi4uYXJndW1lbnRzKSx0aGlzLnJlbG9hZE9uUmVhZHk9ITAsdGhpcy5fZGVmYXVsdEJyaWdodG5lc3NBZGp1c3RtZW50PTEsdGhpcy5fZGVmYXVsdENvbnRyYXN0UGVyY2VudGFnZT0xMDAsdGhpcy5fYnJpZ2h0bmVzc0FkanVzdG1lbnQ9MSx0aGlzLl9jb250cmFzdFBlcmNlbnRhZ2U9MTAwLHRoaXMuX3JlcXVlc3RNYW5hZ2VyPW5ldyBocn1yZWFkeSgpe3N1cGVyLnJlYWR5KCksdGhpcy5yZWxvYWRPblJlYWR5JiZ0aGlzLnJlbG9hZCgpfXJlbG9hZCgpe3RoaXMuX2ZldGNoVGFncygpLnRoZW4oKCgpPT57dGhpcy5fcmVsb2FkSW1hZ2VzKCl9KSl9X2ZldGNoVGFncygpe2NvbnN0IHQ9Z3IoKS5wbHVnaW5Sb3V0ZSgiaW1hZ2VzIiwiL3RhZ3MiKTtyZXR1cm4gdGhpcy5fcmVxdWVzdE1hbmFnZXIucmVxdWVzdCh0KS50aGVuKCh0PT57aWYod2UuaXNFcXVhbCh0LHRoaXMuX3J1blRvVGFnSW5mbykpcmV0dXJuO2NvbnN0IGU9b3Iod2UubWFwVmFsdWVzKHQsKHQ9Pk9iamVjdC5rZXlzKHQpKSkpO3RoaXMuc2V0KCJfZGF0YU5vdEZvdW5kIiwwPT09ZS5sZW5ndGgpLHRoaXMuc2V0KCJfcnVuVG9UYWdJbmZvIix0KSx0aGlzLmFzeW5jKCgoKT0+e3RoaXMuc2V0KCJfY2F0ZWdvcmllc0RvbVJlYWR5IiwhMCl9KSl9KSl9X3JlbG9hZEltYWdlcygpe3RoaXMucm9vdC5xdWVyeVNlbGVjdG9yQWxsKCJ0Zi1pbWFnZS1sb2FkZXIiKS5mb3JFYWNoKCh0PT57dC5yZWxvYWQoKX0pKX1fc2hvdWxkT3Blbih0KXtyZXR1cm4gdDw9Mn1fcmVzZXRCcmlnaHRuZXNzKCl7dGhpcy5fYnJpZ2h0bmVzc0FkanVzdG1lbnQ9dGhpcy5fZGVmYXVsdEJyaWdodG5lc3NBZGp1c3RtZW50fV9yZXNldENvbnRyYXN0KCl7dGhpcy5fY29udHJhc3RQZXJjZW50YWdlPXRoaXMuX2RlZmF1bHRDb250cmFzdFBlcmNlbnRhZ2V9Z2V0IF9icmlnaHRuZXNzSXNEZWZhdWx0KCl7cmV0dXJuIHRoaXMuX2JyaWdodG5lc3NBZGp1c3RtZW50PT09dGhpcy5fZGVmYXVsdEJyaWdodG5lc3NBZGp1c3RtZW50fWdldCBfY29udHJhc3RJc0RlZmF1bHQoKXtyZXR1cm4gdGhpcy5fY29udHJhc3RQZXJjZW50YWdlPT09dGhpcy5fZGVmYXVsdENvbnRyYXN0UGVyY2VudGFnZX1nZXQgX2NhdGVnb3JpZXMoKXt2YXIgdD10aGlzLl9ydW5Ub1RhZ0luZm8sZT10aGlzLl9zZWxlY3RlZFJ1bnMsbj10aGlzLl90YWdGaWx0ZXI7ZnVuY3Rpb24gaShlKXtjb25zdCBuPXRbZS5ydW5dW2UudGFnXS5zYW1wbGVzO3JldHVybiB3ZS5yYW5nZShuKS5tYXAoKHQ9Pk9iamVjdC5hc3NpZ24oe30sZSx7c2FtcGxlOnQsb2ZTYW1wbGVzOm59KSkpfXJldHVybiBTcih3ZS5tYXBWYWx1ZXModCwodD0+T2JqZWN0LmtleXModCkpKSxlLG4pLm1hcCgodD0+T2JqZWN0LmFzc2lnbih7fSx0LHtpdGVtczpbXS5jb25jYXQuYXBwbHkoW10sdC5pdGVtcy5tYXAoaSkpfSkpKX1fdGFnTWV0YWRhdGEodCxlLG4pe3JldHVybiB0W2VdW25dfX07dmFyICREdCxLRHQsWkR0O1hEdC50ZW1wbGF0ZT1fZWAKICAgIDx0Zi1kYXNoYm9hcmQtbGF5b3V0PgogICAgICA8ZGl2IGNsYXNzPSJzaWRlYmFyIiBzbG90PSJzaWRlYmFyIj4KICAgICAgICA8ZGl2IGNsYXNzPSJzZXR0aW5ncyI+CiAgICAgICAgICA8ZGl2IGNsYXNzPSJzaWRlYmFyLXNlY3Rpb24iPgogICAgICAgICAgICA8ZGl2IGNsYXNzPSJsaW5lLWl0ZW0iPgogICAgICAgICAgICAgIDxwYXBlci1jaGVja2JveCBjaGVja2VkPSJ7e19hY3R1YWxTaXplfX0iCiAgICAgICAgICAgICAgICA+U2hvdyBhY3R1YWwgaW1hZ2Ugc2l6ZTwvcGFwZXItY2hlY2tib3gKICAgICAgICAgICAgICA+CiAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgPC9kaXY+CiAgICAgICAgICA8ZGl2IGNsYXNzPSJzaWRlYmFyLXNlY3Rpb24iPgogICAgICAgICAgICA8aDMgY2xhc3M9InRvb2x0aXAtY29udGFpbmVyIj5CcmlnaHRuZXNzIGFkanVzdG1lbnQ8L2gzPgogICAgICAgICAgICA8ZGl2IGNsYXNzPSJyZXNldHRhYmxlLXNsaWRlci1jb250YWluZXIiPgogICAgICAgICAgICAgIDxwYXBlci1zbGlkZXIKICAgICAgICAgICAgICAgIG1pbj0iMCIKICAgICAgICAgICAgICAgIG1heD0iMiIKICAgICAgICAgICAgICAgIHNuYXBzCiAgICAgICAgICAgICAgICBwaW4KICAgICAgICAgICAgICAgIHN0ZXA9IjAuMDEiCiAgICAgICAgICAgICAgICB2YWx1ZT0ie3tfYnJpZ2h0bmVzc0FkanVzdG1lbnR9fSIKICAgICAgICAgICAgICAgIGltbWVkaWF0ZS12YWx1ZT0ie3tfYnJpZ2h0bmVzc0FkanVzdG1lbnR9fSIKICAgICAgICAgICAgICA+PC9wYXBlci1zbGlkZXI+CiAgICAgICAgICAgICAgPHBhcGVyLWJ1dHRvbgogICAgICAgICAgICAgICAgY2xhc3M9IngtYnV0dG9uIgogICAgICAgICAgICAgICAgb24tdGFwPSJfcmVzZXRCcmlnaHRuZXNzIgogICAgICAgICAgICAgICAgZGlzYWJsZWQ9IltbX2JyaWdodG5lc3NJc0RlZmF1bHRdXSIKICAgICAgICAgICAgICAgID5SZXNldDwvcGFwZXItYnV0dG9uCiAgICAgICAgICAgICAgPgogICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgIDwvZGl2PgogICAgICAgICAgPGRpdiBjbGFzcz0ic2lkZWJhci1zZWN0aW9uIj4KICAgICAgICAgICAgPGgzIGNsYXNzPSJ0b29sdGlwLWNvbnRhaW5lciI+Q29udHJhc3QgYWRqdXN0bWVudDwvaDM+CiAgICAgICAgICAgIDxkaXYgY2xhc3M9InJlc2V0dGFibGUtc2xpZGVyLWNvbnRhaW5lciI+CiAgICAgICAgICAgICAgPHBhcGVyLXNsaWRlcgogICAgICAgICAgICAgICAgbWluPSIwIgogICAgICAgICAgICAgICAgbWF4PSI1MDAiCiAgICAgICAgICAgICAgICBzbmFwcwogICAgICAgICAgICAgICAgcGluCiAgICAgICAgICAgICAgICBzdGVwPSIxIgogICAgICAgICAgICAgICAgdmFsdWU9Int7X2NvbnRyYXN0UGVyY2VudGFnZX19IgogICAgICAgICAgICAgICAgaW1tZWRpYXRlLXZhbHVlPSJ7e19jb250cmFzdFBlcmNlbnRhZ2V9fSIKICAgICAgICAgICAgICA+PC9wYXBlci1zbGlkZXI+CiAgICAgICAgICAgICAgPHBhcGVyLWJ1dHRvbgogICAgICAgICAgICAgICAgY2xhc3M9IngtYnV0dG9uIgogICAgICAgICAgICAgICAgb24tdGFwPSJfcmVzZXRDb250cmFzdCIKICAgICAgICAgICAgICAgIGRpc2FibGVkPSJbW19jb250cmFzdElzRGVmYXVsdF1dIgogICAgICAgICAgICAgICAgPlJlc2V0PC9wYXBlci1idXR0b24KICAgICAgICAgICAgICA+CiAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgPC9kaXY+CiAgICAgICAgPC9kaXY+CiAgICAgICAgPGRpdiBjbGFzcz0ic2lkZWJhci1zZWN0aW9uIHJ1bnMtc2VsZWN0b3IiPgogICAgICAgICAgPHRmLXJ1bnMtc2VsZWN0b3IKICAgICAgICAgICAgaWQ9InJ1bnMtc2VsZWN0b3IiCiAgICAgICAgICAgIHNlbGVjdGVkLXJ1bnM9Int7X3NlbGVjdGVkUnVuc319IgogICAgICAgICAgPjwvdGYtcnVucy1zZWxlY3Rvcj4KICAgICAgICA8L2Rpdj4KICAgICAgPC9kaXY+CiAgICAgIDxkaXYgY2xhc3M9ImNlbnRlciIgc2xvdD0iY2VudGVyIj4KICAgICAgICA8dGVtcGxhdGUgaXM9ImRvbS1pZiIgaWY9IltbX2RhdGFOb3RGb3VuZF1dIj4KICAgICAgICAgIDxkaXYgY2xhc3M9Im5vLWRhdGEtd2FybmluZyI+CiAgICAgICAgICAgIDxoMz5ObyBpbWFnZSBkYXRhIHdhcyBmb3VuZC48L2gzPgogICAgICAgICAgICA8cD5Qcm9iYWJsZSBjYXVzZXM6PC9wPgogICAgICAgICAgICA8dWw+CiAgICAgICAgICAgICAgPGxpPllvdSBoYXZlbuKAmXQgd3JpdHRlbiBhbnkgaW1hZ2UgZGF0YSB0byB5b3VyIGV2ZW50IGZpbGVzLjwvbGk+CiAgICAgICAgICAgICAgPGxpPlRlbnNvckJvYXJkIGNhbuKAmXQgZmluZCB5b3VyIGV2ZW50IGZpbGVzLjwvbGk+CiAgICAgICAgICAgIDwvdWw+CgogICAgICAgICAgICA8cD4KICAgICAgICAgICAgICBJZiB5b3XigJlyZSBuZXcgdG8gdXNpbmcgVGVuc29yQm9hcmQsIGFuZCB3YW50IHRvIGZpbmQgb3V0IGhvdyB0bwogICAgICAgICAgICAgIGFkZCBkYXRhIGFuZCBzZXQgdXAgeW91ciBldmVudCBmaWxlcywgY2hlY2sgb3V0IHRoZQogICAgICAgICAgICAgIDxhCiAgICAgICAgICAgICAgICBocmVmPSJodHRwczovL2dpdGh1Yi5jb20vdGVuc29yZmxvdy90ZW5zb3Jib2FyZC9ibG9iL21hc3Rlci9SRUFETUUubWQiCiAgICAgICAgICAgICAgICA+UkVBRE1FPC9hCiAgICAgICAgICAgICAgPgogICAgICAgICAgICAgIGFuZCBwZXJoYXBzIHRoZQogICAgICAgICAgICAgIDxhCiAgICAgICAgICAgICAgICBocmVmPSJodHRwczovL3d3dy50ZW5zb3JmbG93Lm9yZy9nZXRfc3RhcnRlZC9zdW1tYXJpZXNfYW5kX3RlbnNvcmJvYXJkIgogICAgICAgICAgICAgICAgPlRlbnNvckJvYXJkIHR1dG9yaWFsPC9hCiAgICAgICAgICAgICAgPi4KICAgICAgICAgICAgPC9wPgoKICAgICAgICAgICAgPHA+CiAgICAgICAgICAgICAgSWYgeW91IHRoaW5rIFRlbnNvckJvYXJkIGlzIGNvbmZpZ3VyZWQgcHJvcGVybHksIHBsZWFzZSBzZWUKICAgICAgICAgICAgICA8YQogICAgICAgICAgICAgICAgaHJlZj0iaHR0cHM6Ly9naXRodWIuY29tL3RlbnNvcmZsb3cvdGVuc29yYm9hcmQvYmxvYi9tYXN0ZXIvUkVBRE1FLm1kI215LXRlbnNvcmJvYXJkLWlzbnQtc2hvd2luZy1hbnktZGF0YS13aGF0cy13cm9uZyIKICAgICAgICAgICAgICAgID50aGUgc2VjdGlvbiBvZiB0aGUgUkVBRE1FIGRldm90ZWQgdG8gbWlzc2luZyBkYXRhIHByb2JsZW1zPC9hCiAgICAgICAgICAgICAgPgogICAgICAgICAgICAgIGFuZCBjb25zaWRlciBmaWxpbmcgYW4gaXNzdWUgb24gR2l0SHViLgogICAgICAgICAgICA8L3A+CiAgICAgICAgICA8L2Rpdj4KICAgICAgICA8L3RlbXBsYXRlPgogICAgICAgIDx0ZW1wbGF0ZSBpcz0iZG9tLWlmIiBpZj0iW1shX2RhdGFOb3RGb3VuZF1dIj4KICAgICAgICAgIDx0Zi10YWctZmlsdGVyZXIgdGFnLWZpbHRlcj0ie3tfdGFnRmlsdGVyfX0iPjwvdGYtdGFnLWZpbHRlcmVyPgogICAgICAgICAgPHRlbXBsYXRlIGlzPSJkb20tcmVwZWF0IiBpdGVtcz0iW1tfY2F0ZWdvcmllc11dIiBhcz0iY2F0ZWdvcnkiPgogICAgICAgICAgICA8dGYtY2F0ZWdvcnktcGFnaW5hdGVkLXZpZXcKICAgICAgICAgICAgICBjYXRlZ29yeT0iW1tjYXRlZ29yeV1dIgogICAgICAgICAgICAgIGluaXRpYWwtb3BlbmVkPSJbW19zaG91bGRPcGVuKGluZGV4KV1dIgogICAgICAgICAgICA+CiAgICAgICAgICAgICAgPHRlbXBsYXRlPgogICAgICAgICAgICAgICAgPHRmLWltYWdlLWxvYWRlcgogICAgICAgICAgICAgICAgICBhY3RpdmU9IltbYWN0aXZlXV0iCiAgICAgICAgICAgICAgICAgIHJ1bj0iW1tpdGVtLnJ1bl1dIgogICAgICAgICAgICAgICAgICB0YWc9IltbaXRlbS50YWddXSIKICAgICAgICAgICAgICAgICAgc2FtcGxlPSJbW2l0ZW0uc2FtcGxlXV0iCiAgICAgICAgICAgICAgICAgIG9mLXNhbXBsZXM9IltbaXRlbS5vZlNhbXBsZXNdXSIKICAgICAgICAgICAgICAgICAgdGFnLW1ldGFkYXRhPSJbW190YWdNZXRhZGF0YShfcnVuVG9UYWdJbmZvLCBpdGVtLnJ1biwgaXRlbS50YWcpXV0iCiAgICAgICAgICAgICAgICAgIHJlcXVlc3QtbWFuYWdlcj0iW1tfcmVxdWVzdE1hbmFnZXJdXSIKICAgICAgICAgICAgICAgICAgYWN0dWFsLXNpemU9IltbX2FjdHVhbFNpemVdXSIKICAgICAgICAgICAgICAgICAgYnJpZ2h0bmVzcy1hZGp1c3RtZW50PSJbW19icmlnaHRuZXNzQWRqdXN0bWVudF1dIgogICAgICAgICAgICAgICAgICBjb250cmFzdC1wZXJjZW50YWdlPSJbW19jb250cmFzdFBlcmNlbnRhZ2VdXSIKICAgICAgICAgICAgICAgID48L3RmLWltYWdlLWxvYWRlcj4KICAgICAgICAgICAgICA8L3RlbXBsYXRlPgogICAgICAgICAgICA8L3RmLWNhdGVnb3J5LXBhZ2luYXRlZC12aWV3PgogICAgICAgICAgPC90ZW1wbGF0ZT4KICAgICAgICA8L3RlbXBsYXRlPgogICAgICA8L2Rpdj4KICAgIDwvdGYtZGFzaGJvYXJkLWxheW91dD4KICAgIDxzdHlsZSBpbmNsdWRlPSJkYXNoYm9hcmQtc3R5bGUiPjwvc3R5bGU+CiAgICA8c3R5bGU+CiAgICAgIC5yZXNldHRhYmxlLXNsaWRlci1jb250YWluZXIgewogICAgICAgIGRpc3BsYXk6IGZsZXg7CiAgICAgIH0KICAgICAgLnJlc2V0dGFibGUtc2xpZGVyLWNvbnRhaW5lciBwYXBlci1zbGlkZXIgewogICAgICAgIGZsZXgtZ3JvdzogMTsKICAgICAgfQogICAgICAucmVzZXR0YWJsZS1zbGlkZXItY29udGFpbmVyIHBhcGVyLWJ1dHRvbiB7CiAgICAgICAgZmxleC1ncm93OiAwOwogICAgICB9CiAgICAgIC5yZXNldHRhYmxlLXNsaWRlci1jb250YWluZXIgcGFwZXItYnV0dG9uW2Rpc2FibGVkXSB7CiAgICAgICAgYmFja2dyb3VuZC1jb2xvcjogdW5zZXQ7CiAgICAgIH0KICAgICAgLngtYnV0dG9uIHsKICAgICAgICBmb250LXNpemU6IDEzcHg7CiAgICAgICAgYmFja2dyb3VuZC1jb2xvcjogdmFyKC0tdGItdWktbGlnaHQtYWNjZW50KTsKICAgICAgICBjb2xvcjogdmFyKC0tdGItdWktZGFyay1hY2NlbnQpOwogICAgICB9CiAgICAgIC5uby1kYXRhLXdhcm5pbmcgewogICAgICAgIG1heC13aWR0aDogNTQwcHg7CiAgICAgICAgbWFyZ2luOiA4MHB4IGF1dG8gMCBhdXRvOwogICAgICB9CiAgICAgIHBhcGVyLXNsaWRlciB7CiAgICAgICAgLS1wYXBlci1zbGlkZXItYWN0aXZlLWNvbG9yOiB2YXIoLS10Yi1vcmFuZ2Utc3Ryb25nKTsKICAgICAgICAtLXBhcGVyLXNsaWRlci1rbm9iLWNvbG9yOiB2YXIoLS10Yi1vcmFuZ2Utc3Ryb25nKTsKICAgICAgICAtLXBhcGVyLXNsaWRlci1rbm9iLXN0YXJ0LWJvcmRlci1jb2xvcjogdmFyKC0tdGItb3JhbmdlLXN0cm9uZyk7CiAgICAgICAgLS1wYXBlci1zbGlkZXIta25vYi1zdGFydC1jb2xvcjogdmFyKC0tdGItb3JhbmdlLXN0cm9uZyk7CiAgICAgICAgLS1wYXBlci1zbGlkZXItbWFya2Vycy1jb2xvcjogdmFyKC0tdGItb3JhbmdlLXN0cm9uZyk7CiAgICAgICAgLS1wYXBlci1zbGlkZXItcGluLWNvbG9yOiB2YXIoLS10Yi1vcmFuZ2Utc3Ryb25nKTsKICAgICAgICAtLXBhcGVyLXNsaWRlci1waW4tc3RhcnQtY29sb3I6IHZhcigtLXRiLW9yYW5nZS1zdHJvbmcpOwogICAgICB9CiAgICA8L3N0eWxlPgogIGAsdChbbyh7dHlwZTpCb29sZWFufSksZSgiZGVzaWduOnR5cGUiLEJvb2xlYW4pXSxYRHQucHJvdG90eXBlLCJyZWxvYWRPblJlYWR5Iix2b2lkIDApLHQoW28oe3R5cGU6QXJyYXl9KSxlKCJkZXNpZ246dHlwZSIsQXJyYXkpXSxYRHQucHJvdG90eXBlLCJfc2VsZWN0ZWRSdW5zIix2b2lkIDApLHQoW28oe3R5cGU6T2JqZWN0fSksZSgiZGVzaWduOnR5cGUiLE9iamVjdCldLFhEdC5wcm90b3R5cGUsIl9ydW5Ub1RhZ0luZm8iLHZvaWQgMCksdChbbyh7dHlwZTpCb29sZWFufSksZSgiZGVzaWduOnR5cGUiLEJvb2xlYW4pXSxYRHQucHJvdG90eXBlLCJfZGF0YU5vdEZvdW5kIix2b2lkIDApLHQoW28oe3R5cGU6Qm9vbGVhbn0pLGUoImRlc2lnbjp0eXBlIixCb29sZWFuKV0sWER0LnByb3RvdHlwZSwiX2FjdHVhbFNpemUiLHZvaWQgMCksdChbbyh7dHlwZTpOdW1iZXJ9KSxlKCJkZXNpZ246dHlwZSIsTnVtYmVyKV0sWER0LnByb3RvdHlwZSwiX2RlZmF1bHRCcmlnaHRuZXNzQWRqdXN0bWVudCIsdm9pZCAwKSx0KFtvKHt0eXBlOk51bWJlcn0pLGUoImRlc2lnbjp0eXBlIixOdW1iZXIpXSxYRHQucHJvdG90eXBlLCJfZGVmYXVsdENvbnRyYXN0UGVyY2VudGFnZSIsdm9pZCAwKSx0KFtvKHt0eXBlOk51bWJlcn0pLGUoImRlc2lnbjp0eXBlIixOdW1iZXIpXSxYRHQucHJvdG90eXBlLCJfYnJpZ2h0bmVzc0FkanVzdG1lbnQiLHZvaWQgMCksdChbbyh7dHlwZTpOdW1iZXJ9KSxlKCJkZXNpZ246dHlwZSIsTnVtYmVyKV0sWER0LnByb3RvdHlwZSwiX2NvbnRyYXN0UGVyY2VudGFnZSIsdm9pZCAwKSx0KFtvKHt0eXBlOlN0cmluZ30pLGUoImRlc2lnbjp0eXBlIixTdHJpbmcpXSxYRHQucHJvdG90eXBlLCJfdGFnRmlsdGVyIix2b2lkIDApLHQoW28oe3R5cGU6Qm9vbGVhbn0pLGUoImRlc2lnbjp0eXBlIixCb29sZWFuKV0sWER0LnByb3RvdHlwZSwiX2NhdGVnb3JpZXNEb21SZWFkeSIsdm9pZCAwKSx0KFtvKHt0eXBlOk9iamVjdH0pLGUoImRlc2lnbjp0eXBlIixPYmplY3QpXSxYRHQucHJvdG90eXBlLCJfcmVxdWVzdE1hbmFnZXIiLHZvaWQgMCksdChbcygiX2JyaWdodG5lc3NBZGp1c3RtZW50IiksZSgiZGVzaWduOnR5cGUiLEJvb2xlYW4pLGUoImRlc2lnbjpwYXJhbXR5cGVzIixbXSldLFhEdC5wcm90b3R5cGUsIl9icmlnaHRuZXNzSXNEZWZhdWx0IixudWxsKSx0KFtzKCJfY29udHJhc3RQZXJjZW50YWdlIiksZSgiZGVzaWduOnR5cGUiLEJvb2xlYW4pLGUoImRlc2lnbjpwYXJhbXR5cGVzIixbXSldLFhEdC5wcm90b3R5cGUsIl9jb250cmFzdElzRGVmYXVsdCIsbnVsbCksdChbcygiX3J1blRvVGFnSW5mbyIsIl9zZWxlY3RlZFJ1bnMiLCJfdGFnRmlsdGVyIiwiX2NhdGVnb3JpZXNEb21SZWFkeSIpLGUoImRlc2lnbjp0eXBlIixBcnJheSksZSgiZGVzaWduOnBhcmFtdHlwZXMiLFtdKV0sWER0LnByb3RvdHlwZSwiX2NhdGVnb3JpZXMiLG51bGwpLFhEdD10KFtpKCJ0Zi1pbWFnZS1kYXNoYm9hcmQiKV0sWER0KSwoZnVuY3Rpb24odCl7dFt0LkNBTkNFTExFRD0xXT0iQ0FOQ0VMTEVEIn0pKCREdHx8KCREdD17fSkpLChmdW5jdGlvbih0KXt0W3QuVkVSVEVYPTFdPSJWRVJURVgiLHRbdC5GQUNFPTJdPSJGQUNFIix0W3QuQ09MT1I9M109IkNPTE9SIn0pKEtEdHx8KEtEdD17fSkpLChmdW5jdGlvbih0KXt0LlZFUlRFWD0iZmxvYXQzMiIsdC5GQUNFPSJpbnQzMiIsdC5DT0xPUj0idWludDgifSkoWkR0fHwoWkR0PXt9KSk7Y2xhc3MgSkR0e2NvbnN0cnVjdG9yKHQpe3RoaXMuX2NhbmNlbGxlcj1uZXcgRU8sdGhpcy5fcmVxdWVzdE1hbmFnZXI9dH1yZWxvYWQodCxlLG4pe3JldHVybiB0aGlzLl9jYW5jZWxsZXIuY2FuY2VsQWxsKCksdGhpcy5fZmV0Y2hNZXRhZGF0YSh0LGUsbil9X2ZldGNoRGF0YUJ5U3RlcCh0LGUsbixpLHIsbyl7Y29uc3QgYT1ncigpLnBsdWdpblJvdXRlKCJtZXNoIiwiL2RhdGEiLG5ldyBVUkxTZWFyY2hQYXJhbXMoe3RhZzplLHJ1bjp0LGNvbnRlbnRfdHlwZTpuLHNhbXBsZTpTdHJpbmcoaSksc3RlcDpTdHJpbmcocil9KSkscz1mdW5jdGlvbih0KXtsZXQgZT1bXTtmb3IobGV0IG49MDtuPHQubGVuZ3RoLzM7bisrKXtsZXQgaT1bXTtmb3IobGV0IGU9MDtlPDM7ZSsrKWkucHVzaCh0WzMqbitlXSk7ZS5wdXNoKGkpfXJldHVybiBlfSxsPXRoaXMuX2NhbmNlbGxlci5jYW5jZWxsYWJsZSgodD0+e2lmKHQuY2FuY2VsbGVkKXJldHVybiBQcm9taXNlLnJlamVjdCh7Y29kZTokRHQuQ0FOQ0VMTEVELG1lc3NhZ2U6IlJlc3BvbnNlIHdhcyBpbnZhbGlkYXRlZC4ifSk7bGV0IGU9dC52YWx1ZTtzd2l0Y2gobil7Y2FzZSJWRVJURVgiOm8udmVydGljZXM9cyhuZXcgRmxvYXQzMkFycmF5KGUpKTticmVhaztjYXNlIkZBQ0UiOm8uZmFjZXM9cyhuZXcgSW50MzJBcnJheShlKSk7YnJlYWs7Y2FzZSJDT0xPUiI6by5jb2xvcnM9cyhuZXcgVWludDhBcnJheShlKSl9cmV0dXJuIG99KSk7cmV0dXJuIHRoaXMuX3JlcXVlc3RNYW5hZ2VyLmZldGNoKGEse21ldGhvZDoiR0VUIixoZWFkZXJzOntyZXNwb25zZVR5cGU6ImFycmF5YnVmZmVyIixjb250ZW50VHlwZTpaRHRbbl19fSkudGhlbigodD0+dC5hcnJheUJ1ZmZlcigpKSkudGhlbihsKX1mZXRjaERhdGEodCxlLG4saSl7bGV0IHI9W10sbz1uZXcgTWFwO3JldHVybiBPYmplY3Qua2V5cyhLRHQpLmZvckVhY2goKGE9Pnt0LmNvbXBvbmVudHMmMTw8S0R0W2FdJiZyLnB1c2godGhpcy5fZmV0Y2hEYXRhQnlTdGVwKGUsbixhLGksdC5zdGVwLG8pKX0pKSxQcm9taXNlLmFsbChyKX1fZmV0Y2hNZXRhZGF0YSh0LGUsbil7dGhpcy5fY2FuY2VsbGVyLmNhbmNlbEFsbCgpO2NvbnN0IGk9Z3IoKS5wbHVnaW5Sb3V0ZSgibWVzaCIsIi9tZXNoZXMiLG5ldyBVUkxTZWFyY2hQYXJhbXMoe3RhZzplLHJ1bjp0LHNhbXBsZTpufSkpLHI9dGhpcy5fY2FuY2VsbGVyLmNhbmNlbGxhYmxlKCh0PT50LmNhbmNlbGxlZD9Qcm9taXNlLnJlamVjdCh7Y29kZTokRHQuQ0FOQ0VMTEVELG1lc3NhZ2U6IlJlc3BvbnNlIHdhcyBpbnZhbGlkYXRlZC4ifSk6dC52YWx1ZSkpO3JldHVybiB0aGlzLl9yZXF1ZXN0TWFuYWdlci5mZXRjaChpKS50aGVuKCh0PT50Lmpzb24oKSkpLnRoZW4ocikudGhlbih0aGlzLl9wcm9jZXNzTWV0YWRhdGEuYmluZCh0aGlzKSl9X3Byb2Nlc3NNZXRhZGF0YSh0KXtpZighdClyZXR1cm47Y29uc3QgZT1uZXcgTWFwO2ZvcihsZXQgbj0wO248dC5sZW5ndGg7bisrKXtsZXQgaT10W25dO2UuaGFzKGkuc3RlcCl8fGUuc2V0KGkuc3RlcCxbXSksZS5nZXQoaS5zdGVwKS5wdXNoKGkpfWxldCBuPVtdO3JldHVybiBlLmZvckVhY2goKHQ9PntsZXQgZT10aGlzLl9jcmVhdGVTdGVwRGF0dW0odFswXSk7bi5wdXNoKGUpfSkpLG59X2NyZWF0ZVN0ZXBEYXR1bSh0KXtyZXR1cm57d2FsbF90aW1lOm5ldyBEYXRlKDFlMyp0LndhbGxfdGltZSksc3RlcDp0LnN0ZXAsY29uZmlnOnQuY29uZmlnLGNvbnRlbnRfdHlwZTp0LmNvbnRlbnRfdHlwZSxjb21wb25lbnRzOnQuY29tcG9uZW50c319fWNvbnN0IFFEdD0iMTI1Iix0QnQ9e0xFRlQ6MCxNSURETEU6MSxSSUdIVDoyLFJPVEFURTowLERPTExZOjEsUEFOOjJ9LGVCdD17Uk9UQVRFOjAsUEFOOjEsRE9MTFlfUEFOOjIsRE9MTFlfUk9UQVRFOjN9LG5CdD0xMDAsaUJ0PTMwMCxyQnQ9MzAxLG9CdD0zMDIsYUJ0PTMwMyxzQnQ9MzA0LGxCdD0zMDYsY0J0PTMwNyx1QnQ9MWUzLGhCdD0xMDAxLGRCdD0xMDAyLHBCdD0xMDAzLGZCdD0xMDA0LG1CdD0xMDA1LGdCdD0xMDA2LF9CdD0xMDA3LHlCdD0xMDA4LHZCdD0xMDA5LGJCdD0xMDEyLHhCdD0xMDE0LHdCdD0xMDE1LFNCdD0xMDE2LE1CdD0xMDIwLEVCdD0xMDIyLFRCdD0xMDIzLEFCdD0xMDI2LENCdD0xMDI3LGtCdD0zMzc3NixMQnQ9MzM3NzcsUEJ0PTMzNzc4LElCdD0zMzc3OSxOQnQ9MzU4NDAsT0J0PTM1ODQxLFJCdD0zNTg0Mix6QnQ9MzU4NDMsREJ0PTM3NDkyLEJCdD0zNzQ5NixIQnQ9MjMwMCxGQnQ9MjMwMSxWQnQ9MjMwMixqQnQ9MjQwMCxVQnQ9MjQwMSxHQnQ9MjQwMixXQnQ9MjUwMCxxQnQ9MjUwMSxZQnQ9M2UzLFhCdD0zMDAxLCRCdD0zMDA3LEtCdD0zMDAyLFpCdD0zMDA0LEpCdD0zMDA1LFFCdD0zMDA2LHRIdD03NjgwLGVIdD0zNTA0NCxuSHQ9MzUwNDgsaUh0PSIzMDAgZXMiO2Z1bmN0aW9uIHJIdCgpe31PYmplY3QuYXNzaWduKHJIdC5wcm90b3R5cGUse2FkZEV2ZW50TGlzdGVuZXI6ZnVuY3Rpb24odCxlKXt2b2lkIDA9PT10aGlzLl9saXN0ZW5lcnMmJih0aGlzLl9saXN0ZW5lcnM9e30pO2NvbnN0IG49dGhpcy5fbGlzdGVuZXJzO3ZvaWQgMD09PW5bdF0mJihuW3RdPVtdKSwtMT09PW5bdF0uaW5kZXhPZihlKSYmblt0XS5wdXNoKGUpfSxoYXNFdmVudExpc3RlbmVyOmZ1bmN0aW9uKHQsZSl7aWYodm9pZCAwPT09dGhpcy5fbGlzdGVuZXJzKXJldHVybiExO2NvbnN0IG49dGhpcy5fbGlzdGVuZXJzO3JldHVybiB2b2lkIDAhPT1uW3RdJiYtMSE9PW5bdF0uaW5kZXhPZihlKX0scmVtb3ZlRXZlbnRMaXN0ZW5lcjpmdW5jdGlvbih0LGUpe2lmKHZvaWQgMD09PXRoaXMuX2xpc3RlbmVycylyZXR1cm47Y29uc3Qgbj10aGlzLl9saXN0ZW5lcnNbdF07aWYodm9pZCAwIT09bil7Y29uc3QgdD1uLmluZGV4T2YoZSk7LTEhPT10JiZuLnNwbGljZSh0LDEpfX0sZGlzcGF0Y2hFdmVudDpmdW5jdGlvbih0KXtpZih2b2lkIDA9PT10aGlzLl9saXN0ZW5lcnMpcmV0dXJuO2NvbnN0IGU9dGhpcy5fbGlzdGVuZXJzW3QudHlwZV07aWYodm9pZCAwIT09ZSl7dC50YXJnZXQ9dGhpcztjb25zdCBuPWUuc2xpY2UoMCk7Zm9yKGxldCBlPTAsaT1uLmxlbmd0aDtlPGk7ZSsrKW5bZV0uY2FsbCh0aGlzLHQpfX19KTtjb25zdCBvSHQ9W107Zm9yKGxldCB0PTA7dDwyNTY7dCsrKW9IdFt0XT0odDwxNj8iMCI6IiIpK3QudG9TdHJpbmcoMTYpO2xldCBhSHQ9MTIzNDU2Nztjb25zdCBzSHQ9e0RFRzJSQUQ6TWF0aC5QSS8xODAsUkFEMkRFRzoxODAvTWF0aC5QSSxnZW5lcmF0ZVVVSUQ6ZnVuY3Rpb24oKXtjb25zdCB0PTQyOTQ5NjcyOTUqTWF0aC5yYW5kb20oKXwwLGU9NDI5NDk2NzI5NSpNYXRoLnJhbmRvbSgpfDAsbj00Mjk0OTY3Mjk1Kk1hdGgucmFuZG9tKCl8MCxpPTQyOTQ5NjcyOTUqTWF0aC5yYW5kb20oKXwwO3JldHVybihvSHRbMjU1JnRdK29IdFt0Pj44JjI1NV0rb0h0W3Q+PjE2JjI1NV0rb0h0W3Q+PjI0JjI1NV0rIi0iK29IdFsyNTUmZV0rb0h0W2U+PjgmMjU1XSsiLSIrb0h0W2U+PjE2JjE1fDY0XStvSHRbZT4+MjQmMjU1XSsiLSIrb0h0WzYzJm58MTI4XStvSHRbbj4+OCYyNTVdKyItIitvSHRbbj4+MTYmMjU1XStvSHRbbj4+MjQmMjU1XStvSHRbMjU1JmldK29IdFtpPj44JjI1NV0rb0h0W2k+PjE2JjI1NV0rb0h0W2k+PjI0JjI1NV0pLnRvVXBwZXJDYXNlKCl9LGNsYW1wOmZ1bmN0aW9uKHQsZSxuKXtyZXR1cm4gTWF0aC5tYXgoZSxNYXRoLm1pbihuLHQpKX0sZXVjbGlkZWFuTW9kdWxvOmZ1bmN0aW9uKHQsZSl7cmV0dXJuKHQlZStlKSVlfSxtYXBMaW5lYXI6ZnVuY3Rpb24odCxlLG4saSxyKXtyZXR1cm4gaSsodC1lKSooci1pKS8obi1lKX0sbGVycDpmdW5jdGlvbih0LGUsbil7cmV0dXJuKDEtbikqdCtuKmV9LGRhbXA6ZnVuY3Rpb24odCxlLG4saSl7cmV0dXJuIHNIdC5sZXJwKHQsZSwxLU1hdGguZXhwKC1uKmkpKX0scGluZ3Bvbmc6ZnVuY3Rpb24odCxlPTEpe3JldHVybiBlLU1hdGguYWJzKHNIdC5ldWNsaWRlYW5Nb2R1bG8odCwyKmUpLWUpfSxzbW9vdGhzdGVwOmZ1bmN0aW9uKHQsZSxuKXtyZXR1cm4gdDw9ZT8wOnQ+PW4/MToodD0odC1lKS8obi1lKSkqdCooMy0yKnQpfSxzbW9vdGhlcnN0ZXA6ZnVuY3Rpb24odCxlLG4pe3JldHVybiB0PD1lPzA6dD49bj8xOih0PSh0LWUpLyhuLWUpKSp0KnQqKHQqKDYqdC0xNSkrMTApfSxyYW5kSW50OmZ1bmN0aW9uKHQsZSl7cmV0dXJuIHQrTWF0aC5mbG9vcihNYXRoLnJhbmRvbSgpKihlLXQrMSkpfSxyYW5kRmxvYXQ6ZnVuY3Rpb24odCxlKXtyZXR1cm4gdCtNYXRoLnJhbmRvbSgpKihlLXQpfSxyYW5kRmxvYXRTcHJlYWQ6ZnVuY3Rpb24odCl7cmV0dXJuIHQqKC41LU1hdGgucmFuZG9tKCkpfSxzZWVkZWRSYW5kb206ZnVuY3Rpb24odCl7cmV0dXJuIHZvaWQgMCE9PXQmJihhSHQ9dCUyMTQ3NDgzNjQ3KSxhSHQ9MTY4MDcqYUh0JTIxNDc0ODM2NDcsKGFIdC0xKS8yMTQ3NDgzNjQ2fSxkZWdUb1JhZDpmdW5jdGlvbih0KXtyZXR1cm4gdCpzSHQuREVHMlJBRH0scmFkVG9EZWc6ZnVuY3Rpb24odCl7cmV0dXJuIHQqc0h0LlJBRDJERUd9LGlzUG93ZXJPZlR3bzpmdW5jdGlvbih0KXtyZXR1cm4gMD09KHQmdC0xKSYmMCE9PXR9LGNlaWxQb3dlck9mVHdvOmZ1bmN0aW9uKHQpe3JldHVybiBNYXRoLnBvdygyLE1hdGguY2VpbChNYXRoLmxvZyh0KS9NYXRoLkxOMikpfSxmbG9vclBvd2VyT2ZUd286ZnVuY3Rpb24odCl7cmV0dXJuIE1hdGgucG93KDIsTWF0aC5mbG9vcihNYXRoLmxvZyh0KS9NYXRoLkxOMikpfSxzZXRRdWF0ZXJuaW9uRnJvbVByb3BlckV1bGVyOmZ1bmN0aW9uKHQsZSxuLGkscil7Y29uc3Qgbz1NYXRoLmNvcyxhPU1hdGguc2luLHM9byhuLzIpLGw9YShuLzIpLGM9bygoZStpKS8yKSx1PWEoKGUraSkvMiksaD1vKChlLWkpLzIpLGQ9YSgoZS1pKS8yKSxwPW8oKGktZSkvMiksZj1hKChpLWUpLzIpO3N3aXRjaChyKXtjYXNlIlhZWCI6dC5zZXQocyp1LGwqaCxsKmQscypjKTticmVhaztjYXNlIllaWSI6dC5zZXQobCpkLHMqdSxsKmgscypjKTticmVhaztjYXNlIlpYWiI6dC5zZXQobCpoLGwqZCxzKnUscypjKTticmVhaztjYXNlIlhaWCI6dC5zZXQocyp1LGwqZixsKnAscypjKTticmVhaztjYXNlIllYWSI6dC5zZXQobCpwLHMqdSxsKmYscypjKTticmVhaztjYXNlIlpZWiI6dC5zZXQobCpmLGwqcCxzKnUscypjKTticmVhaztkZWZhdWx0OmNvbnNvbGUud2FybigiVEhSRUUuTWF0aFV0aWxzOiAuc2V0UXVhdGVybmlvbkZyb21Qcm9wZXJFdWxlcigpIGVuY291bnRlcmVkIGFuIHVua25vd24gb3JkZXI6ICIrcil9fX07Y2xhc3MgbEh0e2NvbnN0cnVjdG9yKHQ9MCxlPTApe09iamVjdC5kZWZpbmVQcm9wZXJ0eSh0aGlzLCJpc1ZlY3RvcjIiLHt2YWx1ZTohMH0pLHRoaXMueD10LHRoaXMueT1lfWdldCB3aWR0aCgpe3JldHVybiB0aGlzLnh9c2V0IHdpZHRoKHQpe3RoaXMueD10fWdldCBoZWlnaHQoKXtyZXR1cm4gdGhpcy55fXNldCBoZWlnaHQodCl7dGhpcy55PXR9c2V0KHQsZSl7cmV0dXJuIHRoaXMueD10LHRoaXMueT1lLHRoaXN9c2V0U2NhbGFyKHQpe3JldHVybiB0aGlzLng9dCx0aGlzLnk9dCx0aGlzfXNldFgodCl7cmV0dXJuIHRoaXMueD10LHRoaXN9c2V0WSh0KXtyZXR1cm4gdGhpcy55PXQsdGhpc31zZXRDb21wb25lbnQodCxlKXtzd2l0Y2godCl7Y2FzZSAwOnRoaXMueD1lO2JyZWFrO2Nhc2UgMTp0aGlzLnk9ZTticmVhaztkZWZhdWx0OnRocm93IG5ldyBFcnJvcigiaW5kZXggaXMgb3V0IG9mIHJhbmdlOiAiK3QpfXJldHVybiB0aGlzfWdldENvbXBvbmVudCh0KXtzd2l0Y2godCl7Y2FzZSAwOnJldHVybiB0aGlzLng7Y2FzZSAxOnJldHVybiB0aGlzLnk7ZGVmYXVsdDp0aHJvdyBuZXcgRXJyb3IoImluZGV4IGlzIG91dCBvZiByYW5nZTogIit0KX19Y2xvbmUoKXtyZXR1cm4gbmV3IHRoaXMuY29uc3RydWN0b3IodGhpcy54LHRoaXMueSl9Y29weSh0KXtyZXR1cm4gdGhpcy54PXQueCx0aGlzLnk9dC55LHRoaXN9YWRkKHQsZSl7cmV0dXJuIHZvaWQgMCE9PWU/KGNvbnNvbGUud2FybigiVEhSRUUuVmVjdG9yMjogLmFkZCgpIG5vdyBvbmx5IGFjY2VwdHMgb25lIGFyZ3VtZW50LiBVc2UgLmFkZFZlY3RvcnMoIGEsIGIgKSBpbnN0ZWFkLiIpLHRoaXMuYWRkVmVjdG9ycyh0LGUpKToodGhpcy54Kz10LngsdGhpcy55Kz10LnksdGhpcyl9YWRkU2NhbGFyKHQpe3JldHVybiB0aGlzLngrPXQsdGhpcy55Kz10LHRoaXN9YWRkVmVjdG9ycyh0LGUpe3JldHVybiB0aGlzLng9dC54K2UueCx0aGlzLnk9dC55K2UueSx0aGlzfWFkZFNjYWxlZFZlY3Rvcih0LGUpe3JldHVybiB0aGlzLngrPXQueCplLHRoaXMueSs9dC55KmUsdGhpc31zdWIodCxlKXtyZXR1cm4gdm9pZCAwIT09ZT8oY29uc29sZS53YXJuKCJUSFJFRS5WZWN0b3IyOiAuc3ViKCkgbm93IG9ubHkgYWNjZXB0cyBvbmUgYXJndW1lbnQuIFVzZSAuc3ViVmVjdG9ycyggYSwgYiApIGluc3RlYWQuIiksdGhpcy5zdWJWZWN0b3JzKHQsZSkpOih0aGlzLngtPXQueCx0aGlzLnktPXQueSx0aGlzKX1zdWJTY2FsYXIodCl7cmV0dXJuIHRoaXMueC09dCx0aGlzLnktPXQsdGhpc31zdWJWZWN0b3JzKHQsZSl7cmV0dXJuIHRoaXMueD10LngtZS54LHRoaXMueT10LnktZS55LHRoaXN9bXVsdGlwbHkodCl7cmV0dXJuIHRoaXMueCo9dC54LHRoaXMueSo9dC55LHRoaXN9bXVsdGlwbHlTY2FsYXIodCl7cmV0dXJuIHRoaXMueCo9dCx0aGlzLnkqPXQsdGhpc31kaXZpZGUodCl7cmV0dXJuIHRoaXMueC89dC54LHRoaXMueS89dC55LHRoaXN9ZGl2aWRlU2NhbGFyKHQpe3JldHVybiB0aGlzLm11bHRpcGx5U2NhbGFyKDEvdCl9YXBwbHlNYXRyaXgzKHQpe2NvbnN0IGU9dGhpcy54LG49dGhpcy55LGk9dC5lbGVtZW50cztyZXR1cm4gdGhpcy54PWlbMF0qZStpWzNdKm4raVs2XSx0aGlzLnk9aVsxXSplK2lbNF0qbitpWzddLHRoaXN9bWluKHQpe3JldHVybiB0aGlzLng9TWF0aC5taW4odGhpcy54LHQueCksdGhpcy55PU1hdGgubWluKHRoaXMueSx0LnkpLHRoaXN9bWF4KHQpe3JldHVybiB0aGlzLng9TWF0aC5tYXgodGhpcy54LHQueCksdGhpcy55PU1hdGgubWF4KHRoaXMueSx0LnkpLHRoaXN9Y2xhbXAodCxlKXtyZXR1cm4gdGhpcy54PU1hdGgubWF4KHQueCxNYXRoLm1pbihlLngsdGhpcy54KSksdGhpcy55PU1hdGgubWF4KHQueSxNYXRoLm1pbihlLnksdGhpcy55KSksdGhpc31jbGFtcFNjYWxhcih0LGUpe3JldHVybiB0aGlzLng9TWF0aC5tYXgodCxNYXRoLm1pbihlLHRoaXMueCkpLHRoaXMueT1NYXRoLm1heCh0LE1hdGgubWluKGUsdGhpcy55KSksdGhpc31jbGFtcExlbmd0aCh0LGUpe2NvbnN0IG49dGhpcy5sZW5ndGgoKTtyZXR1cm4gdGhpcy5kaXZpZGVTY2FsYXIobnx8MSkubXVsdGlwbHlTY2FsYXIoTWF0aC5tYXgodCxNYXRoLm1pbihlLG4pKSl9Zmxvb3IoKXtyZXR1cm4gdGhpcy54PU1hdGguZmxvb3IodGhpcy54KSx0aGlzLnk9TWF0aC5mbG9vcih0aGlzLnkpLHRoaXN9Y2VpbCgpe3JldHVybiB0aGlzLng9TWF0aC5jZWlsKHRoaXMueCksdGhpcy55PU1hdGguY2VpbCh0aGlzLnkpLHRoaXN9cm91bmQoKXtyZXR1cm4gdGhpcy54PU1hdGgucm91bmQodGhpcy54KSx0aGlzLnk9TWF0aC5yb3VuZCh0aGlzLnkpLHRoaXN9cm91bmRUb1plcm8oKXtyZXR1cm4gdGhpcy54PXRoaXMueDwwP01hdGguY2VpbCh0aGlzLngpOk1hdGguZmxvb3IodGhpcy54KSx0aGlzLnk9dGhpcy55PDA/TWF0aC5jZWlsKHRoaXMueSk6TWF0aC5mbG9vcih0aGlzLnkpLHRoaXN9bmVnYXRlKCl7cmV0dXJuIHRoaXMueD0tdGhpcy54LHRoaXMueT0tdGhpcy55LHRoaXN9ZG90KHQpe3JldHVybiB0aGlzLngqdC54K3RoaXMueSp0Lnl9Y3Jvc3ModCl7cmV0dXJuIHRoaXMueCp0LnktdGhpcy55KnQueH1sZW5ndGhTcSgpe3JldHVybiB0aGlzLngqdGhpcy54K3RoaXMueSp0aGlzLnl9bGVuZ3RoKCl7cmV0dXJuIE1hdGguc3FydCh0aGlzLngqdGhpcy54K3RoaXMueSp0aGlzLnkpfW1hbmhhdHRhbkxlbmd0aCgpe3JldHVybiBNYXRoLmFicyh0aGlzLngpK01hdGguYWJzKHRoaXMueSl9bm9ybWFsaXplKCl7cmV0dXJuIHRoaXMuZGl2aWRlU2NhbGFyKHRoaXMubGVuZ3RoKCl8fDEpfWFuZ2xlKCl7cmV0dXJuIE1hdGguYXRhbjIoLXRoaXMueSwtdGhpcy54KStNYXRoLlBJfWRpc3RhbmNlVG8odCl7cmV0dXJuIE1hdGguc3FydCh0aGlzLmRpc3RhbmNlVG9TcXVhcmVkKHQpKX1kaXN0YW5jZVRvU3F1YXJlZCh0KXtjb25zdCBlPXRoaXMueC10Lngsbj10aGlzLnktdC55O3JldHVybiBlKmUrbipufW1hbmhhdHRhbkRpc3RhbmNlVG8odCl7cmV0dXJuIE1hdGguYWJzKHRoaXMueC10LngpK01hdGguYWJzKHRoaXMueS10LnkpfXNldExlbmd0aCh0KXtyZXR1cm4gdGhpcy5ub3JtYWxpemUoKS5tdWx0aXBseVNjYWxhcih0KX1sZXJwKHQsZSl7cmV0dXJuIHRoaXMueCs9KHQueC10aGlzLngpKmUsdGhpcy55Kz0odC55LXRoaXMueSkqZSx0aGlzfWxlcnBWZWN0b3JzKHQsZSxuKXtyZXR1cm4gdGhpcy54PXQueCsoZS54LXQueCkqbix0aGlzLnk9dC55KyhlLnktdC55KSpuLHRoaXN9ZXF1YWxzKHQpe3JldHVybiB0Lng9PT10aGlzLngmJnQueT09PXRoaXMueX1mcm9tQXJyYXkodCxlPTApe3JldHVybiB0aGlzLng9dFtlXSx0aGlzLnk9dFtlKzFdLHRoaXN9dG9BcnJheSh0PVtdLGU9MCl7cmV0dXJuIHRbZV09dGhpcy54LHRbZSsxXT10aGlzLnksdH1mcm9tQnVmZmVyQXR0cmlidXRlKHQsZSxuKXtyZXR1cm4gdm9pZCAwIT09biYmY29uc29sZS53YXJuKCJUSFJFRS5WZWN0b3IyOiBvZmZzZXQgaGFzIGJlZW4gcmVtb3ZlZCBmcm9tIC5mcm9tQnVmZmVyQXR0cmlidXRlKCkuIiksdGhpcy54PXQuZ2V0WChlKSx0aGlzLnk9dC5nZXRZKGUpLHRoaXN9cm90YXRlQXJvdW5kKHQsZSl7Y29uc3Qgbj1NYXRoLmNvcyhlKSxpPU1hdGguc2luKGUpLHI9dGhpcy54LXQueCxvPXRoaXMueS10Lnk7cmV0dXJuIHRoaXMueD1yKm4tbyppK3QueCx0aGlzLnk9cippK28qbit0LnksdGhpc31yYW5kb20oKXtyZXR1cm4gdGhpcy54PU1hdGgucmFuZG9tKCksdGhpcy55PU1hdGgucmFuZG9tKCksdGhpc319Y2xhc3MgY0h0e2NvbnN0cnVjdG9yKCl7T2JqZWN0LmRlZmluZVByb3BlcnR5KHRoaXMsImlzTWF0cml4MyIse3ZhbHVlOiEwfSksdGhpcy5lbGVtZW50cz1bMSwwLDAsMCwxLDAsMCwwLDFdLGFyZ3VtZW50cy5sZW5ndGg+MCYmY29uc29sZS5lcnJvcigiVEhSRUUuTWF0cml4MzogdGhlIGNvbnN0cnVjdG9yIG5vIGxvbmdlciByZWFkcyBhcmd1bWVudHMuIHVzZSAuc2V0KCkgaW5zdGVhZC4iKX1zZXQodCxlLG4saSxyLG8sYSxzLGwpe2NvbnN0IGM9dGhpcy5lbGVtZW50cztyZXR1cm4gY1swXT10LGNbMV09aSxjWzJdPWEsY1szXT1lLGNbNF09cixjWzVdPXMsY1s2XT1uLGNbN109byxjWzhdPWwsdGhpc31pZGVudGl0eSgpe3JldHVybiB0aGlzLnNldCgxLDAsMCwwLDEsMCwwLDAsMSksdGhpc31jbG9uZSgpe3JldHVybihuZXcgdGhpcy5jb25zdHJ1Y3RvcikuZnJvbUFycmF5KHRoaXMuZWxlbWVudHMpfWNvcHkodCl7Y29uc3QgZT10aGlzLmVsZW1lbnRzLG49dC5lbGVtZW50cztyZXR1cm4gZVswXT1uWzBdLGVbMV09blsxXSxlWzJdPW5bMl0sZVszXT1uWzNdLGVbNF09bls0XSxlWzVdPW5bNV0sZVs2XT1uWzZdLGVbN109bls3XSxlWzhdPW5bOF0sdGhpc31leHRyYWN0QmFzaXModCxlLG4pe3JldHVybiB0LnNldEZyb21NYXRyaXgzQ29sdW1uKHRoaXMsMCksZS5zZXRGcm9tTWF0cml4M0NvbHVtbih0aGlzLDEpLG4uc2V0RnJvbU1hdHJpeDNDb2x1bW4odGhpcywyKSx0aGlzfXNldEZyb21NYXRyaXg0KHQpe2NvbnN0IGU9dC5lbGVtZW50cztyZXR1cm4gdGhpcy5zZXQoZVswXSxlWzRdLGVbOF0sZVsxXSxlWzVdLGVbOV0sZVsyXSxlWzZdLGVbMTBdKSx0aGlzfW11bHRpcGx5KHQpe3JldHVybiB0aGlzLm11bHRpcGx5TWF0cmljZXModGhpcyx0KX1wcmVtdWx0aXBseSh0KXtyZXR1cm4gdGhpcy5tdWx0aXBseU1hdHJpY2VzKHQsdGhpcyl9bXVsdGlwbHlNYXRyaWNlcyh0LGUpe2NvbnN0IG49dC5lbGVtZW50cyxpPWUuZWxlbWVudHMscj10aGlzLmVsZW1lbnRzLG89blswXSxhPW5bM10scz1uWzZdLGw9blsxXSxjPW5bNF0sdT1uWzddLGg9blsyXSxkPW5bNV0scD1uWzhdLGY9aVswXSxtPWlbM10sZz1pWzZdLF89aVsxXSx5PWlbNF0sdj1pWzddLGI9aVsyXSx4PWlbNV0sdz1pWzhdO3JldHVybiByWzBdPW8qZithKl8rcypiLHJbM109byptK2EqeStzKngscls2XT1vKmcrYSp2K3MqdyxyWzFdPWwqZitjKl8rdSpiLHJbNF09bCptK2MqeSt1Kngscls3XT1sKmcrYyp2K3UqdyxyWzJdPWgqZitkKl8rcCpiLHJbNV09aCptK2QqeStwKngscls4XT1oKmcrZCp2K3Aqdyx0aGlzfW11bHRpcGx5U2NhbGFyKHQpe2NvbnN0IGU9dGhpcy5lbGVtZW50cztyZXR1cm4gZVswXSo9dCxlWzNdKj10LGVbNl0qPXQsZVsxXSo9dCxlWzRdKj10LGVbN10qPXQsZVsyXSo9dCxlWzVdKj10LGVbOF0qPXQsdGhpc31kZXRlcm1pbmFudCgpe2NvbnN0IHQ9dGhpcy5lbGVtZW50cyxlPXRbMF0sbj10WzFdLGk9dFsyXSxyPXRbM10sbz10WzRdLGE9dFs1XSxzPXRbNl0sbD10WzddLGM9dFs4XTtyZXR1cm4gZSpvKmMtZSphKmwtbipyKmMrbiphKnMraSpyKmwtaSpvKnN9aW52ZXJ0KCl7Y29uc3QgdD10aGlzLmVsZW1lbnRzLGU9dFswXSxuPXRbMV0saT10WzJdLHI9dFszXSxvPXRbNF0sYT10WzVdLHM9dFs2XSxsPXRbN10sYz10WzhdLHU9YypvLWEqbCxoPWEqcy1jKnIsZD1sKnItbypzLHA9ZSp1K24qaCtpKmQ7aWYoMD09PXApcmV0dXJuIHRoaXMuc2V0KDAsMCwwLDAsMCwwLDAsMCwwKTtjb25zdCBmPTEvcDtyZXR1cm4gdFswXT11KmYsdFsxXT0oaSpsLWMqbikqZix0WzJdPShhKm4taSpvKSpmLHRbM109aCpmLHRbNF09KGMqZS1pKnMpKmYsdFs1XT0oaSpyLWEqZSkqZix0WzZdPWQqZix0WzddPShuKnMtbCplKSpmLHRbOF09KG8qZS1uKnIpKmYsdGhpc310cmFuc3Bvc2UoKXtsZXQgdDtjb25zdCBlPXRoaXMuZWxlbWVudHM7cmV0dXJuIHQ9ZVsxXSxlWzFdPWVbM10sZVszXT10LHQ9ZVsyXSxlWzJdPWVbNl0sZVs2XT10LHQ9ZVs1XSxlWzVdPWVbN10sZVs3XT10LHRoaXN9Z2V0Tm9ybWFsTWF0cml4KHQpe3JldHVybiB0aGlzLnNldEZyb21NYXRyaXg0KHQpLmNvcHkodGhpcykuaW52ZXJ0KCkudHJhbnNwb3NlKCl9dHJhbnNwb3NlSW50b0FycmF5KHQpe2NvbnN0IGU9dGhpcy5lbGVtZW50cztyZXR1cm4gdFswXT1lWzBdLHRbMV09ZVszXSx0WzJdPWVbNl0sdFszXT1lWzFdLHRbNF09ZVs0XSx0WzVdPWVbN10sdFs2XT1lWzJdLHRbN109ZVs1XSx0WzhdPWVbOF0sdGhpc31zZXRVdlRyYW5zZm9ybSh0LGUsbixpLHIsbyxhKXtjb25zdCBzPU1hdGguY29zKHIpLGw9TWF0aC5zaW4ocik7cmV0dXJuIHRoaXMuc2V0KG4qcyxuKmwsLW4qKHMqbytsKmEpK28rdCwtaSpsLGkqcywtaSooLWwqbytzKmEpK2ErZSwwLDAsMSksdGhpc31zY2FsZSh0LGUpe2NvbnN0IG49dGhpcy5lbGVtZW50cztyZXR1cm4gblswXSo9dCxuWzNdKj10LG5bNl0qPXQsblsxXSo9ZSxuWzRdKj1lLG5bN10qPWUsdGhpc31yb3RhdGUodCl7Y29uc3QgZT1NYXRoLmNvcyh0KSxuPU1hdGguc2luKHQpLGk9dGhpcy5lbGVtZW50cyxyPWlbMF0sbz1pWzNdLGE9aVs2XSxzPWlbMV0sbD1pWzRdLGM9aVs3XTtyZXR1cm4gaVswXT1lKnIrbipzLGlbM109ZSpvK24qbCxpWzZdPWUqYStuKmMsaVsxXT0tbipyK2UqcyxpWzRdPS1uKm8rZSpsLGlbN109LW4qYStlKmMsdGhpc310cmFuc2xhdGUodCxlKXtjb25zdCBuPXRoaXMuZWxlbWVudHM7cmV0dXJuIG5bMF0rPXQqblsyXSxuWzNdKz10Km5bNV0sbls2XSs9dCpuWzhdLG5bMV0rPWUqblsyXSxuWzRdKz1lKm5bNV0sbls3XSs9ZSpuWzhdLHRoaXN9ZXF1YWxzKHQpe2NvbnN0IGU9dGhpcy5lbGVtZW50cyxuPXQuZWxlbWVudHM7Zm9yKGxldCB0PTA7dDw5O3QrKylpZihlW3RdIT09blt0XSlyZXR1cm4hMTtyZXR1cm4hMH1mcm9tQXJyYXkodCxlPTApe2ZvcihsZXQgbj0wO248OTtuKyspdGhpcy5lbGVtZW50c1tuXT10W24rZV07cmV0dXJuIHRoaXN9dG9BcnJheSh0PVtdLGU9MCl7Y29uc3Qgbj10aGlzLmVsZW1lbnRzO3JldHVybiB0W2VdPW5bMF0sdFtlKzFdPW5bMV0sdFtlKzJdPW5bMl0sdFtlKzNdPW5bM10sdFtlKzRdPW5bNF0sdFtlKzVdPW5bNV0sdFtlKzZdPW5bNl0sdFtlKzddPW5bN10sdFtlKzhdPW5bOF0sdH19bGV0IHVIdDtjb25zdCBoSHQ9e2dldERhdGFVUkw6ZnVuY3Rpb24odCl7aWYoL15kYXRhOi9pLnRlc3QodC5zcmMpKXJldHVybiB0LnNyYztpZigidW5kZWZpbmVkIj09dHlwZW9mIEhUTUxDYW52YXNFbGVtZW50KXJldHVybiB0LnNyYztsZXQgZTtpZih0IGluc3RhbmNlb2YgSFRNTENhbnZhc0VsZW1lbnQpZT10O2Vsc2V7dm9pZCAwPT09dUh0JiYodUh0PWRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3dy53My5vcmcvMTk5OS94aHRtbCIsImNhbnZhcyIpKSx1SHQud2lkdGg9dC53aWR0aCx1SHQuaGVpZ2h0PXQuaGVpZ2h0O2NvbnN0IG49dUh0LmdldENvbnRleHQoIjJkIik7dCBpbnN0YW5jZW9mIEltYWdlRGF0YT9uLnB1dEltYWdlRGF0YSh0LDAsMCk6bi5kcmF3SW1hZ2UodCwwLDAsdC53aWR0aCx0LmhlaWdodCksZT11SHR9cmV0dXJuIGUud2lkdGg+MjA0OHx8ZS5oZWlnaHQ+MjA0OD9lLnRvRGF0YVVSTCgiaW1hZ2UvanBlZyIsLjYpOmUudG9EYXRhVVJMKCJpbWFnZS9wbmciKX19O2xldCBkSHQ9MDtmdW5jdGlvbiBwSHQodD1wSHQuREVGQVVMVF9JTUFHRSxlPXBIdC5ERUZBVUxUX01BUFBJTkcsbj0xMDAxLGk9MTAwMSxyPTEwMDYsbz0xMDA4LGE9MTAyMyxzPTEwMDksbD0xLGM9M2UzKXtPYmplY3QuZGVmaW5lUHJvcGVydHkodGhpcywiaWQiLHt2YWx1ZTpkSHQrK30pLHRoaXMudXVpZD1zSHQuZ2VuZXJhdGVVVUlEKCksdGhpcy5uYW1lPSIiLHRoaXMuaW1hZ2U9dCx0aGlzLm1pcG1hcHM9W10sdGhpcy5tYXBwaW5nPWUsdGhpcy53cmFwUz1uLHRoaXMud3JhcFQ9aSx0aGlzLm1hZ0ZpbHRlcj1yLHRoaXMubWluRmlsdGVyPW8sdGhpcy5hbmlzb3Ryb3B5PWwsdGhpcy5mb3JtYXQ9YSx0aGlzLmludGVybmFsRm9ybWF0PW51bGwsdGhpcy50eXBlPXMsdGhpcy5vZmZzZXQ9bmV3IGxIdCgwLDApLHRoaXMucmVwZWF0PW5ldyBsSHQoMSwxKSx0aGlzLmNlbnRlcj1uZXcgbEh0KDAsMCksdGhpcy5yb3RhdGlvbj0wLHRoaXMubWF0cml4QXV0b1VwZGF0ZT0hMCx0aGlzLm1hdHJpeD1uZXcgY0h0LHRoaXMuZ2VuZXJhdGVNaXBtYXBzPSEwLHRoaXMucHJlbXVsdGlwbHlBbHBoYT0hMSx0aGlzLmZsaXBZPSEwLHRoaXMudW5wYWNrQWxpZ25tZW50PTQsdGhpcy5lbmNvZGluZz1jLHRoaXMudmVyc2lvbj0wLHRoaXMub25VcGRhdGU9bnVsbH1mdW5jdGlvbiBmSHQodCl7cmV0dXJuInVuZGVmaW5lZCIhPXR5cGVvZiBIVE1MSW1hZ2VFbGVtZW50JiZ0IGluc3RhbmNlb2YgSFRNTEltYWdlRWxlbWVudHx8InVuZGVmaW5lZCIhPXR5cGVvZiBIVE1MQ2FudmFzRWxlbWVudCYmdCBpbnN0YW5jZW9mIEhUTUxDYW52YXNFbGVtZW50fHwidW5kZWZpbmVkIiE9dHlwZW9mIEltYWdlQml0bWFwJiZ0IGluc3RhbmNlb2YgSW1hZ2VCaXRtYXA/aEh0LmdldERhdGFVUkwodCk6dC5kYXRhP3tkYXRhOkFycmF5LnByb3RvdHlwZS5zbGljZS5jYWxsKHQuZGF0YSksd2lkdGg6dC53aWR0aCxoZWlnaHQ6dC5oZWlnaHQsdHlwZTp0LmRhdGEuY29uc3RydWN0b3IubmFtZX06KGNvbnNvbGUud2FybigiVEhSRUUuVGV4dHVyZTogVW5hYmxlIHRvIHNlcmlhbGl6ZSBUZXh0dXJlLiIpLHt9KX1wSHQuREVGQVVMVF9JTUFHRT12b2lkIDAscEh0LkRFRkFVTFRfTUFQUElORz1pQnQscEh0LnByb3RvdHlwZT1PYmplY3QuYXNzaWduKE9iamVjdC5jcmVhdGUockh0LnByb3RvdHlwZSkse2NvbnN0cnVjdG9yOnBIdCxpc1RleHR1cmU6ITAsdXBkYXRlTWF0cml4OmZ1bmN0aW9uKCl7dGhpcy5tYXRyaXguc2V0VXZUcmFuc2Zvcm0odGhpcy5vZmZzZXQueCx0aGlzLm9mZnNldC55LHRoaXMucmVwZWF0LngsdGhpcy5yZXBlYXQueSx0aGlzLnJvdGF0aW9uLHRoaXMuY2VudGVyLngsdGhpcy5jZW50ZXIueSl9LGNsb25lOmZ1bmN0aW9uKCl7cmV0dXJuKG5ldyB0aGlzLmNvbnN0cnVjdG9yKS5jb3B5KHRoaXMpfSxjb3B5OmZ1bmN0aW9uKHQpe3JldHVybiB0aGlzLm5hbWU9dC5uYW1lLHRoaXMuaW1hZ2U9dC5pbWFnZSx0aGlzLm1pcG1hcHM9dC5taXBtYXBzLnNsaWNlKDApLHRoaXMubWFwcGluZz10Lm1hcHBpbmcsdGhpcy53cmFwUz10LndyYXBTLHRoaXMud3JhcFQ9dC53cmFwVCx0aGlzLm1hZ0ZpbHRlcj10Lm1hZ0ZpbHRlcix0aGlzLm1pbkZpbHRlcj10Lm1pbkZpbHRlcix0aGlzLmFuaXNvdHJvcHk9dC5hbmlzb3Ryb3B5LHRoaXMuZm9ybWF0PXQuZm9ybWF0LHRoaXMuaW50ZXJuYWxGb3JtYXQ9dC5pbnRlcm5hbEZvcm1hdCx0aGlzLnR5cGU9dC50eXBlLHRoaXMub2Zmc2V0LmNvcHkodC5vZmZzZXQpLHRoaXMucmVwZWF0LmNvcHkodC5yZXBlYXQpLHRoaXMuY2VudGVyLmNvcHkodC5jZW50ZXIpLHRoaXMucm90YXRpb249dC5yb3RhdGlvbix0aGlzLm1hdHJpeEF1dG9VcGRhdGU9dC5tYXRyaXhBdXRvVXBkYXRlLHRoaXMubWF0cml4LmNvcHkodC5tYXRyaXgpLHRoaXMuZ2VuZXJhdGVNaXBtYXBzPXQuZ2VuZXJhdGVNaXBtYXBzLHRoaXMucHJlbXVsdGlwbHlBbHBoYT10LnByZW11bHRpcGx5QWxwaGEsdGhpcy5mbGlwWT10LmZsaXBZLHRoaXMudW5wYWNrQWxpZ25tZW50PXQudW5wYWNrQWxpZ25tZW50LHRoaXMuZW5jb2Rpbmc9dC5lbmNvZGluZyx0aGlzfSx0b0pTT046ZnVuY3Rpb24odCl7Y29uc3QgZT12b2lkIDA9PT10fHwic3RyaW5nIj09dHlwZW9mIHQ7aWYoIWUmJnZvaWQgMCE9PXQudGV4dHVyZXNbdGhpcy51dWlkXSlyZXR1cm4gdC50ZXh0dXJlc1t0aGlzLnV1aWRdO2NvbnN0IG49e21ldGFkYXRhOnt2ZXJzaW9uOjQuNSx0eXBlOiJUZXh0dXJlIixnZW5lcmF0b3I6IlRleHR1cmUudG9KU09OIn0sdXVpZDp0aGlzLnV1aWQsbmFtZTp0aGlzLm5hbWUsbWFwcGluZzp0aGlzLm1hcHBpbmcscmVwZWF0Olt0aGlzLnJlcGVhdC54LHRoaXMucmVwZWF0LnldLG9mZnNldDpbdGhpcy5vZmZzZXQueCx0aGlzLm9mZnNldC55XSxjZW50ZXI6W3RoaXMuY2VudGVyLngsdGhpcy5jZW50ZXIueV0scm90YXRpb246dGhpcy5yb3RhdGlvbix3cmFwOlt0aGlzLndyYXBTLHRoaXMud3JhcFRdLGZvcm1hdDp0aGlzLmZvcm1hdCx0eXBlOnRoaXMudHlwZSxlbmNvZGluZzp0aGlzLmVuY29kaW5nLG1pbkZpbHRlcjp0aGlzLm1pbkZpbHRlcixtYWdGaWx0ZXI6dGhpcy5tYWdGaWx0ZXIsYW5pc290cm9weTp0aGlzLmFuaXNvdHJvcHksZmxpcFk6dGhpcy5mbGlwWSxwcmVtdWx0aXBseUFscGhhOnRoaXMucHJlbXVsdGlwbHlBbHBoYSx1bnBhY2tBbGlnbm1lbnQ6dGhpcy51bnBhY2tBbGlnbm1lbnR9O2lmKHZvaWQgMCE9PXRoaXMuaW1hZ2Upe2NvbnN0IGk9dGhpcy5pbWFnZTtpZih2b2lkIDA9PT1pLnV1aWQmJihpLnV1aWQ9c0h0LmdlbmVyYXRlVVVJRCgpKSwhZSYmdm9pZCAwPT09dC5pbWFnZXNbaS51dWlkXSl7bGV0IGU7aWYoQXJyYXkuaXNBcnJheShpKSl7ZT1bXTtmb3IobGV0IHQ9MCxuPWkubGVuZ3RoO3Q8bjt0KyspZS5wdXNoKGZIdChpW3RdLmlzRGF0YVRleHR1cmU/aVt0XS5pbWFnZTppW3RdKSl9ZWxzZSBlPWZIdChpKTt0LmltYWdlc1tpLnV1aWRdPXt1dWlkOmkudXVpZCx1cmw6ZX19bi5pbWFnZT1pLnV1aWR9cmV0dXJuIGV8fCh0LnRleHR1cmVzW3RoaXMudXVpZF09biksbn0sZGlzcG9zZTpmdW5jdGlvbigpe3RoaXMuZGlzcGF0Y2hFdmVudCh7dHlwZToiZGlzcG9zZSJ9KX0sdHJhbnNmb3JtVXY6ZnVuY3Rpb24odCl7aWYodGhpcy5tYXBwaW5nIT09aUJ0KXJldHVybiB0O2lmKHQuYXBwbHlNYXRyaXgzKHRoaXMubWF0cml4KSx0Lng8MHx8dC54PjEpc3dpdGNoKHRoaXMud3JhcFMpe2Nhc2UgdUJ0OnQueD10LngtTWF0aC5mbG9vcih0LngpO2JyZWFrO2Nhc2UgaEJ0OnQueD10Lng8MD8wOjE7YnJlYWs7Y2FzZSBkQnQ6dC54PTE9PT1NYXRoLmFicyhNYXRoLmZsb29yKHQueCklMik/TWF0aC5jZWlsKHQueCktdC54OnQueC1NYXRoLmZsb29yKHQueCl9aWYodC55PDB8fHQueT4xKXN3aXRjaCh0aGlzLndyYXBUKXtjYXNlIHVCdDp0Lnk9dC55LU1hdGguZmxvb3IodC55KTticmVhaztjYXNlIGhCdDp0Lnk9dC55PDA/MDoxO2JyZWFrO2Nhc2UgZEJ0OnQueT0xPT09TWF0aC5hYnMoTWF0aC5mbG9vcih0LnkpJTIpP01hdGguY2VpbCh0LnkpLXQueTp0LnktTWF0aC5mbG9vcih0LnkpfXJldHVybiB0aGlzLmZsaXBZJiYodC55PTEtdC55KSx0fX0pLE9iamVjdC5kZWZpbmVQcm9wZXJ0eShwSHQucHJvdG90eXBlLCJuZWVkc1VwZGF0ZSIse3NldDpmdW5jdGlvbih0KXshMD09PXQmJnRoaXMudmVyc2lvbisrfX0pO2NsYXNzIG1IdHtjb25zdHJ1Y3Rvcih0PTAsZT0wLG49MCxpPTEpe09iamVjdC5kZWZpbmVQcm9wZXJ0eSh0aGlzLCJpc1ZlY3RvcjQiLHt2YWx1ZTohMH0pLHRoaXMueD10LHRoaXMueT1lLHRoaXMuej1uLHRoaXMudz1pfWdldCB3aWR0aCgpe3JldHVybiB0aGlzLnp9c2V0IHdpZHRoKHQpe3RoaXMuej10fWdldCBoZWlnaHQoKXtyZXR1cm4gdGhpcy53fXNldCBoZWlnaHQodCl7dGhpcy53PXR9c2V0KHQsZSxuLGkpe3JldHVybiB0aGlzLng9dCx0aGlzLnk9ZSx0aGlzLno9bix0aGlzLnc9aSx0aGlzfXNldFNjYWxhcih0KXtyZXR1cm4gdGhpcy54PXQsdGhpcy55PXQsdGhpcy56PXQsdGhpcy53PXQsdGhpc31zZXRYKHQpe3JldHVybiB0aGlzLng9dCx0aGlzfXNldFkodCl7cmV0dXJuIHRoaXMueT10LHRoaXN9c2V0Wih0KXtyZXR1cm4gdGhpcy56PXQsdGhpc31zZXRXKHQpe3JldHVybiB0aGlzLnc9dCx0aGlzfXNldENvbXBvbmVudCh0LGUpe3N3aXRjaCh0KXtjYXNlIDA6dGhpcy54PWU7YnJlYWs7Y2FzZSAxOnRoaXMueT1lO2JyZWFrO2Nhc2UgMjp0aGlzLno9ZTticmVhaztjYXNlIDM6dGhpcy53PWU7YnJlYWs7ZGVmYXVsdDp0aHJvdyBuZXcgRXJyb3IoImluZGV4IGlzIG91dCBvZiByYW5nZTogIit0KX1yZXR1cm4gdGhpc31nZXRDb21wb25lbnQodCl7c3dpdGNoKHQpe2Nhc2UgMDpyZXR1cm4gdGhpcy54O2Nhc2UgMTpyZXR1cm4gdGhpcy55O2Nhc2UgMjpyZXR1cm4gdGhpcy56O2Nhc2UgMzpyZXR1cm4gdGhpcy53O2RlZmF1bHQ6dGhyb3cgbmV3IEVycm9yKCJpbmRleCBpcyBvdXQgb2YgcmFuZ2U6ICIrdCl9fWNsb25lKCl7cmV0dXJuIG5ldyB0aGlzLmNvbnN0cnVjdG9yKHRoaXMueCx0aGlzLnksdGhpcy56LHRoaXMudyl9Y29weSh0KXtyZXR1cm4gdGhpcy54PXQueCx0aGlzLnk9dC55LHRoaXMuej10LnosdGhpcy53PXZvaWQgMCE9PXQudz90Lnc6MSx0aGlzfWFkZCh0LGUpe3JldHVybiB2b2lkIDAhPT1lPyhjb25zb2xlLndhcm4oIlRIUkVFLlZlY3RvcjQ6IC5hZGQoKSBub3cgb25seSBhY2NlcHRzIG9uZSBhcmd1bWVudC4gVXNlIC5hZGRWZWN0b3JzKCBhLCBiICkgaW5zdGVhZC4iKSx0aGlzLmFkZFZlY3RvcnModCxlKSk6KHRoaXMueCs9dC54LHRoaXMueSs9dC55LHRoaXMueis9dC56LHRoaXMudys9dC53LHRoaXMpfWFkZFNjYWxhcih0KXtyZXR1cm4gdGhpcy54Kz10LHRoaXMueSs9dCx0aGlzLnorPXQsdGhpcy53Kz10LHRoaXN9YWRkVmVjdG9ycyh0LGUpe3JldHVybiB0aGlzLng9dC54K2UueCx0aGlzLnk9dC55K2UueSx0aGlzLno9dC56K2Uueix0aGlzLnc9dC53K2Uudyx0aGlzfWFkZFNjYWxlZFZlY3Rvcih0LGUpe3JldHVybiB0aGlzLngrPXQueCplLHRoaXMueSs9dC55KmUsdGhpcy56Kz10LnoqZSx0aGlzLncrPXQudyplLHRoaXN9c3ViKHQsZSl7cmV0dXJuIHZvaWQgMCE9PWU/KGNvbnNvbGUud2FybigiVEhSRUUuVmVjdG9yNDogLnN1YigpIG5vdyBvbmx5IGFjY2VwdHMgb25lIGFyZ3VtZW50LiBVc2UgLnN1YlZlY3RvcnMoIGEsIGIgKSBpbnN0ZWFkLiIpLHRoaXMuc3ViVmVjdG9ycyh0LGUpKToodGhpcy54LT10LngsdGhpcy55LT10LnksdGhpcy56LT10LnosdGhpcy53LT10LncsdGhpcyl9c3ViU2NhbGFyKHQpe3JldHVybiB0aGlzLngtPXQsdGhpcy55LT10LHRoaXMuei09dCx0aGlzLnctPXQsdGhpc31zdWJWZWN0b3JzKHQsZSl7cmV0dXJuIHRoaXMueD10LngtZS54LHRoaXMueT10LnktZS55LHRoaXMuej10LnotZS56LHRoaXMudz10LnctZS53LHRoaXN9bXVsdGlwbHkodCl7cmV0dXJuIHRoaXMueCo9dC54LHRoaXMueSo9dC55LHRoaXMueio9dC56LHRoaXMudyo9dC53LHRoaXN9bXVsdGlwbHlTY2FsYXIodCl7cmV0dXJuIHRoaXMueCo9dCx0aGlzLnkqPXQsdGhpcy56Kj10LHRoaXMudyo9dCx0aGlzfWFwcGx5TWF0cml4NCh0KXtjb25zdCBlPXRoaXMueCxuPXRoaXMueSxpPXRoaXMueixyPXRoaXMudyxvPXQuZWxlbWVudHM7cmV0dXJuIHRoaXMueD1vWzBdKmUrb1s0XSpuK29bOF0qaStvWzEyXSpyLHRoaXMueT1vWzFdKmUrb1s1XSpuK29bOV0qaStvWzEzXSpyLHRoaXMuej1vWzJdKmUrb1s2XSpuK29bMTBdKmkrb1sxNF0qcix0aGlzLnc9b1szXSplK29bN10qbitvWzExXSppK29bMTVdKnIsdGhpc31kaXZpZGVTY2FsYXIodCl7cmV0dXJuIHRoaXMubXVsdGlwbHlTY2FsYXIoMS90KX1zZXRBeGlzQW5nbGVGcm9tUXVhdGVybmlvbih0KXt0aGlzLnc9MipNYXRoLmFjb3ModC53KTtjb25zdCBlPU1hdGguc3FydCgxLXQudyp0LncpO3JldHVybiBlPDFlLTQ/KHRoaXMueD0xLHRoaXMueT0wLHRoaXMuej0wKToodGhpcy54PXQueC9lLHRoaXMueT10LnkvZSx0aGlzLno9dC56L2UpLHRoaXN9c2V0QXhpc0FuZ2xlRnJvbVJvdGF0aW9uTWF0cml4KHQpe2xldCBlLG4saSxyO2NvbnN0IG89LjAxLGE9LjEscz10LmVsZW1lbnRzLGw9c1swXSxjPXNbNF0sdT1zWzhdLGg9c1sxXSxkPXNbNV0scD1zWzldLGY9c1syXSxtPXNbNl0sZz1zWzEwXTtpZihNYXRoLmFicyhjLWgpPG8mJk1hdGguYWJzKHUtZik8byYmTWF0aC5hYnMocC1tKTxvKXtpZihNYXRoLmFicyhjK2gpPGEmJk1hdGguYWJzKHUrZik8YSYmTWF0aC5hYnMocCttKTxhJiZNYXRoLmFicyhsK2QrZy0zKTxhKXJldHVybiB0aGlzLnNldCgxLDAsMCwwKSx0aGlzO2U9TWF0aC5QSTtjb25zdCB0PShsKzEpLzIscz0oZCsxKS8yLF89KGcrMSkvMix5PShjK2gpLzQsdj0odStmKS80LGI9KHArbSkvNDtyZXR1cm4gdD5zJiZ0Pl8/dDxvPyhuPTAsaT0uNzA3MTA2NzgxLHI9LjcwNzEwNjc4MSk6KG49TWF0aC5zcXJ0KHQpLGk9eS9uLHI9di9uKTpzPl8/czxvPyhuPS43MDcxMDY3ODEsaT0wLHI9LjcwNzEwNjc4MSk6KGk9TWF0aC5zcXJ0KHMpLG49eS9pLHI9Yi9pKTpfPG8/KG49LjcwNzEwNjc4MSxpPS43MDcxMDY3ODEscj0wKToocj1NYXRoLnNxcnQoXyksbj12L3IsaT1iL3IpLHRoaXMuc2V0KG4saSxyLGUpLHRoaXN9bGV0IF89TWF0aC5zcXJ0KChtLXApKihtLXApKyh1LWYpKih1LWYpKyhoLWMpKihoLWMpKTtyZXR1cm4gTWF0aC5hYnMoXyk8LjAwMSYmKF89MSksdGhpcy54PShtLXApL18sdGhpcy55PSh1LWYpL18sdGhpcy56PShoLWMpL18sdGhpcy53PU1hdGguYWNvcygobCtkK2ctMSkvMiksdGhpc31taW4odCl7cmV0dXJuIHRoaXMueD1NYXRoLm1pbih0aGlzLngsdC54KSx0aGlzLnk9TWF0aC5taW4odGhpcy55LHQueSksdGhpcy56PU1hdGgubWluKHRoaXMueix0LnopLHRoaXMudz1NYXRoLm1pbih0aGlzLncsdC53KSx0aGlzfW1heCh0KXtyZXR1cm4gdGhpcy54PU1hdGgubWF4KHRoaXMueCx0LngpLHRoaXMueT1NYXRoLm1heCh0aGlzLnksdC55KSx0aGlzLno9TWF0aC5tYXgodGhpcy56LHQueiksdGhpcy53PU1hdGgubWF4KHRoaXMudyx0LncpLHRoaXN9Y2xhbXAodCxlKXtyZXR1cm4gdGhpcy54PU1hdGgubWF4KHQueCxNYXRoLm1pbihlLngsdGhpcy54KSksdGhpcy55PU1hdGgubWF4KHQueSxNYXRoLm1pbihlLnksdGhpcy55KSksdGhpcy56PU1hdGgubWF4KHQueixNYXRoLm1pbihlLnosdGhpcy56KSksdGhpcy53PU1hdGgubWF4KHQudyxNYXRoLm1pbihlLncsdGhpcy53KSksdGhpc31jbGFtcFNjYWxhcih0LGUpe3JldHVybiB0aGlzLng9TWF0aC5tYXgodCxNYXRoLm1pbihlLHRoaXMueCkpLHRoaXMueT1NYXRoLm1heCh0LE1hdGgubWluKGUsdGhpcy55KSksdGhpcy56PU1hdGgubWF4KHQsTWF0aC5taW4oZSx0aGlzLnopKSx0aGlzLnc9TWF0aC5tYXgodCxNYXRoLm1pbihlLHRoaXMudykpLHRoaXN9Y2xhbXBMZW5ndGgodCxlKXtjb25zdCBuPXRoaXMubGVuZ3RoKCk7cmV0dXJuIHRoaXMuZGl2aWRlU2NhbGFyKG58fDEpLm11bHRpcGx5U2NhbGFyKE1hdGgubWF4KHQsTWF0aC5taW4oZSxuKSkpfWZsb29yKCl7cmV0dXJuIHRoaXMueD1NYXRoLmZsb29yKHRoaXMueCksdGhpcy55PU1hdGguZmxvb3IodGhpcy55KSx0aGlzLno9TWF0aC5mbG9vcih0aGlzLnopLHRoaXMudz1NYXRoLmZsb29yKHRoaXMudyksdGhpc31jZWlsKCl7cmV0dXJuIHRoaXMueD1NYXRoLmNlaWwodGhpcy54KSx0aGlzLnk9TWF0aC5jZWlsKHRoaXMueSksdGhpcy56PU1hdGguY2VpbCh0aGlzLnopLHRoaXMudz1NYXRoLmNlaWwodGhpcy53KSx0aGlzfXJvdW5kKCl7cmV0dXJuIHRoaXMueD1NYXRoLnJvdW5kKHRoaXMueCksdGhpcy55PU1hdGgucm91bmQodGhpcy55KSx0aGlzLno9TWF0aC5yb3VuZCh0aGlzLnopLHRoaXMudz1NYXRoLnJvdW5kKHRoaXMudyksdGhpc31yb3VuZFRvWmVybygpe3JldHVybiB0aGlzLng9dGhpcy54PDA/TWF0aC5jZWlsKHRoaXMueCk6TWF0aC5mbG9vcih0aGlzLngpLHRoaXMueT10aGlzLnk8MD9NYXRoLmNlaWwodGhpcy55KTpNYXRoLmZsb29yKHRoaXMueSksdGhpcy56PXRoaXMuejwwP01hdGguY2VpbCh0aGlzLnopOk1hdGguZmxvb3IodGhpcy56KSx0aGlzLnc9dGhpcy53PDA/TWF0aC5jZWlsKHRoaXMudyk6TWF0aC5mbG9vcih0aGlzLncpLHRoaXN9bmVnYXRlKCl7cmV0dXJuIHRoaXMueD0tdGhpcy54LHRoaXMueT0tdGhpcy55LHRoaXMuej0tdGhpcy56LHRoaXMudz0tdGhpcy53LHRoaXN9ZG90KHQpe3JldHVybiB0aGlzLngqdC54K3RoaXMueSp0LnkrdGhpcy56KnQueit0aGlzLncqdC53fWxlbmd0aFNxKCl7cmV0dXJuIHRoaXMueCp0aGlzLngrdGhpcy55KnRoaXMueSt0aGlzLnoqdGhpcy56K3RoaXMudyp0aGlzLnd9bGVuZ3RoKCl7cmV0dXJuIE1hdGguc3FydCh0aGlzLngqdGhpcy54K3RoaXMueSp0aGlzLnkrdGhpcy56KnRoaXMueit0aGlzLncqdGhpcy53KX1tYW5oYXR0YW5MZW5ndGgoKXtyZXR1cm4gTWF0aC5hYnModGhpcy54KStNYXRoLmFicyh0aGlzLnkpK01hdGguYWJzKHRoaXMueikrTWF0aC5hYnModGhpcy53KX1ub3JtYWxpemUoKXtyZXR1cm4gdGhpcy5kaXZpZGVTY2FsYXIodGhpcy5sZW5ndGgoKXx8MSl9c2V0TGVuZ3RoKHQpe3JldHVybiB0aGlzLm5vcm1hbGl6ZSgpLm11bHRpcGx5U2NhbGFyKHQpfWxlcnAodCxlKXtyZXR1cm4gdGhpcy54Kz0odC54LXRoaXMueCkqZSx0aGlzLnkrPSh0LnktdGhpcy55KSplLHRoaXMueis9KHQuei10aGlzLnopKmUsdGhpcy53Kz0odC53LXRoaXMudykqZSx0aGlzfWxlcnBWZWN0b3JzKHQsZSxuKXtyZXR1cm4gdGhpcy54PXQueCsoZS54LXQueCkqbix0aGlzLnk9dC55KyhlLnktdC55KSpuLHRoaXMuej10LnorKGUuei10LnopKm4sdGhpcy53PXQudysoZS53LXQudykqbix0aGlzfWVxdWFscyh0KXtyZXR1cm4gdC54PT09dGhpcy54JiZ0Lnk9PT10aGlzLnkmJnQuej09PXRoaXMueiYmdC53PT09dGhpcy53fWZyb21BcnJheSh0LGU9MCl7cmV0dXJuIHRoaXMueD10W2VdLHRoaXMueT10W2UrMV0sdGhpcy56PXRbZSsyXSx0aGlzLnc9dFtlKzNdLHRoaXN9dG9BcnJheSh0PVtdLGU9MCl7cmV0dXJuIHRbZV09dGhpcy54LHRbZSsxXT10aGlzLnksdFtlKzJdPXRoaXMueix0W2UrM109dGhpcy53LHR9ZnJvbUJ1ZmZlckF0dHJpYnV0ZSh0LGUsbil7cmV0dXJuIHZvaWQgMCE9PW4mJmNvbnNvbGUud2FybigiVEhSRUUuVmVjdG9yNDogb2Zmc2V0IGhhcyBiZWVuIHJlbW92ZWQgZnJvbSAuZnJvbUJ1ZmZlckF0dHJpYnV0ZSgpLiIpLHRoaXMueD10LmdldFgoZSksdGhpcy55PXQuZ2V0WShlKSx0aGlzLno9dC5nZXRaKGUpLHRoaXMudz10LmdldFcoZSksdGhpc31yYW5kb20oKXtyZXR1cm4gdGhpcy54PU1hdGgucmFuZG9tKCksdGhpcy55PU1hdGgucmFuZG9tKCksdGhpcy56PU1hdGgucmFuZG9tKCksdGhpcy53PU1hdGgucmFuZG9tKCksdGhpc319Y2xhc3MgZ0h0IGV4dGVuZHMgckh0e2NvbnN0cnVjdG9yKHQsZSxuKXtzdXBlcigpLE9iamVjdC5kZWZpbmVQcm9wZXJ0eSh0aGlzLCJpc1dlYkdMUmVuZGVyVGFyZ2V0Iix7dmFsdWU6ITB9KSx0aGlzLndpZHRoPXQsdGhpcy5oZWlnaHQ9ZSx0aGlzLnNjaXNzb3I9bmV3IG1IdCgwLDAsdCxlKSx0aGlzLnNjaXNzb3JUZXN0PSExLHRoaXMudmlld3BvcnQ9bmV3IG1IdCgwLDAsdCxlKSx0aGlzLnRleHR1cmU9bmV3IHBIdCh2b2lkIDAsKG49bnx8e30pLm1hcHBpbmcsbi53cmFwUyxuLndyYXBULG4ubWFnRmlsdGVyLG4ubWluRmlsdGVyLG4uZm9ybWF0LG4udHlwZSxuLmFuaXNvdHJvcHksbi5lbmNvZGluZyksdGhpcy50ZXh0dXJlLmltYWdlPXt9LHRoaXMudGV4dHVyZS5pbWFnZS53aWR0aD10LHRoaXMudGV4dHVyZS5pbWFnZS5oZWlnaHQ9ZSx0aGlzLnRleHR1cmUuZ2VuZXJhdGVNaXBtYXBzPXZvaWQgMCE9PW4uZ2VuZXJhdGVNaXBtYXBzJiZuLmdlbmVyYXRlTWlwbWFwcyx0aGlzLnRleHR1cmUubWluRmlsdGVyPXZvaWQgMCE9PW4ubWluRmlsdGVyP24ubWluRmlsdGVyOmdCdCx0aGlzLmRlcHRoQnVmZmVyPXZvaWQgMD09PW4uZGVwdGhCdWZmZXJ8fG4uZGVwdGhCdWZmZXIsdGhpcy5zdGVuY2lsQnVmZmVyPXZvaWQgMCE9PW4uc3RlbmNpbEJ1ZmZlciYmbi5zdGVuY2lsQnVmZmVyLHRoaXMuZGVwdGhUZXh0dXJlPXZvaWQgMCE9PW4uZGVwdGhUZXh0dXJlP24uZGVwdGhUZXh0dXJlOm51bGx9c2V0U2l6ZSh0LGUpe3RoaXMud2lkdGg9PT10JiZ0aGlzLmhlaWdodD09PWV8fCh0aGlzLndpZHRoPXQsdGhpcy5oZWlnaHQ9ZSx0aGlzLnRleHR1cmUuaW1hZ2Uud2lkdGg9dCx0aGlzLnRleHR1cmUuaW1hZ2UuaGVpZ2h0PWUsdGhpcy5kaXNwb3NlKCkpLHRoaXMudmlld3BvcnQuc2V0KDAsMCx0LGUpLHRoaXMuc2Npc3Nvci5zZXQoMCwwLHQsZSl9Y2xvbmUoKXtyZXR1cm4obmV3IHRoaXMuY29uc3RydWN0b3IpLmNvcHkodGhpcyl9Y29weSh0KXtyZXR1cm4gdGhpcy53aWR0aD10LndpZHRoLHRoaXMuaGVpZ2h0PXQuaGVpZ2h0LHRoaXMudmlld3BvcnQuY29weSh0LnZpZXdwb3J0KSx0aGlzLnRleHR1cmU9dC50ZXh0dXJlLmNsb25lKCksdGhpcy5kZXB0aEJ1ZmZlcj10LmRlcHRoQnVmZmVyLHRoaXMuc3RlbmNpbEJ1ZmZlcj10LnN0ZW5jaWxCdWZmZXIsdGhpcy5kZXB0aFRleHR1cmU9dC5kZXB0aFRleHR1cmUsdGhpc31kaXNwb3NlKCl7dGhpcy5kaXNwYXRjaEV2ZW50KHt0eXBlOiJkaXNwb3NlIn0pfX1jbGFzcyBfSHR7Y29uc3RydWN0b3IodD0wLGU9MCxuPTAsaT0xKXtPYmplY3QuZGVmaW5lUHJvcGVydHkodGhpcywiaXNRdWF0ZXJuaW9uIix7dmFsdWU6ITB9KSx0aGlzLl94PXQsdGhpcy5feT1lLHRoaXMuX3o9bix0aGlzLl93PWl9c3RhdGljIHNsZXJwKHQsZSxuLGkpe3JldHVybiBuLmNvcHkodCkuc2xlcnAoZSxpKX1zdGF0aWMgc2xlcnBGbGF0KHQsZSxuLGkscixvLGEpe2xldCBzPW5baSswXSxsPW5baSsxXSxjPW5baSsyXSx1PW5baSszXTtjb25zdCBoPXJbbyswXSxkPXJbbysxXSxwPXJbbysyXSxmPXJbbyszXTtpZih1IT09Znx8cyE9PWh8fGwhPT1kfHxjIT09cCl7bGV0IHQ9MS1hO2NvbnN0IGU9cypoK2wqZCtjKnArdSpmLG49ZT49MD8xOi0xLGk9MS1lKmU7aWYoaT5OdW1iZXIuRVBTSUxPTil7Y29uc3Qgcj1NYXRoLnNxcnQoaSksbz1NYXRoLmF0YW4yKHIsZSpuKTt0PU1hdGguc2luKHQqbykvcixhPU1hdGguc2luKGEqbykvcn1jb25zdCByPWEqbjtpZihzPXMqdCtoKnIsbD1sKnQrZCpyLGM9Yyp0K3Aqcix1PXUqdCtmKnIsdD09PTEtYSl7Y29uc3QgdD0xL01hdGguc3FydChzKnMrbCpsK2MqYyt1KnUpO3MqPXQsbCo9dCxjKj10LHUqPXR9fXRbZV09cyx0W2UrMV09bCx0W2UrMl09Yyx0W2UrM109dX1zdGF0aWMgbXVsdGlwbHlRdWF0ZXJuaW9uc0ZsYXQodCxlLG4saSxyLG8pe2NvbnN0IGE9bltpXSxzPW5baSsxXSxsPW5baSsyXSxjPW5baSszXSx1PXJbb10saD1yW28rMV0sZD1yW28rMl0scD1yW28rM107cmV0dXJuIHRbZV09YSpwK2MqdStzKmQtbCpoLHRbZSsxXT1zKnArYypoK2wqdS1hKmQsdFtlKzJdPWwqcCtjKmQrYSpoLXMqdSx0W2UrM109YypwLWEqdS1zKmgtbCpkLHR9Z2V0IHgoKXtyZXR1cm4gdGhpcy5feH1zZXQgeCh0KXt0aGlzLl94PXQsdGhpcy5fb25DaGFuZ2VDYWxsYmFjaygpfWdldCB5KCl7cmV0dXJuIHRoaXMuX3l9c2V0IHkodCl7dGhpcy5feT10LHRoaXMuX29uQ2hhbmdlQ2FsbGJhY2soKX1nZXQgeigpe3JldHVybiB0aGlzLl96fXNldCB6KHQpe3RoaXMuX3o9dCx0aGlzLl9vbkNoYW5nZUNhbGxiYWNrKCl9Z2V0IHcoKXtyZXR1cm4gdGhpcy5fd31zZXQgdyh0KXt0aGlzLl93PXQsdGhpcy5fb25DaGFuZ2VDYWxsYmFjaygpfXNldCh0LGUsbixpKXtyZXR1cm4gdGhpcy5feD10LHRoaXMuX3k9ZSx0aGlzLl96PW4sdGhpcy5fdz1pLHRoaXMuX29uQ2hhbmdlQ2FsbGJhY2soKSx0aGlzfWNsb25lKCl7cmV0dXJuIG5ldyB0aGlzLmNvbnN0cnVjdG9yKHRoaXMuX3gsdGhpcy5feSx0aGlzLl96LHRoaXMuX3cpfWNvcHkodCl7cmV0dXJuIHRoaXMuX3g9dC54LHRoaXMuX3k9dC55LHRoaXMuX3o9dC56LHRoaXMuX3c9dC53LHRoaXMuX29uQ2hhbmdlQ2FsbGJhY2soKSx0aGlzfXNldEZyb21FdWxlcih0LGUpe2lmKCF0fHwhdC5pc0V1bGVyKXRocm93IG5ldyBFcnJvcigiVEhSRUUuUXVhdGVybmlvbjogLnNldEZyb21FdWxlcigpIG5vdyBleHBlY3RzIGFuIEV1bGVyIHJvdGF0aW9uIHJhdGhlciB0aGFuIGEgVmVjdG9yMyBhbmQgb3JkZXIuIik7Y29uc3Qgbj10Ll94LGk9dC5feSxyPXQuX3osbz10Ll9vcmRlcixhPU1hdGguY29zLHM9TWF0aC5zaW4sbD1hKG4vMiksYz1hKGkvMiksdT1hKHIvMiksaD1zKG4vMiksZD1zKGkvMikscD1zKHIvMik7c3dpdGNoKG8pe2Nhc2UiWFlaIjp0aGlzLl94PWgqYyp1K2wqZCpwLHRoaXMuX3k9bCpkKnUtaCpjKnAsdGhpcy5fej1sKmMqcCtoKmQqdSx0aGlzLl93PWwqYyp1LWgqZCpwO2JyZWFrO2Nhc2UiWVhaIjp0aGlzLl94PWgqYyp1K2wqZCpwLHRoaXMuX3k9bCpkKnUtaCpjKnAsdGhpcy5fej1sKmMqcC1oKmQqdSx0aGlzLl93PWwqYyp1K2gqZCpwO2JyZWFrO2Nhc2UiWlhZIjp0aGlzLl94PWgqYyp1LWwqZCpwLHRoaXMuX3k9bCpkKnUraCpjKnAsdGhpcy5fej1sKmMqcCtoKmQqdSx0aGlzLl93PWwqYyp1LWgqZCpwO2JyZWFrO2Nhc2UiWllYIjp0aGlzLl94PWgqYyp1LWwqZCpwLHRoaXMuX3k9bCpkKnUraCpjKnAsdGhpcy5fej1sKmMqcC1oKmQqdSx0aGlzLl93PWwqYyp1K2gqZCpwO2JyZWFrO2Nhc2UiWVpYIjp0aGlzLl94PWgqYyp1K2wqZCpwLHRoaXMuX3k9bCpkKnUraCpjKnAsdGhpcy5fej1sKmMqcC1oKmQqdSx0aGlzLl93PWwqYyp1LWgqZCpwO2JyZWFrO2Nhc2UiWFpZIjp0aGlzLl94PWgqYyp1LWwqZCpwLHRoaXMuX3k9bCpkKnUtaCpjKnAsdGhpcy5fej1sKmMqcCtoKmQqdSx0aGlzLl93PWwqYyp1K2gqZCpwO2JyZWFrO2RlZmF1bHQ6Y29uc29sZS53YXJuKCJUSFJFRS5RdWF0ZXJuaW9uOiAuc2V0RnJvbUV1bGVyKCkgZW5jb3VudGVyZWQgYW4gdW5rbm93biBvcmRlcjogIitvKX1yZXR1cm4hMSE9PWUmJnRoaXMuX29uQ2hhbmdlQ2FsbGJhY2soKSx0aGlzfXNldEZyb21BeGlzQW5nbGUodCxlKXtjb25zdCBuPWUvMixpPU1hdGguc2luKG4pO3JldHVybiB0aGlzLl94PXQueCppLHRoaXMuX3k9dC55KmksdGhpcy5fej10LnoqaSx0aGlzLl93PU1hdGguY29zKG4pLHRoaXMuX29uQ2hhbmdlQ2FsbGJhY2soKSx0aGlzfXNldEZyb21Sb3RhdGlvbk1hdHJpeCh0KXtjb25zdCBlPXQuZWxlbWVudHMsbj1lWzBdLGk9ZVs0XSxyPWVbOF0sbz1lWzFdLGE9ZVs1XSxzPWVbOV0sbD1lWzJdLGM9ZVs2XSx1PWVbMTBdLGg9bithK3U7aWYoaD4wKXtjb25zdCB0PS41L01hdGguc3FydChoKzEpO3RoaXMuX3c9LjI1L3QsdGhpcy5feD0oYy1zKSp0LHRoaXMuX3k9KHItbCkqdCx0aGlzLl96PShvLWkpKnR9ZWxzZSBpZihuPmEmJm4+dSl7Y29uc3QgdD0yKk1hdGguc3FydCgxK24tYS11KTt0aGlzLl93PShjLXMpL3QsdGhpcy5feD0uMjUqdCx0aGlzLl95PShpK28pL3QsdGhpcy5fej0ocitsKS90fWVsc2UgaWYoYT51KXtjb25zdCB0PTIqTWF0aC5zcXJ0KDErYS1uLXUpO3RoaXMuX3c9KHItbCkvdCx0aGlzLl94PShpK28pL3QsdGhpcy5feT0uMjUqdCx0aGlzLl96PShzK2MpL3R9ZWxzZXtjb25zdCB0PTIqTWF0aC5zcXJ0KDErdS1uLWEpO3RoaXMuX3c9KG8taSkvdCx0aGlzLl94PShyK2wpL3QsdGhpcy5feT0ocytjKS90LHRoaXMuX3o9LjI1KnR9cmV0dXJuIHRoaXMuX29uQ2hhbmdlQ2FsbGJhY2soKSx0aGlzfXNldEZyb21Vbml0VmVjdG9ycyh0LGUpe2xldCBuPXQuZG90KGUpKzE7cmV0dXJuIG48MWUtNj8obj0wLE1hdGguYWJzKHQueCk+TWF0aC5hYnModC56KT8odGhpcy5feD0tdC55LHRoaXMuX3k9dC54LHRoaXMuX3o9MCx0aGlzLl93PW4pOih0aGlzLl94PTAsdGhpcy5feT0tdC56LHRoaXMuX3o9dC55LHRoaXMuX3c9bikpOih0aGlzLl94PXQueSplLnotdC56KmUueSx0aGlzLl95PXQueiplLngtdC54KmUueix0aGlzLl96PXQueCplLnktdC55KmUueCx0aGlzLl93PW4pLHRoaXMubm9ybWFsaXplKCl9YW5nbGVUbyh0KXtyZXR1cm4gMipNYXRoLmFjb3MoTWF0aC5hYnMoc0h0LmNsYW1wKHRoaXMuZG90KHQpLC0xLDEpKSl9cm90YXRlVG93YXJkcyh0LGUpe2NvbnN0IG49dGhpcy5hbmdsZVRvKHQpO2lmKDA9PT1uKXJldHVybiB0aGlzO2NvbnN0IGk9TWF0aC5taW4oMSxlL24pO3JldHVybiB0aGlzLnNsZXJwKHQsaSksdGhpc31pZGVudGl0eSgpe3JldHVybiB0aGlzLnNldCgwLDAsMCwxKX1pbnZlcnQoKXtyZXR1cm4gdGhpcy5jb25qdWdhdGUoKX1jb25qdWdhdGUoKXtyZXR1cm4gdGhpcy5feCo9LTEsdGhpcy5feSo9LTEsdGhpcy5feio9LTEsdGhpcy5fb25DaGFuZ2VDYWxsYmFjaygpLHRoaXN9ZG90KHQpe3JldHVybiB0aGlzLl94KnQuX3grdGhpcy5feSp0Ll95K3RoaXMuX3oqdC5feit0aGlzLl93KnQuX3d9bGVuZ3RoU3EoKXtyZXR1cm4gdGhpcy5feCp0aGlzLl94K3RoaXMuX3kqdGhpcy5feSt0aGlzLl96KnRoaXMuX3ordGhpcy5fdyp0aGlzLl93fWxlbmd0aCgpe3JldHVybiBNYXRoLnNxcnQodGhpcy5feCp0aGlzLl94K3RoaXMuX3kqdGhpcy5feSt0aGlzLl96KnRoaXMuX3ordGhpcy5fdyp0aGlzLl93KX1ub3JtYWxpemUoKXtsZXQgdD10aGlzLmxlbmd0aCgpO3JldHVybiAwPT09dD8odGhpcy5feD0wLHRoaXMuX3k9MCx0aGlzLl96PTAsdGhpcy5fdz0xKToodD0xL3QsdGhpcy5feD10aGlzLl94KnQsdGhpcy5feT10aGlzLl95KnQsdGhpcy5fej10aGlzLl96KnQsdGhpcy5fdz10aGlzLl93KnQpLHRoaXMuX29uQ2hhbmdlQ2FsbGJhY2soKSx0aGlzfW11bHRpcGx5KHQsZSl7cmV0dXJuIHZvaWQgMCE9PWU/KGNvbnNvbGUud2FybigiVEhSRUUuUXVhdGVybmlvbjogLm11bHRpcGx5KCkgbm93IG9ubHkgYWNjZXB0cyBvbmUgYXJndW1lbnQuIFVzZSAubXVsdGlwbHlRdWF0ZXJuaW9ucyggYSwgYiApIGluc3RlYWQuIiksdGhpcy5tdWx0aXBseVF1YXRlcm5pb25zKHQsZSkpOnRoaXMubXVsdGlwbHlRdWF0ZXJuaW9ucyh0aGlzLHQpfXByZW11bHRpcGx5KHQpe3JldHVybiB0aGlzLm11bHRpcGx5UXVhdGVybmlvbnModCx0aGlzKX1tdWx0aXBseVF1YXRlcm5pb25zKHQsZSl7Y29uc3Qgbj10Ll94LGk9dC5feSxyPXQuX3osbz10Ll93LGE9ZS5feCxzPWUuX3ksbD1lLl96LGM9ZS5fdztyZXR1cm4gdGhpcy5feD1uKmMrbyphK2kqbC1yKnMsdGhpcy5feT1pKmMrbypzK3IqYS1uKmwsdGhpcy5fej1yKmMrbypsK24qcy1pKmEsdGhpcy5fdz1vKmMtbiphLWkqcy1yKmwsdGhpcy5fb25DaGFuZ2VDYWxsYmFjaygpLHRoaXN9c2xlcnAodCxlKXtpZigwPT09ZSlyZXR1cm4gdGhpcztpZigxPT09ZSlyZXR1cm4gdGhpcy5jb3B5KHQpO2NvbnN0IG49dGhpcy5feCxpPXRoaXMuX3kscj10aGlzLl96LG89dGhpcy5fdztsZXQgYT1vKnQuX3crbip0Ll94K2kqdC5feStyKnQuX3o7aWYoYTwwPyh0aGlzLl93PS10Ll93LHRoaXMuX3g9LXQuX3gsdGhpcy5feT0tdC5feSx0aGlzLl96PS10Ll96LGE9LWEpOnRoaXMuY29weSh0KSxhPj0xKXJldHVybiB0aGlzLl93PW8sdGhpcy5feD1uLHRoaXMuX3k9aSx0aGlzLl96PXIsdGhpcztjb25zdCBzPTEtYSphO2lmKHM8PU51bWJlci5FUFNJTE9OKXtjb25zdCB0PTEtZTtyZXR1cm4gdGhpcy5fdz10Km8rZSp0aGlzLl93LHRoaXMuX3g9dCpuK2UqdGhpcy5feCx0aGlzLl95PXQqaStlKnRoaXMuX3ksdGhpcy5fej10KnIrZSp0aGlzLl96LHRoaXMubm9ybWFsaXplKCksdGhpcy5fb25DaGFuZ2VDYWxsYmFjaygpLHRoaXN9Y29uc3QgbD1NYXRoLnNxcnQocyksYz1NYXRoLmF0YW4yKGwsYSksdT1NYXRoLnNpbigoMS1lKSpjKS9sLGg9TWF0aC5zaW4oZSpjKS9sO3JldHVybiB0aGlzLl93PW8qdSt0aGlzLl93KmgsdGhpcy5feD1uKnUrdGhpcy5feCpoLHRoaXMuX3k9aSp1K3RoaXMuX3kqaCx0aGlzLl96PXIqdSt0aGlzLl96KmgsdGhpcy5fb25DaGFuZ2VDYWxsYmFjaygpLHRoaXN9ZXF1YWxzKHQpe3JldHVybiB0Ll94PT09dGhpcy5feCYmdC5feT09PXRoaXMuX3kmJnQuX3o9PT10aGlzLl96JiZ0Ll93PT09dGhpcy5fd31mcm9tQXJyYXkodCxlPTApe3JldHVybiB0aGlzLl94PXRbZV0sdGhpcy5feT10W2UrMV0sdGhpcy5fej10W2UrMl0sdGhpcy5fdz10W2UrM10sdGhpcy5fb25DaGFuZ2VDYWxsYmFjaygpLHRoaXN9dG9BcnJheSh0PVtdLGU9MCl7cmV0dXJuIHRbZV09dGhpcy5feCx0W2UrMV09dGhpcy5feSx0W2UrMl09dGhpcy5feix0W2UrM109dGhpcy5fdyx0fWZyb21CdWZmZXJBdHRyaWJ1dGUodCxlKXtyZXR1cm4gdGhpcy5feD10LmdldFgoZSksdGhpcy5feT10LmdldFkoZSksdGhpcy5fej10LmdldFooZSksdGhpcy5fdz10LmdldFcoZSksdGhpc31fb25DaGFuZ2UodCl7cmV0dXJuIHRoaXMuX29uQ2hhbmdlQ2FsbGJhY2s9dCx0aGlzfV9vbkNoYW5nZUNhbGxiYWNrKCl7fX1jbGFzcyB5SHR7Y29uc3RydWN0b3IodD0wLGU9MCxuPTApe09iamVjdC5kZWZpbmVQcm9wZXJ0eSh0aGlzLCJpc1ZlY3RvcjMiLHt2YWx1ZTohMH0pLHRoaXMueD10LHRoaXMueT1lLHRoaXMuej1ufXNldCh0LGUsbil7cmV0dXJuIHZvaWQgMD09PW4mJihuPXRoaXMueiksdGhpcy54PXQsdGhpcy55PWUsdGhpcy56PW4sdGhpc31zZXRTY2FsYXIodCl7cmV0dXJuIHRoaXMueD10LHRoaXMueT10LHRoaXMuej10LHRoaXN9c2V0WCh0KXtyZXR1cm4gdGhpcy54PXQsdGhpc31zZXRZKHQpe3JldHVybiB0aGlzLnk9dCx0aGlzfXNldFoodCl7cmV0dXJuIHRoaXMuej10LHRoaXN9c2V0Q29tcG9uZW50KHQsZSl7c3dpdGNoKHQpe2Nhc2UgMDp0aGlzLng9ZTticmVhaztjYXNlIDE6dGhpcy55PWU7YnJlYWs7Y2FzZSAyOnRoaXMuej1lO2JyZWFrO2RlZmF1bHQ6dGhyb3cgbmV3IEVycm9yKCJpbmRleCBpcyBvdXQgb2YgcmFuZ2U6ICIrdCl9cmV0dXJuIHRoaXN9Z2V0Q29tcG9uZW50KHQpe3N3aXRjaCh0KXtjYXNlIDA6cmV0dXJuIHRoaXMueDtjYXNlIDE6cmV0dXJuIHRoaXMueTtjYXNlIDI6cmV0dXJuIHRoaXMuejtkZWZhdWx0OnRocm93IG5ldyBFcnJvcigiaW5kZXggaXMgb3V0IG9mIHJhbmdlOiAiK3QpfX1jbG9uZSgpe3JldHVybiBuZXcgdGhpcy5jb25zdHJ1Y3Rvcih0aGlzLngsdGhpcy55LHRoaXMueil9Y29weSh0KXtyZXR1cm4gdGhpcy54PXQueCx0aGlzLnk9dC55LHRoaXMuej10LnosdGhpc31hZGQodCxlKXtyZXR1cm4gdm9pZCAwIT09ZT8oY29uc29sZS53YXJuKCJUSFJFRS5WZWN0b3IzOiAuYWRkKCkgbm93IG9ubHkgYWNjZXB0cyBvbmUgYXJndW1lbnQuIFVzZSAuYWRkVmVjdG9ycyggYSwgYiApIGluc3RlYWQuIiksdGhpcy5hZGRWZWN0b3JzKHQsZSkpOih0aGlzLngrPXQueCx0aGlzLnkrPXQueSx0aGlzLnorPXQueix0aGlzKX1hZGRTY2FsYXIodCl7cmV0dXJuIHRoaXMueCs9dCx0aGlzLnkrPXQsdGhpcy56Kz10LHRoaXN9YWRkVmVjdG9ycyh0LGUpe3JldHVybiB0aGlzLng9dC54K2UueCx0aGlzLnk9dC55K2UueSx0aGlzLno9dC56K2Uueix0aGlzfWFkZFNjYWxlZFZlY3Rvcih0LGUpe3JldHVybiB0aGlzLngrPXQueCplLHRoaXMueSs9dC55KmUsdGhpcy56Kz10LnoqZSx0aGlzfXN1Yih0LGUpe3JldHVybiB2b2lkIDAhPT1lPyhjb25zb2xlLndhcm4oIlRIUkVFLlZlY3RvcjM6IC5zdWIoKSBub3cgb25seSBhY2NlcHRzIG9uZSBhcmd1bWVudC4gVXNlIC5zdWJWZWN0b3JzKCBhLCBiICkgaW5zdGVhZC4iKSx0aGlzLnN1YlZlY3RvcnModCxlKSk6KHRoaXMueC09dC54LHRoaXMueS09dC55LHRoaXMuei09dC56LHRoaXMpfXN1YlNjYWxhcih0KXtyZXR1cm4gdGhpcy54LT10LHRoaXMueS09dCx0aGlzLnotPXQsdGhpc31zdWJWZWN0b3JzKHQsZSl7cmV0dXJuIHRoaXMueD10LngtZS54LHRoaXMueT10LnktZS55LHRoaXMuej10LnotZS56LHRoaXN9bXVsdGlwbHkodCxlKXtyZXR1cm4gdm9pZCAwIT09ZT8oY29uc29sZS53YXJuKCJUSFJFRS5WZWN0b3IzOiAubXVsdGlwbHkoKSBub3cgb25seSBhY2NlcHRzIG9uZSBhcmd1bWVudC4gVXNlIC5tdWx0aXBseVZlY3RvcnMoIGEsIGIgKSBpbnN0ZWFkLiIpLHRoaXMubXVsdGlwbHlWZWN0b3JzKHQsZSkpOih0aGlzLngqPXQueCx0aGlzLnkqPXQueSx0aGlzLnoqPXQueix0aGlzKX1tdWx0aXBseVNjYWxhcih0KXtyZXR1cm4gdGhpcy54Kj10LHRoaXMueSo9dCx0aGlzLnoqPXQsdGhpc31tdWx0aXBseVZlY3RvcnModCxlKXtyZXR1cm4gdGhpcy54PXQueCplLngsdGhpcy55PXQueSplLnksdGhpcy56PXQueiplLnosdGhpc31hcHBseUV1bGVyKHQpe3JldHVybiB0JiZ0LmlzRXVsZXJ8fGNvbnNvbGUuZXJyb3IoIlRIUkVFLlZlY3RvcjM6IC5hcHBseUV1bGVyKCkgbm93IGV4cGVjdHMgYW4gRXVsZXIgcm90YXRpb24gcmF0aGVyIHRoYW4gYSBWZWN0b3IzIGFuZCBvcmRlci4iKSx0aGlzLmFwcGx5UXVhdGVybmlvbihiSHQuc2V0RnJvbUV1bGVyKHQpKX1hcHBseUF4aXNBbmdsZSh0LGUpe3JldHVybiB0aGlzLmFwcGx5UXVhdGVybmlvbihiSHQuc2V0RnJvbUF4aXNBbmdsZSh0LGUpKX1hcHBseU1hdHJpeDModCl7Y29uc3QgZT10aGlzLngsbj10aGlzLnksaT10aGlzLnoscj10LmVsZW1lbnRzO3JldHVybiB0aGlzLng9clswXSplK3JbM10qbityWzZdKmksdGhpcy55PXJbMV0qZStyWzRdKm4rcls3XSppLHRoaXMuej1yWzJdKmUrcls1XSpuK3JbOF0qaSx0aGlzfWFwcGx5Tm9ybWFsTWF0cml4KHQpe3JldHVybiB0aGlzLmFwcGx5TWF0cml4Myh0KS5ub3JtYWxpemUoKX1hcHBseU1hdHJpeDQodCl7Y29uc3QgZT10aGlzLngsbj10aGlzLnksaT10aGlzLnoscj10LmVsZW1lbnRzLG89MS8oclszXSplK3JbN10qbityWzExXSppK3JbMTVdKTtyZXR1cm4gdGhpcy54PShyWzBdKmUrcls0XSpuK3JbOF0qaStyWzEyXSkqbyx0aGlzLnk9KHJbMV0qZStyWzVdKm4rcls5XSppK3JbMTNdKSpvLHRoaXMuej0oclsyXSplK3JbNl0qbityWzEwXSppK3JbMTRdKSpvLHRoaXN9YXBwbHlRdWF0ZXJuaW9uKHQpe2NvbnN0IGU9dGhpcy54LG49dGhpcy55LGk9dGhpcy56LHI9dC54LG89dC55LGE9dC56LHM9dC53LGw9cyplK28qaS1hKm4sYz1zKm4rYSplLXIqaSx1PXMqaStyKm4tbyplLGg9LXIqZS1vKm4tYSppO3JldHVybiB0aGlzLng9bCpzK2gqLXIrYyotYS11Ki1vLHRoaXMueT1jKnMraCotbyt1Ki1yLWwqLWEsdGhpcy56PXUqcytoKi1hK2wqLW8tYyotcix0aGlzfXByb2plY3QodCl7cmV0dXJuIHRoaXMuYXBwbHlNYXRyaXg0KHQubWF0cml4V29ybGRJbnZlcnNlKS5hcHBseU1hdHJpeDQodC5wcm9qZWN0aW9uTWF0cml4KX11bnByb2plY3QodCl7cmV0dXJuIHRoaXMuYXBwbHlNYXRyaXg0KHQucHJvamVjdGlvbk1hdHJpeEludmVyc2UpLmFwcGx5TWF0cml4NCh0Lm1hdHJpeFdvcmxkKX10cmFuc2Zvcm1EaXJlY3Rpb24odCl7Y29uc3QgZT10aGlzLngsbj10aGlzLnksaT10aGlzLnoscj10LmVsZW1lbnRzO3JldHVybiB0aGlzLng9clswXSplK3JbNF0qbityWzhdKmksdGhpcy55PXJbMV0qZStyWzVdKm4rcls5XSppLHRoaXMuej1yWzJdKmUrcls2XSpuK3JbMTBdKmksdGhpcy5ub3JtYWxpemUoKX1kaXZpZGUodCl7cmV0dXJuIHRoaXMueC89dC54LHRoaXMueS89dC55LHRoaXMuei89dC56LHRoaXN9ZGl2aWRlU2NhbGFyKHQpe3JldHVybiB0aGlzLm11bHRpcGx5U2NhbGFyKDEvdCl9bWluKHQpe3JldHVybiB0aGlzLng9TWF0aC5taW4odGhpcy54LHQueCksdGhpcy55PU1hdGgubWluKHRoaXMueSx0LnkpLHRoaXMuej1NYXRoLm1pbih0aGlzLnosdC56KSx0aGlzfW1heCh0KXtyZXR1cm4gdGhpcy54PU1hdGgubWF4KHRoaXMueCx0LngpLHRoaXMueT1NYXRoLm1heCh0aGlzLnksdC55KSx0aGlzLno9TWF0aC5tYXgodGhpcy56LHQueiksdGhpc31jbGFtcCh0LGUpe3JldHVybiB0aGlzLng9TWF0aC5tYXgodC54LE1hdGgubWluKGUueCx0aGlzLngpKSx0aGlzLnk9TWF0aC5tYXgodC55LE1hdGgubWluKGUueSx0aGlzLnkpKSx0aGlzLno9TWF0aC5tYXgodC56LE1hdGgubWluKGUueix0aGlzLnopKSx0aGlzfWNsYW1wU2NhbGFyKHQsZSl7cmV0dXJuIHRoaXMueD1NYXRoLm1heCh0LE1hdGgubWluKGUsdGhpcy54KSksdGhpcy55PU1hdGgubWF4KHQsTWF0aC5taW4oZSx0aGlzLnkpKSx0aGlzLno9TWF0aC5tYXgodCxNYXRoLm1pbihlLHRoaXMueikpLHRoaXN9Y2xhbXBMZW5ndGgodCxlKXtjb25zdCBuPXRoaXMubGVuZ3RoKCk7cmV0dXJuIHRoaXMuZGl2aWRlU2NhbGFyKG58fDEpLm11bHRpcGx5U2NhbGFyKE1hdGgubWF4KHQsTWF0aC5taW4oZSxuKSkpfWZsb29yKCl7cmV0dXJuIHRoaXMueD1NYXRoLmZsb29yKHRoaXMueCksdGhpcy55PU1hdGguZmxvb3IodGhpcy55KSx0aGlzLno9TWF0aC5mbG9vcih0aGlzLnopLHRoaXN9Y2VpbCgpe3JldHVybiB0aGlzLng9TWF0aC5jZWlsKHRoaXMueCksdGhpcy55PU1hdGguY2VpbCh0aGlzLnkpLHRoaXMuej1NYXRoLmNlaWwodGhpcy56KSx0aGlzfXJvdW5kKCl7cmV0dXJuIHRoaXMueD1NYXRoLnJvdW5kKHRoaXMueCksdGhpcy55PU1hdGgucm91bmQodGhpcy55KSx0aGlzLno9TWF0aC5yb3VuZCh0aGlzLnopLHRoaXN9cm91bmRUb1plcm8oKXtyZXR1cm4gdGhpcy54PXRoaXMueDwwP01hdGguY2VpbCh0aGlzLngpOk1hdGguZmxvb3IodGhpcy54KSx0aGlzLnk9dGhpcy55PDA/TWF0aC5jZWlsKHRoaXMueSk6TWF0aC5mbG9vcih0aGlzLnkpLHRoaXMuej10aGlzLno8MD9NYXRoLmNlaWwodGhpcy56KTpNYXRoLmZsb29yKHRoaXMueiksdGhpc31uZWdhdGUoKXtyZXR1cm4gdGhpcy54PS10aGlzLngsdGhpcy55PS10aGlzLnksdGhpcy56PS10aGlzLnosdGhpc31kb3QodCl7cmV0dXJuIHRoaXMueCp0LngrdGhpcy55KnQueSt0aGlzLnoqdC56fWxlbmd0aFNxKCl7cmV0dXJuIHRoaXMueCp0aGlzLngrdGhpcy55KnRoaXMueSt0aGlzLnoqdGhpcy56fWxlbmd0aCgpe3JldHVybiBNYXRoLnNxcnQodGhpcy54KnRoaXMueCt0aGlzLnkqdGhpcy55K3RoaXMueip0aGlzLnopfW1hbmhhdHRhbkxlbmd0aCgpe3JldHVybiBNYXRoLmFicyh0aGlzLngpK01hdGguYWJzKHRoaXMueSkrTWF0aC5hYnModGhpcy56KX1ub3JtYWxpemUoKXtyZXR1cm4gdGhpcy5kaXZpZGVTY2FsYXIodGhpcy5sZW5ndGgoKXx8MSl9c2V0TGVuZ3RoKHQpe3JldHVybiB0aGlzLm5vcm1hbGl6ZSgpLm11bHRpcGx5U2NhbGFyKHQpfWxlcnAodCxlKXtyZXR1cm4gdGhpcy54Kz0odC54LXRoaXMueCkqZSx0aGlzLnkrPSh0LnktdGhpcy55KSplLHRoaXMueis9KHQuei10aGlzLnopKmUsdGhpc31sZXJwVmVjdG9ycyh0LGUsbil7cmV0dXJuIHRoaXMueD10LngrKGUueC10LngpKm4sdGhpcy55PXQueSsoZS55LXQueSkqbix0aGlzLno9dC56KyhlLnotdC56KSpuLHRoaXN9Y3Jvc3ModCxlKXtyZXR1cm4gdm9pZCAwIT09ZT8oY29uc29sZS53YXJuKCJUSFJFRS5WZWN0b3IzOiAuY3Jvc3MoKSBub3cgb25seSBhY2NlcHRzIG9uZSBhcmd1bWVudC4gVXNlIC5jcm9zc1ZlY3RvcnMoIGEsIGIgKSBpbnN0ZWFkLiIpLHRoaXMuY3Jvc3NWZWN0b3JzKHQsZSkpOnRoaXMuY3Jvc3NWZWN0b3JzKHRoaXMsdCl9Y3Jvc3NWZWN0b3JzKHQsZSl7Y29uc3Qgbj10LngsaT10Lnkscj10Lnosbz1lLngsYT1lLnkscz1lLno7cmV0dXJuIHRoaXMueD1pKnMtciphLHRoaXMueT1yKm8tbipzLHRoaXMuej1uKmEtaSpvLHRoaXN9cHJvamVjdE9uVmVjdG9yKHQpe2NvbnN0IGU9dC5sZW5ndGhTcSgpO2lmKDA9PT1lKXJldHVybiB0aGlzLnNldCgwLDAsMCk7Y29uc3Qgbj10LmRvdCh0aGlzKS9lO3JldHVybiB0aGlzLmNvcHkodCkubXVsdGlwbHlTY2FsYXIobil9cHJvamVjdE9uUGxhbmUodCl7cmV0dXJuIHZIdC5jb3B5KHRoaXMpLnByb2plY3RPblZlY3Rvcih0KSx0aGlzLnN1Yih2SHQpfXJlZmxlY3QodCl7cmV0dXJuIHRoaXMuc3ViKHZIdC5jb3B5KHQpLm11bHRpcGx5U2NhbGFyKDIqdGhpcy5kb3QodCkpKX1hbmdsZVRvKHQpe2NvbnN0IGU9TWF0aC5zcXJ0KHRoaXMubGVuZ3RoU3EoKSp0Lmxlbmd0aFNxKCkpO2lmKDA9PT1lKXJldHVybiBNYXRoLlBJLzI7Y29uc3Qgbj10aGlzLmRvdCh0KS9lO3JldHVybiBNYXRoLmFjb3Moc0h0LmNsYW1wKG4sLTEsMSkpfWRpc3RhbmNlVG8odCl7cmV0dXJuIE1hdGguc3FydCh0aGlzLmRpc3RhbmNlVG9TcXVhcmVkKHQpKX1kaXN0YW5jZVRvU3F1YXJlZCh0KXtjb25zdCBlPXRoaXMueC10Lngsbj10aGlzLnktdC55LGk9dGhpcy56LXQuejtyZXR1cm4gZSplK24qbitpKml9bWFuaGF0dGFuRGlzdGFuY2VUbyh0KXtyZXR1cm4gTWF0aC5hYnModGhpcy54LXQueCkrTWF0aC5hYnModGhpcy55LXQueSkrTWF0aC5hYnModGhpcy56LXQueil9c2V0RnJvbVNwaGVyaWNhbCh0KXtyZXR1cm4gdGhpcy5zZXRGcm9tU3BoZXJpY2FsQ29vcmRzKHQucmFkaXVzLHQucGhpLHQudGhldGEpfXNldEZyb21TcGhlcmljYWxDb29yZHModCxlLG4pe2NvbnN0IGk9TWF0aC5zaW4oZSkqdDtyZXR1cm4gdGhpcy54PWkqTWF0aC5zaW4obiksdGhpcy55PU1hdGguY29zKGUpKnQsdGhpcy56PWkqTWF0aC5jb3MobiksdGhpc31zZXRGcm9tQ3lsaW5kcmljYWwodCl7cmV0dXJuIHRoaXMuc2V0RnJvbUN5bGluZHJpY2FsQ29vcmRzKHQucmFkaXVzLHQudGhldGEsdC55KX1zZXRGcm9tQ3lsaW5kcmljYWxDb29yZHModCxlLG4pe3JldHVybiB0aGlzLng9dCpNYXRoLnNpbihlKSx0aGlzLnk9bix0aGlzLno9dCpNYXRoLmNvcyhlKSx0aGlzfXNldEZyb21NYXRyaXhQb3NpdGlvbih0KXtjb25zdCBlPXQuZWxlbWVudHM7cmV0dXJuIHRoaXMueD1lWzEyXSx0aGlzLnk9ZVsxM10sdGhpcy56PWVbMTRdLHRoaXN9c2V0RnJvbU1hdHJpeFNjYWxlKHQpe2NvbnN0IGU9dGhpcy5zZXRGcm9tTWF0cml4Q29sdW1uKHQsMCkubGVuZ3RoKCksbj10aGlzLnNldEZyb21NYXRyaXhDb2x1bW4odCwxKS5sZW5ndGgoKSxpPXRoaXMuc2V0RnJvbU1hdHJpeENvbHVtbih0LDIpLmxlbmd0aCgpO3JldHVybiB0aGlzLng9ZSx0aGlzLnk9bix0aGlzLno9aSx0aGlzfXNldEZyb21NYXRyaXhDb2x1bW4odCxlKXtyZXR1cm4gdGhpcy5mcm9tQXJyYXkodC5lbGVtZW50cyw0KmUpfXNldEZyb21NYXRyaXgzQ29sdW1uKHQsZSl7cmV0dXJuIHRoaXMuZnJvbUFycmF5KHQuZWxlbWVudHMsMyplKX1lcXVhbHModCl7cmV0dXJuIHQueD09PXRoaXMueCYmdC55PT09dGhpcy55JiZ0Lno9PT10aGlzLnp9ZnJvbUFycmF5KHQsZT0wKXtyZXR1cm4gdGhpcy54PXRbZV0sdGhpcy55PXRbZSsxXSx0aGlzLno9dFtlKzJdLHRoaXN9dG9BcnJheSh0PVtdLGU9MCl7cmV0dXJuIHRbZV09dGhpcy54LHRbZSsxXT10aGlzLnksdFtlKzJdPXRoaXMueix0fWZyb21CdWZmZXJBdHRyaWJ1dGUodCxlLG4pe3JldHVybiB2b2lkIDAhPT1uJiZjb25zb2xlLndhcm4oIlRIUkVFLlZlY3RvcjM6IG9mZnNldCBoYXMgYmVlbiByZW1vdmVkIGZyb20gLmZyb21CdWZmZXJBdHRyaWJ1dGUoKS4iKSx0aGlzLng9dC5nZXRYKGUpLHRoaXMueT10LmdldFkoZSksdGhpcy56PXQuZ2V0WihlKSx0aGlzfXJhbmRvbSgpe3JldHVybiB0aGlzLng9TWF0aC5yYW5kb20oKSx0aGlzLnk9TWF0aC5yYW5kb20oKSx0aGlzLno9TWF0aC5yYW5kb20oKSx0aGlzfX1jb25zdCB2SHQ9bmV3IHlIdCxiSHQ9bmV3IF9IdDtjbGFzcyB4SHR7Y29uc3RydWN0b3IodCxlKXtPYmplY3QuZGVmaW5lUHJvcGVydHkodGhpcywiaXNCb3gzIix7dmFsdWU6ITB9KSx0aGlzLm1pbj12b2lkIDAhPT10P3Q6bmV3IHlIdCgxLzAsMS8wLDEvMCksdGhpcy5tYXg9dm9pZCAwIT09ZT9lOm5ldyB5SHQoLTEvMCwtMS8wLC0xLzApfXNldCh0LGUpe3JldHVybiB0aGlzLm1pbi5jb3B5KHQpLHRoaXMubWF4LmNvcHkoZSksdGhpc31zZXRGcm9tQXJyYXkodCl7bGV0IGU9MS8wLG49MS8wLGk9MS8wLHI9LTEvMCxvPS0xLzAsYT0tMS8wO2ZvcihsZXQgcz0wLGw9dC5sZW5ndGg7czxsO3MrPTMpe2NvbnN0IGw9dFtzXSxjPXRbcysxXSx1PXRbcysyXTtsPGUmJihlPWwpLGM8biYmKG49YyksdTxpJiYoaT11KSxsPnImJihyPWwpLGM+byYmKG89YyksdT5hJiYoYT11KX1yZXR1cm4gdGhpcy5taW4uc2V0KGUsbixpKSx0aGlzLm1heC5zZXQocixvLGEpLHRoaXN9c2V0RnJvbUJ1ZmZlckF0dHJpYnV0ZSh0KXtsZXQgZT0xLzAsbj0xLzAsaT0xLzAscj0tMS8wLG89LTEvMCxhPS0xLzA7Zm9yKGxldCBzPTAsbD10LmNvdW50O3M8bDtzKyspe2NvbnN0IGw9dC5nZXRYKHMpLGM9dC5nZXRZKHMpLHU9dC5nZXRaKHMpO2w8ZSYmKGU9bCksYzxuJiYobj1jKSx1PGkmJihpPXUpLGw+ciYmKHI9bCksYz5vJiYobz1jKSx1PmEmJihhPXUpfXJldHVybiB0aGlzLm1pbi5zZXQoZSxuLGkpLHRoaXMubWF4LnNldChyLG8sYSksdGhpc31zZXRGcm9tUG9pbnRzKHQpe3RoaXMubWFrZUVtcHR5KCk7Zm9yKGxldCBlPTAsbj10Lmxlbmd0aDtlPG47ZSsrKXRoaXMuZXhwYW5kQnlQb2ludCh0W2VdKTtyZXR1cm4gdGhpc31zZXRGcm9tQ2VudGVyQW5kU2l6ZSh0LGUpe2NvbnN0IG49TUh0LmNvcHkoZSkubXVsdGlwbHlTY2FsYXIoLjUpO3JldHVybiB0aGlzLm1pbi5jb3B5KHQpLnN1YihuKSx0aGlzLm1heC5jb3B5KHQpLmFkZChuKSx0aGlzfXNldEZyb21PYmplY3QodCl7cmV0dXJuIHRoaXMubWFrZUVtcHR5KCksdGhpcy5leHBhbmRCeU9iamVjdCh0KX1jbG9uZSgpe3JldHVybihuZXcgdGhpcy5jb25zdHJ1Y3RvcikuY29weSh0aGlzKX1jb3B5KHQpe3JldHVybiB0aGlzLm1pbi5jb3B5KHQubWluKSx0aGlzLm1heC5jb3B5KHQubWF4KSx0aGlzfW1ha2VFbXB0eSgpe3JldHVybiB0aGlzLm1pbi54PXRoaXMubWluLnk9dGhpcy5taW4uej0xLzAsdGhpcy5tYXgueD10aGlzLm1heC55PXRoaXMubWF4Lno9LTEvMCx0aGlzfWlzRW1wdHkoKXtyZXR1cm4gdGhpcy5tYXgueDx0aGlzLm1pbi54fHx0aGlzLm1heC55PHRoaXMubWluLnl8fHRoaXMubWF4Lno8dGhpcy5taW4uen1nZXRDZW50ZXIodCl7cmV0dXJuIHZvaWQgMD09PXQmJihjb25zb2xlLndhcm4oIlRIUkVFLkJveDM6IC5nZXRDZW50ZXIoKSB0YXJnZXQgaXMgbm93IHJlcXVpcmVkIiksdD1uZXcgeUh0KSx0aGlzLmlzRW1wdHkoKT90LnNldCgwLDAsMCk6dC5hZGRWZWN0b3JzKHRoaXMubWluLHRoaXMubWF4KS5tdWx0aXBseVNjYWxhciguNSl9Z2V0U2l6ZSh0KXtyZXR1cm4gdm9pZCAwPT09dCYmKGNvbnNvbGUud2FybigiVEhSRUUuQm94MzogLmdldFNpemUoKSB0YXJnZXQgaXMgbm93IHJlcXVpcmVkIiksdD1uZXcgeUh0KSx0aGlzLmlzRW1wdHkoKT90LnNldCgwLDAsMCk6dC5zdWJWZWN0b3JzKHRoaXMubWF4LHRoaXMubWluKX1leHBhbmRCeVBvaW50KHQpe3JldHVybiB0aGlzLm1pbi5taW4odCksdGhpcy5tYXgubWF4KHQpLHRoaXN9ZXhwYW5kQnlWZWN0b3IodCl7cmV0dXJuIHRoaXMubWluLnN1Yih0KSx0aGlzLm1heC5hZGQodCksdGhpc31leHBhbmRCeVNjYWxhcih0KXtyZXR1cm4gdGhpcy5taW4uYWRkU2NhbGFyKC10KSx0aGlzLm1heC5hZGRTY2FsYXIodCksdGhpc31leHBhbmRCeU9iamVjdCh0KXt0LnVwZGF0ZVdvcmxkTWF0cml4KCExLCExKTtjb25zdCBlPXQuZ2VvbWV0cnk7dm9pZCAwIT09ZSYmKG51bGw9PT1lLmJvdW5kaW5nQm94JiZlLmNvbXB1dGVCb3VuZGluZ0JveCgpLEVIdC5jb3B5KGUuYm91bmRpbmdCb3gpLEVIdC5hcHBseU1hdHJpeDQodC5tYXRyaXhXb3JsZCksdGhpcy51bmlvbihFSHQpKTtjb25zdCBuPXQuY2hpbGRyZW47Zm9yKGxldCB0PTAsZT1uLmxlbmd0aDt0PGU7dCsrKXRoaXMuZXhwYW5kQnlPYmplY3Qoblt0XSk7cmV0dXJuIHRoaXN9Y29udGFpbnNQb2ludCh0KXtyZXR1cm4hKHQueDx0aGlzLm1pbi54fHx0Lng+dGhpcy5tYXgueHx8dC55PHRoaXMubWluLnl8fHQueT50aGlzLm1heC55fHx0Lno8dGhpcy5taW4uenx8dC56PnRoaXMubWF4LnopfWNvbnRhaW5zQm94KHQpe3JldHVybiB0aGlzLm1pbi54PD10Lm1pbi54JiZ0Lm1heC54PD10aGlzLm1heC54JiZ0aGlzLm1pbi55PD10Lm1pbi55JiZ0Lm1heC55PD10aGlzLm1heC55JiZ0aGlzLm1pbi56PD10Lm1pbi56JiZ0Lm1heC56PD10aGlzLm1heC56fWdldFBhcmFtZXRlcih0LGUpe3JldHVybiB2b2lkIDA9PT1lJiYoY29uc29sZS53YXJuKCJUSFJFRS5Cb3gzOiAuZ2V0UGFyYW1ldGVyKCkgdGFyZ2V0IGlzIG5vdyByZXF1aXJlZCIpLGU9bmV3IHlIdCksZS5zZXQoKHQueC10aGlzLm1pbi54KS8odGhpcy5tYXgueC10aGlzLm1pbi54KSwodC55LXRoaXMubWluLnkpLyh0aGlzLm1heC55LXRoaXMubWluLnkpLCh0LnotdGhpcy5taW4ueikvKHRoaXMubWF4LnotdGhpcy5taW4ueikpfWludGVyc2VjdHNCb3godCl7cmV0dXJuISh0Lm1heC54PHRoaXMubWluLnh8fHQubWluLng+dGhpcy5tYXgueHx8dC5tYXgueTx0aGlzLm1pbi55fHx0Lm1pbi55PnRoaXMubWF4Lnl8fHQubWF4Lno8dGhpcy5taW4uenx8dC5taW4uej50aGlzLm1heC56KX1pbnRlcnNlY3RzU3BoZXJlKHQpe3JldHVybiB0aGlzLmNsYW1wUG9pbnQodC5jZW50ZXIsTUh0KSxNSHQuZGlzdGFuY2VUb1NxdWFyZWQodC5jZW50ZXIpPD10LnJhZGl1cyp0LnJhZGl1c31pbnRlcnNlY3RzUGxhbmUodCl7bGV0IGUsbjtyZXR1cm4gdC5ub3JtYWwueD4wPyhlPXQubm9ybWFsLngqdGhpcy5taW4ueCxuPXQubm9ybWFsLngqdGhpcy5tYXgueCk6KGU9dC5ub3JtYWwueCp0aGlzLm1heC54LG49dC5ub3JtYWwueCp0aGlzLm1pbi54KSx0Lm5vcm1hbC55PjA/KGUrPXQubm9ybWFsLnkqdGhpcy5taW4ueSxuKz10Lm5vcm1hbC55KnRoaXMubWF4LnkpOihlKz10Lm5vcm1hbC55KnRoaXMubWF4Lnksbis9dC5ub3JtYWwueSp0aGlzLm1pbi55KSx0Lm5vcm1hbC56PjA/KGUrPXQubm9ybWFsLnoqdGhpcy5taW4ueixuKz10Lm5vcm1hbC56KnRoaXMubWF4LnopOihlKz10Lm5vcm1hbC56KnRoaXMubWF4Lnosbis9dC5ub3JtYWwueip0aGlzLm1pbi56KSxlPD0tdC5jb25zdGFudCYmbj49LXQuY29uc3RhbnR9aW50ZXJzZWN0c1RyaWFuZ2xlKHQpe2lmKHRoaXMuaXNFbXB0eSgpKXJldHVybiExO3RoaXMuZ2V0Q2VudGVyKElIdCksTkh0LnN1YlZlY3RvcnModGhpcy5tYXgsSUh0KSxUSHQuc3ViVmVjdG9ycyh0LmEsSUh0KSxBSHQuc3ViVmVjdG9ycyh0LmIsSUh0KSxDSHQuc3ViVmVjdG9ycyh0LmMsSUh0KSxrSHQuc3ViVmVjdG9ycyhBSHQsVEh0KSxMSHQuc3ViVmVjdG9ycyhDSHQsQUh0KSxQSHQuc3ViVmVjdG9ycyhUSHQsQ0h0KTtsZXQgZT1bMCwta0h0Lnosa0h0LnksMCwtTEh0LnosTEh0LnksMCwtUEh0LnosUEh0Lnksa0h0LnosMCwta0h0LngsTEh0LnosMCwtTEh0LngsUEh0LnosMCwtUEh0LngsLWtIdC55LGtIdC54LDAsLUxIdC55LExIdC54LDAsLVBIdC55LFBIdC54LDBdO3JldHVybiEhd0h0KGUsVEh0LEFIdCxDSHQsTkh0KSYmKGU9WzEsMCwwLDAsMSwwLDAsMCwxXSwhIXdIdChlLFRIdCxBSHQsQ0h0LE5IdCkmJihPSHQuY3Jvc3NWZWN0b3JzKGtIdCxMSHQpLGU9W09IdC54LE9IdC55LE9IdC56XSx3SHQoZSxUSHQsQUh0LENIdCxOSHQpKSl9Y2xhbXBQb2ludCh0LGUpe3JldHVybiB2b2lkIDA9PT1lJiYoY29uc29sZS53YXJuKCJUSFJFRS5Cb3gzOiAuY2xhbXBQb2ludCgpIHRhcmdldCBpcyBub3cgcmVxdWlyZWQiKSxlPW5ldyB5SHQpLGUuY29weSh0KS5jbGFtcCh0aGlzLm1pbix0aGlzLm1heCl9ZGlzdGFuY2VUb1BvaW50KHQpe3JldHVybiBNSHQuY29weSh0KS5jbGFtcCh0aGlzLm1pbix0aGlzLm1heCkuc3ViKHQpLmxlbmd0aCgpfWdldEJvdW5kaW5nU3BoZXJlKHQpe3JldHVybiB2b2lkIDA9PT10JiZjb25zb2xlLmVycm9yKCJUSFJFRS5Cb3gzOiAuZ2V0Qm91bmRpbmdTcGhlcmUoKSB0YXJnZXQgaXMgbm93IHJlcXVpcmVkIiksdGhpcy5nZXRDZW50ZXIodC5jZW50ZXIpLHQucmFkaXVzPS41KnRoaXMuZ2V0U2l6ZShNSHQpLmxlbmd0aCgpLHR9aW50ZXJzZWN0KHQpe3JldHVybiB0aGlzLm1pbi5tYXgodC5taW4pLHRoaXMubWF4Lm1pbih0Lm1heCksdGhpcy5pc0VtcHR5KCkmJnRoaXMubWFrZUVtcHR5KCksdGhpc311bmlvbih0KXtyZXR1cm4gdGhpcy5taW4ubWluKHQubWluKSx0aGlzLm1heC5tYXgodC5tYXgpLHRoaXN9YXBwbHlNYXRyaXg0KHQpe3JldHVybiB0aGlzLmlzRW1wdHkoKXx8KFNIdFswXS5zZXQodGhpcy5taW4ueCx0aGlzLm1pbi55LHRoaXMubWluLnopLmFwcGx5TWF0cml4NCh0KSxTSHRbMV0uc2V0KHRoaXMubWluLngsdGhpcy5taW4ueSx0aGlzLm1heC56KS5hcHBseU1hdHJpeDQodCksU0h0WzJdLnNldCh0aGlzLm1pbi54LHRoaXMubWF4LnksdGhpcy5taW4ueikuYXBwbHlNYXRyaXg0KHQpLFNIdFszXS5zZXQodGhpcy5taW4ueCx0aGlzLm1heC55LHRoaXMubWF4LnopLmFwcGx5TWF0cml4NCh0KSxTSHRbNF0uc2V0KHRoaXMubWF4LngsdGhpcy5taW4ueSx0aGlzLm1pbi56KS5hcHBseU1hdHJpeDQodCksU0h0WzVdLnNldCh0aGlzLm1heC54LHRoaXMubWluLnksdGhpcy5tYXgueikuYXBwbHlNYXRyaXg0KHQpLFNIdFs2XS5zZXQodGhpcy5tYXgueCx0aGlzLm1heC55LHRoaXMubWluLnopLmFwcGx5TWF0cml4NCh0KSxTSHRbN10uc2V0KHRoaXMubWF4LngsdGhpcy5tYXgueSx0aGlzLm1heC56KS5hcHBseU1hdHJpeDQodCksdGhpcy5zZXRGcm9tUG9pbnRzKFNIdCkpLHRoaXN9dHJhbnNsYXRlKHQpe3JldHVybiB0aGlzLm1pbi5hZGQodCksdGhpcy5tYXguYWRkKHQpLHRoaXN9ZXF1YWxzKHQpe3JldHVybiB0Lm1pbi5lcXVhbHModGhpcy5taW4pJiZ0Lm1heC5lcXVhbHModGhpcy5tYXgpfX1mdW5jdGlvbiB3SHQodCxlLG4saSxyKXtmb3IobGV0IG89MCxhPXQubGVuZ3RoLTM7bzw9YTtvKz0zKXtSSHQuZnJvbUFycmF5KHQsbyk7Y29uc3QgYT1yLngqTWF0aC5hYnMoUkh0LngpK3IueSpNYXRoLmFicyhSSHQueSkrci56Kk1hdGguYWJzKFJIdC56KSxzPWUuZG90KFJIdCksbD1uLmRvdChSSHQpLGM9aS5kb3QoUkh0KTtpZihNYXRoLm1heCgtTWF0aC5tYXgocyxsLGMpLE1hdGgubWluKHMsbCxjKSk+YSlyZXR1cm4hMX1yZXR1cm4hMH1jb25zdCBTSHQ9W25ldyB5SHQsbmV3IHlIdCxuZXcgeUh0LG5ldyB5SHQsbmV3IHlIdCxuZXcgeUh0LG5ldyB5SHQsbmV3IHlIdF0sTUh0PW5ldyB5SHQsRUh0PW5ldyB4SHQsVEh0PW5ldyB5SHQsQUh0PW5ldyB5SHQsQ0h0PW5ldyB5SHQsa0h0PW5ldyB5SHQsTEh0PW5ldyB5SHQsUEh0PW5ldyB5SHQsSUh0PW5ldyB5SHQsTkh0PW5ldyB5SHQsT0h0PW5ldyB5SHQsUkh0PW5ldyB5SHQsekh0PW5ldyB4SHQ7Y2xhc3MgREh0e2NvbnN0cnVjdG9yKHQsZSl7dGhpcy5jZW50ZXI9dm9pZCAwIT09dD90Om5ldyB5SHQsdGhpcy5yYWRpdXM9dm9pZCAwIT09ZT9lOi0xfXNldCh0LGUpe3JldHVybiB0aGlzLmNlbnRlci5jb3B5KHQpLHRoaXMucmFkaXVzPWUsdGhpc31zZXRGcm9tUG9pbnRzKHQsZSl7Y29uc3Qgbj10aGlzLmNlbnRlcjt2b2lkIDAhPT1lP24uY29weShlKTp6SHQuc2V0RnJvbVBvaW50cyh0KS5nZXRDZW50ZXIobik7bGV0IGk9MDtmb3IobGV0IGU9MCxyPXQubGVuZ3RoO2U8cjtlKyspaT1NYXRoLm1heChpLG4uZGlzdGFuY2VUb1NxdWFyZWQodFtlXSkpO3JldHVybiB0aGlzLnJhZGl1cz1NYXRoLnNxcnQoaSksdGhpc31jbG9uZSgpe3JldHVybihuZXcgdGhpcy5jb25zdHJ1Y3RvcikuY29weSh0aGlzKX1jb3B5KHQpe3JldHVybiB0aGlzLmNlbnRlci5jb3B5KHQuY2VudGVyKSx0aGlzLnJhZGl1cz10LnJhZGl1cyx0aGlzfWlzRW1wdHkoKXtyZXR1cm4gdGhpcy5yYWRpdXM8MH1tYWtlRW1wdHkoKXtyZXR1cm4gdGhpcy5jZW50ZXIuc2V0KDAsMCwwKSx0aGlzLnJhZGl1cz0tMSx0aGlzfWNvbnRhaW5zUG9pbnQodCl7cmV0dXJuIHQuZGlzdGFuY2VUb1NxdWFyZWQodGhpcy5jZW50ZXIpPD10aGlzLnJhZGl1cyp0aGlzLnJhZGl1c31kaXN0YW5jZVRvUG9pbnQodCl7cmV0dXJuIHQuZGlzdGFuY2VUbyh0aGlzLmNlbnRlciktdGhpcy5yYWRpdXN9aW50ZXJzZWN0c1NwaGVyZSh0KXtjb25zdCBlPXRoaXMucmFkaXVzK3QucmFkaXVzO3JldHVybiB0LmNlbnRlci5kaXN0YW5jZVRvU3F1YXJlZCh0aGlzLmNlbnRlcik8PWUqZX1pbnRlcnNlY3RzQm94KHQpe3JldHVybiB0LmludGVyc2VjdHNTcGhlcmUodGhpcyl9aW50ZXJzZWN0c1BsYW5lKHQpe3JldHVybiBNYXRoLmFicyh0LmRpc3RhbmNlVG9Qb2ludCh0aGlzLmNlbnRlcikpPD10aGlzLnJhZGl1c31jbGFtcFBvaW50KHQsZSl7Y29uc3Qgbj10aGlzLmNlbnRlci5kaXN0YW5jZVRvU3F1YXJlZCh0KTtyZXR1cm4gdm9pZCAwPT09ZSYmKGNvbnNvbGUud2FybigiVEhSRUUuU3BoZXJlOiAuY2xhbXBQb2ludCgpIHRhcmdldCBpcyBub3cgcmVxdWlyZWQiKSxlPW5ldyB5SHQpLGUuY29weSh0KSxuPnRoaXMucmFkaXVzKnRoaXMucmFkaXVzJiYoZS5zdWIodGhpcy5jZW50ZXIpLm5vcm1hbGl6ZSgpLGUubXVsdGlwbHlTY2FsYXIodGhpcy5yYWRpdXMpLmFkZCh0aGlzLmNlbnRlcikpLGV9Z2V0Qm91bmRpbmdCb3godCl7cmV0dXJuIHZvaWQgMD09PXQmJihjb25zb2xlLndhcm4oIlRIUkVFLlNwaGVyZTogLmdldEJvdW5kaW5nQm94KCkgdGFyZ2V0IGlzIG5vdyByZXF1aXJlZCIpLHQ9bmV3IHhIdCksdGhpcy5pc0VtcHR5KCk/KHQubWFrZUVtcHR5KCksdCk6KHQuc2V0KHRoaXMuY2VudGVyLHRoaXMuY2VudGVyKSx0LmV4cGFuZEJ5U2NhbGFyKHRoaXMucmFkaXVzKSx0KX1hcHBseU1hdHJpeDQodCl7cmV0dXJuIHRoaXMuY2VudGVyLmFwcGx5TWF0cml4NCh0KSx0aGlzLnJhZGl1cz10aGlzLnJhZGl1cyp0LmdldE1heFNjYWxlT25BeGlzKCksdGhpc310cmFuc2xhdGUodCl7cmV0dXJuIHRoaXMuY2VudGVyLmFkZCh0KSx0aGlzfWVxdWFscyh0KXtyZXR1cm4gdC5jZW50ZXIuZXF1YWxzKHRoaXMuY2VudGVyKSYmdC5yYWRpdXM9PT10aGlzLnJhZGl1c319Y29uc3QgQkh0PW5ldyB5SHQsSEh0PW5ldyB5SHQsRkh0PW5ldyB5SHQsVkh0PW5ldyB5SHQsakh0PW5ldyB5SHQsVUh0PW5ldyB5SHQsR0h0PW5ldyB5SHQ7Y2xhc3MgV0h0e2NvbnN0cnVjdG9yKHQsZSl7dGhpcy5vcmlnaW49dm9pZCAwIT09dD90Om5ldyB5SHQsdGhpcy5kaXJlY3Rpb249dm9pZCAwIT09ZT9lOm5ldyB5SHQoMCwwLC0xKX1zZXQodCxlKXtyZXR1cm4gdGhpcy5vcmlnaW4uY29weSh0KSx0aGlzLmRpcmVjdGlvbi5jb3B5KGUpLHRoaXN9Y2xvbmUoKXtyZXR1cm4obmV3IHRoaXMuY29uc3RydWN0b3IpLmNvcHkodGhpcyl9Y29weSh0KXtyZXR1cm4gdGhpcy5vcmlnaW4uY29weSh0Lm9yaWdpbiksdGhpcy5kaXJlY3Rpb24uY29weSh0LmRpcmVjdGlvbiksdGhpc31hdCh0LGUpe3JldHVybiB2b2lkIDA9PT1lJiYoY29uc29sZS53YXJuKCJUSFJFRS5SYXk6IC5hdCgpIHRhcmdldCBpcyBub3cgcmVxdWlyZWQiKSxlPW5ldyB5SHQpLGUuY29weSh0aGlzLmRpcmVjdGlvbikubXVsdGlwbHlTY2FsYXIodCkuYWRkKHRoaXMub3JpZ2luKX1sb29rQXQodCl7cmV0dXJuIHRoaXMuZGlyZWN0aW9uLmNvcHkodCkuc3ViKHRoaXMub3JpZ2luKS5ub3JtYWxpemUoKSx0aGlzfXJlY2FzdCh0KXtyZXR1cm4gdGhpcy5vcmlnaW4uY29weSh0aGlzLmF0KHQsQkh0KSksdGhpc31jbG9zZXN0UG9pbnRUb1BvaW50KHQsZSl7dm9pZCAwPT09ZSYmKGNvbnNvbGUud2FybigiVEhSRUUuUmF5OiAuY2xvc2VzdFBvaW50VG9Qb2ludCgpIHRhcmdldCBpcyBub3cgcmVxdWlyZWQiKSxlPW5ldyB5SHQpLGUuc3ViVmVjdG9ycyh0LHRoaXMub3JpZ2luKTtjb25zdCBuPWUuZG90KHRoaXMuZGlyZWN0aW9uKTtyZXR1cm4gbjwwP2UuY29weSh0aGlzLm9yaWdpbik6ZS5jb3B5KHRoaXMuZGlyZWN0aW9uKS5tdWx0aXBseVNjYWxhcihuKS5hZGQodGhpcy5vcmlnaW4pfWRpc3RhbmNlVG9Qb2ludCh0KXtyZXR1cm4gTWF0aC5zcXJ0KHRoaXMuZGlzdGFuY2VTcVRvUG9pbnQodCkpfWRpc3RhbmNlU3FUb1BvaW50KHQpe2NvbnN0IGU9Qkh0LnN1YlZlY3RvcnModCx0aGlzLm9yaWdpbikuZG90KHRoaXMuZGlyZWN0aW9uKTtyZXR1cm4gZTwwP3RoaXMub3JpZ2luLmRpc3RhbmNlVG9TcXVhcmVkKHQpOihCSHQuY29weSh0aGlzLmRpcmVjdGlvbikubXVsdGlwbHlTY2FsYXIoZSkuYWRkKHRoaXMub3JpZ2luKSxCSHQuZGlzdGFuY2VUb1NxdWFyZWQodCkpfWRpc3RhbmNlU3FUb1NlZ21lbnQodCxlLG4saSl7SEh0LmNvcHkodCkuYWRkKGUpLm11bHRpcGx5U2NhbGFyKC41KSxGSHQuY29weShlKS5zdWIodCkubm9ybWFsaXplKCksVkh0LmNvcHkodGhpcy5vcmlnaW4pLnN1YihISHQpO2NvbnN0IHI9LjUqdC5kaXN0YW5jZVRvKGUpLG89LXRoaXMuZGlyZWN0aW9uLmRvdChGSHQpLGE9Vkh0LmRvdCh0aGlzLmRpcmVjdGlvbikscz0tVkh0LmRvdChGSHQpLGw9Vkh0Lmxlbmd0aFNxKCksYz1NYXRoLmFicygxLW8qbyk7bGV0IHUsaCxkLHA7aWYoYz4wKWlmKHU9bypzLWEsaD1vKmEtcyxwPXIqYyx1Pj0wKWlmKGg+PS1wKWlmKGg8PXApe2NvbnN0IHQ9MS9jO3UqPXQsaCo9dCxkPXUqKHUrbypoKzIqYSkraCoobyp1K2grMipzKStsfWVsc2UgaD1yLHU9TWF0aC5tYXgoMCwtKG8qaCthKSksZD0tdSp1K2gqKGgrMipzKStsO2Vsc2UgaD0tcix1PU1hdGgubWF4KDAsLShvKmgrYSkpLGQ9LXUqdStoKihoKzIqcykrbDtlbHNlIGg8PS1wPyh1PU1hdGgubWF4KDAsLSgtbypyK2EpKSxoPXU+MD8tcjpNYXRoLm1pbihNYXRoLm1heCgtciwtcyksciksZD0tdSp1K2gqKGgrMipzKStsKTpoPD1wPyh1PTAsaD1NYXRoLm1pbihNYXRoLm1heCgtciwtcyksciksZD1oKihoKzIqcykrbCk6KHU9TWF0aC5tYXgoMCwtKG8qcithKSksaD11PjA/cjpNYXRoLm1pbihNYXRoLm1heCgtciwtcyksciksZD0tdSp1K2gqKGgrMipzKStsKTtlbHNlIGg9bz4wPy1yOnIsdT1NYXRoLm1heCgwLC0obypoK2EpKSxkPS11KnUraCooaCsyKnMpK2w7cmV0dXJuIG4mJm4uY29weSh0aGlzLmRpcmVjdGlvbikubXVsdGlwbHlTY2FsYXIodSkuYWRkKHRoaXMub3JpZ2luKSxpJiZpLmNvcHkoRkh0KS5tdWx0aXBseVNjYWxhcihoKS5hZGQoSEh0KSxkfWludGVyc2VjdFNwaGVyZSh0LGUpe0JIdC5zdWJWZWN0b3JzKHQuY2VudGVyLHRoaXMub3JpZ2luKTtjb25zdCBuPUJIdC5kb3QodGhpcy5kaXJlY3Rpb24pLGk9Qkh0LmRvdChCSHQpLW4qbixyPXQucmFkaXVzKnQucmFkaXVzO2lmKGk+cilyZXR1cm4gbnVsbDtjb25zdCBvPU1hdGguc3FydChyLWkpLGE9bi1vLHM9bitvO3JldHVybiBhPDAmJnM8MD9udWxsOnRoaXMuYXQoYTwwP3M6YSxlKX1pbnRlcnNlY3RzU3BoZXJlKHQpe3JldHVybiB0aGlzLmRpc3RhbmNlU3FUb1BvaW50KHQuY2VudGVyKTw9dC5yYWRpdXMqdC5yYWRpdXN9ZGlzdGFuY2VUb1BsYW5lKHQpe2NvbnN0IGU9dC5ub3JtYWwuZG90KHRoaXMuZGlyZWN0aW9uKTtpZigwPT09ZSlyZXR1cm4gMD09PXQuZGlzdGFuY2VUb1BvaW50KHRoaXMub3JpZ2luKT8wOm51bGw7Y29uc3Qgbj0tKHRoaXMub3JpZ2luLmRvdCh0Lm5vcm1hbCkrdC5jb25zdGFudCkvZTtyZXR1cm4gbj49MD9uOm51bGx9aW50ZXJzZWN0UGxhbmUodCxlKXtjb25zdCBuPXRoaXMuZGlzdGFuY2VUb1BsYW5lKHQpO3JldHVybiBudWxsPT09bj9udWxsOnRoaXMuYXQobixlKX1pbnRlcnNlY3RzUGxhbmUodCl7Y29uc3QgZT10LmRpc3RhbmNlVG9Qb2ludCh0aGlzLm9yaWdpbik7cmV0dXJuIDA9PT1lfHx0Lm5vcm1hbC5kb3QodGhpcy5kaXJlY3Rpb24pKmU8MH1pbnRlcnNlY3RCb3godCxlKXtsZXQgbixpLHIsbyxhLHM7Y29uc3QgbD0xL3RoaXMuZGlyZWN0aW9uLngsYz0xL3RoaXMuZGlyZWN0aW9uLnksdT0xL3RoaXMuZGlyZWN0aW9uLnosaD10aGlzLm9yaWdpbjtyZXR1cm4gbD49MD8obj0odC5taW4ueC1oLngpKmwsaT0odC5tYXgueC1oLngpKmwpOihuPSh0Lm1heC54LWgueCkqbCxpPSh0Lm1pbi54LWgueCkqbCksYz49MD8ocj0odC5taW4ueS1oLnkpKmMsbz0odC5tYXgueS1oLnkpKmMpOihyPSh0Lm1heC55LWgueSkqYyxvPSh0Lm1pbi55LWgueSkqYyksbj5vfHxyPmk/bnVsbDooKHI+bnx8biE9bikmJihuPXIpLChvPGl8fGkhPWkpJiYoaT1vKSx1Pj0wPyhhPSh0Lm1pbi56LWgueikqdSxzPSh0Lm1heC56LWgueikqdSk6KGE9KHQubWF4LnotaC56KSp1LHM9KHQubWluLnotaC56KSp1KSxuPnN8fGE+aT9udWxsOigoYT5ufHxuIT1uKSYmKG49YSksKHM8aXx8aSE9aSkmJihpPXMpLGk8MD9udWxsOnRoaXMuYXQobj49MD9uOmksZSkpKX1pbnRlcnNlY3RzQm94KHQpe3JldHVybiBudWxsIT09dGhpcy5pbnRlcnNlY3RCb3godCxCSHQpfWludGVyc2VjdFRyaWFuZ2xlKHQsZSxuLGkscil7akh0LnN1YlZlY3RvcnMoZSx0KSxVSHQuc3ViVmVjdG9ycyhuLHQpLEdIdC5jcm9zc1ZlY3RvcnMoakh0LFVIdCk7bGV0IG8sYT10aGlzLmRpcmVjdGlvbi5kb3QoR0h0KTtpZihhPjApe2lmKGkpcmV0dXJuIG51bGw7bz0xfWVsc2V7aWYoIShhPDApKXJldHVybiBudWxsO289LTEsYT0tYX1WSHQuc3ViVmVjdG9ycyh0aGlzLm9yaWdpbix0KTtjb25zdCBzPW8qdGhpcy5kaXJlY3Rpb24uZG90KFVIdC5jcm9zc1ZlY3RvcnMoVkh0LFVIdCkpO2lmKHM8MClyZXR1cm4gbnVsbDtjb25zdCBsPW8qdGhpcy5kaXJlY3Rpb24uZG90KGpIdC5jcm9zcyhWSHQpKTtpZihsPDApcmV0dXJuIG51bGw7aWYocytsPmEpcmV0dXJuIG51bGw7Y29uc3QgYz0tbypWSHQuZG90KEdIdCk7cmV0dXJuIGM8MD9udWxsOnRoaXMuYXQoYy9hLHIpfWFwcGx5TWF0cml4NCh0KXtyZXR1cm4gdGhpcy5vcmlnaW4uYXBwbHlNYXRyaXg0KHQpLHRoaXMuZGlyZWN0aW9uLnRyYW5zZm9ybURpcmVjdGlvbih0KSx0aGlzfWVxdWFscyh0KXtyZXR1cm4gdC5vcmlnaW4uZXF1YWxzKHRoaXMub3JpZ2luKSYmdC5kaXJlY3Rpb24uZXF1YWxzKHRoaXMuZGlyZWN0aW9uKX19Y2xhc3MgcUh0e2NvbnN0cnVjdG9yKCl7T2JqZWN0LmRlZmluZVByb3BlcnR5KHRoaXMsImlzTWF0cml4NCIse3ZhbHVlOiEwfSksdGhpcy5lbGVtZW50cz1bMSwwLDAsMCwwLDEsMCwwLDAsMCwxLDAsMCwwLDAsMV0sYXJndW1lbnRzLmxlbmd0aD4wJiZjb25zb2xlLmVycm9yKCJUSFJFRS5NYXRyaXg0OiB0aGUgY29uc3RydWN0b3Igbm8gbG9uZ2VyIHJlYWRzIGFyZ3VtZW50cy4gdXNlIC5zZXQoKSBpbnN0ZWFkLiIpfXNldCh0LGUsbixpLHIsbyxhLHMsbCxjLHUsaCxkLHAsZixtKXtjb25zdCBnPXRoaXMuZWxlbWVudHM7cmV0dXJuIGdbMF09dCxnWzRdPWUsZ1s4XT1uLGdbMTJdPWksZ1sxXT1yLGdbNV09byxnWzldPWEsZ1sxM109cyxnWzJdPWwsZ1s2XT1jLGdbMTBdPXUsZ1sxNF09aCxnWzNdPWQsZ1s3XT1wLGdbMTFdPWYsZ1sxNV09bSx0aGlzfWlkZW50aXR5KCl7cmV0dXJuIHRoaXMuc2V0KDEsMCwwLDAsMCwxLDAsMCwwLDAsMSwwLDAsMCwwLDEpLHRoaXN9Y2xvbmUoKXtyZXR1cm4obmV3IHFIdCkuZnJvbUFycmF5KHRoaXMuZWxlbWVudHMpfWNvcHkodCl7Y29uc3QgZT10aGlzLmVsZW1lbnRzLG49dC5lbGVtZW50cztyZXR1cm4gZVswXT1uWzBdLGVbMV09blsxXSxlWzJdPW5bMl0sZVszXT1uWzNdLGVbNF09bls0XSxlWzVdPW5bNV0sZVs2XT1uWzZdLGVbN109bls3XSxlWzhdPW5bOF0sZVs5XT1uWzldLGVbMTBdPW5bMTBdLGVbMTFdPW5bMTFdLGVbMTJdPW5bMTJdLGVbMTNdPW5bMTNdLGVbMTRdPW5bMTRdLGVbMTVdPW5bMTVdLHRoaXN9Y29weVBvc2l0aW9uKHQpe2NvbnN0IGU9dGhpcy5lbGVtZW50cyxuPXQuZWxlbWVudHM7cmV0dXJuIGVbMTJdPW5bMTJdLGVbMTNdPW5bMTNdLGVbMTRdPW5bMTRdLHRoaXN9c2V0RnJvbU1hdHJpeDModCl7Y29uc3QgZT10LmVsZW1lbnRzO3JldHVybiB0aGlzLnNldChlWzBdLGVbM10sZVs2XSwwLGVbMV0sZVs0XSxlWzddLDAsZVsyXSxlWzVdLGVbOF0sMCwwLDAsMCwxKSx0aGlzfWV4dHJhY3RCYXNpcyh0LGUsbil7cmV0dXJuIHQuc2V0RnJvbU1hdHJpeENvbHVtbih0aGlzLDApLGUuc2V0RnJvbU1hdHJpeENvbHVtbih0aGlzLDEpLG4uc2V0RnJvbU1hdHJpeENvbHVtbih0aGlzLDIpLHRoaXN9bWFrZUJhc2lzKHQsZSxuKXtyZXR1cm4gdGhpcy5zZXQodC54LGUueCxuLngsMCx0LnksZS55LG4ueSwwLHQueixlLnosbi56LDAsMCwwLDAsMSksdGhpc31leHRyYWN0Um90YXRpb24odCl7Y29uc3QgZT10aGlzLmVsZW1lbnRzLG49dC5lbGVtZW50cyxpPTEvWUh0LnNldEZyb21NYXRyaXhDb2x1bW4odCwwKS5sZW5ndGgoKSxyPTEvWUh0LnNldEZyb21NYXRyaXhDb2x1bW4odCwxKS5sZW5ndGgoKSxvPTEvWUh0LnNldEZyb21NYXRyaXhDb2x1bW4odCwyKS5sZW5ndGgoKTtyZXR1cm4gZVswXT1uWzBdKmksZVsxXT1uWzFdKmksZVsyXT1uWzJdKmksZVszXT0wLGVbNF09bls0XSpyLGVbNV09bls1XSpyLGVbNl09bls2XSpyLGVbN109MCxlWzhdPW5bOF0qbyxlWzldPW5bOV0qbyxlWzEwXT1uWzEwXSpvLGVbMTFdPTAsZVsxMl09MCxlWzEzXT0wLGVbMTRdPTAsZVsxNV09MSx0aGlzfW1ha2VSb3RhdGlvbkZyb21FdWxlcih0KXt0JiZ0LmlzRXVsZXJ8fGNvbnNvbGUuZXJyb3IoIlRIUkVFLk1hdHJpeDQ6IC5tYWtlUm90YXRpb25Gcm9tRXVsZXIoKSBub3cgZXhwZWN0cyBhIEV1bGVyIHJvdGF0aW9uIHJhdGhlciB0aGFuIGEgVmVjdG9yMyBhbmQgb3JkZXIuIik7Y29uc3QgZT10aGlzLmVsZW1lbnRzLG49dC54LGk9dC55LHI9dC56LG89TWF0aC5jb3MobiksYT1NYXRoLnNpbihuKSxzPU1hdGguY29zKGkpLGw9TWF0aC5zaW4oaSksYz1NYXRoLmNvcyhyKSx1PU1hdGguc2luKHIpO2lmKCJYWVoiPT09dC5vcmRlcil7Y29uc3QgdD1vKmMsbj1vKnUsaT1hKmMscj1hKnU7ZVswXT1zKmMsZVs0XT0tcyp1LGVbOF09bCxlWzFdPW4raSpsLGVbNV09dC1yKmwsZVs5XT0tYSpzLGVbMl09ci10KmwsZVs2XT1pK24qbCxlWzEwXT1vKnN9ZWxzZSBpZigiWVhaIj09PXQub3JkZXIpe2NvbnN0IHQ9cypjLG49cyp1LGk9bCpjLHI9bCp1O2VbMF09dCtyKmEsZVs0XT1pKmEtbixlWzhdPW8qbCxlWzFdPW8qdSxlWzVdPW8qYyxlWzldPS1hLGVbMl09biphLWksZVs2XT1yK3QqYSxlWzEwXT1vKnN9ZWxzZSBpZigiWlhZIj09PXQub3JkZXIpe2NvbnN0IHQ9cypjLG49cyp1LGk9bCpjLHI9bCp1O2VbMF09dC1yKmEsZVs0XT0tbyp1LGVbOF09aStuKmEsZVsxXT1uK2kqYSxlWzVdPW8qYyxlWzldPXItdCphLGVbMl09LW8qbCxlWzZdPWEsZVsxMF09bypzfWVsc2UgaWYoIlpZWCI9PT10Lm9yZGVyKXtjb25zdCB0PW8qYyxuPW8qdSxpPWEqYyxyPWEqdTtlWzBdPXMqYyxlWzRdPWkqbC1uLGVbOF09dCpsK3IsZVsxXT1zKnUsZVs1XT1yKmwrdCxlWzldPW4qbC1pLGVbMl09LWwsZVs2XT1hKnMsZVsxMF09bypzfWVsc2UgaWYoIllaWCI9PT10Lm9yZGVyKXtjb25zdCB0PW8qcyxuPW8qbCxpPWEqcyxyPWEqbDtlWzBdPXMqYyxlWzRdPXItdCp1LGVbOF09aSp1K24sZVsxXT11LGVbNV09bypjLGVbOV09LWEqYyxlWzJdPS1sKmMsZVs2XT1uKnUraSxlWzEwXT10LXIqdX1lbHNlIGlmKCJYWlkiPT09dC5vcmRlcil7Y29uc3QgdD1vKnMsbj1vKmwsaT1hKnMscj1hKmw7ZVswXT1zKmMsZVs0XT0tdSxlWzhdPWwqYyxlWzFdPXQqdStyLGVbNV09bypjLGVbOV09bip1LWksZVsyXT1pKnUtbixlWzZdPWEqYyxlWzEwXT1yKnUrdH1yZXR1cm4gZVszXT0wLGVbN109MCxlWzExXT0wLGVbMTJdPTAsZVsxM109MCxlWzE0XT0wLGVbMTVdPTEsdGhpc31tYWtlUm90YXRpb25Gcm9tUXVhdGVybmlvbih0KXtyZXR1cm4gdGhpcy5jb21wb3NlKCRIdCx0LEtIdCl9bG9va0F0KHQsZSxuKXtjb25zdCBpPXRoaXMuZWxlbWVudHM7cmV0dXJuIFFIdC5zdWJWZWN0b3JzKHQsZSksMD09PVFIdC5sZW5ndGhTcSgpJiYoUUh0Lno9MSksUUh0Lm5vcm1hbGl6ZSgpLFpIdC5jcm9zc1ZlY3RvcnMobixRSHQpLDA9PT1aSHQubGVuZ3RoU3EoKSYmKDE9PT1NYXRoLmFicyhuLnopP1FIdC54Kz0xZS00OlFIdC56Kz0xZS00LFFIdC5ub3JtYWxpemUoKSxaSHQuY3Jvc3NWZWN0b3JzKG4sUUh0KSksWkh0Lm5vcm1hbGl6ZSgpLEpIdC5jcm9zc1ZlY3RvcnMoUUh0LFpIdCksaVswXT1aSHQueCxpWzRdPUpIdC54LGlbOF09UUh0LngsaVsxXT1aSHQueSxpWzVdPUpIdC55LGlbOV09UUh0LnksaVsyXT1aSHQueixpWzZdPUpIdC56LGlbMTBdPVFIdC56LHRoaXN9bXVsdGlwbHkodCxlKXtyZXR1cm4gdm9pZCAwIT09ZT8oY29uc29sZS53YXJuKCJUSFJFRS5NYXRyaXg0OiAubXVsdGlwbHkoKSBub3cgb25seSBhY2NlcHRzIG9uZSBhcmd1bWVudC4gVXNlIC5tdWx0aXBseU1hdHJpY2VzKCBhLCBiICkgaW5zdGVhZC4iKSx0aGlzLm11bHRpcGx5TWF0cmljZXModCxlKSk6dGhpcy5tdWx0aXBseU1hdHJpY2VzKHRoaXMsdCl9cHJlbXVsdGlwbHkodCl7cmV0dXJuIHRoaXMubXVsdGlwbHlNYXRyaWNlcyh0LHRoaXMpfW11bHRpcGx5TWF0cmljZXModCxlKXtjb25zdCBuPXQuZWxlbWVudHMsaT1lLmVsZW1lbnRzLHI9dGhpcy5lbGVtZW50cyxvPW5bMF0sYT1uWzRdLHM9bls4XSxsPW5bMTJdLGM9blsxXSx1PW5bNV0saD1uWzldLGQ9blsxM10scD1uWzJdLGY9bls2XSxtPW5bMTBdLGc9blsxNF0sXz1uWzNdLHk9bls3XSx2PW5bMTFdLGI9blsxNV0seD1pWzBdLHc9aVs0XSxTPWlbOF0sTT1pWzEyXSxFPWlbMV0sVD1pWzVdLEE9aVs5XSxDPWlbMTNdLGs9aVsyXSxMPWlbNl0sUD1pWzEwXSxJPWlbMTRdLE49aVszXSxPPWlbN10sUj1pWzExXSx6PWlbMTVdO3JldHVybiByWzBdPW8qeCthKkUrcyprK2wqTixyWzRdPW8qdythKlQrcypMK2wqTyxyWzhdPW8qUythKkErcypQK2wqUixyWzEyXT1vKk0rYSpDK3MqSStsKnosclsxXT1jKngrdSpFK2gqaytkKk4scls1XT1jKncrdSpUK2gqTCtkKk8scls5XT1jKlMrdSpBK2gqUCtkKlIsclsxM109YypNK3UqQytoKkkrZCp6LHJbMl09cCp4K2YqRSttKmsrZypOLHJbNl09cCp3K2YqVCttKkwrZypPLHJbMTBdPXAqUytmKkErbSpQK2cqUixyWzE0XT1wKk0rZipDK20qSStnKnosclszXT1fKngreSpFK3YqaytiKk4scls3XT1fKncreSpUK3YqTCtiKk8sclsxMV09XypTK3kqQSt2KlArYipSLHJbMTVdPV8qTSt5KkMrdipJK2Iqeix0aGlzfW11bHRpcGx5U2NhbGFyKHQpe2NvbnN0IGU9dGhpcy5lbGVtZW50cztyZXR1cm4gZVswXSo9dCxlWzRdKj10LGVbOF0qPXQsZVsxMl0qPXQsZVsxXSo9dCxlWzVdKj10LGVbOV0qPXQsZVsxM10qPXQsZVsyXSo9dCxlWzZdKj10LGVbMTBdKj10LGVbMTRdKj10LGVbM10qPXQsZVs3XSo9dCxlWzExXSo9dCxlWzE1XSo9dCx0aGlzfWRldGVybWluYW50KCl7Y29uc3QgdD10aGlzLmVsZW1lbnRzLGU9dFswXSxuPXRbNF0saT10WzhdLHI9dFsxMl0sbz10WzFdLGE9dFs1XSxzPXRbOV0sbD10WzEzXSxjPXRbMl0sdT10WzZdLGg9dFsxMF0sZD10WzE0XTtyZXR1cm4gdFszXSooK3Iqcyp1LWkqbCp1LXIqYSpoK24qbCpoK2kqYSpkLW4qcypkKSt0WzddKigrZSpzKmQtZSpsKmgrcipvKmgtaSpvKmQraSpsKmMtcipzKmMpK3RbMTFdKigrZSpsKnUtZSphKmQtcipvKnUrbipvKmQrciphKmMtbipsKmMpK3RbMTVdKigtaSphKmMtZSpzKnUrZSphKmgraSpvKnUtbipvKmgrbipzKmMpfXRyYW5zcG9zZSgpe2NvbnN0IHQ9dGhpcy5lbGVtZW50cztsZXQgZTtyZXR1cm4gZT10WzFdLHRbMV09dFs0XSx0WzRdPWUsZT10WzJdLHRbMl09dFs4XSx0WzhdPWUsZT10WzZdLHRbNl09dFs5XSx0WzldPWUsZT10WzNdLHRbM109dFsxMl0sdFsxMl09ZSxlPXRbN10sdFs3XT10WzEzXSx0WzEzXT1lLGU9dFsxMV0sdFsxMV09dFsxNF0sdFsxNF09ZSx0aGlzfXNldFBvc2l0aW9uKHQsZSxuKXtjb25zdCBpPXRoaXMuZWxlbWVudHM7cmV0dXJuIHQuaXNWZWN0b3IzPyhpWzEyXT10LngsaVsxM109dC55LGlbMTRdPXQueik6KGlbMTJdPXQsaVsxM109ZSxpWzE0XT1uKSx0aGlzfWludmVydCgpe2NvbnN0IHQ9dGhpcy5lbGVtZW50cyxlPXRbMF0sbj10WzFdLGk9dFsyXSxyPXRbM10sbz10WzRdLGE9dFs1XSxzPXRbNl0sbD10WzddLGM9dFs4XSx1PXRbOV0saD10WzEwXSxkPXRbMTFdLHA9dFsxMl0sZj10WzEzXSxtPXRbMTRdLGc9dFsxNV0sXz11Km0qbC1mKmgqbCtmKnMqZC1hKm0qZC11KnMqZythKmgqZyx5PXAqaCpsLWMqbSpsLXAqcypkK28qbSpkK2MqcypnLW8qaCpnLHY9YypmKmwtcCp1KmwrcCphKmQtbypmKmQtYyphKmcrbyp1KmcsYj1wKnUqcy1jKmYqcy1wKmEqaCtvKmYqaCtjKmEqbS1vKnUqbSx4PWUqXytuKnkraSp2K3IqYjtpZigwPT09eClyZXR1cm4gdGhpcy5zZXQoMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCk7Y29uc3Qgdz0xL3g7cmV0dXJuIHRbMF09Xyp3LHRbMV09KGYqaCpyLXUqbSpyLWYqaSpkK24qbSpkK3UqaSpnLW4qaCpnKSp3LHRbMl09KGEqbSpyLWYqcypyK2YqaSpsLW4qbSpsLWEqaSpnK24qcypnKSp3LHRbM109KHUqcypyLWEqaCpyLXUqaSpsK24qaCpsK2EqaSpkLW4qcypkKSp3LHRbNF09eSp3LHRbNV09KGMqbSpyLXAqaCpyK3AqaSpkLWUqbSpkLWMqaSpnK2UqaCpnKSp3LHRbNl09KHAqcypyLW8qbSpyLXAqaSpsK2UqbSpsK28qaSpnLWUqcypnKSp3LHRbN109KG8qaCpyLWMqcypyK2MqaSpsLWUqaCpsLW8qaSpkK2UqcypkKSp3LHRbOF09dip3LHRbOV09KHAqdSpyLWMqZipyLXAqbipkK2UqZipkK2MqbipnLWUqdSpnKSp3LHRbMTBdPShvKmYqci1wKmEqcitwKm4qbC1lKmYqbC1vKm4qZytlKmEqZykqdyx0WzExXT0oYyphKnItbyp1KnItYypuKmwrZSp1KmwrbypuKmQtZSphKmQpKncsdFsxMl09Yip3LHRbMTNdPShjKmYqaS1wKnUqaStwKm4qaC1lKmYqaC1jKm4qbStlKnUqbSkqdyx0WzE0XT0ocCphKmktbypmKmktcCpuKnMrZSpmKnMrbypuKm0tZSphKm0pKncsdFsxNV09KG8qdSppLWMqYSppK2MqbipzLWUqdSpzLW8qbipoK2UqYSpoKSp3LHRoaXN9c2NhbGUodCl7Y29uc3QgZT10aGlzLmVsZW1lbnRzLG49dC54LGk9dC55LHI9dC56O3JldHVybiBlWzBdKj1uLGVbNF0qPWksZVs4XSo9cixlWzFdKj1uLGVbNV0qPWksZVs5XSo9cixlWzJdKj1uLGVbNl0qPWksZVsxMF0qPXIsZVszXSo9bixlWzddKj1pLGVbMTFdKj1yLHRoaXN9Z2V0TWF4U2NhbGVPbkF4aXMoKXtjb25zdCB0PXRoaXMuZWxlbWVudHM7cmV0dXJuIE1hdGguc3FydChNYXRoLm1heCh0WzBdKnRbMF0rdFsxXSp0WzFdK3RbMl0qdFsyXSx0WzRdKnRbNF0rdFs1XSp0WzVdK3RbNl0qdFs2XSx0WzhdKnRbOF0rdFs5XSp0WzldK3RbMTBdKnRbMTBdKSl9bWFrZVRyYW5zbGF0aW9uKHQsZSxuKXtyZXR1cm4gdGhpcy5zZXQoMSwwLDAsdCwwLDEsMCxlLDAsMCwxLG4sMCwwLDAsMSksdGhpc31tYWtlUm90YXRpb25YKHQpe2NvbnN0IGU9TWF0aC5jb3ModCksbj1NYXRoLnNpbih0KTtyZXR1cm4gdGhpcy5zZXQoMSwwLDAsMCwwLGUsLW4sMCwwLG4sZSwwLDAsMCwwLDEpLHRoaXN9bWFrZVJvdGF0aW9uWSh0KXtjb25zdCBlPU1hdGguY29zKHQpLG49TWF0aC5zaW4odCk7cmV0dXJuIHRoaXMuc2V0KGUsMCxuLDAsMCwxLDAsMCwtbiwwLGUsMCwwLDAsMCwxKSx0aGlzfW1ha2VSb3RhdGlvbloodCl7Y29uc3QgZT1NYXRoLmNvcyh0KSxuPU1hdGguc2luKHQpO3JldHVybiB0aGlzLnNldChlLC1uLDAsMCxuLGUsMCwwLDAsMCwxLDAsMCwwLDAsMSksdGhpc31tYWtlUm90YXRpb25BeGlzKHQsZSl7Y29uc3Qgbj1NYXRoLmNvcyhlKSxpPU1hdGguc2luKGUpLHI9MS1uLG89dC54LGE9dC55LHM9dC56LGw9cipvLGM9ciphO3JldHVybiB0aGlzLnNldChsKm8rbixsKmEtaSpzLGwqcytpKmEsMCxsKmEraSpzLGMqYStuLGMqcy1pKm8sMCxsKnMtaSphLGMqcytpKm8scipzKnMrbiwwLDAsMCwwLDEpLHRoaXN9bWFrZVNjYWxlKHQsZSxuKXtyZXR1cm4gdGhpcy5zZXQodCwwLDAsMCwwLGUsMCwwLDAsMCxuLDAsMCwwLDAsMSksdGhpc31tYWtlU2hlYXIodCxlLG4pe3JldHVybiB0aGlzLnNldCgxLGUsbiwwLHQsMSxuLDAsdCxlLDEsMCwwLDAsMCwxKSx0aGlzfWNvbXBvc2UodCxlLG4pe2NvbnN0IGk9dGhpcy5lbGVtZW50cyxyPWUuX3gsbz1lLl95LGE9ZS5feixzPWUuX3csbD1yK3IsYz1vK28sdT1hK2EsaD1yKmwsZD1yKmMscD1yKnUsZj1vKmMsbT1vKnUsZz1hKnUsXz1zKmwseT1zKmMsdj1zKnUsYj1uLngseD1uLnksdz1uLno7cmV0dXJuIGlbMF09KDEtKGYrZykpKmIsaVsxXT0oZCt2KSpiLGlbMl09KHAteSkqYixpWzNdPTAsaVs0XT0oZC12KSp4LGlbNV09KDEtKGgrZykpKngsaVs2XT0obStfKSp4LGlbN109MCxpWzhdPShwK3kpKncsaVs5XT0obS1fKSp3LGlbMTBdPSgxLShoK2YpKSp3LGlbMTFdPTAsaVsxMl09dC54LGlbMTNdPXQueSxpWzE0XT10LnosaVsxNV09MSx0aGlzfWRlY29tcG9zZSh0LGUsbil7Y29uc3QgaT10aGlzLmVsZW1lbnRzO2xldCByPVlIdC5zZXQoaVswXSxpWzFdLGlbMl0pLmxlbmd0aCgpO2NvbnN0IG89WUh0LnNldChpWzRdLGlbNV0saVs2XSkubGVuZ3RoKCksYT1ZSHQuc2V0KGlbOF0saVs5XSxpWzEwXSkubGVuZ3RoKCk7dGhpcy5kZXRlcm1pbmFudCgpPDAmJihyPS1yKSx0Lng9aVsxMl0sdC55PWlbMTNdLHQuej1pWzE0XSxYSHQuY29weSh0aGlzKTtjb25zdCBzPTEvcixsPTEvbyxjPTEvYTtyZXR1cm4gWEh0LmVsZW1lbnRzWzBdKj1zLFhIdC5lbGVtZW50c1sxXSo9cyxYSHQuZWxlbWVudHNbMl0qPXMsWEh0LmVsZW1lbnRzWzRdKj1sLFhIdC5lbGVtZW50c1s1XSo9bCxYSHQuZWxlbWVudHNbNl0qPWwsWEh0LmVsZW1lbnRzWzhdKj1jLFhIdC5lbGVtZW50c1s5XSo9YyxYSHQuZWxlbWVudHNbMTBdKj1jLGUuc2V0RnJvbVJvdGF0aW9uTWF0cml4KFhIdCksbi54PXIsbi55PW8sbi56PWEsdGhpc31tYWtlUGVyc3BlY3RpdmUodCxlLG4saSxyLG8pe3ZvaWQgMD09PW8mJmNvbnNvbGUud2FybigiVEhSRUUuTWF0cml4NDogLm1ha2VQZXJzcGVjdGl2ZSgpIGhhcyBiZWVuIHJlZGVmaW5lZCBhbmQgaGFzIGEgbmV3IHNpZ25hdHVyZS4gUGxlYXNlIGNoZWNrIHRoZSBkb2NzLiIpO2NvbnN0IGE9dGhpcy5lbGVtZW50cyxzPTIqci8obi1pKSxsPShlK3QpLyhlLXQpLGM9KG4raSkvKG4taSksdT0tKG8rcikvKG8tciksaD0tMipvKnIvKG8tcik7cmV0dXJuIGFbMF09MipyLyhlLXQpLGFbNF09MCxhWzhdPWwsYVsxMl09MCxhWzFdPTAsYVs1XT1zLGFbOV09YyxhWzEzXT0wLGFbMl09MCxhWzZdPTAsYVsxMF09dSxhWzE0XT1oLGFbM109MCxhWzddPTAsYVsxMV09LTEsYVsxNV09MCx0aGlzfW1ha2VPcnRob2dyYXBoaWModCxlLG4saSxyLG8pe2NvbnN0IGE9dGhpcy5lbGVtZW50cyxzPTEvKGUtdCksbD0xLyhuLWkpLGM9MS8oby1yKSx1PShlK3QpKnMsaD0obitpKSpsLGQ9KG8rcikqYztyZXR1cm4gYVswXT0yKnMsYVs0XT0wLGFbOF09MCxhWzEyXT0tdSxhWzFdPTAsYVs1XT0yKmwsYVs5XT0wLGFbMTNdPS1oLGFbMl09MCxhWzZdPTAsYVsxMF09LTIqYyxhWzE0XT0tZCxhWzNdPTAsYVs3XT0wLGFbMTFdPTAsYVsxNV09MSx0aGlzfWVxdWFscyh0KXtjb25zdCBlPXRoaXMuZWxlbWVudHMsbj10LmVsZW1lbnRzO2ZvcihsZXQgdD0wO3Q8MTY7dCsrKWlmKGVbdF0hPT1uW3RdKXJldHVybiExO3JldHVybiEwfWZyb21BcnJheSh0LGU9MCl7Zm9yKGxldCBuPTA7bjwxNjtuKyspdGhpcy5lbGVtZW50c1tuXT10W24rZV07cmV0dXJuIHRoaXN9dG9BcnJheSh0PVtdLGU9MCl7Y29uc3Qgbj10aGlzLmVsZW1lbnRzO3JldHVybiB0W2VdPW5bMF0sdFtlKzFdPW5bMV0sdFtlKzJdPW5bMl0sdFtlKzNdPW5bM10sdFtlKzRdPW5bNF0sdFtlKzVdPW5bNV0sdFtlKzZdPW5bNl0sdFtlKzddPW5bN10sdFtlKzhdPW5bOF0sdFtlKzldPW5bOV0sdFtlKzEwXT1uWzEwXSx0W2UrMTFdPW5bMTFdLHRbZSsxMl09blsxMl0sdFtlKzEzXT1uWzEzXSx0W2UrMTRdPW5bMTRdLHRbZSsxNV09blsxNV0sdH19Y29uc3QgWUh0PW5ldyB5SHQsWEh0PW5ldyBxSHQsJEh0PW5ldyB5SHQoMCwwLDApLEtIdD1uZXcgeUh0KDEsMSwxKSxaSHQ9bmV3IHlIdCxKSHQ9bmV3IHlIdCxRSHQ9bmV3IHlIdDtjbGFzcyB0RnR7Y29uc3RydWN0b3IodD0wLGU9MCxuPTAsaT10RnQuRGVmYXVsdE9yZGVyKXtPYmplY3QuZGVmaW5lUHJvcGVydHkodGhpcywiaXNFdWxlciIse3ZhbHVlOiEwfSksdGhpcy5feD10LHRoaXMuX3k9ZSx0aGlzLl96PW4sdGhpcy5fb3JkZXI9aX1nZXQgeCgpe3JldHVybiB0aGlzLl94fXNldCB4KHQpe3RoaXMuX3g9dCx0aGlzLl9vbkNoYW5nZUNhbGxiYWNrKCl9Z2V0IHkoKXtyZXR1cm4gdGhpcy5feX1zZXQgeSh0KXt0aGlzLl95PXQsdGhpcy5fb25DaGFuZ2VDYWxsYmFjaygpfWdldCB6KCl7cmV0dXJuIHRoaXMuX3p9c2V0IHoodCl7dGhpcy5fej10LHRoaXMuX29uQ2hhbmdlQ2FsbGJhY2soKX1nZXQgb3JkZXIoKXtyZXR1cm4gdGhpcy5fb3JkZXJ9c2V0IG9yZGVyKHQpe3RoaXMuX29yZGVyPXQsdGhpcy5fb25DaGFuZ2VDYWxsYmFjaygpfXNldCh0LGUsbixpKXtyZXR1cm4gdGhpcy5feD10LHRoaXMuX3k9ZSx0aGlzLl96PW4sdGhpcy5fb3JkZXI9aXx8dGhpcy5fb3JkZXIsdGhpcy5fb25DaGFuZ2VDYWxsYmFjaygpLHRoaXN9Y2xvbmUoKXtyZXR1cm4gbmV3IHRoaXMuY29uc3RydWN0b3IodGhpcy5feCx0aGlzLl95LHRoaXMuX3osdGhpcy5fb3JkZXIpfWNvcHkodCl7cmV0dXJuIHRoaXMuX3g9dC5feCx0aGlzLl95PXQuX3ksdGhpcy5fej10Ll96LHRoaXMuX29yZGVyPXQuX29yZGVyLHRoaXMuX29uQ2hhbmdlQ2FsbGJhY2soKSx0aGlzfXNldEZyb21Sb3RhdGlvbk1hdHJpeCh0LGUsbil7Y29uc3QgaT1zSHQuY2xhbXAscj10LmVsZW1lbnRzLG89clswXSxhPXJbNF0scz1yWzhdLGw9clsxXSxjPXJbNV0sdT1yWzldLGg9clsyXSxkPXJbNl0scD1yWzEwXTtzd2l0Y2goZT1lfHx0aGlzLl9vcmRlcil7Y2FzZSJYWVoiOnRoaXMuX3k9TWF0aC5hc2luKGkocywtMSwxKSksTWF0aC5hYnMocyk8Ljk5OTk5OTk/KHRoaXMuX3g9TWF0aC5hdGFuMigtdSxwKSx0aGlzLl96PU1hdGguYXRhbjIoLWEsbykpOih0aGlzLl94PU1hdGguYXRhbjIoZCxjKSx0aGlzLl96PTApO2JyZWFrO2Nhc2UiWVhaIjp0aGlzLl94PU1hdGguYXNpbigtaSh1LC0xLDEpKSxNYXRoLmFicyh1KTwuOTk5OTk5OT8odGhpcy5feT1NYXRoLmF0YW4yKHMscCksdGhpcy5fej1NYXRoLmF0YW4yKGwsYykpOih0aGlzLl95PU1hdGguYXRhbjIoLWgsbyksdGhpcy5fej0wKTticmVhaztjYXNlIlpYWSI6dGhpcy5feD1NYXRoLmFzaW4oaShkLC0xLDEpKSxNYXRoLmFicyhkKTwuOTk5OTk5OT8odGhpcy5feT1NYXRoLmF0YW4yKC1oLHApLHRoaXMuX3o9TWF0aC5hdGFuMigtYSxjKSk6KHRoaXMuX3k9MCx0aGlzLl96PU1hdGguYXRhbjIobCxvKSk7YnJlYWs7Y2FzZSJaWVgiOnRoaXMuX3k9TWF0aC5hc2luKC1pKGgsLTEsMSkpLE1hdGguYWJzKGgpPC45OTk5OTk5Pyh0aGlzLl94PU1hdGguYXRhbjIoZCxwKSx0aGlzLl96PU1hdGguYXRhbjIobCxvKSk6KHRoaXMuX3g9MCx0aGlzLl96PU1hdGguYXRhbjIoLWEsYykpO2JyZWFrO2Nhc2UiWVpYIjp0aGlzLl96PU1hdGguYXNpbihpKGwsLTEsMSkpLE1hdGguYWJzKGwpPC45OTk5OTk5Pyh0aGlzLl94PU1hdGguYXRhbjIoLXUsYyksdGhpcy5feT1NYXRoLmF0YW4yKC1oLG8pKToodGhpcy5feD0wLHRoaXMuX3k9TWF0aC5hdGFuMihzLHApKTticmVhaztjYXNlIlhaWSI6dGhpcy5fej1NYXRoLmFzaW4oLWkoYSwtMSwxKSksTWF0aC5hYnMoYSk8Ljk5OTk5OTk/KHRoaXMuX3g9TWF0aC5hdGFuMihkLGMpLHRoaXMuX3k9TWF0aC5hdGFuMihzLG8pKToodGhpcy5feD1NYXRoLmF0YW4yKC11LHApLHRoaXMuX3k9MCk7YnJlYWs7ZGVmYXVsdDpjb25zb2xlLndhcm4oIlRIUkVFLkV1bGVyOiAuc2V0RnJvbVJvdGF0aW9uTWF0cml4KCkgZW5jb3VudGVyZWQgYW4gdW5rbm93biBvcmRlcjogIitlKX1yZXR1cm4gdGhpcy5fb3JkZXI9ZSwhMSE9PW4mJnRoaXMuX29uQ2hhbmdlQ2FsbGJhY2soKSx0aGlzfXNldEZyb21RdWF0ZXJuaW9uKHQsZSxuKXtyZXR1cm4gZUZ0Lm1ha2VSb3RhdGlvbkZyb21RdWF0ZXJuaW9uKHQpLHRoaXMuc2V0RnJvbVJvdGF0aW9uTWF0cml4KGVGdCxlLG4pfXNldEZyb21WZWN0b3IzKHQsZSl7cmV0dXJuIHRoaXMuc2V0KHQueCx0LnksdC56LGV8fHRoaXMuX29yZGVyKX1yZW9yZGVyKHQpe3JldHVybiBuRnQuc2V0RnJvbUV1bGVyKHRoaXMpLHRoaXMuc2V0RnJvbVF1YXRlcm5pb24obkZ0LHQpfWVxdWFscyh0KXtyZXR1cm4gdC5feD09PXRoaXMuX3gmJnQuX3k9PT10aGlzLl95JiZ0Ll96PT09dGhpcy5feiYmdC5fb3JkZXI9PT10aGlzLl9vcmRlcn1mcm9tQXJyYXkodCl7cmV0dXJuIHRoaXMuX3g9dFswXSx0aGlzLl95PXRbMV0sdGhpcy5fej10WzJdLHZvaWQgMCE9PXRbM10mJih0aGlzLl9vcmRlcj10WzNdKSx0aGlzLl9vbkNoYW5nZUNhbGxiYWNrKCksdGhpc310b0FycmF5KHQ9W10sZT0wKXtyZXR1cm4gdFtlXT10aGlzLl94LHRbZSsxXT10aGlzLl95LHRbZSsyXT10aGlzLl96LHRbZSszXT10aGlzLl9vcmRlcix0fXRvVmVjdG9yMyh0KXtyZXR1cm4gdD90LnNldCh0aGlzLl94LHRoaXMuX3ksdGhpcy5feik6bmV3IHlIdCh0aGlzLl94LHRoaXMuX3ksdGhpcy5feil9X29uQ2hhbmdlKHQpe3JldHVybiB0aGlzLl9vbkNoYW5nZUNhbGxiYWNrPXQsdGhpc31fb25DaGFuZ2VDYWxsYmFjaygpe319dEZ0LkRlZmF1bHRPcmRlcj0iWFlaIix0RnQuUm90YXRpb25PcmRlcnM9WyJYWVoiLCJZWlgiLCJaWFkiLCJYWlkiLCJZWFoiLCJaWVgiXTtjb25zdCBlRnQ9bmV3IHFIdCxuRnQ9bmV3IF9IdDtjbGFzcyBpRnR7Y29uc3RydWN0b3IoKXt0aGlzLm1hc2s9MX1zZXQodCl7dGhpcy5tYXNrPTE8PHR8MH1lbmFibGUodCl7dGhpcy5tYXNrfD0xPDx0fDB9ZW5hYmxlQWxsKCl7dGhpcy5tYXNrPS0xfXRvZ2dsZSh0KXt0aGlzLm1hc2tePTE8PHR8MH1kaXNhYmxlKHQpe3RoaXMubWFzayY9figxPDx0fDApfWRpc2FibGVBbGwoKXt0aGlzLm1hc2s9MH10ZXN0KHQpe3JldHVybiAwIT0odGhpcy5tYXNrJnQubWFzayl9fWxldCByRnQ9MDtjb25zdCBvRnQ9bmV3IHlIdCxhRnQ9bmV3IF9IdCxzRnQ9bmV3IHFIdCxsRnQ9bmV3IHlIdCxjRnQ9bmV3IHlIdCx1RnQ9bmV3IHlIdCxoRnQ9bmV3IF9IdCxkRnQ9bmV3IHlIdCgxLDAsMCkscEZ0PW5ldyB5SHQoMCwxLDApLGZGdD1uZXcgeUh0KDAsMCwxKSxtRnQ9e3R5cGU6ImFkZGVkIn0sZ0Z0PXt0eXBlOiJyZW1vdmVkIn07ZnVuY3Rpb24gX0Z0KCl7T2JqZWN0LmRlZmluZVByb3BlcnR5KHRoaXMsImlkIix7dmFsdWU6ckZ0Kyt9KSx0aGlzLnV1aWQ9c0h0LmdlbmVyYXRlVVVJRCgpLHRoaXMubmFtZT0iIix0aGlzLnR5cGU9Ik9iamVjdDNEIix0aGlzLnBhcmVudD1udWxsLHRoaXMuY2hpbGRyZW49W10sdGhpcy51cD1fRnQuRGVmYXVsdFVwLmNsb25lKCk7Y29uc3QgdD1uZXcgeUh0LGU9bmV3IHRGdCxuPW5ldyBfSHQsaT1uZXcgeUh0KDEsMSwxKTtlLl9vbkNoYW5nZSgoZnVuY3Rpb24gcigpe24uc2V0RnJvbUV1bGVyKGUsITEpfSkpLG4uX29uQ2hhbmdlKChmdW5jdGlvbiBvKCl7ZS5zZXRGcm9tUXVhdGVybmlvbihuLHZvaWQgMCwhMSl9KSksT2JqZWN0LmRlZmluZVByb3BlcnRpZXModGhpcyx7cG9zaXRpb246e2NvbmZpZ3VyYWJsZTohMCxlbnVtZXJhYmxlOiEwLHZhbHVlOnR9LHJvdGF0aW9uOntjb25maWd1cmFibGU6ITAsZW51bWVyYWJsZTohMCx2YWx1ZTplfSxxdWF0ZXJuaW9uOntjb25maWd1cmFibGU6ITAsZW51bWVyYWJsZTohMCx2YWx1ZTpufSxzY2FsZTp7Y29uZmlndXJhYmxlOiEwLGVudW1lcmFibGU6ITAsdmFsdWU6aX0sbW9kZWxWaWV3TWF0cml4Ont2YWx1ZTpuZXcgcUh0fSxub3JtYWxNYXRyaXg6e3ZhbHVlOm5ldyBjSHR9fSksdGhpcy5tYXRyaXg9bmV3IHFIdCx0aGlzLm1hdHJpeFdvcmxkPW5ldyBxSHQsdGhpcy5tYXRyaXhBdXRvVXBkYXRlPV9GdC5EZWZhdWx0TWF0cml4QXV0b1VwZGF0ZSx0aGlzLm1hdHJpeFdvcmxkTmVlZHNVcGRhdGU9ITEsdGhpcy5sYXllcnM9bmV3IGlGdCx0aGlzLnZpc2libGU9ITAsdGhpcy5jYXN0U2hhZG93PSExLHRoaXMucmVjZWl2ZVNoYWRvdz0hMSx0aGlzLmZydXN0dW1DdWxsZWQ9ITAsdGhpcy5yZW5kZXJPcmRlcj0wLHRoaXMuYW5pbWF0aW9ucz1bXSx0aGlzLnVzZXJEYXRhPXt9fV9GdC5EZWZhdWx0VXA9bmV3IHlIdCgwLDEsMCksX0Z0LkRlZmF1bHRNYXRyaXhBdXRvVXBkYXRlPSEwLF9GdC5wcm90b3R5cGU9T2JqZWN0LmFzc2lnbihPYmplY3QuY3JlYXRlKHJIdC5wcm90b3R5cGUpLHtjb25zdHJ1Y3RvcjpfRnQsaXNPYmplY3QzRDohMCxvbkJlZm9yZVJlbmRlcjpmdW5jdGlvbigpe30sb25BZnRlclJlbmRlcjpmdW5jdGlvbigpe30sYXBwbHlNYXRyaXg0OmZ1bmN0aW9uKHQpe3RoaXMubWF0cml4QXV0b1VwZGF0ZSYmdGhpcy51cGRhdGVNYXRyaXgoKSx0aGlzLm1hdHJpeC5wcmVtdWx0aXBseSh0KSx0aGlzLm1hdHJpeC5kZWNvbXBvc2UodGhpcy5wb3NpdGlvbix0aGlzLnF1YXRlcm5pb24sdGhpcy5zY2FsZSl9LGFwcGx5UXVhdGVybmlvbjpmdW5jdGlvbih0KXtyZXR1cm4gdGhpcy5xdWF0ZXJuaW9uLnByZW11bHRpcGx5KHQpLHRoaXN9LHNldFJvdGF0aW9uRnJvbUF4aXNBbmdsZTpmdW5jdGlvbih0LGUpe3RoaXMucXVhdGVybmlvbi5zZXRGcm9tQXhpc0FuZ2xlKHQsZSl9LHNldFJvdGF0aW9uRnJvbUV1bGVyOmZ1bmN0aW9uKHQpe3RoaXMucXVhdGVybmlvbi5zZXRGcm9tRXVsZXIodCwhMCl9LHNldFJvdGF0aW9uRnJvbU1hdHJpeDpmdW5jdGlvbih0KXt0aGlzLnF1YXRlcm5pb24uc2V0RnJvbVJvdGF0aW9uTWF0cml4KHQpfSxzZXRSb3RhdGlvbkZyb21RdWF0ZXJuaW9uOmZ1bmN0aW9uKHQpe3RoaXMucXVhdGVybmlvbi5jb3B5KHQpfSxyb3RhdGVPbkF4aXM6ZnVuY3Rpb24odCxlKXtyZXR1cm4gYUZ0LnNldEZyb21BeGlzQW5nbGUodCxlKSx0aGlzLnF1YXRlcm5pb24ubXVsdGlwbHkoYUZ0KSx0aGlzfSxyb3RhdGVPbldvcmxkQXhpczpmdW5jdGlvbih0LGUpe3JldHVybiBhRnQuc2V0RnJvbUF4aXNBbmdsZSh0LGUpLHRoaXMucXVhdGVybmlvbi5wcmVtdWx0aXBseShhRnQpLHRoaXN9LHJvdGF0ZVg6ZnVuY3Rpb24odCl7cmV0dXJuIHRoaXMucm90YXRlT25BeGlzKGRGdCx0KX0scm90YXRlWTpmdW5jdGlvbih0KXtyZXR1cm4gdGhpcy5yb3RhdGVPbkF4aXMocEZ0LHQpfSxyb3RhdGVaOmZ1bmN0aW9uKHQpe3JldHVybiB0aGlzLnJvdGF0ZU9uQXhpcyhmRnQsdCl9LHRyYW5zbGF0ZU9uQXhpczpmdW5jdGlvbih0LGUpe3JldHVybiBvRnQuY29weSh0KS5hcHBseVF1YXRlcm5pb24odGhpcy5xdWF0ZXJuaW9uKSx0aGlzLnBvc2l0aW9uLmFkZChvRnQubXVsdGlwbHlTY2FsYXIoZSkpLHRoaXN9LHRyYW5zbGF0ZVg6ZnVuY3Rpb24odCl7cmV0dXJuIHRoaXMudHJhbnNsYXRlT25BeGlzKGRGdCx0KX0sdHJhbnNsYXRlWTpmdW5jdGlvbih0KXtyZXR1cm4gdGhpcy50cmFuc2xhdGVPbkF4aXMocEZ0LHQpfSx0cmFuc2xhdGVaOmZ1bmN0aW9uKHQpe3JldHVybiB0aGlzLnRyYW5zbGF0ZU9uQXhpcyhmRnQsdCl9LGxvY2FsVG9Xb3JsZDpmdW5jdGlvbih0KXtyZXR1cm4gdC5hcHBseU1hdHJpeDQodGhpcy5tYXRyaXhXb3JsZCl9LHdvcmxkVG9Mb2NhbDpmdW5jdGlvbih0KXtyZXR1cm4gdC5hcHBseU1hdHJpeDQoc0Z0LmNvcHkodGhpcy5tYXRyaXhXb3JsZCkuaW52ZXJ0KCkpfSxsb29rQXQ6ZnVuY3Rpb24odCxlLG4pe3QuaXNWZWN0b3IzP2xGdC5jb3B5KHQpOmxGdC5zZXQodCxlLG4pO2NvbnN0IGk9dGhpcy5wYXJlbnQ7dGhpcy51cGRhdGVXb3JsZE1hdHJpeCghMCwhMSksY0Z0LnNldEZyb21NYXRyaXhQb3NpdGlvbih0aGlzLm1hdHJpeFdvcmxkKSx0aGlzLmlzQ2FtZXJhfHx0aGlzLmlzTGlnaHQ/c0Z0Lmxvb2tBdChjRnQsbEZ0LHRoaXMudXApOnNGdC5sb29rQXQobEZ0LGNGdCx0aGlzLnVwKSx0aGlzLnF1YXRlcm5pb24uc2V0RnJvbVJvdGF0aW9uTWF0cml4KHNGdCksaSYmKHNGdC5leHRyYWN0Um90YXRpb24oaS5tYXRyaXhXb3JsZCksYUZ0LnNldEZyb21Sb3RhdGlvbk1hdHJpeChzRnQpLHRoaXMucXVhdGVybmlvbi5wcmVtdWx0aXBseShhRnQuaW52ZXJ0KCkpKX0sYWRkOmZ1bmN0aW9uKHQpe2lmKGFyZ3VtZW50cy5sZW5ndGg+MSl7Zm9yKGxldCB0PTA7dDxhcmd1bWVudHMubGVuZ3RoO3QrKyl0aGlzLmFkZChhcmd1bWVudHNbdF0pO3JldHVybiB0aGlzfXJldHVybiB0PT09dGhpcz8oY29uc29sZS5lcnJvcigiVEhSRUUuT2JqZWN0M0QuYWRkOiBvYmplY3QgY2FuJ3QgYmUgYWRkZWQgYXMgYSBjaGlsZCBvZiBpdHNlbGYuIix0KSx0aGlzKToodCYmdC5pc09iamVjdDNEPyhudWxsIT09dC5wYXJlbnQmJnQucGFyZW50LnJlbW92ZSh0KSx0LnBhcmVudD10aGlzLHRoaXMuY2hpbGRyZW4ucHVzaCh0KSx0LmRpc3BhdGNoRXZlbnQobUZ0KSk6Y29uc29sZS5lcnJvcigiVEhSRUUuT2JqZWN0M0QuYWRkOiBvYmplY3Qgbm90IGFuIGluc3RhbmNlIG9mIFRIUkVFLk9iamVjdDNELiIsdCksdGhpcyl9LHJlbW92ZTpmdW5jdGlvbih0KXtpZihhcmd1bWVudHMubGVuZ3RoPjEpe2ZvcihsZXQgdD0wO3Q8YXJndW1lbnRzLmxlbmd0aDt0KyspdGhpcy5yZW1vdmUoYXJndW1lbnRzW3RdKTtyZXR1cm4gdGhpc31jb25zdCBlPXRoaXMuY2hpbGRyZW4uaW5kZXhPZih0KTtyZXR1cm4tMSE9PWUmJih0LnBhcmVudD1udWxsLHRoaXMuY2hpbGRyZW4uc3BsaWNlKGUsMSksdC5kaXNwYXRjaEV2ZW50KGdGdCkpLHRoaXN9LGNsZWFyOmZ1bmN0aW9uKCl7Zm9yKGxldCB0PTA7dDx0aGlzLmNoaWxkcmVuLmxlbmd0aDt0Kyspe2NvbnN0IGU9dGhpcy5jaGlsZHJlblt0XTtlLnBhcmVudD1udWxsLGUuZGlzcGF0Y2hFdmVudChnRnQpfXJldHVybiB0aGlzLmNoaWxkcmVuLmxlbmd0aD0wLHRoaXN9LGF0dGFjaDpmdW5jdGlvbih0KXtyZXR1cm4gdGhpcy51cGRhdGVXb3JsZE1hdHJpeCghMCwhMSksc0Z0LmNvcHkodGhpcy5tYXRyaXhXb3JsZCkuaW52ZXJ0KCksbnVsbCE9PXQucGFyZW50JiYodC5wYXJlbnQudXBkYXRlV29ybGRNYXRyaXgoITAsITEpLHNGdC5tdWx0aXBseSh0LnBhcmVudC5tYXRyaXhXb3JsZCkpLHQuYXBwbHlNYXRyaXg0KHNGdCksdC51cGRhdGVXb3JsZE1hdHJpeCghMSwhMSksdGhpcy5hZGQodCksdGhpc30sZ2V0T2JqZWN0QnlJZDpmdW5jdGlvbih0KXtyZXR1cm4gdGhpcy5nZXRPYmplY3RCeVByb3BlcnR5KCJpZCIsdCl9LGdldE9iamVjdEJ5TmFtZTpmdW5jdGlvbih0KXtyZXR1cm4gdGhpcy5nZXRPYmplY3RCeVByb3BlcnR5KCJuYW1lIix0KX0sZ2V0T2JqZWN0QnlQcm9wZXJ0eTpmdW5jdGlvbih0LGUpe2lmKHRoaXNbdF09PT1lKXJldHVybiB0aGlzO2ZvcihsZXQgbj0wLGk9dGhpcy5jaGlsZHJlbi5sZW5ndGg7bjxpO24rKyl7Y29uc3QgaT10aGlzLmNoaWxkcmVuW25dLmdldE9iamVjdEJ5UHJvcGVydHkodCxlKTtpZih2b2lkIDAhPT1pKXJldHVybiBpfX0sZ2V0V29ybGRQb3NpdGlvbjpmdW5jdGlvbih0KXtyZXR1cm4gdm9pZCAwPT09dCYmKGNvbnNvbGUud2FybigiVEhSRUUuT2JqZWN0M0Q6IC5nZXRXb3JsZFBvc2l0aW9uKCkgdGFyZ2V0IGlzIG5vdyByZXF1aXJlZCIpLHQ9bmV3IHlIdCksdGhpcy51cGRhdGVXb3JsZE1hdHJpeCghMCwhMSksdC5zZXRGcm9tTWF0cml4UG9zaXRpb24odGhpcy5tYXRyaXhXb3JsZCl9LGdldFdvcmxkUXVhdGVybmlvbjpmdW5jdGlvbih0KXtyZXR1cm4gdm9pZCAwPT09dCYmKGNvbnNvbGUud2FybigiVEhSRUUuT2JqZWN0M0Q6IC5nZXRXb3JsZFF1YXRlcm5pb24oKSB0YXJnZXQgaXMgbm93IHJlcXVpcmVkIiksdD1uZXcgX0h0KSx0aGlzLnVwZGF0ZVdvcmxkTWF0cml4KCEwLCExKSx0aGlzLm1hdHJpeFdvcmxkLmRlY29tcG9zZShjRnQsdCx1RnQpLHR9LGdldFdvcmxkU2NhbGU6ZnVuY3Rpb24odCl7cmV0dXJuIHZvaWQgMD09PXQmJihjb25zb2xlLndhcm4oIlRIUkVFLk9iamVjdDNEOiAuZ2V0V29ybGRTY2FsZSgpIHRhcmdldCBpcyBub3cgcmVxdWlyZWQiKSx0PW5ldyB5SHQpLHRoaXMudXBkYXRlV29ybGRNYXRyaXgoITAsITEpLHRoaXMubWF0cml4V29ybGQuZGVjb21wb3NlKGNGdCxoRnQsdCksdH0sZ2V0V29ybGREaXJlY3Rpb246ZnVuY3Rpb24odCl7dm9pZCAwPT09dCYmKGNvbnNvbGUud2FybigiVEhSRUUuT2JqZWN0M0Q6IC5nZXRXb3JsZERpcmVjdGlvbigpIHRhcmdldCBpcyBub3cgcmVxdWlyZWQiKSx0PW5ldyB5SHQpLHRoaXMudXBkYXRlV29ybGRNYXRyaXgoITAsITEpO2NvbnN0IGU9dGhpcy5tYXRyaXhXb3JsZC5lbGVtZW50cztyZXR1cm4gdC5zZXQoZVs4XSxlWzldLGVbMTBdKS5ub3JtYWxpemUoKX0scmF5Y2FzdDpmdW5jdGlvbigpe30sdHJhdmVyc2U6ZnVuY3Rpb24odCl7dCh0aGlzKTtjb25zdCBlPXRoaXMuY2hpbGRyZW47Zm9yKGxldCBuPTAsaT1lLmxlbmd0aDtuPGk7bisrKWVbbl0udHJhdmVyc2UodCl9LHRyYXZlcnNlVmlzaWJsZTpmdW5jdGlvbih0KXtpZighMT09PXRoaXMudmlzaWJsZSlyZXR1cm47dCh0aGlzKTtjb25zdCBlPXRoaXMuY2hpbGRyZW47Zm9yKGxldCBuPTAsaT1lLmxlbmd0aDtuPGk7bisrKWVbbl0udHJhdmVyc2VWaXNpYmxlKHQpfSx0cmF2ZXJzZUFuY2VzdG9yczpmdW5jdGlvbih0KXtjb25zdCBlPXRoaXMucGFyZW50O251bGwhPT1lJiYodChlKSxlLnRyYXZlcnNlQW5jZXN0b3JzKHQpKX0sdXBkYXRlTWF0cml4OmZ1bmN0aW9uKCl7dGhpcy5tYXRyaXguY29tcG9zZSh0aGlzLnBvc2l0aW9uLHRoaXMucXVhdGVybmlvbix0aGlzLnNjYWxlKSx0aGlzLm1hdHJpeFdvcmxkTmVlZHNVcGRhdGU9ITB9LHVwZGF0ZU1hdHJpeFdvcmxkOmZ1bmN0aW9uKHQpe3RoaXMubWF0cml4QXV0b1VwZGF0ZSYmdGhpcy51cGRhdGVNYXRyaXgoKSwodGhpcy5tYXRyaXhXb3JsZE5lZWRzVXBkYXRlfHx0KSYmKG51bGw9PT10aGlzLnBhcmVudD90aGlzLm1hdHJpeFdvcmxkLmNvcHkodGhpcy5tYXRyaXgpOnRoaXMubWF0cml4V29ybGQubXVsdGlwbHlNYXRyaWNlcyh0aGlzLnBhcmVudC5tYXRyaXhXb3JsZCx0aGlzLm1hdHJpeCksdGhpcy5tYXRyaXhXb3JsZE5lZWRzVXBkYXRlPSExLHQ9ITApO2NvbnN0IGU9dGhpcy5jaGlsZHJlbjtmb3IobGV0IG49MCxpPWUubGVuZ3RoO248aTtuKyspZVtuXS51cGRhdGVNYXRyaXhXb3JsZCh0KX0sdXBkYXRlV29ybGRNYXRyaXg6ZnVuY3Rpb24odCxlKXtjb25zdCBuPXRoaXMucGFyZW50O2lmKCEwPT09dCYmbnVsbCE9PW4mJm4udXBkYXRlV29ybGRNYXRyaXgoITAsITEpLHRoaXMubWF0cml4QXV0b1VwZGF0ZSYmdGhpcy51cGRhdGVNYXRyaXgoKSxudWxsPT09dGhpcy5wYXJlbnQ/dGhpcy5tYXRyaXhXb3JsZC5jb3B5KHRoaXMubWF0cml4KTp0aGlzLm1hdHJpeFdvcmxkLm11bHRpcGx5TWF0cmljZXModGhpcy5wYXJlbnQubWF0cml4V29ybGQsdGhpcy5tYXRyaXgpLCEwPT09ZSl7Y29uc3QgdD10aGlzLmNoaWxkcmVuO2ZvcihsZXQgZT0wLG49dC5sZW5ndGg7ZTxuO2UrKyl0W2VdLnVwZGF0ZVdvcmxkTWF0cml4KCExLCEwKX19LHRvSlNPTjpmdW5jdGlvbih0KXtjb25zdCBlPXZvaWQgMD09PXR8fCJzdHJpbmciPT10eXBlb2YgdCxuPXt9O2UmJih0PXtnZW9tZXRyaWVzOnt9LG1hdGVyaWFsczp7fSx0ZXh0dXJlczp7fSxpbWFnZXM6e30sc2hhcGVzOnt9LHNrZWxldG9uczp7fSxhbmltYXRpb25zOnt9fSxuLm1ldGFkYXRhPXt2ZXJzaW9uOjQuNSx0eXBlOiJPYmplY3QiLGdlbmVyYXRvcjoiT2JqZWN0M0QudG9KU09OIn0pO2NvbnN0IGk9e307ZnVuY3Rpb24gcihlLG4pe3JldHVybiB2b2lkIDA9PT1lW24udXVpZF0mJihlW24udXVpZF09bi50b0pTT04odCkpLG4udXVpZH1pZihpLnV1aWQ9dGhpcy51dWlkLGkudHlwZT10aGlzLnR5cGUsIiIhPT10aGlzLm5hbWUmJihpLm5hbWU9dGhpcy5uYW1lKSwhMD09PXRoaXMuY2FzdFNoYWRvdyYmKGkuY2FzdFNoYWRvdz0hMCksITA9PT10aGlzLnJlY2VpdmVTaGFkb3cmJihpLnJlY2VpdmVTaGFkb3c9ITApLCExPT09dGhpcy52aXNpYmxlJiYoaS52aXNpYmxlPSExKSwhMT09PXRoaXMuZnJ1c3R1bUN1bGxlZCYmKGkuZnJ1c3R1bUN1bGxlZD0hMSksMCE9PXRoaXMucmVuZGVyT3JkZXImJihpLnJlbmRlck9yZGVyPXRoaXMucmVuZGVyT3JkZXIpLCJ7fSIhPT1KU09OLnN0cmluZ2lmeSh0aGlzLnVzZXJEYXRhKSYmKGkudXNlckRhdGE9dGhpcy51c2VyRGF0YSksaS5sYXllcnM9dGhpcy5sYXllcnMubWFzayxpLm1hdHJpeD10aGlzLm1hdHJpeC50b0FycmF5KCksITE9PT10aGlzLm1hdHJpeEF1dG9VcGRhdGUmJihpLm1hdHJpeEF1dG9VcGRhdGU9ITEpLHRoaXMuaXNJbnN0YW5jZWRNZXNoJiYoaS50eXBlPSJJbnN0YW5jZWRNZXNoIixpLmNvdW50PXRoaXMuY291bnQsaS5pbnN0YW5jZU1hdHJpeD10aGlzLmluc3RhbmNlTWF0cml4LnRvSlNPTigpKSx0aGlzLmlzTWVzaHx8dGhpcy5pc0xpbmV8fHRoaXMuaXNQb2ludHMpe2kuZ2VvbWV0cnk9cih0Lmdlb21ldHJpZXMsdGhpcy5nZW9tZXRyeSk7Y29uc3QgZT10aGlzLmdlb21ldHJ5LnBhcmFtZXRlcnM7aWYodm9pZCAwIT09ZSYmdm9pZCAwIT09ZS5zaGFwZXMpe2NvbnN0IG49ZS5zaGFwZXM7aWYoQXJyYXkuaXNBcnJheShuKSlmb3IobGV0IGU9MCxpPW4ubGVuZ3RoO2U8aTtlKyspcih0LnNoYXBlcyxuW2VdKTtlbHNlIHIodC5zaGFwZXMsbil9fWlmKHRoaXMuaXNTa2lubmVkTWVzaCYmKGkuYmluZE1vZGU9dGhpcy5iaW5kTW9kZSxpLmJpbmRNYXRyaXg9dGhpcy5iaW5kTWF0cml4LnRvQXJyYXkoKSx2b2lkIDAhPT10aGlzLnNrZWxldG9uJiYocih0LnNrZWxldG9ucyx0aGlzLnNrZWxldG9uKSxpLnNrZWxldG9uPXRoaXMuc2tlbGV0b24udXVpZCkpLHZvaWQgMCE9PXRoaXMubWF0ZXJpYWwpaWYoQXJyYXkuaXNBcnJheSh0aGlzLm1hdGVyaWFsKSl7Y29uc3QgZT1bXTtmb3IobGV0IG49MCxpPXRoaXMubWF0ZXJpYWwubGVuZ3RoO248aTtuKyspZS5wdXNoKHIodC5tYXRlcmlhbHMsdGhpcy5tYXRlcmlhbFtuXSkpO2kubWF0ZXJpYWw9ZX1lbHNlIGkubWF0ZXJpYWw9cih0Lm1hdGVyaWFscyx0aGlzLm1hdGVyaWFsKTtpZih0aGlzLmNoaWxkcmVuLmxlbmd0aD4wKXtpLmNoaWxkcmVuPVtdO2ZvcihsZXQgZT0wO2U8dGhpcy5jaGlsZHJlbi5sZW5ndGg7ZSsrKWkuY2hpbGRyZW4ucHVzaCh0aGlzLmNoaWxkcmVuW2VdLnRvSlNPTih0KS5vYmplY3QpfWlmKHRoaXMuYW5pbWF0aW9ucy5sZW5ndGg+MCl7aS5hbmltYXRpb25zPVtdO2ZvcihsZXQgZT0wO2U8dGhpcy5hbmltYXRpb25zLmxlbmd0aDtlKyspaS5hbmltYXRpb25zLnB1c2gocih0LmFuaW1hdGlvbnMsdGhpcy5hbmltYXRpb25zW2VdKSl9aWYoZSl7Y29uc3QgZT1vKHQuZ2VvbWV0cmllcyksaT1vKHQubWF0ZXJpYWxzKSxyPW8odC50ZXh0dXJlcyksYT1vKHQuaW1hZ2VzKSxzPW8odC5zaGFwZXMpLGw9byh0LnNrZWxldG9ucyksYz1vKHQuYW5pbWF0aW9ucyk7ZS5sZW5ndGg+MCYmKG4uZ2VvbWV0cmllcz1lKSxpLmxlbmd0aD4wJiYobi5tYXRlcmlhbHM9aSksci5sZW5ndGg+MCYmKG4udGV4dHVyZXM9ciksYS5sZW5ndGg+MCYmKG4uaW1hZ2VzPWEpLHMubGVuZ3RoPjAmJihuLnNoYXBlcz1zKSxsLmxlbmd0aD4wJiYobi5za2VsZXRvbnM9bCksYy5sZW5ndGg+MCYmKG4uYW5pbWF0aW9ucz1jKX1yZXR1cm4gbi5vYmplY3Q9aSxuO2Z1bmN0aW9uIG8odCl7Y29uc3QgZT1bXTtmb3IoY29uc3QgbiBpbiB0KXtjb25zdCBpPXRbbl07ZGVsZXRlIGkubWV0YWRhdGEsZS5wdXNoKGkpfXJldHVybiBlfX0sY2xvbmU6ZnVuY3Rpb24odCl7cmV0dXJuKG5ldyB0aGlzLmNvbnN0cnVjdG9yKS5jb3B5KHRoaXMsdCl9LGNvcHk6ZnVuY3Rpb24odCxlPSEwKXtpZih0aGlzLm5hbWU9dC5uYW1lLHRoaXMudXAuY29weSh0LnVwKSx0aGlzLnBvc2l0aW9uLmNvcHkodC5wb3NpdGlvbiksdGhpcy5yb3RhdGlvbi5vcmRlcj10LnJvdGF0aW9uLm9yZGVyLHRoaXMucXVhdGVybmlvbi5jb3B5KHQucXVhdGVybmlvbiksdGhpcy5zY2FsZS5jb3B5KHQuc2NhbGUpLHRoaXMubWF0cml4LmNvcHkodC5tYXRyaXgpLHRoaXMubWF0cml4V29ybGQuY29weSh0Lm1hdHJpeFdvcmxkKSx0aGlzLm1hdHJpeEF1dG9VcGRhdGU9dC5tYXRyaXhBdXRvVXBkYXRlLHRoaXMubWF0cml4V29ybGROZWVkc1VwZGF0ZT10Lm1hdHJpeFdvcmxkTmVlZHNVcGRhdGUsdGhpcy5sYXllcnMubWFzaz10LmxheWVycy5tYXNrLHRoaXMudmlzaWJsZT10LnZpc2libGUsdGhpcy5jYXN0U2hhZG93PXQuY2FzdFNoYWRvdyx0aGlzLnJlY2VpdmVTaGFkb3c9dC5yZWNlaXZlU2hhZG93LHRoaXMuZnJ1c3R1bUN1bGxlZD10LmZydXN0dW1DdWxsZWQsdGhpcy5yZW5kZXJPcmRlcj10LnJlbmRlck9yZGVyLHRoaXMudXNlckRhdGE9SlNPTi5wYXJzZShKU09OLnN0cmluZ2lmeSh0LnVzZXJEYXRhKSksITA9PT1lKWZvcihsZXQgZT0wO2U8dC5jaGlsZHJlbi5sZW5ndGg7ZSsrKXRoaXMuYWRkKHQuY2hpbGRyZW5bZV0uY2xvbmUoKSk7cmV0dXJuIHRoaXN9fSk7Y29uc3QgeUZ0PW5ldyB5SHQsdkZ0PW5ldyB5SHQsYkZ0PW5ldyBjSHQ7Y2xhc3MgeEZ0e2NvbnN0cnVjdG9yKHQsZSl7T2JqZWN0LmRlZmluZVByb3BlcnR5KHRoaXMsImlzUGxhbmUiLHt2YWx1ZTohMH0pLHRoaXMubm9ybWFsPXZvaWQgMCE9PXQ/dDpuZXcgeUh0KDEsMCwwKSx0aGlzLmNvbnN0YW50PXZvaWQgMCE9PWU/ZTowfXNldCh0LGUpe3JldHVybiB0aGlzLm5vcm1hbC5jb3B5KHQpLHRoaXMuY29uc3RhbnQ9ZSx0aGlzfXNldENvbXBvbmVudHModCxlLG4saSl7cmV0dXJuIHRoaXMubm9ybWFsLnNldCh0LGUsbiksdGhpcy5jb25zdGFudD1pLHRoaXN9c2V0RnJvbU5vcm1hbEFuZENvcGxhbmFyUG9pbnQodCxlKXtyZXR1cm4gdGhpcy5ub3JtYWwuY29weSh0KSx0aGlzLmNvbnN0YW50PS1lLmRvdCh0aGlzLm5vcm1hbCksdGhpc31zZXRGcm9tQ29wbGFuYXJQb2ludHModCxlLG4pe2NvbnN0IGk9eUZ0LnN1YlZlY3RvcnMobixlKS5jcm9zcyh2RnQuc3ViVmVjdG9ycyh0LGUpKS5ub3JtYWxpemUoKTtyZXR1cm4gdGhpcy5zZXRGcm9tTm9ybWFsQW5kQ29wbGFuYXJQb2ludChpLHQpLHRoaXN9Y2xvbmUoKXtyZXR1cm4obmV3IHRoaXMuY29uc3RydWN0b3IpLmNvcHkodGhpcyl9Y29weSh0KXtyZXR1cm4gdGhpcy5ub3JtYWwuY29weSh0Lm5vcm1hbCksdGhpcy5jb25zdGFudD10LmNvbnN0YW50LHRoaXN9bm9ybWFsaXplKCl7Y29uc3QgdD0xL3RoaXMubm9ybWFsLmxlbmd0aCgpO3JldHVybiB0aGlzLm5vcm1hbC5tdWx0aXBseVNjYWxhcih0KSx0aGlzLmNvbnN0YW50Kj10LHRoaXN9bmVnYXRlKCl7cmV0dXJuIHRoaXMuY29uc3RhbnQqPS0xLHRoaXMubm9ybWFsLm5lZ2F0ZSgpLHRoaXN9ZGlzdGFuY2VUb1BvaW50KHQpe3JldHVybiB0aGlzLm5vcm1hbC5kb3QodCkrdGhpcy5jb25zdGFudH1kaXN0YW5jZVRvU3BoZXJlKHQpe3JldHVybiB0aGlzLmRpc3RhbmNlVG9Qb2ludCh0LmNlbnRlciktdC5yYWRpdXN9cHJvamVjdFBvaW50KHQsZSl7cmV0dXJuIHZvaWQgMD09PWUmJihjb25zb2xlLndhcm4oIlRIUkVFLlBsYW5lOiAucHJvamVjdFBvaW50KCkgdGFyZ2V0IGlzIG5vdyByZXF1aXJlZCIpLGU9bmV3IHlIdCksZS5jb3B5KHRoaXMubm9ybWFsKS5tdWx0aXBseVNjYWxhcigtdGhpcy5kaXN0YW5jZVRvUG9pbnQodCkpLmFkZCh0KX1pbnRlcnNlY3RMaW5lKHQsZSl7dm9pZCAwPT09ZSYmKGNvbnNvbGUud2FybigiVEhSRUUuUGxhbmU6IC5pbnRlcnNlY3RMaW5lKCkgdGFyZ2V0IGlzIG5vdyByZXF1aXJlZCIpLGU9bmV3IHlIdCk7Y29uc3Qgbj10LmRlbHRhKHlGdCksaT10aGlzLm5vcm1hbC5kb3Qobik7aWYoMD09PWkpcmV0dXJuIDA9PT10aGlzLmRpc3RhbmNlVG9Qb2ludCh0LnN0YXJ0KT9lLmNvcHkodC5zdGFydCk6dm9pZCAwO2NvbnN0IHI9LSh0LnN0YXJ0LmRvdCh0aGlzLm5vcm1hbCkrdGhpcy5jb25zdGFudCkvaTtyZXR1cm4gcjwwfHxyPjE/dm9pZCAwOmUuY29weShuKS5tdWx0aXBseVNjYWxhcihyKS5hZGQodC5zdGFydCl9aW50ZXJzZWN0c0xpbmUodCl7Y29uc3QgZT10aGlzLmRpc3RhbmNlVG9Qb2ludCh0LnN0YXJ0KSxuPXRoaXMuZGlzdGFuY2VUb1BvaW50KHQuZW5kKTtyZXR1cm4gZTwwJiZuPjB8fG48MCYmZT4wfWludGVyc2VjdHNCb3godCl7cmV0dXJuIHQuaW50ZXJzZWN0c1BsYW5lKHRoaXMpfWludGVyc2VjdHNTcGhlcmUodCl7cmV0dXJuIHQuaW50ZXJzZWN0c1BsYW5lKHRoaXMpfWNvcGxhbmFyUG9pbnQodCl7cmV0dXJuIHZvaWQgMD09PXQmJihjb25zb2xlLndhcm4oIlRIUkVFLlBsYW5lOiAuY29wbGFuYXJQb2ludCgpIHRhcmdldCBpcyBub3cgcmVxdWlyZWQiKSx0PW5ldyB5SHQpLHQuY29weSh0aGlzLm5vcm1hbCkubXVsdGlwbHlTY2FsYXIoLXRoaXMuY29uc3RhbnQpfWFwcGx5TWF0cml4NCh0LGUpe2NvbnN0IG49ZXx8YkZ0LmdldE5vcm1hbE1hdHJpeCh0KSxpPXRoaXMuY29wbGFuYXJQb2ludCh5RnQpLmFwcGx5TWF0cml4NCh0KSxyPXRoaXMubm9ybWFsLmFwcGx5TWF0cml4MyhuKS5ub3JtYWxpemUoKTtyZXR1cm4gdGhpcy5jb25zdGFudD0taS5kb3QociksdGhpc310cmFuc2xhdGUodCl7cmV0dXJuIHRoaXMuY29uc3RhbnQtPXQuZG90KHRoaXMubm9ybWFsKSx0aGlzfWVxdWFscyh0KXtyZXR1cm4gdC5ub3JtYWwuZXF1YWxzKHRoaXMubm9ybWFsKSYmdC5jb25zdGFudD09PXRoaXMuY29uc3RhbnR9fWNvbnN0IHdGdD1uZXcgeUh0LFNGdD1uZXcgeUh0LE1GdD1uZXcgeUh0LEVGdD1uZXcgeUh0LFRGdD1uZXcgeUh0LEFGdD1uZXcgeUh0LENGdD1uZXcgeUh0LGtGdD1uZXcgeUh0LExGdD1uZXcgeUh0LFBGdD1uZXcgeUh0O2NsYXNzIElGdHtjb25zdHJ1Y3Rvcih0LGUsbil7dGhpcy5hPXZvaWQgMCE9PXQ/dDpuZXcgeUh0LHRoaXMuYj12b2lkIDAhPT1lP2U6bmV3IHlIdCx0aGlzLmM9dm9pZCAwIT09bj9uOm5ldyB5SHR9c3RhdGljIGdldE5vcm1hbCh0LGUsbixpKXt2b2lkIDA9PT1pJiYoY29uc29sZS53YXJuKCJUSFJFRS5UcmlhbmdsZTogLmdldE5vcm1hbCgpIHRhcmdldCBpcyBub3cgcmVxdWlyZWQiKSxpPW5ldyB5SHQpLGkuc3ViVmVjdG9ycyhuLGUpLHdGdC5zdWJWZWN0b3JzKHQsZSksaS5jcm9zcyh3RnQpO2NvbnN0IHI9aS5sZW5ndGhTcSgpO3JldHVybiByPjA/aS5tdWx0aXBseVNjYWxhcigxL01hdGguc3FydChyKSk6aS5zZXQoMCwwLDApfXN0YXRpYyBnZXRCYXJ5Y29vcmQodCxlLG4saSxyKXt3RnQuc3ViVmVjdG9ycyhpLGUpLFNGdC5zdWJWZWN0b3JzKG4sZSksTUZ0LnN1YlZlY3RvcnModCxlKTtjb25zdCBvPXdGdC5kb3Qod0Z0KSxhPXdGdC5kb3QoU0Z0KSxzPXdGdC5kb3QoTUZ0KSxsPVNGdC5kb3QoU0Z0KSxjPVNGdC5kb3QoTUZ0KSx1PW8qbC1hKmE7aWYodm9pZCAwPT09ciYmKGNvbnNvbGUud2FybigiVEhSRUUuVHJpYW5nbGU6IC5nZXRCYXJ5Y29vcmQoKSB0YXJnZXQgaXMgbm93IHJlcXVpcmVkIikscj1uZXcgeUh0KSwwPT09dSlyZXR1cm4gci5zZXQoLTIsLTEsLTEpO2NvbnN0IGg9MS91LGQ9KGwqcy1hKmMpKmgscD0obypjLWEqcykqaDtyZXR1cm4gci5zZXQoMS1kLXAscCxkKX1zdGF0aWMgY29udGFpbnNQb2ludCh0LGUsbixpKXtyZXR1cm4gdGhpcy5nZXRCYXJ5Y29vcmQodCxlLG4saSxFRnQpLEVGdC54Pj0wJiZFRnQueT49MCYmRUZ0LngrRUZ0Lnk8PTF9c3RhdGljIGdldFVWKHQsZSxuLGkscixvLGEscyl7cmV0dXJuIHRoaXMuZ2V0QmFyeWNvb3JkKHQsZSxuLGksRUZ0KSxzLnNldCgwLDApLHMuYWRkU2NhbGVkVmVjdG9yKHIsRUZ0LngpLHMuYWRkU2NhbGVkVmVjdG9yKG8sRUZ0LnkpLHMuYWRkU2NhbGVkVmVjdG9yKGEsRUZ0LnopLHN9c3RhdGljIGlzRnJvbnRGYWNpbmcodCxlLG4saSl7cmV0dXJuIHdGdC5zdWJWZWN0b3JzKG4sZSksU0Z0LnN1YlZlY3RvcnModCxlKSx3RnQuY3Jvc3MoU0Z0KS5kb3QoaSk8MH1zZXQodCxlLG4pe3JldHVybiB0aGlzLmEuY29weSh0KSx0aGlzLmIuY29weShlKSx0aGlzLmMuY29weShuKSx0aGlzfXNldEZyb21Qb2ludHNBbmRJbmRpY2VzKHQsZSxuLGkpe3JldHVybiB0aGlzLmEuY29weSh0W2VdKSx0aGlzLmIuY29weSh0W25dKSx0aGlzLmMuY29weSh0W2ldKSx0aGlzfWNsb25lKCl7cmV0dXJuKG5ldyB0aGlzLmNvbnN0cnVjdG9yKS5jb3B5KHRoaXMpfWNvcHkodCl7cmV0dXJuIHRoaXMuYS5jb3B5KHQuYSksdGhpcy5iLmNvcHkodC5iKSx0aGlzLmMuY29weSh0LmMpLHRoaXN9Z2V0QXJlYSgpe3JldHVybiB3RnQuc3ViVmVjdG9ycyh0aGlzLmMsdGhpcy5iKSxTRnQuc3ViVmVjdG9ycyh0aGlzLmEsdGhpcy5iKSwuNSp3RnQuY3Jvc3MoU0Z0KS5sZW5ndGgoKX1nZXRNaWRwb2ludCh0KXtyZXR1cm4gdm9pZCAwPT09dCYmKGNvbnNvbGUud2FybigiVEhSRUUuVHJpYW5nbGU6IC5nZXRNaWRwb2ludCgpIHRhcmdldCBpcyBub3cgcmVxdWlyZWQiKSx0PW5ldyB5SHQpLHQuYWRkVmVjdG9ycyh0aGlzLmEsdGhpcy5iKS5hZGQodGhpcy5jKS5tdWx0aXBseVNjYWxhcigxLzMpfWdldE5vcm1hbCh0KXtyZXR1cm4gSUZ0LmdldE5vcm1hbCh0aGlzLmEsdGhpcy5iLHRoaXMuYyx0KX1nZXRQbGFuZSh0KXtyZXR1cm4gdm9pZCAwPT09dCYmKGNvbnNvbGUud2FybigiVEhSRUUuVHJpYW5nbGU6IC5nZXRQbGFuZSgpIHRhcmdldCBpcyBub3cgcmVxdWlyZWQiKSx0PW5ldyB4RnQpLHQuc2V0RnJvbUNvcGxhbmFyUG9pbnRzKHRoaXMuYSx0aGlzLmIsdGhpcy5jKX1nZXRCYXJ5Y29vcmQodCxlKXtyZXR1cm4gSUZ0LmdldEJhcnljb29yZCh0LHRoaXMuYSx0aGlzLmIsdGhpcy5jLGUpfWdldFVWKHQsZSxuLGkscil7cmV0dXJuIElGdC5nZXRVVih0LHRoaXMuYSx0aGlzLmIsdGhpcy5jLGUsbixpLHIpfWNvbnRhaW5zUG9pbnQodCl7cmV0dXJuIElGdC5jb250YWluc1BvaW50KHQsdGhpcy5hLHRoaXMuYix0aGlzLmMpfWlzRnJvbnRGYWNpbmcodCl7cmV0dXJuIElGdC5pc0Zyb250RmFjaW5nKHRoaXMuYSx0aGlzLmIsdGhpcy5jLHQpfWludGVyc2VjdHNCb3godCl7cmV0dXJuIHQuaW50ZXJzZWN0c1RyaWFuZ2xlKHRoaXMpfWNsb3Nlc3RQb2ludFRvUG9pbnQodCxlKXt2b2lkIDA9PT1lJiYoY29uc29sZS53YXJuKCJUSFJFRS5UcmlhbmdsZTogLmNsb3Nlc3RQb2ludFRvUG9pbnQoKSB0YXJnZXQgaXMgbm93IHJlcXVpcmVkIiksZT1uZXcgeUh0KTtjb25zdCBuPXRoaXMuYSxpPXRoaXMuYixyPXRoaXMuYztsZXQgbyxhO1RGdC5zdWJWZWN0b3JzKGksbiksQUZ0LnN1YlZlY3RvcnMocixuKSxrRnQuc3ViVmVjdG9ycyh0LG4pO2NvbnN0IHM9VEZ0LmRvdChrRnQpLGw9QUZ0LmRvdChrRnQpO2lmKHM8PTAmJmw8PTApcmV0dXJuIGUuY29weShuKTtMRnQuc3ViVmVjdG9ycyh0LGkpO2NvbnN0IGM9VEZ0LmRvdChMRnQpLHU9QUZ0LmRvdChMRnQpO2lmKGM+PTAmJnU8PWMpcmV0dXJuIGUuY29weShpKTtjb25zdCBoPXMqdS1jKmw7aWYoaDw9MCYmcz49MCYmYzw9MClyZXR1cm4gbz1zLyhzLWMpLGUuY29weShuKS5hZGRTY2FsZWRWZWN0b3IoVEZ0LG8pO1BGdC5zdWJWZWN0b3JzKHQscik7Y29uc3QgZD1URnQuZG90KFBGdCkscD1BRnQuZG90KFBGdCk7aWYocD49MCYmZDw9cClyZXR1cm4gZS5jb3B5KHIpO2NvbnN0IGY9ZCpsLXMqcDtpZihmPD0wJiZsPj0wJiZwPD0wKXJldHVybiBhPWwvKGwtcCksZS5jb3B5KG4pLmFkZFNjYWxlZFZlY3RvcihBRnQsYSk7Y29uc3QgbT1jKnAtZCp1O2lmKG08PTAmJnUtYz49MCYmZC1wPj0wKXJldHVybiBDRnQuc3ViVmVjdG9ycyhyLGkpLGE9KHUtYykvKHUtYysoZC1wKSksZS5jb3B5KGkpLmFkZFNjYWxlZFZlY3RvcihDRnQsYSk7Y29uc3QgZz0xLyhtK2YraCk7cmV0dXJuIG89ZipnLGE9aCpnLGUuY29weShuKS5hZGRTY2FsZWRWZWN0b3IoVEZ0LG8pLmFkZFNjYWxlZFZlY3RvcihBRnQsYSl9ZXF1YWxzKHQpe3JldHVybiB0LmEuZXF1YWxzKHRoaXMuYSkmJnQuYi5lcXVhbHModGhpcy5iKSYmdC5jLmVxdWFscyh0aGlzLmMpfX1jb25zdCBORnQ9e2FsaWNlYmx1ZToxNTc5MjM4MyxhbnRpcXVld2hpdGU6MTY0NDQzNzUsYXF1YTo2NTUzNSxhcXVhbWFyaW5lOjgzODg1NjQsYXp1cmU6MTU3OTQxNzUsYmVpZ2U6MTYxMTkyNjAsYmlzcXVlOjE2NzcwMjQ0LGJsYWNrOjAsYmxhbmNoZWRhbG1vbmQ6MTY3NzIwNDUsYmx1ZToyNTUsYmx1ZXZpb2xldDo5MDU1MjAyLGJyb3duOjEwODI0MjM0LGJ1cmx5d29vZDoxNDU5NjIzMSxjYWRldGJsdWU6NjI2NjUyOCxjaGFydHJldXNlOjgzODgzNTIsY2hvY29sYXRlOjEzNzg5NDcwLGNvcmFsOjE2NzQ0MjcyLGNvcm5mbG93ZXJibHVlOjY1OTE5ODEsY29ybnNpbGs6MTY3NzUzODgsY3JpbXNvbjoxNDQyMzEwMCxjeWFuOjY1NTM1LGRhcmtibHVlOjEzOSxkYXJrY3lhbjozNTcyMyxkYXJrZ29sZGVucm9kOjEyMDkyOTM5LGRhcmtncmF5OjExMTE5MDE3LGRhcmtncmVlbjoyNTYwMCxkYXJrZ3JleToxMTExOTAxNyxkYXJra2hha2k6MTI0MzMyNTksZGFya21hZ2VudGE6OTEwOTY0MyxkYXJrb2xpdmVncmVlbjo1NTk3OTk5LGRhcmtvcmFuZ2U6MTY3NDc1MjAsZGFya29yY2hpZDoxMDA0MDAxMixkYXJrcmVkOjkxMDk1MDQsZGFya3NhbG1vbjoxNTMwODQxMCxkYXJrc2VhZ3JlZW46OTQxOTkxOSxkYXJrc2xhdGVibHVlOjQ3MzQzNDcsZGFya3NsYXRlZ3JheTozMTAwNDk1LGRhcmtzbGF0ZWdyZXk6MzEwMDQ5NSxkYXJrdHVycXVvaXNlOjUyOTQ1LGRhcmt2aW9sZXQ6OTY5OTUzOSxkZWVwcGluazoxNjcxNjk0NyxkZWVwc2t5Ymx1ZTo0OTE1MSxkaW1ncmF5OjY5MDgyNjUsZGltZ3JleTo2OTA4MjY1LGRvZGdlcmJsdWU6MjAwMzE5OSxmaXJlYnJpY2s6MTE2NzQxNDYsZmxvcmFsd2hpdGU6MTY3NzU5MjAsZm9yZXN0Z3JlZW46MjI2Mzg0MixmdWNoc2lhOjE2NzExOTM1LGdhaW5zYm9ybzoxNDQ3NDQ2MCxnaG9zdHdoaXRlOjE2MzE2NjcxLGdvbGQ6MTY3NjY3MjAsZ29sZGVucm9kOjE0MzI5MTIwLGdyYXk6ODQyMTUwNCxncmVlbjozMjc2OCxncmVlbnllbGxvdzoxMTQwMzA1NSxncmV5Ojg0MjE1MDQsaG9uZXlkZXc6MTU3OTQxNjAsaG90cGluazoxNjczODc0MCxpbmRpYW5yZWQ6MTM0NTg1MjQsaW5kaWdvOjQ5MTUzMzAsaXZvcnk6MTY3NzcyMDAsa2hha2k6MTU3ODc2NjAsbGF2ZW5kZXI6MTUxMzI0MTAsbGF2ZW5kZXJibHVzaDoxNjc3MzM2NSxsYXduZ3JlZW46ODE5MDk3NixsZW1vbmNoaWZmb246MTY3NzU4ODUsbGlnaHRibHVlOjExMzkzMjU0LGxpZ2h0Y29yYWw6MTU3NjE1MzYsbGlnaHRjeWFuOjE0NzQ1NTk5LGxpZ2h0Z29sZGVucm9keWVsbG93OjE2NDQ4MjEwLGxpZ2h0Z3JheToxMzg4MjMyMyxsaWdodGdyZWVuOjk0OTgyNTYsbGlnaHRncmV5OjEzODgyMzIzLGxpZ2h0cGluazoxNjc1ODQ2NSxsaWdodHNhbG1vbjoxNjc1Mjc2MixsaWdodHNlYWdyZWVuOjIxNDI4OTAsbGlnaHRza3libHVlOjg5MDAzNDYsbGlnaHRzbGF0ZWdyYXk6NzgzMzc1MyxsaWdodHNsYXRlZ3JleTo3ODMzNzUzLGxpZ2h0c3RlZWxibHVlOjExNTg0NzM0LGxpZ2h0eWVsbG93OjE2Nzc3MTg0LGxpbWU6NjUyODAsbGltZWdyZWVuOjMzMjkzMzAsbGluZW46MTY0NDU2NzAsbWFnZW50YToxNjcxMTkzNSxtYXJvb246ODM4ODYwOCxtZWRpdW1hcXVhbWFyaW5lOjY3MzczMjIsbWVkaXVtYmx1ZToyMDUsbWVkaXVtb3JjaGlkOjEyMjExNjY3LG1lZGl1bXB1cnBsZTo5NjYyNjgzLG1lZGl1bXNlYWdyZWVuOjM5NzgwOTcsbWVkaXVtc2xhdGVibHVlOjgwODc3OTAsbWVkaXVtc3ByaW5nZ3JlZW46NjQxNTQsbWVkaXVtdHVycXVvaXNlOjQ3NzIzMDAsbWVkaXVtdmlvbGV0cmVkOjEzMDQ3MTczLG1pZG5pZ2h0Ymx1ZToxNjQ0OTEyLG1pbnRjcmVhbToxNjEyMTg1MCxtaXN0eXJvc2U6MTY3NzAyNzMsbW9jY2FzaW46MTY3NzAyMjksbmF2YWpvd2hpdGU6MTY3Njg2ODUsbmF2eToxMjgsb2xkbGFjZToxNjY0MzU1OCxvbGl2ZTo4NDIxMzc2LG9saXZlZHJhYjo3MDQ4NzM5LG9yYW5nZToxNjc1MzkyMCxvcmFuZ2VyZWQ6MTY3MjkzNDQsb3JjaGlkOjE0MzE1NzM0LHBhbGVnb2xkZW5yb2Q6MTU2NTcxMzAscGFsZWdyZWVuOjEwMDI1ODgwLHBhbGV0dXJxdW9pc2U6MTE1Mjk5NjYscGFsZXZpb2xldHJlZDoxNDM4MTIwMyxwYXBheWF3aGlwOjE2NzczMDc3LHBlYWNocHVmZjoxNjc2NzY3MyxwZXJ1OjEzNDY4OTkxLHBpbms6MTY3NjEwMzUscGx1bToxNDUyNDYzNyxwb3dkZXJibHVlOjExNTkxOTEwLHB1cnBsZTo4Mzg4NzM2LHJlYmVjY2FwdXJwbGU6NjY5Nzg4MSxyZWQ6MTY3MTE2ODAscm9zeWJyb3duOjEyMzU3NTE5LHJveWFsYmx1ZTo0Mjg2OTQ1LHNhZGRsZWJyb3duOjkxMjcxODcsc2FsbW9uOjE2NDE2ODgyLHNhbmR5YnJvd246MTYwMzI4NjQsc2VhZ3JlZW46MzA1MDMyNyxzZWFzaGVsbDoxNjc3NDYzOCxzaWVubmE6MTA1MDY3OTcsc2lsdmVyOjEyNjMyMjU2LHNreWJsdWU6ODkwMDMzMSxzbGF0ZWJsdWU6Njk3MDA2MSxzbGF0ZWdyYXk6NzM3Mjk0NCxzbGF0ZWdyZXk6NzM3Mjk0NCxzbm93OjE2Nzc1OTMwLHNwcmluZ2dyZWVuOjY1NDA3LHN0ZWVsYmx1ZTo0NjIwOTgwLHRhbjoxMzgwODc4MCx0ZWFsOjMyODk2LHRoaXN0bGU6MTQyMDQ4ODgsdG9tYXRvOjE2NzM3MDk1LHR1cnF1b2lzZTo0MjUxODU2LHZpb2xldDoxNTYzMTA4Nix3aGVhdDoxNjExMzMzMSx3aGl0ZToxNjc3NzIxNSx3aGl0ZXNtb2tlOjE2MTE5Mjg1LHllbGxvdzoxNjc3Njk2MCx5ZWxsb3dncmVlbjoxMDE0NTA3NH0sT0Z0PXtoOjAsczowLGw6MH0sUkZ0PXtoOjAsczowLGw6MH07ZnVuY3Rpb24gekZ0KHQsZSxuKXtyZXR1cm4gbjwwJiYobis9MSksbj4xJiYobi09MSksbjwxLzY/dCs2KihlLXQpKm46bjwuNT9lOm48Mi8zP3QrNiooZS10KSooMi8zLW4pOnR9ZnVuY3Rpb24gREZ0KHQpe3JldHVybiB0PC4wNDA0NT8uMDc3Mzk5MzgwOCp0Ok1hdGgucG93KC45NDc4NjcyOTg2KnQrLjA1MjEzMjcwMTQsMi40KX1mdW5jdGlvbiBCRnQodCl7cmV0dXJuIHQ8LjAwMzEzMDg/MTIuOTIqdDoxLjA1NSpNYXRoLnBvdyh0LC40MTY2NiktLjA1NX1jbGFzcyBIRnR7Y29uc3RydWN0b3IodCxlLG4pe3JldHVybiBPYmplY3QuZGVmaW5lUHJvcGVydHkodGhpcywiaXNDb2xvciIse3ZhbHVlOiEwfSksdm9pZCAwPT09ZSYmdm9pZCAwPT09bj90aGlzLnNldCh0KTp0aGlzLnNldFJHQih0LGUsbil9c2V0KHQpe3JldHVybiB0JiZ0LmlzQ29sb3I/dGhpcy5jb3B5KHQpOiJudW1iZXIiPT10eXBlb2YgdD90aGlzLnNldEhleCh0KToic3RyaW5nIj09dHlwZW9mIHQmJnRoaXMuc2V0U3R5bGUodCksdGhpc31zZXRTY2FsYXIodCl7cmV0dXJuIHRoaXMucj10LHRoaXMuZz10LHRoaXMuYj10LHRoaXN9c2V0SGV4KHQpe3JldHVybiB0PU1hdGguZmxvb3IodCksdGhpcy5yPSh0Pj4xNiYyNTUpLzI1NSx0aGlzLmc9KHQ+PjgmMjU1KS8yNTUsdGhpcy5iPSgyNTUmdCkvMjU1LHRoaXN9c2V0UkdCKHQsZSxuKXtyZXR1cm4gdGhpcy5yPXQsdGhpcy5nPWUsdGhpcy5iPW4sdGhpc31zZXRIU0wodCxlLG4pe2lmKHQ9c0h0LmV1Y2xpZGVhbk1vZHVsbyh0LDEpLGU9c0h0LmNsYW1wKGUsMCwxKSxuPXNIdC5jbGFtcChuLDAsMSksMD09PWUpdGhpcy5yPXRoaXMuZz10aGlzLmI9bjtlbHNle2NvbnN0IGk9bjw9LjU/biooMStlKTpuK2UtbiplLHI9MipuLWk7dGhpcy5yPXpGdChyLGksdCsxLzMpLHRoaXMuZz16RnQocixpLHQpLHRoaXMuYj16RnQocixpLHQtMS8zKX1yZXR1cm4gdGhpc31zZXRTdHlsZSh0KXtmdW5jdGlvbiBlKGUpe3ZvaWQgMCE9PWUmJnBhcnNlRmxvYXQoZSk8MSYmY29uc29sZS53YXJuKCJUSFJFRS5Db2xvcjogQWxwaGEgY29tcG9uZW50IG9mICIrdCsiIHdpbGwgYmUgaWdub3JlZC4iKX1sZXQgbjtpZihuPS9eKCg/OnJnYnxoc2wpYT8pXCgoW15cKV0qKVwpLy5leGVjKHQpKXtsZXQgdDtjb25zdCBpPW5bMl07c3dpdGNoKG5bMV0pe2Nhc2UicmdiIjpjYXNlInJnYmEiOmlmKHQ9L15ccyooXGQrKVxzKixccyooXGQrKVxzKixccyooXGQrKVxzKig/OixccyooXGQqXC4/XGQrKVxzKik/JC8uZXhlYyhpKSlyZXR1cm4gdGhpcy5yPU1hdGgubWluKDI1NSxwYXJzZUludCh0WzFdLDEwKSkvMjU1LHRoaXMuZz1NYXRoLm1pbigyNTUscGFyc2VJbnQodFsyXSwxMCkpLzI1NSx0aGlzLmI9TWF0aC5taW4oMjU1LHBhcnNlSW50KHRbM10sMTApKS8yNTUsZSh0WzRdKSx0aGlzO2lmKHQ9L15ccyooXGQrKVwlXHMqLFxzKihcZCspXCVccyosXHMqKFxkKylcJVxzKig/OixccyooXGQqXC4/XGQrKVxzKik/JC8uZXhlYyhpKSlyZXR1cm4gdGhpcy5yPU1hdGgubWluKDEwMCxwYXJzZUludCh0WzFdLDEwKSkvMTAwLHRoaXMuZz1NYXRoLm1pbigxMDAscGFyc2VJbnQodFsyXSwxMCkpLzEwMCx0aGlzLmI9TWF0aC5taW4oMTAwLHBhcnNlSW50KHRbM10sMTApKS8xMDAsZSh0WzRdKSx0aGlzO2JyZWFrO2Nhc2UiaHNsIjpjYXNlImhzbGEiOmlmKHQ9L15ccyooXGQqXC4/XGQrKVxzKixccyooXGQrKVwlXHMqLFxzKihcZCspXCVccyooPzosXHMqKFxkKlwuP1xkKylccyopPyQvLmV4ZWMoaSkpe2NvbnN0IG49cGFyc2VGbG9hdCh0WzFdKS8zNjAsaT1wYXJzZUludCh0WzJdLDEwKS8xMDAscj1wYXJzZUludCh0WzNdLDEwKS8xMDA7cmV0dXJuIGUodFs0XSksdGhpcy5zZXRIU0wobixpLHIpfX19ZWxzZSBpZihuPS9eXCMoW0EtRmEtZlxkXSspJC8uZXhlYyh0KSl7Y29uc3QgdD1uWzFdLGU9dC5sZW5ndGg7aWYoMz09PWUpcmV0dXJuIHRoaXMucj1wYXJzZUludCh0LmNoYXJBdCgwKSt0LmNoYXJBdCgwKSwxNikvMjU1LHRoaXMuZz1wYXJzZUludCh0LmNoYXJBdCgxKSt0LmNoYXJBdCgxKSwxNikvMjU1LHRoaXMuYj1wYXJzZUludCh0LmNoYXJBdCgyKSt0LmNoYXJBdCgyKSwxNikvMjU1LHRoaXM7aWYoNj09PWUpcmV0dXJuIHRoaXMucj1wYXJzZUludCh0LmNoYXJBdCgwKSt0LmNoYXJBdCgxKSwxNikvMjU1LHRoaXMuZz1wYXJzZUludCh0LmNoYXJBdCgyKSt0LmNoYXJBdCgzKSwxNikvMjU1LHRoaXMuYj1wYXJzZUludCh0LmNoYXJBdCg0KSt0LmNoYXJBdCg1KSwxNikvMjU1LHRoaXN9cmV0dXJuIHQmJnQubGVuZ3RoPjA/dGhpcy5zZXRDb2xvck5hbWUodCk6dGhpc31zZXRDb2xvck5hbWUodCl7Y29uc3QgZT1ORnRbdF07cmV0dXJuIHZvaWQgMCE9PWU/dGhpcy5zZXRIZXgoZSk6Y29uc29sZS53YXJuKCJUSFJFRS5Db2xvcjogVW5rbm93biBjb2xvciAiK3QpLHRoaXN9Y2xvbmUoKXtyZXR1cm4gbmV3IHRoaXMuY29uc3RydWN0b3IodGhpcy5yLHRoaXMuZyx0aGlzLmIpfWNvcHkodCl7cmV0dXJuIHRoaXMucj10LnIsdGhpcy5nPXQuZyx0aGlzLmI9dC5iLHRoaXN9Y29weUdhbW1hVG9MaW5lYXIodCxlPTIpe3JldHVybiB0aGlzLnI9TWF0aC5wb3codC5yLGUpLHRoaXMuZz1NYXRoLnBvdyh0LmcsZSksdGhpcy5iPU1hdGgucG93KHQuYixlKSx0aGlzfWNvcHlMaW5lYXJUb0dhbW1hKHQsZT0yKXtjb25zdCBuPWU+MD8xL2U6MTtyZXR1cm4gdGhpcy5yPU1hdGgucG93KHQucixuKSx0aGlzLmc9TWF0aC5wb3codC5nLG4pLHRoaXMuYj1NYXRoLnBvdyh0LmIsbiksdGhpc31jb252ZXJ0R2FtbWFUb0xpbmVhcih0KXtyZXR1cm4gdGhpcy5jb3B5R2FtbWFUb0xpbmVhcih0aGlzLHQpLHRoaXN9Y29udmVydExpbmVhclRvR2FtbWEodCl7cmV0dXJuIHRoaXMuY29weUxpbmVhclRvR2FtbWEodGhpcyx0KSx0aGlzfWNvcHlTUkdCVG9MaW5lYXIodCl7cmV0dXJuIHRoaXMucj1ERnQodC5yKSx0aGlzLmc9REZ0KHQuZyksdGhpcy5iPURGdCh0LmIpLHRoaXN9Y29weUxpbmVhclRvU1JHQih0KXtyZXR1cm4gdGhpcy5yPUJGdCh0LnIpLHRoaXMuZz1CRnQodC5nKSx0aGlzLmI9QkZ0KHQuYiksdGhpc31jb252ZXJ0U1JHQlRvTGluZWFyKCl7cmV0dXJuIHRoaXMuY29weVNSR0JUb0xpbmVhcih0aGlzKSx0aGlzfWNvbnZlcnRMaW5lYXJUb1NSR0IoKXtyZXR1cm4gdGhpcy5jb3B5TGluZWFyVG9TUkdCKHRoaXMpLHRoaXN9Z2V0SGV4KCl7cmV0dXJuIDI1NSp0aGlzLnI8PDE2XjI1NSp0aGlzLmc8PDheMjU1KnRoaXMuYjw8MH1nZXRIZXhTdHJpbmcoKXtyZXR1cm4oIjAwMDAwMCIrdGhpcy5nZXRIZXgoKS50b1N0cmluZygxNikpLnNsaWNlKC02KX1nZXRIU0wodCl7dm9pZCAwPT09dCYmKGNvbnNvbGUud2FybigiVEhSRUUuQ29sb3I6IC5nZXRIU0woKSB0YXJnZXQgaXMgbm93IHJlcXVpcmVkIiksdD17aDowLHM6MCxsOjB9KTtjb25zdCBlPXRoaXMucixuPXRoaXMuZyxpPXRoaXMuYixyPU1hdGgubWF4KGUsbixpKSxvPU1hdGgubWluKGUsbixpKTtsZXQgYSxzO2NvbnN0IGw9KG8rcikvMjtpZihvPT09cilhPTAscz0wO2Vsc2V7Y29uc3QgdD1yLW87c3dpdGNoKHM9bDw9LjU/dC8ocitvKTp0LygyLXItbykscil7Y2FzZSBlOmE9KG4taSkvdCsobjxpPzY6MCk7YnJlYWs7Y2FzZSBuOmE9KGktZSkvdCsyO2JyZWFrO2Nhc2UgaTphPShlLW4pL3QrNH1hLz02fXJldHVybiB0Lmg9YSx0LnM9cyx0Lmw9bCx0fWdldFN0eWxlKCl7cmV0dXJuInJnYigiKygyNTUqdGhpcy5yfDApKyIsIisoMjU1KnRoaXMuZ3wwKSsiLCIrKDI1NSp0aGlzLmJ8MCkrIikifW9mZnNldEhTTCh0LGUsbil7cmV0dXJuIHRoaXMuZ2V0SFNMKE9GdCksT0Z0LmgrPXQsT0Z0LnMrPWUsT0Z0LmwrPW4sdGhpcy5zZXRIU0woT0Z0LmgsT0Z0LnMsT0Z0LmwpLHRoaXN9YWRkKHQpe3JldHVybiB0aGlzLnIrPXQucix0aGlzLmcrPXQuZyx0aGlzLmIrPXQuYix0aGlzfWFkZENvbG9ycyh0LGUpe3JldHVybiB0aGlzLnI9dC5yK2Uucix0aGlzLmc9dC5nK2UuZyx0aGlzLmI9dC5iK2UuYix0aGlzfWFkZFNjYWxhcih0KXtyZXR1cm4gdGhpcy5yKz10LHRoaXMuZys9dCx0aGlzLmIrPXQsdGhpc31zdWIodCl7cmV0dXJuIHRoaXMucj1NYXRoLm1heCgwLHRoaXMuci10LnIpLHRoaXMuZz1NYXRoLm1heCgwLHRoaXMuZy10LmcpLHRoaXMuYj1NYXRoLm1heCgwLHRoaXMuYi10LmIpLHRoaXN9bXVsdGlwbHkodCl7cmV0dXJuIHRoaXMucio9dC5yLHRoaXMuZyo9dC5nLHRoaXMuYio9dC5iLHRoaXN9bXVsdGlwbHlTY2FsYXIodCl7cmV0dXJuIHRoaXMucio9dCx0aGlzLmcqPXQsdGhpcy5iKj10LHRoaXN9bGVycCh0LGUpe3JldHVybiB0aGlzLnIrPSh0LnItdGhpcy5yKSplLHRoaXMuZys9KHQuZy10aGlzLmcpKmUsdGhpcy5iKz0odC5iLXRoaXMuYikqZSx0aGlzfWxlcnBDb2xvcnModCxlLG4pe3JldHVybiB0aGlzLnI9dC5yKyhlLnItdC5yKSpuLHRoaXMuZz10LmcrKGUuZy10LmcpKm4sdGhpcy5iPXQuYisoZS5iLXQuYikqbix0aGlzfWxlcnBIU0wodCxlKXt0aGlzLmdldEhTTChPRnQpLHQuZ2V0SFNMKFJGdCk7Y29uc3Qgbj1zSHQubGVycChPRnQuaCxSRnQuaCxlKSxpPXNIdC5sZXJwKE9GdC5zLFJGdC5zLGUpLHI9c0h0LmxlcnAoT0Z0LmwsUkZ0LmwsZSk7cmV0dXJuIHRoaXMuc2V0SFNMKG4saSxyKSx0aGlzfWVxdWFscyh0KXtyZXR1cm4gdC5yPT09dGhpcy5yJiZ0Lmc9PT10aGlzLmcmJnQuYj09PXRoaXMuYn1mcm9tQXJyYXkodCxlPTApe3JldHVybiB0aGlzLnI9dFtlXSx0aGlzLmc9dFtlKzFdLHRoaXMuYj10W2UrMl0sdGhpc310b0FycmF5KHQ9W10sZT0wKXtyZXR1cm4gdFtlXT10aGlzLnIsdFtlKzFdPXRoaXMuZyx0W2UrMl09dGhpcy5iLHR9ZnJvbUJ1ZmZlckF0dHJpYnV0ZSh0LGUpe3JldHVybiB0aGlzLnI9dC5nZXRYKGUpLHRoaXMuZz10LmdldFkoZSksdGhpcy5iPXQuZ2V0WihlKSwhMD09PXQubm9ybWFsaXplZCYmKHRoaXMuci89MjU1LHRoaXMuZy89MjU1LHRoaXMuYi89MjU1KSx0aGlzfXRvSlNPTigpe3JldHVybiB0aGlzLmdldEhleCgpfX1IRnQuTkFNRVM9TkZ0LEhGdC5wcm90b3R5cGUucj0xLEhGdC5wcm90b3R5cGUuZz0xLEhGdC5wcm90b3R5cGUuYj0xO2NsYXNzIEZGdHtjb25zdHJ1Y3Rvcih0LGUsbixpLHIsbz0wKXt0aGlzLmE9dCx0aGlzLmI9ZSx0aGlzLmM9bix0aGlzLm5vcm1hbD1pJiZpLmlzVmVjdG9yMz9pOm5ldyB5SHQsdGhpcy52ZXJ0ZXhOb3JtYWxzPUFycmF5LmlzQXJyYXkoaSk/aTpbXSx0aGlzLmNvbG9yPXImJnIuaXNDb2xvcj9yOm5ldyBIRnQsdGhpcy52ZXJ0ZXhDb2xvcnM9QXJyYXkuaXNBcnJheShyKT9yOltdLHRoaXMubWF0ZXJpYWxJbmRleD1vfWNsb25lKCl7cmV0dXJuKG5ldyB0aGlzLmNvbnN0cnVjdG9yKS5jb3B5KHRoaXMpfWNvcHkodCl7dGhpcy5hPXQuYSx0aGlzLmI9dC5iLHRoaXMuYz10LmMsdGhpcy5ub3JtYWwuY29weSh0Lm5vcm1hbCksdGhpcy5jb2xvci5jb3B5KHQuY29sb3IpLHRoaXMubWF0ZXJpYWxJbmRleD10Lm1hdGVyaWFsSW5kZXg7Zm9yKGxldCBlPTAsbj10LnZlcnRleE5vcm1hbHMubGVuZ3RoO2U8bjtlKyspdGhpcy52ZXJ0ZXhOb3JtYWxzW2VdPXQudmVydGV4Tm9ybWFsc1tlXS5jbG9uZSgpO2ZvcihsZXQgZT0wLG49dC52ZXJ0ZXhDb2xvcnMubGVuZ3RoO2U8bjtlKyspdGhpcy52ZXJ0ZXhDb2xvcnNbZV09dC52ZXJ0ZXhDb2xvcnNbZV0uY2xvbmUoKTtyZXR1cm4gdGhpc319bGV0IFZGdD0wO2Z1bmN0aW9uIGpGdCgpe09iamVjdC5kZWZpbmVQcm9wZXJ0eSh0aGlzLCJpZCIse3ZhbHVlOlZGdCsrfSksdGhpcy51dWlkPXNIdC5nZW5lcmF0ZVVVSUQoKSx0aGlzLm5hbWU9IiIsdGhpcy50eXBlPSJNYXRlcmlhbCIsdGhpcy5mb2c9ITAsdGhpcy5ibGVuZGluZz0xLHRoaXMuc2lkZT0wLHRoaXMuZmxhdFNoYWRpbmc9ITEsdGhpcy52ZXJ0ZXhDb2xvcnM9ITEsdGhpcy5vcGFjaXR5PTEsdGhpcy50cmFuc3BhcmVudD0hMSx0aGlzLmJsZW5kU3JjPTIwNCx0aGlzLmJsZW5kRHN0PTIwNSx0aGlzLmJsZW5kRXF1YXRpb249bkJ0LHRoaXMuYmxlbmRTcmNBbHBoYT1udWxsLHRoaXMuYmxlbmREc3RBbHBoYT1udWxsLHRoaXMuYmxlbmRFcXVhdGlvbkFscGhhPW51bGwsdGhpcy5kZXB0aEZ1bmM9Myx0aGlzLmRlcHRoVGVzdD0hMCx0aGlzLmRlcHRoV3JpdGU9ITAsdGhpcy5zdGVuY2lsV3JpdGVNYXNrPTI1NSx0aGlzLnN0ZW5jaWxGdW5jPTUxOSx0aGlzLnN0ZW5jaWxSZWY9MCx0aGlzLnN0ZW5jaWxGdW5jTWFzaz0yNTUsdGhpcy5zdGVuY2lsRmFpbD10SHQsdGhpcy5zdGVuY2lsWkZhaWw9dEh0LHRoaXMuc3RlbmNpbFpQYXNzPXRIdCx0aGlzLnN0ZW5jaWxXcml0ZT0hMSx0aGlzLmNsaXBwaW5nUGxhbmVzPW51bGwsdGhpcy5jbGlwSW50ZXJzZWN0aW9uPSExLHRoaXMuY2xpcFNoYWRvd3M9ITEsdGhpcy5zaGFkb3dTaWRlPW51bGwsdGhpcy5jb2xvcldyaXRlPSEwLHRoaXMucHJlY2lzaW9uPW51bGwsdGhpcy5wb2x5Z29uT2Zmc2V0PSExLHRoaXMucG9seWdvbk9mZnNldEZhY3Rvcj0wLHRoaXMucG9seWdvbk9mZnNldFVuaXRzPTAsdGhpcy5kaXRoZXJpbmc9ITEsdGhpcy5hbHBoYVRlc3Q9MCx0aGlzLnByZW11bHRpcGxpZWRBbHBoYT0hMSx0aGlzLnZpc2libGU9ITAsdGhpcy50b25lTWFwcGVkPSEwLHRoaXMudXNlckRhdGE9e30sdGhpcy52ZXJzaW9uPTB9ZnVuY3Rpb24gVUZ0KHQpe2pGdC5jYWxsKHRoaXMpLHRoaXMudHlwZT0iTWVzaEJhc2ljTWF0ZXJpYWwiLHRoaXMuY29sb3I9bmV3IEhGdCgxNjc3NzIxNSksdGhpcy5tYXA9bnVsbCx0aGlzLmxpZ2h0TWFwPW51bGwsdGhpcy5saWdodE1hcEludGVuc2l0eT0xLHRoaXMuYW9NYXA9bnVsbCx0aGlzLmFvTWFwSW50ZW5zaXR5PTEsdGhpcy5zcGVjdWxhck1hcD1udWxsLHRoaXMuYWxwaGFNYXA9bnVsbCx0aGlzLmVudk1hcD1udWxsLHRoaXMuY29tYmluZT0wLHRoaXMucmVmbGVjdGl2aXR5PTEsdGhpcy5yZWZyYWN0aW9uUmF0aW89Ljk4LHRoaXMud2lyZWZyYW1lPSExLHRoaXMud2lyZWZyYW1lTGluZXdpZHRoPTEsdGhpcy53aXJlZnJhbWVMaW5lY2FwPSJyb3VuZCIsdGhpcy53aXJlZnJhbWVMaW5lam9pbj0icm91bmQiLHRoaXMuc2tpbm5pbmc9ITEsdGhpcy5tb3JwaFRhcmdldHM9ITEsdGhpcy5zZXRWYWx1ZXModCl9akZ0LnByb3RvdHlwZT1PYmplY3QuYXNzaWduKE9iamVjdC5jcmVhdGUockh0LnByb3RvdHlwZSkse2NvbnN0cnVjdG9yOmpGdCxpc01hdGVyaWFsOiEwLG9uQmVmb3JlQ29tcGlsZTpmdW5jdGlvbigpe30sY3VzdG9tUHJvZ3JhbUNhY2hlS2V5OmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMub25CZWZvcmVDb21waWxlLnRvU3RyaW5nKCl9LHNldFZhbHVlczpmdW5jdGlvbih0KXtpZih2b2lkIDAhPT10KWZvcihjb25zdCBlIGluIHQpe2NvbnN0IG49dFtlXTtpZih2b2lkIDA9PT1uKXtjb25zb2xlLndhcm4oIlRIUkVFLk1hdGVyaWFsOiAnIitlKyInIHBhcmFtZXRlciBpcyB1bmRlZmluZWQuIik7Y29udGludWV9aWYoInNoYWRpbmciPT09ZSl7Y29uc29sZS53YXJuKCJUSFJFRS4iK3RoaXMudHlwZSsiOiAuc2hhZGluZyBoYXMgYmVlbiByZW1vdmVkLiBVc2UgdGhlIGJvb2xlYW4gLmZsYXRTaGFkaW5nIGluc3RlYWQuIiksdGhpcy5mbGF0U2hhZGluZz0xPT09bjtjb250aW51ZX1jb25zdCBpPXRoaXNbZV07dm9pZCAwIT09aT9pJiZpLmlzQ29sb3I/aS5zZXQobik6aSYmaS5pc1ZlY3RvcjMmJm4mJm4uaXNWZWN0b3IzP2kuY29weShuKTp0aGlzW2VdPW46Y29uc29sZS53YXJuKCJUSFJFRS4iK3RoaXMudHlwZSsiOiAnIitlKyInIGlzIG5vdCBhIHByb3BlcnR5IG9mIHRoaXMgbWF0ZXJpYWwuIil9fSx0b0pTT046ZnVuY3Rpb24odCl7Y29uc3QgZT12b2lkIDA9PT10fHwic3RyaW5nIj09dHlwZW9mIHQ7ZSYmKHQ9e3RleHR1cmVzOnt9LGltYWdlczp7fX0pO2NvbnN0IG49e21ldGFkYXRhOnt2ZXJzaW9uOjQuNSx0eXBlOiJNYXRlcmlhbCIsZ2VuZXJhdG9yOiJNYXRlcmlhbC50b0pTT04ifX07ZnVuY3Rpb24gaSh0KXtjb25zdCBlPVtdO2Zvcihjb25zdCBuIGluIHQpe2NvbnN0IGk9dFtuXTtkZWxldGUgaS5tZXRhZGF0YSxlLnB1c2goaSl9cmV0dXJuIGV9aWYobi51dWlkPXRoaXMudXVpZCxuLnR5cGU9dGhpcy50eXBlLCIiIT09dGhpcy5uYW1lJiYobi5uYW1lPXRoaXMubmFtZSksdGhpcy5jb2xvciYmdGhpcy5jb2xvci5pc0NvbG9yJiYobi5jb2xvcj10aGlzLmNvbG9yLmdldEhleCgpKSx2b2lkIDAhPT10aGlzLnJvdWdobmVzcyYmKG4ucm91Z2huZXNzPXRoaXMucm91Z2huZXNzKSx2b2lkIDAhPT10aGlzLm1ldGFsbmVzcyYmKG4ubWV0YWxuZXNzPXRoaXMubWV0YWxuZXNzKSx0aGlzLnNoZWVuJiZ0aGlzLnNoZWVuLmlzQ29sb3ImJihuLnNoZWVuPXRoaXMuc2hlZW4uZ2V0SGV4KCkpLHRoaXMuZW1pc3NpdmUmJnRoaXMuZW1pc3NpdmUuaXNDb2xvciYmKG4uZW1pc3NpdmU9dGhpcy5lbWlzc2l2ZS5nZXRIZXgoKSksdGhpcy5lbWlzc2l2ZUludGVuc2l0eSYmMSE9PXRoaXMuZW1pc3NpdmVJbnRlbnNpdHkmJihuLmVtaXNzaXZlSW50ZW5zaXR5PXRoaXMuZW1pc3NpdmVJbnRlbnNpdHkpLHRoaXMuc3BlY3VsYXImJnRoaXMuc3BlY3VsYXIuaXNDb2xvciYmKG4uc3BlY3VsYXI9dGhpcy5zcGVjdWxhci5nZXRIZXgoKSksdm9pZCAwIT09dGhpcy5zaGluaW5lc3MmJihuLnNoaW5pbmVzcz10aGlzLnNoaW5pbmVzcyksdm9pZCAwIT09dGhpcy5jbGVhcmNvYXQmJihuLmNsZWFyY29hdD10aGlzLmNsZWFyY29hdCksdm9pZCAwIT09dGhpcy5jbGVhcmNvYXRSb3VnaG5lc3MmJihuLmNsZWFyY29hdFJvdWdobmVzcz10aGlzLmNsZWFyY29hdFJvdWdobmVzcyksdGhpcy5jbGVhcmNvYXRNYXAmJnRoaXMuY2xlYXJjb2F0TWFwLmlzVGV4dHVyZSYmKG4uY2xlYXJjb2F0TWFwPXRoaXMuY2xlYXJjb2F0TWFwLnRvSlNPTih0KS51dWlkKSx0aGlzLmNsZWFyY29hdFJvdWdobmVzc01hcCYmdGhpcy5jbGVhcmNvYXRSb3VnaG5lc3NNYXAuaXNUZXh0dXJlJiYobi5jbGVhcmNvYXRSb3VnaG5lc3NNYXA9dGhpcy5jbGVhcmNvYXRSb3VnaG5lc3NNYXAudG9KU09OKHQpLnV1aWQpLHRoaXMuY2xlYXJjb2F0Tm9ybWFsTWFwJiZ0aGlzLmNsZWFyY29hdE5vcm1hbE1hcC5pc1RleHR1cmUmJihuLmNsZWFyY29hdE5vcm1hbE1hcD10aGlzLmNsZWFyY29hdE5vcm1hbE1hcC50b0pTT04odCkudXVpZCxuLmNsZWFyY29hdE5vcm1hbFNjYWxlPXRoaXMuY2xlYXJjb2F0Tm9ybWFsU2NhbGUudG9BcnJheSgpKSx0aGlzLm1hcCYmdGhpcy5tYXAuaXNUZXh0dXJlJiYobi5tYXA9dGhpcy5tYXAudG9KU09OKHQpLnV1aWQpLHRoaXMubWF0Y2FwJiZ0aGlzLm1hdGNhcC5pc1RleHR1cmUmJihuLm1hdGNhcD10aGlzLm1hdGNhcC50b0pTT04odCkudXVpZCksdGhpcy5hbHBoYU1hcCYmdGhpcy5hbHBoYU1hcC5pc1RleHR1cmUmJihuLmFscGhhTWFwPXRoaXMuYWxwaGFNYXAudG9KU09OKHQpLnV1aWQpLHRoaXMubGlnaHRNYXAmJnRoaXMubGlnaHRNYXAuaXNUZXh0dXJlJiYobi5saWdodE1hcD10aGlzLmxpZ2h0TWFwLnRvSlNPTih0KS51dWlkKSx0aGlzLmFvTWFwJiZ0aGlzLmFvTWFwLmlzVGV4dHVyZSYmKG4uYW9NYXA9dGhpcy5hb01hcC50b0pTT04odCkudXVpZCxuLmFvTWFwSW50ZW5zaXR5PXRoaXMuYW9NYXBJbnRlbnNpdHkpLHRoaXMuYnVtcE1hcCYmdGhpcy5idW1wTWFwLmlzVGV4dHVyZSYmKG4uYnVtcE1hcD10aGlzLmJ1bXBNYXAudG9KU09OKHQpLnV1aWQsbi5idW1wU2NhbGU9dGhpcy5idW1wU2NhbGUpLHRoaXMubm9ybWFsTWFwJiZ0aGlzLm5vcm1hbE1hcC5pc1RleHR1cmUmJihuLm5vcm1hbE1hcD10aGlzLm5vcm1hbE1hcC50b0pTT04odCkudXVpZCxuLm5vcm1hbE1hcFR5cGU9dGhpcy5ub3JtYWxNYXBUeXBlLG4ubm9ybWFsU2NhbGU9dGhpcy5ub3JtYWxTY2FsZS50b0FycmF5KCkpLHRoaXMuZGlzcGxhY2VtZW50TWFwJiZ0aGlzLmRpc3BsYWNlbWVudE1hcC5pc1RleHR1cmUmJihuLmRpc3BsYWNlbWVudE1hcD10aGlzLmRpc3BsYWNlbWVudE1hcC50b0pTT04odCkudXVpZCxuLmRpc3BsYWNlbWVudFNjYWxlPXRoaXMuZGlzcGxhY2VtZW50U2NhbGUsbi5kaXNwbGFjZW1lbnRCaWFzPXRoaXMuZGlzcGxhY2VtZW50QmlhcyksdGhpcy5yb3VnaG5lc3NNYXAmJnRoaXMucm91Z2huZXNzTWFwLmlzVGV4dHVyZSYmKG4ucm91Z2huZXNzTWFwPXRoaXMucm91Z2huZXNzTWFwLnRvSlNPTih0KS51dWlkKSx0aGlzLm1ldGFsbmVzc01hcCYmdGhpcy5tZXRhbG5lc3NNYXAuaXNUZXh0dXJlJiYobi5tZXRhbG5lc3NNYXA9dGhpcy5tZXRhbG5lc3NNYXAudG9KU09OKHQpLnV1aWQpLHRoaXMuZW1pc3NpdmVNYXAmJnRoaXMuZW1pc3NpdmVNYXAuaXNUZXh0dXJlJiYobi5lbWlzc2l2ZU1hcD10aGlzLmVtaXNzaXZlTWFwLnRvSlNPTih0KS51dWlkKSx0aGlzLnNwZWN1bGFyTWFwJiZ0aGlzLnNwZWN1bGFyTWFwLmlzVGV4dHVyZSYmKG4uc3BlY3VsYXJNYXA9dGhpcy5zcGVjdWxhck1hcC50b0pTT04odCkudXVpZCksdGhpcy5lbnZNYXAmJnRoaXMuZW52TWFwLmlzVGV4dHVyZSYmKG4uZW52TWFwPXRoaXMuZW52TWFwLnRvSlNPTih0KS51dWlkLG4ucmVmbGVjdGl2aXR5PXRoaXMucmVmbGVjdGl2aXR5LG4ucmVmcmFjdGlvblJhdGlvPXRoaXMucmVmcmFjdGlvblJhdGlvLHZvaWQgMCE9PXRoaXMuY29tYmluZSYmKG4uY29tYmluZT10aGlzLmNvbWJpbmUpLHZvaWQgMCE9PXRoaXMuZW52TWFwSW50ZW5zaXR5JiYobi5lbnZNYXBJbnRlbnNpdHk9dGhpcy5lbnZNYXBJbnRlbnNpdHkpKSx0aGlzLmdyYWRpZW50TWFwJiZ0aGlzLmdyYWRpZW50TWFwLmlzVGV4dHVyZSYmKG4uZ3JhZGllbnRNYXA9dGhpcy5ncmFkaWVudE1hcC50b0pTT04odCkudXVpZCksdm9pZCAwIT09dGhpcy5zaXplJiYobi5zaXplPXRoaXMuc2l6ZSksdm9pZCAwIT09dGhpcy5zaXplQXR0ZW51YXRpb24mJihuLnNpemVBdHRlbnVhdGlvbj10aGlzLnNpemVBdHRlbnVhdGlvbiksMSE9PXRoaXMuYmxlbmRpbmcmJihuLmJsZW5kaW5nPXRoaXMuYmxlbmRpbmcpLCEwPT09dGhpcy5mbGF0U2hhZGluZyYmKG4uZmxhdFNoYWRpbmc9dGhpcy5mbGF0U2hhZGluZyksMCE9PXRoaXMuc2lkZSYmKG4uc2lkZT10aGlzLnNpZGUpLHRoaXMudmVydGV4Q29sb3JzJiYobi52ZXJ0ZXhDb2xvcnM9ITApLHRoaXMub3BhY2l0eTwxJiYobi5vcGFjaXR5PXRoaXMub3BhY2l0eSksITA9PT10aGlzLnRyYW5zcGFyZW50JiYobi50cmFuc3BhcmVudD10aGlzLnRyYW5zcGFyZW50KSxuLmRlcHRoRnVuYz10aGlzLmRlcHRoRnVuYyxuLmRlcHRoVGVzdD10aGlzLmRlcHRoVGVzdCxuLmRlcHRoV3JpdGU9dGhpcy5kZXB0aFdyaXRlLG4uc3RlbmNpbFdyaXRlPXRoaXMuc3RlbmNpbFdyaXRlLG4uc3RlbmNpbFdyaXRlTWFzaz10aGlzLnN0ZW5jaWxXcml0ZU1hc2ssbi5zdGVuY2lsRnVuYz10aGlzLnN0ZW5jaWxGdW5jLG4uc3RlbmNpbFJlZj10aGlzLnN0ZW5jaWxSZWYsbi5zdGVuY2lsRnVuY01hc2s9dGhpcy5zdGVuY2lsRnVuY01hc2ssbi5zdGVuY2lsRmFpbD10aGlzLnN0ZW5jaWxGYWlsLG4uc3RlbmNpbFpGYWlsPXRoaXMuc3RlbmNpbFpGYWlsLG4uc3RlbmNpbFpQYXNzPXRoaXMuc3RlbmNpbFpQYXNzLHRoaXMucm90YXRpb24mJjAhPT10aGlzLnJvdGF0aW9uJiYobi5yb3RhdGlvbj10aGlzLnJvdGF0aW9uKSwhMD09PXRoaXMucG9seWdvbk9mZnNldCYmKG4ucG9seWdvbk9mZnNldD0hMCksMCE9PXRoaXMucG9seWdvbk9mZnNldEZhY3RvciYmKG4ucG9seWdvbk9mZnNldEZhY3Rvcj10aGlzLnBvbHlnb25PZmZzZXRGYWN0b3IpLDAhPT10aGlzLnBvbHlnb25PZmZzZXRVbml0cyYmKG4ucG9seWdvbk9mZnNldFVuaXRzPXRoaXMucG9seWdvbk9mZnNldFVuaXRzKSx0aGlzLmxpbmV3aWR0aCYmMSE9PXRoaXMubGluZXdpZHRoJiYobi5saW5ld2lkdGg9dGhpcy5saW5ld2lkdGgpLHZvaWQgMCE9PXRoaXMuZGFzaFNpemUmJihuLmRhc2hTaXplPXRoaXMuZGFzaFNpemUpLHZvaWQgMCE9PXRoaXMuZ2FwU2l6ZSYmKG4uZ2FwU2l6ZT10aGlzLmdhcFNpemUpLHZvaWQgMCE9PXRoaXMuc2NhbGUmJihuLnNjYWxlPXRoaXMuc2NhbGUpLCEwPT09dGhpcy5kaXRoZXJpbmcmJihuLmRpdGhlcmluZz0hMCksdGhpcy5hbHBoYVRlc3Q+MCYmKG4uYWxwaGFUZXN0PXRoaXMuYWxwaGFUZXN0KSwhMD09PXRoaXMucHJlbXVsdGlwbGllZEFscGhhJiYobi5wcmVtdWx0aXBsaWVkQWxwaGE9dGhpcy5wcmVtdWx0aXBsaWVkQWxwaGEpLCEwPT09dGhpcy53aXJlZnJhbWUmJihuLndpcmVmcmFtZT10aGlzLndpcmVmcmFtZSksdGhpcy53aXJlZnJhbWVMaW5ld2lkdGg+MSYmKG4ud2lyZWZyYW1lTGluZXdpZHRoPXRoaXMud2lyZWZyYW1lTGluZXdpZHRoKSwicm91bmQiIT09dGhpcy53aXJlZnJhbWVMaW5lY2FwJiYobi53aXJlZnJhbWVMaW5lY2FwPXRoaXMud2lyZWZyYW1lTGluZWNhcCksInJvdW5kIiE9PXRoaXMud2lyZWZyYW1lTGluZWpvaW4mJihuLndpcmVmcmFtZUxpbmVqb2luPXRoaXMud2lyZWZyYW1lTGluZWpvaW4pLCEwPT09dGhpcy5tb3JwaFRhcmdldHMmJihuLm1vcnBoVGFyZ2V0cz0hMCksITA9PT10aGlzLm1vcnBoTm9ybWFscyYmKG4ubW9ycGhOb3JtYWxzPSEwKSwhMD09PXRoaXMuc2tpbm5pbmcmJihuLnNraW5uaW5nPSEwKSwhMT09PXRoaXMudmlzaWJsZSYmKG4udmlzaWJsZT0hMSksITE9PT10aGlzLnRvbmVNYXBwZWQmJihuLnRvbmVNYXBwZWQ9ITEpLCJ7fSIhPT1KU09OLnN0cmluZ2lmeSh0aGlzLnVzZXJEYXRhKSYmKG4udXNlckRhdGE9dGhpcy51c2VyRGF0YSksZSl7Y29uc3QgZT1pKHQudGV4dHVyZXMpLHI9aSh0LmltYWdlcyk7ZS5sZW5ndGg+MCYmKG4udGV4dHVyZXM9ZSksci5sZW5ndGg+MCYmKG4uaW1hZ2VzPXIpfXJldHVybiBufSxjbG9uZTpmdW5jdGlvbigpe3JldHVybihuZXcgdGhpcy5jb25zdHJ1Y3RvcikuY29weSh0aGlzKX0sY29weTpmdW5jdGlvbih0KXt0aGlzLm5hbWU9dC5uYW1lLHRoaXMuZm9nPXQuZm9nLHRoaXMuYmxlbmRpbmc9dC5ibGVuZGluZyx0aGlzLnNpZGU9dC5zaWRlLHRoaXMuZmxhdFNoYWRpbmc9dC5mbGF0U2hhZGluZyx0aGlzLnZlcnRleENvbG9ycz10LnZlcnRleENvbG9ycyx0aGlzLm9wYWNpdHk9dC5vcGFjaXR5LHRoaXMudHJhbnNwYXJlbnQ9dC50cmFuc3BhcmVudCx0aGlzLmJsZW5kU3JjPXQuYmxlbmRTcmMsdGhpcy5ibGVuZERzdD10LmJsZW5kRHN0LHRoaXMuYmxlbmRFcXVhdGlvbj10LmJsZW5kRXF1YXRpb24sdGhpcy5ibGVuZFNyY0FscGhhPXQuYmxlbmRTcmNBbHBoYSx0aGlzLmJsZW5kRHN0QWxwaGE9dC5ibGVuZERzdEFscGhhLHRoaXMuYmxlbmRFcXVhdGlvbkFscGhhPXQuYmxlbmRFcXVhdGlvbkFscGhhLHRoaXMuZGVwdGhGdW5jPXQuZGVwdGhGdW5jLHRoaXMuZGVwdGhUZXN0PXQuZGVwdGhUZXN0LHRoaXMuZGVwdGhXcml0ZT10LmRlcHRoV3JpdGUsdGhpcy5zdGVuY2lsV3JpdGVNYXNrPXQuc3RlbmNpbFdyaXRlTWFzayx0aGlzLnN0ZW5jaWxGdW5jPXQuc3RlbmNpbEZ1bmMsdGhpcy5zdGVuY2lsUmVmPXQuc3RlbmNpbFJlZix0aGlzLnN0ZW5jaWxGdW5jTWFzaz10LnN0ZW5jaWxGdW5jTWFzayx0aGlzLnN0ZW5jaWxGYWlsPXQuc3RlbmNpbEZhaWwsdGhpcy5zdGVuY2lsWkZhaWw9dC5zdGVuY2lsWkZhaWwsdGhpcy5zdGVuY2lsWlBhc3M9dC5zdGVuY2lsWlBhc3MsdGhpcy5zdGVuY2lsV3JpdGU9dC5zdGVuY2lsV3JpdGU7Y29uc3QgZT10LmNsaXBwaW5nUGxhbmVzO2xldCBuPW51bGw7aWYobnVsbCE9PWUpe2NvbnN0IHQ9ZS5sZW5ndGg7bj1uZXcgQXJyYXkodCk7Zm9yKGxldCBpPTA7aSE9PXQ7KytpKW5baV09ZVtpXS5jbG9uZSgpfXJldHVybiB0aGlzLmNsaXBwaW5nUGxhbmVzPW4sdGhpcy5jbGlwSW50ZXJzZWN0aW9uPXQuY2xpcEludGVyc2VjdGlvbix0aGlzLmNsaXBTaGFkb3dzPXQuY2xpcFNoYWRvd3MsdGhpcy5zaGFkb3dTaWRlPXQuc2hhZG93U2lkZSx0aGlzLmNvbG9yV3JpdGU9dC5jb2xvcldyaXRlLHRoaXMucHJlY2lzaW9uPXQucHJlY2lzaW9uLHRoaXMucG9seWdvbk9mZnNldD10LnBvbHlnb25PZmZzZXQsdGhpcy5wb2x5Z29uT2Zmc2V0RmFjdG9yPXQucG9seWdvbk9mZnNldEZhY3Rvcix0aGlzLnBvbHlnb25PZmZzZXRVbml0cz10LnBvbHlnb25PZmZzZXRVbml0cyx0aGlzLmRpdGhlcmluZz10LmRpdGhlcmluZyx0aGlzLmFscGhhVGVzdD10LmFscGhhVGVzdCx0aGlzLnByZW11bHRpcGxpZWRBbHBoYT10LnByZW11bHRpcGxpZWRBbHBoYSx0aGlzLnZpc2libGU9dC52aXNpYmxlLHRoaXMudG9uZU1hcHBlZD10LnRvbmVNYXBwZWQsdGhpcy51c2VyRGF0YT1KU09OLnBhcnNlKEpTT04uc3RyaW5naWZ5KHQudXNlckRhdGEpKSx0aGlzfSxkaXNwb3NlOmZ1bmN0aW9uKCl7dGhpcy5kaXNwYXRjaEV2ZW50KHt0eXBlOiJkaXNwb3NlIn0pfX0pLE9iamVjdC5kZWZpbmVQcm9wZXJ0eShqRnQucHJvdG90eXBlLCJuZWVkc1VwZGF0ZSIse3NldDpmdW5jdGlvbih0KXshMD09PXQmJnRoaXMudmVyc2lvbisrfX0pLChVRnQucHJvdG90eXBlPU9iamVjdC5jcmVhdGUoakZ0LnByb3RvdHlwZSkpLmNvbnN0cnVjdG9yPVVGdCxVRnQucHJvdG90eXBlLmlzTWVzaEJhc2ljTWF0ZXJpYWw9ITAsVUZ0LnByb3RvdHlwZS5jb3B5PWZ1bmN0aW9uKHQpe3JldHVybiBqRnQucHJvdG90eXBlLmNvcHkuY2FsbCh0aGlzLHQpLHRoaXMuY29sb3IuY29weSh0LmNvbG9yKSx0aGlzLm1hcD10Lm1hcCx0aGlzLmxpZ2h0TWFwPXQubGlnaHRNYXAsdGhpcy5saWdodE1hcEludGVuc2l0eT10LmxpZ2h0TWFwSW50ZW5zaXR5LHRoaXMuYW9NYXA9dC5hb01hcCx0aGlzLmFvTWFwSW50ZW5zaXR5PXQuYW9NYXBJbnRlbnNpdHksdGhpcy5zcGVjdWxhck1hcD10LnNwZWN1bGFyTWFwLHRoaXMuYWxwaGFNYXA9dC5hbHBoYU1hcCx0aGlzLmVudk1hcD10LmVudk1hcCx0aGlzLmNvbWJpbmU9dC5jb21iaW5lLHRoaXMucmVmbGVjdGl2aXR5PXQucmVmbGVjdGl2aXR5LHRoaXMucmVmcmFjdGlvblJhdGlvPXQucmVmcmFjdGlvblJhdGlvLHRoaXMud2lyZWZyYW1lPXQud2lyZWZyYW1lLHRoaXMud2lyZWZyYW1lTGluZXdpZHRoPXQud2lyZWZyYW1lTGluZXdpZHRoLHRoaXMud2lyZWZyYW1lTGluZWNhcD10LndpcmVmcmFtZUxpbmVjYXAsdGhpcy53aXJlZnJhbWVMaW5lam9pbj10LndpcmVmcmFtZUxpbmVqb2luLHRoaXMuc2tpbm5pbmc9dC5za2lubmluZyx0aGlzLm1vcnBoVGFyZ2V0cz10Lm1vcnBoVGFyZ2V0cyx0aGlzfTtjb25zdCBHRnQ9bmV3IHlIdCxXRnQ9bmV3IGxIdDtmdW5jdGlvbiBxRnQodCxlLG4pe2lmKEFycmF5LmlzQXJyYXkodCkpdGhyb3cgbmV3IFR5cGVFcnJvcigiVEhSRUUuQnVmZmVyQXR0cmlidXRlOiBhcnJheSBzaG91bGQgYmUgYSBUeXBlZCBBcnJheS4iKTt0aGlzLm5hbWU9IiIsdGhpcy5hcnJheT10LHRoaXMuaXRlbVNpemU9ZSx0aGlzLmNvdW50PXZvaWQgMCE9PXQ/dC5sZW5ndGgvZTowLHRoaXMubm9ybWFsaXplZD0hMD09PW4sdGhpcy51c2FnZT1lSHQsdGhpcy51cGRhdGVSYW5nZT17b2Zmc2V0OjAsY291bnQ6LTF9LHRoaXMudmVyc2lvbj0wfWZ1bmN0aW9uIFlGdCh0LGUsbil7cUZ0LmNhbGwodGhpcyxuZXcgSW50OEFycmF5KHQpLGUsbil9ZnVuY3Rpb24gWEZ0KHQsZSxuKXtxRnQuY2FsbCh0aGlzLG5ldyBVaW50OEFycmF5KHQpLGUsbil9ZnVuY3Rpb24gJEZ0KHQsZSxuKXtxRnQuY2FsbCh0aGlzLG5ldyBVaW50OENsYW1wZWRBcnJheSh0KSxlLG4pfWZ1bmN0aW9uIEtGdCh0LGUsbil7cUZ0LmNhbGwodGhpcyxuZXcgSW50MTZBcnJheSh0KSxlLG4pfWZ1bmN0aW9uIFpGdCh0LGUsbil7cUZ0LmNhbGwodGhpcyxuZXcgVWludDE2QXJyYXkodCksZSxuKX1mdW5jdGlvbiBKRnQodCxlLG4pe3FGdC5jYWxsKHRoaXMsbmV3IEludDMyQXJyYXkodCksZSxuKX1mdW5jdGlvbiBRRnQodCxlLG4pe3FGdC5jYWxsKHRoaXMsbmV3IFVpbnQzMkFycmF5KHQpLGUsbil9ZnVuY3Rpb24gdFZ0KHQsZSxuKXtxRnQuY2FsbCh0aGlzLG5ldyBVaW50MTZBcnJheSh0KSxlLG4pfWZ1bmN0aW9uIGVWdCh0LGUsbil7cUZ0LmNhbGwodGhpcyxuZXcgRmxvYXQzMkFycmF5KHQpLGUsbil9ZnVuY3Rpb24gblZ0KHQsZSxuKXtxRnQuY2FsbCh0aGlzLG5ldyBGbG9hdDY0QXJyYXkodCksZSxuKX1mdW5jdGlvbiBpVnQodCl7aWYoMD09PXQubGVuZ3RoKXJldHVybi0xLzA7bGV0IGU9dFswXTtmb3IobGV0IG49MSxpPXQubGVuZ3RoO248aTsrK24pdFtuXT5lJiYoZT10W25dKTtyZXR1cm4gZX1PYmplY3QuZGVmaW5lUHJvcGVydHkocUZ0LnByb3RvdHlwZSwibmVlZHNVcGRhdGUiLHtzZXQ6ZnVuY3Rpb24odCl7ITA9PT10JiZ0aGlzLnZlcnNpb24rK319KSxPYmplY3QuYXNzaWduKHFGdC5wcm90b3R5cGUse2lzQnVmZmVyQXR0cmlidXRlOiEwLG9uVXBsb2FkQ2FsbGJhY2s6ZnVuY3Rpb24oKXt9LHNldFVzYWdlOmZ1bmN0aW9uKHQpe3JldHVybiB0aGlzLnVzYWdlPXQsdGhpc30sY29weTpmdW5jdGlvbih0KXtyZXR1cm4gdGhpcy5uYW1lPXQubmFtZSx0aGlzLmFycmF5PW5ldyB0LmFycmF5LmNvbnN0cnVjdG9yKHQuYXJyYXkpLHRoaXMuaXRlbVNpemU9dC5pdGVtU2l6ZSx0aGlzLmNvdW50PXQuY291bnQsdGhpcy5ub3JtYWxpemVkPXQubm9ybWFsaXplZCx0aGlzLnVzYWdlPXQudXNhZ2UsdGhpc30sY29weUF0OmZ1bmN0aW9uKHQsZSxuKXt0Kj10aGlzLml0ZW1TaXplLG4qPWUuaXRlbVNpemU7Zm9yKGxldCBpPTAscj10aGlzLml0ZW1TaXplO2k8cjtpKyspdGhpcy5hcnJheVt0K2ldPWUuYXJyYXlbbitpXTtyZXR1cm4gdGhpc30sY29weUFycmF5OmZ1bmN0aW9uKHQpe3JldHVybiB0aGlzLmFycmF5LnNldCh0KSx0aGlzfSxjb3B5Q29sb3JzQXJyYXk6ZnVuY3Rpb24odCl7Y29uc3QgZT10aGlzLmFycmF5O2xldCBuPTA7Zm9yKGxldCBpPTAscj10Lmxlbmd0aDtpPHI7aSsrKXtsZXQgcj10W2ldO3ZvaWQgMD09PXImJihjb25zb2xlLndhcm4oIlRIUkVFLkJ1ZmZlckF0dHJpYnV0ZS5jb3B5Q29sb3JzQXJyYXkoKTogY29sb3IgaXMgdW5kZWZpbmVkIixpKSxyPW5ldyBIRnQpLGVbbisrXT1yLnIsZVtuKytdPXIuZyxlW24rK109ci5ifXJldHVybiB0aGlzfSxjb3B5VmVjdG9yMnNBcnJheTpmdW5jdGlvbih0KXtjb25zdCBlPXRoaXMuYXJyYXk7bGV0IG49MDtmb3IobGV0IGk9MCxyPXQubGVuZ3RoO2k8cjtpKyspe2xldCByPXRbaV07dm9pZCAwPT09ciYmKGNvbnNvbGUud2FybigiVEhSRUUuQnVmZmVyQXR0cmlidXRlLmNvcHlWZWN0b3Iyc0FycmF5KCk6IHZlY3RvciBpcyB1bmRlZmluZWQiLGkpLHI9bmV3IGxIdCksZVtuKytdPXIueCxlW24rK109ci55fXJldHVybiB0aGlzfSxjb3B5VmVjdG9yM3NBcnJheTpmdW5jdGlvbih0KXtjb25zdCBlPXRoaXMuYXJyYXk7bGV0IG49MDtmb3IobGV0IGk9MCxyPXQubGVuZ3RoO2k8cjtpKyspe2xldCByPXRbaV07dm9pZCAwPT09ciYmKGNvbnNvbGUud2FybigiVEhSRUUuQnVmZmVyQXR0cmlidXRlLmNvcHlWZWN0b3Izc0FycmF5KCk6IHZlY3RvciBpcyB1bmRlZmluZWQiLGkpLHI9bmV3IHlIdCksZVtuKytdPXIueCxlW24rK109ci55LGVbbisrXT1yLnp9cmV0dXJuIHRoaXN9LGNvcHlWZWN0b3I0c0FycmF5OmZ1bmN0aW9uKHQpe2NvbnN0IGU9dGhpcy5hcnJheTtsZXQgbj0wO2ZvcihsZXQgaT0wLHI9dC5sZW5ndGg7aTxyO2krKyl7bGV0IHI9dFtpXTt2b2lkIDA9PT1yJiYoY29uc29sZS53YXJuKCJUSFJFRS5CdWZmZXJBdHRyaWJ1dGUuY29weVZlY3RvcjRzQXJyYXkoKTogdmVjdG9yIGlzIHVuZGVmaW5lZCIsaSkscj1uZXcgbUh0KSxlW24rK109ci54LGVbbisrXT1yLnksZVtuKytdPXIueixlW24rK109ci53fXJldHVybiB0aGlzfSxhcHBseU1hdHJpeDM6ZnVuY3Rpb24odCl7aWYoMj09PXRoaXMuaXRlbVNpemUpZm9yKGxldCBlPTAsbj10aGlzLmNvdW50O2U8bjtlKyspV0Z0LmZyb21CdWZmZXJBdHRyaWJ1dGUodGhpcyxlKSxXRnQuYXBwbHlNYXRyaXgzKHQpLHRoaXMuc2V0WFkoZSxXRnQueCxXRnQueSk7ZWxzZSBpZigzPT09dGhpcy5pdGVtU2l6ZSlmb3IobGV0IGU9MCxuPXRoaXMuY291bnQ7ZTxuO2UrKylHRnQuZnJvbUJ1ZmZlckF0dHJpYnV0ZSh0aGlzLGUpLEdGdC5hcHBseU1hdHJpeDModCksdGhpcy5zZXRYWVooZSxHRnQueCxHRnQueSxHRnQueik7cmV0dXJuIHRoaXN9LGFwcGx5TWF0cml4NDpmdW5jdGlvbih0KXtmb3IobGV0IGU9MCxuPXRoaXMuY291bnQ7ZTxuO2UrKylHRnQueD10aGlzLmdldFgoZSksR0Z0Lnk9dGhpcy5nZXRZKGUpLEdGdC56PXRoaXMuZ2V0WihlKSxHRnQuYXBwbHlNYXRyaXg0KHQpLHRoaXMuc2V0WFlaKGUsR0Z0LngsR0Z0LnksR0Z0LnopO3JldHVybiB0aGlzfSxhcHBseU5vcm1hbE1hdHJpeDpmdW5jdGlvbih0KXtmb3IobGV0IGU9MCxuPXRoaXMuY291bnQ7ZTxuO2UrKylHRnQueD10aGlzLmdldFgoZSksR0Z0Lnk9dGhpcy5nZXRZKGUpLEdGdC56PXRoaXMuZ2V0WihlKSxHRnQuYXBwbHlOb3JtYWxNYXRyaXgodCksdGhpcy5zZXRYWVooZSxHRnQueCxHRnQueSxHRnQueik7cmV0dXJuIHRoaXN9LHRyYW5zZm9ybURpcmVjdGlvbjpmdW5jdGlvbih0KXtmb3IobGV0IGU9MCxuPXRoaXMuY291bnQ7ZTxuO2UrKylHRnQueD10aGlzLmdldFgoZSksR0Z0Lnk9dGhpcy5nZXRZKGUpLEdGdC56PXRoaXMuZ2V0WihlKSxHRnQudHJhbnNmb3JtRGlyZWN0aW9uKHQpLHRoaXMuc2V0WFlaKGUsR0Z0LngsR0Z0LnksR0Z0LnopO3JldHVybiB0aGlzfSxzZXQ6ZnVuY3Rpb24odCxlPTApe3JldHVybiB0aGlzLmFycmF5LnNldCh0LGUpLHRoaXN9LGdldFg6ZnVuY3Rpb24odCl7cmV0dXJuIHRoaXMuYXJyYXlbdCp0aGlzLml0ZW1TaXplXX0sc2V0WDpmdW5jdGlvbih0LGUpe3JldHVybiB0aGlzLmFycmF5W3QqdGhpcy5pdGVtU2l6ZV09ZSx0aGlzfSxnZXRZOmZ1bmN0aW9uKHQpe3JldHVybiB0aGlzLmFycmF5W3QqdGhpcy5pdGVtU2l6ZSsxXX0sc2V0WTpmdW5jdGlvbih0LGUpe3JldHVybiB0aGlzLmFycmF5W3QqdGhpcy5pdGVtU2l6ZSsxXT1lLHRoaXN9LGdldFo6ZnVuY3Rpb24odCl7cmV0dXJuIHRoaXMuYXJyYXlbdCp0aGlzLml0ZW1TaXplKzJdfSxzZXRaOmZ1bmN0aW9uKHQsZSl7cmV0dXJuIHRoaXMuYXJyYXlbdCp0aGlzLml0ZW1TaXplKzJdPWUsdGhpc30sZ2V0VzpmdW5jdGlvbih0KXtyZXR1cm4gdGhpcy5hcnJheVt0KnRoaXMuaXRlbVNpemUrM119LHNldFc6ZnVuY3Rpb24odCxlKXtyZXR1cm4gdGhpcy5hcnJheVt0KnRoaXMuaXRlbVNpemUrM109ZSx0aGlzfSxzZXRYWTpmdW5jdGlvbih0LGUsbil7cmV0dXJuIHRoaXMuYXJyYXlbMCsodCo9dGhpcy5pdGVtU2l6ZSldPWUsdGhpcy5hcnJheVt0KzFdPW4sdGhpc30sc2V0WFlaOmZ1bmN0aW9uKHQsZSxuLGkpe3JldHVybiB0aGlzLmFycmF5WzArKHQqPXRoaXMuaXRlbVNpemUpXT1lLHRoaXMuYXJyYXlbdCsxXT1uLHRoaXMuYXJyYXlbdCsyXT1pLHRoaXN9LHNldFhZWlc6ZnVuY3Rpb24odCxlLG4saSxyKXtyZXR1cm4gdGhpcy5hcnJheVswKyh0Kj10aGlzLml0ZW1TaXplKV09ZSx0aGlzLmFycmF5W3QrMV09bix0aGlzLmFycmF5W3QrMl09aSx0aGlzLmFycmF5W3QrM109cix0aGlzfSxvblVwbG9hZDpmdW5jdGlvbih0KXtyZXR1cm4gdGhpcy5vblVwbG9hZENhbGxiYWNrPXQsdGhpc30sY2xvbmU6ZnVuY3Rpb24oKXtyZXR1cm4gbmV3IHRoaXMuY29uc3RydWN0b3IodGhpcy5hcnJheSx0aGlzLml0ZW1TaXplKS5jb3B5KHRoaXMpfSx0b0pTT046ZnVuY3Rpb24oKXtyZXR1cm57aXRlbVNpemU6dGhpcy5pdGVtU2l6ZSx0eXBlOnRoaXMuYXJyYXkuY29uc3RydWN0b3IubmFtZSxhcnJheTpBcnJheS5wcm90b3R5cGUuc2xpY2UuY2FsbCh0aGlzLmFycmF5KSxub3JtYWxpemVkOnRoaXMubm9ybWFsaXplZH19fSksKFlGdC5wcm90b3R5cGU9T2JqZWN0LmNyZWF0ZShxRnQucHJvdG90eXBlKSkuY29uc3RydWN0b3I9WUZ0LChYRnQucHJvdG90eXBlPU9iamVjdC5jcmVhdGUocUZ0LnByb3RvdHlwZSkpLmNvbnN0cnVjdG9yPVhGdCwoJEZ0LnByb3RvdHlwZT1PYmplY3QuY3JlYXRlKHFGdC5wcm90b3R5cGUpKS5jb25zdHJ1Y3Rvcj0kRnQsKEtGdC5wcm90b3R5cGU9T2JqZWN0LmNyZWF0ZShxRnQucHJvdG90eXBlKSkuY29uc3RydWN0b3I9S0Z0LChaRnQucHJvdG90eXBlPU9iamVjdC5jcmVhdGUocUZ0LnByb3RvdHlwZSkpLmNvbnN0cnVjdG9yPVpGdCwoSkZ0LnByb3RvdHlwZT1PYmplY3QuY3JlYXRlKHFGdC5wcm90b3R5cGUpKS5jb25zdHJ1Y3Rvcj1KRnQsKFFGdC5wcm90b3R5cGU9T2JqZWN0LmNyZWF0ZShxRnQucHJvdG90eXBlKSkuY29uc3RydWN0b3I9UUZ0LCh0VnQucHJvdG90eXBlPU9iamVjdC5jcmVhdGUocUZ0LnByb3RvdHlwZSkpLmNvbnN0cnVjdG9yPXRWdCx0VnQucHJvdG90eXBlLmlzRmxvYXQxNkJ1ZmZlckF0dHJpYnV0ZT0hMCwoZVZ0LnByb3RvdHlwZT1PYmplY3QuY3JlYXRlKHFGdC5wcm90b3R5cGUpKS5jb25zdHJ1Y3Rvcj1lVnQsKG5WdC5wcm90b3R5cGU9T2JqZWN0LmNyZWF0ZShxRnQucHJvdG90eXBlKSkuY29uc3RydWN0b3I9blZ0O2NvbnN0IHJWdD17SW50OEFycmF5OkludDhBcnJheSxVaW50OEFycmF5OlVpbnQ4QXJyYXksVWludDhDbGFtcGVkQXJyYXk6InVuZGVmaW5lZCIhPXR5cGVvZiBVaW50OENsYW1wZWRBcnJheT9VaW50OENsYW1wZWRBcnJheTpVaW50OEFycmF5LEludDE2QXJyYXk6SW50MTZBcnJheSxVaW50MTZBcnJheTpVaW50MTZBcnJheSxJbnQzMkFycmF5OkludDMyQXJyYXksVWludDMyQXJyYXk6VWludDMyQXJyYXksRmxvYXQzMkFycmF5OkZsb2F0MzJBcnJheSxGbG9hdDY0QXJyYXk6RmxvYXQ2NEFycmF5fTtmdW5jdGlvbiBvVnQodCxlKXtyZXR1cm4gbmV3IHJWdFt0XShlKX1sZXQgYVZ0PTA7Y29uc3Qgc1Z0PW5ldyBxSHQsbFZ0PW5ldyBfRnQsY1Z0PW5ldyB5SHQsdVZ0PW5ldyB4SHQsaFZ0PW5ldyB4SHQsZFZ0PW5ldyB5SHQ7ZnVuY3Rpb24gcFZ0KCl7T2JqZWN0LmRlZmluZVByb3BlcnR5KHRoaXMsImlkIix7dmFsdWU6YVZ0Kyt9KSx0aGlzLnV1aWQ9c0h0LmdlbmVyYXRlVVVJRCgpLHRoaXMubmFtZT0iIix0aGlzLnR5cGU9IkJ1ZmZlckdlb21ldHJ5Iix0aGlzLmluZGV4PW51bGwsdGhpcy5hdHRyaWJ1dGVzPXt9LHRoaXMubW9ycGhBdHRyaWJ1dGVzPXt9LHRoaXMubW9ycGhUYXJnZXRzUmVsYXRpdmU9ITEsdGhpcy5ncm91cHM9W10sdGhpcy5ib3VuZGluZ0JveD1udWxsLHRoaXMuYm91bmRpbmdTcGhlcmU9bnVsbCx0aGlzLmRyYXdSYW5nZT17c3RhcnQ6MCxjb3VudDoxLzB9LHRoaXMudXNlckRhdGE9e319cFZ0LnByb3RvdHlwZT1PYmplY3QuYXNzaWduKE9iamVjdC5jcmVhdGUockh0LnByb3RvdHlwZSkse2NvbnN0cnVjdG9yOnBWdCxpc0J1ZmZlckdlb21ldHJ5OiEwLGdldEluZGV4OmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuaW5kZXh9LHNldEluZGV4OmZ1bmN0aW9uKHQpe3JldHVybiB0aGlzLmluZGV4PUFycmF5LmlzQXJyYXkodCk/bmV3KGlWdCh0KT42NTUzNT9RRnQ6WkZ0KSh0LDEpOnQsdGhpc30sZ2V0QXR0cmlidXRlOmZ1bmN0aW9uKHQpe3JldHVybiB0aGlzLmF0dHJpYnV0ZXNbdF19LHNldEF0dHJpYnV0ZTpmdW5jdGlvbih0LGUpe3JldHVybiB0aGlzLmF0dHJpYnV0ZXNbdF09ZSx0aGlzfSxkZWxldGVBdHRyaWJ1dGU6ZnVuY3Rpb24odCl7cmV0dXJuIGRlbGV0ZSB0aGlzLmF0dHJpYnV0ZXNbdF0sdGhpc30saGFzQXR0cmlidXRlOmZ1bmN0aW9uKHQpe3JldHVybiB2b2lkIDAhPT10aGlzLmF0dHJpYnV0ZXNbdF19LGFkZEdyb3VwOmZ1bmN0aW9uKHQsZSxuPTApe3RoaXMuZ3JvdXBzLnB1c2goe3N0YXJ0OnQsY291bnQ6ZSxtYXRlcmlhbEluZGV4Om59KX0sY2xlYXJHcm91cHM6ZnVuY3Rpb24oKXt0aGlzLmdyb3Vwcz1bXX0sc2V0RHJhd1JhbmdlOmZ1bmN0aW9uKHQsZSl7dGhpcy5kcmF3UmFuZ2Uuc3RhcnQ9dCx0aGlzLmRyYXdSYW5nZS5jb3VudD1lfSxhcHBseU1hdHJpeDQ6ZnVuY3Rpb24odCl7Y29uc3QgZT10aGlzLmF0dHJpYnV0ZXMucG9zaXRpb247dm9pZCAwIT09ZSYmKGUuYXBwbHlNYXRyaXg0KHQpLGUubmVlZHNVcGRhdGU9ITApO2NvbnN0IG49dGhpcy5hdHRyaWJ1dGVzLm5vcm1hbDtpZih2b2lkIDAhPT1uKXtjb25zdCBlPShuZXcgY0h0KS5nZXROb3JtYWxNYXRyaXgodCk7bi5hcHBseU5vcm1hbE1hdHJpeChlKSxuLm5lZWRzVXBkYXRlPSEwfWNvbnN0IGk9dGhpcy5hdHRyaWJ1dGVzLnRhbmdlbnQ7cmV0dXJuIHZvaWQgMCE9PWkmJihpLnRyYW5zZm9ybURpcmVjdGlvbih0KSxpLm5lZWRzVXBkYXRlPSEwKSxudWxsIT09dGhpcy5ib3VuZGluZ0JveCYmdGhpcy5jb21wdXRlQm91bmRpbmdCb3goKSxudWxsIT09dGhpcy5ib3VuZGluZ1NwaGVyZSYmdGhpcy5jb21wdXRlQm91bmRpbmdTcGhlcmUoKSx0aGlzfSxyb3RhdGVYOmZ1bmN0aW9uKHQpe3JldHVybiBzVnQubWFrZVJvdGF0aW9uWCh0KSx0aGlzLmFwcGx5TWF0cml4NChzVnQpLHRoaXN9LHJvdGF0ZVk6ZnVuY3Rpb24odCl7cmV0dXJuIHNWdC5tYWtlUm90YXRpb25ZKHQpLHRoaXMuYXBwbHlNYXRyaXg0KHNWdCksdGhpc30scm90YXRlWjpmdW5jdGlvbih0KXtyZXR1cm4gc1Z0Lm1ha2VSb3RhdGlvbloodCksdGhpcy5hcHBseU1hdHJpeDQoc1Z0KSx0aGlzfSx0cmFuc2xhdGU6ZnVuY3Rpb24odCxlLG4pe3JldHVybiBzVnQubWFrZVRyYW5zbGF0aW9uKHQsZSxuKSx0aGlzLmFwcGx5TWF0cml4NChzVnQpLHRoaXN9LHNjYWxlOmZ1bmN0aW9uKHQsZSxuKXtyZXR1cm4gc1Z0Lm1ha2VTY2FsZSh0LGUsbiksdGhpcy5hcHBseU1hdHJpeDQoc1Z0KSx0aGlzfSxsb29rQXQ6ZnVuY3Rpb24odCl7cmV0dXJuIGxWdC5sb29rQXQodCksbFZ0LnVwZGF0ZU1hdHJpeCgpLHRoaXMuYXBwbHlNYXRyaXg0KGxWdC5tYXRyaXgpLHRoaXN9LGNlbnRlcjpmdW5jdGlvbigpe3JldHVybiB0aGlzLmNvbXB1dGVCb3VuZGluZ0JveCgpLHRoaXMuYm91bmRpbmdCb3guZ2V0Q2VudGVyKGNWdCkubmVnYXRlKCksdGhpcy50cmFuc2xhdGUoY1Z0LngsY1Z0LnksY1Z0LnopLHRoaXN9LHNldEZyb21Qb2ludHM6ZnVuY3Rpb24odCl7Y29uc3QgZT1bXTtmb3IobGV0IG49MCxpPXQubGVuZ3RoO248aTtuKyspe2NvbnN0IGk9dFtuXTtlLnB1c2goaS54LGkueSxpLnp8fDApfXJldHVybiB0aGlzLnNldEF0dHJpYnV0ZSgicG9zaXRpb24iLG5ldyBlVnQoZSwzKSksdGhpc30sY29tcHV0ZUJvdW5kaW5nQm94OmZ1bmN0aW9uKCl7bnVsbD09PXRoaXMuYm91bmRpbmdCb3gmJih0aGlzLmJvdW5kaW5nQm94PW5ldyB4SHQpO2NvbnN0IHQ9dGhpcy5hdHRyaWJ1dGVzLnBvc2l0aW9uLGU9dGhpcy5tb3JwaEF0dHJpYnV0ZXMucG9zaXRpb247aWYodCYmdC5pc0dMQnVmZmVyQXR0cmlidXRlKXJldHVybiBjb25zb2xlLmVycm9yKCdUSFJFRS5CdWZmZXJHZW9tZXRyeS5jb21wdXRlQm91bmRpbmdCb3goKTogR0xCdWZmZXJBdHRyaWJ1dGUgcmVxdWlyZXMgYSBtYW51YWwgYm91bmRpbmcgYm94LiBBbHRlcm5hdGl2ZWx5IHNldCAibWVzaC5mcnVzdHVtQ3VsbGVkIiB0byAiZmFsc2UiLicsdGhpcyksdm9pZCB0aGlzLmJvdW5kaW5nQm94LnNldChuZXcgeUh0KC0xLzAsLTEvMCwtMS8wKSxuZXcgeUh0KDEvMCwxLzAsMS8wKSk7aWYodm9pZCAwIT09dCl7aWYodGhpcy5ib3VuZGluZ0JveC5zZXRGcm9tQnVmZmVyQXR0cmlidXRlKHQpLGUpZm9yKGxldCB0PTAsbj1lLmxlbmd0aDt0PG47dCsrKXVWdC5zZXRGcm9tQnVmZmVyQXR0cmlidXRlKGVbdF0pLHRoaXMubW9ycGhUYXJnZXRzUmVsYXRpdmU/KGRWdC5hZGRWZWN0b3JzKHRoaXMuYm91bmRpbmdCb3gubWluLHVWdC5taW4pLHRoaXMuYm91bmRpbmdCb3guZXhwYW5kQnlQb2ludChkVnQpLGRWdC5hZGRWZWN0b3JzKHRoaXMuYm91bmRpbmdCb3gubWF4LHVWdC5tYXgpLHRoaXMuYm91bmRpbmdCb3guZXhwYW5kQnlQb2ludChkVnQpKToodGhpcy5ib3VuZGluZ0JveC5leHBhbmRCeVBvaW50KHVWdC5taW4pLHRoaXMuYm91bmRpbmdCb3guZXhwYW5kQnlQb2ludCh1VnQubWF4KSl9ZWxzZSB0aGlzLmJvdW5kaW5nQm94Lm1ha2VFbXB0eSgpOyhpc05hTih0aGlzLmJvdW5kaW5nQm94Lm1pbi54KXx8aXNOYU4odGhpcy5ib3VuZGluZ0JveC5taW4ueSl8fGlzTmFOKHRoaXMuYm91bmRpbmdCb3gubWluLnopKSYmY29uc29sZS5lcnJvcignVEhSRUUuQnVmZmVyR2VvbWV0cnkuY29tcHV0ZUJvdW5kaW5nQm94KCk6IENvbXB1dGVkIG1pbi9tYXggaGF2ZSBOYU4gdmFsdWVzLiBUaGUgInBvc2l0aW9uIiBhdHRyaWJ1dGUgaXMgbGlrZWx5IHRvIGhhdmUgTmFOIHZhbHVlcy4nLHRoaXMpfSxjb21wdXRlQm91bmRpbmdTcGhlcmU6ZnVuY3Rpb24oKXtudWxsPT09dGhpcy5ib3VuZGluZ1NwaGVyZSYmKHRoaXMuYm91bmRpbmdTcGhlcmU9bmV3IERIdCk7Y29uc3QgdD10aGlzLmF0dHJpYnV0ZXMucG9zaXRpb24sZT10aGlzLm1vcnBoQXR0cmlidXRlcy5wb3NpdGlvbjtpZih0JiZ0LmlzR0xCdWZmZXJBdHRyaWJ1dGUpcmV0dXJuIGNvbnNvbGUuZXJyb3IoJ1RIUkVFLkJ1ZmZlckdlb21ldHJ5LmNvbXB1dGVCb3VuZGluZ1NwaGVyZSgpOiBHTEJ1ZmZlckF0dHJpYnV0ZSByZXF1aXJlcyBhIG1hbnVhbCBib3VuZGluZyBzcGhlcmUuIEFsdGVybmF0aXZlbHkgc2V0ICJtZXNoLmZydXN0dW1DdWxsZWQiIHRvICJmYWxzZSIuJyx0aGlzKSx2b2lkIHRoaXMuYm91bmRpbmdTcGhlcmUuc2V0KG5ldyB5SHQsMS8wKTtpZih0KXtjb25zdCBuPXRoaXMuYm91bmRpbmdTcGhlcmUuY2VudGVyO2lmKHVWdC5zZXRGcm9tQnVmZmVyQXR0cmlidXRlKHQpLGUpZm9yKGxldCB0PTAsbj1lLmxlbmd0aDt0PG47dCsrKWhWdC5zZXRGcm9tQnVmZmVyQXR0cmlidXRlKGVbdF0pLHRoaXMubW9ycGhUYXJnZXRzUmVsYXRpdmU/KGRWdC5hZGRWZWN0b3JzKHVWdC5taW4saFZ0Lm1pbiksdVZ0LmV4cGFuZEJ5UG9pbnQoZFZ0KSxkVnQuYWRkVmVjdG9ycyh1VnQubWF4LGhWdC5tYXgpLHVWdC5leHBhbmRCeVBvaW50KGRWdCkpOih1VnQuZXhwYW5kQnlQb2ludChoVnQubWluKSx1VnQuZXhwYW5kQnlQb2ludChoVnQubWF4KSk7dVZ0LmdldENlbnRlcihuKTtsZXQgaT0wO2ZvcihsZXQgZT0wLHI9dC5jb3VudDtlPHI7ZSsrKWRWdC5mcm9tQnVmZmVyQXR0cmlidXRlKHQsZSksaT1NYXRoLm1heChpLG4uZGlzdGFuY2VUb1NxdWFyZWQoZFZ0KSk7aWYoZSlmb3IobGV0IHI9MCxvPWUubGVuZ3RoO3I8bztyKyspe2NvbnN0IG89ZVtyXSxhPXRoaXMubW9ycGhUYXJnZXRzUmVsYXRpdmU7Zm9yKGxldCBlPTAscj1vLmNvdW50O2U8cjtlKyspZFZ0LmZyb21CdWZmZXJBdHRyaWJ1dGUobyxlKSxhJiYoY1Z0LmZyb21CdWZmZXJBdHRyaWJ1dGUodCxlKSxkVnQuYWRkKGNWdCkpLGk9TWF0aC5tYXgoaSxuLmRpc3RhbmNlVG9TcXVhcmVkKGRWdCkpfXRoaXMuYm91bmRpbmdTcGhlcmUucmFkaXVzPU1hdGguc3FydChpKSxpc05hTih0aGlzLmJvdW5kaW5nU3BoZXJlLnJhZGl1cykmJmNvbnNvbGUuZXJyb3IoJ1RIUkVFLkJ1ZmZlckdlb21ldHJ5LmNvbXB1dGVCb3VuZGluZ1NwaGVyZSgpOiBDb21wdXRlZCByYWRpdXMgaXMgTmFOLiBUaGUgInBvc2l0aW9uIiBhdHRyaWJ1dGUgaXMgbGlrZWx5IHRvIGhhdmUgTmFOIHZhbHVlcy4nLHRoaXMpfX0sY29tcHV0ZUZhY2VOb3JtYWxzOmZ1bmN0aW9uKCl7fSxjb21wdXRlVGFuZ2VudHM6ZnVuY3Rpb24oKXtjb25zdCB0PXRoaXMuaW5kZXgsZT10aGlzLmF0dHJpYnV0ZXM7aWYobnVsbD09PXR8fHZvaWQgMD09PWUucG9zaXRpb258fHZvaWQgMD09PWUubm9ybWFsfHx2b2lkIDA9PT1lLnV2KXJldHVybiB2b2lkIGNvbnNvbGUuZXJyb3IoIlRIUkVFLkJ1ZmZlckdlb21ldHJ5OiAuY29tcHV0ZVRhbmdlbnRzKCkgZmFpbGVkLiBNaXNzaW5nIHJlcXVpcmVkIGF0dHJpYnV0ZXMgKGluZGV4LCBwb3NpdGlvbiwgbm9ybWFsIG9yIHV2KSIpO2NvbnN0IG49dC5hcnJheSxpPWUucG9zaXRpb24uYXJyYXkscj1lLm5vcm1hbC5hcnJheSxvPWUudXYuYXJyYXksYT1pLmxlbmd0aC8zO3ZvaWQgMD09PWUudGFuZ2VudCYmdGhpcy5zZXRBdHRyaWJ1dGUoInRhbmdlbnQiLG5ldyBxRnQobmV3IEZsb2F0MzJBcnJheSg0KmEpLDQpKTtjb25zdCBzPWUudGFuZ2VudC5hcnJheSxsPVtdLGM9W107Zm9yKGxldCB0PTA7dDxhO3QrKylsW3RdPW5ldyB5SHQsY1t0XT1uZXcgeUh0O2NvbnN0IHU9bmV3IHlIdCxoPW5ldyB5SHQsZD1uZXcgeUh0LHA9bmV3IGxIdCxmPW5ldyBsSHQsbT1uZXcgbEh0LGc9bmV3IHlIdCxfPW5ldyB5SHQ7ZnVuY3Rpb24geSh0LGUsbil7dS5mcm9tQXJyYXkoaSwzKnQpLGguZnJvbUFycmF5KGksMyplKSxkLmZyb21BcnJheShpLDMqbikscC5mcm9tQXJyYXkobywyKnQpLGYuZnJvbUFycmF5KG8sMiplKSxtLmZyb21BcnJheShvLDIqbiksaC5zdWIodSksZC5zdWIodSksZi5zdWIocCksbS5zdWIocCk7Y29uc3Qgcj0xLyhmLngqbS55LW0ueCpmLnkpO2lzRmluaXRlKHIpJiYoZy5jb3B5KGgpLm11bHRpcGx5U2NhbGFyKG0ueSkuYWRkU2NhbGVkVmVjdG9yKGQsLWYueSkubXVsdGlwbHlTY2FsYXIociksXy5jb3B5KGQpLm11bHRpcGx5U2NhbGFyKGYueCkuYWRkU2NhbGVkVmVjdG9yKGgsLW0ueCkubXVsdGlwbHlTY2FsYXIociksbFt0XS5hZGQoZyksbFtlXS5hZGQoZyksbFtuXS5hZGQoZyksY1t0XS5hZGQoXyksY1tlXS5hZGQoXyksY1tuXS5hZGQoXykpfWxldCB2PXRoaXMuZ3JvdXBzOzA9PT12Lmxlbmd0aCYmKHY9W3tzdGFydDowLGNvdW50Om4ubGVuZ3RofV0pO2ZvcihsZXQgdD0wLGU9di5sZW5ndGg7dDxlOysrdCl7Y29uc3QgZT12W3RdLGk9ZS5zdGFydDtmb3IobGV0IHQ9aSxyPWkrZS5jb3VudDt0PHI7dCs9Myl5KG5bdCswXSxuW3QrMV0sblt0KzJdKX1jb25zdCBiPW5ldyB5SHQseD1uZXcgeUh0LHc9bmV3IHlIdCxTPW5ldyB5SHQ7ZnVuY3Rpb24gTSh0KXt3LmZyb21BcnJheShyLDMqdCksUy5jb3B5KHcpO2NvbnN0IGU9bFt0XTtiLmNvcHkoZSksYi5zdWIody5tdWx0aXBseVNjYWxhcih3LmRvdChlKSkpLm5vcm1hbGl6ZSgpLHguY3Jvc3NWZWN0b3JzKFMsZSk7Y29uc3Qgbj14LmRvdChjW3RdKTwwPy0xOjE7c1s0KnRdPWIueCxzWzQqdCsxXT1iLnksc1s0KnQrMl09Yi56LHNbNCp0KzNdPW59Zm9yKGxldCB0PTAsZT12Lmxlbmd0aDt0PGU7Kyt0KXtjb25zdCBlPXZbdF0saT1lLnN0YXJ0O2ZvcihsZXQgdD1pLHI9aStlLmNvdW50O3Q8cjt0Kz0zKU0oblt0KzBdKSxNKG5bdCsxXSksTShuW3QrMl0pfX0sY29tcHV0ZVZlcnRleE5vcm1hbHM6ZnVuY3Rpb24oKXtjb25zdCB0PXRoaXMuaW5kZXgsZT10aGlzLmdldEF0dHJpYnV0ZSgicG9zaXRpb24iKTtpZih2b2lkIDAhPT1lKXtsZXQgbj10aGlzLmdldEF0dHJpYnV0ZSgibm9ybWFsIik7aWYodm9pZCAwPT09biluPW5ldyBxRnQobmV3IEZsb2F0MzJBcnJheSgzKmUuY291bnQpLDMpLHRoaXMuc2V0QXR0cmlidXRlKCJub3JtYWwiLG4pO2Vsc2UgZm9yKGxldCB0PTAsZT1uLmNvdW50O3Q8ZTt0Kyspbi5zZXRYWVoodCwwLDAsMCk7Y29uc3QgaT1uZXcgeUh0LHI9bmV3IHlIdCxvPW5ldyB5SHQsYT1uZXcgeUh0LHM9bmV3IHlIdCxsPW5ldyB5SHQsYz1uZXcgeUh0LHU9bmV3IHlIdDtpZih0KWZvcihsZXQgaD0wLGQ9dC5jb3VudDtoPGQ7aCs9Myl7Y29uc3QgZD10LmdldFgoaCswKSxwPXQuZ2V0WChoKzEpLGY9dC5nZXRYKGgrMik7aS5mcm9tQnVmZmVyQXR0cmlidXRlKGUsZCksci5mcm9tQnVmZmVyQXR0cmlidXRlKGUscCksby5mcm9tQnVmZmVyQXR0cmlidXRlKGUsZiksYy5zdWJWZWN0b3JzKG8sciksdS5zdWJWZWN0b3JzKGksciksYy5jcm9zcyh1KSxhLmZyb21CdWZmZXJBdHRyaWJ1dGUobixkKSxzLmZyb21CdWZmZXJBdHRyaWJ1dGUobixwKSxsLmZyb21CdWZmZXJBdHRyaWJ1dGUobixmKSxhLmFkZChjKSxzLmFkZChjKSxsLmFkZChjKSxuLnNldFhZWihkLGEueCxhLnksYS56KSxuLnNldFhZWihwLHMueCxzLnkscy56KSxuLnNldFhZWihmLGwueCxsLnksbC56KX1lbHNlIGZvcihsZXQgdD0wLGE9ZS5jb3VudDt0PGE7dCs9MylpLmZyb21CdWZmZXJBdHRyaWJ1dGUoZSx0KzApLHIuZnJvbUJ1ZmZlckF0dHJpYnV0ZShlLHQrMSksby5mcm9tQnVmZmVyQXR0cmlidXRlKGUsdCsyKSxjLnN1YlZlY3RvcnMobyxyKSx1LnN1YlZlY3RvcnMoaSxyKSxjLmNyb3NzKHUpLG4uc2V0WFlaKHQrMCxjLngsYy55LGMueiksbi5zZXRYWVoodCsxLGMueCxjLnksYy56KSxuLnNldFhZWih0KzIsYy54LGMueSxjLnopO3RoaXMubm9ybWFsaXplTm9ybWFscygpLG4ubmVlZHNVcGRhdGU9ITB9fSxtZXJnZTpmdW5jdGlvbih0LGUpe2lmKCF0fHwhdC5pc0J1ZmZlckdlb21ldHJ5KXJldHVybiB2b2lkIGNvbnNvbGUuZXJyb3IoIlRIUkVFLkJ1ZmZlckdlb21ldHJ5Lm1lcmdlKCk6IGdlb21ldHJ5IG5vdCBhbiBpbnN0YW5jZSBvZiBUSFJFRS5CdWZmZXJHZW9tZXRyeS4iLHQpO3ZvaWQgMD09PWUmJihlPTAsY29uc29sZS53YXJuKCJUSFJFRS5CdWZmZXJHZW9tZXRyeS5tZXJnZSgpOiBPdmVyd3JpdGluZyBvcmlnaW5hbCBnZW9tZXRyeSwgc3RhcnRpbmcgYXQgb2Zmc2V0PTAuIFVzZSBCdWZmZXJHZW9tZXRyeVV0aWxzLm1lcmdlQnVmZmVyR2VvbWV0cmllcygpIGZvciBsb3NzbGVzcyBtZXJnZS4iKSk7Y29uc3Qgbj10aGlzLmF0dHJpYnV0ZXM7Zm9yKGNvbnN0IGkgaW4gbil7aWYodm9pZCAwPT09dC5hdHRyaWJ1dGVzW2ldKWNvbnRpbnVlO2NvbnN0IHI9bltpXS5hcnJheSxvPXQuYXR0cmlidXRlc1tpXSxhPW8uYXJyYXkscz1vLml0ZW1TaXplKmUsbD1NYXRoLm1pbihhLmxlbmd0aCxyLmxlbmd0aC1zKTtmb3IobGV0IHQ9MCxlPXM7dDxsO3QrKyxlKyspcltlXT1hW3RdfXJldHVybiB0aGlzfSxub3JtYWxpemVOb3JtYWxzOmZ1bmN0aW9uKCl7Y29uc3QgdD10aGlzLmF0dHJpYnV0ZXMubm9ybWFsO2ZvcihsZXQgZT0wLG49dC5jb3VudDtlPG47ZSsrKWRWdC5mcm9tQnVmZmVyQXR0cmlidXRlKHQsZSksZFZ0Lm5vcm1hbGl6ZSgpLHQuc2V0WFlaKGUsZFZ0LngsZFZ0LnksZFZ0LnopfSx0b05vbkluZGV4ZWQ6ZnVuY3Rpb24oKXtmdW5jdGlvbiB0KHQsZSl7Y29uc3Qgbj10LmFycmF5LGk9dC5pdGVtU2l6ZSxyPXQubm9ybWFsaXplZCxvPW5ldyBuLmNvbnN0cnVjdG9yKGUubGVuZ3RoKmkpO2xldCBhPTAscz0wO2ZvcihsZXQgdD0wLHI9ZS5sZW5ndGg7dDxyO3QrKyl7YT1lW3RdKmk7Zm9yKGxldCB0PTA7dDxpO3QrKylvW3MrK109blthKytdfXJldHVybiBuZXcgcUZ0KG8saSxyKX1pZihudWxsPT09dGhpcy5pbmRleClyZXR1cm4gY29uc29sZS53YXJuKCJUSFJFRS5CdWZmZXJHZW9tZXRyeS50b05vbkluZGV4ZWQoKTogQnVmZmVyR2VvbWV0cnkgaXMgYWxyZWFkeSBub24taW5kZXhlZC4iKSx0aGlzO2NvbnN0IGU9bmV3IHBWdCxuPXRoaXMuaW5kZXguYXJyYXksaT10aGlzLmF0dHJpYnV0ZXM7Zm9yKGNvbnN0IHIgaW4gaSl7Y29uc3Qgbz10KGlbcl0sbik7ZS5zZXRBdHRyaWJ1dGUocixvKX1jb25zdCByPXRoaXMubW9ycGhBdHRyaWJ1dGVzO2Zvcihjb25zdCBpIGluIHIpe2NvbnN0IG89W10sYT1yW2ldO2ZvcihsZXQgZT0wLGk9YS5sZW5ndGg7ZTxpO2UrKyl7Y29uc3QgaT10KGFbZV0sbik7by5wdXNoKGkpfWUubW9ycGhBdHRyaWJ1dGVzW2ldPW99ZS5tb3JwaFRhcmdldHNSZWxhdGl2ZT10aGlzLm1vcnBoVGFyZ2V0c1JlbGF0aXZlO2NvbnN0IG89dGhpcy5ncm91cHM7Zm9yKGxldCB0PTAsbj1vLmxlbmd0aDt0PG47dCsrKXtjb25zdCBuPW9bdF07ZS5hZGRHcm91cChuLnN0YXJ0LG4uY291bnQsbi5tYXRlcmlhbEluZGV4KX1yZXR1cm4gZX0sdG9KU09OOmZ1bmN0aW9uKCl7Y29uc3QgdD17bWV0YWRhdGE6e3ZlcnNpb246NC41LHR5cGU6IkJ1ZmZlckdlb21ldHJ5IixnZW5lcmF0b3I6IkJ1ZmZlckdlb21ldHJ5LnRvSlNPTiJ9fTtpZih0LnV1aWQ9dGhpcy51dWlkLHQudHlwZT10aGlzLnR5cGUsIiIhPT10aGlzLm5hbWUmJih0Lm5hbWU9dGhpcy5uYW1lKSxPYmplY3Qua2V5cyh0aGlzLnVzZXJEYXRhKS5sZW5ndGg+MCYmKHQudXNlckRhdGE9dGhpcy51c2VyRGF0YSksdm9pZCAwIT09dGhpcy5wYXJhbWV0ZXJzKXtjb25zdCBlPXRoaXMucGFyYW1ldGVycztmb3IoY29uc3QgbiBpbiBlKXZvaWQgMCE9PWVbbl0mJih0W25dPWVbbl0pO3JldHVybiB0fXQuZGF0YT17YXR0cmlidXRlczp7fX07Y29uc3QgZT10aGlzLmluZGV4O251bGwhPT1lJiYodC5kYXRhLmluZGV4PXt0eXBlOmUuYXJyYXkuY29uc3RydWN0b3IubmFtZSxhcnJheTpBcnJheS5wcm90b3R5cGUuc2xpY2UuY2FsbChlLmFycmF5KX0pO2NvbnN0IG49dGhpcy5hdHRyaWJ1dGVzO2Zvcihjb25zdCBlIGluIG4pe2NvbnN0IGk9bltlXSxyPWkudG9KU09OKHQuZGF0YSk7IiIhPT1pLm5hbWUmJihyLm5hbWU9aS5uYW1lKSx0LmRhdGEuYXR0cmlidXRlc1tlXT1yfWNvbnN0IGk9e307bGV0IHI9ITE7Zm9yKGNvbnN0IGUgaW4gdGhpcy5tb3JwaEF0dHJpYnV0ZXMpe2NvbnN0IG49dGhpcy5tb3JwaEF0dHJpYnV0ZXNbZV0sbz1bXTtmb3IobGV0IGU9MCxpPW4ubGVuZ3RoO2U8aTtlKyspe2NvbnN0IGk9bltlXSxyPWkudG9KU09OKHQuZGF0YSk7IiIhPT1pLm5hbWUmJihyLm5hbWU9aS5uYW1lKSxvLnB1c2gocil9by5sZW5ndGg+MCYmKGlbZV09byxyPSEwKX1yJiYodC5kYXRhLm1vcnBoQXR0cmlidXRlcz1pLHQuZGF0YS5tb3JwaFRhcmdldHNSZWxhdGl2ZT10aGlzLm1vcnBoVGFyZ2V0c1JlbGF0aXZlKTtjb25zdCBvPXRoaXMuZ3JvdXBzO28ubGVuZ3RoPjAmJih0LmRhdGEuZ3JvdXBzPUpTT04ucGFyc2UoSlNPTi5zdHJpbmdpZnkobykpKTtjb25zdCBhPXRoaXMuYm91bmRpbmdTcGhlcmU7cmV0dXJuIG51bGwhPT1hJiYodC5kYXRhLmJvdW5kaW5nU3BoZXJlPXtjZW50ZXI6YS5jZW50ZXIudG9BcnJheSgpLHJhZGl1czphLnJhZGl1c30pLHR9LGNsb25lOmZ1bmN0aW9uKCl7cmV0dXJuKG5ldyBwVnQpLmNvcHkodGhpcyl9LGNvcHk6ZnVuY3Rpb24odCl7dGhpcy5pbmRleD1udWxsLHRoaXMuYXR0cmlidXRlcz17fSx0aGlzLm1vcnBoQXR0cmlidXRlcz17fSx0aGlzLmdyb3Vwcz1bXSx0aGlzLmJvdW5kaW5nQm94PW51bGwsdGhpcy5ib3VuZGluZ1NwaGVyZT1udWxsO2NvbnN0IGU9e307dGhpcy5uYW1lPXQubmFtZTtjb25zdCBuPXQuaW5kZXg7bnVsbCE9PW4mJnRoaXMuc2V0SW5kZXgobi5jbG9uZShlKSk7Y29uc3QgaT10LmF0dHJpYnV0ZXM7Zm9yKGNvbnN0IHQgaW4gaSl0aGlzLnNldEF0dHJpYnV0ZSh0LGlbdF0uY2xvbmUoZSkpO2NvbnN0IHI9dC5tb3JwaEF0dHJpYnV0ZXM7Zm9yKGNvbnN0IHQgaW4gcil7Y29uc3Qgbj1bXSxpPXJbdF07Zm9yKGxldCB0PTAscj1pLmxlbmd0aDt0PHI7dCsrKW4ucHVzaChpW3RdLmNsb25lKGUpKTt0aGlzLm1vcnBoQXR0cmlidXRlc1t0XT1ufXRoaXMubW9ycGhUYXJnZXRzUmVsYXRpdmU9dC5tb3JwaFRhcmdldHNSZWxhdGl2ZTtjb25zdCBvPXQuZ3JvdXBzO2ZvcihsZXQgdD0wLGU9by5sZW5ndGg7dDxlO3QrKyl7Y29uc3QgZT1vW3RdO3RoaXMuYWRkR3JvdXAoZS5zdGFydCxlLmNvdW50LGUubWF0ZXJpYWxJbmRleCl9Y29uc3QgYT10LmJvdW5kaW5nQm94O251bGwhPT1hJiYodGhpcy5ib3VuZGluZ0JveD1hLmNsb25lKCkpO2NvbnN0IHM9dC5ib3VuZGluZ1NwaGVyZTtyZXR1cm4gbnVsbCE9PXMmJih0aGlzLmJvdW5kaW5nU3BoZXJlPXMuY2xvbmUoKSksdGhpcy5kcmF3UmFuZ2Uuc3RhcnQ9dC5kcmF3UmFuZ2Uuc3RhcnQsdGhpcy5kcmF3UmFuZ2UuY291bnQ9dC5kcmF3UmFuZ2UuY291bnQsdGhpcy51c2VyRGF0YT10LnVzZXJEYXRhLHRoaXN9LGRpc3Bvc2U6ZnVuY3Rpb24oKXt0aGlzLmRpc3BhdGNoRXZlbnQoe3R5cGU6ImRpc3Bvc2UifSl9fSk7Y29uc3QgZlZ0PW5ldyBxSHQsbVZ0PW5ldyBXSHQsZ1Z0PW5ldyBESHQsX1Z0PW5ldyB5SHQseVZ0PW5ldyB5SHQsdlZ0PW5ldyB5SHQsYlZ0PW5ldyB5SHQseFZ0PW5ldyB5SHQsd1Z0PW5ldyB5SHQsU1Z0PW5ldyB5SHQsTVZ0PW5ldyB5SHQsRVZ0PW5ldyB5SHQsVFZ0PW5ldyBsSHQsQVZ0PW5ldyBsSHQsQ1Z0PW5ldyBsSHQsa1Z0PW5ldyB5SHQsTFZ0PW5ldyB5SHQ7ZnVuY3Rpb24gUFZ0KHQ9bmV3IHBWdCxlPW5ldyBVRnQpe19GdC5jYWxsKHRoaXMpLHRoaXMudHlwZT0iTWVzaCIsdGhpcy5nZW9tZXRyeT10LHRoaXMubWF0ZXJpYWw9ZSx0aGlzLnVwZGF0ZU1vcnBoVGFyZ2V0cygpfWZ1bmN0aW9uIElWdCh0LGUsbixpLHIsbyxhLHMsbCxjLHUsaCl7X1Z0LmZyb21CdWZmZXJBdHRyaWJ1dGUocixjKSx5VnQuZnJvbUJ1ZmZlckF0dHJpYnV0ZShyLHUpLHZWdC5mcm9tQnVmZmVyQXR0cmlidXRlKHIsaCk7Y29uc3QgZD10Lm1vcnBoVGFyZ2V0SW5mbHVlbmNlcztpZihlLm1vcnBoVGFyZ2V0cyYmbyYmZCl7U1Z0LnNldCgwLDAsMCksTVZ0LnNldCgwLDAsMCksRVZ0LnNldCgwLDAsMCk7Zm9yKGxldCB0PTAsZT1vLmxlbmd0aDt0PGU7dCsrKXtjb25zdCBlPWRbdF0sbj1vW3RdOzAhPT1lJiYoYlZ0LmZyb21CdWZmZXJBdHRyaWJ1dGUobixjKSx4VnQuZnJvbUJ1ZmZlckF0dHJpYnV0ZShuLHUpLHdWdC5mcm9tQnVmZmVyQXR0cmlidXRlKG4saCksYT8oU1Z0LmFkZFNjYWxlZFZlY3RvcihiVnQsZSksTVZ0LmFkZFNjYWxlZFZlY3Rvcih4VnQsZSksRVZ0LmFkZFNjYWxlZFZlY3Rvcih3VnQsZSkpOihTVnQuYWRkU2NhbGVkVmVjdG9yKGJWdC5zdWIoX1Z0KSxlKSxNVnQuYWRkU2NhbGVkVmVjdG9yKHhWdC5zdWIoeVZ0KSxlKSxFVnQuYWRkU2NhbGVkVmVjdG9yKHdWdC5zdWIodlZ0KSxlKSkpfV9WdC5hZGQoU1Z0KSx5VnQuYWRkKE1WdCksdlZ0LmFkZChFVnQpfXQuaXNTa2lubmVkTWVzaCYmKHQuYm9uZVRyYW5zZm9ybShjLF9WdCksdC5ib25lVHJhbnNmb3JtKHUseVZ0KSx0LmJvbmVUcmFuc2Zvcm0oaCx2VnQpKTtjb25zdCBwPShmdW5jdGlvbiBmKHQsZSxuLGkscixvLGEscyl7bGV0IGw7aWYobD0xPT09ZS5zaWRlP2kuaW50ZXJzZWN0VHJpYW5nbGUoYSxvLHIsITAscyk6aS5pbnRlcnNlY3RUcmlhbmdsZShyLG8sYSwyIT09ZS5zaWRlLHMpLG51bGw9PT1sKXJldHVybiBudWxsO0xWdC5jb3B5KHMpLExWdC5hcHBseU1hdHJpeDQodC5tYXRyaXhXb3JsZCk7Y29uc3QgYz1uLnJheS5vcmlnaW4uZGlzdGFuY2VUbyhMVnQpO3JldHVybiBjPG4ubmVhcnx8Yz5uLmZhcj9udWxsOntkaXN0YW5jZTpjLHBvaW50OkxWdC5jbG9uZSgpLG9iamVjdDp0fX0pKHQsZSxuLGksX1Z0LHlWdCx2VnQsa1Z0KTtpZihwKXtzJiYoVFZ0LmZyb21CdWZmZXJBdHRyaWJ1dGUocyxjKSxBVnQuZnJvbUJ1ZmZlckF0dHJpYnV0ZShzLHUpLENWdC5mcm9tQnVmZmVyQXR0cmlidXRlKHMsaCkscC51dj1JRnQuZ2V0VVYoa1Z0LF9WdCx5VnQsdlZ0LFRWdCxBVnQsQ1Z0LG5ldyBsSHQpKSxsJiYoVFZ0LmZyb21CdWZmZXJBdHRyaWJ1dGUobCxjKSxBVnQuZnJvbUJ1ZmZlckF0dHJpYnV0ZShsLHUpLENWdC5mcm9tQnVmZmVyQXR0cmlidXRlKGwsaCkscC51djI9SUZ0LmdldFVWKGtWdCxfVnQseVZ0LHZWdCxUVnQsQVZ0LENWdCxuZXcgbEh0KSk7Y29uc3QgdD1uZXcgRkZ0KGMsdSxoKTtJRnQuZ2V0Tm9ybWFsKF9WdCx5VnQsdlZ0LHQubm9ybWFsKSxwLmZhY2U9dH1yZXR1cm4gcH1QVnQucHJvdG90eXBlPU9iamVjdC5hc3NpZ24oT2JqZWN0LmNyZWF0ZShfRnQucHJvdG90eXBlKSx7Y29uc3RydWN0b3I6UFZ0LGlzTWVzaDohMCxjb3B5OmZ1bmN0aW9uKHQpe3JldHVybiBfRnQucHJvdG90eXBlLmNvcHkuY2FsbCh0aGlzLHQpLHZvaWQgMCE9PXQubW9ycGhUYXJnZXRJbmZsdWVuY2VzJiYodGhpcy5tb3JwaFRhcmdldEluZmx1ZW5jZXM9dC5tb3JwaFRhcmdldEluZmx1ZW5jZXMuc2xpY2UoKSksdm9pZCAwIT09dC5tb3JwaFRhcmdldERpY3Rpb25hcnkmJih0aGlzLm1vcnBoVGFyZ2V0RGljdGlvbmFyeT1PYmplY3QuYXNzaWduKHt9LHQubW9ycGhUYXJnZXREaWN0aW9uYXJ5KSksdGhpcy5tYXRlcmlhbD10Lm1hdGVyaWFsLHRoaXMuZ2VvbWV0cnk9dC5nZW9tZXRyeSx0aGlzfSx1cGRhdGVNb3JwaFRhcmdldHM6ZnVuY3Rpb24oKXtjb25zdCB0PXRoaXMuZ2VvbWV0cnk7aWYodC5pc0J1ZmZlckdlb21ldHJ5KXtjb25zdCBlPXQubW9ycGhBdHRyaWJ1dGVzLG49T2JqZWN0LmtleXMoZSk7aWYobi5sZW5ndGg+MCl7Y29uc3QgdD1lW25bMF1dO2lmKHZvaWQgMCE9PXQpe3RoaXMubW9ycGhUYXJnZXRJbmZsdWVuY2VzPVtdLHRoaXMubW9ycGhUYXJnZXREaWN0aW9uYXJ5PXt9O2ZvcihsZXQgZT0wLG49dC5sZW5ndGg7ZTxuO2UrKyl7Y29uc3Qgbj10W2VdLm5hbWV8fFN0cmluZyhlKTt0aGlzLm1vcnBoVGFyZ2V0SW5mbHVlbmNlcy5wdXNoKDApLHRoaXMubW9ycGhUYXJnZXREaWN0aW9uYXJ5W25dPWV9fX19ZWxzZXtjb25zdCBlPXQubW9ycGhUYXJnZXRzO3ZvaWQgMCE9PWUmJmUubGVuZ3RoPjAmJmNvbnNvbGUuZXJyb3IoIlRIUkVFLk1lc2gudXBkYXRlTW9ycGhUYXJnZXRzKCkgbm8gbG9uZ2VyIHN1cHBvcnRzIFRIUkVFLkdlb21ldHJ5LiBVc2UgVEhSRUUuQnVmZmVyR2VvbWV0cnkgaW5zdGVhZC4iKX19LHJheWNhc3Q6ZnVuY3Rpb24odCxlKXtjb25zdCBuPXRoaXMuZ2VvbWV0cnksaT10aGlzLm1hdGVyaWFsLHI9dGhpcy5tYXRyaXhXb3JsZDtpZih2b2lkIDA9PT1pKXJldHVybjtpZihudWxsPT09bi5ib3VuZGluZ1NwaGVyZSYmbi5jb21wdXRlQm91bmRpbmdTcGhlcmUoKSxnVnQuY29weShuLmJvdW5kaW5nU3BoZXJlKSxnVnQuYXBwbHlNYXRyaXg0KHIpLCExPT09dC5yYXkuaW50ZXJzZWN0c1NwaGVyZShnVnQpKXJldHVybjtpZihmVnQuY29weShyKS5pbnZlcnQoKSxtVnQuY29weSh0LnJheSkuYXBwbHlNYXRyaXg0KGZWdCksbnVsbCE9PW4uYm91bmRpbmdCb3gmJiExPT09bVZ0LmludGVyc2VjdHNCb3gobi5ib3VuZGluZ0JveCkpcmV0dXJuO2xldCBvO2lmKG4uaXNCdWZmZXJHZW9tZXRyeSl7Y29uc3Qgcj1uLmluZGV4LGE9bi5hdHRyaWJ1dGVzLnBvc2l0aW9uLHM9bi5tb3JwaEF0dHJpYnV0ZXMucG9zaXRpb24sbD1uLm1vcnBoVGFyZ2V0c1JlbGF0aXZlLGM9bi5hdHRyaWJ1dGVzLnV2LHU9bi5hdHRyaWJ1dGVzLnV2MixoPW4uZ3JvdXBzLGQ9bi5kcmF3UmFuZ2U7aWYobnVsbCE9PXIpaWYoQXJyYXkuaXNBcnJheShpKSlmb3IobGV0IG49MCxwPWgubGVuZ3RoO248cDtuKyspe2NvbnN0IHA9aFtuXSxmPWlbcC5tYXRlcmlhbEluZGV4XTtmb3IobGV0IG49TWF0aC5tYXgocC5zdGFydCxkLnN0YXJ0KSxpPU1hdGgubWluKHAuc3RhcnQrcC5jb3VudCxkLnN0YXJ0K2QuY291bnQpO248aTtuKz0zKXtjb25zdCBpPXIuZ2V0WChuKSxoPXIuZ2V0WChuKzEpLGQ9ci5nZXRYKG4rMik7bz1JVnQodGhpcyxmLHQsbVZ0LGEscyxsLGMsdSxpLGgsZCksbyYmKG8uZmFjZUluZGV4PU1hdGguZmxvb3Iobi8zKSxvLmZhY2UubWF0ZXJpYWxJbmRleD1wLm1hdGVyaWFsSW5kZXgsZS5wdXNoKG8pKX19ZWxzZSBmb3IobGV0IG49TWF0aC5tYXgoMCxkLnN0YXJ0KSxoPU1hdGgubWluKHIuY291bnQsZC5zdGFydCtkLmNvdW50KTtuPGg7bis9Myl7Y29uc3QgaD1yLmdldFgobiksZD1yLmdldFgobisxKSxwPXIuZ2V0WChuKzIpO289SVZ0KHRoaXMsaSx0LG1WdCxhLHMsbCxjLHUsaCxkLHApLG8mJihvLmZhY2VJbmRleD1NYXRoLmZsb29yKG4vMyksZS5wdXNoKG8pKX1lbHNlIGlmKHZvaWQgMCE9PWEpaWYoQXJyYXkuaXNBcnJheShpKSlmb3IobGV0IG49MCxyPWgubGVuZ3RoO248cjtuKyspe2NvbnN0IHI9aFtuXSxwPWlbci5tYXRlcmlhbEluZGV4XTtmb3IobGV0IG49TWF0aC5tYXgoci5zdGFydCxkLnN0YXJ0KSxpPU1hdGgubWluKHIuc3RhcnQrci5jb3VudCxkLnN0YXJ0K2QuY291bnQpO248aTtuKz0zKW89SVZ0KHRoaXMscCx0LG1WdCxhLHMsbCxjLHUsbixuKzEsbisyKSxvJiYoby5mYWNlSW5kZXg9TWF0aC5mbG9vcihuLzMpLG8uZmFjZS5tYXRlcmlhbEluZGV4PXIubWF0ZXJpYWxJbmRleCxlLnB1c2gobykpfWVsc2UgZm9yKGxldCBuPU1hdGgubWF4KDAsZC5zdGFydCkscj1NYXRoLm1pbihhLmNvdW50LGQuc3RhcnQrZC5jb3VudCk7bjxyO24rPTMpbz1JVnQodGhpcyxpLHQsbVZ0LGEscyxsLGMsdSxuLG4rMSxuKzIpLG8mJihvLmZhY2VJbmRleD1NYXRoLmZsb29yKG4vMyksZS5wdXNoKG8pKX1lbHNlIG4uaXNHZW9tZXRyeSYmY29uc29sZS5lcnJvcigiVEhSRUUuTWVzaC5yYXljYXN0KCkgbm8gbG9uZ2VyIHN1cHBvcnRzIFRIUkVFLkdlb21ldHJ5LiBVc2UgVEhSRUUuQnVmZmVyR2VvbWV0cnkgaW5zdGVhZC4iKX19KTtjbGFzcyBOVnQgZXh0ZW5kcyBwVnR7Y29uc3RydWN0b3IodD0xLGU9MSxuPTEsaT0xLHI9MSxvPTEpe3N1cGVyKCksdGhpcy50eXBlPSJCb3hHZW9tZXRyeSIsdGhpcy5wYXJhbWV0ZXJzPXt3aWR0aDp0LGhlaWdodDplLGRlcHRoOm4sd2lkdGhTZWdtZW50czppLGhlaWdodFNlZ21lbnRzOnIsZGVwdGhTZWdtZW50czpvfTtjb25zdCBhPXRoaXM7aT1NYXRoLmZsb29yKGkpLHI9TWF0aC5mbG9vcihyKSxvPU1hdGguZmxvb3Iobyk7Y29uc3Qgcz1bXSxsPVtdLGM9W10sdT1bXTtsZXQgaD0wLGQ9MDtmdW5jdGlvbiBwKHQsZSxuLGkscixvLHAsZixtLGcsXyl7Y29uc3QgeT1vL20sdj1wL2csYj1vLzIseD1wLzIsdz1mLzIsUz1tKzEsTT1nKzE7bGV0IEU9MCxUPTA7Y29uc3QgQT1uZXcgeUh0O2ZvcihsZXQgbz0wO288TTtvKyspe2NvbnN0IGE9byp2LXg7Zm9yKGxldCBzPTA7czxTO3MrKylBW3RdPShzKnktYikqaSxBW2VdPWEqcixBW25dPXcsbC5wdXNoKEEueCxBLnksQS56KSxBW3RdPTAsQVtlXT0wLEFbbl09Zj4wPzE6LTEsYy5wdXNoKEEueCxBLnksQS56KSx1LnB1c2gocy9tKSx1LnB1c2goMS1vL2cpLEUrPTF9Zm9yKGxldCB0PTA7dDxnO3QrKylmb3IobGV0IGU9MDtlPG07ZSsrKXtjb25zdCBuPWgrZStTKih0KzEpLGk9aCsoZSsxKStTKih0KzEpLHI9aCsoZSsxKStTKnQ7cy5wdXNoKGgrZStTKnQsbixyKSxzLnB1c2gobixpLHIpLFQrPTZ9YS5hZGRHcm91cChkLFQsXyksZCs9VCxoKz1FfXAoInoiLCJ5IiwieCIsLTEsLTEsbixlLHQsbyxyLDApLHAoInoiLCJ5IiwieCIsMSwtMSxuLGUsLXQsbyxyLDEpLHAoIngiLCJ6IiwieSIsMSwxLHQsbixlLGksbywyKSxwKCJ4IiwieiIsInkiLDEsLTEsdCxuLC1lLGksbywzKSxwKCJ4IiwieSIsInoiLDEsLTEsdCxlLG4saSxyLDQpLHAoIngiLCJ5IiwieiIsLTEsLTEsdCxlLC1uLGksciw1KSx0aGlzLnNldEluZGV4KHMpLHRoaXMuc2V0QXR0cmlidXRlKCJwb3NpdGlvbiIsbmV3IGVWdChsLDMpKSx0aGlzLnNldEF0dHJpYnV0ZSgibm9ybWFsIixuZXcgZVZ0KGMsMykpLHRoaXMuc2V0QXR0cmlidXRlKCJ1diIsbmV3IGVWdCh1LDIpKX19ZnVuY3Rpb24gT1Z0KHQpe2NvbnN0IGU9e307Zm9yKGNvbnN0IG4gaW4gdCl7ZVtuXT17fTtmb3IoY29uc3QgaSBpbiB0W25dKXtjb25zdCByPXRbbl1baV07ZVtuXVtpXT1yJiYoci5pc0NvbG9yfHxyLmlzTWF0cml4M3x8ci5pc01hdHJpeDR8fHIuaXNWZWN0b3IyfHxyLmlzVmVjdG9yM3x8ci5pc1ZlY3RvcjR8fHIuaXNUZXh0dXJlKT9yLmNsb25lKCk6QXJyYXkuaXNBcnJheShyKT9yLnNsaWNlKCk6cn19cmV0dXJuIGV9ZnVuY3Rpb24gUlZ0KHQpe2NvbnN0IGU9e307Zm9yKGxldCBuPTA7bjx0Lmxlbmd0aDtuKyspe2NvbnN0IGk9T1Z0KHRbbl0pO2Zvcihjb25zdCB0IGluIGkpZVt0XT1pW3RdfXJldHVybiBlfWNvbnN0IHpWdD17Y2xvbmU6T1Z0LG1lcmdlOlJWdH07ZnVuY3Rpb24gRFZ0KHQpe2pGdC5jYWxsKHRoaXMpLHRoaXMudHlwZT0iU2hhZGVyTWF0ZXJpYWwiLHRoaXMuZGVmaW5lcz17fSx0aGlzLnVuaWZvcm1zPXt9LHRoaXMudmVydGV4U2hhZGVyPSJ2b2lkIG1haW4oKSB7XG5cdGdsX1Bvc2l0aW9uID0gcHJvamVjdGlvbk1hdHJpeCAqIG1vZGVsVmlld01hdHJpeCAqIHZlYzQoIHBvc2l0aW9uLCAxLjAgKTtcbn0iLHRoaXMuZnJhZ21lbnRTaGFkZXI9InZvaWQgbWFpbigpIHtcblx0Z2xfRnJhZ0NvbG9yID0gdmVjNCggMS4wLCAwLjAsIDAuMCwgMS4wICk7XG59Iix0aGlzLmxpbmV3aWR0aD0xLHRoaXMud2lyZWZyYW1lPSExLHRoaXMud2lyZWZyYW1lTGluZXdpZHRoPTEsdGhpcy5mb2c9ITEsdGhpcy5saWdodHM9ITEsdGhpcy5jbGlwcGluZz0hMSx0aGlzLnNraW5uaW5nPSExLHRoaXMubW9ycGhUYXJnZXRzPSExLHRoaXMubW9ycGhOb3JtYWxzPSExLHRoaXMuZXh0ZW5zaW9ucz17ZGVyaXZhdGl2ZXM6ITEsZnJhZ0RlcHRoOiExLGRyYXdCdWZmZXJzOiExLHNoYWRlclRleHR1cmVMT0Q6ITF9LHRoaXMuZGVmYXVsdEF0dHJpYnV0ZVZhbHVlcz17Y29sb3I6WzEsMSwxXSx1djpbMCwwXSx1djI6WzAsMF19LHRoaXMuaW5kZXgwQXR0cmlidXRlTmFtZT12b2lkIDAsdGhpcy51bmlmb3Jtc05lZWRVcGRhdGU9ITEsdGhpcy5nbHNsVmVyc2lvbj1udWxsLHZvaWQgMCE9PXQmJih2b2lkIDAhPT10LmF0dHJpYnV0ZXMmJmNvbnNvbGUuZXJyb3IoIlRIUkVFLlNoYWRlck1hdGVyaWFsOiBhdHRyaWJ1dGVzIHNob3VsZCBub3cgYmUgZGVmaW5lZCBpbiBUSFJFRS5CdWZmZXJHZW9tZXRyeSBpbnN0ZWFkLiIpLHRoaXMuc2V0VmFsdWVzKHQpKX1mdW5jdGlvbiBCVnQoKXtfRnQuY2FsbCh0aGlzKSx0aGlzLnR5cGU9IkNhbWVyYSIsdGhpcy5tYXRyaXhXb3JsZEludmVyc2U9bmV3IHFIdCx0aGlzLnByb2plY3Rpb25NYXRyaXg9bmV3IHFIdCx0aGlzLnByb2plY3Rpb25NYXRyaXhJbnZlcnNlPW5ldyBxSHR9ZnVuY3Rpb24gSFZ0KHQ9NTAsZT0xLG49LjEsaT0yZTMpe0JWdC5jYWxsKHRoaXMpLHRoaXMudHlwZT0iUGVyc3BlY3RpdmVDYW1lcmEiLHRoaXMuZm92PXQsdGhpcy56b29tPTEsdGhpcy5uZWFyPW4sdGhpcy5mYXI9aSx0aGlzLmZvY3VzPTEwLHRoaXMuYXNwZWN0PWUsdGhpcy52aWV3PW51bGwsdGhpcy5maWxtR2F1Z2U9MzUsdGhpcy5maWxtT2Zmc2V0PTAsdGhpcy51cGRhdGVQcm9qZWN0aW9uTWF0cml4KCl9KERWdC5wcm90b3R5cGU9T2JqZWN0LmNyZWF0ZShqRnQucHJvdG90eXBlKSkuY29uc3RydWN0b3I9RFZ0LERWdC5wcm90b3R5cGUuaXNTaGFkZXJNYXRlcmlhbD0hMCxEVnQucHJvdG90eXBlLmNvcHk9ZnVuY3Rpb24odCl7cmV0dXJuIGpGdC5wcm90b3R5cGUuY29weS5jYWxsKHRoaXMsdCksdGhpcy5mcmFnbWVudFNoYWRlcj10LmZyYWdtZW50U2hhZGVyLHRoaXMudmVydGV4U2hhZGVyPXQudmVydGV4U2hhZGVyLHRoaXMudW5pZm9ybXM9T1Z0KHQudW5pZm9ybXMpLHRoaXMuZGVmaW5lcz1PYmplY3QuYXNzaWduKHt9LHQuZGVmaW5lcyksdGhpcy53aXJlZnJhbWU9dC53aXJlZnJhbWUsdGhpcy53aXJlZnJhbWVMaW5ld2lkdGg9dC53aXJlZnJhbWVMaW5ld2lkdGgsdGhpcy5saWdodHM9dC5saWdodHMsdGhpcy5jbGlwcGluZz10LmNsaXBwaW5nLHRoaXMuc2tpbm5pbmc9dC5za2lubmluZyx0aGlzLm1vcnBoVGFyZ2V0cz10Lm1vcnBoVGFyZ2V0cyx0aGlzLm1vcnBoTm9ybWFscz10Lm1vcnBoTm9ybWFscyx0aGlzLmV4dGVuc2lvbnM9T2JqZWN0LmFzc2lnbih7fSx0LmV4dGVuc2lvbnMpLHRoaXMuZ2xzbFZlcnNpb249dC5nbHNsVmVyc2lvbix0aGlzfSxEVnQucHJvdG90eXBlLnRvSlNPTj1mdW5jdGlvbih0KXtjb25zdCBlPWpGdC5wcm90b3R5cGUudG9KU09OLmNhbGwodGhpcyx0KTtlLmdsc2xWZXJzaW9uPXRoaXMuZ2xzbFZlcnNpb24sZS51bmlmb3Jtcz17fTtmb3IoY29uc3QgbiBpbiB0aGlzLnVuaWZvcm1zKXtjb25zdCBpPXRoaXMudW5pZm9ybXNbbl0udmFsdWU7ZS51bmlmb3Jtc1tuXT1pJiZpLmlzVGV4dHVyZT97dHlwZToidCIsdmFsdWU6aS50b0pTT04odCkudXVpZH06aSYmaS5pc0NvbG9yP3t0eXBlOiJjIix2YWx1ZTppLmdldEhleCgpfTppJiZpLmlzVmVjdG9yMj97dHlwZToidjIiLHZhbHVlOmkudG9BcnJheSgpfTppJiZpLmlzVmVjdG9yMz97dHlwZToidjMiLHZhbHVlOmkudG9BcnJheSgpfTppJiZpLmlzVmVjdG9yND97dHlwZToidjQiLHZhbHVlOmkudG9BcnJheSgpfTppJiZpLmlzTWF0cml4Mz97dHlwZToibTMiLHZhbHVlOmkudG9BcnJheSgpfTppJiZpLmlzTWF0cml4ND97dHlwZToibTQiLHZhbHVlOmkudG9BcnJheSgpfTp7dmFsdWU6aX19T2JqZWN0LmtleXModGhpcy5kZWZpbmVzKS5sZW5ndGg+MCYmKGUuZGVmaW5lcz10aGlzLmRlZmluZXMpLGUudmVydGV4U2hhZGVyPXRoaXMudmVydGV4U2hhZGVyLGUuZnJhZ21lbnRTaGFkZXI9dGhpcy5mcmFnbWVudFNoYWRlcjtjb25zdCBuPXt9O2Zvcihjb25zdCB0IGluIHRoaXMuZXh0ZW5zaW9ucykhMD09PXRoaXMuZXh0ZW5zaW9uc1t0XSYmKG5bdF09ITApO3JldHVybiBPYmplY3Qua2V5cyhuKS5sZW5ndGg+MCYmKGUuZXh0ZW5zaW9ucz1uKSxlfSxCVnQucHJvdG90eXBlPU9iamVjdC5hc3NpZ24oT2JqZWN0LmNyZWF0ZShfRnQucHJvdG90eXBlKSx7Y29uc3RydWN0b3I6QlZ0LGlzQ2FtZXJhOiEwLGNvcHk6ZnVuY3Rpb24odCxlKXtyZXR1cm4gX0Z0LnByb3RvdHlwZS5jb3B5LmNhbGwodGhpcyx0LGUpLHRoaXMubWF0cml4V29ybGRJbnZlcnNlLmNvcHkodC5tYXRyaXhXb3JsZEludmVyc2UpLHRoaXMucHJvamVjdGlvbk1hdHJpeC5jb3B5KHQucHJvamVjdGlvbk1hdHJpeCksdGhpcy5wcm9qZWN0aW9uTWF0cml4SW52ZXJzZS5jb3B5KHQucHJvamVjdGlvbk1hdHJpeEludmVyc2UpLHRoaXN9LGdldFdvcmxkRGlyZWN0aW9uOmZ1bmN0aW9uKHQpe3ZvaWQgMD09PXQmJihjb25zb2xlLndhcm4oIlRIUkVFLkNhbWVyYTogLmdldFdvcmxkRGlyZWN0aW9uKCkgdGFyZ2V0IGlzIG5vdyByZXF1aXJlZCIpLHQ9bmV3IHlIdCksdGhpcy51cGRhdGVXb3JsZE1hdHJpeCghMCwhMSk7Y29uc3QgZT10aGlzLm1hdHJpeFdvcmxkLmVsZW1lbnRzO3JldHVybiB0LnNldCgtZVs4XSwtZVs5XSwtZVsxMF0pLm5vcm1hbGl6ZSgpfSx1cGRhdGVNYXRyaXhXb3JsZDpmdW5jdGlvbih0KXtfRnQucHJvdG90eXBlLnVwZGF0ZU1hdHJpeFdvcmxkLmNhbGwodGhpcyx0KSx0aGlzLm1hdHJpeFdvcmxkSW52ZXJzZS5jb3B5KHRoaXMubWF0cml4V29ybGQpLmludmVydCgpfSx1cGRhdGVXb3JsZE1hdHJpeDpmdW5jdGlvbih0LGUpe19GdC5wcm90b3R5cGUudXBkYXRlV29ybGRNYXRyaXguY2FsbCh0aGlzLHQsZSksdGhpcy5tYXRyaXhXb3JsZEludmVyc2UuY29weSh0aGlzLm1hdHJpeFdvcmxkKS5pbnZlcnQoKX0sY2xvbmU6ZnVuY3Rpb24oKXtyZXR1cm4obmV3IHRoaXMuY29uc3RydWN0b3IpLmNvcHkodGhpcyl9fSksSFZ0LnByb3RvdHlwZT1PYmplY3QuYXNzaWduKE9iamVjdC5jcmVhdGUoQlZ0LnByb3RvdHlwZSkse2NvbnN0cnVjdG9yOkhWdCxpc1BlcnNwZWN0aXZlQ2FtZXJhOiEwLGNvcHk6ZnVuY3Rpb24odCxlKXtyZXR1cm4gQlZ0LnByb3RvdHlwZS5jb3B5LmNhbGwodGhpcyx0LGUpLHRoaXMuZm92PXQuZm92LHRoaXMuem9vbT10Lnpvb20sdGhpcy5uZWFyPXQubmVhcix0aGlzLmZhcj10LmZhcix0aGlzLmZvY3VzPXQuZm9jdXMsdGhpcy5hc3BlY3Q9dC5hc3BlY3QsdGhpcy52aWV3PW51bGw9PT10LnZpZXc/bnVsbDpPYmplY3QuYXNzaWduKHt9LHQudmlldyksdGhpcy5maWxtR2F1Z2U9dC5maWxtR2F1Z2UsdGhpcy5maWxtT2Zmc2V0PXQuZmlsbU9mZnNldCx0aGlzfSxzZXRGb2NhbExlbmd0aDpmdW5jdGlvbih0KXtjb25zdCBlPS41KnRoaXMuZ2V0RmlsbUhlaWdodCgpL3Q7dGhpcy5mb3Y9MipzSHQuUkFEMkRFRypNYXRoLmF0YW4oZSksdGhpcy51cGRhdGVQcm9qZWN0aW9uTWF0cml4KCl9LGdldEZvY2FsTGVuZ3RoOmZ1bmN0aW9uKCl7Y29uc3QgdD1NYXRoLnRhbiguNSpzSHQuREVHMlJBRCp0aGlzLmZvdik7cmV0dXJuLjUqdGhpcy5nZXRGaWxtSGVpZ2h0KCkvdH0sZ2V0RWZmZWN0aXZlRk9WOmZ1bmN0aW9uKCl7cmV0dXJuIDIqc0h0LlJBRDJERUcqTWF0aC5hdGFuKE1hdGgudGFuKC41KnNIdC5ERUcyUkFEKnRoaXMuZm92KS90aGlzLnpvb20pfSxnZXRGaWxtV2lkdGg6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5maWxtR2F1Z2UqTWF0aC5taW4odGhpcy5hc3BlY3QsMSl9LGdldEZpbG1IZWlnaHQ6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5maWxtR2F1Z2UvTWF0aC5tYXgodGhpcy5hc3BlY3QsMSl9LHNldFZpZXdPZmZzZXQ6ZnVuY3Rpb24odCxlLG4saSxyLG8pe3RoaXMuYXNwZWN0PXQvZSxudWxsPT09dGhpcy52aWV3JiYodGhpcy52aWV3PXtlbmFibGVkOiEwLGZ1bGxXaWR0aDoxLGZ1bGxIZWlnaHQ6MSxvZmZzZXRYOjAsb2Zmc2V0WTowLHdpZHRoOjEsaGVpZ2h0OjF9KSx0aGlzLnZpZXcuZW5hYmxlZD0hMCx0aGlzLnZpZXcuZnVsbFdpZHRoPXQsdGhpcy52aWV3LmZ1bGxIZWlnaHQ9ZSx0aGlzLnZpZXcub2Zmc2V0WD1uLHRoaXMudmlldy5vZmZzZXRZPWksdGhpcy52aWV3LndpZHRoPXIsdGhpcy52aWV3LmhlaWdodD1vLHRoaXMudXBkYXRlUHJvamVjdGlvbk1hdHJpeCgpfSxjbGVhclZpZXdPZmZzZXQ6ZnVuY3Rpb24oKXtudWxsIT09dGhpcy52aWV3JiYodGhpcy52aWV3LmVuYWJsZWQ9ITEpLHRoaXMudXBkYXRlUHJvamVjdGlvbk1hdHJpeCgpfSx1cGRhdGVQcm9qZWN0aW9uTWF0cml4OmZ1bmN0aW9uKCl7Y29uc3QgdD10aGlzLm5lYXI7bGV0IGU9dCpNYXRoLnRhbiguNSpzSHQuREVHMlJBRCp0aGlzLmZvdikvdGhpcy56b29tLG49MiplLGk9dGhpcy5hc3BlY3QqbixyPS0uNSppO2NvbnN0IG89dGhpcy52aWV3O2lmKG51bGwhPT10aGlzLnZpZXcmJnRoaXMudmlldy5lbmFibGVkKXtjb25zdCB0PW8uZnVsbFdpZHRoLGE9by5mdWxsSGVpZ2h0O3IrPW8ub2Zmc2V0WCppL3QsZS09by5vZmZzZXRZKm4vYSxpKj1vLndpZHRoL3Qsbio9by5oZWlnaHQvYX1jb25zdCBhPXRoaXMuZmlsbU9mZnNldDswIT09YSYmKHIrPXQqYS90aGlzLmdldEZpbG1XaWR0aCgpKSx0aGlzLnByb2plY3Rpb25NYXRyaXgubWFrZVBlcnNwZWN0aXZlKHIscitpLGUsZS1uLHQsdGhpcy5mYXIpLHRoaXMucHJvamVjdGlvbk1hdHJpeEludmVyc2UuY29weSh0aGlzLnByb2plY3Rpb25NYXRyaXgpLmludmVydCgpfSx0b0pTT046ZnVuY3Rpb24odCl7Y29uc3QgZT1fRnQucHJvdG90eXBlLnRvSlNPTi5jYWxsKHRoaXMsdCk7cmV0dXJuIGUub2JqZWN0LmZvdj10aGlzLmZvdixlLm9iamVjdC56b29tPXRoaXMuem9vbSxlLm9iamVjdC5uZWFyPXRoaXMubmVhcixlLm9iamVjdC5mYXI9dGhpcy5mYXIsZS5vYmplY3QuZm9jdXM9dGhpcy5mb2N1cyxlLm9iamVjdC5hc3BlY3Q9dGhpcy5hc3BlY3QsbnVsbCE9PXRoaXMudmlldyYmKGUub2JqZWN0LnZpZXc9T2JqZWN0LmFzc2lnbih7fSx0aGlzLnZpZXcpKSxlLm9iamVjdC5maWxtR2F1Z2U9dGhpcy5maWxtR2F1Z2UsZS5vYmplY3QuZmlsbU9mZnNldD10aGlzLmZpbG1PZmZzZXQsZX19KTtjb25zdCBGVnQ9OTA7ZnVuY3Rpb24gVlZ0KHQsZSxuKXtpZihfRnQuY2FsbCh0aGlzKSx0aGlzLnR5cGU9IkN1YmVDYW1lcmEiLCEwIT09bi5pc1dlYkdMQ3ViZVJlbmRlclRhcmdldClyZXR1cm4gdm9pZCBjb25zb2xlLmVycm9yKCJUSFJFRS5DdWJlQ2FtZXJhOiBUaGUgY29uc3RydWN0b3Igbm93IGV4cGVjdHMgYW4gaW5zdGFuY2Ugb2YgV2ViR0xDdWJlUmVuZGVyVGFyZ2V0IGFzIHRoaXJkIHBhcmFtZXRlci4iKTt0aGlzLnJlbmRlclRhcmdldD1uO2NvbnN0IGk9bmV3IEhWdChGVnQsMSx0LGUpO2kubGF5ZXJzPXRoaXMubGF5ZXJzLGkudXAuc2V0KDAsLTEsMCksaS5sb29rQXQobmV3IHlIdCgxLDAsMCkpLHRoaXMuYWRkKGkpO2NvbnN0IHI9bmV3IEhWdChGVnQsMSx0LGUpO3IubGF5ZXJzPXRoaXMubGF5ZXJzLHIudXAuc2V0KDAsLTEsMCksci5sb29rQXQobmV3IHlIdCgtMSwwLDApKSx0aGlzLmFkZChyKTtjb25zdCBvPW5ldyBIVnQoRlZ0LDEsdCxlKTtvLmxheWVycz10aGlzLmxheWVycyxvLnVwLnNldCgwLDAsMSksby5sb29rQXQobmV3IHlIdCgwLDEsMCkpLHRoaXMuYWRkKG8pO2NvbnN0IGE9bmV3IEhWdChGVnQsMSx0LGUpO2EubGF5ZXJzPXRoaXMubGF5ZXJzLGEudXAuc2V0KDAsMCwtMSksYS5sb29rQXQobmV3IHlIdCgwLC0xLDApKSx0aGlzLmFkZChhKTtjb25zdCBzPW5ldyBIVnQoRlZ0LDEsdCxlKTtzLmxheWVycz10aGlzLmxheWVycyxzLnVwLnNldCgwLC0xLDApLHMubG9va0F0KG5ldyB5SHQoMCwwLDEpKSx0aGlzLmFkZChzKTtjb25zdCBsPW5ldyBIVnQoRlZ0LDEsdCxlKTtsLmxheWVycz10aGlzLmxheWVycyxsLnVwLnNldCgwLC0xLDApLGwubG9va0F0KG5ldyB5SHQoMCwwLC0xKSksdGhpcy5hZGQobCksdGhpcy51cGRhdGU9ZnVuY3Rpb24odCxlKXtudWxsPT09dGhpcy5wYXJlbnQmJnRoaXMudXBkYXRlTWF0cml4V29ybGQoKTtjb25zdCBjPXQueHIuZW5hYmxlZCx1PXQuZ2V0UmVuZGVyVGFyZ2V0KCk7dC54ci5lbmFibGVkPSExO2NvbnN0IGg9bi50ZXh0dXJlLmdlbmVyYXRlTWlwbWFwcztuLnRleHR1cmUuZ2VuZXJhdGVNaXBtYXBzPSExLHQuc2V0UmVuZGVyVGFyZ2V0KG4sMCksdC5yZW5kZXIoZSxpKSx0LnNldFJlbmRlclRhcmdldChuLDEpLHQucmVuZGVyKGUsciksdC5zZXRSZW5kZXJUYXJnZXQobiwyKSx0LnJlbmRlcihlLG8pLHQuc2V0UmVuZGVyVGFyZ2V0KG4sMyksdC5yZW5kZXIoZSxhKSx0LnNldFJlbmRlclRhcmdldChuLDQpLHQucmVuZGVyKGUscyksbi50ZXh0dXJlLmdlbmVyYXRlTWlwbWFwcz1oLHQuc2V0UmVuZGVyVGFyZ2V0KG4sNSksdC5yZW5kZXIoZSxsKSx0LnNldFJlbmRlclRhcmdldCh1KSx0LnhyLmVuYWJsZWQ9Y319ZnVuY3Rpb24galZ0KHQsZSxuLGkscixvLGEscyxsLGMpe3BIdC5jYWxsKHRoaXMsdD12b2lkIDAhPT10P3Q6W10sZT12b2lkIDAhPT1lP2U6ckJ0LG4saSxyLG8sYT12b2lkIDAhPT1hP2E6RUJ0LHMsbCxjKSx0aGlzLmZsaXBZPSExLHRoaXMuX25lZWRzRmxpcEVudk1hcD0hMH0oVlZ0LnByb3RvdHlwZT1PYmplY3QuY3JlYXRlKF9GdC5wcm90b3R5cGUpKS5jb25zdHJ1Y3Rvcj1WVnQsKGpWdC5wcm90b3R5cGU9T2JqZWN0LmNyZWF0ZShwSHQucHJvdG90eXBlKSkuY29uc3RydWN0b3I9alZ0LGpWdC5wcm90b3R5cGUuaXNDdWJlVGV4dHVyZT0hMCxPYmplY3QuZGVmaW5lUHJvcGVydHkoalZ0LnByb3RvdHlwZSwiaW1hZ2VzIix7Z2V0OmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuaW1hZ2V9LHNldDpmdW5jdGlvbih0KXt0aGlzLmltYWdlPXR9fSk7Y2xhc3MgVVZ0IGV4dGVuZHMgZ0h0e2NvbnN0cnVjdG9yKHQsZSxuKXtOdW1iZXIuaXNJbnRlZ2VyKGUpJiYoY29uc29sZS53YXJuKCJUSFJFRS5XZWJHTEN1YmVSZW5kZXJUYXJnZXQ6IGNvbnN0cnVjdG9yIHNpZ25hdHVyZSBpcyBub3cgV2ViR0xDdWJlUmVuZGVyVGFyZ2V0KCBzaXplLCBvcHRpb25zICkiKSxlPW4pLHN1cGVyKHQsdCxlKSxPYmplY3QuZGVmaW5lUHJvcGVydHkodGhpcywiaXNXZWJHTEN1YmVSZW5kZXJUYXJnZXQiLHt2YWx1ZTohMH0pLHRoaXMudGV4dHVyZT1uZXcgalZ0KHZvaWQgMCwoZT1lfHx7fSkubWFwcGluZyxlLndyYXBTLGUud3JhcFQsZS5tYWdGaWx0ZXIsZS5taW5GaWx0ZXIsZS5mb3JtYXQsZS50eXBlLGUuYW5pc290cm9weSxlLmVuY29kaW5nKSx0aGlzLnRleHR1cmUuX25lZWRzRmxpcEVudk1hcD0hMX1mcm9tRXF1aXJlY3Rhbmd1bGFyVGV4dHVyZSh0LGUpe3RoaXMudGV4dHVyZS50eXBlPWUudHlwZSx0aGlzLnRleHR1cmUuZm9ybWF0PVRCdCx0aGlzLnRleHR1cmUuZW5jb2Rpbmc9ZS5lbmNvZGluZyx0aGlzLnRleHR1cmUuZ2VuZXJhdGVNaXBtYXBzPWUuZ2VuZXJhdGVNaXBtYXBzLHRoaXMudGV4dHVyZS5taW5GaWx0ZXI9ZS5taW5GaWx0ZXIsdGhpcy50ZXh0dXJlLm1hZ0ZpbHRlcj1lLm1hZ0ZpbHRlcjtjb25zdCBuPW5ldyBOVnQoNSw1LDUpLGk9bmV3IERWdCh7bmFtZToiQ3ViZW1hcEZyb21FcXVpcmVjdCIsdW5pZm9ybXM6T1Z0KHt0RXF1aXJlY3Q6e3ZhbHVlOm51bGx9fSksdmVydGV4U2hhZGVyOiJcblxuXHRcdFx0XHR2YXJ5aW5nIHZlYzMgdldvcmxkRGlyZWN0aW9uO1xuXG5cdFx0XHRcdHZlYzMgdHJhbnNmb3JtRGlyZWN0aW9uKCBpbiB2ZWMzIGRpciwgaW4gbWF0NCBtYXRyaXggKSB7XG5cblx0XHRcdFx0XHRyZXR1cm4gbm9ybWFsaXplKCAoIG1hdHJpeCAqIHZlYzQoIGRpciwgMC4wICkgKS54eXogKTtcblxuXHRcdFx0XHR9XG5cblx0XHRcdFx0dm9pZCBtYWluKCkge1xuXG5cdFx0XHRcdFx0dldvcmxkRGlyZWN0aW9uID0gdHJhbnNmb3JtRGlyZWN0aW9uKCBwb3NpdGlvbiwgbW9kZWxNYXRyaXggKTtcblxuXHRcdFx0XHRcdCNpbmNsdWRlIDxiZWdpbl92ZXJ0ZXg+XG5cdFx0XHRcdFx0I2luY2x1ZGUgPHByb2plY3RfdmVydGV4PlxuXG5cdFx0XHRcdH1cblx0XHRcdCIsZnJhZ21lbnRTaGFkZXI6IlxuXG5cdFx0XHRcdHVuaWZvcm0gc2FtcGxlcjJEIHRFcXVpcmVjdDtcblxuXHRcdFx0XHR2YXJ5aW5nIHZlYzMgdldvcmxkRGlyZWN0aW9uO1xuXG5cdFx0XHRcdCNpbmNsdWRlIDxjb21tb24+XG5cblx0XHRcdFx0dm9pZCBtYWluKCkge1xuXG5cdFx0XHRcdFx0dmVjMyBkaXJlY3Rpb24gPSBub3JtYWxpemUoIHZXb3JsZERpcmVjdGlvbiApO1xuXG5cdFx0XHRcdFx0dmVjMiBzYW1wbGVVViA9IGVxdWlyZWN0VXYoIGRpcmVjdGlvbiApO1xuXG5cdFx0XHRcdFx0Z2xfRnJhZ0NvbG9yID0gdGV4dHVyZTJEKCB0RXF1aXJlY3QsIHNhbXBsZVVWICk7XG5cblx0XHRcdFx0fVxuXHRcdFx0IixzaWRlOjEsYmxlbmRpbmc6MH0pO2kudW5pZm9ybXMudEVxdWlyZWN0LnZhbHVlPWU7Y29uc3Qgcj1uZXcgUFZ0KG4saSksbz1lLm1pbkZpbHRlcjtyZXR1cm4gZS5taW5GaWx0ZXI9PT15QnQmJihlLm1pbkZpbHRlcj1nQnQpLG5ldyBWVnQoMSwxMCx0aGlzKS51cGRhdGUodCxyKSxlLm1pbkZpbHRlcj1vLHIuZ2VvbWV0cnkuZGlzcG9zZSgpLHIubWF0ZXJpYWwuZGlzcG9zZSgpLHRoaXN9Y2xlYXIodCxlLG4saSl7Y29uc3Qgcj10LmdldFJlbmRlclRhcmdldCgpO2ZvcihsZXQgcj0wO3I8NjtyKyspdC5zZXRSZW5kZXJUYXJnZXQodGhpcyxyKSx0LmNsZWFyKGUsbixpKTt0LnNldFJlbmRlclRhcmdldChyKX19ZnVuY3Rpb24gR1Z0KHQsZSxuLGkscixvLGEscyxsLGMsdSxoKXtwSHQuY2FsbCh0aGlzLG51bGwsbyxhLHMsbCxjLGkscix1LGgpLHRoaXMuaW1hZ2U9e2RhdGE6dHx8bnVsbCx3aWR0aDplfHwxLGhlaWdodDpufHwxfSx0aGlzLm1hZ0ZpbHRlcj12b2lkIDAhPT1sP2w6cEJ0LHRoaXMubWluRmlsdGVyPXZvaWQgMCE9PWM/YzpwQnQsdGhpcy5nZW5lcmF0ZU1pcG1hcHM9ITEsdGhpcy5mbGlwWT0hMSx0aGlzLnVucGFja0FsaWdubWVudD0xLHRoaXMubmVlZHNVcGRhdGU9ITB9KEdWdC5wcm90b3R5cGU9T2JqZWN0LmNyZWF0ZShwSHQucHJvdG90eXBlKSkuY29uc3RydWN0b3I9R1Z0LEdWdC5wcm90b3R5cGUuaXNEYXRhVGV4dHVyZT0hMDtjb25zdCBXVnQ9bmV3IERIdCxxVnQ9bmV3IHlIdDtjbGFzcyBZVnR7Y29uc3RydWN0b3IodCxlLG4saSxyLG8pe3RoaXMucGxhbmVzPVt2b2lkIDAhPT10P3Q6bmV3IHhGdCx2b2lkIDAhPT1lP2U6bmV3IHhGdCx2b2lkIDAhPT1uP246bmV3IHhGdCx2b2lkIDAhPT1pP2k6bmV3IHhGdCx2b2lkIDAhPT1yP3I6bmV3IHhGdCx2b2lkIDAhPT1vP286bmV3IHhGdF19c2V0KHQsZSxuLGkscixvKXtjb25zdCBhPXRoaXMucGxhbmVzO3JldHVybiBhWzBdLmNvcHkodCksYVsxXS5jb3B5KGUpLGFbMl0uY29weShuKSxhWzNdLmNvcHkoaSksYVs0XS5jb3B5KHIpLGFbNV0uY29weShvKSx0aGlzfWNsb25lKCl7cmV0dXJuKG5ldyB0aGlzLmNvbnN0cnVjdG9yKS5jb3B5KHRoaXMpfWNvcHkodCl7Y29uc3QgZT10aGlzLnBsYW5lcztmb3IobGV0IG49MDtuPDY7bisrKWVbbl0uY29weSh0LnBsYW5lc1tuXSk7cmV0dXJuIHRoaXN9c2V0RnJvbVByb2plY3Rpb25NYXRyaXgodCl7Y29uc3QgZT10aGlzLnBsYW5lcyxuPXQuZWxlbWVudHMsaT1uWzBdLHI9blsxXSxvPW5bMl0sYT1uWzNdLHM9bls0XSxsPW5bNV0sYz1uWzZdLHU9bls3XSxoPW5bOF0sZD1uWzldLHA9blsxMF0sZj1uWzExXSxtPW5bMTJdLGc9blsxM10sXz1uWzE0XSx5PW5bMTVdO3JldHVybiBlWzBdLnNldENvbXBvbmVudHMoYS1pLHUtcyxmLWgseS1tKS5ub3JtYWxpemUoKSxlWzFdLnNldENvbXBvbmVudHMoYStpLHUrcyxmK2gseSttKS5ub3JtYWxpemUoKSxlWzJdLnNldENvbXBvbmVudHMoYStyLHUrbCxmK2QseStnKS5ub3JtYWxpemUoKSxlWzNdLnNldENvbXBvbmVudHMoYS1yLHUtbCxmLWQseS1nKS5ub3JtYWxpemUoKSxlWzRdLnNldENvbXBvbmVudHMoYS1vLHUtYyxmLXAseS1fKS5ub3JtYWxpemUoKSxlWzVdLnNldENvbXBvbmVudHMoYStvLHUrYyxmK3AseStfKS5ub3JtYWxpemUoKSx0aGlzfWludGVyc2VjdHNPYmplY3QodCl7Y29uc3QgZT10Lmdlb21ldHJ5O3JldHVybiBudWxsPT09ZS5ib3VuZGluZ1NwaGVyZSYmZS5jb21wdXRlQm91bmRpbmdTcGhlcmUoKSxXVnQuY29weShlLmJvdW5kaW5nU3BoZXJlKS5hcHBseU1hdHJpeDQodC5tYXRyaXhXb3JsZCksdGhpcy5pbnRlcnNlY3RzU3BoZXJlKFdWdCl9aW50ZXJzZWN0c1Nwcml0ZSh0KXtyZXR1cm4gV1Z0LmNlbnRlci5zZXQoMCwwLDApLFdWdC5yYWRpdXM9LjcwNzEwNjc4MTE4NjU0NzYsV1Z0LmFwcGx5TWF0cml4NCh0Lm1hdHJpeFdvcmxkKSx0aGlzLmludGVyc2VjdHNTcGhlcmUoV1Z0KX1pbnRlcnNlY3RzU3BoZXJlKHQpe2NvbnN0IGU9dGhpcy5wbGFuZXMsbj10LmNlbnRlcixpPS10LnJhZGl1cztmb3IobGV0IHQ9MDt0PDY7dCsrKWlmKGVbdF0uZGlzdGFuY2VUb1BvaW50KG4pPGkpcmV0dXJuITE7cmV0dXJuITB9aW50ZXJzZWN0c0JveCh0KXtjb25zdCBlPXRoaXMucGxhbmVzO2ZvcihsZXQgbj0wO248NjtuKyspe2NvbnN0IGk9ZVtuXTtpZihxVnQueD1pLm5vcm1hbC54PjA/dC5tYXgueDp0Lm1pbi54LHFWdC55PWkubm9ybWFsLnk+MD90Lm1heC55OnQubWluLnkscVZ0Lno9aS5ub3JtYWwuej4wP3QubWF4Lno6dC5taW4ueixpLmRpc3RhbmNlVG9Qb2ludChxVnQpPDApcmV0dXJuITF9cmV0dXJuITB9Y29udGFpbnNQb2ludCh0KXtjb25zdCBlPXRoaXMucGxhbmVzO2ZvcihsZXQgbj0wO248NjtuKyspaWYoZVtuXS5kaXN0YW5jZVRvUG9pbnQodCk8MClyZXR1cm4hMTtyZXR1cm4hMH19ZnVuY3Rpb24gWFZ0KCl7bGV0IHQ9bnVsbCxlPSExLG49bnVsbCxpPW51bGw7ZnVuY3Rpb24gcihlLG8pe24oZSxvKSxpPXQucmVxdWVzdEFuaW1hdGlvbkZyYW1lKHIpfXJldHVybntzdGFydDpmdW5jdGlvbigpeyEwIT09ZSYmbnVsbCE9PW4mJihpPXQucmVxdWVzdEFuaW1hdGlvbkZyYW1lKHIpLGU9ITApfSxzdG9wOmZ1bmN0aW9uKCl7dC5jYW5jZWxBbmltYXRpb25GcmFtZShpKSxlPSExfSxzZXRBbmltYXRpb25Mb29wOmZ1bmN0aW9uKHQpe249dH0sc2V0Q29udGV4dDpmdW5jdGlvbihlKXt0PWV9fX1mdW5jdGlvbiAkVnQodCxlKXtjb25zdCBuPWUuaXNXZWJHTDIsaT1uZXcgV2Vha01hcDtyZXR1cm57Z2V0OmZ1bmN0aW9uIHIodCl7cmV0dXJuIHQuaXNJbnRlcmxlYXZlZEJ1ZmZlckF0dHJpYnV0ZSYmKHQ9dC5kYXRhKSxpLmdldCh0KX0scmVtb3ZlOmZ1bmN0aW9uIG8oZSl7ZS5pc0ludGVybGVhdmVkQnVmZmVyQXR0cmlidXRlJiYoZT1lLmRhdGEpO2NvbnN0IG49aS5nZXQoZSk7biYmKHQuZGVsZXRlQnVmZmVyKG4uYnVmZmVyKSxpLmRlbGV0ZShlKSl9LHVwZGF0ZTpmdW5jdGlvbiBhKGUscil7aWYoZS5pc0dMQnVmZmVyQXR0cmlidXRlKXtjb25zdCB0PWkuZ2V0KGUpO3JldHVybiB2b2lkKCghdHx8dC52ZXJzaW9uPGUudmVyc2lvbikmJmkuc2V0KGUse2J1ZmZlcjplLmJ1ZmZlcix0eXBlOmUudHlwZSxieXRlc1BlckVsZW1lbnQ6ZS5lbGVtZW50U2l6ZSx2ZXJzaW9uOmUudmVyc2lvbn0pKX1lLmlzSW50ZXJsZWF2ZWRCdWZmZXJBdHRyaWJ1dGUmJihlPWUuZGF0YSk7Y29uc3Qgbz1pLmdldChlKTt2b2lkIDA9PT1vP2kuc2V0KGUsKGZ1bmN0aW9uIGEoZSxpKXtjb25zdCByPWUuYXJyYXksbz1lLnVzYWdlLGE9dC5jcmVhdGVCdWZmZXIoKTt0LmJpbmRCdWZmZXIoaSxhKSx0LmJ1ZmZlckRhdGEoaSxyLG8pLGUub25VcGxvYWRDYWxsYmFjaygpO2xldCBzPTUxMjY7cmV0dXJuIHIgaW5zdGFuY2VvZiBGbG9hdDMyQXJyYXk/cz01MTI2OnIgaW5zdGFuY2VvZiBGbG9hdDY0QXJyYXk/Y29uc29sZS53YXJuKCJUSFJFRS5XZWJHTEF0dHJpYnV0ZXM6IFVuc3VwcG9ydGVkIGRhdGEgYnVmZmVyIGZvcm1hdDogRmxvYXQ2NEFycmF5LiIpOnIgaW5zdGFuY2VvZiBVaW50MTZBcnJheT9lLmlzRmxvYXQxNkJ1ZmZlckF0dHJpYnV0ZT9uP3M9NTEzMTpjb25zb2xlLndhcm4oIlRIUkVFLldlYkdMQXR0cmlidXRlczogVXNhZ2Ugb2YgRmxvYXQxNkJ1ZmZlckF0dHJpYnV0ZSByZXF1aXJlcyBXZWJHTDIuIik6cz01MTIzOnIgaW5zdGFuY2VvZiBJbnQxNkFycmF5P3M9NTEyMjpyIGluc3RhbmNlb2YgVWludDMyQXJyYXk/cz01MTI1OnIgaW5zdGFuY2VvZiBJbnQzMkFycmF5P3M9NTEyNDpyIGluc3RhbmNlb2YgSW50OEFycmF5P3M9NTEyMDpyIGluc3RhbmNlb2YgVWludDhBcnJheSYmKHM9NTEyMSkse2J1ZmZlcjphLHR5cGU6cyxieXRlc1BlckVsZW1lbnQ6ci5CWVRFU19QRVJfRUxFTUVOVCx2ZXJzaW9uOmUudmVyc2lvbn19KShlLHIpKTpvLnZlcnNpb248ZS52ZXJzaW9uJiYoKGZ1bmN0aW9uIHMoZSxpLHIpe2NvbnN0IG89aS5hcnJheSxhPWkudXBkYXRlUmFuZ2U7dC5iaW5kQnVmZmVyKHIsZSksLTE9PT1hLmNvdW50P3QuYnVmZmVyU3ViRGF0YShyLDAsbyk6KG4/dC5idWZmZXJTdWJEYXRhKHIsYS5vZmZzZXQqby5CWVRFU19QRVJfRUxFTUVOVCxvLGEub2Zmc2V0LGEuY291bnQpOnQuYnVmZmVyU3ViRGF0YShyLGEub2Zmc2V0Km8uQllURVNfUEVSX0VMRU1FTlQsby5zdWJhcnJheShhLm9mZnNldCxhLm9mZnNldCthLmNvdW50KSksYS5jb3VudD0tMSl9KShvLmJ1ZmZlcixlLHIpLG8udmVyc2lvbj1lLnZlcnNpb24pfX19Y2xhc3MgS1Z0IGV4dGVuZHMgcFZ0e2NvbnN0cnVjdG9yKHQ9MSxlPTEsbj0xLGk9MSl7c3VwZXIoKSx0aGlzLnR5cGU9IlBsYW5lR2VvbWV0cnkiLHRoaXMucGFyYW1ldGVycz17d2lkdGg6dCxoZWlnaHQ6ZSx3aWR0aFNlZ21lbnRzOm4saGVpZ2h0U2VnbWVudHM6aX07Y29uc3Qgcj10LzIsbz1lLzIsYT1NYXRoLmZsb29yKG4pLHM9TWF0aC5mbG9vcihpKSxsPWErMSxjPXMrMSx1PXQvYSxoPWUvcyxkPVtdLHA9W10sZj1bXSxtPVtdO2ZvcihsZXQgdD0wO3Q8Yzt0Kyspe2NvbnN0IGU9dCpoLW87Zm9yKGxldCBuPTA7bjxsO24rKylwLnB1c2gobip1LXIsLWUsMCksZi5wdXNoKDAsMCwxKSxtLnB1c2gobi9hKSxtLnB1c2goMS10L3MpfWZvcihsZXQgdD0wO3Q8czt0KyspZm9yKGxldCBlPTA7ZTxhO2UrKyl7Y29uc3Qgbj1lK2wqKHQrMSksaT1lKzErbCoodCsxKSxyPWUrMStsKnQ7ZC5wdXNoKGUrbCp0LG4sciksZC5wdXNoKG4saSxyKX10aGlzLnNldEluZGV4KGQpLHRoaXMuc2V0QXR0cmlidXRlKCJwb3NpdGlvbiIsbmV3IGVWdChwLDMpKSx0aGlzLnNldEF0dHJpYnV0ZSgibm9ybWFsIixuZXcgZVZ0KGYsMykpLHRoaXMuc2V0QXR0cmlidXRlKCJ1diIsbmV3IGVWdChtLDIpKX19Y29uc3QgWlZ0PXthbHBoYW1hcF9mcmFnbWVudDoiI2lmZGVmIFVTRV9BTFBIQU1BUFxuXHRkaWZmdXNlQ29sb3IuYSAqPSB0ZXh0dXJlMkQoIGFscGhhTWFwLCB2VXYgKS5nO1xuI2VuZGlmIixhbHBoYW1hcF9wYXJzX2ZyYWdtZW50OiIjaWZkZWYgVVNFX0FMUEhBTUFQXG5cdHVuaWZvcm0gc2FtcGxlcjJEIGFscGhhTWFwO1xuI2VuZGlmIixhbHBoYXRlc3RfZnJhZ21lbnQ6IiNpZmRlZiBBTFBIQVRFU1Rcblx0aWYgKCBkaWZmdXNlQ29sb3IuYSA8IEFMUEhBVEVTVCApIGRpc2NhcmQ7XG4jZW5kaWYiLGFvbWFwX2ZyYWdtZW50OiIjaWZkZWYgVVNFX0FPTUFQXG5cdGZsb2F0IGFtYmllbnRPY2NsdXNpb24gPSAoIHRleHR1cmUyRCggYW9NYXAsIHZVdjIgKS5yIC0gMS4wICkgKiBhb01hcEludGVuc2l0eSArIDEuMDtcblx0cmVmbGVjdGVkTGlnaHQuaW5kaXJlY3REaWZmdXNlICo9IGFtYmllbnRPY2NsdXNpb247XG5cdCNpZiBkZWZpbmVkKCBVU0VfRU5WTUFQICkgJiYgZGVmaW5lZCggU1RBTkRBUkQgKVxuXHRcdGZsb2F0IGRvdE5WID0gc2F0dXJhdGUoIGRvdCggZ2VvbWV0cnkubm9ybWFsLCBnZW9tZXRyeS52aWV3RGlyICkgKTtcblx0XHRyZWZsZWN0ZWRMaWdodC5pbmRpcmVjdFNwZWN1bGFyICo9IGNvbXB1dGVTcGVjdWxhck9jY2x1c2lvbiggZG90TlYsIGFtYmllbnRPY2NsdXNpb24sIG1hdGVyaWFsLnNwZWN1bGFyUm91Z2huZXNzICk7XG5cdCNlbmRpZlxuI2VuZGlmIixhb21hcF9wYXJzX2ZyYWdtZW50OiIjaWZkZWYgVVNFX0FPTUFQXG5cdHVuaWZvcm0gc2FtcGxlcjJEIGFvTWFwO1xuXHR1bmlmb3JtIGZsb2F0IGFvTWFwSW50ZW5zaXR5O1xuI2VuZGlmIixiZWdpbl92ZXJ0ZXg6InZlYzMgdHJhbnNmb3JtZWQgPSB2ZWMzKCBwb3NpdGlvbiApOyIsYmVnaW5ub3JtYWxfdmVydGV4OiJ2ZWMzIG9iamVjdE5vcm1hbCA9IHZlYzMoIG5vcm1hbCApO1xuI2lmZGVmIFVTRV9UQU5HRU5UXG5cdHZlYzMgb2JqZWN0VGFuZ2VudCA9IHZlYzMoIHRhbmdlbnQueHl6ICk7XG4jZW5kaWYiLGJzZGZzOiJ2ZWMyIGludGVncmF0ZVNwZWN1bGFyQlJERiggY29uc3QgaW4gZmxvYXQgZG90TlYsIGNvbnN0IGluIGZsb2F0IHJvdWdobmVzcyApIHtcblx0Y29uc3QgdmVjNCBjMCA9IHZlYzQoIC0gMSwgLSAwLjAyNzUsIC0gMC41NzIsIDAuMDIyICk7XG5cdGNvbnN0IHZlYzQgYzEgPSB2ZWM0KCAxLCAwLjA0MjUsIDEuMDQsIC0gMC4wNCApO1xuXHR2ZWM0IHIgPSByb3VnaG5lc3MgKiBjMCArIGMxO1xuXHRmbG9hdCBhMDA0ID0gbWluKCByLnggKiByLngsIGV4cDIoIC0gOS4yOCAqIGRvdE5WICkgKSAqIHIueCArIHIueTtcblx0cmV0dXJuIHZlYzIoIC0xLjA0LCAxLjA0ICkgKiBhMDA0ICsgci56dztcbn1cbmZsb2F0IHB1bmN0dWFsTGlnaHRJbnRlbnNpdHlUb0lycmFkaWFuY2VGYWN0b3IoIGNvbnN0IGluIGZsb2F0IGxpZ2h0RGlzdGFuY2UsIGNvbnN0IGluIGZsb2F0IGN1dG9mZkRpc3RhbmNlLCBjb25zdCBpbiBmbG9hdCBkZWNheUV4cG9uZW50ICkge1xuI2lmIGRlZmluZWQgKCBQSFlTSUNBTExZX0NPUlJFQ1RfTElHSFRTIClcblx0ZmxvYXQgZGlzdGFuY2VGYWxsb2ZmID0gMS4wIC8gbWF4KCBwb3coIGxpZ2h0RGlzdGFuY2UsIGRlY2F5RXhwb25lbnQgKSwgMC4wMSApO1xuXHRpZiggY3V0b2ZmRGlzdGFuY2UgPiAwLjAgKSB7XG5cdFx0ZGlzdGFuY2VGYWxsb2ZmICo9IHBvdzIoIHNhdHVyYXRlKCAxLjAgLSBwb3c0KCBsaWdodERpc3RhbmNlIC8gY3V0b2ZmRGlzdGFuY2UgKSApICk7XG5cdH1cblx0cmV0dXJuIGRpc3RhbmNlRmFsbG9mZjtcbiNlbHNlXG5cdGlmKCBjdXRvZmZEaXN0YW5jZSA+IDAuMCAmJiBkZWNheUV4cG9uZW50ID4gMC4wICkge1xuXHRcdHJldHVybiBwb3coIHNhdHVyYXRlKCAtbGlnaHREaXN0YW5jZSAvIGN1dG9mZkRpc3RhbmNlICsgMS4wICksIGRlY2F5RXhwb25lbnQgKTtcblx0fVxuXHRyZXR1cm4gMS4wO1xuI2VuZGlmXG59XG52ZWMzIEJSREZfRGlmZnVzZV9MYW1iZXJ0KCBjb25zdCBpbiB2ZWMzIGRpZmZ1c2VDb2xvciApIHtcblx0cmV0dXJuIFJFQ0lQUk9DQUxfUEkgKiBkaWZmdXNlQ29sb3I7XG59XG52ZWMzIEZfU2NobGljayggY29uc3QgaW4gdmVjMyBzcGVjdWxhckNvbG9yLCBjb25zdCBpbiBmbG9hdCBkb3RMSCApIHtcblx0ZmxvYXQgZnJlc25lbCA9IGV4cDIoICggLTUuNTU0NzMgKiBkb3RMSCAtIDYuOTgzMTYgKSAqIGRvdExIICk7XG5cdHJldHVybiAoIDEuMCAtIHNwZWN1bGFyQ29sb3IgKSAqIGZyZXNuZWwgKyBzcGVjdWxhckNvbG9yO1xufVxudmVjMyBGX1NjaGxpY2tfUm91Z2huZXNzRGVwZW5kZW50KCBjb25zdCBpbiB2ZWMzIEYwLCBjb25zdCBpbiBmbG9hdCBkb3ROViwgY29uc3QgaW4gZmxvYXQgcm91Z2huZXNzICkge1xuXHRmbG9hdCBmcmVzbmVsID0gZXhwMiggKCAtNS41NTQ3MyAqIGRvdE5WIC0gNi45ODMxNiApICogZG90TlYgKTtcblx0dmVjMyBGciA9IG1heCggdmVjMyggMS4wIC0gcm91Z2huZXNzICksIEYwICkgLSBGMDtcblx0cmV0dXJuIEZyICogZnJlc25lbCArIEYwO1xufVxuZmxvYXQgR19HR1hfU21pdGgoIGNvbnN0IGluIGZsb2F0IGFscGhhLCBjb25zdCBpbiBmbG9hdCBkb3ROTCwgY29uc3QgaW4gZmxvYXQgZG90TlYgKSB7XG5cdGZsb2F0IGEyID0gcG93MiggYWxwaGEgKTtcblx0ZmxvYXQgZ2wgPSBkb3ROTCArIHNxcnQoIGEyICsgKCAxLjAgLSBhMiApICogcG93MiggZG90TkwgKSApO1xuXHRmbG9hdCBndiA9IGRvdE5WICsgc3FydCggYTIgKyAoIDEuMCAtIGEyICkgKiBwb3cyKCBkb3ROViApICk7XG5cdHJldHVybiAxLjAgLyAoIGdsICogZ3YgKTtcbn1cbmZsb2F0IEdfR0dYX1NtaXRoQ29ycmVsYXRlZCggY29uc3QgaW4gZmxvYXQgYWxwaGEsIGNvbnN0IGluIGZsb2F0IGRvdE5MLCBjb25zdCBpbiBmbG9hdCBkb3ROViApIHtcblx0ZmxvYXQgYTIgPSBwb3cyKCBhbHBoYSApO1xuXHRmbG9hdCBndiA9IGRvdE5MICogc3FydCggYTIgKyAoIDEuMCAtIGEyICkgKiBwb3cyKCBkb3ROViApICk7XG5cdGZsb2F0IGdsID0gZG90TlYgKiBzcXJ0KCBhMiArICggMS4wIC0gYTIgKSAqIHBvdzIoIGRvdE5MICkgKTtcblx0cmV0dXJuIDAuNSAvIG1heCggZ3YgKyBnbCwgRVBTSUxPTiApO1xufVxuZmxvYXQgRF9HR1goIGNvbnN0IGluIGZsb2F0IGFscGhhLCBjb25zdCBpbiBmbG9hdCBkb3ROSCApIHtcblx0ZmxvYXQgYTIgPSBwb3cyKCBhbHBoYSApO1xuXHRmbG9hdCBkZW5vbSA9IHBvdzIoIGRvdE5IICkgKiAoIGEyIC0gMS4wICkgKyAxLjA7XG5cdHJldHVybiBSRUNJUFJPQ0FMX1BJICogYTIgLyBwb3cyKCBkZW5vbSApO1xufVxudmVjMyBCUkRGX1NwZWN1bGFyX0dHWCggY29uc3QgaW4gSW5jaWRlbnRMaWdodCBpbmNpZGVudExpZ2h0LCBjb25zdCBpbiB2ZWMzIHZpZXdEaXIsIGNvbnN0IGluIHZlYzMgbm9ybWFsLCBjb25zdCBpbiB2ZWMzIHNwZWN1bGFyQ29sb3IsIGNvbnN0IGluIGZsb2F0IHJvdWdobmVzcyApIHtcblx0ZmxvYXQgYWxwaGEgPSBwb3cyKCByb3VnaG5lc3MgKTtcblx0dmVjMyBoYWxmRGlyID0gbm9ybWFsaXplKCBpbmNpZGVudExpZ2h0LmRpcmVjdGlvbiArIHZpZXdEaXIgKTtcblx0ZmxvYXQgZG90TkwgPSBzYXR1cmF0ZSggZG90KCBub3JtYWwsIGluY2lkZW50TGlnaHQuZGlyZWN0aW9uICkgKTtcblx0ZmxvYXQgZG90TlYgPSBzYXR1cmF0ZSggZG90KCBub3JtYWwsIHZpZXdEaXIgKSApO1xuXHRmbG9hdCBkb3ROSCA9IHNhdHVyYXRlKCBkb3QoIG5vcm1hbCwgaGFsZkRpciApICk7XG5cdGZsb2F0IGRvdExIID0gc2F0dXJhdGUoIGRvdCggaW5jaWRlbnRMaWdodC5kaXJlY3Rpb24sIGhhbGZEaXIgKSApO1xuXHR2ZWMzIEYgPSBGX1NjaGxpY2soIHNwZWN1bGFyQ29sb3IsIGRvdExIICk7XG5cdGZsb2F0IEcgPSBHX0dHWF9TbWl0aENvcnJlbGF0ZWQoIGFscGhhLCBkb3ROTCwgZG90TlYgKTtcblx0ZmxvYXQgRCA9IERfR0dYKCBhbHBoYSwgZG90TkggKTtcblx0cmV0dXJuIEYgKiAoIEcgKiBEICk7XG59XG52ZWMyIExUQ19VdiggY29uc3QgaW4gdmVjMyBOLCBjb25zdCBpbiB2ZWMzIFYsIGNvbnN0IGluIGZsb2F0IHJvdWdobmVzcyApIHtcblx0Y29uc3QgZmxvYXQgTFVUX1NJWkUgPSA2NC4wO1xuXHRjb25zdCBmbG9hdCBMVVRfU0NBTEUgPSAoIExVVF9TSVpFIC0gMS4wICkgLyBMVVRfU0laRTtcblx0Y29uc3QgZmxvYXQgTFVUX0JJQVMgPSAwLjUgLyBMVVRfU0laRTtcblx0ZmxvYXQgZG90TlYgPSBzYXR1cmF0ZSggZG90KCBOLCBWICkgKTtcblx0dmVjMiB1diA9IHZlYzIoIHJvdWdobmVzcywgc3FydCggMS4wIC0gZG90TlYgKSApO1xuXHR1diA9IHV2ICogTFVUX1NDQUxFICsgTFVUX0JJQVM7XG5cdHJldHVybiB1djtcbn1cbmZsb2F0IExUQ19DbGlwcGVkU3BoZXJlRm9ybUZhY3RvciggY29uc3QgaW4gdmVjMyBmICkge1xuXHRmbG9hdCBsID0gbGVuZ3RoKCBmICk7XG5cdHJldHVybiBtYXgoICggbCAqIGwgKyBmLnogKSAvICggbCArIDEuMCApLCAwLjAgKTtcbn1cbnZlYzMgTFRDX0VkZ2VWZWN0b3JGb3JtRmFjdG9yKCBjb25zdCBpbiB2ZWMzIHYxLCBjb25zdCBpbiB2ZWMzIHYyICkge1xuXHRmbG9hdCB4ID0gZG90KCB2MSwgdjIgKTtcblx0ZmxvYXQgeSA9IGFicyggeCApO1xuXHRmbG9hdCBhID0gMC44NTQzOTg1ICsgKCAwLjQ5NjUxNTUgKyAwLjAxNDUyMDYgKiB5ICkgKiB5O1xuXHRmbG9hdCBiID0gMy40MTc1OTQwICsgKCA0LjE2MTY3MjQgKyB5ICkgKiB5O1xuXHRmbG9hdCB2ID0gYSAvIGI7XG5cdGZsb2F0IHRoZXRhX3NpbnRoZXRhID0gKCB4ID4gMC4wICkgPyB2IDogMC41ICogaW52ZXJzZXNxcnQoIG1heCggMS4wIC0geCAqIHgsIDFlLTcgKSApIC0gdjtcblx0cmV0dXJuIGNyb3NzKCB2MSwgdjIgKSAqIHRoZXRhX3NpbnRoZXRhO1xufVxudmVjMyBMVENfRXZhbHVhdGUoIGNvbnN0IGluIHZlYzMgTiwgY29uc3QgaW4gdmVjMyBWLCBjb25zdCBpbiB2ZWMzIFAsIGNvbnN0IGluIG1hdDMgbUludiwgY29uc3QgaW4gdmVjMyByZWN0Q29vcmRzWyA0IF0gKSB7XG5cdHZlYzMgdjEgPSByZWN0Q29vcmRzWyAxIF0gLSByZWN0Q29vcmRzWyAwIF07XG5cdHZlYzMgdjIgPSByZWN0Q29vcmRzWyAzIF0gLSByZWN0Q29vcmRzWyAwIF07XG5cdHZlYzMgbGlnaHROb3JtYWwgPSBjcm9zcyggdjEsIHYyICk7XG5cdGlmKCBkb3QoIGxpZ2h0Tm9ybWFsLCBQIC0gcmVjdENvb3Jkc1sgMCBdICkgPCAwLjAgKSByZXR1cm4gdmVjMyggMC4wICk7XG5cdHZlYzMgVDEsIFQyO1xuXHRUMSA9IG5vcm1hbGl6ZSggViAtIE4gKiBkb3QoIFYsIE4gKSApO1xuXHRUMiA9IC0gY3Jvc3MoIE4sIFQxICk7XG5cdG1hdDMgbWF0ID0gbUludiAqIHRyYW5zcG9zZU1hdDMoIG1hdDMoIFQxLCBUMiwgTiApICk7XG5cdHZlYzMgY29vcmRzWyA0IF07XG5cdGNvb3Jkc1sgMCBdID0gbWF0ICogKCByZWN0Q29vcmRzWyAwIF0gLSBQICk7XG5cdGNvb3Jkc1sgMSBdID0gbWF0ICogKCByZWN0Q29vcmRzWyAxIF0gLSBQICk7XG5cdGNvb3Jkc1sgMiBdID0gbWF0ICogKCByZWN0Q29vcmRzWyAyIF0gLSBQICk7XG5cdGNvb3Jkc1sgMyBdID0gbWF0ICogKCByZWN0Q29vcmRzWyAzIF0gLSBQICk7XG5cdGNvb3Jkc1sgMCBdID0gbm9ybWFsaXplKCBjb29yZHNbIDAgXSApO1xuXHRjb29yZHNbIDEgXSA9IG5vcm1hbGl6ZSggY29vcmRzWyAxIF0gKTtcblx0Y29vcmRzWyAyIF0gPSBub3JtYWxpemUoIGNvb3Jkc1sgMiBdICk7XG5cdGNvb3Jkc1sgMyBdID0gbm9ybWFsaXplKCBjb29yZHNbIDMgXSApO1xuXHR2ZWMzIHZlY3RvckZvcm1GYWN0b3IgPSB2ZWMzKCAwLjAgKTtcblx0dmVjdG9yRm9ybUZhY3RvciArPSBMVENfRWRnZVZlY3RvckZvcm1GYWN0b3IoIGNvb3Jkc1sgMCBdLCBjb29yZHNbIDEgXSApO1xuXHR2ZWN0b3JGb3JtRmFjdG9yICs9IExUQ19FZGdlVmVjdG9yRm9ybUZhY3RvciggY29vcmRzWyAxIF0sIGNvb3Jkc1sgMiBdICk7XG5cdHZlY3RvckZvcm1GYWN0b3IgKz0gTFRDX0VkZ2VWZWN0b3JGb3JtRmFjdG9yKCBjb29yZHNbIDIgXSwgY29vcmRzWyAzIF0gKTtcblx0dmVjdG9yRm9ybUZhY3RvciArPSBMVENfRWRnZVZlY3RvckZvcm1GYWN0b3IoIGNvb3Jkc1sgMyBdLCBjb29yZHNbIDAgXSApO1xuXHRmbG9hdCByZXN1bHQgPSBMVENfQ2xpcHBlZFNwaGVyZUZvcm1GYWN0b3IoIHZlY3RvckZvcm1GYWN0b3IgKTtcblx0cmV0dXJuIHZlYzMoIHJlc3VsdCApO1xufVxudmVjMyBCUkRGX1NwZWN1bGFyX0dHWF9FbnZpcm9ubWVudCggY29uc3QgaW4gdmVjMyB2aWV3RGlyLCBjb25zdCBpbiB2ZWMzIG5vcm1hbCwgY29uc3QgaW4gdmVjMyBzcGVjdWxhckNvbG9yLCBjb25zdCBpbiBmbG9hdCByb3VnaG5lc3MgKSB7XG5cdGZsb2F0IGRvdE5WID0gc2F0dXJhdGUoIGRvdCggbm9ybWFsLCB2aWV3RGlyICkgKTtcblx0dmVjMiBicmRmID0gaW50ZWdyYXRlU3BlY3VsYXJCUkRGKCBkb3ROViwgcm91Z2huZXNzICk7XG5cdHJldHVybiBzcGVjdWxhckNvbG9yICogYnJkZi54ICsgYnJkZi55O1xufVxudm9pZCBCUkRGX1NwZWN1bGFyX011bHRpc2NhdHRlcmluZ19FbnZpcm9ubWVudCggY29uc3QgaW4gR2VvbWV0cmljQ29udGV4dCBnZW9tZXRyeSwgY29uc3QgaW4gdmVjMyBzcGVjdWxhckNvbG9yLCBjb25zdCBpbiBmbG9hdCByb3VnaG5lc3MsIGlub3V0IHZlYzMgc2luZ2xlU2NhdHRlciwgaW5vdXQgdmVjMyBtdWx0aVNjYXR0ZXIgKSB7XG5cdGZsb2F0IGRvdE5WID0gc2F0dXJhdGUoIGRvdCggZ2VvbWV0cnkubm9ybWFsLCBnZW9tZXRyeS52aWV3RGlyICkgKTtcblx0dmVjMyBGID0gRl9TY2hsaWNrX1JvdWdobmVzc0RlcGVuZGVudCggc3BlY3VsYXJDb2xvciwgZG90TlYsIHJvdWdobmVzcyApO1xuXHR2ZWMyIGJyZGYgPSBpbnRlZ3JhdGVTcGVjdWxhckJSREYoIGRvdE5WLCByb3VnaG5lc3MgKTtcblx0dmVjMyBGc3NFc3MgPSBGICogYnJkZi54ICsgYnJkZi55O1xuXHRmbG9hdCBFc3MgPSBicmRmLnggKyBicmRmLnk7XG5cdGZsb2F0IEVtcyA9IDEuMCAtIEVzcztcblx0dmVjMyBGYXZnID0gc3BlY3VsYXJDb2xvciArICggMS4wIC0gc3BlY3VsYXJDb2xvciApICogMC4wNDc2MTk7XHR2ZWMzIEZtcyA9IEZzc0VzcyAqIEZhdmcgLyAoIDEuMCAtIEVtcyAqIEZhdmcgKTtcblx0c2luZ2xlU2NhdHRlciArPSBGc3NFc3M7XG5cdG11bHRpU2NhdHRlciArPSBGbXMgKiBFbXM7XG59XG5mbG9hdCBHX0JsaW5uUGhvbmdfSW1wbGljaXQoICkge1xuXHRyZXR1cm4gMC4yNTtcbn1cbmZsb2F0IERfQmxpbm5QaG9uZyggY29uc3QgaW4gZmxvYXQgc2hpbmluZXNzLCBjb25zdCBpbiBmbG9hdCBkb3ROSCApIHtcblx0cmV0dXJuIFJFQ0lQUk9DQUxfUEkgKiAoIHNoaW5pbmVzcyAqIDAuNSArIDEuMCApICogcG93KCBkb3ROSCwgc2hpbmluZXNzICk7XG59XG52ZWMzIEJSREZfU3BlY3VsYXJfQmxpbm5QaG9uZyggY29uc3QgaW4gSW5jaWRlbnRMaWdodCBpbmNpZGVudExpZ2h0LCBjb25zdCBpbiBHZW9tZXRyaWNDb250ZXh0IGdlb21ldHJ5LCBjb25zdCBpbiB2ZWMzIHNwZWN1bGFyQ29sb3IsIGNvbnN0IGluIGZsb2F0IHNoaW5pbmVzcyApIHtcblx0dmVjMyBoYWxmRGlyID0gbm9ybWFsaXplKCBpbmNpZGVudExpZ2h0LmRpcmVjdGlvbiArIGdlb21ldHJ5LnZpZXdEaXIgKTtcblx0ZmxvYXQgZG90TkggPSBzYXR1cmF0ZSggZG90KCBnZW9tZXRyeS5ub3JtYWwsIGhhbGZEaXIgKSApO1xuXHRmbG9hdCBkb3RMSCA9IHNhdHVyYXRlKCBkb3QoIGluY2lkZW50TGlnaHQuZGlyZWN0aW9uLCBoYWxmRGlyICkgKTtcblx0dmVjMyBGID0gRl9TY2hsaWNrKCBzcGVjdWxhckNvbG9yLCBkb3RMSCApO1xuXHRmbG9hdCBHID0gR19CbGlublBob25nX0ltcGxpY2l0KCApO1xuXHRmbG9hdCBEID0gRF9CbGlublBob25nKCBzaGluaW5lc3MsIGRvdE5IICk7XG5cdHJldHVybiBGICogKCBHICogRCApO1xufVxuZmxvYXQgR0dYUm91Z2huZXNzVG9CbGlubkV4cG9uZW50KCBjb25zdCBpbiBmbG9hdCBnZ3hSb3VnaG5lc3MgKSB7XG5cdHJldHVybiAoIDIuMCAvIHBvdzIoIGdneFJvdWdobmVzcyArIDAuMDAwMSApIC0gMi4wICk7XG59XG5mbG9hdCBCbGlubkV4cG9uZW50VG9HR1hSb3VnaG5lc3MoIGNvbnN0IGluIGZsb2F0IGJsaW5uRXhwb25lbnQgKSB7XG5cdHJldHVybiBzcXJ0KCAyLjAgLyAoIGJsaW5uRXhwb25lbnQgKyAyLjAgKSApO1xufVxuI2lmIGRlZmluZWQoIFVTRV9TSEVFTiApXG5mbG9hdCBEX0NoYXJsaWUoZmxvYXQgcm91Z2huZXNzLCBmbG9hdCBOb0gpIHtcblx0ZmxvYXQgaW52QWxwaGEgPSAxLjAgLyByb3VnaG5lc3M7XG5cdGZsb2F0IGNvczJoID0gTm9IICogTm9IO1xuXHRmbG9hdCBzaW4yaCA9IG1heCgxLjAgLSBjb3MyaCwgMC4wMDc4MTI1KTtcdHJldHVybiAoMi4wICsgaW52QWxwaGEpICogcG93KHNpbjJoLCBpbnZBbHBoYSAqIDAuNSkgLyAoMi4wICogUEkpO1xufVxuZmxvYXQgVl9OZXViZWx0KGZsb2F0IE5vViwgZmxvYXQgTm9MKSB7XG5cdHJldHVybiBzYXR1cmF0ZSgxLjAgLyAoNC4wICogKE5vTCArIE5vViAtIE5vTCAqIE5vVikpKTtcbn1cbnZlYzMgQlJERl9TcGVjdWxhcl9TaGVlbiggY29uc3QgaW4gZmxvYXQgcm91Z2huZXNzLCBjb25zdCBpbiB2ZWMzIEwsIGNvbnN0IGluIEdlb21ldHJpY0NvbnRleHQgZ2VvbWV0cnksIHZlYzMgc3BlY3VsYXJDb2xvciApIHtcblx0dmVjMyBOID0gZ2VvbWV0cnkubm9ybWFsO1xuXHR2ZWMzIFYgPSBnZW9tZXRyeS52aWV3RGlyO1xuXHR2ZWMzIEggPSBub3JtYWxpemUoIFYgKyBMICk7XG5cdGZsb2F0IGRvdE5IID0gc2F0dXJhdGUoIGRvdCggTiwgSCApICk7XG5cdHJldHVybiBzcGVjdWxhckNvbG9yICogRF9DaGFybGllKCByb3VnaG5lc3MsIGRvdE5IICkgKiBWX05ldWJlbHQoIGRvdChOLCBWKSwgZG90KE4sIEwpICk7XG59XG4jZW5kaWYiLGJ1bXBtYXBfcGFyc19mcmFnbWVudDoiI2lmZGVmIFVTRV9CVU1QTUFQXG5cdHVuaWZvcm0gc2FtcGxlcjJEIGJ1bXBNYXA7XG5cdHVuaWZvcm0gZmxvYXQgYnVtcFNjYWxlO1xuXHR2ZWMyIGRIZHh5X2Z3ZCgpIHtcblx0XHR2ZWMyIGRTVGR4ID0gZEZkeCggdlV2ICk7XG5cdFx0dmVjMiBkU1RkeSA9IGRGZHkoIHZVdiApO1xuXHRcdGZsb2F0IEhsbCA9IGJ1bXBTY2FsZSAqIHRleHR1cmUyRCggYnVtcE1hcCwgdlV2ICkueDtcblx0XHRmbG9hdCBkQnggPSBidW1wU2NhbGUgKiB0ZXh0dXJlMkQoIGJ1bXBNYXAsIHZVdiArIGRTVGR4ICkueCAtIEhsbDtcblx0XHRmbG9hdCBkQnkgPSBidW1wU2NhbGUgKiB0ZXh0dXJlMkQoIGJ1bXBNYXAsIHZVdiArIGRTVGR5ICkueCAtIEhsbDtcblx0XHRyZXR1cm4gdmVjMiggZEJ4LCBkQnkgKTtcblx0fVxuXHR2ZWMzIHBlcnR1cmJOb3JtYWxBcmIoIHZlYzMgc3VyZl9wb3MsIHZlYzMgc3VyZl9ub3JtLCB2ZWMyIGRIZHh5ICkge1xuXHRcdHZlYzMgdlNpZ21hWCA9IHZlYzMoIGRGZHgoIHN1cmZfcG9zLnggKSwgZEZkeCggc3VyZl9wb3MueSApLCBkRmR4KCBzdXJmX3Bvcy56ICkgKTtcblx0XHR2ZWMzIHZTaWdtYVkgPSB2ZWMzKCBkRmR5KCBzdXJmX3Bvcy54ICksIGRGZHkoIHN1cmZfcG9zLnkgKSwgZEZkeSggc3VyZl9wb3MueiApICk7XG5cdFx0dmVjMyB2TiA9IHN1cmZfbm9ybTtcblx0XHR2ZWMzIFIxID0gY3Jvc3MoIHZTaWdtYVksIHZOICk7XG5cdFx0dmVjMyBSMiA9IGNyb3NzKCB2TiwgdlNpZ21hWCApO1xuXHRcdGZsb2F0IGZEZXQgPSBkb3QoIHZTaWdtYVgsIFIxICk7XG5cdFx0ZkRldCAqPSAoIGZsb2F0KCBnbF9Gcm9udEZhY2luZyApICogMi4wIC0gMS4wICk7XG5cdFx0dmVjMyB2R3JhZCA9IHNpZ24oIGZEZXQgKSAqICggZEhkeHkueCAqIFIxICsgZEhkeHkueSAqIFIyICk7XG5cdFx0cmV0dXJuIG5vcm1hbGl6ZSggYWJzKCBmRGV0ICkgKiBzdXJmX25vcm0gLSB2R3JhZCApO1xuXHR9XG4jZW5kaWYiLGNsaXBwaW5nX3BsYW5lc19mcmFnbWVudDoiI2lmIE5VTV9DTElQUElOR19QTEFORVMgPiAwXG5cdHZlYzQgcGxhbmU7XG5cdCNwcmFnbWEgdW5yb2xsX2xvb3Bfc3RhcnRcblx0Zm9yICggaW50IGkgPSAwOyBpIDwgVU5JT05fQ0xJUFBJTkdfUExBTkVTOyBpICsrICkge1xuXHRcdHBsYW5lID0gY2xpcHBpbmdQbGFuZXNbIGkgXTtcblx0XHRpZiAoIGRvdCggdkNsaXBQb3NpdGlvbiwgcGxhbmUueHl6ICkgPiBwbGFuZS53ICkgZGlzY2FyZDtcblx0fVxuXHQjcHJhZ21hIHVucm9sbF9sb29wX2VuZFxuXHQjaWYgVU5JT05fQ0xJUFBJTkdfUExBTkVTIDwgTlVNX0NMSVBQSU5HX1BMQU5FU1xuXHRcdGJvb2wgY2xpcHBlZCA9IHRydWU7XG5cdFx0I3ByYWdtYSB1bnJvbGxfbG9vcF9zdGFydFxuXHRcdGZvciAoIGludCBpID0gVU5JT05fQ0xJUFBJTkdfUExBTkVTOyBpIDwgTlVNX0NMSVBQSU5HX1BMQU5FUzsgaSArKyApIHtcblx0XHRcdHBsYW5lID0gY2xpcHBpbmdQbGFuZXNbIGkgXTtcblx0XHRcdGNsaXBwZWQgPSAoIGRvdCggdkNsaXBQb3NpdGlvbiwgcGxhbmUueHl6ICkgPiBwbGFuZS53ICkgJiYgY2xpcHBlZDtcblx0XHR9XG5cdFx0I3ByYWdtYSB1bnJvbGxfbG9vcF9lbmRcblx0XHRpZiAoIGNsaXBwZWQgKSBkaXNjYXJkO1xuXHQjZW5kaWZcbiNlbmRpZiIsY2xpcHBpbmdfcGxhbmVzX3BhcnNfZnJhZ21lbnQ6IiNpZiBOVU1fQ0xJUFBJTkdfUExBTkVTID4gMFxuXHR2YXJ5aW5nIHZlYzMgdkNsaXBQb3NpdGlvbjtcblx0dW5pZm9ybSB2ZWM0IGNsaXBwaW5nUGxhbmVzWyBOVU1fQ0xJUFBJTkdfUExBTkVTIF07XG4jZW5kaWYiLGNsaXBwaW5nX3BsYW5lc19wYXJzX3ZlcnRleDoiI2lmIE5VTV9DTElQUElOR19QTEFORVMgPiAwXG5cdHZhcnlpbmcgdmVjMyB2Q2xpcFBvc2l0aW9uO1xuI2VuZGlmIixjbGlwcGluZ19wbGFuZXNfdmVydGV4OiIjaWYgTlVNX0NMSVBQSU5HX1BMQU5FUyA+IDBcblx0dkNsaXBQb3NpdGlvbiA9IC0gbXZQb3NpdGlvbi54eXo7XG4jZW5kaWYiLGNvbG9yX2ZyYWdtZW50OiIjaWZkZWYgVVNFX0NPTE9SXG5cdGRpZmZ1c2VDb2xvci5yZ2IgKj0gdkNvbG9yO1xuI2VuZGlmIixjb2xvcl9wYXJzX2ZyYWdtZW50OiIjaWZkZWYgVVNFX0NPTE9SXG5cdHZhcnlpbmcgdmVjMyB2Q29sb3I7XG4jZW5kaWYiLGNvbG9yX3BhcnNfdmVydGV4OiIjaWYgZGVmaW5lZCggVVNFX0NPTE9SICkgfHwgZGVmaW5lZCggVVNFX0lOU1RBTkNJTkdfQ09MT1IgKVxuXHR2YXJ5aW5nIHZlYzMgdkNvbG9yO1xuI2VuZGlmIixjb2xvcl92ZXJ0ZXg6IiNpZiBkZWZpbmVkKCBVU0VfQ09MT1IgKSB8fCBkZWZpbmVkKCBVU0VfSU5TVEFOQ0lOR19DT0xPUiApXG5cdHZDb2xvciA9IHZlYzMoIDEuMCApO1xuI2VuZGlmXG4jaWZkZWYgVVNFX0NPTE9SXG5cdHZDb2xvci54eXogKj0gY29sb3IueHl6O1xuI2VuZGlmXG4jaWZkZWYgVVNFX0lOU1RBTkNJTkdfQ09MT1Jcblx0dkNvbG9yLnh5eiAqPSBpbnN0YW5jZUNvbG9yLnh5ejtcbiNlbmRpZiIsY29tbW9uOiIjZGVmaW5lIFBJIDMuMTQxNTkyNjUzNTg5NzkzXG4jZGVmaW5lIFBJMiA2LjI4MzE4NTMwNzE3OTU4NlxuI2RlZmluZSBQSV9IQUxGIDEuNTcwNzk2MzI2Nzk0ODk2NlxuI2RlZmluZSBSRUNJUFJPQ0FMX1BJIDAuMzE4MzA5ODg2MTgzNzkwN1xuI2RlZmluZSBSRUNJUFJPQ0FMX1BJMiAwLjE1OTE1NDk0MzA5MTg5NTM1XG4jZGVmaW5lIEVQU0lMT04gMWUtNlxuI2lmbmRlZiBzYXR1cmF0ZVxuI2RlZmluZSBzYXR1cmF0ZShhKSBjbGFtcCggYSwgMC4wLCAxLjAgKVxuI2VuZGlmXG4jZGVmaW5lIHdoaXRlQ29tcGxlbWVudChhKSAoIDEuMCAtIHNhdHVyYXRlKCBhICkgKVxuZmxvYXQgcG93MiggY29uc3QgaW4gZmxvYXQgeCApIHsgcmV0dXJuIHgqeDsgfVxuZmxvYXQgcG93MyggY29uc3QgaW4gZmxvYXQgeCApIHsgcmV0dXJuIHgqeCp4OyB9XG5mbG9hdCBwb3c0KCBjb25zdCBpbiBmbG9hdCB4ICkgeyBmbG9hdCB4MiA9IHgqeDsgcmV0dXJuIHgyKngyOyB9XG5mbG9hdCBhdmVyYWdlKCBjb25zdCBpbiB2ZWMzIGNvbG9yICkgeyByZXR1cm4gZG90KCBjb2xvciwgdmVjMyggMC4zMzMzICkgKTsgfVxuaGlnaHAgZmxvYXQgcmFuZCggY29uc3QgaW4gdmVjMiB1diApIHtcblx0Y29uc3QgaGlnaHAgZmxvYXQgYSA9IDEyLjk4OTgsIGIgPSA3OC4yMzMsIGMgPSA0Mzc1OC41NDUzO1xuXHRoaWdocCBmbG9hdCBkdCA9IGRvdCggdXYueHksIHZlYzIoIGEsYiApICksIHNuID0gbW9kKCBkdCwgUEkgKTtcblx0cmV0dXJuIGZyYWN0KHNpbihzbikgKiBjKTtcbn1cbiNpZmRlZiBISUdIX1BSRUNJU0lPTlxuXHRmbG9hdCBwcmVjaXNpb25TYWZlTGVuZ3RoKCB2ZWMzIHYgKSB7IHJldHVybiBsZW5ndGgoIHYgKTsgfVxuI2Vsc2Vcblx0ZmxvYXQgbWF4MyggdmVjMyB2ICkgeyByZXR1cm4gbWF4KCBtYXgoIHYueCwgdi55ICksIHYueiApOyB9XG5cdGZsb2F0IHByZWNpc2lvblNhZmVMZW5ndGgoIHZlYzMgdiApIHtcblx0XHRmbG9hdCBtYXhDb21wb25lbnQgPSBtYXgzKCBhYnMoIHYgKSApO1xuXHRcdHJldHVybiBsZW5ndGgoIHYgLyBtYXhDb21wb25lbnQgKSAqIG1heENvbXBvbmVudDtcblx0fVxuI2VuZGlmXG5zdHJ1Y3QgSW5jaWRlbnRMaWdodCB7XG5cdHZlYzMgY29sb3I7XG5cdHZlYzMgZGlyZWN0aW9uO1xuXHRib29sIHZpc2libGU7XG59O1xuc3RydWN0IFJlZmxlY3RlZExpZ2h0IHtcblx0dmVjMyBkaXJlY3REaWZmdXNlO1xuXHR2ZWMzIGRpcmVjdFNwZWN1bGFyO1xuXHR2ZWMzIGluZGlyZWN0RGlmZnVzZTtcblx0dmVjMyBpbmRpcmVjdFNwZWN1bGFyO1xufTtcbnN0cnVjdCBHZW9tZXRyaWNDb250ZXh0IHtcblx0dmVjMyBwb3NpdGlvbjtcblx0dmVjMyBub3JtYWw7XG5cdHZlYzMgdmlld0RpcjtcbiNpZmRlZiBDTEVBUkNPQVRcblx0dmVjMyBjbGVhcmNvYXROb3JtYWw7XG4jZW5kaWZcbn07XG52ZWMzIHRyYW5zZm9ybURpcmVjdGlvbiggaW4gdmVjMyBkaXIsIGluIG1hdDQgbWF0cml4ICkge1xuXHRyZXR1cm4gbm9ybWFsaXplKCAoIG1hdHJpeCAqIHZlYzQoIGRpciwgMC4wICkgKS54eXogKTtcbn1cbnZlYzMgaW52ZXJzZVRyYW5zZm9ybURpcmVjdGlvbiggaW4gdmVjMyBkaXIsIGluIG1hdDQgbWF0cml4ICkge1xuXHRyZXR1cm4gbm9ybWFsaXplKCAoIHZlYzQoIGRpciwgMC4wICkgKiBtYXRyaXggKS54eXogKTtcbn1cbnZlYzMgcHJvamVjdE9uUGxhbmUoaW4gdmVjMyBwb2ludCwgaW4gdmVjMyBwb2ludE9uUGxhbmUsIGluIHZlYzMgcGxhbmVOb3JtYWwgKSB7XG5cdGZsb2F0IGRpc3RhbmNlID0gZG90KCBwbGFuZU5vcm1hbCwgcG9pbnQgLSBwb2ludE9uUGxhbmUgKTtcblx0cmV0dXJuIC0gZGlzdGFuY2UgKiBwbGFuZU5vcm1hbCArIHBvaW50O1xufVxuZmxvYXQgc2lkZU9mUGxhbmUoIGluIHZlYzMgcG9pbnQsIGluIHZlYzMgcG9pbnRPblBsYW5lLCBpbiB2ZWMzIHBsYW5lTm9ybWFsICkge1xuXHRyZXR1cm4gc2lnbiggZG90KCBwb2ludCAtIHBvaW50T25QbGFuZSwgcGxhbmVOb3JtYWwgKSApO1xufVxudmVjMyBsaW5lUGxhbmVJbnRlcnNlY3QoIGluIHZlYzMgcG9pbnRPbkxpbmUsIGluIHZlYzMgbGluZURpcmVjdGlvbiwgaW4gdmVjMyBwb2ludE9uUGxhbmUsIGluIHZlYzMgcGxhbmVOb3JtYWwgKSB7XG5cdHJldHVybiBsaW5lRGlyZWN0aW9uICogKCBkb3QoIHBsYW5lTm9ybWFsLCBwb2ludE9uUGxhbmUgLSBwb2ludE9uTGluZSApIC8gZG90KCBwbGFuZU5vcm1hbCwgbGluZURpcmVjdGlvbiApICkgKyBwb2ludE9uTGluZTtcbn1cbm1hdDMgdHJhbnNwb3NlTWF0MyggY29uc3QgaW4gbWF0MyBtICkge1xuXHRtYXQzIHRtcDtcblx0dG1wWyAwIF0gPSB2ZWMzKCBtWyAwIF0ueCwgbVsgMSBdLngsIG1bIDIgXS54ICk7XG5cdHRtcFsgMSBdID0gdmVjMyggbVsgMCBdLnksIG1bIDEgXS55LCBtWyAyIF0ueSApO1xuXHR0bXBbIDIgXSA9IHZlYzMoIG1bIDAgXS56LCBtWyAxIF0ueiwgbVsgMiBdLnogKTtcblx0cmV0dXJuIHRtcDtcbn1cbmZsb2F0IGxpbmVhclRvUmVsYXRpdmVMdW1pbmFuY2UoIGNvbnN0IGluIHZlYzMgY29sb3IgKSB7XG5cdHZlYzMgd2VpZ2h0cyA9IHZlYzMoIDAuMjEyNiwgMC43MTUyLCAwLjA3MjIgKTtcblx0cmV0dXJuIGRvdCggd2VpZ2h0cywgY29sb3IucmdiICk7XG59XG5ib29sIGlzUGVyc3BlY3RpdmVNYXRyaXgoIG1hdDQgbSApIHtcblx0cmV0dXJuIG1bIDIgXVsgMyBdID09IC0gMS4wO1xufVxudmVjMiBlcXVpcmVjdFV2KCBpbiB2ZWMzIGRpciApIHtcblx0ZmxvYXQgdSA9IGF0YW4oIGRpci56LCBkaXIueCApICogUkVDSVBST0NBTF9QSTIgKyAwLjU7XG5cdGZsb2F0IHYgPSBhc2luKCBjbGFtcCggZGlyLnksIC0gMS4wLCAxLjAgKSApICogUkVDSVBST0NBTF9QSSArIDAuNTtcblx0cmV0dXJuIHZlYzIoIHUsIHYgKTtcbn0iLGN1YmVfdXZfcmVmbGVjdGlvbl9mcmFnbWVudDoiI2lmZGVmIEVOVk1BUF9UWVBFX0NVQkVfVVZcblx0I2RlZmluZSBjdWJlVVZfbWF4TWlwTGV2ZWwgOC4wXG5cdCNkZWZpbmUgY3ViZVVWX21pbk1pcExldmVsIDQuMFxuXHQjZGVmaW5lIGN1YmVVVl9tYXhUaWxlU2l6ZSAyNTYuMFxuXHQjZGVmaW5lIGN1YmVVVl9taW5UaWxlU2l6ZSAxNi4wXG5cdGZsb2F0IGdldEZhY2UoIHZlYzMgZGlyZWN0aW9uICkge1xuXHRcdHZlYzMgYWJzRGlyZWN0aW9uID0gYWJzKCBkaXJlY3Rpb24gKTtcblx0XHRmbG9hdCBmYWNlID0gLSAxLjA7XG5cdFx0aWYgKCBhYnNEaXJlY3Rpb24ueCA+IGFic0RpcmVjdGlvbi56ICkge1xuXHRcdFx0aWYgKCBhYnNEaXJlY3Rpb24ueCA+IGFic0RpcmVjdGlvbi55IClcblx0XHRcdFx0ZmFjZSA9IGRpcmVjdGlvbi54ID4gMC4wID8gMC4wIDogMy4wO1xuXHRcdFx0ZWxzZVxuXHRcdFx0XHRmYWNlID0gZGlyZWN0aW9uLnkgPiAwLjAgPyAxLjAgOiA0LjA7XG5cdFx0fSBlbHNlIHtcblx0XHRcdGlmICggYWJzRGlyZWN0aW9uLnogPiBhYnNEaXJlY3Rpb24ueSApXG5cdFx0XHRcdGZhY2UgPSBkaXJlY3Rpb24ueiA+IDAuMCA/IDIuMCA6IDUuMDtcblx0XHRcdGVsc2Vcblx0XHRcdFx0ZmFjZSA9IGRpcmVjdGlvbi55ID4gMC4wID8gMS4wIDogNC4wO1xuXHRcdH1cblx0XHRyZXR1cm4gZmFjZTtcblx0fVxuXHR2ZWMyIGdldFVWKCB2ZWMzIGRpcmVjdGlvbiwgZmxvYXQgZmFjZSApIHtcblx0XHR2ZWMyIHV2O1xuXHRcdGlmICggZmFjZSA9PSAwLjAgKSB7XG5cdFx0XHR1diA9IHZlYzIoIGRpcmVjdGlvbi56LCBkaXJlY3Rpb24ueSApIC8gYWJzKCBkaXJlY3Rpb24ueCApO1xuXHRcdH0gZWxzZSBpZiAoIGZhY2UgPT0gMS4wICkge1xuXHRcdFx0dXYgPSB2ZWMyKCAtIGRpcmVjdGlvbi54LCAtIGRpcmVjdGlvbi56ICkgLyBhYnMoIGRpcmVjdGlvbi55ICk7XG5cdFx0fSBlbHNlIGlmICggZmFjZSA9PSAyLjAgKSB7XG5cdFx0XHR1diA9IHZlYzIoIC0gZGlyZWN0aW9uLngsIGRpcmVjdGlvbi55ICkgLyBhYnMoIGRpcmVjdGlvbi56ICk7XG5cdFx0fSBlbHNlIGlmICggZmFjZSA9PSAzLjAgKSB7XG5cdFx0XHR1diA9IHZlYzIoIC0gZGlyZWN0aW9uLnosIGRpcmVjdGlvbi55ICkgLyBhYnMoIGRpcmVjdGlvbi54ICk7XG5cdFx0fSBlbHNlIGlmICggZmFjZSA9PSA0LjAgKSB7XG5cdFx0XHR1diA9IHZlYzIoIC0gZGlyZWN0aW9uLngsIGRpcmVjdGlvbi56ICkgLyBhYnMoIGRpcmVjdGlvbi55ICk7XG5cdFx0fSBlbHNlIHtcblx0XHRcdHV2ID0gdmVjMiggZGlyZWN0aW9uLngsIGRpcmVjdGlvbi55ICkgLyBhYnMoIGRpcmVjdGlvbi56ICk7XG5cdFx0fVxuXHRcdHJldHVybiAwLjUgKiAoIHV2ICsgMS4wICk7XG5cdH1cblx0dmVjMyBiaWxpbmVhckN1YmVVViggc2FtcGxlcjJEIGVudk1hcCwgdmVjMyBkaXJlY3Rpb24sIGZsb2F0IG1pcEludCApIHtcblx0XHRmbG9hdCBmYWNlID0gZ2V0RmFjZSggZGlyZWN0aW9uICk7XG5cdFx0ZmxvYXQgZmlsdGVySW50ID0gbWF4KCBjdWJlVVZfbWluTWlwTGV2ZWwgLSBtaXBJbnQsIDAuMCApO1xuXHRcdG1pcEludCA9IG1heCggbWlwSW50LCBjdWJlVVZfbWluTWlwTGV2ZWwgKTtcblx0XHRmbG9hdCBmYWNlU2l6ZSA9IGV4cDIoIG1pcEludCApO1xuXHRcdGZsb2F0IHRleGVsU2l6ZSA9IDEuMCAvICggMy4wICogY3ViZVVWX21heFRpbGVTaXplICk7XG5cdFx0dmVjMiB1diA9IGdldFVWKCBkaXJlY3Rpb24sIGZhY2UgKSAqICggZmFjZVNpemUgLSAxLjAgKTtcblx0XHR2ZWMyIGYgPSBmcmFjdCggdXYgKTtcblx0XHR1diArPSAwLjUgLSBmO1xuXHRcdGlmICggZmFjZSA+IDIuMCApIHtcblx0XHRcdHV2LnkgKz0gZmFjZVNpemU7XG5cdFx0XHRmYWNlIC09IDMuMDtcblx0XHR9XG5cdFx0dXYueCArPSBmYWNlICogZmFjZVNpemU7XG5cdFx0aWYgKCBtaXBJbnQgPCBjdWJlVVZfbWF4TWlwTGV2ZWwgKSB7XG5cdFx0XHR1di55ICs9IDIuMCAqIGN1YmVVVl9tYXhUaWxlU2l6ZTtcblx0XHR9XG5cdFx0dXYueSArPSBmaWx0ZXJJbnQgKiAyLjAgKiBjdWJlVVZfbWluVGlsZVNpemU7XG5cdFx0dXYueCArPSAzLjAgKiBtYXgoIDAuMCwgY3ViZVVWX21heFRpbGVTaXplIC0gMi4wICogZmFjZVNpemUgKTtcblx0XHR1diAqPSB0ZXhlbFNpemU7XG5cdFx0dmVjMyB0bCA9IGVudk1hcFRleGVsVG9MaW5lYXIoIHRleHR1cmUyRCggZW52TWFwLCB1diApICkucmdiO1xuXHRcdHV2LnggKz0gdGV4ZWxTaXplO1xuXHRcdHZlYzMgdHIgPSBlbnZNYXBUZXhlbFRvTGluZWFyKCB0ZXh0dXJlMkQoIGVudk1hcCwgdXYgKSApLnJnYjtcblx0XHR1di55ICs9IHRleGVsU2l6ZTtcblx0XHR2ZWMzIGJyID0gZW52TWFwVGV4ZWxUb0xpbmVhciggdGV4dHVyZTJEKCBlbnZNYXAsIHV2ICkgKS5yZ2I7XG5cdFx0dXYueCAtPSB0ZXhlbFNpemU7XG5cdFx0dmVjMyBibCA9IGVudk1hcFRleGVsVG9MaW5lYXIoIHRleHR1cmUyRCggZW52TWFwLCB1diApICkucmdiO1xuXHRcdHZlYzMgdG0gPSBtaXgoIHRsLCB0ciwgZi54ICk7XG5cdFx0dmVjMyBibSA9IG1peCggYmwsIGJyLCBmLnggKTtcblx0XHRyZXR1cm4gbWl4KCB0bSwgYm0sIGYueSApO1xuXHR9XG5cdCNkZWZpbmUgcjAgMS4wXG5cdCNkZWZpbmUgdjAgMC4zMzlcblx0I2RlZmluZSBtMCAtIDIuMFxuXHQjZGVmaW5lIHIxIDAuOFxuXHQjZGVmaW5lIHYxIDAuMjc2XG5cdCNkZWZpbmUgbTEgLSAxLjBcblx0I2RlZmluZSByNCAwLjRcblx0I2RlZmluZSB2NCAwLjA0NlxuXHQjZGVmaW5lIG00IDIuMFxuXHQjZGVmaW5lIHI1IDAuMzA1XG5cdCNkZWZpbmUgdjUgMC4wMTZcblx0I2RlZmluZSBtNSAzLjBcblx0I2RlZmluZSByNiAwLjIxXG5cdCNkZWZpbmUgdjYgMC4wMDM4XG5cdCNkZWZpbmUgbTYgNC4wXG5cdGZsb2F0IHJvdWdobmVzc1RvTWlwKCBmbG9hdCByb3VnaG5lc3MgKSB7XG5cdFx0ZmxvYXQgbWlwID0gMC4wO1xuXHRcdGlmICggcm91Z2huZXNzID49IHIxICkge1xuXHRcdFx0bWlwID0gKCByMCAtIHJvdWdobmVzcyApICogKCBtMSAtIG0wICkgLyAoIHIwIC0gcjEgKSArIG0wO1xuXHRcdH0gZWxzZSBpZiAoIHJvdWdobmVzcyA+PSByNCApIHtcblx0XHRcdG1pcCA9ICggcjEgLSByb3VnaG5lc3MgKSAqICggbTQgLSBtMSApIC8gKCByMSAtIHI0ICkgKyBtMTtcblx0XHR9IGVsc2UgaWYgKCByb3VnaG5lc3MgPj0gcjUgKSB7XG5cdFx0XHRtaXAgPSAoIHI0IC0gcm91Z2huZXNzICkgKiAoIG01IC0gbTQgKSAvICggcjQgLSByNSApICsgbTQ7XG5cdFx0fSBlbHNlIGlmICggcm91Z2huZXNzID49IHI2ICkge1xuXHRcdFx0bWlwID0gKCByNSAtIHJvdWdobmVzcyApICogKCBtNiAtIG01ICkgLyAoIHI1IC0gcjYgKSArIG01O1xuXHRcdH0gZWxzZSB7XG5cdFx0XHRtaXAgPSAtIDIuMCAqIGxvZzIoIDEuMTYgKiByb3VnaG5lc3MgKTtcdFx0fVxuXHRcdHJldHVybiBtaXA7XG5cdH1cblx0dmVjNCB0ZXh0dXJlQ3ViZVVWKCBzYW1wbGVyMkQgZW52TWFwLCB2ZWMzIHNhbXBsZURpciwgZmxvYXQgcm91Z2huZXNzICkge1xuXHRcdGZsb2F0IG1pcCA9IGNsYW1wKCByb3VnaG5lc3NUb01pcCggcm91Z2huZXNzICksIG0wLCBjdWJlVVZfbWF4TWlwTGV2ZWwgKTtcblx0XHRmbG9hdCBtaXBGID0gZnJhY3QoIG1pcCApO1xuXHRcdGZsb2F0IG1pcEludCA9IGZsb29yKCBtaXAgKTtcblx0XHR2ZWMzIGNvbG9yMCA9IGJpbGluZWFyQ3ViZVVWKCBlbnZNYXAsIHNhbXBsZURpciwgbWlwSW50ICk7XG5cdFx0aWYgKCBtaXBGID09IDAuMCApIHtcblx0XHRcdHJldHVybiB2ZWM0KCBjb2xvcjAsIDEuMCApO1xuXHRcdH0gZWxzZSB7XG5cdFx0XHR2ZWMzIGNvbG9yMSA9IGJpbGluZWFyQ3ViZVVWKCBlbnZNYXAsIHNhbXBsZURpciwgbWlwSW50ICsgMS4wICk7XG5cdFx0XHRyZXR1cm4gdmVjNCggbWl4KCBjb2xvcjAsIGNvbG9yMSwgbWlwRiApLCAxLjAgKTtcblx0XHR9XG5cdH1cbiNlbmRpZiIsZGVmYXVsdG5vcm1hbF92ZXJ0ZXg6InZlYzMgdHJhbnNmb3JtZWROb3JtYWwgPSBvYmplY3ROb3JtYWw7XG4jaWZkZWYgVVNFX0lOU1RBTkNJTkdcblx0bWF0MyBtID0gbWF0MyggaW5zdGFuY2VNYXRyaXggKTtcblx0dHJhbnNmb3JtZWROb3JtYWwgLz0gdmVjMyggZG90KCBtWyAwIF0sIG1bIDAgXSApLCBkb3QoIG1bIDEgXSwgbVsgMSBdICksIGRvdCggbVsgMiBdLCBtWyAyIF0gKSApO1xuXHR0cmFuc2Zvcm1lZE5vcm1hbCA9IG0gKiB0cmFuc2Zvcm1lZE5vcm1hbDtcbiNlbmRpZlxudHJhbnNmb3JtZWROb3JtYWwgPSBub3JtYWxNYXRyaXggKiB0cmFuc2Zvcm1lZE5vcm1hbDtcbiNpZmRlZiBGTElQX1NJREVEXG5cdHRyYW5zZm9ybWVkTm9ybWFsID0gLSB0cmFuc2Zvcm1lZE5vcm1hbDtcbiNlbmRpZlxuI2lmZGVmIFVTRV9UQU5HRU5UXG5cdHZlYzMgdHJhbnNmb3JtZWRUYW5nZW50ID0gKCBtb2RlbFZpZXdNYXRyaXggKiB2ZWM0KCBvYmplY3RUYW5nZW50LCAwLjAgKSApLnh5ejtcblx0I2lmZGVmIEZMSVBfU0lERURcblx0XHR0cmFuc2Zvcm1lZFRhbmdlbnQgPSAtIHRyYW5zZm9ybWVkVGFuZ2VudDtcblx0I2VuZGlmXG4jZW5kaWYiLGRpc3BsYWNlbWVudG1hcF9wYXJzX3ZlcnRleDoiI2lmZGVmIFVTRV9ESVNQTEFDRU1FTlRNQVBcblx0dW5pZm9ybSBzYW1wbGVyMkQgZGlzcGxhY2VtZW50TWFwO1xuXHR1bmlmb3JtIGZsb2F0IGRpc3BsYWNlbWVudFNjYWxlO1xuXHR1bmlmb3JtIGZsb2F0IGRpc3BsYWNlbWVudEJpYXM7XG4jZW5kaWYiLGRpc3BsYWNlbWVudG1hcF92ZXJ0ZXg6IiNpZmRlZiBVU0VfRElTUExBQ0VNRU5UTUFQXG5cdHRyYW5zZm9ybWVkICs9IG5vcm1hbGl6ZSggb2JqZWN0Tm9ybWFsICkgKiAoIHRleHR1cmUyRCggZGlzcGxhY2VtZW50TWFwLCB2VXYgKS54ICogZGlzcGxhY2VtZW50U2NhbGUgKyBkaXNwbGFjZW1lbnRCaWFzICk7XG4jZW5kaWYiLGVtaXNzaXZlbWFwX2ZyYWdtZW50OiIjaWZkZWYgVVNFX0VNSVNTSVZFTUFQXG5cdHZlYzQgZW1pc3NpdmVDb2xvciA9IHRleHR1cmUyRCggZW1pc3NpdmVNYXAsIHZVdiApO1xuXHRlbWlzc2l2ZUNvbG9yLnJnYiA9IGVtaXNzaXZlTWFwVGV4ZWxUb0xpbmVhciggZW1pc3NpdmVDb2xvciApLnJnYjtcblx0dG90YWxFbWlzc2l2ZVJhZGlhbmNlICo9IGVtaXNzaXZlQ29sb3IucmdiO1xuI2VuZGlmIixlbWlzc2l2ZW1hcF9wYXJzX2ZyYWdtZW50OiIjaWZkZWYgVVNFX0VNSVNTSVZFTUFQXG5cdHVuaWZvcm0gc2FtcGxlcjJEIGVtaXNzaXZlTWFwO1xuI2VuZGlmIixlbmNvZGluZ3NfZnJhZ21lbnQ6ImdsX0ZyYWdDb2xvciA9IGxpbmVhclRvT3V0cHV0VGV4ZWwoIGdsX0ZyYWdDb2xvciApOyIsZW5jb2RpbmdzX3BhcnNfZnJhZ21lbnQ6IlxudmVjNCBMaW5lYXJUb0xpbmVhciggaW4gdmVjNCB2YWx1ZSApIHtcblx0cmV0dXJuIHZhbHVlO1xufVxudmVjNCBHYW1tYVRvTGluZWFyKCBpbiB2ZWM0IHZhbHVlLCBpbiBmbG9hdCBnYW1tYUZhY3RvciApIHtcblx0cmV0dXJuIHZlYzQoIHBvdyggdmFsdWUucmdiLCB2ZWMzKCBnYW1tYUZhY3RvciApICksIHZhbHVlLmEgKTtcbn1cbnZlYzQgTGluZWFyVG9HYW1tYSggaW4gdmVjNCB2YWx1ZSwgaW4gZmxvYXQgZ2FtbWFGYWN0b3IgKSB7XG5cdHJldHVybiB2ZWM0KCBwb3coIHZhbHVlLnJnYiwgdmVjMyggMS4wIC8gZ2FtbWFGYWN0b3IgKSApLCB2YWx1ZS5hICk7XG59XG52ZWM0IHNSR0JUb0xpbmVhciggaW4gdmVjNCB2YWx1ZSApIHtcblx0cmV0dXJuIHZlYzQoIG1peCggcG93KCB2YWx1ZS5yZ2IgKiAwLjk0Nzg2NzI5ODYgKyB2ZWMzKCAwLjA1MjEzMjcwMTQgKSwgdmVjMyggMi40ICkgKSwgdmFsdWUucmdiICogMC4wNzczOTkzODA4LCB2ZWMzKCBsZXNzVGhhbkVxdWFsKCB2YWx1ZS5yZ2IsIHZlYzMoIDAuMDQwNDUgKSApICkgKSwgdmFsdWUuYSApO1xufVxudmVjNCBMaW5lYXJUb3NSR0IoIGluIHZlYzQgdmFsdWUgKSB7XG5cdHJldHVybiB2ZWM0KCBtaXgoIHBvdyggdmFsdWUucmdiLCB2ZWMzKCAwLjQxNjY2ICkgKSAqIDEuMDU1IC0gdmVjMyggMC4wNTUgKSwgdmFsdWUucmdiICogMTIuOTIsIHZlYzMoIGxlc3NUaGFuRXF1YWwoIHZhbHVlLnJnYiwgdmVjMyggMC4wMDMxMzA4ICkgKSApICksIHZhbHVlLmEgKTtcbn1cbnZlYzQgUkdCRVRvTGluZWFyKCBpbiB2ZWM0IHZhbHVlICkge1xuXHRyZXR1cm4gdmVjNCggdmFsdWUucmdiICogZXhwMiggdmFsdWUuYSAqIDI1NS4wIC0gMTI4LjAgKSwgMS4wICk7XG59XG52ZWM0IExpbmVhclRvUkdCRSggaW4gdmVjNCB2YWx1ZSApIHtcblx0ZmxvYXQgbWF4Q29tcG9uZW50ID0gbWF4KCBtYXgoIHZhbHVlLnIsIHZhbHVlLmcgKSwgdmFsdWUuYiApO1xuXHRmbG9hdCBmRXhwID0gY2xhbXAoIGNlaWwoIGxvZzIoIG1heENvbXBvbmVudCApICksIC0xMjguMCwgMTI3LjAgKTtcblx0cmV0dXJuIHZlYzQoIHZhbHVlLnJnYiAvIGV4cDIoIGZFeHAgKSwgKCBmRXhwICsgMTI4LjAgKSAvIDI1NS4wICk7XG59XG52ZWM0IFJHQk1Ub0xpbmVhciggaW4gdmVjNCB2YWx1ZSwgaW4gZmxvYXQgbWF4UmFuZ2UgKSB7XG5cdHJldHVybiB2ZWM0KCB2YWx1ZS5yZ2IgKiB2YWx1ZS5hICogbWF4UmFuZ2UsIDEuMCApO1xufVxudmVjNCBMaW5lYXJUb1JHQk0oIGluIHZlYzQgdmFsdWUsIGluIGZsb2F0IG1heFJhbmdlICkge1xuXHRmbG9hdCBtYXhSR0IgPSBtYXgoIHZhbHVlLnIsIG1heCggdmFsdWUuZywgdmFsdWUuYiApICk7XG5cdGZsb2F0IE0gPSBjbGFtcCggbWF4UkdCIC8gbWF4UmFuZ2UsIDAuMCwgMS4wICk7XG5cdE0gPSBjZWlsKCBNICogMjU1LjAgKSAvIDI1NS4wO1xuXHRyZXR1cm4gdmVjNCggdmFsdWUucmdiIC8gKCBNICogbWF4UmFuZ2UgKSwgTSApO1xufVxudmVjNCBSR0JEVG9MaW5lYXIoIGluIHZlYzQgdmFsdWUsIGluIGZsb2F0IG1heFJhbmdlICkge1xuXHRyZXR1cm4gdmVjNCggdmFsdWUucmdiICogKCAoIG1heFJhbmdlIC8gMjU1LjAgKSAvIHZhbHVlLmEgKSwgMS4wICk7XG59XG52ZWM0IExpbmVhclRvUkdCRCggaW4gdmVjNCB2YWx1ZSwgaW4gZmxvYXQgbWF4UmFuZ2UgKSB7XG5cdGZsb2F0IG1heFJHQiA9IG1heCggdmFsdWUuciwgbWF4KCB2YWx1ZS5nLCB2YWx1ZS5iICkgKTtcblx0ZmxvYXQgRCA9IG1heCggbWF4UmFuZ2UgLyBtYXhSR0IsIDEuMCApO1xuXHREID0gY2xhbXAoIGZsb29yKCBEICkgLyAyNTUuMCwgMC4wLCAxLjAgKTtcblx0cmV0dXJuIHZlYzQoIHZhbHVlLnJnYiAqICggRCAqICggMjU1LjAgLyBtYXhSYW5nZSApICksIEQgKTtcbn1cbmNvbnN0IG1hdDMgY0xvZ0x1dk0gPSBtYXQzKCAwLjIyMDksIDAuMzM5MCwgMC40MTg0LCAwLjExMzgsIDAuNjc4MCwgMC43MzE5LCAwLjAxMDIsIDAuMTEzMCwgMC4yOTY5ICk7XG52ZWM0IExpbmVhclRvTG9nTHV2KCBpbiB2ZWM0IHZhbHVlICkge1xuXHR2ZWMzIFhwX1lfWFlacCA9IGNMb2dMdXZNICogdmFsdWUucmdiO1xuXHRYcF9ZX1hZWnAgPSBtYXgoIFhwX1lfWFlacCwgdmVjMyggMWUtNiwgMWUtNiwgMWUtNiApICk7XG5cdHZlYzQgdlJlc3VsdDtcblx0dlJlc3VsdC54eSA9IFhwX1lfWFlacC54eSAvIFhwX1lfWFlacC56O1xuXHRmbG9hdCBMZSA9IDIuMCAqIGxvZzIoWHBfWV9YWVpwLnkpICsgMTI3LjA7XG5cdHZSZXN1bHQudyA9IGZyYWN0KCBMZSApO1xuXHR2UmVzdWx0LnogPSAoIExlIC0gKCBmbG9vciggdlJlc3VsdC53ICogMjU1LjAgKSApIC8gMjU1LjAgKSAvIDI1NS4wO1xuXHRyZXR1cm4gdlJlc3VsdDtcbn1cbmNvbnN0IG1hdDMgY0xvZ0x1dkludmVyc2VNID0gbWF0MyggNi4wMDE0LCAtMi43MDA4LCAtMS43OTk2LCAtMS4zMzIwLCAzLjEwMjksIC01Ljc3MjEsIDAuMzAwOCwgLTEuMDg4MiwgNS42MjY4ICk7XG52ZWM0IExvZ0x1dlRvTGluZWFyKCBpbiB2ZWM0IHZhbHVlICkge1xuXHRmbG9hdCBMZSA9IHZhbHVlLnogKiAyNTUuMCArIHZhbHVlLnc7XG5cdHZlYzMgWHBfWV9YWVpwO1xuXHRYcF9ZX1hZWnAueSA9IGV4cDIoICggTGUgLSAxMjcuMCApIC8gMi4wICk7XG5cdFhwX1lfWFlacC56ID0gWHBfWV9YWVpwLnkgLyB2YWx1ZS55O1xuXHRYcF9ZX1hZWnAueCA9IHZhbHVlLnggKiBYcF9ZX1hZWnAuejtcblx0dmVjMyB2UkdCID0gY0xvZ0x1dkludmVyc2VNICogWHBfWV9YWVpwLnJnYjtcblx0cmV0dXJuIHZlYzQoIG1heCggdlJHQiwgMC4wICksIDEuMCApO1xufSIsZW52bWFwX2ZyYWdtZW50OiIjaWZkZWYgVVNFX0VOVk1BUFxuXHQjaWZkZWYgRU5WX1dPUkxEUE9TXG5cdFx0dmVjMyBjYW1lcmFUb0ZyYWc7XG5cdFx0aWYgKCBpc09ydGhvZ3JhcGhpYyApIHtcblx0XHRcdGNhbWVyYVRvRnJhZyA9IG5vcm1hbGl6ZSggdmVjMyggLSB2aWV3TWF0cml4WyAwIF1bIDIgXSwgLSB2aWV3TWF0cml4WyAxIF1bIDIgXSwgLSB2aWV3TWF0cml4WyAyIF1bIDIgXSApICk7XG5cdFx0fSBlbHNlIHtcblx0XHRcdGNhbWVyYVRvRnJhZyA9IG5vcm1hbGl6ZSggdldvcmxkUG9zaXRpb24gLSBjYW1lcmFQb3NpdGlvbiApO1xuXHRcdH1cblx0XHR2ZWMzIHdvcmxkTm9ybWFsID0gaW52ZXJzZVRyYW5zZm9ybURpcmVjdGlvbiggbm9ybWFsLCB2aWV3TWF0cml4ICk7XG5cdFx0I2lmZGVmIEVOVk1BUF9NT0RFX1JFRkxFQ1RJT05cblx0XHRcdHZlYzMgcmVmbGVjdFZlYyA9IHJlZmxlY3QoIGNhbWVyYVRvRnJhZywgd29ybGROb3JtYWwgKTtcblx0XHQjZWxzZVxuXHRcdFx0dmVjMyByZWZsZWN0VmVjID0gcmVmcmFjdCggY2FtZXJhVG9GcmFnLCB3b3JsZE5vcm1hbCwgcmVmcmFjdGlvblJhdGlvICk7XG5cdFx0I2VuZGlmXG5cdCNlbHNlXG5cdFx0dmVjMyByZWZsZWN0VmVjID0gdlJlZmxlY3Q7XG5cdCNlbmRpZlxuXHQjaWZkZWYgRU5WTUFQX1RZUEVfQ1VCRVxuXHRcdHZlYzQgZW52Q29sb3IgPSB0ZXh0dXJlQ3ViZSggZW52TWFwLCB2ZWMzKCBmbGlwRW52TWFwICogcmVmbGVjdFZlYy54LCByZWZsZWN0VmVjLnl6ICkgKTtcblx0I2VsaWYgZGVmaW5lZCggRU5WTUFQX1RZUEVfQ1VCRV9VViApXG5cdFx0dmVjNCBlbnZDb2xvciA9IHRleHR1cmVDdWJlVVYoIGVudk1hcCwgcmVmbGVjdFZlYywgMC4wICk7XG5cdCNlbHNlXG5cdFx0dmVjNCBlbnZDb2xvciA9IHZlYzQoIDAuMCApO1xuXHQjZW5kaWZcblx0I2lmbmRlZiBFTlZNQVBfVFlQRV9DVUJFX1VWXG5cdFx0ZW52Q29sb3IgPSBlbnZNYXBUZXhlbFRvTGluZWFyKCBlbnZDb2xvciApO1xuXHQjZW5kaWZcblx0I2lmZGVmIEVOVk1BUF9CTEVORElOR19NVUxUSVBMWVxuXHRcdG91dGdvaW5nTGlnaHQgPSBtaXgoIG91dGdvaW5nTGlnaHQsIG91dGdvaW5nTGlnaHQgKiBlbnZDb2xvci54eXosIHNwZWN1bGFyU3RyZW5ndGggKiByZWZsZWN0aXZpdHkgKTtcblx0I2VsaWYgZGVmaW5lZCggRU5WTUFQX0JMRU5ESU5HX01JWCApXG5cdFx0b3V0Z29pbmdMaWdodCA9IG1peCggb3V0Z29pbmdMaWdodCwgZW52Q29sb3IueHl6LCBzcGVjdWxhclN0cmVuZ3RoICogcmVmbGVjdGl2aXR5ICk7XG5cdCNlbGlmIGRlZmluZWQoIEVOVk1BUF9CTEVORElOR19BREQgKVxuXHRcdG91dGdvaW5nTGlnaHQgKz0gZW52Q29sb3IueHl6ICogc3BlY3VsYXJTdHJlbmd0aCAqIHJlZmxlY3Rpdml0eTtcblx0I2VuZGlmXG4jZW5kaWYiLGVudm1hcF9jb21tb25fcGFyc19mcmFnbWVudDoiI2lmZGVmIFVTRV9FTlZNQVBcblx0dW5pZm9ybSBmbG9hdCBlbnZNYXBJbnRlbnNpdHk7XG5cdHVuaWZvcm0gZmxvYXQgZmxpcEVudk1hcDtcblx0dW5pZm9ybSBpbnQgbWF4TWlwTGV2ZWw7XG5cdCNpZmRlZiBFTlZNQVBfVFlQRV9DVUJFXG5cdFx0dW5pZm9ybSBzYW1wbGVyQ3ViZSBlbnZNYXA7XG5cdCNlbHNlXG5cdFx0dW5pZm9ybSBzYW1wbGVyMkQgZW52TWFwO1xuXHQjZW5kaWZcblx0XG4jZW5kaWYiLGVudm1hcF9wYXJzX2ZyYWdtZW50OiIjaWZkZWYgVVNFX0VOVk1BUFxuXHR1bmlmb3JtIGZsb2F0IHJlZmxlY3Rpdml0eTtcblx0I2lmIGRlZmluZWQoIFVTRV9CVU1QTUFQICkgfHwgZGVmaW5lZCggVVNFX05PUk1BTE1BUCApIHx8IGRlZmluZWQoIFBIT05HIClcblx0XHQjZGVmaW5lIEVOVl9XT1JMRFBPU1xuXHQjZW5kaWZcblx0I2lmZGVmIEVOVl9XT1JMRFBPU1xuXHRcdHZhcnlpbmcgdmVjMyB2V29ybGRQb3NpdGlvbjtcblx0XHR1bmlmb3JtIGZsb2F0IHJlZnJhY3Rpb25SYXRpbztcblx0I2Vsc2Vcblx0XHR2YXJ5aW5nIHZlYzMgdlJlZmxlY3Q7XG5cdCNlbmRpZlxuI2VuZGlmIixlbnZtYXBfcGFyc192ZXJ0ZXg6IiNpZmRlZiBVU0VfRU5WTUFQXG5cdCNpZiBkZWZpbmVkKCBVU0VfQlVNUE1BUCApIHx8IGRlZmluZWQoIFVTRV9OT1JNQUxNQVAgKSB8fGRlZmluZWQoIFBIT05HIClcblx0XHQjZGVmaW5lIEVOVl9XT1JMRFBPU1xuXHQjZW5kaWZcblx0I2lmZGVmIEVOVl9XT1JMRFBPU1xuXHRcdFxuXHRcdHZhcnlpbmcgdmVjMyB2V29ybGRQb3NpdGlvbjtcblx0I2Vsc2Vcblx0XHR2YXJ5aW5nIHZlYzMgdlJlZmxlY3Q7XG5cdFx0dW5pZm9ybSBmbG9hdCByZWZyYWN0aW9uUmF0aW87XG5cdCNlbmRpZlxuI2VuZGlmIixlbnZtYXBfcGh5c2ljYWxfcGFyc19mcmFnbWVudDoiI2lmIGRlZmluZWQoIFVTRV9FTlZNQVAgKVxuXHQjaWZkZWYgRU5WTUFQX01PREVfUkVGUkFDVElPTlxuXHRcdHVuaWZvcm0gZmxvYXQgcmVmcmFjdGlvblJhdGlvO1xuXHQjZW5kaWZcblx0dmVjMyBnZXRMaWdodFByb2JlSW5kaXJlY3RJcnJhZGlhbmNlKCBjb25zdCBpbiBHZW9tZXRyaWNDb250ZXh0IGdlb21ldHJ5LCBjb25zdCBpbiBpbnQgbWF4TUlQTGV2ZWwgKSB7XG5cdFx0dmVjMyB3b3JsZE5vcm1hbCA9IGludmVyc2VUcmFuc2Zvcm1EaXJlY3Rpb24oIGdlb21ldHJ5Lm5vcm1hbCwgdmlld01hdHJpeCApO1xuXHRcdCNpZmRlZiBFTlZNQVBfVFlQRV9DVUJFXG5cdFx0XHR2ZWMzIHF1ZXJ5VmVjID0gdmVjMyggZmxpcEVudk1hcCAqIHdvcmxkTm9ybWFsLngsIHdvcmxkTm9ybWFsLnl6ICk7XG5cdFx0XHQjaWZkZWYgVEVYVFVSRV9MT0RfRVhUXG5cdFx0XHRcdHZlYzQgZW52TWFwQ29sb3IgPSB0ZXh0dXJlQ3ViZUxvZEVYVCggZW52TWFwLCBxdWVyeVZlYywgZmxvYXQoIG1heE1JUExldmVsICkgKTtcblx0XHRcdCNlbHNlXG5cdFx0XHRcdHZlYzQgZW52TWFwQ29sb3IgPSB0ZXh0dXJlQ3ViZSggZW52TWFwLCBxdWVyeVZlYywgZmxvYXQoIG1heE1JUExldmVsICkgKTtcblx0XHRcdCNlbmRpZlxuXHRcdFx0ZW52TWFwQ29sb3IucmdiID0gZW52TWFwVGV4ZWxUb0xpbmVhciggZW52TWFwQ29sb3IgKS5yZ2I7XG5cdFx0I2VsaWYgZGVmaW5lZCggRU5WTUFQX1RZUEVfQ1VCRV9VViApXG5cdFx0XHR2ZWM0IGVudk1hcENvbG9yID0gdGV4dHVyZUN1YmVVViggZW52TWFwLCB3b3JsZE5vcm1hbCwgMS4wICk7XG5cdFx0I2Vsc2Vcblx0XHRcdHZlYzQgZW52TWFwQ29sb3IgPSB2ZWM0KCAwLjAgKTtcblx0XHQjZW5kaWZcblx0XHRyZXR1cm4gUEkgKiBlbnZNYXBDb2xvci5yZ2IgKiBlbnZNYXBJbnRlbnNpdHk7XG5cdH1cblx0ZmxvYXQgZ2V0U3BlY3VsYXJNSVBMZXZlbCggY29uc3QgaW4gZmxvYXQgcm91Z2huZXNzLCBjb25zdCBpbiBpbnQgbWF4TUlQTGV2ZWwgKSB7XG5cdFx0ZmxvYXQgbWF4TUlQTGV2ZWxTY2FsYXIgPSBmbG9hdCggbWF4TUlQTGV2ZWwgKTtcblx0XHRmbG9hdCBzaWdtYSA9IFBJICogcm91Z2huZXNzICogcm91Z2huZXNzIC8gKCAxLjAgKyByb3VnaG5lc3MgKTtcblx0XHRmbG9hdCBkZXNpcmVkTUlQTGV2ZWwgPSBtYXhNSVBMZXZlbFNjYWxhciArIGxvZzIoIHNpZ21hICk7XG5cdFx0cmV0dXJuIGNsYW1wKCBkZXNpcmVkTUlQTGV2ZWwsIDAuMCwgbWF4TUlQTGV2ZWxTY2FsYXIgKTtcblx0fVxuXHR2ZWMzIGdldExpZ2h0UHJvYmVJbmRpcmVjdFJhZGlhbmNlKCBjb25zdCBpbiB2ZWMzIHZpZXdEaXIsIGNvbnN0IGluIHZlYzMgbm9ybWFsLCBjb25zdCBpbiBmbG9hdCByb3VnaG5lc3MsIGNvbnN0IGluIGludCBtYXhNSVBMZXZlbCApIHtcblx0XHQjaWZkZWYgRU5WTUFQX01PREVfUkVGTEVDVElPTlxuXHRcdFx0dmVjMyByZWZsZWN0VmVjID0gcmVmbGVjdCggLXZpZXdEaXIsIG5vcm1hbCApO1xuXHRcdFx0cmVmbGVjdFZlYyA9IG5vcm1hbGl6ZSggbWl4KCByZWZsZWN0VmVjLCBub3JtYWwsIHJvdWdobmVzcyAqIHJvdWdobmVzcykgKTtcblx0XHQjZWxzZVxuXHRcdFx0dmVjMyByZWZsZWN0VmVjID0gcmVmcmFjdCggLXZpZXdEaXIsIG5vcm1hbCwgcmVmcmFjdGlvblJhdGlvICk7XG5cdFx0I2VuZGlmXG5cdFx0cmVmbGVjdFZlYyA9IGludmVyc2VUcmFuc2Zvcm1EaXJlY3Rpb24oIHJlZmxlY3RWZWMsIHZpZXdNYXRyaXggKTtcblx0XHRmbG9hdCBzcGVjdWxhck1JUExldmVsID0gZ2V0U3BlY3VsYXJNSVBMZXZlbCggcm91Z2huZXNzLCBtYXhNSVBMZXZlbCApO1xuXHRcdCNpZmRlZiBFTlZNQVBfVFlQRV9DVUJFXG5cdFx0XHR2ZWMzIHF1ZXJ5UmVmbGVjdFZlYyA9IHZlYzMoIGZsaXBFbnZNYXAgKiByZWZsZWN0VmVjLngsIHJlZmxlY3RWZWMueXogKTtcblx0XHRcdCNpZmRlZiBURVhUVVJFX0xPRF9FWFRcblx0XHRcdFx0dmVjNCBlbnZNYXBDb2xvciA9IHRleHR1cmVDdWJlTG9kRVhUKCBlbnZNYXAsIHF1ZXJ5UmVmbGVjdFZlYywgc3BlY3VsYXJNSVBMZXZlbCApO1xuXHRcdFx0I2Vsc2Vcblx0XHRcdFx0dmVjNCBlbnZNYXBDb2xvciA9IHRleHR1cmVDdWJlKCBlbnZNYXAsIHF1ZXJ5UmVmbGVjdFZlYywgc3BlY3VsYXJNSVBMZXZlbCApO1xuXHRcdFx0I2VuZGlmXG5cdFx0XHRlbnZNYXBDb2xvci5yZ2IgPSBlbnZNYXBUZXhlbFRvTGluZWFyKCBlbnZNYXBDb2xvciApLnJnYjtcblx0XHQjZWxpZiBkZWZpbmVkKCBFTlZNQVBfVFlQRV9DVUJFX1VWIClcblx0XHRcdHZlYzQgZW52TWFwQ29sb3IgPSB0ZXh0dXJlQ3ViZVVWKCBlbnZNYXAsIHJlZmxlY3RWZWMsIHJvdWdobmVzcyApO1xuXHRcdCNlbmRpZlxuXHRcdHJldHVybiBlbnZNYXBDb2xvci5yZ2IgKiBlbnZNYXBJbnRlbnNpdHk7XG5cdH1cbiNlbmRpZiIsZW52bWFwX3ZlcnRleDoiI2lmZGVmIFVTRV9FTlZNQVBcblx0I2lmZGVmIEVOVl9XT1JMRFBPU1xuXHRcdHZXb3JsZFBvc2l0aW9uID0gd29ybGRQb3NpdGlvbi54eXo7XG5cdCNlbHNlXG5cdFx0dmVjMyBjYW1lcmFUb1ZlcnRleDtcblx0XHRpZiAoIGlzT3J0aG9ncmFwaGljICkge1xuXHRcdFx0Y2FtZXJhVG9WZXJ0ZXggPSBub3JtYWxpemUoIHZlYzMoIC0gdmlld01hdHJpeFsgMCBdWyAyIF0sIC0gdmlld01hdHJpeFsgMSBdWyAyIF0sIC0gdmlld01hdHJpeFsgMiBdWyAyIF0gKSApO1xuXHRcdH0gZWxzZSB7XG5cdFx0XHRjYW1lcmFUb1ZlcnRleCA9IG5vcm1hbGl6ZSggd29ybGRQb3NpdGlvbi54eXogLSBjYW1lcmFQb3NpdGlvbiApO1xuXHRcdH1cblx0XHR2ZWMzIHdvcmxkTm9ybWFsID0gaW52ZXJzZVRyYW5zZm9ybURpcmVjdGlvbiggdHJhbnNmb3JtZWROb3JtYWwsIHZpZXdNYXRyaXggKTtcblx0XHQjaWZkZWYgRU5WTUFQX01PREVfUkVGTEVDVElPTlxuXHRcdFx0dlJlZmxlY3QgPSByZWZsZWN0KCBjYW1lcmFUb1ZlcnRleCwgd29ybGROb3JtYWwgKTtcblx0XHQjZWxzZVxuXHRcdFx0dlJlZmxlY3QgPSByZWZyYWN0KCBjYW1lcmFUb1ZlcnRleCwgd29ybGROb3JtYWwsIHJlZnJhY3Rpb25SYXRpbyApO1xuXHRcdCNlbmRpZlxuXHQjZW5kaWZcbiNlbmRpZiIsZm9nX3ZlcnRleDoiI2lmZGVmIFVTRV9GT0dcblx0Zm9nRGVwdGggPSAtIG12UG9zaXRpb24uejtcbiNlbmRpZiIsZm9nX3BhcnNfdmVydGV4OiIjaWZkZWYgVVNFX0ZPR1xuXHR2YXJ5aW5nIGZsb2F0IGZvZ0RlcHRoO1xuI2VuZGlmIixmb2dfZnJhZ21lbnQ6IiNpZmRlZiBVU0VfRk9HXG5cdCNpZmRlZiBGT0dfRVhQMlxuXHRcdGZsb2F0IGZvZ0ZhY3RvciA9IDEuMCAtIGV4cCggLSBmb2dEZW5zaXR5ICogZm9nRGVuc2l0eSAqIGZvZ0RlcHRoICogZm9nRGVwdGggKTtcblx0I2Vsc2Vcblx0XHRmbG9hdCBmb2dGYWN0b3IgPSBzbW9vdGhzdGVwKCBmb2dOZWFyLCBmb2dGYXIsIGZvZ0RlcHRoICk7XG5cdCNlbmRpZlxuXHRnbF9GcmFnQ29sb3IucmdiID0gbWl4KCBnbF9GcmFnQ29sb3IucmdiLCBmb2dDb2xvciwgZm9nRmFjdG9yICk7XG4jZW5kaWYiLGZvZ19wYXJzX2ZyYWdtZW50OiIjaWZkZWYgVVNFX0ZPR1xuXHR1bmlmb3JtIHZlYzMgZm9nQ29sb3I7XG5cdHZhcnlpbmcgZmxvYXQgZm9nRGVwdGg7XG5cdCNpZmRlZiBGT0dfRVhQMlxuXHRcdHVuaWZvcm0gZmxvYXQgZm9nRGVuc2l0eTtcblx0I2Vsc2Vcblx0XHR1bmlmb3JtIGZsb2F0IGZvZ05lYXI7XG5cdFx0dW5pZm9ybSBmbG9hdCBmb2dGYXI7XG5cdCNlbmRpZlxuI2VuZGlmIixncmFkaWVudG1hcF9wYXJzX2ZyYWdtZW50OiIjaWZkZWYgVVNFX0dSQURJRU5UTUFQXG5cdHVuaWZvcm0gc2FtcGxlcjJEIGdyYWRpZW50TWFwO1xuI2VuZGlmXG52ZWMzIGdldEdyYWRpZW50SXJyYWRpYW5jZSggdmVjMyBub3JtYWwsIHZlYzMgbGlnaHREaXJlY3Rpb24gKSB7XG5cdGZsb2F0IGRvdE5MID0gZG90KCBub3JtYWwsIGxpZ2h0RGlyZWN0aW9uICk7XG5cdHZlYzIgY29vcmQgPSB2ZWMyKCBkb3ROTCAqIDAuNSArIDAuNSwgMC4wICk7XG5cdCNpZmRlZiBVU0VfR1JBRElFTlRNQVBcblx0XHRyZXR1cm4gdGV4dHVyZTJEKCBncmFkaWVudE1hcCwgY29vcmQgKS5yZ2I7XG5cdCNlbHNlXG5cdFx0cmV0dXJuICggY29vcmQueCA8IDAuNyApID8gdmVjMyggMC43ICkgOiB2ZWMzKCAxLjAgKTtcblx0I2VuZGlmXG59IixsaWdodG1hcF9mcmFnbWVudDoiI2lmZGVmIFVTRV9MSUdIVE1BUFxuXHR2ZWM0IGxpZ2h0TWFwVGV4ZWw9IHRleHR1cmUyRCggbGlnaHRNYXAsIHZVdjIgKTtcblx0cmVmbGVjdGVkTGlnaHQuaW5kaXJlY3REaWZmdXNlICs9IFBJICogbGlnaHRNYXBUZXhlbFRvTGluZWFyKCBsaWdodE1hcFRleGVsICkucmdiICogbGlnaHRNYXBJbnRlbnNpdHk7XG4jZW5kaWYiLGxpZ2h0bWFwX3BhcnNfZnJhZ21lbnQ6IiNpZmRlZiBVU0VfTElHSFRNQVBcblx0dW5pZm9ybSBzYW1wbGVyMkQgbGlnaHRNYXA7XG5cdHVuaWZvcm0gZmxvYXQgbGlnaHRNYXBJbnRlbnNpdHk7XG4jZW5kaWYiLGxpZ2h0c19sYW1iZXJ0X3ZlcnRleDoidmVjMyBkaWZmdXNlID0gdmVjMyggMS4wICk7XG5HZW9tZXRyaWNDb250ZXh0IGdlb21ldHJ5O1xuZ2VvbWV0cnkucG9zaXRpb24gPSBtdlBvc2l0aW9uLnh5ejtcbmdlb21ldHJ5Lm5vcm1hbCA9IG5vcm1hbGl6ZSggdHJhbnNmb3JtZWROb3JtYWwgKTtcbmdlb21ldHJ5LnZpZXdEaXIgPSAoIGlzT3J0aG9ncmFwaGljICkgPyB2ZWMzKCAwLCAwLCAxICkgOiBub3JtYWxpemUoIC1tdlBvc2l0aW9uLnh5eiApO1xuR2VvbWV0cmljQ29udGV4dCBiYWNrR2VvbWV0cnk7XG5iYWNrR2VvbWV0cnkucG9zaXRpb24gPSBnZW9tZXRyeS5wb3NpdGlvbjtcbmJhY2tHZW9tZXRyeS5ub3JtYWwgPSAtZ2VvbWV0cnkubm9ybWFsO1xuYmFja0dlb21ldHJ5LnZpZXdEaXIgPSBnZW9tZXRyeS52aWV3RGlyO1xudkxpZ2h0RnJvbnQgPSB2ZWMzKCAwLjAgKTtcbnZJbmRpcmVjdEZyb250ID0gdmVjMyggMC4wICk7XG4jaWZkZWYgRE9VQkxFX1NJREVEXG5cdHZMaWdodEJhY2sgPSB2ZWMzKCAwLjAgKTtcblx0dkluZGlyZWN0QmFjayA9IHZlYzMoIDAuMCApO1xuI2VuZGlmXG5JbmNpZGVudExpZ2h0IGRpcmVjdExpZ2h0O1xuZmxvYXQgZG90Tkw7XG52ZWMzIGRpcmVjdExpZ2h0Q29sb3JfRGlmZnVzZTtcbnZJbmRpcmVjdEZyb250ICs9IGdldEFtYmllbnRMaWdodElycmFkaWFuY2UoIGFtYmllbnRMaWdodENvbG9yICk7XG52SW5kaXJlY3RGcm9udCArPSBnZXRMaWdodFByb2JlSXJyYWRpYW5jZSggbGlnaHRQcm9iZSwgZ2VvbWV0cnkgKTtcbiNpZmRlZiBET1VCTEVfU0lERURcblx0dkluZGlyZWN0QmFjayArPSBnZXRBbWJpZW50TGlnaHRJcnJhZGlhbmNlKCBhbWJpZW50TGlnaHRDb2xvciApO1xuXHR2SW5kaXJlY3RCYWNrICs9IGdldExpZ2h0UHJvYmVJcnJhZGlhbmNlKCBsaWdodFByb2JlLCBiYWNrR2VvbWV0cnkgKTtcbiNlbmRpZlxuI2lmIE5VTV9QT0lOVF9MSUdIVFMgPiAwXG5cdCNwcmFnbWEgdW5yb2xsX2xvb3Bfc3RhcnRcblx0Zm9yICggaW50IGkgPSAwOyBpIDwgTlVNX1BPSU5UX0xJR0hUUzsgaSArKyApIHtcblx0XHRnZXRQb2ludERpcmVjdExpZ2h0SXJyYWRpYW5jZSggcG9pbnRMaWdodHNbIGkgXSwgZ2VvbWV0cnksIGRpcmVjdExpZ2h0ICk7XG5cdFx0ZG90TkwgPSBkb3QoIGdlb21ldHJ5Lm5vcm1hbCwgZGlyZWN0TGlnaHQuZGlyZWN0aW9uICk7XG5cdFx0ZGlyZWN0TGlnaHRDb2xvcl9EaWZmdXNlID0gUEkgKiBkaXJlY3RMaWdodC5jb2xvcjtcblx0XHR2TGlnaHRGcm9udCArPSBzYXR1cmF0ZSggZG90TkwgKSAqIGRpcmVjdExpZ2h0Q29sb3JfRGlmZnVzZTtcblx0XHQjaWZkZWYgRE9VQkxFX1NJREVEXG5cdFx0XHR2TGlnaHRCYWNrICs9IHNhdHVyYXRlKCAtZG90TkwgKSAqIGRpcmVjdExpZ2h0Q29sb3JfRGlmZnVzZTtcblx0XHQjZW5kaWZcblx0fVxuXHQjcHJhZ21hIHVucm9sbF9sb29wX2VuZFxuI2VuZGlmXG4jaWYgTlVNX1NQT1RfTElHSFRTID4gMFxuXHQjcHJhZ21hIHVucm9sbF9sb29wX3N0YXJ0XG5cdGZvciAoIGludCBpID0gMDsgaSA8IE5VTV9TUE9UX0xJR0hUUzsgaSArKyApIHtcblx0XHRnZXRTcG90RGlyZWN0TGlnaHRJcnJhZGlhbmNlKCBzcG90TGlnaHRzWyBpIF0sIGdlb21ldHJ5LCBkaXJlY3RMaWdodCApO1xuXHRcdGRvdE5MID0gZG90KCBnZW9tZXRyeS5ub3JtYWwsIGRpcmVjdExpZ2h0LmRpcmVjdGlvbiApO1xuXHRcdGRpcmVjdExpZ2h0Q29sb3JfRGlmZnVzZSA9IFBJICogZGlyZWN0TGlnaHQuY29sb3I7XG5cdFx0dkxpZ2h0RnJvbnQgKz0gc2F0dXJhdGUoIGRvdE5MICkgKiBkaXJlY3RMaWdodENvbG9yX0RpZmZ1c2U7XG5cdFx0I2lmZGVmIERPVUJMRV9TSURFRFxuXHRcdFx0dkxpZ2h0QmFjayArPSBzYXR1cmF0ZSggLWRvdE5MICkgKiBkaXJlY3RMaWdodENvbG9yX0RpZmZ1c2U7XG5cdFx0I2VuZGlmXG5cdH1cblx0I3ByYWdtYSB1bnJvbGxfbG9vcF9lbmRcbiNlbmRpZlxuI2lmIE5VTV9ESVJfTElHSFRTID4gMFxuXHQjcHJhZ21hIHVucm9sbF9sb29wX3N0YXJ0XG5cdGZvciAoIGludCBpID0gMDsgaSA8IE5VTV9ESVJfTElHSFRTOyBpICsrICkge1xuXHRcdGdldERpcmVjdGlvbmFsRGlyZWN0TGlnaHRJcnJhZGlhbmNlKCBkaXJlY3Rpb25hbExpZ2h0c1sgaSBdLCBnZW9tZXRyeSwgZGlyZWN0TGlnaHQgKTtcblx0XHRkb3ROTCA9IGRvdCggZ2VvbWV0cnkubm9ybWFsLCBkaXJlY3RMaWdodC5kaXJlY3Rpb24gKTtcblx0XHRkaXJlY3RMaWdodENvbG9yX0RpZmZ1c2UgPSBQSSAqIGRpcmVjdExpZ2h0LmNvbG9yO1xuXHRcdHZMaWdodEZyb250ICs9IHNhdHVyYXRlKCBkb3ROTCApICogZGlyZWN0TGlnaHRDb2xvcl9EaWZmdXNlO1xuXHRcdCNpZmRlZiBET1VCTEVfU0lERURcblx0XHRcdHZMaWdodEJhY2sgKz0gc2F0dXJhdGUoIC1kb3ROTCApICogZGlyZWN0TGlnaHRDb2xvcl9EaWZmdXNlO1xuXHRcdCNlbmRpZlxuXHR9XG5cdCNwcmFnbWEgdW5yb2xsX2xvb3BfZW5kXG4jZW5kaWZcbiNpZiBOVU1fSEVNSV9MSUdIVFMgPiAwXG5cdCNwcmFnbWEgdW5yb2xsX2xvb3Bfc3RhcnRcblx0Zm9yICggaW50IGkgPSAwOyBpIDwgTlVNX0hFTUlfTElHSFRTOyBpICsrICkge1xuXHRcdHZJbmRpcmVjdEZyb250ICs9IGdldEhlbWlzcGhlcmVMaWdodElycmFkaWFuY2UoIGhlbWlzcGhlcmVMaWdodHNbIGkgXSwgZ2VvbWV0cnkgKTtcblx0XHQjaWZkZWYgRE9VQkxFX1NJREVEXG5cdFx0XHR2SW5kaXJlY3RCYWNrICs9IGdldEhlbWlzcGhlcmVMaWdodElycmFkaWFuY2UoIGhlbWlzcGhlcmVMaWdodHNbIGkgXSwgYmFja0dlb21ldHJ5ICk7XG5cdFx0I2VuZGlmXG5cdH1cblx0I3ByYWdtYSB1bnJvbGxfbG9vcF9lbmRcbiNlbmRpZiIsbGlnaHRzX3BhcnNfYmVnaW46InVuaWZvcm0gYm9vbCByZWNlaXZlU2hhZG93O1xudW5pZm9ybSB2ZWMzIGFtYmllbnRMaWdodENvbG9yO1xudW5pZm9ybSB2ZWMzIGxpZ2h0UHJvYmVbIDkgXTtcbnZlYzMgc2hHZXRJcnJhZGlhbmNlQXQoIGluIHZlYzMgbm9ybWFsLCBpbiB2ZWMzIHNoQ29lZmZpY2llbnRzWyA5IF0gKSB7XG5cdGZsb2F0IHggPSBub3JtYWwueCwgeSA9IG5vcm1hbC55LCB6ID0gbm9ybWFsLno7XG5cdHZlYzMgcmVzdWx0ID0gc2hDb2VmZmljaWVudHNbIDAgXSAqIDAuODg2MjI3O1xuXHRyZXN1bHQgKz0gc2hDb2VmZmljaWVudHNbIDEgXSAqIDIuMCAqIDAuNTExNjY0ICogeTtcblx0cmVzdWx0ICs9IHNoQ29lZmZpY2llbnRzWyAyIF0gKiAyLjAgKiAwLjUxMTY2NCAqIHo7XG5cdHJlc3VsdCArPSBzaENvZWZmaWNpZW50c1sgMyBdICogMi4wICogMC41MTE2NjQgKiB4O1xuXHRyZXN1bHQgKz0gc2hDb2VmZmljaWVudHNbIDQgXSAqIDIuMCAqIDAuNDI5MDQzICogeCAqIHk7XG5cdHJlc3VsdCArPSBzaENvZWZmaWNpZW50c1sgNSBdICogMi4wICogMC40MjkwNDMgKiB5ICogejtcblx0cmVzdWx0ICs9IHNoQ29lZmZpY2llbnRzWyA2IF0gKiAoIDAuNzQzMTI1ICogeiAqIHogLSAwLjI0NzcwOCApO1xuXHRyZXN1bHQgKz0gc2hDb2VmZmljaWVudHNbIDcgXSAqIDIuMCAqIDAuNDI5MDQzICogeCAqIHo7XG5cdHJlc3VsdCArPSBzaENvZWZmaWNpZW50c1sgOCBdICogMC40MjkwNDMgKiAoIHggKiB4IC0geSAqIHkgKTtcblx0cmV0dXJuIHJlc3VsdDtcbn1cbnZlYzMgZ2V0TGlnaHRQcm9iZUlycmFkaWFuY2UoIGNvbnN0IGluIHZlYzMgbGlnaHRQcm9iZVsgOSBdLCBjb25zdCBpbiBHZW9tZXRyaWNDb250ZXh0IGdlb21ldHJ5ICkge1xuXHR2ZWMzIHdvcmxkTm9ybWFsID0gaW52ZXJzZVRyYW5zZm9ybURpcmVjdGlvbiggZ2VvbWV0cnkubm9ybWFsLCB2aWV3TWF0cml4ICk7XG5cdHZlYzMgaXJyYWRpYW5jZSA9IHNoR2V0SXJyYWRpYW5jZUF0KCB3b3JsZE5vcm1hbCwgbGlnaHRQcm9iZSApO1xuXHRyZXR1cm4gaXJyYWRpYW5jZTtcbn1cbnZlYzMgZ2V0QW1iaWVudExpZ2h0SXJyYWRpYW5jZSggY29uc3QgaW4gdmVjMyBhbWJpZW50TGlnaHRDb2xvciApIHtcblx0dmVjMyBpcnJhZGlhbmNlID0gYW1iaWVudExpZ2h0Q29sb3I7XG5cdCNpZm5kZWYgUEhZU0lDQUxMWV9DT1JSRUNUX0xJR0hUU1xuXHRcdGlycmFkaWFuY2UgKj0gUEk7XG5cdCNlbmRpZlxuXHRyZXR1cm4gaXJyYWRpYW5jZTtcbn1cbiNpZiBOVU1fRElSX0xJR0hUUyA+IDBcblx0c3RydWN0IERpcmVjdGlvbmFsTGlnaHQge1xuXHRcdHZlYzMgZGlyZWN0aW9uO1xuXHRcdHZlYzMgY29sb3I7XG5cdH07XG5cdHVuaWZvcm0gRGlyZWN0aW9uYWxMaWdodCBkaXJlY3Rpb25hbExpZ2h0c1sgTlVNX0RJUl9MSUdIVFMgXTtcblx0dm9pZCBnZXREaXJlY3Rpb25hbERpcmVjdExpZ2h0SXJyYWRpYW5jZSggY29uc3QgaW4gRGlyZWN0aW9uYWxMaWdodCBkaXJlY3Rpb25hbExpZ2h0LCBjb25zdCBpbiBHZW9tZXRyaWNDb250ZXh0IGdlb21ldHJ5LCBvdXQgSW5jaWRlbnRMaWdodCBkaXJlY3RMaWdodCApIHtcblx0XHRkaXJlY3RMaWdodC5jb2xvciA9IGRpcmVjdGlvbmFsTGlnaHQuY29sb3I7XG5cdFx0ZGlyZWN0TGlnaHQuZGlyZWN0aW9uID0gZGlyZWN0aW9uYWxMaWdodC5kaXJlY3Rpb247XG5cdFx0ZGlyZWN0TGlnaHQudmlzaWJsZSA9IHRydWU7XG5cdH1cbiNlbmRpZlxuI2lmIE5VTV9QT0lOVF9MSUdIVFMgPiAwXG5cdHN0cnVjdCBQb2ludExpZ2h0IHtcblx0XHR2ZWMzIHBvc2l0aW9uO1xuXHRcdHZlYzMgY29sb3I7XG5cdFx0ZmxvYXQgZGlzdGFuY2U7XG5cdFx0ZmxvYXQgZGVjYXk7XG5cdH07XG5cdHVuaWZvcm0gUG9pbnRMaWdodCBwb2ludExpZ2h0c1sgTlVNX1BPSU5UX0xJR0hUUyBdO1xuXHR2b2lkIGdldFBvaW50RGlyZWN0TGlnaHRJcnJhZGlhbmNlKCBjb25zdCBpbiBQb2ludExpZ2h0IHBvaW50TGlnaHQsIGNvbnN0IGluIEdlb21ldHJpY0NvbnRleHQgZ2VvbWV0cnksIG91dCBJbmNpZGVudExpZ2h0IGRpcmVjdExpZ2h0ICkge1xuXHRcdHZlYzMgbFZlY3RvciA9IHBvaW50TGlnaHQucG9zaXRpb24gLSBnZW9tZXRyeS5wb3NpdGlvbjtcblx0XHRkaXJlY3RMaWdodC5kaXJlY3Rpb24gPSBub3JtYWxpemUoIGxWZWN0b3IgKTtcblx0XHRmbG9hdCBsaWdodERpc3RhbmNlID0gbGVuZ3RoKCBsVmVjdG9yICk7XG5cdFx0ZGlyZWN0TGlnaHQuY29sb3IgPSBwb2ludExpZ2h0LmNvbG9yO1xuXHRcdGRpcmVjdExpZ2h0LmNvbG9yICo9IHB1bmN0dWFsTGlnaHRJbnRlbnNpdHlUb0lycmFkaWFuY2VGYWN0b3IoIGxpZ2h0RGlzdGFuY2UsIHBvaW50TGlnaHQuZGlzdGFuY2UsIHBvaW50TGlnaHQuZGVjYXkgKTtcblx0XHRkaXJlY3RMaWdodC52aXNpYmxlID0gKCBkaXJlY3RMaWdodC5jb2xvciAhPSB2ZWMzKCAwLjAgKSApO1xuXHR9XG4jZW5kaWZcbiNpZiBOVU1fU1BPVF9MSUdIVFMgPiAwXG5cdHN0cnVjdCBTcG90TGlnaHQge1xuXHRcdHZlYzMgcG9zaXRpb247XG5cdFx0dmVjMyBkaXJlY3Rpb247XG5cdFx0dmVjMyBjb2xvcjtcblx0XHRmbG9hdCBkaXN0YW5jZTtcblx0XHRmbG9hdCBkZWNheTtcblx0XHRmbG9hdCBjb25lQ29zO1xuXHRcdGZsb2F0IHBlbnVtYnJhQ29zO1xuXHR9O1xuXHR1bmlmb3JtIFNwb3RMaWdodCBzcG90TGlnaHRzWyBOVU1fU1BPVF9MSUdIVFMgXTtcblx0dm9pZCBnZXRTcG90RGlyZWN0TGlnaHRJcnJhZGlhbmNlKCBjb25zdCBpbiBTcG90TGlnaHQgc3BvdExpZ2h0LCBjb25zdCBpbiBHZW9tZXRyaWNDb250ZXh0IGdlb21ldHJ5LCBvdXQgSW5jaWRlbnRMaWdodCBkaXJlY3RMaWdodCApIHtcblx0XHR2ZWMzIGxWZWN0b3IgPSBzcG90TGlnaHQucG9zaXRpb24gLSBnZW9tZXRyeS5wb3NpdGlvbjtcblx0XHRkaXJlY3RMaWdodC5kaXJlY3Rpb24gPSBub3JtYWxpemUoIGxWZWN0b3IgKTtcblx0XHRmbG9hdCBsaWdodERpc3RhbmNlID0gbGVuZ3RoKCBsVmVjdG9yICk7XG5cdFx0ZmxvYXQgYW5nbGVDb3MgPSBkb3QoIGRpcmVjdExpZ2h0LmRpcmVjdGlvbiwgc3BvdExpZ2h0LmRpcmVjdGlvbiApO1xuXHRcdGlmICggYW5nbGVDb3MgPiBzcG90TGlnaHQuY29uZUNvcyApIHtcblx0XHRcdGZsb2F0IHNwb3RFZmZlY3QgPSBzbW9vdGhzdGVwKCBzcG90TGlnaHQuY29uZUNvcywgc3BvdExpZ2h0LnBlbnVtYnJhQ29zLCBhbmdsZUNvcyApO1xuXHRcdFx0ZGlyZWN0TGlnaHQuY29sb3IgPSBzcG90TGlnaHQuY29sb3I7XG5cdFx0XHRkaXJlY3RMaWdodC5jb2xvciAqPSBzcG90RWZmZWN0ICogcHVuY3R1YWxMaWdodEludGVuc2l0eVRvSXJyYWRpYW5jZUZhY3RvciggbGlnaHREaXN0YW5jZSwgc3BvdExpZ2h0LmRpc3RhbmNlLCBzcG90TGlnaHQuZGVjYXkgKTtcblx0XHRcdGRpcmVjdExpZ2h0LnZpc2libGUgPSB0cnVlO1xuXHRcdH0gZWxzZSB7XG5cdFx0XHRkaXJlY3RMaWdodC5jb2xvciA9IHZlYzMoIDAuMCApO1xuXHRcdFx0ZGlyZWN0TGlnaHQudmlzaWJsZSA9IGZhbHNlO1xuXHRcdH1cblx0fVxuI2VuZGlmXG4jaWYgTlVNX1JFQ1RfQVJFQV9MSUdIVFMgPiAwXG5cdHN0cnVjdCBSZWN0QXJlYUxpZ2h0IHtcblx0XHR2ZWMzIGNvbG9yO1xuXHRcdHZlYzMgcG9zaXRpb247XG5cdFx0dmVjMyBoYWxmV2lkdGg7XG5cdFx0dmVjMyBoYWxmSGVpZ2h0O1xuXHR9O1xuXHR1bmlmb3JtIHNhbXBsZXIyRCBsdGNfMTtcdHVuaWZvcm0gc2FtcGxlcjJEIGx0Y18yO1xuXHR1bmlmb3JtIFJlY3RBcmVhTGlnaHQgcmVjdEFyZWFMaWdodHNbIE5VTV9SRUNUX0FSRUFfTElHSFRTIF07XG4jZW5kaWZcbiNpZiBOVU1fSEVNSV9MSUdIVFMgPiAwXG5cdHN0cnVjdCBIZW1pc3BoZXJlTGlnaHQge1xuXHRcdHZlYzMgZGlyZWN0aW9uO1xuXHRcdHZlYzMgc2t5Q29sb3I7XG5cdFx0dmVjMyBncm91bmRDb2xvcjtcblx0fTtcblx0dW5pZm9ybSBIZW1pc3BoZXJlTGlnaHQgaGVtaXNwaGVyZUxpZ2h0c1sgTlVNX0hFTUlfTElHSFRTIF07XG5cdHZlYzMgZ2V0SGVtaXNwaGVyZUxpZ2h0SXJyYWRpYW5jZSggY29uc3QgaW4gSGVtaXNwaGVyZUxpZ2h0IGhlbWlMaWdodCwgY29uc3QgaW4gR2VvbWV0cmljQ29udGV4dCBnZW9tZXRyeSApIHtcblx0XHRmbG9hdCBkb3ROTCA9IGRvdCggZ2VvbWV0cnkubm9ybWFsLCBoZW1pTGlnaHQuZGlyZWN0aW9uICk7XG5cdFx0ZmxvYXQgaGVtaURpZmZ1c2VXZWlnaHQgPSAwLjUgKiBkb3ROTCArIDAuNTtcblx0XHR2ZWMzIGlycmFkaWFuY2UgPSBtaXgoIGhlbWlMaWdodC5ncm91bmRDb2xvciwgaGVtaUxpZ2h0LnNreUNvbG9yLCBoZW1pRGlmZnVzZVdlaWdodCApO1xuXHRcdCNpZm5kZWYgUEhZU0lDQUxMWV9DT1JSRUNUX0xJR0hUU1xuXHRcdFx0aXJyYWRpYW5jZSAqPSBQSTtcblx0XHQjZW5kaWZcblx0XHRyZXR1cm4gaXJyYWRpYW5jZTtcblx0fVxuI2VuZGlmIixsaWdodHNfdG9vbl9mcmFnbWVudDoiVG9vbk1hdGVyaWFsIG1hdGVyaWFsO1xubWF0ZXJpYWwuZGlmZnVzZUNvbG9yID0gZGlmZnVzZUNvbG9yLnJnYjsiLGxpZ2h0c190b29uX3BhcnNfZnJhZ21lbnQ6InZhcnlpbmcgdmVjMyB2Vmlld1Bvc2l0aW9uO1xuI2lmbmRlZiBGTEFUX1NIQURFRFxuXHR2YXJ5aW5nIHZlYzMgdk5vcm1hbDtcbiNlbmRpZlxuc3RydWN0IFRvb25NYXRlcmlhbCB7XG5cdHZlYzMgZGlmZnVzZUNvbG9yO1xufTtcbnZvaWQgUkVfRGlyZWN0X1Rvb24oIGNvbnN0IGluIEluY2lkZW50TGlnaHQgZGlyZWN0TGlnaHQsIGNvbnN0IGluIEdlb21ldHJpY0NvbnRleHQgZ2VvbWV0cnksIGNvbnN0IGluIFRvb25NYXRlcmlhbCBtYXRlcmlhbCwgaW5vdXQgUmVmbGVjdGVkTGlnaHQgcmVmbGVjdGVkTGlnaHQgKSB7XG5cdHZlYzMgaXJyYWRpYW5jZSA9IGdldEdyYWRpZW50SXJyYWRpYW5jZSggZ2VvbWV0cnkubm9ybWFsLCBkaXJlY3RMaWdodC5kaXJlY3Rpb24gKSAqIGRpcmVjdExpZ2h0LmNvbG9yO1xuXHQjaWZuZGVmIFBIWVNJQ0FMTFlfQ09SUkVDVF9MSUdIVFNcblx0XHRpcnJhZGlhbmNlICo9IFBJO1xuXHQjZW5kaWZcblx0cmVmbGVjdGVkTGlnaHQuZGlyZWN0RGlmZnVzZSArPSBpcnJhZGlhbmNlICogQlJERl9EaWZmdXNlX0xhbWJlcnQoIG1hdGVyaWFsLmRpZmZ1c2VDb2xvciApO1xufVxudm9pZCBSRV9JbmRpcmVjdERpZmZ1c2VfVG9vbiggY29uc3QgaW4gdmVjMyBpcnJhZGlhbmNlLCBjb25zdCBpbiBHZW9tZXRyaWNDb250ZXh0IGdlb21ldHJ5LCBjb25zdCBpbiBUb29uTWF0ZXJpYWwgbWF0ZXJpYWwsIGlub3V0IFJlZmxlY3RlZExpZ2h0IHJlZmxlY3RlZExpZ2h0ICkge1xuXHRyZWZsZWN0ZWRMaWdodC5pbmRpcmVjdERpZmZ1c2UgKz0gaXJyYWRpYW5jZSAqIEJSREZfRGlmZnVzZV9MYW1iZXJ0KCBtYXRlcmlhbC5kaWZmdXNlQ29sb3IgKTtcbn1cbiNkZWZpbmUgUkVfRGlyZWN0XHRcdFx0XHRSRV9EaXJlY3RfVG9vblxuI2RlZmluZSBSRV9JbmRpcmVjdERpZmZ1c2VcdFx0UkVfSW5kaXJlY3REaWZmdXNlX1Rvb25cbiNkZWZpbmUgTWF0ZXJpYWxfTGlnaHRQcm9iZUxPRCggbWF0ZXJpYWwgKVx0KDApIixsaWdodHNfcGhvbmdfZnJhZ21lbnQ6IkJsaW5uUGhvbmdNYXRlcmlhbCBtYXRlcmlhbDtcbm1hdGVyaWFsLmRpZmZ1c2VDb2xvciA9IGRpZmZ1c2VDb2xvci5yZ2I7XG5tYXRlcmlhbC5zcGVjdWxhckNvbG9yID0gc3BlY3VsYXI7XG5tYXRlcmlhbC5zcGVjdWxhclNoaW5pbmVzcyA9IHNoaW5pbmVzcztcbm1hdGVyaWFsLnNwZWN1bGFyU3RyZW5ndGggPSBzcGVjdWxhclN0cmVuZ3RoOyIsbGlnaHRzX3Bob25nX3BhcnNfZnJhZ21lbnQ6InZhcnlpbmcgdmVjMyB2Vmlld1Bvc2l0aW9uO1xuI2lmbmRlZiBGTEFUX1NIQURFRFxuXHR2YXJ5aW5nIHZlYzMgdk5vcm1hbDtcbiNlbmRpZlxuc3RydWN0IEJsaW5uUGhvbmdNYXRlcmlhbCB7XG5cdHZlYzMgZGlmZnVzZUNvbG9yO1xuXHR2ZWMzIHNwZWN1bGFyQ29sb3I7XG5cdGZsb2F0IHNwZWN1bGFyU2hpbmluZXNzO1xuXHRmbG9hdCBzcGVjdWxhclN0cmVuZ3RoO1xufTtcbnZvaWQgUkVfRGlyZWN0X0JsaW5uUGhvbmcoIGNvbnN0IGluIEluY2lkZW50TGlnaHQgZGlyZWN0TGlnaHQsIGNvbnN0IGluIEdlb21ldHJpY0NvbnRleHQgZ2VvbWV0cnksIGNvbnN0IGluIEJsaW5uUGhvbmdNYXRlcmlhbCBtYXRlcmlhbCwgaW5vdXQgUmVmbGVjdGVkTGlnaHQgcmVmbGVjdGVkTGlnaHQgKSB7XG5cdGZsb2F0IGRvdE5MID0gc2F0dXJhdGUoIGRvdCggZ2VvbWV0cnkubm9ybWFsLCBkaXJlY3RMaWdodC5kaXJlY3Rpb24gKSApO1xuXHR2ZWMzIGlycmFkaWFuY2UgPSBkb3ROTCAqIGRpcmVjdExpZ2h0LmNvbG9yO1xuXHQjaWZuZGVmIFBIWVNJQ0FMTFlfQ09SUkVDVF9MSUdIVFNcblx0XHRpcnJhZGlhbmNlICo9IFBJO1xuXHQjZW5kaWZcblx0cmVmbGVjdGVkTGlnaHQuZGlyZWN0RGlmZnVzZSArPSBpcnJhZGlhbmNlICogQlJERl9EaWZmdXNlX0xhbWJlcnQoIG1hdGVyaWFsLmRpZmZ1c2VDb2xvciApO1xuXHRyZWZsZWN0ZWRMaWdodC5kaXJlY3RTcGVjdWxhciArPSBpcnJhZGlhbmNlICogQlJERl9TcGVjdWxhcl9CbGlublBob25nKCBkaXJlY3RMaWdodCwgZ2VvbWV0cnksIG1hdGVyaWFsLnNwZWN1bGFyQ29sb3IsIG1hdGVyaWFsLnNwZWN1bGFyU2hpbmluZXNzICkgKiBtYXRlcmlhbC5zcGVjdWxhclN0cmVuZ3RoO1xufVxudm9pZCBSRV9JbmRpcmVjdERpZmZ1c2VfQmxpbm5QaG9uZyggY29uc3QgaW4gdmVjMyBpcnJhZGlhbmNlLCBjb25zdCBpbiBHZW9tZXRyaWNDb250ZXh0IGdlb21ldHJ5LCBjb25zdCBpbiBCbGlublBob25nTWF0ZXJpYWwgbWF0ZXJpYWwsIGlub3V0IFJlZmxlY3RlZExpZ2h0IHJlZmxlY3RlZExpZ2h0ICkge1xuXHRyZWZsZWN0ZWRMaWdodC5pbmRpcmVjdERpZmZ1c2UgKz0gaXJyYWRpYW5jZSAqIEJSREZfRGlmZnVzZV9MYW1iZXJ0KCBtYXRlcmlhbC5kaWZmdXNlQ29sb3IgKTtcbn1cbiNkZWZpbmUgUkVfRGlyZWN0XHRcdFx0XHRSRV9EaXJlY3RfQmxpbm5QaG9uZ1xuI2RlZmluZSBSRV9JbmRpcmVjdERpZmZ1c2VcdFx0UkVfSW5kaXJlY3REaWZmdXNlX0JsaW5uUGhvbmdcbiNkZWZpbmUgTWF0ZXJpYWxfTGlnaHRQcm9iZUxPRCggbWF0ZXJpYWwgKVx0KDApIixsaWdodHNfcGh5c2ljYWxfZnJhZ21lbnQ6IlBoeXNpY2FsTWF0ZXJpYWwgbWF0ZXJpYWw7XG5tYXRlcmlhbC5kaWZmdXNlQ29sb3IgPSBkaWZmdXNlQ29sb3IucmdiICogKCAxLjAgLSBtZXRhbG5lc3NGYWN0b3IgKTtcbnZlYzMgZHh5ID0gbWF4KCBhYnMoIGRGZHgoIGdlb21ldHJ5Tm9ybWFsICkgKSwgYWJzKCBkRmR5KCBnZW9tZXRyeU5vcm1hbCApICkgKTtcbmZsb2F0IGdlb21ldHJ5Um91Z2huZXNzID0gbWF4KCBtYXgoIGR4eS54LCBkeHkueSApLCBkeHkueiApO1xubWF0ZXJpYWwuc3BlY3VsYXJSb3VnaG5lc3MgPSBtYXgoIHJvdWdobmVzc0ZhY3RvciwgMC4wNTI1ICk7bWF0ZXJpYWwuc3BlY3VsYXJSb3VnaG5lc3MgKz0gZ2VvbWV0cnlSb3VnaG5lc3M7XG5tYXRlcmlhbC5zcGVjdWxhclJvdWdobmVzcyA9IG1pbiggbWF0ZXJpYWwuc3BlY3VsYXJSb3VnaG5lc3MsIDEuMCApO1xuI2lmZGVmIFJFRkxFQ1RJVklUWVxuXHRtYXRlcmlhbC5zcGVjdWxhckNvbG9yID0gbWl4KCB2ZWMzKCBNQVhJTVVNX1NQRUNVTEFSX0NPRUZGSUNJRU5UICogcG93MiggcmVmbGVjdGl2aXR5ICkgKSwgZGlmZnVzZUNvbG9yLnJnYiwgbWV0YWxuZXNzRmFjdG9yICk7XG4jZWxzZVxuXHRtYXRlcmlhbC5zcGVjdWxhckNvbG9yID0gbWl4KCB2ZWMzKCBERUZBVUxUX1NQRUNVTEFSX0NPRUZGSUNJRU5UICksIGRpZmZ1c2VDb2xvci5yZ2IsIG1ldGFsbmVzc0ZhY3RvciApO1xuI2VuZGlmXG4jaWZkZWYgQ0xFQVJDT0FUXG5cdG1hdGVyaWFsLmNsZWFyY29hdCA9IGNsZWFyY29hdDtcblx0bWF0ZXJpYWwuY2xlYXJjb2F0Um91Z2huZXNzID0gY2xlYXJjb2F0Um91Z2huZXNzO1xuXHQjaWZkZWYgVVNFX0NMRUFSQ09BVE1BUFxuXHRcdG1hdGVyaWFsLmNsZWFyY29hdCAqPSB0ZXh0dXJlMkQoIGNsZWFyY29hdE1hcCwgdlV2ICkueDtcblx0I2VuZGlmXG5cdCNpZmRlZiBVU0VfQ0xFQVJDT0FUX1JPVUdITkVTU01BUFxuXHRcdG1hdGVyaWFsLmNsZWFyY29hdFJvdWdobmVzcyAqPSB0ZXh0dXJlMkQoIGNsZWFyY29hdFJvdWdobmVzc01hcCwgdlV2ICkueTtcblx0I2VuZGlmXG5cdG1hdGVyaWFsLmNsZWFyY29hdCA9IHNhdHVyYXRlKCBtYXRlcmlhbC5jbGVhcmNvYXQgKTtcdG1hdGVyaWFsLmNsZWFyY29hdFJvdWdobmVzcyA9IG1heCggbWF0ZXJpYWwuY2xlYXJjb2F0Um91Z2huZXNzLCAwLjA1MjUgKTtcblx0bWF0ZXJpYWwuY2xlYXJjb2F0Um91Z2huZXNzICs9IGdlb21ldHJ5Um91Z2huZXNzO1xuXHRtYXRlcmlhbC5jbGVhcmNvYXRSb3VnaG5lc3MgPSBtaW4oIG1hdGVyaWFsLmNsZWFyY29hdFJvdWdobmVzcywgMS4wICk7XG4jZW5kaWZcbiNpZmRlZiBVU0VfU0hFRU5cblx0bWF0ZXJpYWwuc2hlZW5Db2xvciA9IHNoZWVuO1xuI2VuZGlmIixsaWdodHNfcGh5c2ljYWxfcGFyc19mcmFnbWVudDoic3RydWN0IFBoeXNpY2FsTWF0ZXJpYWwge1xuXHR2ZWMzIGRpZmZ1c2VDb2xvcjtcblx0ZmxvYXQgc3BlY3VsYXJSb3VnaG5lc3M7XG5cdHZlYzMgc3BlY3VsYXJDb2xvcjtcbiNpZmRlZiBDTEVBUkNPQVRcblx0ZmxvYXQgY2xlYXJjb2F0O1xuXHRmbG9hdCBjbGVhcmNvYXRSb3VnaG5lc3M7XG4jZW5kaWZcbiNpZmRlZiBVU0VfU0hFRU5cblx0dmVjMyBzaGVlbkNvbG9yO1xuI2VuZGlmXG59O1xuI2RlZmluZSBNQVhJTVVNX1NQRUNVTEFSX0NPRUZGSUNJRU5UIDAuMTZcbiNkZWZpbmUgREVGQVVMVF9TUEVDVUxBUl9DT0VGRklDSUVOVCAwLjA0XG5mbG9hdCBjbGVhcmNvYXRESFJBcHByb3goIGNvbnN0IGluIGZsb2F0IHJvdWdobmVzcywgY29uc3QgaW4gZmxvYXQgZG90TkwgKSB7XG5cdHJldHVybiBERUZBVUxUX1NQRUNVTEFSX0NPRUZGSUNJRU5UICsgKCAxLjAgLSBERUZBVUxUX1NQRUNVTEFSX0NPRUZGSUNJRU5UICkgKiAoIHBvdyggMS4wIC0gZG90TkwsIDUuMCApICogcG93KCAxLjAgLSByb3VnaG5lc3MsIDIuMCApICk7XG59XG4jaWYgTlVNX1JFQ1RfQVJFQV9MSUdIVFMgPiAwXG5cdHZvaWQgUkVfRGlyZWN0X1JlY3RBcmVhX1BoeXNpY2FsKCBjb25zdCBpbiBSZWN0QXJlYUxpZ2h0IHJlY3RBcmVhTGlnaHQsIGNvbnN0IGluIEdlb21ldHJpY0NvbnRleHQgZ2VvbWV0cnksIGNvbnN0IGluIFBoeXNpY2FsTWF0ZXJpYWwgbWF0ZXJpYWwsIGlub3V0IFJlZmxlY3RlZExpZ2h0IHJlZmxlY3RlZExpZ2h0ICkge1xuXHRcdHZlYzMgbm9ybWFsID0gZ2VvbWV0cnkubm9ybWFsO1xuXHRcdHZlYzMgdmlld0RpciA9IGdlb21ldHJ5LnZpZXdEaXI7XG5cdFx0dmVjMyBwb3NpdGlvbiA9IGdlb21ldHJ5LnBvc2l0aW9uO1xuXHRcdHZlYzMgbGlnaHRQb3MgPSByZWN0QXJlYUxpZ2h0LnBvc2l0aW9uO1xuXHRcdHZlYzMgaGFsZldpZHRoID0gcmVjdEFyZWFMaWdodC5oYWxmV2lkdGg7XG5cdFx0dmVjMyBoYWxmSGVpZ2h0ID0gcmVjdEFyZWFMaWdodC5oYWxmSGVpZ2h0O1xuXHRcdHZlYzMgbGlnaHRDb2xvciA9IHJlY3RBcmVhTGlnaHQuY29sb3I7XG5cdFx0ZmxvYXQgcm91Z2huZXNzID0gbWF0ZXJpYWwuc3BlY3VsYXJSb3VnaG5lc3M7XG5cdFx0dmVjMyByZWN0Q29vcmRzWyA0IF07XG5cdFx0cmVjdENvb3Jkc1sgMCBdID0gbGlnaHRQb3MgKyBoYWxmV2lkdGggLSBoYWxmSGVpZ2h0O1x0XHRyZWN0Q29vcmRzWyAxIF0gPSBsaWdodFBvcyAtIGhhbGZXaWR0aCAtIGhhbGZIZWlnaHQ7XG5cdFx0cmVjdENvb3Jkc1sgMiBdID0gbGlnaHRQb3MgLSBoYWxmV2lkdGggKyBoYWxmSGVpZ2h0O1xuXHRcdHJlY3RDb29yZHNbIDMgXSA9IGxpZ2h0UG9zICsgaGFsZldpZHRoICsgaGFsZkhlaWdodDtcblx0XHR2ZWMyIHV2ID0gTFRDX1V2KCBub3JtYWwsIHZpZXdEaXIsIHJvdWdobmVzcyApO1xuXHRcdHZlYzQgdDEgPSB0ZXh0dXJlMkQoIGx0Y18xLCB1diApO1xuXHRcdHZlYzQgdDIgPSB0ZXh0dXJlMkQoIGx0Y18yLCB1diApO1xuXHRcdG1hdDMgbUludiA9IG1hdDMoXG5cdFx0XHR2ZWMzKCB0MS54LCAwLCB0MS55ICksXG5cdFx0XHR2ZWMzKCAgICAwLCAxLCAgICAwICksXG5cdFx0XHR2ZWMzKCB0MS56LCAwLCB0MS53IClcblx0XHQpO1xuXHRcdHZlYzMgZnJlc25lbCA9ICggbWF0ZXJpYWwuc3BlY3VsYXJDb2xvciAqIHQyLnggKyAoIHZlYzMoIDEuMCApIC0gbWF0ZXJpYWwuc3BlY3VsYXJDb2xvciApICogdDIueSApO1xuXHRcdHJlZmxlY3RlZExpZ2h0LmRpcmVjdFNwZWN1bGFyICs9IGxpZ2h0Q29sb3IgKiBmcmVzbmVsICogTFRDX0V2YWx1YXRlKCBub3JtYWwsIHZpZXdEaXIsIHBvc2l0aW9uLCBtSW52LCByZWN0Q29vcmRzICk7XG5cdFx0cmVmbGVjdGVkTGlnaHQuZGlyZWN0RGlmZnVzZSArPSBsaWdodENvbG9yICogbWF0ZXJpYWwuZGlmZnVzZUNvbG9yICogTFRDX0V2YWx1YXRlKCBub3JtYWwsIHZpZXdEaXIsIHBvc2l0aW9uLCBtYXQzKCAxLjAgKSwgcmVjdENvb3JkcyApO1xuXHR9XG4jZW5kaWZcbnZvaWQgUkVfRGlyZWN0X1BoeXNpY2FsKCBjb25zdCBpbiBJbmNpZGVudExpZ2h0IGRpcmVjdExpZ2h0LCBjb25zdCBpbiBHZW9tZXRyaWNDb250ZXh0IGdlb21ldHJ5LCBjb25zdCBpbiBQaHlzaWNhbE1hdGVyaWFsIG1hdGVyaWFsLCBpbm91dCBSZWZsZWN0ZWRMaWdodCByZWZsZWN0ZWRMaWdodCApIHtcblx0ZmxvYXQgZG90TkwgPSBzYXR1cmF0ZSggZG90KCBnZW9tZXRyeS5ub3JtYWwsIGRpcmVjdExpZ2h0LmRpcmVjdGlvbiApICk7XG5cdHZlYzMgaXJyYWRpYW5jZSA9IGRvdE5MICogZGlyZWN0TGlnaHQuY29sb3I7XG5cdCNpZm5kZWYgUEhZU0lDQUxMWV9DT1JSRUNUX0xJR0hUU1xuXHRcdGlycmFkaWFuY2UgKj0gUEk7XG5cdCNlbmRpZlxuXHQjaWZkZWYgQ0xFQVJDT0FUXG5cdFx0ZmxvYXQgY2NEb3ROTCA9IHNhdHVyYXRlKCBkb3QoIGdlb21ldHJ5LmNsZWFyY29hdE5vcm1hbCwgZGlyZWN0TGlnaHQuZGlyZWN0aW9uICkgKTtcblx0XHR2ZWMzIGNjSXJyYWRpYW5jZSA9IGNjRG90TkwgKiBkaXJlY3RMaWdodC5jb2xvcjtcblx0XHQjaWZuZGVmIFBIWVNJQ0FMTFlfQ09SUkVDVF9MSUdIVFNcblx0XHRcdGNjSXJyYWRpYW5jZSAqPSBQSTtcblx0XHQjZW5kaWZcblx0XHRmbG9hdCBjbGVhcmNvYXRESFIgPSBtYXRlcmlhbC5jbGVhcmNvYXQgKiBjbGVhcmNvYXRESFJBcHByb3goIG1hdGVyaWFsLmNsZWFyY29hdFJvdWdobmVzcywgY2NEb3ROTCApO1xuXHRcdHJlZmxlY3RlZExpZ2h0LmRpcmVjdFNwZWN1bGFyICs9IGNjSXJyYWRpYW5jZSAqIG1hdGVyaWFsLmNsZWFyY29hdCAqIEJSREZfU3BlY3VsYXJfR0dYKCBkaXJlY3RMaWdodCwgZ2VvbWV0cnkudmlld0RpciwgZ2VvbWV0cnkuY2xlYXJjb2F0Tm9ybWFsLCB2ZWMzKCBERUZBVUxUX1NQRUNVTEFSX0NPRUZGSUNJRU5UICksIG1hdGVyaWFsLmNsZWFyY29hdFJvdWdobmVzcyApO1xuXHQjZWxzZVxuXHRcdGZsb2F0IGNsZWFyY29hdERIUiA9IDAuMDtcblx0I2VuZGlmXG5cdCNpZmRlZiBVU0VfU0hFRU5cblx0XHRyZWZsZWN0ZWRMaWdodC5kaXJlY3RTcGVjdWxhciArPSAoIDEuMCAtIGNsZWFyY29hdERIUiApICogaXJyYWRpYW5jZSAqIEJSREZfU3BlY3VsYXJfU2hlZW4oXG5cdFx0XHRtYXRlcmlhbC5zcGVjdWxhclJvdWdobmVzcyxcblx0XHRcdGRpcmVjdExpZ2h0LmRpcmVjdGlvbixcblx0XHRcdGdlb21ldHJ5LFxuXHRcdFx0bWF0ZXJpYWwuc2hlZW5Db2xvclxuXHRcdCk7XG5cdCNlbHNlXG5cdFx0cmVmbGVjdGVkTGlnaHQuZGlyZWN0U3BlY3VsYXIgKz0gKCAxLjAgLSBjbGVhcmNvYXRESFIgKSAqIGlycmFkaWFuY2UgKiBCUkRGX1NwZWN1bGFyX0dHWCggZGlyZWN0TGlnaHQsIGdlb21ldHJ5LnZpZXdEaXIsIGdlb21ldHJ5Lm5vcm1hbCwgbWF0ZXJpYWwuc3BlY3VsYXJDb2xvciwgbWF0ZXJpYWwuc3BlY3VsYXJSb3VnaG5lc3MpO1xuXHQjZW5kaWZcblx0cmVmbGVjdGVkTGlnaHQuZGlyZWN0RGlmZnVzZSArPSAoIDEuMCAtIGNsZWFyY29hdERIUiApICogaXJyYWRpYW5jZSAqIEJSREZfRGlmZnVzZV9MYW1iZXJ0KCBtYXRlcmlhbC5kaWZmdXNlQ29sb3IgKTtcbn1cbnZvaWQgUkVfSW5kaXJlY3REaWZmdXNlX1BoeXNpY2FsKCBjb25zdCBpbiB2ZWMzIGlycmFkaWFuY2UsIGNvbnN0IGluIEdlb21ldHJpY0NvbnRleHQgZ2VvbWV0cnksIGNvbnN0IGluIFBoeXNpY2FsTWF0ZXJpYWwgbWF0ZXJpYWwsIGlub3V0IFJlZmxlY3RlZExpZ2h0IHJlZmxlY3RlZExpZ2h0ICkge1xuXHRyZWZsZWN0ZWRMaWdodC5pbmRpcmVjdERpZmZ1c2UgKz0gaXJyYWRpYW5jZSAqIEJSREZfRGlmZnVzZV9MYW1iZXJ0KCBtYXRlcmlhbC5kaWZmdXNlQ29sb3IgKTtcbn1cbnZvaWQgUkVfSW5kaXJlY3RTcGVjdWxhcl9QaHlzaWNhbCggY29uc3QgaW4gdmVjMyByYWRpYW5jZSwgY29uc3QgaW4gdmVjMyBpcnJhZGlhbmNlLCBjb25zdCBpbiB2ZWMzIGNsZWFyY29hdFJhZGlhbmNlLCBjb25zdCBpbiBHZW9tZXRyaWNDb250ZXh0IGdlb21ldHJ5LCBjb25zdCBpbiBQaHlzaWNhbE1hdGVyaWFsIG1hdGVyaWFsLCBpbm91dCBSZWZsZWN0ZWRMaWdodCByZWZsZWN0ZWRMaWdodCkge1xuXHQjaWZkZWYgQ0xFQVJDT0FUXG5cdFx0ZmxvYXQgY2NEb3ROViA9IHNhdHVyYXRlKCBkb3QoIGdlb21ldHJ5LmNsZWFyY29hdE5vcm1hbCwgZ2VvbWV0cnkudmlld0RpciApICk7XG5cdFx0cmVmbGVjdGVkTGlnaHQuaW5kaXJlY3RTcGVjdWxhciArPSBjbGVhcmNvYXRSYWRpYW5jZSAqIG1hdGVyaWFsLmNsZWFyY29hdCAqIEJSREZfU3BlY3VsYXJfR0dYX0Vudmlyb25tZW50KCBnZW9tZXRyeS52aWV3RGlyLCBnZW9tZXRyeS5jbGVhcmNvYXROb3JtYWwsIHZlYzMoIERFRkFVTFRfU1BFQ1VMQVJfQ09FRkZJQ0lFTlQgKSwgbWF0ZXJpYWwuY2xlYXJjb2F0Um91Z2huZXNzICk7XG5cdFx0ZmxvYXQgY2NEb3ROTCA9IGNjRG90TlY7XG5cdFx0ZmxvYXQgY2xlYXJjb2F0REhSID0gbWF0ZXJpYWwuY2xlYXJjb2F0ICogY2xlYXJjb2F0REhSQXBwcm94KCBtYXRlcmlhbC5jbGVhcmNvYXRSb3VnaG5lc3MsIGNjRG90TkwgKTtcblx0I2Vsc2Vcblx0XHRmbG9hdCBjbGVhcmNvYXRESFIgPSAwLjA7XG5cdCNlbmRpZlxuXHRmbG9hdCBjbGVhcmNvYXRJbnYgPSAxLjAgLSBjbGVhcmNvYXRESFI7XG5cdHZlYzMgc2luZ2xlU2NhdHRlcmluZyA9IHZlYzMoIDAuMCApO1xuXHR2ZWMzIG11bHRpU2NhdHRlcmluZyA9IHZlYzMoIDAuMCApO1xuXHR2ZWMzIGNvc2luZVdlaWdodGVkSXJyYWRpYW5jZSA9IGlycmFkaWFuY2UgKiBSRUNJUFJPQ0FMX1BJO1xuXHRCUkRGX1NwZWN1bGFyX011bHRpc2NhdHRlcmluZ19FbnZpcm9ubWVudCggZ2VvbWV0cnksIG1hdGVyaWFsLnNwZWN1bGFyQ29sb3IsIG1hdGVyaWFsLnNwZWN1bGFyUm91Z2huZXNzLCBzaW5nbGVTY2F0dGVyaW5nLCBtdWx0aVNjYXR0ZXJpbmcgKTtcblx0dmVjMyBkaWZmdXNlID0gbWF0ZXJpYWwuZGlmZnVzZUNvbG9yICogKCAxLjAgLSAoIHNpbmdsZVNjYXR0ZXJpbmcgKyBtdWx0aVNjYXR0ZXJpbmcgKSApO1xuXHRyZWZsZWN0ZWRMaWdodC5pbmRpcmVjdFNwZWN1bGFyICs9IGNsZWFyY29hdEludiAqIHJhZGlhbmNlICogc2luZ2xlU2NhdHRlcmluZztcblx0cmVmbGVjdGVkTGlnaHQuaW5kaXJlY3RTcGVjdWxhciArPSBtdWx0aVNjYXR0ZXJpbmcgKiBjb3NpbmVXZWlnaHRlZElycmFkaWFuY2U7XG5cdHJlZmxlY3RlZExpZ2h0LmluZGlyZWN0RGlmZnVzZSArPSBkaWZmdXNlICogY29zaW5lV2VpZ2h0ZWRJcnJhZGlhbmNlO1xufVxuI2RlZmluZSBSRV9EaXJlY3RcdFx0XHRcdFJFX0RpcmVjdF9QaHlzaWNhbFxuI2RlZmluZSBSRV9EaXJlY3RfUmVjdEFyZWFcdFx0UkVfRGlyZWN0X1JlY3RBcmVhX1BoeXNpY2FsXG4jZGVmaW5lIFJFX0luZGlyZWN0RGlmZnVzZVx0XHRSRV9JbmRpcmVjdERpZmZ1c2VfUGh5c2ljYWxcbiNkZWZpbmUgUkVfSW5kaXJlY3RTcGVjdWxhclx0XHRSRV9JbmRpcmVjdFNwZWN1bGFyX1BoeXNpY2FsXG5mbG9hdCBjb21wdXRlU3BlY3VsYXJPY2NsdXNpb24oIGNvbnN0IGluIGZsb2F0IGRvdE5WLCBjb25zdCBpbiBmbG9hdCBhbWJpZW50T2NjbHVzaW9uLCBjb25zdCBpbiBmbG9hdCByb3VnaG5lc3MgKSB7XG5cdHJldHVybiBzYXR1cmF0ZSggcG93KCBkb3ROViArIGFtYmllbnRPY2NsdXNpb24sIGV4cDIoIC0gMTYuMCAqIHJvdWdobmVzcyAtIDEuMCApICkgLSAxLjAgKyBhbWJpZW50T2NjbHVzaW9uICk7XG59IixsaWdodHNfZnJhZ21lbnRfYmVnaW46IlxuR2VvbWV0cmljQ29udGV4dCBnZW9tZXRyeTtcbmdlb21ldHJ5LnBvc2l0aW9uID0gLSB2Vmlld1Bvc2l0aW9uO1xuZ2VvbWV0cnkubm9ybWFsID0gbm9ybWFsO1xuZ2VvbWV0cnkudmlld0RpciA9ICggaXNPcnRob2dyYXBoaWMgKSA/IHZlYzMoIDAsIDAsIDEgKSA6IG5vcm1hbGl6ZSggdlZpZXdQb3NpdGlvbiApO1xuI2lmZGVmIENMRUFSQ09BVFxuXHRnZW9tZXRyeS5jbGVhcmNvYXROb3JtYWwgPSBjbGVhcmNvYXROb3JtYWw7XG4jZW5kaWZcbkluY2lkZW50TGlnaHQgZGlyZWN0TGlnaHQ7XG4jaWYgKCBOVU1fUE9JTlRfTElHSFRTID4gMCApICYmIGRlZmluZWQoIFJFX0RpcmVjdCApXG5cdFBvaW50TGlnaHQgcG9pbnRMaWdodDtcblx0I2lmIGRlZmluZWQoIFVTRV9TSEFET1dNQVAgKSAmJiBOVU1fUE9JTlRfTElHSFRfU0hBRE9XUyA+IDBcblx0UG9pbnRMaWdodFNoYWRvdyBwb2ludExpZ2h0U2hhZG93O1xuXHQjZW5kaWZcblx0I3ByYWdtYSB1bnJvbGxfbG9vcF9zdGFydFxuXHRmb3IgKCBpbnQgaSA9IDA7IGkgPCBOVU1fUE9JTlRfTElHSFRTOyBpICsrICkge1xuXHRcdHBvaW50TGlnaHQgPSBwb2ludExpZ2h0c1sgaSBdO1xuXHRcdGdldFBvaW50RGlyZWN0TGlnaHRJcnJhZGlhbmNlKCBwb2ludExpZ2h0LCBnZW9tZXRyeSwgZGlyZWN0TGlnaHQgKTtcblx0XHQjaWYgZGVmaW5lZCggVVNFX1NIQURPV01BUCApICYmICggVU5ST0xMRURfTE9PUF9JTkRFWCA8IE5VTV9QT0lOVF9MSUdIVF9TSEFET1dTIClcblx0XHRwb2ludExpZ2h0U2hhZG93ID0gcG9pbnRMaWdodFNoYWRvd3NbIGkgXTtcblx0XHRkaXJlY3RMaWdodC5jb2xvciAqPSBhbGwoIGJ2ZWMyKCBkaXJlY3RMaWdodC52aXNpYmxlLCByZWNlaXZlU2hhZG93ICkgKSA/IGdldFBvaW50U2hhZG93KCBwb2ludFNoYWRvd01hcFsgaSBdLCBwb2ludExpZ2h0U2hhZG93LnNoYWRvd01hcFNpemUsIHBvaW50TGlnaHRTaGFkb3cuc2hhZG93QmlhcywgcG9pbnRMaWdodFNoYWRvdy5zaGFkb3dSYWRpdXMsIHZQb2ludFNoYWRvd0Nvb3JkWyBpIF0sIHBvaW50TGlnaHRTaGFkb3cuc2hhZG93Q2FtZXJhTmVhciwgcG9pbnRMaWdodFNoYWRvdy5zaGFkb3dDYW1lcmFGYXIgKSA6IDEuMDtcblx0XHQjZW5kaWZcblx0XHRSRV9EaXJlY3QoIGRpcmVjdExpZ2h0LCBnZW9tZXRyeSwgbWF0ZXJpYWwsIHJlZmxlY3RlZExpZ2h0ICk7XG5cdH1cblx0I3ByYWdtYSB1bnJvbGxfbG9vcF9lbmRcbiNlbmRpZlxuI2lmICggTlVNX1NQT1RfTElHSFRTID4gMCApICYmIGRlZmluZWQoIFJFX0RpcmVjdCApXG5cdFNwb3RMaWdodCBzcG90TGlnaHQ7XG5cdCNpZiBkZWZpbmVkKCBVU0VfU0hBRE9XTUFQICkgJiYgTlVNX1NQT1RfTElHSFRfU0hBRE9XUyA+IDBcblx0U3BvdExpZ2h0U2hhZG93IHNwb3RMaWdodFNoYWRvdztcblx0I2VuZGlmXG5cdCNwcmFnbWEgdW5yb2xsX2xvb3Bfc3RhcnRcblx0Zm9yICggaW50IGkgPSAwOyBpIDwgTlVNX1NQT1RfTElHSFRTOyBpICsrICkge1xuXHRcdHNwb3RMaWdodCA9IHNwb3RMaWdodHNbIGkgXTtcblx0XHRnZXRTcG90RGlyZWN0TGlnaHRJcnJhZGlhbmNlKCBzcG90TGlnaHQsIGdlb21ldHJ5LCBkaXJlY3RMaWdodCApO1xuXHRcdCNpZiBkZWZpbmVkKCBVU0VfU0hBRE9XTUFQICkgJiYgKCBVTlJPTExFRF9MT09QX0lOREVYIDwgTlVNX1NQT1RfTElHSFRfU0hBRE9XUyApXG5cdFx0c3BvdExpZ2h0U2hhZG93ID0gc3BvdExpZ2h0U2hhZG93c1sgaSBdO1xuXHRcdGRpcmVjdExpZ2h0LmNvbG9yICo9IGFsbCggYnZlYzIoIGRpcmVjdExpZ2h0LnZpc2libGUsIHJlY2VpdmVTaGFkb3cgKSApID8gZ2V0U2hhZG93KCBzcG90U2hhZG93TWFwWyBpIF0sIHNwb3RMaWdodFNoYWRvdy5zaGFkb3dNYXBTaXplLCBzcG90TGlnaHRTaGFkb3cuc2hhZG93Qmlhcywgc3BvdExpZ2h0U2hhZG93LnNoYWRvd1JhZGl1cywgdlNwb3RTaGFkb3dDb29yZFsgaSBdICkgOiAxLjA7XG5cdFx0I2VuZGlmXG5cdFx0UkVfRGlyZWN0KCBkaXJlY3RMaWdodCwgZ2VvbWV0cnksIG1hdGVyaWFsLCByZWZsZWN0ZWRMaWdodCApO1xuXHR9XG5cdCNwcmFnbWEgdW5yb2xsX2xvb3BfZW5kXG4jZW5kaWZcbiNpZiAoIE5VTV9ESVJfTElHSFRTID4gMCApICYmIGRlZmluZWQoIFJFX0RpcmVjdCApXG5cdERpcmVjdGlvbmFsTGlnaHQgZGlyZWN0aW9uYWxMaWdodDtcblx0I2lmIGRlZmluZWQoIFVTRV9TSEFET1dNQVAgKSAmJiBOVU1fRElSX0xJR0hUX1NIQURPV1MgPiAwXG5cdERpcmVjdGlvbmFsTGlnaHRTaGFkb3cgZGlyZWN0aW9uYWxMaWdodFNoYWRvdztcblx0I2VuZGlmXG5cdCNwcmFnbWEgdW5yb2xsX2xvb3Bfc3RhcnRcblx0Zm9yICggaW50IGkgPSAwOyBpIDwgTlVNX0RJUl9MSUdIVFM7IGkgKysgKSB7XG5cdFx0ZGlyZWN0aW9uYWxMaWdodCA9IGRpcmVjdGlvbmFsTGlnaHRzWyBpIF07XG5cdFx0Z2V0RGlyZWN0aW9uYWxEaXJlY3RMaWdodElycmFkaWFuY2UoIGRpcmVjdGlvbmFsTGlnaHQsIGdlb21ldHJ5LCBkaXJlY3RMaWdodCApO1xuXHRcdCNpZiBkZWZpbmVkKCBVU0VfU0hBRE9XTUFQICkgJiYgKCBVTlJPTExFRF9MT09QX0lOREVYIDwgTlVNX0RJUl9MSUdIVF9TSEFET1dTIClcblx0XHRkaXJlY3Rpb25hbExpZ2h0U2hhZG93ID0gZGlyZWN0aW9uYWxMaWdodFNoYWRvd3NbIGkgXTtcblx0XHRkaXJlY3RMaWdodC5jb2xvciAqPSBhbGwoIGJ2ZWMyKCBkaXJlY3RMaWdodC52aXNpYmxlLCByZWNlaXZlU2hhZG93ICkgKSA/IGdldFNoYWRvdyggZGlyZWN0aW9uYWxTaGFkb3dNYXBbIGkgXSwgZGlyZWN0aW9uYWxMaWdodFNoYWRvdy5zaGFkb3dNYXBTaXplLCBkaXJlY3Rpb25hbExpZ2h0U2hhZG93LnNoYWRvd0JpYXMsIGRpcmVjdGlvbmFsTGlnaHRTaGFkb3cuc2hhZG93UmFkaXVzLCB2RGlyZWN0aW9uYWxTaGFkb3dDb29yZFsgaSBdICkgOiAxLjA7XG5cdFx0I2VuZGlmXG5cdFx0UkVfRGlyZWN0KCBkaXJlY3RMaWdodCwgZ2VvbWV0cnksIG1hdGVyaWFsLCByZWZsZWN0ZWRMaWdodCApO1xuXHR9XG5cdCNwcmFnbWEgdW5yb2xsX2xvb3BfZW5kXG4jZW5kaWZcbiNpZiAoIE5VTV9SRUNUX0FSRUFfTElHSFRTID4gMCApICYmIGRlZmluZWQoIFJFX0RpcmVjdF9SZWN0QXJlYSApXG5cdFJlY3RBcmVhTGlnaHQgcmVjdEFyZWFMaWdodDtcblx0I3ByYWdtYSB1bnJvbGxfbG9vcF9zdGFydFxuXHRmb3IgKCBpbnQgaSA9IDA7IGkgPCBOVU1fUkVDVF9BUkVBX0xJR0hUUzsgaSArKyApIHtcblx0XHRyZWN0QXJlYUxpZ2h0ID0gcmVjdEFyZWFMaWdodHNbIGkgXTtcblx0XHRSRV9EaXJlY3RfUmVjdEFyZWEoIHJlY3RBcmVhTGlnaHQsIGdlb21ldHJ5LCBtYXRlcmlhbCwgcmVmbGVjdGVkTGlnaHQgKTtcblx0fVxuXHQjcHJhZ21hIHVucm9sbF9sb29wX2VuZFxuI2VuZGlmXG4jaWYgZGVmaW5lZCggUkVfSW5kaXJlY3REaWZmdXNlIClcblx0dmVjMyBpYmxJcnJhZGlhbmNlID0gdmVjMyggMC4wICk7XG5cdHZlYzMgaXJyYWRpYW5jZSA9IGdldEFtYmllbnRMaWdodElycmFkaWFuY2UoIGFtYmllbnRMaWdodENvbG9yICk7XG5cdGlycmFkaWFuY2UgKz0gZ2V0TGlnaHRQcm9iZUlycmFkaWFuY2UoIGxpZ2h0UHJvYmUsIGdlb21ldHJ5ICk7XG5cdCNpZiAoIE5VTV9IRU1JX0xJR0hUUyA+IDAgKVxuXHRcdCNwcmFnbWEgdW5yb2xsX2xvb3Bfc3RhcnRcblx0XHRmb3IgKCBpbnQgaSA9IDA7IGkgPCBOVU1fSEVNSV9MSUdIVFM7IGkgKysgKSB7XG5cdFx0XHRpcnJhZGlhbmNlICs9IGdldEhlbWlzcGhlcmVMaWdodElycmFkaWFuY2UoIGhlbWlzcGhlcmVMaWdodHNbIGkgXSwgZ2VvbWV0cnkgKTtcblx0XHR9XG5cdFx0I3ByYWdtYSB1bnJvbGxfbG9vcF9lbmRcblx0I2VuZGlmXG4jZW5kaWZcbiNpZiBkZWZpbmVkKCBSRV9JbmRpcmVjdFNwZWN1bGFyIClcblx0dmVjMyByYWRpYW5jZSA9IHZlYzMoIDAuMCApO1xuXHR2ZWMzIGNsZWFyY29hdFJhZGlhbmNlID0gdmVjMyggMC4wICk7XG4jZW5kaWYiLGxpZ2h0c19mcmFnbWVudF9tYXBzOiIjaWYgZGVmaW5lZCggUkVfSW5kaXJlY3REaWZmdXNlIClcblx0I2lmZGVmIFVTRV9MSUdIVE1BUFxuXHRcdHZlYzQgbGlnaHRNYXBUZXhlbD0gdGV4dHVyZTJEKCBsaWdodE1hcCwgdlV2MiApO1xuXHRcdHZlYzMgbGlnaHRNYXBJcnJhZGlhbmNlID0gbGlnaHRNYXBUZXhlbFRvTGluZWFyKCBsaWdodE1hcFRleGVsICkucmdiICogbGlnaHRNYXBJbnRlbnNpdHk7XG5cdFx0I2lmbmRlZiBQSFlTSUNBTExZX0NPUlJFQ1RfTElHSFRTXG5cdFx0XHRsaWdodE1hcElycmFkaWFuY2UgKj0gUEk7XG5cdFx0I2VuZGlmXG5cdFx0aXJyYWRpYW5jZSArPSBsaWdodE1hcElycmFkaWFuY2U7XG5cdCNlbmRpZlxuXHQjaWYgZGVmaW5lZCggVVNFX0VOVk1BUCApICYmIGRlZmluZWQoIFNUQU5EQVJEICkgJiYgZGVmaW5lZCggRU5WTUFQX1RZUEVfQ1VCRV9VViApXG5cdFx0aWJsSXJyYWRpYW5jZSArPSBnZXRMaWdodFByb2JlSW5kaXJlY3RJcnJhZGlhbmNlKCBnZW9tZXRyeSwgbWF4TWlwTGV2ZWwgKTtcblx0I2VuZGlmXG4jZW5kaWZcbiNpZiBkZWZpbmVkKCBVU0VfRU5WTUFQICkgJiYgZGVmaW5lZCggUkVfSW5kaXJlY3RTcGVjdWxhciApXG5cdHJhZGlhbmNlICs9IGdldExpZ2h0UHJvYmVJbmRpcmVjdFJhZGlhbmNlKCBnZW9tZXRyeS52aWV3RGlyLCBnZW9tZXRyeS5ub3JtYWwsIG1hdGVyaWFsLnNwZWN1bGFyUm91Z2huZXNzLCBtYXhNaXBMZXZlbCApO1xuXHQjaWZkZWYgQ0xFQVJDT0FUXG5cdFx0Y2xlYXJjb2F0UmFkaWFuY2UgKz0gZ2V0TGlnaHRQcm9iZUluZGlyZWN0UmFkaWFuY2UoIGdlb21ldHJ5LnZpZXdEaXIsIGdlb21ldHJ5LmNsZWFyY29hdE5vcm1hbCwgbWF0ZXJpYWwuY2xlYXJjb2F0Um91Z2huZXNzLCBtYXhNaXBMZXZlbCApO1xuXHQjZW5kaWZcbiNlbmRpZiIsbGlnaHRzX2ZyYWdtZW50X2VuZDoiI2lmIGRlZmluZWQoIFJFX0luZGlyZWN0RGlmZnVzZSApXG5cdFJFX0luZGlyZWN0RGlmZnVzZSggaXJyYWRpYW5jZSwgZ2VvbWV0cnksIG1hdGVyaWFsLCByZWZsZWN0ZWRMaWdodCApO1xuI2VuZGlmXG4jaWYgZGVmaW5lZCggUkVfSW5kaXJlY3RTcGVjdWxhciApXG5cdFJFX0luZGlyZWN0U3BlY3VsYXIoIHJhZGlhbmNlLCBpYmxJcnJhZGlhbmNlLCBjbGVhcmNvYXRSYWRpYW5jZSwgZ2VvbWV0cnksIG1hdGVyaWFsLCByZWZsZWN0ZWRMaWdodCApO1xuI2VuZGlmIixsb2dkZXB0aGJ1Zl9mcmFnbWVudDoiI2lmIGRlZmluZWQoIFVTRV9MT0dERVBUSEJVRiApICYmIGRlZmluZWQoIFVTRV9MT0dERVBUSEJVRl9FWFQgKVxuXHRnbF9GcmFnRGVwdGhFWFQgPSB2SXNQZXJzcGVjdGl2ZSA9PSAwLjAgPyBnbF9GcmFnQ29vcmQueiA6IGxvZzIoIHZGcmFnRGVwdGggKSAqIGxvZ0RlcHRoQnVmRkMgKiAwLjU7XG4jZW5kaWYiLGxvZ2RlcHRoYnVmX3BhcnNfZnJhZ21lbnQ6IiNpZiBkZWZpbmVkKCBVU0VfTE9HREVQVEhCVUYgKSAmJiBkZWZpbmVkKCBVU0VfTE9HREVQVEhCVUZfRVhUIClcblx0dW5pZm9ybSBmbG9hdCBsb2dEZXB0aEJ1ZkZDO1xuXHR2YXJ5aW5nIGZsb2F0IHZGcmFnRGVwdGg7XG5cdHZhcnlpbmcgZmxvYXQgdklzUGVyc3BlY3RpdmU7XG4jZW5kaWYiLGxvZ2RlcHRoYnVmX3BhcnNfdmVydGV4OiIjaWZkZWYgVVNFX0xPR0RFUFRIQlVGXG5cdCNpZmRlZiBVU0VfTE9HREVQVEhCVUZfRVhUXG5cdFx0dmFyeWluZyBmbG9hdCB2RnJhZ0RlcHRoO1xuXHRcdHZhcnlpbmcgZmxvYXQgdklzUGVyc3BlY3RpdmU7XG5cdCNlbHNlXG5cdFx0dW5pZm9ybSBmbG9hdCBsb2dEZXB0aEJ1ZkZDO1xuXHQjZW5kaWZcbiNlbmRpZiIsbG9nZGVwdGhidWZfdmVydGV4OiIjaWZkZWYgVVNFX0xPR0RFUFRIQlVGXG5cdCNpZmRlZiBVU0VfTE9HREVQVEhCVUZfRVhUXG5cdFx0dkZyYWdEZXB0aCA9IDEuMCArIGdsX1Bvc2l0aW9uLnc7XG5cdFx0dklzUGVyc3BlY3RpdmUgPSBmbG9hdCggaXNQZXJzcGVjdGl2ZU1hdHJpeCggcHJvamVjdGlvbk1hdHJpeCApICk7XG5cdCNlbHNlXG5cdFx0aWYgKCBpc1BlcnNwZWN0aXZlTWF0cml4KCBwcm9qZWN0aW9uTWF0cml4ICkgKSB7XG5cdFx0XHRnbF9Qb3NpdGlvbi56ID0gbG9nMiggbWF4KCBFUFNJTE9OLCBnbF9Qb3NpdGlvbi53ICsgMS4wICkgKSAqIGxvZ0RlcHRoQnVmRkMgLSAxLjA7XG5cdFx0XHRnbF9Qb3NpdGlvbi56ICo9IGdsX1Bvc2l0aW9uLnc7XG5cdFx0fVxuXHQjZW5kaWZcbiNlbmRpZiIsbWFwX2ZyYWdtZW50OiIjaWZkZWYgVVNFX01BUFxuXHR2ZWM0IHRleGVsQ29sb3IgPSB0ZXh0dXJlMkQoIG1hcCwgdlV2ICk7XG5cdHRleGVsQ29sb3IgPSBtYXBUZXhlbFRvTGluZWFyKCB0ZXhlbENvbG9yICk7XG5cdGRpZmZ1c2VDb2xvciAqPSB0ZXhlbENvbG9yO1xuI2VuZGlmIixtYXBfcGFyc19mcmFnbWVudDoiI2lmZGVmIFVTRV9NQVBcblx0dW5pZm9ybSBzYW1wbGVyMkQgbWFwO1xuI2VuZGlmIixtYXBfcGFydGljbGVfZnJhZ21lbnQ6IiNpZiBkZWZpbmVkKCBVU0VfTUFQICkgfHwgZGVmaW5lZCggVVNFX0FMUEhBTUFQIClcblx0dmVjMiB1diA9ICggdXZUcmFuc2Zvcm0gKiB2ZWMzKCBnbF9Qb2ludENvb3JkLngsIDEuMCAtIGdsX1BvaW50Q29vcmQueSwgMSApICkueHk7XG4jZW5kaWZcbiNpZmRlZiBVU0VfTUFQXG5cdHZlYzQgbWFwVGV4ZWwgPSB0ZXh0dXJlMkQoIG1hcCwgdXYgKTtcblx0ZGlmZnVzZUNvbG9yICo9IG1hcFRleGVsVG9MaW5lYXIoIG1hcFRleGVsICk7XG4jZW5kaWZcbiNpZmRlZiBVU0VfQUxQSEFNQVBcblx0ZGlmZnVzZUNvbG9yLmEgKj0gdGV4dHVyZTJEKCBhbHBoYU1hcCwgdXYgKS5nO1xuI2VuZGlmIixtYXBfcGFydGljbGVfcGFyc19mcmFnbWVudDoiI2lmIGRlZmluZWQoIFVTRV9NQVAgKSB8fCBkZWZpbmVkKCBVU0VfQUxQSEFNQVAgKVxuXHR1bmlmb3JtIG1hdDMgdXZUcmFuc2Zvcm07XG4jZW5kaWZcbiNpZmRlZiBVU0VfTUFQXG5cdHVuaWZvcm0gc2FtcGxlcjJEIG1hcDtcbiNlbmRpZlxuI2lmZGVmIFVTRV9BTFBIQU1BUFxuXHR1bmlmb3JtIHNhbXBsZXIyRCBhbHBoYU1hcDtcbiNlbmRpZiIsbWV0YWxuZXNzbWFwX2ZyYWdtZW50OiJmbG9hdCBtZXRhbG5lc3NGYWN0b3IgPSBtZXRhbG5lc3M7XG4jaWZkZWYgVVNFX01FVEFMTkVTU01BUFxuXHR2ZWM0IHRleGVsTWV0YWxuZXNzID0gdGV4dHVyZTJEKCBtZXRhbG5lc3NNYXAsIHZVdiApO1xuXHRtZXRhbG5lc3NGYWN0b3IgKj0gdGV4ZWxNZXRhbG5lc3MuYjtcbiNlbmRpZiIsbWV0YWxuZXNzbWFwX3BhcnNfZnJhZ21lbnQ6IiNpZmRlZiBVU0VfTUVUQUxORVNTTUFQXG5cdHVuaWZvcm0gc2FtcGxlcjJEIG1ldGFsbmVzc01hcDtcbiNlbmRpZiIsbW9ycGhub3JtYWxfdmVydGV4OiIjaWZkZWYgVVNFX01PUlBITk9STUFMU1xuXHRvYmplY3ROb3JtYWwgKj0gbW9ycGhUYXJnZXRCYXNlSW5mbHVlbmNlO1xuXHRvYmplY3ROb3JtYWwgKz0gbW9ycGhOb3JtYWwwICogbW9ycGhUYXJnZXRJbmZsdWVuY2VzWyAwIF07XG5cdG9iamVjdE5vcm1hbCArPSBtb3JwaE5vcm1hbDEgKiBtb3JwaFRhcmdldEluZmx1ZW5jZXNbIDEgXTtcblx0b2JqZWN0Tm9ybWFsICs9IG1vcnBoTm9ybWFsMiAqIG1vcnBoVGFyZ2V0SW5mbHVlbmNlc1sgMiBdO1xuXHRvYmplY3ROb3JtYWwgKz0gbW9ycGhOb3JtYWwzICogbW9ycGhUYXJnZXRJbmZsdWVuY2VzWyAzIF07XG4jZW5kaWYiLG1vcnBodGFyZ2V0X3BhcnNfdmVydGV4OiIjaWZkZWYgVVNFX01PUlBIVEFSR0VUU1xuXHR1bmlmb3JtIGZsb2F0IG1vcnBoVGFyZ2V0QmFzZUluZmx1ZW5jZTtcblx0I2lmbmRlZiBVU0VfTU9SUEhOT1JNQUxTXG5cdFx0dW5pZm9ybSBmbG9hdCBtb3JwaFRhcmdldEluZmx1ZW5jZXNbIDggXTtcblx0I2Vsc2Vcblx0XHR1bmlmb3JtIGZsb2F0IG1vcnBoVGFyZ2V0SW5mbHVlbmNlc1sgNCBdO1xuXHQjZW5kaWZcbiNlbmRpZiIsbW9ycGh0YXJnZXRfdmVydGV4OiIjaWZkZWYgVVNFX01PUlBIVEFSR0VUU1xuXHR0cmFuc2Zvcm1lZCAqPSBtb3JwaFRhcmdldEJhc2VJbmZsdWVuY2U7XG5cdHRyYW5zZm9ybWVkICs9IG1vcnBoVGFyZ2V0MCAqIG1vcnBoVGFyZ2V0SW5mbHVlbmNlc1sgMCBdO1xuXHR0cmFuc2Zvcm1lZCArPSBtb3JwaFRhcmdldDEgKiBtb3JwaFRhcmdldEluZmx1ZW5jZXNbIDEgXTtcblx0dHJhbnNmb3JtZWQgKz0gbW9ycGhUYXJnZXQyICogbW9ycGhUYXJnZXRJbmZsdWVuY2VzWyAyIF07XG5cdHRyYW5zZm9ybWVkICs9IG1vcnBoVGFyZ2V0MyAqIG1vcnBoVGFyZ2V0SW5mbHVlbmNlc1sgMyBdO1xuXHQjaWZuZGVmIFVTRV9NT1JQSE5PUk1BTFNcblx0XHR0cmFuc2Zvcm1lZCArPSBtb3JwaFRhcmdldDQgKiBtb3JwaFRhcmdldEluZmx1ZW5jZXNbIDQgXTtcblx0XHR0cmFuc2Zvcm1lZCArPSBtb3JwaFRhcmdldDUgKiBtb3JwaFRhcmdldEluZmx1ZW5jZXNbIDUgXTtcblx0XHR0cmFuc2Zvcm1lZCArPSBtb3JwaFRhcmdldDYgKiBtb3JwaFRhcmdldEluZmx1ZW5jZXNbIDYgXTtcblx0XHR0cmFuc2Zvcm1lZCArPSBtb3JwaFRhcmdldDcgKiBtb3JwaFRhcmdldEluZmx1ZW5jZXNbIDcgXTtcblx0I2VuZGlmXG4jZW5kaWYiLG5vcm1hbF9mcmFnbWVudF9iZWdpbjoiI2lmZGVmIEZMQVRfU0hBREVEXG5cdHZlYzMgZmR4ID0gdmVjMyggZEZkeCggdlZpZXdQb3NpdGlvbi54ICksIGRGZHgoIHZWaWV3UG9zaXRpb24ueSApLCBkRmR4KCB2Vmlld1Bvc2l0aW9uLnogKSApO1xuXHR2ZWMzIGZkeSA9IHZlYzMoIGRGZHkoIHZWaWV3UG9zaXRpb24ueCApLCBkRmR5KCB2Vmlld1Bvc2l0aW9uLnkgKSwgZEZkeSggdlZpZXdQb3NpdGlvbi56ICkgKTtcblx0dmVjMyBub3JtYWwgPSBub3JtYWxpemUoIGNyb3NzKCBmZHgsIGZkeSApICk7XG4jZWxzZVxuXHR2ZWMzIG5vcm1hbCA9IG5vcm1hbGl6ZSggdk5vcm1hbCApO1xuXHQjaWZkZWYgRE9VQkxFX1NJREVEXG5cdFx0bm9ybWFsID0gbm9ybWFsICogKCBmbG9hdCggZ2xfRnJvbnRGYWNpbmcgKSAqIDIuMCAtIDEuMCApO1xuXHQjZW5kaWZcblx0I2lmZGVmIFVTRV9UQU5HRU5UXG5cdFx0dmVjMyB0YW5nZW50ID0gbm9ybWFsaXplKCB2VGFuZ2VudCApO1xuXHRcdHZlYzMgYml0YW5nZW50ID0gbm9ybWFsaXplKCB2Qml0YW5nZW50ICk7XG5cdFx0I2lmZGVmIERPVUJMRV9TSURFRFxuXHRcdFx0dGFuZ2VudCA9IHRhbmdlbnQgKiAoIGZsb2F0KCBnbF9Gcm9udEZhY2luZyApICogMi4wIC0gMS4wICk7XG5cdFx0XHRiaXRhbmdlbnQgPSBiaXRhbmdlbnQgKiAoIGZsb2F0KCBnbF9Gcm9udEZhY2luZyApICogMi4wIC0gMS4wICk7XG5cdFx0I2VuZGlmXG5cdFx0I2lmIGRlZmluZWQoIFRBTkdFTlRTUEFDRV9OT1JNQUxNQVAgKSB8fCBkZWZpbmVkKCBVU0VfQ0xFQVJDT0FUX05PUk1BTE1BUCApXG5cdFx0XHRtYXQzIHZUQk4gPSBtYXQzKCB0YW5nZW50LCBiaXRhbmdlbnQsIG5vcm1hbCApO1xuXHRcdCNlbmRpZlxuXHQjZW5kaWZcbiNlbmRpZlxudmVjMyBnZW9tZXRyeU5vcm1hbCA9IG5vcm1hbDsiLG5vcm1hbF9mcmFnbWVudF9tYXBzOiIjaWZkZWYgT0JKRUNUU1BBQ0VfTk9STUFMTUFQXG5cdG5vcm1hbCA9IHRleHR1cmUyRCggbm9ybWFsTWFwLCB2VXYgKS54eXogKiAyLjAgLSAxLjA7XG5cdCNpZmRlZiBGTElQX1NJREVEXG5cdFx0bm9ybWFsID0gLSBub3JtYWw7XG5cdCNlbmRpZlxuXHQjaWZkZWYgRE9VQkxFX1NJREVEXG5cdFx0bm9ybWFsID0gbm9ybWFsICogKCBmbG9hdCggZ2xfRnJvbnRGYWNpbmcgKSAqIDIuMCAtIDEuMCApO1xuXHQjZW5kaWZcblx0bm9ybWFsID0gbm9ybWFsaXplKCBub3JtYWxNYXRyaXggKiBub3JtYWwgKTtcbiNlbGlmIGRlZmluZWQoIFRBTkdFTlRTUEFDRV9OT1JNQUxNQVAgKVxuXHR2ZWMzIG1hcE4gPSB0ZXh0dXJlMkQoIG5vcm1hbE1hcCwgdlV2ICkueHl6ICogMi4wIC0gMS4wO1xuXHRtYXBOLnh5ICo9IG5vcm1hbFNjYWxlO1xuXHQjaWZkZWYgVVNFX1RBTkdFTlRcblx0XHRub3JtYWwgPSBub3JtYWxpemUoIHZUQk4gKiBtYXBOICk7XG5cdCNlbHNlXG5cdFx0bm9ybWFsID0gcGVydHVyYk5vcm1hbDJBcmIoIC12Vmlld1Bvc2l0aW9uLCBub3JtYWwsIG1hcE4gKTtcblx0I2VuZGlmXG4jZWxpZiBkZWZpbmVkKCBVU0VfQlVNUE1BUCApXG5cdG5vcm1hbCA9IHBlcnR1cmJOb3JtYWxBcmIoIC12Vmlld1Bvc2l0aW9uLCBub3JtYWwsIGRIZHh5X2Z3ZCgpICk7XG4jZW5kaWYiLG5vcm1hbG1hcF9wYXJzX2ZyYWdtZW50OiIjaWZkZWYgVVNFX05PUk1BTE1BUFxuXHR1bmlmb3JtIHNhbXBsZXIyRCBub3JtYWxNYXA7XG5cdHVuaWZvcm0gdmVjMiBub3JtYWxTY2FsZTtcbiNlbmRpZlxuI2lmZGVmIE9CSkVDVFNQQUNFX05PUk1BTE1BUFxuXHR1bmlmb3JtIG1hdDMgbm9ybWFsTWF0cml4O1xuI2VuZGlmXG4jaWYgISBkZWZpbmVkICggVVNFX1RBTkdFTlQgKSAmJiAoIGRlZmluZWQgKCBUQU5HRU5UU1BBQ0VfTk9STUFMTUFQICkgfHwgZGVmaW5lZCAoIFVTRV9DTEVBUkNPQVRfTk9STUFMTUFQICkgKVxuXHR2ZWMzIHBlcnR1cmJOb3JtYWwyQXJiKCB2ZWMzIGV5ZV9wb3MsIHZlYzMgc3VyZl9ub3JtLCB2ZWMzIG1hcE4gKSB7XG5cdFx0dmVjMyBxMCA9IHZlYzMoIGRGZHgoIGV5ZV9wb3MueCApLCBkRmR4KCBleWVfcG9zLnkgKSwgZEZkeCggZXllX3Bvcy56ICkgKTtcblx0XHR2ZWMzIHExID0gdmVjMyggZEZkeSggZXllX3Bvcy54ICksIGRGZHkoIGV5ZV9wb3MueSApLCBkRmR5KCBleWVfcG9zLnogKSApO1xuXHRcdHZlYzIgc3QwID0gZEZkeCggdlV2LnN0ICk7XG5cdFx0dmVjMiBzdDEgPSBkRmR5KCB2VXYuc3QgKTtcblx0XHRmbG9hdCBzY2FsZSA9IHNpZ24oIHN0MS50ICogc3QwLnMgLSBzdDAudCAqIHN0MS5zICk7XG5cdFx0dmVjMyBTID0gbm9ybWFsaXplKCAoIHEwICogc3QxLnQgLSBxMSAqIHN0MC50ICkgKiBzY2FsZSApO1xuXHRcdHZlYzMgVCA9IG5vcm1hbGl6ZSggKCAtIHEwICogc3QxLnMgKyBxMSAqIHN0MC5zICkgKiBzY2FsZSApO1xuXHRcdHZlYzMgTiA9IG5vcm1hbGl6ZSggc3VyZl9ub3JtICk7XG5cdFx0bWF0MyB0c24gPSBtYXQzKCBTLCBULCBOICk7XG5cdFx0bWFwTi54eSAqPSAoIGZsb2F0KCBnbF9Gcm9udEZhY2luZyApICogMi4wIC0gMS4wICk7XG5cdFx0cmV0dXJuIG5vcm1hbGl6ZSggdHNuICogbWFwTiApO1xuXHR9XG4jZW5kaWYiLGNsZWFyY29hdF9ub3JtYWxfZnJhZ21lbnRfYmVnaW46IiNpZmRlZiBDTEVBUkNPQVRcblx0dmVjMyBjbGVhcmNvYXROb3JtYWwgPSBnZW9tZXRyeU5vcm1hbDtcbiNlbmRpZiIsY2xlYXJjb2F0X25vcm1hbF9mcmFnbWVudF9tYXBzOiIjaWZkZWYgVVNFX0NMRUFSQ09BVF9OT1JNQUxNQVBcblx0dmVjMyBjbGVhcmNvYXRNYXBOID0gdGV4dHVyZTJEKCBjbGVhcmNvYXROb3JtYWxNYXAsIHZVdiApLnh5eiAqIDIuMCAtIDEuMDtcblx0Y2xlYXJjb2F0TWFwTi54eSAqPSBjbGVhcmNvYXROb3JtYWxTY2FsZTtcblx0I2lmZGVmIFVTRV9UQU5HRU5UXG5cdFx0Y2xlYXJjb2F0Tm9ybWFsID0gbm9ybWFsaXplKCB2VEJOICogY2xlYXJjb2F0TWFwTiApO1xuXHQjZWxzZVxuXHRcdGNsZWFyY29hdE5vcm1hbCA9IHBlcnR1cmJOb3JtYWwyQXJiKCAtIHZWaWV3UG9zaXRpb24sIGNsZWFyY29hdE5vcm1hbCwgY2xlYXJjb2F0TWFwTiApO1xuXHQjZW5kaWZcbiNlbmRpZiIsY2xlYXJjb2F0X3BhcnNfZnJhZ21lbnQ6IiNpZmRlZiBVU0VfQ0xFQVJDT0FUTUFQXG5cdHVuaWZvcm0gc2FtcGxlcjJEIGNsZWFyY29hdE1hcDtcbiNlbmRpZlxuI2lmZGVmIFVTRV9DTEVBUkNPQVRfUk9VR0hORVNTTUFQXG5cdHVuaWZvcm0gc2FtcGxlcjJEIGNsZWFyY29hdFJvdWdobmVzc01hcDtcbiNlbmRpZlxuI2lmZGVmIFVTRV9DTEVBUkNPQVRfTk9STUFMTUFQXG5cdHVuaWZvcm0gc2FtcGxlcjJEIGNsZWFyY29hdE5vcm1hbE1hcDtcblx0dW5pZm9ybSB2ZWMyIGNsZWFyY29hdE5vcm1hbFNjYWxlO1xuI2VuZGlmIixwYWNraW5nOiJ2ZWMzIHBhY2tOb3JtYWxUb1JHQiggY29uc3QgaW4gdmVjMyBub3JtYWwgKSB7XG5cdHJldHVybiBub3JtYWxpemUoIG5vcm1hbCApICogMC41ICsgMC41O1xufVxudmVjMyB1bnBhY2tSR0JUb05vcm1hbCggY29uc3QgaW4gdmVjMyByZ2IgKSB7XG5cdHJldHVybiAyLjAgKiByZ2IueHl6IC0gMS4wO1xufVxuY29uc3QgZmxvYXQgUGFja1Vwc2NhbGUgPSAyNTYuIC8gMjU1Ljtjb25zdCBmbG9hdCBVbnBhY2tEb3duc2NhbGUgPSAyNTUuIC8gMjU2LjtcbmNvbnN0IHZlYzMgUGFja0ZhY3RvcnMgPSB2ZWMzKCAyNTYuICogMjU2LiAqIDI1Ni4sIDI1Ni4gKiAyNTYuLCAyNTYuICk7XG5jb25zdCB2ZWM0IFVucGFja0ZhY3RvcnMgPSBVbnBhY2tEb3duc2NhbGUgLyB2ZWM0KCBQYWNrRmFjdG9ycywgMS4gKTtcbmNvbnN0IGZsb2F0IFNoaWZ0UmlnaHQ4ID0gMS4gLyAyNTYuO1xudmVjNCBwYWNrRGVwdGhUb1JHQkEoIGNvbnN0IGluIGZsb2F0IHYgKSB7XG5cdHZlYzQgciA9IHZlYzQoIGZyYWN0KCB2ICogUGFja0ZhY3RvcnMgKSwgdiApO1xuXHRyLnl6dyAtPSByLnh5eiAqIFNoaWZ0UmlnaHQ4O1x0cmV0dXJuIHIgKiBQYWNrVXBzY2FsZTtcbn1cbmZsb2F0IHVucGFja1JHQkFUb0RlcHRoKCBjb25zdCBpbiB2ZWM0IHYgKSB7XG5cdHJldHVybiBkb3QoIHYsIFVucGFja0ZhY3RvcnMgKTtcbn1cbnZlYzQgcGFjazJIYWxmVG9SR0JBKCB2ZWMyIHYgKSB7XG5cdHZlYzQgciA9IHZlYzQoIHYueCwgZnJhY3QoIHYueCAqIDI1NS4wICksIHYueSwgZnJhY3QoIHYueSAqIDI1NS4wICkpO1xuXHRyZXR1cm4gdmVjNCggci54IC0gci55IC8gMjU1LjAsIHIueSwgci56IC0gci53IC8gMjU1LjAsIHIudyk7XG59XG52ZWMyIHVucGFja1JHQkFUbzJIYWxmKCB2ZWM0IHYgKSB7XG5cdHJldHVybiB2ZWMyKCB2LnggKyAoIHYueSAvIDI1NS4wICksIHYueiArICggdi53IC8gMjU1LjAgKSApO1xufVxuZmxvYXQgdmlld1pUb09ydGhvZ3JhcGhpY0RlcHRoKCBjb25zdCBpbiBmbG9hdCB2aWV3WiwgY29uc3QgaW4gZmxvYXQgbmVhciwgY29uc3QgaW4gZmxvYXQgZmFyICkge1xuXHRyZXR1cm4gKCB2aWV3WiArIG5lYXIgKSAvICggbmVhciAtIGZhciApO1xufVxuZmxvYXQgb3J0aG9ncmFwaGljRGVwdGhUb1ZpZXdaKCBjb25zdCBpbiBmbG9hdCBsaW5lYXJDbGlwWiwgY29uc3QgaW4gZmxvYXQgbmVhciwgY29uc3QgaW4gZmxvYXQgZmFyICkge1xuXHRyZXR1cm4gbGluZWFyQ2xpcFogKiAoIG5lYXIgLSBmYXIgKSAtIG5lYXI7XG59XG5mbG9hdCB2aWV3WlRvUGVyc3BlY3RpdmVEZXB0aCggY29uc3QgaW4gZmxvYXQgdmlld1osIGNvbnN0IGluIGZsb2F0IG5lYXIsIGNvbnN0IGluIGZsb2F0IGZhciApIHtcblx0cmV0dXJuICgoIG5lYXIgKyB2aWV3WiApICogZmFyICkgLyAoKCBmYXIgLSBuZWFyICkgKiB2aWV3WiApO1xufVxuZmxvYXQgcGVyc3BlY3RpdmVEZXB0aFRvVmlld1ooIGNvbnN0IGluIGZsb2F0IGludkNsaXBaLCBjb25zdCBpbiBmbG9hdCBuZWFyLCBjb25zdCBpbiBmbG9hdCBmYXIgKSB7XG5cdHJldHVybiAoIG5lYXIgKiBmYXIgKSAvICggKCBmYXIgLSBuZWFyICkgKiBpbnZDbGlwWiAtIGZhciApO1xufSIscHJlbXVsdGlwbGllZF9hbHBoYV9mcmFnbWVudDoiI2lmZGVmIFBSRU1VTFRJUExJRURfQUxQSEFcblx0Z2xfRnJhZ0NvbG9yLnJnYiAqPSBnbF9GcmFnQ29sb3IuYTtcbiNlbmRpZiIscHJvamVjdF92ZXJ0ZXg6InZlYzQgbXZQb3NpdGlvbiA9IHZlYzQoIHRyYW5zZm9ybWVkLCAxLjAgKTtcbiNpZmRlZiBVU0VfSU5TVEFOQ0lOR1xuXHRtdlBvc2l0aW9uID0gaW5zdGFuY2VNYXRyaXggKiBtdlBvc2l0aW9uO1xuI2VuZGlmXG5tdlBvc2l0aW9uID0gbW9kZWxWaWV3TWF0cml4ICogbXZQb3NpdGlvbjtcbmdsX1Bvc2l0aW9uID0gcHJvamVjdGlvbk1hdHJpeCAqIG12UG9zaXRpb247IixkaXRoZXJpbmdfZnJhZ21lbnQ6IiNpZmRlZiBESVRIRVJJTkdcblx0Z2xfRnJhZ0NvbG9yLnJnYiA9IGRpdGhlcmluZyggZ2xfRnJhZ0NvbG9yLnJnYiApO1xuI2VuZGlmIixkaXRoZXJpbmdfcGFyc19mcmFnbWVudDoiI2lmZGVmIERJVEhFUklOR1xuXHR2ZWMzIGRpdGhlcmluZyggdmVjMyBjb2xvciApIHtcblx0XHRmbG9hdCBncmlkX3Bvc2l0aW9uID0gcmFuZCggZ2xfRnJhZ0Nvb3JkLnh5ICk7XG5cdFx0dmVjMyBkaXRoZXJfc2hpZnRfUkdCID0gdmVjMyggMC4yNSAvIDI1NS4wLCAtMC4yNSAvIDI1NS4wLCAwLjI1IC8gMjU1LjAgKTtcblx0XHRkaXRoZXJfc2hpZnRfUkdCID0gbWl4KCAyLjAgKiBkaXRoZXJfc2hpZnRfUkdCLCAtMi4wICogZGl0aGVyX3NoaWZ0X1JHQiwgZ3JpZF9wb3NpdGlvbiApO1xuXHRcdHJldHVybiBjb2xvciArIGRpdGhlcl9zaGlmdF9SR0I7XG5cdH1cbiNlbmRpZiIscm91Z2huZXNzbWFwX2ZyYWdtZW50OiJmbG9hdCByb3VnaG5lc3NGYWN0b3IgPSByb3VnaG5lc3M7XG4jaWZkZWYgVVNFX1JPVUdITkVTU01BUFxuXHR2ZWM0IHRleGVsUm91Z2huZXNzID0gdGV4dHVyZTJEKCByb3VnaG5lc3NNYXAsIHZVdiApO1xuXHRyb3VnaG5lc3NGYWN0b3IgKj0gdGV4ZWxSb3VnaG5lc3MuZztcbiNlbmRpZiIscm91Z2huZXNzbWFwX3BhcnNfZnJhZ21lbnQ6IiNpZmRlZiBVU0VfUk9VR0hORVNTTUFQXG5cdHVuaWZvcm0gc2FtcGxlcjJEIHJvdWdobmVzc01hcDtcbiNlbmRpZiIsc2hhZG93bWFwX3BhcnNfZnJhZ21lbnQ6IiNpZmRlZiBVU0VfU0hBRE9XTUFQXG5cdCNpZiBOVU1fRElSX0xJR0hUX1NIQURPV1MgPiAwXG5cdFx0dW5pZm9ybSBzYW1wbGVyMkQgZGlyZWN0aW9uYWxTaGFkb3dNYXBbIE5VTV9ESVJfTElHSFRfU0hBRE9XUyBdO1xuXHRcdHZhcnlpbmcgdmVjNCB2RGlyZWN0aW9uYWxTaGFkb3dDb29yZFsgTlVNX0RJUl9MSUdIVF9TSEFET1dTIF07XG5cdFx0c3RydWN0IERpcmVjdGlvbmFsTGlnaHRTaGFkb3cge1xuXHRcdFx0ZmxvYXQgc2hhZG93Qmlhcztcblx0XHRcdGZsb2F0IHNoYWRvd05vcm1hbEJpYXM7XG5cdFx0XHRmbG9hdCBzaGFkb3dSYWRpdXM7XG5cdFx0XHR2ZWMyIHNoYWRvd01hcFNpemU7XG5cdFx0fTtcblx0XHR1bmlmb3JtIERpcmVjdGlvbmFsTGlnaHRTaGFkb3cgZGlyZWN0aW9uYWxMaWdodFNoYWRvd3NbIE5VTV9ESVJfTElHSFRfU0hBRE9XUyBdO1xuXHQjZW5kaWZcblx0I2lmIE5VTV9TUE9UX0xJR0hUX1NIQURPV1MgPiAwXG5cdFx0dW5pZm9ybSBzYW1wbGVyMkQgc3BvdFNoYWRvd01hcFsgTlVNX1NQT1RfTElHSFRfU0hBRE9XUyBdO1xuXHRcdHZhcnlpbmcgdmVjNCB2U3BvdFNoYWRvd0Nvb3JkWyBOVU1fU1BPVF9MSUdIVF9TSEFET1dTIF07XG5cdFx0c3RydWN0IFNwb3RMaWdodFNoYWRvdyB7XG5cdFx0XHRmbG9hdCBzaGFkb3dCaWFzO1xuXHRcdFx0ZmxvYXQgc2hhZG93Tm9ybWFsQmlhcztcblx0XHRcdGZsb2F0IHNoYWRvd1JhZGl1cztcblx0XHRcdHZlYzIgc2hhZG93TWFwU2l6ZTtcblx0XHR9O1xuXHRcdHVuaWZvcm0gU3BvdExpZ2h0U2hhZG93IHNwb3RMaWdodFNoYWRvd3NbIE5VTV9TUE9UX0xJR0hUX1NIQURPV1MgXTtcblx0I2VuZGlmXG5cdCNpZiBOVU1fUE9JTlRfTElHSFRfU0hBRE9XUyA+IDBcblx0XHR1bmlmb3JtIHNhbXBsZXIyRCBwb2ludFNoYWRvd01hcFsgTlVNX1BPSU5UX0xJR0hUX1NIQURPV1MgXTtcblx0XHR2YXJ5aW5nIHZlYzQgdlBvaW50U2hhZG93Q29vcmRbIE5VTV9QT0lOVF9MSUdIVF9TSEFET1dTIF07XG5cdFx0c3RydWN0IFBvaW50TGlnaHRTaGFkb3cge1xuXHRcdFx0ZmxvYXQgc2hhZG93Qmlhcztcblx0XHRcdGZsb2F0IHNoYWRvd05vcm1hbEJpYXM7XG5cdFx0XHRmbG9hdCBzaGFkb3dSYWRpdXM7XG5cdFx0XHR2ZWMyIHNoYWRvd01hcFNpemU7XG5cdFx0XHRmbG9hdCBzaGFkb3dDYW1lcmFOZWFyO1xuXHRcdFx0ZmxvYXQgc2hhZG93Q2FtZXJhRmFyO1xuXHRcdH07XG5cdFx0dW5pZm9ybSBQb2ludExpZ2h0U2hhZG93IHBvaW50TGlnaHRTaGFkb3dzWyBOVU1fUE9JTlRfTElHSFRfU0hBRE9XUyBdO1xuXHQjZW5kaWZcblx0ZmxvYXQgdGV4dHVyZTJEQ29tcGFyZSggc2FtcGxlcjJEIGRlcHRocywgdmVjMiB1diwgZmxvYXQgY29tcGFyZSApIHtcblx0XHRyZXR1cm4gc3RlcCggY29tcGFyZSwgdW5wYWNrUkdCQVRvRGVwdGgoIHRleHR1cmUyRCggZGVwdGhzLCB1diApICkgKTtcblx0fVxuXHR2ZWMyIHRleHR1cmUyRERpc3RyaWJ1dGlvbiggc2FtcGxlcjJEIHNoYWRvdywgdmVjMiB1diApIHtcblx0XHRyZXR1cm4gdW5wYWNrUkdCQVRvMkhhbGYoIHRleHR1cmUyRCggc2hhZG93LCB1diApICk7XG5cdH1cblx0ZmxvYXQgVlNNU2hhZG93IChzYW1wbGVyMkQgc2hhZG93LCB2ZWMyIHV2LCBmbG9hdCBjb21wYXJlICl7XG5cdFx0ZmxvYXQgb2NjbHVzaW9uID0gMS4wO1xuXHRcdHZlYzIgZGlzdHJpYnV0aW9uID0gdGV4dHVyZTJERGlzdHJpYnV0aW9uKCBzaGFkb3csIHV2ICk7XG5cdFx0ZmxvYXQgaGFyZF9zaGFkb3cgPSBzdGVwKCBjb21wYXJlICwgZGlzdHJpYnV0aW9uLnggKTtcblx0XHRpZiAoaGFyZF9zaGFkb3cgIT0gMS4wICkge1xuXHRcdFx0ZmxvYXQgZGlzdGFuY2UgPSBjb21wYXJlIC0gZGlzdHJpYnV0aW9uLnggO1xuXHRcdFx0ZmxvYXQgdmFyaWFuY2UgPSBtYXgoIDAuMDAwMDAsIGRpc3RyaWJ1dGlvbi55ICogZGlzdHJpYnV0aW9uLnkgKTtcblx0XHRcdGZsb2F0IHNvZnRuZXNzX3Byb2JhYmlsaXR5ID0gdmFyaWFuY2UgLyAodmFyaWFuY2UgKyBkaXN0YW5jZSAqIGRpc3RhbmNlICk7XHRcdFx0c29mdG5lc3NfcHJvYmFiaWxpdHkgPSBjbGFtcCggKCBzb2Z0bmVzc19wcm9iYWJpbGl0eSAtIDAuMyApIC8gKCAwLjk1IC0gMC4zICksIDAuMCwgMS4wICk7XHRcdFx0b2NjbHVzaW9uID0gY2xhbXAoIG1heCggaGFyZF9zaGFkb3csIHNvZnRuZXNzX3Byb2JhYmlsaXR5ICksIDAuMCwgMS4wICk7XG5cdFx0fVxuXHRcdHJldHVybiBvY2NsdXNpb247XG5cdH1cblx0ZmxvYXQgZ2V0U2hhZG93KCBzYW1wbGVyMkQgc2hhZG93TWFwLCB2ZWMyIHNoYWRvd01hcFNpemUsIGZsb2F0IHNoYWRvd0JpYXMsIGZsb2F0IHNoYWRvd1JhZGl1cywgdmVjNCBzaGFkb3dDb29yZCApIHtcblx0XHRmbG9hdCBzaGFkb3cgPSAxLjA7XG5cdFx0c2hhZG93Q29vcmQueHl6IC89IHNoYWRvd0Nvb3JkLnc7XG5cdFx0c2hhZG93Q29vcmQueiArPSBzaGFkb3dCaWFzO1xuXHRcdGJ2ZWM0IGluRnJ1c3R1bVZlYyA9IGJ2ZWM0ICggc2hhZG93Q29vcmQueCA+PSAwLjAsIHNoYWRvd0Nvb3JkLnggPD0gMS4wLCBzaGFkb3dDb29yZC55ID49IDAuMCwgc2hhZG93Q29vcmQueSA8PSAxLjAgKTtcblx0XHRib29sIGluRnJ1c3R1bSA9IGFsbCggaW5GcnVzdHVtVmVjICk7XG5cdFx0YnZlYzIgZnJ1c3R1bVRlc3RWZWMgPSBidmVjMiggaW5GcnVzdHVtLCBzaGFkb3dDb29yZC56IDw9IDEuMCApO1xuXHRcdGJvb2wgZnJ1c3R1bVRlc3QgPSBhbGwoIGZydXN0dW1UZXN0VmVjICk7XG5cdFx0aWYgKCBmcnVzdHVtVGVzdCApIHtcblx0XHQjaWYgZGVmaW5lZCggU0hBRE9XTUFQX1RZUEVfUENGIClcblx0XHRcdHZlYzIgdGV4ZWxTaXplID0gdmVjMiggMS4wICkgLyBzaGFkb3dNYXBTaXplO1xuXHRcdFx0ZmxvYXQgZHgwID0gLSB0ZXhlbFNpemUueCAqIHNoYWRvd1JhZGl1cztcblx0XHRcdGZsb2F0IGR5MCA9IC0gdGV4ZWxTaXplLnkgKiBzaGFkb3dSYWRpdXM7XG5cdFx0XHRmbG9hdCBkeDEgPSArIHRleGVsU2l6ZS54ICogc2hhZG93UmFkaXVzO1xuXHRcdFx0ZmxvYXQgZHkxID0gKyB0ZXhlbFNpemUueSAqIHNoYWRvd1JhZGl1cztcblx0XHRcdGZsb2F0IGR4MiA9IGR4MCAvIDIuMDtcblx0XHRcdGZsb2F0IGR5MiA9IGR5MCAvIDIuMDtcblx0XHRcdGZsb2F0IGR4MyA9IGR4MSAvIDIuMDtcblx0XHRcdGZsb2F0IGR5MyA9IGR5MSAvIDIuMDtcblx0XHRcdHNoYWRvdyA9IChcblx0XHRcdFx0dGV4dHVyZTJEQ29tcGFyZSggc2hhZG93TWFwLCBzaGFkb3dDb29yZC54eSArIHZlYzIoIGR4MCwgZHkwICksIHNoYWRvd0Nvb3JkLnogKSArXG5cdFx0XHRcdHRleHR1cmUyRENvbXBhcmUoIHNoYWRvd01hcCwgc2hhZG93Q29vcmQueHkgKyB2ZWMyKCAwLjAsIGR5MCApLCBzaGFkb3dDb29yZC56ICkgK1xuXHRcdFx0XHR0ZXh0dXJlMkRDb21wYXJlKCBzaGFkb3dNYXAsIHNoYWRvd0Nvb3JkLnh5ICsgdmVjMiggZHgxLCBkeTAgKSwgc2hhZG93Q29vcmQueiApICtcblx0XHRcdFx0dGV4dHVyZTJEQ29tcGFyZSggc2hhZG93TWFwLCBzaGFkb3dDb29yZC54eSArIHZlYzIoIGR4MiwgZHkyICksIHNoYWRvd0Nvb3JkLnogKSArXG5cdFx0XHRcdHRleHR1cmUyRENvbXBhcmUoIHNoYWRvd01hcCwgc2hhZG93Q29vcmQueHkgKyB2ZWMyKCAwLjAsIGR5MiApLCBzaGFkb3dDb29yZC56ICkgK1xuXHRcdFx0XHR0ZXh0dXJlMkRDb21wYXJlKCBzaGFkb3dNYXAsIHNoYWRvd0Nvb3JkLnh5ICsgdmVjMiggZHgzLCBkeTIgKSwgc2hhZG93Q29vcmQueiApICtcblx0XHRcdFx0dGV4dHVyZTJEQ29tcGFyZSggc2hhZG93TWFwLCBzaGFkb3dDb29yZC54eSArIHZlYzIoIGR4MCwgMC4wICksIHNoYWRvd0Nvb3JkLnogKSArXG5cdFx0XHRcdHRleHR1cmUyRENvbXBhcmUoIHNoYWRvd01hcCwgc2hhZG93Q29vcmQueHkgKyB2ZWMyKCBkeDIsIDAuMCApLCBzaGFkb3dDb29yZC56ICkgK1xuXHRcdFx0XHR0ZXh0dXJlMkRDb21wYXJlKCBzaGFkb3dNYXAsIHNoYWRvd0Nvb3JkLnh5LCBzaGFkb3dDb29yZC56ICkgK1xuXHRcdFx0XHR0ZXh0dXJlMkRDb21wYXJlKCBzaGFkb3dNYXAsIHNoYWRvd0Nvb3JkLnh5ICsgdmVjMiggZHgzLCAwLjAgKSwgc2hhZG93Q29vcmQueiApICtcblx0XHRcdFx0dGV4dHVyZTJEQ29tcGFyZSggc2hhZG93TWFwLCBzaGFkb3dDb29yZC54eSArIHZlYzIoIGR4MSwgMC4wICksIHNoYWRvd0Nvb3JkLnogKSArXG5cdFx0XHRcdHRleHR1cmUyRENvbXBhcmUoIHNoYWRvd01hcCwgc2hhZG93Q29vcmQueHkgKyB2ZWMyKCBkeDIsIGR5MyApLCBzaGFkb3dDb29yZC56ICkgK1xuXHRcdFx0XHR0ZXh0dXJlMkRDb21wYXJlKCBzaGFkb3dNYXAsIHNoYWRvd0Nvb3JkLnh5ICsgdmVjMiggMC4wLCBkeTMgKSwgc2hhZG93Q29vcmQueiApICtcblx0XHRcdFx0dGV4dHVyZTJEQ29tcGFyZSggc2hhZG93TWFwLCBzaGFkb3dDb29yZC54eSArIHZlYzIoIGR4MywgZHkzICksIHNoYWRvd0Nvb3JkLnogKSArXG5cdFx0XHRcdHRleHR1cmUyRENvbXBhcmUoIHNoYWRvd01hcCwgc2hhZG93Q29vcmQueHkgKyB2ZWMyKCBkeDAsIGR5MSApLCBzaGFkb3dDb29yZC56ICkgK1xuXHRcdFx0XHR0ZXh0dXJlMkRDb21wYXJlKCBzaGFkb3dNYXAsIHNoYWRvd0Nvb3JkLnh5ICsgdmVjMiggMC4wLCBkeTEgKSwgc2hhZG93Q29vcmQueiApICtcblx0XHRcdFx0dGV4dHVyZTJEQ29tcGFyZSggc2hhZG93TWFwLCBzaGFkb3dDb29yZC54eSArIHZlYzIoIGR4MSwgZHkxICksIHNoYWRvd0Nvb3JkLnogKVxuXHRcdFx0KSAqICggMS4wIC8gMTcuMCApO1xuXHRcdCNlbGlmIGRlZmluZWQoIFNIQURPV01BUF9UWVBFX1BDRl9TT0ZUIClcblx0XHRcdHZlYzIgdGV4ZWxTaXplID0gdmVjMiggMS4wICkgLyBzaGFkb3dNYXBTaXplO1xuXHRcdFx0ZmxvYXQgZHggPSB0ZXhlbFNpemUueDtcblx0XHRcdGZsb2F0IGR5ID0gdGV4ZWxTaXplLnk7XG5cdFx0XHR2ZWMyIHV2ID0gc2hhZG93Q29vcmQueHk7XG5cdFx0XHR2ZWMyIGYgPSBmcmFjdCggdXYgKiBzaGFkb3dNYXBTaXplICsgMC41ICk7XG5cdFx0XHR1diAtPSBmICogdGV4ZWxTaXplO1xuXHRcdFx0c2hhZG93ID0gKFxuXHRcdFx0XHR0ZXh0dXJlMkRDb21wYXJlKCBzaGFkb3dNYXAsIHV2LCBzaGFkb3dDb29yZC56ICkgK1xuXHRcdFx0XHR0ZXh0dXJlMkRDb21wYXJlKCBzaGFkb3dNYXAsIHV2ICsgdmVjMiggZHgsIDAuMCApLCBzaGFkb3dDb29yZC56ICkgK1xuXHRcdFx0XHR0ZXh0dXJlMkRDb21wYXJlKCBzaGFkb3dNYXAsIHV2ICsgdmVjMiggMC4wLCBkeSApLCBzaGFkb3dDb29yZC56ICkgK1xuXHRcdFx0XHR0ZXh0dXJlMkRDb21wYXJlKCBzaGFkb3dNYXAsIHV2ICsgdGV4ZWxTaXplLCBzaGFkb3dDb29yZC56ICkgK1xuXHRcdFx0XHRtaXgoIHRleHR1cmUyRENvbXBhcmUoIHNoYWRvd01hcCwgdXYgKyB2ZWMyKCAtZHgsIDAuMCApLCBzaGFkb3dDb29yZC56ICksIFxuXHRcdFx0XHRcdCB0ZXh0dXJlMkRDb21wYXJlKCBzaGFkb3dNYXAsIHV2ICsgdmVjMiggMi4wICogZHgsIDAuMCApLCBzaGFkb3dDb29yZC56ICksXG5cdFx0XHRcdFx0IGYueCApICtcblx0XHRcdFx0bWl4KCB0ZXh0dXJlMkRDb21wYXJlKCBzaGFkb3dNYXAsIHV2ICsgdmVjMiggLWR4LCBkeSApLCBzaGFkb3dDb29yZC56ICksIFxuXHRcdFx0XHRcdCB0ZXh0dXJlMkRDb21wYXJlKCBzaGFkb3dNYXAsIHV2ICsgdmVjMiggMi4wICogZHgsIGR5ICksIHNoYWRvd0Nvb3JkLnogKSxcblx0XHRcdFx0XHQgZi54ICkgK1xuXHRcdFx0XHRtaXgoIHRleHR1cmUyRENvbXBhcmUoIHNoYWRvd01hcCwgdXYgKyB2ZWMyKCAwLjAsIC1keSApLCBzaGFkb3dDb29yZC56ICksIFxuXHRcdFx0XHRcdCB0ZXh0dXJlMkRDb21wYXJlKCBzaGFkb3dNYXAsIHV2ICsgdmVjMiggMC4wLCAyLjAgKiBkeSApLCBzaGFkb3dDb29yZC56ICksXG5cdFx0XHRcdFx0IGYueSApICtcblx0XHRcdFx0bWl4KCB0ZXh0dXJlMkRDb21wYXJlKCBzaGFkb3dNYXAsIHV2ICsgdmVjMiggZHgsIC1keSApLCBzaGFkb3dDb29yZC56ICksIFxuXHRcdFx0XHRcdCB0ZXh0dXJlMkRDb21wYXJlKCBzaGFkb3dNYXAsIHV2ICsgdmVjMiggZHgsIDIuMCAqIGR5ICksIHNoYWRvd0Nvb3JkLnogKSxcblx0XHRcdFx0XHQgZi55ICkgK1xuXHRcdFx0XHRtaXgoIG1peCggdGV4dHVyZTJEQ29tcGFyZSggc2hhZG93TWFwLCB1diArIHZlYzIoIC1keCwgLWR5ICksIHNoYWRvd0Nvb3JkLnogKSwgXG5cdFx0XHRcdFx0XHQgIHRleHR1cmUyRENvbXBhcmUoIHNoYWRvd01hcCwgdXYgKyB2ZWMyKCAyLjAgKiBkeCwgLWR5ICksIHNoYWRvd0Nvb3JkLnogKSxcblx0XHRcdFx0XHRcdCAgZi54ICksXG5cdFx0XHRcdFx0IG1peCggdGV4dHVyZTJEQ29tcGFyZSggc2hhZG93TWFwLCB1diArIHZlYzIoIC1keCwgMi4wICogZHkgKSwgc2hhZG93Q29vcmQueiApLCBcblx0XHRcdFx0XHRcdCAgdGV4dHVyZTJEQ29tcGFyZSggc2hhZG93TWFwLCB1diArIHZlYzIoIDIuMCAqIGR4LCAyLjAgKiBkeSApLCBzaGFkb3dDb29yZC56ICksXG5cdFx0XHRcdFx0XHQgIGYueCApLFxuXHRcdFx0XHRcdCBmLnkgKVxuXHRcdFx0KSAqICggMS4wIC8gOS4wICk7XG5cdFx0I2VsaWYgZGVmaW5lZCggU0hBRE9XTUFQX1RZUEVfVlNNIClcblx0XHRcdHNoYWRvdyA9IFZTTVNoYWRvdyggc2hhZG93TWFwLCBzaGFkb3dDb29yZC54eSwgc2hhZG93Q29vcmQueiApO1xuXHRcdCNlbHNlXG5cdFx0XHRzaGFkb3cgPSB0ZXh0dXJlMkRDb21wYXJlKCBzaGFkb3dNYXAsIHNoYWRvd0Nvb3JkLnh5LCBzaGFkb3dDb29yZC56ICk7XG5cdFx0I2VuZGlmXG5cdFx0fVxuXHRcdHJldHVybiBzaGFkb3c7XG5cdH1cblx0dmVjMiBjdWJlVG9VViggdmVjMyB2LCBmbG9hdCB0ZXhlbFNpemVZICkge1xuXHRcdHZlYzMgYWJzViA9IGFicyggdiApO1xuXHRcdGZsb2F0IHNjYWxlVG9DdWJlID0gMS4wIC8gbWF4KCBhYnNWLngsIG1heCggYWJzVi55LCBhYnNWLnogKSApO1xuXHRcdGFic1YgKj0gc2NhbGVUb0N1YmU7XG5cdFx0diAqPSBzY2FsZVRvQ3ViZSAqICggMS4wIC0gMi4wICogdGV4ZWxTaXplWSApO1xuXHRcdHZlYzIgcGxhbmFyID0gdi54eTtcblx0XHRmbG9hdCBhbG1vc3RBVGV4ZWwgPSAxLjUgKiB0ZXhlbFNpemVZO1xuXHRcdGZsb2F0IGFsbW9zdE9uZSA9IDEuMCAtIGFsbW9zdEFUZXhlbDtcblx0XHRpZiAoIGFic1YueiA+PSBhbG1vc3RPbmUgKSB7XG5cdFx0XHRpZiAoIHYueiA+IDAuMCApXG5cdFx0XHRcdHBsYW5hci54ID0gNC4wIC0gdi54O1xuXHRcdH0gZWxzZSBpZiAoIGFic1YueCA+PSBhbG1vc3RPbmUgKSB7XG5cdFx0XHRmbG9hdCBzaWduWCA9IHNpZ24oIHYueCApO1xuXHRcdFx0cGxhbmFyLnggPSB2LnogKiBzaWduWCArIDIuMCAqIHNpZ25YO1xuXHRcdH0gZWxzZSBpZiAoIGFic1YueSA+PSBhbG1vc3RPbmUgKSB7XG5cdFx0XHRmbG9hdCBzaWduWSA9IHNpZ24oIHYueSApO1xuXHRcdFx0cGxhbmFyLnggPSB2LnggKyAyLjAgKiBzaWduWSArIDIuMDtcblx0XHRcdHBsYW5hci55ID0gdi56ICogc2lnblkgLSAyLjA7XG5cdFx0fVxuXHRcdHJldHVybiB2ZWMyKCAwLjEyNSwgMC4yNSApICogcGxhbmFyICsgdmVjMiggMC4zNzUsIDAuNzUgKTtcblx0fVxuXHRmbG9hdCBnZXRQb2ludFNoYWRvdyggc2FtcGxlcjJEIHNoYWRvd01hcCwgdmVjMiBzaGFkb3dNYXBTaXplLCBmbG9hdCBzaGFkb3dCaWFzLCBmbG9hdCBzaGFkb3dSYWRpdXMsIHZlYzQgc2hhZG93Q29vcmQsIGZsb2F0IHNoYWRvd0NhbWVyYU5lYXIsIGZsb2F0IHNoYWRvd0NhbWVyYUZhciApIHtcblx0XHR2ZWMyIHRleGVsU2l6ZSA9IHZlYzIoIDEuMCApIC8gKCBzaGFkb3dNYXBTaXplICogdmVjMiggNC4wLCAyLjAgKSApO1xuXHRcdHZlYzMgbGlnaHRUb1Bvc2l0aW9uID0gc2hhZG93Q29vcmQueHl6O1xuXHRcdGZsb2F0IGRwID0gKCBsZW5ndGgoIGxpZ2h0VG9Qb3NpdGlvbiApIC0gc2hhZG93Q2FtZXJhTmVhciApIC8gKCBzaGFkb3dDYW1lcmFGYXIgLSBzaGFkb3dDYW1lcmFOZWFyICk7XHRcdGRwICs9IHNoYWRvd0JpYXM7XG5cdFx0dmVjMyBiZDNEID0gbm9ybWFsaXplKCBsaWdodFRvUG9zaXRpb24gKTtcblx0XHQjaWYgZGVmaW5lZCggU0hBRE9XTUFQX1RZUEVfUENGICkgfHwgZGVmaW5lZCggU0hBRE9XTUFQX1RZUEVfUENGX1NPRlQgKSB8fCBkZWZpbmVkKCBTSEFET1dNQVBfVFlQRV9WU00gKVxuXHRcdFx0dmVjMiBvZmZzZXQgPSB2ZWMyKCAtIDEsIDEgKSAqIHNoYWRvd1JhZGl1cyAqIHRleGVsU2l6ZS55O1xuXHRcdFx0cmV0dXJuIChcblx0XHRcdFx0dGV4dHVyZTJEQ29tcGFyZSggc2hhZG93TWFwLCBjdWJlVG9VViggYmQzRCArIG9mZnNldC54eXksIHRleGVsU2l6ZS55ICksIGRwICkgK1xuXHRcdFx0XHR0ZXh0dXJlMkRDb21wYXJlKCBzaGFkb3dNYXAsIGN1YmVUb1VWKCBiZDNEICsgb2Zmc2V0Lnl5eSwgdGV4ZWxTaXplLnkgKSwgZHAgKSArXG5cdFx0XHRcdHRleHR1cmUyRENvbXBhcmUoIHNoYWRvd01hcCwgY3ViZVRvVVYoIGJkM0QgKyBvZmZzZXQueHl4LCB0ZXhlbFNpemUueSApLCBkcCApICtcblx0XHRcdFx0dGV4dHVyZTJEQ29tcGFyZSggc2hhZG93TWFwLCBjdWJlVG9VViggYmQzRCArIG9mZnNldC55eXgsIHRleGVsU2l6ZS55ICksIGRwICkgK1xuXHRcdFx0XHR0ZXh0dXJlMkRDb21wYXJlKCBzaGFkb3dNYXAsIGN1YmVUb1VWKCBiZDNELCB0ZXhlbFNpemUueSApLCBkcCApICtcblx0XHRcdFx0dGV4dHVyZTJEQ29tcGFyZSggc2hhZG93TWFwLCBjdWJlVG9VViggYmQzRCArIG9mZnNldC54eHksIHRleGVsU2l6ZS55ICksIGRwICkgK1xuXHRcdFx0XHR0ZXh0dXJlMkRDb21wYXJlKCBzaGFkb3dNYXAsIGN1YmVUb1VWKCBiZDNEICsgb2Zmc2V0Lnl4eSwgdGV4ZWxTaXplLnkgKSwgZHAgKSArXG5cdFx0XHRcdHRleHR1cmUyRENvbXBhcmUoIHNoYWRvd01hcCwgY3ViZVRvVVYoIGJkM0QgKyBvZmZzZXQueHh4LCB0ZXhlbFNpemUueSApLCBkcCApICtcblx0XHRcdFx0dGV4dHVyZTJEQ29tcGFyZSggc2hhZG93TWFwLCBjdWJlVG9VViggYmQzRCArIG9mZnNldC55eHgsIHRleGVsU2l6ZS55ICksIGRwIClcblx0XHRcdCkgKiAoIDEuMCAvIDkuMCApO1xuXHRcdCNlbHNlXG5cdFx0XHRyZXR1cm4gdGV4dHVyZTJEQ29tcGFyZSggc2hhZG93TWFwLCBjdWJlVG9VViggYmQzRCwgdGV4ZWxTaXplLnkgKSwgZHAgKTtcblx0XHQjZW5kaWZcblx0fVxuI2VuZGlmIixzaGFkb3dtYXBfcGFyc192ZXJ0ZXg6IiNpZmRlZiBVU0VfU0hBRE9XTUFQXG5cdCNpZiBOVU1fRElSX0xJR0hUX1NIQURPV1MgPiAwXG5cdFx0dW5pZm9ybSBtYXQ0IGRpcmVjdGlvbmFsU2hhZG93TWF0cml4WyBOVU1fRElSX0xJR0hUX1NIQURPV1MgXTtcblx0XHR2YXJ5aW5nIHZlYzQgdkRpcmVjdGlvbmFsU2hhZG93Q29vcmRbIE5VTV9ESVJfTElHSFRfU0hBRE9XUyBdO1xuXHRcdHN0cnVjdCBEaXJlY3Rpb25hbExpZ2h0U2hhZG93IHtcblx0XHRcdGZsb2F0IHNoYWRvd0JpYXM7XG5cdFx0XHRmbG9hdCBzaGFkb3dOb3JtYWxCaWFzO1xuXHRcdFx0ZmxvYXQgc2hhZG93UmFkaXVzO1xuXHRcdFx0dmVjMiBzaGFkb3dNYXBTaXplO1xuXHRcdH07XG5cdFx0dW5pZm9ybSBEaXJlY3Rpb25hbExpZ2h0U2hhZG93IGRpcmVjdGlvbmFsTGlnaHRTaGFkb3dzWyBOVU1fRElSX0xJR0hUX1NIQURPV1MgXTtcblx0I2VuZGlmXG5cdCNpZiBOVU1fU1BPVF9MSUdIVF9TSEFET1dTID4gMFxuXHRcdHVuaWZvcm0gbWF0NCBzcG90U2hhZG93TWF0cml4WyBOVU1fU1BPVF9MSUdIVF9TSEFET1dTIF07XG5cdFx0dmFyeWluZyB2ZWM0IHZTcG90U2hhZG93Q29vcmRbIE5VTV9TUE9UX0xJR0hUX1NIQURPV1MgXTtcblx0XHRzdHJ1Y3QgU3BvdExpZ2h0U2hhZG93IHtcblx0XHRcdGZsb2F0IHNoYWRvd0JpYXM7XG5cdFx0XHRmbG9hdCBzaGFkb3dOb3JtYWxCaWFzO1xuXHRcdFx0ZmxvYXQgc2hhZG93UmFkaXVzO1xuXHRcdFx0dmVjMiBzaGFkb3dNYXBTaXplO1xuXHRcdH07XG5cdFx0dW5pZm9ybSBTcG90TGlnaHRTaGFkb3cgc3BvdExpZ2h0U2hhZG93c1sgTlVNX1NQT1RfTElHSFRfU0hBRE9XUyBdO1xuXHQjZW5kaWZcblx0I2lmIE5VTV9QT0lOVF9MSUdIVF9TSEFET1dTID4gMFxuXHRcdHVuaWZvcm0gbWF0NCBwb2ludFNoYWRvd01hdHJpeFsgTlVNX1BPSU5UX0xJR0hUX1NIQURPV1MgXTtcblx0XHR2YXJ5aW5nIHZlYzQgdlBvaW50U2hhZG93Q29vcmRbIE5VTV9QT0lOVF9MSUdIVF9TSEFET1dTIF07XG5cdFx0c3RydWN0IFBvaW50TGlnaHRTaGFkb3cge1xuXHRcdFx0ZmxvYXQgc2hhZG93Qmlhcztcblx0XHRcdGZsb2F0IHNoYWRvd05vcm1hbEJpYXM7XG5cdFx0XHRmbG9hdCBzaGFkb3dSYWRpdXM7XG5cdFx0XHR2ZWMyIHNoYWRvd01hcFNpemU7XG5cdFx0XHRmbG9hdCBzaGFkb3dDYW1lcmFOZWFyO1xuXHRcdFx0ZmxvYXQgc2hhZG93Q2FtZXJhRmFyO1xuXHRcdH07XG5cdFx0dW5pZm9ybSBQb2ludExpZ2h0U2hhZG93IHBvaW50TGlnaHRTaGFkb3dzWyBOVU1fUE9JTlRfTElHSFRfU0hBRE9XUyBdO1xuXHQjZW5kaWZcbiNlbmRpZiIsc2hhZG93bWFwX3ZlcnRleDoiI2lmZGVmIFVTRV9TSEFET1dNQVBcblx0I2lmIE5VTV9ESVJfTElHSFRfU0hBRE9XUyA+IDAgfHwgTlVNX1NQT1RfTElHSFRfU0hBRE9XUyA+IDAgfHwgTlVNX1BPSU5UX0xJR0hUX1NIQURPV1MgPiAwXG5cdFx0dmVjMyBzaGFkb3dXb3JsZE5vcm1hbCA9IGludmVyc2VUcmFuc2Zvcm1EaXJlY3Rpb24oIHRyYW5zZm9ybWVkTm9ybWFsLCB2aWV3TWF0cml4ICk7XG5cdFx0dmVjNCBzaGFkb3dXb3JsZFBvc2l0aW9uO1xuXHQjZW5kaWZcblx0I2lmIE5VTV9ESVJfTElHSFRfU0hBRE9XUyA+IDBcblx0I3ByYWdtYSB1bnJvbGxfbG9vcF9zdGFydFxuXHRmb3IgKCBpbnQgaSA9IDA7IGkgPCBOVU1fRElSX0xJR0hUX1NIQURPV1M7IGkgKysgKSB7XG5cdFx0c2hhZG93V29ybGRQb3NpdGlvbiA9IHdvcmxkUG9zaXRpb24gKyB2ZWM0KCBzaGFkb3dXb3JsZE5vcm1hbCAqIGRpcmVjdGlvbmFsTGlnaHRTaGFkb3dzWyBpIF0uc2hhZG93Tm9ybWFsQmlhcywgMCApO1xuXHRcdHZEaXJlY3Rpb25hbFNoYWRvd0Nvb3JkWyBpIF0gPSBkaXJlY3Rpb25hbFNoYWRvd01hdHJpeFsgaSBdICogc2hhZG93V29ybGRQb3NpdGlvbjtcblx0fVxuXHQjcHJhZ21hIHVucm9sbF9sb29wX2VuZFxuXHQjZW5kaWZcblx0I2lmIE5VTV9TUE9UX0xJR0hUX1NIQURPV1MgPiAwXG5cdCNwcmFnbWEgdW5yb2xsX2xvb3Bfc3RhcnRcblx0Zm9yICggaW50IGkgPSAwOyBpIDwgTlVNX1NQT1RfTElHSFRfU0hBRE9XUzsgaSArKyApIHtcblx0XHRzaGFkb3dXb3JsZFBvc2l0aW9uID0gd29ybGRQb3NpdGlvbiArIHZlYzQoIHNoYWRvd1dvcmxkTm9ybWFsICogc3BvdExpZ2h0U2hhZG93c1sgaSBdLnNoYWRvd05vcm1hbEJpYXMsIDAgKTtcblx0XHR2U3BvdFNoYWRvd0Nvb3JkWyBpIF0gPSBzcG90U2hhZG93TWF0cml4WyBpIF0gKiBzaGFkb3dXb3JsZFBvc2l0aW9uO1xuXHR9XG5cdCNwcmFnbWEgdW5yb2xsX2xvb3BfZW5kXG5cdCNlbmRpZlxuXHQjaWYgTlVNX1BPSU5UX0xJR0hUX1NIQURPV1MgPiAwXG5cdCNwcmFnbWEgdW5yb2xsX2xvb3Bfc3RhcnRcblx0Zm9yICggaW50IGkgPSAwOyBpIDwgTlVNX1BPSU5UX0xJR0hUX1NIQURPV1M7IGkgKysgKSB7XG5cdFx0c2hhZG93V29ybGRQb3NpdGlvbiA9IHdvcmxkUG9zaXRpb24gKyB2ZWM0KCBzaGFkb3dXb3JsZE5vcm1hbCAqIHBvaW50TGlnaHRTaGFkb3dzWyBpIF0uc2hhZG93Tm9ybWFsQmlhcywgMCApO1xuXHRcdHZQb2ludFNoYWRvd0Nvb3JkWyBpIF0gPSBwb2ludFNoYWRvd01hdHJpeFsgaSBdICogc2hhZG93V29ybGRQb3NpdGlvbjtcblx0fVxuXHQjcHJhZ21hIHVucm9sbF9sb29wX2VuZFxuXHQjZW5kaWZcbiNlbmRpZiIsc2hhZG93bWFza19wYXJzX2ZyYWdtZW50OiJmbG9hdCBnZXRTaGFkb3dNYXNrKCkge1xuXHRmbG9hdCBzaGFkb3cgPSAxLjA7XG5cdCNpZmRlZiBVU0VfU0hBRE9XTUFQXG5cdCNpZiBOVU1fRElSX0xJR0hUX1NIQURPV1MgPiAwXG5cdERpcmVjdGlvbmFsTGlnaHRTaGFkb3cgZGlyZWN0aW9uYWxMaWdodDtcblx0I3ByYWdtYSB1bnJvbGxfbG9vcF9zdGFydFxuXHRmb3IgKCBpbnQgaSA9IDA7IGkgPCBOVU1fRElSX0xJR0hUX1NIQURPV1M7IGkgKysgKSB7XG5cdFx0ZGlyZWN0aW9uYWxMaWdodCA9IGRpcmVjdGlvbmFsTGlnaHRTaGFkb3dzWyBpIF07XG5cdFx0c2hhZG93ICo9IHJlY2VpdmVTaGFkb3cgPyBnZXRTaGFkb3coIGRpcmVjdGlvbmFsU2hhZG93TWFwWyBpIF0sIGRpcmVjdGlvbmFsTGlnaHQuc2hhZG93TWFwU2l6ZSwgZGlyZWN0aW9uYWxMaWdodC5zaGFkb3dCaWFzLCBkaXJlY3Rpb25hbExpZ2h0LnNoYWRvd1JhZGl1cywgdkRpcmVjdGlvbmFsU2hhZG93Q29vcmRbIGkgXSApIDogMS4wO1xuXHR9XG5cdCNwcmFnbWEgdW5yb2xsX2xvb3BfZW5kXG5cdCNlbmRpZlxuXHQjaWYgTlVNX1NQT1RfTElHSFRfU0hBRE9XUyA+IDBcblx0U3BvdExpZ2h0U2hhZG93IHNwb3RMaWdodDtcblx0I3ByYWdtYSB1bnJvbGxfbG9vcF9zdGFydFxuXHRmb3IgKCBpbnQgaSA9IDA7IGkgPCBOVU1fU1BPVF9MSUdIVF9TSEFET1dTOyBpICsrICkge1xuXHRcdHNwb3RMaWdodCA9IHNwb3RMaWdodFNoYWRvd3NbIGkgXTtcblx0XHRzaGFkb3cgKj0gcmVjZWl2ZVNoYWRvdyA/IGdldFNoYWRvdyggc3BvdFNoYWRvd01hcFsgaSBdLCBzcG90TGlnaHQuc2hhZG93TWFwU2l6ZSwgc3BvdExpZ2h0LnNoYWRvd0JpYXMsIHNwb3RMaWdodC5zaGFkb3dSYWRpdXMsIHZTcG90U2hhZG93Q29vcmRbIGkgXSApIDogMS4wO1xuXHR9XG5cdCNwcmFnbWEgdW5yb2xsX2xvb3BfZW5kXG5cdCNlbmRpZlxuXHQjaWYgTlVNX1BPSU5UX0xJR0hUX1NIQURPV1MgPiAwXG5cdFBvaW50TGlnaHRTaGFkb3cgcG9pbnRMaWdodDtcblx0I3ByYWdtYSB1bnJvbGxfbG9vcF9zdGFydFxuXHRmb3IgKCBpbnQgaSA9IDA7IGkgPCBOVU1fUE9JTlRfTElHSFRfU0hBRE9XUzsgaSArKyApIHtcblx0XHRwb2ludExpZ2h0ID0gcG9pbnRMaWdodFNoYWRvd3NbIGkgXTtcblx0XHRzaGFkb3cgKj0gcmVjZWl2ZVNoYWRvdyA/IGdldFBvaW50U2hhZG93KCBwb2ludFNoYWRvd01hcFsgaSBdLCBwb2ludExpZ2h0LnNoYWRvd01hcFNpemUsIHBvaW50TGlnaHQuc2hhZG93QmlhcywgcG9pbnRMaWdodC5zaGFkb3dSYWRpdXMsIHZQb2ludFNoYWRvd0Nvb3JkWyBpIF0sIHBvaW50TGlnaHQuc2hhZG93Q2FtZXJhTmVhciwgcG9pbnRMaWdodC5zaGFkb3dDYW1lcmFGYXIgKSA6IDEuMDtcblx0fVxuXHQjcHJhZ21hIHVucm9sbF9sb29wX2VuZFxuXHQjZW5kaWZcblx0I2VuZGlmXG5cdHJldHVybiBzaGFkb3c7XG59Iixza2luYmFzZV92ZXJ0ZXg6IiNpZmRlZiBVU0VfU0tJTk5JTkdcblx0bWF0NCBib25lTWF0WCA9IGdldEJvbmVNYXRyaXgoIHNraW5JbmRleC54ICk7XG5cdG1hdDQgYm9uZU1hdFkgPSBnZXRCb25lTWF0cml4KCBza2luSW5kZXgueSApO1xuXHRtYXQ0IGJvbmVNYXRaID0gZ2V0Qm9uZU1hdHJpeCggc2tpbkluZGV4LnogKTtcblx0bWF0NCBib25lTWF0VyA9IGdldEJvbmVNYXRyaXgoIHNraW5JbmRleC53ICk7XG4jZW5kaWYiLHNraW5uaW5nX3BhcnNfdmVydGV4OiIjaWZkZWYgVVNFX1NLSU5OSU5HXG5cdHVuaWZvcm0gbWF0NCBiaW5kTWF0cml4O1xuXHR1bmlmb3JtIG1hdDQgYmluZE1hdHJpeEludmVyc2U7XG5cdCNpZmRlZiBCT05FX1RFWFRVUkVcblx0XHR1bmlmb3JtIGhpZ2hwIHNhbXBsZXIyRCBib25lVGV4dHVyZTtcblx0XHR1bmlmb3JtIGludCBib25lVGV4dHVyZVNpemU7XG5cdFx0bWF0NCBnZXRCb25lTWF0cml4KCBjb25zdCBpbiBmbG9hdCBpICkge1xuXHRcdFx0ZmxvYXQgaiA9IGkgKiA0LjA7XG5cdFx0XHRmbG9hdCB4ID0gbW9kKCBqLCBmbG9hdCggYm9uZVRleHR1cmVTaXplICkgKTtcblx0XHRcdGZsb2F0IHkgPSBmbG9vciggaiAvIGZsb2F0KCBib25lVGV4dHVyZVNpemUgKSApO1xuXHRcdFx0ZmxvYXQgZHggPSAxLjAgLyBmbG9hdCggYm9uZVRleHR1cmVTaXplICk7XG5cdFx0XHRmbG9hdCBkeSA9IDEuMCAvIGZsb2F0KCBib25lVGV4dHVyZVNpemUgKTtcblx0XHRcdHkgPSBkeSAqICggeSArIDAuNSApO1xuXHRcdFx0dmVjNCB2MSA9IHRleHR1cmUyRCggYm9uZVRleHR1cmUsIHZlYzIoIGR4ICogKCB4ICsgMC41ICksIHkgKSApO1xuXHRcdFx0dmVjNCB2MiA9IHRleHR1cmUyRCggYm9uZVRleHR1cmUsIHZlYzIoIGR4ICogKCB4ICsgMS41ICksIHkgKSApO1xuXHRcdFx0dmVjNCB2MyA9IHRleHR1cmUyRCggYm9uZVRleHR1cmUsIHZlYzIoIGR4ICogKCB4ICsgMi41ICksIHkgKSApO1xuXHRcdFx0dmVjNCB2NCA9IHRleHR1cmUyRCggYm9uZVRleHR1cmUsIHZlYzIoIGR4ICogKCB4ICsgMy41ICksIHkgKSApO1xuXHRcdFx0bWF0NCBib25lID0gbWF0NCggdjEsIHYyLCB2MywgdjQgKTtcblx0XHRcdHJldHVybiBib25lO1xuXHRcdH1cblx0I2Vsc2Vcblx0XHR1bmlmb3JtIG1hdDQgYm9uZU1hdHJpY2VzWyBNQVhfQk9ORVMgXTtcblx0XHRtYXQ0IGdldEJvbmVNYXRyaXgoIGNvbnN0IGluIGZsb2F0IGkgKSB7XG5cdFx0XHRtYXQ0IGJvbmUgPSBib25lTWF0cmljZXNbIGludChpKSBdO1xuXHRcdFx0cmV0dXJuIGJvbmU7XG5cdFx0fVxuXHQjZW5kaWZcbiNlbmRpZiIsc2tpbm5pbmdfdmVydGV4OiIjaWZkZWYgVVNFX1NLSU5OSU5HXG5cdHZlYzQgc2tpblZlcnRleCA9IGJpbmRNYXRyaXggKiB2ZWM0KCB0cmFuc2Zvcm1lZCwgMS4wICk7XG5cdHZlYzQgc2tpbm5lZCA9IHZlYzQoIDAuMCApO1xuXHRza2lubmVkICs9IGJvbmVNYXRYICogc2tpblZlcnRleCAqIHNraW5XZWlnaHQueDtcblx0c2tpbm5lZCArPSBib25lTWF0WSAqIHNraW5WZXJ0ZXggKiBza2luV2VpZ2h0Lnk7XG5cdHNraW5uZWQgKz0gYm9uZU1hdFogKiBza2luVmVydGV4ICogc2tpbldlaWdodC56O1xuXHRza2lubmVkICs9IGJvbmVNYXRXICogc2tpblZlcnRleCAqIHNraW5XZWlnaHQudztcblx0dHJhbnNmb3JtZWQgPSAoIGJpbmRNYXRyaXhJbnZlcnNlICogc2tpbm5lZCApLnh5ejtcbiNlbmRpZiIsc2tpbm5vcm1hbF92ZXJ0ZXg6IiNpZmRlZiBVU0VfU0tJTk5JTkdcblx0bWF0NCBza2luTWF0cml4ID0gbWF0NCggMC4wICk7XG5cdHNraW5NYXRyaXggKz0gc2tpbldlaWdodC54ICogYm9uZU1hdFg7XG5cdHNraW5NYXRyaXggKz0gc2tpbldlaWdodC55ICogYm9uZU1hdFk7XG5cdHNraW5NYXRyaXggKz0gc2tpbldlaWdodC56ICogYm9uZU1hdFo7XG5cdHNraW5NYXRyaXggKz0gc2tpbldlaWdodC53ICogYm9uZU1hdFc7XG5cdHNraW5NYXRyaXggPSBiaW5kTWF0cml4SW52ZXJzZSAqIHNraW5NYXRyaXggKiBiaW5kTWF0cml4O1xuXHRvYmplY3ROb3JtYWwgPSB2ZWM0KCBza2luTWF0cml4ICogdmVjNCggb2JqZWN0Tm9ybWFsLCAwLjAgKSApLnh5ejtcblx0I2lmZGVmIFVTRV9UQU5HRU5UXG5cdFx0b2JqZWN0VGFuZ2VudCA9IHZlYzQoIHNraW5NYXRyaXggKiB2ZWM0KCBvYmplY3RUYW5nZW50LCAwLjAgKSApLnh5ejtcblx0I2VuZGlmXG4jZW5kaWYiLHNwZWN1bGFybWFwX2ZyYWdtZW50OiJmbG9hdCBzcGVjdWxhclN0cmVuZ3RoO1xuI2lmZGVmIFVTRV9TUEVDVUxBUk1BUFxuXHR2ZWM0IHRleGVsU3BlY3VsYXIgPSB0ZXh0dXJlMkQoIHNwZWN1bGFyTWFwLCB2VXYgKTtcblx0c3BlY3VsYXJTdHJlbmd0aCA9IHRleGVsU3BlY3VsYXIucjtcbiNlbHNlXG5cdHNwZWN1bGFyU3RyZW5ndGggPSAxLjA7XG4jZW5kaWYiLHNwZWN1bGFybWFwX3BhcnNfZnJhZ21lbnQ6IiNpZmRlZiBVU0VfU1BFQ1VMQVJNQVBcblx0dW5pZm9ybSBzYW1wbGVyMkQgc3BlY3VsYXJNYXA7XG4jZW5kaWYiLHRvbmVtYXBwaW5nX2ZyYWdtZW50OiIjaWYgZGVmaW5lZCggVE9ORV9NQVBQSU5HIClcblx0Z2xfRnJhZ0NvbG9yLnJnYiA9IHRvbmVNYXBwaW5nKCBnbF9GcmFnQ29sb3IucmdiICk7XG4jZW5kaWYiLHRvbmVtYXBwaW5nX3BhcnNfZnJhZ21lbnQ6IiNpZm5kZWYgc2F0dXJhdGVcbiNkZWZpbmUgc2F0dXJhdGUoYSkgY2xhbXAoIGEsIDAuMCwgMS4wIClcbiNlbmRpZlxudW5pZm9ybSBmbG9hdCB0b25lTWFwcGluZ0V4cG9zdXJlO1xudmVjMyBMaW5lYXJUb25lTWFwcGluZyggdmVjMyBjb2xvciApIHtcblx0cmV0dXJuIHRvbmVNYXBwaW5nRXhwb3N1cmUgKiBjb2xvcjtcbn1cbnZlYzMgUmVpbmhhcmRUb25lTWFwcGluZyggdmVjMyBjb2xvciApIHtcblx0Y29sb3IgKj0gdG9uZU1hcHBpbmdFeHBvc3VyZTtcblx0cmV0dXJuIHNhdHVyYXRlKCBjb2xvciAvICggdmVjMyggMS4wICkgKyBjb2xvciApICk7XG59XG52ZWMzIE9wdGltaXplZENpbmVvblRvbmVNYXBwaW5nKCB2ZWMzIGNvbG9yICkge1xuXHRjb2xvciAqPSB0b25lTWFwcGluZ0V4cG9zdXJlO1xuXHRjb2xvciA9IG1heCggdmVjMyggMC4wICksIGNvbG9yIC0gMC4wMDQgKTtcblx0cmV0dXJuIHBvdyggKCBjb2xvciAqICggNi4yICogY29sb3IgKyAwLjUgKSApIC8gKCBjb2xvciAqICggNi4yICogY29sb3IgKyAxLjcgKSArIDAuMDYgKSwgdmVjMyggMi4yICkgKTtcbn1cbnZlYzMgUlJUQW5kT0RURml0KCB2ZWMzIHYgKSB7XG5cdHZlYzMgYSA9IHYgKiAoIHYgKyAwLjAyNDU3ODYgKSAtIDAuMDAwMDkwNTM3O1xuXHR2ZWMzIGIgPSB2ICogKCAwLjk4MzcyOSAqIHYgKyAwLjQzMjk1MTAgKSArIDAuMjM4MDgxO1xuXHRyZXR1cm4gYSAvIGI7XG59XG52ZWMzIEFDRVNGaWxtaWNUb25lTWFwcGluZyggdmVjMyBjb2xvciApIHtcblx0Y29uc3QgbWF0MyBBQ0VTSW5wdXRNYXQgPSBtYXQzKFxuXHRcdHZlYzMoIDAuNTk3MTksIDAuMDc2MDAsIDAuMDI4NDAgKSxcdFx0dmVjMyggMC4zNTQ1OCwgMC45MDgzNCwgMC4xMzM4MyApLFxuXHRcdHZlYzMoIDAuMDQ4MjMsIDAuMDE1NjYsIDAuODM3NzcgKVxuXHQpO1xuXHRjb25zdCBtYXQzIEFDRVNPdXRwdXRNYXQgPSBtYXQzKFxuXHRcdHZlYzMoICAxLjYwNDc1LCAtMC4xMDIwOCwgLTAuMDAzMjcgKSxcdFx0dmVjMyggLTAuNTMxMDgsICAxLjEwODEzLCAtMC4wNzI3NiApLFxuXHRcdHZlYzMoIC0wLjA3MzY3LCAtMC4wMDYwNSwgIDEuMDc2MDIgKVxuXHQpO1xuXHRjb2xvciAqPSB0b25lTWFwcGluZ0V4cG9zdXJlIC8gMC42O1xuXHRjb2xvciA9IEFDRVNJbnB1dE1hdCAqIGNvbG9yO1xuXHRjb2xvciA9IFJSVEFuZE9EVEZpdCggY29sb3IgKTtcblx0Y29sb3IgPSBBQ0VTT3V0cHV0TWF0ICogY29sb3I7XG5cdHJldHVybiBzYXR1cmF0ZSggY29sb3IgKTtcbn1cbnZlYzMgQ3VzdG9tVG9uZU1hcHBpbmcoIHZlYzMgY29sb3IgKSB7IHJldHVybiBjb2xvcjsgfSIsdHJhbnNtaXNzaW9ubWFwX2ZyYWdtZW50OiIjaWZkZWYgVVNFX1RSQU5TTUlTU0lPTk1BUFxuXHR0b3RhbFRyYW5zbWlzc2lvbiAqPSB0ZXh0dXJlMkQoIHRyYW5zbWlzc2lvbk1hcCwgdlV2ICkucjtcbiNlbmRpZiIsdHJhbnNtaXNzaW9ubWFwX3BhcnNfZnJhZ21lbnQ6IiNpZmRlZiBVU0VfVFJBTlNNSVNTSU9OTUFQXG5cdHVuaWZvcm0gc2FtcGxlcjJEIHRyYW5zbWlzc2lvbk1hcDtcbiNlbmRpZiIsdXZfcGFyc19mcmFnbWVudDoiI2lmICggZGVmaW5lZCggVVNFX1VWICkgJiYgISBkZWZpbmVkKCBVVlNfVkVSVEVYX09OTFkgKSApXG5cdHZhcnlpbmcgdmVjMiB2VXY7XG4jZW5kaWYiLHV2X3BhcnNfdmVydGV4OiIjaWZkZWYgVVNFX1VWXG5cdCNpZmRlZiBVVlNfVkVSVEVYX09OTFlcblx0XHR2ZWMyIHZVdjtcblx0I2Vsc2Vcblx0XHR2YXJ5aW5nIHZlYzIgdlV2O1xuXHQjZW5kaWZcblx0dW5pZm9ybSBtYXQzIHV2VHJhbnNmb3JtO1xuI2VuZGlmIix1dl92ZXJ0ZXg6IiNpZmRlZiBVU0VfVVZcblx0dlV2ID0gKCB1dlRyYW5zZm9ybSAqIHZlYzMoIHV2LCAxICkgKS54eTtcbiNlbmRpZiIsdXYyX3BhcnNfZnJhZ21lbnQ6IiNpZiBkZWZpbmVkKCBVU0VfTElHSFRNQVAgKSB8fCBkZWZpbmVkKCBVU0VfQU9NQVAgKVxuXHR2YXJ5aW5nIHZlYzIgdlV2MjtcbiNlbmRpZiIsdXYyX3BhcnNfdmVydGV4OiIjaWYgZGVmaW5lZCggVVNFX0xJR0hUTUFQICkgfHwgZGVmaW5lZCggVVNFX0FPTUFQIClcblx0YXR0cmlidXRlIHZlYzIgdXYyO1xuXHR2YXJ5aW5nIHZlYzIgdlV2Mjtcblx0dW5pZm9ybSBtYXQzIHV2MlRyYW5zZm9ybTtcbiNlbmRpZiIsdXYyX3ZlcnRleDoiI2lmIGRlZmluZWQoIFVTRV9MSUdIVE1BUCApIHx8IGRlZmluZWQoIFVTRV9BT01BUCApXG5cdHZVdjIgPSAoIHV2MlRyYW5zZm9ybSAqIHZlYzMoIHV2MiwgMSApICkueHk7XG4jZW5kaWYiLHdvcmxkcG9zX3ZlcnRleDoiI2lmIGRlZmluZWQoIFVTRV9FTlZNQVAgKSB8fCBkZWZpbmVkKCBESVNUQU5DRSApIHx8IGRlZmluZWQgKCBVU0VfU0hBRE9XTUFQIClcblx0dmVjNCB3b3JsZFBvc2l0aW9uID0gdmVjNCggdHJhbnNmb3JtZWQsIDEuMCApO1xuXHQjaWZkZWYgVVNFX0lOU1RBTkNJTkdcblx0XHR3b3JsZFBvc2l0aW9uID0gaW5zdGFuY2VNYXRyaXggKiB3b3JsZFBvc2l0aW9uO1xuXHQjZW5kaWZcblx0d29ybGRQb3NpdGlvbiA9IG1vZGVsTWF0cml4ICogd29ybGRQb3NpdGlvbjtcbiNlbmRpZiIsYmFja2dyb3VuZF9mcmFnOiJ1bmlmb3JtIHNhbXBsZXIyRCB0MkQ7XG52YXJ5aW5nIHZlYzIgdlV2O1xudm9pZCBtYWluKCkge1xuXHR2ZWM0IHRleENvbG9yID0gdGV4dHVyZTJEKCB0MkQsIHZVdiApO1xuXHRnbF9GcmFnQ29sb3IgPSBtYXBUZXhlbFRvTGluZWFyKCB0ZXhDb2xvciApO1xuXHQjaW5jbHVkZSA8dG9uZW1hcHBpbmdfZnJhZ21lbnQ+XG5cdCNpbmNsdWRlIDxlbmNvZGluZ3NfZnJhZ21lbnQ+XG59IixiYWNrZ3JvdW5kX3ZlcnQ6InZhcnlpbmcgdmVjMiB2VXY7XG51bmlmb3JtIG1hdDMgdXZUcmFuc2Zvcm07XG52b2lkIG1haW4oKSB7XG5cdHZVdiA9ICggdXZUcmFuc2Zvcm0gKiB2ZWMzKCB1diwgMSApICkueHk7XG5cdGdsX1Bvc2l0aW9uID0gdmVjNCggcG9zaXRpb24ueHksIDEuMCwgMS4wICk7XG59IixjdWJlX2ZyYWc6IiNpbmNsdWRlIDxlbnZtYXBfY29tbW9uX3BhcnNfZnJhZ21lbnQ+XG51bmlmb3JtIGZsb2F0IG9wYWNpdHk7XG52YXJ5aW5nIHZlYzMgdldvcmxkRGlyZWN0aW9uO1xuI2luY2x1ZGUgPGN1YmVfdXZfcmVmbGVjdGlvbl9mcmFnbWVudD5cbnZvaWQgbWFpbigpIHtcblx0dmVjMyB2UmVmbGVjdCA9IHZXb3JsZERpcmVjdGlvbjtcblx0I2luY2x1ZGUgPGVudm1hcF9mcmFnbWVudD5cblx0Z2xfRnJhZ0NvbG9yID0gZW52Q29sb3I7XG5cdGdsX0ZyYWdDb2xvci5hICo9IG9wYWNpdHk7XG5cdCNpbmNsdWRlIDx0b25lbWFwcGluZ19mcmFnbWVudD5cblx0I2luY2x1ZGUgPGVuY29kaW5nc19mcmFnbWVudD5cbn0iLGN1YmVfdmVydDoidmFyeWluZyB2ZWMzIHZXb3JsZERpcmVjdGlvbjtcbiNpbmNsdWRlIDxjb21tb24+XG52b2lkIG1haW4oKSB7XG5cdHZXb3JsZERpcmVjdGlvbiA9IHRyYW5zZm9ybURpcmVjdGlvbiggcG9zaXRpb24sIG1vZGVsTWF0cml4ICk7XG5cdCNpbmNsdWRlIDxiZWdpbl92ZXJ0ZXg+XG5cdCNpbmNsdWRlIDxwcm9qZWN0X3ZlcnRleD5cblx0Z2xfUG9zaXRpb24ueiA9IGdsX1Bvc2l0aW9uLnc7XG59IixkZXB0aF9mcmFnOiIjaWYgREVQVEhfUEFDS0lORyA9PSAzMjAwXG5cdHVuaWZvcm0gZmxvYXQgb3BhY2l0eTtcbiNlbmRpZlxuI2luY2x1ZGUgPGNvbW1vbj5cbiNpbmNsdWRlIDxwYWNraW5nPlxuI2luY2x1ZGUgPHV2X3BhcnNfZnJhZ21lbnQ+XG4jaW5jbHVkZSA8bWFwX3BhcnNfZnJhZ21lbnQ+XG4jaW5jbHVkZSA8YWxwaGFtYXBfcGFyc19mcmFnbWVudD5cbiNpbmNsdWRlIDxsb2dkZXB0aGJ1Zl9wYXJzX2ZyYWdtZW50PlxuI2luY2x1ZGUgPGNsaXBwaW5nX3BsYW5lc19wYXJzX2ZyYWdtZW50PlxudmFyeWluZyB2ZWMyIHZIaWdoUHJlY2lzaW9uWlc7XG52b2lkIG1haW4oKSB7XG5cdCNpbmNsdWRlIDxjbGlwcGluZ19wbGFuZXNfZnJhZ21lbnQ+XG5cdHZlYzQgZGlmZnVzZUNvbG9yID0gdmVjNCggMS4wICk7XG5cdCNpZiBERVBUSF9QQUNLSU5HID09IDMyMDBcblx0XHRkaWZmdXNlQ29sb3IuYSA9IG9wYWNpdHk7XG5cdCNlbmRpZlxuXHQjaW5jbHVkZSA8bWFwX2ZyYWdtZW50PlxuXHQjaW5jbHVkZSA8YWxwaGFtYXBfZnJhZ21lbnQ+XG5cdCNpbmNsdWRlIDxhbHBoYXRlc3RfZnJhZ21lbnQ+XG5cdCNpbmNsdWRlIDxsb2dkZXB0aGJ1Zl9mcmFnbWVudD5cblx0ZmxvYXQgZnJhZ0Nvb3JkWiA9IDAuNSAqIHZIaWdoUHJlY2lzaW9uWldbMF0gLyB2SGlnaFByZWNpc2lvblpXWzFdICsgMC41O1xuXHQjaWYgREVQVEhfUEFDS0lORyA9PSAzMjAwXG5cdFx0Z2xfRnJhZ0NvbG9yID0gdmVjNCggdmVjMyggMS4wIC0gZnJhZ0Nvb3JkWiApLCBvcGFjaXR5ICk7XG5cdCNlbGlmIERFUFRIX1BBQ0tJTkcgPT0gMzIwMVxuXHRcdGdsX0ZyYWdDb2xvciA9IHBhY2tEZXB0aFRvUkdCQSggZnJhZ0Nvb3JkWiApO1xuXHQjZW5kaWZcbn0iLGRlcHRoX3ZlcnQ6IiNpbmNsdWRlIDxjb21tb24+XG4jaW5jbHVkZSA8dXZfcGFyc192ZXJ0ZXg+XG4jaW5jbHVkZSA8ZGlzcGxhY2VtZW50bWFwX3BhcnNfdmVydGV4PlxuI2luY2x1ZGUgPG1vcnBodGFyZ2V0X3BhcnNfdmVydGV4PlxuI2luY2x1ZGUgPHNraW5uaW5nX3BhcnNfdmVydGV4PlxuI2luY2x1ZGUgPGxvZ2RlcHRoYnVmX3BhcnNfdmVydGV4PlxuI2luY2x1ZGUgPGNsaXBwaW5nX3BsYW5lc19wYXJzX3ZlcnRleD5cbnZhcnlpbmcgdmVjMiB2SGlnaFByZWNpc2lvblpXO1xudm9pZCBtYWluKCkge1xuXHQjaW5jbHVkZSA8dXZfdmVydGV4PlxuXHQjaW5jbHVkZSA8c2tpbmJhc2VfdmVydGV4PlxuXHQjaWZkZWYgVVNFX0RJU1BMQUNFTUVOVE1BUFxuXHRcdCNpbmNsdWRlIDxiZWdpbm5vcm1hbF92ZXJ0ZXg+XG5cdFx0I2luY2x1ZGUgPG1vcnBobm9ybWFsX3ZlcnRleD5cblx0XHQjaW5jbHVkZSA8c2tpbm5vcm1hbF92ZXJ0ZXg+XG5cdCNlbmRpZlxuXHQjaW5jbHVkZSA8YmVnaW5fdmVydGV4PlxuXHQjaW5jbHVkZSA8bW9ycGh0YXJnZXRfdmVydGV4PlxuXHQjaW5jbHVkZSA8c2tpbm5pbmdfdmVydGV4PlxuXHQjaW5jbHVkZSA8ZGlzcGxhY2VtZW50bWFwX3ZlcnRleD5cblx0I2luY2x1ZGUgPHByb2plY3RfdmVydGV4PlxuXHQjaW5jbHVkZSA8bG9nZGVwdGhidWZfdmVydGV4PlxuXHQjaW5jbHVkZSA8Y2xpcHBpbmdfcGxhbmVzX3ZlcnRleD5cblx0dkhpZ2hQcmVjaXNpb25aVyA9IGdsX1Bvc2l0aW9uLnp3O1xufSIsZGlzdGFuY2VSR0JBX2ZyYWc6IiNkZWZpbmUgRElTVEFOQ0VcbnVuaWZvcm0gdmVjMyByZWZlcmVuY2VQb3NpdGlvbjtcbnVuaWZvcm0gZmxvYXQgbmVhckRpc3RhbmNlO1xudW5pZm9ybSBmbG9hdCBmYXJEaXN0YW5jZTtcbnZhcnlpbmcgdmVjMyB2V29ybGRQb3NpdGlvbjtcbiNpbmNsdWRlIDxjb21tb24+XG4jaW5jbHVkZSA8cGFja2luZz5cbiNpbmNsdWRlIDx1dl9wYXJzX2ZyYWdtZW50PlxuI2luY2x1ZGUgPG1hcF9wYXJzX2ZyYWdtZW50PlxuI2luY2x1ZGUgPGFscGhhbWFwX3BhcnNfZnJhZ21lbnQ+XG4jaW5jbHVkZSA8Y2xpcHBpbmdfcGxhbmVzX3BhcnNfZnJhZ21lbnQ+XG52b2lkIG1haW4gKCkge1xuXHQjaW5jbHVkZSA8Y2xpcHBpbmdfcGxhbmVzX2ZyYWdtZW50PlxuXHR2ZWM0IGRpZmZ1c2VDb2xvciA9IHZlYzQoIDEuMCApO1xuXHQjaW5jbHVkZSA8bWFwX2ZyYWdtZW50PlxuXHQjaW5jbHVkZSA8YWxwaGFtYXBfZnJhZ21lbnQ+XG5cdCNpbmNsdWRlIDxhbHBoYXRlc3RfZnJhZ21lbnQ+XG5cdGZsb2F0IGRpc3QgPSBsZW5ndGgoIHZXb3JsZFBvc2l0aW9uIC0gcmVmZXJlbmNlUG9zaXRpb24gKTtcblx0ZGlzdCA9ICggZGlzdCAtIG5lYXJEaXN0YW5jZSApIC8gKCBmYXJEaXN0YW5jZSAtIG5lYXJEaXN0YW5jZSApO1xuXHRkaXN0ID0gc2F0dXJhdGUoIGRpc3QgKTtcblx0Z2xfRnJhZ0NvbG9yID0gcGFja0RlcHRoVG9SR0JBKCBkaXN0ICk7XG59IixkaXN0YW5jZVJHQkFfdmVydDoiI2RlZmluZSBESVNUQU5DRVxudmFyeWluZyB2ZWMzIHZXb3JsZFBvc2l0aW9uO1xuI2luY2x1ZGUgPGNvbW1vbj5cbiNpbmNsdWRlIDx1dl9wYXJzX3ZlcnRleD5cbiNpbmNsdWRlIDxkaXNwbGFjZW1lbnRtYXBfcGFyc192ZXJ0ZXg+XG4jaW5jbHVkZSA8bW9ycGh0YXJnZXRfcGFyc192ZXJ0ZXg+XG4jaW5jbHVkZSA8c2tpbm5pbmdfcGFyc192ZXJ0ZXg+XG4jaW5jbHVkZSA8Y2xpcHBpbmdfcGxhbmVzX3BhcnNfdmVydGV4Plxudm9pZCBtYWluKCkge1xuXHQjaW5jbHVkZSA8dXZfdmVydGV4PlxuXHQjaW5jbHVkZSA8c2tpbmJhc2VfdmVydGV4PlxuXHQjaWZkZWYgVVNFX0RJU1BMQUNFTUVOVE1BUFxuXHRcdCNpbmNsdWRlIDxiZWdpbm5vcm1hbF92ZXJ0ZXg+XG5cdFx0I2luY2x1ZGUgPG1vcnBobm9ybWFsX3ZlcnRleD5cblx0XHQjaW5jbHVkZSA8c2tpbm5vcm1hbF92ZXJ0ZXg+XG5cdCNlbmRpZlxuXHQjaW5jbHVkZSA8YmVnaW5fdmVydGV4PlxuXHQjaW5jbHVkZSA8bW9ycGh0YXJnZXRfdmVydGV4PlxuXHQjaW5jbHVkZSA8c2tpbm5pbmdfdmVydGV4PlxuXHQjaW5jbHVkZSA8ZGlzcGxhY2VtZW50bWFwX3ZlcnRleD5cblx0I2luY2x1ZGUgPHByb2plY3RfdmVydGV4PlxuXHQjaW5jbHVkZSA8d29ybGRwb3NfdmVydGV4PlxuXHQjaW5jbHVkZSA8Y2xpcHBpbmdfcGxhbmVzX3ZlcnRleD5cblx0dldvcmxkUG9zaXRpb24gPSB3b3JsZFBvc2l0aW9uLnh5ejtcbn0iLGVxdWlyZWN0X2ZyYWc6InVuaWZvcm0gc2FtcGxlcjJEIHRFcXVpcmVjdDtcbnZhcnlpbmcgdmVjMyB2V29ybGREaXJlY3Rpb247XG4jaW5jbHVkZSA8Y29tbW9uPlxudm9pZCBtYWluKCkge1xuXHR2ZWMzIGRpcmVjdGlvbiA9IG5vcm1hbGl6ZSggdldvcmxkRGlyZWN0aW9uICk7XG5cdHZlYzIgc2FtcGxlVVYgPSBlcXVpcmVjdFV2KCBkaXJlY3Rpb24gKTtcblx0dmVjNCB0ZXhDb2xvciA9IHRleHR1cmUyRCggdEVxdWlyZWN0LCBzYW1wbGVVViApO1xuXHRnbF9GcmFnQ29sb3IgPSBtYXBUZXhlbFRvTGluZWFyKCB0ZXhDb2xvciApO1xuXHQjaW5jbHVkZSA8dG9uZW1hcHBpbmdfZnJhZ21lbnQ+XG5cdCNpbmNsdWRlIDxlbmNvZGluZ3NfZnJhZ21lbnQ+XG59IixlcXVpcmVjdF92ZXJ0OiJ2YXJ5aW5nIHZlYzMgdldvcmxkRGlyZWN0aW9uO1xuI2luY2x1ZGUgPGNvbW1vbj5cbnZvaWQgbWFpbigpIHtcblx0dldvcmxkRGlyZWN0aW9uID0gdHJhbnNmb3JtRGlyZWN0aW9uKCBwb3NpdGlvbiwgbW9kZWxNYXRyaXggKTtcblx0I2luY2x1ZGUgPGJlZ2luX3ZlcnRleD5cblx0I2luY2x1ZGUgPHByb2plY3RfdmVydGV4PlxufSIsbGluZWRhc2hlZF9mcmFnOiJ1bmlmb3JtIHZlYzMgZGlmZnVzZTtcbnVuaWZvcm0gZmxvYXQgb3BhY2l0eTtcbnVuaWZvcm0gZmxvYXQgZGFzaFNpemU7XG51bmlmb3JtIGZsb2F0IHRvdGFsU2l6ZTtcbnZhcnlpbmcgZmxvYXQgdkxpbmVEaXN0YW5jZTtcbiNpbmNsdWRlIDxjb21tb24+XG4jaW5jbHVkZSA8Y29sb3JfcGFyc19mcmFnbWVudD5cbiNpbmNsdWRlIDxmb2dfcGFyc19mcmFnbWVudD5cbiNpbmNsdWRlIDxsb2dkZXB0aGJ1Zl9wYXJzX2ZyYWdtZW50PlxuI2luY2x1ZGUgPGNsaXBwaW5nX3BsYW5lc19wYXJzX2ZyYWdtZW50Plxudm9pZCBtYWluKCkge1xuXHQjaW5jbHVkZSA8Y2xpcHBpbmdfcGxhbmVzX2ZyYWdtZW50PlxuXHRpZiAoIG1vZCggdkxpbmVEaXN0YW5jZSwgdG90YWxTaXplICkgPiBkYXNoU2l6ZSApIHtcblx0XHRkaXNjYXJkO1xuXHR9XG5cdHZlYzMgb3V0Z29pbmdMaWdodCA9IHZlYzMoIDAuMCApO1xuXHR2ZWM0IGRpZmZ1c2VDb2xvciA9IHZlYzQoIGRpZmZ1c2UsIG9wYWNpdHkgKTtcblx0I2luY2x1ZGUgPGxvZ2RlcHRoYnVmX2ZyYWdtZW50PlxuXHQjaW5jbHVkZSA8Y29sb3JfZnJhZ21lbnQ+XG5cdG91dGdvaW5nTGlnaHQgPSBkaWZmdXNlQ29sb3IucmdiO1xuXHRnbF9GcmFnQ29sb3IgPSB2ZWM0KCBvdXRnb2luZ0xpZ2h0LCBkaWZmdXNlQ29sb3IuYSApO1xuXHQjaW5jbHVkZSA8dG9uZW1hcHBpbmdfZnJhZ21lbnQ+XG5cdCNpbmNsdWRlIDxlbmNvZGluZ3NfZnJhZ21lbnQ+XG5cdCNpbmNsdWRlIDxmb2dfZnJhZ21lbnQ+XG5cdCNpbmNsdWRlIDxwcmVtdWx0aXBsaWVkX2FscGhhX2ZyYWdtZW50PlxufSIsbGluZWRhc2hlZF92ZXJ0OiJ1bmlmb3JtIGZsb2F0IHNjYWxlO1xuYXR0cmlidXRlIGZsb2F0IGxpbmVEaXN0YW5jZTtcbnZhcnlpbmcgZmxvYXQgdkxpbmVEaXN0YW5jZTtcbiNpbmNsdWRlIDxjb21tb24+XG4jaW5jbHVkZSA8Y29sb3JfcGFyc192ZXJ0ZXg+XG4jaW5jbHVkZSA8Zm9nX3BhcnNfdmVydGV4PlxuI2luY2x1ZGUgPG1vcnBodGFyZ2V0X3BhcnNfdmVydGV4PlxuI2luY2x1ZGUgPGxvZ2RlcHRoYnVmX3BhcnNfdmVydGV4PlxuI2luY2x1ZGUgPGNsaXBwaW5nX3BsYW5lc19wYXJzX3ZlcnRleD5cbnZvaWQgbWFpbigpIHtcblx0dkxpbmVEaXN0YW5jZSA9IHNjYWxlICogbGluZURpc3RhbmNlO1xuXHQjaW5jbHVkZSA8Y29sb3JfdmVydGV4PlxuXHQjaW5jbHVkZSA8YmVnaW5fdmVydGV4PlxuXHQjaW5jbHVkZSA8bW9ycGh0YXJnZXRfdmVydGV4PlxuXHQjaW5jbHVkZSA8cHJvamVjdF92ZXJ0ZXg+XG5cdCNpbmNsdWRlIDxsb2dkZXB0aGJ1Zl92ZXJ0ZXg+XG5cdCNpbmNsdWRlIDxjbGlwcGluZ19wbGFuZXNfdmVydGV4PlxuXHQjaW5jbHVkZSA8Zm9nX3ZlcnRleD5cbn0iLG1lc2hiYXNpY19mcmFnOiJ1bmlmb3JtIHZlYzMgZGlmZnVzZTtcbnVuaWZvcm0gZmxvYXQgb3BhY2l0eTtcbiNpZm5kZWYgRkxBVF9TSEFERURcblx0dmFyeWluZyB2ZWMzIHZOb3JtYWw7XG4jZW5kaWZcbiNpbmNsdWRlIDxjb21tb24+XG4jaW5jbHVkZSA8ZGl0aGVyaW5nX3BhcnNfZnJhZ21lbnQ+XG4jaW5jbHVkZSA8Y29sb3JfcGFyc19mcmFnbWVudD5cbiNpbmNsdWRlIDx1dl9wYXJzX2ZyYWdtZW50PlxuI2luY2x1ZGUgPHV2Ml9wYXJzX2ZyYWdtZW50PlxuI2luY2x1ZGUgPG1hcF9wYXJzX2ZyYWdtZW50PlxuI2luY2x1ZGUgPGFscGhhbWFwX3BhcnNfZnJhZ21lbnQ+XG4jaW5jbHVkZSA8YW9tYXBfcGFyc19mcmFnbWVudD5cbiNpbmNsdWRlIDxsaWdodG1hcF9wYXJzX2ZyYWdtZW50PlxuI2luY2x1ZGUgPGVudm1hcF9jb21tb25fcGFyc19mcmFnbWVudD5cbiNpbmNsdWRlIDxlbnZtYXBfcGFyc19mcmFnbWVudD5cbiNpbmNsdWRlIDxjdWJlX3V2X3JlZmxlY3Rpb25fZnJhZ21lbnQ+XG4jaW5jbHVkZSA8Zm9nX3BhcnNfZnJhZ21lbnQ+XG4jaW5jbHVkZSA8c3BlY3VsYXJtYXBfcGFyc19mcmFnbWVudD5cbiNpbmNsdWRlIDxsb2dkZXB0aGJ1Zl9wYXJzX2ZyYWdtZW50PlxuI2luY2x1ZGUgPGNsaXBwaW5nX3BsYW5lc19wYXJzX2ZyYWdtZW50Plxudm9pZCBtYWluKCkge1xuXHQjaW5jbHVkZSA8Y2xpcHBpbmdfcGxhbmVzX2ZyYWdtZW50PlxuXHR2ZWM0IGRpZmZ1c2VDb2xvciA9IHZlYzQoIGRpZmZ1c2UsIG9wYWNpdHkgKTtcblx0I2luY2x1ZGUgPGxvZ2RlcHRoYnVmX2ZyYWdtZW50PlxuXHQjaW5jbHVkZSA8bWFwX2ZyYWdtZW50PlxuXHQjaW5jbHVkZSA8Y29sb3JfZnJhZ21lbnQ+XG5cdCNpbmNsdWRlIDxhbHBoYW1hcF9mcmFnbWVudD5cblx0I2luY2x1ZGUgPGFscGhhdGVzdF9mcmFnbWVudD5cblx0I2luY2x1ZGUgPHNwZWN1bGFybWFwX2ZyYWdtZW50PlxuXHRSZWZsZWN0ZWRMaWdodCByZWZsZWN0ZWRMaWdodCA9IFJlZmxlY3RlZExpZ2h0KCB2ZWMzKCAwLjAgKSwgdmVjMyggMC4wICksIHZlYzMoIDAuMCApLCB2ZWMzKCAwLjAgKSApO1xuXHQjaWZkZWYgVVNFX0xJR0hUTUFQXG5cdFxuXHRcdHZlYzQgbGlnaHRNYXBUZXhlbD0gdGV4dHVyZTJEKCBsaWdodE1hcCwgdlV2MiApO1xuXHRcdHJlZmxlY3RlZExpZ2h0LmluZGlyZWN0RGlmZnVzZSArPSBsaWdodE1hcFRleGVsVG9MaW5lYXIoIGxpZ2h0TWFwVGV4ZWwgKS5yZ2IgKiBsaWdodE1hcEludGVuc2l0eTtcblx0I2Vsc2Vcblx0XHRyZWZsZWN0ZWRMaWdodC5pbmRpcmVjdERpZmZ1c2UgKz0gdmVjMyggMS4wICk7XG5cdCNlbmRpZlxuXHQjaW5jbHVkZSA8YW9tYXBfZnJhZ21lbnQ+XG5cdHJlZmxlY3RlZExpZ2h0LmluZGlyZWN0RGlmZnVzZSAqPSBkaWZmdXNlQ29sb3IucmdiO1xuXHR2ZWMzIG91dGdvaW5nTGlnaHQgPSByZWZsZWN0ZWRMaWdodC5pbmRpcmVjdERpZmZ1c2U7XG5cdCNpbmNsdWRlIDxlbnZtYXBfZnJhZ21lbnQ+XG5cdGdsX0ZyYWdDb2xvciA9IHZlYzQoIG91dGdvaW5nTGlnaHQsIGRpZmZ1c2VDb2xvci5hICk7XG5cdCNpbmNsdWRlIDx0b25lbWFwcGluZ19mcmFnbWVudD5cblx0I2luY2x1ZGUgPGVuY29kaW5nc19mcmFnbWVudD5cblx0I2luY2x1ZGUgPGZvZ19mcmFnbWVudD5cblx0I2luY2x1ZGUgPHByZW11bHRpcGxpZWRfYWxwaGFfZnJhZ21lbnQ+XG5cdCNpbmNsdWRlIDxkaXRoZXJpbmdfZnJhZ21lbnQ+XG59IixtZXNoYmFzaWNfdmVydDoiI2luY2x1ZGUgPGNvbW1vbj5cbiNpbmNsdWRlIDx1dl9wYXJzX3ZlcnRleD5cbiNpbmNsdWRlIDx1djJfcGFyc192ZXJ0ZXg+XG4jaW5jbHVkZSA8ZW52bWFwX3BhcnNfdmVydGV4PlxuI2luY2x1ZGUgPGNvbG9yX3BhcnNfdmVydGV4PlxuI2luY2x1ZGUgPGZvZ19wYXJzX3ZlcnRleD5cbiNpbmNsdWRlIDxtb3JwaHRhcmdldF9wYXJzX3ZlcnRleD5cbiNpbmNsdWRlIDxza2lubmluZ19wYXJzX3ZlcnRleD5cbiNpbmNsdWRlIDxsb2dkZXB0aGJ1Zl9wYXJzX3ZlcnRleD5cbiNpbmNsdWRlIDxjbGlwcGluZ19wbGFuZXNfcGFyc192ZXJ0ZXg+XG52b2lkIG1haW4oKSB7XG5cdCNpbmNsdWRlIDx1dl92ZXJ0ZXg+XG5cdCNpbmNsdWRlIDx1djJfdmVydGV4PlxuXHQjaW5jbHVkZSA8Y29sb3JfdmVydGV4PlxuXHQjaW5jbHVkZSA8c2tpbmJhc2VfdmVydGV4PlxuXHQjaWZkZWYgVVNFX0VOVk1BUFxuXHQjaW5jbHVkZSA8YmVnaW5ub3JtYWxfdmVydGV4PlxuXHQjaW5jbHVkZSA8bW9ycGhub3JtYWxfdmVydGV4PlxuXHQjaW5jbHVkZSA8c2tpbm5vcm1hbF92ZXJ0ZXg+XG5cdCNpbmNsdWRlIDxkZWZhdWx0bm9ybWFsX3ZlcnRleD5cblx0I2VuZGlmXG5cdCNpbmNsdWRlIDxiZWdpbl92ZXJ0ZXg+XG5cdCNpbmNsdWRlIDxtb3JwaHRhcmdldF92ZXJ0ZXg+XG5cdCNpbmNsdWRlIDxza2lubmluZ192ZXJ0ZXg+XG5cdCNpbmNsdWRlIDxwcm9qZWN0X3ZlcnRleD5cblx0I2luY2x1ZGUgPGxvZ2RlcHRoYnVmX3ZlcnRleD5cblx0I2luY2x1ZGUgPHdvcmxkcG9zX3ZlcnRleD5cblx0I2luY2x1ZGUgPGNsaXBwaW5nX3BsYW5lc192ZXJ0ZXg+XG5cdCNpbmNsdWRlIDxlbnZtYXBfdmVydGV4PlxuXHQjaW5jbHVkZSA8Zm9nX3ZlcnRleD5cbn0iLG1lc2hsYW1iZXJ0X2ZyYWc6InVuaWZvcm0gdmVjMyBkaWZmdXNlO1xudW5pZm9ybSB2ZWMzIGVtaXNzaXZlO1xudW5pZm9ybSBmbG9hdCBvcGFjaXR5O1xudmFyeWluZyB2ZWMzIHZMaWdodEZyb250O1xudmFyeWluZyB2ZWMzIHZJbmRpcmVjdEZyb250O1xuI2lmZGVmIERPVUJMRV9TSURFRFxuXHR2YXJ5aW5nIHZlYzMgdkxpZ2h0QmFjaztcblx0dmFyeWluZyB2ZWMzIHZJbmRpcmVjdEJhY2s7XG4jZW5kaWZcbiNpbmNsdWRlIDxjb21tb24+XG4jaW5jbHVkZSA8cGFja2luZz5cbiNpbmNsdWRlIDxkaXRoZXJpbmdfcGFyc19mcmFnbWVudD5cbiNpbmNsdWRlIDxjb2xvcl9wYXJzX2ZyYWdtZW50PlxuI2luY2x1ZGUgPHV2X3BhcnNfZnJhZ21lbnQ+XG4jaW5jbHVkZSA8dXYyX3BhcnNfZnJhZ21lbnQ+XG4jaW5jbHVkZSA8bWFwX3BhcnNfZnJhZ21lbnQ+XG4jaW5jbHVkZSA8YWxwaGFtYXBfcGFyc19mcmFnbWVudD5cbiNpbmNsdWRlIDxhb21hcF9wYXJzX2ZyYWdtZW50PlxuI2luY2x1ZGUgPGxpZ2h0bWFwX3BhcnNfZnJhZ21lbnQ+XG4jaW5jbHVkZSA8ZW1pc3NpdmVtYXBfcGFyc19mcmFnbWVudD5cbiNpbmNsdWRlIDxlbnZtYXBfY29tbW9uX3BhcnNfZnJhZ21lbnQ+XG4jaW5jbHVkZSA8ZW52bWFwX3BhcnNfZnJhZ21lbnQ+XG4jaW5jbHVkZSA8Y3ViZV91dl9yZWZsZWN0aW9uX2ZyYWdtZW50PlxuI2luY2x1ZGUgPGJzZGZzPlxuI2luY2x1ZGUgPGxpZ2h0c19wYXJzX2JlZ2luPlxuI2luY2x1ZGUgPGZvZ19wYXJzX2ZyYWdtZW50PlxuI2luY2x1ZGUgPHNoYWRvd21hcF9wYXJzX2ZyYWdtZW50PlxuI2luY2x1ZGUgPHNoYWRvd21hc2tfcGFyc19mcmFnbWVudD5cbiNpbmNsdWRlIDxzcGVjdWxhcm1hcF9wYXJzX2ZyYWdtZW50PlxuI2luY2x1ZGUgPGxvZ2RlcHRoYnVmX3BhcnNfZnJhZ21lbnQ+XG4jaW5jbHVkZSA8Y2xpcHBpbmdfcGxhbmVzX3BhcnNfZnJhZ21lbnQ+XG52b2lkIG1haW4oKSB7XG5cdCNpbmNsdWRlIDxjbGlwcGluZ19wbGFuZXNfZnJhZ21lbnQ+XG5cdHZlYzQgZGlmZnVzZUNvbG9yID0gdmVjNCggZGlmZnVzZSwgb3BhY2l0eSApO1xuXHRSZWZsZWN0ZWRMaWdodCByZWZsZWN0ZWRMaWdodCA9IFJlZmxlY3RlZExpZ2h0KCB2ZWMzKCAwLjAgKSwgdmVjMyggMC4wICksIHZlYzMoIDAuMCApLCB2ZWMzKCAwLjAgKSApO1xuXHR2ZWMzIHRvdGFsRW1pc3NpdmVSYWRpYW5jZSA9IGVtaXNzaXZlO1xuXHQjaW5jbHVkZSA8bG9nZGVwdGhidWZfZnJhZ21lbnQ+XG5cdCNpbmNsdWRlIDxtYXBfZnJhZ21lbnQ+XG5cdCNpbmNsdWRlIDxjb2xvcl9mcmFnbWVudD5cblx0I2luY2x1ZGUgPGFscGhhbWFwX2ZyYWdtZW50PlxuXHQjaW5jbHVkZSA8YWxwaGF0ZXN0X2ZyYWdtZW50PlxuXHQjaW5jbHVkZSA8c3BlY3VsYXJtYXBfZnJhZ21lbnQ+XG5cdCNpbmNsdWRlIDxlbWlzc2l2ZW1hcF9mcmFnbWVudD5cblx0I2lmZGVmIERPVUJMRV9TSURFRFxuXHRcdHJlZmxlY3RlZExpZ2h0LmluZGlyZWN0RGlmZnVzZSArPSAoIGdsX0Zyb250RmFjaW5nICkgPyB2SW5kaXJlY3RGcm9udCA6IHZJbmRpcmVjdEJhY2s7XG5cdCNlbHNlXG5cdFx0cmVmbGVjdGVkTGlnaHQuaW5kaXJlY3REaWZmdXNlICs9IHZJbmRpcmVjdEZyb250O1xuXHQjZW5kaWZcblx0I2luY2x1ZGUgPGxpZ2h0bWFwX2ZyYWdtZW50PlxuXHRyZWZsZWN0ZWRMaWdodC5pbmRpcmVjdERpZmZ1c2UgKj0gQlJERl9EaWZmdXNlX0xhbWJlcnQoIGRpZmZ1c2VDb2xvci5yZ2IgKTtcblx0I2lmZGVmIERPVUJMRV9TSURFRFxuXHRcdHJlZmxlY3RlZExpZ2h0LmRpcmVjdERpZmZ1c2UgPSAoIGdsX0Zyb250RmFjaW5nICkgPyB2TGlnaHRGcm9udCA6IHZMaWdodEJhY2s7XG5cdCNlbHNlXG5cdFx0cmVmbGVjdGVkTGlnaHQuZGlyZWN0RGlmZnVzZSA9IHZMaWdodEZyb250O1xuXHQjZW5kaWZcblx0cmVmbGVjdGVkTGlnaHQuZGlyZWN0RGlmZnVzZSAqPSBCUkRGX0RpZmZ1c2VfTGFtYmVydCggZGlmZnVzZUNvbG9yLnJnYiApICogZ2V0U2hhZG93TWFzaygpO1xuXHQjaW5jbHVkZSA8YW9tYXBfZnJhZ21lbnQ+XG5cdHZlYzMgb3V0Z29pbmdMaWdodCA9IHJlZmxlY3RlZExpZ2h0LmRpcmVjdERpZmZ1c2UgKyByZWZsZWN0ZWRMaWdodC5pbmRpcmVjdERpZmZ1c2UgKyB0b3RhbEVtaXNzaXZlUmFkaWFuY2U7XG5cdCNpbmNsdWRlIDxlbnZtYXBfZnJhZ21lbnQ+XG5cdGdsX0ZyYWdDb2xvciA9IHZlYzQoIG91dGdvaW5nTGlnaHQsIGRpZmZ1c2VDb2xvci5hICk7XG5cdCNpbmNsdWRlIDx0b25lbWFwcGluZ19mcmFnbWVudD5cblx0I2luY2x1ZGUgPGVuY29kaW5nc19mcmFnbWVudD5cblx0I2luY2x1ZGUgPGZvZ19mcmFnbWVudD5cblx0I2luY2x1ZGUgPHByZW11bHRpcGxpZWRfYWxwaGFfZnJhZ21lbnQ+XG5cdCNpbmNsdWRlIDxkaXRoZXJpbmdfZnJhZ21lbnQ+XG59IixtZXNobGFtYmVydF92ZXJ0OiIjZGVmaW5lIExBTUJFUlRcbnZhcnlpbmcgdmVjMyB2TGlnaHRGcm9udDtcbnZhcnlpbmcgdmVjMyB2SW5kaXJlY3RGcm9udDtcbiNpZmRlZiBET1VCTEVfU0lERURcblx0dmFyeWluZyB2ZWMzIHZMaWdodEJhY2s7XG5cdHZhcnlpbmcgdmVjMyB2SW5kaXJlY3RCYWNrO1xuI2VuZGlmXG4jaW5jbHVkZSA8Y29tbW9uPlxuI2luY2x1ZGUgPHV2X3BhcnNfdmVydGV4PlxuI2luY2x1ZGUgPHV2Ml9wYXJzX3ZlcnRleD5cbiNpbmNsdWRlIDxlbnZtYXBfcGFyc192ZXJ0ZXg+XG4jaW5jbHVkZSA8YnNkZnM+XG4jaW5jbHVkZSA8bGlnaHRzX3BhcnNfYmVnaW4+XG4jaW5jbHVkZSA8Y29sb3JfcGFyc192ZXJ0ZXg+XG4jaW5jbHVkZSA8Zm9nX3BhcnNfdmVydGV4PlxuI2luY2x1ZGUgPG1vcnBodGFyZ2V0X3BhcnNfdmVydGV4PlxuI2luY2x1ZGUgPHNraW5uaW5nX3BhcnNfdmVydGV4PlxuI2luY2x1ZGUgPHNoYWRvd21hcF9wYXJzX3ZlcnRleD5cbiNpbmNsdWRlIDxsb2dkZXB0aGJ1Zl9wYXJzX3ZlcnRleD5cbiNpbmNsdWRlIDxjbGlwcGluZ19wbGFuZXNfcGFyc192ZXJ0ZXg+XG52b2lkIG1haW4oKSB7XG5cdCNpbmNsdWRlIDx1dl92ZXJ0ZXg+XG5cdCNpbmNsdWRlIDx1djJfdmVydGV4PlxuXHQjaW5jbHVkZSA8Y29sb3JfdmVydGV4PlxuXHQjaW5jbHVkZSA8YmVnaW5ub3JtYWxfdmVydGV4PlxuXHQjaW5jbHVkZSA8bW9ycGhub3JtYWxfdmVydGV4PlxuXHQjaW5jbHVkZSA8c2tpbmJhc2VfdmVydGV4PlxuXHQjaW5jbHVkZSA8c2tpbm5vcm1hbF92ZXJ0ZXg+XG5cdCNpbmNsdWRlIDxkZWZhdWx0bm9ybWFsX3ZlcnRleD5cblx0I2luY2x1ZGUgPGJlZ2luX3ZlcnRleD5cblx0I2luY2x1ZGUgPG1vcnBodGFyZ2V0X3ZlcnRleD5cblx0I2luY2x1ZGUgPHNraW5uaW5nX3ZlcnRleD5cblx0I2luY2x1ZGUgPHByb2plY3RfdmVydGV4PlxuXHQjaW5jbHVkZSA8bG9nZGVwdGhidWZfdmVydGV4PlxuXHQjaW5jbHVkZSA8Y2xpcHBpbmdfcGxhbmVzX3ZlcnRleD5cblx0I2luY2x1ZGUgPHdvcmxkcG9zX3ZlcnRleD5cblx0I2luY2x1ZGUgPGVudm1hcF92ZXJ0ZXg+XG5cdCNpbmNsdWRlIDxsaWdodHNfbGFtYmVydF92ZXJ0ZXg+XG5cdCNpbmNsdWRlIDxzaGFkb3dtYXBfdmVydGV4PlxuXHQjaW5jbHVkZSA8Zm9nX3ZlcnRleD5cbn0iLG1lc2htYXRjYXBfZnJhZzoiI2RlZmluZSBNQVRDQVBcbnVuaWZvcm0gdmVjMyBkaWZmdXNlO1xudW5pZm9ybSBmbG9hdCBvcGFjaXR5O1xudW5pZm9ybSBzYW1wbGVyMkQgbWF0Y2FwO1xudmFyeWluZyB2ZWMzIHZWaWV3UG9zaXRpb247XG4jaWZuZGVmIEZMQVRfU0hBREVEXG5cdHZhcnlpbmcgdmVjMyB2Tm9ybWFsO1xuI2VuZGlmXG4jaW5jbHVkZSA8Y29tbW9uPlxuI2luY2x1ZGUgPGRpdGhlcmluZ19wYXJzX2ZyYWdtZW50PlxuI2luY2x1ZGUgPGNvbG9yX3BhcnNfZnJhZ21lbnQ+XG4jaW5jbHVkZSA8dXZfcGFyc19mcmFnbWVudD5cbiNpbmNsdWRlIDxtYXBfcGFyc19mcmFnbWVudD5cbiNpbmNsdWRlIDxhbHBoYW1hcF9wYXJzX2ZyYWdtZW50PlxuI2luY2x1ZGUgPGZvZ19wYXJzX2ZyYWdtZW50PlxuI2luY2x1ZGUgPGJ1bXBtYXBfcGFyc19mcmFnbWVudD5cbiNpbmNsdWRlIDxub3JtYWxtYXBfcGFyc19mcmFnbWVudD5cbiNpbmNsdWRlIDxsb2dkZXB0aGJ1Zl9wYXJzX2ZyYWdtZW50PlxuI2luY2x1ZGUgPGNsaXBwaW5nX3BsYW5lc19wYXJzX2ZyYWdtZW50Plxudm9pZCBtYWluKCkge1xuXHQjaW5jbHVkZSA8Y2xpcHBpbmdfcGxhbmVzX2ZyYWdtZW50PlxuXHR2ZWM0IGRpZmZ1c2VDb2xvciA9IHZlYzQoIGRpZmZ1c2UsIG9wYWNpdHkgKTtcblx0I2luY2x1ZGUgPGxvZ2RlcHRoYnVmX2ZyYWdtZW50PlxuXHQjaW5jbHVkZSA8bWFwX2ZyYWdtZW50PlxuXHQjaW5jbHVkZSA8Y29sb3JfZnJhZ21lbnQ+XG5cdCNpbmNsdWRlIDxhbHBoYW1hcF9mcmFnbWVudD5cblx0I2luY2x1ZGUgPGFscGhhdGVzdF9mcmFnbWVudD5cblx0I2luY2x1ZGUgPG5vcm1hbF9mcmFnbWVudF9iZWdpbj5cblx0I2luY2x1ZGUgPG5vcm1hbF9mcmFnbWVudF9tYXBzPlxuXHR2ZWMzIHZpZXdEaXIgPSBub3JtYWxpemUoIHZWaWV3UG9zaXRpb24gKTtcblx0dmVjMyB4ID0gbm9ybWFsaXplKCB2ZWMzKCB2aWV3RGlyLnosIDAuMCwgLSB2aWV3RGlyLnggKSApO1xuXHR2ZWMzIHkgPSBjcm9zcyggdmlld0RpciwgeCApO1xuXHR2ZWMyIHV2ID0gdmVjMiggZG90KCB4LCBub3JtYWwgKSwgZG90KCB5LCBub3JtYWwgKSApICogMC40OTUgKyAwLjU7XG5cdCNpZmRlZiBVU0VfTUFUQ0FQXG5cdFx0dmVjNCBtYXRjYXBDb2xvciA9IHRleHR1cmUyRCggbWF0Y2FwLCB1diApO1xuXHRcdG1hdGNhcENvbG9yID0gbWF0Y2FwVGV4ZWxUb0xpbmVhciggbWF0Y2FwQ29sb3IgKTtcblx0I2Vsc2Vcblx0XHR2ZWM0IG1hdGNhcENvbG9yID0gdmVjNCggMS4wICk7XG5cdCNlbmRpZlxuXHR2ZWMzIG91dGdvaW5nTGlnaHQgPSBkaWZmdXNlQ29sb3IucmdiICogbWF0Y2FwQ29sb3IucmdiO1xuXHRnbF9GcmFnQ29sb3IgPSB2ZWM0KCBvdXRnb2luZ0xpZ2h0LCBkaWZmdXNlQ29sb3IuYSApO1xuXHQjaW5jbHVkZSA8dG9uZW1hcHBpbmdfZnJhZ21lbnQ+XG5cdCNpbmNsdWRlIDxlbmNvZGluZ3NfZnJhZ21lbnQ+XG5cdCNpbmNsdWRlIDxmb2dfZnJhZ21lbnQ+XG5cdCNpbmNsdWRlIDxwcmVtdWx0aXBsaWVkX2FscGhhX2ZyYWdtZW50PlxuXHQjaW5jbHVkZSA8ZGl0aGVyaW5nX2ZyYWdtZW50PlxufSIsbWVzaG1hdGNhcF92ZXJ0OiIjZGVmaW5lIE1BVENBUFxudmFyeWluZyB2ZWMzIHZWaWV3UG9zaXRpb247XG4jaWZuZGVmIEZMQVRfU0hBREVEXG5cdHZhcnlpbmcgdmVjMyB2Tm9ybWFsO1xuI2VuZGlmXG4jaW5jbHVkZSA8Y29tbW9uPlxuI2luY2x1ZGUgPHV2X3BhcnNfdmVydGV4PlxuI2luY2x1ZGUgPGNvbG9yX3BhcnNfdmVydGV4PlxuI2luY2x1ZGUgPGRpc3BsYWNlbWVudG1hcF9wYXJzX3ZlcnRleD5cbiNpbmNsdWRlIDxmb2dfcGFyc192ZXJ0ZXg+XG4jaW5jbHVkZSA8bW9ycGh0YXJnZXRfcGFyc192ZXJ0ZXg+XG4jaW5jbHVkZSA8c2tpbm5pbmdfcGFyc192ZXJ0ZXg+XG4jaW5jbHVkZSA8bG9nZGVwdGhidWZfcGFyc192ZXJ0ZXg+XG4jaW5jbHVkZSA8Y2xpcHBpbmdfcGxhbmVzX3BhcnNfdmVydGV4Plxudm9pZCBtYWluKCkge1xuXHQjaW5jbHVkZSA8dXZfdmVydGV4PlxuXHQjaW5jbHVkZSA8Y29sb3JfdmVydGV4PlxuXHQjaW5jbHVkZSA8YmVnaW5ub3JtYWxfdmVydGV4PlxuXHQjaW5jbHVkZSA8bW9ycGhub3JtYWxfdmVydGV4PlxuXHQjaW5jbHVkZSA8c2tpbmJhc2VfdmVydGV4PlxuXHQjaW5jbHVkZSA8c2tpbm5vcm1hbF92ZXJ0ZXg+XG5cdCNpbmNsdWRlIDxkZWZhdWx0bm9ybWFsX3ZlcnRleD5cblx0I2lmbmRlZiBGTEFUX1NIQURFRFxuXHRcdHZOb3JtYWwgPSBub3JtYWxpemUoIHRyYW5zZm9ybWVkTm9ybWFsICk7XG5cdCNlbmRpZlxuXHQjaW5jbHVkZSA8YmVnaW5fdmVydGV4PlxuXHQjaW5jbHVkZSA8bW9ycGh0YXJnZXRfdmVydGV4PlxuXHQjaW5jbHVkZSA8c2tpbm5pbmdfdmVydGV4PlxuXHQjaW5jbHVkZSA8ZGlzcGxhY2VtZW50bWFwX3ZlcnRleD5cblx0I2luY2x1ZGUgPHByb2plY3RfdmVydGV4PlxuXHQjaW5jbHVkZSA8bG9nZGVwdGhidWZfdmVydGV4PlxuXHQjaW5jbHVkZSA8Y2xpcHBpbmdfcGxhbmVzX3ZlcnRleD5cblx0I2luY2x1ZGUgPGZvZ192ZXJ0ZXg+XG5cdHZWaWV3UG9zaXRpb24gPSAtIG12UG9zaXRpb24ueHl6O1xufSIsbWVzaHRvb25fZnJhZzoiI2RlZmluZSBUT09OXG51bmlmb3JtIHZlYzMgZGlmZnVzZTtcbnVuaWZvcm0gdmVjMyBlbWlzc2l2ZTtcbnVuaWZvcm0gZmxvYXQgb3BhY2l0eTtcbiNpbmNsdWRlIDxjb21tb24+XG4jaW5jbHVkZSA8cGFja2luZz5cbiNpbmNsdWRlIDxkaXRoZXJpbmdfcGFyc19mcmFnbWVudD5cbiNpbmNsdWRlIDxjb2xvcl9wYXJzX2ZyYWdtZW50PlxuI2luY2x1ZGUgPHV2X3BhcnNfZnJhZ21lbnQ+XG4jaW5jbHVkZSA8dXYyX3BhcnNfZnJhZ21lbnQ+XG4jaW5jbHVkZSA8bWFwX3BhcnNfZnJhZ21lbnQ+XG4jaW5jbHVkZSA8YWxwaGFtYXBfcGFyc19mcmFnbWVudD5cbiNpbmNsdWRlIDxhb21hcF9wYXJzX2ZyYWdtZW50PlxuI2luY2x1ZGUgPGxpZ2h0bWFwX3BhcnNfZnJhZ21lbnQ+XG4jaW5jbHVkZSA8ZW1pc3NpdmVtYXBfcGFyc19mcmFnbWVudD5cbiNpbmNsdWRlIDxncmFkaWVudG1hcF9wYXJzX2ZyYWdtZW50PlxuI2luY2x1ZGUgPGZvZ19wYXJzX2ZyYWdtZW50PlxuI2luY2x1ZGUgPGJzZGZzPlxuI2luY2x1ZGUgPGxpZ2h0c19wYXJzX2JlZ2luPlxuI2luY2x1ZGUgPGxpZ2h0c190b29uX3BhcnNfZnJhZ21lbnQ+XG4jaW5jbHVkZSA8c2hhZG93bWFwX3BhcnNfZnJhZ21lbnQ+XG4jaW5jbHVkZSA8YnVtcG1hcF9wYXJzX2ZyYWdtZW50PlxuI2luY2x1ZGUgPG5vcm1hbG1hcF9wYXJzX2ZyYWdtZW50PlxuI2luY2x1ZGUgPGxvZ2RlcHRoYnVmX3BhcnNfZnJhZ21lbnQ+XG4jaW5jbHVkZSA8Y2xpcHBpbmdfcGxhbmVzX3BhcnNfZnJhZ21lbnQ+XG52b2lkIG1haW4oKSB7XG5cdCNpbmNsdWRlIDxjbGlwcGluZ19wbGFuZXNfZnJhZ21lbnQ+XG5cdHZlYzQgZGlmZnVzZUNvbG9yID0gdmVjNCggZGlmZnVzZSwgb3BhY2l0eSApO1xuXHRSZWZsZWN0ZWRMaWdodCByZWZsZWN0ZWRMaWdodCA9IFJlZmxlY3RlZExpZ2h0KCB2ZWMzKCAwLjAgKSwgdmVjMyggMC4wICksIHZlYzMoIDAuMCApLCB2ZWMzKCAwLjAgKSApO1xuXHR2ZWMzIHRvdGFsRW1pc3NpdmVSYWRpYW5jZSA9IGVtaXNzaXZlO1xuXHQjaW5jbHVkZSA8bG9nZGVwdGhidWZfZnJhZ21lbnQ+XG5cdCNpbmNsdWRlIDxtYXBfZnJhZ21lbnQ+XG5cdCNpbmNsdWRlIDxjb2xvcl9mcmFnbWVudD5cblx0I2luY2x1ZGUgPGFscGhhbWFwX2ZyYWdtZW50PlxuXHQjaW5jbHVkZSA8YWxwaGF0ZXN0X2ZyYWdtZW50PlxuXHQjaW5jbHVkZSA8bm9ybWFsX2ZyYWdtZW50X2JlZ2luPlxuXHQjaW5jbHVkZSA8bm9ybWFsX2ZyYWdtZW50X21hcHM+XG5cdCNpbmNsdWRlIDxlbWlzc2l2ZW1hcF9mcmFnbWVudD5cblx0I2luY2x1ZGUgPGxpZ2h0c190b29uX2ZyYWdtZW50PlxuXHQjaW5jbHVkZSA8bGlnaHRzX2ZyYWdtZW50X2JlZ2luPlxuXHQjaW5jbHVkZSA8bGlnaHRzX2ZyYWdtZW50X21hcHM+XG5cdCNpbmNsdWRlIDxsaWdodHNfZnJhZ21lbnRfZW5kPlxuXHQjaW5jbHVkZSA8YW9tYXBfZnJhZ21lbnQ+XG5cdHZlYzMgb3V0Z29pbmdMaWdodCA9IHJlZmxlY3RlZExpZ2h0LmRpcmVjdERpZmZ1c2UgKyByZWZsZWN0ZWRMaWdodC5pbmRpcmVjdERpZmZ1c2UgKyB0b3RhbEVtaXNzaXZlUmFkaWFuY2U7XG5cdGdsX0ZyYWdDb2xvciA9IHZlYzQoIG91dGdvaW5nTGlnaHQsIGRpZmZ1c2VDb2xvci5hICk7XG5cdCNpbmNsdWRlIDx0b25lbWFwcGluZ19mcmFnbWVudD5cblx0I2luY2x1ZGUgPGVuY29kaW5nc19mcmFnbWVudD5cblx0I2luY2x1ZGUgPGZvZ19mcmFnbWVudD5cblx0I2luY2x1ZGUgPHByZW11bHRpcGxpZWRfYWxwaGFfZnJhZ21lbnQ+XG5cdCNpbmNsdWRlIDxkaXRoZXJpbmdfZnJhZ21lbnQ+XG59IixtZXNodG9vbl92ZXJ0OiIjZGVmaW5lIFRPT05cbnZhcnlpbmcgdmVjMyB2Vmlld1Bvc2l0aW9uO1xuI2lmbmRlZiBGTEFUX1NIQURFRFxuXHR2YXJ5aW5nIHZlYzMgdk5vcm1hbDtcbiNlbmRpZlxuI2luY2x1ZGUgPGNvbW1vbj5cbiNpbmNsdWRlIDx1dl9wYXJzX3ZlcnRleD5cbiNpbmNsdWRlIDx1djJfcGFyc192ZXJ0ZXg+XG4jaW5jbHVkZSA8ZGlzcGxhY2VtZW50bWFwX3BhcnNfdmVydGV4PlxuI2luY2x1ZGUgPGNvbG9yX3BhcnNfdmVydGV4PlxuI2luY2x1ZGUgPGZvZ19wYXJzX3ZlcnRleD5cbiNpbmNsdWRlIDxtb3JwaHRhcmdldF9wYXJzX3ZlcnRleD5cbiNpbmNsdWRlIDxza2lubmluZ19wYXJzX3ZlcnRleD5cbiNpbmNsdWRlIDxzaGFkb3dtYXBfcGFyc192ZXJ0ZXg+XG4jaW5jbHVkZSA8bG9nZGVwdGhidWZfcGFyc192ZXJ0ZXg+XG4jaW5jbHVkZSA8Y2xpcHBpbmdfcGxhbmVzX3BhcnNfdmVydGV4Plxudm9pZCBtYWluKCkge1xuXHQjaW5jbHVkZSA8dXZfdmVydGV4PlxuXHQjaW5jbHVkZSA8dXYyX3ZlcnRleD5cblx0I2luY2x1ZGUgPGNvbG9yX3ZlcnRleD5cblx0I2luY2x1ZGUgPGJlZ2lubm9ybWFsX3ZlcnRleD5cblx0I2luY2x1ZGUgPG1vcnBobm9ybWFsX3ZlcnRleD5cblx0I2luY2x1ZGUgPHNraW5iYXNlX3ZlcnRleD5cblx0I2luY2x1ZGUgPHNraW5ub3JtYWxfdmVydGV4PlxuXHQjaW5jbHVkZSA8ZGVmYXVsdG5vcm1hbF92ZXJ0ZXg+XG4jaWZuZGVmIEZMQVRfU0hBREVEXG5cdHZOb3JtYWwgPSBub3JtYWxpemUoIHRyYW5zZm9ybWVkTm9ybWFsICk7XG4jZW5kaWZcblx0I2luY2x1ZGUgPGJlZ2luX3ZlcnRleD5cblx0I2luY2x1ZGUgPG1vcnBodGFyZ2V0X3ZlcnRleD5cblx0I2luY2x1ZGUgPHNraW5uaW5nX3ZlcnRleD5cblx0I2luY2x1ZGUgPGRpc3BsYWNlbWVudG1hcF92ZXJ0ZXg+XG5cdCNpbmNsdWRlIDxwcm9qZWN0X3ZlcnRleD5cblx0I2luY2x1ZGUgPGxvZ2RlcHRoYnVmX3ZlcnRleD5cblx0I2luY2x1ZGUgPGNsaXBwaW5nX3BsYW5lc192ZXJ0ZXg+XG5cdHZWaWV3UG9zaXRpb24gPSAtIG12UG9zaXRpb24ueHl6O1xuXHQjaW5jbHVkZSA8d29ybGRwb3NfdmVydGV4PlxuXHQjaW5jbHVkZSA8c2hhZG93bWFwX3ZlcnRleD5cblx0I2luY2x1ZGUgPGZvZ192ZXJ0ZXg+XG59IixtZXNocGhvbmdfZnJhZzoiI2RlZmluZSBQSE9OR1xudW5pZm9ybSB2ZWMzIGRpZmZ1c2U7XG51bmlmb3JtIHZlYzMgZW1pc3NpdmU7XG51bmlmb3JtIHZlYzMgc3BlY3VsYXI7XG51bmlmb3JtIGZsb2F0IHNoaW5pbmVzcztcbnVuaWZvcm0gZmxvYXQgb3BhY2l0eTtcbiNpbmNsdWRlIDxjb21tb24+XG4jaW5jbHVkZSA8cGFja2luZz5cbiNpbmNsdWRlIDxkaXRoZXJpbmdfcGFyc19mcmFnbWVudD5cbiNpbmNsdWRlIDxjb2xvcl9wYXJzX2ZyYWdtZW50PlxuI2luY2x1ZGUgPHV2X3BhcnNfZnJhZ21lbnQ+XG4jaW5jbHVkZSA8dXYyX3BhcnNfZnJhZ21lbnQ+XG4jaW5jbHVkZSA8bWFwX3BhcnNfZnJhZ21lbnQ+XG4jaW5jbHVkZSA8YWxwaGFtYXBfcGFyc19mcmFnbWVudD5cbiNpbmNsdWRlIDxhb21hcF9wYXJzX2ZyYWdtZW50PlxuI2luY2x1ZGUgPGxpZ2h0bWFwX3BhcnNfZnJhZ21lbnQ+XG4jaW5jbHVkZSA8ZW1pc3NpdmVtYXBfcGFyc19mcmFnbWVudD5cbiNpbmNsdWRlIDxlbnZtYXBfY29tbW9uX3BhcnNfZnJhZ21lbnQ+XG4jaW5jbHVkZSA8ZW52bWFwX3BhcnNfZnJhZ21lbnQ+XG4jaW5jbHVkZSA8Y3ViZV91dl9yZWZsZWN0aW9uX2ZyYWdtZW50PlxuI2luY2x1ZGUgPGZvZ19wYXJzX2ZyYWdtZW50PlxuI2luY2x1ZGUgPGJzZGZzPlxuI2luY2x1ZGUgPGxpZ2h0c19wYXJzX2JlZ2luPlxuI2luY2x1ZGUgPGxpZ2h0c19waG9uZ19wYXJzX2ZyYWdtZW50PlxuI2luY2x1ZGUgPHNoYWRvd21hcF9wYXJzX2ZyYWdtZW50PlxuI2luY2x1ZGUgPGJ1bXBtYXBfcGFyc19mcmFnbWVudD5cbiNpbmNsdWRlIDxub3JtYWxtYXBfcGFyc19mcmFnbWVudD5cbiNpbmNsdWRlIDxzcGVjdWxhcm1hcF9wYXJzX2ZyYWdtZW50PlxuI2luY2x1ZGUgPGxvZ2RlcHRoYnVmX3BhcnNfZnJhZ21lbnQ+XG4jaW5jbHVkZSA8Y2xpcHBpbmdfcGxhbmVzX3BhcnNfZnJhZ21lbnQ+XG52b2lkIG1haW4oKSB7XG5cdCNpbmNsdWRlIDxjbGlwcGluZ19wbGFuZXNfZnJhZ21lbnQ+XG5cdHZlYzQgZGlmZnVzZUNvbG9yID0gdmVjNCggZGlmZnVzZSwgb3BhY2l0eSApO1xuXHRSZWZsZWN0ZWRMaWdodCByZWZsZWN0ZWRMaWdodCA9IFJlZmxlY3RlZExpZ2h0KCB2ZWMzKCAwLjAgKSwgdmVjMyggMC4wICksIHZlYzMoIDAuMCApLCB2ZWMzKCAwLjAgKSApO1xuXHR2ZWMzIHRvdGFsRW1pc3NpdmVSYWRpYW5jZSA9IGVtaXNzaXZlO1xuXHQjaW5jbHVkZSA8bG9nZGVwdGhidWZfZnJhZ21lbnQ+XG5cdCNpbmNsdWRlIDxtYXBfZnJhZ21lbnQ+XG5cdCNpbmNsdWRlIDxjb2xvcl9mcmFnbWVudD5cblx0I2luY2x1ZGUgPGFscGhhbWFwX2ZyYWdtZW50PlxuXHQjaW5jbHVkZSA8YWxwaGF0ZXN0X2ZyYWdtZW50PlxuXHQjaW5jbHVkZSA8c3BlY3VsYXJtYXBfZnJhZ21lbnQ+XG5cdCNpbmNsdWRlIDxub3JtYWxfZnJhZ21lbnRfYmVnaW4+XG5cdCNpbmNsdWRlIDxub3JtYWxfZnJhZ21lbnRfbWFwcz5cblx0I2luY2x1ZGUgPGVtaXNzaXZlbWFwX2ZyYWdtZW50PlxuXHQjaW5jbHVkZSA8bGlnaHRzX3Bob25nX2ZyYWdtZW50PlxuXHQjaW5jbHVkZSA8bGlnaHRzX2ZyYWdtZW50X2JlZ2luPlxuXHQjaW5jbHVkZSA8bGlnaHRzX2ZyYWdtZW50X21hcHM+XG5cdCNpbmNsdWRlIDxsaWdodHNfZnJhZ21lbnRfZW5kPlxuXHQjaW5jbHVkZSA8YW9tYXBfZnJhZ21lbnQ+XG5cdHZlYzMgb3V0Z29pbmdMaWdodCA9IHJlZmxlY3RlZExpZ2h0LmRpcmVjdERpZmZ1c2UgKyByZWZsZWN0ZWRMaWdodC5pbmRpcmVjdERpZmZ1c2UgKyByZWZsZWN0ZWRMaWdodC5kaXJlY3RTcGVjdWxhciArIHJlZmxlY3RlZExpZ2h0LmluZGlyZWN0U3BlY3VsYXIgKyB0b3RhbEVtaXNzaXZlUmFkaWFuY2U7XG5cdCNpbmNsdWRlIDxlbnZtYXBfZnJhZ21lbnQ+XG5cdGdsX0ZyYWdDb2xvciA9IHZlYzQoIG91dGdvaW5nTGlnaHQsIGRpZmZ1c2VDb2xvci5hICk7XG5cdCNpbmNsdWRlIDx0b25lbWFwcGluZ19mcmFnbWVudD5cblx0I2luY2x1ZGUgPGVuY29kaW5nc19mcmFnbWVudD5cblx0I2luY2x1ZGUgPGZvZ19mcmFnbWVudD5cblx0I2luY2x1ZGUgPHByZW11bHRpcGxpZWRfYWxwaGFfZnJhZ21lbnQ+XG5cdCNpbmNsdWRlIDxkaXRoZXJpbmdfZnJhZ21lbnQ+XG59IixtZXNocGhvbmdfdmVydDoiI2RlZmluZSBQSE9OR1xudmFyeWluZyB2ZWMzIHZWaWV3UG9zaXRpb247XG4jaWZuZGVmIEZMQVRfU0hBREVEXG5cdHZhcnlpbmcgdmVjMyB2Tm9ybWFsO1xuI2VuZGlmXG4jaW5jbHVkZSA8Y29tbW9uPlxuI2luY2x1ZGUgPHV2X3BhcnNfdmVydGV4PlxuI2luY2x1ZGUgPHV2Ml9wYXJzX3ZlcnRleD5cbiNpbmNsdWRlIDxkaXNwbGFjZW1lbnRtYXBfcGFyc192ZXJ0ZXg+XG4jaW5jbHVkZSA8ZW52bWFwX3BhcnNfdmVydGV4PlxuI2luY2x1ZGUgPGNvbG9yX3BhcnNfdmVydGV4PlxuI2luY2x1ZGUgPGZvZ19wYXJzX3ZlcnRleD5cbiNpbmNsdWRlIDxtb3JwaHRhcmdldF9wYXJzX3ZlcnRleD5cbiNpbmNsdWRlIDxza2lubmluZ19wYXJzX3ZlcnRleD5cbiNpbmNsdWRlIDxzaGFkb3dtYXBfcGFyc192ZXJ0ZXg+XG4jaW5jbHVkZSA8bG9nZGVwdGhidWZfcGFyc192ZXJ0ZXg+XG4jaW5jbHVkZSA8Y2xpcHBpbmdfcGxhbmVzX3BhcnNfdmVydGV4Plxudm9pZCBtYWluKCkge1xuXHQjaW5jbHVkZSA8dXZfdmVydGV4PlxuXHQjaW5jbHVkZSA8dXYyX3ZlcnRleD5cblx0I2luY2x1ZGUgPGNvbG9yX3ZlcnRleD5cblx0I2luY2x1ZGUgPGJlZ2lubm9ybWFsX3ZlcnRleD5cblx0I2luY2x1ZGUgPG1vcnBobm9ybWFsX3ZlcnRleD5cblx0I2luY2x1ZGUgPHNraW5iYXNlX3ZlcnRleD5cblx0I2luY2x1ZGUgPHNraW5ub3JtYWxfdmVydGV4PlxuXHQjaW5jbHVkZSA8ZGVmYXVsdG5vcm1hbF92ZXJ0ZXg+XG4jaWZuZGVmIEZMQVRfU0hBREVEXG5cdHZOb3JtYWwgPSBub3JtYWxpemUoIHRyYW5zZm9ybWVkTm9ybWFsICk7XG4jZW5kaWZcblx0I2luY2x1ZGUgPGJlZ2luX3ZlcnRleD5cblx0I2luY2x1ZGUgPG1vcnBodGFyZ2V0X3ZlcnRleD5cblx0I2luY2x1ZGUgPHNraW5uaW5nX3ZlcnRleD5cblx0I2luY2x1ZGUgPGRpc3BsYWNlbWVudG1hcF92ZXJ0ZXg+XG5cdCNpbmNsdWRlIDxwcm9qZWN0X3ZlcnRleD5cblx0I2luY2x1ZGUgPGxvZ2RlcHRoYnVmX3ZlcnRleD5cblx0I2luY2x1ZGUgPGNsaXBwaW5nX3BsYW5lc192ZXJ0ZXg+XG5cdHZWaWV3UG9zaXRpb24gPSAtIG12UG9zaXRpb24ueHl6O1xuXHQjaW5jbHVkZSA8d29ybGRwb3NfdmVydGV4PlxuXHQjaW5jbHVkZSA8ZW52bWFwX3ZlcnRleD5cblx0I2luY2x1ZGUgPHNoYWRvd21hcF92ZXJ0ZXg+XG5cdCNpbmNsdWRlIDxmb2dfdmVydGV4PlxufSIsbWVzaHBoeXNpY2FsX2ZyYWc6IiNkZWZpbmUgU1RBTkRBUkRcbiNpZmRlZiBQSFlTSUNBTFxuXHQjZGVmaW5lIFJFRkxFQ1RJVklUWVxuXHQjZGVmaW5lIENMRUFSQ09BVFxuXHQjZGVmaW5lIFRSQU5TTUlTU0lPTlxuI2VuZGlmXG51bmlmb3JtIHZlYzMgZGlmZnVzZTtcbnVuaWZvcm0gdmVjMyBlbWlzc2l2ZTtcbnVuaWZvcm0gZmxvYXQgcm91Z2huZXNzO1xudW5pZm9ybSBmbG9hdCBtZXRhbG5lc3M7XG51bmlmb3JtIGZsb2F0IG9wYWNpdHk7XG4jaWZkZWYgVFJBTlNNSVNTSU9OXG5cdHVuaWZvcm0gZmxvYXQgdHJhbnNtaXNzaW9uO1xuI2VuZGlmXG4jaWZkZWYgUkVGTEVDVElWSVRZXG5cdHVuaWZvcm0gZmxvYXQgcmVmbGVjdGl2aXR5O1xuI2VuZGlmXG4jaWZkZWYgQ0xFQVJDT0FUXG5cdHVuaWZvcm0gZmxvYXQgY2xlYXJjb2F0O1xuXHR1bmlmb3JtIGZsb2F0IGNsZWFyY29hdFJvdWdobmVzcztcbiNlbmRpZlxuI2lmZGVmIFVTRV9TSEVFTlxuXHR1bmlmb3JtIHZlYzMgc2hlZW47XG4jZW5kaWZcbnZhcnlpbmcgdmVjMyB2Vmlld1Bvc2l0aW9uO1xuI2lmbmRlZiBGTEFUX1NIQURFRFxuXHR2YXJ5aW5nIHZlYzMgdk5vcm1hbDtcblx0I2lmZGVmIFVTRV9UQU5HRU5UXG5cdFx0dmFyeWluZyB2ZWMzIHZUYW5nZW50O1xuXHRcdHZhcnlpbmcgdmVjMyB2Qml0YW5nZW50O1xuXHQjZW5kaWZcbiNlbmRpZlxuI2luY2x1ZGUgPGNvbW1vbj5cbiNpbmNsdWRlIDxwYWNraW5nPlxuI2luY2x1ZGUgPGRpdGhlcmluZ19wYXJzX2ZyYWdtZW50PlxuI2luY2x1ZGUgPGNvbG9yX3BhcnNfZnJhZ21lbnQ+XG4jaW5jbHVkZSA8dXZfcGFyc19mcmFnbWVudD5cbiNpbmNsdWRlIDx1djJfcGFyc19mcmFnbWVudD5cbiNpbmNsdWRlIDxtYXBfcGFyc19mcmFnbWVudD5cbiNpbmNsdWRlIDxhbHBoYW1hcF9wYXJzX2ZyYWdtZW50PlxuI2luY2x1ZGUgPGFvbWFwX3BhcnNfZnJhZ21lbnQ+XG4jaW5jbHVkZSA8bGlnaHRtYXBfcGFyc19mcmFnbWVudD5cbiNpbmNsdWRlIDxlbWlzc2l2ZW1hcF9wYXJzX2ZyYWdtZW50PlxuI2luY2x1ZGUgPHRyYW5zbWlzc2lvbm1hcF9wYXJzX2ZyYWdtZW50PlxuI2luY2x1ZGUgPGJzZGZzPlxuI2luY2x1ZGUgPGN1YmVfdXZfcmVmbGVjdGlvbl9mcmFnbWVudD5cbiNpbmNsdWRlIDxlbnZtYXBfY29tbW9uX3BhcnNfZnJhZ21lbnQ+XG4jaW5jbHVkZSA8ZW52bWFwX3BoeXNpY2FsX3BhcnNfZnJhZ21lbnQ+XG4jaW5jbHVkZSA8Zm9nX3BhcnNfZnJhZ21lbnQ+XG4jaW5jbHVkZSA8bGlnaHRzX3BhcnNfYmVnaW4+XG4jaW5jbHVkZSA8bGlnaHRzX3BoeXNpY2FsX3BhcnNfZnJhZ21lbnQ+XG4jaW5jbHVkZSA8c2hhZG93bWFwX3BhcnNfZnJhZ21lbnQ+XG4jaW5jbHVkZSA8YnVtcG1hcF9wYXJzX2ZyYWdtZW50PlxuI2luY2x1ZGUgPG5vcm1hbG1hcF9wYXJzX2ZyYWdtZW50PlxuI2luY2x1ZGUgPGNsZWFyY29hdF9wYXJzX2ZyYWdtZW50PlxuI2luY2x1ZGUgPHJvdWdobmVzc21hcF9wYXJzX2ZyYWdtZW50PlxuI2luY2x1ZGUgPG1ldGFsbmVzc21hcF9wYXJzX2ZyYWdtZW50PlxuI2luY2x1ZGUgPGxvZ2RlcHRoYnVmX3BhcnNfZnJhZ21lbnQ+XG4jaW5jbHVkZSA8Y2xpcHBpbmdfcGxhbmVzX3BhcnNfZnJhZ21lbnQ+XG52b2lkIG1haW4oKSB7XG5cdCNpbmNsdWRlIDxjbGlwcGluZ19wbGFuZXNfZnJhZ21lbnQ+XG5cdHZlYzQgZGlmZnVzZUNvbG9yID0gdmVjNCggZGlmZnVzZSwgb3BhY2l0eSApO1xuXHRSZWZsZWN0ZWRMaWdodCByZWZsZWN0ZWRMaWdodCA9IFJlZmxlY3RlZExpZ2h0KCB2ZWMzKCAwLjAgKSwgdmVjMyggMC4wICksIHZlYzMoIDAuMCApLCB2ZWMzKCAwLjAgKSApO1xuXHR2ZWMzIHRvdGFsRW1pc3NpdmVSYWRpYW5jZSA9IGVtaXNzaXZlO1xuXHQjaWZkZWYgVFJBTlNNSVNTSU9OXG5cdFx0ZmxvYXQgdG90YWxUcmFuc21pc3Npb24gPSB0cmFuc21pc3Npb247XG5cdCNlbmRpZlxuXHQjaW5jbHVkZSA8bG9nZGVwdGhidWZfZnJhZ21lbnQ+XG5cdCNpbmNsdWRlIDxtYXBfZnJhZ21lbnQ+XG5cdCNpbmNsdWRlIDxjb2xvcl9mcmFnbWVudD5cblx0I2luY2x1ZGUgPGFscGhhbWFwX2ZyYWdtZW50PlxuXHQjaW5jbHVkZSA8YWxwaGF0ZXN0X2ZyYWdtZW50PlxuXHQjaW5jbHVkZSA8cm91Z2huZXNzbWFwX2ZyYWdtZW50PlxuXHQjaW5jbHVkZSA8bWV0YWxuZXNzbWFwX2ZyYWdtZW50PlxuXHQjaW5jbHVkZSA8bm9ybWFsX2ZyYWdtZW50X2JlZ2luPlxuXHQjaW5jbHVkZSA8bm9ybWFsX2ZyYWdtZW50X21hcHM+XG5cdCNpbmNsdWRlIDxjbGVhcmNvYXRfbm9ybWFsX2ZyYWdtZW50X2JlZ2luPlxuXHQjaW5jbHVkZSA8Y2xlYXJjb2F0X25vcm1hbF9mcmFnbWVudF9tYXBzPlxuXHQjaW5jbHVkZSA8ZW1pc3NpdmVtYXBfZnJhZ21lbnQ+XG5cdCNpbmNsdWRlIDx0cmFuc21pc3Npb25tYXBfZnJhZ21lbnQ+XG5cdCNpbmNsdWRlIDxsaWdodHNfcGh5c2ljYWxfZnJhZ21lbnQ+XG5cdCNpbmNsdWRlIDxsaWdodHNfZnJhZ21lbnRfYmVnaW4+XG5cdCNpbmNsdWRlIDxsaWdodHNfZnJhZ21lbnRfbWFwcz5cblx0I2luY2x1ZGUgPGxpZ2h0c19mcmFnbWVudF9lbmQ+XG5cdCNpbmNsdWRlIDxhb21hcF9mcmFnbWVudD5cblx0dmVjMyBvdXRnb2luZ0xpZ2h0ID0gcmVmbGVjdGVkTGlnaHQuZGlyZWN0RGlmZnVzZSArIHJlZmxlY3RlZExpZ2h0LmluZGlyZWN0RGlmZnVzZSArIHJlZmxlY3RlZExpZ2h0LmRpcmVjdFNwZWN1bGFyICsgcmVmbGVjdGVkTGlnaHQuaW5kaXJlY3RTcGVjdWxhciArIHRvdGFsRW1pc3NpdmVSYWRpYW5jZTtcblx0I2lmZGVmIFRSQU5TTUlTU0lPTlxuXHRcdGRpZmZ1c2VDb2xvci5hICo9IG1peCggc2F0dXJhdGUoIDEuIC0gdG90YWxUcmFuc21pc3Npb24gKyBsaW5lYXJUb1JlbGF0aXZlTHVtaW5hbmNlKCByZWZsZWN0ZWRMaWdodC5kaXJlY3RTcGVjdWxhciArIHJlZmxlY3RlZExpZ2h0LmluZGlyZWN0U3BlY3VsYXIgKSApLCAxLjAsIG1ldGFsbmVzcyApO1xuXHQjZW5kaWZcblx0Z2xfRnJhZ0NvbG9yID0gdmVjNCggb3V0Z29pbmdMaWdodCwgZGlmZnVzZUNvbG9yLmEgKTtcblx0I2luY2x1ZGUgPHRvbmVtYXBwaW5nX2ZyYWdtZW50PlxuXHQjaW5jbHVkZSA8ZW5jb2RpbmdzX2ZyYWdtZW50PlxuXHQjaW5jbHVkZSA8Zm9nX2ZyYWdtZW50PlxuXHQjaW5jbHVkZSA8cHJlbXVsdGlwbGllZF9hbHBoYV9mcmFnbWVudD5cblx0I2luY2x1ZGUgPGRpdGhlcmluZ19mcmFnbWVudD5cbn0iLG1lc2hwaHlzaWNhbF92ZXJ0OiIjZGVmaW5lIFNUQU5EQVJEXG52YXJ5aW5nIHZlYzMgdlZpZXdQb3NpdGlvbjtcbiNpZm5kZWYgRkxBVF9TSEFERURcblx0dmFyeWluZyB2ZWMzIHZOb3JtYWw7XG5cdCNpZmRlZiBVU0VfVEFOR0VOVFxuXHRcdHZhcnlpbmcgdmVjMyB2VGFuZ2VudDtcblx0XHR2YXJ5aW5nIHZlYzMgdkJpdGFuZ2VudDtcblx0I2VuZGlmXG4jZW5kaWZcbiNpbmNsdWRlIDxjb21tb24+XG4jaW5jbHVkZSA8dXZfcGFyc192ZXJ0ZXg+XG4jaW5jbHVkZSA8dXYyX3BhcnNfdmVydGV4PlxuI2luY2x1ZGUgPGRpc3BsYWNlbWVudG1hcF9wYXJzX3ZlcnRleD5cbiNpbmNsdWRlIDxjb2xvcl9wYXJzX3ZlcnRleD5cbiNpbmNsdWRlIDxmb2dfcGFyc192ZXJ0ZXg+XG4jaW5jbHVkZSA8bW9ycGh0YXJnZXRfcGFyc192ZXJ0ZXg+XG4jaW5jbHVkZSA8c2tpbm5pbmdfcGFyc192ZXJ0ZXg+XG4jaW5jbHVkZSA8c2hhZG93bWFwX3BhcnNfdmVydGV4PlxuI2luY2x1ZGUgPGxvZ2RlcHRoYnVmX3BhcnNfdmVydGV4PlxuI2luY2x1ZGUgPGNsaXBwaW5nX3BsYW5lc19wYXJzX3ZlcnRleD5cbnZvaWQgbWFpbigpIHtcblx0I2luY2x1ZGUgPHV2X3ZlcnRleD5cblx0I2luY2x1ZGUgPHV2Ml92ZXJ0ZXg+XG5cdCNpbmNsdWRlIDxjb2xvcl92ZXJ0ZXg+XG5cdCNpbmNsdWRlIDxiZWdpbm5vcm1hbF92ZXJ0ZXg+XG5cdCNpbmNsdWRlIDxtb3JwaG5vcm1hbF92ZXJ0ZXg+XG5cdCNpbmNsdWRlIDxza2luYmFzZV92ZXJ0ZXg+XG5cdCNpbmNsdWRlIDxza2lubm9ybWFsX3ZlcnRleD5cblx0I2luY2x1ZGUgPGRlZmF1bHRub3JtYWxfdmVydGV4PlxuI2lmbmRlZiBGTEFUX1NIQURFRFxuXHR2Tm9ybWFsID0gbm9ybWFsaXplKCB0cmFuc2Zvcm1lZE5vcm1hbCApO1xuXHQjaWZkZWYgVVNFX1RBTkdFTlRcblx0XHR2VGFuZ2VudCA9IG5vcm1hbGl6ZSggdHJhbnNmb3JtZWRUYW5nZW50ICk7XG5cdFx0dkJpdGFuZ2VudCA9IG5vcm1hbGl6ZSggY3Jvc3MoIHZOb3JtYWwsIHZUYW5nZW50ICkgKiB0YW5nZW50LncgKTtcblx0I2VuZGlmXG4jZW5kaWZcblx0I2luY2x1ZGUgPGJlZ2luX3ZlcnRleD5cblx0I2luY2x1ZGUgPG1vcnBodGFyZ2V0X3ZlcnRleD5cblx0I2luY2x1ZGUgPHNraW5uaW5nX3ZlcnRleD5cblx0I2luY2x1ZGUgPGRpc3BsYWNlbWVudG1hcF92ZXJ0ZXg+XG5cdCNpbmNsdWRlIDxwcm9qZWN0X3ZlcnRleD5cblx0I2luY2x1ZGUgPGxvZ2RlcHRoYnVmX3ZlcnRleD5cblx0I2luY2x1ZGUgPGNsaXBwaW5nX3BsYW5lc192ZXJ0ZXg+XG5cdHZWaWV3UG9zaXRpb24gPSAtIG12UG9zaXRpb24ueHl6O1xuXHQjaW5jbHVkZSA8d29ybGRwb3NfdmVydGV4PlxuXHQjaW5jbHVkZSA8c2hhZG93bWFwX3ZlcnRleD5cblx0I2luY2x1ZGUgPGZvZ192ZXJ0ZXg+XG59Iixub3JtYWxfZnJhZzoiI2RlZmluZSBOT1JNQUxcbnVuaWZvcm0gZmxvYXQgb3BhY2l0eTtcbiNpZiBkZWZpbmVkKCBGTEFUX1NIQURFRCApIHx8IGRlZmluZWQoIFVTRV9CVU1QTUFQICkgfHwgZGVmaW5lZCggVEFOR0VOVFNQQUNFX05PUk1BTE1BUCApXG5cdHZhcnlpbmcgdmVjMyB2Vmlld1Bvc2l0aW9uO1xuI2VuZGlmXG4jaWZuZGVmIEZMQVRfU0hBREVEXG5cdHZhcnlpbmcgdmVjMyB2Tm9ybWFsO1xuXHQjaWZkZWYgVVNFX1RBTkdFTlRcblx0XHR2YXJ5aW5nIHZlYzMgdlRhbmdlbnQ7XG5cdFx0dmFyeWluZyB2ZWMzIHZCaXRhbmdlbnQ7XG5cdCNlbmRpZlxuI2VuZGlmXG4jaW5jbHVkZSA8cGFja2luZz5cbiNpbmNsdWRlIDx1dl9wYXJzX2ZyYWdtZW50PlxuI2luY2x1ZGUgPGJ1bXBtYXBfcGFyc19mcmFnbWVudD5cbiNpbmNsdWRlIDxub3JtYWxtYXBfcGFyc19mcmFnbWVudD5cbiNpbmNsdWRlIDxsb2dkZXB0aGJ1Zl9wYXJzX2ZyYWdtZW50PlxuI2luY2x1ZGUgPGNsaXBwaW5nX3BsYW5lc19wYXJzX2ZyYWdtZW50Plxudm9pZCBtYWluKCkge1xuXHQjaW5jbHVkZSA8Y2xpcHBpbmdfcGxhbmVzX2ZyYWdtZW50PlxuXHQjaW5jbHVkZSA8bG9nZGVwdGhidWZfZnJhZ21lbnQ+XG5cdCNpbmNsdWRlIDxub3JtYWxfZnJhZ21lbnRfYmVnaW4+XG5cdCNpbmNsdWRlIDxub3JtYWxfZnJhZ21lbnRfbWFwcz5cblx0Z2xfRnJhZ0NvbG9yID0gdmVjNCggcGFja05vcm1hbFRvUkdCKCBub3JtYWwgKSwgb3BhY2l0eSApO1xufSIsbm9ybWFsX3ZlcnQ6IiNkZWZpbmUgTk9STUFMXG4jaWYgZGVmaW5lZCggRkxBVF9TSEFERUQgKSB8fCBkZWZpbmVkKCBVU0VfQlVNUE1BUCApIHx8IGRlZmluZWQoIFRBTkdFTlRTUEFDRV9OT1JNQUxNQVAgKVxuXHR2YXJ5aW5nIHZlYzMgdlZpZXdQb3NpdGlvbjtcbiNlbmRpZlxuI2lmbmRlZiBGTEFUX1NIQURFRFxuXHR2YXJ5aW5nIHZlYzMgdk5vcm1hbDtcblx0I2lmZGVmIFVTRV9UQU5HRU5UXG5cdFx0dmFyeWluZyB2ZWMzIHZUYW5nZW50O1xuXHRcdHZhcnlpbmcgdmVjMyB2Qml0YW5nZW50O1xuXHQjZW5kaWZcbiNlbmRpZlxuI2luY2x1ZGUgPGNvbW1vbj5cbiNpbmNsdWRlIDx1dl9wYXJzX3ZlcnRleD5cbiNpbmNsdWRlIDxkaXNwbGFjZW1lbnRtYXBfcGFyc192ZXJ0ZXg+XG4jaW5jbHVkZSA8bW9ycGh0YXJnZXRfcGFyc192ZXJ0ZXg+XG4jaW5jbHVkZSA8c2tpbm5pbmdfcGFyc192ZXJ0ZXg+XG4jaW5jbHVkZSA8bG9nZGVwdGhidWZfcGFyc192ZXJ0ZXg+XG4jaW5jbHVkZSA8Y2xpcHBpbmdfcGxhbmVzX3BhcnNfdmVydGV4Plxudm9pZCBtYWluKCkge1xuXHQjaW5jbHVkZSA8dXZfdmVydGV4PlxuXHQjaW5jbHVkZSA8YmVnaW5ub3JtYWxfdmVydGV4PlxuXHQjaW5jbHVkZSA8bW9ycGhub3JtYWxfdmVydGV4PlxuXHQjaW5jbHVkZSA8c2tpbmJhc2VfdmVydGV4PlxuXHQjaW5jbHVkZSA8c2tpbm5vcm1hbF92ZXJ0ZXg+XG5cdCNpbmNsdWRlIDxkZWZhdWx0bm9ybWFsX3ZlcnRleD5cbiNpZm5kZWYgRkxBVF9TSEFERURcblx0dk5vcm1hbCA9IG5vcm1hbGl6ZSggdHJhbnNmb3JtZWROb3JtYWwgKTtcblx0I2lmZGVmIFVTRV9UQU5HRU5UXG5cdFx0dlRhbmdlbnQgPSBub3JtYWxpemUoIHRyYW5zZm9ybWVkVGFuZ2VudCApO1xuXHRcdHZCaXRhbmdlbnQgPSBub3JtYWxpemUoIGNyb3NzKCB2Tm9ybWFsLCB2VGFuZ2VudCApICogdGFuZ2VudC53ICk7XG5cdCNlbmRpZlxuI2VuZGlmXG5cdCNpbmNsdWRlIDxiZWdpbl92ZXJ0ZXg+XG5cdCNpbmNsdWRlIDxtb3JwaHRhcmdldF92ZXJ0ZXg+XG5cdCNpbmNsdWRlIDxza2lubmluZ192ZXJ0ZXg+XG5cdCNpbmNsdWRlIDxkaXNwbGFjZW1lbnRtYXBfdmVydGV4PlxuXHQjaW5jbHVkZSA8cHJvamVjdF92ZXJ0ZXg+XG5cdCNpbmNsdWRlIDxsb2dkZXB0aGJ1Zl92ZXJ0ZXg+XG5cdCNpbmNsdWRlIDxjbGlwcGluZ19wbGFuZXNfdmVydGV4PlxuI2lmIGRlZmluZWQoIEZMQVRfU0hBREVEICkgfHwgZGVmaW5lZCggVVNFX0JVTVBNQVAgKSB8fCBkZWZpbmVkKCBUQU5HRU5UU1BBQ0VfTk9STUFMTUFQIClcblx0dlZpZXdQb3NpdGlvbiA9IC0gbXZQb3NpdGlvbi54eXo7XG4jZW5kaWZcbn0iLHBvaW50c19mcmFnOiJ1bmlmb3JtIHZlYzMgZGlmZnVzZTtcbnVuaWZvcm0gZmxvYXQgb3BhY2l0eTtcbiNpbmNsdWRlIDxjb21tb24+XG4jaW5jbHVkZSA8Y29sb3JfcGFyc19mcmFnbWVudD5cbiNpbmNsdWRlIDxtYXBfcGFydGljbGVfcGFyc19mcmFnbWVudD5cbiNpbmNsdWRlIDxmb2dfcGFyc19mcmFnbWVudD5cbiNpbmNsdWRlIDxsb2dkZXB0aGJ1Zl9wYXJzX2ZyYWdtZW50PlxuI2luY2x1ZGUgPGNsaXBwaW5nX3BsYW5lc19wYXJzX2ZyYWdtZW50Plxudm9pZCBtYWluKCkge1xuXHQjaW5jbHVkZSA8Y2xpcHBpbmdfcGxhbmVzX2ZyYWdtZW50PlxuXHR2ZWMzIG91dGdvaW5nTGlnaHQgPSB2ZWMzKCAwLjAgKTtcblx0dmVjNCBkaWZmdXNlQ29sb3IgPSB2ZWM0KCBkaWZmdXNlLCBvcGFjaXR5ICk7XG5cdCNpbmNsdWRlIDxsb2dkZXB0aGJ1Zl9mcmFnbWVudD5cblx0I2luY2x1ZGUgPG1hcF9wYXJ0aWNsZV9mcmFnbWVudD5cblx0I2luY2x1ZGUgPGNvbG9yX2ZyYWdtZW50PlxuXHQjaW5jbHVkZSA8YWxwaGF0ZXN0X2ZyYWdtZW50PlxuXHRvdXRnb2luZ0xpZ2h0ID0gZGlmZnVzZUNvbG9yLnJnYjtcblx0Z2xfRnJhZ0NvbG9yID0gdmVjNCggb3V0Z29pbmdMaWdodCwgZGlmZnVzZUNvbG9yLmEgKTtcblx0I2luY2x1ZGUgPHRvbmVtYXBwaW5nX2ZyYWdtZW50PlxuXHQjaW5jbHVkZSA8ZW5jb2RpbmdzX2ZyYWdtZW50PlxuXHQjaW5jbHVkZSA8Zm9nX2ZyYWdtZW50PlxuXHQjaW5jbHVkZSA8cHJlbXVsdGlwbGllZF9hbHBoYV9mcmFnbWVudD5cbn0iLHBvaW50c192ZXJ0OiJ1bmlmb3JtIGZsb2F0IHNpemU7XG51bmlmb3JtIGZsb2F0IHNjYWxlO1xuI2luY2x1ZGUgPGNvbW1vbj5cbiNpbmNsdWRlIDxjb2xvcl9wYXJzX3ZlcnRleD5cbiNpbmNsdWRlIDxmb2dfcGFyc192ZXJ0ZXg+XG4jaW5jbHVkZSA8bW9ycGh0YXJnZXRfcGFyc192ZXJ0ZXg+XG4jaW5jbHVkZSA8bG9nZGVwdGhidWZfcGFyc192ZXJ0ZXg+XG4jaW5jbHVkZSA8Y2xpcHBpbmdfcGxhbmVzX3BhcnNfdmVydGV4Plxudm9pZCBtYWluKCkge1xuXHQjaW5jbHVkZSA8Y29sb3JfdmVydGV4PlxuXHQjaW5jbHVkZSA8YmVnaW5fdmVydGV4PlxuXHQjaW5jbHVkZSA8bW9ycGh0YXJnZXRfdmVydGV4PlxuXHQjaW5jbHVkZSA8cHJvamVjdF92ZXJ0ZXg+XG5cdGdsX1BvaW50U2l6ZSA9IHNpemU7XG5cdCNpZmRlZiBVU0VfU0laRUFUVEVOVUFUSU9OXG5cdFx0Ym9vbCBpc1BlcnNwZWN0aXZlID0gaXNQZXJzcGVjdGl2ZU1hdHJpeCggcHJvamVjdGlvbk1hdHJpeCApO1xuXHRcdGlmICggaXNQZXJzcGVjdGl2ZSApIGdsX1BvaW50U2l6ZSAqPSAoIHNjYWxlIC8gLSBtdlBvc2l0aW9uLnogKTtcblx0I2VuZGlmXG5cdCNpbmNsdWRlIDxsb2dkZXB0aGJ1Zl92ZXJ0ZXg+XG5cdCNpbmNsdWRlIDxjbGlwcGluZ19wbGFuZXNfdmVydGV4PlxuXHQjaW5jbHVkZSA8d29ybGRwb3NfdmVydGV4PlxuXHQjaW5jbHVkZSA8Zm9nX3ZlcnRleD5cbn0iLHNoYWRvd19mcmFnOiJ1bmlmb3JtIHZlYzMgY29sb3I7XG51bmlmb3JtIGZsb2F0IG9wYWNpdHk7XG4jaW5jbHVkZSA8Y29tbW9uPlxuI2luY2x1ZGUgPHBhY2tpbmc+XG4jaW5jbHVkZSA8Zm9nX3BhcnNfZnJhZ21lbnQ+XG4jaW5jbHVkZSA8YnNkZnM+XG4jaW5jbHVkZSA8bGlnaHRzX3BhcnNfYmVnaW4+XG4jaW5jbHVkZSA8c2hhZG93bWFwX3BhcnNfZnJhZ21lbnQ+XG4jaW5jbHVkZSA8c2hhZG93bWFza19wYXJzX2ZyYWdtZW50Plxudm9pZCBtYWluKCkge1xuXHRnbF9GcmFnQ29sb3IgPSB2ZWM0KCBjb2xvciwgb3BhY2l0eSAqICggMS4wIC0gZ2V0U2hhZG93TWFzaygpICkgKTtcblx0I2luY2x1ZGUgPHRvbmVtYXBwaW5nX2ZyYWdtZW50PlxuXHQjaW5jbHVkZSA8ZW5jb2RpbmdzX2ZyYWdtZW50PlxuXHQjaW5jbHVkZSA8Zm9nX2ZyYWdtZW50PlxufSIsc2hhZG93X3ZlcnQ6IiNpbmNsdWRlIDxjb21tb24+XG4jaW5jbHVkZSA8Zm9nX3BhcnNfdmVydGV4PlxuI2luY2x1ZGUgPHNoYWRvd21hcF9wYXJzX3ZlcnRleD5cbnZvaWQgbWFpbigpIHtcblx0I2luY2x1ZGUgPGJlZ2luX3ZlcnRleD5cblx0I2luY2x1ZGUgPHByb2plY3RfdmVydGV4PlxuXHQjaW5jbHVkZSA8d29ybGRwb3NfdmVydGV4PlxuXHQjaW5jbHVkZSA8YmVnaW5ub3JtYWxfdmVydGV4PlxuXHQjaW5jbHVkZSA8bW9ycGhub3JtYWxfdmVydGV4PlxuXHQjaW5jbHVkZSA8c2tpbmJhc2VfdmVydGV4PlxuXHQjaW5jbHVkZSA8c2tpbm5vcm1hbF92ZXJ0ZXg+XG5cdCNpbmNsdWRlIDxkZWZhdWx0bm9ybWFsX3ZlcnRleD5cblx0I2luY2x1ZGUgPHNoYWRvd21hcF92ZXJ0ZXg+XG5cdCNpbmNsdWRlIDxmb2dfdmVydGV4PlxufSIsc3ByaXRlX2ZyYWc6InVuaWZvcm0gdmVjMyBkaWZmdXNlO1xudW5pZm9ybSBmbG9hdCBvcGFjaXR5O1xuI2luY2x1ZGUgPGNvbW1vbj5cbiNpbmNsdWRlIDx1dl9wYXJzX2ZyYWdtZW50PlxuI2luY2x1ZGUgPG1hcF9wYXJzX2ZyYWdtZW50PlxuI2luY2x1ZGUgPGFscGhhbWFwX3BhcnNfZnJhZ21lbnQ+XG4jaW5jbHVkZSA8Zm9nX3BhcnNfZnJhZ21lbnQ+XG4jaW5jbHVkZSA8bG9nZGVwdGhidWZfcGFyc19mcmFnbWVudD5cbiNpbmNsdWRlIDxjbGlwcGluZ19wbGFuZXNfcGFyc19mcmFnbWVudD5cbnZvaWQgbWFpbigpIHtcblx0I2luY2x1ZGUgPGNsaXBwaW5nX3BsYW5lc19mcmFnbWVudD5cblx0dmVjMyBvdXRnb2luZ0xpZ2h0ID0gdmVjMyggMC4wICk7XG5cdHZlYzQgZGlmZnVzZUNvbG9yID0gdmVjNCggZGlmZnVzZSwgb3BhY2l0eSApO1xuXHQjaW5jbHVkZSA8bG9nZGVwdGhidWZfZnJhZ21lbnQ+XG5cdCNpbmNsdWRlIDxtYXBfZnJhZ21lbnQ+XG5cdCNpbmNsdWRlIDxhbHBoYW1hcF9mcmFnbWVudD5cblx0I2luY2x1ZGUgPGFscGhhdGVzdF9mcmFnbWVudD5cblx0b3V0Z29pbmdMaWdodCA9IGRpZmZ1c2VDb2xvci5yZ2I7XG5cdGdsX0ZyYWdDb2xvciA9IHZlYzQoIG91dGdvaW5nTGlnaHQsIGRpZmZ1c2VDb2xvci5hICk7XG5cdCNpbmNsdWRlIDx0b25lbWFwcGluZ19mcmFnbWVudD5cblx0I2luY2x1ZGUgPGVuY29kaW5nc19mcmFnbWVudD5cblx0I2luY2x1ZGUgPGZvZ19mcmFnbWVudD5cbn0iLHNwcml0ZV92ZXJ0OiJ1bmlmb3JtIGZsb2F0IHJvdGF0aW9uO1xudW5pZm9ybSB2ZWMyIGNlbnRlcjtcbiNpbmNsdWRlIDxjb21tb24+XG4jaW5jbHVkZSA8dXZfcGFyc192ZXJ0ZXg+XG4jaW5jbHVkZSA8Zm9nX3BhcnNfdmVydGV4PlxuI2luY2x1ZGUgPGxvZ2RlcHRoYnVmX3BhcnNfdmVydGV4PlxuI2luY2x1ZGUgPGNsaXBwaW5nX3BsYW5lc19wYXJzX3ZlcnRleD5cbnZvaWQgbWFpbigpIHtcblx0I2luY2x1ZGUgPHV2X3ZlcnRleD5cblx0dmVjNCBtdlBvc2l0aW9uID0gbW9kZWxWaWV3TWF0cml4ICogdmVjNCggMC4wLCAwLjAsIDAuMCwgMS4wICk7XG5cdHZlYzIgc2NhbGU7XG5cdHNjYWxlLnggPSBsZW5ndGgoIHZlYzMoIG1vZGVsTWF0cml4WyAwIF0ueCwgbW9kZWxNYXRyaXhbIDAgXS55LCBtb2RlbE1hdHJpeFsgMCBdLnogKSApO1xuXHRzY2FsZS55ID0gbGVuZ3RoKCB2ZWMzKCBtb2RlbE1hdHJpeFsgMSBdLngsIG1vZGVsTWF0cml4WyAxIF0ueSwgbW9kZWxNYXRyaXhbIDEgXS56ICkgKTtcblx0I2lmbmRlZiBVU0VfU0laRUFUVEVOVUFUSU9OXG5cdFx0Ym9vbCBpc1BlcnNwZWN0aXZlID0gaXNQZXJzcGVjdGl2ZU1hdHJpeCggcHJvamVjdGlvbk1hdHJpeCApO1xuXHRcdGlmICggaXNQZXJzcGVjdGl2ZSApIHNjYWxlICo9IC0gbXZQb3NpdGlvbi56O1xuXHQjZW5kaWZcblx0dmVjMiBhbGlnbmVkUG9zaXRpb24gPSAoIHBvc2l0aW9uLnh5IC0gKCBjZW50ZXIgLSB2ZWMyKCAwLjUgKSApICkgKiBzY2FsZTtcblx0dmVjMiByb3RhdGVkUG9zaXRpb247XG5cdHJvdGF0ZWRQb3NpdGlvbi54ID0gY29zKCByb3RhdGlvbiApICogYWxpZ25lZFBvc2l0aW9uLnggLSBzaW4oIHJvdGF0aW9uICkgKiBhbGlnbmVkUG9zaXRpb24ueTtcblx0cm90YXRlZFBvc2l0aW9uLnkgPSBzaW4oIHJvdGF0aW9uICkgKiBhbGlnbmVkUG9zaXRpb24ueCArIGNvcyggcm90YXRpb24gKSAqIGFsaWduZWRQb3NpdGlvbi55O1xuXHRtdlBvc2l0aW9uLnh5ICs9IHJvdGF0ZWRQb3NpdGlvbjtcblx0Z2xfUG9zaXRpb24gPSBwcm9qZWN0aW9uTWF0cml4ICogbXZQb3NpdGlvbjtcblx0I2luY2x1ZGUgPGxvZ2RlcHRoYnVmX3ZlcnRleD5cblx0I2luY2x1ZGUgPGNsaXBwaW5nX3BsYW5lc192ZXJ0ZXg+XG5cdCNpbmNsdWRlIDxmb2dfdmVydGV4PlxufSJ9LEpWdD17Y29tbW9uOntkaWZmdXNlOnt2YWx1ZTpuZXcgSEZ0KDE1NjU4NzM0KX0sb3BhY2l0eTp7dmFsdWU6MX0sbWFwOnt2YWx1ZTpudWxsfSx1dlRyYW5zZm9ybTp7dmFsdWU6bmV3IGNIdH0sdXYyVHJhbnNmb3JtOnt2YWx1ZTpuZXcgY0h0fSxhbHBoYU1hcDp7dmFsdWU6bnVsbH19LHNwZWN1bGFybWFwOntzcGVjdWxhck1hcDp7dmFsdWU6bnVsbH19LGVudm1hcDp7ZW52TWFwOnt2YWx1ZTpudWxsfSxmbGlwRW52TWFwOnt2YWx1ZTotMX0scmVmbGVjdGl2aXR5Ont2YWx1ZToxfSxyZWZyYWN0aW9uUmF0aW86e3ZhbHVlOi45OH0sbWF4TWlwTGV2ZWw6e3ZhbHVlOjB9fSxhb21hcDp7YW9NYXA6e3ZhbHVlOm51bGx9LGFvTWFwSW50ZW5zaXR5Ont2YWx1ZToxfX0sbGlnaHRtYXA6e2xpZ2h0TWFwOnt2YWx1ZTpudWxsfSxsaWdodE1hcEludGVuc2l0eTp7dmFsdWU6MX19LGVtaXNzaXZlbWFwOntlbWlzc2l2ZU1hcDp7dmFsdWU6bnVsbH19LGJ1bXBtYXA6e2J1bXBNYXA6e3ZhbHVlOm51bGx9LGJ1bXBTY2FsZTp7dmFsdWU6MX19LG5vcm1hbG1hcDp7bm9ybWFsTWFwOnt2YWx1ZTpudWxsfSxub3JtYWxTY2FsZTp7dmFsdWU6bmV3IGxIdCgxLDEpfX0sZGlzcGxhY2VtZW50bWFwOntkaXNwbGFjZW1lbnRNYXA6e3ZhbHVlOm51bGx9LGRpc3BsYWNlbWVudFNjYWxlOnt2YWx1ZToxfSxkaXNwbGFjZW1lbnRCaWFzOnt2YWx1ZTowfX0scm91Z2huZXNzbWFwOntyb3VnaG5lc3NNYXA6e3ZhbHVlOm51bGx9fSxtZXRhbG5lc3NtYXA6e21ldGFsbmVzc01hcDp7dmFsdWU6bnVsbH19LGdyYWRpZW50bWFwOntncmFkaWVudE1hcDp7dmFsdWU6bnVsbH19LGZvZzp7Zm9nRGVuc2l0eTp7dmFsdWU6MjVlLTV9LGZvZ05lYXI6e3ZhbHVlOjF9LGZvZ0Zhcjp7dmFsdWU6MmUzfSxmb2dDb2xvcjp7dmFsdWU6bmV3IEhGdCgxNjc3NzIxNSl9fSxsaWdodHM6e2FtYmllbnRMaWdodENvbG9yOnt2YWx1ZTpbXX0sbGlnaHRQcm9iZTp7dmFsdWU6W119LGRpcmVjdGlvbmFsTGlnaHRzOnt2YWx1ZTpbXSxwcm9wZXJ0aWVzOntkaXJlY3Rpb246e30sY29sb3I6e319fSxkaXJlY3Rpb25hbExpZ2h0U2hhZG93czp7dmFsdWU6W10scHJvcGVydGllczp7c2hhZG93Qmlhczp7fSxzaGFkb3dOb3JtYWxCaWFzOnt9LHNoYWRvd1JhZGl1czp7fSxzaGFkb3dNYXBTaXplOnt9fX0sZGlyZWN0aW9uYWxTaGFkb3dNYXA6e3ZhbHVlOltdfSxkaXJlY3Rpb25hbFNoYWRvd01hdHJpeDp7dmFsdWU6W119LHNwb3RMaWdodHM6e3ZhbHVlOltdLHByb3BlcnRpZXM6e2NvbG9yOnt9LHBvc2l0aW9uOnt9LGRpcmVjdGlvbjp7fSxkaXN0YW5jZTp7fSxjb25lQ29zOnt9LHBlbnVtYnJhQ29zOnt9LGRlY2F5Ont9fX0sc3BvdExpZ2h0U2hhZG93czp7dmFsdWU6W10scHJvcGVydGllczp7c2hhZG93Qmlhczp7fSxzaGFkb3dOb3JtYWxCaWFzOnt9LHNoYWRvd1JhZGl1czp7fSxzaGFkb3dNYXBTaXplOnt9fX0sc3BvdFNoYWRvd01hcDp7dmFsdWU6W119LHNwb3RTaGFkb3dNYXRyaXg6e3ZhbHVlOltdfSxwb2ludExpZ2h0czp7dmFsdWU6W10scHJvcGVydGllczp7Y29sb3I6e30scG9zaXRpb246e30sZGVjYXk6e30sZGlzdGFuY2U6e319fSxwb2ludExpZ2h0U2hhZG93czp7dmFsdWU6W10scHJvcGVydGllczp7c2hhZG93Qmlhczp7fSxzaGFkb3dOb3JtYWxCaWFzOnt9LHNoYWRvd1JhZGl1czp7fSxzaGFkb3dNYXBTaXplOnt9LHNoYWRvd0NhbWVyYU5lYXI6e30sc2hhZG93Q2FtZXJhRmFyOnt9fX0scG9pbnRTaGFkb3dNYXA6e3ZhbHVlOltdfSxwb2ludFNoYWRvd01hdHJpeDp7dmFsdWU6W119LGhlbWlzcGhlcmVMaWdodHM6e3ZhbHVlOltdLHByb3BlcnRpZXM6e2RpcmVjdGlvbjp7fSxza3lDb2xvcjp7fSxncm91bmRDb2xvcjp7fX19LHJlY3RBcmVhTGlnaHRzOnt2YWx1ZTpbXSxwcm9wZXJ0aWVzOntjb2xvcjp7fSxwb3NpdGlvbjp7fSx3aWR0aDp7fSxoZWlnaHQ6e319fSxsdGNfMTp7dmFsdWU6bnVsbH0sbHRjXzI6e3ZhbHVlOm51bGx9fSxwb2ludHM6e2RpZmZ1c2U6e3ZhbHVlOm5ldyBIRnQoMTU2NTg3MzQpfSxvcGFjaXR5Ont2YWx1ZToxfSxzaXplOnt2YWx1ZToxfSxzY2FsZTp7dmFsdWU6MX0sbWFwOnt2YWx1ZTpudWxsfSxhbHBoYU1hcDp7dmFsdWU6bnVsbH0sdXZUcmFuc2Zvcm06e3ZhbHVlOm5ldyBjSHR9fSxzcHJpdGU6e2RpZmZ1c2U6e3ZhbHVlOm5ldyBIRnQoMTU2NTg3MzQpfSxvcGFjaXR5Ont2YWx1ZToxfSxjZW50ZXI6e3ZhbHVlOm5ldyBsSHQoLjUsLjUpfSxyb3RhdGlvbjp7dmFsdWU6MH0sbWFwOnt2YWx1ZTpudWxsfSxhbHBoYU1hcDp7dmFsdWU6bnVsbH0sdXZUcmFuc2Zvcm06e3ZhbHVlOm5ldyBjSHR9fX0sUVZ0PXtiYXNpYzp7dW5pZm9ybXM6UlZ0KFtKVnQuY29tbW9uLEpWdC5zcGVjdWxhcm1hcCxKVnQuZW52bWFwLEpWdC5hb21hcCxKVnQubGlnaHRtYXAsSlZ0LmZvZ10pLHZlcnRleFNoYWRlcjpaVnQubWVzaGJhc2ljX3ZlcnQsZnJhZ21lbnRTaGFkZXI6WlZ0Lm1lc2hiYXNpY19mcmFnfSxsYW1iZXJ0Ont1bmlmb3JtczpSVnQoW0pWdC5jb21tb24sSlZ0LnNwZWN1bGFybWFwLEpWdC5lbnZtYXAsSlZ0LmFvbWFwLEpWdC5saWdodG1hcCxKVnQuZW1pc3NpdmVtYXAsSlZ0LmZvZyxKVnQubGlnaHRzLHtlbWlzc2l2ZTp7dmFsdWU6bmV3IEhGdCgwKX19XSksdmVydGV4U2hhZGVyOlpWdC5tZXNobGFtYmVydF92ZXJ0LGZyYWdtZW50U2hhZGVyOlpWdC5tZXNobGFtYmVydF9mcmFnfSxwaG9uZzp7dW5pZm9ybXM6UlZ0KFtKVnQuY29tbW9uLEpWdC5zcGVjdWxhcm1hcCxKVnQuZW52bWFwLEpWdC5hb21hcCxKVnQubGlnaHRtYXAsSlZ0LmVtaXNzaXZlbWFwLEpWdC5idW1wbWFwLEpWdC5ub3JtYWxtYXAsSlZ0LmRpc3BsYWNlbWVudG1hcCxKVnQuZm9nLEpWdC5saWdodHMse2VtaXNzaXZlOnt2YWx1ZTpuZXcgSEZ0KDApfSxzcGVjdWxhcjp7dmFsdWU6bmV3IEhGdCgxMTE4NDgxKX0sc2hpbmluZXNzOnt2YWx1ZTozMH19XSksdmVydGV4U2hhZGVyOlpWdC5tZXNocGhvbmdfdmVydCxmcmFnbWVudFNoYWRlcjpaVnQubWVzaHBob25nX2ZyYWd9LHN0YW5kYXJkOnt1bmlmb3JtczpSVnQoW0pWdC5jb21tb24sSlZ0LmVudm1hcCxKVnQuYW9tYXAsSlZ0LmxpZ2h0bWFwLEpWdC5lbWlzc2l2ZW1hcCxKVnQuYnVtcG1hcCxKVnQubm9ybWFsbWFwLEpWdC5kaXNwbGFjZW1lbnRtYXAsSlZ0LnJvdWdobmVzc21hcCxKVnQubWV0YWxuZXNzbWFwLEpWdC5mb2csSlZ0LmxpZ2h0cyx7ZW1pc3NpdmU6e3ZhbHVlOm5ldyBIRnQoMCl9LHJvdWdobmVzczp7dmFsdWU6MX0sbWV0YWxuZXNzOnt2YWx1ZTowfSxlbnZNYXBJbnRlbnNpdHk6e3ZhbHVlOjF9fV0pLHZlcnRleFNoYWRlcjpaVnQubWVzaHBoeXNpY2FsX3ZlcnQsZnJhZ21lbnRTaGFkZXI6WlZ0Lm1lc2hwaHlzaWNhbF9mcmFnfSx0b29uOnt1bmlmb3JtczpSVnQoW0pWdC5jb21tb24sSlZ0LmFvbWFwLEpWdC5saWdodG1hcCxKVnQuZW1pc3NpdmVtYXAsSlZ0LmJ1bXBtYXAsSlZ0Lm5vcm1hbG1hcCxKVnQuZGlzcGxhY2VtZW50bWFwLEpWdC5ncmFkaWVudG1hcCxKVnQuZm9nLEpWdC5saWdodHMse2VtaXNzaXZlOnt2YWx1ZTpuZXcgSEZ0KDApfX1dKSx2ZXJ0ZXhTaGFkZXI6WlZ0Lm1lc2h0b29uX3ZlcnQsZnJhZ21lbnRTaGFkZXI6WlZ0Lm1lc2h0b29uX2ZyYWd9LG1hdGNhcDp7dW5pZm9ybXM6UlZ0KFtKVnQuY29tbW9uLEpWdC5idW1wbWFwLEpWdC5ub3JtYWxtYXAsSlZ0LmRpc3BsYWNlbWVudG1hcCxKVnQuZm9nLHttYXRjYXA6e3ZhbHVlOm51bGx9fV0pLHZlcnRleFNoYWRlcjpaVnQubWVzaG1hdGNhcF92ZXJ0LGZyYWdtZW50U2hhZGVyOlpWdC5tZXNobWF0Y2FwX2ZyYWd9LHBvaW50czp7dW5pZm9ybXM6UlZ0KFtKVnQucG9pbnRzLEpWdC5mb2ddKSx2ZXJ0ZXhTaGFkZXI6WlZ0LnBvaW50c192ZXJ0LGZyYWdtZW50U2hhZGVyOlpWdC5wb2ludHNfZnJhZ30sZGFzaGVkOnt1bmlmb3JtczpSVnQoW0pWdC5jb21tb24sSlZ0LmZvZyx7c2NhbGU6e3ZhbHVlOjF9LGRhc2hTaXplOnt2YWx1ZToxfSx0b3RhbFNpemU6e3ZhbHVlOjJ9fV0pLHZlcnRleFNoYWRlcjpaVnQubGluZWRhc2hlZF92ZXJ0LGZyYWdtZW50U2hhZGVyOlpWdC5saW5lZGFzaGVkX2ZyYWd9LGRlcHRoOnt1bmlmb3JtczpSVnQoW0pWdC5jb21tb24sSlZ0LmRpc3BsYWNlbWVudG1hcF0pLHZlcnRleFNoYWRlcjpaVnQuZGVwdGhfdmVydCxmcmFnbWVudFNoYWRlcjpaVnQuZGVwdGhfZnJhZ30sbm9ybWFsOnt1bmlmb3JtczpSVnQoW0pWdC5jb21tb24sSlZ0LmJ1bXBtYXAsSlZ0Lm5vcm1hbG1hcCxKVnQuZGlzcGxhY2VtZW50bWFwLHtvcGFjaXR5Ont2YWx1ZToxfX1dKSx2ZXJ0ZXhTaGFkZXI6WlZ0Lm5vcm1hbF92ZXJ0LGZyYWdtZW50U2hhZGVyOlpWdC5ub3JtYWxfZnJhZ30sc3ByaXRlOnt1bmlmb3JtczpSVnQoW0pWdC5zcHJpdGUsSlZ0LmZvZ10pLHZlcnRleFNoYWRlcjpaVnQuc3ByaXRlX3ZlcnQsZnJhZ21lbnRTaGFkZXI6WlZ0LnNwcml0ZV9mcmFnfSxiYWNrZ3JvdW5kOnt1bmlmb3Jtczp7dXZUcmFuc2Zvcm06e3ZhbHVlOm5ldyBjSHR9LHQyRDp7dmFsdWU6bnVsbH19LHZlcnRleFNoYWRlcjpaVnQuYmFja2dyb3VuZF92ZXJ0LGZyYWdtZW50U2hhZGVyOlpWdC5iYWNrZ3JvdW5kX2ZyYWd9LGN1YmU6e3VuaWZvcm1zOlJWdChbSlZ0LmVudm1hcCx7b3BhY2l0eTp7dmFsdWU6MX19XSksdmVydGV4U2hhZGVyOlpWdC5jdWJlX3ZlcnQsZnJhZ21lbnRTaGFkZXI6WlZ0LmN1YmVfZnJhZ30sZXF1aXJlY3Q6e3VuaWZvcm1zOnt0RXF1aXJlY3Q6e3ZhbHVlOm51bGx9fSx2ZXJ0ZXhTaGFkZXI6WlZ0LmVxdWlyZWN0X3ZlcnQsZnJhZ21lbnRTaGFkZXI6WlZ0LmVxdWlyZWN0X2ZyYWd9LGRpc3RhbmNlUkdCQTp7dW5pZm9ybXM6UlZ0KFtKVnQuY29tbW9uLEpWdC5kaXNwbGFjZW1lbnRtYXAse3JlZmVyZW5jZVBvc2l0aW9uOnt2YWx1ZTpuZXcgeUh0fSxuZWFyRGlzdGFuY2U6e3ZhbHVlOjF9LGZhckRpc3RhbmNlOnt2YWx1ZToxZTN9fV0pLHZlcnRleFNoYWRlcjpaVnQuZGlzdGFuY2VSR0JBX3ZlcnQsZnJhZ21lbnRTaGFkZXI6WlZ0LmRpc3RhbmNlUkdCQV9mcmFnfSxzaGFkb3c6e3VuaWZvcm1zOlJWdChbSlZ0LmxpZ2h0cyxKVnQuZm9nLHtjb2xvcjp7dmFsdWU6bmV3IEhGdCgwKX0sb3BhY2l0eTp7dmFsdWU6MX19XSksdmVydGV4U2hhZGVyOlpWdC5zaGFkb3dfdmVydCxmcmFnbWVudFNoYWRlcjpaVnQuc2hhZG93X2ZyYWd9fTtmdW5jdGlvbiB0anQodCxlLG4saSxyKXtjb25zdCBvPW5ldyBIRnQoMCk7bGV0IGEscyxsPTAsYz1udWxsLHU9MCxoPW51bGw7ZnVuY3Rpb24gZCh0LGUpe24uYnVmZmVycy5jb2xvci5zZXRDbGVhcih0LnIsdC5nLHQuYixlLHIpfXJldHVybntnZXRDbGVhckNvbG9yOmZ1bmN0aW9uKCl7cmV0dXJuIG99LHNldENsZWFyQ29sb3I6ZnVuY3Rpb24odCxlPTEpe28uc2V0KHQpLGw9ZSxkKG8sbCl9LGdldENsZWFyQWxwaGE6ZnVuY3Rpb24oKXtyZXR1cm4gbH0sc2V0Q2xlYXJBbHBoYTpmdW5jdGlvbih0KXtsPXQsZChvLGwpfSxyZW5kZXI6ZnVuY3Rpb24gcChuLHIsZixtKXtsZXQgZz0hMD09PXIuaXNTY2VuZT9yLmJhY2tncm91bmQ6bnVsbDtnJiZnLmlzVGV4dHVyZSYmKGc9ZS5nZXQoZykpO2NvbnN0IF89dC54cix5PV8uZ2V0U2Vzc2lvbiYmXy5nZXRTZXNzaW9uKCk7eSYmImFkZGl0aXZlIj09PXkuZW52aXJvbm1lbnRCbGVuZE1vZGUmJihnPW51bGwpLG51bGw9PT1nP2QobyxsKTpnJiZnLmlzQ29sb3ImJihkKGcsMSksbT0hMCksKHQuYXV0b0NsZWFyfHxtKSYmdC5jbGVhcih0LmF1dG9DbGVhckNvbG9yLHQuYXV0b0NsZWFyRGVwdGgsdC5hdXRvQ2xlYXJTdGVuY2lsKSxnJiYoZy5pc0N1YmVUZXh0dXJlfHxnLmlzV2ViR0xDdWJlUmVuZGVyVGFyZ2V0fHxnLm1hcHBpbmc9PT1sQnQpPyh2b2lkIDA9PT1zJiYocz1uZXcgUFZ0KG5ldyBOVnQoMSwxLDEpLG5ldyBEVnQoe25hbWU6IkJhY2tncm91bmRDdWJlTWF0ZXJpYWwiLHVuaWZvcm1zOk9WdChRVnQuY3ViZS51bmlmb3JtcyksdmVydGV4U2hhZGVyOlFWdC5jdWJlLnZlcnRleFNoYWRlcixmcmFnbWVudFNoYWRlcjpRVnQuY3ViZS5mcmFnbWVudFNoYWRlcixzaWRlOjEsZGVwdGhUZXN0OiExLGRlcHRoV3JpdGU6ITEsZm9nOiExfSkpLHMuZ2VvbWV0cnkuZGVsZXRlQXR0cmlidXRlKCJub3JtYWwiKSxzLmdlb21ldHJ5LmRlbGV0ZUF0dHJpYnV0ZSgidXYiKSxzLm9uQmVmb3JlUmVuZGVyPWZ1bmN0aW9uKHQsZSxuKXt0aGlzLm1hdHJpeFdvcmxkLmNvcHlQb3NpdGlvbihuLm1hdHJpeFdvcmxkKX0sT2JqZWN0LmRlZmluZVByb3BlcnR5KHMubWF0ZXJpYWwsImVudk1hcCIse2dldDpmdW5jdGlvbigpe3JldHVybiB0aGlzLnVuaWZvcm1zLmVudk1hcC52YWx1ZX19KSxpLnVwZGF0ZShzKSksZy5pc1dlYkdMQ3ViZVJlbmRlclRhcmdldCYmKGc9Zy50ZXh0dXJlKSxzLm1hdGVyaWFsLnVuaWZvcm1zLmVudk1hcC52YWx1ZT1nLHMubWF0ZXJpYWwudW5pZm9ybXMuZmxpcEVudk1hcC52YWx1ZT1nLmlzQ3ViZVRleHR1cmUmJmcuX25lZWRzRmxpcEVudk1hcD8tMToxLGM9PT1nJiZ1PT09Zy52ZXJzaW9uJiZoPT09dC50b25lTWFwcGluZ3x8KHMubWF0ZXJpYWwubmVlZHNVcGRhdGU9ITAsYz1nLHU9Zy52ZXJzaW9uLGg9dC50b25lTWFwcGluZyksbi51bnNoaWZ0KHMscy5nZW9tZXRyeSxzLm1hdGVyaWFsLDAsMCxudWxsKSk6ZyYmZy5pc1RleHR1cmUmJih2b2lkIDA9PT1hJiYoYT1uZXcgUFZ0KG5ldyBLVnQoMiwyKSxuZXcgRFZ0KHtuYW1lOiJCYWNrZ3JvdW5kTWF0ZXJpYWwiLHVuaWZvcm1zOk9WdChRVnQuYmFja2dyb3VuZC51bmlmb3JtcyksdmVydGV4U2hhZGVyOlFWdC5iYWNrZ3JvdW5kLnZlcnRleFNoYWRlcixmcmFnbWVudFNoYWRlcjpRVnQuYmFja2dyb3VuZC5mcmFnbWVudFNoYWRlcixzaWRlOjAsZGVwdGhUZXN0OiExLGRlcHRoV3JpdGU6ITEsZm9nOiExfSkpLGEuZ2VvbWV0cnkuZGVsZXRlQXR0cmlidXRlKCJub3JtYWwiKSxPYmplY3QuZGVmaW5lUHJvcGVydHkoYS5tYXRlcmlhbCwibWFwIix7Z2V0OmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMudW5pZm9ybXMudDJELnZhbHVlfX0pLGkudXBkYXRlKGEpKSxhLm1hdGVyaWFsLnVuaWZvcm1zLnQyRC52YWx1ZT1nLCEwPT09Zy5tYXRyaXhBdXRvVXBkYXRlJiZnLnVwZGF0ZU1hdHJpeCgpLGEubWF0ZXJpYWwudW5pZm9ybXMudXZUcmFuc2Zvcm0udmFsdWUuY29weShnLm1hdHJpeCksYz09PWcmJnU9PT1nLnZlcnNpb24mJmg9PT10LnRvbmVNYXBwaW5nfHwoYS5tYXRlcmlhbC5uZWVkc1VwZGF0ZT0hMCxjPWcsdT1nLnZlcnNpb24saD10LnRvbmVNYXBwaW5nKSxuLnVuc2hpZnQoYSxhLmdlb21ldHJ5LGEubWF0ZXJpYWwsMCwwLG51bGwpKX19fWZ1bmN0aW9uIGVqdCh0LGUsbixpKXtjb25zdCByPXQuZ2V0UGFyYW1ldGVyKDM0OTIxKSxvPWkuaXNXZWJHTDI/bnVsbDplLmdldCgiT0VTX3ZlcnRleF9hcnJheV9vYmplY3QiKSxhPWkuaXNXZWJHTDJ8fG51bGwhPT1vLHM9e30sbD1kKG51bGwpO2xldCBjPWw7ZnVuY3Rpb24gdShlKXtyZXR1cm4gaS5pc1dlYkdMMj90LmJpbmRWZXJ0ZXhBcnJheShlKTpvLmJpbmRWZXJ0ZXhBcnJheU9FUyhlKX1mdW5jdGlvbiBoKGUpe3JldHVybiBpLmlzV2ViR0wyP3QuZGVsZXRlVmVydGV4QXJyYXkoZSk6by5kZWxldGVWZXJ0ZXhBcnJheU9FUyhlKX1mdW5jdGlvbiBkKHQpe2NvbnN0IGU9W10sbj1bXSxpPVtdO2ZvcihsZXQgdD0wO3Q8cjt0KyspZVt0XT0wLG5bdF09MCxpW3RdPTA7cmV0dXJue2dlb21ldHJ5Om51bGwscHJvZ3JhbTpudWxsLHdpcmVmcmFtZTohMSxuZXdBdHRyaWJ1dGVzOmUsZW5hYmxlZEF0dHJpYnV0ZXM6bixhdHRyaWJ1dGVEaXZpc29yczppLG9iamVjdDp0LGF0dHJpYnV0ZXM6e30saW5kZXg6bnVsbH19ZnVuY3Rpb24gcCgpe2NvbnN0IHQ9Yy5uZXdBdHRyaWJ1dGVzO2ZvcihsZXQgZT0wLG49dC5sZW5ndGg7ZTxuO2UrKyl0W2VdPTB9ZnVuY3Rpb24gZih0KXttKHQsMCl9ZnVuY3Rpb24gbShuLHIpe2NvbnN0IG89Yy5lbmFibGVkQXR0cmlidXRlcyxhPWMuYXR0cmlidXRlRGl2aXNvcnM7Yy5uZXdBdHRyaWJ1dGVzW25dPTEsMD09PW9bbl0mJih0LmVuYWJsZVZlcnRleEF0dHJpYkFycmF5KG4pLG9bbl09MSksYVtuXSE9PXImJigoaS5pc1dlYkdMMj90OmUuZ2V0KCJBTkdMRV9pbnN0YW5jZWRfYXJyYXlzIikpW2kuaXNXZWJHTDI/InZlcnRleEF0dHJpYkRpdmlzb3IiOiJ2ZXJ0ZXhBdHRyaWJEaXZpc29yQU5HTEUiXShuLHIpLGFbbl09cil9ZnVuY3Rpb24gZygpe2NvbnN0IGU9Yy5uZXdBdHRyaWJ1dGVzLG49Yy5lbmFibGVkQXR0cmlidXRlcztmb3IobGV0IGk9MCxyPW4ubGVuZ3RoO2k8cjtpKyspbltpXSE9PWVbaV0mJih0LmRpc2FibGVWZXJ0ZXhBdHRyaWJBcnJheShpKSxuW2ldPTApfWZ1bmN0aW9uIF8oZSxuLHIsbyxhLHMpeyEwIT09aS5pc1dlYkdMMnx8NTEyNCE9PXImJjUxMjUhPT1yP3QudmVydGV4QXR0cmliUG9pbnRlcihlLG4scixvLGEscyk6dC52ZXJ0ZXhBdHRyaWJJUG9pbnRlcihlLG4scixhLHMpfWZ1bmN0aW9uIHkoKXt2KCksYyE9PWwmJihjPWwsdShjLm9iamVjdCkpfWZ1bmN0aW9uIHYoKXtsLmdlb21ldHJ5PW51bGwsbC5wcm9ncmFtPW51bGwsbC53aXJlZnJhbWU9ITF9cmV0dXJue3NldHVwOmZ1bmN0aW9uIGIocixsLGgseSx2KXtsZXQgYj0hMTtpZihhKXtjb25zdCBlPShmdW5jdGlvbiB4KGUsbixyKXtjb25zdCBhPSEwPT09ci53aXJlZnJhbWU7bGV0IGw9c1tlLmlkXTt2b2lkIDA9PT1sJiYobD17fSxzW2UuaWRdPWwpO2xldCBjPWxbbi5pZF07dm9pZCAwPT09YyYmKGM9e30sbFtuLmlkXT1jKTtsZXQgdT1jW2FdO3JldHVybiB2b2lkIDA9PT11JiYodT1kKChmdW5jdGlvbiBoKCl7cmV0dXJuIGkuaXNXZWJHTDI/dC5jcmVhdGVWZXJ0ZXhBcnJheSgpOm8uY3JlYXRlVmVydGV4QXJyYXlPRVMoKX0pKCkpLGNbYV09dSksdX0pKHksaCxsKTtjIT09ZSYmKGM9ZSx1KGMub2JqZWN0KSksYj0oZnVuY3Rpb24gdyh0LGUpe2NvbnN0IG49Yy5hdHRyaWJ1dGVzLGk9dC5hdHRyaWJ1dGVzO2xldCByPTA7Zm9yKGNvbnN0IHQgaW4gaSl7Y29uc3QgZT1uW3RdLG89aVt0XTtpZih2b2lkIDA9PT1lKXJldHVybiEwO2lmKGUuYXR0cmlidXRlIT09bylyZXR1cm4hMDtpZihlLmRhdGEhPT1vLmRhdGEpcmV0dXJuITA7cisrfXJldHVybiBjLmF0dHJpYnV0ZXNOdW0hPT1yfHxjLmluZGV4IT09ZX0pKHksdiksYiYmKGZ1bmN0aW9uIFModCxlKXtjb25zdCBuPXt9LGk9dC5hdHRyaWJ1dGVzO2xldCByPTA7Zm9yKGNvbnN0IHQgaW4gaSl7Y29uc3QgZT1pW3RdLG89e307by5hdHRyaWJ1dGU9ZSxlLmRhdGEmJihvLmRhdGE9ZS5kYXRhKSxuW3RdPW8scisrfWMuYXR0cmlidXRlcz1uLGMuYXR0cmlidXRlc051bT1yLGMuaW5kZXg9ZX0pKHksdil9ZWxzZXtjb25zdCB0PSEwPT09bC53aXJlZnJhbWU7Yy5nZW9tZXRyeT09PXkuaWQmJmMucHJvZ3JhbT09PWguaWQmJmMud2lyZWZyYW1lPT09dHx8KGMuZ2VvbWV0cnk9eS5pZCxjLnByb2dyYW09aC5pZCxjLndpcmVmcmFtZT10LGI9ITApfSEwPT09ci5pc0luc3RhbmNlZE1lc2gmJihiPSEwKSxudWxsIT09diYmbi51cGRhdGUodiwzNDk2MyksYiYmKChmdW5jdGlvbiBNKHIsbyxhLHMpe2lmKCExPT09aS5pc1dlYkdMMiYmKHIuaXNJbnN0YW5jZWRNZXNofHxzLmlzSW5zdGFuY2VkQnVmZmVyR2VvbWV0cnkpJiZudWxsPT09ZS5nZXQoIkFOR0xFX2luc3RhbmNlZF9hcnJheXMiKSlyZXR1cm47cCgpO2NvbnN0IGw9cy5hdHRyaWJ1dGVzLGM9YS5nZXRBdHRyaWJ1dGVzKCksdT1vLmRlZmF1bHRBdHRyaWJ1dGVWYWx1ZXM7Zm9yKGNvbnN0IGUgaW4gYyl7Y29uc3QgaT1jW2VdO2lmKGk+PTApe2NvbnN0IG89bFtlXTtpZih2b2lkIDAhPT1vKXtjb25zdCBlPW8ubm9ybWFsaXplZCxyPW8uaXRlbVNpemUsYT1uLmdldChvKTtpZih2b2lkIDA9PT1hKWNvbnRpbnVlO2NvbnN0IGw9YS5idWZmZXIsYz1hLnR5cGUsdT1hLmJ5dGVzUGVyRWxlbWVudDtpZihvLmlzSW50ZXJsZWF2ZWRCdWZmZXJBdHRyaWJ1dGUpe2NvbnN0IG49by5kYXRhLGE9bi5zdHJpZGUsaD1vLm9mZnNldDtuJiZuLmlzSW5zdGFuY2VkSW50ZXJsZWF2ZWRCdWZmZXI/KG0oaSxuLm1lc2hQZXJBdHRyaWJ1dGUpLHZvaWQgMD09PXMuX21heEluc3RhbmNlQ291bnQmJihzLl9tYXhJbnN0YW5jZUNvdW50PW4ubWVzaFBlckF0dHJpYnV0ZSpuLmNvdW50KSk6ZihpKSx0LmJpbmRCdWZmZXIoMzQ5NjIsbCksXyhpLHIsYyxlLGEqdSxoKnUpfWVsc2Ugby5pc0luc3RhbmNlZEJ1ZmZlckF0dHJpYnV0ZT8obShpLG8ubWVzaFBlckF0dHJpYnV0ZSksdm9pZCAwPT09cy5fbWF4SW5zdGFuY2VDb3VudCYmKHMuX21heEluc3RhbmNlQ291bnQ9by5tZXNoUGVyQXR0cmlidXRlKm8uY291bnQpKTpmKGkpLHQuYmluZEJ1ZmZlcigzNDk2MixsKSxfKGkscixjLGUsMCwwKX1lbHNlIGlmKCJpbnN0YW5jZU1hdHJpeCI9PT1lKXtjb25zdCBlPW4uZ2V0KHIuaW5zdGFuY2VNYXRyaXgpO2lmKHZvaWQgMD09PWUpY29udGludWU7Y29uc3Qgbz1lLmJ1ZmZlcixhPWUudHlwZTttKGkrMCwxKSxtKGkrMSwxKSxtKGkrMiwxKSxtKGkrMywxKSx0LmJpbmRCdWZmZXIoMzQ5NjIsbyksdC52ZXJ0ZXhBdHRyaWJQb2ludGVyKGkrMCw0LGEsITEsNjQsMCksdC52ZXJ0ZXhBdHRyaWJQb2ludGVyKGkrMSw0LGEsITEsNjQsMTYpLHQudmVydGV4QXR0cmliUG9pbnRlcihpKzIsNCxhLCExLDY0LDMyKSx0LnZlcnRleEF0dHJpYlBvaW50ZXIoaSszLDQsYSwhMSw2NCw0OCl9ZWxzZSBpZigiaW5zdGFuY2VDb2xvciI9PT1lKXtjb25zdCBlPW4uZ2V0KHIuaW5zdGFuY2VDb2xvcik7aWYodm9pZCAwPT09ZSljb250aW51ZTtjb25zdCBvPWUuYnVmZmVyLGE9ZS50eXBlO20oaSwxKSx0LmJpbmRCdWZmZXIoMzQ5NjIsbyksdC52ZXJ0ZXhBdHRyaWJQb2ludGVyKGksMyxhLCExLDEyLDApfWVsc2UgaWYodm9pZCAwIT09dSl7Y29uc3Qgbj11W2VdO2lmKHZvaWQgMCE9PW4pc3dpdGNoKG4ubGVuZ3RoKXtjYXNlIDI6dC52ZXJ0ZXhBdHRyaWIyZnYoaSxuKTticmVhaztjYXNlIDM6dC52ZXJ0ZXhBdHRyaWIzZnYoaSxuKTticmVhaztjYXNlIDQ6dC52ZXJ0ZXhBdHRyaWI0ZnYoaSxuKTticmVhaztkZWZhdWx0OnQudmVydGV4QXR0cmliMWZ2KGksbil9fX19ZygpfSkocixsLGgseSksbnVsbCE9PXYmJnQuYmluZEJ1ZmZlcigzNDk2MyxuLmdldCh2KS5idWZmZXIpKX0scmVzZXQ6eSxyZXNldERlZmF1bHRTdGF0ZTp2LGRpc3Bvc2U6ZnVuY3Rpb24geCgpe3koKTtmb3IoY29uc3QgdCBpbiBzKXtjb25zdCBlPXNbdF07Zm9yKGNvbnN0IHQgaW4gZSl7Y29uc3Qgbj1lW3RdO2Zvcihjb25zdCB0IGluIG4paChuW3RdLm9iamVjdCksZGVsZXRlIG5bdF07ZGVsZXRlIGVbdF19ZGVsZXRlIHNbdF19fSxyZWxlYXNlU3RhdGVzT2ZHZW9tZXRyeTpmdW5jdGlvbiB3KHQpe2lmKHZvaWQgMD09PXNbdC5pZF0pcmV0dXJuO2NvbnN0IGU9c1t0LmlkXTtmb3IoY29uc3QgdCBpbiBlKXtjb25zdCBuPWVbdF07Zm9yKGNvbnN0IHQgaW4gbiloKG5bdF0ub2JqZWN0KSxkZWxldGUgblt0XTtkZWxldGUgZVt0XX1kZWxldGUgc1t0LmlkXX0scmVsZWFzZVN0YXRlc09mUHJvZ3JhbTpmdW5jdGlvbiBTKHQpe2Zvcihjb25zdCBlIGluIHMpe2NvbnN0IG49c1tlXTtpZih2b2lkIDA9PT1uW3QuaWRdKWNvbnRpbnVlO2NvbnN0IGk9blt0LmlkXTtmb3IoY29uc3QgdCBpbiBpKWgoaVt0XS5vYmplY3QpLGRlbGV0ZSBpW3RdO2RlbGV0ZSBuW3QuaWRdfX0saW5pdEF0dHJpYnV0ZXM6cCxlbmFibGVBdHRyaWJ1dGU6ZixkaXNhYmxlVW51c2VkQXR0cmlidXRlczpnfX1mdW5jdGlvbiBuanQodCxlLG4saSl7Y29uc3Qgcj1pLmlzV2ViR0wyO2xldCBvO3RoaXMuc2V0TW9kZT1mdW5jdGlvbiBhKHQpe289dH0sdGhpcy5yZW5kZXI9ZnVuY3Rpb24gcyhlLGkpe3QuZHJhd0FycmF5cyhvLGUsaSksbi51cGRhdGUoaSxvLDEpfSx0aGlzLnJlbmRlckluc3RhbmNlcz1mdW5jdGlvbiBsKGksYSxzKXtpZigwPT09cylyZXR1cm47bGV0IGwsYztpZihyKWw9dCxjPSJkcmF3QXJyYXlzSW5zdGFuY2VkIjtlbHNlIGlmKGw9ZS5nZXQoIkFOR0xFX2luc3RhbmNlZF9hcnJheXMiKSxjPSJkcmF3QXJyYXlzSW5zdGFuY2VkQU5HTEUiLG51bGw9PT1sKXJldHVybiB2b2lkIGNvbnNvbGUuZXJyb3IoIlRIUkVFLldlYkdMQnVmZmVyUmVuZGVyZXI6IHVzaW5nIFRIUkVFLkluc3RhbmNlZEJ1ZmZlckdlb21ldHJ5IGJ1dCBoYXJkd2FyZSBkb2VzIG5vdCBzdXBwb3J0IGV4dGVuc2lvbiBBTkdMRV9pbnN0YW5jZWRfYXJyYXlzLiIpO2xbY10obyxpLGEscyksbi51cGRhdGUoYSxvLHMpfX1mdW5jdGlvbiBpanQodCxlLG4pe2xldCBpO2Z1bmN0aW9uIHIoZSl7aWYoImhpZ2hwIj09PWUpe2lmKHQuZ2V0U2hhZGVyUHJlY2lzaW9uRm9ybWF0KDM1NjMzLDM2MzM4KS5wcmVjaXNpb24+MCYmdC5nZXRTaGFkZXJQcmVjaXNpb25Gb3JtYXQoMzU2MzIsMzYzMzgpLnByZWNpc2lvbj4wKXJldHVybiJoaWdocCI7ZT0ibWVkaXVtcCJ9cmV0dXJuIm1lZGl1bXAiPT09ZSYmdC5nZXRTaGFkZXJQcmVjaXNpb25Gb3JtYXQoMzU2MzMsMzYzMzcpLnByZWNpc2lvbj4wJiZ0LmdldFNoYWRlclByZWNpc2lvbkZvcm1hdCgzNTYzMiwzNjMzNykucHJlY2lzaW9uPjA/Im1lZGl1bXAiOiJsb3dwIn1jb25zdCBvPSJ1bmRlZmluZWQiIT10eXBlb2YgV2ViR0wyUmVuZGVyaW5nQ29udGV4dCYmdCBpbnN0YW5jZW9mIFdlYkdMMlJlbmRlcmluZ0NvbnRleHR8fCJ1bmRlZmluZWQiIT10eXBlb2YgV2ViR0wyQ29tcHV0ZVJlbmRlcmluZ0NvbnRleHQmJnQgaW5zdGFuY2VvZiBXZWJHTDJDb21wdXRlUmVuZGVyaW5nQ29udGV4dDtsZXQgYT12b2lkIDAhPT1uLnByZWNpc2lvbj9uLnByZWNpc2lvbjoiaGlnaHAiO2NvbnN0IHM9cihhKTtzIT09YSYmKGNvbnNvbGUud2FybigiVEhSRUUuV2ViR0xSZW5kZXJlcjoiLGEsIm5vdCBzdXBwb3J0ZWQsIHVzaW5nIixzLCJpbnN0ZWFkLiIpLGE9cyk7Y29uc3QgbD0hMD09PW4ubG9nYXJpdGhtaWNEZXB0aEJ1ZmZlcixjPXQuZ2V0UGFyYW1ldGVyKDM0OTMwKSx1PXQuZ2V0UGFyYW1ldGVyKDM1NjYwKSxoPXQuZ2V0UGFyYW1ldGVyKDMzNzkpLGQ9dC5nZXRQYXJhbWV0ZXIoMzQwNzYpLHA9dC5nZXRQYXJhbWV0ZXIoMzQ5MjEpLGY9dC5nZXRQYXJhbWV0ZXIoMzYzNDcpLG09dC5nZXRQYXJhbWV0ZXIoMzYzNDgpLGc9dC5nZXRQYXJhbWV0ZXIoMzYzNDkpLF89dT4wLHk9b3x8ISFlLmdldCgiT0VTX3RleHR1cmVfZmxvYXQiKTtyZXR1cm57aXNXZWJHTDI6byxnZXRNYXhBbmlzb3Ryb3B5OmZ1bmN0aW9uIHYoKXtpZih2b2lkIDAhPT1pKXJldHVybiBpO2NvbnN0IG49ZS5nZXQoIkVYVF90ZXh0dXJlX2ZpbHRlcl9hbmlzb3Ryb3BpYyIpO3JldHVybiBpPW51bGwhPT1uP3QuZ2V0UGFyYW1ldGVyKG4uTUFYX1RFWFRVUkVfTUFYX0FOSVNPVFJPUFlfRVhUKTowLGl9LGdldE1heFByZWNpc2lvbjpyLHByZWNpc2lvbjphLGxvZ2FyaXRobWljRGVwdGhCdWZmZXI6bCxtYXhUZXh0dXJlczpjLG1heFZlcnRleFRleHR1cmVzOnUsbWF4VGV4dHVyZVNpemU6aCxtYXhDdWJlbWFwU2l6ZTpkLG1heEF0dHJpYnV0ZXM6cCxtYXhWZXJ0ZXhVbmlmb3JtczpmLG1heFZhcnlpbmdzOm0sbWF4RnJhZ21lbnRVbmlmb3JtczpnLHZlcnRleFRleHR1cmVzOl8sZmxvYXRGcmFnbWVudFRleHR1cmVzOnksZmxvYXRWZXJ0ZXhUZXh0dXJlczpfJiZ5LG1heFNhbXBsZXM6bz90LmdldFBhcmFtZXRlcigzNjE4Myk6MH19ZnVuY3Rpb24gcmp0KHQpe2NvbnN0IGU9dGhpcztsZXQgbj1udWxsLGk9MCxyPSExLG89ITE7Y29uc3QgYT1uZXcgeEZ0LHM9bmV3IGNIdCxsPXt2YWx1ZTpudWxsLG5lZWRzVXBkYXRlOiExfTtmdW5jdGlvbiBjKCl7bC52YWx1ZSE9PW4mJihsLnZhbHVlPW4sbC5uZWVkc1VwZGF0ZT1pPjApLGUubnVtUGxhbmVzPWksZS5udW1JbnRlcnNlY3Rpb249MH1mdW5jdGlvbiB1KHQsbixpLHIpe2NvbnN0IG89bnVsbCE9PXQ/dC5sZW5ndGg6MDtsZXQgYz1udWxsO2lmKDAhPT1vKXtpZihjPWwudmFsdWUsITAhPT1yfHxudWxsPT09Yyl7Y29uc3QgZT1pKzQqbyxyPW4ubWF0cml4V29ybGRJbnZlcnNlO3MuZ2V0Tm9ybWFsTWF0cml4KHIpLChudWxsPT09Y3x8Yy5sZW5ndGg8ZSkmJihjPW5ldyBGbG9hdDMyQXJyYXkoZSkpO2ZvcihsZXQgZT0wLG49aTtlIT09bzsrK2Usbis9NClhLmNvcHkodFtlXSkuYXBwbHlNYXRyaXg0KHIscyksYS5ub3JtYWwudG9BcnJheShjLG4pLGNbbiszXT1hLmNvbnN0YW50fWwudmFsdWU9YyxsLm5lZWRzVXBkYXRlPSEwfXJldHVybiBlLm51bVBsYW5lcz1vLGUubnVtSW50ZXJzZWN0aW9uPTAsY310aGlzLnVuaWZvcm09bCx0aGlzLm51bVBsYW5lcz0wLHRoaXMubnVtSW50ZXJzZWN0aW9uPTAsdGhpcy5pbml0PWZ1bmN0aW9uKHQsZSxvKXtjb25zdCBhPTAhPT10Lmxlbmd0aHx8ZXx8MCE9PWl8fHI7cmV0dXJuIHI9ZSxuPXUodCxvLDApLGk9dC5sZW5ndGgsYX0sdGhpcy5iZWdpblNoYWRvd3M9ZnVuY3Rpb24oKXtvPSEwLHUobnVsbCl9LHRoaXMuZW5kU2hhZG93cz1mdW5jdGlvbigpe289ITEsYygpfSx0aGlzLnNldFN0YXRlPWZ1bmN0aW9uKGUsYSxzKXtjb25zdCBoPWUuY2xpcHBpbmdQbGFuZXMsZD1lLmNsaXBJbnRlcnNlY3Rpb24scD1lLmNsaXBTaGFkb3dzLGY9dC5nZXQoZSk7aWYoIXJ8fG51bGw9PT1ofHwwPT09aC5sZW5ndGh8fG8mJiFwKW8/dShudWxsKTpjKCk7ZWxzZXtjb25zdCB0PW8/MDppLGU9NCp0O2xldCByPWYuY2xpcHBpbmdTdGF0ZXx8bnVsbDtsLnZhbHVlPXIscj11KGgsYSxlLHMpO2ZvcihsZXQgdD0wO3QhPT1lOysrdClyW3RdPW5bdF07Zi5jbGlwcGluZ1N0YXRlPXIsdGhpcy5udW1JbnRlcnNlY3Rpb249ZD90aGlzLm51bVBsYW5lczowLHRoaXMubnVtUGxhbmVzKz10fX19ZnVuY3Rpb24gb2p0KHQpe2xldCBlPW5ldyBXZWFrTWFwO2Z1bmN0aW9uIG4odCxlKXtyZXR1cm4gZT09PWFCdD90Lm1hcHBpbmc9ckJ0OmU9PT1zQnQmJih0Lm1hcHBpbmc9b0J0KSx0fWZ1bmN0aW9uIGkodCl7Y29uc3Qgbj10LnRhcmdldDtuLnJlbW92ZUV2ZW50TGlzdGVuZXIoImRpc3Bvc2UiLGkpO2NvbnN0IHI9ZS5nZXQobik7dm9pZCAwIT09ciYmKGUuZGVsZXRlKG4pLHIuZGlzcG9zZSgpKX1yZXR1cm57Z2V0OmZ1bmN0aW9uIHIobyl7aWYobyYmby5pc1RleHR1cmUpe2NvbnN0IHI9by5tYXBwaW5nO2lmKHI9PT1hQnR8fHI9PT1zQnQpe2lmKGUuaGFzKG8pKXJldHVybiBuKGUuZ2V0KG8pLnRleHR1cmUsby5tYXBwaW5nKTt7Y29uc3Qgcj1vLmltYWdlO2lmKHImJnIuaGVpZ2h0PjApe2NvbnN0IGE9dC5nZXRSZW5kZXJMaXN0KCkscz10LmdldFJlbmRlclRhcmdldCgpLGw9bmV3IFVWdChyLmhlaWdodC8yKTtyZXR1cm4gbC5mcm9tRXF1aXJlY3Rhbmd1bGFyVGV4dHVyZSh0LG8pLGUuc2V0KG8sbCksdC5zZXRSZW5kZXJUYXJnZXQocyksdC5zZXRSZW5kZXJMaXN0KGEpLG8uYWRkRXZlbnRMaXN0ZW5lcigiZGlzcG9zZSIsaSksbihsLnRleHR1cmUsby5tYXBwaW5nKX1yZXR1cm4gbnVsbH19fXJldHVybiBvfSxkaXNwb3NlOmZ1bmN0aW9uIG8oKXtlPW5ldyBXZWFrTWFwfX19ZnVuY3Rpb24gYWp0KHQpe2NvbnN0IGU9e307ZnVuY3Rpb24gbihuKXtpZih2b2lkIDAhPT1lW25dKXJldHVybiBlW25dO2xldCBpO3N3aXRjaChuKXtjYXNlIldFQkdMX2RlcHRoX3RleHR1cmUiOmk9dC5nZXRFeHRlbnNpb24oIldFQkdMX2RlcHRoX3RleHR1cmUiKXx8dC5nZXRFeHRlbnNpb24oIk1PWl9XRUJHTF9kZXB0aF90ZXh0dXJlIil8fHQuZ2V0RXh0ZW5zaW9uKCJXRUJLSVRfV0VCR0xfZGVwdGhfdGV4dHVyZSIpO2JyZWFrO2Nhc2UiRVhUX3RleHR1cmVfZmlsdGVyX2FuaXNvdHJvcGljIjppPXQuZ2V0RXh0ZW5zaW9uKCJFWFRfdGV4dHVyZV9maWx0ZXJfYW5pc290cm9waWMiKXx8dC5nZXRFeHRlbnNpb24oIk1PWl9FWFRfdGV4dHVyZV9maWx0ZXJfYW5pc290cm9waWMiKXx8dC5nZXRFeHRlbnNpb24oIldFQktJVF9FWFRfdGV4dHVyZV9maWx0ZXJfYW5pc290cm9waWMiKTticmVhaztjYXNlIldFQkdMX2NvbXByZXNzZWRfdGV4dHVyZV9zM3RjIjppPXQuZ2V0RXh0ZW5zaW9uKCJXRUJHTF9jb21wcmVzc2VkX3RleHR1cmVfczN0YyIpfHx0LmdldEV4dGVuc2lvbigiTU9aX1dFQkdMX2NvbXByZXNzZWRfdGV4dHVyZV9zM3RjIil8fHQuZ2V0RXh0ZW5zaW9uKCJXRUJLSVRfV0VCR0xfY29tcHJlc3NlZF90ZXh0dXJlX3MzdGMiKTticmVhaztjYXNlIldFQkdMX2NvbXByZXNzZWRfdGV4dHVyZV9wdnJ0YyI6aT10LmdldEV4dGVuc2lvbigiV0VCR0xfY29tcHJlc3NlZF90ZXh0dXJlX3B2cnRjIil8fHQuZ2V0RXh0ZW5zaW9uKCJXRUJLSVRfV0VCR0xfY29tcHJlc3NlZF90ZXh0dXJlX3B2cnRjIik7YnJlYWs7ZGVmYXVsdDppPXQuZ2V0RXh0ZW5zaW9uKG4pfXJldHVybiBlW25dPWksaX1yZXR1cm57aGFzOmZ1bmN0aW9uKHQpe3JldHVybiBudWxsIT09bih0KX0saW5pdDpmdW5jdGlvbih0KXt0LmlzV2ViR0wyP24oIkVYVF9jb2xvcl9idWZmZXJfZmxvYXQiKToobigiV0VCR0xfZGVwdGhfdGV4dHVyZSIpLG4oIk9FU190ZXh0dXJlX2Zsb2F0IiksbigiT0VTX3RleHR1cmVfaGFsZl9mbG9hdCIpLG4oIk9FU190ZXh0dXJlX2hhbGZfZmxvYXRfbGluZWFyIiksbigiT0VTX3N0YW5kYXJkX2Rlcml2YXRpdmVzIiksbigiT0VTX2VsZW1lbnRfaW5kZXhfdWludCIpLG4oIk9FU192ZXJ0ZXhfYXJyYXlfb2JqZWN0IiksbigiQU5HTEVfaW5zdGFuY2VkX2FycmF5cyIpKSxuKCJPRVNfdGV4dHVyZV9mbG9hdF9saW5lYXIiKSxuKCJFWFRfY29sb3JfYnVmZmVyX2hhbGZfZmxvYXQiKX0sZ2V0OmZ1bmN0aW9uKHQpe2NvbnN0IGU9bih0KTtyZXR1cm4gbnVsbD09PWUmJmNvbnNvbGUud2FybigiVEhSRUUuV2ViR0xSZW5kZXJlcjogIit0KyIgZXh0ZW5zaW9uIG5vdCBzdXBwb3J0ZWQuIiksZX19fWZ1bmN0aW9uIHNqdCh0LGUsbixpKXtjb25zdCByPXt9LG89bmV3IFdlYWtNYXA7ZnVuY3Rpb24gYSh0KXtjb25zdCBzPXQudGFyZ2V0O251bGwhPT1zLmluZGV4JiZlLnJlbW92ZShzLmluZGV4KTtmb3IoY29uc3QgdCBpbiBzLmF0dHJpYnV0ZXMpZS5yZW1vdmUocy5hdHRyaWJ1dGVzW3RdKTtzLnJlbW92ZUV2ZW50TGlzdGVuZXIoImRpc3Bvc2UiLGEpLGRlbGV0ZSByW3MuaWRdO2NvbnN0IGw9by5nZXQocyk7bCYmKGUucmVtb3ZlKGwpLG8uZGVsZXRlKHMpKSxpLnJlbGVhc2VTdGF0ZXNPZkdlb21ldHJ5KHMpLCEwPT09cy5pc0luc3RhbmNlZEJ1ZmZlckdlb21ldHJ5JiZkZWxldGUgcy5fbWF4SW5zdGFuY2VDb3VudCxuLm1lbW9yeS5nZW9tZXRyaWVzLS19ZnVuY3Rpb24gcyh0KXtjb25zdCBuPVtdLGk9dC5pbmRleCxyPXQuYXR0cmlidXRlcy5wb3NpdGlvbjtsZXQgYT0wO2lmKG51bGwhPT1pKXtjb25zdCB0PWkuYXJyYXk7YT1pLnZlcnNpb247Zm9yKGxldCBlPTAsaT10Lmxlbmd0aDtlPGk7ZSs9Myl7Y29uc3QgaT10W2UrMF0scj10W2UrMV0sbz10W2UrMl07bi5wdXNoKGkscixyLG8sbyxpKX19ZWxzZXthPXIudmVyc2lvbjtmb3IobGV0IHQ9MCxlPXIuYXJyYXkubGVuZ3RoLzMtMTt0PGU7dCs9Myl7Y29uc3QgZT10KzAsaT10KzEscj10KzI7bi5wdXNoKGUsaSxpLHIscixlKX19Y29uc3Qgcz1uZXcoaVZ0KG4pPjY1NTM1P1FGdDpaRnQpKG4sMSk7cy52ZXJzaW9uPWE7Y29uc3QgbD1vLmdldCh0KTtsJiZlLnJlbW92ZShsKSxvLnNldCh0LHMpfXJldHVybntnZXQ6ZnVuY3Rpb24gbCh0LGUpe3JldHVybiEwPT09cltlLmlkXXx8KGUuYWRkRXZlbnRMaXN0ZW5lcigiZGlzcG9zZSIsYSkscltlLmlkXT0hMCxuLm1lbW9yeS5nZW9tZXRyaWVzKyspLGV9LHVwZGF0ZTpmdW5jdGlvbiBjKHQpe2NvbnN0IG49dC5hdHRyaWJ1dGVzO2Zvcihjb25zdCB0IGluIG4pZS51cGRhdGUoblt0XSwzNDk2Mik7Y29uc3QgaT10Lm1vcnBoQXR0cmlidXRlcztmb3IoY29uc3QgdCBpbiBpKXtjb25zdCBuPWlbdF07Zm9yKGxldCB0PTAsaT1uLmxlbmd0aDt0PGk7dCsrKWUudXBkYXRlKG5bdF0sMzQ5NjIpfX0sZ2V0V2lyZWZyYW1lQXR0cmlidXRlOmZ1bmN0aW9uIHUodCl7Y29uc3QgZT1vLmdldCh0KTtpZihlKXtjb25zdCBuPXQuaW5kZXg7bnVsbCE9PW4mJmUudmVyc2lvbjxuLnZlcnNpb24mJnModCl9ZWxzZSBzKHQpO3JldHVybiBvLmdldCh0KX19fWZ1bmN0aW9uIGxqdCh0LGUsbixpKXtjb25zdCByPWkuaXNXZWJHTDI7bGV0IG8sYSxzO3RoaXMuc2V0TW9kZT1mdW5jdGlvbiBsKHQpe289dH0sdGhpcy5zZXRJbmRleD1mdW5jdGlvbiBjKHQpe2E9dC50eXBlLHM9dC5ieXRlc1BlckVsZW1lbnR9LHRoaXMucmVuZGVyPWZ1bmN0aW9uIHUoZSxpKXt0LmRyYXdFbGVtZW50cyhvLGksYSxlKnMpLG4udXBkYXRlKGksbywxKX0sdGhpcy5yZW5kZXJJbnN0YW5jZXM9ZnVuY3Rpb24gaChpLGwsYyl7aWYoMD09PWMpcmV0dXJuO2xldCB1LGg7aWYocil1PXQsaD0iZHJhd0VsZW1lbnRzSW5zdGFuY2VkIjtlbHNlIGlmKHU9ZS5nZXQoIkFOR0xFX2luc3RhbmNlZF9hcnJheXMiKSxoPSJkcmF3RWxlbWVudHNJbnN0YW5jZWRBTkdMRSIsbnVsbD09PXUpcmV0dXJuIHZvaWQgY29uc29sZS5lcnJvcigiVEhSRUUuV2ViR0xJbmRleGVkQnVmZmVyUmVuZGVyZXI6IHVzaW5nIFRIUkVFLkluc3RhbmNlZEJ1ZmZlckdlb21ldHJ5IGJ1dCBoYXJkd2FyZSBkb2VzIG5vdCBzdXBwb3J0IGV4dGVuc2lvbiBBTkdMRV9pbnN0YW5jZWRfYXJyYXlzLiIpO3VbaF0obyxsLGEsaSpzLGMpLG4udXBkYXRlKGwsbyxjKX19ZnVuY3Rpb24gY2p0KHQpe2NvbnN0IGU9e2ZyYW1lOjAsY2FsbHM6MCx0cmlhbmdsZXM6MCxwb2ludHM6MCxsaW5lczowfTtyZXR1cm57bWVtb3J5OntnZW9tZXRyaWVzOjAsdGV4dHVyZXM6MH0scmVuZGVyOmUscHJvZ3JhbXM6bnVsbCxhdXRvUmVzZXQ6ITAscmVzZXQ6ZnVuY3Rpb24gbigpe2UuZnJhbWUrKyxlLmNhbGxzPTAsZS50cmlhbmdsZXM9MCxlLnBvaW50cz0wLGUubGluZXM9MH0sdXBkYXRlOmZ1bmN0aW9uIGkodCxuLHIpe3N3aXRjaChlLmNhbGxzKyssbil7Y2FzZSA0OmUudHJpYW5nbGVzKz1yKih0LzMpO2JyZWFrO2Nhc2UgMTplLmxpbmVzKz1yKih0LzIpO2JyZWFrO2Nhc2UgMzplLmxpbmVzKz1yKih0LTEpO2JyZWFrO2Nhc2UgMjplLmxpbmVzKz1yKnQ7YnJlYWs7Y2FzZSAwOmUucG9pbnRzKz1yKnQ7YnJlYWs7ZGVmYXVsdDpjb25zb2xlLmVycm9yKCJUSFJFRS5XZWJHTEluZm86IFVua25vd24gZHJhdyBtb2RlOiIsbil9fX19ZnVuY3Rpb24gdWp0KHQsZSl7cmV0dXJuIHRbMF0tZVswXX1mdW5jdGlvbiBoanQodCxlKXtyZXR1cm4gTWF0aC5hYnMoZVsxXSktTWF0aC5hYnModFsxXSl9ZnVuY3Rpb24gZGp0KHQpe2NvbnN0IGU9e30sbj1uZXcgRmxvYXQzMkFycmF5KDgpLGk9W107Zm9yKGxldCB0PTA7dDw4O3QrKylpW3RdPVt0LDBdO3JldHVybnt1cGRhdGU6ZnVuY3Rpb24gcihvLGEscyxsKXtjb25zdCBjPW8ubW9ycGhUYXJnZXRJbmZsdWVuY2VzLHU9dm9pZCAwPT09Yz8wOmMubGVuZ3RoO2xldCBoPWVbYS5pZF07aWYodm9pZCAwPT09aCl7aD1bXTtmb3IobGV0IHQ9MDt0PHU7dCsrKWhbdF09W3QsMF07ZVthLmlkXT1ofWZvcihsZXQgdD0wO3Q8dTt0Kyspe2NvbnN0IGU9aFt0XTtlWzBdPXQsZVsxXT1jW3RdfWguc29ydChoanQpO2ZvcihsZXQgdD0wO3Q8ODt0KyspdDx1JiZoW3RdWzFdPyhpW3RdWzBdPWhbdF1bMF0saVt0XVsxXT1oW3RdWzFdKTooaVt0XVswXT1OdW1iZXIuTUFYX1NBRkVfSU5URUdFUixpW3RdWzFdPTApO2kuc29ydCh1anQpO2NvbnN0IGQ9cy5tb3JwaFRhcmdldHMmJmEubW9ycGhBdHRyaWJ1dGVzLnBvc2l0aW9uLHA9cy5tb3JwaE5vcm1hbHMmJmEubW9ycGhBdHRyaWJ1dGVzLm5vcm1hbDtsZXQgZj0wO2ZvcihsZXQgdD0wO3Q8ODt0Kyspe2NvbnN0IGU9aVt0XSxyPWVbMF0sbz1lWzFdO3IhPT1OdW1iZXIuTUFYX1NBRkVfSU5URUdFUiYmbz8oZCYmYS5nZXRBdHRyaWJ1dGUoIm1vcnBoVGFyZ2V0Iit0KSE9PWRbcl0mJmEuc2V0QXR0cmlidXRlKCJtb3JwaFRhcmdldCIrdCxkW3JdKSxwJiZhLmdldEF0dHJpYnV0ZSgibW9ycGhOb3JtYWwiK3QpIT09cFtyXSYmYS5zZXRBdHRyaWJ1dGUoIm1vcnBoTm9ybWFsIit0LHBbcl0pLG5bdF09byxmKz1vKTooZCYmITA9PT1hLmhhc0F0dHJpYnV0ZSgibW9ycGhUYXJnZXQiK3QpJiZhLmRlbGV0ZUF0dHJpYnV0ZSgibW9ycGhUYXJnZXQiK3QpLHAmJiEwPT09YS5oYXNBdHRyaWJ1dGUoIm1vcnBoTm9ybWFsIit0KSYmYS5kZWxldGVBdHRyaWJ1dGUoIm1vcnBoTm9ybWFsIit0KSxuW3RdPTApfWNvbnN0IG09YS5tb3JwaFRhcmdldHNSZWxhdGl2ZT8xOjEtZjtsLmdldFVuaWZvcm1zKCkuc2V0VmFsdWUodCwibW9ycGhUYXJnZXRCYXNlSW5mbHVlbmNlIixtKSxsLmdldFVuaWZvcm1zKCkuc2V0VmFsdWUodCwibW9ycGhUYXJnZXRJbmZsdWVuY2VzIixuKX19fWZ1bmN0aW9uIHBqdCh0LGUsbixpKXtsZXQgcj1uZXcgV2Vha01hcDtmdW5jdGlvbiBvKHQpe2NvbnN0IGU9dC50YXJnZXQ7ZS5yZW1vdmVFdmVudExpc3RlbmVyKCJkaXNwb3NlIixvKSxuLnJlbW92ZShlLmluc3RhbmNlTWF0cml4KSxudWxsIT09ZS5pbnN0YW5jZUNvbG9yJiZuLnJlbW92ZShlLmluc3RhbmNlQ29sb3IpfXJldHVybnt1cGRhdGU6ZnVuY3Rpb24gYSh0KXtjb25zdCBhPWkucmVuZGVyLmZyYW1lLHM9ZS5nZXQodCx0Lmdlb21ldHJ5KTtyZXR1cm4gci5nZXQocykhPT1hJiYoZS51cGRhdGUocyksci5zZXQocyxhKSksdC5pc0luc3RhbmNlZE1lc2gmJighMT09PXQuaGFzRXZlbnRMaXN0ZW5lcigiZGlzcG9zZSIsbykmJnQuYWRkRXZlbnRMaXN0ZW5lcigiZGlzcG9zZSIsbyksbi51cGRhdGUodC5pbnN0YW5jZU1hdHJpeCwzNDk2MiksbnVsbCE9PXQuaW5zdGFuY2VDb2xvciYmbi51cGRhdGUodC5pbnN0YW5jZUNvbG9yLDM0OTYyKSksc30sZGlzcG9zZTpmdW5jdGlvbiBzKCl7cj1uZXcgV2Vha01hcH19fWZ1bmN0aW9uIGZqdCh0PW51bGwsZT0xLG49MSxpPTEpe3BIdC5jYWxsKHRoaXMsbnVsbCksdGhpcy5pbWFnZT17ZGF0YTp0LHdpZHRoOmUsaGVpZ2h0Om4sZGVwdGg6aX0sdGhpcy5tYWdGaWx0ZXI9cEJ0LHRoaXMubWluRmlsdGVyPXBCdCx0aGlzLndyYXBSPWhCdCx0aGlzLmdlbmVyYXRlTWlwbWFwcz0hMSx0aGlzLmZsaXBZPSExLHRoaXMubmVlZHNVcGRhdGU9ITB9ZnVuY3Rpb24gbWp0KHQ9bnVsbCxlPTEsbj0xLGk9MSl7cEh0LmNhbGwodGhpcyxudWxsKSx0aGlzLmltYWdlPXtkYXRhOnQsd2lkdGg6ZSxoZWlnaHQ6bixkZXB0aDppfSx0aGlzLm1hZ0ZpbHRlcj1wQnQsdGhpcy5taW5GaWx0ZXI9cEJ0LHRoaXMud3JhcFI9aEJ0LHRoaXMuZ2VuZXJhdGVNaXBtYXBzPSExLHRoaXMuZmxpcFk9ITEsdGhpcy5uZWVkc1VwZGF0ZT0hMH1RVnQucGh5c2ljYWw9e3VuaWZvcm1zOlJWdChbUVZ0LnN0YW5kYXJkLnVuaWZvcm1zLHtjbGVhcmNvYXQ6e3ZhbHVlOjB9LGNsZWFyY29hdE1hcDp7dmFsdWU6bnVsbH0sY2xlYXJjb2F0Um91Z2huZXNzOnt2YWx1ZTowfSxjbGVhcmNvYXRSb3VnaG5lc3NNYXA6e3ZhbHVlOm51bGx9LGNsZWFyY29hdE5vcm1hbFNjYWxlOnt2YWx1ZTpuZXcgbEh0KDEsMSl9LGNsZWFyY29hdE5vcm1hbE1hcDp7dmFsdWU6bnVsbH0sc2hlZW46e3ZhbHVlOm5ldyBIRnQoMCl9LHRyYW5zbWlzc2lvbjp7dmFsdWU6MH0sdHJhbnNtaXNzaW9uTWFwOnt2YWx1ZTpudWxsfX1dKSx2ZXJ0ZXhTaGFkZXI6WlZ0Lm1lc2hwaHlzaWNhbF92ZXJ0LGZyYWdtZW50U2hhZGVyOlpWdC5tZXNocGh5c2ljYWxfZnJhZ30sKGZqdC5wcm90b3R5cGU9T2JqZWN0LmNyZWF0ZShwSHQucHJvdG90eXBlKSkuY29uc3RydWN0b3I9Zmp0LGZqdC5wcm90b3R5cGUuaXNEYXRhVGV4dHVyZTJEQXJyYXk9ITAsKG1qdC5wcm90b3R5cGU9T2JqZWN0LmNyZWF0ZShwSHQucHJvdG90eXBlKSkuY29uc3RydWN0b3I9bWp0LG1qdC5wcm90b3R5cGUuaXNEYXRhVGV4dHVyZTNEPSEwO2NvbnN0IGdqdD1uZXcgcEh0LF9qdD1uZXcgZmp0LHlqdD1uZXcgbWp0LHZqdD1uZXcgalZ0LGJqdD1bXSx4anQ9W10sd2p0PW5ldyBGbG9hdDMyQXJyYXkoMTYpLFNqdD1uZXcgRmxvYXQzMkFycmF5KDkpLE1qdD1uZXcgRmxvYXQzMkFycmF5KDQpO2Z1bmN0aW9uIEVqdCh0LGUsbil7Y29uc3QgaT10WzBdO2lmKGk8PTB8fGk+MClyZXR1cm4gdDtjb25zdCByPWUqbjtsZXQgbz1ianRbcl07aWYodm9pZCAwPT09byYmKG89bmV3IEZsb2F0MzJBcnJheShyKSxianRbcl09byksMCE9PWUpe2kudG9BcnJheShvLDApO2ZvcihsZXQgaT0xLHI9MDtpIT09ZTsrK2kpcis9bix0W2ldLnRvQXJyYXkobyxyKX1yZXR1cm4gb31mdW5jdGlvbiBUanQodCxlKXtpZih0Lmxlbmd0aCE9PWUubGVuZ3RoKXJldHVybiExO2ZvcihsZXQgbj0wLGk9dC5sZW5ndGg7bjxpO24rKylpZih0W25dIT09ZVtuXSlyZXR1cm4hMTtyZXR1cm4hMH1mdW5jdGlvbiBBanQodCxlKXtmb3IobGV0IG49MCxpPWUubGVuZ3RoO248aTtuKyspdFtuXT1lW25dfWZ1bmN0aW9uIENqdCh0LGUpe2xldCBuPXhqdFtlXTt2b2lkIDA9PT1uJiYobj1uZXcgSW50MzJBcnJheShlKSx4anRbZV09bik7Zm9yKGxldCBpPTA7aSE9PWU7KytpKW5baV09dC5hbGxvY2F0ZVRleHR1cmVVbml0KCk7cmV0dXJuIG59ZnVuY3Rpb24ga2p0KHQsZSl7Y29uc3Qgbj10aGlzLmNhY2hlO25bMF0hPT1lJiYodC51bmlmb3JtMWYodGhpcy5hZGRyLGUpLG5bMF09ZSl9ZnVuY3Rpb24gTGp0KHQsZSl7Y29uc3Qgbj10aGlzLmNhY2hlO2lmKHZvaWQgMCE9PWUueCluWzBdPT09ZS54JiZuWzFdPT09ZS55fHwodC51bmlmb3JtMmYodGhpcy5hZGRyLGUueCxlLnkpLG5bMF09ZS54LG5bMV09ZS55KTtlbHNle2lmKFRqdChuLGUpKXJldHVybjt0LnVuaWZvcm0yZnYodGhpcy5hZGRyLGUpLEFqdChuLGUpfX1mdW5jdGlvbiBQanQodCxlKXtjb25zdCBuPXRoaXMuY2FjaGU7aWYodm9pZCAwIT09ZS54KW5bMF09PT1lLngmJm5bMV09PT1lLnkmJm5bMl09PT1lLnp8fCh0LnVuaWZvcm0zZih0aGlzLmFkZHIsZS54LGUueSxlLnopLG5bMF09ZS54LG5bMV09ZS55LG5bMl09ZS56KTtlbHNlIGlmKHZvaWQgMCE9PWUuciluWzBdPT09ZS5yJiZuWzFdPT09ZS5nJiZuWzJdPT09ZS5ifHwodC51bmlmb3JtM2YodGhpcy5hZGRyLGUucixlLmcsZS5iKSxuWzBdPWUucixuWzFdPWUuZyxuWzJdPWUuYik7ZWxzZXtpZihUanQobixlKSlyZXR1cm47dC51bmlmb3JtM2Z2KHRoaXMuYWRkcixlKSxBanQobixlKX19ZnVuY3Rpb24gSWp0KHQsZSl7Y29uc3Qgbj10aGlzLmNhY2hlO2lmKHZvaWQgMCE9PWUueCluWzBdPT09ZS54JiZuWzFdPT09ZS55JiZuWzJdPT09ZS56JiZuWzNdPT09ZS53fHwodC51bmlmb3JtNGYodGhpcy5hZGRyLGUueCxlLnksZS56LGUudyksblswXT1lLngsblsxXT1lLnksblsyXT1lLnosblszXT1lLncpO2Vsc2V7aWYoVGp0KG4sZSkpcmV0dXJuO3QudW5pZm9ybTRmdih0aGlzLmFkZHIsZSksQWp0KG4sZSl9fWZ1bmN0aW9uIE5qdCh0LGUpe2NvbnN0IG49dGhpcy5jYWNoZSxpPWUuZWxlbWVudHM7aWYodm9pZCAwPT09aSl7aWYoVGp0KG4sZSkpcmV0dXJuO3QudW5pZm9ybU1hdHJpeDJmdih0aGlzLmFkZHIsITEsZSksQWp0KG4sZSl9ZWxzZXtpZihUanQobixpKSlyZXR1cm47TWp0LnNldChpKSx0LnVuaWZvcm1NYXRyaXgyZnYodGhpcy5hZGRyLCExLE1qdCksQWp0KG4saSl9fWZ1bmN0aW9uIE9qdCh0LGUpe2NvbnN0IG49dGhpcy5jYWNoZSxpPWUuZWxlbWVudHM7aWYodm9pZCAwPT09aSl7aWYoVGp0KG4sZSkpcmV0dXJuO3QudW5pZm9ybU1hdHJpeDNmdih0aGlzLmFkZHIsITEsZSksQWp0KG4sZSl9ZWxzZXtpZihUanQobixpKSlyZXR1cm47U2p0LnNldChpKSx0LnVuaWZvcm1NYXRyaXgzZnYodGhpcy5hZGRyLCExLFNqdCksQWp0KG4saSl9fWZ1bmN0aW9uIFJqdCh0LGUpe2NvbnN0IG49dGhpcy5jYWNoZSxpPWUuZWxlbWVudHM7aWYodm9pZCAwPT09aSl7aWYoVGp0KG4sZSkpcmV0dXJuO3QudW5pZm9ybU1hdHJpeDRmdih0aGlzLmFkZHIsITEsZSksQWp0KG4sZSl9ZWxzZXtpZihUanQobixpKSlyZXR1cm47d2p0LnNldChpKSx0LnVuaWZvcm1NYXRyaXg0ZnYodGhpcy5hZGRyLCExLHdqdCksQWp0KG4saSl9fWZ1bmN0aW9uIHpqdCh0LGUsbil7Y29uc3QgaT10aGlzLmNhY2hlLHI9bi5hbGxvY2F0ZVRleHR1cmVVbml0KCk7aVswXSE9PXImJih0LnVuaWZvcm0xaSh0aGlzLmFkZHIsciksaVswXT1yKSxuLnNhZmVTZXRUZXh0dXJlMkQoZXx8Z2p0LHIpfWZ1bmN0aW9uIERqdCh0LGUsbil7Y29uc3QgaT10aGlzLmNhY2hlLHI9bi5hbGxvY2F0ZVRleHR1cmVVbml0KCk7aVswXSE9PXImJih0LnVuaWZvcm0xaSh0aGlzLmFkZHIsciksaVswXT1yKSxuLnNldFRleHR1cmUyREFycmF5KGV8fF9qdCxyKX1mdW5jdGlvbiBCanQodCxlLG4pe2NvbnN0IGk9dGhpcy5jYWNoZSxyPW4uYWxsb2NhdGVUZXh0dXJlVW5pdCgpO2lbMF0hPT1yJiYodC51bmlmb3JtMWkodGhpcy5hZGRyLHIpLGlbMF09ciksbi5zZXRUZXh0dXJlM0QoZXx8eWp0LHIpfWZ1bmN0aW9uIEhqdCh0LGUsbil7Y29uc3QgaT10aGlzLmNhY2hlLHI9bi5hbGxvY2F0ZVRleHR1cmVVbml0KCk7aVswXSE9PXImJih0LnVuaWZvcm0xaSh0aGlzLmFkZHIsciksaVswXT1yKSxuLnNhZmVTZXRUZXh0dXJlQ3ViZShlfHx2anQscil9ZnVuY3Rpb24gRmp0KHQsZSl7Y29uc3Qgbj10aGlzLmNhY2hlO25bMF0hPT1lJiYodC51bmlmb3JtMWkodGhpcy5hZGRyLGUpLG5bMF09ZSl9ZnVuY3Rpb24gVmp0KHQsZSl7Y29uc3Qgbj10aGlzLmNhY2hlO1RqdChuLGUpfHwodC51bmlmb3JtMml2KHRoaXMuYWRkcixlKSxBanQobixlKSl9ZnVuY3Rpb24gamp0KHQsZSl7Y29uc3Qgbj10aGlzLmNhY2hlO1RqdChuLGUpfHwodC51bmlmb3JtM2l2KHRoaXMuYWRkcixlKSxBanQobixlKSl9ZnVuY3Rpb24gVWp0KHQsZSl7Y29uc3Qgbj10aGlzLmNhY2hlO1RqdChuLGUpfHwodC51bmlmb3JtNGl2KHRoaXMuYWRkcixlKSxBanQobixlKSl9ZnVuY3Rpb24gR2p0KHQsZSl7Y29uc3Qgbj10aGlzLmNhY2hlO25bMF0hPT1lJiYodC51bmlmb3JtMXVpKHRoaXMuYWRkcixlKSxuWzBdPWUpfWZ1bmN0aW9uIFdqdCh0LGUpe3QudW5pZm9ybTFmdih0aGlzLmFkZHIsZSl9ZnVuY3Rpb24gcWp0KHQsZSl7dC51bmlmb3JtMWl2KHRoaXMuYWRkcixlKX1mdW5jdGlvbiBZanQodCxlKXt0LnVuaWZvcm0yaXYodGhpcy5hZGRyLGUpfWZ1bmN0aW9uIFhqdCh0LGUpe3QudW5pZm9ybTNpdih0aGlzLmFkZHIsZSl9ZnVuY3Rpb24gJGp0KHQsZSl7dC51bmlmb3JtNGl2KHRoaXMuYWRkcixlKX1mdW5jdGlvbiBLanQodCxlKXtjb25zdCBuPUVqdChlLHRoaXMuc2l6ZSwyKTt0LnVuaWZvcm0yZnYodGhpcy5hZGRyLG4pfWZ1bmN0aW9uIFpqdCh0LGUpe2NvbnN0IG49RWp0KGUsdGhpcy5zaXplLDMpO3QudW5pZm9ybTNmdih0aGlzLmFkZHIsbil9ZnVuY3Rpb24gSmp0KHQsZSl7Y29uc3Qgbj1FanQoZSx0aGlzLnNpemUsNCk7dC51bmlmb3JtNGZ2KHRoaXMuYWRkcixuKX1mdW5jdGlvbiBRanQodCxlKXtjb25zdCBuPUVqdChlLHRoaXMuc2l6ZSw0KTt0LnVuaWZvcm1NYXRyaXgyZnYodGhpcy5hZGRyLCExLG4pfWZ1bmN0aW9uIHRVdCh0LGUpe2NvbnN0IG49RWp0KGUsdGhpcy5zaXplLDkpO3QudW5pZm9ybU1hdHJpeDNmdih0aGlzLmFkZHIsITEsbil9ZnVuY3Rpb24gZVV0KHQsZSl7Y29uc3Qgbj1FanQoZSx0aGlzLnNpemUsMTYpO3QudW5pZm9ybU1hdHJpeDRmdih0aGlzLmFkZHIsITEsbil9ZnVuY3Rpb24gblV0KHQsZSxuKXtjb25zdCBpPWUubGVuZ3RoLHI9Q2p0KG4saSk7dC51bmlmb3JtMWl2KHRoaXMuYWRkcixyKTtmb3IobGV0IHQ9MDt0IT09aTsrK3Qpbi5zYWZlU2V0VGV4dHVyZTJEKGVbdF18fGdqdCxyW3RdKX1mdW5jdGlvbiBpVXQodCxlLG4pe2NvbnN0IGk9ZS5sZW5ndGgscj1DanQobixpKTt0LnVuaWZvcm0xaXYodGhpcy5hZGRyLHIpO2ZvcihsZXQgdD0wO3QhPT1pOysrdCluLnNhZmVTZXRUZXh0dXJlQ3ViZShlW3RdfHx2anQsclt0XSl9ZnVuY3Rpb24gclV0KHQsZSxuKXt0aGlzLmlkPXQsdGhpcy5hZGRyPW4sdGhpcy5jYWNoZT1bXSx0aGlzLnNldFZhbHVlPShmdW5jdGlvbiBpKHQpe3N3aXRjaCh0KXtjYXNlIDUxMjY6cmV0dXJuIGtqdDtjYXNlIDM1NjY0OnJldHVybiBManQ7Y2FzZSAzNTY2NTpyZXR1cm4gUGp0O2Nhc2UgMzU2NjY6cmV0dXJuIElqdDtjYXNlIDM1Njc0OnJldHVybiBOanQ7Y2FzZSAzNTY3NTpyZXR1cm4gT2p0O2Nhc2UgMzU2NzY6cmV0dXJuIFJqdDtjYXNlIDUxMjQ6Y2FzZSAzNTY3MDpyZXR1cm4gRmp0O2Nhc2UgMzU2Njc6Y2FzZSAzNTY3MTpyZXR1cm4gVmp0O2Nhc2UgMzU2Njg6Y2FzZSAzNTY3MjpyZXR1cm4gamp0O2Nhc2UgMzU2Njk6Y2FzZSAzNTY3MzpyZXR1cm4gVWp0O2Nhc2UgNTEyNTpyZXR1cm4gR2p0O2Nhc2UgMzU2Nzg6Y2FzZSAzNjE5ODpjYXNlIDM2Mjk4OmNhc2UgMzYzMDY6Y2FzZSAzNTY4MjpyZXR1cm4gemp0O2Nhc2UgMzU2Nzk6Y2FzZSAzNjI5OTpjYXNlIDM2MzA3OnJldHVybiBCanQ7Y2FzZSAzNTY4MDpjYXNlIDM2MzAwOmNhc2UgMzYzMDg6Y2FzZSAzNjI5MzpyZXR1cm4gSGp0O2Nhc2UgMzYyODk6Y2FzZSAzNjMwMzpjYXNlIDM2MzExOmNhc2UgMzYyOTI6cmV0dXJuIERqdH19KShlLnR5cGUpfWZ1bmN0aW9uIG9VdCh0LGUsbil7dGhpcy5pZD10LHRoaXMuYWRkcj1uLHRoaXMuY2FjaGU9W10sdGhpcy5zaXplPWUuc2l6ZSx0aGlzLnNldFZhbHVlPShmdW5jdGlvbiBpKHQpe3N3aXRjaCh0KXtjYXNlIDUxMjY6cmV0dXJuIFdqdDtjYXNlIDM1NjY0OnJldHVybiBLanQ7Y2FzZSAzNTY2NTpyZXR1cm4gWmp0O2Nhc2UgMzU2NjY6cmV0dXJuIEpqdDtjYXNlIDM1Njc0OnJldHVybiBRanQ7Y2FzZSAzNTY3NTpyZXR1cm4gdFV0O2Nhc2UgMzU2NzY6cmV0dXJuIGVVdDtjYXNlIDUxMjQ6Y2FzZSAzNTY3MDpyZXR1cm4gcWp0O2Nhc2UgMzU2Njc6Y2FzZSAzNTY3MTpyZXR1cm4gWWp0O2Nhc2UgMzU2Njg6Y2FzZSAzNTY3MjpyZXR1cm4gWGp0O2Nhc2UgMzU2Njk6Y2FzZSAzNTY3MzpyZXR1cm4gJGp0O2Nhc2UgMzU2Nzg6Y2FzZSAzNjE5ODpjYXNlIDM2Mjk4OmNhc2UgMzYzMDY6Y2FzZSAzNTY4MjpyZXR1cm4gblV0O2Nhc2UgMzU2ODA6Y2FzZSAzNjMwMDpjYXNlIDM2MzA4OmNhc2UgMzYyOTM6cmV0dXJuIGlVdH19KShlLnR5cGUpfWZ1bmN0aW9uIGFVdCh0KXt0aGlzLmlkPXQsdGhpcy5zZXE9W10sdGhpcy5tYXA9e319b1V0LnByb3RvdHlwZS51cGRhdGVDYWNoZT1mdW5jdGlvbih0KXtjb25zdCBlPXRoaXMuY2FjaGU7dCBpbnN0YW5jZW9mIEZsb2F0MzJBcnJheSYmZS5sZW5ndGghPT10Lmxlbmd0aCYmKHRoaXMuY2FjaGU9bmV3IEZsb2F0MzJBcnJheSh0Lmxlbmd0aCkpLEFqdChlLHQpfSxhVXQucHJvdG90eXBlLnNldFZhbHVlPWZ1bmN0aW9uKHQsZSxuKXtjb25zdCBpPXRoaXMuc2VxO2ZvcihsZXQgcj0wLG89aS5sZW5ndGg7ciE9PW87KytyKXtjb25zdCBvPWlbcl07by5zZXRWYWx1ZSh0LGVbby5pZF0sbil9fTtjb25zdCBzVXQ9LyhcdyspKFxdKT8oXFt8XC4pPy9nO2Z1bmN0aW9uIGxVdCh0LGUpe3Quc2VxLnB1c2goZSksdC5tYXBbZS5pZF09ZX1mdW5jdGlvbiBjVXQodCxlLG4pe2NvbnN0IGk9dC5uYW1lLHI9aS5sZW5ndGg7Zm9yKHNVdC5sYXN0SW5kZXg9MDs7KXtjb25zdCBvPXNVdC5leGVjKGkpLGE9c1V0Lmxhc3RJbmRleDtsZXQgcz1vWzFdO2NvbnN0IGw9b1szXTtpZigiXSI9PT1vWzJdJiYoc3w9MCksdm9pZCAwPT09bHx8IlsiPT09bCYmYSsyPT09cil7bFV0KG4sdm9pZCAwPT09bD9uZXcgclV0KHMsdCxlKTpuZXcgb1V0KHMsdCxlKSk7YnJlYWt9e2xldCB0PW4ubWFwW3NdO3ZvaWQgMD09PXQmJih0PW5ldyBhVXQocyksbFV0KG4sdCkpLG49dH19fWZ1bmN0aW9uIHVVdCh0LGUpe3RoaXMuc2VxPVtdLHRoaXMubWFwPXt9O2NvbnN0IG49dC5nZXRQcm9ncmFtUGFyYW1ldGVyKGUsMzU3MTgpO2ZvcihsZXQgaT0wO2k8bjsrK2kpe2NvbnN0IG49dC5nZXRBY3RpdmVVbmlmb3JtKGUsaSk7Y1V0KG4sdC5nZXRVbmlmb3JtTG9jYXRpb24oZSxuLm5hbWUpLHRoaXMpfX1mdW5jdGlvbiBoVXQodCxlLG4pe2NvbnN0IGk9dC5jcmVhdGVTaGFkZXIoZSk7cmV0dXJuIHQuc2hhZGVyU291cmNlKGksbiksdC5jb21waWxlU2hhZGVyKGkpLGl9dVV0LnByb3RvdHlwZS5zZXRWYWx1ZT1mdW5jdGlvbih0LGUsbixpKXtjb25zdCByPXRoaXMubWFwW2VdO3ZvaWQgMCE9PXImJnIuc2V0VmFsdWUodCxuLGkpfSx1VXQucHJvdG90eXBlLnNldE9wdGlvbmFsPWZ1bmN0aW9uKHQsZSxuKXtjb25zdCBpPWVbbl07dm9pZCAwIT09aSYmdGhpcy5zZXRWYWx1ZSh0LG4saSl9LHVVdC51cGxvYWQ9ZnVuY3Rpb24odCxlLG4saSl7Zm9yKGxldCByPTAsbz1lLmxlbmd0aDtyIT09bzsrK3Ipe2NvbnN0IG89ZVtyXSxhPW5bby5pZF07ITEhPT1hLm5lZWRzVXBkYXRlJiZvLnNldFZhbHVlKHQsYS52YWx1ZSxpKX19LHVVdC5zZXFXaXRoVmFsdWU9ZnVuY3Rpb24odCxlKXtjb25zdCBuPVtdO2ZvcihsZXQgaT0wLHI9dC5sZW5ndGg7aSE9PXI7KytpKXtjb25zdCByPXRbaV07ci5pZCBpbiBlJiZuLnB1c2gocil9cmV0dXJuIG59O2xldCBkVXQ9MDtmdW5jdGlvbiBwVXQodCl7c3dpdGNoKHQpe2Nhc2UgWUJ0OnJldHVyblsiTGluZWFyIiwiKCB2YWx1ZSApIl07Y2FzZSBYQnQ6cmV0dXJuWyJzUkdCIiwiKCB2YWx1ZSApIl07Y2FzZSBLQnQ6cmV0dXJuWyJSR0JFIiwiKCB2YWx1ZSApIl07Y2FzZSBaQnQ6cmV0dXJuWyJSR0JNIiwiKCB2YWx1ZSwgNy4wICkiXTtjYXNlIEpCdDpyZXR1cm5bIlJHQk0iLCIoIHZhbHVlLCAxNi4wICkiXTtjYXNlIFFCdDpyZXR1cm5bIlJHQkQiLCIoIHZhbHVlLCAyNTYuMCApIl07Y2FzZSAkQnQ6cmV0dXJuWyJHYW1tYSIsIiggdmFsdWUsIGZsb2F0KCBHQU1NQV9GQUNUT1IgKSApIl07Y2FzZSAzMDAzOnJldHVyblsiTG9nTHV2IiwiKCB2YWx1ZSApIl07ZGVmYXVsdDpyZXR1cm4gY29uc29sZS53YXJuKCJUSFJFRS5XZWJHTFByb2dyYW06IFVuc3VwcG9ydGVkIGVuY29kaW5nOiIsdCksWyJMaW5lYXIiLCIoIHZhbHVlICkiXX19ZnVuY3Rpb24gZlV0KHQsZSxuKXtjb25zdCBpPXQuZ2V0U2hhZGVyUGFyYW1ldGVyKGUsMzU3MTMpLHI9dC5nZXRTaGFkZXJJbmZvTG9nKGUpLnRyaW0oKTtyZXR1cm4gaSYmIiI9PT1yPyIiOiJUSFJFRS5XZWJHTFNoYWRlcjogZ2wuZ2V0U2hhZGVySW5mb0xvZygpICIrbisiXG4iK3IrKGZ1bmN0aW9uIG8odCl7Y29uc3QgZT10LnNwbGl0KCJcbiIpO2ZvcihsZXQgdD0wO3Q8ZS5sZW5ndGg7dCsrKWVbdF09dCsxKyI6ICIrZVt0XTtyZXR1cm4gZS5qb2luKCJcbiIpfSkodC5nZXRTaGFkZXJTb3VyY2UoZSkpfWZ1bmN0aW9uIG1VdCh0LGUpe2NvbnN0IG49cFV0KGUpO3JldHVybiJ2ZWM0ICIrdCsiKCB2ZWM0IHZhbHVlICkgeyByZXR1cm4gIituWzBdKyJUb0xpbmVhciIrblsxXSsiOyB9In1mdW5jdGlvbiBnVXQodCxlKXtjb25zdCBuPXBVdChlKTtyZXR1cm4idmVjNCAiK3QrIiggdmVjNCB2YWx1ZSApIHsgcmV0dXJuIExpbmVhclRvIituWzBdK25bMV0rIjsgfSJ9ZnVuY3Rpb24gX1V0KHQsZSl7bGV0IG47c3dpdGNoKGUpe2Nhc2UgMTpuPSJMaW5lYXIiO2JyZWFrO2Nhc2UgMjpuPSJSZWluaGFyZCI7YnJlYWs7Y2FzZSAzOm49Ik9wdGltaXplZENpbmVvbiI7YnJlYWs7Y2FzZSA0Om49IkFDRVNGaWxtaWMiO2JyZWFrO2Nhc2UgNTpuPSJDdXN0b20iO2JyZWFrO2RlZmF1bHQ6Y29uc29sZS53YXJuKCJUSFJFRS5XZWJHTFByb2dyYW06IFVuc3VwcG9ydGVkIHRvbmVNYXBwaW5nOiIsZSksbj0iTGluZWFyIn1yZXR1cm4idmVjMyAiK3QrIiggdmVjMyBjb2xvciApIHsgcmV0dXJuICIrbisiVG9uZU1hcHBpbmcoIGNvbG9yICk7IH0ifWZ1bmN0aW9uIHlVdCh0KXtyZXR1cm4iIiE9PXR9ZnVuY3Rpb24gdlV0KHQsZSl7cmV0dXJuIHQucmVwbGFjZSgvTlVNX0RJUl9MSUdIVFMvZyxlLm51bURpckxpZ2h0cykucmVwbGFjZSgvTlVNX1NQT1RfTElHSFRTL2csZS5udW1TcG90TGlnaHRzKS5yZXBsYWNlKC9OVU1fUkVDVF9BUkVBX0xJR0hUUy9nLGUubnVtUmVjdEFyZWFMaWdodHMpLnJlcGxhY2UoL05VTV9QT0lOVF9MSUdIVFMvZyxlLm51bVBvaW50TGlnaHRzKS5yZXBsYWNlKC9OVU1fSEVNSV9MSUdIVFMvZyxlLm51bUhlbWlMaWdodHMpLnJlcGxhY2UoL05VTV9ESVJfTElHSFRfU0hBRE9XUy9nLGUubnVtRGlyTGlnaHRTaGFkb3dzKS5yZXBsYWNlKC9OVU1fU1BPVF9MSUdIVF9TSEFET1dTL2csZS5udW1TcG90TGlnaHRTaGFkb3dzKS5yZXBsYWNlKC9OVU1fUE9JTlRfTElHSFRfU0hBRE9XUy9nLGUubnVtUG9pbnRMaWdodFNoYWRvd3MpfWZ1bmN0aW9uIGJVdCh0LGUpe3JldHVybiB0LnJlcGxhY2UoL05VTV9DTElQUElOR19QTEFORVMvZyxlLm51bUNsaXBwaW5nUGxhbmVzKS5yZXBsYWNlKC9VTklPTl9DTElQUElOR19QTEFORVMvZyxlLm51bUNsaXBwaW5nUGxhbmVzLWUubnVtQ2xpcEludGVyc2VjdGlvbil9Y29uc3QgeFV0PS9eWyBcdF0qI2luY2x1ZGUgKzwoW1x3XGQuL10rKT4vZ207ZnVuY3Rpb24gd1V0KHQpe3JldHVybiB0LnJlcGxhY2UoeFV0LFNVdCl9ZnVuY3Rpb24gU1V0KHQsZSl7Y29uc3Qgbj1aVnRbZV07aWYodm9pZCAwPT09bil0aHJvdyBuZXcgRXJyb3IoIkNhbiBub3QgcmVzb2x2ZSAjaW5jbHVkZSA8IitlKyI+Iik7cmV0dXJuIHdVdChuKX1jb25zdCBNVXQ9LyNwcmFnbWEgdW5yb2xsX2xvb3BbXHNdKz9mb3IgXCggaW50IGkgXD0gKFxkKylcOyBpIDwgKFxkKylcOyBpIFwrXCsgXCkgXHsoW1xzXFNdKz8pKD89XH0pXH0vZyxFVXQ9LyNwcmFnbWEgdW5yb2xsX2xvb3Bfc3RhcnRccytmb3JccypcKFxzKmludFxzK2lccyo9XHMqKFxkKylccyo7XHMqaVxzKjxccyooXGQrKVxzKjtccyppXHMqXCtcK1xzKlwpXHMqeyhbXHNcU10rPyl9XHMrI3ByYWdtYSB1bnJvbGxfbG9vcF9lbmQvZztmdW5jdGlvbiBUVXQodCl7cmV0dXJuIHQucmVwbGFjZShFVXQsQ1V0KS5yZXBsYWNlKE1VdCxBVXQpfWZ1bmN0aW9uIEFVdCh0LGUsbixpKXtyZXR1cm4gY29uc29sZS53YXJuKCJXZWJHTFByb2dyYW06ICNwcmFnbWEgdW5yb2xsX2xvb3Agc2hhZGVyIHN5bnRheCBpcyBkZXByZWNhdGVkLiBQbGVhc2UgdXNlICNwcmFnbWEgdW5yb2xsX2xvb3Bfc3RhcnQgc3ludGF4IGluc3RlYWQuIiksQ1V0KDAsZSxuLGkpfWZ1bmN0aW9uIENVdCh0LGUsbixpKXtsZXQgcj0iIjtmb3IobGV0IHQ9cGFyc2VJbnQoZSk7dDxwYXJzZUludChuKTt0Kyspcis9aS5yZXBsYWNlKC9cW1xzKmlccypcXS9nLCJbICIrdCsiIF0iKS5yZXBsYWNlKC9VTlJPTExFRF9MT09QX0lOREVYL2csdCk7cmV0dXJuIHJ9ZnVuY3Rpb24ga1V0KHQpe2xldCBlPSJwcmVjaXNpb24gIit0LnByZWNpc2lvbisiIGZsb2F0O1xucHJlY2lzaW9uICIrdC5wcmVjaXNpb24rIiBpbnQ7IjtyZXR1cm4iaGlnaHAiPT09dC5wcmVjaXNpb24/ZSs9IlxuI2RlZmluZSBISUdIX1BSRUNJU0lPTiI6Im1lZGl1bXAiPT09dC5wcmVjaXNpb24/ZSs9IlxuI2RlZmluZSBNRURJVU1fUFJFQ0lTSU9OIjoibG93cCI9PT10LnByZWNpc2lvbiYmKGUrPSJcbiNkZWZpbmUgTE9XX1BSRUNJU0lPTiIpLGV9ZnVuY3Rpb24gTFV0KHQsZSxuLGkpe2NvbnN0IHI9dC5nZXRDb250ZXh0KCksbz1uLmRlZmluZXM7bGV0IGE9bi52ZXJ0ZXhTaGFkZXIscz1uLmZyYWdtZW50U2hhZGVyO2NvbnN0IGw9KGZ1bmN0aW9uIGModCl7bGV0IGU9IlNIQURPV01BUF9UWVBFX0JBU0lDIjtyZXR1cm4gMT09PXQuc2hhZG93TWFwVHlwZT9lPSJTSEFET1dNQVBfVFlQRV9QQ0YiOjI9PT10LnNoYWRvd01hcFR5cGU/ZT0iU0hBRE9XTUFQX1RZUEVfUENGX1NPRlQiOjM9PT10LnNoYWRvd01hcFR5cGUmJihlPSJTSEFET1dNQVBfVFlQRV9WU00iKSxlfSkobiksdT0oZnVuY3Rpb24gaCh0KXtsZXQgZT0iRU5WTUFQX1RZUEVfQ1VCRSI7aWYodC5lbnZNYXApc3dpdGNoKHQuZW52TWFwTW9kZSl7Y2FzZSByQnQ6Y2FzZSBvQnQ6ZT0iRU5WTUFQX1RZUEVfQ1VCRSI7YnJlYWs7Y2FzZSBsQnQ6Y2FzZSBjQnQ6ZT0iRU5WTUFQX1RZUEVfQ1VCRV9VViJ9cmV0dXJuIGV9KShuKSxkPShmdW5jdGlvbiBwKHQpe2xldCBlPSJFTlZNQVBfTU9ERV9SRUZMRUNUSU9OIjtpZih0LmVudk1hcClzd2l0Y2godC5lbnZNYXBNb2RlKXtjYXNlIG9CdDpjYXNlIGNCdDplPSJFTlZNQVBfTU9ERV9SRUZSQUNUSU9OIn1yZXR1cm4gZX0pKG4pLGY9KGZ1bmN0aW9uIG0odCl7bGV0IGU9IkVOVk1BUF9CTEVORElOR19OT05FIjtpZih0LmVudk1hcClzd2l0Y2godC5jb21iaW5lKXtjYXNlIDA6ZT0iRU5WTUFQX0JMRU5ESU5HX01VTFRJUExZIjticmVhaztjYXNlIDE6ZT0iRU5WTUFQX0JMRU5ESU5HX01JWCI7YnJlYWs7Y2FzZSAyOmU9IkVOVk1BUF9CTEVORElOR19BREQifXJldHVybiBlfSkobiksZz10LmdhbW1hRmFjdG9yPjA/dC5nYW1tYUZhY3RvcjoxLF89bi5pc1dlYkdMMj8iIjooZnVuY3Rpb24geSh0KXtyZXR1cm5bdC5leHRlbnNpb25EZXJpdmF0aXZlc3x8dC5lbnZNYXBDdWJlVVZ8fHQuYnVtcE1hcHx8dC50YW5nZW50U3BhY2VOb3JtYWxNYXB8fHQuY2xlYXJjb2F0Tm9ybWFsTWFwfHx0LmZsYXRTaGFkaW5nfHwicGh5c2ljYWwiPT09dC5zaGFkZXJJRD8iI2V4dGVuc2lvbiBHTF9PRVNfc3RhbmRhcmRfZGVyaXZhdGl2ZXMgOiBlbmFibGUiOiIiLCh0LmV4dGVuc2lvbkZyYWdEZXB0aHx8dC5sb2dhcml0aG1pY0RlcHRoQnVmZmVyKSYmdC5yZW5kZXJlckV4dGVuc2lvbkZyYWdEZXB0aD8iI2V4dGVuc2lvbiBHTF9FWFRfZnJhZ19kZXB0aCA6IGVuYWJsZSI6IiIsdC5leHRlbnNpb25EcmF3QnVmZmVycyYmdC5yZW5kZXJlckV4dGVuc2lvbkRyYXdCdWZmZXJzPyIjZXh0ZW5zaW9uIEdMX0VYVF9kcmF3X2J1ZmZlcnMgOiByZXF1aXJlIjoiIiwodC5leHRlbnNpb25TaGFkZXJUZXh0dXJlTE9EfHx0LmVudk1hcCkmJnQucmVuZGVyZXJFeHRlbnNpb25TaGFkZXJUZXh0dXJlTG9kPyIjZXh0ZW5zaW9uIEdMX0VYVF9zaGFkZXJfdGV4dHVyZV9sb2QgOiBlbmFibGUiOiIiXS5maWx0ZXIoeVV0KS5qb2luKCJcbiIpfSkobiksdj0oZnVuY3Rpb24gYih0KXtjb25zdCBlPVtdO2Zvcihjb25zdCBuIGluIHQpe2NvbnN0IGk9dFtuXTshMSE9PWkmJmUucHVzaCgiI2RlZmluZSAiK24rIiAiK2kpfXJldHVybiBlLmpvaW4oIlxuIil9KShvKSx4PXIuY3JlYXRlUHJvZ3JhbSgpO2xldCB3LFMsTT1uLmdsc2xWZXJzaW9uPyIjdmVyc2lvbiAiK24uZ2xzbFZlcnNpb24rIlxuIjoiIjtuLmlzUmF3U2hhZGVyTWF0ZXJpYWw/KHc9W3ZdLmZpbHRlcih5VXQpLmpvaW4oIlxuIiksdy5sZW5ndGg+MCYmKHcrPSJcbiIpLFM9W18sdl0uZmlsdGVyKHlVdCkuam9pbigiXG4iKSxTLmxlbmd0aD4wJiYoUys9IlxuIikpOih3PVtrVXQobiksIiNkZWZpbmUgU0hBREVSX05BTUUgIituLnNoYWRlck5hbWUsdixuLmluc3RhbmNpbmc/IiNkZWZpbmUgVVNFX0lOU1RBTkNJTkciOiIiLG4uaW5zdGFuY2luZ0NvbG9yPyIjZGVmaW5lIFVTRV9JTlNUQU5DSU5HX0NPTE9SIjoiIixuLnN1cHBvcnRzVmVydGV4VGV4dHVyZXM/IiNkZWZpbmUgVkVSVEVYX1RFWFRVUkVTIjoiIiwiI2RlZmluZSBHQU1NQV9GQUNUT1IgIitnLCIjZGVmaW5lIE1BWF9CT05FUyAiK24ubWF4Qm9uZXMsbi51c2VGb2cmJm4uZm9nPyIjZGVmaW5lIFVTRV9GT0ciOiIiLG4udXNlRm9nJiZuLmZvZ0V4cDI/IiNkZWZpbmUgRk9HX0VYUDIiOiIiLG4ubWFwPyIjZGVmaW5lIFVTRV9NQVAiOiIiLG4uZW52TWFwPyIjZGVmaW5lIFVTRV9FTlZNQVAiOiIiLG4uZW52TWFwPyIjZGVmaW5lICIrZDoiIixuLmxpZ2h0TWFwPyIjZGVmaW5lIFVTRV9MSUdIVE1BUCI6IiIsbi5hb01hcD8iI2RlZmluZSBVU0VfQU9NQVAiOiIiLG4uZW1pc3NpdmVNYXA/IiNkZWZpbmUgVVNFX0VNSVNTSVZFTUFQIjoiIixuLmJ1bXBNYXA/IiNkZWZpbmUgVVNFX0JVTVBNQVAiOiIiLG4ubm9ybWFsTWFwPyIjZGVmaW5lIFVTRV9OT1JNQUxNQVAiOiIiLG4ubm9ybWFsTWFwJiZuLm9iamVjdFNwYWNlTm9ybWFsTWFwPyIjZGVmaW5lIE9CSkVDVFNQQUNFX05PUk1BTE1BUCI6IiIsbi5ub3JtYWxNYXAmJm4udGFuZ2VudFNwYWNlTm9ybWFsTWFwPyIjZGVmaW5lIFRBTkdFTlRTUEFDRV9OT1JNQUxNQVAiOiIiLG4uY2xlYXJjb2F0TWFwPyIjZGVmaW5lIFVTRV9DTEVBUkNPQVRNQVAiOiIiLG4uY2xlYXJjb2F0Um91Z2huZXNzTWFwPyIjZGVmaW5lIFVTRV9DTEVBUkNPQVRfUk9VR0hORVNTTUFQIjoiIixuLmNsZWFyY29hdE5vcm1hbE1hcD8iI2RlZmluZSBVU0VfQ0xFQVJDT0FUX05PUk1BTE1BUCI6IiIsbi5kaXNwbGFjZW1lbnRNYXAmJm4uc3VwcG9ydHNWZXJ0ZXhUZXh0dXJlcz8iI2RlZmluZSBVU0VfRElTUExBQ0VNRU5UTUFQIjoiIixuLnNwZWN1bGFyTWFwPyIjZGVmaW5lIFVTRV9TUEVDVUxBUk1BUCI6IiIsbi5yb3VnaG5lc3NNYXA/IiNkZWZpbmUgVVNFX1JPVUdITkVTU01BUCI6IiIsbi5tZXRhbG5lc3NNYXA/IiNkZWZpbmUgVVNFX01FVEFMTkVTU01BUCI6IiIsbi5hbHBoYU1hcD8iI2RlZmluZSBVU0VfQUxQSEFNQVAiOiIiLG4udHJhbnNtaXNzaW9uTWFwPyIjZGVmaW5lIFVTRV9UUkFOU01JU1NJT05NQVAiOiIiLG4udmVydGV4VGFuZ2VudHM/IiNkZWZpbmUgVVNFX1RBTkdFTlQiOiIiLG4udmVydGV4Q29sb3JzPyIjZGVmaW5lIFVTRV9DT0xPUiI6IiIsbi52ZXJ0ZXhVdnM/IiNkZWZpbmUgVVNFX1VWIjoiIixuLnV2c1ZlcnRleE9ubHk/IiNkZWZpbmUgVVZTX1ZFUlRFWF9PTkxZIjoiIixuLmZsYXRTaGFkaW5nPyIjZGVmaW5lIEZMQVRfU0hBREVEIjoiIixuLnNraW5uaW5nPyIjZGVmaW5lIFVTRV9TS0lOTklORyI6IiIsbi51c2VWZXJ0ZXhUZXh0dXJlPyIjZGVmaW5lIEJPTkVfVEVYVFVSRSI6IiIsbi5tb3JwaFRhcmdldHM/IiNkZWZpbmUgVVNFX01PUlBIVEFSR0VUUyI6IiIsbi5tb3JwaE5vcm1hbHMmJiExPT09bi5mbGF0U2hhZGluZz8iI2RlZmluZSBVU0VfTU9SUEhOT1JNQUxTIjoiIixuLmRvdWJsZVNpZGVkPyIjZGVmaW5lIERPVUJMRV9TSURFRCI6IiIsbi5mbGlwU2lkZWQ/IiNkZWZpbmUgRkxJUF9TSURFRCI6IiIsbi5zaGFkb3dNYXBFbmFibGVkPyIjZGVmaW5lIFVTRV9TSEFET1dNQVAiOiIiLG4uc2hhZG93TWFwRW5hYmxlZD8iI2RlZmluZSAiK2w6IiIsbi5zaXplQXR0ZW51YXRpb24/IiNkZWZpbmUgVVNFX1NJWkVBVFRFTlVBVElPTiI6IiIsbi5sb2dhcml0aG1pY0RlcHRoQnVmZmVyPyIjZGVmaW5lIFVTRV9MT0dERVBUSEJVRiI6IiIsbi5sb2dhcml0aG1pY0RlcHRoQnVmZmVyJiZuLnJlbmRlcmVyRXh0ZW5zaW9uRnJhZ0RlcHRoPyIjZGVmaW5lIFVTRV9MT0dERVBUSEJVRl9FWFQiOiIiLCJ1bmlmb3JtIG1hdDQgbW9kZWxNYXRyaXg7IiwidW5pZm9ybSBtYXQ0IG1vZGVsVmlld01hdHJpeDsiLCJ1bmlmb3JtIG1hdDQgcHJvamVjdGlvbk1hdHJpeDsiLCJ1bmlmb3JtIG1hdDQgdmlld01hdHJpeDsiLCJ1bmlmb3JtIG1hdDMgbm9ybWFsTWF0cml4OyIsInVuaWZvcm0gdmVjMyBjYW1lcmFQb3NpdGlvbjsiLCJ1bmlmb3JtIGJvb2wgaXNPcnRob2dyYXBoaWM7IiwiI2lmZGVmIFVTRV9JTlNUQU5DSU5HIiwiXHRhdHRyaWJ1dGUgbWF0NCBpbnN0YW5jZU1hdHJpeDsiLCIjZW5kaWYiLCIjaWZkZWYgVVNFX0lOU1RBTkNJTkdfQ09MT1IiLCJcdGF0dHJpYnV0ZSB2ZWMzIGluc3RhbmNlQ29sb3I7IiwiI2VuZGlmIiwiYXR0cmlidXRlIHZlYzMgcG9zaXRpb247IiwiYXR0cmlidXRlIHZlYzMgbm9ybWFsOyIsImF0dHJpYnV0ZSB2ZWMyIHV2OyIsIiNpZmRlZiBVU0VfVEFOR0VOVCIsIlx0YXR0cmlidXRlIHZlYzQgdGFuZ2VudDsiLCIjZW5kaWYiLCIjaWZkZWYgVVNFX0NPTE9SIiwiXHRhdHRyaWJ1dGUgdmVjMyBjb2xvcjsiLCIjZW5kaWYiLCIjaWZkZWYgVVNFX01PUlBIVEFSR0VUUyIsIlx0YXR0cmlidXRlIHZlYzMgbW9ycGhUYXJnZXQwOyIsIlx0YXR0cmlidXRlIHZlYzMgbW9ycGhUYXJnZXQxOyIsIlx0YXR0cmlidXRlIHZlYzMgbW9ycGhUYXJnZXQyOyIsIlx0YXR0cmlidXRlIHZlYzMgbW9ycGhUYXJnZXQzOyIsIlx0I2lmZGVmIFVTRV9NT1JQSE5PUk1BTFMiLCJcdFx0YXR0cmlidXRlIHZlYzMgbW9ycGhOb3JtYWwwOyIsIlx0XHRhdHRyaWJ1dGUgdmVjMyBtb3JwaE5vcm1hbDE7IiwiXHRcdGF0dHJpYnV0ZSB2ZWMzIG1vcnBoTm9ybWFsMjsiLCJcdFx0YXR0cmlidXRlIHZlYzMgbW9ycGhOb3JtYWwzOyIsIlx0I2Vsc2UiLCJcdFx0YXR0cmlidXRlIHZlYzMgbW9ycGhUYXJnZXQ0OyIsIlx0XHRhdHRyaWJ1dGUgdmVjMyBtb3JwaFRhcmdldDU7IiwiXHRcdGF0dHJpYnV0ZSB2ZWMzIG1vcnBoVGFyZ2V0NjsiLCJcdFx0YXR0cmlidXRlIHZlYzMgbW9ycGhUYXJnZXQ3OyIsIlx0I2VuZGlmIiwiI2VuZGlmIiwiI2lmZGVmIFVTRV9TS0lOTklORyIsIlx0YXR0cmlidXRlIHZlYzQgc2tpbkluZGV4OyIsIlx0YXR0cmlidXRlIHZlYzQgc2tpbldlaWdodDsiLCIjZW5kaWYiLCJcbiJdLmZpbHRlcih5VXQpLmpvaW4oIlxuIiksUz1bXyxrVXQobiksIiNkZWZpbmUgU0hBREVSX05BTUUgIituLnNoYWRlck5hbWUsdixuLmFscGhhVGVzdD8iI2RlZmluZSBBTFBIQVRFU1QgIituLmFscGhhVGVzdCsobi5hbHBoYVRlc3QlMT8iIjoiLjAiKToiIiwiI2RlZmluZSBHQU1NQV9GQUNUT1IgIitnLG4udXNlRm9nJiZuLmZvZz8iI2RlZmluZSBVU0VfRk9HIjoiIixuLnVzZUZvZyYmbi5mb2dFeHAyPyIjZGVmaW5lIEZPR19FWFAyIjoiIixuLm1hcD8iI2RlZmluZSBVU0VfTUFQIjoiIixuLm1hdGNhcD8iI2RlZmluZSBVU0VfTUFUQ0FQIjoiIixuLmVudk1hcD8iI2RlZmluZSBVU0VfRU5WTUFQIjoiIixuLmVudk1hcD8iI2RlZmluZSAiK3U6IiIsbi5lbnZNYXA/IiNkZWZpbmUgIitkOiIiLG4uZW52TWFwPyIjZGVmaW5lICIrZjoiIixuLmxpZ2h0TWFwPyIjZGVmaW5lIFVTRV9MSUdIVE1BUCI6IiIsbi5hb01hcD8iI2RlZmluZSBVU0VfQU9NQVAiOiIiLG4uZW1pc3NpdmVNYXA/IiNkZWZpbmUgVVNFX0VNSVNTSVZFTUFQIjoiIixuLmJ1bXBNYXA/IiNkZWZpbmUgVVNFX0JVTVBNQVAiOiIiLG4ubm9ybWFsTWFwPyIjZGVmaW5lIFVTRV9OT1JNQUxNQVAiOiIiLG4ubm9ybWFsTWFwJiZuLm9iamVjdFNwYWNlTm9ybWFsTWFwPyIjZGVmaW5lIE9CSkVDVFNQQUNFX05PUk1BTE1BUCI6IiIsbi5ub3JtYWxNYXAmJm4udGFuZ2VudFNwYWNlTm9ybWFsTWFwPyIjZGVmaW5lIFRBTkdFTlRTUEFDRV9OT1JNQUxNQVAiOiIiLG4uY2xlYXJjb2F0TWFwPyIjZGVmaW5lIFVTRV9DTEVBUkNPQVRNQVAiOiIiLG4uY2xlYXJjb2F0Um91Z2huZXNzTWFwPyIjZGVmaW5lIFVTRV9DTEVBUkNPQVRfUk9VR0hORVNTTUFQIjoiIixuLmNsZWFyY29hdE5vcm1hbE1hcD8iI2RlZmluZSBVU0VfQ0xFQVJDT0FUX05PUk1BTE1BUCI6IiIsbi5zcGVjdWxhck1hcD8iI2RlZmluZSBVU0VfU1BFQ1VMQVJNQVAiOiIiLG4ucm91Z2huZXNzTWFwPyIjZGVmaW5lIFVTRV9ST1VHSE5FU1NNQVAiOiIiLG4ubWV0YWxuZXNzTWFwPyIjZGVmaW5lIFVTRV9NRVRBTE5FU1NNQVAiOiIiLG4uYWxwaGFNYXA/IiNkZWZpbmUgVVNFX0FMUEhBTUFQIjoiIixuLnNoZWVuPyIjZGVmaW5lIFVTRV9TSEVFTiI6IiIsbi50cmFuc21pc3Npb25NYXA/IiNkZWZpbmUgVVNFX1RSQU5TTUlTU0lPTk1BUCI6IiIsbi52ZXJ0ZXhUYW5nZW50cz8iI2RlZmluZSBVU0VfVEFOR0VOVCI6IiIsbi52ZXJ0ZXhDb2xvcnN8fG4uaW5zdGFuY2luZ0NvbG9yPyIjZGVmaW5lIFVTRV9DT0xPUiI6IiIsbi52ZXJ0ZXhVdnM/IiNkZWZpbmUgVVNFX1VWIjoiIixuLnV2c1ZlcnRleE9ubHk/IiNkZWZpbmUgVVZTX1ZFUlRFWF9PTkxZIjoiIixuLmdyYWRpZW50TWFwPyIjZGVmaW5lIFVTRV9HUkFESUVOVE1BUCI6IiIsbi5mbGF0U2hhZGluZz8iI2RlZmluZSBGTEFUX1NIQURFRCI6IiIsbi5kb3VibGVTaWRlZD8iI2RlZmluZSBET1VCTEVfU0lERUQiOiIiLG4uZmxpcFNpZGVkPyIjZGVmaW5lIEZMSVBfU0lERUQiOiIiLG4uc2hhZG93TWFwRW5hYmxlZD8iI2RlZmluZSBVU0VfU0hBRE9XTUFQIjoiIixuLnNoYWRvd01hcEVuYWJsZWQ/IiNkZWZpbmUgIitsOiIiLG4ucHJlbXVsdGlwbGllZEFscGhhPyIjZGVmaW5lIFBSRU1VTFRJUExJRURfQUxQSEEiOiIiLG4ucGh5c2ljYWxseUNvcnJlY3RMaWdodHM/IiNkZWZpbmUgUEhZU0lDQUxMWV9DT1JSRUNUX0xJR0hUUyI6IiIsbi5sb2dhcml0aG1pY0RlcHRoQnVmZmVyPyIjZGVmaW5lIFVTRV9MT0dERVBUSEJVRiI6IiIsbi5sb2dhcml0aG1pY0RlcHRoQnVmZmVyJiZuLnJlbmRlcmVyRXh0ZW5zaW9uRnJhZ0RlcHRoPyIjZGVmaW5lIFVTRV9MT0dERVBUSEJVRl9FWFQiOiIiLChuLmV4dGVuc2lvblNoYWRlclRleHR1cmVMT0R8fG4uZW52TWFwKSYmbi5yZW5kZXJlckV4dGVuc2lvblNoYWRlclRleHR1cmVMb2Q/IiNkZWZpbmUgVEVYVFVSRV9MT0RfRVhUIjoiIiwidW5pZm9ybSBtYXQ0IHZpZXdNYXRyaXg7IiwidW5pZm9ybSB2ZWMzIGNhbWVyYVBvc2l0aW9uOyIsInVuaWZvcm0gYm9vbCBpc09ydGhvZ3JhcGhpYzsiLDAhPT1uLnRvbmVNYXBwaW5nPyIjZGVmaW5lIFRPTkVfTUFQUElORyI6IiIsMCE9PW4udG9uZU1hcHBpbmc/WlZ0LnRvbmVtYXBwaW5nX3BhcnNfZnJhZ21lbnQ6IiIsMCE9PW4udG9uZU1hcHBpbmc/X1V0KCJ0b25lTWFwcGluZyIsbi50b25lTWFwcGluZyk6IiIsbi5kaXRoZXJpbmc/IiNkZWZpbmUgRElUSEVSSU5HIjoiIixaVnQuZW5jb2RpbmdzX3BhcnNfZnJhZ21lbnQsbi5tYXA/bVV0KCJtYXBUZXhlbFRvTGluZWFyIixuLm1hcEVuY29kaW5nKToiIixuLm1hdGNhcD9tVXQoIm1hdGNhcFRleGVsVG9MaW5lYXIiLG4ubWF0Y2FwRW5jb2RpbmcpOiIiLG4uZW52TWFwP21VdCgiZW52TWFwVGV4ZWxUb0xpbmVhciIsbi5lbnZNYXBFbmNvZGluZyk6IiIsbi5lbWlzc2l2ZU1hcD9tVXQoImVtaXNzaXZlTWFwVGV4ZWxUb0xpbmVhciIsbi5lbWlzc2l2ZU1hcEVuY29kaW5nKToiIixuLmxpZ2h0TWFwP21VdCgibGlnaHRNYXBUZXhlbFRvTGluZWFyIixuLmxpZ2h0TWFwRW5jb2RpbmcpOiIiLGdVdCgibGluZWFyVG9PdXRwdXRUZXhlbCIsbi5vdXRwdXRFbmNvZGluZyksbi5kZXB0aFBhY2tpbmc/IiNkZWZpbmUgREVQVEhfUEFDS0lORyAiK24uZGVwdGhQYWNraW5nOiIiLCJcbiJdLmZpbHRlcih5VXQpLmpvaW4oIlxuIikpLGE9d1V0KGEpLGE9dlV0KGEsbiksYT1iVXQoYSxuKSxzPXdVdChzKSxzPXZVdChzLG4pLHM9YlV0KHMsbiksYT1UVXQoYSkscz1UVXQocyksbi5pc1dlYkdMMiYmITAhPT1uLmlzUmF3U2hhZGVyTWF0ZXJpYWwmJihNPSIjdmVyc2lvbiAzMDAgZXNcbiIsdz1bIiNkZWZpbmUgYXR0cmlidXRlIGluIiwiI2RlZmluZSB2YXJ5aW5nIG91dCIsIiNkZWZpbmUgdGV4dHVyZTJEIHRleHR1cmUiXS5qb2luKCJcbiIpKyJcbiIrdyxTPVsiI2RlZmluZSB2YXJ5aW5nIGluIixuLmdsc2xWZXJzaW9uPT09aUh0PyIiOiJvdXQgaGlnaHAgdmVjNCBwY19mcmFnQ29sb3I7IixuLmdsc2xWZXJzaW9uPT09aUh0PyIiOiIjZGVmaW5lIGdsX0ZyYWdDb2xvciBwY19mcmFnQ29sb3IiLCIjZGVmaW5lIGdsX0ZyYWdEZXB0aEVYVCBnbF9GcmFnRGVwdGgiLCIjZGVmaW5lIHRleHR1cmUyRCB0ZXh0dXJlIiwiI2RlZmluZSB0ZXh0dXJlQ3ViZSB0ZXh0dXJlIiwiI2RlZmluZSB0ZXh0dXJlMkRQcm9qIHRleHR1cmVQcm9qIiwiI2RlZmluZSB0ZXh0dXJlMkRMb2RFWFQgdGV4dHVyZUxvZCIsIiNkZWZpbmUgdGV4dHVyZTJEUHJvakxvZEVYVCB0ZXh0dXJlUHJvakxvZCIsIiNkZWZpbmUgdGV4dHVyZUN1YmVMb2RFWFQgdGV4dHVyZUxvZCIsIiNkZWZpbmUgdGV4dHVyZTJER3JhZEVYVCB0ZXh0dXJlR3JhZCIsIiNkZWZpbmUgdGV4dHVyZTJEUHJvakdyYWRFWFQgdGV4dHVyZVByb2pHcmFkIiwiI2RlZmluZSB0ZXh0dXJlQ3ViZUdyYWRFWFQgdGV4dHVyZUdyYWQiXS5qb2luKCJcbiIpKyJcbiIrUyk7Y29uc3QgRT1NK1MrcyxUPWhVdChyLDM1NjMzLE0rdythKSxBPWhVdChyLDM1NjMyLEUpO2lmKHIuYXR0YWNoU2hhZGVyKHgsVCksci5hdHRhY2hTaGFkZXIoeCxBKSx2b2lkIDAhPT1uLmluZGV4MEF0dHJpYnV0ZU5hbWU/ci5iaW5kQXR0cmliTG9jYXRpb24oeCwwLG4uaW5kZXgwQXR0cmlidXRlTmFtZSk6ITA9PT1uLm1vcnBoVGFyZ2V0cyYmci5iaW5kQXR0cmliTG9jYXRpb24oeCwwLCJwb3NpdGlvbiIpLHIubGlua1Byb2dyYW0oeCksdC5kZWJ1Zy5jaGVja1NoYWRlckVycm9ycyl7Y29uc3QgdD1yLmdldFByb2dyYW1JbmZvTG9nKHgpLnRyaW0oKSxlPXIuZ2V0U2hhZGVySW5mb0xvZyhUKS50cmltKCksbj1yLmdldFNoYWRlckluZm9Mb2coQSkudHJpbSgpO2xldCBpPSEwLG89ITA7aWYoITE9PT1yLmdldFByb2dyYW1QYXJhbWV0ZXIoeCwzNTcxNCkpe2k9ITE7Y29uc3QgZT1mVXQocixULCJ2ZXJ0ZXgiKSxuPWZVdChyLEEsImZyYWdtZW50Iik7Y29uc29sZS5lcnJvcigiVEhSRUUuV2ViR0xQcm9ncmFtOiBzaGFkZXIgZXJyb3I6ICIsci5nZXRFcnJvcigpLCIzNTcxNSIsci5nZXRQcm9ncmFtUGFyYW1ldGVyKHgsMzU3MTUpLCJnbC5nZXRQcm9ncmFtSW5mb0xvZyIsdCxlLG4pfWVsc2UiIiE9PXQ/Y29uc29sZS53YXJuKCJUSFJFRS5XZWJHTFByb2dyYW06IGdsLmdldFByb2dyYW1JbmZvTG9nKCkiLHQpOiIiIT09ZSYmIiIhPT1ufHwobz0hMSk7byYmKHRoaXMuZGlhZ25vc3RpY3M9e3J1bm5hYmxlOmkscHJvZ3JhbUxvZzp0LHZlcnRleFNoYWRlcjp7bG9nOmUscHJlZml4Ond9LGZyYWdtZW50U2hhZGVyOntsb2c6bixwcmVmaXg6U319KX1sZXQgQyxrO3JldHVybiByLmRlbGV0ZVNoYWRlcihUKSxyLmRlbGV0ZVNoYWRlcihBKSx0aGlzLmdldFVuaWZvcm1zPWZ1bmN0aW9uKCl7cmV0dXJuIHZvaWQgMD09PUMmJihDPW5ldyB1VXQocix4KSksQ30sdGhpcy5nZXRBdHRyaWJ1dGVzPWZ1bmN0aW9uKCl7cmV0dXJuIHZvaWQgMD09PWsmJihrPShmdW5jdGlvbiB0KGUsbil7Y29uc3QgaT17fSxyPWUuZ2V0UHJvZ3JhbVBhcmFtZXRlcihuLDM1NzIxKTtmb3IobGV0IHQ9MDt0PHI7dCsrKXtjb25zdCByPWUuZ2V0QWN0aXZlQXR0cmliKG4sdCkubmFtZTtpW3JdPWUuZ2V0QXR0cmliTG9jYXRpb24obixyKX1yZXR1cm4gaX0pKHIseCkpLGt9LHRoaXMuZGVzdHJveT1mdW5jdGlvbigpe2kucmVsZWFzZVN0YXRlc09mUHJvZ3JhbSh0aGlzKSxyLmRlbGV0ZVByb2dyYW0oeCksdGhpcy5wcm9ncmFtPXZvaWQgMH0sdGhpcy5uYW1lPW4uc2hhZGVyTmFtZSx0aGlzLmlkPWRVdCsrLHRoaXMuY2FjaGVLZXk9ZSx0aGlzLnVzZWRUaW1lcz0xLHRoaXMucHJvZ3JhbT14LHRoaXMudmVydGV4U2hhZGVyPVQsdGhpcy5mcmFnbWVudFNoYWRlcj1BLHRoaXN9ZnVuY3Rpb24gUFV0KHQsZSxuLGkscixvKXtjb25zdCBhPVtdLHM9aS5pc1dlYkdMMixsPWkubG9nYXJpdGhtaWNEZXB0aEJ1ZmZlcixjPWkuZmxvYXRWZXJ0ZXhUZXh0dXJlcyx1PWkubWF4VmVydGV4VW5pZm9ybXMsaD1pLnZlcnRleFRleHR1cmVzO2xldCBkPWkucHJlY2lzaW9uO2NvbnN0IHA9e01lc2hEZXB0aE1hdGVyaWFsOiJkZXB0aCIsTWVzaERpc3RhbmNlTWF0ZXJpYWw6ImRpc3RhbmNlUkdCQSIsTWVzaE5vcm1hbE1hdGVyaWFsOiJub3JtYWwiLE1lc2hCYXNpY01hdGVyaWFsOiJiYXNpYyIsTWVzaExhbWJlcnRNYXRlcmlhbDoibGFtYmVydCIsTWVzaFBob25nTWF0ZXJpYWw6InBob25nIixNZXNoVG9vbk1hdGVyaWFsOiJ0b29uIixNZXNoU3RhbmRhcmRNYXRlcmlhbDoicGh5c2ljYWwiLE1lc2hQaHlzaWNhbE1hdGVyaWFsOiJwaHlzaWNhbCIsTWVzaE1hdGNhcE1hdGVyaWFsOiJtYXRjYXAiLExpbmVCYXNpY01hdGVyaWFsOiJiYXNpYyIsTGluZURhc2hlZE1hdGVyaWFsOiJkYXNoZWQiLFBvaW50c01hdGVyaWFsOiJwb2ludHMiLFNoYWRvd01hdGVyaWFsOiJzaGFkb3ciLFNwcml0ZU1hdGVyaWFsOiJzcHJpdGUifSxmPVsicHJlY2lzaW9uIiwiaXNXZWJHTDIiLCJzdXBwb3J0c1ZlcnRleFRleHR1cmVzIiwib3V0cHV0RW5jb2RpbmciLCJpbnN0YW5jaW5nIiwiaW5zdGFuY2luZ0NvbG9yIiwibWFwIiwibWFwRW5jb2RpbmciLCJtYXRjYXAiLCJtYXRjYXBFbmNvZGluZyIsImVudk1hcCIsImVudk1hcE1vZGUiLCJlbnZNYXBFbmNvZGluZyIsImVudk1hcEN1YmVVViIsImxpZ2h0TWFwIiwibGlnaHRNYXBFbmNvZGluZyIsImFvTWFwIiwiZW1pc3NpdmVNYXAiLCJlbWlzc2l2ZU1hcEVuY29kaW5nIiwiYnVtcE1hcCIsIm5vcm1hbE1hcCIsIm9iamVjdFNwYWNlTm9ybWFsTWFwIiwidGFuZ2VudFNwYWNlTm9ybWFsTWFwIiwiY2xlYXJjb2F0TWFwIiwiY2xlYXJjb2F0Um91Z2huZXNzTWFwIiwiY2xlYXJjb2F0Tm9ybWFsTWFwIiwiZGlzcGxhY2VtZW50TWFwIiwic3BlY3VsYXJNYXAiLCJyb3VnaG5lc3NNYXAiLCJtZXRhbG5lc3NNYXAiLCJncmFkaWVudE1hcCIsImFscGhhTWFwIiwiY29tYmluZSIsInZlcnRleENvbG9ycyIsInZlcnRleFRhbmdlbnRzIiwidmVydGV4VXZzIiwidXZzVmVydGV4T25seSIsImZvZyIsInVzZUZvZyIsImZvZ0V4cDIiLCJmbGF0U2hhZGluZyIsInNpemVBdHRlbnVhdGlvbiIsImxvZ2FyaXRobWljRGVwdGhCdWZmZXIiLCJza2lubmluZyIsIm1heEJvbmVzIiwidXNlVmVydGV4VGV4dHVyZSIsIm1vcnBoVGFyZ2V0cyIsIm1vcnBoTm9ybWFscyIsIm1heE1vcnBoVGFyZ2V0cyIsIm1heE1vcnBoTm9ybWFscyIsInByZW11bHRpcGxpZWRBbHBoYSIsIm51bURpckxpZ2h0cyIsIm51bVBvaW50TGlnaHRzIiwibnVtU3BvdExpZ2h0cyIsIm51bUhlbWlMaWdodHMiLCJudW1SZWN0QXJlYUxpZ2h0cyIsIm51bURpckxpZ2h0U2hhZG93cyIsIm51bVBvaW50TGlnaHRTaGFkb3dzIiwibnVtU3BvdExpZ2h0U2hhZG93cyIsInNoYWRvd01hcEVuYWJsZWQiLCJzaGFkb3dNYXBUeXBlIiwidG9uZU1hcHBpbmciLCJwaHlzaWNhbGx5Q29ycmVjdExpZ2h0cyIsImFscGhhVGVzdCIsImRvdWJsZVNpZGVkIiwiZmxpcFNpZGVkIiwibnVtQ2xpcHBpbmdQbGFuZXMiLCJudW1DbGlwSW50ZXJzZWN0aW9uIiwiZGVwdGhQYWNraW5nIiwiZGl0aGVyaW5nIiwic2hlZW4iLCJ0cmFuc21pc3Npb25NYXAiXTtmdW5jdGlvbiBtKHQpe2xldCBlO3JldHVybiB0JiZ0LmlzVGV4dHVyZT9lPXQuZW5jb2Rpbmc6dCYmdC5pc1dlYkdMUmVuZGVyVGFyZ2V0Pyhjb25zb2xlLndhcm4oIlRIUkVFLldlYkdMUHJvZ3JhbXMuZ2V0VGV4dHVyZUVuY29kaW5nRnJvbU1hcDogZG9uJ3QgdXNlIHJlbmRlciB0YXJnZXRzIGFzIHRleHR1cmVzLiBVc2UgdGhlaXIgLnRleHR1cmUgcHJvcGVydHkgaW5zdGVhZC4iKSxlPXQudGV4dHVyZS5lbmNvZGluZyk6ZT1ZQnQsZX1yZXR1cm57Z2V0UGFyYW1ldGVyczpmdW5jdGlvbiBnKHIsYSxmLF8seSl7Y29uc3Qgdj1fLmZvZyxiPWUuZ2V0KHIuZW52TWFwfHwoci5pc01lc2hTdGFuZGFyZE1hdGVyaWFsP18uZW52aXJvbm1lbnQ6bnVsbCkpLHg9cFtyLnR5cGVdLHc9eS5pc1NraW5uZWRNZXNoPyhmdW5jdGlvbiBTKHQpe2NvbnN0IGU9dC5za2VsZXRvbi5ib25lcztpZihjKXJldHVybiAxMDI0O3tjb25zdCB0PU1hdGguZmxvb3IoKHUtMjApLzQpLG49TWF0aC5taW4odCxlLmxlbmd0aCk7cmV0dXJuIG48ZS5sZW5ndGg/KGNvbnNvbGUud2FybigiVEhSRUUuV2ViR0xSZW5kZXJlcjogU2tlbGV0b24gaGFzICIrZS5sZW5ndGgrIiBib25lcy4gVGhpcyBHUFUgc3VwcG9ydHMgIituKyIuIiksMCk6bn19KSh5KTowO2xldCBNLEU7aWYobnVsbCE9PXIucHJlY2lzaW9uJiYoZD1pLmdldE1heFByZWNpc2lvbihyLnByZWNpc2lvbiksZCE9PXIucHJlY2lzaW9uJiZjb25zb2xlLndhcm4oIlRIUkVFLldlYkdMUHJvZ3JhbS5nZXRQYXJhbWV0ZXJzOiIsci5wcmVjaXNpb24sIm5vdCBzdXBwb3J0ZWQsIHVzaW5nIixkLCJpbnN0ZWFkLiIpKSx4KXtjb25zdCB0PVFWdFt4XTtNPXQudmVydGV4U2hhZGVyLEU9dC5mcmFnbWVudFNoYWRlcn1lbHNlIE09ci52ZXJ0ZXhTaGFkZXIsRT1yLmZyYWdtZW50U2hhZGVyO2NvbnN0IFQ9dC5nZXRSZW5kZXJUYXJnZXQoKTtyZXR1cm57aXNXZWJHTDI6cyxzaGFkZXJJRDp4LHNoYWRlck5hbWU6ci50eXBlLHZlcnRleFNoYWRlcjpNLGZyYWdtZW50U2hhZGVyOkUsZGVmaW5lczpyLmRlZmluZXMsaXNSYXdTaGFkZXJNYXRlcmlhbDohMD09PXIuaXNSYXdTaGFkZXJNYXRlcmlhbCxnbHNsVmVyc2lvbjpyLmdsc2xWZXJzaW9uLHByZWNpc2lvbjpkLGluc3RhbmNpbmc6ITA9PT15LmlzSW5zdGFuY2VkTWVzaCxpbnN0YW5jaW5nQ29sb3I6ITA9PT15LmlzSW5zdGFuY2VkTWVzaCYmbnVsbCE9PXkuaW5zdGFuY2VDb2xvcixzdXBwb3J0c1ZlcnRleFRleHR1cmVzOmgsb3V0cHV0RW5jb2Rpbmc6bnVsbCE9PVQ/bShULnRleHR1cmUpOnQub3V0cHV0RW5jb2RpbmcsbWFwOiEhci5tYXAsbWFwRW5jb2Rpbmc6bShyLm1hcCksbWF0Y2FwOiEhci5tYXRjYXAsbWF0Y2FwRW5jb2Rpbmc6bShyLm1hdGNhcCksZW52TWFwOiEhYixlbnZNYXBNb2RlOmImJmIubWFwcGluZyxlbnZNYXBFbmNvZGluZzptKGIpLGVudk1hcEN1YmVVVjohIWImJihiLm1hcHBpbmc9PT1sQnR8fGIubWFwcGluZz09PWNCdCksbGlnaHRNYXA6ISFyLmxpZ2h0TWFwLGxpZ2h0TWFwRW5jb2Rpbmc6bShyLmxpZ2h0TWFwKSxhb01hcDohIXIuYW9NYXAsZW1pc3NpdmVNYXA6ISFyLmVtaXNzaXZlTWFwLGVtaXNzaXZlTWFwRW5jb2Rpbmc6bShyLmVtaXNzaXZlTWFwKSxidW1wTWFwOiEhci5idW1wTWFwLG5vcm1hbE1hcDohIXIubm9ybWFsTWFwLG9iamVjdFNwYWNlTm9ybWFsTWFwOjE9PT1yLm5vcm1hbE1hcFR5cGUsdGFuZ2VudFNwYWNlTm9ybWFsTWFwOjA9PT1yLm5vcm1hbE1hcFR5cGUsY2xlYXJjb2F0TWFwOiEhci5jbGVhcmNvYXRNYXAsY2xlYXJjb2F0Um91Z2huZXNzTWFwOiEhci5jbGVhcmNvYXRSb3VnaG5lc3NNYXAsY2xlYXJjb2F0Tm9ybWFsTWFwOiEhci5jbGVhcmNvYXROb3JtYWxNYXAsZGlzcGxhY2VtZW50TWFwOiEhci5kaXNwbGFjZW1lbnRNYXAscm91Z2huZXNzTWFwOiEhci5yb3VnaG5lc3NNYXAsbWV0YWxuZXNzTWFwOiEhci5tZXRhbG5lc3NNYXAsc3BlY3VsYXJNYXA6ISFyLnNwZWN1bGFyTWFwLGFscGhhTWFwOiEhci5hbHBoYU1hcCxncmFkaWVudE1hcDohIXIuZ3JhZGllbnRNYXAsc2hlZW46ISFyLnNoZWVuLHRyYW5zbWlzc2lvbk1hcDohIXIudHJhbnNtaXNzaW9uTWFwLGNvbWJpbmU6ci5jb21iaW5lLHZlcnRleFRhbmdlbnRzOnIubm9ybWFsTWFwJiZyLnZlcnRleFRhbmdlbnRzLHZlcnRleENvbG9yczpyLnZlcnRleENvbG9ycyx2ZXJ0ZXhVdnM6ISEoci5tYXB8fHIuYnVtcE1hcHx8ci5ub3JtYWxNYXB8fHIuc3BlY3VsYXJNYXB8fHIuYWxwaGFNYXB8fHIuZW1pc3NpdmVNYXB8fHIucm91Z2huZXNzTWFwfHxyLm1ldGFsbmVzc01hcHx8ci5jbGVhcmNvYXRNYXB8fHIuY2xlYXJjb2F0Um91Z2huZXNzTWFwfHxyLmNsZWFyY29hdE5vcm1hbE1hcHx8ci5kaXNwbGFjZW1lbnRNYXB8fHIudHJhbnNtaXNzaW9uTWFwKSx1dnNWZXJ0ZXhPbmx5OiEoci5tYXB8fHIuYnVtcE1hcHx8ci5ub3JtYWxNYXB8fHIuc3BlY3VsYXJNYXB8fHIuYWxwaGFNYXB8fHIuZW1pc3NpdmVNYXB8fHIucm91Z2huZXNzTWFwfHxyLm1ldGFsbmVzc01hcHx8ci5jbGVhcmNvYXROb3JtYWxNYXB8fHIudHJhbnNtaXNzaW9uTWFwfHwhci5kaXNwbGFjZW1lbnRNYXApLGZvZzohIXYsdXNlRm9nOnIuZm9nLGZvZ0V4cDI6diYmdi5pc0ZvZ0V4cDIsZmxhdFNoYWRpbmc6ci5mbGF0U2hhZGluZyxzaXplQXR0ZW51YXRpb246ci5zaXplQXR0ZW51YXRpb24sbG9nYXJpdGhtaWNEZXB0aEJ1ZmZlcjpsLHNraW5uaW5nOnIuc2tpbm5pbmcmJnc+MCxtYXhCb25lczp3LHVzZVZlcnRleFRleHR1cmU6Yyxtb3JwaFRhcmdldHM6ci5tb3JwaFRhcmdldHMsbW9ycGhOb3JtYWxzOnIubW9ycGhOb3JtYWxzLG1heE1vcnBoVGFyZ2V0czp0Lm1heE1vcnBoVGFyZ2V0cyxtYXhNb3JwaE5vcm1hbHM6dC5tYXhNb3JwaE5vcm1hbHMsbnVtRGlyTGlnaHRzOmEuZGlyZWN0aW9uYWwubGVuZ3RoLG51bVBvaW50TGlnaHRzOmEucG9pbnQubGVuZ3RoLG51bVNwb3RMaWdodHM6YS5zcG90Lmxlbmd0aCxudW1SZWN0QXJlYUxpZ2h0czphLnJlY3RBcmVhLmxlbmd0aCxudW1IZW1pTGlnaHRzOmEuaGVtaS5sZW5ndGgsbnVtRGlyTGlnaHRTaGFkb3dzOmEuZGlyZWN0aW9uYWxTaGFkb3dNYXAubGVuZ3RoLG51bVBvaW50TGlnaHRTaGFkb3dzOmEucG9pbnRTaGFkb3dNYXAubGVuZ3RoLG51bVNwb3RMaWdodFNoYWRvd3M6YS5zcG90U2hhZG93TWFwLmxlbmd0aCxudW1DbGlwcGluZ1BsYW5lczpvLm51bVBsYW5lcyxudW1DbGlwSW50ZXJzZWN0aW9uOm8ubnVtSW50ZXJzZWN0aW9uLGRpdGhlcmluZzpyLmRpdGhlcmluZyxzaGFkb3dNYXBFbmFibGVkOnQuc2hhZG93TWFwLmVuYWJsZWQmJmYubGVuZ3RoPjAsc2hhZG93TWFwVHlwZTp0LnNoYWRvd01hcC50eXBlLHRvbmVNYXBwaW5nOnIudG9uZU1hcHBlZD90LnRvbmVNYXBwaW5nOjAscGh5c2ljYWxseUNvcnJlY3RMaWdodHM6dC5waHlzaWNhbGx5Q29ycmVjdExpZ2h0cyxwcmVtdWx0aXBsaWVkQWxwaGE6ci5wcmVtdWx0aXBsaWVkQWxwaGEsYWxwaGFUZXN0OnIuYWxwaGFUZXN0LGRvdWJsZVNpZGVkOjI9PT1yLnNpZGUsZmxpcFNpZGVkOjE9PT1yLnNpZGUsZGVwdGhQYWNraW5nOnZvaWQgMCE9PXIuZGVwdGhQYWNraW5nJiZyLmRlcHRoUGFja2luZyxpbmRleDBBdHRyaWJ1dGVOYW1lOnIuaW5kZXgwQXR0cmlidXRlTmFtZSxleHRlbnNpb25EZXJpdmF0aXZlczpyLmV4dGVuc2lvbnMmJnIuZXh0ZW5zaW9ucy5kZXJpdmF0aXZlcyxleHRlbnNpb25GcmFnRGVwdGg6ci5leHRlbnNpb25zJiZyLmV4dGVuc2lvbnMuZnJhZ0RlcHRoLGV4dGVuc2lvbkRyYXdCdWZmZXJzOnIuZXh0ZW5zaW9ucyYmci5leHRlbnNpb25zLmRyYXdCdWZmZXJzLGV4dGVuc2lvblNoYWRlclRleHR1cmVMT0Q6ci5leHRlbnNpb25zJiZyLmV4dGVuc2lvbnMuc2hhZGVyVGV4dHVyZUxPRCxyZW5kZXJlckV4dGVuc2lvbkZyYWdEZXB0aDpzfHxuLmhhcygiRVhUX2ZyYWdfZGVwdGgiKSxyZW5kZXJlckV4dGVuc2lvbkRyYXdCdWZmZXJzOnN8fG4uaGFzKCJXRUJHTF9kcmF3X2J1ZmZlcnMiKSxyZW5kZXJlckV4dGVuc2lvblNoYWRlclRleHR1cmVMb2Q6c3x8bi5oYXMoIkVYVF9zaGFkZXJfdGV4dHVyZV9sb2QiKSxjdXN0b21Qcm9ncmFtQ2FjaGVLZXk6ci5jdXN0b21Qcm9ncmFtQ2FjaGVLZXkoKX19LGdldFByb2dyYW1DYWNoZUtleTpmdW5jdGlvbiBfKGUpe2NvbnN0IG49W107aWYoZS5zaGFkZXJJRD9uLnB1c2goZS5zaGFkZXJJRCk6KG4ucHVzaChlLmZyYWdtZW50U2hhZGVyKSxuLnB1c2goZS52ZXJ0ZXhTaGFkZXIpKSx2b2lkIDAhPT1lLmRlZmluZXMpZm9yKGNvbnN0IHQgaW4gZS5kZWZpbmVzKW4ucHVzaCh0KSxuLnB1c2goZS5kZWZpbmVzW3RdKTtpZighMT09PWUuaXNSYXdTaGFkZXJNYXRlcmlhbCl7Zm9yKGxldCB0PTA7dDxmLmxlbmd0aDt0Kyspbi5wdXNoKGVbZlt0XV0pO24ucHVzaCh0Lm91dHB1dEVuY29kaW5nKSxuLnB1c2godC5nYW1tYUZhY3Rvcil9cmV0dXJuIG4ucHVzaChlLmN1c3RvbVByb2dyYW1DYWNoZUtleSksbi5qb2luKCl9LGdldFVuaWZvcm1zOmZ1bmN0aW9uIHkodCl7Y29uc3QgZT1wW3QudHlwZV07bGV0IG47cmV0dXJuIG49ZT96VnQuY2xvbmUoUVZ0W2VdLnVuaWZvcm1zKTp0LnVuaWZvcm1zLG59LGFjcXVpcmVQcm9ncmFtOmZ1bmN0aW9uIHYoZSxuKXtsZXQgaTtmb3IobGV0IHQ9MCxlPWEubGVuZ3RoO3Q8ZTt0Kyspe2NvbnN0IGU9YVt0XTtpZihlLmNhY2hlS2V5PT09bil7aT1lLCsraS51c2VkVGltZXM7YnJlYWt9fXJldHVybiB2b2lkIDA9PT1pJiYoaT1uZXcgTFV0KHQsbixlLHIpLGEucHVzaChpKSksaX0scmVsZWFzZVByb2dyYW06ZnVuY3Rpb24gYih0KXtpZigwPT0tLXQudXNlZFRpbWVzKXtjb25zdCBlPWEuaW5kZXhPZih0KTthW2VdPWFbYS5sZW5ndGgtMV0sYS5wb3AoKSx0LmRlc3Ryb3koKX19LHByb2dyYW1zOmF9fWZ1bmN0aW9uIElVdCgpe2xldCB0PW5ldyBXZWFrTWFwO3JldHVybntnZXQ6ZnVuY3Rpb24gZShuKXtsZXQgaT10LmdldChuKTtyZXR1cm4gdm9pZCAwPT09aSYmKGk9e30sdC5zZXQobixpKSksaX0scmVtb3ZlOmZ1bmN0aW9uIG4oZSl7dC5kZWxldGUoZSl9LHVwZGF0ZTpmdW5jdGlvbiBpKGUsbixyKXt0LmdldChlKVtuXT1yfSxkaXNwb3NlOmZ1bmN0aW9uIHIoKXt0PW5ldyBXZWFrTWFwfX19ZnVuY3Rpb24gTlV0KHQsZSl7cmV0dXJuIHQuZ3JvdXBPcmRlciE9PWUuZ3JvdXBPcmRlcj90Lmdyb3VwT3JkZXItZS5ncm91cE9yZGVyOnQucmVuZGVyT3JkZXIhPT1lLnJlbmRlck9yZGVyP3QucmVuZGVyT3JkZXItZS5yZW5kZXJPcmRlcjp0LnByb2dyYW0hPT1lLnByb2dyYW0/dC5wcm9ncmFtLmlkLWUucHJvZ3JhbS5pZDp0Lm1hdGVyaWFsLmlkIT09ZS5tYXRlcmlhbC5pZD90Lm1hdGVyaWFsLmlkLWUubWF0ZXJpYWwuaWQ6dC56IT09ZS56P3Quei1lLno6dC5pZC1lLmlkfWZ1bmN0aW9uIE9VdCh0LGUpe3JldHVybiB0Lmdyb3VwT3JkZXIhPT1lLmdyb3VwT3JkZXI/dC5ncm91cE9yZGVyLWUuZ3JvdXBPcmRlcjp0LnJlbmRlck9yZGVyIT09ZS5yZW5kZXJPcmRlcj90LnJlbmRlck9yZGVyLWUucmVuZGVyT3JkZXI6dC56IT09ZS56P2Uuei10Lno6dC5pZC1lLmlkfWZ1bmN0aW9uIFJVdCh0KXtjb25zdCBlPVtdO2xldCBuPTA7Y29uc3QgaT1bXSxyPVtdLG89e2lkOi0xfTtmdW5jdGlvbiBhKGkscixhLHMsbCxjKXtsZXQgdT1lW25dO2NvbnN0IGg9dC5nZXQoYSk7cmV0dXJuIHZvaWQgMD09PXU/KHU9e2lkOmkuaWQsb2JqZWN0OmksZ2VvbWV0cnk6cixtYXRlcmlhbDphLHByb2dyYW06aC5wcm9ncmFtfHxvLGdyb3VwT3JkZXI6cyxyZW5kZXJPcmRlcjppLnJlbmRlck9yZGVyLHo6bCxncm91cDpjfSxlW25dPXUpOih1LmlkPWkuaWQsdS5vYmplY3Q9aSx1Lmdlb21ldHJ5PXIsdS5tYXRlcmlhbD1hLHUucHJvZ3JhbT1oLnByb2dyYW18fG8sdS5ncm91cE9yZGVyPXMsdS5yZW5kZXJPcmRlcj1pLnJlbmRlck9yZGVyLHUuej1sLHUuZ3JvdXA9YyksbisrLHV9cmV0dXJue29wYXF1ZTppLHRyYW5zcGFyZW50OnIsaW5pdDpmdW5jdGlvbiBzKCl7bj0wLGkubGVuZ3RoPTAsci5sZW5ndGg9MH0scHVzaDpmdW5jdGlvbiBsKHQsZSxuLG8scyxjKXtjb25zdCB1PWEodCxlLG4sbyxzLGMpOyghMD09PW4udHJhbnNwYXJlbnQ/cjppKS5wdXNoKHUpfSx1bnNoaWZ0OmZ1bmN0aW9uIGModCxlLG4sbyxzLGwpe2NvbnN0IGM9YSh0LGUsbixvLHMsbCk7KCEwPT09bi50cmFuc3BhcmVudD9yOmkpLnVuc2hpZnQoYyl9LGZpbmlzaDpmdW5jdGlvbiB1KCl7Zm9yKGxldCB0PW4saT1lLmxlbmd0aDt0PGk7dCsrKXtjb25zdCBuPWVbdF07aWYobnVsbD09PW4uaWQpYnJlYWs7bi5pZD1udWxsLG4ub2JqZWN0PW51bGwsbi5nZW9tZXRyeT1udWxsLG4ubWF0ZXJpYWw9bnVsbCxuLnByb2dyYW09bnVsbCxuLmdyb3VwPW51bGx9fSxzb3J0OmZ1bmN0aW9uIGgodCxlKXtpLmxlbmd0aD4xJiZpLnNvcnQodHx8TlV0KSxyLmxlbmd0aD4xJiZyLnNvcnQoZXx8T1V0KX19fWZ1bmN0aW9uIHpVdCh0KXtsZXQgZT1uZXcgV2Vha01hcDtyZXR1cm57Z2V0OmZ1bmN0aW9uIG4oaSxyKXtjb25zdCBvPWUuZ2V0KGkpO2xldCBhO3JldHVybiB2b2lkIDA9PT1vPyhhPW5ldyBSVXQodCksZS5zZXQoaSxuZXcgV2Vha01hcCksZS5nZXQoaSkuc2V0KHIsYSkpOihhPW8uZ2V0KHIpLHZvaWQgMD09PWEmJihhPW5ldyBSVXQodCksby5zZXQocixhKSkpLGF9LGRpc3Bvc2U6ZnVuY3Rpb24gaSgpe2U9bmV3IFdlYWtNYXB9fX1mdW5jdGlvbiBEVXQoKXtjb25zdCB0PXt9O3JldHVybntnZXQ6ZnVuY3Rpb24oZSl7aWYodm9pZCAwIT09dFtlLmlkXSlyZXR1cm4gdFtlLmlkXTtsZXQgbjtzd2l0Y2goZS50eXBlKXtjYXNlIkRpcmVjdGlvbmFsTGlnaHQiOm49e2RpcmVjdGlvbjpuZXcgeUh0LGNvbG9yOm5ldyBIRnR9O2JyZWFrO2Nhc2UiU3BvdExpZ2h0IjpuPXtwb3NpdGlvbjpuZXcgeUh0LGRpcmVjdGlvbjpuZXcgeUh0LGNvbG9yOm5ldyBIRnQsZGlzdGFuY2U6MCxjb25lQ29zOjAscGVudW1icmFDb3M6MCxkZWNheTowfTticmVhaztjYXNlIlBvaW50TGlnaHQiOm49e3Bvc2l0aW9uOm5ldyB5SHQsY29sb3I6bmV3IEhGdCxkaXN0YW5jZTowLGRlY2F5OjB9O2JyZWFrO2Nhc2UiSGVtaXNwaGVyZUxpZ2h0IjpuPXtkaXJlY3Rpb246bmV3IHlIdCxza3lDb2xvcjpuZXcgSEZ0LGdyb3VuZENvbG9yOm5ldyBIRnR9O2JyZWFrO2Nhc2UiUmVjdEFyZWFMaWdodCI6bj17Y29sb3I6bmV3IEhGdCxwb3NpdGlvbjpuZXcgeUh0LGhhbGZXaWR0aDpuZXcgeUh0LGhhbGZIZWlnaHQ6bmV3IHlIdH19cmV0dXJuIHRbZS5pZF09bixufX19bGV0IEJVdD0wO2Z1bmN0aW9uIEhVdCh0LGUpe3JldHVybihlLmNhc3RTaGFkb3c/MTowKS0odC5jYXN0U2hhZG93PzE6MCl9ZnVuY3Rpb24gRlV0KHQsZSl7Y29uc3Qgbj1uZXcgRFV0LGk9KGZ1bmN0aW9uIHIoKXtjb25zdCB0PXt9O3JldHVybntnZXQ6ZnVuY3Rpb24oZSl7aWYodm9pZCAwIT09dFtlLmlkXSlyZXR1cm4gdFtlLmlkXTtsZXQgbjtzd2l0Y2goZS50eXBlKXtjYXNlIkRpcmVjdGlvbmFsTGlnaHQiOmNhc2UiU3BvdExpZ2h0IjpuPXtzaGFkb3dCaWFzOjAsc2hhZG93Tm9ybWFsQmlhczowLHNoYWRvd1JhZGl1czoxLHNoYWRvd01hcFNpemU6bmV3IGxIdH07YnJlYWs7Y2FzZSJQb2ludExpZ2h0IjpuPXtzaGFkb3dCaWFzOjAsc2hhZG93Tm9ybWFsQmlhczowLHNoYWRvd1JhZGl1czoxLHNoYWRvd01hcFNpemU6bmV3IGxIdCxzaGFkb3dDYW1lcmFOZWFyOjEsc2hhZG93Q2FtZXJhRmFyOjFlM319cmV0dXJuIHRbZS5pZF09bixufX19KSgpLG89e3ZlcnNpb246MCxoYXNoOntkaXJlY3Rpb25hbExlbmd0aDotMSxwb2ludExlbmd0aDotMSxzcG90TGVuZ3RoOi0xLHJlY3RBcmVhTGVuZ3RoOi0xLGhlbWlMZW5ndGg6LTEsbnVtRGlyZWN0aW9uYWxTaGFkb3dzOi0xLG51bVBvaW50U2hhZG93czotMSxudW1TcG90U2hhZG93czotMX0sYW1iaWVudDpbMCwwLDBdLHByb2JlOltdLGRpcmVjdGlvbmFsOltdLGRpcmVjdGlvbmFsU2hhZG93OltdLGRpcmVjdGlvbmFsU2hhZG93TWFwOltdLGRpcmVjdGlvbmFsU2hhZG93TWF0cml4OltdLHNwb3Q6W10sc3BvdFNoYWRvdzpbXSxzcG90U2hhZG93TWFwOltdLHNwb3RTaGFkb3dNYXRyaXg6W10scmVjdEFyZWE6W10scmVjdEFyZWFMVEMxOm51bGwscmVjdEFyZWFMVEMyOm51bGwscG9pbnQ6W10scG9pbnRTaGFkb3c6W10scG9pbnRTaGFkb3dNYXA6W10scG9pbnRTaGFkb3dNYXRyaXg6W10saGVtaTpbXX07Zm9yKGxldCB0PTA7dDw5O3QrKylvLnByb2JlLnB1c2gobmV3IHlIdCk7Y29uc3QgYT1uZXcgeUh0LHM9bmV3IHFIdCxsPW5ldyBxSHQ7cmV0dXJue3NldHVwOmZ1bmN0aW9uIGMocil7bGV0IGE9MCxzPTAsbD0wO2ZvcihsZXQgdD0wO3Q8OTt0Kyspby5wcm9iZVt0XS5zZXQoMCwwLDApO2xldCBjPTAsdT0wLGg9MCxkPTAscD0wLGY9MCxtPTAsZz0wO3Iuc29ydChIVXQpO2ZvcihsZXQgdD0wLGU9ci5sZW5ndGg7dDxlO3QrKyl7Y29uc3QgZT1yW3RdLF89ZS5jb2xvcix5PWUuaW50ZW5zaXR5LHY9ZS5kaXN0YW5jZSxiPWUuc2hhZG93JiZlLnNoYWRvdy5tYXA/ZS5zaGFkb3cubWFwLnRleHR1cmU6bnVsbDtpZihlLmlzQW1iaWVudExpZ2h0KWErPV8ucip5LHMrPV8uZyp5LGwrPV8uYip5O2Vsc2UgaWYoZS5pc0xpZ2h0UHJvYmUpZm9yKGxldCB0PTA7dDw5O3QrKylvLnByb2JlW3RdLmFkZFNjYWxlZFZlY3RvcihlLnNoLmNvZWZmaWNpZW50c1t0XSx5KTtlbHNlIGlmKGUuaXNEaXJlY3Rpb25hbExpZ2h0KXtjb25zdCB0PW4uZ2V0KGUpO2lmKHQuY29sb3IuY29weShlLmNvbG9yKS5tdWx0aXBseVNjYWxhcihlLmludGVuc2l0eSksZS5jYXN0U2hhZG93KXtjb25zdCB0PWUuc2hhZG93LG49aS5nZXQoZSk7bi5zaGFkb3dCaWFzPXQuYmlhcyxuLnNoYWRvd05vcm1hbEJpYXM9dC5ub3JtYWxCaWFzLG4uc2hhZG93UmFkaXVzPXQucmFkaXVzLG4uc2hhZG93TWFwU2l6ZT10Lm1hcFNpemUsby5kaXJlY3Rpb25hbFNoYWRvd1tjXT1uLG8uZGlyZWN0aW9uYWxTaGFkb3dNYXBbY109YixvLmRpcmVjdGlvbmFsU2hhZG93TWF0cml4W2NdPWUuc2hhZG93Lm1hdHJpeCxmKyt9by5kaXJlY3Rpb25hbFtjXT10LGMrK31lbHNlIGlmKGUuaXNTcG90TGlnaHQpe2NvbnN0IHQ9bi5nZXQoZSk7aWYodC5wb3NpdGlvbi5zZXRGcm9tTWF0cml4UG9zaXRpb24oZS5tYXRyaXhXb3JsZCksdC5jb2xvci5jb3B5KF8pLm11bHRpcGx5U2NhbGFyKHkpLHQuZGlzdGFuY2U9dix0LmNvbmVDb3M9TWF0aC5jb3MoZS5hbmdsZSksdC5wZW51bWJyYUNvcz1NYXRoLmNvcyhlLmFuZ2xlKigxLWUucGVudW1icmEpKSx0LmRlY2F5PWUuZGVjYXksZS5jYXN0U2hhZG93KXtjb25zdCB0PWUuc2hhZG93LG49aS5nZXQoZSk7bi5zaGFkb3dCaWFzPXQuYmlhcyxuLnNoYWRvd05vcm1hbEJpYXM9dC5ub3JtYWxCaWFzLG4uc2hhZG93UmFkaXVzPXQucmFkaXVzLG4uc2hhZG93TWFwU2l6ZT10Lm1hcFNpemUsby5zcG90U2hhZG93W2hdPW4sby5zcG90U2hhZG93TWFwW2hdPWIsby5zcG90U2hhZG93TWF0cml4W2hdPWUuc2hhZG93Lm1hdHJpeCxnKyt9by5zcG90W2hdPXQsaCsrfWVsc2UgaWYoZS5pc1JlY3RBcmVhTGlnaHQpe2NvbnN0IHQ9bi5nZXQoZSk7dC5jb2xvci5jb3B5KF8pLm11bHRpcGx5U2NhbGFyKHkpLHQuaGFsZldpZHRoLnNldCguNSplLndpZHRoLDAsMCksdC5oYWxmSGVpZ2h0LnNldCgwLC41KmUuaGVpZ2h0LDApLG8ucmVjdEFyZWFbZF09dCxkKyt9ZWxzZSBpZihlLmlzUG9pbnRMaWdodCl7Y29uc3QgdD1uLmdldChlKTtpZih0LmNvbG9yLmNvcHkoZS5jb2xvcikubXVsdGlwbHlTY2FsYXIoZS5pbnRlbnNpdHkpLHQuZGlzdGFuY2U9ZS5kaXN0YW5jZSx0LmRlY2F5PWUuZGVjYXksZS5jYXN0U2hhZG93KXtjb25zdCB0PWUuc2hhZG93LG49aS5nZXQoZSk7bi5zaGFkb3dCaWFzPXQuYmlhcyxuLnNoYWRvd05vcm1hbEJpYXM9dC5ub3JtYWxCaWFzLG4uc2hhZG93UmFkaXVzPXQucmFkaXVzLG4uc2hhZG93TWFwU2l6ZT10Lm1hcFNpemUsbi5zaGFkb3dDYW1lcmFOZWFyPXQuY2FtZXJhLm5lYXIsbi5zaGFkb3dDYW1lcmFGYXI9dC5jYW1lcmEuZmFyLG8ucG9pbnRTaGFkb3dbdV09bixvLnBvaW50U2hhZG93TWFwW3VdPWIsby5wb2ludFNoYWRvd01hdHJpeFt1XT1lLnNoYWRvdy5tYXRyaXgsbSsrfW8ucG9pbnRbdV09dCx1Kyt9ZWxzZSBpZihlLmlzSGVtaXNwaGVyZUxpZ2h0KXtjb25zdCB0PW4uZ2V0KGUpO3Quc2t5Q29sb3IuY29weShlLmNvbG9yKS5tdWx0aXBseVNjYWxhcih5KSx0Lmdyb3VuZENvbG9yLmNvcHkoZS5ncm91bmRDb2xvcikubXVsdGlwbHlTY2FsYXIoeSksby5oZW1pW3BdPXQscCsrfX1kPjAmJihlLmlzV2ViR0wyfHwhMD09PXQuaGFzKCJPRVNfdGV4dHVyZV9mbG9hdF9saW5lYXIiKT8oby5yZWN0QXJlYUxUQzE9SlZ0LkxUQ19GTE9BVF8xLG8ucmVjdEFyZWFMVEMyPUpWdC5MVENfRkxPQVRfMik6ITA9PT10LmhhcygiT0VTX3RleHR1cmVfaGFsZl9mbG9hdF9saW5lYXIiKT8oby5yZWN0QXJlYUxUQzE9SlZ0LkxUQ19IQUxGXzEsby5yZWN0QXJlYUxUQzI9SlZ0LkxUQ19IQUxGXzIpOmNvbnNvbGUuZXJyb3IoIlRIUkVFLldlYkdMUmVuZGVyZXI6IFVuYWJsZSB0byB1c2UgUmVjdEFyZWFMaWdodC4gTWlzc2luZyBXZWJHTCBleHRlbnNpb25zLiIpKSxvLmFtYmllbnRbMF09YSxvLmFtYmllbnRbMV09cyxvLmFtYmllbnRbMl09bDtjb25zdCBfPW8uaGFzaDtfLmRpcmVjdGlvbmFsTGVuZ3RoPT09YyYmXy5wb2ludExlbmd0aD09PXUmJl8uc3BvdExlbmd0aD09PWgmJl8ucmVjdEFyZWFMZW5ndGg9PT1kJiZfLmhlbWlMZW5ndGg9PT1wJiZfLm51bURpcmVjdGlvbmFsU2hhZG93cz09PWYmJl8ubnVtUG9pbnRTaGFkb3dzPT09bSYmXy5udW1TcG90U2hhZG93cz09PWd8fChvLmRpcmVjdGlvbmFsLmxlbmd0aD1jLG8uc3BvdC5sZW5ndGg9aCxvLnJlY3RBcmVhLmxlbmd0aD1kLG8ucG9pbnQubGVuZ3RoPXUsby5oZW1pLmxlbmd0aD1wLG8uZGlyZWN0aW9uYWxTaGFkb3cubGVuZ3RoPWYsby5kaXJlY3Rpb25hbFNoYWRvd01hcC5sZW5ndGg9ZixvLnBvaW50U2hhZG93Lmxlbmd0aD1tLG8ucG9pbnRTaGFkb3dNYXAubGVuZ3RoPW0sby5zcG90U2hhZG93Lmxlbmd0aD1nLG8uc3BvdFNoYWRvd01hcC5sZW5ndGg9ZyxvLmRpcmVjdGlvbmFsU2hhZG93TWF0cml4Lmxlbmd0aD1mLG8ucG9pbnRTaGFkb3dNYXRyaXgubGVuZ3RoPW0sby5zcG90U2hhZG93TWF0cml4Lmxlbmd0aD1nLF8uZGlyZWN0aW9uYWxMZW5ndGg9YyxfLnBvaW50TGVuZ3RoPXUsXy5zcG90TGVuZ3RoPWgsXy5yZWN0QXJlYUxlbmd0aD1kLF8uaGVtaUxlbmd0aD1wLF8ubnVtRGlyZWN0aW9uYWxTaGFkb3dzPWYsXy5udW1Qb2ludFNoYWRvd3M9bSxfLm51bVNwb3RTaGFkb3dzPWcsby52ZXJzaW9uPUJVdCsrKX0sc2V0dXBWaWV3OmZ1bmN0aW9uIHUodCxlKXtsZXQgbj0wLGk9MCxyPTAsYz0wLHU9MDtjb25zdCBoPWUubWF0cml4V29ybGRJbnZlcnNlO2ZvcihsZXQgZT0wLGQ9dC5sZW5ndGg7ZTxkO2UrKyl7Y29uc3QgZD10W2VdO2lmKGQuaXNEaXJlY3Rpb25hbExpZ2h0KXtjb25zdCB0PW8uZGlyZWN0aW9uYWxbbl07dC5kaXJlY3Rpb24uc2V0RnJvbU1hdHJpeFBvc2l0aW9uKGQubWF0cml4V29ybGQpLGEuc2V0RnJvbU1hdHJpeFBvc2l0aW9uKGQudGFyZ2V0Lm1hdHJpeFdvcmxkKSx0LmRpcmVjdGlvbi5zdWIoYSksdC5kaXJlY3Rpb24udHJhbnNmb3JtRGlyZWN0aW9uKGgpLG4rK31lbHNlIGlmKGQuaXNTcG90TGlnaHQpe2NvbnN0IHQ9by5zcG90W3JdO3QucG9zaXRpb24uc2V0RnJvbU1hdHJpeFBvc2l0aW9uKGQubWF0cml4V29ybGQpLHQucG9zaXRpb24uYXBwbHlNYXRyaXg0KGgpLHQuZGlyZWN0aW9uLnNldEZyb21NYXRyaXhQb3NpdGlvbihkLm1hdHJpeFdvcmxkKSxhLnNldEZyb21NYXRyaXhQb3NpdGlvbihkLnRhcmdldC5tYXRyaXhXb3JsZCksdC5kaXJlY3Rpb24uc3ViKGEpLHQuZGlyZWN0aW9uLnRyYW5zZm9ybURpcmVjdGlvbihoKSxyKyt9ZWxzZSBpZihkLmlzUmVjdEFyZWFMaWdodCl7Y29uc3QgdD1vLnJlY3RBcmVhW2NdO3QucG9zaXRpb24uc2V0RnJvbU1hdHJpeFBvc2l0aW9uKGQubWF0cml4V29ybGQpLHQucG9zaXRpb24uYXBwbHlNYXRyaXg0KGgpLGwuaWRlbnRpdHkoKSxzLmNvcHkoZC5tYXRyaXhXb3JsZCkscy5wcmVtdWx0aXBseShoKSxsLmV4dHJhY3RSb3RhdGlvbihzKSx0LmhhbGZXaWR0aC5zZXQoLjUqZC53aWR0aCwwLDApLHQuaGFsZkhlaWdodC5zZXQoMCwuNSpkLmhlaWdodCwwKSx0LmhhbGZXaWR0aC5hcHBseU1hdHJpeDQobCksdC5oYWxmSGVpZ2h0LmFwcGx5TWF0cml4NChsKSxjKyt9ZWxzZSBpZihkLmlzUG9pbnRMaWdodCl7Y29uc3QgdD1vLnBvaW50W2ldO3QucG9zaXRpb24uc2V0RnJvbU1hdHJpeFBvc2l0aW9uKGQubWF0cml4V29ybGQpLHQucG9zaXRpb24uYXBwbHlNYXRyaXg0KGgpLGkrK31lbHNlIGlmKGQuaXNIZW1pc3BoZXJlTGlnaHQpe2NvbnN0IHQ9by5oZW1pW3VdO3QuZGlyZWN0aW9uLnNldEZyb21NYXRyaXhQb3NpdGlvbihkLm1hdHJpeFdvcmxkKSx0LmRpcmVjdGlvbi50cmFuc2Zvcm1EaXJlY3Rpb24oaCksdC5kaXJlY3Rpb24ubm9ybWFsaXplKCksdSsrfX19LHN0YXRlOm99fWZ1bmN0aW9uIFZVdCh0LGUpe2NvbnN0IG49bmV3IEZVdCh0LGUpLGk9W10scj1bXTtyZXR1cm57aW5pdDpmdW5jdGlvbiBvKCl7aS5sZW5ndGg9MCxyLmxlbmd0aD0wfSxzdGF0ZTp7bGlnaHRzQXJyYXk6aSxzaGFkb3dzQXJyYXk6cixsaWdodHM6bn0sc2V0dXBMaWdodHM6ZnVuY3Rpb24gYSgpe24uc2V0dXAoaSl9LHNldHVwTGlnaHRzVmlldzpmdW5jdGlvbiBzKHQpe24uc2V0dXBWaWV3KGksdCl9LHB1c2hMaWdodDpmdW5jdGlvbiBsKHQpe2kucHVzaCh0KX0scHVzaFNoYWRvdzpmdW5jdGlvbiBjKHQpe3IucHVzaCh0KX19fWZ1bmN0aW9uIGpVdCh0LGUpe2xldCBuPW5ldyBXZWFrTWFwO3JldHVybntnZXQ6ZnVuY3Rpb24gaShyLG89MCl7bGV0IGE7cmV0dXJuITE9PT1uLmhhcyhyKT8oYT1uZXcgVlV0KHQsZSksbi5zZXQocixbXSksbi5nZXQocikucHVzaChhKSk6bz49bi5nZXQocikubGVuZ3RoPyhhPW5ldyBWVXQodCxlKSxuLmdldChyKS5wdXNoKGEpKTphPW4uZ2V0KHIpW29dLGF9LGRpc3Bvc2U6ZnVuY3Rpb24gcigpe249bmV3IFdlYWtNYXB9fX1mdW5jdGlvbiBVVXQodCl7akZ0LmNhbGwodGhpcyksdGhpcy50eXBlPSJNZXNoRGVwdGhNYXRlcmlhbCIsdGhpcy5kZXB0aFBhY2tpbmc9MzIwMCx0aGlzLnNraW5uaW5nPSExLHRoaXMubW9ycGhUYXJnZXRzPSExLHRoaXMubWFwPW51bGwsdGhpcy5hbHBoYU1hcD1udWxsLHRoaXMuZGlzcGxhY2VtZW50TWFwPW51bGwsdGhpcy5kaXNwbGFjZW1lbnRTY2FsZT0xLHRoaXMuZGlzcGxhY2VtZW50Qmlhcz0wLHRoaXMud2lyZWZyYW1lPSExLHRoaXMud2lyZWZyYW1lTGluZXdpZHRoPTEsdGhpcy5mb2c9ITEsdGhpcy5zZXRWYWx1ZXModCl9ZnVuY3Rpb24gR1V0KHQpe2pGdC5jYWxsKHRoaXMpLHRoaXMudHlwZT0iTWVzaERpc3RhbmNlTWF0ZXJpYWwiLHRoaXMucmVmZXJlbmNlUG9zaXRpb249bmV3IHlIdCx0aGlzLm5lYXJEaXN0YW5jZT0xLHRoaXMuZmFyRGlzdGFuY2U9MWUzLHRoaXMuc2tpbm5pbmc9ITEsdGhpcy5tb3JwaFRhcmdldHM9ITEsdGhpcy5tYXA9bnVsbCx0aGlzLmFscGhhTWFwPW51bGwsdGhpcy5kaXNwbGFjZW1lbnRNYXA9bnVsbCx0aGlzLmRpc3BsYWNlbWVudFNjYWxlPTEsdGhpcy5kaXNwbGFjZW1lbnRCaWFzPTAsdGhpcy5mb2c9ITEsdGhpcy5zZXRWYWx1ZXModCl9ZnVuY3Rpb24gV1V0KHQsZSxuKXtsZXQgaT1uZXcgWVZ0O2NvbnN0IHI9bmV3IGxIdCxvPW5ldyBsSHQsYT1uZXcgbUh0LHM9W10sbD1bXSxjPXt9LHU9ezA6MSwxOjAsMjoyfSxoPW5ldyBEVnQoe2RlZmluZXM6e1NBTVBMRV9SQVRFOjIvOCxIQUxGX1NBTVBMRV9SQVRFOjEvOH0sdW5pZm9ybXM6e3NoYWRvd19wYXNzOnt2YWx1ZTpudWxsfSxyZXNvbHV0aW9uOnt2YWx1ZTpuZXcgbEh0fSxyYWRpdXM6e3ZhbHVlOjR9fSx2ZXJ0ZXhTaGFkZXI6InZvaWQgbWFpbigpIHtcblx0Z2xfUG9zaXRpb24gPSB2ZWM0KCBwb3NpdGlvbiwgMS4wICk7XG59IixmcmFnbWVudFNoYWRlcjoidW5pZm9ybSBzYW1wbGVyMkQgc2hhZG93X3Bhc3M7XG51bmlmb3JtIHZlYzIgcmVzb2x1dGlvbjtcbnVuaWZvcm0gZmxvYXQgcmFkaXVzO1xuI2luY2x1ZGUgPHBhY2tpbmc+XG52b2lkIG1haW4oKSB7XG5cdGZsb2F0IG1lYW4gPSAwLjA7XG5cdGZsb2F0IHNxdWFyZWRfbWVhbiA9IDAuMDtcblx0ZmxvYXQgZGVwdGggPSB1bnBhY2tSR0JBVG9EZXB0aCggdGV4dHVyZTJEKCBzaGFkb3dfcGFzcywgKCBnbF9GcmFnQ29vcmQueHkgKSAvIHJlc29sdXRpb24gKSApO1xuXHRmb3IgKCBmbG9hdCBpID0gLTEuMDsgaSA8IDEuMCA7IGkgKz0gU0FNUExFX1JBVEUpIHtcblx0XHQjaWZkZWYgSE9SSVpPTlRBTF9QQVNTXG5cdFx0XHR2ZWMyIGRpc3RyaWJ1dGlvbiA9IHVucGFja1JHQkFUbzJIYWxmKCB0ZXh0dXJlMkQoIHNoYWRvd19wYXNzLCAoIGdsX0ZyYWdDb29yZC54eSArIHZlYzIoIGksIDAuMCApICogcmFkaXVzICkgLyByZXNvbHV0aW9uICkgKTtcblx0XHRcdG1lYW4gKz0gZGlzdHJpYnV0aW9uLng7XG5cdFx0XHRzcXVhcmVkX21lYW4gKz0gZGlzdHJpYnV0aW9uLnkgKiBkaXN0cmlidXRpb24ueSArIGRpc3RyaWJ1dGlvbi54ICogZGlzdHJpYnV0aW9uLng7XG5cdFx0I2Vsc2Vcblx0XHRcdGZsb2F0IGRlcHRoID0gdW5wYWNrUkdCQVRvRGVwdGgoIHRleHR1cmUyRCggc2hhZG93X3Bhc3MsICggZ2xfRnJhZ0Nvb3JkLnh5ICsgdmVjMiggMC4wLCBpICkgKiByYWRpdXMgKSAvIHJlc29sdXRpb24gKSApO1xuXHRcdFx0bWVhbiArPSBkZXB0aDtcblx0XHRcdHNxdWFyZWRfbWVhbiArPSBkZXB0aCAqIGRlcHRoO1xuXHRcdCNlbmRpZlxuXHR9XG5cdG1lYW4gPSBtZWFuICogSEFMRl9TQU1QTEVfUkFURTtcblx0c3F1YXJlZF9tZWFuID0gc3F1YXJlZF9tZWFuICogSEFMRl9TQU1QTEVfUkFURTtcblx0ZmxvYXQgc3RkX2RldiA9IHNxcnQoIHNxdWFyZWRfbWVhbiAtIG1lYW4gKiBtZWFuICk7XG5cdGdsX0ZyYWdDb2xvciA9IHBhY2sySGFsZlRvUkdCQSggdmVjMiggbWVhbiwgc3RkX2RldiApICk7XG59In0pLGQ9aC5jbG9uZSgpO2QuZGVmaW5lcy5IT1JJWk9OVEFMX1BBU1M9MTtjb25zdCBwPW5ldyBwVnQ7cC5zZXRBdHRyaWJ1dGUoInBvc2l0aW9uIixuZXcgcUZ0KG5ldyBGbG9hdDMyQXJyYXkoWy0xLC0xLC41LDMsLTEsLjUsLTEsMywuNV0pLDMpKTtjb25zdCBmPW5ldyBQVnQocCxoKSxtPXRoaXM7ZnVuY3Rpb24gZyhuLGkpe2NvbnN0IHI9ZS51cGRhdGUoZik7aC51bmlmb3Jtcy5zaGFkb3dfcGFzcy52YWx1ZT1uLm1hcC50ZXh0dXJlLGgudW5pZm9ybXMucmVzb2x1dGlvbi52YWx1ZT1uLm1hcFNpemUsaC51bmlmb3Jtcy5yYWRpdXMudmFsdWU9bi5yYWRpdXMsdC5zZXRSZW5kZXJUYXJnZXQobi5tYXBQYXNzKSx0LmNsZWFyKCksdC5yZW5kZXJCdWZmZXJEaXJlY3QoaSxudWxsLHIsaCxmLG51bGwpLGQudW5pZm9ybXMuc2hhZG93X3Bhc3MudmFsdWU9bi5tYXBQYXNzLnRleHR1cmUsZC51bmlmb3Jtcy5yZXNvbHV0aW9uLnZhbHVlPW4ubWFwU2l6ZSxkLnVuaWZvcm1zLnJhZGl1cy52YWx1ZT1uLnJhZGl1cyx0LnNldFJlbmRlclRhcmdldChuLm1hcCksdC5jbGVhcigpLHQucmVuZGVyQnVmZmVyRGlyZWN0KGksbnVsbCxyLGQsZixudWxsKX1mdW5jdGlvbiBfKHQsZSxuKXtjb25zdCBpPXQ8PDB8ZTw8MXxuPDwyO2xldCByPXNbaV07cmV0dXJuIHZvaWQgMD09PXImJihyPW5ldyBVVXQoe2RlcHRoUGFja2luZzozMjAxLG1vcnBoVGFyZ2V0czp0LHNraW5uaW5nOmV9KSxzW2ldPXIpLHJ9ZnVuY3Rpb24geSh0LGUsbil7Y29uc3QgaT10PDwwfGU8PDF8bjw8MjtsZXQgcj1sW2ldO3JldHVybiB2b2lkIDA9PT1yJiYocj1uZXcgR1V0KHttb3JwaFRhcmdldHM6dCxza2lubmluZzplfSksbFtpXT1yKSxyfWZ1bmN0aW9uIHYoZSxuLGkscixvLGEscyl7bGV0IGw9bnVsbCxoPV8sZD1lLmN1c3RvbURlcHRoTWF0ZXJpYWw7aWYoITA9PT1yLmlzUG9pbnRMaWdodCYmKGg9eSxkPWUuY3VzdG9tRGlzdGFuY2VNYXRlcmlhbCksdm9pZCAwPT09ZCl7bGV0IHQ9ITE7ITA9PT1pLm1vcnBoVGFyZ2V0cyYmKHQ9bi5tb3JwaEF0dHJpYnV0ZXMmJm4ubW9ycGhBdHRyaWJ1dGVzLnBvc2l0aW9uJiZuLm1vcnBoQXR0cmlidXRlcy5wb3NpdGlvbi5sZW5ndGg+MCk7bGV0IHI9ITE7ITA9PT1lLmlzU2tpbm5lZE1lc2gmJighMD09PWkuc2tpbm5pbmc/cj0hMDpjb25zb2xlLndhcm4oIlRIUkVFLldlYkdMU2hhZG93TWFwOiBUSFJFRS5Ta2lubmVkTWVzaCB3aXRoIG1hdGVyaWFsLnNraW5uaW5nIHNldCB0byBmYWxzZToiLGUpKSxsPWgodCxyLCEwPT09ZS5pc0luc3RhbmNlZE1lc2gpfWVsc2UgbD1kO2lmKHQubG9jYWxDbGlwcGluZ0VuYWJsZWQmJiEwPT09aS5jbGlwU2hhZG93cyYmMCE9PWkuY2xpcHBpbmdQbGFuZXMubGVuZ3RoKXtjb25zdCB0PWwudXVpZCxlPWkudXVpZDtsZXQgbj1jW3RdO3ZvaWQgMD09PW4mJihuPXt9LGNbdF09bik7bGV0IHI9bltlXTt2b2lkIDA9PT1yJiYocj1sLmNsb25lKCksbltlXT1yKSxsPXJ9cmV0dXJuIGwudmlzaWJsZT1pLnZpc2libGUsbC53aXJlZnJhbWU9aS53aXJlZnJhbWUsbC5zaWRlPTM9PT1zP251bGwhPT1pLnNoYWRvd1NpZGU/aS5zaGFkb3dTaWRlOmkuc2lkZTpudWxsIT09aS5zaGFkb3dTaWRlP2kuc2hhZG93U2lkZTp1W2kuc2lkZV0sbC5jbGlwU2hhZG93cz1pLmNsaXBTaGFkb3dzLGwuY2xpcHBpbmdQbGFuZXM9aS5jbGlwcGluZ1BsYW5lcyxsLmNsaXBJbnRlcnNlY3Rpb249aS5jbGlwSW50ZXJzZWN0aW9uLGwud2lyZWZyYW1lTGluZXdpZHRoPWkud2lyZWZyYW1lTGluZXdpZHRoLGwubGluZXdpZHRoPWkubGluZXdpZHRoLCEwPT09ci5pc1BvaW50TGlnaHQmJiEwPT09bC5pc01lc2hEaXN0YW5jZU1hdGVyaWFsJiYobC5yZWZlcmVuY2VQb3NpdGlvbi5zZXRGcm9tTWF0cml4UG9zaXRpb24oci5tYXRyaXhXb3JsZCksbC5uZWFyRGlzdGFuY2U9byxsLmZhckRpc3RhbmNlPWEpLGx9ZnVuY3Rpb24gYihuLHIsbyxhLHMpe2lmKCExPT09bi52aXNpYmxlKXJldHVybjtpZihuLmxheWVycy50ZXN0KHIubGF5ZXJzKSYmKG4uaXNNZXNofHxuLmlzTGluZXx8bi5pc1BvaW50cykmJihuLmNhc3RTaGFkb3d8fG4ucmVjZWl2ZVNoYWRvdyYmMz09PXMpJiYoIW4uZnJ1c3R1bUN1bGxlZHx8aS5pbnRlcnNlY3RzT2JqZWN0KG4pKSl7bi5tb2RlbFZpZXdNYXRyaXgubXVsdGlwbHlNYXRyaWNlcyhvLm1hdHJpeFdvcmxkSW52ZXJzZSxuLm1hdHJpeFdvcmxkKTtjb25zdCBpPWUudXBkYXRlKG4pLHI9bi5tYXRlcmlhbDtpZihBcnJheS5pc0FycmF5KHIpKXtjb25zdCBlPWkuZ3JvdXBzO2ZvcihsZXQgbD0wLGM9ZS5sZW5ndGg7bDxjO2wrKyl7Y29uc3QgYz1lW2xdLHU9cltjLm1hdGVyaWFsSW5kZXhdO2lmKHUmJnUudmlzaWJsZSl7Y29uc3QgZT12KG4saSx1LGEsby5uZWFyLG8uZmFyLHMpO3QucmVuZGVyQnVmZmVyRGlyZWN0KG8sbnVsbCxpLGUsbixjKX19fWVsc2UgaWYoci52aXNpYmxlKXtjb25zdCBlPXYobixpLHIsYSxvLm5lYXIsby5mYXIscyk7dC5yZW5kZXJCdWZmZXJEaXJlY3QobyxudWxsLGksZSxuLG51bGwpfX1jb25zdCBsPW4uY2hpbGRyZW47Zm9yKGxldCB0PTAsZT1sLmxlbmd0aDt0PGU7dCsrKWIobFt0XSxyLG8sYSxzKX10aGlzLmVuYWJsZWQ9ITEsdGhpcy5hdXRvVXBkYXRlPSEwLHRoaXMubmVlZHNVcGRhdGU9ITEsdGhpcy50eXBlPTEsdGhpcy5yZW5kZXI9ZnVuY3Rpb24oZSxzLGwpe2lmKCExPT09bS5lbmFibGVkKXJldHVybjtpZighMT09PW0uYXV0b1VwZGF0ZSYmITE9PT1tLm5lZWRzVXBkYXRlKXJldHVybjtpZigwPT09ZS5sZW5ndGgpcmV0dXJuO2NvbnN0IGM9dC5nZXRSZW5kZXJUYXJnZXQoKSx1PXQuZ2V0QWN0aXZlQ3ViZUZhY2UoKSxoPXQuZ2V0QWN0aXZlTWlwbWFwTGV2ZWwoKSxkPXQuc3RhdGU7ZC5zZXRCbGVuZGluZygwKSxkLmJ1ZmZlcnMuY29sb3Iuc2V0Q2xlYXIoMSwxLDEsMSksZC5idWZmZXJzLmRlcHRoLnNldFRlc3QoITApLGQuc2V0U2Npc3NvclRlc3QoITEpO2ZvcihsZXQgYz0wLHU9ZS5sZW5ndGg7Yzx1O2MrKyl7Y29uc3QgdT1lW2NdLGg9dS5zaGFkb3c7aWYodm9pZCAwPT09aCl7Y29uc29sZS53YXJuKCJUSFJFRS5XZWJHTFNoYWRvd01hcDoiLHUsImhhcyBubyBzaGFkb3cuIik7Y29udGludWV9aWYoITE9PT1oLmF1dG9VcGRhdGUmJiExPT09aC5uZWVkc1VwZGF0ZSljb250aW51ZTtyLmNvcHkoaC5tYXBTaXplKTtjb25zdCBwPWguZ2V0RnJhbWVFeHRlbnRzKCk7aWYoci5tdWx0aXBseShwKSxvLmNvcHkoaC5tYXBTaXplKSwoci54Pm58fHIueT5uKSYmKHIueD5uJiYoby54PU1hdGguZmxvb3Iobi9wLngpLHIueD1vLngqcC54LGgubWFwU2l6ZS54PW8ueCksci55Pm4mJihvLnk9TWF0aC5mbG9vcihuL3AueSksci55PW8ueSpwLnksaC5tYXBTaXplLnk9by55KSksbnVsbD09PWgubWFwJiYhaC5pc1BvaW50TGlnaHRTaGFkb3cmJjM9PT10aGlzLnR5cGUpe2NvbnN0IHQ9e21pbkZpbHRlcjpnQnQsbWFnRmlsdGVyOmdCdCxmb3JtYXQ6VEJ0fTtoLm1hcD1uZXcgZ0h0KHIueCxyLnksdCksaC5tYXAudGV4dHVyZS5uYW1lPXUubmFtZSsiLnNoYWRvd01hcCIsaC5tYXBQYXNzPW5ldyBnSHQoci54LHIueSx0KSxoLmNhbWVyYS51cGRhdGVQcm9qZWN0aW9uTWF0cml4KCl9bnVsbD09PWgubWFwJiYoaC5tYXA9bmV3IGdIdChyLngsci55LHttaW5GaWx0ZXI6cEJ0LG1hZ0ZpbHRlcjpwQnQsZm9ybWF0OlRCdH0pLGgubWFwLnRleHR1cmUubmFtZT11Lm5hbWUrIi5zaGFkb3dNYXAiLGguY2FtZXJhLnVwZGF0ZVByb2plY3Rpb25NYXRyaXgoKSksdC5zZXRSZW5kZXJUYXJnZXQoaC5tYXApLHQuY2xlYXIoKTtjb25zdCBmPWguZ2V0Vmlld3BvcnRDb3VudCgpO2ZvcihsZXQgdD0wO3Q8Zjt0Kyspe2NvbnN0IGU9aC5nZXRWaWV3cG9ydCh0KTthLnNldChvLngqZS54LG8ueSplLnksby54KmUueixvLnkqZS53KSxkLnZpZXdwb3J0KGEpLGgudXBkYXRlTWF0cmljZXModSx0KSxpPWguZ2V0RnJ1c3R1bSgpLGIocyxsLGguY2FtZXJhLHUsdGhpcy50eXBlKX1oLmlzUG9pbnRMaWdodFNoYWRvd3x8MyE9PXRoaXMudHlwZXx8ZyhoLGwpLGgubmVlZHNVcGRhdGU9ITF9bS5uZWVkc1VwZGF0ZT0hMSx0LnNldFJlbmRlclRhcmdldChjLHUsaCl9fWZ1bmN0aW9uIHFVdCh0LGUsbil7Y29uc3QgaT1uLmlzV2ViR0wyLHI9bmV3KGZ1bmN0aW9uIG8oKXtsZXQgZT0hMTtjb25zdCBuPW5ldyBtSHQ7bGV0IGk9bnVsbDtjb25zdCByPW5ldyBtSHQoMCwwLDAsMCk7cmV0dXJue3NldE1hc2s6ZnVuY3Rpb24obil7aT09PW58fGV8fCh0LmNvbG9yTWFzayhuLG4sbixuKSxpPW4pfSxzZXRMb2NrZWQ6ZnVuY3Rpb24odCl7ZT10fSxzZXRDbGVhcjpmdW5jdGlvbihlLGksbyxhLHMpeyEwPT09cyYmKGUqPWEsaSo9YSxvKj1hKSxuLnNldChlLGksbyxhKSwhMT09PXIuZXF1YWxzKG4pJiYodC5jbGVhckNvbG9yKGUsaSxvLGEpLHIuY29weShuKSl9LHJlc2V0OmZ1bmN0aW9uKCl7ZT0hMSxpPW51bGwsci5zZXQoLTEsMCwwLDApfX19KSxhPW5ldyhmdW5jdGlvbiBzKCl7bGV0IGU9ITEsbj1udWxsLGk9bnVsbCxyPW51bGw7cmV0dXJue3NldFRlc3Q6ZnVuY3Rpb24odCl7dD96KDI5MjkpOkQoMjkyOSl9LHNldE1hc2s6ZnVuY3Rpb24oaSl7bj09PWl8fGV8fCh0LmRlcHRoTWFzayhpKSxuPWkpfSxzZXRGdW5jOmZ1bmN0aW9uKGUpe2lmKGkhPT1lKXtpZihlKXN3aXRjaChlKXtjYXNlIDA6dC5kZXB0aEZ1bmMoNTEyKTticmVhaztjYXNlIDE6dC5kZXB0aEZ1bmMoNTE5KTticmVhaztjYXNlIDI6dC5kZXB0aEZ1bmMoNTEzKTticmVhaztjYXNlIDM6dC5kZXB0aEZ1bmMoNTE1KTticmVhaztjYXNlIDQ6dC5kZXB0aEZ1bmMoNTE0KTticmVhaztjYXNlIDU6dC5kZXB0aEZ1bmMoNTE4KTticmVhaztjYXNlIDY6dC5kZXB0aEZ1bmMoNTE2KTticmVhaztjYXNlIDc6dC5kZXB0aEZ1bmMoNTE3KTticmVhaztkZWZhdWx0OnQuZGVwdGhGdW5jKDUxNSl9ZWxzZSB0LmRlcHRoRnVuYyg1MTUpO2k9ZX19LHNldExvY2tlZDpmdW5jdGlvbih0KXtlPXR9LHNldENsZWFyOmZ1bmN0aW9uKGUpe3IhPT1lJiYodC5jbGVhckRlcHRoKGUpLHI9ZSl9LHJlc2V0OmZ1bmN0aW9uKCl7ZT0hMSxuPW51bGwsaT1udWxsLHI9bnVsbH19fSksbD1uZXcoZnVuY3Rpb24gYygpe2xldCBlPSExLG49bnVsbCxpPW51bGwscj1udWxsLG89bnVsbCxhPW51bGwscz1udWxsLGw9bnVsbCxjPW51bGw7cmV0dXJue3NldFRlc3Q6ZnVuY3Rpb24odCl7ZXx8KHQ/eigyOTYwKTpEKDI5NjApKX0sc2V0TWFzazpmdW5jdGlvbihpKXtuPT09aXx8ZXx8KHQuc3RlbmNpbE1hc2soaSksbj1pKX0sc2V0RnVuYzpmdW5jdGlvbihlLG4sYSl7aT09PWUmJnI9PT1uJiZvPT09YXx8KHQuc3RlbmNpbEZ1bmMoZSxuLGEpLGk9ZSxyPW4sbz1hKX0sc2V0T3A6ZnVuY3Rpb24oZSxuLGkpe2E9PT1lJiZzPT09biYmbD09PWl8fCh0LnN0ZW5jaWxPcChlLG4saSksYT1lLHM9bixsPWkpfSxzZXRMb2NrZWQ6ZnVuY3Rpb24odCl7ZT10fSxzZXRDbGVhcjpmdW5jdGlvbihlKXtjIT09ZSYmKHQuY2xlYXJTdGVuY2lsKGUpLGM9ZSl9LHJlc2V0OmZ1bmN0aW9uKCl7ZT0hMSxuPW51bGwsaT1udWxsLHI9bnVsbCxvPW51bGwsYT1udWxsLHM9bnVsbCxsPW51bGwsYz1udWxsfX19KTtsZXQgdT17fSxoPW51bGwsZD1udWxsLHA9bnVsbCxmPW51bGwsbT1udWxsLGc9bnVsbCxfPW51bGwseT1udWxsLHY9bnVsbCxiPSExLHg9bnVsbCx3PW51bGwsUz1udWxsLE09bnVsbCxFPW51bGw7Y29uc3QgVD10LmdldFBhcmFtZXRlcigzNTY2MSk7bGV0IEE9ITEsQz0wO2NvbnN0IGs9dC5nZXRQYXJhbWV0ZXIoNzkzOCk7LTEhPT1rLmluZGV4T2YoIldlYkdMIik/KEM9cGFyc2VGbG9hdCgvXldlYkdMIChcZCkvLmV4ZWMoaylbMV0pLEE9Qz49MSk6LTEhPT1rLmluZGV4T2YoIk9wZW5HTCBFUyIpJiYoQz1wYXJzZUZsb2F0KC9eT3BlbkdMIEVTIChcZCkvLmV4ZWMoaylbMV0pLEE9Qz49Mik7bGV0IEw9bnVsbCxQPXt9O2NvbnN0IEk9bmV3IG1IdCxOPW5ldyBtSHQ7ZnVuY3Rpb24gTyhlLG4saSl7Y29uc3Qgcj1uZXcgVWludDhBcnJheSg0KSxvPXQuY3JlYXRlVGV4dHVyZSgpO3QuYmluZFRleHR1cmUoZSxvKSx0LnRleFBhcmFtZXRlcmkoZSwxMDI0MSw5NzI4KSx0LnRleFBhcmFtZXRlcmkoZSwxMDI0MCw5NzI4KTtmb3IobGV0IGU9MDtlPGk7ZSsrKXQudGV4SW1hZ2UyRChuK2UsMCw2NDA4LDEsMSwwLDY0MDgsNTEyMSxyKTtyZXR1cm4gb31jb25zdCBSPXt9O2Z1bmN0aW9uIHooZSl7ITAhPT11W2VdJiYodC5lbmFibGUoZSksdVtlXT0hMCl9ZnVuY3Rpb24gRChlKXshMSE9PXVbZV0mJih0LmRpc2FibGUoZSksdVtlXT0hMSl9UlszNTUzXT1PKDM1NTMsMzU1MywxKSxSWzM0MDY3XT1PKDM0MDY3LDM0MDY5LDYpLHIuc2V0Q2xlYXIoMCwwLDAsMSksYS5zZXRDbGVhcigxKSxsLnNldENsZWFyKDApLHooMjkyOSksYS5zZXRGdW5jKDMpLFYoITEpLGooMSkseigyODg0KSxGKDApO2NvbnN0IEI9e1tuQnRdOjMyNzc0LDEwMTozMjc3OCwxMDI6MzI3Nzl9O2lmKGkpQlsxMDNdPTMyNzc1LEJbMTA0XT0zMjc3NjtlbHNle2NvbnN0IHQ9ZS5nZXQoIkVYVF9ibGVuZF9taW5tYXgiKTtudWxsIT09dCYmKEJbMTAzXT10Lk1JTl9FWFQsQlsxMDRdPXQuTUFYX0VYVCl9Y29uc3QgSD17MjAwOjAsMjAxOjEsMjAyOjc2OCwyMDQ6NzcwLDIxMDo3NzYsMjA4Ojc3NCwyMDY6NzcyLDIwMzo3NjksMjA1Ojc3MSwyMDk6Nzc1LDIwNzo3NzN9O2Z1bmN0aW9uIEYoZSxuLGkscixvLGEscyxsKXtpZigwIT09ZSl7aWYoZHx8KHooMzA0MiksZD0hMCksNT09PWUpbz1vfHxuLGE9YXx8aSxzPXN8fHIsbj09PWYmJm89PT1ffHwodC5ibGVuZEVxdWF0aW9uU2VwYXJhdGUoQltuXSxCW29dKSxmPW4sXz1vKSxpPT09bSYmcj09PWcmJmE9PT15JiZzPT09dnx8KHQuYmxlbmRGdW5jU2VwYXJhdGUoSFtpXSxIW3JdLEhbYV0sSFtzXSksbT1pLGc9cix5PWEsdj1zKSxwPWUsYj1udWxsO2Vsc2UgaWYoZSE9PXB8fGwhPT1iKXtpZihmPT09bkJ0JiZfPT09bkJ0fHwodC5ibGVuZEVxdWF0aW9uKDMyNzc0KSxmPW5CdCxfPW5CdCksbClzd2l0Y2goZSl7Y2FzZSAxOnQuYmxlbmRGdW5jU2VwYXJhdGUoMSw3NzEsMSw3NzEpO2JyZWFrO2Nhc2UgMjp0LmJsZW5kRnVuYygxLDEpO2JyZWFrO2Nhc2UgMzp0LmJsZW5kRnVuY1NlcGFyYXRlKDAsMCw3NjksNzcxKTticmVhaztjYXNlIDQ6dC5ibGVuZEZ1bmNTZXBhcmF0ZSgwLDc2OCwwLDc3MCk7YnJlYWs7ZGVmYXVsdDpjb25zb2xlLmVycm9yKCJUSFJFRS5XZWJHTFN0YXRlOiBJbnZhbGlkIGJsZW5kaW5nOiAiLGUpfWVsc2Ugc3dpdGNoKGUpe2Nhc2UgMTp0LmJsZW5kRnVuY1NlcGFyYXRlKDc3MCw3NzEsMSw3NzEpO2JyZWFrO2Nhc2UgMjp0LmJsZW5kRnVuYyg3NzAsMSk7YnJlYWs7Y2FzZSAzOnQuYmxlbmRGdW5jKDAsNzY5KTticmVhaztjYXNlIDQ6dC5ibGVuZEZ1bmMoMCw3NjgpO2JyZWFrO2RlZmF1bHQ6Y29uc29sZS5lcnJvcigiVEhSRUUuV2ViR0xTdGF0ZTogSW52YWxpZCBibGVuZGluZzogIixlKX1tPW51bGwsZz1udWxsLHk9bnVsbCx2PW51bGwscD1lLGI9bH19ZWxzZSBkJiYoRCgzMDQyKSxkPSExKX1mdW5jdGlvbiBWKGUpe3ghPT1lJiYodC5mcm9udEZhY2UoZT8yMzA0OjIzMDUpLHg9ZSl9ZnVuY3Rpb24gaihlKXswIT09ZT8oeigyODg0KSxlIT09dyYmdC5jdWxsRmFjZSgxPT09ZT8xMDI5OjI9PT1lPzEwMjg6MTAzMikpOkQoMjg4NCksdz1lfWZ1bmN0aW9uIFUoZSxuLGkpe2U/KHooMzI4MjMpLE09PT1uJiZFPT09aXx8KHQucG9seWdvbk9mZnNldChuLGkpLE09bixFPWkpKTpEKDMyODIzKX1mdW5jdGlvbiBHKGUpe3ZvaWQgMD09PWUmJihlPTMzOTg0K1QtMSksTCE9PWUmJih0LmFjdGl2ZVRleHR1cmUoZSksTD1lKX1yZXR1cm57YnVmZmVyczp7Y29sb3I6cixkZXB0aDphLHN0ZW5jaWw6bH0sZW5hYmxlOnosZGlzYWJsZTpELHVzZVByb2dyYW06ZnVuY3Rpb24gVyhlKXtyZXR1cm4gaCE9PWUmJih0LnVzZVByb2dyYW0oZSksaD1lLCEwKX0sc2V0QmxlbmRpbmc6RixzZXRNYXRlcmlhbDpmdW5jdGlvbiBxKHQsZSl7Mj09PXQuc2lkZT9EKDI4ODQpOnooMjg4NCk7bGV0IG49MT09PXQuc2lkZTtlJiYobj0hbiksVihuKSwxPT09dC5ibGVuZGluZyYmITE9PT10LnRyYW5zcGFyZW50P0YoMCk6Rih0LmJsZW5kaW5nLHQuYmxlbmRFcXVhdGlvbix0LmJsZW5kU3JjLHQuYmxlbmREc3QsdC5ibGVuZEVxdWF0aW9uQWxwaGEsdC5ibGVuZFNyY0FscGhhLHQuYmxlbmREc3RBbHBoYSx0LnByZW11bHRpcGxpZWRBbHBoYSksYS5zZXRGdW5jKHQuZGVwdGhGdW5jKSxhLnNldFRlc3QodC5kZXB0aFRlc3QpLGEuc2V0TWFzayh0LmRlcHRoV3JpdGUpLHIuc2V0TWFzayh0LmNvbG9yV3JpdGUpO2NvbnN0IGk9dC5zdGVuY2lsV3JpdGU7bC5zZXRUZXN0KGkpLGkmJihsLnNldE1hc2sodC5zdGVuY2lsV3JpdGVNYXNrKSxsLnNldEZ1bmModC5zdGVuY2lsRnVuYyx0LnN0ZW5jaWxSZWYsdC5zdGVuY2lsRnVuY01hc2spLGwuc2V0T3AodC5zdGVuY2lsRmFpbCx0LnN0ZW5jaWxaRmFpbCx0LnN0ZW5jaWxaUGFzcykpLFUodC5wb2x5Z29uT2Zmc2V0LHQucG9seWdvbk9mZnNldEZhY3Rvcix0LnBvbHlnb25PZmZzZXRVbml0cyl9LHNldEZsaXBTaWRlZDpWLHNldEN1bGxGYWNlOmosc2V0TGluZVdpZHRoOmZ1bmN0aW9uIFkoZSl7ZSE9PVMmJihBJiZ0LmxpbmVXaWR0aChlKSxTPWUpfSxzZXRQb2x5Z29uT2Zmc2V0OlUsc2V0U2Npc3NvclRlc3Q6ZnVuY3Rpb24gWCh0KXt0P3ooMzA4OSk6RCgzMDg5KX0sYWN0aXZlVGV4dHVyZTpHLGJpbmRUZXh0dXJlOmZ1bmN0aW9uICQoZSxuKXtudWxsPT09TCYmRygpO2xldCBpPVBbTF07dm9pZCAwPT09aSYmKGk9e3R5cGU6dm9pZCAwLHRleHR1cmU6dm9pZCAwfSxQW0xdPWkpLGkudHlwZT09PWUmJmkudGV4dHVyZT09PW58fCh0LmJpbmRUZXh0dXJlKGUsbnx8UltlXSksaS50eXBlPWUsaS50ZXh0dXJlPW4pfSx1bmJpbmRUZXh0dXJlOmZ1bmN0aW9uIEsoKXtjb25zdCBlPVBbTF07dm9pZCAwIT09ZSYmdm9pZCAwIT09ZS50eXBlJiYodC5iaW5kVGV4dHVyZShlLnR5cGUsbnVsbCksZS50eXBlPXZvaWQgMCxlLnRleHR1cmU9dm9pZCAwKX0sY29tcHJlc3NlZFRleEltYWdlMkQ6ZnVuY3Rpb24gWigpe3RyeXt0LmNvbXByZXNzZWRUZXhJbWFnZTJELmFwcGx5KHQsYXJndW1lbnRzKX1jYXRjaCh0KXtjb25zb2xlLmVycm9yKCJUSFJFRS5XZWJHTFN0YXRlOiIsdCl9fSx0ZXhJbWFnZTJEOmZ1bmN0aW9uIEooKXt0cnl7dC50ZXhJbWFnZTJELmFwcGx5KHQsYXJndW1lbnRzKX1jYXRjaCh0KXtjb25zb2xlLmVycm9yKCJUSFJFRS5XZWJHTFN0YXRlOiIsdCl9fSx0ZXhJbWFnZTNEOmZ1bmN0aW9uIFEoKXt0cnl7dC50ZXhJbWFnZTNELmFwcGx5KHQsYXJndW1lbnRzKX1jYXRjaCh0KXtjb25zb2xlLmVycm9yKCJUSFJFRS5XZWJHTFN0YXRlOiIsdCl9fSxzY2lzc29yOmZ1bmN0aW9uIHR0KGUpeyExPT09SS5lcXVhbHMoZSkmJih0LnNjaXNzb3IoZS54LGUueSxlLnosZS53KSxJLmNvcHkoZSkpfSx2aWV3cG9ydDpmdW5jdGlvbiBldChlKXshMT09PU4uZXF1YWxzKGUpJiYodC52aWV3cG9ydChlLngsZS55LGUueixlLncpLE4uY29weShlKSl9LHJlc2V0OmZ1bmN0aW9uIG50KCl7dT17fSxMPW51bGwsUD17fSxoPW51bGwsZD1udWxsLHA9bnVsbCxmPW51bGwsbT1udWxsLGc9bnVsbCxfPW51bGwseT1udWxsLHY9bnVsbCxiPSExLHg9bnVsbCx3PW51bGwsUz1udWxsLE09bnVsbCxFPW51bGwsci5yZXNldCgpLGEucmVzZXQoKSxsLnJlc2V0KCl9fX1mdW5jdGlvbiBZVXQodCxlLG4saSxyLG8sYSl7Y29uc3Qgcz1yLmlzV2ViR0wyLGw9ci5tYXhUZXh0dXJlcyxjPXIubWF4Q3ViZW1hcFNpemUsdT1yLm1heFRleHR1cmVTaXplLGg9ci5tYXhTYW1wbGVzLGQ9bmV3IFdlYWtNYXA7bGV0IHAsZj0hMTt0cnl7Zj0idW5kZWZpbmVkIiE9dHlwZW9mIE9mZnNjcmVlbkNhbnZhcyYmbnVsbCE9PW5ldyBPZmZzY3JlZW5DYW52YXMoMSwxKS5nZXRDb250ZXh0KCIyZCIpfWNhdGNoKHQpe31mdW5jdGlvbiBtKHQsZSl7cmV0dXJuIGY/bmV3IE9mZnNjcmVlbkNhbnZhcyh0LGUpOmRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3dy53My5vcmcvMTk5OS94aHRtbCIsImNhbnZhcyIpfWZ1bmN0aW9uIGcodCxlLG4saSl7bGV0IHI9MTtpZigodC53aWR0aD5pfHx0LmhlaWdodD5pKSYmKHI9aS9NYXRoLm1heCh0LndpZHRoLHQuaGVpZ2h0KSkscjwxfHwhMD09PWUpe2lmKCJ1bmRlZmluZWQiIT10eXBlb2YgSFRNTEltYWdlRWxlbWVudCYmdCBpbnN0YW5jZW9mIEhUTUxJbWFnZUVsZW1lbnR8fCJ1bmRlZmluZWQiIT10eXBlb2YgSFRNTENhbnZhc0VsZW1lbnQmJnQgaW5zdGFuY2VvZiBIVE1MQ2FudmFzRWxlbWVudHx8InVuZGVmaW5lZCIhPXR5cGVvZiBJbWFnZUJpdG1hcCYmdCBpbnN0YW5jZW9mIEltYWdlQml0bWFwKXtjb25zdCBpPWU/c0h0LmZsb29yUG93ZXJPZlR3bzpNYXRoLmZsb29yLG89aShyKnQud2lkdGgpLGE9aShyKnQuaGVpZ2h0KTt2b2lkIDA9PT1wJiYocD1tKG8sYSkpO2NvbnN0IHM9bj9tKG8sYSk6cDtyZXR1cm4gcy53aWR0aD1vLHMuaGVpZ2h0PWEscy5nZXRDb250ZXh0KCIyZCIpLmRyYXdJbWFnZSh0LDAsMCxvLGEpLGNvbnNvbGUud2FybigiVEhSRUUuV2ViR0xSZW5kZXJlcjogVGV4dHVyZSBoYXMgYmVlbiByZXNpemVkIGZyb20gKCIrdC53aWR0aCsieCIrdC5oZWlnaHQrIikgdG8gKCIrbysieCIrYSsiKS4iKSxzfXJldHVybiJkYXRhImluIHQmJmNvbnNvbGUud2FybigiVEhSRUUuV2ViR0xSZW5kZXJlcjogSW1hZ2UgaW4gRGF0YVRleHR1cmUgaXMgdG9vIGJpZyAoIit0LndpZHRoKyJ4Iit0LmhlaWdodCsiKS4iKSx0fXJldHVybiB0fWZ1bmN0aW9uIF8odCl7cmV0dXJuIHNIdC5pc1Bvd2VyT2ZUd28odC53aWR0aCkmJnNIdC5pc1Bvd2VyT2ZUd28odC5oZWlnaHQpfWZ1bmN0aW9uIHkodCxlKXtyZXR1cm4gdC5nZW5lcmF0ZU1pcG1hcHMmJmUmJnQubWluRmlsdGVyIT09cEJ0JiZ0Lm1pbkZpbHRlciE9PWdCdH1mdW5jdGlvbiB2KGUsbixyLG8pe3QuZ2VuZXJhdGVNaXBtYXAoZSksaS5nZXQobikuX19tYXhNaXBMZXZlbD1NYXRoLmxvZyhNYXRoLm1heChyLG8pKSpNYXRoLkxPRzJFfWZ1bmN0aW9uIGIobixpLHIpe2lmKCExPT09cylyZXR1cm4gaTtpZihudWxsIT09bil7aWYodm9pZCAwIT09dFtuXSlyZXR1cm4gdFtuXTtjb25zb2xlLndhcm4oIlRIUkVFLldlYkdMUmVuZGVyZXI6IEF0dGVtcHQgdG8gdXNlIG5vbi1leGlzdGluZyBXZWJHTCBpbnRlcm5hbCBmb3JtYXQgJyIrbisiJyIpfWxldCBvPWk7cmV0dXJuIDY0MDM9PT1pJiYoNTEyNj09PXImJihvPTMzMzI2KSw1MTMxPT09ciYmKG89MzMzMjUpLDUxMjE9PT1yJiYobz0zMzMyMSkpLDY0MDc9PT1pJiYoNTEyNj09PXImJihvPTM0ODM3KSw1MTMxPT09ciYmKG89MzQ4NDMpLDUxMjE9PT1yJiYobz0zMjg0OSkpLDY0MDg9PT1pJiYoNTEyNj09PXImJihvPTM0ODM2KSw1MTMxPT09ciYmKG89MzQ4NDIpLDUxMjE9PT1yJiYobz0zMjg1NikpLDMzMzI1IT09byYmMzMzMjYhPT1vJiYzNDg0MiE9PW8mJjM0ODM2IT09b3x8ZS5nZXQoIkVYVF9jb2xvcl9idWZmZXJfZmxvYXQiKSxvfWZ1bmN0aW9uIHgodCl7cmV0dXJuIHQ9PT1wQnR8fHQ9PT1mQnR8fHQ9PT1tQnQ/OTcyODo5NzI5fWZ1bmN0aW9uIHcoZSl7Y29uc3Qgbj1lLnRhcmdldDtuLnJlbW92ZUV2ZW50TGlzdGVuZXIoImRpc3Bvc2UiLHcpLChmdW5jdGlvbiByKGUpe2NvbnN0IG49aS5nZXQoZSk7dm9pZCAwIT09bi5fX3dlYmdsSW5pdCYmKHQuZGVsZXRlVGV4dHVyZShuLl9fd2ViZ2xUZXh0dXJlKSxpLnJlbW92ZShlKSl9KShuKSxuLmlzVmlkZW9UZXh0dXJlJiZkLmRlbGV0ZShuKSxhLm1lbW9yeS50ZXh0dXJlcy0tfWZ1bmN0aW9uIFMoZSl7Y29uc3Qgbj1lLnRhcmdldDtuLnJlbW92ZUV2ZW50TGlzdGVuZXIoImRpc3Bvc2UiLFMpLChmdW5jdGlvbiByKGUpe2NvbnN0IG49aS5nZXQoZSkscj1pLmdldChlLnRleHR1cmUpO2lmKGUpe2lmKHZvaWQgMCE9PXIuX193ZWJnbFRleHR1cmUmJnQuZGVsZXRlVGV4dHVyZShyLl9fd2ViZ2xUZXh0dXJlKSxlLmRlcHRoVGV4dHVyZSYmZS5kZXB0aFRleHR1cmUuZGlzcG9zZSgpLGUuaXNXZWJHTEN1YmVSZW5kZXJUYXJnZXQpZm9yKGxldCBlPTA7ZTw2O2UrKyl0LmRlbGV0ZUZyYW1lYnVmZmVyKG4uX193ZWJnbEZyYW1lYnVmZmVyW2VdKSxuLl9fd2ViZ2xEZXB0aGJ1ZmZlciYmdC5kZWxldGVSZW5kZXJidWZmZXIobi5fX3dlYmdsRGVwdGhidWZmZXJbZV0pO2Vsc2UgdC5kZWxldGVGcmFtZWJ1ZmZlcihuLl9fd2ViZ2xGcmFtZWJ1ZmZlciksbi5fX3dlYmdsRGVwdGhidWZmZXImJnQuZGVsZXRlUmVuZGVyYnVmZmVyKG4uX193ZWJnbERlcHRoYnVmZmVyKSxuLl9fd2ViZ2xNdWx0aXNhbXBsZWRGcmFtZWJ1ZmZlciYmdC5kZWxldGVGcmFtZWJ1ZmZlcihuLl9fd2ViZ2xNdWx0aXNhbXBsZWRGcmFtZWJ1ZmZlciksbi5fX3dlYmdsQ29sb3JSZW5kZXJidWZmZXImJnQuZGVsZXRlUmVuZGVyYnVmZmVyKG4uX193ZWJnbENvbG9yUmVuZGVyYnVmZmVyKSxuLl9fd2ViZ2xEZXB0aFJlbmRlcmJ1ZmZlciYmdC5kZWxldGVSZW5kZXJidWZmZXIobi5fX3dlYmdsRGVwdGhSZW5kZXJidWZmZXIpO2kucmVtb3ZlKGUudGV4dHVyZSksaS5yZW1vdmUoZSl9fSkobiksYS5tZW1vcnkudGV4dHVyZXMtLX1sZXQgTT0wO2Z1bmN0aW9uIEUodCxlKXtjb25zdCByPWkuZ2V0KHQpO2lmKHQuaXNWaWRlb1RleHR1cmUmJihmdW5jdGlvbiBvKHQpe2NvbnN0IGU9YS5yZW5kZXIuZnJhbWU7ZC5nZXQodCkhPT1lJiYoZC5zZXQodCxlKSx0LnVwZGF0ZSgpKX0pKHQpLHQudmVyc2lvbj4wJiZyLl9fdmVyc2lvbiE9PXQudmVyc2lvbil7Y29uc3Qgbj10LmltYWdlO2lmKHZvaWQgMD09PW4pY29uc29sZS53YXJuKCJUSFJFRS5XZWJHTFJlbmRlcmVyOiBUZXh0dXJlIG1hcmtlZCBmb3IgdXBkYXRlIGJ1dCBpbWFnZSBpcyB1bmRlZmluZWQiKTtlbHNle2lmKCExIT09bi5jb21wbGV0ZSlyZXR1cm4gdm9pZCBQKHIsdCxlKTtjb25zb2xlLndhcm4oIlRIUkVFLldlYkdMUmVuZGVyZXI6IFRleHR1cmUgbWFya2VkIGZvciB1cGRhdGUgYnV0IGltYWdlIGlzIGluY29tcGxldGUiKX19bi5hY3RpdmVUZXh0dXJlKDMzOTg0K2UpLG4uYmluZFRleHR1cmUoMzU1MyxyLl9fd2ViZ2xUZXh0dXJlKX1mdW5jdGlvbiBUKGUscil7Y29uc3QgYT1pLmdldChlKTtlLnZlcnNpb24+MCYmYS5fX3ZlcnNpb24hPT1lLnZlcnNpb24/KGZ1bmN0aW9uIGwoZSxpLHIpe2lmKDYhPT1pLmltYWdlLmxlbmd0aClyZXR1cm47TChlLGkpLG4uYWN0aXZlVGV4dHVyZSgzMzk4NCtyKSxuLmJpbmRUZXh0dXJlKDM0MDY3LGUuX193ZWJnbFRleHR1cmUpLHQucGl4ZWxTdG9yZWkoMzc0NDAsaS5mbGlwWSksdC5waXhlbFN0b3JlaSgzNzQ0MSxpLnByZW11bHRpcGx5QWxwaGEpLHQucGl4ZWxTdG9yZWkoMzMxNyxpLnVucGFja0FsaWdubWVudCk7Y29uc3QgYT1pJiYoaS5pc0NvbXByZXNzZWRUZXh0dXJlfHxpLmltYWdlWzBdLmlzQ29tcHJlc3NlZFRleHR1cmUpLGw9aS5pbWFnZVswXSYmaS5pbWFnZVswXS5pc0RhdGFUZXh0dXJlLHU9W107Zm9yKGxldCB0PTA7dDw2O3QrKyl1W3RdPWF8fGw/bD9pLmltYWdlW3RdLmltYWdlOmkuaW1hZ2VbdF06ZyhpLmltYWdlW3RdLCExLCEwLGMpO2NvbnN0IGg9dVswXSxkPV8oaCl8fHMscD1vLmNvbnZlcnQoaS5mb3JtYXQpLGY9by5jb252ZXJ0KGkudHlwZSksbT1iKGkuaW50ZXJuYWxGb3JtYXQscCxmKTtsZXQgeDtpZihrKDM0MDY3LGksZCksYSl7Zm9yKGxldCB0PTA7dDw2O3QrKyl7eD11W3RdLm1pcG1hcHM7Zm9yKGxldCBlPTA7ZTx4Lmxlbmd0aDtlKyspe2NvbnN0IHI9eFtlXTtpLmZvcm1hdCE9PVRCdCYmaS5mb3JtYXQhPT1FQnQ/bnVsbCE9PXA/bi5jb21wcmVzc2VkVGV4SW1hZ2UyRCgzNDA2OSt0LGUsbSxyLndpZHRoLHIuaGVpZ2h0LDAsci5kYXRhKTpjb25zb2xlLndhcm4oIlRIUkVFLldlYkdMUmVuZGVyZXI6IEF0dGVtcHQgdG8gbG9hZCB1bnN1cHBvcnRlZCBjb21wcmVzc2VkIHRleHR1cmUgZm9ybWF0IGluIC5zZXRUZXh0dXJlQ3ViZSgpIik6bi50ZXhJbWFnZTJEKDM0MDY5K3QsZSxtLHIud2lkdGgsci5oZWlnaHQsMCxwLGYsci5kYXRhKX19ZS5fX21heE1pcExldmVsPXgubGVuZ3RoLTF9ZWxzZXt4PWkubWlwbWFwcztmb3IobGV0IHQ9MDt0PDY7dCsrKWlmKGwpe24udGV4SW1hZ2UyRCgzNDA2OSt0LDAsbSx1W3RdLndpZHRoLHVbdF0uaGVpZ2h0LDAscCxmLHVbdF0uZGF0YSk7Zm9yKGxldCBlPTA7ZTx4Lmxlbmd0aDtlKyspe2NvbnN0IGk9eFtlXS5pbWFnZVt0XS5pbWFnZTtuLnRleEltYWdlMkQoMzQwNjkrdCxlKzEsbSxpLndpZHRoLGkuaGVpZ2h0LDAscCxmLGkuZGF0YSl9fWVsc2V7bi50ZXhJbWFnZTJEKDM0MDY5K3QsMCxtLHAsZix1W3RdKTtmb3IobGV0IGU9MDtlPHgubGVuZ3RoO2UrKyluLnRleEltYWdlMkQoMzQwNjkrdCxlKzEsbSxwLGYseFtlXS5pbWFnZVt0XSl9ZS5fX21heE1pcExldmVsPXgubGVuZ3RofXkoaSxkKSYmdigzNDA2NyxpLGgud2lkdGgsaC5oZWlnaHQpLGUuX192ZXJzaW9uPWkudmVyc2lvbixpLm9uVXBkYXRlJiZpLm9uVXBkYXRlKGkpfSkoYSxlLHIpOihuLmFjdGl2ZVRleHR1cmUoMzM5ODQrciksbi5iaW5kVGV4dHVyZSgzNDA2NyxhLl9fd2ViZ2xUZXh0dXJlKSl9Y29uc3QgQT17W3VCdF06MTA0OTcsW2hCdF06MzMwNzEsW2RCdF06MzM2NDh9LEM9e1twQnRdOjk3MjgsW2ZCdF06OTk4NCxbbUJ0XTo5OTg2LFtnQnRdOjk3MjksW19CdF06OTk4NSxbeUJ0XTo5OTg3fTtmdW5jdGlvbiBrKG4sbyxhKXthPyh0LnRleFBhcmFtZXRlcmkobiwxMDI0MixBW28ud3JhcFNdKSx0LnRleFBhcmFtZXRlcmkobiwxMDI0MyxBW28ud3JhcFRdKSwzMjg3OSE9PW4mJjM1ODY2IT09bnx8dC50ZXhQYXJhbWV0ZXJpKG4sMzI4ODIsQVtvLndyYXBSXSksdC50ZXhQYXJhbWV0ZXJpKG4sMTAyNDAsQ1tvLm1hZ0ZpbHRlcl0pLHQudGV4UGFyYW1ldGVyaShuLDEwMjQxLENbby5taW5GaWx0ZXJdKSk6KHQudGV4UGFyYW1ldGVyaShuLDEwMjQyLDMzMDcxKSx0LnRleFBhcmFtZXRlcmkobiwxMDI0MywzMzA3MSksMzI4NzkhPT1uJiYzNTg2NiE9PW58fHQudGV4UGFyYW1ldGVyaShuLDMyODgyLDMzMDcxKSxvLndyYXBTPT09aEJ0JiZvLndyYXBUPT09aEJ0fHxjb25zb2xlLndhcm4oIlRIUkVFLldlYkdMUmVuZGVyZXI6IFRleHR1cmUgaXMgbm90IHBvd2VyIG9mIHR3by4gVGV4dHVyZS53cmFwUyBhbmQgVGV4dHVyZS53cmFwVCBzaG91bGQgYmUgc2V0IHRvIFRIUkVFLkNsYW1wVG9FZGdlV3JhcHBpbmcuIiksdC50ZXhQYXJhbWV0ZXJpKG4sMTAyNDAseChvLm1hZ0ZpbHRlcikpLHQudGV4UGFyYW1ldGVyaShuLDEwMjQxLHgoby5taW5GaWx0ZXIpKSxvLm1pbkZpbHRlciE9PXBCdCYmby5taW5GaWx0ZXIhPT1nQnQmJmNvbnNvbGUud2FybigiVEhSRUUuV2ViR0xSZW5kZXJlcjogVGV4dHVyZSBpcyBub3QgcG93ZXIgb2YgdHdvLiBUZXh0dXJlLm1pbkZpbHRlciBzaG91bGQgYmUgc2V0IHRvIFRIUkVFLk5lYXJlc3RGaWx0ZXIgb3IgVEhSRUUuTGluZWFyRmlsdGVyLiIpKTtjb25zdCBsPWUuZ2V0KCJFWFRfdGV4dHVyZV9maWx0ZXJfYW5pc290cm9waWMiKTtpZihsKXtpZihvLnR5cGU9PT13QnQmJm51bGw9PT1lLmdldCgiT0VTX3RleHR1cmVfZmxvYXRfbGluZWFyIikpcmV0dXJuO2lmKG8udHlwZT09PVNCdCYmbnVsbD09PShzfHxlLmdldCgiT0VTX3RleHR1cmVfaGFsZl9mbG9hdF9saW5lYXIiKSkpcmV0dXJuOyhvLmFuaXNvdHJvcHk+MXx8aS5nZXQobykuX19jdXJyZW50QW5pc290cm9weSkmJih0LnRleFBhcmFtZXRlcmYobixsLlRFWFRVUkVfTUFYX0FOSVNPVFJPUFlfRVhULE1hdGgubWluKG8uYW5pc290cm9weSxyLmdldE1heEFuaXNvdHJvcHkoKSkpLGkuZ2V0KG8pLl9fY3VycmVudEFuaXNvdHJvcHk9by5hbmlzb3Ryb3B5KX19ZnVuY3Rpb24gTChlLG4pe3ZvaWQgMD09PWUuX193ZWJnbEluaXQmJihlLl9fd2ViZ2xJbml0PSEwLG4uYWRkRXZlbnRMaXN0ZW5lcigiZGlzcG9zZSIsdyksZS5fX3dlYmdsVGV4dHVyZT10LmNyZWF0ZVRleHR1cmUoKSxhLm1lbW9yeS50ZXh0dXJlcysrKX1mdW5jdGlvbiBQKGUsaSxyKXtsZXQgYT0zNTUzO2kuaXNEYXRhVGV4dHVyZTJEQXJyYXkmJihhPTM1ODY2KSxpLmlzRGF0YVRleHR1cmUzRCYmKGE9MzI4NzkpLEwoZSxpKSxuLmFjdGl2ZVRleHR1cmUoMzM5ODQrciksbi5iaW5kVGV4dHVyZShhLGUuX193ZWJnbFRleHR1cmUpLHQucGl4ZWxTdG9yZWkoMzc0NDAsaS5mbGlwWSksdC5waXhlbFN0b3JlaSgzNzQ0MSxpLnByZW11bHRpcGx5QWxwaGEpLHQucGl4ZWxTdG9yZWkoMzMxNyxpLnVucGFja0FsaWdubWVudCk7Y29uc3QgbD0oZnVuY3Rpb24gYyh0KXtyZXR1cm4hcyYmKHQud3JhcFMhPT1oQnR8fHQud3JhcFQhPT1oQnR8fHQubWluRmlsdGVyIT09cEJ0JiZ0Lm1pbkZpbHRlciE9PWdCdCl9KShpKSYmITE9PT1fKGkuaW1hZ2UpLGg9ZyhpLmltYWdlLGwsITEsdSksZD1fKGgpfHxzLHA9by5jb252ZXJ0KGkuZm9ybWF0KTtsZXQgZixtPW8uY29udmVydChpLnR5cGUpLHg9YihpLmludGVybmFsRm9ybWF0LHAsbSk7ayhhLGksZCk7Y29uc3Qgdz1pLm1pcG1hcHM7aWYoaS5pc0RlcHRoVGV4dHVyZSl4PTY0MDIscz94PWkudHlwZT09PXdCdD8zNjAxMjppLnR5cGU9PT14QnQ/MzMxOTA6aS50eXBlPT09TUJ0PzM1MDU2OjMzMTg5OmkudHlwZT09PXdCdCYmY29uc29sZS5lcnJvcigiV2ViR0xSZW5kZXJlcjogRmxvYXRpbmcgcG9pbnQgZGVwdGggdGV4dHVyZSByZXF1aXJlcyBXZWJHTDIuIiksaS5mb3JtYXQ9PT1BQnQmJjY0MDI9PT14JiZpLnR5cGUhPT1iQnQmJmkudHlwZSE9PXhCdCYmKGNvbnNvbGUud2FybigiVEhSRUUuV2ViR0xSZW5kZXJlcjogVXNlIFVuc2lnbmVkU2hvcnRUeXBlIG9yIFVuc2lnbmVkSW50VHlwZSBmb3IgRGVwdGhGb3JtYXQgRGVwdGhUZXh0dXJlLiIpLGkudHlwZT1iQnQsbT1vLmNvbnZlcnQoaS50eXBlKSksaS5mb3JtYXQ9PT1DQnQmJjY0MDI9PT14JiYoeD0zNDA0MSxpLnR5cGUhPT1NQnQmJihjb25zb2xlLndhcm4oIlRIUkVFLldlYkdMUmVuZGVyZXI6IFVzZSBVbnNpZ25lZEludDI0OFR5cGUgZm9yIERlcHRoU3RlbmNpbEZvcm1hdCBEZXB0aFRleHR1cmUuIiksaS50eXBlPU1CdCxtPW8uY29udmVydChpLnR5cGUpKSksbi50ZXhJbWFnZTJEKDM1NTMsMCx4LGgud2lkdGgsaC5oZWlnaHQsMCxwLG0sbnVsbCk7ZWxzZSBpZihpLmlzRGF0YVRleHR1cmUpaWYody5sZW5ndGg+MCYmZCl7Zm9yKGxldCB0PTAsZT13Lmxlbmd0aDt0PGU7dCsrKWY9d1t0XSxuLnRleEltYWdlMkQoMzU1Myx0LHgsZi53aWR0aCxmLmhlaWdodCwwLHAsbSxmLmRhdGEpO2kuZ2VuZXJhdGVNaXBtYXBzPSExLGUuX19tYXhNaXBMZXZlbD13Lmxlbmd0aC0xfWVsc2Ugbi50ZXhJbWFnZTJEKDM1NTMsMCx4LGgud2lkdGgsaC5oZWlnaHQsMCxwLG0saC5kYXRhKSxlLl9fbWF4TWlwTGV2ZWw9MDtlbHNlIGlmKGkuaXNDb21wcmVzc2VkVGV4dHVyZSl7Zm9yKGxldCB0PTAsZT13Lmxlbmd0aDt0PGU7dCsrKWY9d1t0XSxpLmZvcm1hdCE9PVRCdCYmaS5mb3JtYXQhPT1FQnQ/bnVsbCE9PXA/bi5jb21wcmVzc2VkVGV4SW1hZ2UyRCgzNTUzLHQseCxmLndpZHRoLGYuaGVpZ2h0LDAsZi5kYXRhKTpjb25zb2xlLndhcm4oIlRIUkVFLldlYkdMUmVuZGVyZXI6IEF0dGVtcHQgdG8gbG9hZCB1bnN1cHBvcnRlZCBjb21wcmVzc2VkIHRleHR1cmUgZm9ybWF0IGluIC51cGxvYWRUZXh0dXJlKCkiKTpuLnRleEltYWdlMkQoMzU1Myx0LHgsZi53aWR0aCxmLmhlaWdodCwwLHAsbSxmLmRhdGEpO2UuX19tYXhNaXBMZXZlbD13Lmxlbmd0aC0xfWVsc2UgaWYoaS5pc0RhdGFUZXh0dXJlMkRBcnJheSluLnRleEltYWdlM0QoMzU4NjYsMCx4LGgud2lkdGgsaC5oZWlnaHQsaC5kZXB0aCwwLHAsbSxoLmRhdGEpLGUuX19tYXhNaXBMZXZlbD0wO2Vsc2UgaWYoaS5pc0RhdGFUZXh0dXJlM0Qpbi50ZXhJbWFnZTNEKDMyODc5LDAseCxoLndpZHRoLGguaGVpZ2h0LGguZGVwdGgsMCxwLG0saC5kYXRhKSxlLl9fbWF4TWlwTGV2ZWw9MDtlbHNlIGlmKHcubGVuZ3RoPjAmJmQpe2ZvcihsZXQgdD0wLGU9dy5sZW5ndGg7dDxlO3QrKylmPXdbdF0sbi50ZXhJbWFnZTJEKDM1NTMsdCx4LHAsbSxmKTtpLmdlbmVyYXRlTWlwbWFwcz0hMSxlLl9fbWF4TWlwTGV2ZWw9dy5sZW5ndGgtMX1lbHNlIG4udGV4SW1hZ2UyRCgzNTUzLDAseCxwLG0saCksZS5fX21heE1pcExldmVsPTA7eShpLGQpJiZ2KGEsaSxoLndpZHRoLGguaGVpZ2h0KSxlLl9fdmVyc2lvbj1pLnZlcnNpb24saS5vblVwZGF0ZSYmaS5vblVwZGF0ZShpKX1mdW5jdGlvbiBJKGUscixhLHMpe2NvbnN0IGw9by5jb252ZXJ0KHIudGV4dHVyZS5mb3JtYXQpLGM9by5jb252ZXJ0KHIudGV4dHVyZS50eXBlKSx1PWIoci50ZXh0dXJlLmludGVybmFsRm9ybWF0LGwsYyk7bi50ZXhJbWFnZTJEKHMsMCx1LHIud2lkdGgsci5oZWlnaHQsMCxsLGMsbnVsbCksdC5iaW5kRnJhbWVidWZmZXIoMzYxNjAsZSksdC5mcmFtZWJ1ZmZlclRleHR1cmUyRCgzNjE2MCxhLHMsaS5nZXQoci50ZXh0dXJlKS5fX3dlYmdsVGV4dHVyZSwwKSx0LmJpbmRGcmFtZWJ1ZmZlcigzNjE2MCxudWxsKX1mdW5jdGlvbiBOKGUsbixpKXtpZih0LmJpbmRSZW5kZXJidWZmZXIoMzYxNjEsZSksbi5kZXB0aEJ1ZmZlciYmIW4uc3RlbmNpbEJ1ZmZlcil7bGV0IHI9MzMxODk7aWYoaSl7Y29uc3QgZT1uLmRlcHRoVGV4dHVyZTtlJiZlLmlzRGVwdGhUZXh0dXJlJiYoZS50eXBlPT09d0J0P3I9MzYwMTI6ZS50eXBlPT09eEJ0JiYocj0zMzE5MCkpO2NvbnN0IGk9TyhuKTt0LnJlbmRlcmJ1ZmZlclN0b3JhZ2VNdWx0aXNhbXBsZSgzNjE2MSxpLHIsbi53aWR0aCxuLmhlaWdodCl9ZWxzZSB0LnJlbmRlcmJ1ZmZlclN0b3JhZ2UoMzYxNjEscixuLndpZHRoLG4uaGVpZ2h0KTt0LmZyYW1lYnVmZmVyUmVuZGVyYnVmZmVyKDM2MTYwLDM2MDk2LDM2MTYxLGUpfWVsc2UgaWYobi5kZXB0aEJ1ZmZlciYmbi5zdGVuY2lsQnVmZmVyKXtpZihpKXtjb25zdCBlPU8obik7dC5yZW5kZXJidWZmZXJTdG9yYWdlTXVsdGlzYW1wbGUoMzYxNjEsZSwzNTA1NixuLndpZHRoLG4uaGVpZ2h0KX1lbHNlIHQucmVuZGVyYnVmZmVyU3RvcmFnZSgzNjE2MSwzNDA0MSxuLndpZHRoLG4uaGVpZ2h0KTt0LmZyYW1lYnVmZmVyUmVuZGVyYnVmZmVyKDM2MTYwLDMzMzA2LDM2MTYxLGUpfWVsc2V7Y29uc3QgZT1vLmNvbnZlcnQobi50ZXh0dXJlLmZvcm1hdCkscj1vLmNvbnZlcnQobi50ZXh0dXJlLnR5cGUpLGE9YihuLnRleHR1cmUuaW50ZXJuYWxGb3JtYXQsZSxyKTtpZihpKXtjb25zdCBlPU8obik7dC5yZW5kZXJidWZmZXJTdG9yYWdlTXVsdGlzYW1wbGUoMzYxNjEsZSxhLG4ud2lkdGgsbi5oZWlnaHQpfWVsc2UgdC5yZW5kZXJidWZmZXJTdG9yYWdlKDM2MTYxLGEsbi53aWR0aCxuLmhlaWdodCl9dC5iaW5kUmVuZGVyYnVmZmVyKDM2MTYxLG51bGwpfWZ1bmN0aW9uIE8odCl7cmV0dXJuIHMmJnQuaXNXZWJHTE11bHRpc2FtcGxlUmVuZGVyVGFyZ2V0P01hdGgubWluKGgsdC5zYW1wbGVzKTowfWxldCBSPSExLHo9ITE7dGhpcy5hbGxvY2F0ZVRleHR1cmVVbml0PWZ1bmN0aW9uIEQoKXtjb25zdCB0PU07cmV0dXJuIHQ+PWwmJmNvbnNvbGUud2FybigiVEhSRUUuV2ViR0xUZXh0dXJlczogVHJ5aW5nIHRvIHVzZSAiK3QrIiB0ZXh0dXJlIHVuaXRzIHdoaWxlIHRoaXMgR1BVIHN1cHBvcnRzIG9ubHkgIitsKSxNKz0xLHR9LHRoaXMucmVzZXRUZXh0dXJlVW5pdHM9ZnVuY3Rpb24gQigpe009MH0sdGhpcy5zZXRUZXh0dXJlMkQ9RSx0aGlzLnNldFRleHR1cmUyREFycmF5PWZ1bmN0aW9uIEgodCxlKXtjb25zdCByPWkuZ2V0KHQpO3QudmVyc2lvbj4wJiZyLl9fdmVyc2lvbiE9PXQudmVyc2lvbj9QKHIsdCxlKToobi5hY3RpdmVUZXh0dXJlKDMzOTg0K2UpLG4uYmluZFRleHR1cmUoMzU4NjYsci5fX3dlYmdsVGV4dHVyZSkpfSx0aGlzLnNldFRleHR1cmUzRD1mdW5jdGlvbiBGKHQsZSl7Y29uc3Qgcj1pLmdldCh0KTt0LnZlcnNpb24+MCYmci5fX3ZlcnNpb24hPT10LnZlcnNpb24/UChyLHQsZSk6KG4uYWN0aXZlVGV4dHVyZSgzMzk4NCtlKSxuLmJpbmRUZXh0dXJlKDMyODc5LHIuX193ZWJnbFRleHR1cmUpKX0sdGhpcy5zZXRUZXh0dXJlQ3ViZT1ULHRoaXMuc2V0dXBSZW5kZXJUYXJnZXQ9ZnVuY3Rpb24gVihlKXtjb25zdCByPWkuZ2V0KGUpLGw9aS5nZXQoZS50ZXh0dXJlKTtlLmFkZEV2ZW50TGlzdGVuZXIoImRpc3Bvc2UiLFMpLGwuX193ZWJnbFRleHR1cmU9dC5jcmVhdGVUZXh0dXJlKCksYS5tZW1vcnkudGV4dHVyZXMrKztjb25zdCBjPSEwPT09ZS5pc1dlYkdMQ3ViZVJlbmRlclRhcmdldCx1PSEwPT09ZS5pc1dlYkdMTXVsdGlzYW1wbGVSZW5kZXJUYXJnZXQsaD1fKGUpfHxzO2lmKCFzfHxlLnRleHR1cmUuZm9ybWF0IT09RUJ0fHxlLnRleHR1cmUudHlwZSE9PXdCdCYmZS50ZXh0dXJlLnR5cGUhPT1TQnR8fChlLnRleHR1cmUuZm9ybWF0PVRCdCxjb25zb2xlLndhcm4oIlRIUkVFLldlYkdMUmVuZGVyZXI6IFJlbmRlcmluZyB0byB0ZXh0dXJlcyB3aXRoIFJHQiBmb3JtYXQgaXMgbm90IHN1cHBvcnRlZC4gVXNpbmcgUkdCQSBmb3JtYXQgaW5zdGVhZC4iKSksYyl7ci5fX3dlYmdsRnJhbWVidWZmZXI9W107Zm9yKGxldCBlPTA7ZTw2O2UrKylyLl9fd2ViZ2xGcmFtZWJ1ZmZlcltlXT10LmNyZWF0ZUZyYW1lYnVmZmVyKCl9ZWxzZSBpZihyLl9fd2ViZ2xGcmFtZWJ1ZmZlcj10LmNyZWF0ZUZyYW1lYnVmZmVyKCksdSlpZihzKXtyLl9fd2ViZ2xNdWx0aXNhbXBsZWRGcmFtZWJ1ZmZlcj10LmNyZWF0ZUZyYW1lYnVmZmVyKCksci5fX3dlYmdsQ29sb3JSZW5kZXJidWZmZXI9dC5jcmVhdGVSZW5kZXJidWZmZXIoKSx0LmJpbmRSZW5kZXJidWZmZXIoMzYxNjEsci5fX3dlYmdsQ29sb3JSZW5kZXJidWZmZXIpO2NvbnN0IG49by5jb252ZXJ0KGUudGV4dHVyZS5mb3JtYXQpLGk9by5jb252ZXJ0KGUudGV4dHVyZS50eXBlKSxhPWIoZS50ZXh0dXJlLmludGVybmFsRm9ybWF0LG4saSkscz1PKGUpO3QucmVuZGVyYnVmZmVyU3RvcmFnZU11bHRpc2FtcGxlKDM2MTYxLHMsYSxlLndpZHRoLGUuaGVpZ2h0KSx0LmJpbmRGcmFtZWJ1ZmZlcigzNjE2MCxyLl9fd2ViZ2xNdWx0aXNhbXBsZWRGcmFtZWJ1ZmZlciksdC5mcmFtZWJ1ZmZlclJlbmRlcmJ1ZmZlcigzNjE2MCwzNjA2NCwzNjE2MSxyLl9fd2ViZ2xDb2xvclJlbmRlcmJ1ZmZlciksdC5iaW5kUmVuZGVyYnVmZmVyKDM2MTYxLG51bGwpLGUuZGVwdGhCdWZmZXImJihyLl9fd2ViZ2xEZXB0aFJlbmRlcmJ1ZmZlcj10LmNyZWF0ZVJlbmRlcmJ1ZmZlcigpLE4oci5fX3dlYmdsRGVwdGhSZW5kZXJidWZmZXIsZSwhMCkpLHQuYmluZEZyYW1lYnVmZmVyKDM2MTYwLG51bGwpfWVsc2UgY29uc29sZS53YXJuKCJUSFJFRS5XZWJHTFJlbmRlcmVyOiBXZWJHTE11bHRpc2FtcGxlUmVuZGVyVGFyZ2V0IGNhbiBvbmx5IGJlIHVzZWQgd2l0aCBXZWJHTDIuIik7aWYoYyl7bi5iaW5kVGV4dHVyZSgzNDA2NyxsLl9fd2ViZ2xUZXh0dXJlKSxrKDM0MDY3LGUudGV4dHVyZSxoKTtmb3IobGV0IHQ9MDt0PDY7dCsrKUkoci5fX3dlYmdsRnJhbWVidWZmZXJbdF0sZSwzNjA2NCwzNDA2OSt0KTt5KGUudGV4dHVyZSxoKSYmdigzNDA2NyxlLnRleHR1cmUsZS53aWR0aCxlLmhlaWdodCksbi5iaW5kVGV4dHVyZSgzNDA2NyxudWxsKX1lbHNlIG4uYmluZFRleHR1cmUoMzU1MyxsLl9fd2ViZ2xUZXh0dXJlKSxrKDM1NTMsZS50ZXh0dXJlLGgpLEkoci5fX3dlYmdsRnJhbWVidWZmZXIsZSwzNjA2NCwzNTUzKSx5KGUudGV4dHVyZSxoKSYmdigzNTUzLGUudGV4dHVyZSxlLndpZHRoLGUuaGVpZ2h0KSxuLmJpbmRUZXh0dXJlKDM1NTMsbnVsbCk7ZS5kZXB0aEJ1ZmZlciYmKGZ1bmN0aW9uIGQoZSl7Y29uc3Qgbj1pLmdldChlKSxyPSEwPT09ZS5pc1dlYkdMQ3ViZVJlbmRlclRhcmdldDtpZihlLmRlcHRoVGV4dHVyZSl7aWYocil0aHJvdyBuZXcgRXJyb3IoInRhcmdldC5kZXB0aFRleHR1cmUgbm90IHN1cHBvcnRlZCBpbiBDdWJlIHJlbmRlciB0YXJnZXRzIik7IShmdW5jdGlvbiBvKGUsbil7aWYobiYmbi5pc1dlYkdMQ3ViZVJlbmRlclRhcmdldCl0aHJvdyBuZXcgRXJyb3IoIkRlcHRoIFRleHR1cmUgd2l0aCBjdWJlIHJlbmRlciB0YXJnZXRzIGlzIG5vdCBzdXBwb3J0ZWQiKTtpZih0LmJpbmRGcmFtZWJ1ZmZlcigzNjE2MCxlKSwhbi5kZXB0aFRleHR1cmV8fCFuLmRlcHRoVGV4dHVyZS5pc0RlcHRoVGV4dHVyZSl0aHJvdyBuZXcgRXJyb3IoInJlbmRlclRhcmdldC5kZXB0aFRleHR1cmUgbXVzdCBiZSBhbiBpbnN0YW5jZSBvZiBUSFJFRS5EZXB0aFRleHR1cmUiKTtpLmdldChuLmRlcHRoVGV4dHVyZSkuX193ZWJnbFRleHR1cmUmJm4uZGVwdGhUZXh0dXJlLmltYWdlLndpZHRoPT09bi53aWR0aCYmbi5kZXB0aFRleHR1cmUuaW1hZ2UuaGVpZ2h0PT09bi5oZWlnaHR8fChuLmRlcHRoVGV4dHVyZS5pbWFnZS53aWR0aD1uLndpZHRoLG4uZGVwdGhUZXh0dXJlLmltYWdlLmhlaWdodD1uLmhlaWdodCxuLmRlcHRoVGV4dHVyZS5uZWVkc1VwZGF0ZT0hMCksRShuLmRlcHRoVGV4dHVyZSwwKTtjb25zdCByPWkuZ2V0KG4uZGVwdGhUZXh0dXJlKS5fX3dlYmdsVGV4dHVyZTtpZihuLmRlcHRoVGV4dHVyZS5mb3JtYXQ9PT1BQnQpdC5mcmFtZWJ1ZmZlclRleHR1cmUyRCgzNjE2MCwzNjA5NiwzNTUzLHIsMCk7ZWxzZXtpZihuLmRlcHRoVGV4dHVyZS5mb3JtYXQhPT1DQnQpdGhyb3cgbmV3IEVycm9yKCJVbmtub3duIGRlcHRoVGV4dHVyZSBmb3JtYXQiKTt0LmZyYW1lYnVmZmVyVGV4dHVyZTJEKDM2MTYwLDMzMzA2LDM1NTMsciwwKX19KShuLl9fd2ViZ2xGcmFtZWJ1ZmZlcixlKX1lbHNlIGlmKHIpe24uX193ZWJnbERlcHRoYnVmZmVyPVtdO2ZvcihsZXQgaT0wO2k8NjtpKyspdC5iaW5kRnJhbWVidWZmZXIoMzYxNjAsbi5fX3dlYmdsRnJhbWVidWZmZXJbaV0pLG4uX193ZWJnbERlcHRoYnVmZmVyW2ldPXQuY3JlYXRlUmVuZGVyYnVmZmVyKCksTihuLl9fd2ViZ2xEZXB0aGJ1ZmZlcltpXSxlLCExKX1lbHNlIHQuYmluZEZyYW1lYnVmZmVyKDM2MTYwLG4uX193ZWJnbEZyYW1lYnVmZmVyKSxuLl9fd2ViZ2xEZXB0aGJ1ZmZlcj10LmNyZWF0ZVJlbmRlcmJ1ZmZlcigpLE4obi5fX3dlYmdsRGVwdGhidWZmZXIsZSwhMSk7dC5iaW5kRnJhbWVidWZmZXIoMzYxNjAsbnVsbCl9KShlKX0sdGhpcy51cGRhdGVSZW5kZXJUYXJnZXRNaXBtYXA9ZnVuY3Rpb24gaih0KXtjb25zdCBlPXQudGV4dHVyZTtpZih5KGUsXyh0KXx8cykpe2NvbnN0IHI9dC5pc1dlYkdMQ3ViZVJlbmRlclRhcmdldD8zNDA2NzozNTUzLG89aS5nZXQoZSkuX193ZWJnbFRleHR1cmU7bi5iaW5kVGV4dHVyZShyLG8pLHYocixlLHQud2lkdGgsdC5oZWlnaHQpLG4uYmluZFRleHR1cmUocixudWxsKX19LHRoaXMudXBkYXRlTXVsdGlzYW1wbGVSZW5kZXJUYXJnZXQ9ZnVuY3Rpb24gVShlKXtpZihlLmlzV2ViR0xNdWx0aXNhbXBsZVJlbmRlclRhcmdldClpZihzKXtjb25zdCBuPWkuZ2V0KGUpO3QuYmluZEZyYW1lYnVmZmVyKDM2MDA4LG4uX193ZWJnbE11bHRpc2FtcGxlZEZyYW1lYnVmZmVyKSx0LmJpbmRGcmFtZWJ1ZmZlcigzNjAwOSxuLl9fd2ViZ2xGcmFtZWJ1ZmZlcik7Y29uc3Qgcj1lLndpZHRoLG89ZS5oZWlnaHQ7bGV0IGE9MTYzODQ7ZS5kZXB0aEJ1ZmZlciYmKGF8PTI1NiksZS5zdGVuY2lsQnVmZmVyJiYoYXw9MTAyNCksdC5ibGl0RnJhbWVidWZmZXIoMCwwLHIsbywwLDAscixvLGEsOTcyOCksdC5iaW5kRnJhbWVidWZmZXIoMzYxNjAsbi5fX3dlYmdsTXVsdGlzYW1wbGVkRnJhbWVidWZmZXIpfWVsc2UgY29uc29sZS53YXJuKCJUSFJFRS5XZWJHTFJlbmRlcmVyOiBXZWJHTE11bHRpc2FtcGxlUmVuZGVyVGFyZ2V0IGNhbiBvbmx5IGJlIHVzZWQgd2l0aCBXZWJHTDIuIil9LHRoaXMuc2FmZVNldFRleHR1cmUyRD1mdW5jdGlvbiBHKHQsZSl7dCYmdC5pc1dlYkdMUmVuZGVyVGFyZ2V0JiYoITE9PT1SJiYoY29uc29sZS53YXJuKCJUSFJFRS5XZWJHTFRleHR1cmVzLnNhZmVTZXRUZXh0dXJlMkQ6IGRvbid0IHVzZSByZW5kZXIgdGFyZ2V0cyBhcyB0ZXh0dXJlcy4gVXNlIHRoZWlyIC50ZXh0dXJlIHByb3BlcnR5IGluc3RlYWQuIiksUj0hMCksdD10LnRleHR1cmUpLEUodCxlKX0sdGhpcy5zYWZlU2V0VGV4dHVyZUN1YmU9ZnVuY3Rpb24gVyh0LGUpe3QmJnQuaXNXZWJHTEN1YmVSZW5kZXJUYXJnZXQmJighMT09PXomJihjb25zb2xlLndhcm4oIlRIUkVFLldlYkdMVGV4dHVyZXMuc2FmZVNldFRleHR1cmVDdWJlOiBkb24ndCB1c2UgY3ViZSByZW5kZXIgdGFyZ2V0cyBhcyB0ZXh0dXJlcy4gVXNlIHRoZWlyIC50ZXh0dXJlIHByb3BlcnR5IGluc3RlYWQuIiksej0hMCksdD10LnRleHR1cmUpLFQodCxlKX19ZnVuY3Rpb24gWFV0KHQsZSxuKXtjb25zdCBpPW4uaXNXZWJHTDI7cmV0dXJue2NvbnZlcnQ6ZnVuY3Rpb24gcih0KXtsZXQgbjtpZih0PT09dkJ0KXJldHVybiA1MTIxO2lmKDEwMTc9PT10KXJldHVybiAzMjgxOTtpZigxMDE4PT09dClyZXR1cm4gMzI4MjA7aWYoMTAxOT09PXQpcmV0dXJuIDMzNjM1O2lmKDEwMTA9PT10KXJldHVybiA1MTIwO2lmKDEwMTE9PT10KXJldHVybiA1MTIyO2lmKHQ9PT1iQnQpcmV0dXJuIDUxMjM7aWYoMTAxMz09PXQpcmV0dXJuIDUxMjQ7aWYodD09PXhCdClyZXR1cm4gNTEyNTtpZih0PT09d0J0KXJldHVybiA1MTI2O2lmKHQ9PT1TQnQpcmV0dXJuIGk/NTEzMToobj1lLmdldCgiT0VTX3RleHR1cmVfaGFsZl9mbG9hdCIpLG51bGwhPT1uP24uSEFMRl9GTE9BVF9PRVM6bnVsbCk7aWYoMTAyMT09PXQpcmV0dXJuIDY0MDY7aWYodD09PUVCdClyZXR1cm4gNjQwNztpZih0PT09VEJ0KXJldHVybiA2NDA4O2lmKDEwMjQ9PT10KXJldHVybiA2NDA5O2lmKDEwMjU9PT10KXJldHVybiA2NDEwO2lmKHQ9PT1BQnQpcmV0dXJuIDY0MDI7aWYodD09PUNCdClyZXR1cm4gMzQwNDE7aWYoMTAyOD09PXQpcmV0dXJuIDY0MDM7aWYoMTAyOT09PXQpcmV0dXJuIDM2MjQ0O2lmKDEwMzA9PT10KXJldHVybiAzMzMxOTtpZigxMDMxPT09dClyZXR1cm4gMzMzMjA7aWYoMTAzMj09PXQpcmV0dXJuIDM2MjQ4O2lmKDEwMzM9PT10KXJldHVybiAzNjI0OTtpZih0PT09a0J0fHx0PT09TEJ0fHx0PT09UEJ0fHx0PT09SUJ0KXtpZihuPWUuZ2V0KCJXRUJHTF9jb21wcmVzc2VkX3RleHR1cmVfczN0YyIpLG51bGw9PT1uKXJldHVybiBudWxsO2lmKHQ9PT1rQnQpcmV0dXJuIG4uQ09NUFJFU1NFRF9SR0JfUzNUQ19EWFQxX0VYVDtpZih0PT09TEJ0KXJldHVybiBuLkNPTVBSRVNTRURfUkdCQV9TM1RDX0RYVDFfRVhUO2lmKHQ9PT1QQnQpcmV0dXJuIG4uQ09NUFJFU1NFRF9SR0JBX1MzVENfRFhUM19FWFQ7aWYodD09PUlCdClyZXR1cm4gbi5DT01QUkVTU0VEX1JHQkFfUzNUQ19EWFQ1X0VYVH1pZih0PT09TkJ0fHx0PT09T0J0fHx0PT09UkJ0fHx0PT09ekJ0KXtpZihuPWUuZ2V0KCJXRUJHTF9jb21wcmVzc2VkX3RleHR1cmVfcHZydGMiKSxudWxsPT09bilyZXR1cm4gbnVsbDtpZih0PT09TkJ0KXJldHVybiBuLkNPTVBSRVNTRURfUkdCX1BWUlRDXzRCUFBWMV9JTUc7aWYodD09PU9CdClyZXR1cm4gbi5DT01QUkVTU0VEX1JHQl9QVlJUQ18yQlBQVjFfSU1HO2lmKHQ9PT1SQnQpcmV0dXJuIG4uQ09NUFJFU1NFRF9SR0JBX1BWUlRDXzRCUFBWMV9JTUc7aWYodD09PXpCdClyZXR1cm4gbi5DT01QUkVTU0VEX1JHQkFfUFZSVENfMkJQUFYxX0lNR31pZigzNjE5Nj09PXQpcmV0dXJuIG49ZS5nZXQoIldFQkdMX2NvbXByZXNzZWRfdGV4dHVyZV9ldGMxIiksbnVsbCE9PW4/bi5DT01QUkVTU0VEX1JHQl9FVEMxX1dFQkdMOm51bGw7aWYoKHQ9PT1EQnR8fHQ9PT1CQnQpJiYobj1lLmdldCgiV0VCR0xfY29tcHJlc3NlZF90ZXh0dXJlX2V0YyIpLG51bGwhPT1uKSl7aWYodD09PURCdClyZXR1cm4gbi5DT01QUkVTU0VEX1JHQjhfRVRDMjtpZih0PT09QkJ0KXJldHVybiBuLkNPTVBSRVNTRURfUkdCQThfRVRDMl9FQUN9cmV0dXJuIDM3ODA4PT09dHx8Mzc4MDk9PT10fHwzNzgxMD09PXR8fDM3ODExPT09dHx8Mzc4MTI9PT10fHwzNzgxMz09PXR8fDM3ODE0PT09dHx8Mzc4MTU9PT10fHwzNzgxNj09PXR8fDM3ODE3PT09dHx8Mzc4MTg9PT10fHwzNzgxOT09PXR8fDM3ODIwPT09dHx8Mzc4MjE9PT10fHwzNzg0MD09PXR8fDM3ODQxPT09dHx8Mzc4NDI9PT10fHwzNzg0Mz09PXR8fDM3ODQ0PT09dHx8Mzc4NDU9PT10fHwzNzg0Nj09PXR8fDM3ODQ3PT09dHx8Mzc4NDg9PT10fHwzNzg0OT09PXR8fDM3ODUwPT09dHx8Mzc4NTE9PT10fHwzNzg1Mj09PXR8fDM3ODUzPT09dD8obj1lLmdldCgiV0VCR0xfY29tcHJlc3NlZF90ZXh0dXJlX2FzdGMiKSxudWxsIT09bj90Om51bGwpOjM2NDkyPT09dD8obj1lLmdldCgiRVhUX3RleHR1cmVfY29tcHJlc3Npb25fYnB0YyIpLG51bGwhPT1uP3Q6bnVsbCk6dD09PU1CdD9pPzM0MDQyOihuPWUuZ2V0KCJXRUJHTF9kZXB0aF90ZXh0dXJlIiksbnVsbCE9PW4/bi5VTlNJR05FRF9JTlRfMjRfOF9XRUJHTDpudWxsKTp2b2lkIDB9fX1mdW5jdGlvbiAkVXQodD1bXSl7SFZ0LmNhbGwodGhpcyksdGhpcy5jYW1lcmFzPXR9ZnVuY3Rpb24gS1V0KCl7X0Z0LmNhbGwodGhpcyksdGhpcy50eXBlPSJHcm91cCJ9ZnVuY3Rpb24gWlV0KCl7dGhpcy5fdGFyZ2V0UmF5PW51bGwsdGhpcy5fZ3JpcD1udWxsLHRoaXMuX2hhbmQ9bnVsbH1mdW5jdGlvbiBKVXQodCxlKXtjb25zdCBuPXRoaXM7bGV0IGk9bnVsbCxyPTEsbz1udWxsLGE9ImxvY2FsLWZsb29yIixzPW51bGw7Y29uc3QgbD1bXSxjPW5ldyBNYXAsdT1uZXcgSFZ0O3UubGF5ZXJzLmVuYWJsZSgxKSx1LnZpZXdwb3J0PW5ldyBtSHQ7Y29uc3QgaD1uZXcgSFZ0O2gubGF5ZXJzLmVuYWJsZSgyKSxoLnZpZXdwb3J0PW5ldyBtSHQ7Y29uc3QgZD1bdSxoXSxwPW5ldyAkVXQ7cC5sYXllcnMuZW5hYmxlKDEpLHAubGF5ZXJzLmVuYWJsZSgyKTtsZXQgZj1udWxsLG09bnVsbDtmdW5jdGlvbiBnKHQpe2NvbnN0IGU9Yy5nZXQodC5pbnB1dFNvdXJjZSk7ZSYmZS5kaXNwYXRjaEV2ZW50KHt0eXBlOnQudHlwZSxkYXRhOnQuaW5wdXRTb3VyY2V9KX1mdW5jdGlvbiBfKCl7Yy5mb3JFYWNoKChmdW5jdGlvbih0LGUpe3QuZGlzY29ubmVjdChlKX0pKSxjLmNsZWFyKCksZj1udWxsLG09bnVsbCx0LnNldEZyYW1lYnVmZmVyKG51bGwpLHQuc2V0UmVuZGVyVGFyZ2V0KHQuZ2V0UmVuZGVyVGFyZ2V0KCkpLFMuc3RvcCgpLG4uaXNQcmVzZW50aW5nPSExLG4uZGlzcGF0Y2hFdmVudCh7dHlwZToic2Vzc2lvbmVuZCJ9KX1mdW5jdGlvbiB5KHQpe2NvbnN0IGU9aS5pbnB1dFNvdXJjZXM7Zm9yKGxldCB0PTA7dDxsLmxlbmd0aDt0KyspYy5zZXQoZVt0XSxsW3RdKTtmb3IobGV0IGU9MDtlPHQucmVtb3ZlZC5sZW5ndGg7ZSsrKXtjb25zdCBuPXQucmVtb3ZlZFtlXSxpPWMuZ2V0KG4pO2kmJihpLmRpc3BhdGNoRXZlbnQoe3R5cGU6ImRpc2Nvbm5lY3RlZCIsZGF0YTpufSksYy5kZWxldGUobikpfWZvcihsZXQgZT0wO2U8dC5hZGRlZC5sZW5ndGg7ZSsrKXtjb25zdCBuPXQuYWRkZWRbZV0saT1jLmdldChuKTtpJiZpLmRpc3BhdGNoRXZlbnQoe3R5cGU6ImNvbm5lY3RlZCIsZGF0YTpufSl9fXRoaXMuZW5hYmxlZD0hMSx0aGlzLmlzUHJlc2VudGluZz0hMSx0aGlzLmdldENvbnRyb2xsZXI9ZnVuY3Rpb24odCl7bGV0IGU9bFt0XTtyZXR1cm4gdm9pZCAwPT09ZSYmKGU9bmV3IFpVdCxsW3RdPWUpLGUuZ2V0VGFyZ2V0UmF5U3BhY2UoKX0sdGhpcy5nZXRDb250cm9sbGVyR3JpcD1mdW5jdGlvbih0KXtsZXQgZT1sW3RdO3JldHVybiB2b2lkIDA9PT1lJiYoZT1uZXcgWlV0LGxbdF09ZSksZS5nZXRHcmlwU3BhY2UoKX0sdGhpcy5nZXRIYW5kPWZ1bmN0aW9uKHQpe2xldCBlPWxbdF07cmV0dXJuIHZvaWQgMD09PWUmJihlPW5ldyBaVXQsbFt0XT1lKSxlLmdldEhhbmRTcGFjZSgpfSx0aGlzLnNldEZyYW1lYnVmZmVyU2NhbGVGYWN0b3I9ZnVuY3Rpb24odCl7cj10LCEwPT09bi5pc1ByZXNlbnRpbmcmJmNvbnNvbGUud2FybigiVEhSRUUuV2ViWFJNYW5hZ2VyOiBDYW5ub3QgY2hhbmdlIGZyYW1lYnVmZmVyIHNjYWxlIHdoaWxlIHByZXNlbnRpbmcuIil9LHRoaXMuc2V0UmVmZXJlbmNlU3BhY2VUeXBlPWZ1bmN0aW9uKHQpe2E9dCwhMD09PW4uaXNQcmVzZW50aW5nJiZjb25zb2xlLndhcm4oIlRIUkVFLldlYlhSTWFuYWdlcjogQ2Fubm90IGNoYW5nZSByZWZlcmVuY2Ugc3BhY2UgdHlwZSB3aGlsZSBwcmVzZW50aW5nLiIpfSx0aGlzLmdldFJlZmVyZW5jZVNwYWNlPWZ1bmN0aW9uKCl7cmV0dXJuIG99LHRoaXMuZ2V0U2Vzc2lvbj1mdW5jdGlvbigpe3JldHVybiBpfSx0aGlzLnNldFNlc3Npb249YXN5bmMgZnVuY3Rpb24odCl7aWYoaT10LG51bGwhPT1pKXtpLmFkZEV2ZW50TGlzdGVuZXIoInNlbGVjdCIsZyksaS5hZGRFdmVudExpc3RlbmVyKCJzZWxlY3RzdGFydCIsZyksaS5hZGRFdmVudExpc3RlbmVyKCJzZWxlY3RlbmQiLGcpLGkuYWRkRXZlbnRMaXN0ZW5lcigic3F1ZWV6ZSIsZyksaS5hZGRFdmVudExpc3RlbmVyKCJzcXVlZXplc3RhcnQiLGcpLGkuYWRkRXZlbnRMaXN0ZW5lcigic3F1ZWV6ZWVuZCIsZyksaS5hZGRFdmVudExpc3RlbmVyKCJlbmQiLF8pLGkuYWRkRXZlbnRMaXN0ZW5lcigiaW5wdXRzb3VyY2VzY2hhbmdlIix5KTtjb25zdCB0PWUuZ2V0Q29udGV4dEF0dHJpYnV0ZXMoKTshMCE9PXQueHJDb21wYXRpYmxlJiZhd2FpdCBlLm1ha2VYUkNvbXBhdGlibGUoKTtjb25zdCBzPW5ldyBYUldlYkdMTGF5ZXIoaSxlLHthbnRpYWxpYXM6dC5hbnRpYWxpYXMsYWxwaGE6dC5hbHBoYSxkZXB0aDp0LmRlcHRoLHN0ZW5jaWw6dC5zdGVuY2lsLGZyYW1lYnVmZmVyU2NhbGVGYWN0b3I6cn0pO2kudXBkYXRlUmVuZGVyU3RhdGUoe2Jhc2VMYXllcjpzfSksbz1hd2FpdCBpLnJlcXVlc3RSZWZlcmVuY2VTcGFjZShhKSxTLnNldENvbnRleHQoaSksUy5zdGFydCgpLG4uaXNQcmVzZW50aW5nPSEwLG4uZGlzcGF0Y2hFdmVudCh7dHlwZToic2Vzc2lvbnN0YXJ0In0pfX07Y29uc3Qgdj1uZXcgeUh0LGI9bmV3IHlIdDtmdW5jdGlvbiB4KHQsZSl7bnVsbD09PWU/dC5tYXRyaXhXb3JsZC5jb3B5KHQubWF0cml4KTp0Lm1hdHJpeFdvcmxkLm11bHRpcGx5TWF0cmljZXMoZS5tYXRyaXhXb3JsZCx0Lm1hdHJpeCksdC5tYXRyaXhXb3JsZEludmVyc2UuY29weSh0Lm1hdHJpeFdvcmxkKS5pbnZlcnQoKX10aGlzLmdldENhbWVyYT1mdW5jdGlvbih0KXtwLm5lYXI9aC5uZWFyPXUubmVhcj10Lm5lYXIscC5mYXI9aC5mYXI9dS5mYXI9dC5mYXIsZj09PXAubmVhciYmbT09PXAuZmFyfHwoaS51cGRhdGVSZW5kZXJTdGF0ZSh7ZGVwdGhOZWFyOnAubmVhcixkZXB0aEZhcjpwLmZhcn0pLGY9cC5uZWFyLG09cC5mYXIpO2NvbnN0IGU9dC5wYXJlbnQsbj1wLmNhbWVyYXM7eChwLGUpO2ZvcihsZXQgdD0wO3Q8bi5sZW5ndGg7dCsrKXgoblt0XSxlKTt0Lm1hdHJpeFdvcmxkLmNvcHkocC5tYXRyaXhXb3JsZCksdC5tYXRyaXguY29weShwLm1hdHJpeCksdC5tYXRyaXguZGVjb21wb3NlKHQucG9zaXRpb24sdC5xdWF0ZXJuaW9uLHQuc2NhbGUpO2NvbnN0IHI9dC5jaGlsZHJlbjtmb3IobGV0IHQ9MCxlPXIubGVuZ3RoO3Q8ZTt0Kyspclt0XS51cGRhdGVNYXRyaXhXb3JsZCghMCk7cmV0dXJuIDI9PT1uLmxlbmd0aD8oZnVuY3Rpb24gbyh0LGUsbil7di5zZXRGcm9tTWF0cml4UG9zaXRpb24oZS5tYXRyaXhXb3JsZCksYi5zZXRGcm9tTWF0cml4UG9zaXRpb24obi5tYXRyaXhXb3JsZCk7Y29uc3QgaT12LmRpc3RhbmNlVG8oYikscj1lLnByb2plY3Rpb25NYXRyaXguZWxlbWVudHMsbz1uLnByb2plY3Rpb25NYXRyaXguZWxlbWVudHMsYT1yWzE0XS8oclsxMF0tMSkscz1yWzE0XS8oclsxMF0rMSksbD0ocls5XSsxKS9yWzVdLGM9KHJbOV0tMSkvcls1XSx1PShyWzhdLTEpL3JbMF0saD0ob1s4XSsxKS9vWzBdLGQ9YSp1LHA9YSpoLGY9aS8oLXUraCksbT1mKi11O2UubWF0cml4V29ybGQuZGVjb21wb3NlKHQucG9zaXRpb24sdC5xdWF0ZXJuaW9uLHQuc2NhbGUpLHQudHJhbnNsYXRlWChtKSx0LnRyYW5zbGF0ZVooZiksdC5tYXRyaXhXb3JsZC5jb21wb3NlKHQucG9zaXRpb24sdC5xdWF0ZXJuaW9uLHQuc2NhbGUpLHQubWF0cml4V29ybGRJbnZlcnNlLmNvcHkodC5tYXRyaXhXb3JsZCkuaW52ZXJ0KCk7Y29uc3QgZz1hK2YsXz1zK2Y7dC5wcm9qZWN0aW9uTWF0cml4Lm1ha2VQZXJzcGVjdGl2ZShkLW0scCsoaS1tKSxsKnMvXypnLGMqcy9fKmcsZyxfKX0pKHAsdSxoKTpwLnByb2plY3Rpb25NYXRyaXguY29weSh1LnByb2plY3Rpb25NYXRyaXgpLHB9O2xldCB3PW51bGw7Y29uc3QgUz1uZXcgWFZ0O1Muc2V0QW5pbWF0aW9uTG9vcCgoZnVuY3Rpb24gTShlLG4pe2lmKHM9bi5nZXRWaWV3ZXJQb3NlKG8pLG51bGwhPT1zKXtjb25zdCBlPXMudmlld3Msbj1pLnJlbmRlclN0YXRlLmJhc2VMYXllcjt0LnNldEZyYW1lYnVmZmVyKG4uZnJhbWVidWZmZXIpO2xldCByPSExO2UubGVuZ3RoIT09cC5jYW1lcmFzLmxlbmd0aCYmKHAuY2FtZXJhcy5sZW5ndGg9MCxyPSEwKTtmb3IobGV0IHQ9MDt0PGUubGVuZ3RoO3QrKyl7Y29uc3QgaT1lW3RdLG89bi5nZXRWaWV3cG9ydChpKSxhPWRbdF07YS5tYXRyaXguZnJvbUFycmF5KGkudHJhbnNmb3JtLm1hdHJpeCksYS5wcm9qZWN0aW9uTWF0cml4LmZyb21BcnJheShpLnByb2plY3Rpb25NYXRyaXgpLGEudmlld3BvcnQuc2V0KG8ueCxvLnksby53aWR0aCxvLmhlaWdodCksMD09PXQmJnAubWF0cml4LmNvcHkoYS5tYXRyaXgpLCEwPT09ciYmcC5jYW1lcmFzLnB1c2goYSl9fWNvbnN0IHI9aS5pbnB1dFNvdXJjZXM7Zm9yKGxldCB0PTA7dDxsLmxlbmd0aDt0KyspbFt0XS51cGRhdGUoclt0XSxuLG8pO3cmJncoZSxuKX0pKSx0aGlzLnNldEFuaW1hdGlvbkxvb3A9ZnVuY3Rpb24odCl7dz10fSx0aGlzLmRpc3Bvc2U9ZnVuY3Rpb24oKXt9fWZ1bmN0aW9uIFFVdCh0KXtmdW5jdGlvbiBlKGUsbil7ZS5vcGFjaXR5LnZhbHVlPW4ub3BhY2l0eSxuLmNvbG9yJiZlLmRpZmZ1c2UudmFsdWUuY29weShuLmNvbG9yKSxuLmVtaXNzaXZlJiZlLmVtaXNzaXZlLnZhbHVlLmNvcHkobi5lbWlzc2l2ZSkubXVsdGlwbHlTY2FsYXIobi5lbWlzc2l2ZUludGVuc2l0eSksbi5tYXAmJihlLm1hcC52YWx1ZT1uLm1hcCksbi5hbHBoYU1hcCYmKGUuYWxwaGFNYXAudmFsdWU9bi5hbHBoYU1hcCksbi5zcGVjdWxhck1hcCYmKGUuc3BlY3VsYXJNYXAudmFsdWU9bi5zcGVjdWxhck1hcCk7Y29uc3QgaT10LmdldChuKS5lbnZNYXA7aWYoaSl7ZS5lbnZNYXAudmFsdWU9aSxlLmZsaXBFbnZNYXAudmFsdWU9aS5pc0N1YmVUZXh0dXJlJiZpLl9uZWVkc0ZsaXBFbnZNYXA/LTE6MSxlLnJlZmxlY3Rpdml0eS52YWx1ZT1uLnJlZmxlY3Rpdml0eSxlLnJlZnJhY3Rpb25SYXRpby52YWx1ZT1uLnJlZnJhY3Rpb25SYXRpbztjb25zdCByPXQuZ2V0KGkpLl9fbWF4TWlwTGV2ZWw7dm9pZCAwIT09ciYmKGUubWF4TWlwTGV2ZWwudmFsdWU9cil9bGV0IHIsbztuLmxpZ2h0TWFwJiYoZS5saWdodE1hcC52YWx1ZT1uLmxpZ2h0TWFwLGUubGlnaHRNYXBJbnRlbnNpdHkudmFsdWU9bi5saWdodE1hcEludGVuc2l0eSksbi5hb01hcCYmKGUuYW9NYXAudmFsdWU9bi5hb01hcCxlLmFvTWFwSW50ZW5zaXR5LnZhbHVlPW4uYW9NYXBJbnRlbnNpdHkpLG4ubWFwP3I9bi5tYXA6bi5zcGVjdWxhck1hcD9yPW4uc3BlY3VsYXJNYXA6bi5kaXNwbGFjZW1lbnRNYXA/cj1uLmRpc3BsYWNlbWVudE1hcDpuLm5vcm1hbE1hcD9yPW4ubm9ybWFsTWFwOm4uYnVtcE1hcD9yPW4uYnVtcE1hcDpuLnJvdWdobmVzc01hcD9yPW4ucm91Z2huZXNzTWFwOm4ubWV0YWxuZXNzTWFwP3I9bi5tZXRhbG5lc3NNYXA6bi5hbHBoYU1hcD9yPW4uYWxwaGFNYXA6bi5lbWlzc2l2ZU1hcD9yPW4uZW1pc3NpdmVNYXA6bi5jbGVhcmNvYXRNYXA/cj1uLmNsZWFyY29hdE1hcDpuLmNsZWFyY29hdE5vcm1hbE1hcD9yPW4uY2xlYXJjb2F0Tm9ybWFsTWFwOm4uY2xlYXJjb2F0Um91Z2huZXNzTWFwJiYocj1uLmNsZWFyY29hdFJvdWdobmVzc01hcCksdm9pZCAwIT09ciYmKHIuaXNXZWJHTFJlbmRlclRhcmdldCYmKHI9ci50ZXh0dXJlKSwhMD09PXIubWF0cml4QXV0b1VwZGF0ZSYmci51cGRhdGVNYXRyaXgoKSxlLnV2VHJhbnNmb3JtLnZhbHVlLmNvcHkoci5tYXRyaXgpKSxuLmFvTWFwP289bi5hb01hcDpuLmxpZ2h0TWFwJiYobz1uLmxpZ2h0TWFwKSx2b2lkIDAhPT1vJiYoby5pc1dlYkdMUmVuZGVyVGFyZ2V0JiYobz1vLnRleHR1cmUpLCEwPT09by5tYXRyaXhBdXRvVXBkYXRlJiZvLnVwZGF0ZU1hdHJpeCgpLGUudXYyVHJhbnNmb3JtLnZhbHVlLmNvcHkoby5tYXRyaXgpKX1mdW5jdGlvbiBuKGUsbil7ZS5yb3VnaG5lc3MudmFsdWU9bi5yb3VnaG5lc3MsZS5tZXRhbG5lc3MudmFsdWU9bi5tZXRhbG5lc3Msbi5yb3VnaG5lc3NNYXAmJihlLnJvdWdobmVzc01hcC52YWx1ZT1uLnJvdWdobmVzc01hcCksbi5tZXRhbG5lc3NNYXAmJihlLm1ldGFsbmVzc01hcC52YWx1ZT1uLm1ldGFsbmVzc01hcCksbi5lbWlzc2l2ZU1hcCYmKGUuZW1pc3NpdmVNYXAudmFsdWU9bi5lbWlzc2l2ZU1hcCksbi5idW1wTWFwJiYoZS5idW1wTWFwLnZhbHVlPW4uYnVtcE1hcCxlLmJ1bXBTY2FsZS52YWx1ZT1uLmJ1bXBTY2FsZSwxPT09bi5zaWRlJiYoZS5idW1wU2NhbGUudmFsdWUqPS0xKSksbi5ub3JtYWxNYXAmJihlLm5vcm1hbE1hcC52YWx1ZT1uLm5vcm1hbE1hcCxlLm5vcm1hbFNjYWxlLnZhbHVlLmNvcHkobi5ub3JtYWxTY2FsZSksMT09PW4uc2lkZSYmZS5ub3JtYWxTY2FsZS52YWx1ZS5uZWdhdGUoKSksbi5kaXNwbGFjZW1lbnRNYXAmJihlLmRpc3BsYWNlbWVudE1hcC52YWx1ZT1uLmRpc3BsYWNlbWVudE1hcCxlLmRpc3BsYWNlbWVudFNjYWxlLnZhbHVlPW4uZGlzcGxhY2VtZW50U2NhbGUsZS5kaXNwbGFjZW1lbnRCaWFzLnZhbHVlPW4uZGlzcGxhY2VtZW50QmlhcyksdC5nZXQobikuZW52TWFwJiYoZS5lbnZNYXBJbnRlbnNpdHkudmFsdWU9bi5lbnZNYXBJbnRlbnNpdHkpfXJldHVybntyZWZyZXNoRm9nVW5pZm9ybXM6ZnVuY3Rpb24gaSh0LGUpe3QuZm9nQ29sb3IudmFsdWUuY29weShlLmNvbG9yKSxlLmlzRm9nPyh0LmZvZ05lYXIudmFsdWU9ZS5uZWFyLHQuZm9nRmFyLnZhbHVlPWUuZmFyKTplLmlzRm9nRXhwMiYmKHQuZm9nRGVuc2l0eS52YWx1ZT1lLmRlbnNpdHkpfSxyZWZyZXNoTWF0ZXJpYWxVbmlmb3JtczpmdW5jdGlvbiByKHQsaSxvLGEpe2kuaXNNZXNoQmFzaWNNYXRlcmlhbD9lKHQsaSk6aS5pc01lc2hMYW1iZXJ0TWF0ZXJpYWw/KGUodCxpKSwoZnVuY3Rpb24gcyh0LGUpe2UuZW1pc3NpdmVNYXAmJih0LmVtaXNzaXZlTWFwLnZhbHVlPWUuZW1pc3NpdmVNYXApfSkodCxpKSk6aS5pc01lc2hUb29uTWF0ZXJpYWw/KGUodCxpKSwoZnVuY3Rpb24gbCh0LGUpe2UuZ3JhZGllbnRNYXAmJih0LmdyYWRpZW50TWFwLnZhbHVlPWUuZ3JhZGllbnRNYXApLGUuZW1pc3NpdmVNYXAmJih0LmVtaXNzaXZlTWFwLnZhbHVlPWUuZW1pc3NpdmVNYXApLGUuYnVtcE1hcCYmKHQuYnVtcE1hcC52YWx1ZT1lLmJ1bXBNYXAsdC5idW1wU2NhbGUudmFsdWU9ZS5idW1wU2NhbGUsMT09PWUuc2lkZSYmKHQuYnVtcFNjYWxlLnZhbHVlKj0tMSkpLGUubm9ybWFsTWFwJiYodC5ub3JtYWxNYXAudmFsdWU9ZS5ub3JtYWxNYXAsdC5ub3JtYWxTY2FsZS52YWx1ZS5jb3B5KGUubm9ybWFsU2NhbGUpLDE9PT1lLnNpZGUmJnQubm9ybWFsU2NhbGUudmFsdWUubmVnYXRlKCkpLGUuZGlzcGxhY2VtZW50TWFwJiYodC5kaXNwbGFjZW1lbnRNYXAudmFsdWU9ZS5kaXNwbGFjZW1lbnRNYXAsdC5kaXNwbGFjZW1lbnRTY2FsZS52YWx1ZT1lLmRpc3BsYWNlbWVudFNjYWxlLHQuZGlzcGxhY2VtZW50Qmlhcy52YWx1ZT1lLmRpc3BsYWNlbWVudEJpYXMpfSkodCxpKSk6aS5pc01lc2hQaG9uZ01hdGVyaWFsPyhlKHQsaSksKGZ1bmN0aW9uIGModCxlKXt0LnNwZWN1bGFyLnZhbHVlLmNvcHkoZS5zcGVjdWxhciksdC5zaGluaW5lc3MudmFsdWU9TWF0aC5tYXgoZS5zaGluaW5lc3MsMWUtNCksZS5lbWlzc2l2ZU1hcCYmKHQuZW1pc3NpdmVNYXAudmFsdWU9ZS5lbWlzc2l2ZU1hcCksZS5idW1wTWFwJiYodC5idW1wTWFwLnZhbHVlPWUuYnVtcE1hcCx0LmJ1bXBTY2FsZS52YWx1ZT1lLmJ1bXBTY2FsZSwxPT09ZS5zaWRlJiYodC5idW1wU2NhbGUudmFsdWUqPS0xKSksZS5ub3JtYWxNYXAmJih0Lm5vcm1hbE1hcC52YWx1ZT1lLm5vcm1hbE1hcCx0Lm5vcm1hbFNjYWxlLnZhbHVlLmNvcHkoZS5ub3JtYWxTY2FsZSksMT09PWUuc2lkZSYmdC5ub3JtYWxTY2FsZS52YWx1ZS5uZWdhdGUoKSksZS5kaXNwbGFjZW1lbnRNYXAmJih0LmRpc3BsYWNlbWVudE1hcC52YWx1ZT1lLmRpc3BsYWNlbWVudE1hcCx0LmRpc3BsYWNlbWVudFNjYWxlLnZhbHVlPWUuZGlzcGxhY2VtZW50U2NhbGUsdC5kaXNwbGFjZW1lbnRCaWFzLnZhbHVlPWUuZGlzcGxhY2VtZW50Qmlhcyl9KSh0LGkpKTppLmlzTWVzaFN0YW5kYXJkTWF0ZXJpYWw/KGUodCxpKSxpLmlzTWVzaFBoeXNpY2FsTWF0ZXJpYWw/KGZ1bmN0aW9uIHUodCxlKXtuKHQsZSksdC5yZWZsZWN0aXZpdHkudmFsdWU9ZS5yZWZsZWN0aXZpdHksdC5jbGVhcmNvYXQudmFsdWU9ZS5jbGVhcmNvYXQsdC5jbGVhcmNvYXRSb3VnaG5lc3MudmFsdWU9ZS5jbGVhcmNvYXRSb3VnaG5lc3MsZS5zaGVlbiYmdC5zaGVlbi52YWx1ZS5jb3B5KGUuc2hlZW4pLGUuY2xlYXJjb2F0TWFwJiYodC5jbGVhcmNvYXRNYXAudmFsdWU9ZS5jbGVhcmNvYXRNYXApLGUuY2xlYXJjb2F0Um91Z2huZXNzTWFwJiYodC5jbGVhcmNvYXRSb3VnaG5lc3NNYXAudmFsdWU9ZS5jbGVhcmNvYXRSb3VnaG5lc3NNYXApLGUuY2xlYXJjb2F0Tm9ybWFsTWFwJiYodC5jbGVhcmNvYXROb3JtYWxTY2FsZS52YWx1ZS5jb3B5KGUuY2xlYXJjb2F0Tm9ybWFsU2NhbGUpLHQuY2xlYXJjb2F0Tm9ybWFsTWFwLnZhbHVlPWUuY2xlYXJjb2F0Tm9ybWFsTWFwLDE9PT1lLnNpZGUmJnQuY2xlYXJjb2F0Tm9ybWFsU2NhbGUudmFsdWUubmVnYXRlKCkpLHQudHJhbnNtaXNzaW9uLnZhbHVlPWUudHJhbnNtaXNzaW9uLGUudHJhbnNtaXNzaW9uTWFwJiYodC50cmFuc21pc3Npb25NYXAudmFsdWU9ZS50cmFuc21pc3Npb25NYXApfSkodCxpKTpuKHQsaSkpOmkuaXNNZXNoTWF0Y2FwTWF0ZXJpYWw/KGUodCxpKSwoZnVuY3Rpb24gaCh0LGUpe2UubWF0Y2FwJiYodC5tYXRjYXAudmFsdWU9ZS5tYXRjYXApLGUuYnVtcE1hcCYmKHQuYnVtcE1hcC52YWx1ZT1lLmJ1bXBNYXAsdC5idW1wU2NhbGUudmFsdWU9ZS5idW1wU2NhbGUsMT09PWUuc2lkZSYmKHQuYnVtcFNjYWxlLnZhbHVlKj0tMSkpLGUubm9ybWFsTWFwJiYodC5ub3JtYWxNYXAudmFsdWU9ZS5ub3JtYWxNYXAsdC5ub3JtYWxTY2FsZS52YWx1ZS5jb3B5KGUubm9ybWFsU2NhbGUpLDE9PT1lLnNpZGUmJnQubm9ybWFsU2NhbGUudmFsdWUubmVnYXRlKCkpLGUuZGlzcGxhY2VtZW50TWFwJiYodC5kaXNwbGFjZW1lbnRNYXAudmFsdWU9ZS5kaXNwbGFjZW1lbnRNYXAsdC5kaXNwbGFjZW1lbnRTY2FsZS52YWx1ZT1lLmRpc3BsYWNlbWVudFNjYWxlLHQuZGlzcGxhY2VtZW50Qmlhcy52YWx1ZT1lLmRpc3BsYWNlbWVudEJpYXMpfSkodCxpKSk6aS5pc01lc2hEZXB0aE1hdGVyaWFsPyhlKHQsaSksKGZ1bmN0aW9uIGQodCxlKXtlLmRpc3BsYWNlbWVudE1hcCYmKHQuZGlzcGxhY2VtZW50TWFwLnZhbHVlPWUuZGlzcGxhY2VtZW50TWFwLHQuZGlzcGxhY2VtZW50U2NhbGUudmFsdWU9ZS5kaXNwbGFjZW1lbnRTY2FsZSx0LmRpc3BsYWNlbWVudEJpYXMudmFsdWU9ZS5kaXNwbGFjZW1lbnRCaWFzKX0pKHQsaSkpOmkuaXNNZXNoRGlzdGFuY2VNYXRlcmlhbD8oZSh0LGkpLChmdW5jdGlvbiBwKHQsZSl7ZS5kaXNwbGFjZW1lbnRNYXAmJih0LmRpc3BsYWNlbWVudE1hcC52YWx1ZT1lLmRpc3BsYWNlbWVudE1hcCx0LmRpc3BsYWNlbWVudFNjYWxlLnZhbHVlPWUuZGlzcGxhY2VtZW50U2NhbGUsdC5kaXNwbGFjZW1lbnRCaWFzLnZhbHVlPWUuZGlzcGxhY2VtZW50QmlhcyksdC5yZWZlcmVuY2VQb3NpdGlvbi52YWx1ZS5jb3B5KGUucmVmZXJlbmNlUG9zaXRpb24pLHQubmVhckRpc3RhbmNlLnZhbHVlPWUubmVhckRpc3RhbmNlLHQuZmFyRGlzdGFuY2UudmFsdWU9ZS5mYXJEaXN0YW5jZX0pKHQsaSkpOmkuaXNNZXNoTm9ybWFsTWF0ZXJpYWw/KGUodCxpKSwoZnVuY3Rpb24gZih0LGUpe2UuYnVtcE1hcCYmKHQuYnVtcE1hcC52YWx1ZT1lLmJ1bXBNYXAsdC5idW1wU2NhbGUudmFsdWU9ZS5idW1wU2NhbGUsMT09PWUuc2lkZSYmKHQuYnVtcFNjYWxlLnZhbHVlKj0tMSkpLGUubm9ybWFsTWFwJiYodC5ub3JtYWxNYXAudmFsdWU9ZS5ub3JtYWxNYXAsdC5ub3JtYWxTY2FsZS52YWx1ZS5jb3B5KGUubm9ybWFsU2NhbGUpLDE9PT1lLnNpZGUmJnQubm9ybWFsU2NhbGUudmFsdWUubmVnYXRlKCkpLGUuZGlzcGxhY2VtZW50TWFwJiYodC5kaXNwbGFjZW1lbnRNYXAudmFsdWU9ZS5kaXNwbGFjZW1lbnRNYXAsdC5kaXNwbGFjZW1lbnRTY2FsZS52YWx1ZT1lLmRpc3BsYWNlbWVudFNjYWxlLHQuZGlzcGxhY2VtZW50Qmlhcy52YWx1ZT1lLmRpc3BsYWNlbWVudEJpYXMpfSkodCxpKSk6aS5pc0xpbmVCYXNpY01hdGVyaWFsPygoZnVuY3Rpb24gbSh0LGUpe3QuZGlmZnVzZS52YWx1ZS5jb3B5KGUuY29sb3IpLHQub3BhY2l0eS52YWx1ZT1lLm9wYWNpdHl9KSh0LGkpLGkuaXNMaW5lRGFzaGVkTWF0ZXJpYWwmJihmdW5jdGlvbiBnKHQsZSl7dC5kYXNoU2l6ZS52YWx1ZT1lLmRhc2hTaXplLHQudG90YWxTaXplLnZhbHVlPWUuZGFzaFNpemUrZS5nYXBTaXplLHQuc2NhbGUudmFsdWU9ZS5zY2FsZX0pKHQsaSkpOmkuaXNQb2ludHNNYXRlcmlhbD8oZnVuY3Rpb24gXyh0LGUsbixpKXtsZXQgcjt0LmRpZmZ1c2UudmFsdWUuY29weShlLmNvbG9yKSx0Lm9wYWNpdHkudmFsdWU9ZS5vcGFjaXR5LHQuc2l6ZS52YWx1ZT1lLnNpemUqbix0LnNjYWxlLnZhbHVlPS41KmksZS5tYXAmJih0Lm1hcC52YWx1ZT1lLm1hcCksZS5hbHBoYU1hcCYmKHQuYWxwaGFNYXAudmFsdWU9ZS5hbHBoYU1hcCksZS5tYXA/cj1lLm1hcDplLmFscGhhTWFwJiYocj1lLmFscGhhTWFwKSx2b2lkIDAhPT1yJiYoITA9PT1yLm1hdHJpeEF1dG9VcGRhdGUmJnIudXBkYXRlTWF0cml4KCksdC51dlRyYW5zZm9ybS52YWx1ZS5jb3B5KHIubWF0cml4KSl9KSh0LGksbyxhKTppLmlzU3ByaXRlTWF0ZXJpYWw/KGZ1bmN0aW9uIHkodCxlKXtsZXQgbjt0LmRpZmZ1c2UudmFsdWUuY29weShlLmNvbG9yKSx0Lm9wYWNpdHkudmFsdWU9ZS5vcGFjaXR5LHQucm90YXRpb24udmFsdWU9ZS5yb3RhdGlvbixlLm1hcCYmKHQubWFwLnZhbHVlPWUubWFwKSxlLmFscGhhTWFwJiYodC5hbHBoYU1hcC52YWx1ZT1lLmFscGhhTWFwKSxlLm1hcD9uPWUubWFwOmUuYWxwaGFNYXAmJihuPWUuYWxwaGFNYXApLHZvaWQgMCE9PW4mJighMD09PW4ubWF0cml4QXV0b1VwZGF0ZSYmbi51cGRhdGVNYXRyaXgoKSx0LnV2VHJhbnNmb3JtLnZhbHVlLmNvcHkobi5tYXRyaXgpKX0pKHQsaSk6aS5pc1NoYWRvd01hdGVyaWFsPyh0LmNvbG9yLnZhbHVlLmNvcHkoaS5jb2xvciksdC5vcGFjaXR5LnZhbHVlPWkub3BhY2l0eSk6aS5pc1NoYWRlck1hdGVyaWFsJiYoaS51bmlmb3Jtc05lZWRVcGRhdGU9ITEpfX19ZnVuY3Rpb24gdEd0KHQpe2NvbnN0IGU9dm9pZCAwIT09KHQ9dHx8e30pLmNhbnZhcz90LmNhbnZhczooZnVuY3Rpb24gbigpe2NvbnN0IHQ9ZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKCJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hodG1sIiwiY2FudmFzIik7cmV0dXJuIHQuc3R5bGUuZGlzcGxheT0iYmxvY2siLHR9KSgpLGk9dm9pZCAwIT09dC5jb250ZXh0P3QuY29udGV4dDpudWxsLHI9dm9pZCAwIT09dC5hbHBoYSYmdC5hbHBoYSxvPXZvaWQgMD09PXQuZGVwdGh8fHQuZGVwdGgsYT12b2lkIDA9PT10LnN0ZW5jaWx8fHQuc3RlbmNpbCxzPXZvaWQgMCE9PXQuYW50aWFsaWFzJiZ0LmFudGlhbGlhcyxsPXZvaWQgMD09PXQucHJlbXVsdGlwbGllZEFscGhhfHx0LnByZW11bHRpcGxpZWRBbHBoYSxjPXZvaWQgMCE9PXQucHJlc2VydmVEcmF3aW5nQnVmZmVyJiZ0LnByZXNlcnZlRHJhd2luZ0J1ZmZlcix1PXZvaWQgMCE9PXQucG93ZXJQcmVmZXJlbmNlP3QucG93ZXJQcmVmZXJlbmNlOiJkZWZhdWx0IixoPXZvaWQgMCE9PXQuZmFpbElmTWFqb3JQZXJmb3JtYW5jZUNhdmVhdCYmdC5mYWlsSWZNYWpvclBlcmZvcm1hbmNlQ2F2ZWF0O2xldCBkPW51bGwscD1udWxsO2NvbnN0IGY9W107dGhpcy5kb21FbGVtZW50PWUsdGhpcy5kZWJ1Zz17Y2hlY2tTaGFkZXJFcnJvcnM6ITB9LHRoaXMuYXV0b0NsZWFyPSEwLHRoaXMuYXV0b0NsZWFyQ29sb3I9ITAsdGhpcy5hdXRvQ2xlYXJEZXB0aD0hMCx0aGlzLmF1dG9DbGVhclN0ZW5jaWw9ITAsdGhpcy5zb3J0T2JqZWN0cz0hMCx0aGlzLmNsaXBwaW5nUGxhbmVzPVtdLHRoaXMubG9jYWxDbGlwcGluZ0VuYWJsZWQ9ITEsdGhpcy5nYW1tYUZhY3Rvcj0yLHRoaXMub3V0cHV0RW5jb2Rpbmc9WUJ0LHRoaXMucGh5c2ljYWxseUNvcnJlY3RMaWdodHM9ITEsdGhpcy50b25lTWFwcGluZz0wLHRoaXMudG9uZU1hcHBpbmdFeHBvc3VyZT0xLHRoaXMubWF4TW9ycGhUYXJnZXRzPTgsdGhpcy5tYXhNb3JwaE5vcm1hbHM9NDtjb25zdCBtPXRoaXM7bGV0IGc9ITEsXz1udWxsLHk9MCx2PTAsYj1udWxsLHg9bnVsbCx3PS0xLFM9bnVsbDtjb25zdCBNPW5ldyBtSHQsRT1uZXcgbUh0O2xldCBUPW51bGwsQT1lLndpZHRoLEM9ZS5oZWlnaHQsaz0xLEw9bnVsbCxQPW51bGw7Y29uc3QgST1uZXcgbUh0KDAsMCxBLEMpLE49bmV3IG1IdCgwLDAsQSxDKTtsZXQgTz0hMTtjb25zdCBSPW5ldyBZVnQ7bGV0IHo9ITEsRD0hMTtjb25zdCBCPW5ldyBxSHQsSD1uZXcgeUh0LEY9e2JhY2tncm91bmQ6bnVsbCxmb2c6bnVsbCxlbnZpcm9ubWVudDpudWxsLG92ZXJyaWRlTWF0ZXJpYWw6bnVsbCxpc1NjZW5lOiEwfTtmdW5jdGlvbiBWKCl7cmV0dXJuIG51bGw9PT1iP2s6MX1sZXQgaixVLEcsVyxxLFksWCwkLEssWixKLFEsdHQsZXQsbnQsaXQscnQsb3QsYXQsc3QsbHQsY3Q9aTtmdW5jdGlvbiB1dCh0LG4pe2ZvcihsZXQgaT0wO2k8dC5sZW5ndGg7aSsrKXtjb25zdCByPWUuZ2V0Q29udGV4dCh0W2ldLG4pO2lmKG51bGwhPT1yKXJldHVybiByfXJldHVybiBudWxsfXRyeXtjb25zdCB0PXthbHBoYTpyLGRlcHRoOm8sc3RlbmNpbDphLGFudGlhbGlhczpzLHByZW11bHRpcGxpZWRBbHBoYTpsLHByZXNlcnZlRHJhd2luZ0J1ZmZlcjpjLHBvd2VyUHJlZmVyZW5jZTp1LGZhaWxJZk1ham9yUGVyZm9ybWFuY2VDYXZlYXQ6aH07aWYoZS5hZGRFdmVudExpc3RlbmVyKCJ3ZWJnbGNvbnRleHRsb3N0IixmdCwhMSksZS5hZGRFdmVudExpc3RlbmVyKCJ3ZWJnbGNvbnRleHRyZXN0b3JlZCIsbXQsITEpLG51bGw9PT1jdCl7Y29uc3QgZT1bIndlYmdsMiIsIndlYmdsIiwiZXhwZXJpbWVudGFsLXdlYmdsIl07aWYoITA9PT1tLmlzV2ViR0wxUmVuZGVyZXImJmUuc2hpZnQoKSxjdD11dChlLHQpLG51bGw9PT1jdCl0aHJvdyB1dChlKT9uZXcgRXJyb3IoIkVycm9yIGNyZWF0aW5nIFdlYkdMIGNvbnRleHQgd2l0aCB5b3VyIHNlbGVjdGVkIGF0dHJpYnV0ZXMuIik6bmV3IEVycm9yKCJFcnJvciBjcmVhdGluZyBXZWJHTCBjb250ZXh0LiIpfXZvaWQgMD09PWN0LmdldFNoYWRlclByZWNpc2lvbkZvcm1hdCYmKGN0LmdldFNoYWRlclByZWNpc2lvbkZvcm1hdD1mdW5jdGlvbigpe3JldHVybntyYW5nZU1pbjoxLHJhbmdlTWF4OjEscHJlY2lzaW9uOjF9fSl9Y2F0Y2godCl7dGhyb3cgY29uc29sZS5lcnJvcigiVEhSRUUuV2ViR0xSZW5kZXJlcjogIit0Lm1lc3NhZ2UpLHR9ZnVuY3Rpb24gaHQoKXtqPW5ldyBhanQoY3QpLFU9bmV3IGlqdChjdCxqLHQpLGouaW5pdChVKSxzdD1uZXcgWFV0KGN0LGosVSksRz1uZXcgcVV0KGN0LGosVSksRy5zY2lzc29yKEUuY29weShOKS5tdWx0aXBseVNjYWxhcihrKS5mbG9vcigpKSxHLnZpZXdwb3J0KE0uY29weShJKS5tdWx0aXBseVNjYWxhcihrKS5mbG9vcigpKSxXPW5ldyBjanQoY3QpLHE9bmV3IElVdCxZPW5ldyBZVXQoY3QsaixHLHEsVSxzdCxXKSxYPW5ldyBvanQobSksJD1uZXcgJFZ0KGN0LFUpLGx0PW5ldyBlanQoY3QsaiwkLFUpLEs9bmV3IHNqdChjdCwkLFcsbHQpLFo9bmV3IHBqdChjdCxLLCQsVykscnQ9bmV3IGRqdChjdCksbnQ9bmV3IHJqdChxKSxKPW5ldyBQVXQobSxYLGosVSxsdCxudCksUT1uZXcgUVV0KHEpLHR0PW5ldyB6VXQocSksZXQ9bmV3IGpVdChqLFUpLGl0PW5ldyB0anQobSxYLEcsWixsKSxvdD1uZXcgbmp0KGN0LGosVyxVKSxhdD1uZXcgbGp0KGN0LGosVyxVKSxXLnByb2dyYW1zPUoucHJvZ3JhbXMsbS5jYXBhYmlsaXRpZXM9VSxtLmV4dGVuc2lvbnM9aixtLnByb3BlcnRpZXM9cSxtLnJlbmRlckxpc3RzPXR0LG0uc3RhdGU9RyxtLmluZm89V31odCgpO2NvbnN0IGR0PW5ldyBKVXQobSxjdCk7dGhpcy54cj1kdDtjb25zdCBwdD1uZXcgV1V0KG0sWixVLm1heFRleHR1cmVTaXplKTtmdW5jdGlvbiBmdCh0KXt0LnByZXZlbnREZWZhdWx0KCksY29uc29sZS5sb2coIlRIUkVFLldlYkdMUmVuZGVyZXI6IENvbnRleHQgTG9zdC4iKSxnPSEwfWZ1bmN0aW9uIG10KCl7Y29uc29sZS5sb2coIlRIUkVFLldlYkdMUmVuZGVyZXI6IENvbnRleHQgUmVzdG9yZWQuIiksZz0hMSxodCgpfWZ1bmN0aW9uIGd0KHQpe2NvbnN0IGU9dC50YXJnZXQ7ZS5yZW1vdmVFdmVudExpc3RlbmVyKCJkaXNwb3NlIixndCksKGZ1bmN0aW9uIG4odCl7X3QodCkscS5yZW1vdmUodCl9KShlKX1mdW5jdGlvbiBfdCh0KXtjb25zdCBlPXEuZ2V0KHQpLnByb2dyYW07dm9pZCAwIT09ZSYmSi5yZWxlYXNlUHJvZ3JhbShlKX10aGlzLnNoYWRvd01hcD1wdCx0aGlzLmdldENvbnRleHQ9ZnVuY3Rpb24oKXtyZXR1cm4gY3R9LHRoaXMuZ2V0Q29udGV4dEF0dHJpYnV0ZXM9ZnVuY3Rpb24oKXtyZXR1cm4gY3QuZ2V0Q29udGV4dEF0dHJpYnV0ZXMoKX0sdGhpcy5mb3JjZUNvbnRleHRMb3NzPWZ1bmN0aW9uKCl7Y29uc3QgdD1qLmdldCgiV0VCR0xfbG9zZV9jb250ZXh0Iik7dCYmdC5sb3NlQ29udGV4dCgpfSx0aGlzLmZvcmNlQ29udGV4dFJlc3RvcmU9ZnVuY3Rpb24oKXtjb25zdCB0PWouZ2V0KCJXRUJHTF9sb3NlX2NvbnRleHQiKTt0JiZ0LnJlc3RvcmVDb250ZXh0KCl9LHRoaXMuZ2V0UGl4ZWxSYXRpbz1mdW5jdGlvbigpe3JldHVybiBrfSx0aGlzLnNldFBpeGVsUmF0aW89ZnVuY3Rpb24odCl7dm9pZCAwIT09dCYmKGs9dCx0aGlzLnNldFNpemUoQSxDLCExKSl9LHRoaXMuZ2V0U2l6ZT1mdW5jdGlvbih0KXtyZXR1cm4gdm9pZCAwPT09dCYmKGNvbnNvbGUud2FybigiV2ViR0xSZW5kZXJlcjogLmdldHNpemUoKSBub3cgcmVxdWlyZXMgYSBWZWN0b3IyIGFzIGFuIGFyZ3VtZW50IiksdD1uZXcgbEh0KSx0LnNldChBLEMpfSx0aGlzLnNldFNpemU9ZnVuY3Rpb24odCxuLGkpe2R0LmlzUHJlc2VudGluZz9jb25zb2xlLndhcm4oIlRIUkVFLldlYkdMUmVuZGVyZXI6IENhbid0IGNoYW5nZSBzaXplIHdoaWxlIFZSIGRldmljZSBpcyBwcmVzZW50aW5nLiIpOihBPXQsQz1uLGUud2lkdGg9TWF0aC5mbG9vcih0KmspLGUuaGVpZ2h0PU1hdGguZmxvb3IobiprKSwhMSE9PWkmJihlLnN0eWxlLndpZHRoPXQrInB4IixlLnN0eWxlLmhlaWdodD1uKyJweCIpLHRoaXMuc2V0Vmlld3BvcnQoMCwwLHQsbikpfSx0aGlzLmdldERyYXdpbmdCdWZmZXJTaXplPWZ1bmN0aW9uKHQpe3JldHVybiB2b2lkIDA9PT10JiYoY29uc29sZS53YXJuKCJXZWJHTFJlbmRlcmVyOiAuZ2V0ZHJhd2luZ0J1ZmZlclNpemUoKSBub3cgcmVxdWlyZXMgYSBWZWN0b3IyIGFzIGFuIGFyZ3VtZW50IiksdD1uZXcgbEh0KSx0LnNldChBKmssQyprKS5mbG9vcigpfSx0aGlzLnNldERyYXdpbmdCdWZmZXJTaXplPWZ1bmN0aW9uKHQsbixpKXtBPXQsQz1uLGs9aSxlLndpZHRoPU1hdGguZmxvb3IodCppKSxlLmhlaWdodD1NYXRoLmZsb29yKG4qaSksdGhpcy5zZXRWaWV3cG9ydCgwLDAsdCxuKX0sdGhpcy5nZXRDdXJyZW50Vmlld3BvcnQ9ZnVuY3Rpb24odCl7cmV0dXJuIHZvaWQgMD09PXQmJihjb25zb2xlLndhcm4oIldlYkdMUmVuZGVyZXI6IC5nZXRDdXJyZW50Vmlld3BvcnQoKSBub3cgcmVxdWlyZXMgYSBWZWN0b3I0IGFzIGFuIGFyZ3VtZW50IiksdD1uZXcgbUh0KSx0LmNvcHkoTSl9LHRoaXMuZ2V0Vmlld3BvcnQ9ZnVuY3Rpb24odCl7cmV0dXJuIHQuY29weShJKX0sdGhpcy5zZXRWaWV3cG9ydD1mdW5jdGlvbih0LGUsbixpKXt0LmlzVmVjdG9yND9JLnNldCh0LngsdC55LHQueix0LncpOkkuc2V0KHQsZSxuLGkpLEcudmlld3BvcnQoTS5jb3B5KEkpLm11bHRpcGx5U2NhbGFyKGspLmZsb29yKCkpfSx0aGlzLmdldFNjaXNzb3I9ZnVuY3Rpb24odCl7cmV0dXJuIHQuY29weShOKX0sdGhpcy5zZXRTY2lzc29yPWZ1bmN0aW9uKHQsZSxuLGkpe3QuaXNWZWN0b3I0P04uc2V0KHQueCx0LnksdC56LHQudyk6Ti5zZXQodCxlLG4saSksRy5zY2lzc29yKEUuY29weShOKS5tdWx0aXBseVNjYWxhcihrKS5mbG9vcigpKX0sdGhpcy5nZXRTY2lzc29yVGVzdD1mdW5jdGlvbigpe3JldHVybiBPfSx0aGlzLnNldFNjaXNzb3JUZXN0PWZ1bmN0aW9uKHQpe0cuc2V0U2Npc3NvclRlc3QoTz10KX0sdGhpcy5zZXRPcGFxdWVTb3J0PWZ1bmN0aW9uKHQpe0w9dH0sdGhpcy5zZXRUcmFuc3BhcmVudFNvcnQ9ZnVuY3Rpb24odCl7UD10fSx0aGlzLmdldENsZWFyQ29sb3I9ZnVuY3Rpb24odCl7cmV0dXJuIHZvaWQgMD09PXQmJihjb25zb2xlLndhcm4oIldlYkdMUmVuZGVyZXI6IC5nZXRDbGVhckNvbG9yKCkgbm93IHJlcXVpcmVzIGEgQ29sb3IgYXMgYW4gYXJndW1lbnQiKSx0PW5ldyBIRnQpLHQuY29weShpdC5nZXRDbGVhckNvbG9yKCkpfSx0aGlzLnNldENsZWFyQ29sb3I9ZnVuY3Rpb24oKXtpdC5zZXRDbGVhckNvbG9yLmFwcGx5KGl0LGFyZ3VtZW50cyl9LHRoaXMuZ2V0Q2xlYXJBbHBoYT1mdW5jdGlvbigpe3JldHVybiBpdC5nZXRDbGVhckFscGhhKCl9LHRoaXMuc2V0Q2xlYXJBbHBoYT1mdW5jdGlvbigpe2l0LnNldENsZWFyQWxwaGEuYXBwbHkoaXQsYXJndW1lbnRzKX0sdGhpcy5jbGVhcj1mdW5jdGlvbih0LGUsbil7bGV0IGk9MDsodm9pZCAwPT09dHx8dCkmJihpfD0xNjM4NCksKHZvaWQgMD09PWV8fGUpJiYoaXw9MjU2KSwodm9pZCAwPT09bnx8bikmJihpfD0xMDI0KSxjdC5jbGVhcihpKX0sdGhpcy5jbGVhckNvbG9yPWZ1bmN0aW9uKCl7dGhpcy5jbGVhcighMCwhMSwhMSl9LHRoaXMuY2xlYXJEZXB0aD1mdW5jdGlvbigpe3RoaXMuY2xlYXIoITEsITAsITEpfSx0aGlzLmNsZWFyU3RlbmNpbD1mdW5jdGlvbigpe3RoaXMuY2xlYXIoITEsITEsITApfSx0aGlzLmRpc3Bvc2U9ZnVuY3Rpb24oKXtlLnJlbW92ZUV2ZW50TGlzdGVuZXIoIndlYmdsY29udGV4dGxvc3QiLGZ0LCExKSxlLnJlbW92ZUV2ZW50TGlzdGVuZXIoIndlYmdsY29udGV4dHJlc3RvcmVkIixtdCwhMSksdHQuZGlzcG9zZSgpLGV0LmRpc3Bvc2UoKSxxLmRpc3Bvc2UoKSxYLmRpc3Bvc2UoKSxaLmRpc3Bvc2UoKSxsdC5kaXNwb3NlKCksZHQuZGlzcG9zZSgpLHZ0LnN0b3AoKX0sdGhpcy5yZW5kZXJCdWZmZXJJbW1lZGlhdGU9ZnVuY3Rpb24odCxlKXtsdC5pbml0QXR0cmlidXRlcygpO2NvbnN0IG49cS5nZXQodCk7dC5oYXNQb3NpdGlvbnMmJiFuLnBvc2l0aW9uJiYobi5wb3NpdGlvbj1jdC5jcmVhdGVCdWZmZXIoKSksdC5oYXNOb3JtYWxzJiYhbi5ub3JtYWwmJihuLm5vcm1hbD1jdC5jcmVhdGVCdWZmZXIoKSksdC5oYXNVdnMmJiFuLnV2JiYobi51dj1jdC5jcmVhdGVCdWZmZXIoKSksdC5oYXNDb2xvcnMmJiFuLmNvbG9yJiYobi5jb2xvcj1jdC5jcmVhdGVCdWZmZXIoKSk7Y29uc3QgaT1lLmdldEF0dHJpYnV0ZXMoKTt0Lmhhc1Bvc2l0aW9ucyYmKGN0LmJpbmRCdWZmZXIoMzQ5NjIsbi5wb3NpdGlvbiksY3QuYnVmZmVyRGF0YSgzNDk2Mix0LnBvc2l0aW9uQXJyYXksMzUwNDgpLGx0LmVuYWJsZUF0dHJpYnV0ZShpLnBvc2l0aW9uKSxjdC52ZXJ0ZXhBdHRyaWJQb2ludGVyKGkucG9zaXRpb24sMyw1MTI2LCExLDAsMCkpLHQuaGFzTm9ybWFscyYmKGN0LmJpbmRCdWZmZXIoMzQ5NjIsbi5ub3JtYWwpLGN0LmJ1ZmZlckRhdGEoMzQ5NjIsdC5ub3JtYWxBcnJheSwzNTA0OCksbHQuZW5hYmxlQXR0cmlidXRlKGkubm9ybWFsKSxjdC52ZXJ0ZXhBdHRyaWJQb2ludGVyKGkubm9ybWFsLDMsNTEyNiwhMSwwLDApKSx0Lmhhc1V2cyYmKGN0LmJpbmRCdWZmZXIoMzQ5NjIsbi51diksY3QuYnVmZmVyRGF0YSgzNDk2Mix0LnV2QXJyYXksMzUwNDgpLGx0LmVuYWJsZUF0dHJpYnV0ZShpLnV2KSxjdC52ZXJ0ZXhBdHRyaWJQb2ludGVyKGkudXYsMiw1MTI2LCExLDAsMCkpLHQuaGFzQ29sb3JzJiYoY3QuYmluZEJ1ZmZlcigzNDk2MixuLmNvbG9yKSxjdC5idWZmZXJEYXRhKDM0OTYyLHQuY29sb3JBcnJheSwzNTA0OCksbHQuZW5hYmxlQXR0cmlidXRlKGkuY29sb3IpLGN0LnZlcnRleEF0dHJpYlBvaW50ZXIoaS5jb2xvciwzLDUxMjYsITEsMCwwKSksbHQuZGlzYWJsZVVudXNlZEF0dHJpYnV0ZXMoKSxjdC5kcmF3QXJyYXlzKDQsMCx0LmNvdW50KSx0LmNvdW50PTB9LHRoaXMucmVuZGVyQnVmZmVyRGlyZWN0PWZ1bmN0aW9uKHQsZSxuLGkscixvKXtudWxsPT09ZSYmKGU9Rik7Y29uc3QgYT1yLmlzTWVzaCYmci5tYXRyaXhXb3JsZC5kZXRlcm1pbmFudCgpPDAscz1NdCh0LGUsaSxyKTtHLnNldE1hdGVyaWFsKGksYSk7bGV0IGw9bi5pbmRleDtjb25zdCBjPW4uYXR0cmlidXRlcy5wb3NpdGlvbjtpZihudWxsPT09bCl7aWYodm9pZCAwPT09Y3x8MD09PWMuY291bnQpcmV0dXJufWVsc2UgaWYoMD09PWwuY291bnQpcmV0dXJuO2xldCB1LGg9MTshMD09PWkud2lyZWZyYW1lJiYobD1LLmdldFdpcmVmcmFtZUF0dHJpYnV0ZShuKSxoPTIpLChpLm1vcnBoVGFyZ2V0c3x8aS5tb3JwaE5vcm1hbHMpJiZydC51cGRhdGUocixuLGkscyksbHQuc2V0dXAocixpLHMsbixsKTtsZXQgZD1vdDtudWxsIT09bCYmKHU9JC5nZXQobCksZD1hdCxkLnNldEluZGV4KHUpKTtjb25zdCBwPW51bGwhPT1sP2wuY291bnQ6Yy5jb3VudCxmPW4uZHJhd1JhbmdlLnN0YXJ0KmgsbT1uLmRyYXdSYW5nZS5jb3VudCpoLGc9bnVsbCE9PW8/by5zdGFydCpoOjAsXz1udWxsIT09bz9vLmNvdW50Kmg6MS8wLHk9TWF0aC5tYXgoZixnKSx2PU1hdGgubWluKHAsZittLGcrXyktMSxiPU1hdGgubWF4KDAsdi15KzEpO2lmKDAhPT1iKXtpZihyLmlzTWVzaCkhMD09PWkud2lyZWZyYW1lPyhHLnNldExpbmVXaWR0aChpLndpcmVmcmFtZUxpbmV3aWR0aCpWKCkpLGQuc2V0TW9kZSgxKSk6ZC5zZXRNb2RlKDQpO2Vsc2UgaWYoci5pc0xpbmUpe2xldCB0PWkubGluZXdpZHRoO3ZvaWQgMD09PXQmJih0PTEpLEcuc2V0TGluZVdpZHRoKHQqVigpKSxkLnNldE1vZGUoci5pc0xpbmVTZWdtZW50cz8xOnIuaXNMaW5lTG9vcD8yOjMpfWVsc2Ugci5pc1BvaW50cz9kLnNldE1vZGUoMCk6ci5pc1Nwcml0ZSYmZC5zZXRNb2RlKDQpO2lmKHIuaXNJbnN0YW5jZWRNZXNoKWQucmVuZGVySW5zdGFuY2VzKHksYixyLmNvdW50KTtlbHNlIGlmKG4uaXNJbnN0YW5jZWRCdWZmZXJHZW9tZXRyeSl7Y29uc3QgdD1NYXRoLm1pbihuLmluc3RhbmNlQ291bnQsbi5fbWF4SW5zdGFuY2VDb3VudCk7ZC5yZW5kZXJJbnN0YW5jZXMoeSxiLHQpfWVsc2UgZC5yZW5kZXIoeSxiKX19LHRoaXMuY29tcGlsZT1mdW5jdGlvbih0LGUpe3A9ZXQuZ2V0KHQpLHAuaW5pdCgpLHQudHJhdmVyc2VWaXNpYmxlKChmdW5jdGlvbih0KXt0LmlzTGlnaHQmJnQubGF5ZXJzLnRlc3QoZS5sYXllcnMpJiYocC5wdXNoTGlnaHQodCksdC5jYXN0U2hhZG93JiZwLnB1c2hTaGFkb3codCkpfSkpLHAuc2V0dXBMaWdodHMoKTtjb25zdCBuPW5ldyBXZWFrTWFwO3QudHJhdmVyc2UoKGZ1bmN0aW9uKGUpe2NvbnN0IGk9ZS5tYXRlcmlhbDtpZihpKWlmKEFycmF5LmlzQXJyYXkoaSkpZm9yKGxldCByPTA7cjxpLmxlbmd0aDtyKyspe2NvbnN0IG89aVtyXTshMT09PW4uaGFzKG8pJiYoU3Qobyx0LGUpLG4uc2V0KG8pKX1lbHNlITE9PT1uLmhhcyhpKSYmKFN0KGksdCxlKSxuLnNldChpKSl9KSl9O2xldCB5dD1udWxsO2NvbnN0IHZ0PW5ldyBYVnQ7ZnVuY3Rpb24gYnQodCxlLG4saSl7aWYoITE9PT10LnZpc2libGUpcmV0dXJuO2lmKHQubGF5ZXJzLnRlc3QoZS5sYXllcnMpKWlmKHQuaXNHcm91cCluPXQucmVuZGVyT3JkZXI7ZWxzZSBpZih0LmlzTE9EKSEwPT09dC5hdXRvVXBkYXRlJiZ0LnVwZGF0ZShlKTtlbHNlIGlmKHQuaXNMaWdodClwLnB1c2hMaWdodCh0KSx0LmNhc3RTaGFkb3cmJnAucHVzaFNoYWRvdyh0KTtlbHNlIGlmKHQuaXNTcHJpdGUpe2lmKCF0LmZydXN0dW1DdWxsZWR8fFIuaW50ZXJzZWN0c1Nwcml0ZSh0KSl7aSYmSC5zZXRGcm9tTWF0cml4UG9zaXRpb24odC5tYXRyaXhXb3JsZCkuYXBwbHlNYXRyaXg0KEIpO2NvbnN0IGU9Wi51cGRhdGUodCkscj10Lm1hdGVyaWFsO3IudmlzaWJsZSYmZC5wdXNoKHQsZSxyLG4sSC56LG51bGwpfX1lbHNlIGlmKHQuaXNJbW1lZGlhdGVSZW5kZXJPYmplY3QpaSYmSC5zZXRGcm9tTWF0cml4UG9zaXRpb24odC5tYXRyaXhXb3JsZCkuYXBwbHlNYXRyaXg0KEIpLGQucHVzaCh0LG51bGwsdC5tYXRlcmlhbCxuLEgueixudWxsKTtlbHNlIGlmKCh0LmlzTWVzaHx8dC5pc0xpbmV8fHQuaXNQb2ludHMpJiYodC5pc1NraW5uZWRNZXNoJiZ0LnNrZWxldG9uLmZyYW1lIT09Vy5yZW5kZXIuZnJhbWUmJih0LnNrZWxldG9uLnVwZGF0ZSgpLHQuc2tlbGV0b24uZnJhbWU9Vy5yZW5kZXIuZnJhbWUpLCF0LmZydXN0dW1DdWxsZWR8fFIuaW50ZXJzZWN0c09iamVjdCh0KSkpe2kmJkguc2V0RnJvbU1hdHJpeFBvc2l0aW9uKHQubWF0cml4V29ybGQpLmFwcGx5TWF0cml4NChCKTtjb25zdCBlPVoudXBkYXRlKHQpLHI9dC5tYXRlcmlhbDtpZihBcnJheS5pc0FycmF5KHIpKXtjb25zdCBpPWUuZ3JvdXBzO2ZvcihsZXQgbz0wLGE9aS5sZW5ndGg7bzxhO28rKyl7Y29uc3QgYT1pW29dLHM9clthLm1hdGVyaWFsSW5kZXhdO3MmJnMudmlzaWJsZSYmZC5wdXNoKHQsZSxzLG4sSC56LGEpfX1lbHNlIHIudmlzaWJsZSYmZC5wdXNoKHQsZSxyLG4sSC56LG51bGwpfWNvbnN0IHI9dC5jaGlsZHJlbjtmb3IobGV0IHQ9MCxvPXIubGVuZ3RoO3Q8bzt0KyspYnQoclt0XSxlLG4saSl9ZnVuY3Rpb24geHQodCxlLG4pe2NvbnN0IGk9ITA9PT1lLmlzU2NlbmU/ZS5vdmVycmlkZU1hdGVyaWFsOm51bGw7Zm9yKGxldCByPTAsbz10Lmxlbmd0aDtyPG87cisrKXtjb25zdCBvPXRbcl0sYT1vLm9iamVjdCxzPW8uZ2VvbWV0cnksbD1udWxsPT09aT9vLm1hdGVyaWFsOmksYz1vLmdyb3VwO2lmKG4uaXNBcnJheUNhbWVyYSl7Y29uc3QgdD1uLmNhbWVyYXM7Zm9yKGxldCBuPTAsaT10Lmxlbmd0aDtuPGk7bisrKXtjb25zdCBpPXRbbl07YS5sYXllcnMudGVzdChpLmxheWVycykmJihHLnZpZXdwb3J0KE0uY29weShpLnZpZXdwb3J0KSkscC5zZXR1cExpZ2h0c1ZpZXcoaSksd3QoYSxlLGkscyxsLGMpKX19ZWxzZSB3dChhLGUsbixzLGwsYyl9fWZ1bmN0aW9uIHd0KHQsZSxuLGkscixvKXtpZih0Lm9uQmVmb3JlUmVuZGVyKG0sZSxuLGkscixvKSx0Lm1vZGVsVmlld01hdHJpeC5tdWx0aXBseU1hdHJpY2VzKG4ubWF0cml4V29ybGRJbnZlcnNlLHQubWF0cml4V29ybGQpLHQubm9ybWFsTWF0cml4LmdldE5vcm1hbE1hdHJpeCh0Lm1vZGVsVmlld01hdHJpeCksdC5pc0ltbWVkaWF0ZVJlbmRlck9iamVjdCl7Y29uc3QgaT1NdChuLGUscix0KTtHLnNldE1hdGVyaWFsKHIpLGx0LnJlc2V0KCksKGZ1bmN0aW9uIGEodCxlKXt0LnJlbmRlcigoZnVuY3Rpb24odCl7bS5yZW5kZXJCdWZmZXJJbW1lZGlhdGUodCxlKX0pKX0pKHQsaSl9ZWxzZSBtLnJlbmRlckJ1ZmZlckRpcmVjdChuLGUsaSxyLHQsbyk7dC5vbkFmdGVyUmVuZGVyKG0sZSxuLGkscixvKX1mdW5jdGlvbiBTdCh0LGUsbil7ITAhPT1lLmlzU2NlbmUmJihlPUYpO2NvbnN0IGk9cS5nZXQodCkscj1wLnN0YXRlLmxpZ2h0cyxvPXIuc3RhdGUudmVyc2lvbixhPUouZ2V0UGFyYW1ldGVycyh0LHIuc3RhdGUscC5zdGF0ZS5zaGFkb3dzQXJyYXksZSxuKSxzPUouZ2V0UHJvZ3JhbUNhY2hlS2V5KGEpO2xldCBsPWkucHJvZ3JhbSxjPSEwO2lmKGkuZW52aXJvbm1lbnQ9dC5pc01lc2hTdGFuZGFyZE1hdGVyaWFsP2UuZW52aXJvbm1lbnQ6bnVsbCxpLmZvZz1lLmZvZyxpLmVudk1hcD1YLmdldCh0LmVudk1hcHx8aS5lbnZpcm9ubWVudCksdm9pZCAwPT09bCl0LmFkZEV2ZW50TGlzdGVuZXIoImRpc3Bvc2UiLGd0KTtlbHNlIGlmKGwuY2FjaGVLZXkhPT1zKV90KHQpO2Vsc2UgaWYoaS5saWdodHNTdGF0ZVZlcnNpb24hPT1vKWM9ITE7ZWxzZXtpZih2b2lkIDAhPT1hLnNoYWRlcklEKXJldHVybjtjPSExfWMmJihhLnVuaWZvcm1zPUouZ2V0VW5pZm9ybXModCksdC5vbkJlZm9yZUNvbXBpbGUoYSxtKSxsPUouYWNxdWlyZVByb2dyYW0oYSxzKSxpLnByb2dyYW09bCxpLnVuaWZvcm1zPWEudW5pZm9ybXMsaS5vdXRwdXRFbmNvZGluZz1hLm91dHB1dEVuY29kaW5nKTtjb25zdCB1PWkudW5pZm9ybXM7KHQuaXNTaGFkZXJNYXRlcmlhbHx8dC5pc1Jhd1NoYWRlck1hdGVyaWFsKSYmITAhPT10LmNsaXBwaW5nfHwoaS5udW1DbGlwcGluZ1BsYW5lcz1udC5udW1QbGFuZXMsaS5udW1JbnRlcnNlY3Rpb249bnQubnVtSW50ZXJzZWN0aW9uLHUuY2xpcHBpbmdQbGFuZXM9bnQudW5pZm9ybSksaS5uZWVkc0xpZ2h0cz0oZnVuY3Rpb24gaCh0KXtyZXR1cm4gdC5pc01lc2hMYW1iZXJ0TWF0ZXJpYWx8fHQuaXNNZXNoVG9vbk1hdGVyaWFsfHx0LmlzTWVzaFBob25nTWF0ZXJpYWx8fHQuaXNNZXNoU3RhbmRhcmRNYXRlcmlhbHx8dC5pc1NoYWRvd01hdGVyaWFsfHx0LmlzU2hhZGVyTWF0ZXJpYWwmJiEwPT09dC5saWdodHN9KSh0KSxpLmxpZ2h0c1N0YXRlVmVyc2lvbj1vLGkubmVlZHNMaWdodHMmJih1LmFtYmllbnRMaWdodENvbG9yLnZhbHVlPXIuc3RhdGUuYW1iaWVudCx1LmxpZ2h0UHJvYmUudmFsdWU9ci5zdGF0ZS5wcm9iZSx1LmRpcmVjdGlvbmFsTGlnaHRzLnZhbHVlPXIuc3RhdGUuZGlyZWN0aW9uYWwsdS5kaXJlY3Rpb25hbExpZ2h0U2hhZG93cy52YWx1ZT1yLnN0YXRlLmRpcmVjdGlvbmFsU2hhZG93LHUuc3BvdExpZ2h0cy52YWx1ZT1yLnN0YXRlLnNwb3QsdS5zcG90TGlnaHRTaGFkb3dzLnZhbHVlPXIuc3RhdGUuc3BvdFNoYWRvdyx1LnJlY3RBcmVhTGlnaHRzLnZhbHVlPXIuc3RhdGUucmVjdEFyZWEsdS5sdGNfMS52YWx1ZT1yLnN0YXRlLnJlY3RBcmVhTFRDMSx1Lmx0Y18yLnZhbHVlPXIuc3RhdGUucmVjdEFyZWFMVEMyLHUucG9pbnRMaWdodHMudmFsdWU9ci5zdGF0ZS5wb2ludCx1LnBvaW50TGlnaHRTaGFkb3dzLnZhbHVlPXIuc3RhdGUucG9pbnRTaGFkb3csdS5oZW1pc3BoZXJlTGlnaHRzLnZhbHVlPXIuc3RhdGUuaGVtaSx1LmRpcmVjdGlvbmFsU2hhZG93TWFwLnZhbHVlPXIuc3RhdGUuZGlyZWN0aW9uYWxTaGFkb3dNYXAsdS5kaXJlY3Rpb25hbFNoYWRvd01hdHJpeC52YWx1ZT1yLnN0YXRlLmRpcmVjdGlvbmFsU2hhZG93TWF0cml4LHUuc3BvdFNoYWRvd01hcC52YWx1ZT1yLnN0YXRlLnNwb3RTaGFkb3dNYXAsdS5zcG90U2hhZG93TWF0cml4LnZhbHVlPXIuc3RhdGUuc3BvdFNoYWRvd01hdHJpeCx1LnBvaW50U2hhZG93TWFwLnZhbHVlPXIuc3RhdGUucG9pbnRTaGFkb3dNYXAsdS5wb2ludFNoYWRvd01hdHJpeC52YWx1ZT1yLnN0YXRlLnBvaW50U2hhZG93TWF0cml4KTtjb25zdCBkPWkucHJvZ3JhbS5nZXRVbmlmb3JtcygpLGY9dVV0LnNlcVdpdGhWYWx1ZShkLnNlcSx1KTtpLnVuaWZvcm1zTGlzdD1mfWZ1bmN0aW9uIE10KHQsZSxuLGkpeyEwIT09ZS5pc1NjZW5lJiYoZT1GKSxZLnJlc2V0VGV4dHVyZVVuaXRzKCk7Y29uc3Qgcj1lLmZvZyxvPW4uaXNNZXNoU3RhbmRhcmRNYXRlcmlhbD9lLmVudmlyb25tZW50Om51bGwsYT1udWxsPT09Yj9tLm91dHB1dEVuY29kaW5nOmIudGV4dHVyZS5lbmNvZGluZyxzPVguZ2V0KG4uZW52TWFwfHxvKSxsPXEuZ2V0KG4pLGM9cC5zdGF0ZS5saWdodHM7ITAhPT16fHwhMCE9PUQmJnQ9PT1TfHxudC5zZXRTdGF0ZShuLHQsdD09PVMmJm4uaWQ9PT13KSxuLnZlcnNpb249PT1sLl9fdmVyc2lvbj9uLmZvZyYmbC5mb2chPT1yfHxsLmVudmlyb25tZW50IT09b3x8bC5uZWVkc0xpZ2h0cyYmbC5saWdodHNTdGF0ZVZlcnNpb24hPT1jLnN0YXRlLnZlcnNpb24/U3QobixlLGkpOnZvaWQgMD09PWwubnVtQ2xpcHBpbmdQbGFuZXN8fGwubnVtQ2xpcHBpbmdQbGFuZXM9PT1udC5udW1QbGFuZXMmJmwubnVtSW50ZXJzZWN0aW9uPT09bnQubnVtSW50ZXJzZWN0aW9uPyhsLm91dHB1dEVuY29kaW5nIT09YXx8bC5lbnZNYXAhPT1zKSYmU3QobixlLGkpOlN0KG4sZSxpKTooU3QobixlLGkpLGwuX192ZXJzaW9uPW4udmVyc2lvbik7bGV0IHU9ITEsaD0hMSxkPSExO2NvbnN0IGY9bC5wcm9ncmFtLGc9Zi5nZXRVbmlmb3JtcygpLF89bC51bmlmb3JtcztpZihHLnVzZVByb2dyYW0oZi5wcm9ncmFtKSYmKHU9ITAsaD0hMCxkPSEwKSxuLmlkIT09dyYmKHc9bi5pZCxoPSEwKSx1fHxTIT09dCl7aWYoZy5zZXRWYWx1ZShjdCwicHJvamVjdGlvbk1hdHJpeCIsdC5wcm9qZWN0aW9uTWF0cml4KSxVLmxvZ2FyaXRobWljRGVwdGhCdWZmZXImJmcuc2V0VmFsdWUoY3QsImxvZ0RlcHRoQnVmRkMiLDIvKE1hdGgubG9nKHQuZmFyKzEpL01hdGguTE4yKSksUyE9PXQmJihTPXQsaD0hMCxkPSEwKSxuLmlzU2hhZGVyTWF0ZXJpYWx8fG4uaXNNZXNoUGhvbmdNYXRlcmlhbHx8bi5pc01lc2hUb29uTWF0ZXJpYWx8fG4uaXNNZXNoU3RhbmRhcmRNYXRlcmlhbHx8bi5lbnZNYXApe2NvbnN0IGU9Zy5tYXAuY2FtZXJhUG9zaXRpb247dm9pZCAwIT09ZSYmZS5zZXRWYWx1ZShjdCxILnNldEZyb21NYXRyaXhQb3NpdGlvbih0Lm1hdHJpeFdvcmxkKSl9KG4uaXNNZXNoUGhvbmdNYXRlcmlhbHx8bi5pc01lc2hUb29uTWF0ZXJpYWx8fG4uaXNNZXNoTGFtYmVydE1hdGVyaWFsfHxuLmlzTWVzaEJhc2ljTWF0ZXJpYWx8fG4uaXNNZXNoU3RhbmRhcmRNYXRlcmlhbHx8bi5pc1NoYWRlck1hdGVyaWFsKSYmZy5zZXRWYWx1ZShjdCwiaXNPcnRob2dyYXBoaWMiLCEwPT09dC5pc09ydGhvZ3JhcGhpY0NhbWVyYSksKG4uaXNNZXNoUGhvbmdNYXRlcmlhbHx8bi5pc01lc2hUb29uTWF0ZXJpYWx8fG4uaXNNZXNoTGFtYmVydE1hdGVyaWFsfHxuLmlzTWVzaEJhc2ljTWF0ZXJpYWx8fG4uaXNNZXNoU3RhbmRhcmRNYXRlcmlhbHx8bi5pc1NoYWRlck1hdGVyaWFsfHxuLmlzU2hhZG93TWF0ZXJpYWx8fG4uc2tpbm5pbmcpJiZnLnNldFZhbHVlKGN0LCJ2aWV3TWF0cml4Iix0Lm1hdHJpeFdvcmxkSW52ZXJzZSl9aWYobi5za2lubmluZyl7Zy5zZXRPcHRpb25hbChjdCxpLCJiaW5kTWF0cml4IiksZy5zZXRPcHRpb25hbChjdCxpLCJiaW5kTWF0cml4SW52ZXJzZSIpO2NvbnN0IHQ9aS5za2VsZXRvbjtpZih0KXtjb25zdCBlPXQuYm9uZXM7aWYoVS5mbG9hdFZlcnRleFRleHR1cmVzKXtpZihudWxsPT09dC5ib25lVGV4dHVyZSl7bGV0IG49TWF0aC5zcXJ0KDQqZS5sZW5ndGgpO249c0h0LmNlaWxQb3dlck9mVHdvKG4pLG49TWF0aC5tYXgobiw0KTtjb25zdCBpPW5ldyBGbG9hdDMyQXJyYXkobipuKjQpO2kuc2V0KHQuYm9uZU1hdHJpY2VzKTtjb25zdCByPW5ldyBHVnQoaSxuLG4sVEJ0LHdCdCk7dC5ib25lTWF0cmljZXM9aSx0LmJvbmVUZXh0dXJlPXIsdC5ib25lVGV4dHVyZVNpemU9bn1nLnNldFZhbHVlKGN0LCJib25lVGV4dHVyZSIsdC5ib25lVGV4dHVyZSxZKSxnLnNldFZhbHVlKGN0LCJib25lVGV4dHVyZVNpemUiLHQuYm9uZVRleHR1cmVTaXplKX1lbHNlIGcuc2V0T3B0aW9uYWwoY3QsdCwiYm9uZU1hdHJpY2VzIil9fXJldHVybihofHxsLnJlY2VpdmVTaGFkb3chPT1pLnJlY2VpdmVTaGFkb3cpJiYobC5yZWNlaXZlU2hhZG93PWkucmVjZWl2ZVNoYWRvdyxnLnNldFZhbHVlKGN0LCJyZWNlaXZlU2hhZG93IixpLnJlY2VpdmVTaGFkb3cpKSxoJiYoZy5zZXRWYWx1ZShjdCwidG9uZU1hcHBpbmdFeHBvc3VyZSIsbS50b25lTWFwcGluZ0V4cG9zdXJlKSxsLm5lZWRzTGlnaHRzJiYoZnVuY3Rpb24geSh0LGUpe3QuYW1iaWVudExpZ2h0Q29sb3IubmVlZHNVcGRhdGU9ZSx0LmxpZ2h0UHJvYmUubmVlZHNVcGRhdGU9ZSx0LmRpcmVjdGlvbmFsTGlnaHRzLm5lZWRzVXBkYXRlPWUsdC5kaXJlY3Rpb25hbExpZ2h0U2hhZG93cy5uZWVkc1VwZGF0ZT1lLHQucG9pbnRMaWdodHMubmVlZHNVcGRhdGU9ZSx0LnBvaW50TGlnaHRTaGFkb3dzLm5lZWRzVXBkYXRlPWUsdC5zcG90TGlnaHRzLm5lZWRzVXBkYXRlPWUsdC5zcG90TGlnaHRTaGFkb3dzLm5lZWRzVXBkYXRlPWUsdC5yZWN0QXJlYUxpZ2h0cy5uZWVkc1VwZGF0ZT1lLHQuaGVtaXNwaGVyZUxpZ2h0cy5uZWVkc1VwZGF0ZT1lfSkoXyxkKSxyJiZuLmZvZyYmUS5yZWZyZXNoRm9nVW5pZm9ybXMoXyxyKSxRLnJlZnJlc2hNYXRlcmlhbFVuaWZvcm1zKF8sbixrLEMpLHVVdC51cGxvYWQoY3QsbC51bmlmb3Jtc0xpc3QsXyxZKSksbi5pc1NoYWRlck1hdGVyaWFsJiYhMD09PW4udW5pZm9ybXNOZWVkVXBkYXRlJiYodVV0LnVwbG9hZChjdCxsLnVuaWZvcm1zTGlzdCxfLFkpLG4udW5pZm9ybXNOZWVkVXBkYXRlPSExKSxuLmlzU3ByaXRlTWF0ZXJpYWwmJmcuc2V0VmFsdWUoY3QsImNlbnRlciIsaS5jZW50ZXIpLGcuc2V0VmFsdWUoY3QsIm1vZGVsVmlld01hdHJpeCIsaS5tb2RlbFZpZXdNYXRyaXgpLGcuc2V0VmFsdWUoY3QsIm5vcm1hbE1hdHJpeCIsaS5ub3JtYWxNYXRyaXgpLGcuc2V0VmFsdWUoY3QsIm1vZGVsTWF0cml4IixpLm1hdHJpeFdvcmxkKSxmfXZ0LnNldEFuaW1hdGlvbkxvb3AoKGZ1bmN0aW9uIEV0KHQpe2R0LmlzUHJlc2VudGluZ3x8eXQmJnl0KHQpfSkpLCJ1bmRlZmluZWQiIT10eXBlb2Ygd2luZG93JiZ2dC5zZXRDb250ZXh0KHdpbmRvdyksdGhpcy5zZXRBbmltYXRpb25Mb29wPWZ1bmN0aW9uKHQpe3l0PXQsZHQuc2V0QW5pbWF0aW9uTG9vcCh0KSxudWxsPT09dD92dC5zdG9wKCk6dnQuc3RhcnQoKX0sdGhpcy5yZW5kZXI9ZnVuY3Rpb24odCxlKXtsZXQgbixpO2lmKHZvaWQgMCE9PWFyZ3VtZW50c1syXSYmKGNvbnNvbGUud2FybigiVEhSRUUuV2ViR0xSZW5kZXJlci5yZW5kZXIoKTogdGhlIHJlbmRlclRhcmdldCBhcmd1bWVudCBoYXMgYmVlbiByZW1vdmVkLiBVc2UgLnNldFJlbmRlclRhcmdldCgpIGluc3RlYWQuIiksbj1hcmd1bWVudHNbMl0pLHZvaWQgMCE9PWFyZ3VtZW50c1szXSYmKGNvbnNvbGUud2FybigiVEhSRUUuV2ViR0xSZW5kZXJlci5yZW5kZXIoKTogdGhlIGZvcmNlQ2xlYXIgYXJndW1lbnQgaGFzIGJlZW4gcmVtb3ZlZC4gVXNlIC5jbGVhcigpIGluc3RlYWQuIiksaT1hcmd1bWVudHNbM10pLHZvaWQgMCE9PWUmJiEwIT09ZS5pc0NhbWVyYSlyZXR1cm4gdm9pZCBjb25zb2xlLmVycm9yKCJUSFJFRS5XZWJHTFJlbmRlcmVyLnJlbmRlcjogY2FtZXJhIGlzIG5vdCBhbiBpbnN0YW5jZSBvZiBUSFJFRS5DYW1lcmEuIik7aWYoITA9PT1nKXJldHVybjtsdC5yZXNldERlZmF1bHRTdGF0ZSgpLHc9LTEsUz1udWxsLCEwPT09dC5hdXRvVXBkYXRlJiZ0LnVwZGF0ZU1hdHJpeFdvcmxkKCksbnVsbD09PWUucGFyZW50JiZlLnVwZGF0ZU1hdHJpeFdvcmxkKCksITA9PT1kdC5lbmFibGVkJiYhMD09PWR0LmlzUHJlc2VudGluZyYmKGU9ZHQuZ2V0Q2FtZXJhKGUpKSwhMD09PXQuaXNTY2VuZSYmdC5vbkJlZm9yZVJlbmRlcihtLHQsZSxufHxiKSxwPWV0LmdldCh0LGYubGVuZ3RoKSxwLmluaXQoKSxmLnB1c2gocCksQi5tdWx0aXBseU1hdHJpY2VzKGUucHJvamVjdGlvbk1hdHJpeCxlLm1hdHJpeFdvcmxkSW52ZXJzZSksUi5zZXRGcm9tUHJvamVjdGlvbk1hdHJpeChCKSxEPXRoaXMubG9jYWxDbGlwcGluZ0VuYWJsZWQsej1udC5pbml0KHRoaXMuY2xpcHBpbmdQbGFuZXMsRCxlKSxkPXR0LmdldCh0LGUpLGQuaW5pdCgpLGJ0KHQsZSwwLG0uc29ydE9iamVjdHMpLGQuZmluaXNoKCksITA9PT1tLnNvcnRPYmplY3RzJiZkLnNvcnQoTCxQKSwhMD09PXomJm50LmJlZ2luU2hhZG93cygpO2NvbnN0IHI9cC5zdGF0ZS5zaGFkb3dzQXJyYXk7cHQucmVuZGVyKHIsdCxlKSxwLnNldHVwTGlnaHRzKCkscC5zZXR1cExpZ2h0c1ZpZXcoZSksITA9PT16JiZudC5lbmRTaGFkb3dzKCksITA9PT10aGlzLmluZm8uYXV0b1Jlc2V0JiZ0aGlzLmluZm8ucmVzZXQoKSx2b2lkIDAhPT1uJiZ0aGlzLnNldFJlbmRlclRhcmdldChuKSxpdC5yZW5kZXIoZCx0LGUsaSk7Y29uc3Qgbz1kLm9wYXF1ZSxhPWQudHJhbnNwYXJlbnQ7by5sZW5ndGg+MCYmeHQobyx0LGUpLGEubGVuZ3RoPjAmJnh0KGEsdCxlKSwhMD09PXQuaXNTY2VuZSYmdC5vbkFmdGVyUmVuZGVyKG0sdCxlKSxudWxsIT09YiYmKFkudXBkYXRlUmVuZGVyVGFyZ2V0TWlwbWFwKGIpLFkudXBkYXRlTXVsdGlzYW1wbGVSZW5kZXJUYXJnZXQoYikpLEcuYnVmZmVycy5kZXB0aC5zZXRUZXN0KCEwKSxHLmJ1ZmZlcnMuZGVwdGguc2V0TWFzayghMCksRy5idWZmZXJzLmNvbG9yLnNldE1hc2soITApLEcuc2V0UG9seWdvbk9mZnNldCghMSksZi5wb3AoKSxwPWYubGVuZ3RoPjA/ZltmLmxlbmd0aC0xXTpudWxsLGQ9bnVsbH0sdGhpcy5zZXRGcmFtZWJ1ZmZlcj1mdW5jdGlvbih0KXtfIT09dCYmbnVsbD09PWImJmN0LmJpbmRGcmFtZWJ1ZmZlcigzNjE2MCx0KSxfPXR9LHRoaXMuZ2V0QWN0aXZlQ3ViZUZhY2U9ZnVuY3Rpb24oKXtyZXR1cm4geX0sdGhpcy5nZXRBY3RpdmVNaXBtYXBMZXZlbD1mdW5jdGlvbigpe3JldHVybiB2fSx0aGlzLmdldFJlbmRlckxpc3Q9ZnVuY3Rpb24oKXtyZXR1cm4gZH0sdGhpcy5zZXRSZW5kZXJMaXN0PWZ1bmN0aW9uKHQpe2Q9dH0sdGhpcy5nZXRSZW5kZXJUYXJnZXQ9ZnVuY3Rpb24oKXtyZXR1cm4gYn0sdGhpcy5zZXRSZW5kZXJUYXJnZXQ9ZnVuY3Rpb24odCxlPTAsbj0wKXtiPXQseT1lLHY9bix0JiZ2b2lkIDA9PT1xLmdldCh0KS5fX3dlYmdsRnJhbWVidWZmZXImJlkuc2V0dXBSZW5kZXJUYXJnZXQodCk7bGV0IGk9XyxyPSExO2lmKHQpe2NvbnN0IG49cS5nZXQodCkuX193ZWJnbEZyYW1lYnVmZmVyO3QuaXNXZWJHTEN1YmVSZW5kZXJUYXJnZXQ/KGk9bltlXSxyPSEwKTppPXQuaXNXZWJHTE11bHRpc2FtcGxlUmVuZGVyVGFyZ2V0P3EuZ2V0KHQpLl9fd2ViZ2xNdWx0aXNhbXBsZWRGcmFtZWJ1ZmZlcjpuLE0uY29weSh0LnZpZXdwb3J0KSxFLmNvcHkodC5zY2lzc29yKSxUPXQuc2Npc3NvclRlc3R9ZWxzZSBNLmNvcHkoSSkubXVsdGlwbHlTY2FsYXIoaykuZmxvb3IoKSxFLmNvcHkoTikubXVsdGlwbHlTY2FsYXIoaykuZmxvb3IoKSxUPU87aWYoeCE9PWkmJihjdC5iaW5kRnJhbWVidWZmZXIoMzYxNjAsaSkseD1pKSxHLnZpZXdwb3J0KE0pLEcuc2Npc3NvcihFKSxHLnNldFNjaXNzb3JUZXN0KFQpLHIpe2NvbnN0IGk9cS5nZXQodC50ZXh0dXJlKTtjdC5mcmFtZWJ1ZmZlclRleHR1cmUyRCgzNjE2MCwzNjA2NCwzNDA2OStlLGkuX193ZWJnbFRleHR1cmUsbil9fSx0aGlzLnJlYWRSZW5kZXJUYXJnZXRQaXhlbHM9ZnVuY3Rpb24odCxlLG4saSxyLG8sYSl7aWYoIXR8fCF0LmlzV2ViR0xSZW5kZXJUYXJnZXQpcmV0dXJuIHZvaWQgY29uc29sZS5lcnJvcigiVEhSRUUuV2ViR0xSZW5kZXJlci5yZWFkUmVuZGVyVGFyZ2V0UGl4ZWxzOiByZW5kZXJUYXJnZXQgaXMgbm90IFRIUkVFLldlYkdMUmVuZGVyVGFyZ2V0LiIpO2xldCBzPXEuZ2V0KHQpLl9fd2ViZ2xGcmFtZWJ1ZmZlcjtpZih0LmlzV2ViR0xDdWJlUmVuZGVyVGFyZ2V0JiZ2b2lkIDAhPT1hJiYocz1zW2FdKSxzKXtsZXQgYT0hMTtzIT09eCYmKGN0LmJpbmRGcmFtZWJ1ZmZlcigzNjE2MCxzKSxhPSEwKTt0cnl7Y29uc3Qgcz10LnRleHR1cmUsbD1zLmZvcm1hdCxjPXMudHlwZTtpZihsIT09VEJ0JiZzdC5jb252ZXJ0KGwpIT09Y3QuZ2V0UGFyYW1ldGVyKDM1NzM5KSlyZXR1cm4gdm9pZCBjb25zb2xlLmVycm9yKCJUSFJFRS5XZWJHTFJlbmRlcmVyLnJlYWRSZW5kZXJUYXJnZXRQaXhlbHM6IHJlbmRlclRhcmdldCBpcyBub3QgaW4gUkdCQSBvciBpbXBsZW1lbnRhdGlvbiBkZWZpbmVkIGZvcm1hdC4iKTtjb25zdCB1PWM9PT1TQnQmJihqLmhhcygiRVhUX2NvbG9yX2J1ZmZlcl9oYWxmX2Zsb2F0Iil8fFUuaXNXZWJHTDImJmouaGFzKCJFWFRfY29sb3JfYnVmZmVyX2Zsb2F0IikpO2lmKCEoYz09PXZCdHx8c3QuY29udmVydChjKT09PWN0LmdldFBhcmFtZXRlcigzNTczOCl8fGM9PT13QnQmJihVLmlzV2ViR0wyfHxqLmhhcygiT0VTX3RleHR1cmVfZmxvYXQiKXx8ai5oYXMoIldFQkdMX2NvbG9yX2J1ZmZlcl9mbG9hdCIpKXx8dSkpcmV0dXJuIHZvaWQgY29uc29sZS5lcnJvcigiVEhSRUUuV2ViR0xSZW5kZXJlci5yZWFkUmVuZGVyVGFyZ2V0UGl4ZWxzOiByZW5kZXJUYXJnZXQgaXMgbm90IGluIFVuc2lnbmVkQnl0ZVR5cGUgb3IgaW1wbGVtZW50YXRpb24gZGVmaW5lZCB0eXBlLiIpOzM2MDUzPT09Y3QuY2hlY2tGcmFtZWJ1ZmZlclN0YXR1cygzNjE2MCk/ZT49MCYmZTw9dC53aWR0aC1pJiZuPj0wJiZuPD10LmhlaWdodC1yJiZjdC5yZWFkUGl4ZWxzKGUsbixpLHIsc3QuY29udmVydChsKSxzdC5jb252ZXJ0KGMpLG8pOmNvbnNvbGUuZXJyb3IoIlRIUkVFLldlYkdMUmVuZGVyZXIucmVhZFJlbmRlclRhcmdldFBpeGVsczogcmVhZFBpeGVscyBmcm9tIHJlbmRlclRhcmdldCBmYWlsZWQuIEZyYW1lYnVmZmVyIG5vdCBjb21wbGV0ZS4iKX1maW5hbGx5e2EmJmN0LmJpbmRGcmFtZWJ1ZmZlcigzNjE2MCx4KX19fSx0aGlzLmNvcHlGcmFtZWJ1ZmZlclRvVGV4dHVyZT1mdW5jdGlvbih0LGUsbj0wKXtjb25zdCBpPU1hdGgucG93KDIsLW4pLHI9TWF0aC5mbG9vcihlLmltYWdlLndpZHRoKmkpLG89TWF0aC5mbG9vcihlLmltYWdlLmhlaWdodCppKSxhPXN0LmNvbnZlcnQoZS5mb3JtYXQpO1kuc2V0VGV4dHVyZTJEKGUsMCksY3QuY29weVRleEltYWdlMkQoMzU1MyxuLGEsdC54LHQueSxyLG8sMCksRy51bmJpbmRUZXh0dXJlKCl9LHRoaXMuY29weVRleHR1cmVUb1RleHR1cmU9ZnVuY3Rpb24odCxlLG4saT0wKXtjb25zdCByPWUuaW1hZ2Uud2lkdGgsbz1lLmltYWdlLmhlaWdodCxhPXN0LmNvbnZlcnQobi5mb3JtYXQpLHM9c3QuY29udmVydChuLnR5cGUpO1kuc2V0VGV4dHVyZTJEKG4sMCksY3QucGl4ZWxTdG9yZWkoMzc0NDAsbi5mbGlwWSksY3QucGl4ZWxTdG9yZWkoMzc0NDEsbi5wcmVtdWx0aXBseUFscGhhKSxjdC5waXhlbFN0b3JlaSgzMzE3LG4udW5wYWNrQWxpZ25tZW50KSxlLmlzRGF0YVRleHR1cmU/Y3QudGV4U3ViSW1hZ2UyRCgzNTUzLGksdC54LHQueSxyLG8sYSxzLGUuaW1hZ2UuZGF0YSk6ZS5pc0NvbXByZXNzZWRUZXh0dXJlP2N0LmNvbXByZXNzZWRUZXhTdWJJbWFnZTJEKDM1NTMsaSx0LngsdC55LGUubWlwbWFwc1swXS53aWR0aCxlLm1pcG1hcHNbMF0uaGVpZ2h0LGEsZS5taXBtYXBzWzBdLmRhdGEpOmN0LnRleFN1YkltYWdlMkQoMzU1MyxpLHQueCx0LnksYSxzLGUuaW1hZ2UpLDA9PT1pJiZuLmdlbmVyYXRlTWlwbWFwcyYmY3QuZ2VuZXJhdGVNaXBtYXAoMzU1MyksRy51bmJpbmRUZXh0dXJlKCl9LHRoaXMuaW5pdFRleHR1cmU9ZnVuY3Rpb24odCl7WS5zZXRUZXh0dXJlMkQodCwwKSxHLnVuYmluZFRleHR1cmUoKX0sdGhpcy5yZXNldFN0YXRlPWZ1bmN0aW9uKCl7Ry5yZXNldCgpLGx0LnJlc2V0KCl9LCJ1bmRlZmluZWQiIT10eXBlb2YgX19USFJFRV9ERVZUT09MU19fJiZfX1RIUkVFX0RFVlRPT0xTX18uZGlzcGF0Y2hFdmVudChuZXcgQ3VzdG9tRXZlbnQoIm9ic2VydmUiLHtkZXRhaWw6dGhpc30pKX1mdW5jdGlvbiBlR3QodCl7dEd0LmNhbGwodGhpcyx0KX0oVVV0LnByb3RvdHlwZT1PYmplY3QuY3JlYXRlKGpGdC5wcm90b3R5cGUpKS5jb25zdHJ1Y3Rvcj1VVXQsVVV0LnByb3RvdHlwZS5pc01lc2hEZXB0aE1hdGVyaWFsPSEwLFVVdC5wcm90b3R5cGUuY29weT1mdW5jdGlvbih0KXtyZXR1cm4gakZ0LnByb3RvdHlwZS5jb3B5LmNhbGwodGhpcyx0KSx0aGlzLmRlcHRoUGFja2luZz10LmRlcHRoUGFja2luZyx0aGlzLnNraW5uaW5nPXQuc2tpbm5pbmcsdGhpcy5tb3JwaFRhcmdldHM9dC5tb3JwaFRhcmdldHMsdGhpcy5tYXA9dC5tYXAsdGhpcy5hbHBoYU1hcD10LmFscGhhTWFwLHRoaXMuZGlzcGxhY2VtZW50TWFwPXQuZGlzcGxhY2VtZW50TWFwLHRoaXMuZGlzcGxhY2VtZW50U2NhbGU9dC5kaXNwbGFjZW1lbnRTY2FsZSx0aGlzLmRpc3BsYWNlbWVudEJpYXM9dC5kaXNwbGFjZW1lbnRCaWFzLHRoaXMud2lyZWZyYW1lPXQud2lyZWZyYW1lLHRoaXMud2lyZWZyYW1lTGluZXdpZHRoPXQud2lyZWZyYW1lTGluZXdpZHRoLHRoaXN9LChHVXQucHJvdG90eXBlPU9iamVjdC5jcmVhdGUoakZ0LnByb3RvdHlwZSkpLmNvbnN0cnVjdG9yPUdVdCxHVXQucHJvdG90eXBlLmlzTWVzaERpc3RhbmNlTWF0ZXJpYWw9ITAsR1V0LnByb3RvdHlwZS5jb3B5PWZ1bmN0aW9uKHQpe3JldHVybiBqRnQucHJvdG90eXBlLmNvcHkuY2FsbCh0aGlzLHQpLHRoaXMucmVmZXJlbmNlUG9zaXRpb24uY29weSh0LnJlZmVyZW5jZVBvc2l0aW9uKSx0aGlzLm5lYXJEaXN0YW5jZT10Lm5lYXJEaXN0YW5jZSx0aGlzLmZhckRpc3RhbmNlPXQuZmFyRGlzdGFuY2UsdGhpcy5za2lubmluZz10LnNraW5uaW5nLHRoaXMubW9ycGhUYXJnZXRzPXQubW9ycGhUYXJnZXRzLHRoaXMubWFwPXQubWFwLHRoaXMuYWxwaGFNYXA9dC5hbHBoYU1hcCx0aGlzLmRpc3BsYWNlbWVudE1hcD10LmRpc3BsYWNlbWVudE1hcCx0aGlzLmRpc3BsYWNlbWVudFNjYWxlPXQuZGlzcGxhY2VtZW50U2NhbGUsdGhpcy5kaXNwbGFjZW1lbnRCaWFzPXQuZGlzcGxhY2VtZW50Qmlhcyx0aGlzfSwkVXQucHJvdG90eXBlPU9iamVjdC5hc3NpZ24oT2JqZWN0LmNyZWF0ZShIVnQucHJvdG90eXBlKSx7Y29uc3RydWN0b3I6JFV0LGlzQXJyYXlDYW1lcmE6ITB9KSxLVXQucHJvdG90eXBlPU9iamVjdC5hc3NpZ24oT2JqZWN0LmNyZWF0ZShfRnQucHJvdG90eXBlKSx7Y29uc3RydWN0b3I6S1V0LGlzR3JvdXA6ITB9KSxPYmplY3QuYXNzaWduKFpVdC5wcm90b3R5cGUse2NvbnN0cnVjdG9yOlpVdCxnZXRIYW5kU3BhY2U6ZnVuY3Rpb24oKXtyZXR1cm4gbnVsbD09PXRoaXMuX2hhbmQmJih0aGlzLl9oYW5kPW5ldyBLVXQsdGhpcy5faGFuZC5tYXRyaXhBdXRvVXBkYXRlPSExLHRoaXMuX2hhbmQudmlzaWJsZT0hMSx0aGlzLl9oYW5kLmpvaW50cz17fSx0aGlzLl9oYW5kLmlucHV0U3RhdGU9e3BpbmNoaW5nOiExfSksdGhpcy5faGFuZH0sZ2V0VGFyZ2V0UmF5U3BhY2U6ZnVuY3Rpb24oKXtyZXR1cm4gbnVsbD09PXRoaXMuX3RhcmdldFJheSYmKHRoaXMuX3RhcmdldFJheT1uZXcgS1V0LHRoaXMuX3RhcmdldFJheS5tYXRyaXhBdXRvVXBkYXRlPSExLHRoaXMuX3RhcmdldFJheS52aXNpYmxlPSExKSx0aGlzLl90YXJnZXRSYXl9LGdldEdyaXBTcGFjZTpmdW5jdGlvbigpe3JldHVybiBudWxsPT09dGhpcy5fZ3JpcCYmKHRoaXMuX2dyaXA9bmV3IEtVdCx0aGlzLl9ncmlwLm1hdHJpeEF1dG9VcGRhdGU9ITEsdGhpcy5fZ3JpcC52aXNpYmxlPSExKSx0aGlzLl9ncmlwfSxkaXNwYXRjaEV2ZW50OmZ1bmN0aW9uKHQpe3JldHVybiBudWxsIT09dGhpcy5fdGFyZ2V0UmF5JiZ0aGlzLl90YXJnZXRSYXkuZGlzcGF0Y2hFdmVudCh0KSxudWxsIT09dGhpcy5fZ3JpcCYmdGhpcy5fZ3JpcC5kaXNwYXRjaEV2ZW50KHQpLG51bGwhPT10aGlzLl9oYW5kJiZ0aGlzLl9oYW5kLmRpc3BhdGNoRXZlbnQodCksdGhpc30sZGlzY29ubmVjdDpmdW5jdGlvbih0KXtyZXR1cm4gdGhpcy5kaXNwYXRjaEV2ZW50KHt0eXBlOiJkaXNjb25uZWN0ZWQiLGRhdGE6dH0pLG51bGwhPT10aGlzLl90YXJnZXRSYXkmJih0aGlzLl90YXJnZXRSYXkudmlzaWJsZT0hMSksbnVsbCE9PXRoaXMuX2dyaXAmJih0aGlzLl9ncmlwLnZpc2libGU9ITEpLG51bGwhPT10aGlzLl9oYW5kJiYodGhpcy5faGFuZC52aXNpYmxlPSExKSx0aGlzfSx1cGRhdGU6ZnVuY3Rpb24odCxlLG4pe2xldCBpPW51bGwscj1udWxsLG89bnVsbDtjb25zdCBhPXRoaXMuX3RhcmdldFJheSxzPXRoaXMuX2dyaXAsbD10aGlzLl9oYW5kO2lmKHQmJiJ2aXNpYmxlLWJsdXJyZWQiIT09ZS5zZXNzaW9uLnZpc2liaWxpdHlTdGF0ZSlpZihsJiZ0LmhhbmQpe289ITA7Zm9yKGNvbnN0IGkgb2YgdC5oYW5kLnZhbHVlcygpKXtjb25zdCB0PWUuZ2V0Sm9pbnRQb3NlKGksbik7aWYodm9pZCAwPT09bC5qb2ludHNbaS5qb2ludE5hbWVdKXtjb25zdCB0PW5ldyBLVXQ7dC5tYXRyaXhBdXRvVXBkYXRlPSExLHQudmlzaWJsZT0hMSxsLmpvaW50c1tpLmpvaW50TmFtZV09dCxsLmFkZCh0KX1jb25zdCByPWwuam9pbnRzW2kuam9pbnROYW1lXTtudWxsIT09dCYmKHIubWF0cml4LmZyb21BcnJheSh0LnRyYW5zZm9ybS5tYXRyaXgpLHIubWF0cml4LmRlY29tcG9zZShyLnBvc2l0aW9uLHIucm90YXRpb24sci5zY2FsZSksci5qb2ludFJhZGl1cz10LnJhZGl1cyksci52aXNpYmxlPW51bGwhPT10fWNvbnN0IGk9bC5qb2ludHNbImluZGV4LWZpbmdlci10aXAiXS5wb3NpdGlvbi5kaXN0YW5jZVRvKGwuam9pbnRzWyJ0aHVtYi10aXAiXS5wb3NpdGlvbikscj0uMDIsYT0uMDA1O2wuaW5wdXRTdGF0ZS5waW5jaGluZyYmaT5yK2E/KGwuaW5wdXRTdGF0ZS5waW5jaGluZz0hMSx0aGlzLmRpc3BhdGNoRXZlbnQoe3R5cGU6InBpbmNoZW5kIixoYW5kZWRuZXNzOnQuaGFuZGVkbmVzcyx0YXJnZXQ6dGhpc30pKTohbC5pbnB1dFN0YXRlLnBpbmNoaW5nJiZpPD1yLWEmJihsLmlucHV0U3RhdGUucGluY2hpbmc9ITAsdGhpcy5kaXNwYXRjaEV2ZW50KHt0eXBlOiJwaW5jaHN0YXJ0IixoYW5kZWRuZXNzOnQuaGFuZGVkbmVzcyx0YXJnZXQ6dGhpc30pKX1lbHNlIG51bGwhPT1hJiYoaT1lLmdldFBvc2UodC50YXJnZXRSYXlTcGFjZSxuKSxudWxsIT09aSYmKGEubWF0cml4LmZyb21BcnJheShpLnRyYW5zZm9ybS5tYXRyaXgpLGEubWF0cml4LmRlY29tcG9zZShhLnBvc2l0aW9uLGEucm90YXRpb24sYS5zY2FsZSkpKSxudWxsIT09cyYmdC5ncmlwU3BhY2UmJihyPWUuZ2V0UG9zZSh0LmdyaXBTcGFjZSxuKSxudWxsIT09ciYmKHMubWF0cml4LmZyb21BcnJheShyLnRyYW5zZm9ybS5tYXRyaXgpLHMubWF0cml4LmRlY29tcG9zZShzLnBvc2l0aW9uLHMucm90YXRpb24scy5zY2FsZSkpKTtyZXR1cm4gbnVsbCE9PWEmJihhLnZpc2libGU9bnVsbCE9PWkpLG51bGwhPT1zJiYocy52aXNpYmxlPW51bGwhPT1yKSxudWxsIT09bCYmKGwudmlzaWJsZT1udWxsIT09byksdGhpc319KSxPYmplY3QuYXNzaWduKEpVdC5wcm90b3R5cGUsckh0LnByb3RvdHlwZSksZUd0LnByb3RvdHlwZT1PYmplY3QuYXNzaWduKE9iamVjdC5jcmVhdGUodEd0LnByb3RvdHlwZSkse2NvbnN0cnVjdG9yOmVHdCxpc1dlYkdMMVJlbmRlcmVyOiEwfSk7Y2xhc3Mgbkd0e2NvbnN0cnVjdG9yKHQsZSl7T2JqZWN0LmRlZmluZVByb3BlcnR5KHRoaXMsImlzRm9nRXhwMiIse3ZhbHVlOiEwfSksdGhpcy5uYW1lPSIiLHRoaXMuY29sb3I9bmV3IEhGdCh0KSx0aGlzLmRlbnNpdHk9dm9pZCAwIT09ZT9lOjI1ZS01fWNsb25lKCl7cmV0dXJuIG5ldyBuR3QodGhpcy5jb2xvcix0aGlzLmRlbnNpdHkpfXRvSlNPTigpe3JldHVybnt0eXBlOiJGb2dFeHAyIixjb2xvcjp0aGlzLmNvbG9yLmdldEhleCgpLGRlbnNpdHk6dGhpcy5kZW5zaXR5fX19Y2xhc3MgaUd0e2NvbnN0cnVjdG9yKHQsZSxuKXtPYmplY3QuZGVmaW5lUHJvcGVydHkodGhpcywiaXNGb2ciLHt2YWx1ZTohMH0pLHRoaXMubmFtZT0iIix0aGlzLmNvbG9yPW5ldyBIRnQodCksdGhpcy5uZWFyPXZvaWQgMCE9PWU/ZToxLHRoaXMuZmFyPXZvaWQgMCE9PW4/bjoxZTN9Y2xvbmUoKXtyZXR1cm4gbmV3IGlHdCh0aGlzLmNvbG9yLHRoaXMubmVhcix0aGlzLmZhcil9dG9KU09OKCl7cmV0dXJue3R5cGU6IkZvZyIsY29sb3I6dGhpcy5jb2xvci5nZXRIZXgoKSxuZWFyOnRoaXMubmVhcixmYXI6dGhpcy5mYXJ9fX1jbGFzcyByR3QgZXh0ZW5kcyBfRnR7Y29uc3RydWN0b3IoKXtzdXBlcigpLE9iamVjdC5kZWZpbmVQcm9wZXJ0eSh0aGlzLCJpc1NjZW5lIix7dmFsdWU6ITB9KSx0aGlzLnR5cGU9IlNjZW5lIix0aGlzLmJhY2tncm91bmQ9bnVsbCx0aGlzLmVudmlyb25tZW50PW51bGwsdGhpcy5mb2c9bnVsbCx0aGlzLm92ZXJyaWRlTWF0ZXJpYWw9bnVsbCx0aGlzLmF1dG9VcGRhdGU9ITAsInVuZGVmaW5lZCIhPXR5cGVvZiBfX1RIUkVFX0RFVlRPT0xTX18mJl9fVEhSRUVfREVWVE9PTFNfXy5kaXNwYXRjaEV2ZW50KG5ldyBDdXN0b21FdmVudCgib2JzZXJ2ZSIse2RldGFpbDp0aGlzfSkpfWNvcHkodCxlKXtyZXR1cm4gc3VwZXIuY29weSh0LGUpLG51bGwhPT10LmJhY2tncm91bmQmJih0aGlzLmJhY2tncm91bmQ9dC5iYWNrZ3JvdW5kLmNsb25lKCkpLG51bGwhPT10LmVudmlyb25tZW50JiYodGhpcy5lbnZpcm9ubWVudD10LmVudmlyb25tZW50LmNsb25lKCkpLG51bGwhPT10LmZvZyYmKHRoaXMuZm9nPXQuZm9nLmNsb25lKCkpLG51bGwhPT10Lm92ZXJyaWRlTWF0ZXJpYWwmJih0aGlzLm92ZXJyaWRlTWF0ZXJpYWw9dC5vdmVycmlkZU1hdGVyaWFsLmNsb25lKCkpLHRoaXMuYXV0b1VwZGF0ZT10LmF1dG9VcGRhdGUsdGhpcy5tYXRyaXhBdXRvVXBkYXRlPXQubWF0cml4QXV0b1VwZGF0ZSx0aGlzfXRvSlNPTih0KXtjb25zdCBlPXN1cGVyLnRvSlNPTih0KTtyZXR1cm4gbnVsbCE9PXRoaXMuYmFja2dyb3VuZCYmKGUub2JqZWN0LmJhY2tncm91bmQ9dGhpcy5iYWNrZ3JvdW5kLnRvSlNPTih0KSksbnVsbCE9PXRoaXMuZW52aXJvbm1lbnQmJihlLm9iamVjdC5lbnZpcm9ubWVudD10aGlzLmVudmlyb25tZW50LnRvSlNPTih0KSksbnVsbCE9PXRoaXMuZm9nJiYoZS5vYmplY3QuZm9nPXRoaXMuZm9nLnRvSlNPTigpKSxlfX1mdW5jdGlvbiBvR3QodCxlKXt0aGlzLmFycmF5PXQsdGhpcy5zdHJpZGU9ZSx0aGlzLmNvdW50PXZvaWQgMCE9PXQ/dC5sZW5ndGgvZTowLHRoaXMudXNhZ2U9ZUh0LHRoaXMudXBkYXRlUmFuZ2U9e29mZnNldDowLGNvdW50Oi0xfSx0aGlzLnZlcnNpb249MCx0aGlzLnV1aWQ9c0h0LmdlbmVyYXRlVVVJRCgpfU9iamVjdC5kZWZpbmVQcm9wZXJ0eShvR3QucHJvdG90eXBlLCJuZWVkc1VwZGF0ZSIse3NldDpmdW5jdGlvbih0KXshMD09PXQmJnRoaXMudmVyc2lvbisrfX0pLE9iamVjdC5hc3NpZ24ob0d0LnByb3RvdHlwZSx7aXNJbnRlcmxlYXZlZEJ1ZmZlcjohMCxvblVwbG9hZENhbGxiYWNrOmZ1bmN0aW9uKCl7fSxzZXRVc2FnZTpmdW5jdGlvbih0KXtyZXR1cm4gdGhpcy51c2FnZT10LHRoaXN9LGNvcHk6ZnVuY3Rpb24odCl7cmV0dXJuIHRoaXMuYXJyYXk9bmV3IHQuYXJyYXkuY29uc3RydWN0b3IodC5hcnJheSksdGhpcy5jb3VudD10LmNvdW50LHRoaXMuc3RyaWRlPXQuc3RyaWRlLHRoaXMudXNhZ2U9dC51c2FnZSx0aGlzfSxjb3B5QXQ6ZnVuY3Rpb24odCxlLG4pe3QqPXRoaXMuc3RyaWRlLG4qPWUuc3RyaWRlO2ZvcihsZXQgaT0wLHI9dGhpcy5zdHJpZGU7aTxyO2krKyl0aGlzLmFycmF5W3QraV09ZS5hcnJheVtuK2ldO3JldHVybiB0aGlzfSxzZXQ6ZnVuY3Rpb24odCxlPTApe3JldHVybiB0aGlzLmFycmF5LnNldCh0LGUpLHRoaXN9LGNsb25lOmZ1bmN0aW9uKHQpe3ZvaWQgMD09PXQuYXJyYXlCdWZmZXJzJiYodC5hcnJheUJ1ZmZlcnM9e30pLHZvaWQgMD09PXRoaXMuYXJyYXkuYnVmZmVyLl91dWlkJiYodGhpcy5hcnJheS5idWZmZXIuX3V1aWQ9c0h0LmdlbmVyYXRlVVVJRCgpKSx2b2lkIDA9PT10LmFycmF5QnVmZmVyc1t0aGlzLmFycmF5LmJ1ZmZlci5fdXVpZF0mJih0LmFycmF5QnVmZmVyc1t0aGlzLmFycmF5LmJ1ZmZlci5fdXVpZF09dGhpcy5hcnJheS5zbGljZSgwKS5idWZmZXIpO2NvbnN0IGU9bmV3IG9HdChuZXcgdGhpcy5hcnJheS5jb25zdHJ1Y3Rvcih0LmFycmF5QnVmZmVyc1t0aGlzLmFycmF5LmJ1ZmZlci5fdXVpZF0pLHRoaXMuc3RyaWRlKTtyZXR1cm4gZS5zZXRVc2FnZSh0aGlzLnVzYWdlKSxlfSxvblVwbG9hZDpmdW5jdGlvbih0KXtyZXR1cm4gdGhpcy5vblVwbG9hZENhbGxiYWNrPXQsdGhpc30sdG9KU09OOmZ1bmN0aW9uKHQpe3JldHVybiB2b2lkIDA9PT10LmFycmF5QnVmZmVycyYmKHQuYXJyYXlCdWZmZXJzPXt9KSx2b2lkIDA9PT10aGlzLmFycmF5LmJ1ZmZlci5fdXVpZCYmKHRoaXMuYXJyYXkuYnVmZmVyLl91dWlkPXNIdC5nZW5lcmF0ZVVVSUQoKSksdm9pZCAwPT09dC5hcnJheUJ1ZmZlcnNbdGhpcy5hcnJheS5idWZmZXIuX3V1aWRdJiYodC5hcnJheUJ1ZmZlcnNbdGhpcy5hcnJheS5idWZmZXIuX3V1aWRdPUFycmF5LnByb3RvdHlwZS5zbGljZS5jYWxsKG5ldyBVaW50MzJBcnJheSh0aGlzLmFycmF5LmJ1ZmZlcikpKSx7dXVpZDp0aGlzLnV1aWQsYnVmZmVyOnRoaXMuYXJyYXkuYnVmZmVyLl91dWlkLHR5cGU6dGhpcy5hcnJheS5jb25zdHJ1Y3Rvci5uYW1lLHN0cmlkZTp0aGlzLnN0cmlkZX19fSk7Y29uc3QgYUd0PW5ldyB5SHQ7ZnVuY3Rpb24gc0d0KHQsZSxuLGkpe3RoaXMubmFtZT0iIix0aGlzLmRhdGE9dCx0aGlzLml0ZW1TaXplPWUsdGhpcy5vZmZzZXQ9bix0aGlzLm5vcm1hbGl6ZWQ9ITA9PT1pfWZ1bmN0aW9uIGxHdCh0KXtqRnQuY2FsbCh0aGlzKSx0aGlzLnR5cGU9IlNwcml0ZU1hdGVyaWFsIix0aGlzLmNvbG9yPW5ldyBIRnQoMTY3NzcyMTUpLHRoaXMubWFwPW51bGwsdGhpcy5hbHBoYU1hcD1udWxsLHRoaXMucm90YXRpb249MCx0aGlzLnNpemVBdHRlbnVhdGlvbj0hMCx0aGlzLnRyYW5zcGFyZW50PSEwLHRoaXMuc2V0VmFsdWVzKHQpfWxldCBjR3Q7T2JqZWN0LmRlZmluZVByb3BlcnRpZXMoc0d0LnByb3RvdHlwZSx7Y291bnQ6e2dldDpmdW5jdGlvbigpe3JldHVybiB0aGlzLmRhdGEuY291bnR9fSxhcnJheTp7Z2V0OmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuZGF0YS5hcnJheX19LG5lZWRzVXBkYXRlOntzZXQ6ZnVuY3Rpb24odCl7dGhpcy5kYXRhLm5lZWRzVXBkYXRlPXR9fX0pLE9iamVjdC5hc3NpZ24oc0d0LnByb3RvdHlwZSx7aXNJbnRlcmxlYXZlZEJ1ZmZlckF0dHJpYnV0ZTohMCxhcHBseU1hdHJpeDQ6ZnVuY3Rpb24odCl7Zm9yKGxldCBlPTAsbj10aGlzLmRhdGEuY291bnQ7ZTxuO2UrKylhR3QueD10aGlzLmdldFgoZSksYUd0Lnk9dGhpcy5nZXRZKGUpLGFHdC56PXRoaXMuZ2V0WihlKSxhR3QuYXBwbHlNYXRyaXg0KHQpLHRoaXMuc2V0WFlaKGUsYUd0LngsYUd0LnksYUd0LnopO3JldHVybiB0aGlzfSxzZXRYOmZ1bmN0aW9uKHQsZSl7cmV0dXJuIHRoaXMuZGF0YS5hcnJheVt0KnRoaXMuZGF0YS5zdHJpZGUrdGhpcy5vZmZzZXRdPWUsdGhpc30sc2V0WTpmdW5jdGlvbih0LGUpe3JldHVybiB0aGlzLmRhdGEuYXJyYXlbdCp0aGlzLmRhdGEuc3RyaWRlK3RoaXMub2Zmc2V0KzFdPWUsdGhpc30sc2V0WjpmdW5jdGlvbih0LGUpe3JldHVybiB0aGlzLmRhdGEuYXJyYXlbdCp0aGlzLmRhdGEuc3RyaWRlK3RoaXMub2Zmc2V0KzJdPWUsdGhpc30sc2V0VzpmdW5jdGlvbih0LGUpe3JldHVybiB0aGlzLmRhdGEuYXJyYXlbdCp0aGlzLmRhdGEuc3RyaWRlK3RoaXMub2Zmc2V0KzNdPWUsdGhpc30sZ2V0WDpmdW5jdGlvbih0KXtyZXR1cm4gdGhpcy5kYXRhLmFycmF5W3QqdGhpcy5kYXRhLnN0cmlkZSt0aGlzLm9mZnNldF19LGdldFk6ZnVuY3Rpb24odCl7cmV0dXJuIHRoaXMuZGF0YS5hcnJheVt0KnRoaXMuZGF0YS5zdHJpZGUrdGhpcy5vZmZzZXQrMV19LGdldFo6ZnVuY3Rpb24odCl7cmV0dXJuIHRoaXMuZGF0YS5hcnJheVt0KnRoaXMuZGF0YS5zdHJpZGUrdGhpcy5vZmZzZXQrMl19LGdldFc6ZnVuY3Rpb24odCl7cmV0dXJuIHRoaXMuZGF0YS5hcnJheVt0KnRoaXMuZGF0YS5zdHJpZGUrdGhpcy5vZmZzZXQrM119LHNldFhZOmZ1bmN0aW9uKHQsZSxuKXtyZXR1cm4gdGhpcy5kYXRhLmFycmF5Wyh0PXQqdGhpcy5kYXRhLnN0cmlkZSt0aGlzLm9mZnNldCkrMF09ZSx0aGlzLmRhdGEuYXJyYXlbdCsxXT1uLHRoaXN9LHNldFhZWjpmdW5jdGlvbih0LGUsbixpKXtyZXR1cm4gdGhpcy5kYXRhLmFycmF5Wyh0PXQqdGhpcy5kYXRhLnN0cmlkZSt0aGlzLm9mZnNldCkrMF09ZSx0aGlzLmRhdGEuYXJyYXlbdCsxXT1uLHRoaXMuZGF0YS5hcnJheVt0KzJdPWksdGhpc30sc2V0WFlaVzpmdW5jdGlvbih0LGUsbixpLHIpe3JldHVybiB0aGlzLmRhdGEuYXJyYXlbKHQ9dCp0aGlzLmRhdGEuc3RyaWRlK3RoaXMub2Zmc2V0KSswXT1lLHRoaXMuZGF0YS5hcnJheVt0KzFdPW4sdGhpcy5kYXRhLmFycmF5W3QrMl09aSx0aGlzLmRhdGEuYXJyYXlbdCszXT1yLHRoaXN9LGNsb25lOmZ1bmN0aW9uKHQpe2lmKHZvaWQgMD09PXQpe2NvbnNvbGUubG9nKCJUSFJFRS5JbnRlcmxlYXZlZEJ1ZmZlckF0dHJpYnV0ZS5jbG9uZSgpOiBDbG9uaW5nIGFuIGludGVybGF2ZWQgYnVmZmVyIGF0dHJpYnV0ZSB3aWxsIGRlaW50ZXJsZWF2ZSBidWZmZXIgZGF0YS4iKTtjb25zdCB0PVtdO2ZvcihsZXQgZT0wO2U8dGhpcy5jb3VudDtlKyspe2NvbnN0IG49ZSp0aGlzLmRhdGEuc3RyaWRlK3RoaXMub2Zmc2V0O2ZvcihsZXQgZT0wO2U8dGhpcy5pdGVtU2l6ZTtlKyspdC5wdXNoKHRoaXMuZGF0YS5hcnJheVtuK2VdKX1yZXR1cm4gbmV3IHFGdChuZXcgdGhpcy5hcnJheS5jb25zdHJ1Y3Rvcih0KSx0aGlzLml0ZW1TaXplLHRoaXMubm9ybWFsaXplZCl9cmV0dXJuIHZvaWQgMD09PXQuaW50ZXJsZWF2ZWRCdWZmZXJzJiYodC5pbnRlcmxlYXZlZEJ1ZmZlcnM9e30pLHZvaWQgMD09PXQuaW50ZXJsZWF2ZWRCdWZmZXJzW3RoaXMuZGF0YS51dWlkXSYmKHQuaW50ZXJsZWF2ZWRCdWZmZXJzW3RoaXMuZGF0YS51dWlkXT10aGlzLmRhdGEuY2xvbmUodCkpLG5ldyBzR3QodC5pbnRlcmxlYXZlZEJ1ZmZlcnNbdGhpcy5kYXRhLnV1aWRdLHRoaXMuaXRlbVNpemUsdGhpcy5vZmZzZXQsdGhpcy5ub3JtYWxpemVkKX0sdG9KU09OOmZ1bmN0aW9uKHQpe2lmKHZvaWQgMD09PXQpe2NvbnNvbGUubG9nKCJUSFJFRS5JbnRlcmxlYXZlZEJ1ZmZlckF0dHJpYnV0ZS50b0pTT04oKTogU2VyaWFsaXppbmcgYW4gaW50ZXJsYXZlZCBidWZmZXIgYXR0cmlidXRlIHdpbGwgZGVpbnRlcmxlYXZlIGJ1ZmZlciBkYXRhLiIpO2NvbnN0IHQ9W107Zm9yKGxldCBlPTA7ZTx0aGlzLmNvdW50O2UrKyl7Y29uc3Qgbj1lKnRoaXMuZGF0YS5zdHJpZGUrdGhpcy5vZmZzZXQ7Zm9yKGxldCBlPTA7ZTx0aGlzLml0ZW1TaXplO2UrKyl0LnB1c2godGhpcy5kYXRhLmFycmF5W24rZV0pfXJldHVybntpdGVtU2l6ZTp0aGlzLml0ZW1TaXplLHR5cGU6dGhpcy5hcnJheS5jb25zdHJ1Y3Rvci5uYW1lLGFycmF5OnQsbm9ybWFsaXplZDp0aGlzLm5vcm1hbGl6ZWR9fXJldHVybiB2b2lkIDA9PT10LmludGVybGVhdmVkQnVmZmVycyYmKHQuaW50ZXJsZWF2ZWRCdWZmZXJzPXt9KSx2b2lkIDA9PT10LmludGVybGVhdmVkQnVmZmVyc1t0aGlzLmRhdGEudXVpZF0mJih0LmludGVybGVhdmVkQnVmZmVyc1t0aGlzLmRhdGEudXVpZF09dGhpcy5kYXRhLnRvSlNPTih0KSkse2lzSW50ZXJsZWF2ZWRCdWZmZXJBdHRyaWJ1dGU6ITAsaXRlbVNpemU6dGhpcy5pdGVtU2l6ZSxkYXRhOnRoaXMuZGF0YS51dWlkLG9mZnNldDp0aGlzLm9mZnNldCxub3JtYWxpemVkOnRoaXMubm9ybWFsaXplZH19fSksKGxHdC5wcm90b3R5cGU9T2JqZWN0LmNyZWF0ZShqRnQucHJvdG90eXBlKSkuY29uc3RydWN0b3I9bEd0LGxHdC5wcm90b3R5cGUuaXNTcHJpdGVNYXRlcmlhbD0hMCxsR3QucHJvdG90eXBlLmNvcHk9ZnVuY3Rpb24odCl7cmV0dXJuIGpGdC5wcm90b3R5cGUuY29weS5jYWxsKHRoaXMsdCksdGhpcy5jb2xvci5jb3B5KHQuY29sb3IpLHRoaXMubWFwPXQubWFwLHRoaXMuYWxwaGFNYXA9dC5hbHBoYU1hcCx0aGlzLnJvdGF0aW9uPXQucm90YXRpb24sdGhpcy5zaXplQXR0ZW51YXRpb249dC5zaXplQXR0ZW51YXRpb24sdGhpc307Y29uc3QgdUd0PW5ldyB5SHQsaEd0PW5ldyB5SHQsZEd0PW5ldyB5SHQscEd0PW5ldyBsSHQsZkd0PW5ldyBsSHQsbUd0PW5ldyBxSHQsZ0d0PW5ldyB5SHQsX0d0PW5ldyB5SHQseUd0PW5ldyB5SHQsdkd0PW5ldyBsSHQsYkd0PW5ldyBsSHQseEd0PW5ldyBsSHQ7ZnVuY3Rpb24gd0d0KHQpe2lmKF9GdC5jYWxsKHRoaXMpLHRoaXMudHlwZT0iU3ByaXRlIix2b2lkIDA9PT1jR3Qpe2NHdD1uZXcgcFZ0O2NvbnN0IHQ9bmV3IG9HdChuZXcgRmxvYXQzMkFycmF5KFstLjUsLS41LDAsMCwwLC41LC0uNSwwLDEsMCwuNSwuNSwwLDEsMSwtLjUsLjUsMCwwLDFdKSw1KTtjR3Quc2V0SW5kZXgoWzAsMSwyLDAsMiwzXSksY0d0LnNldEF0dHJpYnV0ZSgicG9zaXRpb24iLG5ldyBzR3QodCwzLDAsITEpKSxjR3Quc2V0QXR0cmlidXRlKCJ1diIsbmV3IHNHdCh0LDIsMywhMSkpfXRoaXMuZ2VvbWV0cnk9Y0d0LHRoaXMubWF0ZXJpYWw9dm9pZCAwIT09dD90Om5ldyBsR3QsdGhpcy5jZW50ZXI9bmV3IGxIdCguNSwuNSl9ZnVuY3Rpb24gU0d0KHQsZSxuLGkscixvKXtwR3Quc3ViVmVjdG9ycyh0LG4pLmFkZFNjYWxhciguNSkubXVsdGlwbHkoaSksdm9pZCAwIT09cj8oZkd0Lng9bypwR3QueC1yKnBHdC55LGZHdC55PXIqcEd0LngrbypwR3QueSk6Zkd0LmNvcHkocEd0KSx0LmNvcHkoZSksdC54Kz1mR3QueCx0LnkrPWZHdC55LHQuYXBwbHlNYXRyaXg0KG1HdCl9d0d0LnByb3RvdHlwZT1PYmplY3QuYXNzaWduKE9iamVjdC5jcmVhdGUoX0Z0LnByb3RvdHlwZSkse2NvbnN0cnVjdG9yOndHdCxpc1Nwcml0ZTohMCxyYXljYXN0OmZ1bmN0aW9uKHQsZSl7bnVsbD09PXQuY2FtZXJhJiZjb25zb2xlLmVycm9yKCdUSFJFRS5TcHJpdGU6ICJSYXljYXN0ZXIuY2FtZXJhIiBuZWVkcyB0byBiZSBzZXQgaW4gb3JkZXIgdG8gcmF5Y2FzdCBhZ2FpbnN0IHNwcml0ZXMuJyksaEd0LnNldEZyb21NYXRyaXhTY2FsZSh0aGlzLm1hdHJpeFdvcmxkKSxtR3QuY29weSh0LmNhbWVyYS5tYXRyaXhXb3JsZCksdGhpcy5tb2RlbFZpZXdNYXRyaXgubXVsdGlwbHlNYXRyaWNlcyh0LmNhbWVyYS5tYXRyaXhXb3JsZEludmVyc2UsdGhpcy5tYXRyaXhXb3JsZCksZEd0LnNldEZyb21NYXRyaXhQb3NpdGlvbih0aGlzLm1vZGVsVmlld01hdHJpeCksdC5jYW1lcmEuaXNQZXJzcGVjdGl2ZUNhbWVyYSYmITE9PT10aGlzLm1hdGVyaWFsLnNpemVBdHRlbnVhdGlvbiYmaEd0Lm11bHRpcGx5U2NhbGFyKC1kR3Queik7Y29uc3Qgbj10aGlzLm1hdGVyaWFsLnJvdGF0aW9uO2xldCBpLHI7MCE9PW4mJihyPU1hdGguY29zKG4pLGk9TWF0aC5zaW4obikpO2NvbnN0IG89dGhpcy5jZW50ZXI7U0d0KGdHdC5zZXQoLS41LC0uNSwwKSxkR3QsbyxoR3QsaSxyKSxTR3QoX0d0LnNldCguNSwtLjUsMCksZEd0LG8saEd0LGksciksU0d0KHlHdC5zZXQoLjUsLjUsMCksZEd0LG8saEd0LGksciksdkd0LnNldCgwLDApLGJHdC5zZXQoMSwwKSx4R3Quc2V0KDEsMSk7bGV0IGE9dC5yYXkuaW50ZXJzZWN0VHJpYW5nbGUoZ0d0LF9HdCx5R3QsITEsdUd0KTtpZihudWxsPT09YSYmKFNHdChfR3Quc2V0KC0uNSwuNSwwKSxkR3QsbyxoR3QsaSxyKSxiR3Quc2V0KDAsMSksYT10LnJheS5pbnRlcnNlY3RUcmlhbmdsZShnR3QseUd0LF9HdCwhMSx1R3QpLG51bGw9PT1hKSlyZXR1cm47Y29uc3Qgcz10LnJheS5vcmlnaW4uZGlzdGFuY2VUbyh1R3QpO3M8dC5uZWFyfHxzPnQuZmFyfHxlLnB1c2goe2Rpc3RhbmNlOnMscG9pbnQ6dUd0LmNsb25lKCksdXY6SUZ0LmdldFVWKHVHdCxnR3QsX0d0LHlHdCx2R3QsYkd0LHhHdCxuZXcgbEh0KSxmYWNlOm51bGwsb2JqZWN0OnRoaXN9KX0sY29weTpmdW5jdGlvbih0KXtyZXR1cm4gX0Z0LnByb3RvdHlwZS5jb3B5LmNhbGwodGhpcyx0KSx2b2lkIDAhPT10LmNlbnRlciYmdGhpcy5jZW50ZXIuY29weSh0LmNlbnRlciksdGhpcy5tYXRlcmlhbD10Lm1hdGVyaWFsLHRoaXN9fSk7Y29uc3QgTUd0PW5ldyB5SHQsRUd0PW5ldyB5SHQ7ZnVuY3Rpb24gVEd0KCl7X0Z0LmNhbGwodGhpcyksdGhpcy5fY3VycmVudExldmVsPTAsdGhpcy50eXBlPSJMT0QiLE9iamVjdC5kZWZpbmVQcm9wZXJ0aWVzKHRoaXMse2xldmVsczp7ZW51bWVyYWJsZTohMCx2YWx1ZTpbXX19KSx0aGlzLmF1dG9VcGRhdGU9ITB9VEd0LnByb3RvdHlwZT1PYmplY3QuYXNzaWduKE9iamVjdC5jcmVhdGUoX0Z0LnByb3RvdHlwZSkse2NvbnN0cnVjdG9yOlRHdCxpc0xPRDohMCxjb3B5OmZ1bmN0aW9uKHQpe19GdC5wcm90b3R5cGUuY29weS5jYWxsKHRoaXMsdCwhMSk7Y29uc3QgZT10LmxldmVscztmb3IobGV0IHQ9MCxuPWUubGVuZ3RoO3Q8bjt0Kyspe2NvbnN0IG49ZVt0XTt0aGlzLmFkZExldmVsKG4ub2JqZWN0LmNsb25lKCksbi5kaXN0YW5jZSl9cmV0dXJuIHRoaXMuYXV0b1VwZGF0ZT10LmF1dG9VcGRhdGUsdGhpc30sYWRkTGV2ZWw6ZnVuY3Rpb24odCxlPTApe2U9TWF0aC5hYnMoZSk7Y29uc3Qgbj10aGlzLmxldmVscztsZXQgaTtmb3IoaT0wO2k8bi5sZW5ndGgmJiEoZTxuW2ldLmRpc3RhbmNlKTtpKyspO3JldHVybiBuLnNwbGljZShpLDAse2Rpc3RhbmNlOmUsb2JqZWN0OnR9KSx0aGlzLmFkZCh0KSx0aGlzfSxnZXRDdXJyZW50TGV2ZWw6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5fY3VycmVudExldmVsfSxnZXRPYmplY3RGb3JEaXN0YW5jZTpmdW5jdGlvbih0KXtjb25zdCBlPXRoaXMubGV2ZWxzO2lmKGUubGVuZ3RoPjApe2xldCBuLGk7Zm9yKG49MSxpPWUubGVuZ3RoO248aSYmISh0PGVbbl0uZGlzdGFuY2UpO24rKyk7cmV0dXJuIGVbbi0xXS5vYmplY3R9cmV0dXJuIG51bGx9LHJheWNhc3Q6ZnVuY3Rpb24odCxlKXtpZih0aGlzLmxldmVscy5sZW5ndGg+MCl7TUd0LnNldEZyb21NYXRyaXhQb3NpdGlvbih0aGlzLm1hdHJpeFdvcmxkKTtjb25zdCBuPXQucmF5Lm9yaWdpbi5kaXN0YW5jZVRvKE1HdCk7dGhpcy5nZXRPYmplY3RGb3JEaXN0YW5jZShuKS5yYXljYXN0KHQsZSl9fSx1cGRhdGU6ZnVuY3Rpb24odCl7Y29uc3QgZT10aGlzLmxldmVscztpZihlLmxlbmd0aD4xKXtNR3Quc2V0RnJvbU1hdHJpeFBvc2l0aW9uKHQubWF0cml4V29ybGQpLEVHdC5zZXRGcm9tTWF0cml4UG9zaXRpb24odGhpcy5tYXRyaXhXb3JsZCk7Y29uc3Qgbj1NR3QuZGlzdGFuY2VUbyhFR3QpL3Quem9vbTtsZXQgaSxyO2ZvcihlWzBdLm9iamVjdC52aXNpYmxlPSEwLGk9MSxyPWUubGVuZ3RoO2k8ciYmbj49ZVtpXS5kaXN0YW5jZTtpKyspZVtpLTFdLm9iamVjdC52aXNpYmxlPSExLGVbaV0ub2JqZWN0LnZpc2libGU9ITA7Zm9yKHRoaXMuX2N1cnJlbnRMZXZlbD1pLTE7aTxyO2krKyllW2ldLm9iamVjdC52aXNpYmxlPSExfX0sdG9KU09OOmZ1bmN0aW9uKHQpe2NvbnN0IGU9X0Z0LnByb3RvdHlwZS50b0pTT04uY2FsbCh0aGlzLHQpOyExPT09dGhpcy5hdXRvVXBkYXRlJiYoZS5vYmplY3QuYXV0b1VwZGF0ZT0hMSksZS5vYmplY3QubGV2ZWxzPVtdO2NvbnN0IG49dGhpcy5sZXZlbHM7Zm9yKGxldCB0PTAsaT1uLmxlbmd0aDt0PGk7dCsrKXtjb25zdCBpPW5bdF07ZS5vYmplY3QubGV2ZWxzLnB1c2goe29iamVjdDppLm9iamVjdC51dWlkLGRpc3RhbmNlOmkuZGlzdGFuY2V9KX1yZXR1cm4gZX19KTtjb25zdCBBR3Q9bmV3IHlIdCxDR3Q9bmV3IG1IdCxrR3Q9bmV3IG1IdCxMR3Q9bmV3IHlIdCxQR3Q9bmV3IHFIdDtmdW5jdGlvbiBJR3QodCxlKXt0JiZ0LmlzR2VvbWV0cnkmJmNvbnNvbGUuZXJyb3IoIlRIUkVFLlNraW5uZWRNZXNoIG5vIGxvbmdlciBzdXBwb3J0cyBUSFJFRS5HZW9tZXRyeS4gVXNlIFRIUkVFLkJ1ZmZlckdlb21ldHJ5IGluc3RlYWQuIiksUFZ0LmNhbGwodGhpcyx0LGUpLHRoaXMudHlwZT0iU2tpbm5lZE1lc2giLHRoaXMuYmluZE1vZGU9ImF0dGFjaGVkIix0aGlzLmJpbmRNYXRyaXg9bmV3IHFIdCx0aGlzLmJpbmRNYXRyaXhJbnZlcnNlPW5ldyBxSHR9ZnVuY3Rpb24gTkd0KCl7X0Z0LmNhbGwodGhpcyksdGhpcy50eXBlPSJCb25lIn1JR3QucHJvdG90eXBlPU9iamVjdC5hc3NpZ24oT2JqZWN0LmNyZWF0ZShQVnQucHJvdG90eXBlKSx7Y29uc3RydWN0b3I6SUd0LGlzU2tpbm5lZE1lc2g6ITAsY29weTpmdW5jdGlvbih0KXtyZXR1cm4gUFZ0LnByb3RvdHlwZS5jb3B5LmNhbGwodGhpcyx0KSx0aGlzLmJpbmRNb2RlPXQuYmluZE1vZGUsdGhpcy5iaW5kTWF0cml4LmNvcHkodC5iaW5kTWF0cml4KSx0aGlzLmJpbmRNYXRyaXhJbnZlcnNlLmNvcHkodC5iaW5kTWF0cml4SW52ZXJzZSksdGhpcy5za2VsZXRvbj10LnNrZWxldG9uLHRoaXN9LGJpbmQ6ZnVuY3Rpb24odCxlKXt0aGlzLnNrZWxldG9uPXQsdm9pZCAwPT09ZSYmKHRoaXMudXBkYXRlTWF0cml4V29ybGQoITApLHRoaXMuc2tlbGV0b24uY2FsY3VsYXRlSW52ZXJzZXMoKSxlPXRoaXMubWF0cml4V29ybGQpLHRoaXMuYmluZE1hdHJpeC5jb3B5KGUpLHRoaXMuYmluZE1hdHJpeEludmVyc2UuY29weShlKS5pbnZlcnQoKX0scG9zZTpmdW5jdGlvbigpe3RoaXMuc2tlbGV0b24ucG9zZSgpfSxub3JtYWxpemVTa2luV2VpZ2h0czpmdW5jdGlvbigpe2NvbnN0IHQ9bmV3IG1IdCxlPXRoaXMuZ2VvbWV0cnkuYXR0cmlidXRlcy5za2luV2VpZ2h0O2ZvcihsZXQgbj0wLGk9ZS5jb3VudDtuPGk7bisrKXt0Lng9ZS5nZXRYKG4pLHQueT1lLmdldFkobiksdC56PWUuZ2V0WihuKSx0Lnc9ZS5nZXRXKG4pO2NvbnN0IGk9MS90Lm1hbmhhdHRhbkxlbmd0aCgpO2khPT0xLzA/dC5tdWx0aXBseVNjYWxhcihpKTp0LnNldCgxLDAsMCwwKSxlLnNldFhZWlcobix0LngsdC55LHQueix0LncpfX0sdXBkYXRlTWF0cml4V29ybGQ6ZnVuY3Rpb24odCl7UFZ0LnByb3RvdHlwZS51cGRhdGVNYXRyaXhXb3JsZC5jYWxsKHRoaXMsdCksImF0dGFjaGVkIj09PXRoaXMuYmluZE1vZGU/dGhpcy5iaW5kTWF0cml4SW52ZXJzZS5jb3B5KHRoaXMubWF0cml4V29ybGQpLmludmVydCgpOiJkZXRhY2hlZCI9PT10aGlzLmJpbmRNb2RlP3RoaXMuYmluZE1hdHJpeEludmVyc2UuY29weSh0aGlzLmJpbmRNYXRyaXgpLmludmVydCgpOmNvbnNvbGUud2FybigiVEhSRUUuU2tpbm5lZE1lc2g6IFVucmVjb2duaXplZCBiaW5kTW9kZTogIit0aGlzLmJpbmRNb2RlKX0sYm9uZVRyYW5zZm9ybTpmdW5jdGlvbih0LGUpe2NvbnN0IG49dGhpcy5za2VsZXRvbixpPXRoaXMuZ2VvbWV0cnk7Q0d0LmZyb21CdWZmZXJBdHRyaWJ1dGUoaS5hdHRyaWJ1dGVzLnNraW5JbmRleCx0KSxrR3QuZnJvbUJ1ZmZlckF0dHJpYnV0ZShpLmF0dHJpYnV0ZXMuc2tpbldlaWdodCx0KSxBR3QuZnJvbUJ1ZmZlckF0dHJpYnV0ZShpLmF0dHJpYnV0ZXMucG9zaXRpb24sdCkuYXBwbHlNYXRyaXg0KHRoaXMuYmluZE1hdHJpeCksZS5zZXQoMCwwLDApO2ZvcihsZXQgdD0wO3Q8NDt0Kyspe2NvbnN0IGk9a0d0LmdldENvbXBvbmVudCh0KTtpZigwIT09aSl7Y29uc3Qgcj1DR3QuZ2V0Q29tcG9uZW50KHQpO1BHdC5tdWx0aXBseU1hdHJpY2VzKG4uYm9uZXNbcl0ubWF0cml4V29ybGQsbi5ib25lSW52ZXJzZXNbcl0pLGUuYWRkU2NhbGVkVmVjdG9yKExHdC5jb3B5KEFHdCkuYXBwbHlNYXRyaXg0KFBHdCksaSl9fXJldHVybiBlLmFwcGx5TWF0cml4NCh0aGlzLmJpbmRNYXRyaXhJbnZlcnNlKX19KSxOR3QucHJvdG90eXBlPU9iamVjdC5hc3NpZ24oT2JqZWN0LmNyZWF0ZShfRnQucHJvdG90eXBlKSx7Y29uc3RydWN0b3I6Tkd0LGlzQm9uZTohMH0pO2NvbnN0IE9HdD1uZXcgcUh0LFJHdD1uZXcgcUh0O2Z1bmN0aW9uIHpHdCh0PVtdLGU9W10pe3RoaXMudXVpZD1zSHQuZ2VuZXJhdGVVVUlEKCksdGhpcy5ib25lcz10LnNsaWNlKDApLHRoaXMuYm9uZUludmVyc2VzPWUsdGhpcy5ib25lTWF0cmljZXM9bnVsbCx0aGlzLmJvbmVUZXh0dXJlPW51bGwsdGhpcy5ib25lVGV4dHVyZVNpemU9MCx0aGlzLmZyYW1lPS0xLHRoaXMuaW5pdCgpfU9iamVjdC5hc3NpZ24oekd0LnByb3RvdHlwZSx7aW5pdDpmdW5jdGlvbigpe2NvbnN0IHQ9dGhpcy5ib25lcyxlPXRoaXMuYm9uZUludmVyc2VzO2lmKHRoaXMuYm9uZU1hdHJpY2VzPW5ldyBGbG9hdDMyQXJyYXkoMTYqdC5sZW5ndGgpLDA9PT1lLmxlbmd0aCl0aGlzLmNhbGN1bGF0ZUludmVyc2VzKCk7ZWxzZSBpZih0Lmxlbmd0aCE9PWUubGVuZ3RoKXtjb25zb2xlLndhcm4oIlRIUkVFLlNrZWxldG9uOiBOdW1iZXIgb2YgaW52ZXJzZSBib25lIG1hdHJpY2VzIGRvZXMgbm90IG1hdGNoIGFtb3VudCBvZiBib25lcy4iKSx0aGlzLmJvbmVJbnZlcnNlcz1bXTtmb3IobGV0IHQ9MCxlPXRoaXMuYm9uZXMubGVuZ3RoO3Q8ZTt0KyspdGhpcy5ib25lSW52ZXJzZXMucHVzaChuZXcgcUh0KX19LGNhbGN1bGF0ZUludmVyc2VzOmZ1bmN0aW9uKCl7dGhpcy5ib25lSW52ZXJzZXMubGVuZ3RoPTA7Zm9yKGxldCB0PTAsZT10aGlzLmJvbmVzLmxlbmd0aDt0PGU7dCsrKXtjb25zdCBlPW5ldyBxSHQ7dGhpcy5ib25lc1t0XSYmZS5jb3B5KHRoaXMuYm9uZXNbdF0ubWF0cml4V29ybGQpLmludmVydCgpLHRoaXMuYm9uZUludmVyc2VzLnB1c2goZSl9fSxwb3NlOmZ1bmN0aW9uKCl7Zm9yKGxldCB0PTAsZT10aGlzLmJvbmVzLmxlbmd0aDt0PGU7dCsrKXtjb25zdCBlPXRoaXMuYm9uZXNbdF07ZSYmZS5tYXRyaXhXb3JsZC5jb3B5KHRoaXMuYm9uZUludmVyc2VzW3RdKS5pbnZlcnQoKX1mb3IobGV0IHQ9MCxlPXRoaXMuYm9uZXMubGVuZ3RoO3Q8ZTt0Kyspe2NvbnN0IGU9dGhpcy5ib25lc1t0XTtlJiYoZS5wYXJlbnQmJmUucGFyZW50LmlzQm9uZT8oZS5tYXRyaXguY29weShlLnBhcmVudC5tYXRyaXhXb3JsZCkuaW52ZXJ0KCksZS5tYXRyaXgubXVsdGlwbHkoZS5tYXRyaXhXb3JsZCkpOmUubWF0cml4LmNvcHkoZS5tYXRyaXhXb3JsZCksZS5tYXRyaXguZGVjb21wb3NlKGUucG9zaXRpb24sZS5xdWF0ZXJuaW9uLGUuc2NhbGUpKX19LHVwZGF0ZTpmdW5jdGlvbigpe2NvbnN0IHQ9dGhpcy5ib25lcyxlPXRoaXMuYm9uZUludmVyc2VzLG49dGhpcy5ib25lTWF0cmljZXMsaT10aGlzLmJvbmVUZXh0dXJlO2ZvcihsZXQgaT0wLHI9dC5sZW5ndGg7aTxyO2krKylPR3QubXVsdGlwbHlNYXRyaWNlcyh0W2ldP3RbaV0ubWF0cml4V29ybGQ6Ukd0LGVbaV0pLE9HdC50b0FycmF5KG4sMTYqaSk7bnVsbCE9PWkmJihpLm5lZWRzVXBkYXRlPSEwKX0sY2xvbmU6ZnVuY3Rpb24oKXtyZXR1cm4gbmV3IHpHdCh0aGlzLmJvbmVzLHRoaXMuYm9uZUludmVyc2VzKX0sZ2V0Qm9uZUJ5TmFtZTpmdW5jdGlvbih0KXtmb3IobGV0IGU9MCxuPXRoaXMuYm9uZXMubGVuZ3RoO2U8bjtlKyspe2NvbnN0IG49dGhpcy5ib25lc1tlXTtpZihuLm5hbWU9PT10KXJldHVybiBufX0sZGlzcG9zZTpmdW5jdGlvbigpe251bGwhPT10aGlzLmJvbmVUZXh0dXJlJiYodGhpcy5ib25lVGV4dHVyZS5kaXNwb3NlKCksdGhpcy5ib25lVGV4dHVyZT1udWxsKX0sZnJvbUpTT046ZnVuY3Rpb24odCxlKXt0aGlzLnV1aWQ9dC51dWlkO2ZvcihsZXQgbj0wLGk9dC5ib25lcy5sZW5ndGg7bjxpO24rKyl7Y29uc3QgaT10LmJvbmVzW25dO2xldCByPWVbaV07dm9pZCAwPT09ciYmKGNvbnNvbGUud2FybigiVEhSRUUuU2tlbGV0b246IE5vIGJvbmUgZm91bmQgd2l0aCBVVUlEOiIsaSkscj1uZXcgTkd0KSx0aGlzLmJvbmVzLnB1c2gociksdGhpcy5ib25lSW52ZXJzZXMucHVzaCgobmV3IHFIdCkuZnJvbUFycmF5KHQuYm9uZUludmVyc2VzW25dKSl9cmV0dXJuIHRoaXMuaW5pdCgpLHRoaXN9LHRvSlNPTjpmdW5jdGlvbigpe2NvbnN0IHQ9e21ldGFkYXRhOnt2ZXJzaW9uOjQuNSx0eXBlOiJTa2VsZXRvbiIsZ2VuZXJhdG9yOiJTa2VsZXRvbi50b0pTT04ifSxib25lczpbXSxib25lSW52ZXJzZXM6W119O3QudXVpZD10aGlzLnV1aWQ7Y29uc3QgZT10aGlzLmJvbmVzLG49dGhpcy5ib25lSW52ZXJzZXM7Zm9yKGxldCBpPTAscj1lLmxlbmd0aDtpPHI7aSsrKXQuYm9uZXMucHVzaChlW2ldLnV1aWQpLHQuYm9uZUludmVyc2VzLnB1c2gobltpXS50b0FycmF5KCkpO3JldHVybiB0fX0pO2NvbnN0IERHdD1uZXcgcUh0LEJHdD1uZXcgcUh0LEhHdD1bXSxGR3Q9bmV3IFBWdDtmdW5jdGlvbiBWR3QodCxlLG4pe1BWdC5jYWxsKHRoaXMsdCxlKSx0aGlzLmluc3RhbmNlTWF0cml4PW5ldyBxRnQobmV3IEZsb2F0MzJBcnJheSgxNipuKSwxNiksdGhpcy5pbnN0YW5jZUNvbG9yPW51bGwsdGhpcy5jb3VudD1uLHRoaXMuZnJ1c3R1bUN1bGxlZD0hMX1mdW5jdGlvbiBqR3QodCl7akZ0LmNhbGwodGhpcyksdGhpcy50eXBlPSJMaW5lQmFzaWNNYXRlcmlhbCIsdGhpcy5jb2xvcj1uZXcgSEZ0KDE2Nzc3MjE1KSx0aGlzLmxpbmV3aWR0aD0xLHRoaXMubGluZWNhcD0icm91bmQiLHRoaXMubGluZWpvaW49InJvdW5kIix0aGlzLm1vcnBoVGFyZ2V0cz0hMSx0aGlzLnNldFZhbHVlcyh0KX1WR3QucHJvdG90eXBlPU9iamVjdC5hc3NpZ24oT2JqZWN0LmNyZWF0ZShQVnQucHJvdG90eXBlKSx7Y29uc3RydWN0b3I6Vkd0LGlzSW5zdGFuY2VkTWVzaDohMCxjb3B5OmZ1bmN0aW9uKHQpe3JldHVybiBQVnQucHJvdG90eXBlLmNvcHkuY2FsbCh0aGlzLHQpLHRoaXMuaW5zdGFuY2VNYXRyaXguY29weSh0Lmluc3RhbmNlTWF0cml4KSxudWxsIT09dC5pbnN0YW5jZUNvbG9yJiYodGhpcy5pbnN0YW5jZUNvbG9yPXQuaW5zdGFuY2VDb2xvci5jbG9uZSgpKSx0aGlzLmNvdW50PXQuY291bnQsdGhpc30sZ2V0Q29sb3JBdDpmdW5jdGlvbih0LGUpe2UuZnJvbUFycmF5KHRoaXMuaW5zdGFuY2VDb2xvci5hcnJheSwzKnQpfSxnZXRNYXRyaXhBdDpmdW5jdGlvbih0LGUpe2UuZnJvbUFycmF5KHRoaXMuaW5zdGFuY2VNYXRyaXguYXJyYXksMTYqdCl9LHJheWNhc3Q6ZnVuY3Rpb24odCxlKXtjb25zdCBuPXRoaXMubWF0cml4V29ybGQsaT10aGlzLmNvdW50O2lmKEZHdC5nZW9tZXRyeT10aGlzLmdlb21ldHJ5LEZHdC5tYXRlcmlhbD10aGlzLm1hdGVyaWFsLHZvaWQgMCE9PUZHdC5tYXRlcmlhbClmb3IobGV0IHI9MDtyPGk7cisrKXt0aGlzLmdldE1hdHJpeEF0KHIsREd0KSxCR3QubXVsdGlwbHlNYXRyaWNlcyhuLERHdCksRkd0Lm1hdHJpeFdvcmxkPUJHdCxGR3QucmF5Y2FzdCh0LEhHdCk7Zm9yKGxldCB0PTAsbj1IR3QubGVuZ3RoO3Q8bjt0Kyspe2NvbnN0IG49SEd0W3RdO24uaW5zdGFuY2VJZD1yLG4ub2JqZWN0PXRoaXMsZS5wdXNoKG4pfUhHdC5sZW5ndGg9MH19LHNldENvbG9yQXQ6ZnVuY3Rpb24odCxlKXtudWxsPT09dGhpcy5pbnN0YW5jZUNvbG9yJiYodGhpcy5pbnN0YW5jZUNvbG9yPW5ldyBxRnQobmV3IEZsb2F0MzJBcnJheSgzKnRoaXMuY291bnQpLDMpKSxlLnRvQXJyYXkodGhpcy5pbnN0YW5jZUNvbG9yLmFycmF5LDMqdCl9LHNldE1hdHJpeEF0OmZ1bmN0aW9uKHQsZSl7ZS50b0FycmF5KHRoaXMuaW5zdGFuY2VNYXRyaXguYXJyYXksMTYqdCl9LHVwZGF0ZU1vcnBoVGFyZ2V0czpmdW5jdGlvbigpe30sZGlzcG9zZTpmdW5jdGlvbigpe3RoaXMuZGlzcGF0Y2hFdmVudCh7dHlwZToiZGlzcG9zZSJ9KX19KSwoakd0LnByb3RvdHlwZT1PYmplY3QuY3JlYXRlKGpGdC5wcm90b3R5cGUpKS5jb25zdHJ1Y3Rvcj1qR3Qsakd0LnByb3RvdHlwZS5pc0xpbmVCYXNpY01hdGVyaWFsPSEwLGpHdC5wcm90b3R5cGUuY29weT1mdW5jdGlvbih0KXtyZXR1cm4gakZ0LnByb3RvdHlwZS5jb3B5LmNhbGwodGhpcyx0KSx0aGlzLmNvbG9yLmNvcHkodC5jb2xvciksdGhpcy5saW5ld2lkdGg9dC5saW5ld2lkdGgsdGhpcy5saW5lY2FwPXQubGluZWNhcCx0aGlzLmxpbmVqb2luPXQubGluZWpvaW4sdGhpcy5tb3JwaFRhcmdldHM9dC5tb3JwaFRhcmdldHMsdGhpc307Y29uc3QgVUd0PW5ldyB5SHQsR0d0PW5ldyB5SHQsV0d0PW5ldyBxSHQscUd0PW5ldyBXSHQsWUd0PW5ldyBESHQ7ZnVuY3Rpb24gWEd0KHQ9bmV3IHBWdCxlPW5ldyBqR3Qpe19GdC5jYWxsKHRoaXMpLHRoaXMudHlwZT0iTGluZSIsdGhpcy5nZW9tZXRyeT10LHRoaXMubWF0ZXJpYWw9ZSx0aGlzLnVwZGF0ZU1vcnBoVGFyZ2V0cygpfVhHdC5wcm90b3R5cGU9T2JqZWN0LmFzc2lnbihPYmplY3QuY3JlYXRlKF9GdC5wcm90b3R5cGUpLHtjb25zdHJ1Y3RvcjpYR3QsaXNMaW5lOiEwLGNvcHk6ZnVuY3Rpb24odCl7cmV0dXJuIF9GdC5wcm90b3R5cGUuY29weS5jYWxsKHRoaXMsdCksdGhpcy5tYXRlcmlhbD10Lm1hdGVyaWFsLHRoaXMuZ2VvbWV0cnk9dC5nZW9tZXRyeSx0aGlzfSxjb21wdXRlTGluZURpc3RhbmNlczpmdW5jdGlvbigpe2NvbnN0IHQ9dGhpcy5nZW9tZXRyeTtpZih0LmlzQnVmZmVyR2VvbWV0cnkpaWYobnVsbD09PXQuaW5kZXgpe2NvbnN0IGU9dC5hdHRyaWJ1dGVzLnBvc2l0aW9uLG49WzBdO2ZvcihsZXQgdD0xLGk9ZS5jb3VudDt0PGk7dCsrKVVHdC5mcm9tQnVmZmVyQXR0cmlidXRlKGUsdC0xKSxHR3QuZnJvbUJ1ZmZlckF0dHJpYnV0ZShlLHQpLG5bdF09blt0LTFdLG5bdF0rPVVHdC5kaXN0YW5jZVRvKEdHdCk7dC5zZXRBdHRyaWJ1dGUoImxpbmVEaXN0YW5jZSIsbmV3IGVWdChuLDEpKX1lbHNlIGNvbnNvbGUud2FybigiVEhSRUUuTGluZS5jb21wdXRlTGluZURpc3RhbmNlcygpOiBDb21wdXRhdGlvbiBvbmx5IHBvc3NpYmxlIHdpdGggbm9uLWluZGV4ZWQgQnVmZmVyR2VvbWV0cnkuIik7ZWxzZSB0LmlzR2VvbWV0cnkmJmNvbnNvbGUuZXJyb3IoIlRIUkVFLkxpbmUuY29tcHV0ZUxpbmVEaXN0YW5jZXMoKSBubyBsb25nZXIgc3VwcG9ydHMgVEhSRUUuR2VvbWV0cnkuIFVzZSBUSFJFRS5CdWZmZXJHZW9tZXRyeSBpbnN0ZWFkLiIpO3JldHVybiB0aGlzfSxyYXljYXN0OmZ1bmN0aW9uKHQsZSl7Y29uc3Qgbj10aGlzLmdlb21ldHJ5LGk9dGhpcy5tYXRyaXhXb3JsZCxyPXQucGFyYW1zLkxpbmUudGhyZXNob2xkO2lmKG51bGw9PT1uLmJvdW5kaW5nU3BoZXJlJiZuLmNvbXB1dGVCb3VuZGluZ1NwaGVyZSgpLFlHdC5jb3B5KG4uYm91bmRpbmdTcGhlcmUpLFlHdC5hcHBseU1hdHJpeDQoaSksWUd0LnJhZGl1cys9ciwhMT09PXQucmF5LmludGVyc2VjdHNTcGhlcmUoWUd0KSlyZXR1cm47V0d0LmNvcHkoaSkuaW52ZXJ0KCkscUd0LmNvcHkodC5yYXkpLmFwcGx5TWF0cml4NChXR3QpO2NvbnN0IG89ci8oKHRoaXMuc2NhbGUueCt0aGlzLnNjYWxlLnkrdGhpcy5zY2FsZS56KS8zKSxhPW8qbyxzPW5ldyB5SHQsbD1uZXcgeUh0LGM9bmV3IHlIdCx1PW5ldyB5SHQsaD10aGlzLmlzTGluZVNlZ21lbnRzPzI6MTtpZihuLmlzQnVmZmVyR2VvbWV0cnkpe2NvbnN0IGk9bi5pbmRleCxyPW4uYXR0cmlidXRlcy5wb3NpdGlvbjtpZihudWxsIT09aSl7Y29uc3Qgbj1pLmFycmF5O2ZvcihsZXQgaT0wLG89bi5sZW5ndGgtMTtpPG87aSs9aCl7Y29uc3Qgbz1uW2krMV07aWYocy5mcm9tQnVmZmVyQXR0cmlidXRlKHIsbltpXSksbC5mcm9tQnVmZmVyQXR0cmlidXRlKHIsbykscUd0LmRpc3RhbmNlU3FUb1NlZ21lbnQocyxsLHUsYyk+YSljb250aW51ZTt1LmFwcGx5TWF0cml4NCh0aGlzLm1hdHJpeFdvcmxkKTtjb25zdCBoPXQucmF5Lm9yaWdpbi5kaXN0YW5jZVRvKHUpO2g8dC5uZWFyfHxoPnQuZmFyfHxlLnB1c2goe2Rpc3RhbmNlOmgscG9pbnQ6Yy5jbG9uZSgpLmFwcGx5TWF0cml4NCh0aGlzLm1hdHJpeFdvcmxkKSxpbmRleDppLGZhY2U6bnVsbCxmYWNlSW5kZXg6bnVsbCxvYmplY3Q6dGhpc30pfX1lbHNlIGZvcihsZXQgbj0wLGk9ci5jb3VudC0xO248aTtuKz1oKXtpZihzLmZyb21CdWZmZXJBdHRyaWJ1dGUocixuKSxsLmZyb21CdWZmZXJBdHRyaWJ1dGUocixuKzEpLHFHdC5kaXN0YW5jZVNxVG9TZWdtZW50KHMsbCx1LGMpPmEpY29udGludWU7dS5hcHBseU1hdHJpeDQodGhpcy5tYXRyaXhXb3JsZCk7Y29uc3QgaT10LnJheS5vcmlnaW4uZGlzdGFuY2VUbyh1KTtpPHQubmVhcnx8aT50LmZhcnx8ZS5wdXNoKHtkaXN0YW5jZTppLHBvaW50OmMuY2xvbmUoKS5hcHBseU1hdHJpeDQodGhpcy5tYXRyaXhXb3JsZCksaW5kZXg6bixmYWNlOm51bGwsZmFjZUluZGV4Om51bGwsb2JqZWN0OnRoaXN9KX19ZWxzZSBuLmlzR2VvbWV0cnkmJmNvbnNvbGUuZXJyb3IoIlRIUkVFLkxpbmUucmF5Y2FzdCgpIG5vIGxvbmdlciBzdXBwb3J0cyBUSFJFRS5HZW9tZXRyeS4gVXNlIFRIUkVFLkJ1ZmZlckdlb21ldHJ5IGluc3RlYWQuIil9LHVwZGF0ZU1vcnBoVGFyZ2V0czpmdW5jdGlvbigpe2NvbnN0IHQ9dGhpcy5nZW9tZXRyeTtpZih0LmlzQnVmZmVyR2VvbWV0cnkpe2NvbnN0IGU9dC5tb3JwaEF0dHJpYnV0ZXMsbj1PYmplY3Qua2V5cyhlKTtpZihuLmxlbmd0aD4wKXtjb25zdCB0PWVbblswXV07aWYodm9pZCAwIT09dCl7dGhpcy5tb3JwaFRhcmdldEluZmx1ZW5jZXM9W10sdGhpcy5tb3JwaFRhcmdldERpY3Rpb25hcnk9e307Zm9yKGxldCBlPTAsbj10Lmxlbmd0aDtlPG47ZSsrKXtjb25zdCBuPXRbZV0ubmFtZXx8U3RyaW5nKGUpO3RoaXMubW9ycGhUYXJnZXRJbmZsdWVuY2VzLnB1c2goMCksdGhpcy5tb3JwaFRhcmdldERpY3Rpb25hcnlbbl09ZX19fX1lbHNle2NvbnN0IGU9dC5tb3JwaFRhcmdldHM7dm9pZCAwIT09ZSYmZS5sZW5ndGg+MCYmY29uc29sZS5lcnJvcigiVEhSRUUuTGluZS51cGRhdGVNb3JwaFRhcmdldHMoKSBkb2VzIG5vdCBzdXBwb3J0IFRIUkVFLkdlb21ldHJ5LiBVc2UgVEhSRUUuQnVmZmVyR2VvbWV0cnkgaW5zdGVhZC4iKX19fSk7Y29uc3QgJEd0PW5ldyB5SHQsS0d0PW5ldyB5SHQ7ZnVuY3Rpb24gWkd0KHQsZSl7WEd0LmNhbGwodGhpcyx0LGUpLHRoaXMudHlwZT0iTGluZVNlZ21lbnRzIn1mdW5jdGlvbiBKR3QodCxlKXtYR3QuY2FsbCh0aGlzLHQsZSksdGhpcy50eXBlPSJMaW5lTG9vcCJ9ZnVuY3Rpb24gUUd0KHQpe2pGdC5jYWxsKHRoaXMpLHRoaXMudHlwZT0iUG9pbnRzTWF0ZXJpYWwiLHRoaXMuY29sb3I9bmV3IEhGdCgxNjc3NzIxNSksdGhpcy5tYXA9bnVsbCx0aGlzLmFscGhhTWFwPW51bGwsdGhpcy5zaXplPTEsdGhpcy5zaXplQXR0ZW51YXRpb249ITAsdGhpcy5tb3JwaFRhcmdldHM9ITEsdGhpcy5zZXRWYWx1ZXModCl9Wkd0LnByb3RvdHlwZT1PYmplY3QuYXNzaWduKE9iamVjdC5jcmVhdGUoWEd0LnByb3RvdHlwZSkse2NvbnN0cnVjdG9yOlpHdCxpc0xpbmVTZWdtZW50czohMCxjb21wdXRlTGluZURpc3RhbmNlczpmdW5jdGlvbigpe2NvbnN0IHQ9dGhpcy5nZW9tZXRyeTtpZih0LmlzQnVmZmVyR2VvbWV0cnkpaWYobnVsbD09PXQuaW5kZXgpe2NvbnN0IGU9dC5hdHRyaWJ1dGVzLnBvc2l0aW9uLG49W107Zm9yKGxldCB0PTAsaT1lLmNvdW50O3Q8aTt0Kz0yKSRHdC5mcm9tQnVmZmVyQXR0cmlidXRlKGUsdCksS0d0LmZyb21CdWZmZXJBdHRyaWJ1dGUoZSx0KzEpLG5bdF09MD09PXQ/MDpuW3QtMV0sblt0KzFdPW5bdF0rJEd0LmRpc3RhbmNlVG8oS0d0KTt0LnNldEF0dHJpYnV0ZSgibGluZURpc3RhbmNlIixuZXcgZVZ0KG4sMSkpfWVsc2UgY29uc29sZS53YXJuKCJUSFJFRS5MaW5lU2VnbWVudHMuY29tcHV0ZUxpbmVEaXN0YW5jZXMoKTogQ29tcHV0YXRpb24gb25seSBwb3NzaWJsZSB3aXRoIG5vbi1pbmRleGVkIEJ1ZmZlckdlb21ldHJ5LiIpO2Vsc2UgdC5pc0dlb21ldHJ5JiZjb25zb2xlLmVycm9yKCJUSFJFRS5MaW5lU2VnbWVudHMuY29tcHV0ZUxpbmVEaXN0YW5jZXMoKSBubyBsb25nZXIgc3VwcG9ydHMgVEhSRUUuR2VvbWV0cnkuIFVzZSBUSFJFRS5CdWZmZXJHZW9tZXRyeSBpbnN0ZWFkLiIpO3JldHVybiB0aGlzfX0pLEpHdC5wcm90b3R5cGU9T2JqZWN0LmFzc2lnbihPYmplY3QuY3JlYXRlKFhHdC5wcm90b3R5cGUpLHtjb25zdHJ1Y3RvcjpKR3QsaXNMaW5lTG9vcDohMH0pLChRR3QucHJvdG90eXBlPU9iamVjdC5jcmVhdGUoakZ0LnByb3RvdHlwZSkpLmNvbnN0cnVjdG9yPVFHdCxRR3QucHJvdG90eXBlLmlzUG9pbnRzTWF0ZXJpYWw9ITAsUUd0LnByb3RvdHlwZS5jb3B5PWZ1bmN0aW9uKHQpe3JldHVybiBqRnQucHJvdG90eXBlLmNvcHkuY2FsbCh0aGlzLHQpLHRoaXMuY29sb3IuY29weSh0LmNvbG9yKSx0aGlzLm1hcD10Lm1hcCx0aGlzLmFscGhhTWFwPXQuYWxwaGFNYXAsdGhpcy5zaXplPXQuc2l6ZSx0aGlzLnNpemVBdHRlbnVhdGlvbj10LnNpemVBdHRlbnVhdGlvbix0aGlzLm1vcnBoVGFyZ2V0cz10Lm1vcnBoVGFyZ2V0cyx0aGlzfTtjb25zdCB0V3Q9bmV3IHFIdCxlV3Q9bmV3IFdIdCxuV3Q9bmV3IERIdCxpV3Q9bmV3IHlIdDtmdW5jdGlvbiByV3QodD1uZXcgcFZ0LGU9bmV3IFFHdCl7X0Z0LmNhbGwodGhpcyksdGhpcy50eXBlPSJQb2ludHMiLHRoaXMuZ2VvbWV0cnk9dCx0aGlzLm1hdGVyaWFsPWUsdGhpcy51cGRhdGVNb3JwaFRhcmdldHMoKX1mdW5jdGlvbiBvV3QodCxlLG4saSxyLG8sYSl7Y29uc3Qgcz1lV3QuZGlzdGFuY2VTcVRvUG9pbnQodCk7aWYoczxuKXtjb25zdCBuPW5ldyB5SHQ7ZVd0LmNsb3Nlc3RQb2ludFRvUG9pbnQodCxuKSxuLmFwcGx5TWF0cml4NChpKTtjb25zdCBsPXIucmF5Lm9yaWdpbi5kaXN0YW5jZVRvKG4pO2lmKGw8ci5uZWFyfHxsPnIuZmFyKXJldHVybjtvLnB1c2goe2Rpc3RhbmNlOmwsZGlzdGFuY2VUb1JheTpNYXRoLnNxcnQocykscG9pbnQ6bixpbmRleDplLGZhY2U6bnVsbCxvYmplY3Q6YX0pfX1mdW5jdGlvbiBhV3QodCxlLG4saSxyLG8sYSxzLGwpe3BIdC5jYWxsKHRoaXMsdCxlLG4saSxyLG8sYSxzLGwpLHRoaXMuZm9ybWF0PXZvaWQgMCE9PWE/YTpFQnQsdGhpcy5taW5GaWx0ZXI9dm9pZCAwIT09bz9vOmdCdCx0aGlzLm1hZ0ZpbHRlcj12b2lkIDAhPT1yP3I6Z0J0LHRoaXMuZ2VuZXJhdGVNaXBtYXBzPSExO2NvbnN0IGM9dGhpczsicmVxdWVzdFZpZGVvRnJhbWVDYWxsYmFjayJpbiB0JiZ0LnJlcXVlc3RWaWRlb0ZyYW1lQ2FsbGJhY2soKGZ1bmN0aW9uIGUoKXtjLm5lZWRzVXBkYXRlPSEwLHQucmVxdWVzdFZpZGVvRnJhbWVDYWxsYmFjayhlKX0pKX1mdW5jdGlvbiBzV3QodCxlLG4saSxyLG8sYSxzLGwsYyx1LGgpe3BIdC5jYWxsKHRoaXMsbnVsbCxvLGEscyxsLGMsaSxyLHUsaCksdGhpcy5pbWFnZT17d2lkdGg6ZSxoZWlnaHQ6bn0sdGhpcy5taXBtYXBzPXQsdGhpcy5mbGlwWT0hMSx0aGlzLmdlbmVyYXRlTWlwbWFwcz0hMX1mdW5jdGlvbiBsV3QodCxlLG4saSxyLG8sYSxzLGwpe3BIdC5jYWxsKHRoaXMsdCxlLG4saSxyLG8sYSxzLGwpLHRoaXMubmVlZHNVcGRhdGU9ITB9ZnVuY3Rpb24gY1d0KHQsZSxuLGkscixvLGEscyxsLGMpe2lmKChjPXZvaWQgMCE9PWM/YzpBQnQpIT09QUJ0JiZjIT09Q0J0KXRocm93IG5ldyBFcnJvcigiRGVwdGhUZXh0dXJlIGZvcm1hdCBtdXN0IGJlIGVpdGhlciBUSFJFRS5EZXB0aEZvcm1hdCBvciBUSFJFRS5EZXB0aFN0ZW5jaWxGb3JtYXQiKTt2b2lkIDA9PT1uJiZjPT09QUJ0JiYobj1iQnQpLHZvaWQgMD09PW4mJmM9PT1DQnQmJihuPU1CdCkscEh0LmNhbGwodGhpcyxudWxsLGkscixvLGEscyxjLG4sbCksdGhpcy5pbWFnZT17d2lkdGg6dCxoZWlnaHQ6ZX0sdGhpcy5tYWdGaWx0ZXI9dm9pZCAwIT09YT9hOnBCdCx0aGlzLm1pbkZpbHRlcj12b2lkIDAhPT1zP3M6cEJ0LHRoaXMuZmxpcFk9ITEsdGhpcy5nZW5lcmF0ZU1pcG1hcHM9ITF9cld0LnByb3RvdHlwZT1PYmplY3QuYXNzaWduKE9iamVjdC5jcmVhdGUoX0Z0LnByb3RvdHlwZSkse2NvbnN0cnVjdG9yOnJXdCxpc1BvaW50czohMCxjb3B5OmZ1bmN0aW9uKHQpe3JldHVybiBfRnQucHJvdG90eXBlLmNvcHkuY2FsbCh0aGlzLHQpLHRoaXMubWF0ZXJpYWw9dC5tYXRlcmlhbCx0aGlzLmdlb21ldHJ5PXQuZ2VvbWV0cnksdGhpc30scmF5Y2FzdDpmdW5jdGlvbih0LGUpe2NvbnN0IG49dGhpcy5nZW9tZXRyeSxpPXRoaXMubWF0cml4V29ybGQscj10LnBhcmFtcy5Qb2ludHMudGhyZXNob2xkO2lmKG51bGw9PT1uLmJvdW5kaW5nU3BoZXJlJiZuLmNvbXB1dGVCb3VuZGluZ1NwaGVyZSgpLG5XdC5jb3B5KG4uYm91bmRpbmdTcGhlcmUpLG5XdC5hcHBseU1hdHJpeDQoaSksbld0LnJhZGl1cys9ciwhMT09PXQucmF5LmludGVyc2VjdHNTcGhlcmUobld0KSlyZXR1cm47dFd0LmNvcHkoaSkuaW52ZXJ0KCksZVd0LmNvcHkodC5yYXkpLmFwcGx5TWF0cml4NCh0V3QpO2NvbnN0IG89ci8oKHRoaXMuc2NhbGUueCt0aGlzLnNjYWxlLnkrdGhpcy5zY2FsZS56KS8zKSxhPW8qbztpZihuLmlzQnVmZmVyR2VvbWV0cnkpe2NvbnN0IHI9bi5pbmRleCxvPW4uYXR0cmlidXRlcy5wb3NpdGlvbjtpZihudWxsIT09cil7Y29uc3Qgbj1yLmFycmF5O2ZvcihsZXQgcj0wLHM9bi5sZW5ndGg7cjxzO3IrKyl7Y29uc3Qgcz1uW3JdO2lXdC5mcm9tQnVmZmVyQXR0cmlidXRlKG8scyksb1d0KGlXdCxzLGEsaSx0LGUsdGhpcyl9fWVsc2UgZm9yKGxldCBuPTAscj1vLmNvdW50O248cjtuKyspaVd0LmZyb21CdWZmZXJBdHRyaWJ1dGUobyxuKSxvV3QoaVd0LG4sYSxpLHQsZSx0aGlzKX1lbHNlIGNvbnNvbGUuZXJyb3IoIlRIUkVFLlBvaW50cy5yYXljYXN0KCkgbm8gbG9uZ2VyIHN1cHBvcnRzIFRIUkVFLkdlb21ldHJ5LiBVc2UgVEhSRUUuQnVmZmVyR2VvbWV0cnkgaW5zdGVhZC4iKX0sdXBkYXRlTW9ycGhUYXJnZXRzOmZ1bmN0aW9uKCl7Y29uc3QgdD10aGlzLmdlb21ldHJ5O2lmKHQuaXNCdWZmZXJHZW9tZXRyeSl7Y29uc3QgZT10Lm1vcnBoQXR0cmlidXRlcyxuPU9iamVjdC5rZXlzKGUpO2lmKG4ubGVuZ3RoPjApe2NvbnN0IHQ9ZVtuWzBdXTtpZih2b2lkIDAhPT10KXt0aGlzLm1vcnBoVGFyZ2V0SW5mbHVlbmNlcz1bXSx0aGlzLm1vcnBoVGFyZ2V0RGljdGlvbmFyeT17fTtmb3IobGV0IGU9MCxuPXQubGVuZ3RoO2U8bjtlKyspe2NvbnN0IG49dFtlXS5uYW1lfHxTdHJpbmcoZSk7dGhpcy5tb3JwaFRhcmdldEluZmx1ZW5jZXMucHVzaCgwKSx0aGlzLm1vcnBoVGFyZ2V0RGljdGlvbmFyeVtuXT1lfX19fWVsc2V7Y29uc3QgZT10Lm1vcnBoVGFyZ2V0czt2b2lkIDAhPT1lJiZlLmxlbmd0aD4wJiZjb25zb2xlLmVycm9yKCJUSFJFRS5Qb2ludHMudXBkYXRlTW9ycGhUYXJnZXRzKCkgZG9lcyBub3Qgc3VwcG9ydCBUSFJFRS5HZW9tZXRyeS4gVXNlIFRIUkVFLkJ1ZmZlckdlb21ldHJ5IGluc3RlYWQuIil9fX0pLGFXdC5wcm90b3R5cGU9T2JqZWN0LmFzc2lnbihPYmplY3QuY3JlYXRlKHBIdC5wcm90b3R5cGUpLHtjb25zdHJ1Y3RvcjphV3QsY2xvbmU6ZnVuY3Rpb24oKXtyZXR1cm4gbmV3IHRoaXMuY29uc3RydWN0b3IodGhpcy5pbWFnZSkuY29weSh0aGlzKX0saXNWaWRlb1RleHR1cmU6ITAsdXBkYXRlOmZ1bmN0aW9uKCl7Y29uc3QgdD10aGlzLmltYWdlOzA9PSJyZXF1ZXN0VmlkZW9GcmFtZUNhbGxiYWNrImluIHQmJnQucmVhZHlTdGF0ZT49dC5IQVZFX0NVUlJFTlRfREFUQSYmKHRoaXMubmVlZHNVcGRhdGU9ITApfX0pLChzV3QucHJvdG90eXBlPU9iamVjdC5jcmVhdGUocEh0LnByb3RvdHlwZSkpLmNvbnN0cnVjdG9yPXNXdCxzV3QucHJvdG90eXBlLmlzQ29tcHJlc3NlZFRleHR1cmU9ITAsKGxXdC5wcm90b3R5cGU9T2JqZWN0LmNyZWF0ZShwSHQucHJvdG90eXBlKSkuY29uc3RydWN0b3I9bFd0LGxXdC5wcm90b3R5cGUuaXNDYW52YXNUZXh0dXJlPSEwLChjV3QucHJvdG90eXBlPU9iamVjdC5jcmVhdGUocEh0LnByb3RvdHlwZSkpLmNvbnN0cnVjdG9yPWNXdCxjV3QucHJvdG90eXBlLmlzRGVwdGhUZXh0dXJlPSEwO2NsYXNzIHVXdCBleHRlbmRzIHBWdHtjb25zdHJ1Y3Rvcih0PTEsZT04LG49MCxpPTIqTWF0aC5QSSl7c3VwZXIoKSx0aGlzLnR5cGU9IkNpcmNsZUdlb21ldHJ5Iix0aGlzLnBhcmFtZXRlcnM9e3JhZGl1czp0LHNlZ21lbnRzOmUsdGhldGFTdGFydDpuLHRoZXRhTGVuZ3RoOml9LGU9TWF0aC5tYXgoMyxlKTtjb25zdCByPVtdLG89W10sYT1bXSxzPVtdLGw9bmV3IHlIdCxjPW5ldyBsSHQ7by5wdXNoKDAsMCwwKSxhLnB1c2goMCwwLDEpLHMucHVzaCguNSwuNSk7Zm9yKGxldCByPTAsdT0zO3I8PWU7cisrLHUrPTMpe2NvbnN0IGg9bityL2UqaTtsLng9dCpNYXRoLmNvcyhoKSxsLnk9dCpNYXRoLnNpbihoKSxvLnB1c2gobC54LGwueSxsLnopLGEucHVzaCgwLDAsMSksYy54PShvW3VdL3QrMSkvMixjLnk9KG9bdSsxXS90KzEpLzIscy5wdXNoKGMueCxjLnkpfWZvcihsZXQgdD0xO3Q8PWU7dCsrKXIucHVzaCh0LHQrMSwwKTt0aGlzLnNldEluZGV4KHIpLHRoaXMuc2V0QXR0cmlidXRlKCJwb3NpdGlvbiIsbmV3IGVWdChvLDMpKSx0aGlzLnNldEF0dHJpYnV0ZSgibm9ybWFsIixuZXcgZVZ0KGEsMykpLHRoaXMuc2V0QXR0cmlidXRlKCJ1diIsbmV3IGVWdChzLDIpKX19Y2xhc3MgaFd0IGV4dGVuZHMgcFZ0e2NvbnN0cnVjdG9yKHQ9MSxlPTEsbj0xLGk9OCxyPTEsbz0hMSxhPTAscz0yKk1hdGguUEkpe3N1cGVyKCksdGhpcy50eXBlPSJDeWxpbmRlckdlb21ldHJ5Iix0aGlzLnBhcmFtZXRlcnM9e3JhZGl1c1RvcDp0LHJhZGl1c0JvdHRvbTplLGhlaWdodDpuLHJhZGlhbFNlZ21lbnRzOmksaGVpZ2h0U2VnbWVudHM6cixvcGVuRW5kZWQ6byx0aGV0YVN0YXJ0OmEsdGhldGFMZW5ndGg6c307Y29uc3QgbD10aGlzO2k9TWF0aC5mbG9vcihpKSxyPU1hdGguZmxvb3Iocik7Y29uc3QgYz1bXSx1PVtdLGg9W10sZD1bXTtsZXQgcD0wO2NvbnN0IGY9W10sbT1uLzI7bGV0IGc9MDtmdW5jdGlvbiBfKG4pe2NvbnN0IHI9cCxvPW5ldyBsSHQsZj1uZXcgeUh0O2xldCBfPTA7Y29uc3QgeT0hMD09PW4/dDplLHY9ITA9PT1uPzE6LTE7Zm9yKGxldCB0PTE7dDw9aTt0KyspdS5wdXNoKDAsbSp2LDApLGgucHVzaCgwLHYsMCksZC5wdXNoKC41LC41KSxwKys7Y29uc3QgYj1wO2ZvcihsZXQgdD0wO3Q8PWk7dCsrKXtjb25zdCBlPXQvaSpzK2Esbj1NYXRoLmNvcyhlKSxyPU1hdGguc2luKGUpO2YueD15KnIsZi55PW0qdixmLno9eSpuLHUucHVzaChmLngsZi55LGYueiksaC5wdXNoKDAsdiwwKSxvLng9LjUqbisuNSxvLnk9LjUqcip2Ky41LGQucHVzaChvLngsby55KSxwKyt9Zm9yKGxldCB0PTA7dDxpO3QrKyl7Y29uc3QgZT1yK3QsaT1iK3Q7ITA9PT1uP2MucHVzaChpLGkrMSxlKTpjLnB1c2goaSsxLGksZSksXys9M31sLmFkZEdyb3VwKGcsXywhMD09PW4/MToyKSxnKz1ffSEoZnVuY3Rpb24geSgpe2NvbnN0IG89bmV3IHlIdCxfPW5ldyB5SHQ7bGV0IHk9MDtjb25zdCB2PShlLXQpL247Zm9yKGxldCBsPTA7bDw9cjtsKyspe2NvbnN0IGM9W10sZz1sL3IseT1nKihlLXQpK3Q7Zm9yKGxldCB0PTA7dDw9aTt0Kyspe2NvbnN0IGU9dC9pLHI9ZSpzK2EsbD1NYXRoLnNpbihyKSxmPU1hdGguY29zKHIpO18ueD15KmwsXy55PS1nKm4rbSxfLno9eSpmLHUucHVzaChfLngsXy55LF8ueiksby5zZXQobCx2LGYpLm5vcm1hbGl6ZSgpLGgucHVzaChvLngsby55LG8ueiksZC5wdXNoKGUsMS1nKSxjLnB1c2gocCsrKX1mLnB1c2goYyl9Zm9yKGxldCB0PTA7dDxpO3QrKylmb3IobGV0IGU9MDtlPHI7ZSsrKXtjb25zdCBuPWZbZSsxXVt0XSxpPWZbZSsxXVt0KzFdLHI9ZltlXVt0KzFdO2MucHVzaChmW2VdW3RdLG4sciksYy5wdXNoKG4saSxyKSx5Kz02fWwuYWRkR3JvdXAoZyx5LDApLGcrPXl9KSgpLCExPT09byYmKHQ+MCYmXyghMCksZT4wJiZfKCExKSksdGhpcy5zZXRJbmRleChjKSx0aGlzLnNldEF0dHJpYnV0ZSgicG9zaXRpb24iLG5ldyBlVnQodSwzKSksdGhpcy5zZXRBdHRyaWJ1dGUoIm5vcm1hbCIsbmV3IGVWdChoLDMpKSx0aGlzLnNldEF0dHJpYnV0ZSgidXYiLG5ldyBlVnQoZCwyKSl9fWNsYXNzIGRXdCBleHRlbmRzIGhXdHtjb25zdHJ1Y3Rvcih0PTEsZT0xLG49OCxpPTEscj0hMSxvPTAsYT0yKk1hdGguUEkpe3N1cGVyKDAsdCxlLG4saSxyLG8sYSksdGhpcy50eXBlPSJDb25lR2VvbWV0cnkiLHRoaXMucGFyYW1ldGVycz17cmFkaXVzOnQsaGVpZ2h0OmUscmFkaWFsU2VnbWVudHM6bixoZWlnaHRTZWdtZW50czppLG9wZW5FbmRlZDpyLHRoZXRhU3RhcnQ6byx0aGV0YUxlbmd0aDphfX19Y2xhc3MgcFd0IGV4dGVuZHMgcFZ0e2NvbnN0cnVjdG9yKHQsZSxuPTEsaT0wKXtzdXBlcigpLHRoaXMudHlwZT0iUG9seWhlZHJvbkdlb21ldHJ5Iix0aGlzLnBhcmFtZXRlcnM9e3ZlcnRpY2VzOnQsaW5kaWNlczplLHJhZGl1czpuLGRldGFpbDppfTtjb25zdCByPVtdLG89W107ZnVuY3Rpb24gYSh0LGUsbixpKXtjb25zdCByPWkrMSxvPVtdO2ZvcihsZXQgaT0wO2k8PXI7aSsrKXtvW2ldPVtdO2NvbnN0IGE9dC5jbG9uZSgpLmxlcnAobixpL3IpLHM9ZS5jbG9uZSgpLmxlcnAobixpL3IpLGw9ci1pO2ZvcihsZXQgdD0wO3Q8PWw7dCsrKW9baV1bdF09MD09PXQmJmk9PT1yP2E6YS5jbG9uZSgpLmxlcnAocyx0L2wpfWZvcihsZXQgdD0wO3Q8cjt0KyspZm9yKGxldCBlPTA7ZTwyKihyLXQpLTE7ZSsrKXtjb25zdCBuPU1hdGguZmxvb3IoZS8yKTtlJTI9PTA/KHMob1t0XVtuKzFdKSxzKG9bdCsxXVtuXSkscyhvW3RdW25dKSk6KHMob1t0XVtuKzFdKSxzKG9bdCsxXVtuKzFdKSxzKG9bdCsxXVtuXSkpfX1mdW5jdGlvbiBzKHQpe3IucHVzaCh0LngsdC55LHQueil9ZnVuY3Rpb24gbChlLG4pe2NvbnN0IGk9MyplO24ueD10W2krMF0sbi55PXRbaSsxXSxuLno9dFtpKzJdfWZ1bmN0aW9uIGModCxlLG4saSl7aTwwJiYxPT09dC54JiYob1tlXT10LngtMSksMD09PW4ueCYmMD09PW4ueiYmKG9bZV09aS8yL01hdGguUEkrLjUpfWZ1bmN0aW9uIHUodCl7cmV0dXJuIE1hdGguYXRhbjIodC56LC10LngpfSEoZnVuY3Rpb24gaCh0KXtjb25zdCBuPW5ldyB5SHQsaT1uZXcgeUh0LHI9bmV3IHlIdDtmb3IobGV0IG89MDtvPGUubGVuZ3RoO28rPTMpbChlW28rMF0sbiksbChlW28rMV0saSksbChlW28rMl0sciksYShuLGkscix0KX0pKGkpLChmdW5jdGlvbiBkKHQpe2NvbnN0IGU9bmV3IHlIdDtmb3IobGV0IG49MDtuPHIubGVuZ3RoO24rPTMpZS54PXJbbiswXSxlLnk9cltuKzFdLGUuej1yW24rMl0sZS5ub3JtYWxpemUoKS5tdWx0aXBseVNjYWxhcih0KSxyW24rMF09ZS54LHJbbisxXT1lLnkscltuKzJdPWUuen0pKG4pLChmdW5jdGlvbiBwKCl7Y29uc3QgdD1uZXcgeUh0O2ZvcihsZXQgbj0wO248ci5sZW5ndGg7bis9Myl7dC54PXJbbiswXSx0Lnk9cltuKzFdLHQuej1yW24rMl07Y29uc3QgaT11KHQpLzIvTWF0aC5QSSsuNSxhPShlPXQsTWF0aC5hdGFuMigtZS55LE1hdGguc3FydChlLngqZS54K2UueiplLnopKS9NYXRoLlBJKy41KTtvLnB1c2goaSwxLWEpfXZhciBlOyhmdW5jdGlvbiBuKCl7Y29uc3QgdD1uZXcgeUh0LGU9bmV3IHlIdCxuPW5ldyB5SHQsaT1uZXcgeUh0LGE9bmV3IGxIdCxzPW5ldyBsSHQsbD1uZXcgbEh0O2ZvcihsZXQgaD0wLGQ9MDtoPHIubGVuZ3RoO2grPTksZCs9Nil7dC5zZXQocltoKzBdLHJbaCsxXSxyW2grMl0pLGUuc2V0KHJbaCszXSxyW2grNF0scltoKzVdKSxuLnNldChyW2grNl0scltoKzddLHJbaCs4XSksYS5zZXQob1tkKzBdLG9bZCsxXSkscy5zZXQob1tkKzJdLG9bZCszXSksbC5zZXQob1tkKzRdLG9bZCs1XSksaS5jb3B5KHQpLmFkZChlKS5hZGQobikuZGl2aWRlU2NhbGFyKDMpO2NvbnN0IHA9dShpKTtjKGEsZCswLHQscCksYyhzLGQrMixlLHApLGMobCxkKzQsbixwKX19KSgpLChmdW5jdGlvbiBpKCl7Zm9yKGxldCB0PTA7dDxvLmxlbmd0aDt0Kz02KXtjb25zdCBlPW9bdCswXSxuPW9bdCsyXSxpPW9bdCs0XSxyPU1hdGgubWF4KGUsbixpKSxhPU1hdGgubWluKGUsbixpKTtyPi45JiZhPC4xJiYoZTwuMiYmKG9bdCswXSs9MSksbjwuMiYmKG9bdCsyXSs9MSksaTwuMiYmKG9bdCs0XSs9MSkpfX0pKCl9KSgpLHRoaXMuc2V0QXR0cmlidXRlKCJwb3NpdGlvbiIsbmV3IGVWdChyLDMpKSx0aGlzLnNldEF0dHJpYnV0ZSgibm9ybWFsIixuZXcgZVZ0KHIuc2xpY2UoKSwzKSksdGhpcy5zZXRBdHRyaWJ1dGUoInV2IixuZXcgZVZ0KG8sMikpLDA9PT1pP3RoaXMuY29tcHV0ZVZlcnRleE5vcm1hbHMoKTp0aGlzLm5vcm1hbGl6ZU5vcm1hbHMoKX19Y2xhc3MgZld0IGV4dGVuZHMgcFd0e2NvbnN0cnVjdG9yKHQ9MSxlPTApe2NvbnN0IG49KDErTWF0aC5zcXJ0KDUpKS8yLGk9MS9uO3N1cGVyKFstMSwtMSwtMSwtMSwtMSwxLC0xLDEsLTEsLTEsMSwxLDEsLTEsLTEsMSwtMSwxLDEsMSwtMSwxLDEsMSwwLC1pLC1uLDAsLWksbiwwLGksLW4sMCxpLG4sLWksLW4sMCwtaSxuLDAsaSwtbiwwLGksbiwwLC1uLDAsLWksbiwwLC1pLC1uLDAsaSxuLDAsaV0sWzMsMTEsNywzLDcsMTUsMywxNSwxMyw3LDE5LDE3LDcsMTcsNiw3LDYsMTUsMTcsNCw4LDE3LDgsMTAsMTcsMTAsNiw4LDAsMTYsOCwxNiwyLDgsMiwxMCwwLDEyLDEsMCwxLDE4LDAsMTgsMTYsNiwxMCwyLDYsMiwxMyw2LDEzLDE1LDIsMTYsMTgsMiwxOCwzLDIsMywxMywxOCwxLDksMTgsOSwxMSwxOCwxMSwzLDQsMTQsMTIsNCwxMiwwLDQsMCw4LDExLDksNSwxMSw1LDE5LDExLDE5LDcsMTksNSwxNCwxOSwxNCw0LDE5LDQsMTcsMSwxMiwxNCwxLDE0LDUsMSw1LDldLHQsZSksdGhpcy50eXBlPSJEb2RlY2FoZWRyb25HZW9tZXRyeSIsdGhpcy5wYXJhbWV0ZXJzPXtyYWRpdXM6dCxkZXRhaWw6ZX19fWNvbnN0IG1XdD1uZXcgeUh0LGdXdD1uZXcgeUh0LF9XdD1uZXcgeUh0LHlXdD1uZXcgSUZ0O2NsYXNzIHZXdCBleHRlbmRzIHBWdHtjb25zdHJ1Y3Rvcih0LGUpe2lmKHN1cGVyKCksdGhpcy50eXBlPSJFZGdlc0dlb21ldHJ5Iix0aGlzLnBhcmFtZXRlcnM9e3RocmVzaG9sZEFuZ2xlOmV9LGU9dm9pZCAwIT09ZT9lOjEsITA9PT10LmlzR2VvbWV0cnkpcmV0dXJuIHZvaWQgY29uc29sZS5lcnJvcigiVEhSRUUuRWRnZXNHZW9tZXRyeSBubyBsb25nZXIgc3VwcG9ydHMgVEhSRUUuR2VvbWV0cnkuIFVzZSBUSFJFRS5CdWZmZXJHZW9tZXRyeSBpbnN0ZWFkLiIpO2NvbnN0IG49TWF0aC5wb3coMTAsNCksaT1NYXRoLmNvcyhzSHQuREVHMlJBRCplKSxyPXQuZ2V0SW5kZXgoKSxvPXQuZ2V0QXR0cmlidXRlKCJwb3NpdGlvbiIpLGE9cj9yLmNvdW50Om8uY291bnQscz1bMCwwLDBdLGw9WyJhIiwiYiIsImMiXSxjPW5ldyBBcnJheSgzKSx1PXt9LGg9W107Zm9yKGxldCB0PTA7dDxhO3QrPTMpe3I/KHNbMF09ci5nZXRYKHQpLHNbMV09ci5nZXRYKHQrMSksc1syXT1yLmdldFgodCsyKSk6KHNbMF09dCxzWzFdPXQrMSxzWzJdPXQrMik7Y29uc3R7YTplLGI6YSxjOmR9PXlXdDtpZihlLmZyb21CdWZmZXJBdHRyaWJ1dGUobyxzWzBdKSxhLmZyb21CdWZmZXJBdHRyaWJ1dGUobyxzWzFdKSxkLmZyb21CdWZmZXJBdHRyaWJ1dGUobyxzWzJdKSx5V3QuZ2V0Tm9ybWFsKF9XdCksY1swXT1gJHtNYXRoLnJvdW5kKGUueCpuKX0sJHtNYXRoLnJvdW5kKGUueSpuKX0sJHtNYXRoLnJvdW5kKGUueipuKX1gLGNbMV09YCR7TWF0aC5yb3VuZChhLngqbil9LCR7TWF0aC5yb3VuZChhLnkqbil9LCR7TWF0aC5yb3VuZChhLnoqbil9YCxjWzJdPWAke01hdGgucm91bmQoZC54Km4pfSwke01hdGgucm91bmQoZC55Km4pfSwke01hdGgucm91bmQoZC56Km4pfWAsY1swXSE9PWNbMV0mJmNbMV0hPT1jWzJdJiZjWzJdIT09Y1swXSlmb3IobGV0IHQ9MDt0PDM7dCsrKXtjb25zdCBlPSh0KzEpJTMsbj1jW3RdLHI9Y1tlXSxvPXlXdFtsW3RdXSxhPXlXdFtsW2VdXSxkPWAke259XyR7cn1gLHA9YCR7cn1fJHtufWA7cCBpbiB1JiZ1W3BdPyhfV3QuZG90KHVbcF0ubm9ybWFsKTw9aSYmKGgucHVzaChvLngsby55LG8ueiksaC5wdXNoKGEueCxhLnksYS56KSksdVtwXT1udWxsKTpkIGluIHV8fCh1W2RdPXtpbmRleDA6c1t0XSxpbmRleDE6c1tlXSxub3JtYWw6X1d0LmNsb25lKCl9KX19Zm9yKGNvbnN0IHQgaW4gdSlpZih1W3RdKXtjb25zdHtpbmRleDA6ZSxpbmRleDE6bn09dVt0XTttV3QuZnJvbUJ1ZmZlckF0dHJpYnV0ZShvLGUpLGdXdC5mcm9tQnVmZmVyQXR0cmlidXRlKG8sbiksaC5wdXNoKG1XdC54LG1XdC55LG1XdC56KSxoLnB1c2goZ1d0LngsZ1d0LnksZ1d0LnopfXRoaXMuc2V0QXR0cmlidXRlKCJwb3NpdGlvbiIsbmV3IGVWdChoLDMpKX19ZnVuY3Rpb24gYld0KHQsZSxuLGkscil7bGV0IG8sYTtpZihyPT09KGZ1bmN0aW9uIHModCxlLG4saSl7bGV0IHI9MDtmb3IobGV0IG89ZSxhPW4taTtvPG47bys9aSlyKz0odFthXS10W29dKSoodFtvKzFdK3RbYSsxXSksYT1vO3JldHVybiByfSkodCxlLG4saSk+MClmb3Iobz1lO288bjtvKz1pKWE9Vld0KG8sdFtvXSx0W28rMV0sYSk7ZWxzZSBmb3Iobz1uLWk7bz49ZTtvLT1pKWE9Vld0KG8sdFtvXSx0W28rMV0sYSk7cmV0dXJuIGEmJlJXdChhLGEubmV4dCkmJihqV3QoYSksYT1hLm5leHQpLGF9ZnVuY3Rpb24geFd0KHQsZSl7aWYoIXQpcmV0dXJuIHQ7ZXx8KGU9dCk7bGV0IG4saT10O2Rve2lmKG49ITEsaS5zdGVpbmVyfHwhUld0KGksaS5uZXh0KSYmMCE9PU9XdChpLnByZXYsaSxpLm5leHQpKWk9aS5uZXh0O2Vsc2V7aWYoald0KGkpLGk9ZT1pLnByZXYsaT09PWkubmV4dClicmVhaztuPSEwfX13aGlsZShufHxpIT09ZSk7cmV0dXJuIGV9ZnVuY3Rpb24gd1d0KHQsZSxuLGkscixvLGEpe2lmKCF0KXJldHVybjshYSYmbyYmKGZ1bmN0aW9uIHModCxlLG4saSl7bGV0IHI9dDtkb3tudWxsPT09ci56JiYoci56PUxXdChyLngsci55LGUsbixpKSksci5wcmV2Wj1yLnByZXYsci5uZXh0Wj1yLm5leHQscj1yLm5leHR9d2hpbGUociE9PXQpO3IucHJldloubmV4dFo9bnVsbCxyLnByZXZaPW51bGwsKGZ1bmN0aW9uIG8odCl7bGV0IGUsbixpLHIsbyxhLHMsbCxjPTE7ZG97Zm9yKG49dCx0PW51bGwsbz1udWxsLGE9MDtuOyl7Zm9yKGErKyxpPW4scz0wLGU9MDtlPGMmJihzKyssaT1pLm5leHRaLGkpO2UrKyk7Zm9yKGw9YztzPjB8fGw+MCYmaTspMCE9PXMmJigwPT09bHx8IWl8fG4uejw9aS56KT8ocj1uLG49bi5uZXh0WixzLS0pOihyPWksaT1pLm5leHRaLGwtLSksbz9vLm5leHRaPXI6dD1yLHIucHJldlo9byxvPXI7bj1pfW8ubmV4dFo9bnVsbCxjKj0yfXdoaWxlKGE+MSl9KShyKX0pKHQsaSxyLG8pO2xldCBsLGMsdT10O2Zvcig7dC5wcmV2IT09dC5uZXh0OylpZihsPXQucHJldixjPXQubmV4dCxvP01XdCh0LGkscixvKTpTV3QodCkpZS5wdXNoKGwuaS9uKSxlLnB1c2godC5pL24pLGUucHVzaChjLmkvbiksald0KHQpLHQ9Yy5uZXh0LHU9Yy5uZXh0O2Vsc2UgaWYoKHQ9Yyk9PT11KXthPzE9PT1hP3dXdCh0PUVXdCh4V3QodCksZSxuKSxlLG4saSxyLG8sMik6Mj09PWEmJlRXdCh0LGUsbixpLHIsbyk6d1d0KHhXdCh0KSxlLG4saSxyLG8sMSk7YnJlYWt9fWZ1bmN0aW9uIFNXdCh0KXtjb25zdCBlPXQucHJldixuPXQsaT10Lm5leHQ7aWYoT1d0KGUsbixpKT49MClyZXR1cm4hMTtsZXQgcj10Lm5leHQubmV4dDtmb3IoO3IhPT10LnByZXY7KXtpZihJV3QoZS54LGUueSxuLngsbi55LGkueCxpLnksci54LHIueSkmJk9XdChyLnByZXYscixyLm5leHQpPj0wKXJldHVybiExO3I9ci5uZXh0fXJldHVybiEwfWZ1bmN0aW9uIE1XdCh0LGUsbixpKXtjb25zdCByPXQucHJldixvPXQsYT10Lm5leHQ7aWYoT1d0KHIsbyxhKT49MClyZXR1cm4hMTtjb25zdCBzPXIueD5vLng/ci54PmEueD9yLng6YS54Om8ueD5hLng/by54OmEueCxsPXIueT5vLnk/ci55PmEueT9yLnk6YS55Om8ueT5hLnk/by55OmEueSxjPUxXdChyLng8by54P3IueDxhLng/ci54OmEueDpvLng8YS54P28ueDphLngsci55PG8ueT9yLnk8YS55P3IueTphLnk6by55PGEueT9vLnk6YS55LGUsbixpKSx1PUxXdChzLGwsZSxuLGkpO2xldCBoPXQucHJldlosZD10Lm5leHRaO2Zvcig7aCYmaC56Pj1jJiZkJiZkLno8PXU7KXtpZihoIT09dC5wcmV2JiZoIT09dC5uZXh0JiZJV3Qoci54LHIueSxvLngsby55LGEueCxhLnksaC54LGgueSkmJk9XdChoLnByZXYsaCxoLm5leHQpPj0wKXJldHVybiExO2lmKGg9aC5wcmV2WixkIT09dC5wcmV2JiZkIT09dC5uZXh0JiZJV3Qoci54LHIueSxvLngsby55LGEueCxhLnksZC54LGQueSkmJk9XdChkLnByZXYsZCxkLm5leHQpPj0wKXJldHVybiExO2Q9ZC5uZXh0Wn1mb3IoO2gmJmguej49Yzspe2lmKGghPT10LnByZXYmJmghPT10Lm5leHQmJklXdChyLngsci55LG8ueCxvLnksYS54LGEueSxoLngsaC55KSYmT1d0KGgucHJldixoLGgubmV4dCk+PTApcmV0dXJuITE7aD1oLnByZXZafWZvcig7ZCYmZC56PD11Oyl7aWYoZCE9PXQucHJldiYmZCE9PXQubmV4dCYmSVd0KHIueCxyLnksby54LG8ueSxhLngsYS55LGQueCxkLnkpJiZPV3QoZC5wcmV2LGQsZC5uZXh0KT49MClyZXR1cm4hMTtkPWQubmV4dFp9cmV0dXJuITB9ZnVuY3Rpb24gRVd0KHQsZSxuKXtsZXQgaT10O2Rve2NvbnN0IHI9aS5wcmV2LG89aS5uZXh0Lm5leHQ7IVJXdChyLG8pJiZ6V3QocixpLGkubmV4dCxvKSYmSFd0KHIsbykmJkhXdChvLHIpJiYoZS5wdXNoKHIuaS9uKSxlLnB1c2goaS5pL24pLGUucHVzaChvLmkvbiksald0KGkpLGpXdChpLm5leHQpLGk9dD1vKSxpPWkubmV4dH13aGlsZShpIT09dCk7cmV0dXJuIHhXdChpKX1mdW5jdGlvbiBUV3QodCxlLG4saSxyLG8pe2xldCBhPXQ7ZG97bGV0IHQ9YS5uZXh0Lm5leHQ7Zm9yKDt0IT09YS5wcmV2Oyl7aWYoYS5pIT09dC5pJiZOV3QoYSx0KSl7bGV0IHM9Rld0KGEsdCk7cmV0dXJuIGE9eFd0KGEsYS5uZXh0KSxzPXhXdChzLHMubmV4dCksd1d0KGEsZSxuLGkscixvKSx2b2lkIHdXdChzLGUsbixpLHIsbyl9dD10Lm5leHR9YT1hLm5leHR9d2hpbGUoYSE9PXQpfWZ1bmN0aW9uIEFXdCh0LGUpe3JldHVybiB0LngtZS54fWZ1bmN0aW9uIENXdCh0LGUpe2lmKGU9KGZ1bmN0aW9uIG4odCxlKXtsZXQgbj1lO2NvbnN0IGk9dC54LHI9dC55O2xldCBvLGE9LTEvMDtkb3tpZihyPD1uLnkmJnI+PW4ubmV4dC55JiZuLm5leHQueSE9PW4ueSl7Y29uc3QgdD1uLngrKHItbi55KSoobi5uZXh0Lngtbi54KS8obi5uZXh0Lnktbi55KTtpZih0PD1pJiZ0PmEpe2lmKGE9dCx0PT09aSl7aWYocj09PW4ueSlyZXR1cm4gbjtpZihyPT09bi5uZXh0LnkpcmV0dXJuIG4ubmV4dH1vPW4ueDxuLm5leHQueD9uOm4ubmV4dH19bj1uLm5leHR9d2hpbGUobiE9PWUpO2lmKCFvKXJldHVybiBudWxsO2lmKGk9PT1hKXJldHVybiBvO2NvbnN0IHM9byxsPW8ueCxjPW8ueTtsZXQgdSxoPTEvMDtuPW87ZG97aT49bi54JiZuLng+PWwmJmkhPT1uLngmJklXdChyPGM/aTphLHIsbCxjLHI8Yz9hOmkscixuLngsbi55KSYmKHU9TWF0aC5hYnMoci1uLnkpLyhpLW4ueCksSFd0KG4sdCkmJih1PGh8fHU9PT1oJiYobi54Pm8ueHx8bi54PT09by54JiZrV3QobyxuKSkpJiYobz1uLGg9dSkpLG49bi5uZXh0fXdoaWxlKG4hPT1zKTtyZXR1cm4gb30pKHQsZSkpe2NvbnN0IG49Rld0KGUsdCk7eFd0KGUsZS5uZXh0KSx4V3QobixuLm5leHQpfX1mdW5jdGlvbiBrV3QodCxlKXtyZXR1cm4gT1d0KHQucHJldix0LGUucHJldik8MCYmT1d0KGUubmV4dCx0LHQubmV4dCk8MH1mdW5jdGlvbiBMV3QodCxlLG4saSxyKXtyZXR1cm4odD0xNDMxNjU1NzY1JigodD04NTg5OTM0NTkmKCh0PTI1MjY0NTEzNSYoKHQ9MTY3MTE5MzUmKCh0PTMyNzY3Kih0LW4pKnIpfHQ8PDgpKXx0PDw0KSl8dDw8MikpfHQ8PDEpKXwoZT0xNDMxNjU1NzY1JigoZT04NTg5OTM0NTkmKChlPTI1MjY0NTEzNSYoKGU9MTY3MTE5MzUmKChlPTMyNzY3KihlLWkpKnIpfGU8PDgpKXxlPDw0KSl8ZTw8MikpfGU8PDEpKTw8MX1mdW5jdGlvbiBQV3QodCl7bGV0IGU9dCxuPXQ7ZG97KGUueDxuLnh8fGUueD09PW4ueCYmZS55PG4ueSkmJihuPWUpLGU9ZS5uZXh0fXdoaWxlKGUhPT10KTtyZXR1cm4gbn1mdW5jdGlvbiBJV3QodCxlLG4saSxyLG8sYSxzKXtyZXR1cm4oci1hKSooZS1zKS0odC1hKSooby1zKT49MCYmKHQtYSkqKGktcyktKG4tYSkqKGUtcyk+PTAmJihuLWEpKihvLXMpLShyLWEpKihpLXMpPj0wfWZ1bmN0aW9uIE5XdCh0LGUpe3JldHVybiB0Lm5leHQuaSE9PWUuaSYmdC5wcmV2LmkhPT1lLmkmJiEoZnVuY3Rpb24gbih0LGUpe2xldCBuPXQ7ZG97aWYobi5pIT09dC5pJiZuLm5leHQuaSE9PXQuaSYmbi5pIT09ZS5pJiZuLm5leHQuaSE9PWUuaSYmeld0KG4sbi5uZXh0LHQsZSkpcmV0dXJuITA7bj1uLm5leHR9d2hpbGUobiE9PXQpO3JldHVybiExfSkodCxlKSYmKEhXdCh0LGUpJiZIV3QoZSx0KSYmKGZ1bmN0aW9uIGkodCxlKXtsZXQgbj10LGk9ITE7Y29uc3Qgcj0odC54K2UueCkvMixvPSh0LnkrZS55KS8yO2Rve24ueT5vIT1uLm5leHQueT5vJiZuLm5leHQueSE9PW4ueSYmcjwobi5uZXh0Lngtbi54KSooby1uLnkpLyhuLm5leHQueS1uLnkpK24ueCYmKGk9IWkpLG49bi5uZXh0fXdoaWxlKG4hPT10KTtyZXR1cm4gaX0pKHQsZSkmJihPV3QodC5wcmV2LHQsZS5wcmV2KXx8T1d0KHQsZS5wcmV2LGUpKXx8Uld0KHQsZSkmJk9XdCh0LnByZXYsdCx0Lm5leHQpPjAmJk9XdChlLnByZXYsZSxlLm5leHQpPjApfWZ1bmN0aW9uIE9XdCh0LGUsbil7cmV0dXJuKGUueS10LnkpKihuLngtZS54KS0oZS54LXQueCkqKG4ueS1lLnkpfWZ1bmN0aW9uIFJXdCh0LGUpe3JldHVybiB0Lng9PT1lLngmJnQueT09PWUueX1mdW5jdGlvbiB6V3QodCxlLG4saSl7Y29uc3Qgcj1CV3QoT1d0KHQsZSxuKSksbz1CV3QoT1d0KHQsZSxpKSksYT1CV3QoT1d0KG4saSx0KSkscz1CV3QoT1d0KG4saSxlKSk7cmV0dXJuIHIhPT1vJiZhIT09c3x8ISgwIT09cnx8IURXdCh0LG4sZSkpfHwhKDAhPT1vfHwhRFd0KHQsaSxlKSl8fCEoMCE9PWF8fCFEV3Qobix0LGkpKXx8ISgwIT09c3x8IURXdChuLGUsaSkpfWZ1bmN0aW9uIERXdCh0LGUsbil7cmV0dXJuIGUueDw9TWF0aC5tYXgodC54LG4ueCkmJmUueD49TWF0aC5taW4odC54LG4ueCkmJmUueTw9TWF0aC5tYXgodC55LG4ueSkmJmUueT49TWF0aC5taW4odC55LG4ueSl9ZnVuY3Rpb24gQld0KHQpe3JldHVybiB0PjA/MTp0PDA/LTE6MH1mdW5jdGlvbiBIV3QodCxlKXtyZXR1cm4gT1d0KHQucHJldix0LHQubmV4dCk8MD9PV3QodCxlLHQubmV4dCk+PTAmJk9XdCh0LHQucHJldixlKT49MDpPV3QodCxlLHQucHJldik8MHx8T1d0KHQsdC5uZXh0LGUpPDB9ZnVuY3Rpb24gRld0KHQsZSl7Y29uc3Qgbj1uZXcgVVd0KHQuaSx0LngsdC55KSxpPW5ldyBVV3QoZS5pLGUueCxlLnkpLHI9dC5uZXh0LG89ZS5wcmV2O3JldHVybiB0Lm5leHQ9ZSxlLnByZXY9dCxuLm5leHQ9cixyLnByZXY9bixpLm5leHQ9bixuLnByZXY9aSxvLm5leHQ9aSxpLnByZXY9byxpfWZ1bmN0aW9uIFZXdCh0LGUsbixpKXtjb25zdCByPW5ldyBVV3QodCxlLG4pO3JldHVybiBpPyhyLm5leHQ9aS5uZXh0LHIucHJldj1pLGkubmV4dC5wcmV2PXIsaS5uZXh0PXIpOihyLnByZXY9cixyLm5leHQ9cikscn1mdW5jdGlvbiBqV3QodCl7dC5uZXh0LnByZXY9dC5wcmV2LHQucHJldi5uZXh0PXQubmV4dCx0LnByZXZaJiYodC5wcmV2Wi5uZXh0Wj10Lm5leHRaKSx0Lm5leHRaJiYodC5uZXh0Wi5wcmV2Wj10LnByZXZaKX1mdW5jdGlvbiBVV3QodCxlLG4pe3RoaXMuaT10LHRoaXMueD1lLHRoaXMueT1uLHRoaXMucHJldj1udWxsLHRoaXMubmV4dD1udWxsLHRoaXMuej1udWxsLHRoaXMucHJldlo9bnVsbCx0aGlzLm5leHRaPW51bGwsdGhpcy5zdGVpbmVyPSExfWNvbnN0IEdXdD17YXJlYTpmdW5jdGlvbih0KXtjb25zdCBlPXQubGVuZ3RoO2xldCBuPTA7Zm9yKGxldCBpPWUtMSxyPTA7cjxlO2k9cisrKW4rPXRbaV0ueCp0W3JdLnktdFtyXS54KnRbaV0ueTtyZXR1cm4uNSpufSxpc0Nsb2NrV2lzZTpmdW5jdGlvbih0KXtyZXR1cm4gR1d0LmFyZWEodCk8MH0sdHJpYW5ndWxhdGVTaGFwZTpmdW5jdGlvbih0LGUpe2NvbnN0IG49W10saT1bXSxyPVtdO1dXdCh0KSxxV3Qobix0KTtsZXQgbz10Lmxlbmd0aDtlLmZvckVhY2goV1d0KTtmb3IobGV0IHQ9MDt0PGUubGVuZ3RoO3QrKylpLnB1c2gobyksbys9ZVt0XS5sZW5ndGgscVd0KG4sZVt0XSk7Y29uc3QgYT0oZnVuY3Rpb24odCxlLG4pe249bnx8Mjtjb25zdCBpPWUmJmUubGVuZ3RoLHI9aT9lWzBdKm46dC5sZW5ndGg7bGV0IG89Yld0KHQsMCxyLG4sITApO2NvbnN0IGE9W107aWYoIW98fG8ubmV4dD09PW8ucHJldilyZXR1cm4gYTtsZXQgcyxsLGMsdSxoLGQscDtpZihpJiYobz0oZnVuY3Rpb24gZih0LGUsbixpKXtjb25zdCByPVtdO2xldCBvLGEscyxsLGM7Zm9yKG89MCxhPWUubGVuZ3RoO288YTtvKyspcz1lW29dKmksbD1vPGEtMT9lW28rMV0qaTp0Lmxlbmd0aCxjPWJXdCh0LHMsbCxpLCExKSxjPT09Yy5uZXh0JiYoYy5zdGVpbmVyPSEwKSxyLnB1c2goUFd0KGMpKTtmb3Ioci5zb3J0KEFXdCksbz0wO288ci5sZW5ndGg7bysrKUNXdChyW29dLG4pLG49eFd0KG4sbi5uZXh0KTtyZXR1cm4gbn0pKHQsZSxvLG4pKSx0Lmxlbmd0aD44MCpuKXtzPWM9dFswXSxsPXU9dFsxXTtmb3IobGV0IGU9bjtlPHI7ZSs9biloPXRbZV0sZD10W2UrMV0saDxzJiYocz1oKSxkPGwmJihsPWQpLGg+YyYmKGM9aCksZD51JiYodT1kKTtwPU1hdGgubWF4KGMtcyx1LWwpLHA9MCE9PXA/MS9wOjB9cmV0dXJuIHdXdChvLGEsbixzLGwscCksYX0pKG4saSk7Zm9yKGxldCB0PTA7dDxhLmxlbmd0aDt0Kz0zKXIucHVzaChhLnNsaWNlKHQsdCszKSk7cmV0dXJuIHJ9fTtmdW5jdGlvbiBXV3QodCl7Y29uc3QgZT10Lmxlbmd0aDtlPjImJnRbZS0xXS5lcXVhbHModFswXSkmJnQucG9wKCl9ZnVuY3Rpb24gcVd0KHQsZSl7Zm9yKGxldCBuPTA7bjxlLmxlbmd0aDtuKyspdC5wdXNoKGVbbl0ueCksdC5wdXNoKGVbbl0ueSl9Y2xhc3MgWVd0IGV4dGVuZHMgcFZ0e2NvbnN0cnVjdG9yKHQsZSl7c3VwZXIoKSx0aGlzLnR5cGU9IkV4dHJ1ZGVHZW9tZXRyeSIsdGhpcy5wYXJhbWV0ZXJzPXtzaGFwZXM6dCxvcHRpb25zOmV9LHQ9QXJyYXkuaXNBcnJheSh0KT90Olt0XTtjb25zdCBuPXRoaXMsaT1bXSxyPVtdO2ZvcihsZXQgZT0wLG49dC5sZW5ndGg7ZTxuO2UrKylvKHRbZV0pO2Z1bmN0aW9uIG8odCl7Y29uc3Qgbz1bXSxhPXZvaWQgMCE9PWUuY3VydmVTZWdtZW50cz9lLmN1cnZlU2VnbWVudHM6MTIscz12b2lkIDAhPT1lLnN0ZXBzP2Uuc3RlcHM6MTtsZXQgbD12b2lkIDAhPT1lLmRlcHRoP2UuZGVwdGg6MTAwLGM9dm9pZCAwPT09ZS5iZXZlbEVuYWJsZWR8fGUuYmV2ZWxFbmFibGVkLHU9dm9pZCAwIT09ZS5iZXZlbFRoaWNrbmVzcz9lLmJldmVsVGhpY2tuZXNzOjYsaD12b2lkIDAhPT1lLmJldmVsU2l6ZT9lLmJldmVsU2l6ZTp1LTIsZD12b2lkIDAhPT1lLmJldmVsT2Zmc2V0P2UuYmV2ZWxPZmZzZXQ6MCxwPXZvaWQgMCE9PWUuYmV2ZWxTZWdtZW50cz9lLmJldmVsU2VnbWVudHM6Mztjb25zdCBmPWUuZXh0cnVkZVBhdGgsbT12b2lkIDAhPT1lLlVWR2VuZXJhdG9yP2UuVVZHZW5lcmF0b3I6WFd0O3ZvaWQgMCE9PWUuYW1vdW50JiYoY29uc29sZS53YXJuKCJUSFJFRS5FeHRydWRlQnVmZmVyR2VvbWV0cnk6IGFtb3VudCBoYXMgYmVlbiByZW5hbWVkIHRvIGRlcHRoLiIpLGw9ZS5hbW91bnQpO2xldCBnLF8seSx2LGIseD0hMTtmJiYoZz1mLmdldFNwYWNlZFBvaW50cyhzKSx4PSEwLGM9ITEsXz1mLmNvbXB1dGVGcmVuZXRGcmFtZXMocywhMSkseT1uZXcgeUh0LHY9bmV3IHlIdCxiPW5ldyB5SHQpLGN8fChwPTAsdT0wLGg9MCxkPTApO2NvbnN0IHc9dC5leHRyYWN0UG9pbnRzKGEpO2xldCBTPXcuc2hhcGU7Y29uc3QgTT13LmhvbGVzO2lmKCFHV3QuaXNDbG9ja1dpc2UoUykpe1M9Uy5yZXZlcnNlKCk7Zm9yKGxldCB0PTAsZT1NLmxlbmd0aDt0PGU7dCsrKXtjb25zdCBlPU1bdF07R1d0LmlzQ2xvY2tXaXNlKGUpJiYoTVt0XT1lLnJldmVyc2UoKSl9fWNvbnN0IEU9R1d0LnRyaWFuZ3VsYXRlU2hhcGUoUyxNKSxUPVM7Zm9yKGxldCB0PTAsZT1NLmxlbmd0aDt0PGU7dCsrKVM9Uy5jb25jYXQoTVt0XSk7ZnVuY3Rpb24gQSh0LGUsbil7cmV0dXJuIGV8fGNvbnNvbGUuZXJyb3IoIlRIUkVFLkV4dHJ1ZGVHZW9tZXRyeTogdmVjIGRvZXMgbm90IGV4aXN0IiksZS5jbG9uZSgpLm11bHRpcGx5U2NhbGFyKG4pLmFkZCh0KX1jb25zdCBDPVMubGVuZ3RoLGs9RS5sZW5ndGg7ZnVuY3Rpb24gTCh0LGUsbil7bGV0IGkscixvO2NvbnN0IGE9dC54LWUueCxzPXQueS1lLnksbD1uLngtdC54LGM9bi55LXQueSx1PWEqYStzKnM7aWYoTWF0aC5hYnMoYSpjLXMqbCk+TnVtYmVyLkVQU0lMT04pe2NvbnN0IGg9TWF0aC5zcXJ0KHUpLGQ9TWF0aC5zcXJ0KGwqbCtjKmMpLHA9ZS54LXMvaCxmPWUueSthL2gsbT0oKG4ueC1jL2QtcCkqYy0obi55K2wvZC1mKSpsKS8oYSpjLXMqbCk7aT1wK2EqbS10Lngscj1mK3MqbS10Lnk7Y29uc3QgZz1pKmkrcipyO2lmKGc8PTIpcmV0dXJuIG5ldyBsSHQoaSxyKTtvPU1hdGguc3FydChnLzIpfWVsc2V7bGV0IHQ9ITE7YT5OdW1iZXIuRVBTSUxPTj9sPk51bWJlci5FUFNJTE9OJiYodD0hMCk6YTwtTnVtYmVyLkVQU0lMT04/bDwtTnVtYmVyLkVQU0lMT04mJih0PSEwKTpNYXRoLnNpZ24ocyk9PT1NYXRoLnNpZ24oYykmJih0PSEwKSx0PyhpPS1zLHI9YSxvPU1hdGguc3FydCh1KSk6KGk9YSxyPXMsbz1NYXRoLnNxcnQodS8yKSl9cmV0dXJuIG5ldyBsSHQoaS9vLHIvbyl9Y29uc3QgUD1bXTtmb3IobGV0IHQ9MCxlPVQubGVuZ3RoLG49ZS0xLGk9dCsxO3Q8ZTt0KyssbisrLGkrKyluPT09ZSYmKG49MCksaT09PWUmJihpPTApLFBbdF09TChUW3RdLFRbbl0sVFtpXSk7Y29uc3QgST1bXTtsZXQgTixPPVAuY29uY2F0KCk7Zm9yKGxldCB0PTAsZT1NLmxlbmd0aDt0PGU7dCsrKXtjb25zdCBlPU1bdF07Tj1bXTtmb3IobGV0IHQ9MCxuPWUubGVuZ3RoLGk9bi0xLHI9dCsxO3Q8bjt0KyssaSsrLHIrKylpPT09biYmKGk9MCkscj09PW4mJihyPTApLE5bdF09TChlW3RdLGVbaV0sZVtyXSk7SS5wdXNoKE4pLE89Ty5jb25jYXQoTil9Zm9yKGxldCB0PTA7dDxwO3QrKyl7Y29uc3QgZT10L3Asbj11Kk1hdGguY29zKGUqTWF0aC5QSS8yKSxpPWgqTWF0aC5zaW4oZSpNYXRoLlBJLzIpK2Q7Zm9yKGxldCB0PTAsZT1ULmxlbmd0aDt0PGU7dCsrKXtjb25zdCBlPUEoVFt0XSxQW3RdLGkpO0QoZS54LGUueSwtbil9Zm9yKGxldCB0PTAsZT1NLmxlbmd0aDt0PGU7dCsrKXtjb25zdCBlPU1bdF07Tj1JW3RdO2ZvcihsZXQgdD0wLHI9ZS5sZW5ndGg7dDxyO3QrKyl7Y29uc3Qgcj1BKGVbdF0sTlt0XSxpKTtEKHIueCxyLnksLW4pfX19Y29uc3QgUj1oK2Q7Zm9yKGxldCB0PTA7dDxDO3QrKyl7Y29uc3QgZT1jP0EoU1t0XSxPW3RdLFIpOlNbdF07eD8odi5jb3B5KF8ubm9ybWFsc1swXSkubXVsdGlwbHlTY2FsYXIoZS54KSx5LmNvcHkoXy5iaW5vcm1hbHNbMF0pLm11bHRpcGx5U2NhbGFyKGUueSksYi5jb3B5KGdbMF0pLmFkZCh2KS5hZGQoeSksRChiLngsYi55LGIueikpOkQoZS54LGUueSwwKX1mb3IobGV0IHQ9MTt0PD1zO3QrKylmb3IobGV0IGU9MDtlPEM7ZSsrKXtjb25zdCBuPWM/QShTW2VdLE9bZV0sUik6U1tlXTt4Pyh2LmNvcHkoXy5ub3JtYWxzW3RdKS5tdWx0aXBseVNjYWxhcihuLngpLHkuY29weShfLmJpbm9ybWFsc1t0XSkubXVsdGlwbHlTY2FsYXIobi55KSxiLmNvcHkoZ1t0XSkuYWRkKHYpLmFkZCh5KSxEKGIueCxiLnksYi56KSk6RChuLngsbi55LGwvcyp0KX1mb3IobGV0IHQ9cC0xO3Q+PTA7dC0tKXtjb25zdCBlPXQvcCxuPXUqTWF0aC5jb3MoZSpNYXRoLlBJLzIpLGk9aCpNYXRoLnNpbihlKk1hdGguUEkvMikrZDtmb3IobGV0IHQ9MCxlPVQubGVuZ3RoO3Q8ZTt0Kyspe2NvbnN0IGU9QShUW3RdLFBbdF0saSk7RChlLngsZS55LGwrbil9Zm9yKGxldCB0PTAsZT1NLmxlbmd0aDt0PGU7dCsrKXtjb25zdCBlPU1bdF07Tj1JW3RdO2ZvcihsZXQgdD0wLHI9ZS5sZW5ndGg7dDxyO3QrKyl7Y29uc3Qgcj1BKGVbdF0sTlt0XSxpKTt4P0Qoci54LHIueStnW3MtMV0ueSxnW3MtMV0ueCtuKTpEKHIueCxyLnksbCtuKX19fWZ1bmN0aW9uIHoodCxlKXtsZXQgbj10Lmxlbmd0aDtmb3IoOy0tbj49MDspe2NvbnN0IGk9bjtsZXQgcj1uLTE7cjwwJiYocj10Lmxlbmd0aC0xKTtmb3IobGV0IHQ9MCxuPXMrMipwO3Q8bjt0Kyspe2NvbnN0IG49Qyp0LG89QyoodCsxKTtIKGUraStuLGUrcituLGUrcitvLGUraStvKX19fWZ1bmN0aW9uIEQodCxlLG4pe28ucHVzaCh0KSxvLnB1c2goZSksby5wdXNoKG4pfWZ1bmN0aW9uIEIodCxlLHIpe0YodCksRihlKSxGKHIpO2NvbnN0IG89aS5sZW5ndGgvMyxhPW0uZ2VuZXJhdGVUb3BVVihuLGksby0zLG8tMixvLTEpO1YoYVswXSksVihhWzFdKSxWKGFbMl0pfWZ1bmN0aW9uIEgodCxlLHIsbyl7Rih0KSxGKGUpLEYobyksRihlKSxGKHIpLEYobyk7Y29uc3QgYT1pLmxlbmd0aC8zLHM9bS5nZW5lcmF0ZVNpZGVXYWxsVVYobixpLGEtNixhLTMsYS0yLGEtMSk7VihzWzBdKSxWKHNbMV0pLFYoc1szXSksVihzWzFdKSxWKHNbMl0pLFYoc1szXSl9ZnVuY3Rpb24gRih0KXtpLnB1c2gob1szKnQrMF0pLGkucHVzaChvWzMqdCsxXSksaS5wdXNoKG9bMyp0KzJdKX1mdW5jdGlvbiBWKHQpe3IucHVzaCh0LngpLHIucHVzaCh0LnkpfSEoZnVuY3Rpb24gaigpe2NvbnN0IHQ9aS5sZW5ndGgvMztpZihjKXtsZXQgdD0wLGU9Qyp0O2ZvcihsZXQgdD0wO3Q8azt0Kyspe2NvbnN0IG49RVt0XTtCKG5bMl0rZSxuWzFdK2UsblswXStlKX10PXMrMipwLGU9Qyp0O2ZvcihsZXQgdD0wO3Q8azt0Kyspe2NvbnN0IG49RVt0XTtCKG5bMF0rZSxuWzFdK2UsblsyXStlKX19ZWxzZXtmb3IobGV0IHQ9MDt0PGs7dCsrKXtjb25zdCBlPUVbdF07QihlWzJdLGVbMV0sZVswXSl9Zm9yKGxldCB0PTA7dDxrO3QrKyl7Y29uc3QgZT1FW3RdO0IoZVswXStDKnMsZVsxXStDKnMsZVsyXStDKnMpfX1uLmFkZEdyb3VwKHQsaS5sZW5ndGgvMy10LDApfSkoKSwoZnVuY3Rpb24gVSgpe2NvbnN0IHQ9aS5sZW5ndGgvMztsZXQgZT0wO3ooVCxlKSxlKz1ULmxlbmd0aDtmb3IobGV0IHQ9MCxuPU0ubGVuZ3RoO3Q8bjt0Kyspe2NvbnN0IG49TVt0XTt6KG4sZSksZSs9bi5sZW5ndGh9bi5hZGRHcm91cCh0LGkubGVuZ3RoLzMtdCwxKX0pKCl9dGhpcy5zZXRBdHRyaWJ1dGUoInBvc2l0aW9uIixuZXcgZVZ0KGksMykpLHRoaXMuc2V0QXR0cmlidXRlKCJ1diIsbmV3IGVWdChyLDIpKSx0aGlzLmNvbXB1dGVWZXJ0ZXhOb3JtYWxzKCl9dG9KU09OKCl7Y29uc3QgdD1wVnQucHJvdG90eXBlLnRvSlNPTi5jYWxsKHRoaXMpO3JldHVybihmdW5jdGlvbiBlKHQsbixpKXtpZihpLnNoYXBlcz1bXSxBcnJheS5pc0FycmF5KHQpKWZvcihsZXQgZT0wLG49dC5sZW5ndGg7ZTxuO2UrKylpLnNoYXBlcy5wdXNoKHRbZV0udXVpZCk7ZWxzZSBpLnNoYXBlcy5wdXNoKHQudXVpZCk7cmV0dXJuIHZvaWQgMCE9PW4uZXh0cnVkZVBhdGgmJihpLm9wdGlvbnMuZXh0cnVkZVBhdGg9bi5leHRydWRlUGF0aC50b0pTT04oKSksaX0pKHRoaXMucGFyYW1ldGVycy5zaGFwZXMsdGhpcy5wYXJhbWV0ZXJzLm9wdGlvbnMsdCl9fWNvbnN0IFhXdD17Z2VuZXJhdGVUb3BVVjpmdW5jdGlvbih0LGUsbixpLHIpe2NvbnN0IG89ZVszKmldLGE9ZVszKmkrMV0scz1lWzMqcl0sbD1lWzMqcisxXTtyZXR1cm5bbmV3IGxIdChlWzMqbl0sZVszKm4rMV0pLG5ldyBsSHQobyxhKSxuZXcgbEh0KHMsbCldfSxnZW5lcmF0ZVNpZGVXYWxsVVY6ZnVuY3Rpb24odCxlLG4saSxyLG8pe2NvbnN0IGE9ZVszKm5dLHM9ZVszKm4rMV0sbD1lWzMqbisyXSxjPWVbMyppXSx1PWVbMyppKzFdLGg9ZVszKmkrMl0sZD1lWzMqcl0scD1lWzMqcisxXSxmPWVbMypyKzJdLG09ZVszKm9dLGc9ZVszKm8rMV0sXz1lWzMqbysyXTtyZXR1cm4gTWF0aC5hYnMocy11KTwuMDE/W25ldyBsSHQoYSwxLWwpLG5ldyBsSHQoYywxLWgpLG5ldyBsSHQoZCwxLWYpLG5ldyBsSHQobSwxLV8pXTpbbmV3IGxIdChzLDEtbCksbmV3IGxIdCh1LDEtaCksbmV3IGxIdChwLDEtZiksbmV3IGxIdChnLDEtXyldfX07Y2xhc3MgJFd0IGV4dGVuZHMgcFd0e2NvbnN0cnVjdG9yKHQ9MSxlPTApe2NvbnN0IG49KDErTWF0aC5zcXJ0KDUpKS8yO3N1cGVyKFstMSxuLDAsMSxuLDAsLTEsLW4sMCwxLC1uLDAsMCwtMSxuLDAsMSxuLDAsLTEsLW4sMCwxLC1uLG4sMCwtMSxuLDAsMSwtbiwwLC0xLC1uLDAsMV0sWzAsMTEsNSwwLDUsMSwwLDEsNywwLDcsMTAsMCwxMCwxMSwxLDUsOSw1LDExLDQsMTEsMTAsMiwxMCw3LDYsNywxLDgsMyw5LDQsMyw0LDIsMywyLDYsMyw2LDgsMyw4LDksNCw5LDUsMiw0LDExLDYsMiwxMCw4LDYsNyw5LDgsMV0sdCxlKSx0aGlzLnR5cGU9Ikljb3NhaGVkcm9uR2VvbWV0cnkiLHRoaXMucGFyYW1ldGVycz17cmFkaXVzOnQsZGV0YWlsOmV9fX1jbGFzcyBLV3QgZXh0ZW5kcyBwVnR7Y29uc3RydWN0b3IodCxlPTEyLG49MCxpPTIqTWF0aC5QSSl7c3VwZXIoKSx0aGlzLnR5cGU9IkxhdGhlR2VvbWV0cnkiLHRoaXMucGFyYW1ldGVycz17cG9pbnRzOnQsc2VnbWVudHM6ZSxwaGlTdGFydDpuLHBoaUxlbmd0aDppfSxlPU1hdGguZmxvb3IoZSksaT1zSHQuY2xhbXAoaSwwLDIqTWF0aC5QSSk7Y29uc3Qgcj1bXSxvPVtdLGE9W10scz0xL2UsbD1uZXcgeUh0LGM9bmV3IGxIdDtmb3IobGV0IHI9MDtyPD1lO3IrKyl7Y29uc3QgdT1uK3IqcyppLGg9TWF0aC5zaW4odSksZD1NYXRoLmNvcyh1KTtmb3IobGV0IG49MDtuPD10Lmxlbmd0aC0xO24rKylsLng9dFtuXS54KmgsbC55PXRbbl0ueSxsLno9dFtuXS54KmQsby5wdXNoKGwueCxsLnksbC56KSxjLng9ci9lLGMueT1uLyh0Lmxlbmd0aC0xKSxhLnB1c2goYy54LGMueSl9Zm9yKGxldCBuPTA7bjxlO24rKylmb3IobGV0IGU9MDtlPHQubGVuZ3RoLTE7ZSsrKXtjb25zdCBpPWUrbip0Lmxlbmd0aCxvPWkrdC5sZW5ndGgsYT1pK3QubGVuZ3RoKzEscz1pKzE7ci5wdXNoKGksbyxzKSxyLnB1c2gobyxhLHMpfWlmKHRoaXMuc2V0SW5kZXgociksdGhpcy5zZXRBdHRyaWJ1dGUoInBvc2l0aW9uIixuZXcgZVZ0KG8sMykpLHRoaXMuc2V0QXR0cmlidXRlKCJ1diIsbmV3IGVWdChhLDIpKSx0aGlzLmNvbXB1dGVWZXJ0ZXhOb3JtYWxzKCksaT09PTIqTWF0aC5QSSl7Y29uc3Qgbj10aGlzLmF0dHJpYnV0ZXMubm9ybWFsLmFycmF5LGk9bmV3IHlIdCxyPW5ldyB5SHQsbz1uZXcgeUh0LGE9ZSp0Lmxlbmd0aCozO2ZvcihsZXQgZT0wLHM9MDtlPHQubGVuZ3RoO2UrKyxzKz0zKWkueD1uW3MrMF0saS55PW5bcysxXSxpLno9bltzKzJdLHIueD1uW2ErcyswXSxyLnk9blthK3MrMV0sci56PW5bYStzKzJdLG8uYWRkVmVjdG9ycyhpLHIpLm5vcm1hbGl6ZSgpLG5bcyswXT1uW2ErcyswXT1vLngsbltzKzFdPW5bYStzKzFdPW8ueSxuW3MrMl09blthK3MrMl09by56fX19Y2xhc3MgWld0IGV4dGVuZHMgcFd0e2NvbnN0cnVjdG9yKHQ9MSxlPTApe3N1cGVyKFsxLDAsMCwtMSwwLDAsMCwxLDAsMCwtMSwwLDAsMCwxLDAsMCwtMV0sWzAsMiw0LDAsNCwzLDAsMyw1LDAsNSwyLDEsMiw1LDEsNSwzLDEsMyw0LDEsNCwyXSx0LGUpLHRoaXMudHlwZT0iT2N0YWhlZHJvbkdlb21ldHJ5Iix0aGlzLnBhcmFtZXRlcnM9e3JhZGl1czp0LGRldGFpbDplfX19ZnVuY3Rpb24gSld0KHQsZSxuKXtwVnQuY2FsbCh0aGlzKSx0aGlzLnR5cGU9IlBhcmFtZXRyaWNHZW9tZXRyeSIsdGhpcy5wYXJhbWV0ZXJzPXtmdW5jOnQsc2xpY2VzOmUsc3RhY2tzOm59O2NvbnN0IGk9W10scj1bXSxvPVtdLGE9W10scz0xZS01LGw9bmV3IHlIdCxjPW5ldyB5SHQsdT1uZXcgeUh0LGg9bmV3IHlIdCxkPW5ldyB5SHQ7dC5sZW5ndGg8MyYmY29uc29sZS5lcnJvcigiVEhSRUUuUGFyYW1ldHJpY0dlb21ldHJ5OiBGdW5jdGlvbiBtdXN0IG5vdyBtb2RpZnkgYSBWZWN0b3IzIGFzIHRoaXJkIHBhcmFtZXRlci4iKTtjb25zdCBwPWUrMTtmb3IobGV0IGk9MDtpPD1uO2krKyl7Y29uc3QgcD1pL247Zm9yKGxldCBuPTA7bjw9ZTtuKyspe2NvbnN0IGk9bi9lO3QoaSxwLGMpLHIucHVzaChjLngsYy55LGMueiksaS1zPj0wPyh0KGktcyxwLHUpLGguc3ViVmVjdG9ycyhjLHUpKToodChpK3MscCx1KSxoLnN1YlZlY3RvcnModSxjKSkscC1zPj0wPyh0KGkscC1zLHUpLGQuc3ViVmVjdG9ycyhjLHUpKToodChpLHArcyx1KSxkLnN1YlZlY3RvcnModSxjKSksbC5jcm9zc1ZlY3RvcnMoaCxkKS5ub3JtYWxpemUoKSxvLnB1c2gobC54LGwueSxsLnopLGEucHVzaChpLHApfX1mb3IobGV0IHQ9MDt0PG47dCsrKWZvcihsZXQgbj0wO248ZTtuKyspe2NvbnN0IGU9dCpwK24rMSxyPSh0KzEpKnArbisxLG89KHQrMSkqcCtuO2kucHVzaCh0KnArbixlLG8pLGkucHVzaChlLHIsbyl9dGhpcy5zZXRJbmRleChpKSx0aGlzLnNldEF0dHJpYnV0ZSgicG9zaXRpb24iLG5ldyBlVnQociwzKSksdGhpcy5zZXRBdHRyaWJ1dGUoIm5vcm1hbCIsbmV3IGVWdChvLDMpKSx0aGlzLnNldEF0dHJpYnV0ZSgidXYiLG5ldyBlVnQoYSwyKSl9KEpXdC5wcm90b3R5cGU9T2JqZWN0LmNyZWF0ZShwVnQucHJvdG90eXBlKSkuY29uc3RydWN0b3I9Sld0O2NsYXNzIFFXdCBleHRlbmRzIHBWdHtjb25zdHJ1Y3Rvcih0PS41LGU9MSxuPTgsaT0xLHI9MCxvPTIqTWF0aC5QSSl7c3VwZXIoKSx0aGlzLnR5cGU9IlJpbmdHZW9tZXRyeSIsdGhpcy5wYXJhbWV0ZXJzPXtpbm5lclJhZGl1czp0LG91dGVyUmFkaXVzOmUsdGhldGFTZWdtZW50czpuLHBoaVNlZ21lbnRzOmksdGhldGFTdGFydDpyLHRoZXRhTGVuZ3RoOm99LG49TWF0aC5tYXgoMyxuKTtjb25zdCBhPVtdLHM9W10sbD1bXSxjPVtdO2xldCB1PXQ7Y29uc3QgaD0oZS10KS8oaT1NYXRoLm1heCgxLGkpKSxkPW5ldyB5SHQscD1uZXcgbEh0O2ZvcihsZXQgdD0wO3Q8PWk7dCsrKXtmb3IobGV0IHQ9MDt0PD1uO3QrKyl7Y29uc3QgaT1yK3QvbipvO2QueD11Kk1hdGguY29zKGkpLGQueT11Kk1hdGguc2luKGkpLHMucHVzaChkLngsZC55LGQueiksbC5wdXNoKDAsMCwxKSxwLng9KGQueC9lKzEpLzIscC55PShkLnkvZSsxKS8yLGMucHVzaChwLngscC55KX11Kz1ofWZvcihsZXQgdD0wO3Q8aTt0Kyspe2NvbnN0IGU9dCoobisxKTtmb3IobGV0IHQ9MDt0PG47dCsrKXtjb25zdCBpPXQrZSxyPWkrbisxLG89aStuKzIscz1pKzE7YS5wdXNoKGkscixzKSxhLnB1c2gocixvLHMpfX10aGlzLnNldEluZGV4KGEpLHRoaXMuc2V0QXR0cmlidXRlKCJwb3NpdGlvbiIsbmV3IGVWdChzLDMpKSx0aGlzLnNldEF0dHJpYnV0ZSgibm9ybWFsIixuZXcgZVZ0KGwsMykpLHRoaXMuc2V0QXR0cmlidXRlKCJ1diIsbmV3IGVWdChjLDIpKX19Y2xhc3MgdHF0IGV4dGVuZHMgcFZ0e2NvbnN0cnVjdG9yKHQsZT0xMil7c3VwZXIoKSx0aGlzLnR5cGU9IlNoYXBlR2VvbWV0cnkiLHRoaXMucGFyYW1ldGVycz17c2hhcGVzOnQsY3VydmVTZWdtZW50czplfTtjb25zdCBuPVtdLGk9W10scj1bXSxvPVtdO2xldCBhPTAscz0wO2lmKCExPT09QXJyYXkuaXNBcnJheSh0KSlsKHQpO2Vsc2UgZm9yKGxldCBlPTA7ZTx0Lmxlbmd0aDtlKyspbCh0W2VdKSx0aGlzLmFkZEdyb3VwKGEscyxlKSxhKz1zLHM9MDtmdW5jdGlvbiBsKHQpe2NvbnN0IGE9aS5sZW5ndGgvMyxsPXQuZXh0cmFjdFBvaW50cyhlKTtsZXQgYz1sLnNoYXBlO2NvbnN0IHU9bC5ob2xlczshMT09PUdXdC5pc0Nsb2NrV2lzZShjKSYmKGM9Yy5yZXZlcnNlKCkpO2ZvcihsZXQgdD0wLGU9dS5sZW5ndGg7dDxlO3QrKyl7Y29uc3QgZT11W3RdOyEwPT09R1d0LmlzQ2xvY2tXaXNlKGUpJiYodVt0XT1lLnJldmVyc2UoKSl9Y29uc3QgaD1HV3QudHJpYW5ndWxhdGVTaGFwZShjLHUpO2ZvcihsZXQgdD0wLGU9dS5sZW5ndGg7dDxlO3QrKyljPWMuY29uY2F0KHVbdF0pO2ZvcihsZXQgdD0wLGU9Yy5sZW5ndGg7dDxlO3QrKyl7Y29uc3QgZT1jW3RdO2kucHVzaChlLngsZS55LDApLHIucHVzaCgwLDAsMSksby5wdXNoKGUueCxlLnkpfWZvcihsZXQgdD0wLGU9aC5sZW5ndGg7dDxlO3QrKyl7Y29uc3QgZT1oW3RdO24ucHVzaChlWzBdK2EsZVsxXSthLGVbMl0rYSkscys9M319dGhpcy5zZXRJbmRleChuKSx0aGlzLnNldEF0dHJpYnV0ZSgicG9zaXRpb24iLG5ldyBlVnQoaSwzKSksdGhpcy5zZXRBdHRyaWJ1dGUoIm5vcm1hbCIsbmV3IGVWdChyLDMpKSx0aGlzLnNldEF0dHJpYnV0ZSgidXYiLG5ldyBlVnQobywyKSl9dG9KU09OKCl7Y29uc3QgdD1wVnQucHJvdG90eXBlLnRvSlNPTi5jYWxsKHRoaXMpO3JldHVybihmdW5jdGlvbiBlKHQsbil7aWYobi5zaGFwZXM9W10sQXJyYXkuaXNBcnJheSh0KSlmb3IobGV0IGU9MCxpPXQubGVuZ3RoO2U8aTtlKyspbi5zaGFwZXMucHVzaCh0W2VdLnV1aWQpO2Vsc2Ugbi5zaGFwZXMucHVzaCh0LnV1aWQpO3JldHVybiBufSkodGhpcy5wYXJhbWV0ZXJzLnNoYXBlcyx0KX19Y2xhc3MgZXF0IGV4dGVuZHMgcFZ0e2NvbnN0cnVjdG9yKHQ9MSxlPTgsbj02LGk9MCxyPTIqTWF0aC5QSSxvPTAsYT1NYXRoLlBJKXtzdXBlcigpLHRoaXMudHlwZT0iU3BoZXJlR2VvbWV0cnkiLHRoaXMucGFyYW1ldGVycz17cmFkaXVzOnQsd2lkdGhTZWdtZW50czplLGhlaWdodFNlZ21lbnRzOm4scGhpU3RhcnQ6aSxwaGlMZW5ndGg6cix0aGV0YVN0YXJ0Om8sdGhldGFMZW5ndGg6YX0sZT1NYXRoLm1heCgzLE1hdGguZmxvb3IoZSkpLG49TWF0aC5tYXgoMixNYXRoLmZsb29yKG4pKTtjb25zdCBzPU1hdGgubWluKG8rYSxNYXRoLlBJKTtsZXQgbD0wO2NvbnN0IGM9W10sdT1uZXcgeUh0LGg9bmV3IHlIdCxkPVtdLHA9W10sZj1bXSxtPVtdO2ZvcihsZXQgZD0wO2Q8PW47ZCsrKXtjb25zdCBnPVtdLF89ZC9uO2xldCB5PTA7MD09ZCYmMD09bz95PS41L2U6ZD09biYmcz09TWF0aC5QSSYmKHk9LS41L2UpO2ZvcihsZXQgbj0wO248PWU7bisrKXtjb25zdCBzPW4vZTt1Lng9LXQqTWF0aC5jb3MoaStzKnIpKk1hdGguc2luKG8rXyphKSx1Lnk9dCpNYXRoLmNvcyhvK18qYSksdS56PXQqTWF0aC5zaW4oaStzKnIpKk1hdGguc2luKG8rXyphKSxwLnB1c2godS54LHUueSx1LnopLGguY29weSh1KS5ub3JtYWxpemUoKSxmLnB1c2goaC54LGgueSxoLnopLG0ucHVzaChzK3ksMS1fKSxnLnB1c2gobCsrKX1jLnB1c2goZyl9Zm9yKGxldCB0PTA7dDxuO3QrKylmb3IobGV0IGk9MDtpPGU7aSsrKXtjb25zdCBlPWNbdF1baSsxXSxyPWNbdF1baV0sYT1jW3QrMV1baV0sbD1jW3QrMV1baSsxXTsoMCE9PXR8fG8+MCkmJmQucHVzaChlLHIsbCksKHQhPT1uLTF8fHM8TWF0aC5QSSkmJmQucHVzaChyLGEsbCl9dGhpcy5zZXRJbmRleChkKSx0aGlzLnNldEF0dHJpYnV0ZSgicG9zaXRpb24iLG5ldyBlVnQocCwzKSksdGhpcy5zZXRBdHRyaWJ1dGUoIm5vcm1hbCIsbmV3IGVWdChmLDMpKSx0aGlzLnNldEF0dHJpYnV0ZSgidXYiLG5ldyBlVnQobSwyKSl9fWNsYXNzIG5xdCBleHRlbmRzIHBXdHtjb25zdHJ1Y3Rvcih0PTEsZT0wKXtzdXBlcihbMSwxLDEsLTEsLTEsMSwtMSwxLC0xLDEsLTEsLTFdLFsyLDEsMCwwLDMsMiwxLDMsMCwyLDMsMV0sdCxlKSx0aGlzLnR5cGU9IlRldHJhaGVkcm9uR2VvbWV0cnkiLHRoaXMucGFyYW1ldGVycz17cmFkaXVzOnQsZGV0YWlsOmV9fX1jbGFzcyBpcXQgZXh0ZW5kcyBZV3R7Y29uc3RydWN0b3IodCxlPXt9KXtjb25zdCBuPWUuZm9udDtpZighbnx8IW4uaXNGb250KXJldHVybiBjb25zb2xlLmVycm9yKCJUSFJFRS5UZXh0R2VvbWV0cnk6IGZvbnQgcGFyYW1ldGVyIGlzIG5vdCBhbiBpbnN0YW5jZSBvZiBUSFJFRS5Gb250LiIpLG5ldyBwVnQ7Y29uc3QgaT1uLmdlbmVyYXRlU2hhcGVzKHQsZS5zaXplKTtlLmRlcHRoPXZvaWQgMCE9PWUuaGVpZ2h0P2UuaGVpZ2h0OjUwLHZvaWQgMD09PWUuYmV2ZWxUaGlja25lc3MmJihlLmJldmVsVGhpY2tuZXNzPTEwKSx2b2lkIDA9PT1lLmJldmVsU2l6ZSYmKGUuYmV2ZWxTaXplPTgpLHZvaWQgMD09PWUuYmV2ZWxFbmFibGVkJiYoZS5iZXZlbEVuYWJsZWQ9ITEpLHN1cGVyKGksZSksdGhpcy50eXBlPSJUZXh0R2VvbWV0cnkifX1jbGFzcyBycXQgZXh0ZW5kcyBwVnR7Y29uc3RydWN0b3IodD0xLGU9LjQsbj04LGk9NixyPTIqTWF0aC5QSSl7c3VwZXIoKSx0aGlzLnR5cGU9IlRvcnVzR2VvbWV0cnkiLHRoaXMucGFyYW1ldGVycz17cmFkaXVzOnQsdHViZTplLHJhZGlhbFNlZ21lbnRzOm4sdHVidWxhclNlZ21lbnRzOmksYXJjOnJ9LG49TWF0aC5mbG9vcihuKSxpPU1hdGguZmxvb3IoaSk7Y29uc3Qgbz1bXSxhPVtdLHM9W10sbD1bXSxjPW5ldyB5SHQsdT1uZXcgeUh0LGg9bmV3IHlIdDtmb3IobGV0IG89MDtvPD1uO28rKylmb3IobGV0IGQ9MDtkPD1pO2QrKyl7Y29uc3QgcD1kL2kqcixmPW8vbipNYXRoLlBJKjI7dS54PSh0K2UqTWF0aC5jb3MoZikpKk1hdGguY29zKHApLHUueT0odCtlKk1hdGguY29zKGYpKSpNYXRoLnNpbihwKSx1Lno9ZSpNYXRoLnNpbihmKSxhLnB1c2godS54LHUueSx1LnopLGMueD10Kk1hdGguY29zKHApLGMueT10Kk1hdGguc2luKHApLGguc3ViVmVjdG9ycyh1LGMpLm5vcm1hbGl6ZSgpLHMucHVzaChoLngsaC55LGgueiksbC5wdXNoKGQvaSksbC5wdXNoKG8vbil9Zm9yKGxldCB0PTE7dDw9bjt0KyspZm9yKGxldCBlPTE7ZTw9aTtlKyspe2NvbnN0IG49KGkrMSkqKHQtMSkrZS0xLHI9KGkrMSkqKHQtMSkrZSxhPShpKzEpKnQrZTtvLnB1c2goKGkrMSkqdCtlLTEsbixhKSxvLnB1c2gobixyLGEpfXRoaXMuc2V0SW5kZXgobyksdGhpcy5zZXRBdHRyaWJ1dGUoInBvc2l0aW9uIixuZXcgZVZ0KGEsMykpLHRoaXMuc2V0QXR0cmlidXRlKCJub3JtYWwiLG5ldyBlVnQocywzKSksdGhpcy5zZXRBdHRyaWJ1dGUoInV2IixuZXcgZVZ0KGwsMikpfX1jbGFzcyBvcXQgZXh0ZW5kcyBwVnR7Y29uc3RydWN0b3IodD0xLGU9LjQsbj02NCxpPTgscj0yLG89Myl7c3VwZXIoKSx0aGlzLnR5cGU9IlRvcnVzS25vdEdlb21ldHJ5Iix0aGlzLnBhcmFtZXRlcnM9e3JhZGl1czp0LHR1YmU6ZSx0dWJ1bGFyU2VnbWVudHM6bixyYWRpYWxTZWdtZW50czppLHA6cixxOm99LG49TWF0aC5mbG9vcihuKSxpPU1hdGguZmxvb3IoaSk7Y29uc3QgYT1bXSxzPVtdLGw9W10sYz1bXSx1PW5ldyB5SHQsaD1uZXcgeUh0LGQ9bmV3IHlIdCxwPW5ldyB5SHQsZj1uZXcgeUh0LG09bmV3IHlIdCxnPW5ldyB5SHQ7Zm9yKGxldCBhPTA7YTw9bjsrK2Epe2NvbnN0IHk9YS9uKnIqTWF0aC5QSSoyO18oeSxyLG8sdCxkKSxfKHkrLjAxLHIsbyx0LHApLG0uc3ViVmVjdG9ycyhwLGQpLGcuYWRkVmVjdG9ycyhwLGQpLGYuY3Jvc3NWZWN0b3JzKG0sZyksZy5jcm9zc1ZlY3RvcnMoZixtKSxmLm5vcm1hbGl6ZSgpLGcubm9ybWFsaXplKCk7Zm9yKGxldCB0PTA7dDw9aTsrK3Qpe2NvbnN0IHI9dC9pKk1hdGguUEkqMixvPS1lKk1hdGguY29zKHIpLHA9ZSpNYXRoLnNpbihyKTt1Lng9ZC54KyhvKmcueCtwKmYueCksdS55PWQueSsobypnLnkrcCpmLnkpLHUuej1kLnorKG8qZy56K3AqZi56KSxzLnB1c2godS54LHUueSx1LnopLGguc3ViVmVjdG9ycyh1LGQpLm5vcm1hbGl6ZSgpLGwucHVzaChoLngsaC55LGgueiksYy5wdXNoKGEvbiksYy5wdXNoKHQvaSl9fWZvcihsZXQgdD0xO3Q8PW47dCsrKWZvcihsZXQgZT0xO2U8PWk7ZSsrKXtjb25zdCBuPShpKzEpKnQrKGUtMSkscj0oaSsxKSp0K2Usbz0oaSsxKSoodC0xKStlO2EucHVzaCgoaSsxKSoodC0xKSsoZS0xKSxuLG8pLGEucHVzaChuLHIsbyl9ZnVuY3Rpb24gXyh0LGUsbixpLHIpe2NvbnN0IG89TWF0aC5jb3ModCksYT1NYXRoLnNpbih0KSxzPW4vZSp0LGw9TWF0aC5jb3Mocyk7ci54PWkqKDIrbCkqLjUqbyxyLnk9aSooMitsKSphKi41LHIuej1pKk1hdGguc2luKHMpKi41fXRoaXMuc2V0SW5kZXgoYSksdGhpcy5zZXRBdHRyaWJ1dGUoInBvc2l0aW9uIixuZXcgZVZ0KHMsMykpLHRoaXMuc2V0QXR0cmlidXRlKCJub3JtYWwiLG5ldyBlVnQobCwzKSksdGhpcy5zZXRBdHRyaWJ1dGUoInV2IixuZXcgZVZ0KGMsMikpfX1jbGFzcyBhcXQgZXh0ZW5kcyBwVnR7Y29uc3RydWN0b3IodCxlPTY0LG49MSxpPTgscj0hMSl7c3VwZXIoKSx0aGlzLnR5cGU9IlR1YmVHZW9tZXRyeSIsdGhpcy5wYXJhbWV0ZXJzPXtwYXRoOnQsdHVidWxhclNlZ21lbnRzOmUscmFkaXVzOm4scmFkaWFsU2VnbWVudHM6aSxjbG9zZWQ6cn07Y29uc3Qgbz10LmNvbXB1dGVGcmVuZXRGcmFtZXMoZSxyKTt0aGlzLnRhbmdlbnRzPW8udGFuZ2VudHMsdGhpcy5ub3JtYWxzPW8ubm9ybWFscyx0aGlzLmJpbm9ybWFscz1vLmJpbm9ybWFscztjb25zdCBhPW5ldyB5SHQscz1uZXcgeUh0LGw9bmV3IGxIdDtsZXQgYz1uZXcgeUh0O2NvbnN0IHU9W10saD1bXSxkPVtdLHA9W107ZnVuY3Rpb24gZihyKXtjPXQuZ2V0UG9pbnRBdChyL2UsYyk7Y29uc3QgbD1vLm5vcm1hbHNbcl0sZD1vLmJpbm9ybWFsc1tyXTtmb3IobGV0IHQ9MDt0PD1pO3QrKyl7Y29uc3QgZT10L2kqTWF0aC5QSSoyLHI9TWF0aC5zaW4oZSksbz0tTWF0aC5jb3MoZSk7cy54PW8qbC54K3IqZC54LHMueT1vKmwueStyKmQueSxzLno9bypsLnorcipkLnoscy5ub3JtYWxpemUoKSxoLnB1c2gocy54LHMueSxzLnopLGEueD1jLngrbipzLngsYS55PWMueStuKnMueSxhLno9Yy56K24qcy56LHUucHVzaChhLngsYS55LGEueil9fSEoZnVuY3Rpb24gbSgpe2ZvcihsZXQgdD0wO3Q8ZTt0KyspZih0KTtmKCExPT09cj9lOjApLChmdW5jdGlvbiB0KCl7Zm9yKGxldCB0PTA7dDw9ZTt0KyspZm9yKGxldCBuPTA7bjw9aTtuKyspbC54PXQvZSxsLnk9bi9pLGQucHVzaChsLngsbC55KX0pKCksKGZ1bmN0aW9uIG4oKXtmb3IobGV0IHQ9MTt0PD1lO3QrKylmb3IobGV0IGU9MTtlPD1pO2UrKyl7Y29uc3Qgbj0oaSsxKSp0KyhlLTEpLHI9KGkrMSkqdCtlLG89KGkrMSkqKHQtMSkrZTtwLnB1c2goKGkrMSkqKHQtMSkrKGUtMSksbixvKSxwLnB1c2gobixyLG8pfX0pKCl9KSgpLHRoaXMuc2V0SW5kZXgocCksdGhpcy5zZXRBdHRyaWJ1dGUoInBvc2l0aW9uIixuZXcgZVZ0KHUsMykpLHRoaXMuc2V0QXR0cmlidXRlKCJub3JtYWwiLG5ldyBlVnQoaCwzKSksdGhpcy5zZXRBdHRyaWJ1dGUoInV2IixuZXcgZVZ0KGQsMikpfXRvSlNPTigpe2NvbnN0IHQ9cFZ0LnByb3RvdHlwZS50b0pTT04uY2FsbCh0aGlzKTtyZXR1cm4gdC5wYXRoPXRoaXMucGFyYW1ldGVycy5wYXRoLnRvSlNPTigpLHR9fWNsYXNzIHNxdCBleHRlbmRzIHBWdHtjb25zdHJ1Y3Rvcih0KXtpZihzdXBlcigpLHRoaXMudHlwZT0iV2lyZWZyYW1lR2VvbWV0cnkiLCEwPT09dC5pc0dlb21ldHJ5KXJldHVybiB2b2lkIGNvbnNvbGUuZXJyb3IoIlRIUkVFLldpcmVmcmFtZUdlb21ldHJ5IG5vIGxvbmdlciBzdXBwb3J0cyBUSFJFRS5HZW9tZXRyeS4gVXNlIFRIUkVFLkJ1ZmZlckdlb21ldHJ5IGluc3RlYWQuIik7Y29uc3QgZT1bXSxuPVswLDBdLGk9e30scj1uZXcgeUh0O2lmKG51bGwhPT10LmluZGV4KXtjb25zdCBvPXQuYXR0cmlidXRlcy5wb3NpdGlvbixhPXQuaW5kZXg7bGV0IHM9dC5ncm91cHM7MD09PXMubGVuZ3RoJiYocz1be3N0YXJ0OjAsY291bnQ6YS5jb3VudCxtYXRlcmlhbEluZGV4OjB9XSk7Zm9yKGxldCB0PTAsZT1zLmxlbmd0aDt0PGU7Kyt0KXtjb25zdCBlPXNbdF0scj1lLnN0YXJ0O2ZvcihsZXQgdD1yLG89citlLmNvdW50O3Q8bzt0Kz0zKWZvcihsZXQgZT0wO2U8MztlKyspe2NvbnN0IHI9YS5nZXRYKHQrZSksbz1hLmdldFgodCsoZSsxKSUzKTtuWzBdPU1hdGgubWluKHIsbyksblsxXT1NYXRoLm1heChyLG8pO2NvbnN0IHM9blswXSsiLCIrblsxXTt2b2lkIDA9PT1pW3NdJiYoaVtzXT17aW5kZXgxOm5bMF0saW5kZXgyOm5bMV19KX19Zm9yKGNvbnN0IHQgaW4gaSl7Y29uc3Qgbj1pW3RdO3IuZnJvbUJ1ZmZlckF0dHJpYnV0ZShvLG4uaW5kZXgxKSxlLnB1c2goci54LHIueSxyLnopLHIuZnJvbUJ1ZmZlckF0dHJpYnV0ZShvLG4uaW5kZXgyKSxlLnB1c2goci54LHIueSxyLnopfX1lbHNle2NvbnN0IG49dC5hdHRyaWJ1dGVzLnBvc2l0aW9uO2ZvcihsZXQgdD0wLGk9bi5jb3VudC8zO3Q8aTt0KyspZm9yKGxldCBpPTA7aTwzO2krKylyLmZyb21CdWZmZXJBdHRyaWJ1dGUobiwzKnQraSksZS5wdXNoKHIueCxyLnksci56KSxyLmZyb21CdWZmZXJBdHRyaWJ1dGUobiwzKnQrKGkrMSklMyksZS5wdXNoKHIueCxyLnksci56KX10aGlzLnNldEF0dHJpYnV0ZSgicG9zaXRpb24iLG5ldyBlVnQoZSwzKSl9fXZhciBscXQ9T2JqZWN0LmZyZWV6ZSh7X19wcm90b19fOm51bGwsQm94R2VvbWV0cnk6TlZ0LEJveEJ1ZmZlckdlb21ldHJ5Ok5WdCxDaXJjbGVHZW9tZXRyeTp1V3QsQ2lyY2xlQnVmZmVyR2VvbWV0cnk6dVd0LENvbmVHZW9tZXRyeTpkV3QsQ29uZUJ1ZmZlckdlb21ldHJ5OmRXdCxDeWxpbmRlckdlb21ldHJ5OmhXdCxDeWxpbmRlckJ1ZmZlckdlb21ldHJ5OmhXdCxEb2RlY2FoZWRyb25HZW9tZXRyeTpmV3QsRG9kZWNhaGVkcm9uQnVmZmVyR2VvbWV0cnk6Zld0LEVkZ2VzR2VvbWV0cnk6dld0LEV4dHJ1ZGVHZW9tZXRyeTpZV3QsRXh0cnVkZUJ1ZmZlckdlb21ldHJ5OllXdCxJY29zYWhlZHJvbkdlb21ldHJ5OiRXdCxJY29zYWhlZHJvbkJ1ZmZlckdlb21ldHJ5OiRXdCxMYXRoZUdlb21ldHJ5OktXdCxMYXRoZUJ1ZmZlckdlb21ldHJ5OktXdCxPY3RhaGVkcm9uR2VvbWV0cnk6Wld0LE9jdGFoZWRyb25CdWZmZXJHZW9tZXRyeTpaV3QsUGFyYW1ldHJpY0dlb21ldHJ5OkpXdCxQYXJhbWV0cmljQnVmZmVyR2VvbWV0cnk6Sld0LFBsYW5lR2VvbWV0cnk6S1Z0LFBsYW5lQnVmZmVyR2VvbWV0cnk6S1Z0LFBvbHloZWRyb25HZW9tZXRyeTpwV3QsUG9seWhlZHJvbkJ1ZmZlckdlb21ldHJ5OnBXdCxSaW5nR2VvbWV0cnk6UVd0LFJpbmdCdWZmZXJHZW9tZXRyeTpRV3QsU2hhcGVHZW9tZXRyeTp0cXQsU2hhcGVCdWZmZXJHZW9tZXRyeTp0cXQsU3BoZXJlR2VvbWV0cnk6ZXF0LFNwaGVyZUJ1ZmZlckdlb21ldHJ5OmVxdCxUZXRyYWhlZHJvbkdlb21ldHJ5Om5xdCxUZXRyYWhlZHJvbkJ1ZmZlckdlb21ldHJ5Om5xdCxUZXh0R2VvbWV0cnk6aXF0LFRleHRCdWZmZXJHZW9tZXRyeTppcXQsVG9ydXNHZW9tZXRyeTpycXQsVG9ydXNCdWZmZXJHZW9tZXRyeTpycXQsVG9ydXNLbm90R2VvbWV0cnk6b3F0LFRvcnVzS25vdEJ1ZmZlckdlb21ldHJ5Om9xdCxUdWJlR2VvbWV0cnk6YXF0LFR1YmVCdWZmZXJHZW9tZXRyeTphcXQsV2lyZWZyYW1lR2VvbWV0cnk6c3F0fSk7ZnVuY3Rpb24gY3F0KHQpe2pGdC5jYWxsKHRoaXMpLHRoaXMudHlwZT0iU2hhZG93TWF0ZXJpYWwiLHRoaXMuY29sb3I9bmV3IEhGdCgwKSx0aGlzLnRyYW5zcGFyZW50PSEwLHRoaXMuc2V0VmFsdWVzKHQpfWZ1bmN0aW9uIHVxdCh0KXtEVnQuY2FsbCh0aGlzLHQpLHRoaXMudHlwZT0iUmF3U2hhZGVyTWF0ZXJpYWwifWZ1bmN0aW9uIGhxdCh0KXtqRnQuY2FsbCh0aGlzKSx0aGlzLmRlZmluZXM9e1NUQU5EQVJEOiIifSx0aGlzLnR5cGU9Ik1lc2hTdGFuZGFyZE1hdGVyaWFsIix0aGlzLmNvbG9yPW5ldyBIRnQoMTY3NzcyMTUpLHRoaXMucm91Z2huZXNzPTEsdGhpcy5tZXRhbG5lc3M9MCx0aGlzLm1hcD1udWxsLHRoaXMubGlnaHRNYXA9bnVsbCx0aGlzLmxpZ2h0TWFwSW50ZW5zaXR5PTEsdGhpcy5hb01hcD1udWxsLHRoaXMuYW9NYXBJbnRlbnNpdHk9MSx0aGlzLmVtaXNzaXZlPW5ldyBIRnQoMCksdGhpcy5lbWlzc2l2ZUludGVuc2l0eT0xLHRoaXMuZW1pc3NpdmVNYXA9bnVsbCx0aGlzLmJ1bXBNYXA9bnVsbCx0aGlzLmJ1bXBTY2FsZT0xLHRoaXMubm9ybWFsTWFwPW51bGwsdGhpcy5ub3JtYWxNYXBUeXBlPTAsdGhpcy5ub3JtYWxTY2FsZT1uZXcgbEh0KDEsMSksdGhpcy5kaXNwbGFjZW1lbnRNYXA9bnVsbCx0aGlzLmRpc3BsYWNlbWVudFNjYWxlPTEsdGhpcy5kaXNwbGFjZW1lbnRCaWFzPTAsdGhpcy5yb3VnaG5lc3NNYXA9bnVsbCx0aGlzLm1ldGFsbmVzc01hcD1udWxsLHRoaXMuYWxwaGFNYXA9bnVsbCx0aGlzLmVudk1hcD1udWxsLHRoaXMuZW52TWFwSW50ZW5zaXR5PTEsdGhpcy5yZWZyYWN0aW9uUmF0aW89Ljk4LHRoaXMud2lyZWZyYW1lPSExLHRoaXMud2lyZWZyYW1lTGluZXdpZHRoPTEsdGhpcy53aXJlZnJhbWVMaW5lY2FwPSJyb3VuZCIsdGhpcy53aXJlZnJhbWVMaW5lam9pbj0icm91bmQiLHRoaXMuc2tpbm5pbmc9ITEsdGhpcy5tb3JwaFRhcmdldHM9ITEsdGhpcy5tb3JwaE5vcm1hbHM9ITEsdGhpcy52ZXJ0ZXhUYW5nZW50cz0hMSx0aGlzLnNldFZhbHVlcyh0KX1mdW5jdGlvbiBkcXQodCl7aHF0LmNhbGwodGhpcyksdGhpcy5kZWZpbmVzPXtTVEFOREFSRDoiIixQSFlTSUNBTDoiIn0sdGhpcy50eXBlPSJNZXNoUGh5c2ljYWxNYXRlcmlhbCIsdGhpcy5jbGVhcmNvYXQ9MCx0aGlzLmNsZWFyY29hdE1hcD1udWxsLHRoaXMuY2xlYXJjb2F0Um91Z2huZXNzPTAsdGhpcy5jbGVhcmNvYXRSb3VnaG5lc3NNYXA9bnVsbCx0aGlzLmNsZWFyY29hdE5vcm1hbFNjYWxlPW5ldyBsSHQoMSwxKSx0aGlzLmNsZWFyY29hdE5vcm1hbE1hcD1udWxsLHRoaXMucmVmbGVjdGl2aXR5PS41LE9iamVjdC5kZWZpbmVQcm9wZXJ0eSh0aGlzLCJpb3IiLHtnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4oMSsuNCp0aGlzLnJlZmxlY3Rpdml0eSkvKDEtLjQqdGhpcy5yZWZsZWN0aXZpdHkpfSxzZXQ6ZnVuY3Rpb24odCl7dGhpcy5yZWZsZWN0aXZpdHk9c0h0LmNsYW1wKDIuNSoodC0xKS8odCsxKSwwLDEpfX0pLHRoaXMuc2hlZW49bnVsbCx0aGlzLnRyYW5zbWlzc2lvbj0wLHRoaXMudHJhbnNtaXNzaW9uTWFwPW51bGwsdGhpcy5zZXRWYWx1ZXModCl9ZnVuY3Rpb24gcHF0KHQpe2pGdC5jYWxsKHRoaXMpLHRoaXMudHlwZT0iTWVzaFBob25nTWF0ZXJpYWwiLHRoaXMuY29sb3I9bmV3IEhGdCgxNjc3NzIxNSksdGhpcy5zcGVjdWxhcj1uZXcgSEZ0KDExMTg0ODEpLHRoaXMuc2hpbmluZXNzPTMwLHRoaXMubWFwPW51bGwsdGhpcy5saWdodE1hcD1udWxsLHRoaXMubGlnaHRNYXBJbnRlbnNpdHk9MSx0aGlzLmFvTWFwPW51bGwsdGhpcy5hb01hcEludGVuc2l0eT0xLHRoaXMuZW1pc3NpdmU9bmV3IEhGdCgwKSx0aGlzLmVtaXNzaXZlSW50ZW5zaXR5PTEsdGhpcy5lbWlzc2l2ZU1hcD1udWxsLHRoaXMuYnVtcE1hcD1udWxsLHRoaXMuYnVtcFNjYWxlPTEsdGhpcy5ub3JtYWxNYXA9bnVsbCx0aGlzLm5vcm1hbE1hcFR5cGU9MCx0aGlzLm5vcm1hbFNjYWxlPW5ldyBsSHQoMSwxKSx0aGlzLmRpc3BsYWNlbWVudE1hcD1udWxsLHRoaXMuZGlzcGxhY2VtZW50U2NhbGU9MSx0aGlzLmRpc3BsYWNlbWVudEJpYXM9MCx0aGlzLnNwZWN1bGFyTWFwPW51bGwsdGhpcy5hbHBoYU1hcD1udWxsLHRoaXMuZW52TWFwPW51bGwsdGhpcy5jb21iaW5lPTAsdGhpcy5yZWZsZWN0aXZpdHk9MSx0aGlzLnJlZnJhY3Rpb25SYXRpbz0uOTgsdGhpcy53aXJlZnJhbWU9ITEsdGhpcy53aXJlZnJhbWVMaW5ld2lkdGg9MSx0aGlzLndpcmVmcmFtZUxpbmVjYXA9InJvdW5kIix0aGlzLndpcmVmcmFtZUxpbmVqb2luPSJyb3VuZCIsdGhpcy5za2lubmluZz0hMSx0aGlzLm1vcnBoVGFyZ2V0cz0hMSx0aGlzLm1vcnBoTm9ybWFscz0hMSx0aGlzLnNldFZhbHVlcyh0KX1mdW5jdGlvbiBmcXQodCl7akZ0LmNhbGwodGhpcyksdGhpcy5kZWZpbmVzPXtUT09OOiIifSx0aGlzLnR5cGU9Ik1lc2hUb29uTWF0ZXJpYWwiLHRoaXMuY29sb3I9bmV3IEhGdCgxNjc3NzIxNSksdGhpcy5tYXA9bnVsbCx0aGlzLmdyYWRpZW50TWFwPW51bGwsdGhpcy5saWdodE1hcD1udWxsLHRoaXMubGlnaHRNYXBJbnRlbnNpdHk9MSx0aGlzLmFvTWFwPW51bGwsdGhpcy5hb01hcEludGVuc2l0eT0xLHRoaXMuZW1pc3NpdmU9bmV3IEhGdCgwKSx0aGlzLmVtaXNzaXZlSW50ZW5zaXR5PTEsdGhpcy5lbWlzc2l2ZU1hcD1udWxsLHRoaXMuYnVtcE1hcD1udWxsLHRoaXMuYnVtcFNjYWxlPTEsdGhpcy5ub3JtYWxNYXA9bnVsbCx0aGlzLm5vcm1hbE1hcFR5cGU9MCx0aGlzLm5vcm1hbFNjYWxlPW5ldyBsSHQoMSwxKSx0aGlzLmRpc3BsYWNlbWVudE1hcD1udWxsLHRoaXMuZGlzcGxhY2VtZW50U2NhbGU9MSx0aGlzLmRpc3BsYWNlbWVudEJpYXM9MCx0aGlzLmFscGhhTWFwPW51bGwsdGhpcy53aXJlZnJhbWU9ITEsdGhpcy53aXJlZnJhbWVMaW5ld2lkdGg9MSx0aGlzLndpcmVmcmFtZUxpbmVjYXA9InJvdW5kIix0aGlzLndpcmVmcmFtZUxpbmVqb2luPSJyb3VuZCIsdGhpcy5za2lubmluZz0hMSx0aGlzLm1vcnBoVGFyZ2V0cz0hMSx0aGlzLm1vcnBoTm9ybWFscz0hMSx0aGlzLnNldFZhbHVlcyh0KX1mdW5jdGlvbiBtcXQodCl7akZ0LmNhbGwodGhpcyksdGhpcy50eXBlPSJNZXNoTm9ybWFsTWF0ZXJpYWwiLHRoaXMuYnVtcE1hcD1udWxsLHRoaXMuYnVtcFNjYWxlPTEsdGhpcy5ub3JtYWxNYXA9bnVsbCx0aGlzLm5vcm1hbE1hcFR5cGU9MCx0aGlzLm5vcm1hbFNjYWxlPW5ldyBsSHQoMSwxKSx0aGlzLmRpc3BsYWNlbWVudE1hcD1udWxsLHRoaXMuZGlzcGxhY2VtZW50U2NhbGU9MSx0aGlzLmRpc3BsYWNlbWVudEJpYXM9MCx0aGlzLndpcmVmcmFtZT0hMSx0aGlzLndpcmVmcmFtZUxpbmV3aWR0aD0xLHRoaXMuZm9nPSExLHRoaXMuc2tpbm5pbmc9ITEsdGhpcy5tb3JwaFRhcmdldHM9ITEsdGhpcy5tb3JwaE5vcm1hbHM9ITEsdGhpcy5zZXRWYWx1ZXModCl9ZnVuY3Rpb24gZ3F0KHQpe2pGdC5jYWxsKHRoaXMpLHRoaXMudHlwZT0iTWVzaExhbWJlcnRNYXRlcmlhbCIsdGhpcy5jb2xvcj1uZXcgSEZ0KDE2Nzc3MjE1KSx0aGlzLm1hcD1udWxsLHRoaXMubGlnaHRNYXA9bnVsbCx0aGlzLmxpZ2h0TWFwSW50ZW5zaXR5PTEsdGhpcy5hb01hcD1udWxsLHRoaXMuYW9NYXBJbnRlbnNpdHk9MSx0aGlzLmVtaXNzaXZlPW5ldyBIRnQoMCksdGhpcy5lbWlzc2l2ZUludGVuc2l0eT0xLHRoaXMuZW1pc3NpdmVNYXA9bnVsbCx0aGlzLnNwZWN1bGFyTWFwPW51bGwsdGhpcy5hbHBoYU1hcD1udWxsLHRoaXMuZW52TWFwPW51bGwsdGhpcy5jb21iaW5lPTAsdGhpcy5yZWZsZWN0aXZpdHk9MSx0aGlzLnJlZnJhY3Rpb25SYXRpbz0uOTgsdGhpcy53aXJlZnJhbWU9ITEsdGhpcy53aXJlZnJhbWVMaW5ld2lkdGg9MSx0aGlzLndpcmVmcmFtZUxpbmVjYXA9InJvdW5kIix0aGlzLndpcmVmcmFtZUxpbmVqb2luPSJyb3VuZCIsdGhpcy5za2lubmluZz0hMSx0aGlzLm1vcnBoVGFyZ2V0cz0hMSx0aGlzLm1vcnBoTm9ybWFscz0hMSx0aGlzLnNldFZhbHVlcyh0KX1mdW5jdGlvbiBfcXQodCl7akZ0LmNhbGwodGhpcyksdGhpcy5kZWZpbmVzPXtNQVRDQVA6IiJ9LHRoaXMudHlwZT0iTWVzaE1hdGNhcE1hdGVyaWFsIix0aGlzLmNvbG9yPW5ldyBIRnQoMTY3NzcyMTUpLHRoaXMubWF0Y2FwPW51bGwsdGhpcy5tYXA9bnVsbCx0aGlzLmJ1bXBNYXA9bnVsbCx0aGlzLmJ1bXBTY2FsZT0xLHRoaXMubm9ybWFsTWFwPW51bGwsdGhpcy5ub3JtYWxNYXBUeXBlPTAsdGhpcy5ub3JtYWxTY2FsZT1uZXcgbEh0KDEsMSksdGhpcy5kaXNwbGFjZW1lbnRNYXA9bnVsbCx0aGlzLmRpc3BsYWNlbWVudFNjYWxlPTEsdGhpcy5kaXNwbGFjZW1lbnRCaWFzPTAsdGhpcy5hbHBoYU1hcD1udWxsLHRoaXMuc2tpbm5pbmc9ITEsdGhpcy5tb3JwaFRhcmdldHM9ITEsdGhpcy5tb3JwaE5vcm1hbHM9ITEsdGhpcy5zZXRWYWx1ZXModCl9ZnVuY3Rpb24geXF0KHQpe2pHdC5jYWxsKHRoaXMpLHRoaXMudHlwZT0iTGluZURhc2hlZE1hdGVyaWFsIix0aGlzLnNjYWxlPTEsdGhpcy5kYXNoU2l6ZT0zLHRoaXMuZ2FwU2l6ZT0xLHRoaXMuc2V0VmFsdWVzKHQpfShjcXQucHJvdG90eXBlPU9iamVjdC5jcmVhdGUoakZ0LnByb3RvdHlwZSkpLmNvbnN0cnVjdG9yPWNxdCxjcXQucHJvdG90eXBlLmlzU2hhZG93TWF0ZXJpYWw9ITAsY3F0LnByb3RvdHlwZS5jb3B5PWZ1bmN0aW9uKHQpe3JldHVybiBqRnQucHJvdG90eXBlLmNvcHkuY2FsbCh0aGlzLHQpLHRoaXMuY29sb3IuY29weSh0LmNvbG9yKSx0aGlzfSwodXF0LnByb3RvdHlwZT1PYmplY3QuY3JlYXRlKERWdC5wcm90b3R5cGUpKS5jb25zdHJ1Y3Rvcj11cXQsdXF0LnByb3RvdHlwZS5pc1Jhd1NoYWRlck1hdGVyaWFsPSEwLChocXQucHJvdG90eXBlPU9iamVjdC5jcmVhdGUoakZ0LnByb3RvdHlwZSkpLmNvbnN0cnVjdG9yPWhxdCxocXQucHJvdG90eXBlLmlzTWVzaFN0YW5kYXJkTWF0ZXJpYWw9ITAsaHF0LnByb3RvdHlwZS5jb3B5PWZ1bmN0aW9uKHQpe3JldHVybiBqRnQucHJvdG90eXBlLmNvcHkuY2FsbCh0aGlzLHQpLHRoaXMuZGVmaW5lcz17U1RBTkRBUkQ6IiJ9LHRoaXMuY29sb3IuY29weSh0LmNvbG9yKSx0aGlzLnJvdWdobmVzcz10LnJvdWdobmVzcyx0aGlzLm1ldGFsbmVzcz10Lm1ldGFsbmVzcyx0aGlzLm1hcD10Lm1hcCx0aGlzLmxpZ2h0TWFwPXQubGlnaHRNYXAsdGhpcy5saWdodE1hcEludGVuc2l0eT10LmxpZ2h0TWFwSW50ZW5zaXR5LHRoaXMuYW9NYXA9dC5hb01hcCx0aGlzLmFvTWFwSW50ZW5zaXR5PXQuYW9NYXBJbnRlbnNpdHksdGhpcy5lbWlzc2l2ZS5jb3B5KHQuZW1pc3NpdmUpLHRoaXMuZW1pc3NpdmVNYXA9dC5lbWlzc2l2ZU1hcCx0aGlzLmVtaXNzaXZlSW50ZW5zaXR5PXQuZW1pc3NpdmVJbnRlbnNpdHksdGhpcy5idW1wTWFwPXQuYnVtcE1hcCx0aGlzLmJ1bXBTY2FsZT10LmJ1bXBTY2FsZSx0aGlzLm5vcm1hbE1hcD10Lm5vcm1hbE1hcCx0aGlzLm5vcm1hbE1hcFR5cGU9dC5ub3JtYWxNYXBUeXBlLHRoaXMubm9ybWFsU2NhbGUuY29weSh0Lm5vcm1hbFNjYWxlKSx0aGlzLmRpc3BsYWNlbWVudE1hcD10LmRpc3BsYWNlbWVudE1hcCx0aGlzLmRpc3BsYWNlbWVudFNjYWxlPXQuZGlzcGxhY2VtZW50U2NhbGUsdGhpcy5kaXNwbGFjZW1lbnRCaWFzPXQuZGlzcGxhY2VtZW50Qmlhcyx0aGlzLnJvdWdobmVzc01hcD10LnJvdWdobmVzc01hcCx0aGlzLm1ldGFsbmVzc01hcD10Lm1ldGFsbmVzc01hcCx0aGlzLmFscGhhTWFwPXQuYWxwaGFNYXAsdGhpcy5lbnZNYXA9dC5lbnZNYXAsdGhpcy5lbnZNYXBJbnRlbnNpdHk9dC5lbnZNYXBJbnRlbnNpdHksdGhpcy5yZWZyYWN0aW9uUmF0aW89dC5yZWZyYWN0aW9uUmF0aW8sdGhpcy53aXJlZnJhbWU9dC53aXJlZnJhbWUsdGhpcy53aXJlZnJhbWVMaW5ld2lkdGg9dC53aXJlZnJhbWVMaW5ld2lkdGgsdGhpcy53aXJlZnJhbWVMaW5lY2FwPXQud2lyZWZyYW1lTGluZWNhcCx0aGlzLndpcmVmcmFtZUxpbmVqb2luPXQud2lyZWZyYW1lTGluZWpvaW4sdGhpcy5za2lubmluZz10LnNraW5uaW5nLHRoaXMubW9ycGhUYXJnZXRzPXQubW9ycGhUYXJnZXRzLHRoaXMubW9ycGhOb3JtYWxzPXQubW9ycGhOb3JtYWxzLHRoaXMudmVydGV4VGFuZ2VudHM9dC52ZXJ0ZXhUYW5nZW50cyx0aGlzfSwoZHF0LnByb3RvdHlwZT1PYmplY3QuY3JlYXRlKGhxdC5wcm90b3R5cGUpKS5jb25zdHJ1Y3Rvcj1kcXQsZHF0LnByb3RvdHlwZS5pc01lc2hQaHlzaWNhbE1hdGVyaWFsPSEwLGRxdC5wcm90b3R5cGUuY29weT1mdW5jdGlvbih0KXtyZXR1cm4gaHF0LnByb3RvdHlwZS5jb3B5LmNhbGwodGhpcyx0KSx0aGlzLmRlZmluZXM9e1NUQU5EQVJEOiIiLFBIWVNJQ0FMOiIifSx0aGlzLmNsZWFyY29hdD10LmNsZWFyY29hdCx0aGlzLmNsZWFyY29hdE1hcD10LmNsZWFyY29hdE1hcCx0aGlzLmNsZWFyY29hdFJvdWdobmVzcz10LmNsZWFyY29hdFJvdWdobmVzcyx0aGlzLmNsZWFyY29hdFJvdWdobmVzc01hcD10LmNsZWFyY29hdFJvdWdobmVzc01hcCx0aGlzLmNsZWFyY29hdE5vcm1hbE1hcD10LmNsZWFyY29hdE5vcm1hbE1hcCx0aGlzLmNsZWFyY29hdE5vcm1hbFNjYWxlLmNvcHkodC5jbGVhcmNvYXROb3JtYWxTY2FsZSksdGhpcy5yZWZsZWN0aXZpdHk9dC5yZWZsZWN0aXZpdHksdGhpcy5zaGVlbj10LnNoZWVuPyh0aGlzLnNoZWVufHxuZXcgSEZ0KS5jb3B5KHQuc2hlZW4pOm51bGwsdGhpcy50cmFuc21pc3Npb249dC50cmFuc21pc3Npb24sdGhpcy50cmFuc21pc3Npb25NYXA9dC50cmFuc21pc3Npb25NYXAsdGhpc30sKHBxdC5wcm90b3R5cGU9T2JqZWN0LmNyZWF0ZShqRnQucHJvdG90eXBlKSkuY29uc3RydWN0b3I9cHF0LHBxdC5wcm90b3R5cGUuaXNNZXNoUGhvbmdNYXRlcmlhbD0hMCxwcXQucHJvdG90eXBlLmNvcHk9ZnVuY3Rpb24odCl7cmV0dXJuIGpGdC5wcm90b3R5cGUuY29weS5jYWxsKHRoaXMsdCksdGhpcy5jb2xvci5jb3B5KHQuY29sb3IpLHRoaXMuc3BlY3VsYXIuY29weSh0LnNwZWN1bGFyKSx0aGlzLnNoaW5pbmVzcz10LnNoaW5pbmVzcyx0aGlzLm1hcD10Lm1hcCx0aGlzLmxpZ2h0TWFwPXQubGlnaHRNYXAsdGhpcy5saWdodE1hcEludGVuc2l0eT10LmxpZ2h0TWFwSW50ZW5zaXR5LHRoaXMuYW9NYXA9dC5hb01hcCx0aGlzLmFvTWFwSW50ZW5zaXR5PXQuYW9NYXBJbnRlbnNpdHksdGhpcy5lbWlzc2l2ZS5jb3B5KHQuZW1pc3NpdmUpLHRoaXMuZW1pc3NpdmVNYXA9dC5lbWlzc2l2ZU1hcCx0aGlzLmVtaXNzaXZlSW50ZW5zaXR5PXQuZW1pc3NpdmVJbnRlbnNpdHksdGhpcy5idW1wTWFwPXQuYnVtcE1hcCx0aGlzLmJ1bXBTY2FsZT10LmJ1bXBTY2FsZSx0aGlzLm5vcm1hbE1hcD10Lm5vcm1hbE1hcCx0aGlzLm5vcm1hbE1hcFR5cGU9dC5ub3JtYWxNYXBUeXBlLHRoaXMubm9ybWFsU2NhbGUuY29weSh0Lm5vcm1hbFNjYWxlKSx0aGlzLmRpc3BsYWNlbWVudE1hcD10LmRpc3BsYWNlbWVudE1hcCx0aGlzLmRpc3BsYWNlbWVudFNjYWxlPXQuZGlzcGxhY2VtZW50U2NhbGUsdGhpcy5kaXNwbGFjZW1lbnRCaWFzPXQuZGlzcGxhY2VtZW50Qmlhcyx0aGlzLnNwZWN1bGFyTWFwPXQuc3BlY3VsYXJNYXAsdGhpcy5hbHBoYU1hcD10LmFscGhhTWFwLHRoaXMuZW52TWFwPXQuZW52TWFwLHRoaXMuY29tYmluZT10LmNvbWJpbmUsdGhpcy5yZWZsZWN0aXZpdHk9dC5yZWZsZWN0aXZpdHksdGhpcy5yZWZyYWN0aW9uUmF0aW89dC5yZWZyYWN0aW9uUmF0aW8sdGhpcy53aXJlZnJhbWU9dC53aXJlZnJhbWUsdGhpcy53aXJlZnJhbWVMaW5ld2lkdGg9dC53aXJlZnJhbWVMaW5ld2lkdGgsdGhpcy53aXJlZnJhbWVMaW5lY2FwPXQud2lyZWZyYW1lTGluZWNhcCx0aGlzLndpcmVmcmFtZUxpbmVqb2luPXQud2lyZWZyYW1lTGluZWpvaW4sdGhpcy5za2lubmluZz10LnNraW5uaW5nLHRoaXMubW9ycGhUYXJnZXRzPXQubW9ycGhUYXJnZXRzLHRoaXMubW9ycGhOb3JtYWxzPXQubW9ycGhOb3JtYWxzLHRoaXN9LChmcXQucHJvdG90eXBlPU9iamVjdC5jcmVhdGUoakZ0LnByb3RvdHlwZSkpLmNvbnN0cnVjdG9yPWZxdCxmcXQucHJvdG90eXBlLmlzTWVzaFRvb25NYXRlcmlhbD0hMCxmcXQucHJvdG90eXBlLmNvcHk9ZnVuY3Rpb24odCl7cmV0dXJuIGpGdC5wcm90b3R5cGUuY29weS5jYWxsKHRoaXMsdCksdGhpcy5jb2xvci5jb3B5KHQuY29sb3IpLHRoaXMubWFwPXQubWFwLHRoaXMuZ3JhZGllbnRNYXA9dC5ncmFkaWVudE1hcCx0aGlzLmxpZ2h0TWFwPXQubGlnaHRNYXAsdGhpcy5saWdodE1hcEludGVuc2l0eT10LmxpZ2h0TWFwSW50ZW5zaXR5LHRoaXMuYW9NYXA9dC5hb01hcCx0aGlzLmFvTWFwSW50ZW5zaXR5PXQuYW9NYXBJbnRlbnNpdHksdGhpcy5lbWlzc2l2ZS5jb3B5KHQuZW1pc3NpdmUpLHRoaXMuZW1pc3NpdmVNYXA9dC5lbWlzc2l2ZU1hcCx0aGlzLmVtaXNzaXZlSW50ZW5zaXR5PXQuZW1pc3NpdmVJbnRlbnNpdHksdGhpcy5idW1wTWFwPXQuYnVtcE1hcCx0aGlzLmJ1bXBTY2FsZT10LmJ1bXBTY2FsZSx0aGlzLm5vcm1hbE1hcD10Lm5vcm1hbE1hcCx0aGlzLm5vcm1hbE1hcFR5cGU9dC5ub3JtYWxNYXBUeXBlLHRoaXMubm9ybWFsU2NhbGUuY29weSh0Lm5vcm1hbFNjYWxlKSx0aGlzLmRpc3BsYWNlbWVudE1hcD10LmRpc3BsYWNlbWVudE1hcCx0aGlzLmRpc3BsYWNlbWVudFNjYWxlPXQuZGlzcGxhY2VtZW50U2NhbGUsdGhpcy5kaXNwbGFjZW1lbnRCaWFzPXQuZGlzcGxhY2VtZW50Qmlhcyx0aGlzLmFscGhhTWFwPXQuYWxwaGFNYXAsdGhpcy53aXJlZnJhbWU9dC53aXJlZnJhbWUsdGhpcy53aXJlZnJhbWVMaW5ld2lkdGg9dC53aXJlZnJhbWVMaW5ld2lkdGgsdGhpcy53aXJlZnJhbWVMaW5lY2FwPXQud2lyZWZyYW1lTGluZWNhcCx0aGlzLndpcmVmcmFtZUxpbmVqb2luPXQud2lyZWZyYW1lTGluZWpvaW4sdGhpcy5za2lubmluZz10LnNraW5uaW5nLHRoaXMubW9ycGhUYXJnZXRzPXQubW9ycGhUYXJnZXRzLHRoaXMubW9ycGhOb3JtYWxzPXQubW9ycGhOb3JtYWxzLHRoaXN9LChtcXQucHJvdG90eXBlPU9iamVjdC5jcmVhdGUoakZ0LnByb3RvdHlwZSkpLmNvbnN0cnVjdG9yPW1xdCxtcXQucHJvdG90eXBlLmlzTWVzaE5vcm1hbE1hdGVyaWFsPSEwLG1xdC5wcm90b3R5cGUuY29weT1mdW5jdGlvbih0KXtyZXR1cm4gakZ0LnByb3RvdHlwZS5jb3B5LmNhbGwodGhpcyx0KSx0aGlzLmJ1bXBNYXA9dC5idW1wTWFwLHRoaXMuYnVtcFNjYWxlPXQuYnVtcFNjYWxlLHRoaXMubm9ybWFsTWFwPXQubm9ybWFsTWFwLHRoaXMubm9ybWFsTWFwVHlwZT10Lm5vcm1hbE1hcFR5cGUsdGhpcy5ub3JtYWxTY2FsZS5jb3B5KHQubm9ybWFsU2NhbGUpLHRoaXMuZGlzcGxhY2VtZW50TWFwPXQuZGlzcGxhY2VtZW50TWFwLHRoaXMuZGlzcGxhY2VtZW50U2NhbGU9dC5kaXNwbGFjZW1lbnRTY2FsZSx0aGlzLmRpc3BsYWNlbWVudEJpYXM9dC5kaXNwbGFjZW1lbnRCaWFzLHRoaXMud2lyZWZyYW1lPXQud2lyZWZyYW1lLHRoaXMud2lyZWZyYW1lTGluZXdpZHRoPXQud2lyZWZyYW1lTGluZXdpZHRoLHRoaXMuc2tpbm5pbmc9dC5za2lubmluZyx0aGlzLm1vcnBoVGFyZ2V0cz10Lm1vcnBoVGFyZ2V0cyx0aGlzLm1vcnBoTm9ybWFscz10Lm1vcnBoTm9ybWFscyx0aGlzfSwoZ3F0LnByb3RvdHlwZT1PYmplY3QuY3JlYXRlKGpGdC5wcm90b3R5cGUpKS5jb25zdHJ1Y3Rvcj1ncXQsZ3F0LnByb3RvdHlwZS5pc01lc2hMYW1iZXJ0TWF0ZXJpYWw9ITAsZ3F0LnByb3RvdHlwZS5jb3B5PWZ1bmN0aW9uKHQpe3JldHVybiBqRnQucHJvdG90eXBlLmNvcHkuY2FsbCh0aGlzLHQpLHRoaXMuY29sb3IuY29weSh0LmNvbG9yKSx0aGlzLm1hcD10Lm1hcCx0aGlzLmxpZ2h0TWFwPXQubGlnaHRNYXAsdGhpcy5saWdodE1hcEludGVuc2l0eT10LmxpZ2h0TWFwSW50ZW5zaXR5LHRoaXMuYW9NYXA9dC5hb01hcCx0aGlzLmFvTWFwSW50ZW5zaXR5PXQuYW9NYXBJbnRlbnNpdHksdGhpcy5lbWlzc2l2ZS5jb3B5KHQuZW1pc3NpdmUpLHRoaXMuZW1pc3NpdmVNYXA9dC5lbWlzc2l2ZU1hcCx0aGlzLmVtaXNzaXZlSW50ZW5zaXR5PXQuZW1pc3NpdmVJbnRlbnNpdHksdGhpcy5zcGVjdWxhck1hcD10LnNwZWN1bGFyTWFwLHRoaXMuYWxwaGFNYXA9dC5hbHBoYU1hcCx0aGlzLmVudk1hcD10LmVudk1hcCx0aGlzLmNvbWJpbmU9dC5jb21iaW5lLHRoaXMucmVmbGVjdGl2aXR5PXQucmVmbGVjdGl2aXR5LHRoaXMucmVmcmFjdGlvblJhdGlvPXQucmVmcmFjdGlvblJhdGlvLHRoaXMud2lyZWZyYW1lPXQud2lyZWZyYW1lLHRoaXMud2lyZWZyYW1lTGluZXdpZHRoPXQud2lyZWZyYW1lTGluZXdpZHRoLHRoaXMud2lyZWZyYW1lTGluZWNhcD10LndpcmVmcmFtZUxpbmVjYXAsdGhpcy53aXJlZnJhbWVMaW5lam9pbj10LndpcmVmcmFtZUxpbmVqb2luLHRoaXMuc2tpbm5pbmc9dC5za2lubmluZyx0aGlzLm1vcnBoVGFyZ2V0cz10Lm1vcnBoVGFyZ2V0cyx0aGlzLm1vcnBoTm9ybWFscz10Lm1vcnBoTm9ybWFscyx0aGlzfSwoX3F0LnByb3RvdHlwZT1PYmplY3QuY3JlYXRlKGpGdC5wcm90b3R5cGUpKS5jb25zdHJ1Y3Rvcj1fcXQsX3F0LnByb3RvdHlwZS5pc01lc2hNYXRjYXBNYXRlcmlhbD0hMCxfcXQucHJvdG90eXBlLmNvcHk9ZnVuY3Rpb24odCl7cmV0dXJuIGpGdC5wcm90b3R5cGUuY29weS5jYWxsKHRoaXMsdCksdGhpcy5kZWZpbmVzPXtNQVRDQVA6IiJ9LHRoaXMuY29sb3IuY29weSh0LmNvbG9yKSx0aGlzLm1hdGNhcD10Lm1hdGNhcCx0aGlzLm1hcD10Lm1hcCx0aGlzLmJ1bXBNYXA9dC5idW1wTWFwLHRoaXMuYnVtcFNjYWxlPXQuYnVtcFNjYWxlLHRoaXMubm9ybWFsTWFwPXQubm9ybWFsTWFwLHRoaXMubm9ybWFsTWFwVHlwZT10Lm5vcm1hbE1hcFR5cGUsdGhpcy5ub3JtYWxTY2FsZS5jb3B5KHQubm9ybWFsU2NhbGUpLHRoaXMuZGlzcGxhY2VtZW50TWFwPXQuZGlzcGxhY2VtZW50TWFwLHRoaXMuZGlzcGxhY2VtZW50U2NhbGU9dC5kaXNwbGFjZW1lbnRTY2FsZSx0aGlzLmRpc3BsYWNlbWVudEJpYXM9dC5kaXNwbGFjZW1lbnRCaWFzLHRoaXMuYWxwaGFNYXA9dC5hbHBoYU1hcCx0aGlzLnNraW5uaW5nPXQuc2tpbm5pbmcsdGhpcy5tb3JwaFRhcmdldHM9dC5tb3JwaFRhcmdldHMsdGhpcy5tb3JwaE5vcm1hbHM9dC5tb3JwaE5vcm1hbHMsdGhpc30sKHlxdC5wcm90b3R5cGU9T2JqZWN0LmNyZWF0ZShqR3QucHJvdG90eXBlKSkuY29uc3RydWN0b3I9eXF0LHlxdC5wcm90b3R5cGUuaXNMaW5lRGFzaGVkTWF0ZXJpYWw9ITAseXF0LnByb3RvdHlwZS5jb3B5PWZ1bmN0aW9uKHQpe3JldHVybiBqR3QucHJvdG90eXBlLmNvcHkuY2FsbCh0aGlzLHQpLHRoaXMuc2NhbGU9dC5zY2FsZSx0aGlzLmRhc2hTaXplPXQuZGFzaFNpemUsdGhpcy5nYXBTaXplPXQuZ2FwU2l6ZSx0aGlzfTt2YXIgdnF0PU9iamVjdC5mcmVlemUoe19fcHJvdG9fXzpudWxsLFNoYWRvd01hdGVyaWFsOmNxdCxTcHJpdGVNYXRlcmlhbDpsR3QsUmF3U2hhZGVyTWF0ZXJpYWw6dXF0LFNoYWRlck1hdGVyaWFsOkRWdCxQb2ludHNNYXRlcmlhbDpRR3QsTWVzaFBoeXNpY2FsTWF0ZXJpYWw6ZHF0LE1lc2hTdGFuZGFyZE1hdGVyaWFsOmhxdCxNZXNoUGhvbmdNYXRlcmlhbDpwcXQsTWVzaFRvb25NYXRlcmlhbDpmcXQsTWVzaE5vcm1hbE1hdGVyaWFsOm1xdCxNZXNoTGFtYmVydE1hdGVyaWFsOmdxdCxNZXNoRGVwdGhNYXRlcmlhbDpVVXQsTWVzaERpc3RhbmNlTWF0ZXJpYWw6R1V0LE1lc2hCYXNpY01hdGVyaWFsOlVGdCxNZXNoTWF0Y2FwTWF0ZXJpYWw6X3F0LExpbmVEYXNoZWRNYXRlcmlhbDp5cXQsTGluZUJhc2ljTWF0ZXJpYWw6akd0LE1hdGVyaWFsOmpGdH0pO2NvbnN0IGJxdD17YXJyYXlTbGljZTpmdW5jdGlvbih0LGUsbil7cmV0dXJuIGJxdC5pc1R5cGVkQXJyYXkodCk/bmV3IHQuY29uc3RydWN0b3IodC5zdWJhcnJheShlLHZvaWQgMCE9PW4/bjp0Lmxlbmd0aCkpOnQuc2xpY2UoZSxuKX0sY29udmVydEFycmF5OmZ1bmN0aW9uKHQsZSxuKXtyZXR1cm4hdHx8IW4mJnQuY29uc3RydWN0b3I9PT1lP3Q6Im51bWJlciI9PXR5cGVvZiBlLkJZVEVTX1BFUl9FTEVNRU5UP25ldyBlKHQpOkFycmF5LnByb3RvdHlwZS5zbGljZS5jYWxsKHQpfSxpc1R5cGVkQXJyYXk6ZnVuY3Rpb24odCl7cmV0dXJuIEFycmF5QnVmZmVyLmlzVmlldyh0KSYmISh0IGluc3RhbmNlb2YgRGF0YVZpZXcpfSxnZXRLZXlmcmFtZU9yZGVyOmZ1bmN0aW9uKHQpe2NvbnN0IGU9dC5sZW5ndGgsbj1uZXcgQXJyYXkoZSk7Zm9yKGxldCB0PTA7dCE9PWU7Kyt0KW5bdF09dDtyZXR1cm4gbi5zb3J0KChmdW5jdGlvbiBpKGUsbil7cmV0dXJuIHRbZV0tdFtuXX0pKSxufSxzb3J0ZWRBcnJheTpmdW5jdGlvbih0LGUsbil7Y29uc3QgaT10Lmxlbmd0aCxyPW5ldyB0LmNvbnN0cnVjdG9yKGkpO2ZvcihsZXQgbz0wLGE9MDthIT09aTsrK28pe2NvbnN0IGk9bltvXSplO2ZvcihsZXQgbj0wO24hPT1lOysrbilyW2ErK109dFtpK25dfXJldHVybiByfSxmbGF0dGVuSlNPTjpmdW5jdGlvbih0LGUsbixpKXtsZXQgcj0xLG89dFswXTtmb3IoO3ZvaWQgMCE9PW8mJnZvaWQgMD09PW9baV07KW89dFtyKytdO2lmKHZvaWQgMD09PW8pcmV0dXJuO2xldCBhPW9baV07aWYodm9pZCAwIT09YSlpZihBcnJheS5pc0FycmF5KGEpKWRve2E9b1tpXSx2b2lkIDAhPT1hJiYoZS5wdXNoKG8udGltZSksbi5wdXNoLmFwcGx5KG4sYSkpLG89dFtyKytdfXdoaWxlKHZvaWQgMCE9PW8pO2Vsc2UgaWYodm9pZCAwIT09YS50b0FycmF5KWRve2E9b1tpXSx2b2lkIDAhPT1hJiYoZS5wdXNoKG8udGltZSksYS50b0FycmF5KG4sbi5sZW5ndGgpKSxvPXRbcisrXX13aGlsZSh2b2lkIDAhPT1vKTtlbHNlIGRve2E9b1tpXSx2b2lkIDAhPT1hJiYoZS5wdXNoKG8udGltZSksbi5wdXNoKGEpKSxvPXRbcisrXX13aGlsZSh2b2lkIDAhPT1vKX0sc3ViY2xpcDpmdW5jdGlvbih0LGUsbixpLHI9MzApe2NvbnN0IG89dC5jbG9uZSgpO28ubmFtZT1lO2NvbnN0IGE9W107Zm9yKGxldCB0PTA7dDxvLnRyYWNrcy5sZW5ndGg7Kyt0KXtjb25zdCBlPW8udHJhY2tzW3RdLHM9ZS5nZXRWYWx1ZVNpemUoKSxsPVtdLGM9W107Zm9yKGxldCB0PTA7dDxlLnRpbWVzLmxlbmd0aDsrK3Qpe2NvbnN0IG89ZS50aW1lc1t0XSpyO2lmKCEobzxufHxvPj1pKSl7bC5wdXNoKGUudGltZXNbdF0pO2ZvcihsZXQgbj0wO248czsrK24pYy5wdXNoKGUudmFsdWVzW3QqcytuXSl9fTAhPT1sLmxlbmd0aCYmKGUudGltZXM9YnF0LmNvbnZlcnRBcnJheShsLGUudGltZXMuY29uc3RydWN0b3IpLGUudmFsdWVzPWJxdC5jb252ZXJ0QXJyYXkoYyxlLnZhbHVlcy5jb25zdHJ1Y3RvciksYS5wdXNoKGUpKX1vLnRyYWNrcz1hO2xldCBzPTEvMDtmb3IobGV0IHQ9MDt0PG8udHJhY2tzLmxlbmd0aDsrK3Qpcz5vLnRyYWNrc1t0XS50aW1lc1swXSYmKHM9by50cmFja3NbdF0udGltZXNbMF0pO2ZvcihsZXQgdD0wO3Q8by50cmFja3MubGVuZ3RoOysrdClvLnRyYWNrc1t0XS5zaGlmdCgtMSpzKTtyZXR1cm4gby5yZXNldER1cmF0aW9uKCksb30sbWFrZUNsaXBBZGRpdGl2ZTpmdW5jdGlvbih0LGU9MCxuPXQsaT0zMCl7aTw9MCYmKGk9MzApO2NvbnN0IHI9bi50cmFja3MubGVuZ3RoLG89ZS9pO2ZvcihsZXQgZT0wO2U8cjsrK2Upe2NvbnN0IGk9bi50cmFja3NbZV0scj1pLlZhbHVlVHlwZU5hbWU7aWYoImJvb2wiPT09cnx8InN0cmluZyI9PT1yKWNvbnRpbnVlO2NvbnN0IGE9dC50cmFja3MuZmluZCgoZnVuY3Rpb24odCl7cmV0dXJuIHQubmFtZT09PWkubmFtZSYmdC5WYWx1ZVR5cGVOYW1lPT09cn0pKTtpZih2b2lkIDA9PT1hKWNvbnRpbnVlO2xldCBzPTA7Y29uc3QgbD1pLmdldFZhbHVlU2l6ZSgpO2kuY3JlYXRlSW50ZXJwb2xhbnQuaXNJbnRlcnBvbGFudEZhY3RvcnlNZXRob2RHTFRGQ3ViaWNTcGxpbmUmJihzPWwvMyk7bGV0IGM9MDtjb25zdCB1PWEuZ2V0VmFsdWVTaXplKCk7YS5jcmVhdGVJbnRlcnBvbGFudC5pc0ludGVycG9sYW50RmFjdG9yeU1ldGhvZEdMVEZDdWJpY1NwbGluZSYmKGM9dS8zKTtjb25zdCBoPWkudGltZXMubGVuZ3RoLTE7bGV0IGQ7aWYobzw9aS50aW1lc1swXSlkPWJxdC5hcnJheVNsaWNlKGkudmFsdWVzLHMsbC1zKTtlbHNlIGlmKG8+PWkudGltZXNbaF0pe2NvbnN0IHQ9aCpsK3M7ZD1icXQuYXJyYXlTbGljZShpLnZhbHVlcyx0LHQrbC1zKX1lbHNle2NvbnN0IHQ9aS5jcmVhdGVJbnRlcnBvbGFudCgpLGU9cyxuPWwtczt0LmV2YWx1YXRlKG8pLGQ9YnF0LmFycmF5U2xpY2UodC5yZXN1bHRCdWZmZXIsZSxuKX0icXVhdGVybmlvbiI9PT1yJiYobmV3IF9IdCkuZnJvbUFycmF5KGQpLm5vcm1hbGl6ZSgpLmNvbmp1Z2F0ZSgpLnRvQXJyYXkoZCk7Y29uc3QgcD1hLnRpbWVzLmxlbmd0aDtmb3IobGV0IHQ9MDt0PHA7Kyt0KXtjb25zdCBlPXQqdStjO2lmKCJxdWF0ZXJuaW9uIj09PXIpX0h0Lm11bHRpcGx5UXVhdGVybmlvbnNGbGF0KGEudmFsdWVzLGUsZCwwLGEudmFsdWVzLGUpO2Vsc2V7Y29uc3QgdD11LTIqYztmb3IobGV0IG49MDtuPHQ7KytuKWEudmFsdWVzW2Urbl0tPWRbbl19fX1yZXR1cm4gdC5ibGVuZE1vZGU9cUJ0LHR9fTtmdW5jdGlvbiB4cXQodCxlLG4saSl7dGhpcy5wYXJhbWV0ZXJQb3NpdGlvbnM9dCx0aGlzLl9jYWNoZWRJbmRleD0wLHRoaXMucmVzdWx0QnVmZmVyPXZvaWQgMCE9PWk/aTpuZXcgZS5jb25zdHJ1Y3RvcihuKSx0aGlzLnNhbXBsZVZhbHVlcz1lLHRoaXMudmFsdWVTaXplPW59ZnVuY3Rpb24gd3F0KHQsZSxuLGkpe3hxdC5jYWxsKHRoaXMsdCxlLG4saSksdGhpcy5fd2VpZ2h0UHJldj0tMCx0aGlzLl9vZmZzZXRQcmV2PS0wLHRoaXMuX3dlaWdodE5leHQ9LTAsdGhpcy5fb2Zmc2V0TmV4dD0tMH1mdW5jdGlvbiBTcXQodCxlLG4saSl7eHF0LmNhbGwodGhpcyx0LGUsbixpKX1mdW5jdGlvbiBNcXQodCxlLG4saSl7eHF0LmNhbGwodGhpcyx0LGUsbixpKX1mdW5jdGlvbiBFcXQodCxlLG4saSl7aWYodm9pZCAwPT09dCl0aHJvdyBuZXcgRXJyb3IoIlRIUkVFLktleWZyYW1lVHJhY2s6IHRyYWNrIG5hbWUgaXMgdW5kZWZpbmVkIik7aWYodm9pZCAwPT09ZXx8MD09PWUubGVuZ3RoKXRocm93IG5ldyBFcnJvcigiVEhSRUUuS2V5ZnJhbWVUcmFjazogbm8ga2V5ZnJhbWVzIGluIHRyYWNrIG5hbWVkICIrdCk7dGhpcy5uYW1lPXQsdGhpcy50aW1lcz1icXQuY29udmVydEFycmF5KGUsdGhpcy5UaW1lQnVmZmVyVHlwZSksdGhpcy52YWx1ZXM9YnF0LmNvbnZlcnRBcnJheShuLHRoaXMuVmFsdWVCdWZmZXJUeXBlKSx0aGlzLnNldEludGVycG9sYXRpb24oaXx8dGhpcy5EZWZhdWx0SW50ZXJwb2xhdGlvbil9ZnVuY3Rpb24gVHF0KHQsZSxuKXtFcXQuY2FsbCh0aGlzLHQsZSxuKX1mdW5jdGlvbiBBcXQodCxlLG4saSl7RXF0LmNhbGwodGhpcyx0LGUsbixpKX1mdW5jdGlvbiBDcXQodCxlLG4saSl7RXF0LmNhbGwodGhpcyx0LGUsbixpKX1mdW5jdGlvbiBrcXQodCxlLG4saSl7eHF0LmNhbGwodGhpcyx0LGUsbixpKX1mdW5jdGlvbiBMcXQodCxlLG4saSl7RXF0LmNhbGwodGhpcyx0LGUsbixpKX1mdW5jdGlvbiBQcXQodCxlLG4saSl7RXF0LmNhbGwodGhpcyx0LGUsbixpKX1mdW5jdGlvbiBJcXQodCxlLG4saSl7RXF0LmNhbGwodGhpcyx0LGUsbixpKX1mdW5jdGlvbiBOcXQodCxlPS0xLG4saT0yNTAwKXt0aGlzLm5hbWU9dCx0aGlzLnRyYWNrcz1uLHRoaXMuZHVyYXRpb249ZSx0aGlzLmJsZW5kTW9kZT1pLHRoaXMudXVpZD1zSHQuZ2VuZXJhdGVVVUlEKCksdGhpcy5kdXJhdGlvbjwwJiZ0aGlzLnJlc2V0RHVyYXRpb24oKX1mdW5jdGlvbiBPcXQodCl7aWYodm9pZCAwPT09dC50eXBlKXRocm93IG5ldyBFcnJvcigiVEhSRUUuS2V5ZnJhbWVUcmFjazogdHJhY2sgdHlwZSB1bmRlZmluZWQsIGNhbiBub3QgcGFyc2UiKTtjb25zdCBlPShmdW5jdGlvbiBuKHQpe3N3aXRjaCh0LnRvTG93ZXJDYXNlKCkpe2Nhc2Uic2NhbGFyIjpjYXNlImRvdWJsZSI6Y2FzZSJmbG9hdCI6Y2FzZSJudW1iZXIiOmNhc2UiaW50ZWdlciI6cmV0dXJuIENxdDtjYXNlInZlY3RvciI6Y2FzZSJ2ZWN0b3IyIjpjYXNlInZlY3RvcjMiOmNhc2UidmVjdG9yNCI6cmV0dXJuIElxdDtjYXNlImNvbG9yIjpyZXR1cm4gQXF0O2Nhc2UicXVhdGVybmlvbiI6cmV0dXJuIExxdDtjYXNlImJvb2wiOmNhc2UiYm9vbGVhbiI6cmV0dXJuIFRxdDtjYXNlInN0cmluZyI6cmV0dXJuIFBxdH10aHJvdyBuZXcgRXJyb3IoIlRIUkVFLktleWZyYW1lVHJhY2s6IFVuc3VwcG9ydGVkIHR5cGVOYW1lOiAiK3QpfSkodC50eXBlKTtpZih2b2lkIDA9PT10LnRpbWVzKXtjb25zdCBlPVtdLG49W107YnF0LmZsYXR0ZW5KU09OKHQua2V5cyxlLG4sInZhbHVlIiksdC50aW1lcz1lLHQudmFsdWVzPW59cmV0dXJuIHZvaWQgMCE9PWUucGFyc2U/ZS5wYXJzZSh0KTpuZXcgZSh0Lm5hbWUsdC50aW1lcyx0LnZhbHVlcyx0LmludGVycG9sYXRpb24pfU9iamVjdC5hc3NpZ24oeHF0LnByb3RvdHlwZSx7ZXZhbHVhdGU6ZnVuY3Rpb24odCl7Y29uc3QgZT10aGlzLnBhcmFtZXRlclBvc2l0aW9ucztsZXQgbj10aGlzLl9jYWNoZWRJbmRleCxpPWVbbl0scj1lW24tMV07dDp7ZTp7bGV0IG87bjp7aTppZighKHQ8aSkpe2ZvcihsZXQgbz1uKzI7Oyl7aWYodm9pZCAwPT09aSl7aWYodDxyKWJyZWFrIGk7cmV0dXJuIG49ZS5sZW5ndGgsdGhpcy5fY2FjaGVkSW5kZXg9bix0aGlzLmFmdGVyRW5kXyhuLTEsdCxyKX1pZihuPT09bylicmVhaztpZihyPWksaT1lWysrbl0sdDxpKWJyZWFrIGV9bz1lLmxlbmd0aDticmVhayBufWlmKHQ+PXIpYnJlYWsgdDt7Y29uc3QgYT1lWzFdO3Q8YSYmKG49MixyPWEpO2ZvcihsZXQgbz1uLTI7Oyl7aWYodm9pZCAwPT09cilyZXR1cm4gdGhpcy5fY2FjaGVkSW5kZXg9MCx0aGlzLmJlZm9yZVN0YXJ0XygwLHQsaSk7aWYobj09PW8pYnJlYWs7aWYoaT1yLHI9ZVstLW4tMV0sdD49cilicmVhayBlfW89bixuPTB9fWZvcig7bjxvOyl7Y29uc3QgaT1uK28+Pj4xO3Q8ZVtpXT9vPWk6bj1pKzF9aWYoaT1lW25dLHI9ZVtuLTFdLHZvaWQgMD09PXIpcmV0dXJuIHRoaXMuX2NhY2hlZEluZGV4PTAsdGhpcy5iZWZvcmVTdGFydF8oMCx0LGkpO2lmKHZvaWQgMD09PWkpcmV0dXJuIG49ZS5sZW5ndGgsdGhpcy5fY2FjaGVkSW5kZXg9bix0aGlzLmFmdGVyRW5kXyhuLTEscix0KX10aGlzLl9jYWNoZWRJbmRleD1uLHRoaXMuaW50ZXJ2YWxDaGFuZ2VkXyhuLHIsaSl9cmV0dXJuIHRoaXMuaW50ZXJwb2xhdGVfKG4scix0LGkpfSxzZXR0aW5nczpudWxsLERlZmF1bHRTZXR0aW5nc186e30sZ2V0U2V0dGluZ3NfOmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuc2V0dGluZ3N8fHRoaXMuRGVmYXVsdFNldHRpbmdzX30sY29weVNhbXBsZVZhbHVlXzpmdW5jdGlvbih0KXtjb25zdCBlPXRoaXMucmVzdWx0QnVmZmVyLG49dGhpcy5zYW1wbGVWYWx1ZXMsaT10aGlzLnZhbHVlU2l6ZSxyPXQqaTtmb3IobGV0IHQ9MDt0IT09aTsrK3QpZVt0XT1uW3IrdF07cmV0dXJuIGV9LGludGVycG9sYXRlXzpmdW5jdGlvbigpe3Rocm93IG5ldyBFcnJvcigiY2FsbCB0byBhYnN0cmFjdCBtZXRob2QiKX0saW50ZXJ2YWxDaGFuZ2VkXzpmdW5jdGlvbigpe319KSxPYmplY3QuYXNzaWduKHhxdC5wcm90b3R5cGUse2JlZm9yZVN0YXJ0Xzp4cXQucHJvdG90eXBlLmNvcHlTYW1wbGVWYWx1ZV8sYWZ0ZXJFbmRfOnhxdC5wcm90b3R5cGUuY29weVNhbXBsZVZhbHVlX30pLHdxdC5wcm90b3R5cGU9T2JqZWN0LmFzc2lnbihPYmplY3QuY3JlYXRlKHhxdC5wcm90b3R5cGUpLHtjb25zdHJ1Y3Rvcjp3cXQsRGVmYXVsdFNldHRpbmdzXzp7ZW5kaW5nU3RhcnQ6akJ0LGVuZGluZ0VuZDpqQnR9LGludGVydmFsQ2hhbmdlZF86ZnVuY3Rpb24odCxlLG4pe2NvbnN0IGk9dGhpcy5wYXJhbWV0ZXJQb3NpdGlvbnM7bGV0IHI9dC0yLG89dCsxLGE9aVtyXSxzPWlbb107aWYodm9pZCAwPT09YSlzd2l0Y2godGhpcy5nZXRTZXR0aW5nc18oKS5lbmRpbmdTdGFydCl7Y2FzZSBVQnQ6cj10LGE9MiplLW47YnJlYWs7Y2FzZSBHQnQ6cj1pLmxlbmd0aC0yLGE9ZStpW3JdLWlbcisxXTticmVhaztkZWZhdWx0OnI9dCxhPW59aWYodm9pZCAwPT09cylzd2l0Y2godGhpcy5nZXRTZXR0aW5nc18oKS5lbmRpbmdFbmQpe2Nhc2UgVUJ0Om89dCxzPTIqbi1lO2JyZWFrO2Nhc2UgR0J0Om89MSxzPW4raVsxXS1pWzBdO2JyZWFrO2RlZmF1bHQ6bz10LTEscz1lfWNvbnN0IGw9LjUqKG4tZSksYz10aGlzLnZhbHVlU2l6ZTt0aGlzLl93ZWlnaHRQcmV2PWwvKGUtYSksdGhpcy5fd2VpZ2h0TmV4dD1sLyhzLW4pLHRoaXMuX29mZnNldFByZXY9cipjLHRoaXMuX29mZnNldE5leHQ9bypjfSxpbnRlcnBvbGF0ZV86ZnVuY3Rpb24odCxlLG4saSl7Y29uc3Qgcj10aGlzLnJlc3VsdEJ1ZmZlcixvPXRoaXMuc2FtcGxlVmFsdWVzLGE9dGhpcy52YWx1ZVNpemUscz10KmEsbD1zLWEsYz10aGlzLl9vZmZzZXRQcmV2LHU9dGhpcy5fb2Zmc2V0TmV4dCxoPXRoaXMuX3dlaWdodFByZXYsZD10aGlzLl93ZWlnaHROZXh0LHA9KG4tZSkvKGktZSksZj1wKnAsbT1mKnAsZz0taCptKzIqaCpmLWgqcCxfPSgxK2gpKm0rKC0xLjUtMipoKSpmKygtLjUraCkqcCsxLHk9KC0xLWQpKm0rKDEuNStkKSpmKy41KnAsdj1kKm0tZCpmO2ZvcihsZXQgdD0wO3QhPT1hOysrdClyW3RdPWcqb1tjK3RdK18qb1tsK3RdK3kqb1tzK3RdK3Yqb1t1K3RdO3JldHVybiByfX0pLFNxdC5wcm90b3R5cGU9T2JqZWN0LmFzc2lnbihPYmplY3QuY3JlYXRlKHhxdC5wcm90b3R5cGUpLHtjb25zdHJ1Y3RvcjpTcXQsaW50ZXJwb2xhdGVfOmZ1bmN0aW9uKHQsZSxuLGkpe2NvbnN0IHI9dGhpcy5yZXN1bHRCdWZmZXIsbz10aGlzLnNhbXBsZVZhbHVlcyxhPXRoaXMudmFsdWVTaXplLHM9dCphLGw9cy1hLGM9KG4tZSkvKGktZSksdT0xLWM7Zm9yKGxldCB0PTA7dCE9PWE7Kyt0KXJbdF09b1tsK3RdKnUrb1tzK3RdKmM7cmV0dXJuIHJ9fSksTXF0LnByb3RvdHlwZT1PYmplY3QuYXNzaWduKE9iamVjdC5jcmVhdGUoeHF0LnByb3RvdHlwZSkse2NvbnN0cnVjdG9yOk1xdCxpbnRlcnBvbGF0ZV86ZnVuY3Rpb24odCl7cmV0dXJuIHRoaXMuY29weVNhbXBsZVZhbHVlXyh0LTEpfX0pLE9iamVjdC5hc3NpZ24oRXF0LHt0b0pTT046ZnVuY3Rpb24odCl7Y29uc3QgZT10LmNvbnN0cnVjdG9yO2xldCBuO2lmKHZvaWQgMCE9PWUudG9KU09OKW49ZS50b0pTT04odCk7ZWxzZXtuPXtuYW1lOnQubmFtZSx0aW1lczpicXQuY29udmVydEFycmF5KHQudGltZXMsQXJyYXkpLHZhbHVlczpicXQuY29udmVydEFycmF5KHQudmFsdWVzLEFycmF5KX07Y29uc3QgZT10LmdldEludGVycG9sYXRpb24oKTtlIT09dC5EZWZhdWx0SW50ZXJwb2xhdGlvbiYmKG4uaW50ZXJwb2xhdGlvbj1lKX1yZXR1cm4gbi50eXBlPXQuVmFsdWVUeXBlTmFtZSxufX0pLE9iamVjdC5hc3NpZ24oRXF0LnByb3RvdHlwZSx7Y29uc3RydWN0b3I6RXF0LFRpbWVCdWZmZXJUeXBlOkZsb2F0MzJBcnJheSxWYWx1ZUJ1ZmZlclR5cGU6RmxvYXQzMkFycmF5LERlZmF1bHRJbnRlcnBvbGF0aW9uOkZCdCxJbnRlcnBvbGFudEZhY3RvcnlNZXRob2REaXNjcmV0ZTpmdW5jdGlvbih0KXtyZXR1cm4gbmV3IE1xdCh0aGlzLnRpbWVzLHRoaXMudmFsdWVzLHRoaXMuZ2V0VmFsdWVTaXplKCksdCl9LEludGVycG9sYW50RmFjdG9yeU1ldGhvZExpbmVhcjpmdW5jdGlvbih0KXtyZXR1cm4gbmV3IFNxdCh0aGlzLnRpbWVzLHRoaXMudmFsdWVzLHRoaXMuZ2V0VmFsdWVTaXplKCksdCl9LEludGVycG9sYW50RmFjdG9yeU1ldGhvZFNtb290aDpmdW5jdGlvbih0KXtyZXR1cm4gbmV3IHdxdCh0aGlzLnRpbWVzLHRoaXMudmFsdWVzLHRoaXMuZ2V0VmFsdWVTaXplKCksdCl9LHNldEludGVycG9sYXRpb246ZnVuY3Rpb24odCl7bGV0IGU7c3dpdGNoKHQpe2Nhc2UgSEJ0OmU9dGhpcy5JbnRlcnBvbGFudEZhY3RvcnlNZXRob2REaXNjcmV0ZTticmVhaztjYXNlIEZCdDplPXRoaXMuSW50ZXJwb2xhbnRGYWN0b3J5TWV0aG9kTGluZWFyO2JyZWFrO2Nhc2UgVkJ0OmU9dGhpcy5JbnRlcnBvbGFudEZhY3RvcnlNZXRob2RTbW9vdGh9aWYodm9pZCAwPT09ZSl7Y29uc3QgZT0idW5zdXBwb3J0ZWQgaW50ZXJwb2xhdGlvbiBmb3IgIit0aGlzLlZhbHVlVHlwZU5hbWUrIiBrZXlmcmFtZSB0cmFjayBuYW1lZCAiK3RoaXMubmFtZTtpZih2b2lkIDA9PT10aGlzLmNyZWF0ZUludGVycG9sYW50KXtpZih0PT09dGhpcy5EZWZhdWx0SW50ZXJwb2xhdGlvbil0aHJvdyBuZXcgRXJyb3IoZSk7dGhpcy5zZXRJbnRlcnBvbGF0aW9uKHRoaXMuRGVmYXVsdEludGVycG9sYXRpb24pfXJldHVybiBjb25zb2xlLndhcm4oIlRIUkVFLktleWZyYW1lVHJhY2s6IixlKSx0aGlzfXJldHVybiB0aGlzLmNyZWF0ZUludGVycG9sYW50PWUsdGhpc30sZ2V0SW50ZXJwb2xhdGlvbjpmdW5jdGlvbigpe3N3aXRjaCh0aGlzLmNyZWF0ZUludGVycG9sYW50KXtjYXNlIHRoaXMuSW50ZXJwb2xhbnRGYWN0b3J5TWV0aG9kRGlzY3JldGU6cmV0dXJuIEhCdDtjYXNlIHRoaXMuSW50ZXJwb2xhbnRGYWN0b3J5TWV0aG9kTGluZWFyOnJldHVybiBGQnQ7Y2FzZSB0aGlzLkludGVycG9sYW50RmFjdG9yeU1ldGhvZFNtb290aDpyZXR1cm4gVkJ0fX0sZ2V0VmFsdWVTaXplOmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMudmFsdWVzLmxlbmd0aC90aGlzLnRpbWVzLmxlbmd0aH0sc2hpZnQ6ZnVuY3Rpb24odCl7aWYoMCE9PXQpe2NvbnN0IGU9dGhpcy50aW1lcztmb3IobGV0IG49MCxpPWUubGVuZ3RoO24hPT1pOysrbillW25dKz10fXJldHVybiB0aGlzfSxzY2FsZTpmdW5jdGlvbih0KXtpZigxIT09dCl7Y29uc3QgZT10aGlzLnRpbWVzO2ZvcihsZXQgbj0wLGk9ZS5sZW5ndGg7biE9PWk7KytuKWVbbl0qPXR9cmV0dXJuIHRoaXN9LHRyaW06ZnVuY3Rpb24odCxlKXtjb25zdCBuPXRoaXMudGltZXMsaT1uLmxlbmd0aDtsZXQgcj0wLG89aS0xO2Zvcig7ciE9PWkmJm5bcl08dDspKytyO2Zvcig7LTEhPT1vJiZuW29dPmU7KS0tbztpZigrK28sMCE9PXJ8fG8hPT1pKXtyPj1vJiYobz1NYXRoLm1heChvLDEpLHI9by0xKTtjb25zdCB0PXRoaXMuZ2V0VmFsdWVTaXplKCk7dGhpcy50aW1lcz1icXQuYXJyYXlTbGljZShuLHIsbyksdGhpcy52YWx1ZXM9YnF0LmFycmF5U2xpY2UodGhpcy52YWx1ZXMscip0LG8qdCl9cmV0dXJuIHRoaXN9LHZhbGlkYXRlOmZ1bmN0aW9uKCl7bGV0IHQ9ITA7Y29uc3QgZT10aGlzLmdldFZhbHVlU2l6ZSgpO2UtTWF0aC5mbG9vcihlKSE9MCYmKGNvbnNvbGUuZXJyb3IoIlRIUkVFLktleWZyYW1lVHJhY2s6IEludmFsaWQgdmFsdWUgc2l6ZSBpbiB0cmFjay4iLHRoaXMpLHQ9ITEpO2NvbnN0IG49dGhpcy50aW1lcyxpPXRoaXMudmFsdWVzLHI9bi5sZW5ndGg7MD09PXImJihjb25zb2xlLmVycm9yKCJUSFJFRS5LZXlmcmFtZVRyYWNrOiBUcmFjayBpcyBlbXB0eS4iLHRoaXMpLHQ9ITEpO2xldCBvPW51bGw7Zm9yKGxldCBlPTA7ZSE9PXI7ZSsrKXtjb25zdCBpPW5bZV07aWYoIm51bWJlciI9PXR5cGVvZiBpJiZpc05hTihpKSl7Y29uc29sZS5lcnJvcigiVEhSRUUuS2V5ZnJhbWVUcmFjazogVGltZSBpcyBub3QgYSB2YWxpZCBudW1iZXIuIix0aGlzLGUsaSksdD0hMTticmVha31pZihudWxsIT09byYmbz5pKXtjb25zb2xlLmVycm9yKCJUSFJFRS5LZXlmcmFtZVRyYWNrOiBPdXQgb2Ygb3JkZXIga2V5cy4iLHRoaXMsZSxpLG8pLHQ9ITE7YnJlYWt9bz1pfWlmKHZvaWQgMCE9PWkmJmJxdC5pc1R5cGVkQXJyYXkoaSkpZm9yKGxldCBlPTAsbj1pLmxlbmd0aDtlIT09bjsrK2Upe2NvbnN0IG49aVtlXTtpZihpc05hTihuKSl7Y29uc29sZS5lcnJvcigiVEhSRUUuS2V5ZnJhbWVUcmFjazogVmFsdWUgaXMgbm90IGEgdmFsaWQgbnVtYmVyLiIsdGhpcyxlLG4pLHQ9ITE7YnJlYWt9fXJldHVybiB0fSxvcHRpbWl6ZTpmdW5jdGlvbigpe2NvbnN0IHQ9YnF0LmFycmF5U2xpY2UodGhpcy50aW1lcyksZT1icXQuYXJyYXlTbGljZSh0aGlzLnZhbHVlcyksbj10aGlzLmdldFZhbHVlU2l6ZSgpLGk9dGhpcy5nZXRJbnRlcnBvbGF0aW9uKCk9PT1WQnQscj10Lmxlbmd0aC0xO2xldCBvPTE7Zm9yKGxldCBhPTE7YTxyOysrYSl7bGV0IHI9ITE7Y29uc3Qgcz10W2FdO2lmKHMhPT10W2ErMV0mJigxIT09YXx8cyE9PXRbMF0pKWlmKGkpcj0hMDtlbHNle2NvbnN0IHQ9YSpuLGk9dC1uLG89dCtuO2ZvcihsZXQgYT0wO2EhPT1uOysrYSl7Y29uc3Qgbj1lW3QrYV07aWYobiE9PWVbaSthXXx8biE9PWVbbythXSl7cj0hMDticmVha319fWlmKHIpe2lmKGEhPT1vKXt0W29dPXRbYV07Y29uc3QgaT1hKm4scj1vKm47Zm9yKGxldCB0PTA7dCE9PW47Kyt0KWVbcit0XT1lW2krdF19KytvfX1pZihyPjApe3Rbb109dFtyXTtmb3IobGV0IHQ9cipuLGk9bypuLGE9MDthIT09bjsrK2EpZVtpK2FdPWVbdCthXTsrK299cmV0dXJuIG8hPT10Lmxlbmd0aD8odGhpcy50aW1lcz1icXQuYXJyYXlTbGljZSh0LDAsbyksdGhpcy52YWx1ZXM9YnF0LmFycmF5U2xpY2UoZSwwLG8qbikpOih0aGlzLnRpbWVzPXQsdGhpcy52YWx1ZXM9ZSksdGhpc30sY2xvbmU6ZnVuY3Rpb24oKXtjb25zdCB0PWJxdC5hcnJheVNsaWNlKHRoaXMudGltZXMsMCksZT1icXQuYXJyYXlTbGljZSh0aGlzLnZhbHVlcywwKSxuPW5ldygwLHRoaXMuY29uc3RydWN0b3IpKHRoaXMubmFtZSx0LGUpO3JldHVybiBuLmNyZWF0ZUludGVycG9sYW50PXRoaXMuY3JlYXRlSW50ZXJwb2xhbnQsbn19KSxUcXQucHJvdG90eXBlPU9iamVjdC5hc3NpZ24oT2JqZWN0LmNyZWF0ZShFcXQucHJvdG90eXBlKSx7Y29uc3RydWN0b3I6VHF0LFZhbHVlVHlwZU5hbWU6ImJvb2wiLFZhbHVlQnVmZmVyVHlwZTpBcnJheSxEZWZhdWx0SW50ZXJwb2xhdGlvbjpIQnQsSW50ZXJwb2xhbnRGYWN0b3J5TWV0aG9kTGluZWFyOnZvaWQgMCxJbnRlcnBvbGFudEZhY3RvcnlNZXRob2RTbW9vdGg6dm9pZCAwfSksQXF0LnByb3RvdHlwZT1PYmplY3QuYXNzaWduKE9iamVjdC5jcmVhdGUoRXF0LnByb3RvdHlwZSkse2NvbnN0cnVjdG9yOkFxdCxWYWx1ZVR5cGVOYW1lOiJjb2xvciJ9KSxDcXQucHJvdG90eXBlPU9iamVjdC5hc3NpZ24oT2JqZWN0LmNyZWF0ZShFcXQucHJvdG90eXBlKSx7Y29uc3RydWN0b3I6Q3F0LFZhbHVlVHlwZU5hbWU6Im51bWJlciJ9KSxrcXQucHJvdG90eXBlPU9iamVjdC5hc3NpZ24oT2JqZWN0LmNyZWF0ZSh4cXQucHJvdG90eXBlKSx7Y29uc3RydWN0b3I6a3F0LGludGVycG9sYXRlXzpmdW5jdGlvbih0LGUsbixpKXtjb25zdCByPXRoaXMucmVzdWx0QnVmZmVyLG89dGhpcy5zYW1wbGVWYWx1ZXMsYT10aGlzLnZhbHVlU2l6ZSxzPShuLWUpLyhpLWUpO2xldCBsPXQqYTtmb3IobGV0IHQ9bCthO2whPT10O2wrPTQpX0h0LnNsZXJwRmxhdChyLDAsbyxsLWEsbyxsLHMpO3JldHVybiByfX0pLExxdC5wcm90b3R5cGU9T2JqZWN0LmFzc2lnbihPYmplY3QuY3JlYXRlKEVxdC5wcm90b3R5cGUpLHtjb25zdHJ1Y3RvcjpMcXQsVmFsdWVUeXBlTmFtZToicXVhdGVybmlvbiIsRGVmYXVsdEludGVycG9sYXRpb246RkJ0LEludGVycG9sYW50RmFjdG9yeU1ldGhvZExpbmVhcjpmdW5jdGlvbih0KXtyZXR1cm4gbmV3IGtxdCh0aGlzLnRpbWVzLHRoaXMudmFsdWVzLHRoaXMuZ2V0VmFsdWVTaXplKCksdCl9LEludGVycG9sYW50RmFjdG9yeU1ldGhvZFNtb290aDp2b2lkIDB9KSxQcXQucHJvdG90eXBlPU9iamVjdC5hc3NpZ24oT2JqZWN0LmNyZWF0ZShFcXQucHJvdG90eXBlKSx7Y29uc3RydWN0b3I6UHF0LFZhbHVlVHlwZU5hbWU6InN0cmluZyIsVmFsdWVCdWZmZXJUeXBlOkFycmF5LERlZmF1bHRJbnRlcnBvbGF0aW9uOkhCdCxJbnRlcnBvbGFudEZhY3RvcnlNZXRob2RMaW5lYXI6dm9pZCAwLEludGVycG9sYW50RmFjdG9yeU1ldGhvZFNtb290aDp2b2lkIDB9KSxJcXQucHJvdG90eXBlPU9iamVjdC5hc3NpZ24oT2JqZWN0LmNyZWF0ZShFcXQucHJvdG90eXBlKSx7Y29uc3RydWN0b3I6SXF0LFZhbHVlVHlwZU5hbWU6InZlY3RvciJ9KSxPYmplY3QuYXNzaWduKE5xdCx7cGFyc2U6ZnVuY3Rpb24odCl7Y29uc3QgZT1bXSxuPXQudHJhY2tzLGk9MS8odC5mcHN8fDEpO2ZvcihsZXQgdD0wLHI9bi5sZW5ndGg7dCE9PXI7Kyt0KWUucHVzaChPcXQoblt0XSkuc2NhbGUoaSkpO2NvbnN0IHI9bmV3IE5xdCh0Lm5hbWUsdC5kdXJhdGlvbixlLHQuYmxlbmRNb2RlKTtyZXR1cm4gci51dWlkPXQudXVpZCxyfSx0b0pTT046ZnVuY3Rpb24odCl7Y29uc3QgZT1bXSxuPXQudHJhY2tzLGk9e25hbWU6dC5uYW1lLGR1cmF0aW9uOnQuZHVyYXRpb24sdHJhY2tzOmUsdXVpZDp0LnV1aWQsYmxlbmRNb2RlOnQuYmxlbmRNb2RlfTtmb3IobGV0IHQ9MCxpPW4ubGVuZ3RoO3QhPT1pOysrdCllLnB1c2goRXF0LnRvSlNPTihuW3RdKSk7cmV0dXJuIGl9LENyZWF0ZUZyb21Nb3JwaFRhcmdldFNlcXVlbmNlOmZ1bmN0aW9uKHQsZSxuLGkpe2NvbnN0IHI9ZS5sZW5ndGgsbz1bXTtmb3IobGV0IHQ9MDt0PHI7dCsrKXtsZXQgYT1bXSxzPVtdO2EucHVzaCgodCtyLTEpJXIsdCwodCsxKSVyKSxzLnB1c2goMCwxLDApO2NvbnN0IGw9YnF0LmdldEtleWZyYW1lT3JkZXIoYSk7YT1icXQuc29ydGVkQXJyYXkoYSwxLGwpLHM9YnF0LnNvcnRlZEFycmF5KHMsMSxsKSxpfHwwIT09YVswXXx8KGEucHVzaChyKSxzLnB1c2goc1swXSkpLG8ucHVzaChuZXcgQ3F0KCIubW9ycGhUYXJnZXRJbmZsdWVuY2VzWyIrZVt0XS5uYW1lKyJdIixhLHMpLnNjYWxlKDEvbikpfXJldHVybiBuZXcgTnF0KHQsLTEsbyl9LGZpbmRCeU5hbWU6ZnVuY3Rpb24odCxlKXtsZXQgbj10O2lmKCFBcnJheS5pc0FycmF5KHQpKXtjb25zdCBlPXQ7bj1lLmdlb21ldHJ5JiZlLmdlb21ldHJ5LmFuaW1hdGlvbnN8fGUuYW5pbWF0aW9uc31mb3IobGV0IHQ9MDt0PG4ubGVuZ3RoO3QrKylpZihuW3RdLm5hbWU9PT1lKXJldHVybiBuW3RdO3JldHVybiBudWxsfSxDcmVhdGVDbGlwc0Zyb21Nb3JwaFRhcmdldFNlcXVlbmNlczpmdW5jdGlvbih0LGUsbil7Y29uc3QgaT17fSxyPS9eKFtcdy1dKj8pKFtcZF0rKSQvO2ZvcihsZXQgZT0wLG49dC5sZW5ndGg7ZTxuO2UrKyl7Y29uc3Qgbj10W2VdLG89bi5uYW1lLm1hdGNoKHIpO2lmKG8mJm8ubGVuZ3RoPjEpe2NvbnN0IHQ9b1sxXTtsZXQgZT1pW3RdO2V8fChpW3RdPWU9W10pLGUucHVzaChuKX19Y29uc3Qgbz1bXTtmb3IoY29uc3QgdCBpbiBpKW8ucHVzaChOcXQuQ3JlYXRlRnJvbU1vcnBoVGFyZ2V0U2VxdWVuY2UodCxpW3RdLGUsbikpO3JldHVybiBvfSxwYXJzZUFuaW1hdGlvbjpmdW5jdGlvbih0LGUpe2lmKCF0KXJldHVybiBjb25zb2xlLmVycm9yKCJUSFJFRS5BbmltYXRpb25DbGlwOiBObyBhbmltYXRpb24gaW4gSlNPTkxvYWRlciBkYXRhLiIpLG51bGw7Y29uc3Qgbj1mdW5jdGlvbih0LGUsbixpLHIpe2lmKDAhPT1uLmxlbmd0aCl7Y29uc3Qgbz1bXSxhPVtdO2JxdC5mbGF0dGVuSlNPTihuLG8sYSxpKSwwIT09by5sZW5ndGgmJnIucHVzaChuZXcgdChlLG8sYSkpfX0saT1bXSxyPXQubmFtZXx8ImRlZmF1bHQiLG89dC5mcHN8fDMwLGE9dC5ibGVuZE1vZGU7bGV0IHM9dC5sZW5ndGh8fC0xO2NvbnN0IGw9dC5oaWVyYXJjaHl8fFtdO2ZvcihsZXQgdD0wO3Q8bC5sZW5ndGg7dCsrKXtjb25zdCByPWxbdF0ua2V5cztpZihyJiYwIT09ci5sZW5ndGgpaWYoclswXS5tb3JwaFRhcmdldHMpe2NvbnN0IHQ9e307bGV0IGU7Zm9yKGU9MDtlPHIubGVuZ3RoO2UrKylpZihyW2VdLm1vcnBoVGFyZ2V0cylmb3IobGV0IG49MDtuPHJbZV0ubW9ycGhUYXJnZXRzLmxlbmd0aDtuKyspdFtyW2VdLm1vcnBoVGFyZ2V0c1tuXV09LTE7Zm9yKGNvbnN0IG4gaW4gdCl7Y29uc3QgdD1bXSxvPVtdO2ZvcihsZXQgaT0wO2khPT1yW2VdLm1vcnBoVGFyZ2V0cy5sZW5ndGg7KytpKXtjb25zdCBpPXJbZV07dC5wdXNoKGkudGltZSksby5wdXNoKGkubW9ycGhUYXJnZXQ9PT1uPzE6MCl9aS5wdXNoKG5ldyBDcXQoIi5tb3JwaFRhcmdldEluZmx1ZW5jZVsiK24rIl0iLHQsbykpfXM9dC5sZW5ndGgqKG98fDEpfWVsc2V7Y29uc3Qgbz0iLmJvbmVzWyIrZVt0XS5uYW1lKyJdIjtuKElxdCxvKyIucG9zaXRpb24iLHIsInBvcyIsaSksbihMcXQsbysiLnF1YXRlcm5pb24iLHIsInJvdCIsaSksbihJcXQsbysiLnNjYWxlIixyLCJzY2wiLGkpfX1yZXR1cm4gMD09PWkubGVuZ3RoP251bGw6bmV3IE5xdChyLHMsaSxhKX19KSxPYmplY3QuYXNzaWduKE5xdC5wcm90b3R5cGUse3Jlc2V0RHVyYXRpb246ZnVuY3Rpb24oKXtsZXQgdD0wO2ZvcihsZXQgZT0wLG49dGhpcy50cmFja3MubGVuZ3RoO2UhPT1uOysrZSl7Y29uc3Qgbj10aGlzLnRyYWNrc1tlXTt0PU1hdGgubWF4KHQsbi50aW1lc1tuLnRpbWVzLmxlbmd0aC0xXSl9cmV0dXJuIHRoaXMuZHVyYXRpb249dCx0aGlzfSx0cmltOmZ1bmN0aW9uKCl7Zm9yKGxldCB0PTA7dDx0aGlzLnRyYWNrcy5sZW5ndGg7dCsrKXRoaXMudHJhY2tzW3RdLnRyaW0oMCx0aGlzLmR1cmF0aW9uKTtyZXR1cm4gdGhpc30sdmFsaWRhdGU6ZnVuY3Rpb24oKXtsZXQgdD0hMDtmb3IobGV0IGU9MDtlPHRoaXMudHJhY2tzLmxlbmd0aDtlKyspdD10JiZ0aGlzLnRyYWNrc1tlXS52YWxpZGF0ZSgpO3JldHVybiB0fSxvcHRpbWl6ZTpmdW5jdGlvbigpe2ZvcihsZXQgdD0wO3Q8dGhpcy50cmFja3MubGVuZ3RoO3QrKyl0aGlzLnRyYWNrc1t0XS5vcHRpbWl6ZSgpO3JldHVybiB0aGlzfSxjbG9uZTpmdW5jdGlvbigpe2NvbnN0IHQ9W107Zm9yKGxldCBlPTA7ZTx0aGlzLnRyYWNrcy5sZW5ndGg7ZSsrKXQucHVzaCh0aGlzLnRyYWNrc1tlXS5jbG9uZSgpKTtyZXR1cm4gbmV3IE5xdCh0aGlzLm5hbWUsdGhpcy5kdXJhdGlvbix0LHRoaXMuYmxlbmRNb2RlKX0sdG9KU09OOmZ1bmN0aW9uKCl7cmV0dXJuIE5xdC50b0pTT04odGhpcyl9fSk7Y29uc3QgUnF0PXtlbmFibGVkOiExLGZpbGVzOnt9LGFkZDpmdW5jdGlvbih0LGUpeyExIT09dGhpcy5lbmFibGVkJiYodGhpcy5maWxlc1t0XT1lKX0sZ2V0OmZ1bmN0aW9uKHQpe2lmKCExIT09dGhpcy5lbmFibGVkKXJldHVybiB0aGlzLmZpbGVzW3RdfSxyZW1vdmU6ZnVuY3Rpb24odCl7ZGVsZXRlIHRoaXMuZmlsZXNbdF19LGNsZWFyOmZ1bmN0aW9uKCl7dGhpcy5maWxlcz17fX19O2Z1bmN0aW9uIHpxdCh0LGUsbil7Y29uc3QgaT10aGlzO2xldCByLG89ITEsYT0wLHM9MDtjb25zdCBsPVtdO3RoaXMub25TdGFydD12b2lkIDAsdGhpcy5vbkxvYWQ9dCx0aGlzLm9uUHJvZ3Jlc3M9ZSx0aGlzLm9uRXJyb3I9bix0aGlzLml0ZW1TdGFydD1mdW5jdGlvbih0KXtzKyssITE9PT1vJiZ2b2lkIDAhPT1pLm9uU3RhcnQmJmkub25TdGFydCh0LGEscyksbz0hMH0sdGhpcy5pdGVtRW5kPWZ1bmN0aW9uKHQpe2ErKyx2b2lkIDAhPT1pLm9uUHJvZ3Jlc3MmJmkub25Qcm9ncmVzcyh0LGEscyksYT09PXMmJihvPSExLHZvaWQgMCE9PWkub25Mb2FkJiZpLm9uTG9hZCgpKX0sdGhpcy5pdGVtRXJyb3I9ZnVuY3Rpb24odCl7dm9pZCAwIT09aS5vbkVycm9yJiZpLm9uRXJyb3IodCl9LHRoaXMucmVzb2x2ZVVSTD1mdW5jdGlvbih0KXtyZXR1cm4gcj9yKHQpOnR9LHRoaXMuc2V0VVJMTW9kaWZpZXI9ZnVuY3Rpb24odCl7cmV0dXJuIHI9dCx0aGlzfSx0aGlzLmFkZEhhbmRsZXI9ZnVuY3Rpb24odCxlKXtyZXR1cm4gbC5wdXNoKHQsZSksdGhpc30sdGhpcy5yZW1vdmVIYW5kbGVyPWZ1bmN0aW9uKHQpe2NvbnN0IGU9bC5pbmRleE9mKHQpO3JldHVybi0xIT09ZSYmbC5zcGxpY2UoZSwyKSx0aGlzfSx0aGlzLmdldEhhbmRsZXI9ZnVuY3Rpb24odCl7Zm9yKGxldCBlPTAsbj1sLmxlbmd0aDtlPG47ZSs9Mil7Y29uc3Qgbj1sW2VdLGk9bFtlKzFdO2lmKG4uZ2xvYmFsJiYobi5sYXN0SW5kZXg9MCksbi50ZXN0KHQpKXJldHVybiBpfXJldHVybiBudWxsfX1jb25zdCBEcXQ9bmV3IHpxdDtmdW5jdGlvbiBCcXQodCl7dGhpcy5tYW5hZ2VyPXZvaWQgMCE9PXQ/dDpEcXQsdGhpcy5jcm9zc09yaWdpbj0iYW5vbnltb3VzIix0aGlzLndpdGhDcmVkZW50aWFscz0hMSx0aGlzLnBhdGg9IiIsdGhpcy5yZXNvdXJjZVBhdGg9IiIsdGhpcy5yZXF1ZXN0SGVhZGVyPXt9fU9iamVjdC5hc3NpZ24oQnF0LnByb3RvdHlwZSx7bG9hZDpmdW5jdGlvbigpe30sbG9hZEFzeW5jOmZ1bmN0aW9uKHQsZSl7Y29uc3Qgbj10aGlzO3JldHVybiBuZXcgUHJvbWlzZSgoZnVuY3Rpb24oaSxyKXtuLmxvYWQodCxpLGUscil9KSl9LHBhcnNlOmZ1bmN0aW9uKCl7fSxzZXRDcm9zc09yaWdpbjpmdW5jdGlvbih0KXtyZXR1cm4gdGhpcy5jcm9zc09yaWdpbj10LHRoaXN9LHNldFdpdGhDcmVkZW50aWFsczpmdW5jdGlvbih0KXtyZXR1cm4gdGhpcy53aXRoQ3JlZGVudGlhbHM9dCx0aGlzfSxzZXRQYXRoOmZ1bmN0aW9uKHQpe3JldHVybiB0aGlzLnBhdGg9dCx0aGlzfSxzZXRSZXNvdXJjZVBhdGg6ZnVuY3Rpb24odCl7cmV0dXJuIHRoaXMucmVzb3VyY2VQYXRoPXQsdGhpc30sc2V0UmVxdWVzdEhlYWRlcjpmdW5jdGlvbih0KXtyZXR1cm4gdGhpcy5yZXF1ZXN0SGVhZGVyPXQsdGhpc319KTtjb25zdCBIcXQ9e307ZnVuY3Rpb24gRnF0KHQpe0JxdC5jYWxsKHRoaXMsdCl9ZnVuY3Rpb24gVnF0KHQpe0JxdC5jYWxsKHRoaXMsdCl9ZnVuY3Rpb24ganF0KHQpe0JxdC5jYWxsKHRoaXMsdCl9ZnVuY3Rpb24gVXF0KHQpe0JxdC5jYWxsKHRoaXMsdCl9ZnVuY3Rpb24gR3F0KHQpe0JxdC5jYWxsKHRoaXMsdCl9ZnVuY3Rpb24gV3F0KHQpe0JxdC5jYWxsKHRoaXMsdCl9ZnVuY3Rpb24gcXF0KHQpe0JxdC5jYWxsKHRoaXMsdCl9ZnVuY3Rpb24gWXF0KCl7dGhpcy50eXBlPSJDdXJ2ZSIsdGhpcy5hcmNMZW5ndGhEaXZpc2lvbnM9MjAwfWZ1bmN0aW9uIFhxdCh0LGUsbixpLHIsbyxhLHMpe1lxdC5jYWxsKHRoaXMpLHRoaXMudHlwZT0iRWxsaXBzZUN1cnZlIix0aGlzLmFYPXR8fDAsdGhpcy5hWT1lfHwwLHRoaXMueFJhZGl1cz1ufHwxLHRoaXMueVJhZGl1cz1pfHwxLHRoaXMuYVN0YXJ0QW5nbGU9cnx8MCx0aGlzLmFFbmRBbmdsZT1vfHwyKk1hdGguUEksdGhpcy5hQ2xvY2t3aXNlPWF8fCExLHRoaXMuYVJvdGF0aW9uPXN8fDB9ZnVuY3Rpb24gJHF0KHQsZSxuLGkscixvKXtYcXQuY2FsbCh0aGlzLHQsZSxuLG4saSxyLG8pLHRoaXMudHlwZT0iQXJjQ3VydmUifWZ1bmN0aW9uIEtxdCgpe2xldCB0PTAsZT0wLG49MCxpPTA7ZnVuY3Rpb24gcihyLG8sYSxzKXt0PXIsZT1hLG49LTMqciszKm8tMiphLXMsaT0yKnItMipvK2Erc31yZXR1cm57aW5pdENhdG11bGxSb206ZnVuY3Rpb24odCxlLG4saSxvKXtyKGUsbixvKihuLXQpLG8qKGktZSkpfSxpbml0Tm9udW5pZm9ybUNhdG11bGxSb206ZnVuY3Rpb24odCxlLG4saSxvLGEscyl7bGV0IGw9KGUtdCkvby0obi10KS8obythKSsobi1lKS9hLGM9KG4tZSkvYS0oaS1lKS8oYStzKSsoaS1uKS9zO2wqPWEsYyo9YSxyKGUsbixsLGMpfSxjYWxjOmZ1bmN0aW9uKHIpe2NvbnN0IG89cipyO3JldHVybiB0K2UqcituKm8raSoobypyKX19fUZxdC5wcm90b3R5cGU9T2JqZWN0LmFzc2lnbihPYmplY3QuY3JlYXRlKEJxdC5wcm90b3R5cGUpLHtjb25zdHJ1Y3RvcjpGcXQsbG9hZDpmdW5jdGlvbih0LGUsbixpKXt2b2lkIDA9PT10JiYodD0iIiksdm9pZCAwIT09dGhpcy5wYXRoJiYodD10aGlzLnBhdGgrdCksdD10aGlzLm1hbmFnZXIucmVzb2x2ZVVSTCh0KTtjb25zdCByPXRoaXMsbz1ScXQuZ2V0KHQpO2lmKHZvaWQgMCE9PW8pcmV0dXJuIHIubWFuYWdlci5pdGVtU3RhcnQodCksc2V0VGltZW91dCgoZnVuY3Rpb24oKXtlJiZlKG8pLHIubWFuYWdlci5pdGVtRW5kKHQpfSksMCksbztpZih2b2lkIDAhPT1IcXRbdF0pcmV0dXJuIHZvaWQgSHF0W3RdLnB1c2goe29uTG9hZDplLG9uUHJvZ3Jlc3M6bixvbkVycm9yOml9KTtjb25zdCBhPXQubWF0Y2goL15kYXRhOiguKj8pKDtiYXNlNjQpPywoLiopJC8pO2xldCBzO2lmKGEpe2NvbnN0IG49YVsxXSxvPSEhYVsyXTtsZXQgcz1hWzNdO3M9ZGVjb2RlVVJJQ29tcG9uZW50KHMpLG8mJihzPWF0b2IocykpO3RyeXtsZXQgaTtjb25zdCBvPSh0aGlzLnJlc3BvbnNlVHlwZXx8IiIpLnRvTG93ZXJDYXNlKCk7c3dpdGNoKG8pe2Nhc2UiYXJyYXlidWZmZXIiOmNhc2UiYmxvYiI6Y29uc3QgdD1uZXcgVWludDhBcnJheShzLmxlbmd0aCk7Zm9yKGxldCBlPTA7ZTxzLmxlbmd0aDtlKyspdFtlXT1zLmNoYXJDb2RlQXQoZSk7aT0iYmxvYiI9PT1vP25ldyBCbG9iKFt0LmJ1ZmZlcl0se3R5cGU6bn0pOnQuYnVmZmVyO2JyZWFrO2Nhc2UiZG9jdW1lbnQiOmNvbnN0IGU9bmV3IERPTVBhcnNlcjtpPWUucGFyc2VGcm9tU3RyaW5nKHMsbik7YnJlYWs7Y2FzZSJqc29uIjppPUpTT04ucGFyc2Uocyk7YnJlYWs7ZGVmYXVsdDppPXN9c2V0VGltZW91dCgoZnVuY3Rpb24oKXtlJiZlKGkpLHIubWFuYWdlci5pdGVtRW5kKHQpfSksMCl9Y2F0Y2goZSl7c2V0VGltZW91dCgoZnVuY3Rpb24oKXtpJiZpKGUpLHIubWFuYWdlci5pdGVtRXJyb3IodCksci5tYW5hZ2VyLml0ZW1FbmQodCl9KSwwKX19ZWxzZXtIcXRbdF09W10sSHF0W3RdLnB1c2goe29uTG9hZDplLG9uUHJvZ3Jlc3M6bixvbkVycm9yOml9KSxzPW5ldyBYTUxIdHRwUmVxdWVzdCxzLm9wZW4oIkdFVCIsdCwhMCkscy5hZGRFdmVudExpc3RlbmVyKCJsb2FkIiwoZnVuY3Rpb24oZSl7Y29uc3Qgbj10aGlzLnJlc3BvbnNlLGk9SHF0W3RdO2lmKGRlbGV0ZSBIcXRbdF0sMjAwPT09dGhpcy5zdGF0dXN8fDA9PT10aGlzLnN0YXR1cyl7MD09PXRoaXMuc3RhdHVzJiZjb25zb2xlLndhcm4oIlRIUkVFLkZpbGVMb2FkZXI6IEhUVFAgU3RhdHVzIDAgcmVjZWl2ZWQuIiksUnF0LmFkZCh0LG4pO2ZvcihsZXQgdD0wLGU9aS5sZW5ndGg7dDxlO3QrKyl7Y29uc3QgZT1pW3RdO2Uub25Mb2FkJiZlLm9uTG9hZChuKX1yLm1hbmFnZXIuaXRlbUVuZCh0KX1lbHNle2ZvcihsZXQgdD0wLG49aS5sZW5ndGg7dDxuO3QrKyl7Y29uc3Qgbj1pW3RdO24ub25FcnJvciYmbi5vbkVycm9yKGUpfXIubWFuYWdlci5pdGVtRXJyb3IodCksci5tYW5hZ2VyLml0ZW1FbmQodCl9fSksITEpLHMuYWRkRXZlbnRMaXN0ZW5lcigicHJvZ3Jlc3MiLChmdW5jdGlvbihlKXtjb25zdCBuPUhxdFt0XTtmb3IobGV0IHQ9MCxpPW4ubGVuZ3RoO3Q8aTt0Kyspe2NvbnN0IGk9blt0XTtpLm9uUHJvZ3Jlc3MmJmkub25Qcm9ncmVzcyhlKX19KSwhMSkscy5hZGRFdmVudExpc3RlbmVyKCJlcnJvciIsKGZ1bmN0aW9uKGUpe2NvbnN0IG49SHF0W3RdO2RlbGV0ZSBIcXRbdF07Zm9yKGxldCB0PTAsaT1uLmxlbmd0aDt0PGk7dCsrKXtjb25zdCBpPW5bdF07aS5vbkVycm9yJiZpLm9uRXJyb3IoZSl9ci5tYW5hZ2VyLml0ZW1FcnJvcih0KSxyLm1hbmFnZXIuaXRlbUVuZCh0KX0pLCExKSxzLmFkZEV2ZW50TGlzdGVuZXIoImFib3J0IiwoZnVuY3Rpb24oZSl7Y29uc3Qgbj1IcXRbdF07ZGVsZXRlIEhxdFt0XTtmb3IobGV0IHQ9MCxpPW4ubGVuZ3RoO3Q8aTt0Kyspe2NvbnN0IGk9blt0XTtpLm9uRXJyb3ImJmkub25FcnJvcihlKX1yLm1hbmFnZXIuaXRlbUVycm9yKHQpLHIubWFuYWdlci5pdGVtRW5kKHQpfSksITEpLHZvaWQgMCE9PXRoaXMucmVzcG9uc2VUeXBlJiYocy5yZXNwb25zZVR5cGU9dGhpcy5yZXNwb25zZVR5cGUpLHZvaWQgMCE9PXRoaXMud2l0aENyZWRlbnRpYWxzJiYocy53aXRoQ3JlZGVudGlhbHM9dGhpcy53aXRoQ3JlZGVudGlhbHMpLHMub3ZlcnJpZGVNaW1lVHlwZSYmcy5vdmVycmlkZU1pbWVUeXBlKHZvaWQgMCE9PXRoaXMubWltZVR5cGU/dGhpcy5taW1lVHlwZToidGV4dC9wbGFpbiIpO2Zvcihjb25zdCB0IGluIHRoaXMucmVxdWVzdEhlYWRlcilzLnNldFJlcXVlc3RIZWFkZXIodCx0aGlzLnJlcXVlc3RIZWFkZXJbdF0pO3Muc2VuZChudWxsKX1yZXR1cm4gci5tYW5hZ2VyLml0ZW1TdGFydCh0KSxzfSxzZXRSZXNwb25zZVR5cGU6ZnVuY3Rpb24odCl7cmV0dXJuIHRoaXMucmVzcG9uc2VUeXBlPXQsdGhpc30sc2V0TWltZVR5cGU6ZnVuY3Rpb24odCl7cmV0dXJuIHRoaXMubWltZVR5cGU9dCx0aGlzfX0pLFZxdC5wcm90b3R5cGU9T2JqZWN0LmFzc2lnbihPYmplY3QuY3JlYXRlKEJxdC5wcm90b3R5cGUpLHtjb25zdHJ1Y3RvcjpWcXQsbG9hZDpmdW5jdGlvbih0LGUsbixpKXtjb25zdCByPXRoaXMsbz1uZXcgRnF0KHIubWFuYWdlcik7by5zZXRQYXRoKHIucGF0aCksby5zZXRSZXF1ZXN0SGVhZGVyKHIucmVxdWVzdEhlYWRlciksby5zZXRXaXRoQ3JlZGVudGlhbHMoci53aXRoQ3JlZGVudGlhbHMpLG8ubG9hZCh0LChmdW5jdGlvbihuKXt0cnl7ZShyLnBhcnNlKEpTT04ucGFyc2UobikpKX1jYXRjaChlKXtpP2koZSk6Y29uc29sZS5lcnJvcihlKSxyLm1hbmFnZXIuaXRlbUVycm9yKHQpfX0pLG4saSl9LHBhcnNlOmZ1bmN0aW9uKHQpe2NvbnN0IGU9W107Zm9yKGxldCBuPTA7bjx0Lmxlbmd0aDtuKyspe2NvbnN0IGk9TnF0LnBhcnNlKHRbbl0pO2UucHVzaChpKX1yZXR1cm4gZX19KSxqcXQucHJvdG90eXBlPU9iamVjdC5hc3NpZ24oT2JqZWN0LmNyZWF0ZShCcXQucHJvdG90eXBlKSx7Y29uc3RydWN0b3I6anF0LGxvYWQ6ZnVuY3Rpb24odCxlLG4saSl7Y29uc3Qgcj10aGlzLG89W10sYT1uZXcgc1d0LHM9bmV3IEZxdCh0aGlzLm1hbmFnZXIpO3Muc2V0UGF0aCh0aGlzLnBhdGgpLHMuc2V0UmVzcG9uc2VUeXBlKCJhcnJheWJ1ZmZlciIpLHMuc2V0UmVxdWVzdEhlYWRlcih0aGlzLnJlcXVlc3RIZWFkZXIpLHMuc2V0V2l0aENyZWRlbnRpYWxzKHIud2l0aENyZWRlbnRpYWxzKTtsZXQgbD0wO2Z1bmN0aW9uIGMoYyl7cy5sb2FkKHRbY10sKGZ1bmN0aW9uKHQpe2NvbnN0IG49ci5wYXJzZSh0LCEwKTtvW2NdPXt3aWR0aDpuLndpZHRoLGhlaWdodDpuLmhlaWdodCxmb3JtYXQ6bi5mb3JtYXQsbWlwbWFwczpuLm1pcG1hcHN9LGwrPTEsNj09PWwmJigxPT09bi5taXBtYXBDb3VudCYmKGEubWluRmlsdGVyPWdCdCksYS5pbWFnZT1vLGEuZm9ybWF0PW4uZm9ybWF0LGEubmVlZHNVcGRhdGU9ITAsZSYmZShhKSl9KSxuLGkpfWlmKEFycmF5LmlzQXJyYXkodCkpZm9yKGxldCBlPTAsbj10Lmxlbmd0aDtlPG47KytlKWMoZSk7ZWxzZSBzLmxvYWQodCwoZnVuY3Rpb24odCl7Y29uc3Qgbj1yLnBhcnNlKHQsITApO2lmKG4uaXNDdWJlbWFwKXtjb25zdCB0PW4ubWlwbWFwcy5sZW5ndGgvbi5taXBtYXBDb3VudDtmb3IobGV0IGU9MDtlPHQ7ZSsrKXtvW2VdPXttaXBtYXBzOltdfTtmb3IobGV0IHQ9MDt0PG4ubWlwbWFwQ291bnQ7dCsrKW9bZV0ubWlwbWFwcy5wdXNoKG4ubWlwbWFwc1tlKm4ubWlwbWFwQ291bnQrdF0pLG9bZV0uZm9ybWF0PW4uZm9ybWF0LG9bZV0ud2lkdGg9bi53aWR0aCxvW2VdLmhlaWdodD1uLmhlaWdodH1hLmltYWdlPW99ZWxzZSBhLmltYWdlLndpZHRoPW4ud2lkdGgsYS5pbWFnZS5oZWlnaHQ9bi5oZWlnaHQsYS5taXBtYXBzPW4ubWlwbWFwczsxPT09bi5taXBtYXBDb3VudCYmKGEubWluRmlsdGVyPWdCdCksYS5mb3JtYXQ9bi5mb3JtYXQsYS5uZWVkc1VwZGF0ZT0hMCxlJiZlKGEpfSksbixpKTtyZXR1cm4gYX19KSxVcXQucHJvdG90eXBlPU9iamVjdC5hc3NpZ24oT2JqZWN0LmNyZWF0ZShCcXQucHJvdG90eXBlKSx7Y29uc3RydWN0b3I6VXF0LGxvYWQ6ZnVuY3Rpb24odCxlLG4saSl7dm9pZCAwIT09dGhpcy5wYXRoJiYodD10aGlzLnBhdGgrdCksdD10aGlzLm1hbmFnZXIucmVzb2x2ZVVSTCh0KTtjb25zdCByPXRoaXMsbz1ScXQuZ2V0KHQpO2lmKHZvaWQgMCE9PW8pcmV0dXJuIHIubWFuYWdlci5pdGVtU3RhcnQodCksc2V0VGltZW91dCgoZnVuY3Rpb24oKXtlJiZlKG8pLHIubWFuYWdlci5pdGVtRW5kKHQpfSksMCksbztjb25zdCBhPWRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3dy53My5vcmcvMTk5OS94aHRtbCIsImltZyIpO2Z1bmN0aW9uIHMoKXthLnJlbW92ZUV2ZW50TGlzdGVuZXIoImxvYWQiLHMsITEpLGEucmVtb3ZlRXZlbnRMaXN0ZW5lcigiZXJyb3IiLGwsITEpLFJxdC5hZGQodCx0aGlzKSxlJiZlKHRoaXMpLHIubWFuYWdlci5pdGVtRW5kKHQpfWZ1bmN0aW9uIGwoZSl7YS5yZW1vdmVFdmVudExpc3RlbmVyKCJsb2FkIixzLCExKSxhLnJlbW92ZUV2ZW50TGlzdGVuZXIoImVycm9yIixsLCExKSxpJiZpKGUpLHIubWFuYWdlci5pdGVtRXJyb3IodCksci5tYW5hZ2VyLml0ZW1FbmQodCl9cmV0dXJuIGEuYWRkRXZlbnRMaXN0ZW5lcigibG9hZCIscywhMSksYS5hZGRFdmVudExpc3RlbmVyKCJlcnJvciIsbCwhMSksImRhdGE6IiE9PXQuc3Vic3RyKDAsNSkmJnZvaWQgMCE9PXRoaXMuY3Jvc3NPcmlnaW4mJihhLmNyb3NzT3JpZ2luPXRoaXMuY3Jvc3NPcmlnaW4pLHIubWFuYWdlci5pdGVtU3RhcnQodCksYS5zcmM9dCxhfX0pLEdxdC5wcm90b3R5cGU9T2JqZWN0LmFzc2lnbihPYmplY3QuY3JlYXRlKEJxdC5wcm90b3R5cGUpLHtjb25zdHJ1Y3RvcjpHcXQsbG9hZDpmdW5jdGlvbih0LGUsbixpKXtjb25zdCByPW5ldyBqVnQsbz1uZXcgVXF0KHRoaXMubWFuYWdlcik7by5zZXRDcm9zc09yaWdpbih0aGlzLmNyb3NzT3JpZ2luKSxvLnNldFBhdGgodGhpcy5wYXRoKTtsZXQgYT0wO2Z1bmN0aW9uIHMobil7by5sb2FkKHRbbl0sKGZ1bmN0aW9uKHQpe3IuaW1hZ2VzW25dPXQsYSsrLDY9PT1hJiYoci5uZWVkc1VwZGF0ZT0hMCxlJiZlKHIpKX0pLHZvaWQgMCxpKX1mb3IobGV0IGU9MDtlPHQubGVuZ3RoOysrZSlzKGUpO3JldHVybiByfX0pLFdxdC5wcm90b3R5cGU9T2JqZWN0LmFzc2lnbihPYmplY3QuY3JlYXRlKEJxdC5wcm90b3R5cGUpLHtjb25zdHJ1Y3RvcjpXcXQsbG9hZDpmdW5jdGlvbih0LGUsbixpKXtjb25zdCByPXRoaXMsbz1uZXcgR1Z0LGE9bmV3IEZxdCh0aGlzLm1hbmFnZXIpO3JldHVybiBhLnNldFJlc3BvbnNlVHlwZSgiYXJyYXlidWZmZXIiKSxhLnNldFJlcXVlc3RIZWFkZXIodGhpcy5yZXF1ZXN0SGVhZGVyKSxhLnNldFBhdGgodGhpcy5wYXRoKSxhLnNldFdpdGhDcmVkZW50aWFscyhyLndpdGhDcmVkZW50aWFscyksYS5sb2FkKHQsKGZ1bmN0aW9uKHQpe2NvbnN0IG49ci5wYXJzZSh0KTtuJiYodm9pZCAwIT09bi5pbWFnZT9vLmltYWdlPW4uaW1hZ2U6dm9pZCAwIT09bi5kYXRhJiYoby5pbWFnZS53aWR0aD1uLndpZHRoLG8uaW1hZ2UuaGVpZ2h0PW4uaGVpZ2h0LG8uaW1hZ2UuZGF0YT1uLmRhdGEpLG8ud3JhcFM9dm9pZCAwIT09bi53cmFwUz9uLndyYXBTOmhCdCxvLndyYXBUPXZvaWQgMCE9PW4ud3JhcFQ/bi53cmFwVDpoQnQsby5tYWdGaWx0ZXI9dm9pZCAwIT09bi5tYWdGaWx0ZXI/bi5tYWdGaWx0ZXI6Z0J0LG8ubWluRmlsdGVyPXZvaWQgMCE9PW4ubWluRmlsdGVyP24ubWluRmlsdGVyOmdCdCxvLmFuaXNvdHJvcHk9dm9pZCAwIT09bi5hbmlzb3Ryb3B5P24uYW5pc290cm9weToxLHZvaWQgMCE9PW4uZW5jb2RpbmcmJihvLmVuY29kaW5nPW4uZW5jb2RpbmcpLHZvaWQgMCE9PW4uZmxpcFkmJihvLmZsaXBZPW4uZmxpcFkpLHZvaWQgMCE9PW4uZm9ybWF0JiYoby5mb3JtYXQ9bi5mb3JtYXQpLHZvaWQgMCE9PW4udHlwZSYmKG8udHlwZT1uLnR5cGUpLHZvaWQgMCE9PW4ubWlwbWFwcyYmKG8ubWlwbWFwcz1uLm1pcG1hcHMsby5taW5GaWx0ZXI9eUJ0KSwxPT09bi5taXBtYXBDb3VudCYmKG8ubWluRmlsdGVyPWdCdCksby5uZWVkc1VwZGF0ZT0hMCxlJiZlKG8sbikpfSksbixpKSxvfX0pLHFxdC5wcm90b3R5cGU9T2JqZWN0LmFzc2lnbihPYmplY3QuY3JlYXRlKEJxdC5wcm90b3R5cGUpLHtjb25zdHJ1Y3RvcjpxcXQsbG9hZDpmdW5jdGlvbih0LGUsbixpKXtjb25zdCByPW5ldyBwSHQsbz1uZXcgVXF0KHRoaXMubWFuYWdlcik7cmV0dXJuIG8uc2V0Q3Jvc3NPcmlnaW4odGhpcy5jcm9zc09yaWdpbiksby5zZXRQYXRoKHRoaXMucGF0aCksby5sb2FkKHQsKGZ1bmN0aW9uKG4pe3IuaW1hZ2U9bjtjb25zdCBpPXQuc2VhcmNoKC9cLmpwZT9nKCR8XD8pL2kpPjB8fDA9PT10LnNlYXJjaCgvXmRhdGFcOmltYWdlXC9qcGVnLyk7ci5mb3JtYXQ9aT9FQnQ6VEJ0LHIubmVlZHNVcGRhdGU9ITAsdm9pZCAwIT09ZSYmZShyKX0pLG4saSkscn19KSxPYmplY3QuYXNzaWduKFlxdC5wcm90b3R5cGUse2dldFBvaW50OmZ1bmN0aW9uKCl7cmV0dXJuIGNvbnNvbGUud2FybigiVEhSRUUuQ3VydmU6IC5nZXRQb2ludCgpIG5vdCBpbXBsZW1lbnRlZC4iKSxudWxsfSxnZXRQb2ludEF0OmZ1bmN0aW9uKHQsZSl7Y29uc3Qgbj10aGlzLmdldFV0b1RtYXBwaW5nKHQpO3JldHVybiB0aGlzLmdldFBvaW50KG4sZSl9LGdldFBvaW50czpmdW5jdGlvbih0PTUpe2NvbnN0IGU9W107Zm9yKGxldCBuPTA7bjw9dDtuKyspZS5wdXNoKHRoaXMuZ2V0UG9pbnQobi90KSk7cmV0dXJuIGV9LGdldFNwYWNlZFBvaW50czpmdW5jdGlvbih0PTUpe2NvbnN0IGU9W107Zm9yKGxldCBuPTA7bjw9dDtuKyspZS5wdXNoKHRoaXMuZ2V0UG9pbnRBdChuL3QpKTtyZXR1cm4gZX0sZ2V0TGVuZ3RoOmZ1bmN0aW9uKCl7Y29uc3QgdD10aGlzLmdldExlbmd0aHMoKTtyZXR1cm4gdFt0Lmxlbmd0aC0xXX0sZ2V0TGVuZ3RoczpmdW5jdGlvbih0KXtpZih2b2lkIDA9PT10JiYodD10aGlzLmFyY0xlbmd0aERpdmlzaW9ucyksdGhpcy5jYWNoZUFyY0xlbmd0aHMmJnRoaXMuY2FjaGVBcmNMZW5ndGhzLmxlbmd0aD09PXQrMSYmIXRoaXMubmVlZHNVcGRhdGUpcmV0dXJuIHRoaXMuY2FjaGVBcmNMZW5ndGhzO3RoaXMubmVlZHNVcGRhdGU9ITE7Y29uc3QgZT1bXTtsZXQgbixpPXRoaXMuZ2V0UG9pbnQoMCkscj0wO2UucHVzaCgwKTtmb3IobGV0IG89MTtvPD10O28rKyluPXRoaXMuZ2V0UG9pbnQoby90KSxyKz1uLmRpc3RhbmNlVG8oaSksZS5wdXNoKHIpLGk9bjtyZXR1cm4gdGhpcy5jYWNoZUFyY0xlbmd0aHM9ZSxlfSx1cGRhdGVBcmNMZW5ndGhzOmZ1bmN0aW9uKCl7dGhpcy5uZWVkc1VwZGF0ZT0hMCx0aGlzLmdldExlbmd0aHMoKX0sZ2V0VXRvVG1hcHBpbmc6ZnVuY3Rpb24odCxlKXtjb25zdCBuPXRoaXMuZ2V0TGVuZ3RocygpO2xldCBpPTA7Y29uc3Qgcj1uLmxlbmd0aDtsZXQgbztvPWV8fHQqbltyLTFdO2xldCBhLHM9MCxsPXItMTtmb3IoO3M8PWw7KWlmKGk9TWF0aC5mbG9vcihzKyhsLXMpLzIpLGE9bltpXS1vLGE8MClzPWkrMTtlbHNle2lmKCEoYT4wKSl7bD1pO2JyZWFrfWw9aS0xfWlmKGk9bCxuW2ldPT09bylyZXR1cm4gaS8oci0xKTtjb25zdCBjPW5baV07cmV0dXJuKGkrKG8tYykvKG5baSsxXS1jKSkvKHItMSl9LGdldFRhbmdlbnQ6ZnVuY3Rpb24odCxlKXtjb25zdCBuPTFlLTQ7bGV0IGk9dC1uLHI9dCtuO2k8MCYmKGk9MCkscj4xJiYocj0xKTtjb25zdCBvPXRoaXMuZ2V0UG9pbnQoaSksYT10aGlzLmdldFBvaW50KHIpLHM9ZXx8KG8uaXNWZWN0b3IyP25ldyBsSHQ6bmV3IHlIdCk7cmV0dXJuIHMuY29weShhKS5zdWIobykubm9ybWFsaXplKCksc30sZ2V0VGFuZ2VudEF0OmZ1bmN0aW9uKHQsZSl7Y29uc3Qgbj10aGlzLmdldFV0b1RtYXBwaW5nKHQpO3JldHVybiB0aGlzLmdldFRhbmdlbnQobixlKX0sY29tcHV0ZUZyZW5ldEZyYW1lczpmdW5jdGlvbih0LGUpe2NvbnN0IG49bmV3IHlIdCxpPVtdLHI9W10sbz1bXSxhPW5ldyB5SHQscz1uZXcgcUh0O2ZvcihsZXQgZT0wO2U8PXQ7ZSsrKWlbZV09dGhpcy5nZXRUYW5nZW50QXQoZS90LG5ldyB5SHQpLGlbZV0ubm9ybWFsaXplKCk7clswXT1uZXcgeUh0LG9bMF09bmV3IHlIdDtsZXQgbD1OdW1iZXIuTUFYX1ZBTFVFO2NvbnN0IGM9TWF0aC5hYnMoaVswXS54KSx1PU1hdGguYWJzKGlbMF0ueSksaD1NYXRoLmFicyhpWzBdLnopO2M8PWwmJihsPWMsbi5zZXQoMSwwLDApKSx1PD1sJiYobD11LG4uc2V0KDAsMSwwKSksaDw9bCYmbi5zZXQoMCwwLDEpLGEuY3Jvc3NWZWN0b3JzKGlbMF0sbikubm9ybWFsaXplKCksclswXS5jcm9zc1ZlY3RvcnMoaVswXSxhKSxvWzBdLmNyb3NzVmVjdG9ycyhpWzBdLHJbMF0pO2ZvcihsZXQgZT0xO2U8PXQ7ZSsrKXtpZihyW2VdPXJbZS0xXS5jbG9uZSgpLG9bZV09b1tlLTFdLmNsb25lKCksYS5jcm9zc1ZlY3RvcnMoaVtlLTFdLGlbZV0pLGEubGVuZ3RoKCk+TnVtYmVyLkVQU0lMT04pe2Eubm9ybWFsaXplKCk7Y29uc3QgdD1NYXRoLmFjb3Moc0h0LmNsYW1wKGlbZS0xXS5kb3QoaVtlXSksLTEsMSkpO3JbZV0uYXBwbHlNYXRyaXg0KHMubWFrZVJvdGF0aW9uQXhpcyhhLHQpKX1vW2VdLmNyb3NzVmVjdG9ycyhpW2VdLHJbZV0pfWlmKCEwPT09ZSl7bGV0IGU9TWF0aC5hY29zKHNIdC5jbGFtcChyWzBdLmRvdChyW3RdKSwtMSwxKSk7ZS89dCxpWzBdLmRvdChhLmNyb3NzVmVjdG9ycyhyWzBdLHJbdF0pKT4wJiYoZT0tZSk7Zm9yKGxldCBuPTE7bjw9dDtuKyspcltuXS5hcHBseU1hdHJpeDQocy5tYWtlUm90YXRpb25BeGlzKGlbbl0sZSpuKSksb1tuXS5jcm9zc1ZlY3RvcnMoaVtuXSxyW25dKX1yZXR1cm57dGFuZ2VudHM6aSxub3JtYWxzOnIsYmlub3JtYWxzOm99fSxjbG9uZTpmdW5jdGlvbigpe3JldHVybihuZXcgdGhpcy5jb25zdHJ1Y3RvcikuY29weSh0aGlzKX0sY29weTpmdW5jdGlvbih0KXtyZXR1cm4gdGhpcy5hcmNMZW5ndGhEaXZpc2lvbnM9dC5hcmNMZW5ndGhEaXZpc2lvbnMsdGhpc30sdG9KU09OOmZ1bmN0aW9uKCl7Y29uc3QgdD17bWV0YWRhdGE6e3ZlcnNpb246NC41LHR5cGU6IkN1cnZlIixnZW5lcmF0b3I6IkN1cnZlLnRvSlNPTiJ9fTtyZXR1cm4gdC5hcmNMZW5ndGhEaXZpc2lvbnM9dGhpcy5hcmNMZW5ndGhEaXZpc2lvbnMsdC50eXBlPXRoaXMudHlwZSx0fSxmcm9tSlNPTjpmdW5jdGlvbih0KXtyZXR1cm4gdGhpcy5hcmNMZW5ndGhEaXZpc2lvbnM9dC5hcmNMZW5ndGhEaXZpc2lvbnMsdGhpc319KSwoWHF0LnByb3RvdHlwZT1PYmplY3QuY3JlYXRlKFlxdC5wcm90b3R5cGUpKS5jb25zdHJ1Y3Rvcj1YcXQsWHF0LnByb3RvdHlwZS5pc0VsbGlwc2VDdXJ2ZT0hMCxYcXQucHJvdG90eXBlLmdldFBvaW50PWZ1bmN0aW9uKHQsZSl7Y29uc3Qgbj1lfHxuZXcgbEh0LGk9MipNYXRoLlBJO2xldCByPXRoaXMuYUVuZEFuZ2xlLXRoaXMuYVN0YXJ0QW5nbGU7Y29uc3Qgbz1NYXRoLmFicyhyKTxOdW1iZXIuRVBTSUxPTjtmb3IoO3I8MDspcis9aTtmb3IoO3I+aTspci09aTtyPE51bWJlci5FUFNJTE9OJiYocj1vPzA6aSksITAhPT10aGlzLmFDbG9ja3dpc2V8fG98fChyPT09aT9yPS1pOnItPWkpO2NvbnN0IGE9dGhpcy5hU3RhcnRBbmdsZSt0KnI7bGV0IHM9dGhpcy5hWCt0aGlzLnhSYWRpdXMqTWF0aC5jb3MoYSksbD10aGlzLmFZK3RoaXMueVJhZGl1cypNYXRoLnNpbihhKTtpZigwIT09dGhpcy5hUm90YXRpb24pe2NvbnN0IHQ9TWF0aC5jb3ModGhpcy5hUm90YXRpb24pLGU9TWF0aC5zaW4odGhpcy5hUm90YXRpb24pLG49cy10aGlzLmFYLGk9bC10aGlzLmFZO3M9bip0LWkqZSt0aGlzLmFYLGw9biplK2kqdCt0aGlzLmFZfXJldHVybiBuLnNldChzLGwpfSxYcXQucHJvdG90eXBlLmNvcHk9ZnVuY3Rpb24odCl7cmV0dXJuIFlxdC5wcm90b3R5cGUuY29weS5jYWxsKHRoaXMsdCksdGhpcy5hWD10LmFYLHRoaXMuYVk9dC5hWSx0aGlzLnhSYWRpdXM9dC54UmFkaXVzLHRoaXMueVJhZGl1cz10LnlSYWRpdXMsdGhpcy5hU3RhcnRBbmdsZT10LmFTdGFydEFuZ2xlLHRoaXMuYUVuZEFuZ2xlPXQuYUVuZEFuZ2xlLHRoaXMuYUNsb2Nrd2lzZT10LmFDbG9ja3dpc2UsdGhpcy5hUm90YXRpb249dC5hUm90YXRpb24sdGhpc30sWHF0LnByb3RvdHlwZS50b0pTT049ZnVuY3Rpb24oKXtjb25zdCB0PVlxdC5wcm90b3R5cGUudG9KU09OLmNhbGwodGhpcyk7cmV0dXJuIHQuYVg9dGhpcy5hWCx0LmFZPXRoaXMuYVksdC54UmFkaXVzPXRoaXMueFJhZGl1cyx0LnlSYWRpdXM9dGhpcy55UmFkaXVzLHQuYVN0YXJ0QW5nbGU9dGhpcy5hU3RhcnRBbmdsZSx0LmFFbmRBbmdsZT10aGlzLmFFbmRBbmdsZSx0LmFDbG9ja3dpc2U9dGhpcy5hQ2xvY2t3aXNlLHQuYVJvdGF0aW9uPXRoaXMuYVJvdGF0aW9uLHR9LFhxdC5wcm90b3R5cGUuZnJvbUpTT049ZnVuY3Rpb24odCl7cmV0dXJuIFlxdC5wcm90b3R5cGUuZnJvbUpTT04uY2FsbCh0aGlzLHQpLHRoaXMuYVg9dC5hWCx0aGlzLmFZPXQuYVksdGhpcy54UmFkaXVzPXQueFJhZGl1cyx0aGlzLnlSYWRpdXM9dC55UmFkaXVzLHRoaXMuYVN0YXJ0QW5nbGU9dC5hU3RhcnRBbmdsZSx0aGlzLmFFbmRBbmdsZT10LmFFbmRBbmdsZSx0aGlzLmFDbG9ja3dpc2U9dC5hQ2xvY2t3aXNlLHRoaXMuYVJvdGF0aW9uPXQuYVJvdGF0aW9uLHRoaXN9LCgkcXQucHJvdG90eXBlPU9iamVjdC5jcmVhdGUoWHF0LnByb3RvdHlwZSkpLmNvbnN0cnVjdG9yPSRxdCwkcXQucHJvdG90eXBlLmlzQXJjQ3VydmU9ITA7Y29uc3QgWnF0PW5ldyB5SHQsSnF0PW5ldyBLcXQsUXF0PW5ldyBLcXQsdFl0PW5ldyBLcXQ7ZnVuY3Rpb24gZVl0KHQ9W10sZT0hMSxuPSJjZW50cmlwZXRhbCIsaT0uNSl7WXF0LmNhbGwodGhpcyksdGhpcy50eXBlPSJDYXRtdWxsUm9tQ3VydmUzIix0aGlzLnBvaW50cz10LHRoaXMuY2xvc2VkPWUsdGhpcy5jdXJ2ZVR5cGU9bix0aGlzLnRlbnNpb249aX1mdW5jdGlvbiBuWXQodCxlLG4saSxyKXtjb25zdCBvPS41KihpLWUpLGE9LjUqKHItbikscz10KnQ7cmV0dXJuKDIqbi0yKmkrbythKSoodCpzKSsoLTMqbiszKmktMipvLWEpKnMrbyp0K259ZnVuY3Rpb24gaVl0KHQsZSxuLGkpe3JldHVybihmdW5jdGlvbiByKHQsZSl7Y29uc3Qgbj0xLXQ7cmV0dXJuIG4qbiplfSkodCxlKSsoZnVuY3Rpb24gbyh0LGUpe3JldHVybiAyKigxLXQpKnQqZX0pKHQsbikrKGZ1bmN0aW9uIGEodCxlKXtyZXR1cm4gdCp0KmV9KSh0LGkpfWZ1bmN0aW9uIHJZdCh0LGUsbixpLHIpe3JldHVybihmdW5jdGlvbiBvKHQsZSl7Y29uc3Qgbj0xLXQ7cmV0dXJuIG4qbipuKmV9KSh0LGUpKyhmdW5jdGlvbiBhKHQsZSl7Y29uc3Qgbj0xLXQ7cmV0dXJuIDMqbipuKnQqZX0pKHQsbikrKGZ1bmN0aW9uIHModCxlKXtyZXR1cm4gMyooMS10KSp0KnQqZX0pKHQsaSkrKGZ1bmN0aW9uIGwodCxlKXtyZXR1cm4gdCp0KnQqZX0pKHQscil9ZnVuY3Rpb24gb1l0KHQ9bmV3IGxIdCxlPW5ldyBsSHQsbj1uZXcgbEh0LGk9bmV3IGxIdCl7WXF0LmNhbGwodGhpcyksdGhpcy50eXBlPSJDdWJpY0JlemllckN1cnZlIix0aGlzLnYwPXQsdGhpcy52MT1lLHRoaXMudjI9bix0aGlzLnYzPWl9ZnVuY3Rpb24gYVl0KHQ9bmV3IHlIdCxlPW5ldyB5SHQsbj1uZXcgeUh0LGk9bmV3IHlIdCl7WXF0LmNhbGwodGhpcyksdGhpcy50eXBlPSJDdWJpY0JlemllckN1cnZlMyIsdGhpcy52MD10LHRoaXMudjE9ZSx0aGlzLnYyPW4sdGhpcy52Mz1pfWZ1bmN0aW9uIHNZdCh0PW5ldyBsSHQsZT1uZXcgbEh0KXtZcXQuY2FsbCh0aGlzKSx0aGlzLnR5cGU9IkxpbmVDdXJ2ZSIsdGhpcy52MT10LHRoaXMudjI9ZX1mdW5jdGlvbiBsWXQodD1uZXcgeUh0LGU9bmV3IHlIdCl7WXF0LmNhbGwodGhpcyksdGhpcy50eXBlPSJMaW5lQ3VydmUzIix0aGlzLnYxPXQsdGhpcy52Mj1lfWZ1bmN0aW9uIGNZdCh0PW5ldyBsSHQsZT1uZXcgbEh0LG49bmV3IGxIdCl7WXF0LmNhbGwodGhpcyksdGhpcy50eXBlPSJRdWFkcmF0aWNCZXppZXJDdXJ2ZSIsdGhpcy52MD10LHRoaXMudjE9ZSx0aGlzLnYyPW59ZnVuY3Rpb24gdVl0KHQ9bmV3IHlIdCxlPW5ldyB5SHQsbj1uZXcgeUh0KXtZcXQuY2FsbCh0aGlzKSx0aGlzLnR5cGU9IlF1YWRyYXRpY0JlemllckN1cnZlMyIsdGhpcy52MD10LHRoaXMudjE9ZSx0aGlzLnYyPW59ZnVuY3Rpb24gaFl0KHQ9W10pe1lxdC5jYWxsKHRoaXMpLHRoaXMudHlwZT0iU3BsaW5lQ3VydmUiLHRoaXMucG9pbnRzPXR9KGVZdC5wcm90b3R5cGU9T2JqZWN0LmNyZWF0ZShZcXQucHJvdG90eXBlKSkuY29uc3RydWN0b3I9ZVl0LGVZdC5wcm90b3R5cGUuaXNDYXRtdWxsUm9tQ3VydmUzPSEwLGVZdC5wcm90b3R5cGUuZ2V0UG9pbnQ9ZnVuY3Rpb24odCxlPW5ldyB5SHQpe2NvbnN0IG49ZSxpPXRoaXMucG9pbnRzLHI9aS5sZW5ndGgsbz0oci0odGhpcy5jbG9zZWQ/MDoxKSkqdDtsZXQgYSxzLGw9TWF0aC5mbG9vcihvKSxjPW8tbDt0aGlzLmNsb3NlZD9sKz1sPjA/MDooTWF0aC5mbG9vcihNYXRoLmFicyhsKS9yKSsxKSpyOjA9PT1jJiZsPT09ci0xJiYobD1yLTIsYz0xKSx0aGlzLmNsb3NlZHx8bD4wP2E9aVsobC0xKSVyXTooWnF0LnN1YlZlY3RvcnMoaVswXSxpWzFdKS5hZGQoaVswXSksYT1acXQpO2NvbnN0IHU9aVtsJXJdLGg9aVsobCsxKSVyXTtpZih0aGlzLmNsb3NlZHx8bCsyPHI/cz1pWyhsKzIpJXJdOihacXQuc3ViVmVjdG9ycyhpW3ItMV0saVtyLTJdKS5hZGQoaVtyLTFdKSxzPVpxdCksImNlbnRyaXBldGFsIj09PXRoaXMuY3VydmVUeXBlfHwiY2hvcmRhbCI9PT10aGlzLmN1cnZlVHlwZSl7Y29uc3QgdD0iY2hvcmRhbCI9PT10aGlzLmN1cnZlVHlwZT8uNTouMjU7bGV0IGU9TWF0aC5wb3coYS5kaXN0YW5jZVRvU3F1YXJlZCh1KSx0KSxuPU1hdGgucG93KHUuZGlzdGFuY2VUb1NxdWFyZWQoaCksdCksaT1NYXRoLnBvdyhoLmRpc3RhbmNlVG9TcXVhcmVkKHMpLHQpO248MWUtNCYmKG49MSksZTwxZS00JiYoZT1uKSxpPDFlLTQmJihpPW4pLEpxdC5pbml0Tm9udW5pZm9ybUNhdG11bGxSb20oYS54LHUueCxoLngscy54LGUsbixpKSxRcXQuaW5pdE5vbnVuaWZvcm1DYXRtdWxsUm9tKGEueSx1LnksaC55LHMueSxlLG4saSksdFl0LmluaXROb251bmlmb3JtQ2F0bXVsbFJvbShhLnosdS56LGgueixzLnosZSxuLGkpfWVsc2UiY2F0bXVsbHJvbSI9PT10aGlzLmN1cnZlVHlwZSYmKEpxdC5pbml0Q2F0bXVsbFJvbShhLngsdS54LGgueCxzLngsdGhpcy50ZW5zaW9uKSxRcXQuaW5pdENhdG11bGxSb20oYS55LHUueSxoLnkscy55LHRoaXMudGVuc2lvbiksdFl0LmluaXRDYXRtdWxsUm9tKGEueix1LnosaC56LHMueix0aGlzLnRlbnNpb24pKTtyZXR1cm4gbi5zZXQoSnF0LmNhbGMoYyksUXF0LmNhbGMoYyksdFl0LmNhbGMoYykpLG59LGVZdC5wcm90b3R5cGUuY29weT1mdW5jdGlvbih0KXtZcXQucHJvdG90eXBlLmNvcHkuY2FsbCh0aGlzLHQpLHRoaXMucG9pbnRzPVtdO2ZvcihsZXQgZT0wLG49dC5wb2ludHMubGVuZ3RoO2U8bjtlKyspdGhpcy5wb2ludHMucHVzaCh0LnBvaW50c1tlXS5jbG9uZSgpKTtyZXR1cm4gdGhpcy5jbG9zZWQ9dC5jbG9zZWQsdGhpcy5jdXJ2ZVR5cGU9dC5jdXJ2ZVR5cGUsdGhpcy50ZW5zaW9uPXQudGVuc2lvbix0aGlzfSxlWXQucHJvdG90eXBlLnRvSlNPTj1mdW5jdGlvbigpe2NvbnN0IHQ9WXF0LnByb3RvdHlwZS50b0pTT04uY2FsbCh0aGlzKTt0LnBvaW50cz1bXTtmb3IobGV0IGU9MCxuPXRoaXMucG9pbnRzLmxlbmd0aDtlPG47ZSsrKXQucG9pbnRzLnB1c2godGhpcy5wb2ludHNbZV0udG9BcnJheSgpKTtyZXR1cm4gdC5jbG9zZWQ9dGhpcy5jbG9zZWQsdC5jdXJ2ZVR5cGU9dGhpcy5jdXJ2ZVR5cGUsdC50ZW5zaW9uPXRoaXMudGVuc2lvbix0fSxlWXQucHJvdG90eXBlLmZyb21KU09OPWZ1bmN0aW9uKHQpe1lxdC5wcm90b3R5cGUuZnJvbUpTT04uY2FsbCh0aGlzLHQpLHRoaXMucG9pbnRzPVtdO2ZvcihsZXQgZT0wLG49dC5wb2ludHMubGVuZ3RoO2U8bjtlKyspe2NvbnN0IG49dC5wb2ludHNbZV07dGhpcy5wb2ludHMucHVzaCgobmV3IHlIdCkuZnJvbUFycmF5KG4pKX1yZXR1cm4gdGhpcy5jbG9zZWQ9dC5jbG9zZWQsdGhpcy5jdXJ2ZVR5cGU9dC5jdXJ2ZVR5cGUsdGhpcy50ZW5zaW9uPXQudGVuc2lvbix0aGlzfSwob1l0LnByb3RvdHlwZT1PYmplY3QuY3JlYXRlKFlxdC5wcm90b3R5cGUpKS5jb25zdHJ1Y3Rvcj1vWXQsb1l0LnByb3RvdHlwZS5pc0N1YmljQmV6aWVyQ3VydmU9ITAsb1l0LnByb3RvdHlwZS5nZXRQb2ludD1mdW5jdGlvbih0LGU9bmV3IGxIdCl7Y29uc3Qgbj1lLGk9dGhpcy52MCxyPXRoaXMudjEsbz10aGlzLnYyLGE9dGhpcy52MztyZXR1cm4gbi5zZXQocll0KHQsaS54LHIueCxvLngsYS54KSxyWXQodCxpLnksci55LG8ueSxhLnkpKSxufSxvWXQucHJvdG90eXBlLmNvcHk9ZnVuY3Rpb24odCl7cmV0dXJuIFlxdC5wcm90b3R5cGUuY29weS5jYWxsKHRoaXMsdCksdGhpcy52MC5jb3B5KHQudjApLHRoaXMudjEuY29weSh0LnYxKSx0aGlzLnYyLmNvcHkodC52MiksdGhpcy52My5jb3B5KHQudjMpLHRoaXN9LG9ZdC5wcm90b3R5cGUudG9KU09OPWZ1bmN0aW9uKCl7Y29uc3QgdD1ZcXQucHJvdG90eXBlLnRvSlNPTi5jYWxsKHRoaXMpO3JldHVybiB0LnYwPXRoaXMudjAudG9BcnJheSgpLHQudjE9dGhpcy52MS50b0FycmF5KCksdC52Mj10aGlzLnYyLnRvQXJyYXkoKSx0LnYzPXRoaXMudjMudG9BcnJheSgpLHR9LG9ZdC5wcm90b3R5cGUuZnJvbUpTT049ZnVuY3Rpb24odCl7cmV0dXJuIFlxdC5wcm90b3R5cGUuZnJvbUpTT04uY2FsbCh0aGlzLHQpLHRoaXMudjAuZnJvbUFycmF5KHQudjApLHRoaXMudjEuZnJvbUFycmF5KHQudjEpLHRoaXMudjIuZnJvbUFycmF5KHQudjIpLHRoaXMudjMuZnJvbUFycmF5KHQudjMpLHRoaXN9LChhWXQucHJvdG90eXBlPU9iamVjdC5jcmVhdGUoWXF0LnByb3RvdHlwZSkpLmNvbnN0cnVjdG9yPWFZdCxhWXQucHJvdG90eXBlLmlzQ3ViaWNCZXppZXJDdXJ2ZTM9ITAsYVl0LnByb3RvdHlwZS5nZXRQb2ludD1mdW5jdGlvbih0LGU9bmV3IHlIdCl7Y29uc3Qgbj1lLGk9dGhpcy52MCxyPXRoaXMudjEsbz10aGlzLnYyLGE9dGhpcy52MztyZXR1cm4gbi5zZXQocll0KHQsaS54LHIueCxvLngsYS54KSxyWXQodCxpLnksci55LG8ueSxhLnkpLHJZdCh0LGkueixyLnosby56LGEueikpLG59LGFZdC5wcm90b3R5cGUuY29weT1mdW5jdGlvbih0KXtyZXR1cm4gWXF0LnByb3RvdHlwZS5jb3B5LmNhbGwodGhpcyx0KSx0aGlzLnYwLmNvcHkodC52MCksdGhpcy52MS5jb3B5KHQudjEpLHRoaXMudjIuY29weSh0LnYyKSx0aGlzLnYzLmNvcHkodC52MyksdGhpc30sYVl0LnByb3RvdHlwZS50b0pTT049ZnVuY3Rpb24oKXtjb25zdCB0PVlxdC5wcm90b3R5cGUudG9KU09OLmNhbGwodGhpcyk7cmV0dXJuIHQudjA9dGhpcy52MC50b0FycmF5KCksdC52MT10aGlzLnYxLnRvQXJyYXkoKSx0LnYyPXRoaXMudjIudG9BcnJheSgpLHQudjM9dGhpcy52My50b0FycmF5KCksdH0sYVl0LnByb3RvdHlwZS5mcm9tSlNPTj1mdW5jdGlvbih0KXtyZXR1cm4gWXF0LnByb3RvdHlwZS5mcm9tSlNPTi5jYWxsKHRoaXMsdCksdGhpcy52MC5mcm9tQXJyYXkodC52MCksdGhpcy52MS5mcm9tQXJyYXkodC52MSksdGhpcy52Mi5mcm9tQXJyYXkodC52MiksdGhpcy52My5mcm9tQXJyYXkodC52MyksdGhpc30sKHNZdC5wcm90b3R5cGU9T2JqZWN0LmNyZWF0ZShZcXQucHJvdG90eXBlKSkuY29uc3RydWN0b3I9c1l0LHNZdC5wcm90b3R5cGUuaXNMaW5lQ3VydmU9ITAsc1l0LnByb3RvdHlwZS5nZXRQb2ludD1mdW5jdGlvbih0LGU9bmV3IGxIdCl7Y29uc3Qgbj1lO3JldHVybiAxPT09dD9uLmNvcHkodGhpcy52Mik6KG4uY29weSh0aGlzLnYyKS5zdWIodGhpcy52MSksbi5tdWx0aXBseVNjYWxhcih0KS5hZGQodGhpcy52MSkpLG59LHNZdC5wcm90b3R5cGUuZ2V0UG9pbnRBdD1mdW5jdGlvbih0LGUpe3JldHVybiB0aGlzLmdldFBvaW50KHQsZSl9LHNZdC5wcm90b3R5cGUuZ2V0VGFuZ2VudD1mdW5jdGlvbih0LGUpe2NvbnN0IG49ZXx8bmV3IGxIdDtyZXR1cm4gbi5jb3B5KHRoaXMudjIpLnN1Yih0aGlzLnYxKS5ub3JtYWxpemUoKSxufSxzWXQucHJvdG90eXBlLmNvcHk9ZnVuY3Rpb24odCl7cmV0dXJuIFlxdC5wcm90b3R5cGUuY29weS5jYWxsKHRoaXMsdCksdGhpcy52MS5jb3B5KHQudjEpLHRoaXMudjIuY29weSh0LnYyKSx0aGlzfSxzWXQucHJvdG90eXBlLnRvSlNPTj1mdW5jdGlvbigpe2NvbnN0IHQ9WXF0LnByb3RvdHlwZS50b0pTT04uY2FsbCh0aGlzKTtyZXR1cm4gdC52MT10aGlzLnYxLnRvQXJyYXkoKSx0LnYyPXRoaXMudjIudG9BcnJheSgpLHR9LHNZdC5wcm90b3R5cGUuZnJvbUpTT049ZnVuY3Rpb24odCl7cmV0dXJuIFlxdC5wcm90b3R5cGUuZnJvbUpTT04uY2FsbCh0aGlzLHQpLHRoaXMudjEuZnJvbUFycmF5KHQudjEpLHRoaXMudjIuZnJvbUFycmF5KHQudjIpLHRoaXN9LChsWXQucHJvdG90eXBlPU9iamVjdC5jcmVhdGUoWXF0LnByb3RvdHlwZSkpLmNvbnN0cnVjdG9yPWxZdCxsWXQucHJvdG90eXBlLmlzTGluZUN1cnZlMz0hMCxsWXQucHJvdG90eXBlLmdldFBvaW50PWZ1bmN0aW9uKHQsZT1uZXcgeUh0KXtjb25zdCBuPWU7cmV0dXJuIDE9PT10P24uY29weSh0aGlzLnYyKToobi5jb3B5KHRoaXMudjIpLnN1Yih0aGlzLnYxKSxuLm11bHRpcGx5U2NhbGFyKHQpLmFkZCh0aGlzLnYxKSksbn0sbFl0LnByb3RvdHlwZS5nZXRQb2ludEF0PWZ1bmN0aW9uKHQsZSl7cmV0dXJuIHRoaXMuZ2V0UG9pbnQodCxlKX0sbFl0LnByb3RvdHlwZS5jb3B5PWZ1bmN0aW9uKHQpe3JldHVybiBZcXQucHJvdG90eXBlLmNvcHkuY2FsbCh0aGlzLHQpLHRoaXMudjEuY29weSh0LnYxKSx0aGlzLnYyLmNvcHkodC52MiksdGhpc30sbFl0LnByb3RvdHlwZS50b0pTT049ZnVuY3Rpb24oKXtjb25zdCB0PVlxdC5wcm90b3R5cGUudG9KU09OLmNhbGwodGhpcyk7cmV0dXJuIHQudjE9dGhpcy52MS50b0FycmF5KCksdC52Mj10aGlzLnYyLnRvQXJyYXkoKSx0fSxsWXQucHJvdG90eXBlLmZyb21KU09OPWZ1bmN0aW9uKHQpe3JldHVybiBZcXQucHJvdG90eXBlLmZyb21KU09OLmNhbGwodGhpcyx0KSx0aGlzLnYxLmZyb21BcnJheSh0LnYxKSx0aGlzLnYyLmZyb21BcnJheSh0LnYyKSx0aGlzfSwoY1l0LnByb3RvdHlwZT1PYmplY3QuY3JlYXRlKFlxdC5wcm90b3R5cGUpKS5jb25zdHJ1Y3Rvcj1jWXQsY1l0LnByb3RvdHlwZS5pc1F1YWRyYXRpY0JlemllckN1cnZlPSEwLGNZdC5wcm90b3R5cGUuZ2V0UG9pbnQ9ZnVuY3Rpb24odCxlPW5ldyBsSHQpe2NvbnN0IG49ZSxpPXRoaXMudjAscj10aGlzLnYxLG89dGhpcy52MjtyZXR1cm4gbi5zZXQoaVl0KHQsaS54LHIueCxvLngpLGlZdCh0LGkueSxyLnksby55KSksbn0sY1l0LnByb3RvdHlwZS5jb3B5PWZ1bmN0aW9uKHQpe3JldHVybiBZcXQucHJvdG90eXBlLmNvcHkuY2FsbCh0aGlzLHQpLHRoaXMudjAuY29weSh0LnYwKSx0aGlzLnYxLmNvcHkodC52MSksdGhpcy52Mi5jb3B5KHQudjIpLHRoaXN9LGNZdC5wcm90b3R5cGUudG9KU09OPWZ1bmN0aW9uKCl7Y29uc3QgdD1ZcXQucHJvdG90eXBlLnRvSlNPTi5jYWxsKHRoaXMpO3JldHVybiB0LnYwPXRoaXMudjAudG9BcnJheSgpLHQudjE9dGhpcy52MS50b0FycmF5KCksdC52Mj10aGlzLnYyLnRvQXJyYXkoKSx0fSxjWXQucHJvdG90eXBlLmZyb21KU09OPWZ1bmN0aW9uKHQpe3JldHVybiBZcXQucHJvdG90eXBlLmZyb21KU09OLmNhbGwodGhpcyx0KSx0aGlzLnYwLmZyb21BcnJheSh0LnYwKSx0aGlzLnYxLmZyb21BcnJheSh0LnYxKSx0aGlzLnYyLmZyb21BcnJheSh0LnYyKSx0aGlzfSwodVl0LnByb3RvdHlwZT1PYmplY3QuY3JlYXRlKFlxdC5wcm90b3R5cGUpKS5jb25zdHJ1Y3Rvcj11WXQsdVl0LnByb3RvdHlwZS5pc1F1YWRyYXRpY0JlemllckN1cnZlMz0hMCx1WXQucHJvdG90eXBlLmdldFBvaW50PWZ1bmN0aW9uKHQsZT1uZXcgeUh0KXtjb25zdCBuPWUsaT10aGlzLnYwLHI9dGhpcy52MSxvPXRoaXMudjI7cmV0dXJuIG4uc2V0KGlZdCh0LGkueCxyLngsby54KSxpWXQodCxpLnksci55LG8ueSksaVl0KHQsaS56LHIueixvLnopKSxufSx1WXQucHJvdG90eXBlLmNvcHk9ZnVuY3Rpb24odCl7cmV0dXJuIFlxdC5wcm90b3R5cGUuY29weS5jYWxsKHRoaXMsdCksdGhpcy52MC5jb3B5KHQudjApLHRoaXMudjEuY29weSh0LnYxKSx0aGlzLnYyLmNvcHkodC52MiksdGhpc30sdVl0LnByb3RvdHlwZS50b0pTT049ZnVuY3Rpb24oKXtjb25zdCB0PVlxdC5wcm90b3R5cGUudG9KU09OLmNhbGwodGhpcyk7cmV0dXJuIHQudjA9dGhpcy52MC50b0FycmF5KCksdC52MT10aGlzLnYxLnRvQXJyYXkoKSx0LnYyPXRoaXMudjIudG9BcnJheSgpLHR9LHVZdC5wcm90b3R5cGUuZnJvbUpTT049ZnVuY3Rpb24odCl7cmV0dXJuIFlxdC5wcm90b3R5cGUuZnJvbUpTT04uY2FsbCh0aGlzLHQpLHRoaXMudjAuZnJvbUFycmF5KHQudjApLHRoaXMudjEuZnJvbUFycmF5KHQudjEpLHRoaXMudjIuZnJvbUFycmF5KHQudjIpLHRoaXN9LChoWXQucHJvdG90eXBlPU9iamVjdC5jcmVhdGUoWXF0LnByb3RvdHlwZSkpLmNvbnN0cnVjdG9yPWhZdCxoWXQucHJvdG90eXBlLmlzU3BsaW5lQ3VydmU9ITAsaFl0LnByb3RvdHlwZS5nZXRQb2ludD1mdW5jdGlvbih0LGU9bmV3IGxIdCl7Y29uc3Qgbj1lLGk9dGhpcy5wb2ludHMscj0oaS5sZW5ndGgtMSkqdCxvPU1hdGguZmxvb3IociksYT1yLW8scz1pWzA9PT1vP286by0xXSxsPWlbb10sYz1pW28+aS5sZW5ndGgtMj9pLmxlbmd0aC0xOm8rMV0sdT1pW28+aS5sZW5ndGgtMz9pLmxlbmd0aC0xOm8rMl07cmV0dXJuIG4uc2V0KG5ZdChhLHMueCxsLngsYy54LHUueCksbll0KGEscy55LGwueSxjLnksdS55KSksbn0saFl0LnByb3RvdHlwZS5jb3B5PWZ1bmN0aW9uKHQpe1lxdC5wcm90b3R5cGUuY29weS5jYWxsKHRoaXMsdCksdGhpcy5wb2ludHM9W107Zm9yKGxldCBlPTAsbj10LnBvaW50cy5sZW5ndGg7ZTxuO2UrKyl0aGlzLnBvaW50cy5wdXNoKHQucG9pbnRzW2VdLmNsb25lKCkpO3JldHVybiB0aGlzfSxoWXQucHJvdG90eXBlLnRvSlNPTj1mdW5jdGlvbigpe2NvbnN0IHQ9WXF0LnByb3RvdHlwZS50b0pTT04uY2FsbCh0aGlzKTt0LnBvaW50cz1bXTtmb3IobGV0IGU9MCxuPXRoaXMucG9pbnRzLmxlbmd0aDtlPG47ZSsrKXQucG9pbnRzLnB1c2godGhpcy5wb2ludHNbZV0udG9BcnJheSgpKTtyZXR1cm4gdH0saFl0LnByb3RvdHlwZS5mcm9tSlNPTj1mdW5jdGlvbih0KXtZcXQucHJvdG90eXBlLmZyb21KU09OLmNhbGwodGhpcyx0KSx0aGlzLnBvaW50cz1bXTtmb3IobGV0IGU9MCxuPXQucG9pbnRzLmxlbmd0aDtlPG47ZSsrKXtjb25zdCBuPXQucG9pbnRzW2VdO3RoaXMucG9pbnRzLnB1c2goKG5ldyBsSHQpLmZyb21BcnJheShuKSl9cmV0dXJuIHRoaXN9O3ZhciBkWXQ9T2JqZWN0LmZyZWV6ZSh7X19wcm90b19fOm51bGwsQXJjQ3VydmU6JHF0LENhdG11bGxSb21DdXJ2ZTM6ZVl0LEN1YmljQmV6aWVyQ3VydmU6b1l0LEN1YmljQmV6aWVyQ3VydmUzOmFZdCxFbGxpcHNlQ3VydmU6WHF0LExpbmVDdXJ2ZTpzWXQsTGluZUN1cnZlMzpsWXQsUXVhZHJhdGljQmV6aWVyQ3VydmU6Y1l0LFF1YWRyYXRpY0JlemllckN1cnZlMzp1WXQsU3BsaW5lQ3VydmU6aFl0fSk7ZnVuY3Rpb24gcFl0KCl7WXF0LmNhbGwodGhpcyksdGhpcy50eXBlPSJDdXJ2ZVBhdGgiLHRoaXMuY3VydmVzPVtdLHRoaXMuYXV0b0Nsb3NlPSExfWZ1bmN0aW9uIGZZdCh0KXtwWXQuY2FsbCh0aGlzKSx0aGlzLnR5cGU9IlBhdGgiLHRoaXMuY3VycmVudFBvaW50PW5ldyBsSHQsdCYmdGhpcy5zZXRGcm9tUG9pbnRzKHQpfWZ1bmN0aW9uIG1ZdCh0KXtmWXQuY2FsbCh0aGlzLHQpLHRoaXMudXVpZD1zSHQuZ2VuZXJhdGVVVUlEKCksdGhpcy50eXBlPSJTaGFwZSIsdGhpcy5ob2xlcz1bXX1mdW5jdGlvbiBnWXQodCxlPTEpe19GdC5jYWxsKHRoaXMpLHRoaXMudHlwZT0iTGlnaHQiLHRoaXMuY29sb3I9bmV3IEhGdCh0KSx0aGlzLmludGVuc2l0eT1lfWZ1bmN0aW9uIF9ZdCh0LGUsbil7Z1l0LmNhbGwodGhpcyx0LG4pLHRoaXMudHlwZT0iSGVtaXNwaGVyZUxpZ2h0Iix0aGlzLnBvc2l0aW9uLmNvcHkoX0Z0LkRlZmF1bHRVcCksdGhpcy51cGRhdGVNYXRyaXgoKSx0aGlzLmdyb3VuZENvbG9yPW5ldyBIRnQoZSl9ZnVuY3Rpb24geVl0KHQpe3RoaXMuY2FtZXJhPXQsdGhpcy5iaWFzPTAsdGhpcy5ub3JtYWxCaWFzPTAsdGhpcy5yYWRpdXM9MSx0aGlzLm1hcFNpemU9bmV3IGxIdCg1MTIsNTEyKSx0aGlzLm1hcD1udWxsLHRoaXMubWFwUGFzcz1udWxsLHRoaXMubWF0cml4PW5ldyBxSHQsdGhpcy5hdXRvVXBkYXRlPSEwLHRoaXMubmVlZHNVcGRhdGU9ITEsdGhpcy5fZnJ1c3R1bT1uZXcgWVZ0LHRoaXMuX2ZyYW1lRXh0ZW50cz1uZXcgbEh0KDEsMSksdGhpcy5fdmlld3BvcnRDb3VudD0xLHRoaXMuX3ZpZXdwb3J0cz1bbmV3IG1IdCgwLDAsMSwxKV19ZnVuY3Rpb24gdll0KCl7eVl0LmNhbGwodGhpcyxuZXcgSFZ0KDUwLDEsLjUsNTAwKSksdGhpcy5mb2N1cz0xfWZ1bmN0aW9uIGJZdCh0LGUsbixpLHIsbyl7Z1l0LmNhbGwodGhpcyx0LGUpLHRoaXMudHlwZT0iU3BvdExpZ2h0Iix0aGlzLnBvc2l0aW9uLmNvcHkoX0Z0LkRlZmF1bHRVcCksdGhpcy51cGRhdGVNYXRyaXgoKSx0aGlzLnRhcmdldD1uZXcgX0Z0LE9iamVjdC5kZWZpbmVQcm9wZXJ0eSh0aGlzLCJwb3dlciIse2dldDpmdW5jdGlvbigpe3JldHVybiB0aGlzLmludGVuc2l0eSpNYXRoLlBJfSxzZXQ6ZnVuY3Rpb24odCl7dGhpcy5pbnRlbnNpdHk9dC9NYXRoLlBJfX0pLHRoaXMuZGlzdGFuY2U9dm9pZCAwIT09bj9uOjAsdGhpcy5hbmdsZT12b2lkIDAhPT1pP2k6TWF0aC5QSS8zLHRoaXMucGVudW1icmE9dm9pZCAwIT09cj9yOjAsdGhpcy5kZWNheT12b2lkIDAhPT1vP286MSx0aGlzLnNoYWRvdz1uZXcgdll0fWZ1bmN0aW9uIHhZdCgpe3lZdC5jYWxsKHRoaXMsbmV3IEhWdCg5MCwxLC41LDUwMCkpLHRoaXMuX2ZyYW1lRXh0ZW50cz1uZXcgbEh0KDQsMiksdGhpcy5fdmlld3BvcnRDb3VudD02LHRoaXMuX3ZpZXdwb3J0cz1bbmV3IG1IdCgyLDEsMSwxKSxuZXcgbUh0KDAsMSwxLDEpLG5ldyBtSHQoMywxLDEsMSksbmV3IG1IdCgxLDEsMSwxKSxuZXcgbUh0KDMsMCwxLDEpLG5ldyBtSHQoMSwwLDEsMSldLHRoaXMuX2N1YmVEaXJlY3Rpb25zPVtuZXcgeUh0KDEsMCwwKSxuZXcgeUh0KC0xLDAsMCksbmV3IHlIdCgwLDAsMSksbmV3IHlIdCgwLDAsLTEpLG5ldyB5SHQoMCwxLDApLG5ldyB5SHQoMCwtMSwwKV0sdGhpcy5fY3ViZVVwcz1bbmV3IHlIdCgwLDEsMCksbmV3IHlIdCgwLDEsMCksbmV3IHlIdCgwLDEsMCksbmV3IHlIdCgwLDEsMCksbmV3IHlIdCgwLDAsMSksbmV3IHlIdCgwLDAsLTEpXX1mdW5jdGlvbiB3WXQodCxlLG4saSl7Z1l0LmNhbGwodGhpcyx0LGUpLHRoaXMudHlwZT0iUG9pbnRMaWdodCIsT2JqZWN0LmRlZmluZVByb3BlcnR5KHRoaXMsInBvd2VyIix7Z2V0OmZ1bmN0aW9uKCl7cmV0dXJuIDQqdGhpcy5pbnRlbnNpdHkqTWF0aC5QSX0sc2V0OmZ1bmN0aW9uKHQpe3RoaXMuaW50ZW5zaXR5PXQvKDQqTWF0aC5QSSl9fSksdGhpcy5kaXN0YW5jZT12b2lkIDAhPT1uP246MCx0aGlzLmRlY2F5PXZvaWQgMCE9PWk/aToxLHRoaXMuc2hhZG93PW5ldyB4WXR9ZnVuY3Rpb24gU1l0KHQ9LTEsZT0xLG49MSxpPS0xLHI9LjEsbz0yZTMpe0JWdC5jYWxsKHRoaXMpLHRoaXMudHlwZT0iT3J0aG9ncmFwaGljQ2FtZXJhIix0aGlzLnpvb209MSx0aGlzLnZpZXc9bnVsbCx0aGlzLmxlZnQ9dCx0aGlzLnJpZ2h0PWUsdGhpcy50b3A9bix0aGlzLmJvdHRvbT1pLHRoaXMubmVhcj1yLHRoaXMuZmFyPW8sdGhpcy51cGRhdGVQcm9qZWN0aW9uTWF0cml4KCl9ZnVuY3Rpb24gTVl0KCl7eVl0LmNhbGwodGhpcyxuZXcgU1l0KC01LDUsNSwtNSwuNSw1MDApKX1mdW5jdGlvbiBFWXQodCxlKXtnWXQuY2FsbCh0aGlzLHQsZSksdGhpcy50eXBlPSJEaXJlY3Rpb25hbExpZ2h0Iix0aGlzLnBvc2l0aW9uLmNvcHkoX0Z0LkRlZmF1bHRVcCksdGhpcy51cGRhdGVNYXRyaXgoKSx0aGlzLnRhcmdldD1uZXcgX0Z0LHRoaXMuc2hhZG93PW5ldyBNWXR9ZnVuY3Rpb24gVFl0KHQsZSl7Z1l0LmNhbGwodGhpcyx0LGUpLHRoaXMudHlwZT0iQW1iaWVudExpZ2h0In1mdW5jdGlvbiBBWXQodCxlLG4saSl7Z1l0LmNhbGwodGhpcyx0LGUpLHRoaXMudHlwZT0iUmVjdEFyZWFMaWdodCIsdGhpcy53aWR0aD12b2lkIDAhPT1uP246MTAsdGhpcy5oZWlnaHQ9dm9pZCAwIT09aT9pOjEwfXBZdC5wcm90b3R5cGU9T2JqZWN0LmFzc2lnbihPYmplY3QuY3JlYXRlKFlxdC5wcm90b3R5cGUpLHtjb25zdHJ1Y3RvcjpwWXQsYWRkOmZ1bmN0aW9uKHQpe3RoaXMuY3VydmVzLnB1c2godCl9LGNsb3NlUGF0aDpmdW5jdGlvbigpe2NvbnN0IHQ9dGhpcy5jdXJ2ZXNbMF0uZ2V0UG9pbnQoMCksZT10aGlzLmN1cnZlc1t0aGlzLmN1cnZlcy5sZW5ndGgtMV0uZ2V0UG9pbnQoMSk7dC5lcXVhbHMoZSl8fHRoaXMuY3VydmVzLnB1c2gobmV3IHNZdChlLHQpKX0sZ2V0UG9pbnQ6ZnVuY3Rpb24odCl7Y29uc3QgZT10KnRoaXMuZ2V0TGVuZ3RoKCksbj10aGlzLmdldEN1cnZlTGVuZ3RocygpO2xldCBpPTA7Zm9yKDtpPG4ubGVuZ3RoOyl7aWYobltpXT49ZSl7Y29uc3QgdD1uW2ldLWUscj10aGlzLmN1cnZlc1tpXSxvPXIuZ2V0TGVuZ3RoKCk7cmV0dXJuIHIuZ2V0UG9pbnRBdCgwPT09bz8wOjEtdC9vKX1pKyt9cmV0dXJuIG51bGx9LGdldExlbmd0aDpmdW5jdGlvbigpe2NvbnN0IHQ9dGhpcy5nZXRDdXJ2ZUxlbmd0aHMoKTtyZXR1cm4gdFt0Lmxlbmd0aC0xXX0sdXBkYXRlQXJjTGVuZ3RoczpmdW5jdGlvbigpe3RoaXMubmVlZHNVcGRhdGU9ITAsdGhpcy5jYWNoZUxlbmd0aHM9bnVsbCx0aGlzLmdldEN1cnZlTGVuZ3RocygpfSxnZXRDdXJ2ZUxlbmd0aHM6ZnVuY3Rpb24oKXtpZih0aGlzLmNhY2hlTGVuZ3RocyYmdGhpcy5jYWNoZUxlbmd0aHMubGVuZ3RoPT09dGhpcy5jdXJ2ZXMubGVuZ3RoKXJldHVybiB0aGlzLmNhY2hlTGVuZ3Rocztjb25zdCB0PVtdO2xldCBlPTA7Zm9yKGxldCBuPTAsaT10aGlzLmN1cnZlcy5sZW5ndGg7bjxpO24rKyllKz10aGlzLmN1cnZlc1tuXS5nZXRMZW5ndGgoKSx0LnB1c2goZSk7cmV0dXJuIHRoaXMuY2FjaGVMZW5ndGhzPXQsdH0sZ2V0U3BhY2VkUG9pbnRzOmZ1bmN0aW9uKHQ9NDApe2NvbnN0IGU9W107Zm9yKGxldCBuPTA7bjw9dDtuKyspZS5wdXNoKHRoaXMuZ2V0UG9pbnQobi90KSk7cmV0dXJuIHRoaXMuYXV0b0Nsb3NlJiZlLnB1c2goZVswXSksZX0sZ2V0UG9pbnRzOmZ1bmN0aW9uKHQ9MTIpe2NvbnN0IGU9W107bGV0IG47Zm9yKGxldCBpPTAscj10aGlzLmN1cnZlcztpPHIubGVuZ3RoO2krKyl7Y29uc3Qgbz1yW2ldLGE9by5nZXRQb2ludHMobyYmby5pc0VsbGlwc2VDdXJ2ZT8yKnQ6byYmKG8uaXNMaW5lQ3VydmV8fG8uaXNMaW5lQ3VydmUzKT8xOm8mJm8uaXNTcGxpbmVDdXJ2ZT90Km8ucG9pbnRzLmxlbmd0aDp0KTtmb3IobGV0IHQ9MDt0PGEubGVuZ3RoO3QrKyl7Y29uc3QgaT1hW3RdO24mJm4uZXF1YWxzKGkpfHwoZS5wdXNoKGkpLG49aSl9fXJldHVybiB0aGlzLmF1dG9DbG9zZSYmZS5sZW5ndGg+MSYmIWVbZS5sZW5ndGgtMV0uZXF1YWxzKGVbMF0pJiZlLnB1c2goZVswXSksZX0sY29weTpmdW5jdGlvbih0KXtZcXQucHJvdG90eXBlLmNvcHkuY2FsbCh0aGlzLHQpLHRoaXMuY3VydmVzPVtdO2ZvcihsZXQgZT0wLG49dC5jdXJ2ZXMubGVuZ3RoO2U8bjtlKyspdGhpcy5jdXJ2ZXMucHVzaCh0LmN1cnZlc1tlXS5jbG9uZSgpKTtyZXR1cm4gdGhpcy5hdXRvQ2xvc2U9dC5hdXRvQ2xvc2UsdGhpc30sdG9KU09OOmZ1bmN0aW9uKCl7Y29uc3QgdD1ZcXQucHJvdG90eXBlLnRvSlNPTi5jYWxsKHRoaXMpO3QuYXV0b0Nsb3NlPXRoaXMuYXV0b0Nsb3NlLHQuY3VydmVzPVtdO2ZvcihsZXQgZT0wLG49dGhpcy5jdXJ2ZXMubGVuZ3RoO2U8bjtlKyspdC5jdXJ2ZXMucHVzaCh0aGlzLmN1cnZlc1tlXS50b0pTT04oKSk7cmV0dXJuIHR9LGZyb21KU09OOmZ1bmN0aW9uKHQpe1lxdC5wcm90b3R5cGUuZnJvbUpTT04uY2FsbCh0aGlzLHQpLHRoaXMuYXV0b0Nsb3NlPXQuYXV0b0Nsb3NlLHRoaXMuY3VydmVzPVtdO2ZvcihsZXQgZT0wLG49dC5jdXJ2ZXMubGVuZ3RoO2U8bjtlKyspe2NvbnN0IG49dC5jdXJ2ZXNbZV07dGhpcy5jdXJ2ZXMucHVzaCgobmV3IGRZdFtuLnR5cGVdKS5mcm9tSlNPTihuKSl9cmV0dXJuIHRoaXN9fSksZll0LnByb3RvdHlwZT1PYmplY3QuYXNzaWduKE9iamVjdC5jcmVhdGUocFl0LnByb3RvdHlwZSkse2NvbnN0cnVjdG9yOmZZdCxzZXRGcm9tUG9pbnRzOmZ1bmN0aW9uKHQpe3RoaXMubW92ZVRvKHRbMF0ueCx0WzBdLnkpO2ZvcihsZXQgZT0xLG49dC5sZW5ndGg7ZTxuO2UrKyl0aGlzLmxpbmVUbyh0W2VdLngsdFtlXS55KTtyZXR1cm4gdGhpc30sbW92ZVRvOmZ1bmN0aW9uKHQsZSl7cmV0dXJuIHRoaXMuY3VycmVudFBvaW50LnNldCh0LGUpLHRoaXN9LGxpbmVUbzpmdW5jdGlvbih0LGUpe2NvbnN0IG49bmV3IHNZdCh0aGlzLmN1cnJlbnRQb2ludC5jbG9uZSgpLG5ldyBsSHQodCxlKSk7cmV0dXJuIHRoaXMuY3VydmVzLnB1c2gobiksdGhpcy5jdXJyZW50UG9pbnQuc2V0KHQsZSksdGhpc30scXVhZHJhdGljQ3VydmVUbzpmdW5jdGlvbih0LGUsbixpKXtjb25zdCByPW5ldyBjWXQodGhpcy5jdXJyZW50UG9pbnQuY2xvbmUoKSxuZXcgbEh0KHQsZSksbmV3IGxIdChuLGkpKTtyZXR1cm4gdGhpcy5jdXJ2ZXMucHVzaChyKSx0aGlzLmN1cnJlbnRQb2ludC5zZXQobixpKSx0aGlzfSxiZXppZXJDdXJ2ZVRvOmZ1bmN0aW9uKHQsZSxuLGkscixvKXtjb25zdCBhPW5ldyBvWXQodGhpcy5jdXJyZW50UG9pbnQuY2xvbmUoKSxuZXcgbEh0KHQsZSksbmV3IGxIdChuLGkpLG5ldyBsSHQocixvKSk7cmV0dXJuIHRoaXMuY3VydmVzLnB1c2goYSksdGhpcy5jdXJyZW50UG9pbnQuc2V0KHIsbyksdGhpc30sc3BsaW5lVGhydTpmdW5jdGlvbih0KXtjb25zdCBlPW5ldyBoWXQoW3RoaXMuY3VycmVudFBvaW50LmNsb25lKCldLmNvbmNhdCh0KSk7cmV0dXJuIHRoaXMuY3VydmVzLnB1c2goZSksdGhpcy5jdXJyZW50UG9pbnQuY29weSh0W3QubGVuZ3RoLTFdKSx0aGlzfSxhcmM6ZnVuY3Rpb24odCxlLG4saSxyLG8pe3JldHVybiB0aGlzLmFic2FyYyh0K3RoaXMuY3VycmVudFBvaW50LngsZSt0aGlzLmN1cnJlbnRQb2ludC55LG4saSxyLG8pLHRoaXN9LGFic2FyYzpmdW5jdGlvbih0LGUsbixpLHIsbyl7cmV0dXJuIHRoaXMuYWJzZWxsaXBzZSh0LGUsbixuLGkscixvKSx0aGlzfSxlbGxpcHNlOmZ1bmN0aW9uKHQsZSxuLGkscixvLGEscyl7cmV0dXJuIHRoaXMuYWJzZWxsaXBzZSh0K3RoaXMuY3VycmVudFBvaW50LngsZSt0aGlzLmN1cnJlbnRQb2ludC55LG4saSxyLG8sYSxzKSx0aGlzfSxhYnNlbGxpcHNlOmZ1bmN0aW9uKHQsZSxuLGkscixvLGEscyl7Y29uc3QgbD1uZXcgWHF0KHQsZSxuLGkscixvLGEscyk7aWYodGhpcy5jdXJ2ZXMubGVuZ3RoPjApe2NvbnN0IHQ9bC5nZXRQb2ludCgwKTt0LmVxdWFscyh0aGlzLmN1cnJlbnRQb2ludCl8fHRoaXMubGluZVRvKHQueCx0LnkpfXRoaXMuY3VydmVzLnB1c2gobCk7Y29uc3QgYz1sLmdldFBvaW50KDEpO3JldHVybiB0aGlzLmN1cnJlbnRQb2ludC5jb3B5KGMpLHRoaXN9LGNvcHk6ZnVuY3Rpb24odCl7cmV0dXJuIHBZdC5wcm90b3R5cGUuY29weS5jYWxsKHRoaXMsdCksdGhpcy5jdXJyZW50UG9pbnQuY29weSh0LmN1cnJlbnRQb2ludCksdGhpc30sdG9KU09OOmZ1bmN0aW9uKCl7Y29uc3QgdD1wWXQucHJvdG90eXBlLnRvSlNPTi5jYWxsKHRoaXMpO3JldHVybiB0LmN1cnJlbnRQb2ludD10aGlzLmN1cnJlbnRQb2ludC50b0FycmF5KCksdH0sZnJvbUpTT046ZnVuY3Rpb24odCl7cmV0dXJuIHBZdC5wcm90b3R5cGUuZnJvbUpTT04uY2FsbCh0aGlzLHQpLHRoaXMuY3VycmVudFBvaW50LmZyb21BcnJheSh0LmN1cnJlbnRQb2ludCksdGhpc319KSxtWXQucHJvdG90eXBlPU9iamVjdC5hc3NpZ24oT2JqZWN0LmNyZWF0ZShmWXQucHJvdG90eXBlKSx7Y29uc3RydWN0b3I6bVl0LGdldFBvaW50c0hvbGVzOmZ1bmN0aW9uKHQpe2NvbnN0IGU9W107Zm9yKGxldCBuPTAsaT10aGlzLmhvbGVzLmxlbmd0aDtuPGk7bisrKWVbbl09dGhpcy5ob2xlc1tuXS5nZXRQb2ludHModCk7cmV0dXJuIGV9LGV4dHJhY3RQb2ludHM6ZnVuY3Rpb24odCl7cmV0dXJue3NoYXBlOnRoaXMuZ2V0UG9pbnRzKHQpLGhvbGVzOnRoaXMuZ2V0UG9pbnRzSG9sZXModCl9fSxjb3B5OmZ1bmN0aW9uKHQpe2ZZdC5wcm90b3R5cGUuY29weS5jYWxsKHRoaXMsdCksdGhpcy5ob2xlcz1bXTtmb3IobGV0IGU9MCxuPXQuaG9sZXMubGVuZ3RoO2U8bjtlKyspdGhpcy5ob2xlcy5wdXNoKHQuaG9sZXNbZV0uY2xvbmUoKSk7cmV0dXJuIHRoaXN9LHRvSlNPTjpmdW5jdGlvbigpe2NvbnN0IHQ9Zll0LnByb3RvdHlwZS50b0pTT04uY2FsbCh0aGlzKTt0LnV1aWQ9dGhpcy51dWlkLHQuaG9sZXM9W107Zm9yKGxldCBlPTAsbj10aGlzLmhvbGVzLmxlbmd0aDtlPG47ZSsrKXQuaG9sZXMucHVzaCh0aGlzLmhvbGVzW2VdLnRvSlNPTigpKTtyZXR1cm4gdH0sZnJvbUpTT046ZnVuY3Rpb24odCl7Zll0LnByb3RvdHlwZS5mcm9tSlNPTi5jYWxsKHRoaXMsdCksdGhpcy51dWlkPXQudXVpZCx0aGlzLmhvbGVzPVtdO2ZvcihsZXQgZT0wLG49dC5ob2xlcy5sZW5ndGg7ZTxuO2UrKyl7Y29uc3Qgbj10LmhvbGVzW2VdO3RoaXMuaG9sZXMucHVzaCgobmV3IGZZdCkuZnJvbUpTT04obikpfXJldHVybiB0aGlzfX0pLGdZdC5wcm90b3R5cGU9T2JqZWN0LmFzc2lnbihPYmplY3QuY3JlYXRlKF9GdC5wcm90b3R5cGUpLHtjb25zdHJ1Y3RvcjpnWXQsaXNMaWdodDohMCxjb3B5OmZ1bmN0aW9uKHQpe3JldHVybiBfRnQucHJvdG90eXBlLmNvcHkuY2FsbCh0aGlzLHQpLHRoaXMuY29sb3IuY29weSh0LmNvbG9yKSx0aGlzLmludGVuc2l0eT10LmludGVuc2l0eSx0aGlzfSx0b0pTT046ZnVuY3Rpb24odCl7Y29uc3QgZT1fRnQucHJvdG90eXBlLnRvSlNPTi5jYWxsKHRoaXMsdCk7cmV0dXJuIGUub2JqZWN0LmNvbG9yPXRoaXMuY29sb3IuZ2V0SGV4KCksZS5vYmplY3QuaW50ZW5zaXR5PXRoaXMuaW50ZW5zaXR5LHZvaWQgMCE9PXRoaXMuZ3JvdW5kQ29sb3ImJihlLm9iamVjdC5ncm91bmRDb2xvcj10aGlzLmdyb3VuZENvbG9yLmdldEhleCgpKSx2b2lkIDAhPT10aGlzLmRpc3RhbmNlJiYoZS5vYmplY3QuZGlzdGFuY2U9dGhpcy5kaXN0YW5jZSksdm9pZCAwIT09dGhpcy5hbmdsZSYmKGUub2JqZWN0LmFuZ2xlPXRoaXMuYW5nbGUpLHZvaWQgMCE9PXRoaXMuZGVjYXkmJihlLm9iamVjdC5kZWNheT10aGlzLmRlY2F5KSx2b2lkIDAhPT10aGlzLnBlbnVtYnJhJiYoZS5vYmplY3QucGVudW1icmE9dGhpcy5wZW51bWJyYSksdm9pZCAwIT09dGhpcy5zaGFkb3cmJihlLm9iamVjdC5zaGFkb3c9dGhpcy5zaGFkb3cudG9KU09OKCkpLGV9fSksX1l0LnByb3RvdHlwZT1PYmplY3QuYXNzaWduKE9iamVjdC5jcmVhdGUoZ1l0LnByb3RvdHlwZSkse2NvbnN0cnVjdG9yOl9ZdCxpc0hlbWlzcGhlcmVMaWdodDohMCxjb3B5OmZ1bmN0aW9uKHQpe3JldHVybiBnWXQucHJvdG90eXBlLmNvcHkuY2FsbCh0aGlzLHQpLHRoaXMuZ3JvdW5kQ29sb3IuY29weSh0Lmdyb3VuZENvbG9yKSx0aGlzfX0pLE9iamVjdC5hc3NpZ24oeVl0LnByb3RvdHlwZSx7X3Byb2pTY3JlZW5NYXRyaXg6bmV3IHFIdCxfbGlnaHRQb3NpdGlvbldvcmxkOm5ldyB5SHQsX2xvb2tUYXJnZXQ6bmV3IHlIdCxnZXRWaWV3cG9ydENvdW50OmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuX3ZpZXdwb3J0Q291bnR9LGdldEZydXN0dW06ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5fZnJ1c3R1bX0sdXBkYXRlTWF0cmljZXM6ZnVuY3Rpb24odCl7Y29uc3QgZT10aGlzLmNhbWVyYSxuPXRoaXMubWF0cml4LGk9dGhpcy5fcHJvalNjcmVlbk1hdHJpeCxyPXRoaXMuX2xvb2tUYXJnZXQsbz10aGlzLl9saWdodFBvc2l0aW9uV29ybGQ7by5zZXRGcm9tTWF0cml4UG9zaXRpb24odC5tYXRyaXhXb3JsZCksZS5wb3NpdGlvbi5jb3B5KG8pLHIuc2V0RnJvbU1hdHJpeFBvc2l0aW9uKHQudGFyZ2V0Lm1hdHJpeFdvcmxkKSxlLmxvb2tBdChyKSxlLnVwZGF0ZU1hdHJpeFdvcmxkKCksaS5tdWx0aXBseU1hdHJpY2VzKGUucHJvamVjdGlvbk1hdHJpeCxlLm1hdHJpeFdvcmxkSW52ZXJzZSksdGhpcy5fZnJ1c3R1bS5zZXRGcm9tUHJvamVjdGlvbk1hdHJpeChpKSxuLnNldCguNSwwLDAsLjUsMCwuNSwwLC41LDAsMCwuNSwuNSwwLDAsMCwxKSxuLm11bHRpcGx5KGUucHJvamVjdGlvbk1hdHJpeCksbi5tdWx0aXBseShlLm1hdHJpeFdvcmxkSW52ZXJzZSl9LGdldFZpZXdwb3J0OmZ1bmN0aW9uKHQpe3JldHVybiB0aGlzLl92aWV3cG9ydHNbdF19LGdldEZyYW1lRXh0ZW50czpmdW5jdGlvbigpe3JldHVybiB0aGlzLl9mcmFtZUV4dGVudHN9LGNvcHk6ZnVuY3Rpb24odCl7cmV0dXJuIHRoaXMuY2FtZXJhPXQuY2FtZXJhLmNsb25lKCksdGhpcy5iaWFzPXQuYmlhcyx0aGlzLnJhZGl1cz10LnJhZGl1cyx0aGlzLm1hcFNpemUuY29weSh0Lm1hcFNpemUpLHRoaXN9LGNsb25lOmZ1bmN0aW9uKCl7cmV0dXJuKG5ldyB0aGlzLmNvbnN0cnVjdG9yKS5jb3B5KHRoaXMpfSx0b0pTT046ZnVuY3Rpb24oKXtjb25zdCB0PXt9O3JldHVybiAwIT09dGhpcy5iaWFzJiYodC5iaWFzPXRoaXMuYmlhcyksMCE9PXRoaXMubm9ybWFsQmlhcyYmKHQubm9ybWFsQmlhcz10aGlzLm5vcm1hbEJpYXMpLDEhPT10aGlzLnJhZGl1cyYmKHQucmFkaXVzPXRoaXMucmFkaXVzKSw1MTI9PT10aGlzLm1hcFNpemUueCYmNTEyPT09dGhpcy5tYXBTaXplLnl8fCh0Lm1hcFNpemU9dGhpcy5tYXBTaXplLnRvQXJyYXkoKSksdC5jYW1lcmE9dGhpcy5jYW1lcmEudG9KU09OKCExKS5vYmplY3QsZGVsZXRlIHQuY2FtZXJhLm1hdHJpeCx0fX0pLHZZdC5wcm90b3R5cGU9T2JqZWN0LmFzc2lnbihPYmplY3QuY3JlYXRlKHlZdC5wcm90b3R5cGUpLHtjb25zdHJ1Y3Rvcjp2WXQsaXNTcG90TGlnaHRTaGFkb3c6ITAsdXBkYXRlTWF0cmljZXM6ZnVuY3Rpb24odCl7Y29uc3QgZT10aGlzLmNhbWVyYSxuPTIqc0h0LlJBRDJERUcqdC5hbmdsZSp0aGlzLmZvY3VzLGk9dGhpcy5tYXBTaXplLndpZHRoL3RoaXMubWFwU2l6ZS5oZWlnaHQscj10LmRpc3RhbmNlfHxlLmZhcjtuPT09ZS5mb3YmJmk9PT1lLmFzcGVjdCYmcj09PWUuZmFyfHwoZS5mb3Y9bixlLmFzcGVjdD1pLGUuZmFyPXIsZS51cGRhdGVQcm9qZWN0aW9uTWF0cml4KCkpLHlZdC5wcm90b3R5cGUudXBkYXRlTWF0cmljZXMuY2FsbCh0aGlzLHQpfX0pLGJZdC5wcm90b3R5cGU9T2JqZWN0LmFzc2lnbihPYmplY3QuY3JlYXRlKGdZdC5wcm90b3R5cGUpLHtjb25zdHJ1Y3RvcjpiWXQsaXNTcG90TGlnaHQ6ITAsY29weTpmdW5jdGlvbih0KXtyZXR1cm4gZ1l0LnByb3RvdHlwZS5jb3B5LmNhbGwodGhpcyx0KSx0aGlzLmRpc3RhbmNlPXQuZGlzdGFuY2UsdGhpcy5hbmdsZT10LmFuZ2xlLHRoaXMucGVudW1icmE9dC5wZW51bWJyYSx0aGlzLmRlY2F5PXQuZGVjYXksdGhpcy50YXJnZXQ9dC50YXJnZXQuY2xvbmUoKSx0aGlzLnNoYWRvdz10LnNoYWRvdy5jbG9uZSgpLHRoaXN9fSkseFl0LnByb3RvdHlwZT1PYmplY3QuYXNzaWduKE9iamVjdC5jcmVhdGUoeVl0LnByb3RvdHlwZSkse2NvbnN0cnVjdG9yOnhZdCxpc1BvaW50TGlnaHRTaGFkb3c6ITAsdXBkYXRlTWF0cmljZXM6ZnVuY3Rpb24odCxlPTApe2NvbnN0IG49dGhpcy5jYW1lcmEsaT10aGlzLm1hdHJpeCxyPXRoaXMuX2xpZ2h0UG9zaXRpb25Xb3JsZCxvPXRoaXMuX2xvb2tUYXJnZXQsYT10aGlzLl9wcm9qU2NyZWVuTWF0cml4O3Iuc2V0RnJvbU1hdHJpeFBvc2l0aW9uKHQubWF0cml4V29ybGQpLG4ucG9zaXRpb24uY29weShyKSxvLmNvcHkobi5wb3NpdGlvbiksby5hZGQodGhpcy5fY3ViZURpcmVjdGlvbnNbZV0pLG4udXAuY29weSh0aGlzLl9jdWJlVXBzW2VdKSxuLmxvb2tBdChvKSxuLnVwZGF0ZU1hdHJpeFdvcmxkKCksaS5tYWtlVHJhbnNsYXRpb24oLXIueCwtci55LC1yLnopLGEubXVsdGlwbHlNYXRyaWNlcyhuLnByb2plY3Rpb25NYXRyaXgsbi5tYXRyaXhXb3JsZEludmVyc2UpLHRoaXMuX2ZydXN0dW0uc2V0RnJvbVByb2plY3Rpb25NYXRyaXgoYSl9fSksd1l0LnByb3RvdHlwZT1PYmplY3QuYXNzaWduKE9iamVjdC5jcmVhdGUoZ1l0LnByb3RvdHlwZSkse2NvbnN0cnVjdG9yOndZdCxpc1BvaW50TGlnaHQ6ITAsY29weTpmdW5jdGlvbih0KXtyZXR1cm4gZ1l0LnByb3RvdHlwZS5jb3B5LmNhbGwodGhpcyx0KSx0aGlzLmRpc3RhbmNlPXQuZGlzdGFuY2UsdGhpcy5kZWNheT10LmRlY2F5LHRoaXMuc2hhZG93PXQuc2hhZG93LmNsb25lKCksdGhpc319KSxTWXQucHJvdG90eXBlPU9iamVjdC5hc3NpZ24oT2JqZWN0LmNyZWF0ZShCVnQucHJvdG90eXBlKSx7Y29uc3RydWN0b3I6U1l0LGlzT3J0aG9ncmFwaGljQ2FtZXJhOiEwLGNvcHk6ZnVuY3Rpb24odCxlKXtyZXR1cm4gQlZ0LnByb3RvdHlwZS5jb3B5LmNhbGwodGhpcyx0LGUpLHRoaXMubGVmdD10LmxlZnQsdGhpcy5yaWdodD10LnJpZ2h0LHRoaXMudG9wPXQudG9wLHRoaXMuYm90dG9tPXQuYm90dG9tLHRoaXMubmVhcj10Lm5lYXIsdGhpcy5mYXI9dC5mYXIsdGhpcy56b29tPXQuem9vbSx0aGlzLnZpZXc9bnVsbD09PXQudmlldz9udWxsOk9iamVjdC5hc3NpZ24oe30sdC52aWV3KSx0aGlzfSxzZXRWaWV3T2Zmc2V0OmZ1bmN0aW9uKHQsZSxuLGkscixvKXtudWxsPT09dGhpcy52aWV3JiYodGhpcy52aWV3PXtlbmFibGVkOiEwLGZ1bGxXaWR0aDoxLGZ1bGxIZWlnaHQ6MSxvZmZzZXRYOjAsb2Zmc2V0WTowLHdpZHRoOjEsaGVpZ2h0OjF9KSx0aGlzLnZpZXcuZW5hYmxlZD0hMCx0aGlzLnZpZXcuZnVsbFdpZHRoPXQsdGhpcy52aWV3LmZ1bGxIZWlnaHQ9ZSx0aGlzLnZpZXcub2Zmc2V0WD1uLHRoaXMudmlldy5vZmZzZXRZPWksdGhpcy52aWV3LndpZHRoPXIsdGhpcy52aWV3LmhlaWdodD1vLHRoaXMudXBkYXRlUHJvamVjdGlvbk1hdHJpeCgpfSxjbGVhclZpZXdPZmZzZXQ6ZnVuY3Rpb24oKXtudWxsIT09dGhpcy52aWV3JiYodGhpcy52aWV3LmVuYWJsZWQ9ITEpLHRoaXMudXBkYXRlUHJvamVjdGlvbk1hdHJpeCgpfSx1cGRhdGVQcm9qZWN0aW9uTWF0cml4OmZ1bmN0aW9uKCl7Y29uc3QgdD0odGhpcy5yaWdodC10aGlzLmxlZnQpLygyKnRoaXMuem9vbSksZT0odGhpcy50b3AtdGhpcy5ib3R0b20pLygyKnRoaXMuem9vbSksbj0odGhpcy5yaWdodCt0aGlzLmxlZnQpLzIsaT0odGhpcy50b3ArdGhpcy5ib3R0b20pLzI7bGV0IHI9bi10LG89bit0LGE9aStlLHM9aS1lO2lmKG51bGwhPT10aGlzLnZpZXcmJnRoaXMudmlldy5lbmFibGVkKXtjb25zdCB0PSh0aGlzLnJpZ2h0LXRoaXMubGVmdCkvdGhpcy52aWV3LmZ1bGxXaWR0aC90aGlzLnpvb20sZT0odGhpcy50b3AtdGhpcy5ib3R0b20pL3RoaXMudmlldy5mdWxsSGVpZ2h0L3RoaXMuem9vbTtyKz10KnRoaXMudmlldy5vZmZzZXRYLG89cit0KnRoaXMudmlldy53aWR0aCxhLT1lKnRoaXMudmlldy5vZmZzZXRZLHM9YS1lKnRoaXMudmlldy5oZWlnaHR9dGhpcy5wcm9qZWN0aW9uTWF0cml4Lm1ha2VPcnRob2dyYXBoaWMocixvLGEscyx0aGlzLm5lYXIsdGhpcy5mYXIpLHRoaXMucHJvamVjdGlvbk1hdHJpeEludmVyc2UuY29weSh0aGlzLnByb2plY3Rpb25NYXRyaXgpLmludmVydCgpfSx0b0pTT046ZnVuY3Rpb24odCl7Y29uc3QgZT1fRnQucHJvdG90eXBlLnRvSlNPTi5jYWxsKHRoaXMsdCk7cmV0dXJuIGUub2JqZWN0Lnpvb209dGhpcy56b29tLGUub2JqZWN0LmxlZnQ9dGhpcy5sZWZ0LGUub2JqZWN0LnJpZ2h0PXRoaXMucmlnaHQsZS5vYmplY3QudG9wPXRoaXMudG9wLGUub2JqZWN0LmJvdHRvbT10aGlzLmJvdHRvbSxlLm9iamVjdC5uZWFyPXRoaXMubmVhcixlLm9iamVjdC5mYXI9dGhpcy5mYXIsbnVsbCE9PXRoaXMudmlldyYmKGUub2JqZWN0LnZpZXc9T2JqZWN0LmFzc2lnbih7fSx0aGlzLnZpZXcpKSxlfX0pLE1ZdC5wcm90b3R5cGU9T2JqZWN0LmFzc2lnbihPYmplY3QuY3JlYXRlKHlZdC5wcm90b3R5cGUpLHtjb25zdHJ1Y3RvcjpNWXQsaXNEaXJlY3Rpb25hbExpZ2h0U2hhZG93OiEwLHVwZGF0ZU1hdHJpY2VzOmZ1bmN0aW9uKHQpe3lZdC5wcm90b3R5cGUudXBkYXRlTWF0cmljZXMuY2FsbCh0aGlzLHQpfX0pLEVZdC5wcm90b3R5cGU9T2JqZWN0LmFzc2lnbihPYmplY3QuY3JlYXRlKGdZdC5wcm90b3R5cGUpLHtjb25zdHJ1Y3RvcjpFWXQsaXNEaXJlY3Rpb25hbExpZ2h0OiEwLGNvcHk6ZnVuY3Rpb24odCl7cmV0dXJuIGdZdC5wcm90b3R5cGUuY29weS5jYWxsKHRoaXMsdCksdGhpcy50YXJnZXQ9dC50YXJnZXQuY2xvbmUoKSx0aGlzLnNoYWRvdz10LnNoYWRvdy5jbG9uZSgpLHRoaXN9fSksVFl0LnByb3RvdHlwZT1PYmplY3QuYXNzaWduKE9iamVjdC5jcmVhdGUoZ1l0LnByb3RvdHlwZSkse2NvbnN0cnVjdG9yOlRZdCxpc0FtYmllbnRMaWdodDohMH0pLEFZdC5wcm90b3R5cGU9T2JqZWN0LmFzc2lnbihPYmplY3QuY3JlYXRlKGdZdC5wcm90b3R5cGUpLHtjb25zdHJ1Y3RvcjpBWXQsaXNSZWN0QXJlYUxpZ2h0OiEwLGNvcHk6ZnVuY3Rpb24odCl7cmV0dXJuIGdZdC5wcm90b3R5cGUuY29weS5jYWxsKHRoaXMsdCksdGhpcy53aWR0aD10LndpZHRoLHRoaXMuaGVpZ2h0PXQuaGVpZ2h0LHRoaXN9LHRvSlNPTjpmdW5jdGlvbih0KXtjb25zdCBlPWdZdC5wcm90b3R5cGUudG9KU09OLmNhbGwodGhpcyx0KTtyZXR1cm4gZS5vYmplY3Qud2lkdGg9dGhpcy53aWR0aCxlLm9iamVjdC5oZWlnaHQ9dGhpcy5oZWlnaHQsZX19KTtjbGFzcyBDWXR7Y29uc3RydWN0b3IoKXtPYmplY3QuZGVmaW5lUHJvcGVydHkodGhpcywiaXNTcGhlcmljYWxIYXJtb25pY3MzIix7dmFsdWU6ITB9KSx0aGlzLmNvZWZmaWNpZW50cz1bXTtmb3IobGV0IHQ9MDt0PDk7dCsrKXRoaXMuY29lZmZpY2llbnRzLnB1c2gobmV3IHlIdCl9c2V0KHQpe2ZvcihsZXQgZT0wO2U8OTtlKyspdGhpcy5jb2VmZmljaWVudHNbZV0uY29weSh0W2VdKTtyZXR1cm4gdGhpc316ZXJvKCl7Zm9yKGxldCB0PTA7dDw5O3QrKyl0aGlzLmNvZWZmaWNpZW50c1t0XS5zZXQoMCwwLDApO3JldHVybiB0aGlzfWdldEF0KHQsZSl7Y29uc3Qgbj10LngsaT10Lnkscj10Lnosbz10aGlzLmNvZWZmaWNpZW50cztyZXR1cm4gZS5jb3B5KG9bMF0pLm11bHRpcGx5U2NhbGFyKC4yODIwOTUpLGUuYWRkU2NhbGVkVmVjdG9yKG9bMV0sLjQ4ODYwMyppKSxlLmFkZFNjYWxlZFZlY3RvcihvWzJdLC40ODg2MDMqciksZS5hZGRTY2FsZWRWZWN0b3Iob1szXSwuNDg4NjAzKm4pLGUuYWRkU2NhbGVkVmVjdG9yKG9bNF0sbippKjEuMDkyNTQ4KSxlLmFkZFNjYWxlZFZlY3RvcihvWzVdLGkqcioxLjA5MjU0OCksZS5hZGRTY2FsZWRWZWN0b3Iob1s2XSwuMzE1MzkyKigzKnIqci0xKSksZS5hZGRTY2FsZWRWZWN0b3Iob1s3XSxuKnIqMS4wOTI1NDgpLGUuYWRkU2NhbGVkVmVjdG9yKG9bOF0sLjU0NjI3NCoobipuLWkqaSkpLGV9Z2V0SXJyYWRpYW5jZUF0KHQsZSl7Y29uc3Qgbj10LngsaT10Lnkscj10Lnosbz10aGlzLmNvZWZmaWNpZW50cztyZXR1cm4gZS5jb3B5KG9bMF0pLm11bHRpcGx5U2NhbGFyKC44ODYyMjcpLGUuYWRkU2NhbGVkVmVjdG9yKG9bMV0sMS4wMjMzMjgqaSksZS5hZGRTY2FsZWRWZWN0b3Iob1syXSwxLjAyMzMyOCpyKSxlLmFkZFNjYWxlZFZlY3RvcihvWzNdLDEuMDIzMzI4Km4pLGUuYWRkU2NhbGVkVmVjdG9yKG9bNF0sLjg1ODA4NipuKmkpLGUuYWRkU2NhbGVkVmVjdG9yKG9bNV0sLjg1ODA4NippKnIpLGUuYWRkU2NhbGVkVmVjdG9yKG9bNl0sLjc0MzEyNSpyKnItLjI0NzcwOCksZS5hZGRTY2FsZWRWZWN0b3Iob1s3XSwuODU4MDg2Km4qciksZS5hZGRTY2FsZWRWZWN0b3Iob1s4XSwuNDI5MDQzKihuKm4taSppKSksZX1hZGQodCl7Zm9yKGxldCBlPTA7ZTw5O2UrKyl0aGlzLmNvZWZmaWNpZW50c1tlXS5hZGQodC5jb2VmZmljaWVudHNbZV0pO3JldHVybiB0aGlzfWFkZFNjYWxlZFNIKHQsZSl7Zm9yKGxldCBuPTA7bjw5O24rKyl0aGlzLmNvZWZmaWNpZW50c1tuXS5hZGRTY2FsZWRWZWN0b3IodC5jb2VmZmljaWVudHNbbl0sZSk7cmV0dXJuIHRoaXN9c2NhbGUodCl7Zm9yKGxldCBlPTA7ZTw5O2UrKyl0aGlzLmNvZWZmaWNpZW50c1tlXS5tdWx0aXBseVNjYWxhcih0KTtyZXR1cm4gdGhpc31sZXJwKHQsZSl7Zm9yKGxldCBuPTA7bjw5O24rKyl0aGlzLmNvZWZmaWNpZW50c1tuXS5sZXJwKHQuY29lZmZpY2llbnRzW25dLGUpO3JldHVybiB0aGlzfWVxdWFscyh0KXtmb3IobGV0IGU9MDtlPDk7ZSsrKWlmKCF0aGlzLmNvZWZmaWNpZW50c1tlXS5lcXVhbHModC5jb2VmZmljaWVudHNbZV0pKXJldHVybiExO3JldHVybiEwfWNvcHkodCl7cmV0dXJuIHRoaXMuc2V0KHQuY29lZmZpY2llbnRzKX1jbG9uZSgpe3JldHVybihuZXcgdGhpcy5jb25zdHJ1Y3RvcikuY29weSh0aGlzKX1mcm9tQXJyYXkodCxlPTApe2NvbnN0IG49dGhpcy5jb2VmZmljaWVudHM7Zm9yKGxldCBpPTA7aTw5O2krKyluW2ldLmZyb21BcnJheSh0LGUrMyppKTtyZXR1cm4gdGhpc310b0FycmF5KHQ9W10sZT0wKXtjb25zdCBuPXRoaXMuY29lZmZpY2llbnRzO2ZvcihsZXQgaT0wO2k8OTtpKyspbltpXS50b0FycmF5KHQsZSszKmkpO3JldHVybiB0fXN0YXRpYyBnZXRCYXNpc0F0KHQsZSl7Y29uc3Qgbj10LngsaT10Lnkscj10Lno7ZVswXT0uMjgyMDk1LGVbMV09LjQ4ODYwMyppLGVbMl09LjQ4ODYwMypyLGVbM109LjQ4ODYwMypuLGVbNF09MS4wOTI1NDgqbippLGVbNV09MS4wOTI1NDgqaSpyLGVbNl09LjMxNTM5MiooMypyKnItMSksZVs3XT0xLjA5MjU0OCpuKnIsZVs4XT0uNTQ2Mjc0KihuKm4taSppKX19ZnVuY3Rpb24ga1l0KHQsZSl7Z1l0LmNhbGwodGhpcyx2b2lkIDAsZSksdGhpcy50eXBlPSJMaWdodFByb2JlIix0aGlzLnNoPXZvaWQgMCE9PXQ/dDpuZXcgQ1l0fWZ1bmN0aW9uIExZdCh0KXtCcXQuY2FsbCh0aGlzLHQpLHRoaXMudGV4dHVyZXM9e319a1l0LnByb3RvdHlwZT1PYmplY3QuYXNzaWduKE9iamVjdC5jcmVhdGUoZ1l0LnByb3RvdHlwZSkse2NvbnN0cnVjdG9yOmtZdCxpc0xpZ2h0UHJvYmU6ITAsY29weTpmdW5jdGlvbih0KXtyZXR1cm4gZ1l0LnByb3RvdHlwZS5jb3B5LmNhbGwodGhpcyx0KSx0aGlzLnNoLmNvcHkodC5zaCksdGhpc30sZnJvbUpTT046ZnVuY3Rpb24odCl7cmV0dXJuIHRoaXMuaW50ZW5zaXR5PXQuaW50ZW5zaXR5LHRoaXMuc2guZnJvbUFycmF5KHQuc2gpLHRoaXN9LHRvSlNPTjpmdW5jdGlvbih0KXtjb25zdCBlPWdZdC5wcm90b3R5cGUudG9KU09OLmNhbGwodGhpcyx0KTtyZXR1cm4gZS5vYmplY3Quc2g9dGhpcy5zaC50b0FycmF5KCksZX19KSxMWXQucHJvdG90eXBlPU9iamVjdC5hc3NpZ24oT2JqZWN0LmNyZWF0ZShCcXQucHJvdG90eXBlKSx7Y29uc3RydWN0b3I6TFl0LGxvYWQ6ZnVuY3Rpb24odCxlLG4saSl7Y29uc3Qgcj10aGlzLG89bmV3IEZxdChyLm1hbmFnZXIpO28uc2V0UGF0aChyLnBhdGgpLG8uc2V0UmVxdWVzdEhlYWRlcihyLnJlcXVlc3RIZWFkZXIpLG8uc2V0V2l0aENyZWRlbnRpYWxzKHIud2l0aENyZWRlbnRpYWxzKSxvLmxvYWQodCwoZnVuY3Rpb24obil7dHJ5e2Uoci5wYXJzZShKU09OLnBhcnNlKG4pKSl9Y2F0Y2goZSl7aT9pKGUpOmNvbnNvbGUuZXJyb3IoZSksci5tYW5hZ2VyLml0ZW1FcnJvcih0KX19KSxuLGkpfSxwYXJzZTpmdW5jdGlvbih0KXtjb25zdCBlPXRoaXMudGV4dHVyZXM7ZnVuY3Rpb24gbih0KXtyZXR1cm4gdm9pZCAwPT09ZVt0XSYmY29uc29sZS53YXJuKCJUSFJFRS5NYXRlcmlhbExvYWRlcjogVW5kZWZpbmVkIHRleHR1cmUiLHQpLGVbdF19Y29uc3QgaT1uZXcgdnF0W3QudHlwZV07aWYodm9pZCAwIT09dC51dWlkJiYoaS51dWlkPXQudXVpZCksdm9pZCAwIT09dC5uYW1lJiYoaS5uYW1lPXQubmFtZSksdm9pZCAwIT09dC5jb2xvciYmdm9pZCAwIT09aS5jb2xvciYmaS5jb2xvci5zZXRIZXgodC5jb2xvciksdm9pZCAwIT09dC5yb3VnaG5lc3MmJihpLnJvdWdobmVzcz10LnJvdWdobmVzcyksdm9pZCAwIT09dC5tZXRhbG5lc3MmJihpLm1ldGFsbmVzcz10Lm1ldGFsbmVzcyksdm9pZCAwIT09dC5zaGVlbiYmKGkuc2hlZW49KG5ldyBIRnQpLnNldEhleCh0LnNoZWVuKSksdm9pZCAwIT09dC5lbWlzc2l2ZSYmdm9pZCAwIT09aS5lbWlzc2l2ZSYmaS5lbWlzc2l2ZS5zZXRIZXgodC5lbWlzc2l2ZSksdm9pZCAwIT09dC5zcGVjdWxhciYmdm9pZCAwIT09aS5zcGVjdWxhciYmaS5zcGVjdWxhci5zZXRIZXgodC5zcGVjdWxhciksdm9pZCAwIT09dC5zaGluaW5lc3MmJihpLnNoaW5pbmVzcz10LnNoaW5pbmVzcyksdm9pZCAwIT09dC5jbGVhcmNvYXQmJihpLmNsZWFyY29hdD10LmNsZWFyY29hdCksdm9pZCAwIT09dC5jbGVhcmNvYXRSb3VnaG5lc3MmJihpLmNsZWFyY29hdFJvdWdobmVzcz10LmNsZWFyY29hdFJvdWdobmVzcyksdm9pZCAwIT09dC5mb2cmJihpLmZvZz10LmZvZyksdm9pZCAwIT09dC5mbGF0U2hhZGluZyYmKGkuZmxhdFNoYWRpbmc9dC5mbGF0U2hhZGluZyksdm9pZCAwIT09dC5ibGVuZGluZyYmKGkuYmxlbmRpbmc9dC5ibGVuZGluZyksdm9pZCAwIT09dC5jb21iaW5lJiYoaS5jb21iaW5lPXQuY29tYmluZSksdm9pZCAwIT09dC5zaWRlJiYoaS5zaWRlPXQuc2lkZSksdm9pZCAwIT09dC5vcGFjaXR5JiYoaS5vcGFjaXR5PXQub3BhY2l0eSksdm9pZCAwIT09dC50cmFuc3BhcmVudCYmKGkudHJhbnNwYXJlbnQ9dC50cmFuc3BhcmVudCksdm9pZCAwIT09dC5hbHBoYVRlc3QmJihpLmFscGhhVGVzdD10LmFscGhhVGVzdCksdm9pZCAwIT09dC5kZXB0aFRlc3QmJihpLmRlcHRoVGVzdD10LmRlcHRoVGVzdCksdm9pZCAwIT09dC5kZXB0aFdyaXRlJiYoaS5kZXB0aFdyaXRlPXQuZGVwdGhXcml0ZSksdm9pZCAwIT09dC5jb2xvcldyaXRlJiYoaS5jb2xvcldyaXRlPXQuY29sb3JXcml0ZSksdm9pZCAwIT09dC5zdGVuY2lsV3JpdGUmJihpLnN0ZW5jaWxXcml0ZT10LnN0ZW5jaWxXcml0ZSksdm9pZCAwIT09dC5zdGVuY2lsV3JpdGVNYXNrJiYoaS5zdGVuY2lsV3JpdGVNYXNrPXQuc3RlbmNpbFdyaXRlTWFzayksdm9pZCAwIT09dC5zdGVuY2lsRnVuYyYmKGkuc3RlbmNpbEZ1bmM9dC5zdGVuY2lsRnVuYyksdm9pZCAwIT09dC5zdGVuY2lsUmVmJiYoaS5zdGVuY2lsUmVmPXQuc3RlbmNpbFJlZiksdm9pZCAwIT09dC5zdGVuY2lsRnVuY01hc2smJihpLnN0ZW5jaWxGdW5jTWFzaz10LnN0ZW5jaWxGdW5jTWFzayksdm9pZCAwIT09dC5zdGVuY2lsRmFpbCYmKGkuc3RlbmNpbEZhaWw9dC5zdGVuY2lsRmFpbCksdm9pZCAwIT09dC5zdGVuY2lsWkZhaWwmJihpLnN0ZW5jaWxaRmFpbD10LnN0ZW5jaWxaRmFpbCksdm9pZCAwIT09dC5zdGVuY2lsWlBhc3MmJihpLnN0ZW5jaWxaUGFzcz10LnN0ZW5jaWxaUGFzcyksdm9pZCAwIT09dC53aXJlZnJhbWUmJihpLndpcmVmcmFtZT10LndpcmVmcmFtZSksdm9pZCAwIT09dC53aXJlZnJhbWVMaW5ld2lkdGgmJihpLndpcmVmcmFtZUxpbmV3aWR0aD10LndpcmVmcmFtZUxpbmV3aWR0aCksdm9pZCAwIT09dC53aXJlZnJhbWVMaW5lY2FwJiYoaS53aXJlZnJhbWVMaW5lY2FwPXQud2lyZWZyYW1lTGluZWNhcCksdm9pZCAwIT09dC53aXJlZnJhbWVMaW5lam9pbiYmKGkud2lyZWZyYW1lTGluZWpvaW49dC53aXJlZnJhbWVMaW5lam9pbiksdm9pZCAwIT09dC5yb3RhdGlvbiYmKGkucm90YXRpb249dC5yb3RhdGlvbiksMSE9PXQubGluZXdpZHRoJiYoaS5saW5ld2lkdGg9dC5saW5ld2lkdGgpLHZvaWQgMCE9PXQuZGFzaFNpemUmJihpLmRhc2hTaXplPXQuZGFzaFNpemUpLHZvaWQgMCE9PXQuZ2FwU2l6ZSYmKGkuZ2FwU2l6ZT10LmdhcFNpemUpLHZvaWQgMCE9PXQuc2NhbGUmJihpLnNjYWxlPXQuc2NhbGUpLHZvaWQgMCE9PXQucG9seWdvbk9mZnNldCYmKGkucG9seWdvbk9mZnNldD10LnBvbHlnb25PZmZzZXQpLHZvaWQgMCE9PXQucG9seWdvbk9mZnNldEZhY3RvciYmKGkucG9seWdvbk9mZnNldEZhY3Rvcj10LnBvbHlnb25PZmZzZXRGYWN0b3IpLHZvaWQgMCE9PXQucG9seWdvbk9mZnNldFVuaXRzJiYoaS5wb2x5Z29uT2Zmc2V0VW5pdHM9dC5wb2x5Z29uT2Zmc2V0VW5pdHMpLHZvaWQgMCE9PXQuc2tpbm5pbmcmJihpLnNraW5uaW5nPXQuc2tpbm5pbmcpLHZvaWQgMCE9PXQubW9ycGhUYXJnZXRzJiYoaS5tb3JwaFRhcmdldHM9dC5tb3JwaFRhcmdldHMpLHZvaWQgMCE9PXQubW9ycGhOb3JtYWxzJiYoaS5tb3JwaE5vcm1hbHM9dC5tb3JwaE5vcm1hbHMpLHZvaWQgMCE9PXQuZGl0aGVyaW5nJiYoaS5kaXRoZXJpbmc9dC5kaXRoZXJpbmcpLHZvaWQgMCE9PXQudmVydGV4VGFuZ2VudHMmJihpLnZlcnRleFRhbmdlbnRzPXQudmVydGV4VGFuZ2VudHMpLHZvaWQgMCE9PXQudmlzaWJsZSYmKGkudmlzaWJsZT10LnZpc2libGUpLHZvaWQgMCE9PXQudG9uZU1hcHBlZCYmKGkudG9uZU1hcHBlZD10LnRvbmVNYXBwZWQpLHZvaWQgMCE9PXQudXNlckRhdGEmJihpLnVzZXJEYXRhPXQudXNlckRhdGEpLHZvaWQgMCE9PXQudmVydGV4Q29sb3JzJiYoaS52ZXJ0ZXhDb2xvcnM9Im51bWJlciI9PXR5cGVvZiB0LnZlcnRleENvbG9ycz90LnZlcnRleENvbG9ycz4wOnQudmVydGV4Q29sb3JzKSx2b2lkIDAhPT10LnVuaWZvcm1zKWZvcihjb25zdCBlIGluIHQudW5pZm9ybXMpe2NvbnN0IHI9dC51bmlmb3Jtc1tlXTtzd2l0Y2goaS51bmlmb3Jtc1tlXT17fSxyLnR5cGUpe2Nhc2UidCI6aS51bmlmb3Jtc1tlXS52YWx1ZT1uKHIudmFsdWUpO2JyZWFrO2Nhc2UiYyI6aS51bmlmb3Jtc1tlXS52YWx1ZT0obmV3IEhGdCkuc2V0SGV4KHIudmFsdWUpO2JyZWFrO2Nhc2UidjIiOmkudW5pZm9ybXNbZV0udmFsdWU9KG5ldyBsSHQpLmZyb21BcnJheShyLnZhbHVlKTticmVhaztjYXNlInYzIjppLnVuaWZvcm1zW2VdLnZhbHVlPShuZXcgeUh0KS5mcm9tQXJyYXkoci52YWx1ZSk7YnJlYWs7Y2FzZSJ2NCI6aS51bmlmb3Jtc1tlXS52YWx1ZT0obmV3IG1IdCkuZnJvbUFycmF5KHIudmFsdWUpO2JyZWFrO2Nhc2UibTMiOmkudW5pZm9ybXNbZV0udmFsdWU9KG5ldyBjSHQpLmZyb21BcnJheShyLnZhbHVlKTticmVhaztjYXNlIm00IjppLnVuaWZvcm1zW2VdLnZhbHVlPShuZXcgcUh0KS5mcm9tQXJyYXkoci52YWx1ZSk7YnJlYWs7ZGVmYXVsdDppLnVuaWZvcm1zW2VdLnZhbHVlPXIudmFsdWV9fWlmKHZvaWQgMCE9PXQuZGVmaW5lcyYmKGkuZGVmaW5lcz10LmRlZmluZXMpLHZvaWQgMCE9PXQudmVydGV4U2hhZGVyJiYoaS52ZXJ0ZXhTaGFkZXI9dC52ZXJ0ZXhTaGFkZXIpLHZvaWQgMCE9PXQuZnJhZ21lbnRTaGFkZXImJihpLmZyYWdtZW50U2hhZGVyPXQuZnJhZ21lbnRTaGFkZXIpLHZvaWQgMCE9PXQuZXh0ZW5zaW9ucylmb3IoY29uc3QgZSBpbiB0LmV4dGVuc2lvbnMpaS5leHRlbnNpb25zW2VdPXQuZXh0ZW5zaW9uc1tlXTtpZih2b2lkIDAhPT10LnNoYWRpbmcmJihpLmZsYXRTaGFkaW5nPTE9PT10LnNoYWRpbmcpLHZvaWQgMCE9PXQuc2l6ZSYmKGkuc2l6ZT10LnNpemUpLHZvaWQgMCE9PXQuc2l6ZUF0dGVudWF0aW9uJiYoaS5zaXplQXR0ZW51YXRpb249dC5zaXplQXR0ZW51YXRpb24pLHZvaWQgMCE9PXQubWFwJiYoaS5tYXA9bih0Lm1hcCkpLHZvaWQgMCE9PXQubWF0Y2FwJiYoaS5tYXRjYXA9bih0Lm1hdGNhcCkpLHZvaWQgMCE9PXQuYWxwaGFNYXAmJihpLmFscGhhTWFwPW4odC5hbHBoYU1hcCkpLHZvaWQgMCE9PXQuYnVtcE1hcCYmKGkuYnVtcE1hcD1uKHQuYnVtcE1hcCkpLHZvaWQgMCE9PXQuYnVtcFNjYWxlJiYoaS5idW1wU2NhbGU9dC5idW1wU2NhbGUpLHZvaWQgMCE9PXQubm9ybWFsTWFwJiYoaS5ub3JtYWxNYXA9bih0Lm5vcm1hbE1hcCkpLHZvaWQgMCE9PXQubm9ybWFsTWFwVHlwZSYmKGkubm9ybWFsTWFwVHlwZT10Lm5vcm1hbE1hcFR5cGUpLHZvaWQgMCE9PXQubm9ybWFsU2NhbGUpe2xldCBlPXQubm9ybWFsU2NhbGU7ITE9PT1BcnJheS5pc0FycmF5KGUpJiYoZT1bZSxlXSksaS5ub3JtYWxTY2FsZT0obmV3IGxIdCkuZnJvbUFycmF5KGUpfXJldHVybiB2b2lkIDAhPT10LmRpc3BsYWNlbWVudE1hcCYmKGkuZGlzcGxhY2VtZW50TWFwPW4odC5kaXNwbGFjZW1lbnRNYXApKSx2b2lkIDAhPT10LmRpc3BsYWNlbWVudFNjYWxlJiYoaS5kaXNwbGFjZW1lbnRTY2FsZT10LmRpc3BsYWNlbWVudFNjYWxlKSx2b2lkIDAhPT10LmRpc3BsYWNlbWVudEJpYXMmJihpLmRpc3BsYWNlbWVudEJpYXM9dC5kaXNwbGFjZW1lbnRCaWFzKSx2b2lkIDAhPT10LnJvdWdobmVzc01hcCYmKGkucm91Z2huZXNzTWFwPW4odC5yb3VnaG5lc3NNYXApKSx2b2lkIDAhPT10Lm1ldGFsbmVzc01hcCYmKGkubWV0YWxuZXNzTWFwPW4odC5tZXRhbG5lc3NNYXApKSx2b2lkIDAhPT10LmVtaXNzaXZlTWFwJiYoaS5lbWlzc2l2ZU1hcD1uKHQuZW1pc3NpdmVNYXApKSx2b2lkIDAhPT10LmVtaXNzaXZlSW50ZW5zaXR5JiYoaS5lbWlzc2l2ZUludGVuc2l0eT10LmVtaXNzaXZlSW50ZW5zaXR5KSx2b2lkIDAhPT10LnNwZWN1bGFyTWFwJiYoaS5zcGVjdWxhck1hcD1uKHQuc3BlY3VsYXJNYXApKSx2b2lkIDAhPT10LmVudk1hcCYmKGkuZW52TWFwPW4odC5lbnZNYXApKSx2b2lkIDAhPT10LmVudk1hcEludGVuc2l0eSYmKGkuZW52TWFwSW50ZW5zaXR5PXQuZW52TWFwSW50ZW5zaXR5KSx2b2lkIDAhPT10LnJlZmxlY3Rpdml0eSYmKGkucmVmbGVjdGl2aXR5PXQucmVmbGVjdGl2aXR5KSx2b2lkIDAhPT10LnJlZnJhY3Rpb25SYXRpbyYmKGkucmVmcmFjdGlvblJhdGlvPXQucmVmcmFjdGlvblJhdGlvKSx2b2lkIDAhPT10LmxpZ2h0TWFwJiYoaS5saWdodE1hcD1uKHQubGlnaHRNYXApKSx2b2lkIDAhPT10LmxpZ2h0TWFwSW50ZW5zaXR5JiYoaS5saWdodE1hcEludGVuc2l0eT10LmxpZ2h0TWFwSW50ZW5zaXR5KSx2b2lkIDAhPT10LmFvTWFwJiYoaS5hb01hcD1uKHQuYW9NYXApKSx2b2lkIDAhPT10LmFvTWFwSW50ZW5zaXR5JiYoaS5hb01hcEludGVuc2l0eT10LmFvTWFwSW50ZW5zaXR5KSx2b2lkIDAhPT10LmdyYWRpZW50TWFwJiYoaS5ncmFkaWVudE1hcD1uKHQuZ3JhZGllbnRNYXApKSx2b2lkIDAhPT10LmNsZWFyY29hdE1hcCYmKGkuY2xlYXJjb2F0TWFwPW4odC5jbGVhcmNvYXRNYXApKSx2b2lkIDAhPT10LmNsZWFyY29hdFJvdWdobmVzc01hcCYmKGkuY2xlYXJjb2F0Um91Z2huZXNzTWFwPW4odC5jbGVhcmNvYXRSb3VnaG5lc3NNYXApKSx2b2lkIDAhPT10LmNsZWFyY29hdE5vcm1hbE1hcCYmKGkuY2xlYXJjb2F0Tm9ybWFsTWFwPW4odC5jbGVhcmNvYXROb3JtYWxNYXApKSx2b2lkIDAhPT10LmNsZWFyY29hdE5vcm1hbFNjYWxlJiYoaS5jbGVhcmNvYXROb3JtYWxTY2FsZT0obmV3IGxIdCkuZnJvbUFycmF5KHQuY2xlYXJjb2F0Tm9ybWFsU2NhbGUpKSx2b2lkIDAhPT10LnRyYW5zbWlzc2lvbiYmKGkudHJhbnNtaXNzaW9uPXQudHJhbnNtaXNzaW9uKSx2b2lkIDAhPT10LnRyYW5zbWlzc2lvbk1hcCYmKGkudHJhbnNtaXNzaW9uTWFwPW4odC50cmFuc21pc3Npb25NYXApKSxpfSxzZXRUZXh0dXJlczpmdW5jdGlvbih0KXtyZXR1cm4gdGhpcy50ZXh0dXJlcz10LHRoaXN9fSk7Y29uc3QgUFl0PXtkZWNvZGVUZXh0OmZ1bmN0aW9uKHQpe2lmKCJ1bmRlZmluZWQiIT10eXBlb2YgVGV4dERlY29kZXIpcmV0dXJuKG5ldyBUZXh0RGVjb2RlcikuZGVjb2RlKHQpO2xldCBlPSIiO2ZvcihsZXQgbj0wLGk9dC5sZW5ndGg7bjxpO24rKyllKz1TdHJpbmcuZnJvbUNoYXJDb2RlKHRbbl0pO3RyeXtyZXR1cm4gZGVjb2RlVVJJQ29tcG9uZW50KGVzY2FwZShlKSl9Y2F0Y2godCl7cmV0dXJuIGV9fSxleHRyYWN0VXJsQmFzZTpmdW5jdGlvbih0KXtjb25zdCBlPXQubGFzdEluZGV4T2YoIi8iKTtyZXR1cm4tMT09PWU/Ii4vIjp0LnN1YnN0cigwLGUrMSl9fTtmdW5jdGlvbiBJWXQoKXtwVnQuY2FsbCh0aGlzKSx0aGlzLnR5cGU9Ikluc3RhbmNlZEJ1ZmZlckdlb21ldHJ5Iix0aGlzLmluc3RhbmNlQ291bnQ9MS8wfWZ1bmN0aW9uIE5ZdCh0LGUsbixpKXsibnVtYmVyIj09dHlwZW9mIG4mJihpPW4sbj0hMSxjb25zb2xlLmVycm9yKCJUSFJFRS5JbnN0YW5jZWRCdWZmZXJBdHRyaWJ1dGU6IFRoZSBjb25zdHJ1Y3RvciBub3cgZXhwZWN0cyBub3JtYWxpemVkIGFzIHRoZSB0aGlyZCBhcmd1bWVudC4iKSkscUZ0LmNhbGwodGhpcyx0LGUsbiksdGhpcy5tZXNoUGVyQXR0cmlidXRlPWl8fDF9ZnVuY3Rpb24gT1l0KHQpe0JxdC5jYWxsKHRoaXMsdCl9SVl0LnByb3RvdHlwZT1PYmplY3QuYXNzaWduKE9iamVjdC5jcmVhdGUocFZ0LnByb3RvdHlwZSkse2NvbnN0cnVjdG9yOklZdCxpc0luc3RhbmNlZEJ1ZmZlckdlb21ldHJ5OiEwLGNvcHk6ZnVuY3Rpb24odCl7cmV0dXJuIHBWdC5wcm90b3R5cGUuY29weS5jYWxsKHRoaXMsdCksdGhpcy5pbnN0YW5jZUNvdW50PXQuaW5zdGFuY2VDb3VudCx0aGlzfSxjbG9uZTpmdW5jdGlvbigpe3JldHVybihuZXcgdGhpcy5jb25zdHJ1Y3RvcikuY29weSh0aGlzKX0sdG9KU09OOmZ1bmN0aW9uKCl7Y29uc3QgdD1wVnQucHJvdG90eXBlLnRvSlNPTi5jYWxsKHRoaXMpO3JldHVybiB0Lmluc3RhbmNlQ291bnQ9dGhpcy5pbnN0YW5jZUNvdW50LHQuaXNJbnN0YW5jZWRCdWZmZXJHZW9tZXRyeT0hMCx0fX0pLE5ZdC5wcm90b3R5cGU9T2JqZWN0LmFzc2lnbihPYmplY3QuY3JlYXRlKHFGdC5wcm90b3R5cGUpLHtjb25zdHJ1Y3RvcjpOWXQsaXNJbnN0YW5jZWRCdWZmZXJBdHRyaWJ1dGU6ITAsY29weTpmdW5jdGlvbih0KXtyZXR1cm4gcUZ0LnByb3RvdHlwZS5jb3B5LmNhbGwodGhpcyx0KSx0aGlzLm1lc2hQZXJBdHRyaWJ1dGU9dC5tZXNoUGVyQXR0cmlidXRlLHRoaXN9LHRvSlNPTjpmdW5jdGlvbigpe2NvbnN0IHQ9cUZ0LnByb3RvdHlwZS50b0pTT04uY2FsbCh0aGlzKTtyZXR1cm4gdC5tZXNoUGVyQXR0cmlidXRlPXRoaXMubWVzaFBlckF0dHJpYnV0ZSx0LmlzSW5zdGFuY2VkQnVmZmVyQXR0cmlidXRlPSEwLHR9fSksT1l0LnByb3RvdHlwZT1PYmplY3QuYXNzaWduKE9iamVjdC5jcmVhdGUoQnF0LnByb3RvdHlwZSkse2NvbnN0cnVjdG9yOk9ZdCxsb2FkOmZ1bmN0aW9uKHQsZSxuLGkpe2NvbnN0IHI9dGhpcyxvPW5ldyBGcXQoci5tYW5hZ2VyKTtvLnNldFBhdGgoci5wYXRoKSxvLnNldFJlcXVlc3RIZWFkZXIoci5yZXF1ZXN0SGVhZGVyKSxvLnNldFdpdGhDcmVkZW50aWFscyhyLndpdGhDcmVkZW50aWFscyksby5sb2FkKHQsKGZ1bmN0aW9uKG4pe3RyeXtlKHIucGFyc2UoSlNPTi5wYXJzZShuKSkpfWNhdGNoKGUpe2k/aShlKTpjb25zb2xlLmVycm9yKGUpLHIubWFuYWdlci5pdGVtRXJyb3IodCl9fSksbixpKX0scGFyc2U6ZnVuY3Rpb24odCl7Y29uc3QgZT17fSxuPXt9O2Z1bmN0aW9uIGkodCxpKXtpZih2b2lkIDAhPT1lW2ldKXJldHVybiBlW2ldO2NvbnN0IHI9dC5pbnRlcmxlYXZlZEJ1ZmZlcnNbaV0sbz0oZnVuY3Rpb24gYSh0LGUpe2lmKHZvaWQgMCE9PW5bZV0pcmV0dXJuIG5bZV07Y29uc3QgaT1uZXcgVWludDMyQXJyYXkodC5hcnJheUJ1ZmZlcnNbZV0pLmJ1ZmZlcjtyZXR1cm4gbltlXT1pLGl9KSh0LHIuYnVmZmVyKSxzPW5ldyBvR3Qob1Z0KHIudHlwZSxvKSxyLnN0cmlkZSk7cmV0dXJuIHMudXVpZD1yLnV1aWQsZVtpXT1zLHN9Y29uc3Qgcj10LmlzSW5zdGFuY2VkQnVmZmVyR2VvbWV0cnk/bmV3IElZdDpuZXcgcFZ0LG89dC5kYXRhLmluZGV4O2lmKHZvaWQgMCE9PW8pe2NvbnN0IHQ9b1Z0KG8udHlwZSxvLmFycmF5KTtyLnNldEluZGV4KG5ldyBxRnQodCwxKSl9Y29uc3QgYT10LmRhdGEuYXR0cmlidXRlcztmb3IoY29uc3QgZSBpbiBhKXtjb25zdCBuPWFbZV07bGV0IG87aWYobi5pc0ludGVybGVhdmVkQnVmZmVyQXR0cmlidXRlKW89bmV3IHNHdChpKHQuZGF0YSxuLmRhdGEpLG4uaXRlbVNpemUsbi5vZmZzZXQsbi5ub3JtYWxpemVkKTtlbHNle2NvbnN0IHQ9b1Z0KG4udHlwZSxuLmFycmF5KTtvPW5ldyhuLmlzSW5zdGFuY2VkQnVmZmVyQXR0cmlidXRlP05ZdDpxRnQpKHQsbi5pdGVtU2l6ZSxuLm5vcm1hbGl6ZWQpfXZvaWQgMCE9PW4ubmFtZSYmKG8ubmFtZT1uLm5hbWUpLHIuc2V0QXR0cmlidXRlKGUsbyl9Y29uc3Qgcz10LmRhdGEubW9ycGhBdHRyaWJ1dGVzO2lmKHMpZm9yKGNvbnN0IGUgaW4gcyl7Y29uc3Qgbj1zW2VdLG89W107Zm9yKGxldCBlPTAscj1uLmxlbmd0aDtlPHI7ZSsrKXtjb25zdCByPW5bZV07bGV0IGE7YT1yLmlzSW50ZXJsZWF2ZWRCdWZmZXJBdHRyaWJ1dGU/bmV3IHNHdChpKHQuZGF0YSxyLmRhdGEpLHIuaXRlbVNpemUsci5vZmZzZXQsci5ub3JtYWxpemVkKTpuZXcgcUZ0KG9WdChyLnR5cGUsci5hcnJheSksci5pdGVtU2l6ZSxyLm5vcm1hbGl6ZWQpLHZvaWQgMCE9PXIubmFtZSYmKGEubmFtZT1yLm5hbWUpLG8ucHVzaChhKX1yLm1vcnBoQXR0cmlidXRlc1tlXT1vfXQuZGF0YS5tb3JwaFRhcmdldHNSZWxhdGl2ZSYmKHIubW9ycGhUYXJnZXRzUmVsYXRpdmU9ITApO2NvbnN0IGw9dC5kYXRhLmdyb3Vwc3x8dC5kYXRhLmRyYXdjYWxsc3x8dC5kYXRhLm9mZnNldHM7aWYodm9pZCAwIT09bClmb3IobGV0IHQ9MCxlPWwubGVuZ3RoO3QhPT1lOysrdCl7Y29uc3QgZT1sW3RdO3IuYWRkR3JvdXAoZS5zdGFydCxlLmNvdW50LGUubWF0ZXJpYWxJbmRleCl9Y29uc3QgYz10LmRhdGEuYm91bmRpbmdTcGhlcmU7aWYodm9pZCAwIT09Yyl7Y29uc3QgdD1uZXcgeUh0O3ZvaWQgMCE9PWMuY2VudGVyJiZ0LmZyb21BcnJheShjLmNlbnRlciksci5ib3VuZGluZ1NwaGVyZT1uZXcgREh0KHQsYy5yYWRpdXMpfXJldHVybiB0Lm5hbWUmJihyLm5hbWU9dC5uYW1lKSx0LnVzZXJEYXRhJiYoci51c2VyRGF0YT10LnVzZXJEYXRhKSxyfX0pO2NvbnN0IFJZdD17VVZNYXBwaW5nOmlCdCxDdWJlUmVmbGVjdGlvbk1hcHBpbmc6ckJ0LEN1YmVSZWZyYWN0aW9uTWFwcGluZzpvQnQsRXF1aXJlY3Rhbmd1bGFyUmVmbGVjdGlvbk1hcHBpbmc6YUJ0LEVxdWlyZWN0YW5ndWxhclJlZnJhY3Rpb25NYXBwaW5nOnNCdCxDdWJlVVZSZWZsZWN0aW9uTWFwcGluZzpsQnQsQ3ViZVVWUmVmcmFjdGlvbk1hcHBpbmc6Y0J0fSx6WXQ9e1JlcGVhdFdyYXBwaW5nOnVCdCxDbGFtcFRvRWRnZVdyYXBwaW5nOmhCdCxNaXJyb3JlZFJlcGVhdFdyYXBwaW5nOmRCdH0sRFl0PXtOZWFyZXN0RmlsdGVyOnBCdCxOZWFyZXN0TWlwbWFwTmVhcmVzdEZpbHRlcjpmQnQsTmVhcmVzdE1pcG1hcExpbmVhckZpbHRlcjptQnQsTGluZWFyRmlsdGVyOmdCdCxMaW5lYXJNaXBtYXBOZWFyZXN0RmlsdGVyOl9CdCxMaW5lYXJNaXBtYXBMaW5lYXJGaWx0ZXI6eUJ0fTtmdW5jdGlvbiBCWXQodCl7InVuZGVmaW5lZCI9PXR5cGVvZiBjcmVhdGVJbWFnZUJpdG1hcCYmY29uc29sZS53YXJuKCJUSFJFRS5JbWFnZUJpdG1hcExvYWRlcjogY3JlYXRlSW1hZ2VCaXRtYXAoKSBub3Qgc3VwcG9ydGVkLiIpLCJ1bmRlZmluZWQiPT10eXBlb2YgZmV0Y2gmJmNvbnNvbGUud2FybigiVEhSRUUuSW1hZ2VCaXRtYXBMb2FkZXI6IGZldGNoKCkgbm90IHN1cHBvcnRlZC4iKSxCcXQuY2FsbCh0aGlzLHQpLHRoaXMub3B0aW9ucz17cHJlbXVsdGlwbHlBbHBoYToibm9uZSJ9fWZ1bmN0aW9uIEhZdCgpe3RoaXMudHlwZT0iU2hhcGVQYXRoIix0aGlzLmNvbG9yPW5ldyBIRnQsdGhpcy5zdWJQYXRocz1bXSx0aGlzLmN1cnJlbnRQYXRoPW51bGx9Qll0LnByb3RvdHlwZT1PYmplY3QuYXNzaWduKE9iamVjdC5jcmVhdGUoQnF0LnByb3RvdHlwZSkse2NvbnN0cnVjdG9yOkJZdCxpc0ltYWdlQml0bWFwTG9hZGVyOiEwLHNldE9wdGlvbnM6ZnVuY3Rpb24gdChlKXtyZXR1cm4gdGhpcy5vcHRpb25zPWUsdGhpc30sbG9hZDpmdW5jdGlvbih0LGUsbixpKXt2b2lkIDA9PT10JiYodD0iIiksdm9pZCAwIT09dGhpcy5wYXRoJiYodD10aGlzLnBhdGgrdCksdD10aGlzLm1hbmFnZXIucmVzb2x2ZVVSTCh0KTtjb25zdCByPXRoaXMsbz1ScXQuZ2V0KHQpO2lmKHZvaWQgMCE9PW8pcmV0dXJuIHIubWFuYWdlci5pdGVtU3RhcnQodCksc2V0VGltZW91dCgoZnVuY3Rpb24oKXtlJiZlKG8pLHIubWFuYWdlci5pdGVtRW5kKHQpfSksMCksbztjb25zdCBhPXt9O2EuY3JlZGVudGlhbHM9ImFub255bW91cyI9PT10aGlzLmNyb3NzT3JpZ2luPyJzYW1lLW9yaWdpbiI6ImluY2x1ZGUiLGZldGNoKHQsYSkudGhlbigoZnVuY3Rpb24odCl7cmV0dXJuIHQuYmxvYigpfSkpLnRoZW4oKGZ1bmN0aW9uKHQpe3JldHVybiBjcmVhdGVJbWFnZUJpdG1hcCh0LHIub3B0aW9ucyl9KSkudGhlbigoZnVuY3Rpb24obil7UnF0LmFkZCh0LG4pLGUmJmUobiksci5tYW5hZ2VyLml0ZW1FbmQodCl9KSkuY2F0Y2goKGZ1bmN0aW9uKGUpe2kmJmkoZSksci5tYW5hZ2VyLml0ZW1FcnJvcih0KSxyLm1hbmFnZXIuaXRlbUVuZCh0KX0pKSxyLm1hbmFnZXIuaXRlbVN0YXJ0KHQpfX0pLE9iamVjdC5hc3NpZ24oSFl0LnByb3RvdHlwZSx7bW92ZVRvOmZ1bmN0aW9uKHQsZSl7cmV0dXJuIHRoaXMuY3VycmVudFBhdGg9bmV3IGZZdCx0aGlzLnN1YlBhdGhzLnB1c2godGhpcy5jdXJyZW50UGF0aCksdGhpcy5jdXJyZW50UGF0aC5tb3ZlVG8odCxlKSx0aGlzfSxsaW5lVG86ZnVuY3Rpb24odCxlKXtyZXR1cm4gdGhpcy5jdXJyZW50UGF0aC5saW5lVG8odCxlKSx0aGlzfSxxdWFkcmF0aWNDdXJ2ZVRvOmZ1bmN0aW9uKHQsZSxuLGkpe3JldHVybiB0aGlzLmN1cnJlbnRQYXRoLnF1YWRyYXRpY0N1cnZlVG8odCxlLG4saSksdGhpc30sYmV6aWVyQ3VydmVUbzpmdW5jdGlvbih0LGUsbixpLHIsbyl7cmV0dXJuIHRoaXMuY3VycmVudFBhdGguYmV6aWVyQ3VydmVUbyh0LGUsbixpLHIsbyksdGhpc30sc3BsaW5lVGhydTpmdW5jdGlvbih0KXtyZXR1cm4gdGhpcy5jdXJyZW50UGF0aC5zcGxpbmVUaHJ1KHQpLHRoaXN9LHRvU2hhcGVzOmZ1bmN0aW9uKHQsZSl7ZnVuY3Rpb24gbih0KXtjb25zdCBlPVtdO2ZvcihsZXQgbj0wLGk9dC5sZW5ndGg7bjxpO24rKyl7Y29uc3QgaT10W25dLHI9bmV3IG1ZdDtyLmN1cnZlcz1pLmN1cnZlcyxlLnB1c2gocil9cmV0dXJuIGV9ZnVuY3Rpb24gaSh0LGUpe2NvbnN0IG49ZS5sZW5ndGg7bGV0IGk9ITE7Zm9yKGxldCByPW4tMSxvPTA7bzxuO3I9bysrKXtsZXQgbj1lW3JdLGE9ZVtvXSxzPWEueC1uLngsbD1hLnktbi55O2lmKE1hdGguYWJzKGwpPk51bWJlci5FUFNJTE9OKXtpZihsPDAmJihuPWVbb10scz0tcyxhPWVbcl0sbD0tbCksdC55PG4ueXx8dC55PmEueSljb250aW51ZTtpZih0Lnk9PT1uLnkpe2lmKHQueD09PW4ueClyZXR1cm4hMH1lbHNle2NvbnN0IGU9bCoodC54LW4ueCktcyoodC55LW4ueSk7aWYoMD09PWUpcmV0dXJuITA7aWYoZTwwKWNvbnRpbnVlO2k9IWl9fWVsc2V7aWYodC55IT09bi55KWNvbnRpbnVlO2lmKGEueDw9dC54JiZ0Lng8PW4ueHx8bi54PD10LngmJnQueDw9YS54KXJldHVybiEwfX1yZXR1cm4gaX1jb25zdCByPUdXdC5pc0Nsb2NrV2lzZSxvPXRoaXMuc3ViUGF0aHM7aWYoMD09PW8ubGVuZ3RoKXJldHVybltdO2lmKCEwPT09ZSlyZXR1cm4gbihvKTtsZXQgYSxzLGw7Y29uc3QgYz1bXTtpZigxPT09by5sZW5ndGgpcmV0dXJuIHM9b1swXSxsPW5ldyBtWXQsbC5jdXJ2ZXM9cy5jdXJ2ZXMsYy5wdXNoKGwpLGM7bGV0IHU9IXIob1swXS5nZXRQb2ludHMoKSk7dT10PyF1OnU7Y29uc3QgaD1bXSxkPVtdO2xldCBwLGYsbT1bXSxnPTA7ZFtnXT12b2lkIDAsbVtnXT1bXTtmb3IobGV0IGU9MCxuPW8ubGVuZ3RoO2U8bjtlKyspcz1vW2VdLHA9cy5nZXRQb2ludHMoKSxhPXIocCksYT10PyFhOmEsYT8oIXUmJmRbZ10mJmcrKyxkW2ddPXtzOm5ldyBtWXQscDpwfSxkW2ddLnMuY3VydmVzPXMuY3VydmVzLHUmJmcrKyxtW2ddPVtdKTptW2ddLnB1c2goe2g6cyxwOnBbMF19KTtpZighZFswXSlyZXR1cm4gbihvKTtpZihkLmxlbmd0aD4xKXtsZXQgdD0hMTtjb25zdCBlPVtdO2ZvcihsZXQgdD0wLGU9ZC5sZW5ndGg7dDxlO3QrKyloW3RdPVtdO2ZvcihsZXQgbj0wLHI9ZC5sZW5ndGg7bjxyO24rKyl7Y29uc3Qgcj1tW25dO2ZvcihsZXQgbz0wO288ci5sZW5ndGg7bysrKXtjb25zdCBhPXJbb107bGV0IHM9ITA7Zm9yKGxldCByPTA7cjxkLmxlbmd0aDtyKyspaShhLnAsZFtyXS5wKSYmKG4hPT1yJiZlLnB1c2goe2Zyb21zOm4sdG9zOnIsaG9sZTpvfSkscz8ocz0hMSxoW3JdLnB1c2goYSkpOnQ9ITApO3MmJmhbbl0ucHVzaChhKX19ZS5sZW5ndGg+MCYmKHR8fChtPWgpKX1mb3IobGV0IHQ9MCxlPWQubGVuZ3RoO3Q8ZTt0Kyspe2w9ZFt0XS5zLGMucHVzaChsKSxmPW1bdF07Zm9yKGxldCB0PTAsZT1mLmxlbmd0aDt0PGU7dCsrKWwuaG9sZXMucHVzaChmW3RdLmgpfXJldHVybiBjfX0pO2NsYXNzIEZZdHtjb25zdHJ1Y3Rvcih0KXtPYmplY3QuZGVmaW5lUHJvcGVydHkodGhpcywiaXNGb250Iix7dmFsdWU6ITB9KSx0aGlzLnR5cGU9IkZvbnQiLHRoaXMuZGF0YT10fWdlbmVyYXRlU2hhcGVzKHQsZT0xMDApe2NvbnN0IG49W10saT0oZnVuY3Rpb24gcih0LGUsbil7Y29uc3QgaT1BcnJheS5mcm9tP0FycmF5LmZyb20odCk6U3RyaW5nKHQpLnNwbGl0KCIiKSxyPWUvbi5yZXNvbHV0aW9uLG89KG4uYm91bmRpbmdCb3gueU1heC1uLmJvdW5kaW5nQm94LnlNaW4rbi51bmRlcmxpbmVUaGlja25lc3MpKnIsYT1bXTtsZXQgcz0wLGw9MDtmb3IobGV0IHQ9MDt0PGkubGVuZ3RoO3QrKyl7Y29uc3QgZT1pW3RdO2lmKCJcbiI9PT1lKXM9MCxsLT1vO2Vsc2V7Y29uc3QgdD1WWXQoZSxyLHMsbCxuKTtzKz10Lm9mZnNldFgsYS5wdXNoKHQucGF0aCl9fXJldHVybiBhfSkodCxlLHRoaXMuZGF0YSk7Zm9yKGxldCB0PTAsZT1pLmxlbmd0aDt0PGU7dCsrKUFycmF5LnByb3RvdHlwZS5wdXNoLmFwcGx5KG4saVt0XS50b1NoYXBlcygpKTtyZXR1cm4gbn19ZnVuY3Rpb24gVll0KHQsZSxuLGkscil7Y29uc3Qgbz1yLmdseXBoc1t0XXx8ci5nbHlwaHNbIj8iXTtpZighbylyZXR1cm4gdm9pZCBjb25zb2xlLmVycm9yKCdUSFJFRS5Gb250OiBjaGFyYWN0ZXIgIicrdCsnIiBkb2VzIG5vdCBleGlzdHMgaW4gZm9udCBmYW1pbHkgJytyLmZhbWlseU5hbWUrIi4iKTtjb25zdCBhPW5ldyBIWXQ7bGV0IHMsbCxjLHUsaCxkLHAsZjtpZihvLm8pe2NvbnN0IHQ9by5fY2FjaGVkT3V0bGluZXx8KG8uX2NhY2hlZE91dGxpbmU9by5vLnNwbGl0KCIgIikpO2ZvcihsZXQgcj0wLG89dC5sZW5ndGg7cjxvOylzd2l0Y2godFtyKytdKXtjYXNlIm0iOnM9dFtyKytdKmUrbixsPXRbcisrXSplK2ksYS5tb3ZlVG8ocyxsKTticmVhaztjYXNlImwiOnM9dFtyKytdKmUrbixsPXRbcisrXSplK2ksYS5saW5lVG8ocyxsKTticmVhaztjYXNlInEiOmM9dFtyKytdKmUrbix1PXRbcisrXSplK2ksaD10W3IrK10qZStuLGQ9dFtyKytdKmUraSxhLnF1YWRyYXRpY0N1cnZlVG8oaCxkLGMsdSk7YnJlYWs7Y2FzZSJiIjpjPXRbcisrXSplK24sdT10W3IrK10qZStpLGg9dFtyKytdKmUrbixkPXRbcisrXSplK2kscD10W3IrK10qZStuLGY9dFtyKytdKmUraSxhLmJlemllckN1cnZlVG8oaCxkLHAsZixjLHUpfX1yZXR1cm57b2Zmc2V0WDpvLmhhKmUscGF0aDphfX1mdW5jdGlvbiBqWXQodCl7QnF0LmNhbGwodGhpcyx0KX1sZXQgVVl0O2pZdC5wcm90b3R5cGU9T2JqZWN0LmFzc2lnbihPYmplY3QuY3JlYXRlKEJxdC5wcm90b3R5cGUpLHtjb25zdHJ1Y3RvcjpqWXQsbG9hZDpmdW5jdGlvbih0LGUsbixpKXtjb25zdCByPXRoaXMsbz1uZXcgRnF0KHRoaXMubWFuYWdlcik7by5zZXRQYXRoKHRoaXMucGF0aCksby5zZXRSZXF1ZXN0SGVhZGVyKHRoaXMucmVxdWVzdEhlYWRlciksby5zZXRXaXRoQ3JlZGVudGlhbHMoci53aXRoQ3JlZGVudGlhbHMpLG8ubG9hZCh0LChmdW5jdGlvbih0KXtsZXQgbjt0cnl7bj1KU09OLnBhcnNlKHQpfWNhdGNoKGUpe2NvbnNvbGUud2FybigiVEhSRUUuRm9udExvYWRlcjogdHlwZWZhY2UuanMgc3VwcG9ydCBpcyBiZWluZyBkZXByZWNhdGVkLiBVc2UgdHlwZWZhY2UuanNvbiBpbnN0ZWFkLiIpLG49SlNPTi5wYXJzZSh0LnN1YnN0cmluZyg2NSx0Lmxlbmd0aC0yKSl9Y29uc3QgaT1yLnBhcnNlKG4pO2UmJmUoaSl9KSxuLGkpfSxwYXJzZTpmdW5jdGlvbih0KXtyZXR1cm4gbmV3IEZZdCh0KX19KTtjb25zdCBHWXQ9e2dldENvbnRleHQ6ZnVuY3Rpb24oKXtyZXR1cm4gdm9pZCAwPT09VVl0JiYoVVl0PW5ldyh3aW5kb3cuQXVkaW9Db250ZXh0fHx3aW5kb3cud2Via2l0QXVkaW9Db250ZXh0KSksVVl0fSxzZXRDb250ZXh0OmZ1bmN0aW9uKHQpe1VZdD10fX07ZnVuY3Rpb24gV1l0KHQpe0JxdC5jYWxsKHRoaXMsdCl9ZnVuY3Rpb24gcVl0KHQsZSxuKXtrWXQuY2FsbCh0aGlzLHZvaWQgMCxuKTtjb25zdCBpPShuZXcgSEZ0KS5zZXQodCkscj0obmV3IEhGdCkuc2V0KGUpLG89bmV3IHlIdChpLnIsaS5nLGkuYiksYT1uZXcgeUh0KHIucixyLmcsci5iKSxzPU1hdGguc3FydChNYXRoLlBJKSxsPXMqTWF0aC5zcXJ0KC43NSk7dGhpcy5zaC5jb2VmZmljaWVudHNbMF0uY29weShvKS5hZGQoYSkubXVsdGlwbHlTY2FsYXIocyksdGhpcy5zaC5jb2VmZmljaWVudHNbMV0uY29weShvKS5zdWIoYSkubXVsdGlwbHlTY2FsYXIobCl9ZnVuY3Rpb24gWVl0KHQsZSl7a1l0LmNhbGwodGhpcyx2b2lkIDAsZSk7Y29uc3Qgbj0obmV3IEhGdCkuc2V0KHQpO3RoaXMuc2guY29lZmZpY2llbnRzWzBdLnNldChuLnIsbi5nLG4uYikubXVsdGlwbHlTY2FsYXIoMipNYXRoLnNxcnQoTWF0aC5QSSkpfVdZdC5wcm90b3R5cGU9T2JqZWN0LmFzc2lnbihPYmplY3QuY3JlYXRlKEJxdC5wcm90b3R5cGUpLHtjb25zdHJ1Y3RvcjpXWXQsbG9hZDpmdW5jdGlvbih0LGUsbixpKXtjb25zdCByPXRoaXMsbz1uZXcgRnF0KHIubWFuYWdlcik7by5zZXRSZXNwb25zZVR5cGUoImFycmF5YnVmZmVyIiksby5zZXRQYXRoKHIucGF0aCksby5zZXRSZXF1ZXN0SGVhZGVyKHIucmVxdWVzdEhlYWRlciksby5zZXRXaXRoQ3JlZGVudGlhbHMoci53aXRoQ3JlZGVudGlhbHMpLG8ubG9hZCh0LChmdW5jdGlvbihuKXt0cnl7Y29uc3QgdD1uLnNsaWNlKDApO0dZdC5nZXRDb250ZXh0KCkuZGVjb2RlQXVkaW9EYXRhKHQsKGZ1bmN0aW9uKHQpe2UodCl9KSl9Y2F0Y2goZSl7aT9pKGUpOmNvbnNvbGUuZXJyb3IoZSksci5tYW5hZ2VyLml0ZW1FcnJvcih0KX19KSxuLGkpfX0pLHFZdC5wcm90b3R5cGU9T2JqZWN0LmFzc2lnbihPYmplY3QuY3JlYXRlKGtZdC5wcm90b3R5cGUpLHtjb25zdHJ1Y3RvcjpxWXQsaXNIZW1pc3BoZXJlTGlnaHRQcm9iZTohMCxjb3B5OmZ1bmN0aW9uKHQpe3JldHVybiBrWXQucHJvdG90eXBlLmNvcHkuY2FsbCh0aGlzLHQpLHRoaXN9LHRvSlNPTjpmdW5jdGlvbih0KXtyZXR1cm4ga1l0LnByb3RvdHlwZS50b0pTT04uY2FsbCh0aGlzLHQpfX0pLFlZdC5wcm90b3R5cGU9T2JqZWN0LmFzc2lnbihPYmplY3QuY3JlYXRlKGtZdC5wcm90b3R5cGUpLHtjb25zdHJ1Y3RvcjpZWXQsaXNBbWJpZW50TGlnaHRQcm9iZTohMCxjb3B5OmZ1bmN0aW9uKHQpe3JldHVybiBrWXQucHJvdG90eXBlLmNvcHkuY2FsbCh0aGlzLHQpLHRoaXN9LHRvSlNPTjpmdW5jdGlvbih0KXtyZXR1cm4ga1l0LnByb3RvdHlwZS50b0pTT04uY2FsbCh0aGlzLHQpfX0pO2NvbnN0IFhZdD1uZXcgcUh0LCRZdD1uZXcgcUh0O2Z1bmN0aW9uIEtZdCgpe3RoaXMudHlwZT0iU3RlcmVvQ2FtZXJhIix0aGlzLmFzcGVjdD0xLHRoaXMuZXllU2VwPS4wNjQsdGhpcy5jYW1lcmFMPW5ldyBIVnQsdGhpcy5jYW1lcmFMLmxheWVycy5lbmFibGUoMSksdGhpcy5jYW1lcmFMLm1hdHJpeEF1dG9VcGRhdGU9ITEsdGhpcy5jYW1lcmFSPW5ldyBIVnQsdGhpcy5jYW1lcmFSLmxheWVycy5lbmFibGUoMiksdGhpcy5jYW1lcmFSLm1hdHJpeEF1dG9VcGRhdGU9ITEsdGhpcy5fY2FjaGU9e2ZvY3VzOm51bGwsZm92Om51bGwsYXNwZWN0Om51bGwsbmVhcjpudWxsLGZhcjpudWxsLHpvb206bnVsbCxleWVTZXA6bnVsbH19T2JqZWN0LmFzc2lnbihLWXQucHJvdG90eXBlLHt1cGRhdGU6ZnVuY3Rpb24odCl7Y29uc3QgZT10aGlzLl9jYWNoZTtpZihlLmZvY3VzIT09dC5mb2N1c3x8ZS5mb3YhPT10LmZvdnx8ZS5hc3BlY3QhPT10LmFzcGVjdCp0aGlzLmFzcGVjdHx8ZS5uZWFyIT09dC5uZWFyfHxlLmZhciE9PXQuZmFyfHxlLnpvb20hPT10Lnpvb218fGUuZXllU2VwIT09dGhpcy5leWVTZXApe2UuZm9jdXM9dC5mb2N1cyxlLmZvdj10LmZvdixlLmFzcGVjdD10LmFzcGVjdCp0aGlzLmFzcGVjdCxlLm5lYXI9dC5uZWFyLGUuZmFyPXQuZmFyLGUuem9vbT10Lnpvb20sZS5leWVTZXA9dGhpcy5leWVTZXA7Y29uc3Qgbj10LnByb2plY3Rpb25NYXRyaXguY2xvbmUoKSxpPWUuZXllU2VwLzIscj1pKmUubmVhci9lLmZvY3VzLG89ZS5uZWFyKk1hdGgudGFuKHNIdC5ERUcyUkFEKmUuZm92Ki41KS9lLnpvb207bGV0IGEsczskWXQuZWxlbWVudHNbMTJdPS1pLFhZdC5lbGVtZW50c1sxMl09aSxhPS1vKmUuYXNwZWN0K3Iscz1vKmUuYXNwZWN0K3Isbi5lbGVtZW50c1swXT0yKmUubmVhci8ocy1hKSxuLmVsZW1lbnRzWzhdPShzK2EpLyhzLWEpLHRoaXMuY2FtZXJhTC5wcm9qZWN0aW9uTWF0cml4LmNvcHkobiksYT0tbyplLmFzcGVjdC1yLHM9byplLmFzcGVjdC1yLG4uZWxlbWVudHNbMF09MiplLm5lYXIvKHMtYSksbi5lbGVtZW50c1s4XT0ocythKS8ocy1hKSx0aGlzLmNhbWVyYVIucHJvamVjdGlvbk1hdHJpeC5jb3B5KG4pfXRoaXMuY2FtZXJhTC5tYXRyaXhXb3JsZC5jb3B5KHQubWF0cml4V29ybGQpLm11bHRpcGx5KCRZdCksdGhpcy5jYW1lcmFSLm1hdHJpeFdvcmxkLmNvcHkodC5tYXRyaXhXb3JsZCkubXVsdGlwbHkoWFl0KX19KTtjbGFzcyBaWXR7Y29uc3RydWN0b3IodCl7dGhpcy5hdXRvU3RhcnQ9dm9pZCAwPT09dHx8dCx0aGlzLnN0YXJ0VGltZT0wLHRoaXMub2xkVGltZT0wLHRoaXMuZWxhcHNlZFRpbWU9MCx0aGlzLnJ1bm5pbmc9ITF9c3RhcnQoKXt0aGlzLnN0YXJ0VGltZT1KWXQoKSx0aGlzLm9sZFRpbWU9dGhpcy5zdGFydFRpbWUsdGhpcy5lbGFwc2VkVGltZT0wLHRoaXMucnVubmluZz0hMH1zdG9wKCl7dGhpcy5nZXRFbGFwc2VkVGltZSgpLHRoaXMucnVubmluZz0hMSx0aGlzLmF1dG9TdGFydD0hMX1nZXRFbGFwc2VkVGltZSgpe3JldHVybiB0aGlzLmdldERlbHRhKCksdGhpcy5lbGFwc2VkVGltZX1nZXREZWx0YSgpe2xldCB0PTA7aWYodGhpcy5hdXRvU3RhcnQmJiF0aGlzLnJ1bm5pbmcpcmV0dXJuIHRoaXMuc3RhcnQoKSwwO2lmKHRoaXMucnVubmluZyl7Y29uc3QgZT1KWXQoKTt0PShlLXRoaXMub2xkVGltZSkvMWUzLHRoaXMub2xkVGltZT1lLHRoaXMuZWxhcHNlZFRpbWUrPXR9cmV0dXJuIHR9fWZ1bmN0aW9uIEpZdCgpe3JldHVybigidW5kZWZpbmVkIj09dHlwZW9mIHBlcmZvcm1hbmNlP0RhdGU6cGVyZm9ybWFuY2UpLm5vdygpfWNvbnN0IFFZdD1uZXcgeUh0LHRYdD1uZXcgX0h0LGVYdD1uZXcgeUh0LG5YdD1uZXcgeUh0O2NsYXNzIGlYdCBleHRlbmRzIF9GdHtjb25zdHJ1Y3Rvcih0KXtzdXBlcigpLHRoaXMudHlwZT0iQXVkaW8iLHRoaXMubGlzdGVuZXI9dCx0aGlzLmNvbnRleHQ9dC5jb250ZXh0LHRoaXMuZ2Fpbj10aGlzLmNvbnRleHQuY3JlYXRlR2FpbigpLHRoaXMuZ2Fpbi5jb25uZWN0KHQuZ2V0SW5wdXQoKSksdGhpcy5hdXRvcGxheT0hMSx0aGlzLmJ1ZmZlcj1udWxsLHRoaXMuZGV0dW5lPTAsdGhpcy5sb29wPSExLHRoaXMubG9vcFN0YXJ0PTAsdGhpcy5sb29wRW5kPTAsdGhpcy5vZmZzZXQ9MCx0aGlzLmR1cmF0aW9uPXZvaWQgMCx0aGlzLnBsYXliYWNrUmF0ZT0xLHRoaXMuaXNQbGF5aW5nPSExLHRoaXMuaGFzUGxheWJhY2tDb250cm9sPSEwLHRoaXMuc291cmNlPW51bGwsdGhpcy5zb3VyY2VUeXBlPSJlbXB0eSIsdGhpcy5fc3RhcnRlZEF0PTAsdGhpcy5fcHJvZ3Jlc3M9MCx0aGlzLl9jb25uZWN0ZWQ9ITEsdGhpcy5maWx0ZXJzPVtdfWdldE91dHB1dCgpe3JldHVybiB0aGlzLmdhaW59c2V0Tm9kZVNvdXJjZSh0KXtyZXR1cm4gdGhpcy5oYXNQbGF5YmFja0NvbnRyb2w9ITEsdGhpcy5zb3VyY2VUeXBlPSJhdWRpb05vZGUiLHRoaXMuc291cmNlPXQsdGhpcy5jb25uZWN0KCksdGhpc31zZXRNZWRpYUVsZW1lbnRTb3VyY2UodCl7cmV0dXJuIHRoaXMuaGFzUGxheWJhY2tDb250cm9sPSExLHRoaXMuc291cmNlVHlwZT0ibWVkaWFOb2RlIix0aGlzLnNvdXJjZT10aGlzLmNvbnRleHQuY3JlYXRlTWVkaWFFbGVtZW50U291cmNlKHQpLHRoaXMuY29ubmVjdCgpLHRoaXN9c2V0TWVkaWFTdHJlYW1Tb3VyY2UodCl7cmV0dXJuIHRoaXMuaGFzUGxheWJhY2tDb250cm9sPSExLHRoaXMuc291cmNlVHlwZT0ibWVkaWFTdHJlYW1Ob2RlIix0aGlzLnNvdXJjZT10aGlzLmNvbnRleHQuY3JlYXRlTWVkaWFTdHJlYW1Tb3VyY2UodCksdGhpcy5jb25uZWN0KCksdGhpc31zZXRCdWZmZXIodCl7cmV0dXJuIHRoaXMuYnVmZmVyPXQsdGhpcy5zb3VyY2VUeXBlPSJidWZmZXIiLHRoaXMuYXV0b3BsYXkmJnRoaXMucGxheSgpLHRoaXN9cGxheSh0PTApe2lmKCEwPT09dGhpcy5pc1BsYXlpbmcpcmV0dXJuIHZvaWQgY29uc29sZS53YXJuKCJUSFJFRS5BdWRpbzogQXVkaW8gaXMgYWxyZWFkeSBwbGF5aW5nLiIpO2lmKCExPT09dGhpcy5oYXNQbGF5YmFja0NvbnRyb2wpcmV0dXJuIHZvaWQgY29uc29sZS53YXJuKCJUSFJFRS5BdWRpbzogdGhpcyBBdWRpbyBoYXMgbm8gcGxheWJhY2sgY29udHJvbC4iKTt0aGlzLl9zdGFydGVkQXQ9dGhpcy5jb250ZXh0LmN1cnJlbnRUaW1lK3Q7Y29uc3QgZT10aGlzLmNvbnRleHQuY3JlYXRlQnVmZmVyU291cmNlKCk7cmV0dXJuIGUuYnVmZmVyPXRoaXMuYnVmZmVyLGUubG9vcD10aGlzLmxvb3AsZS5sb29wU3RhcnQ9dGhpcy5sb29wU3RhcnQsZS5sb29wRW5kPXRoaXMubG9vcEVuZCxlLm9uZW5kZWQ9dGhpcy5vbkVuZGVkLmJpbmQodGhpcyksZS5zdGFydCh0aGlzLl9zdGFydGVkQXQsdGhpcy5fcHJvZ3Jlc3MrdGhpcy5vZmZzZXQsdGhpcy5kdXJhdGlvbiksdGhpcy5pc1BsYXlpbmc9ITAsdGhpcy5zb3VyY2U9ZSx0aGlzLnNldERldHVuZSh0aGlzLmRldHVuZSksdGhpcy5zZXRQbGF5YmFja1JhdGUodGhpcy5wbGF5YmFja1JhdGUpLHRoaXMuY29ubmVjdCgpfXBhdXNlKCl7aWYoITEhPT10aGlzLmhhc1BsYXliYWNrQ29udHJvbClyZXR1cm4hMD09PXRoaXMuaXNQbGF5aW5nJiYodGhpcy5fcHJvZ3Jlc3MrPU1hdGgubWF4KHRoaXMuY29udGV4dC5jdXJyZW50VGltZS10aGlzLl9zdGFydGVkQXQsMCkqdGhpcy5wbGF5YmFja1JhdGUsITA9PT10aGlzLmxvb3AmJih0aGlzLl9wcm9ncmVzcz10aGlzLl9wcm9ncmVzcyUodGhpcy5kdXJhdGlvbnx8dGhpcy5idWZmZXIuZHVyYXRpb24pKSx0aGlzLnNvdXJjZS5zdG9wKCksdGhpcy5zb3VyY2Uub25lbmRlZD1udWxsLHRoaXMuaXNQbGF5aW5nPSExKSx0aGlzO2NvbnNvbGUud2FybigiVEhSRUUuQXVkaW86IHRoaXMgQXVkaW8gaGFzIG5vIHBsYXliYWNrIGNvbnRyb2wuIil9c3RvcCgpe2lmKCExIT09dGhpcy5oYXNQbGF5YmFja0NvbnRyb2wpcmV0dXJuIHRoaXMuX3Byb2dyZXNzPTAsdGhpcy5zb3VyY2Uuc3RvcCgpLHRoaXMuc291cmNlLm9uZW5kZWQ9bnVsbCx0aGlzLmlzUGxheWluZz0hMSx0aGlzO2NvbnNvbGUud2FybigiVEhSRUUuQXVkaW86IHRoaXMgQXVkaW8gaGFzIG5vIHBsYXliYWNrIGNvbnRyb2wuIil9Y29ubmVjdCgpe2lmKHRoaXMuZmlsdGVycy5sZW5ndGg+MCl7dGhpcy5zb3VyY2UuY29ubmVjdCh0aGlzLmZpbHRlcnNbMF0pO2ZvcihsZXQgdD0xLGU9dGhpcy5maWx0ZXJzLmxlbmd0aDt0PGU7dCsrKXRoaXMuZmlsdGVyc1t0LTFdLmNvbm5lY3QodGhpcy5maWx0ZXJzW3RdKTt0aGlzLmZpbHRlcnNbdGhpcy5maWx0ZXJzLmxlbmd0aC0xXS5jb25uZWN0KHRoaXMuZ2V0T3V0cHV0KCkpfWVsc2UgdGhpcy5zb3VyY2UuY29ubmVjdCh0aGlzLmdldE91dHB1dCgpKTtyZXR1cm4gdGhpcy5fY29ubmVjdGVkPSEwLHRoaXN9ZGlzY29ubmVjdCgpe2lmKHRoaXMuZmlsdGVycy5sZW5ndGg+MCl7dGhpcy5zb3VyY2UuZGlzY29ubmVjdCh0aGlzLmZpbHRlcnNbMF0pO2ZvcihsZXQgdD0xLGU9dGhpcy5maWx0ZXJzLmxlbmd0aDt0PGU7dCsrKXRoaXMuZmlsdGVyc1t0LTFdLmRpc2Nvbm5lY3QodGhpcy5maWx0ZXJzW3RdKTt0aGlzLmZpbHRlcnNbdGhpcy5maWx0ZXJzLmxlbmd0aC0xXS5kaXNjb25uZWN0KHRoaXMuZ2V0T3V0cHV0KCkpfWVsc2UgdGhpcy5zb3VyY2UuZGlzY29ubmVjdCh0aGlzLmdldE91dHB1dCgpKTtyZXR1cm4gdGhpcy5fY29ubmVjdGVkPSExLHRoaXN9Z2V0RmlsdGVycygpe3JldHVybiB0aGlzLmZpbHRlcnN9c2V0RmlsdGVycyh0KXtyZXR1cm4gdHx8KHQ9W10pLCEwPT09dGhpcy5fY29ubmVjdGVkPyh0aGlzLmRpc2Nvbm5lY3QoKSx0aGlzLmZpbHRlcnM9dC5zbGljZSgpLHRoaXMuY29ubmVjdCgpKTp0aGlzLmZpbHRlcnM9dC5zbGljZSgpLHRoaXN9c2V0RGV0dW5lKHQpe2lmKHRoaXMuZGV0dW5lPXQsdm9pZCAwIT09dGhpcy5zb3VyY2UuZGV0dW5lKXJldHVybiEwPT09dGhpcy5pc1BsYXlpbmcmJnRoaXMuc291cmNlLmRldHVuZS5zZXRUYXJnZXRBdFRpbWUodGhpcy5kZXR1bmUsdGhpcy5jb250ZXh0LmN1cnJlbnRUaW1lLC4wMSksdGhpc31nZXREZXR1bmUoKXtyZXR1cm4gdGhpcy5kZXR1bmV9Z2V0RmlsdGVyKCl7cmV0dXJuIHRoaXMuZ2V0RmlsdGVycygpWzBdfXNldEZpbHRlcih0KXtyZXR1cm4gdGhpcy5zZXRGaWx0ZXJzKHQ/W3RdOltdKX1zZXRQbGF5YmFja1JhdGUodCl7aWYoITEhPT10aGlzLmhhc1BsYXliYWNrQ29udHJvbClyZXR1cm4gdGhpcy5wbGF5YmFja1JhdGU9dCwhMD09PXRoaXMuaXNQbGF5aW5nJiZ0aGlzLnNvdXJjZS5wbGF5YmFja1JhdGUuc2V0VGFyZ2V0QXRUaW1lKHRoaXMucGxheWJhY2tSYXRlLHRoaXMuY29udGV4dC5jdXJyZW50VGltZSwuMDEpLHRoaXM7Y29uc29sZS53YXJuKCJUSFJFRS5BdWRpbzogdGhpcyBBdWRpbyBoYXMgbm8gcGxheWJhY2sgY29udHJvbC4iKX1nZXRQbGF5YmFja1JhdGUoKXtyZXR1cm4gdGhpcy5wbGF5YmFja1JhdGV9b25FbmRlZCgpe3RoaXMuaXNQbGF5aW5nPSExfWdldExvb3AoKXtyZXR1cm4hMT09PXRoaXMuaGFzUGxheWJhY2tDb250cm9sPyhjb25zb2xlLndhcm4oIlRIUkVFLkF1ZGlvOiB0aGlzIEF1ZGlvIGhhcyBubyBwbGF5YmFjayBjb250cm9sLiIpLCExKTp0aGlzLmxvb3B9c2V0TG9vcCh0KXtpZighMSE9PXRoaXMuaGFzUGxheWJhY2tDb250cm9sKXJldHVybiB0aGlzLmxvb3A9dCwhMD09PXRoaXMuaXNQbGF5aW5nJiYodGhpcy5zb3VyY2UubG9vcD10aGlzLmxvb3ApLHRoaXM7Y29uc29sZS53YXJuKCJUSFJFRS5BdWRpbzogdGhpcyBBdWRpbyBoYXMgbm8gcGxheWJhY2sgY29udHJvbC4iKX1zZXRMb29wU3RhcnQodCl7cmV0dXJuIHRoaXMubG9vcFN0YXJ0PXQsdGhpc31zZXRMb29wRW5kKHQpe3JldHVybiB0aGlzLmxvb3BFbmQ9dCx0aGlzfWdldFZvbHVtZSgpe3JldHVybiB0aGlzLmdhaW4uZ2Fpbi52YWx1ZX1zZXRWb2x1bWUodCl7cmV0dXJuIHRoaXMuZ2Fpbi5nYWluLnNldFRhcmdldEF0VGltZSh0LHRoaXMuY29udGV4dC5jdXJyZW50VGltZSwuMDEpLHRoaXN9fWNvbnN0IHJYdD1uZXcgeUh0LG9YdD1uZXcgX0h0LGFYdD1uZXcgeUh0LHNYdD1uZXcgeUh0O2NsYXNzIGxYdHtjb25zdHJ1Y3Rvcih0LGU9MjA0OCl7dGhpcy5hbmFseXNlcj10LmNvbnRleHQuY3JlYXRlQW5hbHlzZXIoKSx0aGlzLmFuYWx5c2VyLmZmdFNpemU9ZSx0aGlzLmRhdGE9bmV3IFVpbnQ4QXJyYXkodGhpcy5hbmFseXNlci5mcmVxdWVuY3lCaW5Db3VudCksdC5nZXRPdXRwdXQoKS5jb25uZWN0KHRoaXMuYW5hbHlzZXIpfWdldEZyZXF1ZW5jeURhdGEoKXtyZXR1cm4gdGhpcy5hbmFseXNlci5nZXRCeXRlRnJlcXVlbmN5RGF0YSh0aGlzLmRhdGEpLHRoaXMuZGF0YX1nZXRBdmVyYWdlRnJlcXVlbmN5KCl7bGV0IHQ9MDtjb25zdCBlPXRoaXMuZ2V0RnJlcXVlbmN5RGF0YSgpO2ZvcihsZXQgbj0wO248ZS5sZW5ndGg7bisrKXQrPWVbbl07cmV0dXJuIHQvZS5sZW5ndGh9fWZ1bmN0aW9uIGNYdCh0LGUsbil7bGV0IGkscixvO3N3aXRjaCh0aGlzLmJpbmRpbmc9dCx0aGlzLnZhbHVlU2l6ZT1uLGUpe2Nhc2UicXVhdGVybmlvbiI6aT10aGlzLl9zbGVycCxyPXRoaXMuX3NsZXJwQWRkaXRpdmUsbz10aGlzLl9zZXRBZGRpdGl2ZUlkZW50aXR5UXVhdGVybmlvbix0aGlzLmJ1ZmZlcj1uZXcgRmxvYXQ2NEFycmF5KDYqbiksdGhpcy5fd29ya0luZGV4PTU7YnJlYWs7Y2FzZSJzdHJpbmciOmNhc2UiYm9vbCI6aT10aGlzLl9zZWxlY3Qscj10aGlzLl9zZWxlY3Qsbz10aGlzLl9zZXRBZGRpdGl2ZUlkZW50aXR5T3RoZXIsdGhpcy5idWZmZXI9bmV3IEFycmF5KDUqbik7YnJlYWs7ZGVmYXVsdDppPXRoaXMuX2xlcnAscj10aGlzLl9sZXJwQWRkaXRpdmUsbz10aGlzLl9zZXRBZGRpdGl2ZUlkZW50aXR5TnVtZXJpYyx0aGlzLmJ1ZmZlcj1uZXcgRmxvYXQ2NEFycmF5KDUqbil9dGhpcy5fbWl4QnVmZmVyUmVnaW9uPWksdGhpcy5fbWl4QnVmZmVyUmVnaW9uQWRkaXRpdmU9cix0aGlzLl9zZXRJZGVudGl0eT1vLHRoaXMuX29yaWdJbmRleD0zLHRoaXMuX2FkZEluZGV4PTQsdGhpcy5jdW11bGF0aXZlV2VpZ2h0PTAsdGhpcy5jdW11bGF0aXZlV2VpZ2h0QWRkaXRpdmU9MCx0aGlzLnVzZUNvdW50PTAsdGhpcy5yZWZlcmVuY2VDb3VudD0wfU9iamVjdC5hc3NpZ24oY1h0LnByb3RvdHlwZSx7YWNjdW11bGF0ZTpmdW5jdGlvbih0LGUpe2NvbnN0IG49dGhpcy5idWZmZXIsaT10aGlzLnZhbHVlU2l6ZSxyPXQqaStpO2xldCBvPXRoaXMuY3VtdWxhdGl2ZVdlaWdodDtpZigwPT09byl7Zm9yKGxldCB0PTA7dCE9PWk7Kyt0KW5bcit0XT1uW3RdO289ZX1lbHNlIG8rPWUsdGhpcy5fbWl4QnVmZmVyUmVnaW9uKG4sciwwLGUvbyxpKTt0aGlzLmN1bXVsYXRpdmVXZWlnaHQ9b30sYWNjdW11bGF0ZUFkZGl0aXZlOmZ1bmN0aW9uKHQpe2NvbnN0IGU9dGhpcy5idWZmZXIsbj10aGlzLnZhbHVlU2l6ZSxpPW4qdGhpcy5fYWRkSW5kZXg7MD09PXRoaXMuY3VtdWxhdGl2ZVdlaWdodEFkZGl0aXZlJiZ0aGlzLl9zZXRJZGVudGl0eSgpLHRoaXMuX21peEJ1ZmZlclJlZ2lvbkFkZGl0aXZlKGUsaSwwLHQsbiksdGhpcy5jdW11bGF0aXZlV2VpZ2h0QWRkaXRpdmUrPXR9LGFwcGx5OmZ1bmN0aW9uKHQpe2NvbnN0IGU9dGhpcy52YWx1ZVNpemUsbj10aGlzLmJ1ZmZlcixpPXQqZStlLHI9dGhpcy5jdW11bGF0aXZlV2VpZ2h0LG89dGhpcy5jdW11bGF0aXZlV2VpZ2h0QWRkaXRpdmUsYT10aGlzLmJpbmRpbmc7dGhpcy5jdW11bGF0aXZlV2VpZ2h0PTAsdGhpcy5jdW11bGF0aXZlV2VpZ2h0QWRkaXRpdmU9MCxyPDEmJnRoaXMuX21peEJ1ZmZlclJlZ2lvbihuLGksZSp0aGlzLl9vcmlnSW5kZXgsMS1yLGUpLG8+MCYmdGhpcy5fbWl4QnVmZmVyUmVnaW9uQWRkaXRpdmUobixpLHRoaXMuX2FkZEluZGV4KmUsMSxlKTtmb3IobGV0IHQ9ZSxyPWUrZTt0IT09cjsrK3QpaWYoblt0XSE9PW5bdCtlXSl7YS5zZXRWYWx1ZShuLGkpO2JyZWFrfX0sc2F2ZU9yaWdpbmFsU3RhdGU6ZnVuY3Rpb24oKXtjb25zdCB0PXRoaXMuYnVmZmVyLGU9dGhpcy52YWx1ZVNpemUsbj1lKnRoaXMuX29yaWdJbmRleDt0aGlzLmJpbmRpbmcuZ2V0VmFsdWUodCxuKTtmb3IobGV0IGk9ZSxyPW47aSE9PXI7KytpKXRbaV09dFtuK2klZV07dGhpcy5fc2V0SWRlbnRpdHkoKSx0aGlzLmN1bXVsYXRpdmVXZWlnaHQ9MCx0aGlzLmN1bXVsYXRpdmVXZWlnaHRBZGRpdGl2ZT0wfSxyZXN0b3JlT3JpZ2luYWxTdGF0ZTpmdW5jdGlvbigpe3RoaXMuYmluZGluZy5zZXRWYWx1ZSh0aGlzLmJ1ZmZlciwzKnRoaXMudmFsdWVTaXplKX0sX3NldEFkZGl0aXZlSWRlbnRpdHlOdW1lcmljOmZ1bmN0aW9uKCl7Y29uc3QgdD10aGlzLl9hZGRJbmRleCp0aGlzLnZhbHVlU2l6ZSxlPXQrdGhpcy52YWx1ZVNpemU7Zm9yKGxldCBuPXQ7bjxlO24rKyl0aGlzLmJ1ZmZlcltuXT0wfSxfc2V0QWRkaXRpdmVJZGVudGl0eVF1YXRlcm5pb246ZnVuY3Rpb24oKXt0aGlzLl9zZXRBZGRpdGl2ZUlkZW50aXR5TnVtZXJpYygpLHRoaXMuYnVmZmVyW3RoaXMuX2FkZEluZGV4KnRoaXMudmFsdWVTaXplKzNdPTF9LF9zZXRBZGRpdGl2ZUlkZW50aXR5T3RoZXI6ZnVuY3Rpb24oKXtjb25zdCB0PXRoaXMuX29yaWdJbmRleCp0aGlzLnZhbHVlU2l6ZSxlPXRoaXMuX2FkZEluZGV4KnRoaXMudmFsdWVTaXplO2ZvcihsZXQgbj0wO248dGhpcy52YWx1ZVNpemU7bisrKXRoaXMuYnVmZmVyW2Urbl09dGhpcy5idWZmZXJbdCtuXX0sX3NlbGVjdDpmdW5jdGlvbih0LGUsbixpLHIpe2lmKGk+PS41KWZvcihsZXQgaT0wO2khPT1yOysraSl0W2UraV09dFtuK2ldfSxfc2xlcnA6ZnVuY3Rpb24odCxlLG4saSl7X0h0LnNsZXJwRmxhdCh0LGUsdCxlLHQsbixpKX0sX3NsZXJwQWRkaXRpdmU6ZnVuY3Rpb24odCxlLG4saSxyKXtjb25zdCBvPXRoaXMuX3dvcmtJbmRleCpyO19IdC5tdWx0aXBseVF1YXRlcm5pb25zRmxhdCh0LG8sdCxlLHQsbiksX0h0LnNsZXJwRmxhdCh0LGUsdCxlLHQsbyxpKX0sX2xlcnA6ZnVuY3Rpb24odCxlLG4saSxyKXtjb25zdCBvPTEtaTtmb3IobGV0IGE9MDthIT09cjsrK2Epe2NvbnN0IHI9ZSthO3Rbcl09dFtyXSpvK3RbbithXSppfX0sX2xlcnBBZGRpdGl2ZTpmdW5jdGlvbih0LGUsbixpLHIpe2ZvcihsZXQgbz0wO28hPT1yOysrbyl7Y29uc3Qgcj1lK287dFtyXT10W3JdK3RbbitvXSppfX19KTtjb25zdCB1WHQ9bmV3IFJlZ0V4cCgiW1xcW1xcXVxcLjpcXC9dIiwiZyIpLGhYdD0iW15cXFtcXF1cXC46XFwvXSIsZFh0PSJbXiIrIlxcW1xcXVxcLjpcXC8iLnJlcGxhY2UoIlxcLiIsIiIpKyJdIixwWHQ9LygoPzpXQytbXC86XSkqKS8uc291cmNlLnJlcGxhY2UoIldDIixoWHQpLGZYdD0vKFdDT0QrKT8vLnNvdXJjZS5yZXBsYWNlKCJXQ09EIixkWHQpLG1YdD0vKD86XC4oV0MrKSg/OlxbKC4rKVxdKT8pPy8uc291cmNlLnJlcGxhY2UoIldDIixoWHQpLGdYdD0vXC4oV0MrKSg/OlxbKC4rKVxdKT8vLnNvdXJjZS5yZXBsYWNlKCJXQyIsaFh0KSxfWHQ9bmV3IFJlZ0V4cCgiXiIrcFh0K2ZYdCttWHQrZ1h0KyIkIikseVh0PVsibWF0ZXJpYWwiLCJtYXRlcmlhbHMiLCJib25lcyJdO2Z1bmN0aW9uIHZYdCh0LGUsbil7Y29uc3QgaT1ufHxiWHQucGFyc2VUcmFja05hbWUoZSk7dGhpcy5fdGFyZ2V0R3JvdXA9dCx0aGlzLl9iaW5kaW5ncz10LnN1YnNjcmliZV8oZSxpKX1mdW5jdGlvbiBiWHQodCxlLG4pe3RoaXMucGF0aD1lLHRoaXMucGFyc2VkUGF0aD1ufHxiWHQucGFyc2VUcmFja05hbWUoZSksdGhpcy5ub2RlPWJYdC5maW5kTm9kZSh0LHRoaXMucGFyc2VkUGF0aC5ub2RlTmFtZSl8fHQsdGhpcy5yb290Tm9kZT10fWZ1bmN0aW9uIHhYdCgpe3RoaXMudXVpZD1zSHQuZ2VuZXJhdGVVVUlEKCksdGhpcy5fb2JqZWN0cz1BcnJheS5wcm90b3R5cGUuc2xpY2UuY2FsbChhcmd1bWVudHMpLHRoaXMubkNhY2hlZE9iamVjdHNfPTA7Y29uc3QgdD17fTt0aGlzLl9pbmRpY2VzQnlVVUlEPXQ7Zm9yKGxldCBlPTAsbj1hcmd1bWVudHMubGVuZ3RoO2UhPT1uOysrZSl0W2FyZ3VtZW50c1tlXS51dWlkXT1lO3RoaXMuX3BhdGhzPVtdLHRoaXMuX3BhcnNlZFBhdGhzPVtdLHRoaXMuX2JpbmRpbmdzPVtdLHRoaXMuX2JpbmRpbmdzSW5kaWNlc0J5UGF0aD17fTtjb25zdCBlPXRoaXM7dGhpcy5zdGF0cz17b2JqZWN0czp7Z2V0IHRvdGFsKCl7cmV0dXJuIGUuX29iamVjdHMubGVuZ3RofSxnZXQgaW5Vc2UoKXtyZXR1cm4gdGhpcy50b3RhbC1lLm5DYWNoZWRPYmplY3RzX319LGdldCBiaW5kaW5nc1Blck9iamVjdCgpe3JldHVybiBlLl9iaW5kaW5ncy5sZW5ndGh9fX1PYmplY3QuYXNzaWduKHZYdC5wcm90b3R5cGUse2dldFZhbHVlOmZ1bmN0aW9uKHQsZSl7dGhpcy5iaW5kKCk7Y29uc3Qgbj10aGlzLl9iaW5kaW5nc1t0aGlzLl90YXJnZXRHcm91cC5uQ2FjaGVkT2JqZWN0c19dO3ZvaWQgMCE9PW4mJm4uZ2V0VmFsdWUodCxlKX0sc2V0VmFsdWU6ZnVuY3Rpb24odCxlKXtjb25zdCBuPXRoaXMuX2JpbmRpbmdzO2ZvcihsZXQgaT10aGlzLl90YXJnZXRHcm91cC5uQ2FjaGVkT2JqZWN0c18scj1uLmxlbmd0aDtpIT09cjsrK2kpbltpXS5zZXRWYWx1ZSh0LGUpfSxiaW5kOmZ1bmN0aW9uKCl7Y29uc3QgdD10aGlzLl9iaW5kaW5ncztmb3IobGV0IGU9dGhpcy5fdGFyZ2V0R3JvdXAubkNhY2hlZE9iamVjdHNfLG49dC5sZW5ndGg7ZSE9PW47KytlKXRbZV0uYmluZCgpfSx1bmJpbmQ6ZnVuY3Rpb24oKXtjb25zdCB0PXRoaXMuX2JpbmRpbmdzO2ZvcihsZXQgZT10aGlzLl90YXJnZXRHcm91cC5uQ2FjaGVkT2JqZWN0c18sbj10Lmxlbmd0aDtlIT09bjsrK2UpdFtlXS51bmJpbmQoKX19KSxPYmplY3QuYXNzaWduKGJYdCx7Q29tcG9zaXRlOnZYdCxjcmVhdGU6ZnVuY3Rpb24odCxlLG4pe3JldHVybiB0JiZ0LmlzQW5pbWF0aW9uT2JqZWN0R3JvdXA/bmV3IGJYdC5Db21wb3NpdGUodCxlLG4pOm5ldyBiWHQodCxlLG4pfSxzYW5pdGl6ZU5vZGVOYW1lOmZ1bmN0aW9uKHQpe3JldHVybiB0LnJlcGxhY2UoL1xzL2csIl8iKS5yZXBsYWNlKHVYdCwiIil9LHBhcnNlVHJhY2tOYW1lOmZ1bmN0aW9uKHQpe2NvbnN0IGU9X1h0LmV4ZWModCk7aWYoIWUpdGhyb3cgbmV3IEVycm9yKCJQcm9wZXJ0eUJpbmRpbmc6IENhbm5vdCBwYXJzZSB0cmFja05hbWU6ICIrdCk7Y29uc3Qgbj17bm9kZU5hbWU6ZVsyXSxvYmplY3ROYW1lOmVbM10sb2JqZWN0SW5kZXg6ZVs0XSxwcm9wZXJ0eU5hbWU6ZVs1XSxwcm9wZXJ0eUluZGV4OmVbNl19LGk9bi5ub2RlTmFtZSYmbi5ub2RlTmFtZS5sYXN0SW5kZXhPZigiLiIpO2lmKHZvaWQgMCE9PWkmJi0xIT09aSl7Y29uc3QgdD1uLm5vZGVOYW1lLnN1YnN0cmluZyhpKzEpOy0xIT09eVh0LmluZGV4T2YodCkmJihuLm5vZGVOYW1lPW4ubm9kZU5hbWUuc3Vic3RyaW5nKDAsaSksbi5vYmplY3ROYW1lPXQpfWlmKG51bGw9PT1uLnByb3BlcnR5TmFtZXx8MD09PW4ucHJvcGVydHlOYW1lLmxlbmd0aCl0aHJvdyBuZXcgRXJyb3IoIlByb3BlcnR5QmluZGluZzogY2FuIG5vdCBwYXJzZSBwcm9wZXJ0eU5hbWUgZnJvbSB0cmFja05hbWU6ICIrdCk7cmV0dXJuIG59LGZpbmROb2RlOmZ1bmN0aW9uKHQsZSl7aWYoIWV8fCIiPT09ZXx8Ii4iPT09ZXx8LTE9PT1lfHxlPT09dC5uYW1lfHxlPT09dC51dWlkKXJldHVybiB0O2lmKHQuc2tlbGV0b24pe2NvbnN0IG49dC5za2VsZXRvbi5nZXRCb25lQnlOYW1lKGUpO2lmKHZvaWQgMCE9PW4pcmV0dXJuIG59aWYodC5jaGlsZHJlbil7Y29uc3Qgbj1mdW5jdGlvbih0KXtmb3IobGV0IGk9MDtpPHQubGVuZ3RoO2krKyl7Y29uc3Qgcj10W2ldO2lmKHIubmFtZT09PWV8fHIudXVpZD09PWUpcmV0dXJuIHI7Y29uc3Qgbz1uKHIuY2hpbGRyZW4pO2lmKG8pcmV0dXJuIG99cmV0dXJuIG51bGx9LGk9bih0LmNoaWxkcmVuKTtpZihpKXJldHVybiBpfXJldHVybiBudWxsfX0pLE9iamVjdC5hc3NpZ24oYlh0LnByb3RvdHlwZSx7X2dldFZhbHVlX3VuYXZhaWxhYmxlOmZ1bmN0aW9uKCl7fSxfc2V0VmFsdWVfdW5hdmFpbGFibGU6ZnVuY3Rpb24oKXt9LEJpbmRpbmdUeXBlOntEaXJlY3Q6MCxFbnRpcmVBcnJheToxLEFycmF5RWxlbWVudDoyLEhhc0Zyb21Ub0FycmF5OjN9LFZlcnNpb25pbmc6e05vbmU6MCxOZWVkc1VwZGF0ZToxLE1hdHJpeFdvcmxkTmVlZHNVcGRhdGU6Mn0sR2V0dGVyQnlCaW5kaW5nVHlwZTpbZnVuY3Rpb24gdChlLG4pe2Vbbl09dGhpcy5ub2RlW3RoaXMucHJvcGVydHlOYW1lXX0sZnVuY3Rpb24gdChlLG4pe2NvbnN0IGk9dGhpcy5yZXNvbHZlZFByb3BlcnR5O2ZvcihsZXQgdD0wLHI9aS5sZW5ndGg7dCE9PXI7Kyt0KWVbbisrXT1pW3RdfSxmdW5jdGlvbiB0KGUsbil7ZVtuXT10aGlzLnJlc29sdmVkUHJvcGVydHlbdGhpcy5wcm9wZXJ0eUluZGV4XX0sZnVuY3Rpb24gdChlLG4pe3RoaXMucmVzb2x2ZWRQcm9wZXJ0eS50b0FycmF5KGUsbil9XSxTZXR0ZXJCeUJpbmRpbmdUeXBlQW5kVmVyc2lvbmluZzpbW2Z1bmN0aW9uIHQoZSxuKXt0aGlzLnRhcmdldE9iamVjdFt0aGlzLnByb3BlcnR5TmFtZV09ZVtuXX0sZnVuY3Rpb24gdChlLG4pe3RoaXMudGFyZ2V0T2JqZWN0W3RoaXMucHJvcGVydHlOYW1lXT1lW25dLHRoaXMudGFyZ2V0T2JqZWN0Lm5lZWRzVXBkYXRlPSEwfSxmdW5jdGlvbiB0KGUsbil7dGhpcy50YXJnZXRPYmplY3RbdGhpcy5wcm9wZXJ0eU5hbWVdPWVbbl0sdGhpcy50YXJnZXRPYmplY3QubWF0cml4V29ybGROZWVkc1VwZGF0ZT0hMH1dLFtmdW5jdGlvbiB0KGUsbil7Y29uc3QgaT10aGlzLnJlc29sdmVkUHJvcGVydHk7Zm9yKGxldCB0PTAscj1pLmxlbmd0aDt0IT09cjsrK3QpaVt0XT1lW24rK119LGZ1bmN0aW9uIHQoZSxuKXtjb25zdCBpPXRoaXMucmVzb2x2ZWRQcm9wZXJ0eTtmb3IobGV0IHQ9MCxyPWkubGVuZ3RoO3QhPT1yOysrdClpW3RdPWVbbisrXTt0aGlzLnRhcmdldE9iamVjdC5uZWVkc1VwZGF0ZT0hMH0sZnVuY3Rpb24gdChlLG4pe2NvbnN0IGk9dGhpcy5yZXNvbHZlZFByb3BlcnR5O2ZvcihsZXQgdD0wLHI9aS5sZW5ndGg7dCE9PXI7Kyt0KWlbdF09ZVtuKytdO3RoaXMudGFyZ2V0T2JqZWN0Lm1hdHJpeFdvcmxkTmVlZHNVcGRhdGU9ITB9XSxbZnVuY3Rpb24gdChlLG4pe3RoaXMucmVzb2x2ZWRQcm9wZXJ0eVt0aGlzLnByb3BlcnR5SW5kZXhdPWVbbl19LGZ1bmN0aW9uIHQoZSxuKXt0aGlzLnJlc29sdmVkUHJvcGVydHlbdGhpcy5wcm9wZXJ0eUluZGV4XT1lW25dLHRoaXMudGFyZ2V0T2JqZWN0Lm5lZWRzVXBkYXRlPSEwfSxmdW5jdGlvbiB0KGUsbil7dGhpcy5yZXNvbHZlZFByb3BlcnR5W3RoaXMucHJvcGVydHlJbmRleF09ZVtuXSx0aGlzLnRhcmdldE9iamVjdC5tYXRyaXhXb3JsZE5lZWRzVXBkYXRlPSEwfV0sW2Z1bmN0aW9uIHQoZSxuKXt0aGlzLnJlc29sdmVkUHJvcGVydHkuZnJvbUFycmF5KGUsbil9LGZ1bmN0aW9uIHQoZSxuKXt0aGlzLnJlc29sdmVkUHJvcGVydHkuZnJvbUFycmF5KGUsbiksdGhpcy50YXJnZXRPYmplY3QubmVlZHNVcGRhdGU9ITB9LGZ1bmN0aW9uIHQoZSxuKXt0aGlzLnJlc29sdmVkUHJvcGVydHkuZnJvbUFycmF5KGUsbiksdGhpcy50YXJnZXRPYmplY3QubWF0cml4V29ybGROZWVkc1VwZGF0ZT0hMH1dXSxnZXRWYWx1ZTpmdW5jdGlvbiB0KGUsbil7dGhpcy5iaW5kKCksdGhpcy5nZXRWYWx1ZShlLG4pfSxzZXRWYWx1ZTpmdW5jdGlvbiB0KGUsbil7dGhpcy5iaW5kKCksdGhpcy5zZXRWYWx1ZShlLG4pfSxiaW5kOmZ1bmN0aW9uKCl7bGV0IHQ9dGhpcy5ub2RlO2NvbnN0IGU9dGhpcy5wYXJzZWRQYXRoLG49ZS5vYmplY3ROYW1lLGk9ZS5wcm9wZXJ0eU5hbWU7bGV0IHI9ZS5wcm9wZXJ0eUluZGV4O2lmKHR8fCh0PWJYdC5maW5kTm9kZSh0aGlzLnJvb3ROb2RlLGUubm9kZU5hbWUpfHx0aGlzLnJvb3ROb2RlLHRoaXMubm9kZT10KSx0aGlzLmdldFZhbHVlPXRoaXMuX2dldFZhbHVlX3VuYXZhaWxhYmxlLHRoaXMuc2V0VmFsdWU9dGhpcy5fc2V0VmFsdWVfdW5hdmFpbGFibGUsIXQpcmV0dXJuIHZvaWQgY29uc29sZS5lcnJvcigiVEhSRUUuUHJvcGVydHlCaW5kaW5nOiBUcnlpbmcgdG8gdXBkYXRlIG5vZGUgZm9yIHRyYWNrOiAiK3RoaXMucGF0aCsiIGJ1dCBpdCB3YXNuJ3QgZm91bmQuIik7aWYobil7bGV0IGk9ZS5vYmplY3RJbmRleDtzd2l0Y2gobil7Y2FzZSJtYXRlcmlhbHMiOmlmKCF0Lm1hdGVyaWFsKXJldHVybiB2b2lkIGNvbnNvbGUuZXJyb3IoIlRIUkVFLlByb3BlcnR5QmluZGluZzogQ2FuIG5vdCBiaW5kIHRvIG1hdGVyaWFsIGFzIG5vZGUgZG9lcyBub3QgaGF2ZSBhIG1hdGVyaWFsLiIsdGhpcyk7aWYoIXQubWF0ZXJpYWwubWF0ZXJpYWxzKXJldHVybiB2b2lkIGNvbnNvbGUuZXJyb3IoIlRIUkVFLlByb3BlcnR5QmluZGluZzogQ2FuIG5vdCBiaW5kIHRvIG1hdGVyaWFsLm1hdGVyaWFscyBhcyBub2RlLm1hdGVyaWFsIGRvZXMgbm90IGhhdmUgYSBtYXRlcmlhbHMgYXJyYXkuIix0aGlzKTt0PXQubWF0ZXJpYWwubWF0ZXJpYWxzO2JyZWFrO2Nhc2UiYm9uZXMiOmlmKCF0LnNrZWxldG9uKXJldHVybiB2b2lkIGNvbnNvbGUuZXJyb3IoIlRIUkVFLlByb3BlcnR5QmluZGluZzogQ2FuIG5vdCBiaW5kIHRvIGJvbmVzIGFzIG5vZGUgZG9lcyBub3QgaGF2ZSBhIHNrZWxldG9uLiIsdGhpcyk7dD10LnNrZWxldG9uLmJvbmVzO2ZvcihsZXQgZT0wO2U8dC5sZW5ndGg7ZSsrKWlmKHRbZV0ubmFtZT09PWkpe2k9ZTticmVha31icmVhaztkZWZhdWx0OmlmKHZvaWQgMD09PXRbbl0pcmV0dXJuIHZvaWQgY29uc29sZS5lcnJvcigiVEhSRUUuUHJvcGVydHlCaW5kaW5nOiBDYW4gbm90IGJpbmQgdG8gb2JqZWN0TmFtZSBvZiBub2RlIHVuZGVmaW5lZC4iLHRoaXMpO3Q9dFtuXX1pZih2b2lkIDAhPT1pKXtpZih2b2lkIDA9PT10W2ldKXJldHVybiB2b2lkIGNvbnNvbGUuZXJyb3IoIlRIUkVFLlByb3BlcnR5QmluZGluZzogVHJ5aW5nIHRvIGJpbmQgdG8gb2JqZWN0SW5kZXggb2Ygb2JqZWN0TmFtZSwgYnV0IGlzIHVuZGVmaW5lZC4iLHRoaXMsdCk7dD10W2ldfX1jb25zdCBvPXRbaV07aWYodm9pZCAwPT09bylyZXR1cm4gdm9pZCBjb25zb2xlLmVycm9yKCJUSFJFRS5Qcm9wZXJ0eUJpbmRpbmc6IFRyeWluZyB0byB1cGRhdGUgcHJvcGVydHkgZm9yIHRyYWNrOiAiK2Uubm9kZU5hbWUrIi4iK2krIiBidXQgaXQgd2Fzbid0IGZvdW5kLiIsdCk7bGV0IGE9dGhpcy5WZXJzaW9uaW5nLk5vbmU7dGhpcy50YXJnZXRPYmplY3Q9dCx2b2lkIDAhPT10Lm5lZWRzVXBkYXRlP2E9dGhpcy5WZXJzaW9uaW5nLk5lZWRzVXBkYXRlOnZvaWQgMCE9PXQubWF0cml4V29ybGROZWVkc1VwZGF0ZSYmKGE9dGhpcy5WZXJzaW9uaW5nLk1hdHJpeFdvcmxkTmVlZHNVcGRhdGUpO2xldCBzPXRoaXMuQmluZGluZ1R5cGUuRGlyZWN0O2lmKHZvaWQgMCE9PXIpe2lmKCJtb3JwaFRhcmdldEluZmx1ZW5jZXMiPT09aSl7aWYoIXQuZ2VvbWV0cnkpcmV0dXJuIHZvaWQgY29uc29sZS5lcnJvcigiVEhSRUUuUHJvcGVydHlCaW5kaW5nOiBDYW4gbm90IGJpbmQgdG8gbW9ycGhUYXJnZXRJbmZsdWVuY2VzIGJlY2F1c2Ugbm9kZSBkb2VzIG5vdCBoYXZlIGEgZ2VvbWV0cnkuIix0aGlzKTtpZighdC5nZW9tZXRyeS5pc0J1ZmZlckdlb21ldHJ5KXJldHVybiB2b2lkIGNvbnNvbGUuZXJyb3IoIlRIUkVFLlByb3BlcnR5QmluZGluZzogQ2FuIG5vdCBiaW5kIHRvIG1vcnBoVGFyZ2V0SW5mbHVlbmNlcyBvbiBUSFJFRS5HZW9tZXRyeS4gVXNlIFRIUkVFLkJ1ZmZlckdlb21ldHJ5IGluc3RlYWQuIix0aGlzKTtpZighdC5nZW9tZXRyeS5tb3JwaEF0dHJpYnV0ZXMpcmV0dXJuIHZvaWQgY29uc29sZS5lcnJvcigiVEhSRUUuUHJvcGVydHlCaW5kaW5nOiBDYW4gbm90IGJpbmQgdG8gbW9ycGhUYXJnZXRJbmZsdWVuY2VzIGJlY2F1c2Ugbm9kZSBkb2VzIG5vdCBoYXZlIGEgZ2VvbWV0cnkubW9ycGhBdHRyaWJ1dGVzLiIsdGhpcyk7dm9pZCAwIT09dC5tb3JwaFRhcmdldERpY3Rpb25hcnlbcl0mJihyPXQubW9ycGhUYXJnZXREaWN0aW9uYXJ5W3JdKX1zPXRoaXMuQmluZGluZ1R5cGUuQXJyYXlFbGVtZW50LHRoaXMucmVzb2x2ZWRQcm9wZXJ0eT1vLHRoaXMucHJvcGVydHlJbmRleD1yfWVsc2Ugdm9pZCAwIT09by5mcm9tQXJyYXkmJnZvaWQgMCE9PW8udG9BcnJheT8ocz10aGlzLkJpbmRpbmdUeXBlLkhhc0Zyb21Ub0FycmF5LHRoaXMucmVzb2x2ZWRQcm9wZXJ0eT1vKTpBcnJheS5pc0FycmF5KG8pPyhzPXRoaXMuQmluZGluZ1R5cGUuRW50aXJlQXJyYXksdGhpcy5yZXNvbHZlZFByb3BlcnR5PW8pOnRoaXMucHJvcGVydHlOYW1lPWk7dGhpcy5nZXRWYWx1ZT10aGlzLkdldHRlckJ5QmluZGluZ1R5cGVbc10sdGhpcy5zZXRWYWx1ZT10aGlzLlNldHRlckJ5QmluZGluZ1R5cGVBbmRWZXJzaW9uaW5nW3NdW2FdfSx1bmJpbmQ6ZnVuY3Rpb24oKXt0aGlzLm5vZGU9bnVsbCx0aGlzLmdldFZhbHVlPXRoaXMuX2dldFZhbHVlX3VuYm91bmQsdGhpcy5zZXRWYWx1ZT10aGlzLl9zZXRWYWx1ZV91bmJvdW5kfX0pLE9iamVjdC5hc3NpZ24oYlh0LnByb3RvdHlwZSx7X2dldFZhbHVlX3VuYm91bmQ6Ylh0LnByb3RvdHlwZS5nZXRWYWx1ZSxfc2V0VmFsdWVfdW5ib3VuZDpiWHQucHJvdG90eXBlLnNldFZhbHVlfSksT2JqZWN0LmFzc2lnbih4WHQucHJvdG90eXBlLHtpc0FuaW1hdGlvbk9iamVjdEdyb3VwOiEwLGFkZDpmdW5jdGlvbigpe2NvbnN0IHQ9dGhpcy5fb2JqZWN0cyxlPXRoaXMuX2luZGljZXNCeVVVSUQsbj10aGlzLl9wYXRocyxpPXRoaXMuX3BhcnNlZFBhdGhzLHI9dGhpcy5fYmluZGluZ3Msbz1yLmxlbmd0aDtsZXQgYSxzPXQubGVuZ3RoLGw9dGhpcy5uQ2FjaGVkT2JqZWN0c187Zm9yKGxldCBjPTAsdT1hcmd1bWVudHMubGVuZ3RoO2MhPT11OysrYyl7Y29uc3QgdT1hcmd1bWVudHNbY10saD11LnV1aWQ7bGV0IGQ9ZVtoXTtpZih2b2lkIDA9PT1kKXtkPXMrKyxlW2hdPWQsdC5wdXNoKHUpO2ZvcihsZXQgdD0wLGU9bzt0IT09ZTsrK3Qpclt0XS5wdXNoKG5ldyBiWHQodSxuW3RdLGlbdF0pKX1lbHNlIGlmKGQ8bCl7YT10W2RdO2NvbnN0IHM9LS1sLGM9dFtzXTtlW2MudXVpZF09ZCx0W2RdPWMsZVtoXT1zLHRbc109dTtmb3IobGV0IHQ9MCxlPW87dCE9PWU7Kyt0KXtjb25zdCBlPXJbdF07bGV0IG89ZVtkXTtlW2RdPWVbc10sdm9pZCAwPT09byYmKG89bmV3IGJYdCh1LG5bdF0saVt0XSkpLGVbc109b319ZWxzZSB0W2RdIT09YSYmY29uc29sZS5lcnJvcigiVEhSRUUuQW5pbWF0aW9uT2JqZWN0R3JvdXA6IERpZmZlcmVudCBvYmplY3RzIHdpdGggdGhlIHNhbWUgVVVJRCBkZXRlY3RlZC4gQ2xlYW4gdGhlIGNhY2hlcyBvciByZWNyZWF0ZSB5b3VyIGluZnJhc3RydWN0dXJlIHdoZW4gcmVsb2FkaW5nIHNjZW5lcy4iKX10aGlzLm5DYWNoZWRPYmplY3RzXz1sfSxyZW1vdmU6ZnVuY3Rpb24oKXtjb25zdCB0PXRoaXMuX29iamVjdHMsZT10aGlzLl9pbmRpY2VzQnlVVUlELG49dGhpcy5fYmluZGluZ3MsaT1uLmxlbmd0aDtsZXQgcj10aGlzLm5DYWNoZWRPYmplY3RzXztmb3IobGV0IG89MCxhPWFyZ3VtZW50cy5sZW5ndGg7byE9PWE7KytvKXtjb25zdCBhPWFyZ3VtZW50c1tvXSxzPWEudXVpZCxsPWVbc107aWYodm9pZCAwIT09bCYmbD49cil7Y29uc3Qgbz1yKyssYz10W29dO2VbYy51dWlkXT1sLHRbbF09YyxlW3NdPW8sdFtvXT1hO2ZvcihsZXQgdD0wLGU9aTt0IT09ZTsrK3Qpe2NvbnN0IGU9blt0XSxpPWVbbF07ZVtsXT1lW29dLGVbb109aX19fXRoaXMubkNhY2hlZE9iamVjdHNfPXJ9LHVuY2FjaGU6ZnVuY3Rpb24oKXtjb25zdCB0PXRoaXMuX29iamVjdHMsZT10aGlzLl9pbmRpY2VzQnlVVUlELG49dGhpcy5fYmluZGluZ3MsaT1uLmxlbmd0aDtsZXQgcj10aGlzLm5DYWNoZWRPYmplY3RzXyxvPXQubGVuZ3RoO2ZvcihsZXQgYT0wLHM9YXJndW1lbnRzLmxlbmd0aDthIT09czsrK2Epe2NvbnN0IHM9YXJndW1lbnRzW2FdLnV1aWQsbD1lW3NdO2lmKHZvaWQgMCE9PWwpaWYoZGVsZXRlIGVbc10sbDxyKXtjb25zdCBhPS0tcixzPXRbYV0sYz0tLW8sdT10W2NdO2Vbcy51dWlkXT1sLHRbbF09cyxlW3UudXVpZF09YSx0W2FdPXUsdC5wb3AoKTtmb3IobGV0IHQ9MCxlPWk7dCE9PWU7Kyt0KXtjb25zdCBlPW5bdF0saT1lW2NdO2VbbF09ZVthXSxlW2FdPWksZS5wb3AoKX19ZWxzZXtjb25zdCByPS0tbyxhPXRbcl07cj4wJiYoZVthLnV1aWRdPWwpLHRbbF09YSx0LnBvcCgpO2ZvcihsZXQgdD0wLGU9aTt0IT09ZTsrK3Qpe2NvbnN0IGU9blt0XTtlW2xdPWVbcl0sZS5wb3AoKX19fXRoaXMubkNhY2hlZE9iamVjdHNfPXJ9LHN1YnNjcmliZV86ZnVuY3Rpb24odCxlKXtjb25zdCBuPXRoaXMuX2JpbmRpbmdzSW5kaWNlc0J5UGF0aDtsZXQgaT1uW3RdO2NvbnN0IHI9dGhpcy5fYmluZGluZ3M7aWYodm9pZCAwIT09aSlyZXR1cm4gcltpXTtjb25zdCBvPXRoaXMuX3BhdGhzLGE9dGhpcy5fcGFyc2VkUGF0aHMscz10aGlzLl9vYmplY3RzLGw9dGhpcy5uQ2FjaGVkT2JqZWN0c18sYz1uZXcgQXJyYXkocy5sZW5ndGgpO2k9ci5sZW5ndGgsblt0XT1pLG8ucHVzaCh0KSxhLnB1c2goZSksci5wdXNoKGMpO2ZvcihsZXQgbj1sLGk9cy5sZW5ndGg7biE9PWk7KytuKWNbbl09bmV3IGJYdChzW25dLHQsZSk7cmV0dXJuIGN9LHVuc3Vic2NyaWJlXzpmdW5jdGlvbih0KXtjb25zdCBlPXRoaXMuX2JpbmRpbmdzSW5kaWNlc0J5UGF0aCxuPWVbdF07aWYodm9pZCAwIT09bil7Y29uc3QgaT10aGlzLl9wYXRocyxyPXRoaXMuX3BhcnNlZFBhdGhzLG89dGhpcy5fYmluZGluZ3MsYT1vLmxlbmd0aC0xLHM9b1thXTtlW3RbYV1dPW4sb1tuXT1zLG8ucG9wKCkscltuXT1yW2FdLHIucG9wKCksaVtuXT1pW2FdLGkucG9wKCl9fX0pO2NsYXNzIHdYdHtjb25zdHJ1Y3Rvcih0LGUsbj1udWxsLGk9ZS5ibGVuZE1vZGUpe3RoaXMuX21peGVyPXQsdGhpcy5fY2xpcD1lLHRoaXMuX2xvY2FsUm9vdD1uLHRoaXMuYmxlbmRNb2RlPWk7Y29uc3Qgcj1lLnRyYWNrcyxvPXIubGVuZ3RoLGE9bmV3IEFycmF5KG8pLHM9e2VuZGluZ1N0YXJ0OmpCdCxlbmRpbmdFbmQ6akJ0fTtmb3IobGV0IHQ9MDt0IT09bzsrK3Qpe2NvbnN0IGU9clt0XS5jcmVhdGVJbnRlcnBvbGFudChudWxsKTthW3RdPWUsZS5zZXR0aW5ncz1zfXRoaXMuX2ludGVycG9sYW50U2V0dGluZ3M9cyx0aGlzLl9pbnRlcnBvbGFudHM9YSx0aGlzLl9wcm9wZXJ0eUJpbmRpbmdzPW5ldyBBcnJheShvKSx0aGlzLl9jYWNoZUluZGV4PW51bGwsdGhpcy5fYnlDbGlwQ2FjaGVJbmRleD1udWxsLHRoaXMuX3RpbWVTY2FsZUludGVycG9sYW50PW51bGwsdGhpcy5fd2VpZ2h0SW50ZXJwb2xhbnQ9bnVsbCx0aGlzLmxvb3A9MjIwMSx0aGlzLl9sb29wQ291bnQ9LTEsdGhpcy5fc3RhcnRUaW1lPW51bGwsdGhpcy50aW1lPTAsdGhpcy50aW1lU2NhbGU9MSx0aGlzLl9lZmZlY3RpdmVUaW1lU2NhbGU9MSx0aGlzLndlaWdodD0xLHRoaXMuX2VmZmVjdGl2ZVdlaWdodD0xLHRoaXMucmVwZXRpdGlvbnM9MS8wLHRoaXMucGF1c2VkPSExLHRoaXMuZW5hYmxlZD0hMCx0aGlzLmNsYW1wV2hlbkZpbmlzaGVkPSExLHRoaXMuemVyb1Nsb3BlQXRTdGFydD0hMCx0aGlzLnplcm9TbG9wZUF0RW5kPSEwfXBsYXkoKXtyZXR1cm4gdGhpcy5fbWl4ZXIuX2FjdGl2YXRlQWN0aW9uKHRoaXMpLHRoaXN9c3RvcCgpe3JldHVybiB0aGlzLl9taXhlci5fZGVhY3RpdmF0ZUFjdGlvbih0aGlzKSx0aGlzLnJlc2V0KCl9cmVzZXQoKXtyZXR1cm4gdGhpcy5wYXVzZWQ9ITEsdGhpcy5lbmFibGVkPSEwLHRoaXMudGltZT0wLHRoaXMuX2xvb3BDb3VudD0tMSx0aGlzLl9zdGFydFRpbWU9bnVsbCx0aGlzLnN0b3BGYWRpbmcoKS5zdG9wV2FycGluZygpfWlzUnVubmluZygpe3JldHVybiB0aGlzLmVuYWJsZWQmJiF0aGlzLnBhdXNlZCYmMCE9PXRoaXMudGltZVNjYWxlJiZudWxsPT09dGhpcy5fc3RhcnRUaW1lJiZ0aGlzLl9taXhlci5faXNBY3RpdmVBY3Rpb24odGhpcyl9aXNTY2hlZHVsZWQoKXtyZXR1cm4gdGhpcy5fbWl4ZXIuX2lzQWN0aXZlQWN0aW9uKHRoaXMpfXN0YXJ0QXQodCl7cmV0dXJuIHRoaXMuX3N0YXJ0VGltZT10LHRoaXN9c2V0TG9vcCh0LGUpe3JldHVybiB0aGlzLmxvb3A9dCx0aGlzLnJlcGV0aXRpb25zPWUsdGhpc31zZXRFZmZlY3RpdmVXZWlnaHQodCl7cmV0dXJuIHRoaXMud2VpZ2h0PXQsdGhpcy5fZWZmZWN0aXZlV2VpZ2h0PXRoaXMuZW5hYmxlZD90OjAsdGhpcy5zdG9wRmFkaW5nKCl9Z2V0RWZmZWN0aXZlV2VpZ2h0KCl7cmV0dXJuIHRoaXMuX2VmZmVjdGl2ZVdlaWdodH1mYWRlSW4odCl7cmV0dXJuIHRoaXMuX3NjaGVkdWxlRmFkaW5nKHQsMCwxKX1mYWRlT3V0KHQpe3JldHVybiB0aGlzLl9zY2hlZHVsZUZhZGluZyh0LDEsMCl9Y3Jvc3NGYWRlRnJvbSh0LGUsbil7aWYodC5mYWRlT3V0KGUpLHRoaXMuZmFkZUluKGUpLG4pe2NvbnN0IG49dGhpcy5fY2xpcC5kdXJhdGlvbixpPXQuX2NsaXAuZHVyYXRpb24scj1uL2k7dC53YXJwKDEsaS9uLGUpLHRoaXMud2FycChyLDEsZSl9cmV0dXJuIHRoaXN9Y3Jvc3NGYWRlVG8odCxlLG4pe3JldHVybiB0LmNyb3NzRmFkZUZyb20odGhpcyxlLG4pfXN0b3BGYWRpbmcoKXtjb25zdCB0PXRoaXMuX3dlaWdodEludGVycG9sYW50O3JldHVybiBudWxsIT09dCYmKHRoaXMuX3dlaWdodEludGVycG9sYW50PW51bGwsdGhpcy5fbWl4ZXIuX3Rha2VCYWNrQ29udHJvbEludGVycG9sYW50KHQpKSx0aGlzfXNldEVmZmVjdGl2ZVRpbWVTY2FsZSh0KXtyZXR1cm4gdGhpcy50aW1lU2NhbGU9dCx0aGlzLl9lZmZlY3RpdmVUaW1lU2NhbGU9dGhpcy5wYXVzZWQ/MDp0LHRoaXMuc3RvcFdhcnBpbmcoKX1nZXRFZmZlY3RpdmVUaW1lU2NhbGUoKXtyZXR1cm4gdGhpcy5fZWZmZWN0aXZlVGltZVNjYWxlfXNldER1cmF0aW9uKHQpe3JldHVybiB0aGlzLnRpbWVTY2FsZT10aGlzLl9jbGlwLmR1cmF0aW9uL3QsdGhpcy5zdG9wV2FycGluZygpfXN5bmNXaXRoKHQpe3JldHVybiB0aGlzLnRpbWU9dC50aW1lLHRoaXMudGltZVNjYWxlPXQudGltZVNjYWxlLHRoaXMuc3RvcFdhcnBpbmcoKX1oYWx0KHQpe3JldHVybiB0aGlzLndhcnAodGhpcy5fZWZmZWN0aXZlVGltZVNjYWxlLDAsdCl9d2FycCh0LGUsbil7Y29uc3QgaT10aGlzLl9taXhlcixyPWkudGltZSxvPXRoaXMudGltZVNjYWxlO2xldCBhPXRoaXMuX3RpbWVTY2FsZUludGVycG9sYW50O251bGw9PT1hJiYoYT1pLl9sZW5kQ29udHJvbEludGVycG9sYW50KCksdGhpcy5fdGltZVNjYWxlSW50ZXJwb2xhbnQ9YSk7Y29uc3Qgcz1hLnBhcmFtZXRlclBvc2l0aW9ucyxsPWEuc2FtcGxlVmFsdWVzO3JldHVybiBzWzBdPXIsc1sxXT1yK24sbFswXT10L28sbFsxXT1lL28sdGhpc31zdG9wV2FycGluZygpe2NvbnN0IHQ9dGhpcy5fdGltZVNjYWxlSW50ZXJwb2xhbnQ7cmV0dXJuIG51bGwhPT10JiYodGhpcy5fdGltZVNjYWxlSW50ZXJwb2xhbnQ9bnVsbCx0aGlzLl9taXhlci5fdGFrZUJhY2tDb250cm9sSW50ZXJwb2xhbnQodCkpLHRoaXN9Z2V0TWl4ZXIoKXtyZXR1cm4gdGhpcy5fbWl4ZXJ9Z2V0Q2xpcCgpe3JldHVybiB0aGlzLl9jbGlwfWdldFJvb3QoKXtyZXR1cm4gdGhpcy5fbG9jYWxSb290fHx0aGlzLl9taXhlci5fcm9vdH1fdXBkYXRlKHQsZSxuLGkpe2lmKCF0aGlzLmVuYWJsZWQpcmV0dXJuIHZvaWQgdGhpcy5fdXBkYXRlV2VpZ2h0KHQpO2NvbnN0IHI9dGhpcy5fc3RhcnRUaW1lO2lmKG51bGwhPT1yKXtjb25zdCBpPSh0LXIpKm47aWYoaTwwfHwwPT09bilyZXR1cm47dGhpcy5fc3RhcnRUaW1lPW51bGwsZT1uKml9ZSo9dGhpcy5fdXBkYXRlVGltZVNjYWxlKHQpO2NvbnN0IG89dGhpcy5fdXBkYXRlVGltZShlKSxhPXRoaXMuX3VwZGF0ZVdlaWdodCh0KTtpZihhPjApe2NvbnN0IHQ9dGhpcy5faW50ZXJwb2xhbnRzLGU9dGhpcy5fcHJvcGVydHlCaW5kaW5ncztzd2l0Y2godGhpcy5ibGVuZE1vZGUpe2Nhc2UgcUJ0OmZvcihsZXQgbj0wLGk9dC5sZW5ndGg7biE9PWk7KytuKXRbbl0uZXZhbHVhdGUobyksZVtuXS5hY2N1bXVsYXRlQWRkaXRpdmUoYSk7YnJlYWs7Y2FzZSBXQnQ6ZGVmYXVsdDpmb3IobGV0IG49MCxyPXQubGVuZ3RoO24hPT1yOysrbil0W25dLmV2YWx1YXRlKG8pLGVbbl0uYWNjdW11bGF0ZShpLGEpfX19X3VwZGF0ZVdlaWdodCh0KXtsZXQgZT0wO2lmKHRoaXMuZW5hYmxlZCl7ZT10aGlzLndlaWdodDtjb25zdCBuPXRoaXMuX3dlaWdodEludGVycG9sYW50O2lmKG51bGwhPT1uKXtjb25zdCBpPW4uZXZhbHVhdGUodClbMF07ZSo9aSx0Pm4ucGFyYW1ldGVyUG9zaXRpb25zWzFdJiYodGhpcy5zdG9wRmFkaW5nKCksMD09PWkmJih0aGlzLmVuYWJsZWQ9ITEpKX19cmV0dXJuIHRoaXMuX2VmZmVjdGl2ZVdlaWdodD1lLGV9X3VwZGF0ZVRpbWVTY2FsZSh0KXtsZXQgZT0wO2lmKCF0aGlzLnBhdXNlZCl7ZT10aGlzLnRpbWVTY2FsZTtjb25zdCBuPXRoaXMuX3RpbWVTY2FsZUludGVycG9sYW50O251bGwhPT1uJiYoZSo9bi5ldmFsdWF0ZSh0KVswXSx0Pm4ucGFyYW1ldGVyUG9zaXRpb25zWzFdJiYodGhpcy5zdG9wV2FycGluZygpLDA9PT1lP3RoaXMucGF1c2VkPSEwOnRoaXMudGltZVNjYWxlPWUpKX1yZXR1cm4gdGhpcy5fZWZmZWN0aXZlVGltZVNjYWxlPWUsZX1fdXBkYXRlVGltZSh0KXtjb25zdCBlPXRoaXMuX2NsaXAuZHVyYXRpb24sbj10aGlzLmxvb3A7bGV0IGk9dGhpcy50aW1lK3Qscj10aGlzLl9sb29wQ291bnQ7Y29uc3Qgbz0yMjAyPT09bjtpZigwPT09dClyZXR1cm4tMT09PXI/aTpvJiYxPT0oMSZyKT9lLWk6aTtpZigyMjAwPT09bil7LTE9PT1yJiYodGhpcy5fbG9vcENvdW50PTAsdGhpcy5fc2V0RW5kaW5ncyghMCwhMCwhMSkpO3Q6e2lmKGk+PWUpaT1lO2Vsc2V7aWYoIShpPDApKXt0aGlzLnRpbWU9aTticmVhayB0fWk9MH10aGlzLmNsYW1wV2hlbkZpbmlzaGVkP3RoaXMucGF1c2VkPSEwOnRoaXMuZW5hYmxlZD0hMSx0aGlzLnRpbWU9aSx0aGlzLl9taXhlci5kaXNwYXRjaEV2ZW50KHt0eXBlOiJmaW5pc2hlZCIsYWN0aW9uOnRoaXMsZGlyZWN0aW9uOnQ8MD8tMToxfSl9fWVsc2V7aWYoLTE9PT1yJiYodD49MD8ocj0wLHRoaXMuX3NldEVuZGluZ3MoITAsMD09PXRoaXMucmVwZXRpdGlvbnMsbykpOnRoaXMuX3NldEVuZGluZ3MoMD09PXRoaXMucmVwZXRpdGlvbnMsITAsbykpLGk+PWV8fGk8MCl7Y29uc3Qgbj1NYXRoLmZsb29yKGkvZSk7aS09ZSpuLHIrPU1hdGguYWJzKG4pO2NvbnN0IGE9dGhpcy5yZXBldGl0aW9ucy1yO2lmKGE8PTApdGhpcy5jbGFtcFdoZW5GaW5pc2hlZD90aGlzLnBhdXNlZD0hMDp0aGlzLmVuYWJsZWQ9ITEsaT10PjA/ZTowLHRoaXMudGltZT1pLHRoaXMuX21peGVyLmRpc3BhdGNoRXZlbnQoe3R5cGU6ImZpbmlzaGVkIixhY3Rpb246dGhpcyxkaXJlY3Rpb246dD4wPzE6LTF9KTtlbHNle2lmKDE9PT1hKXtjb25zdCBlPXQ8MDt0aGlzLl9zZXRFbmRpbmdzKGUsIWUsbyl9ZWxzZSB0aGlzLl9zZXRFbmRpbmdzKCExLCExLG8pO3RoaXMuX2xvb3BDb3VudD1yLHRoaXMudGltZT1pLHRoaXMuX21peGVyLmRpc3BhdGNoRXZlbnQoe3R5cGU6Imxvb3AiLGFjdGlvbjp0aGlzLGxvb3BEZWx0YTpufSl9fWVsc2UgdGhpcy50aW1lPWk7aWYobyYmMT09KDEmcikpcmV0dXJuIGUtaX1yZXR1cm4gaX1fc2V0RW5kaW5ncyh0LGUsbil7Y29uc3QgaT10aGlzLl9pbnRlcnBvbGFudFNldHRpbmdzO24/KGkuZW5kaW5nU3RhcnQ9VUJ0LGkuZW5kaW5nRW5kPVVCdCk6KGkuZW5kaW5nU3RhcnQ9dD90aGlzLnplcm9TbG9wZUF0U3RhcnQ/VUJ0OmpCdDpHQnQsaS5lbmRpbmdFbmQ9ZT90aGlzLnplcm9TbG9wZUF0RW5kP1VCdDpqQnQ6R0J0KX1fc2NoZWR1bGVGYWRpbmcodCxlLG4pe2NvbnN0IGk9dGhpcy5fbWl4ZXIscj1pLnRpbWU7bGV0IG89dGhpcy5fd2VpZ2h0SW50ZXJwb2xhbnQ7bnVsbD09PW8mJihvPWkuX2xlbmRDb250cm9sSW50ZXJwb2xhbnQoKSx0aGlzLl93ZWlnaHRJbnRlcnBvbGFudD1vKTtjb25zdCBhPW8ucGFyYW1ldGVyUG9zaXRpb25zLHM9by5zYW1wbGVWYWx1ZXM7cmV0dXJuIGFbMF09cixzWzBdPWUsYVsxXT1yK3Qsc1sxXT1uLHRoaXN9fWZ1bmN0aW9uIFNYdCh0KXt0aGlzLl9yb290PXQsdGhpcy5faW5pdE1lbW9yeU1hbmFnZXIoKSx0aGlzLl9hY2N1SW5kZXg9MCx0aGlzLnRpbWU9MCx0aGlzLnRpbWVTY2FsZT0xfVNYdC5wcm90b3R5cGU9T2JqZWN0LmFzc2lnbihPYmplY3QuY3JlYXRlKHJIdC5wcm90b3R5cGUpLHtjb25zdHJ1Y3RvcjpTWHQsX2JpbmRBY3Rpb246ZnVuY3Rpb24odCxlKXtjb25zdCBuPXQuX2xvY2FsUm9vdHx8dGhpcy5fcm9vdCxpPXQuX2NsaXAudHJhY2tzLHI9aS5sZW5ndGgsbz10Ll9wcm9wZXJ0eUJpbmRpbmdzLGE9dC5faW50ZXJwb2xhbnRzLHM9bi51dWlkLGw9dGhpcy5fYmluZGluZ3NCeVJvb3RBbmROYW1lO2xldCBjPWxbc107dm9pZCAwPT09YyYmKGM9e30sbFtzXT1jKTtmb3IobGV0IHQ9MDt0IT09cjsrK3Qpe2NvbnN0IHI9aVt0XSxsPXIubmFtZTtsZXQgdT1jW2xdO2lmKHZvaWQgMCE9PXUpb1t0XT11O2Vsc2V7aWYodT1vW3RdLHZvaWQgMCE9PXUpe251bGw9PT11Ll9jYWNoZUluZGV4JiYoKyt1LnJlZmVyZW5jZUNvdW50LHRoaXMuX2FkZEluYWN0aXZlQmluZGluZyh1LHMsbCkpO2NvbnRpbnVlfXU9bmV3IGNYdChiWHQuY3JlYXRlKG4sbCxlJiZlLl9wcm9wZXJ0eUJpbmRpbmdzW3RdLmJpbmRpbmcucGFyc2VkUGF0aCksci5WYWx1ZVR5cGVOYW1lLHIuZ2V0VmFsdWVTaXplKCkpLCsrdS5yZWZlcmVuY2VDb3VudCx0aGlzLl9hZGRJbmFjdGl2ZUJpbmRpbmcodSxzLGwpLG9bdF09dX1hW3RdLnJlc3VsdEJ1ZmZlcj11LmJ1ZmZlcn19LF9hY3RpdmF0ZUFjdGlvbjpmdW5jdGlvbih0KXtpZighdGhpcy5faXNBY3RpdmVBY3Rpb24odCkpe2lmKG51bGw9PT10Ll9jYWNoZUluZGV4KXtjb25zdCBlPSh0Ll9sb2NhbFJvb3R8fHRoaXMuX3Jvb3QpLnV1aWQsbj10Ll9jbGlwLnV1aWQsaT10aGlzLl9hY3Rpb25zQnlDbGlwW25dO3RoaXMuX2JpbmRBY3Rpb24odCxpJiZpLmtub3duQWN0aW9uc1swXSksdGhpcy5fYWRkSW5hY3RpdmVBY3Rpb24odCxuLGUpfWNvbnN0IGU9dC5fcHJvcGVydHlCaW5kaW5ncztmb3IobGV0IHQ9MCxuPWUubGVuZ3RoO3QhPT1uOysrdCl7Y29uc3Qgbj1lW3RdOzA9PW4udXNlQ291bnQrKyYmKHRoaXMuX2xlbmRCaW5kaW5nKG4pLG4uc2F2ZU9yaWdpbmFsU3RhdGUoKSl9dGhpcy5fbGVuZEFjdGlvbih0KX19LF9kZWFjdGl2YXRlQWN0aW9uOmZ1bmN0aW9uKHQpe2lmKHRoaXMuX2lzQWN0aXZlQWN0aW9uKHQpKXtjb25zdCBlPXQuX3Byb3BlcnR5QmluZGluZ3M7Zm9yKGxldCB0PTAsbj1lLmxlbmd0aDt0IT09bjsrK3Qpe2NvbnN0IG49ZVt0XTswPT0tLW4udXNlQ291bnQmJihuLnJlc3RvcmVPcmlnaW5hbFN0YXRlKCksdGhpcy5fdGFrZUJhY2tCaW5kaW5nKG4pKX10aGlzLl90YWtlQmFja0FjdGlvbih0KX19LF9pbml0TWVtb3J5TWFuYWdlcjpmdW5jdGlvbigpe3RoaXMuX2FjdGlvbnM9W10sdGhpcy5fbkFjdGl2ZUFjdGlvbnM9MCx0aGlzLl9hY3Rpb25zQnlDbGlwPXt9LHRoaXMuX2JpbmRpbmdzPVtdLHRoaXMuX25BY3RpdmVCaW5kaW5ncz0wLHRoaXMuX2JpbmRpbmdzQnlSb290QW5kTmFtZT17fSx0aGlzLl9jb250cm9sSW50ZXJwb2xhbnRzPVtdLHRoaXMuX25BY3RpdmVDb250cm9sSW50ZXJwb2xhbnRzPTA7Y29uc3QgdD10aGlzO3RoaXMuc3RhdHM9e2FjdGlvbnM6e2dldCB0b3RhbCgpe3JldHVybiB0Ll9hY3Rpb25zLmxlbmd0aH0sZ2V0IGluVXNlKCl7cmV0dXJuIHQuX25BY3RpdmVBY3Rpb25zfX0sYmluZGluZ3M6e2dldCB0b3RhbCgpe3JldHVybiB0Ll9iaW5kaW5ncy5sZW5ndGh9LGdldCBpblVzZSgpe3JldHVybiB0Ll9uQWN0aXZlQmluZGluZ3N9fSxjb250cm9sSW50ZXJwb2xhbnRzOntnZXQgdG90YWwoKXtyZXR1cm4gdC5fY29udHJvbEludGVycG9sYW50cy5sZW5ndGh9LGdldCBpblVzZSgpe3JldHVybiB0Ll9uQWN0aXZlQ29udHJvbEludGVycG9sYW50c319fX0sX2lzQWN0aXZlQWN0aW9uOmZ1bmN0aW9uKHQpe2NvbnN0IGU9dC5fY2FjaGVJbmRleDtyZXR1cm4gbnVsbCE9PWUmJmU8dGhpcy5fbkFjdGl2ZUFjdGlvbnN9LF9hZGRJbmFjdGl2ZUFjdGlvbjpmdW5jdGlvbih0LGUsbil7Y29uc3QgaT10aGlzLl9hY3Rpb25zLHI9dGhpcy5fYWN0aW9uc0J5Q2xpcDtsZXQgbz1yW2VdO2lmKHZvaWQgMD09PW8pbz17a25vd25BY3Rpb25zOlt0XSxhY3Rpb25CeVJvb3Q6e319LHQuX2J5Q2xpcENhY2hlSW5kZXg9MCxyW2VdPW87ZWxzZXtjb25zdCBlPW8ua25vd25BY3Rpb25zO3QuX2J5Q2xpcENhY2hlSW5kZXg9ZS5sZW5ndGgsZS5wdXNoKHQpfXQuX2NhY2hlSW5kZXg9aS5sZW5ndGgsaS5wdXNoKHQpLG8uYWN0aW9uQnlSb290W25dPXR9LF9yZW1vdmVJbmFjdGl2ZUFjdGlvbjpmdW5jdGlvbih0KXtjb25zdCBlPXRoaXMuX2FjdGlvbnMsbj1lW2UubGVuZ3RoLTFdLGk9dC5fY2FjaGVJbmRleDtuLl9jYWNoZUluZGV4PWksZVtpXT1uLGUucG9wKCksdC5fY2FjaGVJbmRleD1udWxsO2NvbnN0IHI9dC5fY2xpcC51dWlkLG89dGhpcy5fYWN0aW9uc0J5Q2xpcCxhPW9bcl0scz1hLmtub3duQWN0aW9ucyxsPXNbcy5sZW5ndGgtMV0sYz10Ll9ieUNsaXBDYWNoZUluZGV4O2wuX2J5Q2xpcENhY2hlSW5kZXg9YyxzW2NdPWwscy5wb3AoKSx0Ll9ieUNsaXBDYWNoZUluZGV4PW51bGwsZGVsZXRlIGEuYWN0aW9uQnlSb290Wyh0Ll9sb2NhbFJvb3R8fHRoaXMuX3Jvb3QpLnV1aWRdLDA9PT1zLmxlbmd0aCYmZGVsZXRlIG9bcl0sdGhpcy5fcmVtb3ZlSW5hY3RpdmVCaW5kaW5nc0ZvckFjdGlvbih0KX0sX3JlbW92ZUluYWN0aXZlQmluZGluZ3NGb3JBY3Rpb246ZnVuY3Rpb24odCl7Y29uc3QgZT10Ll9wcm9wZXJ0eUJpbmRpbmdzO2ZvcihsZXQgdD0wLG49ZS5sZW5ndGg7dCE9PW47Kyt0KXtjb25zdCBuPWVbdF07MD09LS1uLnJlZmVyZW5jZUNvdW50JiZ0aGlzLl9yZW1vdmVJbmFjdGl2ZUJpbmRpbmcobil9fSxfbGVuZEFjdGlvbjpmdW5jdGlvbih0KXtjb25zdCBlPXRoaXMuX2FjdGlvbnMsbj10Ll9jYWNoZUluZGV4LGk9dGhpcy5fbkFjdGl2ZUFjdGlvbnMrKyxyPWVbaV07dC5fY2FjaGVJbmRleD1pLGVbaV09dCxyLl9jYWNoZUluZGV4PW4sZVtuXT1yfSxfdGFrZUJhY2tBY3Rpb246ZnVuY3Rpb24odCl7Y29uc3QgZT10aGlzLl9hY3Rpb25zLG49dC5fY2FjaGVJbmRleCxpPS0tdGhpcy5fbkFjdGl2ZUFjdGlvbnMscj1lW2ldO3QuX2NhY2hlSW5kZXg9aSxlW2ldPXQsci5fY2FjaGVJbmRleD1uLGVbbl09cn0sX2FkZEluYWN0aXZlQmluZGluZzpmdW5jdGlvbih0LGUsbil7Y29uc3QgaT10aGlzLl9iaW5kaW5nc0J5Um9vdEFuZE5hbWUscj10aGlzLl9iaW5kaW5ncztsZXQgbz1pW2VdO3ZvaWQgMD09PW8mJihvPXt9LGlbZV09byksb1tuXT10LHQuX2NhY2hlSW5kZXg9ci5sZW5ndGgsci5wdXNoKHQpfSxfcmVtb3ZlSW5hY3RpdmVCaW5kaW5nOmZ1bmN0aW9uKHQpe2NvbnN0IGU9dGhpcy5fYmluZGluZ3Msbj10LmJpbmRpbmcsaT1uLnJvb3ROb2RlLnV1aWQscj1uLnBhdGgsbz10aGlzLl9iaW5kaW5nc0J5Um9vdEFuZE5hbWUsYT1vW2ldLHM9ZVtlLmxlbmd0aC0xXSxsPXQuX2NhY2hlSW5kZXg7cy5fY2FjaGVJbmRleD1sLGVbbF09cyxlLnBvcCgpLGRlbGV0ZSBhW3JdLDA9PT1PYmplY3Qua2V5cyhhKS5sZW5ndGgmJmRlbGV0ZSBvW2ldfSxfbGVuZEJpbmRpbmc6ZnVuY3Rpb24odCl7Y29uc3QgZT10aGlzLl9iaW5kaW5ncyxuPXQuX2NhY2hlSW5kZXgsaT10aGlzLl9uQWN0aXZlQmluZGluZ3MrKyxyPWVbaV07dC5fY2FjaGVJbmRleD1pLGVbaV09dCxyLl9jYWNoZUluZGV4PW4sZVtuXT1yfSxfdGFrZUJhY2tCaW5kaW5nOmZ1bmN0aW9uKHQpe2NvbnN0IGU9dGhpcy5fYmluZGluZ3Msbj10Ll9jYWNoZUluZGV4LGk9LS10aGlzLl9uQWN0aXZlQmluZGluZ3Mscj1lW2ldO3QuX2NhY2hlSW5kZXg9aSxlW2ldPXQsci5fY2FjaGVJbmRleD1uLGVbbl09cn0sX2xlbmRDb250cm9sSW50ZXJwb2xhbnQ6ZnVuY3Rpb24oKXtjb25zdCB0PXRoaXMuX2NvbnRyb2xJbnRlcnBvbGFudHMsZT10aGlzLl9uQWN0aXZlQ29udHJvbEludGVycG9sYW50cysrO2xldCBuPXRbZV07cmV0dXJuIHZvaWQgMD09PW4mJihuPW5ldyBTcXQobmV3IEZsb2F0MzJBcnJheSgyKSxuZXcgRmxvYXQzMkFycmF5KDIpLDEsdGhpcy5fY29udHJvbEludGVycG9sYW50c1Jlc3VsdEJ1ZmZlciksbi5fX2NhY2hlSW5kZXg9ZSx0W2VdPW4pLG59LF90YWtlQmFja0NvbnRyb2xJbnRlcnBvbGFudDpmdW5jdGlvbih0KXtjb25zdCBlPXRoaXMuX2NvbnRyb2xJbnRlcnBvbGFudHMsbj10Ll9fY2FjaGVJbmRleCxpPS0tdGhpcy5fbkFjdGl2ZUNvbnRyb2xJbnRlcnBvbGFudHMscj1lW2ldO3QuX19jYWNoZUluZGV4PWksZVtpXT10LHIuX19jYWNoZUluZGV4PW4sZVtuXT1yfSxfY29udHJvbEludGVycG9sYW50c1Jlc3VsdEJ1ZmZlcjpuZXcgRmxvYXQzMkFycmF5KDEpLGNsaXBBY3Rpb246ZnVuY3Rpb24odCxlLG4pe2NvbnN0IGk9ZXx8dGhpcy5fcm9vdCxyPWkudXVpZDtsZXQgbz0ic3RyaW5nIj09dHlwZW9mIHQ/TnF0LmZpbmRCeU5hbWUoaSx0KTp0O2NvbnN0IGE9bnVsbCE9PW8/by51dWlkOnQscz10aGlzLl9hY3Rpb25zQnlDbGlwW2FdO2xldCBsPW51bGw7aWYodm9pZCAwPT09biYmKG49bnVsbCE9PW8/by5ibGVuZE1vZGU6V0J0KSx2b2lkIDAhPT1zKXtjb25zdCB0PXMuYWN0aW9uQnlSb290W3JdO2lmKHZvaWQgMCE9PXQmJnQuYmxlbmRNb2RlPT09bilyZXR1cm4gdDtsPXMua25vd25BY3Rpb25zWzBdLG51bGw9PT1vJiYobz1sLl9jbGlwKX1pZihudWxsPT09bylyZXR1cm4gbnVsbDtjb25zdCBjPW5ldyB3WHQodGhpcyxvLGUsbik7cmV0dXJuIHRoaXMuX2JpbmRBY3Rpb24oYyxsKSx0aGlzLl9hZGRJbmFjdGl2ZUFjdGlvbihjLGEsciksY30sZXhpc3RpbmdBY3Rpb246ZnVuY3Rpb24odCxlKXtjb25zdCBuPWV8fHRoaXMuX3Jvb3QsaT1uLnV1aWQscj0ic3RyaW5nIj09dHlwZW9mIHQ/TnF0LmZpbmRCeU5hbWUobix0KTp0LG89dGhpcy5fYWN0aW9uc0J5Q2xpcFtyP3IudXVpZDp0XTtyZXR1cm4gdm9pZCAwIT09byYmby5hY3Rpb25CeVJvb3RbaV18fG51bGx9LHN0b3BBbGxBY3Rpb246ZnVuY3Rpb24oKXtjb25zdCB0PXRoaXMuX2FjdGlvbnM7Zm9yKGxldCBlPXRoaXMuX25BY3RpdmVBY3Rpb25zLTE7ZT49MDstLWUpdFtlXS5zdG9wKCk7cmV0dXJuIHRoaXN9LHVwZGF0ZTpmdW5jdGlvbih0KXtjb25zdCBlPXRoaXMuX2FjdGlvbnMsbj10aGlzLl9uQWN0aXZlQWN0aW9ucyxpPXRoaXMudGltZSs9dCo9dGhpcy50aW1lU2NhbGUscj1NYXRoLnNpZ24odCksbz10aGlzLl9hY2N1SW5kZXhePTE7Zm9yKGxldCBhPTA7YSE9PW47KythKWVbYV0uX3VwZGF0ZShpLHQscixvKTtjb25zdCBhPXRoaXMuX2JpbmRpbmdzLHM9dGhpcy5fbkFjdGl2ZUJpbmRpbmdzO2ZvcihsZXQgdD0wO3QhPT1zOysrdClhW3RdLmFwcGx5KG8pO3JldHVybiB0aGlzfSxzZXRUaW1lOmZ1bmN0aW9uKHQpe3RoaXMudGltZT0wO2ZvcihsZXQgdD0wO3Q8dGhpcy5fYWN0aW9ucy5sZW5ndGg7dCsrKXRoaXMuX2FjdGlvbnNbdF0udGltZT0wO3JldHVybiB0aGlzLnVwZGF0ZSh0KX0sZ2V0Um9vdDpmdW5jdGlvbigpe3JldHVybiB0aGlzLl9yb290fSx1bmNhY2hlQ2xpcDpmdW5jdGlvbih0KXtjb25zdCBlPXRoaXMuX2FjdGlvbnMsbj10LnV1aWQsaT10aGlzLl9hY3Rpb25zQnlDbGlwLHI9aVtuXTtpZih2b2lkIDAhPT1yKXtjb25zdCB0PXIua25vd25BY3Rpb25zO2ZvcihsZXQgbj0wLGk9dC5sZW5ndGg7biE9PWk7KytuKXtjb25zdCBpPXRbbl07dGhpcy5fZGVhY3RpdmF0ZUFjdGlvbihpKTtjb25zdCByPWkuX2NhY2hlSW5kZXgsbz1lW2UubGVuZ3RoLTFdO2kuX2NhY2hlSW5kZXg9bnVsbCxpLl9ieUNsaXBDYWNoZUluZGV4PW51bGwsby5fY2FjaGVJbmRleD1yLGVbcl09byxlLnBvcCgpLHRoaXMuX3JlbW92ZUluYWN0aXZlQmluZGluZ3NGb3JBY3Rpb24oaSl9ZGVsZXRlIGlbbl19fSx1bmNhY2hlUm9vdDpmdW5jdGlvbih0KXtjb25zdCBlPXQudXVpZCxuPXRoaXMuX2FjdGlvbnNCeUNsaXA7Zm9yKGNvbnN0IHQgaW4gbil7Y29uc3QgaT1uW3RdLmFjdGlvbkJ5Um9vdFtlXTt2b2lkIDAhPT1pJiYodGhpcy5fZGVhY3RpdmF0ZUFjdGlvbihpKSx0aGlzLl9yZW1vdmVJbmFjdGl2ZUFjdGlvbihpKSl9Y29uc3QgaT10aGlzLl9iaW5kaW5nc0J5Um9vdEFuZE5hbWVbZV07aWYodm9pZCAwIT09aSlmb3IoY29uc3QgdCBpbiBpKXtjb25zdCBlPWlbdF07ZS5yZXN0b3JlT3JpZ2luYWxTdGF0ZSgpLHRoaXMuX3JlbW92ZUluYWN0aXZlQmluZGluZyhlKX19LHVuY2FjaGVBY3Rpb246ZnVuY3Rpb24odCxlKXtjb25zdCBuPXRoaXMuZXhpc3RpbmdBY3Rpb24odCxlKTtudWxsIT09biYmKHRoaXMuX2RlYWN0aXZhdGVBY3Rpb24obiksdGhpcy5fcmVtb3ZlSW5hY3RpdmVBY3Rpb24obikpfX0pO2NsYXNzIE1YdHtjb25zdHJ1Y3Rvcih0KXsic3RyaW5nIj09dHlwZW9mIHQmJihjb25zb2xlLndhcm4oIlRIUkVFLlVuaWZvcm06IFR5cGUgcGFyYW1ldGVyIGlzIG5vIGxvbmdlciBuZWVkZWQuIiksdD1hcmd1bWVudHNbMV0pLHRoaXMudmFsdWU9dH1jbG9uZSgpe3JldHVybiBuZXcgTVh0KHZvaWQgMD09PXRoaXMudmFsdWUuY2xvbmU/dGhpcy52YWx1ZTp0aGlzLnZhbHVlLmNsb25lKCkpfX1mdW5jdGlvbiBFWHQodCxlLG4pe29HdC5jYWxsKHRoaXMsdCxlKSx0aGlzLm1lc2hQZXJBdHRyaWJ1dGU9bnx8MX1mdW5jdGlvbiBUWHQodCxlLG4saSxyKXt0aGlzLmJ1ZmZlcj10LHRoaXMudHlwZT1lLHRoaXMuaXRlbVNpemU9bix0aGlzLmVsZW1lbnRTaXplPWksdGhpcy5jb3VudD1yLHRoaXMudmVyc2lvbj0wfWZ1bmN0aW9uIEFYdCh0LGUsbixpKXt0aGlzLnJheT1uZXcgV0h0KHQsZSksdGhpcy5uZWFyPW58fDAsdGhpcy5mYXI9aXx8MS8wLHRoaXMuY2FtZXJhPW51bGwsdGhpcy5sYXllcnM9bmV3IGlGdCx0aGlzLnBhcmFtcz17TWVzaDp7fSxMaW5lOnt0aHJlc2hvbGQ6MX0sTE9EOnt9LFBvaW50czp7dGhyZXNob2xkOjF9LFNwcml0ZTp7fX0sT2JqZWN0LmRlZmluZVByb3BlcnRpZXModGhpcy5wYXJhbXMse1BvaW50Q2xvdWQ6e2dldDpmdW5jdGlvbigpe3JldHVybiBjb25zb2xlLndhcm4oIlRIUkVFLlJheWNhc3RlcjogcGFyYW1zLlBvaW50Q2xvdWQgaGFzIGJlZW4gcmVuYW1lZCB0byBwYXJhbXMuUG9pbnRzLiIpLHRoaXMuUG9pbnRzfX19KX1mdW5jdGlvbiBDWHQodCxlKXtyZXR1cm4gdC5kaXN0YW5jZS1lLmRpc3RhbmNlfWZ1bmN0aW9uIGtYdCh0LGUsbixpKXtpZih0LmxheWVycy50ZXN0KGUubGF5ZXJzKSYmdC5yYXljYXN0KGUsbiksITA9PT1pKXtjb25zdCBpPXQuY2hpbGRyZW47Zm9yKGxldCB0PTAscj1pLmxlbmd0aDt0PHI7dCsrKWtYdChpW3RdLGUsbiwhMCl9fUVYdC5wcm90b3R5cGU9T2JqZWN0LmFzc2lnbihPYmplY3QuY3JlYXRlKG9HdC5wcm90b3R5cGUpLHtjb25zdHJ1Y3RvcjpFWHQsaXNJbnN0YW5jZWRJbnRlcmxlYXZlZEJ1ZmZlcjohMCxjb3B5OmZ1bmN0aW9uKHQpe3JldHVybiBvR3QucHJvdG90eXBlLmNvcHkuY2FsbCh0aGlzLHQpLHRoaXMubWVzaFBlckF0dHJpYnV0ZT10Lm1lc2hQZXJBdHRyaWJ1dGUsdGhpc30sY2xvbmU6ZnVuY3Rpb24odCl7Y29uc3QgZT1vR3QucHJvdG90eXBlLmNsb25lLmNhbGwodGhpcyx0KTtyZXR1cm4gZS5tZXNoUGVyQXR0cmlidXRlPXRoaXMubWVzaFBlckF0dHJpYnV0ZSxlfSx0b0pTT046ZnVuY3Rpb24odCl7Y29uc3QgZT1vR3QucHJvdG90eXBlLnRvSlNPTi5jYWxsKHRoaXMsdCk7cmV0dXJuIGUuaXNJbnN0YW5jZWRJbnRlcmxlYXZlZEJ1ZmZlcj0hMCxlLm1lc2hQZXJBdHRyaWJ1dGU9dGhpcy5tZXNoUGVyQXR0cmlidXRlLGV9fSksT2JqZWN0LmRlZmluZVByb3BlcnR5KFRYdC5wcm90b3R5cGUsIm5lZWRzVXBkYXRlIix7c2V0OmZ1bmN0aW9uKHQpeyEwPT09dCYmdGhpcy52ZXJzaW9uKyt9fSksT2JqZWN0LmFzc2lnbihUWHQucHJvdG90eXBlLHtpc0dMQnVmZmVyQXR0cmlidXRlOiEwLHNldEJ1ZmZlcjpmdW5jdGlvbih0KXtyZXR1cm4gdGhpcy5idWZmZXI9dCx0aGlzfSxzZXRUeXBlOmZ1bmN0aW9uKHQsZSl7cmV0dXJuIHRoaXMudHlwZT10LHRoaXMuZWxlbWVudFNpemU9ZSx0aGlzfSxzZXRJdGVtU2l6ZTpmdW5jdGlvbih0KXtyZXR1cm4gdGhpcy5pdGVtU2l6ZT10LHRoaXN9LHNldENvdW50OmZ1bmN0aW9uKHQpe3JldHVybiB0aGlzLmNvdW50PXQsdGhpc319KSxPYmplY3QuYXNzaWduKEFYdC5wcm90b3R5cGUse3NldDpmdW5jdGlvbih0LGUpe3RoaXMucmF5LnNldCh0LGUpfSxzZXRGcm9tQ2FtZXJhOmZ1bmN0aW9uKHQsZSl7ZSYmZS5pc1BlcnNwZWN0aXZlQ2FtZXJhPyh0aGlzLnJheS5vcmlnaW4uc2V0RnJvbU1hdHJpeFBvc2l0aW9uKGUubWF0cml4V29ybGQpLHRoaXMucmF5LmRpcmVjdGlvbi5zZXQodC54LHQueSwuNSkudW5wcm9qZWN0KGUpLnN1Yih0aGlzLnJheS5vcmlnaW4pLm5vcm1hbGl6ZSgpLHRoaXMuY2FtZXJhPWUpOmUmJmUuaXNPcnRob2dyYXBoaWNDYW1lcmE/KHRoaXMucmF5Lm9yaWdpbi5zZXQodC54LHQueSwoZS5uZWFyK2UuZmFyKS8oZS5uZWFyLWUuZmFyKSkudW5wcm9qZWN0KGUpLHRoaXMucmF5LmRpcmVjdGlvbi5zZXQoMCwwLC0xKS50cmFuc2Zvcm1EaXJlY3Rpb24oZS5tYXRyaXhXb3JsZCksdGhpcy5jYW1lcmE9ZSk6Y29uc29sZS5lcnJvcigiVEhSRUUuUmF5Y2FzdGVyOiBVbnN1cHBvcnRlZCBjYW1lcmEgdHlwZTogIitlLnR5cGUpfSxpbnRlcnNlY3RPYmplY3Q6ZnVuY3Rpb24odCxlLG4pe2NvbnN0IGk9bnx8W107cmV0dXJuIGtYdCh0LHRoaXMsaSxlKSxpLnNvcnQoQ1h0KSxpfSxpbnRlcnNlY3RPYmplY3RzOmZ1bmN0aW9uKHQsZSxuKXtjb25zdCBpPW58fFtdO2lmKCExPT09QXJyYXkuaXNBcnJheSh0KSlyZXR1cm4gY29uc29sZS53YXJuKCJUSFJFRS5SYXljYXN0ZXIuaW50ZXJzZWN0T2JqZWN0czogb2JqZWN0cyBpcyBub3QgYW4gQXJyYXkuIiksaTtmb3IobGV0IG49MCxyPXQubGVuZ3RoO248cjtuKyspa1h0KHRbbl0sdGhpcyxpLGUpO3JldHVybiBpLnNvcnQoQ1h0KSxpfX0pO2NsYXNzIExYdHtjb25zdHJ1Y3Rvcih0PTEsZT0wLG49MCl7cmV0dXJuIHRoaXMucmFkaXVzPXQsdGhpcy5waGk9ZSx0aGlzLnRoZXRhPW4sdGhpc31zZXQodCxlLG4pe3JldHVybiB0aGlzLnJhZGl1cz10LHRoaXMucGhpPWUsdGhpcy50aGV0YT1uLHRoaXN9Y2xvbmUoKXtyZXR1cm4obmV3IHRoaXMuY29uc3RydWN0b3IpLmNvcHkodGhpcyl9Y29weSh0KXtyZXR1cm4gdGhpcy5yYWRpdXM9dC5yYWRpdXMsdGhpcy5waGk9dC5waGksdGhpcy50aGV0YT10LnRoZXRhLHRoaXN9bWFrZVNhZmUoKXtjb25zdCB0PTFlLTY7cmV0dXJuIHRoaXMucGhpPU1hdGgubWF4KHQsTWF0aC5taW4oTWF0aC5QSS10LHRoaXMucGhpKSksdGhpc31zZXRGcm9tVmVjdG9yMyh0KXtyZXR1cm4gdGhpcy5zZXRGcm9tQ2FydGVzaWFuQ29vcmRzKHQueCx0LnksdC56KX1zZXRGcm9tQ2FydGVzaWFuQ29vcmRzKHQsZSxuKXtyZXR1cm4gdGhpcy5yYWRpdXM9TWF0aC5zcXJ0KHQqdCtlKmUrbipuKSwwPT09dGhpcy5yYWRpdXM/KHRoaXMudGhldGE9MCx0aGlzLnBoaT0wKToodGhpcy50aGV0YT1NYXRoLmF0YW4yKHQsbiksdGhpcy5waGk9TWF0aC5hY29zKHNIdC5jbGFtcChlL3RoaXMucmFkaXVzLC0xLDEpKSksdGhpc319Y29uc3QgUFh0PW5ldyBsSHQ7Y2xhc3MgSVh0e2NvbnN0cnVjdG9yKHQsZSl7T2JqZWN0LmRlZmluZVByb3BlcnR5KHRoaXMsImlzQm94MiIse3ZhbHVlOiEwfSksdGhpcy5taW49dm9pZCAwIT09dD90Om5ldyBsSHQoMS8wLDEvMCksdGhpcy5tYXg9dm9pZCAwIT09ZT9lOm5ldyBsSHQoLTEvMCwtMS8wKX1zZXQodCxlKXtyZXR1cm4gdGhpcy5taW4uY29weSh0KSx0aGlzLm1heC5jb3B5KGUpLHRoaXN9c2V0RnJvbVBvaW50cyh0KXt0aGlzLm1ha2VFbXB0eSgpO2ZvcihsZXQgZT0wLG49dC5sZW5ndGg7ZTxuO2UrKyl0aGlzLmV4cGFuZEJ5UG9pbnQodFtlXSk7cmV0dXJuIHRoaXN9c2V0RnJvbUNlbnRlckFuZFNpemUodCxlKXtjb25zdCBuPVBYdC5jb3B5KGUpLm11bHRpcGx5U2NhbGFyKC41KTtyZXR1cm4gdGhpcy5taW4uY29weSh0KS5zdWIobiksdGhpcy5tYXguY29weSh0KS5hZGQobiksdGhpc31jbG9uZSgpe3JldHVybihuZXcgdGhpcy5jb25zdHJ1Y3RvcikuY29weSh0aGlzKX1jb3B5KHQpe3JldHVybiB0aGlzLm1pbi5jb3B5KHQubWluKSx0aGlzLm1heC5jb3B5KHQubWF4KSx0aGlzfW1ha2VFbXB0eSgpe3JldHVybiB0aGlzLm1pbi54PXRoaXMubWluLnk9MS8wLHRoaXMubWF4Lng9dGhpcy5tYXgueT0tMS8wLHRoaXN9aXNFbXB0eSgpe3JldHVybiB0aGlzLm1heC54PHRoaXMubWluLnh8fHRoaXMubWF4Lnk8dGhpcy5taW4ueX1nZXRDZW50ZXIodCl7cmV0dXJuIHZvaWQgMD09PXQmJihjb25zb2xlLndhcm4oIlRIUkVFLkJveDI6IC5nZXRDZW50ZXIoKSB0YXJnZXQgaXMgbm93IHJlcXVpcmVkIiksdD1uZXcgbEh0KSx0aGlzLmlzRW1wdHkoKT90LnNldCgwLDApOnQuYWRkVmVjdG9ycyh0aGlzLm1pbix0aGlzLm1heCkubXVsdGlwbHlTY2FsYXIoLjUpfWdldFNpemUodCl7cmV0dXJuIHZvaWQgMD09PXQmJihjb25zb2xlLndhcm4oIlRIUkVFLkJveDI6IC5nZXRTaXplKCkgdGFyZ2V0IGlzIG5vdyByZXF1aXJlZCIpLHQ9bmV3IGxIdCksdGhpcy5pc0VtcHR5KCk/dC5zZXQoMCwwKTp0LnN1YlZlY3RvcnModGhpcy5tYXgsdGhpcy5taW4pfWV4cGFuZEJ5UG9pbnQodCl7cmV0dXJuIHRoaXMubWluLm1pbih0KSx0aGlzLm1heC5tYXgodCksdGhpc31leHBhbmRCeVZlY3Rvcih0KXtyZXR1cm4gdGhpcy5taW4uc3ViKHQpLHRoaXMubWF4LmFkZCh0KSx0aGlzfWV4cGFuZEJ5U2NhbGFyKHQpe3JldHVybiB0aGlzLm1pbi5hZGRTY2FsYXIoLXQpLHRoaXMubWF4LmFkZFNjYWxhcih0KSx0aGlzfWNvbnRhaW5zUG9pbnQodCl7cmV0dXJuISh0Lng8dGhpcy5taW4ueHx8dC54PnRoaXMubWF4Lnh8fHQueTx0aGlzLm1pbi55fHx0Lnk+dGhpcy5tYXgueSl9Y29udGFpbnNCb3godCl7cmV0dXJuIHRoaXMubWluLng8PXQubWluLngmJnQubWF4Lng8PXRoaXMubWF4LngmJnRoaXMubWluLnk8PXQubWluLnkmJnQubWF4Lnk8PXRoaXMubWF4Lnl9Z2V0UGFyYW1ldGVyKHQsZSl7cmV0dXJuIHZvaWQgMD09PWUmJihjb25zb2xlLndhcm4oIlRIUkVFLkJveDI6IC5nZXRQYXJhbWV0ZXIoKSB0YXJnZXQgaXMgbm93IHJlcXVpcmVkIiksZT1uZXcgbEh0KSxlLnNldCgodC54LXRoaXMubWluLngpLyh0aGlzLm1heC54LXRoaXMubWluLngpLCh0LnktdGhpcy5taW4ueSkvKHRoaXMubWF4LnktdGhpcy5taW4ueSkpfWludGVyc2VjdHNCb3godCl7cmV0dXJuISh0Lm1heC54PHRoaXMubWluLnh8fHQubWluLng+dGhpcy5tYXgueHx8dC5tYXgueTx0aGlzLm1pbi55fHx0Lm1pbi55PnRoaXMubWF4LnkpfWNsYW1wUG9pbnQodCxlKXtyZXR1cm4gdm9pZCAwPT09ZSYmKGNvbnNvbGUud2FybigiVEhSRUUuQm94MjogLmNsYW1wUG9pbnQoKSB0YXJnZXQgaXMgbm93IHJlcXVpcmVkIiksZT1uZXcgbEh0KSxlLmNvcHkodCkuY2xhbXAodGhpcy5taW4sdGhpcy5tYXgpfWRpc3RhbmNlVG9Qb2ludCh0KXtyZXR1cm4gUFh0LmNvcHkodCkuY2xhbXAodGhpcy5taW4sdGhpcy5tYXgpLnN1Yih0KS5sZW5ndGgoKX1pbnRlcnNlY3QodCl7cmV0dXJuIHRoaXMubWluLm1heCh0Lm1pbiksdGhpcy5tYXgubWluKHQubWF4KSx0aGlzfXVuaW9uKHQpe3JldHVybiB0aGlzLm1pbi5taW4odC5taW4pLHRoaXMubWF4Lm1heCh0Lm1heCksdGhpc310cmFuc2xhdGUodCl7cmV0dXJuIHRoaXMubWluLmFkZCh0KSx0aGlzLm1heC5hZGQodCksdGhpc31lcXVhbHModCl7cmV0dXJuIHQubWluLmVxdWFscyh0aGlzLm1pbikmJnQubWF4LmVxdWFscyh0aGlzLm1heCl9fWNvbnN0IE5YdD1uZXcgeUh0LE9YdD1uZXcgeUh0O2NsYXNzIFJYdHtjb25zdHJ1Y3Rvcih0LGUpe3RoaXMuc3RhcnQ9dm9pZCAwIT09dD90Om5ldyB5SHQsdGhpcy5lbmQ9dm9pZCAwIT09ZT9lOm5ldyB5SHR9c2V0KHQsZSl7cmV0dXJuIHRoaXMuc3RhcnQuY29weSh0KSx0aGlzLmVuZC5jb3B5KGUpLHRoaXN9Y2xvbmUoKXtyZXR1cm4obmV3IHRoaXMuY29uc3RydWN0b3IpLmNvcHkodGhpcyl9Y29weSh0KXtyZXR1cm4gdGhpcy5zdGFydC5jb3B5KHQuc3RhcnQpLHRoaXMuZW5kLmNvcHkodC5lbmQpLHRoaXN9Z2V0Q2VudGVyKHQpe3JldHVybiB2b2lkIDA9PT10JiYoY29uc29sZS53YXJuKCJUSFJFRS5MaW5lMzogLmdldENlbnRlcigpIHRhcmdldCBpcyBub3cgcmVxdWlyZWQiKSx0PW5ldyB5SHQpLHQuYWRkVmVjdG9ycyh0aGlzLnN0YXJ0LHRoaXMuZW5kKS5tdWx0aXBseVNjYWxhciguNSl9ZGVsdGEodCl7cmV0dXJuIHZvaWQgMD09PXQmJihjb25zb2xlLndhcm4oIlRIUkVFLkxpbmUzOiAuZGVsdGEoKSB0YXJnZXQgaXMgbm93IHJlcXVpcmVkIiksdD1uZXcgeUh0KSx0LnN1YlZlY3RvcnModGhpcy5lbmQsdGhpcy5zdGFydCl9ZGlzdGFuY2VTcSgpe3JldHVybiB0aGlzLnN0YXJ0LmRpc3RhbmNlVG9TcXVhcmVkKHRoaXMuZW5kKX1kaXN0YW5jZSgpe3JldHVybiB0aGlzLnN0YXJ0LmRpc3RhbmNlVG8odGhpcy5lbmQpfWF0KHQsZSl7cmV0dXJuIHZvaWQgMD09PWUmJihjb25zb2xlLndhcm4oIlRIUkVFLkxpbmUzOiAuYXQoKSB0YXJnZXQgaXMgbm93IHJlcXVpcmVkIiksZT1uZXcgeUh0KSx0aGlzLmRlbHRhKGUpLm11bHRpcGx5U2NhbGFyKHQpLmFkZCh0aGlzLnN0YXJ0KX1jbG9zZXN0UG9pbnRUb1BvaW50UGFyYW1ldGVyKHQsZSl7Tlh0LnN1YlZlY3RvcnModCx0aGlzLnN0YXJ0KSxPWHQuc3ViVmVjdG9ycyh0aGlzLmVuZCx0aGlzLnN0YXJ0KTtjb25zdCBuPU9YdC5kb3QoT1h0KTtsZXQgaT1PWHQuZG90KE5YdCkvbjtyZXR1cm4gZSYmKGk9c0h0LmNsYW1wKGksMCwxKSksaX1jbG9zZXN0UG9pbnRUb1BvaW50KHQsZSxuKXtjb25zdCBpPXRoaXMuY2xvc2VzdFBvaW50VG9Qb2ludFBhcmFtZXRlcih0LGUpO3JldHVybiB2b2lkIDA9PT1uJiYoY29uc29sZS53YXJuKCJUSFJFRS5MaW5lMzogLmNsb3Nlc3RQb2ludFRvUG9pbnQoKSB0YXJnZXQgaXMgbm93IHJlcXVpcmVkIiksbj1uZXcgeUh0KSx0aGlzLmRlbHRhKG4pLm11bHRpcGx5U2NhbGFyKGkpLmFkZCh0aGlzLnN0YXJ0KX1hcHBseU1hdHJpeDQodCl7cmV0dXJuIHRoaXMuc3RhcnQuYXBwbHlNYXRyaXg0KHQpLHRoaXMuZW5kLmFwcGx5TWF0cml4NCh0KSx0aGlzfWVxdWFscyh0KXtyZXR1cm4gdC5zdGFydC5lcXVhbHModGhpcy5zdGFydCkmJnQuZW5kLmVxdWFscyh0aGlzLmVuZCl9fWZ1bmN0aW9uIHpYdCh0KXtfRnQuY2FsbCh0aGlzKSx0aGlzLm1hdGVyaWFsPXQsdGhpcy5yZW5kZXI9ZnVuY3Rpb24oKXt9LHRoaXMuaGFzUG9zaXRpb25zPSExLHRoaXMuaGFzTm9ybWFscz0hMSx0aGlzLmhhc0NvbG9ycz0hMSx0aGlzLmhhc1V2cz0hMSx0aGlzLnBvc2l0aW9uQXJyYXk9bnVsbCx0aGlzLm5vcm1hbEFycmF5PW51bGwsdGhpcy5jb2xvckFycmF5PW51bGwsdGhpcy51dkFycmF5PW51bGwsdGhpcy5jb3VudD0wfSh6WHQucHJvdG90eXBlPU9iamVjdC5jcmVhdGUoX0Z0LnByb3RvdHlwZSkpLmNvbnN0cnVjdG9yPXpYdCx6WHQucHJvdG90eXBlLmlzSW1tZWRpYXRlUmVuZGVyT2JqZWN0PSEwO2NvbnN0IERYdD1uZXcgeUh0LEJYdD1uZXcgeUh0LEhYdD1uZXcgcUh0LEZYdD1uZXcgcUh0O2NsYXNzIFZYdCBleHRlbmRzIFpHdHtjb25zdHJ1Y3Rvcih0KXtjb25zdCBlPWpYdCh0KSxuPW5ldyBwVnQsaT1bXSxyPVtdLG89bmV3IEhGdCgwLDAsMSksYT1uZXcgSEZ0KDAsMSwwKTtmb3IobGV0IHQ9MDt0PGUubGVuZ3RoO3QrKyl7Y29uc3Qgbj1lW3RdO24ucGFyZW50JiZuLnBhcmVudC5pc0JvbmUmJihpLnB1c2goMCwwLDApLGkucHVzaCgwLDAsMCksci5wdXNoKG8ucixvLmcsby5iKSxyLnB1c2goYS5yLGEuZyxhLmIpKX1uLnNldEF0dHJpYnV0ZSgicG9zaXRpb24iLG5ldyBlVnQoaSwzKSksbi5zZXRBdHRyaWJ1dGUoImNvbG9yIixuZXcgZVZ0KHIsMykpLHN1cGVyKG4sbmV3IGpHdCh7dmVydGV4Q29sb3JzOiEwLGRlcHRoVGVzdDohMSxkZXB0aFdyaXRlOiExLHRvbmVNYXBwZWQ6ITEsdHJhbnNwYXJlbnQ6ITB9KSksdGhpcy50eXBlPSJTa2VsZXRvbkhlbHBlciIsdGhpcy5pc1NrZWxldG9uSGVscGVyPSEwLHRoaXMucm9vdD10LHRoaXMuYm9uZXM9ZSx0aGlzLm1hdHJpeD10Lm1hdHJpeFdvcmxkLHRoaXMubWF0cml4QXV0b1VwZGF0ZT0hMX11cGRhdGVNYXRyaXhXb3JsZCh0KXtjb25zdCBlPXRoaXMuYm9uZXMsbj10aGlzLmdlb21ldHJ5LGk9bi5nZXRBdHRyaWJ1dGUoInBvc2l0aW9uIik7Rlh0LmNvcHkodGhpcy5yb290Lm1hdHJpeFdvcmxkKS5pbnZlcnQoKTtmb3IobGV0IHQ9MCxuPTA7dDxlLmxlbmd0aDt0Kyspe2NvbnN0IHI9ZVt0XTtyLnBhcmVudCYmci5wYXJlbnQuaXNCb25lJiYoSFh0Lm11bHRpcGx5TWF0cmljZXMoRlh0LHIubWF0cml4V29ybGQpLEJYdC5zZXRGcm9tTWF0cml4UG9zaXRpb24oSFh0KSxpLnNldFhZWihuLEJYdC54LEJYdC55LEJYdC56KSxIWHQubXVsdGlwbHlNYXRyaWNlcyhGWHQsci5wYXJlbnQubWF0cml4V29ybGQpLEJYdC5zZXRGcm9tTWF0cml4UG9zaXRpb24oSFh0KSxpLnNldFhZWihuKzEsQlh0LngsQlh0LnksQlh0LnopLG4rPTIpfW4uZ2V0QXR0cmlidXRlKCJwb3NpdGlvbiIpLm5lZWRzVXBkYXRlPSEwLHN1cGVyLnVwZGF0ZU1hdHJpeFdvcmxkKHQpfX1mdW5jdGlvbiBqWHQodCl7Y29uc3QgZT1bXTt0JiZ0LmlzQm9uZSYmZS5wdXNoKHQpO2ZvcihsZXQgbj0wO248dC5jaGlsZHJlbi5sZW5ndGg7bisrKWUucHVzaC5hcHBseShlLGpYdCh0LmNoaWxkcmVuW25dKSk7cmV0dXJuIGV9Y29uc3QgVVh0PW5ldyB5SHQsR1h0PW5ldyBIRnQsV1h0PW5ldyBIRnQ7Y2xhc3MgcVh0IGV4dGVuZHMgWkd0e2NvbnN0cnVjdG9yKHQ9MTAsZT0xMCxuPTQ0NzM5MjQsaT04OTQ3ODQ4KXtuPW5ldyBIRnQobiksaT1uZXcgSEZ0KGkpO2NvbnN0IHI9ZS8yLG89dC9lLGE9dC8yLHM9W10sbD1bXTtmb3IobGV0IHQ9MCxjPTAsdT0tYTt0PD1lO3QrKyx1Kz1vKXtzLnB1c2goLWEsMCx1LGEsMCx1KSxzLnB1c2godSwwLC1hLHUsMCxhKTtjb25zdCBlPXQ9PT1yP246aTtlLnRvQXJyYXkobCxjKSxjKz0zLGUudG9BcnJheShsLGMpLGMrPTMsZS50b0FycmF5KGwsYyksYys9MyxlLnRvQXJyYXkobCxjKSxjKz0zfWNvbnN0IGM9bmV3IHBWdDtjLnNldEF0dHJpYnV0ZSgicG9zaXRpb24iLG5ldyBlVnQocywzKSksYy5zZXRBdHRyaWJ1dGUoImNvbG9yIixuZXcgZVZ0KGwsMykpLHN1cGVyKGMsbmV3IGpHdCh7dmVydGV4Q29sb3JzOiEwLHRvbmVNYXBwZWQ6ITF9KSksdGhpcy50eXBlPSJHcmlkSGVscGVyIn19Y29uc3QgWVh0PW5ldyB5SHQsWFh0PW5ldyB5SHQsJFh0PW5ldyB5SHQsS1h0PW5ldyB5SHQsWlh0PW5ldyBCVnQ7ZnVuY3Rpb24gSlh0KHQsZSxuLGkscixvLGEpe0tYdC5zZXQocixvLGEpLnVucHJvamVjdChpKTtjb25zdCBzPWVbdF07aWYodm9pZCAwIT09cyl7Y29uc3QgdD1uLmdldEF0dHJpYnV0ZSgicG9zaXRpb24iKTtmb3IobGV0IGU9MCxuPXMubGVuZ3RoO2U8bjtlKyspdC5zZXRYWVooc1tlXSxLWHQueCxLWHQueSxLWHQueil9fWNvbnN0IFFYdD1uZXcgeEh0O2NsYXNzIHQkdCBleHRlbmRzIFpHdHtjb25zdHJ1Y3Rvcih0LGU9MTY3NzY5NjApe2NvbnN0IG49bmV3IFVpbnQxNkFycmF5KFswLDEsMSwyLDIsMywzLDAsNCw1LDUsNiw2LDcsNyw0LDAsNCwxLDUsMiw2LDMsN10pLGk9bmV3IEZsb2F0MzJBcnJheSgyNCkscj1uZXcgcFZ0O3Iuc2V0SW5kZXgobmV3IHFGdChuLDEpKSxyLnNldEF0dHJpYnV0ZSgicG9zaXRpb24iLG5ldyBxRnQoaSwzKSksc3VwZXIocixuZXcgakd0KHtjb2xvcjplLHRvbmVNYXBwZWQ6ITF9KSksdGhpcy5vYmplY3Q9dCx0aGlzLnR5cGU9IkJveEhlbHBlciIsdGhpcy5tYXRyaXhBdXRvVXBkYXRlPSExLHRoaXMudXBkYXRlKCl9dXBkYXRlKHQpe2lmKHZvaWQgMCE9PXQmJmNvbnNvbGUud2FybigiVEhSRUUuQm94SGVscGVyOiAudXBkYXRlKCkgaGFzIG5vIGxvbmdlciBhcmd1bWVudHMuIiksdm9pZCAwIT09dGhpcy5vYmplY3QmJlFYdC5zZXRGcm9tT2JqZWN0KHRoaXMub2JqZWN0KSxRWHQuaXNFbXB0eSgpKXJldHVybjtjb25zdCBlPVFYdC5taW4sbj1RWHQubWF4LGk9dGhpcy5nZW9tZXRyeS5hdHRyaWJ1dGVzLnBvc2l0aW9uLHI9aS5hcnJheTtyWzBdPW4ueCxyWzFdPW4ueSxyWzJdPW4ueixyWzNdPWUueCxyWzRdPW4ueSxyWzVdPW4ueixyWzZdPWUueCxyWzddPWUueSxyWzhdPW4ueixyWzldPW4ueCxyWzEwXT1lLnksclsxMV09bi56LHJbMTJdPW4ueCxyWzEzXT1uLnksclsxNF09ZS56LHJbMTVdPWUueCxyWzE2XT1uLnksclsxN109ZS56LHJbMThdPWUueCxyWzE5XT1lLnksclsyMF09ZS56LHJbMjFdPW4ueCxyWzIyXT1lLnksclsyM109ZS56LGkubmVlZHNVcGRhdGU9ITAsdGhpcy5nZW9tZXRyeS5jb21wdXRlQm91bmRpbmdTcGhlcmUoKX1zZXRGcm9tT2JqZWN0KHQpe3JldHVybiB0aGlzLm9iamVjdD10LHRoaXMudXBkYXRlKCksdGhpc31jb3B5KHQpe3JldHVybiBaR3QucHJvdG90eXBlLmNvcHkuY2FsbCh0aGlzLHQpLHRoaXMub2JqZWN0PXQub2JqZWN0LHRoaXN9fWNvbnN0IGUkdD1uZXcgeUh0O2xldCBuJHQsaSR0O2NsYXNzIHIkdCBleHRlbmRzIFpHdHtjb25zdHJ1Y3Rvcih0PTEpe2NvbnN0IGU9WzAsMCwwLHQsMCwwLDAsMCwwLDAsdCwwLDAsMCwwLDAsMCx0XSxuPW5ldyBwVnQ7bi5zZXRBdHRyaWJ1dGUoInBvc2l0aW9uIixuZXcgZVZ0KGUsMykpLG4uc2V0QXR0cmlidXRlKCJjb2xvciIsbmV3IGVWdChbMSwwLDAsMSwuNiwwLDAsMSwwLC42LDEsMCwwLDAsMSwwLC42LDFdLDMpKSxzdXBlcihuLG5ldyBqR3Qoe3ZlcnRleENvbG9yczohMCx0b25lTWFwcGVkOiExfSkpLHRoaXMudHlwZT0iQXhlc0hlbHBlciJ9fWNvbnN0IG8kdD1uZXcgRmxvYXQzMkFycmF5KDEpLGEkdD1uZXcgSW50MzJBcnJheShvJHQuYnVmZmVyKSxzJHQ9e3RvSGFsZkZsb2F0OmZ1bmN0aW9uKHQpe28kdFswXT10O2NvbnN0IGU9YSR0WzBdO2xldCBuPWU+PjE2JjMyNzY4LGk9ZT4+MTImMjA0Nztjb25zdCByPWU+PjIzJjI1NTtyZXR1cm4gcjwxMDM/bjpyPjE0Mj8obnw9MzE3NDQsbnw9KDI1NT09cj8wOjEpJiY4Mzg4NjA3JmUsbik6cjwxMTM/KGl8PTIwNDgsbnw9KGk+PjExNC1yKSsoaT4+MTEzLXImMSksbik6KG58PXItMTEyPDwxMHxpPj4xLG4rPTEmaSxuKX19LGwkdD1NYXRoLnBvdygyLDgpLGMkdD1bLjEyNSwuMjE1LC4zNSwuNDQ2LC41MjYsLjU4Ml0sdSR0PTUrYyR0Lmxlbmd0aCxoJHQ9e1tZQnRdOjAsW1hCdF06MSxbS0J0XToyLFtaQnRdOjMsW0pCdF06NCxbUUJ0XTo1LFskQnRdOjZ9LGQkdD1uZXcgVUZ0KHtzaWRlOjEsZGVwdGhXcml0ZTohMSxkZXB0aFRlc3Q6ITF9KSxwJHQ9bmV3IFBWdChuZXcgTlZ0LGQkdCksZiR0PW5ldyBTWXQse19sb2RQbGFuZXM6bSR0LF9zaXplTG9kczpnJHQsX3NpZ21hczpfJHR9PUUkdCgpLHkkdD1uZXcgSEZ0O2xldCB2JHQ9bnVsbDtjb25zdCBiJHQ9KDErTWF0aC5zcXJ0KDUpKS8yLHgkdD0xL2IkdCx3JHQ9W25ldyB5SHQoMSwxLDEpLG5ldyB5SHQoLTEsMSwxKSxuZXcgeUh0KDEsMSwtMSksbmV3IHlIdCgtMSwxLC0xKSxuZXcgeUh0KDAsYiR0LHgkdCksbmV3IHlIdCgwLGIkdCwteCR0KSxuZXcgeUh0KHgkdCwwLGIkdCksbmV3IHlIdCgteCR0LDAsYiR0KSxuZXcgeUh0KGIkdCx4JHQsMCksbmV3IHlIdCgtYiR0LHgkdCwwKV07ZnVuY3Rpb24gUyR0KHQpe2NvbnN0IGU9TWF0aC5tYXgodC5yLHQuZyx0LmIpLG49TWF0aC5taW4oTWF0aC5tYXgoTWF0aC5jZWlsKE1hdGgubG9nMihlKSksLTEyOCksMTI3KTtyZXR1cm4gdC5tdWx0aXBseVNjYWxhcihNYXRoLnBvdygyLC1uKSksKG4rMTI4KS8yNTV9ZnVuY3Rpb24gTSR0KHQpe3JldHVybiB2b2lkIDAhPT10JiZ0LnR5cGU9PT12QnQmJih0LmVuY29kaW5nPT09WUJ0fHx0LmVuY29kaW5nPT09WEJ0fHx0LmVuY29kaW5nPT09JEJ0KX1mdW5jdGlvbiBFJHQoKXtjb25zdCB0PVtdLGU9W10sbj1bXTtsZXQgaT04O2ZvcihsZXQgcj0wO3I8dSR0O3IrKyl7Y29uc3Qgbz1NYXRoLnBvdygyLGkpO2UucHVzaChvKTtsZXQgYT0xL287cj40P2E9YyR0W3ItOCs0LTFdOjA9PXImJihhPTApLG4ucHVzaChhKTtjb25zdCBzPTEvKG8tMSksbD0tcy8yLGM9MStzLzIsdT1bbCxsLGMsbCxjLGMsbCxsLGMsYyxsLGNdLGg9NixkPTYscD0zLGY9MixtPTEsZz1uZXcgRmxvYXQzMkFycmF5KHAqZCpoKSxfPW5ldyBGbG9hdDMyQXJyYXkoZipkKmgpLHk9bmV3IEZsb2F0MzJBcnJheShtKmQqaCk7Zm9yKGxldCB0PTA7dDxoO3QrKyl7Y29uc3QgZT10JTMqMi8zLTEsbj10PjI/MDotMTtnLnNldChbZSxuLDAsZSsyLzMsbiwwLGUrMi8zLG4rMSwwLGUsbiwwLGUrMi8zLG4rMSwwLGUsbisxLDBdLHAqZCp0KSxfLnNldCh1LGYqZCp0KSx5LnNldChbdCx0LHQsdCx0LHRdLG0qZCp0KX1jb25zdCB2PW5ldyBwVnQ7di5zZXRBdHRyaWJ1dGUoInBvc2l0aW9uIixuZXcgcUZ0KGcscCkpLHYuc2V0QXR0cmlidXRlKCJ1diIsbmV3IHFGdChfLGYpKSx2LnNldEF0dHJpYnV0ZSgiZmFjZUluZGV4IixuZXcgcUZ0KHksbSkpLHQucHVzaCh2KSxpPjQmJmktLX1yZXR1cm57X2xvZFBsYW5lczp0LF9zaXplTG9kczplLF9zaWdtYXM6bn19ZnVuY3Rpb24gVCR0KHQpe2NvbnN0IGU9bmV3IGdIdCgzKmwkdCwzKmwkdCx0KTtyZXR1cm4gZS50ZXh0dXJlLm1hcHBpbmc9bEJ0LGUudGV4dHVyZS5uYW1lPSJQTVJFTS5jdWJlVXYiLGUuc2Npc3NvclRlc3Q9ITAsZX1mdW5jdGlvbiBBJHQodCxlLG4saSxyKXt0LnZpZXdwb3J0LnNldChlLG4saSxyKSx0LnNjaXNzb3Iuc2V0KGUsbixpLHIpfWZ1bmN0aW9uIEMkdCgpe3JldHVybiBuZXcgdXF0KHtuYW1lOiJFcXVpcmVjdGFuZ3VsYXJUb0N1YmVVViIsdW5pZm9ybXM6e2Vudk1hcDp7dmFsdWU6bnVsbH0sdGV4ZWxTaXplOnt2YWx1ZTpuZXcgbEh0KDEsMSl9LGlucHV0RW5jb2Rpbmc6e3ZhbHVlOmgkdFszZTNdfSxvdXRwdXRFbmNvZGluZzp7dmFsdWU6aCR0WzNlM119fSx2ZXJ0ZXhTaGFkZXI6IlxuXG5cdFx0cHJlY2lzaW9uIG1lZGl1bXAgZmxvYXQ7XG5cdFx0cHJlY2lzaW9uIG1lZGl1bXAgaW50O1xuXG5cdFx0YXR0cmlidXRlIHZlYzMgcG9zaXRpb247XG5cdFx0YXR0cmlidXRlIHZlYzIgdXY7XG5cdFx0YXR0cmlidXRlIGZsb2F0IGZhY2VJbmRleDtcblxuXHRcdHZhcnlpbmcgdmVjMyB2T3V0cHV0RGlyZWN0aW9uO1xuXG5cdFx0Ly8gUkggY29vcmRpbmF0ZSBzeXN0ZW07IFBNUkVNIGZhY2UtaW5kZXhpbmcgY29udmVudGlvblxuXHRcdHZlYzMgZ2V0RGlyZWN0aW9uKCB2ZWMyIHV2LCBmbG9hdCBmYWNlICkge1xuXG5cdFx0XHR1diA9IDIuMCAqIHV2IC0gMS4wO1xuXG5cdFx0XHR2ZWMzIGRpcmVjdGlvbiA9IHZlYzMoIHV2LCAxLjAgKTtcblxuXHRcdFx0aWYgKCBmYWNlID09IDAuMCApIHtcblxuXHRcdFx0XHRkaXJlY3Rpb24gPSBkaXJlY3Rpb24uenl4OyAvLyAoIDEsIHYsIHUgKSBwb3MgeFxuXG5cdFx0XHR9IGVsc2UgaWYgKCBmYWNlID09IDEuMCApIHtcblxuXHRcdFx0XHRkaXJlY3Rpb24gPSBkaXJlY3Rpb24ueHp5O1xuXHRcdFx0XHRkaXJlY3Rpb24ueHogKj0gLTEuMDsgLy8gKCAtdSwgMSwgLXYgKSBwb3MgeVxuXG5cdFx0XHR9IGVsc2UgaWYgKCBmYWNlID09IDIuMCApIHtcblxuXHRcdFx0XHRkaXJlY3Rpb24ueCAqPSAtMS4wOyAvLyAoIC11LCB2LCAxICkgcG9zIHpcblxuXHRcdFx0fSBlbHNlIGlmICggZmFjZSA9PSAzLjAgKSB7XG5cblx0XHRcdFx0ZGlyZWN0aW9uID0gZGlyZWN0aW9uLnp5eDtcblx0XHRcdFx0ZGlyZWN0aW9uLnh6ICo9IC0xLjA7IC8vICggLTEsIHYsIC11ICkgbmVnIHhcblxuXHRcdFx0fSBlbHNlIGlmICggZmFjZSA9PSA0LjAgKSB7XG5cblx0XHRcdFx0ZGlyZWN0aW9uID0gZGlyZWN0aW9uLnh6eTtcblx0XHRcdFx0ZGlyZWN0aW9uLnh5ICo9IC0xLjA7IC8vICggLXUsIC0xLCB2ICkgbmVnIHlcblxuXHRcdFx0fSBlbHNlIGlmICggZmFjZSA9PSA1LjAgKSB7XG5cblx0XHRcdFx0ZGlyZWN0aW9uLnogKj0gLTEuMDsgLy8gKCB1LCB2LCAtMSApIG5lZyB6XG5cblx0XHRcdH1cblxuXHRcdFx0cmV0dXJuIGRpcmVjdGlvbjtcblxuXHRcdH1cblxuXHRcdHZvaWQgbWFpbigpIHtcblxuXHRcdFx0dk91dHB1dERpcmVjdGlvbiA9IGdldERpcmVjdGlvbiggdXYsIGZhY2VJbmRleCApO1xuXHRcdFx0Z2xfUG9zaXRpb24gPSB2ZWM0KCBwb3NpdGlvbiwgMS4wICk7XG5cblx0XHR9XG5cdCIsZnJhZ21lbnRTaGFkZXI6IlxuXG5cdFx0XHRwcmVjaXNpb24gbWVkaXVtcCBmbG9hdDtcblx0XHRcdHByZWNpc2lvbiBtZWRpdW1wIGludDtcblxuXHRcdFx0dmFyeWluZyB2ZWMzIHZPdXRwdXREaXJlY3Rpb247XG5cblx0XHRcdHVuaWZvcm0gc2FtcGxlcjJEIGVudk1hcDtcblx0XHRcdHVuaWZvcm0gdmVjMiB0ZXhlbFNpemU7XG5cblx0XHRcdFxuXG5cdFx0dW5pZm9ybSBpbnQgaW5wdXRFbmNvZGluZztcblx0XHR1bmlmb3JtIGludCBvdXRwdXRFbmNvZGluZztcblxuXHRcdCNpbmNsdWRlIDxlbmNvZGluZ3NfcGFyc19mcmFnbWVudD5cblxuXHRcdHZlYzQgaW5wdXRUZXhlbFRvTGluZWFyKCB2ZWM0IHZhbHVlICkge1xuXG5cdFx0XHRpZiAoIGlucHV0RW5jb2RpbmcgPT0gMCApIHtcblxuXHRcdFx0XHRyZXR1cm4gdmFsdWU7XG5cblx0XHRcdH0gZWxzZSBpZiAoIGlucHV0RW5jb2RpbmcgPT0gMSApIHtcblxuXHRcdFx0XHRyZXR1cm4gc1JHQlRvTGluZWFyKCB2YWx1ZSApO1xuXG5cdFx0XHR9IGVsc2UgaWYgKCBpbnB1dEVuY29kaW5nID09IDIgKSB7XG5cblx0XHRcdFx0cmV0dXJuIFJHQkVUb0xpbmVhciggdmFsdWUgKTtcblxuXHRcdFx0fSBlbHNlIGlmICggaW5wdXRFbmNvZGluZyA9PSAzICkge1xuXG5cdFx0XHRcdHJldHVybiBSR0JNVG9MaW5lYXIoIHZhbHVlLCA3LjAgKTtcblxuXHRcdFx0fSBlbHNlIGlmICggaW5wdXRFbmNvZGluZyA9PSA0ICkge1xuXG5cdFx0XHRcdHJldHVybiBSR0JNVG9MaW5lYXIoIHZhbHVlLCAxNi4wICk7XG5cblx0XHRcdH0gZWxzZSBpZiAoIGlucHV0RW5jb2RpbmcgPT0gNSApIHtcblxuXHRcdFx0XHRyZXR1cm4gUkdCRFRvTGluZWFyKCB2YWx1ZSwgMjU2LjAgKTtcblxuXHRcdFx0fSBlbHNlIHtcblxuXHRcdFx0XHRyZXR1cm4gR2FtbWFUb0xpbmVhciggdmFsdWUsIDIuMiApO1xuXG5cdFx0XHR9XG5cblx0XHR9XG5cblx0XHR2ZWM0IGxpbmVhclRvT3V0cHV0VGV4ZWwoIHZlYzQgdmFsdWUgKSB7XG5cblx0XHRcdGlmICggb3V0cHV0RW5jb2RpbmcgPT0gMCApIHtcblxuXHRcdFx0XHRyZXR1cm4gdmFsdWU7XG5cblx0XHRcdH0gZWxzZSBpZiAoIG91dHB1dEVuY29kaW5nID09IDEgKSB7XG5cblx0XHRcdFx0cmV0dXJuIExpbmVhclRvc1JHQiggdmFsdWUgKTtcblxuXHRcdFx0fSBlbHNlIGlmICggb3V0cHV0RW5jb2RpbmcgPT0gMiApIHtcblxuXHRcdFx0XHRyZXR1cm4gTGluZWFyVG9SR0JFKCB2YWx1ZSApO1xuXG5cdFx0XHR9IGVsc2UgaWYgKCBvdXRwdXRFbmNvZGluZyA9PSAzICkge1xuXG5cdFx0XHRcdHJldHVybiBMaW5lYXJUb1JHQk0oIHZhbHVlLCA3LjAgKTtcblxuXHRcdFx0fSBlbHNlIGlmICggb3V0cHV0RW5jb2RpbmcgPT0gNCApIHtcblxuXHRcdFx0XHRyZXR1cm4gTGluZWFyVG9SR0JNKCB2YWx1ZSwgMTYuMCApO1xuXG5cdFx0XHR9IGVsc2UgaWYgKCBvdXRwdXRFbmNvZGluZyA9PSA1ICkge1xuXG5cdFx0XHRcdHJldHVybiBMaW5lYXJUb1JHQkQoIHZhbHVlLCAyNTYuMCApO1xuXG5cdFx0XHR9IGVsc2Uge1xuXG5cdFx0XHRcdHJldHVybiBMaW5lYXJUb0dhbW1hKCB2YWx1ZSwgMi4yICk7XG5cblx0XHRcdH1cblxuXHRcdH1cblxuXHRcdHZlYzQgZW52TWFwVGV4ZWxUb0xpbmVhciggdmVjNCBjb2xvciApIHtcblxuXHRcdFx0cmV0dXJuIGlucHV0VGV4ZWxUb0xpbmVhciggY29sb3IgKTtcblxuXHRcdH1cblx0XG5cblx0XHRcdCNpbmNsdWRlIDxjb21tb24+XG5cblx0XHRcdHZvaWQgbWFpbigpIHtcblxuXHRcdFx0XHRnbF9GcmFnQ29sb3IgPSB2ZWM0KCAwLjAsIDAuMCwgMC4wLCAxLjAgKTtcblxuXHRcdFx0XHR2ZWMzIG91dHB1dERpcmVjdGlvbiA9IG5vcm1hbGl6ZSggdk91dHB1dERpcmVjdGlvbiApO1xuXHRcdFx0XHR2ZWMyIHV2ID0gZXF1aXJlY3RVdiggb3V0cHV0RGlyZWN0aW9uICk7XG5cblx0XHRcdFx0dmVjMiBmID0gZnJhY3QoIHV2IC8gdGV4ZWxTaXplIC0gMC41ICk7XG5cdFx0XHRcdHV2IC09IGYgKiB0ZXhlbFNpemU7XG5cdFx0XHRcdHZlYzMgdGwgPSBlbnZNYXBUZXhlbFRvTGluZWFyKCB0ZXh0dXJlMkQgKCBlbnZNYXAsIHV2ICkgKS5yZ2I7XG5cdFx0XHRcdHV2LnggKz0gdGV4ZWxTaXplLng7XG5cdFx0XHRcdHZlYzMgdHIgPSBlbnZNYXBUZXhlbFRvTGluZWFyKCB0ZXh0dXJlMkQgKCBlbnZNYXAsIHV2ICkgKS5yZ2I7XG5cdFx0XHRcdHV2LnkgKz0gdGV4ZWxTaXplLnk7XG5cdFx0XHRcdHZlYzMgYnIgPSBlbnZNYXBUZXhlbFRvTGluZWFyKCB0ZXh0dXJlMkQgKCBlbnZNYXAsIHV2ICkgKS5yZ2I7XG5cdFx0XHRcdHV2LnggLT0gdGV4ZWxTaXplLng7XG5cdFx0XHRcdHZlYzMgYmwgPSBlbnZNYXBUZXhlbFRvTGluZWFyKCB0ZXh0dXJlMkQgKCBlbnZNYXAsIHV2ICkgKS5yZ2I7XG5cblx0XHRcdFx0dmVjMyB0bSA9IG1peCggdGwsIHRyLCBmLnggKTtcblx0XHRcdFx0dmVjMyBibSA9IG1peCggYmwsIGJyLCBmLnggKTtcblx0XHRcdFx0Z2xfRnJhZ0NvbG9yLnJnYiA9IG1peCggdG0sIGJtLCBmLnkgKTtcblxuXHRcdFx0XHRnbF9GcmFnQ29sb3IgPSBsaW5lYXJUb091dHB1dFRleGVsKCBnbF9GcmFnQ29sb3IgKTtcblxuXHRcdFx0fVxuXHRcdCIsYmxlbmRpbmc6MCxkZXB0aFRlc3Q6ITEsZGVwdGhXcml0ZTohMX0pfWZ1bmN0aW9uIGskdCgpe3JldHVybiBuZXcgdXF0KHtuYW1lOiJDdWJlbWFwVG9DdWJlVVYiLHVuaWZvcm1zOntlbnZNYXA6e3ZhbHVlOm51bGx9LGlucHV0RW5jb2Rpbmc6e3ZhbHVlOmgkdFszZTNdfSxvdXRwdXRFbmNvZGluZzp7dmFsdWU6aCR0WzNlM119fSx2ZXJ0ZXhTaGFkZXI6IlxuXG5cdFx0cHJlY2lzaW9uIG1lZGl1bXAgZmxvYXQ7XG5cdFx0cHJlY2lzaW9uIG1lZGl1bXAgaW50O1xuXG5cdFx0YXR0cmlidXRlIHZlYzMgcG9zaXRpb247XG5cdFx0YXR0cmlidXRlIHZlYzIgdXY7XG5cdFx0YXR0cmlidXRlIGZsb2F0IGZhY2VJbmRleDtcblxuXHRcdHZhcnlpbmcgdmVjMyB2T3V0cHV0RGlyZWN0aW9uO1xuXG5cdFx0Ly8gUkggY29vcmRpbmF0ZSBzeXN0ZW07IFBNUkVNIGZhY2UtaW5kZXhpbmcgY29udmVudGlvblxuXHRcdHZlYzMgZ2V0RGlyZWN0aW9uKCB2ZWMyIHV2LCBmbG9hdCBmYWNlICkge1xuXG5cdFx0XHR1diA9IDIuMCAqIHV2IC0gMS4wO1xuXG5cdFx0XHR2ZWMzIGRpcmVjdGlvbiA9IHZlYzMoIHV2LCAxLjAgKTtcblxuXHRcdFx0aWYgKCBmYWNlID09IDAuMCApIHtcblxuXHRcdFx0XHRkaXJlY3Rpb24gPSBkaXJlY3Rpb24uenl4OyAvLyAoIDEsIHYsIHUgKSBwb3MgeFxuXG5cdFx0XHR9IGVsc2UgaWYgKCBmYWNlID09IDEuMCApIHtcblxuXHRcdFx0XHRkaXJlY3Rpb24gPSBkaXJlY3Rpb24ueHp5O1xuXHRcdFx0XHRkaXJlY3Rpb24ueHogKj0gLTEuMDsgLy8gKCAtdSwgMSwgLXYgKSBwb3MgeVxuXG5cdFx0XHR9IGVsc2UgaWYgKCBmYWNlID09IDIuMCApIHtcblxuXHRcdFx0XHRkaXJlY3Rpb24ueCAqPSAtMS4wOyAvLyAoIC11LCB2LCAxICkgcG9zIHpcblxuXHRcdFx0fSBlbHNlIGlmICggZmFjZSA9PSAzLjAgKSB7XG5cblx0XHRcdFx0ZGlyZWN0aW9uID0gZGlyZWN0aW9uLnp5eDtcblx0XHRcdFx0ZGlyZWN0aW9uLnh6ICo9IC0xLjA7IC8vICggLTEsIHYsIC11ICkgbmVnIHhcblxuXHRcdFx0fSBlbHNlIGlmICggZmFjZSA9PSA0LjAgKSB7XG5cblx0XHRcdFx0ZGlyZWN0aW9uID0gZGlyZWN0aW9uLnh6eTtcblx0XHRcdFx0ZGlyZWN0aW9uLnh5ICo9IC0xLjA7IC8vICggLXUsIC0xLCB2ICkgbmVnIHlcblxuXHRcdFx0fSBlbHNlIGlmICggZmFjZSA9PSA1LjAgKSB7XG5cblx0XHRcdFx0ZGlyZWN0aW9uLnogKj0gLTEuMDsgLy8gKCB1LCB2LCAtMSApIG5lZyB6XG5cblx0XHRcdH1cblxuXHRcdFx0cmV0dXJuIGRpcmVjdGlvbjtcblxuXHRcdH1cblxuXHRcdHZvaWQgbWFpbigpIHtcblxuXHRcdFx0dk91dHB1dERpcmVjdGlvbiA9IGdldERpcmVjdGlvbiggdXYsIGZhY2VJbmRleCApO1xuXHRcdFx0Z2xfUG9zaXRpb24gPSB2ZWM0KCBwb3NpdGlvbiwgMS4wICk7XG5cblx0XHR9XG5cdCIsZnJhZ21lbnRTaGFkZXI6IlxuXG5cdFx0XHRwcmVjaXNpb24gbWVkaXVtcCBmbG9hdDtcblx0XHRcdHByZWNpc2lvbiBtZWRpdW1wIGludDtcblxuXHRcdFx0dmFyeWluZyB2ZWMzIHZPdXRwdXREaXJlY3Rpb247XG5cblx0XHRcdHVuaWZvcm0gc2FtcGxlckN1YmUgZW52TWFwO1xuXG5cdFx0XHRcblxuXHRcdHVuaWZvcm0gaW50IGlucHV0RW5jb2Rpbmc7XG5cdFx0dW5pZm9ybSBpbnQgb3V0cHV0RW5jb2Rpbmc7XG5cblx0XHQjaW5jbHVkZSA8ZW5jb2RpbmdzX3BhcnNfZnJhZ21lbnQ+XG5cblx0XHR2ZWM0IGlucHV0VGV4ZWxUb0xpbmVhciggdmVjNCB2YWx1ZSApIHtcblxuXHRcdFx0aWYgKCBpbnB1dEVuY29kaW5nID09IDAgKSB7XG5cblx0XHRcdFx0cmV0dXJuIHZhbHVlO1xuXG5cdFx0XHR9IGVsc2UgaWYgKCBpbnB1dEVuY29kaW5nID09IDEgKSB7XG5cblx0XHRcdFx0cmV0dXJuIHNSR0JUb0xpbmVhciggdmFsdWUgKTtcblxuXHRcdFx0fSBlbHNlIGlmICggaW5wdXRFbmNvZGluZyA9PSAyICkge1xuXG5cdFx0XHRcdHJldHVybiBSR0JFVG9MaW5lYXIoIHZhbHVlICk7XG5cblx0XHRcdH0gZWxzZSBpZiAoIGlucHV0RW5jb2RpbmcgPT0gMyApIHtcblxuXHRcdFx0XHRyZXR1cm4gUkdCTVRvTGluZWFyKCB2YWx1ZSwgNy4wICk7XG5cblx0XHRcdH0gZWxzZSBpZiAoIGlucHV0RW5jb2RpbmcgPT0gNCApIHtcblxuXHRcdFx0XHRyZXR1cm4gUkdCTVRvTGluZWFyKCB2YWx1ZSwgMTYuMCApO1xuXG5cdFx0XHR9IGVsc2UgaWYgKCBpbnB1dEVuY29kaW5nID09IDUgKSB7XG5cblx0XHRcdFx0cmV0dXJuIFJHQkRUb0xpbmVhciggdmFsdWUsIDI1Ni4wICk7XG5cblx0XHRcdH0gZWxzZSB7XG5cblx0XHRcdFx0cmV0dXJuIEdhbW1hVG9MaW5lYXIoIHZhbHVlLCAyLjIgKTtcblxuXHRcdFx0fVxuXG5cdFx0fVxuXG5cdFx0dmVjNCBsaW5lYXJUb091dHB1dFRleGVsKCB2ZWM0IHZhbHVlICkge1xuXG5cdFx0XHRpZiAoIG91dHB1dEVuY29kaW5nID09IDAgKSB7XG5cblx0XHRcdFx0cmV0dXJuIHZhbHVlO1xuXG5cdFx0XHR9IGVsc2UgaWYgKCBvdXRwdXRFbmNvZGluZyA9PSAxICkge1xuXG5cdFx0XHRcdHJldHVybiBMaW5lYXJUb3NSR0IoIHZhbHVlICk7XG5cblx0XHRcdH0gZWxzZSBpZiAoIG91dHB1dEVuY29kaW5nID09IDIgKSB7XG5cblx0XHRcdFx0cmV0dXJuIExpbmVhclRvUkdCRSggdmFsdWUgKTtcblxuXHRcdFx0fSBlbHNlIGlmICggb3V0cHV0RW5jb2RpbmcgPT0gMyApIHtcblxuXHRcdFx0XHRyZXR1cm4gTGluZWFyVG9SR0JNKCB2YWx1ZSwgNy4wICk7XG5cblx0XHRcdH0gZWxzZSBpZiAoIG91dHB1dEVuY29kaW5nID09IDQgKSB7XG5cblx0XHRcdFx0cmV0dXJuIExpbmVhclRvUkdCTSggdmFsdWUsIDE2LjAgKTtcblxuXHRcdFx0fSBlbHNlIGlmICggb3V0cHV0RW5jb2RpbmcgPT0gNSApIHtcblxuXHRcdFx0XHRyZXR1cm4gTGluZWFyVG9SR0JEKCB2YWx1ZSwgMjU2LjAgKTtcblxuXHRcdFx0fSBlbHNlIHtcblxuXHRcdFx0XHRyZXR1cm4gTGluZWFyVG9HYW1tYSggdmFsdWUsIDIuMiApO1xuXG5cdFx0XHR9XG5cblx0XHR9XG5cblx0XHR2ZWM0IGVudk1hcFRleGVsVG9MaW5lYXIoIHZlYzQgY29sb3IgKSB7XG5cblx0XHRcdHJldHVybiBpbnB1dFRleGVsVG9MaW5lYXIoIGNvbG9yICk7XG5cblx0XHR9XG5cdFxuXG5cdFx0XHR2b2lkIG1haW4oKSB7XG5cblx0XHRcdFx0Z2xfRnJhZ0NvbG9yID0gdmVjNCggMC4wLCAwLjAsIDAuMCwgMS4wICk7XG5cdFx0XHRcdGdsX0ZyYWdDb2xvci5yZ2IgPSBlbnZNYXBUZXhlbFRvTGluZWFyKCB0ZXh0dXJlQ3ViZSggZW52TWFwLCB2ZWMzKCAtIHZPdXRwdXREaXJlY3Rpb24ueCwgdk91dHB1dERpcmVjdGlvbi55eiApICkgKS5yZ2I7XG5cdFx0XHRcdGdsX0ZyYWdDb2xvciA9IGxpbmVhclRvT3V0cHV0VGV4ZWwoIGdsX0ZyYWdDb2xvciApO1xuXG5cdFx0XHR9XG5cdFx0IixibGVuZGluZzowLGRlcHRoVGVzdDohMSxkZXB0aFdyaXRlOiExfSl9ZnVuY3Rpb24gTCR0KHQpe2NvbnNvbGUud2FybigiVEhSRUUuQ2xvc2VkU3BsaW5lQ3VydmUzIGhhcyBiZWVuIGRlcHJlY2F0ZWQuIFVzZSBUSFJFRS5DYXRtdWxsUm9tQ3VydmUzIGluc3RlYWQuIiksZVl0LmNhbGwodGhpcyx0KSx0aGlzLnR5cGU9ImNhdG11bGxyb20iLHRoaXMuY2xvc2VkPSEwfWZ1bmN0aW9uIFAkdCh0KXtjb25zb2xlLndhcm4oIlRIUkVFLlNwbGluZUN1cnZlMyBoYXMgYmVlbiBkZXByZWNhdGVkLiBVc2UgVEhSRUUuQ2F0bXVsbFJvbUN1cnZlMyBpbnN0ZWFkLiIpLGVZdC5jYWxsKHRoaXMsdCksdGhpcy50eXBlPSJjYXRtdWxscm9tIn1mdW5jdGlvbiBJJHQodCl7Y29uc29sZS53YXJuKCJUSFJFRS5TcGxpbmUgaGFzIGJlZW4gcmVtb3ZlZC4gVXNlIFRIUkVFLkNhdG11bGxSb21DdXJ2ZTMgaW5zdGVhZC4iKSxlWXQuY2FsbCh0aGlzLHQpLHRoaXMudHlwZT0iY2F0bXVsbHJvbSJ9WXF0LmNyZWF0ZT1mdW5jdGlvbih0LGUpe3JldHVybiBjb25zb2xlLmxvZygiVEhSRUUuQ3VydmUuY3JlYXRlKCkgaGFzIGJlZW4gZGVwcmVjYXRlZCIpLHQucHJvdG90eXBlPU9iamVjdC5jcmVhdGUoWXF0LnByb3RvdHlwZSksdC5wcm90b3R5cGUuY29uc3RydWN0b3I9dCx0LnByb3RvdHlwZS5nZXRQb2ludD1lLHR9LE9iamVjdC5hc3NpZ24oZll0LnByb3RvdHlwZSx7ZnJvbVBvaW50czpmdW5jdGlvbih0KXtyZXR1cm4gY29uc29sZS53YXJuKCJUSFJFRS5QYXRoOiAuZnJvbVBvaW50cygpIGhhcyBiZWVuIHJlbmFtZWQgdG8gLnNldEZyb21Qb2ludHMoKS4iKSx0aGlzLnNldEZyb21Qb2ludHModCl9fSksTCR0LnByb3RvdHlwZT1PYmplY3QuY3JlYXRlKGVZdC5wcm90b3R5cGUpLFAkdC5wcm90b3R5cGU9T2JqZWN0LmNyZWF0ZShlWXQucHJvdG90eXBlKSxJJHQucHJvdG90eXBlPU9iamVjdC5jcmVhdGUoZVl0LnByb3RvdHlwZSksT2JqZWN0LmFzc2lnbihJJHQucHJvdG90eXBlLHtpbml0RnJvbUFycmF5OmZ1bmN0aW9uKCl7Y29uc29sZS5lcnJvcigiVEhSRUUuU3BsaW5lOiAuaW5pdEZyb21BcnJheSgpIGhhcyBiZWVuIHJlbW92ZWQuIil9LGdldENvbnRyb2xQb2ludHNBcnJheTpmdW5jdGlvbigpe2NvbnNvbGUuZXJyb3IoIlRIUkVFLlNwbGluZTogLmdldENvbnRyb2xQb2ludHNBcnJheSgpIGhhcyBiZWVuIHJlbW92ZWQuIil9LHJlcGFyYW1ldHJpemVCeUFyY0xlbmd0aDpmdW5jdGlvbigpe2NvbnNvbGUuZXJyb3IoIlRIUkVFLlNwbGluZTogLnJlcGFyYW1ldHJpemVCeUFyY0xlbmd0aCgpIGhhcyBiZWVuIHJlbW92ZWQuIil9fSkscVh0LnByb3RvdHlwZS5zZXRDb2xvcnM9ZnVuY3Rpb24oKXtjb25zb2xlLmVycm9yKCJUSFJFRS5HcmlkSGVscGVyOiBzZXRDb2xvcnMoKSBoYXMgYmVlbiBkZXByZWNhdGVkLCBwYXNzIHRoZW0gaW4gdGhlIGNvbnN0cnVjdG9yIGluc3RlYWQuIil9LFZYdC5wcm90b3R5cGUudXBkYXRlPWZ1bmN0aW9uKCl7Y29uc29sZS5lcnJvcigiVEhSRUUuU2tlbGV0b25IZWxwZXI6IHVwZGF0ZSgpIG5vIGxvbmdlciBuZWVkcyB0byBiZSBjYWxsZWQuIil9LE9iamVjdC5hc3NpZ24oQnF0LnByb3RvdHlwZSx7ZXh0cmFjdFVybEJhc2U6ZnVuY3Rpb24odCl7cmV0dXJuIGNvbnNvbGUud2FybigiVEhSRUUuTG9hZGVyOiAuZXh0cmFjdFVybEJhc2UoKSBoYXMgYmVlbiBkZXByZWNhdGVkLiBVc2UgVEhSRUUuTG9hZGVyVXRpbHMuZXh0cmFjdFVybEJhc2UoKSBpbnN0ZWFkLiIpLFBZdC5leHRyYWN0VXJsQmFzZSh0KX19KSxCcXQuSGFuZGxlcnM9e2FkZDpmdW5jdGlvbigpe2NvbnNvbGUuZXJyb3IoIlRIUkVFLkxvYWRlcjogSGFuZGxlcnMuYWRkKCkgaGFzIGJlZW4gcmVtb3ZlZC4gVXNlIExvYWRpbmdNYW5hZ2VyLmFkZEhhbmRsZXIoKSBpbnN0ZWFkLiIpfSxnZXQ6ZnVuY3Rpb24oKXtjb25zb2xlLmVycm9yKCJUSFJFRS5Mb2FkZXI6IEhhbmRsZXJzLmdldCgpIGhhcyBiZWVuIHJlbW92ZWQuIFVzZSBMb2FkaW5nTWFuYWdlci5nZXRIYW5kbGVyKCkgaW5zdGVhZC4iKX19LE9iamVjdC5hc3NpZ24oSVh0LnByb3RvdHlwZSx7Y2VudGVyOmZ1bmN0aW9uKHQpe3JldHVybiBjb25zb2xlLndhcm4oIlRIUkVFLkJveDI6IC5jZW50ZXIoKSBoYXMgYmVlbiByZW5hbWVkIHRvIC5nZXRDZW50ZXIoKS4iKSx0aGlzLmdldENlbnRlcih0KX0sZW1wdHk6ZnVuY3Rpb24oKXtyZXR1cm4gY29uc29sZS53YXJuKCJUSFJFRS5Cb3gyOiAuZW1wdHkoKSBoYXMgYmVlbiByZW5hbWVkIHRvIC5pc0VtcHR5KCkuIiksdGhpcy5pc0VtcHR5KCl9LGlzSW50ZXJzZWN0aW9uQm94OmZ1bmN0aW9uKHQpe3JldHVybiBjb25zb2xlLndhcm4oIlRIUkVFLkJveDI6IC5pc0ludGVyc2VjdGlvbkJveCgpIGhhcyBiZWVuIHJlbmFtZWQgdG8gLmludGVyc2VjdHNCb3goKS4iKSx0aGlzLmludGVyc2VjdHNCb3godCl9LHNpemU6ZnVuY3Rpb24odCl7cmV0dXJuIGNvbnNvbGUud2FybigiVEhSRUUuQm94MjogLnNpemUoKSBoYXMgYmVlbiByZW5hbWVkIHRvIC5nZXRTaXplKCkuIiksdGhpcy5nZXRTaXplKHQpfX0pLE9iamVjdC5hc3NpZ24oeEh0LnByb3RvdHlwZSx7Y2VudGVyOmZ1bmN0aW9uKHQpe3JldHVybiBjb25zb2xlLndhcm4oIlRIUkVFLkJveDM6IC5jZW50ZXIoKSBoYXMgYmVlbiByZW5hbWVkIHRvIC5nZXRDZW50ZXIoKS4iKSx0aGlzLmdldENlbnRlcih0KX0sZW1wdHk6ZnVuY3Rpb24oKXtyZXR1cm4gY29uc29sZS53YXJuKCJUSFJFRS5Cb3gzOiAuZW1wdHkoKSBoYXMgYmVlbiByZW5hbWVkIHRvIC5pc0VtcHR5KCkuIiksdGhpcy5pc0VtcHR5KCl9LGlzSW50ZXJzZWN0aW9uQm94OmZ1bmN0aW9uKHQpe3JldHVybiBjb25zb2xlLndhcm4oIlRIUkVFLkJveDM6IC5pc0ludGVyc2VjdGlvbkJveCgpIGhhcyBiZWVuIHJlbmFtZWQgdG8gLmludGVyc2VjdHNCb3goKS4iKSx0aGlzLmludGVyc2VjdHNCb3godCl9LGlzSW50ZXJzZWN0aW9uU3BoZXJlOmZ1bmN0aW9uKHQpe3JldHVybiBjb25zb2xlLndhcm4oIlRIUkVFLkJveDM6IC5pc0ludGVyc2VjdGlvblNwaGVyZSgpIGhhcyBiZWVuIHJlbmFtZWQgdG8gLmludGVyc2VjdHNTcGhlcmUoKS4iKSx0aGlzLmludGVyc2VjdHNTcGhlcmUodCl9LHNpemU6ZnVuY3Rpb24odCl7cmV0dXJuIGNvbnNvbGUud2FybigiVEhSRUUuQm94MzogLnNpemUoKSBoYXMgYmVlbiByZW5hbWVkIHRvIC5nZXRTaXplKCkuIiksdGhpcy5nZXRTaXplKHQpfX0pLE9iamVjdC5hc3NpZ24oREh0LnByb3RvdHlwZSx7ZW1wdHk6ZnVuY3Rpb24oKXtyZXR1cm4gY29uc29sZS53YXJuKCJUSFJFRS5TcGhlcmU6IC5lbXB0eSgpIGhhcyBiZWVuIHJlbmFtZWQgdG8gLmlzRW1wdHkoKS4iKSx0aGlzLmlzRW1wdHkoKX19KSxZVnQucHJvdG90eXBlLnNldEZyb21NYXRyaXg9ZnVuY3Rpb24odCl7cmV0dXJuIGNvbnNvbGUud2FybigiVEhSRUUuRnJ1c3R1bTogLnNldEZyb21NYXRyaXgoKSBoYXMgYmVlbiByZW5hbWVkIHRvIC5zZXRGcm9tUHJvamVjdGlvbk1hdHJpeCgpLiIpLHRoaXMuc2V0RnJvbVByb2plY3Rpb25NYXRyaXgodCl9LFJYdC5wcm90b3R5cGUuY2VudGVyPWZ1bmN0aW9uKHQpe3JldHVybiBjb25zb2xlLndhcm4oIlRIUkVFLkxpbmUzOiAuY2VudGVyKCkgaGFzIGJlZW4gcmVuYW1lZCB0byAuZ2V0Q2VudGVyKCkuIiksdGhpcy5nZXRDZW50ZXIodCl9LE9iamVjdC5hc3NpZ24oc0h0LHtyYW5kb20xNjpmdW5jdGlvbigpe3JldHVybiBjb25zb2xlLndhcm4oIlRIUkVFLk1hdGg6IC5yYW5kb20xNigpIGhhcyBiZWVuIGRlcHJlY2F0ZWQuIFVzZSBNYXRoLnJhbmRvbSgpIGluc3RlYWQuIiksTWF0aC5yYW5kb20oKX0sbmVhcmVzdFBvd2VyT2ZUd286ZnVuY3Rpb24odCl7cmV0dXJuIGNvbnNvbGUud2FybigiVEhSRUUuTWF0aDogLm5lYXJlc3RQb3dlck9mVHdvKCkgaGFzIGJlZW4gcmVuYW1lZCB0byAuZmxvb3JQb3dlck9mVHdvKCkuIiksc0h0LmZsb29yUG93ZXJPZlR3byh0KX0sbmV4dFBvd2VyT2ZUd286ZnVuY3Rpb24odCl7cmV0dXJuIGNvbnNvbGUud2FybigiVEhSRUUuTWF0aDogLm5leHRQb3dlck9mVHdvKCkgaGFzIGJlZW4gcmVuYW1lZCB0byAuY2VpbFBvd2VyT2ZUd28oKS4iKSxzSHQuY2VpbFBvd2VyT2ZUd28odCl9fSksT2JqZWN0LmFzc2lnbihjSHQucHJvdG90eXBlLHtmbGF0dGVuVG9BcnJheU9mZnNldDpmdW5jdGlvbih0LGUpe3JldHVybiBjb25zb2xlLndhcm4oIlRIUkVFLk1hdHJpeDM6IC5mbGF0dGVuVG9BcnJheU9mZnNldCgpIGhhcyBiZWVuIGRlcHJlY2F0ZWQuIFVzZSAudG9BcnJheSgpIGluc3RlYWQuIiksdGhpcy50b0FycmF5KHQsZSl9LG11bHRpcGx5VmVjdG9yMzpmdW5jdGlvbih0KXtyZXR1cm4gY29uc29sZS53YXJuKCJUSFJFRS5NYXRyaXgzOiAubXVsdGlwbHlWZWN0b3IzKCkgaGFzIGJlZW4gcmVtb3ZlZC4gVXNlIHZlY3Rvci5hcHBseU1hdHJpeDMoIG1hdHJpeCApIGluc3RlYWQuIiksdC5hcHBseU1hdHJpeDModGhpcyl9LG11bHRpcGx5VmVjdG9yM0FycmF5OmZ1bmN0aW9uKCl7Y29uc29sZS5lcnJvcigiVEhSRUUuTWF0cml4MzogLm11bHRpcGx5VmVjdG9yM0FycmF5KCkgaGFzIGJlZW4gcmVtb3ZlZC4iKX0sYXBwbHlUb0J1ZmZlckF0dHJpYnV0ZTpmdW5jdGlvbih0KXtyZXR1cm4gY29uc29sZS53YXJuKCJUSFJFRS5NYXRyaXgzOiAuYXBwbHlUb0J1ZmZlckF0dHJpYnV0ZSgpIGhhcyBiZWVuIHJlbW92ZWQuIFVzZSBhdHRyaWJ1dGUuYXBwbHlNYXRyaXgzKCBtYXRyaXggKSBpbnN0ZWFkLiIpLHQuYXBwbHlNYXRyaXgzKHRoaXMpfSxhcHBseVRvVmVjdG9yM0FycmF5OmZ1bmN0aW9uKCl7Y29uc29sZS5lcnJvcigiVEhSRUUuTWF0cml4MzogLmFwcGx5VG9WZWN0b3IzQXJyYXkoKSBoYXMgYmVlbiByZW1vdmVkLiIpfSxnZXRJbnZlcnNlOmZ1bmN0aW9uKHQpe3JldHVybiBjb25zb2xlLndhcm4oIlRIUkVFLk1hdHJpeDM6IC5nZXRJbnZlcnNlKCkgaGFzIGJlZW4gcmVtb3ZlZC4gVXNlIG1hdHJpeEludi5jb3B5KCBtYXRyaXggKS5pbnZlcnQoKTsgaW5zdGVhZC4iKSx0aGlzLmNvcHkodCkuaW52ZXJ0KCl9fSksT2JqZWN0LmFzc2lnbihxSHQucHJvdG90eXBlLHtleHRyYWN0UG9zaXRpb246ZnVuY3Rpb24odCl7cmV0dXJuIGNvbnNvbGUud2FybigiVEhSRUUuTWF0cml4NDogLmV4dHJhY3RQb3NpdGlvbigpIGhhcyBiZWVuIHJlbmFtZWQgdG8gLmNvcHlQb3NpdGlvbigpLiIpLHRoaXMuY29weVBvc2l0aW9uKHQpfSxmbGF0dGVuVG9BcnJheU9mZnNldDpmdW5jdGlvbih0LGUpe3JldHVybiBjb25zb2xlLndhcm4oIlRIUkVFLk1hdHJpeDQ6IC5mbGF0dGVuVG9BcnJheU9mZnNldCgpIGhhcyBiZWVuIGRlcHJlY2F0ZWQuIFVzZSAudG9BcnJheSgpIGluc3RlYWQuIiksdGhpcy50b0FycmF5KHQsZSl9LGdldFBvc2l0aW9uOmZ1bmN0aW9uKCl7cmV0dXJuIGNvbnNvbGUud2FybigiVEhSRUUuTWF0cml4NDogLmdldFBvc2l0aW9uKCkgaGFzIGJlZW4gcmVtb3ZlZC4gVXNlIFZlY3RvcjMuc2V0RnJvbU1hdHJpeFBvc2l0aW9uKCBtYXRyaXggKSBpbnN0ZWFkLiIpLChuZXcgeUh0KS5zZXRGcm9tTWF0cml4Q29sdW1uKHRoaXMsMyl9LHNldFJvdGF0aW9uRnJvbVF1YXRlcm5pb246ZnVuY3Rpb24odCl7cmV0dXJuIGNvbnNvbGUud2FybigiVEhSRUUuTWF0cml4NDogLnNldFJvdGF0aW9uRnJvbVF1YXRlcm5pb24oKSBoYXMgYmVlbiByZW5hbWVkIHRvIC5tYWtlUm90YXRpb25Gcm9tUXVhdGVybmlvbigpLiIpLHRoaXMubWFrZVJvdGF0aW9uRnJvbVF1YXRlcm5pb24odCl9LG11bHRpcGx5VG9BcnJheTpmdW5jdGlvbigpe2NvbnNvbGUud2FybigiVEhSRUUuTWF0cml4NDogLm11bHRpcGx5VG9BcnJheSgpIGhhcyBiZWVuIHJlbW92ZWQuIil9LG11bHRpcGx5VmVjdG9yMzpmdW5jdGlvbih0KXtyZXR1cm4gY29uc29sZS53YXJuKCJUSFJFRS5NYXRyaXg0OiAubXVsdGlwbHlWZWN0b3IzKCkgaGFzIGJlZW4gcmVtb3ZlZC4gVXNlIHZlY3Rvci5hcHBseU1hdHJpeDQoIG1hdHJpeCApIGluc3RlYWQuIiksdC5hcHBseU1hdHJpeDQodGhpcyl9LG11bHRpcGx5VmVjdG9yNDpmdW5jdGlvbih0KXtyZXR1cm4gY29uc29sZS53YXJuKCJUSFJFRS5NYXRyaXg0OiAubXVsdGlwbHlWZWN0b3I0KCkgaGFzIGJlZW4gcmVtb3ZlZC4gVXNlIHZlY3Rvci5hcHBseU1hdHJpeDQoIG1hdHJpeCApIGluc3RlYWQuIiksdC5hcHBseU1hdHJpeDQodGhpcyl9LG11bHRpcGx5VmVjdG9yM0FycmF5OmZ1bmN0aW9uKCl7Y29uc29sZS5lcnJvcigiVEhSRUUuTWF0cml4NDogLm11bHRpcGx5VmVjdG9yM0FycmF5KCkgaGFzIGJlZW4gcmVtb3ZlZC4iKX0scm90YXRlQXhpczpmdW5jdGlvbih0KXtjb25zb2xlLndhcm4oIlRIUkVFLk1hdHJpeDQ6IC5yb3RhdGVBeGlzKCkgaGFzIGJlZW4gcmVtb3ZlZC4gVXNlIFZlY3RvcjMudHJhbnNmb3JtRGlyZWN0aW9uKCBtYXRyaXggKSBpbnN0ZWFkLiIpLHQudHJhbnNmb3JtRGlyZWN0aW9uKHRoaXMpfSxjcm9zc1ZlY3RvcjpmdW5jdGlvbih0KXtyZXR1cm4gY29uc29sZS53YXJuKCJUSFJFRS5NYXRyaXg0OiAuY3Jvc3NWZWN0b3IoKSBoYXMgYmVlbiByZW1vdmVkLiBVc2UgdmVjdG9yLmFwcGx5TWF0cml4NCggbWF0cml4ICkgaW5zdGVhZC4iKSx0LmFwcGx5TWF0cml4NCh0aGlzKX0sdHJhbnNsYXRlOmZ1bmN0aW9uKCl7Y29uc29sZS5lcnJvcigiVEhSRUUuTWF0cml4NDogLnRyYW5zbGF0ZSgpIGhhcyBiZWVuIHJlbW92ZWQuIil9LHJvdGF0ZVg6ZnVuY3Rpb24oKXtjb25zb2xlLmVycm9yKCJUSFJFRS5NYXRyaXg0OiAucm90YXRlWCgpIGhhcyBiZWVuIHJlbW92ZWQuIil9LHJvdGF0ZVk6ZnVuY3Rpb24oKXtjb25zb2xlLmVycm9yKCJUSFJFRS5NYXRyaXg0OiAucm90YXRlWSgpIGhhcyBiZWVuIHJlbW92ZWQuIil9LHJvdGF0ZVo6ZnVuY3Rpb24oKXtjb25zb2xlLmVycm9yKCJUSFJFRS5NYXRyaXg0OiAucm90YXRlWigpIGhhcyBiZWVuIHJlbW92ZWQuIil9LHJvdGF0ZUJ5QXhpczpmdW5jdGlvbigpe2NvbnNvbGUuZXJyb3IoIlRIUkVFLk1hdHJpeDQ6IC5yb3RhdGVCeUF4aXMoKSBoYXMgYmVlbiByZW1vdmVkLiIpfSxhcHBseVRvQnVmZmVyQXR0cmlidXRlOmZ1bmN0aW9uKHQpe3JldHVybiBjb25zb2xlLndhcm4oIlRIUkVFLk1hdHJpeDQ6IC5hcHBseVRvQnVmZmVyQXR0cmlidXRlKCkgaGFzIGJlZW4gcmVtb3ZlZC4gVXNlIGF0dHJpYnV0ZS5hcHBseU1hdHJpeDQoIG1hdHJpeCApIGluc3RlYWQuIiksdC5hcHBseU1hdHJpeDQodGhpcyl9LGFwcGx5VG9WZWN0b3IzQXJyYXk6ZnVuY3Rpb24oKXtjb25zb2xlLmVycm9yKCJUSFJFRS5NYXRyaXg0OiAuYXBwbHlUb1ZlY3RvcjNBcnJheSgpIGhhcyBiZWVuIHJlbW92ZWQuIil9LG1ha2VGcnVzdHVtOmZ1bmN0aW9uKHQsZSxuLGkscixvKXtyZXR1cm4gY29uc29sZS53YXJuKCJUSFJFRS5NYXRyaXg0OiAubWFrZUZydXN0dW0oKSBoYXMgYmVlbiByZW1vdmVkLiBVc2UgLm1ha2VQZXJzcGVjdGl2ZSggbGVmdCwgcmlnaHQsIHRvcCwgYm90dG9tLCBuZWFyLCBmYXIgKSBpbnN0ZWFkLiIpLHRoaXMubWFrZVBlcnNwZWN0aXZlKHQsZSxpLG4scixvKX0sZ2V0SW52ZXJzZTpmdW5jdGlvbih0KXtyZXR1cm4gY29uc29sZS53YXJuKCJUSFJFRS5NYXRyaXg0OiAuZ2V0SW52ZXJzZSgpIGhhcyBiZWVuIHJlbW92ZWQuIFVzZSBtYXRyaXhJbnYuY29weSggbWF0cml4ICkuaW52ZXJ0KCk7IGluc3RlYWQuIiksdGhpcy5jb3B5KHQpLmludmVydCgpfX0pLHhGdC5wcm90b3R5cGUuaXNJbnRlcnNlY3Rpb25MaW5lPWZ1bmN0aW9uKHQpe3JldHVybiBjb25zb2xlLndhcm4oIlRIUkVFLlBsYW5lOiAuaXNJbnRlcnNlY3Rpb25MaW5lKCkgaGFzIGJlZW4gcmVuYW1lZCB0byAuaW50ZXJzZWN0c0xpbmUoKS4iKSx0aGlzLmludGVyc2VjdHNMaW5lKHQpfSxPYmplY3QuYXNzaWduKF9IdC5wcm90b3R5cGUse211bHRpcGx5VmVjdG9yMzpmdW5jdGlvbih0KXtyZXR1cm4gY29uc29sZS53YXJuKCJUSFJFRS5RdWF0ZXJuaW9uOiAubXVsdGlwbHlWZWN0b3IzKCkgaGFzIGJlZW4gcmVtb3ZlZC4gVXNlIGlzIG5vdyB2ZWN0b3IuYXBwbHlRdWF0ZXJuaW9uKCBxdWF0ZXJuaW9uICkgaW5zdGVhZC4iKSx0LmFwcGx5UXVhdGVybmlvbih0aGlzKX0saW52ZXJzZTpmdW5jdGlvbigpe3JldHVybiBjb25zb2xlLndhcm4oIlRIUkVFLlF1YXRlcm5pb246IC5pbnZlcnNlKCkgaGFzIGJlZW4gcmVuYW1lZCB0byBpbnZlcnQoKS4iKSx0aGlzLmludmVydCgpfX0pLE9iamVjdC5hc3NpZ24oV0h0LnByb3RvdHlwZSx7aXNJbnRlcnNlY3Rpb25Cb3g6ZnVuY3Rpb24odCl7cmV0dXJuIGNvbnNvbGUud2FybigiVEhSRUUuUmF5OiAuaXNJbnRlcnNlY3Rpb25Cb3goKSBoYXMgYmVlbiByZW5hbWVkIHRvIC5pbnRlcnNlY3RzQm94KCkuIiksdGhpcy5pbnRlcnNlY3RzQm94KHQpfSxpc0ludGVyc2VjdGlvblBsYW5lOmZ1bmN0aW9uKHQpe3JldHVybiBjb25zb2xlLndhcm4oIlRIUkVFLlJheTogLmlzSW50ZXJzZWN0aW9uUGxhbmUoKSBoYXMgYmVlbiByZW5hbWVkIHRvIC5pbnRlcnNlY3RzUGxhbmUoKS4iKSx0aGlzLmludGVyc2VjdHNQbGFuZSh0KX0saXNJbnRlcnNlY3Rpb25TcGhlcmU6ZnVuY3Rpb24odCl7cmV0dXJuIGNvbnNvbGUud2FybigiVEhSRUUuUmF5OiAuaXNJbnRlcnNlY3Rpb25TcGhlcmUoKSBoYXMgYmVlbiByZW5hbWVkIHRvIC5pbnRlcnNlY3RzU3BoZXJlKCkuIiksdGhpcy5pbnRlcnNlY3RzU3BoZXJlKHQpfX0pLE9iamVjdC5hc3NpZ24oSUZ0LnByb3RvdHlwZSx7YXJlYTpmdW5jdGlvbigpe3JldHVybiBjb25zb2xlLndhcm4oIlRIUkVFLlRyaWFuZ2xlOiAuYXJlYSgpIGhhcyBiZWVuIHJlbmFtZWQgdG8gLmdldEFyZWEoKS4iKSx0aGlzLmdldEFyZWEoKX0sYmFyeWNvb3JkRnJvbVBvaW50OmZ1bmN0aW9uKHQsZSl7cmV0dXJuIGNvbnNvbGUud2FybigiVEhSRUUuVHJpYW5nbGU6IC5iYXJ5Y29vcmRGcm9tUG9pbnQoKSBoYXMgYmVlbiByZW5hbWVkIHRvIC5nZXRCYXJ5Y29vcmQoKS4iKSx0aGlzLmdldEJhcnljb29yZCh0LGUpfSxtaWRwb2ludDpmdW5jdGlvbih0KXtyZXR1cm4gY29uc29sZS53YXJuKCJUSFJFRS5UcmlhbmdsZTogLm1pZHBvaW50KCkgaGFzIGJlZW4gcmVuYW1lZCB0byAuZ2V0TWlkcG9pbnQoKS4iKSx0aGlzLmdldE1pZHBvaW50KHQpfSxub3JtYWw6ZnVuY3Rpb24odCl7cmV0dXJuIGNvbnNvbGUud2FybigiVEhSRUUuVHJpYW5nbGU6IC5ub3JtYWwoKSBoYXMgYmVlbiByZW5hbWVkIHRvIC5nZXROb3JtYWwoKS4iKSx0aGlzLmdldE5vcm1hbCh0KX0scGxhbmU6ZnVuY3Rpb24odCl7cmV0dXJuIGNvbnNvbGUud2FybigiVEhSRUUuVHJpYW5nbGU6IC5wbGFuZSgpIGhhcyBiZWVuIHJlbmFtZWQgdG8gLmdldFBsYW5lKCkuIiksdGhpcy5nZXRQbGFuZSh0KX19KSxPYmplY3QuYXNzaWduKElGdCx7YmFyeWNvb3JkRnJvbVBvaW50OmZ1bmN0aW9uKHQsZSxuLGkscil7cmV0dXJuIGNvbnNvbGUud2FybigiVEhSRUUuVHJpYW5nbGU6IC5iYXJ5Y29vcmRGcm9tUG9pbnQoKSBoYXMgYmVlbiByZW5hbWVkIHRvIC5nZXRCYXJ5Y29vcmQoKS4iKSxJRnQuZ2V0QmFyeWNvb3JkKHQsZSxuLGkscil9LG5vcm1hbDpmdW5jdGlvbih0LGUsbixpKXtyZXR1cm4gY29uc29sZS53YXJuKCJUSFJFRS5UcmlhbmdsZTogLm5vcm1hbCgpIGhhcyBiZWVuIHJlbmFtZWQgdG8gLmdldE5vcm1hbCgpLiIpLElGdC5nZXROb3JtYWwodCxlLG4saSl9fSksT2JqZWN0LmFzc2lnbihtWXQucHJvdG90eXBlLHtleHRyYWN0QWxsUG9pbnRzOmZ1bmN0aW9uKHQpe3JldHVybiBjb25zb2xlLndhcm4oIlRIUkVFLlNoYXBlOiAuZXh0cmFjdEFsbFBvaW50cygpIGhhcyBiZWVuIHJlbW92ZWQuIFVzZSAuZXh0cmFjdFBvaW50cygpIGluc3RlYWQuIiksdGhpcy5leHRyYWN0UG9pbnRzKHQpfSxleHRydWRlOmZ1bmN0aW9uKHQpe3JldHVybiBjb25zb2xlLndhcm4oIlRIUkVFLlNoYXBlOiAuZXh0cnVkZSgpIGhhcyBiZWVuIHJlbW92ZWQuIFVzZSBFeHRydWRlR2VvbWV0cnkoKSBpbnN0ZWFkLiIpLG5ldyBZV3QodGhpcyx0KX0sbWFrZUdlb21ldHJ5OmZ1bmN0aW9uKHQpe3JldHVybiBjb25zb2xlLndhcm4oIlRIUkVFLlNoYXBlOiAubWFrZUdlb21ldHJ5KCkgaGFzIGJlZW4gcmVtb3ZlZC4gVXNlIFNoYXBlR2VvbWV0cnkoKSBpbnN0ZWFkLiIpLG5ldyB0cXQodGhpcyx0KX19KSxPYmplY3QuYXNzaWduKGxIdC5wcm90b3R5cGUse2Zyb21BdHRyaWJ1dGU6ZnVuY3Rpb24odCxlLG4pe3JldHVybiBjb25zb2xlLndhcm4oIlRIUkVFLlZlY3RvcjI6IC5mcm9tQXR0cmlidXRlKCkgaGFzIGJlZW4gcmVuYW1lZCB0byAuZnJvbUJ1ZmZlckF0dHJpYnV0ZSgpLiIpLHRoaXMuZnJvbUJ1ZmZlckF0dHJpYnV0ZSh0LGUsbil9LGRpc3RhbmNlVG9NYW5oYXR0YW46ZnVuY3Rpb24odCl7cmV0dXJuIGNvbnNvbGUud2FybigiVEhSRUUuVmVjdG9yMjogLmRpc3RhbmNlVG9NYW5oYXR0YW4oKSBoYXMgYmVlbiByZW5hbWVkIHRvIC5tYW5oYXR0YW5EaXN0YW5jZVRvKCkuIiksdGhpcy5tYW5oYXR0YW5EaXN0YW5jZVRvKHQpfSxsZW5ndGhNYW5oYXR0YW46ZnVuY3Rpb24oKXtyZXR1cm4gY29uc29sZS53YXJuKCJUSFJFRS5WZWN0b3IyOiAubGVuZ3RoTWFuaGF0dGFuKCkgaGFzIGJlZW4gcmVuYW1lZCB0byAubWFuaGF0dGFuTGVuZ3RoKCkuIiksdGhpcy5tYW5oYXR0YW5MZW5ndGgoKX19KSxPYmplY3QuYXNzaWduKHlIdC5wcm90b3R5cGUse3NldEV1bGVyRnJvbVJvdGF0aW9uTWF0cml4OmZ1bmN0aW9uKCl7Y29uc29sZS5lcnJvcigiVEhSRUUuVmVjdG9yMzogLnNldEV1bGVyRnJvbVJvdGF0aW9uTWF0cml4KCkgaGFzIGJlZW4gcmVtb3ZlZC4gVXNlIEV1bGVyLnNldEZyb21Sb3RhdGlvbk1hdHJpeCgpIGluc3RlYWQuIil9LHNldEV1bGVyRnJvbVF1YXRlcm5pb246ZnVuY3Rpb24oKXtjb25zb2xlLmVycm9yKCJUSFJFRS5WZWN0b3IzOiAuc2V0RXVsZXJGcm9tUXVhdGVybmlvbigpIGhhcyBiZWVuIHJlbW92ZWQuIFVzZSBFdWxlci5zZXRGcm9tUXVhdGVybmlvbigpIGluc3RlYWQuIil9LGdldFBvc2l0aW9uRnJvbU1hdHJpeDpmdW5jdGlvbih0KXtyZXR1cm4gY29uc29sZS53YXJuKCJUSFJFRS5WZWN0b3IzOiAuZ2V0UG9zaXRpb25Gcm9tTWF0cml4KCkgaGFzIGJlZW4gcmVuYW1lZCB0byAuc2V0RnJvbU1hdHJpeFBvc2l0aW9uKCkuIiksdGhpcy5zZXRGcm9tTWF0cml4UG9zaXRpb24odCl9LGdldFNjYWxlRnJvbU1hdHJpeDpmdW5jdGlvbih0KXtyZXR1cm4gY29uc29sZS53YXJuKCJUSFJFRS5WZWN0b3IzOiAuZ2V0U2NhbGVGcm9tTWF0cml4KCkgaGFzIGJlZW4gcmVuYW1lZCB0byAuc2V0RnJvbU1hdHJpeFNjYWxlKCkuIiksdGhpcy5zZXRGcm9tTWF0cml4U2NhbGUodCl9LGdldENvbHVtbkZyb21NYXRyaXg6ZnVuY3Rpb24odCxlKXtyZXR1cm4gY29uc29sZS53YXJuKCJUSFJFRS5WZWN0b3IzOiAuZ2V0Q29sdW1uRnJvbU1hdHJpeCgpIGhhcyBiZWVuIHJlbmFtZWQgdG8gLnNldEZyb21NYXRyaXhDb2x1bW4oKS4iKSx0aGlzLnNldEZyb21NYXRyaXhDb2x1bW4oZSx0KX0sYXBwbHlQcm9qZWN0aW9uOmZ1bmN0aW9uKHQpe3JldHVybiBjb25zb2xlLndhcm4oIlRIUkVFLlZlY3RvcjM6IC5hcHBseVByb2plY3Rpb24oKSBoYXMgYmVlbiByZW1vdmVkLiBVc2UgLmFwcGx5TWF0cml4NCggbSApIGluc3RlYWQuIiksdGhpcy5hcHBseU1hdHJpeDQodCl9LGZyb21BdHRyaWJ1dGU6ZnVuY3Rpb24odCxlLG4pe3JldHVybiBjb25zb2xlLndhcm4oIlRIUkVFLlZlY3RvcjM6IC5mcm9tQXR0cmlidXRlKCkgaGFzIGJlZW4gcmVuYW1lZCB0byAuZnJvbUJ1ZmZlckF0dHJpYnV0ZSgpLiIpLHRoaXMuZnJvbUJ1ZmZlckF0dHJpYnV0ZSh0LGUsbil9LGRpc3RhbmNlVG9NYW5oYXR0YW46ZnVuY3Rpb24odCl7cmV0dXJuIGNvbnNvbGUud2FybigiVEhSRUUuVmVjdG9yMzogLmRpc3RhbmNlVG9NYW5oYXR0YW4oKSBoYXMgYmVlbiByZW5hbWVkIHRvIC5tYW5oYXR0YW5EaXN0YW5jZVRvKCkuIiksdGhpcy5tYW5oYXR0YW5EaXN0YW5jZVRvKHQpfSxsZW5ndGhNYW5oYXR0YW46ZnVuY3Rpb24oKXtyZXR1cm4gY29uc29sZS53YXJuKCJUSFJFRS5WZWN0b3IzOiAubGVuZ3RoTWFuaGF0dGFuKCkgaGFzIGJlZW4gcmVuYW1lZCB0byAubWFuaGF0dGFuTGVuZ3RoKCkuIiksdGhpcy5tYW5oYXR0YW5MZW5ndGgoKX19KSxPYmplY3QuYXNzaWduKG1IdC5wcm90b3R5cGUse2Zyb21BdHRyaWJ1dGU6ZnVuY3Rpb24odCxlLG4pe3JldHVybiBjb25zb2xlLndhcm4oIlRIUkVFLlZlY3RvcjQ6IC5mcm9tQXR0cmlidXRlKCkgaGFzIGJlZW4gcmVuYW1lZCB0byAuZnJvbUJ1ZmZlckF0dHJpYnV0ZSgpLiIpLHRoaXMuZnJvbUJ1ZmZlckF0dHJpYnV0ZSh0LGUsbil9LGxlbmd0aE1hbmhhdHRhbjpmdW5jdGlvbigpe3JldHVybiBjb25zb2xlLndhcm4oIlRIUkVFLlZlY3RvcjQ6IC5sZW5ndGhNYW5oYXR0YW4oKSBoYXMgYmVlbiByZW5hbWVkIHRvIC5tYW5oYXR0YW5MZW5ndGgoKS4iKSx0aGlzLm1hbmhhdHRhbkxlbmd0aCgpfX0pLE9iamVjdC5hc3NpZ24oX0Z0LnByb3RvdHlwZSx7Z2V0Q2hpbGRCeU5hbWU6ZnVuY3Rpb24odCl7cmV0dXJuIGNvbnNvbGUud2FybigiVEhSRUUuT2JqZWN0M0Q6IC5nZXRDaGlsZEJ5TmFtZSgpIGhhcyBiZWVuIHJlbmFtZWQgdG8gLmdldE9iamVjdEJ5TmFtZSgpLiIpLHRoaXMuZ2V0T2JqZWN0QnlOYW1lKHQpfSxyZW5kZXJEZXB0aDpmdW5jdGlvbigpe2NvbnNvbGUud2FybigiVEhSRUUuT2JqZWN0M0Q6IC5yZW5kZXJEZXB0aCBoYXMgYmVlbiByZW1vdmVkLiBVc2UgLnJlbmRlck9yZGVyLCBpbnN0ZWFkLiIpfSx0cmFuc2xhdGU6ZnVuY3Rpb24odCxlKXtyZXR1cm4gY29uc29sZS53YXJuKCJUSFJFRS5PYmplY3QzRDogLnRyYW5zbGF0ZSgpIGhhcyBiZWVuIHJlbW92ZWQuIFVzZSAudHJhbnNsYXRlT25BeGlzKCBheGlzLCBkaXN0YW5jZSApIGluc3RlYWQuIiksdGhpcy50cmFuc2xhdGVPbkF4aXMoZSx0KX0sZ2V0V29ybGRSb3RhdGlvbjpmdW5jdGlvbigpe2NvbnNvbGUuZXJyb3IoIlRIUkVFLk9iamVjdDNEOiAuZ2V0V29ybGRSb3RhdGlvbigpIGhhcyBiZWVuIHJlbW92ZWQuIFVzZSBUSFJFRS5PYmplY3QzRC5nZXRXb3JsZFF1YXRlcm5pb24oIHRhcmdldCApIGluc3RlYWQuIil9LGFwcGx5TWF0cml4OmZ1bmN0aW9uKHQpe3JldHVybiBjb25zb2xlLndhcm4oIlRIUkVFLk9iamVjdDNEOiAuYXBwbHlNYXRyaXgoKSBoYXMgYmVlbiByZW5hbWVkIHRvIC5hcHBseU1hdHJpeDQoKS4iKSx0aGlzLmFwcGx5TWF0cml4NCh0KX19KSxPYmplY3QuZGVmaW5lUHJvcGVydGllcyhfRnQucHJvdG90eXBlLHtldWxlck9yZGVyOntnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gY29uc29sZS53YXJuKCJUSFJFRS5PYmplY3QzRDogLmV1bGVyT3JkZXIgaXMgbm93IC5yb3RhdGlvbi5vcmRlci4iKSx0aGlzLnJvdGF0aW9uLm9yZGVyfSxzZXQ6ZnVuY3Rpb24odCl7Y29uc29sZS53YXJuKCJUSFJFRS5PYmplY3QzRDogLmV1bGVyT3JkZXIgaXMgbm93IC5yb3RhdGlvbi5vcmRlci4iKSx0aGlzLnJvdGF0aW9uLm9yZGVyPXR9fSx1c2VRdWF0ZXJuaW9uOntnZXQ6ZnVuY3Rpb24oKXtjb25zb2xlLndhcm4oIlRIUkVFLk9iamVjdDNEOiAudXNlUXVhdGVybmlvbiBoYXMgYmVlbiByZW1vdmVkLiBUaGUgbGlicmFyeSBub3cgdXNlcyBxdWF0ZXJuaW9ucyBieSBkZWZhdWx0LiIpfSxzZXQ6ZnVuY3Rpb24oKXtjb25zb2xlLndhcm4oIlRIUkVFLk9iamVjdDNEOiAudXNlUXVhdGVybmlvbiBoYXMgYmVlbiByZW1vdmVkLiBUaGUgbGlicmFyeSBub3cgdXNlcyBxdWF0ZXJuaW9ucyBieSBkZWZhdWx0LiIpfX19KSxPYmplY3QuYXNzaWduKFBWdC5wcm90b3R5cGUse3NldERyYXdNb2RlOmZ1bmN0aW9uKCl7Y29uc29sZS5lcnJvcigiVEhSRUUuTWVzaDogLnNldERyYXdNb2RlKCkgaGFzIGJlZW4gcmVtb3ZlZC4gVGhlIHJlbmRlcmVyIG5vdyBhbHdheXMgYXNzdW1lcyBUSFJFRS5UcmlhbmdsZXNEcmF3TW9kZS4gVHJhbnNmb3JtIHlvdXIgZ2VvbWV0cnkgdmlhIEJ1ZmZlckdlb21ldHJ5VXRpbHMudG9UcmlhbmdsZXNEcmF3TW9kZSgpIGlmIG5lY2Vzc2FyeS4iKX19KSxPYmplY3QuZGVmaW5lUHJvcGVydGllcyhQVnQucHJvdG90eXBlLHtkcmF3TW9kZTp7Z2V0OmZ1bmN0aW9uKCl7cmV0dXJuIGNvbnNvbGUuZXJyb3IoIlRIUkVFLk1lc2g6IC5kcmF3TW9kZSBoYXMgYmVlbiByZW1vdmVkLiBUaGUgcmVuZGVyZXIgbm93IGFsd2F5cyBhc3N1bWVzIFRIUkVFLlRyaWFuZ2xlc0RyYXdNb2RlLiIpLDB9LHNldDpmdW5jdGlvbigpe2NvbnNvbGUuZXJyb3IoIlRIUkVFLk1lc2g6IC5kcmF3TW9kZSBoYXMgYmVlbiByZW1vdmVkLiBUaGUgcmVuZGVyZXIgbm93IGFsd2F5cyBhc3N1bWVzIFRIUkVFLlRyaWFuZ2xlc0RyYXdNb2RlLiBUcmFuc2Zvcm0geW91ciBnZW9tZXRyeSB2aWEgQnVmZmVyR2VvbWV0cnlVdGlscy50b1RyaWFuZ2xlc0RyYXdNb2RlKCkgaWYgbmVjZXNzYXJ5LiIpfX19KSxPYmplY3QuZGVmaW5lUHJvcGVydGllcyhUR3QucHJvdG90eXBlLHtvYmplY3RzOntnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gY29uc29sZS53YXJuKCJUSFJFRS5MT0Q6IC5vYmplY3RzIGhhcyBiZWVuIHJlbmFtZWQgdG8gLmxldmVscy4iKSx0aGlzLmxldmVsc319fSksT2JqZWN0LmRlZmluZVByb3BlcnR5KHpHdC5wcm90b3R5cGUsInVzZVZlcnRleFRleHR1cmUiLHtnZXQ6ZnVuY3Rpb24oKXtjb25zb2xlLndhcm4oIlRIUkVFLlNrZWxldG9uOiB1c2VWZXJ0ZXhUZXh0dXJlIGhhcyBiZWVuIHJlbW92ZWQuIil9LHNldDpmdW5jdGlvbigpe2NvbnNvbGUud2FybigiVEhSRUUuU2tlbGV0b246IHVzZVZlcnRleFRleHR1cmUgaGFzIGJlZW4gcmVtb3ZlZC4iKX19KSxJR3QucHJvdG90eXBlLmluaXRCb25lcz1mdW5jdGlvbigpe2NvbnNvbGUuZXJyb3IoIlRIUkVFLlNraW5uZWRNZXNoOiBpbml0Qm9uZXMoKSBoYXMgYmVlbiByZW1vdmVkLiIpfSxPYmplY3QuZGVmaW5lUHJvcGVydHkoWXF0LnByb3RvdHlwZSwiX19hcmNMZW5ndGhEaXZpc2lvbnMiLHtnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gY29uc29sZS53YXJuKCJUSFJFRS5DdXJ2ZTogLl9fYXJjTGVuZ3RoRGl2aXNpb25zIGlzIG5vdyAuYXJjTGVuZ3RoRGl2aXNpb25zLiIpLHRoaXMuYXJjTGVuZ3RoRGl2aXNpb25zfSxzZXQ6ZnVuY3Rpb24odCl7Y29uc29sZS53YXJuKCJUSFJFRS5DdXJ2ZTogLl9fYXJjTGVuZ3RoRGl2aXNpb25zIGlzIG5vdyAuYXJjTGVuZ3RoRGl2aXNpb25zLiIpLHRoaXMuYXJjTGVuZ3RoRGl2aXNpb25zPXR9fSksSFZ0LnByb3RvdHlwZS5zZXRMZW5zPWZ1bmN0aW9uKHQsZSl7Y29uc29sZS53YXJuKCJUSFJFRS5QZXJzcGVjdGl2ZUNhbWVyYS5zZXRMZW5zIGlzIGRlcHJlY2F0ZWQuIFVzZSAuc2V0Rm9jYWxMZW5ndGggYW5kIC5maWxtR2F1Z2UgZm9yIGEgcGhvdG9ncmFwaGljIHNldHVwLiIpLHZvaWQgMCE9PWUmJih0aGlzLmZpbG1HYXVnZT1lKSx0aGlzLnNldEZvY2FsTGVuZ3RoKHQpfSxPYmplY3QuZGVmaW5lUHJvcGVydGllcyhnWXQucHJvdG90eXBlLHtvbmx5U2hhZG93OntzZXQ6ZnVuY3Rpb24oKXtjb25zb2xlLndhcm4oIlRIUkVFLkxpZ2h0OiAub25seVNoYWRvdyBoYXMgYmVlbiByZW1vdmVkLiIpfX0sc2hhZG93Q2FtZXJhRm92OntzZXQ6ZnVuY3Rpb24odCl7Y29uc29sZS53YXJuKCJUSFJFRS5MaWdodDogLnNoYWRvd0NhbWVyYUZvdiBpcyBub3cgLnNoYWRvdy5jYW1lcmEuZm92LiIpLHRoaXMuc2hhZG93LmNhbWVyYS5mb3Y9dH19LHNoYWRvd0NhbWVyYUxlZnQ6e3NldDpmdW5jdGlvbih0KXtjb25zb2xlLndhcm4oIlRIUkVFLkxpZ2h0OiAuc2hhZG93Q2FtZXJhTGVmdCBpcyBub3cgLnNoYWRvdy5jYW1lcmEubGVmdC4iKSx0aGlzLnNoYWRvdy5jYW1lcmEubGVmdD10fX0sc2hhZG93Q2FtZXJhUmlnaHQ6e3NldDpmdW5jdGlvbih0KXtjb25zb2xlLndhcm4oIlRIUkVFLkxpZ2h0OiAuc2hhZG93Q2FtZXJhUmlnaHQgaXMgbm93IC5zaGFkb3cuY2FtZXJhLnJpZ2h0LiIpLHRoaXMuc2hhZG93LmNhbWVyYS5yaWdodD10fX0sc2hhZG93Q2FtZXJhVG9wOntzZXQ6ZnVuY3Rpb24odCl7Y29uc29sZS53YXJuKCJUSFJFRS5MaWdodDogLnNoYWRvd0NhbWVyYVRvcCBpcyBub3cgLnNoYWRvdy5jYW1lcmEudG9wLiIpLHRoaXMuc2hhZG93LmNhbWVyYS50b3A9dH19LHNoYWRvd0NhbWVyYUJvdHRvbTp7c2V0OmZ1bmN0aW9uKHQpe2NvbnNvbGUud2FybigiVEhSRUUuTGlnaHQ6IC5zaGFkb3dDYW1lcmFCb3R0b20gaXMgbm93IC5zaGFkb3cuY2FtZXJhLmJvdHRvbS4iKSx0aGlzLnNoYWRvdy5jYW1lcmEuYm90dG9tPXR9fSxzaGFkb3dDYW1lcmFOZWFyOntzZXQ6ZnVuY3Rpb24odCl7Y29uc29sZS53YXJuKCJUSFJFRS5MaWdodDogLnNoYWRvd0NhbWVyYU5lYXIgaXMgbm93IC5zaGFkb3cuY2FtZXJhLm5lYXIuIiksdGhpcy5zaGFkb3cuY2FtZXJhLm5lYXI9dH19LHNoYWRvd0NhbWVyYUZhcjp7c2V0OmZ1bmN0aW9uKHQpe2NvbnNvbGUud2FybigiVEhSRUUuTGlnaHQ6IC5zaGFkb3dDYW1lcmFGYXIgaXMgbm93IC5zaGFkb3cuY2FtZXJhLmZhci4iKSx0aGlzLnNoYWRvdy5jYW1lcmEuZmFyPXR9fSxzaGFkb3dDYW1lcmFWaXNpYmxlOntzZXQ6ZnVuY3Rpb24oKXtjb25zb2xlLndhcm4oIlRIUkVFLkxpZ2h0OiAuc2hhZG93Q2FtZXJhVmlzaWJsZSBoYXMgYmVlbiByZW1vdmVkLiBVc2UgbmV3IFRIUkVFLkNhbWVyYUhlbHBlciggbGlnaHQuc2hhZG93LmNhbWVyYSApIGluc3RlYWQuIil9fSxzaGFkb3dCaWFzOntzZXQ6ZnVuY3Rpb24odCl7Y29uc29sZS53YXJuKCJUSFJFRS5MaWdodDogLnNoYWRvd0JpYXMgaXMgbm93IC5zaGFkb3cuYmlhcy4iKSx0aGlzLnNoYWRvdy5iaWFzPXR9fSxzaGFkb3dEYXJrbmVzczp7c2V0OmZ1bmN0aW9uKCl7Y29uc29sZS53YXJuKCJUSFJFRS5MaWdodDogLnNoYWRvd0RhcmtuZXNzIGhhcyBiZWVuIHJlbW92ZWQuIil9fSxzaGFkb3dNYXBXaWR0aDp7c2V0OmZ1bmN0aW9uKHQpe2NvbnNvbGUud2FybigiVEhSRUUuTGlnaHQ6IC5zaGFkb3dNYXBXaWR0aCBpcyBub3cgLnNoYWRvdy5tYXBTaXplLndpZHRoLiIpLHRoaXMuc2hhZG93Lm1hcFNpemUud2lkdGg9dH19LHNoYWRvd01hcEhlaWdodDp7c2V0OmZ1bmN0aW9uKHQpe2NvbnNvbGUud2FybigiVEhSRUUuTGlnaHQ6IC5zaGFkb3dNYXBIZWlnaHQgaXMgbm93IC5zaGFkb3cubWFwU2l6ZS5oZWlnaHQuIiksdGhpcy5zaGFkb3cubWFwU2l6ZS5oZWlnaHQ9dH19fSksT2JqZWN0LmRlZmluZVByb3BlcnRpZXMocUZ0LnByb3RvdHlwZSx7bGVuZ3RoOntnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gY29uc29sZS53YXJuKCJUSFJFRS5CdWZmZXJBdHRyaWJ1dGU6IC5sZW5ndGggaGFzIGJlZW4gZGVwcmVjYXRlZC4gVXNlIC5jb3VudCBpbnN0ZWFkLiIpLHRoaXMuYXJyYXkubGVuZ3RofX0sZHluYW1pYzp7Z2V0OmZ1bmN0aW9uKCl7cmV0dXJuIGNvbnNvbGUud2FybigiVEhSRUUuQnVmZmVyQXR0cmlidXRlOiAuZHluYW1pYyBoYXMgYmVlbiBkZXByZWNhdGVkLiBVc2UgLnVzYWdlIGluc3RlYWQuIiksdGhpcy51c2FnZT09PW5IdH0sc2V0OmZ1bmN0aW9uKCl7Y29uc29sZS53YXJuKCJUSFJFRS5CdWZmZXJBdHRyaWJ1dGU6IC5keW5hbWljIGhhcyBiZWVuIGRlcHJlY2F0ZWQuIFVzZSAudXNhZ2UgaW5zdGVhZC4iKSx0aGlzLnNldFVzYWdlKG5IdCl9fX0pLE9iamVjdC5hc3NpZ24ocUZ0LnByb3RvdHlwZSx7c2V0RHluYW1pYzpmdW5jdGlvbih0KXtyZXR1cm4gY29uc29sZS53YXJuKCJUSFJFRS5CdWZmZXJBdHRyaWJ1dGU6IC5zZXREeW5hbWljKCkgaGFzIGJlZW4gZGVwcmVjYXRlZC4gVXNlIC5zZXRVc2FnZSgpIGluc3RlYWQuIiksdGhpcy5zZXRVc2FnZSghMD09PXQ/bkh0OmVIdCksdGhpc30sY29weUluZGljZXNBcnJheTpmdW5jdGlvbigpe2NvbnNvbGUuZXJyb3IoIlRIUkVFLkJ1ZmZlckF0dHJpYnV0ZTogLmNvcHlJbmRpY2VzQXJyYXkoKSBoYXMgYmVlbiByZW1vdmVkLiIpfSxzZXRBcnJheTpmdW5jdGlvbigpe2NvbnNvbGUuZXJyb3IoIlRIUkVFLkJ1ZmZlckF0dHJpYnV0ZTogLnNldEFycmF5IGhhcyBiZWVuIHJlbW92ZWQuIFVzZSBCdWZmZXJHZW9tZXRyeSAuc2V0QXR0cmlidXRlIHRvIHJlcGxhY2UvcmVzaXplIGF0dHJpYnV0ZSBidWZmZXJzIil9fSksT2JqZWN0LmFzc2lnbihwVnQucHJvdG90eXBlLHthZGRJbmRleDpmdW5jdGlvbih0KXtjb25zb2xlLndhcm4oIlRIUkVFLkJ1ZmZlckdlb21ldHJ5OiAuYWRkSW5kZXgoKSBoYXMgYmVlbiByZW5hbWVkIHRvIC5zZXRJbmRleCgpLiIpLHRoaXMuc2V0SW5kZXgodCl9LGFkZEF0dHJpYnV0ZTpmdW5jdGlvbih0LGUpe3JldHVybiBjb25zb2xlLndhcm4oIlRIUkVFLkJ1ZmZlckdlb21ldHJ5OiAuYWRkQXR0cmlidXRlKCkgaGFzIGJlZW4gcmVuYW1lZCB0byAuc2V0QXR0cmlidXRlKCkuIiksZSYmZS5pc0J1ZmZlckF0dHJpYnV0ZXx8ZSYmZS5pc0ludGVybGVhdmVkQnVmZmVyQXR0cmlidXRlPyJpbmRleCI9PT10Pyhjb25zb2xlLndhcm4oIlRIUkVFLkJ1ZmZlckdlb21ldHJ5LmFkZEF0dHJpYnV0ZTogVXNlIC5zZXRJbmRleCgpIGZvciBpbmRleCBhdHRyaWJ1dGUuIiksdGhpcy5zZXRJbmRleChlKSx0aGlzKTp0aGlzLnNldEF0dHJpYnV0ZSh0LGUpOihjb25zb2xlLndhcm4oIlRIUkVFLkJ1ZmZlckdlb21ldHJ5OiAuYWRkQXR0cmlidXRlKCkgbm93IGV4cGVjdHMgKCBuYW1lLCBhdHRyaWJ1dGUgKS4iKSx0aGlzLnNldEF0dHJpYnV0ZSh0LG5ldyBxRnQoYXJndW1lbnRzWzFdLGFyZ3VtZW50c1syXSkpKX0sYWRkRHJhd0NhbGw6ZnVuY3Rpb24odCxlLG4pe3ZvaWQgMCE9PW4mJmNvbnNvbGUud2FybigiVEhSRUUuQnVmZmVyR2VvbWV0cnk6IC5hZGREcmF3Q2FsbCgpIG5vIGxvbmdlciBzdXBwb3J0cyBpbmRleE9mZnNldC4iKSxjb25zb2xlLndhcm4oIlRIUkVFLkJ1ZmZlckdlb21ldHJ5OiAuYWRkRHJhd0NhbGwoKSBpcyBub3cgLmFkZEdyb3VwKCkuIiksdGhpcy5hZGRHcm91cCh0LGUpfSxjbGVhckRyYXdDYWxsczpmdW5jdGlvbigpe2NvbnNvbGUud2FybigiVEhSRUUuQnVmZmVyR2VvbWV0cnk6IC5jbGVhckRyYXdDYWxscygpIGlzIG5vdyAuY2xlYXJHcm91cHMoKS4iKSx0aGlzLmNsZWFyR3JvdXBzKCl9LGNvbXB1dGVPZmZzZXRzOmZ1bmN0aW9uKCl7Y29uc29sZS53YXJuKCJUSFJFRS5CdWZmZXJHZW9tZXRyeTogLmNvbXB1dGVPZmZzZXRzKCkgaGFzIGJlZW4gcmVtb3ZlZC4iKX0scmVtb3ZlQXR0cmlidXRlOmZ1bmN0aW9uKHQpe3JldHVybiBjb25zb2xlLndhcm4oIlRIUkVFLkJ1ZmZlckdlb21ldHJ5OiAucmVtb3ZlQXR0cmlidXRlKCkgaGFzIGJlZW4gcmVuYW1lZCB0byAuZGVsZXRlQXR0cmlidXRlKCkuIiksdGhpcy5kZWxldGVBdHRyaWJ1dGUodCl9LGFwcGx5TWF0cml4OmZ1bmN0aW9uKHQpe3JldHVybiBjb25zb2xlLndhcm4oIlRIUkVFLkJ1ZmZlckdlb21ldHJ5OiAuYXBwbHlNYXRyaXgoKSBoYXMgYmVlbiByZW5hbWVkIHRvIC5hcHBseU1hdHJpeDQoKS4iKSx0aGlzLmFwcGx5TWF0cml4NCh0KX19KSxPYmplY3QuZGVmaW5lUHJvcGVydGllcyhwVnQucHJvdG90eXBlLHtkcmF3Y2FsbHM6e2dldDpmdW5jdGlvbigpe3JldHVybiBjb25zb2xlLmVycm9yKCJUSFJFRS5CdWZmZXJHZW9tZXRyeTogLmRyYXdjYWxscyBoYXMgYmVlbiByZW5hbWVkIHRvIC5ncm91cHMuIiksdGhpcy5ncm91cHN9fSxvZmZzZXRzOntnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gY29uc29sZS53YXJuKCJUSFJFRS5CdWZmZXJHZW9tZXRyeTogLm9mZnNldHMgaGFzIGJlZW4gcmVuYW1lZCB0byAuZ3JvdXBzLiIpLHRoaXMuZ3JvdXBzfX19KSxPYmplY3QuZGVmaW5lUHJvcGVydGllcyhJWXQucHJvdG90eXBlLHttYXhJbnN0YW5jZWRDb3VudDp7Z2V0OmZ1bmN0aW9uKCl7cmV0dXJuIGNvbnNvbGUud2FybigiVEhSRUUuSW5zdGFuY2VkQnVmZmVyR2VvbWV0cnk6IC5tYXhJbnN0YW5jZWRDb3VudCBoYXMgYmVlbiByZW5hbWVkIHRvIC5pbnN0YW5jZUNvdW50LiIpLHRoaXMuaW5zdGFuY2VDb3VudH0sc2V0OmZ1bmN0aW9uKHQpe2NvbnNvbGUud2FybigiVEhSRUUuSW5zdGFuY2VkQnVmZmVyR2VvbWV0cnk6IC5tYXhJbnN0YW5jZWRDb3VudCBoYXMgYmVlbiByZW5hbWVkIHRvIC5pbnN0YW5jZUNvdW50LiIpLHRoaXMuaW5zdGFuY2VDb3VudD10fX19KSxPYmplY3QuZGVmaW5lUHJvcGVydGllcyhBWHQucHJvdG90eXBlLHtsaW5lUHJlY2lzaW9uOntnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gY29uc29sZS53YXJuKCJUSFJFRS5SYXljYXN0ZXI6IC5saW5lUHJlY2lzaW9uIGhhcyBiZWVuIGRlcHJlY2F0ZWQuIFVzZSAucGFyYW1zLkxpbmUudGhyZXNob2xkIGluc3RlYWQuIiksdGhpcy5wYXJhbXMuTGluZS50aHJlc2hvbGR9LHNldDpmdW5jdGlvbih0KXtjb25zb2xlLndhcm4oIlRIUkVFLlJheWNhc3RlcjogLmxpbmVQcmVjaXNpb24gaGFzIGJlZW4gZGVwcmVjYXRlZC4gVXNlIC5wYXJhbXMuTGluZS50aHJlc2hvbGQgaW5zdGVhZC4iKSx0aGlzLnBhcmFtcy5MaW5lLnRocmVzaG9sZD10fX19KSxPYmplY3QuZGVmaW5lUHJvcGVydGllcyhvR3QucHJvdG90eXBlLHtkeW5hbWljOntnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gY29uc29sZS53YXJuKCJUSFJFRS5JbnRlcmxlYXZlZEJ1ZmZlcjogLmxlbmd0aCBoYXMgYmVlbiBkZXByZWNhdGVkLiBVc2UgLnVzYWdlIGluc3RlYWQuIiksdGhpcy51c2FnZT09PW5IdH0sc2V0OmZ1bmN0aW9uKHQpe2NvbnNvbGUud2FybigiVEhSRUUuSW50ZXJsZWF2ZWRCdWZmZXI6IC5sZW5ndGggaGFzIGJlZW4gZGVwcmVjYXRlZC4gVXNlIC51c2FnZSBpbnN0ZWFkLiIpLHRoaXMuc2V0VXNhZ2UodCl9fX0pLE9iamVjdC5hc3NpZ24ob0d0LnByb3RvdHlwZSx7c2V0RHluYW1pYzpmdW5jdGlvbih0KXtyZXR1cm4gY29uc29sZS53YXJuKCJUSFJFRS5JbnRlcmxlYXZlZEJ1ZmZlcjogLnNldER5bmFtaWMoKSBoYXMgYmVlbiBkZXByZWNhdGVkLiBVc2UgLnNldFVzYWdlKCkgaW5zdGVhZC4iKSx0aGlzLnNldFVzYWdlKCEwPT09dD9uSHQ6ZUh0KSx0aGlzfSxzZXRBcnJheTpmdW5jdGlvbigpe2NvbnNvbGUuZXJyb3IoIlRIUkVFLkludGVybGVhdmVkQnVmZmVyOiAuc2V0QXJyYXkgaGFzIGJlZW4gcmVtb3ZlZC4gVXNlIEJ1ZmZlckdlb21ldHJ5IC5zZXRBdHRyaWJ1dGUgdG8gcmVwbGFjZS9yZXNpemUgYXR0cmlidXRlIGJ1ZmZlcnMiKX19KSxPYmplY3QuYXNzaWduKFlXdC5wcm90b3R5cGUse2dldEFycmF5czpmdW5jdGlvbigpe2NvbnNvbGUuZXJyb3IoIlRIUkVFLkV4dHJ1ZGVHZW9tZXRyeTogLmdldEFycmF5cygpIGhhcyBiZWVuIHJlbW92ZWQuIil9LGFkZFNoYXBlTGlzdDpmdW5jdGlvbigpe2NvbnNvbGUuZXJyb3IoIlRIUkVFLkV4dHJ1ZGVHZW9tZXRyeTogLmFkZFNoYXBlTGlzdCgpIGhhcyBiZWVuIHJlbW92ZWQuIil9LGFkZFNoYXBlOmZ1bmN0aW9uKCl7Y29uc29sZS5lcnJvcigiVEhSRUUuRXh0cnVkZUdlb21ldHJ5OiAuYWRkU2hhcGUoKSBoYXMgYmVlbiByZW1vdmVkLiIpfX0pLE9iamVjdC5hc3NpZ24ockd0LnByb3RvdHlwZSx7ZGlzcG9zZTpmdW5jdGlvbigpe2NvbnNvbGUuZXJyb3IoIlRIUkVFLlNjZW5lOiAuZGlzcG9zZSgpIGhhcyBiZWVuIHJlbW92ZWQuIil9fSksT2JqZWN0LmRlZmluZVByb3BlcnRpZXMoTVh0LnByb3RvdHlwZSx7ZHluYW1pYzp7c2V0OmZ1bmN0aW9uKCl7Y29uc29sZS53YXJuKCJUSFJFRS5Vbmlmb3JtOiAuZHluYW1pYyBoYXMgYmVlbiByZW1vdmVkLiBVc2Ugb2JqZWN0Lm9uQmVmb3JlUmVuZGVyKCkgaW5zdGVhZC4iKX19LG9uVXBkYXRlOnt2YWx1ZTpmdW5jdGlvbigpe3JldHVybiBjb25zb2xlLndhcm4oIlRIUkVFLlVuaWZvcm06IC5vblVwZGF0ZSgpIGhhcyBiZWVuIHJlbW92ZWQuIFVzZSBvYmplY3Qub25CZWZvcmVSZW5kZXIoKSBpbnN0ZWFkLiIpLHRoaXN9fX0pLE9iamVjdC5kZWZpbmVQcm9wZXJ0aWVzKGpGdC5wcm90b3R5cGUse3dyYXBBcm91bmQ6e2dldDpmdW5jdGlvbigpe2NvbnNvbGUud2FybigiVEhSRUUuTWF0ZXJpYWw6IC53cmFwQXJvdW5kIGhhcyBiZWVuIHJlbW92ZWQuIil9LHNldDpmdW5jdGlvbigpe2NvbnNvbGUud2FybigiVEhSRUUuTWF0ZXJpYWw6IC53cmFwQXJvdW5kIGhhcyBiZWVuIHJlbW92ZWQuIil9fSxvdmVyZHJhdzp7Z2V0OmZ1bmN0aW9uKCl7Y29uc29sZS53YXJuKCJUSFJFRS5NYXRlcmlhbDogLm92ZXJkcmF3IGhhcyBiZWVuIHJlbW92ZWQuIil9LHNldDpmdW5jdGlvbigpe2NvbnNvbGUud2FybigiVEhSRUUuTWF0ZXJpYWw6IC5vdmVyZHJhdyBoYXMgYmVlbiByZW1vdmVkLiIpfX0sd3JhcFJHQjp7Z2V0OmZ1bmN0aW9uKCl7cmV0dXJuIGNvbnNvbGUud2FybigiVEhSRUUuTWF0ZXJpYWw6IC53cmFwUkdCIGhhcyBiZWVuIHJlbW92ZWQuIiksbmV3IEhGdH19LHNoYWRpbmc6e2dldDpmdW5jdGlvbigpe2NvbnNvbGUuZXJyb3IoIlRIUkVFLiIrdGhpcy50eXBlKyI6IC5zaGFkaW5nIGhhcyBiZWVuIHJlbW92ZWQuIFVzZSB0aGUgYm9vbGVhbiAuZmxhdFNoYWRpbmcgaW5zdGVhZC4iKX0sc2V0OmZ1bmN0aW9uKHQpe2NvbnNvbGUud2FybigiVEhSRUUuIit0aGlzLnR5cGUrIjogLnNoYWRpbmcgaGFzIGJlZW4gcmVtb3ZlZC4gVXNlIHRoZSBib29sZWFuIC5mbGF0U2hhZGluZyBpbnN0ZWFkLiIpLHRoaXMuZmxhdFNoYWRpbmc9MT09PXR9fSxzdGVuY2lsTWFzazp7Z2V0OmZ1bmN0aW9uKCl7cmV0dXJuIGNvbnNvbGUud2FybigiVEhSRUUuIit0aGlzLnR5cGUrIjogLnN0ZW5jaWxNYXNrIGhhcyBiZWVuIHJlbW92ZWQuIFVzZSAuc3RlbmNpbEZ1bmNNYXNrIGluc3RlYWQuIiksdGhpcy5zdGVuY2lsRnVuY01hc2t9LHNldDpmdW5jdGlvbih0KXtjb25zb2xlLndhcm4oIlRIUkVFLiIrdGhpcy50eXBlKyI6IC5zdGVuY2lsTWFzayBoYXMgYmVlbiByZW1vdmVkLiBVc2UgLnN0ZW5jaWxGdW5jTWFzayBpbnN0ZWFkLiIpLHRoaXMuc3RlbmNpbEZ1bmNNYXNrPXR9fX0pLE9iamVjdC5kZWZpbmVQcm9wZXJ0aWVzKHBxdC5wcm90b3R5cGUse21ldGFsOntnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gY29uc29sZS53YXJuKCJUSFJFRS5NZXNoUGhvbmdNYXRlcmlhbDogLm1ldGFsIGhhcyBiZWVuIHJlbW92ZWQuIFVzZSBUSFJFRS5NZXNoU3RhbmRhcmRNYXRlcmlhbCBpbnN0ZWFkLiIpLCExfSxzZXQ6ZnVuY3Rpb24oKXtjb25zb2xlLndhcm4oIlRIUkVFLk1lc2hQaG9uZ01hdGVyaWFsOiAubWV0YWwgaGFzIGJlZW4gcmVtb3ZlZC4gVXNlIFRIUkVFLk1lc2hTdGFuZGFyZE1hdGVyaWFsIGluc3RlYWQiKX19fSksT2JqZWN0LmRlZmluZVByb3BlcnRpZXMoZHF0LnByb3RvdHlwZSx7dHJhbnNwYXJlbmN5OntnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gY29uc29sZS53YXJuKCJUSFJFRS5NZXNoUGh5c2ljYWxNYXRlcmlhbDogLnRyYW5zcGFyZW5jeSBoYXMgYmVlbiByZW5hbWVkIHRvIC50cmFuc21pc3Npb24uIiksdGhpcy50cmFuc21pc3Npb259LHNldDpmdW5jdGlvbih0KXtjb25zb2xlLndhcm4oIlRIUkVFLk1lc2hQaHlzaWNhbE1hdGVyaWFsOiAudHJhbnNwYXJlbmN5IGhhcyBiZWVuIHJlbmFtZWQgdG8gLnRyYW5zbWlzc2lvbi4iKSx0aGlzLnRyYW5zbWlzc2lvbj10fX19KSxPYmplY3QuZGVmaW5lUHJvcGVydGllcyhEVnQucHJvdG90eXBlLHtkZXJpdmF0aXZlczp7Z2V0OmZ1bmN0aW9uKCl7cmV0dXJuIGNvbnNvbGUud2FybigiVEhSRUUuU2hhZGVyTWF0ZXJpYWw6IC5kZXJpdmF0aXZlcyBoYXMgYmVlbiBtb3ZlZCB0byAuZXh0ZW5zaW9ucy5kZXJpdmF0aXZlcy4iKSx0aGlzLmV4dGVuc2lvbnMuZGVyaXZhdGl2ZXN9LHNldDpmdW5jdGlvbih0KXtjb25zb2xlLndhcm4oIlRIUkVFLiBTaGFkZXJNYXRlcmlhbDogLmRlcml2YXRpdmVzIGhhcyBiZWVuIG1vdmVkIHRvIC5leHRlbnNpb25zLmRlcml2YXRpdmVzLiIpLHRoaXMuZXh0ZW5zaW9ucy5kZXJpdmF0aXZlcz10fX19KSxPYmplY3QuYXNzaWduKHRHdC5wcm90b3R5cGUse2NsZWFyVGFyZ2V0OmZ1bmN0aW9uKHQsZSxuLGkpe2NvbnNvbGUud2FybigiVEhSRUUuV2ViR0xSZW5kZXJlcjogLmNsZWFyVGFyZ2V0KCkgaGFzIGJlZW4gZGVwcmVjYXRlZC4gVXNlIC5zZXRSZW5kZXJUYXJnZXQoKSBhbmQgLmNsZWFyKCkgaW5zdGVhZC4iKSx0aGlzLnNldFJlbmRlclRhcmdldCh0KSx0aGlzLmNsZWFyKGUsbixpKX0sYW5pbWF0ZTpmdW5jdGlvbih0KXtjb25zb2xlLndhcm4oIlRIUkVFLldlYkdMUmVuZGVyZXI6IC5hbmltYXRlKCkgaXMgbm93IC5zZXRBbmltYXRpb25Mb29wKCkuIiksdGhpcy5zZXRBbmltYXRpb25Mb29wKHQpfSxnZXRDdXJyZW50UmVuZGVyVGFyZ2V0OmZ1bmN0aW9uKCl7cmV0dXJuIGNvbnNvbGUud2FybigiVEhSRUUuV2ViR0xSZW5kZXJlcjogLmdldEN1cnJlbnRSZW5kZXJUYXJnZXQoKSBpcyBub3cgLmdldFJlbmRlclRhcmdldCgpLiIpLHRoaXMuZ2V0UmVuZGVyVGFyZ2V0KCl9LGdldE1heEFuaXNvdHJvcHk6ZnVuY3Rpb24oKXtyZXR1cm4gY29uc29sZS53YXJuKCJUSFJFRS5XZWJHTFJlbmRlcmVyOiAuZ2V0TWF4QW5pc290cm9weSgpIGlzIG5vdyAuY2FwYWJpbGl0aWVzLmdldE1heEFuaXNvdHJvcHkoKS4iKSx0aGlzLmNhcGFiaWxpdGllcy5nZXRNYXhBbmlzb3Ryb3B5KCl9LGdldFByZWNpc2lvbjpmdW5jdGlvbigpe3JldHVybiBjb25zb2xlLndhcm4oIlRIUkVFLldlYkdMUmVuZGVyZXI6IC5nZXRQcmVjaXNpb24oKSBpcyBub3cgLmNhcGFiaWxpdGllcy5wcmVjaXNpb24uIiksdGhpcy5jYXBhYmlsaXRpZXMucHJlY2lzaW9ufSxyZXNldEdMU3RhdGU6ZnVuY3Rpb24oKXtyZXR1cm4gY29uc29sZS53YXJuKCJUSFJFRS5XZWJHTFJlbmRlcmVyOiAucmVzZXRHTFN0YXRlKCkgaXMgbm93IC5zdGF0ZS5yZXNldCgpLiIpLHRoaXMuc3RhdGUucmVzZXQoKX0sc3VwcG9ydHNGbG9hdFRleHR1cmVzOmZ1bmN0aW9uKCl7cmV0dXJuIGNvbnNvbGUud2FybigiVEhSRUUuV2ViR0xSZW5kZXJlcjogLnN1cHBvcnRzRmxvYXRUZXh0dXJlcygpIGlzIG5vdyAuZXh0ZW5zaW9ucy5nZXQoICdPRVNfdGV4dHVyZV9mbG9hdCcgKS4iKSx0aGlzLmV4dGVuc2lvbnMuZ2V0KCJPRVNfdGV4dHVyZV9mbG9hdCIpfSxzdXBwb3J0c0hhbGZGbG9hdFRleHR1cmVzOmZ1bmN0aW9uKCl7cmV0dXJuIGNvbnNvbGUud2FybigiVEhSRUUuV2ViR0xSZW5kZXJlcjogLnN1cHBvcnRzSGFsZkZsb2F0VGV4dHVyZXMoKSBpcyBub3cgLmV4dGVuc2lvbnMuZ2V0KCAnT0VTX3RleHR1cmVfaGFsZl9mbG9hdCcgKS4iKSx0aGlzLmV4dGVuc2lvbnMuZ2V0KCJPRVNfdGV4dHVyZV9oYWxmX2Zsb2F0Iil9LHN1cHBvcnRzU3RhbmRhcmREZXJpdmF0aXZlczpmdW5jdGlvbigpe3JldHVybiBjb25zb2xlLndhcm4oIlRIUkVFLldlYkdMUmVuZGVyZXI6IC5zdXBwb3J0c1N0YW5kYXJkRGVyaXZhdGl2ZXMoKSBpcyBub3cgLmV4dGVuc2lvbnMuZ2V0KCAnT0VTX3N0YW5kYXJkX2Rlcml2YXRpdmVzJyApLiIpLHRoaXMuZXh0ZW5zaW9ucy5nZXQoIk9FU19zdGFuZGFyZF9kZXJpdmF0aXZlcyIpfSxzdXBwb3J0c0NvbXByZXNzZWRUZXh0dXJlUzNUQzpmdW5jdGlvbigpe3JldHVybiBjb25zb2xlLndhcm4oIlRIUkVFLldlYkdMUmVuZGVyZXI6IC5zdXBwb3J0c0NvbXByZXNzZWRUZXh0dXJlUzNUQygpIGlzIG5vdyAuZXh0ZW5zaW9ucy5nZXQoICdXRUJHTF9jb21wcmVzc2VkX3RleHR1cmVfczN0YycgKS4iKSx0aGlzLmV4dGVuc2lvbnMuZ2V0KCJXRUJHTF9jb21wcmVzc2VkX3RleHR1cmVfczN0YyIpfSxzdXBwb3J0c0NvbXByZXNzZWRUZXh0dXJlUFZSVEM6ZnVuY3Rpb24oKXtyZXR1cm4gY29uc29sZS53YXJuKCJUSFJFRS5XZWJHTFJlbmRlcmVyOiAuc3VwcG9ydHNDb21wcmVzc2VkVGV4dHVyZVBWUlRDKCkgaXMgbm93IC5leHRlbnNpb25zLmdldCggJ1dFQkdMX2NvbXByZXNzZWRfdGV4dHVyZV9wdnJ0YycgKS4iKSx0aGlzLmV4dGVuc2lvbnMuZ2V0KCJXRUJHTF9jb21wcmVzc2VkX3RleHR1cmVfcHZydGMiKX0sc3VwcG9ydHNCbGVuZE1pbk1heDpmdW5jdGlvbigpe3JldHVybiBjb25zb2xlLndhcm4oIlRIUkVFLldlYkdMUmVuZGVyZXI6IC5zdXBwb3J0c0JsZW5kTWluTWF4KCkgaXMgbm93IC5leHRlbnNpb25zLmdldCggJ0VYVF9ibGVuZF9taW5tYXgnICkuIiksdGhpcy5leHRlbnNpb25zLmdldCgiRVhUX2JsZW5kX21pbm1heCIpfSxzdXBwb3J0c1ZlcnRleFRleHR1cmVzOmZ1bmN0aW9uKCl7cmV0dXJuIGNvbnNvbGUud2FybigiVEhSRUUuV2ViR0xSZW5kZXJlcjogLnN1cHBvcnRzVmVydGV4VGV4dHVyZXMoKSBpcyBub3cgLmNhcGFiaWxpdGllcy52ZXJ0ZXhUZXh0dXJlcy4iKSx0aGlzLmNhcGFiaWxpdGllcy52ZXJ0ZXhUZXh0dXJlc30sc3VwcG9ydHNJbnN0YW5jZWRBcnJheXM6ZnVuY3Rpb24oKXtyZXR1cm4gY29uc29sZS53YXJuKCJUSFJFRS5XZWJHTFJlbmRlcmVyOiAuc3VwcG9ydHNJbnN0YW5jZWRBcnJheXMoKSBpcyBub3cgLmV4dGVuc2lvbnMuZ2V0KCAnQU5HTEVfaW5zdGFuY2VkX2FycmF5cycgKS4iKSx0aGlzLmV4dGVuc2lvbnMuZ2V0KCJBTkdMRV9pbnN0YW5jZWRfYXJyYXlzIil9LGVuYWJsZVNjaXNzb3JUZXN0OmZ1bmN0aW9uKHQpe2NvbnNvbGUud2FybigiVEhSRUUuV2ViR0xSZW5kZXJlcjogLmVuYWJsZVNjaXNzb3JUZXN0KCkgaXMgbm93IC5zZXRTY2lzc29yVGVzdCgpLiIpLHRoaXMuc2V0U2Npc3NvclRlc3QodCl9LGluaXRNYXRlcmlhbDpmdW5jdGlvbigpe2NvbnNvbGUud2FybigiVEhSRUUuV2ViR0xSZW5kZXJlcjogLmluaXRNYXRlcmlhbCgpIGhhcyBiZWVuIHJlbW92ZWQuIil9LGFkZFByZVBsdWdpbjpmdW5jdGlvbigpe2NvbnNvbGUud2FybigiVEhSRUUuV2ViR0xSZW5kZXJlcjogLmFkZFByZVBsdWdpbigpIGhhcyBiZWVuIHJlbW92ZWQuIil9LGFkZFBvc3RQbHVnaW46ZnVuY3Rpb24oKXtjb25zb2xlLndhcm4oIlRIUkVFLldlYkdMUmVuZGVyZXI6IC5hZGRQb3N0UGx1Z2luKCkgaGFzIGJlZW4gcmVtb3ZlZC4iKX0sdXBkYXRlU2hhZG93TWFwOmZ1bmN0aW9uKCl7Y29uc29sZS53YXJuKCJUSFJFRS5XZWJHTFJlbmRlcmVyOiAudXBkYXRlU2hhZG93TWFwKCkgaGFzIGJlZW4gcmVtb3ZlZC4iKX0sc2V0RmFjZUN1bGxpbmc6ZnVuY3Rpb24oKXtjb25zb2xlLndhcm4oIlRIUkVFLldlYkdMUmVuZGVyZXI6IC5zZXRGYWNlQ3VsbGluZygpIGhhcyBiZWVuIHJlbW92ZWQuIil9LGFsbG9jVGV4dHVyZVVuaXQ6ZnVuY3Rpb24oKXtjb25zb2xlLndhcm4oIlRIUkVFLldlYkdMUmVuZGVyZXI6IC5hbGxvY1RleHR1cmVVbml0KCkgaGFzIGJlZW4gcmVtb3ZlZC4iKX0sc2V0VGV4dHVyZTpmdW5jdGlvbigpe2NvbnNvbGUud2FybigiVEhSRUUuV2ViR0xSZW5kZXJlcjogLnNldFRleHR1cmUoKSBoYXMgYmVlbiByZW1vdmVkLiIpfSxzZXRUZXh0dXJlMkQ6ZnVuY3Rpb24oKXtjb25zb2xlLndhcm4oIlRIUkVFLldlYkdMUmVuZGVyZXI6IC5zZXRUZXh0dXJlMkQoKSBoYXMgYmVlbiByZW1vdmVkLiIpfSxzZXRUZXh0dXJlQ3ViZTpmdW5jdGlvbigpe2NvbnNvbGUud2FybigiVEhSRUUuV2ViR0xSZW5kZXJlcjogLnNldFRleHR1cmVDdWJlKCkgaGFzIGJlZW4gcmVtb3ZlZC4iKX0sZ2V0QWN0aXZlTWlwTWFwTGV2ZWw6ZnVuY3Rpb24oKXtyZXR1cm4gY29uc29sZS53YXJuKCJUSFJFRS5XZWJHTFJlbmRlcmVyOiAuZ2V0QWN0aXZlTWlwTWFwTGV2ZWwoKSBpcyBub3cgLmdldEFjdGl2ZU1pcG1hcExldmVsKCkuIiksdGhpcy5nZXRBY3RpdmVNaXBtYXBMZXZlbCgpfX0pLE9iamVjdC5kZWZpbmVQcm9wZXJ0aWVzKHRHdC5wcm90b3R5cGUse3NoYWRvd01hcEVuYWJsZWQ6e2dldDpmdW5jdGlvbigpe3JldHVybiB0aGlzLnNoYWRvd01hcC5lbmFibGVkfSxzZXQ6ZnVuY3Rpb24odCl7Y29uc29sZS53YXJuKCJUSFJFRS5XZWJHTFJlbmRlcmVyOiAuc2hhZG93TWFwRW5hYmxlZCBpcyBub3cgLnNoYWRvd01hcC5lbmFibGVkLiIpLHRoaXMuc2hhZG93TWFwLmVuYWJsZWQ9dH19LHNoYWRvd01hcFR5cGU6e2dldDpmdW5jdGlvbigpe3JldHVybiB0aGlzLnNoYWRvd01hcC50eXBlfSxzZXQ6ZnVuY3Rpb24odCl7Y29uc29sZS53YXJuKCJUSFJFRS5XZWJHTFJlbmRlcmVyOiAuc2hhZG93TWFwVHlwZSBpcyBub3cgLnNoYWRvd01hcC50eXBlLiIpLHRoaXMuc2hhZG93TWFwLnR5cGU9dH19LHNoYWRvd01hcEN1bGxGYWNlOntnZXQ6ZnVuY3Rpb24oKXtjb25zb2xlLndhcm4oIlRIUkVFLldlYkdMUmVuZGVyZXI6IC5zaGFkb3dNYXBDdWxsRmFjZSBoYXMgYmVlbiByZW1vdmVkLiBTZXQgTWF0ZXJpYWwuc2hhZG93U2lkZSBpbnN0ZWFkLiIpfSxzZXQ6ZnVuY3Rpb24oKXtjb25zb2xlLndhcm4oIlRIUkVFLldlYkdMUmVuZGVyZXI6IC5zaGFkb3dNYXBDdWxsRmFjZSBoYXMgYmVlbiByZW1vdmVkLiBTZXQgTWF0ZXJpYWwuc2hhZG93U2lkZSBpbnN0ZWFkLiIpfX0sY29udGV4dDp7Z2V0OmZ1bmN0aW9uKCl7cmV0dXJuIGNvbnNvbGUud2FybigiVEhSRUUuV2ViR0xSZW5kZXJlcjogLmNvbnRleHQgaGFzIGJlZW4gcmVtb3ZlZC4gVXNlIC5nZXRDb250ZXh0KCkgaW5zdGVhZC4iKSx0aGlzLmdldENvbnRleHQoKX19LHZyOntnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gY29uc29sZS53YXJuKCJUSFJFRS5XZWJHTFJlbmRlcmVyOiAudnIgaGFzIGJlZW4gcmVuYW1lZCB0byAueHIiKSx0aGlzLnhyfX0sZ2FtbWFJbnB1dDp7Z2V0OmZ1bmN0aW9uKCl7cmV0dXJuIGNvbnNvbGUud2FybigiVEhSRUUuV2ViR0xSZW5kZXJlcjogLmdhbW1hSW5wdXQgaGFzIGJlZW4gcmVtb3ZlZC4gU2V0IHRoZSBlbmNvZGluZyBmb3IgdGV4dHVyZXMgdmlhIFRleHR1cmUuZW5jb2RpbmcgaW5zdGVhZC4iKSwhMX0sc2V0OmZ1bmN0aW9uKCl7Y29uc29sZS53YXJuKCJUSFJFRS5XZWJHTFJlbmRlcmVyOiAuZ2FtbWFJbnB1dCBoYXMgYmVlbiByZW1vdmVkLiBTZXQgdGhlIGVuY29kaW5nIGZvciB0ZXh0dXJlcyB2aWEgVGV4dHVyZS5lbmNvZGluZyBpbnN0ZWFkLiIpfX0sZ2FtbWFPdXRwdXQ6e2dldDpmdW5jdGlvbigpe3JldHVybiBjb25zb2xlLndhcm4oIlRIUkVFLldlYkdMUmVuZGVyZXI6IC5nYW1tYU91dHB1dCBoYXMgYmVlbiByZW1vdmVkLiBTZXQgV2ViR0xSZW5kZXJlci5vdXRwdXRFbmNvZGluZyBpbnN0ZWFkLiIpLCExfSxzZXQ6ZnVuY3Rpb24odCl7Y29uc29sZS53YXJuKCJUSFJFRS5XZWJHTFJlbmRlcmVyOiAuZ2FtbWFPdXRwdXQgaGFzIGJlZW4gcmVtb3ZlZC4gU2V0IFdlYkdMUmVuZGVyZXIub3V0cHV0RW5jb2RpbmcgaW5zdGVhZC4iKSx0aGlzLm91dHB1dEVuY29kaW5nPSEwPT09dD9YQnQ6WUJ0fX0sdG9uZU1hcHBpbmdXaGl0ZVBvaW50OntnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gY29uc29sZS53YXJuKCJUSFJFRS5XZWJHTFJlbmRlcmVyOiAudG9uZU1hcHBpbmdXaGl0ZVBvaW50IGhhcyBiZWVuIHJlbW92ZWQuIiksMX0sc2V0OmZ1bmN0aW9uKCl7Y29uc29sZS53YXJuKCJUSFJFRS5XZWJHTFJlbmRlcmVyOiAudG9uZU1hcHBpbmdXaGl0ZVBvaW50IGhhcyBiZWVuIHJlbW92ZWQuIil9fX0pLE9iamVjdC5kZWZpbmVQcm9wZXJ0aWVzKFdVdC5wcm90b3R5cGUse2N1bGxGYWNlOntnZXQ6ZnVuY3Rpb24oKXtjb25zb2xlLndhcm4oIlRIUkVFLldlYkdMUmVuZGVyZXI6IC5zaGFkb3dNYXAuY3VsbEZhY2UgaGFzIGJlZW4gcmVtb3ZlZC4gU2V0IE1hdGVyaWFsLnNoYWRvd1NpZGUgaW5zdGVhZC4iKX0sc2V0OmZ1bmN0aW9uKCl7Y29uc29sZS53YXJuKCJUSFJFRS5XZWJHTFJlbmRlcmVyOiAuc2hhZG93TWFwLmN1bGxGYWNlIGhhcyBiZWVuIHJlbW92ZWQuIFNldCBNYXRlcmlhbC5zaGFkb3dTaWRlIGluc3RlYWQuIil9fSxyZW5kZXJSZXZlcnNlU2lkZWQ6e2dldDpmdW5jdGlvbigpe2NvbnNvbGUud2FybigiVEhSRUUuV2ViR0xSZW5kZXJlcjogLnNoYWRvd01hcC5yZW5kZXJSZXZlcnNlU2lkZWQgaGFzIGJlZW4gcmVtb3ZlZC4gU2V0IE1hdGVyaWFsLnNoYWRvd1NpZGUgaW5zdGVhZC4iKX0sc2V0OmZ1bmN0aW9uKCl7Y29uc29sZS53YXJuKCJUSFJFRS5XZWJHTFJlbmRlcmVyOiAuc2hhZG93TWFwLnJlbmRlclJldmVyc2VTaWRlZCBoYXMgYmVlbiByZW1vdmVkLiBTZXQgTWF0ZXJpYWwuc2hhZG93U2lkZSBpbnN0ZWFkLiIpfX0scmVuZGVyU2luZ2xlU2lkZWQ6e2dldDpmdW5jdGlvbigpe2NvbnNvbGUud2FybigiVEhSRUUuV2ViR0xSZW5kZXJlcjogLnNoYWRvd01hcC5yZW5kZXJTaW5nbGVTaWRlZCBoYXMgYmVlbiByZW1vdmVkLiBTZXQgTWF0ZXJpYWwuc2hhZG93U2lkZSBpbnN0ZWFkLiIpfSxzZXQ6ZnVuY3Rpb24oKXtjb25zb2xlLndhcm4oIlRIUkVFLldlYkdMUmVuZGVyZXI6IC5zaGFkb3dNYXAucmVuZGVyU2luZ2xlU2lkZWQgaGFzIGJlZW4gcmVtb3ZlZC4gU2V0IE1hdGVyaWFsLnNoYWRvd1NpZGUgaW5zdGVhZC4iKX19fSksT2JqZWN0LmRlZmluZVByb3BlcnRpZXMoZ0h0LnByb3RvdHlwZSx7d3JhcFM6e2dldDpmdW5jdGlvbigpe3JldHVybiBjb25zb2xlLndhcm4oIlRIUkVFLldlYkdMUmVuZGVyVGFyZ2V0OiAud3JhcFMgaXMgbm93IC50ZXh0dXJlLndyYXBTLiIpLHRoaXMudGV4dHVyZS53cmFwU30sc2V0OmZ1bmN0aW9uKHQpe2NvbnNvbGUud2FybigiVEhSRUUuV2ViR0xSZW5kZXJUYXJnZXQ6IC53cmFwUyBpcyBub3cgLnRleHR1cmUud3JhcFMuIiksdGhpcy50ZXh0dXJlLndyYXBTPXR9fSx3cmFwVDp7Z2V0OmZ1bmN0aW9uKCl7cmV0dXJuIGNvbnNvbGUud2FybigiVEhSRUUuV2ViR0xSZW5kZXJUYXJnZXQ6IC53cmFwVCBpcyBub3cgLnRleHR1cmUud3JhcFQuIiksdGhpcy50ZXh0dXJlLndyYXBUfSxzZXQ6ZnVuY3Rpb24odCl7Y29uc29sZS53YXJuKCJUSFJFRS5XZWJHTFJlbmRlclRhcmdldDogLndyYXBUIGlzIG5vdyAudGV4dHVyZS53cmFwVC4iKSx0aGlzLnRleHR1cmUud3JhcFQ9dH19LG1hZ0ZpbHRlcjp7Z2V0OmZ1bmN0aW9uKCl7cmV0dXJuIGNvbnNvbGUud2FybigiVEhSRUUuV2ViR0xSZW5kZXJUYXJnZXQ6IC5tYWdGaWx0ZXIgaXMgbm93IC50ZXh0dXJlLm1hZ0ZpbHRlci4iKSx0aGlzLnRleHR1cmUubWFnRmlsdGVyfSxzZXQ6ZnVuY3Rpb24odCl7Y29uc29sZS53YXJuKCJUSFJFRS5XZWJHTFJlbmRlclRhcmdldDogLm1hZ0ZpbHRlciBpcyBub3cgLnRleHR1cmUubWFnRmlsdGVyLiIpLHRoaXMudGV4dHVyZS5tYWdGaWx0ZXI9dH19LG1pbkZpbHRlcjp7Z2V0OmZ1bmN0aW9uKCl7cmV0dXJuIGNvbnNvbGUud2FybigiVEhSRUUuV2ViR0xSZW5kZXJUYXJnZXQ6IC5taW5GaWx0ZXIgaXMgbm93IC50ZXh0dXJlLm1pbkZpbHRlci4iKSx0aGlzLnRleHR1cmUubWluRmlsdGVyfSxzZXQ6ZnVuY3Rpb24odCl7Y29uc29sZS53YXJuKCJUSFJFRS5XZWJHTFJlbmRlclRhcmdldDogLm1pbkZpbHRlciBpcyBub3cgLnRleHR1cmUubWluRmlsdGVyLiIpLHRoaXMudGV4dHVyZS5taW5GaWx0ZXI9dH19LGFuaXNvdHJvcHk6e2dldDpmdW5jdGlvbigpe3JldHVybiBjb25zb2xlLndhcm4oIlRIUkVFLldlYkdMUmVuZGVyVGFyZ2V0OiAuYW5pc290cm9weSBpcyBub3cgLnRleHR1cmUuYW5pc290cm9weS4iKSx0aGlzLnRleHR1cmUuYW5pc290cm9weX0sc2V0OmZ1bmN0aW9uKHQpe2NvbnNvbGUud2FybigiVEhSRUUuV2ViR0xSZW5kZXJUYXJnZXQ6IC5hbmlzb3Ryb3B5IGlzIG5vdyAudGV4dHVyZS5hbmlzb3Ryb3B5LiIpLHRoaXMudGV4dHVyZS5hbmlzb3Ryb3B5PXR9fSxvZmZzZXQ6e2dldDpmdW5jdGlvbigpe3JldHVybiBjb25zb2xlLndhcm4oIlRIUkVFLldlYkdMUmVuZGVyVGFyZ2V0OiAub2Zmc2V0IGlzIG5vdyAudGV4dHVyZS5vZmZzZXQuIiksdGhpcy50ZXh0dXJlLm9mZnNldH0sc2V0OmZ1bmN0aW9uKHQpe2NvbnNvbGUud2FybigiVEhSRUUuV2ViR0xSZW5kZXJUYXJnZXQ6IC5vZmZzZXQgaXMgbm93IC50ZXh0dXJlLm9mZnNldC4iKSx0aGlzLnRleHR1cmUub2Zmc2V0PXR9fSxyZXBlYXQ6e2dldDpmdW5jdGlvbigpe3JldHVybiBjb25zb2xlLndhcm4oIlRIUkVFLldlYkdMUmVuZGVyVGFyZ2V0OiAucmVwZWF0IGlzIG5vdyAudGV4dHVyZS5yZXBlYXQuIiksdGhpcy50ZXh0dXJlLnJlcGVhdH0sc2V0OmZ1bmN0aW9uKHQpe2NvbnNvbGUud2FybigiVEhSRUUuV2ViR0xSZW5kZXJUYXJnZXQ6IC5yZXBlYXQgaXMgbm93IC50ZXh0dXJlLnJlcGVhdC4iKSx0aGlzLnRleHR1cmUucmVwZWF0PXR9fSxmb3JtYXQ6e2dldDpmdW5jdGlvbigpe3JldHVybiBjb25zb2xlLndhcm4oIlRIUkVFLldlYkdMUmVuZGVyVGFyZ2V0OiAuZm9ybWF0IGlzIG5vdyAudGV4dHVyZS5mb3JtYXQuIiksdGhpcy50ZXh0dXJlLmZvcm1hdH0sc2V0OmZ1bmN0aW9uKHQpe2NvbnNvbGUud2FybigiVEhSRUUuV2ViR0xSZW5kZXJUYXJnZXQ6IC5mb3JtYXQgaXMgbm93IC50ZXh0dXJlLmZvcm1hdC4iKSx0aGlzLnRleHR1cmUuZm9ybWF0PXR9fSx0eXBlOntnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gY29uc29sZS53YXJuKCJUSFJFRS5XZWJHTFJlbmRlclRhcmdldDogLnR5cGUgaXMgbm93IC50ZXh0dXJlLnR5cGUuIiksdGhpcy50ZXh0dXJlLnR5cGV9LHNldDpmdW5jdGlvbih0KXtjb25zb2xlLndhcm4oIlRIUkVFLldlYkdMUmVuZGVyVGFyZ2V0OiAudHlwZSBpcyBub3cgLnRleHR1cmUudHlwZS4iKSx0aGlzLnRleHR1cmUudHlwZT10fX0sZ2VuZXJhdGVNaXBtYXBzOntnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gY29uc29sZS53YXJuKCJUSFJFRS5XZWJHTFJlbmRlclRhcmdldDogLmdlbmVyYXRlTWlwbWFwcyBpcyBub3cgLnRleHR1cmUuZ2VuZXJhdGVNaXBtYXBzLiIpLHRoaXMudGV4dHVyZS5nZW5lcmF0ZU1pcG1hcHN9LHNldDpmdW5jdGlvbih0KXtjb25zb2xlLndhcm4oIlRIUkVFLldlYkdMUmVuZGVyVGFyZ2V0OiAuZ2VuZXJhdGVNaXBtYXBzIGlzIG5vdyAudGV4dHVyZS5nZW5lcmF0ZU1pcG1hcHMuIiksdGhpcy50ZXh0dXJlLmdlbmVyYXRlTWlwbWFwcz10fX19KSxPYmplY3QuZGVmaW5lUHJvcGVydGllcyhpWHQucHJvdG90eXBlLHtsb2FkOnt2YWx1ZTpmdW5jdGlvbih0KXtjb25zb2xlLndhcm4oIlRIUkVFLkF1ZGlvOiAubG9hZCBoYXMgYmVlbiBkZXByZWNhdGVkLiBVc2UgVEhSRUUuQXVkaW9Mb2FkZXIgaW5zdGVhZC4iKTtjb25zdCBlPXRoaXM7cmV0dXJuKG5ldyBXWXQpLmxvYWQodCwoZnVuY3Rpb24odCl7ZS5zZXRCdWZmZXIodCl9KSksdGhpc319LHN0YXJ0VGltZTp7c2V0OmZ1bmN0aW9uKCl7Y29uc29sZS53YXJuKCJUSFJFRS5BdWRpbzogLnN0YXJ0VGltZSBpcyBub3cgLnBsYXkoIGRlbGF5ICkuIil9fX0pLGxYdC5wcm90b3R5cGUuZ2V0RGF0YT1mdW5jdGlvbigpe3JldHVybiBjb25zb2xlLndhcm4oIlRIUkVFLkF1ZGlvQW5hbHlzZXI6IC5nZXREYXRhKCkgaXMgbm93IC5nZXRGcmVxdWVuY3lEYXRhKCkuIiksdGhpcy5nZXRGcmVxdWVuY3lEYXRhKCl9LFZWdC5wcm90b3R5cGUudXBkYXRlQ3ViZU1hcD1mdW5jdGlvbih0LGUpe3JldHVybiBjb25zb2xlLndhcm4oIlRIUkVFLkN1YmVDYW1lcmE6IC51cGRhdGVDdWJlTWFwKCkgaXMgbm93IC51cGRhdGUoKS4iKSx0aGlzLnVwZGF0ZSh0LGUpfSxWVnQucHJvdG90eXBlLmNsZWFyPWZ1bmN0aW9uKHQsZSxuLGkpe3JldHVybiBjb25zb2xlLndhcm4oIlRIUkVFLkN1YmVDYW1lcmE6IC5jbGVhcigpIGlzIG5vdyAucmVuZGVyVGFyZ2V0LmNsZWFyKCkuIiksdGhpcy5yZW5kZXJUYXJnZXQuY2xlYXIodCxlLG4saSl9O2NvbnN0IE4kdD17bWVyZ2U6ZnVuY3Rpb24odCxlLG4pe2xldCBpO2NvbnNvbGUud2FybigiVEhSRUUuR2VvbWV0cnlVdGlsczogLm1lcmdlKCkgaGFzIGJlZW4gbW92ZWQgdG8gR2VvbWV0cnkuIFVzZSBnZW9tZXRyeS5tZXJnZSggZ2VvbWV0cnkyLCBtYXRyaXgsIG1hdGVyaWFsSW5kZXhPZmZzZXQgKSBpbnN0ZWFkLiIpLGUuaXNNZXNoJiYoZS5tYXRyaXhBdXRvVXBkYXRlJiZlLnVwZGF0ZU1hdHJpeCgpLGk9ZS5tYXRyaXgsZT1lLmdlb21ldHJ5KSx0Lm1lcmdlKGUsaSxuKX0sY2VudGVyOmZ1bmN0aW9uKHQpe3JldHVybiBjb25zb2xlLndhcm4oIlRIUkVFLkdlb21ldHJ5VXRpbHM6IC5jZW50ZXIoKSBoYXMgYmVlbiBtb3ZlZCB0byBHZW9tZXRyeS4gVXNlIGdlb21ldHJ5LmNlbnRlcigpIGluc3RlYWQuIiksdC5jZW50ZXIoKX19O2hIdC5jcm9zc09yaWdpbj12b2lkIDAsaEh0LmxvYWRUZXh0dXJlPWZ1bmN0aW9uKHQsZSxuLGkpe2NvbnNvbGUud2FybigiVEhSRUUuSW1hZ2VVdGlscy5sb2FkVGV4dHVyZSBoYXMgYmVlbiBkZXByZWNhdGVkLiBVc2UgVEhSRUUuVGV4dHVyZUxvYWRlcigpIGluc3RlYWQuIik7Y29uc3Qgcj1uZXcgcXF0O3Iuc2V0Q3Jvc3NPcmlnaW4odGhpcy5jcm9zc09yaWdpbik7Y29uc3Qgbz1yLmxvYWQodCxuLHZvaWQgMCxpKTtyZXR1cm4gZSYmKG8ubWFwcGluZz1lKSxvfSxoSHQubG9hZFRleHR1cmVDdWJlPWZ1bmN0aW9uKHQsZSxuLGkpe2NvbnNvbGUud2FybigiVEhSRUUuSW1hZ2VVdGlscy5sb2FkVGV4dHVyZUN1YmUgaGFzIGJlZW4gZGVwcmVjYXRlZC4gVXNlIFRIUkVFLkN1YmVUZXh0dXJlTG9hZGVyKCkgaW5zdGVhZC4iKTtjb25zdCByPW5ldyBHcXQ7ci5zZXRDcm9zc09yaWdpbih0aGlzLmNyb3NzT3JpZ2luKTtjb25zdCBvPXIubG9hZCh0LG4sdm9pZCAwLGkpO3JldHVybiBlJiYoby5tYXBwaW5nPWUpLG99LGhIdC5sb2FkQ29tcHJlc3NlZFRleHR1cmU9ZnVuY3Rpb24oKXtjb25zb2xlLmVycm9yKCJUSFJFRS5JbWFnZVV0aWxzLmxvYWRDb21wcmVzc2VkVGV4dHVyZSBoYXMgYmVlbiByZW1vdmVkLiBVc2UgVEhSRUUuRERTTG9hZGVyIGluc3RlYWQuIil9LGhIdC5sb2FkQ29tcHJlc3NlZFRleHR1cmVDdWJlPWZ1bmN0aW9uKCl7Y29uc29sZS5lcnJvcigiVEhSRUUuSW1hZ2VVdGlscy5sb2FkQ29tcHJlc3NlZFRleHR1cmVDdWJlIGhhcyBiZWVuIHJlbW92ZWQuIFVzZSBUSFJFRS5ERFNMb2FkZXIgaW5zdGVhZC4iKX07Y29uc3QgTyR0PXtjcmVhdGVNdWx0aU1hdGVyaWFsT2JqZWN0OmZ1bmN0aW9uKCl7Y29uc29sZS5lcnJvcigiVEhSRUUuU2NlbmVVdGlscyBoYXMgYmVlbiBtb3ZlZCB0byAvZXhhbXBsZXMvanNtL3V0aWxzL1NjZW5lVXRpbHMuanMiKX0sZGV0YWNoOmZ1bmN0aW9uKCl7Y29uc29sZS5lcnJvcigiVEhSRUUuU2NlbmVVdGlscyBoYXMgYmVlbiBtb3ZlZCB0byAvZXhhbXBsZXMvanNtL3V0aWxzL1NjZW5lVXRpbHMuanMiKX0sYXR0YWNoOmZ1bmN0aW9uKCl7Y29uc29sZS5lcnJvcigiVEhSRUUuU2NlbmVVdGlscyBoYXMgYmVlbiBtb3ZlZCB0byAvZXhhbXBsZXMvanNtL3V0aWxzL1NjZW5lVXRpbHMuanMiKX19OyJ1bmRlZmluZWQiIT10eXBlb2YgX19USFJFRV9ERVZUT09MU19fJiZfX1RIUkVFX0RFVlRPT0xTX18uZGlzcGF0Y2hFdmVudChuZXcgQ3VzdG9tRXZlbnQoInJlZ2lzdGVyIix7ZGV0YWlsOntyZXZpc2lvbjpRRHR9fSkpLCJ1bmRlZmluZWQiIT10eXBlb2Ygd2luZG93JiYod2luZG93Ll9fVEhSRUVfXz9jb25zb2xlLndhcm4oIldBUk5JTkc6IE11bHRpcGxlIGluc3RhbmNlcyBvZiBUaHJlZS5qcyBiZWluZyBpbXBvcnRlZC4iKTp3aW5kb3cuX19USFJFRV9fPVFEdCk7dmFyIFIkdD1PYmplY3QuZnJlZXplKHtfX3Byb3RvX186bnVsbCxBQ0VTRmlsbWljVG9uZU1hcHBpbmc6NCxBZGRFcXVhdGlvbjpuQnQsQWRkT3BlcmF0aW9uOjIsQWRkaXRpdmVBbmltYXRpb25CbGVuZE1vZGU6cUJ0LEFkZGl0aXZlQmxlbmRpbmc6MixBbHBoYUZvcm1hdDoxMDIxLEFsd2F5c0RlcHRoOjEsQWx3YXlzU3RlbmNpbEZ1bmM6NTE5LEFtYmllbnRMaWdodDpUWXQsQW1iaWVudExpZ2h0UHJvYmU6WVl0LEFuaW1hdGlvbkNsaXA6TnF0LEFuaW1hdGlvbkxvYWRlcjpWcXQsQW5pbWF0aW9uTWl4ZXI6U1h0LEFuaW1hdGlvbk9iamVjdEdyb3VwOnhYdCxBbmltYXRpb25VdGlsczpicXQsQXJjQ3VydmU6JHF0LEFycmF5Q2FtZXJhOiRVdCxBcnJvd0hlbHBlcjpjbGFzcyBleHRlbmRzIF9GdHtjb25zdHJ1Y3Rvcih0LGUsbixpLHIsbyl7c3VwZXIoKSx0aGlzLnR5cGU9IkFycm93SGVscGVyIix2b2lkIDA9PT10JiYodD1uZXcgeUh0KDAsMCwxKSksdm9pZCAwPT09ZSYmKGU9bmV3IHlIdCgwLDAsMCkpLHZvaWQgMD09PW4mJihuPTEpLHZvaWQgMD09PWkmJihpPTE2Nzc2OTYwKSx2b2lkIDA9PT1yJiYocj0uMipuKSx2b2lkIDA9PT1vJiYobz0uMipyKSx2b2lkIDA9PT1uJHQmJihuJHQ9bmV3IHBWdCxuJHQuc2V0QXR0cmlidXRlKCJwb3NpdGlvbiIsbmV3IGVWdChbMCwwLDAsMCwxLDBdLDMpKSxpJHQ9bmV3IGhXdCgwLC41LDEsNSwxKSxpJHQudHJhbnNsYXRlKDAsLS41LDApKSx0aGlzLnBvc2l0aW9uLmNvcHkoZSksdGhpcy5saW5lPW5ldyBYR3QobiR0LG5ldyBqR3Qoe2NvbG9yOmksdG9uZU1hcHBlZDohMX0pKSx0aGlzLmxpbmUubWF0cml4QXV0b1VwZGF0ZT0hMSx0aGlzLmFkZCh0aGlzLmxpbmUpLHRoaXMuY29uZT1uZXcgUFZ0KGkkdCxuZXcgVUZ0KHtjb2xvcjppLHRvbmVNYXBwZWQ6ITF9KSksdGhpcy5jb25lLm1hdHJpeEF1dG9VcGRhdGU9ITEsdGhpcy5hZGQodGhpcy5jb25lKSx0aGlzLnNldERpcmVjdGlvbih0KSx0aGlzLnNldExlbmd0aChuLHIsbyl9c2V0RGlyZWN0aW9uKHQpe2lmKHQueT4uOTk5OTkpdGhpcy5xdWF0ZXJuaW9uLnNldCgwLDAsMCwxKTtlbHNlIGlmKHQueTwtLjk5OTk5KXRoaXMucXVhdGVybmlvbi5zZXQoMSwwLDAsMCk7ZWxzZXtlJHQuc2V0KHQueiwwLC10LngpLm5vcm1hbGl6ZSgpO2NvbnN0IGU9TWF0aC5hY29zKHQueSk7dGhpcy5xdWF0ZXJuaW9uLnNldEZyb21BeGlzQW5nbGUoZSR0LGUpfX1zZXRMZW5ndGgodCxlLG4pe3ZvaWQgMD09PWUmJihlPS4yKnQpLHZvaWQgMD09PW4mJihuPS4yKmUpLHRoaXMubGluZS5zY2FsZS5zZXQoMSxNYXRoLm1heCgxZS00LHQtZSksMSksdGhpcy5saW5lLnVwZGF0ZU1hdHJpeCgpLHRoaXMuY29uZS5zY2FsZS5zZXQobixlLG4pLHRoaXMuY29uZS5wb3NpdGlvbi55PXQsdGhpcy5jb25lLnVwZGF0ZU1hdHJpeCgpfXNldENvbG9yKHQpe3RoaXMubGluZS5tYXRlcmlhbC5jb2xvci5zZXQodCksdGhpcy5jb25lLm1hdGVyaWFsLmNvbG9yLnNldCh0KX1jb3B5KHQpe3JldHVybiBzdXBlci5jb3B5KHQsITEpLHRoaXMubGluZS5jb3B5KHQubGluZSksdGhpcy5jb25lLmNvcHkodC5jb25lKSx0aGlzfX0sQXVkaW86aVh0LEF1ZGlvQW5hbHlzZXI6bFh0LEF1ZGlvQ29udGV4dDpHWXQsQXVkaW9MaXN0ZW5lcjpjbGFzcyBleHRlbmRzIF9GdHtjb25zdHJ1Y3Rvcigpe3N1cGVyKCksdGhpcy50eXBlPSJBdWRpb0xpc3RlbmVyIix0aGlzLmNvbnRleHQ9R1l0LmdldENvbnRleHQoKSx0aGlzLmdhaW49dGhpcy5jb250ZXh0LmNyZWF0ZUdhaW4oKSx0aGlzLmdhaW4uY29ubmVjdCh0aGlzLmNvbnRleHQuZGVzdGluYXRpb24pLHRoaXMuZmlsdGVyPW51bGwsdGhpcy50aW1lRGVsdGE9MCx0aGlzLl9jbG9jaz1uZXcgWll0fWdldElucHV0KCl7cmV0dXJuIHRoaXMuZ2Fpbn1yZW1vdmVGaWx0ZXIoKXtyZXR1cm4gbnVsbCE9PXRoaXMuZmlsdGVyJiYodGhpcy5nYWluLmRpc2Nvbm5lY3QodGhpcy5maWx0ZXIpLHRoaXMuZmlsdGVyLmRpc2Nvbm5lY3QodGhpcy5jb250ZXh0LmRlc3RpbmF0aW9uKSx0aGlzLmdhaW4uY29ubmVjdCh0aGlzLmNvbnRleHQuZGVzdGluYXRpb24pLHRoaXMuZmlsdGVyPW51bGwpLHRoaXN9Z2V0RmlsdGVyKCl7cmV0dXJuIHRoaXMuZmlsdGVyfXNldEZpbHRlcih0KXtyZXR1cm4gbnVsbCE9PXRoaXMuZmlsdGVyPyh0aGlzLmdhaW4uZGlzY29ubmVjdCh0aGlzLmZpbHRlciksdGhpcy5maWx0ZXIuZGlzY29ubmVjdCh0aGlzLmNvbnRleHQuZGVzdGluYXRpb24pKTp0aGlzLmdhaW4uZGlzY29ubmVjdCh0aGlzLmNvbnRleHQuZGVzdGluYXRpb24pLHRoaXMuZmlsdGVyPXQsdGhpcy5nYWluLmNvbm5lY3QodGhpcy5maWx0ZXIpLHRoaXMuZmlsdGVyLmNvbm5lY3QodGhpcy5jb250ZXh0LmRlc3RpbmF0aW9uKSx0aGlzfWdldE1hc3RlclZvbHVtZSgpe3JldHVybiB0aGlzLmdhaW4uZ2Fpbi52YWx1ZX1zZXRNYXN0ZXJWb2x1bWUodCl7cmV0dXJuIHRoaXMuZ2Fpbi5nYWluLnNldFRhcmdldEF0VGltZSh0LHRoaXMuY29udGV4dC5jdXJyZW50VGltZSwuMDEpLHRoaXN9dXBkYXRlTWF0cml4V29ybGQodCl7c3VwZXIudXBkYXRlTWF0cml4V29ybGQodCk7Y29uc3QgZT10aGlzLmNvbnRleHQubGlzdGVuZXIsbj10aGlzLnVwO2lmKHRoaXMudGltZURlbHRhPXRoaXMuX2Nsb2NrLmdldERlbHRhKCksdGhpcy5tYXRyaXhXb3JsZC5kZWNvbXBvc2UoUVl0LHRYdCxlWHQpLG5YdC5zZXQoMCwwLC0xKS5hcHBseVF1YXRlcm5pb24odFh0KSxlLnBvc2l0aW9uWCl7Y29uc3QgdD10aGlzLmNvbnRleHQuY3VycmVudFRpbWUrdGhpcy50aW1lRGVsdGE7ZS5wb3NpdGlvblgubGluZWFyUmFtcFRvVmFsdWVBdFRpbWUoUVl0LngsdCksZS5wb3NpdGlvblkubGluZWFyUmFtcFRvVmFsdWVBdFRpbWUoUVl0LnksdCksZS5wb3NpdGlvbloubGluZWFyUmFtcFRvVmFsdWVBdFRpbWUoUVl0LnosdCksZS5mb3J3YXJkWC5saW5lYXJSYW1wVG9WYWx1ZUF0VGltZShuWHQueCx0KSxlLmZvcndhcmRZLmxpbmVhclJhbXBUb1ZhbHVlQXRUaW1lKG5YdC55LHQpLGUuZm9yd2FyZFoubGluZWFyUmFtcFRvVmFsdWVBdFRpbWUoblh0LnosdCksZS51cFgubGluZWFyUmFtcFRvVmFsdWVBdFRpbWUobi54LHQpLGUudXBZLmxpbmVhclJhbXBUb1ZhbHVlQXRUaW1lKG4ueSx0KSxlLnVwWi5saW5lYXJSYW1wVG9WYWx1ZUF0VGltZShuLnosdCl9ZWxzZSBlLnNldFBvc2l0aW9uKFFZdC54LFFZdC55LFFZdC56KSxlLnNldE9yaWVudGF0aW9uKG5YdC54LG5YdC55LG5YdC56LG4ueCxuLnksbi56KX19LEF1ZGlvTG9hZGVyOldZdCxBeGVzSGVscGVyOnIkdCxBeGlzSGVscGVyOmZ1bmN0aW9uIHokdCh0KXtyZXR1cm4gY29uc29sZS53YXJuKCJUSFJFRS5BeGlzSGVscGVyIGhhcyBiZWVuIHJlbmFtZWQgdG8gVEhSRUUuQXhlc0hlbHBlci4iKSxuZXcgciR0KHQpfSxCYWNrU2lkZToxLEJhc2ljRGVwdGhQYWNraW5nOjMyMDAsQmFzaWNTaGFkb3dNYXA6MCxCaW5hcnlUZXh0dXJlTG9hZGVyOmZ1bmN0aW9uIEQkdCh0KXtyZXR1cm4gY29uc29sZS53YXJuKCJUSFJFRS5CaW5hcnlUZXh0dXJlTG9hZGVyIGhhcyBiZWVuIHJlbmFtZWQgdG8gVEhSRUUuRGF0YVRleHR1cmVMb2FkZXIuIiksbmV3IFdxdCh0KX0sQm9uZTpOR3QsQm9vbGVhbktleWZyYW1lVHJhY2s6VHF0LEJvdW5kaW5nQm94SGVscGVyOmZ1bmN0aW9uIEIkdCh0LGUpe3JldHVybiBjb25zb2xlLndhcm4oIlRIUkVFLkJvdW5kaW5nQm94SGVscGVyIGhhcyBiZWVuIGRlcHJlY2F0ZWQuIENyZWF0aW5nIGEgVEhSRUUuQm94SGVscGVyIGluc3RlYWQuIiksbmV3IHQkdCh0LGUpfSxCb3gyOklYdCxCb3gzOnhIdCxCb3gzSGVscGVyOmNsYXNzIGV4dGVuZHMgWkd0e2NvbnN0cnVjdG9yKHQsZT0xNjc3Njk2MCl7Y29uc3Qgbj1uZXcgVWludDE2QXJyYXkoWzAsMSwxLDIsMiwzLDMsMCw0LDUsNSw2LDYsNyw3LDQsMCw0LDEsNSwyLDYsMyw3XSksaT1uZXcgcFZ0O2kuc2V0SW5kZXgobmV3IHFGdChuLDEpKSxpLnNldEF0dHJpYnV0ZSgicG9zaXRpb24iLG5ldyBlVnQoWzEsMSwxLC0xLDEsMSwtMSwtMSwxLDEsLTEsMSwxLDEsLTEsLTEsMSwtMSwtMSwtMSwtMSwxLC0xLC0xXSwzKSksc3VwZXIoaSxuZXcgakd0KHtjb2xvcjplLHRvbmVNYXBwZWQ6ITF9KSksdGhpcy5ib3g9dCx0aGlzLnR5cGU9IkJveDNIZWxwZXIiLHRoaXMuZ2VvbWV0cnkuY29tcHV0ZUJvdW5kaW5nU3BoZXJlKCl9dXBkYXRlTWF0cml4V29ybGQodCl7Y29uc3QgZT10aGlzLmJveDtlLmlzRW1wdHkoKXx8KGUuZ2V0Q2VudGVyKHRoaXMucG9zaXRpb24pLGUuZ2V0U2l6ZSh0aGlzLnNjYWxlKSx0aGlzLnNjYWxlLm11bHRpcGx5U2NhbGFyKC41KSxzdXBlci51cGRhdGVNYXRyaXhXb3JsZCh0KSl9fSxCb3hCdWZmZXJHZW9tZXRyeTpOVnQsQm94R2VvbWV0cnk6TlZ0LEJveEhlbHBlcjp0JHQsQnVmZmVyQXR0cmlidXRlOnFGdCxCdWZmZXJHZW9tZXRyeTpwVnQsQnVmZmVyR2VvbWV0cnlMb2FkZXI6T1l0LEJ5dGVUeXBlOjEwMTAsQ2FjaGU6UnF0LENhbWVyYTpCVnQsQ2FtZXJhSGVscGVyOmNsYXNzIGV4dGVuZHMgWkd0e2NvbnN0cnVjdG9yKHQpe2NvbnN0IGU9bmV3IHBWdCxuPW5ldyBqR3Qoe2NvbG9yOjE2Nzc3MjE1LHZlcnRleENvbG9yczohMCx0b25lTWFwcGVkOiExfSksaT1bXSxyPVtdLG89e30sYT1uZXcgSEZ0KDE2NzU1MjAwKSxzPW5ldyBIRnQoMTY3MTE2ODApLGw9bmV3IEhGdCg0Mzc3NSksYz1uZXcgSEZ0KDE2Nzc3MjE1KSx1PW5ldyBIRnQoMzM1NTQ0Myk7ZnVuY3Rpb24gaCh0LGUsbil7ZCh0LG4pLGQoZSxuKX1mdW5jdGlvbiBkKHQsZSl7aS5wdXNoKDAsMCwwKSxyLnB1c2goZS5yLGUuZyxlLmIpLHZvaWQgMD09PW9bdF0mJihvW3RdPVtdKSxvW3RdLnB1c2goaS5sZW5ndGgvMy0xKX1oKCJuMSIsIm4yIixhKSxoKCJuMiIsIm40IixhKSxoKCJuNCIsIm4zIixhKSxoKCJuMyIsIm4xIixhKSxoKCJmMSIsImYyIixhKSxoKCJmMiIsImY0IixhKSxoKCJmNCIsImYzIixhKSxoKCJmMyIsImYxIixhKSxoKCJuMSIsImYxIixhKSxoKCJuMiIsImYyIixhKSxoKCJuMyIsImYzIixhKSxoKCJuNCIsImY0IixhKSxoKCJwIiwibjEiLHMpLGgoInAiLCJuMiIscyksaCgicCIsIm4zIixzKSxoKCJwIiwibjQiLHMpLGgoInUxIiwidTIiLGwpLGgoInUyIiwidTMiLGwpLGgoInUzIiwidTEiLGwpLGgoImMiLCJ0IixjKSxoKCJwIiwiYyIsdSksaCgiY24xIiwiY24yIix1KSxoKCJjbjMiLCJjbjQiLHUpLGgoImNmMSIsImNmMiIsdSksaCgiY2YzIiwiY2Y0Iix1KSxlLnNldEF0dHJpYnV0ZSgicG9zaXRpb24iLG5ldyBlVnQoaSwzKSksZS5zZXRBdHRyaWJ1dGUoImNvbG9yIixuZXcgZVZ0KHIsMykpLHN1cGVyKGUsbiksdGhpcy50eXBlPSJDYW1lcmFIZWxwZXIiLHRoaXMuY2FtZXJhPXQsdGhpcy5jYW1lcmEudXBkYXRlUHJvamVjdGlvbk1hdHJpeCYmdGhpcy5jYW1lcmEudXBkYXRlUHJvamVjdGlvbk1hdHJpeCgpLHRoaXMubWF0cml4PXQubWF0cml4V29ybGQsdGhpcy5tYXRyaXhBdXRvVXBkYXRlPSExLHRoaXMucG9pbnRNYXA9byx0aGlzLnVwZGF0ZSgpfXVwZGF0ZSgpe2NvbnN0IHQ9dGhpcy5nZW9tZXRyeSxlPXRoaXMucG9pbnRNYXA7Wlh0LnByb2plY3Rpb25NYXRyaXhJbnZlcnNlLmNvcHkodGhpcy5jYW1lcmEucHJvamVjdGlvbk1hdHJpeEludmVyc2UpLEpYdCgiYyIsZSx0LFpYdCwwLDAsLTEpLEpYdCgidCIsZSx0LFpYdCwwLDAsMSksSlh0KCJuMSIsZSx0LFpYdCwtMSwtMSwtMSksSlh0KCJuMiIsZSx0LFpYdCwxLC0xLC0xKSxKWHQoIm4zIixlLHQsWlh0LC0xLDEsLTEpLEpYdCgibjQiLGUsdCxaWHQsMSwxLC0xKSxKWHQoImYxIixlLHQsWlh0LC0xLC0xLDEpLEpYdCgiZjIiLGUsdCxaWHQsMSwtMSwxKSxKWHQoImYzIixlLHQsWlh0LC0xLDEsMSksSlh0KCJmNCIsZSx0LFpYdCwxLDEsMSksSlh0KCJ1MSIsZSx0LFpYdCwuNywxLjEsLTEpLEpYdCgidTIiLGUsdCxaWHQsLS43LDEuMSwtMSksSlh0KCJ1MyIsZSx0LFpYdCwwLDIsLTEpLEpYdCgiY2YxIixlLHQsWlh0LC0xLDAsMSksSlh0KCJjZjIiLGUsdCxaWHQsMSwwLDEpLEpYdCgiY2YzIixlLHQsWlh0LDAsLTEsMSksSlh0KCJjZjQiLGUsdCxaWHQsMCwxLDEpLEpYdCgiY24xIixlLHQsWlh0LC0xLDAsLTEpLEpYdCgiY24yIixlLHQsWlh0LDEsMCwtMSksSlh0KCJjbjMiLGUsdCxaWHQsMCwtMSwtMSksSlh0KCJjbjQiLGUsdCxaWHQsMCwxLC0xKSx0LmdldEF0dHJpYnV0ZSgicG9zaXRpb24iKS5uZWVkc1VwZGF0ZT0hMH19LENhbnZhc1JlbmRlcmVyOmZ1bmN0aW9uIEgkdCgpe2NvbnNvbGUuZXJyb3IoIlRIUkVFLkNhbnZhc1JlbmRlcmVyIGhhcyBiZWVuIHJlbW92ZWQiKX0sQ2FudmFzVGV4dHVyZTpsV3QsQ2F0bXVsbFJvbUN1cnZlMzplWXQsQ2luZW9uVG9uZU1hcHBpbmc6MyxDaXJjbGVCdWZmZXJHZW9tZXRyeTp1V3QsQ2lyY2xlR2VvbWV0cnk6dVd0LENsYW1wVG9FZGdlV3JhcHBpbmc6aEJ0LENsb2NrOlpZdCxDbG9zZWRTcGxpbmVDdXJ2ZTM6TCR0LENvbG9yOkhGdCxDb2xvcktleWZyYW1lVHJhY2s6QXF0LENvbXByZXNzZWRUZXh0dXJlOnNXdCxDb21wcmVzc2VkVGV4dHVyZUxvYWRlcjpqcXQsQ29uZUJ1ZmZlckdlb21ldHJ5OmRXdCxDb25lR2VvbWV0cnk6ZFd0LEN1YmVDYW1lcmE6VlZ0LEN1YmVSZWZsZWN0aW9uTWFwcGluZzpyQnQsQ3ViZVJlZnJhY3Rpb25NYXBwaW5nOm9CdCxDdWJlVGV4dHVyZTpqVnQsQ3ViZVRleHR1cmVMb2FkZXI6R3F0LEN1YmVVVlJlZmxlY3Rpb25NYXBwaW5nOmxCdCxDdWJlVVZSZWZyYWN0aW9uTWFwcGluZzpjQnQsQ3ViaWNCZXppZXJDdXJ2ZTpvWXQsQ3ViaWNCZXppZXJDdXJ2ZTM6YVl0LEN1YmljSW50ZXJwb2xhbnQ6d3F0LEN1bGxGYWNlQmFjazoxLEN1bGxGYWNlRnJvbnQ6MixDdWxsRmFjZUZyb250QmFjazozLEN1bGxGYWNlTm9uZTowLEN1cnZlOllxdCxDdXJ2ZVBhdGg6cFl0LEN1c3RvbUJsZW5kaW5nOjUsQ3VzdG9tVG9uZU1hcHBpbmc6NSxDeWxpbmRlckJ1ZmZlckdlb21ldHJ5OmhXdCxDeWxpbmRlckdlb21ldHJ5OmhXdCxDeWxpbmRyaWNhbDpjbGFzc3tjb25zdHJ1Y3Rvcih0LGUsbil7cmV0dXJuIHRoaXMucmFkaXVzPXZvaWQgMCE9PXQ/dDoxLHRoaXMudGhldGE9dm9pZCAwIT09ZT9lOjAsdGhpcy55PXZvaWQgMCE9PW4/bjowLHRoaXN9c2V0KHQsZSxuKXtyZXR1cm4gdGhpcy5yYWRpdXM9dCx0aGlzLnRoZXRhPWUsdGhpcy55PW4sdGhpc31jbG9uZSgpe3JldHVybihuZXcgdGhpcy5jb25zdHJ1Y3RvcikuY29weSh0aGlzKX1jb3B5KHQpe3JldHVybiB0aGlzLnJhZGl1cz10LnJhZGl1cyx0aGlzLnRoZXRhPXQudGhldGEsdGhpcy55PXQueSx0aGlzfXNldEZyb21WZWN0b3IzKHQpe3JldHVybiB0aGlzLnNldEZyb21DYXJ0ZXNpYW5Db29yZHModC54LHQueSx0LnopfXNldEZyb21DYXJ0ZXNpYW5Db29yZHModCxlLG4pe3JldHVybiB0aGlzLnJhZGl1cz1NYXRoLnNxcnQodCp0K24qbiksdGhpcy50aGV0YT1NYXRoLmF0YW4yKHQsbiksdGhpcy55PWUsdGhpc319LERhdGFUZXh0dXJlOkdWdCxEYXRhVGV4dHVyZTJEQXJyYXk6Zmp0LERhdGFUZXh0dXJlM0Q6bWp0LERhdGFUZXh0dXJlTG9hZGVyOldxdCxEYXRhVXRpbHM6cyR0LERlY3JlbWVudFN0ZW5jaWxPcDo3NjgzLERlY3JlbWVudFdyYXBTdGVuY2lsT3A6MzQwNTYsRGVmYXVsdExvYWRpbmdNYW5hZ2VyOkRxdCxEZXB0aEZvcm1hdDpBQnQsRGVwdGhTdGVuY2lsRm9ybWF0OkNCdCxEZXB0aFRleHR1cmU6Y1d0LERpcmVjdGlvbmFsTGlnaHQ6RVl0LERpcmVjdGlvbmFsTGlnaHRIZWxwZXI6Y2xhc3MgZXh0ZW5kcyBfRnR7Y29uc3RydWN0b3IodCxlLG4pe3N1cGVyKCksdGhpcy5saWdodD10LHRoaXMubGlnaHQudXBkYXRlTWF0cml4V29ybGQoKSx0aGlzLm1hdHJpeD10Lm1hdHJpeFdvcmxkLHRoaXMubWF0cml4QXV0b1VwZGF0ZT0hMSx0aGlzLmNvbG9yPW4sdm9pZCAwPT09ZSYmKGU9MSk7bGV0IGk9bmV3IHBWdDtpLnNldEF0dHJpYnV0ZSgicG9zaXRpb24iLG5ldyBlVnQoWy1lLGUsMCxlLGUsMCxlLC1lLDAsLWUsLWUsMCwtZSxlLDBdLDMpKTtjb25zdCByPW5ldyBqR3Qoe2ZvZzohMSx0b25lTWFwcGVkOiExfSk7dGhpcy5saWdodFBsYW5lPW5ldyBYR3QoaSxyKSx0aGlzLmFkZCh0aGlzLmxpZ2h0UGxhbmUpLGk9bmV3IHBWdCxpLnNldEF0dHJpYnV0ZSgicG9zaXRpb24iLG5ldyBlVnQoWzAsMCwwLDAsMCwxXSwzKSksdGhpcy50YXJnZXRMaW5lPW5ldyBYR3QoaSxyKSx0aGlzLmFkZCh0aGlzLnRhcmdldExpbmUpLHRoaXMudXBkYXRlKCl9ZGlzcG9zZSgpe3RoaXMubGlnaHRQbGFuZS5nZW9tZXRyeS5kaXNwb3NlKCksdGhpcy5saWdodFBsYW5lLm1hdGVyaWFsLmRpc3Bvc2UoKSx0aGlzLnRhcmdldExpbmUuZ2VvbWV0cnkuZGlzcG9zZSgpLHRoaXMudGFyZ2V0TGluZS5tYXRlcmlhbC5kaXNwb3NlKCl9dXBkYXRlKCl7WVh0LnNldEZyb21NYXRyaXhQb3NpdGlvbih0aGlzLmxpZ2h0Lm1hdHJpeFdvcmxkKSxYWHQuc2V0RnJvbU1hdHJpeFBvc2l0aW9uKHRoaXMubGlnaHQudGFyZ2V0Lm1hdHJpeFdvcmxkKSwkWHQuc3ViVmVjdG9ycyhYWHQsWVh0KSx0aGlzLmxpZ2h0UGxhbmUubG9va0F0KFhYdCksdm9pZCAwIT09dGhpcy5jb2xvcj8odGhpcy5saWdodFBsYW5lLm1hdGVyaWFsLmNvbG9yLnNldCh0aGlzLmNvbG9yKSx0aGlzLnRhcmdldExpbmUubWF0ZXJpYWwuY29sb3Iuc2V0KHRoaXMuY29sb3IpKToodGhpcy5saWdodFBsYW5lLm1hdGVyaWFsLmNvbG9yLmNvcHkodGhpcy5saWdodC5jb2xvciksdGhpcy50YXJnZXRMaW5lLm1hdGVyaWFsLmNvbG9yLmNvcHkodGhpcy5saWdodC5jb2xvcikpLHRoaXMudGFyZ2V0TGluZS5sb29rQXQoWFh0KSx0aGlzLnRhcmdldExpbmUuc2NhbGUuej0kWHQubGVuZ3RoKCl9fSxEaXNjcmV0ZUludGVycG9sYW50Ok1xdCxEb2RlY2FoZWRyb25CdWZmZXJHZW9tZXRyeTpmV3QsRG9kZWNhaGVkcm9uR2VvbWV0cnk6Zld0LERvdWJsZVNpZGU6MixEc3RBbHBoYUZhY3RvcjoyMDYsRHN0Q29sb3JGYWN0b3I6MjA4LER5bmFtaWNCdWZmZXJBdHRyaWJ1dGU6ZnVuY3Rpb24gRiR0KHQsZSl7cmV0dXJuIGNvbnNvbGUud2FybigiVEhSRUUuRHluYW1pY0J1ZmZlckF0dHJpYnV0ZSBoYXMgYmVlbiByZW1vdmVkLiBVc2UgbmV3IFRIUkVFLkJ1ZmZlckF0dHJpYnV0ZSgpLnNldFVzYWdlKCBUSFJFRS5EeW5hbWljRHJhd1VzYWdlICkgaW5zdGVhZC4iKSxuZXcgcUZ0KHQsZSkuc2V0VXNhZ2Uobkh0KX0sRHluYW1pY0NvcHlVc2FnZTozNTA1MCxEeW5hbWljRHJhd1VzYWdlOm5IdCxEeW5hbWljUmVhZFVzYWdlOjM1MDQ5LEVkZ2VzR2VvbWV0cnk6dld0LEVkZ2VzSGVscGVyOmZ1bmN0aW9uIFYkdCh0LGUpe3JldHVybiBjb25zb2xlLndhcm4oIlRIUkVFLkVkZ2VzSGVscGVyIGhhcyBiZWVuIHJlbW92ZWQuIFVzZSBUSFJFRS5FZGdlc0dlb21ldHJ5IGluc3RlYWQuIiksbmV3IFpHdChuZXcgdld0KHQuZ2VvbWV0cnkpLG5ldyBqR3Qoe2NvbG9yOnZvaWQgMCE9PWU/ZToxNjc3NzIxNX0pKX0sRWxsaXBzZUN1cnZlOlhxdCxFcXVhbERlcHRoOjQsRXF1YWxTdGVuY2lsRnVuYzo1MTQsRXF1aXJlY3Rhbmd1bGFyUmVmbGVjdGlvbk1hcHBpbmc6YUJ0LEVxdWlyZWN0YW5ndWxhclJlZnJhY3Rpb25NYXBwaW5nOnNCdCxFdWxlcjp0RnQsRXZlbnREaXNwYXRjaGVyOnJIdCxFeHRydWRlQnVmZmVyR2VvbWV0cnk6WVd0LEV4dHJ1ZGVHZW9tZXRyeTpZV3QsRmFjZTM6RkZ0LEZhY2U0OmZ1bmN0aW9uIGokdCh0LGUsbixpLHIsbyxhKXtyZXR1cm4gY29uc29sZS53YXJuKCJUSFJFRS5GYWNlNCBoYXMgYmVlbiByZW1vdmVkLiBBIFRIUkVFLkZhY2UzIHdpbGwgYmUgY3JlYXRlZCBpbnN0ZWFkLiIpLG5ldyBGRnQodCxlLG4scixvLGEpfSxGYWNlQ29sb3JzOjEsRmlsZUxvYWRlcjpGcXQsRmxhdFNoYWRpbmc6MSxGbG9hdDE2QnVmZmVyQXR0cmlidXRlOnRWdCxGbG9hdDMyQXR0cmlidXRlOmZ1bmN0aW9uIFUkdCh0LGUpe3JldHVybiBjb25zb2xlLndhcm4oIlRIUkVFLkZsb2F0MzJBdHRyaWJ1dGUgaGFzIGJlZW4gcmVtb3ZlZC4gVXNlIG5ldyBUSFJFRS5GbG9hdDMyQnVmZmVyQXR0cmlidXRlKCkgaW5zdGVhZC4iKSxuZXcgZVZ0KHQsZSl9LEZsb2F0MzJCdWZmZXJBdHRyaWJ1dGU6ZVZ0LEZsb2F0NjRBdHRyaWJ1dGU6ZnVuY3Rpb24gRyR0KHQsZSl7cmV0dXJuIGNvbnNvbGUud2FybigiVEhSRUUuRmxvYXQ2NEF0dHJpYnV0ZSBoYXMgYmVlbiByZW1vdmVkLiBVc2UgbmV3IFRIUkVFLkZsb2F0NjRCdWZmZXJBdHRyaWJ1dGUoKSBpbnN0ZWFkLiIpLG5ldyBuVnQodCxlKX0sRmxvYXQ2NEJ1ZmZlckF0dHJpYnV0ZTpuVnQsRmxvYXRUeXBlOndCdCxGb2c6aUd0LEZvZ0V4cDI6bkd0LEZvbnQ6Rll0LEZvbnRMb2FkZXI6all0LEZyb250U2lkZTowLEZydXN0dW06WVZ0LEdMQnVmZmVyQXR0cmlidXRlOlRYdCxHTFNMMToiMTAwIixHTFNMMzppSHQsR2FtbWFFbmNvZGluZzokQnQsR2VvbWV0cnlVdGlsczpOJHQsR3JlYXRlckRlcHRoOjYsR3JlYXRlckVxdWFsRGVwdGg6NSxHcmVhdGVyRXF1YWxTdGVuY2lsRnVuYzo1MTgsR3JlYXRlclN0ZW5jaWxGdW5jOjUxNixHcmlkSGVscGVyOnFYdCxHcm91cDpLVXQsSGFsZkZsb2F0VHlwZTpTQnQsSGVtaXNwaGVyZUxpZ2h0Ol9ZdCxIZW1pc3BoZXJlTGlnaHRIZWxwZXI6Y2xhc3MgZXh0ZW5kcyBfRnR7Y29uc3RydWN0b3IodCxlLG4pe3N1cGVyKCksdGhpcy5saWdodD10LHRoaXMubGlnaHQudXBkYXRlTWF0cml4V29ybGQoKSx0aGlzLm1hdHJpeD10Lm1hdHJpeFdvcmxkLHRoaXMubWF0cml4QXV0b1VwZGF0ZT0hMSx0aGlzLmNvbG9yPW47Y29uc3QgaT1uZXcgWld0KGUpO2kucm90YXRlWSguNSpNYXRoLlBJKSx0aGlzLm1hdGVyaWFsPW5ldyBVRnQoe3dpcmVmcmFtZTohMCxmb2c6ITEsdG9uZU1hcHBlZDohMX0pLHZvaWQgMD09PXRoaXMuY29sb3ImJih0aGlzLm1hdGVyaWFsLnZlcnRleENvbG9ycz0hMCk7Y29uc3Qgcj1pLmdldEF0dHJpYnV0ZSgicG9zaXRpb24iKSxvPW5ldyBGbG9hdDMyQXJyYXkoMypyLmNvdW50KTtpLnNldEF0dHJpYnV0ZSgiY29sb3IiLG5ldyBxRnQobywzKSksdGhpcy5hZGQobmV3IFBWdChpLHRoaXMubWF0ZXJpYWwpKSx0aGlzLnVwZGF0ZSgpfWRpc3Bvc2UoKXt0aGlzLmNoaWxkcmVuWzBdLmdlb21ldHJ5LmRpc3Bvc2UoKSx0aGlzLmNoaWxkcmVuWzBdLm1hdGVyaWFsLmRpc3Bvc2UoKX11cGRhdGUoKXtjb25zdCB0PXRoaXMuY2hpbGRyZW5bMF07aWYodm9pZCAwIT09dGhpcy5jb2xvcil0aGlzLm1hdGVyaWFsLmNvbG9yLnNldCh0aGlzLmNvbG9yKTtlbHNle2NvbnN0IGU9dC5nZW9tZXRyeS5nZXRBdHRyaWJ1dGUoImNvbG9yIik7R1h0LmNvcHkodGhpcy5saWdodC5jb2xvciksV1h0LmNvcHkodGhpcy5saWdodC5ncm91bmRDb2xvcik7Zm9yKGxldCB0PTAsbj1lLmNvdW50O3Q8bjt0Kyspe2NvbnN0IGk9dDxuLzI/R1h0OldYdDtlLnNldFhZWih0LGkucixpLmcsaS5iKX1lLm5lZWRzVXBkYXRlPSEwfXQubG9va0F0KFVYdC5zZXRGcm9tTWF0cml4UG9zaXRpb24odGhpcy5saWdodC5tYXRyaXhXb3JsZCkubmVnYXRlKCkpfX0sSGVtaXNwaGVyZUxpZ2h0UHJvYmU6cVl0LEljb3NhaGVkcm9uQnVmZmVyR2VvbWV0cnk6JFd0LEljb3NhaGVkcm9uR2VvbWV0cnk6JFd0LEltYWdlQml0bWFwTG9hZGVyOkJZdCxJbWFnZUxvYWRlcjpVcXQsSW1hZ2VVdGlsczpoSHQsSW1tZWRpYXRlUmVuZGVyT2JqZWN0OnpYdCxJbmNyZW1lbnRTdGVuY2lsT3A6NzY4MixJbmNyZW1lbnRXcmFwU3RlbmNpbE9wOjM0MDU1LEluc3RhbmNlZEJ1ZmZlckF0dHJpYnV0ZTpOWXQsSW5zdGFuY2VkQnVmZmVyR2VvbWV0cnk6SVl0LEluc3RhbmNlZEludGVybGVhdmVkQnVmZmVyOkVYdCxJbnN0YW5jZWRNZXNoOlZHdCxJbnQxNkF0dHJpYnV0ZTpmdW5jdGlvbiBXJHQodCxlKXtyZXR1cm4gY29uc29sZS53YXJuKCJUSFJFRS5JbnQxNkF0dHJpYnV0ZSBoYXMgYmVlbiByZW1vdmVkLiBVc2UgbmV3IFRIUkVFLkludDE2QnVmZmVyQXR0cmlidXRlKCkgaW5zdGVhZC4iKSxuZXcgS0Z0KHQsZSl9LEludDE2QnVmZmVyQXR0cmlidXRlOktGdCxJbnQzMkF0dHJpYnV0ZTpmdW5jdGlvbiBxJHQodCxlKXtyZXR1cm4gY29uc29sZS53YXJuKCJUSFJFRS5JbnQzMkF0dHJpYnV0ZSBoYXMgYmVlbiByZW1vdmVkLiBVc2UgbmV3IFRIUkVFLkludDMyQnVmZmVyQXR0cmlidXRlKCkgaW5zdGVhZC4iKSxuZXcgSkZ0KHQsZSl9LEludDMyQnVmZmVyQXR0cmlidXRlOkpGdCxJbnQ4QXR0cmlidXRlOmZ1bmN0aW9uIFkkdCh0LGUpe3JldHVybiBjb25zb2xlLndhcm4oIlRIUkVFLkludDhBdHRyaWJ1dGUgaGFzIGJlZW4gcmVtb3ZlZC4gVXNlIG5ldyBUSFJFRS5JbnQ4QnVmZmVyQXR0cmlidXRlKCkgaW5zdGVhZC4iKSxuZXcgWUZ0KHQsZSl9LEludDhCdWZmZXJBdHRyaWJ1dGU6WUZ0LEludFR5cGU6MTAxMyxJbnRlcmxlYXZlZEJ1ZmZlcjpvR3QsSW50ZXJsZWF2ZWRCdWZmZXJBdHRyaWJ1dGU6c0d0LEludGVycG9sYW50OnhxdCxJbnRlcnBvbGF0ZURpc2NyZXRlOkhCdCxJbnRlcnBvbGF0ZUxpbmVhcjpGQnQsSW50ZXJwb2xhdGVTbW9vdGg6VkJ0LEludmVydFN0ZW5jaWxPcDo1Mzg2LEpTT05Mb2FkZXI6ZnVuY3Rpb24gWCR0KCl7Y29uc29sZS5lcnJvcigiVEhSRUUuSlNPTkxvYWRlciBoYXMgYmVlbiByZW1vdmVkLiIpfSxLZWVwU3RlbmNpbE9wOnRIdCxLZXlmcmFtZVRyYWNrOkVxdCxMT0Q6VEd0LExhdGhlQnVmZmVyR2VvbWV0cnk6S1d0LExhdGhlR2VvbWV0cnk6S1d0LExheWVyczppRnQsTGVuc0ZsYXJlOmZ1bmN0aW9uICQkdCgpe2NvbnNvbGUuZXJyb3IoIlRIUkVFLkxlbnNGbGFyZSBoYXMgYmVlbiBtb3ZlZCB0byAvZXhhbXBsZXMvanNtL29iamVjdHMvTGVuc2ZsYXJlLmpzIil9LExlc3NEZXB0aDoyLExlc3NFcXVhbERlcHRoOjMsTGVzc0VxdWFsU3RlbmNpbEZ1bmM6NTE1LExlc3NTdGVuY2lsRnVuYzo1MTMsTGlnaHQ6Z1l0LExpZ2h0UHJvYmU6a1l0LExpbmU6WEd0LExpbmUzOlJYdCxMaW5lQmFzaWNNYXRlcmlhbDpqR3QsTGluZUN1cnZlOnNZdCxMaW5lQ3VydmUzOmxZdCxMaW5lRGFzaGVkTWF0ZXJpYWw6eXF0LExpbmVMb29wOkpHdCxMaW5lUGllY2VzOjEsTGluZVNlZ21lbnRzOlpHdCxMaW5lU3RyaXA6MCxMaW5lYXJFbmNvZGluZzpZQnQsTGluZWFyRmlsdGVyOmdCdCxMaW5lYXJJbnRlcnBvbGFudDpTcXQsTGluZWFyTWlwTWFwTGluZWFyRmlsdGVyOjEwMDgsTGluZWFyTWlwTWFwTmVhcmVzdEZpbHRlcjoxMDA3LExpbmVhck1pcG1hcExpbmVhckZpbHRlcjp5QnQsTGluZWFyTWlwbWFwTmVhcmVzdEZpbHRlcjpfQnQsTGluZWFyVG9uZU1hcHBpbmc6MSxMb2FkZXI6QnF0LExvYWRlclV0aWxzOlBZdCxMb2FkaW5nTWFuYWdlcjp6cXQsTG9nTHV2RW5jb2Rpbmc6MzAwMyxMb29wT25jZToyMjAwLExvb3BQaW5nUG9uZzoyMjAyLExvb3BSZXBlYXQ6MjIwMSxMdW1pbmFuY2VBbHBoYUZvcm1hdDoxMDI1LEx1bWluYW5jZUZvcm1hdDoxMDI0LE1PVVNFOnRCdCxNYXRlcmlhbDpqRnQsTWF0ZXJpYWxMb2FkZXI6TFl0LE1hdGg6c0h0LE1hdGhVdGlsczpzSHQsTWF0cml4MzpjSHQsTWF0cml4NDpxSHQsTWF4RXF1YXRpb246MTA0LE1lc2g6UFZ0LE1lc2hCYXNpY01hdGVyaWFsOlVGdCxNZXNoRGVwdGhNYXRlcmlhbDpVVXQsTWVzaERpc3RhbmNlTWF0ZXJpYWw6R1V0LE1lc2hGYWNlTWF0ZXJpYWw6ZnVuY3Rpb24gSyR0KHQpe3JldHVybiBjb25zb2xlLndhcm4oIlRIUkVFLk1lc2hGYWNlTWF0ZXJpYWwgaGFzIGJlZW4gcmVtb3ZlZC4gVXNlIGFuIEFycmF5IGluc3RlYWQuIiksdH0sTWVzaExhbWJlcnRNYXRlcmlhbDpncXQsTWVzaE1hdGNhcE1hdGVyaWFsOl9xdCxNZXNoTm9ybWFsTWF0ZXJpYWw6bXF0LE1lc2hQaG9uZ01hdGVyaWFsOnBxdCxNZXNoUGh5c2ljYWxNYXRlcmlhbDpkcXQsTWVzaFN0YW5kYXJkTWF0ZXJpYWw6aHF0LE1lc2hUb29uTWF0ZXJpYWw6ZnF0LE1pbkVxdWF0aW9uOjEwMyxNaXJyb3JlZFJlcGVhdFdyYXBwaW5nOmRCdCxNaXhPcGVyYXRpb246MSxNdWx0aU1hdGVyaWFsOmZ1bmN0aW9uIFokdCh0PVtdKXtyZXR1cm4gY29uc29sZS53YXJuKCJUSFJFRS5NdWx0aU1hdGVyaWFsIGhhcyBiZWVuIHJlbW92ZWQuIFVzZSBhbiBBcnJheSBpbnN0ZWFkLiIpLHQuaXNNdWx0aU1hdGVyaWFsPSEwLHQubWF0ZXJpYWxzPXQsdC5jbG9uZT1mdW5jdGlvbigpe3JldHVybiB0LnNsaWNlKCl9LHR9LE11bHRpcGx5QmxlbmRpbmc6NCxNdWx0aXBseU9wZXJhdGlvbjowLE5lYXJlc3RGaWx0ZXI6cEJ0LE5lYXJlc3RNaXBNYXBMaW5lYXJGaWx0ZXI6MTAwNSxOZWFyZXN0TWlwTWFwTmVhcmVzdEZpbHRlcjoxMDA0LE5lYXJlc3RNaXBtYXBMaW5lYXJGaWx0ZXI6bUJ0LE5lYXJlc3RNaXBtYXBOZWFyZXN0RmlsdGVyOmZCdCxOZXZlckRlcHRoOjAsTmV2ZXJTdGVuY2lsRnVuYzo1MTIsTm9CbGVuZGluZzowLE5vQ29sb3JzOjAsTm9Ub25lTWFwcGluZzowLE5vcm1hbEFuaW1hdGlvbkJsZW5kTW9kZTpXQnQsTm9ybWFsQmxlbmRpbmc6MSxOb3RFcXVhbERlcHRoOjcsTm90RXF1YWxTdGVuY2lsRnVuYzo1MTcsTnVtYmVyS2V5ZnJhbWVUcmFjazpDcXQsT2JqZWN0M0Q6X0Z0LE9iamVjdExvYWRlcjpjbGFzcyBleHRlbmRzIEJxdHtjb25zdHJ1Y3Rvcih0KXtzdXBlcih0KX1sb2FkKHQsZSxuLGkpe2NvbnN0IHI9dGhpcyxvPSIiPT09dGhpcy5wYXRoP1BZdC5leHRyYWN0VXJsQmFzZSh0KTp0aGlzLnBhdGg7dGhpcy5yZXNvdXJjZVBhdGg9dGhpcy5yZXNvdXJjZVBhdGh8fG87Y29uc3QgYT1uZXcgRnF0KHRoaXMubWFuYWdlcik7YS5zZXRQYXRoKHRoaXMucGF0aCksYS5zZXRSZXF1ZXN0SGVhZGVyKHRoaXMucmVxdWVzdEhlYWRlciksYS5zZXRXaXRoQ3JlZGVudGlhbHModGhpcy53aXRoQ3JlZGVudGlhbHMpLGEubG9hZCh0LChmdW5jdGlvbihuKXtsZXQgbz1udWxsO3RyeXtvPUpTT04ucGFyc2Uobil9Y2F0Y2goZSl7cmV0dXJuIHZvaWQgMCE9PWkmJmkoZSksdm9pZCBjb25zb2xlLmVycm9yKCJUSFJFRTpPYmplY3RMb2FkZXI6IENhbid0IHBhcnNlICIrdCsiLiIsZS5tZXNzYWdlKX1jb25zdCBhPW8ubWV0YWRhdGE7dm9pZCAwIT09YSYmdm9pZCAwIT09YS50eXBlJiYiZ2VvbWV0cnkiIT09YS50eXBlLnRvTG93ZXJDYXNlKCk/ci5wYXJzZShvLGUpOmNvbnNvbGUuZXJyb3IoIlRIUkVFLk9iamVjdExvYWRlcjogQ2FuJ3QgbG9hZCAiK3QpfSksbixpKX1wYXJzZSh0LGUpe2NvbnN0IG49dGhpcy5wYXJzZUFuaW1hdGlvbnModC5hbmltYXRpb25zKSxpPXRoaXMucGFyc2VTaGFwZXModC5zaGFwZXMpLHI9dGhpcy5wYXJzZUdlb21ldHJpZXModC5nZW9tZXRyaWVzLGkpLG89dGhpcy5wYXJzZUltYWdlcyh0LmltYWdlcywoZnVuY3Rpb24oKXt2b2lkIDAhPT1lJiZlKGwpfSkpLGE9dGhpcy5wYXJzZVRleHR1cmVzKHQudGV4dHVyZXMsbykscz10aGlzLnBhcnNlTWF0ZXJpYWxzKHQubWF0ZXJpYWxzLGEpLGw9dGhpcy5wYXJzZU9iamVjdCh0Lm9iamVjdCxyLHMsbiksYz10aGlzLnBhcnNlU2tlbGV0b25zKHQuc2tlbGV0b25zLGwpO2lmKHRoaXMuYmluZFNrZWxldG9ucyhsLGMpLHZvaWQgMCE9PWUpe2xldCB0PSExO2Zvcihjb25zdCBlIGluIG8paWYob1tlXWluc3RhbmNlb2YgSFRNTEltYWdlRWxlbWVudCl7dD0hMDticmVha30hMT09PXQmJmUobCl9cmV0dXJuIGx9cGFyc2VTaGFwZXModCl7Y29uc3QgZT17fTtpZih2b2lkIDAhPT10KWZvcihsZXQgbj0wLGk9dC5sZW5ndGg7bjxpO24rKyl7Y29uc3QgaT0obmV3IG1ZdCkuZnJvbUpTT04odFtuXSk7ZVtpLnV1aWRdPWl9cmV0dXJuIGV9cGFyc2VTa2VsZXRvbnModCxlKXtjb25zdCBuPXt9LGk9e307aWYoZS50cmF2ZXJzZSgoZnVuY3Rpb24odCl7dC5pc0JvbmUmJihpW3QudXVpZF09dCl9KSksdm9pZCAwIT09dClmb3IobGV0IGU9MCxyPXQubGVuZ3RoO2U8cjtlKyspe2NvbnN0IHI9KG5ldyB6R3QpLmZyb21KU09OKHRbZV0saSk7bltyLnV1aWRdPXJ9cmV0dXJuIG59cGFyc2VHZW9tZXRyaWVzKHQsZSl7Y29uc3Qgbj17fTtsZXQgaTtpZih2b2lkIDAhPT10KXtjb25zdCByPW5ldyBPWXQ7Zm9yKGxldCBvPTAsYT10Lmxlbmd0aDtvPGE7bysrKXtsZXQgYTtjb25zdCBzPXRbb107c3dpdGNoKHMudHlwZSl7Y2FzZSJQbGFuZUdlb21ldHJ5IjpjYXNlIlBsYW5lQnVmZmVyR2VvbWV0cnkiOmE9bmV3IGxxdFtzLnR5cGVdKHMud2lkdGgscy5oZWlnaHQscy53aWR0aFNlZ21lbnRzLHMuaGVpZ2h0U2VnbWVudHMpO2JyZWFrO2Nhc2UiQm94R2VvbWV0cnkiOmNhc2UiQm94QnVmZmVyR2VvbWV0cnkiOmE9bmV3IGxxdFtzLnR5cGVdKHMud2lkdGgscy5oZWlnaHQscy5kZXB0aCxzLndpZHRoU2VnbWVudHMscy5oZWlnaHRTZWdtZW50cyxzLmRlcHRoU2VnbWVudHMpO2JyZWFrO2Nhc2UiQ2lyY2xlR2VvbWV0cnkiOmNhc2UiQ2lyY2xlQnVmZmVyR2VvbWV0cnkiOmE9bmV3IGxxdFtzLnR5cGVdKHMucmFkaXVzLHMuc2VnbWVudHMscy50aGV0YVN0YXJ0LHMudGhldGFMZW5ndGgpO2JyZWFrO2Nhc2UiQ3lsaW5kZXJHZW9tZXRyeSI6Y2FzZSJDeWxpbmRlckJ1ZmZlckdlb21ldHJ5IjphPW5ldyBscXRbcy50eXBlXShzLnJhZGl1c1RvcCxzLnJhZGl1c0JvdHRvbSxzLmhlaWdodCxzLnJhZGlhbFNlZ21lbnRzLHMuaGVpZ2h0U2VnbWVudHMscy5vcGVuRW5kZWQscy50aGV0YVN0YXJ0LHMudGhldGFMZW5ndGgpO2JyZWFrO2Nhc2UiQ29uZUdlb21ldHJ5IjpjYXNlIkNvbmVCdWZmZXJHZW9tZXRyeSI6YT1uZXcgbHF0W3MudHlwZV0ocy5yYWRpdXMscy5oZWlnaHQscy5yYWRpYWxTZWdtZW50cyxzLmhlaWdodFNlZ21lbnRzLHMub3BlbkVuZGVkLHMudGhldGFTdGFydCxzLnRoZXRhTGVuZ3RoKTticmVhaztjYXNlIlNwaGVyZUdlb21ldHJ5IjpjYXNlIlNwaGVyZUJ1ZmZlckdlb21ldHJ5IjphPW5ldyBscXRbcy50eXBlXShzLnJhZGl1cyxzLndpZHRoU2VnbWVudHMscy5oZWlnaHRTZWdtZW50cyxzLnBoaVN0YXJ0LHMucGhpTGVuZ3RoLHMudGhldGFTdGFydCxzLnRoZXRhTGVuZ3RoKTticmVhaztjYXNlIkRvZGVjYWhlZHJvbkdlb21ldHJ5IjpjYXNlIkRvZGVjYWhlZHJvbkJ1ZmZlckdlb21ldHJ5IjpjYXNlIkljb3NhaGVkcm9uR2VvbWV0cnkiOmNhc2UiSWNvc2FoZWRyb25CdWZmZXJHZW9tZXRyeSI6Y2FzZSJPY3RhaGVkcm9uR2VvbWV0cnkiOmNhc2UiT2N0YWhlZHJvbkJ1ZmZlckdlb21ldHJ5IjpjYXNlIlRldHJhaGVkcm9uR2VvbWV0cnkiOmNhc2UiVGV0cmFoZWRyb25CdWZmZXJHZW9tZXRyeSI6YT1uZXcgbHF0W3MudHlwZV0ocy5yYWRpdXMscy5kZXRhaWwpO2JyZWFrO2Nhc2UiUmluZ0dlb21ldHJ5IjpjYXNlIlJpbmdCdWZmZXJHZW9tZXRyeSI6YT1uZXcgbHF0W3MudHlwZV0ocy5pbm5lclJhZGl1cyxzLm91dGVyUmFkaXVzLHMudGhldGFTZWdtZW50cyxzLnBoaVNlZ21lbnRzLHMudGhldGFTdGFydCxzLnRoZXRhTGVuZ3RoKTticmVhaztjYXNlIlRvcnVzR2VvbWV0cnkiOmNhc2UiVG9ydXNCdWZmZXJHZW9tZXRyeSI6YT1uZXcgbHF0W3MudHlwZV0ocy5yYWRpdXMscy50dWJlLHMucmFkaWFsU2VnbWVudHMscy50dWJ1bGFyU2VnbWVudHMscy5hcmMpO2JyZWFrO2Nhc2UiVG9ydXNLbm90R2VvbWV0cnkiOmNhc2UiVG9ydXNLbm90QnVmZmVyR2VvbWV0cnkiOmE9bmV3IGxxdFtzLnR5cGVdKHMucmFkaXVzLHMudHViZSxzLnR1YnVsYXJTZWdtZW50cyxzLnJhZGlhbFNlZ21lbnRzLHMucCxzLnEpO2JyZWFrO2Nhc2UiVHViZUdlb21ldHJ5IjpjYXNlIlR1YmVCdWZmZXJHZW9tZXRyeSI6YT1uZXcgbHF0W3MudHlwZV0oKG5ldyBkWXRbcy5wYXRoLnR5cGVdKS5mcm9tSlNPTihzLnBhdGgpLHMudHVidWxhclNlZ21lbnRzLHMucmFkaXVzLHMucmFkaWFsU2VnbWVudHMscy5jbG9zZWQpO2JyZWFrO2Nhc2UiTGF0aGVHZW9tZXRyeSI6Y2FzZSJMYXRoZUJ1ZmZlckdlb21ldHJ5IjphPW5ldyBscXRbcy50eXBlXShzLnBvaW50cyxzLnNlZ21lbnRzLHMucGhpU3RhcnQscy5waGlMZW5ndGgpO2JyZWFrO2Nhc2UiUG9seWhlZHJvbkdlb21ldHJ5IjpjYXNlIlBvbHloZWRyb25CdWZmZXJHZW9tZXRyeSI6YT1uZXcgbHF0W3MudHlwZV0ocy52ZXJ0aWNlcyxzLmluZGljZXMscy5yYWRpdXMscy5kZXRhaWxzKTticmVhaztjYXNlIlNoYXBlR2VvbWV0cnkiOmNhc2UiU2hhcGVCdWZmZXJHZW9tZXRyeSI6aT1bXTtmb3IobGV0IHQ9MCxuPXMuc2hhcGVzLmxlbmd0aDt0PG47dCsrKWkucHVzaChlW3Muc2hhcGVzW3RdXSk7YT1uZXcgbHF0W3MudHlwZV0oaSxzLmN1cnZlU2VnbWVudHMpO2JyZWFrO2Nhc2UiRXh0cnVkZUdlb21ldHJ5IjpjYXNlIkV4dHJ1ZGVCdWZmZXJHZW9tZXRyeSI6aT1bXTtmb3IobGV0IHQ9MCxuPXMuc2hhcGVzLmxlbmd0aDt0PG47dCsrKWkucHVzaChlW3Muc2hhcGVzW3RdXSk7Y29uc3QgdD1zLm9wdGlvbnMuZXh0cnVkZVBhdGg7dm9pZCAwIT09dCYmKHMub3B0aW9ucy5leHRydWRlUGF0aD0obmV3IGRZdFt0LnR5cGVdKS5mcm9tSlNPTih0KSksYT1uZXcgbHF0W3MudHlwZV0oaSxzLm9wdGlvbnMpO2JyZWFrO2Nhc2UiQnVmZmVyR2VvbWV0cnkiOmNhc2UiSW5zdGFuY2VkQnVmZmVyR2VvbWV0cnkiOmE9ci5wYXJzZShzKTticmVhaztjYXNlIkdlb21ldHJ5Ijpjb25zb2xlLmVycm9yKCdUSFJFRS5PYmplY3RMb2FkZXI6IExvYWRpbmcgIkdlb21ldHJ5IiBpcyBub3Qgc3VwcG9ydGVkIGFueW1vcmUuJyk7YnJlYWs7ZGVmYXVsdDpjb25zb2xlLndhcm4oJ1RIUkVFLk9iamVjdExvYWRlcjogVW5zdXBwb3J0ZWQgZ2VvbWV0cnkgdHlwZSAiJytzLnR5cGUrJyInKTtjb250aW51ZX1hLnV1aWQ9cy51dWlkLHZvaWQgMCE9PXMubmFtZSYmKGEubmFtZT1zLm5hbWUpLCEwPT09YS5pc0J1ZmZlckdlb21ldHJ5JiZ2b2lkIDAhPT1zLnVzZXJEYXRhJiYoYS51c2VyRGF0YT1zLnVzZXJEYXRhKSxuW3MudXVpZF09YX19cmV0dXJuIG59cGFyc2VNYXRlcmlhbHModCxlKXtjb25zdCBuPXt9LGk9e307aWYodm9pZCAwIT09dCl7Y29uc3Qgcj1uZXcgTFl0O3Iuc2V0VGV4dHVyZXMoZSk7Zm9yKGxldCBlPTAsbz10Lmxlbmd0aDtlPG87ZSsrKXtjb25zdCBvPXRbZV07aWYoIk11bHRpTWF0ZXJpYWwiPT09by50eXBlKXtjb25zdCB0PVtdO2ZvcihsZXQgZT0wO2U8by5tYXRlcmlhbHMubGVuZ3RoO2UrKyl7Y29uc3QgaT1vLm1hdGVyaWFsc1tlXTt2b2lkIDA9PT1uW2kudXVpZF0mJihuW2kudXVpZF09ci5wYXJzZShpKSksdC5wdXNoKG5baS51dWlkXSl9aVtvLnV1aWRdPXR9ZWxzZSB2b2lkIDA9PT1uW28udXVpZF0mJihuW28udXVpZF09ci5wYXJzZShvKSksaVtvLnV1aWRdPW5bby51dWlkXX19cmV0dXJuIGl9cGFyc2VBbmltYXRpb25zKHQpe2NvbnN0IGU9e307aWYodm9pZCAwIT09dClmb3IobGV0IG49MDtuPHQubGVuZ3RoO24rKyl7Y29uc3QgaT1OcXQucGFyc2UodFtuXSk7ZVtpLnV1aWRdPWl9cmV0dXJuIGV9cGFyc2VJbWFnZXModCxlKXtjb25zdCBuPXRoaXMsaT17fTtsZXQgcjtmdW5jdGlvbiBvKHQpe2lmKCJzdHJpbmciPT10eXBlb2YgdCl7Y29uc3QgZT10O3JldHVybihmdW5jdGlvbiBlKHQpe3JldHVybiBuLm1hbmFnZXIuaXRlbVN0YXJ0KHQpLHIubG9hZCh0LChmdW5jdGlvbigpe24ubWFuYWdlci5pdGVtRW5kKHQpfSksdm9pZCAwLChmdW5jdGlvbigpe24ubWFuYWdlci5pdGVtRXJyb3IodCksbi5tYW5hZ2VyLml0ZW1FbmQodCl9KSl9KSgvXihcL1wvKXwoW2Etel0rOihcL1wvKT8pL2kudGVzdChlKT9lOm4ucmVzb3VyY2VQYXRoK2UpfXJldHVybiB0LmRhdGE/e2RhdGE6b1Z0KHQudHlwZSx0LmRhdGEpLHdpZHRoOnQud2lkdGgsaGVpZ2h0OnQuaGVpZ2h0fTpudWxsfWlmKHZvaWQgMCE9PXQmJnQubGVuZ3RoPjApe2NvbnN0IG49bmV3IHpxdChlKTtyPW5ldyBVcXQobiksci5zZXRDcm9zc09yaWdpbih0aGlzLmNyb3NzT3JpZ2luKTtmb3IobGV0IGU9MCxuPXQubGVuZ3RoO2U8bjtlKyspe2NvbnN0IG49dFtlXSxyPW4udXJsO2lmKEFycmF5LmlzQXJyYXkocikpe2lbbi51dWlkXT1bXTtmb3IobGV0IHQ9MCxlPXIubGVuZ3RoO3Q8ZTt0Kyspe2NvbnN0IGU9byhyW3RdKTtudWxsIT09ZSYmKGUgaW5zdGFuY2VvZiBIVE1MSW1hZ2VFbGVtZW50P2lbbi51dWlkXS5wdXNoKGUpOmlbbi51dWlkXS5wdXNoKG5ldyBHVnQoZS5kYXRhLGUud2lkdGgsZS5oZWlnaHQpKSl9fWVsc2V7Y29uc3QgdD1vKG4udXJsKTtudWxsIT09dCYmKGlbbi51dWlkXT10KX19fXJldHVybiBpfXBhcnNlVGV4dHVyZXModCxlKXtmdW5jdGlvbiBuKHQsZSl7cmV0dXJuIm51bWJlciI9PXR5cGVvZiB0P3Q6KGNvbnNvbGUud2FybigiVEhSRUUuT2JqZWN0TG9hZGVyLnBhcnNlVGV4dHVyZTogQ29uc3RhbnQgc2hvdWxkIGJlIGluIG51bWVyaWMgZm9ybS4iLHQpLGVbdF0pfWNvbnN0IGk9e307aWYodm9pZCAwIT09dClmb3IobGV0IHI9MCxvPXQubGVuZ3RoO3I8bztyKyspe2NvbnN0IG89dFtyXTtsZXQgYTt2b2lkIDA9PT1vLmltYWdlJiZjb25zb2xlLndhcm4oJ1RIUkVFLk9iamVjdExvYWRlcjogTm8gImltYWdlIiBzcGVjaWZpZWQgZm9yJyxvLnV1aWQpLHZvaWQgMD09PWVbby5pbWFnZV0mJmNvbnNvbGUud2FybigiVEhSRUUuT2JqZWN0TG9hZGVyOiBVbmRlZmluZWQgaW1hZ2UiLG8uaW1hZ2UpO2NvbnN0IHM9ZVtvLmltYWdlXTtBcnJheS5pc0FycmF5KHMpPyhhPW5ldyBqVnQocyksNj09PXMubGVuZ3RoJiYoYS5uZWVkc1VwZGF0ZT0hMCkpOihhPXMmJnMuZGF0YT9uZXcgR1Z0KHMuZGF0YSxzLndpZHRoLHMuaGVpZ2h0KTpuZXcgcEh0KHMpLHMmJihhLm5lZWRzVXBkYXRlPSEwKSksYS51dWlkPW8udXVpZCx2b2lkIDAhPT1vLm5hbWUmJihhLm5hbWU9by5uYW1lKSx2b2lkIDAhPT1vLm1hcHBpbmcmJihhLm1hcHBpbmc9bihvLm1hcHBpbmcsUll0KSksdm9pZCAwIT09by5vZmZzZXQmJmEub2Zmc2V0LmZyb21BcnJheShvLm9mZnNldCksdm9pZCAwIT09by5yZXBlYXQmJmEucmVwZWF0LmZyb21BcnJheShvLnJlcGVhdCksdm9pZCAwIT09by5jZW50ZXImJmEuY2VudGVyLmZyb21BcnJheShvLmNlbnRlciksdm9pZCAwIT09by5yb3RhdGlvbiYmKGEucm90YXRpb249by5yb3RhdGlvbiksdm9pZCAwIT09by53cmFwJiYoYS53cmFwUz1uKG8ud3JhcFswXSx6WXQpLGEud3JhcFQ9bihvLndyYXBbMV0sell0KSksdm9pZCAwIT09by5mb3JtYXQmJihhLmZvcm1hdD1vLmZvcm1hdCksdm9pZCAwIT09by50eXBlJiYoYS50eXBlPW8udHlwZSksdm9pZCAwIT09by5lbmNvZGluZyYmKGEuZW5jb2Rpbmc9by5lbmNvZGluZyksdm9pZCAwIT09by5taW5GaWx0ZXImJihhLm1pbkZpbHRlcj1uKG8ubWluRmlsdGVyLERZdCkpLHZvaWQgMCE9PW8ubWFnRmlsdGVyJiYoYS5tYWdGaWx0ZXI9bihvLm1hZ0ZpbHRlcixEWXQpKSx2b2lkIDAhPT1vLmFuaXNvdHJvcHkmJihhLmFuaXNvdHJvcHk9by5hbmlzb3Ryb3B5KSx2b2lkIDAhPT1vLmZsaXBZJiYoYS5mbGlwWT1vLmZsaXBZKSx2b2lkIDAhPT1vLnByZW11bHRpcGx5QWxwaGEmJihhLnByZW11bHRpcGx5QWxwaGE9by5wcmVtdWx0aXBseUFscGhhKSx2b2lkIDAhPT1vLnVucGFja0FsaWdubWVudCYmKGEudW5wYWNrQWxpZ25tZW50PW8udW5wYWNrQWxpZ25tZW50KSxpW28udXVpZF09YX1yZXR1cm4gaX1wYXJzZU9iamVjdCh0LGUsbixpKXtsZXQgcixvLGE7ZnVuY3Rpb24gcyh0KXtyZXR1cm4gdm9pZCAwPT09ZVt0XSYmY29uc29sZS53YXJuKCJUSFJFRS5PYmplY3RMb2FkZXI6IFVuZGVmaW5lZCBnZW9tZXRyeSIsdCksZVt0XX1mdW5jdGlvbiBsKHQpe2lmKHZvaWQgMCE9PXQpe2lmKEFycmF5LmlzQXJyYXkodCkpe2NvbnN0IGU9W107Zm9yKGxldCBpPTAscj10Lmxlbmd0aDtpPHI7aSsrKXtjb25zdCByPXRbaV07dm9pZCAwPT09bltyXSYmY29uc29sZS53YXJuKCJUSFJFRS5PYmplY3RMb2FkZXI6IFVuZGVmaW5lZCBtYXRlcmlhbCIsciksZS5wdXNoKG5bcl0pfXJldHVybiBlfXJldHVybiB2b2lkIDA9PT1uW3RdJiZjb25zb2xlLndhcm4oIlRIUkVFLk9iamVjdExvYWRlcjogVW5kZWZpbmVkIG1hdGVyaWFsIix0KSxuW3RdfX1zd2l0Y2godC50eXBlKXtjYXNlIlNjZW5lIjpyPW5ldyByR3Qsdm9pZCAwIT09dC5iYWNrZ3JvdW5kJiZOdW1iZXIuaXNJbnRlZ2VyKHQuYmFja2dyb3VuZCkmJihyLmJhY2tncm91bmQ9bmV3IEhGdCh0LmJhY2tncm91bmQpKSx2b2lkIDAhPT10LmZvZyYmKCJGb2ciPT09dC5mb2cudHlwZT9yLmZvZz1uZXcgaUd0KHQuZm9nLmNvbG9yLHQuZm9nLm5lYXIsdC5mb2cuZmFyKToiRm9nRXhwMiI9PT10LmZvZy50eXBlJiYoci5mb2c9bmV3IG5HdCh0LmZvZy5jb2xvcix0LmZvZy5kZW5zaXR5KSkpO2JyZWFrO2Nhc2UiUGVyc3BlY3RpdmVDYW1lcmEiOnI9bmV3IEhWdCh0LmZvdix0LmFzcGVjdCx0Lm5lYXIsdC5mYXIpLHZvaWQgMCE9PXQuZm9jdXMmJihyLmZvY3VzPXQuZm9jdXMpLHZvaWQgMCE9PXQuem9vbSYmKHIuem9vbT10Lnpvb20pLHZvaWQgMCE9PXQuZmlsbUdhdWdlJiYoci5maWxtR2F1Z2U9dC5maWxtR2F1Z2UpLHZvaWQgMCE9PXQuZmlsbU9mZnNldCYmKHIuZmlsbU9mZnNldD10LmZpbG1PZmZzZXQpLHZvaWQgMCE9PXQudmlldyYmKHIudmlldz1PYmplY3QuYXNzaWduKHt9LHQudmlldykpO2JyZWFrO2Nhc2UiT3J0aG9ncmFwaGljQ2FtZXJhIjpyPW5ldyBTWXQodC5sZWZ0LHQucmlnaHQsdC50b3AsdC5ib3R0b20sdC5uZWFyLHQuZmFyKSx2b2lkIDAhPT10Lnpvb20mJihyLnpvb209dC56b29tKSx2b2lkIDAhPT10LnZpZXcmJihyLnZpZXc9T2JqZWN0LmFzc2lnbih7fSx0LnZpZXcpKTticmVhaztjYXNlIkFtYmllbnRMaWdodCI6cj1uZXcgVFl0KHQuY29sb3IsdC5pbnRlbnNpdHkpO2JyZWFrO2Nhc2UiRGlyZWN0aW9uYWxMaWdodCI6cj1uZXcgRVl0KHQuY29sb3IsdC5pbnRlbnNpdHkpO2JyZWFrO2Nhc2UiUG9pbnRMaWdodCI6cj1uZXcgd1l0KHQuY29sb3IsdC5pbnRlbnNpdHksdC5kaXN0YW5jZSx0LmRlY2F5KTticmVhaztjYXNlIlJlY3RBcmVhTGlnaHQiOnI9bmV3IEFZdCh0LmNvbG9yLHQuaW50ZW5zaXR5LHQud2lkdGgsdC5oZWlnaHQpO2JyZWFrO2Nhc2UiU3BvdExpZ2h0IjpyPW5ldyBiWXQodC5jb2xvcix0LmludGVuc2l0eSx0LmRpc3RhbmNlLHQuYW5nbGUsdC5wZW51bWJyYSx0LmRlY2F5KTticmVhaztjYXNlIkhlbWlzcGhlcmVMaWdodCI6cj1uZXcgX1l0KHQuY29sb3IsdC5ncm91bmRDb2xvcix0LmludGVuc2l0eSk7YnJlYWs7Y2FzZSJMaWdodFByb2JlIjpyPShuZXcga1l0KS5mcm9tSlNPTih0KTticmVhaztjYXNlIlNraW5uZWRNZXNoIjpvPXModC5nZW9tZXRyeSksYT1sKHQubWF0ZXJpYWwpLHI9bmV3IElHdChvLGEpLHZvaWQgMCE9PXQuYmluZE1vZGUmJihyLmJpbmRNb2RlPXQuYmluZE1vZGUpLHZvaWQgMCE9PXQuYmluZE1hdHJpeCYmci5iaW5kTWF0cml4LmZyb21BcnJheSh0LmJpbmRNYXRyaXgpLHZvaWQgMCE9PXQuc2tlbGV0b24mJihyLnNrZWxldG9uPXQuc2tlbGV0b24pO2JyZWFrO2Nhc2UiTWVzaCI6bz1zKHQuZ2VvbWV0cnkpLGE9bCh0Lm1hdGVyaWFsKSxyPW5ldyBQVnQobyxhKTticmVhaztjYXNlIkluc3RhbmNlZE1lc2giOm89cyh0Lmdlb21ldHJ5KSxhPWwodC5tYXRlcmlhbCk7Y29uc3QgZT10Lmluc3RhbmNlTWF0cml4O3I9bmV3IFZHdChvLGEsdC5jb3VudCksci5pbnN0YW5jZU1hdHJpeD1uZXcgcUZ0KG5ldyBGbG9hdDMyQXJyYXkoZS5hcnJheSksMTYpO2JyZWFrO2Nhc2UiTE9EIjpyPW5ldyBUR3Q7YnJlYWs7Y2FzZSJMaW5lIjpyPW5ldyBYR3Qocyh0Lmdlb21ldHJ5KSxsKHQubWF0ZXJpYWwpKTticmVhaztjYXNlIkxpbmVMb29wIjpyPW5ldyBKR3Qocyh0Lmdlb21ldHJ5KSxsKHQubWF0ZXJpYWwpKTticmVhaztjYXNlIkxpbmVTZWdtZW50cyI6cj1uZXcgWkd0KHModC5nZW9tZXRyeSksbCh0Lm1hdGVyaWFsKSk7YnJlYWs7Y2FzZSJQb2ludENsb3VkIjpjYXNlIlBvaW50cyI6cj1uZXcgcld0KHModC5nZW9tZXRyeSksbCh0Lm1hdGVyaWFsKSk7YnJlYWs7Y2FzZSJTcHJpdGUiOnI9bmV3IHdHdChsKHQubWF0ZXJpYWwpKTticmVhaztjYXNlIkdyb3VwIjpyPW5ldyBLVXQ7YnJlYWs7Y2FzZSJCb25lIjpyPW5ldyBOR3Q7YnJlYWs7ZGVmYXVsdDpyPW5ldyBfRnR9aWYoci51dWlkPXQudXVpZCx2b2lkIDAhPT10Lm5hbWUmJihyLm5hbWU9dC5uYW1lKSx2b2lkIDAhPT10Lm1hdHJpeD8oci5tYXRyaXguZnJvbUFycmF5KHQubWF0cml4KSx2b2lkIDAhPT10Lm1hdHJpeEF1dG9VcGRhdGUmJihyLm1hdHJpeEF1dG9VcGRhdGU9dC5tYXRyaXhBdXRvVXBkYXRlKSxyLm1hdHJpeEF1dG9VcGRhdGUmJnIubWF0cml4LmRlY29tcG9zZShyLnBvc2l0aW9uLHIucXVhdGVybmlvbixyLnNjYWxlKSk6KHZvaWQgMCE9PXQucG9zaXRpb24mJnIucG9zaXRpb24uZnJvbUFycmF5KHQucG9zaXRpb24pLHZvaWQgMCE9PXQucm90YXRpb24mJnIucm90YXRpb24uZnJvbUFycmF5KHQucm90YXRpb24pLHZvaWQgMCE9PXQucXVhdGVybmlvbiYmci5xdWF0ZXJuaW9uLmZyb21BcnJheSh0LnF1YXRlcm5pb24pLHZvaWQgMCE9PXQuc2NhbGUmJnIuc2NhbGUuZnJvbUFycmF5KHQuc2NhbGUpKSx2b2lkIDAhPT10LmNhc3RTaGFkb3cmJihyLmNhc3RTaGFkb3c9dC5jYXN0U2hhZG93KSx2b2lkIDAhPT10LnJlY2VpdmVTaGFkb3cmJihyLnJlY2VpdmVTaGFkb3c9dC5yZWNlaXZlU2hhZG93KSx0LnNoYWRvdyYmKHZvaWQgMCE9PXQuc2hhZG93LmJpYXMmJihyLnNoYWRvdy5iaWFzPXQuc2hhZG93LmJpYXMpLHZvaWQgMCE9PXQuc2hhZG93Lm5vcm1hbEJpYXMmJihyLnNoYWRvdy5ub3JtYWxCaWFzPXQuc2hhZG93Lm5vcm1hbEJpYXMpLHZvaWQgMCE9PXQuc2hhZG93LnJhZGl1cyYmKHIuc2hhZG93LnJhZGl1cz10LnNoYWRvdy5yYWRpdXMpLHZvaWQgMCE9PXQuc2hhZG93Lm1hcFNpemUmJnIuc2hhZG93Lm1hcFNpemUuZnJvbUFycmF5KHQuc2hhZG93Lm1hcFNpemUpLHZvaWQgMCE9PXQuc2hhZG93LmNhbWVyYSYmKHIuc2hhZG93LmNhbWVyYT10aGlzLnBhcnNlT2JqZWN0KHQuc2hhZG93LmNhbWVyYSkpKSx2b2lkIDAhPT10LnZpc2libGUmJihyLnZpc2libGU9dC52aXNpYmxlKSx2b2lkIDAhPT10LmZydXN0dW1DdWxsZWQmJihyLmZydXN0dW1DdWxsZWQ9dC5mcnVzdHVtQ3VsbGVkKSx2b2lkIDAhPT10LnJlbmRlck9yZGVyJiYoci5yZW5kZXJPcmRlcj10LnJlbmRlck9yZGVyKSx2b2lkIDAhPT10LnVzZXJEYXRhJiYoci51c2VyRGF0YT10LnVzZXJEYXRhKSx2b2lkIDAhPT10LmxheWVycyYmKHIubGF5ZXJzLm1hc2s9dC5sYXllcnMpLHZvaWQgMCE9PXQuY2hpbGRyZW4pe2NvbnN0IG89dC5jaGlsZHJlbjtmb3IobGV0IHQ9MDt0PG8ubGVuZ3RoO3QrKylyLmFkZCh0aGlzLnBhcnNlT2JqZWN0KG9bdF0sZSxuLGkpKX1pZih2b2lkIDAhPT10LmFuaW1hdGlvbnMpe2NvbnN0IGU9dC5hbmltYXRpb25zO2ZvcihsZXQgdD0wO3Q8ZS5sZW5ndGg7dCsrKXIuYW5pbWF0aW9ucy5wdXNoKGlbZVt0XV0pfWlmKCJMT0QiPT09dC50eXBlKXt2b2lkIDAhPT10LmF1dG9VcGRhdGUmJihyLmF1dG9VcGRhdGU9dC5hdXRvVXBkYXRlKTtjb25zdCBlPXQubGV2ZWxzO2ZvcihsZXQgdD0wO3Q8ZS5sZW5ndGg7dCsrKXtjb25zdCBuPWVbdF0saT1yLmdldE9iamVjdEJ5UHJvcGVydHkoInV1aWQiLG4ub2JqZWN0KTt2b2lkIDAhPT1pJiZyLmFkZExldmVsKGksbi5kaXN0YW5jZSl9fXJldHVybiByfWJpbmRTa2VsZXRvbnModCxlKXswIT09T2JqZWN0LmtleXMoZSkubGVuZ3RoJiZ0LnRyYXZlcnNlKChmdW5jdGlvbih0KXtpZighMD09PXQuaXNTa2lubmVkTWVzaCYmdm9pZCAwIT09dC5za2VsZXRvbil7Y29uc3Qgbj1lW3Quc2tlbGV0b25dO3ZvaWQgMD09PW4/Y29uc29sZS53YXJuKCJUSFJFRS5PYmplY3RMb2FkZXI6IE5vIHNrZWxldG9uIGZvdW5kIHdpdGggVVVJRDoiLHQuc2tlbGV0b24pOnQuYmluZChuLHQuYmluZE1hdHJpeCl9fSkpfXNldFRleHR1cmVQYXRoKHQpe3JldHVybiBjb25zb2xlLndhcm4oIlRIUkVFLk9iamVjdExvYWRlcjogLnNldFRleHR1cmVQYXRoKCkgaGFzIGJlZW4gcmVuYW1lZCB0byAuc2V0UmVzb3VyY2VQYXRoKCkuIiksdGhpcy5zZXRSZXNvdXJjZVBhdGgodCl9fSxPYmplY3RTcGFjZU5vcm1hbE1hcDoxLE9jdGFoZWRyb25CdWZmZXJHZW9tZXRyeTpaV3QsT2N0YWhlZHJvbkdlb21ldHJ5OlpXdCxPbmVGYWN0b3I6MjAxLE9uZU1pbnVzRHN0QWxwaGFGYWN0b3I6MjA3LE9uZU1pbnVzRHN0Q29sb3JGYWN0b3I6MjA5LE9uZU1pbnVzU3JjQWxwaGFGYWN0b3I6MjA1LE9uZU1pbnVzU3JjQ29sb3JGYWN0b3I6MjAzLE9ydGhvZ3JhcGhpY0NhbWVyYTpTWXQsUENGU2hhZG93TWFwOjEsUENGU29mdFNoYWRvd01hcDoyLFBNUkVNR2VuZXJhdG9yOmNsYXNze2NvbnN0cnVjdG9yKHQpe3RoaXMuX3JlbmRlcmVyPXQsdGhpcy5fcGluZ1BvbmdSZW5kZXJUYXJnZXQ9bnVsbCx0aGlzLl9ibHVyTWF0ZXJpYWw9KGZ1bmN0aW9uIGUodCl7cmV0dXJuIG5ldyB1cXQoe25hbWU6IlNwaGVyaWNhbEdhdXNzaWFuQmx1ciIsZGVmaW5lczp7bjp0fSx1bmlmb3Jtczp7ZW52TWFwOnt2YWx1ZTpudWxsfSxzYW1wbGVzOnt2YWx1ZToxfSx3ZWlnaHRzOnt2YWx1ZTpuZXcgRmxvYXQzMkFycmF5KHQpfSxsYXRpdHVkaW5hbDp7dmFsdWU6ITF9LGRUaGV0YTp7dmFsdWU6MH0sbWlwSW50Ont2YWx1ZTowfSxwb2xlQXhpczp7dmFsdWU6bmV3IHlIdCgwLDEsMCl9LGlucHV0RW5jb2Rpbmc6e3ZhbHVlOmgkdFszZTNdfSxvdXRwdXRFbmNvZGluZzp7dmFsdWU6aCR0WzNlM119fSx2ZXJ0ZXhTaGFkZXI6IlxuXG5cdFx0cHJlY2lzaW9uIG1lZGl1bXAgZmxvYXQ7XG5cdFx0cHJlY2lzaW9uIG1lZGl1bXAgaW50O1xuXG5cdFx0YXR0cmlidXRlIHZlYzMgcG9zaXRpb247XG5cdFx0YXR0cmlidXRlIHZlYzIgdXY7XG5cdFx0YXR0cmlidXRlIGZsb2F0IGZhY2VJbmRleDtcblxuXHRcdHZhcnlpbmcgdmVjMyB2T3V0cHV0RGlyZWN0aW9uO1xuXG5cdFx0Ly8gUkggY29vcmRpbmF0ZSBzeXN0ZW07IFBNUkVNIGZhY2UtaW5kZXhpbmcgY29udmVudGlvblxuXHRcdHZlYzMgZ2V0RGlyZWN0aW9uKCB2ZWMyIHV2LCBmbG9hdCBmYWNlICkge1xuXG5cdFx0XHR1diA9IDIuMCAqIHV2IC0gMS4wO1xuXG5cdFx0XHR2ZWMzIGRpcmVjdGlvbiA9IHZlYzMoIHV2LCAxLjAgKTtcblxuXHRcdFx0aWYgKCBmYWNlID09IDAuMCApIHtcblxuXHRcdFx0XHRkaXJlY3Rpb24gPSBkaXJlY3Rpb24uenl4OyAvLyAoIDEsIHYsIHUgKSBwb3MgeFxuXG5cdFx0XHR9IGVsc2UgaWYgKCBmYWNlID09IDEuMCApIHtcblxuXHRcdFx0XHRkaXJlY3Rpb24gPSBkaXJlY3Rpb24ueHp5O1xuXHRcdFx0XHRkaXJlY3Rpb24ueHogKj0gLTEuMDsgLy8gKCAtdSwgMSwgLXYgKSBwb3MgeVxuXG5cdFx0XHR9IGVsc2UgaWYgKCBmYWNlID09IDIuMCApIHtcblxuXHRcdFx0XHRkaXJlY3Rpb24ueCAqPSAtMS4wOyAvLyAoIC11LCB2LCAxICkgcG9zIHpcblxuXHRcdFx0fSBlbHNlIGlmICggZmFjZSA9PSAzLjAgKSB7XG5cblx0XHRcdFx0ZGlyZWN0aW9uID0gZGlyZWN0aW9uLnp5eDtcblx0XHRcdFx0ZGlyZWN0aW9uLnh6ICo9IC0xLjA7IC8vICggLTEsIHYsIC11ICkgbmVnIHhcblxuXHRcdFx0fSBlbHNlIGlmICggZmFjZSA9PSA0LjAgKSB7XG5cblx0XHRcdFx0ZGlyZWN0aW9uID0gZGlyZWN0aW9uLnh6eTtcblx0XHRcdFx0ZGlyZWN0aW9uLnh5ICo9IC0xLjA7IC8vICggLXUsIC0xLCB2ICkgbmVnIHlcblxuXHRcdFx0fSBlbHNlIGlmICggZmFjZSA9PSA1LjAgKSB7XG5cblx0XHRcdFx0ZGlyZWN0aW9uLnogKj0gLTEuMDsgLy8gKCB1LCB2LCAtMSApIG5lZyB6XG5cblx0XHRcdH1cblxuXHRcdFx0cmV0dXJuIGRpcmVjdGlvbjtcblxuXHRcdH1cblxuXHRcdHZvaWQgbWFpbigpIHtcblxuXHRcdFx0dk91dHB1dERpcmVjdGlvbiA9IGdldERpcmVjdGlvbiggdXYsIGZhY2VJbmRleCApO1xuXHRcdFx0Z2xfUG9zaXRpb24gPSB2ZWM0KCBwb3NpdGlvbiwgMS4wICk7XG5cblx0XHR9XG5cdCIsZnJhZ21lbnRTaGFkZXI6IlxuXG5cdFx0XHRwcmVjaXNpb24gbWVkaXVtcCBmbG9hdDtcblx0XHRcdHByZWNpc2lvbiBtZWRpdW1wIGludDtcblxuXHRcdFx0dmFyeWluZyB2ZWMzIHZPdXRwdXREaXJlY3Rpb247XG5cblx0XHRcdHVuaWZvcm0gc2FtcGxlcjJEIGVudk1hcDtcblx0XHRcdHVuaWZvcm0gaW50IHNhbXBsZXM7XG5cdFx0XHR1bmlmb3JtIGZsb2F0IHdlaWdodHNbIG4gXTtcblx0XHRcdHVuaWZvcm0gYm9vbCBsYXRpdHVkaW5hbDtcblx0XHRcdHVuaWZvcm0gZmxvYXQgZFRoZXRhO1xuXHRcdFx0dW5pZm9ybSBmbG9hdCBtaXBJbnQ7XG5cdFx0XHR1bmlmb3JtIHZlYzMgcG9sZUF4aXM7XG5cblx0XHRcdFxuXG5cdFx0dW5pZm9ybSBpbnQgaW5wdXRFbmNvZGluZztcblx0XHR1bmlmb3JtIGludCBvdXRwdXRFbmNvZGluZztcblxuXHRcdCNpbmNsdWRlIDxlbmNvZGluZ3NfcGFyc19mcmFnbWVudD5cblxuXHRcdHZlYzQgaW5wdXRUZXhlbFRvTGluZWFyKCB2ZWM0IHZhbHVlICkge1xuXG5cdFx0XHRpZiAoIGlucHV0RW5jb2RpbmcgPT0gMCApIHtcblxuXHRcdFx0XHRyZXR1cm4gdmFsdWU7XG5cblx0XHRcdH0gZWxzZSBpZiAoIGlucHV0RW5jb2RpbmcgPT0gMSApIHtcblxuXHRcdFx0XHRyZXR1cm4gc1JHQlRvTGluZWFyKCB2YWx1ZSApO1xuXG5cdFx0XHR9IGVsc2UgaWYgKCBpbnB1dEVuY29kaW5nID09IDIgKSB7XG5cblx0XHRcdFx0cmV0dXJuIFJHQkVUb0xpbmVhciggdmFsdWUgKTtcblxuXHRcdFx0fSBlbHNlIGlmICggaW5wdXRFbmNvZGluZyA9PSAzICkge1xuXG5cdFx0XHRcdHJldHVybiBSR0JNVG9MaW5lYXIoIHZhbHVlLCA3LjAgKTtcblxuXHRcdFx0fSBlbHNlIGlmICggaW5wdXRFbmNvZGluZyA9PSA0ICkge1xuXG5cdFx0XHRcdHJldHVybiBSR0JNVG9MaW5lYXIoIHZhbHVlLCAxNi4wICk7XG5cblx0XHRcdH0gZWxzZSBpZiAoIGlucHV0RW5jb2RpbmcgPT0gNSApIHtcblxuXHRcdFx0XHRyZXR1cm4gUkdCRFRvTGluZWFyKCB2YWx1ZSwgMjU2LjAgKTtcblxuXHRcdFx0fSBlbHNlIHtcblxuXHRcdFx0XHRyZXR1cm4gR2FtbWFUb0xpbmVhciggdmFsdWUsIDIuMiApO1xuXG5cdFx0XHR9XG5cblx0XHR9XG5cblx0XHR2ZWM0IGxpbmVhclRvT3V0cHV0VGV4ZWwoIHZlYzQgdmFsdWUgKSB7XG5cblx0XHRcdGlmICggb3V0cHV0RW5jb2RpbmcgPT0gMCApIHtcblxuXHRcdFx0XHRyZXR1cm4gdmFsdWU7XG5cblx0XHRcdH0gZWxzZSBpZiAoIG91dHB1dEVuY29kaW5nID09IDEgKSB7XG5cblx0XHRcdFx0cmV0dXJuIExpbmVhclRvc1JHQiggdmFsdWUgKTtcblxuXHRcdFx0fSBlbHNlIGlmICggb3V0cHV0RW5jb2RpbmcgPT0gMiApIHtcblxuXHRcdFx0XHRyZXR1cm4gTGluZWFyVG9SR0JFKCB2YWx1ZSApO1xuXG5cdFx0XHR9IGVsc2UgaWYgKCBvdXRwdXRFbmNvZGluZyA9PSAzICkge1xuXG5cdFx0XHRcdHJldHVybiBMaW5lYXJUb1JHQk0oIHZhbHVlLCA3LjAgKTtcblxuXHRcdFx0fSBlbHNlIGlmICggb3V0cHV0RW5jb2RpbmcgPT0gNCApIHtcblxuXHRcdFx0XHRyZXR1cm4gTGluZWFyVG9SR0JNKCB2YWx1ZSwgMTYuMCApO1xuXG5cdFx0XHR9IGVsc2UgaWYgKCBvdXRwdXRFbmNvZGluZyA9PSA1ICkge1xuXG5cdFx0XHRcdHJldHVybiBMaW5lYXJUb1JHQkQoIHZhbHVlLCAyNTYuMCApO1xuXG5cdFx0XHR9IGVsc2Uge1xuXG5cdFx0XHRcdHJldHVybiBMaW5lYXJUb0dhbW1hKCB2YWx1ZSwgMi4yICk7XG5cblx0XHRcdH1cblxuXHRcdH1cblxuXHRcdHZlYzQgZW52TWFwVGV4ZWxUb0xpbmVhciggdmVjNCBjb2xvciApIHtcblxuXHRcdFx0cmV0dXJuIGlucHV0VGV4ZWxUb0xpbmVhciggY29sb3IgKTtcblxuXHRcdH1cblx0XG5cblx0XHRcdCNkZWZpbmUgRU5WTUFQX1RZUEVfQ1VCRV9VVlxuXHRcdFx0I2luY2x1ZGUgPGN1YmVfdXZfcmVmbGVjdGlvbl9mcmFnbWVudD5cblxuXHRcdFx0dmVjMyBnZXRTYW1wbGUoIGZsb2F0IHRoZXRhLCB2ZWMzIGF4aXMgKSB7XG5cblx0XHRcdFx0ZmxvYXQgY29zVGhldGEgPSBjb3MoIHRoZXRhICk7XG5cdFx0XHRcdC8vIFJvZHJpZ3VlcycgYXhpcy1hbmdsZSByb3RhdGlvblxuXHRcdFx0XHR2ZWMzIHNhbXBsZURpcmVjdGlvbiA9IHZPdXRwdXREaXJlY3Rpb24gKiBjb3NUaGV0YVxuXHRcdFx0XHRcdCsgY3Jvc3MoIGF4aXMsIHZPdXRwdXREaXJlY3Rpb24gKSAqIHNpbiggdGhldGEgKVxuXHRcdFx0XHRcdCsgYXhpcyAqIGRvdCggYXhpcywgdk91dHB1dERpcmVjdGlvbiApICogKCAxLjAgLSBjb3NUaGV0YSApO1xuXG5cdFx0XHRcdHJldHVybiBiaWxpbmVhckN1YmVVViggZW52TWFwLCBzYW1wbGVEaXJlY3Rpb24sIG1pcEludCApO1xuXG5cdFx0XHR9XG5cblx0XHRcdHZvaWQgbWFpbigpIHtcblxuXHRcdFx0XHR2ZWMzIGF4aXMgPSBsYXRpdHVkaW5hbCA/IHBvbGVBeGlzIDogY3Jvc3MoIHBvbGVBeGlzLCB2T3V0cHV0RGlyZWN0aW9uICk7XG5cblx0XHRcdFx0aWYgKCBhbGwoIGVxdWFsKCBheGlzLCB2ZWMzKCAwLjAgKSApICkgKSB7XG5cblx0XHRcdFx0XHRheGlzID0gdmVjMyggdk91dHB1dERpcmVjdGlvbi56LCAwLjAsIC0gdk91dHB1dERpcmVjdGlvbi54ICk7XG5cblx0XHRcdFx0fVxuXG5cdFx0XHRcdGF4aXMgPSBub3JtYWxpemUoIGF4aXMgKTtcblxuXHRcdFx0XHRnbF9GcmFnQ29sb3IgPSB2ZWM0KCAwLjAsIDAuMCwgMC4wLCAxLjAgKTtcblx0XHRcdFx0Z2xfRnJhZ0NvbG9yLnJnYiArPSB3ZWlnaHRzWyAwIF0gKiBnZXRTYW1wbGUoIDAuMCwgYXhpcyApO1xuXG5cdFx0XHRcdGZvciAoIGludCBpID0gMTsgaSA8IG47IGkrKyApIHtcblxuXHRcdFx0XHRcdGlmICggaSA+PSBzYW1wbGVzICkge1xuXG5cdFx0XHRcdFx0XHRicmVhaztcblxuXHRcdFx0XHRcdH1cblxuXHRcdFx0XHRcdGZsb2F0IHRoZXRhID0gZFRoZXRhICogZmxvYXQoIGkgKTtcblx0XHRcdFx0XHRnbF9GcmFnQ29sb3IucmdiICs9IHdlaWdodHNbIGkgXSAqIGdldFNhbXBsZSggLTEuMCAqIHRoZXRhLCBheGlzICk7XG5cdFx0XHRcdFx0Z2xfRnJhZ0NvbG9yLnJnYiArPSB3ZWlnaHRzWyBpIF0gKiBnZXRTYW1wbGUoIHRoZXRhLCBheGlzICk7XG5cblx0XHRcdFx0fVxuXG5cdFx0XHRcdGdsX0ZyYWdDb2xvciA9IGxpbmVhclRvT3V0cHV0VGV4ZWwoIGdsX0ZyYWdDb2xvciApO1xuXG5cdFx0XHR9XG5cdFx0IixibGVuZGluZzowLGRlcHRoVGVzdDohMSxkZXB0aFdyaXRlOiExfSl9KSgyMCksdGhpcy5fZXF1aXJlY3RTaGFkZXI9bnVsbCx0aGlzLl9jdWJlbWFwU2hhZGVyPW51bGwsdGhpcy5fY29tcGlsZU1hdGVyaWFsKHRoaXMuX2JsdXJNYXRlcmlhbCl9ZnJvbVNjZW5lKHQsZT0wLG49LjEsaT0xMDApe3YkdD10aGlzLl9yZW5kZXJlci5nZXRSZW5kZXJUYXJnZXQoKTtjb25zdCByPXRoaXMuX2FsbG9jYXRlVGFyZ2V0cygpO3JldHVybiB0aGlzLl9zY2VuZVRvQ3ViZVVWKHQsbixpLHIpLGU+MCYmdGhpcy5fYmx1cihyLDAsMCxlKSx0aGlzLl9hcHBseVBNUkVNKHIpLHRoaXMuX2NsZWFudXAocikscn1mcm9tRXF1aXJlY3Rhbmd1bGFyKHQpe3JldHVybiB0aGlzLl9mcm9tVGV4dHVyZSh0KX1mcm9tQ3ViZW1hcCh0KXtyZXR1cm4gdGhpcy5fZnJvbVRleHR1cmUodCl9Y29tcGlsZUN1YmVtYXBTaGFkZXIoKXtudWxsPT09dGhpcy5fY3ViZW1hcFNoYWRlciYmKHRoaXMuX2N1YmVtYXBTaGFkZXI9ayR0KCksdGhpcy5fY29tcGlsZU1hdGVyaWFsKHRoaXMuX2N1YmVtYXBTaGFkZXIpKX1jb21waWxlRXF1aXJlY3Rhbmd1bGFyU2hhZGVyKCl7bnVsbD09PXRoaXMuX2VxdWlyZWN0U2hhZGVyJiYodGhpcy5fZXF1aXJlY3RTaGFkZXI9QyR0KCksdGhpcy5fY29tcGlsZU1hdGVyaWFsKHRoaXMuX2VxdWlyZWN0U2hhZGVyKSl9ZGlzcG9zZSgpe3RoaXMuX2JsdXJNYXRlcmlhbC5kaXNwb3NlKCksbnVsbCE9PXRoaXMuX2N1YmVtYXBTaGFkZXImJnRoaXMuX2N1YmVtYXBTaGFkZXIuZGlzcG9zZSgpLG51bGwhPT10aGlzLl9lcXVpcmVjdFNoYWRlciYmdGhpcy5fZXF1aXJlY3RTaGFkZXIuZGlzcG9zZSgpO2ZvcihsZXQgdD0wO3Q8bSR0Lmxlbmd0aDt0KyspbSR0W3RdLmRpc3Bvc2UoKX1fY2xlYW51cCh0KXt0aGlzLl9waW5nUG9uZ1JlbmRlclRhcmdldC5kaXNwb3NlKCksdGhpcy5fcmVuZGVyZXIuc2V0UmVuZGVyVGFyZ2V0KHYkdCksdC5zY2lzc29yVGVzdD0hMSxBJHQodCwwLDAsdC53aWR0aCx0LmhlaWdodCl9X2Zyb21UZXh0dXJlKHQpe3YkdD10aGlzLl9yZW5kZXJlci5nZXRSZW5kZXJUYXJnZXQoKTtjb25zdCBlPXRoaXMuX2FsbG9jYXRlVGFyZ2V0cyh0KTtyZXR1cm4gdGhpcy5fdGV4dHVyZVRvQ3ViZVVWKHQsZSksdGhpcy5fYXBwbHlQTVJFTShlKSx0aGlzLl9jbGVhbnVwKGUpLGV9X2FsbG9jYXRlVGFyZ2V0cyh0KXtjb25zdCBlPXttYWdGaWx0ZXI6cEJ0LG1pbkZpbHRlcjpwQnQsZ2VuZXJhdGVNaXBtYXBzOiExLHR5cGU6dkJ0LGZvcm1hdDoxMDIzLGVuY29kaW5nOk0kdCh0KT90LmVuY29kaW5nOktCdCxkZXB0aEJ1ZmZlcjohMX0sbj1UJHQoZSk7cmV0dXJuIG4uZGVwdGhCdWZmZXI9IXQsdGhpcy5fcGluZ1BvbmdSZW5kZXJUYXJnZXQ9VCR0KGUpLG59X2NvbXBpbGVNYXRlcmlhbCh0KXtjb25zdCBlPW5ldyBQVnQobSR0WzBdLHQpO3RoaXMuX3JlbmRlcmVyLmNvbXBpbGUoZSxmJHQpfV9zY2VuZVRvQ3ViZVVWKHQsZSxuLGkpe2NvbnN0IHI9bmV3IEhWdCg5MCwxLGUsbiksbz1bMSwtMSwxLDEsMSwxXSxhPVsxLDEsMSwtMSwtMSwtMV0scz10aGlzLl9yZW5kZXJlcixsPXMuYXV0b0NsZWFyLGM9cy5vdXRwdXRFbmNvZGluZyx1PXMudG9uZU1hcHBpbmc7cy5nZXRDbGVhckNvbG9yKHkkdCkscy50b25lTWFwcGluZz0wLHMub3V0cHV0RW5jb2Rpbmc9WUJ0LHMuYXV0b0NsZWFyPSExO2xldCBoPSExO2NvbnN0IGQ9dC5iYWNrZ3JvdW5kO2lmKGQpe2lmKGQuaXNDb2xvcil7ZCR0LmNvbG9yLmNvcHkoZCkuY29udmVydFNSR0JUb0xpbmVhcigpLHQuYmFja2dyb3VuZD1udWxsO2NvbnN0IGU9UyR0KGQkdC5jb2xvcik7ZCR0Lm9wYWNpdHk9ZSxoPSEwfX1lbHNle2QkdC5jb2xvci5jb3B5KHkkdCkuY29udmVydFNSR0JUb0xpbmVhcigpO2NvbnN0IHQ9UyR0KGQkdC5jb2xvcik7ZCR0Lm9wYWNpdHk9dCxoPSEwfWZvcihsZXQgZT0wO2U8NjtlKyspe2NvbnN0IG49ZSUzOzA9PW4/KHIudXAuc2V0KDAsb1tlXSwwKSxyLmxvb2tBdChhW2VdLDAsMCkpOjE9PW4/KHIudXAuc2V0KDAsMCxvW2VdKSxyLmxvb2tBdCgwLGFbZV0sMCkpOihyLnVwLnNldCgwLG9bZV0sMCksci5sb29rQXQoMCwwLGFbZV0pKSxBJHQoaSxuKmwkdCxlPjI/bCR0OjAsbCR0LGwkdCkscy5zZXRSZW5kZXJUYXJnZXQoaSksaCYmcy5yZW5kZXIocCR0LHIpLHMucmVuZGVyKHQscil9cy50b25lTWFwcGluZz11LHMub3V0cHV0RW5jb2Rpbmc9YyxzLmF1dG9DbGVhcj1sfV90ZXh0dXJlVG9DdWJlVVYodCxlKXtjb25zdCBuPXRoaXMuX3JlbmRlcmVyO3QuaXNDdWJlVGV4dHVyZT9udWxsPT10aGlzLl9jdWJlbWFwU2hhZGVyJiYodGhpcy5fY3ViZW1hcFNoYWRlcj1rJHQoKSk6bnVsbD09dGhpcy5fZXF1aXJlY3RTaGFkZXImJih0aGlzLl9lcXVpcmVjdFNoYWRlcj1DJHQoKSk7Y29uc3QgaT10LmlzQ3ViZVRleHR1cmU/dGhpcy5fY3ViZW1hcFNoYWRlcjp0aGlzLl9lcXVpcmVjdFNoYWRlcixyPW5ldyBQVnQobSR0WzBdLGkpLG89aS51bmlmb3JtcztvLmVudk1hcC52YWx1ZT10LHQuaXNDdWJlVGV4dHVyZXx8by50ZXhlbFNpemUudmFsdWUuc2V0KDEvdC5pbWFnZS53aWR0aCwxL3QuaW1hZ2UuaGVpZ2h0KSxvLmlucHV0RW5jb2RpbmcudmFsdWU9aCR0W3QuZW5jb2RpbmddLG8ub3V0cHV0RW5jb2RpbmcudmFsdWU9aCR0W2UudGV4dHVyZS5lbmNvZGluZ10sQSR0KGUsMCwwLDMqbCR0LDIqbCR0KSxuLnNldFJlbmRlclRhcmdldChlKSxuLnJlbmRlcihyLGYkdCl9X2FwcGx5UE1SRU0odCl7Y29uc3QgZT10aGlzLl9yZW5kZXJlcixuPWUuYXV0b0NsZWFyO2UuYXV0b0NsZWFyPSExO2ZvcihsZXQgZT0xO2U8dSR0O2UrKyl7Y29uc3Qgbj1NYXRoLnNxcnQoXyR0W2VdKl8kdFtlXS1fJHRbZS0xXSpfJHRbZS0xXSk7dGhpcy5fYmx1cih0LGUtMSxlLG4sdyR0WyhlLTEpJXckdC5sZW5ndGhdKX1lLmF1dG9DbGVhcj1ufV9ibHVyKHQsZSxuLGkscil7Y29uc3Qgbz10aGlzLl9waW5nUG9uZ1JlbmRlclRhcmdldDt0aGlzLl9oYWxmQmx1cih0LG8sZSxuLGksImxhdGl0dWRpbmFsIixyKSx0aGlzLl9oYWxmQmx1cihvLHQsbixuLGksImxvbmdpdHVkaW5hbCIscil9X2hhbGZCbHVyKHQsZSxuLGkscixvLGEpe2NvbnN0IHM9dGhpcy5fcmVuZGVyZXIsbD10aGlzLl9ibHVyTWF0ZXJpYWw7ImxhdGl0dWRpbmFsIiE9PW8mJiJsb25naXR1ZGluYWwiIT09byYmY29uc29sZS5lcnJvcigiYmx1ciBkaXJlY3Rpb24gbXVzdCBiZSBlaXRoZXIgbGF0aXR1ZGluYWwgb3IgbG9uZ2l0dWRpbmFsISIpO2NvbnN0IGM9bmV3IFBWdChtJHRbaV0sbCksdT1sLnVuaWZvcm1zLGg9ZyR0W25dLTEsZD1pc0Zpbml0ZShyKT9NYXRoLlBJLygyKmgpOjIqTWF0aC5QSS8zOSxwPXIvZCxmPWlzRmluaXRlKHIpPzErTWF0aC5mbG9vcigzKnApOjIwO2Y+MjAmJmNvbnNvbGUud2Fybihgc2lnbWFSYWRpYW5zLCAke3J9LCBpcyB0b28gbGFyZ2UgYW5kIHdpbGwgY2xpcCwgYXMgaXQgcmVxdWVzdGVkICR7Zn0gc2FtcGxlcyB3aGVuIHRoZSBtYXhpbXVtIGlzIHNldCB0byAyMGApO2NvbnN0IG09W107bGV0IGc9MDtmb3IobGV0IHQ9MDt0PDIwOysrdCl7Y29uc3QgZT10L3Asbj1NYXRoLmV4cCgtZSplLzIpO20ucHVzaChuKSwwPT10P2crPW46dDxmJiYoZys9MipuKX1mb3IobGV0IHQ9MDt0PG0ubGVuZ3RoO3QrKyltW3RdPW1bdF0vZzt1LmVudk1hcC52YWx1ZT10LnRleHR1cmUsdS5zYW1wbGVzLnZhbHVlPWYsdS53ZWlnaHRzLnZhbHVlPW0sdS5sYXRpdHVkaW5hbC52YWx1ZT0ibGF0aXR1ZGluYWwiPT09byxhJiYodS5wb2xlQXhpcy52YWx1ZT1hKSx1LmRUaGV0YS52YWx1ZT1kLHUubWlwSW50LnZhbHVlPTgtbix1LmlucHV0RW5jb2RpbmcudmFsdWU9aCR0W3QudGV4dHVyZS5lbmNvZGluZ10sdS5vdXRwdXRFbmNvZGluZy52YWx1ZT1oJHRbdC50ZXh0dXJlLmVuY29kaW5nXTtjb25zdCBfPWckdFtpXTtBJHQoZSwzKk1hdGgubWF4KDAsbCR0LTIqXyksKDA9PT1pPzA6MipsJHQpKzIqXyooaT40P2ktOCs0OjApLDMqXywyKl8pLHMuc2V0UmVuZGVyVGFyZ2V0KGUpLHMucmVuZGVyKGMsZiR0KX19LFBhcmFtZXRyaWNCdWZmZXJHZW9tZXRyeTpKV3QsUGFyYW1ldHJpY0dlb21ldHJ5OkpXdCxQYXJ0aWNsZTpmdW5jdGlvbiBKJHQodCl7cmV0dXJuIGNvbnNvbGUud2FybigiVEhSRUUuUGFydGljbGUgaGFzIGJlZW4gcmVuYW1lZCB0byBUSFJFRS5TcHJpdGUuIiksbmV3IHdHdCh0KX0sUGFydGljbGVCYXNpY01hdGVyaWFsOmZ1bmN0aW9uIFEkdCh0KXtyZXR1cm4gY29uc29sZS53YXJuKCJUSFJFRS5QYXJ0aWNsZUJhc2ljTWF0ZXJpYWwgaGFzIGJlZW4gcmVuYW1lZCB0byBUSFJFRS5Qb2ludHNNYXRlcmlhbC4iKSxuZXcgUUd0KHQpfSxQYXJ0aWNsZVN5c3RlbTpmdW5jdGlvbiB0S3QodCxlKXtyZXR1cm4gY29uc29sZS53YXJuKCJUSFJFRS5QYXJ0aWNsZVN5c3RlbSBoYXMgYmVlbiByZW5hbWVkIHRvIFRIUkVFLlBvaW50cy4iKSxuZXcgcld0KHQsZSl9LFBhcnRpY2xlU3lzdGVtTWF0ZXJpYWw6ZnVuY3Rpb24gZUt0KHQpe3JldHVybiBjb25zb2xlLndhcm4oIlRIUkVFLlBhcnRpY2xlU3lzdGVtTWF0ZXJpYWwgaGFzIGJlZW4gcmVuYW1lZCB0byBUSFJFRS5Qb2ludHNNYXRlcmlhbC4iKSxuZXcgUUd0KHQpfSxQYXRoOmZZdCxQZXJzcGVjdGl2ZUNhbWVyYTpIVnQsUGxhbmU6eEZ0LFBsYW5lQnVmZmVyR2VvbWV0cnk6S1Z0LFBsYW5lR2VvbWV0cnk6S1Z0LFBsYW5lSGVscGVyOmNsYXNzIGV4dGVuZHMgWEd0e2NvbnN0cnVjdG9yKHQsZT0xLG49MTY3NzY5NjApe2NvbnN0IGk9bixyPW5ldyBwVnQ7ci5zZXRBdHRyaWJ1dGUoInBvc2l0aW9uIixuZXcgZVZ0KFsxLC0xLDEsLTEsMSwxLC0xLC0xLDEsMSwxLDEsLTEsMSwxLC0xLC0xLDEsMSwtMSwxLDEsMSwxLDAsMCwxLDAsMCwwXSwzKSksci5jb21wdXRlQm91bmRpbmdTcGhlcmUoKSxzdXBlcihyLG5ldyBqR3Qoe2NvbG9yOmksdG9uZU1hcHBlZDohMX0pKSx0aGlzLnR5cGU9IlBsYW5lSGVscGVyIix0aGlzLnBsYW5lPXQsdGhpcy5zaXplPWU7Y29uc3Qgbz1uZXcgcFZ0O28uc2V0QXR0cmlidXRlKCJwb3NpdGlvbiIsbmV3IGVWdChbMSwxLDEsLTEsMSwxLC0xLC0xLDEsMSwxLDEsLTEsLTEsMSwxLC0xLDFdLDMpKSxvLmNvbXB1dGVCb3VuZGluZ1NwaGVyZSgpLHRoaXMuYWRkKG5ldyBQVnQobyxuZXcgVUZ0KHtjb2xvcjppLG9wYWNpdHk6LjIsdHJhbnNwYXJlbnQ6ITAsZGVwdGhXcml0ZTohMSx0b25lTWFwcGVkOiExfSkpKX11cGRhdGVNYXRyaXhXb3JsZCh0KXtsZXQgZT0tdGhpcy5wbGFuZS5jb25zdGFudDtNYXRoLmFicyhlKTwxZS04JiYoZT0xZS04KSx0aGlzLnNjYWxlLnNldCguNSp0aGlzLnNpemUsLjUqdGhpcy5zaXplLGUpLHRoaXMuY2hpbGRyZW5bMF0ubWF0ZXJpYWwuc2lkZT1lPDA/MTowLHRoaXMubG9va0F0KHRoaXMucGxhbmUubm9ybWFsKSxzdXBlci51cGRhdGVNYXRyaXhXb3JsZCh0KX19LFBvaW50Q2xvdWQ6ZnVuY3Rpb24gbkt0KHQsZSl7cmV0dXJuIGNvbnNvbGUud2FybigiVEhSRUUuUG9pbnRDbG91ZCBoYXMgYmVlbiByZW5hbWVkIHRvIFRIUkVFLlBvaW50cy4iKSxuZXcgcld0KHQsZSl9LFBvaW50Q2xvdWRNYXRlcmlhbDpmdW5jdGlvbiBpS3QodCl7cmV0dXJuIGNvbnNvbGUud2FybigiVEhSRUUuUG9pbnRDbG91ZE1hdGVyaWFsIGhhcyBiZWVuIHJlbmFtZWQgdG8gVEhSRUUuUG9pbnRzTWF0ZXJpYWwuIiksbmV3IFFHdCh0KX0sUG9pbnRMaWdodDp3WXQsUG9pbnRMaWdodEhlbHBlcjpjbGFzcyBleHRlbmRzIFBWdHtjb25zdHJ1Y3Rvcih0LGUsbil7c3VwZXIobmV3IGVxdChlLDQsMiksbmV3IFVGdCh7d2lyZWZyYW1lOiEwLGZvZzohMSx0b25lTWFwcGVkOiExfSkpLHRoaXMubGlnaHQ9dCx0aGlzLmxpZ2h0LnVwZGF0ZU1hdHJpeFdvcmxkKCksdGhpcy5jb2xvcj1uLHRoaXMudHlwZT0iUG9pbnRMaWdodEhlbHBlciIsdGhpcy5tYXRyaXg9dGhpcy5saWdodC5tYXRyaXhXb3JsZCx0aGlzLm1hdHJpeEF1dG9VcGRhdGU9ITEsdGhpcy51cGRhdGUoKX1kaXNwb3NlKCl7dGhpcy5nZW9tZXRyeS5kaXNwb3NlKCksdGhpcy5tYXRlcmlhbC5kaXNwb3NlKCl9dXBkYXRlKCl7dm9pZCAwIT09dGhpcy5jb2xvcj90aGlzLm1hdGVyaWFsLmNvbG9yLnNldCh0aGlzLmNvbG9yKTp0aGlzLm1hdGVyaWFsLmNvbG9yLmNvcHkodGhpcy5saWdodC5jb2xvcil9fSxQb2ludHM6cld0LFBvaW50c01hdGVyaWFsOlFHdCxQb2xhckdyaWRIZWxwZXI6Y2xhc3MgZXh0ZW5kcyBaR3R7Y29uc3RydWN0b3IodD0xMCxlPTE2LG49OCxpPTY0LHI9NDQ3MzkyNCxvPTg5NDc4NDgpe3I9bmV3IEhGdChyKSxvPW5ldyBIRnQobyk7Y29uc3QgYT1bXSxzPVtdO2ZvcihsZXQgbj0wO248PWU7bisrKXtjb25zdCBpPW4vZSooMipNYXRoLlBJKSxsPU1hdGguc2luKGkpKnQsYz1NYXRoLmNvcyhpKSp0O2EucHVzaCgwLDAsMCksYS5wdXNoKGwsMCxjKTtjb25zdCB1PTEmbj9yOm87cy5wdXNoKHUucix1LmcsdS5iKSxzLnB1c2godS5yLHUuZyx1LmIpfWZvcihsZXQgZT0wO2U8PW47ZSsrKXtjb25zdCBsPTEmZT9yOm8sYz10LXQvbiplO2ZvcihsZXQgdD0wO3Q8aTt0Kyspe2xldCBlPXQvaSooMipNYXRoLlBJKSxuPU1hdGguc2luKGUpKmMscj1NYXRoLmNvcyhlKSpjO2EucHVzaChuLDAscikscy5wdXNoKGwucixsLmcsbC5iKSxlPSh0KzEpL2kqKDIqTWF0aC5QSSksbj1NYXRoLnNpbihlKSpjLHI9TWF0aC5jb3MoZSkqYyxhLnB1c2gobiwwLHIpLHMucHVzaChsLnIsbC5nLGwuYil9fWNvbnN0IGw9bmV3IHBWdDtsLnNldEF0dHJpYnV0ZSgicG9zaXRpb24iLG5ldyBlVnQoYSwzKSksbC5zZXRBdHRyaWJ1dGUoImNvbG9yIixuZXcgZVZ0KHMsMykpLHN1cGVyKGwsbmV3IGpHdCh7dmVydGV4Q29sb3JzOiEwLHRvbmVNYXBwZWQ6ITF9KSksdGhpcy50eXBlPSJQb2xhckdyaWRIZWxwZXIifX0sUG9seWhlZHJvbkJ1ZmZlckdlb21ldHJ5OnBXdCxQb2x5aGVkcm9uR2VvbWV0cnk6cFd0LFBvc2l0aW9uYWxBdWRpbzpjbGFzcyBleHRlbmRzIGlYdHtjb25zdHJ1Y3Rvcih0KXtzdXBlcih0KSx0aGlzLnBhbm5lcj10aGlzLmNvbnRleHQuY3JlYXRlUGFubmVyKCksdGhpcy5wYW5uZXIucGFubmluZ01vZGVsPSJIUlRGIix0aGlzLnBhbm5lci5jb25uZWN0KHRoaXMuZ2Fpbil9Z2V0T3V0cHV0KCl7cmV0dXJuIHRoaXMucGFubmVyfWdldFJlZkRpc3RhbmNlKCl7cmV0dXJuIHRoaXMucGFubmVyLnJlZkRpc3RhbmNlfXNldFJlZkRpc3RhbmNlKHQpe3JldHVybiB0aGlzLnBhbm5lci5yZWZEaXN0YW5jZT10LHRoaXN9Z2V0Um9sbG9mZkZhY3Rvcigpe3JldHVybiB0aGlzLnBhbm5lci5yb2xsb2ZmRmFjdG9yfXNldFJvbGxvZmZGYWN0b3IodCl7cmV0dXJuIHRoaXMucGFubmVyLnJvbGxvZmZGYWN0b3I9dCx0aGlzfWdldERpc3RhbmNlTW9kZWwoKXtyZXR1cm4gdGhpcy5wYW5uZXIuZGlzdGFuY2VNb2RlbH1zZXREaXN0YW5jZU1vZGVsKHQpe3JldHVybiB0aGlzLnBhbm5lci5kaXN0YW5jZU1vZGVsPXQsdGhpc31nZXRNYXhEaXN0YW5jZSgpe3JldHVybiB0aGlzLnBhbm5lci5tYXhEaXN0YW5jZX1zZXRNYXhEaXN0YW5jZSh0KXtyZXR1cm4gdGhpcy5wYW5uZXIubWF4RGlzdGFuY2U9dCx0aGlzfXNldERpcmVjdGlvbmFsQ29uZSh0LGUsbil7cmV0dXJuIHRoaXMucGFubmVyLmNvbmVJbm5lckFuZ2xlPXQsdGhpcy5wYW5uZXIuY29uZU91dGVyQW5nbGU9ZSx0aGlzLnBhbm5lci5jb25lT3V0ZXJHYWluPW4sdGhpc311cGRhdGVNYXRyaXhXb3JsZCh0KXtpZihzdXBlci51cGRhdGVNYXRyaXhXb3JsZCh0KSwhMD09PXRoaXMuaGFzUGxheWJhY2tDb250cm9sJiYhMT09PXRoaXMuaXNQbGF5aW5nKXJldHVybjt0aGlzLm1hdHJpeFdvcmxkLmRlY29tcG9zZShyWHQsb1h0LGFYdCksc1h0LnNldCgwLDAsMSkuYXBwbHlRdWF0ZXJuaW9uKG9YdCk7Y29uc3QgZT10aGlzLnBhbm5lcjtpZihlLnBvc2l0aW9uWCl7Y29uc3QgdD10aGlzLmNvbnRleHQuY3VycmVudFRpbWUrdGhpcy5saXN0ZW5lci50aW1lRGVsdGE7ZS5wb3NpdGlvblgubGluZWFyUmFtcFRvVmFsdWVBdFRpbWUoclh0LngsdCksZS5wb3NpdGlvblkubGluZWFyUmFtcFRvVmFsdWVBdFRpbWUoclh0LnksdCksZS5wb3NpdGlvbloubGluZWFyUmFtcFRvVmFsdWVBdFRpbWUoclh0LnosdCksZS5vcmllbnRhdGlvblgubGluZWFyUmFtcFRvVmFsdWVBdFRpbWUoc1h0LngsdCksZS5vcmllbnRhdGlvblkubGluZWFyUmFtcFRvVmFsdWVBdFRpbWUoc1h0LnksdCksZS5vcmllbnRhdGlvbloubGluZWFyUmFtcFRvVmFsdWVBdFRpbWUoc1h0LnosdCl9ZWxzZSBlLnNldFBvc2l0aW9uKHJYdC54LHJYdC55LHJYdC56KSxlLnNldE9yaWVudGF0aW9uKHNYdC54LHNYdC55LHNYdC56KX19LFByb3BlcnR5QmluZGluZzpiWHQsUHJvcGVydHlNaXhlcjpjWHQsUXVhZHJhdGljQmV6aWVyQ3VydmU6Y1l0LFF1YWRyYXRpY0JlemllckN1cnZlMzp1WXQsUXVhdGVybmlvbjpfSHQsUXVhdGVybmlvbktleWZyYW1lVHJhY2s6THF0LFF1YXRlcm5pb25MaW5lYXJJbnRlcnBvbGFudDprcXQsUkVWSVNJT046UUR0LFJHQkFEZXB0aFBhY2tpbmc6MzIwMSxSR0JBRm9ybWF0OlRCdCxSR0JBSW50ZWdlckZvcm1hdDoxMDMzLFJHQkFfQVNUQ18xMHgxMF9Gb3JtYXQ6Mzc4MTksUkdCQV9BU1RDXzEweDVfRm9ybWF0OjM3ODE2LFJHQkFfQVNUQ18xMHg2X0Zvcm1hdDozNzgxNyxSR0JBX0FTVENfMTB4OF9Gb3JtYXQ6Mzc4MTgsUkdCQV9BU1RDXzEyeDEwX0Zvcm1hdDozNzgyMCxSR0JBX0FTVENfMTJ4MTJfRm9ybWF0OjM3ODIxLFJHQkFfQVNUQ180eDRfRm9ybWF0OjM3ODA4LFJHQkFfQVNUQ181eDRfRm9ybWF0OjM3ODA5LFJHQkFfQVNUQ181eDVfRm9ybWF0OjM3ODEwLFJHQkFfQVNUQ182eDVfRm9ybWF0OjM3ODExLFJHQkFfQVNUQ182eDZfRm9ybWF0OjM3ODEyLFJHQkFfQVNUQ184eDVfRm9ybWF0OjM3ODEzLFJHQkFfQVNUQ184eDZfRm9ybWF0OjM3ODE0LFJHQkFfQVNUQ184eDhfRm9ybWF0OjM3ODE1LFJHQkFfQlBUQ19Gb3JtYXQ6MzY0OTIsUkdCQV9FVEMyX0VBQ19Gb3JtYXQ6QkJ0LFJHQkFfUFZSVENfMkJQUFYxX0Zvcm1hdDp6QnQsUkdCQV9QVlJUQ180QlBQVjFfRm9ybWF0OlJCdCxSR0JBX1MzVENfRFhUMV9Gb3JtYXQ6TEJ0LFJHQkFfUzNUQ19EWFQzX0Zvcm1hdDpQQnQsUkdCQV9TM1RDX0RYVDVfRm9ybWF0OklCdCxSR0JERW5jb2Rpbmc6UUJ0LFJHQkVFbmNvZGluZzpLQnQsUkdCRUZvcm1hdDoxMDIzLFJHQkZvcm1hdDpFQnQsUkdCSW50ZWdlckZvcm1hdDoxMDMyLFJHQk0xNkVuY29kaW5nOkpCdCxSR0JNN0VuY29kaW5nOlpCdCxSR0JfRVRDMV9Gb3JtYXQ6MzYxOTYsUkdCX0VUQzJfRm9ybWF0OkRCdCxSR0JfUFZSVENfMkJQUFYxX0Zvcm1hdDpPQnQsUkdCX1BWUlRDXzRCUFBWMV9Gb3JtYXQ6TkJ0LFJHQl9TM1RDX0RYVDFfRm9ybWF0OmtCdCxSR0Zvcm1hdDoxMDMwLFJHSW50ZWdlckZvcm1hdDoxMDMxLFJhd1NoYWRlck1hdGVyaWFsOnVxdCxSYXk6V0h0LFJheWNhc3RlcjpBWHQsUmVjdEFyZWFMaWdodDpBWXQsUmVkRm9ybWF0OjEwMjgsUmVkSW50ZWdlckZvcm1hdDoxMDI5LFJlaW5oYXJkVG9uZU1hcHBpbmc6MixSZXBlYXRXcmFwcGluZzp1QnQsUmVwbGFjZVN0ZW5jaWxPcDo3NjgxLFJldmVyc2VTdWJ0cmFjdEVxdWF0aW9uOjEwMixSaW5nQnVmZmVyR2VvbWV0cnk6UVd0LFJpbmdHZW9tZXRyeTpRV3QsU1JHQjhfQUxQSEE4X0FTVENfMTB4MTBfRm9ybWF0OjM3ODUxLFNSR0I4X0FMUEhBOF9BU1RDXzEweDVfRm9ybWF0OjM3ODQ4LFNSR0I4X0FMUEhBOF9BU1RDXzEweDZfRm9ybWF0OjM3ODQ5LFNSR0I4X0FMUEhBOF9BU1RDXzEweDhfRm9ybWF0OjM3ODUwLFNSR0I4X0FMUEhBOF9BU1RDXzEyeDEwX0Zvcm1hdDozNzg1MixTUkdCOF9BTFBIQThfQVNUQ18xMngxMl9Gb3JtYXQ6Mzc4NTMsU1JHQjhfQUxQSEE4X0FTVENfNHg0X0Zvcm1hdDozNzg0MCxTUkdCOF9BTFBIQThfQVNUQ181eDRfRm9ybWF0OjM3ODQxLFNSR0I4X0FMUEhBOF9BU1RDXzV4NV9Gb3JtYXQ6Mzc4NDIsU1JHQjhfQUxQSEE4X0FTVENfNng1X0Zvcm1hdDozNzg0MyxTUkdCOF9BTFBIQThfQVNUQ182eDZfRm9ybWF0OjM3ODQ0LFNSR0I4X0FMUEhBOF9BU1RDXzh4NV9Gb3JtYXQ6Mzc4NDUsU1JHQjhfQUxQSEE4X0FTVENfOHg2X0Zvcm1hdDozNzg0NixTUkdCOF9BTFBIQThfQVNUQ184eDhfRm9ybWF0OjM3ODQ3LFNjZW5lOnJHdCxTY2VuZVV0aWxzOk8kdCxTaGFkZXJDaHVuazpaVnQsU2hhZGVyTGliOlFWdCxTaGFkZXJNYXRlcmlhbDpEVnQsU2hhZG93TWF0ZXJpYWw6Y3F0LFNoYXBlOm1ZdCxTaGFwZUJ1ZmZlckdlb21ldHJ5OnRxdCxTaGFwZUdlb21ldHJ5OnRxdCxTaGFwZVBhdGg6SFl0LFNoYXBlVXRpbHM6R1d0LFNob3J0VHlwZToxMDExLFNrZWxldG9uOnpHdCxTa2VsZXRvbkhlbHBlcjpWWHQsU2tpbm5lZE1lc2g6SUd0LFNtb290aFNoYWRpbmc6MixTcGhlcmU6REh0LFNwaGVyZUJ1ZmZlckdlb21ldHJ5OmVxdCxTcGhlcmVHZW9tZXRyeTplcXQsU3BoZXJpY2FsOkxYdCxTcGhlcmljYWxIYXJtb25pY3MzOkNZdCxTcGxpbmU6SSR0LFNwbGluZUN1cnZlOmhZdCxTcGxpbmVDdXJ2ZTM6UCR0LFNwb3RMaWdodDpiWXQsU3BvdExpZ2h0SGVscGVyOmNsYXNzIGV4dGVuZHMgX0Z0e2NvbnN0cnVjdG9yKHQsZSl7c3VwZXIoKSx0aGlzLmxpZ2h0PXQsdGhpcy5saWdodC51cGRhdGVNYXRyaXhXb3JsZCgpLHRoaXMubWF0cml4PXQubWF0cml4V29ybGQsdGhpcy5tYXRyaXhBdXRvVXBkYXRlPSExLHRoaXMuY29sb3I9ZTtjb25zdCBuPW5ldyBwVnQsaT1bMCwwLDAsMCwwLDEsMCwwLDAsMSwwLDEsMCwwLDAsLTEsMCwxLDAsMCwwLDAsMSwxLDAsMCwwLDAsLTEsMV07Zm9yKGxldCB0PTAsZT0xLG49MzI7dDxuO3QrKyxlKyspe2NvbnN0IHI9dC9uKk1hdGguUEkqMixvPWUvbipNYXRoLlBJKjI7aS5wdXNoKE1hdGguY29zKHIpLE1hdGguc2luKHIpLDEsTWF0aC5jb3MobyksTWF0aC5zaW4obyksMSl9bi5zZXRBdHRyaWJ1dGUoInBvc2l0aW9uIixuZXcgZVZ0KGksMykpO2NvbnN0IHI9bmV3IGpHdCh7Zm9nOiExLHRvbmVNYXBwZWQ6ITF9KTt0aGlzLmNvbmU9bmV3IFpHdChuLHIpLHRoaXMuYWRkKHRoaXMuY29uZSksdGhpcy51cGRhdGUoKX1kaXNwb3NlKCl7dGhpcy5jb25lLmdlb21ldHJ5LmRpc3Bvc2UoKSx0aGlzLmNvbmUubWF0ZXJpYWwuZGlzcG9zZSgpfXVwZGF0ZSgpe3RoaXMubGlnaHQudXBkYXRlTWF0cml4V29ybGQoKTtjb25zdCB0PXRoaXMubGlnaHQuZGlzdGFuY2U/dGhpcy5saWdodC5kaXN0YW5jZToxZTMsZT10Kk1hdGgudGFuKHRoaXMubGlnaHQuYW5nbGUpO3RoaXMuY29uZS5zY2FsZS5zZXQoZSxlLHQpLERYdC5zZXRGcm9tTWF0cml4UG9zaXRpb24odGhpcy5saWdodC50YXJnZXQubWF0cml4V29ybGQpLHRoaXMuY29uZS5sb29rQXQoRFh0KSx2b2lkIDAhPT10aGlzLmNvbG9yP3RoaXMuY29uZS5tYXRlcmlhbC5jb2xvci5zZXQodGhpcy5jb2xvcik6dGhpcy5jb25lLm1hdGVyaWFsLmNvbG9yLmNvcHkodGhpcy5saWdodC5jb2xvcil9fSxTcHJpdGU6d0d0LFNwcml0ZU1hdGVyaWFsOmxHdCxTcmNBbHBoYUZhY3RvcjoyMDQsU3JjQWxwaGFTYXR1cmF0ZUZhY3RvcjoyMTAsU3JjQ29sb3JGYWN0b3I6MjAyLFN0YXRpY0NvcHlVc2FnZTozNTA0NixTdGF0aWNEcmF3VXNhZ2U6ZUh0LFN0YXRpY1JlYWRVc2FnZTozNTA0NSxTdGVyZW9DYW1lcmE6S1l0LFN0cmVhbUNvcHlVc2FnZTozNTA0MixTdHJlYW1EcmF3VXNhZ2U6MzUwNDAsU3RyZWFtUmVhZFVzYWdlOjM1MDQxLFN0cmluZ0tleWZyYW1lVHJhY2s6UHF0LFN1YnRyYWN0RXF1YXRpb246MTAxLFN1YnRyYWN0aXZlQmxlbmRpbmc6MyxUT1VDSDplQnQsVGFuZ2VudFNwYWNlTm9ybWFsTWFwOjAsVGV0cmFoZWRyb25CdWZmZXJHZW9tZXRyeTpucXQsVGV0cmFoZWRyb25HZW9tZXRyeTpucXQsVGV4dEJ1ZmZlckdlb21ldHJ5OmlxdCxUZXh0R2VvbWV0cnk6aXF0LFRleHR1cmU6cEh0LFRleHR1cmVMb2FkZXI6cXF0LFRvcnVzQnVmZmVyR2VvbWV0cnk6cnF0LFRvcnVzR2VvbWV0cnk6cnF0LFRvcnVzS25vdEJ1ZmZlckdlb21ldHJ5Om9xdCxUb3J1c0tub3RHZW9tZXRyeTpvcXQsVHJpYW5nbGU6SUZ0LFRyaWFuZ2xlRmFuRHJhd01vZGU6MixUcmlhbmdsZVN0cmlwRHJhd01vZGU6MSxUcmlhbmdsZXNEcmF3TW9kZTowLFR1YmVCdWZmZXJHZW9tZXRyeTphcXQsVHViZUdlb21ldHJ5OmFxdCxVVk1hcHBpbmc6aUJ0LFVpbnQxNkF0dHJpYnV0ZTpmdW5jdGlvbiByS3QodCxlKXtyZXR1cm4gY29uc29sZS53YXJuKCJUSFJFRS5VaW50MTZBdHRyaWJ1dGUgaGFzIGJlZW4gcmVtb3ZlZC4gVXNlIG5ldyBUSFJFRS5VaW50MTZCdWZmZXJBdHRyaWJ1dGUoKSBpbnN0ZWFkLiIpLG5ldyBaRnQodCxlKX0sVWludDE2QnVmZmVyQXR0cmlidXRlOlpGdCxVaW50MzJBdHRyaWJ1dGU6ZnVuY3Rpb24gb0t0KHQsZSl7cmV0dXJuIGNvbnNvbGUud2FybigiVEhSRUUuVWludDMyQXR0cmlidXRlIGhhcyBiZWVuIHJlbW92ZWQuIFVzZSBuZXcgVEhSRUUuVWludDMyQnVmZmVyQXR0cmlidXRlKCkgaW5zdGVhZC4iKSxuZXcgUUZ0KHQsZSl9LFVpbnQzMkJ1ZmZlckF0dHJpYnV0ZTpRRnQsVWludDhBdHRyaWJ1dGU6ZnVuY3Rpb24gYUt0KHQsZSl7cmV0dXJuIGNvbnNvbGUud2FybigiVEhSRUUuVWludDhBdHRyaWJ1dGUgaGFzIGJlZW4gcmVtb3ZlZC4gVXNlIG5ldyBUSFJFRS5VaW50OEJ1ZmZlckF0dHJpYnV0ZSgpIGluc3RlYWQuIiksbmV3IFhGdCh0LGUpfSxVaW50OEJ1ZmZlckF0dHJpYnV0ZTpYRnQsVWludDhDbGFtcGVkQXR0cmlidXRlOmZ1bmN0aW9uIHNLdCh0LGUpe3JldHVybiBjb25zb2xlLndhcm4oIlRIUkVFLlVpbnQ4Q2xhbXBlZEF0dHJpYnV0ZSBoYXMgYmVlbiByZW1vdmVkLiBVc2UgbmV3IFRIUkVFLlVpbnQ4Q2xhbXBlZEJ1ZmZlckF0dHJpYnV0ZSgpIGluc3RlYWQuIiksbmV3ICRGdCh0LGUpfSxVaW50OENsYW1wZWRCdWZmZXJBdHRyaWJ1dGU6JEZ0LFVuaWZvcm06TVh0LFVuaWZvcm1zTGliOkpWdCxVbmlmb3Jtc1V0aWxzOnpWdCxVbnNpZ25lZEJ5dGVUeXBlOnZCdCxVbnNpZ25lZEludDI0OFR5cGU6TUJ0LFVuc2lnbmVkSW50VHlwZTp4QnQsVW5zaWduZWRTaG9ydDQ0NDRUeXBlOjEwMTcsVW5zaWduZWRTaG9ydDU1NTFUeXBlOjEwMTgsVW5zaWduZWRTaG9ydDU2NVR5cGU6MTAxOSxVbnNpZ25lZFNob3J0VHlwZTpiQnQsVlNNU2hhZG93TWFwOjMsVmVjdG9yMjpsSHQsVmVjdG9yMzp5SHQsVmVjdG9yNDptSHQsVmVjdG9yS2V5ZnJhbWVUcmFjazpJcXQsVmVydGV4OmZ1bmN0aW9uIGxLdCh0LGUsbil7cmV0dXJuIGNvbnNvbGUud2FybigiVEhSRUUuVmVydGV4IGhhcyBiZWVuIHJlbW92ZWQuIFVzZSBUSFJFRS5WZWN0b3IzIGluc3RlYWQuIiksbmV3IHlIdCh0LGUsbil9LFZlcnRleENvbG9yczoyLFZpZGVvVGV4dHVyZTphV3QsV2ViR0wxUmVuZGVyZXI6ZUd0LFdlYkdMQ3ViZVJlbmRlclRhcmdldDpVVnQsV2ViR0xNdWx0aXNhbXBsZVJlbmRlclRhcmdldDpjbGFzcyBleHRlbmRzIGdIdHtjb25zdHJ1Y3Rvcih0LGUsbil7c3VwZXIodCxlLG4pLE9iamVjdC5kZWZpbmVQcm9wZXJ0eSh0aGlzLCJpc1dlYkdMTXVsdGlzYW1wbGVSZW5kZXJUYXJnZXQiLHt2YWx1ZTohMH0pLHRoaXMuc2FtcGxlcz00fWNvcHkodCl7cmV0dXJuIHN1cGVyLmNvcHkuY2FsbCh0aGlzLHQpLHRoaXMuc2FtcGxlcz10LnNhbXBsZXMsdGhpc319LFdlYkdMUmVuZGVyVGFyZ2V0OmdIdCxXZWJHTFJlbmRlclRhcmdldEN1YmU6ZnVuY3Rpb24gY0t0KHQsZSxuKXtyZXR1cm4gY29uc29sZS53YXJuKCJUSFJFRS5XZWJHTFJlbmRlclRhcmdldEN1YmUoIHdpZHRoLCBoZWlnaHQsIG9wdGlvbnMgKSBpcyBub3cgV2ViR0xDdWJlUmVuZGVyVGFyZ2V0KCBzaXplLCBvcHRpb25zICkuIiksbmV3IFVWdCh0LG4pfSxXZWJHTFJlbmRlcmVyOnRHdCxXZWJHTFV0aWxzOlhVdCxXaXJlZnJhbWVHZW9tZXRyeTpzcXQsV2lyZWZyYW1lSGVscGVyOmZ1bmN0aW9uIHVLdCh0LGUpe3JldHVybiBjb25zb2xlLndhcm4oIlRIUkVFLldpcmVmcmFtZUhlbHBlciBoYXMgYmVlbiByZW1vdmVkLiBVc2UgVEhSRUUuV2lyZWZyYW1lR2VvbWV0cnkgaW5zdGVhZC4iKSxuZXcgWkd0KG5ldyBzcXQodC5nZW9tZXRyeSksbmV3IGpHdCh7Y29sb3I6dm9pZCAwIT09ZT9lOjE2Nzc3MjE1fSkpfSxXcmFwQXJvdW5kRW5kaW5nOkdCdCxYSFJMb2FkZXI6ZnVuY3Rpb24gaEt0KHQpe3JldHVybiBjb25zb2xlLndhcm4oIlRIUkVFLlhIUkxvYWRlciBoYXMgYmVlbiByZW5hbWVkIHRvIFRIUkVFLkZpbGVMb2FkZXIuIiksbmV3IEZxdCh0KX0sWmVyb0N1cnZhdHVyZUVuZGluZzpqQnQsWmVyb0ZhY3RvcjoyMDAsWmVyb1Nsb3BlRW5kaW5nOlVCdCxaZXJvU3RlbmNpbE9wOjAsc1JHQkVuY29kaW5nOlhCdH0pLGRLdD1mdW5jdGlvbih0LGUpe3ZhciBuLGkscixvLGEsczt2b2lkIDA9PT1lJiZjb25zb2xlLndhcm4oJ1RIUkVFLk9yYml0Q29udHJvbHM6IFRoZSBzZWNvbmQgcGFyYW1ldGVyICJkb21FbGVtZW50IiBpcyBub3cgbWFuZGF0b3J5LicpLGU9PT1kb2N1bWVudCYmY29uc29sZS5lcnJvcignVEhSRUUuT3JiaXRDb250cm9sczogImRvY3VtZW50IiBzaG91bGQgbm90IGJlIHVzZWQgYXMgdGhlIHRhcmdldCAiZG9tRWxlbWVudCIuIFBsZWFzZSB1c2UgInJlbmRlcmVyLmRvbUVsZW1lbnQiIGluc3RlYWQuJyksdGhpcy5vYmplY3Q9dCx0aGlzLmRvbUVsZW1lbnQ9ZSx0aGlzLmVuYWJsZWQ9ITAsdGhpcy50YXJnZXQ9bmV3IHlIdCx0aGlzLm1pbkRpc3RhbmNlPTAsdGhpcy5tYXhEaXN0YW5jZT0xLzAsdGhpcy5taW5ab29tPTAsdGhpcy5tYXhab29tPTEvMCx0aGlzLm1pblBvbGFyQW5nbGU9MCx0aGlzLm1heFBvbGFyQW5nbGU9TWF0aC5QSSx0aGlzLm1pbkF6aW11dGhBbmdsZT0tMS8wLHRoaXMubWF4QXppbXV0aEFuZ2xlPTEvMCx0aGlzLmVuYWJsZURhbXBpbmc9ITEsdGhpcy5kYW1waW5nRmFjdG9yPS4wNSx0aGlzLmVuYWJsZVpvb209ITAsdGhpcy56b29tU3BlZWQ9MSx0aGlzLmVuYWJsZVJvdGF0ZT0hMCx0aGlzLnJvdGF0ZVNwZWVkPTEsdGhpcy5lbmFibGVQYW49ITAsdGhpcy5wYW5TcGVlZD0xLHRoaXMuc2NyZWVuU3BhY2VQYW5uaW5nPSEwLHRoaXMua2V5UGFuU3BlZWQ9Nyx0aGlzLmF1dG9Sb3RhdGU9ITEsdGhpcy5hdXRvUm90YXRlU3BlZWQ9Mix0aGlzLmtleXM9e0xFRlQ6MzcsVVA6MzgsUklHSFQ6MzksQk9UVE9NOjQwfSx0aGlzLm1vdXNlQnV0dG9ucz17TEVGVDp0QnQuUk9UQVRFLE1JRERMRTp0QnQuRE9MTFksUklHSFQ6dEJ0LlBBTn0sdGhpcy50b3VjaGVzPXtPTkU6ZUJ0LlJPVEFURSxUV086ZUJ0LkRPTExZX1BBTn0sdGhpcy50YXJnZXQwPXRoaXMudGFyZ2V0LmNsb25lKCksdGhpcy5wb3NpdGlvbjA9dGhpcy5vYmplY3QucG9zaXRpb24uY2xvbmUoKSx0aGlzLnpvb20wPXRoaXMub2JqZWN0Lnpvb20sdGhpcy5fZG9tRWxlbWVudEtleUV2ZW50cz1udWxsLHRoaXMuZ2V0UG9sYXJBbmdsZT1mdW5jdGlvbigpe3JldHVybiBtLnBoaX0sdGhpcy5nZXRBemltdXRoYWxBbmdsZT1mdW5jdGlvbigpe3JldHVybiBtLnRoZXRhfSx0aGlzLmxpc3RlblRvS2V5RXZlbnRzPWZ1bmN0aW9uKHQpe3QuYWRkRXZlbnRMaXN0ZW5lcigia2V5ZG93biIsSyksdGhpcy5fZG9tRWxlbWVudEtleUV2ZW50cz10fSx0aGlzLnNhdmVTdGF0ZT1mdW5jdGlvbigpe2wudGFyZ2V0MC5jb3B5KGwudGFyZ2V0KSxsLnBvc2l0aW9uMC5jb3B5KGwub2JqZWN0LnBvc2l0aW9uKSxsLnpvb20wPWwub2JqZWN0Lnpvb219LHRoaXMucmVzZXQ9ZnVuY3Rpb24oKXtsLnRhcmdldC5jb3B5KGwudGFyZ2V0MCksbC5vYmplY3QucG9zaXRpb24uY29weShsLnBvc2l0aW9uMCksbC5vYmplY3Quem9vbT1sLnpvb20wLGwub2JqZWN0LnVwZGF0ZVByb2plY3Rpb25NYXRyaXgoKSxsLmRpc3BhdGNoRXZlbnQoYyksbC51cGRhdGUoKSxwPWQuTk9ORX0sdGhpcy51cGRhdGU9KG49bmV3IHlIdCxpPShuZXcgX0h0KS5zZXRGcm9tVW5pdFZlY3RvcnModC51cCxuZXcgeUh0KDAsMSwwKSkscj1pLmNsb25lKCkuaW52ZXJ0KCksbz1uZXcgeUh0LGE9bmV3IF9IdCxzPTIqTWF0aC5QSSxmdW5jdGlvbiB0KCl7dmFyIGU9bC5vYmplY3QucG9zaXRpb247bi5jb3B5KGUpLnN1YihsLnRhcmdldCksbi5hcHBseVF1YXRlcm5pb24oaSksbS5zZXRGcm9tVmVjdG9yMyhuKSxsLmF1dG9Sb3RhdGUmJnA9PT1kLk5PTkUmJkwoKGZ1bmN0aW9uIHUoKXtyZXR1cm4gMipNYXRoLlBJLzYwLzYwKmwuYXV0b1JvdGF0ZVNwZWVkfSkoKSksbC5lbmFibGVEYW1waW5nPyhtLnRoZXRhKz1nLnRoZXRhKmwuZGFtcGluZ0ZhY3RvcixtLnBoaSs9Zy5waGkqbC5kYW1waW5nRmFjdG9yKToobS50aGV0YSs9Zy50aGV0YSxtLnBoaSs9Zy5waGkpO3ZhciBoPWwubWluQXppbXV0aEFuZ2xlLGI9bC5tYXhBemltdXRoQW5nbGU7cmV0dXJuIGlzRmluaXRlKGgpJiZpc0Zpbml0ZShiKSYmKGg8LU1hdGguUEk/aCs9czpoPk1hdGguUEkmJihoLT1zKSxiPC1NYXRoLlBJP2IrPXM6Yj5NYXRoLlBJJiYoYi09cyksbS50aGV0YT1oPD1iP01hdGgubWF4KGgsTWF0aC5taW4oYixtLnRoZXRhKSk6bS50aGV0YT4oaCtiKS8yP01hdGgubWF4KGgsbS50aGV0YSk6TWF0aC5taW4oYixtLnRoZXRhKSksbS5waGk9TWF0aC5tYXgobC5taW5Qb2xhckFuZ2xlLE1hdGgubWluKGwubWF4UG9sYXJBbmdsZSxtLnBoaSkpLG0ubWFrZVNhZmUoKSxtLnJhZGl1cyo9XyxtLnJhZGl1cz1NYXRoLm1heChsLm1pbkRpc3RhbmNlLE1hdGgubWluKGwubWF4RGlzdGFuY2UsbS5yYWRpdXMpKSwhMD09PWwuZW5hYmxlRGFtcGluZz9sLnRhcmdldC5hZGRTY2FsZWRWZWN0b3IoeSxsLmRhbXBpbmdGYWN0b3IpOmwudGFyZ2V0LmFkZCh5KSxuLnNldEZyb21TcGhlcmljYWwobSksbi5hcHBseVF1YXRlcm5pb24ociksZS5jb3B5KGwudGFyZ2V0KS5hZGQobiksbC5vYmplY3QubG9va0F0KGwudGFyZ2V0KSwhMD09PWwuZW5hYmxlRGFtcGluZz8oZy50aGV0YSo9MS1sLmRhbXBpbmdGYWN0b3IsZy5waGkqPTEtbC5kYW1waW5nRmFjdG9yLHkubXVsdGlwbHlTY2FsYXIoMS1sLmRhbXBpbmdGYWN0b3IpKTooZy5zZXQoMCwwLDApLHkuc2V0KDAsMCwwKSksXz0xLCEhKHZ8fG8uZGlzdGFuY2VUb1NxdWFyZWQobC5vYmplY3QucG9zaXRpb24pPmZ8fDgqKDEtYS5kb3QobC5vYmplY3QucXVhdGVybmlvbikpPmYpJiYobC5kaXNwYXRjaEV2ZW50KGMpLG8uY29weShsLm9iamVjdC5wb3NpdGlvbiksYS5jb3B5KGwub2JqZWN0LnF1YXRlcm5pb24pLHY9ITEsITApfSksdGhpcy5kaXNwb3NlPWZ1bmN0aW9uKCl7bC5kb21FbGVtZW50LnJlbW92ZUV2ZW50TGlzdGVuZXIoImNvbnRleHRtZW51Iix0dCksbC5kb21FbGVtZW50LnJlbW92ZUV2ZW50TGlzdGVuZXIoInBvaW50ZXJkb3duIixxKSxsLmRvbUVsZW1lbnQucmVtb3ZlRXZlbnRMaXN0ZW5lcigid2hlZWwiLCQpLGwuZG9tRWxlbWVudC5yZW1vdmVFdmVudExpc3RlbmVyKCJ0b3VjaHN0YXJ0IixaKSxsLmRvbUVsZW1lbnQucmVtb3ZlRXZlbnRMaXN0ZW5lcigidG91Y2hlbmQiLFEpLGwuZG9tRWxlbWVudC5yZW1vdmVFdmVudExpc3RlbmVyKCJ0b3VjaG1vdmUiLEopLGwuZG9tRWxlbWVudC5vd25lckRvY3VtZW50LnJlbW92ZUV2ZW50TGlzdGVuZXIoInBvaW50ZXJtb3ZlIixZKSxsLmRvbUVsZW1lbnQub3duZXJEb2N1bWVudC5yZW1vdmVFdmVudExpc3RlbmVyKCJwb2ludGVydXAiLFgpLG51bGwhPT1sLl9kb21FbGVtZW50S2V5RXZlbnRzJiZsLl9kb21FbGVtZW50S2V5RXZlbnRzLnJlbW92ZUV2ZW50TGlzdGVuZXIoImtleWRvd24iLEspfTt2YXIgbD10aGlzLGM9e3R5cGU6ImNoYW5nZSJ9LHU9e3R5cGU6InN0YXJ0In0saD17dHlwZToiZW5kIn0sZD17Tk9ORTotMSxST1RBVEU6MCxET0xMWToxLFBBTjoyLFRPVUNIX1JPVEFURTozLFRPVUNIX1BBTjo0LFRPVUNIX0RPTExZX1BBTjo1LFRPVUNIX0RPTExZX1JPVEFURTo2fSxwPWQuTk9ORSxmPTFlLTYsbT1uZXcgTFh0LGc9bmV3IExYdCxfPTEseT1uZXcgeUh0LHY9ITEsYj1uZXcgbEh0LHg9bmV3IGxIdCx3PW5ldyBsSHQsUz1uZXcgbEh0LE09bmV3IGxIdCxFPW5ldyBsSHQsVD1uZXcgbEh0LEE9bmV3IGxIdCxDPW5ldyBsSHQ7ZnVuY3Rpb24gaygpe3JldHVybiBNYXRoLnBvdyguOTUsbC56b29tU3BlZWQpfWZ1bmN0aW9uIEwodCl7Zy50aGV0YS09dH1mdW5jdGlvbiBQKHQpe2cucGhpLT10fXZhciBJLE49KEk9bmV3IHlIdCxmdW5jdGlvbiB0KGUsbil7SS5zZXRGcm9tTWF0cml4Q29sdW1uKG4sMCksSS5tdWx0aXBseVNjYWxhcigtZSkseS5hZGQoSSl9KSxPPShmdW5jdGlvbigpe3ZhciB0PW5ldyB5SHQ7cmV0dXJuIGZ1bmN0aW9uIGUobixpKXshMD09PWwuc2NyZWVuU3BhY2VQYW5uaW5nP3Quc2V0RnJvbU1hdHJpeENvbHVtbihpLDEpOih0LnNldEZyb21NYXRyaXhDb2x1bW4oaSwwKSx0LmNyb3NzVmVjdG9ycyhsLm9iamVjdC51cCx0KSksdC5tdWx0aXBseVNjYWxhcihuKSx5LmFkZCh0KX19KSgpLFI9KGZ1bmN0aW9uKCl7dmFyIHQ9bmV3IHlIdDtyZXR1cm4gZnVuY3Rpb24gZShuLGkpe3ZhciByPWwuZG9tRWxlbWVudDtpZihsLm9iamVjdC5pc1BlcnNwZWN0aXZlQ2FtZXJhKXt0LmNvcHkobC5vYmplY3QucG9zaXRpb24pLnN1YihsLnRhcmdldCk7dmFyIG89dC5sZW5ndGgoKTtvKj1NYXRoLnRhbihsLm9iamVjdC5mb3YvMipNYXRoLlBJLzE4MCksTigyKm4qby9yLmNsaWVudEhlaWdodCxsLm9iamVjdC5tYXRyaXgpLE8oMippKm8vci5jbGllbnRIZWlnaHQsbC5vYmplY3QubWF0cml4KX1lbHNlIGwub2JqZWN0LmlzT3J0aG9ncmFwaGljQ2FtZXJhPyhOKG4qKGwub2JqZWN0LnJpZ2h0LWwub2JqZWN0LmxlZnQpL2wub2JqZWN0Lnpvb20vci5jbGllbnRXaWR0aCxsLm9iamVjdC5tYXRyaXgpLE8oaSoobC5vYmplY3QudG9wLWwub2JqZWN0LmJvdHRvbSkvbC5vYmplY3Quem9vbS9yLmNsaWVudEhlaWdodCxsLm9iamVjdC5tYXRyaXgpKTooY29uc29sZS53YXJuKCJXQVJOSU5HOiBPcmJpdENvbnRyb2xzLmpzIGVuY291bnRlcmVkIGFuIHVua25vd24gY2FtZXJhIHR5cGUgLSBwYW4gZGlzYWJsZWQuIiksbC5lbmFibGVQYW49ITEpfX0pKCk7ZnVuY3Rpb24geih0KXtsLm9iamVjdC5pc1BlcnNwZWN0aXZlQ2FtZXJhP18vPXQ6bC5vYmplY3QuaXNPcnRob2dyYXBoaWNDYW1lcmE/KGwub2JqZWN0Lnpvb209TWF0aC5tYXgobC5taW5ab29tLE1hdGgubWluKGwubWF4Wm9vbSxsLm9iamVjdC56b29tKnQpKSxsLm9iamVjdC51cGRhdGVQcm9qZWN0aW9uTWF0cml4KCksdj0hMCk6KGNvbnNvbGUud2FybigiV0FSTklORzogT3JiaXRDb250cm9scy5qcyBlbmNvdW50ZXJlZCBhbiB1bmtub3duIGNhbWVyYSB0eXBlIC0gZG9sbHkvem9vbSBkaXNhYmxlZC4iKSxsLmVuYWJsZVpvb209ITEpfWZ1bmN0aW9uIEQodCl7bC5vYmplY3QuaXNQZXJzcGVjdGl2ZUNhbWVyYT9fKj10Omwub2JqZWN0LmlzT3J0aG9ncmFwaGljQ2FtZXJhPyhsLm9iamVjdC56b29tPU1hdGgubWF4KGwubWluWm9vbSxNYXRoLm1pbihsLm1heFpvb20sbC5vYmplY3Quem9vbS90KSksbC5vYmplY3QudXBkYXRlUHJvamVjdGlvbk1hdHJpeCgpLHY9ITApOihjb25zb2xlLndhcm4oIldBUk5JTkc6IE9yYml0Q29udHJvbHMuanMgZW5jb3VudGVyZWQgYW4gdW5rbm93biBjYW1lcmEgdHlwZSAtIGRvbGx5L3pvb20gZGlzYWJsZWQuIiksbC5lbmFibGVab29tPSExKX1mdW5jdGlvbiBCKHQpe2Iuc2V0KHQuY2xpZW50WCx0LmNsaWVudFkpfWZ1bmN0aW9uIEgodCl7Uy5zZXQodC5jbGllbnRYLHQuY2xpZW50WSl9ZnVuY3Rpb24gRih0KXsxPT10LnRvdWNoZXMubGVuZ3RoP2Iuc2V0KHQudG91Y2hlc1swXS5wYWdlWCx0LnRvdWNoZXNbMF0ucGFnZVkpOmIuc2V0KC41Kih0LnRvdWNoZXNbMF0ucGFnZVgrdC50b3VjaGVzWzFdLnBhZ2VYKSwuNSoodC50b3VjaGVzWzBdLnBhZ2VZK3QudG91Y2hlc1sxXS5wYWdlWSkpfWZ1bmN0aW9uIFYodCl7MT09dC50b3VjaGVzLmxlbmd0aD9TLnNldCh0LnRvdWNoZXNbMF0ucGFnZVgsdC50b3VjaGVzWzBdLnBhZ2VZKTpTLnNldCguNSoodC50b3VjaGVzWzBdLnBhZ2VYK3QudG91Y2hlc1sxXS5wYWdlWCksLjUqKHQudG91Y2hlc1swXS5wYWdlWSt0LnRvdWNoZXNbMV0ucGFnZVkpKX1mdW5jdGlvbiBqKHQpe3ZhciBlPXQudG91Y2hlc1swXS5wYWdlWC10LnRvdWNoZXNbMV0ucGFnZVgsbj10LnRvdWNoZXNbMF0ucGFnZVktdC50b3VjaGVzWzFdLnBhZ2VZLGk9TWF0aC5zcXJ0KGUqZStuKm4pO1Quc2V0KDAsaSl9ZnVuY3Rpb24gVSh0KXsxPT10LnRvdWNoZXMubGVuZ3RoP3guc2V0KHQudG91Y2hlc1swXS5wYWdlWCx0LnRvdWNoZXNbMF0ucGFnZVkpOnguc2V0KC41Kih0LnRvdWNoZXNbMF0ucGFnZVgrdC50b3VjaGVzWzFdLnBhZ2VYKSwuNSoodC50b3VjaGVzWzBdLnBhZ2VZK3QudG91Y2hlc1sxXS5wYWdlWSkpLHcuc3ViVmVjdG9ycyh4LGIpLm11bHRpcGx5U2NhbGFyKGwucm90YXRlU3BlZWQpO3ZhciBlPWwuZG9tRWxlbWVudDtMKDIqTWF0aC5QSSp3LngvZS5jbGllbnRIZWlnaHQpLFAoMipNYXRoLlBJKncueS9lLmNsaWVudEhlaWdodCksYi5jb3B5KHgpfWZ1bmN0aW9uIEcodCl7MT09dC50b3VjaGVzLmxlbmd0aD9NLnNldCh0LnRvdWNoZXNbMF0ucGFnZVgsdC50b3VjaGVzWzBdLnBhZ2VZKTpNLnNldCguNSoodC50b3VjaGVzWzBdLnBhZ2VYK3QudG91Y2hlc1sxXS5wYWdlWCksLjUqKHQudG91Y2hlc1swXS5wYWdlWSt0LnRvdWNoZXNbMV0ucGFnZVkpKSxFLnN1YlZlY3RvcnMoTSxTKS5tdWx0aXBseVNjYWxhcihsLnBhblNwZWVkKSxSKEUueCxFLnkpLFMuY29weShNKX1mdW5jdGlvbiBXKHQpe3ZhciBlPXQudG91Y2hlc1swXS5wYWdlWC10LnRvdWNoZXNbMV0ucGFnZVgsbj10LnRvdWNoZXNbMF0ucGFnZVktdC50b3VjaGVzWzFdLnBhZ2VZLGk9TWF0aC5zcXJ0KGUqZStuKm4pO0Euc2V0KDAsaSksQy5zZXQoMCxNYXRoLnBvdyhBLnkvVC55LGwuem9vbVNwZWVkKSkseihDLnkpLFQuY29weShBKX1mdW5jdGlvbiBxKHQpe2lmKCExIT09bC5lbmFibGVkKXN3aXRjaCh0LnBvaW50ZXJUeXBlKXtjYXNlIm1vdXNlIjpjYXNlInBlbiI6IShmdW5jdGlvbiBlKHQpe3ZhciBlO3N3aXRjaCh0LnByZXZlbnREZWZhdWx0KCksbC5kb21FbGVtZW50LmZvY3VzP2wuZG9tRWxlbWVudC5mb2N1cygpOndpbmRvdy5mb2N1cygpLHQuYnV0dG9uKXtjYXNlIDA6ZT1sLm1vdXNlQnV0dG9ucy5MRUZUO2JyZWFrO2Nhc2UgMTplPWwubW91c2VCdXR0b25zLk1JRERMRTticmVhaztjYXNlIDI6ZT1sLm1vdXNlQnV0dG9ucy5SSUdIVDticmVhaztkZWZhdWx0OmU9LTF9c3dpdGNoKGUpe2Nhc2UgdEJ0LkRPTExZOmlmKCExPT09bC5lbmFibGVab29tKXJldHVybjshKGZ1bmN0aW9uIG4odCl7VC5zZXQodC5jbGllbnRYLHQuY2xpZW50WSl9KSh0KSxwPWQuRE9MTFk7YnJlYWs7Y2FzZSB0QnQuUk9UQVRFOmlmKHQuY3RybEtleXx8dC5tZXRhS2V5fHx0LnNoaWZ0S2V5KXtpZighMT09PWwuZW5hYmxlUGFuKXJldHVybjtIKHQpLHA9ZC5QQU59ZWxzZXtpZighMT09PWwuZW5hYmxlUm90YXRlKXJldHVybjtCKHQpLHA9ZC5ST1RBVEV9YnJlYWs7Y2FzZSB0QnQuUEFOOmlmKHQuY3RybEtleXx8dC5tZXRhS2V5fHx0LnNoaWZ0S2V5KXtpZighMT09PWwuZW5hYmxlUm90YXRlKXJldHVybjtCKHQpLHA9ZC5ST1RBVEV9ZWxzZXtpZighMT09PWwuZW5hYmxlUGFuKXJldHVybjtIKHQpLHA9ZC5QQU59YnJlYWs7ZGVmYXVsdDpwPWQuTk9ORX1wIT09ZC5OT05FJiYobC5kb21FbGVtZW50Lm93bmVyRG9jdW1lbnQuYWRkRXZlbnRMaXN0ZW5lcigicG9pbnRlcm1vdmUiLFkpLGwuZG9tRWxlbWVudC5vd25lckRvY3VtZW50LmFkZEV2ZW50TGlzdGVuZXIoInBvaW50ZXJ1cCIsWCksbC5kaXNwYXRjaEV2ZW50KHUpKX0pKHQpfX1mdW5jdGlvbiBZKHQpe2lmKCExIT09bC5lbmFibGVkKXN3aXRjaCh0LnBvaW50ZXJUeXBlKXtjYXNlIm1vdXNlIjpjYXNlInBlbiI6IShmdW5jdGlvbiBlKHQpe2lmKCExIT09bC5lbmFibGVkKXN3aXRjaCh0LnByZXZlbnREZWZhdWx0KCkscCl7Y2FzZSBkLlJPVEFURTppZighMT09PWwuZW5hYmxlUm90YXRlKXJldHVybjshKGZ1bmN0aW9uIGUodCl7eC5zZXQodC5jbGllbnRYLHQuY2xpZW50WSksdy5zdWJWZWN0b3JzKHgsYikubXVsdGlwbHlTY2FsYXIobC5yb3RhdGVTcGVlZCk7dmFyIGU9bC5kb21FbGVtZW50O0woMipNYXRoLlBJKncueC9lLmNsaWVudEhlaWdodCksUCgyKk1hdGguUEkqdy55L2UuY2xpZW50SGVpZ2h0KSxiLmNvcHkoeCksbC51cGRhdGUoKX0pKHQpO2JyZWFrO2Nhc2UgZC5ET0xMWTppZighMT09PWwuZW5hYmxlWm9vbSlyZXR1cm47IShmdW5jdGlvbiBuKHQpe0Euc2V0KHQuY2xpZW50WCx0LmNsaWVudFkpLEMuc3ViVmVjdG9ycyhBLFQpLEMueT4wP3ooaygpKTpDLnk8MCYmRChrKCkpLFQuY29weShBKSxsLnVwZGF0ZSgpfSkodCk7YnJlYWs7Y2FzZSBkLlBBTjppZighMT09PWwuZW5hYmxlUGFuKXJldHVybjshKGZ1bmN0aW9uIGkodCl7TS5zZXQodC5jbGllbnRYLHQuY2xpZW50WSksRS5zdWJWZWN0b3JzKE0sUykubXVsdGlwbHlTY2FsYXIobC5wYW5TcGVlZCksUihFLngsRS55KSxTLmNvcHkoTSksbC51cGRhdGUoKX0pKHQpfX0pKHQpfX1mdW5jdGlvbiBYKHQpe3N3aXRjaCh0LnBvaW50ZXJUeXBlKXtjYXNlIm1vdXNlIjpjYXNlInBlbiI6IShmdW5jdGlvbiBlKHQpe2wuZG9tRWxlbWVudC5vd25lckRvY3VtZW50LnJlbW92ZUV2ZW50TGlzdGVuZXIoInBvaW50ZXJtb3ZlIixZKSxsLmRvbUVsZW1lbnQub3duZXJEb2N1bWVudC5yZW1vdmVFdmVudExpc3RlbmVyKCJwb2ludGVydXAiLFgpLCExIT09bC5lbmFibGVkJiYobC5kaXNwYXRjaEV2ZW50KGgpLHA9ZC5OT05FKX0pKCl9fWZ1bmN0aW9uICQodCl7ITE9PT1sLmVuYWJsZWR8fCExPT09bC5lbmFibGVab29tfHxwIT09ZC5OT05FJiZwIT09ZC5ST1RBVEV8fCh0LnByZXZlbnREZWZhdWx0KCksdC5zdG9wUHJvcGFnYXRpb24oKSxsLmRpc3BhdGNoRXZlbnQodSksKGZ1bmN0aW9uIGUodCl7dC5kZWx0YVk8MD9EKGsoKSk6dC5kZWx0YVk+MCYmeihrKCkpLGwudXBkYXRlKCl9KSh0KSxsLmRpc3BhdGNoRXZlbnQoaCkpfWZ1bmN0aW9uIEsodCl7ITEhPT1sLmVuYWJsZWQmJiExIT09bC5lbmFibGVQYW4mJihmdW5jdGlvbiBlKHQpe3ZhciBlPSExO3N3aXRjaCh0LmtleUNvZGUpe2Nhc2UgbC5rZXlzLlVQOlIoMCxsLmtleVBhblNwZWVkKSxlPSEwO2JyZWFrO2Nhc2UgbC5rZXlzLkJPVFRPTTpSKDAsLWwua2V5UGFuU3BlZWQpLGU9ITA7YnJlYWs7Y2FzZSBsLmtleXMuTEVGVDpSKGwua2V5UGFuU3BlZWQsMCksZT0hMDticmVhaztjYXNlIGwua2V5cy5SSUdIVDpSKC1sLmtleVBhblNwZWVkLDApLGU9ITB9ZSYmKHQucHJldmVudERlZmF1bHQoKSxsLnVwZGF0ZSgpKX0pKHQpfWZ1bmN0aW9uIFoodCl7aWYoITEhPT1sLmVuYWJsZWQpe3N3aXRjaCh0LnByZXZlbnREZWZhdWx0KCksdC50b3VjaGVzLmxlbmd0aCl7Y2FzZSAxOnN3aXRjaChsLnRvdWNoZXMuT05FKXtjYXNlIGVCdC5ST1RBVEU6aWYoITE9PT1sLmVuYWJsZVJvdGF0ZSlyZXR1cm47Rih0KSxwPWQuVE9VQ0hfUk9UQVRFO2JyZWFrO2Nhc2UgZUJ0LlBBTjppZighMT09PWwuZW5hYmxlUGFuKXJldHVybjtWKHQpLHA9ZC5UT1VDSF9QQU47YnJlYWs7ZGVmYXVsdDpwPWQuTk9ORX1icmVhaztjYXNlIDI6c3dpdGNoKGwudG91Y2hlcy5UV08pe2Nhc2UgZUJ0LkRPTExZX1BBTjppZighMT09PWwuZW5hYmxlWm9vbSYmITE9PT1sLmVuYWJsZVBhbilyZXR1cm47IShmdW5jdGlvbiBlKHQpe2wuZW5hYmxlWm9vbSYmaih0KSxsLmVuYWJsZVBhbiYmVih0KX0pKHQpLHA9ZC5UT1VDSF9ET0xMWV9QQU47YnJlYWs7Y2FzZSBlQnQuRE9MTFlfUk9UQVRFOmlmKCExPT09bC5lbmFibGVab29tJiYhMT09PWwuZW5hYmxlUm90YXRlKXJldHVybjshKGZ1bmN0aW9uIG4odCl7bC5lbmFibGVab29tJiZqKHQpLGwuZW5hYmxlUm90YXRlJiZGKHQpfSkodCkscD1kLlRPVUNIX0RPTExZX1JPVEFURTticmVhaztkZWZhdWx0OnA9ZC5OT05FfWJyZWFrO2RlZmF1bHQ6cD1kLk5PTkV9cCE9PWQuTk9ORSYmbC5kaXNwYXRjaEV2ZW50KHUpfX1mdW5jdGlvbiBKKHQpe2lmKCExIT09bC5lbmFibGVkKXN3aXRjaCh0LnByZXZlbnREZWZhdWx0KCksdC5zdG9wUHJvcGFnYXRpb24oKSxwKXtjYXNlIGQuVE9VQ0hfUk9UQVRFOmlmKCExPT09bC5lbmFibGVSb3RhdGUpcmV0dXJuO1UodCksbC51cGRhdGUoKTticmVhaztjYXNlIGQuVE9VQ0hfUEFOOmlmKCExPT09bC5lbmFibGVQYW4pcmV0dXJuO0codCksbC51cGRhdGUoKTticmVhaztjYXNlIGQuVE9VQ0hfRE9MTFlfUEFOOmlmKCExPT09bC5lbmFibGVab29tJiYhMT09PWwuZW5hYmxlUGFuKXJldHVybjshKGZ1bmN0aW9uIGUodCl7bC5lbmFibGVab29tJiZXKHQpLGwuZW5hYmxlUGFuJiZHKHQpfSkodCksbC51cGRhdGUoKTticmVhaztjYXNlIGQuVE9VQ0hfRE9MTFlfUk9UQVRFOmlmKCExPT09bC5lbmFibGVab29tJiYhMT09PWwuZW5hYmxlUm90YXRlKXJldHVybjshKGZ1bmN0aW9uIG4odCl7bC5lbmFibGVab29tJiZXKHQpLGwuZW5hYmxlUm90YXRlJiZVKHQpfSkodCksbC51cGRhdGUoKTticmVhaztkZWZhdWx0OnA9ZC5OT05FfX1mdW5jdGlvbiBRKHQpeyExIT09bC5lbmFibGVkJiYobC5kaXNwYXRjaEV2ZW50KGgpLHA9ZC5OT05FKX1mdW5jdGlvbiB0dCh0KXshMSE9PWwuZW5hYmxlZCYmdC5wcmV2ZW50RGVmYXVsdCgpfWwuZG9tRWxlbWVudC5hZGRFdmVudExpc3RlbmVyKCJjb250ZXh0bWVudSIsdHQpLGwuZG9tRWxlbWVudC5hZGRFdmVudExpc3RlbmVyKCJwb2ludGVyZG93biIscSksbC5kb21FbGVtZW50LmFkZEV2ZW50TGlzdGVuZXIoIndoZWVsIiwkKSxsLmRvbUVsZW1lbnQuYWRkRXZlbnRMaXN0ZW5lcigidG91Y2hzdGFydCIsWiksbC5kb21FbGVtZW50LmFkZEV2ZW50TGlzdGVuZXIoInRvdWNoZW5kIixRKSxsLmRvbUVsZW1lbnQuYWRkRXZlbnRMaXN0ZW5lcigidG91Y2htb3ZlIixKKSx0aGlzLnVwZGF0ZSgpfTsoZEt0LnByb3RvdHlwZT1PYmplY3QuY3JlYXRlKHJIdC5wcm90b3R5cGUpKS5jb25zdHJ1Y3Rvcj1kS3Q7dmFyIHBLdD1mdW5jdGlvbih0LGUpe2RLdC5jYWxsKHRoaXMsdCxlKSx0aGlzLnNjcmVlblNwYWNlUGFubmluZz0hMSx0aGlzLm1vdXNlQnV0dG9ucy5MRUZUPXRCdC5QQU4sdGhpcy5tb3VzZUJ1dHRvbnMuUklHSFQ9dEJ0LlJPVEFURSx0aGlzLnRvdWNoZXMuT05FPWVCdC5QQU4sdGhpcy50b3VjaGVzLlRXTz1lQnQuRE9MTFlfUk9UQVRFfTsocEt0LnByb3RvdHlwZT1PYmplY3QuY3JlYXRlKHJIdC5wcm90b3R5cGUpKS5jb25zdHJ1Y3Rvcj1wS3Q7Y2xhc3MgZkt0IGV4dGVuZHMgckh0e2NvbnN0cnVjdG9yKHQpe3N1cGVyKCksdGhpcy5fbGFzdE1lc2g9bnVsbCx0aGlzLl9jbG9jaz1uZXcgWll0LHRoaXMuX2NhbnZhc1NpemU9bnVsbCx0aGlzLl9sYXllcnNDb25maWc9bnVsbCx0aGlzLl9ydW5Db2xvcj10fV9pc09iamVjdCh0KXtyZXR1cm4ib2JqZWN0Ij09dHlwZW9mIHQmJm51bGwhPXQmJiFBcnJheS5pc0FycmF5KHQpfV9hcHBseURlZmF1bHRzKHQsZSl7bGV0IG49e307Y29uc3QgaT1bdCxlXTtmb3IobGV0IHQ9MDt0PGkubGVuZ3RoO3QrKyl7Y29uc3QgZT1pW3RdO2ZvcihsZXQgdCBpbiBlKXtjb25zdCBpPXQgaW4gbjt0aGlzLl9pc09iamVjdChlW3RdKT9uW3RdPXRoaXMuX2FwcGx5RGVmYXVsdHMoblt0XXx8e30sZVt0XSk6aXx8KG5bdF09ZVt0XSl9fXJldHVybiBufV9jcmVhdGVMYXllcnMoKXtpZih0aGlzLl9sYXllcnNDb25maWcmJnRoaXMuX3NjZW5lJiZ0aGlzLl9sYXN0TWVzaCl7aWYodGhpcy5fbGF5ZXJzQ29uZmlnLnNob3dCb3VuZGluZ0JveCl7dmFyIHQ9bmV3IHQkdCh0aGlzLl9sYXN0TWVzaCxuZXcgSEZ0KCJyZ2IoMCwgMCwgMjU1KSIpKTt0aGlzLl9zY2VuZS5hZGQodCl9aWYodGhpcy5fbGF5ZXJzQ29uZmlnLnNob3dBeGVzKXt2YXIgZT1uZXcgciR0KDUpO3RoaXMuX3NjZW5lLmFkZChlKX19fXNldExheWVyc0NvbmZpZyh0KXt0aGlzLl9sYXllcnNDb25maWc9dGhpcy5fYXBwbHlEZWZhdWx0cyh0LHRoaXMuX2xheWVyc0NvbmZpZ3x8e30pfV9jcmVhdGVXb3JsZCh0LGUpe2lmKHRoaXMuaXNSZWFkeSgpKXJldHVybjt0aGlzLl9zY2VuZT1uZXcgckd0O3ZhciBuPW5ldyBSJHRbdC5jYW1lcmEuY2xzXSh0LmNhbWVyYS5mb3YsdGhpcy5fY2FudmFzU2l6ZS53aWR0aC90aGlzLl9jYW52YXNTaXplLmhlaWdodCx0LmNhbWVyYS5uZWFyLHQuY2FtZXJhLmZhcik7dGhpcy5fY2FtZXJhPW47dmFyIGk9bmV3IGRLdChuLGUpO2NvbnN0IHI9aTtyLmxvb2tTcGVlZD0uNCxyLm1vdmVtZW50U3BlZWQ9MjAsci5ub0ZseT0hMCxyLmxvb2tWZXJ0aWNhbD0hMCxyLmNvbnN0cmFpblZlcnRpY2FsPSEwLHIudmVydGljYWxNaW49MSxyLnZlcnRpY2FsTWF4PTIsci5hZGRFdmVudExpc3RlbmVyKCJjaGFuZ2UiLHRoaXMuX29uQ2FtZXJhUG9zaXRpb25DaGFuZ2UuYmluZCh0aGlzKSksdGhpcy5fY2FtZXJhQ29udHJvbHM9aSx0aGlzLl9yZW5kZXJlcj1uZXcgdEd0KHthbnRpYWxpYXM6ITB9KSx0aGlzLl9yZW5kZXJlci5zZXRQaXhlbFJhdGlvKHdpbmRvdy5kZXZpY2VQaXhlbFJhdGlvKSx0aGlzLl9yZW5kZXJlci5zZXRTaXplKHRoaXMuX2NhbnZhc1NpemUud2lkdGgsdGhpcy5fY2FudmFzU2l6ZS5oZWlnaHQpLHRoaXMuX3JlbmRlcmVyLnNldENsZWFyQ29sb3IoMTY3NzcyMTUsMSl9X2NsZWFyU2NlbmUoKXtmb3IoO3RoaXMuX3NjZW5lLmNoaWxkcmVuLmxlbmd0aD4wOyl0aGlzLl9zY2VuZS5yZW1vdmUodGhpcy5fc2NlbmUuY2hpbGRyZW5bMF0pfWdldFJlbmRlcmVyKCl7cmV0dXJuIHRoaXMuX3JlbmRlcmVyfWdldENhbWVyYUNvbnRyb2xzKCl7cmV0dXJuIHRoaXMuX2NhbWVyYUNvbnRyb2xzfWlzUmVhZHkoKXtyZXR1cm4hIXRoaXMuX2NhbWVyYSYmISF0aGlzLl9jYW1lcmFDb250cm9sc31nZXRDYW1lcmFQb3NpdGlvbigpe3JldHVybntmYXI6dGhpcy5fY2FtZXJhLmZhcixwb3NpdGlvbjp0aGlzLl9jYW1lcmEucG9zaXRpb24uY2xvbmUoKSx0YXJnZXQ6dGhpcy5fY2FtZXJhQ29udHJvbHMudGFyZ2V0LmNsb25lKCl9fXNldENhbnZhc1NpemUodCl7dGhpcy5fY2FudmFzU2l6ZT10fWRyYXcoKXt0aGlzLl9hbmltYXRpb25GcmFtZUluZGV4JiZjYW5jZWxBbmltYXRpb25GcmFtZSh0aGlzLl9hbmltYXRpb25GcmFtZUluZGV4KSx0aGlzLl9jYW1lcmEuYXNwZWN0PXRoaXMuX2NhbnZhc1NpemUud2lkdGgvdGhpcy5fY2FudmFzU2l6ZS5oZWlnaHQsdGhpcy5fY2FtZXJhLnVwZGF0ZVByb2plY3Rpb25NYXRyaXgoKSx0aGlzLl9yZW5kZXJlci5zZXRTaXplKHRoaXMuX2NhbnZhc1NpemUud2lkdGgsdGhpcy5fY2FudmFzU2l6ZS5oZWlnaHQpO2NvbnN0IHQ9ZnVuY3Rpb24oKXt2YXIgZT10aGlzLl9jbG9jay5nZXREZWx0YSgpO3RoaXMuX2NhbWVyYUNvbnRyb2xzLnVwZGF0ZShlKSx0aGlzLl9hbmltYXRpb25GcmFtZUluZGV4PXJlcXVlc3RBbmltYXRpb25GcmFtZSh0KSx0aGlzLl9yZW5kZXJlci5yZW5kZXIodGhpcy5fc2NlbmUsdGhpcy5fY2FtZXJhKX0uYmluZCh0aGlzKTt0KCl9dXBkYXRlU2NlbmUodCxlKXtsZXQgbj17fTsiY29uZmlnImluIHQmJnQuY29uZmlnJiYobj1KU09OLnBhcnNlKHQuY29uZmlnKSksdGhpcy5kaXNwYXRjaEV2ZW50KHt0eXBlOiJiZWZvcmVVcGRhdGVTY2VuZSJ9KSxuPXRoaXMuX2FwcGx5RGVmYXVsdHMobix7Y2FtZXJhOntjbHM6IlBlcnNwZWN0aXZlQ2FtZXJhIixmb3Y6NzUsbmVhcjouMSxmYXI6MWUzfSxsaWdodHM6W3tjbHM6IkFtYmllbnRMaWdodCIsY29sb3I6IiNmZmZmZmYiLGludGVuc2l0eTouNzV9LHtjbHM6IkRpcmVjdGlvbmFsTGlnaHQiLGNvbG9yOiIjZmZmZmZmIixpbnRlbnNpdHk6Ljc1LHBvc2l0aW9uOlswLC0xLDJdfV19KSx0aGlzLl9jcmVhdGVXb3JsZChuLGUpLHRoaXMuX2NsZWFyU2NlbmUoKSx0aGlzLl9jcmVhdGVMaWdodHModGhpcy5fc2NlbmUsbiksdGhpcy5fY3JlYXRlR2VvbWV0cnkodCxuKSx0aGlzLl9jcmVhdGVMYXllcnMoKSx0aGlzLmRyYXcoKX1yZXNldFZpZXcodCl7aWYoIXRoaXMuaXNSZWFkeSgpKXJldHVybjtsZXQgZTt0aGlzLl9jYW1lcmFDb250cm9scy5yZXNldCgpLCF0JiZ0aGlzLl9sYXN0TWVzaCYmKGU9dGhpcy5fbGFzdE1lc2gpLGUmJih0aGlzLl9maXRPYmplY3RUb1ZpZXdwb3J0KGUpLHRoaXMuX2xhc3RNZXNoPWUpLHRoaXMuX2NhbWVyYUNvbnRyb2xzLnVwZGF0ZSgpfV9jcmVhdGVHZW9tZXRyeSh0LGUpe2NvbnN0IG49dC5tZXNoO24udmVydGljZXMmJm4uZmFjZXMmJm4uZmFjZXMubGVuZ3RoP3RoaXMuX2NyZWF0ZU1lc2gobixlKTp0aGlzLl9jcmVhdGVQb2ludENsb3VkKG4sZSl9X2NyZWF0ZVBvaW50Q2xvdWQodCxlKXtjb25zdCBuPXQudmVydGljZXMsaT10LmNvbG9ycztsZXQgcj17bWF0ZXJpYWw6e2NsczoiUG9pbnRzTWF0ZXJpYWwiLHNpemU6LjAwNX19O2kmJmkubGVuZ3RoPT1uLmxlbmd0aD9yLm1hdGVyaWFsLnZlcnRleENvbG9ycz0hMDpyLm1hdGVyaWFsLmNvbG9yPXRoaXMuX3J1bkNvbG9yO2NvbnN0IG89dGhpcy5fYXBwbHlEZWZhdWx0cyhlLHIpLGE9bmV3IHBWdCxzPW5ldyBGbG9hdDMyQXJyYXkobi5mbGF0KCkpO2lmKGEuc2V0QXR0cmlidXRlKCJwb3NpdGlvbiIsbmV3IHFGdChzLDMpKSxpJiZpLmxlbmd0aD09bi5sZW5ndGgpe2NvbnN0IHQ9bmV3IEZsb2F0MzJBcnJheShpLmZsYXQoKSk7Zm9yKGxldCBlPTA7ZTx0Lmxlbmd0aDtlKyspdFtlXT10W2VdLzI1NTthLnNldEF0dHJpYnV0ZSgiY29sb3IiLG5ldyBxRnQodCwzKSl9dmFyIGw9bmV3IHJXdChhLG5ldyBSJHRbby5tYXRlcmlhbC5jbHNdKG8ubWF0ZXJpYWwpKTt0aGlzLl9zY2VuZS5hZGQobCksdGhpcy5fbGFzdE1lc2g9bH1zZXRDYW1lcmFWaWV3cG9pbnQodCxlLG4pe3RoaXMuX3NpbGVudD0hMCx0aGlzLl9jYW1lcmEuZmFyPWUsdGhpcy5fY2FtZXJhLnBvc2l0aW9uLnNldCh0LngsdC55LHQueiksdGhpcy5fY2FtZXJhLmxvb2tBdChuLmNsb25lKCkpLHRoaXMuX2NhbWVyYS51cGRhdGVQcm9qZWN0aW9uTWF0cml4KCksdGhpcy5fY2FtZXJhQ29udHJvbHMudGFyZ2V0PW4uY2xvbmUoKSx0aGlzLl9jYW1lcmFDb250cm9scy51cGRhdGUoKSx0aGlzLl9zaWxlbnQ9ITF9X29uQ2FtZXJhUG9zaXRpb25DaGFuZ2UodCl7dGhpcy5fc2lsZW50fHx0aGlzLmRpc3BhdGNoRXZlbnQoe3R5cGU6ImNhbWVyYVBvc2l0aW9uQ2hhbmdlIixldmVudDp0fSl9X2ZpdE9iamVjdFRvVmlld3BvcnQodCl7Y29uc3QgZT1uZXcgeEh0LG49bmV3IHlIdCxpPW5ldyB5SHQ7ZS5zZXRGcm9tT2JqZWN0KHQpLGUuZ2V0Q2VudGVyKG4pLGUuZ2V0U2l6ZShpKTtjb25zdCByPU1hdGgubWF4KGkueCxpLnksaS56KSxvPXRoaXMuX2NhbWVyYS5mb3YqKE1hdGguUEkvMTgwKTtsZXQgYT0xLjI1Kk1hdGguYWJzKHIvKDIqTWF0aC50YW4oby8yKSkpO2NvbnN0IHM9ZS5taW4uejt0aGlzLnNldENhbWVyYVZpZXdwb2ludCh7eDpuLngseTpuLnksejphfSwzKihzPDA/LXMrYTphLXMpLG4pfV9jcmVhdGVNZXNoKHQsZSl7Y29uc3Qgbj10LnZlcnRpY2VzLGk9dC5mYWNlcyxyPXQuY29sb3JzLG89dGhpcy5fYXBwbHlEZWZhdWx0cyhlLHttYXRlcmlhbDp7Y2xzOiJNZXNoU3RhbmRhcmRNYXRlcmlhbCIsY29sb3I6IiNhMGEwYTAiLHJvdWdobmVzczoxLG1ldGFsbmVzczowfX0pLGE9bmV3IHBWdCxzPW5ldyBGbG9hdDMyQXJyYXkobi5mbGF0KCkpO2Euc2V0QXR0cmlidXRlKCJwb3NpdGlvbiIsbmV3IHFGdChzLDMpKTtjb25zdCBsPW5ldyBVaW50MTZBcnJheShpLmZsYXQoKSk7aWYociYmci5sZW5ndGgpe2NvbnN0IHQ9ci5mbGF0KCk7Zm9yKGxldCBlPTA7ZTx0Lmxlbmd0aDtlKyspdFtlXT10W2VdLzI1NTthLnNldEF0dHJpYnV0ZSgiY29sb3IiLG5ldyBxRnQobmV3IEZsb2F0MzJBcnJheSh0KSwzKSksby5tYXRlcmlhbD1vLm1hdGVyaWFsfHx7fSxvLm1hdGVyaWFsLnZlcnRleENvbG9ycz0hMH1hLmNlbnRlcigpLGEuY29tcHV0ZUJvdW5kaW5nU3BoZXJlKCksYS5zZXRJbmRleChuZXcgcUZ0KGwsMSkpLGEuY29tcHV0ZVZlcnRleE5vcm1hbHMoKTtsZXQgYz1uZXcgUFZ0KGEsbmV3IFIkdFtvLm1hdGVyaWFsLmNsc10oby5tYXRlcmlhbCkpO2MuY2FzdFNoYWRvdz0hMCxjLnJlY2VpdmVTaGFkb3c9ITAsdGhpcy5fc2NlbmUuYWRkKGMpLHRoaXMuX2xhc3RNZXNoPWN9X2NyZWF0ZUxpZ2h0cyh0LGUpe2ZvcihsZXQgbj0wO248ZS5saWdodHMubGVuZ3RoO24rKyl7Y29uc3QgaT1lLmxpZ2h0c1tuXTtsZXQgcj1uZXcgUiR0W2kuY2xzXShpLmNvbG9yLGkuaW50ZW5zaXR5KTtpLnBvc2l0aW9uJiZyLnBvc2l0aW9uLnNldChpLnBvc2l0aW9uWzBdLGkucG9zaXRpb25bMV0saS5wb3NpdGlvblsyXSksdC5hZGQocil9fX1sZXQgbUt0PWNsYXNzIGV4dGVuZHModHIoeWUpKXtjb25zdHJ1Y3Rvcigpe3N1cGVyKC4uLmFyZ3VtZW50cyksdGhpcy5zZWxlY3RlZFZpZXc9ImFsbCIsdGhpcy5hY3RpdmU9ITEsdGhpcy5fY29sb3JTY2FsZUZ1bmN0aW9uPXhPLHRoaXMuX3N0ZXBzPVtdLHRoaXMuX21lc2hWaWV3ZXJBdHRhY2hlZD0hMSx0aGlzLl9jYW1lcmFQb3NpdGlvbkluaXRpYWxpemVkPSExLHRoaXMuX2lzTWVzaExvYWRpbmc9ITF9Z2V0IF9ydW5Db2xvcigpe3JldHVybiB0aGlzLl9jb2xvclNjYWxlRnVuY3Rpb24odGhpcy5ydW4pfWNvbm5lY3RlZENhbGxiYWNrKCl7c3VwZXIuY29ubmVjdGVkQ2FsbGJhY2soKSx0aGlzLl9kYXRhUHJvdmlkZXI9bmV3IEpEdCh0aGlzLnJlcXVlc3RNYW5hZ2VyKTtjb25zdCB0PW5ldyBmS3QodGhpcy5fcnVuQ29sb3IpO3QuYWRkRXZlbnRMaXN0ZW5lcigiYmVmb3JlVXBkYXRlU2NlbmUiLHRoaXMuX3VwZGF0ZUNhbnZhc1NpemUuYmluZCh0aGlzKSksdC5hZGRFdmVudExpc3RlbmVyKCJjYW1lcmFQb3NpdGlvbkNoYW5nZSIsdGhpcy5fb25DYW1lcmFQb3NpdGlvbkNoYW5nZS5iaW5kKHRoaXMpKSx0aGlzLl9tZXNoVmlld2VyPXR9cmVsb2FkKCl7dGhpcy5hY3RpdmUmJnRoaXMuX2RhdGFQcm92aWRlciYmKHRoaXMuX2lzTWVzaExvYWRpbmc9ITAsdGhpcy5fZGF0YVByb3ZpZGVyLnJlbG9hZCh0aGlzLnJ1bix0aGlzLnRhZyx0aGlzLnNhbXBsZSkudGhlbigodD0+e3QmJih0aGlzLl9zdGVwcz10LHRoaXMuX3N0ZXBJbmRleD10Lmxlbmd0aC0xKX0pKS5jYXRjaCgodD0+e2lmKCF0fHwhdC5jb2RlfHx0LmNvZGUhPSREdC5DQU5DRUxMRUQpdGhyb3cgdD10fHwiUmVzcG9uc2UgcHJvY2Vzc2luZyBmYWlsZWQuIixuZXcgRXJyb3IodCl9KSkpfV91cGRhdGVTY2VuZSgpe2NvbnN0IHQ9dGhpcy5fY3VycmVudFN0ZXA7dCYmdC5tZXNoJiYodGhpcy5fbWVzaFZpZXdlci51cGRhdGVTY2VuZSh0LHRoaXMpLHRoaXMuX2NhbWVyYVBvc2l0aW9uSW5pdGlhbGl6ZWR8fCh0aGlzLl9tZXNoVmlld2VyLnJlc2V0VmlldygpLHRoaXMuX2NhbWVyYVBvc2l0aW9uSW5pdGlhbGl6ZWQ9ITApLHRoaXMuX21lc2hWaWV3ZXJBdHRhY2hlZHx8KHRoaXMuc2hhZG93Um9vdC5hcHBlbmRDaGlsZCh0aGlzLl9tZXNoVmlld2VyLmdldFJlbmRlcmVyKCkuZG9tRWxlbWVudCksdGhpcy5fbWVzaFZpZXdlckF0dGFjaGVkPSEwKSl9X2RlYm91bmNlZEZldGNoTWVzaCgpe3RoaXMuZGVib3VuY2UoImZldGNoTWVzaCIsKCgpPT50aGlzLl9tYXliZUZldGNoTWVzaCgpKSwxMDApfV9tYXliZUZldGNoTWVzaCgpe3JldHVybiBuKHRoaXMsdm9pZCAwLHZvaWQgMCwoZnVuY3Rpb24qKCl7Y29uc3QgdD10aGlzLl9jdXJyZW50U3RlcDtpZih0JiYhdC5tZXNoJiYhdC5tZXNoRmV0Y2hpbmcpe3QubWVzaEZldGNoaW5nPSEwLHRoaXMuX2lzTWVzaExvYWRpbmc9ITA7dHJ5e2NvbnN0IGU9eWllbGQgdGhpcy5fZGF0YVByb3ZpZGVyLmZldGNoRGF0YSh0LHRoaXMucnVuLHRoaXMudGFnLHRoaXMuc2FtcGxlKTt0Lm1lc2g9ZVswXSx0aGlzLm5vdGlmeVBhdGgoIl9jdXJyZW50U3RlcC5tZXNoIil9Y2F0Y2godCl7aWYoIXR8fCF0LmNvZGV8fHQuY29kZSE9JER0LkNBTkNFTExFRCl0aHJvdyB0PXR8fCJSZXNwb25zZSBwcm9jZXNzaW5nIGZhaWxlZC4iLG5ldyBFcnJvcih0KX1maW5hbGx5e3RoaXMuX2lzTWVzaExvYWRpbmc9ITEsdC5tZXNoRmV0Y2hpbmc9ITF9fX0pKX1fb25DYW1lcmFQb3NpdGlvbkNoYW5nZSgpe2lmKCF0aGlzLl9tZXNoVmlld2VyLmlzUmVhZHkoKSlyZXR1cm47Y29uc3QgdD1uZXcgQ3VzdG9tRXZlbnQoImNhbWVyYS1wb3NpdGlvbi1jaGFuZ2UiLHtkZXRhaWw6dGhpcy5fbWVzaFZpZXdlci5nZXRDYW1lcmFQb3NpdGlvbigpfSk7dGhpcy5kaXNwYXRjaEV2ZW50KHQpfXNldENhbWVyYVZpZXdwb2ludCh0LGUsbil7dGhpcy5fbWVzaFZpZXdlci5zZXRDYW1lcmFWaWV3cG9pbnQodCxlLG4pfV91cGRhdGVDYW52YXNTaXplKCl7Y29uc3QgdD10aGlzLm9mZnNldFdpZHRoLGU9dCxuPXRoaXMuJCQoIi50Zi1tZXNoLWxvYWRlci1oZWFkZXIiKS5vZmZzZXRIZWlnaHQ7dGhpcy5fbWVzaFZpZXdlci5zZXRDYW52YXNTaXplKHt3aWR0aDp0LGhlaWdodDplLW59KX1yZWRyYXcoKXt0aGlzLl91cGRhdGVDYW52YXNTaXplKCksdGhpcy5pc0Nvbm5lY3RlZCYmdGhpcy5fbWVzaFZpZXdlci5kcmF3KCl9X2hhc0F0TGVhc3RPbmVTdGVwKHQpe3JldHVybiEhdCYmdC5sZW5ndGg+MH1faGFzTXVsdGlwbGVTdGVwcyh0KXtyZXR1cm4hIXQmJnQubGVuZ3RoPjF9Z2V0IF9jdXJyZW50U3RlcCgpe3JldHVybiB0aGlzLl9zdGVwc1t0aGlzLl9zdGVwSW5kZXhdfHxudWxsfWdldCBfc3RlcFZhbHVlKCl7Y29uc3QgdD10aGlzLl9jdXJyZW50U3RlcDtyZXR1cm4gdD90LnN0ZXA6MH1nZXQgX2N1cnJlbnRXYWxsVGltZSgpe2NvbnN0IHQ9dGhpcy5fY3VycmVudFN0ZXA7cmV0dXJuIHQ/QU8odC53YWxsX3RpbWUpOiIifV9nZXRNYXhTdGVwSW5kZXgodCl7cmV0dXJuIHQubGVuZ3RoLTF9X2dldFNhbXBsZVRleHQodCl7cmV0dXJuIFN0cmluZyh0KzEpfV9oYXNNdWx0aXBsZVNhbXBsZXModCl7cmV0dXJuIHQ+MX1fdXBkYXRlVmlldygpe3RoaXMuX21lc2hWaWV3ZXImJiJhbGwiPT10aGlzLnNlbGVjdGVkVmlldyYmdGhpcy5fbWVzaFZpZXdlci5yZXNldFZpZXcoKX10b0xvY2FsZVN0cmluZ18odCl7cmV0dXJuIHQudG9Mb2NhbGVTdHJpbmcoKX19O21LdC50ZW1wbGF0ZT1fZWAKICAgIDx0Zi1jYXJkLWhlYWRpbmcgY29sb3I9IltbX3J1bkNvbG9yXV0iIGNsYXNzPSJ0Zi1tZXNoLWxvYWRlci1oZWFkZXIiPgogICAgICA8dGVtcGxhdGUgaXM9ImRvbS1pZiIgaWY9IltbX2hhc011bHRpcGxlU2FtcGxlcyhvZlNhbXBsZXMpXV0iPgogICAgICAgIDxkaXY+c2FtcGxlOiBbW19nZXRTYW1wbGVUZXh0KHNhbXBsZSldXSBvZiBbW29mU2FtcGxlc11dPC9kaXY+CiAgICAgIDwvdGVtcGxhdGU+CiAgICAgIDx0ZW1wbGF0ZSBpcz0iZG9tLWlmIiBpZj0iW1tfaGFzQXRMZWFzdE9uZVN0ZXAoX3N0ZXBzKV1dIj4KICAgICAgICA8ZGl2IGNsYXNzPSJoZWFkaW5nLXJvdyI+CiAgICAgICAgICA8ZGl2IGNsYXNzPSJoZWFkaW5nLWxhYmVsIj4KICAgICAgICAgICAgc3RlcAogICAgICAgICAgICA8c3BhbiBzdHlsZT0iZm9udC13ZWlnaHQ6IGJvbGQiCiAgICAgICAgICAgICAgPltbdG9Mb2NhbGVTdHJpbmdfKF9zdGVwVmFsdWUpXV08L3NwYW4KICAgICAgICAgICAgPgogICAgICAgICAgPC9kaXY+CiAgICAgICAgICA8ZGl2IGNsYXNzPSJoZWFkaW5nLWxhYmVsIGhlYWRpbmctcmlnaHQiPgogICAgICAgICAgICA8dGVtcGxhdGUgaXM9ImRvbS1pZiIgaWY9IltbX2N1cnJlbnRXYWxsVGltZV1dIj4KICAgICAgICAgICAgICBbW19jdXJyZW50V2FsbFRpbWVdXQogICAgICAgICAgICA8L3RlbXBsYXRlPgogICAgICAgICAgPC9kaXY+CiAgICAgICAgICA8ZGl2IGNsYXNzPSJsYWJlbCByaWdodCI+CiAgICAgICAgICAgIDxwYXBlci1zcGlubmVyLWxpdGUgYWN0aXZlIGhpZGRlbiQ9IltbIV9pc01lc2hMb2FkaW5nXV0iPgogICAgICAgICAgICA8L3BhcGVyLXNwaW5uZXItbGl0ZT4KICAgICAgICAgIDwvZGl2PgogICAgICAgIDwvZGl2PgogICAgICA8L3RlbXBsYXRlPgogICAgICA8dGVtcGxhdGUgaXM9ImRvbS1pZiIgaWY9IltbX2hhc011bHRpcGxlU3RlcHMoX3N0ZXBzKV1dIj4KICAgICAgICA8ZGl2PgogICAgICAgICAgPHBhcGVyLXNsaWRlcgogICAgICAgICAgICBpZD0ic3RlcHMiCiAgICAgICAgICAgIGltbWVkaWF0ZS12YWx1ZT0ie3tfc3RlcEluZGV4fX0iCiAgICAgICAgICAgIG1heD0iW1tfZ2V0TWF4U3RlcEluZGV4KF9zdGVwcyldXSIKICAgICAgICAgICAgbWF4LW1hcmtlcnM9IltbX2dldE1heFN0ZXBJbmRleChfc3RlcHMpXV0iCiAgICAgICAgICAgIHNuYXBzCiAgICAgICAgICAgIHN0ZXA9IjEiCiAgICAgICAgICAgIHZhbHVlPSJ7e19zdGVwSW5kZXh9fSIKICAgICAgICAgID48L3BhcGVyLXNsaWRlcj4KICAgICAgICA8L2Rpdj4KICAgICAgPC90ZW1wbGF0ZT4KICAgIDwvdGYtY2FyZC1oZWFkaW5nPgogICAgPHN0eWxlPgogICAgICBwYXBlci1zbGlkZXIgewogICAgICAgIHdpZHRoOiAxMDAlOwogICAgICAgIG1hcmdpbi1sZWZ0OiAxcHg7CiAgICAgICAgbWFyZ2luLXJpZ2h0OiAxcHg7CiAgICAgIH0KICAgICAgLnRmLW1lc2gtbG9hZGVyLWhlYWRlciB7CiAgICAgICAgZGlzcGxheTogYmxvY2s7CiAgICAgICAgaGVpZ2h0OiAxMDVweDsKICAgICAgfQogICAgICBbaGlkZGVuXSB7CiAgICAgICAgZGlzcGxheTogbm9uZTsKICAgICAgfQogICAgPC9zdHlsZT4KICBgLHQoW28oe3R5cGU6U3RyaW5nfSksZSgiZGVzaWduOnR5cGUiLFN0cmluZyldLG1LdC5wcm90b3R5cGUsInJ1biIsdm9pZCAwKSx0KFtvKHt0eXBlOlN0cmluZ30pLGUoImRlc2lnbjp0eXBlIixTdHJpbmcpXSxtS3QucHJvdG90eXBlLCJ0YWciLHZvaWQgMCksdChbbyh7dHlwZTpOdW1iZXJ9KSxlKCJkZXNpZ246dHlwZSIsTnVtYmVyKV0sbUt0LnByb3RvdHlwZSwic2FtcGxlIix2b2lkIDApLHQoW28oe3R5cGU6TnVtYmVyfSksZSgiZGVzaWduOnR5cGUiLE51bWJlcildLG1LdC5wcm90b3R5cGUsIm9mU2FtcGxlcyIsdm9pZCAwKSx0KFtvKHt0eXBlOlN0cmluZ30pLGUoImRlc2lnbjp0eXBlIixTdHJpbmcpXSxtS3QucHJvdG90eXBlLCJzZWxlY3RlZFZpZXciLHZvaWQgMCksdChbbyh7dHlwZTpCb29sZWFufSksZSgiZGVzaWduOnR5cGUiLEJvb2xlYW4pXSxtS3QucHJvdG90eXBlLCJhY3RpdmUiLHZvaWQgMCksdChbbyh7dHlwZTpPYmplY3R9KSxlKCJkZXNpZ246dHlwZSIsaHIpXSxtS3QucHJvdG90eXBlLCJyZXF1ZXN0TWFuYWdlciIsdm9pZCAwKSx0KFtvKHt0eXBlOk9iamVjdH0pLGUoImRlc2lnbjp0eXBlIixmS3QpXSxtS3QucHJvdG90eXBlLCJfbWVzaFZpZXdlciIsdm9pZCAwKSx0KFtvKHt0eXBlOk9iamVjdH0pLGUoImRlc2lnbjp0eXBlIixKRHQpXSxtS3QucHJvdG90eXBlLCJfZGF0YVByb3ZpZGVyIix2b2lkIDApLHQoW28oe3R5cGU6T2JqZWN0fSksZSgiZGVzaWduOnR5cGUiLE9iamVjdCldLG1LdC5wcm90b3R5cGUsIl9jb2xvclNjYWxlRnVuY3Rpb24iLHZvaWQgMCksdChbbyh7dHlwZTpBcnJheSxub3RpZnk6ITB9KSxlKCJkZXNpZ246dHlwZSIsQXJyYXkpXSxtS3QucHJvdG90eXBlLCJfc3RlcHMiLHZvaWQgMCksdChbbyh7dHlwZTpOdW1iZXIsbm90aWZ5OiEwfSksZSgiZGVzaWduOnR5cGUiLE51bWJlcildLG1LdC5wcm90b3R5cGUsIl9zdGVwSW5kZXgiLHZvaWQgMCksdChbbyh7dHlwZTpCb29sZWFufSksZSgiZGVzaWduOnR5cGUiLEJvb2xlYW4pXSxtS3QucHJvdG90eXBlLCJfbWVzaFZpZXdlckF0dGFjaGVkIix2b2lkIDApLHQoW28oe3R5cGU6Qm9vbGVhbn0pLGUoImRlc2lnbjp0eXBlIixCb29sZWFuKV0sbUt0LnByb3RvdHlwZSwiX2NhbWVyYVBvc2l0aW9uSW5pdGlhbGl6ZWQiLHZvaWQgMCksdChbbyh7dHlwZTpCb29sZWFufSksZSgiZGVzaWduOnR5cGUiLEJvb2xlYW4pXSxtS3QucHJvdG90eXBlLCJfaXNNZXNoTG9hZGluZyIsdm9pZCAwKSx0KFtzKCJydW4iKSxlKCJkZXNpZ246dHlwZSIsU3RyaW5nKSxlKCJkZXNpZ246cGFyYW10eXBlcyIsW10pXSxtS3QucHJvdG90eXBlLCJfcnVuQ29sb3IiLG51bGwpLHQoW2EoInJ1biIsInRhZyIsImFjdGl2ZSIsIl9kYXRhUHJvdmlkZXIiLCJfbWVzaFZpZXdlciIpLGUoImRlc2lnbjp0eXBlIixGdW5jdGlvbiksZSgiZGVzaWduOnBhcmFtdHlwZXMiLFtdKSxlKCJkZXNpZ246cmV0dXJudHlwZSIsdm9pZCAwKV0sbUt0LnByb3RvdHlwZSwicmVsb2FkIixudWxsKSx0KFthKCJfY3VycmVudFN0ZXAuKiIsIl9tZXNoVmlld2VyIiksZSgiZGVzaWduOnR5cGUiLEZ1bmN0aW9uKSxlKCJkZXNpZ246cGFyYW10eXBlcyIsW10pLGUoImRlc2lnbjpyZXR1cm50eXBlIix2b2lkIDApXSxtS3QucHJvdG90eXBlLCJfdXBkYXRlU2NlbmUiLG51bGwpLHQoW2EoIl9jdXJyZW50U3RlcCIpLGUoImRlc2lnbjp0eXBlIixGdW5jdGlvbiksZSgiZGVzaWduOnBhcmFtdHlwZXMiLFtdKSxlKCJkZXNpZ246cmV0dXJudHlwZSIsdm9pZCAwKV0sbUt0LnByb3RvdHlwZSwiX2RlYm91bmNlZEZldGNoTWVzaCIsbnVsbCksdChbcygiX3N0ZXBzIiwiX3N0ZXBJbmRleCIpLGUoImRlc2lnbjp0eXBlIixPYmplY3QpLGUoImRlc2lnbjpwYXJhbXR5cGVzIixbXSldLG1LdC5wcm90b3R5cGUsIl9jdXJyZW50U3RlcCIsbnVsbCksdChbcygiX2N1cnJlbnRTdGVwIiksZSgiZGVzaWduOnR5cGUiLE51bWJlciksZSgiZGVzaWduOnBhcmFtdHlwZXMiLFtdKV0sbUt0LnByb3RvdHlwZSwiX3N0ZXBWYWx1ZSIsbnVsbCksdChbcygiX2N1cnJlbnRTdGVwIiksZSgiZGVzaWduOnR5cGUiLFN0cmluZyksZSgiZGVzaWduOnBhcmFtdHlwZXMiLFtdKV0sbUt0LnByb3RvdHlwZSwiX2N1cnJlbnRXYWxsVGltZSIsbnVsbCksdChbYSgic2VsZWN0ZWRWaWV3IiksZSgiZGVzaWduOnR5cGUiLEZ1bmN0aW9uKSxlKCJkZXNpZ246cGFyYW10eXBlcyIsW10pLGUoImRlc2lnbjpyZXR1cm50eXBlIix2b2lkIDApXSxtS3QucHJvdG90eXBlLCJfdXBkYXRlVmlldyIsbnVsbCksbUt0PXQoW2koInRmLW1lc2gtbG9hZGVyIildLG1LdCk7bGV0IGdLdD1jbGFzcyBleHRlbmRzIHlle2NvbnN0cnVjdG9yKCl7c3VwZXIoKSx0aGlzLnJlbG9hZE9uUmVhZHk9ITAsdGhpcy5fdGFnRmlsdGVyPSIuKiIsdGhpcy5fc2VsZWN0ZWRWaWV3PSJhbGwiLHRoaXMuX3JlcXVlc3RNYW5hZ2VyPW5ldyBocix3aW5kb3cuYWRkRXZlbnRMaXN0ZW5lcigicmVzaXplIiwoKCk9Pnt0aGlzLl9oYW5kbGVXaW5kb3dSZXNpemUoKX0pLCExKSx0aGlzLnJlbG9hZE9uUmVhZHkmJnRoaXMucmVsb2FkKCl9X2dldEFsbENoaWxkcmVuKCl7cmV0dXJuIEFycmF5LmZyb20odGhpcy5zaGFkb3dSb290LnF1ZXJ5U2VsZWN0b3JBbGwoInRmLW1lc2gtbG9hZGVyIikpfV9vbkNhbWVyYVBvc2l0aW9uQ2hhbmdlZCh0KXsic2hhcmUiPT10aGlzLl9zZWxlY3RlZFZpZXcmJnRoaXMuX2dldEFsbENoaWxkcmVuKCkuZm9yRWFjaCgoZT0+e3QudGFyZ2V0IT1lJiZlLnNldENhbWVyYVZpZXdwb2ludCh0LmRldGFpbC5wb3NpdGlvbix0LmRldGFpbC5mYXIsdC5kZXRhaWwudGFyZ2V0KX0pKX1fc2hvdWxkT3Blbih0KXtyZXR1cm4gdDw9Mn1yZWxvYWQoKXt0aGlzLl9mZXRjaFRhZ3MoKS50aGVuKHRoaXMuX3JlbG9hZE1lc2hlcy5iaW5kKHRoaXMpKX1faGFuZGxlV2luZG93UmVzaXplKCl7dGhpcy5fZ2V0QWxsQ2hpbGRyZW4oKS5mb3JFYWNoKCh0PT57dC5yZWRyYXcoKX0pKX1fZmV0Y2hUYWdzKCl7Y29uc3QgdD1ncigpLnBsdWdpblJvdXRlKCJtZXNoIiwiL3RhZ3MiKTtyZXR1cm4gdGhpcy5fcmVxdWVzdE1hbmFnZXIucmVxdWVzdCh0KS50aGVuKCh0PT57aWYod2UuaXNFcXVhbCh0LHRoaXMuX3J1blRvVGFnSW5mbykpcmV0dXJuO2NvbnN0IGU9b3Iod2UubWFwVmFsdWVzKHQsKHQ9Pk9iamVjdC5rZXlzKHQpKSkpO3RoaXMuX2RhdGFOb3RGb3VuZD0wPT09ZS5sZW5ndGgsdGhpcy5fcnVuVG9UYWdJbmZvPXR9KSl9X3JlbG9hZE1lc2hlcygpe3RoaXMuX2dldEFsbENoaWxkcmVuKCkuZm9yRWFjaCgodD0+e3QucmVsb2FkKCl9KSl9Z2V0IF9jYXRlZ29yaWVzKCl7dmFyIHQ9dGhpcy5fcnVuVG9UYWdJbmZvLGU9dGhpcy5fc2VsZWN0ZWRSdW5zLG49dGhpcy5fdGFnRmlsdGVyO2Z1bmN0aW9uIGkoZSl7Y29uc3Qgbj10W2UucnVuXVtlLnRhZ10uc2FtcGxlcztyZXR1cm4gd2UucmFuZ2UobikubWFwKCh0PT5PYmplY3QuYXNzaWduKHt9LGUse3NhbXBsZTp0LG9mU2FtcGxlczpufSkpKX1yZXR1cm4gU3Iod2UubWFwVmFsdWVzKHQsKHQ9Pk9iamVjdC5rZXlzKHQpKSksZSxuKS5tYXAoKHQ9Pk9iamVjdC5hc3NpZ24oe30sdCx7aXRlbXM6W10uY29uY2F0LmFwcGx5KFtdLHQuaXRlbXMubWFwKGkpKX0pKSl9fTtnS3QudGVtcGxhdGU9X2VgCiAgICA8dGYtZGFzaGJvYXJkLWxheW91dD4KICAgICAgPGRpdiBzbG90PSJzaWRlYmFyIiBjbGFzcz0iYWxsLWNvbnRyb2xzIj4KICAgICAgICA8ZGl2IGNsYXNzPSJzZXR0aW5ncyI+CiAgICAgICAgICA8ZGl2IGNsYXNzPSJzaWRlYmFyLXNlY3Rpb24gdmlldy1jb250cm9sIj4KICAgICAgICAgICAgPGgzIGNsYXNzPSJ0aXRsZSI+UG9pbnQgb2YgdmlldzwvaDM+CiAgICAgICAgICAgIDxkaXY+CiAgICAgICAgICAgICAgPHBhcGVyLXJhZGlvLWdyb3VwCiAgICAgICAgICAgICAgICBpZD0idmlldy1yYWRpby1ncm91cCIKICAgICAgICAgICAgICAgIHNlbGVjdGVkPSJ7e19zZWxlY3RlZFZpZXd9fSIKICAgICAgICAgICAgICA+CiAgICAgICAgICAgICAgICA8cGFwZXItcmFkaW8tYnV0dG9uIGlkPSJhbGwtcmFkaW8tYnV0dG9uIiBuYW1lPSJhbGwiPgogICAgICAgICAgICAgICAgICBEaXNwbGF5IGFsbCBwb2ludHMKICAgICAgICAgICAgICAgIDwvcGFwZXItcmFkaW8tYnV0dG9uPgogICAgICAgICAgICAgICAgPHBhcGVyLXRvb2x0aXAKICAgICAgICAgICAgICAgICAgYW5pbWF0aW9uLWRlbGF5PSIwIgogICAgICAgICAgICAgICAgICBmb3I9ImFsbC1yYWRpby1idXR0b24iCiAgICAgICAgICAgICAgICAgIHBvc2l0aW9uPSJyaWdodCIKICAgICAgICAgICAgICAgICAgb2Zmc2V0PSIwIgogICAgICAgICAgICAgICAgPgogICAgICAgICAgICAgICAgICBab29tIGFuZCBjZW50ZXIgY2FtZXJhIHRvIGRpc3BsYXkgYWxsIHBvaW50cyBhdCBvbmNlLiBOb3RlLAogICAgICAgICAgICAgICAgICB0aGF0IHNvbWUgcG9pbnRzIGNvdWxkIGJlIHRvbyBmYXIgKGkuZS4gdG9vIHNtYWxsKSB0byBiZQogICAgICAgICAgICAgICAgICB2aXNpYmxlLgogICAgICAgICAgICAgICAgPC9wYXBlci10b29sdGlwPgogICAgICAgICAgICAgICAgPHBhcGVyLXJhZGlvLWJ1dHRvbiBpZD0idXNlci1yYWRpby1idXR0b24iIG5hbWU9InVzZXIiPgogICAgICAgICAgICAgICAgICBDdXJyZW50IHZpZXcKICAgICAgICAgICAgICAgIDwvcGFwZXItcmFkaW8tYnV0dG9uPgogICAgICAgICAgICAgICAgPHBhcGVyLXRvb2x0aXAKICAgICAgICAgICAgICAgICAgYW5pbWF0aW9uLWRlbGF5PSIwIgogICAgICAgICAgICAgICAgICBmb3I9InVzZXItcmFkaW8tYnV0dG9uIgogICAgICAgICAgICAgICAgICBwb3NpdGlvbj0icmlnaHQiCiAgICAgICAgICAgICAgICAgIG9mZnNldD0iMCIKICAgICAgICAgICAgICAgID4KICAgICAgICAgICAgICAgICAgS2VlcCBjdXJyZW50IGNhbWVyYSBwb3NpdGlvbiBhbmQgem9vbSBsZXZlbC4KICAgICAgICAgICAgICAgIDwvcGFwZXItdG9vbHRpcD4KICAgICAgICAgICAgICAgIDxwYXBlci1yYWRpby1idXR0b24gaWQ9InNoYXJlLXJhZGlvLWJ1dHRvbiIgbmFtZT0ic2hhcmUiPgogICAgICAgICAgICAgICAgICBTaGFyZSB2aWV3cG9pbnQKICAgICAgICAgICAgICAgIDwvcGFwZXItcmFkaW8tYnV0dG9uPgogICAgICAgICAgICAgICAgPHBhcGVyLXRvb2x0aXAKICAgICAgICAgICAgICAgICAgYW5pbWF0aW9uLWRlbGF5PSIwIgogICAgICAgICAgICAgICAgICBmb3I9InNoYXJlLXJhZGlvLWJ1dHRvbiIKICAgICAgICAgICAgICAgICAgcG9zaXRpb249InJpZ2h0IgogICAgICAgICAgICAgICAgICBvZmZzZXQ9IjAiCiAgICAgICAgICAgICAgICA+CiAgICAgICAgICAgICAgICAgIFNoYXJlIHZpZXdwb2ludCBhbW9uZyBhbGwgY2FtZXJhcy4KICAgICAgICAgICAgICAgIDwvcGFwZXItdG9vbHRpcD4KICAgICAgICAgICAgICA8L3BhcGVyLXJhZGlvLWdyb3VwPgogICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgIDwvZGl2PgogICAgICAgIDwvZGl2PgogICAgICAgIDxkaXYgY2xhc3M9InNpZGViYXItc2VjdGlvbiBydW5zLXNlbGVjdG9yIj4KICAgICAgICAgIDx0Zi1ydW5zLXNlbGVjdG9yIHNlbGVjdGVkLXJ1bnM9Int7X3NlbGVjdGVkUnVuc319Ij4KICAgICAgICAgIDwvdGYtcnVucy1zZWxlY3Rvcj4KICAgICAgICA8L2Rpdj4KICAgICAgPC9kaXY+CiAgICAgIDxkaXYgc2xvdD0iY2VudGVyIj4KICAgICAgICA8dGVtcGxhdGUgaXM9ImRvbS1pZiIgaWY9IltbX2RhdGFOb3RGb3VuZF1dIj4KICAgICAgICAgIDxkaXYgY2xhc3M9Im5vLWRhdGEtd2FybmluZyI+CiAgICAgICAgICAgIDxoMz5ObyBwb2ludCBjbG91ZCBkYXRhIHdhcyBmb3VuZC48L2gzPgogICAgICAgICAgICA8cD5Qcm9iYWJsZSBjYXVzZXM6PC9wPgogICAgICAgICAgICA8dWw+CiAgICAgICAgICAgICAgPGxpPgogICAgICAgICAgICAgICAgWW91IGhhdmVu4oCZdCB3cml0dGVuIGFueSBwb2ludCBjbG91ZCBkYXRhIHRvIHlvdXIgZXZlbnQgZmlsZXMuCiAgICAgICAgICAgICAgPC9saT4KICAgICAgICAgICAgICA8bGk+VGVuc29yQm9hcmQgY2Fu4oCZdCBmaW5kIHlvdXIgZXZlbnQgZmlsZXMuPC9saT4KICAgICAgICAgICAgPC91bD4KCiAgICAgICAgICAgIDxwPgogICAgICAgICAgICAgIElmIHlvdeKAmXJlIG5ldyB0byB1c2luZyBUZW5zb3JCb2FyZCwgYW5kIHdhbnQgdG8gZmluZCBvdXQgaG93IHRvCiAgICAgICAgICAgICAgYWRkIGRhdGEgYW5kIHNldCB1cCB5b3VyIGV2ZW50IGZpbGVzLCBjaGVjayBvdXQgdGhlCiAgICAgICAgICAgICAgPGEKICAgICAgICAgICAgICAgIGhyZWY9Imh0dHBzOi8vZ2l0aHViLmNvbS90ZW5zb3JmbG93L3RlbnNvcmJvYXJkL2Jsb2IvbWFzdGVyL1JFQURNRS5tZCIKICAgICAgICAgICAgICAgID5SRUFETUU8L2EKICAgICAgICAgICAgICA+CiAgICAgICAgICAgICAgYW5kIHBlcmhhcHMgdGhlCiAgICAgICAgICAgICAgPGEKICAgICAgICAgICAgICAgIGhyZWY9Imh0dHBzOi8vd3d3LnRlbnNvcmZsb3cub3JnL2dldF9zdGFydGVkL3N1bW1hcmllc19hbmRfdGVuc29yYm9hcmQiCiAgICAgICAgICAgICAgICA+VGVuc29yQm9hcmQgdHV0b3JpYWw8L2EKICAgICAgICAgICAgICA+LgogICAgICAgICAgICA8L3A+CgogICAgICAgICAgICA8cD4KICAgICAgICAgICAgICBJZiB5b3UgdGhpbmsgVGVuc29yQm9hcmQgaXMgY29uZmlndXJlZCBwcm9wZXJseSwgcGxlYXNlIHNlZQogICAgICAgICAgICAgIDxhCiAgICAgICAgICAgICAgICBocmVmPSJodHRwczovL2dpdGh1Yi5jb20vdGVuc29yZmxvdy90ZW5zb3Jib2FyZC9ibG9iL21hc3Rlci9SRUFETUUubWQjbXktdGVuc29yYm9hcmQtaXNudC1zaG93aW5nLWFueS1kYXRhLXdoYXRzLXdyb25nIgogICAgICAgICAgICAgICAgPnRoZSBzZWN0aW9uIG9mIHRoZSBSRUFETUUgZGV2b3RlZCB0byBtaXNzaW5nIGRhdGEgcHJvYmxlbXM8L2EKICAgICAgICAgICAgICA+CiAgICAgICAgICAgICAgYW5kIGNvbnNpZGVyIGZpbGluZyBhbiBpc3N1ZSBvbiBHaXRIdWIuCiAgICAgICAgICAgIDwvcD4KICAgICAgICAgIDwvZGl2PgogICAgICAgIDwvdGVtcGxhdGU+CiAgICAgICAgPHRlbXBsYXRlIGlzPSJkb20taWYiIGlmPSJbWyFfZGF0YU5vdEZvdW5kXV0iPgogICAgICAgICAgPHRmLXRhZy1maWx0ZXJlciB0YWctZmlsdGVyPSJ7e190YWdGaWx0ZXJ9fSI+PC90Zi10YWctZmlsdGVyZXI+CiAgICAgICAgICA8dGVtcGxhdGUgaXM9ImRvbS1yZXBlYXQiIGl0ZW1zPSJbW19jYXRlZ29yaWVzXV0iIGFzPSJjYXRlZ29yeSI+CiAgICAgICAgICAgIDx0Zi1jYXRlZ29yeS1wYWdpbmF0ZWQtdmlldwogICAgICAgICAgICAgIGNhdGVnb3J5PSJbW2NhdGVnb3J5XV0iCiAgICAgICAgICAgICAgaW5pdGlhbC1vcGVuZWQ9IltbX3Nob3VsZE9wZW4oaW5kZXgpXV0iCiAgICAgICAgICAgID4KICAgICAgICAgICAgICA8dGVtcGxhdGU+CiAgICAgICAgICAgICAgICA8dGYtbWVzaC1sb2FkZXIKICAgICAgICAgICAgICAgICAgYWN0aXZlPSJbW2FjdGl2ZV1dIgogICAgICAgICAgICAgICAgICBzZWxlY3RlZC12aWV3PSJbW19zZWxlY3RlZFZpZXddXSIKICAgICAgICAgICAgICAgICAgcnVuPSJbW2l0ZW0ucnVuXV0iCiAgICAgICAgICAgICAgICAgIHRhZz0iW1tpdGVtLnRhZ11dIgogICAgICAgICAgICAgICAgICBzYW1wbGU9IltbaXRlbS5zYW1wbGVdXSIKICAgICAgICAgICAgICAgICAgb2Ytc2FtcGxlcz0iW1tpdGVtLm9mU2FtcGxlc11dIgogICAgICAgICAgICAgICAgICByZXF1ZXN0LW1hbmFnZXI9IltbX3JlcXVlc3RNYW5hZ2VyXV0iCiAgICAgICAgICAgICAgICAgIGNsYXNzPSJ0Zi1tZXNoLWxvYWRlci1jb250YWluZXIiCiAgICAgICAgICAgICAgICAgIG9uLWNhbWVyYS1wb3NpdGlvbi1jaGFuZ2U9Il9vbkNhbWVyYVBvc2l0aW9uQ2hhbmdlZCIKICAgICAgICAgICAgICAgID4KICAgICAgICAgICAgICAgIDwvdGYtbWVzaC1sb2FkZXI+CiAgICAgICAgICAgICAgPC90ZW1wbGF0ZT4KICAgICAgICAgICAgPC90Zi1jYXRlZ29yeS1wYWdpbmF0ZWQtdmlldz4KICAgICAgICAgIDwvdGVtcGxhdGU+CiAgICAgICAgPC90ZW1wbGF0ZT4KICAgICAgPC9kaXY+CiAgICA8L3RmLWRhc2hib2FyZC1sYXlvdXQ+CgogICAgPHN0eWxlIGluY2x1ZGU9ImRhc2hib2FyZC1zdHlsZSI+PC9zdHlsZT4KICAgIDxzdHlsZT4KICAgICAgLm5vLWRhdGEtd2FybmluZyB7CiAgICAgICAgbWF4LXdpZHRoOiA1NDBweDsKICAgICAgICBtYXJnaW46IDgwcHggYXV0byAwIGF1dG87CiAgICAgIH0KICAgICAgcGFwZXItcmFkaW8tYnV0dG9uIHsKICAgICAgICBkaXNwbGF5OiBibG9jazsKICAgICAgICBwYWRkaW5nOiA1cHg7CiAgICAgIH0KICAgICAgLnNpZGViYXItc2VjdGlvbiBoMy50aXRsZSB7CiAgICAgICAgY29sb3I6IHZhcigtLXBhcGVyLWdyZXktODAwKTsKICAgICAgICBtYXJnaW46IDA7CiAgICAgICAgZm9udC13ZWlnaHQ6IG5vcm1hbDsKICAgICAgICBmb250LXNpemU6IDE0cHg7CiAgICAgICAgbWFyZ2luLWJvdHRvbTogNXB4OwogICAgICB9CgogICAgICAucnVucy1zZWxlY3RvciB7CiAgICAgICAgZmxleC1ncm93OiAxOwogICAgICB9CgogICAgICB0Zi1ydW5zLXNlbGVjdG9yIHsKICAgICAgICBkaXNwbGF5OiBmbGV4OwogICAgICB9CgogICAgICAudmlldy1jb250cm9sIHsKICAgICAgICBkaXNwbGF5OiBibG9jayAhaW1wb3J0YW50OwogICAgICB9CgogICAgICAudmlldy1jb250cm9sIGgzLnRpdGxlIHsKICAgICAgICBwYWRkaW5nLXRvcDogMTZweDsKICAgICAgICBwYWRkaW5nLWJvdHRvbTogMTZweDsKICAgICAgfQoKICAgICAgLmFsbGNvbnRyb2xzIC52aWV3LWNvbnRyb2wgcGFwZXItcmFkaW8tZ3JvdXAgewogICAgICAgIG1hcmdpbi10b3A6IDVweDsKICAgICAgfQogICAgICAvKiBMYXlvdXQgbXVzdCBiZSBob3Jpem9udGFsLCBpLmUuIGl0ZW1zIGFycmFuZ2VkIGluIGEgcm93LiBJZiBpdGVtcyBjYW5ub3QgZml0IGluIGEgcm93LAogICAgICAgKiB0aGV5IHNob3VsZCBiZSBtb3ZlZCB0byBuZXh0IGxpbmUuIEFsbCBpdGVtcyBtdXN0IGJlIHNxdWFyZSBhdCBhbGwgdGltZXMuIE1pbmltdW0gc2l6ZSBvZgogICAgICAgKiB0aGUgaXRlbSBpcyA0ODBweC4gVGhpcyBtZWFucyB0aGF0IG1heGltdW0gc2l6ZSBvZiB0aGUgaXRlbSBtdXN0IGJlIDQ4MHB4ICsgNDc5cHggPSA5NTlweC4KICAgICAgICogKi8KICAgICAgLmhvcml6b250YWwgewogICAgICAgIGRpc3BsYXk6IGZsZXg7CiAgICAgICAgZmxleC1kaXJlY3Rpb246IHJvdzsKICAgICAgICBmbGV4LXdyYXA6IHdyYXA7CiAgICAgIH0KICAgICAgdGYtbWVzaC1sb2FkZXIgewogICAgICAgIHdpZHRoOiA0ODBweDsKICAgICAgICBmbGV4LWJhc2lzOiA0ODBweDsKICAgICAgICBmbGV4LWdyb3c6IDE7CiAgICAgICAgZGlzcGxheTogYmxvY2s7CiAgICAgIH0KICAgIDwvc3R5bGU+CiAgYCx0KFtvKHt0eXBlOkJvb2xlYW59KSxlKCJkZXNpZ246dHlwZSIsQm9vbGVhbildLGdLdC5wcm90b3R5cGUsInJlbG9hZE9uUmVhZHkiLHZvaWQgMCksdChbbyh7dHlwZTpBcnJheX0pLGUoImRlc2lnbjp0eXBlIixBcnJheSldLGdLdC5wcm90b3R5cGUsIl9zZWxlY3RlZFJ1bnMiLHZvaWQgMCksdChbbyh7dHlwZTpPYmplY3R9KSxlKCJkZXNpZ246dHlwZSIsT2JqZWN0KV0sZ0t0LnByb3RvdHlwZSwiX3J1blRvVGFnSW5mbyIsdm9pZCAwKSx0KFtvKHt0eXBlOkJvb2xlYW59KSxlKCJkZXNpZ246dHlwZSIsQm9vbGVhbildLGdLdC5wcm90b3R5cGUsIl9kYXRhTm90Rm91bmQiLHZvaWQgMCksdChbbyh7dHlwZTpTdHJpbmd9KSxlKCJkZXNpZ246dHlwZSIsU3RyaW5nKV0sZ0t0LnByb3RvdHlwZSwiX3RhZ0ZpbHRlciIsdm9pZCAwKSx0KFtvKHt0eXBlOlN0cmluZyxub3RpZnk6ITB9KSxlKCJkZXNpZ246dHlwZSIsU3RyaW5nKV0sZ0t0LnByb3RvdHlwZSwiX3NlbGVjdGVkVmlldyIsdm9pZCAwKSx0KFtvKHt0eXBlOk9iamVjdH0pLGUoImRlc2lnbjp0eXBlIixPYmplY3QpXSxnS3QucHJvdG90eXBlLCJfcmVxdWVzdE1hbmFnZXIiLHZvaWQgMCksdChbcygiX3J1blRvVGFnSW5mbyIsIl9zZWxlY3RlZFJ1bnMiLCJfdGFnRmlsdGVyIiksZSgiZGVzaWduOnR5cGUiLEFycmF5KSxlKCJkZXNpZ246cGFyYW10eXBlcyIsW10pXSxnS3QucHJvdG90eXBlLCJfY2F0ZWdvcmllcyIsbnVsbCksZ0t0PXQoW2koIm1lc2gtZGFzaGJvYXJkIiksZSgiZGVzaWduOnBhcmFtdHlwZXMiLFtdKV0sZ0t0KTtsZXQgX0t0PWNsYXNzIGV4dGVuZHMgeWV7Y29uc3RydWN0b3IoKXtzdXBlciguLi5hcmd1bWVudHMpLHRoaXMuX2V4cGFuZGVkPSExLHRoaXMuX3J1blRvUHJDdXJ2ZUVudHJ5PXt9LHRoaXMuX3ByZXZpb3VzUnVuVG9QckN1cnZlRW50cnk9e30sdGhpcy5fY29sb3JTY2FsZUZ1bmN0aW9uPXtzY2FsZTp4T30sdGhpcy5fY2FuY2VsbGVyPW5ldyBFTyx0aGlzLl94Q29tcG9uZW50c0NyZWF0aW9uTWV0aG9kPSgpPT57Y29uc3QgdD1uZXcgVWd0LlNjYWxlcy5MaW5lYXI7cmV0dXJue3NjYWxlOnQsYXhpczpuZXcgVWd0LkF4ZXMuTnVtZXJpYyh0LCJib3R0b20iKSxhY2Nlc3Nvcjp0PT50LnJlY2FsbH19LHRoaXMuX3lWYWx1ZUFjY2Vzc29yPXQ9PnQucHJlY2lzaW9uLHRoaXMuX3Rvb2x0aXBDb2x1bW5zPSgoKT0+e2NvbnN0IHQ9cWd0KDQpLGU9ZT0+aXNOYU4oZSk/Ik5hTiI6dChlKTtyZXR1cm5be3RpdGxlOiJSdW4iLGV2YWx1YXRlOnQ9PnQuZGF0YXNldC5tZXRhZGF0YSgpLm5hbWV9LHt0aXRsZToiVGhyZXNob2xkIixldmFsdWF0ZTp0PT5lKHQuZGF0dW0udGhyZXNob2xkcyl9LHt0aXRsZToiUHJlY2lzaW9uIixldmFsdWF0ZTp0PT5lKHQuZGF0dW0ucHJlY2lzaW9uKX0se3RpdGxlOiJSZWNhbGwiLGV2YWx1YXRlOnQ9PmUodC5kYXR1bS5yZWNhbGwpfSx7dGl0bGU6IlRQIixldmFsdWF0ZTp0PT50LmRhdHVtLnRydWVfcG9zaXRpdmVzfSx7dGl0bGU6IkZQIixldmFsdWF0ZTp0PT50LmRhdHVtLmZhbHNlX3Bvc2l0aXZlc30se3RpdGxlOiJUTiIsZXZhbHVhdGU6dD0+dC5kYXR1bS50cnVlX25lZ2F0aXZlc30se3RpdGxlOiJGTiIsZXZhbHVhdGU6dD0+dC5kYXR1bS5mYWxzZV9uZWdhdGl2ZXN9XX0pKCksdGhpcy5fc2VyaWVzRGF0YUZpZWxkcz1bInRocmVzaG9sZHMiLCJwcmVjaXNpb24iLCJyZWNhbGwiLCJ0cnVlX3Bvc2l0aXZlcyIsImZhbHNlX3Bvc2l0aXZlcyIsInRydWVfbmVnYXRpdmVzIiwiZmFsc2VfbmVnYXRpdmVzIl0sdGhpcy5fZGVmYXVsdFhSYW5nZT1bLS4wNSwxLjA1XSx0aGlzLl9kZWZhdWx0WVJhbmdlPVstLjA1LDEuMDVdLHRoaXMuX3JlcXVlc3REYXRhPSh0LGUsbik9Pntjb25zdCBpPWdyKCkucGx1Z2luUm91dGUoInByX2N1cnZlcyIsIi9wcl9jdXJ2ZXMiKTtQcm9taXNlLmFsbCh0Lm1hcCgodD0+e2NvbnN0IG49T08oaSx7dGFnOnRoaXMudGFnLHJ1bjp0fSk7cmV0dXJuIHRoaXMucmVxdWVzdE1hbmFnZXIucmVxdWVzdChuKS50aGVuKChuPT57ZSh7aXRlbTp0LGRhdGE6bn0pfSkpfSkpKS5maW5hbGx5KCgoKT0+e24oKX0pKX0sdGhpcy5fc21vb3RoaW5nRW5hYmxlZD0hMX1fY3JlYXRlUHJvY2Vzc0RhdGFGdW5jdGlvbigpe3JldHVybih0LGUsbik9Pnt0aGlzLnNldCgiX3J1blRvRGF0YU92ZXJUaW1lIixPYmplY3QuYXNzaWduKHt9LHRoaXMuX3J1blRvRGF0YU92ZXJUaW1lLG4pKX19X2NvbXB1dGVSdW5Db2xvcih0KXtyZXR1cm4geE8odCl9Y29ubmVjdGVkQ2FsbGJhY2soKXtzdXBlci5jb25uZWN0ZWRDYWxsYmFjaygpLHRoaXMuX2F0dGFjaGVkPSEwLHRoaXMucmVsb2FkKCl9X2dldENoYXJ0RGF0YUxvYWRlcigpe3JldHVybiB0aGlzLnNoYWRvd1Jvb3QucXVlcnlTZWxlY3RvcigidGYtbGluZS1jaGFydC1kYXRhLWxvYWRlciIpfXJlbG9hZCgpe3RoaXMuX2F0dGFjaGVkJiYoMCE9PXRoaXMucnVucy5sZW5ndGg/dGhpcy5fZ2V0Q2hhcnREYXRhTG9hZGVyKCkucmVsb2FkKCk6dGhpcy5zZXQoIl9ydW5Ub0RhdGFPdmVyVGltZSIse30pKX1fc2V0Q2hhcnREYXRhKCl7dmFyIHQ9dGhpcy5fcnVuVG9QckN1cnZlRW50cnksZT10aGlzLl9wcmV2aW91c1J1blRvUHJDdXJ2ZUVudHJ5LG49dGhpcy5fc2V0T2ZSZWxldmFudFJ1bnM7d2UuZm9yT3duKHQsKChpLHIpPT57Y29uc3Qgbz1lW3JdO28mJnRbcl0uc3RlcD09PW8uc3RlcHx8KG5bcl0/dGhpcy5fdXBkYXRlU2VyaWVzRGF0YUZvclJ1bihyLGkpOnRoaXMuX2NsZWFyU2VyaWVzRGF0YShyKSl9KSl9X3VwZGF0ZVNlcmllc0RhdGFGb3JSdW4odCxlKXtjb25zdCBuPXdlLnJlZHVjZSh0aGlzLl9zZXJpZXNEYXRhRmllbGRzLCgodCxuKT0+KHRbbl09ZVtuXS5zbGljZSgpLnJldmVyc2UoKSx0KSkse30pLGk9bmV3IEFycmF5KG5bdGhpcy5fc2VyaWVzRGF0YUZpZWxkc1swXV0ubGVuZ3RoKTtmb3IobGV0IHQ9MDt0PGkubGVuZ3RoO3QrKylpW3RdPXdlLm1hcFZhbHVlcyhuLChlPT5lW3RdKSk7Y29uc3Qgcj10aGlzLl9nZXRDaGFydERhdGFMb2FkZXIoKTtyLnNldFNlcmllc0RhdGEodCxpKSxyLmNvbW1pdENoYW5nZXMoKX1fY2xlYXJTZXJpZXNEYXRhKHQpe2NvbnN0IGU9dGhpcy5fZ2V0Q2hhcnREYXRhTG9hZGVyKCk7ZS5zZXRTZXJpZXNEYXRhKHQsW10pLGUuY29tbWl0Q2hhbmdlcygpfV91cGRhdGVSdW5Ub1ByQ3VydmVFbnRyeSgpe3ZhciB0PXRoaXMucnVuVG9TdGVwQ2FwO2NvbnN0IGU9e307d2UuZm9yT3duKHRoaXMuX3J1blRvRGF0YU92ZXJUaW1lLCgobixpKT0+e24mJm4ubGVuZ3RoJiYoZVtpXT10aGlzLl9jb21wdXRlRW50cnlDbG9zZXN0T3JFcXVhbFRvU3RlcENhcCh0W2ldLG4pKX0pKSx0aGlzLnNldCgiX3ByZXZpb3VzUnVuVG9QckN1cnZlRW50cnkiLHRoaXMuX3J1blRvUHJDdXJ2ZUVudHJ5KSx0aGlzLnNldCgiX3J1blRvUHJDdXJ2ZUVudHJ5IixlKX1fbm90aWZ5RGF0YUNoYW5nZSgpe3RoaXMub25EYXRhQ2hhbmdlJiZ0aGlzLm9uRGF0YUNoYW5nZSh0aGlzLl9ydW5Ub0RhdGFPdmVyVGltZSl9X2NvbXB1dGVFbnRyeUNsb3Nlc3RPckVxdWFsVG9TdGVwQ2FwKHQsZSl7Y29uc3Qgbj1NYXRoLm1pbih3ZS5zb3J0ZWRJbmRleChlLm1hcCgodD0+dC5zdGVwKSksdCksZS5sZW5ndGgtMSk7cmV0dXJuIGVbbl19Z2V0IF9ydW5zV2l0aFN0ZXBBdmFpbGFibGUoKXt2YXIgdD10aGlzLl9ydW5Ub1ByQ3VydmVFbnRyeTtyZXR1cm4gd2UuZmlsdGVyKHRoaXMucnVucywoZT0+dFtlXSkpLnNvcnQoKX1nZXQgX3NldE9mUmVsZXZhbnRSdW5zKCl7Y29uc3QgdD17fTtyZXR1cm4gd2UuZm9yRWFjaCh0aGlzLl9ydW5zV2l0aFN0ZXBBdmFpbGFibGUsKGU9Pnt0W2VdPSEwfSkpLHR9X2NvbXB1dGVDdXJyZW50U3RlcEZvclJ1bih0LGUpe2NvbnN0IG49dFtlXTtyZXR1cm4gbj9uLnN0ZXA6bnVsbH1fY29tcHV0ZUN1cnJlbnRXYWxsVGltZUZvclJ1bih0LGUpe2NvbnN0IG49dFtlXTtyZXR1cm4gbj9uZXcgRGF0ZSgxZTMqbi53YWxsX3RpbWUpLnRvU3RyaW5nKCk6bnVsbH1fdG9nZ2xlRXhwYW5kZWQodCl7dGhpcy5zZXQoIl9leHBhbmRlZCIsIXRoaXMuX2V4cGFuZGVkKSx0aGlzLnJlZHJhdygpfV9yZXNldERvbWFpbigpe3RoaXMuX2dldENoYXJ0RGF0YUxvYWRlcigpLnJlc2V0RG9tYWluKCl9cmVkcmF3KCl7dGhpcy5fZ2V0Q2hhcnREYXRhTG9hZGVyKCkucmVkcmF3KCl9fTtfS3QudGVtcGxhdGU9X2VgCiAgICA8dGYtY2FyZC1oZWFkaW5nCiAgICAgIHRhZz0iW1t0YWddXSIKICAgICAgZGlzcGxheS1uYW1lPSJbW3RhZ01ldGFkYXRhLmRpc3BsYXlOYW1lXV0iCiAgICAgIGRlc2NyaXB0aW9uPSJbW3RhZ01ldGFkYXRhLmRlc2NyaXB0aW9uXV0iCiAgICA+PC90Zi1jYXJkLWhlYWRpbmc+CgogICAgPHRmLWxpbmUtY2hhcnQtZGF0YS1sb2FkZXIKICAgICAgeC1jb21wb25lbnRzLWNyZWF0aW9uLW1ldGhvZD0iW1tfeENvbXBvbmVudHNDcmVhdGlvbk1ldGhvZF1dIgogICAgICB5LXZhbHVlLWFjY2Vzc29yPSJbW195VmFsdWVBY2Nlc3Nvcl1dIgogICAgICB0b29sdGlwLWNvbHVtbnM9IltbX3Rvb2x0aXBDb2x1bW5zXV0iCiAgICAgIGNvbG9yLXNjYWxlPSJbW19jb2xvclNjYWxlRnVuY3Rpb25dXSIKICAgICAgZGVmYXVsdC14LXJhbmdlPSJbW19kZWZhdWx0WFJhbmdlXV0iCiAgICAgIGRlZmF1bHQteS1yYW5nZT0iW1tfZGVmYXVsdFlSYW5nZV1dIgogICAgICBzbW9vdGhpbmctZW5hYmxlZD0iW1tfc21vb3RoaW5nRW5hYmxlZF1dIgogICAgICByZXF1ZXN0LW1hbmFnZXI9IltbcmVxdWVzdE1hbmFnZXJdXSIKICAgICAgZGF0YS10by1sb2FkPSJbW3J1bnNdXSIKICAgICAgZGF0YS1zZXJpZXM9IltbcnVuc11dIgogICAgICBsb2FkLWtleT0iW1t0YWddXSIKICAgICAgcmVxdWVzdC1kYXRhPSJbW19yZXF1ZXN0RGF0YV1dIgogICAgICBsb2FkLWRhdGEtY2FsbGJhY2s9IltbX2NyZWF0ZVByb2Nlc3NEYXRhRnVuY3Rpb24oKV1dIgogICAgICBhY3RpdmU9IltbYWN0aXZlXV0iCiAgICA+PC90Zi1saW5lLWNoYXJ0LWRhdGEtbG9hZGVyPgoKICAgIDxkaXYgaWQ9ImJ1dHRvbnMtcm93Ij4KICAgICAgPHBhcGVyLWljb24tYnV0dG9uCiAgICAgICAgc2VsZWN0ZWQkPSJbW19leHBhbmRlZF1dIgogICAgICAgIGljb249ImZ1bGxzY3JlZW4iCiAgICAgICAgb24tdGFwPSJfdG9nZ2xlRXhwYW5kZWQiCiAgICAgID48L3BhcGVyLWljb24tYnV0dG9uPgogICAgICA8cGFwZXItaWNvbi1idXR0b24KICAgICAgICBpY29uPSJzZXR0aW5ncy1vdmVyc2NhbiIKICAgICAgICBvbi10YXA9Il9yZXNldERvbWFpbiIKICAgICAgICB0aXRsZT0iUmVzZXQgYXhlcyB0byBbMCwgMV0uIgogICAgICA+PC9wYXBlci1pY29uLWJ1dHRvbj4KICAgIDwvZGl2PgoKICAgIDxkaXYgaWQ9InN0ZXAtbGVnZW5kIj4KICAgICAgPHRlbXBsYXRlIGlzPSJkb20tcmVwZWF0IiBpdGVtcz0iW1tfcnVuc1dpdGhTdGVwQXZhaWxhYmxlXV0iIGFzPSJydW4iPgogICAgICAgIDxkaXYgY2xhc3M9ImxlZ2VuZC1yb3ciPgogICAgICAgICAgPGRpdgogICAgICAgICAgICBjbGFzcz0iY29sb3ItYm94IgogICAgICAgICAgICBzdHlsZT0iYmFja2dyb3VuZDogW1tfY29tcHV0ZVJ1bkNvbG9yKHJ1bildXTsiCiAgICAgICAgICA+PC9kaXY+CiAgICAgICAgICBbW3J1bl1dIGlzIGF0CiAgICAgICAgICA8c3BhbiBjbGFzcz0ic3RlcC1sYWJlbC10ZXh0Ij4KICAgICAgICAgICAgc3RlcCBbW19jb21wdXRlQ3VycmVudFN0ZXBGb3JSdW4oX3J1blRvUHJDdXJ2ZUVudHJ5LCBydW4pXV0gPC9zcGFuCiAgICAgICAgICA+PGJyIC8+CiAgICAgICAgICA8c3BhbiBjbGFzcz0id2FsbC10aW1lLWxhYmVsLXRleHQiPgogICAgICAgICAgICAoW1tfY29tcHV0ZUN1cnJlbnRXYWxsVGltZUZvclJ1bihfcnVuVG9QckN1cnZlRW50cnksIHJ1bildXSkKICAgICAgICAgIDwvc3Bhbj4KICAgICAgICA8L2Rpdj4KICAgICAgPC90ZW1wbGF0ZT4KICAgIDwvZGl2PgoKICAgIDxzdHlsZT4KICAgICAgOmhvc3QgewogICAgICAgIGRpc3BsYXk6IGZsZXg7CiAgICAgICAgZmxleC1kaXJlY3Rpb246IGNvbHVtbjsKICAgICAgICB3aWR0aDogNTAwcHg7CiAgICAgICAgbWFyZ2luLXJpZ2h0OiAxMHB4OwogICAgICAgIG1hcmdpbi1ib3R0b206IDI1cHg7CiAgICAgIH0KICAgICAgOmhvc3QoW19leHBhbmRlZF0pIHsKICAgICAgICB3aWR0aDogMTAwJTsKICAgICAgfQogICAgICB0Zi1saW5lLWNoYXJ0LWRhdGEtbG9hZGVyIHsKICAgICAgICBoZWlnaHQ6IDMwMHB4OwogICAgICAgIHBvc2l0aW9uOiByZWxhdGl2ZTsKICAgICAgfQogICAgICA6aG9zdChbX2V4cGFuZGVkXSkgdGYtbGluZS1jaGFydC1kYXRhLWxvYWRlciB7CiAgICAgICAgaGVpZ2h0OiA2MDBweDsKICAgICAgfQogICAgICAjYnV0dG9ucy1yb3cgewogICAgICAgIGRpc3BsYXk6IGZsZXg7CiAgICAgICAgZmxleC1kaXJlY3Rpb246IHJvdzsKICAgICAgfQogICAgICAjYnV0dG9ucy1yb3cgcGFwZXItaWNvbi1idXR0b24gewogICAgICAgIGNvbG9yOiAjMjE5NmYzOwogICAgICAgIGJvcmRlci1yYWRpdXM6IDEwMCU7CiAgICAgICAgd2lkdGg6IDMycHg7CiAgICAgICAgaGVpZ2h0OiAzMnB4OwogICAgICAgIHBhZGRpbmc6IDRweDsKICAgICAgfQogICAgICAjYnV0dG9ucy1yb3cgcGFwZXItaWNvbi1idXR0b25bc2VsZWN0ZWRdIHsKICAgICAgICBiYWNrZ3JvdW5kOiB2YXIoLS10Yi11aS1saWdodC1hY2NlbnQpOwogICAgICB9CiAgICAgICNzdGVwLWxlZ2VuZCB7CiAgICAgICAgYm94LXNpemluZzogYm9yZGVyLWJveDsKICAgICAgICBmb250LXNpemU6IDAuOGVtOwogICAgICAgIG1heC1oZWlnaHQ6IDIwMHB4OwogICAgICAgIG92ZXJmbG93LXk6IGF1dG87CiAgICAgICAgcGFkZGluZzogMCAwIDAgMTBweDsKICAgICAgICB3aWR0aDogMTAwJTsKICAgICAgfQogICAgICAubGVnZW5kLXJvdyB7CiAgICAgICAgbWFyZ2luOiA1cHggMCA1cHggMDsKICAgICAgICB3aWR0aDogMTAwJTsKICAgICAgfQogICAgICAuY29sb3ItYm94IHsKICAgICAgICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7CiAgICAgICAgYm9yZGVyLXJhZGl1czogMXB4OwogICAgICAgIHdpZHRoOiAxMHB4OwogICAgICAgIGhlaWdodDogMTBweDsKICAgICAgfQogICAgICAuc3RlcC1sYWJlbC10ZXh0IHsKICAgICAgICBmb250LXdlaWdodDogYm9sZDsKICAgICAgfQogICAgICAud2FsbC10aW1lLWxhYmVsLXRleHQgewogICAgICAgIGNvbG9yOiAjODg4OwogICAgICAgIGZvbnQtc2l6ZTogMC44ZW07CiAgICAgIH0KICAgIDwvc3R5bGU+CiAgYCx0KFtvKHt0eXBlOkFycmF5fSksZSgiZGVzaWduOnR5cGUiLEFycmF5KV0sX0t0LnByb3RvdHlwZSwicnVucyIsdm9pZCAwKSx0KFtvKHt0eXBlOlN0cmluZ30pLGUoImRlc2lnbjp0eXBlIixTdHJpbmcpXSxfS3QucHJvdG90eXBlLCJ0YWciLHZvaWQgMCksdChbbyh7dHlwZTpPYmplY3R9KSxlKCJkZXNpZ246dHlwZSIsT2JqZWN0KV0sX0t0LnByb3RvdHlwZSwidGFnTWV0YWRhdGEiLHZvaWQgMCksdChbbyh7dHlwZTpPYmplY3R9KSxlKCJkZXNpZ246dHlwZSIsT2JqZWN0KV0sX0t0LnByb3RvdHlwZSwicnVuVG9TdGVwQ2FwIix2b2lkIDApLHQoW28oe3R5cGU6T2JqZWN0fSksZSgiZGVzaWduOnR5cGUiLGhyKV0sX0t0LnByb3RvdHlwZSwicmVxdWVzdE1hbmFnZXIiLHZvaWQgMCksdChbbyh7dHlwZTpCb29sZWFufSksZSgiZGVzaWduOnR5cGUiLEJvb2xlYW4pXSxfS3QucHJvdG90eXBlLCJhY3RpdmUiLHZvaWQgMCksdChbbyh7dHlwZTpCb29sZWFuLHJlZmxlY3RUb0F0dHJpYnV0ZTohMH0pLGUoImRlc2lnbjp0eXBlIixCb29sZWFuKV0sX0t0LnByb3RvdHlwZSwiX2V4cGFuZGVkIix2b2lkIDApLHQoW28oe3R5cGU6T2JqZWN0fSksZSgiZGVzaWduOnR5cGUiLE9iamVjdCldLF9LdC5wcm90b3R5cGUsIl9ydW5Ub1ByQ3VydmVFbnRyeSIsdm9pZCAwKSx0KFtvKHt0eXBlOk9iamVjdH0pLGUoImRlc2lnbjp0eXBlIixPYmplY3QpXSxfS3QucHJvdG90eXBlLCJfcHJldmlvdXNSdW5Ub1ByQ3VydmVFbnRyeSIsdm9pZCAwKSx0KFtvKHt0eXBlOk9iamVjdH0pLGUoImRlc2lnbjp0eXBlIixPYmplY3QpXSxfS3QucHJvdG90eXBlLCJfcnVuVG9EYXRhT3ZlclRpbWUiLHZvaWQgMCksdChbbyh7dHlwZTpPYmplY3R9KSxlKCJkZXNpZ246dHlwZSIsRnVuY3Rpb24pXSxfS3QucHJvdG90eXBlLCJvbkRhdGFDaGFuZ2UiLHZvaWQgMCksdChbbyh7dHlwZTpPYmplY3R9KSxlKCJkZXNpZ246dHlwZSIsT2JqZWN0KV0sX0t0LnByb3RvdHlwZSwiX2NvbG9yU2NhbGVGdW5jdGlvbiIsdm9pZCAwKSx0KFtvKHt0eXBlOk9iamVjdH0pLGUoImRlc2lnbjp0eXBlIixFTyldLF9LdC5wcm90b3R5cGUsIl9jYW5jZWxsZXIiLHZvaWQgMCksdChbbyh7dHlwZTpCb29sZWFufSksZSgiZGVzaWduOnR5cGUiLEJvb2xlYW4pXSxfS3QucHJvdG90eXBlLCJfYXR0YWNoZWQiLHZvaWQgMCksdChbbyh7dHlwZTpPYmplY3R9KSxlKCJkZXNpZ246dHlwZSIsT2JqZWN0KV0sX0t0LnByb3RvdHlwZSwiX3hDb21wb25lbnRzQ3JlYXRpb25NZXRob2QiLHZvaWQgMCksdChbbyh7dHlwZTpPYmplY3R9KSxlKCJkZXNpZ246dHlwZSIsT2JqZWN0KV0sX0t0LnByb3RvdHlwZSwiX3lWYWx1ZUFjY2Vzc29yIix2b2lkIDApLHQoW28oe3R5cGU6QXJyYXl9KSxlKCJkZXNpZ246dHlwZSIsQXJyYXkpXSxfS3QucHJvdG90eXBlLCJfdG9vbHRpcENvbHVtbnMiLHZvaWQgMCksdChbbyh7dHlwZTpBcnJheX0pLGUoImRlc2lnbjp0eXBlIixBcnJheSldLF9LdC5wcm90b3R5cGUsIl9zZXJpZXNEYXRhRmllbGRzIix2b2lkIDApLHQoW28oe3R5cGU6QXJyYXl9KSxlKCJkZXNpZ246dHlwZSIsQXJyYXkpXSxfS3QucHJvdG90eXBlLCJfZGVmYXVsdFhSYW5nZSIsdm9pZCAwKSx0KFtvKHt0eXBlOkFycmF5fSksZSgiZGVzaWduOnR5cGUiLEFycmF5KV0sX0t0LnByb3RvdHlwZSwiX2RlZmF1bHRZUmFuZ2UiLHZvaWQgMCksdChbbyh7dHlwZTpPYmplY3R9KSxlKCJkZXNpZ246dHlwZSIsRnVuY3Rpb24pXSxfS3QucHJvdG90eXBlLCJfcmVxdWVzdERhdGEiLHZvaWQgMCksdChbbyh7dHlwZTpCb29sZWFufSksZSgiZGVzaWduOnR5cGUiLEJvb2xlYW4pXSxfS3QucHJvdG90eXBlLCJfc21vb3RoaW5nRW5hYmxlZCIsdm9pZCAwKSx0KFthKCJydW5zIiwidGFnIiksZSgiZGVzaWduOnR5cGUiLEZ1bmN0aW9uKSxlKCJkZXNpZ246cGFyYW10eXBlcyIsW10pLGUoImRlc2lnbjpyZXR1cm50eXBlIix2b2lkIDApXSxfS3QucHJvdG90eXBlLCJyZWxvYWQiLG51bGwpLHQoW2EoIl9ydW5Ub1ByQ3VydmVFbnRyeSIsIl9wcmV2aW91c1J1blRvUHJDdXJ2ZUVudHJ5IiwiX3NldE9mUmVsZXZhbnRSdW5zIiksZSgiZGVzaWduOnR5cGUiLEZ1bmN0aW9uKSxlKCJkZXNpZ246cGFyYW10eXBlcyIsW10pLGUoImRlc2lnbjpyZXR1cm50eXBlIix2b2lkIDApXSxfS3QucHJvdG90eXBlLCJfc2V0Q2hhcnREYXRhIixudWxsKSx0KFthKCJfcnVuVG9EYXRhT3ZlclRpbWUiLCJydW5Ub1N0ZXBDYXAiKSxlKCJkZXNpZ246dHlwZSIsRnVuY3Rpb24pLGUoImRlc2lnbjpwYXJhbXR5cGVzIixbXSksZSgiZGVzaWduOnJldHVybnR5cGUiLHZvaWQgMCldLF9LdC5wcm90b3R5cGUsIl91cGRhdGVSdW5Ub1ByQ3VydmVFbnRyeSIsbnVsbCksdChbYSgiX3J1blRvRGF0YU92ZXJUaW1lIiksZSgiZGVzaWduOnR5cGUiLEZ1bmN0aW9uKSxlKCJkZXNpZ246cGFyYW10eXBlcyIsW10pLGUoImRlc2lnbjpyZXR1cm50eXBlIix2b2lkIDApXSxfS3QucHJvdG90eXBlLCJfbm90aWZ5RGF0YUNoYW5nZSIsbnVsbCksdChbcygicnVucyIsIl9ydW5Ub1ByQ3VydmVFbnRyeSIpLGUoImRlc2lnbjp0eXBlIixBcnJheSksZSgiZGVzaWduOnBhcmFtdHlwZXMiLFtdKV0sX0t0LnByb3RvdHlwZSwiX3J1bnNXaXRoU3RlcEF2YWlsYWJsZSIsbnVsbCksdChbcygiX3J1bnNXaXRoU3RlcEF2YWlsYWJsZSIpLGUoImRlc2lnbjp0eXBlIixPYmplY3QpLGUoImRlc2lnbjpwYXJhbXR5cGVzIixbXSldLF9LdC5wcm90b3R5cGUsIl9zZXRPZlJlbGV2YW50UnVucyIsbnVsbCksX0t0PXQoW2koInRmLXByLWN1cnZlLWNhcmQiKV0sX0t0KTtsZXQgeUt0PWNsYXNzIGV4dGVuZHMgeWV7Y29uc3RydWN0b3IoKXtzdXBlciguLi5hcmd1bWVudHMpLHRoaXMuX3J1blRvU3RlcEluZGV4PXt9fV9jb21wdXRlQ29sb3JGb3JSdW4odCl7cmV0dXJuIHhPKHQpfV9jb21wdXRlVGltZVRleHRGb3JSdW4odCxlLG4saSl7Y29uc3Qgcj1lW25dO2lmKCF3ZS5pc051bWJlcihyKSlyZXR1cm4iIjtjb25zdCBvPXRbbl07aWYoIW8pcmV0dXJuIiI7Y29uc3QgYT1vW3JdW2ldO2lmKCJzdGVwIj09PWkpcmV0dXJuYHN0ZXAgJHthfWA7aWYoInJlbGF0aXZlIj09PWkpcmV0dXJuIGE8MT9gJHsoMWUzKmEpLnRvRml4ZWQoMil9IG1zYDpgJHthLnRvRml4ZWQoMil9IHNgO2lmKCJ3YWxsX3RpbWUiPT09aSlyZXR1cm4gbmV3IERhdGUoMWUzKmEpLnRvU3RyaW5nKCk7dGhyb3cgbmV3IEVycm9yKGBUaGUgZGlzcGxheSB0eXBlIG9mICR7aX0gaXMgbm90IHJlY29nbml6ZWQuYCl9X3NsaWRlclZhbHVlQ2hhbmdlZCh0KXtjb25zdCBlPXQudGFyZ2V0LmRhdGFzZXQucnVuLG49dC50YXJnZXQuaW1tZWRpYXRlVmFsdWUsaT1PYmplY3QuYXNzaWduKHt9LHRoaXMuX3J1blRvU3RlcEluZGV4KTtpc05hTihuKT9kZWxldGUgaVtlXTppW2VdPXQudGFyZ2V0LmltbWVkaWF0ZVZhbHVlLHRoaXMuX3J1blRvU3RlcEluZGV4PWl9X2NvbXB1dGVNYXhTdGVwSW5kZXhGb3JSdW4odCxlKXtjb25zdCBuPXRbZV07cmV0dXJuIG4mJm4ubGVuZ3RoP24ubGVuZ3RoLTE6MH1fdXBkYXRlU3RlcHNGb3JOZXdSdW5zKCl7dmFyIHQ9dGhpcy5ydW5Ub0F2YWlsYWJsZVRpbWVFbnRyaWVzO2NvbnN0IGU9T2JqZWN0LmFzc2lnbih7fSx0aGlzLl9ydW5Ub1N0ZXBJbmRleCk7d2UuZm9yT3duKHQsKCh0LG4pPT57d2UuaXNOdW1iZXIoZVtuXSl8fChlW25dPXQubGVuZ3RoLTEpfSkpLHRoaXMuX3J1blRvU3RlcEluZGV4PWV9X2dldFN0ZXAodCxlKXtyZXR1cm4gdGhpcy5fcnVuVG9TdGVwSW5kZXg/dGhpcy5fcnVuVG9TdGVwSW5kZXhbZV06MH1fY29tcHV0ZVJ1blRvU3RlcCh0LGUpe2NvbnN0IG49e307cmV0dXJuIHdlLmZvck93bihlLCgoZSxpKT0+e2NvbnN0IHI9dFtpXTtyJiYobltpXT1yW2VdLnN0ZXApfSkpLG59Z2V0IF9ydW5zV2l0aFNsaWRlcnMoKXt2YXIgdD10aGlzLnJ1blRvQXZhaWxhYmxlVGltZUVudHJpZXM7cmV0dXJuIHRoaXMucnVucy5maWx0ZXIoKGU9PnRbZV0pKX19O3lLdC50ZW1wbGF0ZT1fZWAKICAgIDx0ZW1wbGF0ZSBpcz0iZG9tLXJlcGVhdCIgaXRlbXM9IltbX3J1bnNXaXRoU2xpZGVyc11dIiBhcz0icnVuIj4KICAgICAgPGRpdiBjbGFzcz0icnVuLXdpZGdldCI+CiAgICAgICAgPGRpdiBjbGFzcz0icnVuLWRpc3BsYXktY29udGFpbmVyIj4KICAgICAgICAgIDxkaXYKICAgICAgICAgICAgY2xhc3M9InJ1bi1jb2xvci1ib3giCiAgICAgICAgICAgIHN0eWxlPSJiYWNrZ3JvdW5kOltbX2NvbXB1dGVDb2xvckZvclJ1bihydW4pXV07IgogICAgICAgICAgPjwvZGl2PgogICAgICAgICAgPGRpdiBjbGFzcz0icnVuLXRleHQiPltbcnVuXV08L2Rpdj4KICAgICAgICA8L2Rpdj4KICAgICAgICA8ZGl2IGNsYXNzPSJzdGVwLWRpc3BsYXktY29udGFpbmVyIj4KICAgICAgICAgIFtbX2NvbXB1dGVUaW1lVGV4dEZvclJ1bihydW5Ub0F2YWlsYWJsZVRpbWVFbnRyaWVzLCBfcnVuVG9TdGVwSW5kZXgsCiAgICAgICAgICBydW4sIHRpbWVEaXNwbGF5VHlwZSldXQogICAgICAgIDwvZGl2PgogICAgICAgIDxwYXBlci1zbGlkZXIKICAgICAgICAgIGRhdGEtcnVuJD0iW1tydW5dXSIKICAgICAgICAgIHN0ZXA9IjEiCiAgICAgICAgICB0eXBlPSJudW1iZXIiCiAgICAgICAgICBtaW49IjAiCiAgICAgICAgICBtYXg9IltbX2NvbXB1dGVNYXhTdGVwSW5kZXhGb3JSdW4ocnVuVG9BdmFpbGFibGVUaW1lRW50cmllcywgcnVuKV1dIgogICAgICAgICAgdmFsdWU9IltbX2dldFN0ZXAoX3J1blRvU3RlcEluZGV4LCBydW4pXV0iCiAgICAgICAgICBvbi1pbW1lZGlhdGUtdmFsdWUtY2hhbmdlZD0iX3NsaWRlclZhbHVlQ2hhbmdlZCIKICAgICAgICA+PC9wYXBlci1zbGlkZXI+CiAgICAgIDwvZGl2PgogICAgPC90ZW1wbGF0ZT4KICAgIDxzdHlsZT4KICAgICAgLnJ1bi13aWRnZXQgewogICAgICAgIG1hcmdpbjogMTBweCAwIDAgMDsKICAgICAgfQogICAgICBwYXBlci1zbGlkZXIgewogICAgICAgIG1hcmdpbjogLThweCAwIDAgLTE1cHg7CiAgICAgICAgd2lkdGg6IDEwMCU7CiAgICAgIH0KICAgICAgLnN0ZXAtZGlzcGxheS1jb250YWluZXIgewogICAgICAgIGZvbnQtc2l6ZTogMC45ZW07CiAgICAgICAgbWFyZ2luOiAwIDE1cHggMCAwOwogICAgICB9CiAgICAgIC5ydW4tdGV4dCB7CiAgICAgICAgZGlzcGxheTogaW5saW5lLWJsb2NrOwogICAgICB9CiAgICAgIC5ydW4tY29sb3ItYm94IHsKICAgICAgICB3aWR0aDogMTJweDsKICAgICAgICBoZWlnaHQ6IDEycHg7CiAgICAgICAgYm9yZGVyLXJhZGl1czogM3B4OwogICAgICAgIGRpc3BsYXk6IGlubGluZS1ibG9jazsKICAgICAgfQogICAgPC9zdHlsZT4KICBgLHQoW28oe3R5cGU6QXJyYXl9KSxlKCJkZXNpZ246dHlwZSIsQXJyYXkpXSx5S3QucHJvdG90eXBlLCJydW5zIix2b2lkIDApLHQoW28oe3R5cGU6T2JqZWN0fSksZSgiZGVzaWduOnR5cGUiLE9iamVjdCldLHlLdC5wcm90b3R5cGUsInJ1blRvQXZhaWxhYmxlVGltZUVudHJpZXMiLHZvaWQgMCksdChbbyh7dHlwZTpPYmplY3Qsbm90aWZ5OiEwLGNvbXB1dGVkOiJfY29tcHV0ZVJ1blRvU3RlcChydW5Ub0F2YWlsYWJsZVRpbWVFbnRyaWVzLCBfcnVuVG9TdGVwSW5kZXgpIn0pLGUoImRlc2lnbjp0eXBlIixPYmplY3QpXSx5S3QucHJvdG90eXBlLCJydW5Ub1N0ZXAiLHZvaWQgMCksdChbbyh7dHlwZTpTdHJpbmd9KSxlKCJkZXNpZ246dHlwZSIsU3RyaW5nKV0seUt0LnByb3RvdHlwZSwidGltZURpc3BsYXlUeXBlIix2b2lkIDApLHQoW28oe3R5cGU6T2JqZWN0fSksZSgiZGVzaWduOnR5cGUiLE9iamVjdCldLHlLdC5wcm90b3R5cGUsIl9ydW5Ub1N0ZXBJbmRleCIsdm9pZCAwKSx0KFthKCJydW5Ub0F2YWlsYWJsZVRpbWVFbnRyaWVzIiksZSgiZGVzaWduOnR5cGUiLEZ1bmN0aW9uKSxlKCJkZXNpZ246cGFyYW10eXBlcyIsW10pLGUoImRlc2lnbjpyZXR1cm50eXBlIix2b2lkIDApXSx5S3QucHJvdG90eXBlLCJfdXBkYXRlU3RlcHNGb3JOZXdSdW5zIixudWxsKSx0KFtzKCJydW5zIiwicnVuVG9BdmFpbGFibGVUaW1lRW50cmllcyIpLGUoImRlc2lnbjp0eXBlIixBcnJheSksZSgiZGVzaWduOnBhcmFtdHlwZXMiLFtdKV0seUt0LnByb3RvdHlwZSwiX3J1bnNXaXRoU2xpZGVycyIsbnVsbCkseUt0PXQoW2koInRmLXByLWN1cnZlLXN0ZXBzLXNlbGVjdG9yIildLHlLdCk7bGV0IHZLdD1jbGFzcyBleHRlbmRzKHRyKHllKSl7Y29uc3RydWN0b3IoKXtzdXBlciguLi5hcmd1bWVudHMpLHRoaXMucmVsb2FkT25SZWFkeT0hMCx0aGlzLl90aW1lRGlzcGxheVR5cGU9InN0ZXAiLHRoaXMuX3NlbGVjdGVkUnVucz1bXSx0aGlzLl9ydW5Ub1RhZ0luZm89e30sdGhpcy5fdGFnVG9SdW5Ub0RhdGE9e30sdGhpcy5fZ2V0Q2F0ZWdvcnlJdGVtS2V5PXQ9PnQudGFnLHRoaXMuX3JlcXVlc3RNYW5hZ2VyPW5ldyBocix0aGlzLl9zdGVwPTB9cmVhZHkoKXtzdXBlci5yZWFkeSgpLHRoaXMucmVsb2FkT25SZWFkeSYmdGhpcy5yZWxvYWQoKX1yZWxvYWQoKXtQcm9taXNlLmFsbChbdGhpcy5fZmV0Y2hUYWdzKCldKS50aGVuKCgoKT0+e3RoaXMuX3JlbG9hZENhcmRzKCl9KSl9X3Nob3VsZE9wZW4odCl7cmV0dXJuIHQ8PTJ9X2ZldGNoVGFncygpe2NvbnN0IHQ9Z3IoKS5wbHVnaW5Sb3V0ZSgicHJfY3VydmVzIiwiL3RhZ3MiKTtyZXR1cm4gdGhpcy5fcmVxdWVzdE1hbmFnZXIucmVxdWVzdCh0KS50aGVuKCh0PT57aWYod2UuaXNFcXVhbCh0LHRoaXMuX3J1blRvVGFnSW5mbykpcmV0dXJuO2NvbnN0IGU9b3Iod2UubWFwVmFsdWVzKHQsKHQ9PndlLmtleXModCkpKSk7dGhpcy5zZXQoIl9kYXRhTm90Rm91bmQiLDA9PT1lLmxlbmd0aCksdGhpcy5zZXQoIl9ydW5Ub1RhZ0luZm8iLHQpLHRoaXMuYXN5bmMoKCgpPT57dGhpcy5zZXQoIl9jYXRlZ29yaWVzRG9tUmVhZHkiLCEwKX0pKX0pKX1fcmVsb2FkQ2FyZHMoKXt3ZS5mb3JFYWNoKHRoaXMucm9vdC5xdWVyeVNlbGVjdG9yQWxsKCJ0Zi1wci1jdXJ2ZS1jYXJkIiksKHQ9Pnt0LnJlbG9hZCgpfSkpfWdldCBfY2F0ZWdvcmllcygpe3ZhciB0PXRoaXMuX3NlbGVjdGVkUnVucyxlPXRoaXMuX3RhZ0ZpbHRlcjtyZXR1cm4geHIod2UubWFwVmFsdWVzKHRoaXMuX3J1blRvVGFnSW5mbywodD0+T2JqZWN0LmtleXModCkpKSx0LGUpfWdldCBfcmVsZXZhbnRTZWxlY3RlZFJ1bnMoKXt2YXIgdD10aGlzLl9ydW5Ub1RhZ0luZm87cmV0dXJuIHRoaXMuX3NlbGVjdGVkUnVucy5maWx0ZXIoKGU9PnRbZV0pKX1fdGFnTWV0YWRhdGEodCxlLG4pe2NvbnN0IGk9e307ZS5mb3JFYWNoKChlPT57aVtlXT10W2VdW25dfSkpO2NvbnN0IHI9bi5yZXBsYWNlKC9cL3ByX2N1cnZlcyQvLCIiKTtyZXR1cm4gSU8oaSxyKX1fY3JlYXRlRGF0YUNoYW5nZUNhbGxiYWNrKHQpe3JldHVybiBlPT57dGhpcy5zZXQoIl90YWdUb1J1blRvRGF0YSIsT2JqZWN0LmFzc2lnbihPYmplY3QuYXNzaWduKHt9LHRoaXMuX3RhZ1RvUnVuVG9EYXRhKSx7W3RdOmV9KSl9fWdldCBfcnVuVG9BdmFpbGFibGVUaW1lRW50cmllcygpe3ZhciB0PXRoaXMuX3RhZ1RvUnVuVG9EYXRhO2NvbnN0IGU9e307Zm9yKGNvbnN0W24saV1vZiBPYmplY3QuZW50cmllcyh0KSlmb3IoY29uc3RbdF1vZiBPYmplY3QuZW50cmllcyhpKSkobnVsbD09ZVt0XXx8bjxlW3RdKSYmKGVbdF09bik7Y29uc3Qgbj17fTtmb3IoY29uc3RbaSxyXW9mIE9iamVjdC5lbnRyaWVzKGUpKXtjb25zdCBlPXRbcl1baV07bltpXT1lLm1hcCgodD0+KHtzdGVwOnQuc3RlcCx3YWxsX3RpbWU6dC53YWxsX3RpbWUscmVsYXRpdmU6dC53YWxsX3RpbWUtZVswXS53YWxsX3RpbWV9KSkpfXJldHVybiBufX07dkt0LnRlbXBsYXRlPV9lYAogICAgPHRmLWRhc2hib2FyZC1sYXlvdXQ+CiAgICAgIDxkaXYgY2xhc3M9InNpZGViYXIiIHNsb3Q9InNpZGViYXIiPgogICAgICAgIDxkaXYgY2xhc3M9InNldHRpbmdzIj4KICAgICAgICAgIDxkaXYgY2xhc3M9InNpZGViYXItc2VjdGlvbiI+CiAgICAgICAgICAgIDx0Zi1vcHRpb24tc2VsZWN0b3IKICAgICAgICAgICAgICBpZD0idGltZS10eXBlLXNlbGVjdG9yIgogICAgICAgICAgICAgIG5hbWU9IlRpbWUgRGlzcGxheSBUeXBlIgogICAgICAgICAgICAgIHNlbGVjdGVkLWlkPSJ7e190aW1lRGlzcGxheVR5cGV9fSIKICAgICAgICAgICAgPgogICAgICAgICAgICAgIDxwYXBlci1idXR0b24gaWQ9InN0ZXAiPnN0ZXA8L3BhcGVyLWJ1dHRvbj4KICAgICAgICAgICAgICA8IS0tCiAgICAgICAgICAgIC0tPgogICAgICAgICAgICAgIDxwYXBlci1idXR0b24gaWQ9InJlbGF0aXZlIj5yZWxhdGl2ZTwvcGFwZXItYnV0dG9uPgogICAgICAgICAgICAgIDwhLS0KICAgICAgICAgICAgLS0+CiAgICAgICAgICAgICAgPHBhcGVyLWJ1dHRvbiBpZD0id2FsbF90aW1lIj53YWxsPC9wYXBlci1idXR0b24+CiAgICAgICAgICAgIDwvdGYtb3B0aW9uLXNlbGVjdG9yPgogICAgICAgICAgPC9kaXY+CiAgICAgICAgICA8dGVtcGxhdGUgaXM9ImRvbS1pZiIgaWY9IltbX3J1blRvQXZhaWxhYmxlVGltZUVudHJpZXNdXSI+CiAgICAgICAgICAgIDxkaXYgY2xhc3M9InNpZGViYXItc2VjdGlvbiIgaWQ9InN0ZXBzLXNlbGVjdG9yLWNvbnRhaW5lciI+CiAgICAgICAgICAgICAgPHRmLXByLWN1cnZlLXN0ZXBzLXNlbGVjdG9yCiAgICAgICAgICAgICAgICBydW5zPSJbW19yZWxldmFudFNlbGVjdGVkUnVuc11dIgogICAgICAgICAgICAgICAgcnVuLXRvLXN0ZXA9Int7X3J1blRvU3RlcH19IgogICAgICAgICAgICAgICAgcnVuLXRvLWF2YWlsYWJsZS10aW1lLWVudHJpZXM9IltbX3J1blRvQXZhaWxhYmxlVGltZUVudHJpZXNdXSIKICAgICAgICAgICAgICAgIHRpbWUtZGlzcGxheS10eXBlPSJbW190aW1lRGlzcGxheVR5cGVdXSIKICAgICAgICAgICAgICA+CiAgICAgICAgICAgICAgPC90Zi1wci1jdXJ2ZS1zdGVwcy1zZWxlY3Rvcj4KICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICA8L3RlbXBsYXRlPgogICAgICAgIDwvZGl2PgogICAgICAgIDxkaXYgY2xhc3M9InNpZGViYXItc2VjdGlvbiBydW5zLXNlbGVjdG9yIj4KICAgICAgICAgIDx0Zi1ydW5zLXNlbGVjdG9yIHNlbGVjdGVkLXJ1bnM9Int7X3NlbGVjdGVkUnVuc319Ij4KICAgICAgICAgIDwvdGYtcnVucy1zZWxlY3Rvcj4KICAgICAgICA8L2Rpdj4KICAgICAgPC9kaXY+CiAgICAgIDxkaXYgY2xhc3M9ImNlbnRlciIgc2xvdD0iY2VudGVyIj4KICAgICAgICA8dGVtcGxhdGUgaXM9ImRvbS1pZiIgaWY9IltbX2RhdGFOb3RGb3VuZF1dIj4KICAgICAgICAgIDxkaXYgY2xhc3M9Im5vLWRhdGEtd2FybmluZyI+CiAgICAgICAgICAgIDxoMz5ObyBwcmVjaXNpb27igJNyZWNhbGwgY3VydmUgZGF0YSB3YXMgZm91bmQuPC9oMz4KICAgICAgICAgICAgPHA+UHJvYmFibGUgY2F1c2VzOjwvcD4KICAgICAgICAgICAgPHVsPgogICAgICAgICAgICAgIDxsaT4KICAgICAgICAgICAgICAgIFlvdSBoYXZlbuKAmXQgd3JpdHRlbiBhbnkgcHJlY2lzaW9u4oCTcmVjYWxsIGRhdGEgdG8geW91ciBldmVudAogICAgICAgICAgICAgICAgZmlsZXMuCiAgICAgICAgICAgICAgPC9saT4KICAgICAgICAgICAgICA8bGk+VGVuc29yQm9hcmQgY2Fu4oCZdCBmaW5kIHlvdXIgZXZlbnQgZmlsZXMuPC9saT4KICAgICAgICAgICAgPC91bD4KICAgICAgICAgICAgPHA+CiAgICAgICAgICAgICAgSWYgeW914oCZcmUgbmV3IHRvIHVzaW5nIFRlbnNvckJvYXJkLCBhbmQgd2FudCB0byBmaW5kIG91dCBob3cgdG8KICAgICAgICAgICAgICBhZGQgZGF0YSBhbmQgc2V0IHVwIHlvdXIgZXZlbnQgZmlsZXMsIGNoZWNrIG91dCB0aGUKICAgICAgICAgICAgICA8YQogICAgICAgICAgICAgICAgaHJlZj0iaHR0cHM6Ly9naXRodWIuY29tL3RlbnNvcmZsb3cvdGVuc29yYm9hcmQvYmxvYi9tYXN0ZXIvUkVBRE1FLm1kIgogICAgICAgICAgICAgICAgPlJFQURNRTwvYQogICAgICAgICAgICAgID4KICAgICAgICAgICAgICBhbmQgcGVyaGFwcyB0aGUKICAgICAgICAgICAgICA8YQogICAgICAgICAgICAgICAgaHJlZj0iaHR0cHM6Ly93d3cudGVuc29yZmxvdy5vcmcvZ2V0X3N0YXJ0ZWQvc3VtbWFyaWVzX2FuZF90ZW5zb3Jib2FyZCIKICAgICAgICAgICAgICAgID5UZW5zb3JCb2FyZCB0dXRvcmlhbDwvYQogICAgICAgICAgICAgID4uCiAgICAgICAgICAgIDwvcD4KCiAgICAgICAgICAgIDxwPgogICAgICAgICAgICAgIElmIHlvdSB0aGluayBUZW5zb3JCb2FyZCBpcyBjb25maWd1cmVkIHByb3Blcmx5LCBwbGVhc2Ugc2VlCiAgICAgICAgICAgICAgPGEKICAgICAgICAgICAgICAgIGhyZWY9Imh0dHBzOi8vZ2l0aHViLmNvbS90ZW5zb3JmbG93L3RlbnNvcmJvYXJkL2Jsb2IvbWFzdGVyL1JFQURNRS5tZCNteS10ZW5zb3Jib2FyZC1pc250LXNob3dpbmctYW55LWRhdGEtd2hhdHMtd3JvbmciCiAgICAgICAgICAgICAgICA+dGhlIHNlY3Rpb24gb2YgdGhlIFJFQURNRSBkZXZvdGVkIHRvIG1pc3NpbmcgZGF0YSBwcm9ibGVtczwvYQogICAgICAgICAgICAgID4KICAgICAgICAgICAgICBhbmQgY29uc2lkZXIgZmlsaW5nIGFuIGlzc3VlIG9uIEdpdEh1Yi4KICAgICAgICAgICAgPC9wPgogICAgICAgICAgPC9kaXY+CiAgICAgICAgPC90ZW1wbGF0ZT4KICAgICAgICA8dGVtcGxhdGUgaXM9ImRvbS1pZiIgaWY9IltbIV9kYXRhTm90Rm91bmRdXSI+CiAgICAgICAgICA8dGYtdGFnLWZpbHRlcmVyIHRhZy1maWx0ZXI9Int7X3RhZ0ZpbHRlcn19Ij48L3RmLXRhZy1maWx0ZXJlcj4KICAgICAgICAgIDx0ZW1wbGF0ZSBpcz0iZG9tLXJlcGVhdCIgaXRlbXM9IltbX2NhdGVnb3JpZXNdXSIgYXM9ImNhdGVnb3J5Ij4KICAgICAgICAgICAgPHRmLWNhdGVnb3J5LXBhZ2luYXRlZC12aWV3CiAgICAgICAgICAgICAgY2F0ZWdvcnk9IltbY2F0ZWdvcnldXSIKICAgICAgICAgICAgICBpbml0aWFsLW9wZW5lZD0iW1tfc2hvdWxkT3BlbihpbmRleCldXSIKICAgICAgICAgICAgICBnZXQtY2F0ZWdvcnktaXRlbS1rZXk9IltbX2dldENhdGVnb3J5SXRlbUtleV1dIgogICAgICAgICAgICA+CiAgICAgICAgICAgICAgPHRlbXBsYXRlPgogICAgICAgICAgICAgICAgPHRmLXByLWN1cnZlLWNhcmQKICAgICAgICAgICAgICAgICAgYWN0aXZlPSJbW2FjdGl2ZV1dIgogICAgICAgICAgICAgICAgICBydW5zPSJbW2l0ZW0ucnVuc11dIgogICAgICAgICAgICAgICAgICB0YWc9IltbaXRlbS50YWddXSIKICAgICAgICAgICAgICAgICAgdGFnLW1ldGFkYXRhPSJbW190YWdNZXRhZGF0YShfcnVuVG9UYWdJbmZvLCBpdGVtLnJ1bnMsIGl0ZW0udGFnKV1dIgogICAgICAgICAgICAgICAgICByZXF1ZXN0LW1hbmFnZXI9IltbX3JlcXVlc3RNYW5hZ2VyXV0iCiAgICAgICAgICAgICAgICAgIHJ1bi10by1zdGVwLWNhcD0iW1tfcnVuVG9TdGVwXV0iCiAgICAgICAgICAgICAgICAgIG9uLWRhdGEtY2hhbmdlPSJbW19jcmVhdGVEYXRhQ2hhbmdlQ2FsbGJhY2soaXRlbS50YWcpXV0iCiAgICAgICAgICAgICAgICA+PC90Zi1wci1jdXJ2ZS1jYXJkPgogICAgICAgICAgICAgIDwvdGVtcGxhdGU+CiAgICAgICAgICAgIDwvdGYtY2F0ZWdvcnktcGFnaW5hdGVkLXZpZXc+CiAgICAgICAgICA8L3RlbXBsYXRlPgogICAgICAgIDwvdGVtcGxhdGU+CiAgICAgIDwvZGl2PgogICAgPC90Zi1kYXNoYm9hcmQtbGF5b3V0PgoKICAgIDxzdHlsZSBpbmNsdWRlPSJkYXNoYm9hcmQtc3R5bGUiPjwvc3R5bGU+CiAgICA8c3R5bGU+CiAgICAgIC5uby1kYXRhLXdhcm5pbmcgewogICAgICAgIG1heC13aWR0aDogNTQwcHg7CiAgICAgICAgbWFyZ2luOiA4MHB4IGF1dG8gMCBhdXRvOwogICAgICB9CgogICAgICAvKiogRG8gbm90IGxldCB0aGUgc3RlcHMgc2VsZWN0b3Igb2NjbHVkZSB0aGUgcnVuIHNlbGVjdG9yLiAqLwogICAgICAjc3RlcHMtc2VsZWN0b3ItY29udGFpbmVyIHsKICAgICAgICBtYXgtaGVpZ2h0OiA2MCU7CiAgICAgICAgb3ZlcmZsb3cteTogYXV0bzsKICAgICAgfQogICAgPC9zdHlsZT4KICBgLHQoW28oe3R5cGU6Qm9vbGVhbn0pLGUoImRlc2lnbjp0eXBlIixCb29sZWFuKV0sdkt0LnByb3RvdHlwZSwicmVsb2FkT25SZWFkeSIsdm9pZCAwKSx0KFtvKHt0eXBlOlN0cmluZ30pLGUoImRlc2lnbjp0eXBlIixTdHJpbmcpXSx2S3QucHJvdG90eXBlLCJfdGltZURpc3BsYXlUeXBlIix2b2lkIDApLHQoW28oe3R5cGU6QXJyYXl9KSxlKCJkZXNpZ246dHlwZSIsQXJyYXkpXSx2S3QucHJvdG90eXBlLCJfc2VsZWN0ZWRSdW5zIix2b2lkIDApLHQoW28oe3R5cGU6T2JqZWN0fSksZSgiZGVzaWduOnR5cGUiLE9iamVjdCldLHZLdC5wcm90b3R5cGUsIl9ydW5Ub1RhZ0luZm8iLHZvaWQgMCksdChbbyh7dHlwZTpPYmplY3R9KSxlKCJkZXNpZ246dHlwZSIsT2JqZWN0KV0sdkt0LnByb3RvdHlwZSwiX3RhZ1RvUnVuVG9EYXRhIix2b2lkIDApLHQoW28oe3R5cGU6T2JqZWN0LG5vdGlmeTohMH0pLGUoImRlc2lnbjp0eXBlIixPYmplY3QpXSx2S3QucHJvdG90eXBlLCJfcnVuVG9TdGVwIix2b2lkIDApLHQoW28oe3R5cGU6Qm9vbGVhbn0pLGUoImRlc2lnbjp0eXBlIixCb29sZWFuKV0sdkt0LnByb3RvdHlwZSwiX2RhdGFOb3RGb3VuZCIsdm9pZCAwKSx0KFtvKHt0eXBlOlN0cmluZ30pLGUoImRlc2lnbjp0eXBlIixTdHJpbmcpXSx2S3QucHJvdG90eXBlLCJfdGFnRmlsdGVyIix2b2lkIDApLHQoW28oe3R5cGU6Qm9vbGVhbn0pLGUoImRlc2lnbjp0eXBlIixCb29sZWFuKV0sdkt0LnByb3RvdHlwZSwiX2NhdGVnb3JpZXNEb21SZWFkeSIsdm9pZCAwKSx0KFtvKHt0eXBlOk9iamVjdH0pLGUoImRlc2lnbjp0eXBlIixPYmplY3QpXSx2S3QucHJvdG90eXBlLCJfZ2V0Q2F0ZWdvcnlJdGVtS2V5Iix2b2lkIDApLHQoW28oe3R5cGU6T2JqZWN0fSksZSgiZGVzaWduOnR5cGUiLGhyKV0sdkt0LnByb3RvdHlwZSwiX3JlcXVlc3RNYW5hZ2VyIix2b2lkIDApLHQoW28oe3R5cGU6TnVtYmVyLG5vdGlmeTohMH0pLGUoImRlc2lnbjp0eXBlIixOdW1iZXIpXSx2S3QucHJvdG90eXBlLCJfc3RlcCIsdm9pZCAwKSx0KFtzKCJfcnVuVG9UYWdJbmZvIiwiX3NlbGVjdGVkUnVucyIsIl90YWdGaWx0ZXIiLCJfY2F0ZWdvcmllc0RvbVJlYWR5IiksZSgiZGVzaWduOnR5cGUiLEFycmF5KSxlKCJkZXNpZ246cGFyYW10eXBlcyIsW10pXSx2S3QucHJvdG90eXBlLCJfY2F0ZWdvcmllcyIsbnVsbCksdChbcygiX3NlbGVjdGVkUnVucyIsIl9ydW5Ub1RhZ0luZm8iKSxlKCJkZXNpZ246dHlwZSIsQXJyYXkpLGUoImRlc2lnbjpwYXJhbXR5cGVzIixbXSldLHZLdC5wcm90b3R5cGUsIl9yZWxldmFudFNlbGVjdGVkUnVucyIsbnVsbCksdChbcygiX3RhZ1RvUnVuVG9EYXRhIiksZSgiZGVzaWduOnR5cGUiLE9iamVjdCksZSgiZGVzaWduOnBhcmFtdHlwZXMiLFtdKV0sdkt0LnByb3RvdHlwZSwiX3J1blRvQXZhaWxhYmxlVGltZUVudHJpZXMiLG51bGwpLHZLdD10KFtpKCJ0Zi1wci1jdXJ2ZS1kYXNoYm9hcmQiKV0sdkt0KTtsZXQgYkt0PWNsYXNzIGV4dGVuZHModHIoeWUpKXtjb25zdHJ1Y3Rvcigpe3N1cGVyKC4uLmFyZ3VtZW50cyksdGhpcy5faW5zdGFsbENvbW1hbmQ9InBpcCBpbnN0YWxsIC1VIHRlbnNvcmJvYXJkLXBsdWdpbi1wcm9maWxlIn1fY29weUluc3RhbGxDb21tYW5kKCl7cmV0dXJuIG4odGhpcyx2b2lkIDAsdm9pZCAwLChmdW5jdGlvbiooKXtjb25zdCB0PSgpPT5uKHRoaXMsdm9pZCAwLHZvaWQgMCwoZnVuY3Rpb24qKCl7dGhpcy4kLmNvbW1hbmRUZXh0YXJlYS5zZWxlY3QoKTt0cnl7eWllbGQgbmF2aWdhdG9yLmNsaXBib2FyZC53cml0ZVRleHQodGhpcy5faW5zdGFsbENvbW1hbmQpfWNhdGNoKHQpe2lmKCFkb2N1bWVudC5leGVjQ29tbWFuZCgiY29weSIpKXJldHVybiBQcm9taXNlLnJlamVjdCgpfX0pKSxlPXRoaXMuJC5jb3BpZWRNZXNzYWdlO3RyeXt5aWVsZCB0KCksZS5pbm5lclRleHQ9IkNvcGllZC4ifWNhdGNoKHQpe2UuaW5uZXJUZXh0PSJGYWlsZWQgdG8gY29weSB0byBjbGlwYm9hcmQuIn19KSl9X3JlbW92ZUNvcGllZE1lc3NhZ2UoKXt0aGlzLiQuY29waWVkTWVzc2FnZS5pbm5lclRleHQ9IiJ9fTtiS3QudGVtcGxhdGU9X2VgCiAgICA8ZGl2IGNsYXNzPSJtZXNzYWdlIj4KICAgICAgPGgzPlRoZSBwcm9maWxlIHBsdWdpbiBoYXMgbW92ZWQuPC9oMz4KICAgICAgPHA+CiAgICAgICAgUGxlYXNlIGluc3RhbGwgdGhlIG5ldyB2ZXJzaW9uIG9mIHRoZSBwcm9maWxlIHBsdWdpbiBmcm9tIFB5UEkgYnkKICAgICAgICBydW5uaW5nIHRoZSBmb2xsb3dpbmcgY29tbWFuZCBmcm9tIHRoZSBtYWNoaW5lIHJ1bm5pbmcgVGVuc29yQm9hcmQ6CiAgICAgIDwvcD4KICAgICAgPHRleHRhcmVhCiAgICAgICAgaWQ9ImNvbW1hbmRUZXh0YXJlYSIKICAgICAgICByZWFkb25seT0iIgogICAgICAgIHJvd3M9IjEiCiAgICAgICAgb24tYmx1cj0iX3JlbW92ZUNvcGllZE1lc3NhZ2UiCiAgICAgID4KW1tfaW5zdGFsbENvbW1hbmRdXTwvdGV4dGFyZWEKICAgICAgPgogICAgICA8ZGl2IGlkPSJjb3B5Q29udGFpbmVyIj4KICAgICAgICA8c3BhbiBpZD0iY29waWVkTWVzc2FnZSI+PC9zcGFuPgogICAgICAgIDxwYXBlci1idXR0b24gcmFpc2VkPSIiIG9uLXRhcD0iX2NvcHlJbnN0YWxsQ29tbWFuZCIKICAgICAgICAgID5Db3B5IHRvIGNsaXBib2FyZDwvcGFwZXItYnV0dG9uCiAgICAgICAgPgogICAgICA8L2Rpdj4KICAgIDwvZGl2PgoKICAgIDxzdHlsZT4KICAgICAgLm1lc3NhZ2UgewogICAgICAgIG1hcmdpbjogODBweCBhdXRvIDAgYXV0bzsKICAgICAgICBtYXgtd2lkdGg6IDU0MHB4OwogICAgICB9CiAgICAgICNjb21tYW5kVGV4dGFyZWEgewogICAgICAgIG1hcmdpbi10b3A6IDFleDsKICAgICAgICBwYWRkaW5nOiAxZXggMWVtOwogICAgICAgIHJlc2l6ZTogdmVydGljYWw7CiAgICAgICAgd2lkdGg6IDEwMCU7CiAgICAgIH0KICAgICAgI2NvcHlDb250YWluZXIgewogICAgICAgIGRpc3BsYXk6IGZsZXg7CiAgICAgIH0KICAgICAgI2NvcGllZE1lc3NhZ2UgewogICAgICAgIGFsaWduLXNlbGY6IGNlbnRlcjsKICAgICAgICBmbGV4LWdyb3c6IDE7CiAgICAgICAgZm9udC1zdHlsZTogaXRhbGljOwogICAgICAgIHBhZGRpbmctcmlnaHQ6IDFlbTsKICAgICAgICB0ZXh0LWFsaWduOiByaWdodDsKICAgICAgfQogICAgPC9zdHlsZT4KICBgLHQoW28oe3R5cGU6U3RyaW5nfSksZSgiZGVzaWduOnR5cGUiLFN0cmluZyldLGJLdC5wcm90b3R5cGUsIl9pbnN0YWxsQ29tbWFuZCIsdm9pZCAwKSxiS3Q9dChbaSgidGYtcHJvZmlsZS1yZWRpcmVjdC1kYXNoYm9hcmQiKV0sYkt0KTtsZXQgeEt0PWNsYXNzIGV4dGVuZHModHIoaGwpKXtjb25zdHJ1Y3Rvcigpe3N1cGVyKC4uLmFyZ3VtZW50cyksdGhpcy5yZWxvYWRPblJlYWR5PSEwLHRoaXMuX3Nob3dEb3dubG9hZExpbmtzPXpzKCJfc2hvd0Rvd25sb2FkTGlua3MiLHtkZWZhdWx0VmFsdWU6ITEsdXNlTG9jYWxTdG9yYWdlOiEwfSkuY2FsbCh0aGlzKSx0aGlzLl9zbW9vdGhpbmdXZWlnaHQ9VnMoIl9zbW9vdGhpbmdXZWlnaHQiLHtkZWZhdWx0VmFsdWU6LjZ9KS5jYWxsKHRoaXMpLHRoaXMuX2lnbm9yZVlPdXRsaWVycz16cygiX2lnbm9yZVlPdXRsaWVycyIse2RlZmF1bHRWYWx1ZTohMCx1c2VMb2NhbFN0b3JhZ2U6ITB9KS5jYWxsKHRoaXMpLHRoaXMuX3hUeXBlPVdndC5TVEVQLHRoaXMuX3NlbGVjdGVkUnVucz1bXSx0aGlzLl90YWdGaWx0ZXI9IiIsdGhpcy5fY2F0ZWdvcmllcz1bXSx0aGlzLl9nZXRDYXRlZ29yeUl0ZW1LZXk9dD0+dC50YWcsdGhpcy5fcmVxdWVzdE1hbmFnZXI9bmV3IGhyKDUwKSx0aGlzLl9zaG93RG93bmxvYWRMaW5rc09ic2VydmVyPURzKCJfc2hvd0Rvd25sb2FkTGlua3MiLHtkZWZhdWx0VmFsdWU6ITEsdXNlTG9jYWxTdG9yYWdlOiEwfSksdGhpcy5fc21vb3RoaW5nV2VpZ2h0T2JzZXJ2ZXI9anMoIl9zbW9vdGhpbmdXZWlnaHQiLHtkZWZhdWx0VmFsdWU6LjZ9KSx0aGlzLl9pZ25vcmVZT3V0bGllcnNPYnNlcnZlcj1EcygiX2lnbm9yZVlPdXRsaWVycyIse2RlZmF1bHRWYWx1ZTohMCx1c2VMb2NhbFN0b3JhZ2U6ITB9KX1nZXQgX3Ntb290aGluZ0VuYWJsZWQoKXtyZXR1cm4gdGhpcy5fc21vb3RoaW5nV2VpZ2h0PjB9X2dldENhdGVnb3J5S2V5KHQpe3JldHVybiB0Lm1ldGFkYXRhLnR5cGU9PXZyLlNFQVJDSF9SRVNVTFRTPyIiOnQubmFtZX1fc2hvdWxkT3Blbih0KXtyZXR1cm4gdDw9Mn1yZWFkeSgpe3N1cGVyLnJlYWR5KCksdGhpcy5yZWxvYWRPblJlYWR5JiZ0aGlzLnJlbG9hZCgpfXJlbG9hZCgpe3RoaXMuX2ZldGNoVGFncygpLnRoZW4oKCgpPT57dGhpcy5fcmVsb2FkQ2hhcnRzKCl9KSl9X2ZldGNoVGFncygpe2NvbnN0IHQ9Z3IoKS5wbHVnaW5Sb3V0ZSgic2NhbGFycyIsIi90YWdzIik7cmV0dXJuIHRoaXMuX3JlcXVlc3RNYW5hZ2VyLnJlcXVlc3QodCkudGhlbigodD0+e2lmKHdlLmlzRXF1YWwodCx0aGlzLl9ydW5Ub1RhZ0luZm8pKXJldHVybjtjb25zdCBlPW9yKHdlLm1hcFZhbHVlcyh0LCh0PT5PYmplY3Qua2V5cyh0KSkpKTt0aGlzLnNldCgiX2RhdGFOb3RGb3VuZCIsMD09PWUubGVuZ3RoKSx0aGlzLnNldCgiX3J1blRvVGFnSW5mbyIsdCksdGhpcy5hc3luYygoKCk9Pnt0aGlzLnNldCgiX2NhdGVnb3JpZXNEb21SZWFkeSIsITApfSkpfSkpfV9yZWxvYWRDaGFydHMoKXt0aGlzLnJvb3QucXVlcnlTZWxlY3RvckFsbCgidGYtc2NhbGFyLWNhcmQiKS5mb3JFYWNoKCh0PT57dC5yZWxvYWQoKX0pKX1fdXBkYXRlQ2F0ZWdvcmllcygpe3ZhciB0PXRoaXMuX3NlbGVjdGVkUnVucztsZXQgZSxuPXRoaXMuX3RhZ0ZpbHRlcjtlPXhyKHdlLm1hcFZhbHVlcyh0aGlzLl9ydW5Ub1RhZ0luZm8sKHQ9Pk9iamVjdC5rZXlzKHQpKSksdCxuKSxlLmZvckVhY2goKHQ9Pnt0Lml0ZW1zPXQuaXRlbXMubWFwKCh0PT4oe3RhZzp0LnRhZyxzZXJpZXM6dC5ydW5zLm1hcCgoZT0+KHtydW46ZSx0YWc6dC50YWd9KSkpfSkpKX0pKSx0aGlzLnVwZGF0ZUFycmF5UHJvcCgiX2NhdGVnb3JpZXMiLGUsdGhpcy5fZ2V0Q2F0ZWdvcnlLZXkpfV90YWdNZXRhZGF0YSh0LGUsbil7Y29uc3QgaT10Lm5hbWUscj1uLnRhZyxvPXt9O24uc2VyaWVzLmZvckVhY2goKCh7cnVuOnR9KT0+e29bdF09ZVt0XVtyXX0pKTtjb25zdCBhPXIucmVwbGFjZSgvXC9zY2FsYXJfc3VtbWFyeSQvLCIiKTtsZXR7ZGVzY3JpcHRpb246cyxkaXNwbGF5TmFtZTpsfT1JTyhvLGEpO3JldHVybiB0Lm1ldGFkYXRhLnR5cGU9PXZyLlBSRUZJWF9HUk9VUCYmbC5zdGFydHNXaXRoKGkrIi8iKSYmKGw9bC5zbGljZShpLmxlbmd0aCsxKSkse2Rlc2NyaXB0aW9uOnMsZGlzcGxheU5hbWU6bH19fTt4S3QudGVtcGxhdGU9X2VgCiAgICA8dGYtZGFzaGJvYXJkLWxheW91dD4KICAgICAgPGRpdiBjbGFzcz0ic2lkZWJhciIgc2xvdD0ic2lkZWJhciI+CiAgICAgICAgPGRpdiBjbGFzcz0ic2V0dGluZ3MiPgogICAgICAgICAgPGRpdiBjbGFzcz0ic2lkZWJhci1zZWN0aW9uIj4KICAgICAgICAgICAgPGRpdiBjbGFzcz0ibGluZS1pdGVtIj4KICAgICAgICAgICAgICA8cGFwZXItY2hlY2tib3gKICAgICAgICAgICAgICAgIGlkPSJzaG93LWRvd25sb2FkLWxpbmtzIgogICAgICAgICAgICAgICAgY2hlY2tlZD0ie3tfc2hvd0Rvd25sb2FkTGlua3N9fSIKICAgICAgICAgICAgICAgID5TaG93IGRhdGEgZG93bmxvYWQgbGlua3M8L3BhcGVyLWNoZWNrYm94CiAgICAgICAgICAgICAgPgogICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgPGRpdiBjbGFzcz0ibGluZS1pdGVtIj4KICAgICAgICAgICAgICA8cGFwZXItY2hlY2tib3gKICAgICAgICAgICAgICAgIGlkPSJpZ25vcmUteS1vdXRsaWVyIgogICAgICAgICAgICAgICAgY2hlY2tlZD0ie3tfaWdub3JlWU91dGxpZXJzfX0iCiAgICAgICAgICAgICAgICA+SWdub3JlIG91dGxpZXJzIGluIGNoYXJ0IHNjYWxpbmc8L3BhcGVyLWNoZWNrYm94CiAgICAgICAgICAgICAgPgogICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgPGRpdiBpZD0idG9vbHRpcC1zb3J0aW5nIj4KICAgICAgICAgICAgICA8ZGl2PlRvb2x0aXAgc29ydGluZyBtZXRob2Q6PC9kaXY+CiAgICAgICAgICAgICAgPHBhcGVyLWRyb3Bkb3duLW1lbnUKICAgICAgICAgICAgICAgIG5vLWxhYmVsLWZsb2F0CiAgICAgICAgICAgICAgICBzZWxlY3RlZC1pdGVtLWxhYmVsPSJ7e190b29sdGlwU29ydGluZ01ldGhvZH19IgogICAgICAgICAgICAgID4KICAgICAgICAgICAgICAgIDxwYXBlci1saXN0Ym94CiAgICAgICAgICAgICAgICAgIGNsYXNzPSJkcm9wZG93bi1jb250ZW50IgogICAgICAgICAgICAgICAgICBzZWxlY3RlZD0iMCIKICAgICAgICAgICAgICAgICAgc2xvdD0iZHJvcGRvd24tY29udGVudCIKICAgICAgICAgICAgICAgID4KICAgICAgICAgICAgICAgICAgPHBhcGVyLWl0ZW0+ZGVmYXVsdDwvcGFwZXItaXRlbT4KICAgICAgICAgICAgICAgICAgPHBhcGVyLWl0ZW0+ZGVzY2VuZGluZzwvcGFwZXItaXRlbT4KICAgICAgICAgICAgICAgICAgPHBhcGVyLWl0ZW0+YXNjZW5kaW5nPC9wYXBlci1pdGVtPgogICAgICAgICAgICAgICAgICA8cGFwZXItaXRlbT5uZWFyZXN0PC9wYXBlci1pdGVtPgogICAgICAgICAgICAgICAgPC9wYXBlci1saXN0Ym94PgogICAgICAgICAgICAgIDwvcGFwZXItZHJvcGRvd24tbWVudT4KICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICA8L2Rpdj4KICAgICAgICAgIDxkaXYgY2xhc3M9InNpZGViYXItc2VjdGlvbiI+CiAgICAgICAgICAgIDx0Zi1zbW9vdGhpbmctaW5wdXQKICAgICAgICAgICAgICB3ZWlnaHQ9Int7X3Ntb290aGluZ1dlaWdodH19IgogICAgICAgICAgICAgIHN0ZXA9IjAuMDAxIgogICAgICAgICAgICAgIG1pbj0iMCIKICAgICAgICAgICAgICBtYXg9IjAuOTk5IgogICAgICAgICAgICA+PC90Zi1zbW9vdGhpbmctaW5wdXQ+CiAgICAgICAgICA8L2Rpdj4KICAgICAgICAgIDxkaXYgY2xhc3M9InNpZGViYXItc2VjdGlvbiI+CiAgICAgICAgICAgIDx0Zi1vcHRpb24tc2VsZWN0b3IKICAgICAgICAgICAgICBpZD0ieC10eXBlLXNlbGVjdG9yIgogICAgICAgICAgICAgIG5hbWU9Ikhvcml6b250YWwgQXhpcyIKICAgICAgICAgICAgICBzZWxlY3RlZC1pZD0ie3tfeFR5cGV9fSIKICAgICAgICAgICAgPgogICAgICAgICAgICAgIDxwYXBlci1idXR0b24gaWQ9InN0ZXAiPnN0ZXA8L3BhcGVyLWJ1dHRvbgogICAgICAgICAgICAgID48IS0tCiAgICAgICAgICAgIC0tPjxwYXBlci1idXR0b24gaWQ9InJlbGF0aXZlIj5yZWxhdGl2ZTwvcGFwZXItYnV0dG9uCiAgICAgICAgICAgICAgPjwhLS0KICAgICAgICAgICAgLS0+PHBhcGVyLWJ1dHRvbiBpZD0id2FsbF90aW1lIj53YWxsPC9wYXBlci1idXR0b24+CiAgICAgICAgICAgIDwvdGYtb3B0aW9uLXNlbGVjdG9yPgogICAgICAgICAgPC9kaXY+CiAgICAgICAgPC9kaXY+CiAgICAgICAgPGRpdiBjbGFzcz0ic2lkZWJhci1zZWN0aW9uIHJ1bnMtc2VsZWN0b3IiPgogICAgICAgICAgPHRmLXJ1bnMtc2VsZWN0b3Igc2VsZWN0ZWQtcnVucz0ie3tfc2VsZWN0ZWRSdW5zfX0iPgogICAgICAgICAgPC90Zi1ydW5zLXNlbGVjdG9yPgogICAgICAgIDwvZGl2PgogICAgICA8L2Rpdj4KICAgICAgPGRpdiBjbGFzcz0iY2VudGVyIiBzbG90PSJjZW50ZXIiPgogICAgICAgIDx0ZW1wbGF0ZSBpcz0iZG9tLWlmIiBpZj0iW1tfZGF0YU5vdEZvdW5kXV0iPgogICAgICAgICAgPGRpdiBjbGFzcz0ibm8tZGF0YS13YXJuaW5nIj4KICAgICAgICAgICAgPGgzPk5vIHNjYWxhciBkYXRhIHdhcyBmb3VuZC48L2gzPgogICAgICAgICAgICA8cD5Qcm9iYWJsZSBjYXVzZXM6PC9wPgogICAgICAgICAgICA8dWw+CiAgICAgICAgICAgICAgPGxpPllvdSBoYXZlbuKAmXQgd3JpdHRlbiBhbnkgc2NhbGFyIGRhdGEgdG8geW91ciBldmVudCBmaWxlcy48L2xpPgogICAgICAgICAgICAgIDxsaT5UZW5zb3JCb2FyZCBjYW7igJl0IGZpbmQgeW91ciBldmVudCBmaWxlcy48L2xpPgogICAgICAgICAgICA8L3VsPgoKICAgICAgICAgICAgPHA+CiAgICAgICAgICAgICAgSWYgeW914oCZcmUgbmV3IHRvIHVzaW5nIFRlbnNvckJvYXJkLCBhbmQgd2FudCB0byBmaW5kIG91dCBob3cgdG8KICAgICAgICAgICAgICBhZGQgZGF0YSBhbmQgc2V0IHVwIHlvdXIgZXZlbnQgZmlsZXMsIGNoZWNrIG91dCB0aGUKICAgICAgICAgICAgICA8YQogICAgICAgICAgICAgICAgaHJlZj0iaHR0cHM6Ly9naXRodWIuY29tL3RlbnNvcmZsb3cvdGVuc29yYm9hcmQvYmxvYi9tYXN0ZXIvUkVBRE1FLm1kIgogICAgICAgICAgICAgICAgPlJFQURNRTwvYQogICAgICAgICAgICAgID4KICAgICAgICAgICAgICBhbmQgcGVyaGFwcyB0aGUKICAgICAgICAgICAgICA8YQogICAgICAgICAgICAgICAgaHJlZj0iaHR0cHM6Ly93d3cudGVuc29yZmxvdy5vcmcvZ2V0X3N0YXJ0ZWQvc3VtbWFyaWVzX2FuZF90ZW5zb3Jib2FyZCIKICAgICAgICAgICAgICAgID5UZW5zb3JCb2FyZCB0dXRvcmlhbDwvYQogICAgICAgICAgICAgID4uCiAgICAgICAgICAgIDwvcD4KCiAgICAgICAgICAgIDxwPgogICAgICAgICAgICAgIElmIHlvdSB0aGluayBUZW5zb3JCb2FyZCBpcyBjb25maWd1cmVkIHByb3Blcmx5LCBwbGVhc2Ugc2VlCiAgICAgICAgICAgICAgPGEKICAgICAgICAgICAgICAgIGhyZWY9Imh0dHBzOi8vZ2l0aHViLmNvbS90ZW5zb3JmbG93L3RlbnNvcmJvYXJkL2Jsb2IvbWFzdGVyL1JFQURNRS5tZCNteS10ZW5zb3Jib2FyZC1pc250LXNob3dpbmctYW55LWRhdGEtd2hhdHMtd3JvbmciCiAgICAgICAgICAgICAgICA+dGhlIHNlY3Rpb24gb2YgdGhlIFJFQURNRSBkZXZvdGVkIHRvIG1pc3NpbmcgZGF0YSBwcm9ibGVtczwvYQogICAgICAgICAgICAgID4KICAgICAgICAgICAgICBhbmQgY29uc2lkZXIgZmlsaW5nIGFuIGlzc3VlIG9uIEdpdEh1Yi4KICAgICAgICAgICAgPC9wPgogICAgICAgICAgPC9kaXY+CiAgICAgICAgPC90ZW1wbGF0ZT4KICAgICAgICA8dGVtcGxhdGUgaXM9ImRvbS1pZiIgaWY9IltbIV9kYXRhTm90Rm91bmRdXSI+CiAgICAgICAgICA8dGYtdGFnLWZpbHRlcmVyIHRhZy1maWx0ZXI9Int7X3RhZ0ZpbHRlcn19Ij48L3RmLXRhZy1maWx0ZXJlcj4KICAgICAgICAgIDx0ZW1wbGF0ZSBpcz0iZG9tLXJlcGVhdCIgaXRlbXM9IltbX2NhdGVnb3JpZXNdXSIgYXM9ImNhdGVnb3J5Ij4KICAgICAgICAgICAgPHRmLWNhdGVnb3J5LXBhZ2luYXRlZC12aWV3CiAgICAgICAgICAgICAgY2F0ZWdvcnk9IltbY2F0ZWdvcnldXSIKICAgICAgICAgICAgICBpbml0aWFsLW9wZW5lZD0iW1tfc2hvdWxkT3BlbihpbmRleCldXSIKICAgICAgICAgICAgICBnZXQtY2F0ZWdvcnktaXRlbS1rZXk9IltbX2dldENhdGVnb3J5SXRlbUtleV1dIgogICAgICAgICAgICA+CiAgICAgICAgICAgICAgPHRlbXBsYXRlPgogICAgICAgICAgICAgICAgPHRmLXNjYWxhci1jYXJkCiAgICAgICAgICAgICAgICAgIGFjdGl2ZT0iW1thY3RpdmVdXSIKICAgICAgICAgICAgICAgICAgZGF0YS10by1sb2FkPSJbW2l0ZW0uc2VyaWVzXV0iCiAgICAgICAgICAgICAgICAgIGlnbm9yZS15LW91dGxpZXJzPSJbW19pZ25vcmVZT3V0bGllcnNdXSIKICAgICAgICAgICAgICAgICAgbXVsdGktZXhwZXJpbWVudHM9IltbX2dldE11bHRpRXhwZXJpbWVudHMoZGF0YVNlbGVjdGlvbildXSIKICAgICAgICAgICAgICAgICAgcmVxdWVzdC1tYW5hZ2VyPSJbW19yZXF1ZXN0TWFuYWdlcl1dIgogICAgICAgICAgICAgICAgICBzaG93LWRvd25sb2FkLWxpbmtzPSJbW19zaG93RG93bmxvYWRMaW5rc11dIgogICAgICAgICAgICAgICAgICBzbW9vdGhpbmctZW5hYmxlZD0iW1tfc21vb3RoaW5nRW5hYmxlZF1dIgogICAgICAgICAgICAgICAgICBzbW9vdGhpbmctd2VpZ2h0PSJbW19zbW9vdGhpbmdXZWlnaHRdXSIKICAgICAgICAgICAgICAgICAgdGFnLW1ldGFkYXRhPSJbW190YWdNZXRhZGF0YShjYXRlZ29yeSwgX3J1blRvVGFnSW5mbywgaXRlbSldXSIKICAgICAgICAgICAgICAgICAgdGFnPSJbW2l0ZW0udGFnXV0iCiAgICAgICAgICAgICAgICAgIHRvb2x0aXAtc29ydGluZy1tZXRob2Q9IltbX3Rvb2x0aXBTb3J0aW5nTWV0aG9kXV0iCiAgICAgICAgICAgICAgICAgIHgtdHlwZT0iW1tfeFR5cGVdXSIKICAgICAgICAgICAgICAgICAgYmF0Y2gtc2l6ZT0iW1tmZWF0dXJlRmxhZ3Muc2NhbGFyc0JhdGNoU2l6ZV1dIgogICAgICAgICAgICAgICAgICBpbi1jb2xhYj0iW1tmZWF0dXJlRmxhZ3MuaW5Db2xhYl1dIgogICAgICAgICAgICAgICAgPjwvdGYtc2NhbGFyLWNhcmQ+CiAgICAgICAgICAgICAgPC90ZW1wbGF0ZT4KICAgICAgICAgICAgPC90Zi1jYXRlZ29yeS1wYWdpbmF0ZWQtdmlldz4KICAgICAgICAgIDwvdGVtcGxhdGU+CiAgICAgICAgPC90ZW1wbGF0ZT4KICAgICAgPC9kaXY+CiAgICA8L3RmLWRhc2hib2FyZC1sYXlvdXQ+CgogICAgPHN0eWxlIGluY2x1ZGU9ImRhc2hib2FyZC1zdHlsZSI+PC9zdHlsZT4KICAgIDxzdHlsZT4KICAgICAgI3Rvb2x0aXAtc29ydGluZyB7CiAgICAgICAgYWxpZ24taXRlbXM6IGNlbnRlcjsKICAgICAgICBkaXNwbGF5OiBmbGV4OwogICAgICAgIGZvbnQtc2l6ZTogMTRweDsKICAgICAgICBtYXJnaW4tdG9wOiAxNXB4OwogICAgICB9CgogICAgICAjdG9vbHRpcC1zb3J0aW5nIHBhcGVyLWRyb3Bkb3duLW1lbnUgewogICAgICAgIG1hcmdpbi1sZWZ0OiAxMHB4OwogICAgICAgIC0tcGFwZXItaW5wdXQtY29udGFpbmVyLWZvY3VzLWNvbG9yOiB2YXIoLS10Yi1vcmFuZ2Utc3Ryb25nKTsKICAgICAgICB3aWR0aDogMTA1cHg7CiAgICAgIH0KCiAgICAgIC5saW5lLWl0ZW0gewogICAgICAgIGRpc3BsYXk6IGJsb2NrOwogICAgICAgIHBhZGRpbmctdG9wOiA1cHg7CiAgICAgIH0KICAgICAgLm5vLWRhdGEtd2FybmluZyB7CiAgICAgICAgbWF4LXdpZHRoOiA1NDBweDsKICAgICAgICBtYXJnaW46IDgwcHggYXV0byAwIGF1dG87CiAgICAgIH0KICAgICAgLmNlbnRlciB7CiAgICAgICAgb3ZlcmZsb3cteDogaGlkZGVuOwogICAgICB9CiAgICA8L3N0eWxlPgogIGAsdChbbyh7dHlwZTpCb29sZWFufSksZSgiZGVzaWduOnR5cGUiLEJvb2xlYW4pXSx4S3QucHJvdG90eXBlLCJyZWxvYWRPblJlYWR5Iix2b2lkIDApLHQoW28oe3R5cGU6T2JqZWN0fSksZSgiZGVzaWduOnR5cGUiLE9iamVjdCldLHhLdC5wcm90b3R5cGUsImZlYXR1cmVGbGFncyIsdm9pZCAwKSx0KFtvKHt0eXBlOkJvb2xlYW4sbm90aWZ5OiEwLG9ic2VydmVyOiJfc2hvd0Rvd25sb2FkTGlua3NPYnNlcnZlciJ9KSxlKCJkZXNpZ246dHlwZSIsQm9vbGVhbildLHhLdC5wcm90b3R5cGUsIl9zaG93RG93bmxvYWRMaW5rcyIsdm9pZCAwKSx0KFtvKHt0eXBlOk51bWJlcixub3RpZnk6ITAsb2JzZXJ2ZXI6Il9zbW9vdGhpbmdXZWlnaHRPYnNlcnZlciJ9KSxlKCJkZXNpZ246dHlwZSIsTnVtYmVyKV0seEt0LnByb3RvdHlwZSwiX3Ntb290aGluZ1dlaWdodCIsdm9pZCAwKSx0KFtvKHt0eXBlOkJvb2xlYW4sb2JzZXJ2ZXI6Il9pZ25vcmVZT3V0bGllcnNPYnNlcnZlciJ9KSxlKCJkZXNpZ246dHlwZSIsQm9vbGVhbildLHhLdC5wcm90b3R5cGUsIl9pZ25vcmVZT3V0bGllcnMiLHZvaWQgMCksdChbbyh7dHlwZTpTdHJpbmd9KSxlKCJkZXNpZ246dHlwZSIsU3RyaW5nKV0seEt0LnByb3RvdHlwZSwiX3hUeXBlIix2b2lkIDApLHQoW28oe3R5cGU6QXJyYXl9KSxlKCJkZXNpZ246dHlwZSIsQXJyYXkpXSx4S3QucHJvdG90eXBlLCJfc2VsZWN0ZWRSdW5zIix2b2lkIDApLHQoW28oe3R5cGU6T2JqZWN0fSksZSgiZGVzaWduOnR5cGUiLE9iamVjdCldLHhLdC5wcm90b3R5cGUsIl9ydW5Ub1RhZ0luZm8iLHZvaWQgMCksdChbbyh7dHlwZTpCb29sZWFufSksZSgiZGVzaWduOnR5cGUiLEJvb2xlYW4pXSx4S3QucHJvdG90eXBlLCJfZGF0YU5vdEZvdW5kIix2b2lkIDApLHQoW28oe3R5cGU6U3RyaW5nfSksZSgiZGVzaWduOnR5cGUiLFN0cmluZyldLHhLdC5wcm90b3R5cGUsIl90YWdGaWx0ZXIiLHZvaWQgMCksdChbbyh7dHlwZTpCb29sZWFufSksZSgiZGVzaWduOnR5cGUiLEJvb2xlYW4pXSx4S3QucHJvdG90eXBlLCJfY2F0ZWdvcmllc0RvbVJlYWR5Iix2b2lkIDApLHQoW28oe3R5cGU6QXJyYXl9KSxlKCJkZXNpZ246dHlwZSIsQXJyYXkpXSx4S3QucHJvdG90eXBlLCJfY2F0ZWdvcmllcyIsdm9pZCAwKSx0KFtvKHt0eXBlOk9iamVjdH0pLGUoImRlc2lnbjp0eXBlIixPYmplY3QpXSx4S3QucHJvdG90eXBlLCJfZ2V0Q2F0ZWdvcnlJdGVtS2V5Iix2b2lkIDApLHQoW28oe3R5cGU6T2JqZWN0fSksZSgiZGVzaWduOnR5cGUiLGhyKV0seEt0LnByb3RvdHlwZSwiX3JlcXVlc3RNYW5hZ2VyIix2b2lkIDApLHQoW3MoIl9zbW9vdGhpbmdXZWlnaHQiKSxlKCJkZXNpZ246dHlwZSIsQm9vbGVhbiksZSgiZGVzaWduOnBhcmFtdHlwZXMiLFtdKV0seEt0LnByb3RvdHlwZSwiX3Ntb290aGluZ0VuYWJsZWQiLG51bGwpLHQoW2EoIl9ydW5Ub1RhZ0luZm8iLCJfc2VsZWN0ZWRSdW5zIiwiX3RhZ0ZpbHRlciIsIl9jYXRlZ29yaWVzRG9tUmVhZHkiKSxlKCJkZXNpZ246dHlwZSIsRnVuY3Rpb24pLGUoImRlc2lnbjpwYXJhbXR5cGVzIixbXSksZSgiZGVzaWduOnJldHVybnR5cGUiLHZvaWQgMCldLHhLdC5wcm90b3R5cGUsIl91cGRhdGVDYXRlZ29yaWVzIixudWxsKSx4S3Q9dChbaSgidGYtc2NhbGFyLWRhc2hib2FyZCIpXSx4S3QpO2xldCB3S3Q9Y2xhc3MgZXh0ZW5kcyh0cih5ZSkpe2NvbnN0cnVjdG9yKCl7c3VwZXIoLi4uYXJndW1lbnRzKSx0aGlzLl90ZXh0cz1bXSx0aGlzLl9jYW5jZWxsZXI9bmV3IEVPfWdldCBfcnVuQ29sb3IoKXtyZXR1cm4geE8odGhpcy5ydW4pfV9jaGFuZ2VSdW5Db2xvcigpe3RoaXMudXBkYXRlU3R5bGVzKHsiLS10Yi10ZXh0LWxvYWRlci1vdXRsaW5lIjp0aGlzLl9ydW5Db2xvcn0pfWF0dGFjaGVkKCl7dGhpcy5yZWxvYWQoKX1yZWxvYWQoKXtpZighdGhpcy5pc0F0dGFjaGVkKXJldHVybjt0aGlzLl9jYW5jZWxsZXIuY2FuY2VsQWxsKCk7Y29uc3QgdD1PTyhncigpLnBsdWdpblJvdXRlKCJ0ZXh0IiwiL3RleHQiKSx7dGFnOnRoaXMudGFnLHJ1bjp0aGlzLnJ1bn0pLGU9dGhpcy5fY2FuY2VsbGVyLmNhbmNlbGxhYmxlKCh0PT57aWYodC5jYW5jZWxsZWQpcmV0dXJuO2NvbnN0IGU9dC52YWx1ZS5tYXAoKHQ9Pih7d2FsbF90aW1lOm5ldyBEYXRlKDFlMyp0LndhbGxfdGltZSksc3RlcDp0LnN0ZXAsdGV4dDp0LnRleHR9KSkpO3RoaXMuc2V0KCJfdGV4dHMiLGUuc2xpY2UoKS5yZXZlcnNlKCkpfSkpO3RoaXMucmVxdWVzdE1hbmFnZXIucmVxdWVzdCh0KS50aGVuKGUpfV9mb3JtYXRTdGVwKHQpe3JldHVybiBweSgiLCIpKHQpfX07d0t0LnRlbXBsYXRlPV9lYAogICAgPHRmLWNhcmQtaGVhZGluZyBydW49IltbcnVuXV0iIHRhZz0iW1t0YWddXSIgY29sb3I9IltbX3J1bkNvbG9yXV0iPgogICAgPC90Zi1jYXJkLWhlYWRpbmc+CiAgICA8cGFwZXItbWF0ZXJpYWwKICAgICAgZWxldmF0aW9uPSIxIgogICAgICBpZD0ic3RlcHMtY29udGFpbmVyIgogICAgICBjbGFzcz0iY29udGFpbmVyIHNjcm9sbGJhciIKICAgID4KICAgICAgPHRlbXBsYXRlIGlzPSJkb20tcmVwZWF0IiBpdGVtcz0iW1tfdGV4dHNdXSI+CiAgICAgICAgPHBhcGVyLW1hdGVyaWFsIGVsZXZhdGlvbj0iMSIgY2xhc3M9InN0ZXAtY29udGFpbmVyIj4KICAgICAgICAgIHN0ZXAgPHNwYW4gY2xhc3M9InN0ZXAtdmFsdWUiPltbX2Zvcm1hdFN0ZXAoaXRlbS5zdGVwKV1dPC9zcGFuPgogICAgICAgIDwvcGFwZXItbWF0ZXJpYWw+CiAgICAgICAgPHBhcGVyLW1hdGVyaWFsIGVsZXZhdGlvbj0iMSIgY2xhc3M9InRleHQiPgogICAgICAgICAgPHRmLW1hcmtkb3duLXZpZXcgaHRtbD0iW1tpdGVtLnRleHRdXSI+PC90Zi1tYXJrZG93bi12aWV3PgogICAgICAgIDwvcGFwZXItbWF0ZXJpYWw+CiAgICAgIDwvdGVtcGxhdGU+CiAgICA8L3BhcGVyLW1hdGVyaWFsPgogICAgPHN0eWxlIGluY2x1ZGU9InNjcm9sbGJhci1zdHlsZSI+PC9zdHlsZT4KICAgIDxzdHlsZT4KICAgICAgOmhvc3QgewogICAgICAgIGRpc3BsYXk6IGZsZXg7CiAgICAgICAgZmxleC1kaXJlY3Rpb246IGNvbHVtbjsKICAgICAgICB3aWR0aDogMTAwJTsKICAgICAgICBoZWlnaHQ6IGF1dG87CiAgICAgICAgbWFyZ2luLXJpZ2h0OiAxMHB4OwogICAgICAgIG1hcmdpbi1ib3R0b206IDE1cHg7CiAgICAgIH0KICAgICAgLnNjcm9sbGJhciB7CiAgICAgICAgd2lsbC1jaGFuZ2U6IHRyYW5zZm9ybTsKICAgICAgfQogICAgICAjc3RlcHMtY29udGFpbmVyIHsKICAgICAgICBib3JkZXItcmFkaXVzOiAzcHg7CiAgICAgICAgYm9yZGVyOiAycHggc29saWQgLyogY29sb3IgY29tcHV0ZWQgYW5kIHNldCBhcyBpbmxpbmUgc3R5bGUgKi87CiAgICAgICAgZGlzcGxheTogYmxvY2s7CiAgICAgICAgbWF4LWhlaWdodDogNTAwcHg7CiAgICAgICAgb3ZlcmZsb3c6IGF1dG87CiAgICAgICAgcGFkZGluZzogMTBweDsKICAgICAgICBib3JkZXItY29sb3I6IHZhcigtLXRiLXRleHQtbG9hZGVyLW91dGxpbmUpOwogICAgICB9CiAgICAgIC50ZXh0IHsKICAgICAgICBiYWNrZ3JvdW5kLWNvbG9yOiB3aGl0ZTsKICAgICAgICBib3JkZXItcmFkaXVzOiAwIDNweCAzcHggM3B4OwogICAgICAgIHBhZGRpbmc6IDVweDsKICAgICAgICB3b3JkLWJyZWFrOiBicmVhay13b3JkOwogICAgICB9CiAgICAgIC5zdGVwLWNvbnRhaW5lciB7CiAgICAgICAgYmFja2dyb3VuZC1jb2xvcjogdmFyKC0tdGItdWktbGlnaHQtYWNjZW50KTsKICAgICAgICBib3JkZXItYm90dG9tOiBub25lOwogICAgICAgIGJvcmRlci1yYWRpdXM6IDNweCAzcHggMCAwOwogICAgICAgIGJvcmRlcjogMXB4IHNvbGlkICNjY2M7CiAgICAgICAgZGlzcGxheTogaW5saW5lLWJsb2NrOwogICAgICAgIGZvbnQtc2l6ZTogMTJweDsKICAgICAgICBmb250LXN0eWxlOiBpdGFsaWM7CiAgICAgICAgbWFyZ2luLWxlZnQ6IC0xcHg7IC8qIHRvIGNvcnJlY3QgZm9yIGJvcmRlciAqLwogICAgICAgIHBhZGRpbmc6IDNweDsKICAgICAgfQogICAgICAuc3RlcC1jb250YWluZXI6bm90KDpmaXJzdC1jaGlsZCkgewogICAgICAgIG1hcmdpbi10b3A6IDE1cHg7CiAgICAgIH0KCiAgICAgIHRmLWNhcmQtaGVhZGluZyB7CiAgICAgICAgbWFyZ2luLWJvdHRvbTogMTBweDsKICAgICAgfQogICAgPC9zdHlsZT4KICBgLHQoW28oe3R5cGU6U3RyaW5nfSksZSgiZGVzaWduOnR5cGUiLFN0cmluZyldLHdLdC5wcm90b3R5cGUsInJ1biIsdm9pZCAwKSx0KFtvKHt0eXBlOlN0cmluZ30pLGUoImRlc2lnbjp0eXBlIixTdHJpbmcpXSx3S3QucHJvdG90eXBlLCJ0YWciLHZvaWQgMCksdChbbyh7dHlwZTpBcnJheX0pLGUoImRlc2lnbjp0eXBlIixBcnJheSldLHdLdC5wcm90b3R5cGUsIl90ZXh0cyIsdm9pZCAwKSx0KFtvKHt0eXBlOk9iamVjdH0pLGUoImRlc2lnbjp0eXBlIixocildLHdLdC5wcm90b3R5cGUsInJlcXVlc3RNYW5hZ2VyIix2b2lkIDApLHQoW28oe3R5cGU6T2JqZWN0fSksZSgiZGVzaWduOnR5cGUiLEVPKV0sd0t0LnByb3RvdHlwZSwiX2NhbmNlbGxlciIsdm9pZCAwKSx0KFtzKCJydW4iKSxlKCJkZXNpZ246dHlwZSIsU3RyaW5nKSxlKCJkZXNpZ246cGFyYW10eXBlcyIsW10pXSx3S3QucHJvdG90eXBlLCJfcnVuQ29sb3IiLG51bGwpLHQoW2EoIl9ydW5Db2xvciIpLGUoImRlc2lnbjp0eXBlIixGdW5jdGlvbiksZSgiZGVzaWduOnBhcmFtdHlwZXMiLFtdKSxlKCJkZXNpZ246cmV0dXJudHlwZSIsdm9pZCAwKV0sd0t0LnByb3RvdHlwZSwiX2NoYW5nZVJ1bkNvbG9yIixudWxsKSx3S3Q9dChbaSgidGYtdGV4dC1sb2FkZXIiKV0sd0t0KTtsZXQgU0t0PWNsYXNzIGV4dGVuZHModHIoeWUpKXtjb25zdHJ1Y3Rvcigpe3N1cGVyKC4uLmFyZ3VtZW50cyksdGhpcy5yZWxvYWRPblJlYWR5PSEwLHRoaXMuX3JlcXVlc3RNYW5hZ2VyPW5ldyBocn1yZWFkeSgpe3N1cGVyLnJlYWR5KCksdGhpcy5yZWxvYWRPblJlYWR5JiZ0aGlzLnJlbG9hZCgpfXJlbG9hZCgpe3RoaXMuX2ZldGNoVGFncygpLnRoZW4oKCgpPT57dGhpcy5fcmVsb2FkVGV4dHMoKX0pKX1fc2hvdWxkT3Blbih0KXtyZXR1cm4gdDw9Mn1fZmV0Y2hUYWdzKCl7Y29uc3QgdD1ncigpLnBsdWdpblJvdXRlKCJ0ZXh0IiwiL3RhZ3MiKTtyZXR1cm4gdGhpcy5fcmVxdWVzdE1hbmFnZXIucmVxdWVzdCh0KS50aGVuKCh0PT57aWYod2UuaXNFcXVhbCh0LHRoaXMuX3J1blRvVGFnKSlyZXR1cm47Y29uc3QgZT1vcih0KTt0aGlzLnNldCgiX2RhdGFOb3RGb3VuZCIsMD09PWUubGVuZ3RoKSx0aGlzLnNldCgiX3J1blRvVGFnIix0KSx0aGlzLmFzeW5jKCgoKT0+e3RoaXMuc2V0KCJfY2F0ZWdvcmllc0RvbVJlYWR5IiwhMCl9KSl9KSl9X3JlbG9hZFRleHRzKCl7dGhpcy5yb290LnF1ZXJ5U2VsZWN0b3JBbGwoInRmLXRleHQtbG9hZGVyIikuZm9yRWFjaCgodD0+e3QucmVsb2FkKCl9KSl9Z2V0IF9jYXRlZ29yaWVzKCl7cmV0dXJuIFNyKHRoaXMuX3J1blRvVGFnLHRoaXMuX3NlbGVjdGVkUnVucyx0aGlzLl90YWdGaWx0ZXIpfX07U0t0LnRlbXBsYXRlPV9lYAogICAgPHRmLWRhc2hib2FyZC1sYXlvdXQ+CiAgICAgIDxkaXYgY2xhc3M9InNpZGViYXIiIHNsb3Q9InNpZGViYXIiPgogICAgICAgIDxkaXYgY2xhc3M9InNpZGViYXItc2VjdGlvbiBydW5zLXNlbGVjdG9yIj4KICAgICAgICAgIDx0Zi1ydW5zLXNlbGVjdG9yIHNlbGVjdGVkLXJ1bnM9Int7X3NlbGVjdGVkUnVuc319Ij4KICAgICAgICAgIDwvdGYtcnVucy1zZWxlY3Rvcj4KICAgICAgICA8L2Rpdj4KICAgICAgPC9kaXY+CiAgICAgIDxkaXYgY2xhc3M9ImNlbnRlciIgc2xvdD0iY2VudGVyIj4KICAgICAgICA8dGVtcGxhdGUgaXM9ImRvbS1pZiIgaWY9IltbX2RhdGFOb3RGb3VuZF1dIj4KICAgICAgICAgIDxkaXYgY2xhc3M9Im5vLWRhdGEtd2FybmluZyI+CiAgICAgICAgICAgIDxoMz5ObyB0ZXh0IGRhdGEgd2FzIGZvdW5kLjwvaDM+CiAgICAgICAgICAgIDxwPlByb2JhYmxlIGNhdXNlczo8L3A+CiAgICAgICAgICAgIDx1bD4KICAgICAgICAgICAgICA8bGk+WW91IGhhdmVu4oCZdCB3cml0dGVuIGFueSB0ZXh0IGRhdGEgdG8geW91ciBldmVudCBmaWxlcy48L2xpPgogICAgICAgICAgICAgIDxsaT5UZW5zb3JCb2FyZCBjYW7igJl0IGZpbmQgeW91ciBldmVudCBmaWxlcy48L2xpPgogICAgICAgICAgICA8L3VsPgoKICAgICAgICAgICAgPHA+CiAgICAgICAgICAgICAgSWYgeW914oCZcmUgbmV3IHRvIHVzaW5nIFRlbnNvckJvYXJkLCBhbmQgd2FudCB0byBmaW5kIG91dCBob3cgdG8KICAgICAgICAgICAgICBhZGQgZGF0YSBhbmQgc2V0IHVwIHlvdXIgZXZlbnQgZmlsZXMsIGNoZWNrIG91dCB0aGUKICAgICAgICAgICAgICA8YQogICAgICAgICAgICAgICAgaHJlZj0iaHR0cHM6Ly9naXRodWIuY29tL3RlbnNvcmZsb3cvdGVuc29yYm9hcmQvYmxvYi9tYXN0ZXIvUkVBRE1FLm1kIgogICAgICAgICAgICAgICAgPlJFQURNRTwvYQogICAgICAgICAgICAgID4KICAgICAgICAgICAgICBhbmQgcGVyaGFwcyB0aGUKICAgICAgICAgICAgICA8YQogICAgICAgICAgICAgICAgaHJlZj0iaHR0cHM6Ly93d3cudGVuc29yZmxvdy5vcmcvZ2V0X3N0YXJ0ZWQvc3VtbWFyaWVzX2FuZF90ZW5zb3Jib2FyZCIKICAgICAgICAgICAgICAgID5UZW5zb3JCb2FyZCB0dXRvcmlhbDwvYQogICAgICAgICAgICAgID4uCiAgICAgICAgICAgIDwvcD4KCiAgICAgICAgICAgIDxwPgogICAgICAgICAgICAgIElmIHlvdSB0aGluayBUZW5zb3JCb2FyZCBpcyBjb25maWd1cmVkIHByb3Blcmx5LCBwbGVhc2Ugc2VlCiAgICAgICAgICAgICAgPGEKICAgICAgICAgICAgICAgIGhyZWY9Imh0dHBzOi8vZ2l0aHViLmNvbS90ZW5zb3JmbG93L3RlbnNvcmJvYXJkL2Jsb2IvbWFzdGVyL1JFQURNRS5tZCNteS10ZW5zb3Jib2FyZC1pc250LXNob3dpbmctYW55LWRhdGEtd2hhdHMtd3JvbmciCiAgICAgICAgICAgICAgICA+dGhlIHNlY3Rpb24gb2YgdGhlIFJFQURNRSBkZXZvdGVkIHRvIG1pc3NpbmcgZGF0YSBwcm9ibGVtczwvYQogICAgICAgICAgICAgID4KICAgICAgICAgICAgICBhbmQgY29uc2lkZXIgZmlsaW5nIGFuIGlzc3VlIG9uIEdpdEh1Yi4KICAgICAgICAgICAgPC9wPgogICAgICAgICAgPC9kaXY+CiAgICAgICAgPC90ZW1wbGF0ZT4KICAgICAgICA8dGVtcGxhdGUgaXM9ImRvbS1pZiIgaWY9IltbIV9kYXRhTm90Rm91bmRdXSI+CiAgICAgICAgICA8dGYtdGFnLWZpbHRlcmVyIHRhZy1maWx0ZXI9Int7X3RhZ0ZpbHRlcn19Ij48L3RmLXRhZy1maWx0ZXJlcj4KICAgICAgICAgIDx0ZW1wbGF0ZSBpcz0iZG9tLXJlcGVhdCIgaXRlbXM9IltbX2NhdGVnb3JpZXNdXSIgYXM9ImNhdGVnb3J5Ij4KICAgICAgICAgICAgPHRmLWNhdGVnb3J5LXBhZ2luYXRlZC12aWV3CiAgICAgICAgICAgICAgY2F0ZWdvcnk9IltbY2F0ZWdvcnldXSIKICAgICAgICAgICAgICBpbml0aWFsLW9wZW5lZD0iW1tfc2hvdWxkT3BlbihpbmRleCldXSIKICAgICAgICAgICAgPgogICAgICAgICAgICAgIDx0ZW1wbGF0ZT4KICAgICAgICAgICAgICAgIDx0Zi10ZXh0LWxvYWRlcgogICAgICAgICAgICAgICAgICBhY3RpdmU9IltbYWN0aXZlXV0iCiAgICAgICAgICAgICAgICAgIHRhZz0iW1tpdGVtLnRhZ11dIgogICAgICAgICAgICAgICAgICBydW49IltbaXRlbS5ydW5dXSIKICAgICAgICAgICAgICAgICAgcmVxdWVzdC1tYW5hZ2VyPSJbW19yZXF1ZXN0TWFuYWdlcl1dIgogICAgICAgICAgICAgICAgPjwvdGYtdGV4dC1sb2FkZXI+CiAgICAgICAgICAgICAgPC90ZW1wbGF0ZT4KICAgICAgICAgICAgPC90Zi1jYXRlZ29yeS1wYWdpbmF0ZWQtdmlldz4KICAgICAgICAgIDwvdGVtcGxhdGU+CiAgICAgICAgPC90ZW1wbGF0ZT4KICAgICAgPC9kaXY+CiAgICA8L3RmLWRhc2hib2FyZC1sYXlvdXQ+CiAgICA8c3R5bGUgaW5jbHVkZT0iZGFzaGJvYXJkLXN0eWxlIj48L3N0eWxlPgogICAgPHN0eWxlPgogICAgICAubm8tZGF0YS13YXJuaW5nIHsKICAgICAgICBtYXgtd2lkdGg6IDU0MHB4OwogICAgICAgIG1hcmdpbjogODBweCBhdXRvIDAgYXV0bzsKICAgICAgfQogICAgPC9zdHlsZT4KICBgLHQoW28oe3R5cGU6Qm9vbGVhbn0pLGUoImRlc2lnbjp0eXBlIixCb29sZWFuKV0sU0t0LnByb3RvdHlwZSwicmVsb2FkT25SZWFkeSIsdm9pZCAwKSx0KFtvKHt0eXBlOkFycmF5fSksZSgiZGVzaWduOnR5cGUiLEFycmF5KV0sU0t0LnByb3RvdHlwZSwiX3NlbGVjdGVkUnVucyIsdm9pZCAwKSx0KFtvKHt0eXBlOk9iamVjdH0pLGUoImRlc2lnbjp0eXBlIixPYmplY3QpXSxTS3QucHJvdG90eXBlLCJfcnVuVG9UYWciLHZvaWQgMCksdChbbyh7dHlwZTpCb29sZWFufSksZSgiZGVzaWduOnR5cGUiLEJvb2xlYW4pXSxTS3QucHJvdG90eXBlLCJfZGF0YU5vdEZvdW5kIix2b2lkIDApLHQoW28oe3R5cGU6U3RyaW5nfSksZSgiZGVzaWduOnR5cGUiLFN0cmluZyldLFNLdC5wcm90b3R5cGUsIl90YWdGaWx0ZXIiLHZvaWQgMCksdChbbyh7dHlwZTpCb29sZWFufSksZSgiZGVzaWduOnR5cGUiLEJvb2xlYW4pXSxTS3QucHJvdG90eXBlLCJfY2F0ZWdvcmllc0RvbVJlYWR5Iix2b2lkIDApLHQoW28oe3R5cGU6T2JqZWN0fSksZSgiZGVzaWduOnR5cGUiLE9iamVjdCldLFNLdC5wcm90b3R5cGUsIl9yZXF1ZXN0TWFuYWdlciIsdm9pZCAwKSx0KFtzKCJfcnVuVG9UYWciLCJfc2VsZWN0ZWRSdW5zIiwiX3RhZ0ZpbHRlciIsIl9jYXRlZ29yaWVzRG9tUmVhZHkiKSxlKCJkZXNpZ246dHlwZSIsQXJyYXkpLGUoImRlc2lnbjpwYXJhbXR5cGVzIixbXSldLFNLdC5wcm90b3R5cGUsIl9jYXRlZ29yaWVzIixudWxsKSxTS3Q9dChbaSgidGYtdGV4dC1kYXNoYm9hcmQiKV0sU0t0KTtjbGFzcyBNS3R7Y29uc3RydWN0b3IodCl7dGhpcy5wb3J0PXQsdGhpcy5pZD0wLHRoaXMucmVzcG9uc2VXYWl0cz1uZXcgTWFwLHRoaXMubGlzdGVuZXJzPW5ldyBNYXAsdGhpcy5wb3J0LmFkZEV2ZW50TGlzdGVuZXIoIm1lc3NhZ2UiLCh0PT50aGlzLm9uTWVzc2FnZSh0KSkpfWxpc3Rlbih0LGUpe3RoaXMubGlzdGVuZXJzLnNldCh0LGUpfXVubGlzdGVuKHQpe3RoaXMubGlzdGVuZXJzLmRlbGV0ZSh0KX1vbk1lc3NhZ2UodCl7cmV0dXJuIG4odGhpcyx2b2lkIDAsdm9pZCAwLChmdW5jdGlvbiooKXtjb25zdCBlPUpTT04ucGFyc2UodC5kYXRhKSxuPWUudHlwZSxpPWUuaWQscj1lLnBheWxvYWQsbz1lLmVycm9yO2lmKGUuaXNSZXBseSl7aWYoIXRoaXMucmVzcG9uc2VXYWl0cy5oYXMoaSkpcmV0dXJuO2NvbnN0e3Jlc29sdmU6dCxyZWplY3Q6ZX09dGhpcy5yZXNwb25zZVdhaXRzLmdldChpKTtyZXR1cm4gdGhpcy5yZXNwb25zZVdhaXRzLmRlbGV0ZShpKSx2b2lkKG8/ZShuZXcgRXJyb3IobykpOnQocikpfWxldCBhPW51bGwscz1udWxsO2lmKHRoaXMubGlzdGVuZXJzLmhhcyhuKSl7Y29uc3QgdD10aGlzLmxpc3RlbmVycy5nZXQobik7dHJ5e2E9eWllbGQgdChyKX1jYXRjaCh0KXtzPXR9fXRoaXMucG9zdE1lc3NhZ2Uoe3R5cGU6bixpZDppLHBheWxvYWQ6YSxlcnJvcjpzLGlzUmVwbHk6ITB9KX0pKX1wb3N0TWVzc2FnZSh0KXt0aGlzLnBvcnQucG9zdE1lc3NhZ2UoSlNPTi5zdHJpbmdpZnkodCkpfXNlbmRNZXNzYWdlKHQsZSl7Y29uc3Qgbj10aGlzLmlkKys7cmV0dXJuIHRoaXMucG9zdE1lc3NhZ2Uoe3R5cGU6dCxpZDpuLHBheWxvYWQ6ZSxlcnJvcjpudWxsLGlzUmVwbHk6ITF9KSxuZXcgUHJvbWlzZSgoKHQsZSk9Pnt0aGlzLnJlc3BvbnNlV2FpdHMuc2V0KG4se3Jlc29sdmU6dCxyZWplY3Q6ZX0pfSkpfX1mdW5jdGlvbiBFS3QodCxlKXtUS3Quc2V0KHQse3BsdWdpbk5hbWU6ZX0pfWNvbnN0IFRLdD1uZXcgV2Vha01hcCxBS3Q9bmV3IFNldCxDS3Q9bmV3IE1hcCxrS3Q9bmV3IE1hcDtmdW5jdGlvbiBMS3QodCxlKXtyZXR1cm4gbj0+e2NvbnN0IGk9a0t0LmdldChlKSxyPVRLdC5nZXQoaSl8fG51bGw7cmV0dXJuIHQocixuKX19ZnVuY3Rpb24gUEt0KHQsZSl7Q0t0LnNldCh0LGUpO2Zvcihjb25zdCBuIG9mIEFLdCl7Y29uc3QgaT1MS3QoZSxuKTtuLmxpc3Rlbih0LGkpfX13aW5kb3cuYWRkRXZlbnRMaXN0ZW5lcigibWVzc2FnZSIsKHQ9PntpZigiZXhwZXJpbWVudGFsLmJvb3RzdHJhcCIhPT10LmRhdGEpcmV0dXJuO2NvbnN0IGU9dC5wb3J0c1swXTtpZighZSlyZXR1cm47Y29uc3Qgbj10LnNvdXJjZT90LnNvdXJjZS5mcmFtZUVsZW1lbnQ6bnVsbDtuJiYoZnVuY3Rpb24gaSh0LGUpe2NvbnN0IG49bmV3IE1LdCh0KTtBS3QuYWRkKG4pLGtLdC5zZXQobixlKSx0LnN0YXJ0KCk7Zm9yKGNvbnN0W3QsZV1vZiBDS3Qpe2NvbnN0IGk9TEt0KGUsbik7bi5saXN0ZW4odCxpKX19KShlLG4pfSkpLFBLdCgiZXhwZXJpbWVudGFsLkdldFVSTFBsdWdpbkRhdGEiLCh0PT57aWYoIXQpcmV0dXJuO2NvbnN0IGU9YHAuJHt0LnBsdWdpbk5hbWV9LmAsbj17fSxpPUNzKCk7Zm9yKGxldCB0IGluIGkpdC5zdGFydHNXaXRoKGUpJiYoblt0LnN1YnN0cmluZyhlLmxlbmd0aCldPWlbdF0pO3JldHVybiBufSkpLFBLdCgiZXhwZXJpbWVudGFsLkdldFJ1bnMiLCgoKT0+dmwuZ2V0UnVucygpKSksdmwuYWRkTGlzdGVuZXIoKCgpPT4oZnVuY3Rpb24gdChlLG4pe2Zvcihjb25zdCB0IG9mIEFLdClrS3QuZ2V0KHQpLmlzQ29ubmVjdGVkfHwoQUt0LmRlbGV0ZSh0KSxrS3QuZGVsZXRlKHQpKTtjb25zdCBpPVsuLi5BS3RdLm1hcCgodD0+dC5zZW5kTWVzc2FnZShlLG4pKSk7cmV0dXJuIFByb21pc2UuYWxsKGkpfSkoImV4cGVyaW1lbnRhbC5SdW5zQ2hhbmdlZCIsdmwuZ2V0UnVucygpKSkpO2xldCBJS3Q9Y2xhc3MgZXh0ZW5kcyB5ZXtjb25zdHJ1Y3Rvcigpe3N1cGVyKC4uLmFyZ3VtZW50cyksdGhpcy5fdGVtcGxhdGU9bnVsbCx0aGlzLnJlZ2lzdGVyUGx1Z2luSWZyYW1lPUVLdH19O0lLdD10KFtpKCJ0Zi1leHBlcmltZW50YWwtcGx1Z2luLWhvc3QtbGliIildLElLdCk7bGV0IE5LdD1jbGFzcyBleHRlbmRzIHlle2NvbnN0cnVjdG9yKCl7c3VwZXIoLi4uYXJndW1lbnRzKSx0aGlzLl90ZW1wbGF0ZT1udWxsLHRoaXMudGZfYmFja2VuZD1ZX3R9fTtOS3Q9dChbaSgidGYtYmFja2VuZCIpXSxOS3QpO2xldCBPS3Q9Y2xhc3MgZXh0ZW5kcyB5ZXtjb25zdHJ1Y3Rvcigpe3N1cGVyKC4uLmFyZ3VtZW50cyksdGhpcy5fdGVtcGxhdGU9bnVsbCx0aGlzLnRmX2dsb2JhbHM9TXN9fTtPS3Q9dChbaSgidGYtZ2xvYmFscyIpXSxPS3QpO2xldCBSS3Q9Y2xhc3MgZXh0ZW5kcyB5ZXtjb25zdHJ1Y3Rvcigpe3N1cGVyKC4uLmFyZ3VtZW50cyksdGhpcy5fdGVtcGxhdGU9bnVsbCx0aGlzLnRmX3N0b3JhZ2U9aXl0fX07Ukt0PXQoW2koInRmLXN0b3JhZ2UiKV0sUkt0KTt2YXIgekt0PU9iamVjdC5mcmVlemUoe19fcHJvdG9fXzpudWxsLGFkZExpbWl0TGlzdGVuZXI6bGwscmVtb3ZlTGltaXRMaXN0ZW5lcjpjbCxnZXRMaW1pdDp1bCxzZXRMaW1pdDpmdW5jdGlvbiBES3QodCl7aWYodCE9PU1hdGguZmxvb3IodCkpdGhyb3cgbmV3IEVycm9yKGBsaW1pdCBtdXN0IGJlIGFuIGludGVnZXIsIGJ1dCBnb3Q6ICR7dH1gKTtpZih0PD0wKXRocm93IG5ldyBFcnJvcihgbGltaXQgbXVzdCBiZSBwb3NpdGl2ZSwgYnV0IGdvdDogJHt0fWApO3QhPT1hbCYmKGFsPXQsRnMob2wsYWwse3VzZUxvY2FsU3RvcmFnZTohMH0pLHNsLmZvckVhY2goKHQ9Pnt0KCl9KSkpfSxUZkRvbVJlcGVhdDpkbH0pO2xldCBCS3Q9Y2xhc3MgZXh0ZW5kcyB5ZXtjb25zdHJ1Y3Rvcigpe3N1cGVyKC4uLmFyZ3VtZW50cyksdGhpcy5fdGVtcGxhdGU9bnVsbCx0aGlzLnRmX3BhZ2luYXRlZF92aWV3PXpLdH19O0JLdD10KFtpKCJ0Zi1wYWdpbmF0ZWQtdmlldy1zdG9yZSIpXSxCS3QpO2xldCBIS3Q9Y2xhc3MgZXh0ZW5kcyB5ZXtjb25zdHJ1Y3Rvcigpe3N1cGVyKC4uLmFyZ3VtZW50cyksdGhpcy5fdGVtcGxhdGU9bnVsbCx0aGlzLnJ1bnNDb2xvclNjYWxlPXhPfX07SEt0PXQoW2koInRmLWNvbG9yLXNjYWxlIildLEhLdCl9KSgpOwoKIShmdW5jdGlvbigpe2Z1bmN0aW9uIHQodCl7cmV0dXJuImZ1bmN0aW9uIj09dHlwZW9mIHR9bGV0IG49ITE7Y29uc3QgZT17UHJvbWlzZTp2b2lkIDAsc2V0IHVzZURlcHJlY2F0ZWRTeW5jaHJvbm91c0Vycm9ySGFuZGxpbmcodCl7aWYodCl7Y29uc3QgdD1uZXcgRXJyb3I7Y29uc29sZS53YXJuKCJERVBSRUNBVEVEISBSeEpTIHdhcyBzZXQgdG8gdXNlIGRlcHJlY2F0ZWQgc3luY2hyb25vdXMgZXJyb3IgaGFuZGxpbmcgYmVoYXZpb3IgYnkgY29kZSBhdDogXG4iK3Quc3RhY2spfWVsc2UgbiYmY29uc29sZS5sb2coIlJ4SlM6IEJhY2sgdG8gYSBiZXR0ZXIgZXJyb3IgYmVoYXZpb3IuIFRoYW5rIHlvdS4gPDMiKTtuPXR9LGdldCB1c2VEZXByZWNhdGVkU3luY2hyb25vdXNFcnJvckhhbmRsaW5nKCl7cmV0dXJuIG59fTtmdW5jdGlvbiBhKHQpe3NldFRpbWVvdXQoKCgpPT57dGhyb3cgdH0pLDApfWNvbnN0IG89e2Nsb3NlZDohMCxuZXh0KHQpe30sZXJyb3IodCl7aWYoZS51c2VEZXByZWNhdGVkU3luY2hyb25vdXNFcnJvckhhbmRsaW5nKXRocm93IHQ7YSh0KX0sY29tcGxldGUoKXt9fSxyPUFycmF5LmlzQXJyYXl8fCh0PT50JiYibnVtYmVyIj09dHlwZW9mIHQubGVuZ3RoKTtmdW5jdGlvbiBpKHQpe3JldHVybiBudWxsIT09dCYmIm9iamVjdCI9PXR5cGVvZiB0fWNvbnN0IGM9KCgpPT57ZnVuY3Rpb24gdCh0KXtyZXR1cm4gRXJyb3IuY2FsbCh0aGlzKSx0aGlzLm1lc3NhZ2U9dD9gJHt0Lmxlbmd0aH0gZXJyb3JzIG9jY3VycmVkIGR1cmluZyB1bnN1YnNjcmlwdGlvbjpcbiR7dC5tYXAoKCh0LG4pPT5gJHtuKzF9KSAke3QudG9TdHJpbmcoKX1gKSkuam9pbigiXG4gICIpfWA6IiIsdGhpcy5uYW1lPSJVbnN1YnNjcmlwdGlvbkVycm9yIix0aGlzLmVycm9ycz10LHRoaXN9cmV0dXJuIHQucHJvdG90eXBlPU9iamVjdC5jcmVhdGUoRXJyb3IucHJvdG90eXBlKSx0fSkoKTtjbGFzcyBze2NvbnN0cnVjdG9yKHQpe3RoaXMuY2xvc2VkPSExLHRoaXMuX3BhcmVudE9yUGFyZW50cz1udWxsLHRoaXMuX3N1YnNjcmlwdGlvbnM9bnVsbCx0JiYodGhpcy5fdW5zdWJzY3JpYmU9dCl9dW5zdWJzY3JpYmUoKXtsZXQgbjtpZih0aGlzLmNsb3NlZClyZXR1cm47bGV0e19wYXJlbnRPclBhcmVudHM6ZSxfdW5zdWJzY3JpYmU6YSxfc3Vic2NyaXB0aW9uczpvfT10aGlzO2lmKHRoaXMuY2xvc2VkPSEwLHRoaXMuX3BhcmVudE9yUGFyZW50cz1udWxsLHRoaXMuX3N1YnNjcmlwdGlvbnM9bnVsbCxlIGluc3RhbmNlb2YgcyllLnJlbW92ZSh0aGlzKTtlbHNlIGlmKG51bGwhPT1lKWZvcihsZXQgdD0wO3Q8ZS5sZW5ndGg7Kyt0KWVbdF0ucmVtb3ZlKHRoaXMpO2lmKHQoYSkpdHJ5e2EuY2FsbCh0aGlzKX1jYXRjaCh0KXtuPXQgaW5zdGFuY2VvZiBjP2wodC5lcnJvcnMpOlt0XX1pZihyKG8pKXtsZXQgdD0tMSxlPW8ubGVuZ3RoO2Zvcig7Kyt0PGU7KXtjb25zdCBlPW9bdF07aWYoaShlKSl0cnl7ZS51bnN1YnNjcmliZSgpfWNhdGNoKHQpe249bnx8W10sdCBpbnN0YW5jZW9mIGM/bj1uLmNvbmNhdChsKHQuZXJyb3JzKSk6bi5wdXNoKHQpfX19aWYobil0aHJvdyBuZXcgYyhuKX1hZGQodCl7bGV0IG49dDtpZighdClyZXR1cm4gcy5FTVBUWTtzd2l0Y2godHlwZW9mIHQpe2Nhc2UiZnVuY3Rpb24iOm49bmV3IHModCk7Y2FzZSJvYmplY3QiOmlmKG49PT10aGlzfHxuLmNsb3NlZHx8ImZ1bmN0aW9uIiE9dHlwZW9mIG4udW5zdWJzY3JpYmUpcmV0dXJuIG47aWYodGhpcy5jbG9zZWQpcmV0dXJuIG4udW5zdWJzY3JpYmUoKSxuO2lmKCEobiBpbnN0YW5jZW9mIHMpKXtjb25zdCB0PW47bj1uZXcgcyxuLl9zdWJzY3JpcHRpb25zPVt0XX1icmVhaztkZWZhdWx0OnRocm93IG5ldyBFcnJvcigidW5yZWNvZ25pemVkIHRlYXJkb3duICIrdCsiIGFkZGVkIHRvIFN1YnNjcmlwdGlvbi4iKX1sZXR7X3BhcmVudE9yUGFyZW50czplfT1uO2lmKG51bGw9PT1lKW4uX3BhcmVudE9yUGFyZW50cz10aGlzO2Vsc2UgaWYoZSBpbnN0YW5jZW9mIHMpe2lmKGU9PT10aGlzKXJldHVybiBuO24uX3BhcmVudE9yUGFyZW50cz1bZSx0aGlzXX1lbHNle2lmKC0xIT09ZS5pbmRleE9mKHRoaXMpKXJldHVybiBuO2UucHVzaCh0aGlzKX1jb25zdCBhPXRoaXMuX3N1YnNjcmlwdGlvbnM7cmV0dXJuIG51bGw9PT1hP3RoaXMuX3N1YnNjcmlwdGlvbnM9W25dOmEucHVzaChuKSxufXJlbW92ZSh0KXtjb25zdCBuPXRoaXMuX3N1YnNjcmlwdGlvbnM7aWYobil7Y29uc3QgZT1uLmluZGV4T2YodCk7LTEhPT1lJiZuLnNwbGljZShlLDEpfX19ZnVuY3Rpb24gbCh0KXtyZXR1cm4gdC5yZWR1Y2UoKCh0LG4pPT50LmNvbmNhdChuIGluc3RhbmNlb2YgYz9uLmVycm9yczpuKSksW10pfXMuRU1QVFk9KGZ1bmN0aW9uKHQpe3JldHVybiB0LmNsb3NlZD0hMCx0fSkobmV3IHMpO2NvbnN0IG09ImZ1bmN0aW9uIj09dHlwZW9mIFN5bWJvbD9TeW1ib2woInJ4U3Vic2NyaWJlciIpOiJAQHJ4U3Vic2NyaWJlcl8iK01hdGgucmFuZG9tKCk7Y2xhc3MgZCBleHRlbmRzIHN7Y29uc3RydWN0b3IodCxuLGUpe3N3aXRjaChzdXBlcigpLHRoaXMuc3luY0Vycm9yVmFsdWU9bnVsbCx0aGlzLnN5bmNFcnJvclRocm93bj0hMSx0aGlzLnN5bmNFcnJvclRocm93YWJsZT0hMSx0aGlzLmlzU3RvcHBlZD0hMSxhcmd1bWVudHMubGVuZ3RoKXtjYXNlIDA6dGhpcy5kZXN0aW5hdGlvbj1vO2JyZWFrO2Nhc2UgMTppZighdCl7dGhpcy5kZXN0aW5hdGlvbj1vO2JyZWFrfWlmKCJvYmplY3QiPT10eXBlb2YgdCl7dCBpbnN0YW5jZW9mIGQ/KHRoaXMuc3luY0Vycm9yVGhyb3dhYmxlPXQuc3luY0Vycm9yVGhyb3dhYmxlLHRoaXMuZGVzdGluYXRpb249dCx0LmFkZCh0aGlzKSk6KHRoaXMuc3luY0Vycm9yVGhyb3dhYmxlPSEwLHRoaXMuZGVzdGluYXRpb249bmV3IGcodGhpcyx0KSk7YnJlYWt9ZGVmYXVsdDp0aGlzLnN5bmNFcnJvclRocm93YWJsZT0hMCx0aGlzLmRlc3RpbmF0aW9uPW5ldyBnKHRoaXMsdCxuLGUpfX1bbV0oKXtyZXR1cm4gdGhpc31zdGF0aWMgY3JlYXRlKHQsbixlKXtjb25zdCBhPW5ldyBkKHQsbixlKTtyZXR1cm4gYS5zeW5jRXJyb3JUaHJvd2FibGU9ITEsYX1uZXh0KHQpe3RoaXMuaXNTdG9wcGVkfHx0aGlzLl9uZXh0KHQpfWVycm9yKHQpe3RoaXMuaXNTdG9wcGVkfHwodGhpcy5pc1N0b3BwZWQ9ITAsdGhpcy5fZXJyb3IodCkpfWNvbXBsZXRlKCl7dGhpcy5pc1N0b3BwZWR8fCh0aGlzLmlzU3RvcHBlZD0hMCx0aGlzLl9jb21wbGV0ZSgpKX11bnN1YnNjcmliZSgpe3RoaXMuY2xvc2VkfHwodGhpcy5pc1N0b3BwZWQ9ITAsc3VwZXIudW5zdWJzY3JpYmUoKSl9X25leHQodCl7dGhpcy5kZXN0aW5hdGlvbi5uZXh0KHQpfV9lcnJvcih0KXt0aGlzLmRlc3RpbmF0aW9uLmVycm9yKHQpLHRoaXMudW5zdWJzY3JpYmUoKX1fY29tcGxldGUoKXt0aGlzLmRlc3RpbmF0aW9uLmNvbXBsZXRlKCksdGhpcy51bnN1YnNjcmliZSgpfV91bnN1YnNjcmliZUFuZFJlY3ljbGUoKXtjb25zdHtfcGFyZW50T3JQYXJlbnRzOnR9PXRoaXM7cmV0dXJuIHRoaXMuX3BhcmVudE9yUGFyZW50cz1udWxsLHRoaXMudW5zdWJzY3JpYmUoKSx0aGlzLmNsb3NlZD0hMSx0aGlzLmlzU3RvcHBlZD0hMSx0aGlzLl9wYXJlbnRPclBhcmVudHM9dCx0aGlzfX1jbGFzcyBnIGV4dGVuZHMgZHtjb25zdHJ1Y3RvcihuLGUsYSxyKXtsZXQgaTtzdXBlcigpLHRoaXMuX3BhcmVudFN1YnNjcmliZXI9bjtsZXQgYz10aGlzO3QoZSk/aT1lOmUmJihpPWUubmV4dCxhPWUuZXJyb3Iscj1lLmNvbXBsZXRlLGUhPT1vJiYoYz1PYmplY3QuY3JlYXRlKGUpLHQoYy51bnN1YnNjcmliZSkmJnRoaXMuYWRkKGMudW5zdWJzY3JpYmUuYmluZChjKSksYy51bnN1YnNjcmliZT10aGlzLnVuc3Vic2NyaWJlLmJpbmQodGhpcykpKSx0aGlzLl9jb250ZXh0PWMsdGhpcy5fbmV4dD1pLHRoaXMuX2Vycm9yPWEsdGhpcy5fY29tcGxldGU9cn1uZXh0KHQpe2lmKCF0aGlzLmlzU3RvcHBlZCYmdGhpcy5fbmV4dCl7Y29uc3R7X3BhcmVudFN1YnNjcmliZXI6bn09dGhpcztlLnVzZURlcHJlY2F0ZWRTeW5jaHJvbm91c0Vycm9ySGFuZGxpbmcmJm4uc3luY0Vycm9yVGhyb3dhYmxlP3RoaXMuX190cnlPclNldEVycm9yKG4sdGhpcy5fbmV4dCx0KSYmdGhpcy51bnN1YnNjcmliZSgpOnRoaXMuX190cnlPclVuc3ViKHRoaXMuX25leHQsdCl9fWVycm9yKHQpe2lmKCF0aGlzLmlzU3RvcHBlZCl7Y29uc3R7X3BhcmVudFN1YnNjcmliZXI6bn09dGhpcyx7dXNlRGVwcmVjYXRlZFN5bmNocm9ub3VzRXJyb3JIYW5kbGluZzpvfT1lO2lmKHRoaXMuX2Vycm9yKW8mJm4uc3luY0Vycm9yVGhyb3dhYmxlPyh0aGlzLl9fdHJ5T3JTZXRFcnJvcihuLHRoaXMuX2Vycm9yLHQpLHRoaXMudW5zdWJzY3JpYmUoKSk6KHRoaXMuX190cnlPclVuc3ViKHRoaXMuX2Vycm9yLHQpLHRoaXMudW5zdWJzY3JpYmUoKSk7ZWxzZSBpZihuLnN5bmNFcnJvclRocm93YWJsZSlvPyhuLnN5bmNFcnJvclZhbHVlPXQsbi5zeW5jRXJyb3JUaHJvd249ITApOmEodCksdGhpcy51bnN1YnNjcmliZSgpO2Vsc2V7aWYodGhpcy51bnN1YnNjcmliZSgpLG8pdGhyb3cgdDthKHQpfX19Y29tcGxldGUoKXtpZighdGhpcy5pc1N0b3BwZWQpe2NvbnN0e19wYXJlbnRTdWJzY3JpYmVyOnR9PXRoaXM7aWYodGhpcy5fY29tcGxldGUpe2NvbnN0IG49KCk9PnRoaXMuX2NvbXBsZXRlLmNhbGwodGhpcy5fY29udGV4dCk7ZS51c2VEZXByZWNhdGVkU3luY2hyb25vdXNFcnJvckhhbmRsaW5nJiZ0LnN5bmNFcnJvclRocm93YWJsZT8odGhpcy5fX3RyeU9yU2V0RXJyb3IodCxuKSx0aGlzLnVuc3Vic2NyaWJlKCkpOih0aGlzLl9fdHJ5T3JVbnN1YihuKSx0aGlzLnVuc3Vic2NyaWJlKCkpfWVsc2UgdGhpcy51bnN1YnNjcmliZSgpfX1fX3RyeU9yVW5zdWIodCxuKXt0cnl7dC5jYWxsKHRoaXMuX2NvbnRleHQsbil9Y2F0Y2godCl7aWYodGhpcy51bnN1YnNjcmliZSgpLGUudXNlRGVwcmVjYXRlZFN5bmNocm9ub3VzRXJyb3JIYW5kbGluZyl0aHJvdyB0O2EodCl9fV9fdHJ5T3JTZXRFcnJvcih0LG4sbyl7aWYoIWUudXNlRGVwcmVjYXRlZFN5bmNocm9ub3VzRXJyb3JIYW5kbGluZyl0aHJvdyBuZXcgRXJyb3IoImJhZCBjYWxsIik7dHJ5e24uY2FsbCh0aGlzLl9jb250ZXh0LG8pfWNhdGNoKG4pe3JldHVybiBlLnVzZURlcHJlY2F0ZWRTeW5jaHJvbm91c0Vycm9ySGFuZGxpbmc/KHQuc3luY0Vycm9yVmFsdWU9bix0LnN5bmNFcnJvclRocm93bj0hMCwhMCk6KGEobiksITApfXJldHVybiExfV91bnN1YnNjcmliZSgpe2NvbnN0e19wYXJlbnRTdWJzY3JpYmVyOnR9PXRoaXM7dGhpcy5fY29udGV4dD1udWxsLHRoaXMuX3BhcmVudFN1YnNjcmliZXI9bnVsbCx0LnVuc3Vic2NyaWJlKCl9fWNvbnN0IHA9ImZ1bmN0aW9uIj09dHlwZW9mIFN5bWJvbCYmU3ltYm9sLm9ic2VydmFibGV8fCJAQG9ic2VydmFibGUiO2Z1bmN0aW9uIGIodCl7cmV0dXJuIHR9ZnVuY3Rpb24gdSh0KXtyZXR1cm4gdGhpcyBpbnN0YW5jZW9mIHU/KHRoaXMudj10LHRoaXMpOm5ldyB1KHQpfWZ1bmN0aW9uIGYodCxuLGUpe2lmKCFTeW1ib2wuYXN5bmNJdGVyYXRvcil0aHJvdyBuZXcgVHlwZUVycm9yKCJTeW1ib2wuYXN5bmNJdGVyYXRvciBpcyBub3QgZGVmaW5lZC4iKTt2YXIgYSxvPWUuYXBwbHkodCxufHxbXSkscj1bXTtyZXR1cm4gYT17fSxpKCJuZXh0IiksaSgidGhyb3ciKSxpKCJyZXR1cm4iKSxhW1N5bWJvbC5hc3luY0l0ZXJhdG9yXT1mdW5jdGlvbigpe3JldHVybiB0aGlzfSxhO2Z1bmN0aW9uIGkodCl7b1t0XSYmKGFbdF09ZnVuY3Rpb24obil7cmV0dXJuIG5ldyBQcm9taXNlKChmdW5jdGlvbihlLGEpe3IucHVzaChbdCxuLGUsYV0pPjF8fGModCxuKX0pKX0pfWZ1bmN0aW9uIGModCxuKXt0cnl7IShmdW5jdGlvbiBlKHQpe3QudmFsdWUgaW5zdGFuY2VvZiB1P1Byb21pc2UucmVzb2x2ZSh0LnZhbHVlLnYpLnRoZW4ocyxsKTptKHJbMF1bMl0sdCl9KShvW3RdKG4pKX1jYXRjaCh0KXttKHJbMF1bM10sdCl9fWZ1bmN0aW9uIHModCl7YygibmV4dCIsdCl9ZnVuY3Rpb24gbCh0KXtjKCJ0aHJvdyIsdCl9ZnVuY3Rpb24gbSh0LG4pe3Qobiksci5zaGlmdCgpLHIubGVuZ3RoJiZjKHJbMF1bMF0sclswXVsxXSl9fWNsYXNzIGh7Y29uc3RydWN0b3IoKXt0aGlzLnJlc29sdmU9bnVsbCx0aGlzLnJlamVjdD1udWxsLHRoaXMucHJvbWlzZT1uZXcgUHJvbWlzZSgoKHQsbik9Pnt0aGlzLnJlc29sdmU9dCx0aGlzLnJlamVjdD1ufSkpfX1jbGFzcyBfe2NvbnN0cnVjdG9yKHQpe3RoaXMuX2lzU2NhbGFyPSExLHQmJih0aGlzLl9zdWJzY3JpYmU9dCl9bGlmdCh0KXtjb25zdCBuPW5ldyBfO3JldHVybiBuLnNvdXJjZT10aGlzLG4ub3BlcmF0b3I9dCxufXN1YnNjcmliZSh0LG4sYSl7Y29uc3R7b3BlcmF0b3I6cn09dGhpcyxpPShmdW5jdGlvbiBjKHQsbixlKXtpZih0KXtpZih0IGluc3RhbmNlb2YgZClyZXR1cm4gdDtpZih0W21dKXJldHVybiB0W21dKCl9cmV0dXJuIHR8fG58fGU/bmV3IGQodCxuLGUpOm5ldyBkKG8pfSkodCxuLGEpO2lmKGkuYWRkKHI/ci5jYWxsKGksdGhpcy5zb3VyY2UpOnRoaXMuc291cmNlfHxlLnVzZURlcHJlY2F0ZWRTeW5jaHJvbm91c0Vycm9ySGFuZGxpbmcmJiFpLnN5bmNFcnJvclRocm93YWJsZT90aGlzLl9zdWJzY3JpYmUoaSk6dGhpcy5fdHJ5U3Vic2NyaWJlKGkpKSxlLnVzZURlcHJlY2F0ZWRTeW5jaHJvbm91c0Vycm9ySGFuZGxpbmcmJmkuc3luY0Vycm9yVGhyb3dhYmxlJiYoaS5zeW5jRXJyb3JUaHJvd2FibGU9ITEsaS5zeW5jRXJyb3JUaHJvd24pKXRocm93IGkuc3luY0Vycm9yVmFsdWU7cmV0dXJuIGl9X3RyeVN1YnNjcmliZSh0KXt0cnl7cmV0dXJuIHRoaXMuX3N1YnNjcmliZSh0KX1jYXRjaChuKXtlLnVzZURlcHJlY2F0ZWRTeW5jaHJvbm91c0Vycm9ySGFuZGxpbmcmJih0LnN5bmNFcnJvclRocm93bj0hMCx0LnN5bmNFcnJvclZhbHVlPW4pLChmdW5jdGlvbiBuKHQpe2Zvcig7dDspe2NvbnN0e2Nsb3NlZDpuLGRlc3RpbmF0aW9uOmUsaXNTdG9wcGVkOmF9PXQ7aWYobnx8YSlyZXR1cm4hMTt0PWUmJmUgaW5zdGFuY2VvZiBkP2U6bnVsbH1yZXR1cm4hMH0pKHQpP3QuZXJyb3Iobik6Y29uc29sZS53YXJuKG4pfX1mb3JFYWNoKHQsbil7cmV0dXJuIG5ldyhuPUMobikpKCgobixlKT0+e2xldCBhO2E9dGhpcy5zdWJzY3JpYmUoKG49Pnt0cnl7dChuKX1jYXRjaCh0KXtlKHQpLGEmJmEudW5zdWJzY3JpYmUoKX19KSxlLG4pfSkpfV9zdWJzY3JpYmUodCl7Y29uc3R7c291cmNlOm59PXRoaXM7cmV0dXJuIG4mJm4uc3Vic2NyaWJlKHQpfVtwXSgpe3JldHVybiB0aGlzfXBpcGUoLi4udCl7cmV0dXJuIDA9PT10Lmxlbmd0aD90aGlzOihmdW5jdGlvbiBuKHQpe3JldHVybiAwPT09dC5sZW5ndGg/YjoxPT09dC5sZW5ndGg/dFswXTpmdW5jdGlvbiBuKGUpe3JldHVybiB0LnJlZHVjZSgoKHQsbik9Pm4odCkpLGUpfX0KLyohICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCiAgICBDb3B5cmlnaHQgKGMpIE1pY3Jvc29mdCBDb3Jwb3JhdGlvbi4KCiAgICBQZXJtaXNzaW9uIHRvIHVzZSwgY29weSwgbW9kaWZ5LCBhbmQvb3IgZGlzdHJpYnV0ZSB0aGlzIHNvZnR3YXJlIGZvciBhbnkKICAgIHB1cnBvc2Ugd2l0aCBvciB3aXRob3V0IGZlZSBpcyBoZXJlYnkgZ3JhbnRlZC4KCiAgICBUSEUgU09GVFdBUkUgSVMgUFJPVklERUQgIkFTIElTIiBBTkQgVEhFIEFVVEhPUiBESVNDTEFJTVMgQUxMIFdBUlJBTlRJRVMgV0lUSAogICAgUkVHQVJEIFRPIFRISVMgU09GVFdBUkUgSU5DTFVESU5HIEFMTCBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZCiAgICBBTkQgRklUTkVTUy4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIEFVVEhPUiBCRSBMSUFCTEUgRk9SIEFOWSBTUEVDSUFMLCBESVJFQ1QsCiAgICBJTkRJUkVDVCwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIE9SIEFOWSBEQU1BR0VTIFdIQVRTT0VWRVIgUkVTVUxUSU5HIEZST00KICAgIExPU1MgT0YgVVNFLCBEQVRBIE9SIFBST0ZJVFMsIFdIRVRIRVIgSU4gQU4gQUNUSU9OIE9GIENPTlRSQUNULCBORUdMSUdFTkNFIE9SCiAgICBPVEhFUiBUT1JUSU9VUyBBQ1RJT04sIEFSSVNJTkcgT1VUIE9GIE9SIElOIENPTk5FQ1RJT04gV0lUSCBUSEUgVVNFIE9SCiAgICBQRVJGT1JNQU5DRSBPRiBUSElTIFNPRlRXQVJFLgogICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiogKi8pKHQpKHRoaXMpfXRvUHJvbWlzZSh0KXtyZXR1cm4gbmV3KHQ9Qyh0KSkoKCh0LG4pPT57bGV0IGU7dGhpcy5zdWJzY3JpYmUoKHQ9PmU9dCksKHQ9Pm4odCkpLCgoKT0+dChlKSkpfSkpfX1mdW5jdGlvbiBDKHQpe2lmKHR8fCh0PVByb21pc2UpLCF0KXRocm93IG5ldyBFcnJvcigibm8gUHJvbWlzZSBpbXBsIGZvdW5kIik7cmV0dXJuIHR9Xy5jcmVhdGU9dD0+bmV3IF8odCksU3ltYm9sJiZTeW1ib2wuYXN5bmNJdGVyYXRvciYmKF8ucHJvdG90eXBlW1N5bWJvbC5hc3luY0l0ZXJhdG9yXT1mdW5jdGlvbigpe3JldHVybihmdW5jdGlvbiB0KG4pe3JldHVybihmdW5jdGlvbiBlKHQpe3JldHVybiBmKHRoaXMsYXJndW1lbnRzLChmdW5jdGlvbipuKCl7Y29uc3QgZT1bXSxhPVtdO2xldCBvPSExLHI9bnVsbCxpPSExO2NvbnN0IGM9dC5zdWJzY3JpYmUoe25leHQ6dD0+e2UubGVuZ3RoPjA/ZS5zaGlmdCgpLnJlc29sdmUoe3ZhbHVlOnQsZG9uZTohMX0pOmEucHVzaCh0KX0sZXJyb3I6dD0+e2ZvcihvPSEwLHI9dDtlLmxlbmd0aD4wOyllLnNoaWZ0KCkucmVqZWN0KHQpfSxjb21wbGV0ZTooKT0+e2ZvcihpPSEwO2UubGVuZ3RoPjA7KWUuc2hpZnQoKS5yZXNvbHZlKHt2YWx1ZTp2b2lkIDAsZG9uZTohMH0pfX0pO3RyeXtmb3IoOzspaWYoYS5sZW5ndGg+MCl5aWVsZCB5aWVsZCB1KGEuc2hpZnQoKSk7ZWxzZXtpZihpKXJldHVybiB5aWVsZCB1KHZvaWQgMCk7aWYobyl0aHJvdyByO3tjb25zdCB0PW5ldyBoO2UucHVzaCh0KTtjb25zdCBuPXlpZWxkIHUodC5wcm9taXNlKTtpZihuLmRvbmUpcmV0dXJuIHlpZWxkIHUodm9pZCAwKTt5aWVsZCB5aWVsZCB1KG4udmFsdWUpfX19Y2F0Y2godCl7dGhyb3cgdH1maW5hbGx5e2MudW5zdWJzY3JpYmUoKX19KSl9KShuKX0pKHRoaXMpfSk7Y29uc3QgTT0oKCk9PntmdW5jdGlvbiB0KCl7cmV0dXJuIEVycm9yLmNhbGwodGhpcyksdGhpcy5tZXNzYWdlPSJvYmplY3QgdW5zdWJzY3JpYmVkIix0aGlzLm5hbWU9Ik9iamVjdFVuc3Vic2NyaWJlZEVycm9yIix0aGlzfXJldHVybiB0LnByb3RvdHlwZT1PYmplY3QuY3JlYXRlKEVycm9yLnByb3RvdHlwZSksdH0pKCk7Y2xhc3MgTyBleHRlbmRzIHN7Y29uc3RydWN0b3IodCxuKXtzdXBlcigpLHRoaXMuc3ViamVjdD10LHRoaXMuc3Vic2NyaWJlcj1uLHRoaXMuY2xvc2VkPSExfXVuc3Vic2NyaWJlKCl7aWYodGhpcy5jbG9zZWQpcmV0dXJuO3RoaXMuY2xvc2VkPSEwO2NvbnN0IHQ9dGhpcy5zdWJqZWN0LG49dC5vYnNlcnZlcnM7aWYodGhpcy5zdWJqZWN0PW51bGwsIW58fDA9PT1uLmxlbmd0aHx8dC5pc1N0b3BwZWR8fHQuY2xvc2VkKXJldHVybjtjb25zdCBlPW4uaW5kZXhPZih0aGlzLnN1YnNjcmliZXIpOy0xIT09ZSYmbi5zcGxpY2UoZSwxKX19Y2xhc3MgUCBleHRlbmRzIGR7Y29uc3RydWN0b3IodCl7c3VwZXIodCksdGhpcy5kZXN0aW5hdGlvbj10fX1jbGFzcyB4IGV4dGVuZHMgX3tjb25zdHJ1Y3Rvcigpe3N1cGVyKCksdGhpcy5vYnNlcnZlcnM9W10sdGhpcy5jbG9zZWQ9ITEsdGhpcy5pc1N0b3BwZWQ9ITEsdGhpcy5oYXNFcnJvcj0hMSx0aGlzLnRocm93bkVycm9yPW51bGx9W21dKCl7cmV0dXJuIG5ldyBQKHRoaXMpfWxpZnQodCl7Y29uc3Qgbj1uZXcgeSh0aGlzLHRoaXMpO3JldHVybiBuLm9wZXJhdG9yPXQsbn1uZXh0KHQpe2lmKHRoaXMuY2xvc2VkKXRocm93IG5ldyBNO2lmKCF0aGlzLmlzU3RvcHBlZCl7Y29uc3R7b2JzZXJ2ZXJzOm59PXRoaXMsZT1uLmxlbmd0aCxhPW4uc2xpY2UoKTtmb3IobGV0IG49MDtuPGU7bisrKWFbbl0ubmV4dCh0KX19ZXJyb3IodCl7aWYodGhpcy5jbG9zZWQpdGhyb3cgbmV3IE07dGhpcy5oYXNFcnJvcj0hMCx0aGlzLnRocm93bkVycm9yPXQsdGhpcy5pc1N0b3BwZWQ9ITA7Y29uc3R7b2JzZXJ2ZXJzOm59PXRoaXMsZT1uLmxlbmd0aCxhPW4uc2xpY2UoKTtmb3IobGV0IG49MDtuPGU7bisrKWFbbl0uZXJyb3IodCk7dGhpcy5vYnNlcnZlcnMubGVuZ3RoPTB9Y29tcGxldGUoKXtpZih0aGlzLmNsb3NlZCl0aHJvdyBuZXcgTTt0aGlzLmlzU3RvcHBlZD0hMDtjb25zdHtvYnNlcnZlcnM6dH09dGhpcyxuPXQubGVuZ3RoLGU9dC5zbGljZSgpO2ZvcihsZXQgdD0wO3Q8bjt0KyspZVt0XS5jb21wbGV0ZSgpO3RoaXMub2JzZXJ2ZXJzLmxlbmd0aD0wfXVuc3Vic2NyaWJlKCl7dGhpcy5pc1N0b3BwZWQ9ITAsdGhpcy5jbG9zZWQ9ITAsdGhpcy5vYnNlcnZlcnM9bnVsbH1fdHJ5U3Vic2NyaWJlKHQpe2lmKHRoaXMuY2xvc2VkKXRocm93IG5ldyBNO3JldHVybiBzdXBlci5fdHJ5U3Vic2NyaWJlKHQpfV9zdWJzY3JpYmUodCl7aWYodGhpcy5jbG9zZWQpdGhyb3cgbmV3IE07cmV0dXJuIHRoaXMuaGFzRXJyb3I/KHQuZXJyb3IodGhpcy50aHJvd25FcnJvcikscy5FTVBUWSk6dGhpcy5pc1N0b3BwZWQ/KHQuY29tcGxldGUoKSxzLkVNUFRZKToodGhpcy5vYnNlcnZlcnMucHVzaCh0KSxuZXcgTyh0aGlzLHQpKX1hc09ic2VydmFibGUoKXtjb25zdCB0PW5ldyBfO3JldHVybiB0LnNvdXJjZT10aGlzLHR9fXguY3JlYXRlPSh0LG4pPT5uZXcgeSh0LG4pO2NsYXNzIHkgZXh0ZW5kcyB4e2NvbnN0cnVjdG9yKHQsbil7c3VwZXIoKSx0aGlzLmRlc3RpbmF0aW9uPXQsdGhpcy5zb3VyY2U9bn1uZXh0KHQpe2NvbnN0e2Rlc3RpbmF0aW9uOm59PXRoaXM7biYmbi5uZXh0JiZuLm5leHQodCl9ZXJyb3IodCl7Y29uc3R7ZGVzdGluYXRpb246bn09dGhpcztuJiZuLmVycm9yJiZ0aGlzLmRlc3RpbmF0aW9uLmVycm9yKHQpfWNvbXBsZXRlKCl7Y29uc3R7ZGVzdGluYXRpb246dH09dGhpczt0JiZ0LmNvbXBsZXRlJiZ0aGlzLmRlc3RpbmF0aW9uLmNvbXBsZXRlKCl9X3N1YnNjcmliZSh0KXtjb25zdHtzb3VyY2U6bn09dGhpcztyZXR1cm4gbj90aGlzLnNvdXJjZS5zdWJzY3JpYmUodCk6cy5FTVBUWX19ZnVuY3Rpb24gaygpe3JldHVybiBmdW5jdGlvbiB0KG4pe3JldHVybiBuLmxpZnQobmV3IHYobikpfX1jbGFzcyB2e2NvbnN0cnVjdG9yKHQpe3RoaXMuY29ubmVjdGFibGU9dH1jYWxsKHQsbil7Y29uc3R7Y29ubmVjdGFibGU6ZX09dGhpcztlLl9yZWZDb3VudCsrO2NvbnN0IGE9bmV3IHcodCxlKSxvPW4uc3Vic2NyaWJlKGEpO3JldHVybiBhLmNsb3NlZHx8KGEuY29ubmVjdGlvbj1lLmNvbm5lY3QoKSksb319Y2xhc3MgdyBleHRlbmRzIGR7Y29uc3RydWN0b3IodCxuKXtzdXBlcih0KSx0aGlzLmNvbm5lY3RhYmxlPW4sdGhpcy5jb25uZWN0aW9uPW51bGx9X3Vuc3Vic2NyaWJlKCl7Y29uc3R7Y29ubmVjdGFibGU6dH09dGhpcztpZighdClyZXR1cm4gdm9pZCh0aGlzLmNvbm5lY3Rpb249bnVsbCk7dGhpcy5jb25uZWN0YWJsZT1udWxsO2NvbnN0IG49dC5fcmVmQ291bnQ7aWYobjw9MClyZXR1cm4gdm9pZCh0aGlzLmNvbm5lY3Rpb249bnVsbCk7aWYodC5fcmVmQ291bnQ9bi0xLG4+MSlyZXR1cm4gdm9pZCh0aGlzLmNvbm5lY3Rpb249bnVsbCk7Y29uc3R7Y29ubmVjdGlvbjplfT10aGlzLGE9dC5fY29ubmVjdGlvbjt0aGlzLmNvbm5lY3Rpb249bnVsbCwhYXx8ZSYmYSE9PWV8fGEudW5zdWJzY3JpYmUoKX19Y2xhc3MgUyBleHRlbmRzIF97Y29uc3RydWN0b3IodCxuKXtzdXBlcigpLHRoaXMuc291cmNlPXQsdGhpcy5zdWJqZWN0RmFjdG9yeT1uLHRoaXMuX3JlZkNvdW50PTAsdGhpcy5faXNDb21wbGV0ZT0hMX1fc3Vic2NyaWJlKHQpe3JldHVybiB0aGlzLmdldFN1YmplY3QoKS5zdWJzY3JpYmUodCl9Z2V0U3ViamVjdCgpe2NvbnN0IHQ9dGhpcy5fc3ViamVjdDtyZXR1cm4gdCYmIXQuaXNTdG9wcGVkfHwodGhpcy5fc3ViamVjdD10aGlzLnN1YmplY3RGYWN0b3J5KCkpLHRoaXMuX3N1YmplY3R9Y29ubmVjdCgpe2xldCB0PXRoaXMuX2Nvbm5lY3Rpb247cmV0dXJuIHR8fCh0aGlzLl9pc0NvbXBsZXRlPSExLHQ9dGhpcy5fY29ubmVjdGlvbj1uZXcgcyx0LmFkZCh0aGlzLnNvdXJjZS5zdWJzY3JpYmUobmV3IEEodGhpcy5nZXRTdWJqZWN0KCksdGhpcykpKSx0LmNsb3NlZCYmKHRoaXMuX2Nvbm5lY3Rpb249bnVsbCx0PXMuRU1QVFkpKSx0fXJlZkNvdW50KCl7cmV0dXJuIGsoKSh0aGlzKX19Y29uc3QgRT0oKCk9Pntjb25zdCB0PVMucHJvdG90eXBlO3JldHVybntvcGVyYXRvcjp7dmFsdWU6bnVsbH0sX3JlZkNvdW50Ont2YWx1ZTowLHdyaXRhYmxlOiEwfSxfc3ViamVjdDp7dmFsdWU6bnVsbCx3cml0YWJsZTohMH0sX2Nvbm5lY3Rpb246e3ZhbHVlOm51bGwsd3JpdGFibGU6ITB9LF9zdWJzY3JpYmU6e3ZhbHVlOnQuX3N1YnNjcmliZX0sX2lzQ29tcGxldGU6e3ZhbHVlOnQuX2lzQ29tcGxldGUsd3JpdGFibGU6ITB9LGdldFN1YmplY3Q6e3ZhbHVlOnQuZ2V0U3ViamVjdH0sY29ubmVjdDp7dmFsdWU6dC5jb25uZWN0fSxyZWZDb3VudDp7dmFsdWU6dC5yZWZDb3VudH19fSkoKTtjbGFzcyBBIGV4dGVuZHMgUHtjb25zdHJ1Y3Rvcih0LG4pe3N1cGVyKHQpLHRoaXMuY29ubmVjdGFibGU9bn1fZXJyb3IodCl7dGhpcy5fdW5zdWJzY3JpYmUoKSxzdXBlci5fZXJyb3IodCl9X2NvbXBsZXRlKCl7dGhpcy5jb25uZWN0YWJsZS5faXNDb21wbGV0ZT0hMCx0aGlzLl91bnN1YnNjcmliZSgpLHN1cGVyLl9jb21wbGV0ZSgpfV91bnN1YnNjcmliZSgpe2NvbnN0IHQ9dGhpcy5jb25uZWN0YWJsZTtpZih0KXt0aGlzLmNvbm5lY3RhYmxlPW51bGw7Y29uc3Qgbj10Ll9jb25uZWN0aW9uO3QuX3JlZkNvdW50PTAsdC5fc3ViamVjdD1udWxsLHQuX2Nvbm5lY3Rpb249bnVsbCxuJiZuLnVuc3Vic2NyaWJlKCl9fX1mdW5jdGlvbiB6KHQsbixlLGEpe3JldHVybiBvPT5vLmxpZnQobmV3IFIodCxuLGUsYSkpfWNsYXNzIFJ7Y29uc3RydWN0b3IodCxuLGUsYSl7dGhpcy5rZXlTZWxlY3Rvcj10LHRoaXMuZWxlbWVudFNlbGVjdG9yPW4sdGhpcy5kdXJhdGlvblNlbGVjdG9yPWUsdGhpcy5zdWJqZWN0U2VsZWN0b3I9YX1jYWxsKHQsbil7cmV0dXJuIG4uc3Vic2NyaWJlKG5ldyBUKHQsdGhpcy5rZXlTZWxlY3Rvcix0aGlzLmVsZW1lbnRTZWxlY3Rvcix0aGlzLmR1cmF0aW9uU2VsZWN0b3IsdGhpcy5zdWJqZWN0U2VsZWN0b3IpKX19Y2xhc3MgVCBleHRlbmRzIGR7Y29uc3RydWN0b3IodCxuLGUsYSxvKXtzdXBlcih0KSx0aGlzLmtleVNlbGVjdG9yPW4sdGhpcy5lbGVtZW50U2VsZWN0b3I9ZSx0aGlzLmR1cmF0aW9uU2VsZWN0b3I9YSx0aGlzLnN1YmplY3RTZWxlY3Rvcj1vLHRoaXMuZ3JvdXBzPW51bGwsdGhpcy5hdHRlbXB0ZWRUb1Vuc3Vic2NyaWJlPSExLHRoaXMuY291bnQ9MH1fbmV4dCh0KXtsZXQgbjt0cnl7bj10aGlzLmtleVNlbGVjdG9yKHQpfWNhdGNoKHQpe3JldHVybiB2b2lkIHRoaXMuZXJyb3IodCl9dGhpcy5fZ3JvdXAodCxuKX1fZ3JvdXAodCxuKXtsZXQgZT10aGlzLmdyb3VwcztlfHwoZT10aGlzLmdyb3Vwcz1uZXcgTWFwKTtsZXQgYSxvPWUuZ2V0KG4pO2lmKHRoaXMuZWxlbWVudFNlbGVjdG9yKXRyeXthPXRoaXMuZWxlbWVudFNlbGVjdG9yKHQpfWNhdGNoKHQpe3RoaXMuZXJyb3IodCl9ZWxzZSBhPXQ7aWYoIW8pe289dGhpcy5zdWJqZWN0U2VsZWN0b3I/dGhpcy5zdWJqZWN0U2VsZWN0b3IoKTpuZXcgeCxlLnNldChuLG8pO2NvbnN0IHQ9bmV3IEkobixvLHRoaXMpO2lmKHRoaXMuZGVzdGluYXRpb24ubmV4dCh0KSx0aGlzLmR1cmF0aW9uU2VsZWN0b3Ipe2xldCB0O3RyeXt0PXRoaXMuZHVyYXRpb25TZWxlY3RvcihuZXcgSShuLG8pKX1jYXRjaCh0KXtyZXR1cm4gdm9pZCB0aGlzLmVycm9yKHQpfXRoaXMuYWRkKHQuc3Vic2NyaWJlKG5ldyBEKG4sbyx0aGlzKSkpfX1vLmNsb3NlZHx8by5uZXh0KGEpfV9lcnJvcih0KXtjb25zdCBuPXRoaXMuZ3JvdXBzO24mJihuLmZvckVhY2goKChuLGUpPT57bi5lcnJvcih0KX0pKSxuLmNsZWFyKCkpLHRoaXMuZGVzdGluYXRpb24uZXJyb3IodCl9X2NvbXBsZXRlKCl7Y29uc3QgdD10aGlzLmdyb3Vwczt0JiYodC5mb3JFYWNoKCgodCxuKT0+e3QuY29tcGxldGUoKX0pKSx0LmNsZWFyKCkpLHRoaXMuZGVzdGluYXRpb24uY29tcGxldGUoKX1yZW1vdmVHcm91cCh0KXt0aGlzLmdyb3Vwcy5kZWxldGUodCl9dW5zdWJzY3JpYmUoKXt0aGlzLmNsb3NlZHx8KHRoaXMuYXR0ZW1wdGVkVG9VbnN1YnNjcmliZT0hMCwwPT09dGhpcy5jb3VudCYmc3VwZXIudW5zdWJzY3JpYmUoKSl9fWNsYXNzIEQgZXh0ZW5kcyBke2NvbnN0cnVjdG9yKHQsbixlKXtzdXBlcihuKSx0aGlzLmtleT10LHRoaXMuZ3JvdXA9bix0aGlzLnBhcmVudD1lfV9uZXh0KHQpe3RoaXMuY29tcGxldGUoKX1fdW5zdWJzY3JpYmUoKXtjb25zdHtwYXJlbnQ6dCxrZXk6bn09dGhpczt0aGlzLmtleT10aGlzLnBhcmVudD1udWxsLHQmJnQucmVtb3ZlR3JvdXAobil9fWNsYXNzIEkgZXh0ZW5kcyBfe2NvbnN0cnVjdG9yKHQsbixlKXtzdXBlcigpLHRoaXMua2V5PXQsdGhpcy5ncm91cFN1YmplY3Q9bix0aGlzLnJlZkNvdW50U3Vic2NyaXB0aW9uPWV9X3N1YnNjcmliZSh0KXtjb25zdCBuPW5ldyBzLHtyZWZDb3VudFN1YnNjcmlwdGlvbjplLGdyb3VwU3ViamVjdDphfT10aGlzO3JldHVybiBlJiYhZS5jbG9zZWQmJm4uYWRkKG5ldyBOKGUpKSxuLmFkZChhLnN1YnNjcmliZSh0KSksbn19Y2xhc3MgTiBleHRlbmRzIHN7Y29uc3RydWN0b3IodCl7c3VwZXIoKSx0aGlzLnBhcmVudD10LHQuY291bnQrK311bnN1YnNjcmliZSgpe2NvbnN0IHQ9dGhpcy5wYXJlbnQ7dC5jbG9zZWR8fHRoaXMuY2xvc2VkfHwoc3VwZXIudW5zdWJzY3JpYmUoKSx0LmNvdW50LT0xLDA9PT10LmNvdW50JiZ0LmF0dGVtcHRlZFRvVW5zdWJzY3JpYmUmJnQudW5zdWJzY3JpYmUoKSl9fWNsYXNzIEYgZXh0ZW5kcyB4e2NvbnN0cnVjdG9yKHQpe3N1cGVyKCksdGhpcy5fdmFsdWU9dH1nZXQgdmFsdWUoKXtyZXR1cm4gdGhpcy5nZXRWYWx1ZSgpfV9zdWJzY3JpYmUodCl7Y29uc3Qgbj1zdXBlci5fc3Vic2NyaWJlKHQpO3JldHVybiBuJiYhbi5jbG9zZWQmJnQubmV4dCh0aGlzLl92YWx1ZSksbn1nZXRWYWx1ZSgpe2lmKHRoaXMuaGFzRXJyb3IpdGhyb3cgdGhpcy50aHJvd25FcnJvcjtpZih0aGlzLmNsb3NlZCl0aHJvdyBuZXcgTTtyZXR1cm4gdGhpcy5fdmFsdWV9bmV4dCh0KXtzdXBlci5uZXh0KHRoaXMuX3ZhbHVlPXQpfX1jbGFzcyBMIGV4dGVuZHMgc3tjb25zdHJ1Y3Rvcih0LG4pe3N1cGVyKCl9c2NoZWR1bGUodCxuPTApe3JldHVybiB0aGlzfX1jbGFzcyBIIGV4dGVuZHMgTHtjb25zdHJ1Y3Rvcih0LG4pe3N1cGVyKHQsbiksdGhpcy5zY2hlZHVsZXI9dCx0aGlzLndvcms9bix0aGlzLnBlbmRpbmc9ITF9c2NoZWR1bGUodCxuPTApe2lmKHRoaXMuY2xvc2VkKXJldHVybiB0aGlzO3RoaXMuc3RhdGU9dDtjb25zdCBlPXRoaXMuaWQsYT10aGlzLnNjaGVkdWxlcjtyZXR1cm4gbnVsbCE9ZSYmKHRoaXMuaWQ9dGhpcy5yZWN5Y2xlQXN5bmNJZChhLGUsbikpLHRoaXMucGVuZGluZz0hMCx0aGlzLmRlbGF5PW4sdGhpcy5pZD10aGlzLmlkfHx0aGlzLnJlcXVlc3RBc3luY0lkKGEsdGhpcy5pZCxuKSx0aGlzfXJlcXVlc3RBc3luY0lkKHQsbixlPTApe3JldHVybiBzZXRJbnRlcnZhbCh0LmZsdXNoLmJpbmQodCx0aGlzKSxlKX1yZWN5Y2xlQXN5bmNJZCh0LG4sZT0wKXtpZihudWxsIT09ZSYmdGhpcy5kZWxheT09PWUmJiExPT09dGhpcy5wZW5kaW5nKXJldHVybiBuO2NsZWFySW50ZXJ2YWwobil9ZXhlY3V0ZSh0LG4pe2lmKHRoaXMuY2xvc2VkKXJldHVybiBuZXcgRXJyb3IoImV4ZWN1dGluZyBhIGNhbmNlbGxlZCBhY3Rpb24iKTt0aGlzLnBlbmRpbmc9ITE7Y29uc3QgZT10aGlzLl9leGVjdXRlKHQsbik7aWYoZSlyZXR1cm4gZTshMT09PXRoaXMucGVuZGluZyYmbnVsbCE9dGhpcy5pZCYmKHRoaXMuaWQ9dGhpcy5yZWN5Y2xlQXN5bmNJZCh0aGlzLnNjaGVkdWxlcix0aGlzLmlkLG51bGwpKX1fZXhlY3V0ZSh0LG4pe2xldCBlLGE9ITE7dHJ5e3RoaXMud29yayh0KX1jYXRjaCh0KXthPSEwLGU9ISF0JiZ0fHxuZXcgRXJyb3IodCl9aWYoYSlyZXR1cm4gdGhpcy51bnN1YnNjcmliZSgpLGV9X3Vuc3Vic2NyaWJlKCl7Y29uc3QgdD10aGlzLmlkLG49dGhpcy5zY2hlZHVsZXIsZT1uLmFjdGlvbnMsYT1lLmluZGV4T2YodGhpcyk7dGhpcy53b3JrPW51bGwsdGhpcy5zdGF0ZT1udWxsLHRoaXMucGVuZGluZz0hMSx0aGlzLnNjaGVkdWxlcj1udWxsLC0xIT09YSYmZS5zcGxpY2UoYSwxKSxudWxsIT10JiYodGhpcy5pZD10aGlzLnJlY3ljbGVBc3luY0lkKG4sdCxudWxsKSksdGhpcy5kZWxheT1udWxsfX1jbGFzcyBCe2NvbnN0cnVjdG9yKHQsbj1CLm5vdyl7dGhpcy5TY2hlZHVsZXJBY3Rpb249dCx0aGlzLm5vdz1ufXNjaGVkdWxlKHQsbj0wLGUpe3JldHVybiBuZXcgdGhpcy5TY2hlZHVsZXJBY3Rpb24odGhpcyx0KS5zY2hlZHVsZShlLG4pfX1CLm5vdz0oKT0+RGF0ZS5ub3coKTtjbGFzcyBWIGV4dGVuZHMgQntjb25zdHJ1Y3Rvcih0LG49Qi5ub3cpe3N1cGVyKHQsKCgpPT5WLmRlbGVnYXRlJiZWLmRlbGVnYXRlIT09dGhpcz9WLmRlbGVnYXRlLm5vdygpOm4oKSkpLHRoaXMuYWN0aW9ucz1bXSx0aGlzLmFjdGl2ZT0hMSx0aGlzLnNjaGVkdWxlZD12b2lkIDB9c2NoZWR1bGUodCxuPTAsZSl7cmV0dXJuIFYuZGVsZWdhdGUmJlYuZGVsZWdhdGUhPT10aGlzP1YuZGVsZWdhdGUuc2NoZWR1bGUodCxuLGUpOnN1cGVyLnNjaGVkdWxlKHQsbixlKX1mbHVzaCh0KXtjb25zdHthY3Rpb25zOm59PXRoaXM7aWYodGhpcy5hY3RpdmUpcmV0dXJuIHZvaWQgbi5wdXNoKHQpO2xldCBlO3RoaXMuYWN0aXZlPSEwO2Rve2lmKGU9dC5leGVjdXRlKHQuc3RhdGUsdC5kZWxheSkpYnJlYWt9d2hpbGUodD1uLnNoaWZ0KCkpO2lmKHRoaXMuYWN0aXZlPSExLGUpe2Zvcig7dD1uLnNoaWZ0KCk7KXQudW5zdWJzY3JpYmUoKTt0aHJvdyBlfX19Y29uc3Qgaj1uZXcgY2xhc3MgZXh0ZW5kcyBWe30oY2xhc3MgZXh0ZW5kcyBIe2NvbnN0cnVjdG9yKHQsbil7c3VwZXIodCxuKSx0aGlzLnNjaGVkdWxlcj10LHRoaXMud29yaz1ufXNjaGVkdWxlKHQsbj0wKXtyZXR1cm4gbj4wP3N1cGVyLnNjaGVkdWxlKHQsbik6KHRoaXMuZGVsYXk9bix0aGlzLnN0YXRlPXQsdGhpcy5zY2hlZHVsZXIuZmx1c2godGhpcyksdGhpcyl9ZXhlY3V0ZSh0LG4pe3JldHVybiBuPjB8fHRoaXMuY2xvc2VkP3N1cGVyLmV4ZWN1dGUodCxuKTp0aGlzLl9leGVjdXRlKHQsbil9cmVxdWVzdEFzeW5jSWQodCxuLGU9MCl7cmV0dXJuIG51bGwhPT1lJiZlPjB8fG51bGw9PT1lJiZ0aGlzLmRlbGF5PjA/c3VwZXIucmVxdWVzdEFzeW5jSWQodCxuLGUpOnQuZmx1c2godGhpcyl9fSksVT1uZXcgXygodD0+dC5jb21wbGV0ZSgpKSk7ZnVuY3Rpb24gVyh0KXtyZXR1cm4gdCYmImZ1bmN0aW9uIj09dHlwZW9mIHQuc2NoZWR1bGV9Y29uc3QgRz10PT5uPT57Zm9yKGxldCBlPTAsYT10Lmxlbmd0aDtlPGEmJiFuLmNsb3NlZDtlKyspbi5uZXh0KHRbZV0pO24uY29tcGxldGUoKX07ZnVuY3Rpb24gWSh0LG4pe3JldHVybiBuZXcgXygoZT0+e2NvbnN0IGE9bmV3IHM7bGV0IG89MDtyZXR1cm4gYS5hZGQobi5zY2hlZHVsZSgoZnVuY3Rpb24oKXtvIT09dC5sZW5ndGg/KGUubmV4dCh0W28rK10pLGUuY2xvc2VkfHxhLmFkZCh0aGlzLnNjaGVkdWxlKCkpKTplLmNvbXBsZXRlKCl9KSkpLGF9KSl9ZnVuY3Rpb24gcSh0LG4pe3JldHVybiBuP1kodCxuKTpuZXcgXyhHKHQpKX1mdW5jdGlvbiBaKC4uLnQpe2xldCBuPXRbdC5sZW5ndGgtMV07cmV0dXJuIFcobik/KHQucG9wKCksWSh0LG4pKTpxKHQpfWZ1bmN0aW9uIFgodCxuKXtyZXR1cm4gbmV3IF8obj9lPT5uLnNjaGVkdWxlKEosMCx7ZXJyb3I6dCxzdWJzY3JpYmVyOmV9KTpuPT5uLmVycm9yKHQpKX1mdW5jdGlvbiBKKHtlcnJvcjp0LHN1YnNjcmliZXI6bn0pe24uZXJyb3IodCl9dmFyIFE7IShmdW5jdGlvbih0KXt0Lk5FWFQ9Ik4iLHQuRVJST1I9IkUiLHQuQ09NUExFVEU9IkMifSkoUXx8KFE9e30pKTtjbGFzcyBLe2NvbnN0cnVjdG9yKHQsbixlKXt0aGlzLmtpbmQ9dCx0aGlzLnZhbHVlPW4sdGhpcy5lcnJvcj1lLHRoaXMuaGFzVmFsdWU9Ik4iPT09dH1vYnNlcnZlKHQpe3N3aXRjaCh0aGlzLmtpbmQpe2Nhc2UiTiI6cmV0dXJuIHQubmV4dCYmdC5uZXh0KHRoaXMudmFsdWUpO2Nhc2UiRSI6cmV0dXJuIHQuZXJyb3ImJnQuZXJyb3IodGhpcy5lcnJvcik7Y2FzZSJDIjpyZXR1cm4gdC5jb21wbGV0ZSYmdC5jb21wbGV0ZSgpfX1kbyh0LG4sZSl7c3dpdGNoKHRoaXMua2luZCl7Y2FzZSJOIjpyZXR1cm4gdCYmdCh0aGlzLnZhbHVlKTtjYXNlIkUiOnJldHVybiBuJiZuKHRoaXMuZXJyb3IpO2Nhc2UiQyI6cmV0dXJuIGUmJmUoKX19YWNjZXB0KHQsbixlKXtyZXR1cm4gdCYmImZ1bmN0aW9uIj09dHlwZW9mIHQubmV4dD90aGlzLm9ic2VydmUodCk6dGhpcy5kbyh0LG4sZSl9dG9PYnNlcnZhYmxlKCl7c3dpdGNoKHRoaXMua2luZCl7Y2FzZSJOIjpyZXR1cm4gWih0aGlzLnZhbHVlKTtjYXNlIkUiOnJldHVybiBYKHRoaXMuZXJyb3IpO2Nhc2UiQyI6cmV0dXJuIFV9dGhyb3cgbmV3IEVycm9yKCJ1bmV4cGVjdGVkIG5vdGlmaWNhdGlvbiBraW5kIHZhbHVlIil9c3RhdGljIGNyZWF0ZU5leHQodCl7cmV0dXJuIHZvaWQgMCE9PXQ/bmV3IEsoIk4iLHQpOksudW5kZWZpbmVkVmFsdWVOb3RpZmljYXRpb259c3RhdGljIGNyZWF0ZUVycm9yKHQpe3JldHVybiBuZXcgSygiRSIsdm9pZCAwLHQpfXN0YXRpYyBjcmVhdGVDb21wbGV0ZSgpe3JldHVybiBLLmNvbXBsZXRlTm90aWZpY2F0aW9ufX1LLmNvbXBsZXRlTm90aWZpY2F0aW9uPW5ldyBLKCJDIiksSy51bmRlZmluZWRWYWx1ZU5vdGlmaWNhdGlvbj1uZXcgSygiTiIsdm9pZCAwKTtjbGFzcyAke2NvbnN0cnVjdG9yKHQsbj0wKXt0aGlzLnNjaGVkdWxlcj10LHRoaXMuZGVsYXk9bn1jYWxsKHQsbil7cmV0dXJuIG4uc3Vic2NyaWJlKG5ldyB0dCh0LHRoaXMuc2NoZWR1bGVyLHRoaXMuZGVsYXkpKX19Y2xhc3MgdHQgZXh0ZW5kcyBke2NvbnN0cnVjdG9yKHQsbixlPTApe3N1cGVyKHQpLHRoaXMuc2NoZWR1bGVyPW4sdGhpcy5kZWxheT1lfXN0YXRpYyBkaXNwYXRjaCh0KXtjb25zdHtub3RpZmljYXRpb246bixkZXN0aW5hdGlvbjplfT10O24ub2JzZXJ2ZShlKSx0aGlzLnVuc3Vic2NyaWJlKCl9c2NoZWR1bGVNZXNzYWdlKHQpe3RoaXMuZGVzdGluYXRpb24uYWRkKHRoaXMuc2NoZWR1bGVyLnNjaGVkdWxlKHR0LmRpc3BhdGNoLHRoaXMuZGVsYXksbmV3IG50KHQsdGhpcy5kZXN0aW5hdGlvbikpKX1fbmV4dCh0KXt0aGlzLnNjaGVkdWxlTWVzc2FnZShLLmNyZWF0ZU5leHQodCkpfV9lcnJvcih0KXt0aGlzLnNjaGVkdWxlTWVzc2FnZShLLmNyZWF0ZUVycm9yKHQpKSx0aGlzLnVuc3Vic2NyaWJlKCl9X2NvbXBsZXRlKCl7dGhpcy5zY2hlZHVsZU1lc3NhZ2UoSy5jcmVhdGVDb21wbGV0ZSgpKSx0aGlzLnVuc3Vic2NyaWJlKCl9fWNsYXNzIG50e2NvbnN0cnVjdG9yKHQsbil7dGhpcy5ub3RpZmljYXRpb249dCx0aGlzLmRlc3RpbmF0aW9uPW59fWNsYXNzIGV0IGV4dGVuZHMgeHtjb25zdHJ1Y3Rvcih0PU51bWJlci5QT1NJVElWRV9JTkZJTklUWSxuPU51bWJlci5QT1NJVElWRV9JTkZJTklUWSxlKXtzdXBlcigpLHRoaXMuc2NoZWR1bGVyPWUsdGhpcy5fZXZlbnRzPVtdLHRoaXMuX2luZmluaXRlVGltZVdpbmRvdz0hMSx0aGlzLl9idWZmZXJTaXplPXQ8MT8xOnQsdGhpcy5fd2luZG93VGltZT1uPDE/MTpuLG49PT1OdW1iZXIuUE9TSVRJVkVfSU5GSU5JVFk/KHRoaXMuX2luZmluaXRlVGltZVdpbmRvdz0hMCx0aGlzLm5leHQ9dGhpcy5uZXh0SW5maW5pdGVUaW1lV2luZG93KTp0aGlzLm5leHQ9dGhpcy5uZXh0VGltZVdpbmRvd31uZXh0SW5maW5pdGVUaW1lV2luZG93KHQpe2NvbnN0IG49dGhpcy5fZXZlbnRzO24ucHVzaCh0KSxuLmxlbmd0aD50aGlzLl9idWZmZXJTaXplJiZuLnNoaWZ0KCksc3VwZXIubmV4dCh0KX1uZXh0VGltZVdpbmRvdyh0KXt0aGlzLl9ldmVudHMucHVzaChuZXcgYXQodGhpcy5fZ2V0Tm93KCksdCkpLHRoaXMuX3RyaW1CdWZmZXJUaGVuR2V0RXZlbnRzKCksc3VwZXIubmV4dCh0KX1fc3Vic2NyaWJlKHQpe2NvbnN0IG49dGhpcy5faW5maW5pdGVUaW1lV2luZG93LGU9bj90aGlzLl9ldmVudHM6dGhpcy5fdHJpbUJ1ZmZlclRoZW5HZXRFdmVudHMoKSxhPXRoaXMuc2NoZWR1bGVyLG89ZS5sZW5ndGg7bGV0IHI7aWYodGhpcy5jbG9zZWQpdGhyb3cgbmV3IE07aWYodGhpcy5pc1N0b3BwZWR8fHRoaXMuaGFzRXJyb3I/cj1zLkVNUFRZOih0aGlzLm9ic2VydmVycy5wdXNoKHQpLHI9bmV3IE8odGhpcyx0KSksYSYmdC5hZGQodD1uZXcgdHQodCxhKSksbilmb3IobGV0IG49MDtuPG8mJiF0LmNsb3NlZDtuKyspdC5uZXh0KGVbbl0pO2Vsc2UgZm9yKGxldCBuPTA7bjxvJiYhdC5jbG9zZWQ7bisrKXQubmV4dChlW25dLnZhbHVlKTtyZXR1cm4gdGhpcy5oYXNFcnJvcj90LmVycm9yKHRoaXMudGhyb3duRXJyb3IpOnRoaXMuaXNTdG9wcGVkJiZ0LmNvbXBsZXRlKCkscn1fZ2V0Tm93KCl7cmV0dXJuKHRoaXMuc2NoZWR1bGVyfHxqKS5ub3coKX1fdHJpbUJ1ZmZlclRoZW5HZXRFdmVudHMoKXtjb25zdCB0PXRoaXMuX2dldE5vdygpLG49dGhpcy5fYnVmZmVyU2l6ZSxlPXRoaXMuX3dpbmRvd1RpbWUsYT10aGlzLl9ldmVudHMsbz1hLmxlbmd0aDtsZXQgcj0wO2Zvcig7cjxvJiYhKHQtYVtyXS50aW1lPGUpOylyKys7cmV0dXJuIG8+biYmKHI9TWF0aC5tYXgocixvLW4pKSxyPjAmJmEuc3BsaWNlKDAsciksYX19Y2xhc3MgYXR7Y29uc3RydWN0b3IodCxuKXt0aGlzLnRpbWU9dCx0aGlzLnZhbHVlPW59fWxldCBvdCxydD0xO2NvbnN0IGl0PXt9O2Z1bmN0aW9uIGN0KHQpe3JldHVybiB0IGluIGl0JiYoZGVsZXRlIGl0W3RdLCEwKX1jb25zdCBzdD17c2V0SW1tZWRpYXRlKHQpe2NvbnN0IG49cnQrKztyZXR1cm4gaXRbbl09ITAsb3R8fChvdD1Qcm9taXNlLnJlc29sdmUoKSksb3QudGhlbigoKCk9PmN0KG4pJiZ0KCkpKSxufSxjbGVhckltbWVkaWF0ZSh0KXtjdCh0KX19LGx0PW5ldyBjbGFzcyBleHRlbmRzIFZ7Zmx1c2godCl7dGhpcy5hY3RpdmU9ITAsdGhpcy5zY2hlZHVsZWQ9dm9pZCAwO2NvbnN0e2FjdGlvbnM6bn09dGhpcztsZXQgZSxhPS0xLG89bi5sZW5ndGg7dD10fHxuLnNoaWZ0KCk7ZG97aWYoZT10LmV4ZWN1dGUodC5zdGF0ZSx0LmRlbGF5KSlicmVha313aGlsZSgrK2E8byYmKHQ9bi5zaGlmdCgpKSk7aWYodGhpcy5hY3RpdmU9ITEsZSl7Zm9yKDsrK2E8byYmKHQ9bi5zaGlmdCgpKTspdC51bnN1YnNjcmliZSgpO3Rocm93IGV9fX0oY2xhc3MgZXh0ZW5kcyBIe2NvbnN0cnVjdG9yKHQsbil7c3VwZXIodCxuKSx0aGlzLnNjaGVkdWxlcj10LHRoaXMud29yaz1ufXJlcXVlc3RBc3luY0lkKHQsbixlPTApe3JldHVybiBudWxsIT09ZSYmZT4wP3N1cGVyLnJlcXVlc3RBc3luY0lkKHQsbixlKToodC5hY3Rpb25zLnB1c2godGhpcyksdC5zY2hlZHVsZWR8fCh0LnNjaGVkdWxlZD1zdC5zZXRJbW1lZGlhdGUodC5mbHVzaC5iaW5kKHQsdm9pZCAwKSkpKX1yZWN5Y2xlQXN5bmNJZCh0LG4sZT0wKXtpZihudWxsIT09ZSYmZT4wfHxudWxsPT09ZSYmdGhpcy5kZWxheT4wKXJldHVybiBzdXBlci5yZWN5Y2xlQXN5bmNJZCh0LG4sZSk7MD09PXQuYWN0aW9ucy5sZW5ndGgmJihzdC5jbGVhckltbWVkaWF0ZShuKSx0LnNjaGVkdWxlZD12b2lkIDApfX0pLG10PW5ldyBWKEgpLGR0PW5ldyBjbGFzcyBleHRlbmRzIFZ7Zmx1c2godCl7dGhpcy5hY3RpdmU9ITAsdGhpcy5zY2hlZHVsZWQ9dm9pZCAwO2NvbnN0e2FjdGlvbnM6bn09dGhpcztsZXQgZSxhPS0xLG89bi5sZW5ndGg7dD10fHxuLnNoaWZ0KCk7ZG97aWYoZT10LmV4ZWN1dGUodC5zdGF0ZSx0LmRlbGF5KSlicmVha313aGlsZSgrK2E8byYmKHQ9bi5zaGlmdCgpKSk7aWYodGhpcy5hY3RpdmU9ITEsZSl7Zm9yKDsrK2E8byYmKHQ9bi5zaGlmdCgpKTspdC51bnN1YnNjcmliZSgpO3Rocm93IGV9fX0oY2xhc3MgZXh0ZW5kcyBIe2NvbnN0cnVjdG9yKHQsbil7c3VwZXIodCxuKSx0aGlzLnNjaGVkdWxlcj10LHRoaXMud29yaz1ufXJlcXVlc3RBc3luY0lkKHQsbixlPTApe3JldHVybiBudWxsIT09ZSYmZT4wP3N1cGVyLnJlcXVlc3RBc3luY0lkKHQsbixlKToodC5hY3Rpb25zLnB1c2godGhpcyksdC5zY2hlZHVsZWR8fCh0LnNjaGVkdWxlZD1yZXF1ZXN0QW5pbWF0aW9uRnJhbWUoKCgpPT50LmZsdXNoKHZvaWQgMCkpKSkpfXJlY3ljbGVBc3luY0lkKHQsbixlPTApe2lmKG51bGwhPT1lJiZlPjB8fG51bGw9PT1lJiZ0aGlzLmRlbGF5PjApcmV0dXJuIHN1cGVyLnJlY3ljbGVBc3luY0lkKHQsbixlKTswPT09dC5hY3Rpb25zLmxlbmd0aCYmKGNhbmNlbEFuaW1hdGlvbkZyYW1lKG4pLHQuc2NoZWR1bGVkPXZvaWQgMCl9fSk7ZnVuY3Rpb24gZ3QoKXt9ZnVuY3Rpb24gcHQodCl7cmV0dXJuISF0JiYodCBpbnN0YW5jZW9mIF98fCJmdW5jdGlvbiI9PXR5cGVvZiB0LmxpZnQmJiJmdW5jdGlvbiI9PXR5cGVvZiB0LnN1YnNjcmliZSl9Y29uc3QgYnQ9KCgpPT57ZnVuY3Rpb24gdCgpe3JldHVybiBFcnJvci5jYWxsKHRoaXMpLHRoaXMubWVzc2FnZT0ibm8gZWxlbWVudHMgaW4gc2VxdWVuY2UiLHRoaXMubmFtZT0iRW1wdHlFcnJvciIsdGhpc31yZXR1cm4gdC5wcm90b3R5cGU9T2JqZWN0LmNyZWF0ZShFcnJvci5wcm90b3R5cGUpLHR9KSgpLHV0PSgoKT0+e2Z1bmN0aW9uIHQoKXtyZXR1cm4gRXJyb3IuY2FsbCh0aGlzKSx0aGlzLm1lc3NhZ2U9ImFyZ3VtZW50IG91dCBvZiByYW5nZSIsdGhpcy5uYW1lPSJBcmd1bWVudE91dE9mUmFuZ2VFcnJvciIsdGhpc31yZXR1cm4gdC5wcm90b3R5cGU9T2JqZWN0LmNyZWF0ZShFcnJvci5wcm90b3R5cGUpLHR9KSgpO2Z1bmN0aW9uIGZ0KHQsbil7cmV0dXJuIGZ1bmN0aW9uIGUoYSl7aWYoImZ1bmN0aW9uIiE9dHlwZW9mIHQpdGhyb3cgbmV3IFR5cGVFcnJvcigiYXJndW1lbnQgaXMgbm90IGEgZnVuY3Rpb24uIEFyZSB5b3UgbG9va2luZyBmb3IgYG1hcFRvKClgPyIpO3JldHVybiBhLmxpZnQobmV3IGh0KHQsbikpfX1jbGFzcyBodHtjb25zdHJ1Y3Rvcih0LG4pe3RoaXMucHJvamVjdD10LHRoaXMudGhpc0FyZz1ufWNhbGwodCxuKXtyZXR1cm4gbi5zdWJzY3JpYmUobmV3IF90KHQsdGhpcy5wcm9qZWN0LHRoaXMudGhpc0FyZykpfX1jbGFzcyBfdCBleHRlbmRzIGR7Y29uc3RydWN0b3IodCxuLGUpe3N1cGVyKHQpLHRoaXMucHJvamVjdD1uLHRoaXMuY291bnQ9MCx0aGlzLnRoaXNBcmc9ZXx8dGhpc31fbmV4dCh0KXtsZXQgbjt0cnl7bj10aGlzLnByb2plY3QuY2FsbCh0aGlzLnRoaXNBcmcsdCx0aGlzLmNvdW50KyspfWNhdGNoKHQpe3JldHVybiB2b2lkIHRoaXMuZGVzdGluYXRpb24uZXJyb3IodCl9dGhpcy5kZXN0aW5hdGlvbi5uZXh0KG4pfX1jbGFzcyBDdCBleHRlbmRzIGR7bm90aWZ5TmV4dCh0LG4sZSxhLG8pe3RoaXMuZGVzdGluYXRpb24ubmV4dChuKX1ub3RpZnlFcnJvcih0LG4pe3RoaXMuZGVzdGluYXRpb24uZXJyb3IodCl9bm90aWZ5Q29tcGxldGUodCl7dGhpcy5kZXN0aW5hdGlvbi5jb21wbGV0ZSgpfX1jbGFzcyBNdCBleHRlbmRzIGR7Y29uc3RydWN0b3IodCxuLGUpe3N1cGVyKCksdGhpcy5wYXJlbnQ9dCx0aGlzLm91dGVyVmFsdWU9bix0aGlzLm91dGVySW5kZXg9ZSx0aGlzLmluZGV4PTB9X25leHQodCl7dGhpcy5wYXJlbnQubm90aWZ5TmV4dCh0aGlzLm91dGVyVmFsdWUsdCx0aGlzLm91dGVySW5kZXgsdGhpcy5pbmRleCsrLHRoaXMpfV9lcnJvcih0KXt0aGlzLnBhcmVudC5ub3RpZnlFcnJvcih0LHRoaXMpLHRoaXMudW5zdWJzY3JpYmUoKX1fY29tcGxldGUoKXt0aGlzLnBhcmVudC5ub3RpZnlDb21wbGV0ZSh0aGlzKSx0aGlzLnVuc3Vic2NyaWJlKCl9fWNvbnN0IE90PShmdW5jdGlvbiBQdCgpe3JldHVybiJmdW5jdGlvbiI9PXR5cGVvZiBTeW1ib2wmJlN5bWJvbC5pdGVyYXRvcj9TeW1ib2wuaXRlcmF0b3I6IkBAaXRlcmF0b3IifSkoKSx4dD10PT50JiYibnVtYmVyIj09dHlwZW9mIHQubGVuZ3RoJiYiZnVuY3Rpb24iIT10eXBlb2YgdDtmdW5jdGlvbiB5dCh0KXtyZXR1cm4hIXQmJiJmdW5jdGlvbiIhPXR5cGVvZiB0LnN1YnNjcmliZSYmImZ1bmN0aW9uIj09dHlwZW9mIHQudGhlbn1mdW5jdGlvbiBrdCh0KXtyZXR1cm4gbj0+eyhmdW5jdGlvbiBlKHQsbil7dmFyIGUsYSxvLHI7cmV0dXJuKGZ1bmN0aW9uIGkodCxuLGUsYSl7cmV0dXJuIG5ldyhlfHwoZT1Qcm9taXNlKSkoKGZ1bmN0aW9uKG8scil7ZnVuY3Rpb24gaSh0KXt0cnl7cyhhLm5leHQodCkpfWNhdGNoKHQpe3IodCl9fWZ1bmN0aW9uIGModCl7dHJ5e3MoYS50aHJvdyh0KSl9Y2F0Y2godCl7cih0KX19ZnVuY3Rpb24gcyh0KXt0LmRvbmU/byh0LnZhbHVlKTooZnVuY3Rpb24gbih0KXtyZXR1cm4gdCBpbnN0YW5jZW9mIGU/dDpuZXcgZSgoZnVuY3Rpb24obil7bih0KX0pKX0pKHQudmFsdWUpLnRoZW4oaSxjKX1zKChhPWEuYXBwbHkodCxufHxbXSkpLm5leHQoKSl9KSl9KSh0aGlzLHZvaWQgMCx2b2lkIDAsKGZ1bmN0aW9uKigpe3RyeXtmb3IoZT0oZnVuY3Rpb24gaSh0KXtpZighU3ltYm9sLmFzeW5jSXRlcmF0b3IpdGhyb3cgbmV3IFR5cGVFcnJvcigiU3ltYm9sLmFzeW5jSXRlcmF0b3IgaXMgbm90IGRlZmluZWQuIik7dmFyIG4sZT10W1N5bWJvbC5hc3luY0l0ZXJhdG9yXTtyZXR1cm4gZT9lLmNhbGwodCk6KHQ9KGZ1bmN0aW9uIGEodCl7dmFyIG49ImZ1bmN0aW9uIj09dHlwZW9mIFN5bWJvbCYmU3ltYm9sLml0ZXJhdG9yLGU9biYmdFtuXSxhPTA7aWYoZSlyZXR1cm4gZS5jYWxsKHQpO2lmKHQmJiJudW1iZXIiPT10eXBlb2YgdC5sZW5ndGgpcmV0dXJue25leHQ6ZnVuY3Rpb24oKXtyZXR1cm4gdCYmYT49dC5sZW5ndGgmJih0PXZvaWQgMCkse3ZhbHVlOnQmJnRbYSsrXSxkb25lOiF0fX19O3Rocm93IG5ldyBUeXBlRXJyb3Iobj8iT2JqZWN0IGlzIG5vdCBpdGVyYWJsZS4iOiJTeW1ib2wuaXRlcmF0b3IgaXMgbm90IGRlZmluZWQuIil9KSh0KSxuPXt9LG8oIm5leHQiKSxvKCJ0aHJvdyIpLG8oInJldHVybiIpLG5bU3ltYm9sLmFzeW5jSXRlcmF0b3JdPWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXN9LG4pO2Z1bmN0aW9uIG8oZSl7bltlXT10W2VdJiZmdW5jdGlvbihuKXtyZXR1cm4gbmV3IFByb21pc2UoKGZ1bmN0aW9uKGEsbyl7IShmdW5jdGlvbiByKHQsbixlLGEpe1Byb21pc2UucmVzb2x2ZShhKS50aGVuKChmdW5jdGlvbihuKXt0KHt2YWx1ZTpuLGRvbmU6ZX0pfSksbil9KShhLG8sKG49dFtlXShuKSkuZG9uZSxuLnZhbHVlKX0pKX19fSkodCk7IShhPXlpZWxkIGUubmV4dCgpKS5kb25lOyluLm5leHQoYS52YWx1ZSl9Y2F0Y2godCl7bz17ZXJyb3I6dH19ZmluYWxseXt0cnl7YSYmIWEuZG9uZSYmKHI9ZS5yZXR1cm4pJiYoeWllbGQgci5jYWxsKGUpKX1maW5hbGx5e2lmKG8pdGhyb3cgby5lcnJvcn19bi5jb21wbGV0ZSgpfSkpfSkodCxuKS5jYXRjaCgodD0+bi5lcnJvcih0KSkpfX1jb25zdCB2dD10PT57aWYodCYmImZ1bmN0aW9uIj09dHlwZW9mIHRbcF0pcmV0dXJuIGU9dCx0PT57Y29uc3Qgbj1lW3BdKCk7aWYoImZ1bmN0aW9uIiE9dHlwZW9mIG4uc3Vic2NyaWJlKXRocm93IG5ldyBUeXBlRXJyb3IoIlByb3ZpZGVkIG9iamVjdCBkb2VzIG5vdCBjb3JyZWN0bHkgaW1wbGVtZW50IFN5bWJvbC5vYnNlcnZhYmxlIik7cmV0dXJuIG4uc3Vic2NyaWJlKHQpfTtpZih4dCh0KSlyZXR1cm4gRyh0KTtpZih5dCh0KSlyZXR1cm4odD0+bj0+KHQudGhlbigodD0+e24uY2xvc2VkfHwobi5uZXh0KHQpLG4uY29tcGxldGUoKSl9KSwodD0+bi5lcnJvcih0KSkpLnRoZW4obnVsbCxhKSxuKSkodCk7aWYodCYmImZ1bmN0aW9uIj09dHlwZW9mIHRbT3RdKXJldHVybiBuPXQsdD0+e2NvbnN0IGU9bltPdF0oKTtmb3IoOzspe2NvbnN0IG49ZS5uZXh0KCk7aWYobi5kb25lKXt0LmNvbXBsZXRlKCk7YnJlYWt9aWYodC5uZXh0KG4udmFsdWUpLHQuY2xvc2VkKWJyZWFrfXJldHVybiJmdW5jdGlvbiI9PXR5cGVvZiBlLnJldHVybiYmdC5hZGQoKCgpPT57ZS5yZXR1cm4mJmUucmV0dXJuKCl9KSksdH07aWYoU3ltYm9sJiZTeW1ib2wuYXN5bmNJdGVyYXRvciYmdCYmImZ1bmN0aW9uIj09dHlwZW9mIHRbU3ltYm9sLmFzeW5jSXRlcmF0b3JdKXJldHVybiBrdCh0KTt7Y29uc3Qgbj1pKHQpPyJhbiBpbnZhbGlkIG9iamVjdCI6YCcke3R9J2A7dGhyb3cgbmV3IFR5cGVFcnJvcihgWW91IHByb3ZpZGVkICR7bn0gd2hlcmUgYSBzdHJlYW0gd2FzIGV4cGVjdGVkLiBZb3UgY2FuIHByb3ZpZGUgYW4gT2JzZXJ2YWJsZSwgUHJvbWlzZSwgQXJyYXksIG9yIEl0ZXJhYmxlLmApfXZhciBuLGV9O2Z1bmN0aW9uIHd0KHQsbixlLGEsbz1uZXcgTXQodCxlLGEpKXtpZighby5jbG9zZWQpcmV0dXJuIG4gaW5zdGFuY2VvZiBfP24uc3Vic2NyaWJlKG8pOnZ0KG4pKG8pfWNvbnN0IFN0PXt9O2Z1bmN0aW9uIEV0KC4uLnQpe2xldCBuLGU7cmV0dXJuIFcodFt0Lmxlbmd0aC0xXSkmJihlPXQucG9wKCkpLCJmdW5jdGlvbiI9PXR5cGVvZiB0W3QubGVuZ3RoLTFdJiYobj10LnBvcCgpKSwxPT09dC5sZW5ndGgmJnIodFswXSkmJih0PXRbMF0pLHEodCxlKS5saWZ0KG5ldyBBdChuKSl9Y2xhc3MgQXR7Y29uc3RydWN0b3IodCl7dGhpcy5yZXN1bHRTZWxlY3Rvcj10fWNhbGwodCxuKXtyZXR1cm4gbi5zdWJzY3JpYmUobmV3IHp0KHQsdGhpcy5yZXN1bHRTZWxlY3RvcikpfX1jbGFzcyB6dCBleHRlbmRzIEN0e2NvbnN0cnVjdG9yKHQsbil7c3VwZXIodCksdGhpcy5yZXN1bHRTZWxlY3Rvcj1uLHRoaXMuYWN0aXZlPTAsdGhpcy52YWx1ZXM9W10sdGhpcy5vYnNlcnZhYmxlcz1bXX1fbmV4dCh0KXt0aGlzLnZhbHVlcy5wdXNoKFN0KSx0aGlzLm9ic2VydmFibGVzLnB1c2godCl9X2NvbXBsZXRlKCl7Y29uc3QgdD10aGlzLm9ic2VydmFibGVzLG49dC5sZW5ndGg7aWYoMD09PW4pdGhpcy5kZXN0aW5hdGlvbi5jb21wbGV0ZSgpO2Vsc2V7dGhpcy5hY3RpdmU9bix0aGlzLnRvUmVzcG9uZD1uO2ZvcihsZXQgZT0wO2U8bjtlKyspe2NvbnN0IG49dFtlXTt0aGlzLmFkZCh3dCh0aGlzLG4sbixlKSl9fX1ub3RpZnlDb21wbGV0ZSh0KXswPT0odGhpcy5hY3RpdmUtPTEpJiZ0aGlzLmRlc3RpbmF0aW9uLmNvbXBsZXRlKCl9bm90aWZ5TmV4dCh0LG4sZSxhLG8pe2NvbnN0IHI9dGhpcy52YWx1ZXMsaT10aGlzLnRvUmVzcG9uZD9yW2VdPT09U3Q/LS10aGlzLnRvUmVzcG9uZDp0aGlzLnRvUmVzcG9uZDowO3JbZV09biwwPT09aSYmKHRoaXMucmVzdWx0U2VsZWN0b3I/dGhpcy5fdHJ5UmVzdWx0U2VsZWN0b3Iocik6dGhpcy5kZXN0aW5hdGlvbi5uZXh0KHIuc2xpY2UoKSkpfV90cnlSZXN1bHRTZWxlY3Rvcih0KXtsZXQgbjt0cnl7bj10aGlzLnJlc3VsdFNlbGVjdG9yLmFwcGx5KHRoaXMsdCl9Y2F0Y2godCl7cmV0dXJuIHZvaWQgdGhpcy5kZXN0aW5hdGlvbi5lcnJvcih0KX10aGlzLmRlc3RpbmF0aW9uLm5leHQobil9fWZ1bmN0aW9uIFJ0KHQsbil7cmV0dXJuIG4/KGZ1bmN0aW9uIGUodCxuKXtpZihudWxsIT10KXtpZigoZnVuY3Rpb24gZSh0KXtyZXR1cm4gdCYmImZ1bmN0aW9uIj09dHlwZW9mIHRbcF19KSh0KSlyZXR1cm4oZnVuY3Rpb24gYSh0LG4pe3JldHVybiBuZXcgXygoZT0+e2NvbnN0IGE9bmV3IHM7cmV0dXJuIGEuYWRkKG4uc2NoZWR1bGUoKCgpPT57Y29uc3Qgbz10W3BdKCk7YS5hZGQoby5zdWJzY3JpYmUoe25leHQodCl7YS5hZGQobi5zY2hlZHVsZSgoKCk9PmUubmV4dCh0KSkpKX0sZXJyb3IodCl7YS5hZGQobi5zY2hlZHVsZSgoKCk9PmUuZXJyb3IodCkpKSl9LGNvbXBsZXRlKCl7YS5hZGQobi5zY2hlZHVsZSgoKCk9PmUuY29tcGxldGUoKSkpKX19KSl9KSkpLGF9KSl9KSh0LG4pO2lmKHl0KHQpKXJldHVybihmdW5jdGlvbiBvKHQsbil7cmV0dXJuIG5ldyBfKChlPT57Y29uc3QgYT1uZXcgcztyZXR1cm4gYS5hZGQobi5zY2hlZHVsZSgoKCk9PnQudGhlbigodD0+e2EuYWRkKG4uc2NoZWR1bGUoKCgpPT57ZS5uZXh0KHQpLGEuYWRkKG4uc2NoZWR1bGUoKCgpPT5lLmNvbXBsZXRlKCkpKSl9KSkpfSksKHQ9PnthLmFkZChuLnNjaGVkdWxlKCgoKT0+ZS5lcnJvcih0KSkpKX0pKSkpKSxhfSkpfSkodCxuKTtpZih4dCh0KSlyZXR1cm4gWSh0LG4pO2lmKChmdW5jdGlvbiByKHQpe3JldHVybiB0JiYiZnVuY3Rpb24iPT10eXBlb2YgdFtPdF19KSh0KXx8InN0cmluZyI9PXR5cGVvZiB0KXJldHVybihmdW5jdGlvbiBpKHQsbil7aWYoIXQpdGhyb3cgbmV3IEVycm9yKCJJdGVyYWJsZSBjYW5ub3QgYmUgbnVsbCIpO3JldHVybiBuZXcgXygoZT0+e2NvbnN0IGE9bmV3IHM7bGV0IG87cmV0dXJuIGEuYWRkKCgoKT0+e28mJiJmdW5jdGlvbiI9PXR5cGVvZiBvLnJldHVybiYmby5yZXR1cm4oKX0pKSxhLmFkZChuLnNjaGVkdWxlKCgoKT0+e289dFtPdF0oKSxhLmFkZChuLnNjaGVkdWxlKChmdW5jdGlvbigpe2lmKGUuY2xvc2VkKXJldHVybjtsZXQgdCxuO3RyeXtjb25zdCBlPW8ubmV4dCgpO3Q9ZS52YWx1ZSxuPWUuZG9uZX1jYXRjaCh0KXtyZXR1cm4gdm9pZCBlLmVycm9yKHQpfW4/ZS5jb21wbGV0ZSgpOihlLm5leHQodCksdGhpcy5zY2hlZHVsZSgpKX0pKSl9KSkpLGF9KSl9KSh0LG4pO2lmKFN5bWJvbCYmU3ltYm9sLmFzeW5jSXRlcmF0b3ImJiJmdW5jdGlvbiI9PXR5cGVvZiB0W1N5bWJvbC5hc3luY0l0ZXJhdG9yXSlyZXR1cm4oZnVuY3Rpb24gYyh0LG4pe2lmKCF0KXRocm93IG5ldyBFcnJvcigiSXRlcmFibGUgY2Fubm90IGJlIG51bGwiKTtyZXR1cm4gbmV3IF8oKGU9Pntjb25zdCBhPW5ldyBzO3JldHVybiBhLmFkZChuLnNjaGVkdWxlKCgoKT0+e2NvbnN0IG89dFtTeW1ib2wuYXN5bmNJdGVyYXRvcl0oKTthLmFkZChuLnNjaGVkdWxlKChmdW5jdGlvbigpe28ubmV4dCgpLnRoZW4oKHQ9Pnt0LmRvbmU/ZS5jb21wbGV0ZSgpOihlLm5leHQodC52YWx1ZSksdGhpcy5zY2hlZHVsZSgpKX0pKX0pKSl9KSkpLGF9KSl9KSh0LG4pfXRocm93IG5ldyBUeXBlRXJyb3IoKG51bGwhPT10JiZ0eXBlb2YgdHx8dCkrIiBpcyBub3Qgb2JzZXJ2YWJsZSIpfSkodCxuKTp0IGluc3RhbmNlb2YgXz90Om5ldyBfKHZ0KHQpKX1mdW5jdGlvbiBUdCh0LG4sZT1OdW1iZXIuUE9TSVRJVkVfSU5GSU5JVFkpe3JldHVybiJmdW5jdGlvbiI9PXR5cGVvZiBuP2E9PmEucGlwZShUdCgoKGUsYSk9PlJ0KHQoZSxhKSkucGlwZShmdCgoKHQsbyk9Pm4oZSx0LGEsbykpKSkpLGUpKTooIm51bWJlciI9PXR5cGVvZiBuJiYoZT1uKSxuPT5uLmxpZnQobmV3IER0KHQsZSkpKX1jbGFzcyBEdHtjb25zdHJ1Y3Rvcih0LG49TnVtYmVyLlBPU0lUSVZFX0lORklOSVRZKXt0aGlzLnByb2plY3Q9dCx0aGlzLmNvbmN1cnJlbnQ9bn1jYWxsKHQsbil7cmV0dXJuIG4uc3Vic2NyaWJlKG5ldyBJdCh0LHRoaXMucHJvamVjdCx0aGlzLmNvbmN1cnJlbnQpKX19Y2xhc3MgSXQgZXh0ZW5kcyBDdHtjb25zdHJ1Y3Rvcih0LG4sZT1OdW1iZXIuUE9TSVRJVkVfSU5GSU5JVFkpe3N1cGVyKHQpLHRoaXMucHJvamVjdD1uLHRoaXMuY29uY3VycmVudD1lLHRoaXMuaGFzQ29tcGxldGVkPSExLHRoaXMuYnVmZmVyPVtdLHRoaXMuYWN0aXZlPTAsdGhpcy5pbmRleD0wfV9uZXh0KHQpe3RoaXMuYWN0aXZlPHRoaXMuY29uY3VycmVudD90aGlzLl90cnlOZXh0KHQpOnRoaXMuYnVmZmVyLnB1c2godCl9X3RyeU5leHQodCl7bGV0IG47Y29uc3QgZT10aGlzLmluZGV4Kys7dHJ5e249dGhpcy5wcm9qZWN0KHQsZSl9Y2F0Y2godCl7cmV0dXJuIHZvaWQgdGhpcy5kZXN0aW5hdGlvbi5lcnJvcih0KX10aGlzLmFjdGl2ZSsrLHRoaXMuX2lubmVyU3ViKG4sdCxlKX1faW5uZXJTdWIodCxuLGUpe2NvbnN0IGE9bmV3IE10KHRoaXMsbixlKSxvPXRoaXMuZGVzdGluYXRpb247by5hZGQoYSk7Y29uc3Qgcj13dCh0aGlzLHQsdm9pZCAwLHZvaWQgMCxhKTtyIT09YSYmby5hZGQocil9X2NvbXBsZXRlKCl7dGhpcy5oYXNDb21wbGV0ZWQ9ITAsMD09PXRoaXMuYWN0aXZlJiYwPT09dGhpcy5idWZmZXIubGVuZ3RoJiZ0aGlzLmRlc3RpbmF0aW9uLmNvbXBsZXRlKCksdGhpcy51bnN1YnNjcmliZSgpfW5vdGlmeU5leHQodCxuLGUsYSxvKXt0aGlzLmRlc3RpbmF0aW9uLm5leHQobil9bm90aWZ5Q29tcGxldGUodCl7Y29uc3Qgbj10aGlzLmJ1ZmZlcjt0aGlzLnJlbW92ZSh0KSx0aGlzLmFjdGl2ZS0tLG4ubGVuZ3RoPjA/dGhpcy5fbmV4dChuLnNoaWZ0KCkpOjA9PT10aGlzLmFjdGl2ZSYmdGhpcy5oYXNDb21wbGV0ZWQmJnRoaXMuZGVzdGluYXRpb24uY29tcGxldGUoKX19ZnVuY3Rpb24gTnQodD1OdW1iZXIuUE9TSVRJVkVfSU5GSU5JVFkpe3JldHVybiBUdChiLHQpfWZ1bmN0aW9uIEZ0KC4uLnQpe3JldHVybihmdW5jdGlvbiBuKCl7cmV0dXJuIE50KDEpfSkoKShaKC4uLnQpKX1mdW5jdGlvbiBMdCh0KXtyZXR1cm4gbmV3IF8oKG49PntsZXQgZTt0cnl7ZT10KCl9Y2F0Y2godCl7cmV0dXJuIHZvaWQgbi5lcnJvcih0KX1yZXR1cm4oZT9SdChlKTpVKS5zdWJzY3JpYmUobil9KSl9ZnVuY3Rpb24gSHQoLi4udCl7aWYoMT09PXQubGVuZ3RoKXtjb25zdCBuPXRbMF07aWYocihuKSlyZXR1cm4gQnQobixudWxsKTtpZihpKG4pJiZPYmplY3QuZ2V0UHJvdG90eXBlT2Yobik9PT1PYmplY3QucHJvdG90eXBlKXtjb25zdCB0PU9iamVjdC5rZXlzKG4pO3JldHVybiBCdCh0Lm1hcCgodD0+blt0XSkpLHQpfX1pZigiZnVuY3Rpb24iPT10eXBlb2YgdFt0Lmxlbmd0aC0xXSl7Y29uc3Qgbj10LnBvcCgpO3JldHVybiBCdCh0PTE9PT10Lmxlbmd0aCYmcih0WzBdKT90WzBdOnQsbnVsbCkucGlwZShmdCgodD0+biguLi50KSkpKX1yZXR1cm4gQnQodCxudWxsKX1mdW5jdGlvbiBCdCh0LG4pe3JldHVybiBuZXcgXygoZT0+e2NvbnN0IGE9dC5sZW5ndGg7aWYoMD09PWEpcmV0dXJuIHZvaWQgZS5jb21wbGV0ZSgpO2NvbnN0IG89bmV3IEFycmF5KGEpO2xldCByPTAsaT0wO2ZvcihsZXQgYz0wO2M8YTtjKyspe2NvbnN0IHM9UnQodFtjXSk7bGV0IGw9ITE7ZS5hZGQocy5zdWJzY3JpYmUoe25leHQ6dD0+e2x8fChsPSEwLGkrKyksb1tjXT10fSxlcnJvcjp0PT5lLmVycm9yKHQpLGNvbXBsZXRlOigpPT57cisrLHIhPT1hJiZsfHwoaT09PWEmJmUubmV4dChuP24ucmVkdWNlKCgodCxuLGUpPT4odFtuXT1vW2VdLHQpKSx7fSk6byksZS5jb21wbGV0ZSgpKX19KSl9fSkpfWZ1bmN0aW9uIFZ0KG4sZSxhLG8pe3JldHVybiB0KGEpJiYobz1hLGE9dm9pZCAwKSxvP1Z0KG4sZSxhKS5waXBlKGZ0KCh0PT5yKHQpP28oLi4udCk6byh0KSkpKTpuZXcgXygodD0+e2p0KG4sZSwoZnVuY3Rpb24gbyhuKXt0Lm5leHQoYXJndW1lbnRzLmxlbmd0aD4xP0FycmF5LnByb3RvdHlwZS5zbGljZS5jYWxsKGFyZ3VtZW50cyk6bil9KSx0LGEpfSkpfWZ1bmN0aW9uIGp0KHQsbixlLGEsbyl7bGV0IHI7aWYoKGZ1bmN0aW9uIGkodCl7cmV0dXJuIHQmJiJmdW5jdGlvbiI9PXR5cGVvZiB0LmFkZEV2ZW50TGlzdGVuZXImJiJmdW5jdGlvbiI9PXR5cGVvZiB0LnJlbW92ZUV2ZW50TGlzdGVuZXJ9KSh0KSl7Y29uc3QgYT10O3QuYWRkRXZlbnRMaXN0ZW5lcihuLGUsbykscj0oKT0+YS5yZW1vdmVFdmVudExpc3RlbmVyKG4sZSxvKX1lbHNlIGlmKChmdW5jdGlvbiBjKHQpe3JldHVybiB0JiYiZnVuY3Rpb24iPT10eXBlb2YgdC5vbiYmImZ1bmN0aW9uIj09dHlwZW9mIHQub2ZmfSkodCkpe2NvbnN0IGE9dDt0Lm9uKG4sZSkscj0oKT0+YS5vZmYobixlKX1lbHNlIGlmKChmdW5jdGlvbiBzKHQpe3JldHVybiB0JiYiZnVuY3Rpb24iPT10eXBlb2YgdC5hZGRMaXN0ZW5lciYmImZ1bmN0aW9uIj09dHlwZW9mIHQucmVtb3ZlTGlzdGVuZXJ9KSh0KSl7Y29uc3QgYT10O3QuYWRkTGlzdGVuZXIobixlKSxyPSgpPT5hLnJlbW92ZUxpc3RlbmVyKG4sZSl9ZWxzZXtpZighdHx8IXQubGVuZ3RoKXRocm93IG5ldyBUeXBlRXJyb3IoIkludmFsaWQgZXZlbnQgdGFyZ2V0Iik7Zm9yKGxldCByPTAsaT10Lmxlbmd0aDtyPGk7cisrKWp0KHRbcl0sbixlLGEsbyl9YS5hZGQocil9ZnVuY3Rpb24gVXQodCl7cmV0dXJuIXIodCkmJnQtcGFyc2VGbG9hdCh0KSsxPj0wfWZ1bmN0aW9uIFd0KC4uLnQpe2xldCBuLGU9TnVtYmVyLlBPU0lUSVZFX0lORklOSVRZLGE9dFt0Lmxlbmd0aC0xXTtyZXR1cm4gVyhhKT8obj10LnBvcCgpLHQubGVuZ3RoPjEmJiJudW1iZXIiPT10eXBlb2YgdFt0Lmxlbmd0aC0xXSYmKGU9dC5wb3AoKSkpOiJudW1iZXIiPT10eXBlb2YgYSYmKGU9dC5wb3AoKSksIW4mJjE9PT10Lmxlbmd0aCYmdFswXWluc3RhbmNlb2YgXz90WzBdOk50KGUpKHEodCxuKSl9ZnVuY3Rpb24gR3QodCxuKXtyZXR1cm4gZnVuY3Rpb24gZShhKXtyZXR1cm4gYS5saWZ0KG5ldyBZdCh0LG4pKX19Y2xhc3MgWXR7Y29uc3RydWN0b3IodCxuKXt0aGlzLnByZWRpY2F0ZT10LHRoaXMudGhpc0FyZz1ufWNhbGwodCxuKXtyZXR1cm4gbi5zdWJzY3JpYmUobmV3IHF0KHQsdGhpcy5wcmVkaWNhdGUsdGhpcy50aGlzQXJnKSl9fWNsYXNzIHF0IGV4dGVuZHMgZHtjb25zdHJ1Y3Rvcih0LG4sZSl7c3VwZXIodCksdGhpcy5wcmVkaWNhdGU9bix0aGlzLnRoaXNBcmc9ZSx0aGlzLmNvdW50PTB9X25leHQodCl7bGV0IG47dHJ5e249dGhpcy5wcmVkaWNhdGUuY2FsbCh0aGlzLnRoaXNBcmcsdCx0aGlzLmNvdW50KyspfWNhdGNoKHQpe3JldHVybiB2b2lkIHRoaXMuZGVzdGluYXRpb24uZXJyb3IodCl9biYmdGhpcy5kZXN0aW5hdGlvbi5uZXh0KHQpfX1mdW5jdGlvbiBadCh0PTAsbixlKXtsZXQgYT0tMTtyZXR1cm4gVXQobik/YT1OdW1iZXIobik8MT8xOk51bWJlcihuKTpXKG4pJiYoZT1uKSxXKGUpfHwoZT1tdCksbmV3IF8oKG49Pntjb25zdCBvPVV0KHQpP3Q6K3QtZS5ub3coKTtyZXR1cm4gZS5zY2hlZHVsZShYdCxvLHtpbmRleDowLHBlcmlvZDphLHN1YnNjcmliZXI6bn0pfSkpfWZ1bmN0aW9uIFh0KHQpe2NvbnN0e2luZGV4Om4scGVyaW9kOmUsc3Vic2NyaWJlcjphfT10O2lmKGEubmV4dChuKSwhYS5jbG9zZWQpe2lmKC0xPT09ZSlyZXR1cm4gYS5jb21wbGV0ZSgpO3QuaW5kZXg9bisxLHRoaXMuc2NoZWR1bGUodCxlKX19Y2xhc3MgSnR7Y29uc3RydWN0b3IodCl7dGhpcy5yZXN1bHRTZWxlY3Rvcj10fWNhbGwodCxuKXtyZXR1cm4gbi5zdWJzY3JpYmUobmV3IFF0KHQsdGhpcy5yZXN1bHRTZWxlY3RvcikpfX1jbGFzcyBRdCBleHRlbmRzIGR7Y29uc3RydWN0b3IodCxuLGU9T2JqZWN0LmNyZWF0ZShudWxsKSl7c3VwZXIodCksdGhpcy5pdGVyYXRvcnM9W10sdGhpcy5hY3RpdmU9MCx0aGlzLnJlc3VsdFNlbGVjdG9yPW4sdGhpcy52YWx1ZXM9ZX1fbmV4dCh0KXtjb25zdCBuPXRoaXMuaXRlcmF0b3JzO3IodCk/bi5wdXNoKG5ldyAkdCh0KSk6bi5wdXNoKCJmdW5jdGlvbiI9PXR5cGVvZiB0W090XT9uZXcgS3QodFtPdF0oKSk6bmV3IHRuKHRoaXMuZGVzdGluYXRpb24sdGhpcyx0KSl9X2NvbXBsZXRlKCl7Y29uc3QgdD10aGlzLml0ZXJhdG9ycyxuPXQubGVuZ3RoO2lmKHRoaXMudW5zdWJzY3JpYmUoKSwwIT09bil7dGhpcy5hY3RpdmU9bjtmb3IobGV0IGU9MDtlPG47ZSsrKXtsZXQgbj10W2VdO24uc3RpbGxVbnN1YnNjcmliZWQ/dGhpcy5kZXN0aW5hdGlvbi5hZGQobi5zdWJzY3JpYmUobixlKSk6dGhpcy5hY3RpdmUtLX19ZWxzZSB0aGlzLmRlc3RpbmF0aW9uLmNvbXBsZXRlKCl9bm90aWZ5SW5hY3RpdmUoKXt0aGlzLmFjdGl2ZS0tLDA9PT10aGlzLmFjdGl2ZSYmdGhpcy5kZXN0aW5hdGlvbi5jb21wbGV0ZSgpfWNoZWNrSXRlcmF0b3JzKCl7Y29uc3QgdD10aGlzLml0ZXJhdG9ycyxuPXQubGVuZ3RoLGU9dGhpcy5kZXN0aW5hdGlvbjtmb3IobGV0IGU9MDtlPG47ZSsrKXtsZXQgbj10W2VdO2lmKCJmdW5jdGlvbiI9PXR5cGVvZiBuLmhhc1ZhbHVlJiYhbi5oYXNWYWx1ZSgpKXJldHVybn1sZXQgYT0hMTtjb25zdCBvPVtdO2ZvcihsZXQgcj0wO3I8bjtyKyspe2xldCBuPXRbcl0saT1uLm5leHQoKTtpZihuLmhhc0NvbXBsZXRlZCgpJiYoYT0hMCksaS5kb25lKXJldHVybiB2b2lkIGUuY29tcGxldGUoKTtvLnB1c2goaS52YWx1ZSl9dGhpcy5yZXN1bHRTZWxlY3Rvcj90aGlzLl90cnlyZXN1bHRTZWxlY3RvcihvKTplLm5leHQobyksYSYmZS5jb21wbGV0ZSgpfV90cnlyZXN1bHRTZWxlY3Rvcih0KXtsZXQgbjt0cnl7bj10aGlzLnJlc3VsdFNlbGVjdG9yLmFwcGx5KHRoaXMsdCl9Y2F0Y2godCl7cmV0dXJuIHZvaWQgdGhpcy5kZXN0aW5hdGlvbi5lcnJvcih0KX10aGlzLmRlc3RpbmF0aW9uLm5leHQobil9fWNsYXNzIEt0e2NvbnN0cnVjdG9yKHQpe3RoaXMuaXRlcmF0b3I9dCx0aGlzLm5leHRSZXN1bHQ9dC5uZXh0KCl9aGFzVmFsdWUoKXtyZXR1cm4hMH1uZXh0KCl7Y29uc3QgdD10aGlzLm5leHRSZXN1bHQ7cmV0dXJuIHRoaXMubmV4dFJlc3VsdD10aGlzLml0ZXJhdG9yLm5leHQoKSx0fWhhc0NvbXBsZXRlZCgpe2NvbnN0IHQ9dGhpcy5uZXh0UmVzdWx0O3JldHVybiB0JiYhIXQuZG9uZX19Y2xhc3MgJHR7Y29uc3RydWN0b3IodCl7dGhpcy5hcnJheT10LHRoaXMuaW5kZXg9MCx0aGlzLmxlbmd0aD0wLHRoaXMubGVuZ3RoPXQubGVuZ3RofVtPdF0oKXtyZXR1cm4gdGhpc31uZXh0KHQpe2NvbnN0IG49dGhpcy5pbmRleCsrO3JldHVybiBuPHRoaXMubGVuZ3RoP3t2YWx1ZTp0aGlzLmFycmF5W25dLGRvbmU6ITF9Ont2YWx1ZTpudWxsLGRvbmU6ITB9fWhhc1ZhbHVlKCl7cmV0dXJuIHRoaXMuYXJyYXkubGVuZ3RoPnRoaXMuaW5kZXh9aGFzQ29tcGxldGVkKCl7cmV0dXJuIHRoaXMuYXJyYXkubGVuZ3RoPT09dGhpcy5pbmRleH19Y2xhc3MgdG4gZXh0ZW5kcyBDdHtjb25zdHJ1Y3Rvcih0LG4sZSl7c3VwZXIodCksdGhpcy5wYXJlbnQ9bix0aGlzLm9ic2VydmFibGU9ZSx0aGlzLnN0aWxsVW5zdWJzY3JpYmVkPSEwLHRoaXMuYnVmZmVyPVtdLHRoaXMuaXNDb21wbGV0ZT0hMX1bT3RdKCl7cmV0dXJuIHRoaXN9bmV4dCgpe2NvbnN0IHQ9dGhpcy5idWZmZXI7cmV0dXJuIDA9PT10Lmxlbmd0aCYmdGhpcy5pc0NvbXBsZXRlP3t2YWx1ZTpudWxsLGRvbmU6ITB9Ont2YWx1ZTp0LnNoaWZ0KCksZG9uZTohMX19aGFzVmFsdWUoKXtyZXR1cm4gdGhpcy5idWZmZXIubGVuZ3RoPjB9aGFzQ29tcGxldGVkKCl7cmV0dXJuIDA9PT10aGlzLmJ1ZmZlci5sZW5ndGgmJnRoaXMuaXNDb21wbGV0ZX1ub3RpZnlDb21wbGV0ZSgpe3RoaXMuYnVmZmVyLmxlbmd0aD4wPyh0aGlzLmlzQ29tcGxldGU9ITAsdGhpcy5wYXJlbnQubm90aWZ5SW5hY3RpdmUoKSk6dGhpcy5kZXN0aW5hdGlvbi5jb21wbGV0ZSgpfW5vdGlmeU5leHQodCxuLGUsYSxvKXt0aGlzLmJ1ZmZlci5wdXNoKG4pLHRoaXMucGFyZW50LmNoZWNrSXRlcmF0b3JzKCl9c3Vic2NyaWJlKHQsbil7cmV0dXJuIHd0KHRoaXMsdGhpcy5vYnNlcnZhYmxlLHRoaXMsbil9fWNsYXNzIG5ue2NvbnN0cnVjdG9yKHQpe3RoaXMuZHVyYXRpb25TZWxlY3Rvcj10fWNhbGwodCxuKXtyZXR1cm4gbi5zdWJzY3JpYmUobmV3IGVuKHQsdGhpcy5kdXJhdGlvblNlbGVjdG9yKSl9fWNsYXNzIGVuIGV4dGVuZHMgQ3R7Y29uc3RydWN0b3IodCxuKXtzdXBlcih0KSx0aGlzLmR1cmF0aW9uU2VsZWN0b3I9bix0aGlzLnZhbHVlPW51bGwsdGhpcy5oYXNWYWx1ZT0hMSx0aGlzLnRocm90dGxlZD1udWxsfV9uZXh0KHQpe2lmKHRoaXMudmFsdWU9dCx0aGlzLmhhc1ZhbHVlPSEwLCF0aGlzLnRocm90dGxlZCl7bGV0IG47dHJ5e2NvbnN0e2R1cmF0aW9uU2VsZWN0b3I6ZX09dGhpcztuPWUodCl9Y2F0Y2godCl7cmV0dXJuIHRoaXMuZGVzdGluYXRpb24uZXJyb3IodCl9Y29uc3QgZT13dCh0aGlzLG4pOyFlfHxlLmNsb3NlZD90aGlzLmNsZWFyVGhyb3R0bGUoKTp0aGlzLmFkZCh0aGlzLnRocm90dGxlZD1lKX19Y2xlYXJUaHJvdHRsZSgpe2NvbnN0e3ZhbHVlOnQsaGFzVmFsdWU6bix0aHJvdHRsZWQ6ZX09dGhpcztlJiYodGhpcy5yZW1vdmUoZSksdGhpcy50aHJvdHRsZWQ9bnVsbCxlLnVuc3Vic2NyaWJlKCkpLG4mJih0aGlzLnZhbHVlPW51bGwsdGhpcy5oYXNWYWx1ZT0hMSx0aGlzLmRlc3RpbmF0aW9uLm5leHQodCkpfW5vdGlmeU5leHQodCxuLGUsYSl7dGhpcy5jbGVhclRocm90dGxlKCl9bm90aWZ5Q29tcGxldGUoKXt0aGlzLmNsZWFyVGhyb3R0bGUoKX19ZnVuY3Rpb24gYW4odCxuPW10KXtyZXR1cm4oZnVuY3Rpb24gZSh0KXtyZXR1cm4gZnVuY3Rpb24gbihlKXtyZXR1cm4gZS5saWZ0KG5ldyBubih0KSl9fSkoKCgpPT5adCh0LG4pKSl9ZnVuY3Rpb24gb24odCl7cmV0dXJuIGZ1bmN0aW9uIG4oZSl7Y29uc3QgYT1uZXcgcm4odCksbz1lLmxpZnQoYSk7cmV0dXJuIGEuY2F1Z2h0PW99fWNsYXNzIHJue2NvbnN0cnVjdG9yKHQpe3RoaXMuc2VsZWN0b3I9dH1jYWxsKHQsbil7cmV0dXJuIG4uc3Vic2NyaWJlKG5ldyBjbih0LHRoaXMuc2VsZWN0b3IsdGhpcy5jYXVnaHQpKX19Y2xhc3MgY24gZXh0ZW5kcyBDdHtjb25zdHJ1Y3Rvcih0LG4sZSl7c3VwZXIodCksdGhpcy5zZWxlY3Rvcj1uLHRoaXMuY2F1Z2h0PWV9ZXJyb3IodCl7aWYoIXRoaXMuaXNTdG9wcGVkKXtsZXQgbjt0cnl7bj10aGlzLnNlbGVjdG9yKHQsdGhpcy5jYXVnaHQpfWNhdGNoKHQpe3JldHVybiB2b2lkIHN1cGVyLmVycm9yKHQpfXRoaXMuX3Vuc3Vic2NyaWJlQW5kUmVjeWNsZSgpO2NvbnN0IGU9bmV3IE10KHRoaXMsdm9pZCAwLHZvaWQgMCk7dGhpcy5hZGQoZSk7Y29uc3QgYT13dCh0aGlzLG4sdm9pZCAwLHZvaWQgMCxlKTthIT09ZSYmdGhpcy5hZGQoYSl9fX1mdW5jdGlvbiBzbiguLi50KXtyZXR1cm4oZnVuY3Rpb24gbiguLi50KXtsZXQgbjtyZXR1cm4iZnVuY3Rpb24iPT10eXBlb2YgdFt0Lmxlbmd0aC0xXSYmKG49dC5wb3AoKSksMT09PXQubGVuZ3RoJiZyKHRbMF0pJiYodD10WzBdLnNsaWNlKCkpLGU9PmUubGlmdC5jYWxsKFJ0KFtlLC4uLnRdKSxuZXcgQXQobikpfSkoLi4udCl9ZnVuY3Rpb24gbG4odCxuPW10KXtyZXR1cm4gZT0+ZS5saWZ0KG5ldyBtbih0LG4pKX1jbGFzcyBtbntjb25zdHJ1Y3Rvcih0LG4pe3RoaXMuZHVlVGltZT10LHRoaXMuc2NoZWR1bGVyPW59Y2FsbCh0LG4pe3JldHVybiBuLnN1YnNjcmliZShuZXcgZG4odCx0aGlzLmR1ZVRpbWUsdGhpcy5zY2hlZHVsZXIpKX19Y2xhc3MgZG4gZXh0ZW5kcyBke2NvbnN0cnVjdG9yKHQsbixlKXtzdXBlcih0KSx0aGlzLmR1ZVRpbWU9bix0aGlzLnNjaGVkdWxlcj1lLHRoaXMuZGVib3VuY2VkU3Vic2NyaXB0aW9uPW51bGwsdGhpcy5sYXN0VmFsdWU9bnVsbCx0aGlzLmhhc1ZhbHVlPSExfV9uZXh0KHQpe3RoaXMuY2xlYXJEZWJvdW5jZSgpLHRoaXMubGFzdFZhbHVlPXQsdGhpcy5oYXNWYWx1ZT0hMCx0aGlzLmFkZCh0aGlzLmRlYm91bmNlZFN1YnNjcmlwdGlvbj10aGlzLnNjaGVkdWxlci5zY2hlZHVsZShnbix0aGlzLmR1ZVRpbWUsdGhpcykpfV9jb21wbGV0ZSgpe3RoaXMuZGVib3VuY2VkTmV4dCgpLHRoaXMuZGVzdGluYXRpb24uY29tcGxldGUoKX1kZWJvdW5jZWROZXh0KCl7aWYodGhpcy5jbGVhckRlYm91bmNlKCksdGhpcy5oYXNWYWx1ZSl7Y29uc3R7bGFzdFZhbHVlOnR9PXRoaXM7dGhpcy5sYXN0VmFsdWU9bnVsbCx0aGlzLmhhc1ZhbHVlPSExLHRoaXMuZGVzdGluYXRpb24ubmV4dCh0KX19Y2xlYXJEZWJvdW5jZSgpe2NvbnN0IHQ9dGhpcy5kZWJvdW5jZWRTdWJzY3JpcHRpb247bnVsbCE9PXQmJih0aGlzLnJlbW92ZSh0KSx0LnVuc3Vic2NyaWJlKCksdGhpcy5kZWJvdW5jZWRTdWJzY3JpcHRpb249bnVsbCl9fWZ1bmN0aW9uIGduKHQpe3QuZGVib3VuY2VkTmV4dCgpfWZ1bmN0aW9uIHBuKHQ9bnVsbCl7cmV0dXJuIG49Pm4ubGlmdChuZXcgYm4odCkpfWNsYXNzIGJue2NvbnN0cnVjdG9yKHQpe3RoaXMuZGVmYXVsdFZhbHVlPXR9Y2FsbCh0LG4pe3JldHVybiBuLnN1YnNjcmliZShuZXcgdW4odCx0aGlzLmRlZmF1bHRWYWx1ZSkpfX1jbGFzcyB1biBleHRlbmRzIGR7Y29uc3RydWN0b3IodCxuKXtzdXBlcih0KSx0aGlzLmRlZmF1bHRWYWx1ZT1uLHRoaXMuaXNFbXB0eT0hMH1fbmV4dCh0KXt0aGlzLmlzRW1wdHk9ITEsdGhpcy5kZXN0aW5hdGlvbi5uZXh0KHQpfV9jb21wbGV0ZSgpe3RoaXMuaXNFbXB0eSYmdGhpcy5kZXN0aW5hdGlvbi5uZXh0KHRoaXMuZGVmYXVsdFZhbHVlKSx0aGlzLmRlc3RpbmF0aW9uLmNvbXBsZXRlKCl9fWZ1bmN0aW9uIGZuKHQsbj1tdCl7Y29uc3QgZT0oZnVuY3Rpb24gYSh0KXtyZXR1cm4gdCBpbnN0YW5jZW9mIERhdGUmJiFpc05hTigrdCl9KSh0KT8rdC1uLm5vdygpOk1hdGguYWJzKHQpO3JldHVybiB0PT50LmxpZnQobmV3IGhuKGUsbikpfWNsYXNzIGhue2NvbnN0cnVjdG9yKHQsbil7dGhpcy5kZWxheT10LHRoaXMuc2NoZWR1bGVyPW59Y2FsbCh0LG4pe3JldHVybiBuLnN1YnNjcmliZShuZXcgX24odCx0aGlzLmRlbGF5LHRoaXMuc2NoZWR1bGVyKSl9fWNsYXNzIF9uIGV4dGVuZHMgZHtjb25zdHJ1Y3Rvcih0LG4sZSl7c3VwZXIodCksdGhpcy5kZWxheT1uLHRoaXMuc2NoZWR1bGVyPWUsdGhpcy5xdWV1ZT1bXSx0aGlzLmFjdGl2ZT0hMSx0aGlzLmVycm9yZWQ9ITF9c3RhdGljIGRpc3BhdGNoKHQpe2NvbnN0IG49dC5zb3VyY2UsZT1uLnF1ZXVlLGE9dC5zY2hlZHVsZXIsbz10LmRlc3RpbmF0aW9uO2Zvcig7ZS5sZW5ndGg+MCYmZVswXS50aW1lLWEubm93KCk8PTA7KWUuc2hpZnQoKS5ub3RpZmljYXRpb24ub2JzZXJ2ZShvKTtpZihlLmxlbmd0aD4wKXtjb25zdCBuPU1hdGgubWF4KDAsZVswXS50aW1lLWEubm93KCkpO3RoaXMuc2NoZWR1bGUodCxuKX1lbHNlIG4uaXNTdG9wcGVkPyhuLmRlc3RpbmF0aW9uLmNvbXBsZXRlKCksbi5hY3RpdmU9ITEpOih0aGlzLnVuc3Vic2NyaWJlKCksbi5hY3RpdmU9ITEpfV9zY2hlZHVsZSh0KXt0aGlzLmFjdGl2ZT0hMCx0aGlzLmRlc3RpbmF0aW9uLmFkZCh0LnNjaGVkdWxlKF9uLmRpc3BhdGNoLHRoaXMuZGVsYXkse3NvdXJjZTp0aGlzLGRlc3RpbmF0aW9uOnRoaXMuZGVzdGluYXRpb24sc2NoZWR1bGVyOnR9KSl9c2NoZWR1bGVOb3RpZmljYXRpb24odCl7aWYoITA9PT10aGlzLmVycm9yZWQpcmV0dXJuO2NvbnN0IG49dGhpcy5zY2hlZHVsZXIsZT1uZXcgQ24obi5ub3coKSt0aGlzLmRlbGF5LHQpO3RoaXMucXVldWUucHVzaChlKSwhMT09PXRoaXMuYWN0aXZlJiZ0aGlzLl9zY2hlZHVsZShuKX1fbmV4dCh0KXt0aGlzLnNjaGVkdWxlTm90aWZpY2F0aW9uKEsuY3JlYXRlTmV4dCh0KSl9X2Vycm9yKHQpe3RoaXMuZXJyb3JlZD0hMCx0aGlzLnF1ZXVlPVtdLHRoaXMuZGVzdGluYXRpb24uZXJyb3IodCksdGhpcy51bnN1YnNjcmliZSgpfV9jb21wbGV0ZSgpezA9PT10aGlzLnF1ZXVlLmxlbmd0aCYmdGhpcy5kZXN0aW5hdGlvbi5jb21wbGV0ZSgpLHRoaXMudW5zdWJzY3JpYmUoKX19Y2xhc3MgQ257Y29uc3RydWN0b3IodCxuKXt0aGlzLnRpbWU9dCx0aGlzLm5vdGlmaWNhdGlvbj1ufX1jbGFzcyBNbntjb25zdHJ1Y3Rvcih0KXt0aGlzLmRlbGF5RHVyYXRpb25TZWxlY3Rvcj10fWNhbGwodCxuKXtyZXR1cm4gbi5zdWJzY3JpYmUobmV3IE9uKHQsdGhpcy5kZWxheUR1cmF0aW9uU2VsZWN0b3IpKX19Y2xhc3MgT24gZXh0ZW5kcyBDdHtjb25zdHJ1Y3Rvcih0LG4pe3N1cGVyKHQpLHRoaXMuZGVsYXlEdXJhdGlvblNlbGVjdG9yPW4sdGhpcy5jb21wbGV0ZWQ9ITEsdGhpcy5kZWxheU5vdGlmaWVyU3Vic2NyaXB0aW9ucz1bXSx0aGlzLmluZGV4PTB9bm90aWZ5TmV4dCh0LG4sZSxhLG8pe3RoaXMuZGVzdGluYXRpb24ubmV4dCh0KSx0aGlzLnJlbW92ZVN1YnNjcmlwdGlvbihvKSx0aGlzLnRyeUNvbXBsZXRlKCl9bm90aWZ5RXJyb3IodCxuKXt0aGlzLl9lcnJvcih0KX1ub3RpZnlDb21wbGV0ZSh0KXtjb25zdCBuPXRoaXMucmVtb3ZlU3Vic2NyaXB0aW9uKHQpO24mJnRoaXMuZGVzdGluYXRpb24ubmV4dChuKSx0aGlzLnRyeUNvbXBsZXRlKCl9X25leHQodCl7Y29uc3Qgbj10aGlzLmluZGV4Kys7dHJ5e2NvbnN0IGU9dGhpcy5kZWxheUR1cmF0aW9uU2VsZWN0b3IodCxuKTtlJiZ0aGlzLnRyeURlbGF5KGUsdCl9Y2F0Y2godCl7dGhpcy5kZXN0aW5hdGlvbi5lcnJvcih0KX19X2NvbXBsZXRlKCl7dGhpcy5jb21wbGV0ZWQ9ITAsdGhpcy50cnlDb21wbGV0ZSgpLHRoaXMudW5zdWJzY3JpYmUoKX1yZW1vdmVTdWJzY3JpcHRpb24odCl7dC51bnN1YnNjcmliZSgpO2NvbnN0IG49dGhpcy5kZWxheU5vdGlmaWVyU3Vic2NyaXB0aW9ucy5pbmRleE9mKHQpO3JldHVybi0xIT09biYmdGhpcy5kZWxheU5vdGlmaWVyU3Vic2NyaXB0aW9ucy5zcGxpY2UobiwxKSx0Lm91dGVyVmFsdWV9dHJ5RGVsYXkodCxuKXtjb25zdCBlPXd0KHRoaXMsdCxuKTtlJiYhZS5jbG9zZWQmJih0aGlzLmRlc3RpbmF0aW9uLmFkZChlKSx0aGlzLmRlbGF5Tm90aWZpZXJTdWJzY3JpcHRpb25zLnB1c2goZSkpfXRyeUNvbXBsZXRlKCl7dGhpcy5jb21wbGV0ZWQmJjA9PT10aGlzLmRlbGF5Tm90aWZpZXJTdWJzY3JpcHRpb25zLmxlbmd0aCYmdGhpcy5kZXN0aW5hdGlvbi5jb21wbGV0ZSgpfX1jbGFzcyBQbiBleHRlbmRzIF97Y29uc3RydWN0b3IodCxuKXtzdXBlcigpLHRoaXMuc291cmNlPXQsdGhpcy5zdWJzY3JpcHRpb25EZWxheT1ufV9zdWJzY3JpYmUodCl7dGhpcy5zdWJzY3JpcHRpb25EZWxheS5zdWJzY3JpYmUobmV3IHhuKHQsdGhpcy5zb3VyY2UpKX19Y2xhc3MgeG4gZXh0ZW5kcyBke2NvbnN0cnVjdG9yKHQsbil7c3VwZXIoKSx0aGlzLnBhcmVudD10LHRoaXMuc291cmNlPW4sdGhpcy5zb3VyY2VTdWJzY3JpYmVkPSExfV9uZXh0KHQpe3RoaXMuc3Vic2NyaWJlVG9Tb3VyY2UoKX1fZXJyb3IodCl7dGhpcy51bnN1YnNjcmliZSgpLHRoaXMucGFyZW50LmVycm9yKHQpfV9jb21wbGV0ZSgpe3RoaXMudW5zdWJzY3JpYmUoKSx0aGlzLnN1YnNjcmliZVRvU291cmNlKCl9c3Vic2NyaWJlVG9Tb3VyY2UoKXt0aGlzLnNvdXJjZVN1YnNjcmliZWR8fCh0aGlzLnNvdXJjZVN1YnNjcmliZWQ9ITAsdGhpcy51bnN1YnNjcmliZSgpLHRoaXMuc291cmNlLnN1YnNjcmliZSh0aGlzLnBhcmVudCkpfX1jbGFzcyB5bntjYWxsKHQsbil7cmV0dXJuIG4uc3Vic2NyaWJlKG5ldyBrbih0KSl9fWNsYXNzIGtuIGV4dGVuZHMgZHtjb25zdHJ1Y3Rvcih0KXtzdXBlcih0KX1fbmV4dCh0KXt0Lm9ic2VydmUodGhpcy5kZXN0aW5hdGlvbil9fWZ1bmN0aW9uIHZuKHQsbil7cmV0dXJuIGU9PmUubGlmdChuZXcgd24odCxuKSl9Y2xhc3Mgd257Y29uc3RydWN0b3IodCxuKXt0aGlzLmNvbXBhcmU9dCx0aGlzLmtleVNlbGVjdG9yPW59Y2FsbCh0LG4pe3JldHVybiBuLnN1YnNjcmliZShuZXcgU24odCx0aGlzLmNvbXBhcmUsdGhpcy5rZXlTZWxlY3RvcikpfX1jbGFzcyBTbiBleHRlbmRzIGR7Y29uc3RydWN0b3IodCxuLGUpe3N1cGVyKHQpLHRoaXMua2V5U2VsZWN0b3I9ZSx0aGlzLmhhc0tleT0hMSwiZnVuY3Rpb24iPT10eXBlb2YgbiYmKHRoaXMuY29tcGFyZT1uKX1jb21wYXJlKHQsbil7cmV0dXJuIHQ9PT1ufV9uZXh0KHQpe2xldCBuO3RyeXtjb25zdHtrZXlTZWxlY3RvcjplfT10aGlzO249ZT9lKHQpOnR9Y2F0Y2godCl7cmV0dXJuIHRoaXMuZGVzdGluYXRpb24uZXJyb3IodCl9bGV0IGU9ITE7aWYodGhpcy5oYXNLZXkpdHJ5e2NvbnN0e2NvbXBhcmU6dH09dGhpcztlPXQodGhpcy5rZXksbil9Y2F0Y2godCl7cmV0dXJuIHRoaXMuZGVzdGluYXRpb24uZXJyb3IodCl9ZWxzZSB0aGlzLmhhc0tleT0hMDtlfHwodGhpcy5rZXk9bix0aGlzLmRlc3RpbmF0aW9uLm5leHQodCkpfX1mdW5jdGlvbiBFbih0PVJuKXtyZXR1cm4gbj0+bi5saWZ0KG5ldyBBbih0KSl9Y2xhc3MgQW57Y29uc3RydWN0b3IodCl7dGhpcy5lcnJvckZhY3Rvcnk9dH1jYWxsKHQsbil7cmV0dXJuIG4uc3Vic2NyaWJlKG5ldyB6bih0LHRoaXMuZXJyb3JGYWN0b3J5KSl9fWNsYXNzIHpuIGV4dGVuZHMgZHtjb25zdHJ1Y3Rvcih0LG4pe3N1cGVyKHQpLHRoaXMuZXJyb3JGYWN0b3J5PW4sdGhpcy5oYXNWYWx1ZT0hMX1fbmV4dCh0KXt0aGlzLmhhc1ZhbHVlPSEwLHRoaXMuZGVzdGluYXRpb24ubmV4dCh0KX1fY29tcGxldGUoKXtpZih0aGlzLmhhc1ZhbHVlKXJldHVybiB0aGlzLmRlc3RpbmF0aW9uLmNvbXBsZXRlKCk7e2xldCB0O3RyeXt0PXRoaXMuZXJyb3JGYWN0b3J5KCl9Y2F0Y2gobil7dD1ufXRoaXMuZGVzdGluYXRpb24uZXJyb3IodCl9fX1mdW5jdGlvbiBSbigpe3JldHVybiBuZXcgYnR9ZnVuY3Rpb24gVG4odCl7cmV0dXJuIG49PjA9PT10P1U6bi5saWZ0KG5ldyBEbih0KSl9Y2xhc3MgRG57Y29uc3RydWN0b3IodCl7aWYodGhpcy50b3RhbD10LHRoaXMudG90YWw8MCl0aHJvdyBuZXcgdXR9Y2FsbCh0LG4pe3JldHVybiBuLnN1YnNjcmliZShuZXcgSW4odCx0aGlzLnRvdGFsKSl9fWNsYXNzIEluIGV4dGVuZHMgZHtjb25zdHJ1Y3Rvcih0LG4pe3N1cGVyKHQpLHRoaXMudG90YWw9bix0aGlzLmNvdW50PTB9X25leHQodCl7Y29uc3Qgbj10aGlzLnRvdGFsLGU9Kyt0aGlzLmNvdW50O2U8PW4mJih0aGlzLmRlc3RpbmF0aW9uLm5leHQodCksZT09PW4mJih0aGlzLmRlc3RpbmF0aW9uLmNvbXBsZXRlKCksdGhpcy51bnN1YnNjcmliZSgpKSl9fWZ1bmN0aW9uIE5uKHQsbil7cmV0dXJuIG4/ZT0+ZS5waXBlKE5uKCgoZSxhKT0+UnQodChlLGEpKS5waXBlKGZ0KCgodCxvKT0+bihlLHQsYSxvKSkpKSkpKTpuPT5uLmxpZnQobmV3IEZuKHQpKX1jbGFzcyBGbntjb25zdHJ1Y3Rvcih0KXt0aGlzLnByb2plY3Q9dH1jYWxsKHQsbil7cmV0dXJuIG4uc3Vic2NyaWJlKG5ldyBMbih0LHRoaXMucHJvamVjdCkpfX1jbGFzcyBMbiBleHRlbmRzIEN0e2NvbnN0cnVjdG9yKHQsbil7c3VwZXIodCksdGhpcy5wcm9qZWN0PW4sdGhpcy5oYXNTdWJzY3JpcHRpb249ITEsdGhpcy5oYXNDb21wbGV0ZWQ9ITEsdGhpcy5pbmRleD0wfV9uZXh0KHQpe3RoaXMuaGFzU3Vic2NyaXB0aW9ufHx0aGlzLnRyeU5leHQodCl9dHJ5TmV4dCh0KXtsZXQgbjtjb25zdCBlPXRoaXMuaW5kZXgrKzt0cnl7bj10aGlzLnByb2plY3QodCxlKX1jYXRjaCh0KXtyZXR1cm4gdm9pZCB0aGlzLmRlc3RpbmF0aW9uLmVycm9yKHQpfXRoaXMuaGFzU3Vic2NyaXB0aW9uPSEwLHRoaXMuX2lubmVyU3ViKG4sdCxlKX1faW5uZXJTdWIodCxuLGUpe2NvbnN0IGE9bmV3IE10KHRoaXMsbixlKSxvPXRoaXMuZGVzdGluYXRpb247by5hZGQoYSk7Y29uc3Qgcj13dCh0aGlzLHQsdm9pZCAwLHZvaWQgMCxhKTtyIT09YSYmby5hZGQocil9X2NvbXBsZXRlKCl7dGhpcy5oYXNDb21wbGV0ZWQ9ITAsdGhpcy5oYXNTdWJzY3JpcHRpb258fHRoaXMuZGVzdGluYXRpb24uY29tcGxldGUoKSx0aGlzLnVuc3Vic2NyaWJlKCl9bm90aWZ5TmV4dCh0LG4sZSxhLG8pe3RoaXMuZGVzdGluYXRpb24ubmV4dChuKX1ub3RpZnlFcnJvcih0KXt0aGlzLmRlc3RpbmF0aW9uLmVycm9yKHQpfW5vdGlmeUNvbXBsZXRlKHQpe3RoaXMuZGVzdGluYXRpb24ucmVtb3ZlKHQpLHRoaXMuaGFzU3Vic2NyaXB0aW9uPSExLHRoaXMuaGFzQ29tcGxldGVkJiZ0aGlzLmRlc3RpbmF0aW9uLmNvbXBsZXRlKCl9fWNsYXNzIEhue2NvbnN0cnVjdG9yKHQpe3RoaXMuY2FsbGJhY2s9dH1jYWxsKHQsbil7cmV0dXJuIG4uc3Vic2NyaWJlKG5ldyBCbih0LHRoaXMuY2FsbGJhY2spKX19Y2xhc3MgQm4gZXh0ZW5kcyBke2NvbnN0cnVjdG9yKHQsbil7c3VwZXIodCksdGhpcy5hZGQobmV3IHMobikpfX1jbGFzcyBWbntjYWxsKHQsbil7cmV0dXJuIG4uc3Vic2NyaWJlKG5ldyBqbih0KSl9fWNsYXNzIGpuIGV4dGVuZHMgZHtfbmV4dCh0KXt9fWZ1bmN0aW9uIFVuKHQpe3JldHVybiBmdW5jdGlvbiBuKGUpe3JldHVybiAwPT09dD9VOmUubGlmdChuZXcgV24odCkpfX1jbGFzcyBXbntjb25zdHJ1Y3Rvcih0KXtpZih0aGlzLnRvdGFsPXQsdGhpcy50b3RhbDwwKXRocm93IG5ldyB1dH1jYWxsKHQsbil7cmV0dXJuIG4uc3Vic2NyaWJlKG5ldyBHbih0LHRoaXMudG90YWwpKX19Y2xhc3MgR24gZXh0ZW5kcyBke2NvbnN0cnVjdG9yKHQsbil7c3VwZXIodCksdGhpcy50b3RhbD1uLHRoaXMucmluZz1uZXcgQXJyYXksdGhpcy5jb3VudD0wfV9uZXh0KHQpe2NvbnN0IG49dGhpcy5yaW5nLGU9dGhpcy50b3RhbCxhPXRoaXMuY291bnQrKztuLmxlbmd0aDxlP24ucHVzaCh0KTpuW2ElZV09dH1fY29tcGxldGUoKXtjb25zdCB0PXRoaXMuZGVzdGluYXRpb247bGV0IG49dGhpcy5jb3VudDtpZihuPjApe2NvbnN0IGU9dGhpcy5jb3VudD49dGhpcy50b3RhbD90aGlzLnRvdGFsOnRoaXMuY291bnQsYT10aGlzLnJpbmc7Zm9yKGxldCBvPTA7bzxlO28rKyl7Y29uc3Qgbz1uKyslZTt0Lm5leHQoYVtvXSl9fXQuY29tcGxldGUoKX19Y2xhc3MgWW57Y2FsbCh0LG4pe3JldHVybiBuLnN1YnNjcmliZShuZXcgcW4odCkpfX1jbGFzcyBxbiBleHRlbmRzIGR7Y29uc3RydWN0b3IodCl7c3VwZXIodCl9X25leHQodCl7dGhpcy5kZXN0aW5hdGlvbi5uZXh0KEsuY3JlYXRlTmV4dCh0KSl9X2Vycm9yKHQpe2NvbnN0IG49dGhpcy5kZXN0aW5hdGlvbjtuLm5leHQoSy5jcmVhdGVFcnJvcih0KSksbi5jb21wbGV0ZSgpfV9jb21wbGV0ZSgpe2NvbnN0IHQ9dGhpcy5kZXN0aW5hdGlvbjt0Lm5leHQoSy5jcmVhdGVDb21wbGV0ZSgpKSx0LmNvbXBsZXRlKCl9fWNsYXNzIFpue2NvbnN0cnVjdG9yKHQsbixlPSExKXt0aGlzLmFjY3VtdWxhdG9yPXQsdGhpcy5zZWVkPW4sdGhpcy5oYXNTZWVkPWV9Y2FsbCh0LG4pe3JldHVybiBuLnN1YnNjcmliZShuZXcgWG4odCx0aGlzLmFjY3VtdWxhdG9yLHRoaXMuc2VlZCx0aGlzLmhhc1NlZWQpKX19Y2xhc3MgWG4gZXh0ZW5kcyBke2NvbnN0cnVjdG9yKHQsbixlLGEpe3N1cGVyKHQpLHRoaXMuYWNjdW11bGF0b3I9bix0aGlzLl9zdGF0ZT1lLHRoaXMuX2hhc1N0YXRlPWEsdGhpcy5pbmRleD0wfV9uZXh0KHQpe2NvbnN0e2Rlc3RpbmF0aW9uOm59PXRoaXM7aWYodGhpcy5faGFzU3RhdGUpe2NvbnN0IGU9dGhpcy5pbmRleCsrO2xldCBhO3RyeXthPXRoaXMuYWNjdW11bGF0b3IodGhpcy5fc3RhdGUsdCxlKX1jYXRjaCh0KXtyZXR1cm4gdm9pZCBuLmVycm9yKHQpfXRoaXMuX3N0YXRlPWEsbi5uZXh0KGEpfWVsc2UgdGhpcy5fc3RhdGU9dCx0aGlzLl9oYXNTdGF0ZT0hMCxuLm5leHQodCl9fWNsYXNzIEpue2NvbnN0cnVjdG9yKHQsbil7dGhpcy5zdWJqZWN0RmFjdG9yeT10LHRoaXMuc2VsZWN0b3I9bn1jYWxsKHQsbil7Y29uc3R7c2VsZWN0b3I6ZX09dGhpcyxhPXRoaXMuc3ViamVjdEZhY3RvcnkoKSxvPWUoYSkuc3Vic2NyaWJlKHQpO3JldHVybiBvLmFkZChuLnN1YnNjcmliZShhKSksb319Y2xhc3MgUW57Y2FsbCh0LG4pe3JldHVybiBuLnN1YnNjcmliZShuZXcgS24odCkpfX1jbGFzcyBLbiBleHRlbmRzIGR7Y29uc3RydWN0b3IodCl7c3VwZXIodCksdGhpcy5oYXNQcmV2PSExfV9uZXh0KHQpe2xldCBuO3RoaXMuaGFzUHJldj9uPVt0aGlzLnByZXYsdF06dGhpcy5oYXNQcmV2PSEwLHRoaXMucHJldj10LG4mJnRoaXMuZGVzdGluYXRpb24ubmV4dChuKX19Y2xhc3MgJG57Y29uc3RydWN0b3IodCl7dGhpcy5ub3RpZmllcj10fWNhbGwodCxuKXtyZXR1cm4gbi5zdWJzY3JpYmUobmV3IHRlKHQsdGhpcy5ub3RpZmllcixuKSl9fWNsYXNzIHRlIGV4dGVuZHMgQ3R7Y29uc3RydWN0b3IodCxuLGUpe3N1cGVyKHQpLHRoaXMubm90aWZpZXI9bix0aGlzLnNvdXJjZT1lLHRoaXMubm90aWZpY2F0aW9ucz1udWxsLHRoaXMucmV0cmllcz1udWxsLHRoaXMucmV0cmllc1N1YnNjcmlwdGlvbj1udWxsLHRoaXMuc291cmNlSXNCZWluZ1N1YnNjcmliZWRUbz0hMH1ub3RpZnlOZXh0KHQsbixlLGEsbyl7dGhpcy5zb3VyY2VJc0JlaW5nU3Vic2NyaWJlZFRvPSEwLHRoaXMuc291cmNlLnN1YnNjcmliZSh0aGlzKX1ub3RpZnlDb21wbGV0ZSh0KXtpZighMT09PXRoaXMuc291cmNlSXNCZWluZ1N1YnNjcmliZWRUbylyZXR1cm4gc3VwZXIuY29tcGxldGUoKX1jb21wbGV0ZSgpe2lmKHRoaXMuc291cmNlSXNCZWluZ1N1YnNjcmliZWRUbz0hMSwhdGhpcy5pc1N0b3BwZWQpe2lmKHRoaXMucmV0cmllc3x8dGhpcy5zdWJzY3JpYmVUb1JldHJpZXMoKSwhdGhpcy5yZXRyaWVzU3Vic2NyaXB0aW9ufHx0aGlzLnJldHJpZXNTdWJzY3JpcHRpb24uY2xvc2VkKXJldHVybiBzdXBlci5jb21wbGV0ZSgpO3RoaXMuX3Vuc3Vic2NyaWJlQW5kUmVjeWNsZSgpLHRoaXMubm90aWZpY2F0aW9ucy5uZXh0KCl9fV91bnN1YnNjcmliZSgpe2NvbnN0e25vdGlmaWNhdGlvbnM6dCxyZXRyaWVzU3Vic2NyaXB0aW9uOm59PXRoaXM7dCYmKHQudW5zdWJzY3JpYmUoKSx0aGlzLm5vdGlmaWNhdGlvbnM9bnVsbCksbiYmKG4udW5zdWJzY3JpYmUoKSx0aGlzLnJldHJpZXNTdWJzY3JpcHRpb249bnVsbCksdGhpcy5yZXRyaWVzPW51bGx9X3Vuc3Vic2NyaWJlQW5kUmVjeWNsZSgpe2NvbnN0e191bnN1YnNjcmliZTp0fT10aGlzO3JldHVybiB0aGlzLl91bnN1YnNjcmliZT1udWxsLHN1cGVyLl91bnN1YnNjcmliZUFuZFJlY3ljbGUoKSx0aGlzLl91bnN1YnNjcmliZT10LHRoaXN9c3Vic2NyaWJlVG9SZXRyaWVzKCl7bGV0IHQ7dGhpcy5ub3RpZmljYXRpb25zPW5ldyB4O3RyeXtjb25zdHtub3RpZmllcjpufT10aGlzO3Q9bih0aGlzLm5vdGlmaWNhdGlvbnMpfWNhdGNoKHQpe3JldHVybiBzdXBlci5jb21wbGV0ZSgpfXRoaXMucmV0cmllcz10LHRoaXMucmV0cmllc1N1YnNjcmlwdGlvbj13dCh0aGlzLHQpfX1mdW5jdGlvbiBuZSgpe3JldHVybiBuZXcgeH1mdW5jdGlvbiBlZSgpe3JldHVybiB0PT5rKCkoKGZ1bmN0aW9uIG4odCxlKXtyZXR1cm4gZnVuY3Rpb24gbihhKXtsZXQgbztpZihvPSJmdW5jdGlvbiI9PXR5cGVvZiB0P3Q6ZnVuY3Rpb24gbigpe3JldHVybiB0fSwiZnVuY3Rpb24iPT10eXBlb2YgZSlyZXR1cm4gYS5saWZ0KG5ldyBKbihvLGUpKTtjb25zdCByPU9iamVjdC5jcmVhdGUoYSxFKTtyZXR1cm4gci5zb3VyY2U9YSxyLnN1YmplY3RGYWN0b3J5PW8scn19KShuZSkodCkpfWZ1bmN0aW9uIGFlKHQsbixlKXtsZXQgYTtyZXR1cm4gYT10JiYib2JqZWN0Ij09dHlwZW9mIHQ/dDp7YnVmZmVyU2l6ZTp0LHdpbmRvd1RpbWU6bixyZWZDb3VudDohMSxzY2hlZHVsZXI6ZX0sdD0+dC5saWZ0KChmdW5jdGlvbiBuKHtidWZmZXJTaXplOnQ9TnVtYmVyLlBPU0lUSVZFX0lORklOSVRZLHdpbmRvd1RpbWU6ZT1OdW1iZXIuUE9TSVRJVkVfSU5GSU5JVFkscmVmQ291bnQ6YSxzY2hlZHVsZXI6b30pe2xldCByLGksYz0wLHM9ITEsbD0hMTtyZXR1cm4gZnVuY3Rpb24gbihtKXtjKyssciYmIXN8fChzPSExLHI9bmV3IGV0KHQsZSxvKSxpPW0uc3Vic2NyaWJlKHtuZXh0KHQpe3IubmV4dCh0KX0sZXJyb3IodCl7cz0hMCxyLmVycm9yKHQpfSxjb21wbGV0ZSgpe2w9ITAsaT12b2lkIDAsci5jb21wbGV0ZSgpfX0pKTtjb25zdCBkPXIuc3Vic2NyaWJlKHRoaXMpO3RoaXMuYWRkKCgoKT0+e2MtLSxkLnVuc3Vic2NyaWJlKCksaSYmIWwmJmEmJjA9PT1jJiYoaS51bnN1YnNjcmliZSgpLGk9dm9pZCAwLHI9dm9pZCAwKX0pKX19KShhKSl9ZnVuY3Rpb24gb2UodCl7cmV0dXJuIG49Pm4ubGlmdChuZXcgcmUodCkpfWNsYXNzIHJle2NvbnN0cnVjdG9yKHQpe3RoaXMudG90YWw9dH1jYWxsKHQsbil7cmV0dXJuIG4uc3Vic2NyaWJlKG5ldyBpZSh0LHRoaXMudG90YWwpKX19Y2xhc3MgaWUgZXh0ZW5kcyBke2NvbnN0cnVjdG9yKHQsbil7c3VwZXIodCksdGhpcy50b3RhbD1uLHRoaXMuY291bnQ9MH1fbmV4dCh0KXsrK3RoaXMuY291bnQ+dGhpcy50b3RhbCYmdGhpcy5kZXN0aW5hdGlvbi5uZXh0KHQpfX1mdW5jdGlvbiBjZSguLi50KXtjb25zdCBuPXRbdC5sZW5ndGgtMV07cmV0dXJuIFcobik/KHQucG9wKCksZT0+RnQodCxlLG4pKTpuPT5GdCh0LG4pfWZ1bmN0aW9uIHNlKHQsbil7cmV0dXJuImZ1bmN0aW9uIj09dHlwZW9mIG4/ZT0+ZS5waXBlKHNlKCgoZSxhKT0+UnQodChlLGEpKS5waXBlKGZ0KCgodCxvKT0+bihlLHQsYSxvKSkpKSkpKTpuPT5uLmxpZnQobmV3IGxlKHQpKX1jbGFzcyBsZXtjb25zdHJ1Y3Rvcih0KXt0aGlzLnByb2plY3Q9dH1jYWxsKHQsbil7cmV0dXJuIG4uc3Vic2NyaWJlKG5ldyBtZSh0LHRoaXMucHJvamVjdCkpfX1jbGFzcyBtZSBleHRlbmRzIEN0e2NvbnN0cnVjdG9yKHQsbil7c3VwZXIodCksdGhpcy5wcm9qZWN0PW4sdGhpcy5pbmRleD0wfV9uZXh0KHQpe2xldCBuO2NvbnN0IGU9dGhpcy5pbmRleCsrO3RyeXtuPXRoaXMucHJvamVjdCh0LGUpfWNhdGNoKHQpe3JldHVybiB2b2lkIHRoaXMuZGVzdGluYXRpb24uZXJyb3IodCl9dGhpcy5faW5uZXJTdWIobix0LGUpfV9pbm5lclN1Yih0LG4sZSl7Y29uc3QgYT10aGlzLmlubmVyU3Vic2NyaXB0aW9uO2EmJmEudW5zdWJzY3JpYmUoKTtjb25zdCBvPW5ldyBNdCh0aGlzLG4sZSkscj10aGlzLmRlc3RpbmF0aW9uO3IuYWRkKG8pLHRoaXMuaW5uZXJTdWJzY3JpcHRpb249d3QodGhpcyx0LHZvaWQgMCx2b2lkIDAsbyksdGhpcy5pbm5lclN1YnNjcmlwdGlvbiE9PW8mJnIuYWRkKHRoaXMuaW5uZXJTdWJzY3JpcHRpb24pfV9jb21wbGV0ZSgpe2NvbnN0e2lubmVyU3Vic2NyaXB0aW9uOnR9PXRoaXM7dCYmIXQuY2xvc2VkfHxzdXBlci5fY29tcGxldGUoKSx0aGlzLnVuc3Vic2NyaWJlKCl9X3Vuc3Vic2NyaWJlKCl7dGhpcy5pbm5lclN1YnNjcmlwdGlvbj1udWxsfW5vdGlmeUNvbXBsZXRlKHQpe3RoaXMuZGVzdGluYXRpb24ucmVtb3ZlKHQpLHRoaXMuaW5uZXJTdWJzY3JpcHRpb249bnVsbCx0aGlzLmlzU3RvcHBlZCYmc3VwZXIuX2NvbXBsZXRlKCl9bm90aWZ5TmV4dCh0LG4sZSxhLG8pe3RoaXMuZGVzdGluYXRpb24ubmV4dChuKX19ZnVuY3Rpb24gZGUodCl7cmV0dXJuIG49Pm4ubGlmdChuZXcgZ2UodCkpfWNsYXNzIGdle2NvbnN0cnVjdG9yKHQpe3RoaXMubm90aWZpZXI9dH1jYWxsKHQsbil7Y29uc3QgZT1uZXcgcGUodCksYT13dChlLHRoaXMubm90aWZpZXIpO3JldHVybiBhJiYhZS5zZWVuVmFsdWU/KGUuYWRkKGEpLG4uc3Vic2NyaWJlKGUpKTplfX1jbGFzcyBwZSBleHRlbmRzIEN0e2NvbnN0cnVjdG9yKHQpe3N1cGVyKHQpLHRoaXMuc2VlblZhbHVlPSExfW5vdGlmeU5leHQodCxuLGUsYSxvKXt0aGlzLnNlZW5WYWx1ZT0hMCx0aGlzLmNvbXBsZXRlKCl9bm90aWZ5Q29tcGxldGUoKXt9fWZ1bmN0aW9uIGJlKHQsbj0hMSl7cmV0dXJuIGU9PmUubGlmdChuZXcgdWUodCxuKSl9Y2xhc3MgdWV7Y29uc3RydWN0b3IodCxuKXt0aGlzLnByZWRpY2F0ZT10LHRoaXMuaW5jbHVzaXZlPW59Y2FsbCh0LG4pe3JldHVybiBuLnN1YnNjcmliZShuZXcgZmUodCx0aGlzLnByZWRpY2F0ZSx0aGlzLmluY2x1c2l2ZSkpfX1jbGFzcyBmZSBleHRlbmRzIGR7Y29uc3RydWN0b3IodCxuLGUpe3N1cGVyKHQpLHRoaXMucHJlZGljYXRlPW4sdGhpcy5pbmNsdXNpdmU9ZSx0aGlzLmluZGV4PTB9X25leHQodCl7Y29uc3Qgbj10aGlzLmRlc3RpbmF0aW9uO2xldCBlO3RyeXtlPXRoaXMucHJlZGljYXRlKHQsdGhpcy5pbmRleCsrKX1jYXRjaCh0KXtyZXR1cm4gdm9pZCBuLmVycm9yKHQpfXRoaXMubmV4dE9yQ29tcGxldGUodCxlKX1uZXh0T3JDb21wbGV0ZSh0LG4pe2NvbnN0IGU9dGhpcy5kZXN0aW5hdGlvbjtCb29sZWFuKG4pP2UubmV4dCh0KToodGhpcy5pbmNsdXNpdmUmJmUubmV4dCh0KSxlLmNvbXBsZXRlKCkpfX1mdW5jdGlvbiBoZSh0LG4sZSl7cmV0dXJuIGZ1bmN0aW9uIGEobyl7cmV0dXJuIG8ubGlmdChuZXcgX2UodCxuLGUpKX19Y2xhc3MgX2V7Y29uc3RydWN0b3IodCxuLGUpe3RoaXMubmV4dE9yT2JzZXJ2ZXI9dCx0aGlzLmVycm9yPW4sdGhpcy5jb21wbGV0ZT1lfWNhbGwodCxuKXtyZXR1cm4gbi5zdWJzY3JpYmUobmV3IENlKHQsdGhpcy5uZXh0T3JPYnNlcnZlcix0aGlzLmVycm9yLHRoaXMuY29tcGxldGUpKX19Y2xhc3MgQ2UgZXh0ZW5kcyBke2NvbnN0cnVjdG9yKG4sZSxhLG8pe3N1cGVyKG4pLHRoaXMuX3RhcE5leHQ9Z3QsdGhpcy5fdGFwRXJyb3I9Z3QsdGhpcy5fdGFwQ29tcGxldGU9Z3QsdGhpcy5fdGFwRXJyb3I9YXx8Z3QsdGhpcy5fdGFwQ29tcGxldGU9b3x8Z3QsdChlKT8odGhpcy5fY29udGV4dD10aGlzLHRoaXMuX3RhcE5leHQ9ZSk6ZSYmKHRoaXMuX2NvbnRleHQ9ZSx0aGlzLl90YXBOZXh0PWUubmV4dHx8Z3QsdGhpcy5fdGFwRXJyb3I9ZS5lcnJvcnx8Z3QsdGhpcy5fdGFwQ29tcGxldGU9ZS5jb21wbGV0ZXx8Z3QpfV9uZXh0KHQpe3RyeXt0aGlzLl90YXBOZXh0LmNhbGwodGhpcy5fY29udGV4dCx0KX1jYXRjaCh0KXtyZXR1cm4gdm9pZCB0aGlzLmRlc3RpbmF0aW9uLmVycm9yKHQpfXRoaXMuZGVzdGluYXRpb24ubmV4dCh0KX1fZXJyb3IodCl7dHJ5e3RoaXMuX3RhcEVycm9yLmNhbGwodGhpcy5fY29udGV4dCx0KX1jYXRjaCh0KXtyZXR1cm4gdm9pZCB0aGlzLmRlc3RpbmF0aW9uLmVycm9yKHQpfXRoaXMuZGVzdGluYXRpb24uZXJyb3IodCl9X2NvbXBsZXRlKCl7dHJ5e3RoaXMuX3RhcENvbXBsZXRlLmNhbGwodGhpcy5fY29udGV4dCl9Y2F0Y2godCl7cmV0dXJuIHZvaWQgdGhpcy5kZXN0aW5hdGlvbi5lcnJvcih0KX1yZXR1cm4gdGhpcy5kZXN0aW5hdGlvbi5jb21wbGV0ZSgpfX1jb25zdCBNZT17bGVhZGluZzohMCx0cmFpbGluZzohMX07Y2xhc3MgT2V7Y29uc3RydWN0b3IodCxuLGUsYSl7dGhpcy5kdXJhdGlvbj10LHRoaXMuc2NoZWR1bGVyPW4sdGhpcy5sZWFkaW5nPWUsdGhpcy50cmFpbGluZz1hfWNhbGwodCxuKXtyZXR1cm4gbi5zdWJzY3JpYmUobmV3IFBlKHQsdGhpcy5kdXJhdGlvbix0aGlzLnNjaGVkdWxlcix0aGlzLmxlYWRpbmcsdGhpcy50cmFpbGluZykpfX1jbGFzcyBQZSBleHRlbmRzIGR7Y29uc3RydWN0b3IodCxuLGUsYSxvKXtzdXBlcih0KSx0aGlzLmR1cmF0aW9uPW4sdGhpcy5zY2hlZHVsZXI9ZSx0aGlzLmxlYWRpbmc9YSx0aGlzLnRyYWlsaW5nPW8sdGhpcy50aHJvdHRsZWQ9bnVsbCx0aGlzLl9oYXNUcmFpbGluZ1ZhbHVlPSExLHRoaXMuX3RyYWlsaW5nVmFsdWU9bnVsbH1fbmV4dCh0KXt0aGlzLnRocm90dGxlZD90aGlzLnRyYWlsaW5nJiYodGhpcy5fdHJhaWxpbmdWYWx1ZT10LHRoaXMuX2hhc1RyYWlsaW5nVmFsdWU9ITApOih0aGlzLmFkZCh0aGlzLnRocm90dGxlZD10aGlzLnNjaGVkdWxlci5zY2hlZHVsZSh4ZSx0aGlzLmR1cmF0aW9uLHtzdWJzY3JpYmVyOnRoaXN9KSksdGhpcy5sZWFkaW5nP3RoaXMuZGVzdGluYXRpb24ubmV4dCh0KTp0aGlzLnRyYWlsaW5nJiYodGhpcy5fdHJhaWxpbmdWYWx1ZT10LHRoaXMuX2hhc1RyYWlsaW5nVmFsdWU9ITApKX1fY29tcGxldGUoKXt0aGlzLl9oYXNUcmFpbGluZ1ZhbHVlPyh0aGlzLmRlc3RpbmF0aW9uLm5leHQodGhpcy5fdHJhaWxpbmdWYWx1ZSksdGhpcy5kZXN0aW5hdGlvbi5jb21wbGV0ZSgpKTp0aGlzLmRlc3RpbmF0aW9uLmNvbXBsZXRlKCl9Y2xlYXJUaHJvdHRsZSgpe2NvbnN0IHQ9dGhpcy50aHJvdHRsZWQ7dCYmKHRoaXMudHJhaWxpbmcmJnRoaXMuX2hhc1RyYWlsaW5nVmFsdWUmJih0aGlzLmRlc3RpbmF0aW9uLm5leHQodGhpcy5fdHJhaWxpbmdWYWx1ZSksdGhpcy5fdHJhaWxpbmdWYWx1ZT1udWxsLHRoaXMuX2hhc1RyYWlsaW5nVmFsdWU9ITEpLHQudW5zdWJzY3JpYmUoKSx0aGlzLnJlbW92ZSh0KSx0aGlzLnRocm90dGxlZD1udWxsKX19ZnVuY3Rpb24geGUodCl7Y29uc3R7c3Vic2NyaWJlcjpufT10O24uY2xlYXJUaHJvdHRsZSgpfWZ1bmN0aW9uIHllKC4uLnQpe3JldHVybiBuPT57bGV0IGU7cmV0dXJuImZ1bmN0aW9uIj09dHlwZW9mIHRbdC5sZW5ndGgtMV0mJihlPXQucG9wKCkpLG4ubGlmdChuZXcga2UodCxlKSl9fWNsYXNzIGtle2NvbnN0cnVjdG9yKHQsbil7dGhpcy5vYnNlcnZhYmxlcz10LHRoaXMucHJvamVjdD1ufWNhbGwodCxuKXtyZXR1cm4gbi5zdWJzY3JpYmUobmV3IHZlKHQsdGhpcy5vYnNlcnZhYmxlcyx0aGlzLnByb2plY3QpKX19Y2xhc3MgdmUgZXh0ZW5kcyBDdHtjb25zdHJ1Y3Rvcih0LG4sZSl7c3VwZXIodCksdGhpcy5vYnNlcnZhYmxlcz1uLHRoaXMucHJvamVjdD1lLHRoaXMudG9SZXNwb25kPVtdO2NvbnN0IGE9bi5sZW5ndGg7dGhpcy52YWx1ZXM9bmV3IEFycmF5KGEpO2ZvcihsZXQgdD0wO3Q8YTt0KyspdGhpcy50b1Jlc3BvbmQucHVzaCh0KTtmb3IobGV0IHQ9MDt0PGE7dCsrKXtsZXQgZT1uW3RdO3RoaXMuYWRkKHd0KHRoaXMsZSxlLHQpKX19bm90aWZ5TmV4dCh0LG4sZSxhLG8pe3RoaXMudmFsdWVzW2VdPW47Y29uc3Qgcj10aGlzLnRvUmVzcG9uZDtpZihyLmxlbmd0aD4wKXtjb25zdCB0PXIuaW5kZXhPZihlKTstMSE9PXQmJnIuc3BsaWNlKHQsMSl9fW5vdGlmeUNvbXBsZXRlKCl7fV9uZXh0KHQpe2lmKDA9PT10aGlzLnRvUmVzcG9uZC5sZW5ndGgpe2NvbnN0IG49W3QsLi4udGhpcy52YWx1ZXNdO3RoaXMucHJvamVjdD90aGlzLl90cnlQcm9qZWN0KG4pOnRoaXMuZGVzdGluYXRpb24ubmV4dChuKX19X3RyeVByb2plY3QodCl7bGV0IG47dHJ5e249dGhpcy5wcm9qZWN0LmFwcGx5KHRoaXMsdCl9Y2F0Y2godCl7cmV0dXJuIHZvaWQgdGhpcy5kZXN0aW5hdGlvbi5lcnJvcih0KX10aGlzLmRlc3RpbmF0aW9uLm5leHQobil9fQovKioKICAgICAqIEBsaWNlbnNlIEFuZ3VsYXIgdjEwLjIuNAogICAgICogKGMpIDIwMTAtMjAyMCBHb29nbGUgTExDLiBodHRwczovL2FuZ3VsYXIuaW8vCiAgICAgKiBMaWNlbnNlOiBNSVQKICAgICAqLwovKioKICAgICAqIEBsaWNlbnNlCiAgICAgKiBDb3B5cmlnaHQgR29vZ2xlIExMQyBBbGwgUmlnaHRzIFJlc2VydmVkLgogICAgICoKICAgICAqIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGFuIE1JVC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCiAgICAgKiBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlIGF0IGh0dHBzOi8vYW5ndWxhci5pby9saWNlbnNlCiAgICAgKi9mdW5jdGlvbiB3ZSh0KXtyZXR1cm57dG9TdHJpbmc6dH0udG9TdHJpbmcoKX0KLyoqCiAgICAgKiBAbGljZW5zZQogICAgICogQ29weXJpZ2h0IEdvb2dsZSBMTEMgQWxsIFJpZ2h0cyBSZXNlcnZlZC4KICAgICAqCiAgICAgKiBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhbiBNSVQtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQogICAgICogZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZSBhdCBodHRwczovL2FuZ3VsYXIuaW8vbGljZW5zZQogICAgICovY29uc3QgU2U9Il9fYW5ub3RhdGlvbnNfXyIsRWU9Il9fcGFyYW1ldGVyc19fIixBZT0iX19wcm9wX19tZXRhZGF0YV9fIjtmdW5jdGlvbiB6ZSh0LG4sZSxhLG8pe3JldHVybiB3ZSgoKCk9Pntjb25zdCByPVJlKG4pO2Z1bmN0aW9uIGkoLi4udCl7aWYodGhpcyBpbnN0YW5jZW9mIGkpcmV0dXJuIHIuY2FsbCh0aGlzLC4uLnQpLHRoaXM7Y29uc3Qgbj1uZXcgaSguLi50KTtyZXR1cm4gZnVuY3Rpb24gZShyKXtyZXR1cm4gbyYmbyhyLC4uLnQpLChyLmhhc093blByb3BlcnR5KFNlKT9yW1NlXTpPYmplY3QuZGVmaW5lUHJvcGVydHkocixTZSx7dmFsdWU6W119KVtTZV0pLnB1c2gobiksYSYmYShyKSxyfX1yZXR1cm4gZSYmKGkucHJvdG90eXBlPU9iamVjdC5jcmVhdGUoZS5wcm90b3R5cGUpKSxpLnByb3RvdHlwZS5uZ01ldGFkYXRhTmFtZT10LGkuYW5ub3RhdGlvbkNscz1pLGl9KSl9ZnVuY3Rpb24gUmUodCl7cmV0dXJuIGZ1bmN0aW9uIG4oLi4uZSl7aWYodCl7Y29uc3Qgbj10KC4uLmUpO2Zvcihjb25zdCB0IGluIG4pdGhpc1t0XT1uW3RdfX19ZnVuY3Rpb24gVGUodCxuLGUpe3JldHVybiB3ZSgoKCk9Pntjb25zdCBhPVJlKG4pO2Z1bmN0aW9uIG8oLi4udCl7aWYodGhpcyBpbnN0YW5jZW9mIG8pcmV0dXJuIGEuYXBwbHkodGhpcyx0KSx0aGlzO2NvbnN0IG49bmV3IG8oLi4udCk7cmV0dXJuIGUuYW5ub3RhdGlvbj1uLGU7ZnVuY3Rpb24gZSh0LGUsYSl7Y29uc3Qgbz10Lmhhc093blByb3BlcnR5KEVlKT90W0VlXTpPYmplY3QuZGVmaW5lUHJvcGVydHkodCxFZSx7dmFsdWU6W119KVtFZV07Zm9yKDtvLmxlbmd0aDw9YTspby5wdXNoKG51bGwpO3JldHVybihvW2FdPW9bYV18fFtdKS5wdXNoKG4pLHR9fXJldHVybiBlJiYoby5wcm90b3R5cGU9T2JqZWN0LmNyZWF0ZShlLnByb3RvdHlwZSkpLG8ucHJvdG90eXBlLm5nTWV0YWRhdGFOYW1lPXQsby5hbm5vdGF0aW9uQ2xzPW8sb30pKX1mdW5jdGlvbiBEZSh0LG4sZSxhKXtyZXR1cm4gd2UoKCgpPT57Y29uc3Qgbz1SZShuKTtmdW5jdGlvbiByKC4uLnQpe2lmKHRoaXMgaW5zdGFuY2VvZiByKXJldHVybiBvLmFwcGx5KHRoaXMsdCksdGhpcztjb25zdCBuPW5ldyByKC4uLnQpO3JldHVybiBmdW5jdGlvbiBlKG8scil7Y29uc3QgaT1vLmNvbnN0cnVjdG9yLGM9aS5oYXNPd25Qcm9wZXJ0eShBZSk/aVtBZV06T2JqZWN0LmRlZmluZVByb3BlcnR5KGksQWUse3ZhbHVlOnt9fSlbQWVdO2Nbcl09Yy5oYXNPd25Qcm9wZXJ0eShyKSYmY1tyXXx8W10sY1tyXS51bnNoaWZ0KG4pLGEmJmEobyxyLC4uLnQpfX1yZXR1cm4gZSYmKHIucHJvdG90eXBlPU9iamVjdC5jcmVhdGUoZS5wcm90b3R5cGUpKSxyLnByb3RvdHlwZS5uZ01ldGFkYXRhTmFtZT10LHIuYW5ub3RhdGlvbkNscz1yLHJ9KSl9Ci8qKgogICAgICogQGxpY2Vuc2UKICAgICAqIENvcHlyaWdodCBHb29nbGUgTExDIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCiAgICAgKgogICAgICogVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYW4gTUlULXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKICAgICAqIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUgYXQgaHR0cHM6Ly9hbmd1bGFyLmlvL2xpY2Vuc2UKICAgICAqL2NvbnN0IEllPVRlKCJJbmplY3QiLCh0PT4oe3Rva2VuOnR9KSkpLE5lPVRlKCJPcHRpb25hbCIpLEZlPVRlKCJTZWxmIiksTGU9VGUoIlNraXBTZWxmIiksSGU9VGUoIkhvc3QiKSxCZT1UZSgiQXR0cmlidXRlIiwodD0+KHthdHRyaWJ1dGVOYW1lOnR9KSkpOwovKioKICAgICAqIEBsaWNlbnNlCiAgICAgKiBDb3B5cmlnaHQgR29vZ2xlIExMQyBBbGwgUmlnaHRzIFJlc2VydmVkLgogICAgICoKICAgICAqIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGFuIE1JVC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCiAgICAgKiBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlIGF0IGh0dHBzOi8vYW5ndWxhci5pby9saWNlbnNlCiAgICAgKi8KdmFyIFZlOwovKioKICAgICAqIEBsaWNlbnNlCiAgICAgKiBDb3B5cmlnaHQgR29vZ2xlIExMQyBBbGwgUmlnaHRzIFJlc2VydmVkLgogICAgICoKICAgICAqIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGFuIE1JVC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCiAgICAgKiBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlIGF0IGh0dHBzOi8vYW5ndWxhci5pby9saWNlbnNlCiAgICAgKi8KZnVuY3Rpb24gamUodCl7Zm9yKGxldCBuIGluIHQpaWYodFtuXT09PWplKXJldHVybiBuO3Rocm93IEVycm9yKCJDb3VsZCBub3QgZmluZCByZW5hbWVkIHByb3BlcnR5IG9uIHRhcmdldCBvYmplY3QuIil9ZnVuY3Rpb24gVWUodCxuKXtmb3IoY29uc3QgZSBpbiBuKW4uaGFzT3duUHJvcGVydHkoZSkmJiF0Lmhhc093blByb3BlcnR5KGUpJiYodFtlXT1uW2VdKX0KLyoqCiAgICAgKiBAbGljZW5zZQogICAgICogQ29weXJpZ2h0IEdvb2dsZSBMTEMgQWxsIFJpZ2h0cyBSZXNlcnZlZC4KICAgICAqCiAgICAgKiBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhbiBNSVQtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQogICAgICogZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZSBhdCBodHRwczovL2FuZ3VsYXIuaW8vbGljZW5zZQogICAgICovZnVuY3Rpb24gV2UodCl7cmV0dXJue3Rva2VuOnQudG9rZW4scHJvdmlkZWRJbjp0LnByb3ZpZGVkSW58fG51bGwsZmFjdG9yeTp0LmZhY3RvcnksdmFsdWU6dm9pZCAwfX1mdW5jdGlvbiBHZSh0KXtyZXR1cm57ZmFjdG9yeTp0LmZhY3RvcnkscHJvdmlkZXJzOnQucHJvdmlkZXJzfHxbXSxpbXBvcnRzOnQuaW1wb3J0c3x8W119fWZ1bmN0aW9uIFllKHQpe3JldHVybiBxZSh0LHRbWGVdKXx8cWUodCx0W0tlXSl9ZnVuY3Rpb24gcWUodCxuKXtyZXR1cm4gbiYmbi50b2tlbj09PXQ/bjpudWxsfWZ1bmN0aW9uIFplKHQpe3JldHVybiB0JiYodC5oYXNPd25Qcm9wZXJ0eShKZSl8fHQuaGFzT3duUHJvcGVydHkoJGUpKT90W0plXTpudWxsfSEoZnVuY3Rpb24odCl7dFt0LkRlZmF1bHQ9MF09IkRlZmF1bHQiLHRbdC5Ib3N0PTFdPSJIb3N0Iix0W3QuU2VsZj0yXT0iU2VsZiIsdFt0LlNraXBTZWxmPTRdPSJTa2lwU2VsZiIsdFt0Lk9wdGlvbmFsPThdPSJPcHRpb25hbCJ9KShWZXx8KFZlPXt9KSk7Y29uc3QgWGU9amUoeyLJtXByb3YiOmplfSksSmU9amUoeyLJtWluaiI6amV9KSxRZT1qZSh7Ism1cHJvdkZhbGxiYWNrIjpqZX0pLEtlPWplKHtuZ0luamVjdGFibGVEZWY6amV9KSwkZT1qZSh7bmdJbmplY3RvckRlZjpqZX0pOwovKioKICAgICAqIEBsaWNlbnNlCiAgICAgKiBDb3B5cmlnaHQgR29vZ2xlIExMQyBBbGwgUmlnaHRzIFJlc2VydmVkLgogICAgICoKICAgICAqIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGFuIE1JVC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCiAgICAgKiBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlIGF0IGh0dHBzOi8vYW5ndWxhci5pby9saWNlbnNlCiAgICAgKi8KZnVuY3Rpb24gdGEodCl7aWYoInN0cmluZyI9PXR5cGVvZiB0KXJldHVybiB0O2lmKEFycmF5LmlzQXJyYXkodCkpcmV0dXJuIlsiK3QubWFwKHRhKS5qb2luKCIsICIpKyJdIjtpZihudWxsPT10KXJldHVybiIiK3Q7aWYodC5vdmVycmlkZGVuTmFtZSlyZXR1cm5gJHt0Lm92ZXJyaWRkZW5OYW1lfWA7aWYodC5uYW1lKXJldHVybmAke3QubmFtZX1gO2NvbnN0IG49dC50b1N0cmluZygpO2lmKG51bGw9PW4pcmV0dXJuIiIrbjtjb25zdCBlPW4uaW5kZXhPZigiXG4iKTtyZXR1cm4tMT09PWU/bjpuLnN1YnN0cmluZygwLGUpfWZ1bmN0aW9uIG5hKHQsbil7cmV0dXJuIG51bGw9PXR8fCIiPT09dD9udWxsPT09bj8iIjpuOm51bGw9PW58fCIiPT09bj90OnQrIiAiK259Ci8qKgogICAgICogQGxpY2Vuc2UKICAgICAqIENvcHlyaWdodCBHb29nbGUgTExDIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCiAgICAgKgogICAgICogVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYW4gTUlULXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKICAgICAqIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUgYXQgaHR0cHM6Ly9hbmd1bGFyLmlvL2xpY2Vuc2UKICAgICAqL2NvbnN0IGVhPWplKHtfX2ZvcndhcmRfcmVmX186amV9KTtmdW5jdGlvbiBhYSh0KXtyZXR1cm4gdC5fX2ZvcndhcmRfcmVmX189YWEsdC50b1N0cmluZz1mdW5jdGlvbigpe3JldHVybiB0YSh0aGlzKCkpfSx0fWZ1bmN0aW9uIG9hKHQpe3JldHVybiByYSh0KT90KCk6dH1mdW5jdGlvbiByYSh0KXtyZXR1cm4iZnVuY3Rpb24iPT10eXBlb2YgdCYmdC5oYXNPd25Qcm9wZXJ0eShlYSkmJnQuX19mb3J3YXJkX3JlZl9fPT09YWF9Ci8qKgogICAgICogQGxpY2Vuc2UKICAgICAqIENvcHlyaWdodCBHb29nbGUgTExDIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCiAgICAgKgogICAgICogVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYW4gTUlULXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKICAgICAqIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUgYXQgaHR0cHM6Ly9hbmd1bGFyLmlvL2xpY2Vuc2UKICAgICAqL2NvbnN0IGlhPSJ1bmRlZmluZWQiIT10eXBlb2YgZ2xvYmFsVGhpcyYmZ2xvYmFsVGhpcyxjYT0idW5kZWZpbmVkIiE9dHlwZW9mIHdpbmRvdyYmd2luZG93LHNhPSJ1bmRlZmluZWQiIT10eXBlb2Ygc2VsZiYmInVuZGVmaW5lZCIhPXR5cGVvZiBXb3JrZXJHbG9iYWxTY29wZSYmc2VsZiBpbnN0YW5jZW9mIFdvcmtlckdsb2JhbFNjb3BlJiZzZWxmLGxhPSJ1bmRlZmluZWQiIT10eXBlb2YgZ2xvYmFsJiZnbG9iYWwsbWE9aWF8fGxhfHxjYXx8c2E7Ci8qKgogICAgICogQGxpY2Vuc2UKICAgICAqIENvcHlyaWdodCBHb29nbGUgTExDIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCiAgICAgKgogICAgICogVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYW4gTUlULXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKICAgICAqIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUgYXQgaHR0cHM6Ly9hbmd1bGFyLmlvL2xpY2Vuc2UKICAgICAqLwp2YXIgZGEsZ2EscGE7Ci8qKgogICAgICogQGxpY2Vuc2UKICAgICAqIENvcHlyaWdodCBHb29nbGUgTExDIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCiAgICAgKgogICAgICogVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYW4gTUlULXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKICAgICAqIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUgYXQgaHR0cHM6Ly9hbmd1bGFyLmlvL2xpY2Vuc2UKICAgICAqLwpmdW5jdGlvbiBiYSgpe2NvbnN0IHQ9bWEubmc7aWYoIXR8fCF0Lsm1Y29tcGlsZXJGYWNhZGUpdGhyb3cgbmV3IEVycm9yKCJBbmd1bGFyIEpJVCBjb21waWxhdGlvbiBmYWlsZWQ6ICdAYW5ndWxhci9jb21waWxlcicgbm90IGxvYWRlZCFcbiAgLSBKSVQgY29tcGlsYXRpb24gaXMgZGlzY291cmFnZWQgZm9yIHByb2R1Y3Rpb24gdXNlLWNhc2VzISBDb25zaWRlciBBT1QgbW9kZSBpbnN0ZWFkLlxuICAtIERpZCB5b3UgYm9vdHN0cmFwIHVzaW5nICdAYW5ndWxhci9wbGF0Zm9ybS1icm93c2VyLWR5bmFtaWMnIG9yICdAYW5ndWxhci9wbGF0Zm9ybS1zZXJ2ZXInP1xuICAtIEFsdGVybmF0aXZlbHkgcHJvdmlkZSB0aGUgY29tcGlsZXIgd2l0aCAnaW1wb3J0IFwiQGFuZ3VsYXIvY29tcGlsZXJcIjsnIGJlZm9yZSBib290c3RyYXBwaW5nLiIpO3JldHVybiB0Lsm1Y29tcGlsZXJGYWNhZGV9Ci8qKgogICAgICogQGxpY2Vuc2UKICAgICAqIENvcHlyaWdodCBHb29nbGUgTExDIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCiAgICAgKgogICAgICogVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYW4gTUlULXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKICAgICAqIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUgYXQgaHR0cHM6Ly9hbmd1bGFyLmlvL2xpY2Vuc2UKICAgICAqLyEoZnVuY3Rpb24odCl7dFt0LlRva2VuPTBdPSJUb2tlbiIsdFt0LkF0dHJpYnV0ZT0xXT0iQXR0cmlidXRlIix0W3QuQ2hhbmdlRGV0ZWN0b3JSZWY9Ml09IkNoYW5nZURldGVjdG9yUmVmIix0W3QuSW52YWxpZD0zXT0iSW52YWxpZCJ9KShkYXx8KGRhPXt9KSksKGZ1bmN0aW9uKHQpe3RbdC5EaXJlY3RpdmU9MF09IkRpcmVjdGl2ZSIsdFt0LkNvbXBvbmVudD0xXT0iQ29tcG9uZW50Iix0W3QuSW5qZWN0YWJsZT0yXT0iSW5qZWN0YWJsZSIsdFt0LlBpcGU9M109IlBpcGUiLHRbdC5OZ01vZHVsZT00XT0iTmdNb2R1bGUifSkoZ2F8fChnYT17fSkpLChmdW5jdGlvbih0KXt0W3QuRW11bGF0ZWQ9MF09IkVtdWxhdGVkIix0W3QuTmF0aXZlPTFdPSJOYXRpdmUiLHRbdC5Ob25lPTJdPSJOb25lIix0W3QuU2hhZG93RG9tPTNdPSJTaGFkb3dEb20ifSkocGF8fChwYT17fSkpO2NvbnN0IHVhPWplKHsiybVjbXAiOmplfSksZmE9amUoeyLJtWRpciI6amV9KSxoYT1qZSh7Ism1cGlwZSI6amV9KSxfYT1qZSh7Ism1bW9kIjpqZX0pLENhPWplKHsiybVsb2MiOmplfSksTWE9amUoeyLJtWZhYyI6amV9KSxPYT1qZSh7X19OR19FTEVNRU5UX0lEX186amV9KTtmdW5jdGlvbiBQYSgpe3JldHVybiEoInVuZGVmaW5lZCIhPXR5cGVvZiBuZ0Rldk1vZGUmJiFuZ0Rldk1vZGV8fCgib2JqZWN0IiE9dHlwZW9mIG5nRGV2TW9kZSYmKAovKioKICAgICAqIEBsaWNlbnNlCiAgICAgKiBDb3B5cmlnaHQgR29vZ2xlIExMQyBBbGwgUmlnaHRzIFJlc2VydmVkLgogICAgICoKICAgICAqIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGFuIE1JVC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCiAgICAgKiBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlIGF0IGh0dHBzOi8vYW5ndWxhci5pby9saWNlbnNlCiAgICAgKi8KZnVuY3Rpb24gdCgpe2NvbnN0IHQ9InVuZGVmaW5lZCIhPXR5cGVvZiBsb2NhdGlvbj9sb2NhdGlvbi50b1N0cmluZygpOiIiLG49e25hbWVkQ29uc3RydWN0b3JzOi0xIT10LmluZGV4T2YoIm5nRGV2TW9kZT1uYW1lZENvbnN0cnVjdG9ycyIpLGZpcnN0Q3JlYXRlUGFzczowLHROb2RlOjAsdFZpZXc6MCxyZW5kZXJlckNyZWF0ZVRleHROb2RlOjAscmVuZGVyZXJTZXRUZXh0OjAscmVuZGVyZXJDcmVhdGVFbGVtZW50OjAscmVuZGVyZXJBZGRFdmVudExpc3RlbmVyOjAscmVuZGVyZXJTZXRBdHRyaWJ1dGU6MCxyZW5kZXJlclJlbW92ZUF0dHJpYnV0ZTowLHJlbmRlcmVyU2V0UHJvcGVydHk6MCxyZW5kZXJlclNldENsYXNzTmFtZTowLHJlbmRlcmVyQWRkQ2xhc3M6MCxyZW5kZXJlclJlbW92ZUNsYXNzOjAscmVuZGVyZXJTZXRTdHlsZTowLHJlbmRlcmVyUmVtb3ZlU3R5bGU6MCxyZW5kZXJlckRlc3Ryb3k6MCxyZW5kZXJlckRlc3Ryb3lOb2RlOjAscmVuZGVyZXJNb3ZlTm9kZTowLHJlbmRlcmVyUmVtb3ZlTm9kZTowLHJlbmRlcmVyQXBwZW5kQ2hpbGQ6MCxyZW5kZXJlckluc2VydEJlZm9yZTowLHJlbmRlcmVyQ3JlYXRlQ29tbWVudDowfSxlPS0xPT09dC5pbmRleE9mKCJuZ0Rldk1vZGU9ZmFsc2UiKTttYS5uZ0Rldk1vZGU9ZSYmbn0pKCksInVuZGVmaW5lZCI9PXR5cGVvZiBuZ0Rldk1vZGV8fCFuZ0Rldk1vZGUpKX0KLyoqCiAgICAgKiBAbGljZW5zZQogICAgICogQ29weXJpZ2h0IEdvb2dsZSBMTEMgQWxsIFJpZ2h0cyBSZXNlcnZlZC4KICAgICAqCiAgICAgKiBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhbiBNSVQtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQogICAgICogZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZSBhdCBodHRwczovL2FuZ3VsYXIuaW8vbGljZW5zZQogICAgICovZnVuY3Rpb24geGEodCxuKXsibnVtYmVyIiE9dHlwZW9mIHQmJkRhKG4sdHlwZW9mIHQsIm51bWJlciIsIj09PSIpfWZ1bmN0aW9uIHlhKHQsbixlKXt4YSh0LCJFeHBlY3RlZCBhIG51bWJlciIpLHphKHQsZSwiRXhwZWN0ZWQgbnVtYmVyIHRvIGJlIGxlc3MgdGhhbiBvciBlcXVhbCB0byIpLChmdW5jdGlvbiBhKHQsbixlKXt0Pj1ufHxEYShlLHQsbiwiPj0iKX0pKHQsbiwiRXhwZWN0ZWQgbnVtYmVyIHRvIGJlIGdyZWF0ZXIgdGhhbiBvciBlcXVhbCB0byIpfWZ1bmN0aW9uIGthKHQsbil7InN0cmluZyIhPXR5cGVvZiB0JiZEYShuLG51bGw9PT10PyJudWxsIjp0eXBlb2YgdCwic3RyaW5nIiwiPT09Iil9ZnVuY3Rpb24gdmEodCxuLGUpe3QhPW4mJkRhKGUsdCxuLCI9PSIpfWZ1bmN0aW9uIHdhKHQsbixlKXt0PT1uJiZEYShlLHQsbiwiIT0iKX1mdW5jdGlvbiBTYSh0LG4sZSl7dCE9PW4mJkRhKGUsdCxuLCI9PT0iKX1mdW5jdGlvbiBFYSh0LG4sZSl7dD09PW4mJkRhKGUsdCxuLCIhPT0iKX1mdW5jdGlvbiBBYSh0LG4sZSl7dDxufHxEYShlLHQsbiwiPCIpfWZ1bmN0aW9uIHphKHQsbixlKXt0PD1ufHxEYShlLHQsbiwiPD0iKX1mdW5jdGlvbiBSYSh0LG4sZSl7dD5ufHxEYShlLHQsbiwiPiIpfWZ1bmN0aW9uIFRhKHQsbil7bnVsbD09dCYmRGEobix0LG51bGwsIiE9Iil9ZnVuY3Rpb24gRGEodCxuLGUsYSl7dGhyb3cgbmV3IEVycm9yKGBBU1NFUlRJT04gRVJST1I6ICR7dH1gKyhudWxsPT1hPyIiOmAgW0V4cGVjdGVkPT4gJHtlfSAke2F9ICR7bn0gPD1BY3R1YWxdYCkpfWZ1bmN0aW9uIElhKHQpe3ZhKCJ1bmRlZmluZWQiIT10eXBlb2YgTm9kZSYmdCBpbnN0YW5jZW9mIE5vZGV8fCJvYmplY3QiPT10eXBlb2YgdCYmbnVsbCE9dCYmIldlYldvcmtlclJlbmRlck5vZGUiPT09dC5jb25zdHJ1Y3Rvci5uYW1lLCEwLGBUaGUgcHJvdmlkZWQgdmFsdWUgbXVzdCBiZSBhbiBpbnN0YW5jZSBvZiBhIERPTSBOb2RlIGJ1dCBnb3QgJHt0YSh0KX1gKX1mdW5jdGlvbiBOYSh0LG4pe2NvbnN0IGU9dD90Lmxlbmd0aDowO0FhKG4sZSxgSW5kZXggZXhwZWN0ZWQgdG8gYmUgbGVzcyB0aGFuICR7ZX0gYnV0IGdvdCAke259YCl9Ci8qKgogICAgICogQGxpY2Vuc2UKICAgICAqIENvcHlyaWdodCBHb29nbGUgTExDIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCiAgICAgKgogICAgICogVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYW4gTUlULXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKICAgICAqIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUgYXQgaHR0cHM6Ly9hbmd1bGFyLmlvL2xpY2Vuc2UKICAgICAqL2NsYXNzIEZhe2NvbnN0cnVjdG9yKHQsbil7dGhpcy5fZGVzYz10LHRoaXMubmdNZXRhZGF0YU5hbWU9IkluamVjdGlvblRva2VuIix0aGlzLsm1cHJvdj12b2lkIDAsIm51bWJlciI9PXR5cGVvZiBuP3RoaXMuX19OR19FTEVNRU5UX0lEX189bjp2b2lkIDAhPT1uJiYodGhpcy7JtXByb3Y9V2Uoe3Rva2VuOnRoaXMscHJvdmlkZWRJbjpuLnByb3ZpZGVkSW58fCJyb290IixmYWN0b3J5Om4uZmFjdG9yeX0pKX10b1N0cmluZygpe3JldHVybmBJbmplY3Rpb25Ub2tlbiAke3RoaXMuX2Rlc2N9YH19Ci8qKgogICAgICogQGxpY2Vuc2UKICAgICAqIENvcHlyaWdodCBHb29nbGUgTExDIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCiAgICAgKgogICAgICogVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYW4gTUlULXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKICAgICAqIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUgYXQgaHR0cHM6Ly9hbmd1bGFyLmlvL2xpY2Vuc2UKICAgICAqL2NvbnN0IExhPW5ldyBGYSgiSU5KRUNUT1IiLC0xKSxIYT17fSxCYT0vXG4vZ20sVmE9Il9fc291cmNlIixqYT1qZSh7cHJvdmlkZTpTdHJpbmcsdXNlVmFsdWU6amV9KTtsZXQgVWEsV2E7ZnVuY3Rpb24gR2EodCl7Y29uc3Qgbj1VYTtyZXR1cm4gVWE9dCxufWZ1bmN0aW9uIFlhKHQpe2NvbnN0IG49V2E7cmV0dXJuIFdhPXQsbn1mdW5jdGlvbiBxYSh0LG49VmUuRGVmYXVsdCl7aWYodm9pZCAwPT09VWEpdGhyb3cgbmV3IEVycm9yKCJpbmplY3QoKSBtdXN0IGJlIGNhbGxlZCBmcm9tIGFuIGluamVjdGlvbiBjb250ZXh0Iik7cmV0dXJuIG51bGw9PT1VYT9RYSh0LHZvaWQgMCxuKTpVYS5nZXQodCxuJlZlLk9wdGlvbmFsP251bGw6dm9pZCAwLG4pfWZ1bmN0aW9uIFphKHQsbj1WZS5EZWZhdWx0KXtyZXR1cm4oV2F8fHFhKShvYSh0KSxuKX1mdW5jdGlvbiBYYSh0KXtjb25zdCBuPW5nRGV2TW9kZT9gVGhpcyBjb25zdHJ1Y3RvciBpcyBub3QgY29tcGF0aWJsZSB3aXRoIEFuZ3VsYXIgRGVwZW5kZW5jeSBJbmplY3Rpb24gYmVjYXVzZSBpdHMgZGVwZW5kZW5jeSBhdCBpbmRleCAke3R9IG9mIHRoZSBwYXJhbWV0ZXIgbGlzdCBpcyBpbnZhbGlkLlxuVGhpcyBjYW4gaGFwcGVuIGlmIHRoZSBkZXBlbmRlbmN5IHR5cGUgaXMgYSBwcmltaXRpdmUgbGlrZSBhIHN0cmluZyBvciBpZiBhbiBhbmNlc3RvciBvZiB0aGlzIGNsYXNzIGlzIG1pc3NpbmcgYW4gQW5ndWxhciBkZWNvcmF0b3IuXG5cblBsZWFzZSBjaGVjayB0aGF0IDEpIHRoZSB0eXBlIGZvciB0aGUgcGFyYW1ldGVyIGF0IGluZGV4ICR7dH0gaXMgY29ycmVjdCBhbmQgMikgdGhlIGNvcnJlY3QgQW5ndWxhciBkZWNvcmF0b3JzIGFyZSBkZWZpbmVkIGZvciB0aGlzIGNsYXNzIGFuZCBpdHMgYW5jZXN0b3JzLmA6ImludmFsaWQiO3Rocm93IG5ldyBFcnJvcihuKX1jb25zdCBKYT1aYTtmdW5jdGlvbiBRYSh0LG4sZSl7Y29uc3QgYT1ZZSh0KTtpZihhJiYicm9vdCI9PWEucHJvdmlkZWRJbilyZXR1cm4gdm9pZCAwPT09YS52YWx1ZT9hLnZhbHVlPWEuZmFjdG9yeSgpOmEudmFsdWU7aWYoZSZWZS5PcHRpb25hbClyZXR1cm4gbnVsbDtpZih2b2lkIDAhPT1uKXJldHVybiBuO3Rocm93IG5ldyBFcnJvcihgSW5qZWN0b3I6IE5PVF9GT1VORCBbJHt0YSh0KX1dYCl9ZnVuY3Rpb24gS2EodCl7Y29uc3Qgbj1bXTtmb3IobGV0IGU9MDtlPHQubGVuZ3RoO2UrKyl7Y29uc3QgYT1vYSh0W2VdKTtpZihBcnJheS5pc0FycmF5KGEpKXtpZigwPT09YS5sZW5ndGgpdGhyb3cgbmV3IEVycm9yKCJBcmd1bWVudHMgYXJyYXkgbXVzdCBoYXZlIGFyZ3VtZW50cy4iKTtsZXQgdCxlPVZlLkRlZmF1bHQ7Zm9yKGxldCBuPTA7bjxhLmxlbmd0aDtuKyspe2NvbnN0IG89YVtuXTtvIGluc3RhbmNlb2YgTmV8fCJPcHRpb25hbCI9PT1vLm5nTWV0YWRhdGFOYW1lfHxvPT09TmU/ZXw9VmUuT3B0aW9uYWw6byBpbnN0YW5jZW9mIExlfHwiU2tpcFNlbGYiPT09by5uZ01ldGFkYXRhTmFtZXx8bz09PUxlP2V8PVZlLlNraXBTZWxmOm8gaW5zdGFuY2VvZiBGZXx8IlNlbGYiPT09by5uZ01ldGFkYXRhTmFtZXx8bz09PUZlP2V8PVZlLlNlbGY6dD1vIGluc3RhbmNlb2YgSWV8fG89PT1JZT9vLnRva2VuOm99bi5wdXNoKFphKHQsZSkpfWVsc2Ugbi5wdXNoKFphKGEpKX1yZXR1cm4gbn1jbGFzcyAkYXtnZXQodCxuPUhhKXtpZihuPT09SGEpe2NvbnN0IG49bmV3IEVycm9yKGBOdWxsSW5qZWN0b3JFcnJvcjogTm8gcHJvdmlkZXIgZm9yICR7dGEodCl9IWApO3Rocm93IG4ubmFtZT0iTnVsbEluamVjdG9yRXJyb3IiLG59cmV0dXJuIG59fQovKioKICAgICAqIEBsaWNlbnNlCiAgICAgKiBDb3B5cmlnaHQgR29vZ2xlIExMQyBBbGwgUmlnaHRzIFJlc2VydmVkLgogICAgICoKICAgICAqIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGFuIE1JVC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCiAgICAgKiBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlIGF0IGh0dHBzOi8vYW5ndWxhci5pby9saWNlbnNlCiAgICAgKi8KY29uc3QgdG89eyLJtcm1ZGVmaW5lSW5qZWN0YWJsZSI6V2UsIsm1ybVkZWZpbmVJbmplY3RvciI6R2UsIsm1ybVpbmplY3QiOlphLCLJtcm1Z2V0RmFjdG9yeU9mIjpmdW5jdGlvbiB0KG4pe2NvbnN0IGU9bjtpZihyYShuKSlyZXR1cm4oKT0+e2NvbnN0IG49dChvYShlKSk7cmV0dXJuIG4/bigpOm51bGx9O2NvbnN0IGE9WWUoZSl8fFplKGUpO3JldHVybiBhJiZ2b2lkIDAhPT1hLmZhY3Rvcnk/YS5mYWN0b3J5Om51bGx9Ci8qKgogICAgICogQGxpY2Vuc2UKICAgICAqIENvcHlyaWdodCBHb29nbGUgTExDIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCiAgICAgKgogICAgICogVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYW4gTUlULXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKICAgICAqIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUgYXQgaHR0cHM6Ly9hbmd1bGFyLmlvL2xpY2Vuc2UKICAgICAqLywiybXJtWludmFsaWRGYWN0b3J5RGVwIjpYYX07Y2xhc3Mgbm97fQovKioKICAgICAqIEBsaWNlbnNlCiAgICAgKiBDb3B5cmlnaHQgR29vZ2xlIExMQyBBbGwgUmlnaHRzIFJlc2VydmVkLgogICAgICoKICAgICAqIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGFuIE1JVC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCiAgICAgKiBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlIGF0IGh0dHBzOi8vYW5ndWxhci5pby9saWNlbnNlCiAgICAgKi8KZnVuY3Rpb24gZW8odCxuKXtmb3IobGV0IGU9MDtlPHQubGVuZ3RoO2UrKyluLnB1c2godFtlXSl9ZnVuY3Rpb24gYW8odCxuKXt2b2lkIDA9PT1uJiYobj10KTtmb3IobGV0IGU9MDtlPHQubGVuZ3RoO2UrKyl7bGV0IGE9dFtlXTtBcnJheS5pc0FycmF5KGEpPyhuPT09dCYmKG49dC5zbGljZSgwLGUpKSxhbyhhLG4pKTpuIT09dCYmbi5wdXNoKGEpfXJldHVybiBufWZ1bmN0aW9uIG9vKHQsbil7dC5mb3JFYWNoKCh0PT5BcnJheS5pc0FycmF5KHQpP29vKHQsbik6bih0KSkpfWZ1bmN0aW9uIHJvKHQsbixlKXtuPj10Lmxlbmd0aD90LnB1c2goZSk6dC5zcGxpY2UobiwwLGUpfWZ1bmN0aW9uIGlvKHQsbil7cmV0dXJuIG4+PXQubGVuZ3RoLTE/dC5wb3AoKTp0LnNwbGljZShuLDEpWzBdfWZ1bmN0aW9uIGNvKHQsbil7Y29uc3QgZT1bXTtmb3IobGV0IGE9MDthPHQ7YSsrKWUucHVzaChuKTtyZXR1cm4gZX1mdW5jdGlvbiBzbyh0LG4sZSl7bGV0IGE9bW8odCxuKTtyZXR1cm4gYT49MD90WzF8YV09ZTooYT1+YSwoZnVuY3Rpb24gbyh0LG4sZSxhKXtuZ0Rldk1vZGUmJnphKG4sdC5sZW5ndGgsIkNhbid0IGluc2VydCBwYXN0IGFycmF5IGVuZC4iKTtsZXQgbz10Lmxlbmd0aDtpZihvPT1uKXQucHVzaChlLGEpO2Vsc2UgaWYoMT09PW8pdC5wdXNoKGEsdFswXSksdFswXT1lO2Vsc2V7Zm9yKG8tLSx0LnB1c2godFtvLTFdLHRbb10pO28+bjspdFtvXT10W28tMl0sby0tO3Rbbl09ZSx0W24rMV09YX19KSh0LGEsbixlKSksYX1mdW5jdGlvbiBsbyh0LG4pe2NvbnN0IGU9bW8odCxuKTtpZihlPj0wKXJldHVybiB0WzF8ZV19ZnVuY3Rpb24gbW8odCxuKXtyZXR1cm4oZnVuY3Rpb24gZSh0LG4sYSl7bmdEZXZNb2RlJiZ2YShBcnJheS5pc0FycmF5KHQpLCEwLCJFeHBlY3RpbmcgYW4gYXJyYXkiKTtsZXQgbz0wLHI9dC5sZW5ndGg+PmE7Zm9yKDtyIT09bzspe2NvbnN0IGU9bysoci1vPj4xKSxpPXRbZTw8YV07aWYobj09PWkpcmV0dXJuIGU8PGE7aT5uP3I9ZTpvPWUrMX1yZXR1cm5+KHI8PGEpfQovKioKICAgICAqIEBsaWNlbnNlCiAgICAgKiBDb3B5cmlnaHQgR29vZ2xlIExMQyBBbGwgUmlnaHRzIFJlc2VydmVkLgogICAgICoKICAgICAqIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGFuIE1JVC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCiAgICAgKiBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlIGF0IGh0dHBzOi8vYW5ndWxhci5pby9saWNlbnNlCiAgICAgKi8pKHQsbiwxKX12YXIgZ28scG8sYm87IShmdW5jdGlvbih0KXt0W3QuT25QdXNoPTBdPSJPblB1c2giLHRbdC5EZWZhdWx0PTFdPSJEZWZhdWx0In0pKGdvfHwoZ289e30pKSwoZnVuY3Rpb24odCl7dFt0LkNoZWNrT25jZT0wXT0iQ2hlY2tPbmNlIix0W3QuQ2hlY2tlZD0xXT0iQ2hlY2tlZCIsdFt0LkNoZWNrQWx3YXlzPTJdPSJDaGVja0Fsd2F5cyIsdFt0LkRldGFjaGVkPTNdPSJEZXRhY2hlZCIsdFt0LkVycm9yZWQ9NF09IkVycm9yZWQiLHRbdC5EZXN0cm95ZWQ9NV09IkRlc3Ryb3llZCJ9KShwb3x8KHBvPXt9KSksKGZ1bmN0aW9uKHQpe3RbdC5FbXVsYXRlZD0wXT0iRW11bGF0ZWQiLHRbdC5OYXRpdmU9MV09Ik5hdGl2ZSIsdFt0Lk5vbmU9Ml09Ik5vbmUiLHRbdC5TaGFkb3dEb209M109IlNoYWRvd0RvbSJ9KShib3x8KGJvPXt9KSk7Ci8qKgogICAgICogQGxpY2Vuc2UKICAgICAqIENvcHlyaWdodCBHb29nbGUgTExDIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCiAgICAgKgogICAgICogVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYW4gTUlULXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKICAgICAqIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUgYXQgaHR0cHM6Ly9hbmd1bGFyLmlvL2xpY2Vuc2UKICAgICAqLwpjb25zdCB1bz17fSxmbz1bXTsoInVuZGVmaW5lZCI9PXR5cGVvZiBuZ0Rldk1vZGV8fG5nRGV2TW9kZSkmJlBhKCkmJihPYmplY3QuZnJlZXplKHVvKSxPYmplY3QuZnJlZXplKGZvKSkKLyoqCiAgICAgKiBAbGljZW5zZQogICAgICogQ29weXJpZ2h0IEdvb2dsZSBMTEMgQWxsIFJpZ2h0cyBSZXNlcnZlZC4KICAgICAqCiAgICAgKiBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhbiBNSVQtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQogICAgICogZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZSBhdCBodHRwczovL2FuZ3VsYXIuaW8vbGljZW5zZQogICAgICovO2xldCBobz0wO2Z1bmN0aW9uIF9vKHQpe3JldHVybiB3ZSgoKCk9PnsoInVuZGVmaW5lZCI9PXR5cGVvZiBuZ0Rldk1vZGV8fG5nRGV2TW9kZSkmJlBhKCk7Y29uc3Qgbj17fSxlPXt0eXBlOnQudHlwZSxwcm92aWRlcnNSZXNvbHZlcjpudWxsLGRlY2xzOnQuZGVjbHMsdmFyczp0LnZhcnMsZmFjdG9yeTpudWxsLHRlbXBsYXRlOnQudGVtcGxhdGV8fG51bGwsY29uc3RzOnQuY29uc3RzfHxudWxsLG5nQ29udGVudFNlbGVjdG9yczp0Lm5nQ29udGVudFNlbGVjdG9ycyxob3N0QmluZGluZ3M6dC5ob3N0QmluZGluZ3N8fG51bGwsaG9zdFZhcnM6dC5ob3N0VmFyc3x8MCxob3N0QXR0cnM6dC5ob3N0QXR0cnN8fG51bGwsY29udGVudFF1ZXJpZXM6dC5jb250ZW50UXVlcmllc3x8bnVsbCxkZWNsYXJlZElucHV0czpuLGlucHV0czpudWxsLG91dHB1dHM6bnVsbCxleHBvcnRBczp0LmV4cG9ydEFzfHxudWxsLG9uUHVzaDp0LmNoYW5nZURldGVjdGlvbj09PWdvLk9uUHVzaCxkaXJlY3RpdmVEZWZzOm51bGwscGlwZURlZnM6bnVsbCxzZWxlY3RvcnM6dC5zZWxlY3RvcnN8fGZvLHZpZXdRdWVyeTp0LnZpZXdRdWVyeXx8bnVsbCxmZWF0dXJlczp0LmZlYXR1cmVzfHxudWxsLGRhdGE6dC5kYXRhfHx7fSxlbmNhcHN1bGF0aW9uOnQuZW5jYXBzdWxhdGlvbnx8Ym8uRW11bGF0ZWQsaWQ6ImMiLHN0eWxlczp0LnN0eWxlc3x8Zm8sXzpudWxsLHNldElucHV0Om51bGwsc2NoZW1hczp0LnNjaGVtYXN8fG51bGwsdFZpZXc6bnVsbH0sYT10LmRpcmVjdGl2ZXMsbz10LmZlYXR1cmVzLHI9dC5waXBlcztyZXR1cm4gZS5pZCs9aG8rKyxlLmlucHV0cz1rbyh0LmlucHV0cyxuKSxlLm91dHB1dHM9a28odC5vdXRwdXRzKSxvJiZvLmZvckVhY2goKHQ9PnQoZSkpKSxlLmRpcmVjdGl2ZURlZnM9YT8oKT0+KCJmdW5jdGlvbiI9PXR5cGVvZiBhP2EoKTphKS5tYXAoTW8pOm51bGwsZS5waXBlRGVmcz1yPygpPT4oImZ1bmN0aW9uIj09dHlwZW9mIHI/cigpOnIpLm1hcChPbyk6bnVsbCxlfSkpfWZ1bmN0aW9uIENvKHQsbixlKXtjb25zdCBhPXQuybVjbXA7YS5kaXJlY3RpdmVEZWZzPSgpPT5uLm1hcChNbyksYS5waXBlRGVmcz0oKT0+ZS5tYXAoT28pfWZ1bmN0aW9uIE1vKHQpe2NvbnN0IG49U28odCl8fEVvKHQpO2lmKG5nRGV2TW9kZSYmIW4pdGhyb3cgbmV3IEVycm9yKGAnJHt0Lm5hbWV9JyBpcyBuZWl0aGVyICdDb21wb25lbnRUeXBlJyBvciAnRGlyZWN0aXZlVHlwZScuYCk7cmV0dXJuIG59ZnVuY3Rpb24gT28odCl7Y29uc3Qgbj1Bbyh0KTtpZihuZ0Rldk1vZGUmJiFuKXRocm93IG5ldyBFcnJvcihgJyR7dC5uYW1lfScgaXMgbm90IGEgJ1BpcGVUeXBlJy5gKTtyZXR1cm4gbn1jb25zdCBQbz17fTtmdW5jdGlvbiB4byh0KXtjb25zdCBuPXt0eXBlOnQudHlwZSxib290c3RyYXA6dC5ib290c3RyYXB8fGZvLGRlY2xhcmF0aW9uczp0LmRlY2xhcmF0aW9uc3x8Zm8saW1wb3J0czp0LmltcG9ydHN8fGZvLGV4cG9ydHM6dC5leHBvcnRzfHxmbyx0cmFuc2l0aXZlQ29tcGlsZVNjb3BlczpudWxsLHNjaGVtYXM6dC5zY2hlbWFzfHxudWxsLGlkOnQuaWR8fG51bGx9O3JldHVybiBudWxsIT10LmlkJiZ3ZSgoKCk9PntQb1t0LmlkXT10LnR5cGV9KSksbn1mdW5jdGlvbiB5byh0LG4pe3JldHVybiB3ZSgoKCk9Pntjb25zdCBlPVJvKHQsITApO2UuZGVjbGFyYXRpb25zPW4uZGVjbGFyYXRpb25zfHxmbyxlLmltcG9ydHM9bi5pbXBvcnRzfHxmbyxlLmV4cG9ydHM9bi5leHBvcnRzfHxmb30pKX1mdW5jdGlvbiBrbyh0LG4pe2lmKG51bGw9PXQpcmV0dXJuIHVvO2NvbnN0IGU9e307Zm9yKGNvbnN0IGEgaW4gdClpZih0Lmhhc093blByb3BlcnR5KGEpKXtsZXQgbz10W2FdLHI9bztBcnJheS5pc0FycmF5KG8pJiYocj1vWzFdLG89b1swXSksZVtvXT1hLG4mJihuW29dPXIpfXJldHVybiBlfWNvbnN0IHZvPV9vO2Z1bmN0aW9uIHdvKHQpe3JldHVybnt0eXBlOnQudHlwZSxuYW1lOnQubmFtZSxmYWN0b3J5Om51bGwscHVyZTohMSE9PXQucHVyZSxvbkRlc3Ryb3k6dC50eXBlLnByb3RvdHlwZS5uZ09uRGVzdHJveXx8bnVsbH19ZnVuY3Rpb24gU28odCl7cmV0dXJuIHRbdWFdfHxudWxsfWZ1bmN0aW9uIEVvKHQpe3JldHVybiB0W2ZhXXx8bnVsbH1mdW5jdGlvbiBBbyh0KXtyZXR1cm4gdFtoYV18fG51bGx9ZnVuY3Rpb24gem8odCxuKXtjb25zdCBlPXQuaGFzT3duUHJvcGVydHkoTWEpO2lmKCFlJiYhMD09PW4mJm5nRGV2TW9kZSl0aHJvdyBuZXcgRXJyb3IoYFR5cGUgJHt0YSh0KX0gZG9lcyBub3QgaGF2ZSAnybVmYWMnIHByb3BlcnR5LmApO3JldHVybiBlP3RbTWFdOm51bGx9ZnVuY3Rpb24gUm8odCxuKXtjb25zdCBlPXRbX2FdfHxudWxsO2lmKCFlJiYhMD09PW4pdGhyb3cgbmV3IEVycm9yKGBUeXBlICR7dGEodCl9IGRvZXMgbm90IGhhdmUgJ8m1bW9kJyBwcm9wZXJ0eS5gKTtyZXR1cm4gZX0KLyoqCiAgICAgKiBAbGljZW5zZQogICAgICogQ29weXJpZ2h0IEdvb2dsZSBMTEMgQWxsIFJpZ2h0cyBSZXNlcnZlZC4KICAgICAqCiAgICAgKiBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhbiBNSVQtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQogICAgICogZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZSBhdCBodHRwczovL2FuZ3VsYXIuaW8vbGljZW5zZQogICAgICovCmNvbnN0IFRvPTIwLERvPVsiUm9vdCIsIkNvbXBvbmVudCIsIkVtYmVkZGVkIl0sSW89MTA7Ci8qKgogICAgICogQGxpY2Vuc2UKICAgICAqIENvcHlyaWdodCBHb29nbGUgTExDIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCiAgICAgKgogICAgICogVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYW4gTUlULXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKICAgICAqIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUgYXQgaHR0cHM6Ly9hbmd1bGFyLmlvL2xpY2Vuc2UKICAgICAqLwpmdW5jdGlvbiBObyh0KXtyZXR1cm4gQXJyYXkuaXNBcnJheSh0KSYmIm9iamVjdCI9PXR5cGVvZiB0WzFdfWZ1bmN0aW9uIEZvKHQpe3JldHVybiBBcnJheS5pc0FycmF5KHQpJiYhMD09PXRbMV19ZnVuY3Rpb24gTG8odCl7cmV0dXJuIDAhPSg4JnQuZmxhZ3MpfWZ1bmN0aW9uIEhvKHQpe3JldHVybiAyPT0oMiZ0LmZsYWdzKX1mdW5jdGlvbiBCbyh0KXtyZXR1cm4gMT09KDEmdC5mbGFncyl9ZnVuY3Rpb24gVm8odCl7cmV0dXJuIG51bGwhPT10LnRlbXBsYXRlfWZ1bmN0aW9uIGpvKHQpe3JldHVybiAwIT0oNTEyJnRbMl0pfQovKioKICAgICAqIEBsaWNlbnNlCiAgICAgKiBDb3B5cmlnaHQgR29vZ2xlIExMQyBBbGwgUmlnaHRzIFJlc2VydmVkLgogICAgICoKICAgICAqIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGFuIE1JVC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCiAgICAgKiBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlIGF0IGh0dHBzOi8vYW5ndWxhci5pby9saWNlbnNlCiAgICAgKi9mdW5jdGlvbiBVbyh0LG4pe1dvKHQsblsxXSl9ZnVuY3Rpb24gV28odCxuKXtUYSh0LCJUTm9kZSBtdXN0IGJlIGRlZmluZWQiKSx0Lmhhc093blByb3BlcnR5KCJ0Vmlld18iKSYmdmEodC50Vmlld18sbiwiVGhpcyBUTm9kZSBkb2VzIG5vdCBiZWxvbmcgdG8gdGhpcyBUVmlldy4iKX1mdW5jdGlvbiBHbyh0KXtUYSh0LCJjdXJyZW50VE5vZGUgc2hvdWxkIGV4aXN0ISIpLFRhKHQucGFyZW50LCJjdXJyZW50VE5vZGUgc2hvdWxkIGhhdmUgYSBwYXJlbnQiKX1mdW5jdGlvbiBZbyh0KXtUYSh0LCJMQ29udGFpbmVyIG11c3QgYmUgZGVmaW5lZCIpLHZhKEZvKHQpLCEwLCJFeHBlY3RpbmcgTENvbnRhaW5lciIpfWZ1bmN0aW9uIHFvKHQpe3QmJnZhKE5vKHQpLCEwLCJFeHBlY3RpbmcgTFZpZXcgb3IgdW5kZWZpbmVkIG9yIG51bGwiKX1mdW5jdGlvbiBabyh0KXtUYSh0LCJMVmlldyBtdXN0IGJlIGRlZmluZWQiKSx2YShObyh0KSwhMCwiRXhwZWN0aW5nIExWaWV3Iil9ZnVuY3Rpb24gWG8odCxuKXt2YSh0LmZpcnN0Q3JlYXRlUGFzcywhMCxufHwiU2hvdWxkIG9ubHkgYmUgY2FsbGVkIGluIGZpcnN0IGNyZWF0ZSBwYXNzLiIpfWZ1bmN0aW9uIEpvKHQsbil7dmEodC5maXJzdFVwZGF0ZVBhc3MsITAsbnx8IlNob3VsZCBvbmx5IGJlIGNhbGxlZCBpbiBmaXJzdCB1cGRhdGUgcGFzcy4iKX1mdW5jdGlvbiBRbyh0LG4peyEoZnVuY3Rpb24gZSh0LG4sYSl7dDw9YSYmYTxufHxEYShgSW5kZXggb3V0IG9mIHJhbmdlIChleHBlY3RpbmcgJHt0fSA8PSAke2F9IDwgJHtufSlgKX0pKHRbMV0uZXhwYW5kb1N0YXJ0SW5kZXgsdC5sZW5ndGgsbil9ZnVuY3Rpb24gS28odCxuKXtRbyh0LG4pLFFvKHQsbis4KSx4YSh0W24rMF0sImluamVjdG9ySW5kZXggc2hvdWxkIHBvaW50IHRvIGEgYmxvb20gZmlsdGVyIikseGEodFtuKzFdLCJpbmplY3RvckluZGV4IHNob3VsZCBwb2ludCB0byBhIGJsb29tIGZpbHRlciIpLHhhKHRbbisyXSwiaW5qZWN0b3JJbmRleCBzaG91bGQgcG9pbnQgdG8gYSBibG9vbSBmaWx0ZXIiKSx4YSh0W24rM10sImluamVjdG9ySW5kZXggc2hvdWxkIHBvaW50IHRvIGEgYmxvb20gZmlsdGVyIikseGEodFtuKzRdLCJpbmplY3RvckluZGV4IHNob3VsZCBwb2ludCB0byBhIGJsb29tIGZpbHRlciIpLHhhKHRbbis1XSwiaW5qZWN0b3JJbmRleCBzaG91bGQgcG9pbnQgdG8gYSBibG9vbSBmaWx0ZXIiKSx4YSh0W24rNl0sImluamVjdG9ySW5kZXggc2hvdWxkIHBvaW50IHRvIGEgYmxvb20gZmlsdGVyIikseGEodFtuKzddLCJpbmplY3RvckluZGV4IHNob3VsZCBwb2ludCB0byBhIGJsb29tIGZpbHRlciIpLHhhKHRbbis4XSwiaW5qZWN0b3JJbmRleCBzaG91bGQgcG9pbnQgdG8gcGFyZW50IGluamVjdG9yIil9Ci8qKgogICAgICogQGxpY2Vuc2UKICAgICAqIENvcHlyaWdodCBHb29nbGUgTExDIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCiAgICAgKgogICAgICogVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYW4gTUlULXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKICAgICAqIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUgYXQgaHR0cHM6Ly9hbmd1bGFyLmlvL2xpY2Vuc2UKICAgICAqL2Z1bmN0aW9uICRvKHQpe3JldHVybiJzdHJpbmciPT10eXBlb2YgdD90Om51bGw9PXQ/IiI6IiIrdH1mdW5jdGlvbiB0cih0KXtyZXR1cm4iZnVuY3Rpb24iPT10eXBlb2YgdD90Lm5hbWV8fHQudG9TdHJpbmcoKToib2JqZWN0Ij09dHlwZW9mIHQmJm51bGwhPXQmJiJmdW5jdGlvbiI9PXR5cGVvZiB0LnR5cGU/dC50eXBlLm5hbWV8fHQudHlwZS50b1N0cmluZygpOiRvKHQpfWNvbnN0IG5yPSgidW5kZWZpbmVkIiE9dHlwZW9mIHJlcXVlc3RBbmltYXRpb25GcmFtZSYmcmVxdWVzdEFuaW1hdGlvbkZyYW1lfHxzZXRUaW1lb3V0KS5iaW5kKG1hKTtmdW5jdGlvbiBlcih0KXtyZXR1cm57bmFtZToid2luZG93Iix0YXJnZXQ6dC5vd25lckRvY3VtZW50LmRlZmF1bHRWaWV3fX1mdW5jdGlvbiBhcih0KXtyZXR1cm57bmFtZToiZG9jdW1lbnQiLHRhcmdldDp0Lm93bmVyRG9jdW1lbnR9fWZ1bmN0aW9uIG9yKHQpe3JldHVybntuYW1lOiJib2R5Iix0YXJnZXQ6dC5vd25lckRvY3VtZW50LmJvZHl9fWNvbnN0IHJyPSLvv70iO2Z1bmN0aW9uIGlyKHQpe3JldHVybiB0IGluc3RhbmNlb2YgRnVuY3Rpb24/dCgpOnR9ZnVuY3Rpb24gY3IodCxuKXtjb25zdCBlPW4/YC4gRGVwZW5kZW5jeSBwYXRoOiAke24uam9pbigiID4gIil9ID4gJHt0fWA6IiI7dGhyb3cgbmV3IEVycm9yKGBDaXJjdWxhciBkZXBlbmRlbmN5IGluIERJIGRldGVjdGVkIGZvciAke3R9JHtlfWApfWZ1bmN0aW9uIHNyKHQpe3Rocm93IG5ldyBFcnJvcihgTXVsdGlwbGUgY29tcG9uZW50cyBtYXRjaCBub2RlIHdpdGggdGFnbmFtZSAke3QudGFnTmFtZX1gKX1mdW5jdGlvbiBscigpe3Rocm93IG5ldyBFcnJvcigiQ2Fubm90IG1peCBtdWx0aSBwcm92aWRlcnMgYW5kIHJlZ3VsYXIgcHJvdmlkZXJzIil9ZnVuY3Rpb24gbXIodCxuLGUsYSxvKXtjb25zdFtyLGksLi4uY109YS5zcGxpdChycik7bGV0IHM9aSxsPWk7Zm9yKGxldCBhPTA7YTxjLmxlbmd0aDthKyspe2NvbnN0IHI9bithO3MrPWAke3Rbcl19JHtjW2FdfWAsbCs9YCR7cj09PWU/bzp0W3JdfSR7Y1thXX1gfXJldHVybntwcm9wTmFtZTpyLG9sZFZhbHVlOnMsbmV3VmFsdWU6bH19ZnVuY3Rpb24gZHIodCxuKXtjb25zdCBlPW4/YCBpbiAke259YDoiIjt0aHJvdyBuZXcgRXJyb3IoYE5vIHByb3ZpZGVyIGZvciAke3RyKHQpfSBmb3VuZCR7ZX1gKX0KLyoqCiAgICAgKiBAbGljZW5zZQogICAgICogQ29weXJpZ2h0IEdvb2dsZSBMTEMgQWxsIFJpZ2h0cyBSZXNlcnZlZC4KICAgICAqCiAgICAgKiBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhbiBNSVQtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQogICAgICogZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZSBhdCBodHRwczovL2FuZ3VsYXIuaW8vbGljZW5zZQogICAgICovY2xhc3MgZ3J7Y29uc3RydWN0b3IodCxuLGUpe3RoaXMucHJldmlvdXNWYWx1ZT10LHRoaXMuY3VycmVudFZhbHVlPW4sdGhpcy5maXJzdENoYW5nZT1lfWlzRmlyc3RDaGFuZ2UoKXtyZXR1cm4gdGhpcy5maXJzdENoYW5nZX19Ci8qKgogICAgICogQGxpY2Vuc2UKICAgICAqIENvcHlyaWdodCBHb29nbGUgTExDIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCiAgICAgKgogICAgICogVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYW4gTUlULXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKICAgICAqIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUgYXQgaHR0cHM6Ly9hbmd1bGFyLmlvL2xpY2Vuc2UKICAgICAqL2Z1bmN0aW9uIHByKCl7cmV0dXJuIGJyfWZ1bmN0aW9uIGJyKHQpe3JldHVybiB0LnR5cGUucHJvdG90eXBlLm5nT25DaGFuZ2VzJiYodC5zZXRJbnB1dD1mciksdXJ9ZnVuY3Rpb24gdXIoKXtjb25zdCB0PWhyKHRoaXMpLG49bnVsbD09dD92b2lkIDA6dC5jdXJyZW50O2lmKG4pe2NvbnN0IGU9dC5wcmV2aW91cztpZihlPT09dW8pdC5wcmV2aW91cz1uO2Vsc2UgZm9yKGxldCB0IGluIG4pZVt0XT1uW3RdO3QuY3VycmVudD1udWxsLHRoaXMubmdPbkNoYW5nZXMobil9fWZ1bmN0aW9uIGZyKHQsbixlLGEpe2NvbnN0IG89aHIodCl8fChmdW5jdGlvbiByKHQsbil7cmV0dXJuIHQuX19uZ1NpbXBsZUNoYW5nZXNfXz1ufQovKioKICAgICAqIEBsaWNlbnNlCiAgICAgKiBDb3B5cmlnaHQgR29vZ2xlIExMQyBBbGwgUmlnaHRzIFJlc2VydmVkLgogICAgICoKICAgICAqIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGFuIE1JVC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCiAgICAgKiBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlIGF0IGh0dHBzOi8vYW5ndWxhci5pby9saWNlbnNlCiAgICAgKi8pKHQse3ByZXZpb3VzOnVvLGN1cnJlbnQ6bnVsbH0pLGk9by5jdXJyZW50fHwoby5jdXJyZW50PXt9KSxjPW8ucHJldmlvdXMscz10aGlzLmRlY2xhcmVkSW5wdXRzW2VdLGw9Y1tzXTtpW3NdPW5ldyBncihsJiZsLmN1cnJlbnRWYWx1ZSxuLGM9PT11byksdFthXT1ufWZ1bmN0aW9uIGhyKHQpe3JldHVybiB0Ll9fbmdTaW1wbGVDaGFuZ2VzX198fG51bGx9cHIubmdJbmhlcml0PSEwO2NvbnN0IF9yPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIsQ3I9Imh0dHA6Ly93d3cudzMub3JnLzE5OTgvTWF0aE1MLyI7Ci8qKgogICAgICogQGxpY2Vuc2UKICAgICAqIENvcHlyaWdodCBHb29nbGUgTExDIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCiAgICAgKgogICAgICogVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYW4gTUlULXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKICAgICAqIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUgYXQgaHR0cHM6Ly9hbmd1bGFyLmlvL2xpY2Vuc2UKICAgICAqLwpsZXQgTXI7ZnVuY3Rpb24gT3IoKXtyZXR1cm4gdm9pZCAwIT09TXI/TXI6InVuZGVmaW5lZCIhPXR5cGVvZiBkb2N1bWVudD9kb2N1bWVudDp2b2lkIDB9Ci8qKgogICAgICogQGxpY2Vuc2UKICAgICAqIENvcHlyaWdodCBHb29nbGUgTExDIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCiAgICAgKgogICAgICogVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYW4gTUlULXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKICAgICAqIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUgYXQgaHR0cHM6Ly9hbmd1bGFyLmlvL2xpY2Vuc2UKICAgICAqL3ZhciBQcjtmdW5jdGlvbiB4cih0KXtyZXR1cm4hIXQubGlzdGVufSEoZnVuY3Rpb24odCl7dFt0LkltcG9ydGFudD0xXT0iSW1wb3J0YW50Iix0W3QuRGFzaENhc2U9Ml09IkRhc2hDYXNlIn0pKFByfHwoUHI9e30pKTtjb25zdCB5cj17Y3JlYXRlUmVuZGVyZXI6KHQsbik9Pk9yKCl9OwovKioKICAgICAqIEBsaWNlbnNlCiAgICAgKiBDb3B5cmlnaHQgR29vZ2xlIExMQyBBbGwgUmlnaHRzIFJlc2VydmVkLgogICAgICoKICAgICAqIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGFuIE1JVC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCiAgICAgKiBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlIGF0IGh0dHBzOi8vYW5ndWxhci5pby9saWNlbnNlCiAgICAgKi8KZnVuY3Rpb24ga3IodCl7Zm9yKDtBcnJheS5pc0FycmF5KHQpOyl0PXRbMF07cmV0dXJuIHR9ZnVuY3Rpb24gdnIodCxuKXtyZXR1cm4ga3Ioblt0K1RvXSl9ZnVuY3Rpb24gd3IodCxuKXtuZ0Rldk1vZGUmJlVvKHQsbiksbmdEZXZNb2RlJiZOYShuLHQuaW5kZXgpO2NvbnN0IGU9a3Ioblt0LmluZGV4XSk7cmV0dXJuIG5nRGV2TW9kZSYmIXhyKG5bMTFdKSYmSWEoZSksZX1mdW5jdGlvbiBTcih0LG4pe3JldHVybiBuZ0Rldk1vZGUmJlJhKG4sLTEsIndyb25nIGluZGV4IGZvciBUTm9kZSIpLG5nRGV2TW9kZSYmQWEobix0LmRhdGEubGVuZ3RoLCJ3cm9uZyBpbmRleCBmb3IgVE5vZGUiKSx0LmRhdGFbbitUb119ZnVuY3Rpb24gRXIodCxuKXtyZXR1cm4gbmdEZXZNb2RlJiZOYSh0LG4rVG8pLHRbbitUb119ZnVuY3Rpb24gQXIodCxuKXtuZ0Rldk1vZGUmJk5hKG4sdCk7Y29uc3QgZT1uW3RdO3JldHVybiBObyhlKT9lOmVbMF19ZnVuY3Rpb24genIodCl7cmV0dXJuIG5nRGV2TW9kZSYmVGEodCwiVGFyZ2V0IGV4cGVjdGVkIiksdC5fX25nQ29udGV4dF9ffHxudWxsfWZ1bmN0aW9uIFJyKHQpe2NvbnN0IG49enIodCk7cmV0dXJuIG4/QXJyYXkuaXNBcnJheShuKT9uOm4ubFZpZXc6bnVsbH1mdW5jdGlvbiBUcih0KXtyZXR1cm4gND09KDQmdFsyXSl9ZnVuY3Rpb24gRHIodCl7cmV0dXJuIDEyOD09KDEyOCZ0WzJdKX1mdW5jdGlvbiBJcih0LG4pe3JldHVybiBudWxsPT09dHx8bnVsbD09bj9udWxsOnRbbl19ZnVuY3Rpb24gTnIodCl7dFsxOF09MH1mdW5jdGlvbiBGcih0LG4pe3RbNV0rPW47bGV0IGU9dCxhPXRbM107Zm9yKDtudWxsIT09YSYmKDE9PT1uJiYxPT09ZVs1XXx8LTE9PT1uJiYwPT09ZVs1XSk7KWFbNV0rPW4sZT1hLGE9YVszXX0KLyoqCiAgICAgKiBAbGljZW5zZQogICAgICogQ29weXJpZ2h0IEdvb2dsZSBMTEMgQWxsIFJpZ2h0cyBSZXNlcnZlZC4KICAgICAqCiAgICAgKiBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhbiBNSVQtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQogICAgICogZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZSBhdCBodHRwczovL2FuZ3VsYXIuaW8vbGljZW5zZQogICAgICovY29uc3QgTHI9e2xGcmFtZTpzaShudWxsKSxiaW5kaW5nc0VuYWJsZWQ6ITAsaXNJbkNoZWNrTm9DaGFuZ2VzTW9kZTohMX07ZnVuY3Rpb24gSHIoKXtyZXR1cm4gTHIuYmluZGluZ3NFbmFibGVkfWZ1bmN0aW9uIEJyKCl7cmV0dXJuIExyLmxGcmFtZS5sVmlld31mdW5jdGlvbiBWcigpe3JldHVybiBMci5sRnJhbWUudFZpZXd9ZnVuY3Rpb24ganIodCl7THIubEZyYW1lLmNvbnRleHRMVmlldz10fWZ1bmN0aW9uIFVyKCl7cmV0dXJuIExyLmxGcmFtZS5jdXJyZW50VE5vZGV9ZnVuY3Rpb24gV3IodCxuKXtuZ0Rldk1vZGUmJldvKHQsTHIubEZyYW1lLnRWaWV3KSxMci5sRnJhbWUuY3VycmVudFROb2RlPXQsTHIubEZyYW1lLmlzUGFyZW50PW59ZnVuY3Rpb24gR3IoKXtyZXR1cm4gTHIubEZyYW1lLmlzUGFyZW50fWZ1bmN0aW9uIFlyKCl7THIubEZyYW1lLmlzUGFyZW50PSExfWZ1bmN0aW9uIHFyKCl7cmV0dXJuIExyLmlzSW5DaGVja05vQ2hhbmdlc01vZGV9ZnVuY3Rpb24gWnIodCl7THIuaXNJbkNoZWNrTm9DaGFuZ2VzTW9kZT10fWZ1bmN0aW9uIFhyKCl7Y29uc3QgdD1Mci5sRnJhbWU7bGV0IG49dC5iaW5kaW5nUm9vdEluZGV4O3JldHVybi0xPT09biYmKG49dC5iaW5kaW5nUm9vdEluZGV4PXQudFZpZXcuYmluZGluZ1N0YXJ0SW5kZXgpLG59ZnVuY3Rpb24gSnIoKXtyZXR1cm4gTHIubEZyYW1lLmJpbmRpbmdJbmRleH1mdW5jdGlvbiBRcih0KXtyZXR1cm4gTHIubEZyYW1lLmJpbmRpbmdJbmRleD10fWZ1bmN0aW9uIEtyKCl7cmV0dXJuIExyLmxGcmFtZS5iaW5kaW5nSW5kZXgrK31mdW5jdGlvbiAkcih0KXtjb25zdCBuPUxyLmxGcmFtZSxlPW4uYmluZGluZ0luZGV4O3JldHVybiBuLmJpbmRpbmdJbmRleD1uLmJpbmRpbmdJbmRleCt0LGV9ZnVuY3Rpb24gdGkodCxuKXtjb25zdCBlPUxyLmxGcmFtZTtlLmJpbmRpbmdJbmRleD1lLmJpbmRpbmdSb290SW5kZXg9dCxuaShuKX1mdW5jdGlvbiBuaSh0KXtMci5sRnJhbWUuY3VycmVudERpcmVjdGl2ZUluZGV4PXR9ZnVuY3Rpb24gZWkodCl7Y29uc3Qgbj1Mci5sRnJhbWUuY3VycmVudERpcmVjdGl2ZUluZGV4O3JldHVybi0xPT09bj9udWxsOnRbbl19ZnVuY3Rpb24gYWkoKXtyZXR1cm4gTHIubEZyYW1lLmN1cnJlbnRRdWVyeUluZGV4fWZ1bmN0aW9uIG9pKHQpe0xyLmxGcmFtZS5jdXJyZW50UXVlcnlJbmRleD10fWZ1bmN0aW9uIHJpKHQsbil7bmdEZXZNb2RlJiZxbyh0KTtjb25zdCBlPWNpKCk7THIubEZyYW1lPWUsZS5jdXJyZW50VE5vZGU9bixlLmxWaWV3PXR9ZnVuY3Rpb24gaWkodCl7bmdEZXZNb2RlJiZxbyh0KTtjb25zdCBuPWNpKCk7bmdEZXZNb2RlJiYodmEobi5pc1BhcmVudCwhMCwiRXhwZWN0ZWQgY2xlYW4gTEZyYW1lIiksdmEobi5sVmlldyxudWxsLCJFeHBlY3RlZCBjbGVhbiBMRnJhbWUiKSx2YShuLnRWaWV3LG51bGwsIkV4cGVjdGVkIGNsZWFuIExGcmFtZSIpLHZhKG4uc2VsZWN0ZWRJbmRleCwwLCJFeHBlY3RlZCBjbGVhbiBMRnJhbWUiKSx2YShuLmVsZW1lbnREZXB0aENvdW50LDAsIkV4cGVjdGVkIGNsZWFuIExGcmFtZSIpLHZhKG4uY3VycmVudERpcmVjdGl2ZUluZGV4LC0xLCJFeHBlY3RlZCBjbGVhbiBMRnJhbWUiKSx2YShuLmN1cnJlbnROYW1lc3BhY2UsbnVsbCwiRXhwZWN0ZWQgY2xlYW4gTEZyYW1lIiksdmEobi5iaW5kaW5nUm9vdEluZGV4LC0xLCJFeHBlY3RlZCBjbGVhbiBMRnJhbWUiKSx2YShuLmN1cnJlbnRRdWVyeUluZGV4LDAsIkV4cGVjdGVkIGNsZWFuIExGcmFtZSIpKTtjb25zdCBlPXRbMV07THIubEZyYW1lPW4sbmdEZXZNb2RlJiZlLmZpcnN0Q2hpbGQmJldvKGUuZmlyc3RDaGlsZCxlKSxuLmN1cnJlbnRUTm9kZT1lLmZpcnN0Q2hpbGQsbi5sVmlldz10LG4udFZpZXc9ZSxuLmNvbnRleHRMVmlldz10LG4uYmluZGluZ0luZGV4PWUuYmluZGluZ1N0YXJ0SW5kZXh9ZnVuY3Rpb24gY2koKXtjb25zdCB0PUxyLmxGcmFtZSxuPW51bGw9PT10P251bGw6dC5jaGlsZDtyZXR1cm4gbnVsbD09PW4/c2kodCk6bn1mdW5jdGlvbiBzaSh0KXtjb25zdCBuPXtjdXJyZW50VE5vZGU6bnVsbCxpc1BhcmVudDohMCxsVmlldzpudWxsLHRWaWV3Om51bGwsc2VsZWN0ZWRJbmRleDowLGNvbnRleHRMVmlldzpudWxsLGVsZW1lbnREZXB0aENvdW50OjAsY3VycmVudE5hbWVzcGFjZTpudWxsLGN1cnJlbnREaXJlY3RpdmVJbmRleDotMSxiaW5kaW5nUm9vdEluZGV4Oi0xLGJpbmRpbmdJbmRleDotMSxjdXJyZW50UXVlcnlJbmRleDowLHBhcmVudDp0LGNoaWxkOm51bGx9O3JldHVybiBudWxsIT09dCYmKHQuY2hpbGQ9biksbn1mdW5jdGlvbiBsaSgpe2NvbnN0IHQ9THIubEZyYW1lO3JldHVybiBMci5sRnJhbWU9dC5wYXJlbnQsdC5jdXJyZW50VE5vZGU9bnVsbCx0LmxWaWV3PW51bGwsdH1jb25zdCBtaT1saTtmdW5jdGlvbiBkaSgpe2NvbnN0IHQ9bGkoKTt0LmlzUGFyZW50PSEwLHQudFZpZXc9bnVsbCx0LnNlbGVjdGVkSW5kZXg9MCx0LmNvbnRleHRMVmlldz1udWxsLHQuZWxlbWVudERlcHRoQ291bnQ9MCx0LmN1cnJlbnREaXJlY3RpdmVJbmRleD0tMSx0LmN1cnJlbnROYW1lc3BhY2U9bnVsbCx0LmJpbmRpbmdSb290SW5kZXg9LTEsdC5iaW5kaW5nSW5kZXg9LTEsdC5jdXJyZW50UXVlcnlJbmRleD0wfWZ1bmN0aW9uIGdpKCl7cmV0dXJuIExyLmxGcmFtZS5zZWxlY3RlZEluZGV4fWZ1bmN0aW9uIHBpKHQpe0xyLmxGcmFtZS5zZWxlY3RlZEluZGV4PXR9ZnVuY3Rpb24gYmkoKXtjb25zdCB0PUxyLmxGcmFtZTtyZXR1cm4gU3IodC50Vmlldyx0LnNlbGVjdGVkSW5kZXgpfWZ1bmN0aW9uIHVpKCl7THIubEZyYW1lLmN1cnJlbnROYW1lc3BhY2U9X3J9ZnVuY3Rpb24gZmkoKXshKGZ1bmN0aW9uIHQoKXtMci5sRnJhbWUuY3VycmVudE5hbWVzcGFjZT1udWxsfSkoKX1mdW5jdGlvbiBoaSh0LG4pe25nRGV2TW9kZSYmWG8odCk7Zm9yKGxldCBlPW4uZGlyZWN0aXZlU3RhcnQsYT1uLmRpcmVjdGl2ZUVuZDtlPGE7ZSsrKXtjb25zdCBuPXQuZGF0YVtlXS50eXBlLnByb3RvdHlwZSx7bmdBZnRlckNvbnRlbnRJbml0OmEsbmdBZnRlckNvbnRlbnRDaGVja2VkOm8sbmdBZnRlclZpZXdJbml0OnIsbmdBZnRlclZpZXdDaGVja2VkOmksbmdPbkRlc3Ryb3k6Y309bjthJiYodC5jb250ZW50SG9va3N8fCh0LmNvbnRlbnRIb29rcz1bXSkpLnB1c2goLWUsYSksbyYmKCh0LmNvbnRlbnRIb29rc3x8KHQuY29udGVudEhvb2tzPVtdKSkucHVzaChlLG8pLCh0LmNvbnRlbnRDaGVja0hvb2tzfHwodC5jb250ZW50Q2hlY2tIb29rcz1bXSkpLnB1c2goZSxvKSksciYmKHQudmlld0hvb2tzfHwodC52aWV3SG9va3M9W10pKS5wdXNoKC1lLHIpLGkmJigodC52aWV3SG9va3N8fCh0LnZpZXdIb29rcz1bXSkpLnB1c2goZSxpKSwodC52aWV3Q2hlY2tIb29rc3x8KHQudmlld0NoZWNrSG9va3M9W10pKS5wdXNoKGUsaSkpLG51bGwhPWMmJih0LmRlc3Ryb3lIb29rc3x8KHQuZGVzdHJveUhvb2tzPVtdKSkucHVzaChlLGMpfX1mdW5jdGlvbiBfaSh0LG4sZSl7T2kodCxuLDMsZSl9ZnVuY3Rpb24gQ2kodCxuLGUsYSl7bmdEZXZNb2RlJiZ3YShlLDMsIkluaXQgcHJlLW9yZGVyIGhvb2tzIHNob3VsZCBub3QgYmUgY2FsbGVkIG1vcmUgdGhhbiBvbmNlIiksKDMmdFsyXSk9PT1lJiZPaSh0LG4sZSxhKX1mdW5jdGlvbiBNaSh0LG4pe25nRGV2TW9kZSYmd2EobiwzLCJJbml0IGhvb2tzIHBoYXNlIHNob3VsZCBub3QgYmUgaW5jcmVtZW50ZWQgYWZ0ZXIgYWxsIGluaXQgaG9va3MgaGF2ZSBiZWVuIHJ1bi4iKTtsZXQgZT10WzJdOygzJmUpPT09biYmKGUmPTIwNDcsZSs9MSx0WzJdPWUpfWZ1bmN0aW9uIE9pKHQsbixlLGEpe25nRGV2TW9kZSYmdmEocXIoKSwhMSwiSG9va3Mgc2hvdWxkIG5ldmVyIGJlIHJ1biB3aGVuIGluIGNoZWNrIG5vIGNoYW5nZXMgbW9kZS4iKTtjb25zdCBvPW51bGwhPWE/YTotMTtsZXQgcj0wO2ZvcihsZXQgaT12b2lkIDAhPT1hPzY1NTM1JnRbMThdOjA7aTxuLmxlbmd0aDtpKyspaWYoIm51bWJlciI9PXR5cGVvZiBuW2krMV0pe2lmKHI9bltpXSxudWxsIT1hJiZyPj1hKWJyZWFrfWVsc2UgbltpXTwwJiYodFsxOF0rPTY1NTM2KSwocjxvfHwtMT09bykmJihQaSh0LGUsbixpKSx0WzE4XT0oNDI5NDkwMTc2MCZ0WzE4XSkraSsyKSxpKyt9ZnVuY3Rpb24gUGkodCxuLGUsYSl7Y29uc3Qgbz1lW2FdPDAscj1lW2ErMV0saT10W28/LWVbYV06ZVthXV07bz90WzJdPj4xMTx0WzE4XT4+MTYmJigzJnRbMl0pPT09biYmKHRbMl0rPTIwNDgsci5jYWxsKGkpKTpyLmNhbGwoaSl9Ci8qKgogICAgICogQGxpY2Vuc2UKICAgICAqIENvcHlyaWdodCBHb29nbGUgTExDIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCiAgICAgKgogICAgICogVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYW4gTUlULXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKICAgICAqIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUgYXQgaHR0cHM6Ly9hbmd1bGFyLmlvL2xpY2Vuc2UKICAgICAqL2NvbnN0IHhpPS0xO2NsYXNzIHlpe2NvbnN0cnVjdG9yKHQsbixlKXt0aGlzLmZhY3Rvcnk9dCx0aGlzLnJlc29sdmluZz0hMSxuZ0Rldk1vZGUmJlRhKHQsIkZhY3Rvcnkgbm90IHNwZWNpZmllZCIpLG5nRGV2TW9kZSYmdmEodHlwZW9mIHQsImZ1bmN0aW9uIiwiRXhwZWN0ZWQgZmFjdG9yeSBmdW5jdGlvbi4iKSx0aGlzLmNhblNlZVZpZXdQcm92aWRlcnM9bix0aGlzLmluamVjdEltcGw9ZX19Y29uc3Qga2k9WyJDb250YWluZXIiLCJQcm9qZWN0aW9uIiwiRWxlbWVudCIsIkVsZW1lbnRDb250YWluZXIiLCJJY3VDb250YWluZXIiXTsKLyoqCiAgICAgKiBAbGljZW5zZQogICAgICogQ29weXJpZ2h0IEdvb2dsZSBMTEMgQWxsIFJpZ2h0cyBSZXNlcnZlZC4KICAgICAqCiAgICAgKiBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhbiBNSVQtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQogICAgICogZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZSBhdCBodHRwczovL2FuZ3VsYXIuaW8vbGljZW5zZQogICAgICovCmZ1bmN0aW9uIHZpKHQsbil7VGEodCwic2hvdWxkIGJlIGNhbGxlZCB3aXRoIGEgVE5vZGUiKSx2YSh0LnR5cGUsbixgc2hvdWxkIGJlIGEgJHtTaShuKX1gKX1mdW5jdGlvbiB3aSh0LG4sZSl7VGEodCwic2hvdWxkIGJlIGNhbGxlZCB3aXRoIGEgVE5vZGUiKSx2YShuLnNvbWUoKG49PnQudHlwZT09PW4pKSwhMCxudWxsIT1lP2U6YFNob3VsZCBiZSBvbmUgb2YgJHtuLm1hcChTaSkuam9pbigiLCAiKX0gYnV0IGdvdCAke1NpKHQudHlwZSl9YCl9ZnVuY3Rpb24gU2kodCl7cmV0dXJuIGtpW3RdfHwiPHVua25vd24+In1mdW5jdGlvbiBFaSh0LG4sZSl7Y29uc3QgYT14cih0KTtsZXQgbz0wO2Zvcig7bzxlLmxlbmd0aDspe2NvbnN0IHI9ZVtvXTtpZigibnVtYmVyIj09dHlwZW9mIHIpe2lmKDAhPT1yKWJyZWFrO28rKztjb25zdCBpPWVbbysrXSxjPWVbbysrXSxzPWVbbysrXTtuZ0Rldk1vZGUmJm5nRGV2TW9kZS5yZW5kZXJlclNldEF0dHJpYnV0ZSsrLGE/dC5zZXRBdHRyaWJ1dGUobixjLHMsaSk6bi5zZXRBdHRyaWJ1dGVOUyhpLGMscyl9ZWxzZXtjb25zdCBpPXIsYz1lWysrb107bmdEZXZNb2RlJiZuZ0Rldk1vZGUucmVuZGVyZXJTZXRBdHRyaWJ1dGUrKyx6aShpKT9hJiZ0LnNldFByb3BlcnR5KG4saSxjKTphP3Quc2V0QXR0cmlidXRlKG4saSxjKTpuLnNldEF0dHJpYnV0ZShpLGMpLG8rK319cmV0dXJuIG99ZnVuY3Rpb24gQWkodCl7cmV0dXJuIDM9PT10fHw0PT09dHx8Nj09PXR9ZnVuY3Rpb24gemkodCl7cmV0dXJuIDY0PT09dC5jaGFyQ29kZUF0KDApfWZ1bmN0aW9uIFJpKHQsbil7aWYobnVsbD09PW58fDA9PT1uLmxlbmd0aCk7ZWxzZSBpZihudWxsPT09dHx8MD09PXQubGVuZ3RoKXQ9bi5zbGljZSgpO2Vsc2V7bGV0IGU9LTE7Zm9yKGxldCBhPTA7YTxuLmxlbmd0aDthKyspe2NvbnN0IG89blthXTsibnVtYmVyIj09dHlwZW9mIG8/ZT1vOjA9PT1lfHxUaSh0LGUsbyxudWxsLC0xPT09ZXx8Mj09PWU/blsrK2FdOm51bGwpfX1yZXR1cm4gdH1mdW5jdGlvbiBUaSh0LG4sZSxhLG8pe2xldCByPTAsaT10Lmxlbmd0aDtpZigtMT09PW4paT0tMTtlbHNlIGZvcig7cjx0Lmxlbmd0aDspe2NvbnN0IGU9dFtyKytdO2lmKCJudW1iZXIiPT10eXBlb2YgZSl7aWYoZT09PW4pe2k9LTE7YnJlYWt9aWYoZT5uKXtpPXItMTticmVha319fWZvcig7cjx0Lmxlbmd0aDspe2NvbnN0IG49dFtyXTtpZigibnVtYmVyIj09dHlwZW9mIG4pYnJlYWs7aWYobj09PWUpe2lmKG51bGw9PT1hKXJldHVybiB2b2lkKG51bGwhPT1vJiYodFtyKzFdPW8pKTtpZihhPT09dFtyKzFdKXJldHVybiB2b2lkKHRbcisyXT1vKX1yKyssbnVsbCE9PWEmJnIrKyxudWxsIT09byYmcisrfS0xIT09aSYmKHQuc3BsaWNlKGksMCxuKSxyPWkrMSksdC5zcGxpY2UocisrLDAsZSksbnVsbCE9PWEmJnQuc3BsaWNlKHIrKywwLGEpLG51bGwhPT1vJiZ0LnNwbGljZShyKyssMCxvKX0KLyoqCiAgICAgKiBAbGljZW5zZQogICAgICogQ29weXJpZ2h0IEdvb2dsZSBMTEMgQWxsIFJpZ2h0cyBSZXNlcnZlZC4KICAgICAqCiAgICAgKiBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhbiBNSVQtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQogICAgICogZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZSBhdCBodHRwczovL2FuZ3VsYXIuaW8vbGljZW5zZQogICAgICovZnVuY3Rpb24gRGkodCl7cmV0dXJuIHQhPT14aX1mdW5jdGlvbiBJaSh0KXtyZXR1cm4gbmdEZXZNb2RlJiZ4YSh0LCJOdW1iZXIgZXhwZWN0ZWQiKSxuZ0Rldk1vZGUmJndhKHQsLTEsIk5vdCBhIHZhbGlkIHN0YXRlLiIpLG5nRGV2TW9kZSYmUmEoMzI3NjcmdCxUbywiUGFyZW50IGluamVjdG9yIG11c3QgYmUgcG9pbnRpbmcgcGFzdCBIRUFERVJfT0ZGU0VULiIpLDMyNzY3JnR9ZnVuY3Rpb24gTmkodCxuKXtsZXQgZT0oZnVuY3Rpb24gYSh0KXtyZXR1cm4gdD4+MTZ9KSh0KSxvPW47Zm9yKDtlPjA7KW89b1sxNV0sZS0tO3JldHVybiBvfQovKioKICAgICAqIEBsaWNlbnNlCiAgICAgKiBDb3B5cmlnaHQgR29vZ2xlIExMQyBBbGwgUmlnaHRzIFJlc2VydmVkLgogICAgICoKICAgICAqIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGFuIE1JVC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCiAgICAgKiBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlIGF0IGh0dHBzOi8vYW5ndWxhci5pby9saWNlbnNlCiAgICAgKi9sZXQgRmk9ITA7ZnVuY3Rpb24gTGkodCl7Y29uc3Qgbj1GaTtyZXR1cm4gRmk9dCxufWxldCBIaT0wO2Z1bmN0aW9uIEJpKHQsbil7Y29uc3QgZT1qaSh0LG4pO2lmKC0xIT09ZSlyZXR1cm4gZTtjb25zdCBhPW5bMV07YS5maXJzdENyZWF0ZVBhc3MmJih0LmluamVjdG9ySW5kZXg9bi5sZW5ndGgsVmkoYS5kYXRhLHQpLFZpKG4sbnVsbCksVmkoYS5ibHVlcHJpbnQsbnVsbCkpO2NvbnN0IG89VWkodCxuKSxyPXQuaW5qZWN0b3JJbmRleDtpZihEaShvKSl7Y29uc3QgdD1JaShvKSxlPU5pKG8sbiksYT1lWzFdLmRhdGE7Zm9yKGxldCBvPTA7bzw4O28rKyluW3Irb109ZVt0K29dfGFbdCtvXX1yZXR1cm4gbltyKzhdPW8scn1mdW5jdGlvbiBWaSh0LG4pe3QucHVzaCgwLDAsMCwwLDAsMCwwLDAsbil9ZnVuY3Rpb24gamkodCxuKXtyZXR1cm4tMT09PXQuaW5qZWN0b3JJbmRleHx8dC5wYXJlbnQmJnQucGFyZW50LmluamVjdG9ySW5kZXg9PT10LmluamVjdG9ySW5kZXh8fG51bGw9PT1uW3QuaW5qZWN0b3JJbmRleCs4XT8tMToobmdEZXZNb2RlJiZOYShuLHQuaW5qZWN0b3JJbmRleCksdC5pbmplY3RvckluZGV4KX1mdW5jdGlvbiBVaSh0LG4pe2lmKHQucGFyZW50JiYtMSE9PXQucGFyZW50LmluamVjdG9ySW5kZXgpcmV0dXJuIHQucGFyZW50LmluamVjdG9ySW5kZXg7bGV0IGU9MCxhPW51bGwsbz1uO2Zvcig7bnVsbCE9PW87KXtjb25zdCB0PW9bMV0sbj10LnR5cGU7aWYoMj09PW4/KG5nRGV2TW9kZSYmVGEodC5kZWNsVE5vZGUsIkVtYmVkZGVkIFROb2RlcyBzaG91bGQgaGF2ZSBkZWNsYXJhdGlvbiBwYXJlbnRzLiIpLGE9dC5kZWNsVE5vZGUpOjE9PT1uP2E9b1s2XToobmdEZXZNb2RlJiZ2YSh0LnR5cGUsMCwiUm9vdCB0eXBlIGV4cGVjdGVkIiksYT1udWxsKSxudWxsPT09YSlyZXR1cm4geGk7aWYobmdEZXZNb2RlJiZhJiZVbyhhLG9bMTVdKSxlKyssbz1vWzE1XSwtMSE9PWEuaW5qZWN0b3JJbmRleClyZXR1cm4gYS5pbmplY3RvckluZGV4fGU8PDE2fXJldHVybiB4aX1mdW5jdGlvbiBXaSh0LG4sZSl7IShmdW5jdGlvbiBhKHQsbixlKXtsZXQgYTtuZ0Rldk1vZGUmJnZhKG4uZmlyc3RDcmVhdGVQYXNzLCEwLCJleHBlY3RlZCBmaXJzdENyZWF0ZVBhc3MgdG8gYmUgdHJ1ZSIpLCJzdHJpbmciPT10eXBlb2YgZT9hPWUuY2hhckNvZGVBdCgwKXx8MDplLmhhc093blByb3BlcnR5KE9hKSYmKGE9ZVtPYV0pLG51bGw9PWEmJihhPWVbT2FdPUhpKyspO2NvbnN0IG89MjU1JmEscj0xPDxvLGk9NjQmbyxjPTMyJm8scz1uLmRhdGE7MTI4Jm8/aT9jP3NbdCs3XXw9cjpzW3QrNl18PXI6Yz9zW3QrNV18PXI6c1t0KzRdfD1yOmk/Yz9zW3QrM118PXI6c1t0KzJdfD1yOmM/c1t0KzFdfD1yOnNbdF18PXJ9KSh0LG4sZSl9ZnVuY3Rpb24gR2kodCxuLGUsYT1WZS5EZWZhdWx0LG8pe2lmKG51bGwhPT10KXtjb25zdCBvPShmdW5jdGlvbiByKHQpe2lmKG5nRGV2TW9kZSYmVGEodCwidG9rZW4gbXVzdCBiZSBkZWZpbmVkIiksInN0cmluZyI9PXR5cGVvZiB0KXJldHVybiB0LmNoYXJDb2RlQXQoMCl8fDA7Y29uc3Qgbj10Lmhhc093blByb3BlcnR5KE9hKT90W09hXTp2b2lkIDA7cmV0dXJuIm51bWJlciI9PXR5cGVvZiBuJiZuPjA/MjU1Jm46bn0pKGUpO2lmKCJmdW5jdGlvbiI9PXR5cGVvZiBvKXtyaShuLHQpO3RyeXtjb25zdCB0PW8oKTtpZihudWxsIT10fHxhJlZlLk9wdGlvbmFsKXJldHVybiB0O2RyKGUpfWZpbmFsbHl7bWkoKX19ZWxzZSBpZigibnVtYmVyIj09dHlwZW9mIG8pe2lmKC0xPT09bylyZXR1cm4gbmV3IEtpKHQsbik7bGV0IHI9bnVsbCxpPWppKHQsbiksYz14aSxzPWEmVmUuSG9zdD9uWzE2XVs2XTpudWxsO2ZvcigoLTE9PT1pfHxhJlZlLlNraXBTZWxmKSYmKGM9LTE9PT1pP1VpKHQsbik6bltpKzhdLGMhPT14aSYmUWkoYSwhMSk/KHI9blsxXSxpPUlpKGMpLG49TmkoYyxuKSk6aT0tMSk7LTEhPT1pOyl7bmdEZXZNb2RlJiZLbyhuLGkpO2NvbnN0IHQ9blsxXTtpZihuZ0Rldk1vZGUmJlVvKHQuZGF0YVtpKzhdLG4pLEppKG8saSx0LmRhdGEpKXtjb25zdCB0PXFpKGksbixlLHIsYSxzKTtpZih0IT09WWkpcmV0dXJuIHR9Yz1uW2krOF0sYyE9PXhpJiZRaShhLG5bMV0uZGF0YVtpKzhdPT09cykmJkppKG8saSxuKT8ocj10LGk9SWkoYyksbj1OaShjLG4pKTppPS0xfX19aWYoYSZWZS5PcHRpb25hbCYmdm9pZCAwPT09byYmKG89bnVsbCksMD09KGEmKFZlLlNlbGZ8VmUuSG9zdCkpKXtjb25zdCB0PW5bOV0scj1ZYSh2b2lkIDApO3RyeXtyZXR1cm4gdD90LmdldChlLG8sYSZWZS5PcHRpb25hbCk6UWEoZSxvLGEmVmUuT3B0aW9uYWwpfWZpbmFsbHl7WWEocil9fWlmKGEmVmUuT3B0aW9uYWwpcmV0dXJuIG87ZHIoZSwiTm9kZUluamVjdG9yIil9Y29uc3QgWWk9e307ZnVuY3Rpb24gcWkodCxuLGUsYSxvLHIpe2NvbnN0IGk9blsxXSxjPWkuZGF0YVt0KzhdLHM9WmkoYyxpLGUsbnVsbD09YT9IbyhjKSYmRmk6YSE9aSYmMj09PWMudHlwZSxvJlZlLkhvc3QmJnI9PT1jKTtyZXR1cm4gbnVsbCE9PXM/WGkobixpLHMsYyk6WWl9ZnVuY3Rpb24gWmkodCxuLGUsYSxvKXtjb25zdCByPXQucHJvdmlkZXJJbmRleGVzLGk9bi5kYXRhLGM9MTA0ODU3NSZyLHM9dC5kaXJlY3RpdmVTdGFydCxsPXI+PjIwLG09bz9jK2w6dC5kaXJlY3RpdmVFbmQ7Zm9yKGxldCB0PWE/YzpjK2w7dDxtO3QrKyl7Y29uc3Qgbj1pW3RdO2lmKHQ8cyYmZT09PW58fHQ+PXMmJm4udHlwZT09PWUpcmV0dXJuIHR9aWYobyl7Y29uc3QgdD1pW3NdO2lmKHQmJlZvKHQpJiZ0LnR5cGU9PT1lKXJldHVybiBzfXJldHVybiBudWxsfWZ1bmN0aW9uIFhpKHQsbixlLGEpe2xldCBvPXRbZV07Y29uc3Qgcj1uLmRhdGE7aWYoKGZ1bmN0aW9uIGkodCl7cmV0dXJuIHQgaW5zdGFuY2VvZiB5aX0pKG8pKXtjb25zdCBpPW87aS5yZXNvbHZpbmcmJmNyKHRyKHJbZV0pKTtjb25zdCBjPUxpKGkuY2FuU2VlVmlld1Byb3ZpZGVycyk7aS5yZXNvbHZpbmc9ITA7Y29uc3Qgcz1pLmluamVjdEltcGw/WWEoaS5pbmplY3RJbXBsKTpudWxsO3JpKHQsYSk7dHJ5e289dFtlXT1pLmZhY3Rvcnkodm9pZCAwLHIsdCxhKSxuLmZpcnN0Q3JlYXRlUGFzcyYmZT49YS5kaXJlY3RpdmVTdGFydCYmKG5nRGV2TW9kZSYmKGZ1bmN0aW9uIGModCl7dm9pZCAwIT09dC50eXBlJiZudWxsIT10LnNlbGVjdG9ycyYmdm9pZCAwIT09dC5pbnB1dHN8fERhKCJFeHBlY3RlZCBhIERpcmVjdGl2ZURlZi9Db21wb25lbnREZWYgYW5kIHRoaXMgb2JqZWN0IGRvZXMgbm90IHNlZW0gdG8gaGF2ZSB0aGUgZXhwZWN0ZWQgc2hhcGUuIil9KShyW2VdKSwoCi8qKgogICAgICogQGxpY2Vuc2UKICAgICAqIENvcHlyaWdodCBHb29nbGUgTExDIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCiAgICAgKgogICAgICogVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYW4gTUlULXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKICAgICAqIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUgYXQgaHR0cHM6Ly9hbmd1bGFyLmlvL2xpY2Vuc2UKICAgICAqLwpmdW5jdGlvbiBzKHQsbixlKXtuZ0Rldk1vZGUmJlhvKGUpO2NvbnN0e25nT25DaGFuZ2VzOmEsbmdPbkluaXQ6byxuZ0RvQ2hlY2s6cn09bi50eXBlLnByb3RvdHlwZTtpZihhKXtjb25zdCBhPWJyKG4pOyhlLnByZU9yZGVySG9va3N8fChlLnByZU9yZGVySG9va3M9W10pKS5wdXNoKHQsYSksKGUucHJlT3JkZXJDaGVja0hvb2tzfHwoZS5wcmVPcmRlckNoZWNrSG9va3M9W10pKS5wdXNoKHQsYSl9byYmKGUucHJlT3JkZXJIb29rc3x8KGUucHJlT3JkZXJIb29rcz1bXSkpLnB1c2goMC10LG8pLHImJigoZS5wcmVPcmRlckhvb2tzfHwoZS5wcmVPcmRlckhvb2tzPVtdKSkucHVzaCh0LHIpLChlLnByZU9yZGVyQ2hlY2tIb29rc3x8KGUucHJlT3JkZXJDaGVja0hvb2tzPVtdKSkucHVzaCh0LHIpKX0pKGUscltlXSxuKSl9ZmluYWxseXtudWxsIT09cyYmWWEocyksTGkoYyksaS5yZXNvbHZpbmc9ITEsbWkoKX19cmV0dXJuIG99ZnVuY3Rpb24gSmkodCxuLGUpe2NvbnN0IGE9NjQmdCxvPTMyJnQ7bGV0IHI7cmV0dXJuIHI9MTI4JnQ/YT9vP2Vbbis3XTplW24rNl06bz9lW24rNV06ZVtuKzRdOmE/bz9lW24rM106ZVtuKzJdOm8/ZVtuKzFdOmVbbl0sISEociYxPDx0KX1mdW5jdGlvbiBRaSh0LG4pe3JldHVybiEodCZWZS5TZWxmfHx0JlZlLkhvc3QmJm4pfWNsYXNzIEtpe2NvbnN0cnVjdG9yKHQsbil7dGhpcy5fdE5vZGU9dCx0aGlzLl9sVmlldz1ufWdldCh0LG4pe3JldHVybiBHaSh0aGlzLl90Tm9kZSx0aGlzLl9sVmlldyx0LHZvaWQgMCxuKX19ZnVuY3Rpb24gJGkodCl7Y29uc3Qgbj10O2lmKHJhKHQpKXJldHVybigpPT57Y29uc3QgdD0kaShvYShuKSk7cmV0dXJuIHQ/dCgpOm51bGx9O2xldCBlPXpvKG4pO2lmKG51bGw9PT1lKXtjb25zdCB0PVplKG4pO2U9dCYmdC5mYWN0b3J5fXJldHVybiBlfHxudWxsfWZ1bmN0aW9uIHRjKHQpe3JldHVybiB3ZSgoKCk9Pntjb25zdCBuPXQucHJvdG90eXBlLmNvbnN0cnVjdG9yLGU9bltNYV18fCRpKG4pLGE9T2JqZWN0LnByb3RvdHlwZTtsZXQgbz1PYmplY3QuZ2V0UHJvdG90eXBlT2YodC5wcm90b3R5cGUpLmNvbnN0cnVjdG9yO2Zvcig7byYmbyE9PWE7KXtjb25zdCB0PW9bTWFdfHwkaShvKTtpZih0JiZ0IT09ZSlyZXR1cm4gdDtvPU9iamVjdC5nZXRQcm90b3R5cGVPZihvKX1yZXR1cm4gdD0+bmV3IHR9KSl9ZnVuY3Rpb24gbmModCl7cmV0dXJuIHQubmdEZWJ1Z0NvbnRleHR9ZnVuY3Rpb24gZWModCl7cmV0dXJuIHQubmdPcmlnaW5hbEVycm9yfWZ1bmN0aW9uIGFjKHQsLi4ubil7dC5lcnJvciguLi5uKX0KLyoqCiAgICAgKiBAbGljZW5zZQogICAgICogQ29weXJpZ2h0IEdvb2dsZSBMTEMgQWxsIFJpZ2h0cyBSZXNlcnZlZC4KICAgICAqCiAgICAgKiBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhbiBNSVQtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQogICAgICogZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZSBhdCBodHRwczovL2FuZ3VsYXIuaW8vbGljZW5zZQogICAgICovY2xhc3Mgb2N7Y29uc3RydWN0b3IoKXt0aGlzLl9jb25zb2xlPWNvbnNvbGV9aGFuZGxlRXJyb3IodCl7Y29uc3Qgbj10aGlzLl9maW5kT3JpZ2luYWxFcnJvcih0KSxlPXRoaXMuX2ZpbmRDb250ZXh0KHQpLGE9KGZ1bmN0aW9uIG8odCl7cmV0dXJuIHQubmdFcnJvckxvZ2dlcnx8YWN9KSh0KTthKHRoaXMuX2NvbnNvbGUsIkVSUk9SIix0KSxuJiZhKHRoaXMuX2NvbnNvbGUsIk9SSUdJTkFMIEVSUk9SIixuKSxlJiZhKHRoaXMuX2NvbnNvbGUsIkVSUk9SIENPTlRFWFQiLGUpfV9maW5kQ29udGV4dCh0KXtyZXR1cm4gdD9uYyh0KT9uYyh0KTp0aGlzLl9maW5kQ29udGV4dChlYyh0KSk6bnVsbH1fZmluZE9yaWdpbmFsRXJyb3IodCl7bGV0IG49ZWModCk7Zm9yKDtuJiZlYyhuKTspbj1lYyhuKTtyZXR1cm4gbn19Ci8qKgogICAgICogQGxpY2Vuc2UKICAgICAqIENvcHlyaWdodCBHb29nbGUgTExDIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCiAgICAgKgogICAgICogVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYW4gTUlULXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKICAgICAqIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUgYXQgaHR0cHM6Ly9hbmd1bGFyLmlvL2xpY2Vuc2UKICAgICAqL2NvbnN0IHJjPXtuYW1lOiJjdXN0b20tZWxlbWVudHMifSxpYz17bmFtZToibm8tZXJyb3JzLXNjaGVtYSJ9OwovKioKICAgICAqIEBsaWNlbnNlCiAgICAgKiBDb3B5cmlnaHQgR29vZ2xlIExMQyBBbGwgUmlnaHRzIFJlc2VydmVkLgogICAgICoKICAgICAqIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGFuIE1JVC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCiAgICAgKiBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlIGF0IGh0dHBzOi8vYW5ndWxhci5pby9saWNlbnNlCiAgICAgKi8KY2xhc3MgY2N7Y29uc3RydWN0b3IodCl7dGhpcy5jaGFuZ2luZ1RoaXNCcmVha3NBcHBsaWNhdGlvblNlY3VyaXR5PXR9dG9TdHJpbmcoKXtyZXR1cm5gU2FmZVZhbHVlIG11c3QgdXNlIFtwcm9wZXJ0eV09YmluZGluZzogJHt0aGlzLmNoYW5naW5nVGhpc0JyZWFrc0FwcGxpY2F0aW9uU2VjdXJpdHl9IChzZWUgaHR0cDovL2cuY28vbmcvc2VjdXJpdHkjeHNzKWB9fWNsYXNzIHNjIGV4dGVuZHMgY2N7Z2V0VHlwZU5hbWUoKXtyZXR1cm4iSFRNTCJ9fWNsYXNzIGxjIGV4dGVuZHMgY2N7Z2V0VHlwZU5hbWUoKXtyZXR1cm4iU3R5bGUifX1jbGFzcyBtYyBleHRlbmRzIGNje2dldFR5cGVOYW1lKCl7cmV0dXJuIlNjcmlwdCJ9fWNsYXNzIGRjIGV4dGVuZHMgY2N7Z2V0VHlwZU5hbWUoKXtyZXR1cm4iVVJMIn19Y2xhc3MgZ2MgZXh0ZW5kcyBjY3tnZXRUeXBlTmFtZSgpe3JldHVybiJSZXNvdXJjZVVSTCJ9fWZ1bmN0aW9uIHBjKHQpe3JldHVybiB0IGluc3RhbmNlb2YgY2M/dC5jaGFuZ2luZ1RoaXNCcmVha3NBcHBsaWNhdGlvblNlY3VyaXR5OnR9ZnVuY3Rpb24gYmModCxuKXtjb25zdCBlPXVjKHQpO2lmKG51bGwhPWUmJmUhPT1uKXtpZigiUmVzb3VyY2VVUkwiPT09ZSYmIlVSTCI9PT1uKXJldHVybiEwO3Rocm93IG5ldyBFcnJvcihgUmVxdWlyZWQgYSBzYWZlICR7bn0sIGdvdCBhICR7ZX0gKHNlZSBodHRwOi8vZy5jby9uZy9zZWN1cml0eSN4c3MpYCl9cmV0dXJuIGU9PT1ufWZ1bmN0aW9uIHVjKHQpe3JldHVybiB0IGluc3RhbmNlb2YgY2MmJnQuZ2V0VHlwZU5hbWUoKXx8bnVsbH0KLyoqCiAgICAgKiBAbGljZW5zZQogICAgICogQ29weXJpZ2h0IEdvb2dsZSBMTEMgQWxsIFJpZ2h0cyBSZXNlcnZlZC4KICAgICAqCiAgICAgKiBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhbiBNSVQtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQogICAgICogZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZSBhdCBodHRwczovL2FuZ3VsYXIuaW8vbGljZW5zZQogICAgICovCmxldCBmYz0hMCxoYz0hMTtmdW5jdGlvbiBfYygpe3JldHVybiBoYz0hMCxmY30KLyoqCiAgICAgKiBAbGljZW5zZQogICAgICogQ29weXJpZ2h0IEdvb2dsZSBMTEMgQWxsIFJpZ2h0cyBSZXNlcnZlZC4KICAgICAqCiAgICAgKiBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhbiBNSVQtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQogICAgICogZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZSBhdCBodHRwczovL2FuZ3VsYXIuaW8vbGljZW5zZQogICAgICovCmZ1bmN0aW9uIENjKHQpe3JldHVybihmdW5jdGlvbiBuKCl7dHJ5e3JldHVybiEhKG5ldyB3aW5kb3cuRE9NUGFyc2VyKS5wYXJzZUZyb21TdHJpbmcoIiIsInRleHQvaHRtbCIpfWNhdGNoKHQpe3JldHVybiExfX0KLyoqCiAgICAgKiBAbGljZW5zZQogICAgICogQ29weXJpZ2h0IEdvb2dsZSBMTEMgQWxsIFJpZ2h0cyBSZXNlcnZlZC4KICAgICAqCiAgICAgKiBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhbiBNSVQtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQogICAgICogZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZSBhdCBodHRwczovL2FuZ3VsYXIuaW8vbGljZW5zZQogICAgICovKSgpP25ldyBNYzpuZXcgT2ModCl9Y2xhc3MgTWN7Z2V0SW5lcnRCb2R5RWxlbWVudCh0KXt0PSI8Ym9keT48cmVtb3ZlPjwvcmVtb3ZlPiIrdDt0cnl7Y29uc3Qgbj0obmV3IHdpbmRvdy5ET01QYXJzZXIpLnBhcnNlRnJvbVN0cmluZyh0LCJ0ZXh0L2h0bWwiKS5ib2R5O3JldHVybiBuLnJlbW92ZUNoaWxkKG4uZmlyc3RDaGlsZCksbn1jYXRjaCh0KXtyZXR1cm4gbnVsbH19fWNsYXNzIE9je2NvbnN0cnVjdG9yKHQpe2lmKHRoaXMuZGVmYXVsdERvYz10LHRoaXMuaW5lcnREb2N1bWVudD10aGlzLmRlZmF1bHREb2MuaW1wbGVtZW50YXRpb24uY3JlYXRlSFRNTERvY3VtZW50KCJzYW5pdGl6YXRpb24taW5lcnQiKSxudWxsPT10aGlzLmluZXJ0RG9jdW1lbnQuYm9keSl7Y29uc3QgdD10aGlzLmluZXJ0RG9jdW1lbnQuY3JlYXRlRWxlbWVudCgiaHRtbCIpO3RoaXMuaW5lcnREb2N1bWVudC5hcHBlbmRDaGlsZCh0KTtjb25zdCBuPXRoaXMuaW5lcnREb2N1bWVudC5jcmVhdGVFbGVtZW50KCJib2R5Iik7dC5hcHBlbmRDaGlsZChuKX19Z2V0SW5lcnRCb2R5RWxlbWVudCh0KXtjb25zdCBuPXRoaXMuaW5lcnREb2N1bWVudC5jcmVhdGVFbGVtZW50KCJ0ZW1wbGF0ZSIpO2lmKCJjb250ZW50ImluIG4pcmV0dXJuIG4uaW5uZXJIVE1MPXQsbjtjb25zdCBlPXRoaXMuaW5lcnREb2N1bWVudC5jcmVhdGVFbGVtZW50KCJib2R5Iik7cmV0dXJuIGUuaW5uZXJIVE1MPXQsdGhpcy5kZWZhdWx0RG9jLmRvY3VtZW50TW9kZSYmdGhpcy5zdHJpcEN1c3RvbU5zQXR0cnMoZSksZX1zdHJpcEN1c3RvbU5zQXR0cnModCl7Y29uc3Qgbj10LmF0dHJpYnV0ZXM7Zm9yKGxldCBlPW4ubGVuZ3RoLTE7MDxlO2UtLSl7Y29uc3QgYT1uLml0ZW0oZSkubmFtZTsieG1sbnM6bnMxIiE9PWEmJjAhPT1hLmluZGV4T2YoIm5zMToiKXx8dC5yZW1vdmVBdHRyaWJ1dGUoYSl9bGV0IGU9dC5maXJzdENoaWxkO2Zvcig7ZTspZS5ub2RlVHlwZT09PU5vZGUuRUxFTUVOVF9OT0RFJiZ0aGlzLnN0cmlwQ3VzdG9tTnNBdHRycyhlKSxlPWUubmV4dFNpYmxpbmd9fWNvbnN0IFBjPS9eKD86KD86aHR0cHM/fG1haWx0b3xmdHB8dGVsfGZpbGV8c21zKTp8W14mOi8/I10qKD86Wy8/I118JCkpL2dpLHhjPS9eZGF0YTooPzppbWFnZVwvKD86Ym1wfGdpZnxqcGVnfGpwZ3xwbmd8dGlmZnx3ZWJwKXx2aWRlb1wvKD86bXBlZ3xtcDR8b2dnfHdlYm0pfGF1ZGlvXC8oPzptcDN8b2dhfG9nZ3xvcHVzKSk7YmFzZTY0LFthLXowLTkrXC9dKz0qJC9pO2Z1bmN0aW9uIHljKHQpe3JldHVybih0PVN0cmluZyh0KSkubWF0Y2goUGMpfHx0Lm1hdGNoKHhjKT90OihfYygpJiZjb25zb2xlLndhcm4oYFdBUk5JTkc6IHNhbml0aXppbmcgdW5zYWZlIFVSTCB2YWx1ZSAke3R9IChzZWUgaHR0cDovL2cuY28vbmcvc2VjdXJpdHkjeHNzKWApLCJ1bnNhZmU6Iit0KX1mdW5jdGlvbiBrYyh0KXtyZXR1cm4odD1TdHJpbmcodCkpLnNwbGl0KCIsIikubWFwKCh0PT55Yyh0LnRyaW0oKSkpKS5qb2luKCIsICIpfQovKioKICAgICAqIEBsaWNlbnNlCiAgICAgKiBDb3B5cmlnaHQgR29vZ2xlIExMQyBBbGwgUmlnaHRzIFJlc2VydmVkLgogICAgICoKICAgICAqIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGFuIE1JVC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCiAgICAgKiBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlIGF0IGh0dHBzOi8vYW5ndWxhci5pby9saWNlbnNlCiAgICAgKi9mdW5jdGlvbiB2Yyh0KXtjb25zdCBuPXt9O2Zvcihjb25zdCBlIG9mIHQuc3BsaXQoIiwiKSluW2VdPSEwO3JldHVybiBufWZ1bmN0aW9uIHdjKC4uLnQpe2NvbnN0IG49e307Zm9yKGNvbnN0IGUgb2YgdClmb3IoY29uc3QgdCBpbiBlKWUuaGFzT3duUHJvcGVydHkodCkmJihuW3RdPSEwKTtyZXR1cm4gbn1jb25zdCBTYz12YygiYXJlYSxicixjb2wsaHIsaW1nLHdiciIpLEVjPXZjKCJjb2xncm91cCxkZCxkdCxsaSxwLHRib2R5LHRkLHRmb290LHRoLHRoZWFkLHRyIiksQWM9dmMoInJwLHJ0IiksemM9d2MoQWMsRWMpLFJjPXdjKEVjLHZjKCJhZGRyZXNzLGFydGljbGUsYXNpZGUsYmxvY2txdW90ZSxjYXB0aW9uLGNlbnRlcixkZWwsZGV0YWlscyxkaWFsb2csZGlyLGRpdixkbCxmaWd1cmUsZmlnY2FwdGlvbixmb290ZXIsaDEsaDIsaDMsaDQsaDUsaDYsaGVhZGVyLGhncm91cCxocixpbnMsbWFpbixtYXAsbWVudSxuYXYsb2wscHJlLHNlY3Rpb24sc3VtbWFyeSx0YWJsZSx1bCIpKSxUYz13YyhBYyx2YygiYSxhYmJyLGFjcm9ueW0sYXVkaW8sYixiZGksYmRvLGJpZyxicixjaXRlLGNvZGUsZGVsLGRmbixlbSxmb250LGksaW1nLGlucyxrYmQsbGFiZWwsbWFwLG1hcmsscGljdHVyZSxxLHJ1YnkscnAscnQscyxzYW1wLHNtYWxsLHNvdXJjZSxzcGFuLHN0cmlrZSxzdHJvbmcsc3ViLHN1cCx0aW1lLHRyYWNrLHR0LHUsdmFyLHZpZGVvIikpLERjPXdjKFNjLFJjLFRjLHpjKSxJYz12YygiYmFja2dyb3VuZCxjaXRlLGhyZWYsaXRlbXR5cGUsbG9uZ2Rlc2MscG9zdGVyLHNyYyx4bGluazpocmVmIiksTmM9dmMoInNyY3NldCIpLEZjPXZjKCJhYmJyLGFjY2Vzc2tleSxhbGlnbixhbHQsYXV0b3BsYXksYXhpcyxiZ2NvbG9yLGJvcmRlcixjZWxscGFkZGluZyxjZWxsc3BhY2luZyxjbGFzcyxjbGVhcixjb2xvcixjb2xzLGNvbHNwYW4sY29tcGFjdCxjb250cm9scyxjb29yZHMsZGF0ZXRpbWUsZGVmYXVsdCxkaXIsZG93bmxvYWQsZmFjZSxoZWFkZXJzLGhlaWdodCxoaWRkZW4saHJlZmxhbmcsaHNwYWNlLGlzbWFwLGl0ZW1zY29wZSxpdGVtcHJvcCxraW5kLGxhYmVsLGxhbmcsbGFuZ3VhZ2UsbG9vcCxtZWRpYSxtdXRlZCxub2hyZWYsbm93cmFwLG9wZW4scHJlbG9hZCxyZWwscmV2LHJvbGUscm93cyxyb3dzcGFuLHJ1bGVzLHNjb3BlLHNjcm9sbGluZyxzaGFwZSxzaXplLHNpemVzLHNwYW4sc3JjbGFuZyxzdGFydCxzdW1tYXJ5LHRhYmluZGV4LHRhcmdldCx0aXRsZSx0cmFuc2xhdGUsdHlwZSx1c2VtYXAsdmFsaWduLHZhbHVlLHZzcGFjZSx3aWR0aCIpLExjPXZjKCJhcmlhLWFjdGl2ZWRlc2NlbmRhbnQsYXJpYS1hdG9taWMsYXJpYS1hdXRvY29tcGxldGUsYXJpYS1idXN5LGFyaWEtY2hlY2tlZCxhcmlhLWNvbGNvdW50LGFyaWEtY29saW5kZXgsYXJpYS1jb2xzcGFuLGFyaWEtY29udHJvbHMsYXJpYS1jdXJyZW50LGFyaWEtZGVzY3JpYmVkYnksYXJpYS1kZXRhaWxzLGFyaWEtZGlzYWJsZWQsYXJpYS1kcm9wZWZmZWN0LGFyaWEtZXJyb3JtZXNzYWdlLGFyaWEtZXhwYW5kZWQsYXJpYS1mbG93dG8sYXJpYS1ncmFiYmVkLGFyaWEtaGFzcG9wdXAsYXJpYS1oaWRkZW4sYXJpYS1pbnZhbGlkLGFyaWEta2V5c2hvcnRjdXRzLGFyaWEtbGFiZWwsYXJpYS1sYWJlbGxlZGJ5LGFyaWEtbGV2ZWwsYXJpYS1saXZlLGFyaWEtbW9kYWwsYXJpYS1tdWx0aWxpbmUsYXJpYS1tdWx0aXNlbGVjdGFibGUsYXJpYS1vcmllbnRhdGlvbixhcmlhLW93bnMsYXJpYS1wbGFjZWhvbGRlcixhcmlhLXBvc2luc2V0LGFyaWEtcHJlc3NlZCxhcmlhLXJlYWRvbmx5LGFyaWEtcmVsZXZhbnQsYXJpYS1yZXF1aXJlZCxhcmlhLXJvbGVkZXNjcmlwdGlvbixhcmlhLXJvd2NvdW50LGFyaWEtcm93aW5kZXgsYXJpYS1yb3dzcGFuLGFyaWEtc2VsZWN0ZWQsYXJpYS1zZXRzaXplLGFyaWEtc29ydCxhcmlhLXZhbHVlbWF4LGFyaWEtdmFsdWVtaW4sYXJpYS12YWx1ZW5vdyxhcmlhLXZhbHVldGV4dCIpLEhjPXdjKEljLE5jLEZjLExjKSxCYz12Yygic2NyaXB0LHN0eWxlLHRlbXBsYXRlIik7Y2xhc3MgVmN7Y29uc3RydWN0b3IoKXt0aGlzLnNhbml0aXplZFNvbWV0aGluZz0hMSx0aGlzLmJ1Zj1bXX1zYW5pdGl6ZUNoaWxkcmVuKHQpe2xldCBuPXQuZmlyc3RDaGlsZCxlPSEwO2Zvcig7bjspaWYobi5ub2RlVHlwZT09PU5vZGUuRUxFTUVOVF9OT0RFP2U9dGhpcy5zdGFydEVsZW1lbnQobik6bi5ub2RlVHlwZT09PU5vZGUuVEVYVF9OT0RFP3RoaXMuY2hhcnMobi5ub2RlVmFsdWUpOnRoaXMuc2FuaXRpemVkU29tZXRoaW5nPSEwLGUmJm4uZmlyc3RDaGlsZCluPW4uZmlyc3RDaGlsZDtlbHNlIGZvcig7bjspe24ubm9kZVR5cGU9PT1Ob2RlLkVMRU1FTlRfTk9ERSYmdGhpcy5lbmRFbGVtZW50KG4pO2xldCB0PXRoaXMuY2hlY2tDbG9iYmVyZWRFbGVtZW50KG4sbi5uZXh0U2libGluZyk7aWYodCl7bj10O2JyZWFrfW49dGhpcy5jaGVja0Nsb2JiZXJlZEVsZW1lbnQobixuLnBhcmVudE5vZGUpfXJldHVybiB0aGlzLmJ1Zi5qb2luKCIiKX1zdGFydEVsZW1lbnQodCl7Y29uc3Qgbj10Lm5vZGVOYW1lLnRvTG93ZXJDYXNlKCk7aWYoIURjLmhhc093blByb3BlcnR5KG4pKXJldHVybiB0aGlzLnNhbml0aXplZFNvbWV0aGluZz0hMCwhQmMuaGFzT3duUHJvcGVydHkobik7dGhpcy5idWYucHVzaCgiPCIpLHRoaXMuYnVmLnB1c2gobik7Y29uc3QgZT10LmF0dHJpYnV0ZXM7Zm9yKGxldCB0PTA7dDxlLmxlbmd0aDt0Kyspe2NvbnN0IG49ZS5pdGVtKHQpLGE9bi5uYW1lLG89YS50b0xvd2VyQ2FzZSgpO2lmKCFIYy5oYXNPd25Qcm9wZXJ0eShvKSl7dGhpcy5zYW5pdGl6ZWRTb21ldGhpbmc9ITA7Y29udGludWV9bGV0IHI9bi52YWx1ZTtJY1tvXSYmKHI9eWMocikpLE5jW29dJiYocj1rYyhyKSksdGhpcy5idWYucHVzaCgiICIsYSwnPSInLFdjKHIpLCciJyl9cmV0dXJuIHRoaXMuYnVmLnB1c2goIj4iKSwhMH1lbmRFbGVtZW50KHQpe2NvbnN0IG49dC5ub2RlTmFtZS50b0xvd2VyQ2FzZSgpO0RjLmhhc093blByb3BlcnR5KG4pJiYhU2MuaGFzT3duUHJvcGVydHkobikmJih0aGlzLmJ1Zi5wdXNoKCI8LyIpLHRoaXMuYnVmLnB1c2gobiksdGhpcy5idWYucHVzaCgiPiIpKX1jaGFycyh0KXt0aGlzLmJ1Zi5wdXNoKFdjKHQpKX1jaGVja0Nsb2JiZXJlZEVsZW1lbnQodCxuKXtpZihuJiYodC5jb21wYXJlRG9jdW1lbnRQb3NpdGlvbihuKSZOb2RlLkRPQ1VNRU5UX1BPU0lUSU9OX0NPTlRBSU5FRF9CWSk9PT1Ob2RlLkRPQ1VNRU5UX1BPU0lUSU9OX0NPTlRBSU5FRF9CWSl0aHJvdyBuZXcgRXJyb3IoYEZhaWxlZCB0byBzYW5pdGl6ZSBodG1sIGJlY2F1c2UgdGhlIGVsZW1lbnQgaXMgY2xvYmJlcmVkOiAke3Qub3V0ZXJIVE1MfWApO3JldHVybiBufX1jb25zdCBqYz0vW1x1RDgwMC1cdURCRkZdW1x1REMwMC1cdURGRkZdL2csVWM9LyhbXlwjLX4gfCFdKS9nO2Z1bmN0aW9uIFdjKHQpe3JldHVybiB0LnJlcGxhY2UoLyYvZywiJmFtcDsiKS5yZXBsYWNlKGpjLChmdW5jdGlvbih0KXtyZXR1cm4iJiMiKygxMDI0Kih0LmNoYXJDb2RlQXQoMCktNTUyOTYpKyh0LmNoYXJDb2RlQXQoMSktNTYzMjApKzY1NTM2KSsiOyJ9KSkucmVwbGFjZShVYywoZnVuY3Rpb24odCl7cmV0dXJuIiYjIit0LmNoYXJDb2RlQXQoMCkrIjsifSkpLnJlcGxhY2UoLzwvZywiJmx0OyIpLnJlcGxhY2UoLz4vZywiJmd0OyIpfWxldCBHYztmdW5jdGlvbiBZYyh0LG4pe2xldCBlPW51bGw7dHJ5e0djPUdjfHxDYyh0KTtsZXQgYT1uP1N0cmluZyhuKToiIjtlPUdjLmdldEluZXJ0Qm9keUVsZW1lbnQoYSk7bGV0IG89NSxyPWE7ZG97aWYoMD09PW8pdGhyb3cgbmV3IEVycm9yKCJGYWlsZWQgdG8gc2FuaXRpemUgaHRtbCBiZWNhdXNlIHRoZSBpbnB1dCBpcyB1bnN0YWJsZSIpO28tLSxhPXIscj1lLmlubmVySFRNTCxlPUdjLmdldEluZXJ0Qm9keUVsZW1lbnQoYSl9d2hpbGUoYSE9PXIpO2NvbnN0IGk9bmV3IFZjLGM9aS5zYW5pdGl6ZUNoaWxkcmVuKHFjKGUpfHxlKTtyZXR1cm4gX2MoKSYmaS5zYW5pdGl6ZWRTb21ldGhpbmcmJmNvbnNvbGUud2FybigiV0FSTklORzogc2FuaXRpemluZyBIVE1MIHN0cmlwcGVkIHNvbWUgY29udGVudCwgc2VlIGh0dHA6Ly9nLmNvL25nL3NlY3VyaXR5I3hzcyIpLGN9ZmluYWxseXtpZihlKXtjb25zdCB0PXFjKGUpfHxlO2Zvcig7dC5maXJzdENoaWxkOyl0LnJlbW92ZUNoaWxkKHQuZmlyc3RDaGlsZCl9fX1mdW5jdGlvbiBxYyh0KXtyZXR1cm4iY29udGVudCJpbiB0JiYoZnVuY3Rpb24gbih0KXtyZXR1cm4gdC5ub2RlVHlwZT09PU5vZGUuRUxFTUVOVF9OT0RFJiYiVEVNUExBVEUiPT09dC5ub2RlTmFtZX0KLyoqCiAgICAgKiBAbGljZW5zZQogICAgICogQ29weXJpZ2h0IEdvb2dsZSBMTEMgQWxsIFJpZ2h0cyBSZXNlcnZlZC4KICAgICAqCiAgICAgKiBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhbiBNSVQtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQogICAgICogZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZSBhdCBodHRwczovL2FuZ3VsYXIuaW8vbGljZW5zZQogICAgICovKSh0KT90LmNvbnRlbnQ6bnVsbH12YXIgWmM7ZnVuY3Rpb24gWGModCl7Y29uc3Qgbj1RYygpO3JldHVybiBuP24uc2FuaXRpemUoWmMuVVJMLHQpfHwiIjpiYyh0LCJVUkwiKT9wYyh0KTp5Yygkbyh0KSl9ZnVuY3Rpb24gSmModCl7Y29uc3Qgbj1RYygpO2lmKG4pcmV0dXJuIG4uc2FuaXRpemUoWmMuUkVTT1VSQ0VfVVJMLHQpfHwiIjtpZihiYyh0LCJSZXNvdXJjZVVSTCIpKXJldHVybiBwYyh0KTt0aHJvdyBuZXcgRXJyb3IoInVuc2FmZSB2YWx1ZSB1c2VkIGluIGEgcmVzb3VyY2UgVVJMIGNvbnRleHQgKHNlZSBodHRwOi8vZy5jby9uZy9zZWN1cml0eSN4c3MpIil9ZnVuY3Rpb24gUWMoKXtjb25zdCB0PUJyKCk7cmV0dXJuIHQmJnRbMTJdfQovKioKICAgICAqIEBsaWNlbnNlCiAgICAgKiBDb3B5cmlnaHQgR29vZ2xlIExMQyBBbGwgUmlnaHRzIFJlc2VydmVkLgogICAgICoKICAgICAqIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGFuIE1JVC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCiAgICAgKiBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlIGF0IGh0dHBzOi8vYW5ndWxhci5pby9saWNlbnNlCiAgICAgKi8hKGZ1bmN0aW9uKHQpe3RbdC5OT05FPTBdPSJOT05FIix0W3QuSFRNTD0xXT0iSFRNTCIsdFt0LlNUWUxFPTJdPSJTVFlMRSIsdFt0LlNDUklQVD0zXT0iU0NSSVBUIix0W3QuVVJMPTRdPSJVUkwiLHRbdC5SRVNPVVJDRV9VUkw9NV09IlJFU09VUkNFX1VSTCJ9KShaY3x8KFpjPXt9KSk7Y29uc3QgS2M9Ly0tPi9nOwovKioKICAgICAqIEBsaWNlbnNlCiAgICAgKiBDb3B5cmlnaHQgR29vZ2xlIExMQyBBbGwgUmlnaHRzIFJlc2VydmVkLgogICAgICoKICAgICAqIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGFuIE1JVC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCiAgICAgKiBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlIGF0IGh0dHBzOi8vYW5ndWxhci5pby9saWNlbnNlCiAgICAgKi8KZnVuY3Rpb24gJGModCl7aWYoIW5nRGV2TW9kZSl0aHJvdyBuZXcgRXJyb3IoIkxvb2tzIGxpa2Ugd2UgYXJlIGluICdwcm9kIG1vZGUnLCBidXQgd2UgYXJlIGNyZWF0aW5nIGEgbmFtZWQgQXJyYXkgdHlwZSwgd2hpY2ggaXMgd3JvbmchIENoZWNrIHlvdXIgY29kZSIpO3RyeXtyZXR1cm4gbmV3KDAsJGMuY29uc3RydWN0b3IpKCJBcnJheSIsYHJldHVybiBjbGFzcyAke3R9IGV4dGVuZHMgQXJyYXl7fWApKEFycmF5KX1jYXRjaCh0KXtyZXR1cm4gQXJyYXl9fQovKioKICAgICAqIEBsaWNlbnNlCiAgICAgKiBDb3B5cmlnaHQgR29vZ2xlIExMQyBBbGwgUmlnaHRzIFJlc2VydmVkLgogICAgICoKICAgICAqIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGFuIE1JVC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCiAgICAgKiBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlIGF0IGh0dHBzOi8vYW5ndWxhci5pby9saWNlbnNlCiAgICAgKi9jb25zdCB0cz0vKFtBLVpdKS9nOwovKioKICAgICAqIEBsaWNlbnNlCiAgICAgKiBDb3B5cmlnaHQgR29vZ2xlIExMQyBBbGwgUmlnaHRzIFJlc2VydmVkLgogICAgICoKICAgICAqIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGFuIE1JVC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCiAgICAgKiBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlIGF0IGh0dHBzOi8vYW5ndWxhci5pby9saWNlbnNlCiAgICAgKi8KZnVuY3Rpb24gbnModCl7bGV0IG49enIodCk7aWYobil7aWYoQXJyYXkuaXNBcnJheShuKSl7Y29uc3QgZT1uO2xldCBhLG8scjtpZigoZnVuY3Rpb24gZSh0KXtyZXR1cm4gdCYmdC5jb25zdHJ1Y3RvciYmdC5jb25zdHJ1Y3Rvci7JtWNtcH0pKHQpKXtpZihhPWNzKGUsdCksLTE9PWEpdGhyb3cgbmV3IEVycm9yKCJUaGUgcHJvdmlkZWQgY29tcG9uZW50IHdhcyBub3QgZm91bmQgaW4gdGhlIGFwcGxpY2F0aW9uIik7bz10fWVsc2UgaWYoKGZ1bmN0aW9uIGEodCl7cmV0dXJuIHQmJnQuY29uc3RydWN0b3ImJnQuY29uc3RydWN0b3IuybVkaXJ9KSh0KSl7aWYoYT0oZnVuY3Rpb24gbyh0LG4pe2xldCBlPXRbMV0uZmlyc3RDaGlsZDtmb3IoO2U7KXtjb25zdCBhPWUuZGlyZWN0aXZlRW5kO2ZvcihsZXQgbz1lLmRpcmVjdGl2ZVN0YXJ0O288YTtvKyspaWYodFtvXT09PW4pcmV0dXJuIGUuaW5kZXg7ZT1pcyhlKX1yZXR1cm4tMX0pKGUsdCksLTE9PWEpdGhyb3cgbmV3IEVycm9yKCJUaGUgcHJvdmlkZWQgZGlyZWN0aXZlIHdhcyBub3QgZm91bmQgaW4gdGhlIGFwcGxpY2F0aW9uIik7cj1zcyhhLGUsITEpfWVsc2UgaWYoYT1ycyhlLHQpLC0xPT1hKXJldHVybiBudWxsO2NvbnN0IGk9a3IoZVthXSksYz16cihpKSxzPWMmJiFBcnJheS5pc0FycmF5KGMpP2M6ZXMoZSxhLGkpO2lmKG8mJnZvaWQgMD09PXMuY29tcG9uZW50JiYocy5jb21wb25lbnQ9byxvcyhzLmNvbXBvbmVudCxzKSksciYmdm9pZCAwPT09cy5kaXJlY3RpdmVzKXtzLmRpcmVjdGl2ZXM9cjtmb3IobGV0IHQ9MDt0PHIubGVuZ3RoO3QrKylvcyhyW3RdLHMpfW9zKHMubmF0aXZlLHMpLG49c319ZWxzZXtjb25zdCBlPXQ7bmdEZXZNb2RlJiZJYShlKTtsZXQgYT1lO2Zvcig7YT1hLnBhcmVudE5vZGU7KXtjb25zdCB0PXpyKGEpO2lmKHQpe2xldCBhO2lmKGE9QXJyYXkuaXNBcnJheSh0KT90OnQubFZpZXcsIWEpcmV0dXJuIG51bGw7Y29uc3Qgbz1ycyhhLGUpO2lmKG8+PTApe2NvbnN0IHQ9a3IoYVtvXSksZT1lcyhhLG8sdCk7b3ModCxlKSxuPWU7YnJlYWt9fX19cmV0dXJuIG58fG51bGx9ZnVuY3Rpb24gZXModCxuLGUpe3JldHVybntsVmlldzp0LG5vZGVJbmRleDpuLG5hdGl2ZTplLGNvbXBvbmVudDp2b2lkIDAsZGlyZWN0aXZlczp2b2lkIDAsbG9jYWxSZWZzOnZvaWQgMH19ZnVuY3Rpb24gYXModCl7bGV0IG4sZT16cih0KTtpZihBcnJheS5pc0FycmF5KGUpKXtjb25zdCBhPWNzKGUsdCk7bj1BcihhLGUpO2NvbnN0IG89ZXMoZSxhLG5bMF0pO28uY29tcG9uZW50PXQsb3ModCxvKSxvcyhvLm5hdGl2ZSxvKX1lbHNlIG49QXIoZS5ub2RlSW5kZXgsZS5sVmlldyk7cmV0dXJuIG59ZnVuY3Rpb24gb3ModCxuKXt0Ll9fbmdDb250ZXh0X189bn1mdW5jdGlvbiBycyh0LG4pe2NvbnN0IGU9dFsxXTtmb3IobGV0IGE9VG87YTxlLmJpbmRpbmdTdGFydEluZGV4O2ErKylpZihrcih0W2FdKT09PW4pcmV0dXJuIGE7cmV0dXJuLTF9ZnVuY3Rpb24gaXModCl7aWYodC5jaGlsZCYmdC5jaGlsZC5wYXJlbnQ9PT10KXJldHVybiB0LmNoaWxkO2lmKHQubmV4dClyZXR1cm4gdC5uZXh0O2Zvcig7dC5wYXJlbnQmJiF0LnBhcmVudC5uZXh0Oyl0PXQucGFyZW50O3JldHVybiB0LnBhcmVudCYmdC5wYXJlbnQubmV4dH1mdW5jdGlvbiBjcyh0LG4pe2NvbnN0IGU9dFsxXS5jb21wb25lbnRzO2lmKGUpZm9yKGxldCBhPTA7YTxlLmxlbmd0aDthKyspe2NvbnN0IG89ZVthXTtpZihBcihvLHQpWzhdPT09bilyZXR1cm4gb31lbHNlIGlmKEFyKFRvLHQpWzhdPT09bilyZXR1cm4gVG87cmV0dXJuLTF9ZnVuY3Rpb24gc3ModCxuLGUpe2NvbnN0IGE9blsxXS5kYXRhW3RdO2xldCBvPWEuZGlyZWN0aXZlU3RhcnQ7cmV0dXJuIDA9PW8/Zm86KCFlJiYyJmEuZmxhZ3MmJm8rKyxuLnNsaWNlKG8sYS5kaXJlY3RpdmVFbmQpKX0KLyoqCiAgICAgKiBAbGljZW5zZQogICAgICogQ29weXJpZ2h0IEdvb2dsZSBMTEMgQWxsIFJpZ2h0cyBSZXNlcnZlZC4KICAgICAqCiAgICAgKiBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhbiBNSVQtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQogICAgICogZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZSBhdCBodHRwczovL2FuZ3VsYXIuaW8vbGljZW5zZQogICAgICovCmZ1bmN0aW9uIGxzKHQsbixlKXtuZ0Rldk1vZGUmJndhKG4sIiIsJ2NhbiBub3QgbG9vayBmb3IgIiIgc3RyaW5nLicpO2xldCBhPXQubGVuZ3RoO2Zvcig7Oyl7Y29uc3Qgbz10LmluZGV4T2YobixlKTtpZigtMT09PW8pcmV0dXJuIG87aWYoMD09PW98fHQuY2hhckNvZGVBdChvLTEpPD0zMil7Y29uc3QgZT1uLmxlbmd0aDtpZihvK2U9PT1hfHx0LmNoYXJDb2RlQXQobytlKTw9MzIpcmV0dXJuIG99ZT1vKzF9fWNvbnN0IG1zPSJuZy10ZW1wbGF0ZSI7ZnVuY3Rpb24gZHModCxuLGUpe25nRGV2TW9kZSYmdmEobixuLnRvTG93ZXJDYXNlKCksIkNsYXNzIG5hbWUgZXhwZWN0ZWQgdG8gYmUgbG93ZXJjYXNlLiIpO2xldCBhPTA7Zm9yKDthPHQubGVuZ3RoOyl7bGV0IG89dFthKytdO2lmKGUmJiJjbGFzcyI9PT1vKXtpZihvPXRbYV0sLTEhPT1scyhvLnRvTG93ZXJDYXNlKCksbiwwKSlyZXR1cm4hMH1lbHNlIGlmKDE9PT1vKXtmb3IoO2E8dC5sZW5ndGgmJiJzdHJpbmciPT10eXBlb2Yobz10W2ErK10pOylpZihvLnRvTG93ZXJDYXNlKCk9PT1uKXJldHVybiEwO3JldHVybiExfX1yZXR1cm4hMX1mdW5jdGlvbiBncyh0KXtyZXR1cm4gMD09PXQudHlwZSYmdC50YWdOYW1lIT09bXN9ZnVuY3Rpb24gcHModCxuLGUpe3JldHVybiBuPT09KDAhPT10LnR5cGV8fGU/dC50YWdOYW1lOm1zKX1mdW5jdGlvbiBicyh0LG4sZSl7bmdEZXZNb2RlJiZUYShuWzBdLCJTZWxlY3RvciBzaG91bGQgaGF2ZSBhIHRhZyBuYW1lIik7bGV0IGE9NDtjb25zdCBvPXQuYXR0cnN8fFtdLHI9KGZ1bmN0aW9uIGkodCl7Zm9yKGxldCBuPTA7bjx0Lmxlbmd0aDtuKyspaWYoQWkodFtuXSkpcmV0dXJuIG47cmV0dXJuIHQubGVuZ3RofSkobyk7bGV0IGM9ITE7Zm9yKGxldCBpPTA7aTxuLmxlbmd0aDtpKyspe2NvbnN0IHM9bltpXTtpZigibnVtYmVyIiE9dHlwZW9mIHMpe2lmKCFjKWlmKDQmYSl7aWYoYT0yfDEmYSwiIiE9PXMmJiFwcyh0LHMsZSl8fCIiPT09cyYmMT09PW4ubGVuZ3RoKXtpZih1cyhhKSlyZXR1cm4hMTtjPSEwfX1lbHNle2NvbnN0IGw9OCZhP3M6blsrK2ldO2lmKDgmYSYmbnVsbCE9PXQuYXR0cnMpe2lmKCFkcyh0LmF0dHJzLGwsZSkpe2lmKHVzKGEpKXJldHVybiExO2M9ITB9Y29udGludWV9Y29uc3QgbT1mcyg4JmE/ImNsYXNzIjpzLG8sZ3ModCksZSk7aWYoLTE9PT1tKXtpZih1cyhhKSlyZXR1cm4hMTtjPSEwO2NvbnRpbnVlfWlmKCIiIT09bCl7bGV0IHQ7bT5yP3Q9IiI6KG5nRGV2TW9kZSYmd2Eob1ttXSwwLCJXZSBkbyBub3QgbWF0Y2ggZGlyZWN0aXZlcyBvbiBuYW1lc3BhY2VkIGF0dHJpYnV0ZXMiKSx0PW9bbSsxXS50b0xvd2VyQ2FzZSgpKTtjb25zdCBuPTgmYT90Om51bGw7aWYobiYmLTEhPT1scyhuLGwsMCl8fDImYSYmbCE9PXQpe2lmKHVzKGEpKXJldHVybiExO2M9ITB9fX19ZWxzZXtpZighYyYmIXVzKGEpJiYhdXMocykpcmV0dXJuITE7aWYoYyYmdXMocykpY29udGludWU7Yz0hMSxhPXN8MSZhfX1yZXR1cm4gdXMoYSl8fGN9ZnVuY3Rpb24gdXModCl7cmV0dXJuIDA9PSgxJnQpfWZ1bmN0aW9uIGZzKHQsbixlLGEpe2lmKG51bGw9PT1uKXJldHVybi0xO2xldCBvPTA7aWYoYXx8IWUpe2xldCBlPSExO2Zvcig7bzxuLmxlbmd0aDspe2NvbnN0IGE9bltvXTtpZihhPT09dClyZXR1cm4gbztpZigzPT09YXx8Nj09PWEpZT0hMDtlbHNle2lmKDE9PT1hfHwyPT09YSl7bGV0IHQ9blsrK29dO2Zvcig7InN0cmluZyI9PXR5cGVvZiB0Oyl0PW5bKytvXTtjb250aW51ZX1pZig0PT09YSlicmVhaztpZigwPT09YSl7bys9NDtjb250aW51ZX19bys9ZT8xOjJ9cmV0dXJuLTF9cmV0dXJuKGZ1bmN0aW9uIHIodCxuKXtsZXQgZT10LmluZGV4T2YoNCk7aWYoZT4tMSlmb3IoZSsrO2U8dC5sZW5ndGg7KXtjb25zdCBhPXRbZV07aWYoIm51bWJlciI9PXR5cGVvZiBhKXJldHVybi0xO2lmKGE9PT1uKXJldHVybiBlO2UrK31yZXR1cm4tMX0pKG4sdCl9ZnVuY3Rpb24gaHModCxuLGU9ITEpe2ZvcihsZXQgYT0wO2E8bi5sZW5ndGg7YSsrKWlmKGJzKHQsblthXSxlKSlyZXR1cm4hMDtyZXR1cm4hMX1mdW5jdGlvbiBfcyh0LG4pe3Q6Zm9yKGxldCBlPTA7ZTxuLmxlbmd0aDtlKyspe2NvbnN0IGE9bltlXTtpZih0Lmxlbmd0aD09PWEubGVuZ3RoKXtmb3IobGV0IG49MDtuPHQubGVuZ3RoO24rKylpZih0W25dIT09YVtuXSljb250aW51ZSB0O3JldHVybiEwfX1yZXR1cm4hMX1mdW5jdGlvbiBDcyh0LG4pe3JldHVybiB0PyI6bm90KCIrbi50cmltKCkrIikiOm59ZnVuY3Rpb24gTXModCl7bGV0IG49dFswXSxlPTEsYT0yLG89IiIscj0hMTtmb3IoO2U8dC5sZW5ndGg7KXtsZXQgaT10W2VdO2lmKCJzdHJpbmciPT10eXBlb2YgaSlpZigyJmEpe2NvbnN0IG49dFsrK2VdO28rPSJbIitpKyhuLmxlbmd0aD4wPyc9IicrbisnIic6IiIpKyJdIn1lbHNlIDgmYT9vKz0iLiIraTo0JmEmJihvKz0iICIraSk7ZWxzZSIiPT09b3x8dXMoaSl8fChuKz1DcyhyLG8pLG89IiIpLGE9aSxyPXJ8fCF1cyhhKTtlKyt9cmV0dXJuIiIhPT1vJiYobis9Q3MocixvKSksbn0KLyoqCiAgICAgKiBAbGljZW5zZQogICAgICogQ29weXJpZ2h0IEdvb2dsZSBMTEMgQWxsIFJpZ2h0cyBSZXNlcnZlZC4KICAgICAqCiAgICAgKiBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhbiBNSVQtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQogICAgICogZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZSBhdCBodHRwczovL2FuZ3VsYXIuaW8vbGljZW5zZQogICAgICovCmNvbnN0IE9zPSJ1bmRlZmluZWQiPT10eXBlb2YgbmdEZXZNb2RlfHxuZ0Rldk1vZGU/e19fYnJhbmRfXzoiTk9fQ0hBTkdFIn06e307Ci8qKgogICAgICogQGxpY2Vuc2UKICAgICAqIENvcHlyaWdodCBHb29nbGUgTExDIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCiAgICAgKgogICAgICogVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYW4gTUlULXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKICAgICAqIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUgYXQgaHR0cHM6Ly9hbmd1bGFyLmlvL2xpY2Vuc2UKICAgICAqL2Z1bmN0aW9uIFBzKHQpe25nRGV2TW9kZSYmWm8odCk7Y29uc3Qgbj10WzNdO3JldHVybiBGbyhuKT9uWzNdOm59ZnVuY3Rpb24geHModCl7Y29uc3Qgbj0oZnVuY3Rpb24gZSh0KXtuZ0Rldk1vZGUmJlRhKHQsImNvbXBvbmVudCIpO2xldCBuPU5vKHQpP3Q6UnIodCk7Zm9yKDtuJiYhKDUxMiZuWzJdKTspbj1QcyhuKTtyZXR1cm4gbmdEZXZNb2RlJiZabyhuKSxufSkodCk7cmV0dXJuIG5nRGV2TW9kZSYmVGEobls4XSwiUm9vdFZpZXcgaGFzIG5vIGNvbnRleHQuIFBlcmhhcHMgaXQgaXMgZGlzY29ubmVjdGVkPyIpLG5bOF19ZnVuY3Rpb24geXModCl7cmV0dXJuIHZzKHRbMTNdKX1mdW5jdGlvbiBrcyh0KXtyZXR1cm4gdnModFs0XSl9ZnVuY3Rpb24gdnModCl7Zm9yKDtudWxsIT09dCYmIUZvKHQpOyl0PXRbNF07cmV0dXJuIHR9Ci8qKgogICAgICogQGxpY2Vuc2UKICAgICAqIENvcHlyaWdodCBHb29nbGUgTExDIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCiAgICAgKgogICAgICogVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYW4gTUlULXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKICAgICAqIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUgYXQgaHR0cHM6Ly9hbmd1bGFyLmlvL2xpY2Vuc2UKICAgICAqL2Z1bmN0aW9uIHdzKHQpe25nRGV2TW9kZSYmUmEodCwwLCJDYW4gb25seSBhZHZhbmNlIGZvcndhcmQiKSxTcyhWcigpLEJyKCksZ2koKSt0LHFyKCkpfWZ1bmN0aW9uIFNzKHQsbixlLGEpe2lmKG5nRGV2TW9kZSYmUmEoZSwtMSwiSW52YWxpZCBpbmRleCIpLG5nRGV2TW9kZSYmTmEobixlK1RvKSwhYSlpZigzPT0oMyZuWzJdKSl7Y29uc3QgYT10LnByZU9yZGVyQ2hlY2tIb29rcztudWxsIT09YSYmX2kobixhLGUpfWVsc2V7Y29uc3QgYT10LnByZU9yZGVySG9va3M7bnVsbCE9PWEmJkNpKG4sYSwwLGUpfXBpKGUpfQovKioKICAgICAqIEBsaWNlbnNlCiAgICAgKiBDb3B5cmlnaHQgR29vZ2xlIExMQyBBbGwgUmlnaHRzIFJlc2VydmVkLgogICAgICoKICAgICAqIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGFuIE1JVC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCiAgICAgKiBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlIGF0IGh0dHBzOi8vYW5ndWxhci5pby9saWNlbnNlCiAgICAgKi9mdW5jdGlvbiBFcyh0LG4pe3JldHVybiBuZ0Rldk1vZGUmJnlhKHQsMCwzMjc2NyksbmdEZXZNb2RlJiZ5YShuLDAsMzI3NjcpLHQ8PDE3fG48PDJ9ZnVuY3Rpb24gQXModCl7cmV0dXJuIG5nRGV2TW9kZSYmeGEodCwiZXhwZWN0ZWQgbnVtYmVyIiksdD4+MTcmMzI3Njd9ZnVuY3Rpb24genModCl7cmV0dXJuIG5nRGV2TW9kZSYmeGEodCwiZXhwZWN0ZWQgbnVtYmVyIiksMj09KDImdCl9ZnVuY3Rpb24gUnModCl7cmV0dXJuIG5nRGV2TW9kZSYmeGEodCwiZXhwZWN0ZWQgbnVtYmVyIiksMnx0fWZ1bmN0aW9uIFRzKHQpe3JldHVybiBuZ0Rldk1vZGUmJnhhKHQsImV4cGVjdGVkIG51bWJlciIpLCgxMzEwNjgmdCk+PjJ9ZnVuY3Rpb24gRHModCxuKXtyZXR1cm4gbmdEZXZNb2RlJiZ4YSh0LCJleHBlY3RlZCBudW1iZXIiKSxuZ0Rldk1vZGUmJnlhKG4sMCwzMjc2NyksLTEzMTA2OSZ0fG48PDJ9ZnVuY3Rpb24gSXModCl7cmV0dXJuIG5nRGV2TW9kZSYmeGEodCwiZXhwZWN0ZWQgbnVtYmVyIiksMT09KDEmdCl9ZnVuY3Rpb24gTnModCl7cmV0dXJuIG5nRGV2TW9kZSYmeGEodCwiZXhwZWN0ZWQgbnVtYmVyIiksMXx0fQovKioKICAgICAqIEBsaWNlbnNlCiAgICAgKiBDb3B5cmlnaHQgR29vZ2xlIExMQyBBbGwgUmlnaHRzIFJlc2VydmVkLgogICAgICoKICAgICAqIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGFuIE1JVC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCiAgICAgKiBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlIGF0IGh0dHBzOi8vYW5ndWxhci5pby9saWNlbnNlCiAgICAgKi9mdW5jdGlvbiBGcyh0LG4pe2lmKCFuZ0Rldk1vZGUpdGhyb3cgbmV3IEVycm9yKCJUaGlzIG1ldGhvZCBzaG91bGQgYmUgZ3VhcmRlZCB3aXRoIGBuZ0Rldk1vZGVgIHNvIHRoYXQgaXQgY2FuIGJlIHRyZWUgc2hha2VuIGluIHByb2R1Y3Rpb24hIik7T2JqZWN0LmRlZmluZVByb3BlcnR5KHQsImRlYnVnIix7dmFsdWU6bixlbnVtZXJhYmxlOiExfSl9ZnVuY3Rpb24gTHModCxuKXtpZighbmdEZXZNb2RlKXRocm93IG5ldyBFcnJvcigiVGhpcyBtZXRob2Qgc2hvdWxkIGJlIGd1YXJkZWQgd2l0aCBgbmdEZXZNb2RlYCBzbyB0aGF0IGl0IGNhbiBiZSB0cmVlIHNoYWtlbiBpbiBwcm9kdWN0aW9uISIpO09iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LCJkZWJ1ZyIse2dldDpuLGVudW1lcmFibGU6ITF9KX0KLyoqCiAgICAgKiBAbGljZW5zZQogICAgICogQ29weXJpZ2h0IEdvb2dsZSBMTEMgQWxsIFJpZ2h0cyBSZXNlcnZlZC4KICAgICAqCiAgICAgKiBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhbiBNSVQtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQogICAgICogZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZSBhdCBodHRwczovL2FuZ3VsYXIuaW8vbGljZW5zZQogICAgICovY29uc3QgSHM9KCJ1bmRlZmluZWQiPT10eXBlb2YgbmdEZXZNb2RlfHwhIW5nRGV2TW9kZSkmJlBhKCk7bGV0IEJzLFZzLGpzO2Z1bmN0aW9uIFVzKHQpe2lmKG51bGw9PXQpcmV0dXJuIiI7Y29uc3Qgbj10Lmxhc3RJbmRleE9mKCJfVGVtcGxhdGUiKTtyZXR1cm4iXyIrKC0xPT09bj90OnQuc3Vic3RyKDAsbikpfWZ1bmN0aW9uIFdzKHQsbil7Y29uc3QgZT10LnRWaWV3Xy5kYXRhLGE9W10sbz1uP3QuY2xhc3NCaW5kaW5nczp0LnN0eWxlQmluZGluZ3Mscj1BcyhvKSxpPVRzKG8pO2xldCBjPTAhPT1pLHM9Yz9pOnI7Zm9yKDswIT09czspe2NvbnN0IHQ9ZVtzKzFdO2EudW5zaGlmdCh7a2V5OmVbc10saW5kZXg6cyxpc1RlbXBsYXRlOmMscHJldkR1cGxpY2F0ZTp6cyh0KSxuZXh0RHVwbGljYXRlOklzKHQpLG5leHRJbmRleDpUcyh0KSxwcmV2SW5kZXg6QXModCl9KSxzPT09ciYmKGM9ITEpLHM9QXModCl9cmV0dXJuIGEucHVzaCgobj90LnJlc2lkdWFsQ2xhc3Nlczp0LnJlc2lkdWFsU3R5bGVzKXx8bnVsbCksYX1mdW5jdGlvbiBHcyh0LG4pe2Zvcig7dDspbi5wdXNoKHQudGVtcGxhdGVfKSx0PXQubmV4dH1jb25zdCBZcz1IcyYmJGMoIlRWaWV3RGF0YSIpfHxudWxsO2xldCBxcztjb25zdCBacz1IcyYmJGMoIkxWaWV3Qmx1ZXByaW50Iil8fG51bGwsWHM9SHMmJiRjKCJNYXRjaGVzQXJyYXkiKXx8bnVsbCxKcz1IcyYmJGMoIlRWaWV3Q29tcG9uZW50cyIpfHxudWxsLFFzPUhzJiYkYygiVE5vZGVMb2NhbE5hbWVzIil8fG51bGwsS3M9SHMmJiRjKCJUTm9kZUluaXRpYWxJbnB1dHMiKXx8bnVsbDtIcyYmJGMoIlROb2RlSW5pdGlhbERhdGEiKTtjb25zdCAkcz1IcyYmJGMoIkxDbGVhbnVwIil8fG51bGwsdGw9SHMmJiRjKCJUQ2xlYW51cCIpfHxudWxsO2Z1bmN0aW9uIG5sKHQpe2lmKHQpe2NvbnN0IG49dC5kZWJ1ZztyZXR1cm4gVGEobiwiT2JqZWN0IGRvZXMgbm90IGhhdmUgYSBkZWJ1ZyByZXByZXNlbnRhdGlvbi4iKSxufXJldHVybiB0fWZ1bmN0aW9uIGVsKHQsbj0hMSl7Y29uc3QgZT1rcih0KTtpZihlKXN3aXRjaChlLm5vZGVUeXBlKXtjYXNlIE5vZGUuVEVYVF9OT0RFOnJldHVybiBlLnRleHRDb250ZW50O2Nhc2UgTm9kZS5DT01NRU5UX05PREU6cmV0dXJuYFx4M2MhLS0ke2UudGV4dENvbnRlbnR9LS1ceDNlYDtjYXNlIE5vZGUuRUxFTUVOVF9OT0RFOmNvbnN0IHQ9ZS5vdXRlckhUTUw7cmV0dXJuIG4/dDp0LnNwbGl0KCI+IitlLmlubmVySFRNTCsiPCIpWzBdKyI+In1yZXR1cm4gbnVsbH1jbGFzcyBhbHtjb25zdHJ1Y3Rvcih0KXt0aGlzLl9yYXdfbFZpZXc9dH1nZXQgZmxhZ3MoKXtjb25zdCB0PXRoaXMuX3Jhd19sVmlld1syXTtyZXR1cm57X19yYXdfX2ZsYWdzX186dCxpbml0UGhhc2VTdGF0ZTozJnQsY3JlYXRpb25Nb2RlOiEhKDQmdCksZmlyc3RWaWV3UGFzczohISg4JnQpLGNoZWNrQWx3YXlzOiEhKDE2JnQpLGRpcnR5OiEhKDY0JnQpLGF0dGFjaGVkOiEhKDEyOCZ0KSxkZXN0cm95ZWQ6ISEoMjU2JnQpLGlzUm9vdDohISg1MTImdCksaW5kZXhXaXRoaW5Jbml0UGhhc2U6dD4+MTF9fWdldCBwYXJlbnQoKXtyZXR1cm4gbmwodGhpcy5fcmF3X2xWaWV3WzNdKX1nZXQgaG9zdEhUTUwoKXtyZXR1cm4gZWwodGhpcy5fcmF3X2xWaWV3WzBdLCEwKX1nZXQgaHRtbCgpe3JldHVybih0aGlzLm5vZGVzfHxbXSkubWFwKCh0PT5lbCh0Lm5hdGl2ZSwhMCkpKS5qb2luKCIiKX1nZXQgY29udGV4dCgpe3JldHVybiB0aGlzLl9yYXdfbFZpZXdbOF19Z2V0IG5vZGVzKCl7Y29uc3QgdD10aGlzLl9yYXdfbFZpZXc7cmV0dXJuIHJsKHRbMV0uZmlyc3RDaGlsZCx0KX1nZXQgdFZpZXcoKXtyZXR1cm4gdGhpcy5fcmF3X2xWaWV3WzFdfWdldCBjbGVhbnVwKCl7cmV0dXJuIHRoaXMuX3Jhd19sVmlld1s3XX1nZXQgaW5qZWN0b3IoKXtyZXR1cm4gdGhpcy5fcmF3X2xWaWV3WzldfWdldCByZW5kZXJlckZhY3RvcnkoKXtyZXR1cm4gdGhpcy5fcmF3X2xWaWV3WzEwXX1nZXQgcmVuZGVyZXIoKXtyZXR1cm4gdGhpcy5fcmF3X2xWaWV3WzExXX1nZXQgc2FuaXRpemVyKCl7cmV0dXJuIHRoaXMuX3Jhd19sVmlld1sxMl19Z2V0IGNoaWxkSGVhZCgpe3JldHVybiBubCh0aGlzLl9yYXdfbFZpZXdbMTNdKX1nZXQgbmV4dCgpe3JldHVybiBubCh0aGlzLl9yYXdfbFZpZXdbNF0pfWdldCBjaGlsZFRhaWwoKXtyZXR1cm4gbmwodGhpcy5fcmF3X2xWaWV3WzE0XSl9Z2V0IGRlY2xhcmF0aW9uVmlldygpe3JldHVybiBubCh0aGlzLl9yYXdfbFZpZXdbMTVdKX1nZXQgcXVlcmllcygpe3JldHVybiB0aGlzLl9yYXdfbFZpZXdbMTldfWdldCB0SG9zdCgpe3JldHVybiB0aGlzLl9yYXdfbFZpZXdbNl19Z2V0IGRlY2xzKCl7cmV0dXJuIG9sKHRoaXMudFZpZXcsdGhpcy5fcmF3X2xWaWV3LFRvLHRoaXMudFZpZXcuYmluZGluZ1N0YXJ0SW5kZXgpfWdldCB2YXJzKCl7Y29uc3QgdD10aGlzLnRWaWV3O3JldHVybiBvbCh0LHRoaXMuX3Jhd19sVmlldyx0LmJpbmRpbmdTdGFydEluZGV4LHQuaTE4blN0YXJ0SW5kZXgpfWdldCBpMThuKCl7Y29uc3QgdD10aGlzLnRWaWV3O3JldHVybiBvbCh0LHRoaXMuX3Jhd19sVmlldyx0LmkxOG5TdGFydEluZGV4LHQuZXhwYW5kb1N0YXJ0SW5kZXgpfWdldCBleHBhbmRvKCl7cmV0dXJuIG9sKHRoaXMudFZpZXcsdGhpcy5fcmF3X2xWaWV3LHRoaXMudFZpZXcuZXhwYW5kb1N0YXJ0SW5kZXgsdGhpcy5fcmF3X2xWaWV3Lmxlbmd0aCl9Z2V0IGNoaWxkVmlld3MoKXtjb25zdCB0PVtdO2xldCBuPXRoaXMuY2hpbGRIZWFkO2Zvcig7bjspdC5wdXNoKG4pLG49bi5uZXh0O3JldHVybiB0fX1mdW5jdGlvbiBvbCh0LG4sZSxhKXtsZXQgbz1bXTtmb3IobGV0IHI9ZTtyPGE7cisrKW8ucHVzaCh7aW5kZXg6cix0OnQuZGF0YVtyXSxsOm5bcl19KTtyZXR1cm57c3RhcnQ6ZSxlbmQ6YSxsZW5ndGg6YS1lLGNvbnRlbnQ6b319ZnVuY3Rpb24gcmwodCxuKXtpZih0KXtjb25zdCBlPVtdO2xldCBhPXQ7Zm9yKDthOyllLnB1c2goaWwoYSxuKSksYT1hLm5leHQ7cmV0dXJuIGV9cmV0dXJuW119ZnVuY3Rpb24gaWwodCxuKXtjb25zdCBlPWtyKG5bdC5pbmRleF0pLGE9W10sbz1bXSxyPW5bMV07Zm9yKGxldCBlPXQuZGlyZWN0aXZlU3RhcnQ7ZTx0LmRpcmVjdGl2ZUVuZDtlKyspYS5wdXNoKHIuZGF0YVtlXS50eXBlKSxvLnB1c2gobltlXSk7cmV0dXJue2h0bWw6ZWwoZSksdHlwZTpraVt0LnR5cGVdLG5hdGl2ZTplLGNoaWxkcmVuOnJsKHQuY2hpbGQsbiksZmFjdG9yaWVzOmEsaW5zdGFuY2VzOm8saW5qZWN0b3I6Y2wodCxyLG4pfX1mdW5jdGlvbiBjbCh0LG4sZSl7Y29uc3QgYT1bXTtmb3IobGV0IGU9dC5wcm92aWRlckluZGV4U3RhcnRfO2U8dC5wcm92aWRlckluZGV4RW5kXztlKyspYS5wdXNoKG4uZGF0YVtlXSk7Y29uc3Qgbz1bXTtmb3IobGV0IGU9dC5wcm92aWRlckluZGV4RW5kXztlPHQuZGlyZWN0aXZlRW5kO2UrKylvLnB1c2gobi5kYXRhW2VdKTtyZXR1cm57Ymxvb206bGwoZSx0LmluamVjdG9ySW5kZXgpLGN1bXVsYXRpdmVCbG9vbTpsbChuLmRhdGEsdC5pbmplY3RvckluZGV4KSxwcm92aWRlcnM6byx2aWV3UHJvdmlkZXJzOmEscGFyZW50SW5qZWN0b3JJbmRleDplW3QucHJvdmlkZXJJbmRleFN0YXJ0Xy0xXX19ZnVuY3Rpb24gc2wodCxuKXtjb25zdCBlPXRbbl07aWYoIm51bWJlciIhPXR5cGVvZiBlKXJldHVybiI/Pz8/Pz8/PyI7Y29uc3QgYT0iMDAwMDAwMDAiK2UudG9TdHJpbmcoMik7cmV0dXJuIGEuc3Vic3RyaW5nKGEubGVuZ3RoLTgpfWZ1bmN0aW9uIGxsKHQsbil7cmV0dXJuYCR7c2wodCxuKzcpfV8ke3NsKHQsbis2KX1fJHtzbCh0LG4rNSl9XyR7c2wodCxuKzQpfV8ke3NsKHQsbiszKX1fJHtzbCh0LG4rMil9XyR7c2wodCxuKzEpfV8ke3NsKHQsbiswKX1gfWNsYXNzIG1se2NvbnN0cnVjdG9yKHQpe3RoaXMuX3Jhd19sQ29udGFpbmVyPXR9Z2V0IGhhc1RyYW5zcGxhbnRlZFZpZXdzKCl7cmV0dXJuIHRoaXMuX3Jhd19sQ29udGFpbmVyWzJdfWdldCB2aWV3cygpe3JldHVybiB0aGlzLl9yYXdfbENvbnRhaW5lci5zbGljZShJbykubWFwKG5sKX1nZXQgcGFyZW50KCl7cmV0dXJuIG5sKHRoaXMuX3Jhd19sQ29udGFpbmVyWzNdKX1nZXQgbW92ZWRWaWV3cygpe3JldHVybiB0aGlzLl9yYXdfbENvbnRhaW5lcls5XX1nZXQgaG9zdCgpe3JldHVybiB0aGlzLl9yYXdfbENvbnRhaW5lclswXX1nZXQgbmF0aXZlKCl7cmV0dXJuIHRoaXMuX3Jhd19sQ29udGFpbmVyWzddfWdldCBuZXh0KCl7cmV0dXJuIG5sKHRoaXMuX3Jhd19sQ29udGFpbmVyWzRdKX19Y29uc3QgZGw9UHJvbWlzZS5yZXNvbHZlKG51bGwpO2Z1bmN0aW9uIGdsKHQsbil7Y29uc3QgZT10LmNvbnRlbnRRdWVyaWVzO2lmKG51bGwhPT1lKWZvcihsZXQgYT0wO2E8ZS5sZW5ndGg7YSs9Mil7Y29uc3Qgbz1lW2FdLHI9ZVthKzFdO2lmKC0xIT09cil7Y29uc3QgZT10LmRhdGFbcl07bmdEZXZNb2RlJiZUYShlLmNvbnRlbnRRdWVyaWVzLCJjb250ZW50UXVlcmllcyBmdW5jdGlvbiBzaG91bGQgYmUgZGVmaW5lZCIpLG9pKG8pLGUuY29udGVudFF1ZXJpZXMoMixuW3JdLHIpfX19ZnVuY3Rpb24gcGwodCxuLGUpe3JldHVybiB4cihuKT9uLmNyZWF0ZUVsZW1lbnQodCxlKTpudWxsPT09ZT9uLmNyZWF0ZUVsZW1lbnQodCk6bi5jcmVhdGVFbGVtZW50TlMoZSx0KX1mdW5jdGlvbiBibCh0LG4sZSxhLG8scixpLGMscyxsKXtjb25zdCBtPW5nRGV2TW9kZT8oZnVuY3Rpb24gZCh0KXtyZXR1cm4oZnVuY3Rpb24gbih0LGUpe3N3aXRjaCh0KXtjYXNlIDA6cmV0dXJuIHZvaWQgMD09PWpzJiYoanM9bmV3KCRjKCJMUm9vdFZpZXciKSkpLGpzO2Nhc2UgMTp2b2lkIDA9PT1CcyYmKEJzPW5ldyBNYXApO2xldCB0PUJzLmdldChlKTtyZXR1cm4gdm9pZCAwPT09dCYmKHQ9bmV3KCRjKCJMQ29tcG9uZW50VmlldyIrVXMoZSkpKSxCcy5zZXQoZSx0KSksdDtjYXNlIDI6dm9pZCAwPT09VnMmJihWcz1uZXcgTWFwKTtsZXQgbj1Wcy5nZXQoZSk7cmV0dXJuIHZvaWQgMD09PW4mJihuPW5ldygkYygiTEVtYmVkZGVkVmlldyIrVXMoZSkpKSxWcy5zZXQoZSxuKSksbn10aHJvdyBuZXcgRXJyb3IoInVucmVhY2hhYmxlIGNvZGUiKX0pKHQudHlwZSx0LnRlbXBsYXRlJiZ0LnRlbXBsYXRlLm5hbWUpLmNvbmNhdCh0LmJsdWVwcmludCl9KShuKTpuLmJsdWVwcmludC5zbGljZSgpO3JldHVybiBtWzBdPW8sbVsyXT0xNDB8YSxOcihtKSxuZ0Rldk1vZGUmJm4uZGVjbFROb2RlJiZ0JiZVbyhuLmRlY2xUTm9kZSx0KSxtWzNdPW1bMTVdPXQsbVs4XT1lLG1bMTBdPWl8fHQmJnRbMTBdLG5nRGV2TW9kZSYmVGEobVsxMF0sIlJlbmRlcmVyRmFjdG9yeSBpcyByZXF1aXJlZCIpLG1bMTFdPWN8fHQmJnRbMTFdLG5nRGV2TW9kZSYmVGEobVsxMV0sIlJlbmRlcmVyIGlzIHJlcXVpcmVkIiksbVsxMl09c3x8dCYmdFsxMl18fG51bGwsbVs5XT1sfHx0JiZ0WzldfHxudWxsLG1bNl09cixuZ0Rldk1vZGUmJnZhKDIhPW4udHlwZXx8bnVsbCE9PXQsITAsIkVtYmVkZGVkIHZpZXdzIG11c3QgaGF2ZSBwYXJlbnRMVmlldyIpLG1bMTZdPTI9PW4udHlwZT90WzE2XTptLG5nRGV2TW9kZSYmKGZ1bmN0aW9uIGcodCl7RnModCxuZXcgYWwodCkpfSkobSksbX1mdW5jdGlvbiB1bCh0LG4sZSxhLG8pe2NvbnN0IHI9bitUbyxpPXQuZGF0YVtyXXx8KGZ1bmN0aW9uIGModCxuLGUsYSxvKXtjb25zdCByPVVyKCksaT1HcigpLGM9dC5kYXRhW25dPShmdW5jdGlvbiBzKHQsbixlLGEsbyxyKXtuZ0Rldk1vZGUmJm5nRGV2TW9kZS50Tm9kZSsrO2xldCBpPW4/bi5pbmplY3RvckluZGV4Oi0xO2NvbnN0IGM9bmdEZXZNb2RlP25ldyBjbGFzc3tjb25zdHJ1Y3Rvcih0LG4sZSxhLG8scixpLGMscyxsLG0sZCxnLHAsYix1LGYsaCxfLEMsTSxPLFAseCx5LGssdix3LFMsRSxBKXt0aGlzLnRWaWV3Xz10LHRoaXMudHlwZT1uLHRoaXMuaW5kZXg9ZSx0aGlzLmluamVjdG9ySW5kZXg9YSx0aGlzLmRpcmVjdGl2ZVN0YXJ0PW8sdGhpcy5kaXJlY3RpdmVFbmQ9cix0aGlzLmRpcmVjdGl2ZVN0eWxpbmdMYXN0PWksdGhpcy5wcm9wZXJ0eUJpbmRpbmdzPWMsdGhpcy5mbGFncz1zLHRoaXMucHJvdmlkZXJJbmRleGVzPWwsdGhpcy50YWdOYW1lPW0sdGhpcy5hdHRycz1kLHRoaXMubWVyZ2VkQXR0cnM9Zyx0aGlzLmxvY2FsTmFtZXM9cCx0aGlzLmluaXRpYWxJbnB1dHM9Yix0aGlzLmlucHV0cz11LHRoaXMub3V0cHV0cz1mLHRoaXMudFZpZXdzPWgsdGhpcy5uZXh0PV8sdGhpcy5wcm9qZWN0aW9uTmV4dD1DLHRoaXMuY2hpbGQ9TSx0aGlzLnBhcmVudD1PLHRoaXMucHJvamVjdGlvbj1QLHRoaXMuc3R5bGVzPXgsdGhpcy5zdHlsZXNXaXRob3V0SG9zdD15LHRoaXMucmVzaWR1YWxTdHlsZXM9ayx0aGlzLmNsYXNzZXM9dix0aGlzLmNsYXNzZXNXaXRob3V0SG9zdD13LHRoaXMucmVzaWR1YWxDbGFzc2VzPVMsdGhpcy5jbGFzc0JpbmRpbmdzPUUsdGhpcy5zdHlsZUJpbmRpbmdzPUF9ZGVidWdOb2RlSW5qZWN0b3JQYXRoKHQpe2NvbnN0IG49W107bGV0IGU9amkodGhpcyx0KTtmb3IobmdEZXZNb2RlJiZLbyh0LGUpOy0xIT09ZTspe24ucHVzaChpbCh0WzFdLmRhdGFbZSs4XSx0KSk7Y29uc3QgYT10W2UrOF07YT09PXhpP2U9LTE6KGU9SWkoYSksdD1OaShhLHQpKX1yZXR1cm4gbn1nZXQgdHlwZV8oKXtyZXR1cm4ga2lbdGhpcy50eXBlXXx8YFROb2RlVHlwZS4/JHt0aGlzLnR5cGV9P2B9Z2V0IGZsYWdzXygpe2NvbnN0IHQ9W107cmV0dXJuIDE2JnRoaXMuZmxhZ3MmJnQucHVzaCgiVE5vZGVGbGFncy5oYXNDbGFzc0lucHV0IiksOCZ0aGlzLmZsYWdzJiZ0LnB1c2goIlROb2RlRmxhZ3MuaGFzQ29udGVudFF1ZXJ5IiksMzImdGhpcy5mbGFncyYmdC5wdXNoKCJUTm9kZUZsYWdzLmhhc1N0eWxlSW5wdXQiKSwxMjgmdGhpcy5mbGFncyYmdC5wdXNoKCJUTm9kZUZsYWdzLmhhc0hvc3RCaW5kaW5ncyIpLDImdGhpcy5mbGFncyYmdC5wdXNoKCJUTm9kZUZsYWdzLmlzQ29tcG9uZW50SG9zdCIpLDEmdGhpcy5mbGFncyYmdC5wdXNoKCJUTm9kZUZsYWdzLmlzRGlyZWN0aXZlSG9zdCIpLDY0JnRoaXMuZmxhZ3MmJnQucHVzaCgiVE5vZGVGbGFncy5pc0RldGFjaGVkIiksNCZ0aGlzLmZsYWdzJiZ0LnB1c2goIlROb2RlRmxhZ3MuaXNQcm9qZWN0ZWQiKSx0LmpvaW4oInwiKX1nZXQgdGVtcGxhdGVfKCl7Y29uc3QgdD1bXTtpZih0LnB1c2goIjwiLHRoaXMudGFnTmFtZXx8dGhpcy50eXBlXyksdGhpcy5hdHRycylmb3IobGV0IG49MDtuPHRoaXMuYXR0cnMubGVuZ3RoOyl7Y29uc3QgZT10aGlzLmF0dHJzW24rK107aWYoIm51bWJlciI9PXR5cGVvZiBlKWJyZWFrO2NvbnN0IGE9dGhpcy5hdHRyc1tuKytdO3QucHVzaCgiICIsZSwnPSInLGEsJyInKX1yZXR1cm4gdC5wdXNoKCI+IiksR3ModGhpcy5jaGlsZCx0KSx0LnB1c2goIjwvIix0aGlzLnRhZ05hbWV8fHRoaXMudHlwZV8sIj4iKSx0LmpvaW4oIiIpfWdldCBzdHlsZUJpbmRpbmdzXygpe3JldHVybiBXcyh0aGlzLCExKX1nZXQgY2xhc3NCaW5kaW5nc18oKXtyZXR1cm4gV3ModGhpcywhMCl9Z2V0IHByb3ZpZGVySW5kZXhTdGFydF8oKXtyZXR1cm4gMTA0ODU3NSZ0aGlzLnByb3ZpZGVySW5kZXhlc31nZXQgcHJvdmlkZXJJbmRleEVuZF8oKXtyZXR1cm4gdGhpcy5wcm92aWRlckluZGV4U3RhcnRfKyh0aGlzLnByb3ZpZGVySW5kZXhlcz4+PjIwKX19KHQsZSxhLGksLTEsLTEsLTEsbnVsbCwwLDAsbyxyLG51bGwsbnVsbCx2b2lkIDAsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbixudWxsLG51bGwsbnVsbCx2b2lkIDAsbnVsbCxudWxsLHZvaWQgMCwwLDApOnt0eXBlOmUsaW5kZXg6YSxpbmplY3RvckluZGV4OmksZGlyZWN0aXZlU3RhcnQ6LTEsZGlyZWN0aXZlRW5kOi0xLGRpcmVjdGl2ZVN0eWxpbmdMYXN0Oi0xLHByb3BlcnR5QmluZGluZ3M6bnVsbCxmbGFnczowLHByb3ZpZGVySW5kZXhlczowLHRhZ05hbWU6byxhdHRyczpyLG1lcmdlZEF0dHJzOm51bGwsbG9jYWxOYW1lczpudWxsLGluaXRpYWxJbnB1dHM6dm9pZCAwLGlucHV0czpudWxsLG91dHB1dHM6bnVsbCx0Vmlld3M6bnVsbCxuZXh0Om51bGwscHJvamVjdGlvbk5leHQ6bnVsbCxjaGlsZDpudWxsLHBhcmVudDpuLHByb2plY3Rpb246bnVsbCxzdHlsZXM6bnVsbCxzdHlsZXNXaXRob3V0SG9zdDpudWxsLHJlc2lkdWFsU3R5bGVzOnZvaWQgMCxjbGFzc2VzOm51bGwsY2xhc3Nlc1dpdGhvdXRIb3N0Om51bGwscmVzaWR1YWxDbGFzc2VzOnZvaWQgMCxjbGFzc0JpbmRpbmdzOjAsc3R5bGVCaW5kaW5nczowfTtyZXR1cm4gbmdEZXZNb2RlJiZPYmplY3Quc2VhbChjKSxjfSkodCxpP3I6ciYmci5wYXJlbnQsZSxuLGEsbyk7cmV0dXJuIG51bGw9PT10LmZpcnN0Q2hpbGQmJih0LmZpcnN0Q2hpbGQ9YyksbnVsbCE9PXImJihpJiZudWxsPT1yLmNoaWxkJiZudWxsIT09Yy5wYXJlbnQ/ci5jaGlsZD1jOml8fChyLm5leHQ9YykpLGN9KSh0LHIsZSxhLG8pO3JldHVybiBXcihpLCEwKSxpfWZ1bmN0aW9uIGZsKHQsbixlKXtuZ0Rldk1vZGUmJnZhKFRyKG4pLCEwLCJTaG91bGQgYmUgcnVuIGluIGNyZWF0aW9uIG1vZGUiKSxpaShuKTt0cnl7Y29uc3QgYT10LnZpZXdRdWVyeTtudWxsIT09YSYmbm0oMSxhLGUpO2NvbnN0IG89dC50ZW1wbGF0ZTtudWxsIT09byYmQ2wodCxuLG8sMSxlKSx0LmZpcnN0Q3JlYXRlUGFzcyYmKHQuZmlyc3RDcmVhdGVQYXNzPSExKSx0LnN0YXRpY0NvbnRlbnRRdWVyaWVzJiZnbCh0LG4pLHQuc3RhdGljVmlld1F1ZXJpZXMmJm5tKDIsdC52aWV3UXVlcnksZSk7Y29uc3Qgcj10LmNvbXBvbmVudHM7bnVsbCE9PXImJihmdW5jdGlvbiBhKHQsbil7Zm9yKGxldCBlPTA7ZTxuLmxlbmd0aDtlKyspWGwodCxuW2VdKX0pKG4scil9Y2F0Y2gobil7dGhyb3cgdC5maXJzdENyZWF0ZVBhc3MmJih0LmluY29tcGxldGVGaXJzdFBhc3M9ITApLG59ZmluYWxseXtuWzJdJj0tNSxkaSgpfX1mdW5jdGlvbiBobCh0LG4sZSxhKXtuZ0Rldk1vZGUmJnZhKFRyKG4pLCExLCJTaG91bGQgYmUgcnVuIGluIHVwZGF0ZSBtb2RlIik7Y29uc3Qgbz1uWzJdO2lmKDI1Nj09KDI1NiZvKSlyZXR1cm47aWkobik7Y29uc3Qgcj1xcigpO3RyeXtOcihuKSxRcih0LmJpbmRpbmdTdGFydEluZGV4KSxudWxsIT09ZSYmQ2wodCxuLGUsMixhKTtjb25zdCBpPTM9PSgzJm8pO2lmKCFyKWlmKGkpe2NvbnN0IGU9dC5wcmVPcmRlckNoZWNrSG9va3M7bnVsbCE9PWUmJl9pKG4sZSxudWxsKX1lbHNle2NvbnN0IGU9dC5wcmVPcmRlckhvb2tzO251bGwhPT1lJiZDaShuLGUsMCxudWxsKSxNaShuLDApfWlmKChmdW5jdGlvbiBpKHQpe2ZvcihsZXQgbj15cyh0KTtudWxsIT09bjtuPWtzKG4pKXtpZighblsyXSljb250aW51ZTtjb25zdCB0PW5bOV07bmdEZXZNb2RlJiZUYSh0LCJUcmFuc3BsYW50ZWQgVmlldyBmbGFncyBzZXQgYnV0IG1pc3NpbmcgTU9WRURfVklFV1MiKTtmb3IobGV0IG49MDtuPHQubGVuZ3RoO24rKyl7Y29uc3QgZT10W25dLGE9ZVszXTtuZ0Rldk1vZGUmJllvKGEpLDA9PSgxMDI0JmVbMl0pJiZGcihhLDEpLGVbMl18PTEwMjR9fX0pKG4pLChmdW5jdGlvbiBjKHQpe2ZvcihsZXQgbj15cyh0KTtudWxsIT09bjtuPWtzKG4pKWZvcihsZXQgdD1Jbzt0PG4ubGVuZ3RoO3QrKyl7Y29uc3QgZT1uW3RdLGE9ZVsxXTtuZ0Rldk1vZGUmJlRhKGEsIlRWaWV3IG11c3QgYmUgYWxsb2NhdGVkIiksRHIoZSkmJmhsKGEsZSxhLnRlbXBsYXRlLGVbOF0pfX0pKG4pLG51bGwhPT10LmNvbnRlbnRRdWVyaWVzJiZnbCh0LG4pLCFyKWlmKGkpe2NvbnN0IGU9dC5jb250ZW50Q2hlY2tIb29rcztudWxsIT09ZSYmX2kobixlKX1lbHNle2NvbnN0IGU9dC5jb250ZW50SG9va3M7bnVsbCE9PWUmJkNpKG4sZSwxKSxNaShuLDEpfSEoZnVuY3Rpb24gcyh0LG4pe25nRGV2TW9kZSYmU2EodCxuWzFdLCJgTFZpZXdgIGlzIG5vdCBhc3NvY2lhdGVkIHdpdGggdGhlIGBUVmlld2AhIik7dHJ5e2NvbnN0IGU9dC5leHBhbmRvSW5zdHJ1Y3Rpb25zO2lmKG51bGwhPT1lKXtsZXQgYT10LmV4cGFuZG9TdGFydEluZGV4LG89LTEscj0tMTtmb3IobGV0IHQ9MDt0PGUubGVuZ3RoO3QrKyl7Y29uc3QgaT1lW3RdOyJudW1iZXIiPT10eXBlb2YgaT9pPD0wPyhyPTAtaSxwaShyKSxhKz05K2VbKyt0XSxvPWEpOmErPWk6KG51bGwhPT1pJiYobmdEZXZNb2RlJiZBYShvLDEwNDg1NzYsIlJlYWNoZWQgdGhlIG1heCBudW1iZXIgb2YgaG9zdCBiaW5kaW5ncyIpLHRpKGEsbyksaSgyLG5bb10pKSxvKyspfX19ZmluYWxseXtwaSgtMSl9fSkodCxuKTtjb25zdCBjPXQuY29tcG9uZW50cztudWxsIT09YyYmKGZ1bmN0aW9uIGwodCxuKXtmb3IobGV0IGU9MDtlPG4ubGVuZ3RoO2UrKylxbCh0LG5bZV0pfSkobixjKTtjb25zdCBzPXQudmlld1F1ZXJ5O2lmKG51bGwhPT1zJiZubSgyLHMsYSksIXIpaWYoaSl7Y29uc3QgZT10LnZpZXdDaGVja0hvb2tzO251bGwhPT1lJiZfaShuLGUpfWVsc2V7Y29uc3QgZT10LnZpZXdIb29rcztudWxsIT09ZSYmQ2kobixlLDIpLE1pKG4sMil9ITA9PT10LmZpcnN0VXBkYXRlUGFzcyYmKHQuZmlyc3RVcGRhdGVQYXNzPSExKSxyfHwoblsyXSY9LTczKSwxMDI0Jm5bMl0mJihuWzJdJj0tMTAyNSxGcihuWzNdLC0xKSl9ZmluYWxseXtkaSgpfX1mdW5jdGlvbiBfbCh0LG4sZSxhKXtjb25zdCBvPW5bMTBdLHI9IXFyKCksaT1UcihuKTt0cnl7ciYmIWkmJm8uYmVnaW4mJm8uYmVnaW4oKSxpJiZmbCh0LG4sYSksaGwodCxuLGUsYSl9ZmluYWxseXtyJiYhaSYmby5lbmQmJm8uZW5kKCl9fWZ1bmN0aW9uIENsKHQsbixlLGEsbyl7Y29uc3Qgcj1naSgpO3RyeXtwaSgtMSksMiZhJiZuLmxlbmd0aD5UbyYmU3ModCxuLDAscXIoKSksZShhLG8pfWZpbmFsbHl7cGkocil9fWZ1bmN0aW9uIE1sKHQsbixlKXtpZihMbyhuKSl7Y29uc3QgYT1uLmRpcmVjdGl2ZUVuZDtmb3IobGV0IG89bi5kaXJlY3RpdmVTdGFydDtvPGE7bysrKXtjb25zdCBuPXQuZGF0YVtvXTtuLmNvbnRlbnRRdWVyaWVzJiZuLmNvbnRlbnRRdWVyaWVzKDEsZVtvXSxvKX19fWZ1bmN0aW9uIE9sKHQsbixlKXtIcigpJiYoKGZ1bmN0aW9uIGEodCxuLGUsbyl7Y29uc3Qgcj1lLmRpcmVjdGl2ZVN0YXJ0LGk9ZS5kaXJlY3RpdmVFbmQ7dC5maXJzdENyZWF0ZVBhc3N8fEJpKGUsbiksb3MobyxuKTtjb25zdCBjPWUuaW5pdGlhbElucHV0cztmb3IobGV0IGE9cjthPGk7YSsrKXtjb25zdCBvPXQuZGF0YVthXSxpPVZvKG8pO2kmJihuZ0Rldk1vZGUmJndpKGUsWzJdKSxWbChuLGUsbykpO2NvbnN0IHM9WGkobix0LGEsZSk7b3MocyxuKSxudWxsIT09YyYmVWwobixhLXIscyxvLGUsYyksaSYmKEFyKGUuaW5kZXgsbilbOF09cyl9fSkodCxuLGUsd3IoZSxuKSksMTI4PT0oMTI4JmUuZmxhZ3MpJiYoZnVuY3Rpb24gbyh0LG4sZSl7Y29uc3QgYT1lLmRpcmVjdGl2ZVN0YXJ0LG89ZS5kaXJlY3RpdmVFbmQscj10LmV4cGFuZG9JbnN0cnVjdGlvbnMsaT10LmZpcnN0Q3JlYXRlUGFzcyxjPWUuaW5kZXgtVG8scz0oZnVuY3Rpb24gbCgpe3JldHVybiBMci5sRnJhbWUuY3VycmVudERpcmVjdGl2ZUluZGV4fSkoKTt0cnl7cGkoYyk7Zm9yKGxldCBlPWE7ZTxvO2UrKyl7Y29uc3QgYT10LmRhdGFbZV0sbz1uW2VdO25pKGUpLG51bGwhPT1hLmhvc3RCaW5kaW5nc3x8MCE9PWEuaG9zdFZhcnN8fG51bGwhPT1hLmhvc3RBdHRycz9JbChhLG8pOmkmJnIucHVzaChudWxsKX19ZmluYWxseXtwaSgtMSksbmkocyl9fSkodCxuLGUpKX1mdW5jdGlvbiBQbCh0LG4sZT13cil7Y29uc3QgYT1uLmxvY2FsTmFtZXM7aWYobnVsbCE9PWEpe2xldCBvPW4uaW5kZXgrMTtmb3IobGV0IHI9MDtyPGEubGVuZ3RoO3IrPTIpe2NvbnN0IGk9YVtyKzFdLGM9LTE9PT1pP2Uobix0KTp0W2ldO3RbbysrXT1jfX19ZnVuY3Rpb24geGwodCl7Y29uc3Qgbj10LnRWaWV3O3JldHVybiBudWxsPT09bnx8bi5pbmNvbXBsZXRlRmlyc3RQYXNzP3QudFZpZXc9eWwoMSxudWxsLHQudGVtcGxhdGUsdC5kZWNscyx0LnZhcnMsdC5kaXJlY3RpdmVEZWZzLHQucGlwZURlZnMsdC52aWV3UXVlcnksdC5zY2hlbWFzLHQuY29uc3RzKTpufWZ1bmN0aW9uIHlsKHQsbixlLGEsbyxyLGksYyxzLGwpe25nRGV2TW9kZSYmbmdEZXZNb2RlLnRWaWV3Kys7Y29uc3QgbT1UbythLGQ9bStvLGc9KGZ1bmN0aW9uIHAodCxuKXtjb25zdCBlPW5nRGV2TW9kZT9uZXcgWnM6W107Zm9yKGxldCBhPTA7YTxuO2ErKyllLnB1c2goYTx0P251bGw6T3MpO3JldHVybiBlfSkobSxkKSxiPSJmdW5jdGlvbiI9PXR5cGVvZiBsP2woKTpsLHU9Z1sxXT1uZ0Rldk1vZGU/bmV3IGNsYXNze2NvbnN0cnVjdG9yKHQsbixlLGEsbyxyLGksYyxzLGwsbSxkLGcscCxiLHUsZixoLF8sQyxNLE8sUCx4LHksayx2LHcsUyxFLEEseil7dGhpcy50eXBlPXQsdGhpcy5ibHVlcHJpbnQ9bix0aGlzLnRlbXBsYXRlPWUsdGhpcy5xdWVyaWVzPWEsdGhpcy52aWV3UXVlcnk9byx0aGlzLmRlY2xUTm9kZT1yLHRoaXMuZGF0YT1pLHRoaXMuYmluZGluZ1N0YXJ0SW5kZXg9Yyx0aGlzLmV4cGFuZG9TdGFydEluZGV4PXMsdGhpcy5leHBhbmRvSW5zdHJ1Y3Rpb25zPWwsdGhpcy5maXJzdENyZWF0ZVBhc3M9bSx0aGlzLmZpcnN0VXBkYXRlUGFzcz1kLHRoaXMuc3RhdGljVmlld1F1ZXJpZXM9Zyx0aGlzLnN0YXRpY0NvbnRlbnRRdWVyaWVzPXAsdGhpcy5wcmVPcmRlckhvb2tzPWIsdGhpcy5wcmVPcmRlckNoZWNrSG9va3M9dSx0aGlzLmNvbnRlbnRIb29rcz1mLHRoaXMuY29udGVudENoZWNrSG9va3M9aCx0aGlzLnZpZXdIb29rcz1fLHRoaXMudmlld0NoZWNrSG9va3M9Qyx0aGlzLmRlc3Ryb3lIb29rcz1NLHRoaXMuY2xlYW51cD1PLHRoaXMuY29udGVudFF1ZXJpZXM9UCx0aGlzLmNvbXBvbmVudHM9eCx0aGlzLmRpcmVjdGl2ZVJlZ2lzdHJ5PXksdGhpcy5waXBlUmVnaXN0cnk9ayx0aGlzLmZpcnN0Q2hpbGQ9dix0aGlzLnNjaGVtYXM9dyx0aGlzLmNvbnN0cz1TLHRoaXMuaW5jb21wbGV0ZUZpcnN0UGFzcz1FLHRoaXMuX2RlY2xzPUEsdGhpcy5fdmFycz16fWdldCB0ZW1wbGF0ZV8oKXtjb25zdCB0PVtdO3JldHVybiBHcyh0aGlzLmZpcnN0Q2hpbGQsdCksdC5qb2luKCIiKX1nZXQgdHlwZV8oKXtyZXR1cm4gRG9bdGhpcy50eXBlXXx8YFRWaWV3VHlwZS4/JHt0aGlzLnR5cGV9P2B9Z2V0IGkxOG5TdGFydEluZGV4KCl7cmV0dXJuIFRvK3RoaXMuX2RlY2xzK3RoaXMuX3ZhcnN9fSh0LGcsZSxudWxsLGMsbiwoZnVuY3Rpb24gZih0KXtyZXR1cm4gdm9pZCAwPT09cXMmJihxcz1uZXcgWXMpLHFzLmNvbmNhdCh0KX0pKGcpLmZpbGwobnVsbCxtKSxtLGQsbnVsbCwhMCwhMCwhMSwhMSxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLCJmdW5jdGlvbiI9PXR5cGVvZiByP3IoKTpyLCJmdW5jdGlvbiI9PXR5cGVvZiBpP2koKTppLG51bGwscyxiLCExLGEsbyk6e3R5cGU6dCxibHVlcHJpbnQ6Zyx0ZW1wbGF0ZTplLHF1ZXJpZXM6bnVsbCx2aWV3UXVlcnk6YyxkZWNsVE5vZGU6bixkYXRhOmcuc2xpY2UoKS5maWxsKG51bGwsbSksYmluZGluZ1N0YXJ0SW5kZXg6bSxleHBhbmRvU3RhcnRJbmRleDpkLGV4cGFuZG9JbnN0cnVjdGlvbnM6bnVsbCxmaXJzdENyZWF0ZVBhc3M6ITAsZmlyc3RVcGRhdGVQYXNzOiEwLHN0YXRpY1ZpZXdRdWVyaWVzOiExLHN0YXRpY0NvbnRlbnRRdWVyaWVzOiExLHByZU9yZGVySG9va3M6bnVsbCxwcmVPcmRlckNoZWNrSG9va3M6bnVsbCxjb250ZW50SG9va3M6bnVsbCxjb250ZW50Q2hlY2tIb29rczpudWxsLHZpZXdIb29rczpudWxsLHZpZXdDaGVja0hvb2tzOm51bGwsZGVzdHJveUhvb2tzOm51bGwsY2xlYW51cDpudWxsLGNvbnRlbnRRdWVyaWVzOm51bGwsY29tcG9uZW50czpudWxsLGRpcmVjdGl2ZVJlZ2lzdHJ5OiJmdW5jdGlvbiI9PXR5cGVvZiByP3IoKTpyLHBpcGVSZWdpc3RyeToiZnVuY3Rpb24iPT10eXBlb2YgaT9pKCk6aSxmaXJzdENoaWxkOm51bGwsc2NoZW1hczpzLGNvbnN0czpiLGluY29tcGxldGVGaXJzdFBhc3M6ITF9O3JldHVybiBuZ0Rldk1vZGUmJk9iamVjdC5zZWFsKHUpLHV9ZnVuY3Rpb24ga2wodCxuLGUsYSl7Y29uc3Qgbz1vbShuKTtvLnB1c2goZSksdC5maXJzdENyZWF0ZVBhc3MmJihmdW5jdGlvbiByKHQpe3JldHVybiB0LmNsZWFudXB8fCh0LmNsZWFudXA9bmdEZXZNb2RlP25ldyB0bDpbXSl9KSh0KS5wdXNoKGEsby5sZW5ndGgtMSl9ZnVuY3Rpb24gdmwodCxuLGUpe2ZvcihsZXQgYSBpbiB0KWlmKHQuaGFzT3duUHJvcGVydHkoYSkpe2NvbnN0IG89dFthXTsoZT1udWxsPT09ZT97fTplKS5oYXNPd25Qcm9wZXJ0eShhKT9lW2FdLnB1c2gobixvKTplW2FdPVtuLG9dfXJldHVybiBlfWZ1bmN0aW9uIHdsKHQsbixlLGEsbyxyLGksYyl7bmdEZXZNb2RlJiZFYShvLE9zLCJJbmNvbWluZyB2YWx1ZSBzaG91bGQgbmV2ZXIgYmUgTk9fQ0hBTkdFLiIpO2NvbnN0IHM9d3IobixlKTtsZXQgbCxtPW4uaW5wdXRzO2lmKCFjJiZudWxsIT1tJiYobD1tW2FdKSljbSh0LGUsbCxhLG8pLEhvKG4pJiYoZnVuY3Rpb24gZCh0LG4pe25nRGV2TW9kZSYmWm8odCk7Y29uc3QgZT1BcihuLHQpOzE2JmVbMl18fChlWzJdfD02NCl9KShlLG4uaW5kZXgpLG5nRGV2TW9kZSYmRWwoZSxzLG4udHlwZSxsLG8pO2Vsc2UgaWYoMj09PW4udHlwZSl7aWYoYT0oZnVuY3Rpb24gZyh0KXtyZXR1cm4iY2xhc3MiPT09dD8iY2xhc3NOYW1lIjoiZm9yIj09PXQ/Imh0bWxGb3IiOiJmb3JtYWN0aW9uIj09PXQ/ImZvcm1BY3Rpb24iOiJpbm5lckh0bWwiPT09dD8iaW5uZXJIVE1MIjoicmVhZG9ubHkiPT09dD8icmVhZE9ubHkiOiJ0YWJpbmRleCI9PT10PyJ0YWJJbmRleCI6dH0pKGEpLG5nRGV2TW9kZSl7aWYoKGZ1bmN0aW9uIHAodCl7aWYodC50b0xvd2VyQ2FzZSgpLnN0YXJ0c1dpdGgoIm9uIikpe2NvbnN0IG49YEJpbmRpbmcgdG8gZXZlbnQgcHJvcGVydHkgJyR7dH0nIGlzIGRpc2FsbG93ZWQgZm9yIHNlY3VyaXR5IHJlYXNvbnMsIHBsZWFzZSB1c2UgKCR7dC5zbGljZSgyKX0pPS4uLlxuSWYgJyR7dH0nIGlzIGEgZGlyZWN0aXZlIGlucHV0LCBtYWtlIHN1cmUgdGhlIGRpcmVjdGl2ZSBpcyBpbXBvcnRlZCBieSB0aGUgY3VycmVudCBtb2R1bGUuYDt0aHJvdyBuZXcgRXJyb3Iobil9fSkoYSksIShmdW5jdGlvbiBiKHQsbixlLGEpe3JldHVybiEobnVsbCE9PXQuc2NoZW1hcyYmIShBbCh0LGEudGFnTmFtZSl8fGUgaW4gbnx8emkoZSkpJiYidW5kZWZpbmVkIiE9dHlwZW9mIE5vZGUmJm51bGwhPT1Ob2RlJiZuIGluc3RhbmNlb2YgTm9kZSl9KSh0LHMsYSxuKSlyZXR1cm4gdm9pZCB6bChhLG4pO25nRGV2TW9kZS5yZW5kZXJlclNldFByb3BlcnR5Kyt9bz1udWxsIT1pP2kobyxuLnRhZ05hbWV8fCIiLGEpOm8seHIocik/ci5zZXRQcm9wZXJ0eShzLGEsbyk6emkoYSl8fChzLnNldFByb3BlcnR5P3Muc2V0UHJvcGVydHkoYSxvKTpzW2FdPW8pfWVsc2UgMCE9PW4udHlwZSYmMyE9PW4udHlwZXx8bmdEZXZNb2RlJiYhQWwodCxuLnRhZ05hbWUpJiZ6bChhLG4pfWZ1bmN0aW9uIFNsKHQsbixlLGEsbyl7Y29uc3Qgcj10WzExXTthPShmdW5jdGlvbiBpKHQpe3JldHVybmBuZy1yZWZsZWN0LSR7dD0oZnVuY3Rpb24gbih0KXtyZXR1cm4gdC5yZXBsYWNlKHRzLCgoLi4udCk9PiItIit0WzFdLnRvTG93ZXJDYXNlKCkpKX0pKHQucmVwbGFjZSgvWyRAXS9nLCJfIikpfWB9KShhKTtjb25zdCBjPShmdW5jdGlvbiBzKHQpe3RyeXtyZXR1cm4gbnVsbCE9dD90LnRvU3RyaW5nKCkuc2xpY2UoMCwzMCk6dH1jYXRjaCh0KXtyZXR1cm4iW0VSUk9SXSBFeGNlcHRpb24gd2hpbGUgdHJ5aW5nIHRvIHNlcmlhbGl6ZSB0aGUgdmFsdWUifX0pKG8pO2lmKDI9PT1lKW51bGw9PW8/eHIocik/ci5yZW1vdmVBdHRyaWJ1dGUobixhKTpuLnJlbW92ZUF0dHJpYnV0ZShhKTp4cihyKT9yLnNldEF0dHJpYnV0ZShuLGEsYyk6bi5zZXRBdHRyaWJ1dGUoYSxjKTtlbHNle2NvbnN0IHQ9KGZ1bmN0aW9uIGwodCl7cmV0dXJuIHQucmVwbGFjZShLYywiLeKAiy3igIs+Iil9KShgYmluZGluZ3M9JHtKU09OLnN0cmluZ2lmeSh7W2FdOmN9LG51bGwsMil9YCk7eHIocik/ci5zZXRWYWx1ZShuLHQpOm4udGV4dENvbnRlbnQ9dH19ZnVuY3Rpb24gRWwodCxuLGUsYSxvKXtpZigyPT09ZXx8MD09PWUpZm9yKGxldCByPTA7cjxhLmxlbmd0aDtyKz0yKVNsKHQsbixlLGFbcisxXSxvKX1mdW5jdGlvbiBBbCh0LG4pe2NvbnN0IGU9dC5zY2hlbWFzO2lmKG51bGwhPT1lKWZvcihsZXQgdD0wO3Q8ZS5sZW5ndGg7dCsrKXtjb25zdCBhPWVbdF07aWYoYT09PWljfHxhPT09cmMmJm4mJm4uaW5kZXhPZigiLSIpPi0xKXJldHVybiEwfXJldHVybiExfWZ1bmN0aW9uIHpsKHQsbil7Y29uc29sZS5lcnJvcihgQ2FuJ3QgYmluZCB0byAnJHt0fScgc2luY2UgaXQgaXNuJ3QgYSBrbm93biBwcm9wZXJ0eSBvZiAnJHtuLnRhZ05hbWV9Jy5gKX1mdW5jdGlvbiBSbCh0LG4sZSxhKXtuZ0Rldk1vZGUmJlhvKHQpO2xldCBvPSExO2lmKEhyKCkpe2NvbnN0IHI9KGZ1bmN0aW9uIHIodCxuLGUpe25nRGV2TW9kZSYmWG8odCksbmdEZXZNb2RlJiZ3aShlLFsyLDMsMF0pO2NvbnN0IGE9dC5kaXJlY3RpdmVSZWdpc3RyeTtsZXQgbz1udWxsO2lmKGEpZm9yKGxldCByPTA7cjxhLmxlbmd0aDtyKyspe2NvbnN0IGk9YVtyXTtocyhlLGkuc2VsZWN0b3JzLCExKSYmKG98fChvPW5nRGV2TW9kZT9uZXcgWHM6W10pLFdpKEJpKGUsbiksdCxpLnR5cGUpLFZvKGkpPyhuZ0Rldk1vZGUmJih3aShlLFsyXSxgIiR7ZS50YWdOYW1lfSIgdGFncyBjYW5ub3QgYmUgdXNlZCBhcyBjb21wb25lbnQgaG9zdHMuIFBsZWFzZSB1c2UgYSBkaWZmZXJlbnQgdGFnIHRvIGFjdGl2YXRlIHRoZSAke3RhKGkudHlwZSl9IGNvbXBvbmVudC5gKSwyJmUuZmxhZ3MmJnNyKGUpKSxGbCh0LGUpLG8udW5zaGlmdChpKSk6by5wdXNoKGkpKX1yZXR1cm4gb30pKHQsbixlKSxpPW51bGw9PT1hP251bGw6eyIiOi0xfTtpZihudWxsIT09cil7bGV0IGE9MDtvPSEwLEhsKGUsdC5kYXRhLmxlbmd0aCxyLmxlbmd0aCk7Zm9yKGxldCB0PTA7dDxyLmxlbmd0aDt0Kyspe2NvbnN0IG49clt0XTtuLnByb3ZpZGVyc1Jlc29sdmVyJiZuLnByb3ZpZGVyc1Jlc29sdmVyKG4pfU5sKHQsZSxyLmxlbmd0aCk7bGV0IGM9ITEscz0hMTtmb3IobGV0IG89MDtvPHIubGVuZ3RoO28rKyl7Y29uc3QgbD1yW29dO2UubWVyZ2VkQXR0cnM9UmkoZS5tZXJnZWRBdHRycyxsLmhvc3RBdHRycyksQmwodCxuLGwpLExsKHQuZGF0YS5sZW5ndGgtMSxsLGkpLG51bGwhPT1sLmNvbnRlbnRRdWVyaWVzJiYoZS5mbGFnc3w9OCksbnVsbD09PWwuaG9zdEJpbmRpbmdzJiZudWxsPT09bC5ob3N0QXR0cnMmJjA9PT1sLmhvc3RWYXJzfHwoZS5mbGFnc3w9MTI4KTtjb25zdCBtPWwudHlwZS5wcm90b3R5cGU7IWMmJihtLm5nT25DaGFuZ2VzfHxtLm5nT25Jbml0fHxtLm5nRG9DaGVjaykmJigodC5wcmVPcmRlckhvb2tzfHwodC5wcmVPcmRlckhvb2tzPVtdKSkucHVzaChlLmluZGV4LVRvKSxjPSEwKSxzfHwhbS5uZ09uQ2hhbmdlcyYmIW0ubmdEb0NoZWNrfHwoKHQucHJlT3JkZXJDaGVja0hvb2tzfHwodC5wcmVPcmRlckNoZWNrSG9va3M9W10pKS5wdXNoKGUuaW5kZXgtVG8pLHM9ITApLFRsKHQsbCksYSs9bC5ob3N0VmFyc30hKGZ1bmN0aW9uIGkodCxuKXtuZ0Rldk1vZGUmJlhvKHQpO2NvbnN0IGU9bi5kaXJlY3RpdmVTdGFydCxhPW4uZGlyZWN0aXZlRW5kLG89dC5kYXRhLHI9bi5hdHRycyxpPW5nRGV2TW9kZT9uZXcgS3M6W107bGV0IGM9bnVsbCxzPW51bGw7Zm9yKGxldCB0PWU7dDxhO3QrKyl7Y29uc3QgZT1vW3RdLGE9ZS5pbnB1dHMsbD1udWxsPT09cnx8Z3Mobik/bnVsbDpXbChhLHIpO2kucHVzaChsKSxjPXZsKGEsdCxjKSxzPXZsKGUub3V0cHV0cyx0LHMpfW51bGwhPT1jJiYoYy5oYXNPd25Qcm9wZXJ0eSgiY2xhc3MiKSYmKG4uZmxhZ3N8PTE2KSxjLmhhc093blByb3BlcnR5KCJzdHlsZSIpJiYobi5mbGFnc3w9MzIpKSxuLmluaXRpYWxJbnB1dHM9aSxuLmlucHV0cz1jLG4ub3V0cHV0cz1zfSkodCxlKSxEbCh0LG4sYSl9aSYmKGZ1bmN0aW9uIGModCxuLGUpe2lmKG4pe2NvbnN0IGE9dC5sb2NhbE5hbWVzPW5nRGV2TW9kZT9uZXcgUXM6W107Zm9yKGxldCB0PTA7dDxuLmxlbmd0aDt0Kz0yKXtjb25zdCBvPWVbblt0KzFdXTtpZihudWxsPT1vKXRocm93IG5ldyBFcnJvcihgRXhwb3J0IG9mIG5hbWUgJyR7blt0KzFdfScgbm90IGZvdW5kIWApO2EucHVzaChuW3RdLG8pfX19KShlLGEsaSl9cmV0dXJuIGUubWVyZ2VkQXR0cnM9UmkoZS5tZXJnZWRBdHRycyxlLmF0dHJzKSxvfWZ1bmN0aW9uIFRsKHQsbil7bmdEZXZNb2RlJiZYbyh0KTtjb25zdCBlPXQuZXhwYW5kb0luc3RydWN0aW9ucztlLnB1c2gobi5ob3N0QmluZGluZ3MpLDAhPT1uLmhvc3RWYXJzJiZlLnB1c2gobi5ob3N0VmFycyl9ZnVuY3Rpb24gRGwodCxuLGUpe25nRGV2TW9kZSYmWG8odCksbmdEZXZNb2RlJiZTYSh0LG5bMV0sImBMVmlld2AgbXVzdCBiZSBhc3NvY2lhdGVkIHdpdGggYFRWaWV3YCEiKTtmb3IobGV0IGE9MDthPGU7YSsrKW4ucHVzaChPcyksdC5ibHVlcHJpbnQucHVzaChPcyksdC5kYXRhLnB1c2gobnVsbCl9ZnVuY3Rpb24gSWwodCxuKXtudWxsIT09dC5ob3N0QmluZGluZ3MmJnQuaG9zdEJpbmRpbmdzKDEsbil9ZnVuY3Rpb24gTmwodCxuLGUpe25nRGV2TW9kZSYmdmEodC5maXJzdENyZWF0ZVBhc3MsITAsIkV4cGFuZG8gYmxvY2sgc2hvdWxkIG9ubHkgYmUgZ2VuZXJhdGVkIG9uIGZpcnN0IGNyZWF0ZSBwYXNzLiIpO2NvbnN0IGE9VG8tbi5pbmRleCxvPXQuZGF0YS5sZW5ndGgtKDEwNDg1NzUmbi5wcm92aWRlckluZGV4ZXMpOyh0LmV4cGFuZG9JbnN0cnVjdGlvbnN8fCh0LmV4cGFuZG9JbnN0cnVjdGlvbnM9W10pKS5wdXNoKGEsbyxlKX1mdW5jdGlvbiBGbCh0LG4pe25nRGV2TW9kZSYmWG8odCksbi5mbGFnc3w9MiwodC5jb21wb25lbnRzfHwodC5jb21wb25lbnRzPW5nRGV2TW9kZT9uZXcgSnM6W10pKS5wdXNoKG4uaW5kZXgpfWZ1bmN0aW9uIExsKHQsbixlKXtpZihlKXtpZihuLmV4cG9ydEFzKWZvcihsZXQgYT0wO2E8bi5leHBvcnRBcy5sZW5ndGg7YSsrKWVbbi5leHBvcnRBc1thXV09dDtWbyhuKSYmKGVbIiJdPXQpfX1mdW5jdGlvbiBIbCh0LG4sZSl7bmdEZXZNb2RlJiZ3YShlLHQuZGlyZWN0aXZlRW5kLXQuZGlyZWN0aXZlU3RhcnQsIlJlYWNoZWQgdGhlIG1heCBudW1iZXIgb2YgZGlyZWN0aXZlcyIpLHQuZmxhZ3N8PTEsdC5kaXJlY3RpdmVTdGFydD1uLHQuZGlyZWN0aXZlRW5kPW4rZSx0LnByb3ZpZGVySW5kZXhlcz1ufWZ1bmN0aW9uIEJsKHQsbixlKXt0LmRhdGEucHVzaChlKTtjb25zdCBhPWUuZmFjdG9yeXx8KGUuZmFjdG9yeT16byhlLnR5cGUsITApKSxvPW5ldyB5aShhLFZvKGUpLG51bGwpO3QuYmx1ZXByaW50LnB1c2gobyksbi5wdXNoKG8pfWZ1bmN0aW9uIFZsKHQsbixlKXtjb25zdCBhPXdyKG4sdCksbz14bChlKSxyPXRbMTBdLGk9SmwodCxibCh0LG8sbnVsbCxlLm9uUHVzaD82NDoxNixhLG4scixyLmNyZWF0ZVJlbmRlcmVyKGEsZSksbnVsbCxudWxsKSk7dFtuLmluZGV4XT1pfWZ1bmN0aW9uIGpsKHQsbixlLGEsbyxyKXtuZ0Rldk1vZGUmJihFYShhLE9zLCJJbmNvbWluZyB2YWx1ZSBzaG91bGQgbmV2ZXIgYmUgTk9fQ0hBTkdFLiIpLChmdW5jdGlvbiBpKHQpe2lmKHQudG9Mb3dlckNhc2UoKS5zdGFydHNXaXRoKCJvbiIpKXtjb25zdCBuPWBCaW5kaW5nIHRvIGV2ZW50IGF0dHJpYnV0ZSAnJHt0fScgaXMgZGlzYWxsb3dlZCBmb3Igc2VjdXJpdHkgcmVhc29ucywgcGxlYXNlIHVzZSAoJHt0LnNsaWNlKDIpfSk9Li4uYDt0aHJvdyBuZXcgRXJyb3Iobil9fSkoZSksKGZ1bmN0aW9uIGModCxuLGUpe1RhKHQsInNob3VsZCBiZSBjYWxsZWQgd2l0aCBhIFROb2RlIiksdmEobi5zb21lKChuPT50LnR5cGU9PT1uKSksITEsbnVsbCE9ZT9lOmBTaG91bGQgbm90IGJlIG9uZSBvZiAke24ubWFwKFNpKS5qb2luKCIsICIpfSBidXQgZ290ICR7U2kodC50eXBlKX1gKX0pKHQsWzAsM10sYEF0dGVtcHRlZCB0byBzZXQgYXR0cmlidXRlIFxgJHtlfVxgIG9uIGEgY29udGFpbmVyIG5vZGUuIEhvc3QgYmluZGluZ3MgYXJlIG5vdCB2YWxpZCBvbiBuZy1jb250YWluZXIgb3IgbmctdGVtcGxhdGUuYCkpO2NvbnN0IHM9d3IodCxuKSxsPW5bMTFdO2lmKG51bGw9PWEpbmdEZXZNb2RlJiZuZ0Rldk1vZGUucmVuZGVyZXJSZW1vdmVBdHRyaWJ1dGUrKyx4cihsKT9sLnJlbW92ZUF0dHJpYnV0ZShzLGUscik6cy5yZW1vdmVBdHRyaWJ1dGUoZSk7ZWxzZXtuZ0Rldk1vZGUmJm5nRGV2TW9kZS5yZW5kZXJlclNldEF0dHJpYnV0ZSsrO2NvbnN0IG49bnVsbD09bz8kbyhhKTpvKGEsdC50YWdOYW1lfHwiIixlKTt4cihsKT9sLnNldEF0dHJpYnV0ZShzLGUsbixyKTpyP3Muc2V0QXR0cmlidXRlTlMocixlLG4pOnMuc2V0QXR0cmlidXRlKGUsbil9fWZ1bmN0aW9uIFVsKHQsbixlLGEsbyxyKXtjb25zdCBpPXJbbl07aWYobnVsbCE9PWkpe2NvbnN0IG49YS5zZXRJbnB1dDtmb3IobGV0IHI9MDtyPGkubGVuZ3RoOyl7Y29uc3QgYz1pW3IrK10scz1pW3IrK10sbD1pW3IrK107bnVsbCE9PW4/YS5zZXRJbnB1dChlLGwsYyxzKTplW3NdPWwsbmdEZXZNb2RlJiZTbCh0LHdyKG8sdCksby50eXBlLHMsbCl9fX1mdW5jdGlvbiBXbCh0LG4pe2xldCBlPW51bGwsYT0wO2Zvcig7YTxuLmxlbmd0aDspe2NvbnN0IG89blthXTtpZigwIT09bylpZig1IT09byl7aWYoIm51bWJlciI9PXR5cGVvZiBvKWJyZWFrO3QuaGFzT3duUHJvcGVydHkobykmJihudWxsPT09ZSYmKGU9W10pLGUucHVzaChvLHRbb10sblthKzFdKSksYSs9Mn1lbHNlIGErPTI7ZWxzZSBhKz00fXJldHVybiBlfWNvbnN0IEdsPSgidW5kZWZpbmVkIj09dHlwZW9mIG5nRGV2TW9kZXx8bmdEZXZNb2RlKSYmUGEoKSYmJGMoIkxDb250YWluZXIiKTtmdW5jdGlvbiBZbCh0LG4sZSxhKXtuZ0Rldk1vZGUmJlpvKG4pLG5nRGV2TW9kZSYmIXhyKG5bMTFdKSYmSWEoZSk7Y29uc3Qgbz1uZXcobmdEZXZNb2RlP0dsOkFycmF5KSh0LCEwLCExLG4sbnVsbCwwLGEsZSxudWxsLG51bGwpO3JldHVybiBuZ0Rldk1vZGUmJnZhKG8ubGVuZ3RoLElvLCJTaG91bGQgYWxsb2NhdGUgY29ycmVjdCBudW1iZXIgb2Ygc2xvdHMgZm9yIExDb250YWluZXIgaGVhZGVyLiIpLG5nRGV2TW9kZSYmKGZ1bmN0aW9uIHIodCl7RnModCxuZXcgbWwodCkpfSkobyksb31mdW5jdGlvbiBxbCh0LG4pe25nRGV2TW9kZSYmdmEoVHIodCksITEsIlNob3VsZCBiZSBydW4gaW4gdXBkYXRlIG1vZGUiKTtjb25zdCBlPUFyKG4sdCk7aWYoRHIoZSkpe2NvbnN0IHQ9ZVsxXTs4MCZlWzJdP2hsKHQsZSx0LnRlbXBsYXRlLGVbOF0pOmVbNV0+MCYmWmwoZSl9fWZ1bmN0aW9uIFpsKHQpe2ZvcihsZXQgbj15cyh0KTtudWxsIT09bjtuPWtzKG4pKWZvcihsZXQgdD1Jbzt0PG4ubGVuZ3RoO3QrKyl7Y29uc3QgZT1uW3RdO2lmKDEwMjQmZVsyXSl7Y29uc3QgdD1lWzFdO25nRGV2TW9kZSYmVGEodCwiVFZpZXcgbXVzdCBiZSBhbGxvY2F0ZWQiKSxobCh0LGUsdC50ZW1wbGF0ZSxlWzhdKX1lbHNlIGVbNV0+MCYmWmwoZSl9Y29uc3Qgbj10WzFdLmNvbXBvbmVudHM7aWYobnVsbCE9PW4pZm9yKGxldCBlPTA7ZTxuLmxlbmd0aDtlKyspe2NvbnN0IGE9QXIobltlXSx0KTtEcihhKSYmYVs1XT4wJiZabChhKX19ZnVuY3Rpb24gWGwodCxuKXtuZ0Rldk1vZGUmJnZhKFRyKHQpLCEwLCJTaG91bGQgYmUgcnVuIGluIGNyZWF0aW9uIG1vZGUiKTtjb25zdCBlPUFyKG4sdCksYT1lWzFdOyEoZnVuY3Rpb24gbyh0LG4pe2ZvcihsZXQgZT1uLmxlbmd0aDtlPHQuYmx1ZXByaW50Lmxlbmd0aDtlKyspbi5wdXNoKHQuYmx1ZXByaW50W2VdKX0pKGEsZSksZmwoYSxlLGVbOF0pfWZ1bmN0aW9uIEpsKHQsbil7cmV0dXJuIHRbMTNdP3RbMTRdWzRdPW46dFsxM109bix0WzE0XT1uLG59ZnVuY3Rpb24gUWwodCl7Zm9yKDt0Oyl7dFsyXXw9NjQ7Y29uc3Qgbj1Qcyh0KTtpZihqbyh0KSYmIW4pcmV0dXJuIHQ7dD1ufXJldHVybiBudWxsfWZ1bmN0aW9uIEtsKHQpe2ZvcihsZXQgbj0wO248dC5jb21wb25lbnRzLmxlbmd0aDtuKyspe2NvbnN0IGU9dC5jb21wb25lbnRzW25dLGE9UnIoZSksbz1hWzFdO19sKG8sYSxvLnRlbXBsYXRlLGUpfX1mdW5jdGlvbiAkbCh0LG4sZSl7Y29uc3QgYT1uWzEwXTthLmJlZ2luJiZhLmJlZ2luKCk7dHJ5e2hsKHQsbix0LnRlbXBsYXRlLGUpfWNhdGNoKHQpe3Rocm93IGltKG4sdCksdH1maW5hbGx5e2EuZW5kJiZhLmVuZCgpfX1mdW5jdGlvbiB0bSh0KXtLbCh0WzhdKX1mdW5jdGlvbiBubSh0LG4sZSl7bmdEZXZNb2RlJiZUYShuLCJWaWV3IHF1ZXJpZXMgZnVuY3Rpb24gdG8gZXhlY3V0ZSBtdXN0IGJlIGRlZmluZWQuIiksb2koMCksbih0LGUpfWZ1bmN0aW9uIGVtKHQsbixlLGEsLi4ubyl7aWYobnVsbD09PXRbYV0mJihudWxsPT1uLmlucHV0c3x8IW4uaW5wdXRzW2VdKSl7KG4ucHJvcGVydHlCaW5kaW5nc3x8KG4ucHJvcGVydHlCaW5kaW5ncz1bXSkpLnB1c2goYSk7bGV0IHI9ZTtvLmxlbmd0aD4wJiYocis9cnIrby5qb2luKHJyKSksdFthXT1yfX1jb25zdCBhbT1kbDtmdW5jdGlvbiBvbSh0KXtyZXR1cm4gdFs3XXx8KHRbN109bmdEZXZNb2RlP25ldyAkczpbXSl9ZnVuY3Rpb24gcm0odCxuLGUpe3JldHVybihudWxsPT09dHx8Vm8odCkpJiYoZT0oZnVuY3Rpb24gYSh0KXtmb3IoO0FycmF5LmlzQXJyYXkodCk7KXtpZigib2JqZWN0Ij09dHlwZW9mIHRbMV0pcmV0dXJuIHQ7dD10WzBdfXJldHVybiBudWxsfSkoZVtuLmluZGV4XSkpLGVbMTFdfWZ1bmN0aW9uIGltKHQsbil7Y29uc3QgZT10WzldLGE9ZT9lLmdldChvYyxudWxsKTpudWxsO2EmJmEuaGFuZGxlRXJyb3Iobil9ZnVuY3Rpb24gY20odCxuLGUsYSxvKXtmb3IobGV0IHI9MDtyPGUubGVuZ3RoOyl7Y29uc3QgaT1lW3IrK10sYz1lW3IrK10scz1uW2ldO25nRGV2TW9kZSYmTmEobixpKTtjb25zdCBsPXQuZGF0YVtpXTtudWxsIT09bC5zZXRJbnB1dD9sLnNldElucHV0KHMsbyxhLGMpOnNbY109b319ZnVuY3Rpb24gc20odCxuLGUpe25nRGV2TW9kZSYmRWEoZSxPcywidmFsdWUgc2hvdWxkIG5vdCBiZSBOT19DSEFOR0UiKSxuZ0Rldk1vZGUmJk5hKHQsbitUbyk7Y29uc3QgYT12cihuLHQpO25nRGV2TW9kZSYmVGEoYSwibmF0aXZlIGVsZW1lbnQgc2hvdWxkIGV4aXN0IiksbmdEZXZNb2RlJiZuZ0Rldk1vZGUucmVuZGVyZXJTZXRUZXh0Kys7Y29uc3Qgbz10WzExXTt4cihvKT9vLnNldFZhbHVlKGEsZSk6YS50ZXh0Q29udGVudD1lfWZ1bmN0aW9uIGxtKHQsbixlLGEsbyl7aWYobnVsbCE9YSl7bGV0IHIsaT0hMTtGbyhhKT9yPWE6Tm8oYSkmJihpPSEwLG5nRGV2TW9kZSYmVGEoYVswXSwiSE9TVCBtdXN0IGJlIGRlZmluZWQgZm9yIGEgY29tcG9uZW50IExWaWV3IiksYT1hWzBdKTtjb25zdCBjPWtyKGEpO25nRGV2TW9kZSYmIXhyKG4pJiZJYShjKSwwPT09dCYmbnVsbCE9PWU/bnVsbD09bz9obShuLGUsYyk6Zm0obixlLGMsb3x8bnVsbCk6MT09PXQmJm51bGwhPT1lP2ZtKG4sZSxjLG98fG51bGwpOjI9PT10P3ltKG4sYyxpKTozPT09dCYmKG5nRGV2TW9kZSYmbmdEZXZNb2RlLnJlbmRlcmVyRGVzdHJveU5vZGUrKyxuLmRlc3Ryb3lOb2RlKGMpKSxudWxsIT1yJiYoZnVuY3Rpb24gcih0LG4sZSxhLG8pe25nRGV2TW9kZSYmWW8oZSk7Y29uc3Qgcj1lWzddO3IhPT1rcihlKSYmbG0obix0LGEscixvKTtmb3IobGV0IG89SW87bzxlLmxlbmd0aDtvKyspe2NvbnN0IGk9ZVtvXTt2bShpWzFdLGksdCxuLGEscil9fSkobix0LHIsZSxvKX19ZnVuY3Rpb24gbW0odCxuKXtyZXR1cm4gbmdEZXZNb2RlJiZuZ0Rldk1vZGUucmVuZGVyZXJDcmVhdGVUZXh0Tm9kZSsrLG5nRGV2TW9kZSYmbmdEZXZNb2RlLnJlbmRlcmVyU2V0VGV4dCsrLHhyKG4pP24uY3JlYXRlVGV4dCh0KTpuLmNyZWF0ZVRleHROb2RlKHQpfWZ1bmN0aW9uIGRtKHQsbil7bmdEZXZNb2RlJiZZbyh0KSxuZ0Rldk1vZGUmJlRhKHRbOV0sIkEgcHJvamVjdGVkIHZpZXcgc2hvdWxkIGJlbG9uZyB0byBhIG5vbi1lbXB0eSBwcm9qZWN0ZWQgdmlld3MgY29sbGVjdGlvbiIpO2NvbnN0IGU9dFs5XSxhPWUuaW5kZXhPZihuKSxvPW5bM107bmdEZXZNb2RlJiZZbyhvKSwxMDI0Jm5bMl0mJihuWzJdJj0tMTAyNSxGcihvLC0xKSksZS5zcGxpY2UoYSwxKX1mdW5jdGlvbiBnbSh0LG4pe2lmKHQubGVuZ3RoPD1JbylyZXR1cm47Y29uc3QgZT1JbytuLGE9dFtlXTtpZihhKXtjb25zdCBvPWFbMTddO251bGwhPT1vJiZvIT09dCYmZG0obyxhKSxuPjAmJih0W2UtMV1bNF09YVs0XSk7Y29uc3Qgcj1pbyh0LElvK24pOyEoZnVuY3Rpb24gbyh0LG4pe3ZtKHQsbixuWzExXSwyLG51bGwsbnVsbCksblswXT1udWxsLG5bNl09bnVsbH0pKGFbMV0sYSk7Y29uc3QgaT1yWzE5XTtudWxsIT09aSYmaS5kZXRhY2hWaWV3KHJbMV0pLGFbM109bnVsbCxhWzRdPW51bGwsYVsyXSY9LTEyOX1yZXR1cm4gYX1mdW5jdGlvbiBwbSh0LG4pe2lmKCEoMjU2Jm5bMl0pKXtjb25zdCBlPW5bMTFdO3hyKGUpJiZlLmRlc3Ryb3lOb2RlJiZ2bSh0LG4sZSwzLG51bGwsbnVsbCksKGZ1bmN0aW9uIGUodCl7bGV0IG49dFsxM107aWYoIW4pcmV0dXJuIGJtKHRbMV0sdCk7Zm9yKDtuOyl7bGV0IGU9bnVsbDtpZihObyhuKSllPW5bMTNdO2Vsc2V7bmdEZXZNb2RlJiZZbyhuKTtjb25zdCB0PW5bMTBdO3QmJihlPXQpfWlmKCFlKXtmb3IoO24mJiFuWzRdJiZuIT09dDspTm8obikmJmJtKG5bMV0sbiksbj1uWzNdO251bGw9PT1uJiYobj10KSxObyhuKSYmYm0oblsxXSxuKSxlPW4mJm5bNF19bj1lfX0pKG4pfX1mdW5jdGlvbiBibSh0LG4pe2lmKCEoMjU2Jm5bMl0pKXtuWzJdJj0tMTI5LG5bMl18PTI1NiwoZnVuY3Rpb24gZSh0LG4pe2xldCBlO2lmKG51bGwhPXQmJm51bGwhPShlPXQuZGVzdHJveUhvb2tzKSlmb3IobGV0IHQ9MDt0PGUubGVuZ3RoO3QrPTIpe2NvbnN0IGE9bltlW3RdXTtpZighKGEgaW5zdGFuY2VvZiB5aSkpe2NvbnN0IG49ZVt0KzFdO2lmKEFycmF5LmlzQXJyYXkobikpZm9yKGxldCB0PTA7dDxuLmxlbmd0aDt0Kz0yKW5bdCsxXS5jYWxsKGFbblt0XV0pO2Vsc2Ugbi5jYWxsKGEpfX19KSh0LG4pLChmdW5jdGlvbiBhKHQsbil7Y29uc3QgZT10LmNsZWFudXA7aWYobnVsbCE9PWUpe2NvbnN0IHQ9bls3XTtmb3IobGV0IGE9MDthPGUubGVuZ3RoLTE7YSs9MilpZigic3RyaW5nIj09dHlwZW9mIGVbYV0pe2NvbnN0IG89ZVthKzFdLHI9ImZ1bmN0aW9uIj09dHlwZW9mIG8/byhuKTprcihuW29dKSxpPXRbZVthKzJdXSxjPWVbYSszXTsiYm9vbGVhbiI9PXR5cGVvZiBjP3IucmVtb3ZlRXZlbnRMaXN0ZW5lcihlW2FdLGksYyk6Yz49MD90W2NdKCk6dFstY10udW5zdWJzY3JpYmUoKSxhKz0yfWVsc2UgZVthXS5jYWxsKHRbZVthKzFdXSk7bls3XT1udWxsfX0pKHQsbiksMT09PW5bMV0udHlwZSYmeHIoblsxMV0pJiYobmdEZXZNb2RlJiZuZ0Rldk1vZGUucmVuZGVyZXJEZXN0cm95KyssblsxMV0uZGVzdHJveSgpKTtjb25zdCBlPW5bMTddO2lmKG51bGwhPT1lJiZGbyhuWzNdKSl7ZSE9PW5bM10mJmRtKGUsbik7Y29uc3QgYT1uWzE5XTtudWxsIT09YSYmYS5kZXRhY2hWaWV3KHQpfX19ZnVuY3Rpb24gdW0odCxuLGUpe2xldCBhPW4ucGFyZW50O2Zvcig7bnVsbCE9YSYmKDM9PT1hLnR5cGV8fDQ9PT1hLnR5cGUpOylhPShuPWEpLnBhcmVudDtpZihudWxsPT09YSlyZXR1cm4gZVswXTtpZihuJiY0PT09bi50eXBlJiY0Jm4uZmxhZ3MpcmV0dXJuIHdyKG4sZSkucGFyZW50Tm9kZTtpZihuZ0Rldk1vZGUmJnZpKGEsMiksMiZhLmZsYWdzKXtjb25zdCBuPXQuZGF0YSxlPW5bblthLmluZGV4XS5kaXJlY3RpdmVTdGFydF0uZW5jYXBzdWxhdGlvbjtpZihlIT09Ym8uU2hhZG93RG9tJiZlIT09Ym8uTmF0aXZlKXJldHVybiBudWxsfXJldHVybiB3cihhLGUpfWZ1bmN0aW9uIGZtKHQsbixlLGEpe25nRGV2TW9kZSYmbmdEZXZNb2RlLnJlbmRlcmVySW5zZXJ0QmVmb3JlKysseHIodCk/dC5pbnNlcnRCZWZvcmUobixlLGEpOm4uaW5zZXJ0QmVmb3JlKGUsYSwhMCl9ZnVuY3Rpb24gaG0odCxuLGUpe25nRGV2TW9kZSYmbmdEZXZNb2RlLnJlbmRlcmVyQXBwZW5kQ2hpbGQrKyxuZ0Rldk1vZGUmJlRhKG4sInBhcmVudCBub2RlIG11c3QgYmUgZGVmaW5lZCIpLHhyKHQpP3QuYXBwZW5kQ2hpbGQobixlKTpuLmFwcGVuZENoaWxkKGUpfWZ1bmN0aW9uIF9tKHQsbixlLGEpe251bGwhPT1hP2ZtKHQsbixlLGEpOmhtKHQsbixlKX1mdW5jdGlvbiBDbSh0LG4pe3JldHVybiB4cih0KT90LnBhcmVudE5vZGUobik6bi5wYXJlbnROb2RlfWZ1bmN0aW9uIE1tKHQsbil7cmV0dXJuIDM9PT10LnR5cGV8fDQ9PT10LnR5cGU/d3IodCxuKTpudWxsfWZ1bmN0aW9uIE9tKHQsbixlLGEpe2NvbnN0IG89dW0odCxhLG4pO2lmKG51bGwhPW8pe2NvbnN0IHQ9blsxMV0scj1NbShhLnBhcmVudHx8bls2XSxuKTtpZihBcnJheS5pc0FycmF5KGUpKWZvcihsZXQgbj0wO248ZS5sZW5ndGg7bisrKV9tKHQsbyxlW25dLHIpO2Vsc2UgX20odCxvLGUscil9fWZ1bmN0aW9uIFBtKHQsbil7aWYobnVsbCE9PW4pe25nRGV2TW9kZSYmd2kobixbMiwwLDMsNCwxXSk7Y29uc3QgZT1uLnR5cGU7aWYoMj09PWUpcmV0dXJuIHdyKG4sdCk7aWYoMD09PWUpcmV0dXJuIHhtKC0xLHRbbi5pbmRleF0pO2lmKDM9PT1lfHw0PT09ZSl7Y29uc3QgZT1uLmNoaWxkO2lmKG51bGwhPT1lKXJldHVybiBQbSh0LGUpO3tjb25zdCBlPXRbbi5pbmRleF07cmV0dXJuIEZvKGUpP3htKC0xLGUpOmtyKGUpfX17Y29uc3QgZT10WzE2XSxhPWVbNl0sbz1QcyhlKSxyPWEucHJvamVjdGlvbltuLnByb2plY3Rpb25dO3JldHVybiBudWxsIT1yP1BtKG8scik6UG0odCxuLm5leHQpfX1yZXR1cm4gbnVsbH1mdW5jdGlvbiB4bSh0LG4pe2NvbnN0IGU9SW8rdCsxO2lmKGU8bi5sZW5ndGgpe2NvbnN0IHQ9bltlXSxhPXRbMV0uZmlyc3RDaGlsZDtpZihudWxsIT09YSlyZXR1cm4gUG0odCxhKX1yZXR1cm4gbls3XX1mdW5jdGlvbiB5bSh0LG4sZSl7Y29uc3QgYT1DbSh0LG4pO2EmJihmdW5jdGlvbiBvKHQsbixlLGEpe3hyKHQpP3QucmVtb3ZlQ2hpbGQobixlLGEpOm4ucmVtb3ZlQ2hpbGQoZSl9KSh0LGEsbixlKX1mdW5jdGlvbiBrbSh0LG4sZSxhLG8scixpKXtmb3IoO251bGwhPWU7KXtuZ0Rldk1vZGUmJlVvKGUsYSksbmdEZXZNb2RlJiZ3aShlLFswLDIsMywxLDRdKTtjb25zdCBjPWFbZS5pbmRleF0scz1lLnR5cGU7aSYmMD09PW4mJihjJiZvcyhrcihjKSxhKSxlLmZsYWdzfD00KSw2NCE9KDY0JmUuZmxhZ3MpJiYoMz09PXN8fDQ9PT1zPyhrbSh0LG4sZS5jaGlsZCxhLG8sciwhMSksbG0obix0LG8sYyxyKSk6MT09PXM/U20odCxuLGEsZSxvLHIpOihuZ0Rldk1vZGUmJndpKGUsWzIsMF0pLGxtKG4sdCxvLGMscikpKSxlPWk/ZS5wcm9qZWN0aW9uTmV4dDplLm5leHR9fWZ1bmN0aW9uIHZtKHQsbixlLGEsbyxyKXtrbShlLGEsdC5maXJzdENoaWxkLG4sbyxyLCExKX1mdW5jdGlvbiB3bSh0LG4sZSl7U20oblsxMV0sMCxuLGUsdW0odCxlLG4pLE1tKGUucGFyZW50fHxuWzZdLG4pKX1mdW5jdGlvbiBTbSh0LG4sZSxhLG8scil7Y29uc3QgaT1lWzE2XSxjPWlbNl07bmdEZXZNb2RlJiZ2YSh0eXBlb2YgYS5wcm9qZWN0aW9uLCJudW1iZXIiLCJleHBlY3RpbmcgcHJvamVjdGlvbiBpbmRleCIpO2NvbnN0IHM9Yy5wcm9qZWN0aW9uW2EucHJvamVjdGlvbl07aWYoQXJyYXkuaXNBcnJheShzKSlmb3IobGV0IGU9MDtlPHMubGVuZ3RoO2UrKylsbShuLHQsbyxzW2VdLHIpO2Vsc2Uga20odCxuLHMsaVszXSxvLHIsITApfWZ1bmN0aW9uIEVtKHQsbixlKXtuZ0Rldk1vZGUmJmthKGUsIiduZXdWYWx1ZScgc2hvdWxkIGJlIGEgc3RyaW5nIikseHIodCk/dC5zZXRBdHRyaWJ1dGUobiwic3R5bGUiLGUpOm4uc3R5bGUuY3NzVGV4dD1lLG5nRGV2TW9kZSYmbmdEZXZNb2RlLnJlbmRlcmVyU2V0U3R5bGUrK31mdW5jdGlvbiBBbSh0LG4sZSl7bmdEZXZNb2RlJiZrYShlLCInbmV3VmFsdWUnIHNob3VsZCBiZSBhIHN0cmluZyIpLHhyKHQpPyIiPT09ZT90LnJlbW92ZUF0dHJpYnV0ZShuLCJjbGFzcyIpOnQuc2V0QXR0cmlidXRlKG4sImNsYXNzIixlKTpuLmNsYXNzTmFtZT1lLG5nRGV2TW9kZSYmbmdEZXZNb2RlLnJlbmRlcmVyU2V0Q2xhc3NOYW1lKyt9Ci8qKgogICAgICogQGxpY2Vuc2UKICAgICAqIENvcHlyaWdodCBHb29nbGUgTExDIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCiAgICAgKgogICAgICogVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYW4gTUlULXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKICAgICAqIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUgYXQgaHR0cHM6Ly9hbmd1bGFyLmlvL2xpY2Vuc2UKICAgICAqL2NsYXNzIHpte2NvbnN0cnVjdG9yKHQsbil7dGhpcy5fbFZpZXc9dCx0aGlzLl9jZFJlZkluamVjdGluZ1ZpZXc9bix0aGlzLl9hcHBSZWY9bnVsbCx0aGlzLl92aWV3Q29udGFpbmVyUmVmPW51bGx9Z2V0IHJvb3ROb2Rlcygpe2NvbnN0IHQ9dGhpcy5fbFZpZXcsbj10WzFdO3JldHVybiBUbShuLHQsbi5maXJzdENoaWxkLFtdKX1nZXQgY29udGV4dCgpe3JldHVybiB0aGlzLl9sVmlld1s4XX1nZXQgZGVzdHJveWVkKCl7cmV0dXJuIDI1Nj09KDI1NiZ0aGlzLl9sVmlld1syXSl9ZGVzdHJveSgpe2lmKHRoaXMuX2FwcFJlZil0aGlzLl9hcHBSZWYuZGV0YWNoVmlldyh0aGlzKTtlbHNlIGlmKHRoaXMuX3ZpZXdDb250YWluZXJSZWYpe2NvbnN0IHQ9dGhpcy5fdmlld0NvbnRhaW5lclJlZi5pbmRleE9mKHRoaXMpO3Q+LTEmJnRoaXMuX3ZpZXdDb250YWluZXJSZWYuZGV0YWNoKHQpLHRoaXMuX3ZpZXdDb250YWluZXJSZWY9bnVsbH1wbSh0aGlzLl9sVmlld1sxXSx0aGlzLl9sVmlldyl9b25EZXN0cm95KHQpe2tsKHRoaXMuX2xWaWV3WzFdLHRoaXMuX2xWaWV3LG51bGwsdCl9bWFya0ZvckNoZWNrKCl7UWwodGhpcy5fY2RSZWZJbmplY3RpbmdWaWV3fHx0aGlzLl9sVmlldyl9ZGV0YWNoKCl7dGhpcy5fbFZpZXdbMl0mPS0xMjl9cmVhdHRhY2goKXt0aGlzLl9sVmlld1syXXw9MTI4fWRldGVjdENoYW5nZXMoKXskbCh0aGlzLl9sVmlld1sxXSx0aGlzLl9sVmlldyx0aGlzLmNvbnRleHQpfWNoZWNrTm9DaGFuZ2VzKCl7IShmdW5jdGlvbiB0KG4sZSxhKXtacighMCk7dHJ5eyRsKG4sZSxhKX1maW5hbGx5e1pyKCExKX19KSh0aGlzLl9sVmlld1sxXSx0aGlzLl9sVmlldyx0aGlzLmNvbnRleHQpfWF0dGFjaFRvVmlld0NvbnRhaW5lclJlZih0KXtpZih0aGlzLl9hcHBSZWYpdGhyb3cgbmV3IEVycm9yKCJUaGlzIHZpZXcgaXMgYWxyZWFkeSBhdHRhY2hlZCBkaXJlY3RseSB0byB0aGUgQXBwbGljYXRpb25SZWYhIik7dGhpcy5fdmlld0NvbnRhaW5lclJlZj10fWRldGFjaEZyb21BcHBSZWYoKXt0aGlzLl9hcHBSZWY9bnVsbCwoZnVuY3Rpb24gdChuLGUpe3ZtKG4sZSxlWzExXSwyLG51bGwsbnVsbCl9KSh0aGlzLl9sVmlld1sxXSx0aGlzLl9sVmlldyl9YXR0YWNoVG9BcHBSZWYodCl7aWYodGhpcy5fdmlld0NvbnRhaW5lclJlZil0aHJvdyBuZXcgRXJyb3IoIlRoaXMgdmlldyBpcyBhbHJlYWR5IGF0dGFjaGVkIHRvIGEgVmlld0NvbnRhaW5lciEiKTt0aGlzLl9hcHBSZWY9dH19Y2xhc3MgUm0gZXh0ZW5kcyB6bXtjb25zdHJ1Y3Rvcih0KXtzdXBlcih0KSx0aGlzLl92aWV3PXR9ZGV0ZWN0Q2hhbmdlcygpe3RtKHRoaXMuX3ZpZXcpfWNoZWNrTm9DaGFuZ2VzKCl7IShmdW5jdGlvbiB0KG4pe1pyKCEwKTt0cnl7dG0obil9ZmluYWxseXtacighMSl9fSkodGhpcy5fdmlldyl9Z2V0IGNvbnRleHQoKXtyZXR1cm4gbnVsbH19ZnVuY3Rpb24gVG0odCxuLGUsYSxvPSExKXtmb3IoO251bGwhPT1lOyl7bmdEZXZNb2RlJiZ3aShlLFsyLDAsMSwzLDRdKTtjb25zdCByPW5bZS5pbmRleF07aWYobnVsbCE9PXImJmEucHVzaChrcihyKSksRm8ocikpZm9yKGxldCB0PUlvO3Q8ci5sZW5ndGg7dCsrKXtjb25zdCBuPXJbdF0sZT1uWzFdLmZpcnN0Q2hpbGQ7bnVsbCE9PWUmJlRtKG5bMV0sbixlLGEpfWNvbnN0IGk9ZS50eXBlO2lmKDM9PT1pfHw0PT09aSlUbSh0LG4sZS5jaGlsZCxhKTtlbHNlIGlmKDE9PT1pKXtjb25zdCB0PW5bMTZdLG89dFs2XSxyPWUucHJvamVjdGlvbjtuZ0Rldk1vZGUmJlRhKG8ucHJvamVjdGlvbiwiQ29tcG9uZW50cyB3aXRoIHByb2plY3Rpb24gbm9kZXMgKDxuZy1jb250ZW50PikgbXVzdCBoYXZlIHByb2plY3Rpb24gc2xvdHMgZGVmaW5lZC4iKTtjb25zdCBpPW8ucHJvamVjdGlvbltyXTtpZihBcnJheS5pc0FycmF5KGkpKWEucHVzaCguLi5pKTtlbHNle2NvbnN0IG49UHModCk7bmdEZXZNb2RlJiZUYShuLCJDb21wb25lbnQgdmlld3Mgc2hvdWxkIGFsd2F5cyBoYXZlIGEgcGFyZW50IHZpZXcgKGNvbXBvbmVudCdzIGhvc3QgdmlldykiKSxUbShuWzFdLG4saSxhLCEwKX19ZT1vP2UucHJvamVjdGlvbk5leHQ6ZS5uZXh0fXJldHVybiBhfQovKioKICAgICAqIEBsaWNlbnNlCiAgICAgKiBDb3B5cmlnaHQgR29vZ2xlIExMQyBBbGwgUmlnaHRzIFJlc2VydmVkLgogICAgICoKICAgICAqIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGFuIE1JVC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCiAgICAgKiBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlIGF0IGh0dHBzOi8vYW5ndWxhci5pby9saWNlbnNlCiAgICAgKi9sZXQgRG0sSW0sTm07ZnVuY3Rpb24gRm0odCxuLGUpe3JldHVybiBEbXx8KERtPWNsYXNzIGV4dGVuZHMgdHt9KSxuZXcgRG0od3IobixlKSl9ZnVuY3Rpb24gTG0odCxuLGUsYSl7cmV0dXJuIEltfHwoSW09Y2xhc3MgZXh0ZW5kcyB0e2NvbnN0cnVjdG9yKHQsbixlKXtzdXBlcigpLHRoaXMuX2RlY2xhcmF0aW9uVmlldz10LHRoaXMuX2RlY2xhcmF0aW9uVENvbnRhaW5lcj1uLHRoaXMuZWxlbWVudFJlZj1lfWNyZWF0ZUVtYmVkZGVkVmlldyh0KXtjb25zdCBuPXRoaXMuX2RlY2xhcmF0aW9uVENvbnRhaW5lci50Vmlld3MsZT1ibCh0aGlzLl9kZWNsYXJhdGlvblZpZXcsbix0LDE2LG51bGwsbi5kZWNsVE5vZGUsbnVsbCxudWxsLG51bGwsbnVsbCksYT10aGlzLl9kZWNsYXJhdGlvblZpZXdbdGhpcy5fZGVjbGFyYXRpb25UQ29udGFpbmVyLmluZGV4XTtuZ0Rldk1vZGUmJllvKGEpLGVbMTddPWE7Y29uc3Qgbz10aGlzLl9kZWNsYXJhdGlvblZpZXdbMTldO3JldHVybiBudWxsIT09byYmKGVbMTldPW8uY3JlYXRlRW1iZWRkZWRWaWV3KG4pKSxmbChuLGUsdCksbmV3IHptKGUpfX0pLDA9PT1lLnR5cGU/KG5nRGV2TW9kZSYmVGEoZS50Vmlld3MsIlRWaWV3IG11c3QgYmUgYWxsb2NhdGVkIiksbmV3IEltKGEsZSxGbShuLGUsYSkpKTpudWxsfWZ1bmN0aW9uIEhtKHQsbixlLGEpe2xldCBvO05tfHwoTm09Y2xhc3MgZXh0ZW5kcyB0e2NvbnN0cnVjdG9yKHQsbixlKXtzdXBlcigpLHRoaXMuX2xDb250YWluZXI9dCx0aGlzLl9ob3N0VE5vZGU9bix0aGlzLl9ob3N0Vmlldz1lfWdldCBlbGVtZW50KCl7cmV0dXJuIEZtKG4sdGhpcy5faG9zdFROb2RlLHRoaXMuX2hvc3RWaWV3KX1nZXQgaW5qZWN0b3IoKXtyZXR1cm4gbmV3IEtpKHRoaXMuX2hvc3RUTm9kZSx0aGlzLl9ob3N0Vmlldyl9Z2V0IHBhcmVudEluamVjdG9yKCl7Y29uc3QgdD1VaSh0aGlzLl9ob3N0VE5vZGUsdGhpcy5faG9zdFZpZXcpO2lmKERpKHQpKXtjb25zdCBuPU5pKHQsdGhpcy5faG9zdFZpZXcpLGU9SWkodCk7cmV0dXJuIG5nRGV2TW9kZSYmS28obixlKSxuZXcgS2koblsxXS5kYXRhW2UrOF0sbil9cmV0dXJuIG5ldyBLaShudWxsLHRoaXMuX2hvc3RWaWV3KX1jbGVhcigpe2Zvcig7dGhpcy5sZW5ndGg+MDspdGhpcy5yZW1vdmUodGhpcy5sZW5ndGgtMSl9Z2V0KHQpe3JldHVybiBudWxsIT09dGhpcy5fbENvbnRhaW5lcls4XSYmdGhpcy5fbENvbnRhaW5lcls4XVt0XXx8bnVsbH1nZXQgbGVuZ3RoKCl7cmV0dXJuIHRoaXMuX2xDb250YWluZXIubGVuZ3RoLUlvfWNyZWF0ZUVtYmVkZGVkVmlldyh0LG4sZSl7Y29uc3QgYT10LmNyZWF0ZUVtYmVkZGVkVmlldyhufHx7fSk7cmV0dXJuIHRoaXMuaW5zZXJ0KGEsZSksYX1jcmVhdGVDb21wb25lbnQodCxuLGUsYSxvKXtjb25zdCByPWV8fHRoaXMucGFyZW50SW5qZWN0b3I7aWYoIW8mJm51bGw9PXQubmdNb2R1bGUmJnIpe2NvbnN0IHQ9ci5nZXQobm8sbnVsbCk7dCYmKG89dCl9Y29uc3QgaT10LmNyZWF0ZShyLGEsdm9pZCAwLG8pO3JldHVybiB0aGlzLmluc2VydChpLmhvc3RWaWV3LG4pLGl9aW5zZXJ0KHQsbil7Y29uc3QgZT10Ll9sVmlldyxhPWVbMV07aWYodC5kZXN0cm95ZWQpdGhyb3cgbmV3IEVycm9yKCJDYW5ub3QgaW5zZXJ0IGEgZGVzdHJveWVkIFZpZXcgaW4gYSBWaWV3Q29udGFpbmVyISIpO2lmKHRoaXMuYWxsb2NhdGVDb250YWluZXJJZk5lZWRlZCgpLChmdW5jdGlvbiBvKHQpe3JldHVybiBGbyh0WzNdKX0pKGUpKXtjb25zdCBuPXRoaXMuaW5kZXhPZih0KTtpZigtMSE9PW4pdGhpcy5kZXRhY2gobik7ZWxzZXtjb25zdCBuPWVbM107bmdEZXZNb2RlJiZ2YShGbyhuKSwhMCwiQW4gYXR0YWNoZWQgdmlldyBzaG91bGQgaGF2ZSBpdHMgUEFSRU5UIHBvaW50IHRvIGEgY29udGFpbmVyLiIpO2NvbnN0IGE9bmV3IE5tKG4sbls2XSxuWzNdKTthLmRldGFjaChhLmluZGV4T2YodCkpfX1jb25zdCByPXRoaXMuX2FkanVzdEluZGV4KG4pLGk9dGhpcy5fbENvbnRhaW5lcjshKGZ1bmN0aW9uIGModCxuLGUsYSl7bmdEZXZNb2RlJiZabyhuKSxuZ0Rldk1vZGUmJllvKGUpO2NvbnN0IG89SW8rYSxyPWUubGVuZ3RoO2E+MCYmKGVbby0xXVs0XT1uKSxhPHItSW8/KG5bNF09ZVtvXSxybyhlLElvK2EsbikpOihlLnB1c2gobiksbls0XT1udWxsKSxuWzNdPWU7Y29uc3QgaT1uWzE3XTtudWxsIT09aSYmZSE9PWkmJihmdW5jdGlvbiBjKHQsbil7bmdEZXZNb2RlJiZUYShuLCJMVmlldyByZXF1aXJlZCIpLG5nRGV2TW9kZSYmWW8odCk7Y29uc3QgZT10WzldLGE9blszXTtuZ0Rldk1vZGUmJllvKGEpO2NvbnN0IG89YVszXVsxNl07bmdEZXZNb2RlJiZUYShvLCJNaXNzaW5nIGluc2VydGVkQ29tcG9uZW50TFZpZXciKTtjb25zdCByPW5bMTZdO25nRGV2TW9kZSYmVGEociwiTWlzc2luZyBkZWNsYXJlZENvbXBvbmVudExWaWV3IiksciE9PW8mJih0WzJdPSEwKSxudWxsPT09ZT90WzldPVtuXTplLnB1c2gobil9KShpLG4pO2NvbnN0IHM9blsxOV07bnVsbCE9PXMmJnMuaW5zZXJ0Vmlldyh0KSxuWzJdfD0xMjh9KShhLGUsaSxyKTtjb25zdCBzPXhtKHIsaSksbD1lWzExXSxtPUNtKGwsaVs3XSk7cmV0dXJuIG51bGwhPT1tJiYoZnVuY3Rpb24gZCh0LG4sZSxhLG8scil7YVswXT1vLGFbNl09bix2bSh0LGEsZSwxLG8scil9KShhLGlbNl0sbCxlLG0scyksdC5hdHRhY2hUb1ZpZXdDb250YWluZXJSZWYodGhpcykscm8oaVs4XSxyLHQpLHR9bW92ZSh0LG4pe2lmKHQuZGVzdHJveWVkKXRocm93IG5ldyBFcnJvcigiQ2Fubm90IG1vdmUgYSBkZXN0cm95ZWQgVmlldyBpbiBhIFZpZXdDb250YWluZXIhIik7cmV0dXJuIHRoaXMuaW5zZXJ0KHQsbil9aW5kZXhPZih0KXtjb25zdCBuPXRoaXMuX2xDb250YWluZXJbOF07cmV0dXJuIG51bGwhPT1uP24uaW5kZXhPZih0KTotMX1yZW1vdmUodCl7dGhpcy5hbGxvY2F0ZUNvbnRhaW5lcklmTmVlZGVkKCk7Y29uc3Qgbj10aGlzLl9hZGp1c3RJbmRleCh0LC0xKSxlPWdtKHRoaXMuX2xDb250YWluZXIsbik7ZSYmKGlvKHRoaXMuX2xDb250YWluZXJbOF0sbikscG0oZVsxXSxlKSl9ZGV0YWNoKHQpe3RoaXMuYWxsb2NhdGVDb250YWluZXJJZk5lZWRlZCgpO2NvbnN0IG49dGhpcy5fYWRqdXN0SW5kZXgodCwtMSksZT1nbSh0aGlzLl9sQ29udGFpbmVyLG4pO3JldHVybiBlJiZudWxsIT1pbyh0aGlzLl9sQ29udGFpbmVyWzhdLG4pP25ldyB6bShlKTpudWxsfV9hZGp1c3RJbmRleCh0LG49MCl7cmV0dXJuIG51bGw9PXQ/dGhpcy5sZW5ndGgrbjoobmdEZXZNb2RlJiYoUmEodCwtMSxgVmlld1JlZiBpbmRleCBtdXN0IGJlIHBvc2l0aXZlLCBnb3QgJHt0fWApLEFhKHQsdGhpcy5sZW5ndGgrMStuLCJpbmRleCIpKSx0KX1hbGxvY2F0ZUNvbnRhaW5lcklmTmVlZGVkKCl7bnVsbD09PXRoaXMuX2xDb250YWluZXJbOF0mJih0aGlzLl9sQ29udGFpbmVyWzhdPVtdKX19KSxuZ0Rldk1vZGUmJndpKGUsWzAsMiwzXSk7Y29uc3Qgcj1hW2UuaW5kZXhdO2lmKEZvKHIpKW89cjtlbHNle2xldCB0O2lmKDM9PT1lLnR5cGUpdD1rcihyKTtlbHNlIGlmKG5nRGV2TW9kZSYmbmdEZXZNb2RlLnJlbmRlcmVyQ3JlYXRlQ29tbWVudCsrLHQ9YVsxMV0uY3JlYXRlQ29tbWVudChuZ0Rldk1vZGU/ImNvbnRhaW5lciI6IiIpLGpvKGEpKXtjb25zdCBuPWFbMTFdLG89d3IoZSxhKTtmbShuLENtKG4sbyksdCwoZnVuY3Rpb24gaSh0LG4pe3JldHVybiB4cih0KT90Lm5leHRTaWJsaW5nKG4pOm4ubmV4dFNpYmxpbmd9KShuLG8pKX1lbHNlIE9tKGFbMV0sYSx0LGUpO2FbZS5pbmRleF09bz1ZbChyLGEsdCxlKSxKbChhLG8pfXJldHVybiBuZXcgTm0obyxlLGEpfWZ1bmN0aW9uIEJtKHQ9ITEpe3JldHVybihmdW5jdGlvbiBuKHQsZSxhKXtpZighYSYmSG8odCkpe2NvbnN0IG49QXIodC5pbmRleCxlKTtyZXR1cm4gbmV3IHptKG4sbil9cmV0dXJuIDI9PT10LnR5cGV8fDA9PT10LnR5cGV8fDM9PT10LnR5cGV8fDQ9PT10LnR5cGU/bmV3IHptKGVbMTZdLGUpOm51bGx9KShVcigpLEJyKCksdCl9Ci8qKgogICAgICogQGxpY2Vuc2UKICAgICAqIENvcHlyaWdodCBHb29nbGUgTExDIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCiAgICAgKgogICAgICogVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYW4gTUlULXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKICAgICAqIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUgYXQgaHR0cHM6Ly9hbmd1bGFyLmlvL2xpY2Vuc2UKICAgICAqLwpjbGFzcyBWbXt9Vm0uX19OR19FTEVNRU5UX0lEX189KCk9PmptKCk7Y29uc3Qgam09Qm0sVW09RnVuY3Rpb247ZnVuY3Rpb24gV20odCl7cmV0dXJuImZ1bmN0aW9uIj09dHlwZW9mIHR9Ci8qKgogICAgICogQGxpY2Vuc2UKICAgICAqIENvcHlyaWdodCBHb29nbGUgTExDIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCiAgICAgKgogICAgICogVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYW4gTUlULXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKICAgICAqIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUgYXQgaHR0cHM6Ly9hbmd1bGFyLmlvL2xpY2Vuc2UKICAgICAqL2NvbnN0IEdtPS9eZnVuY3Rpb25ccytcUytcKFwpXHMqe1tcc1xTXStcLmFwcGx5XCh0aGlzLFxzKihhcmd1bWVudHN8W14oKV0rXChhcmd1bWVudHNcKSlcKS8sWW09L15jbGFzc1xzK1tBLVphLXpcZCRfXSpccypleHRlbmRzXHMrW157XSt7LyxxbT0vXmNsYXNzXHMrW0EtWmEtelxkJF9dKlxzKmV4dGVuZHNccytbXntdK3tbXHNcU10qY29uc3RydWN0b3JccypcKC8sWm09L15jbGFzc1xzK1tBLVphLXpcZCRfXSpccypleHRlbmRzXHMrW157XSt7W1xzXFNdKmNvbnN0cnVjdG9yXHMqXChcKVxzKntccypzdXBlclwoXC5cLlwuYXJndW1lbnRzXCkvO2NsYXNzIFhte2NvbnN0cnVjdG9yKHQpe3RoaXMuX3JlZmxlY3Q9dHx8bWEuUmVmbGVjdH1pc1JlZmxlY3Rpb25FbmFibGVkKCl7cmV0dXJuITB9ZmFjdG9yeSh0KXtyZXR1cm4oLi4ubik9Pm5ldyB0KC4uLm4pfV96aXBUeXBlc0FuZEFubm90YXRpb25zKHQsbil7bGV0IGU7ZT1jbyh2b2lkIDA9PT10P24ubGVuZ3RoOnQubGVuZ3RoKTtmb3IobGV0IGE9MDthPGUubGVuZ3RoO2ErKyllW2FdPXZvaWQgMD09PXQ/W106dFthXSYmdFthXSE9T2JqZWN0P1t0W2FdXTpbXSxuJiZudWxsIT1uW2FdJiYoZVthXT1lW2FdLmNvbmNhdChuW2FdKSk7cmV0dXJuIGV9X293blBhcmFtZXRlcnModCxuKXtpZigoZnVuY3Rpb24gZSh0KXtyZXR1cm4gR20udGVzdCh0KXx8Wm0udGVzdCh0KXx8WW0udGVzdCh0KSYmIXFtLnRlc3QodCl9KSh0LnRvU3RyaW5nKCkpKXJldHVybiBudWxsO2lmKHQucGFyYW1ldGVycyYmdC5wYXJhbWV0ZXJzIT09bi5wYXJhbWV0ZXJzKXJldHVybiB0LnBhcmFtZXRlcnM7Y29uc3QgYT10LmN0b3JQYXJhbWV0ZXJzO2lmKGEmJmEhPT1uLmN0b3JQYXJhbWV0ZXJzKXtjb25zdCB0PSJmdW5jdGlvbiI9PXR5cGVvZiBhP2EoKTphLG49dC5tYXAoKHQ9PnQmJnQudHlwZSkpLGU9dC5tYXAoKHQ9PnQmJkptKHQuZGVjb3JhdG9ycykpKTtyZXR1cm4gdGhpcy5femlwVHlwZXNBbmRBbm5vdGF0aW9ucyhuLGUpfWNvbnN0IG89dC5oYXNPd25Qcm9wZXJ0eShFZSkmJnRbRWVdLHI9dGhpcy5fcmVmbGVjdCYmdGhpcy5fcmVmbGVjdC5nZXRPd25NZXRhZGF0YSYmdGhpcy5fcmVmbGVjdC5nZXRPd25NZXRhZGF0YSgiZGVzaWduOnBhcmFtdHlwZXMiLHQpO3JldHVybiByfHxvP3RoaXMuX3ppcFR5cGVzQW5kQW5ub3RhdGlvbnMocixvKTpjbyh0Lmxlbmd0aCl9cGFyYW1ldGVycyh0KXtpZighV20odCkpcmV0dXJuW107Y29uc3Qgbj1RbSh0KTtsZXQgZT10aGlzLl9vd25QYXJhbWV0ZXJzKHQsbik7cmV0dXJuIGV8fG49PT1PYmplY3R8fChlPXRoaXMucGFyYW1ldGVycyhuKSksZXx8W119X293bkFubm90YXRpb25zKHQsbil7aWYodC5hbm5vdGF0aW9ucyYmdC5hbm5vdGF0aW9ucyE9PW4uYW5ub3RhdGlvbnMpe2xldCBuPXQuYW5ub3RhdGlvbnM7cmV0dXJuImZ1bmN0aW9uIj09dHlwZW9mIG4mJm4uYW5ub3RhdGlvbnMmJihuPW4uYW5ub3RhdGlvbnMpLG59cmV0dXJuIHQuZGVjb3JhdG9ycyYmdC5kZWNvcmF0b3JzIT09bi5kZWNvcmF0b3JzP0ptKHQuZGVjb3JhdG9ycyk6dC5oYXNPd25Qcm9wZXJ0eShTZSk/dFtTZV06bnVsbH1hbm5vdGF0aW9ucyh0KXtpZighV20odCkpcmV0dXJuW107Y29uc3Qgbj1RbSh0KSxlPXRoaXMuX293bkFubm90YXRpb25zKHQsbil8fFtdO3JldHVybihuIT09T2JqZWN0P3RoaXMuYW5ub3RhdGlvbnMobik6W10pLmNvbmNhdChlKX1fb3duUHJvcE1ldGFkYXRhKHQsbil7aWYodC5wcm9wTWV0YWRhdGEmJnQucHJvcE1ldGFkYXRhIT09bi5wcm9wTWV0YWRhdGEpe2xldCBuPXQucHJvcE1ldGFkYXRhO3JldHVybiJmdW5jdGlvbiI9PXR5cGVvZiBuJiZuLnByb3BNZXRhZGF0YSYmKG49bi5wcm9wTWV0YWRhdGEpLG59aWYodC5wcm9wRGVjb3JhdG9ycyYmdC5wcm9wRGVjb3JhdG9ycyE9PW4ucHJvcERlY29yYXRvcnMpe2NvbnN0IG49dC5wcm9wRGVjb3JhdG9ycyxlPXt9O3JldHVybiBPYmplY3Qua2V5cyhuKS5mb3JFYWNoKCh0PT57ZVt0XT1KbShuW3RdKX0pKSxlfXJldHVybiB0Lmhhc093blByb3BlcnR5KEFlKT90W0FlXTpudWxsfXByb3BNZXRhZGF0YSh0KXtpZighV20odCkpcmV0dXJue307Y29uc3Qgbj1RbSh0KSxlPXt9O2lmKG4hPT1PYmplY3Qpe2NvbnN0IHQ9dGhpcy5wcm9wTWV0YWRhdGEobik7T2JqZWN0LmtleXModCkuZm9yRWFjaCgobj0+e2Vbbl09dFtuXX0pKX1jb25zdCBhPXRoaXMuX293blByb3BNZXRhZGF0YSh0LG4pO3JldHVybiBhJiZPYmplY3Qua2V5cyhhKS5mb3JFYWNoKCh0PT57Y29uc3Qgbj1bXTtlLmhhc093blByb3BlcnR5KHQpJiZuLnB1c2goLi4uZVt0XSksbi5wdXNoKC4uLmFbdF0pLGVbdF09bn0pKSxlfW93blByb3BNZXRhZGF0YSh0KXtyZXR1cm4gV20odCkmJnRoaXMuX293blByb3BNZXRhZGF0YSh0LFFtKHQpKXx8e319aGFzTGlmZWN5Y2xlSG9vayh0LG4pe3JldHVybiB0IGluc3RhbmNlb2YgVW0mJm4gaW4gdC5wcm90b3R5cGV9Z3VhcmRzKHQpe3JldHVybnt9fWdldHRlcih0KXtyZXR1cm4gbmV3IEZ1bmN0aW9uKCJvIiwicmV0dXJuIG8uIit0KyI7Iil9c2V0dGVyKHQpe3JldHVybiBuZXcgRnVuY3Rpb24oIm8iLCJ2IiwicmV0dXJuIG8uIit0KyIgPSB2OyIpfW1ldGhvZCh0KXtyZXR1cm4gbmV3IEZ1bmN0aW9uKCJvIiwiYXJncyIsYGlmICghby4ke3R9KSB0aHJvdyBuZXcgRXJyb3IoJyIke3R9IiBpcyB1bmRlZmluZWQnKTtcbiAgICAgICAgcmV0dXJuIG8uJHt0fS5hcHBseShvLCBhcmdzKTtgKX1pbXBvcnRVcmkodCl7cmV0dXJuIm9iamVjdCI9PXR5cGVvZiB0JiZ0LmZpbGVQYXRoP3QuZmlsZVBhdGg6YC4vJHt0YSh0KX1gfXJlc291cmNlVXJpKHQpe3JldHVybmAuLyR7dGEodCl9YH1yZXNvbHZlSWRlbnRpZmllcih0LG4sZSxhKXtyZXR1cm4gYX1yZXNvbHZlRW51bSh0LG4pe3JldHVybiB0W25dfX1mdW5jdGlvbiBKbSh0KXtyZXR1cm4gdD90Lm1hcCgodD0+bmV3KDAsdC50eXBlLmFubm90YXRpb25DbHMpKC4uLnQuYXJncz90LmFyZ3M6W10pKSk6W119ZnVuY3Rpb24gUW0odCl7Y29uc3Qgbj10LnByb3RvdHlwZT9PYmplY3QuZ2V0UHJvdG90eXBlT2YodC5wcm90b3R5cGUpOm51bGw7cmV0dXJuKG4/bi5jb25zdHJ1Y3RvcjpudWxsKXx8T2JqZWN0fQovKioKICAgICAqIEBsaWNlbnNlCiAgICAgKiBDb3B5cmlnaHQgR29vZ2xlIExMQyBBbGwgUmlnaHRzIFJlc2VydmVkLgogICAgICoKICAgICAqIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGFuIE1JVC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCiAgICAgKiBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlIGF0IGh0dHBzOi8vYW5ndWxhci5pby9saWNlbnNlCiAgICAgKi9sZXQgS209bnVsbDtmdW5jdGlvbiAkbSgpe3JldHVybiBLbT1LbXx8bmV3IFhtfWZ1bmN0aW9uIHRkKHQpe3JldHVybiBuZCgkbSgpLnBhcmFtZXRlcnModCkpfWZ1bmN0aW9uIG5kKHQpe2NvbnN0IG49YmEoKTtyZXR1cm4gdC5tYXAoKHQ9PihmdW5jdGlvbiBlKHQsbil7Y29uc3QgZT17dG9rZW46bnVsbCxob3N0OiExLG9wdGlvbmFsOiExLHJlc29sdmVkOnQuUjNSZXNvbHZlZERlcGVuZGVuY3lUeXBlLlRva2VuLHNlbGY6ITEsc2tpcFNlbGY6ITF9O2Z1bmN0aW9uIGEobil7ZS5yZXNvbHZlZD10LlIzUmVzb2x2ZWREZXBlbmRlbmN5VHlwZS5Ub2tlbixlLnRva2VuPW59aWYoQXJyYXkuaXNBcnJheShuKSYmbi5sZW5ndGg+MClmb3IobGV0IG89MDtvPG4ubGVuZ3RoO28rKyl7Y29uc3Qgcj1uW29dO2lmKHZvaWQgMD09PXIpY29udGludWU7Y29uc3QgaT1PYmplY3QuZ2V0UHJvdG90eXBlT2Yocik7aWYociBpbnN0YW5jZW9mIE5lfHwiT3B0aW9uYWwiPT09aS5uZ01ldGFkYXRhTmFtZSllLm9wdGlvbmFsPSEwO2Vsc2UgaWYociBpbnN0YW5jZW9mIExlfHwiU2tpcFNlbGYiPT09aS5uZ01ldGFkYXRhTmFtZSllLnNraXBTZWxmPSEwO2Vsc2UgaWYociBpbnN0YW5jZW9mIEZlfHwiU2VsZiI9PT1pLm5nTWV0YWRhdGFOYW1lKWUuc2VsZj0hMDtlbHNlIGlmKHIgaW5zdGFuY2VvZiBIZXx8Ikhvc3QiPT09aS5uZ01ldGFkYXRhTmFtZSllLmhvc3Q9ITA7ZWxzZSBpZihyIGluc3RhbmNlb2YgSWUpZS50b2tlbj1yLnRva2VuO2Vsc2UgaWYociBpbnN0YW5jZW9mIEJlKXtpZih2b2lkIDA9PT1yLmF0dHJpYnV0ZU5hbWUpdGhyb3cgbmV3IEVycm9yKCJBdHRyaWJ1dGUgbmFtZSBtdXN0IGJlIGRlZmluZWQuIik7ZS50b2tlbj1yLmF0dHJpYnV0ZU5hbWUsZS5yZXNvbHZlZD10LlIzUmVzb2x2ZWREZXBlbmRlbmN5VHlwZS5BdHRyaWJ1dGV9ZWxzZSByPT09Vm0/KGUudG9rZW49cixlLnJlc29sdmVkPXQuUjNSZXNvbHZlZERlcGVuZGVuY3lUeXBlLkNoYW5nZURldGVjdG9yUmVmKTphKHIpfWVsc2Ugdm9pZCAwPT09bnx8QXJyYXkuaXNBcnJheShuKSYmMD09PW4ubGVuZ3RoPyhlLnRva2VuPXZvaWQgMCxlLnJlc29sdmVkPWRhLkludmFsaWQpOmEobik7cmV0dXJuIGV9Ci8qKgogICAgICogQGxpY2Vuc2UKICAgICAqIENvcHlyaWdodCBHb29nbGUgTExDIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCiAgICAgKgogICAgICogVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYW4gTUlULXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKICAgICAqIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUgYXQgaHR0cHM6Ly9hbmd1bGFyLmlvL2xpY2Vuc2UKICAgICAqLykobix0KSkpfWNvbnN0IGVkPWplKHtwcm92aWRlOlN0cmluZyx1c2VWYWx1ZTpqZX0pO2Z1bmN0aW9uIGFkKHQpe3JldHVybiB2b2lkIDAhPT10LnVzZUNsYXNzfWZ1bmN0aW9uIG9kKHQpe3JldHVybiB2b2lkIDAhPT10LnVzZUZhY3Rvcnl9ZnVuY3Rpb24gcmQodCxuKXtjb25zdCBlPW58fHtwcm92aWRlZEluOm51bGx9LGE9e25hbWU6dC5uYW1lLHR5cGU6dCx0eXBlQXJndW1lbnRDb3VudDowLHByb3ZpZGVkSW46ZS5wcm92aWRlZEluLHVzZXJEZXBzOnZvaWQgMH07cmV0dXJuKGFkKGUpfHxvZChlKSkmJnZvaWQgMCE9PWUuZGVwcyYmKGEudXNlckRlcHM9bmQoZS5kZXBzKSksYWQoZSk/YS51c2VDbGFzcz1vYShlLnVzZUNsYXNzKTooZnVuY3Rpb24gbyh0KXtyZXR1cm4gZWQgaW4gdH0pKGUpP2EudXNlVmFsdWU9b2EoZS51c2VWYWx1ZSk6b2QoZSk/YS51c2VGYWN0b3J5PWUudXNlRmFjdG9yeTooZnVuY3Rpb24gcih0KXtyZXR1cm4gdm9pZCAwIT09dC51c2VFeGlzdGluZ30pKGUpJiYoYS51c2VFeGlzdGluZz1vYShlLnVzZUV4aXN0aW5nKSksYX0KLyoqCiAgICAgKiBAbGljZW5zZQogICAgICogQ29weXJpZ2h0IEdvb2dsZSBMTEMgQWxsIFJpZ2h0cyBSZXNlcnZlZC4KICAgICAqCiAgICAgKiBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhbiBNSVQtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQogICAgICogZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZSBhdCBodHRwczovL2FuZ3VsYXIuaW8vbGljZW5zZQogICAgICovamUoe3Byb3ZpZGU6U3RyaW5nLHVzZVZhbHVlOmplfSk7Ci8qKgogICAgICogQGxpY2Vuc2UKICAgICAqIENvcHlyaWdodCBHb29nbGUgTExDIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCiAgICAgKgogICAgICogVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYW4gTUlULXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKICAgICAqIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUgYXQgaHR0cHM6Ly9hbmd1bGFyLmlvL2xpY2Vuc2UKICAgICAqLwpjb25zdCBpZD16ZSgiSW5qZWN0YWJsZSIsdm9pZCAwLHZvaWQgMCx2b2lkIDAsKCh0LG4pPT5jZCh0LG4pKSksY2Q9ZnVuY3Rpb24gc2QodCxuKXtsZXQgZT1udWxsLGE9bnVsbDt0Lmhhc093blByb3BlcnR5KFhlKXx8KE9iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LFhlLHtnZXQ6KCk9PihudWxsPT09ZSYmKGU9YmEoKS5jb21waWxlSW5qZWN0YWJsZSh0byxgbmc6Ly8vJHt0Lm5hbWV9L8m1cHJvdi5qc2AscmQodCxuKSkpLGUpfSksdC5oYXNPd25Qcm9wZXJ0eShRZSl8fCh0W1FlXT0oKT0+dFtYZV0pKSx0Lmhhc093blByb3BlcnR5KE1hKXx8T2JqZWN0LmRlZmluZVByb3BlcnR5KHQsTWEse2dldDooKT0+e2lmKG51bGw9PT1hKXtjb25zdCBlPXJkKHQsbiksbz1iYSgpO2E9by5jb21waWxlRmFjdG9yeSh0byxgbmc6Ly8vJHt0Lm5hbWV9L8m1ZmFjLmpzYCx7bmFtZTplLm5hbWUsdHlwZTplLnR5cGUsdHlwZUFyZ3VtZW50Q291bnQ6ZS50eXBlQXJndW1lbnRDb3VudCxkZXBzOnRkKHQpLGluamVjdEZuOiJpbmplY3QiLHRhcmdldDpvLlIzRmFjdG9yeVRhcmdldC5JbmplY3RhYmxlfSl9cmV0dXJuIGF9LGNvbmZpZ3VyYWJsZTohMH0pfSxsZD1uZXcgRmEoIlNldCBJbmplY3RvciBzY29wZS4iKSxtZD17fSxkZD17fSxnZD1bXTtsZXQgcGQ7ZnVuY3Rpb24gYmQoKXtyZXR1cm4gdm9pZCAwPT09cGQmJihwZD1uZXcgJGEpLHBkfWZ1bmN0aW9uIHVkKHQsbj1udWxsLGU9bnVsbCxhKXtyZXR1cm4gbmV3IGZkKHQsZSxufHxiZCgpLGEpfWNsYXNzIGZke2NvbnN0cnVjdG9yKHQsbixlLGE9bnVsbCl7dGhpcy5wYXJlbnQ9ZSx0aGlzLnJlY29yZHM9bmV3IE1hcCx0aGlzLmluamVjdG9yRGVmVHlwZXM9bmV3IFNldCx0aGlzLm9uRGVzdHJveT1uZXcgU2V0LHRoaXMuX2Rlc3Ryb3llZD0hMTtjb25zdCBvPVtdO24mJm9vKG4sKGU9PnRoaXMucHJvY2Vzc1Byb3ZpZGVyKGUsdCxuKSkpLG9vKFt0XSwodD0+dGhpcy5wcm9jZXNzSW5qZWN0b3JUeXBlKHQsW10sbykpKSx0aGlzLnJlY29yZHMuc2V0KExhLENkKHZvaWQgMCx0aGlzKSk7Y29uc3Qgcj10aGlzLnJlY29yZHMuZ2V0KGxkKTt0aGlzLnNjb3BlPW51bGwhPXI/ci52YWx1ZTpudWxsLHRoaXMuc291cmNlPWF8fCgib2JqZWN0Ij09dHlwZW9mIHQ/bnVsbDp0YSh0KSl9Z2V0IGRlc3Ryb3llZCgpe3JldHVybiB0aGlzLl9kZXN0cm95ZWR9ZGVzdHJveSgpe3RoaXMuYXNzZXJ0Tm90RGVzdHJveWVkKCksdGhpcy5fZGVzdHJveWVkPSEwO3RyeXt0aGlzLm9uRGVzdHJveS5mb3JFYWNoKCh0PT50Lm5nT25EZXN0cm95KCkpKX1maW5hbGx5e3RoaXMucmVjb3Jkcy5jbGVhcigpLHRoaXMub25EZXN0cm95LmNsZWFyKCksdGhpcy5pbmplY3RvckRlZlR5cGVzLmNsZWFyKCl9fWdldCh0LG49SGEsZT1WZS5EZWZhdWx0KXt0aGlzLmFzc2VydE5vdERlc3Ryb3llZCgpO2NvbnN0IGE9R2EodGhpcyk7dHJ5e2lmKCEoZSZWZS5Ta2lwU2VsZikpe2xldCBuPXRoaXMucmVjb3Jkcy5nZXQodCk7aWYodm9pZCAwPT09bil7Y29uc3QgZT0oZnVuY3Rpb24gbyh0KXtyZXR1cm4iZnVuY3Rpb24iPT10eXBlb2YgdHx8Im9iamVjdCI9PXR5cGVvZiB0JiZ0IGluc3RhbmNlb2YgRmF9KSh0KSYmWWUodCk7bj1lJiZ0aGlzLmluamVjdGFibGVEZWZJblNjb3BlKGUpP0NkKGhkKHQpLG1kKTpudWxsLHRoaXMucmVjb3Jkcy5zZXQodCxuKX1pZihudWxsIT1uKXJldHVybiB0aGlzLmh5ZHJhdGUodCxuKX1yZXR1cm4oZSZWZS5TZWxmP2JkKCk6dGhpcy5wYXJlbnQpLmdldCh0LG49ZSZWZS5PcHRpb25hbCYmbj09PUhhP251bGw6bil9Y2F0Y2gobil7aWYoIk51bGxJbmplY3RvckVycm9yIj09PW4ubmFtZSl7aWYoKG4ubmdUZW1wVG9rZW5QYXRoPW4ubmdUZW1wVG9rZW5QYXRofHxbXSkudW5zaGlmdCh0YSh0KSksYSl0aHJvdyBuO3JldHVybihmdW5jdGlvbiByKHQsbixlLGEpe2NvbnN0IG89dC5uZ1RlbXBUb2tlblBhdGg7dGhyb3cgbltWYV0mJm8udW5zaGlmdChuW1ZhXSksdC5tZXNzYWdlPShmdW5jdGlvbiByKHQsbixlLGE9bnVsbCl7dD10JiYiXG4iPT09dC5jaGFyQXQoMCkmJiLJtSI9PXQuY2hhckF0KDEpP3Quc3Vic3RyKDIpOnQ7bGV0IG89dGEobik7aWYoQXJyYXkuaXNBcnJheShuKSlvPW4ubWFwKHRhKS5qb2luKCIgLT4gIik7ZWxzZSBpZigib2JqZWN0Ij09dHlwZW9mIG4pe2xldCB0PVtdO2ZvcihsZXQgZSBpbiBuKWlmKG4uaGFzT3duUHJvcGVydHkoZSkpe2xldCBhPW5bZV07dC5wdXNoKGUrIjoiKygic3RyaW5nIj09dHlwZW9mIGE/SlNPTi5zdHJpbmdpZnkoYSk6dGEoYSkpKX1vPWB7JHt0LmpvaW4oIiwgIil9fWB9cmV0dXJuYCR7ZX0ke2E/IigiK2ErIikiOiIifVske299XTogJHt0LnJlcGxhY2UoQmEsIlxuICAiKX1gfSkoIlxuIit0Lm1lc3NhZ2UsbyxlLGEpLHQubmdUb2tlblBhdGg9byx0Lm5nVGVtcFRva2VuUGF0aD1udWxsLHR9KShuLHQsIlIzSW5qZWN0b3JFcnJvciIsdGhpcy5zb3VyY2UpfXRocm93IG59ZmluYWxseXtHYShhKX19X3Jlc29sdmVJbmplY3RvckRlZlR5cGVzKCl7dGhpcy5pbmplY3RvckRlZlR5cGVzLmZvckVhY2goKHQ9PnRoaXMuZ2V0KHQpKSl9dG9TdHJpbmcoKXtjb25zdCB0PVtdO3JldHVybiB0aGlzLnJlY29yZHMuZm9yRWFjaCgoKG4sZSk9PnQucHVzaCh0YShlKSkpKSxgUjNJbmplY3Rvclske3Quam9pbigiLCAiKX1dYH1hc3NlcnROb3REZXN0cm95ZWQoKXtpZih0aGlzLl9kZXN0cm95ZWQpdGhyb3cgbmV3IEVycm9yKCJJbmplY3RvciBoYXMgYWxyZWFkeSBiZWVuIGRlc3Ryb3llZC4iKX1wcm9jZXNzSW5qZWN0b3JUeXBlKHQsbixlKXtpZighKHQ9b2EodCkpKXJldHVybiExO2xldCBhPVplKHQpO2NvbnN0IG89bnVsbD09YSYmdC5uZ01vZHVsZXx8dm9pZCAwLHI9dm9pZCAwPT09bz90Om87bmdEZXZNb2RlJiYtMSE9PW4uaW5kZXhPZihyKSYmY3IodGEociksbi5tYXAodGEpKTtjb25zdCBpPS0xIT09ZS5pbmRleE9mKHIpO2lmKHZvaWQgMCE9PW8mJihhPVplKG8pKSxudWxsPT1hKXJldHVybiExO2lmKG51bGwhPWEuaW1wb3J0cyYmIWkpe2xldCB0O25nRGV2TW9kZSYmbi5wdXNoKHIpLGUucHVzaChyKTt0cnl7b28oYS5pbXBvcnRzLChhPT57dGhpcy5wcm9jZXNzSW5qZWN0b3JUeXBlKGEsbixlKSYmKHZvaWQgMD09PXQmJih0PVtdKSx0LnB1c2goYSkpfSkpfWZpbmFsbHl7bmdEZXZNb2RlJiZuLnBvcCgpfWlmKHZvaWQgMCE9PXQpZm9yKGxldCBuPTA7bjx0Lmxlbmd0aDtuKyspe2NvbnN0e25nTW9kdWxlOmUscHJvdmlkZXJzOmF9PXRbbl07b28oYSwodD0+dGhpcy5wcm9jZXNzUHJvdmlkZXIodCxlLGF8fGdkKSkpfX10aGlzLmluamVjdG9yRGVmVHlwZXMuYWRkKHIpLHRoaXMucmVjb3Jkcy5zZXQocixDZChhLmZhY3RvcnksbWQpKTtjb25zdCBjPWEucHJvdmlkZXJzO2lmKG51bGwhPWMmJiFpKXtjb25zdCBuPXQ7b28oYywodD0+dGhpcy5wcm9jZXNzUHJvdmlkZXIodCxuLGMpKSl9cmV0dXJuIHZvaWQgMCE9PW8mJnZvaWQgMCE9PXQucHJvdmlkZXJzfXByb2Nlc3NQcm92aWRlcih0LG4sZSl7bGV0IGE9T2QodD1vYSh0KSk/dDpvYSh0JiZ0LnByb3ZpZGUpO2NvbnN0IG89KGZ1bmN0aW9uIHIodCxuLGUpe3JldHVybiBNZCh0KT9DZCh2b2lkIDAsdC51c2VWYWx1ZSk6Q2QoX2QodCxuLGUpLG1kKX0pKHQsbixlKTtpZihPZCh0KXx8ITAhPT10Lm11bHRpKXtjb25zdCB0PXRoaXMucmVjb3Jkcy5nZXQoYSk7bmdEZXZNb2RlJiZ0JiZ2b2lkIDAhPT10Lm11bHRpJiZscigpfWVsc2V7bGV0IG49dGhpcy5yZWNvcmRzLmdldChhKTtuP25nRGV2TW9kZSYmdm9pZCAwPT09bi5tdWx0aSYmbHIoKToobj1DZCh2b2lkIDAsbWQsITApLG4uZmFjdG9yeT0oKT0+S2Eobi5tdWx0aSksdGhpcy5yZWNvcmRzLnNldChhLG4pKSxhPXQsbi5tdWx0aS5wdXNoKHQpfXRoaXMucmVjb3Jkcy5zZXQoYSxvKX1oeWRyYXRlKHQsbil7cmV0dXJuIG5nRGV2TW9kZSYmbi52YWx1ZT09PWRkP2NyKHRhKHQpKTpuLnZhbHVlPT09bWQmJihuLnZhbHVlPWRkLG4udmFsdWU9bi5mYWN0b3J5KCkpLCJvYmplY3QiPT10eXBlb2Ygbi52YWx1ZSYmbi52YWx1ZSYmKGZ1bmN0aW9uIGUodCl7cmV0dXJuIG51bGwhPT10JiYib2JqZWN0Ij09dHlwZW9mIHQmJiJmdW5jdGlvbiI9PXR5cGVvZiB0Lm5nT25EZXN0cm95fSkobi52YWx1ZSkmJnRoaXMub25EZXN0cm95LmFkZChuLnZhbHVlKSxuLnZhbHVlfWluamVjdGFibGVEZWZJblNjb3BlKHQpe3JldHVybiEhdC5wcm92aWRlZEluJiYoInN0cmluZyI9PXR5cGVvZiB0LnByb3ZpZGVkSW4/ImFueSI9PT10LnByb3ZpZGVkSW58fHQucHJvdmlkZWRJbj09PXRoaXMuc2NvcGU6dGhpcy5pbmplY3RvckRlZlR5cGVzLmhhcyh0LnByb3ZpZGVkSW4pKX19ZnVuY3Rpb24gaGQodCl7Y29uc3Qgbj1ZZSh0KSxlPW51bGwhPT1uP24uZmFjdG9yeTp6byh0KTtpZihudWxsIT09ZSlyZXR1cm4gZTtjb25zdCBhPVplKHQpO2lmKG51bGwhPT1hKXJldHVybiBhLmZhY3Rvcnk7aWYodCBpbnN0YW5jZW9mIEZhKXRocm93IG5ldyBFcnJvcihgVG9rZW4gJHt0YSh0KX0gaXMgbWlzc2luZyBhIMm1cHJvdiBkZWZpbml0aW9uLmApO2lmKHQgaW5zdGFuY2VvZiBGdW5jdGlvbilyZXR1cm4oZnVuY3Rpb24gbyh0KXtjb25zdCBuPXQubGVuZ3RoO2lmKG4+MCl7Y29uc3QgZT1jbyhuLCI/Iik7dGhyb3cgbmV3IEVycm9yKGBDYW4ndCByZXNvbHZlIGFsbCBwYXJhbWV0ZXJzIGZvciAke3RhKHQpfTogKCR7ZS5qb2luKCIsICIpfSkuYCl9Y29uc3QgZT0oZnVuY3Rpb24gYSh0KXtjb25zdCBuPXQmJih0W1hlXXx8dFtLZV18fHRbUWVdJiZ0W1FlXSgpKTtpZihuKXtjb25zdCBlPShmdW5jdGlvbiBlKHQpe2lmKHQuaGFzT3duUHJvcGVydHkoIm5hbWUiKSlyZXR1cm4gdC5uYW1lO2NvbnN0IG49KCIiK3QpLm1hdGNoKC9eZnVuY3Rpb25ccyooW15ccyhdKykvKTtyZXR1cm4gbnVsbD09PW4/IiI6blsxXX0pKHQpO3JldHVybiBjb25zb2xlLndhcm4oYERFUFJFQ0FURUQ6IERJIGlzIGluc3RhbnRpYXRpbmcgYSB0b2tlbiAiJHtlfSIgdGhhdCBpbmhlcml0cyBpdHMgQEluamVjdGFibGUgZGVjb3JhdG9yIGJ1dCBkb2VzIG5vdCBwcm92aWRlIG9uZSBpdHNlbGYuXG5UaGlzIHdpbGwgYmVjb21lIGFuIGVycm9yIGluIGEgZnV0dXJlIHZlcnNpb24gb2YgQW5ndWxhci4gUGxlYXNlIGFkZCBASW5qZWN0YWJsZSgpIHRvIHRoZSAiJHtlfSIgY2xhc3MuYCksbn1yZXR1cm4gbnVsbH0pKHQpO3JldHVybiBudWxsIT09ZT8oKT0+ZS5mYWN0b3J5KHQpOigpPT5uZXcgdH0pKHQpO3Rocm93IG5ldyBFcnJvcigidW5yZWFjaGFibGUiKX1mdW5jdGlvbiBfZCh0LG4sZSl7bGV0IGE7aWYoT2QodCkpe2NvbnN0IG49b2EodCk7cmV0dXJuIHpvKG4pfHxoZChuKX1pZihNZCh0KSlhPSgpPT5vYSh0LnVzZVZhbHVlKTtlbHNlIGlmKChmdW5jdGlvbiBvKHQpe3JldHVybiEoIXR8fCF0LnVzZUZhY3RvcnkpfSkodCkpYT0oKT0+dC51c2VGYWN0b3J5KC4uLkthKHQuZGVwc3x8W10pKTtlbHNlIGlmKChmdW5jdGlvbiByKHQpe3JldHVybiEoIXR8fCF0LnVzZUV4aXN0aW5nKX0pKHQpKWE9KCk9PlphKG9hKHQudXNlRXhpc3RpbmcpKTtlbHNle2NvbnN0IG89b2EodCYmKHQudXNlQ2xhc3N8fHQucHJvdmlkZSkpO2lmKG5nRGV2TW9kZSYmIW8mJihmdW5jdGlvbiBpKHQsbixlKXtsZXQgYT0iIjt0aHJvdyB0JiZuJiYoYT1gIC0gb25seSBpbnN0YW5jZXMgb2YgUHJvdmlkZXIgYW5kIFR5cGUgYXJlIGFsbG93ZWQsIGdvdDogWyR7bi5tYXAoKHQ9PnQ9PWU/Ij8iK2UrIj8iOiIuLi4iKSkuam9pbigiLCAiKX1dYCksbmV3IEVycm9yKGBJbnZhbGlkIHByb3ZpZGVyIGZvciB0aGUgTmdNb2R1bGUgJyR7dGEodCl9J2ArYSl9KShuLGUsdCksIShmdW5jdGlvbiBjKHQpe3JldHVybiEhdC5kZXBzfSkodCkpcmV0dXJuIHpvKG8pfHxoZChvKTthPSgpPT5uZXcgbyguLi5LYSh0LmRlcHMpKX1yZXR1cm4gYX1mdW5jdGlvbiBDZCh0LG4sZT0hMSl7cmV0dXJue2ZhY3Rvcnk6dCx2YWx1ZTpuLG11bHRpOmU/W106dm9pZCAwfX1mdW5jdGlvbiBNZCh0KXtyZXR1cm4gbnVsbCE9PXQmJiJvYmplY3QiPT10eXBlb2YgdCYmamEgaW4gdH1mdW5jdGlvbiBPZCh0KXtyZXR1cm4iZnVuY3Rpb24iPT10eXBlb2YgdH1jb25zdCBQZD1mdW5jdGlvbiB4ZCh0LG4sZSl7cmV0dXJuKGZ1bmN0aW9uIGEodCxuPW51bGwsZT1udWxsLG8pe2NvbnN0IHI9dWQodCxuLGUsbyk7cmV0dXJuIHIuX3Jlc29sdmVJbmplY3RvckRlZlR5cGVzKCkscn0pKHtuYW1lOmV9LG4sdCxlKX07Y2xhc3MgeWR7c3RhdGljIGNyZWF0ZSh0LG4pe3JldHVybiBBcnJheS5pc0FycmF5KHQpP1BkKHQsbiwiIik6UGQodC5wcm92aWRlcnMsdC5wYXJlbnQsdC5uYW1lfHwiIil9fWZ1bmN0aW9uIGtkKHQpe3JldHVybiB0Lmxlbmd0aD4xPyIgKCIrKAovKioKICAgICAqIEBsaWNlbnNlCiAgICAgKiBDb3B5cmlnaHQgR29vZ2xlIExMQyBBbGwgUmlnaHRzIFJlc2VydmVkLgogICAgICoKICAgICAqIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGFuIE1JVC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCiAgICAgKiBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlIGF0IGh0dHBzOi8vYW5ndWxhci5pby9saWNlbnNlCiAgICAgKi8KZnVuY3Rpb24gbih0KXtjb25zdCBuPVtdO2ZvcihsZXQgZT0wO2U8dC5sZW5ndGg7KytlKXtpZihuLmluZGV4T2YodFtlXSk+LTEpcmV0dXJuIG4ucHVzaCh0W2VdKSxuO24ucHVzaCh0W2VdKX1yZXR1cm4gbn0pKHQuc2xpY2UoKS5yZXZlcnNlKCkpLm1hcCgodD0+dGEodC50b2tlbikpKS5qb2luKCIgLT4gIikrIikiOiIifWZ1bmN0aW9uIHZkKHQsbixlLGEpe2NvbnN0IG89W25dLHI9ZShvKSxpPWE/KGZ1bmN0aW9uIGModCxuKXtjb25zdCBlPWAke3R9IGNhdXNlZCBieTogJHtuIGluc3RhbmNlb2YgRXJyb3I/bi5tZXNzYWdlOm59YCxhPUVycm9yKGUpO3JldHVybiBhLm5nT3JpZ2luYWxFcnJvcj1uLGF9KShyLGEpOkVycm9yKHIpO3JldHVybiBpLmFkZEtleT13ZCxpLmtleXM9byxpLmluamVjdG9ycz1bdF0saS5jb25zdHJ1Y3RSZXNvbHZpbmdNZXNzYWdlPWUsaS5uZ09yaWdpbmFsRXJyb3I9YSxpfWZ1bmN0aW9uIHdkKHQsbil7dGhpcy5pbmplY3RvcnMucHVzaCh0KSx0aGlzLmtleXMucHVzaChuKSx0aGlzLm1lc3NhZ2U9dGhpcy5jb25zdHJ1Y3RSZXNvbHZpbmdNZXNzYWdlKHRoaXMua2V5cyl9ZnVuY3Rpb24gU2QodCxuKXtjb25zdCBlPVtdO2ZvcihsZXQgdD0wLGE9bi5sZW5ndGg7dDxhO3QrKyl7Y29uc3QgYT1uW3RdO2UucHVzaChhJiYwIT1hLmxlbmd0aD9hLm1hcCh0YSkuam9pbigiICIpOiI/Iil9cmV0dXJuIEVycm9yKCJDYW5ub3QgcmVzb2x2ZSBhbGwgcGFyYW1ldGVycyBmb3IgJyIrdGEodCkrIicoIitlLmpvaW4oIiwgIikrIikuIE1ha2Ugc3VyZSB0aGF0IGFsbCB0aGUgcGFyYW1ldGVycyBhcmUgZGVjb3JhdGVkIHdpdGggSW5qZWN0IG9yIGhhdmUgdmFsaWQgdHlwZSBhbm5vdGF0aW9ucyBhbmQgdGhhdCAnIit0YSh0KSsiJyBpcyBkZWNvcmF0ZWQgd2l0aCBJbmplY3RhYmxlLiIpfXlkLlRIUk9XX0lGX05PVF9GT1VORD1IYSx5ZC5OVUxMPW5ldyAkYSx5ZC7JtXByb3Y9V2Uoe3Rva2VuOnlkLHByb3ZpZGVkSW46ImFueSIsZmFjdG9yeTooKT0+WmEoTGEpfSkseWQuX19OR19FTEVNRU5UX0lEX189LTE7Ci8qKgogICAgICogQGxpY2Vuc2UKICAgICAqIENvcHlyaWdodCBHb29nbGUgTExDIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCiAgICAgKgogICAgICogVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYW4gTUlULXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKICAgICAqIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUgYXQgaHR0cHM6Ly9hbmd1bGFyLmlvL2xpY2Vuc2UKICAgICAqLwpjbGFzcyBFZHtjb25zdHJ1Y3Rvcih0LG4pe2lmKHRoaXMudG9rZW49dCx0aGlzLmlkPW4sIXQpdGhyb3cgbmV3IEVycm9yKCJUb2tlbiBtdXN0IGJlIGRlZmluZWQhIik7dGhpcy5kaXNwbGF5TmFtZT10YSh0aGlzLnRva2VuKX1zdGF0aWMgZ2V0KHQpe3JldHVybiBBZC5nZXQob2EodCkpfXN0YXRpYyBnZXQgbnVtYmVyT2ZLZXlzKCl7cmV0dXJuIEFkLm51bWJlck9mS2V5c319Y29uc3QgQWQ9bmV3IGNsYXNze2NvbnN0cnVjdG9yKCl7dGhpcy5fYWxsS2V5cz1uZXcgTWFwfWdldCh0KXtpZih0IGluc3RhbmNlb2YgRWQpcmV0dXJuIHQ7aWYodGhpcy5fYWxsS2V5cy5oYXModCkpcmV0dXJuIHRoaXMuX2FsbEtleXMuZ2V0KHQpO2NvbnN0IG49bmV3IEVkKHQsRWQubnVtYmVyT2ZLZXlzKTtyZXR1cm4gdGhpcy5fYWxsS2V5cy5zZXQodCxuKSxufWdldCBudW1iZXJPZktleXMoKXtyZXR1cm4gdGhpcy5fYWxsS2V5cy5zaXplfX0semQ9bmV3Ci8qKgogICAgICogQGxpY2Vuc2UKICAgICAqIENvcHlyaWdodCBHb29nbGUgTExDIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCiAgICAgKgogICAgICogVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYW4gTUlULXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKICAgICAqIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUgYXQgaHR0cHM6Ly9hbmd1bGFyLmlvL2xpY2Vuc2UKICAgICAqLwpjbGFzc3tjb25zdHJ1Y3Rvcih0KXt0aGlzLnJlZmxlY3Rpb25DYXBhYmlsaXRpZXM9dH11cGRhdGVDYXBhYmlsaXRpZXModCl7dGhpcy5yZWZsZWN0aW9uQ2FwYWJpbGl0aWVzPXR9ZmFjdG9yeSh0KXtyZXR1cm4gdGhpcy5yZWZsZWN0aW9uQ2FwYWJpbGl0aWVzLmZhY3RvcnkodCl9cGFyYW1ldGVycyh0KXtyZXR1cm4gdGhpcy5yZWZsZWN0aW9uQ2FwYWJpbGl0aWVzLnBhcmFtZXRlcnModCl9YW5ub3RhdGlvbnModCl7cmV0dXJuIHRoaXMucmVmbGVjdGlvbkNhcGFiaWxpdGllcy5hbm5vdGF0aW9ucyh0KX1wcm9wTWV0YWRhdGEodCl7cmV0dXJuIHRoaXMucmVmbGVjdGlvbkNhcGFiaWxpdGllcy5wcm9wTWV0YWRhdGEodCl9aGFzTGlmZWN5Y2xlSG9vayh0LG4pe3JldHVybiB0aGlzLnJlZmxlY3Rpb25DYXBhYmlsaXRpZXMuaGFzTGlmZWN5Y2xlSG9vayh0LG4pfWdldHRlcih0KXtyZXR1cm4gdGhpcy5yZWZsZWN0aW9uQ2FwYWJpbGl0aWVzLmdldHRlcih0KX1zZXR0ZXIodCl7cmV0dXJuIHRoaXMucmVmbGVjdGlvbkNhcGFiaWxpdGllcy5zZXR0ZXIodCl9bWV0aG9kKHQpe3JldHVybiB0aGlzLnJlZmxlY3Rpb25DYXBhYmlsaXRpZXMubWV0aG9kKHQpfWltcG9ydFVyaSh0KXtyZXR1cm4gdGhpcy5yZWZsZWN0aW9uQ2FwYWJpbGl0aWVzLmltcG9ydFVyaSh0KX1yZXNvdXJjZVVyaSh0KXtyZXR1cm4gdGhpcy5yZWZsZWN0aW9uQ2FwYWJpbGl0aWVzLnJlc291cmNlVXJpKHQpfXJlc29sdmVJZGVudGlmaWVyKHQsbixlLGEpe3JldHVybiB0aGlzLnJlZmxlY3Rpb25DYXBhYmlsaXRpZXMucmVzb2x2ZUlkZW50aWZpZXIodCxuLGUsYSl9cmVzb2x2ZUVudW0odCxuKXtyZXR1cm4gdGhpcy5yZWZsZWN0aW9uQ2FwYWJpbGl0aWVzLnJlc29sdmVFbnVtKHQsbil9fQovKioKICAgICAqIEBsaWNlbnNlCiAgICAgKiBDb3B5cmlnaHQgR29vZ2xlIExMQyBBbGwgUmlnaHRzIFJlc2VydmVkLgogICAgICoKICAgICAqIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGFuIE1JVC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCiAgICAgKiBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlIGF0IGh0dHBzOi8vYW5ndWxhci5pby9saWNlbnNlCiAgICAgKi8obmV3IFhtKTsKLyoqCiAgICAgKiBAbGljZW5zZQogICAgICogQ29weXJpZ2h0IEdvb2dsZSBMTEMgQWxsIFJpZ2h0cyBSZXNlcnZlZC4KICAgICAqCiAgICAgKiBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhbiBNSVQtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQogICAgICogZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZSBhdCBodHRwczovL2FuZ3VsYXIuaW8vbGljZW5zZQogICAgICovCmNsYXNzIFJke2NvbnN0cnVjdG9yKHQsbixlKXt0aGlzLmtleT10LHRoaXMub3B0aW9uYWw9bix0aGlzLnZpc2liaWxpdHk9ZX1zdGF0aWMgZnJvbUtleSh0KXtyZXR1cm4gbmV3IFJkKHQsITEsbnVsbCl9fWNvbnN0IFRkPVtdO2NsYXNzIERke2NvbnN0cnVjdG9yKHQsbixlKXt0aGlzLmtleT10LHRoaXMucmVzb2x2ZWRGYWN0b3JpZXM9bix0aGlzLm11bHRpUHJvdmlkZXI9ZSx0aGlzLnJlc29sdmVkRmFjdG9yeT10aGlzLnJlc29sdmVkRmFjdG9yaWVzWzBdfX1jbGFzcyBJZHtjb25zdHJ1Y3Rvcih0LG4pe3RoaXMuZmFjdG9yeT10LHRoaXMuZGVwZW5kZW5jaWVzPW59fWZ1bmN0aW9uIE5kKHQpe2xldCBuLGU7aWYodC51c2VDbGFzcyl7Y29uc3QgYT1vYSh0LnVzZUNsYXNzKTtuPXpkLmZhY3RvcnkoYSksZT1CZChhKX1lbHNlIHQudXNlRXhpc3Rpbmc/KG49dD0+dCxlPVtSZC5mcm9tS2V5KEVkLmdldCh0LnVzZUV4aXN0aW5nKSldKTp0LnVzZUZhY3Rvcnk/KG49dC51c2VGYWN0b3J5LGU9KGZ1bmN0aW9uIGEodCxuKXtpZihuKXtjb25zdCBlPW4ubWFwKCh0PT5bdF0pKTtyZXR1cm4gbi5tYXAoKG49PlZkKHQsbixlKSkpfXJldHVybiBCZCh0KX0pKHQudXNlRmFjdG9yeSx0LmRlcHMpKToobj0oKT0+dC51c2VWYWx1ZSxlPVRkKTtyZXR1cm4gbmV3IElkKG4sZSl9ZnVuY3Rpb24gRmQodCl7cmV0dXJuIG5ldyBEZChFZC5nZXQodC5wcm92aWRlKSxbTmQodCldLHQubXVsdGl8fCExKX1mdW5jdGlvbiBMZCh0KXtjb25zdCBuPShmdW5jdGlvbiBlKHQsbil7Zm9yKGxldCBlPTA7ZTx0Lmxlbmd0aDtlKyspe2NvbnN0IGE9dFtlXSxvPW4uZ2V0KGEua2V5LmlkKTtpZihvKXtpZihhLm11bHRpUHJvdmlkZXIhPT1vLm11bHRpUHJvdmlkZXIpdGhyb3cgRXJyb3IoYENhbm5vdCBtaXggbXVsdGkgcHJvdmlkZXJzIGFuZCByZWd1bGFyIHByb3ZpZGVycywgZ290OiAke299ICR7YX1gKTtpZihhLm11bHRpUHJvdmlkZXIpZm9yKGxldCB0PTA7dDxhLnJlc29sdmVkRmFjdG9yaWVzLmxlbmd0aDt0Kyspby5yZXNvbHZlZEZhY3Rvcmllcy5wdXNoKGEucmVzb2x2ZWRGYWN0b3JpZXNbdF0pO2Vsc2Ugbi5zZXQoYS5rZXkuaWQsYSl9ZWxzZXtsZXQgdDt0PWEubXVsdGlQcm92aWRlcj9uZXcgRGQoYS5rZXksYS5yZXNvbHZlZEZhY3Rvcmllcy5zbGljZSgpLGEubXVsdGlQcm92aWRlcik6YSxuLnNldChhLmtleS5pZCx0KX19cmV0dXJuIG59KShIZCh0LFtdKS5tYXAoRmQpLG5ldyBNYXApO3JldHVybiBBcnJheS5mcm9tKG4udmFsdWVzKCkpfWZ1bmN0aW9uIEhkKHQsbil7cmV0dXJuIHQuZm9yRWFjaCgodD0+e2lmKHQgaW5zdGFuY2VvZiBVbSluLnB1c2goe3Byb3ZpZGU6dCx1c2VDbGFzczp0fSk7ZWxzZSBpZih0JiYib2JqZWN0Ij09dHlwZW9mIHQmJnZvaWQgMCE9PXQucHJvdmlkZSluLnB1c2godCk7ZWxzZXtpZighQXJyYXkuaXNBcnJheSh0KSl0aHJvdyhmdW5jdGlvbiBlKHQpe3JldHVybiBFcnJvcihgSW52YWxpZCBwcm92aWRlciAtIG9ubHkgaW5zdGFuY2VzIG9mIFByb3ZpZGVyIGFuZCBUeXBlIGFyZSBhbGxvd2VkLCBnb3Q6ICR7dH1gKX0pKHQpO0hkKHQsbil9fSkpLG59ZnVuY3Rpb24gQmQodCl7Y29uc3Qgbj16ZC5wYXJhbWV0ZXJzKHQpO2lmKCFuKXJldHVybltdO2lmKG4uc29tZSgodD0+bnVsbD09dCkpKXRocm93IFNkKHQsbik7cmV0dXJuIG4ubWFwKChlPT5WZCh0LGUsbikpKX1mdW5jdGlvbiBWZCh0LG4sZSl7bGV0IGE9bnVsbCxvPSExO2lmKCFBcnJheS5pc0FycmF5KG4pKXJldHVybiBqZChuIGluc3RhbmNlb2YgSWU/bi50b2tlbjpuLG8sbnVsbCk7bGV0IHI9bnVsbDtmb3IobGV0IHQ9MDt0PG4ubGVuZ3RoOysrdCl7Y29uc3QgZT1uW3RdO2UgaW5zdGFuY2VvZiBVbT9hPWU6ZSBpbnN0YW5jZW9mIEllP2E9ZS50b2tlbjplIGluc3RhbmNlb2YgTmU/bz0hMDplIGluc3RhbmNlb2YgRmV8fGUgaW5zdGFuY2VvZiBMZT9yPWU6ZSBpbnN0YW5jZW9mIEZhJiYoYT1lKX1pZihhPW9hKGEpLG51bGwhPWEpcmV0dXJuIGpkKGEsbyxyKTt0aHJvdyBTZCh0LGUpfWZ1bmN0aW9uIGpkKHQsbixlKXtyZXR1cm4gbmV3IFJkKEVkLmdldCh0KSxuLGUpfQovKioKICAgICAqIEBsaWNlbnNlCiAgICAgKiBDb3B5cmlnaHQgR29vZ2xlIExMQyBBbGwgUmlnaHRzIFJlc2VydmVkLgogICAgICoKICAgICAqIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGFuIE1JVC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCiAgICAgKiBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlIGF0IGh0dHBzOi8vYW5ndWxhci5pby9saWNlbnNlCiAgICAgKi9jb25zdCBVZD17fTtjbGFzcyBXZHtzdGF0aWMgcmVzb2x2ZSh0KXtyZXR1cm4gTGQodCl9c3RhdGljIHJlc29sdmVBbmRDcmVhdGUodCxuKXtjb25zdCBlPVdkLnJlc29sdmUodCk7cmV0dXJuIFdkLmZyb21SZXNvbHZlZFByb3ZpZGVycyhlLG4pfXN0YXRpYyBmcm9tUmVzb2x2ZWRQcm92aWRlcnModCxuKXtyZXR1cm4gbmV3IEdkKHQsbil9fWNsYXNzIEdke2NvbnN0cnVjdG9yKHQsbil7dGhpcy5fY29uc3RydWN0aW9uQ291bnRlcj0wLHRoaXMuX3Byb3ZpZGVycz10LHRoaXMucGFyZW50PW58fG51bGw7Y29uc3QgZT10Lmxlbmd0aDt0aGlzLmtleUlkcz1bXSx0aGlzLm9ianM9W107Zm9yKGxldCBuPTA7bjxlO24rKyl0aGlzLmtleUlkc1tuXT10W25dLmtleS5pZCx0aGlzLm9ianNbbl09VWR9Z2V0KHQsbj1IYSl7cmV0dXJuIHRoaXMuX2dldEJ5S2V5KEVkLmdldCh0KSxudWxsLG4pfXJlc29sdmVBbmRDcmVhdGVDaGlsZCh0KXtjb25zdCBuPVdkLnJlc29sdmUodCk7cmV0dXJuIHRoaXMuY3JlYXRlQ2hpbGRGcm9tUmVzb2x2ZWQobil9Y3JlYXRlQ2hpbGRGcm9tUmVzb2x2ZWQodCl7Y29uc3Qgbj1uZXcgR2QodCk7cmV0dXJuIG4ucGFyZW50PXRoaXMsbn1yZXNvbHZlQW5kSW5zdGFudGlhdGUodCl7cmV0dXJuIHRoaXMuaW5zdGFudGlhdGVSZXNvbHZlZChXZC5yZXNvbHZlKFt0XSlbMF0pfWluc3RhbnRpYXRlUmVzb2x2ZWQodCl7cmV0dXJuIHRoaXMuX2luc3RhbnRpYXRlUHJvdmlkZXIodCl9Z2V0UHJvdmlkZXJBdEluZGV4KHQpe2lmKHQ8MHx8dD49dGhpcy5fcHJvdmlkZXJzLmxlbmd0aCl0aHJvdyhmdW5jdGlvbiBuKHQpe3JldHVybiBFcnJvcihgSW5kZXggJHt0fSBpcyBvdXQtb2YtYm91bmRzLmApfSkodCk7cmV0dXJuIHRoaXMuX3Byb3ZpZGVyc1t0XX1fbmV3KHQpe2lmKHRoaXMuX2NvbnN0cnVjdGlvbkNvdW50ZXIrKz50aGlzLl9nZXRNYXhOdW1iZXJPZk9iamVjdHMoKSl0aHJvdyhmdW5jdGlvbiBuKHQsZSl7cmV0dXJuIHZkKHQsZSwoZnVuY3Rpb24odCl7cmV0dXJuYENhbm5vdCBpbnN0YW50aWF0ZSBjeWNsaWMgZGVwZW5kZW5jeSEke2tkKHQpfWB9KSl9KSh0aGlzLHQua2V5KTtyZXR1cm4gdGhpcy5faW5zdGFudGlhdGVQcm92aWRlcih0KX1fZ2V0TWF4TnVtYmVyT2ZPYmplY3RzKCl7cmV0dXJuIHRoaXMub2Jqcy5sZW5ndGh9X2luc3RhbnRpYXRlUHJvdmlkZXIodCl7aWYodC5tdWx0aVByb3ZpZGVyKXtjb25zdCBuPVtdO2ZvcihsZXQgZT0wO2U8dC5yZXNvbHZlZEZhY3Rvcmllcy5sZW5ndGg7KytlKW5bZV09dGhpcy5faW5zdGFudGlhdGUodCx0LnJlc29sdmVkRmFjdG9yaWVzW2VdKTtyZXR1cm4gbn1yZXR1cm4gdGhpcy5faW5zdGFudGlhdGUodCx0LnJlc29sdmVkRmFjdG9yaWVzWzBdKX1faW5zdGFudGlhdGUodCxuKXtjb25zdCBlPW4uZmFjdG9yeTtsZXQgYSxvO3RyeXthPW4uZGVwZW5kZW5jaWVzLm1hcCgodD0+dGhpcy5fZ2V0QnlSZWZsZWN0aXZlRGVwZW5kZW5jeSh0KSkpfWNhdGNoKG4pe3Rocm93IG4uYWRkS2V5JiZuLmFkZEtleSh0aGlzLHQua2V5KSxufXRyeXtvPWUoLi4uYSl9Y2F0Y2gobil7dGhyb3coZnVuY3Rpb24gcih0LG4sZSxhKXtyZXR1cm4gdmQodCxhLChmdW5jdGlvbih0KXtjb25zdCBlPXRhKHRbMF0udG9rZW4pO3JldHVybmAke24ubWVzc2FnZX06IEVycm9yIGR1cmluZyBpbnN0YW50aWF0aW9uIG9mICR7ZX0hJHtrZCh0KX0uYH0pLG4pfSkodGhpcyxuLDAsdC5rZXkpfXJldHVybiBvfV9nZXRCeVJlZmxlY3RpdmVEZXBlbmRlbmN5KHQpe3JldHVybiB0aGlzLl9nZXRCeUtleSh0LmtleSx0LnZpc2liaWxpdHksdC5vcHRpb25hbD9udWxsOkhhKX1fZ2V0QnlLZXkodCxuLGUpe3JldHVybiB0PT09R2QuSU5KRUNUT1JfS0VZP3RoaXM6biBpbnN0YW5jZW9mIEZlP3RoaXMuX2dldEJ5S2V5U2VsZih0LGUpOnRoaXMuX2dldEJ5S2V5RGVmYXVsdCh0LGUsbil9X2dldE9iakJ5S2V5SWQodCl7Zm9yKGxldCBuPTA7bjx0aGlzLmtleUlkcy5sZW5ndGg7bisrKWlmKHRoaXMua2V5SWRzW25dPT09dClyZXR1cm4gdGhpcy5vYmpzW25dPT09VWQmJih0aGlzLm9ianNbbl09dGhpcy5fbmV3KHRoaXMuX3Byb3ZpZGVyc1tuXSkpLHRoaXMub2Jqc1tuXTtyZXR1cm4gVWR9X3Rocm93T3JOdWxsKHQsbil7aWYobiE9PUhhKXJldHVybiBuO3Rocm93KGZ1bmN0aW9uIGUodCxuKXtyZXR1cm4gdmQodCxuLChmdW5jdGlvbih0KXtyZXR1cm5gTm8gcHJvdmlkZXIgZm9yICR7dGEodFswXS50b2tlbil9ISR7a2QodCl9YH0pKX0pKHRoaXMsdCl9X2dldEJ5S2V5U2VsZih0LG4pe2NvbnN0IGU9dGhpcy5fZ2V0T2JqQnlLZXlJZCh0LmlkKTtyZXR1cm4gZSE9PVVkP2U6dGhpcy5fdGhyb3dPck51bGwodCxuKX1fZ2V0QnlLZXlEZWZhdWx0KHQsbixlKXtsZXQgYTtmb3IoYT1lIGluc3RhbmNlb2YgTGU/dGhpcy5wYXJlbnQ6dGhpczthIGluc3RhbmNlb2YgR2Q7KXtjb25zdCBuPWEsZT1uLl9nZXRPYmpCeUtleUlkKHQuaWQpO2lmKGUhPT1VZClyZXR1cm4gZTthPW4ucGFyZW50fXJldHVybiBudWxsIT09YT9hLmdldCh0LnRva2VuLG4pOnRoaXMuX3Rocm93T3JOdWxsKHQsbil9Z2V0IGRpc3BsYXlOYW1lKCl7cmV0dXJuYFJlZmxlY3RpdmVJbmplY3Rvcihwcm92aWRlcnM6IFskeyhmdW5jdGlvbiB0KG4sZSl7Y29uc3QgYT1bXTtmb3IobGV0IHQ9MDt0PG4uX3Byb3ZpZGVycy5sZW5ndGg7Kyt0KWFbdF09ZShuLmdldFByb3ZpZGVyQXRJbmRleCh0KSk7cmV0dXJuIGF9Ci8qKgogICAgICogQGxpY2Vuc2UKICAgICAqIENvcHlyaWdodCBHb29nbGUgTExDIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCiAgICAgKgogICAgICogVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYW4gTUlULXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKICAgICAqIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUgYXQgaHR0cHM6Ly9hbmd1bGFyLmlvL2xpY2Vuc2UKICAgICAqLwovKioKICAgICAqIEBsaWNlbnNlCiAgICAgKiBDb3B5cmlnaHQgR29vZ2xlIExMQyBBbGwgUmlnaHRzIFJlc2VydmVkLgogICAgICoKICAgICAqIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGFuIE1JVC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCiAgICAgKiBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlIGF0IGh0dHBzOi8vYW5ndWxhci5pby9saWNlbnNlCiAgICAgKi8KLyoqCiAgICAgKiBAbGljZW5zZQogICAgICogQ29weXJpZ2h0IEdvb2dsZSBMTEMgQWxsIFJpZ2h0cyBSZXNlcnZlZC4KICAgICAqCiAgICAgKiBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhbiBNSVQtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQogICAgICogZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZSBhdCBodHRwczovL2FuZ3VsYXIuaW8vbGljZW5zZQogICAgICovKSh0aGlzLCh0PT4nICInK3Qua2V5LmRpc3BsYXlOYW1lKyciICcpKS5qb2luKCIsICIpfV0pYH10b1N0cmluZygpe3JldHVybiB0aGlzLmRpc3BsYXlOYW1lfX1HZC5JTkpFQ1RPUl9LRVk9RWQuZ2V0KHlkKSxuZXcgRmEoIkFuYWx5emVGb3JFbnRyeUNvbXBvbmVudHMiKTtjbGFzcyBZZHt9Y29uc3QgcWQ9RGUoIkNvbnRlbnRDaGlsZHJlbiIsKCh0LG49e30pPT5PYmplY3QuYXNzaWduKHtzZWxlY3Rvcjp0LGZpcnN0OiExLGlzVmlld1F1ZXJ5OiExLGRlc2NlbmRhbnRzOiExfSxuKSksWWQpLFpkPURlKCJDb250ZW50Q2hpbGQiLCgodCxuPXt9KT0+T2JqZWN0LmFzc2lnbih7c2VsZWN0b3I6dCxmaXJzdDohMCxpc1ZpZXdRdWVyeTohMSxkZXNjZW5kYW50czohMH0sbikpLFlkKTtEZSgiVmlld0NoaWxkcmVuIiwoKHQsbj17fSk9Pk9iamVjdC5hc3NpZ24oe3NlbGVjdG9yOnQsZmlyc3Q6ITEsaXNWaWV3UXVlcnk6ITAsZGVzY2VuZGFudHM6ITB9LG4pKSxZZCk7Y29uc3QgWGQ9RGUoIlZpZXdDaGlsZCIsKCh0LG4pPT5PYmplY3QuYXNzaWduKHtzZWxlY3Rvcjp0LGZpcnN0OiEwLGlzVmlld1F1ZXJ5OiEwLGRlc2NlbmRhbnRzOiEwfSxuKSksWWQpO2xldCBKZD1uZXcgTWFwO2NvbnN0IFFkPW5ldyBTZXQ7ZnVuY3Rpb24gS2QodCl7cmV0dXJuISEodC50ZW1wbGF0ZVVybCYmIXQuaGFzT3duUHJvcGVydHkoInRlbXBsYXRlIil8fHQuc3R5bGVVcmxzJiZ0LnN0eWxlVXJscy5sZW5ndGgpfWZ1bmN0aW9uICRkKHQpe3JldHVybiJzdHJpbmciPT10eXBlb2YgdD90OnQudGV4dCgpfQovKioKICAgICAqIEBsaWNlbnNlCiAgICAgKiBDb3B5cmlnaHQgR29vZ2xlIExMQyBBbGwgUmlnaHRzIFJlc2VydmVkLgogICAgICoKICAgICAqIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGFuIE1JVC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCiAgICAgKiBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlIGF0IGh0dHBzOi8vYW5ndWxhci5pby9saWNlbnNlCiAgICAgKi8KZnVuY3Rpb24gdGcodCxuLGUpe25nRGV2TW9kZSYmWG8oVnIoKSwiRXhwZWN0aW5nIHRvIGJlIGNhbGxlZCBpbiBmaXJzdCB0ZW1wbGF0ZSBwYXNzIG9ubHkiKTtsZXQgYT1lP3Quc3R5bGVzOm51bGwsbz1lP3QuY2xhc3NlczpudWxsLHI9MDtpZihudWxsIT09bilmb3IobGV0IHQ9MDt0PG4ubGVuZ3RoO3QrKyl7Y29uc3QgZT1uW3RdOyJudW1iZXIiPT10eXBlb2YgZT9yPWU6MT09cj9vPW5hKG8sZSk6Mj09ciYmKGE9bmEoYSxlKyI6ICIrblsrK3RdKyI7IikpfWU/dC5zdHlsZXM9YTp0LnN0eWxlc1dpdGhvdXRIb3N0PWEsZT90LmNsYXNzZXM9bzp0LmNsYXNzZXNXaXRob3V0SG9zdD1vfQovKioKICAgICAqIEBsaWNlbnNlCiAgICAgKiBDb3B5cmlnaHQgR29vZ2xlIExMQyBBbGwgUmlnaHRzIFJlc2VydmVkLgogICAgICoKICAgICAqIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGFuIE1JVC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCiAgICAgKiBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlIGF0IGh0dHBzOi8vYW5ndWxhci5pby9saWNlbnNlCiAgICAgKi8KLyoqCiAgICAgKiBAbGljZW5zZQogICAgICogQ29weXJpZ2h0IEdvb2dsZSBMTEMgQWxsIFJpZ2h0cyBSZXNlcnZlZC4KICAgICAqCiAgICAgKiBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhbiBNSVQtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQogICAgICogZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZSBhdCBodHRwczovL2FuZ3VsYXIuaW8vbGljZW5zZQogICAgICovCmZ1bmN0aW9uIG5nKHQpe2RnKHQpO2NvbnN0IG49Y2codCwhMSk7cmV0dXJuIG51bGw9PT1uP251bGw6KHZvaWQgMD09PW4uY29tcG9uZW50JiYobi5jb21wb25lbnQ9KGZ1bmN0aW9uIGUodCxuKXtjb25zdCBlPW5bMV0uZGF0YVt0XTtyZXR1cm4gMiZlLmZsYWdzP25bZS5kaXJlY3RpdmVTdGFydF06bnVsbH0pKG4ubm9kZUluZGV4LG4ubFZpZXcpKSxuLmNvbXBvbmVudCl9ZnVuY3Rpb24gZWcodCl7ZGcodCk7Y29uc3Qgbj1jZyh0LCExKTtyZXR1cm4gbnVsbD09PW4/bnVsbDpuLmxWaWV3WzhdfWZ1bmN0aW9uIGFnKHQpe2NvbnN0IG49Y2codCwhMSk7aWYobnVsbD09PW4pcmV0dXJuIG51bGw7bGV0IGUsYT1uLmxWaWV3O2ZvcihuZ0Rldk1vZGUmJlpvKGEpOzI9PT1hWzFdLnR5cGUmJihlPVBzKGEpKTspYT1lO3JldHVybiA1MTImYVsyXT9udWxsOmFbOF19ZnVuY3Rpb24gb2codCl7cmV0dXJuWy4uLnhzKHQpLmNvbXBvbmVudHNdfWZ1bmN0aW9uIHJnKHQpe2NvbnN0IG49Y2codCwhMSk7cmV0dXJuIG51bGw9PT1uP3lkLk5VTEw6bmV3IEtpKG4ubFZpZXdbMV0uZGF0YVtuLm5vZGVJbmRleF0sbi5sVmlldyl9ZnVuY3Rpb24gaWcodCl7Y29uc3Qgbj1jZyh0KTtyZXR1cm4gdm9pZCAwPT09bi5kaXJlY3RpdmVzJiYobi5kaXJlY3RpdmVzPXNzKG4ubm9kZUluZGV4LG4ubFZpZXcsITEpKSxudWxsPT09bi5kaXJlY3RpdmVzP1tdOlsuLi5uLmRpcmVjdGl2ZXNdfWZ1bmN0aW9uIGNnKHQsbj0hMCl7Y29uc3QgZT1ucyh0KTtpZighZSYmbil0aHJvdyBuZXcgRXJyb3IobmdEZXZNb2RlP2BVbmFibGUgdG8gZmluZCBjb250ZXh0IGFzc29jaWF0ZWQgd2l0aCAke3RyKHQpfWA6IkludmFsaWQgbmcgdGFyZ2V0Iik7cmV0dXJuIGV9ZnVuY3Rpb24gc2codCl7cmV0dXJuIG5zKHQpLm5hdGl2ZX1mdW5jdGlvbiBsZyh0KXtkZyh0KTtjb25zdCBuPWNnKHQsITEpO2lmKG51bGw9PT1uKXJldHVybltdO2NvbnN0IGU9bi5sVmlldyxhPWVbN10sbz1lWzFdLmNsZWFudXAscj1bXTtpZihvJiZhKWZvcihsZXQgbj0wO248by5sZW5ndGg7KXtjb25zdCBpPW9bbisrXSxjPW9bbisrXTtpZigic3RyaW5nIj09dHlwZW9mIGkpe2NvbnN0IHM9aSxsPWtyKGVbY10pLG09YVtvW24rK11dLGQ9b1tuKytdLGc9ImJvb2xlYW4iPT10eXBlb2YgZHx8ZD49MD8iZG9tIjoib3V0cHV0IixwPSJib29sZWFuIj09dHlwZW9mIGQmJmQ7dD09bCYmci5wdXNoKHtlbGVtZW50OnQsbmFtZTpzLGNhbGxiYWNrOm0sdXNlQ2FwdHVyZTpwLHR5cGU6Z30pfX1yZXR1cm4gci5zb3J0KG1nKSxyfWZ1bmN0aW9uIG1nKHQsbil7cmV0dXJuIHQubmFtZT09bi5uYW1lPzA6dC5uYW1lPG4ubmFtZT8tMToxfWZ1bmN0aW9uIGRnKHQpe2lmKCJ1bmRlZmluZWQiIT10eXBlb2YgRWxlbWVudCYmISh0IGluc3RhbmNlb2YgRWxlbWVudCkpdGhyb3cgbmV3IEVycm9yKCJFeHBlY3RpbmcgaW5zdGFuY2Ugb2YgRE9NIEVsZW1lbnQiKX0KLyoqCiAgICAgKiBAbGljZW5zZQogICAgICogQ29weXJpZ2h0IEdvb2dsZSBMTEMgQWxsIFJpZ2h0cyBSZXNlcnZlZC4KICAgICAqCiAgICAgKiBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhbiBNSVQtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQogICAgICogZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZSBhdCBodHRwczovL2FuZ3VsYXIuaW8vbGljZW5zZQogICAgICovZnVuY3Rpb24gZ2codCl7KGZ1bmN0aW9uIG4odCl7bmdEZXZNb2RlJiZUYSh0LCJjb21wb25lbnQiKTtjb25zdCBuPVFsKGFzKHQpKTtuZ0Rldk1vZGUmJlRhKG5bOF0sInJvb3RDb250ZXh0IHNob3VsZCBiZSBkZWZpbmVkIiksKGZ1bmN0aW9uIGUodCxuKXtpZigwPT09dC5mbGFncyYmdC5jbGVhbj09ZGwpe2xldCBlO3QuZmxhZ3N8PW4sdC5jbGVhbj1uZXcgUHJvbWlzZSgodD0+ZT10KSksdC5zY2hlZHVsZXIoKCgpPT57aWYoMSZ0LmZsYWdzJiYodC5mbGFncyY9LTIsS2wodCkpLDImdC5mbGFncyl7dC5mbGFncyY9LTM7Y29uc3Qgbj10LnBsYXllckhhbmRsZXI7biYmbi5mbHVzaFBsYXllcnMoKX10LmNsZWFuPWRsLGUobnVsbCl9KSl9fSkobls4XSwxKX0pKHQpLG9nKHQpLmZvckVhY2goKHQ9PihmdW5jdGlvbiBuKHQpe2NvbnN0IG49YXModCk7JGwoblsxXSxuLHQpfSkodCkpKX0KLyoqCiAgICAgKiBAbGljZW5zZQogICAgICogQ29weXJpZ2h0IEdvb2dsZSBMTEMgQWxsIFJpZ2h0cyBSZXNlcnZlZC4KICAgICAqCiAgICAgKiBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhbiBNSVQtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQogICAgICogZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZSBhdCBodHRwczovL2FuZ3VsYXIuaW8vbGljZW5zZQogICAgICovbGV0IHBnPSExO2Z1bmN0aW9uIGJnKHQsbil7aWYoInVuZGVmaW5lZCI9PXR5cGVvZiBDT01QSUxFRHx8IUNPTVBJTEVEKXtjb25zdCBlPW1hO2lmKG5nRGV2TW9kZSYmVGEobiwiZnVuY3Rpb24gbm90IGRlZmluZWQiKSxlKXtsZXQgYT1lLm5nO2F8fChhPWUubmc9e30pLGFbdF09bn19fWZ1bmN0aW9uIHVnKHQsbil7Y29uc3QgZT1Scih0KVsxXSxhPWUuZGF0YS5sZW5ndGgtMTtoaShlLHtkaXJlY3RpdmVTdGFydDphLGRpcmVjdGl2ZUVuZDphKzF9KX0KLyoqCiAgICAgKiBAbGljZW5zZQogICAgICogQ29weXJpZ2h0IEdvb2dsZSBMTEMgQWxsIFJpZ2h0cyBSZXNlcnZlZC4KICAgICAqCiAgICAgKiBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhbiBNSVQtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQogICAgICogZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZSBhdCBodHRwczovL2FuZ3VsYXIuaW8vbGljZW5zZQogICAgICovZnVuY3Rpb24gZmcodCl7cmV0dXJuIE9iamVjdC5nZXRQcm90b3R5cGVPZih0LnByb3RvdHlwZSkuY29uc3RydWN0b3J9ZnVuY3Rpb24gaGcodCl7bGV0IG49ZmcodC50eXBlKSxlPSEwO2NvbnN0IGE9W3RdO2Zvcig7bjspe2xldCBvO2lmKFZvKHQpKW89bi7JtWNtcHx8bi7JtWRpcjtlbHNle2lmKG4uybVjbXApdGhyb3cgbmV3IEVycm9yKCJEaXJlY3RpdmVzIGNhbm5vdCBpbmhlcml0IENvbXBvbmVudHMiKTtvPW4uybVkaXJ9aWYobyl7aWYoZSl7YS5wdXNoKG8pO2NvbnN0IG49dDtuLmlucHV0cz1fZyh0LmlucHV0cyksbi5kZWNsYXJlZElucHV0cz1fZyh0LmRlY2xhcmVkSW5wdXRzKSxuLm91dHB1dHM9X2codC5vdXRwdXRzKTtjb25zdCBlPW8uaG9zdEJpbmRpbmdzO2UmJk9nKHQsZSk7Y29uc3Qgcj1vLnZpZXdRdWVyeSxpPW8uY29udGVudFF1ZXJpZXM7aWYociYmQ2codCxyKSxpJiZNZyh0LGkpLFVlKHQuaW5wdXRzLG8uaW5wdXRzKSxVZSh0LmRlY2xhcmVkSW5wdXRzLG8uZGVjbGFyZWRJbnB1dHMpLFVlKHQub3V0cHV0cyxvLm91dHB1dHMpLFZvKG8pJiZvLmRhdGEuYW5pbWF0aW9uKXtjb25zdCBuPXQuZGF0YTtuLmFuaW1hdGlvbj0obi5hbmltYXRpb258fFtdKS5jb25jYXQoby5kYXRhLmFuaW1hdGlvbil9fWNvbnN0IG49by5mZWF0dXJlcztpZihuKWZvcihsZXQgYT0wO2E8bi5sZW5ndGg7YSsrKXtjb25zdCBvPW5bYV07byYmby5uZ0luaGVyaXQmJm8odCksbz09PWhnJiYoZT0hMSl9fW49T2JqZWN0LmdldFByb3RvdHlwZU9mKG4pfSEoZnVuY3Rpb24gbyh0KXtsZXQgbj0wLGU9bnVsbDtmb3IobGV0IGE9dC5sZW5ndGgtMTthPj0wO2EtLSl7Y29uc3Qgbz10W2FdO28uaG9zdFZhcnM9bis9by5ob3N0VmFycyxvLmhvc3RBdHRycz1SaShvLmhvc3RBdHRycyxlPVJpKGUsby5ob3N0QXR0cnMpKX19KShhKX1mdW5jdGlvbiBfZyh0KXtyZXR1cm4gdD09PXVvP3t9OnQ9PT1mbz9bXTp0fWZ1bmN0aW9uIENnKHQsbil7Y29uc3QgZT10LnZpZXdRdWVyeTt0LnZpZXdRdWVyeT1lPyh0LGEpPT57bih0LGEpLGUodCxhKX06bn1mdW5jdGlvbiBNZyh0LG4pe2NvbnN0IGU9dC5jb250ZW50UXVlcmllczt0LmNvbnRlbnRRdWVyaWVzPWU/KHQsYSxvKT0+e24odCxhLG8pLGUodCxhLG8pfTpufWZ1bmN0aW9uIE9nKHQsbil7Y29uc3QgZT10Lmhvc3RCaW5kaW5nczt0Lmhvc3RCaW5kaW5ncz1lPyh0LGEpPT57bih0LGEpLGUodCxhKX06bn0KLyoqCiAgICAgKiBAbGljZW5zZQogICAgICogQ29weXJpZ2h0IEdvb2dsZSBMTEMgQWxsIFJpZ2h0cyBSZXNlcnZlZC4KICAgICAqCiAgICAgKiBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhbiBNSVQtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQogICAgICogZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZSBhdCBodHRwczovL2FuZ3VsYXIuaW8vbGljZW5zZQogICAgICovY29uc3QgUGc9WyJwcm92aWRlcnNSZXNvbHZlciJdLHhnPVsidGVtcGxhdGUiLCJkZWNscyIsImNvbnN0cyIsInZhcnMiLCJvblB1c2giLCJuZ0NvbnRlbnRTZWxlY3RvcnMiLCJzdHlsZXMiLCJlbmNhcHN1bGF0aW9uIiwic2NoZW1hcyJdOwovKioKICAgICAqIEBsaWNlbnNlCiAgICAgKiBDb3B5cmlnaHQgR29vZ2xlIExMQyBBbGwgUmlnaHRzIFJlc2VydmVkLgogICAgICoKICAgICAqIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGFuIE1JVC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCiAgICAgKiBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlIGF0IGh0dHBzOi8vYW5ndWxhci5pby9saWNlbnNlCiAgICAgKi8KbGV0IHlnPW51bGw7ZnVuY3Rpb24ga2coKXtpZigheWcpe2NvbnN0IHQ9bWEuU3ltYm9sO2lmKHQmJnQuaXRlcmF0b3IpeWc9dC5pdGVyYXRvcjtlbHNle2NvbnN0IHQ9T2JqZWN0LmdldE93blByb3BlcnR5TmFtZXMoTWFwLnByb3RvdHlwZSk7Zm9yKGxldCBuPTA7bjx0Lmxlbmd0aDsrK24pe2NvbnN0IGU9dFtuXTsiZW50cmllcyIhPT1lJiYic2l6ZSIhPT1lJiZNYXAucHJvdG90eXBlW2VdPT09TWFwLnByb3RvdHlwZS5lbnRyaWVzJiYoeWc9ZSl9fX1yZXR1cm4geWd9Ci8qKgogICAgICogQGxpY2Vuc2UKICAgICAqIENvcHlyaWdodCBHb29nbGUgTExDIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCiAgICAgKgogICAgICogVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYW4gTUlULXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKICAgICAqIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUgYXQgaHR0cHM6Ly9hbmd1bGFyLmlvL2xpY2Vuc2UKICAgICAqL2Z1bmN0aW9uIHZnKHQsbil7Y29uc3QgZT1TZyh0KSxhPVNnKG4pO2lmKGUmJmEpcmV0dXJuKGZ1bmN0aW9uIG8odCxuLGUpe2NvbnN0IGE9dFtrZygpXSgpLG89bltrZygpXSgpO2Zvcig7Oyl7Y29uc3QgdD1hLm5leHQoKSxuPW8ubmV4dCgpO2lmKHQuZG9uZSYmbi5kb25lKXJldHVybiEwO2lmKHQuZG9uZXx8bi5kb25lKXJldHVybiExO2lmKCFlKHQudmFsdWUsbi52YWx1ZSkpcmV0dXJuITF9fSkodCxuLHZnKTt7Y29uc3Qgbz10JiYoIm9iamVjdCI9PXR5cGVvZiB0fHwiZnVuY3Rpb24iPT10eXBlb2YgdCkscj1uJiYoIm9iamVjdCI9PXR5cGVvZiBufHwiZnVuY3Rpb24iPT10eXBlb2Ygbik7cmV0dXJuIShlfHwhb3x8YXx8IXIpfHxPYmplY3QuaXModCxuKX19Y2xhc3Mgd2d7Y29uc3RydWN0b3IodCl7dGhpcy53cmFwcGVkPXR9c3RhdGljIHdyYXAodCl7cmV0dXJuIG5ldyB3Zyh0KX1zdGF0aWMgdW53cmFwKHQpe3JldHVybiB3Zy5pc1dyYXBwZWQodCk/dC53cmFwcGVkOnR9c3RhdGljIGlzV3JhcHBlZCh0KXtyZXR1cm4gdCBpbnN0YW5jZW9mIHdnfX1mdW5jdGlvbiBTZyh0KXtyZXR1cm4hIUVnKHQpJiYoQXJyYXkuaXNBcnJheSh0KXx8ISh0IGluc3RhbmNlb2YgTWFwKSYma2coKWluIHQpfWZ1bmN0aW9uIEVnKHQpe3JldHVybiBudWxsIT09dCYmKCJmdW5jdGlvbiI9PXR5cGVvZiB0fHwib2JqZWN0Ij09dHlwZW9mIHQpfQovKioKICAgICAqIEBsaWNlbnNlCiAgICAgKiBDb3B5cmlnaHQgR29vZ2xlIExMQyBBbGwgUmlnaHRzIFJlc2VydmVkLgogICAgICoKICAgICAqIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGFuIE1JVC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCiAgICAgKiBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlIGF0IGh0dHBzOi8vYW5ndWxhci5pby9saWNlbnNlCiAgICAgKi9mdW5jdGlvbiBBZyh0LG4sZSl7cmV0dXJuIHRbbl09ZX1mdW5jdGlvbiB6Zyh0LG4pe3JldHVybiBuZ0Rldk1vZGUmJk5hKHQsbiksbmdEZXZNb2RlJiZFYSh0W25dLE9zLCJTdG9yZWQgdmFsdWUgc2hvdWxkIG5ldmVyIGJlIE5PX0NIQU5HRS4iKSx0W25dfWZ1bmN0aW9uIFJnKHQsbixlKXtuZ0Rldk1vZGUmJkVhKGUsT3MsIkluY29taW5nIHZhbHVlIHNob3VsZCBuZXZlciBiZSBOT19DSEFOR0UuIiksbmdEZXZNb2RlJiZBYShuLHQubGVuZ3RoLCJTbG90IHNob3VsZCBoYXZlIGJlZW4gaW5pdGlhbGl6ZWQgdG8gTk9fQ0hBTkdFIik7Y29uc3QgYT10W25dO2lmKE9iamVjdC5pcyhhLGUpKXJldHVybiExO2lmKG5nRGV2TW9kZSYmcXIoKSl7Y29uc3Qgbz1hIT09T3M/YTp2b2lkIDA7aWYoIXZnKG8sZSkpe2NvbnN0IHI9KGZ1bmN0aW9uIG8odCxuLGUsYSl7Y29uc3Qgbz10WzFdLmRhdGEscj1vW25dO2lmKCJzdHJpbmciPT10eXBlb2YgcilyZXR1cm4gci5pbmRleE9mKHJyKT4tMT9tcih0LG4sbixyLGEpOntwcm9wTmFtZTpyLG9sZFZhbHVlOmUsbmV3VmFsdWU6YX07aWYobnVsbD09PXIpe2xldCBlPW4tMTtmb3IoOyJzdHJpbmciIT10eXBlb2Ygb1tlXSYmbnVsbD09PW9bZSsxXTspZS0tO2NvbnN0IHI9b1tlXTtpZigic3RyaW5nIj09dHlwZW9mIHIpe2NvbnN0IG89ci5tYXRjaChuZXcgUmVnRXhwKHJyLCJnIikpO2lmKG8mJm8ubGVuZ3RoLTE+bi1lKXJldHVybiBtcih0LGUsbixyLGEpfX1yZXR1cm57cHJvcE5hbWU6dm9pZCAwLG9sZFZhbHVlOmUsbmV3VmFsdWU6YX19KSh0LG4sbyxlKTshKGZ1bmN0aW9uIHIodCxuLGUsYSl7bGV0IG89YEV4cHJlc3Npb25DaGFuZ2VkQWZ0ZXJJdEhhc0JlZW5DaGVja2VkRXJyb3I6IEV4cHJlc3Npb24gaGFzIGNoYW5nZWQgYWZ0ZXIgaXQgd2FzIGNoZWNrZWQuIFByZXZpb3VzIHZhbHVlJHthP2AgZm9yICcke2F9J2A6IiJ9OiAnJHtufScuIEN1cnJlbnQgdmFsdWU6ICcke2V9Jy5gO3Rocm93IHQmJihvKz0iIEl0IHNlZW1zIGxpa2UgdGhlIHZpZXcgaGFzIGJlZW4gY3JlYXRlZCBhZnRlciBpdHMgcGFyZW50IGFuZCBpdHMgY2hpbGRyZW4gaGF2ZSBiZWVuIGRpcnR5IGNoZWNrZWQuIEhhcyBpdCBiZWVuIGNyZWF0ZWQgaW4gYSBjaGFuZ2UgZGV0ZWN0aW9uIGhvb2s/IiksbmV3IEVycm9yKG8pfSkoYT09PU9zLHIub2xkVmFsdWUsci5uZXdWYWx1ZSxyLnByb3BOYW1lKX1yZXR1cm4hMX1yZXR1cm4gdFtuXT1lLCEwfWZ1bmN0aW9uIFRnKHQsbixlLGEpe2NvbnN0IG89UmcodCxuLGUpO3JldHVybiBSZyh0LG4rMSxhKXx8b31mdW5jdGlvbiBEZyh0LG4sZSxhLG8pe2NvbnN0IHI9VGcodCxuLGUsYSk7cmV0dXJuIFJnKHQsbisyLG8pfHxyfWZ1bmN0aW9uIElnKHQsbixlLGEsbyxyKXtjb25zdCBpPVRnKHQsbixlLGEpO3JldHVybiBUZyh0LG4rMixvLHIpfHxpfQovKioKICAgICAqIEBsaWNlbnNlCiAgICAgKiBDb3B5cmlnaHQgR29vZ2xlIExMQyBBbGwgUmlnaHRzIFJlc2VydmVkLgogICAgICoKICAgICAqIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGFuIE1JVC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCiAgICAgKiBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlIGF0IGh0dHBzOi8vYW5ndWxhci5pby9saWNlbnNlCiAgICAgKi9mdW5jdGlvbiBOZyh0LG4sZSxhKXtjb25zdCBvPUJyKCkscj1LcigpO2lmKFJnKG8scixuKSl7Y29uc3QgaT1WcigpLGM9YmkoKTtqbChjLG8sdCxuLGUsYSksbmdEZXZNb2RlJiZlbShpLmRhdGEsYywiYXR0ci4iK3Qscil9cmV0dXJuIE5nfQovKioKICAgICAqIEBsaWNlbnNlCiAgICAgKiBDb3B5cmlnaHQgR29vZ2xlIExMQyBBbGwgUmlnaHRzIFJlc2VydmVkLgogICAgICoKICAgICAqIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGFuIE1JVC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCiAgICAgKiBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlIGF0IGh0dHBzOi8vYW5ndWxhci5pby9saWNlbnNlCiAgICAgKi9mdW5jdGlvbiBGZyh0LG4pe25nRGV2TW9kZSYmQWEoMixuLmxlbmd0aCwic2hvdWxkIGhhdmUgYXQgbGVhc3QgMyB2YWx1ZXMiKSxuZ0Rldk1vZGUmJnZhKG4ubGVuZ3RoJTIsMSwic2hvdWxkIGhhdmUgYW4gb2RkIG51bWJlciBvZiB2YWx1ZXMiKTtsZXQgZT0hMSxhPUpyKCk7Zm9yKGxldCBvPTE7bzxuLmxlbmd0aDtvKz0yKWU9UmcodCxhKyssbltvXSl8fGU7aWYoUXIoYSksIWUpcmV0dXJuIE9zO2xldCBvPW5bMF07Zm9yKGxldCB0PTE7dDxuLmxlbmd0aDt0Kz0yKW8rPSRvKG5bdF0pK25bdCsxXTtyZXR1cm4gb31mdW5jdGlvbiBMZyh0LG4sZSxhKXtyZXR1cm4gUmcodCxLcigpLGUpP24rJG8oZSkrYTpPc31mdW5jdGlvbiBIZyh0LG4sZSxhLG8scil7Y29uc3QgaT1UZyh0LEpyKCksZSxvKTtyZXR1cm4gJHIoMiksaT9uKyRvKGUpK2ErJG8obykrcjpPc31mdW5jdGlvbiBCZyh0LG4sZSxhLG8scixpLGMpe2NvbnN0IHM9RGcodCxKcigpLGUsbyxpKTtyZXR1cm4gJHIoMykscz9uKyRvKGUpK2ErJG8obykrciskbyhpKStjOk9zfWZ1bmN0aW9uIFZnKHQsbixlLGEsbyxyLGksYyxzLGwpe2NvbnN0IG09SWcodCxKcigpLGUsbyxpLHMpO3JldHVybiAkcig0KSxtP24rJG8oZSkrYSskbyhvKStyKyRvKGkpK2MrJG8ocykrbDpPc31mdW5jdGlvbiBqZyh0LG4sZSxhLG8scixpLGMscyxsLG0sZCl7Y29uc3QgZz1KcigpO2xldCBwPUlnKHQsZyxlLG8saSxzKTtyZXR1cm4gcD1SZyh0LGcrNCxtKXx8cCwkcig1KSxwP24rJG8oZSkrYSskbyhvKStyKyRvKGkpK2MrJG8ocykrbCskbyhtKStkOk9zfWZ1bmN0aW9uIFVnKHQsbixlLGEsbyxyLGksYyxzLGwsbSxkLGcscCl7Y29uc3QgYj1KcigpO2xldCB1PUlnKHQsYixlLG8saSxzKTtyZXR1cm4gdT1UZyh0LGIrNCxtLGcpfHx1LCRyKDYpLHU/biskbyhlKSthKyRvKG8pK3IrJG8oaSkrYyskbyhzKStsKyRvKG0pK2QrJG8oZykrcDpPc31mdW5jdGlvbiBXZyh0LG4sZSxhLG8scixpLGMscyxsLG0sZCxnLHAsYix1KXtjb25zdCBmPUpyKCk7bGV0IGg9SWcodCxmLGUsbyxpLHMpO3JldHVybiBoPURnKHQsZis0LG0sZyxiKXx8aCwkcig3KSxoP24rJG8oZSkrYSskbyhvKStyKyRvKGkpK2MrJG8ocykrbCskbyhtKStkKyRvKGcpK3ArJG8oYikrdTpPc31mdW5jdGlvbiBHZyh0LG4sZSxhLG8scixpLGMscyxsLG0sZCxnLHAsYix1LGYsaCl7Y29uc3QgXz1KcigpO2xldCBDPUlnKHQsXyxlLG8saSxzKTtyZXR1cm4gQz1JZyh0LF8rNCxtLGcsYixmKXx8Qywkcig4KSxDP24rJG8oZSkrYSskbyhvKStyKyRvKGkpK2MrJG8ocykrbCskbyhtKStkKyRvKGcpK3ArJG8oYikrdSskbyhmKStoOk9zfWZ1bmN0aW9uIFlnKHQsbixlLGEsbyxyLGksYyl7Y29uc3Qgcz1CcigpLGw9VnIoKSxtPXQrVG8sZD1sLmZpcnN0Q3JlYXRlUGFzcz8oCi8qKgogICAgICogQGxpY2Vuc2UKICAgICAqIENvcHlyaWdodCBHb29nbGUgTExDIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCiAgICAgKgogICAgICogVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYW4gTUlULXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKICAgICAqIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUgYXQgaHR0cHM6Ly9hbmd1bGFyLmlvL2xpY2Vuc2UKICAgICAqLwpmdW5jdGlvbiBnKHQsbixlLGEsbyxyLGksYyxzKXtuZ0Rldk1vZGUmJlhvKG4pLG5nRGV2TW9kZSYmbmdEZXZNb2RlLmZpcnN0Q3JlYXRlUGFzcysrO2NvbnN0IGw9bi5jb25zdHMsbT11bChuLHQsMCxpfHxudWxsLElyKGwsYykpO1JsKG4sZSxtLElyKGwscykpLGhpKG4sbSk7Y29uc3QgZD1tLnRWaWV3cz15bCgyLG0sYSxvLHIsbi5kaXJlY3RpdmVSZWdpc3RyeSxuLnBpcGVSZWdpc3RyeSxudWxsLG4uc2NoZW1hcyxsKTtyZXR1cm4gbnVsbCE9PW4ucXVlcmllcyYmKG4ucXVlcmllcy50ZW1wbGF0ZShuLG0pLGQucXVlcmllcz1uLnF1ZXJpZXMuZW1iZWRkZWRUVmlldyhtKSksbX0pKHQsbCxzLG4sZSxhLG8scixpKTpsLmRhdGFbbV07V3IoZCwhMSk7Y29uc3QgcD1zWzExXS5jcmVhdGVDb21tZW50KG5nRGV2TW9kZT8iY29udGFpbmVyIjoiIik7T20obCxzLHAsZCksb3MocCxzKSxKbChzLHNbbV09WWwocCxzLHAsZCkpLEJvKGQpJiZPbChsLHMsZCksbnVsbCE9aSYmUGwocyxkLGMpfQovKioKICAgICAqIEBsaWNlbnNlCiAgICAgKiBDb3B5cmlnaHQgR29vZ2xlIExMQyBBbGwgUmlnaHRzIFJlc2VydmVkLgogICAgICoKICAgICAqIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGFuIE1JVC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCiAgICAgKiBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlIGF0IGh0dHBzOi8vYW5ndWxhci5pby9saWNlbnNlCiAgICAgKi9mdW5jdGlvbiBxZyh0KXtyZXR1cm4gRXIoKGZ1bmN0aW9uIG4oKXtyZXR1cm4gTHIubEZyYW1lLmNvbnRleHRMVmlld30pKCksdCl9Ci8qKgogICAgICogQGxpY2Vuc2UKICAgICAqIENvcHlyaWdodCBHb29nbGUgTExDIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCiAgICAgKgogICAgICogVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYW4gTUlULXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKICAgICAqIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUgYXQgaHR0cHM6Ly9hbmd1bGFyLmlvL2xpY2Vuc2UKICAgICAqL2Z1bmN0aW9uIFpnKHQsbj1WZS5EZWZhdWx0KXtjb25zdCBlPUJyKCk7cmV0dXJuIG51bGw9PT1lPyhuZ0Rldk1vZGUmJihmdW5jdGlvbiBhKHQpe25nRGV2TW9kZSYmd2EoV2EsdCwiQ2FsbGluZyDJtcm1aW5qZWN0IHdvdWxkIGNhdXNlIGluZmluaXRlIHJlY3Vyc2lvbiIpfSkoWmcpLFphKHQsbikpOkdpKFVyKCksZSxvYSh0KSxuKX1mdW5jdGlvbiBYZyh0KXtyZXR1cm4oZnVuY3Rpb24gbih0LGUpe2lmKG5nRGV2TW9kZSYmd2kodCxbMCwyLDNdKSxuZ0Rldk1vZGUmJlRhKHQsImV4cGVjdGluZyB0Tm9kZSIpLCJjbGFzcyI9PT1lKXJldHVybiB0LmNsYXNzZXM7aWYoInN0eWxlIj09PWUpcmV0dXJuIHQuc3R5bGVzO2NvbnN0IGE9dC5hdHRycztpZihhKXtjb25zdCB0PWEubGVuZ3RoO2xldCBuPTA7Zm9yKDtuPHQ7KXtjb25zdCBvPWFbbl07aWYoQWkobykpYnJlYWs7aWYoMD09PW8pbis9MjtlbHNlIGlmKCJudW1iZXIiPT10eXBlb2Ygbylmb3IobisrO248dCYmInN0cmluZyI9PXR5cGVvZiBhW25dOyluKys7ZWxzZXtpZihvPT09ZSlyZXR1cm4gYVtuKzFdO24rPTJ9fX1yZXR1cm4gbnVsbH0pKFVyKCksdCl9Ci8qKgogICAgICogQGxpY2Vuc2UKICAgICAqIENvcHlyaWdodCBHb29nbGUgTExDIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCiAgICAgKgogICAgICogVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYW4gTUlULXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKICAgICAqIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUgYXQgaHR0cHM6Ly9hbmd1bGFyLmlvL2xpY2Vuc2UKICAgICAqLwpmdW5jdGlvbiBKZyh0LG4sZSl7Y29uc3QgYT1CcigpLG89S3IoKTtpZihSZyhhLG8sbikpe2NvbnN0IHI9VnIoKSxpPWJpKCk7d2wocixpLGEsdCxuLGFbMTFdLGUsITEpLG5nRGV2TW9kZSYmZW0oci5kYXRhLGksdCxvKX1yZXR1cm4gSmd9ZnVuY3Rpb24gUWcodCxuLGUsYSxvKXtjb25zdCByPW8/ImNsYXNzIjoic3R5bGUiO2NtKHQsZSxuLmlucHV0c1tyXSxyLGEpfQovKioKICAgICAqIEBsaWNlbnNlCiAgICAgKiBDb3B5cmlnaHQgR29vZ2xlIExMQyBBbGwgUmlnaHRzIFJlc2VydmVkLgogICAgICoKICAgICAqIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGFuIE1JVC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCiAgICAgKiBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlIGF0IGh0dHBzOi8vYW5ndWxhci5pby9saWNlbnNlCiAgICAgKi9mdW5jdGlvbiBLZyh0LG4sZSxhKXtjb25zdCBvPUJyKCkscj1WcigpLGk9VG8rdDtuZ0Rldk1vZGUmJnZhKEpyKCksci5iaW5kaW5nU3RhcnRJbmRleCwiZWxlbWVudHMgc2hvdWxkIGJlIGNyZWF0ZWQgYmVmb3JlIGFueSBiaW5kaW5ncyIpLG5nRGV2TW9kZSYmbmdEZXZNb2RlLnJlbmRlcmVyQ3JlYXRlRWxlbWVudCsrLG5nRGV2TW9kZSYmTmEobyxpKTtjb25zdCBjPW9bMTFdLHM9b1tpXT1wbChuLGMsKGZ1bmN0aW9uIGwoKXtyZXR1cm4gTHIubEZyYW1lLmN1cnJlbnROYW1lc3BhY2V9KSgpKSxtPXIuZmlyc3RDcmVhdGVQYXNzPyhmdW5jdGlvbiBkKHQsbixlLGEsbyxyLGkpe25nRGV2TW9kZSYmWG8obiksbmdEZXZNb2RlJiZuZ0Rldk1vZGUuZmlyc3RDcmVhdGVQYXNzKys7Y29uc3QgYz1uLmNvbnN0cyxzPXVsKG4sdCwyLG8sSXIoYyxyKSksbD1SbChuLGUscyxJcihjLGkpKTtyZXR1cm4gbmdEZXZNb2RlJiYoZnVuY3Rpb24gbSh0LG4sZSxhKXtpZihudWxsPT09dC5zY2hlbWFzKXJldHVybjtjb25zdCBvPWUudGFnTmFtZTtpZighYSYmbnVsbCE9PW8mJigidW5kZWZpbmVkIiE9dHlwZW9mIEhUTUxVbmtub3duRWxlbWVudCYmSFRNTFVua25vd25FbGVtZW50JiZuIGluc3RhbmNlb2YgSFRNTFVua25vd25FbGVtZW50fHwidW5kZWZpbmVkIiE9dHlwZW9mIGN1c3RvbUVsZW1lbnRzJiZvLmluZGV4T2YoIi0iKT4tMSYmIWN1c3RvbUVsZW1lbnRzLmdldChvKSkmJiFBbCh0LG8pKXtsZXQgdD1gJyR7b30nIGlzIG5vdCBhIGtub3duIGVsZW1lbnQ6XG5gO3QrPWAxLiBJZiAnJHtvfScgaXMgYW4gQW5ndWxhciBjb21wb25lbnQsIHRoZW4gdmVyaWZ5IHRoYXQgaXQgaXMgcGFydCBvZiB0aGlzIG1vZHVsZS5cbmAsbyYmby5pbmRleE9mKCItIik+LTE/dCs9YDIuIElmICcke299JyBpcyBhIFdlYiBDb21wb25lbnQgdGhlbiBhZGQgJ0NVU1RPTV9FTEVNRU5UU19TQ0hFTUEnIHRvIHRoZSAnQE5nTW9kdWxlLnNjaGVtYXMnIG9mIHRoaXMgY29tcG9uZW50IHRvIHN1cHByZXNzIHRoaXMgbWVzc2FnZS5gOnQrPSIyLiBUbyBhbGxvdyBhbnkgZWxlbWVudCBhZGQgJ05PX0VSUk9SU19TQ0hFTUEnIHRvIHRoZSAnQE5nTW9kdWxlLnNjaGVtYXMnIG9mIHRoaXMgY29tcG9uZW50LiIsY29uc29sZS5lcnJvcih0KX19Ci8qKgogICAgICogQGxpY2Vuc2UKICAgICAqIENvcHlyaWdodCBHb29nbGUgTExDIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCiAgICAgKgogICAgICogVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYW4gTUlULXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKICAgICAqIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUgYXQgaHR0cHM6Ly9hbmd1bGFyLmlvL2xpY2Vuc2UKICAgICAqLykobixhLHMsbCksbnVsbCE9PXMuYXR0cnMmJnRnKHMscy5hdHRycywhMSksbnVsbCE9PXMubWVyZ2VkQXR0cnMmJnRnKHMscy5tZXJnZWRBdHRycywhMCksbnVsbCE9PW4ucXVlcmllcyYmbi5xdWVyaWVzLmVsZW1lbnRTdGFydChuLHMpLHN9KSh0LHIsbyxzLG4sZSxhKTpyLmRhdGFbaV07V3IobSwhMCk7Y29uc3QgZz1tLm1lcmdlZEF0dHJzO251bGwhPT1nJiZFaShjLHMsZyk7Y29uc3QgcD1tLmNsYXNzZXM7bnVsbCE9PXAmJkFtKGMscyxwKTtjb25zdCBiPW0uc3R5bGVzO251bGwhPT1iJiZFbShjLHMsYiksT20ocixvLHMsbSksMD09PShmdW5jdGlvbiB1KCl7cmV0dXJuIExyLmxGcmFtZS5lbGVtZW50RGVwdGhDb3VudH0pKCkmJm9zKHMsbyksKGZ1bmN0aW9uIGYoKXtMci5sRnJhbWUuZWxlbWVudERlcHRoQ291bnQrK30pKCksQm8obSkmJihPbChyLG8sbSksTWwocixtLG8pKSxudWxsIT09YSYmUGwobyxtKX1mdW5jdGlvbiAkZygpe2xldCB0PVVyKCk7bmdEZXZNb2RlJiZUYSh0LCJObyBwYXJlbnQgbm9kZSB0byBjbG9zZS4iKSxHcigpP1lyKCk6KG5nRGV2TW9kZSYmR28oVXIoKSksdD10LnBhcmVudCxXcih0LCExKSk7Y29uc3Qgbj10O25nRGV2TW9kZSYmdmkobiwyKSwoZnVuY3Rpb24gZSgpe0xyLmxGcmFtZS5lbGVtZW50RGVwdGhDb3VudC0tfSkoKTtjb25zdCBhPVZyKCk7YS5maXJzdENyZWF0ZVBhc3MmJihoaShhLHQpLExvKHQpJiZhLnF1ZXJpZXMuZWxlbWVudEVuZCh0KSksbnVsbCE9bi5jbGFzc2VzV2l0aG91dEhvc3QmJihmdW5jdGlvbiBvKHQpe3JldHVybiAwIT0oMTYmdC5mbGFncyl9KShuKSYmUWcoYSxuLEJyKCksbi5jbGFzc2VzV2l0aG91dEhvc3QsITApLG51bGwhPW4uc3R5bGVzV2l0aG91dEhvc3QmJihmdW5jdGlvbiByKHQpe3JldHVybiAwIT0oMzImdC5mbGFncyl9KShuKSYmUWcoYSxuLEJyKCksbi5zdHlsZXNXaXRob3V0SG9zdCwhMSl9ZnVuY3Rpb24gdHAodCxuLGUsYSl7S2codCxuLGUsYSksJGcoKX1mdW5jdGlvbiBucCh0LG4sZSl7Y29uc3QgYT1CcigpLG89VnIoKSxyPXQrVG87bmdEZXZNb2RlJiZOYShhLHIpLG5nRGV2TW9kZSYmdmEoSnIoKSxvLmJpbmRpbmdTdGFydEluZGV4LCJlbGVtZW50IGNvbnRhaW5lcnMgc2hvdWxkIGJlIGNyZWF0ZWQgYmVmb3JlIGFueSBiaW5kaW5ncyIpO2NvbnN0IGk9by5maXJzdENyZWF0ZVBhc3M/KGZ1bmN0aW9uIGModCxuLGUsYSxvKXtuZ0Rldk1vZGUmJm5nRGV2TW9kZS5maXJzdENyZWF0ZVBhc3MrKztjb25zdCByPW4uY29uc3RzLGk9SXIocixhKSxjPXVsKG4sdCwzLCJuZy1jb250YWluZXIiLGkpO3JldHVybiBudWxsIT09aSYmdGcoYyxpLCEwKSxSbChuLGUsYyxJcihyLG8pKSxudWxsIT09bi5xdWVyaWVzJiZuLnF1ZXJpZXMuZWxlbWVudFN0YXJ0KG4sYyksY30pKHQsbyxhLG4sZSk6by5kYXRhW3JdO1dyKGksITApLG5nRGV2TW9kZSYmbmdEZXZNb2RlLnJlbmRlcmVyQ3JlYXRlQ29tbWVudCsrO2NvbnN0IHM9YVtyXT1hWzExXS5jcmVhdGVDb21tZW50KG5nRGV2TW9kZT8ibmctY29udGFpbmVyIjoiIik7T20obyxhLHMsaSksb3MocyxhKSxCbyhpKSYmKE9sKG8sYSxpKSxNbChvLGksYSkpLG51bGwhPWUmJlBsKGEsaSl9ZnVuY3Rpb24gZXAoKXtsZXQgdD1VcigpO2NvbnN0IG49VnIoKTtHcigpP1lyKCk6KG5nRGV2TW9kZSYmR28odCksdD10LnBhcmVudCxXcih0LCExKSksbmdEZXZNb2RlJiZ2aSh0LDMpLG4uZmlyc3RDcmVhdGVQYXNzJiYoaGkobix0KSxMbyh0KSYmbi5xdWVyaWVzLmVsZW1lbnRFbmQodCkpfWZ1bmN0aW9uIGFwKHQsbixlKXtucCh0LG4sZSksZXAoKX1mdW5jdGlvbiBvcCgpe3JldHVybiBCcigpfQovKioKICAgICAqIEBsaWNlbnNlCiAgICAgKiBDb3B5cmlnaHQgR29vZ2xlIExMQyBBbGwgUmlnaHRzIFJlc2VydmVkLgogICAgICoKICAgICAqIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGFuIE1JVC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCiAgICAgKiBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlIGF0IGh0dHBzOi8vYW5ndWxhci5pby9saWNlbnNlCiAgICAgKi9mdW5jdGlvbiBycCh0KXtyZXR1cm4hIXQmJiJmdW5jdGlvbiI9PXR5cGVvZiB0LnRoZW59ZnVuY3Rpb24gaXAodCl7cmV0dXJuISF0JiYiZnVuY3Rpb24iPT10eXBlb2YgdC5zdWJzY3JpYmV9Ci8qKgogICAgICogQGxpY2Vuc2UKICAgICAqIENvcHlyaWdodCBHb29nbGUgTExDIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCiAgICAgKgogICAgICogVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYW4gTUlULXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKICAgICAqIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUgYXQgaHR0cHM6Ly9hbmd1bGFyLmlvL2xpY2Vuc2UKICAgICAqL2Z1bmN0aW9uIGNwKHQsbixlPSExLGEpe2NvbnN0IG89QnIoKSxyPVZyKCksaT1VcigpO3JldHVybiBscChyLG8sb1sxMV0saSx0LG4sZSxhKSxjcH1mdW5jdGlvbiBzcCh0LG4sZT0hMSxhKXtjb25zdCBvPVVyKCkscj1CcigpLGk9VnIoKTtyZXR1cm4gbHAoaSxyLHJtKGVpKGkuZGF0YSksbyxyKSxvLHQsbixlLGEpLHNwfWZ1bmN0aW9uIGxwKHQsbixlLGEsbyxyLGk9ITEsYyl7Y29uc3Qgcz1CbyhhKSxsPXQuZmlyc3RDcmVhdGVQYXNzJiYodC5jbGVhbnVwfHwodC5jbGVhbnVwPVtdKSksbT1vbShuKTtuZ0Rldk1vZGUmJndpKGEsWzIsMCwzXSk7bGV0IGQ9ITA7aWYoMj09PWEudHlwZSl7Y29uc3QgZz13cihhLG4pLHA9Yz9jKGcpOnVvLGI9cC50YXJnZXR8fGcsdT1tLmxlbmd0aCxmPWM/dD0+Yyhrcih0W2EuaW5kZXhdKSkudGFyZ2V0OmEuaW5kZXg7aWYoeHIoZSkpe2xldCBpPW51bGw7aWYoIWMmJnMmJihpPShmdW5jdGlvbiBnKHQsbixlLGEpe2NvbnN0IG89dC5jbGVhbnVwO2lmKG51bGwhPW8pZm9yKGxldCB0PTA7dDxvLmxlbmd0aC0xO3QrPTIpe2NvbnN0IHI9b1t0XTtpZihyPT09ZSYmb1t0KzFdPT09YSl7Y29uc3QgZT1uWzddLGE9b1t0KzJdO3JldHVybiBlLmxlbmd0aD5hP2VbYV06bnVsbH0ic3RyaW5nIj09dHlwZW9mIHImJih0Kz0yKX1yZXR1cm4gbnVsbH0pKHQsbixvLGEuaW5kZXgpKSxudWxsIT09aSkoaS5fX25nTGFzdExpc3RlbmVyRm5fX3x8aSkuX19uZ05leHRMaXN0ZW5lckZuX189cixpLl9fbmdMYXN0TGlzdGVuZXJGbl9fPXIsZD0hMTtlbHNle3I9ZHAoYSxuLHIsITEpO2NvbnN0IHQ9ZS5saXN0ZW4ocC5uYW1lfHxiLG8scik7bmdEZXZNb2RlJiZuZ0Rldk1vZGUucmVuZGVyZXJBZGRFdmVudExpc3RlbmVyKyssbS5wdXNoKHIsdCksbCYmbC5wdXNoKG8sZix1LHUrMSl9fWVsc2Ugcj1kcChhLG4sciwhMCksYi5hZGRFdmVudExpc3RlbmVyKG8scixpKSxuZ0Rldk1vZGUmJm5nRGV2TW9kZS5yZW5kZXJlckFkZEV2ZW50TGlzdGVuZXIrKyxtLnB1c2gociksbCYmbC5wdXNoKG8sZix1LGkpfWNvbnN0IHA9YS5vdXRwdXRzO2xldCBiO2lmKGQmJm51bGwhPT1wJiYoYj1wW29dKSl7Y29uc3QgdD1iLmxlbmd0aDtpZih0KWZvcihsZXQgZT0wO2U8dDtlKz0yKXtjb25zdCB0PWJbZV07bmdEZXZNb2RlJiZOYShuLHQpO2NvbnN0IGk9YltlKzFdLGM9blt0XSxzPWNbaV07aWYobmdEZXZNb2RlJiYhaXAocykpdGhyb3cgbmV3IEVycm9yKGBAT3V0cHV0ICR7aX0gbm90IGluaXRpYWxpemVkIGluICcke2MuY29uc3RydWN0b3IubmFtZX0nLmApO2NvbnN0IGQ9cy5zdWJzY3JpYmUociksZz1tLmxlbmd0aDttLnB1c2gocixkKSxsJiZsLnB1c2gobyxhLmluZGV4LGcsLShnKzEpKX19fWZ1bmN0aW9uIG1wKHQsbixlKXt0cnl7cmV0dXJuITEhPT1uKGUpfWNhdGNoKG4pe3JldHVybiBpbSh0LG4pLCExfX1mdW5jdGlvbiBkcCh0LG4sZSxhKXtyZXR1cm4gZnVuY3Rpb24gbyhyKXtpZihyPT09RnVuY3Rpb24pcmV0dXJuIGU7Y29uc3QgaT0yJnQuZmxhZ3M/QXIodC5pbmRleCxuKTpuOzA9PSgzMiZuWzJdKSYmUWwoaSk7bGV0IGM9bXAobixlLHIpLHM9by5fX25nTmV4dExpc3RlbmVyRm5fXztmb3IoO3M7KWM9bXAobixzLHIpJiZjLHM9cy5fX25nTmV4dExpc3RlbmVyRm5fXztyZXR1cm4gYSYmITE9PT1jJiYoci5wcmV2ZW50RGVmYXVsdCgpLHIucmV0dXJuVmFsdWU9ITEpLGN9fQovKioKICAgICAqIEBsaWNlbnNlCiAgICAgKiBDb3B5cmlnaHQgR29vZ2xlIExMQyBBbGwgUmlnaHRzIFJlc2VydmVkLgogICAgICoKICAgICAqIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGFuIE1JVC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCiAgICAgKiBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlIGF0IGh0dHBzOi8vYW5ndWxhci5pby9saWNlbnNlCiAgICAgKi8KLyoqCiAgICAgKiBAbGljZW5zZQogICAgICogQ29weXJpZ2h0IEdvb2dsZSBMTEMgQWxsIFJpZ2h0cyBSZXNlcnZlZC4KICAgICAqCiAgICAgKiBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhbiBNSVQtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQogICAgICogZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZSBhdCBodHRwczovL2FuZ3VsYXIuaW8vbGljZW5zZQogICAgICovZnVuY3Rpb24gZ3AodD0xKXtyZXR1cm4oZnVuY3Rpb24gbih0KXtyZXR1cm4oTHIubEZyYW1lLmNvbnRleHRMVmlldz0oZnVuY3Rpb24gbih0LGUpe2Zvcig7dD4wOyluZ0Rldk1vZGUmJlRhKGVbMTVdLCJEZWNsYXJhdGlvbiB2aWV3IHNob3VsZCBiZSBkZWZpbmVkIGlmIG5lc3RpbmcgbGV2ZWwgaXMgZ3JlYXRlciB0aGFuIDAuIiksZT1lWzE1XSx0LS07cmV0dXJuIGV9KSh0LExyLmxGcmFtZS5jb250ZXh0TFZpZXcpKVs4XX0pKHQpfQovKioKICAgICAqIEBsaWNlbnNlCiAgICAgKiBDb3B5cmlnaHQgR29vZ2xlIExMQyBBbGwgUmlnaHRzIFJlc2VydmVkLgogICAgICoKICAgICAqIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGFuIE1JVC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCiAgICAgKiBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlIGF0IGh0dHBzOi8vYW5ndWxhci5pby9saWNlbnNlCiAgICAgKi9mdW5jdGlvbiBwcCh0LG4pe2xldCBlPW51bGw7Y29uc3QgYT0oZnVuY3Rpb24gbyh0KXtjb25zdCBuPXQuYXR0cnM7aWYobnVsbCE9bil7Y29uc3QgdD1uLmluZGV4T2YoNSk7aWYoMD09KDEmdCkpcmV0dXJuIG5bdCsxXX1yZXR1cm4gbnVsbH0pKHQpO2ZvcihsZXQgbz0wO288bi5sZW5ndGg7bysrKXtjb25zdCByPW5bb107aWYoIioiIT09cil7aWYobnVsbD09PWE/aHModCxyLCEwKTpfcyhhLHIpKXJldHVybiBvfWVsc2UgZT1vfXJldHVybiBlfWZ1bmN0aW9uIGJwKHQpe2NvbnN0IG49QnIoKVsxNl1bNl07aWYoIW4ucHJvamVjdGlvbil7Y29uc3QgZT1uLnByb2plY3Rpb249Y28odD90Lmxlbmd0aDoxLG51bGwpLGE9ZS5zbGljZSgpO2xldCBvPW4uY2hpbGQ7Zm9yKDtudWxsIT09bzspe2NvbnN0IG49dD9wcChvLHQpOjA7bnVsbCE9PW4mJihhW25dP2Fbbl0ucHJvamVjdGlvbk5leHQ9bzplW25dPW8sYVtuXT1vKSxvPW8ubmV4dH19fWxldCB1cD0hMTtmdW5jdGlvbiBmcCh0KXt1cD10fWZ1bmN0aW9uIGhwKHQsbj0wLGUpe2NvbnN0IGE9QnIoKSxvPVZyKCkscj11bChvLHQsMSxudWxsLGV8fG51bGwpO251bGw9PT1yLnByb2plY3Rpb24mJihyLnByb2plY3Rpb249biksWXIoKSx1cHx8d20obyxhLHIpfWZ1bmN0aW9uIF9wKHQsbixlKXtyZXR1cm4gQ3AodCwiIixuLCIiLGUpLF9wfWZ1bmN0aW9uIENwKHQsbixlLGEsbyl7Y29uc3Qgcj1CcigpLGk9TGcocixuLGUsYSk7aWYoaSE9PU9zKXtjb25zdCBlPVZyKCksYz1iaSgpO3dsKGUsYyxyLHQsaSxyWzExXSxvLCExKSxuZ0Rldk1vZGUmJmVtKGUuZGF0YSxjLHQsSnIoKS0xLG4sYSl9cmV0dXJuIENwfQovKioKICAgICAqIEBsaWNlbnNlCiAgICAgKiBDb3B5cmlnaHQgR29vZ2xlIExMQyBBbGwgUmlnaHRzIFJlc2VydmVkLgogICAgICoKICAgICAqIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGFuIE1JVC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCiAgICAgKiBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlIGF0IGh0dHBzOi8vYW5ndWxhci5pby9saWNlbnNlCiAgICAgKi8KY29uc3QgTXA9W107ZnVuY3Rpb24gT3AodCxuLGUsYSxvKXtjb25zdCByPXRbZSsxXSxpPW51bGw9PT1uO2xldCBjPWE/QXMocik6VHMocikscz0hMTtmb3IoOzAhPT1jJiYoITE9PT1zfHxpKTspe25nRGV2TW9kZSYmTmEodCxjKTtjb25zdCBlPXRbYysxXTtQcCh0W2NdLG4pJiYocz0hMCx0W2MrMV09YT9OcyhlKTpScyhlKSksYz1hP0FzKGUpOlRzKGUpfXMmJih0W2UrMV09YT9ScyhyKTpOcyhyKSl9ZnVuY3Rpb24gUHAodCxuKXtyZXR1cm4gbmdEZXZNb2RlJiZ3YShBcnJheS5pc0FycmF5KG4pLCEwLCJFeHBlY3RlZCB0aGF0ICd0U3R5bGluZ0tleScgaGFzIGJlZW4gdW53cmFwcGVkIiksbnVsbD09PXR8fG51bGw9PW58fChBcnJheS5pc0FycmF5KHQpP3RbMV06dCk9PT1ufHwhKCFBcnJheS5pc0FycmF5KHQpfHwic3RyaW5nIiE9dHlwZW9mIG4pJiZtbyh0LG4pPj0wfQovKioKICAgICAqIEBsaWNlbnNlCiAgICAgKiBDb3B5cmlnaHQgR29vZ2xlIExMQyBBbGwgUmlnaHRzIFJlc2VydmVkLgogICAgICoKICAgICAqIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGFuIE1JVC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCiAgICAgKiBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlIGF0IGh0dHBzOi8vYW5ndWxhci5pby9saWNlbnNlCiAgICAgKi8oInVuZGVmaW5lZCI9PXR5cGVvZiBuZ0Rldk1vZGV8fG5nRGV2TW9kZSkmJlBhKCkmJihPYmplY3QuZnJlZXplKHt9KSxPYmplY3QuZnJlZXplKE1wKSk7Y29uc3QgeHA9e3RleHRFbmQ6MCxrZXk6MCxrZXlFbmQ6MCx2YWx1ZTowLHZhbHVlRW5kOjB9O2Z1bmN0aW9uIHlwKHQpe3JldHVybiB0LnN1YnN0cmluZyh4cC5rZXkseHAua2V5RW5kKX1mdW5jdGlvbiBrcCh0KXtyZXR1cm4gdC5zdWJzdHJpbmcoeHAudmFsdWUseHAudmFsdWVFbmQpfWZ1bmN0aW9uIHZwKHQsbil7Y29uc3QgZT14cC50ZXh0RW5kO3JldHVybiBlPT09bj8tMToobj14cC5rZXlFbmQ9KGZ1bmN0aW9uIGEodCxuLGUpe2Zvcig7bjxlJiZ0LmNoYXJDb2RlQXQobik+MzI7KW4rKztyZXR1cm4gbn0pKHQseHAua2V5PW4sZSksRXAodCxuLGUpKX1mdW5jdGlvbiB3cCh0LG4pe2NvbnN0IGU9eHAudGV4dEVuZDtsZXQgYT14cC5rZXk9RXAodCxuLGUpO3JldHVybiBlPT09YT8tMTooYT14cC5rZXlFbmQ9KGZ1bmN0aW9uIG8odCxuLGUpe2xldCBhO2Zvcig7bjxlJiYoNDU9PT0oYT10LmNoYXJDb2RlQXQobikpfHw5NT09PWF8fCgtMzMmYSk+PTY1JiYoLTMzJmEpPD05MHx8YT49NDgmJmE8PTU3KTspbisrO3JldHVybiBufSkodCxhLGUpLGE9QXAodCxhLGUsNTgpLGE9eHAudmFsdWU9RXAodCxhLGUpLGE9eHAudmFsdWVFbmQ9KGZ1bmN0aW9uIHIodCxuLGUpe2xldCBhPS0xLG89LTEscj0tMSxpPW4sYz1pO2Zvcig7aTxlOyl7Y29uc3Qgcz10LmNoYXJDb2RlQXQoaSsrKTtpZig1OT09PXMpcmV0dXJuIGM7MzQ9PT1zfHwzOT09PXM/Yz1pPXpwKHQscyxpLGUpOm49PT1pLTQmJjg1PT09ciYmODI9PT1vJiY3Nj09PWEmJjQwPT09cz9jPWk9enAodCw0MSxpLGUpOnM+MzImJihjPWkpLHI9byxvPWEsYT0tMzMmc31yZXR1cm4gY30pKHQsYSxlKSxBcCh0LGEsZSw1OSkpfWZ1bmN0aW9uIFNwKHQpe3hwLmtleT0wLHhwLmtleUVuZD0wLHhwLnZhbHVlPTAseHAudmFsdWVFbmQ9MCx4cC50ZXh0RW5kPXQubGVuZ3RofWZ1bmN0aW9uIEVwKHQsbixlKXtmb3IoO248ZSYmdC5jaGFyQ29kZUF0KG4pPD0zMjspbisrO3JldHVybiBufWZ1bmN0aW9uIEFwKHQsbixlLGEpe3JldHVybihuPUVwKHQsbixlKSk8ZSYmKG5nRGV2TW9kZSYmdC5jaGFyQ29kZUF0KG4pIT09YSYmUnAodCxTdHJpbmcuZnJvbUNoYXJDb2RlKGEpLG4pLG4rKyksbn1mdW5jdGlvbiB6cCh0LG4sZSxhKXtsZXQgbz0tMSxyPWU7Zm9yKDtyPGE7KXtjb25zdCBlPXQuY2hhckNvZGVBdChyKyspO2lmKGU9PW4mJjkyIT09bylyZXR1cm4gcjtvPTkyPT1lJiY5Mj09PW8/MDplfXRocm93IG5nRGV2TW9kZT9ScCh0LFN0cmluZy5mcm9tQ2hhckNvZGUobiksYSk6bmV3IEVycm9yfWZ1bmN0aW9uIFJwKHQsbixlKXt0aHJvdyBuZ0Rldk1vZGUmJnZhKCJzdHJpbmciPT10eXBlb2YgdCwhMCwiU3RyaW5nIGV4cGVjdGVkIGhlcmUiKSxEYShgTWFsZm9ybWVkIHN0eWxlIGF0IGxvY2F0aW9uICR7ZX0gaW4gc3RyaW5nICdgK3Quc3Vic3RyaW5nKDAsZSkrIls+PiIrdC5zdWJzdHJpbmcoZSxlKzEpKyI8PF0iK3Quc3Vic3RyKGUrMSkrYCcuIEV4cGVjdGluZyAnJHtufScuYCl9Ci8qKgogICAgICogQGxpY2Vuc2UKICAgICAqIENvcHlyaWdodCBHb29nbGUgTExDIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCiAgICAgKgogICAgICogVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYW4gTUlULXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKICAgICAqIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUgYXQgaHR0cHM6Ly9hbmd1bGFyLmlvL2xpY2Vuc2UKICAgICAqL2Z1bmN0aW9uIFRwKHQsbixlKXtyZXR1cm4gSHAodCxuLGUsITEpLFRwfWZ1bmN0aW9uIERwKHQsbil7cmV0dXJuIEhwKHQsbixudWxsLCEwKSxEcH1mdW5jdGlvbiBJcCh0KXtCcChHcCxOcCx0LCExKX1mdW5jdGlvbiBOcCh0LG4pe2ZvcihsZXQgZT0oZnVuY3Rpb24gZSh0KXtyZXR1cm4gU3AodCksd3AodCxFcCh0LDAseHAudGV4dEVuZCkpfSkobik7ZT49MDtlPXdwKG4sZSkpR3AodCx5cChuKSxrcChuKSl9ZnVuY3Rpb24gRnAodCl7QnAoc28sTHAsdCwhMCl9ZnVuY3Rpb24gTHAodCxuKXtmb3IobGV0IGU9KGZ1bmN0aW9uIGUodCl7cmV0dXJuIFNwKHQpLHZwKHQsRXAodCwwLHhwLnRleHRFbmQpKX0pKG4pO2U+PTA7ZT12cChuLGUpKXNvKHQseXAobiksITApfWZ1bmN0aW9uIEhwKHQsbixlLGEpe2NvbnN0IG89QnIoKSxyPVZyKCksaT0kcigyKTtyLmZpcnN0VXBkYXRlUGFzcyYmanAocix0LGksYSksbiE9PU9zJiZSZyhvLGksbikmJllwKHIsci5kYXRhW2dpKCkrVG9dLG8sb1sxMV0sdCxvW2krMV09KGZ1bmN0aW9uIGModCxuKXtyZXR1cm4gbnVsbD09dHx8KCJzdHJpbmciPT10eXBlb2Ygbj90Kz1uOiJvYmplY3QiPT10eXBlb2YgdCYmKHQ9dGEocGModCkpKSksdH0pKG4sZSksYSxpKX1mdW5jdGlvbiBCcCh0LG4sZSxhKXtjb25zdCBvPVZyKCkscj0kcigyKTtvLmZpcnN0VXBkYXRlUGFzcyYmanAobyxudWxsLHIsYSk7Y29uc3QgaT1CcigpO2lmKGUhPT1PcyYmUmcoaSxyLGUpKXtjb25zdCBjPW8uZGF0YVtnaSgpK1RvXTtpZihYcChjLGEpJiYhVnAobyxyKSl7aWYobmdEZXZNb2RlKXtjb25zdCB0PW8uZGF0YVtyXTt2YShBcnJheS5pc0FycmF5KHQpP3RbMV06dCwhMSwiU3R5bGluZyBsaW5rZWQgbGlzdCBzaGFkb3cgaW5wdXQgc2hvdWxkIGJlIG1hcmtlZCBhcyAnZmFsc2UnIil9bGV0IHQ9YT9jLmNsYXNzZXNXaXRob3V0SG9zdDpjLnN0eWxlc1dpdGhvdXRIb3N0O25nRGV2TW9kZSYmITE9PT1hJiZudWxsIT09dCYmdmEodC5lbmRzV2l0aCgiOyIpLCEwLCJFeHBlY3Rpbmcgc3RhdGljIHBvcnRpb24gdG8gZW5kIHdpdGggJzsnIiksbnVsbCE9PXQmJihlPW5hKHQsZXx8IiIpKSxRZyhvLGMsaSxlLGEpfWVsc2UhKGZ1bmN0aW9uIHModCxuLGUsYSxvLHIsaSxjKXtvPT09T3MmJihvPU1wKTtsZXQgcz0wLGw9MCxtPTA8by5sZW5ndGg/b1swXTpudWxsLGQ9MDxyLmxlbmd0aD9yWzBdOm51bGw7Zm9yKDtudWxsIT09bXx8bnVsbCE9PWQ7KXtuZ0Rldk1vZGUmJkFhKHMsOTk5LCJBcmUgd2Ugc3R1Y2sgaW4gaW5maW5pdGUgbG9vcD8iKSxuZ0Rldk1vZGUmJkFhKGwsOTk5LCJBcmUgd2Ugc3R1Y2sgaW4gaW5maW5pdGUgbG9vcD8iKTtjb25zdCBnPXM8by5sZW5ndGg/b1tzKzFdOnZvaWQgMCxwPWw8ci5sZW5ndGg/cltsKzFdOnZvaWQgMDtsZXQgYix1PW51bGw7bT09PWQ/KHMrPTIsbCs9MixnIT09cCYmKHU9ZCxiPXApKTpudWxsPT09ZHx8bnVsbCE9PW0mJm08ZD8ocys9Mix1PW0pOihuZ0Rldk1vZGUmJlRhKGQsIkV4cGVjdGluZyB0byBoYXZlIGEgdmFsaWQga2V5IiksbCs9Mix1PWQsYj1wKSxudWxsIT09dSYmWXAodCxuLGUsYSx1LGIsaSxjKSxtPXM8by5sZW5ndGg/b1tzXTpudWxsLGQ9bDxyLmxlbmd0aD9yW2xdOm51bGx9fSkobyxjLGksaVsxMV0saVtyKzFdLGlbcisxXT0oZnVuY3Rpb24gYyh0LG4sZSl7aWYobnVsbD09ZXx8IiI9PT1lKXJldHVybiBNcDtjb25zdCBhPVtdLG89cGMoZSk7aWYoQXJyYXkuaXNBcnJheShvKSlmb3IobGV0IG49MDtuPG8ubGVuZ3RoO24rKyl0KGEsb1tuXSwhMCk7ZWxzZSBpZigib2JqZWN0Ij09dHlwZW9mIG8pZm9yKGNvbnN0IG4gaW4gbylvLmhhc093blByb3BlcnR5KG4pJiZ0KGEsbixvW25dKTtlbHNlInN0cmluZyI9PXR5cGVvZiBvP24oYSxvKTpuZ0Rldk1vZGUmJkRhKCJVbnN1cHBvcnRlZCBzdHlsaW5nIHR5cGUgIit0eXBlb2YgbysiOiAiK28pO3JldHVybiBhfSkodCxuLGUpLGEscil9fWZ1bmN0aW9uIFZwKHQsbil7cmV0dXJuIG4+PXQuZXhwYW5kb1N0YXJ0SW5kZXh9ZnVuY3Rpb24ganAodCxuLGUsYSl7bmdEZXZNb2RlJiZKbyh0KTtjb25zdCBvPXQuZGF0YTtpZihudWxsPT09b1tlKzFdKXtjb25zdCByPW9bZ2koKStUb10saT1WcCh0LGUpO1hwKHIsYSkmJm51bGw9PT1uJiYhaSYmKG49ITEpLG49KGZ1bmN0aW9uIHIodCxuLGUsYSl7Y29uc3Qgbz1laSh0KTtsZXQgcj1hP24ucmVzaWR1YWxDbGFzc2VzOm4ucmVzaWR1YWxTdHlsZXM7aWYobnVsbD09PW8pMD09PShhP24uY2xhc3NCaW5kaW5nczpuLnN0eWxlQmluZGluZ3MpJiYoZT1XcChlPVVwKG51bGwsdCxuLGUsYSksbi5hdHRycyxhKSxyPW51bGwpO2Vsc2V7Y29uc3QgaT1uLmRpcmVjdGl2ZVN0eWxpbmdMYXN0O2lmKC0xPT09aXx8dFtpXSE9PW8paWYoZT1VcChvLHQsbixlLGEpLG51bGw9PT1yKXtsZXQgZT0oZnVuY3Rpb24gaSh0LG4sZSl7Y29uc3QgYT1lP24uY2xhc3NCaW5kaW5nczpuLnN0eWxlQmluZGluZ3M7aWYoMCE9PVRzKGEpKXJldHVybiB0W0FzKGEpXX0pKHQsbixhKTt2b2lkIDAhPT1lJiZBcnJheS5pc0FycmF5KGUpJiYoZT1VcChudWxsLHQsbixlWzFdLGEpLGU9V3AoZSxuLmF0dHJzLGEpLChmdW5jdGlvbiBjKHQsbixlLGEpe2NvbnN0IG89ZT9uLmNsYXNzQmluZGluZ3M6bi5zdHlsZUJpbmRpbmdzO25nRGV2TW9kZSYmd2EoVHMobyksMCwiRXhwZWN0aW5nIHRvIGhhdmUgYXQgbGVhc3Qgb25lIHRlbXBsYXRlIHN0eWxpbmcgYmluZGluZy4iKSx0W0FzKG8pXT1hfSkodCxuLGEsZSkpfWVsc2Ugcj0oZnVuY3Rpb24gcyh0LG4sZSl7bGV0IGE7Y29uc3Qgbz1uLmRpcmVjdGl2ZUVuZDtuZ0Rldk1vZGUmJndhKG4uZGlyZWN0aXZlU3R5bGluZ0xhc3QsLTEsIkJ5IHRoZSB0aW1lIHRoaXMgZnVuY3Rpb24gZ2V0cyBjYWxsZWQgYXQgbGVhc3Qgb25lIGhvc3RCaW5kaW5ncy1ub2RlIHN0eWxpbmcgaW5zdHJ1Y3Rpb24gbXVzdCBoYXZlIGV4ZWN1dGVkLiIpO2ZvcihsZXQgcj0xK24uZGlyZWN0aXZlU3R5bGluZ0xhc3Q7cjxvO3IrKylhPVdwKGEsdFtyXS5ob3N0QXR0cnMsZSk7cmV0dXJuIFdwKGEsbi5hdHRycyxlKX0pKHQsbixhKX1yZXR1cm4gdm9pZCAwIT09ciYmKGE/bi5yZXNpZHVhbENsYXNzZXM9cjpuLnJlc2lkdWFsU3R5bGVzPXIpLGV9KShvLHIsbixhKSwoZnVuY3Rpb24gaSh0LG4sZSxhLG8scil7bmdEZXZNb2RlJiZKbyhWcigpKTtsZXQgaT1yP24uY2xhc3NCaW5kaW5nczpuLnN0eWxlQmluZGluZ3MsYz1BcyhpKSxzPVRzKGkpO3RbYV09ZTtsZXQgbCxtPSExO2lmKEFycmF5LmlzQXJyYXkoZSkpe2NvbnN0IHQ9ZTtsPXRbMV0sKG51bGw9PT1sfHxtbyh0LGwpPjApJiYobT0hMCl9ZWxzZSBsPWU7aWYobylpZigwIT09cyl7Y29uc3Qgbj1Bcyh0W2MrMV0pO3RbYSsxXT1FcyhuLGMpLDAhPT1uJiYodFtuKzFdPURzKHRbbisxXSxhKSksdFtjKzFdPShmdW5jdGlvbiBkKHQsbil7cmV0dXJuIG5nRGV2TW9kZSYmeGEodCwiZXhwZWN0ZWQgbnVtYmVyIiksbmdEZXZNb2RlJiZ5YShuLDAsMzI3NjcpLDEzMTA3MSZ0fG48PDE3fSkodFtjKzFdLGEpfWVsc2UgdFthKzFdPUVzKGMsMCksMCE9PWMmJih0W2MrMV09RHModFtjKzFdLGEpKSxjPWE7ZWxzZSB0W2ErMV09RXMocywwKSxuZ0Rldk1vZGUmJnZhKDAhPT1jJiYwPT09cywhMSwiQWRkaW5nIHRlbXBsYXRlIGJpbmRpbmdzIGFmdGVyIGhvc3RCaW5kaW5ncyBpcyBub3QgYWxsb3dlZC4iKSwwPT09Yz9jPWE6dFtzKzFdPURzKHRbcysxXSxhKSxzPWE7bSYmKHRbYSsxXT1Scyh0W2ErMV0pKSxPcCh0LGwsYSwhMCksT3AodCxsLGEsITEpLChmdW5jdGlvbiBnKHQsbixlLGEsbyl7Y29uc3Qgcj1vP3QucmVzaWR1YWxDbGFzc2VzOnQucmVzaWR1YWxTdHlsZXM7bnVsbCE9ciYmInN0cmluZyI9PXR5cGVvZiBuJiZtbyhyLG4pPj0wJiYoZVthKzFdPU5zKGVbYSsxXSkpfSkobixsLHQsYSxyKSxpPUVzKGMscykscj9uLmNsYXNzQmluZGluZ3M9aTpuLnN0eWxlQmluZGluZ3M9aX0pKG8scixuLGUsaSxhKX19ZnVuY3Rpb24gVXAodCxuLGUsYSxvKXtsZXQgcj1udWxsO2NvbnN0IGk9ZS5kaXJlY3RpdmVFbmQ7bGV0IGM9ZS5kaXJlY3RpdmVTdHlsaW5nTGFzdDtmb3IoLTE9PT1jP2M9ZS5kaXJlY3RpdmVTdGFydDpjKys7YzxpJiYocj1uW2NdLG5nRGV2TW9kZSYmVGEociwiZXhwZWN0ZWQgdG8gYmUgZGVmaW5lZCIpLGE9V3AoYSxyLmhvc3RBdHRycyxvKSxyIT09dCk7KWMrKztyZXR1cm4gbnVsbCE9PXQmJihlLmRpcmVjdGl2ZVN0eWxpbmdMYXN0PWMpLGF9ZnVuY3Rpb24gV3AodCxuLGUpe2NvbnN0IGE9ZT8xOjI7bGV0IG89LTE7aWYobnVsbCE9PW4pZm9yKGxldCByPTA7cjxuLmxlbmd0aDtyKyspe2NvbnN0IGk9bltyXTsibnVtYmVyIj09dHlwZW9mIGk/bz1pOm89PT1hJiYoQXJyYXkuaXNBcnJheSh0KXx8KHQ9dm9pZCAwPT09dD9bXTpbIiIsdF0pLHNvKHQsaSwhIWV8fG5bKytyXSkpfXJldHVybiB2b2lkIDA9PT10P251bGw6dH1mdW5jdGlvbiBHcCh0LG4sZSl7c28odCxuLHBjKGUpKX1mdW5jdGlvbiBZcCh0LG4sZSxhLG8scixpLGMpe2lmKDIhPT1uLnR5cGUpcmV0dXJuO2NvbnN0IHM9dC5kYXRhLGw9c1tjKzFdO1pwKElzKGwpP3FwKHMsbixlLG8sVHMobCksaSk6dm9pZCAwKXx8KFpwKHIpfHx6cyhsKSYmKHI9cXAocyxudWxsLGUsbyxjLGkpKSwoZnVuY3Rpb24gbSh0LG4sZSxhLG8pe2NvbnN0IHI9eHIodCk7aWYobilvPyhuZ0Rldk1vZGUmJm5nRGV2TW9kZS5yZW5kZXJlckFkZENsYXNzKysscj90LmFkZENsYXNzKGUsYSk6KG5nRGV2TW9kZSYmVGEoZS5jbGFzc0xpc3QsIkhUTUxFbGVtZW50IGV4cGVjdGVkIiksZS5jbGFzc0xpc3QuYWRkKGEpKSk6KG5nRGV2TW9kZSYmbmdEZXZNb2RlLnJlbmRlcmVyUmVtb3ZlQ2xhc3MrKyxyP3QucmVtb3ZlQ2xhc3MoZSxhKTplLmNsYXNzTGlzdC5yZW1vdmUoYSkpO2Vsc2V7Y29uc3Qgbj0tMT09YS5pbmRleE9mKCItIik/dm9pZCAwOjI7bnVsbD09bz8obmdEZXZNb2RlJiZuZ0Rldk1vZGUucmVuZGVyZXJSZW1vdmVTdHlsZSsrLHI/dC5yZW1vdmVTdHlsZShlLGEsbik6ZS5zdHlsZS5yZW1vdmVQcm9wZXJ0eShhKSk6KG5nRGV2TW9kZSYmbmdEZXZNb2RlLnJlbmRlcmVyU2V0U3R5bGUrKyxyP3Quc2V0U3R5bGUoZSxhLG8sbik6KG5nRGV2TW9kZSYmVGEoZS5zdHlsZSwiSFRNTEVsZW1lbnQgZXhwZWN0ZWQiKSxlLnN0eWxlLnNldFByb3BlcnR5KGEsbykpKX19KShhLGksdnIoZ2koKSxlKSxvLHIpKX1mdW5jdGlvbiBxcCh0LG4sZSxhLG8scil7Y29uc3QgaT1udWxsPT09bjtsZXQgYztmb3IoO28+MDspe2NvbnN0IG49dFtvXSxyPUFycmF5LmlzQXJyYXkobikscz1yP25bMV06bixsPW51bGw9PT1zO2xldCBtPWVbbysxXTttPT09T3MmJihtPWw/TXA6dm9pZCAwKTtsZXQgZD1sP2xvKG0sYSk6cz09PWE/bTp2b2lkIDA7aWYociYmIVpwKGQpJiYoZD1sbyhuLGEpKSxacChkKSYmKGM9ZCxpKSlyZXR1cm4gYztjb25zdCBnPXRbbysxXTtvPWk/QXMoZyk6VHMoZyl9aWYobnVsbCE9PW4pe2xldCB0PXI/bi5yZXNpZHVhbENsYXNzZXM6bi5yZXNpZHVhbFN0eWxlcztudWxsIT10JiYoYz1sbyh0LGEpKX1yZXR1cm4gY31mdW5jdGlvbiBacCh0KXtyZXR1cm4gdm9pZCAwIT09dH1mdW5jdGlvbiBYcCh0LG4pe3JldHVybiAwIT0odC5mbGFncyYobj8xNjozMikpfQovKioKICAgICAqIEBsaWNlbnNlCiAgICAgKiBDb3B5cmlnaHQgR29vZ2xlIExMQyBBbGwgUmlnaHRzIFJlc2VydmVkLgogICAgICoKICAgICAqIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGFuIE1JVC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCiAgICAgKiBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlIGF0IGh0dHBzOi8vYW5ndWxhci5pby9saWNlbnNlCiAgICAgKi9mdW5jdGlvbiBKcCh0LG49IiIpe2NvbnN0IGU9QnIoKSxhPVZyKCksbz10K1RvO25nRGV2TW9kZSYmdmEoSnIoKSxhLmJpbmRpbmdTdGFydEluZGV4LCJ0ZXh0IG5vZGVzIHNob3VsZCBiZSBjcmVhdGVkIGJlZm9yZSBhbnkgYmluZGluZ3MiKSxuZ0Rldk1vZGUmJk5hKGUsbyk7Y29uc3Qgcj1hLmZpcnN0Q3JlYXRlUGFzcz91bChhLHQsMixudWxsLG51bGwpOmEuZGF0YVtvXSxpPWVbb109bW0obixlWzExXSk7T20oYSxlLGksciksV3IociwhMSl9Ci8qKgogICAgICogQGxpY2Vuc2UKICAgICAqIENvcHlyaWdodCBHb29nbGUgTExDIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCiAgICAgKgogICAgICogVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYW4gTUlULXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKICAgICAqIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUgYXQgaHR0cHM6Ly9hbmd1bGFyLmlvL2xpY2Vuc2UKICAgICAqL2Z1bmN0aW9uIFFwKHQpe3JldHVybiBLcCgiIix0LCIiKSxRcH1mdW5jdGlvbiBLcCh0LG4sZSl7Y29uc3QgYT1CcigpLG89TGcoYSx0LG4sZSk7cmV0dXJuIG8hPT1PcyYmc20oYSxnaSgpLG8pLEtwfWZ1bmN0aW9uICRwKHQsbixlLGEsbyl7Y29uc3Qgcj1CcigpLGk9SGcocix0LG4sZSxhLG8pO3JldHVybiBpIT09T3MmJnNtKHIsZ2koKSxpKSwkcH1mdW5jdGlvbiB0Yih0LG4sZSxhLG8scixpKXtjb25zdCBjPUJyKCkscz1CZyhjLHQsbixlLGEsbyxyLGkpO3JldHVybiBzIT09T3MmJnNtKGMsZ2koKSxzKSx0Yn0KLyoqCiAgICAgKiBAbGljZW5zZQogICAgICogQ29weXJpZ2h0IEdvb2dsZSBMTEMgQWxsIFJpZ2h0cyBSZXNlcnZlZC4KICAgICAqCiAgICAgKiBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhbiBNSVQtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQogICAgICogZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZSBhdCBodHRwczovL2FuZ3VsYXIuaW8vbGljZW5zZQogICAgICovCmZ1bmN0aW9uIG5iKHQsbixlKXtCcChzbyxMcCxMZyhCcigpLHQsbixlKSwhMCl9Ci8qKgogICAgICogQGxpY2Vuc2UKICAgICAqIENvcHlyaWdodCBHb29nbGUgTExDIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCiAgICAgKgogICAgICogVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYW4gTUlULXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKICAgICAqIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUgYXQgaHR0cHM6Ly9hbmd1bGFyLmlvL2xpY2Vuc2UKICAgICAqLwpmdW5jdGlvbiBlYih0LG4sZSl7Y29uc3QgYT1CcigpLG89S3IoKTtpZihSZyhhLG8sbikpe2NvbnN0IHI9VnIoKSxpPWJpKCk7d2wocixpLGEsdCxuLGFbMTFdLGUsITApLG5nRGV2TW9kZSYmZW0oci5kYXRhLGksdCxvKX1yZXR1cm4gZWJ9ZnVuY3Rpb24gYWIodCxuLGUpe2NvbnN0IGE9QnIoKSxvPUtyKCk7aWYoUmcoYSxvLG4pKXtjb25zdCByPVZyKCksaT1iaSgpO3dsKHIsaSxhLHQsbixybShlaShyLmRhdGEpLGksYSksZSwhMCksbmdEZXZNb2RlJiZlbShyLmRhdGEsaSx0LG8pfXJldHVybiBhYn0KLyoqCiAgICAgKiBAbGljZW5zZQogICAgICogQ29weXJpZ2h0IEdvb2dsZSBMTEMgQWxsIFJpZ2h0cyBSZXNlcnZlZC4KICAgICAqCiAgICAgKiBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhbiBNSVQtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQogICAgICogZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZSBhdCBodHRwczovL2FuZ3VsYXIuaW8vbGljZW5zZQogICAgICovInVuZGVmaW5lZCI9PXR5cGVvZiBuZ0kxOG5DbG9zdXJlTW9kZSYmKG1hLm5nSTE4bkNsb3N1cmVNb2RlPSJ1bmRlZmluZWQiIT10eXBlb2YgZ29vZyYmImZ1bmN0aW9uIj09dHlwZW9mIGdvb2cuZ2V0TXNnKTsKLyoqCiAgICAgKiBAbGljZW5zZQogICAgICogQ29weXJpZ2h0IEdvb2dsZSBMTEMgQWxsIFJpZ2h0cyBSZXNlcnZlZC4KICAgICAqCiAgICAgKiBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhbiBNSVQtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQogICAgICogZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZSBhdCBodHRwczovL2FuZ3VsYXIuaW8vbGljZW5zZQogICAgICovY29uc3Qgb2I9dm9pZCAwO3ZhciByYj1bImVuIixbWyJhIiwicCJdLFsiQU0iLCJQTSJdLG9iXSxbWyJBTSIsIlBNIl0sb2Isb2JdLFtbIlMiLCJNIiwiVCIsIlciLCJUIiwiRiIsIlMiXSxbIlN1biIsIk1vbiIsIlR1ZSIsIldlZCIsIlRodSIsIkZyaSIsIlNhdCJdLFsiU3VuZGF5IiwiTW9uZGF5IiwiVHVlc2RheSIsIldlZG5lc2RheSIsIlRodXJzZGF5IiwiRnJpZGF5IiwiU2F0dXJkYXkiXSxbIlN1IiwiTW8iLCJUdSIsIldlIiwiVGgiLCJGciIsIlNhIl1dLG9iLFtbIkoiLCJGIiwiTSIsIkEiLCJNIiwiSiIsIkoiLCJBIiwiUyIsIk8iLCJOIiwiRCJdLFsiSmFuIiwiRmViIiwiTWFyIiwiQXByIiwiTWF5IiwiSnVuIiwiSnVsIiwiQXVnIiwiU2VwIiwiT2N0IiwiTm92IiwiRGVjIl0sWyJKYW51YXJ5IiwiRmVicnVhcnkiLCJNYXJjaCIsIkFwcmlsIiwiTWF5IiwiSnVuZSIsIkp1bHkiLCJBdWd1c3QiLCJTZXB0ZW1iZXIiLCJPY3RvYmVyIiwiTm92ZW1iZXIiLCJEZWNlbWJlciJdXSxvYixbWyJCIiwiQSJdLFsiQkMiLCJBRCJdLFsiQmVmb3JlIENocmlzdCIsIkFubm8gRG9taW5pIl1dLDAsWzYsMF0sWyJNL2QveXkiLCJNTU0gZCwgeSIsIk1NTU0gZCwgeSIsIkVFRUUsIE1NTU0gZCwgeSJdLFsiaDptbSBhIiwiaDptbTpzcyBhIiwiaDptbTpzcyBhIHoiLCJoOm1tOnNzIGEgenp6eiJdLFsiezF9LCB7MH0iLG9iLCJ7MX0gJ2F0JyB7MH0iLG9iXSxbIi4iLCIsIiwiOyIsIiUiLCIrIiwiLSIsIkUiLCLDlyIsIuKAsCIsIuKIniIsIk5hTiIsIjoiXSxbIiMsIyMwLiMjIyIsIiMsIyMwJSIsIsKkIywjIzAuMDAiLCIjRTAiXSwiVVNEIiwiJCIsIlVTIERvbGxhciIse30sImx0ciIsZnVuY3Rpb24gaWIodCl7bGV0IG49TWF0aC5mbG9vcihNYXRoLmFicyh0KSksZT10LnRvU3RyaW5nKCkucmVwbGFjZSgvXlteLl0qXC4/LywiIikubGVuZ3RoO3JldHVybiAxPT09biYmMD09PWU/MTo1fV07Ci8qKgogICAgICogQGxpY2Vuc2UKICAgICAqIENvcHlyaWdodCBHb29nbGUgTExDIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCiAgICAgKgogICAgICogVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYW4gTUlULXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKICAgICAqIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUgYXQgaHR0cHM6Ly9hbmd1bGFyLmlvL2xpY2Vuc2UKICAgICAqL2xldCBjYj17fTtmdW5jdGlvbiBzYih0KXtjb25zdCBuPShmdW5jdGlvbiBlKHQpe3JldHVybiB0LnRvTG93ZXJDYXNlKCkucmVwbGFjZSgvXy9nLCItIil9Ci8qKgogICAgICogQGxpY2Vuc2UKICAgICAqIENvcHlyaWdodCBHb29nbGUgTExDIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCiAgICAgKgogICAgICogVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYW4gTUlULXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKICAgICAqIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUgYXQgaHR0cHM6Ly9hbmd1bGFyLmlvL2xpY2Vuc2UKICAgICAqLykodCk7bGV0IGE9bWIobik7aWYoYSlyZXR1cm4gYTtjb25zdCBvPW4uc3BsaXQoIi0iKVswXTtpZihhPW1iKG8pLGEpcmV0dXJuIGE7aWYoImVuIj09PW8pcmV0dXJuIHJiO3Rocm93IG5ldyBFcnJvcihgTWlzc2luZyBsb2NhbGUgZGF0YSBmb3IgdGhlIGxvY2FsZSAiJHt0fSIuYCl9ZnVuY3Rpb24gbGIodCl7cmV0dXJuIHNiKHQpW2RiLlBsdXJhbENhc2VdfWZ1bmN0aW9uIG1iKHQpe3JldHVybiB0IGluIGNifHwoY2JbdF09bWEubmcmJm1hLm5nLmNvbW1vbiYmbWEubmcuY29tbW9uLmxvY2FsZXMmJm1hLm5nLmNvbW1vbi5sb2NhbGVzW3RdKSxjYlt0XX12YXIgZGI7IShmdW5jdGlvbih0KXt0W3QuTG9jYWxlSWQ9MF09IkxvY2FsZUlkIix0W3QuRGF5UGVyaW9kc0Zvcm1hdD0xXT0iRGF5UGVyaW9kc0Zvcm1hdCIsdFt0LkRheVBlcmlvZHNTdGFuZGFsb25lPTJdPSJEYXlQZXJpb2RzU3RhbmRhbG9uZSIsdFt0LkRheXNGb3JtYXQ9M109IkRheXNGb3JtYXQiLHRbdC5EYXlzU3RhbmRhbG9uZT00XT0iRGF5c1N0YW5kYWxvbmUiLHRbdC5Nb250aHNGb3JtYXQ9NV09Ik1vbnRoc0Zvcm1hdCIsdFt0Lk1vbnRoc1N0YW5kYWxvbmU9Nl09Ik1vbnRoc1N0YW5kYWxvbmUiLHRbdC5FcmFzPTddPSJFcmFzIix0W3QuRmlyc3REYXlPZldlZWs9OF09IkZpcnN0RGF5T2ZXZWVrIix0W3QuV2Vla2VuZFJhbmdlPTldPSJXZWVrZW5kUmFuZ2UiLHRbdC5EYXRlRm9ybWF0PTEwXT0iRGF0ZUZvcm1hdCIsdFt0LlRpbWVGb3JtYXQ9MTFdPSJUaW1lRm9ybWF0Iix0W3QuRGF0ZVRpbWVGb3JtYXQ9MTJdPSJEYXRlVGltZUZvcm1hdCIsdFt0Lk51bWJlclN5bWJvbHM9MTNdPSJOdW1iZXJTeW1ib2xzIix0W3QuTnVtYmVyRm9ybWF0cz0xNF09Ik51bWJlckZvcm1hdHMiLHRbdC5DdXJyZW5jeUNvZGU9MTVdPSJDdXJyZW5jeUNvZGUiLHRbdC5DdXJyZW5jeVN5bWJvbD0xNl09IkN1cnJlbmN5U3ltYm9sIix0W3QuQ3VycmVuY3lOYW1lPTE3XT0iQ3VycmVuY3lOYW1lIix0W3QuQ3VycmVuY2llcz0xOF09IkN1cnJlbmNpZXMiLHRbdC5EaXJlY3Rpb25hbGl0eT0xOV09IkRpcmVjdGlvbmFsaXR5Iix0W3QuUGx1cmFsQ2FzZT0yMF09IlBsdXJhbENhc2UiLHRbdC5FeHRyYURhdGE9MjFdPSJFeHRyYURhdGEifSkoZGJ8fChkYj17fSkpO2NvbnN0IGdiPVsiemVybyIsIm9uZSIsInR3byIsImZldyIsIm1hbnkiXSxwYj0iZW4tVVMiLGJiPXttYXJrZXI6ImVsZW1lbnQifSx1Yj17bWFya2VyOiJjb21tZW50In07Ci8qKgogICAgICogQGxpY2Vuc2UKICAgICAqIENvcHlyaWdodCBHb29nbGUgTExDIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCiAgICAgKgogICAgICogVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYW4gTUlULXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKICAgICAqIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUgYXQgaHR0cHM6Ly9hbmd1bGFyLmlvL2xpY2Vuc2UKICAgICAqLwpsZXQgZmI9cGI7ZnVuY3Rpb24gaGIodCl7VGEodCwiRXhwZWN0ZWQgbG9jYWxlSWQgdG8gYmUgZGVmaW5lZCIpLCJzdHJpbmciPT10eXBlb2YgdCYmKGZiPXQudG9Mb3dlckNhc2UoKS5yZXBsYWNlKC9fL2csIi0iKSl9Ci8qKgogICAgICogQGxpY2Vuc2UKICAgICAqIENvcHlyaWdodCBHb29nbGUgTExDIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCiAgICAgKgogICAgICogVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYW4gTUlULXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKICAgICAqIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUgYXQgaHR0cHM6Ly9hbmd1bGFyLmlvL2xpY2Vuc2UKICAgICAqLwpjb25zdCBfYj1bXTtsZXQgQ2I9LTEsTWI9MCxPYj0wO2Z1bmN0aW9uIFBiKHQsbixlLGEpe2NvbnN0IG89YVsxMV07bGV0IHI9bnVsbCxpPW51bGw7Y29uc3QgYz1bXTtmb3IobGV0IHM9MDtzPGUubGVuZ3RoO3MrKyl7Y29uc3QgbD1lW3NdO2lmKCJzdHJpbmciPT10eXBlb2YgbCl7Y29uc3Qgbj1tbShsLG8pLG09ZVsrK3NdO25nRGV2TW9kZSYmbmdEZXZNb2RlLnJlbmRlcmVyQ3JlYXRlVGV4dE5vZGUrKyxpPXIscj1FYih0LGEsbSwyLG4sbnVsbCksYy5wdXNoKG0pLFlyKCl9ZWxzZSBpZigibnVtYmVyIj09dHlwZW9mIGwpc3dpdGNoKDcmbCl7Y2FzZSAxOmNvbnN0IG89bD4+PjE3O2xldCBtO209bz09PW4/YVs2XTpTcih0LG8pLG5nRGV2TW9kZSYmVGEociwiWW91IG5lZWQgdG8gY3JlYXRlIG9yIHNlbGVjdCBhIG5vZGUgYmVmb3JlIHlvdSBjYW4gaW5zZXJ0IGl0IGludG8gdGhlIERPTSIpLGk9d2IodCxyLG0saSxhKTticmVhaztjYXNlIDA6Y29uc3QgZD1sPj0wLGc9KGQ/bDp+bCk+Pj4zO2MucHVzaChnKSxpPXIscj1Tcih0LGcpLHImJldyKHIsZCk7YnJlYWs7Y2FzZSA1Omk9cj1Tcih0LGw+Pj4zKSxXcihyLCExKTticmVhaztjYXNlIDQ6Y29uc3QgcD1lWysrc10sYj1lWysrc107amwoU3IodCxsPj4+MyksYSxwLGIsbnVsbCxudWxsKTticmVhaztkZWZhdWx0OnRocm93IG5ldyBFcnJvcihgVW5hYmxlIHRvIGRldGVybWluZSB0aGUgdHlwZSBvZiBtdXRhdGUgb3BlcmF0aW9uIGZvciAiJHtsfSJgKX1lbHNlIHN3aXRjaChsKXtjYXNlIHViOmNvbnN0IG49ZVsrK3NdLG09ZVsrK3NdO25nRGV2TW9kZSYmdmEodHlwZW9mIG4sInN0cmluZyIsYEV4cGVjdGVkICIke259IiB0byBiZSBhIGNvbW1lbnQgbm9kZSB2YWx1ZWApO2NvbnN0IGQ9by5jcmVhdGVDb21tZW50KG4pO25nRGV2TW9kZSYmbmdEZXZNb2RlLnJlbmRlcmVyQ3JlYXRlQ29tbWVudCsrLGk9cixyPUViKHQsYSxtLDQsZCxudWxsKSxjLnB1c2gobSksb3MoZCxhKSxZcigpO2JyZWFrO2Nhc2UgYmI6Y29uc3QgZz1lWysrc10scD1lWysrc107bmdEZXZNb2RlJiZ2YSh0eXBlb2YgZywic3RyaW5nIixgRXhwZWN0ZWQgIiR7Z30iIHRvIGJlIGFuIGVsZW1lbnQgbm9kZSB0YWcgbmFtZWApO2NvbnN0IGI9by5jcmVhdGVFbGVtZW50KGcpO25nRGV2TW9kZSYmbmdEZXZNb2RlLnJlbmRlcmVyQ3JlYXRlRWxlbWVudCsrLGk9cixyPUViKHQsYSxwLDIsYixnKSxjLnB1c2gocCk7YnJlYWs7ZGVmYXVsdDp0aHJvdyBuZXcgRXJyb3IoYFVuYWJsZSB0byBkZXRlcm1pbmUgdGhlIHR5cGUgb2YgbXV0YXRlIG9wZXJhdGlvbiBmb3IgIiR7bH0iYCl9fXJldHVybiBZcigpLGN9ZnVuY3Rpb24geGIodCxuLGUsYSxvLHIpe2xldCBpPSExO2ZvcihsZXQgYz0wO2M8YS5sZW5ndGg7YysrKXtjb25zdCBzPWFbY10sbD1hWysrY107aWYocyZyKXtsZXQgcj0iIjtmb3IobGV0IHM9YysxO3M8PWMrbDtzKyspe2NvbnN0IGM9YVtzXTtpZigic3RyaW5nIj09dHlwZW9mIGMpcis9YztlbHNlIGlmKCJudW1iZXIiPT10eXBlb2YgYylpZihjPDApcis9JG8oZVtvLWNdKTtlbHNle2NvbnN0IGw9Yz4+PjI7c3dpdGNoKDMmYyl7Y2FzZSAxOmNvbnN0IGM9YVsrK3NdLG09YVsrK3NdO3dsKHQsU3IodCxsKSxlLGMscixlWzExXSxtLCExKTticmVhaztjYXNlIDA6c20oZSxsLHIpO2JyZWFrO2Nhc2UgMjppPWtiKHQsbixhWysrc10sZSxyKTticmVhaztjYXNlIDM6eWIodCxuLGFbKytzXSxvLGUsaSl9fX19Yys9bH19ZnVuY3Rpb24geWIodCxuLGUsYSxvLHIpe25nRGV2TW9kZSYmTmEobixlKTtjb25zdCBpPW5bZV07bmdEZXZNb2RlJiZOYShvLGkuY3VycmVudENhc2VMVmlld0luZGV4KTtjb25zdCBjPW9baS5jdXJyZW50Q2FzZUxWaWV3SW5kZXhdO251bGwhPT1jJiZ4Yih0LG4sbyxpLnVwZGF0ZVtjXSxhLHI/LTE6TWIpfWZ1bmN0aW9uIGtiKHQsbixlLGEsbyl7dmIodCxuLGUsYSk7bGV0IHI9ITE7Y29uc3QgaT1uW2VdLGM9KGZ1bmN0aW9uIHModCxuKXtsZXQgZT10LmNhc2VzLmluZGV4T2Yobik7aWYoLTE9PT1lKXN3aXRjaCh0LnR5cGUpe2Nhc2UgMTp7Y29uc3QgYT0oZnVuY3Rpb24gbyh0LG4pe2NvbnN0IGU9bGIobikocGFyc2VJbnQodCwxMCkpLGE9Z2JbZV07cmV0dXJuIHZvaWQgMCE9PWE/YToib3RoZXIifSkobiwoZnVuY3Rpb24gYSgpe3JldHVybiBmYn0pKCkpO2U9dC5jYXNlcy5pbmRleE9mKGEpLC0xPT09ZSYmIm90aGVyIiE9PWEmJihlPXQuY2FzZXMuaW5kZXhPZigib3RoZXIiKSk7YnJlYWt9Y2FzZSAwOmU9dC5jYXNlcy5pbmRleE9mKCJvdGhlciIpfXJldHVybiBlfQovKioKICAgICAqIEBsaWNlbnNlCiAgICAgKiBDb3B5cmlnaHQgR29vZ2xlIExMQyBBbGwgUmlnaHRzIFJlc2VydmVkLgogICAgICoKICAgICAqIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGFuIE1JVC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCiAgICAgKiBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlIGF0IGh0dHBzOi8vYW5ndWxhci5pby9saWNlbnNlCiAgICAgKi8pKGksbyk7cmV0dXJuIGFbaS5jdXJyZW50Q2FzZUxWaWV3SW5kZXhdPS0xIT09Yz9jOm51bGwsYz4tMSYmKFBiKHQsLTEsaS5jcmVhdGVbY10sYSkscj0hMCkscn1mdW5jdGlvbiB2Yih0LG4sZSxhKXtuZ0Rldk1vZGUmJk5hKG4sZSk7Y29uc3Qgbz1uW2VdLHI9YVtvLmN1cnJlbnRDYXNlTFZpZXdJbmRleF07aWYobnVsbCE9PXIpe2NvbnN0IGU9by5yZW1vdmVbcl07Zm9yKGxldCBvPTA7bzxlLmxlbmd0aDtvKyspe2NvbnN0IHI9ZVtvXSxpPXI+Pj4zO3N3aXRjaCg3JnIpe2Nhc2UgMzpTYih0LGEsaSwhMSk7YnJlYWs7Y2FzZSA2OnZiKHQsbixpLGEpfX19fWZ1bmN0aW9uIHdiKHQsbixlLGEsbyl7bmdEZXZNb2RlJiZuZ0Rldk1vZGUucmVuZGVyZXJNb3ZlTm9kZSsrO2NvbnN0IHI9bi5uZXh0O2F8fChhPWUpLGE9PT1lJiZuIT09ZS5jaGlsZD8obi5uZXh0PWUuY2hpbGQsbnVsbD09PW4ucGFyZW50P3QuZmlyc3RDaGlsZD1uOmUuY2hpbGQ9bik6YSE9PWUmJm4hPT1hLm5leHQ/KG4ubmV4dD1hLm5leHQsYS5uZXh0PW4pOm4ubmV4dD1udWxsLGUhPT1vWzZdJiYobi5wYXJlbnQ9ZSk7bGV0IGk9bi5uZXh0O2Zvcig7aTspaS5uZXh0PT09biYmKGkubmV4dD1yKSxpPWkubmV4dDtpZigxPT09bi50eXBlKXJldHVybiB3bSh0LG8sbiksbjtPbSh0LG8sd3IobixvKSxuKTtjb25zdCBjPW9bbi5pbmRleF07cmV0dXJuIDAhPT1uLnR5cGUmJkZvKGMpJiZPbSh0LG8sY1s3XSxuKSxufWZ1bmN0aW9uIFNiKHQsbixlLGEpe2NvbnN0IG89U3IodCxlKSxyPXZyKGUsbik7ciYmeW0oblsxMV0scik7Y29uc3QgaT1FcihuLGUpO2lmKEZvKGkpKXtjb25zdCB0PWk7MCE9PW8udHlwZSYmeW0oblsxMV0sdFs3XSl9YSYmbyYmKG8uZmxhZ3N8PTY0KSxuZ0Rldk1vZGUmJm5nRGV2TW9kZS5yZW5kZXJlclJlbW92ZU5vZGUrK31mdW5jdGlvbiBFYih0LG4sZSxhLG8scil7Y29uc3QgaT1VcigpO25nRGV2TW9kZSYmTmEobixlK1RvKSxuW2UrVG9dPW87Y29uc3QgYz11bCh0LGUsYSxyLG51bGwpO3JldHVybiBpJiZpLm5leHQ9PT1jJiYoaS5uZXh0PW51bGwpLGN9ZnVuY3Rpb24gQWIodCl7Y29uc3Qgbj1uZXcgUmIodHx8KEFycmF5LmlzQXJyYXkodGhpcyk/dGhpczpbXSkpO2xldCBlPVtdO2Z1bmN0aW9uIGEodCl7Y29uc3QgZT10Pj4+Mjtzd2l0Y2goMyZ0KXtjYXNlIDA6cmV0dXJuYChsVmlld1ske2V9XSBhcyBUZXh0KS50ZXh0Q29udGVudCA9ICQkJGA7Y2FzZSAxOmNvbnN0IHQ9bi5jb25zdW1lU3RyaW5nKCksYT1uLmNvbnN1bWVGdW5jdGlvbigpO3JldHVybmAobFZpZXdbJHtlfV0gYXMgRWxlbWVudCkuc2V0QXR0cmlidXRlKCcke3R9JywgJHthP2AoJHthfSkoJCQkKWA6IiQkJCJ9KWA7Y2FzZSAyOnJldHVybmBpY3VTd2l0Y2hDYXNlKGxWaWV3WyR7ZX1dIGFzIENvbW1lbnQsICR7bi5jb25zdW1lTnVtYmVyKCl9LCAkJCQpYDtjYXNlIDM6cmV0dXJuYGljdVVwZGF0ZUNhc2UobFZpZXdbJHtlfV0gYXMgQ29tbWVudCwgJHtuLmNvbnN1bWVOdW1iZXIoKX0pYH10aHJvdyBuZXcgRXJyb3IoInVuZXhwZWN0ZWQgT3BDb2RlIil9Zm9yKDtuLmhhc01vcmUoKTspe2xldCB0PW4uY29uc3VtZU51bWJlcigpLG89bi5jb25zdW1lTnVtYmVyKCk7Y29uc3Qgcj1uLmkrbyxpPVtdO2xldCBjPSIiO2Zvcig7bi5pPHI7KXtsZXQgdD1uLmNvbnN1bWVOdW1iZXJPclN0cmluZygpO2lmKCJzdHJpbmciPT10eXBlb2YgdCljKz10O2Vsc2UgaWYodDwwKWMrPSIke2xWaWV3WyIrKDAtdCkrIl19IjtlbHNle2NvbnN0IG49YSh0KTtpLnB1c2gobi5yZXBsYWNlKCIkJCQiLCJgIitjKyJgIikrIjsiKSxjPSIifX1lLnB1c2goYGlmIChtYXNrICYgMGIke3QudG9TdHJpbmcoMil9KSB7ICR7aS5qb2luKCIgIil9IH1gKX1yZXR1cm4gZX1mdW5jdGlvbiB6Yih0KXtjb25zdCBuPW5ldyBSYih0fHwoQXJyYXkuaXNBcnJheSh0aGlzKT90aGlzOltdKSk7bGV0IGU9W107ZnVuY3Rpb24gYSh0KXtjb25zdCBlPSgKLyoqCiAgICAgKiBAbGljZW5zZQogICAgICogQ29weXJpZ2h0IEdvb2dsZSBMTEMgQWxsIFJpZ2h0cyBSZXNlcnZlZC4KICAgICAqCiAgICAgKiBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhbiBNSVQtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQogICAgICogZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZSBhdCBodHRwczovL2FuZ3VsYXIuaW8vbGljZW5zZQogICAgICovCmZ1bmN0aW9uIGEodCl7cmV0dXJuIHQ+Pj4xN30pKHQpLHI9KGZ1bmN0aW9uIGkodCl7cmV0dXJuKDEzMTA2NCZ0KT4+PjN9KSh0KTtzd2l0Y2goKGZ1bmN0aW9uIGModCl7cmV0dXJuIDcmdH0pKHQpKXtjYXNlIDA6cmV0dXJuIG89ciwiIjtjYXNlIDE6cmV0dXJuYChsVmlld1ske2V9XSBhcyBFbGVtZW50KS5hcHBlbmRDaGlsZChsVmlld1ske299XSlgO2Nhc2UgMzpyZXR1cm5gKGxWaWV3WyR7ZX1dIGFzIEVsZW1lbnQpLnJlbW92ZShsVmlld1ske3J9XSlgO2Nhc2UgNDpyZXR1cm5gKGxWaWV3WyR7cn1dIGFzIEVsZW1lbnQpLnNldEF0dHJpYnV0ZSgiJHtuLmNvbnN1bWVTdHJpbmcoKX0iLCAiJHtuLmNvbnN1bWVTdHJpbmcoKX0iKWA7Y2FzZSA1OnJldHVybmBzZXRDdXJyZW50VE5vZGUodFZpZXcuZGF0YVske3J9XSBhcyBUTm9kZSlgO2Nhc2UgNjpyZXR1cm5gcmVtb3ZlTmVzdGVkSUNVKCR7cn0pYH10aHJvdyBuZXcgRXJyb3IoIlVuZXhwZWN0ZWQgT3BDb2RlIil9bGV0IG89LTE7Zm9yKDtuLmhhc01vcmUoKTspe2xldCB0PW4uY29uc3VtZU51bWJlclN0cmluZ09yTWFya2VyKCk7aWYodD09PXViKXtjb25zdCB0PW4uY29uc3VtZVN0cmluZygpO289bi5jb25zdW1lTnVtYmVyKCksZS5wdXNoKGBsVmlld1ske299XSA9IGRvY3VtZW50LmNyZWF0ZUNvbW1lbnQoIiR7dH0iKWApfWVsc2UgaWYodD09PWJiKXtjb25zdCB0PW4uY29uc3VtZVN0cmluZygpO289bi5jb25zdW1lTnVtYmVyKCksZS5wdXNoKGBsVmlld1ske299XSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoIiR7dH0iKWApfWVsc2UgaWYoInN0cmluZyI9PXR5cGVvZiB0KW89bi5jb25zdW1lTnVtYmVyKCksZS5wdXNoKGBsVmlld1ske299XSA9IGRvY3VtZW50LmNyZWF0ZVRleHROb2RlKCIke3R9IilgKTtlbHNle2lmKCJudW1iZXIiIT10eXBlb2YgdCl0aHJvdyBuZXcgRXJyb3IoIlVuZXhwZWN0ZWQgdmFsdWUiKTt7Y29uc3Qgbj1hKHQpO24mJmUucHVzaChuKX19fXJldHVybiBlfWNsYXNzIFJie2NvbnN0cnVjdG9yKHQpe3RoaXMuaT0wLHRoaXMuY29kZXM9dH1oYXNNb3JlKCl7cmV0dXJuIHRoaXMuaTx0aGlzLmNvZGVzLmxlbmd0aH1jb25zdW1lTnVtYmVyKCl7bGV0IHQ9dGhpcy5jb2Rlc1t0aGlzLmkrK107cmV0dXJuIHhhKHQsImV4cGVjdGluZyBudW1iZXIgaW4gT3BDb2RlIiksdH1jb25zdW1lU3RyaW5nKCl7bGV0IHQ9dGhpcy5jb2Rlc1t0aGlzLmkrK107cmV0dXJuIGthKHQsImV4cGVjdGluZyBzdHJpbmcgaW4gT3BDb2RlIiksdH1jb25zdW1lRnVuY3Rpb24oKXtsZXQgdD10aGlzLmNvZGVzW3RoaXMuaSsrXTtpZihudWxsPT09dHx8ImZ1bmN0aW9uIj09dHlwZW9mIHQpcmV0dXJuIHQ7dGhyb3cgbmV3IEVycm9yKCJleHBlY3RpbmcgZnVuY3Rpb24gaW4gT3BDb2RlIil9Y29uc3VtZU51bWJlck9yU3RyaW5nKCl7bGV0IHQ9dGhpcy5jb2Rlc1t0aGlzLmkrK107cmV0dXJuInN0cmluZyI9PXR5cGVvZiB0fHx4YSh0LCJleHBlY3RpbmcgbnVtYmVyIG9yIHN0cmluZyBpbiBPcENvZGUiKSx0fWNvbnN1bWVOdW1iZXJTdHJpbmdPck1hcmtlcigpe2xldCB0PXRoaXMuY29kZXNbdGhpcy5pKytdO3JldHVybiJzdHJpbmciPT10eXBlb2YgdHx8Im51bWJlciI9PXR5cGVvZiB0fHx0PT11Ynx8dD09YmJ8fHhhKHQsImV4cGVjdGluZyBudW1iZXIsIHN0cmluZywgQ09NTUVOVF9NQVJLRVIgb3IgRUxFTUVOVF9NQVJLRVIgaW4gT3BDb2RlIiksdH19Ci8qKgogICAgICogQGxpY2Vuc2UKICAgICAqIENvcHlyaWdodCBHb29nbGUgTExDIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCiAgICAgKgogICAgICogVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYW4gTUlULXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKICAgICAqIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUgYXQgaHR0cHM6Ly9hbmd1bGFyLmlvL2xpY2Vuc2UKICAgICAqL2NvbnN0IFRiPS/vv70oXGQrKTo/XGQq77+9L2dpLERiPS8oe1xzKu+/vVxkKzo/XGQq77+9XHMqLFxzKlxTezZ9XHMqLFtcc1xTXSp9KS9naSxJYj0v77+9KFxkKynvv70vLE5iPS9eXHMqKO+/vVxkKzo/XGQq77+9KVxzKixccyooc2VsZWN0fHBsdXJhbClccyosLztsZXQgRmI7Y29uc3QgTGI9W10sSGI9L++/vVwvP1wqKFxkKzpcZCsp77+9L2dpLEJiPS/vv70oXC8/WyMqIV1cZCspOj9cZCrvv70vZ2ksVmI9L1x1RTUwMC9nO2Z1bmN0aW9uIGpiKHQsbixlLGE9bnVsbCl7Y29uc3Qgbz1bbnVsbCxudWxsXTtuZ0Rldk1vZGUmJkxzKG8sQWIpO2NvbnN0IHI9dC5zcGxpdChUYik7bGV0IGk9MDtmb3IobGV0IHQ9MDt0PHIubGVuZ3RoO3QrKyl7Y29uc3Qgbj1yW3RdO2lmKDEmdCl7Y29uc3QgdD1wYXJzZUludChuLDEwKTtvLnB1c2goLTEtdCksaXw9R2IodCl9ZWxzZSIiIT09biYmby5wdXNoKG4pfXJldHVybiBvLnB1c2gobjw8MnwoZT8xOjApKSxlJiZvLnB1c2goZSxhKSxvWzBdPWksb1sxXT1vLmxlbmd0aC0yLG99ZnVuY3Rpb24gVWIodCxuPTApe2xldCBlO258PUdiKHQubWFpbkJpbmRpbmcpO2ZvcihsZXQgYT0wO2E8dC52YWx1ZXMubGVuZ3RoO2ErKyl7Y29uc3Qgbz10LnZhbHVlc1thXTtmb3IobGV0IHQ9MDt0PG8ubGVuZ3RoO3QrKyl7Y29uc3QgYT1vW3RdO2lmKCJzdHJpbmciPT10eXBlb2YgYSlmb3IoO2U9VGIuZXhlYyhhKTspbnw9R2IocGFyc2VJbnQoZVsxXSwxMCkpO2Vsc2Ugbj1VYihhLG4pfX1yZXR1cm4gbn1mdW5jdGlvbiBXYih0KXtyZXR1cm4gdCtGYisrfWZ1bmN0aW9uIEdiKHQpe3JldHVybiAxPDxNYXRoLm1pbih0LDMxKX1mdW5jdGlvbiBZYih0KXtyZXR1cm4gdm9pZCAwPT09dH1mdW5jdGlvbiBxYih0KXtsZXQgbixlLGE9IiIsbz0wLHI9ITE7Zm9yKDtudWxsIT09KG49SGIuZXhlYyh0KSk7KXI/blswXT09PWDvv70vKiR7ZX3vv71gJiYobz1uLmluZGV4LHI9ITEpOihhKz10LnN1YnN0cmluZyhvLG4uaW5kZXgrblswXS5sZW5ndGgpLGU9blsxXSxyPSEwKTtyZXR1cm4gbmdEZXZNb2RlJiZ2YShyLCExLGBUYWcgbWlzbWF0Y2g6IHVuYWJsZSB0byBmaW5kIHRoZSBlbmQgb2YgdGhlIHN1Yi10ZW1wbGF0ZSBpbiB0aGUgdHJhbnNsYXRpb24gIiR7dH0iYCksYSs9dC5zdWJzdHIobyksYX1mdW5jdGlvbiBaYih0LG4sZSxhKXtjb25zdCBvPVtdLHI9W10saT1bXSxjPVtdLHM9W10sbD1uLnZhbHVlcztmb3IobGV0IG49MDtuPGwubGVuZ3RoO24rKyl7Y29uc3QgbT1sW25dLGQ9W107Zm9yKGxldCB0PTA7dDxtLmxlbmd0aDt0Kyspe2NvbnN0IG49bVt0XTtpZigic3RyaW5nIiE9dHlwZW9mIG4pe2NvbnN0IGU9ZC5wdXNoKG4pLTE7bVt0XT1gXHgzYyEtLe+/vSR7ZX3vv70tLVx4M2VgfX1jb25zdCBnPUpiKG0uam9pbigiIiksZSxkLHQsYSk7by5wdXNoKGcuY3JlYXRlKSxyLnB1c2goZy5yZW1vdmUpLGkucHVzaChnLnVwZGF0ZSksYy5wdXNoKGcudmFycykscy5wdXNoKGcuY2hpbGRJY3VzKX10LnB1c2goe3R5cGU6bi50eXBlLHZhcnM6YyxjdXJyZW50Q2FzZUxWaWV3SW5kZXg6VG8rYSsxLGNoaWxkSWN1czpzLGNhc2VzOm4uY2FzZXMsY3JlYXRlOm8scmVtb3ZlOnIsdXBkYXRlOml9KSxGYis9TWF0aC5tYXgoLi4uYyl9ZnVuY3Rpb24gWGIodCl7Y29uc3Qgbj1bXSxlPVtdO2xldCBhPTEsbz0wO2NvbnN0IHI9UWIodD10LnJlcGxhY2UoTmIsKGZ1bmN0aW9uKHQsbixlKXtyZXR1cm4gYT0ic2VsZWN0Ij09PWU/MDoxLG89cGFyc2VJbnQobi5zdWJzdHIoMSksMTApLCIifSkpKTtmb3IobGV0IHQ9MDt0PHIubGVuZ3RoOyl7bGV0IG89clt0KytdLnRyaW0oKTsxPT09YSYmKG89by5yZXBsYWNlKC9ccyooPzo9KT8oXHcrKVxzKi8sIiQxIikpLG8ubGVuZ3RoJiZuLnB1c2gobyk7Y29uc3QgaT1RYihyW3QrK10pO24ubGVuZ3RoPmUubGVuZ3RoJiZlLnB1c2goaSl9cmV0dXJue3R5cGU6YSxtYWluQmluZGluZzpvLGNhc2VzOm4sdmFsdWVzOmV9fWZ1bmN0aW9uIEpiKHQsbixlLGEsbyl7Y29uc3Qgcj1DYyhPcigpKS5nZXRJbmVydEJvZHlFbGVtZW50KHQpO2lmKCFyKXRocm93IG5ldyBFcnJvcigiVW5hYmxlIHRvIGdlbmVyYXRlIGluZXJ0IGJvZHkgZWxlbWVudCIpO2NvbnN0IGk9cWMocil8fHIsYz17dmFyczoxLGNoaWxkSWN1czpbXSxjcmVhdGU6W10scmVtb3ZlOltdLHVwZGF0ZTpbXX07cmV0dXJuIG5nRGV2TW9kZSYmKExzKGMuY3JlYXRlLHpiKSxMcyhjLnJlbW92ZSx6YiksTHMoYy51cGRhdGUsQWIpKSxLYihpLmZpcnN0Q2hpbGQsYyxuLGUsYSxvKSxjfWZ1bmN0aW9uIFFiKHQpe2lmKCF0KXJldHVybltdO2xldCBuPTA7Y29uc3QgZT1bXSxhPVtdLG89L1t7fV0vZztsZXQgcjtmb3Ioby5sYXN0SW5kZXg9MDtyPW8uZXhlYyh0KTspe2NvbnN0IG89ci5pbmRleDtpZigifSI9PXJbMF0pe2lmKGUucG9wKCksMD09ZS5sZW5ndGgpe2NvbnN0IGU9dC5zdWJzdHJpbmcobixvKTtOYi50ZXN0KGUpP2EucHVzaChYYihlKSk6YS5wdXNoKGUpLG49bysxfX1lbHNle2lmKDA9PWUubGVuZ3RoKXtjb25zdCBlPXQuc3Vic3RyaW5nKG4sbyk7YS5wdXNoKGUpLG49bysxfWUucHVzaCgieyIpfX1jb25zdCBpPXQuc3Vic3RyaW5nKG4pO3JldHVybiBhLnB1c2goaSksYX1mdW5jdGlvbiBLYih0LG4sZSxhLG8scil7aWYodCl7Y29uc3QgaT1bXTtmb3IoO3Q7KXtjb25zdCBjPXQubmV4dFNpYmxpbmcscz1yKyArK24udmFycztzd2l0Y2godC5ub2RlVHlwZSl7Y2FzZSBOb2RlLkVMRU1FTlRfTk9ERTpjb25zdCBjPXQsbD1jLnRhZ05hbWUudG9Mb3dlckNhc2UoKTtpZihEYy5oYXNPd25Qcm9wZXJ0eShsKSl7bi5jcmVhdGUucHVzaChiYixsLHMsZTw8MTd8MSk7Y29uc3QgaT1jLmF0dHJpYnV0ZXM7Zm9yKGxldCB0PTA7dDxpLmxlbmd0aDt0Kyspe2NvbnN0IGU9aS5pdGVtKHQpLGE9ZS5uYW1lLnRvTG93ZXJDYXNlKCk7ZS52YWx1ZS5tYXRjaChUYik/SGMuaGFzT3duUHJvcGVydHkoYSk/ZW8oSWNbYV0/amIoZS52YWx1ZSxzLGUubmFtZSx5Yyk6TmNbYV0/amIoZS52YWx1ZSxzLGUubmFtZSxrYyk6amIoZS52YWx1ZSxzLGUubmFtZSksbi51cGRhdGUpOm5nRGV2TW9kZSYmY29uc29sZS53YXJuKGBXQVJOSU5HOiBpZ25vcmluZyB1bnNhZmUgYXR0cmlidXRlIHZhbHVlICR7YX0gb24gZWxlbWVudCAke2x9IChzZWUgaHR0cDovL2cuY28vbmcvc2VjdXJpdHkjeHNzKWApOm4uY3JlYXRlLnB1c2goczw8M3w0LGUubmFtZSxlLnZhbHVlKX1LYih0LmZpcnN0Q2hpbGQsbixzLGEsbyxyKSxuLnJlbW92ZS5wdXNoKHM8PDN8Myl9ZWxzZSBuLnZhcnMtLTticmVhaztjYXNlIE5vZGUuVEVYVF9OT0RFOmNvbnN0IG09dC50ZXh0Q29udGVudHx8IiIsZD1tLm1hdGNoKFRiKTtuLmNyZWF0ZS5wdXNoKGQ/IiI6bSxzLGU8PDE3fDEpLG4ucmVtb3ZlLnB1c2goczw8M3wzKSxkJiZlbyhqYihtLHMpLG4udXBkYXRlKTticmVhaztjYXNlIE5vZGUuQ09NTUVOVF9OT0RFOmNvbnN0IGc9SWIuZXhlYyh0LnRleHRDb250ZW50fHwiIik7aWYoZyl7Y29uc3QgdD1wYXJzZUludChnWzFdLDEwKSxvPW5nRGV2TW9kZT9gbmVzdGVkIElDVSAke3R9YDoiIjtuLmNyZWF0ZS5wdXNoKHViLG8scyxlPDwxN3wxKSxpLnB1c2goW2FbdF0sc10pfWVsc2Ugbi52YXJzLS07YnJlYWs7ZGVmYXVsdDpuLnZhcnMtLX10PWN9Zm9yKGxldCB0PTA7dDxpLmxlbmd0aDt0Kyspe2NvbnN0IGU9aVt0XVswXSxhPWlbdF1bMV07WmIobyxlLGEscituLnZhcnMpO2NvbnN0IGM9by5sZW5ndGgtMTtuLnZhcnMrPU1hdGgubWF4KC4uLm9bY10udmFycyksbi5jaGlsZEljdXMucHVzaChjKTtjb25zdCBzPVViKGUpO24udXBkYXRlLnB1c2goR2IoZS5tYWluQmluZGluZyksMywtMS1lLm1haW5CaW5kaW5nLGE8PDJ8MixjLHMsMixhPDwyfDMsYyksbi5yZW1vdmUucHVzaChjPDwzfDYsYTw8M3wzKX19fQovKioKICAgICAqIEBsaWNlbnNlCiAgICAgKiBDb3B5cmlnaHQgR29vZ2xlIExMQyBBbGwgUmlnaHRzIFJlc2VydmVkLgogICAgICoKICAgICAqIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGFuIE1JVC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCiAgICAgKiBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlIGF0IGh0dHBzOi8vYW5ndWxhci5pby9saWNlbnNlCiAgICAgKi9jb25zdCAkYj0vXFso77+9Lis/77+9PylcXS8sdHU9L1xbKO+/vS4rP++/vT8pXF18KO+/vVwvP1wqXGQrOlxkK++/vSkvZyxudT0vKHtccyopKFZBUl8oUExVUkFMfFNFTEVDVCkoX1xkKyk/KShccyosKS9nLGV1PS97KFtBLVowLTlfXSspfS9nLGF1PS/vv71JMThOX0VYUF8oSUNVKF9cZCspPynvv70vZyxvdT0vXC9cKi8scnU9L1xkK1w6KFxkKykvOwovKioKICAgICAqIEBsaWNlbnNlCiAgICAgKiBDb3B5cmlnaHQgR29vZ2xlIExMQyBBbGwgUmlnaHRzIFJlc2VydmVkLgogICAgICoKICAgICAqIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGFuIE1JVC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCiAgICAgKiBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlIGF0IGh0dHBzOi8vYW5ndWxhci5pby9saWNlbnNlCiAgICAgKi8KZnVuY3Rpb24gaXUodCxuLGUpe2NvbnN0IGE9VnIoKTtuZ0Rldk1vZGUmJlRhKGEsInRWaWV3IHNob3VsZCBiZSBkZWZpbmVkIik7Y29uc3Qgbz1JcihhLmNvbnN0cyxuKTshKGZ1bmN0aW9uIHIodCl7X2JbKytDYl09dH0pKHQpLGZwKCEwKSxhLmZpcnN0Q3JlYXRlUGFzcyYmbnVsbD09PWEuZGF0YVt0K1RvXSYmKGZ1bmN0aW9uIGkodCxuLGUsYSxvKXtjb25zdCByPW4uYmx1ZXByaW50Lmxlbmd0aC1UbztGYj0wO2NvbnN0IGk9VXIoKSxjPUdyKCk/aTppJiZpLnBhcmVudDtsZXQgcz1jJiZjIT09dFs2XT9jLmluZGV4LVRvOmUsbD0wO0xiW2xdPXM7Y29uc3QgbT1bXTtpZihuZ0Rldk1vZGUmJkxzKG0semIpLGU+MCYmaSE9PWMpe2xldCB0PWkuaW5kZXgtVG87R3IoKXx8KHQ9fnQpLG0ucHVzaCh0PDwzfDApfWNvbnN0IGQ9W107bmdEZXZNb2RlJiZMcyhkLEFiKTtjb25zdCBnPVtdO2lmKCIiPT09YSYmWWIobykpbS5wdXNoKGEsV2Iociksczw8MTd8MSk7ZWxzZXtjb25zdCB0PShmdW5jdGlvbiBwKHQsbil7aWYoWWIobikpcmV0dXJuIHFiKHQpO3tjb25zdCBlPXQuaW5kZXhPZihgOiR7bn3vv71gKSsyK24udG9TdHJpbmcoKS5sZW5ndGgsYT10LnNlYXJjaChuZXcgUmVnRXhwKGDvv71cXC9cXCpcXGQrOiR7bn3vv71gKSk7cmV0dXJuIHFiKHQuc3Vic3RyaW5nKGUsYSkpfX0pKGEsbyksbj0oZnVuY3Rpb24gYih0KXtyZXR1cm4gdC5yZXBsYWNlKFZiLCIgIil9KSh0KS5zcGxpdChCYik7Zm9yKGxldCBlPTA7ZTxuLmxlbmd0aDtlKyspe2xldCBhPW5bZV07aWYoMSZlKWlmKCIvIj09PWEuY2hhckF0KDApKXtpZigiIyI9PT1hLmNoYXJBdCgxKSl7Y29uc3QgdD1wYXJzZUludChhLnN1YnN0cigyKSwxMCk7cz1MYlstLWxdLG0ucHVzaCh0PDwzfDUpfX1lbHNle2NvbnN0IHQ9cGFyc2VJbnQoYS5zdWJzdHIoMSksMTApLG49IiMiPT09YS5jaGFyQXQoMCk7bS5wdXNoKChuP3Q6fnQpPDwzfDAsczw8MTd8MSksbiYmKExiWysrbF09cz10KX1lbHNle2NvbnN0IG49UWIoYSk7Zm9yKGxldCBlPTA7ZTxuLmxlbmd0aDtlKyspaWYoMSZlKXtjb25zdCBhPW5bZV07aWYoIm9iamVjdCIhPXR5cGVvZiBhKXRocm93IG5ldyBFcnJvcihgVW5hYmxlIHRvIHBhcnNlIElDVSBleHByZXNzaW9uIGluICIke3R9IiBtZXNzYWdlLmApO2NvbnN0IG89V2Iocik7bS5wdXNoKHViLG5nRGV2TW9kZT9gSUNVICR7b31gOiIiLG8sczw8MTd8MSk7Y29uc3QgaT1VYihhKTtaYihnLGEsbyxvKTtjb25zdCBjPWcubGVuZ3RoLTE7ZC5wdXNoKEdiKGEubWFpbkJpbmRpbmcpLDMsLTEtYS5tYWluQmluZGluZyxvPDwyfDIsYyxpLDIsbzw8MnwzLGMpfWVsc2UgaWYoIiIhPT1uW2VdKXtjb25zdCB0PW5bZV0sYT10Lm1hdGNoKFRiKSxvPVdiKHIpO20ucHVzaChhPyIiOnQsbyxzPDwxN3wxKSxhJiZlbyhqYih0LG8pLGQpfX19fUZiPjAmJihmdW5jdGlvbiB1KHQsbixlKXtpZihuZ0Rldk1vZGUmJlJhKGUsMCwiVGhlIG51bWJlciBvZiBzbG90cyB0byBhbGxvYyBzaG91bGQgYmUgZ3JlYXRlciB0aGFuIDAiKSxlPjAmJnQuZmlyc3RDcmVhdGVQYXNzKXtmb3IobGV0IGE9MDthPGU7YSsrKXQuYmx1ZXByaW50LnB1c2gobnVsbCksdC5kYXRhLnB1c2gobnVsbCksbi5wdXNoKG51bGwpO3QuZXhwYW5kb0luc3RydWN0aW9ucz90LmV4cGFuZG9JbnN0cnVjdGlvbnMucHVzaChlKTp0LmV4cGFuZG9TdGFydEluZGV4Kz1lfX0pKG4sdCxGYiksbi5kYXRhW2UrVG9dPXt2YXJzOkZiLGNyZWF0ZTptLHVwZGF0ZTpkLGljdXM6Zy5sZW5ndGg/ZzpudWxsfX0pKEJyKCksYSx0LG8sZSl9ZnVuY3Rpb24gY3UoKXtjb25zdCB0PUJyKCksbj1WcigpO25nRGV2TW9kZSYmVGEobiwidFZpZXcgc2hvdWxkIGJlIGRlZmluZWQiKSwoZnVuY3Rpb24gZSh0LG4pe25nRGV2TW9kZSYmdmEoSnIoKSx0LmJpbmRpbmdTdGFydEluZGV4LCJpMThuRW5kIHNob3VsZCBiZSBjYWxsZWQgYmVmb3JlIGFueSBiaW5kaW5nIik7Y29uc3QgZT0oZnVuY3Rpb24gYSgpe3JldHVybiBfYltDYi0tXX0pKCksbz10LmRhdGFbZStUb107bmdEZXZNb2RlJiZUYShvLCJZb3Ugc2hvdWxkIGNhbGwgaTE4blN0YXJ0IGJlZm9yZSBpMThuRW5kIik7Y29uc3Qgcj1VcigpLGk9UGIodCxlLG8uY3JlYXRlLG4pO2xldCBjPWUrMTtmb3IoO251bGwhPT1yJiZjPD1yLmluZGV4LVRvOyl7LTE9PT1pLmluZGV4T2YoYykmJlNiKHQsbixjLCEwKTtjb25zdCBlPVNyKHQsYyk7IWV8fDAhPT1lLnR5cGUmJjIhPT1lLnR5cGUmJjMhPT1lLnR5cGV8fG51bGw9PT1lLmxvY2FsTmFtZXN8fChjKz1lLmxvY2FsTmFtZXMubGVuZ3RoPj4xKSxjKyt9fSkobix0KSxmcCghMSl9ZnVuY3Rpb24gc3UodCxuLGUpe2l1KHQsbixlKSxjdSgpfWZ1bmN0aW9uIGx1KHQsbil7Y29uc3QgZT1CcigpLGE9VnIoKTtuZ0Rldk1vZGUmJlRhKGEsInRWaWV3IHNob3VsZCBiZSBkZWZpbmVkIiksKGZ1bmN0aW9uIG8odCxuLGUsYSl7Y29uc3Qgbz1VcigpLmluZGV4LVRvLHI9W107bmdEZXZNb2RlJiZMcyhyLEFiKTtmb3IobGV0IGk9MDtpPGEubGVuZ3RoO2krPTIpe2NvbnN0IGM9YVtpXSxzPWFbaSsxXS5zcGxpdChEYik7Zm9yKGxldCBhPTA7YTxzLmxlbmd0aDthKyspe2NvbnN0IGk9c1thXTtpZigxJmEpdGhyb3cgbmV3IEVycm9yKCJJQ1UgZXhwcmVzc2lvbnMgYXJlIG5vdCB5ZXQgc3VwcG9ydGVkIGluIGF0dHJpYnV0ZXMiKTtpZigiIiE9PWkpaWYoaS5tYXRjaChUYikpbi5maXJzdENyZWF0ZVBhc3MmJm51bGw9PT1uLmRhdGFbZStUb10mJmVvKGpiKGksbyxjKSxyKTtlbHNle2NvbnN0IGU9U3IobixvKTsyPT09ZS50eXBlJiZqbChlLHQsYyxpLG51bGwsbnVsbCk7Y29uc3QgYT1udWxsIT09ZS5pbnB1dHMmJmUuaW5wdXRzW2NdO2EmJihjbShuLHQsYSxjLGkpLG5nRGV2TW9kZSkmJkVsKHQsdnIobyx0KSxlLnR5cGUsYSxpKX19fW4uZmlyc3RDcmVhdGVQYXNzJiZudWxsPT09bi5kYXRhW2UrVG9dJiYobi5kYXRhW2UrVG9dPXIpfSkoZSxhLHQsSXIoYS5jb25zdHMsbikpfWZ1bmN0aW9uIG11KHQpe3JldHVybihmdW5jdGlvbiBuKHQpe3QmJihNYnw9MTw8T2IpLE9iKyt9KShSZyhCcigpLEtyKCksdCkpLG11fWZ1bmN0aW9uIGR1KHQpeyEoZnVuY3Rpb24gbih0LGUsYSl7aWYoT2I+MCl7bmdEZXZNb2RlJiZUYSh0LCJ0VmlldyBzaG91bGQgYmUgZGVmaW5lZCIpO2NvbnN0IG49dC5kYXRhW2ErVG9dO2xldCBvLHI9bnVsbDtBcnJheS5pc0FycmF5KG4pP289bjoobz1uLnVwZGF0ZSxyPW4uaWN1cykseGIodCxyLGUsbyxKcigpLU9iLTEsTWIpLE1iPTAsT2I9MH19KShWcigpLEJyKCksdCl9ZnVuY3Rpb24gZ3UodCxuPXt9KXtyZXR1cm4oZnVuY3Rpb24gZSh0LG49e30pe2xldCBlPXQ7aWYoJGIudGVzdCh0KSl7Y29uc3QgdD17fSxuPVswXTtlPWUucmVwbGFjZSh0dSwoKGUsYSxvKT0+e2NvbnN0IHI9YXx8byxpPXRbcl18fFtdO2lmKGkubGVuZ3RofHwoci5zcGxpdCgifCIpLmZvckVhY2goKHQ9Pntjb25zdCBuPXQubWF0Y2gocnUpLGU9bj9wYXJzZUludChuWzFdLDEwKTowLGE9b3UudGVzdCh0KTtpLnB1c2goW2UsYSx0XSl9KSksdFtyXT1pKSwhaS5sZW5ndGgpdGhyb3cgbmV3IEVycm9yKGBpMThuIHBvc3Rwcm9jZXNzOiB1bm1hdGNoZWQgcGxhY2Vob2xkZXIgLSAke3J9YCk7Y29uc3QgYz1uW24ubGVuZ3RoLTFdO2xldCBzPTA7Zm9yKGxldCB0PTA7dDxpLmxlbmd0aDt0KyspaWYoaVt0XVswXT09PWMpe3M9dDticmVha31jb25zdFtsLG0sZF09aVtzXTtyZXR1cm4gbT9uLnBvcCgpOmMhPT1sJiZuLnB1c2gobCksaS5zcGxpY2UocywxKSxkfSkpfXJldHVybiBPYmplY3Qua2V5cyhuKS5sZW5ndGg/KGU9ZS5yZXBsYWNlKG51LCgodCxlLGEsbyxyLGkpPT5uLmhhc093blByb3BlcnR5KGEpP2Ake2V9JHtuW2FdfSR7aX1gOnQpKSxlPWUucmVwbGFjZShldSwoKHQsZSk9Pm4uaGFzT3duUHJvcGVydHkoZSk/bltlXTp0KSksZT1lLnJlcGxhY2UoYXUsKCh0LGUpPT57aWYobi5oYXNPd25Qcm9wZXJ0eShlKSl7Y29uc3QgYT1uW2VdO2lmKCFhLmxlbmd0aCl0aHJvdyBuZXcgRXJyb3IoYGkxOG4gcG9zdHByb2Nlc3M6IHVubWF0Y2hlZCBJQ1UgLSAke3R9IHdpdGgga2V5OiAke2V9YCk7cmV0dXJuIGEuc2hpZnQoKX1yZXR1cm4gdH0pKSxlKTplfSkodCxuKX0KLyoqCiAgICAgKiBAbGljZW5zZQogICAgICogQ29weXJpZ2h0IEdvb2dsZSBMTEMgQWxsIFJpZ2h0cyBSZXNlcnZlZC4KICAgICAqCiAgICAgKiBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhbiBNSVQtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQogICAgICogZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZSBhdCBodHRwczovL2FuZ3VsYXIuaW8vbGljZW5zZQogICAgICovCi8qKgogICAgICogQGxpY2Vuc2UKICAgICAqIENvcHlyaWdodCBHb29nbGUgTExDIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCiAgICAgKgogICAgICogVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYW4gTUlULXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKICAgICAqIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUgYXQgaHR0cHM6Ly9hbmd1bGFyLmlvL2xpY2Vuc2UKICAgICAqL2Z1bmN0aW9uIHB1KHQsbixlLGEsbyl7aWYodD1vYSh0KSxBcnJheS5pc0FycmF5KHQpKWZvcihsZXQgcj0wO3I8dC5sZW5ndGg7cisrKXB1KHRbcl0sbixlLGEsbyk7ZWxzZXtjb25zdCByPVZyKCksaT1CcigpO2xldCBjPU9kKHQpP3Q6b2EodC5wcm92aWRlKSxzPV9kKHQpO2NvbnN0IGw9VXIoKSxtPTEwNDg1NzUmbC5wcm92aWRlckluZGV4ZXMsZD1sLmRpcmVjdGl2ZVN0YXJ0LGc9bC5wcm92aWRlckluZGV4ZXM+PjIwO2lmKE9kKHQpfHwhdC5tdWx0aSl7Y29uc3QgYT1uZXcgeWkocyxvLFpnKSxwPWZ1KGMsbixvP206bStnLGQpOy0xPT09cD8oV2koQmkobCxpKSxyLGMpLGJ1KHIsdCxuLmxlbmd0aCksbi5wdXNoKGMpLGwuZGlyZWN0aXZlU3RhcnQrKyxsLmRpcmVjdGl2ZUVuZCsrLG8mJihsLnByb3ZpZGVySW5kZXhlcys9MTA0ODU3NiksZS5wdXNoKGEpLGkucHVzaChhKSk6KGVbcF09YSxpW3BdPWEpfWVsc2V7Y29uc3QgcD1mdShjLG4sbStnLGQpLGI9ZnUoYyxuLG0sbStnKSx1PXA+PTAmJmVbcF0sZj1iPj0wJiZlW2JdO2lmKG8mJiFmfHwhbyYmIXUpe1dpKEJpKGwsaSkscixjKTtjb25zdCBtPShmdW5jdGlvbiByKHQsbixlLGEsbyl7Y29uc3Qgcj1uZXcgeWkodCxlLFpnKTtyZXR1cm4gci5tdWx0aT1bXSxyLmluZGV4PW4sci5jb21wb25lbnRQcm92aWRlcnM9MCx1dShyLG8sYSYmIWUpLHJ9KShvP191Omh1LGUubGVuZ3RoLG8sYSxzKTshbyYmZiYmKGVbYl0ucHJvdmlkZXJGYWN0b3J5PW0pLGJ1KHIsdCxuLmxlbmd0aCwwKSxuLnB1c2goYyksbC5kaXJlY3RpdmVTdGFydCsrLGwuZGlyZWN0aXZlRW5kKyssbyYmKGwucHJvdmlkZXJJbmRleGVzKz0xMDQ4NTc2KSxlLnB1c2gobSksaS5wdXNoKG0pfWVsc2UgYnUocix0LHA+LTE/cDpiLHV1KGVbbz9iOnBdLHMsIW8mJmEpKTshbyYmYSYmZiYmZVtiXS5jb21wb25lbnRQcm92aWRlcnMrK319fWZ1bmN0aW9uIGJ1KHQsbixlLGEpe2NvbnN0IG89T2Qobik7aWYob3x8KGZ1bmN0aW9uIHIodCl7cmV0dXJuISF0LnVzZUNsYXNzfSkobikpe2NvbnN0IHI9KG4udXNlQ2xhc3N8fG4pLnByb3RvdHlwZS5uZ09uRGVzdHJveTtpZihyKXtjb25zdCBpPXQuZGVzdHJveUhvb2tzfHwodC5kZXN0cm95SG9va3M9W10pO2lmKCFvJiZuLm11bHRpKXtuZ0Rldk1vZGUmJlRhKGEsImluZGV4SW5GYWN0b3J5IHdoZW4gcmVnaXN0ZXJpbmcgbXVsdGkgZmFjdG9yeSBkZXN0cm95IGhvb2siKTtjb25zdCB0PWkuaW5kZXhPZihlKTstMT09PXQ/aS5wdXNoKGUsW2Escl0pOmlbdCsxXS5wdXNoKGEscil9ZWxzZSBpLnB1c2goZSxyKX19fWZ1bmN0aW9uIHV1KHQsbixlKXtyZXR1cm4gZSYmdC5jb21wb25lbnRQcm92aWRlcnMrKyx0Lm11bHRpLnB1c2gobiktMX1mdW5jdGlvbiBmdSh0LG4sZSxhKXtmb3IobGV0IG89ZTtvPGE7bysrKWlmKG5bb109PT10KXJldHVybiBvO3JldHVybi0xfWZ1bmN0aW9uIGh1KHQsbixlLGEpe3JldHVybiBDdSh0aGlzLm11bHRpLFtdKX1mdW5jdGlvbiBfdSh0LG4sZSxhKXtjb25zdCBvPXRoaXMubXVsdGk7bGV0IHI7aWYodGhpcy5wcm92aWRlckZhY3Rvcnkpe2NvbnN0IHQ9dGhpcy5wcm92aWRlckZhY3RvcnkuY29tcG9uZW50UHJvdmlkZXJzLG49WGkoZSxlWzFdLHRoaXMucHJvdmlkZXJGYWN0b3J5LmluZGV4LGEpO3I9bi5zbGljZSgwLHQpLEN1KG8scik7Zm9yKGxldCBlPXQ7ZTxuLmxlbmd0aDtlKyspci5wdXNoKG5bZV0pfWVsc2Ugcj1bXSxDdShvLHIpO3JldHVybiByfWZ1bmN0aW9uIEN1KHQsbil7Zm9yKGxldCBlPTA7ZTx0Lmxlbmd0aDtlKyspbi5wdXNoKCgwLHRbZV0pKCkpO3JldHVybiBufWZ1bmN0aW9uIE11KHQsbj1bXSl7cmV0dXJuIGU9PntlLnByb3ZpZGVyc1Jlc29sdmVyPShlLGEpPT4oZnVuY3Rpb24gbyh0LG4sZSl7Y29uc3QgYT1WcigpO2lmKGEuZmlyc3RDcmVhdGVQYXNzKXtjb25zdCBvPVZvKHQpO3B1KGUsYS5kYXRhLGEuYmx1ZXByaW50LG8sITApLHB1KG4sYS5kYXRhLGEuYmx1ZXByaW50LG8sITEpfX0pKGUsYT9hKHQpOnQsbil9fQovKioKICAgICAqIEBsaWNlbnNlCiAgICAgKiBDb3B5cmlnaHQgR29vZ2xlIExMQyBBbGwgUmlnaHRzIFJlc2VydmVkLgogICAgICoKICAgICAqIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGFuIE1JVC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCiAgICAgKiBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlIGF0IGh0dHBzOi8vYW5ndWxhci5pby9saWNlbnNlCiAgICAgKi9jbGFzcyBPdXt9Ci8qKgogICAgICogQGxpY2Vuc2UKICAgICAqIENvcHlyaWdodCBHb29nbGUgTExDIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCiAgICAgKgogICAgICogVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYW4gTUlULXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKICAgICAqIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUgYXQgaHR0cHM6Ly9hbmd1bGFyLmlvL2xpY2Vuc2UKICAgICAqL2NsYXNzIFB1e31QdS5OVUxMPW5ldyBjbGFzc3tyZXNvbHZlQ29tcG9uZW50RmFjdG9yeSh0KXt0aHJvdyhmdW5jdGlvbiBuKHQpe2NvbnN0IG49RXJyb3IoYE5vIGNvbXBvbmVudCBmYWN0b3J5IGZvdW5kIGZvciAke3RhKHQpfS4gRGlkIHlvdSBhZGQgaXQgdG8gQE5nTW9kdWxlLmVudHJ5Q29tcG9uZW50cz9gKTtyZXR1cm4gbi5uZ0NvbXBvbmVudD10LG59KSh0KX19OwovKioKICAgICAqIEBsaWNlbnNlCiAgICAgKiBDb3B5cmlnaHQgR29vZ2xlIExMQyBBbGwgUmlnaHRzIFJlc2VydmVkLgogICAgICoKICAgICAqIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGFuIE1JVC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCiAgICAgKiBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlIGF0IGh0dHBzOi8vYW5ndWxhci5pby9saWNlbnNlCiAgICAgKi8KY2xhc3MgeHV7Y29uc3RydWN0b3IodCl7dGhpcy5uYXRpdmVFbGVtZW50PXR9fXh1Ll9fTkdfRUxFTUVOVF9JRF9fPSgpPT55dSh4dSk7Y29uc3QgeXU9ZnVuY3Rpb24ga3UodCl7cmV0dXJuIEZtKHQsVXIoKSxCcigpKX07Ci8qKgogICAgICogQGxpY2Vuc2UKICAgICAqIENvcHlyaWdodCBHb29nbGUgTExDIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCiAgICAgKgogICAgICogVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYW4gTUlULXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKICAgICAqIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUgYXQgaHR0cHM6Ly9hbmd1bGFyLmlvL2xpY2Vuc2UKICAgICAqLwpuZXcgRmEoIlJlbmRlcmVyMkludGVyY2VwdG9yIik7Y2xhc3MgdnV7fXZhciB3dTshKGZ1bmN0aW9uKHQpe3RbdC5JbXBvcnRhbnQ9MV09IkltcG9ydGFudCIsdFt0LkRhc2hDYXNlPTJdPSJEYXNoQ2FzZSJ9KSh3dXx8KHd1PXt9KSk7Y2xhc3MgU3V7fVN1Ll9fTkdfRUxFTUVOVF9JRF9fPSgpPT5FdSgpO2NvbnN0IEV1PWZ1bmN0aW9uIEF1KCl7Y29uc3QgdD1CcigpLG49QXIoVXIoKS5pbmRleCx0KTtyZXR1cm4oZnVuY3Rpb24gZSh0KXtjb25zdCBuPXRbMTFdO2lmKHhyKG4pKXJldHVybiBuO3Rocm93IG5ldyBFcnJvcigiQ2Fubm90IGluamVjdCBSZW5kZXJlcjIgd2hlbiB0aGUgYXBwbGljYXRpb24gdXNlcyBSZW5kZXJlcjMhIil9KShObyhuKT9uOnQpfTsKLyoqCiAgICAgKiBAbGljZW5zZQogICAgICogQ29weXJpZ2h0IEdvb2dsZSBMTEMgQWxsIFJpZ2h0cyBSZXNlcnZlZC4KICAgICAqCiAgICAgKiBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhbiBNSVQtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQogICAgICogZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZSBhdCBodHRwczovL2FuZ3VsYXIuaW8vbGljZW5zZQogICAgICovCmNsYXNzIHp1e316dS7JtXByb3Y9V2Uoe3Rva2VuOnp1LHByb3ZpZGVkSW46InJvb3QiLGZhY3Rvcnk6KCk9Pm51bGx9KTsKLyoqCiAgICAgKiBAbGljZW5zZQogICAgICogQ29weXJpZ2h0IEdvb2dsZSBMTEMgQWxsIFJpZ2h0cyBSZXNlcnZlZC4KICAgICAqCiAgICAgKiBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhbiBNSVQtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQogICAgICogZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZSBhdCBodHRwczovL2FuZ3VsYXIuaW8vbGljZW5zZQogICAgICovCmNsYXNzIFJ1e2NvbnN0cnVjdG9yKHQpe3RoaXMuZnVsbD10LHRoaXMubWFqb3I9dC5zcGxpdCgiLiIpWzBdLHRoaXMubWlub3I9dC5zcGxpdCgiLiIpWzFdLHRoaXMucGF0Y2g9dC5zcGxpdCgiLiIpLnNsaWNlKDIpLmpvaW4oIi4iKX19Y29uc3QgVHU9bmV3IFJ1KCIxMC4yLjQiKTsKLyoqCiAgICAgKiBAbGljZW5zZQogICAgICogQ29weXJpZ2h0IEdvb2dsZSBMTEMgQWxsIFJpZ2h0cyBSZXNlcnZlZC4KICAgICAqCiAgICAgKiBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhbiBNSVQtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQogICAgICogZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZSBhdCBodHRwczovL2FuZ3VsYXIuaW8vbGljZW5zZQogICAgICovY2xhc3MgRHV7Y29uc3RydWN0b3IoKXt9c3VwcG9ydHModCl7cmV0dXJuIFNnKHQpfWNyZWF0ZSh0KXtyZXR1cm4gbmV3IE51KHQpfX1jb25zdCBJdT0odCxuKT0+bjtjbGFzcyBOdXtjb25zdHJ1Y3Rvcih0KXt0aGlzLmxlbmd0aD0wLHRoaXMuX2xpbmtlZFJlY29yZHM9bnVsbCx0aGlzLl91bmxpbmtlZFJlY29yZHM9bnVsbCx0aGlzLl9wcmV2aW91c0l0SGVhZD1udWxsLHRoaXMuX2l0SGVhZD1udWxsLHRoaXMuX2l0VGFpbD1udWxsLHRoaXMuX2FkZGl0aW9uc0hlYWQ9bnVsbCx0aGlzLl9hZGRpdGlvbnNUYWlsPW51bGwsdGhpcy5fbW92ZXNIZWFkPW51bGwsdGhpcy5fbW92ZXNUYWlsPW51bGwsdGhpcy5fcmVtb3ZhbHNIZWFkPW51bGwsdGhpcy5fcmVtb3ZhbHNUYWlsPW51bGwsdGhpcy5faWRlbnRpdHlDaGFuZ2VzSGVhZD1udWxsLHRoaXMuX2lkZW50aXR5Q2hhbmdlc1RhaWw9bnVsbCx0aGlzLl90cmFja0J5Rm49dHx8SXV9Zm9yRWFjaEl0ZW0odCl7bGV0IG47Zm9yKG49dGhpcy5faXRIZWFkO251bGwhPT1uO249bi5fbmV4dCl0KG4pfWZvckVhY2hPcGVyYXRpb24odCl7bGV0IG49dGhpcy5faXRIZWFkLGU9dGhpcy5fcmVtb3ZhbHNIZWFkLGE9MCxvPW51bGw7Zm9yKDtufHxlOyl7Y29uc3Qgcj0hZXx8biYmbi5jdXJyZW50SW5kZXg8QnUoZSxhLG8pP246ZSxpPUJ1KHIsYSxvKSxjPXIuY3VycmVudEluZGV4O2lmKHI9PT1lKWEtLSxlPWUuX25leHRSZW1vdmVkO2Vsc2UgaWYobj1uLl9uZXh0LG51bGw9PXIucHJldmlvdXNJbmRleClhKys7ZWxzZXtvfHwobz1bXSk7Y29uc3QgdD1pLWEsbj1jLWE7aWYodCE9bil7Zm9yKGxldCBlPTA7ZTx0O2UrKyl7Y29uc3QgYT1lPG8ubGVuZ3RoP29bZV06b1tlXT0wLHI9YStlO248PXImJnI8dCYmKG9bZV09YSsxKX1vW3IucHJldmlvdXNJbmRleF09bi10fX1pIT09YyYmdChyLGksYyl9fWZvckVhY2hQcmV2aW91c0l0ZW0odCl7bGV0IG47Zm9yKG49dGhpcy5fcHJldmlvdXNJdEhlYWQ7bnVsbCE9PW47bj1uLl9uZXh0UHJldmlvdXMpdChuKX1mb3JFYWNoQWRkZWRJdGVtKHQpe2xldCBuO2ZvcihuPXRoaXMuX2FkZGl0aW9uc0hlYWQ7bnVsbCE9PW47bj1uLl9uZXh0QWRkZWQpdChuKX1mb3JFYWNoTW92ZWRJdGVtKHQpe2xldCBuO2ZvcihuPXRoaXMuX21vdmVzSGVhZDtudWxsIT09bjtuPW4uX25leHRNb3ZlZCl0KG4pfWZvckVhY2hSZW1vdmVkSXRlbSh0KXtsZXQgbjtmb3Iobj10aGlzLl9yZW1vdmFsc0hlYWQ7bnVsbCE9PW47bj1uLl9uZXh0UmVtb3ZlZCl0KG4pfWZvckVhY2hJZGVudGl0eUNoYW5nZSh0KXtsZXQgbjtmb3Iobj10aGlzLl9pZGVudGl0eUNoYW5nZXNIZWFkO251bGwhPT1uO249bi5fbmV4dElkZW50aXR5Q2hhbmdlKXQobil9ZGlmZih0KXtpZihudWxsPT10JiYodD1bXSksIVNnKHQpKXRocm93IG5ldyBFcnJvcihgRXJyb3IgdHJ5aW5nIHRvIGRpZmYgJyR7dGEodCl9Jy4gT25seSBhcnJheXMgYW5kIGl0ZXJhYmxlcyBhcmUgYWxsb3dlZGApO3JldHVybiB0aGlzLmNoZWNrKHQpP3RoaXM6bnVsbH1vbkRlc3Ryb3koKXt9Y2hlY2sodCl7dGhpcy5fcmVzZXQoKTtsZXQgbixlLGEsbz10aGlzLl9pdEhlYWQscj0hMTtpZihBcnJheS5pc0FycmF5KHQpKXt0aGlzLmxlbmd0aD10Lmxlbmd0aDtmb3IobGV0IG49MDtuPHRoaXMubGVuZ3RoO24rKyllPXRbbl0sYT10aGlzLl90cmFja0J5Rm4obixlKSxudWxsIT09byYmT2JqZWN0LmlzKG8udHJhY2tCeUlkLGEpPyhyJiYobz10aGlzLl92ZXJpZnlSZWluc2VydGlvbihvLGUsYSxuKSksT2JqZWN0LmlzKG8uaXRlbSxlKXx8dGhpcy5fYWRkSWRlbnRpdHlDaGFuZ2UobyxlKSk6KG89dGhpcy5fbWlzbWF0Y2gobyxlLGEsbikscj0hMCksbz1vLl9uZXh0fWVsc2Ugbj0wLChmdW5jdGlvbiBpKHQsbil7aWYoQXJyYXkuaXNBcnJheSh0KSlmb3IobGV0IGU9MDtlPHQubGVuZ3RoO2UrKyluKHRbZV0pO2Vsc2V7Y29uc3QgZT10W2tnKCldKCk7bGV0IGE7Zm9yKDshKGE9ZS5uZXh0KCkpLmRvbmU7KW4oYS52YWx1ZSl9fSkodCwodD0+e2E9dGhpcy5fdHJhY2tCeUZuKG4sdCksbnVsbCE9PW8mJk9iamVjdC5pcyhvLnRyYWNrQnlJZCxhKT8ociYmKG89dGhpcy5fdmVyaWZ5UmVpbnNlcnRpb24obyx0LGEsbikpLE9iamVjdC5pcyhvLml0ZW0sdCl8fHRoaXMuX2FkZElkZW50aXR5Q2hhbmdlKG8sdCkpOihvPXRoaXMuX21pc21hdGNoKG8sdCxhLG4pLHI9ITApLG89by5fbmV4dCxuKyt9KSksdGhpcy5sZW5ndGg9bjtyZXR1cm4gdGhpcy5fdHJ1bmNhdGUobyksdGhpcy5jb2xsZWN0aW9uPXQsdGhpcy5pc0RpcnR5fWdldCBpc0RpcnR5KCl7cmV0dXJuIG51bGwhPT10aGlzLl9hZGRpdGlvbnNIZWFkfHxudWxsIT09dGhpcy5fbW92ZXNIZWFkfHxudWxsIT09dGhpcy5fcmVtb3ZhbHNIZWFkfHxudWxsIT09dGhpcy5faWRlbnRpdHlDaGFuZ2VzSGVhZH1fcmVzZXQoKXtpZih0aGlzLmlzRGlydHkpe2xldCB0O2Zvcih0PXRoaXMuX3ByZXZpb3VzSXRIZWFkPXRoaXMuX2l0SGVhZDtudWxsIT09dDt0PXQuX25leHQpdC5fbmV4dFByZXZpb3VzPXQuX25leHQ7Zm9yKHQ9dGhpcy5fYWRkaXRpb25zSGVhZDtudWxsIT09dDt0PXQuX25leHRBZGRlZCl0LnByZXZpb3VzSW5kZXg9dC5jdXJyZW50SW5kZXg7Zm9yKHRoaXMuX2FkZGl0aW9uc0hlYWQ9dGhpcy5fYWRkaXRpb25zVGFpbD1udWxsLHQ9dGhpcy5fbW92ZXNIZWFkO251bGwhPT10O3Q9dC5fbmV4dE1vdmVkKXQucHJldmlvdXNJbmRleD10LmN1cnJlbnRJbmRleDt0aGlzLl9tb3Zlc0hlYWQ9dGhpcy5fbW92ZXNUYWlsPW51bGwsdGhpcy5fcmVtb3ZhbHNIZWFkPXRoaXMuX3JlbW92YWxzVGFpbD1udWxsLHRoaXMuX2lkZW50aXR5Q2hhbmdlc0hlYWQ9dGhpcy5faWRlbnRpdHlDaGFuZ2VzVGFpbD1udWxsfX1fbWlzbWF0Y2godCxuLGUsYSl7bGV0IG87cmV0dXJuIG51bGw9PT10P289dGhpcy5faXRUYWlsOihvPXQuX3ByZXYsdGhpcy5fcmVtb3ZlKHQpKSxudWxsIT09KHQ9bnVsbD09PXRoaXMuX2xpbmtlZFJlY29yZHM/bnVsbDp0aGlzLl9saW5rZWRSZWNvcmRzLmdldChlLGEpKT8oT2JqZWN0LmlzKHQuaXRlbSxuKXx8dGhpcy5fYWRkSWRlbnRpdHlDaGFuZ2UodCxuKSx0aGlzLl9tb3ZlQWZ0ZXIodCxvLGEpKTpudWxsIT09KHQ9bnVsbD09PXRoaXMuX3VubGlua2VkUmVjb3Jkcz9udWxsOnRoaXMuX3VubGlua2VkUmVjb3Jkcy5nZXQoZSxudWxsKSk/KE9iamVjdC5pcyh0Lml0ZW0sbil8fHRoaXMuX2FkZElkZW50aXR5Q2hhbmdlKHQsbiksdGhpcy5fcmVpbnNlcnRBZnRlcih0LG8sYSkpOnQ9dGhpcy5fYWRkQWZ0ZXIobmV3IEZ1KG4sZSksbyxhKSx0fV92ZXJpZnlSZWluc2VydGlvbih0LG4sZSxhKXtsZXQgbz1udWxsPT09dGhpcy5fdW5saW5rZWRSZWNvcmRzP251bGw6dGhpcy5fdW5saW5rZWRSZWNvcmRzLmdldChlLG51bGwpO3JldHVybiBudWxsIT09bz90PXRoaXMuX3JlaW5zZXJ0QWZ0ZXIobyx0Ll9wcmV2LGEpOnQuY3VycmVudEluZGV4IT1hJiYodC5jdXJyZW50SW5kZXg9YSx0aGlzLl9hZGRUb01vdmVzKHQsYSkpLHR9X3RydW5jYXRlKHQpe2Zvcig7bnVsbCE9PXQ7KXtjb25zdCBuPXQuX25leHQ7dGhpcy5fYWRkVG9SZW1vdmFscyh0aGlzLl91bmxpbmsodCkpLHQ9bn1udWxsIT09dGhpcy5fdW5saW5rZWRSZWNvcmRzJiZ0aGlzLl91bmxpbmtlZFJlY29yZHMuY2xlYXIoKSxudWxsIT09dGhpcy5fYWRkaXRpb25zVGFpbCYmKHRoaXMuX2FkZGl0aW9uc1RhaWwuX25leHRBZGRlZD1udWxsKSxudWxsIT09dGhpcy5fbW92ZXNUYWlsJiYodGhpcy5fbW92ZXNUYWlsLl9uZXh0TW92ZWQ9bnVsbCksbnVsbCE9PXRoaXMuX2l0VGFpbCYmKHRoaXMuX2l0VGFpbC5fbmV4dD1udWxsKSxudWxsIT09dGhpcy5fcmVtb3ZhbHNUYWlsJiYodGhpcy5fcmVtb3ZhbHNUYWlsLl9uZXh0UmVtb3ZlZD1udWxsKSxudWxsIT09dGhpcy5faWRlbnRpdHlDaGFuZ2VzVGFpbCYmKHRoaXMuX2lkZW50aXR5Q2hhbmdlc1RhaWwuX25leHRJZGVudGl0eUNoYW5nZT1udWxsKX1fcmVpbnNlcnRBZnRlcih0LG4sZSl7bnVsbCE9PXRoaXMuX3VubGlua2VkUmVjb3JkcyYmdGhpcy5fdW5saW5rZWRSZWNvcmRzLnJlbW92ZSh0KTtjb25zdCBhPXQuX3ByZXZSZW1vdmVkLG89dC5fbmV4dFJlbW92ZWQ7cmV0dXJuIG51bGw9PT1hP3RoaXMuX3JlbW92YWxzSGVhZD1vOmEuX25leHRSZW1vdmVkPW8sbnVsbD09PW8/dGhpcy5fcmVtb3ZhbHNUYWlsPWE6by5fcHJldlJlbW92ZWQ9YSx0aGlzLl9pbnNlcnRBZnRlcih0LG4sZSksdGhpcy5fYWRkVG9Nb3Zlcyh0LGUpLHR9X21vdmVBZnRlcih0LG4sZSl7cmV0dXJuIHRoaXMuX3VubGluayh0KSx0aGlzLl9pbnNlcnRBZnRlcih0LG4sZSksdGhpcy5fYWRkVG9Nb3Zlcyh0LGUpLHR9X2FkZEFmdGVyKHQsbixlKXtyZXR1cm4gdGhpcy5faW5zZXJ0QWZ0ZXIodCxuLGUpLHRoaXMuX2FkZGl0aW9uc1RhaWw9bnVsbD09PXRoaXMuX2FkZGl0aW9uc1RhaWw/dGhpcy5fYWRkaXRpb25zSGVhZD10OnRoaXMuX2FkZGl0aW9uc1RhaWwuX25leHRBZGRlZD10LHR9X2luc2VydEFmdGVyKHQsbixlKXtjb25zdCBhPW51bGw9PT1uP3RoaXMuX2l0SGVhZDpuLl9uZXh0O3JldHVybiB0Ll9uZXh0PWEsdC5fcHJldj1uLG51bGw9PT1hP3RoaXMuX2l0VGFpbD10OmEuX3ByZXY9dCxudWxsPT09bj90aGlzLl9pdEhlYWQ9dDpuLl9uZXh0PXQsbnVsbD09PXRoaXMuX2xpbmtlZFJlY29yZHMmJih0aGlzLl9saW5rZWRSZWNvcmRzPW5ldyBIdSksdGhpcy5fbGlua2VkUmVjb3Jkcy5wdXQodCksdC5jdXJyZW50SW5kZXg9ZSx0fV9yZW1vdmUodCl7cmV0dXJuIHRoaXMuX2FkZFRvUmVtb3ZhbHModGhpcy5fdW5saW5rKHQpKX1fdW5saW5rKHQpe251bGwhPT10aGlzLl9saW5rZWRSZWNvcmRzJiZ0aGlzLl9saW5rZWRSZWNvcmRzLnJlbW92ZSh0KTtjb25zdCBuPXQuX3ByZXYsZT10Ll9uZXh0O3JldHVybiBudWxsPT09bj90aGlzLl9pdEhlYWQ9ZTpuLl9uZXh0PWUsbnVsbD09PWU/dGhpcy5faXRUYWlsPW46ZS5fcHJldj1uLHR9X2FkZFRvTW92ZXModCxuKXtyZXR1cm4gdC5wcmV2aW91c0luZGV4PT09bnx8KHRoaXMuX21vdmVzVGFpbD1udWxsPT09dGhpcy5fbW92ZXNUYWlsP3RoaXMuX21vdmVzSGVhZD10OnRoaXMuX21vdmVzVGFpbC5fbmV4dE1vdmVkPXQpLHR9X2FkZFRvUmVtb3ZhbHModCl7cmV0dXJuIG51bGw9PT10aGlzLl91bmxpbmtlZFJlY29yZHMmJih0aGlzLl91bmxpbmtlZFJlY29yZHM9bmV3IEh1KSx0aGlzLl91bmxpbmtlZFJlY29yZHMucHV0KHQpLHQuY3VycmVudEluZGV4PW51bGwsdC5fbmV4dFJlbW92ZWQ9bnVsbCxudWxsPT09dGhpcy5fcmVtb3ZhbHNUYWlsPyh0aGlzLl9yZW1vdmFsc1RhaWw9dGhpcy5fcmVtb3ZhbHNIZWFkPXQsdC5fcHJldlJlbW92ZWQ9bnVsbCk6KHQuX3ByZXZSZW1vdmVkPXRoaXMuX3JlbW92YWxzVGFpbCx0aGlzLl9yZW1vdmFsc1RhaWw9dGhpcy5fcmVtb3ZhbHNUYWlsLl9uZXh0UmVtb3ZlZD10KSx0fV9hZGRJZGVudGl0eUNoYW5nZSh0LG4pe3JldHVybiB0Lml0ZW09bix0aGlzLl9pZGVudGl0eUNoYW5nZXNUYWlsPW51bGw9PT10aGlzLl9pZGVudGl0eUNoYW5nZXNUYWlsP3RoaXMuX2lkZW50aXR5Q2hhbmdlc0hlYWQ9dDp0aGlzLl9pZGVudGl0eUNoYW5nZXNUYWlsLl9uZXh0SWRlbnRpdHlDaGFuZ2U9dCx0fX1jbGFzcyBGdXtjb25zdHJ1Y3Rvcih0LG4pe3RoaXMuaXRlbT10LHRoaXMudHJhY2tCeUlkPW4sdGhpcy5jdXJyZW50SW5kZXg9bnVsbCx0aGlzLnByZXZpb3VzSW5kZXg9bnVsbCx0aGlzLl9uZXh0UHJldmlvdXM9bnVsbCx0aGlzLl9wcmV2PW51bGwsdGhpcy5fbmV4dD1udWxsLHRoaXMuX3ByZXZEdXA9bnVsbCx0aGlzLl9uZXh0RHVwPW51bGwsdGhpcy5fcHJldlJlbW92ZWQ9bnVsbCx0aGlzLl9uZXh0UmVtb3ZlZD1udWxsLHRoaXMuX25leHRBZGRlZD1udWxsLHRoaXMuX25leHRNb3ZlZD1udWxsLHRoaXMuX25leHRJZGVudGl0eUNoYW5nZT1udWxsfX1jbGFzcyBMdXtjb25zdHJ1Y3Rvcigpe3RoaXMuX2hlYWQ9bnVsbCx0aGlzLl90YWlsPW51bGx9YWRkKHQpe251bGw9PT10aGlzLl9oZWFkPyh0aGlzLl9oZWFkPXRoaXMuX3RhaWw9dCx0Ll9uZXh0RHVwPW51bGwsdC5fcHJldkR1cD1udWxsKToodGhpcy5fdGFpbC5fbmV4dER1cD10LHQuX3ByZXZEdXA9dGhpcy5fdGFpbCx0Ll9uZXh0RHVwPW51bGwsdGhpcy5fdGFpbD10KX1nZXQodCxuKXtsZXQgZTtmb3IoZT10aGlzLl9oZWFkO251bGwhPT1lO2U9ZS5fbmV4dER1cClpZigobnVsbD09PW58fG48PWUuY3VycmVudEluZGV4KSYmT2JqZWN0LmlzKGUudHJhY2tCeUlkLHQpKXJldHVybiBlO3JldHVybiBudWxsfXJlbW92ZSh0KXtjb25zdCBuPXQuX3ByZXZEdXAsZT10Ll9uZXh0RHVwO3JldHVybiBudWxsPT09bj90aGlzLl9oZWFkPWU6bi5fbmV4dER1cD1lLG51bGw9PT1lP3RoaXMuX3RhaWw9bjplLl9wcmV2RHVwPW4sbnVsbD09PXRoaXMuX2hlYWR9fWNsYXNzIEh1e2NvbnN0cnVjdG9yKCl7dGhpcy5tYXA9bmV3IE1hcH1wdXQodCl7Y29uc3Qgbj10LnRyYWNrQnlJZDtsZXQgZT10aGlzLm1hcC5nZXQobik7ZXx8KGU9bmV3IEx1LHRoaXMubWFwLnNldChuLGUpKSxlLmFkZCh0KX1nZXQodCxuKXtjb25zdCBlPXRoaXMubWFwLmdldCh0KTtyZXR1cm4gZT9lLmdldCh0LG4pOm51bGx9cmVtb3ZlKHQpe2NvbnN0IG49dC50cmFja0J5SWQ7cmV0dXJuIHRoaXMubWFwLmdldChuKS5yZW1vdmUodCkmJnRoaXMubWFwLmRlbGV0ZShuKSx0fWdldCBpc0VtcHR5KCl7cmV0dXJuIDA9PT10aGlzLm1hcC5zaXplfWNsZWFyKCl7dGhpcy5tYXAuY2xlYXIoKX19ZnVuY3Rpb24gQnUodCxuLGUpe2NvbnN0IGE9dC5wcmV2aW91c0luZGV4O2lmKG51bGw9PT1hKXJldHVybiBhO2xldCBvPTA7cmV0dXJuIGUmJmE8ZS5sZW5ndGgmJihvPWVbYV0pLGErbitvfQovKioKICAgICAqIEBsaWNlbnNlCiAgICAgKiBDb3B5cmlnaHQgR29vZ2xlIExMQyBBbGwgUmlnaHRzIFJlc2VydmVkLgogICAgICoKICAgICAqIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGFuIE1JVC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCiAgICAgKiBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlIGF0IGh0dHBzOi8vYW5ndWxhci5pby9saWNlbnNlCiAgICAgKi9jbGFzcyBWdXtjb25zdHJ1Y3Rvcigpe31zdXBwb3J0cyh0KXtyZXR1cm4gdCBpbnN0YW5jZW9mIE1hcHx8RWcodCl9Y3JlYXRlKCl7cmV0dXJuIG5ldyBqdX19Y2xhc3MganV7Y29uc3RydWN0b3IoKXt0aGlzLl9yZWNvcmRzPW5ldyBNYXAsdGhpcy5fbWFwSGVhZD1udWxsLHRoaXMuX2FwcGVuZEFmdGVyPW51bGwsdGhpcy5fcHJldmlvdXNNYXBIZWFkPW51bGwsdGhpcy5fY2hhbmdlc0hlYWQ9bnVsbCx0aGlzLl9jaGFuZ2VzVGFpbD1udWxsLHRoaXMuX2FkZGl0aW9uc0hlYWQ9bnVsbCx0aGlzLl9hZGRpdGlvbnNUYWlsPW51bGwsdGhpcy5fcmVtb3ZhbHNIZWFkPW51bGwsdGhpcy5fcmVtb3ZhbHNUYWlsPW51bGx9Z2V0IGlzRGlydHkoKXtyZXR1cm4gbnVsbCE9PXRoaXMuX2FkZGl0aW9uc0hlYWR8fG51bGwhPT10aGlzLl9jaGFuZ2VzSGVhZHx8bnVsbCE9PXRoaXMuX3JlbW92YWxzSGVhZH1mb3JFYWNoSXRlbSh0KXtsZXQgbjtmb3Iobj10aGlzLl9tYXBIZWFkO251bGwhPT1uO249bi5fbmV4dCl0KG4pfWZvckVhY2hQcmV2aW91c0l0ZW0odCl7bGV0IG47Zm9yKG49dGhpcy5fcHJldmlvdXNNYXBIZWFkO251bGwhPT1uO249bi5fbmV4dFByZXZpb3VzKXQobil9Zm9yRWFjaENoYW5nZWRJdGVtKHQpe2xldCBuO2ZvcihuPXRoaXMuX2NoYW5nZXNIZWFkO251bGwhPT1uO249bi5fbmV4dENoYW5nZWQpdChuKX1mb3JFYWNoQWRkZWRJdGVtKHQpe2xldCBuO2ZvcihuPXRoaXMuX2FkZGl0aW9uc0hlYWQ7bnVsbCE9PW47bj1uLl9uZXh0QWRkZWQpdChuKX1mb3JFYWNoUmVtb3ZlZEl0ZW0odCl7bGV0IG47Zm9yKG49dGhpcy5fcmVtb3ZhbHNIZWFkO251bGwhPT1uO249bi5fbmV4dFJlbW92ZWQpdChuKX1kaWZmKHQpe2lmKHQpe2lmKCEodCBpbnN0YW5jZW9mIE1hcHx8RWcodCkpKXRocm93IG5ldyBFcnJvcihgRXJyb3IgdHJ5aW5nIHRvIGRpZmYgJyR7dGEodCl9Jy4gT25seSBtYXBzIGFuZCBvYmplY3RzIGFyZSBhbGxvd2VkYCl9ZWxzZSB0PW5ldyBNYXA7cmV0dXJuIHRoaXMuY2hlY2sodCk/dGhpczpudWxsfW9uRGVzdHJveSgpe31jaGVjayh0KXt0aGlzLl9yZXNldCgpO2xldCBuPXRoaXMuX21hcEhlYWQ7aWYodGhpcy5fYXBwZW5kQWZ0ZXI9bnVsbCx0aGlzLl9mb3JFYWNoKHQsKCh0LGUpPT57aWYobiYmbi5rZXk9PT1lKXRoaXMuX21heWJlQWRkVG9DaGFuZ2VzKG4sdCksdGhpcy5fYXBwZW5kQWZ0ZXI9bixuPW4uX25leHQ7ZWxzZXtjb25zdCBhPXRoaXMuX2dldE9yQ3JlYXRlUmVjb3JkRm9yS2V5KGUsdCk7bj10aGlzLl9pbnNlcnRCZWZvcmVPckFwcGVuZChuLGEpfX0pKSxuKXtuLl9wcmV2JiYobi5fcHJldi5fbmV4dD1udWxsKSx0aGlzLl9yZW1vdmFsc0hlYWQ9bjtmb3IobGV0IHQ9bjtudWxsIT09dDt0PXQuX25leHRSZW1vdmVkKXQ9PT10aGlzLl9tYXBIZWFkJiYodGhpcy5fbWFwSGVhZD1udWxsKSx0aGlzLl9yZWNvcmRzLmRlbGV0ZSh0LmtleSksdC5fbmV4dFJlbW92ZWQ9dC5fbmV4dCx0LnByZXZpb3VzVmFsdWU9dC5jdXJyZW50VmFsdWUsdC5jdXJyZW50VmFsdWU9bnVsbCx0Ll9wcmV2PW51bGwsdC5fbmV4dD1udWxsfXJldHVybiB0aGlzLl9jaGFuZ2VzVGFpbCYmKHRoaXMuX2NoYW5nZXNUYWlsLl9uZXh0Q2hhbmdlZD1udWxsKSx0aGlzLl9hZGRpdGlvbnNUYWlsJiYodGhpcy5fYWRkaXRpb25zVGFpbC5fbmV4dEFkZGVkPW51bGwpLHRoaXMuaXNEaXJ0eX1faW5zZXJ0QmVmb3JlT3JBcHBlbmQodCxuKXtpZih0KXtjb25zdCBlPXQuX3ByZXY7cmV0dXJuIG4uX25leHQ9dCxuLl9wcmV2PWUsdC5fcHJldj1uLGUmJihlLl9uZXh0PW4pLHQ9PT10aGlzLl9tYXBIZWFkJiYodGhpcy5fbWFwSGVhZD1uKSx0aGlzLl9hcHBlbmRBZnRlcj10LHR9cmV0dXJuIHRoaXMuX2FwcGVuZEFmdGVyPyh0aGlzLl9hcHBlbmRBZnRlci5fbmV4dD1uLG4uX3ByZXY9dGhpcy5fYXBwZW5kQWZ0ZXIpOnRoaXMuX21hcEhlYWQ9bix0aGlzLl9hcHBlbmRBZnRlcj1uLG51bGx9X2dldE9yQ3JlYXRlUmVjb3JkRm9yS2V5KHQsbil7aWYodGhpcy5fcmVjb3Jkcy5oYXModCkpe2NvbnN0IGU9dGhpcy5fcmVjb3Jkcy5nZXQodCk7dGhpcy5fbWF5YmVBZGRUb0NoYW5nZXMoZSxuKTtjb25zdCBhPWUuX3ByZXYsbz1lLl9uZXh0O3JldHVybiBhJiYoYS5fbmV4dD1vKSxvJiYoby5fcHJldj1hKSxlLl9uZXh0PW51bGwsZS5fcHJldj1udWxsLGV9Y29uc3QgZT1uZXcgVXUodCk7cmV0dXJuIHRoaXMuX3JlY29yZHMuc2V0KHQsZSksZS5jdXJyZW50VmFsdWU9bix0aGlzLl9hZGRUb0FkZGl0aW9ucyhlKSxlfV9yZXNldCgpe2lmKHRoaXMuaXNEaXJ0eSl7bGV0IHQ7Zm9yKHRoaXMuX3ByZXZpb3VzTWFwSGVhZD10aGlzLl9tYXBIZWFkLHQ9dGhpcy5fcHJldmlvdXNNYXBIZWFkO251bGwhPT10O3Q9dC5fbmV4dCl0Ll9uZXh0UHJldmlvdXM9dC5fbmV4dDtmb3IodD10aGlzLl9jaGFuZ2VzSGVhZDtudWxsIT09dDt0PXQuX25leHRDaGFuZ2VkKXQucHJldmlvdXNWYWx1ZT10LmN1cnJlbnRWYWx1ZTtmb3IodD10aGlzLl9hZGRpdGlvbnNIZWFkO251bGwhPXQ7dD10Ll9uZXh0QWRkZWQpdC5wcmV2aW91c1ZhbHVlPXQuY3VycmVudFZhbHVlO3RoaXMuX2NoYW5nZXNIZWFkPXRoaXMuX2NoYW5nZXNUYWlsPW51bGwsdGhpcy5fYWRkaXRpb25zSGVhZD10aGlzLl9hZGRpdGlvbnNUYWlsPW51bGwsdGhpcy5fcmVtb3ZhbHNIZWFkPW51bGx9fV9tYXliZUFkZFRvQ2hhbmdlcyh0LG4pe09iamVjdC5pcyhuLHQuY3VycmVudFZhbHVlKXx8KHQucHJldmlvdXNWYWx1ZT10LmN1cnJlbnRWYWx1ZSx0LmN1cnJlbnRWYWx1ZT1uLHRoaXMuX2FkZFRvQ2hhbmdlcyh0KSl9X2FkZFRvQWRkaXRpb25zKHQpe251bGw9PT10aGlzLl9hZGRpdGlvbnNIZWFkP3RoaXMuX2FkZGl0aW9uc0hlYWQ9dGhpcy5fYWRkaXRpb25zVGFpbD10Oih0aGlzLl9hZGRpdGlvbnNUYWlsLl9uZXh0QWRkZWQ9dCx0aGlzLl9hZGRpdGlvbnNUYWlsPXQpfV9hZGRUb0NoYW5nZXModCl7bnVsbD09PXRoaXMuX2NoYW5nZXNIZWFkP3RoaXMuX2NoYW5nZXNIZWFkPXRoaXMuX2NoYW5nZXNUYWlsPXQ6KHRoaXMuX2NoYW5nZXNUYWlsLl9uZXh0Q2hhbmdlZD10LHRoaXMuX2NoYW5nZXNUYWlsPXQpfV9mb3JFYWNoKHQsbil7dCBpbnN0YW5jZW9mIE1hcD90LmZvckVhY2gobik6T2JqZWN0LmtleXModCkuZm9yRWFjaCgoZT0+bih0W2VdLGUpKSl9fWNsYXNzIFV1e2NvbnN0cnVjdG9yKHQpe3RoaXMua2V5PXQsdGhpcy5wcmV2aW91c1ZhbHVlPW51bGwsdGhpcy5jdXJyZW50VmFsdWU9bnVsbCx0aGlzLl9uZXh0UHJldmlvdXM9bnVsbCx0aGlzLl9uZXh0PW51bGwsdGhpcy5fcHJldj1udWxsLHRoaXMuX25leHRBZGRlZD1udWxsLHRoaXMuX25leHRSZW1vdmVkPW51bGwsdGhpcy5fbmV4dENoYW5nZWQ9bnVsbH19Ci8qKgogICAgICogQGxpY2Vuc2UKICAgICAqIENvcHlyaWdodCBHb29nbGUgTExDIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCiAgICAgKgogICAgICogVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYW4gTUlULXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKICAgICAqIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUgYXQgaHR0cHM6Ly9hbmd1bGFyLmlvL2xpY2Vuc2UKICAgICAqL2NsYXNzIFd1e2NvbnN0cnVjdG9yKHQpe3RoaXMuZmFjdG9yaWVzPXR9c3RhdGljIGNyZWF0ZSh0LG4pe2lmKG51bGwhPW4pe2NvbnN0IGU9bi5mYWN0b3JpZXMuc2xpY2UoKTt0PXQuY29uY2F0KGUpfXJldHVybiBuZXcgV3UodCl9c3RhdGljIGV4dGVuZCh0KXtyZXR1cm57cHJvdmlkZTpXdSx1c2VGYWN0b3J5Om49PntpZighbil0aHJvdyBuZXcgRXJyb3IoIkNhbm5vdCBleHRlbmQgSXRlcmFibGVEaWZmZXJzIHdpdGhvdXQgYSBwYXJlbnQgaW5qZWN0b3IiKTtyZXR1cm4gV3UuY3JlYXRlKHQsbil9LGRlcHM6W1tXdSxuZXcgTGUsbmV3IE5lXV19fWZpbmQodCl7Y29uc3Qgbj10aGlzLmZhY3Rvcmllcy5maW5kKChuPT5uLnN1cHBvcnRzKHQpKSk7aWYobnVsbCE9bilyZXR1cm4gbjt0aHJvdyBuZXcgRXJyb3IoYENhbm5vdCBmaW5kIGEgZGlmZmVyIHN1cHBvcnRpbmcgb2JqZWN0ICcke3R9JyBvZiB0eXBlICckeyhmdW5jdGlvbiBlKHQpe3JldHVybiB0Lm5hbWV8fHR5cGVvZiB0fQovKioKICAgICAqIEBsaWNlbnNlCiAgICAgKiBDb3B5cmlnaHQgR29vZ2xlIExMQyBBbGwgUmlnaHRzIFJlc2VydmVkLgogICAgICoKICAgICAqIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGFuIE1JVC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCiAgICAgKiBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlIGF0IGh0dHBzOi8vYW5ndWxhci5pby9saWNlbnNlCiAgICAgKi8pKHQpfSdgKX19V3UuybVwcm92PVdlKHt0b2tlbjpXdSxwcm92aWRlZEluOiJyb290IixmYWN0b3J5OigpPT5uZXcgV3UoW25ldyBEdV0pfSk7Y2xhc3MgR3V7Y29uc3RydWN0b3IodCl7dGhpcy5mYWN0b3JpZXM9dH1zdGF0aWMgY3JlYXRlKHQsbil7aWYobil7Y29uc3QgZT1uLmZhY3Rvcmllcy5zbGljZSgpO3Q9dC5jb25jYXQoZSl9cmV0dXJuIG5ldyBHdSh0KX1zdGF0aWMgZXh0ZW5kKHQpe3JldHVybntwcm92aWRlOkd1LHVzZUZhY3Rvcnk6bj0+e2lmKCFuKXRocm93IG5ldyBFcnJvcigiQ2Fubm90IGV4dGVuZCBLZXlWYWx1ZURpZmZlcnMgd2l0aG91dCBhIHBhcmVudCBpbmplY3RvciIpO3JldHVybiBHdS5jcmVhdGUodCxuKX0sZGVwczpbW0d1LG5ldyBMZSxuZXcgTmVdXX19ZmluZCh0KXtjb25zdCBuPXRoaXMuZmFjdG9yaWVzLmZpbmQoKG49Pm4uc3VwcG9ydHModCkpKTtpZihuKXJldHVybiBuO3Rocm93IG5ldyBFcnJvcihgQ2Fubm90IGZpbmQgYSBkaWZmZXIgc3VwcG9ydGluZyBvYmplY3QgJyR7dH0nYCl9fUd1Lsm1cHJvdj1XZSh7dG9rZW46R3UscHJvdmlkZWRJbjoicm9vdCIsZmFjdG9yeTooKT0+bmV3IEd1KFtuZXcgVnVdKX0pOwovKioKICAgICAqIEBsaWNlbnNlCiAgICAgKiBDb3B5cmlnaHQgR29vZ2xlIExMQyBBbGwgUmlnaHRzIFJlc2VydmVkLgogICAgICoKICAgICAqIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGFuIE1JVC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCiAgICAgKiBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlIGF0IGh0dHBzOi8vYW5ndWxhci5pby9saWNlbnNlCiAgICAgKi8KY29uc3QgWXU9W25ldyBWdV0scXU9W25ldyBEdV0sWnU9bmV3IFd1KHF1KSxYdT1uZXcgR3UoWXUpOwovKioKICAgICAqIEBsaWNlbnNlCiAgICAgKiBDb3B5cmlnaHQgR29vZ2xlIExMQyBBbGwgUmlnaHRzIFJlc2VydmVkLgogICAgICoKICAgICAqIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGFuIE1JVC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCiAgICAgKiBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlIGF0IGh0dHBzOi8vYW5ndWxhci5pby9saWNlbnNlCiAgICAgKi8KY2xhc3MgSnV7fUp1Ll9fTkdfRUxFTUVOVF9JRF9fPSgpPT5RdShKdSx4dSk7Y29uc3QgUXU9ZnVuY3Rpb24gS3UodCxuKXtyZXR1cm4gTG0odCxuLFVyKCksQnIoKSl9OwovKioKICAgICAqIEBsaWNlbnNlCiAgICAgKiBDb3B5cmlnaHQgR29vZ2xlIExMQyBBbGwgUmlnaHRzIFJlc2VydmVkLgogICAgICoKICAgICAqIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGFuIE1JVC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCiAgICAgKiBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlIGF0IGh0dHBzOi8vYW5ndWxhci5pby9saWNlbnNlCiAgICAgKi8KY2xhc3MgJHV7fSR1Ll9fTkdfRUxFTUVOVF9JRF9fPSgpPT50ZigkdSx4dSk7Y29uc3QgdGY9ZnVuY3Rpb24gbmYodCxuKXtyZXR1cm4gSG0odCxuLFVyKCksQnIoKSl9LGVmPW5ldyBNYXA7ZnVuY3Rpb24gYWYodCl7bGV0IG49ZWYuZ2V0KHQpO3JldHVybiBufHwobj10YSh0KSsiXyIrZWYuc2l6ZSxlZi5zZXQodCxuKSksbn1hZih5ZCksYWYoTGEpLGFmKG5vKSwKLyoqCiAgICAgKiBAbGljZW5zZQogICAgICogQ29weXJpZ2h0IEdvb2dsZSBMTEMgQWxsIFJpZ2h0cyBSZXNlcnZlZC4KICAgICAqCiAgICAgKiBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhbiBNSVQtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQogICAgICogZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZSBhdCBodHRwczovL2FuZ3VsYXIuaW8vbGljZW5zZQogICAgICovCmFmKFN1KSxhZih4dSksYWYoJHUpLGFmKEp1KSxhZihWbSksYWYoeWQpLGFmKExhKTtjb25zdCBvZj17fTsKLyoqCiAgICAgKiBAbGljZW5zZQogICAgICogQ29weXJpZ2h0IEdvb2dsZSBMTEMgQWxsIFJpZ2h0cyBSZXNlcnZlZC4KICAgICAqCiAgICAgKiBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhbiBNSVQtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQogICAgICogZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZSBhdCBodHRwczovL2FuZ3VsYXIuaW8vbGljZW5zZQogICAgICovY2xhc3MgcmYgZXh0ZW5kcyBQdXtjb25zdHJ1Y3Rvcih0KXtzdXBlcigpLHRoaXMubmdNb2R1bGU9dH1yZXNvbHZlQ29tcG9uZW50RmFjdG9yeSh0KXtuZ0Rldk1vZGUmJihmdW5jdGlvbiBuKHQsZT0iVHlwZSBwYXNzZWQgaW4gaXMgbm90IENvbXBvbmVudFR5cGUsIGl0IGRvZXMgbm90IGhhdmUgJ8m1Y21wJyBwcm9wZXJ0eS4iKXtTbyh0KXx8RGEoZSl9KSh0KTtjb25zdCBlPVNvKHQpO3JldHVybiBuZXcgbGYoZSx0aGlzLm5nTW9kdWxlKX19ZnVuY3Rpb24gY2YodCl7Y29uc3Qgbj1bXTtmb3IobGV0IGUgaW4gdCl0Lmhhc093blByb3BlcnR5KGUpJiZuLnB1c2goe3Byb3BOYW1lOnRbZV0sdGVtcGxhdGVOYW1lOmV9KTtyZXR1cm4gbn1jb25zdCBzZj1uZXcgRmEoIlNDSEVEVUxFUl9UT0tFTiIse3Byb3ZpZGVkSW46InJvb3QiLGZhY3Rvcnk6KCk9Pm5yfSk7Y2xhc3MgbGYgZXh0ZW5kcyBPdXtjb25zdHJ1Y3Rvcih0LG4pe3N1cGVyKCksdGhpcy5jb21wb25lbnREZWY9dCx0aGlzLm5nTW9kdWxlPW4sdGhpcy5jb21wb25lbnRUeXBlPXQudHlwZSx0aGlzLnNlbGVjdG9yPShmdW5jdGlvbiBlKHQpe3JldHVybiB0Lm1hcChNcykuam9pbigiLCIpfSkodC5zZWxlY3RvcnMpLHRoaXMubmdDb250ZW50U2VsZWN0b3JzPXQubmdDb250ZW50U2VsZWN0b3JzP3QubmdDb250ZW50U2VsZWN0b3JzOltdLHRoaXMuaXNCb3VuZFRvTW9kdWxlPSEhbn1nZXQgaW5wdXRzKCl7cmV0dXJuIGNmKHRoaXMuY29tcG9uZW50RGVmLmlucHV0cyl9Z2V0IG91dHB1dHMoKXtyZXR1cm4gY2YodGhpcy5jb21wb25lbnREZWYub3V0cHV0cyl9Y3JlYXRlKHQsbixlLGEpe2NvbnN0IG89KGE9YXx8dGhpcy5uZ01vZHVsZSk/KGZ1bmN0aW9uIHIodCxuKXtyZXR1cm57Z2V0OihlLGEsbyk9Pntjb25zdCByPXQuZ2V0KGUsb2Ysbyk7cmV0dXJuIHIhPT1vZnx8YT09PW9mP3I6bi5nZXQoZSxhLG8pfX19KSh0LGEuaW5qZWN0b3IpOnQsaT1vLmdldCh2dSx5ciksYz1vLmdldCh6dSxudWxsKSxzPWkuY3JlYXRlUmVuZGVyZXIobnVsbCx0aGlzLmNvbXBvbmVudERlZiksbD10aGlzLmNvbXBvbmVudERlZi5zZWxlY3RvcnNbMF1bMF18fCJkaXYiLG09ZT8oZnVuY3Rpb24gZCh0LG4sZSl7aWYoeHIodCkpcmV0dXJuIHQuc2VsZWN0Um9vdEVsZW1lbnQobixlPT09Ym8uU2hhZG93RG9tKTtsZXQgYT0ic3RyaW5nIj09dHlwZW9mIG4/dC5xdWVyeVNlbGVjdG9yKG4pOm47cmV0dXJuIG5nRGV2TW9kZSYmKGZ1bmN0aW9uIG8odCxuKXtpZighdCl0aHJvdyhmdW5jdGlvbiBlKHQsbil7cmV0dXJuIG5ldyBFcnJvcihgUmVuZGVyZXI6ICR7dH0gWyR7dHIobil9XWApfSkoInN0cmluZyI9PXR5cGVvZiBuPyJIb3N0IG5vZGUgd2l0aCBzZWxlY3RvciBub3QgZm91bmQ6IjoiSG9zdCBub2RlIGlzIHJlcXVpcmVkOiIsbil9KShhLG4pLGEudGV4dENvbnRlbnQ9IiIsYX0pKHMsZSx0aGlzLmNvbXBvbmVudERlZi5lbmNhcHN1bGF0aW9uKTpwbChsLGkuY3JlYXRlUmVuZGVyZXIobnVsbCx0aGlzLmNvbXBvbmVudERlZiksKGZ1bmN0aW9uIGcodCl7Y29uc3Qgbj10LnRvTG93ZXJDYXNlKCk7cmV0dXJuInN2ZyI9PT1uP19yOiJtYXRoIj09PW4/Q3I6bnVsbH0pKGwpKSxwPXRoaXMuY29tcG9uZW50RGVmLm9uUHVzaD81NzY6NTI4LGI9KGZ1bmN0aW9uIHUodCxuKXtyZXR1cm57Y29tcG9uZW50czpbXSxzY2hlZHVsZXI6dHx8bnIsY2xlYW46YW0scGxheWVySGFuZGxlcjpufHxudWxsLGZsYWdzOjB9fSkoKSxmPXlsKDAsbnVsbCxudWxsLDEsMCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwpLGg9YmwobnVsbCxmLGIscCxudWxsLG51bGwsaSxzLGMsbyk7bGV0IF8sQztpaShoKTt0cnl7Y29uc3QgdD0oZnVuY3Rpb24gTSh0LG4sZSxhLG8scil7Y29uc3QgaT1lWzFdO25nRGV2TW9kZSYmTmEoZSwyMCksZVsyMF09dDtjb25zdCBjPXVsKGksMCwyLG51bGwsbnVsbCkscz1jLm1lcmdlZEF0dHJzPW4uaG9zdEF0dHJzO251bGwhPT1zJiYodGcoYyxzLCEwKSxudWxsIT09dCYmKEVpKG8sdCxzKSxudWxsIT09Yy5jbGFzc2VzJiZBbShvLHQsYy5jbGFzc2VzKSxudWxsIT09Yy5zdHlsZXMmJkVtKG8sdCxjLnN0eWxlcykpKTtjb25zdCBsPWEuY3JlYXRlUmVuZGVyZXIodCxuKSxtPWJsKGUseGwobiksbnVsbCxuLm9uUHVzaD82NDoxNixlWzIwXSxjLGEsbCxyfHxudWxsLG51bGwpO3JldHVybiBpLmZpcnN0Q3JlYXRlUGFzcyYmKFdpKEJpKGMsZSksaSxuLnR5cGUpLEZsKGksYyksSGwoYyxlLmxlbmd0aCwxKSksSmwoZSxtKSxlWzIwXT1tfSkobSx0aGlzLmNvbXBvbmVudERlZixoLGkscyk7aWYobSlpZihlKUVpKHMsbSxbIm5nLXZlcnNpb24iLFR1LmZ1bGxdKTtlbHNle2NvbnN0e2F0dHJzOnQsY2xhc3NlczpufT0oZnVuY3Rpb24gTyh0KXtjb25zdCBuPVtdLGU9W107bGV0IGE9MSxvPTI7Zm9yKDthPHQubGVuZ3RoOyl7bGV0IHI9dFthXTtpZigic3RyaW5nIj09dHlwZW9mIHIpMj09PW8/IiIhPT1yJiZuLnB1c2gocix0WysrYV0pOjg9PT1vJiZlLnB1c2gocik7ZWxzZXtpZighdXMobykpYnJlYWs7bz1yfWErK31yZXR1cm57YXR0cnM6bixjbGFzc2VzOmV9fSkodGhpcy5jb21wb25lbnREZWYuc2VsZWN0b3JzWzBdKTt0JiZFaShzLG0sdCksbiYmbi5sZW5ndGg+MCYmQW0ocyxtLG4uam9pbigiICIpKX1pZihDPVNyKGYsMCksdm9pZCAwIT09bil7Y29uc3QgdD1DLnByb2plY3Rpb249W107Zm9yKGxldCBlPTA7ZTx0aGlzLm5nQ29udGVudFNlbGVjdG9ycy5sZW5ndGg7ZSsrKXtjb25zdCBhPW5bZV07dC5wdXNoKG51bGwhPWE/QXJyYXkuZnJvbShhKTpudWxsKX19Xz0oZnVuY3Rpb24gUCh0LG4sZSxhLG8pe2NvbnN0IHI9ZVsxXSxpPShmdW5jdGlvbiBjKHQsbixlKXtjb25zdCBhPVVyKCk7dC5maXJzdENyZWF0ZVBhc3MmJihlLnByb3ZpZGVyc1Jlc29sdmVyJiZlLnByb3ZpZGVyc1Jlc29sdmVyKGUpLE5sKHQsYSwxKSxCbCh0LG4sZSkpO2NvbnN0IG89WGkobix0LG4ubGVuZ3RoLTEsYSk7b3MobyxuKTtjb25zdCByPXdyKGEsbik7cmV0dXJuIHImJm9zKHIsbiksb30pKHIsZSxuKTthLmNvbXBvbmVudHMucHVzaChpKSx0WzhdPWksbyYmby5mb3JFYWNoKCh0PT50KGksbikpKSxuLmNvbnRlbnRRdWVyaWVzJiZuLmNvbnRlbnRRdWVyaWVzKDEsaSxlLmxlbmd0aC0xKTtjb25zdCBzPVVyKCk7aWYobmdEZXZNb2RlJiZUYShzLCJ0Tm9kZSBzaG91bGQgaGF2ZSBiZWVuIGFscmVhZHkgY3JlYXRlZCIpLHIuZmlyc3RDcmVhdGVQYXNzJiYobnVsbCE9PW4uaG9zdEJpbmRpbmdzfHxudWxsIT09bi5ob3N0QXR0cnMpKXtwaShzLmluZGV4LVRvKTtjb25zdCB0PWVbMV07VGwodCxuKSxEbCh0LGUsbi5ob3N0VmFycyksSWwobixpKX1yZXR1cm4gaX0pKHQsdGhpcy5jb21wb25lbnREZWYsaCxiLFt1Z10pLGZsKGYsaCxudWxsKX1maW5hbGx5e2RpKCl9cmV0dXJuIG5ldyBtZih0aGlzLmNvbXBvbmVudFR5cGUsXyxGbSh4dSxDLGgpLGgsQyl9fW5ldyByZjtjbGFzcyBtZiBleHRlbmRzIGNsYXNze317Y29uc3RydWN0b3IodCxuLGUsYSxvKXtzdXBlcigpLHRoaXMubG9jYXRpb249ZSx0aGlzLl9yb290TFZpZXc9YSx0aGlzLl90Tm9kZT1vLHRoaXMuZGVzdHJveUNicz1bXSx0aGlzLmluc3RhbmNlPW4sdGhpcy5ob3N0Vmlldz10aGlzLmNoYW5nZURldGVjdG9yUmVmPW5ldyBSbShhKSx0aGlzLmNvbXBvbmVudFR5cGU9dH1nZXQgaW5qZWN0b3IoKXtyZXR1cm4gbmV3IEtpKHRoaXMuX3ROb2RlLHRoaXMuX3Jvb3RMVmlldyl9ZGVzdHJveSgpe3RoaXMuZGVzdHJveUNicyYmKHRoaXMuZGVzdHJveUNicy5mb3JFYWNoKCh0PT50KCkpKSx0aGlzLmRlc3Ryb3lDYnM9bnVsbCwhdGhpcy5ob3N0Vmlldy5kZXN0cm95ZWQmJnRoaXMuaG9zdFZpZXcuZGVzdHJveSgpKX1vbkRlc3Ryb3kodCl7dGhpcy5kZXN0cm95Q2JzJiZ0aGlzLmRlc3Ryb3lDYnMucHVzaCh0KX19Ci8qKgogICAgICogQGxpY2Vuc2UKICAgICAqIENvcHlyaWdodCBHb29nbGUgTExDIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCiAgICAgKgogICAgICogVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYW4gTUlULXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKICAgICAqIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUgYXQgaHR0cHM6Ly9hbmd1bGFyLmlvL2xpY2Vuc2UKICAgICAqL2NvbnN0IGRmPW5ldyBNYXA7Ci8qKgogICAgICogQGxpY2Vuc2UKICAgICAqIENvcHlyaWdodCBHb29nbGUgTExDIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCiAgICAgKgogICAgICogVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYW4gTUlULXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKICAgICAqIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUgYXQgaHR0cHM6Ly9hbmd1bGFyLmlvL2xpY2Vuc2UKICAgICAqLwpjbGFzcyBnZiBleHRlbmRzIG5ve2NvbnN0cnVjdG9yKHQsbil7c3VwZXIoKSx0aGlzLl9wYXJlbnQ9bix0aGlzLl9ib290c3RyYXBDb21wb25lbnRzPVtdLHRoaXMuaW5qZWN0b3I9dGhpcyx0aGlzLmRlc3Ryb3lDYnM9W10sdGhpcy5jb21wb25lbnRGYWN0b3J5UmVzb2x2ZXI9bmV3IHJmKHRoaXMpO2NvbnN0IGU9Um8odCk7bmdEZXZNb2RlJiZUYShlLGBOZ01vZHVsZSAnJHt0YSh0KX0nIGlzIG5vdCBhIHN1YnR5cGUgb2YgJ05nTW9kdWxlVHlwZScuYCk7Y29uc3QgYT0oZnVuY3Rpb24gbyh0KXtyZXR1cm4gdFtDYV18fG51bGx9KSh0KTthJiZoYihhKSx0aGlzLl9ib290c3RyYXBDb21wb25lbnRzPWlyKGUuYm9vdHN0cmFwKSx0aGlzLl9yM0luamVjdG9yPXVkKHQsbixbe3Byb3ZpZGU6bm8sdXNlVmFsdWU6dGhpc30se3Byb3ZpZGU6UHUsdXNlVmFsdWU6dGhpcy5jb21wb25lbnRGYWN0b3J5UmVzb2x2ZXJ9XSx0YSh0KSksdGhpcy5fcjNJbmplY3Rvci5fcmVzb2x2ZUluamVjdG9yRGVmVHlwZXMoKSx0aGlzLmluc3RhbmNlPXRoaXMuZ2V0KHQpfWdldCh0LG49eWQuVEhST1dfSUZfTk9UX0ZPVU5ELGU9VmUuRGVmYXVsdCl7cmV0dXJuIHQ9PT15ZHx8dD09PW5vfHx0PT09TGE/dGhpczp0aGlzLl9yM0luamVjdG9yLmdldCh0LG4sZSl9ZGVzdHJveSgpe25nRGV2TW9kZSYmVGEodGhpcy5kZXN0cm95Q2JzLCJOZ01vZHVsZSBhbHJlYWR5IGRlc3Ryb3llZCIpO2NvbnN0IHQ9dGhpcy5fcjNJbmplY3RvcjshdC5kZXN0cm95ZWQmJnQuZGVzdHJveSgpLHRoaXMuZGVzdHJveUNicy5mb3JFYWNoKCh0PT50KCkpKSx0aGlzLmRlc3Ryb3lDYnM9bnVsbH1vbkRlc3Ryb3kodCl7bmdEZXZNb2RlJiZUYSh0aGlzLmRlc3Ryb3lDYnMsIk5nTW9kdWxlIGFscmVhZHkgZGVzdHJveWVkIiksdGhpcy5kZXN0cm95Q2JzLnB1c2godCl9fWNsYXNzIHBmIGV4dGVuZHMgY2xhc3N7fXtjb25zdHJ1Y3Rvcih0KXtzdXBlcigpLHRoaXMubW9kdWxlVHlwZT10LG51bGwhPT1Sbyh0KSYmKGZ1bmN0aW9uIG4odCl7Y29uc3Qgbj1uZXcgU2V0OyEoZnVuY3Rpb24gdChlKXtjb25zdCBhPVJvKGUsITApLG89YS5pZDtudWxsIT09byYmKChmdW5jdGlvbiByKHQsbixlKXtpZihuJiZuIT09ZSl0aHJvdyBuZXcgRXJyb3IoYER1cGxpY2F0ZSBtb2R1bGUgcmVnaXN0ZXJlZCBmb3IgJHt0fSAtICR7dGEobil9IHZzICR7dGEobi5uYW1lKX1gKX0pKG8sZGYuZ2V0KG8pLGUpLGRmLnNldChvLGUpKTtjb25zdCBpPWlyKGEuaW1wb3J0cyk7Zm9yKGNvbnN0IGUgb2YgaSluLmhhcyhlKXx8KG4uYWRkKGUpLHQoZSkpfSkodCl9KSh0KX1jcmVhdGUodCl7cmV0dXJuIG5ldyBnZih0aGlzLm1vZHVsZVR5cGUsdCl9fQovKioKICAgICAqIEBsaWNlbnNlCiAgICAgKiBDb3B5cmlnaHQgR29vZ2xlIExMQyBBbGwgUmlnaHRzIFJlc2VydmVkLgogICAgICoKICAgICAqIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGFuIE1JVC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCiAgICAgKiBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlIGF0IGh0dHBzOi8vYW5ndWxhci5pby9saWNlbnNlCiAgICAgKi9mdW5jdGlvbiBiZih0LG4sZSl7Y29uc3QgYT1YcigpK3Qsbz1CcigpO3JldHVybiBvW2FdPT09T3M/QWcobyxhLGU/bi5jYWxsKGUpOm4oKSk6emcobyxhKX1mdW5jdGlvbiB1Zih0LG4sZSxhKXtyZXR1cm4gQ2YoQnIoKSxYcigpLHQsbixlLGEpfWZ1bmN0aW9uIGZmKHQsbixlLGEsbyl7cmV0dXJuIE1mKEJyKCksWHIoKSx0LG4sZSxhLG8pfWZ1bmN0aW9uIGhmKHQsbixlLGEsbyxyKXtyZXR1cm4gT2YoQnIoKSxYcigpLHQsbixlLGEsbyxyKX1mdW5jdGlvbiBfZih0LG4pe25nRGV2TW9kZSYmTmEodCxuKTtjb25zdCBlPXRbbl07cmV0dXJuIGU9PT1Pcz92b2lkIDA6ZX1mdW5jdGlvbiBDZih0LG4sZSxhLG8scil7Y29uc3QgaT1uK2U7cmV0dXJuIFJnKHQsaSxvKT9BZyh0LGkrMSxyP2EuY2FsbChyLG8pOmEobykpOl9mKHQsaSsxKX1mdW5jdGlvbiBNZih0LG4sZSxhLG8scixpKXtjb25zdCBjPW4rZTtyZXR1cm4gVGcodCxjLG8scik/QWcodCxjKzIsaT9hLmNhbGwoaSxvLHIpOmEobyxyKSk6X2YodCxjKzIpfWZ1bmN0aW9uIE9mKHQsbixlLGEsbyxyLGksYyl7Y29uc3Qgcz1uK2U7cmV0dXJuIERnKHQscyxvLHIsaSk/QWcodCxzKzMsYz9hLmNhbGwoYyxvLHIsaSk6YShvLHIsaSkpOl9mKHQscyszKX1mdW5jdGlvbiBQZih0LG4sZSxhLG8scixpLGMscyl7Y29uc3QgbD1uK2U7cmV0dXJuIElnKHQsbCxvLHIsaSxjKT9BZyh0LGwrNCxzP2EuY2FsbChzLG8scixpLGMpOmEobyxyLGksYykpOl9mKHQsbCs0KX1mdW5jdGlvbiB4Zih0LG4sZSxhLG8scil7bGV0IGk9bitlLGM9ITE7Zm9yKGxldCBuPTA7bjxvLmxlbmd0aDtuKyspUmcodCxpKyssb1tuXSkmJihjPSEwKTtyZXR1cm4gYz9BZyh0LGksYS5hcHBseShyLG8pKTpfZih0LGkpfQovKioKICAgICAqIEBsaWNlbnNlCiAgICAgKiBDb3B5cmlnaHQgR29vZ2xlIExMQyBBbGwgUmlnaHRzIFJlc2VydmVkLgogICAgICoKICAgICAqIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGFuIE1JVC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCiAgICAgKiBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlIGF0IGh0dHBzOi8vYW5ndWxhci5pby9saWNlbnNlCiAgICAgKi9mdW5jdGlvbiB5Zih0LG4pe2NvbnN0IGU9VnIoKTtsZXQgYTtjb25zdCBvPXQrVG87ZS5maXJzdENyZWF0ZVBhc3M/KGE9KGZ1bmN0aW9uIHIodCxuKXtpZihuKWZvcihsZXQgZT1uLmxlbmd0aC0xO2U+PTA7ZS0tKXtjb25zdCBhPW5bZV07aWYodD09PWEubmFtZSlyZXR1cm4gYX10aHJvdyBuZXcgRXJyb3IoYFRoZSBwaXBlICcke3R9JyBjb3VsZCBub3QgYmUgZm91bmQhYCl9KShuLGUucGlwZVJlZ2lzdHJ5KSxlLmRhdGFbb109YSxhLm9uRGVzdHJveSYmKGUuZGVzdHJveUhvb2tzfHwoZS5kZXN0cm95SG9va3M9W10pKS5wdXNoKG8sYS5vbkRlc3Ryb3kpKTphPWUuZGF0YVtvXTtjb25zdCBpPWEuZmFjdG9yeXx8KGEuZmFjdG9yeT16byhhLnR5cGUsITApKSxjPVlhKFpnKTt0cnl7Y29uc3Qgbj1MaSghMSksYT1pKCk7cmV0dXJuIExpKG4pLChmdW5jdGlvbiBzKHQsbixlLGEpe2NvbnN0IG89ZStUbztvPj10LmRhdGEubGVuZ3RoJiYodC5kYXRhW29dPW51bGwsdC5ibHVlcHJpbnRbb109bnVsbCksbltvXT1hfSkoZSxCcigpLHQsYSksYX1maW5hbGx5e1lhKGMpfX1mdW5jdGlvbiBrZih0LG4sZSl7Y29uc3QgYT1CcigpLG89RXIoYSx0KTtyZXR1cm4gU2YoYSx3ZihhLHQpP0NmKGEsWHIoKSxuLG8udHJhbnNmb3JtLGUsbyk6by50cmFuc2Zvcm0oZSkpfWZ1bmN0aW9uIHZmKHQsbixlLGEpe2NvbnN0IG89QnIoKSxyPUVyKG8sdCk7cmV0dXJuIFNmKG8sd2Yobyx0KT9NZihvLFhyKCksbixyLnRyYW5zZm9ybSxlLGEscik6ci50cmFuc2Zvcm0oZSxhKSl9ZnVuY3Rpb24gd2YodCxuKXtyZXR1cm4gdFsxXS5kYXRhW24rVG9dLnB1cmV9ZnVuY3Rpb24gU2YodCxuKXtyZXR1cm4gd2cuaXNXcmFwcGVkKG4pJiYobj13Zy51bndyYXAobiksdFtKcigpXT1Pcyksbn0KLyoqCiAgICAgKiBAbGljZW5zZQogICAgICogQ29weXJpZ2h0IEdvb2dsZSBMTEMgQWxsIFJpZ2h0cyBSZXNlcnZlZC4KICAgICAqCiAgICAgKiBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhbiBNSVQtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQogICAgICogZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZSBhdCBodHRwczovL2FuZ3VsYXIuaW8vbGljZW5zZQogICAgICovY29uc3QgRWY9Y2xhc3MgZXh0ZW5kcyB4e2NvbnN0cnVjdG9yKHQ9ITEpe3N1cGVyKCksdGhpcy5fX2lzQXN5bmM9dH1lbWl0KHQpe3N1cGVyLm5leHQodCl9c3Vic2NyaWJlKHQsbixlKXtsZXQgYSxvPXQ9Pm51bGwscj0oKT0+bnVsbDt0JiYib2JqZWN0Ij09dHlwZW9mIHQ/KGE9dGhpcy5fX2lzQXN5bmM/bj0+e3NldFRpbWVvdXQoKCgpPT50Lm5leHQobikpKX06bj0+e3QubmV4dChuKX0sdC5lcnJvciYmKG89dGhpcy5fX2lzQXN5bmM/bj0+e3NldFRpbWVvdXQoKCgpPT50LmVycm9yKG4pKSl9Om49Pnt0LmVycm9yKG4pfSksdC5jb21wbGV0ZSYmKHI9dGhpcy5fX2lzQXN5bmM/KCk9PntzZXRUaW1lb3V0KCgoKT0+dC5jb21wbGV0ZSgpKSl9OigpPT57dC5jb21wbGV0ZSgpfSkpOihhPXRoaXMuX19pc0FzeW5jP249PntzZXRUaW1lb3V0KCgoKT0+dChuKSkpfTpuPT57dChuKX0sbiYmKG89dGhpcy5fX2lzQXN5bmM/dD0+e3NldFRpbWVvdXQoKCgpPT5uKHQpKSl9OnQ9PntuKHQpfSksZSYmKHI9dGhpcy5fX2lzQXN5bmM/KCk9PntzZXRUaW1lb3V0KCgoKT0+ZSgpKSl9OigpPT57ZSgpfSkpO2NvbnN0IGk9c3VwZXIuc3Vic2NyaWJlKGEsbyxyKTtyZXR1cm4gdCBpbnN0YW5jZW9mIHMmJnQuYWRkKGkpLGl9fTsKLyoqCiAgICAgKiBAbGljZW5zZQogICAgICogQ29weXJpZ2h0IEdvb2dsZSBMTEMgQWxsIFJpZ2h0cyBSZXNlcnZlZC4KICAgICAqCiAgICAgKiBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhbiBNSVQtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQogICAgICogZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZSBhdCBodHRwczovL2FuZ3VsYXIuaW8vbGljZW5zZQogICAgICovZnVuY3Rpb24gQWYoKXtyZXR1cm4gdGhpcy5fcmVzdWx0c1trZygpXSgpfWNsYXNzIHpme2NvbnN0cnVjdG9yKCl7dGhpcy5kaXJ0eT0hMCx0aGlzLl9yZXN1bHRzPVtdLHRoaXMuY2hhbmdlcz1uZXcgRWYsdGhpcy5sZW5ndGg9MDtjb25zdCB0PWtnKCksbj16Zi5wcm90b3R5cGU7blt0XXx8KG5bdF09QWYpfW1hcCh0KXtyZXR1cm4gdGhpcy5fcmVzdWx0cy5tYXAodCl9ZmlsdGVyKHQpe3JldHVybiB0aGlzLl9yZXN1bHRzLmZpbHRlcih0KX1maW5kKHQpe3JldHVybiB0aGlzLl9yZXN1bHRzLmZpbmQodCl9cmVkdWNlKHQsbil7cmV0dXJuIHRoaXMuX3Jlc3VsdHMucmVkdWNlKHQsbil9Zm9yRWFjaCh0KXt0aGlzLl9yZXN1bHRzLmZvckVhY2godCl9c29tZSh0KXtyZXR1cm4gdGhpcy5fcmVzdWx0cy5zb21lKHQpfXRvQXJyYXkoKXtyZXR1cm4gdGhpcy5fcmVzdWx0cy5zbGljZSgpfXRvU3RyaW5nKCl7cmV0dXJuIHRoaXMuX3Jlc3VsdHMudG9TdHJpbmcoKX1yZXNldCh0KXt0aGlzLl9yZXN1bHRzPWFvKHQpLHRoaXMuZGlydHk9ITEsdGhpcy5sZW5ndGg9dGhpcy5fcmVzdWx0cy5sZW5ndGgsdGhpcy5sYXN0PXRoaXMuX3Jlc3VsdHNbdGhpcy5sZW5ndGgtMV0sdGhpcy5maXJzdD10aGlzLl9yZXN1bHRzWzBdfW5vdGlmeU9uQ2hhbmdlcygpe3RoaXMuY2hhbmdlcy5lbWl0KHRoaXMpfXNldERpcnR5KCl7dGhpcy5kaXJ0eT0hMH1kZXN0cm95KCl7dGhpcy5jaGFuZ2VzLmNvbXBsZXRlKCksdGhpcy5jaGFuZ2VzLnVuc3Vic2NyaWJlKCl9fWNsYXNzIFJme2NvbnN0cnVjdG9yKHQpe3RoaXMucXVlcnlMaXN0PXQsdGhpcy5tYXRjaGVzPW51bGx9Y2xvbmUoKXtyZXR1cm4gbmV3IFJmKHRoaXMucXVlcnlMaXN0KX1zZXREaXJ0eSgpe3RoaXMucXVlcnlMaXN0LnNldERpcnR5KCl9fWNsYXNzIFRme2NvbnN0cnVjdG9yKHQ9W10pe3RoaXMucXVlcmllcz10fWNyZWF0ZUVtYmVkZGVkVmlldyh0KXtjb25zdCBuPXQucXVlcmllcztpZihudWxsIT09bil7Y29uc3QgZT1udWxsIT09dC5jb250ZW50UXVlcmllcz90LmNvbnRlbnRRdWVyaWVzWzBdOm4ubGVuZ3RoLGE9W107Zm9yKGxldCB0PTA7dDxlO3QrKyl7Y29uc3QgZT1uLmdldEJ5SW5kZXgodCk7YS5wdXNoKHRoaXMucXVlcmllc1tlLmluZGV4SW5EZWNsYXJhdGlvblZpZXddLmNsb25lKCkpfXJldHVybiBuZXcgVGYoYSl9cmV0dXJuIG51bGx9aW5zZXJ0Vmlldyh0KXt0aGlzLmRpcnR5UXVlcmllc1dpdGhNYXRjaGVzKHQpfWRldGFjaFZpZXcodCl7dGhpcy5kaXJ0eVF1ZXJpZXNXaXRoTWF0Y2hlcyh0KX1kaXJ0eVF1ZXJpZXNXaXRoTWF0Y2hlcyh0KXtmb3IobGV0IG49MDtuPHRoaXMucXVlcmllcy5sZW5ndGg7bisrKW51bGwhPT1RZih0LG4pLm1hdGNoZXMmJnRoaXMucXVlcmllc1tuXS5zZXREaXJ0eSgpfX1jbGFzcyBEZntjb25zdHJ1Y3Rvcih0LG4sZSxhPW51bGwpe3RoaXMucHJlZGljYXRlPXQsdGhpcy5kZXNjZW5kYW50cz1uLHRoaXMuaXNTdGF0aWM9ZSx0aGlzLnJlYWQ9YX19Y2xhc3MgSWZ7Y29uc3RydWN0b3IodD1bXSl7dGhpcy5xdWVyaWVzPXR9ZWxlbWVudFN0YXJ0KHQsbil7bmdEZXZNb2RlJiZYbyh0LCJRdWVyaWVzIHNob3VsZCBjb2xsZWN0IHJlc3VsdHMgb24gdGhlIGZpcnN0IHRlbXBsYXRlIHBhc3Mgb25seSIpO2ZvcihsZXQgZT0wO2U8dGhpcy5xdWVyaWVzLmxlbmd0aDtlKyspdGhpcy5xdWVyaWVzW2VdLmVsZW1lbnRTdGFydCh0LG4pfWVsZW1lbnRFbmQodCl7Zm9yKGxldCBuPTA7bjx0aGlzLnF1ZXJpZXMubGVuZ3RoO24rKyl0aGlzLnF1ZXJpZXNbbl0uZWxlbWVudEVuZCh0KX1lbWJlZGRlZFRWaWV3KHQpe2xldCBuPW51bGw7Zm9yKGxldCBlPTA7ZTx0aGlzLmxlbmd0aDtlKyspe2NvbnN0IGE9bnVsbCE9PW4/bi5sZW5ndGg6MCxvPXRoaXMuZ2V0QnlJbmRleChlKS5lbWJlZGRlZFRWaWV3KHQsYSk7byYmKG8uaW5kZXhJbkRlY2xhcmF0aW9uVmlldz1lLG51bGwhPT1uP24ucHVzaChvKTpuPVtvXSl9cmV0dXJuIG51bGwhPT1uP25ldyBJZihuKTpudWxsfXRlbXBsYXRlKHQsbil7bmdEZXZNb2RlJiZYbyh0LCJRdWVyaWVzIHNob3VsZCBjb2xsZWN0IHJlc3VsdHMgb24gdGhlIGZpcnN0IHRlbXBsYXRlIHBhc3Mgb25seSIpO2ZvcihsZXQgZT0wO2U8dGhpcy5xdWVyaWVzLmxlbmd0aDtlKyspdGhpcy5xdWVyaWVzW2VdLnRlbXBsYXRlKHQsbil9Z2V0QnlJbmRleCh0KXtyZXR1cm4gbmdEZXZNb2RlJiZOYSh0aGlzLnF1ZXJpZXMsdCksdGhpcy5xdWVyaWVzW3RdfWdldCBsZW5ndGgoKXtyZXR1cm4gdGhpcy5xdWVyaWVzLmxlbmd0aH10cmFjayh0KXt0aGlzLnF1ZXJpZXMucHVzaCh0KX19Y2xhc3MgTmZ7Y29uc3RydWN0b3IodCxuPS0xKXt0aGlzLm1ldGFkYXRhPXQsdGhpcy5tYXRjaGVzPW51bGwsdGhpcy5pbmRleEluRGVjbGFyYXRpb25WaWV3PS0xLHRoaXMuY3Jvc3Nlc05nVGVtcGxhdGU9ITEsdGhpcy5fYXBwbGllc1RvTmV4dE5vZGU9ITAsdGhpcy5fZGVjbGFyYXRpb25Ob2RlSW5kZXg9bn1lbGVtZW50U3RhcnQodCxuKXt0aGlzLmlzQXBwbHlpbmdUb05vZGUobikmJnRoaXMubWF0Y2hUTm9kZSh0LG4pfWVsZW1lbnRFbmQodCl7dGhpcy5fZGVjbGFyYXRpb25Ob2RlSW5kZXg9PT10LmluZGV4JiYodGhpcy5fYXBwbGllc1RvTmV4dE5vZGU9ITEpfXRlbXBsYXRlKHQsbil7dGhpcy5lbGVtZW50U3RhcnQodCxuKX1lbWJlZGRlZFRWaWV3KHQsbil7cmV0dXJuIHRoaXMuaXNBcHBseWluZ1RvTm9kZSh0KT8odGhpcy5jcm9zc2VzTmdUZW1wbGF0ZT0hMCx0aGlzLmFkZE1hdGNoKC10LmluZGV4LG4pLG5ldyBOZih0aGlzLm1ldGFkYXRhKSk6bnVsbH1pc0FwcGx5aW5nVG9Ob2RlKHQpe2lmKHRoaXMuX2FwcGxpZXNUb05leHROb2RlJiYhMT09PXRoaXMubWV0YWRhdGEuZGVzY2VuZGFudHMpe2NvbnN0IG49dGhpcy5fZGVjbGFyYXRpb25Ob2RlSW5kZXg7bGV0IGU9dC5wYXJlbnQ7Zm9yKDtudWxsIT09ZSYmMz09PWUudHlwZSYmZS5pbmRleCE9PW47KWU9ZS5wYXJlbnQ7cmV0dXJuIG49PT0obnVsbCE9PWU/ZS5pbmRleDotMSl9cmV0dXJuIHRoaXMuX2FwcGxpZXNUb05leHROb2RlfW1hdGNoVE5vZGUodCxuKXtjb25zdCBlPXRoaXMubWV0YWRhdGEucHJlZGljYXRlO2lmKEFycmF5LmlzQXJyYXkoZSkpZm9yKGxldCBhPTA7YTxlLmxlbmd0aDthKyspe2NvbnN0IG89ZVthXTt0aGlzLm1hdGNoVE5vZGVXaXRoUmVhZE9wdGlvbih0LG4sRmYobixvKSksdGhpcy5tYXRjaFROb2RlV2l0aFJlYWRPcHRpb24odCxuLFppKG4sdCxvLCExLCExKSl9ZWxzZSBlPT09SnU/MD09PW4udHlwZSYmdGhpcy5tYXRjaFROb2RlV2l0aFJlYWRPcHRpb24odCxuLC0xKTp0aGlzLm1hdGNoVE5vZGVXaXRoUmVhZE9wdGlvbih0LG4sWmkobix0LGUsITEsITEpKX1tYXRjaFROb2RlV2l0aFJlYWRPcHRpb24odCxuLGUpe2lmKG51bGwhPT1lKXtjb25zdCBhPXRoaXMubWV0YWRhdGEucmVhZDtpZihudWxsIT09YSlpZihhPT09eHV8fGE9PT0kdXx8YT09PUp1JiYwPT09bi50eXBlKXRoaXMuYWRkTWF0Y2gobi5pbmRleCwtMik7ZWxzZXtjb25zdCBlPVppKG4sdCxhLCExLCExKTtudWxsIT09ZSYmdGhpcy5hZGRNYXRjaChuLmluZGV4LGUpfWVsc2UgdGhpcy5hZGRNYXRjaChuLmluZGV4LGUpfX1hZGRNYXRjaCh0LG4pe251bGw9PT10aGlzLm1hdGNoZXM/dGhpcy5tYXRjaGVzPVt0LG5dOnRoaXMubWF0Y2hlcy5wdXNoKHQsbil9fWZ1bmN0aW9uIEZmKHQsbil7Y29uc3QgZT10LmxvY2FsTmFtZXM7aWYobnVsbCE9PWUpZm9yKGxldCB0PTA7dDxlLmxlbmd0aDt0Kz0yKWlmKGVbdF09PT1uKXJldHVybiBlW3QrMV07cmV0dXJuIG51bGx9ZnVuY3Rpb24gTGYodCxuLGUsYSl7cmV0dXJuLTE9PT1lPyhmdW5jdGlvbiBvKHQsbil7cmV0dXJuIDI9PT10LnR5cGV8fDM9PT10LnR5cGU/Rm0oeHUsdCxuKTowPT09dC50eXBlP0xtKEp1LHh1LHQsbik6bnVsbH0pKG4sdCk6LTI9PT1lPyhmdW5jdGlvbiByKHQsbixlKXtyZXR1cm4gZT09PXh1P0ZtKHh1LG4sdCk6ZT09PUp1P0xtKEp1LHh1LG4sdCk6ZT09PSR1PyhuZ0Rldk1vZGUmJndpKG4sWzIsMCwzXSksSG0oJHUseHUsbix0KSk6dm9pZChuZ0Rldk1vZGUmJkRhKGBTcGVjaWFsIHRva2VuIHRvIHJlYWQgc2hvdWxkIGJlIG9uZSBvZiBFbGVtZW50UmVmLCBUZW1wbGF0ZVJlZiBvciBWaWV3Q29udGFpbmVyUmVmIGJ1dCBnb3QgJHt0YShlKX0uYCkpfSkodCxuLGEpOlhpKHQsdFsxXSxlLG4pfWZ1bmN0aW9uIEhmKHQsbixlLGEpe2NvbnN0IG89blsxOV0ucXVlcmllc1thXTtpZihudWxsPT09by5tYXRjaGVzKXtjb25zdCBhPXQuZGF0YSxyPWUubWF0Y2hlcyxpPVtdO2ZvcihsZXQgdD0wO3Q8ci5sZW5ndGg7dCs9Mil7Y29uc3Qgbz1yW3RdO288MD9pLnB1c2gobnVsbCk6KG5nRGV2TW9kZSYmTmEoYSxvKSxpLnB1c2goTGYobixhW29dLHJbdCsxXSxlLm1ldGFkYXRhLnJlYWQpKSl9by5tYXRjaGVzPWl9cmV0dXJuIG8ubWF0Y2hlc31mdW5jdGlvbiBCZih0LG4sZSxhKXtjb25zdCBvPXQucXVlcmllcy5nZXRCeUluZGV4KGUpLHI9by5tYXRjaGVzO2lmKG51bGwhPT1yKXtjb25zdCBpPUhmKHQsbixvLGUpO2ZvcihsZXQgdD0wO3Q8ci5sZW5ndGg7dCs9Mil7Y29uc3QgZT1yW3RdO2lmKGU+MClhLnB1c2goaVt0LzJdKTtlbHNle2NvbnN0IG89clt0KzFdLGk9blstZV07bmdEZXZNb2RlJiZZbyhpKTtmb3IobGV0IHQ9SW87dDxpLmxlbmd0aDt0Kyspe2NvbnN0IG49aVt0XTtuWzE3XT09PW5bM10mJkJmKG5bMV0sbixvLGEpfWlmKG51bGwhPT1pWzldKXtjb25zdCB0PWlbOV07Zm9yKGxldCBuPTA7bjx0Lmxlbmd0aDtuKyspe2NvbnN0IGU9dFtuXTtCZihlWzFdLGUsbyxhKX19fX19cmV0dXJuIGF9ZnVuY3Rpb24gVmYodCl7Y29uc3Qgbj1CcigpLGU9VnIoKSxhPWFpKCk7b2koYSsxKTtjb25zdCBvPVFmKGUsYSk7aWYodC5kaXJ0eSYmVHIobik9PT1vLm1ldGFkYXRhLmlzU3RhdGljKXtpZihudWxsPT09by5tYXRjaGVzKXQucmVzZXQoW10pO2Vsc2V7Y29uc3Qgcj1vLmNyb3NzZXNOZ1RlbXBsYXRlP0JmKGUsbixhLFtdKTpIZihlLG4sbyxhKTt0LnJlc2V0KHIpLHQubm90aWZ5T25DaGFuZ2VzKCl9cmV0dXJuITB9cmV0dXJuITF9ZnVuY3Rpb24gamYodCxuLGUpe1dmKFZyKCksQnIoKSx0LG4sZSwhMCl9ZnVuY3Rpb24gVWYodCxuLGUpe1dmKFZyKCksQnIoKSx0LG4sZSwhMSl9ZnVuY3Rpb24gV2YodCxuLGUsYSxvLHIpe3QuZmlyc3RDcmVhdGVQYXNzJiYoSmYodCxuZXcgRGYoZSxhLHIsbyksLTEpLHImJih0LnN0YXRpY1ZpZXdRdWVyaWVzPSEwKSksWGYodCxuKX1mdW5jdGlvbiBHZih0LG4sZSxhKXtxZihWcigpLEJyKCksbixlLGEsITEsVXIoKSx0KX1mdW5jdGlvbiBZZih0LG4sZSxhKXtxZihWcigpLEJyKCksbixlLGEsITAsVXIoKSx0KX1mdW5jdGlvbiBxZih0LG4sZSxhLG8scixpLGMpe3QuZmlyc3RDcmVhdGVQYXNzJiYoSmYodCxuZXcgRGYoZSxhLHIsbyksaS5pbmRleCksKGZ1bmN0aW9uIHModCxuKXtjb25zdCBlPXQuY29udGVudFF1ZXJpZXN8fCh0LmNvbnRlbnRRdWVyaWVzPVtdKTtuIT09KHQuY29udGVudFF1ZXJpZXMubGVuZ3RoP2VbZS5sZW5ndGgtMV06LTEpJiZlLnB1c2godC5xdWVyaWVzLmxlbmd0aC0xLG4pfSkodCxjKSxyJiYodC5zdGF0aWNDb250ZW50UXVlcmllcz0hMCkpLFhmKHQsbil9ZnVuY3Rpb24gWmYoKXtyZXR1cm4oZnVuY3Rpb24gdChuLGUpe3JldHVybiBuZ0Rldk1vZGUmJlRhKG5bMTldLCJMUXVlcmllcyBzaG91bGQgYmUgZGVmaW5lZCB3aGVuIHRyeWluZyB0byBsb2FkIGEgcXVlcnkiKSxuZ0Rldk1vZGUmJk5hKG5bMTldLnF1ZXJpZXMsZSksblsxOV0ucXVlcmllc1tlXS5xdWVyeUxpc3R9KShCcigpLGFpKCkpfWZ1bmN0aW9uIFhmKHQsbil7Y29uc3QgZT1uZXcgemY7a2wodCxuLGUsZS5kZXN0cm95KSxudWxsPT09blsxOV0mJihuWzE5XT1uZXcgVGYpLG5bMTldLnF1ZXJpZXMucHVzaChuZXcgUmYoZSkpfWZ1bmN0aW9uIEpmKHQsbixlKXtudWxsPT09dC5xdWVyaWVzJiYodC5xdWVyaWVzPW5ldyBJZiksdC5xdWVyaWVzLnRyYWNrKG5ldyBOZihuLGUpKX1mdW5jdGlvbiBRZih0LG4pe3JldHVybiBuZ0Rldk1vZGUmJlRhKHQucXVlcmllcywiVFF1ZXJpZXMgbXVzdCBiZSBkZWZpbmVkIHRvIHJldHJpZXZlIGEgVFF1ZXJ5IiksdC5xdWVyaWVzLmdldEJ5SW5kZXgobil9Ci8qKgogICAgICogQGxpY2Vuc2UKICAgICAqIENvcHlyaWdodCBHb29nbGUgTExDIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCiAgICAgKgogICAgICogVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYW4gTUlULXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKICAgICAqIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUgYXQgaHR0cHM6Ly9hbmd1bGFyLmlvL2xpY2Vuc2UKICAgICAqL2Z1bmN0aW9uIEtmKHQsbil7cmV0dXJuIExtKEp1LHh1LHQsbil9ZnVuY3Rpb24gJGYodD1WZS5EZWZhdWx0KXtjb25zdCBuPUJtKCEwKTtpZihudWxsIT1ufHx0JlZlLk9wdGlvbmFsKXJldHVybiBuO2RyKCJDaGFuZ2VEZXRlY3RvclJlZiIpfQovKioKICAgICAqIEBsaWNlbnNlCiAgICAgKiBDb3B5cmlnaHQgR29vZ2xlIExMQyBBbGwgUmlnaHRzIFJlc2VydmVkLgogICAgICoKICAgICAqIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGFuIE1JVC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCiAgICAgKiBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlIGF0IGh0dHBzOi8vYW5ndWxhci5pby9saWNlbnNlCiAgICAgKi8KLyoqCiAgICAgKiBAbGljZW5zZQogICAgICogQ29weXJpZ2h0IEdvb2dsZSBMTEMgQWxsIFJpZ2h0cyBSZXNlcnZlZC4KICAgICAqCiAgICAgKiBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhbiBNSVQtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQogICAgICogZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZSBhdCBodHRwczovL2FuZ3VsYXIuaW8vbGljZW5zZQogICAgICovY29uc3QgdGg9eyLJtcm1YXR0cmlidXRlIjpOZywiybXJtWF0dHJpYnV0ZUludGVycG9sYXRlMSI6ZnVuY3Rpb24gdChuLGUsYSxvLHIsaSl7Y29uc3QgYz1CcigpLHM9TGcoYyxlLGEsbyk7aWYocyE9PU9zKXtjb25zdCB0PWJpKCk7amwodCxjLG4scyxyLGkpLG5nRGV2TW9kZSYmZW0oVnIoKS5kYXRhLHQsImF0dHIuIituLEpyKCktMSxlLG8pfXJldHVybiB0fSwiybXJtWF0dHJpYnV0ZUludGVycG9sYXRlMiI6ZnVuY3Rpb24gdChuLGUsYSxvLHIsaSxjLHMpe2NvbnN0IGw9QnIoKSxtPUhnKGwsZSxhLG8scixpKTtpZihtIT09T3Mpe2NvbnN0IHQ9YmkoKTtqbCh0LGwsbixtLGMscyksbmdEZXZNb2RlJiZlbShWcigpLmRhdGEsdCwiYXR0ci4iK24sSnIoKS0yLGUsbyxpKX1yZXR1cm4gdH0sIsm1ybVhdHRyaWJ1dGVJbnRlcnBvbGF0ZTMiOmZ1bmN0aW9uIHQobixlLGEsbyxyLGksYyxzLGwsbSl7Y29uc3QgZD1CcigpLGc9QmcoZCxlLGEsbyxyLGksYyxzKTtpZihnIT09T3Mpe2NvbnN0IHQ9YmkoKTtqbCh0LGQsbixnLGwsbSksbmdEZXZNb2RlJiZlbShWcigpLmRhdGEsdCwiYXR0ci4iK24sSnIoKS0zLGUsbyxpLHMpfXJldHVybiB0fSwiybXJtWF0dHJpYnV0ZUludGVycG9sYXRlNCI6ZnVuY3Rpb24gdChuLGUsYSxvLHIsaSxjLHMsbCxtLGQsZyl7Y29uc3QgcD1CcigpLGI9VmcocCxlLGEsbyxyLGksYyxzLGwsbSk7aWYoYiE9PU9zKXtjb25zdCB0PWJpKCk7amwodCxwLG4sYixkLGcpLG5nRGV2TW9kZSYmZW0oVnIoKS5kYXRhLHQsImF0dHIuIituLEpyKCktNCxlLG8saSxzLG0pfXJldHVybiB0fSwiybXJtWF0dHJpYnV0ZUludGVycG9sYXRlNSI6ZnVuY3Rpb24gdChuLGUsYSxvLHIsaSxjLHMsbCxtLGQsZyxwLGIpe2NvbnN0IHU9QnIoKSxmPWpnKHUsZSxhLG8scixpLGMscyxsLG0sZCxnKTtpZihmIT09T3Mpe2NvbnN0IHQ9YmkoKTtqbCh0LHUsbixmLHAsYiksbmdEZXZNb2RlJiZlbShWcigpLmRhdGEsdCwiYXR0ci4iK24sSnIoKS01LGUsbyxpLHMsbSxnKX1yZXR1cm4gdH0sIsm1ybVhdHRyaWJ1dGVJbnRlcnBvbGF0ZTYiOmZ1bmN0aW9uIHQobixlLGEsbyxyLGksYyxzLGwsbSxkLGcscCxiLHUsZil7Y29uc3QgaD1CcigpLF89VWcoaCxlLGEsbyxyLGksYyxzLGwsbSxkLGcscCxiKTtpZihfIT09T3Mpe2NvbnN0IHQ9YmkoKTtqbCh0LGgsbixfLHUsZiksbmdEZXZNb2RlJiZlbShWcigpLmRhdGEsdCwiYXR0ci4iK24sSnIoKS02LGUsbyxpLHMsbSxnLGIpfXJldHVybiB0fSwiybXJtWF0dHJpYnV0ZUludGVycG9sYXRlNyI6ZnVuY3Rpb24gdChuLGUsYSxvLHIsaSxjLHMsbCxtLGQsZyxwLGIsdSxmLGgsXyl7Y29uc3QgQz1CcigpLE09V2coQyxlLGEsbyxyLGksYyxzLGwsbSxkLGcscCxiLHUsZik7aWYoTSE9PU9zKXtjb25zdCB0PWJpKCk7amwodCxDLG4sTSxoLF8pLG5nRGV2TW9kZSYmZW0oVnIoKS5kYXRhLHQsImF0dHIuIituLEpyKCktNyxlLG8saSxzLG0sZyxiLGYpfXJldHVybiB0fSwiybXJtWF0dHJpYnV0ZUludGVycG9sYXRlOCI6ZnVuY3Rpb24gdChuLGUsYSxvLHIsaSxjLHMsbCxtLGQsZyxwLGIsdSxmLGgsXyxDLE0pe2NvbnN0IE89QnIoKSxQPUdnKE8sZSxhLG8scixpLGMscyxsLG0sZCxnLHAsYix1LGYsaCxfKTtpZihQIT09T3Mpe2NvbnN0IHQ9YmkoKTtqbCh0LE8sbixQLEMsTSksbmdEZXZNb2RlJiZlbShWcigpLmRhdGEsdCwiYXR0ci4iK24sSnIoKS04LGUsbyxpLHMsbSxnLGIsZixfKX1yZXR1cm4gdH0sIsm1ybVhdHRyaWJ1dGVJbnRlcnBvbGF0ZVYiOmZ1bmN0aW9uIHQobixlLGEsbyl7Y29uc3Qgcj1CcigpLGk9RmcocixlKTtpZihpIT09T3Mpe2NvbnN0IHQ9YmkoKTtpZihqbCh0LHIsbixpLGEsbyksbmdEZXZNb2RlKXtjb25zdCBhPVtlWzBdXTtmb3IobGV0IHQ9Mjt0PGUubGVuZ3RoO3QrPTIpYS5wdXNoKGVbdF0pO2VtKFZyKCkuZGF0YSx0LCJhdHRyLiIrbixKcigpLWEubGVuZ3RoKzEsLi4uYSl9fXJldHVybiB0fSwiybXJtWRlZmluZUNvbXBvbmVudCI6X28sIsm1ybVkZWZpbmVEaXJlY3RpdmUiOnZvLCLJtcm1ZGVmaW5lSW5qZWN0YWJsZSI6V2UsIsm1ybVkZWZpbmVJbmplY3RvciI6R2UsIsm1ybVkZWZpbmVOZ01vZHVsZSI6eG8sIsm1ybVkZWZpbmVQaXBlIjp3bywiybXJtWRpcmVjdGl2ZUluamVjdCI6WmcsIsm1ybVnZXRGYWN0b3J5T2YiOiRpLCLJtcm1Z2V0SW5oZXJpdGVkRmFjdG9yeSI6dGMsIsm1ybVpbmplY3QiOlphLCLJtcm1aW5qZWN0QXR0cmlidXRlIjpYZywiybXJtWludmFsaWRGYWN0b3J5IjpmdW5jdGlvbiBuaCgpe2NvbnN0IHQ9bmdEZXZNb2RlPyJUaGlzIGNvbnN0cnVjdG9yIHdhcyBub3QgY29tcGF0aWJsZSB3aXRoIERlcGVuZGVuY3kgSW5qZWN0aW9uLiI6ImludmFsaWQiO3Rocm93IG5ldyBFcnJvcih0KX0sIsm1ybVpbnZhbGlkRmFjdG9yeURlcCI6WGEsIsm1ybVpbmplY3RQaXBlQ2hhbmdlRGV0ZWN0b3JSZWYiOiRmLCLJtcm1dGVtcGxhdGVSZWZFeHRyYWN0b3IiOktmLCLJtcm1TmdPbkNoYW5nZXNGZWF0dXJlIjpwciwiybXJtVByb3ZpZGVyc0ZlYXR1cmUiOk11LCLJtcm1Q29weURlZmluaXRpb25GZWF0dXJlIjpmdW5jdGlvbiBlaCh0KXtsZXQgbixlPWZnKHQudHlwZSk7bj1Wbyh0KT9lLsm1Y21wOmUuybVkaXI7Y29uc3QgYT10O2Zvcihjb25zdCB0IG9mIFBnKWFbdF09blt0XTtpZihWbyhuKSlmb3IoY29uc3QgdCBvZiB4ZylhW3RdPW5bdF19LCLJtcm1SW5oZXJpdERlZmluaXRpb25GZWF0dXJlIjpoZywiybXJtW5leHRDb250ZXh0IjpncCwiybXJtW5hbWVzcGFjZUhUTUwiOmZpLCLJtcm1bmFtZXNwYWNlTWF0aE1MIjpmdW5jdGlvbiBhaCgpe0xyLmxGcmFtZS5jdXJyZW50TmFtZXNwYWNlPUNyfSwiybXJtW5hbWVzcGFjZVNWRyI6dWksIsm1ybVlbmFibGVCaW5kaW5ncyI6ZnVuY3Rpb24gb2goKXtMci5iaW5kaW5nc0VuYWJsZWQ9ITB9LCLJtcm1ZGlzYWJsZUJpbmRpbmdzIjpmdW5jdGlvbiByaCgpe0xyLmJpbmRpbmdzRW5hYmxlZD0hMX0sIsm1ybVlbGVtZW50U3RhcnQiOktnLCLJtcm1ZWxlbWVudEVuZCI6JGcsIsm1ybVlbGVtZW50Ijp0cCwiybXJtWVsZW1lbnRDb250YWluZXJTdGFydCI6bnAsIsm1ybVlbGVtZW50Q29udGFpbmVyRW5kIjplcCwiybXJtWVsZW1lbnRDb250YWluZXIiOmFwLCLJtcm1cHVyZUZ1bmN0aW9uMCI6YmYsIsm1ybVwdXJlRnVuY3Rpb24xIjp1ZiwiybXJtXB1cmVGdW5jdGlvbjIiOmZmLCLJtcm1cHVyZUZ1bmN0aW9uMyI6aGYsIsm1ybVwdXJlRnVuY3Rpb240IjpmdW5jdGlvbiBpaCh0LG4sZSxhLG8scixpKXtyZXR1cm4gUGYoQnIoKSxYcigpLHQsbixlLGEsbyxyLGkpfSwiybXJtXB1cmVGdW5jdGlvbjUiOmZ1bmN0aW9uIGNoKHQsbixlLGEsbyxyLGksYyl7Y29uc3Qgcz1YcigpK3QsbD1CcigpLG09SWcobCxzLGUsYSxvLHIpO3JldHVybiBSZyhsLHMrNCxpKXx8bT9BZyhsLHMrNSxjP24uY2FsbChjLGUsYSxvLHIsaSk6bihlLGEsbyxyLGkpKTp6ZyhsLHMrNSl9LCLJtcm1cHVyZUZ1bmN0aW9uNiI6ZnVuY3Rpb24gc2godCxuLGUsYSxvLHIsaSxjLHMpe2NvbnN0IGw9WHIoKSt0LG09QnIoKSxkPUlnKG0sbCxlLGEsbyxyKTtyZXR1cm4gVGcobSxsKzQsaSxjKXx8ZD9BZyhtLGwrNixzP24uY2FsbChzLGUsYSxvLHIsaSxjKTpuKGUsYSxvLHIsaSxjKSk6emcobSxsKzYpfSwiybXJtXB1cmVGdW5jdGlvbjciOmZ1bmN0aW9uIGxoKHQsbixlLGEsbyxyLGksYyxzLGwpe2NvbnN0IG09WHIoKSt0LGQ9QnIoKTtsZXQgZz1JZyhkLG0sZSxhLG8scik7cmV0dXJuIERnKGQsbSs0LGksYyxzKXx8Zz9BZyhkLG0rNyxsP24uY2FsbChsLGUsYSxvLHIsaSxjLHMpOm4oZSxhLG8scixpLGMscykpOnpnKGQsbSs3KX0sIsm1ybVwdXJlRnVuY3Rpb244IjpmdW5jdGlvbiBtaCh0LG4sZSxhLG8scixpLGMscyxsLG0pe2NvbnN0IGQ9WHIoKSt0LGc9QnIoKSxwPUlnKGcsZCxlLGEsbyxyKTtyZXR1cm4gSWcoZyxkKzQsaSxjLHMsbCl8fHA/QWcoZyxkKzgsbT9uLmNhbGwobSxlLGEsbyxyLGksYyxzLGwpOm4oZSxhLG8scixpLGMscyxsKSk6emcoZyxkKzgpfSwiybXJtXB1cmVGdW5jdGlvblYiOmZ1bmN0aW9uIGRoKHQsbixlLGEpe3JldHVybiB4ZihCcigpLFhyKCksdCxuLGUsYSl9LCLJtcm1Z2V0Q3VycmVudFZpZXciOm9wLCLJtcm1cmVzdG9yZVZpZXciOmpyLCLJtcm1bGlzdGVuZXIiOmNwLCLJtcm1cHJvamVjdGlvbiI6aHAsIsm1ybVzeW50aGV0aWNIb3N0UHJvcGVydHkiOmFiLCLJtcm1c3ludGhldGljSG9zdExpc3RlbmVyIjpzcCwiybXJtXBpcGVCaW5kMSI6a2YsIsm1ybVwaXBlQmluZDIiOnZmLCLJtcm1cGlwZUJpbmQzIjpmdW5jdGlvbiBnaCh0LG4sZSxhLG8pe2NvbnN0IHI9QnIoKSxpPUVyKHIsdCk7cmV0dXJuIFNmKHIsd2Yocix0KT9PZihyLFhyKCksbixpLnRyYW5zZm9ybSxlLGEsbyxpKTppLnRyYW5zZm9ybShlLGEsbykpfSwiybXJtXBpcGVCaW5kNCI6ZnVuY3Rpb24gcGgodCxuLGUsYSxvLHIpe2NvbnN0IGk9QnIoKSxjPUVyKGksdCk7cmV0dXJuIFNmKGksd2YoaSx0KT9QZihpLFhyKCksbixjLnRyYW5zZm9ybSxlLGEsbyxyLGMpOmMudHJhbnNmb3JtKGUsYSxvLHIpKX0sIsm1ybVwaXBlQmluZFYiOmZ1bmN0aW9uIGJoKHQsbixlKXtjb25zdCBhPUJyKCksbz1FcihhLHQpO3JldHVybiBTZihhLHdmKGEsdCk/eGYoYSxYcigpLG4sby50cmFuc2Zvcm0sZSxvKTpvLnRyYW5zZm9ybS5hcHBseShvLGUpKX0sIsm1ybVwcm9qZWN0aW9uRGVmIjpicCwiybXJtWhvc3RQcm9wZXJ0eSI6ZWIsIsm1ybVwcm9wZXJ0eSI6SmcsIsm1ybVwcm9wZXJ0eUludGVycG9sYXRlIjpfcCwiybXJtXByb3BlcnR5SW50ZXJwb2xhdGUxIjpDcCwiybXJtXByb3BlcnR5SW50ZXJwb2xhdGUyIjpmdW5jdGlvbiB0KG4sZSxhLG8scixpLGMpe2NvbnN0IHM9QnIoKSxsPUhnKHMsZSxhLG8scixpKTtpZihsIT09T3Mpe2NvbnN0IHQ9VnIoKSxhPWJpKCk7d2wodCxhLHMsbixsLHNbMTFdLGMsITEpLG5nRGV2TW9kZSYmZW0odC5kYXRhLGEsbixKcigpLTIsZSxvLGkpfXJldHVybiB0fSwiybXJtXByb3BlcnR5SW50ZXJwb2xhdGUzIjpmdW5jdGlvbiB0KG4sZSxhLG8scixpLGMscyxsKXtjb25zdCBtPUJyKCksZD1CZyhtLGUsYSxvLHIsaSxjLHMpO2lmKGQhPT1Pcyl7Y29uc3QgdD1WcigpLGE9YmkoKTt3bCh0LGEsbSxuLGQsbVsxMV0sbCwhMSksbmdEZXZNb2RlJiZlbSh0LmRhdGEsYSxuLEpyKCktMyxlLG8saSxzKX1yZXR1cm4gdH0sIsm1ybVwcm9wZXJ0eUludGVycG9sYXRlNCI6ZnVuY3Rpb24gdChuLGUsYSxvLHIsaSxjLHMsbCxtLGQpe2NvbnN0IGc9QnIoKSxwPVZnKGcsZSxhLG8scixpLGMscyxsLG0pO2lmKHAhPT1Pcyl7Y29uc3QgdD1WcigpLGE9YmkoKTt3bCh0LGEsZyxuLHAsZ1sxMV0sZCwhMSksbmdEZXZNb2RlJiZlbSh0LmRhdGEsYSxuLEpyKCktNCxlLG8saSxzLG0pfXJldHVybiB0fSwiybXJtXByb3BlcnR5SW50ZXJwb2xhdGU1IjpmdW5jdGlvbiB0KG4sZSxhLG8scixpLGMscyxsLG0sZCxnLHApe2NvbnN0IGI9QnIoKSx1PWpnKGIsZSxhLG8scixpLGMscyxsLG0sZCxnKTtpZih1IT09T3Mpe2NvbnN0IHQ9VnIoKSxhPWJpKCk7d2wodCxhLGIsbix1LGJbMTFdLHAsITEpLG5nRGV2TW9kZSYmZW0odC5kYXRhLGEsbixKcigpLTUsZSxvLGkscyxtLGcpfXJldHVybiB0fSwiybXJtXByb3BlcnR5SW50ZXJwb2xhdGU2IjpmdW5jdGlvbiB0KG4sZSxhLG8scixpLGMscyxsLG0sZCxnLHAsYix1KXtjb25zdCBmPUJyKCksaD1VZyhmLGUsYSxvLHIsaSxjLHMsbCxtLGQsZyxwLGIpO2lmKGghPT1Pcyl7Y29uc3QgdD1WcigpLGE9YmkoKTt3bCh0LGEsZixuLGgsZlsxMV0sdSwhMSksbmdEZXZNb2RlJiZlbSh0LmRhdGEsYSxuLEpyKCktNixlLG8saSxzLG0sZyxiKX1yZXR1cm4gdH0sIsm1ybVwcm9wZXJ0eUludGVycG9sYXRlNyI6ZnVuY3Rpb24gdChuLGUsYSxvLHIsaSxjLHMsbCxtLGQsZyxwLGIsdSxmLGgpe2NvbnN0IF89QnIoKSxDPVdnKF8sZSxhLG8scixpLGMscyxsLG0sZCxnLHAsYix1LGYpO2lmKEMhPT1Pcyl7Y29uc3QgdD1WcigpLGE9YmkoKTt3bCh0LGEsXyxuLEMsX1sxMV0saCwhMSksbmdEZXZNb2RlJiZlbSh0LmRhdGEsYSxuLEpyKCktNyxlLG8saSxzLG0sZyxiLGYpfXJldHVybiB0fSwiybXJtXByb3BlcnR5SW50ZXJwb2xhdGU4IjpmdW5jdGlvbiB0KG4sZSxhLG8scixpLGMscyxsLG0sZCxnLHAsYix1LGYsaCxfLEMpe2NvbnN0IE09QnIoKSxPPUdnKE0sZSxhLG8scixpLGMscyxsLG0sZCxnLHAsYix1LGYsaCxfKTtpZihPIT09T3Mpe2NvbnN0IHQ9VnIoKSxhPWJpKCk7d2wodCxhLE0sbixPLE1bMTFdLEMsITEpLG5nRGV2TW9kZSYmZW0odC5kYXRhLGEsbixKcigpLTgsZSxvLGkscyxtLGcsYixmLF8pfXJldHVybiB0fSwiybXJtXByb3BlcnR5SW50ZXJwb2xhdGVWIjpmdW5jdGlvbiB0KG4sZSxhKXtjb25zdCBvPUJyKCkscj1GZyhvLGUpO2lmKHIhPT1Pcyl7Y29uc3QgdD1WcigpLGk9YmkoKTtpZih3bCh0LGksbyxuLHIsb1sxMV0sYSwhMSksbmdEZXZNb2RlKXtjb25zdCBhPVtlWzBdXTtmb3IobGV0IHQ9Mjt0PGUubGVuZ3RoO3QrPTIpYS5wdXNoKGVbdF0pO2VtKHQuZGF0YSxpLG4sSnIoKS1hLmxlbmd0aCsxLC4uLmEpfX1yZXR1cm4gdH0sIsm1ybVwaXBlIjp5ZiwiybXJtXF1ZXJ5UmVmcmVzaCI6VmYsIsm1ybV2aWV3UXVlcnkiOlVmLCLJtcm1c3RhdGljVmlld1F1ZXJ5IjpqZiwiybXJtXN0YXRpY0NvbnRlbnRRdWVyeSI6WWYsIsm1ybVsb2FkUXVlcnkiOlpmLCLJtcm1Y29udGVudFF1ZXJ5IjpHZiwiybXJtXJlZmVyZW5jZSI6cWcsIsm1ybVjbGFzc01hcCI6RnAsIsm1ybVjbGFzc01hcEludGVycG9sYXRlMSI6bmIsIsm1ybVjbGFzc01hcEludGVycG9sYXRlMiI6ZnVuY3Rpb24gdWgodCxuLGUsYSxvKXtCcChzbyxMcCxIZyhCcigpLHQsbixlLGEsbyksITApfSwiybXJtWNsYXNzTWFwSW50ZXJwb2xhdGUzIjpmdW5jdGlvbiBmaCh0LG4sZSxhLG8scixpKXtCcChzbyxMcCxCZyhCcigpLHQsbixlLGEsbyxyLGkpLCEwKX0sIsm1ybVjbGFzc01hcEludGVycG9sYXRlNCI6ZnVuY3Rpb24gaGgodCxuLGUsYSxvLHIsaSxjLHMpe0JwKHNvLExwLFZnKEJyKCksdCxuLGUsYSxvLHIsaSxjLHMpLCEwKX0sIsm1ybVjbGFzc01hcEludGVycG9sYXRlNSI6ZnVuY3Rpb24gX2godCxuLGUsYSxvLHIsaSxjLHMsbCxtKXtCcChzbyxMcCxqZyhCcigpLHQsbixlLGEsbyxyLGksYyxzLGwsbSksITApfSwiybXJtWNsYXNzTWFwSW50ZXJwb2xhdGU2IjpmdW5jdGlvbiBDaCh0LG4sZSxhLG8scixpLGMscyxsLG0sZCxnKXtCcChzbyxMcCxVZyhCcigpLHQsbixlLGEsbyxyLGksYyxzLGwsbSxkLGcpLCEwKX0sIsm1ybVjbGFzc01hcEludGVycG9sYXRlNyI6ZnVuY3Rpb24gTWgodCxuLGUsYSxvLHIsaSxjLHMsbCxtLGQsZyxwLGIpe0JwKHNvLExwLFdnKEJyKCksdCxuLGUsYSxvLHIsaSxjLHMsbCxtLGQsZyxwLGIpLCEwKX0sIsm1ybVjbGFzc01hcEludGVycG9sYXRlOCI6ZnVuY3Rpb24gT2godCxuLGUsYSxvLHIsaSxjLHMsbCxtLGQsZyxwLGIsdSxmKXtCcChzbyxMcCxHZyhCcigpLHQsbixlLGEsbyxyLGksYyxzLGwsbSxkLGcscCxiLHUsZiksITApfSwiybXJtWNsYXNzTWFwSW50ZXJwb2xhdGVWIjpmdW5jdGlvbiBQaCh0KXtCcChzbyxMcCxGZyhCcigpLHQpLCEwKX0KLyoqCiAgICAgKiBAbGljZW5zZQogICAgICogQ29weXJpZ2h0IEdvb2dsZSBMTEMgQWxsIFJpZ2h0cyBSZXNlcnZlZC4KICAgICAqCiAgICAgKiBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhbiBNSVQtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQogICAgICogZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZSBhdCBodHRwczovL2FuZ3VsYXIuaW8vbGljZW5zZQogICAgICovLCLJtcm1c3R5bGVNYXAiOklwLCLJtcm1c3R5bGVNYXBJbnRlcnBvbGF0ZTEiOmZ1bmN0aW9uIHhoKHQsbixlKXtJcChMZyhCcigpLHQsbixlKSl9LCLJtcm1c3R5bGVNYXBJbnRlcnBvbGF0ZTIiOmZ1bmN0aW9uIHloKHQsbixlLGEsbyl7SXAoSGcoQnIoKSx0LG4sZSxhLG8pKX0sIsm1ybVzdHlsZU1hcEludGVycG9sYXRlMyI6ZnVuY3Rpb24ga2godCxuLGUsYSxvLHIsaSl7SXAoQmcoQnIoKSx0LG4sZSxhLG8scixpKSl9LCLJtcm1c3R5bGVNYXBJbnRlcnBvbGF0ZTQiOmZ1bmN0aW9uIHZoKHQsbixlLGEsbyxyLGksYyxzKXtJcChWZyhCcigpLHQsbixlLGEsbyxyLGksYyxzKSl9LCLJtcm1c3R5bGVNYXBJbnRlcnBvbGF0ZTUiOmZ1bmN0aW9uIHdoKHQsbixlLGEsbyxyLGksYyxzLGwsbSl7SXAoamcoQnIoKSx0LG4sZSxhLG8scixpLGMscyxsLG0pKX0sIsm1ybVzdHlsZU1hcEludGVycG9sYXRlNiI6ZnVuY3Rpb24gU2godCxuLGUsYSxvLHIsaSxjLHMsbCxtLGQsZyl7SXAoVWcoQnIoKSx0LG4sZSxhLG8scixpLGMscyxsLG0sZCxnKSl9LCLJtcm1c3R5bGVNYXBJbnRlcnBvbGF0ZTciOmZ1bmN0aW9uIEVoKHQsbixlLGEsbyxyLGksYyxzLGwsbSxkLGcscCxiKXtJcChXZyhCcigpLHQsbixlLGEsbyxyLGksYyxzLGwsbSxkLGcscCxiKSl9LCLJtcm1c3R5bGVNYXBJbnRlcnBvbGF0ZTgiOmZ1bmN0aW9uIEFoKHQsbixlLGEsbyxyLGksYyxzLGwsbSxkLGcscCxiLHUsZil7SXAoR2coQnIoKSx0LG4sZSxhLG8scixpLGMscyxsLG0sZCxnLHAsYix1LGYpKX0sIsm1ybVzdHlsZU1hcEludGVycG9sYXRlViI6ZnVuY3Rpb24gemgodCl7SXAoRmcoQnIoKSx0KSl9Ci8qKgogICAgICogQGxpY2Vuc2UKICAgICAqIENvcHlyaWdodCBHb29nbGUgTExDIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCiAgICAgKgogICAgICogVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYW4gTUlULXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKICAgICAqIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUgYXQgaHR0cHM6Ly9hbmd1bGFyLmlvL2xpY2Vuc2UKICAgICAqLywiybXJtXN0eWxlUHJvcCI6VHAsIsm1ybVzdHlsZVByb3BJbnRlcnBvbGF0ZTEiOmZ1bmN0aW9uIHQobixlLGEsbyxyKXtyZXR1cm4gSHAobixMZyhCcigpLGUsYSxvKSxyLCExKSx0fSwiybXJtXN0eWxlUHJvcEludGVycG9sYXRlMiI6ZnVuY3Rpb24gdChuLGUsYSxvLHIsaSxjKXtyZXR1cm4gSHAobixIZyhCcigpLGUsYSxvLHIsaSksYywhMSksdH0sIsm1ybVzdHlsZVByb3BJbnRlcnBvbGF0ZTMiOmZ1bmN0aW9uIHQobixlLGEsbyxyLGksYyxzLGwpe3JldHVybiBIcChuLEJnKEJyKCksZSxhLG8scixpLGMscyksbCwhMSksdH0sIsm1ybVzdHlsZVByb3BJbnRlcnBvbGF0ZTQiOmZ1bmN0aW9uIHQobixlLGEsbyxyLGksYyxzLGwsbSxkKXtyZXR1cm4gSHAobixWZyhCcigpLGUsYSxvLHIsaSxjLHMsbCxtKSxkLCExKSx0fSwiybXJtXN0eWxlUHJvcEludGVycG9sYXRlNSI6ZnVuY3Rpb24gdChuLGUsYSxvLHIsaSxjLHMsbCxtLGQsZyxwKXtyZXR1cm4gSHAobixqZyhCcigpLGUsYSxvLHIsaSxjLHMsbCxtLGQsZykscCwhMSksdH0sIsm1ybVzdHlsZVByb3BJbnRlcnBvbGF0ZTYiOmZ1bmN0aW9uIHQobixlLGEsbyxyLGksYyxzLGwsbSxkLGcscCxiLHUpe3JldHVybiBIcChuLFVnKEJyKCksZSxhLG8scixpLGMscyxsLG0sZCxnLHAsYiksdSwhMSksdH0sIsm1ybVzdHlsZVByb3BJbnRlcnBvbGF0ZTciOmZ1bmN0aW9uIHQobixlLGEsbyxyLGksYyxzLGwsbSxkLGcscCxiLHUsZixoKXtyZXR1cm4gSHAobixXZyhCcigpLGUsYSxvLHIsaSxjLHMsbCxtLGQsZyxwLGIsdSxmKSxoLCExKSx0fSwiybXJtXN0eWxlUHJvcEludGVycG9sYXRlOCI6ZnVuY3Rpb24gdChuLGUsYSxvLHIsaSxjLHMsbCxtLGQsZyxwLGIsdSxmLGgsXyxDKXtyZXR1cm4gSHAobixHZyhCcigpLGUsYSxvLHIsaSxjLHMsbCxtLGQsZyxwLGIsdSxmLGgsXyksQywhMSksdH0sIsm1ybVzdHlsZVByb3BJbnRlcnBvbGF0ZVYiOmZ1bmN0aW9uIHQobixlLGEpe3JldHVybiBIcChuLEZnKEJyKCksZSksYSwhMSksdH0sIsm1ybVjbGFzc1Byb3AiOkRwLCLJtcm1YWR2YW5jZSI6d3MsIsm1ybV0ZW1wbGF0ZSI6WWcsIsm1ybV0ZXh0IjpKcCwiybXJtXRleHRJbnRlcnBvbGF0ZSI6UXAsIsm1ybV0ZXh0SW50ZXJwb2xhdGUxIjpLcCwiybXJtXRleHRJbnRlcnBvbGF0ZTIiOiRwLCLJtcm1dGV4dEludGVycG9sYXRlMyI6dGIsIsm1ybV0ZXh0SW50ZXJwb2xhdGU0IjpmdW5jdGlvbiB0KG4sZSxhLG8scixpLGMscyxsKXtjb25zdCBtPUJyKCksZD1WZyhtLG4sZSxhLG8scixpLGMscyxsKTtyZXR1cm4gZCE9PU9zJiZzbShtLGdpKCksZCksdH0sIsm1ybV0ZXh0SW50ZXJwb2xhdGU1IjpmdW5jdGlvbiB0KG4sZSxhLG8scixpLGMscyxsLG0sZCl7Y29uc3QgZz1CcigpLHA9amcoZyxuLGUsYSxvLHIsaSxjLHMsbCxtLGQpO3JldHVybiBwIT09T3MmJnNtKGcsZ2koKSxwKSx0fSwiybXJtXRleHRJbnRlcnBvbGF0ZTYiOmZ1bmN0aW9uIHQobixlLGEsbyxyLGksYyxzLGwsbSxkLGcscCl7Y29uc3QgYj1CcigpLHU9VWcoYixuLGUsYSxvLHIsaSxjLHMsbCxtLGQsZyxwKTtyZXR1cm4gdSE9PU9zJiZzbShiLGdpKCksdSksdH0sIsm1ybV0ZXh0SW50ZXJwb2xhdGU3IjpmdW5jdGlvbiB0KG4sZSxhLG8scixpLGMscyxsLG0sZCxnLHAsYix1KXtjb25zdCBmPUJyKCksaD1XZyhmLG4sZSxhLG8scixpLGMscyxsLG0sZCxnLHAsYix1KTtyZXR1cm4gaCE9PU9zJiZzbShmLGdpKCksaCksdH0sIsm1ybV0ZXh0SW50ZXJwb2xhdGU4IjpmdW5jdGlvbiB0KG4sZSxhLG8scixpLGMscyxsLG0sZCxnLHAsYix1LGYsaCl7Y29uc3QgXz1CcigpLEM9R2coXyxuLGUsYSxvLHIsaSxjLHMsbCxtLGQsZyxwLGIsdSxmLGgpO3JldHVybiBDIT09T3MmJnNtKF8sZ2koKSxDKSx0fSwiybXJtXRleHRJbnRlcnBvbGF0ZVYiOmZ1bmN0aW9uIHQobil7Y29uc3QgZT1CcigpLGE9RmcoZSxuKTtyZXR1cm4gYSE9PU9zJiZzbShlLGdpKCksYSksdH0sIsm1ybVpMThuIjpzdSwiybXJtWkxOG5BdHRyaWJ1dGVzIjpsdSwiybXJtWkxOG5FeHAiOm11LCLJtcm1aTE4blN0YXJ0IjppdSwiybXJtWkxOG5FbmQiOmN1LCLJtcm1aTE4bkFwcGx5IjpkdSwiybXJtWkxOG5Qb3N0cHJvY2VzcyI6Z3UsIsm1ybVyZXNvbHZlV2luZG93IjplciwiybXJtXJlc29sdmVEb2N1bWVudCI6YXIsIsm1ybVyZXNvbHZlQm9keSI6b3IsIsm1ybVzZXRDb21wb25lbnRTY29wZSI6Q28sIsm1ybVzZXROZ01vZHVsZVNjb3BlIjp5bywiybXJtXNhbml0aXplSHRtbCI6Ci8qKgogICAgICogQGxpY2Vuc2UKICAgICAqIENvcHlyaWdodCBHb29nbGUgTExDIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCiAgICAgKgogICAgICogVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYW4gTUlULXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKICAgICAqIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUgYXQgaHR0cHM6Ly9hbmd1bGFyLmlvL2xpY2Vuc2UKICAgICAqLwpmdW5jdGlvbiBSaCh0KXtjb25zdCBuPVFjKCk7cmV0dXJuIG4/bi5zYW5pdGl6ZShaYy5IVE1MLHQpfHwiIjpiYyh0LCJIVE1MIik/cGModCk6WWMoT3IoKSwkbyh0KSl9LCLJtcm1c2FuaXRpemVTdHlsZSI6ZnVuY3Rpb24gVGgodCl7Y29uc3Qgbj1RYygpO3JldHVybiBuP24uc2FuaXRpemUoWmMuU1RZTEUsdCl8fCIiOmJjKHQsIlN0eWxlIik/cGModCk6JG8odCl9LCLJtcm1c2FuaXRpemVSZXNvdXJjZVVybCI6SmMsIsm1ybVzYW5pdGl6ZVNjcmlwdCI6ZnVuY3Rpb24gRGgodCl7Y29uc3Qgbj1RYygpO2lmKG4pcmV0dXJuIG4uc2FuaXRpemUoWmMuU0NSSVBULHQpfHwiIjtpZihiYyh0LCJTY3JpcHQiKSlyZXR1cm4gcGModCk7dGhyb3cgbmV3IEVycm9yKCJ1bnNhZmUgdmFsdWUgdXNlZCBpbiBhIHNjcmlwdCBjb250ZXh0Iil9LCLJtcm1c2FuaXRpemVVcmwiOlhjLCLJtcm1c2FuaXRpemVVcmxPclJlc291cmNlVXJsIjpmdW5jdGlvbiBJaCh0LG4sZSl7cmV0dXJuKGZ1bmN0aW9uIGEodCxuKXtyZXR1cm4ic3JjIj09PW4mJigiZW1iZWQiPT09dHx8ImZyYW1lIj09PXR8fCJpZnJhbWUiPT09dHx8Im1lZGlhIj09PXR8fCJzY3JpcHQiPT09dCl8fCJocmVmIj09PW4mJigiYmFzZSI9PT10fHwibGluayI9PT10KT9KYzpYY30pKG4sZSkodCl9fTtsZXQgTmg9bnVsbDsKLyoqCiAgICAgKiBAbGljZW5zZQogICAgICogQ29weXJpZ2h0IEdvb2dsZSBMTEMgQWxsIFJpZ2h0cyBSZXNlcnZlZC4KICAgICAqCiAgICAgKiBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhbiBNSVQtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQogICAgICogZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZSBhdCBodHRwczovL2FuZ3VsYXIuaW8vbGljZW5zZQogICAgICovCmNvbnN0IEZoPVtdLExoPVtdO2xldCBIaD0hMTtmdW5jdGlvbiBCaCh0KXtyZXR1cm4gQXJyYXkuaXNBcnJheSh0KT90LmV2ZXJ5KEJoKTohIW9hKHQpfWZ1bmN0aW9uIFZoKHQsbixlKXtpZihHaC5nZXQodCkpcmV0dXJuO2xldCBhO2lmKEdoLnNldCh0LCEwKSx0PW9hKHQpLGUpe2lmKGE9Um8odCksIWEpdGhyb3cgbmV3IEVycm9yKGBVbmV4cGVjdGVkIHZhbHVlICcke3QubmFtZX0nIGltcG9ydGVkIGJ5IHRoZSBtb2R1bGUgJyR7ZS5uYW1lfScuIFBsZWFzZSBhZGQgYW4gQE5nTW9kdWxlIGFubm90YXRpb24uYCl9ZWxzZSBhPVJvKHQsITApO2NvbnN0IG89W10scj1pcihhLmRlY2xhcmF0aW9ucyksaT1pcihhLmltcG9ydHMpO2FvKGkpLm1hcChqaCkuZm9yRWFjaCgobj0+e2Yobix0KSxWaChuLCExLHQpfSkpO2NvbnN0IGM9aXIoYS5leHBvcnRzKTtyLmZvckVhY2goKGZ1bmN0aW9uIHMobil7U28obj1vYShuKSl8fEVvKG4pfHxBbyhuKXx8by5wdXNoKGBVbmV4cGVjdGVkIHZhbHVlICcke3RyKG4pfScgZGVjbGFyZWQgYnkgdGhlIG1vZHVsZSAnJHt0cih0KX0nLiBQbGVhc2UgYWRkIGEgQFBpcGUvQERpcmVjdGl2ZS9AQ29tcG9uZW50IGFubm90YXRpb24uYCl9KSksci5mb3JFYWNoKChmdW5jdGlvbiBsKHQpe2NvbnN0IG49RW8odD1vYSh0KSk7IVNvKHQpJiZuJiYwPT1uLnNlbGVjdG9ycy5sZW5ndGgmJm8ucHVzaChgRGlyZWN0aXZlICR7dHIodCl9IGhhcyBubyBzZWxlY3RvciwgcGxlYXNlIGFkZCBpdCFgKX0pKTtjb25zdCBtPVsuLi5yLm1hcChvYSksLi4uYW8oaS5tYXAoWWgpKS5tYXAob2EpXTtjLmZvckVhY2goKGZ1bmN0aW9uIGQobil7Y29uc3QgZT0oU28obj1vYShuKSk/ImNvbXBvbmVudCI6RW8obikmJiJkaXJlY3RpdmUiKXx8QW8obikmJiJwaXBlIjtlJiYtMT09PW0ubGFzdEluZGV4T2YobikmJm8ucHVzaChgQ2FuJ3QgZXhwb3J0ICR7ZX0gJHt0cihuKX0gZnJvbSAke3RyKHQpfSBhcyBpdCB3YXMgbmVpdGhlciBkZWNsYXJlZCBub3IgaW1wb3J0ZWQhYCl9KSksci5mb3JFYWNoKChlPT4oZnVuY3Rpb24gYShuLGUpe249b2Eobik7Y29uc3QgYT1XaC5nZXQobik7aWYoYSYmYSE9PXQpe2lmKCFlKXtjb25zdCBlPVthLHRdLm1hcCh0cikuc29ydCgpO28ucHVzaChgVHlwZSAke3RyKG4pfSBpcyBwYXJ0IG9mIHRoZSBkZWNsYXJhdGlvbnMgb2YgMiBtb2R1bGVzOiAke2VbMF19IGFuZCAke2VbMV19ISBQbGVhc2UgY29uc2lkZXIgbW92aW5nICR7dHIobil9IHRvIGEgaGlnaGVyIG1vZHVsZSB0aGF0IGltcG9ydHMgJHtlWzBdfSBhbmQgJHtlWzFdfS4gWW91IGNhbiBhbHNvIGNyZWF0ZSBhIG5ldyBOZ01vZHVsZSB0aGF0IGV4cG9ydHMgYW5kIGluY2x1ZGVzICR7dHIobil9IHRoZW4gaW1wb3J0IHRoYXQgTmdNb2R1bGUgaW4gJHtlWzBdfSBhbmQgJHtlWzFdfS5gKX19ZWxzZSBXaC5zZXQobix0KX0pKGUsbikpKSxyLmZvckVhY2goKGZ1bmN0aW9uIGcodCl7aWYoU28odD1vYSh0KSkpe2NvbnN0IG49VWgodCwiQ29tcG9uZW50Iik7biYmbi5lbnRyeUNvbXBvbmVudHMmJm9vKG4uZW50cnlDb21wb25lbnRzLHUpfX0pKTtjb25zdCBwPVVoKHQsIk5nTW9kdWxlIik7aWYocCYmKHAuaW1wb3J0cyYmYW8ocC5pbXBvcnRzKS5tYXAoamgpLmZvckVhY2goKG49PntmKG4sdCksVmgobiwhMSx0KX0pKSxwLmJvb3RzdHJhcCYmb28ocC5ib290c3RyYXAsKGZ1bmN0aW9uIGIodCl7U28odD1vYSh0KSl8fG8ucHVzaChgJHt0cih0KX0gY2Fubm90IGJlIHVzZWQgYXMgYW4gZW50cnkgY29tcG9uZW50LmApfSkpLHAuYm9vdHN0cmFwJiZvbyhwLmJvb3RzdHJhcCx1KSxwLmVudHJ5Q29tcG9uZW50cyYmb28ocC5lbnRyeUNvbXBvbmVudHMsdSkpLG8ubGVuZ3RoKXRocm93IG5ldyBFcnJvcihvLmpvaW4oIlxuIikpO2Z1bmN0aW9uIHUodCl7dD1vYSh0KSxXaC5nZXQodCl8fG8ucHVzaChgQ29tcG9uZW50ICR7dHIodCl9IGlzIG5vdCBwYXJ0IG9mIGFueSBOZ01vZHVsZSBvciB0aGUgbW9kdWxlIGhhcyBub3QgYmVlbiBpbXBvcnRlZCBpbnRvIHlvdXIgbW9kdWxlLmApfWZ1bmN0aW9uIGYodCxuKXtpZihTbyh0PW9hKHQpKXx8RW8odCkpdGhyb3cgbmV3IEVycm9yKGBVbmV4cGVjdGVkIGRpcmVjdGl2ZSAnJHt0Lm5hbWV9JyBpbXBvcnRlZCBieSB0aGUgbW9kdWxlICcke24ubmFtZX0nLiBQbGVhc2UgYWRkIGFuIEBOZ01vZHVsZSBhbm5vdGF0aW9uLmApO2lmKEFvKHQpKXRocm93IG5ldyBFcnJvcihgVW5leHBlY3RlZCBwaXBlICcke3QubmFtZX0nIGltcG9ydGVkIGJ5IHRoZSBtb2R1bGUgJyR7bi5uYW1lfScuIFBsZWFzZSBhZGQgYW4gQE5nTW9kdWxlIGFubm90YXRpb24uYCl9fWZ1bmN0aW9uIGpoKHQpe3JldHVybih0PW9hKHQpKS5uZ01vZHVsZXx8dH1mdW5jdGlvbiBVaCh0LG4pe2xldCBlPW51bGw7cmV0dXJuIGEodC5fX2Fubm90YXRpb25zX18pLGEodC5kZWNvcmF0b3JzKSxlO2Z1bmN0aW9uIGEodCl7dCYmdC5mb3JFYWNoKG8pfWZ1bmN0aW9uIG8odCl7ZXx8KE9iamVjdC5nZXRQcm90b3R5cGVPZih0KS5uZ01ldGFkYXRhTmFtZT09bj9lPXQ6dC50eXBlJiZPYmplY3QuZ2V0UHJvdG90eXBlT2YodC50eXBlKS5uZ01ldGFkYXRhTmFtZT09biYmKGU9dC5hcmdzWzBdKSl9fWxldCBXaD1uZXcgTWFwLEdoPW5ldyBNYXA7ZnVuY3Rpb24gWWgodCl7cmV0dXJuWy4uLmFvKGlyKFJvKHQ9b2EodCksITApLmV4cG9ydHMpLm1hcCgodD0+Um8odCk/KFZoKHQsITEpLFloKHQpKTp0KSkpXX1mdW5jdGlvbiBxaCh0LG4pe2NvbnN0IGU9YW8obi5kZWNsYXJhdGlvbnN8fEZoKSxhPVhoKHQpO2UuZm9yRWFjaCgobj0+e24uaGFzT3duUHJvcGVydHkodWEpP1poKFNvKG4pLGEpOm4uaGFzT3duUHJvcGVydHkoZmEpfHxuLmhhc093blByb3BlcnR5KGhhKXx8KG4ubmdTZWxlY3RvclNjb3BlPXQpfSkpfWZ1bmN0aW9uIFpoKHQsbil7dC5kaXJlY3RpdmVEZWZzPSgpPT5BcnJheS5mcm9tKG4uY29tcGlsYXRpb24uZGlyZWN0aXZlcykubWFwKCh0PT50Lmhhc093blByb3BlcnR5KHVhKT9Tbyh0KTpFbyh0KSkpLmZpbHRlcigodD0+ISF0KSksdC5waXBlRGVmcz0oKT0+QXJyYXkuZnJvbShuLmNvbXBpbGF0aW9uLnBpcGVzKS5tYXAoKHQ9PkFvKHQpKSksdC5zY2hlbWFzPW4uc2NoZW1hcyx0LnRWaWV3PW51bGx9ZnVuY3Rpb24gWGgodCl7aWYoIVFoKHQpKXRocm93IG5ldyBFcnJvcihgJHt0Lm5hbWV9IGRvZXMgbm90IGhhdmUgYSBtb2R1bGUgZGVmICjJtW1vZCBwcm9wZXJ0eSlgKTtjb25zdCBuPVJvKHQpO2lmKG51bGwhPT1uLnRyYW5zaXRpdmVDb21waWxlU2NvcGVzKXJldHVybiBuLnRyYW5zaXRpdmVDb21waWxlU2NvcGVzO2NvbnN0IGU9e3NjaGVtYXM6bi5zY2hlbWFzfHxudWxsLGNvbXBpbGF0aW9uOntkaXJlY3RpdmVzOm5ldyBTZXQscGlwZXM6bmV3IFNldH0sZXhwb3J0ZWQ6e2RpcmVjdGl2ZXM6bmV3IFNldCxwaXBlczpuZXcgU2V0fX07cmV0dXJuIGlyKG4uaW1wb3J0cykuZm9yRWFjaCgodD0+e2NvbnN0IG49dDtpZighUWgobikpdGhyb3cgbmV3IEVycm9yKGBJbXBvcnRpbmcgJHtuLm5hbWV9IHdoaWNoIGRvZXMgbm90IGhhdmUgYSDJtW1vZCBwcm9wZXJ0eWApO2NvbnN0IGE9WGgobik7YS5leHBvcnRlZC5kaXJlY3RpdmVzLmZvckVhY2goKHQ9PmUuY29tcGlsYXRpb24uZGlyZWN0aXZlcy5hZGQodCkpKSxhLmV4cG9ydGVkLnBpcGVzLmZvckVhY2goKHQ9PmUuY29tcGlsYXRpb24ucGlwZXMuYWRkKHQpKSl9KSksaXIobi5kZWNsYXJhdGlvbnMpLmZvckVhY2goKHQ9PntBbyh0KT9lLmNvbXBpbGF0aW9uLnBpcGVzLmFkZCh0KTplLmNvbXBpbGF0aW9uLmRpcmVjdGl2ZXMuYWRkKHQpfSkpLGlyKG4uZXhwb3J0cykuZm9yRWFjaCgodD0+e2NvbnN0IG49dDtpZihRaChuKSl7Y29uc3QgdD1YaChuKTt0LmV4cG9ydGVkLmRpcmVjdGl2ZXMuZm9yRWFjaCgodD0+e2UuY29tcGlsYXRpb24uZGlyZWN0aXZlcy5hZGQodCksZS5leHBvcnRlZC5kaXJlY3RpdmVzLmFkZCh0KX0pKSx0LmV4cG9ydGVkLnBpcGVzLmZvckVhY2goKHQ9PntlLmNvbXBpbGF0aW9uLnBpcGVzLmFkZCh0KSxlLmV4cG9ydGVkLnBpcGVzLmFkZCh0KX0pKX1lbHNlIEFvKG4pP2UuZXhwb3J0ZWQucGlwZXMuYWRkKG4pOmUuZXhwb3J0ZWQuZGlyZWN0aXZlcy5hZGQobil9KSksbi50cmFuc2l0aXZlQ29tcGlsZVNjb3Blcz1lLGV9ZnVuY3Rpb24gSmgodCl7cmV0dXJuKGZ1bmN0aW9uIG4odCl7cmV0dXJuIHZvaWQgMCE9PXQubmdNb2R1bGV9KSh0KT90Lm5nTW9kdWxlOnR9ZnVuY3Rpb24gUWgodCl7cmV0dXJuISFSbyh0KX0KLyoqCiAgICAgKiBAbGljZW5zZQogICAgICogQ29weXJpZ2h0IEdvb2dsZSBMTEMgQWxsIFJpZ2h0cyBSZXNlcnZlZC4KICAgICAqCiAgICAgKiBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhbiBNSVQtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQogICAgICogZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZSBhdCBodHRwczovL2FuZ3VsYXIuaW8vbGljZW5zZQogICAgICovbGV0IEtoPTA7ZnVuY3Rpb24gJGgodCxuKXtsZXQgZT1udWxsO25fKHQsbnx8e30pLE9iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LGZhLHtnZXQ6KCk9PntpZihudWxsPT09ZSl7Y29uc3QgYT10Xyh0LG58fHt9KTtlPWJhKCkuY29tcGlsZURpcmVjdGl2ZSh0aCxhLnNvdXJjZU1hcFVybCxhLm1ldGFkYXRhKX1yZXR1cm4gZX0sY29uZmlndXJhYmxlOiEhbmdEZXZNb2RlfSl9ZnVuY3Rpb24gdF8odCxuKXtjb25zdCBlPXQmJnQubmFtZSxhPWBuZzovLy8ke2V9L8m1ZGlyLmpzYCxvPWJhKCkscj1hXyh0LG4pO3JldHVybiByLnR5cGVTb3VyY2VTcGFuPW8uY3JlYXRlUGFyc2VTb3VyY2VTcGFuKCJEaXJlY3RpdmUiLGUsYSksci51c2VzSW5oZXJpdGFuY2UmJm9fKHQpLHttZXRhZGF0YTpyLHNvdXJjZU1hcFVybDphfX1mdW5jdGlvbiBuXyh0LG4pe2xldCBlPW51bGw7T2JqZWN0LmRlZmluZVByb3BlcnR5KHQsTWEse2dldDooKT0+e2lmKG51bGw9PT1lKXtjb25zdCBhPXRfKHQsbiksbz1iYSgpO2U9by5jb21waWxlRmFjdG9yeSh0aCxgbmc6Ly8vJHt0Lm5hbWV9L8m1ZmFjLmpzYCxPYmplY3QuYXNzaWduKE9iamVjdC5hc3NpZ24oe30sYS5tZXRhZGF0YSkse2luamVjdEZuOiJkaXJlY3RpdmVJbmplY3QiLHRhcmdldDpvLlIzRmFjdG9yeVRhcmdldC5EaXJlY3RpdmV9KSl9cmV0dXJuIGV9LGNvbmZpZ3VyYWJsZTohIW5nRGV2TW9kZX0pfWZ1bmN0aW9uIGVfKHQpe3JldHVybiBPYmplY3QuZ2V0UHJvdG90eXBlT2YodC5wcm90b3R5cGUpPT09T2JqZWN0LnByb3RvdHlwZX1mdW5jdGlvbiBhXyh0LG4pe2NvbnN0IGU9JG0oKSxhPWUub3duUHJvcE1ldGFkYXRhKHQpO3JldHVybntuYW1lOnQubmFtZSx0eXBlOnQsdHlwZUFyZ3VtZW50Q291bnQ6MCxzZWxlY3Rvcjp2b2lkIDAhPT1uLnNlbGVjdG9yP24uc2VsZWN0b3I6bnVsbCxkZXBzOnRkKHQpLGhvc3Q6bi5ob3N0fHx1byxwcm9wTWV0YWRhdGE6YSxpbnB1dHM6bi5pbnB1dHN8fGZvLG91dHB1dHM6bi5vdXRwdXRzfHxmbyxxdWVyaWVzOmNfKHQsYSxzXyksbGlmZWN5Y2xlOnt1c2VzT25DaGFuZ2VzOmUuaGFzTGlmZWN5Y2xlSG9vayh0LCJuZ09uQ2hhbmdlcyIpfSx0eXBlU291cmNlU3BhbjpudWxsLHVzZXNJbmhlcml0YW5jZTohZV8odCksZXhwb3J0QXM6KG89bi5leHBvcnRBcyx2b2lkIDA9PT1vP251bGw6ZF8obykpLHByb3ZpZGVyczpuLnByb3ZpZGVyc3x8bnVsbCx2aWV3UXVlcmllczpjXyh0LGEsbF8pfTt2YXIgb31mdW5jdGlvbiBvXyh0KXtjb25zdCBuPU9iamVjdC5wcm90b3R5cGU7bGV0IGU9T2JqZWN0LmdldFByb3RvdHlwZU9mKHQucHJvdG90eXBlKS5jb25zdHJ1Y3Rvcjtmb3IoO2UmJmUhPT1uOylFbyhlKXx8U28oZSl8fCFwXyhlKXx8JGgoZSxudWxsKSxlPU9iamVjdC5nZXRQcm90b3R5cGVPZihlKX1mdW5jdGlvbiByXyh0KXtyZXR1cm4ic3RyaW5nIj09dHlwZW9mIHQ/ZF8odCk6b2EodCl9ZnVuY3Rpb24gaV8odCxuKXtyZXR1cm57cHJvcGVydHlOYW1lOnQscHJlZGljYXRlOnJfKG4uc2VsZWN0b3IpLGRlc2NlbmRhbnRzOm4uZGVzY2VuZGFudHMsZmlyc3Q6bi5maXJzdCxyZWFkOm4ucmVhZD9uLnJlYWQ6bnVsbCxzdGF0aWM6ISFuLnN0YXRpY319ZnVuY3Rpb24gY18odCxuLGUpe2NvbnN0IGE9W107Zm9yKGNvbnN0IG8gaW4gbilpZihuLmhhc093blByb3BlcnR5KG8pKXtjb25zdCByPW5bb107ci5mb3JFYWNoKChuPT57aWYoZShuKSl7aWYoIW4uc2VsZWN0b3IpdGhyb3cgbmV3IEVycm9yKGBDYW4ndCBjb25zdHJ1Y3QgYSBxdWVyeSBmb3IgdGhlIHByb3BlcnR5ICIke299IiBvZiAiJHt0cih0KX0iIHNpbmNlIHRoZSBxdWVyeSBzZWxlY3RvciB3YXNuJ3QgZGVmaW5lZC5gKTtpZihyLnNvbWUobV8pKXRocm93IG5ldyBFcnJvcigiQ2Fubm90IGNvbWJpbmUgQElucHV0IGRlY29yYXRvcnMgd2l0aCBxdWVyeSBkZWNvcmF0b3JzIik7YS5wdXNoKGlfKG8sbikpfX0pKX1yZXR1cm4gYX1mdW5jdGlvbiBzXyh0KXtjb25zdCBuPXQubmdNZXRhZGF0YU5hbWU7cmV0dXJuIkNvbnRlbnRDaGlsZCI9PT1ufHwiQ29udGVudENoaWxkcmVuIj09PW59ZnVuY3Rpb24gbF8odCl7Y29uc3Qgbj10Lm5nTWV0YWRhdGFOYW1lO3JldHVybiJWaWV3Q2hpbGQiPT09bnx8IlZpZXdDaGlsZHJlbiI9PT1ufWZ1bmN0aW9uIG1fKHQpe3JldHVybiJJbnB1dCI9PT10Lm5nTWV0YWRhdGFOYW1lfWZ1bmN0aW9uIGRfKHQpe3JldHVybiB0LnNwbGl0KCIsIikubWFwKCh0PT50LnRyaW0oKSkpfWNvbnN0IGdfPVsibmdPbkNoYW5nZXMiLCJuZ09uSW5pdCIsIm5nT25EZXN0cm95IiwibmdEb0NoZWNrIiwibmdBZnRlclZpZXdJbml0IiwibmdBZnRlclZpZXdDaGVja2VkIiwibmdBZnRlckNvbnRlbnRJbml0IiwibmdBZnRlckNvbnRlbnRDaGVja2VkIl07ZnVuY3Rpb24gcF8odCl7Y29uc3Qgbj0kbSgpO2lmKGdfLnNvbWUoKGU9Pm4uaGFzTGlmZWN5Y2xlSG9vayh0LGUpKSkpcmV0dXJuITA7Y29uc3QgZT1uLnByb3BNZXRhZGF0YSh0KTtmb3IoY29uc3QgdCBpbiBlKXtjb25zdCBuPWVbdF07Zm9yKGxldCB0PTA7dDxuLmxlbmd0aDt0Kyspe2NvbnN0IGU9blt0XSxhPWUubmdNZXRhZGF0YU5hbWU7aWYobV8oZSl8fHNfKGUpfHxsXyhlKXx8Ik91dHB1dCI9PT1hfHwiSG9zdEJpbmRpbmciPT09YXx8Ikhvc3RMaXN0ZW5lciI9PT1hKXJldHVybiEwfX1yZXR1cm4hMX0KLyoqCiAgICAgKiBAbGljZW5zZQogICAgICogQ29weXJpZ2h0IEdvb2dsZSBMTEMgQWxsIFJpZ2h0cyBSZXNlcnZlZC4KICAgICAqCiAgICAgKiBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhbiBNSVQtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQogICAgICogZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZSBhdCBodHRwczovL2FuZ3VsYXIuaW8vbGljZW5zZQogICAgICovZnVuY3Rpb24gYl8odCxuKXtyZXR1cm57dHlwZTp0LHR5cGVBcmd1bWVudENvdW50OjAsbmFtZTp0Lm5hbWUsZGVwczp0ZCh0KSxwaXBlTmFtZTpuLm5hbWUscHVyZTp2b2lkIDA9PT1uLnB1cmV8fG4ucHVyZX19Ci8qKgogICAgICogQGxpY2Vuc2UKICAgICAqIENvcHlyaWdodCBHb29nbGUgTExDIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCiAgICAgKgogICAgICogVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYW4gTUlULXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKICAgICAqIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUgYXQgaHR0cHM6Ly9hbmd1bGFyLmlvL2xpY2Vuc2UKICAgICAqL2NvbnN0IHVfPXplKCJEaXJlY3RpdmUiLCgodD17fSk9PnQpLHZvaWQgMCx2b2lkIDAsKCh0LG4pPT5PXyh0LG4pKSk7emUoIkNvbXBvbmVudCIsKCh0PXt9KT0+T2JqZWN0LmFzc2lnbih7Y2hhbmdlRGV0ZWN0aW9uOmdvLkRlZmF1bHR9LHQpKSx1Xyx2b2lkIDAsKCh0LG4pPT5DXyh0LG4pKSksemUoIlBpcGUiLCh0PT5PYmplY3QuYXNzaWduKHtwdXJlOiEwfSx0KSksdm9pZCAwLHZvaWQgMCwoKHQsbik9PlBfKHQsbikpKTtjb25zdCBmXz1EZSgiSW5wdXQiLCh0PT4oe2JpbmRpbmdQcm9wZXJ0eU5hbWU6dH0pKSksaF89RGUoIk91dHB1dCIsKHQ9Pih7YmluZGluZ1Byb3BlcnR5TmFtZTp0fSkpKTtEZSgiSG9zdEJpbmRpbmciLCh0PT4oe2hvc3RQcm9wZXJ0eU5hbWU6dH0pKSk7Y29uc3QgX189RGUoIkhvc3RMaXN0ZW5lciIsKCh0LG4pPT4oe2V2ZW50TmFtZTp0LGFyZ3M6bn0pKSksQ189ZnVuY3Rpb24gTV8odCxuKXsoInVuZGVmaW5lZCI9PXR5cGVvZiBuZ0Rldk1vZGV8fG5nRGV2TW9kZSkmJlBhKCk7bGV0IGU9bnVsbDshKGZ1bmN0aW9uIGEodCxuKXtLZChuKSYmKEpkLnNldCh0LG4pLFFkLmFkZCh0KSl9KSh0LG4pLG5fKHQsbiksT2JqZWN0LmRlZmluZVByb3BlcnR5KHQsdWEse2dldDooKT0+e2lmKG51bGw9PT1lKXtjb25zdCBhPWJhKCk7aWYoS2Qobikpe2NvbnN0IGU9W2BDb21wb25lbnQgJyR7dC5uYW1lfScgaXMgbm90IHJlc29sdmVkOmBdO3Rocm93IG4udGVtcGxhdGVVcmwmJmUucHVzaChgIC0gdGVtcGxhdGVVcmw6ICR7bi50ZW1wbGF0ZVVybH1gKSxuLnN0eWxlVXJscyYmbi5zdHlsZVVybHMubGVuZ3RoJiZlLnB1c2goYCAtIHN0eWxlVXJsczogJHtKU09OLnN0cmluZ2lmeShuLnN0eWxlVXJscyl9YCksZS5wdXNoKCJEaWQgeW91IHJ1biBhbmQgd2FpdCBmb3IgJ3Jlc29sdmVDb21wb25lbnRSZXNvdXJjZXMoKSc/IiksbmV3IEVycm9yKGUuam9pbigiXG4iKSl9Y29uc3Qgbz0oZnVuY3Rpb24gYSgpe3JldHVybiBOaH0pKCk7bGV0IHI9bi5wcmVzZXJ2ZVdoaXRlc3BhY2VzO3ZvaWQgMD09PXImJihyPW51bGwhPT1vJiZ2b2lkIDAhPT1vLnByZXNlcnZlV2hpdGVzcGFjZXMmJm8ucHJlc2VydmVXaGl0ZXNwYWNlcyk7bGV0IGk9bi5lbmNhcHN1bGF0aW9uO3ZvaWQgMD09PWkmJihpPW51bGwhPT1vJiZ2b2lkIDAhPT1vLmRlZmF1bHRFbmNhcHN1bGF0aW9uP28uZGVmYXVsdEVuY2Fwc3VsYXRpb246Ym8uRW11bGF0ZWQpO2NvbnN0IGM9bi50ZW1wbGF0ZVVybHx8YG5nOi8vLyR7dC5uYW1lfS90ZW1wbGF0ZS5odG1sYCxzPU9iamVjdC5hc3NpZ24oT2JqZWN0LmFzc2lnbih7fSxhXyh0LG4pKSx7dHlwZVNvdXJjZVNwYW46YS5jcmVhdGVQYXJzZVNvdXJjZVNwYW4oIkNvbXBvbmVudCIsdC5uYW1lLGMpLHRlbXBsYXRlOm4udGVtcGxhdGV8fCIiLHByZXNlcnZlV2hpdGVzcGFjZXM6cixzdHlsZXM6bi5zdHlsZXN8fGZvLGFuaW1hdGlvbnM6bi5hbmltYXRpb25zLGRpcmVjdGl2ZXM6W10sY2hhbmdlRGV0ZWN0aW9uOm4uY2hhbmdlRGV0ZWN0aW9uLHBpcGVzOm5ldyBNYXAsZW5jYXBzdWxhdGlvbjppLGludGVycG9sYXRpb246bi5pbnRlcnBvbGF0aW9uLHZpZXdQcm92aWRlcnM6bi52aWV3UHJvdmlkZXJzfHxudWxsfSk7S2grKzt0cnl7cy51c2VzSW5oZXJpdGFuY2UmJm9fKHQpLGU9YS5jb21waWxlQ29tcG9uZW50KHRoLGMscyl9ZmluYWxseXtLaC0tfWlmKDA9PT1LaCYmKGZ1bmN0aW9uIG8oKXtpZighSGgpe0hoPSEwO3RyeXtmb3IobGV0IHQ9TGgubGVuZ3RoLTE7dD49MDt0LS0pe2NvbnN0e21vZHVsZVR5cGU6bixuZ01vZHVsZTplfT1MaFt0XTtlLmRlY2xhcmF0aW9ucyYmZS5kZWNsYXJhdGlvbnMuZXZlcnkoQmgpJiYoTGguc3BsaWNlKHQsMSkscWgobixlKSl9fWZpbmFsbHl7SGg9ITF9fX0pKCksKGZ1bmN0aW9uIHIodCl7cmV0dXJuIHZvaWQgMCE9PXQubmdTZWxlY3RvclNjb3BlfSkodCkpe2NvbnN0IG49WGgodC5uZ1NlbGVjdG9yU2NvcGUpO1poKGUsbil9fXJldHVybiBlfSxjb25maWd1cmFibGU6ISFuZ0Rldk1vZGV9KX0sT189JGgsUF89ZnVuY3Rpb24geF8odCxuKXtsZXQgZT1udWxsLGE9bnVsbDtPYmplY3QuZGVmaW5lUHJvcGVydHkodCxNYSx7Z2V0OigpPT57aWYobnVsbD09PWEpe2NvbnN0IGU9Yl8odCxuKSxvPWJhKCk7YT1vLmNvbXBpbGVGYWN0b3J5KHRoLGBuZzovLy8ke2UubmFtZX0vybVmYWMuanNgLE9iamVjdC5hc3NpZ24oT2JqZWN0LmFzc2lnbih7fSxlKSx7aW5qZWN0Rm46ImRpcmVjdGl2ZUluamVjdCIsdGFyZ2V0Om8uUjNGYWN0b3J5VGFyZ2V0LlBpcGV9KSl9cmV0dXJuIGF9LGNvbmZpZ3VyYWJsZTohIW5nRGV2TW9kZX0pLE9iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LGhhLHtnZXQ6KCk9PntpZihudWxsPT09ZSl7Y29uc3QgYT1iXyh0LG4pO2U9YmEoKS5jb21waWxlUGlwZSh0aCxgbmc6Ly8vJHthLm5hbWV9L8m1cGlwZS5qc2AsYSl9cmV0dXJuIGV9LGNvbmZpZ3VyYWJsZTohIW5nRGV2TW9kZX0pfTt6ZSgiTmdNb2R1bGUiLCh0PT50KSx2b2lkIDAsdm9pZCAwLCgodCxuKT0+eV8odCxuKSkpO2NvbnN0IHlfPWZ1bmN0aW9uIGtfKHQsbj17fSl7IShmdW5jdGlvbiBlKHQsbixhPSExKXtuZ0Rldk1vZGUmJlRhKHQsIlJlcXVpcmVkIHZhbHVlIG1vZHVsZVR5cGUiKSxuZ0Rldk1vZGUmJlRhKG4sIlJlcXVpcmVkIHZhbHVlIG5nTW9kdWxlIik7Y29uc3Qgbz1hbyhuLmRlY2xhcmF0aW9uc3x8RmgpO2xldCByPW51bGw7T2JqZWN0LmRlZmluZVByb3BlcnR5KHQsX2Ese2NvbmZpZ3VyYWJsZTohMCxnZXQ6KCk9PntpZihudWxsPT09cil7aWYobmdEZXZNb2RlJiZuLmltcG9ydHMmJm4uaW1wb3J0cy5pbmRleE9mKHQpPi0xKXRocm93IG5ldyBFcnJvcihgJyR7dHIodCl9JyBtb2R1bGUgY2FuJ3QgaW1wb3J0IGl0c2VsZmApO3I9YmEoKS5jb21waWxlTmdNb2R1bGUodGgsYG5nOi8vLyR7dC5uYW1lfS/JtW1vZC5qc2Ase3R5cGU6dCxib290c3RyYXA6YW8obi5ib290c3RyYXB8fEZoKS5tYXAob2EpLGRlY2xhcmF0aW9uczpvLm1hcChvYSksaW1wb3J0czphbyhuLmltcG9ydHN8fEZoKS5tYXAob2EpLm1hcChKaCksZXhwb3J0czphbyhuLmV4cG9ydHN8fEZoKS5tYXAob2EpLm1hcChKaCksc2NoZW1hczpuLnNjaGVtYXM/YW8obi5zY2hlbWFzKTpudWxsLGlkOm4uaWR8fG51bGx9KSxyLnNjaGVtYXN8fChyLnNjaGVtYXM9W10pfXJldHVybiByfX0pO2xldCBpPW51bGw7T2JqZWN0LmRlZmluZVByb3BlcnR5KHQsSmUse2dldDooKT0+e2lmKG51bGw9PT1pKXtuZ0Rldk1vZGUmJlZoKHQsYSk7Y29uc3QgZT17bmFtZTp0Lm5hbWUsdHlwZTp0LGRlcHM6dGQodCkscHJvdmlkZXJzOm4ucHJvdmlkZXJzfHxGaCxpbXBvcnRzOlsobi5pbXBvcnRzfHxGaCkubWFwKG9hKSwobi5leHBvcnRzfHxGaCkubWFwKG9hKV19O2k9YmEoKS5jb21waWxlSW5qZWN0b3IodGgsYG5nOi8vLyR7dC5uYW1lfS/JtWluai5qc2AsZSl9cmV0dXJuIGl9LGNvbmZpZ3VyYWJsZTohIW5nRGV2TW9kZX0pfSkodCxuKSwoZnVuY3Rpb24gYSh0LG4pe0xoLnB1c2goe21vZHVsZVR5cGU6dCxuZ01vZHVsZTpufSl9KSh0LG4pfSx2Xz1uZXcgRmEoIkFwcGxpY2F0aW9uIEluaXRpYWxpemVyIik7Y2xhc3Mgd197Y29uc3RydWN0b3IodCl7dGhpcy5hcHBJbml0cz10LHRoaXMuaW5pdGlhbGl6ZWQ9ITEsdGhpcy5kb25lPSExLHRoaXMuZG9uZVByb21pc2U9bmV3IFByb21pc2UoKCh0LG4pPT57dGhpcy5yZXNvbHZlPXQsdGhpcy5yZWplY3Q9bn0pKX1ydW5Jbml0aWFsaXplcnMoKXtpZih0aGlzLmluaXRpYWxpemVkKXJldHVybjtjb25zdCB0PVtdLG49KCk9Pnt0aGlzLmRvbmU9ITAsdGhpcy5yZXNvbHZlKCl9O2lmKHRoaXMuYXBwSW5pdHMpZm9yKGxldCBuPTA7bjx0aGlzLmFwcEluaXRzLmxlbmd0aDtuKyspe2NvbnN0IGU9dGhpcy5hcHBJbml0c1tuXSgpO3JwKGUpJiZ0LnB1c2goZSl9UHJvbWlzZS5hbGwodCkudGhlbigoKCk9PntuKCl9KSkuY2F0Y2goKHQ9Pnt0aGlzLnJlamVjdCh0KX0pKSwwPT09dC5sZW5ndGgmJm4oKSx0aGlzLmluaXRpYWxpemVkPSEwfX13Xy7JtWZhYz1mdW5jdGlvbiB0KG4pe3JldHVybiBuZXcobnx8d18pKFphKHZfLDgpKX0sd18uybVwcm92PVdlKHt0b2tlbjp3XyxmYWN0b3J5OndfLsm1ZmFjfSksd18uY3RvclBhcmFtZXRlcnM9KCk9Plt7dHlwZTpBcnJheSxkZWNvcmF0b3JzOlt7dHlwZTpJZSxhcmdzOlt2X119LHt0eXBlOk5lfV19XQovKioKICAgICAqIEBsaWNlbnNlCiAgICAgKiBDb3B5cmlnaHQgR29vZ2xlIExMQyBBbGwgUmlnaHRzIFJlc2VydmVkLgogICAgICoKICAgICAqIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGFuIE1JVC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCiAgICAgKiBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlIGF0IGh0dHBzOi8vYW5ndWxhci5pby9saWNlbnNlCiAgICAgKi87Y29uc3QgU189bmV3IEZhKCJBcHBJZCIpLEVfPXtwcm92aWRlOlNfLHVzZUZhY3Rvcnk6ZnVuY3Rpb24gQV8oKXtyZXR1cm5gJHt6XygpfSR7el8oKX0ke3pfKCl9YH0sZGVwczpbXX07ZnVuY3Rpb24gel8oKXtyZXR1cm4gU3RyaW5nLmZyb21DaGFyQ29kZSg5NytNYXRoLmZsb29yKDI1Kk1hdGgucmFuZG9tKCkpKX1jb25zdCBSXz1uZXcgRmEoIlBsYXRmb3JtIEluaXRpYWxpemVyIiksVF89bmV3IEZhKCJQbGF0Zm9ybSBJRCIpLERfPW5ldyBGYSgiYXBwQm9vdHN0cmFwTGlzdGVuZXIiKTtuZXcgRmEoIkFwcGxpY2F0aW9uIFBhY2thZ2VzIFJvb3QgVVJMIik7Ci8qKgogICAgICogQGxpY2Vuc2UKICAgICAqIENvcHlyaWdodCBHb29nbGUgTExDIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCiAgICAgKgogICAgICogVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYW4gTUlULXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKICAgICAqIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUgYXQgaHR0cHM6Ly9hbmd1bGFyLmlvL2xpY2Vuc2UKICAgICAqLwpjbGFzcyBJX3tsb2codCl7Y29uc29sZS5sb2codCl9d2Fybih0KXtjb25zb2xlLndhcm4odCl9fUlfLsm1ZmFjPWZ1bmN0aW9uIHQobil7cmV0dXJuIG5ldyhufHxJXyl9LElfLsm1cHJvdj1XZSh7dG9rZW46SV8sZmFjdG9yeTpJXy7JtWZhY30pOwovKioKICAgICAqIEBsaWNlbnNlCiAgICAgKiBDb3B5cmlnaHQgR29vZ2xlIExMQyBBbGwgUmlnaHRzIFJlc2VydmVkLgogICAgICoKICAgICAqIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGFuIE1JVC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCiAgICAgKiBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlIGF0IGh0dHBzOi8vYW5ndWxhci5pby9saWNlbnNlCiAgICAgKi8KY29uc3QgTl89bmV3IEZhKCJMb2NhbGVJZCIpLEZfPW5ldyBGYSgiRGVmYXVsdEN1cnJlbmN5Q29kZSIpO3ZhciBMXztuZXcgRmEoIlRyYW5zbGF0aW9ucyIpLG5ldyBGYSgiVHJhbnNsYXRpb25zRm9ybWF0IiksKGZ1bmN0aW9uKHQpe3RbdC5FcnJvcj0wXT0iRXJyb3IiLHRbdC5XYXJuaW5nPTFdPSJXYXJuaW5nIix0W3QuSWdub3JlPTJdPSJJZ25vcmUifSkoTF98fChMXz17fSkpOwovKioKICAgICAqIEBsaWNlbnNlCiAgICAgKiBDb3B5cmlnaHQgR29vZ2xlIExMQyBBbGwgUmlnaHRzIFJlc2VydmVkLgogICAgICoKICAgICAqIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGFuIE1JVC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCiAgICAgKiBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlIGF0IGh0dHBzOi8vYW5ndWxhci5pby9saWNlbnNlCiAgICAgKi8KY2xhc3MgSF97Y29uc3RydWN0b3IodCxuKXt0aGlzLm5nTW9kdWxlRmFjdG9yeT10LHRoaXMuY29tcG9uZW50RmFjdG9yaWVzPW59fWNvbnN0IEJfPWZ1bmN0aW9uKHQpe3JldHVybiBuZXcgcGYodCl9LFZfPUJfLGpfPWZ1bmN0aW9uKHQpe3JldHVybiBQcm9taXNlLnJlc29sdmUoQl8odCkpfSxVXz1mdW5jdGlvbih0KXtjb25zdCBuPUJfKHQpLGU9aXIoUm8odCkuZGVjbGFyYXRpb25zKS5yZWR1Y2UoKCh0LG4pPT57Y29uc3QgZT1TbyhuKTtyZXR1cm4gZSYmdC5wdXNoKG5ldyBsZihlKSksdH0pLFtdKTtyZXR1cm4gbmV3IEhfKG4sZSl9LFdfPVVfLEdfPWZ1bmN0aW9uKHQpe3JldHVybiBQcm9taXNlLnJlc29sdmUoVV8odCkpfTtjbGFzcyBZX3tjb25zdHJ1Y3Rvcigpe3RoaXMuY29tcGlsZU1vZHVsZVN5bmM9Vl8sdGhpcy5jb21waWxlTW9kdWxlQXN5bmM9al8sdGhpcy5jb21waWxlTW9kdWxlQW5kQWxsQ29tcG9uZW50c1N5bmM9V18sdGhpcy5jb21waWxlTW9kdWxlQW5kQWxsQ29tcG9uZW50c0FzeW5jPUdffWNsZWFyQ2FjaGUoKXt9Y2xlYXJDYWNoZUZvcih0KXt9Z2V0TW9kdWxlSWQodCl7fX1ZXy7JtWZhYz1mdW5jdGlvbiB0KG4pe3JldHVybiBuZXcobnx8WV8pfSxZXy7JtXByb3Y9V2Uoe3Rva2VuOllfLGZhY3Rvcnk6WV8uybVmYWN9KTtjb25zdCBxXz1uZXcgRmEoImNvbXBpbGVyT3B0aW9ucyIpLFpfPVByb21pc2UucmVzb2x2ZSgwKTsKLyoqCiAgICAgKiBAbGljZW5zZQogICAgICogQ29weXJpZ2h0IEdvb2dsZSBMTEMgQWxsIFJpZ2h0cyBSZXNlcnZlZC4KICAgICAqCiAgICAgKiBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhbiBNSVQtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQogICAgICogZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZSBhdCBodHRwczovL2FuZ3VsYXIuaW8vbGljZW5zZQogICAgICovZnVuY3Rpb24gWF8odCl7InVuZGVmaW5lZCI9PXR5cGVvZiBab25lP1pfLnRoZW4oKCgpPT57dCYmdC5hcHBseShudWxsLG51bGwpfSkpOlpvbmUuY3VycmVudC5zY2hlZHVsZU1pY3JvVGFzaygic2NoZWR1bGVNaWNyb3Rhc2siLHQpfQovKioKICAgICAqIEBsaWNlbnNlCiAgICAgKiBDb3B5cmlnaHQgR29vZ2xlIExMQyBBbGwgUmlnaHRzIFJlc2VydmVkLgogICAgICoKICAgICAqIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGFuIE1JVC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCiAgICAgKiBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlIGF0IGh0dHBzOi8vYW5ndWxhci5pby9saWNlbnNlCiAgICAgKi8KLyoqCiAgICAgKiBAbGljZW5zZQogICAgICogQ29weXJpZ2h0IEdvb2dsZSBMTEMgQWxsIFJpZ2h0cyBSZXNlcnZlZC4KICAgICAqCiAgICAgKiBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhbiBNSVQtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQogICAgICogZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZSBhdCBodHRwczovL2FuZ3VsYXIuaW8vbGljZW5zZQogICAgICovCmNsYXNzIEpfe2NvbnN0cnVjdG9yKHtlbmFibGVMb25nU3RhY2tUcmFjZTp0PSExLHNob3VsZENvYWxlc2NlRXZlbnRDaGFuZ2VEZXRlY3Rpb246bj0hMX0pe2lmKHRoaXMuaGFzUGVuZGluZ01hY3JvdGFza3M9ITEsdGhpcy5oYXNQZW5kaW5nTWljcm90YXNrcz0hMSx0aGlzLmlzU3RhYmxlPSEwLHRoaXMub25VbnN0YWJsZT1uZXcgRWYoITEpLHRoaXMub25NaWNyb3Rhc2tFbXB0eT1uZXcgRWYoITEpLHRoaXMub25TdGFibGU9bmV3IEVmKCExKSx0aGlzLm9uRXJyb3I9bmV3IEVmKCExKSwidW5kZWZpbmVkIj09dHlwZW9mIFpvbmUpdGhyb3cgbmV3IEVycm9yKCJJbiB0aGlzIGNvbmZpZ3VyYXRpb24gQW5ndWxhciByZXF1aXJlcyBab25lLmpzIik7Wm9uZS5hc3NlcnRab25lUGF0Y2hlZCgpO2NvbnN0IGU9dGhpcztlLl9uZXN0aW5nPTAsZS5fb3V0ZXI9ZS5faW5uZXI9Wm9uZS5jdXJyZW50LFpvbmUud3RmWm9uZVNwZWMmJihlLl9pbm5lcj1lLl9pbm5lci5mb3JrKFpvbmUud3RmWm9uZVNwZWMpKSxab25lLlRhc2tUcmFja2luZ1pvbmVTcGVjJiYoZS5faW5uZXI9ZS5faW5uZXIuZm9yayhuZXcgWm9uZS5UYXNrVHJhY2tpbmdab25lU3BlYykpLHQmJlpvbmUubG9uZ1N0YWNrVHJhY2Vab25lU3BlYyYmKGUuX2lubmVyPWUuX2lubmVyLmZvcmsoWm9uZS5sb25nU3RhY2tUcmFjZVpvbmVTcGVjKSksZS5zaG91bGRDb2FsZXNjZUV2ZW50Q2hhbmdlRGV0ZWN0aW9uPW4sZS5sYXN0UmVxdWVzdEFuaW1hdGlvbkZyYW1lSWQ9LTEsZS5uYXRpdmVSZXF1ZXN0QW5pbWF0aW9uRnJhbWU9KGZ1bmN0aW9uIGEoKXtsZXQgdD1tYS5yZXF1ZXN0QW5pbWF0aW9uRnJhbWUsbj1tYS5jYW5jZWxBbmltYXRpb25GcmFtZTtpZigidW5kZWZpbmVkIiE9dHlwZW9mIFpvbmUmJnQmJm4pe2NvbnN0IGU9dFtab25lLl9fc3ltYm9sX18oIk9yaWdpbmFsRGVsZWdhdGUiKV07ZSYmKHQ9ZSk7Y29uc3QgYT1uW1pvbmUuX19zeW1ib2xfXygiT3JpZ2luYWxEZWxlZ2F0ZSIpXTthJiYobj1hKX1yZXR1cm57bmF0aXZlUmVxdWVzdEFuaW1hdGlvbkZyYW1lOnQsbmF0aXZlQ2FuY2VsQW5pbWF0aW9uRnJhbWU6bn19KSgpLm5hdGl2ZVJlcXVlc3RBbmltYXRpb25GcmFtZSwoZnVuY3Rpb24gbyh0KXtjb25zdCBuPSEhdC5zaG91bGRDb2FsZXNjZUV2ZW50Q2hhbmdlRGV0ZWN0aW9uJiZ0Lm5hdGl2ZVJlcXVlc3RBbmltYXRpb25GcmFtZSYmKCgpPT57IShmdW5jdGlvbiBuKHQpey0xPT09dC5sYXN0UmVxdWVzdEFuaW1hdGlvbkZyYW1lSWQmJih0Lmxhc3RSZXF1ZXN0QW5pbWF0aW9uRnJhbWVJZD10Lm5hdGl2ZVJlcXVlc3RBbmltYXRpb25GcmFtZS5jYWxsKG1hLCgoKT0+e3QuZmFrZVRvcEV2ZW50VGFza3x8KHQuZmFrZVRvcEV2ZW50VGFzaz1ab25lLnJvb3Quc2NoZWR1bGVFdmVudFRhc2soImZha2VUb3BFdmVudFRhc2siLCgoKT0+e3QubGFzdFJlcXVlc3RBbmltYXRpb25GcmFtZUlkPS0xLHRDKHQpLCRfKHQpfSksdm9pZCAwLCgoKT0+e30pLCgoKT0+e30pKSksdC5mYWtlVG9wRXZlbnRUYXNrLmludm9rZSgpfSkpLHRDKHQpKX0pKHQpfSk7dC5faW5uZXI9dC5faW5uZXIuZm9yayh7bmFtZToiYW5ndWxhciIscHJvcGVydGllczp7aXNBbmd1bGFyWm9uZTohMCxtYXliZURlbGF5Q2hhbmdlRGV0ZWN0aW9uOm59LG9uSW52b2tlVGFzazooZSxhLG8scixpLGMpPT57dHJ5e3JldHVybiBuQyh0KSxlLmludm9rZVRhc2sobyxyLGksYyl9ZmluYWxseXtuJiYiZXZlbnRUYXNrIj09PXIudHlwZSYmbigpLGVDKHQpfX0sb25JbnZva2U6KG4sZSxhLG8scixpLGMpPT57dHJ5e3JldHVybiBuQyh0KSxuLmludm9rZShhLG8scixpLGMpfWZpbmFsbHl7ZUModCl9fSxvbkhhc1Rhc2s6KG4sZSxhLG8pPT57bi5oYXNUYXNrKGEsbyksZT09PWEmJigibWljcm9UYXNrIj09by5jaGFuZ2U/KHQuX2hhc1BlbmRpbmdNaWNyb3Rhc2tzPW8ubWljcm9UYXNrLHRDKHQpLCRfKHQpKToibWFjcm9UYXNrIj09by5jaGFuZ2UmJih0Lmhhc1BlbmRpbmdNYWNyb3Rhc2tzPW8ubWFjcm9UYXNrKSl9LG9uSGFuZGxlRXJyb3I6KG4sZSxhLG8pPT4obi5oYW5kbGVFcnJvcihhLG8pLHQucnVuT3V0c2lkZUFuZ3VsYXIoKCgpPT50Lm9uRXJyb3IuZW1pdChvKSkpLCExKX0pfSkoZSl9c3RhdGljIGlzSW5Bbmd1bGFyWm9uZSgpe3JldHVybiEwPT09Wm9uZS5jdXJyZW50LmdldCgiaXNBbmd1bGFyWm9uZSIpfXN0YXRpYyBhc3NlcnRJbkFuZ3VsYXJab25lKCl7aWYoIUpfLmlzSW5Bbmd1bGFyWm9uZSgpKXRocm93IG5ldyBFcnJvcigiRXhwZWN0ZWQgdG8gYmUgaW4gQW5ndWxhciBab25lLCBidXQgaXQgaXMgbm90ISIpfXN0YXRpYyBhc3NlcnROb3RJbkFuZ3VsYXJab25lKCl7aWYoSl8uaXNJbkFuZ3VsYXJab25lKCkpdGhyb3cgbmV3IEVycm9yKCJFeHBlY3RlZCB0byBub3QgYmUgaW4gQW5ndWxhciBab25lLCBidXQgaXQgaXMhIil9cnVuKHQsbixlKXtyZXR1cm4gdGhpcy5faW5uZXIucnVuKHQsbixlKX1ydW5UYXNrKHQsbixlLGEpe2NvbnN0IG89dGhpcy5faW5uZXIscj1vLnNjaGVkdWxlRXZlbnRUYXNrKCJOZ1pvbmVFdmVudDogIithLHQsS18sUV8sUV8pO3RyeXtyZXR1cm4gby5ydW5UYXNrKHIsbixlKX1maW5hbGx5e28uY2FuY2VsVGFzayhyKX19cnVuR3VhcmRlZCh0LG4sZSl7cmV0dXJuIHRoaXMuX2lubmVyLnJ1bkd1YXJkZWQodCxuLGUpfXJ1bk91dHNpZGVBbmd1bGFyKHQpe3JldHVybiB0aGlzLl9vdXRlci5ydW4odCl9fWZ1bmN0aW9uIFFfKCl7fWNvbnN0IEtfPXt9O2Z1bmN0aW9uICRfKHQpe2lmKDA9PXQuX25lc3RpbmcmJiF0Lmhhc1BlbmRpbmdNaWNyb3Rhc2tzJiYhdC5pc1N0YWJsZSl0cnl7dC5fbmVzdGluZysrLHQub25NaWNyb3Rhc2tFbXB0eS5lbWl0KG51bGwpfWZpbmFsbHl7aWYodC5fbmVzdGluZy0tLCF0Lmhhc1BlbmRpbmdNaWNyb3Rhc2tzKXRyeXt0LnJ1bk91dHNpZGVBbmd1bGFyKCgoKT0+dC5vblN0YWJsZS5lbWl0KG51bGwpKSl9ZmluYWxseXt0LmlzU3RhYmxlPSEwfX19ZnVuY3Rpb24gdEModCl7dC5oYXNQZW5kaW5nTWljcm90YXNrcz0hISh0Ll9oYXNQZW5kaW5nTWljcm90YXNrc3x8dC5zaG91bGRDb2FsZXNjZUV2ZW50Q2hhbmdlRGV0ZWN0aW9uJiYtMSE9PXQubGFzdFJlcXVlc3RBbmltYXRpb25GcmFtZUlkKX1mdW5jdGlvbiBuQyh0KXt0Ll9uZXN0aW5nKyssdC5pc1N0YWJsZSYmKHQuaXNTdGFibGU9ITEsdC5vblVuc3RhYmxlLmVtaXQobnVsbCkpfWZ1bmN0aW9uIGVDKHQpe3QuX25lc3RpbmctLSwkXyh0KX1jbGFzcyBhQ3tjb25zdHJ1Y3Rvcigpe3RoaXMuaGFzUGVuZGluZ01pY3JvdGFza3M9ITEsdGhpcy5oYXNQZW5kaW5nTWFjcm90YXNrcz0hMSx0aGlzLmlzU3RhYmxlPSEwLHRoaXMub25VbnN0YWJsZT1uZXcgRWYsdGhpcy5vbk1pY3JvdGFza0VtcHR5PW5ldyBFZix0aGlzLm9uU3RhYmxlPW5ldyBFZix0aGlzLm9uRXJyb3I9bmV3IEVmfXJ1bih0LG4sZSl7cmV0dXJuIHQuYXBwbHkobixlKX1ydW5HdWFyZGVkKHQsbixlKXtyZXR1cm4gdC5hcHBseShuLGUpfXJ1bk91dHNpZGVBbmd1bGFyKHQpe3JldHVybiB0KCl9cnVuVGFzayh0LG4sZSxhKXtyZXR1cm4gdC5hcHBseShuLGUpfX0KLyoqCiAgICAgKiBAbGljZW5zZQogICAgICogQ29weXJpZ2h0IEdvb2dsZSBMTEMgQWxsIFJpZ2h0cyBSZXNlcnZlZC4KICAgICAqCiAgICAgKiBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhbiBNSVQtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQogICAgICogZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZSBhdCBodHRwczovL2FuZ3VsYXIuaW8vbGljZW5zZQogICAgICovY2xhc3Mgb0N7Y29uc3RydWN0b3IodCl7dGhpcy5fbmdab25lPXQsdGhpcy5fcGVuZGluZ0NvdW50PTAsdGhpcy5faXNab25lU3RhYmxlPSEwLHRoaXMuX2RpZFdvcms9ITEsdGhpcy5fY2FsbGJhY2tzPVtdLHRoaXMudGFza1RyYWNraW5nWm9uZT1udWxsLHRoaXMuX3dhdGNoQW5ndWxhckV2ZW50cygpLHQucnVuKCgoKT0+e3RoaXMudGFza1RyYWNraW5nWm9uZT0idW5kZWZpbmVkIj09dHlwZW9mIFpvbmU/bnVsbDpab25lLmN1cnJlbnQuZ2V0KCJUYXNrVHJhY2tpbmdab25lIil9KSl9X3dhdGNoQW5ndWxhckV2ZW50cygpe3RoaXMuX25nWm9uZS5vblVuc3RhYmxlLnN1YnNjcmliZSh7bmV4dDooKT0+e3RoaXMuX2RpZFdvcms9ITAsdGhpcy5faXNab25lU3RhYmxlPSExfX0pLHRoaXMuX25nWm9uZS5ydW5PdXRzaWRlQW5ndWxhcigoKCk9Pnt0aGlzLl9uZ1pvbmUub25TdGFibGUuc3Vic2NyaWJlKHtuZXh0OigpPT57Sl8uYXNzZXJ0Tm90SW5Bbmd1bGFyWm9uZSgpLFhfKCgoKT0+e3RoaXMuX2lzWm9uZVN0YWJsZT0hMCx0aGlzLl9ydW5DYWxsYmFja3NJZlJlYWR5KCl9KSl9fSl9KSl9aW5jcmVhc2VQZW5kaW5nUmVxdWVzdENvdW50KCl7cmV0dXJuIHRoaXMuX3BlbmRpbmdDb3VudCs9MSx0aGlzLl9kaWRXb3JrPSEwLHRoaXMuX3BlbmRpbmdDb3VudH1kZWNyZWFzZVBlbmRpbmdSZXF1ZXN0Q291bnQoKXtpZih0aGlzLl9wZW5kaW5nQ291bnQtPTEsdGhpcy5fcGVuZGluZ0NvdW50PDApdGhyb3cgbmV3IEVycm9yKCJwZW5kaW5nIGFzeW5jIHJlcXVlc3RzIGJlbG93IHplcm8iKTtyZXR1cm4gdGhpcy5fcnVuQ2FsbGJhY2tzSWZSZWFkeSgpLHRoaXMuX3BlbmRpbmdDb3VudH1pc1N0YWJsZSgpe3JldHVybiB0aGlzLl9pc1pvbmVTdGFibGUmJjA9PT10aGlzLl9wZW5kaW5nQ291bnQmJiF0aGlzLl9uZ1pvbmUuaGFzUGVuZGluZ01hY3JvdGFza3N9X3J1bkNhbGxiYWNrc0lmUmVhZHkoKXtpZih0aGlzLmlzU3RhYmxlKCkpWF8oKCgpPT57Zm9yKDswIT09dGhpcy5fY2FsbGJhY2tzLmxlbmd0aDspe2xldCB0PXRoaXMuX2NhbGxiYWNrcy5wb3AoKTtjbGVhclRpbWVvdXQodC50aW1lb3V0SWQpLHQuZG9uZUNiKHRoaXMuX2RpZFdvcmspfXRoaXMuX2RpZFdvcms9ITF9KSk7ZWxzZXtsZXQgdD10aGlzLmdldFBlbmRpbmdUYXNrcygpO3RoaXMuX2NhbGxiYWNrcz10aGlzLl9jYWxsYmFja3MuZmlsdGVyKChuPT4hbi51cGRhdGVDYnx8IW4udXBkYXRlQ2IodCl8fChjbGVhclRpbWVvdXQobi50aW1lb3V0SWQpLCExKSkpLHRoaXMuX2RpZFdvcms9ITB9fWdldFBlbmRpbmdUYXNrcygpe3JldHVybiB0aGlzLnRhc2tUcmFja2luZ1pvbmU/dGhpcy50YXNrVHJhY2tpbmdab25lLm1hY3JvVGFza3MubWFwKCh0PT4oe3NvdXJjZTp0LnNvdXJjZSxjcmVhdGlvbkxvY2F0aW9uOnQuY3JlYXRpb25Mb2NhdGlvbixkYXRhOnQuZGF0YX0pKSk6W119YWRkQ2FsbGJhY2sodCxuLGUpe2xldCBhPS0xO24mJm4+MCYmKGE9c2V0VGltZW91dCgoKCk9Pnt0aGlzLl9jYWxsYmFja3M9dGhpcy5fY2FsbGJhY2tzLmZpbHRlcigodD0+dC50aW1lb3V0SWQhPT1hKSksdCh0aGlzLl9kaWRXb3JrLHRoaXMuZ2V0UGVuZGluZ1Rhc2tzKCkpfSksbikpLHRoaXMuX2NhbGxiYWNrcy5wdXNoKHtkb25lQ2I6dCx0aW1lb3V0SWQ6YSx1cGRhdGVDYjplfSl9d2hlblN0YWJsZSh0LG4sZSl7aWYoZSYmIXRoaXMudGFza1RyYWNraW5nWm9uZSl0aHJvdyBuZXcgRXJyb3IoJ1Rhc2sgdHJhY2tpbmcgem9uZSBpcyByZXF1aXJlZCB3aGVuIHBhc3NpbmcgYW4gdXBkYXRlIGNhbGxiYWNrIHRvIHdoZW5TdGFibGUoKS4gSXMgInpvbmUuanMvZGlzdC90YXNrLXRyYWNraW5nLmpzIiBsb2FkZWQ/Jyk7dGhpcy5hZGRDYWxsYmFjayh0LG4sZSksdGhpcy5fcnVuQ2FsbGJhY2tzSWZSZWFkeSgpfWdldFBlbmRpbmdSZXF1ZXN0Q291bnQoKXtyZXR1cm4gdGhpcy5fcGVuZGluZ0NvdW50fWZpbmRQcm92aWRlcnModCxuLGUpe3JldHVybltdfX1vQy7JtWZhYz1mdW5jdGlvbiB0KG4pe3JldHVybiBuZXcobnx8b0MpKFphKEpfKSl9LG9DLsm1cHJvdj1XZSh7dG9rZW46b0MsZmFjdG9yeTpvQy7JtWZhY30pLG9DLmN0b3JQYXJhbWV0ZXJzPSgpPT5be3R5cGU6Sl99XTtjbGFzcyByQ3tjb25zdHJ1Y3Rvcigpe3RoaXMuX2FwcGxpY2F0aW9ucz1uZXcgTWFwLGNDLmFkZFRvV2luZG93KHRoaXMpfXJlZ2lzdGVyQXBwbGljYXRpb24odCxuKXt0aGlzLl9hcHBsaWNhdGlvbnMuc2V0KHQsbil9dW5yZWdpc3RlckFwcGxpY2F0aW9uKHQpe3RoaXMuX2FwcGxpY2F0aW9ucy5kZWxldGUodCl9dW5yZWdpc3RlckFsbEFwcGxpY2F0aW9ucygpe3RoaXMuX2FwcGxpY2F0aW9ucy5jbGVhcigpfWdldFRlc3RhYmlsaXR5KHQpe3JldHVybiB0aGlzLl9hcHBsaWNhdGlvbnMuZ2V0KHQpfHxudWxsfWdldEFsbFRlc3RhYmlsaXRpZXMoKXtyZXR1cm4gQXJyYXkuZnJvbSh0aGlzLl9hcHBsaWNhdGlvbnMudmFsdWVzKCkpfWdldEFsbFJvb3RFbGVtZW50cygpe3JldHVybiBBcnJheS5mcm9tKHRoaXMuX2FwcGxpY2F0aW9ucy5rZXlzKCkpfWZpbmRUZXN0YWJpbGl0eUluVHJlZSh0LG49ITApe3JldHVybiBjQy5maW5kVGVzdGFiaWxpdHlJblRyZWUodGhpcyx0LG4pfX1yQy7JtWZhYz1mdW5jdGlvbiB0KG4pe3JldHVybiBuZXcobnx8ckMpfSxyQy7JtXByb3Y9V2Uoe3Rva2VuOnJDLGZhY3Rvcnk6ckMuybVmYWN9KSxyQy5jdG9yUGFyYW1ldGVycz0oKT0+W107bGV0IGlDLGNDPW5ldyBjbGFzc3thZGRUb1dpbmRvdyh0KXt9ZmluZFRlc3RhYmlsaXR5SW5UcmVlKHQsbixlKXtyZXR1cm4gbnVsbH19OwovKioKICAgICAqIEBsaWNlbnNlCiAgICAgKiBDb3B5cmlnaHQgR29vZ2xlIExMQyBBbGwgUmlnaHRzIFJlc2VydmVkLgogICAgICoKICAgICAqIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGFuIE1JVC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCiAgICAgKiBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlIGF0IGh0dHBzOi8vYW5ndWxhci5pby9saWNlbnNlCiAgICAgKi9jb25zdCBzQz1uZXcgRmEoIkFsbG93TXVsdGlwbGVUb2tlbiIpO2Z1bmN0aW9uIGxDKHQsbixlPVtdKXtjb25zdCBhPWBQbGF0Zm9ybTogJHtufWAsbz1uZXcgRmEoYSk7cmV0dXJuKG49W10pPT57bGV0IHI9bUMoKTtpZighcnx8ci5pbmplY3Rvci5nZXQoc0MsITEpKWlmKHQpdChlLmNvbmNhdChuKS5jb25jYXQoe3Byb3ZpZGU6byx1c2VWYWx1ZTohMH0pKTtlbHNle2NvbnN0IHQ9ZS5jb25jYXQobikuY29uY2F0KHtwcm92aWRlOm8sdXNlVmFsdWU6ITB9LHtwcm92aWRlOmxkLHVzZVZhbHVlOiJwbGF0Zm9ybSJ9KTshKGZ1bmN0aW9uIGkodCl7aWYoaUMmJiFpQy5kZXN0cm95ZWQmJiFpQy5pbmplY3Rvci5nZXQoc0MsITEpKXRocm93IG5ldyBFcnJvcigiVGhlcmUgY2FuIGJlIG9ubHkgb25lIHBsYXRmb3JtLiBEZXN0cm95IHRoZSBwcmV2aW91cyBvbmUgdG8gY3JlYXRlIGEgbmV3IG9uZS4iKTsoZnVuY3Rpb24gbigpe25nRGV2TW9kZSYmKGZ1bmN0aW9uIHQoKXtwZ3x8KHBnPSEwLGJnKCJnZXRDb21wb25lbnQiLG5nKSxiZygiZ2V0Q29udGV4dCIsZWcpLGJnKCJnZXRMaXN0ZW5lcnMiLGxnKSxiZygiZ2V0T3duaW5nQ29tcG9uZW50IixhZyksYmcoImdldEhvc3RFbGVtZW50IixzZyksYmcoImdldEluamVjdG9yIixyZyksYmcoImdldFJvb3RDb21wb25lbnRzIixvZyksYmcoImdldERpcmVjdGl2ZXMiLGlnKSxiZygiYXBwbHlDaGFuZ2VzIixnZykpfSkoKX0pKCksaUM9dC5nZXQoZEMpO2NvbnN0IGU9dC5nZXQoUl8sbnVsbCk7ZSYmZS5mb3JFYWNoKCh0PT50KCkpKX0pKHlkLmNyZWF0ZSh7cHJvdmlkZXJzOnQsbmFtZTphfSkpfXJldHVybihmdW5jdGlvbiBjKHQpe2NvbnN0IG49bUMoKTtpZighbil0aHJvdyBuZXcgRXJyb3IoIk5vIHBsYXRmb3JtIGV4aXN0cyEiKTtpZighbi5pbmplY3Rvci5nZXQodCxudWxsKSl0aHJvdyBuZXcgRXJyb3IoIkEgcGxhdGZvcm0gd2l0aCBhIGRpZmZlcmVudCBjb25maWd1cmF0aW9uIGhhcyBiZWVuIGNyZWF0ZWQuIFBsZWFzZSBkZXN0cm95IGl0IGZpcnN0LiIpO3JldHVybiBufSkobyl9fWZ1bmN0aW9uIG1DKCl7cmV0dXJuIGlDJiYhaUMuZGVzdHJveWVkP2lDOm51bGx9Y2xhc3MgZEN7Y29uc3RydWN0b3IodCl7dGhpcy5faW5qZWN0b3I9dCx0aGlzLl9tb2R1bGVzPVtdLHRoaXMuX2Rlc3Ryb3lMaXN0ZW5lcnM9W10sdGhpcy5fZGVzdHJveWVkPSExfWJvb3RzdHJhcE1vZHVsZUZhY3RvcnkodCxuKXtjb25zdCBlPShmdW5jdGlvbiBhKHQsbil7bGV0IGU7cmV0dXJuIGU9Im5vb3AiPT09dD9uZXcgYUM6KCJ6b25lLmpzIj09PXQ/dm9pZCAwOnQpfHxuZXcgSl8oe2VuYWJsZUxvbmdTdGFja1RyYWNlOl9jKCksc2hvdWxkQ29hbGVzY2VFdmVudENoYW5nZURldGVjdGlvbjpufSksZX0pKG4/bi5uZ1pvbmU6dm9pZCAwLG4mJm4ubmdab25lRXZlbnRDb2FsZXNjaW5nfHwhMSksbz1be3Byb3ZpZGU6Sl8sdXNlVmFsdWU6ZX1dO3JldHVybiBlLnJ1bigoKCk9Pntjb25zdCBuPXlkLmNyZWF0ZSh7cHJvdmlkZXJzOm8scGFyZW50OnRoaXMuaW5qZWN0b3IsbmFtZTp0Lm1vZHVsZVR5cGUubmFtZX0pLGE9dC5jcmVhdGUobikscj1hLmluamVjdG9yLmdldChvYyxudWxsKTtpZighcil0aHJvdyBuZXcgRXJyb3IoIk5vIEVycm9ySGFuZGxlci4gSXMgcGxhdGZvcm0gbW9kdWxlIChCcm93c2VyTW9kdWxlKSBpbmNsdWRlZD8iKTtyZXR1cm4gYS5vbkRlc3Ryb3koKCgpPT5iQyh0aGlzLl9tb2R1bGVzLGEpKSksZS5ydW5PdXRzaWRlQW5ndWxhcigoKCk9PmUub25FcnJvci5zdWJzY3JpYmUoe25leHQ6dD0+e3IuaGFuZGxlRXJyb3IodCl9fSkpKSwoZnVuY3Rpb24gaSh0LG4sZSl7dHJ5e2NvbnN0IGE9ZSgpO3JldHVybiBycChhKT9hLmNhdGNoKChlPT57dGhyb3cgbi5ydW5PdXRzaWRlQW5ndWxhcigoKCk9PnQuaGFuZGxlRXJyb3IoZSkpKSxlfSkpOmF9Y2F0Y2goZSl7dGhyb3cgbi5ydW5PdXRzaWRlQW5ndWxhcigoKCk9PnQuaGFuZGxlRXJyb3IoZSkpKSxlfX0pKHIsZSwoKCk9Pntjb25zdCB0PWEuaW5qZWN0b3IuZ2V0KHdfKTtyZXR1cm4gdC5ydW5Jbml0aWFsaXplcnMoKSx0LmRvbmVQcm9taXNlLnRoZW4oKCgpPT4oaGIoYS5pbmplY3Rvci5nZXQoTl8scGIpfHxwYiksdGhpcy5fbW9kdWxlRG9Cb290c3RyYXAoYSksYSkpKX0pKX0pKX1ib290c3RyYXBNb2R1bGUodCxuPVtdKXtjb25zdCBlPWdDKHt9LG4pO3JldHVybihmdW5jdGlvbiBhKHQsbixlKXtuZ0Rldk1vZGUmJihmdW5jdGlvbiBhKHQsbj0iVHlwZSBwYXNzZWQgaW4gaXMgbm90IE5nTW9kdWxlVHlwZSwgaXQgZG9lcyBub3QgaGF2ZSAnybVtb2QnIHByb3BlcnR5LiIpe1JvKHQpfHxEYShuKX0pKGUpO2NvbnN0IG89bmV3IHBmKGUpO2lmKCJ1bmRlZmluZWQiIT10eXBlb2YgbmdKaXRNb2RlJiYhbmdKaXRNb2RlKXJldHVybiBQcm9taXNlLnJlc29sdmUobyk7Y29uc3Qgcj10LmdldChxXyxbXSkuY29uY2F0KG4pO2lmKChmdW5jdGlvbiBpKHQpe2lmKG51bGwhPT1OaCl7aWYodC5kZWZhdWx0RW5jYXBzdWxhdGlvbiE9PU5oLmRlZmF1bHRFbmNhcHN1bGF0aW9uKXJldHVybiB2b2lkKG5nRGV2TW9kZSYmY29uc29sZS5lcnJvcigiUHJvdmlkZWQgdmFsdWUgZm9yIGBkZWZhdWx0RW5jYXBzdWxhdGlvbmAgY2FuIG5vdCBiZSBjaGFuZ2VkIG9uY2UgaXQgaGFzIGJlZW4gc2V0LiIpKTtpZih0LnByZXNlcnZlV2hpdGVzcGFjZXMhPT1OaC5wcmVzZXJ2ZVdoaXRlc3BhY2VzKXJldHVybiB2b2lkKG5nRGV2TW9kZSYmY29uc29sZS5lcnJvcigiUHJvdmlkZWQgdmFsdWUgZm9yIGBwcmVzZXJ2ZVdoaXRlc3BhY2VzYCBjYW4gbm90IGJlIGNoYW5nZWQgb25jZSBpdCBoYXMgYmVlbiBzZXQuIikpfU5oPXR9KSh7ZGVmYXVsdEVuY2Fwc3VsYXRpb246dUMoci5tYXAoKHQ9PnQuZGVmYXVsdEVuY2Fwc3VsYXRpb24pKSkscHJlc2VydmVXaGl0ZXNwYWNlczp1QyhyLm1hcCgodD0+dC5wcmVzZXJ2ZVdoaXRlc3BhY2VzKSkpfSksKGZ1bmN0aW9uIGMoKXtyZXR1cm4gMD09PUpkLnNpemV9KSgpKXJldHVybiBQcm9taXNlLnJlc29sdmUobyk7Y29uc3Qgcz0oZnVuY3Rpb24gbCh0KXtjb25zdCBuPVtdO3JldHVybiB0LmZvckVhY2goKHQ9PnQmJm4ucHVzaCguLi50KSkpLG59Ci8qKgogICAgICogQGxpY2Vuc2UKICAgICAqIENvcHlyaWdodCBHb29nbGUgTExDIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCiAgICAgKgogICAgICogVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYW4gTUlULXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKICAgICAqIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUgYXQgaHR0cHM6Ly9hbmd1bGFyLmlvL2xpY2Vuc2UKICAgICAqLykoci5tYXAoKHQ9PnQucHJvdmlkZXJzKSkpO2lmKDA9PT1zLmxlbmd0aClyZXR1cm4gUHJvbWlzZS5yZXNvbHZlKG8pO2NvbnN0IG09YmEoKSxkPXlkLmNyZWF0ZSh7cHJvdmlkZXJzOnN9KS5nZXQobS5SZXNvdXJjZUxvYWRlcik7Ci8qKgogICAgICogQGxpY2Vuc2UKICAgICAqIENvcHlyaWdodCBHb29nbGUgTExDIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCiAgICAgKgogICAgICogVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYW4gTUlULXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKICAgICAqIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUgYXQgaHR0cHM6Ly9hbmd1bGFyLmlvL2xpY2Vuc2UKICAgICAqLwpyZXR1cm4oZnVuY3Rpb24gZyh0KXtjb25zdCBuPVtdLGU9bmV3IE1hcDtmdW5jdGlvbiBhKG4pe2xldCBhPWUuZ2V0KG4pO2lmKCFhKXtjb25zdCBvPXQobik7ZS5zZXQobixhPW8udGhlbigkZCkpfXJldHVybiBhfXJldHVybiBKZC5mb3JFYWNoKCgodCxlKT0+e2NvbnN0IG89W107dC50ZW1wbGF0ZVVybCYmby5wdXNoKGEodC50ZW1wbGF0ZVVybCkudGhlbigobj0+e3QudGVtcGxhdGU9bn0pKSk7Y29uc3Qgcj10LnN0eWxlVXJscyxpPXQuc3R5bGVzfHwodC5zdHlsZXM9W10pLGM9dC5zdHlsZXMubGVuZ3RoO3ImJnIuZm9yRWFjaCgoKG4sZSk9PntpLnB1c2goIiIpLG8ucHVzaChhKG4pLnRoZW4oKGE9PntpW2MrZV09YSxyLnNwbGljZShyLmluZGV4T2YobiksMSksMD09ci5sZW5ndGgmJih0LnN0eWxlVXJscz12b2lkIDApfSkpKX0pKTtjb25zdCBzPVByb21pc2UuYWxsKG8pLnRoZW4oKCgpPT4oZnVuY3Rpb24gdChuKXtRZC5kZWxldGUobil9KShlKSkpO24ucHVzaChzKX0pKSwoZnVuY3Rpb24gbygpe0pkPW5ldyBNYXB9KSgpLFByb21pc2UuYWxsKG4pLnRoZW4oKCgpPT57fSkpfSkoKHQ9PlByb21pc2UucmVzb2x2ZShkLmdldCh0KSkpKS50aGVuKCgoKT0+bykpfSkodGhpcy5pbmplY3RvcixlLHQpLnRoZW4oKHQ9PnRoaXMuYm9vdHN0cmFwTW9kdWxlRmFjdG9yeSh0LGUpKSl9X21vZHVsZURvQm9vdHN0cmFwKHQpe2NvbnN0IG49dC5pbmplY3Rvci5nZXQocEMpO2lmKHQuX2Jvb3RzdHJhcENvbXBvbmVudHMubGVuZ3RoPjApdC5fYm9vdHN0cmFwQ29tcG9uZW50cy5mb3JFYWNoKCh0PT5uLmJvb3RzdHJhcCh0KSkpO2Vsc2V7aWYoIXQuaW5zdGFuY2UubmdEb0Jvb3RzdHJhcCl0aHJvdyBuZXcgRXJyb3IoYFRoZSBtb2R1bGUgJHt0YSh0Lmluc3RhbmNlLmNvbnN0cnVjdG9yKX0gd2FzIGJvb3RzdHJhcHBlZCwgYnV0IGl0IGRvZXMgbm90IGRlY2xhcmUgIkBOZ01vZHVsZS5ib290c3RyYXAiIGNvbXBvbmVudHMgbm9yIGEgIm5nRG9Cb290c3RyYXAiIG1ldGhvZC4gUGxlYXNlIGRlZmluZSBvbmUgb2YgdGhlc2UuYCk7dC5pbnN0YW5jZS5uZ0RvQm9vdHN0cmFwKG4pfXRoaXMuX21vZHVsZXMucHVzaCh0KX1vbkRlc3Ryb3kodCl7dGhpcy5fZGVzdHJveUxpc3RlbmVycy5wdXNoKHQpfWdldCBpbmplY3Rvcigpe3JldHVybiB0aGlzLl9pbmplY3Rvcn1kZXN0cm95KCl7aWYodGhpcy5fZGVzdHJveWVkKXRocm93IG5ldyBFcnJvcigiVGhlIHBsYXRmb3JtIGhhcyBhbHJlYWR5IGJlZW4gZGVzdHJveWVkISIpO3RoaXMuX21vZHVsZXMuc2xpY2UoKS5mb3JFYWNoKCh0PT50LmRlc3Ryb3koKSkpLHRoaXMuX2Rlc3Ryb3lMaXN0ZW5lcnMuZm9yRWFjaCgodD0+dCgpKSksdGhpcy5fZGVzdHJveWVkPSEwfWdldCBkZXN0cm95ZWQoKXtyZXR1cm4gdGhpcy5fZGVzdHJveWVkfX1mdW5jdGlvbiBnQyh0LG4pe3JldHVybiBBcnJheS5pc0FycmF5KG4pP24ucmVkdWNlKGdDLHQpOk9iamVjdC5hc3NpZ24oT2JqZWN0LmFzc2lnbih7fSx0KSxuKX1kQy7JtWZhYz1mdW5jdGlvbiB0KG4pe3JldHVybiBuZXcobnx8ZEMpKFphKHlkKSl9LGRDLsm1cHJvdj1XZSh7dG9rZW46ZEMsZmFjdG9yeTpkQy7JtWZhY30pLGRDLmN0b3JQYXJhbWV0ZXJzPSgpPT5be3R5cGU6eWR9XTtjbGFzcyBwQ3tjb25zdHJ1Y3Rvcih0LG4sZSxhLG8scil7dGhpcy5fem9uZT10LHRoaXMuX2NvbnNvbGU9bix0aGlzLl9pbmplY3Rvcj1lLHRoaXMuX2V4Y2VwdGlvbkhhbmRsZXI9YSx0aGlzLl9jb21wb25lbnRGYWN0b3J5UmVzb2x2ZXI9byx0aGlzLl9pbml0U3RhdHVzPXIsdGhpcy5fYm9vdHN0cmFwTGlzdGVuZXJzPVtdLHRoaXMuX3ZpZXdzPVtdLHRoaXMuX3J1bm5pbmdUaWNrPSExLHRoaXMuX2VuZm9yY2VOb05ld0NoYW5nZXM9ITEsdGhpcy5fc3RhYmxlPSEwLHRoaXMuY29tcG9uZW50VHlwZXM9W10sdGhpcy5jb21wb25lbnRzPVtdLHRoaXMuX2VuZm9yY2VOb05ld0NoYW5nZXM9X2MoKSx0aGlzLl96b25lLm9uTWljcm90YXNrRW1wdHkuc3Vic2NyaWJlKHtuZXh0OigpPT57dGhpcy5fem9uZS5ydW4oKCgpPT57dGhpcy50aWNrKCl9KSl9fSk7Y29uc3QgaT1uZXcgXygodD0+e3RoaXMuX3N0YWJsZT10aGlzLl96b25lLmlzU3RhYmxlJiYhdGhpcy5fem9uZS5oYXNQZW5kaW5nTWFjcm90YXNrcyYmIXRoaXMuX3pvbmUuaGFzUGVuZGluZ01pY3JvdGFza3MsdGhpcy5fem9uZS5ydW5PdXRzaWRlQW5ndWxhcigoKCk9Pnt0Lm5leHQodGhpcy5fc3RhYmxlKSx0LmNvbXBsZXRlKCl9KSl9KSksYz1uZXcgXygodD0+e2xldCBuO3RoaXMuX3pvbmUucnVuT3V0c2lkZUFuZ3VsYXIoKCgpPT57bj10aGlzLl96b25lLm9uU3RhYmxlLnN1YnNjcmliZSgoKCk9PntKXy5hc3NlcnROb3RJbkFuZ3VsYXJab25lKCksWF8oKCgpPT57dGhpcy5fc3RhYmxlfHx0aGlzLl96b25lLmhhc1BlbmRpbmdNYWNyb3Rhc2tzfHx0aGlzLl96b25lLmhhc1BlbmRpbmdNaWNyb3Rhc2tzfHwodGhpcy5fc3RhYmxlPSEwLHQubmV4dCghMCkpfSkpfSkpfSkpO2NvbnN0IGU9dGhpcy5fem9uZS5vblVuc3RhYmxlLnN1YnNjcmliZSgoKCk9PntKXy5hc3NlcnRJbkFuZ3VsYXJab25lKCksdGhpcy5fc3RhYmxlJiYodGhpcy5fc3RhYmxlPSExLHRoaXMuX3pvbmUucnVuT3V0c2lkZUFuZ3VsYXIoKCgpPT57dC5uZXh0KCExKX0pKSl9KSk7cmV0dXJuKCk9PntuLnVuc3Vic2NyaWJlKCksZS51bnN1YnNjcmliZSgpfX0pKTt0aGlzLmlzU3RhYmxlPVd0KGksYy5waXBlKGVlKCkpKX1ib290c3RyYXAodCxuKXtpZighdGhpcy5faW5pdFN0YXR1cy5kb25lKXRocm93IG5ldyBFcnJvcigiQ2Fubm90IGJvb3RzdHJhcCBhcyB0aGVyZSBhcmUgc3RpbGwgYXN5bmNocm9ub3VzIGluaXRpYWxpemVycyBydW5uaW5nLiBCb290c3RyYXAgY29tcG9uZW50cyBpbiB0aGUgYG5nRG9Cb290c3RyYXBgIG1ldGhvZCBvZiB0aGUgcm9vdCBtb2R1bGUuIik7bGV0IGU7ZT10IGluc3RhbmNlb2YgT3U/dDp0aGlzLl9jb21wb25lbnRGYWN0b3J5UmVzb2x2ZXIucmVzb2x2ZUNvbXBvbmVudEZhY3RvcnkodCksdGhpcy5jb21wb25lbnRUeXBlcy5wdXNoKGUuY29tcG9uZW50VHlwZSk7Y29uc3QgYT0oZnVuY3Rpb24gbyh0KXtyZXR1cm4gdC5pc0JvdW5kVG9Nb2R1bGV9KShlKT92b2lkIDA6dGhpcy5faW5qZWN0b3IuZ2V0KG5vKSxyPWUuY3JlYXRlKHlkLk5VTEwsW10sbnx8ZS5zZWxlY3RvcixhKTtyLm9uRGVzdHJveSgoKCk9Pnt0aGlzLl91bmxvYWRDb21wb25lbnQocil9KSk7Y29uc3QgaT1yLmluamVjdG9yLmdldChvQyxudWxsKTtyZXR1cm4gaSYmci5pbmplY3Rvci5nZXQockMpLnJlZ2lzdGVyQXBwbGljYXRpb24oci5sb2NhdGlvbi5uYXRpdmVFbGVtZW50LGkpLHRoaXMuX2xvYWRDb21wb25lbnQociksX2MoKSYmdGhpcy5fY29uc29sZS5sb2coIkFuZ3VsYXIgaXMgcnVubmluZyBpbiBkZXZlbG9wbWVudCBtb2RlLiBDYWxsIGVuYWJsZVByb2RNb2RlKCkgdG8gZW5hYmxlIHByb2R1Y3Rpb24gbW9kZS4iKSxyfXRpY2soKXtpZih0aGlzLl9ydW5uaW5nVGljayl0aHJvdyBuZXcgRXJyb3IoIkFwcGxpY2F0aW9uUmVmLnRpY2sgaXMgY2FsbGVkIHJlY3Vyc2l2ZWx5Iik7dHJ5e3RoaXMuX3J1bm5pbmdUaWNrPSEwO2ZvcihsZXQgdCBvZiB0aGlzLl92aWV3cyl0LmRldGVjdENoYW5nZXMoKTtpZih0aGlzLl9lbmZvcmNlTm9OZXdDaGFuZ2VzKWZvcihsZXQgdCBvZiB0aGlzLl92aWV3cyl0LmNoZWNrTm9DaGFuZ2VzKCl9Y2F0Y2godCl7dGhpcy5fem9uZS5ydW5PdXRzaWRlQW5ndWxhcigoKCk9PnRoaXMuX2V4Y2VwdGlvbkhhbmRsZXIuaGFuZGxlRXJyb3IodCkpKX1maW5hbGx5e3RoaXMuX3J1bm5pbmdUaWNrPSExfX1hdHRhY2hWaWV3KHQpe2NvbnN0IG49dDt0aGlzLl92aWV3cy5wdXNoKG4pLG4uYXR0YWNoVG9BcHBSZWYodGhpcyl9ZGV0YWNoVmlldyh0KXtjb25zdCBuPXQ7YkModGhpcy5fdmlld3Msbiksbi5kZXRhY2hGcm9tQXBwUmVmKCl9X2xvYWRDb21wb25lbnQodCl7dGhpcy5hdHRhY2hWaWV3KHQuaG9zdFZpZXcpLHRoaXMudGljaygpLHRoaXMuY29tcG9uZW50cy5wdXNoKHQpLHRoaXMuX2luamVjdG9yLmdldChEXyxbXSkuY29uY2F0KHRoaXMuX2Jvb3RzdHJhcExpc3RlbmVycykuZm9yRWFjaCgobj0+bih0KSkpfV91bmxvYWRDb21wb25lbnQodCl7dGhpcy5kZXRhY2hWaWV3KHQuaG9zdFZpZXcpLGJDKHRoaXMuY29tcG9uZW50cyx0KX1uZ09uRGVzdHJveSgpe3RoaXMuX3ZpZXdzLnNsaWNlKCkuZm9yRWFjaCgodD0+dC5kZXN0cm95KCkpKX1nZXQgdmlld0NvdW50KCl7cmV0dXJuIHRoaXMuX3ZpZXdzLmxlbmd0aH19ZnVuY3Rpb24gYkModCxuKXtjb25zdCBlPXQuaW5kZXhPZihuKTtlPi0xJiZ0LnNwbGljZShlLDEpfWZ1bmN0aW9uIHVDKHQpe2ZvcihsZXQgbj10Lmxlbmd0aC0xO24+PTA7bi0tKWlmKHZvaWQgMCE9PXRbbl0pcmV0dXJuIHRbbl19cEMuybVmYWM9ZnVuY3Rpb24gdChuKXtyZXR1cm4gbmV3KG58fHBDKShaYShKXyksWmEoSV8pLFphKHlkKSxaYShvYyksWmEoUHUpLFphKHdfKSl9LHBDLsm1cHJvdj1XZSh7dG9rZW46cEMsZmFjdG9yeTpwQy7JtWZhY30pLHBDLmN0b3JQYXJhbWV0ZXJzPSgpPT5be3R5cGU6Sl99LHt0eXBlOklffSx7dHlwZTp5ZH0se3R5cGU6b2N9LHt0eXBlOlB1fSx7dHlwZTp3X31dO2NsYXNzIGZDe31jb25zdCBoQz17ZmFjdG9yeVBhdGhQcmVmaXg6IiIsZmFjdG9yeVBhdGhTdWZmaXg6Ii5uZ2ZhY3RvcnkifTtjbGFzcyBfQ3tjb25zdHJ1Y3Rvcih0LG4pe3RoaXMuX2NvbXBpbGVyPXQsdGhpcy5fY29uZmlnPW58fGhDfWxvYWQodCl7cmV0dXJuIHRoaXMubG9hZEFuZENvbXBpbGUodCl9bG9hZEFuZENvbXBpbGUodCl7bGV0W24sZV09dC5zcGxpdCgiIyIpO3JldHVybiB2b2lkIDA9PT1lJiYoZT0iZGVmYXVsdCIpLFN5c3RlbS5pbXBvcnQobikudGhlbigodD0+dFtlXSkpLnRoZW4oKHQ9PkNDKHQsbixlKSkpLnRoZW4oKHQ9PnRoaXMuX2NvbXBpbGVyLmNvbXBpbGVNb2R1bGVBc3luYyh0KSkpfWxvYWRGYWN0b3J5KHQpe2xldFtuLGVdPXQuc3BsaXQoIiMiKSxhPSJOZ0ZhY3RvcnkiO3JldHVybiB2b2lkIDA9PT1lJiYoZT0iZGVmYXVsdCIsYT0iIiksU3lzdGVtLmltcG9ydCh0aGlzLl9jb25maWcuZmFjdG9yeVBhdGhQcmVmaXgrbit0aGlzLl9jb25maWcuZmFjdG9yeVBhdGhTdWZmaXgpLnRoZW4oKHQ9PnRbZSthXSkpLnRoZW4oKHQ9PkNDKHQsbixlKSkpfX1mdW5jdGlvbiBDQyh0LG4sZSl7aWYoIXQpdGhyb3cgbmV3IEVycm9yKGBDYW5ub3QgZmluZCAnJHtlfScgaW4gJyR7bn0nYCk7cmV0dXJuIHR9X0MuybVmYWM9ZnVuY3Rpb24gdChuKXtyZXR1cm4gbmV3KG58fF9DKShaYShZXyksWmEoZkMsOCkpfSxfQy7JtXByb3Y9V2Uoe3Rva2VuOl9DLGZhY3Rvcnk6X0MuybVmYWN9KSxfQy5jdG9yUGFyYW1ldGVycz0oKT0+W3t0eXBlOllffSx7dHlwZTpmQyxkZWNvcmF0b3JzOlt7dHlwZTpOZX1dfV07Y29uc3QgTUM9bEMobnVsbCwiY29yZSIsW3twcm92aWRlOlRfLHVzZVZhbHVlOiJ1bmtub3duIn0se3Byb3ZpZGU6ZEMsZGVwczpbeWRdfSx7cHJvdmlkZTpyQyxkZXBzOltdfSx7cHJvdmlkZTpJXyxkZXBzOltdfV0pLE9DPVt7cHJvdmlkZTpwQyx1c2VDbGFzczpwQyxkZXBzOltKXyxJXyx5ZCxvYyxQdSx3X119LHtwcm92aWRlOnNmLGRlcHM6W0pfXSx1c2VGYWN0b3J5OmZ1bmN0aW9uIFBDKHQpe2xldCBuPVtdO3JldHVybiB0Lm9uU3RhYmxlLnN1YnNjcmliZSgoKCk9Pntmb3IoO24ubGVuZ3RoOyluLnBvcCgpKCl9KSksZnVuY3Rpb24odCl7bi5wdXNoKHQpfX19LHtwcm92aWRlOndfLHVzZUNsYXNzOndfLGRlcHM6W1tuZXcgTmUsdl9dXX0se3Byb3ZpZGU6WV8sdXNlQ2xhc3M6WV8sZGVwczpbXX0sRV8se3Byb3ZpZGU6V3UsdXNlRmFjdG9yeToKLyoqCiAgICAgKiBAbGljZW5zZQogICAgICogQ29weXJpZ2h0IEdvb2dsZSBMTEMgQWxsIFJpZ2h0cyBSZXNlcnZlZC4KICAgICAqCiAgICAgKiBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhbiBNSVQtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQogICAgICogZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZSBhdCBodHRwczovL2FuZ3VsYXIuaW8vbGljZW5zZQogICAgICovCmZ1bmN0aW9uIHhDKCl7cmV0dXJuIFp1fSxkZXBzOltdfSx7cHJvdmlkZTpHdSx1c2VGYWN0b3J5OmZ1bmN0aW9uIHlDKCl7cmV0dXJuIFh1fSxkZXBzOltdfSx7cHJvdmlkZTpOXyx1c2VGYWN0b3J5OmZ1bmN0aW9uIGtDKHQpe3JldHVybiBoYih0PXR8fChmdW5jdGlvbiBuKCl7cmV0dXJuInVuZGVmaW5lZCIhPXR5cGVvZiBuZ0kxOG5DbG9zdXJlTW9kZSYmbmdJMThuQ2xvc3VyZU1vZGUmJiJ1bmRlZmluZWQiIT10eXBlb2YgZ29vZyYmImVuIiE9PWdvb2cuTE9DQUxFP2dvb2cuTE9DQUxFOiJ1bmRlZmluZWQiIT10eXBlb2YgJGxvY2FsaXplJiYkbG9jYWxpemUubG9jYWxlfHxwYn0pKCkpLHR9LGRlcHM6W1tuZXcgSWUoTl8pLG5ldyBOZSxuZXcgTGVdXX0se3Byb3ZpZGU6Rl8sdXNlVmFsdWU6IlVTRCJ9XTsKLyoqCiAgICAgKiBAbGljZW5zZQogICAgICogQ29weXJpZ2h0IEdvb2dsZSBMTEMgQWxsIFJpZ2h0cyBSZXNlcnZlZC4KICAgICAqCiAgICAgKiBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhbiBNSVQtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQogICAgICogZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZSBhdCBodHRwczovL2FuZ3VsYXIuaW8vbGljZW5zZQogICAgICovCi8qKgogICAgICogQGxpY2Vuc2UKICAgICAqIENvcHlyaWdodCBHb29nbGUgTExDIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCiAgICAgKgogICAgICogVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYW4gTUlULXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKICAgICAqIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUgYXQgaHR0cHM6Ly9hbmd1bGFyLmlvL2xpY2Vuc2UKICAgICAqL2NsYXNzIHZDe2NvbnN0cnVjdG9yKHQpe319dmFyIHdDLFNDO3ZDLsm1bW9kPXhvKHt0eXBlOnZDfSksdkMuybVpbmo9R2Uoe2ZhY3Rvcnk6ZnVuY3Rpb24gdChuKXtyZXR1cm4gbmV3KG58fHZDKShaYShwQykpfSxwcm92aWRlcnM6T0N9KSx2Qy5jdG9yUGFyYW1ldGVycz0oKT0+W3t0eXBlOnBDfV0sKGZ1bmN0aW9uKHQpe3RbdC5DcmVhdGVWaWV3Tm9kZXM9MF09IkNyZWF0ZVZpZXdOb2RlcyIsdFt0LkNoZWNrTm9DaGFuZ2VzPTFdPSJDaGVja05vQ2hhbmdlcyIsdFt0LkNoZWNrTm9DaGFuZ2VzUHJvamVjdGVkVmlld3M9Ml09IkNoZWNrTm9DaGFuZ2VzUHJvamVjdGVkVmlld3MiLHRbdC5DaGVja0FuZFVwZGF0ZT0zXT0iQ2hlY2tBbmRVcGRhdGUiLHRbdC5DaGVja0FuZFVwZGF0ZVByb2plY3RlZFZpZXdzPTRdPSJDaGVja0FuZFVwZGF0ZVByb2plY3RlZFZpZXdzIix0W3QuRGVzdHJveT01XT0iRGVzdHJveSJ9KSh3Q3x8KHdDPXt9KSksKGZ1bmN0aW9uKHQpe3RbdC5jcmVhdGU9MF09ImNyZWF0ZSIsdFt0LmRldGVjdENoYW5nZXM9MV09ImRldGVjdENoYW5nZXMiLHRbdC5jaGVja05vQ2hhbmdlcz0yXT0iY2hlY2tOb0NoYW5nZXMiLHRbdC5kZXN0cm95PTNdPSJkZXN0cm95Iix0W3QuaGFuZGxlRXZlbnQ9NF09ImhhbmRsZUV2ZW50In0pKFNDfHwoU0M9e30pKSwKLyoqCiAgICAgKiBAbGljZW5zZQogICAgICogQ29weXJpZ2h0IEdvb2dsZSBMTEMgQWxsIFJpZ2h0cyBSZXNlcnZlZC4KICAgICAqCiAgICAgKiBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhbiBNSVQtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQogICAgICogZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZSBhdCBodHRwczovL2FuZ3VsYXIuaW8vbGljZW5zZQogICAgICovCi8qKgogICAgICogQGxpY2Vuc2UKICAgICAqIENvcHlyaWdodCBHb29nbGUgTExDIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCiAgICAgKgogICAgICogVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYW4gTUlULXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKICAgICAqIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUgYXQgaHR0cHM6Ly9hbmd1bGFyLmlvL2xpY2Vuc2UKICAgICAqLwovKioKICAgICAqIEBsaWNlbnNlCiAgICAgKiBDb3B5cmlnaHQgR29vZ2xlIExMQyBBbGwgUmlnaHRzIFJlc2VydmVkLgogICAgICoKICAgICAqIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGFuIE1JVC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCiAgICAgKiBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlIGF0IGh0dHBzOi8vYW5ndWxhci5pby9saWNlbnNlCiAgICAgKi8KLyoqCiAgICAgKiBAbGljZW5zZQogICAgICogQ29weXJpZ2h0IEdvb2dsZSBMTEMgQWxsIFJpZ2h0cyBSZXNlcnZlZC4KICAgICAqCiAgICAgKiBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhbiBNSVQtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQogICAgICogZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZSBhdCBodHRwczovL2FuZ3VsYXIuaW8vbGljZW5zZQogICAgICovCi8qKgogICAgICogQGxpY2Vuc2UKICAgICAqIENvcHlyaWdodCBHb29nbGUgTExDIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCiAgICAgKgogICAgICogVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYW4gTUlULXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKICAgICAqIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUgYXQgaHR0cHM6Ly9hbmd1bGFyLmlvL2xpY2Vuc2UKICAgICAqLwoidW5kZWZpbmVkIiE9dHlwZW9mIG5nRGV2TW9kZSYmbmdEZXZNb2RlJiYobWEuJGxvY2FsaXplPW1hLiRsb2NhbGl6ZXx8ZnVuY3Rpb24oKXt0aHJvdyBuZXcgRXJyb3IoIkl0IGxvb2tzIGxpa2UgeW91ciBhcHBsaWNhdGlvbiBvciBvbmUgb2YgaXRzIGRlcGVuZGVuY2llcyBpcyB1c2luZyBpMThuLlxuQW5ndWxhciA5IGludHJvZHVjZWQgYSBnbG9iYWwgYCRsb2NhbGl6ZSgpYCBmdW5jdGlvbiB0aGF0IG5lZWRzIHRvIGJlIGxvYWRlZC5cblBsZWFzZSBydW4gYG5nIGFkZCBAYW5ndWxhci9sb2NhbGl6ZWAgZnJvbSB0aGUgQW5ndWxhciBDTEkuXG4oRm9yIG5vbi1DTEkgcHJvamVjdHMsIGFkZCBgaW1wb3J0ICdAYW5ndWxhci9sb2NhbGl6ZS9pbml0JztgIHRvIHlvdXIgYHBvbHlmaWxscy50c2AgZmlsZS5cbkZvciBzZXJ2ZXItc2lkZSByZW5kZXJpbmcgYXBwbGljYXRpb25zIGFkZCB0aGUgaW1wb3J0IHRvIHlvdXIgYG1haW4uc2VydmVyLnRzYCBmaWxlLikiKX0pCi8qKgogICAgICogQGxpY2Vuc2UgQW5ndWxhciB2MTAuMi40CiAgICAgKiAoYykgMjAxMC0yMDIwIEdvb2dsZSBMTEMuIGh0dHBzOi8vYW5ndWxhci5pby8KICAgICAqIExpY2Vuc2U6IE1JVAogICAgICovO2xldCBFQz1udWxsO2Z1bmN0aW9uIEFDKCl7cmV0dXJuIEVDfQovKioKICAgICAqIEBsaWNlbnNlCiAgICAgKiBDb3B5cmlnaHQgR29vZ2xlIExMQyBBbGwgUmlnaHRzIFJlc2VydmVkLgogICAgICoKICAgICAqIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGFuIE1JVC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCiAgICAgKiBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlIGF0IGh0dHBzOi8vYW5ndWxhci5pby9saWNlbnNlCiAgICAgKi8KY29uc3QgekM9bmV3IEZhKCJEb2N1bWVudFRva2VuIik7Ci8qKgogICAgICogQGxpY2Vuc2UKICAgICAqIENvcHlyaWdodCBHb29nbGUgTExDIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCiAgICAgKgogICAgICogVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYW4gTUlULXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKICAgICAqIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUgYXQgaHR0cHM6Ly9hbmd1bGFyLmlvL2xpY2Vuc2UKICAgICAqL2NsYXNzIFJDe31SQy7JtWZhYz1mdW5jdGlvbiB0KG4pe3JldHVybiBuZXcobnx8UkMpfSxSQy7JtXByb3Y9V2Uoe2ZhY3Rvcnk6ZnVuY3Rpb24gVEMoKXtyZXR1cm4gWmEoREMpfSx0b2tlbjpSQyxwcm92aWRlZEluOiJwbGF0Zm9ybSJ9KSxuZXcgRmEoIkxvY2F0aW9uIEluaXRpYWxpemVkIik7Y2xhc3MgREMgZXh0ZW5kcyBSQ3tjb25zdHJ1Y3Rvcih0KXtzdXBlcigpLHRoaXMuX2RvYz10LHRoaXMuX2luaXQoKX1faW5pdCgpe3RoaXMubG9jYXRpb249QUMoKS5nZXRMb2NhdGlvbigpLHRoaXMuX2hpc3Rvcnk9QUMoKS5nZXRIaXN0b3J5KCl9Z2V0QmFzZUhyZWZGcm9tRE9NKCl7cmV0dXJuIEFDKCkuZ2V0QmFzZUhyZWYodGhpcy5fZG9jKX1vblBvcFN0YXRlKHQpe0FDKCkuZ2V0R2xvYmFsRXZlbnRUYXJnZXQodGhpcy5fZG9jLCJ3aW5kb3ciKS5hZGRFdmVudExpc3RlbmVyKCJwb3BzdGF0ZSIsdCwhMSl9b25IYXNoQ2hhbmdlKHQpe0FDKCkuZ2V0R2xvYmFsRXZlbnRUYXJnZXQodGhpcy5fZG9jLCJ3aW5kb3ciKS5hZGRFdmVudExpc3RlbmVyKCJoYXNoY2hhbmdlIix0LCExKX1nZXQgaHJlZigpe3JldHVybiB0aGlzLmxvY2F0aW9uLmhyZWZ9Z2V0IHByb3RvY29sKCl7cmV0dXJuIHRoaXMubG9jYXRpb24ucHJvdG9jb2x9Z2V0IGhvc3RuYW1lKCl7cmV0dXJuIHRoaXMubG9jYXRpb24uaG9zdG5hbWV9Z2V0IHBvcnQoKXtyZXR1cm4gdGhpcy5sb2NhdGlvbi5wb3J0fWdldCBwYXRobmFtZSgpe3JldHVybiB0aGlzLmxvY2F0aW9uLnBhdGhuYW1lfWdldCBzZWFyY2goKXtyZXR1cm4gdGhpcy5sb2NhdGlvbi5zZWFyY2h9Z2V0IGhhc2goKXtyZXR1cm4gdGhpcy5sb2NhdGlvbi5oYXNofXNldCBwYXRobmFtZSh0KXt0aGlzLmxvY2F0aW9uLnBhdGhuYW1lPXR9cHVzaFN0YXRlKHQsbixlKXtJQygpP3RoaXMuX2hpc3RvcnkucHVzaFN0YXRlKHQsbixlKTp0aGlzLmxvY2F0aW9uLmhhc2g9ZX1yZXBsYWNlU3RhdGUodCxuLGUpe0lDKCk/dGhpcy5faGlzdG9yeS5yZXBsYWNlU3RhdGUodCxuLGUpOnRoaXMubG9jYXRpb24uaGFzaD1lfWZvcndhcmQoKXt0aGlzLl9oaXN0b3J5LmZvcndhcmQoKX1iYWNrKCl7dGhpcy5faGlzdG9yeS5iYWNrKCl9Z2V0U3RhdGUoKXtyZXR1cm4gdGhpcy5faGlzdG9yeS5zdGF0ZX19ZnVuY3Rpb24gSUMoKXtyZXR1cm4hIXdpbmRvdy5oaXN0b3J5LnB1c2hTdGF0ZX0KLyoqCiAgICAgKiBAbGljZW5zZQogICAgICogQ29weXJpZ2h0IEdvb2dsZSBMTEMgQWxsIFJpZ2h0cyBSZXNlcnZlZC4KICAgICAqCiAgICAgKiBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhbiBNSVQtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQogICAgICogZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZSBhdCBodHRwczovL2FuZ3VsYXIuaW8vbGljZW5zZQogICAgICovCi8qKgogICAgICogQGxpY2Vuc2UKICAgICAqIENvcHlyaWdodCBHb29nbGUgTExDIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCiAgICAgKgogICAgICogVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYW4gTUlULXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKICAgICAqIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUgYXQgaHR0cHM6Ly9hbmd1bGFyLmlvL2xpY2Vuc2UKICAgICAqLwpmdW5jdGlvbiBOQyh0LG4pe2lmKDA9PXQubGVuZ3RoKXJldHVybiBuO2lmKDA9PW4ubGVuZ3RoKXJldHVybiB0O2xldCBlPTA7cmV0dXJuIHQuZW5kc1dpdGgoIi8iKSYmZSsrLG4uc3RhcnRzV2l0aCgiLyIpJiZlKyssMj09ZT90K24uc3Vic3RyaW5nKDEpOjE9PWU/dCtuOnQrIi8iK259ZnVuY3Rpb24gRkModCl7Y29uc3Qgbj10Lm1hdGNoKC8jfFw/fCQvKSxlPW4mJm4uaW5kZXh8fHQubGVuZ3RoO3JldHVybiB0LnNsaWNlKDAsZS0oIi8iPT09dFtlLTFdPzE6MCkpK3Quc2xpY2UoZSl9ZnVuY3Rpb24gTEModCl7cmV0dXJuIHQmJiI/IiE9PXRbMF0/Ij8iK3Q6dH0KLyoqCiAgICAgKiBAbGljZW5zZQogICAgICogQ29weXJpZ2h0IEdvb2dsZSBMTEMgQWxsIFJpZ2h0cyBSZXNlcnZlZC4KICAgICAqCiAgICAgKiBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhbiBNSVQtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQogICAgICogZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZSBhdCBodHRwczovL2FuZ3VsYXIuaW8vbGljZW5zZQogICAgICovREMuybVmYWM9ZnVuY3Rpb24gdChuKXtyZXR1cm4gbmV3KG58fERDKShaYSh6QykpfSxEQy7JtXByb3Y9V2Uoe2ZhY3Rvcnk6ZnVuY3Rpb24gSEMoKXtyZXR1cm4gbmV3IERDKFphKHpDKSl9LHRva2VuOkRDLHByb3ZpZGVkSW46InBsYXRmb3JtIn0pLERDLmN0b3JQYXJhbWV0ZXJzPSgpPT5be3R5cGU6dm9pZCAwLGRlY29yYXRvcnM6W3t0eXBlOkllLGFyZ3M6W3pDXX1dfV07Y2xhc3MgQkN7fUJDLsm1ZmFjPWZ1bmN0aW9uIHQobil7cmV0dXJuIG5ldyhufHxCQyl9LEJDLsm1cHJvdj1XZSh7ZmFjdG9yeTpmdW5jdGlvbiBWQyh0KXtjb25zdCBuPVphKHpDKS5sb2NhdGlvbjtyZXR1cm4gbmV3IFVDKFphKFJDKSxuJiZuLm9yaWdpbnx8IiIpfSx0b2tlbjpCQyxwcm92aWRlZEluOiJyb290In0pO2NvbnN0IGpDPW5ldyBGYSgiYXBwQmFzZUhyZWYiKTtjbGFzcyBVQyBleHRlbmRzIEJDe2NvbnN0cnVjdG9yKHQsbil7aWYoc3VwZXIoKSx0aGlzLl9wbGF0Zm9ybUxvY2F0aW9uPXQsbnVsbD09biYmKG49dGhpcy5fcGxhdGZvcm1Mb2NhdGlvbi5nZXRCYXNlSHJlZkZyb21ET00oKSksbnVsbD09bil0aHJvdyBuZXcgRXJyb3IoIk5vIGJhc2UgaHJlZiBzZXQuIFBsZWFzZSBwcm92aWRlIGEgdmFsdWUgZm9yIHRoZSBBUFBfQkFTRV9IUkVGIHRva2VuIG9yIGFkZCBhIGJhc2UgZWxlbWVudCB0byB0aGUgZG9jdW1lbnQuIik7dGhpcy5fYmFzZUhyZWY9bn1vblBvcFN0YXRlKHQpe3RoaXMuX3BsYXRmb3JtTG9jYXRpb24ub25Qb3BTdGF0ZSh0KSx0aGlzLl9wbGF0Zm9ybUxvY2F0aW9uLm9uSGFzaENoYW5nZSh0KX1nZXRCYXNlSHJlZigpe3JldHVybiB0aGlzLl9iYXNlSHJlZn1wcmVwYXJlRXh0ZXJuYWxVcmwodCl7cmV0dXJuIE5DKHRoaXMuX2Jhc2VIcmVmLHQpfXBhdGgodD0hMSl7Y29uc3Qgbj10aGlzLl9wbGF0Zm9ybUxvY2F0aW9uLnBhdGhuYW1lK0xDKHRoaXMuX3BsYXRmb3JtTG9jYXRpb24uc2VhcmNoKSxlPXRoaXMuX3BsYXRmb3JtTG9jYXRpb24uaGFzaDtyZXR1cm4gZSYmdD9gJHtufSR7ZX1gOm59cHVzaFN0YXRlKHQsbixlLGEpe2NvbnN0IG89dGhpcy5wcmVwYXJlRXh0ZXJuYWxVcmwoZStMQyhhKSk7dGhpcy5fcGxhdGZvcm1Mb2NhdGlvbi5wdXNoU3RhdGUodCxuLG8pfXJlcGxhY2VTdGF0ZSh0LG4sZSxhKXtjb25zdCBvPXRoaXMucHJlcGFyZUV4dGVybmFsVXJsKGUrTEMoYSkpO3RoaXMuX3BsYXRmb3JtTG9jYXRpb24ucmVwbGFjZVN0YXRlKHQsbixvKX1mb3J3YXJkKCl7dGhpcy5fcGxhdGZvcm1Mb2NhdGlvbi5mb3J3YXJkKCl9YmFjaygpe3RoaXMuX3BsYXRmb3JtTG9jYXRpb24uYmFjaygpfX1VQy7JtWZhYz1mdW5jdGlvbiB0KG4pe3JldHVybiBuZXcobnx8VUMpKFphKFJDKSxaYShqQyw4KSl9LFVDLsm1cHJvdj1XZSh7dG9rZW46VUMsZmFjdG9yeTpVQy7JtWZhY30pLFVDLmN0b3JQYXJhbWV0ZXJzPSgpPT5be3R5cGU6UkN9LHt0eXBlOlN0cmluZyxkZWNvcmF0b3JzOlt7dHlwZTpOZX0se3R5cGU6SWUsYXJnczpbakNdfV19XQovKioKICAgICAqIEBsaWNlbnNlCiAgICAgKiBDb3B5cmlnaHQgR29vZ2xlIExMQyBBbGwgUmlnaHRzIFJlc2VydmVkLgogICAgICoKICAgICAqIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGFuIE1JVC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCiAgICAgKiBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlIGF0IGh0dHBzOi8vYW5ndWxhci5pby9saWNlbnNlCiAgICAgKi87Y2xhc3MgV0MgZXh0ZW5kcyBCQ3tjb25zdHJ1Y3Rvcih0LG4pe3N1cGVyKCksdGhpcy5fcGxhdGZvcm1Mb2NhdGlvbj10LHRoaXMuX2Jhc2VIcmVmPSIiLG51bGwhPW4mJih0aGlzLl9iYXNlSHJlZj1uKX1vblBvcFN0YXRlKHQpe3RoaXMuX3BsYXRmb3JtTG9jYXRpb24ub25Qb3BTdGF0ZSh0KSx0aGlzLl9wbGF0Zm9ybUxvY2F0aW9uLm9uSGFzaENoYW5nZSh0KX1nZXRCYXNlSHJlZigpe3JldHVybiB0aGlzLl9iYXNlSHJlZn1wYXRoKHQ9ITEpe2xldCBuPXRoaXMuX3BsYXRmb3JtTG9jYXRpb24uaGFzaDtyZXR1cm4gbnVsbD09biYmKG49IiMiKSxuLmxlbmd0aD4wP24uc3Vic3RyaW5nKDEpOm59cHJlcGFyZUV4dGVybmFsVXJsKHQpe2NvbnN0IG49TkModGhpcy5fYmFzZUhyZWYsdCk7cmV0dXJuIG4ubGVuZ3RoPjA/IiMiK246bn1wdXNoU3RhdGUodCxuLGUsYSl7bGV0IG89dGhpcy5wcmVwYXJlRXh0ZXJuYWxVcmwoZStMQyhhKSk7MD09by5sZW5ndGgmJihvPXRoaXMuX3BsYXRmb3JtTG9jYXRpb24ucGF0aG5hbWUpLHRoaXMuX3BsYXRmb3JtTG9jYXRpb24ucHVzaFN0YXRlKHQsbixvKX1yZXBsYWNlU3RhdGUodCxuLGUsYSl7bGV0IG89dGhpcy5wcmVwYXJlRXh0ZXJuYWxVcmwoZStMQyhhKSk7MD09by5sZW5ndGgmJihvPXRoaXMuX3BsYXRmb3JtTG9jYXRpb24ucGF0aG5hbWUpLHRoaXMuX3BsYXRmb3JtTG9jYXRpb24ucmVwbGFjZVN0YXRlKHQsbixvKX1mb3J3YXJkKCl7dGhpcy5fcGxhdGZvcm1Mb2NhdGlvbi5mb3J3YXJkKCl9YmFjaygpe3RoaXMuX3BsYXRmb3JtTG9jYXRpb24uYmFjaygpfX1XQy7JtWZhYz1mdW5jdGlvbiB0KG4pe3JldHVybiBuZXcobnx8V0MpKFphKFJDKSxaYShqQyw4KSl9LFdDLsm1cHJvdj1XZSh7dG9rZW46V0MsZmFjdG9yeTpXQy7JtWZhY30pLFdDLmN0b3JQYXJhbWV0ZXJzPSgpPT5be3R5cGU6UkN9LHt0eXBlOlN0cmluZyxkZWNvcmF0b3JzOlt7dHlwZTpOZX0se3R5cGU6SWUsYXJnczpbakNdfV19XQovKioKICAgICAqIEBsaWNlbnNlCiAgICAgKiBDb3B5cmlnaHQgR29vZ2xlIExMQyBBbGwgUmlnaHRzIFJlc2VydmVkLgogICAgICoKICAgICAqIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGFuIE1JVC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCiAgICAgKiBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlIGF0IGh0dHBzOi8vYW5ndWxhci5pby9saWNlbnNlCiAgICAgKi87Y2xhc3MgR0N7Y29uc3RydWN0b3IodCxuKXt0aGlzLl9zdWJqZWN0PW5ldyBFZix0aGlzLl91cmxDaGFuZ2VMaXN0ZW5lcnM9W10sdGhpcy5fcGxhdGZvcm1TdHJhdGVneT10O2NvbnN0IGU9dGhpcy5fcGxhdGZvcm1TdHJhdGVneS5nZXRCYXNlSHJlZigpO3RoaXMuX3BsYXRmb3JtTG9jYXRpb249bix0aGlzLl9iYXNlSHJlZj1GQyhZQyhlKSksdGhpcy5fcGxhdGZvcm1TdHJhdGVneS5vblBvcFN0YXRlKCh0PT57dGhpcy5fc3ViamVjdC5lbWl0KHt1cmw6dGhpcy5wYXRoKCEwKSxwb3A6ITAsc3RhdGU6dC5zdGF0ZSx0eXBlOnQudHlwZX0pfSkpfXBhdGgodD0hMSl7cmV0dXJuIHRoaXMubm9ybWFsaXplKHRoaXMuX3BsYXRmb3JtU3RyYXRlZ3kucGF0aCh0KSl9Z2V0U3RhdGUoKXtyZXR1cm4gdGhpcy5fcGxhdGZvcm1Mb2NhdGlvbi5nZXRTdGF0ZSgpfWlzQ3VycmVudFBhdGhFcXVhbFRvKHQsbj0iIil7cmV0dXJuIHRoaXMucGF0aCgpPT10aGlzLm5vcm1hbGl6ZSh0K0xDKG4pKX1ub3JtYWxpemUodCl7cmV0dXJuIEdDLnN0cmlwVHJhaWxpbmdTbGFzaCgoZnVuY3Rpb24gbih0LGUpe3JldHVybiB0JiZlLnN0YXJ0c1dpdGgodCk/ZS5zdWJzdHJpbmcodC5sZW5ndGgpOmV9KSh0aGlzLl9iYXNlSHJlZixZQyh0KSkpfXByZXBhcmVFeHRlcm5hbFVybCh0KXtyZXR1cm4gdCYmIi8iIT09dFswXSYmKHQ9Ii8iK3QpLHRoaXMuX3BsYXRmb3JtU3RyYXRlZ3kucHJlcGFyZUV4dGVybmFsVXJsKHQpfWdvKHQsbj0iIixlPW51bGwpe3RoaXMuX3BsYXRmb3JtU3RyYXRlZ3kucHVzaFN0YXRlKGUsIiIsdCxuKSx0aGlzLl9ub3RpZnlVcmxDaGFuZ2VMaXN0ZW5lcnModGhpcy5wcmVwYXJlRXh0ZXJuYWxVcmwodCtMQyhuKSksZSl9cmVwbGFjZVN0YXRlKHQsbj0iIixlPW51bGwpe3RoaXMuX3BsYXRmb3JtU3RyYXRlZ3kucmVwbGFjZVN0YXRlKGUsIiIsdCxuKSx0aGlzLl9ub3RpZnlVcmxDaGFuZ2VMaXN0ZW5lcnModGhpcy5wcmVwYXJlRXh0ZXJuYWxVcmwodCtMQyhuKSksZSl9Zm9yd2FyZCgpe3RoaXMuX3BsYXRmb3JtU3RyYXRlZ3kuZm9yd2FyZCgpfWJhY2soKXt0aGlzLl9wbGF0Zm9ybVN0cmF0ZWd5LmJhY2soKX1vblVybENoYW5nZSh0KXt0aGlzLl91cmxDaGFuZ2VMaXN0ZW5lcnMucHVzaCh0KSx0aGlzLl91cmxDaGFuZ2VTdWJzY3JpcHRpb258fCh0aGlzLl91cmxDaGFuZ2VTdWJzY3JpcHRpb249dGhpcy5zdWJzY3JpYmUoKHQ9Pnt0aGlzLl9ub3RpZnlVcmxDaGFuZ2VMaXN0ZW5lcnModC51cmwsdC5zdGF0ZSl9KSkpfV9ub3RpZnlVcmxDaGFuZ2VMaXN0ZW5lcnModD0iIixuKXt0aGlzLl91cmxDaGFuZ2VMaXN0ZW5lcnMuZm9yRWFjaCgoZT0+ZSh0LG4pKSl9c3Vic2NyaWJlKHQsbixlKXtyZXR1cm4gdGhpcy5fc3ViamVjdC5zdWJzY3JpYmUoe25leHQ6dCxlcnJvcjpuLGNvbXBsZXRlOmV9KX19ZnVuY3Rpb24gWUModCl7cmV0dXJuIHQucmVwbGFjZSgvXC9pbmRleC5odG1sJC8sIiIpfQovKioKICAgICAqIEBsaWNlbnNlCiAgICAgKiBDb3B5cmlnaHQgR29vZ2xlIExMQyBBbGwgUmlnaHRzIFJlc2VydmVkLgogICAgICoKICAgICAqIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGFuIE1JVC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCiAgICAgKiBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlIGF0IGh0dHBzOi8vYW5ndWxhci5pby9saWNlbnNlCiAgICAgKi8KLyoqCiAgICAgKiBAbGljZW5zZQogICAgICogQ29weXJpZ2h0IEdvb2dsZSBMTEMgQWxsIFJpZ2h0cyBSZXNlcnZlZC4KICAgICAqCiAgICAgKiBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhbiBNSVQtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQogICAgICogZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZSBhdCBodHRwczovL2FuZ3VsYXIuaW8vbGljZW5zZQogICAgICovR0MuybVmYWM9ZnVuY3Rpb24gdChuKXtyZXR1cm4gbmV3KG58fEdDKShaYShCQyksWmEoUkMpKX0sR0Mubm9ybWFsaXplUXVlcnlQYXJhbXM9TEMsR0Muam9pbldpdGhTbGFzaD1OQyxHQy5zdHJpcFRyYWlsaW5nU2xhc2g9RkMsR0MuybVwcm92PVdlKHtmYWN0b3J5OmZ1bmN0aW9uIHFDKCl7cmV0dXJuIG5ldyBHQyhaYShCQyksWmEoUkMpKX0sdG9rZW46R0MscHJvdmlkZWRJbjoicm9vdCJ9KSxHQy5jdG9yUGFyYW1ldGVycz0oKT0+W3t0eXBlOkJDfSx7dHlwZTpSQ31dO2NvbnN0IFpDPXtBRFA6W3ZvaWQgMCx2b2lkIDAsMF0sQUZOOlt2b2lkIDAsdm9pZCAwLDBdLEFMTDpbdm9pZCAwLHZvaWQgMCwwXSxBTUQ6W3ZvaWQgMCx2b2lkIDAsMl0sQU9BOlt2b2lkIDAsIkt6Il0sQVJTOlt2b2lkIDAsIiQiXSxBVUQ6WyJBJCIsIiQiXSxCQU06W3ZvaWQgMCwiS00iXSxCQkQ6W3ZvaWQgMCwiJCJdLEJEVDpbdm9pZCAwLCLgp7MiXSxCSEQ6W3ZvaWQgMCx2b2lkIDAsM10sQklGOlt2b2lkIDAsdm9pZCAwLDBdLEJNRDpbdm9pZCAwLCIkIl0sQk5EOlt2b2lkIDAsIiQiXSxCT0I6W3ZvaWQgMCwiQnMiXSxCUkw6WyJSJCJdLEJTRDpbdm9pZCAwLCIkIl0sQldQOlt2b2lkIDAsIlAiXSxCWU46W3ZvaWQgMCwi0YAuIiwyXSxCWVI6W3ZvaWQgMCx2b2lkIDAsMF0sQlpEOlt2b2lkIDAsIiQiXSxDQUQ6WyJDQSQiLCIkIiwyXSxDSEY6W3ZvaWQgMCx2b2lkIDAsMl0sQ0xGOlt2b2lkIDAsdm9pZCAwLDRdLENMUDpbdm9pZCAwLCIkIiwwXSxDTlk6WyJDTsKlIiwiwqUiXSxDT1A6W3ZvaWQgMCwiJCIsMl0sQ1JDOlt2b2lkIDAsIuKCoSIsMl0sQ1VDOlt2b2lkIDAsIiQiXSxDVVA6W3ZvaWQgMCwiJCJdLENaSzpbdm9pZCAwLCJLxI0iLDJdLERKRjpbdm9pZCAwLHZvaWQgMCwwXSxES0s6W3ZvaWQgMCwia3IiLDJdLERPUDpbdm9pZCAwLCIkIl0sRUdQOlt2b2lkIDAsIkXCoyJdLEVTUDpbdm9pZCAwLCLigqciLDBdLEVVUjpbIuKCrCJdLEZKRDpbdm9pZCAwLCIkIl0sRktQOlt2b2lkIDAsIsKjIl0sR0JQOlsiwqMiXSxHRUw6W3ZvaWQgMCwi4oK+Il0sR0lQOlt2b2lkIDAsIsKjIl0sR05GOlt2b2lkIDAsIkZHIiwwXSxHVFE6W3ZvaWQgMCwiUSJdLEdZRDpbdm9pZCAwLCIkIiwyXSxIS0Q6WyJISyQiLCIkIl0sSE5MOlt2b2lkIDAsIkwiXSxIUks6W3ZvaWQgMCwia24iXSxIVUY6W3ZvaWQgMCwiRnQiLDJdLElEUjpbdm9pZCAwLCJScCIsMl0sSUxTOlsi4oKqIl0sSU5SOlsi4oK5Il0sSVFEOlt2b2lkIDAsdm9pZCAwLDBdLElSUjpbdm9pZCAwLHZvaWQgMCwwXSxJU0s6W3ZvaWQgMCwia3IiLDBdLElUTDpbdm9pZCAwLHZvaWQgMCwwXSxKTUQ6W3ZvaWQgMCwiJCJdLEpPRDpbdm9pZCAwLHZvaWQgMCwzXSxKUFk6WyLCpSIsdm9pZCAwLDBdLEtIUjpbdm9pZCAwLCLhn5siXSxLTUY6W3ZvaWQgMCwiQ0YiLDBdLEtQVzpbdm9pZCAwLCLigqkiLDBdLEtSVzpbIuKCqSIsdm9pZCAwLDBdLEtXRDpbdm9pZCAwLHZvaWQgMCwzXSxLWUQ6W3ZvaWQgMCwiJCJdLEtaVDpbdm9pZCAwLCLigrgiXSxMQUs6W3ZvaWQgMCwi4oKtIiwwXSxMQlA6W3ZvaWQgMCwiTMKjIiwwXSxMS1I6W3ZvaWQgMCwiUnMiXSxMUkQ6W3ZvaWQgMCwiJCJdLExUTDpbdm9pZCAwLCJMdCJdLExVRjpbdm9pZCAwLHZvaWQgMCwwXSxMVkw6W3ZvaWQgMCwiTHMiXSxMWUQ6W3ZvaWQgMCx2b2lkIDAsM10sTUdBOlt2b2lkIDAsIkFyIiwwXSxNR0Y6W3ZvaWQgMCx2b2lkIDAsMF0sTU1LOlt2b2lkIDAsIksiLDBdLE1OVDpbdm9pZCAwLCLigq4iLDJdLE1STzpbdm9pZCAwLHZvaWQgMCwwXSxNVVI6W3ZvaWQgMCwiUnMiLDJdLE1YTjpbIk1YJCIsIiQiXSxNWVI6W3ZvaWQgMCwiUk0iXSxOQUQ6W3ZvaWQgMCwiJCJdLE5HTjpbdm9pZCAwLCLigqYiXSxOSU86W3ZvaWQgMCwiQyQiXSxOT0s6W3ZvaWQgMCwia3IiLDJdLE5QUjpbdm9pZCAwLCJScyJdLE5aRDpbIk5aJCIsIiQiXSxPTVI6W3ZvaWQgMCx2b2lkIDAsM10sUEhQOlt2b2lkIDAsIuKCsSJdLFBLUjpbdm9pZCAwLCJScyIsMl0sUExOOlt2b2lkIDAsInrFgiJdLFBZRzpbdm9pZCAwLCLigrIiLDBdLFJPTjpbdm9pZCAwLCJsZWkiXSxSU0Q6W3ZvaWQgMCx2b2lkIDAsMF0sUlVCOlt2b2lkIDAsIuKCvSJdLFJVUjpbdm9pZCAwLCLRgC4iXSxSV0Y6W3ZvaWQgMCwiUkYiLDBdLFNCRDpbdm9pZCAwLCIkIl0sU0VLOlt2b2lkIDAsImtyIiwyXSxTR0Q6W3ZvaWQgMCwiJCJdLFNIUDpbdm9pZCAwLCLCoyJdLFNMTDpbdm9pZCAwLHZvaWQgMCwwXSxTT1M6W3ZvaWQgMCx2b2lkIDAsMF0sU1JEOlt2b2lkIDAsIiQiXSxTU1A6W3ZvaWQgMCwiwqMiXSxTVEQ6W3ZvaWQgMCx2b2lkIDAsMF0sU1ROOlt2b2lkIDAsIkRiIl0sU1lQOlt2b2lkIDAsIsKjIiwwXSxUSEI6W3ZvaWQgMCwi4Li/Il0sVE1NOlt2b2lkIDAsdm9pZCAwLDBdLFRORDpbdm9pZCAwLHZvaWQgMCwzXSxUT1A6W3ZvaWQgMCwiVCQiXSxUUkw6W3ZvaWQgMCx2b2lkIDAsMF0sVFJZOlt2b2lkIDAsIuKCuiJdLFRURDpbdm9pZCAwLCIkIl0sVFdEOlsiTlQkIiwiJCIsMl0sVFpTOlt2b2lkIDAsdm9pZCAwLDJdLFVBSDpbdm9pZCAwLCLigrQiXSxVR1g6W3ZvaWQgMCx2b2lkIDAsMF0sVVNEOlsiJCJdLFVZSTpbdm9pZCAwLHZvaWQgMCwwXSxVWVU6W3ZvaWQgMCwiJCJdLFVZVzpbdm9pZCAwLHZvaWQgMCw0XSxVWlM6W3ZvaWQgMCx2b2lkIDAsMl0sVkVGOlt2b2lkIDAsIkJzIiwyXSxWTkQ6WyLigqsiLHZvaWQgMCwwXSxWVVY6W3ZvaWQgMCx2b2lkIDAsMF0sWEFGOlsiRkNGQSIsdm9pZCAwLDBdLFhDRDpbIkVDJCIsIiQiXSxYT0Y6WyJDRkEiLHZvaWQgMCwwXSxYUEY6WyJDRlBGIix2b2lkIDAsMF0sWFhYOlsiwqQiXSxZRVI6W3ZvaWQgMCx2b2lkIDAsMF0sWkFSOlt2b2lkIDAsIlIiXSxaTUs6W3ZvaWQgMCx2b2lkIDAsMF0sWk1XOlt2b2lkIDAsIlpLIl0sWldEOlt2b2lkIDAsdm9pZCAwLDBdfTsKLyoqCiAgICAgKiBAbGljZW5zZQogICAgICogQ29weXJpZ2h0IEdvb2dsZSBMTEMgQWxsIFJpZ2h0cyBSZXNlcnZlZC4KICAgICAqCiAgICAgKiBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhbiBNSVQtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQogICAgICogZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZSBhdCBodHRwczovL2FuZ3VsYXIuaW8vbGljZW5zZQogICAgICovdmFyIFhDLEpDLFFDLEtDLCRDLHRNLG5NO2Z1bmN0aW9uIGVNKHQsbil7cmV0dXJuIGxNKHNiKHQpW2RiLkRhdGVGb3JtYXRdLG4pfWZ1bmN0aW9uIGFNKHQsbil7cmV0dXJuIGxNKHNiKHQpW2RiLlRpbWVGb3JtYXRdLG4pfWZ1bmN0aW9uIG9NKHQsbil7cmV0dXJuIGxNKHNiKHQpW2RiLkRhdGVUaW1lRm9ybWF0XSxuKX1mdW5jdGlvbiByTSh0LG4pe2NvbnN0IGU9c2IodCksYT1lW2RiLk51bWJlclN5bWJvbHNdW25dO2lmKHZvaWQgMD09PWEpe2lmKG49PT10TS5DdXJyZW5jeURlY2ltYWwpcmV0dXJuIGVbZGIuTnVtYmVyU3ltYm9sc11bdE0uRGVjaW1hbF07aWYobj09PXRNLkN1cnJlbmN5R3JvdXApcmV0dXJuIGVbZGIuTnVtYmVyU3ltYm9sc11bdE0uR3JvdXBdfXJldHVybiBhfWZ1bmN0aW9uIGlNKHQsbil7cmV0dXJuIHNiKHQpW2RiLk51bWJlckZvcm1hdHNdW25dfSEoZnVuY3Rpb24odCl7dFt0LkRlY2ltYWw9MF09IkRlY2ltYWwiLHRbdC5QZXJjZW50PTFdPSJQZXJjZW50Iix0W3QuQ3VycmVuY3k9Ml09IkN1cnJlbmN5Iix0W3QuU2NpZW50aWZpYz0zXT0iU2NpZW50aWZpYyJ9KShYQ3x8KFhDPXt9KSksKGZ1bmN0aW9uKHQpe3RbdC5aZXJvPTBdPSJaZXJvIix0W3QuT25lPTFdPSJPbmUiLHRbdC5Ud289Ml09IlR3byIsdFt0LkZldz0zXT0iRmV3Iix0W3QuTWFueT00XT0iTWFueSIsdFt0Lk90aGVyPTVdPSJPdGhlciJ9KShKQ3x8KEpDPXt9KSksKGZ1bmN0aW9uKHQpe3RbdC5Gb3JtYXQ9MF09IkZvcm1hdCIsdFt0LlN0YW5kYWxvbmU9MV09IlN0YW5kYWxvbmUifSkoUUN8fChRQz17fSkpLChmdW5jdGlvbih0KXt0W3QuTmFycm93PTBdPSJOYXJyb3ciLHRbdC5BYmJyZXZpYXRlZD0xXT0iQWJicmV2aWF0ZWQiLHRbdC5XaWRlPTJdPSJXaWRlIix0W3QuU2hvcnQ9M109IlNob3J0In0pKEtDfHwoS0M9e30pKSwoZnVuY3Rpb24odCl7dFt0LlNob3J0PTBdPSJTaG9ydCIsdFt0Lk1lZGl1bT0xXT0iTWVkaXVtIix0W3QuTG9uZz0yXT0iTG9uZyIsdFt0LkZ1bGw9M109IkZ1bGwifSkoJEN8fCgkQz17fSkpLChmdW5jdGlvbih0KXt0W3QuRGVjaW1hbD0wXT0iRGVjaW1hbCIsdFt0Lkdyb3VwPTFdPSJHcm91cCIsdFt0Lkxpc3Q9Ml09Ikxpc3QiLHRbdC5QZXJjZW50U2lnbj0zXT0iUGVyY2VudFNpZ24iLHRbdC5QbHVzU2lnbj00XT0iUGx1c1NpZ24iLHRbdC5NaW51c1NpZ249NV09Ik1pbnVzU2lnbiIsdFt0LkV4cG9uZW50aWFsPTZdPSJFeHBvbmVudGlhbCIsdFt0LlN1cGVyc2NyaXB0aW5nRXhwb25lbnQ9N109IlN1cGVyc2NyaXB0aW5nRXhwb25lbnQiLHRbdC5QZXJNaWxsZT04XT0iUGVyTWlsbGUiLHRbdFsxLzBdPTldPSJJbmZpbml0eSIsdFt0Lk5hTj0xMF09Ik5hTiIsdFt0LlRpbWVTZXBhcmF0b3I9MTFdPSJUaW1lU2VwYXJhdG9yIix0W3QuQ3VycmVuY3lEZWNpbWFsPTEyXT0iQ3VycmVuY3lEZWNpbWFsIix0W3QuQ3VycmVuY3lHcm91cD0xM109IkN1cnJlbmN5R3JvdXAifSkodE18fCh0TT17fSkpLChmdW5jdGlvbih0KXt0W3QuU3VuZGF5PTBdPSJTdW5kYXkiLHRbdC5Nb25kYXk9MV09Ik1vbmRheSIsdFt0LlR1ZXNkYXk9Ml09IlR1ZXNkYXkiLHRbdC5XZWRuZXNkYXk9M109IldlZG5lc2RheSIsdFt0LlRodXJzZGF5PTRdPSJUaHVyc2RheSIsdFt0LkZyaWRheT01XT0iRnJpZGF5Iix0W3QuU2F0dXJkYXk9Nl09IlNhdHVyZGF5In0pKG5NfHwobk09e30pKTtjb25zdCBjTT1sYjtmdW5jdGlvbiBzTSh0KXtpZighdFtkYi5FeHRyYURhdGFdKXRocm93IG5ldyBFcnJvcihgTWlzc2luZyBleHRyYSBsb2NhbGUgZGF0YSBmb3IgdGhlIGxvY2FsZSAiJHt0W2RiLkxvY2FsZUlkXX0iLiBVc2UgInJlZ2lzdGVyTG9jYWxlRGF0YSIgdG8gbG9hZCBuZXcgZGF0YS4gU2VlIHRoZSAiSTE4biBndWlkZSIgb24gYW5ndWxhci5pbyB0byBrbm93IG1vcmUuYCl9ZnVuY3Rpb24gbE0odCxuKXtmb3IobGV0IGU9bjtlPi0xO2UtLSlpZih2b2lkIDAhPT10W2VdKXJldHVybiB0W2VdO3Rocm93IG5ldyBFcnJvcigiTG9jYWxlIGRhdGEgQVBJOiBsb2NhbGUgZGF0YSB1bmRlZmluZWQiKX1mdW5jdGlvbiBtTSh0KXtjb25zdFtuLGVdPXQuc3BsaXQoIjoiKTtyZXR1cm57aG91cnM6K24sbWludXRlczorZX19Ci8qKgogICAgICogQGxpY2Vuc2UKICAgICAqIENvcHlyaWdodCBHb29nbGUgTExDIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCiAgICAgKgogICAgICogVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYW4gTUlULXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKICAgICAqIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUgYXQgaHR0cHM6Ly9hbmd1bGFyLmlvL2xpY2Vuc2UKICAgICAqLwpjb25zdCBkTT0vXihcZHs0fSktPyhcZFxkKS0/KFxkXGQpKD86VChcZFxkKSg/Ojo/KFxkXGQpKD86Oj8oXGRcZCkoPzpcLihcZCspKT8pPyk/KFp8KFsrLV0pKFxkXGQpOj8oXGRcZCkpPyk/JC8sZ009e30scE09LygoPzpbXkd5TUx3V2RFYWJCaEhtc1N6Wk8nXSspfCg/OicoPzpbXiddfCcnKSonKXwoPzpHezEsNX18eXsxLDR9fE17MSw1fXxMezEsNX18d3sxLDJ9fFd7MX18ZHsxLDJ9fEV7MSw2fXxhezEsNX18YnsxLDV9fEJ7MSw1fXxoezEsMn18SHsxLDJ9fG17MSwyfXxzezEsMn18U3sxLDN9fHp7MSw0fXxaezEsNX18T3sxLDR9KSkoW1xzXFNdKikvO3ZhciBiTSx1TSxmTTtmdW5jdGlvbiBoTSh0LG4sZSxhKXtsZXQgbz0oZnVuY3Rpb24gcih0KXtpZih3TSh0KSlyZXR1cm4gdDtpZigibnVtYmVyIj09dHlwZW9mIHQmJiFpc05hTih0KSlyZXR1cm4gbmV3IERhdGUodCk7aWYoInN0cmluZyI9PXR5cGVvZiB0KXt0PXQudHJpbSgpO2NvbnN0IG49cGFyc2VGbG9hdCh0KTtpZighaXNOYU4odC1uKSlyZXR1cm4gbmV3IERhdGUobik7aWYoL14oXGR7NH0tXGR7MSwyfS1cZHsxLDJ9KSQvLnRlc3QodCkpe2NvbnN0W24sZSxhXT10LnNwbGl0KCItIikubWFwKCh0PT4rdCkpO3JldHVybiBuZXcgRGF0ZShuLGUtMSxhKX1sZXQgZTtpZihlPXQubWF0Y2goZE0pKXJldHVybihmdW5jdGlvbiBuKHQpe2NvbnN0IG49bmV3IERhdGUoMCk7bGV0IGU9MCxhPTA7Y29uc3Qgbz10WzhdP24uc2V0VVRDRnVsbFllYXI6bi5zZXRGdWxsWWVhcixyPXRbOF0/bi5zZXRVVENIb3VyczpuLnNldEhvdXJzO3RbOV0mJihlPU51bWJlcih0WzldK3RbMTBdKSxhPU51bWJlcih0WzldK3RbMTFdKSksby5jYWxsKG4sTnVtYmVyKHRbMV0pLE51bWJlcih0WzJdKS0xLE51bWJlcih0WzNdKSk7Y29uc3QgaT1OdW1iZXIodFs0XXx8MCktZSxjPU51bWJlcih0WzVdfHwwKS1hLHM9TnVtYmVyKHRbNl18fDApLGw9TWF0aC5yb3VuZCgxZTMqcGFyc2VGbG9hdCgiMC4iKyh0WzddfHwwKSkpO3JldHVybiByLmNhbGwobixpLGMscyxsKSxufSkoZSl9Y29uc3QgZT1uZXcgRGF0ZSh0KTtpZighd00oZSkpdGhyb3cgbmV3IEVycm9yKGBVbmFibGUgdG8gY29udmVydCAiJHt0fSIgaW50byBhIGRhdGVgKTtyZXR1cm4gZX0pKHQpO249X00oZSxuKXx8bjtsZXQgaSxjPVtdO2Zvcig7bjspe2lmKGk9cE0uZXhlYyhuKSwhaSl7Yy5wdXNoKG4pO2JyZWFrfXtjPWMuY29uY2F0KGkuc2xpY2UoMSkpO2NvbnN0IHQ9Yy5wb3AoKTtpZighdClicmVhaztuPXR9fWxldCBzPW8uZ2V0VGltZXpvbmVPZmZzZXQoKTthJiYocz12TShhLHMpLG89KGZ1bmN0aW9uIGwodCxuLGUpe2NvbnN0IGE9ZT8tMToxLG89dC5nZXRUaW1lem9uZU9mZnNldCgpO3JldHVybihmdW5jdGlvbiByKHQsbil7cmV0dXJuKHQ9bmV3IERhdGUodC5nZXRUaW1lKCkpKS5zZXRNaW51dGVzKHQuZ2V0TWludXRlcygpK24pLHR9KSh0LGEqKHZNKG4sbyktbykpfSkobyxhLCEwKSk7bGV0IG09IiI7cmV0dXJuIGMuZm9yRWFjaCgodD0+e2NvbnN0IG49KGZ1bmN0aW9uIGEodCl7aWYoa01bdF0pcmV0dXJuIGtNW3RdO2xldCBuO3N3aXRjaCh0KXtjYXNlIkciOmNhc2UiR0ciOmNhc2UiR0dHIjpuPVBNKGZNLkVyYXMsS0MuQWJicmV2aWF0ZWQpO2JyZWFrO2Nhc2UiR0dHRyI6bj1QTShmTS5FcmFzLEtDLldpZGUpO2JyZWFrO2Nhc2UiR0dHR0ciOm49UE0oZk0uRXJhcyxLQy5OYXJyb3cpO2JyZWFrO2Nhc2UieSI6bj1PTSh1TS5GdWxsWWVhciwxLDAsITEsITApO2JyZWFrO2Nhc2UieXkiOm49T00odU0uRnVsbFllYXIsMiwwLCEwLCEwKTticmVhaztjYXNlInl5eSI6bj1PTSh1TS5GdWxsWWVhciwzLDAsITEsITApO2JyZWFrO2Nhc2UieXl5eSI6bj1PTSh1TS5GdWxsWWVhciw0LDAsITEsITApO2JyZWFrO2Nhc2UiTSI6Y2FzZSJMIjpuPU9NKHVNLk1vbnRoLDEsMSk7YnJlYWs7Y2FzZSJNTSI6Y2FzZSJMTCI6bj1PTSh1TS5Nb250aCwyLDEpO2JyZWFrO2Nhc2UiTU1NIjpuPVBNKGZNLk1vbnRocyxLQy5BYmJyZXZpYXRlZCk7YnJlYWs7Y2FzZSJNTU1NIjpuPVBNKGZNLk1vbnRocyxLQy5XaWRlKTticmVhaztjYXNlIk1NTU1NIjpuPVBNKGZNLk1vbnRocyxLQy5OYXJyb3cpO2JyZWFrO2Nhc2UiTExMIjpuPVBNKGZNLk1vbnRocyxLQy5BYmJyZXZpYXRlZCxRQy5TdGFuZGFsb25lKTticmVhaztjYXNlIkxMTEwiOm49UE0oZk0uTW9udGhzLEtDLldpZGUsUUMuU3RhbmRhbG9uZSk7YnJlYWs7Y2FzZSJMTExMTCI6bj1QTShmTS5Nb250aHMsS0MuTmFycm93LFFDLlN0YW5kYWxvbmUpO2JyZWFrO2Nhc2UidyI6bj15TSgxKTticmVhaztjYXNlInd3IjpuPXlNKDIpO2JyZWFrO2Nhc2UiVyI6bj15TSgxLCEwKTticmVhaztjYXNlImQiOm49T00odU0uRGF0ZSwxKTticmVhaztjYXNlImRkIjpuPU9NKHVNLkRhdGUsMik7YnJlYWs7Y2FzZSJFIjpjYXNlIkVFIjpjYXNlIkVFRSI6bj1QTShmTS5EYXlzLEtDLkFiYnJldmlhdGVkKTticmVhaztjYXNlIkVFRUUiOm49UE0oZk0uRGF5cyxLQy5XaWRlKTticmVhaztjYXNlIkVFRUVFIjpuPVBNKGZNLkRheXMsS0MuTmFycm93KTticmVhaztjYXNlIkVFRUVFRSI6bj1QTShmTS5EYXlzLEtDLlNob3J0KTticmVhaztjYXNlImEiOmNhc2UiYWEiOmNhc2UiYWFhIjpuPVBNKGZNLkRheVBlcmlvZHMsS0MuQWJicmV2aWF0ZWQpO2JyZWFrO2Nhc2UiYWFhYSI6bj1QTShmTS5EYXlQZXJpb2RzLEtDLldpZGUpO2JyZWFrO2Nhc2UiYWFhYWEiOm49UE0oZk0uRGF5UGVyaW9kcyxLQy5OYXJyb3cpO2JyZWFrO2Nhc2UiYiI6Y2FzZSJiYiI6Y2FzZSJiYmIiOm49UE0oZk0uRGF5UGVyaW9kcyxLQy5BYmJyZXZpYXRlZCxRQy5TdGFuZGFsb25lLCEwKTticmVhaztjYXNlImJiYmIiOm49UE0oZk0uRGF5UGVyaW9kcyxLQy5XaWRlLFFDLlN0YW5kYWxvbmUsITApO2JyZWFrO2Nhc2UiYmJiYmIiOm49UE0oZk0uRGF5UGVyaW9kcyxLQy5OYXJyb3csUUMuU3RhbmRhbG9uZSwhMCk7YnJlYWs7Y2FzZSJCIjpjYXNlIkJCIjpjYXNlIkJCQiI6bj1QTShmTS5EYXlQZXJpb2RzLEtDLkFiYnJldmlhdGVkLFFDLkZvcm1hdCwhMCk7YnJlYWs7Y2FzZSJCQkJCIjpuPVBNKGZNLkRheVBlcmlvZHMsS0MuV2lkZSxRQy5Gb3JtYXQsITApO2JyZWFrO2Nhc2UiQkJCQkIiOm49UE0oZk0uRGF5UGVyaW9kcyxLQy5OYXJyb3csUUMuRm9ybWF0LCEwKTticmVhaztjYXNlImgiOm49T00odU0uSG91cnMsMSwtMTIpO2JyZWFrO2Nhc2UiaGgiOm49T00odU0uSG91cnMsMiwtMTIpO2JyZWFrO2Nhc2UiSCI6bj1PTSh1TS5Ib3VycywxKTticmVhaztjYXNlIkhIIjpuPU9NKHVNLkhvdXJzLDIpO2JyZWFrO2Nhc2UibSI6bj1PTSh1TS5NaW51dGVzLDEpO2JyZWFrO2Nhc2UibW0iOm49T00odU0uTWludXRlcywyKTticmVhaztjYXNlInMiOm49T00odU0uU2Vjb25kcywxKTticmVhaztjYXNlInNzIjpuPU9NKHVNLlNlY29uZHMsMik7YnJlYWs7Y2FzZSJTIjpuPU9NKHVNLkZyYWN0aW9uYWxTZWNvbmRzLDEpO2JyZWFrO2Nhc2UiU1MiOm49T00odU0uRnJhY3Rpb25hbFNlY29uZHMsMik7YnJlYWs7Y2FzZSJTU1MiOm49T00odU0uRnJhY3Rpb25hbFNlY29uZHMsMyk7YnJlYWs7Y2FzZSJaIjpjYXNlIlpaIjpjYXNlIlpaWiI6bj14TShiTS5TaG9ydCk7YnJlYWs7Y2FzZSJaWlpaWiI6bj14TShiTS5FeHRlbmRlZCk7YnJlYWs7Y2FzZSJPIjpjYXNlIk9PIjpjYXNlIk9PTyI6Y2FzZSJ6IjpjYXNlInp6IjpjYXNlInp6eiI6bj14TShiTS5TaG9ydEdNVCk7YnJlYWs7Y2FzZSJPT09PIjpjYXNlIlpaWloiOmNhc2Uienp6eiI6bj14TShiTS5Mb25nKTticmVhaztkZWZhdWx0OnJldHVybiBudWxsfXJldHVybiBrTVt0XT1uLG59KSh0KTttKz1uP24obyxlLHMpOiInJyI9PT10PyInIjp0LnJlcGxhY2UoLyheJ3wnJCkvZywiIikucmVwbGFjZSgvJycvZywiJyIpfSkpLG19ZnVuY3Rpb24gX00odCxuKXtjb25zdCBlPShmdW5jdGlvbiBhKHQpe3JldHVybiBzYih0KVtkYi5Mb2NhbGVJZF19KSh0KTtpZihnTVtlXT1nTVtlXXx8e30sZ01bZV1bbl0pcmV0dXJuIGdNW2VdW25dO2xldCBvPSIiO3N3aXRjaChuKXtjYXNlInNob3J0RGF0ZSI6bz1lTSh0LCRDLlNob3J0KTticmVhaztjYXNlIm1lZGl1bURhdGUiOm89ZU0odCwkQy5NZWRpdW0pO2JyZWFrO2Nhc2UibG9uZ0RhdGUiOm89ZU0odCwkQy5Mb25nKTticmVhaztjYXNlImZ1bGxEYXRlIjpvPWVNKHQsJEMuRnVsbCk7YnJlYWs7Y2FzZSJzaG9ydFRpbWUiOm89YU0odCwkQy5TaG9ydCk7YnJlYWs7Y2FzZSJtZWRpdW1UaW1lIjpvPWFNKHQsJEMuTWVkaXVtKTticmVhaztjYXNlImxvbmdUaW1lIjpvPWFNKHQsJEMuTG9uZyk7YnJlYWs7Y2FzZSJmdWxsVGltZSI6bz1hTSh0LCRDLkZ1bGwpO2JyZWFrO2Nhc2Uic2hvcnQiOmNvbnN0IG49X00odCwic2hvcnRUaW1lIiksZT1fTSh0LCJzaG9ydERhdGUiKTtvPUNNKG9NKHQsJEMuU2hvcnQpLFtuLGVdKTticmVhaztjYXNlIm1lZGl1bSI6Y29uc3QgYT1fTSh0LCJtZWRpdW1UaW1lIikscj1fTSh0LCJtZWRpdW1EYXRlIik7bz1DTShvTSh0LCRDLk1lZGl1bSksW2Escl0pO2JyZWFrO2Nhc2UibG9uZyI6Y29uc3QgaT1fTSh0LCJsb25nVGltZSIpLGM9X00odCwibG9uZ0RhdGUiKTtvPUNNKG9NKHQsJEMuTG9uZyksW2ksY10pO2JyZWFrO2Nhc2UiZnVsbCI6Y29uc3Qgcz1fTSh0LCJmdWxsVGltZSIpLGw9X00odCwiZnVsbERhdGUiKTtvPUNNKG9NKHQsJEMuRnVsbCksW3MsbF0pfXJldHVybiBvJiYoZ01bZV1bbl09byksb31mdW5jdGlvbiBDTSh0LG4pe3JldHVybiBuJiYodD10LnJlcGxhY2UoL1x7KFtefV0rKX0vZywoZnVuY3Rpb24odCxlKXtyZXR1cm4gbnVsbCE9biYmZSBpbiBuP25bZV06dH0pKSksdH1mdW5jdGlvbiBNTSh0LG4sZT0iLSIsYSxvKXtsZXQgcj0iIjsodDwwfHxvJiZ0PD0wKSYmKG8/dD0xLXQ6KHQ9LXQscj1lKSk7bGV0IGk9U3RyaW5nKHQpO2Zvcig7aS5sZW5ndGg8bjspaT0iMCIraTtyZXR1cm4gYSYmKGk9aS5zdWJzdHIoaS5sZW5ndGgtbikpLHIraX1mdW5jdGlvbiBPTSh0LG4sZT0wLGE9ITEsbz0hMSl7cmV0dXJuIGZ1bmN0aW9uKHIsaSl7bGV0IGM9KGZ1bmN0aW9uIHModCxuKXtzd2l0Y2godCl7Y2FzZSB1TS5GdWxsWWVhcjpyZXR1cm4gbi5nZXRGdWxsWWVhcigpO2Nhc2UgdU0uTW9udGg6cmV0dXJuIG4uZ2V0TW9udGgoKTtjYXNlIHVNLkRhdGU6cmV0dXJuIG4uZ2V0RGF0ZSgpO2Nhc2UgdU0uSG91cnM6cmV0dXJuIG4uZ2V0SG91cnMoKTtjYXNlIHVNLk1pbnV0ZXM6cmV0dXJuIG4uZ2V0TWludXRlcygpO2Nhc2UgdU0uU2Vjb25kczpyZXR1cm4gbi5nZXRTZWNvbmRzKCk7Y2FzZSB1TS5GcmFjdGlvbmFsU2Vjb25kczpyZXR1cm4gbi5nZXRNaWxsaXNlY29uZHMoKTtjYXNlIHVNLkRheTpyZXR1cm4gbi5nZXREYXkoKTtkZWZhdWx0OnRocm93IG5ldyBFcnJvcihgVW5rbm93biBEYXRlVHlwZSB2YWx1ZSAiJHt0fSIuYCl9fSkodCxyKTtpZigoZT4wfHxjPi1lKSYmKGMrPWUpLHQ9PT11TS5Ib3VycykwPT09YyYmLTEyPT09ZSYmKGM9MTIpO2Vsc2UgaWYodD09PXVNLkZyYWN0aW9uYWxTZWNvbmRzKXJldHVybihmdW5jdGlvbiBsKHQsbil7cmV0dXJuIE1NKHQsMykuc3Vic3RyKDAsbil9KShjLG4pO2NvbnN0IG09ck0oaSx0TS5NaW51c1NpZ24pO3JldHVybiBNTShjLG4sbSxhLG8pfX1mdW5jdGlvbiBQTSh0LG4sZT1RQy5Gb3JtYXQsYT0hMSl7cmV0dXJuIGZ1bmN0aW9uKG8scil7cmV0dXJuKGZ1bmN0aW9uIGkodCxuLGUsYSxvLHIpe3N3aXRjaChlKXtjYXNlIGZNLk1vbnRoczpyZXR1cm4oZnVuY3Rpb24gaSh0LG4sZSl7Y29uc3QgYT1zYih0KSxvPWxNKFthW2RiLk1vbnRoc0Zvcm1hdF0sYVtkYi5Nb250aHNTdGFuZGFsb25lXV0sbik7cmV0dXJuIGxNKG8sZSl9KShuLG8sYSlbdC5nZXRNb250aCgpXTtjYXNlIGZNLkRheXM6cmV0dXJuKGZ1bmN0aW9uIGModCxuLGUpe2NvbnN0IGE9c2IodCksbz1sTShbYVtkYi5EYXlzRm9ybWF0XSxhW2RiLkRheXNTdGFuZGFsb25lXV0sbik7cmV0dXJuIGxNKG8sZSl9KShuLG8sYSlbdC5nZXREYXkoKV07Y2FzZSBmTS5EYXlQZXJpb2RzOmNvbnN0IGk9dC5nZXRIb3VycygpLGM9dC5nZXRNaW51dGVzKCk7aWYocil7Y29uc3QgdD0oZnVuY3Rpb24gcyh0KXtjb25zdCBuPXNiKHQpO3JldHVybiBzTShuKSwobltkYi5FeHRyYURhdGFdWzJdfHxbXSkubWFwKCh0PT4ic3RyaW5nIj09dHlwZW9mIHQ/bU0odCk6W21NKHRbMF0pLG1NKHRbMV0pXSkpfSkobiksZT0oZnVuY3Rpb24gbCh0LG4sZSl7Y29uc3QgYT1zYih0KTtzTShhKTtjb25zdCBvPWxNKFthW2RiLkV4dHJhRGF0YV1bMF0sYVtkYi5FeHRyYURhdGFdWzFdXSxuKXx8W107cmV0dXJuIGxNKG8sZSl8fFtdfSkobixvLGEpLHI9dC5maW5kSW5kZXgoKHQ9PntpZihBcnJheS5pc0FycmF5KHQpKXtjb25zdFtuLGVdPXQsYT1pPj1uLmhvdXJzJiZjPj1uLm1pbnV0ZXMsbz1pPGUuaG91cnN8fGk9PT1lLmhvdXJzJiZjPGUubWludXRlcztpZihuLmhvdXJzPGUuaG91cnMpe2lmKGEmJm8pcmV0dXJuITB9ZWxzZSBpZihhfHxvKXJldHVybiEwfWVsc2UgaWYodC5ob3Vycz09PWkmJnQubWludXRlcz09PWMpcmV0dXJuITA7cmV0dXJuITF9KSk7aWYoLTEhPT1yKXJldHVybiBlW3JdfXJldHVybihmdW5jdGlvbiBtKHQsbixlKXtjb25zdCBhPXNiKHQpLG89bE0oW2FbZGIuRGF5UGVyaW9kc0Zvcm1hdF0sYVtkYi5EYXlQZXJpb2RzU3RhbmRhbG9uZV1dLG4pO3JldHVybiBsTShvLGUpfSkobixvLGEpW2k8MTI/MDoxXTtjYXNlIGZNLkVyYXM6cmV0dXJuKGZ1bmN0aW9uIGQodCxuKXtyZXR1cm4gbE0oc2IodClbZGIuRXJhc10sbil9KShuLGEpW3QuZ2V0RnVsbFllYXIoKTw9MD8wOjFdO2RlZmF1bHQ6dGhyb3cgbmV3IEVycm9yKGB1bmV4cGVjdGVkIHRyYW5zbGF0aW9uIHR5cGUgJHtlfWApfX0pKG8scix0LG4sZSxhKX19ZnVuY3Rpb24geE0odCl7cmV0dXJuIGZ1bmN0aW9uKG4sZSxhKXtjb25zdCBvPS0xKmEscj1yTShlLHRNLk1pbnVzU2lnbiksaT1vPjA/TWF0aC5mbG9vcihvLzYwKTpNYXRoLmNlaWwoby82MCk7c3dpdGNoKHQpe2Nhc2UgYk0uU2hvcnQ6cmV0dXJuKG8+PTA/IisiOiIiKStNTShpLDIscikrTU0oTWF0aC5hYnMobyU2MCksMixyKTtjYXNlIGJNLlNob3J0R01UOnJldHVybiJHTVQiKyhvPj0wPyIrIjoiIikrTU0oaSwxLHIpO2Nhc2UgYk0uTG9uZzpyZXR1cm4iR01UIisobz49MD8iKyI6IiIpK01NKGksMixyKSsiOiIrTU0oTWF0aC5hYnMobyU2MCksMixyKTtjYXNlIGJNLkV4dGVuZGVkOnJldHVybiAwPT09YT8iWiI6KG8+PTA/IisiOiIiKStNTShpLDIscikrIjoiK01NKE1hdGguYWJzKG8lNjApLDIscik7ZGVmYXVsdDp0aHJvdyBuZXcgRXJyb3IoYFVua25vd24gem9uZSB3aWR0aCAiJHt0fSJgKX19fWZ1bmN0aW9uIHlNKHQsbj0hMSl7cmV0dXJuIGZ1bmN0aW9uKGUsYSl7bGV0IG87aWYobil7Y29uc3QgdD1uZXcgRGF0ZShlLmdldEZ1bGxZZWFyKCksZS5nZXRNb250aCgpLDEpLmdldERheSgpLTEsbj1lLmdldERhdGUoKTtvPTErTWF0aC5mbG9vcigobit0KS83KX1lbHNle2NvbnN0IHQ9KGZ1bmN0aW9uIHIodCl7cmV0dXJuIG5ldyBEYXRlKHQuZ2V0RnVsbFllYXIoKSx0LmdldE1vbnRoKCksdC5nZXREYXRlKCkrKDQtdC5nZXREYXkoKSkpfSkoZSksbj0oZnVuY3Rpb24gaSh0KXtjb25zdCBuPW5ldyBEYXRlKHQsMCwxKS5nZXREYXkoKTtyZXR1cm4gbmV3IERhdGUodCwwLDErKG48PTQ/NDoxMSktbil9KSh0LmdldEZ1bGxZZWFyKCkpLGE9dC5nZXRUaW1lKCktbi5nZXRUaW1lKCk7bz0xK01hdGgucm91bmQoYS82MDQ4ZTUpfXJldHVybiBNTShvLHQsck0oYSx0TS5NaW51c1NpZ24pKX19IShmdW5jdGlvbih0KXt0W3QuU2hvcnQ9MF09IlNob3J0Iix0W3QuU2hvcnRHTVQ9MV09IlNob3J0R01UIix0W3QuTG9uZz0yXT0iTG9uZyIsdFt0LkV4dGVuZGVkPTNdPSJFeHRlbmRlZCJ9KShiTXx8KGJNPXt9KSksKGZ1bmN0aW9uKHQpe3RbdC5GdWxsWWVhcj0wXT0iRnVsbFllYXIiLHRbdC5Nb250aD0xXT0iTW9udGgiLHRbdC5EYXRlPTJdPSJEYXRlIix0W3QuSG91cnM9M109IkhvdXJzIix0W3QuTWludXRlcz00XT0iTWludXRlcyIsdFt0LlNlY29uZHM9NV09IlNlY29uZHMiLHRbdC5GcmFjdGlvbmFsU2Vjb25kcz02XT0iRnJhY3Rpb25hbFNlY29uZHMiLHRbdC5EYXk9N109IkRheSJ9KSh1TXx8KHVNPXt9KSksKGZ1bmN0aW9uKHQpe3RbdC5EYXlQZXJpb2RzPTBdPSJEYXlQZXJpb2RzIix0W3QuRGF5cz0xXT0iRGF5cyIsdFt0Lk1vbnRocz0yXT0iTW9udGhzIix0W3QuRXJhcz0zXT0iRXJhcyJ9KShmTXx8KGZNPXt9KSk7Y29uc3Qga009e307ZnVuY3Rpb24gdk0odCxuKXt0PXQucmVwbGFjZSgvOi9nLCIiKTtjb25zdCBlPURhdGUucGFyc2UoIkphbiAwMSwgMTk3MCAwMDowMDowMCAiK3QpLzZlNDtyZXR1cm4gaXNOYU4oZSk/bjplfWZ1bmN0aW9uIHdNKHQpe3JldHVybiB0IGluc3RhbmNlb2YgRGF0ZSYmIWlzTmFOKHQudmFsdWVPZigpKX0KLyoqCiAgICAgKiBAbGljZW5zZQogICAgICogQ29weXJpZ2h0IEdvb2dsZSBMTEMgQWxsIFJpZ2h0cyBSZXNlcnZlZC4KICAgICAqCiAgICAgKiBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhbiBNSVQtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQogICAgICogZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZSBhdCBodHRwczovL2FuZ3VsYXIuaW8vbGljZW5zZQogICAgICovY29uc3QgU009L14oXGQrKT9cLigoXGQrKSgtKFxkKykpPyk/JC8sRU09Ii4iLEFNPSIwIjtmdW5jdGlvbiB6TSh0LG4sZSxhLG8scixpPSExKXtsZXQgYz0iIixzPSExO2lmKGlzRmluaXRlKHQpKXtsZXQgbD0oZnVuY3Rpb24gbCh0KXtsZXQgbixlLGEsbyxyLGk9TWF0aC5hYnModCkrIiIsYz0wO2ZvcigoZT1pLmluZGV4T2YoRU0pKT4tMSYmKGk9aS5yZXBsYWNlKEVNLCIiKSksKGE9aS5zZWFyY2goL2UvaSkpPjA/KGU8MCYmKGU9YSksZSs9K2kuc2xpY2UoYSsxKSxpPWkuc3Vic3RyaW5nKDAsYSkpOmU8MCYmKGU9aS5sZW5ndGgpLGE9MDtpLmNoYXJBdChhKT09PUFNO2ErKyk7aWYoYT09PShyPWkubGVuZ3RoKSluPVswXSxlPTE7ZWxzZXtmb3Ioci0tO2kuY2hhckF0KHIpPT09QU07KXItLTtmb3IoZS09YSxuPVtdLG89MDthPD1yO2ErKyxvKyspbltvXT1OdW1iZXIoaS5jaGFyQXQoYSkpfXJldHVybiBlPjIyJiYobj1uLnNwbGljZSgwLDIxKSxjPWUtMSxlPTEpLHtkaWdpdHM6bixleHBvbmVudDpjLGludGVnZXJMZW46ZX19KSh0KTtpJiYobD0oZnVuY3Rpb24gbSh0KXtpZigwPT09dC5kaWdpdHNbMF0pcmV0dXJuIHQ7Y29uc3Qgbj10LmRpZ2l0cy5sZW5ndGgtdC5pbnRlZ2VyTGVuO3JldHVybiB0LmV4cG9uZW50P3QuZXhwb25lbnQrPTI6KDA9PT1uP3QuZGlnaXRzLnB1c2goMCwwKToxPT09biYmdC5kaWdpdHMucHVzaCgwKSx0LmludGVnZXJMZW4rPTIpLHR9KShsKSk7bGV0IG09bi5taW5JbnQsZD1uLm1pbkZyYWMsZz1uLm1heEZyYWM7aWYocil7Y29uc3QgdD1yLm1hdGNoKFNNKTtpZihudWxsPT09dCl0aHJvdyBuZXcgRXJyb3IoYCR7cn0gaXMgbm90IGEgdmFsaWQgZGlnaXQgaW5mb2ApO2NvbnN0IG49dFsxXSxlPXRbM10sYT10WzVdO251bGwhPW4mJihtPURNKG4pKSxudWxsIT1lJiYoZD1ETShlKSksbnVsbCE9YT9nPURNKGEpOm51bGwhPWUmJmQ+ZyYmKGc9ZCl9IShmdW5jdGlvbiBkKHQsbixlKXtpZihuPmUpdGhyb3cgbmV3IEVycm9yKGBUaGUgbWluaW11bSBudW1iZXIgb2YgZGlnaXRzIGFmdGVyIGZyYWN0aW9uICgke259KSBpcyBoaWdoZXIgdGhhbiB0aGUgbWF4aW11bSAoJHtlfSkuYCk7bGV0IGE9dC5kaWdpdHMsbz1hLmxlbmd0aC10LmludGVnZXJMZW47Y29uc3Qgcj1NYXRoLm1pbihNYXRoLm1heChuLG8pLGUpO2xldCBpPXIrdC5pbnRlZ2VyTGVuLGM9YVtpXTtpZihpPjApe2Euc3BsaWNlKE1hdGgubWF4KHQuaW50ZWdlckxlbixpKSk7Zm9yKGxldCB0PWk7dDxhLmxlbmd0aDt0KyspYVt0XT0wfWVsc2V7bz1NYXRoLm1heCgwLG8pLHQuaW50ZWdlckxlbj0xLGEubGVuZ3RoPU1hdGgubWF4KDEsaT1yKzEpLGFbMF09MDtmb3IobGV0IHQ9MTt0PGk7dCsrKWFbdF09MH1pZihjPj01KWlmKGktMTwwKXtmb3IobGV0IG49MDtuPmk7bi0tKWEudW5zaGlmdCgwKSx0LmludGVnZXJMZW4rKzthLnVuc2hpZnQoMSksdC5pbnRlZ2VyTGVuKyt9ZWxzZSBhW2ktMV0rKztmb3IoO288TWF0aC5tYXgoMCxyKTtvKyspYS5wdXNoKDApO2xldCBzPTAhPT1yO2NvbnN0IGw9bit0LmludGVnZXJMZW4sbT1hLnJlZHVjZVJpZ2h0KChmdW5jdGlvbih0LG4sZSxhKXtyZXR1cm4gYVtlXT0obis9dCk8MTA/bjpuLTEwLHMmJigwPT09YVtlXSYmZT49bD9hLnBvcCgpOnM9ITEpLG4+PTEwPzE6MH0pLDApO20mJihhLnVuc2hpZnQobSksdC5pbnRlZ2VyTGVuKyspfSkobCxkLGcpO2xldCBwPWwuZGlnaXRzLGI9bC5pbnRlZ2VyTGVuO2NvbnN0IHU9bC5leHBvbmVudDtsZXQgZj1bXTtmb3Iocz1wLmV2ZXJ5KCh0PT4hdCkpO2I8bTtiKyspcC51bnNoaWZ0KDApO2Zvcig7YjwwO2IrKylwLnVuc2hpZnQoMCk7Yj4wP2Y9cC5zcGxpY2UoYixwLmxlbmd0aCk6KGY9cCxwPVswXSk7Y29uc3QgaD1bXTtmb3IocC5sZW5ndGg+PW4ubGdTaXplJiZoLnVuc2hpZnQocC5zcGxpY2UoLW4ubGdTaXplLHAubGVuZ3RoKS5qb2luKCIiKSk7cC5sZW5ndGg+bi5nU2l6ZTspaC51bnNoaWZ0KHAuc3BsaWNlKC1uLmdTaXplLHAubGVuZ3RoKS5qb2luKCIiKSk7cC5sZW5ndGgmJmgudW5zaGlmdChwLmpvaW4oIiIpKSxjPWguam9pbihyTShlLGEpKSxmLmxlbmd0aCYmKGMrPXJNKGUsbykrZi5qb2luKCIiKSksdSYmKGMrPXJNKGUsdE0uRXhwb25lbnRpYWwpKyIrIit1KX1lbHNlIGM9ck0oZSx0TS5JbmZpbml0eSk7cmV0dXJuIGM9dDwwJiYhcz9uLm5lZ1ByZStjK24ubmVnU3VmOm4ucG9zUHJlK2Mrbi5wb3NTdWYsY31mdW5jdGlvbiBSTSh0LG4sZSl7cmV0dXJuIHpNKHQsVE0oaU0obixYQy5EZWNpbWFsKSxyTShuLHRNLk1pbnVzU2lnbikpLG4sdE0uR3JvdXAsdE0uRGVjaW1hbCxlKX1mdW5jdGlvbiBUTSh0LG49Ii0iKXtjb25zdCBlPXttaW5JbnQ6MSxtaW5GcmFjOjAsbWF4RnJhYzowLHBvc1ByZToiIixwb3NTdWY6IiIsbmVnUHJlOiIiLG5lZ1N1ZjoiIixnU2l6ZTowLGxnU2l6ZTowfSxhPXQuc3BsaXQoIjsiKSxvPWFbMF0scj1hWzFdLGk9LTEhPT1vLmluZGV4T2YoRU0pP28uc3BsaXQoRU0pOltvLnN1YnN0cmluZygwLG8ubGFzdEluZGV4T2YoQU0pKzEpLG8uc3Vic3RyaW5nKG8ubGFzdEluZGV4T2YoQU0pKzEpXSxjPWlbMF0scz1pWzFdfHwiIjtlLnBvc1ByZT1jLnN1YnN0cigwLGMuaW5kZXhPZigiIyIpKTtmb3IobGV0IHQ9MDt0PHMubGVuZ3RoO3QrKyl7Y29uc3Qgbj1zLmNoYXJBdCh0KTtuPT09QU0/ZS5taW5GcmFjPWUubWF4RnJhYz10KzE6IiMiPT09bj9lLm1heEZyYWM9dCsxOmUucG9zU3VmKz1ufWNvbnN0IGw9Yy5zcGxpdCgiLCIpO2lmKGUuZ1NpemU9bFsxXT9sWzFdLmxlbmd0aDowLGUubGdTaXplPWxbMl18fGxbMV0/KGxbMl18fGxbMV0pLmxlbmd0aDowLHIpe2NvbnN0IHQ9by5sZW5ndGgtZS5wb3NQcmUubGVuZ3RoLWUucG9zU3VmLmxlbmd0aCxuPXIuaW5kZXhPZigiIyIpO2UubmVnUHJlPXIuc3Vic3RyKDAsbikucmVwbGFjZSgvJy9nLCIiKSxlLm5lZ1N1Zj1yLnN1YnN0cihuK3QpLnJlcGxhY2UoLycvZywiIil9ZWxzZSBlLm5lZ1ByZT1uK2UucG9zUHJlLGUubmVnU3VmPWUucG9zU3VmO3JldHVybiBlfWZ1bmN0aW9uIERNKHQpe2NvbnN0IG49cGFyc2VJbnQodCk7aWYoaXNOYU4obikpdGhyb3cgbmV3IEVycm9yKCJJbnZhbGlkIGludGVnZXIgbGl0ZXJhbCB3aGVuIHBhcnNpbmcgIit0KTtyZXR1cm4gbn0KLyoqCiAgICAgKiBAbGljZW5zZQogICAgICogQ29weXJpZ2h0IEdvb2dsZSBMTEMgQWxsIFJpZ2h0cyBSZXNlcnZlZC4KICAgICAqCiAgICAgKiBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhbiBNSVQtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQogICAgICogZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZSBhdCBodHRwczovL2FuZ3VsYXIuaW8vbGljZW5zZQogICAgICovY2xhc3MgSU17fWZ1bmN0aW9uIE5NKHQsbixlLGEpe2xldCBvPWA9JHt0fWA7aWYobi5pbmRleE9mKG8pPi0xKXJldHVybiBvO2lmKG89ZS5nZXRQbHVyYWxDYXRlZ29yeSh0LGEpLG4uaW5kZXhPZihvKT4tMSlyZXR1cm4gbztpZihuLmluZGV4T2YoIm90aGVyIik+LTEpcmV0dXJuIm90aGVyIjt0aHJvdyBuZXcgRXJyb3IoYE5vIHBsdXJhbCBtZXNzYWdlIGZvdW5kIGZvciB2YWx1ZSAiJHt0fSJgKX1jbGFzcyBGTSBleHRlbmRzIElNe2NvbnN0cnVjdG9yKHQpe3N1cGVyKCksdGhpcy5sb2NhbGU9dH1nZXRQbHVyYWxDYXRlZ29yeSh0LG4pe3N3aXRjaChjTShufHx0aGlzLmxvY2FsZSkodCkpe2Nhc2UgSkMuWmVybzpyZXR1cm4iemVybyI7Y2FzZSBKQy5PbmU6cmV0dXJuIm9uZSI7Y2FzZSBKQy5Ud286cmV0dXJuInR3byI7Y2FzZSBKQy5GZXc6cmV0dXJuImZldyI7Y2FzZSBKQy5NYW55OnJldHVybiJtYW55IjtkZWZhdWx0OnJldHVybiJvdGhlciJ9fX0KLyoqCiAgICAgKiBAbGljZW5zZQogICAgICogQ29weXJpZ2h0IEdvb2dsZSBMTEMgQWxsIFJpZ2h0cyBSZXNlcnZlZC4KICAgICAqCiAgICAgKiBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhbiBNSVQtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQogICAgICogZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZSBhdCBodHRwczovL2FuZ3VsYXIuaW8vbGljZW5zZQogICAgICovCmZ1bmN0aW9uIExNKHQsbil7bj1lbmNvZGVVUklDb21wb25lbnQobik7Zm9yKGNvbnN0IGUgb2YgdC5zcGxpdCgiOyIpKXtjb25zdCB0PWUuaW5kZXhPZigiPSIpLFthLG9dPS0xPT10P1tlLCIiXTpbZS5zbGljZSgwLHQpLGUuc2xpY2UodCsxKV07aWYoYS50cmltKCk9PT1uKXJldHVybiBkZWNvZGVVUklDb21wb25lbnQobyl9cmV0dXJuIG51bGx9Ci8qKgogICAgICogQGxpY2Vuc2UKICAgICAqIENvcHlyaWdodCBHb29nbGUgTExDIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCiAgICAgKgogICAgICogVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYW4gTUlULXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKICAgICAqIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUgYXQgaHR0cHM6Ly9hbmd1bGFyLmlvL2xpY2Vuc2UKICAgICAqL0ZNLsm1ZmFjPWZ1bmN0aW9uIHQobil7cmV0dXJuIG5ldyhufHxGTSkoWmEoTl8pKX0sRk0uybVwcm92PVdlKHt0b2tlbjpGTSxmYWN0b3J5OkZNLsm1ZmFjfSksRk0uY3RvclBhcmFtZXRlcnM9KCk9Plt7dHlwZTpTdHJpbmcsZGVjb3JhdG9yczpbe3R5cGU6SWUsYXJnczpbTl9dfV19XTtjbGFzcyBITXtjb25zdHJ1Y3Rvcih0LG4sZSxhKXt0aGlzLl9pdGVyYWJsZURpZmZlcnM9dCx0aGlzLl9rZXlWYWx1ZURpZmZlcnM9bix0aGlzLl9uZ0VsPWUsdGhpcy5fcmVuZGVyZXI9YSx0aGlzLl9pdGVyYWJsZURpZmZlcj1udWxsLHRoaXMuX2tleVZhbHVlRGlmZmVyPW51bGwsdGhpcy5faW5pdGlhbENsYXNzZXM9W10sdGhpcy5fcmF3Q2xhc3M9bnVsbH1zZXQga2xhc3ModCl7dGhpcy5fcmVtb3ZlQ2xhc3Nlcyh0aGlzLl9pbml0aWFsQ2xhc3NlcyksdGhpcy5faW5pdGlhbENsYXNzZXM9InN0cmluZyI9PXR5cGVvZiB0P3Quc3BsaXQoL1xzKy8pOltdLHRoaXMuX2FwcGx5Q2xhc3Nlcyh0aGlzLl9pbml0aWFsQ2xhc3NlcyksdGhpcy5fYXBwbHlDbGFzc2VzKHRoaXMuX3Jhd0NsYXNzKX1zZXQgbmdDbGFzcyh0KXt0aGlzLl9yZW1vdmVDbGFzc2VzKHRoaXMuX3Jhd0NsYXNzKSx0aGlzLl9hcHBseUNsYXNzZXModGhpcy5faW5pdGlhbENsYXNzZXMpLHRoaXMuX2l0ZXJhYmxlRGlmZmVyPW51bGwsdGhpcy5fa2V5VmFsdWVEaWZmZXI9bnVsbCx0aGlzLl9yYXdDbGFzcz0ic3RyaW5nIj09dHlwZW9mIHQ/dC5zcGxpdCgvXHMrLyk6dCx0aGlzLl9yYXdDbGFzcyYmKFNnKHRoaXMuX3Jhd0NsYXNzKT90aGlzLl9pdGVyYWJsZURpZmZlcj10aGlzLl9pdGVyYWJsZURpZmZlcnMuZmluZCh0aGlzLl9yYXdDbGFzcykuY3JlYXRlKCk6dGhpcy5fa2V5VmFsdWVEaWZmZXI9dGhpcy5fa2V5VmFsdWVEaWZmZXJzLmZpbmQodGhpcy5fcmF3Q2xhc3MpLmNyZWF0ZSgpKX1uZ0RvQ2hlY2soKXtpZih0aGlzLl9pdGVyYWJsZURpZmZlcil7Y29uc3QgdD10aGlzLl9pdGVyYWJsZURpZmZlci5kaWZmKHRoaXMuX3Jhd0NsYXNzKTt0JiZ0aGlzLl9hcHBseUl0ZXJhYmxlQ2hhbmdlcyh0KX1lbHNlIGlmKHRoaXMuX2tleVZhbHVlRGlmZmVyKXtjb25zdCB0PXRoaXMuX2tleVZhbHVlRGlmZmVyLmRpZmYodGhpcy5fcmF3Q2xhc3MpO3QmJnRoaXMuX2FwcGx5S2V5VmFsdWVDaGFuZ2VzKHQpfX1fYXBwbHlLZXlWYWx1ZUNoYW5nZXModCl7dC5mb3JFYWNoQWRkZWRJdGVtKCh0PT50aGlzLl90b2dnbGVDbGFzcyh0LmtleSx0LmN1cnJlbnRWYWx1ZSkpKSx0LmZvckVhY2hDaGFuZ2VkSXRlbSgodD0+dGhpcy5fdG9nZ2xlQ2xhc3ModC5rZXksdC5jdXJyZW50VmFsdWUpKSksdC5mb3JFYWNoUmVtb3ZlZEl0ZW0oKHQ9Pnt0LnByZXZpb3VzVmFsdWUmJnRoaXMuX3RvZ2dsZUNsYXNzKHQua2V5LCExKX0pKX1fYXBwbHlJdGVyYWJsZUNoYW5nZXModCl7dC5mb3JFYWNoQWRkZWRJdGVtKCh0PT57aWYoInN0cmluZyIhPXR5cGVvZiB0Lml0ZW0pdGhyb3cgbmV3IEVycm9yKGBOZ0NsYXNzIGNhbiBvbmx5IHRvZ2dsZSBDU1MgY2xhc3NlcyBleHByZXNzZWQgYXMgc3RyaW5ncywgZ290ICR7dGEodC5pdGVtKX1gKTt0aGlzLl90b2dnbGVDbGFzcyh0Lml0ZW0sITApfSkpLHQuZm9yRWFjaFJlbW92ZWRJdGVtKCh0PT50aGlzLl90b2dnbGVDbGFzcyh0Lml0ZW0sITEpKSl9X2FwcGx5Q2xhc3Nlcyh0KXt0JiYoQXJyYXkuaXNBcnJheSh0KXx8dCBpbnN0YW5jZW9mIFNldD90LmZvckVhY2goKHQ9PnRoaXMuX3RvZ2dsZUNsYXNzKHQsITApKSk6T2JqZWN0LmtleXModCkuZm9yRWFjaCgobj0+dGhpcy5fdG9nZ2xlQ2xhc3MobiwhIXRbbl0pKSkpfV9yZW1vdmVDbGFzc2VzKHQpe3QmJihBcnJheS5pc0FycmF5KHQpfHx0IGluc3RhbmNlb2YgU2V0P3QuZm9yRWFjaCgodD0+dGhpcy5fdG9nZ2xlQ2xhc3ModCwhMSkpKTpPYmplY3Qua2V5cyh0KS5mb3JFYWNoKCh0PT50aGlzLl90b2dnbGVDbGFzcyh0LCExKSkpKX1fdG9nZ2xlQ2xhc3ModCxuKXsodD10LnRyaW0oKSkmJnQuc3BsaXQoL1xzKy9nKS5mb3JFYWNoKCh0PT57bj90aGlzLl9yZW5kZXJlci5hZGRDbGFzcyh0aGlzLl9uZ0VsLm5hdGl2ZUVsZW1lbnQsdCk6dGhpcy5fcmVuZGVyZXIucmVtb3ZlQ2xhc3ModGhpcy5fbmdFbC5uYXRpdmVFbGVtZW50LHQpfSkpfX1ITS7JtWZhYz1mdW5jdGlvbiB0KG4pe3JldHVybiBuZXcobnx8SE0pKFpnKFd1KSxaZyhHdSksWmcoeHUpLFpnKFN1KSl9LEhNLsm1ZGlyPXZvKHt0eXBlOkhNLHNlbGVjdG9yczpbWyIiLCJuZ0NsYXNzIiwiIl1dLGlucHV0czp7a2xhc3M6WyJjbGFzcyIsImtsYXNzIl0sbmdDbGFzczoibmdDbGFzcyJ9fSksSE0uY3RvclBhcmFtZXRlcnM9KCk9Plt7dHlwZTpXdX0se3R5cGU6R3V9LHt0eXBlOnh1fSx7dHlwZTpTdX1dLEhNLnByb3BEZWNvcmF0b3JzPXtrbGFzczpbe3R5cGU6Zl8sYXJnczpbImNsYXNzIl19XSxuZ0NsYXNzOlt7dHlwZTpmXyxhcmdzOlsibmdDbGFzcyJdfV19OwovKioKICAgICAqIEBsaWNlbnNlCiAgICAgKiBDb3B5cmlnaHQgR29vZ2xlIExMQyBBbGwgUmlnaHRzIFJlc2VydmVkLgogICAgICoKICAgICAqIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGFuIE1JVC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCiAgICAgKiBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlIGF0IGh0dHBzOi8vYW5ndWxhci5pby9saWNlbnNlCiAgICAgKi8KY2xhc3MgQk17Y29uc3RydWN0b3IodCl7dGhpcy5fdmlld0NvbnRhaW5lclJlZj10LHRoaXMuX2NvbXBvbmVudFJlZj1udWxsLHRoaXMuX21vZHVsZVJlZj1udWxsfW5nT25DaGFuZ2VzKHQpe2lmKHRoaXMuX3ZpZXdDb250YWluZXJSZWYuY2xlYXIoKSx0aGlzLl9jb21wb25lbnRSZWY9bnVsbCx0aGlzLm5nQ29tcG9uZW50T3V0bGV0KXtjb25zdCBuPXRoaXMubmdDb21wb25lbnRPdXRsZXRJbmplY3Rvcnx8dGhpcy5fdmlld0NvbnRhaW5lclJlZi5wYXJlbnRJbmplY3RvcjtpZih0Lm5nQ29tcG9uZW50T3V0bGV0TmdNb2R1bGVGYWN0b3J5KWlmKHRoaXMuX21vZHVsZVJlZiYmdGhpcy5fbW9kdWxlUmVmLmRlc3Ryb3koKSx0aGlzLm5nQ29tcG9uZW50T3V0bGV0TmdNb2R1bGVGYWN0b3J5KXtjb25zdCB0PW4uZ2V0KG5vKTt0aGlzLl9tb2R1bGVSZWY9dGhpcy5uZ0NvbXBvbmVudE91dGxldE5nTW9kdWxlRmFjdG9yeS5jcmVhdGUodC5pbmplY3Rvcil9ZWxzZSB0aGlzLl9tb2R1bGVSZWY9bnVsbDtjb25zdCBlPSh0aGlzLl9tb2R1bGVSZWY/dGhpcy5fbW9kdWxlUmVmLmNvbXBvbmVudEZhY3RvcnlSZXNvbHZlcjpuLmdldChQdSkpLnJlc29sdmVDb21wb25lbnRGYWN0b3J5KHRoaXMubmdDb21wb25lbnRPdXRsZXQpO3RoaXMuX2NvbXBvbmVudFJlZj10aGlzLl92aWV3Q29udGFpbmVyUmVmLmNyZWF0ZUNvbXBvbmVudChlLHRoaXMuX3ZpZXdDb250YWluZXJSZWYubGVuZ3RoLG4sdGhpcy5uZ0NvbXBvbmVudE91dGxldENvbnRlbnQpfX1uZ09uRGVzdHJveSgpe3RoaXMuX21vZHVsZVJlZiYmdGhpcy5fbW9kdWxlUmVmLmRlc3Ryb3koKX19Qk0uybVmYWM9ZnVuY3Rpb24gdChuKXtyZXR1cm4gbmV3KG58fEJNKShaZygkdSkpfSxCTS7JtWRpcj12byh7dHlwZTpCTSxzZWxlY3RvcnM6W1siIiwibmdDb21wb25lbnRPdXRsZXQiLCIiXV0saW5wdXRzOntuZ0NvbXBvbmVudE91dGxldDoibmdDb21wb25lbnRPdXRsZXQiLG5nQ29tcG9uZW50T3V0bGV0SW5qZWN0b3I6Im5nQ29tcG9uZW50T3V0bGV0SW5qZWN0b3IiLG5nQ29tcG9uZW50T3V0bGV0Q29udGVudDoibmdDb21wb25lbnRPdXRsZXRDb250ZW50IixuZ0NvbXBvbmVudE91dGxldE5nTW9kdWxlRmFjdG9yeToibmdDb21wb25lbnRPdXRsZXROZ01vZHVsZUZhY3RvcnkifSxmZWF0dXJlczpbcHJdfSksQk0uY3RvclBhcmFtZXRlcnM9KCk9Plt7dHlwZTokdX1dLEJNLnByb3BEZWNvcmF0b3JzPXtuZ0NvbXBvbmVudE91dGxldDpbe3R5cGU6Zl99XSxuZ0NvbXBvbmVudE91dGxldEluamVjdG9yOlt7dHlwZTpmX31dLG5nQ29tcG9uZW50T3V0bGV0Q29udGVudDpbe3R5cGU6Zl99XSxuZ0NvbXBvbmVudE91dGxldE5nTW9kdWxlRmFjdG9yeTpbe3R5cGU6Zl99XX07Ci8qKgogICAgICogQGxpY2Vuc2UKICAgICAqIENvcHlyaWdodCBHb29nbGUgTExDIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCiAgICAgKgogICAgICogVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYW4gTUlULXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKICAgICAqIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUgYXQgaHR0cHM6Ly9hbmd1bGFyLmlvL2xpY2Vuc2UKICAgICAqLwpjbGFzcyBWTXtjb25zdHJ1Y3Rvcih0LG4sZSxhKXt0aGlzLiRpbXBsaWNpdD10LHRoaXMubmdGb3JPZj1uLHRoaXMuaW5kZXg9ZSx0aGlzLmNvdW50PWF9Z2V0IGZpcnN0KCl7cmV0dXJuIDA9PT10aGlzLmluZGV4fWdldCBsYXN0KCl7cmV0dXJuIHRoaXMuaW5kZXg9PT10aGlzLmNvdW50LTF9Z2V0IGV2ZW4oKXtyZXR1cm4gdGhpcy5pbmRleCUyPT0wfWdldCBvZGQoKXtyZXR1cm4hdGhpcy5ldmVufX1jbGFzcyBqTXtjb25zdHJ1Y3Rvcih0LG4sZSl7dGhpcy5fdmlld0NvbnRhaW5lcj10LHRoaXMuX3RlbXBsYXRlPW4sdGhpcy5fZGlmZmVycz1lLHRoaXMuX25nRm9yT2Y9bnVsbCx0aGlzLl9uZ0Zvck9mRGlydHk9ITAsdGhpcy5fZGlmZmVyPW51bGx9c2V0IG5nRm9yT2YodCl7dGhpcy5fbmdGb3JPZj10LHRoaXMuX25nRm9yT2ZEaXJ0eT0hMH1zZXQgbmdGb3JUcmFja0J5KHQpe19jKCkmJm51bGwhPXQmJiJmdW5jdGlvbiIhPXR5cGVvZiB0JiZjb25zb2xlJiZjb25zb2xlLndhcm4mJmNvbnNvbGUud2FybihgdHJhY2tCeSBtdXN0IGJlIGEgZnVuY3Rpb24sIGJ1dCByZWNlaXZlZCAke0pTT04uc3RyaW5naWZ5KHQpfS4gU2VlIGh0dHBzOi8vYW5ndWxhci5pby9hcGkvY29tbW9uL05nRm9yT2YjY2hhbmdlLXByb3BhZ2F0aW9uIGZvciBtb3JlIGluZm9ybWF0aW9uLmApLHRoaXMuX3RyYWNrQnlGbj10fWdldCBuZ0ZvclRyYWNrQnkoKXtyZXR1cm4gdGhpcy5fdHJhY2tCeUZufXNldCBuZ0ZvclRlbXBsYXRlKHQpe3QmJih0aGlzLl90ZW1wbGF0ZT10KX1uZ0RvQ2hlY2soKXtpZih0aGlzLl9uZ0Zvck9mRGlydHkpe3RoaXMuX25nRm9yT2ZEaXJ0eT0hMTtjb25zdCB0PXRoaXMuX25nRm9yT2Y7aWYoIXRoaXMuX2RpZmZlciYmdCl0cnl7dGhpcy5fZGlmZmVyPXRoaXMuX2RpZmZlcnMuZmluZCh0KS5jcmVhdGUodGhpcy5uZ0ZvclRyYWNrQnkpfWNhdGNoKG4pe3Rocm93IG5ldyBFcnJvcihgQ2Fubm90IGZpbmQgYSBkaWZmZXIgc3VwcG9ydGluZyBvYmplY3QgJyR7dH0nIG9mIHR5cGUgJyR7KGZ1bmN0aW9uIHQobil7cmV0dXJuIG4ubmFtZXx8dHlwZW9mIG59Ci8qKgogICAgICogQGxpY2Vuc2UKICAgICAqIENvcHlyaWdodCBHb29nbGUgTExDIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCiAgICAgKgogICAgICogVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYW4gTUlULXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKICAgICAqIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUgYXQgaHR0cHM6Ly9hbmd1bGFyLmlvL2xpY2Vuc2UKICAgICAqLykodCl9Jy4gTmdGb3Igb25seSBzdXBwb3J0cyBiaW5kaW5nIHRvIEl0ZXJhYmxlcyBzdWNoIGFzIEFycmF5cy5gKX19aWYodGhpcy5fZGlmZmVyKXtjb25zdCB0PXRoaXMuX2RpZmZlci5kaWZmKHRoaXMuX25nRm9yT2YpO3QmJnRoaXMuX2FwcGx5Q2hhbmdlcyh0KX19X2FwcGx5Q2hhbmdlcyh0KXtjb25zdCBuPVtdO3QuZm9yRWFjaE9wZXJhdGlvbigoKHQsZSxhKT0+e2lmKG51bGw9PXQucHJldmlvdXNJbmRleCl7Y29uc3QgZT10aGlzLl92aWV3Q29udGFpbmVyLmNyZWF0ZUVtYmVkZGVkVmlldyh0aGlzLl90ZW1wbGF0ZSxuZXcgVk0obnVsbCx0aGlzLl9uZ0Zvck9mLC0xLC0xKSxudWxsPT09YT92b2lkIDA6YSksbz1uZXcgVU0odCxlKTtuLnB1c2gobyl9ZWxzZSBpZihudWxsPT1hKXRoaXMuX3ZpZXdDb250YWluZXIucmVtb3ZlKG51bGw9PT1lP3ZvaWQgMDplKTtlbHNlIGlmKG51bGwhPT1lKXtjb25zdCBvPXRoaXMuX3ZpZXdDb250YWluZXIuZ2V0KGUpO3RoaXMuX3ZpZXdDb250YWluZXIubW92ZShvLGEpO2NvbnN0IHI9bmV3IFVNKHQsbyk7bi5wdXNoKHIpfX0pKTtmb3IobGV0IHQ9MDt0PG4ubGVuZ3RoO3QrKyl0aGlzLl9wZXJWaWV3Q2hhbmdlKG5bdF0udmlldyxuW3RdLnJlY29yZCk7Zm9yKGxldCB0PTAsbj10aGlzLl92aWV3Q29udGFpbmVyLmxlbmd0aDt0PG47dCsrKXtjb25zdCBlPXRoaXMuX3ZpZXdDb250YWluZXIuZ2V0KHQpO2UuY29udGV4dC5pbmRleD10LGUuY29udGV4dC5jb3VudD1uLGUuY29udGV4dC5uZ0Zvck9mPXRoaXMuX25nRm9yT2Z9dC5mb3JFYWNoSWRlbnRpdHlDaGFuZ2UoKHQ9Pnt0aGlzLl92aWV3Q29udGFpbmVyLmdldCh0LmN1cnJlbnRJbmRleCkuY29udGV4dC4kaW1wbGljaXQ9dC5pdGVtfSkpfV9wZXJWaWV3Q2hhbmdlKHQsbil7dC5jb250ZXh0LiRpbXBsaWNpdD1uLml0ZW19c3RhdGljIG5nVGVtcGxhdGVDb250ZXh0R3VhcmQodCxuKXtyZXR1cm4hMH19ak0uybVmYWM9ZnVuY3Rpb24gdChuKXtyZXR1cm4gbmV3KG58fGpNKShaZygkdSksWmcoSnUpLFpnKFd1KSl9LGpNLsm1ZGlyPXZvKHt0eXBlOmpNLHNlbGVjdG9yczpbWyIiLCJuZ0ZvciIsIiIsIm5nRm9yT2YiLCIiXV0saW5wdXRzOntuZ0Zvck9mOiJuZ0Zvck9mIixuZ0ZvclRyYWNrQnk6Im5nRm9yVHJhY2tCeSIsbmdGb3JUZW1wbGF0ZToibmdGb3JUZW1wbGF0ZSJ9fSksak0uY3RvclBhcmFtZXRlcnM9KCk9Plt7dHlwZTokdX0se3R5cGU6SnV9LHt0eXBlOld1fV0sak0ucHJvcERlY29yYXRvcnM9e25nRm9yT2Y6W3t0eXBlOmZffV0sbmdGb3JUcmFja0J5Olt7dHlwZTpmX31dLG5nRm9yVGVtcGxhdGU6W3t0eXBlOmZffV19O2NsYXNzIFVNe2NvbnN0cnVjdG9yKHQsbil7dGhpcy5yZWNvcmQ9dCx0aGlzLnZpZXc9bn19Y2xhc3MgV017Y29uc3RydWN0b3IodCxuKXt0aGlzLl92aWV3Q29udGFpbmVyPXQsdGhpcy5fY29udGV4dD1uZXcgR00sdGhpcy5fdGhlblRlbXBsYXRlUmVmPW51bGwsdGhpcy5fZWxzZVRlbXBsYXRlUmVmPW51bGwsdGhpcy5fdGhlblZpZXdSZWY9bnVsbCx0aGlzLl9lbHNlVmlld1JlZj1udWxsLHRoaXMuX3RoZW5UZW1wbGF0ZVJlZj1ufXNldCBuZ0lmKHQpe3RoaXMuX2NvbnRleHQuJGltcGxpY2l0PXRoaXMuX2NvbnRleHQubmdJZj10LHRoaXMuX3VwZGF0ZVZpZXcoKX1zZXQgbmdJZlRoZW4odCl7WU0oIm5nSWZUaGVuIix0KSx0aGlzLl90aGVuVGVtcGxhdGVSZWY9dCx0aGlzLl90aGVuVmlld1JlZj1udWxsLHRoaXMuX3VwZGF0ZVZpZXcoKX1zZXQgbmdJZkVsc2UodCl7WU0oIm5nSWZFbHNlIix0KSx0aGlzLl9lbHNlVGVtcGxhdGVSZWY9dCx0aGlzLl9lbHNlVmlld1JlZj1udWxsLHRoaXMuX3VwZGF0ZVZpZXcoKX1fdXBkYXRlVmlldygpe3RoaXMuX2NvbnRleHQuJGltcGxpY2l0P3RoaXMuX3RoZW5WaWV3UmVmfHwodGhpcy5fdmlld0NvbnRhaW5lci5jbGVhcigpLHRoaXMuX2Vsc2VWaWV3UmVmPW51bGwsdGhpcy5fdGhlblRlbXBsYXRlUmVmJiYodGhpcy5fdGhlblZpZXdSZWY9dGhpcy5fdmlld0NvbnRhaW5lci5jcmVhdGVFbWJlZGRlZFZpZXcodGhpcy5fdGhlblRlbXBsYXRlUmVmLHRoaXMuX2NvbnRleHQpKSk6dGhpcy5fZWxzZVZpZXdSZWZ8fCh0aGlzLl92aWV3Q29udGFpbmVyLmNsZWFyKCksdGhpcy5fdGhlblZpZXdSZWY9bnVsbCx0aGlzLl9lbHNlVGVtcGxhdGVSZWYmJih0aGlzLl9lbHNlVmlld1JlZj10aGlzLl92aWV3Q29udGFpbmVyLmNyZWF0ZUVtYmVkZGVkVmlldyh0aGlzLl9lbHNlVGVtcGxhdGVSZWYsdGhpcy5fY29udGV4dCkpKX1zdGF0aWMgbmdUZW1wbGF0ZUNvbnRleHRHdWFyZCh0LG4pe3JldHVybiEwfX1XTS7JtWZhYz1mdW5jdGlvbiB0KG4pe3JldHVybiBuZXcobnx8V00pKFpnKCR1KSxaZyhKdSkpfSxXTS7JtWRpcj12byh7dHlwZTpXTSxzZWxlY3RvcnM6W1siIiwibmdJZiIsIiJdXSxpbnB1dHM6e25nSWY6Im5nSWYiLG5nSWZUaGVuOiJuZ0lmVGhlbiIsbmdJZkVsc2U6Im5nSWZFbHNlIn19KSxXTS5jdG9yUGFyYW1ldGVycz0oKT0+W3t0eXBlOiR1fSx7dHlwZTpKdX1dLFdNLnByb3BEZWNvcmF0b3JzPXtuZ0lmOlt7dHlwZTpmX31dLG5nSWZUaGVuOlt7dHlwZTpmX31dLG5nSWZFbHNlOlt7dHlwZTpmX31dfTtjbGFzcyBHTXtjb25zdHJ1Y3Rvcigpe3RoaXMuJGltcGxpY2l0PW51bGwsdGhpcy5uZ0lmPW51bGx9fWZ1bmN0aW9uIFlNKHQsbil7aWYobiYmIW4uY3JlYXRlRW1iZWRkZWRWaWV3KXRocm93IG5ldyBFcnJvcihgJHt0fSBtdXN0IGJlIGEgVGVtcGxhdGVSZWYsIGJ1dCByZWNlaXZlZCAnJHt0YShuKX0nLmApfQovKioKICAgICAqIEBsaWNlbnNlCiAgICAgKiBDb3B5cmlnaHQgR29vZ2xlIExMQyBBbGwgUmlnaHRzIFJlc2VydmVkLgogICAgICoKICAgICAqIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGFuIE1JVC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCiAgICAgKiBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlIGF0IGh0dHBzOi8vYW5ndWxhci5pby9saWNlbnNlCiAgICAgKi9jbGFzcyBxTXtjb25zdHJ1Y3Rvcih0LG4pe3RoaXMuX3ZpZXdDb250YWluZXJSZWY9dCx0aGlzLl90ZW1wbGF0ZVJlZj1uLHRoaXMuX2NyZWF0ZWQ9ITF9Y3JlYXRlKCl7dGhpcy5fY3JlYXRlZD0hMCx0aGlzLl92aWV3Q29udGFpbmVyUmVmLmNyZWF0ZUVtYmVkZGVkVmlldyh0aGlzLl90ZW1wbGF0ZVJlZil9ZGVzdHJveSgpe3RoaXMuX2NyZWF0ZWQ9ITEsdGhpcy5fdmlld0NvbnRhaW5lclJlZi5jbGVhcigpfWVuZm9yY2VTdGF0ZSh0KXt0JiYhdGhpcy5fY3JlYXRlZD90aGlzLmNyZWF0ZSgpOiF0JiZ0aGlzLl9jcmVhdGVkJiZ0aGlzLmRlc3Ryb3koKX19Y2xhc3MgWk17Y29uc3RydWN0b3IoKXt0aGlzLl9kZWZhdWx0VXNlZD0hMSx0aGlzLl9jYXNlQ291bnQ9MCx0aGlzLl9sYXN0Q2FzZUNoZWNrSW5kZXg9MCx0aGlzLl9sYXN0Q2FzZXNNYXRjaGVkPSExfXNldCBuZ1N3aXRjaCh0KXt0aGlzLl9uZ1N3aXRjaD10LDA9PT10aGlzLl9jYXNlQ291bnQmJnRoaXMuX3VwZGF0ZURlZmF1bHRDYXNlcyghMCl9X2FkZENhc2UoKXtyZXR1cm4gdGhpcy5fY2FzZUNvdW50Kyt9X2FkZERlZmF1bHQodCl7dGhpcy5fZGVmYXVsdFZpZXdzfHwodGhpcy5fZGVmYXVsdFZpZXdzPVtdKSx0aGlzLl9kZWZhdWx0Vmlld3MucHVzaCh0KX1fbWF0Y2hDYXNlKHQpe2NvbnN0IG49dD09dGhpcy5fbmdTd2l0Y2g7cmV0dXJuIHRoaXMuX2xhc3RDYXNlc01hdGNoZWQ9dGhpcy5fbGFzdENhc2VzTWF0Y2hlZHx8bix0aGlzLl9sYXN0Q2FzZUNoZWNrSW5kZXgrKyx0aGlzLl9sYXN0Q2FzZUNoZWNrSW5kZXg9PT10aGlzLl9jYXNlQ291bnQmJih0aGlzLl91cGRhdGVEZWZhdWx0Q2FzZXMoIXRoaXMuX2xhc3RDYXNlc01hdGNoZWQpLHRoaXMuX2xhc3RDYXNlQ2hlY2tJbmRleD0wLHRoaXMuX2xhc3RDYXNlc01hdGNoZWQ9ITEpLG59X3VwZGF0ZURlZmF1bHRDYXNlcyh0KXtpZih0aGlzLl9kZWZhdWx0Vmlld3MmJnQhPT10aGlzLl9kZWZhdWx0VXNlZCl7dGhpcy5fZGVmYXVsdFVzZWQ9dDtmb3IobGV0IG49MDtuPHRoaXMuX2RlZmF1bHRWaWV3cy5sZW5ndGg7bisrKXRoaXMuX2RlZmF1bHRWaWV3c1tuXS5lbmZvcmNlU3RhdGUodCl9fX1aTS7JtWZhYz1mdW5jdGlvbiB0KG4pe3JldHVybiBuZXcobnx8Wk0pfSxaTS7JtWRpcj12byh7dHlwZTpaTSxzZWxlY3RvcnM6W1siIiwibmdTd2l0Y2giLCIiXV0saW5wdXRzOntuZ1N3aXRjaDoibmdTd2l0Y2gifX0pLFpNLnByb3BEZWNvcmF0b3JzPXtuZ1N3aXRjaDpbe3R5cGU6Zl99XX07Y2xhc3MgWE17Y29uc3RydWN0b3IodCxuLGUpe3RoaXMubmdTd2l0Y2g9ZSxlLl9hZGRDYXNlKCksdGhpcy5fdmlldz1uZXcgcU0odCxuKX1uZ0RvQ2hlY2soKXt0aGlzLl92aWV3LmVuZm9yY2VTdGF0ZSh0aGlzLm5nU3dpdGNoLl9tYXRjaENhc2UodGhpcy5uZ1N3aXRjaENhc2UpKX19WE0uybVmYWM9ZnVuY3Rpb24gdChuKXtyZXR1cm4gbmV3KG58fFhNKShaZygkdSksWmcoSnUpLFpnKFpNLDEpKX0sWE0uybVkaXI9dm8oe3R5cGU6WE0sc2VsZWN0b3JzOltbIiIsIm5nU3dpdGNoQ2FzZSIsIiJdXSxpbnB1dHM6e25nU3dpdGNoQ2FzZToibmdTd2l0Y2hDYXNlIn19KSxYTS5jdG9yUGFyYW1ldGVycz0oKT0+W3t0eXBlOiR1fSx7dHlwZTpKdX0se3R5cGU6Wk0sZGVjb3JhdG9yczpbe3R5cGU6SGV9XX1dLFhNLnByb3BEZWNvcmF0b3JzPXtuZ1N3aXRjaENhc2U6W3t0eXBlOmZffV19O2NsYXNzIEpNe2NvbnN0cnVjdG9yKHQsbixlKXtlLl9hZGREZWZhdWx0KG5ldyBxTSh0LG4pKX19Sk0uybVmYWM9ZnVuY3Rpb24gdChuKXtyZXR1cm4gbmV3KG58fEpNKShaZygkdSksWmcoSnUpLFpnKFpNLDEpKX0sSk0uybVkaXI9dm8oe3R5cGU6Sk0sc2VsZWN0b3JzOltbIiIsIm5nU3dpdGNoRGVmYXVsdCIsIiJdXX0pLEpNLmN0b3JQYXJhbWV0ZXJzPSgpPT5be3R5cGU6JHV9LHt0eXBlOkp1fSx7dHlwZTpaTSxkZWNvcmF0b3JzOlt7dHlwZTpIZX1dfV0KLyoqCiAgICAgKiBAbGljZW5zZQogICAgICogQ29weXJpZ2h0IEdvb2dsZSBMTEMgQWxsIFJpZ2h0cyBSZXNlcnZlZC4KICAgICAqCiAgICAgKiBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhbiBNSVQtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQogICAgICogZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZSBhdCBodHRwczovL2FuZ3VsYXIuaW8vbGljZW5zZQogICAgICovO2NsYXNzIFFNe2NvbnN0cnVjdG9yKHQpe3RoaXMuX2xvY2FsaXphdGlvbj10LHRoaXMuX2Nhc2VWaWV3cz17fX1zZXQgbmdQbHVyYWwodCl7dGhpcy5fc3dpdGNoVmFsdWU9dCx0aGlzLl91cGRhdGVWaWV3KCl9YWRkQ2FzZSh0LG4pe3RoaXMuX2Nhc2VWaWV3c1t0XT1ufV91cGRhdGVWaWV3KCl7dGhpcy5fY2xlYXJWaWV3cygpO2NvbnN0IHQ9T2JqZWN0LmtleXModGhpcy5fY2FzZVZpZXdzKSxuPU5NKHRoaXMuX3N3aXRjaFZhbHVlLHQsdGhpcy5fbG9jYWxpemF0aW9uKTt0aGlzLl9hY3RpdmF0ZVZpZXcodGhpcy5fY2FzZVZpZXdzW25dKX1fY2xlYXJWaWV3cygpe3RoaXMuX2FjdGl2ZVZpZXcmJnRoaXMuX2FjdGl2ZVZpZXcuZGVzdHJveSgpfV9hY3RpdmF0ZVZpZXcodCl7dCYmKHRoaXMuX2FjdGl2ZVZpZXc9dCx0aGlzLl9hY3RpdmVWaWV3LmNyZWF0ZSgpKX19UU0uybVmYWM9ZnVuY3Rpb24gdChuKXtyZXR1cm4gbmV3KG58fFFNKShaZyhJTSkpfSxRTS7JtWRpcj12byh7dHlwZTpRTSxzZWxlY3RvcnM6W1siIiwibmdQbHVyYWwiLCIiXV0saW5wdXRzOntuZ1BsdXJhbDoibmdQbHVyYWwifX0pLFFNLmN0b3JQYXJhbWV0ZXJzPSgpPT5be3R5cGU6SU19XSxRTS5wcm9wRGVjb3JhdG9ycz17bmdQbHVyYWw6W3t0eXBlOmZffV19O2NsYXNzIEtNe2NvbnN0cnVjdG9yKHQsbixlLGEpe3RoaXMudmFsdWU9dDtjb25zdCBvPSFpc05hTihOdW1iZXIodCkpO2EuYWRkQ2FzZShvP2A9JHt0fWA6dCxuZXcgcU0oZSxuKSl9fUtNLsm1ZmFjPWZ1bmN0aW9uIHQobil7cmV0dXJuIG5ldyhufHxLTSkoWGcoIm5nUGx1cmFsQ2FzZSIpLFpnKEp1KSxaZygkdSksWmcoUU0sMSkpfSxLTS7JtWRpcj12byh7dHlwZTpLTSxzZWxlY3RvcnM6W1siIiwibmdQbHVyYWxDYXNlIiwiIl1dfSksS00uY3RvclBhcmFtZXRlcnM9KCk9Plt7dHlwZTpTdHJpbmcsZGVjb3JhdG9yczpbe3R5cGU6QmUsYXJnczpbIm5nUGx1cmFsQ2FzZSJdfV19LHt0eXBlOkp1fSx7dHlwZTokdX0se3R5cGU6UU0sZGVjb3JhdG9yczpbe3R5cGU6SGV9XX1dCi8qKgogICAgICogQGxpY2Vuc2UKICAgICAqIENvcHlyaWdodCBHb29nbGUgTExDIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCiAgICAgKgogICAgICogVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYW4gTUlULXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKICAgICAqIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUgYXQgaHR0cHM6Ly9hbmd1bGFyLmlvL2xpY2Vuc2UKICAgICAqLztjbGFzcyAkTXtjb25zdHJ1Y3Rvcih0LG4sZSl7dGhpcy5fbmdFbD10LHRoaXMuX2RpZmZlcnM9bix0aGlzLl9yZW5kZXJlcj1lLHRoaXMuX25nU3R5bGU9bnVsbCx0aGlzLl9kaWZmZXI9bnVsbH1zZXQgbmdTdHlsZSh0KXt0aGlzLl9uZ1N0eWxlPXQsIXRoaXMuX2RpZmZlciYmdCYmKHRoaXMuX2RpZmZlcj10aGlzLl9kaWZmZXJzLmZpbmQodCkuY3JlYXRlKCkpfW5nRG9DaGVjaygpe2lmKHRoaXMuX2RpZmZlcil7Y29uc3QgdD10aGlzLl9kaWZmZXIuZGlmZih0aGlzLl9uZ1N0eWxlKTt0JiZ0aGlzLl9hcHBseUNoYW5nZXModCl9fV9zZXRTdHlsZSh0LG4pe2NvbnN0W2UsYV09dC5zcGxpdCgiLiIpO251bGwhPShuPW51bGwhPW4mJmE/YCR7bn0ke2F9YDpuKT90aGlzLl9yZW5kZXJlci5zZXRTdHlsZSh0aGlzLl9uZ0VsLm5hdGl2ZUVsZW1lbnQsZSxuKTp0aGlzLl9yZW5kZXJlci5yZW1vdmVTdHlsZSh0aGlzLl9uZ0VsLm5hdGl2ZUVsZW1lbnQsZSl9X2FwcGx5Q2hhbmdlcyh0KXt0LmZvckVhY2hSZW1vdmVkSXRlbSgodD0+dGhpcy5fc2V0U3R5bGUodC5rZXksbnVsbCkpKSx0LmZvckVhY2hBZGRlZEl0ZW0oKHQ9PnRoaXMuX3NldFN0eWxlKHQua2V5LHQuY3VycmVudFZhbHVlKSkpLHQuZm9yRWFjaENoYW5nZWRJdGVtKCh0PT50aGlzLl9zZXRTdHlsZSh0LmtleSx0LmN1cnJlbnRWYWx1ZSkpKX19JE0uybVmYWM9ZnVuY3Rpb24gdChuKXtyZXR1cm4gbmV3KG58fCRNKShaZyh4dSksWmcoR3UpLFpnKFN1KSl9LCRNLsm1ZGlyPXZvKHt0eXBlOiRNLHNlbGVjdG9yczpbWyIiLCJuZ1N0eWxlIiwiIl1dLGlucHV0czp7bmdTdHlsZToibmdTdHlsZSJ9fSksJE0uY3RvclBhcmFtZXRlcnM9KCk9Plt7dHlwZTp4dX0se3R5cGU6R3V9LHt0eXBlOlN1fV0sJE0ucHJvcERlY29yYXRvcnM9e25nU3R5bGU6W3t0eXBlOmZfLGFyZ3M6WyJuZ1N0eWxlIl19XX07Ci8qKgogICAgICogQGxpY2Vuc2UKICAgICAqIENvcHlyaWdodCBHb29nbGUgTExDIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCiAgICAgKgogICAgICogVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYW4gTUlULXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKICAgICAqIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUgYXQgaHR0cHM6Ly9hbmd1bGFyLmlvL2xpY2Vuc2UKICAgICAqLwpjbGFzcyB0T3tjb25zdHJ1Y3Rvcih0KXt0aGlzLl92aWV3Q29udGFpbmVyUmVmPXQsdGhpcy5fdmlld1JlZj1udWxsLHRoaXMubmdUZW1wbGF0ZU91dGxldENvbnRleHQ9bnVsbCx0aGlzLm5nVGVtcGxhdGVPdXRsZXQ9bnVsbH1uZ09uQ2hhbmdlcyh0KXtpZih0aGlzLl9zaG91bGRSZWNyZWF0ZVZpZXcodCkpe2NvbnN0IHQ9dGhpcy5fdmlld0NvbnRhaW5lclJlZjt0aGlzLl92aWV3UmVmJiZ0LnJlbW92ZSh0LmluZGV4T2YodGhpcy5fdmlld1JlZikpLHRoaXMuX3ZpZXdSZWY9dGhpcy5uZ1RlbXBsYXRlT3V0bGV0P3QuY3JlYXRlRW1iZWRkZWRWaWV3KHRoaXMubmdUZW1wbGF0ZU91dGxldCx0aGlzLm5nVGVtcGxhdGVPdXRsZXRDb250ZXh0KTpudWxsfWVsc2UgdGhpcy5fdmlld1JlZiYmdGhpcy5uZ1RlbXBsYXRlT3V0bGV0Q29udGV4dCYmdGhpcy5fdXBkYXRlRXhpc3RpbmdDb250ZXh0KHRoaXMubmdUZW1wbGF0ZU91dGxldENvbnRleHQpfV9zaG91bGRSZWNyZWF0ZVZpZXcodCl7Y29uc3Qgbj10Lm5nVGVtcGxhdGVPdXRsZXRDb250ZXh0O3JldHVybiEhdC5uZ1RlbXBsYXRlT3V0bGV0fHxuJiZ0aGlzLl9oYXNDb250ZXh0U2hhcGVDaGFuZ2VkKG4pfV9oYXNDb250ZXh0U2hhcGVDaGFuZ2VkKHQpe2NvbnN0IG49T2JqZWN0LmtleXModC5wcmV2aW91c1ZhbHVlfHx7fSksZT1PYmplY3Qua2V5cyh0LmN1cnJlbnRWYWx1ZXx8e30pO2lmKG4ubGVuZ3RoPT09ZS5sZW5ndGgpe2ZvcihsZXQgdCBvZiBlKWlmKC0xPT09bi5pbmRleE9mKHQpKXJldHVybiEwO3JldHVybiExfXJldHVybiEwfV91cGRhdGVFeGlzdGluZ0NvbnRleHQodCl7Zm9yKGxldCBuIG9mIE9iamVjdC5rZXlzKHQpKXRoaXMuX3ZpZXdSZWYuY29udGV4dFtuXT10aGlzLm5nVGVtcGxhdGVPdXRsZXRDb250ZXh0W25dfX0KLyoqCiAgICAgKiBAbGljZW5zZQogICAgICogQ29weXJpZ2h0IEdvb2dsZSBMTEMgQWxsIFJpZ2h0cyBSZXNlcnZlZC4KICAgICAqCiAgICAgKiBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhbiBNSVQtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQogICAgICogZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZSBhdCBodHRwczovL2FuZ3VsYXIuaW8vbGljZW5zZQogICAgICovCmZ1bmN0aW9uIG5PKHQsbil7cmV0dXJuIEVycm9yKGBJbnZhbGlkUGlwZUFyZ3VtZW50OiAnJHtufScgZm9yIHBpcGUgJyR7dGEodCl9J2ApfQovKioKICAgICAqIEBsaWNlbnNlCiAgICAgKiBDb3B5cmlnaHQgR29vZ2xlIExMQyBBbGwgUmlnaHRzIFJlc2VydmVkLgogICAgICoKICAgICAqIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGFuIE1JVC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCiAgICAgKiBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlIGF0IGh0dHBzOi8vYW5ndWxhci5pby9saWNlbnNlCiAgICAgKi90Ty7JtWZhYz1mdW5jdGlvbiB0KG4pe3JldHVybiBuZXcobnx8dE8pKFpnKCR1KSl9LHRPLsm1ZGlyPXZvKHt0eXBlOnRPLHNlbGVjdG9yczpbWyIiLCJuZ1RlbXBsYXRlT3V0bGV0IiwiIl1dLGlucHV0czp7bmdUZW1wbGF0ZU91dGxldENvbnRleHQ6Im5nVGVtcGxhdGVPdXRsZXRDb250ZXh0IixuZ1RlbXBsYXRlT3V0bGV0OiJuZ1RlbXBsYXRlT3V0bGV0In0sZmVhdHVyZXM6W3ByXX0pLHRPLmN0b3JQYXJhbWV0ZXJzPSgpPT5be3R5cGU6JHV9XSx0Ty5wcm9wRGVjb3JhdG9ycz17bmdUZW1wbGF0ZU91dGxldENvbnRleHQ6W3t0eXBlOmZffV0sbmdUZW1wbGF0ZU91dGxldDpbe3R5cGU6Zl99XX07Y29uc3QgZU89bmV3IGNsYXNze2NyZWF0ZVN1YnNjcmlwdGlvbih0LG4pe3JldHVybiB0LnRoZW4obiwodD0+e3Rocm93IHR9KSl9ZGlzcG9zZSh0KXt9b25EZXN0cm95KHQpe319LGFPPW5ldyBjbGFzc3tjcmVhdGVTdWJzY3JpcHRpb24odCxuKXtyZXR1cm4gdC5zdWJzY3JpYmUoe25leHQ6bixlcnJvcjp0PT57dGhyb3cgdH19KX1kaXNwb3NlKHQpe3QudW5zdWJzY3JpYmUoKX1vbkRlc3Ryb3kodCl7dC51bnN1YnNjcmliZSgpfX07Y2xhc3Mgb097Y29uc3RydWN0b3IodCl7dGhpcy5fcmVmPXQsdGhpcy5fbGF0ZXN0VmFsdWU9bnVsbCx0aGlzLl9zdWJzY3JpcHRpb249bnVsbCx0aGlzLl9vYmo9bnVsbCx0aGlzLl9zdHJhdGVneT1udWxsfW5nT25EZXN0cm95KCl7dGhpcy5fc3Vic2NyaXB0aW9uJiZ0aGlzLl9kaXNwb3NlKCl9dHJhbnNmb3JtKHQpe3JldHVybiB0aGlzLl9vYmo/dCE9PXRoaXMuX29iaj8odGhpcy5fZGlzcG9zZSgpLHRoaXMudHJhbnNmb3JtKHQpKTp0aGlzLl9sYXRlc3RWYWx1ZToodCYmdGhpcy5fc3Vic2NyaWJlKHQpLHRoaXMuX2xhdGVzdFZhbHVlKX1fc3Vic2NyaWJlKHQpe3RoaXMuX29iaj10LHRoaXMuX3N0cmF0ZWd5PXRoaXMuX3NlbGVjdFN0cmF0ZWd5KHQpLHRoaXMuX3N1YnNjcmlwdGlvbj10aGlzLl9zdHJhdGVneS5jcmVhdGVTdWJzY3JpcHRpb24odCwobj0+dGhpcy5fdXBkYXRlTGF0ZXN0VmFsdWUodCxuKSkpfV9zZWxlY3RTdHJhdGVneSh0KXtpZihycCh0KSlyZXR1cm4gZU87aWYoaXAodCkpcmV0dXJuIGFPO3Rocm93IG5PKG9PLHQpfV9kaXNwb3NlKCl7dGhpcy5fc3RyYXRlZ3kuZGlzcG9zZSh0aGlzLl9zdWJzY3JpcHRpb24pLHRoaXMuX2xhdGVzdFZhbHVlPW51bGwsdGhpcy5fc3Vic2NyaXB0aW9uPW51bGwsdGhpcy5fb2JqPW51bGx9X3VwZGF0ZUxhdGVzdFZhbHVlKHQsbil7dD09PXRoaXMuX29iaiYmKHRoaXMuX2xhdGVzdFZhbHVlPW4sdGhpcy5fcmVmLm1hcmtGb3JDaGVjaygpKX19b08uybVmYWM9ZnVuY3Rpb24gdChuKXtyZXR1cm4gbmV3KG58fG9PKSgkZigpKX0sb08uybVwaXBlPXdvKHtuYW1lOiJhc3luYyIsdHlwZTpvTyxwdXJlOiExfSksb08uY3RvclBhcmFtZXRlcnM9KCk9Plt7dHlwZTpWbX1dCi8qKgogICAgICogQGxpY2Vuc2UKICAgICAqIENvcHlyaWdodCBHb29nbGUgTExDIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCiAgICAgKgogICAgICogVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYW4gTUlULXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKICAgICAqIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUgYXQgaHR0cHM6Ly9hbmd1bGFyLmlvL2xpY2Vuc2UKICAgICAqLztjbGFzcyByT3t0cmFuc2Zvcm0odCl7aWYoIXQpcmV0dXJuIHQ7aWYoInN0cmluZyIhPXR5cGVvZiB0KXRocm93IG5PKHJPLHQpO3JldHVybiB0LnRvTG93ZXJDYXNlKCl9fXJPLsm1ZmFjPWZ1bmN0aW9uIHQobil7cmV0dXJuIG5ldyhufHxyTyl9LHJPLsm1cGlwZT13byh7bmFtZToibG93ZXJjYXNlIix0eXBlOnJPLHB1cmU6ITB9KTtjb25zdCBpTz0vKD86W0EtWmEtelx4QUFceEI1XHhCQVx4QzAtXHhENlx4RDgtXHhGNlx4RjgtXHUwMkMxXHUwMkM2LVx1MDJEMVx1MDJFMC1cdTAyRTRcdTAyRUNcdTAyRUVcdTAzNzAtXHUwMzc0XHUwMzc2XHUwMzc3XHUwMzdBLVx1MDM3RFx1MDM3Rlx1MDM4Nlx1MDM4OC1cdTAzOEFcdTAzOENcdTAzOEUtXHUwM0ExXHUwM0EzLVx1MDNGNVx1MDNGNy1cdTA0ODFcdTA0OEEtXHUwNTJGXHUwNTMxLVx1MDU1Nlx1MDU1OVx1MDU2MS1cdTA1ODdcdTA1RDAtXHUwNUVBXHUwNUYwLVx1MDVGMlx1MDYyMC1cdTA2NEFcdTA2NkVcdTA2NkZcdTA2NzEtXHUwNkQzXHUwNkQ1XHUwNkU1XHUwNkU2XHUwNkVFXHUwNkVGXHUwNkZBLVx1MDZGQ1x1MDZGRlx1MDcxMFx1MDcxMi1cdTA3MkZcdTA3NEQtXHUwN0E1XHUwN0IxXHUwN0NBLVx1MDdFQVx1MDdGNFx1MDdGNVx1MDdGQVx1MDgwMC1cdTA4MTVcdTA4MUFcdTA4MjRcdTA4MjhcdTA4NDAtXHUwODU4XHUwODYwLVx1MDg2QVx1MDhBMC1cdTA4QjRcdTA4QjYtXHUwOEJEXHUwOTA0LVx1MDkzOVx1MDkzRFx1MDk1MFx1MDk1OC1cdTA5NjFcdTA5NzEtXHUwOTgwXHUwOTg1LVx1MDk4Q1x1MDk4Rlx1MDk5MFx1MDk5My1cdTA5QThcdTA5QUEtXHUwOUIwXHUwOUIyXHUwOUI2LVx1MDlCOVx1MDlCRFx1MDlDRVx1MDlEQ1x1MDlERFx1MDlERi1cdTA5RTFcdTA5RjBcdTA5RjFcdTA5RkNcdTBBMDUtXHUwQTBBXHUwQTBGXHUwQTEwXHUwQTEzLVx1MEEyOFx1MEEyQS1cdTBBMzBcdTBBMzJcdTBBMzNcdTBBMzVcdTBBMzZcdTBBMzhcdTBBMzlcdTBBNTktXHUwQTVDXHUwQTVFXHUwQTcyLVx1MEE3NFx1MEE4NS1cdTBBOERcdTBBOEYtXHUwQTkxXHUwQTkzLVx1MEFBOFx1MEFBQS1cdTBBQjBcdTBBQjJcdTBBQjNcdTBBQjUtXHUwQUI5XHUwQUJEXHUwQUQwXHUwQUUwXHUwQUUxXHUwQUY5XHUwQjA1LVx1MEIwQ1x1MEIwRlx1MEIxMFx1MEIxMy1cdTBCMjhcdTBCMkEtXHUwQjMwXHUwQjMyXHUwQjMzXHUwQjM1LVx1MEIzOVx1MEIzRFx1MEI1Q1x1MEI1RFx1MEI1Ri1cdTBCNjFcdTBCNzFcdTBCODNcdTBCODUtXHUwQjhBXHUwQjhFLVx1MEI5MFx1MEI5Mi1cdTBCOTVcdTBCOTlcdTBCOUFcdTBCOUNcdTBCOUVcdTBCOUZcdTBCQTNcdTBCQTRcdTBCQTgtXHUwQkFBXHUwQkFFLVx1MEJCOVx1MEJEMFx1MEMwNS1cdTBDMENcdTBDMEUtXHUwQzEwXHUwQzEyLVx1MEMyOFx1MEMyQS1cdTBDMzlcdTBDM0RcdTBDNTgtXHUwQzVBXHUwQzYwXHUwQzYxXHUwQzgwXHUwQzg1LVx1MEM4Q1x1MEM4RS1cdTBDOTBcdTBDOTItXHUwQ0E4XHUwQ0FBLVx1MENCM1x1MENCNS1cdTBDQjlcdTBDQkRcdTBDREVcdTBDRTBcdTBDRTFcdTBDRjFcdTBDRjJcdTBEMDUtXHUwRDBDXHUwRDBFLVx1MEQxMFx1MEQxMi1cdTBEM0FcdTBEM0RcdTBENEVcdTBENTQtXHUwRDU2XHUwRDVGLVx1MEQ2MVx1MEQ3QS1cdTBEN0ZcdTBEODUtXHUwRDk2XHUwRDlBLVx1MERCMVx1MERCMy1cdTBEQkJcdTBEQkRcdTBEQzAtXHUwREM2XHUwRTAxLVx1MEUzMFx1MEUzMlx1MEUzM1x1MEU0MC1cdTBFNDZcdTBFODFcdTBFODJcdTBFODRcdTBFODdcdTBFODhcdTBFOEFcdTBFOERcdTBFOTQtXHUwRTk3XHUwRTk5LVx1MEU5Rlx1MEVBMS1cdTBFQTNcdTBFQTVcdTBFQTdcdTBFQUFcdTBFQUJcdTBFQUQtXHUwRUIwXHUwRUIyXHUwRUIzXHUwRUJEXHUwRUMwLVx1MEVDNFx1MEVDNlx1MEVEQy1cdTBFREZcdTBGMDBcdTBGNDAtXHUwRjQ3XHUwRjQ5LVx1MEY2Q1x1MEY4OC1cdTBGOENcdTEwMDAtXHUxMDJBXHUxMDNGXHUxMDUwLVx1MTA1NVx1MTA1QS1cdTEwNURcdTEwNjFcdTEwNjVcdTEwNjZcdTEwNkUtXHUxMDcwXHUxMDc1LVx1MTA4MVx1MTA4RVx1MTBBMC1cdTEwQzVcdTEwQzdcdTEwQ0RcdTEwRDAtXHUxMEZBXHUxMEZDLVx1MTI0OFx1MTI0QS1cdTEyNERcdTEyNTAtXHUxMjU2XHUxMjU4XHUxMjVBLVx1MTI1RFx1MTI2MC1cdTEyODhcdTEyOEEtXHUxMjhEXHUxMjkwLVx1MTJCMFx1MTJCMi1cdTEyQjVcdTEyQjgtXHUxMkJFXHUxMkMwXHUxMkMyLVx1MTJDNVx1MTJDOC1cdTEyRDZcdTEyRDgtXHUxMzEwXHUxMzEyLVx1MTMxNVx1MTMxOC1cdTEzNUFcdTEzODAtXHUxMzhGXHUxM0EwLVx1MTNGNVx1MTNGOC1cdTEzRkRcdTE0MDEtXHUxNjZDXHUxNjZGLVx1MTY3Rlx1MTY4MS1cdTE2OUFcdTE2QTAtXHUxNkVBXHUxNkYxLVx1MTZGOFx1MTcwMC1cdTE3MENcdTE3MEUtXHUxNzExXHUxNzIwLVx1MTczMVx1MTc0MC1cdTE3NTFcdTE3NjAtXHUxNzZDXHUxNzZFLVx1MTc3MFx1MTc4MC1cdTE3QjNcdTE3RDdcdTE3RENcdTE4MjAtXHUxODc3XHUxODgwLVx1MTg4NFx1MTg4Ny1cdTE4QThcdTE4QUFcdTE4QjAtXHUxOEY1XHUxOTAwLVx1MTkxRVx1MTk1MC1cdTE5NkRcdTE5NzAtXHUxOTc0XHUxOTgwLVx1MTlBQlx1MTlCMC1cdTE5QzlcdTFBMDAtXHUxQTE2XHUxQTIwLVx1MUE1NFx1MUFBN1x1MUIwNS1cdTFCMzNcdTFCNDUtXHUxQjRCXHUxQjgzLVx1MUJBMFx1MUJBRVx1MUJBRlx1MUJCQS1cdTFCRTVcdTFDMDAtXHUxQzIzXHUxQzRELVx1MUM0Rlx1MUM1QS1cdTFDN0RcdTFDODAtXHUxQzg4XHUxQ0U5LVx1MUNFQ1x1MUNFRS1cdTFDRjFcdTFDRjVcdTFDRjZcdTFEMDAtXHUxREJGXHUxRTAwLVx1MUYxNVx1MUYxOC1cdTFGMURcdTFGMjAtXHUxRjQ1XHUxRjQ4LVx1MUY0RFx1MUY1MC1cdTFGNTdcdTFGNTlcdTFGNUJcdTFGNURcdTFGNUYtXHUxRjdEXHUxRjgwLVx1MUZCNFx1MUZCNi1cdTFGQkNcdTFGQkVcdTFGQzItXHUxRkM0XHUxRkM2LVx1MUZDQ1x1MUZEMC1cdTFGRDNcdTFGRDYtXHUxRkRCXHUxRkUwLVx1MUZFQ1x1MUZGMi1cdTFGRjRcdTFGRjYtXHUxRkZDXHUyMDcxXHUyMDdGXHUyMDkwLVx1MjA5Q1x1MjEwMlx1MjEwN1x1MjEwQS1cdTIxMTNcdTIxMTVcdTIxMTktXHUyMTFEXHUyMTI0XHUyMTI2XHUyMTI4XHUyMTJBLVx1MjEyRFx1MjEyRi1cdTIxMzlcdTIxM0MtXHUyMTNGXHUyMTQ1LVx1MjE0OVx1MjE0RVx1MjE4M1x1MjE4NFx1MkMwMC1cdTJDMkVcdTJDMzAtXHUyQzVFXHUyQzYwLVx1MkNFNFx1MkNFQi1cdTJDRUVcdTJDRjJcdTJDRjNcdTJEMDAtXHUyRDI1XHUyRDI3XHUyRDJEXHUyRDMwLVx1MkQ2N1x1MkQ2Rlx1MkQ4MC1cdTJEOTZcdTJEQTAtXHUyREE2XHUyREE4LVx1MkRBRVx1MkRCMC1cdTJEQjZcdTJEQjgtXHUyREJFXHUyREMwLVx1MkRDNlx1MkRDOC1cdTJEQ0VcdTJERDAtXHUyREQ2XHUyREQ4LVx1MkRERVx1MkUyRlx1MzAwNVx1MzAwNlx1MzAzMS1cdTMwMzVcdTMwM0JcdTMwM0NcdTMwNDEtXHUzMDk2XHUzMDlELVx1MzA5Rlx1MzBBMS1cdTMwRkFcdTMwRkMtXHUzMEZGXHUzMTA1LVx1MzEyRVx1MzEzMS1cdTMxOEVcdTMxQTAtXHUzMUJBXHUzMUYwLVx1MzFGRlx1MzQwMC1cdTREQjVcdTRFMDAtXHU5RkVBXHVBMDAwLVx1QTQ4Q1x1QTREMC1cdUE0RkRcdUE1MDAtXHVBNjBDXHVBNjEwLVx1QTYxRlx1QTYyQVx1QTYyQlx1QTY0MC1cdUE2NkVcdUE2N0YtXHVBNjlEXHVBNkEwLVx1QTZFNVx1QTcxNy1cdUE3MUZcdUE3MjItXHVBNzg4XHVBNzhCLVx1QTdBRVx1QTdCMC1cdUE3QjdcdUE3RjctXHVBODAxXHVBODAzLVx1QTgwNVx1QTgwNy1cdUE4MEFcdUE4MEMtXHVBODIyXHVBODQwLVx1QTg3M1x1QTg4Mi1cdUE4QjNcdUE4RjItXHVBOEY3XHVBOEZCXHVBOEZEXHVBOTBBLVx1QTkyNVx1QTkzMC1cdUE5NDZcdUE5NjAtXHVBOTdDXHVBOTg0LVx1QTlCMlx1QTlDRlx1QTlFMC1cdUE5RTRcdUE5RTYtXHVBOUVGXHVBOUZBLVx1QTlGRVx1QUEwMC1cdUFBMjhcdUFBNDAtXHVBQTQyXHVBQTQ0LVx1QUE0Qlx1QUE2MC1cdUFBNzZcdUFBN0FcdUFBN0UtXHVBQUFGXHVBQUIxXHVBQUI1XHVBQUI2XHVBQUI5LVx1QUFCRFx1QUFDMFx1QUFDMlx1QUFEQi1cdUFBRERcdUFBRTAtXHVBQUVBXHVBQUYyLVx1QUFGNFx1QUIwMS1cdUFCMDZcdUFCMDktXHVBQjBFXHVBQjExLVx1QUIxNlx1QUIyMC1cdUFCMjZcdUFCMjgtXHVBQjJFXHVBQjMwLVx1QUI1QVx1QUI1Qy1cdUFCNjVcdUFCNzAtXHVBQkUyXHVBQzAwLVx1RDdBM1x1RDdCMC1cdUQ3QzZcdUQ3Q0ItXHVEN0ZCXHVGOTAwLVx1RkE2RFx1RkE3MC1cdUZBRDlcdUZCMDAtXHVGQjA2XHVGQjEzLVx1RkIxN1x1RkIxRFx1RkIxRi1cdUZCMjhcdUZCMkEtXHVGQjM2XHVGQjM4LVx1RkIzQ1x1RkIzRVx1RkI0MFx1RkI0MVx1RkI0M1x1RkI0NFx1RkI0Ni1cdUZCQjFcdUZCRDMtXHVGRDNEXHVGRDUwLVx1RkQ4Rlx1RkQ5Mi1cdUZEQzdcdUZERjAtXHVGREZCXHVGRTcwLVx1RkU3NFx1RkU3Ni1cdUZFRkNcdUZGMjEtXHVGRjNBXHVGRjQxLVx1RkY1QVx1RkY2Ni1cdUZGQkVcdUZGQzItXHVGRkM3XHVGRkNBLVx1RkZDRlx1RkZEMi1cdUZGRDdcdUZGREEtXHVGRkRDXXxcdUQ4MDBbXHVEQzAwLVx1REMwQlx1REMwRC1cdURDMjZcdURDMjgtXHVEQzNBXHVEQzNDXHVEQzNEXHVEQzNGLVx1REM0RFx1REM1MC1cdURDNURcdURDODAtXHVEQ0ZBXHVERTgwLVx1REU5Q1x1REVBMC1cdURFRDBcdURGMDAtXHVERjFGXHVERjJELVx1REY0MFx1REY0Mi1cdURGNDlcdURGNTAtXHVERjc1XHVERjgwLVx1REY5RFx1REZBMC1cdURGQzNcdURGQzgtXHVERkNGXXxcdUQ4MDFbXHVEQzAwLVx1REM5RFx1RENCMC1cdURDRDNcdURDRDgtXHVEQ0ZCXHVERDAwLVx1REQyN1x1REQzMC1cdURENjNcdURFMDAtXHVERjM2XHVERjQwLVx1REY1NVx1REY2MC1cdURGNjddfFx1RDgwMltcdURDMDAtXHVEQzA1XHVEQzA4XHVEQzBBLVx1REMzNVx1REMzN1x1REMzOFx1REMzQ1x1REMzRi1cdURDNTVcdURDNjAtXHVEQzc2XHVEQzgwLVx1REM5RVx1RENFMC1cdURDRjJcdURDRjRcdURDRjVcdUREMDAtXHVERDE1XHVERDIwLVx1REQzOVx1REQ4MC1cdUREQjdcdUREQkVcdUREQkZcdURFMDBcdURFMTAtXHVERTEzXHVERTE1LVx1REUxN1x1REUxOS1cdURFMzNcdURFNjAtXHVERTdDXHVERTgwLVx1REU5Q1x1REVDMC1cdURFQzdcdURFQzktXHVERUU0XHVERjAwLVx1REYzNVx1REY0MC1cdURGNTVcdURGNjAtXHVERjcyXHVERjgwLVx1REY5MV18XHVEODAzW1x1REMwMC1cdURDNDhcdURDODAtXHVEQ0IyXHVEQ0MwLVx1RENGMl18XHVEODA0W1x1REMwMy1cdURDMzdcdURDODMtXHVEQ0FGXHVEQ0QwLVx1RENFOFx1REQwMy1cdUREMjZcdURENTAtXHVERDcyXHVERDc2XHVERDgzLVx1RERCMlx1RERDMS1cdUREQzRcdUREREFcdURERENcdURFMDAtXHVERTExXHVERTEzLVx1REUyQlx1REU4MC1cdURFODZcdURFODhcdURFOEEtXHVERThEXHVERThGLVx1REU5RFx1REU5Ri1cdURFQThcdURFQjAtXHVERURFXHVERjA1LVx1REYwQ1x1REYwRlx1REYxMFx1REYxMy1cdURGMjhcdURGMkEtXHVERjMwXHVERjMyXHVERjMzXHVERjM1LVx1REYzOVx1REYzRFx1REY1MFx1REY1RC1cdURGNjFdfFx1RDgwNVtcdURDMDAtXHVEQzM0XHVEQzQ3LVx1REM0QVx1REM4MC1cdURDQUZcdURDQzRcdURDQzVcdURDQzdcdUREODAtXHVEREFFXHVEREQ4LVx1REREQlx1REUwMC1cdURFMkZcdURFNDRcdURFODAtXHVERUFBXHVERjAwLVx1REYxOV18XHVEODA2W1x1RENBMC1cdURDREZcdURDRkZcdURFMDBcdURFMEItXHVERTMyXHVERTNBXHVERTUwXHVERTVDLVx1REU4M1x1REU4Ni1cdURFODlcdURFQzAtXHVERUY4XXxcdUQ4MDdbXHVEQzAwLVx1REMwOFx1REMwQS1cdURDMkVcdURDNDBcdURDNzItXHVEQzhGXHVERDAwLVx1REQwNlx1REQwOFx1REQwOVx1REQwQi1cdUREMzBcdURENDZdfFx1RDgwOFtcdURDMDAtXHVERjk5XXxcdUQ4MDlbXHVEQzgwLVx1REQ0M118W1x1RDgwQ1x1RDgxQy1cdUQ4MjBcdUQ4NDAtXHVEODY4XHVEODZBLVx1RDg2Q1x1RDg2Ri1cdUQ4NzJcdUQ4NzQtXHVEODc5XVtcdURDMDAtXHVERkZGXXxcdUQ4MERbXHVEQzAwLVx1REMyRV18XHVEODExW1x1REMwMC1cdURFNDZdfFx1RDgxQVtcdURDMDAtXHVERTM4XHVERTQwLVx1REU1RVx1REVEMC1cdURFRURcdURGMDAtXHVERjJGXHVERjQwLVx1REY0M1x1REY2My1cdURGNzdcdURGN0QtXHVERjhGXXxcdUQ4MUJbXHVERjAwLVx1REY0NFx1REY1MFx1REY5My1cdURGOUZcdURGRTBcdURGRTFdfFx1RDgyMVtcdURDMDAtXHVERkVDXXxcdUQ4MjJbXHVEQzAwLVx1REVGMl18XHVEODJDW1x1REMwMC1cdUREMUVcdURENzAtXHVERUZCXXxcdUQ4MkZbXHVEQzAwLVx1REM2QVx1REM3MC1cdURDN0NcdURDODAtXHVEQzg4XHVEQzkwLVx1REM5OV18XHVEODM1W1x1REMwMC1cdURDNTRcdURDNTYtXHVEQzlDXHVEQzlFXHVEQzlGXHVEQ0EyXHVEQ0E1XHVEQ0E2XHVEQ0E5LVx1RENBQ1x1RENBRS1cdURDQjlcdURDQkJcdURDQkQtXHVEQ0MzXHVEQ0M1LVx1REQwNVx1REQwNy1cdUREMEFcdUREMEQtXHVERDE0XHVERDE2LVx1REQxQ1x1REQxRS1cdUREMzlcdUREM0ItXHVERDNFXHVERDQwLVx1REQ0NFx1REQ0Nlx1REQ0QS1cdURENTBcdURENTItXHVERUE1XHVERUE4LVx1REVDMFx1REVDMi1cdURFREFcdURFREMtXHVERUZBXHVERUZDLVx1REYxNFx1REYxNi1cdURGMzRcdURGMzYtXHVERjRFXHVERjUwLVx1REY2RVx1REY3MC1cdURGODhcdURGOEEtXHVERkE4XHVERkFBLVx1REZDMlx1REZDNC1cdURGQ0JdfFx1RDgzQVtcdURDMDAtXHVEQ0M0XHVERDAwLVx1REQ0M118XHVEODNCW1x1REUwMC1cdURFMDNcdURFMDUtXHVERTFGXHVERTIxXHVERTIyXHVERTI0XHVERTI3XHVERTI5LVx1REUzMlx1REUzNC1cdURFMzdcdURFMzlcdURFM0JcdURFNDJcdURFNDdcdURFNDlcdURFNEJcdURFNEQtXHVERTRGXHVERTUxXHVERTUyXHVERTU0XHVERTU3XHVERTU5XHVERTVCXHVERTVEXHVERTVGXHVERTYxXHVERTYyXHVERTY0XHVERTY3LVx1REU2QVx1REU2Qy1cdURFNzJcdURFNzQtXHVERTc3XHVERTc5LVx1REU3Q1x1REU3RVx1REU4MC1cdURFODlcdURFOEItXHVERTlCXHVERUExLVx1REVBM1x1REVBNS1cdURFQTlcdURFQUItXHVERUJCXXxcdUQ4NjlbXHVEQzAwLVx1REVENlx1REYwMC1cdURGRkZdfFx1RDg2RFtcdURDMDAtXHVERjM0XHVERjQwLVx1REZGRl18XHVEODZFW1x1REMwMC1cdURDMURcdURDMjAtXHVERkZGXXxcdUQ4NzNbXHVEQzAwLVx1REVBMVx1REVCMC1cdURGRkZdfFx1RDg3QVtcdURDMDAtXHVERkUwXXxcdUQ4N0VbXHVEQzAwLVx1REUxRF0pXFMqL2c7Y2xhc3MgY097dHJhbnNmb3JtKHQpe2lmKCF0KXJldHVybiB0O2lmKCJzdHJpbmciIT10eXBlb2YgdCl0aHJvdyBuTyhjTyx0KTtyZXR1cm4gdC5yZXBsYWNlKGlPLCh0PT50WzBdLnRvVXBwZXJDYXNlKCkrdC5zdWJzdHIoMSkudG9Mb3dlckNhc2UoKSkpfX1jTy7JtWZhYz1mdW5jdGlvbiB0KG4pe3JldHVybiBuZXcobnx8Y08pfSxjTy7JtXBpcGU9d28oe25hbWU6InRpdGxlY2FzZSIsdHlwZTpjTyxwdXJlOiEwfSk7Y2xhc3Mgc097dHJhbnNmb3JtKHQpe2lmKCF0KXJldHVybiB0O2lmKCJzdHJpbmciIT10eXBlb2YgdCl0aHJvdyBuTyhzTyx0KTtyZXR1cm4gdC50b1VwcGVyQ2FzZSgpfX1zTy7JtWZhYz1mdW5jdGlvbiB0KG4pe3JldHVybiBuZXcobnx8c08pfSxzTy7JtXBpcGU9d28oe25hbWU6InVwcGVyY2FzZSIsdHlwZTpzTyxwdXJlOiEwfSk7Ci8qKgogICAgICogQGxpY2Vuc2UKICAgICAqIENvcHlyaWdodCBHb29nbGUgTExDIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCiAgICAgKgogICAgICogVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYW4gTUlULXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKICAgICAqIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUgYXQgaHR0cHM6Ly9hbmd1bGFyLmlvL2xpY2Vuc2UKICAgICAqLwpjbGFzcyBsT3tjb25zdHJ1Y3Rvcih0KXt0aGlzLmxvY2FsZT10fXRyYW5zZm9ybSh0LG49Im1lZGl1bURhdGUiLGUsYSl7aWYobnVsbD09dHx8IiI9PT10fHx0IT10KXJldHVybiBudWxsO3RyeXtyZXR1cm4gaE0odCxuLGF8fHRoaXMubG9jYWxlLGUpfWNhdGNoKHQpe3Rocm93IG5PKGxPLHQubWVzc2FnZSl9fX1sTy7JtWZhYz1mdW5jdGlvbiB0KG4pe3JldHVybiBuZXcobnx8bE8pKFpnKE5fKSl9LGxPLsm1cGlwZT13byh7bmFtZToiZGF0ZSIsdHlwZTpsTyxwdXJlOiEwfSksbE8uY3RvclBhcmFtZXRlcnM9KCk9Plt7dHlwZTpTdHJpbmcsZGVjb3JhdG9yczpbe3R5cGU6SWUsYXJnczpbTl9dfV19XQovKioKICAgICAqIEBsaWNlbnNlCiAgICAgKiBDb3B5cmlnaHQgR29vZ2xlIExMQyBBbGwgUmlnaHRzIFJlc2VydmVkLgogICAgICoKICAgICAqIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGFuIE1JVC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCiAgICAgKiBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlIGF0IGh0dHBzOi8vYW5ndWxhci5pby9saWNlbnNlCiAgICAgKi87Y29uc3QgbU89LyMvZztjbGFzcyBkT3tjb25zdHJ1Y3Rvcih0KXt0aGlzLl9sb2NhbGl6YXRpb249dH10cmFuc2Zvcm0odCxuLGUpe2lmKG51bGw9PXQpcmV0dXJuIiI7aWYoIm9iamVjdCIhPXR5cGVvZiBufHxudWxsPT09bil0aHJvdyBuTyhkTyxuKTtyZXR1cm4gbltOTSh0LE9iamVjdC5rZXlzKG4pLHRoaXMuX2xvY2FsaXphdGlvbixlKV0ucmVwbGFjZShtTyx0LnRvU3RyaW5nKCkpfX1kTy7JtWZhYz1mdW5jdGlvbiB0KG4pe3JldHVybiBuZXcobnx8ZE8pKFpnKElNKSl9LGRPLsm1cGlwZT13byh7bmFtZToiaTE4blBsdXJhbCIsdHlwZTpkTyxwdXJlOiEwfSksZE8uY3RvclBhcmFtZXRlcnM9KCk9Plt7dHlwZTpJTX1dCi8qKgogICAgICogQGxpY2Vuc2UKICAgICAqIENvcHlyaWdodCBHb29nbGUgTExDIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCiAgICAgKgogICAgICogVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYW4gTUlULXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKICAgICAqIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUgYXQgaHR0cHM6Ly9hbmd1bGFyLmlvL2xpY2Vuc2UKICAgICAqLztjbGFzcyBnT3t0cmFuc2Zvcm0odCxuKXtpZihudWxsPT10KXJldHVybiIiO2lmKCJvYmplY3QiIT10eXBlb2Ygbnx8InN0cmluZyIhPXR5cGVvZiB0KXRocm93IG5PKGdPLG4pO3JldHVybiBuLmhhc093blByb3BlcnR5KHQpP25bdF06bi5oYXNPd25Qcm9wZXJ0eSgib3RoZXIiKT9uLm90aGVyOiIifX1nTy7JtWZhYz1mdW5jdGlvbiB0KG4pe3JldHVybiBuZXcobnx8Z08pfSxnTy7JtXBpcGU9d28oe25hbWU6ImkxOG5TZWxlY3QiLHR5cGU6Z08scHVyZTohMH0pOwovKioKICAgICAqIEBsaWNlbnNlCiAgICAgKiBDb3B5cmlnaHQgR29vZ2xlIExMQyBBbGwgUmlnaHRzIFJlc2VydmVkLgogICAgICoKICAgICAqIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGFuIE1JVC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCiAgICAgKiBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlIGF0IGh0dHBzOi8vYW5ndWxhci5pby9saWNlbnNlCiAgICAgKi8KY2xhc3MgcE97dHJhbnNmb3JtKHQpe3JldHVybiBKU09OLnN0cmluZ2lmeSh0LG51bGwsMil9fXBPLsm1ZmFjPWZ1bmN0aW9uIHQobil7cmV0dXJuIG5ldyhufHxwTyl9LHBPLsm1cGlwZT13byh7bmFtZToianNvbiIsdHlwZTpwTyxwdXJlOiExfSk7Y2xhc3MgYk97Y29uc3RydWN0b3IodCl7dGhpcy5kaWZmZXJzPXQsdGhpcy5rZXlWYWx1ZXM9W119dHJhbnNmb3JtKHQsbj11Tyl7aWYoIXR8fCEodCBpbnN0YW5jZW9mIE1hcCkmJiJvYmplY3QiIT10eXBlb2YgdClyZXR1cm4gbnVsbDt0aGlzLmRpZmZlcnx8KHRoaXMuZGlmZmVyPXRoaXMuZGlmZmVycy5maW5kKHQpLmNyZWF0ZSgpKTtjb25zdCBlPXRoaXMuZGlmZmVyLmRpZmYodCk7cmV0dXJuIGUmJih0aGlzLmtleVZhbHVlcz1bXSxlLmZvckVhY2hJdGVtKCh0PT57dGhpcy5rZXlWYWx1ZXMucHVzaCgoCi8qKgogICAgICogQGxpY2Vuc2UKICAgICAqIENvcHlyaWdodCBHb29nbGUgTExDIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCiAgICAgKgogICAgICogVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYW4gTUlULXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKICAgICAqIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUgYXQgaHR0cHM6Ly9hbmd1bGFyLmlvL2xpY2Vuc2UKICAgICAqLwpmdW5jdGlvbiBuKHQsZSl7cmV0dXJue2tleTp0LHZhbHVlOmV9fSkodC5rZXksdC5jdXJyZW50VmFsdWUpKX0pKSx0aGlzLmtleVZhbHVlcy5zb3J0KG4pKSx0aGlzLmtleVZhbHVlc319ZnVuY3Rpb24gdU8odCxuKXtjb25zdCBlPXQua2V5LGE9bi5rZXk7aWYoZT09PWEpcmV0dXJuIDA7aWYodm9pZCAwPT09ZSlyZXR1cm4gMTtpZih2b2lkIDA9PT1hKXJldHVybi0xO2lmKG51bGw9PT1lKXJldHVybiAxO2lmKG51bGw9PT1hKXJldHVybi0xO2lmKCJzdHJpbmciPT10eXBlb2YgZSYmInN0cmluZyI9PXR5cGVvZiBhKXJldHVybiBlPGE/LTE6MTtpZigibnVtYmVyIj09dHlwZW9mIGUmJiJudW1iZXIiPT10eXBlb2YgYSlyZXR1cm4gZS1hO2lmKCJib29sZWFuIj09dHlwZW9mIGUmJiJib29sZWFuIj09dHlwZW9mIGEpcmV0dXJuIGU8YT8tMToxO2NvbnN0IG89U3RyaW5nKGUpLHI9U3RyaW5nKGEpO3JldHVybiBvPT1yPzA6bzxyPy0xOjF9Ci8qKgogICAgICogQGxpY2Vuc2UKICAgICAqIENvcHlyaWdodCBHb29nbGUgTExDIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCiAgICAgKgogICAgICogVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYW4gTUlULXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKICAgICAqIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUgYXQgaHR0cHM6Ly9hbmd1bGFyLmlvL2xpY2Vuc2UKICAgICAqL2JPLsm1ZmFjPWZ1bmN0aW9uIHQobil7cmV0dXJuIG5ldyhufHxiTykoWmcoR3UpKX0sYk8uybVwaXBlPXdvKHtuYW1lOiJrZXl2YWx1ZSIsdHlwZTpiTyxwdXJlOiExfSksYk8uY3RvclBhcmFtZXRlcnM9KCk9Plt7dHlwZTpHdX1dO2NsYXNzIGZPe2NvbnN0cnVjdG9yKHQpe3RoaXMuX2xvY2FsZT10fXRyYW5zZm9ybSh0LG4sZSl7aWYoQ08odCkpcmV0dXJuIG51bGw7ZT1lfHx0aGlzLl9sb2NhbGU7dHJ5e3JldHVybiBSTShNTyh0KSxlLG4pfWNhdGNoKHQpe3Rocm93IG5PKGZPLHQubWVzc2FnZSl9fX1mTy7JtWZhYz1mdW5jdGlvbiB0KG4pe3JldHVybiBuZXcobnx8Zk8pKFpnKE5fKSl9LGZPLsm1cGlwZT13byh7bmFtZToibnVtYmVyIix0eXBlOmZPLHB1cmU6ITB9KSxmTy5jdG9yUGFyYW1ldGVycz0oKT0+W3t0eXBlOlN0cmluZyxkZWNvcmF0b3JzOlt7dHlwZTpJZSxhcmdzOltOX119XX1dO2NsYXNzIGhPe2NvbnN0cnVjdG9yKHQpe3RoaXMuX2xvY2FsZT10fXRyYW5zZm9ybSh0LG4sZSl7aWYoQ08odCkpcmV0dXJuIG51bGw7ZT1lfHx0aGlzLl9sb2NhbGU7dHJ5e3JldHVybihmdW5jdGlvbiBhKHQsbixlKXtyZXR1cm4gek0odCxUTShpTShuLFhDLlBlcmNlbnQpLHJNKG4sdE0uTWludXNTaWduKSksbix0TS5Hcm91cCx0TS5EZWNpbWFsLGUsITApLnJlcGxhY2UobmV3IFJlZ0V4cCgiJSIsImciKSxyTShuLHRNLlBlcmNlbnRTaWduKSl9KShNTyh0KSxlLG4pfWNhdGNoKHQpe3Rocm93IG5PKGhPLHQubWVzc2FnZSl9fX1oTy7JtWZhYz1mdW5jdGlvbiB0KG4pe3JldHVybiBuZXcobnx8aE8pKFpnKE5fKSl9LGhPLsm1cGlwZT13byh7bmFtZToicGVyY2VudCIsdHlwZTpoTyxwdXJlOiEwfSksaE8uY3RvclBhcmFtZXRlcnM9KCk9Plt7dHlwZTpTdHJpbmcsZGVjb3JhdG9yczpbe3R5cGU6SWUsYXJnczpbTl9dfV19XTtjbGFzcyBfT3tjb25zdHJ1Y3Rvcih0LG49IlVTRCIpe3RoaXMuX2xvY2FsZT10LHRoaXMuX2RlZmF1bHRDdXJyZW5jeUNvZGU9bn10cmFuc2Zvcm0odCxuLGU9InN5bWJvbCIsYSxvKXtpZihDTyh0KSlyZXR1cm4gbnVsbDtvPW98fHRoaXMuX2xvY2FsZSwiYm9vbGVhbiI9PXR5cGVvZiBlJiYoY29uc29sZSYmY29uc29sZS53YXJuJiZjb25zb2xlLndhcm4oJ1dhcm5pbmc6IHRoZSBjdXJyZW5jeSBwaXBlIGhhcyBiZWVuIGNoYW5nZWQgaW4gQW5ndWxhciB2NS4gVGhlIHN5bWJvbERpc3BsYXkgb3B0aW9uICh0aGlyZCBwYXJhbWV0ZXIpIGlzIG5vdyBhIHN0cmluZyBpbnN0ZWFkIG9mIGEgYm9vbGVhbi4gVGhlIGFjY2VwdGVkIHZhbHVlcyBhcmUgImNvZGUiLCAic3ltYm9sIiBvciAic3ltYm9sLW5hcnJvdyIuJyksZT1lPyJzeW1ib2wiOiJjb2RlIik7bGV0IHI9bnx8dGhpcy5fZGVmYXVsdEN1cnJlbmN5Q29kZTsiY29kZSIhPT1lJiYocj0ic3ltYm9sIj09PWV8fCJzeW1ib2wtbmFycm93Ij09PWU/KGZ1bmN0aW9uIGkodCxuLGU9ImVuIil7Y29uc3QgYT0oZnVuY3Rpb24gbyh0KXtyZXR1cm4gc2IodClbZGIuQ3VycmVuY2llc119KShlKVt0XXx8WkNbdF18fFtdLHI9YVsxXTtyZXR1cm4ibmFycm93Ij09PW4mJiJzdHJpbmciPT10eXBlb2Ygcj9yOmFbMF18fHR9KShyLCJzeW1ib2wiPT09ZT8id2lkZSI6Im5hcnJvdyIsbyk6ZSk7dHJ5e3JldHVybihmdW5jdGlvbiBjKHQsbixlLGEsbyl7Y29uc3Qgcj1UTShpTShuLFhDLkN1cnJlbmN5KSxyTShuLHRNLk1pbnVzU2lnbikpO3JldHVybiByLm1pbkZyYWM9KGZ1bmN0aW9uIGkodCl7bGV0IG47Y29uc3QgZT1aQ1t0XTtyZXR1cm4gZSYmKG49ZVsyXSksIm51bWJlciI9PXR5cGVvZiBuP246Mn0pKGEpLHIubWF4RnJhYz1yLm1pbkZyYWMsek0odCxyLG4sdE0uQ3VycmVuY3lHcm91cCx0TS5DdXJyZW5jeURlY2ltYWwsbykucmVwbGFjZSgiwqQiLGUpLnJlcGxhY2UoIsKkIiwiIikudHJpbSgpfSkoTU8odCksbyxyLG4sYSl9Y2F0Y2godCl7dGhyb3cgbk8oX08sdC5tZXNzYWdlKX19fWZ1bmN0aW9uIENPKHQpe3JldHVybiBudWxsPT10fHwiIj09PXR8fHQhPXR9ZnVuY3Rpb24gTU8odCl7aWYoInN0cmluZyI9PXR5cGVvZiB0JiYhaXNOYU4oTnVtYmVyKHQpLXBhcnNlRmxvYXQodCkpKXJldHVybiBOdW1iZXIodCk7aWYoIm51bWJlciIhPXR5cGVvZiB0KXRocm93IG5ldyBFcnJvcihgJHt0fSBpcyBub3QgYSBudW1iZXJgKTtyZXR1cm4gdH0KLyoqCiAgICAgKiBAbGljZW5zZQogICAgICogQ29weXJpZ2h0IEdvb2dsZSBMTEMgQWxsIFJpZ2h0cyBSZXNlcnZlZC4KICAgICAqCiAgICAgKiBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhbiBNSVQtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQogICAgICogZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZSBhdCBodHRwczovL2FuZ3VsYXIuaW8vbGljZW5zZQogICAgICovX08uybVmYWM9ZnVuY3Rpb24gdChuKXtyZXR1cm4gbmV3KG58fF9PKShaZyhOXyksWmcoRl8pKX0sX08uybVwaXBlPXdvKHtuYW1lOiJjdXJyZW5jeSIsdHlwZTpfTyxwdXJlOiEwfSksX08uY3RvclBhcmFtZXRlcnM9KCk9Plt7dHlwZTpTdHJpbmcsZGVjb3JhdG9yczpbe3R5cGU6SWUsYXJnczpbTl9dfV19LHt0eXBlOlN0cmluZyxkZWNvcmF0b3JzOlt7dHlwZTpJZSxhcmdzOltGX119XX1dO2NsYXNzIE9Pe3RyYW5zZm9ybSh0LG4sZSl7aWYobnVsbD09dClyZXR1cm4gdDtpZighdGhpcy5zdXBwb3J0cyh0KSl0aHJvdyBuTyhPTyx0KTtyZXR1cm4gdC5zbGljZShuLGUpfXN1cHBvcnRzKHQpe3JldHVybiJzdHJpbmciPT10eXBlb2YgdHx8QXJyYXkuaXNBcnJheSh0KX19T08uybVmYWM9ZnVuY3Rpb24gdChuKXtyZXR1cm4gbmV3KG58fE9PKX0sT08uybVwaXBlPXdvKHtuYW1lOiJzbGljZSIsdHlwZTpPTyxwdXJlOiExfSk7Ci8qKgogICAgICogQGxpY2Vuc2UKICAgICAqIENvcHlyaWdodCBHb29nbGUgTExDIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCiAgICAgKgogICAgICogVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYW4gTUlULXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKICAgICAqIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUgYXQgaHR0cHM6Ly9hbmd1bGFyLmlvL2xpY2Vuc2UKICAgICAqLwpjbGFzcyBQT3t9UE8uybVtb2Q9eG8oe3R5cGU6UE99KSxQTy7JtWluaj1HZSh7ZmFjdG9yeTpmdW5jdGlvbiB0KG4pe3JldHVybiBuZXcobnx8UE8pfSxwcm92aWRlcnM6W3twcm92aWRlOklNLHVzZUNsYXNzOkZNfV19KSwoInVuZGVmaW5lZCI9PXR5cGVvZiBuZ0ppdE1vZGV8fG5nSml0TW9kZSkmJnlvKFBPLHtkZWNsYXJhdGlvbnM6W0hNLEJNLGpNLFdNLHRPLCRNLFpNLFhNLEpNLFFNLEtNLG9PLHNPLHJPLHBPLE9PLGZPLGhPLGNPLF9PLGxPLGRPLGdPLGJPXSxleHBvcnRzOltITSxCTSxqTSxXTSx0TywkTSxaTSxYTSxKTSxRTSxLTSxvTyxzTyxyTyxwTyxPTyxmTyxoTyxjTyxfTyxsTyxkTyxnTyxiT119KSwKLyoqCiAgICAgKiBAbGljZW5zZQogICAgICogQ29weXJpZ2h0IEdvb2dsZSBMTEMgQWxsIFJpZ2h0cyBSZXNlcnZlZC4KICAgICAqCiAgICAgKiBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhbiBNSVQtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQogICAgICogZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZSBhdCBodHRwczovL2FuZ3VsYXIuaW8vbGljZW5zZQogICAgICovCm5ldyBSdSgiMTAuMi40Iik7Ci8qKgogICAgICogQGxpY2Vuc2UKICAgICAqIENvcHlyaWdodCBHb29nbGUgTExDIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCiAgICAgKgogICAgICogVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYW4gTUlULXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKICAgICAqIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUgYXQgaHR0cHM6Ly9hbmd1bGFyLmlvL2xpY2Vuc2UKICAgICAqLwpjbGFzcyB4T3t9eE8uybVwcm92PVdlKHt0b2tlbjp4Tyxwcm92aWRlZEluOiJyb290IixmYWN0b3J5OigpPT5uZXcgeU8oWmEoekMpLHdpbmRvdyxaYShvYykpfSk7Y2xhc3MgeU97Y29uc3RydWN0b3IodCxuLGUpe3RoaXMuZG9jdW1lbnQ9dCx0aGlzLndpbmRvdz1uLHRoaXMuZXJyb3JIYW5kbGVyPWUsdGhpcy5vZmZzZXQ9KCk9PlswLDBdfXNldE9mZnNldCh0KXt0aGlzLm9mZnNldD1BcnJheS5pc0FycmF5KHQpPygpPT50OnR9Z2V0U2Nyb2xsUG9zaXRpb24oKXtyZXR1cm4gdGhpcy5zdXBwb3J0c1Njcm9sbGluZygpP1t0aGlzLndpbmRvdy5zY3JvbGxYLHRoaXMud2luZG93LnNjcm9sbFldOlswLDBdfXNjcm9sbFRvUG9zaXRpb24odCl7dGhpcy5zdXBwb3J0c1Njcm9sbGluZygpJiZ0aGlzLndpbmRvdy5zY3JvbGxUbyh0WzBdLHRbMV0pfXNjcm9sbFRvQW5jaG9yKHQpe2lmKHRoaXMuc3VwcG9ydHNTY3JvbGxpbmcoKSl7Y29uc3Qgbj10aGlzLmRvY3VtZW50LmdldEVsZW1lbnRCeUlkKHQpfHx0aGlzLmRvY3VtZW50LmdldEVsZW1lbnRzQnlOYW1lKHQpWzBdO24mJnRoaXMuc2Nyb2xsVG9FbGVtZW50KG4pfX1zZXRIaXN0b3J5U2Nyb2xsUmVzdG9yYXRpb24odCl7aWYodGhpcy5zdXBwb3J0U2Nyb2xsUmVzdG9yYXRpb24oKSl7Y29uc3Qgbj10aGlzLndpbmRvdy5oaXN0b3J5O24mJm4uc2Nyb2xsUmVzdG9yYXRpb24mJihuLnNjcm9sbFJlc3RvcmF0aW9uPXQpfX1zY3JvbGxUb0VsZW1lbnQodCl7Y29uc3Qgbj10LmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpLGU9bi5sZWZ0K3RoaXMud2luZG93LnBhZ2VYT2Zmc2V0LGE9bi50b3ArdGhpcy53aW5kb3cucGFnZVlPZmZzZXQsbz10aGlzLm9mZnNldCgpO3RoaXMud2luZG93LnNjcm9sbFRvKGUtb1swXSxhLW9bMV0pfXN1cHBvcnRTY3JvbGxSZXN0b3JhdGlvbigpe3RyeXtpZighdGhpcy53aW5kb3d8fCF0aGlzLndpbmRvdy5zY3JvbGxUbylyZXR1cm4hMTtjb25zdCB0PWtPKHRoaXMud2luZG93Lmhpc3RvcnkpfHxrTyhPYmplY3QuZ2V0UHJvdG90eXBlT2YodGhpcy53aW5kb3cuaGlzdG9yeSkpO3JldHVybiEoIXR8fCF0LndyaXRhYmxlJiYhdC5zZXQpfWNhdGNoKHQpe3JldHVybiExfX1zdXBwb3J0c1Njcm9sbGluZygpe3RyeXtyZXR1cm4hIXRoaXMud2luZG93LnNjcm9sbFRvfWNhdGNoKHQpe3JldHVybiExfX19ZnVuY3Rpb24ga08odCl7cmV0dXJuIE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IodCwic2Nyb2xsUmVzdG9yYXRpb24iKX0KLyoqCiAgICAgKiBAbGljZW5zZSBBbmd1bGFyIHYxMC4yLjQKICAgICAqIChjKSAyMDEwLTIwMjAgR29vZ2xlIExMQy4gaHR0cHM6Ly9hbmd1bGFyLmlvLwogICAgICogTGljZW5zZTogTUlUCiAgICAgKi8KLyoqCiAgICAgKiBAbGljZW5zZQogICAgICogQ29weXJpZ2h0IEdvb2dsZSBMTEMgQWxsIFJpZ2h0cyBSZXNlcnZlZC4KICAgICAqCiAgICAgKiBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhbiBNSVQtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQogICAgICogZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZSBhdCBodHRwczovL2FuZ3VsYXIuaW8vbGljZW5zZQogICAgICovY2xhc3Mgdk8gZXh0ZW5kcyBjbGFzcyBleHRlbmRzIGNsYXNze317Y29uc3RydWN0b3IoKXtzdXBlcigpfXN1cHBvcnRzRE9NRXZlbnRzKCl7cmV0dXJuITB9fQovKioKICAgICAqIEBsaWNlbnNlCiAgICAgKiBDb3B5cmlnaHQgR29vZ2xlIExMQyBBbGwgUmlnaHRzIFJlc2VydmVkLgogICAgICoKICAgICAqIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGFuIE1JVC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCiAgICAgKiBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlIGF0IGh0dHBzOi8vYW5ndWxhci5pby9saWNlbnNlCiAgICAgKi97c3RhdGljIG1ha2VDdXJyZW50KCl7IShmdW5jdGlvbiB0KG4pe0VDfHwoRUM9bil9KShuZXcgdk8pfWdldFByb3BlcnR5KHQsbil7cmV0dXJuIHRbbl19bG9nKHQpe3dpbmRvdy5jb25zb2xlJiZ3aW5kb3cuY29uc29sZS5sb2cmJndpbmRvdy5jb25zb2xlLmxvZyh0KX1sb2dHcm91cCh0KXt3aW5kb3cuY29uc29sZSYmd2luZG93LmNvbnNvbGUuZ3JvdXAmJndpbmRvdy5jb25zb2xlLmdyb3VwKHQpfWxvZ0dyb3VwRW5kKCl7d2luZG93LmNvbnNvbGUmJndpbmRvdy5jb25zb2xlLmdyb3VwRW5kJiZ3aW5kb3cuY29uc29sZS5ncm91cEVuZCgpfW9uQW5kQ2FuY2VsKHQsbixlKXtyZXR1cm4gdC5hZGRFdmVudExpc3RlbmVyKG4sZSwhMSksKCk9Pnt0LnJlbW92ZUV2ZW50TGlzdGVuZXIobixlLCExKX19ZGlzcGF0Y2hFdmVudCh0LG4pe3QuZGlzcGF0Y2hFdmVudChuKX1yZW1vdmUodCl7cmV0dXJuIHQucGFyZW50Tm9kZSYmdC5wYXJlbnROb2RlLnJlbW92ZUNoaWxkKHQpLHR9Z2V0VmFsdWUodCl7cmV0dXJuIHQudmFsdWV9Y3JlYXRlRWxlbWVudCh0LG4pe3JldHVybihuPW58fHRoaXMuZ2V0RGVmYXVsdERvY3VtZW50KCkpLmNyZWF0ZUVsZW1lbnQodCl9Y3JlYXRlSHRtbERvY3VtZW50KCl7cmV0dXJuIGRvY3VtZW50LmltcGxlbWVudGF0aW9uLmNyZWF0ZUhUTUxEb2N1bWVudCgiZmFrZVRpdGxlIil9Z2V0RGVmYXVsdERvY3VtZW50KCl7cmV0dXJuIGRvY3VtZW50fWlzRWxlbWVudE5vZGUodCl7cmV0dXJuIHQubm9kZVR5cGU9PT1Ob2RlLkVMRU1FTlRfTk9ERX1pc1NoYWRvd1Jvb3QodCl7cmV0dXJuIHQgaW5zdGFuY2VvZiBEb2N1bWVudEZyYWdtZW50fWdldEdsb2JhbEV2ZW50VGFyZ2V0KHQsbil7cmV0dXJuIndpbmRvdyI9PT1uP3dpbmRvdzoiZG9jdW1lbnQiPT09bj90OiJib2R5Ij09PW4/dC5ib2R5Om51bGx9Z2V0SGlzdG9yeSgpe3JldHVybiB3aW5kb3cuaGlzdG9yeX1nZXRMb2NhdGlvbigpe3JldHVybiB3aW5kb3cubG9jYXRpb259Z2V0QmFzZUhyZWYodCl7Y29uc3Qgbj0oZnVuY3Rpb24gZSgpe3JldHVybiBTT3x8KFNPPWRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IoImJhc2UiKSxTTyk/U08uZ2V0QXR0cmlidXRlKCJocmVmIik6bnVsbH0pKCk7cmV0dXJuIG51bGw9PW4/bnVsbDooZnVuY3Rpb24gYSh0KXtyZXR1cm4gd098fCh3Tz1kb2N1bWVudC5jcmVhdGVFbGVtZW50KCJhIikpLHdPLnNldEF0dHJpYnV0ZSgiaHJlZiIsdCksIi8iPT09d08ucGF0aG5hbWUuY2hhckF0KDApP3dPLnBhdGhuYW1lOiIvIit3Ty5wYXRobmFtZX0KLyoqCiAgICAgKiBAbGljZW5zZQogICAgICogQ29weXJpZ2h0IEdvb2dsZSBMTEMgQWxsIFJpZ2h0cyBSZXNlcnZlZC4KICAgICAqCiAgICAgKiBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhbiBNSVQtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQogICAgICogZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZSBhdCBodHRwczovL2FuZ3VsYXIuaW8vbGljZW5zZQogICAgICovKShuKX1yZXNldEJhc2VFbGVtZW50KCl7U089bnVsbH1nZXRVc2VyQWdlbnQoKXtyZXR1cm4gd2luZG93Lm5hdmlnYXRvci51c2VyQWdlbnR9cGVyZm9ybWFuY2VOb3coKXtyZXR1cm4gd2luZG93LnBlcmZvcm1hbmNlJiZ3aW5kb3cucGVyZm9ybWFuY2Uubm93P3dpbmRvdy5wZXJmb3JtYW5jZS5ub3coKToobmV3IERhdGUpLmdldFRpbWUoKX1zdXBwb3J0c0Nvb2tpZXMoKXtyZXR1cm4hMH1nZXRDb29raWUodCl7cmV0dXJuIExNKGRvY3VtZW50LmNvb2tpZSx0KX19bGV0IHdPLFNPPW51bGw7Y29uc3QgRU89bmV3IEZhKCJUUkFOU0lUSU9OX0lEIiksQU89W3twcm92aWRlOnZfLHVzZUZhY3Rvcnk6ZnVuY3Rpb24gek8odCxuLGUpe3JldHVybigpPT57ZS5nZXQod18pLmRvbmVQcm9taXNlLnRoZW4oKCgpPT57Y29uc3QgZT1BQygpO0FycmF5LnByb3RvdHlwZS5zbGljZS5hcHBseShuLnF1ZXJ5U2VsZWN0b3JBbGwoInN0eWxlW25nLXRyYW5zaXRpb25dIikpLmZpbHRlcigobj0+bi5nZXRBdHRyaWJ1dGUoIm5nLXRyYW5zaXRpb24iKT09PXQpKS5mb3JFYWNoKCh0PT5lLnJlbW92ZSh0KSkpfSkpfX0sZGVwczpbRU8sekMseWRdLG11bHRpOiEwfV07Ci8qKgogICAgICogQGxpY2Vuc2UKICAgICAqIENvcHlyaWdodCBHb29nbGUgTExDIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCiAgICAgKgogICAgICogVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYW4gTUlULXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKICAgICAqIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUgYXQgaHR0cHM6Ly9hbmd1bGFyLmlvL2xpY2Vuc2UKICAgICAqLwpjbGFzcyBST3tzdGF0aWMgaW5pdCgpeyEoZnVuY3Rpb24gdChuKXtjQz1ufSkobmV3IFJPKX1hZGRUb1dpbmRvdyh0KXttYS5nZXRBbmd1bGFyVGVzdGFiaWxpdHk9KG4sZT0hMCk9Pntjb25zdCBhPXQuZmluZFRlc3RhYmlsaXR5SW5UcmVlKG4sZSk7aWYobnVsbD09YSl0aHJvdyBuZXcgRXJyb3IoIkNvdWxkIG5vdCBmaW5kIHRlc3RhYmlsaXR5IGZvciBlbGVtZW50LiIpO3JldHVybiBhfSxtYS5nZXRBbGxBbmd1bGFyVGVzdGFiaWxpdGllcz0oKT0+dC5nZXRBbGxUZXN0YWJpbGl0aWVzKCksbWEuZ2V0QWxsQW5ndWxhclJvb3RFbGVtZW50cz0oKT0+dC5nZXRBbGxSb290RWxlbWVudHMoKSxtYS5mcmFtZXdvcmtTdGFiaWxpemVyc3x8KG1hLmZyYW1ld29ya1N0YWJpbGl6ZXJzPVtdKSxtYS5mcmFtZXdvcmtTdGFiaWxpemVycy5wdXNoKCh0PT57Y29uc3Qgbj1tYS5nZXRBbGxBbmd1bGFyVGVzdGFiaWxpdGllcygpO2xldCBlPW4ubGVuZ3RoLGE9ITE7Y29uc3Qgbz1mdW5jdGlvbihuKXthPWF8fG4sZS0tLDA9PWUmJnQoYSl9O24uZm9yRWFjaCgoZnVuY3Rpb24odCl7dC53aGVuU3RhYmxlKG8pfSkpfSkpfWZpbmRUZXN0YWJpbGl0eUluVHJlZSh0LG4sZSl7aWYobnVsbD09bilyZXR1cm4gbnVsbDtjb25zdCBhPXQuZ2V0VGVzdGFiaWxpdHkobik7cmV0dXJuIG51bGwhPWE/YTplP0FDKCkuaXNTaGFkb3dSb290KG4pP3RoaXMuZmluZFRlc3RhYmlsaXR5SW5UcmVlKHQsbi5ob3N0LCEwKTp0aGlzLmZpbmRUZXN0YWJpbGl0eUluVHJlZSh0LG4ucGFyZW50RWxlbWVudCwhMCk6bnVsbH19bmV3IE5lO2NvbnN0IFRPPW5ldyBGYSgiRXZlbnRNYW5hZ2VyUGx1Z2lucyIpOwovKioKICAgICAqIEBsaWNlbnNlCiAgICAgKiBDb3B5cmlnaHQgR29vZ2xlIExMQyBBbGwgUmlnaHRzIFJlc2VydmVkLgogICAgICoKICAgICAqIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGFuIE1JVC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCiAgICAgKiBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlIGF0IGh0dHBzOi8vYW5ndWxhci5pby9saWNlbnNlCiAgICAgKi9jbGFzcyBET3tjb25zdHJ1Y3Rvcih0LG4pe3RoaXMuX3pvbmU9bix0aGlzLl9ldmVudE5hbWVUb1BsdWdpbj1uZXcgTWFwLHQuZm9yRWFjaCgodD0+dC5tYW5hZ2VyPXRoaXMpKSx0aGlzLl9wbHVnaW5zPXQuc2xpY2UoKS5yZXZlcnNlKCl9YWRkRXZlbnRMaXN0ZW5lcih0LG4sZSl7cmV0dXJuIHRoaXMuX2ZpbmRQbHVnaW5Gb3IobikuYWRkRXZlbnRMaXN0ZW5lcih0LG4sZSl9YWRkR2xvYmFsRXZlbnRMaXN0ZW5lcih0LG4sZSl7cmV0dXJuIHRoaXMuX2ZpbmRQbHVnaW5Gb3IobikuYWRkR2xvYmFsRXZlbnRMaXN0ZW5lcih0LG4sZSl9Z2V0Wm9uZSgpe3JldHVybiB0aGlzLl96b25lfV9maW5kUGx1Z2luRm9yKHQpe2NvbnN0IG49dGhpcy5fZXZlbnROYW1lVG9QbHVnaW4uZ2V0KHQpO2lmKG4pcmV0dXJuIG47Y29uc3QgZT10aGlzLl9wbHVnaW5zO2ZvcihsZXQgbj0wO248ZS5sZW5ndGg7bisrKXtjb25zdCBhPWVbbl07aWYoYS5zdXBwb3J0cyh0KSlyZXR1cm4gdGhpcy5fZXZlbnROYW1lVG9QbHVnaW4uc2V0KHQsYSksYX10aHJvdyBuZXcgRXJyb3IoYE5vIGV2ZW50IG1hbmFnZXIgcGx1Z2luIGZvdW5kIGZvciBldmVudCAke3R9YCl9fURPLsm1ZmFjPWZ1bmN0aW9uIHQobil7cmV0dXJuIG5ldyhufHxETykoWmEoVE8pLFphKEpfKSl9LERPLsm1cHJvdj1XZSh7dG9rZW46RE8sZmFjdG9yeTpETy7JtWZhY30pLERPLmN0b3JQYXJhbWV0ZXJzPSgpPT5be3R5cGU6QXJyYXksZGVjb3JhdG9yczpbe3R5cGU6SWUsYXJnczpbVE9dfV19LHt0eXBlOkpffV07Y2xhc3MgSU97Y29uc3RydWN0b3IodCl7dGhpcy5fZG9jPXR9YWRkR2xvYmFsRXZlbnRMaXN0ZW5lcih0LG4sZSl7Y29uc3QgYT1BQygpLmdldEdsb2JhbEV2ZW50VGFyZ2V0KHRoaXMuX2RvYyx0KTtpZighYSl0aHJvdyBuZXcgRXJyb3IoYFVuc3VwcG9ydGVkIGV2ZW50IHRhcmdldCAke2F9IGZvciBldmVudCAke259YCk7cmV0dXJuIHRoaXMuYWRkRXZlbnRMaXN0ZW5lcihhLG4sZSl9fQovKioKICAgICAqIEBsaWNlbnNlCiAgICAgKiBDb3B5cmlnaHQgR29vZ2xlIExMQyBBbGwgUmlnaHRzIFJlc2VydmVkLgogICAgICoKICAgICAqIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGFuIE1JVC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCiAgICAgKiBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlIGF0IGh0dHBzOi8vYW5ndWxhci5pby9saWNlbnNlCiAgICAgKi9jbGFzcyBOT3tjb25zdHJ1Y3Rvcigpe3RoaXMuX3N0eWxlc1NldD1uZXcgU2V0fWFkZFN0eWxlcyh0KXtjb25zdCBuPW5ldyBTZXQ7dC5mb3JFYWNoKCh0PT57dGhpcy5fc3R5bGVzU2V0Lmhhcyh0KXx8KHRoaXMuX3N0eWxlc1NldC5hZGQodCksbi5hZGQodCkpfSkpLHRoaXMub25TdHlsZXNBZGRlZChuKX1vblN0eWxlc0FkZGVkKHQpe31nZXRBbGxTdHlsZXMoKXtyZXR1cm4gQXJyYXkuZnJvbSh0aGlzLl9zdHlsZXNTZXQpfX1OTy7JtWZhYz1mdW5jdGlvbiB0KG4pe3JldHVybiBuZXcobnx8Tk8pfSxOTy7JtXByb3Y9V2Uoe3Rva2VuOk5PLGZhY3Rvcnk6Tk8uybVmYWN9KTtjbGFzcyBGTyBleHRlbmRzIE5Pe2NvbnN0cnVjdG9yKHQpe3N1cGVyKCksdGhpcy5fZG9jPXQsdGhpcy5faG9zdE5vZGVzPW5ldyBTZXQsdGhpcy5fc3R5bGVOb2Rlcz1uZXcgU2V0LHRoaXMuX2hvc3ROb2Rlcy5hZGQodC5oZWFkKX1fYWRkU3R5bGVzVG9Ib3N0KHQsbil7dC5mb3JFYWNoKCh0PT57Y29uc3QgZT10aGlzLl9kb2MuY3JlYXRlRWxlbWVudCgic3R5bGUiKTtlLnRleHRDb250ZW50PXQsdGhpcy5fc3R5bGVOb2Rlcy5hZGQobi5hcHBlbmRDaGlsZChlKSl9KSl9YWRkSG9zdCh0KXt0aGlzLl9hZGRTdHlsZXNUb0hvc3QodGhpcy5fc3R5bGVzU2V0LHQpLHRoaXMuX2hvc3ROb2Rlcy5hZGQodCl9cmVtb3ZlSG9zdCh0KXt0aGlzLl9ob3N0Tm9kZXMuZGVsZXRlKHQpfW9uU3R5bGVzQWRkZWQodCl7dGhpcy5faG9zdE5vZGVzLmZvckVhY2goKG49PnRoaXMuX2FkZFN0eWxlc1RvSG9zdCh0LG4pKSl9bmdPbkRlc3Ryb3koKXt0aGlzLl9zdHlsZU5vZGVzLmZvckVhY2goKHQ9PkFDKCkucmVtb3ZlKHQpKSl9fUZPLsm1ZmFjPWZ1bmN0aW9uIHQobil7cmV0dXJuIG5ldyhufHxGTykoWmEoekMpKX0sRk8uybVwcm92PVdlKHt0b2tlbjpGTyxmYWN0b3J5OkZPLsm1ZmFjfSksRk8uY3RvclBhcmFtZXRlcnM9KCk9Plt7dHlwZTp2b2lkIDAsZGVjb3JhdG9yczpbe3R5cGU6SWUsYXJnczpbekNdfV19XQovKioKICAgICAqIEBsaWNlbnNlCiAgICAgKiBDb3B5cmlnaHQgR29vZ2xlIExMQyBBbGwgUmlnaHRzIFJlc2VydmVkLgogICAgICoKICAgICAqIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGFuIE1JVC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCiAgICAgKiBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlIGF0IGh0dHBzOi8vYW5ndWxhci5pby9saWNlbnNlCiAgICAgKi87Y29uc3QgTE89e3N2ZzoiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciLHhodG1sOiJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hodG1sIix4bGluazoiaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayIseG1sOiJodHRwOi8vd3d3LnczLm9yZy9YTUwvMTk5OC9uYW1lc3BhY2UiLHhtbG5zOiJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3htbG5zLyJ9LEhPPS8lQ09NUCUvZyxCTz0idW5kZWZpbmVkIj09dHlwZW9mIG5nRGV2TW9kZXx8ISFuZ0Rldk1vZGU7ZnVuY3Rpb24gVk8odCxuLGUpe2ZvcihsZXQgYT0wO2E8bi5sZW5ndGg7YSsrKXtsZXQgbz1uW2FdO0FycmF5LmlzQXJyYXkobyk/Vk8odCxvLGUpOihvPW8ucmVwbGFjZShITyx0KSxlLnB1c2gobykpfXJldHVybiBlfWZ1bmN0aW9uIGpPKHQpe3JldHVybiBuPT57aWYoIl9fbmdVbndyYXBfXyI9PT1uKXJldHVybiB0OyExPT09dChuKSYmKG4ucHJldmVudERlZmF1bHQoKSxuLnJldHVyblZhbHVlPSExKX19Y2xhc3MgVU97Y29uc3RydWN0b3IodCxuLGUpe3RoaXMuZXZlbnRNYW5hZ2VyPXQsdGhpcy5zaGFyZWRTdHlsZXNIb3N0PW4sdGhpcy5hcHBJZD1lLHRoaXMucmVuZGVyZXJCeUNvbXBJZD1uZXcgTWFwLHRoaXMuZGVmYXVsdFJlbmRlcmVyPW5ldyBXTyh0KX1jcmVhdGVSZW5kZXJlcih0LG4pe2lmKCF0fHwhbilyZXR1cm4gdGhpcy5kZWZhdWx0UmVuZGVyZXI7c3dpdGNoKG4uZW5jYXBzdWxhdGlvbil7Y2FzZSBiby5FbXVsYXRlZDp7bGV0IGU9dGhpcy5yZW5kZXJlckJ5Q29tcElkLmdldChuLmlkKTtyZXR1cm4gZXx8KGU9bmV3IHFPKHRoaXMuZXZlbnRNYW5hZ2VyLHRoaXMuc2hhcmVkU3R5bGVzSG9zdCxuLHRoaXMuYXBwSWQpLHRoaXMucmVuZGVyZXJCeUNvbXBJZC5zZXQobi5pZCxlKSksZS5hcHBseVRvSG9zdCh0KSxlfWNhc2UgYm8uTmF0aXZlOmNhc2UgYm8uU2hhZG93RG9tOnJldHVybiBuZXcgWk8odGhpcy5ldmVudE1hbmFnZXIsdGhpcy5zaGFyZWRTdHlsZXNIb3N0LHQsbik7ZGVmYXVsdDppZighdGhpcy5yZW5kZXJlckJ5Q29tcElkLmhhcyhuLmlkKSl7Y29uc3QgdD1WTyhuLmlkLG4uc3R5bGVzLFtdKTt0aGlzLnNoYXJlZFN0eWxlc0hvc3QuYWRkU3R5bGVzKHQpLHRoaXMucmVuZGVyZXJCeUNvbXBJZC5zZXQobi5pZCx0aGlzLmRlZmF1bHRSZW5kZXJlcil9cmV0dXJuIHRoaXMuZGVmYXVsdFJlbmRlcmVyfX1iZWdpbigpe31lbmQoKXt9fVVPLsm1ZmFjPWZ1bmN0aW9uIHQobil7cmV0dXJuIG5ldyhufHxVTykoWmEoRE8pLFphKEZPKSxaYShTXykpfSxVTy7JtXByb3Y9V2Uoe3Rva2VuOlVPLGZhY3Rvcnk6VU8uybVmYWN9KSxVTy5jdG9yUGFyYW1ldGVycz0oKT0+W3t0eXBlOkRPfSx7dHlwZTpGT30se3R5cGU6U3RyaW5nLGRlY29yYXRvcnM6W3t0eXBlOkllLGFyZ3M6W1NfXX1dfV07Y2xhc3MgV097Y29uc3RydWN0b3IodCl7dGhpcy5ldmVudE1hbmFnZXI9dCx0aGlzLmRhdGE9T2JqZWN0LmNyZWF0ZShudWxsKX1kZXN0cm95KCl7fWNyZWF0ZUVsZW1lbnQodCxuKXtyZXR1cm4gbj9kb2N1bWVudC5jcmVhdGVFbGVtZW50TlMoTE9bbl18fG4sdCk6ZG9jdW1lbnQuY3JlYXRlRWxlbWVudCh0KX1jcmVhdGVDb21tZW50KHQpe3JldHVybiBkb2N1bWVudC5jcmVhdGVDb21tZW50KHQpfWNyZWF0ZVRleHQodCl7cmV0dXJuIGRvY3VtZW50LmNyZWF0ZVRleHROb2RlKHQpfWFwcGVuZENoaWxkKHQsbil7dC5hcHBlbmRDaGlsZChuKX1pbnNlcnRCZWZvcmUodCxuLGUpe3QmJnQuaW5zZXJ0QmVmb3JlKG4sZSl9cmVtb3ZlQ2hpbGQodCxuKXt0JiZ0LnJlbW92ZUNoaWxkKG4pfXNlbGVjdFJvb3RFbGVtZW50KHQsbil7bGV0IGU9InN0cmluZyI9PXR5cGVvZiB0P2RvY3VtZW50LnF1ZXJ5U2VsZWN0b3IodCk6dDtpZighZSl0aHJvdyBuZXcgRXJyb3IoYFRoZSBzZWxlY3RvciAiJHt0fSIgZGlkIG5vdCBtYXRjaCBhbnkgZWxlbWVudHNgKTtyZXR1cm4gbnx8KGUudGV4dENvbnRlbnQ9IiIpLGV9cGFyZW50Tm9kZSh0KXtyZXR1cm4gdC5wYXJlbnROb2RlfW5leHRTaWJsaW5nKHQpe3JldHVybiB0Lm5leHRTaWJsaW5nfXNldEF0dHJpYnV0ZSh0LG4sZSxhKXtpZihhKXtuPWErIjoiK247Y29uc3Qgbz1MT1thXTtvP3Quc2V0QXR0cmlidXRlTlMobyxuLGUpOnQuc2V0QXR0cmlidXRlKG4sZSl9ZWxzZSB0LnNldEF0dHJpYnV0ZShuLGUpfXJlbW92ZUF0dHJpYnV0ZSh0LG4sZSl7aWYoZSl7Y29uc3QgYT1MT1tlXTthP3QucmVtb3ZlQXR0cmlidXRlTlMoYSxuKTp0LnJlbW92ZUF0dHJpYnV0ZShgJHtlfToke259YCl9ZWxzZSB0LnJlbW92ZUF0dHJpYnV0ZShuKX1hZGRDbGFzcyh0LG4pe3QuY2xhc3NMaXN0LmFkZChuKX1yZW1vdmVDbGFzcyh0LG4pe3QuY2xhc3NMaXN0LnJlbW92ZShuKX1zZXRTdHlsZSh0LG4sZSxhKXthJnd1LkRhc2hDYXNlP3Quc3R5bGUuc2V0UHJvcGVydHkobixlLGEmd3UuSW1wb3J0YW50PyJpbXBvcnRhbnQiOiIiKTp0LnN0eWxlW25dPWV9cmVtb3ZlU3R5bGUodCxuLGUpe2Umd3UuRGFzaENhc2U/dC5zdHlsZS5yZW1vdmVQcm9wZXJ0eShuKTp0LnN0eWxlW25dPSIifXNldFByb3BlcnR5KHQsbixlKXtCTyYmWU8obiwicHJvcGVydHkiKSx0W25dPWV9c2V0VmFsdWUodCxuKXt0Lm5vZGVWYWx1ZT1ufWxpc3Rlbih0LG4sZSl7cmV0dXJuIEJPJiZZTyhuLCJsaXN0ZW5lciIpLCJzdHJpbmciPT10eXBlb2YgdD90aGlzLmV2ZW50TWFuYWdlci5hZGRHbG9iYWxFdmVudExpc3RlbmVyKHQsbixqTyhlKSk6dGhpcy5ldmVudE1hbmFnZXIuYWRkRXZlbnRMaXN0ZW5lcih0LG4sak8oZSkpfX1jb25zdCBHTz0iQCIuY2hhckNvZGVBdCgwKTtmdW5jdGlvbiBZTyh0LG4pe2lmKHQuY2hhckNvZGVBdCgwKT09PUdPKXRocm93IG5ldyBFcnJvcihgRm91bmQgdGhlIHN5bnRoZXRpYyAke259ICR7dH0uIFBsZWFzZSBpbmNsdWRlIGVpdGhlciAiQnJvd3NlckFuaW1hdGlvbnNNb2R1bGUiIG9yICJOb29wQW5pbWF0aW9uc01vZHVsZSIgaW4geW91ciBhcHBsaWNhdGlvbi5gKX1jbGFzcyBxTyBleHRlbmRzIFdPe2NvbnN0cnVjdG9yKHQsbixlLGEpe3N1cGVyKHQpLHRoaXMuY29tcG9uZW50PWU7Y29uc3Qgbz1WTyhhKyItIitlLmlkLGUuc3R5bGVzLFtdKTtuLmFkZFN0eWxlcyhvKSx0aGlzLmNvbnRlbnRBdHRyPShmdW5jdGlvbiByKHQpe3JldHVybiJfbmdjb250ZW50LSVDT01QJSIucmVwbGFjZShITyx0KX0pKGErIi0iK2UuaWQpLHRoaXMuaG9zdEF0dHI9KGZ1bmN0aW9uIGkodCl7cmV0dXJuIl9uZ2hvc3QtJUNPTVAlIi5yZXBsYWNlKEhPLHQpfSkoYSsiLSIrZS5pZCl9YXBwbHlUb0hvc3QodCl7c3VwZXIuc2V0QXR0cmlidXRlKHQsdGhpcy5ob3N0QXR0ciwiIil9Y3JlYXRlRWxlbWVudCh0LG4pe2NvbnN0IGU9c3VwZXIuY3JlYXRlRWxlbWVudCh0LG4pO3JldHVybiBzdXBlci5zZXRBdHRyaWJ1dGUoZSx0aGlzLmNvbnRlbnRBdHRyLCIiKSxlfX1jbGFzcyBaTyBleHRlbmRzIFdPe2NvbnN0cnVjdG9yKHQsbixlLGEpe3N1cGVyKHQpLHRoaXMuc2hhcmVkU3R5bGVzSG9zdD1uLHRoaXMuaG9zdEVsPWUsdGhpcy5jb21wb25lbnQ9YSx0aGlzLnNoYWRvd1Jvb3Q9YS5lbmNhcHN1bGF0aW9uPT09Ym8uU2hhZG93RG9tP2UuYXR0YWNoU2hhZG93KHttb2RlOiJvcGVuIn0pOmUuY3JlYXRlU2hhZG93Um9vdCgpLHRoaXMuc2hhcmVkU3R5bGVzSG9zdC5hZGRIb3N0KHRoaXMuc2hhZG93Um9vdCk7Y29uc3Qgbz1WTyhhLmlkLGEuc3R5bGVzLFtdKTtmb3IobGV0IHQ9MDt0PG8ubGVuZ3RoO3QrKyl7Y29uc3Qgbj1kb2N1bWVudC5jcmVhdGVFbGVtZW50KCJzdHlsZSIpO24udGV4dENvbnRlbnQ9b1t0XSx0aGlzLnNoYWRvd1Jvb3QuYXBwZW5kQ2hpbGQobil9fW5vZGVPclNoYWRvd1Jvb3QodCl7cmV0dXJuIHQ9PT10aGlzLmhvc3RFbD90aGlzLnNoYWRvd1Jvb3Q6dH1kZXN0cm95KCl7dGhpcy5zaGFyZWRTdHlsZXNIb3N0LnJlbW92ZUhvc3QodGhpcy5zaGFkb3dSb290KX1hcHBlbmRDaGlsZCh0LG4pe3JldHVybiBzdXBlci5hcHBlbmRDaGlsZCh0aGlzLm5vZGVPclNoYWRvd1Jvb3QodCksbil9aW5zZXJ0QmVmb3JlKHQsbixlKXtyZXR1cm4gc3VwZXIuaW5zZXJ0QmVmb3JlKHRoaXMubm9kZU9yU2hhZG93Um9vdCh0KSxuLGUpfXJlbW92ZUNoaWxkKHQsbil7cmV0dXJuIHN1cGVyLnJlbW92ZUNoaWxkKHRoaXMubm9kZU9yU2hhZG93Um9vdCh0KSxuKX1wYXJlbnROb2RlKHQpe3JldHVybiB0aGlzLm5vZGVPclNoYWRvd1Jvb3Qoc3VwZXIucGFyZW50Tm9kZSh0aGlzLm5vZGVPclNoYWRvd1Jvb3QodCkpKX19Ci8qKgogICAgICogQGxpY2Vuc2UKICAgICAqIENvcHlyaWdodCBHb29nbGUgTExDIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCiAgICAgKgogICAgICogVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYW4gTUlULXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKICAgICAqIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUgYXQgaHR0cHM6Ly9hbmd1bGFyLmlvL2xpY2Vuc2UKICAgICAqL2NsYXNzIFhPIGV4dGVuZHMgSU97Y29uc3RydWN0b3IodCl7c3VwZXIodCl9c3VwcG9ydHModCl7cmV0dXJuITB9YWRkRXZlbnRMaXN0ZW5lcih0LG4sZSl7cmV0dXJuIHQuYWRkRXZlbnRMaXN0ZW5lcihuLGUsITEpLCgpPT50aGlzLnJlbW92ZUV2ZW50TGlzdGVuZXIodCxuLGUpfXJlbW92ZUV2ZW50TGlzdGVuZXIodCxuLGUpe3JldHVybiB0LnJlbW92ZUV2ZW50TGlzdGVuZXIobixlKX19WE8uybVmYWM9ZnVuY3Rpb24gdChuKXtyZXR1cm4gbmV3KG58fFhPKShaYSh6QykpfSxYTy7JtXByb3Y9V2Uoe3Rva2VuOlhPLGZhY3Rvcnk6WE8uybVmYWN9KSxYTy5jdG9yUGFyYW1ldGVycz0oKT0+W3t0eXBlOnZvaWQgMCxkZWNvcmF0b3JzOlt7dHlwZTpJZSxhcmdzOlt6Q119XX1dCi8qKgogICAgICogQGxpY2Vuc2UKICAgICAqIENvcHlyaWdodCBHb29nbGUgTExDIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCiAgICAgKgogICAgICogVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYW4gTUlULXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKICAgICAqIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUgYXQgaHR0cHM6Ly9hbmd1bGFyLmlvL2xpY2Vuc2UKICAgICAqLztjb25zdCBKTz17cGFuOiEwLHBhbnN0YXJ0OiEwLHBhbm1vdmU6ITAscGFuZW5kOiEwLHBhbmNhbmNlbDohMCxwYW5sZWZ0OiEwLHBhbnJpZ2h0OiEwLHBhbnVwOiEwLHBhbmRvd246ITAscGluY2g6ITAscGluY2hzdGFydDohMCxwaW5jaG1vdmU6ITAscGluY2hlbmQ6ITAscGluY2hjYW5jZWw6ITAscGluY2hpbjohMCxwaW5jaG91dDohMCxwcmVzczohMCxwcmVzc3VwOiEwLHJvdGF0ZTohMCxyb3RhdGVzdGFydDohMCxyb3RhdGVtb3ZlOiEwLHJvdGF0ZWVuZDohMCxyb3RhdGVjYW5jZWw6ITAsc3dpcGU6ITAsc3dpcGVsZWZ0OiEwLHN3aXBlcmlnaHQ6ITAsc3dpcGV1cDohMCxzd2lwZWRvd246ITAsdGFwOiEwfSxRTz1uZXcgRmEoIkhhbW1lckdlc3R1cmVDb25maWciKSxLTz1uZXcgRmEoIkhhbW1lckxvYWRlciIpO2NsYXNzICRPe2NvbnN0cnVjdG9yKCl7dGhpcy5ldmVudHM9W10sdGhpcy5vdmVycmlkZXM9e319YnVpbGRIYW1tZXIodCl7Y29uc3Qgbj1uZXcgSGFtbWVyKHQsdGhpcy5vcHRpb25zKTtuLmdldCgicGluY2giKS5zZXQoe2VuYWJsZTohMH0pLG4uZ2V0KCJyb3RhdGUiKS5zZXQoe2VuYWJsZTohMH0pO2Zvcihjb25zdCB0IGluIHRoaXMub3ZlcnJpZGVzKW4uZ2V0KHQpLnNldCh0aGlzLm92ZXJyaWRlc1t0XSk7cmV0dXJuIG59fSRPLsm1ZmFjPWZ1bmN0aW9uIHQobil7cmV0dXJuIG5ldyhufHwkTyl9LCRPLsm1cHJvdj1XZSh7dG9rZW46JE8sZmFjdG9yeTokTy7JtWZhY30pO2NsYXNzIHRQIGV4dGVuZHMgSU97Y29uc3RydWN0b3IodCxuLGUsYSl7c3VwZXIodCksdGhpcy5fY29uZmlnPW4sdGhpcy5jb25zb2xlPWUsdGhpcy5sb2FkZXI9YX1zdXBwb3J0cyh0KXtyZXR1cm4hKCFKTy5oYXNPd25Qcm9wZXJ0eSh0LnRvTG93ZXJDYXNlKCkpJiYhdGhpcy5pc0N1c3RvbUV2ZW50KHQpfHwhd2luZG93LkhhbW1lciYmIXRoaXMubG9hZGVyJiYodGhpcy5jb25zb2xlLndhcm4oYFRoZSAiJHt0fSIgZXZlbnQgY2Fubm90IGJlIGJvdW5kIGJlY2F1c2UgSGFtbWVyLkpTIGlzIG5vdCBsb2FkZWQgYW5kIG5vIGN1c3RvbSBsb2FkZXIgaGFzIGJlZW4gc3BlY2lmaWVkLmApLDEpKX1hZGRFdmVudExpc3RlbmVyKHQsbixlKXtjb25zdCBhPXRoaXMubWFuYWdlci5nZXRab25lKCk7aWYobj1uLnRvTG93ZXJDYXNlKCksIXdpbmRvdy5IYW1tZXImJnRoaXMubG9hZGVyKXtsZXQgYT0hMSxvPSgpPT57YT0hMH07cmV0dXJuIHRoaXMubG9hZGVyKCkudGhlbigoKCk9PntpZighd2luZG93LkhhbW1lcilyZXR1cm4gdGhpcy5jb25zb2xlLndhcm4oIlRoZSBjdXN0b20gSEFNTUVSX0xPQURFUiBjb21wbGV0ZWQsIGJ1dCBIYW1tZXIuSlMgaXMgbm90IHByZXNlbnQuIiksdm9pZChvPSgpPT57fSk7YXx8KG89dGhpcy5hZGRFdmVudExpc3RlbmVyKHQsbixlKSl9KSkuY2F0Y2goKCgpPT57dGhpcy5jb25zb2xlLndhcm4oYFRoZSAiJHtufSIgZXZlbnQgY2Fubm90IGJlIGJvdW5kIGJlY2F1c2UgdGhlIGN1c3RvbSBIYW1tZXIuSlMgbG9hZGVyIGZhaWxlZC5gKSxvPSgpPT57fX0pKSwoKT0+e28oKX19cmV0dXJuIGEucnVuT3V0c2lkZUFuZ3VsYXIoKCgpPT57Y29uc3Qgbz10aGlzLl9jb25maWcuYnVpbGRIYW1tZXIodCkscj1mdW5jdGlvbih0KXthLnJ1bkd1YXJkZWQoKGZ1bmN0aW9uKCl7ZSh0KX0pKX07cmV0dXJuIG8ub24obixyKSwoKT0+e28ub2ZmKG4sciksImZ1bmN0aW9uIj09dHlwZW9mIG8uZGVzdHJveSYmby5kZXN0cm95KCl9fSkpfWlzQ3VzdG9tRXZlbnQodCl7cmV0dXJuIHRoaXMuX2NvbmZpZy5ldmVudHMuaW5kZXhPZih0KT4tMX19dFAuybVmYWM9ZnVuY3Rpb24gdChuKXtyZXR1cm4gbmV3KG58fHRQKShaYSh6QyksWmEoUU8pLFphKElfKSxaYShLTyw4KSl9LHRQLsm1cHJvdj1XZSh7dG9rZW46dFAsZmFjdG9yeTp0UC7JtWZhY30pLHRQLmN0b3JQYXJhbWV0ZXJzPSgpPT5be3R5cGU6dm9pZCAwLGRlY29yYXRvcnM6W3t0eXBlOkllLGFyZ3M6W3pDXX1dfSx7dHlwZTokTyxkZWNvcmF0b3JzOlt7dHlwZTpJZSxhcmdzOltRT119XX0se3R5cGU6SV99LHt0eXBlOnZvaWQgMCxkZWNvcmF0b3JzOlt7dHlwZTpOZX0se3R5cGU6SWUsYXJnczpbS09dfV19XTtjb25zdCBuUD1be3Byb3ZpZGU6VE8sdXNlQ2xhc3M6dFAsbXVsdGk6ITAsZGVwczpbekMsUU8sSV8sW25ldyBOZSxLT11dfSx7cHJvdmlkZTpRTyx1c2VDbGFzczokTyxkZXBzOltdfV07Y2xhc3MgZVB7fWVQLsm1bW9kPXhvKHt0eXBlOmVQfSksZVAuybVpbmo9R2Uoe2ZhY3Rvcnk6ZnVuY3Rpb24gdChuKXtyZXR1cm4gbmV3KG58fGVQKX0scHJvdmlkZXJzOm5QfSk7Ci8qKgogICAgICogQGxpY2Vuc2UKICAgICAqIENvcHlyaWdodCBHb29nbGUgTExDIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCiAgICAgKgogICAgICogVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYW4gTUlULXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKICAgICAqIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUgYXQgaHR0cHM6Ly9hbmd1bGFyLmlvL2xpY2Vuc2UKICAgICAqLwpjb25zdCBhUD1bImFsdCIsImNvbnRyb2wiLCJtZXRhIiwic2hpZnQiXSxvUD17IlxiIjoiQmFja3NwYWNlIiwiXHQiOiJUYWIiLCJ/IjoiRGVsZXRlIiwiGyI6IkVzY2FwZSIsRGVsOiJEZWxldGUiLEVzYzoiRXNjYXBlIixMZWZ0OiJBcnJvd0xlZnQiLFJpZ2h0OiJBcnJvd1JpZ2h0IixVcDoiQXJyb3dVcCIsRG93bjoiQXJyb3dEb3duIixNZW51OiJDb250ZXh0TWVudSIsU2Nyb2xsOiJTY3JvbGxMb2NrIixXaW46Ik9TIn0sclA9e0E6IjEiLEI6IjIiLEM6IjMiLEQ6IjQiLEU6IjUiLEY6IjYiLEc6IjciLEg6IjgiLEk6IjkiLEo6IioiLEs6IisiLE06Ii0iLE46Ii4iLE86Ii8iLCJgIjoiMCIsIsKQIjoiTnVtTG9jayJ9LGlQPXthbHQ6dD0+dC5hbHRLZXksY29udHJvbDp0PT50LmN0cmxLZXksbWV0YTp0PT50Lm1ldGFLZXksc2hpZnQ6dD0+dC5zaGlmdEtleX07Y2xhc3MgY1AgZXh0ZW5kcyBJT3tjb25zdHJ1Y3Rvcih0KXtzdXBlcih0KX1zdXBwb3J0cyh0KXtyZXR1cm4gbnVsbCE9Y1AucGFyc2VFdmVudE5hbWUodCl9YWRkRXZlbnRMaXN0ZW5lcih0LG4sZSl7Y29uc3QgYT1jUC5wYXJzZUV2ZW50TmFtZShuKSxvPWNQLmV2ZW50Q2FsbGJhY2soYS5mdWxsS2V5LGUsdGhpcy5tYW5hZ2VyLmdldFpvbmUoKSk7cmV0dXJuIHRoaXMubWFuYWdlci5nZXRab25lKCkucnVuT3V0c2lkZUFuZ3VsYXIoKCgpPT5BQygpLm9uQW5kQ2FuY2VsKHQsYS5kb21FdmVudE5hbWUsbykpKX1zdGF0aWMgcGFyc2VFdmVudE5hbWUodCl7Y29uc3Qgbj10LnRvTG93ZXJDYXNlKCkuc3BsaXQoIi4iKSxlPW4uc2hpZnQoKTtpZigwPT09bi5sZW5ndGh8fCJrZXlkb3duIiE9PWUmJiJrZXl1cCIhPT1lKXJldHVybiBudWxsO2NvbnN0IGE9Y1AuX25vcm1hbGl6ZUtleShuLnBvcCgpKTtsZXQgbz0iIjtpZihhUC5mb3JFYWNoKCh0PT57Y29uc3QgZT1uLmluZGV4T2YodCk7ZT4tMSYmKG4uc3BsaWNlKGUsMSksbys9dCsiLiIpfSkpLG8rPWEsMCE9bi5sZW5ndGh8fDA9PT1hLmxlbmd0aClyZXR1cm4gbnVsbDtjb25zdCByPXt9O3JldHVybiByLmRvbUV2ZW50TmFtZT1lLHIuZnVsbEtleT1vLHJ9c3RhdGljIGdldEV2ZW50RnVsbEtleSh0KXtsZXQgbj0iIixlPShmdW5jdGlvbiBhKHQpe2xldCBuPXQua2V5O2lmKG51bGw9PW4pe2lmKG49dC5rZXlJZGVudGlmaWVyLG51bGw9PW4pcmV0dXJuIlVuaWRlbnRpZmllZCI7bi5zdGFydHNXaXRoKCJVKyIpJiYobj1TdHJpbmcuZnJvbUNoYXJDb2RlKHBhcnNlSW50KG4uc3Vic3RyaW5nKDIpLDE2KSksMz09PXQubG9jYXRpb24mJnJQLmhhc093blByb3BlcnR5KG4pJiYobj1yUFtuXSkpfXJldHVybiBvUFtuXXx8bn0KLyoqCiAgICAgKiBAbGljZW5zZQogICAgICogQ29weXJpZ2h0IEdvb2dsZSBMTEMgQWxsIFJpZ2h0cyBSZXNlcnZlZC4KICAgICAqCiAgICAgKiBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhbiBNSVQtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQogICAgICogZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZSBhdCBodHRwczovL2FuZ3VsYXIuaW8vbGljZW5zZQogICAgICovKSh0KTtyZXR1cm4gZT1lLnRvTG93ZXJDYXNlKCksIiAiPT09ZT9lPSJzcGFjZSI6Ii4iPT09ZSYmKGU9ImRvdCIpLGFQLmZvckVhY2goKGE9PnthIT1lJiYoMCxpUFthXSkodCkmJihuKz1hKyIuIil9KSksbis9ZSxufXN0YXRpYyBldmVudENhbGxiYWNrKHQsbixlKXtyZXR1cm4gYT0+e2NQLmdldEV2ZW50RnVsbEtleShhKT09PXQmJmUucnVuR3VhcmRlZCgoKCk9Pm4oYSkpKX19c3RhdGljIF9ub3JtYWxpemVLZXkodCl7c3dpdGNoKHQpe2Nhc2UiZXNjIjpyZXR1cm4iZXNjYXBlIjtkZWZhdWx0OnJldHVybiB0fX19Y1AuybVmYWM9ZnVuY3Rpb24gdChuKXtyZXR1cm4gbmV3KG58fGNQKShaYSh6QykpfSxjUC7JtXByb3Y9V2Uoe3Rva2VuOmNQLGZhY3Rvcnk6Y1AuybVmYWN9KSxjUC5jdG9yUGFyYW1ldGVycz0oKT0+W3t0eXBlOnZvaWQgMCxkZWNvcmF0b3JzOlt7dHlwZTpJZSxhcmdzOlt6Q119XX1dO2NsYXNzIHNQe31zUC7JtWZhYz1mdW5jdGlvbiB0KG4pe3JldHVybiBuZXcobnx8c1ApfSxzUC7JtXByb3Y9V2Uoe2ZhY3Rvcnk6ZnVuY3Rpb24gdCgpe3JldHVybiBaYShsUCl9LHRva2VuOnNQLHByb3ZpZGVkSW46InJvb3QifSk7Y2xhc3MgbFAgZXh0ZW5kcyBzUHtjb25zdHJ1Y3Rvcih0KXtzdXBlcigpLHRoaXMuX2RvYz10fXNhbml0aXplKHQsbil7aWYobnVsbD09bilyZXR1cm4gbnVsbDtzd2l0Y2godCl7Y2FzZSBaYy5OT05FOnJldHVybiBuO2Nhc2UgWmMuSFRNTDpyZXR1cm4gYmMobiwiSFRNTCIpP3BjKG4pOlljKHRoaXMuX2RvYyxTdHJpbmcobikpO2Nhc2UgWmMuU1RZTEU6cmV0dXJuIGJjKG4sIlN0eWxlIik/cGMobik6bjtjYXNlIFpjLlNDUklQVDppZihiYyhuLCJTY3JpcHQiKSlyZXR1cm4gcGMobik7dGhyb3cgbmV3IEVycm9yKCJ1bnNhZmUgdmFsdWUgdXNlZCBpbiBhIHNjcmlwdCBjb250ZXh0Iik7Y2FzZSBaYy5VUkw6cmV0dXJuIHVjKG4pLGJjKG4sIlVSTCIpP3BjKG4pOnljKFN0cmluZyhuKSk7Y2FzZSBaYy5SRVNPVVJDRV9VUkw6aWYoYmMobiwiUmVzb3VyY2VVUkwiKSlyZXR1cm4gcGMobik7dGhyb3cgbmV3IEVycm9yKCJ1bnNhZmUgdmFsdWUgdXNlZCBpbiBhIHJlc291cmNlIFVSTCBjb250ZXh0IChzZWUgaHR0cDovL2cuY28vbmcvc2VjdXJpdHkjeHNzKSIpO2RlZmF1bHQ6dGhyb3cgbmV3IEVycm9yKGBVbmV4cGVjdGVkIFNlY3VyaXR5Q29udGV4dCAke3R9IChzZWUgaHR0cDovL2cuY28vbmcvc2VjdXJpdHkjeHNzKWApfX1ieXBhc3NTZWN1cml0eVRydXN0SHRtbCh0KXtyZXR1cm4oZnVuY3Rpb24gbih0KXtyZXR1cm4gbmV3IHNjKHQpfSkodCl9YnlwYXNzU2VjdXJpdHlUcnVzdFN0eWxlKHQpe3JldHVybihmdW5jdGlvbiBuKHQpe3JldHVybiBuZXcgbGModCl9KSh0KX1ieXBhc3NTZWN1cml0eVRydXN0U2NyaXB0KHQpe3JldHVybihmdW5jdGlvbiBuKHQpe3JldHVybiBuZXcgbWModCl9KSh0KX1ieXBhc3NTZWN1cml0eVRydXN0VXJsKHQpe3JldHVybihmdW5jdGlvbiBuKHQpe3JldHVybiBuZXcgZGModCl9KSh0KX1ieXBhc3NTZWN1cml0eVRydXN0UmVzb3VyY2VVcmwodCl7cmV0dXJuKGZ1bmN0aW9uIG4odCl7cmV0dXJuIG5ldyBnYyh0KX0pKHQpfX1sUC7JtWZhYz1mdW5jdGlvbiB0KG4pe3JldHVybiBuZXcobnx8bFApKFphKHpDKSl9LGxQLsm1cHJvdj1XZSh7ZmFjdG9yeTpmdW5jdGlvbiB0KCl7cmV0dXJuKGZ1bmN0aW9uIG4odCl7cmV0dXJuIG5ldyBsUCh0LmdldCh6QykpfSkoWmEoTGEpKX0sdG9rZW46bFAscHJvdmlkZWRJbjoicm9vdCJ9KSxsUC5jdG9yUGFyYW1ldGVycz0oKT0+W3t0eXBlOnZvaWQgMCxkZWNvcmF0b3JzOlt7dHlwZTpJZSxhcmdzOlt6Q119XX1dCi8qKgogICAgICogQGxpY2Vuc2UKICAgICAqIENvcHlyaWdodCBHb29nbGUgTExDIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCiAgICAgKgogICAgICogVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYW4gTUlULXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKICAgICAqIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUgYXQgaHR0cHM6Ly9hbmd1bGFyLmlvL2xpY2Vuc2UKICAgICAqLztjb25zdCBtUD1sQyhNQywiYnJvd3NlciIsW3twcm92aWRlOlRfLHVzZVZhbHVlOiJicm93c2VyIn0se3Byb3ZpZGU6Ul8sdXNlVmFsdWU6ZnVuY3Rpb24gZFAoKXt2Ty5tYWtlQ3VycmVudCgpLFJPLmluaXQoKX0sbXVsdGk6ITB9LHtwcm92aWRlOnpDLHVzZUZhY3Rvcnk6ZnVuY3Rpb24gZ1AoKXtyZXR1cm4oZnVuY3Rpb24gdChuKXtNcj1ufSkoZG9jdW1lbnQpLGRvY3VtZW50fSxkZXBzOltdfV0pLHBQPVtbXSx7cHJvdmlkZTpsZCx1c2VWYWx1ZToicm9vdCJ9LHtwcm92aWRlOm9jLHVzZUZhY3Rvcnk6ZnVuY3Rpb24gYlAoKXtyZXR1cm4gbmV3IG9jfSxkZXBzOltdfSx7cHJvdmlkZTpUTyx1c2VDbGFzczpYTyxtdWx0aTohMCxkZXBzOlt6QyxKXyxUX119LHtwcm92aWRlOlRPLHVzZUNsYXNzOmNQLG11bHRpOiEwLGRlcHM6W3pDXX0sW10se3Byb3ZpZGU6VU8sdXNlQ2xhc3M6VU8sZGVwczpbRE8sRk8sU19dfSx7cHJvdmlkZTp2dSx1c2VFeGlzdGluZzpVT30se3Byb3ZpZGU6Tk8sdXNlRXhpc3Rpbmc6Rk99LHtwcm92aWRlOkZPLHVzZUNsYXNzOkZPLGRlcHM6W3pDXX0se3Byb3ZpZGU6b0MsdXNlQ2xhc3M6b0MsZGVwczpbSl9dfSx7cHJvdmlkZTpETyx1c2VDbGFzczpETyxkZXBzOltUTyxKX119LFtdXTtjbGFzcyB1UHtjb25zdHJ1Y3Rvcih0KXtpZih0KXRocm93IG5ldyBFcnJvcigiQnJvd3Nlck1vZHVsZSBoYXMgYWxyZWFkeSBiZWVuIGxvYWRlZC4gSWYgeW91IG5lZWQgYWNjZXNzIHRvIGNvbW1vbiBkaXJlY3RpdmVzIHN1Y2ggYXMgTmdJZiBhbmQgTmdGb3IgZnJvbSBhIGxhenkgbG9hZGVkIG1vZHVsZSwgaW1wb3J0IENvbW1vbk1vZHVsZSBpbnN0ZWFkLiIpfXN0YXRpYyB3aXRoU2VydmVyVHJhbnNpdGlvbih0KXtyZXR1cm57bmdNb2R1bGU6dVAscHJvdmlkZXJzOlt7cHJvdmlkZTpTXyx1c2VWYWx1ZTp0LmFwcElkfSx7cHJvdmlkZTpFTyx1c2VFeGlzdGluZzpTX30sQU9dfX19dVAuybVtb2Q9eG8oe3R5cGU6dVB9KSx1UC7JtWluaj1HZSh7ZmFjdG9yeTpmdW5jdGlvbiB0KG4pe3JldHVybiBuZXcobnx8dVApKFphKHVQLDEyKSl9LHByb3ZpZGVyczpwUCxpbXBvcnRzOltQTyx2Q119KSx1UC5jdG9yUGFyYW1ldGVycz0oKT0+W3t0eXBlOnVQLGRlY29yYXRvcnM6W3t0eXBlOk5lfSx7dHlwZTpMZX0se3R5cGU6SWUsYXJnczpbdVBdfV19XSwoInVuZGVmaW5lZCI9PXR5cGVvZiBuZ0ppdE1vZGV8fG5nSml0TW9kZSkmJnlvKHVQLHtleHBvcnRzOmZ1bmN0aW9uKCl7cmV0dXJuW1BPLHZDXX19KTtjbGFzcyBmUHtjb25zdHJ1Y3Rvcih0KXt0aGlzLl9kb2M9dCx0aGlzLl9kb209QUMoKX1hZGRUYWcodCxuPSExKXtyZXR1cm4gdD90aGlzLl9nZXRPckNyZWF0ZUVsZW1lbnQodCxuKTpudWxsfWFkZFRhZ3ModCxuPSExKXtyZXR1cm4gdD90LnJlZHVjZSgoKHQsZSk9PihlJiZ0LnB1c2godGhpcy5fZ2V0T3JDcmVhdGVFbGVtZW50KGUsbikpLHQpKSxbXSk6W119Z2V0VGFnKHQpe3JldHVybiB0JiZ0aGlzLl9kb2MucXVlcnlTZWxlY3RvcihgbWV0YVske3R9XWApfHxudWxsfWdldFRhZ3ModCl7aWYoIXQpcmV0dXJuW107Y29uc3Qgbj10aGlzLl9kb2MucXVlcnlTZWxlY3RvckFsbChgbWV0YVske3R9XWApO3JldHVybiBuP1tdLnNsaWNlLmNhbGwobik6W119dXBkYXRlVGFnKHQsbil7aWYoIXQpcmV0dXJuIG51bGw7bj1ufHx0aGlzLl9wYXJzZVNlbGVjdG9yKHQpO2NvbnN0IGU9dGhpcy5nZXRUYWcobik7cmV0dXJuIGU/dGhpcy5fc2V0TWV0YUVsZW1lbnRBdHRyaWJ1dGVzKHQsZSk6dGhpcy5fZ2V0T3JDcmVhdGVFbGVtZW50KHQsITApfXJlbW92ZVRhZyh0KXt0aGlzLnJlbW92ZVRhZ0VsZW1lbnQodGhpcy5nZXRUYWcodCkpfXJlbW92ZVRhZ0VsZW1lbnQodCl7dCYmdGhpcy5fZG9tLnJlbW92ZSh0KX1fZ2V0T3JDcmVhdGVFbGVtZW50KHQsbj0hMSl7aWYoIW4pe2NvbnN0IG49dGhpcy5fcGFyc2VTZWxlY3Rvcih0KSxlPXRoaXMuZ2V0VGFnKG4pO2lmKGUmJnRoaXMuX2NvbnRhaW5zQXR0cmlidXRlcyh0LGUpKXJldHVybiBlfWNvbnN0IGU9dGhpcy5fZG9tLmNyZWF0ZUVsZW1lbnQoIm1ldGEiKTtyZXR1cm4gdGhpcy5fc2V0TWV0YUVsZW1lbnRBdHRyaWJ1dGVzKHQsZSksdGhpcy5fZG9jLmdldEVsZW1lbnRzQnlUYWdOYW1lKCJoZWFkIilbMF0uYXBwZW5kQ2hpbGQoZSksZX1fc2V0TWV0YUVsZW1lbnRBdHRyaWJ1dGVzKHQsbil7cmV0dXJuIE9iamVjdC5rZXlzKHQpLmZvckVhY2goKGU9Pm4uc2V0QXR0cmlidXRlKGUsdFtlXSkpKSxufV9wYXJzZVNlbGVjdG9yKHQpe2NvbnN0IG49dC5uYW1lPyJuYW1lIjoicHJvcGVydHkiO3JldHVybmAke259PSIke3Rbbl19ImB9X2NvbnRhaW5zQXR0cmlidXRlcyh0LG4pe3JldHVybiBPYmplY3Qua2V5cyh0KS5ldmVyeSgoZT0+bi5nZXRBdHRyaWJ1dGUoZSk9PT10W2VdKSl9fWZQLsm1ZmFjPWZ1bmN0aW9uIHQobil7cmV0dXJuIG5ldyhufHxmUCkoWmEoekMpKX0sZlAuybVwcm92PVdlKHtmYWN0b3J5OgovKioKICAgICAqIEBsaWNlbnNlCiAgICAgKiBDb3B5cmlnaHQgR29vZ2xlIExMQyBBbGwgUmlnaHRzIFJlc2VydmVkLgogICAgICoKICAgICAqIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGFuIE1JVC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCiAgICAgKiBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlIGF0IGh0dHBzOi8vYW5ndWxhci5pby9saWNlbnNlCiAgICAgKi8KZnVuY3Rpb24gaFAoKXtyZXR1cm4gbmV3IGZQKFphKHpDKSl9LHRva2VuOmZQLHByb3ZpZGVkSW46InJvb3QifSksZlAuY3RvclBhcmFtZXRlcnM9KCk9Plt7dHlwZTp2b2lkIDAsZGVjb3JhdG9yczpbe3R5cGU6SWUsYXJnczpbekNdfV19XQovKioKICAgICAqIEBsaWNlbnNlCiAgICAgKiBDb3B5cmlnaHQgR29vZ2xlIExMQyBBbGwgUmlnaHRzIFJlc2VydmVkLgogICAgICoKICAgICAqIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGFuIE1JVC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCiAgICAgKiBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlIGF0IGh0dHBzOi8vYW5ndWxhci5pby9saWNlbnNlCiAgICAgKi87Y2xhc3MgX1B7Y29uc3RydWN0b3IodCl7dGhpcy5fZG9jPXR9Z2V0VGl0bGUoKXtyZXR1cm4gdGhpcy5fZG9jLnRpdGxlfXNldFRpdGxlKHQpe3RoaXMuX2RvYy50aXRsZT10fHwiIn19X1AuybVmYWM9ZnVuY3Rpb24gdChuKXtyZXR1cm4gbmV3KG58fF9QKShaYSh6QykpfSxfUC7JtXByb3Y9V2Uoe2ZhY3Rvcnk6ZnVuY3Rpb24gQ1AoKXtyZXR1cm4gbmV3IF9QKFphKHpDKSl9LHRva2VuOl9QLHByb3ZpZGVkSW46InJvb3QifSksX1AuY3RvclBhcmFtZXRlcnM9KCk9Plt7dHlwZTp2b2lkIDAsZGVjb3JhdG9yczpbe3R5cGU6SWUsYXJnczpbekNdfV19XTtjbGFzcyBNUHtjb25zdHJ1Y3Rvcigpe3RoaXMuc3RvcmU9e30sdGhpcy5vblNlcmlhbGl6ZUNhbGxiYWNrcz17fX1zdGF0aWMgaW5pdCh0KXtjb25zdCBuPW5ldyBNUDtyZXR1cm4gbi5zdG9yZT10LG59Z2V0KHQsbil7cmV0dXJuIHZvaWQgMCE9PXRoaXMuc3RvcmVbdF0/dGhpcy5zdG9yZVt0XTpufXNldCh0LG4pe3RoaXMuc3RvcmVbdF09bn1yZW1vdmUodCl7ZGVsZXRlIHRoaXMuc3RvcmVbdF19aGFzS2V5KHQpe3JldHVybiB0aGlzLnN0b3JlLmhhc093blByb3BlcnR5KHQpfW9uU2VyaWFsaXplKHQsbil7dGhpcy5vblNlcmlhbGl6ZUNhbGxiYWNrc1t0XT1ufXRvSnNvbigpe2Zvcihjb25zdCB0IGluIHRoaXMub25TZXJpYWxpemVDYWxsYmFja3MpaWYodGhpcy5vblNlcmlhbGl6ZUNhbGxiYWNrcy5oYXNPd25Qcm9wZXJ0eSh0KSl0cnl7dGhpcy5zdG9yZVt0XT10aGlzLm9uU2VyaWFsaXplQ2FsbGJhY2tzW3RdKCl9Y2F0Y2godCl7Y29uc29sZS53YXJuKCJFeGNlcHRpb24gaW4gb25TZXJpYWxpemUgY2FsbGJhY2s6ICIsdCl9cmV0dXJuIEpTT04uc3RyaW5naWZ5KHRoaXMuc3RvcmUpfX1NUC7JtWZhYz1mdW5jdGlvbiB0KG4pe3JldHVybiBuZXcobnx8TVApfSxNUC7JtXByb3Y9V2Uoe3Rva2VuOk1QLGZhY3Rvcnk6TVAuybVmYWN9KTtjbGFzcyBPUHt9T1AuybVtb2Q9eG8oe3R5cGU6T1B9KSxPUC7JtWluaj1HZSh7ZmFjdG9yeTpmdW5jdGlvbiB0KG4pe3JldHVybiBuZXcobnx8T1ApfSxwcm92aWRlcnM6W3twcm92aWRlOk1QLHVzZUZhY3Rvcnk6ZnVuY3Rpb24gUFAodCxuKXtjb25zdCBlPXQuZ2V0RWxlbWVudEJ5SWQobisiLXN0YXRlIik7bGV0IGE9e307aWYoZSYmZS50ZXh0Q29udGVudCl0cnl7YT1KU09OLnBhcnNlKChmdW5jdGlvbiBvKHQpe2NvbnN0IG49eyImYTsiOiImIiwiJnE7IjonIicsIiZzOyI6IiciLCImbDsiOiI8IiwiJmc7IjoiPiJ9O3JldHVybiB0LnJlcGxhY2UoLyZbXjtdKzsvZywodD0+blt0XSkpfSkoZS50ZXh0Q29udGVudCkpfWNhdGNoKHQpe2NvbnNvbGUud2FybigiRXhjZXB0aW9uIHdoaWxlIHJlc3RvcmluZyBUcmFuc2ZlclN0YXRlIGZvciBhcHAgIituLHQpfXJldHVybiBNUC5pbml0KGEpfSxkZXBzOlt6QyxTX119XX0pLAovKioKICAgICAqIEBsaWNlbnNlCiAgICAgKiBDb3B5cmlnaHQgR29vZ2xlIExMQyBBbGwgUmlnaHRzIFJlc2VydmVkLgogICAgICoKICAgICAqIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGFuIE1JVC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCiAgICAgKiBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlIGF0IGh0dHBzOi8vYW5ndWxhci5pby9saWNlbnNlCiAgICAgKi8KLyoqCiAgICAgKiBAbGljZW5zZQogICAgICogQ29weXJpZ2h0IEdvb2dsZSBMTEMgQWxsIFJpZ2h0cyBSZXNlcnZlZC4KICAgICAqCiAgICAgKiBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhbiBNSVQtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQogICAgICogZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZSBhdCBodHRwczovL2FuZ3VsYXIuaW8vbGljZW5zZQogICAgICovCm5ldyBSdSgiMTAuMi40Iik7dmFyIHhQPSJ1bmRlZmluZWQiIT10eXBlb2YgZ2xvYmFsVGhpcz9nbG9iYWxUaGlzOiJ1bmRlZmluZWQiIT10eXBlb2Ygd2luZG93P3dpbmRvdzoidW5kZWZpbmVkIiE9dHlwZW9mIGdsb2JhbD9nbG9iYWw6InVuZGVmaW5lZCIhPXR5cGVvZiBzZWxmP3NlbGY6e307ZnVuY3Rpb24geVAodCxuLGUpe3JldHVybiB0KGU9e3BhdGg6bixleHBvcnRzOnt9LHJlcXVpcmU6ZnVuY3Rpb24odCxuKXtyZXR1cm4oZnVuY3Rpb24gZSgpe3Rocm93IG5ldyBFcnJvcigiRHluYW1pYyByZXF1aXJlcyBhcmUgbm90IGN1cnJlbnRseSBzdXBwb3J0ZWQgYnkgQHJvbGx1cC9wbHVnaW4tY29tbW9uanMiKX0KLyoqCiAgICAqIEBsaWNlbnNlIEFuZ3VsYXIgdjkuMS4wLW5leHQuNCs2MS5zaGEtZTU1MjU5MS53aXRoLWxvY2FsLWNoYW5nZXMKICAgICogKGMpIDIwMTAtMjAyMCBHb29nbGUgTExDLiBodHRwczovL2FuZ3VsYXIuaW8vCiAgICAqIExpY2Vuc2U6IE1JVAogICAgKi8pKCl9fSxlLmV4cG9ydHMpLGUuZXhwb3J0c31mdW5jdGlvbiBrUCh0KXtpZih0Ll9fZXNNb2R1bGUpcmV0dXJuIHQ7dmFyIG49T2JqZWN0LmRlZmluZVByb3BlcnR5KHt9LCJfX2VzTW9kdWxlIix7dmFsdWU6ITB9KTtyZXR1cm4gT2JqZWN0LmtleXModCkuZm9yRWFjaCgoZnVuY3Rpb24oZSl7dmFyIGE9T2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcih0LGUpO09iamVjdC5kZWZpbmVQcm9wZXJ0eShuLGUsYS5nZXQ/YTp7ZW51bWVyYWJsZTohMCxnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gdFtlXX19KX0pKSxufSEoZnVuY3Rpb24oKXsKLyoqCiAgICAgICAgICogQGxpY2Vuc2UKICAgICAgICAgKiBDb3B5cmlnaHQgR29vZ2xlIEluYy4gQWxsIFJpZ2h0cyBSZXNlcnZlZC4KICAgICAgICAgKgogICAgICAgICAqIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGFuIE1JVC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCiAgICAgICAgICogZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZSBhdCBodHRwczovL2FuZ3VsYXIuaW8vbGljZW5zZQogICAgICAgICAqLwooZnVuY3Rpb24odCl7dmFyIG49dC5wZXJmb3JtYW5jZTtmdW5jdGlvbiBlKHQpe24mJm4ubWFyayYmbi5tYXJrKHQpfWZ1bmN0aW9uIGEodCxlKXtuJiZuLm1lYXN1cmUmJm4ubWVhc3VyZSh0LGUpfWUoIlpvbmUiKTt2YXIgbz10Ll9fWm9uZV9zeW1ib2xfcHJlZml4fHwiX196b25lX3N5bWJvbF9fIjtmdW5jdGlvbiByKHQpe3JldHVybiBvK3R9dmFyIGk9ITA9PT10W3IoImZvcmNlRHVwbGljYXRlWm9uZUNoZWNrIildO2lmKHQuWm9uZSl7aWYoaXx8ImZ1bmN0aW9uIiE9dHlwZW9mIHQuWm9uZS5fX3N5bWJvbF9fKXRocm93IG5ldyBFcnJvcigiWm9uZSBhbHJlYWR5IGxvYWRlZC4iKTtyZXR1cm4gdC5ab25lfXZhciBjPShmdW5jdGlvbigpe2Z1bmN0aW9uIG4odCxuKXt0aGlzLl9wYXJlbnQ9dCx0aGlzLl9uYW1lPW4/bi5uYW1lfHwidW5uYW1lZCI6Ijxyb290PiIsdGhpcy5fcHJvcGVydGllcz1uJiZuLnByb3BlcnRpZXN8fHt9LHRoaXMuX3pvbmVEZWxlZ2F0ZT1uZXcgbSh0aGlzLHRoaXMuX3BhcmVudCYmdGhpcy5fcGFyZW50Ll96b25lRGVsZWdhdGUsbil9cmV0dXJuIG4uYXNzZXJ0Wm9uZVBhdGNoZWQ9ZnVuY3Rpb24oKXtpZih0LlByb21pc2UhPT1FLlpvbmVBd2FyZVByb21pc2UpdGhyb3cgbmV3IEVycm9yKCJab25lLmpzIGhhcyBkZXRlY3RlZCB0aGF0IFpvbmVBd2FyZVByb21pc2UgYCh3aW5kb3d8Z2xvYmFsKS5Qcm9taXNlYCBoYXMgYmVlbiBvdmVyd3JpdHRlbi5cbk1vc3QgbGlrZWx5IGNhdXNlIGlzIHRoYXQgYSBQcm9taXNlIHBvbHlmaWxsIGhhcyBiZWVuIGxvYWRlZCBhZnRlciBab25lLmpzIChQb2x5ZmlsbGluZyBQcm9taXNlIGFwaSBpcyBub3QgbmVjZXNzYXJ5IHdoZW4gem9uZS5qcyBpcyBsb2FkZWQuIElmIHlvdSBtdXN0IGxvYWQgb25lLCBkbyBzbyBiZWZvcmUgbG9hZGluZyB6b25lLmpzLikiKX0sT2JqZWN0LmRlZmluZVByb3BlcnR5KG4sInJvb3QiLHtnZXQ6ZnVuY3Rpb24oKXtmb3IodmFyIHQ9bi5jdXJyZW50O3QucGFyZW50Oyl0PXQucGFyZW50O3JldHVybiB0fSxlbnVtZXJhYmxlOiEwLGNvbmZpZ3VyYWJsZTohMH0pLE9iamVjdC5kZWZpbmVQcm9wZXJ0eShuLCJjdXJyZW50Iix7Z2V0OmZ1bmN0aW9uKCl7cmV0dXJuIHouem9uZX0sZW51bWVyYWJsZTohMCxjb25maWd1cmFibGU6ITB9KSxPYmplY3QuZGVmaW5lUHJvcGVydHkobiwiY3VycmVudFRhc2siLHtnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gUn0sZW51bWVyYWJsZTohMCxjb25maWd1cmFibGU6ITB9KSxuLl9fbG9hZF9wYXRjaD1mdW5jdGlvbihvLHIpe2lmKEUuaGFzT3duUHJvcGVydHkobykpe2lmKGkpdGhyb3cgRXJyb3IoIkFscmVhZHkgbG9hZGVkIHBhdGNoOiAiK28pfWVsc2UgaWYoIXRbIl9fWm9uZV9kaXNhYmxlXyIrb10pe3ZhciBjPSJab25lOiIrbztlKGMpLEVbb109cih0LG4sQSksYShjLGMpfX0sT2JqZWN0LmRlZmluZVByb3BlcnR5KG4ucHJvdG90eXBlLCJwYXJlbnQiLHtnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5fcGFyZW50fSxlbnVtZXJhYmxlOiEwLGNvbmZpZ3VyYWJsZTohMH0pLE9iamVjdC5kZWZpbmVQcm9wZXJ0eShuLnByb3RvdHlwZSwibmFtZSIse2dldDpmdW5jdGlvbigpe3JldHVybiB0aGlzLl9uYW1lfSxlbnVtZXJhYmxlOiEwLGNvbmZpZ3VyYWJsZTohMH0pLG4ucHJvdG90eXBlLmdldD1mdW5jdGlvbih0KXt2YXIgbj10aGlzLmdldFpvbmVXaXRoKHQpO2lmKG4pcmV0dXJuIG4uX3Byb3BlcnRpZXNbdF19LG4ucHJvdG90eXBlLmdldFpvbmVXaXRoPWZ1bmN0aW9uKHQpe2Zvcih2YXIgbj10aGlzO247KXtpZihuLl9wcm9wZXJ0aWVzLmhhc093blByb3BlcnR5KHQpKXJldHVybiBuO249bi5fcGFyZW50fXJldHVybiBudWxsfSxuLnByb3RvdHlwZS5mb3JrPWZ1bmN0aW9uKHQpe2lmKCF0KXRocm93IG5ldyBFcnJvcigiWm9uZVNwZWMgcmVxdWlyZWQhIik7cmV0dXJuIHRoaXMuX3pvbmVEZWxlZ2F0ZS5mb3JrKHRoaXMsdCl9LG4ucHJvdG90eXBlLndyYXA9ZnVuY3Rpb24odCxuKXtpZigiZnVuY3Rpb24iIT10eXBlb2YgdCl0aHJvdyBuZXcgRXJyb3IoIkV4cGVjdGluZyBmdW5jdGlvbiBnb3Q6ICIrdCk7dmFyIGU9dGhpcy5fem9uZURlbGVnYXRlLmludGVyY2VwdCh0aGlzLHQsbiksYT10aGlzO3JldHVybiBmdW5jdGlvbigpe3JldHVybiBhLnJ1bkd1YXJkZWQoZSx0aGlzLGFyZ3VtZW50cyxuKX19LG4ucHJvdG90eXBlLnJ1bj1mdW5jdGlvbih0LG4sZSxhKXt6PXtwYXJlbnQ6eix6b25lOnRoaXN9O3RyeXtyZXR1cm4gdGhpcy5fem9uZURlbGVnYXRlLmludm9rZSh0aGlzLHQsbixlLGEpfWZpbmFsbHl7ej16LnBhcmVudH19LG4ucHJvdG90eXBlLnJ1bkd1YXJkZWQ9ZnVuY3Rpb24odCxuLGUsYSl7dm9pZCAwPT09biYmKG49bnVsbCksej17cGFyZW50Onosem9uZTp0aGlzfTt0cnl7dHJ5e3JldHVybiB0aGlzLl96b25lRGVsZWdhdGUuaW52b2tlKHRoaXMsdCxuLGUsYSl9Y2F0Y2godCl7aWYodGhpcy5fem9uZURlbGVnYXRlLmhhbmRsZUVycm9yKHRoaXMsdCkpdGhyb3cgdH19ZmluYWxseXt6PXoucGFyZW50fX0sbi5wcm90b3R5cGUucnVuVGFzaz1mdW5jdGlvbih0LG4sZSl7aWYodC56b25lIT10aGlzKXRocm93IG5ldyBFcnJvcigiQSB0YXNrIGNhbiBvbmx5IGJlIHJ1biBpbiB0aGUgem9uZSBvZiBjcmVhdGlvbiEgKENyZWF0aW9uOiAiKyh0LnpvbmV8fEMpLm5hbWUrIjsgRXhlY3V0aW9uOiAiK3RoaXMubmFtZSsiKSIpO2lmKHQuc3RhdGUhPT1NfHx0LnR5cGUhPT1TJiZ0LnR5cGUhPT13KXt2YXIgYT10LnN0YXRlIT14O2EmJnQuX3RyYW5zaXRpb25Ubyh4LFApLHQucnVuQ291bnQrKzt2YXIgbz1SO1I9dCx6PXtwYXJlbnQ6eix6b25lOnRoaXN9O3RyeXt0LnR5cGU9PXcmJnQuZGF0YSYmIXQuZGF0YS5pc1BlcmlvZGljJiYodC5jYW5jZWxGbj12b2lkIDApO3RyeXtyZXR1cm4gdGhpcy5fem9uZURlbGVnYXRlLmludm9rZVRhc2sodGhpcyx0LG4sZSl9Y2F0Y2godCl7aWYodGhpcy5fem9uZURlbGVnYXRlLmhhbmRsZUVycm9yKHRoaXMsdCkpdGhyb3cgdH19ZmluYWxseXt0LnN0YXRlIT09TSYmdC5zdGF0ZSE9PWsmJih0LnR5cGU9PVN8fHQuZGF0YSYmdC5kYXRhLmlzUGVyaW9kaWM/YSYmdC5fdHJhbnNpdGlvblRvKFAseCk6KHQucnVuQ291bnQ9MCx0aGlzLl91cGRhdGVUYXNrQ291bnQodCwtMSksYSYmdC5fdHJhbnNpdGlvblRvKE0seCxNKSkpLHo9ei5wYXJlbnQsUj1vfX19LG4ucHJvdG90eXBlLnNjaGVkdWxlVGFzaz1mdW5jdGlvbih0KXtpZih0LnpvbmUmJnQuem9uZSE9PXRoaXMpZm9yKHZhciBuPXRoaXM7bjspe2lmKG49PT10LnpvbmUpdGhyb3cgRXJyb3IoImNhbiBub3QgcmVzY2hlZHVsZSB0YXNrIHRvICIrdGhpcy5uYW1lKyIgd2hpY2ggaXMgZGVzY2VuZGFudHMgb2YgdGhlIG9yaWdpbmFsIHpvbmUgIit0LnpvbmUubmFtZSk7bj1uLnBhcmVudH10Ll90cmFuc2l0aW9uVG8oTyxNKTt2YXIgZT1bXTt0Ll96b25lRGVsZWdhdGVzPWUsdC5fem9uZT10aGlzO3RyeXt0PXRoaXMuX3pvbmVEZWxlZ2F0ZS5zY2hlZHVsZVRhc2sodGhpcyx0KX1jYXRjaChuKXt0aHJvdyB0Ll90cmFuc2l0aW9uVG8oayxPLE0pLHRoaXMuX3pvbmVEZWxlZ2F0ZS5oYW5kbGVFcnJvcih0aGlzLG4pLG59cmV0dXJuIHQuX3pvbmVEZWxlZ2F0ZXM9PT1lJiZ0aGlzLl91cGRhdGVUYXNrQ291bnQodCwxKSx0LnN0YXRlPT1PJiZ0Ll90cmFuc2l0aW9uVG8oUCxPKSx0fSxuLnByb3RvdHlwZS5zY2hlZHVsZU1pY3JvVGFzaz1mdW5jdGlvbih0LG4sZSxhKXtyZXR1cm4gdGhpcy5zY2hlZHVsZVRhc2sobmV3IGQodix0LG4sZSxhLHZvaWQgMCkpfSxuLnByb3RvdHlwZS5zY2hlZHVsZU1hY3JvVGFzaz1mdW5jdGlvbih0LG4sZSxhLG8pe3JldHVybiB0aGlzLnNjaGVkdWxlVGFzayhuZXcgZCh3LHQsbixlLGEsbykpfSxuLnByb3RvdHlwZS5zY2hlZHVsZUV2ZW50VGFzaz1mdW5jdGlvbih0LG4sZSxhLG8pe3JldHVybiB0aGlzLnNjaGVkdWxlVGFzayhuZXcgZChTLHQsbixlLGEsbykpfSxuLnByb3RvdHlwZS5jYW5jZWxUYXNrPWZ1bmN0aW9uKHQpe2lmKHQuem9uZSE9dGhpcyl0aHJvdyBuZXcgRXJyb3IoIkEgdGFzayBjYW4gb25seSBiZSBjYW5jZWxsZWQgaW4gdGhlIHpvbmUgb2YgY3JlYXRpb24hIChDcmVhdGlvbjogIisodC56b25lfHxDKS5uYW1lKyI7IEV4ZWN1dGlvbjogIit0aGlzLm5hbWUrIikiKTt0Ll90cmFuc2l0aW9uVG8oeSxQLHgpO3RyeXt0aGlzLl96b25lRGVsZWdhdGUuY2FuY2VsVGFzayh0aGlzLHQpfWNhdGNoKG4pe3Rocm93IHQuX3RyYW5zaXRpb25UbyhrLHkpLHRoaXMuX3pvbmVEZWxlZ2F0ZS5oYW5kbGVFcnJvcih0aGlzLG4pLG59cmV0dXJuIHRoaXMuX3VwZGF0ZVRhc2tDb3VudCh0LC0xKSx0Ll90cmFuc2l0aW9uVG8oTSx5KSx0LnJ1bkNvdW50PTAsdH0sbi5wcm90b3R5cGUuX3VwZGF0ZVRhc2tDb3VudD1mdW5jdGlvbih0LG4pe3ZhciBlPXQuX3pvbmVEZWxlZ2F0ZXM7LTE9PW4mJih0Ll96b25lRGVsZWdhdGVzPW51bGwpO2Zvcih2YXIgYT0wO2E8ZS5sZW5ndGg7YSsrKWVbYV0uX3VwZGF0ZVRhc2tDb3VudCh0LnR5cGUsbil9LG59KSgpO2MuX19zeW1ib2xfXz1yO3ZhciBzLGw9e25hbWU6IiIsb25IYXNUYXNrOmZ1bmN0aW9uKHQsbixlLGEpe3JldHVybiB0Lmhhc1Rhc2soZSxhKX0sb25TY2hlZHVsZVRhc2s6ZnVuY3Rpb24odCxuLGUsYSl7cmV0dXJuIHQuc2NoZWR1bGVUYXNrKGUsYSl9LG9uSW52b2tlVGFzazpmdW5jdGlvbih0LG4sZSxhLG8scil7cmV0dXJuIHQuaW52b2tlVGFzayhlLGEsbyxyKX0sb25DYW5jZWxUYXNrOmZ1bmN0aW9uKHQsbixlLGEpe3JldHVybiB0LmNhbmNlbFRhc2soZSxhKX19LG09KGZ1bmN0aW9uKCl7ZnVuY3Rpb24gdCh0LG4sZSl7dGhpcy5fdGFza0NvdW50cz17bWljcm9UYXNrOjAsbWFjcm9UYXNrOjAsZXZlbnRUYXNrOjB9LHRoaXMuem9uZT10LHRoaXMuX3BhcmVudERlbGVnYXRlPW4sdGhpcy5fZm9ya1pTPWUmJihlJiZlLm9uRm9yaz9lOm4uX2ZvcmtaUyksdGhpcy5fZm9ya0RsZ3Q9ZSYmKGUub25Gb3JrP246bi5fZm9ya0RsZ3QpLHRoaXMuX2ZvcmtDdXJyWm9uZT1lJiYoZS5vbkZvcms/dGhpcy56b25lOm4uX2ZvcmtDdXJyWm9uZSksdGhpcy5faW50ZXJjZXB0WlM9ZSYmKGUub25JbnRlcmNlcHQ/ZTpuLl9pbnRlcmNlcHRaUyksdGhpcy5faW50ZXJjZXB0RGxndD1lJiYoZS5vbkludGVyY2VwdD9uOm4uX2ludGVyY2VwdERsZ3QpLHRoaXMuX2ludGVyY2VwdEN1cnJab25lPWUmJihlLm9uSW50ZXJjZXB0P3RoaXMuem9uZTpuLl9pbnRlcmNlcHRDdXJyWm9uZSksdGhpcy5faW52b2tlWlM9ZSYmKGUub25JbnZva2U/ZTpuLl9pbnZva2VaUyksdGhpcy5faW52b2tlRGxndD1lJiYoZS5vbkludm9rZT9uOm4uX2ludm9rZURsZ3QpLHRoaXMuX2ludm9rZUN1cnJab25lPWUmJihlLm9uSW52b2tlP3RoaXMuem9uZTpuLl9pbnZva2VDdXJyWm9uZSksdGhpcy5faGFuZGxlRXJyb3JaUz1lJiYoZS5vbkhhbmRsZUVycm9yP2U6bi5faGFuZGxlRXJyb3JaUyksdGhpcy5faGFuZGxlRXJyb3JEbGd0PWUmJihlLm9uSGFuZGxlRXJyb3I/bjpuLl9oYW5kbGVFcnJvckRsZ3QpLHRoaXMuX2hhbmRsZUVycm9yQ3VyclpvbmU9ZSYmKGUub25IYW5kbGVFcnJvcj90aGlzLnpvbmU6bi5faGFuZGxlRXJyb3JDdXJyWm9uZSksdGhpcy5fc2NoZWR1bGVUYXNrWlM9ZSYmKGUub25TY2hlZHVsZVRhc2s/ZTpuLl9zY2hlZHVsZVRhc2taUyksdGhpcy5fc2NoZWR1bGVUYXNrRGxndD1lJiYoZS5vblNjaGVkdWxlVGFzaz9uOm4uX3NjaGVkdWxlVGFza0RsZ3QpLHRoaXMuX3NjaGVkdWxlVGFza0N1cnJab25lPWUmJihlLm9uU2NoZWR1bGVUYXNrP3RoaXMuem9uZTpuLl9zY2hlZHVsZVRhc2tDdXJyWm9uZSksdGhpcy5faW52b2tlVGFza1pTPWUmJihlLm9uSW52b2tlVGFzaz9lOm4uX2ludm9rZVRhc2taUyksdGhpcy5faW52b2tlVGFza0RsZ3Q9ZSYmKGUub25JbnZva2VUYXNrP246bi5faW52b2tlVGFza0RsZ3QpLHRoaXMuX2ludm9rZVRhc2tDdXJyWm9uZT1lJiYoZS5vbkludm9rZVRhc2s/dGhpcy56b25lOm4uX2ludm9rZVRhc2tDdXJyWm9uZSksdGhpcy5fY2FuY2VsVGFza1pTPWUmJihlLm9uQ2FuY2VsVGFzaz9lOm4uX2NhbmNlbFRhc2taUyksdGhpcy5fY2FuY2VsVGFza0RsZ3Q9ZSYmKGUub25DYW5jZWxUYXNrP246bi5fY2FuY2VsVGFza0RsZ3QpLHRoaXMuX2NhbmNlbFRhc2tDdXJyWm9uZT1lJiYoZS5vbkNhbmNlbFRhc2s/dGhpcy56b25lOm4uX2NhbmNlbFRhc2tDdXJyWm9uZSksdGhpcy5faGFzVGFza1pTPW51bGwsdGhpcy5faGFzVGFza0RsZ3Q9bnVsbCx0aGlzLl9oYXNUYXNrRGxndE93bmVyPW51bGwsdGhpcy5faGFzVGFza0N1cnJab25lPW51bGw7dmFyIGE9ZSYmZS5vbkhhc1Rhc2s7KGF8fG4mJm4uX2hhc1Rhc2taUykmJih0aGlzLl9oYXNUYXNrWlM9YT9lOmwsdGhpcy5faGFzVGFza0RsZ3Q9bix0aGlzLl9oYXNUYXNrRGxndE93bmVyPXRoaXMsdGhpcy5faGFzVGFza0N1cnJab25lPXQsZS5vblNjaGVkdWxlVGFza3x8KHRoaXMuX3NjaGVkdWxlVGFza1pTPWwsdGhpcy5fc2NoZWR1bGVUYXNrRGxndD1uLHRoaXMuX3NjaGVkdWxlVGFza0N1cnJab25lPXRoaXMuem9uZSksZS5vbkludm9rZVRhc2t8fCh0aGlzLl9pbnZva2VUYXNrWlM9bCx0aGlzLl9pbnZva2VUYXNrRGxndD1uLHRoaXMuX2ludm9rZVRhc2tDdXJyWm9uZT10aGlzLnpvbmUpLGUub25DYW5jZWxUYXNrfHwodGhpcy5fY2FuY2VsVGFza1pTPWwsdGhpcy5fY2FuY2VsVGFza0RsZ3Q9bix0aGlzLl9jYW5jZWxUYXNrQ3VyclpvbmU9dGhpcy56b25lKSl9cmV0dXJuIHQucHJvdG90eXBlLmZvcms9ZnVuY3Rpb24odCxuKXtyZXR1cm4gdGhpcy5fZm9ya1pTP3RoaXMuX2ZvcmtaUy5vbkZvcmsodGhpcy5fZm9ya0RsZ3QsdGhpcy56b25lLHQsbik6bmV3IGModCxuKX0sdC5wcm90b3R5cGUuaW50ZXJjZXB0PWZ1bmN0aW9uKHQsbixlKXtyZXR1cm4gdGhpcy5faW50ZXJjZXB0WlM/dGhpcy5faW50ZXJjZXB0WlMub25JbnRlcmNlcHQodGhpcy5faW50ZXJjZXB0RGxndCx0aGlzLl9pbnRlcmNlcHRDdXJyWm9uZSx0LG4sZSk6bn0sdC5wcm90b3R5cGUuaW52b2tlPWZ1bmN0aW9uKHQsbixlLGEsbyl7cmV0dXJuIHRoaXMuX2ludm9rZVpTP3RoaXMuX2ludm9rZVpTLm9uSW52b2tlKHRoaXMuX2ludm9rZURsZ3QsdGhpcy5faW52b2tlQ3VyclpvbmUsdCxuLGUsYSxvKTpuLmFwcGx5KGUsYSl9LHQucHJvdG90eXBlLmhhbmRsZUVycm9yPWZ1bmN0aW9uKHQsbil7cmV0dXJuIXRoaXMuX2hhbmRsZUVycm9yWlN8fHRoaXMuX2hhbmRsZUVycm9yWlMub25IYW5kbGVFcnJvcih0aGlzLl9oYW5kbGVFcnJvckRsZ3QsdGhpcy5faGFuZGxlRXJyb3JDdXJyWm9uZSx0LG4pfSx0LnByb3RvdHlwZS5zY2hlZHVsZVRhc2s9ZnVuY3Rpb24odCxuKXt2YXIgZT1uO2lmKHRoaXMuX3NjaGVkdWxlVGFza1pTKXRoaXMuX2hhc1Rhc2taUyYmZS5fem9uZURlbGVnYXRlcy5wdXNoKHRoaXMuX2hhc1Rhc2tEbGd0T3duZXIpLChlPXRoaXMuX3NjaGVkdWxlVGFza1pTLm9uU2NoZWR1bGVUYXNrKHRoaXMuX3NjaGVkdWxlVGFza0RsZ3QsdGhpcy5fc2NoZWR1bGVUYXNrQ3VyclpvbmUsdCxuKSl8fChlPW4pO2Vsc2UgaWYobi5zY2hlZHVsZUZuKW4uc2NoZWR1bGVGbihuKTtlbHNle2lmKG4udHlwZSE9dil0aHJvdyBuZXcgRXJyb3IoIlRhc2sgaXMgbWlzc2luZyBzY2hlZHVsZUZuLiIpO2gobil9cmV0dXJuIGV9LHQucHJvdG90eXBlLmludm9rZVRhc2s9ZnVuY3Rpb24odCxuLGUsYSl7cmV0dXJuIHRoaXMuX2ludm9rZVRhc2taUz90aGlzLl9pbnZva2VUYXNrWlMub25JbnZva2VUYXNrKHRoaXMuX2ludm9rZVRhc2tEbGd0LHRoaXMuX2ludm9rZVRhc2tDdXJyWm9uZSx0LG4sZSxhKTpuLmNhbGxiYWNrLmFwcGx5KGUsYSl9LHQucHJvdG90eXBlLmNhbmNlbFRhc2s9ZnVuY3Rpb24odCxuKXt2YXIgZTtpZih0aGlzLl9jYW5jZWxUYXNrWlMpZT10aGlzLl9jYW5jZWxUYXNrWlMub25DYW5jZWxUYXNrKHRoaXMuX2NhbmNlbFRhc2tEbGd0LHRoaXMuX2NhbmNlbFRhc2tDdXJyWm9uZSx0LG4pO2Vsc2V7aWYoIW4uY2FuY2VsRm4pdGhyb3cgRXJyb3IoIlRhc2sgaXMgbm90IGNhbmNlbGFibGUiKTtlPW4uY2FuY2VsRm4obil9cmV0dXJuIGV9LHQucHJvdG90eXBlLmhhc1Rhc2s9ZnVuY3Rpb24odCxuKXt0cnl7dGhpcy5faGFzVGFza1pTJiZ0aGlzLl9oYXNUYXNrWlMub25IYXNUYXNrKHRoaXMuX2hhc1Rhc2tEbGd0LHRoaXMuX2hhc1Rhc2tDdXJyWm9uZSx0LG4pfWNhdGNoKG4pe3RoaXMuaGFuZGxlRXJyb3IodCxuKX19LHQucHJvdG90eXBlLl91cGRhdGVUYXNrQ291bnQ9ZnVuY3Rpb24odCxuKXt2YXIgZT10aGlzLl90YXNrQ291bnRzLGE9ZVt0XSxvPWVbdF09YStuO2lmKG88MCl0aHJvdyBuZXcgRXJyb3IoIk1vcmUgdGFza3MgZXhlY3V0ZWQgdGhlbiB3ZXJlIHNjaGVkdWxlZC4iKTswIT1hJiYwIT1vfHx0aGlzLmhhc1Rhc2sodGhpcy56b25lLHttaWNyb1Rhc2s6ZS5taWNyb1Rhc2s+MCxtYWNyb1Rhc2s6ZS5tYWNyb1Rhc2s+MCxldmVudFRhc2s6ZS5ldmVudFRhc2s+MCxjaGFuZ2U6dH0pfSx0fSkoKSxkPShmdW5jdGlvbigpe2Z1bmN0aW9uIG4oZSxhLG8scixpLGMpe2lmKHRoaXMuX3pvbmU9bnVsbCx0aGlzLnJ1bkNvdW50PTAsdGhpcy5fem9uZURlbGVnYXRlcz1udWxsLHRoaXMuX3N0YXRlPSJub3RTY2hlZHVsZWQiLHRoaXMudHlwZT1lLHRoaXMuc291cmNlPWEsdGhpcy5kYXRhPXIsdGhpcy5zY2hlZHVsZUZuPWksdGhpcy5jYW5jZWxGbj1jLCFvKXRocm93IG5ldyBFcnJvcigiY2FsbGJhY2sgaXMgbm90IGRlZmluZWQiKTt0aGlzLmNhbGxiYWNrPW87dmFyIHM9dGhpczt0aGlzLmludm9rZT1lPT09UyYmciYmci51c2VHP24uaW52b2tlVGFzazpmdW5jdGlvbigpe3JldHVybiBuLmludm9rZVRhc2suY2FsbCh0LHMsdGhpcyxhcmd1bWVudHMpfX1yZXR1cm4gbi5pbnZva2VUYXNrPWZ1bmN0aW9uKHQsbixlKXt0fHwodD10aGlzKSxUKys7dHJ5e3JldHVybiB0LnJ1bkNvdW50KyssdC56b25lLnJ1blRhc2sodCxuLGUpfWZpbmFsbHl7MT09VCYmXygpLFQtLX19LE9iamVjdC5kZWZpbmVQcm9wZXJ0eShuLnByb3RvdHlwZSwiem9uZSIse2dldDpmdW5jdGlvbigpe3JldHVybiB0aGlzLl96b25lfSxlbnVtZXJhYmxlOiEwLGNvbmZpZ3VyYWJsZTohMH0pLE9iamVjdC5kZWZpbmVQcm9wZXJ0eShuLnByb3RvdHlwZSwic3RhdGUiLHtnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5fc3RhdGV9LGVudW1lcmFibGU6ITAsY29uZmlndXJhYmxlOiEwfSksbi5wcm90b3R5cGUuY2FuY2VsU2NoZWR1bGVSZXF1ZXN0PWZ1bmN0aW9uKCl7dGhpcy5fdHJhbnNpdGlvblRvKE0sTyl9LG4ucHJvdG90eXBlLl90cmFuc2l0aW9uVG89ZnVuY3Rpb24odCxuLGUpe2lmKHRoaXMuX3N0YXRlIT09biYmdGhpcy5fc3RhdGUhPT1lKXRocm93IG5ldyBFcnJvcih0aGlzLnR5cGUrIiAnIit0aGlzLnNvdXJjZSsiJzogY2FuIG5vdCB0cmFuc2l0aW9uIHRvICciK3QrIicsIGV4cGVjdGluZyBzdGF0ZSAnIituKyInIisoZT8iIG9yICciK2UrIiciOiIiKSsiLCB3YXMgJyIrdGhpcy5fc3RhdGUrIicuIik7dGhpcy5fc3RhdGU9dCx0PT1NJiYodGhpcy5fem9uZURlbGVnYXRlcz1udWxsKX0sbi5wcm90b3R5cGUudG9TdHJpbmc9ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5kYXRhJiZ2b2lkIDAhPT10aGlzLmRhdGEuaGFuZGxlSWQ/dGhpcy5kYXRhLmhhbmRsZUlkLnRvU3RyaW5nKCk6T2JqZWN0LnByb3RvdHlwZS50b1N0cmluZy5jYWxsKHRoaXMpfSxuLnByb3RvdHlwZS50b0pTT049ZnVuY3Rpb24oKXtyZXR1cm57dHlwZTp0aGlzLnR5cGUsc3RhdGU6dGhpcy5zdGF0ZSxzb3VyY2U6dGhpcy5zb3VyY2Usem9uZTp0aGlzLnpvbmUubmFtZSxydW5Db3VudDp0aGlzLnJ1bkNvdW50fX0sbn0pKCksZz1yKCJzZXRUaW1lb3V0IikscD1yKCJQcm9taXNlIiksYj1yKCJ0aGVuIiksdT1bXSxmPSExO2Z1bmN0aW9uIGgobil7aWYoMD09PVQmJjA9PT11Lmxlbmd0aClpZihzfHx0W3BdJiYocz10W3BdLnJlc29sdmUoMCkpLHMpe3ZhciBlPXNbYl07ZXx8KGU9cy50aGVuKSxlLmNhbGwocyxfKX1lbHNlIHRbZ10oXywwKTtuJiZ1LnB1c2gobil9ZnVuY3Rpb24gXygpe2lmKCFmKXtmb3IoZj0hMDt1Lmxlbmd0aDspe3ZhciB0PXU7dT1bXTtmb3IodmFyIG49MDtuPHQubGVuZ3RoO24rKyl7dmFyIGU9dFtuXTt0cnl7ZS56b25lLnJ1blRhc2soZSxudWxsLG51bGwpfWNhdGNoKHQpe0Eub25VbmhhbmRsZWRFcnJvcih0KX19fUEubWljcm90YXNrRHJhaW5Eb25lKCksZj0hMX19dmFyIEM9e25hbWU6Ik5PIFpPTkUifSxNPSJub3RTY2hlZHVsZWQiLE89InNjaGVkdWxpbmciLFA9InNjaGVkdWxlZCIseD0icnVubmluZyIseT0iY2FuY2VsaW5nIixrPSJ1bmtub3duIix2PSJtaWNyb1Rhc2siLHc9Im1hY3JvVGFzayIsUz0iZXZlbnRUYXNrIixFPXt9LEE9e3N5bWJvbDpyLGN1cnJlbnRab25lRnJhbWU6ZnVuY3Rpb24oKXtyZXR1cm4gen0sb25VbmhhbmRsZWRFcnJvcjpELG1pY3JvdGFza0RyYWluRG9uZTpELHNjaGVkdWxlTWljcm9UYXNrOmgsc2hvd1VuY2F1Z2h0RXJyb3I6ZnVuY3Rpb24oKXtyZXR1cm4hY1tyKCJpZ25vcmVDb25zb2xlRXJyb3JVbmNhdWdodEVycm9yIildfSxwYXRjaEV2ZW50VGFyZ2V0OmZ1bmN0aW9uKCl7cmV0dXJuW119LHBhdGNoT25Qcm9wZXJ0aWVzOkQscGF0Y2hNZXRob2Q6ZnVuY3Rpb24oKXtyZXR1cm4gRH0sYmluZEFyZ3VtZW50czpmdW5jdGlvbigpe3JldHVybltdfSxwYXRjaFRoZW46ZnVuY3Rpb24oKXtyZXR1cm4gRH0scGF0Y2hNYWNyb1Rhc2s6ZnVuY3Rpb24oKXtyZXR1cm4gRH0sc2V0TmF0aXZlUHJvbWlzZTpmdW5jdGlvbih0KXt0JiYiZnVuY3Rpb24iPT10eXBlb2YgdC5yZXNvbHZlJiYocz10LnJlc29sdmUoMCkpfSxwYXRjaEV2ZW50UHJvdG90eXBlOmZ1bmN0aW9uKCl7cmV0dXJuIER9LGlzSUVPckVkZ2U6ZnVuY3Rpb24oKXtyZXR1cm4hMX0sZ2V0R2xvYmFsT2JqZWN0czpmdW5jdGlvbigpe30sT2JqZWN0RGVmaW5lUHJvcGVydHk6ZnVuY3Rpb24oKXtyZXR1cm4gRH0sT2JqZWN0R2V0T3duUHJvcGVydHlEZXNjcmlwdG9yOmZ1bmN0aW9uKCl7fSxPYmplY3RDcmVhdGU6ZnVuY3Rpb24oKXt9LEFycmF5U2xpY2U6ZnVuY3Rpb24oKXtyZXR1cm5bXX0scGF0Y2hDbGFzczpmdW5jdGlvbigpe3JldHVybiBEfSx3cmFwV2l0aEN1cnJlbnRab25lOmZ1bmN0aW9uKCl7cmV0dXJuIER9LGZpbHRlclByb3BlcnRpZXM6ZnVuY3Rpb24oKXtyZXR1cm5bXX0sYXR0YWNoT3JpZ2luVG9QYXRjaGVkOmZ1bmN0aW9uKCl7cmV0dXJuIER9LF9yZWRlZmluZVByb3BlcnR5OmZ1bmN0aW9uKCl7cmV0dXJuIER9LHBhdGNoQ2FsbGJhY2tzOmZ1bmN0aW9uKCl7cmV0dXJuIER9fSx6PXtwYXJlbnQ6bnVsbCx6b25lOm5ldyBjKG51bGwsbnVsbCl9LFI9bnVsbCxUPTA7ZnVuY3Rpb24gRCgpe31hKCJab25lIiwiWm9uZSIpLHQuWm9uZT1jfSkoInVuZGVmaW5lZCIhPXR5cGVvZiB3aW5kb3cmJndpbmRvd3x8InVuZGVmaW5lZCIhPXR5cGVvZiBzZWxmJiZzZWxmfHx4UCksCi8qKgogICAgICAgICAqIEBsaWNlbnNlCiAgICAgICAgICogQ29weXJpZ2h0IEdvb2dsZSBJbmMuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCiAgICAgICAgICoKICAgICAgICAgKiBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhbiBNSVQtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQogICAgICAgICAqIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUgYXQgaHR0cHM6Ly9hbmd1bGFyLmlvL2xpY2Vuc2UKICAgICAgICAgKi8KWm9uZS5fX2xvYWRfcGF0Y2goIlpvbmVBd2FyZVByb21pc2UiLChmdW5jdGlvbih0LG4sZSl7dmFyIGE9T2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcixvPU9iamVjdC5kZWZpbmVQcm9wZXJ0eSxyPWUuc3ltYm9sLGk9W10sYz0hMD09PXRbcigiRElTQUJMRV9XUkFQUElOR19VTkNBVUdIVF9QUk9NSVNFX1JFSkVDVElPTiIpXSxzPXIoIlByb21pc2UiKSxsPXIoInRoZW4iKTtlLm9uVW5oYW5kbGVkRXJyb3I9ZnVuY3Rpb24odCl7aWYoZS5zaG93VW5jYXVnaHRFcnJvcigpKXt2YXIgbj10JiZ0LnJlamVjdGlvbjtuP2NvbnNvbGUuZXJyb3IoIlVuaGFuZGxlZCBQcm9taXNlIHJlamVjdGlvbjoiLG4gaW5zdGFuY2VvZiBFcnJvcj9uLm1lc3NhZ2U6biwiOyBab25lOiIsdC56b25lLm5hbWUsIjsgVGFzazoiLHQudGFzayYmdC50YXNrLnNvdXJjZSwiOyBWYWx1ZToiLG4sbiBpbnN0YW5jZW9mIEVycm9yP24uc3RhY2s6dm9pZCAwKTpjb25zb2xlLmVycm9yKHQpfX0sZS5taWNyb3Rhc2tEcmFpbkRvbmU9ZnVuY3Rpb24oKXtmb3IodmFyIHQ9ZnVuY3Rpb24oKXt2YXIgdD1pLnNoaWZ0KCk7dHJ5e3Quem9uZS5ydW5HdWFyZGVkKChmdW5jdGlvbigpe3Rocm93IHR9KSl9Y2F0Y2godCl7IShmdW5jdGlvbiBhKHQpe2Uub25VbmhhbmRsZWRFcnJvcih0KTt0cnl7dmFyIGE9blttXTsiZnVuY3Rpb24iPT10eXBlb2YgYSYmYS5jYWxsKHRoaXMsdCl9Y2F0Y2godCl7fX0pKHQpfX07aS5sZW5ndGg7KXQoKX07dmFyIG09cigidW5oYW5kbGVkUHJvbWlzZVJlamVjdGlvbkhhbmRsZXIiKTtmdW5jdGlvbiBkKHQpe3JldHVybiB0JiZ0LnRoZW59ZnVuY3Rpb24gZyh0KXtyZXR1cm4gdH1mdW5jdGlvbiBwKHQpe3JldHVybiBFLnJlamVjdCh0KX12YXIgYj1yKCJzdGF0ZSIpLHU9cigidmFsdWUiKSxmPXIoImZpbmFsbHkiKSxoPXIoInBhcmVudFByb21pc2VWYWx1ZSIpLF89cigicGFyZW50UHJvbWlzZVN0YXRlIiksQz1udWxsLE09ITAsTz0hMTtmdW5jdGlvbiBQKHQsbil7cmV0dXJuIGZ1bmN0aW9uKGUpe3RyeXt5KHQsbixlKX1jYXRjaChuKXt5KHQsITEsbil9fX12YXIgeD1yKCJjdXJyZW50VGFza1RyYWNlIik7ZnVuY3Rpb24geSh0LGEscil7dmFyIHMsbD0ocz0hMSxmdW5jdGlvbiB0KG4pe3JldHVybiBmdW5jdGlvbigpe3N8fChzPSEwLG4uYXBwbHkobnVsbCxhcmd1bWVudHMpKX19KTtpZih0PT09cil0aHJvdyBuZXcgVHlwZUVycm9yKCJQcm9taXNlIHJlc29sdmVkIHdpdGggaXRzZWxmIik7aWYodFtiXT09PUMpe3ZhciBtPW51bGw7dHJ5eyJvYmplY3QiIT10eXBlb2YgciYmImZ1bmN0aW9uIiE9dHlwZW9mIHJ8fChtPXImJnIudGhlbil9Y2F0Y2gobil7cmV0dXJuIGwoKGZ1bmN0aW9uKCl7eSh0LCExLG4pfSkpKCksdH1pZihhIT09TyYmciBpbnN0YW5jZW9mIEUmJnIuaGFzT3duUHJvcGVydHkoYikmJnIuaGFzT3duUHJvcGVydHkodSkmJnJbYl0hPT1DKXYocikseSh0LHJbYl0sclt1XSk7ZWxzZSBpZihhIT09TyYmImZ1bmN0aW9uIj09dHlwZW9mIG0pdHJ5e20uY2FsbChyLGwoUCh0LGEpKSxsKFAodCwhMSkpKX1jYXRjaChuKXtsKChmdW5jdGlvbigpe3kodCwhMSxuKX0pKSgpfWVsc2V7dFtiXT1hO3ZhciBkPXRbdV07aWYodFt1XT1yLHRbZl09PT1mJiZhPT09TSYmKHRbYl09dFtfXSx0W3VdPXRbaF0pLGE9PT1PJiZyIGluc3RhbmNlb2YgRXJyb3Ipe3ZhciBnPW4uY3VycmVudFRhc2smJm4uY3VycmVudFRhc2suZGF0YSYmbi5jdXJyZW50VGFzay5kYXRhLl9fY3JlYXRpb25UcmFjZV9fO2cmJm8ocix4LHtjb25maWd1cmFibGU6ITAsZW51bWVyYWJsZTohMSx3cml0YWJsZTohMCx2YWx1ZTpnfSl9Zm9yKHZhciBwPTA7cDxkLmxlbmd0aDspdyh0LGRbcCsrXSxkW3ArK10sZFtwKytdLGRbcCsrXSk7aWYoMD09ZC5sZW5ndGgmJmE9PU8pe3RbYl09MDt2YXIgaz1yO2lmKCFjKXRyeXt0aHJvdyBuZXcgRXJyb3IoIlVuY2F1Z2h0IChpbiBwcm9taXNlKTogIisoZnVuY3Rpb24gUyh0KXtyZXR1cm4gdCYmdC50b1N0cmluZz09PU9iamVjdC5wcm90b3R5cGUudG9TdHJpbmc/KHQuY29uc3RydWN0b3ImJnQuY29uc3RydWN0b3IubmFtZXx8IiIpKyI6ICIrSlNPTi5zdHJpbmdpZnkodCk6dD90LnRvU3RyaW5nKCk6T2JqZWN0LnByb3RvdHlwZS50b1N0cmluZy5jYWxsKHQpfSkocikrKHImJnIuc3RhY2s/IlxuIityLnN0YWNrOiIiKSl9Y2F0Y2godCl7az10fWsucmVqZWN0aW9uPXIsay5wcm9taXNlPXQsay56b25lPW4uY3VycmVudCxrLnRhc2s9bi5jdXJyZW50VGFzayxpLnB1c2goayksZS5zY2hlZHVsZU1pY3JvVGFzaygpfX19cmV0dXJuIHR9dmFyIGs9cigicmVqZWN0aW9uSGFuZGxlZEhhbmRsZXIiKTtmdW5jdGlvbiB2KHQpe2lmKDA9PT10W2JdKXt0cnl7dmFyIGU9bltrXTtlJiYiZnVuY3Rpb24iPT10eXBlb2YgZSYmZS5jYWxsKHRoaXMse3JlamVjdGlvbjp0W3VdLHByb21pc2U6dH0pfWNhdGNoKHQpe310W2JdPU87Zm9yKHZhciBhPTA7YTxpLmxlbmd0aDthKyspdD09PWlbYV0ucHJvbWlzZSYmaS5zcGxpY2UoYSwxKX19ZnVuY3Rpb24gdyh0LG4sZSxhLG8pe3YodCk7dmFyIHI9dFtiXSxpPXI/ImZ1bmN0aW9uIj09dHlwZW9mIGE/YTpnOiJmdW5jdGlvbiI9PXR5cGVvZiBvP286cDtuLnNjaGVkdWxlTWljcm9UYXNrKCJQcm9taXNlLnRoZW4iLChmdW5jdGlvbigpe3RyeXt2YXIgYT10W3VdLG89ISFlJiZmPT09ZVtmXTtvJiYoZVtoXT1hLGVbX109cik7dmFyIGM9bi5ydW4oaSx2b2lkIDAsbyYmaSE9PXAmJmkhPT1nP1tdOlthXSk7eShlLCEwLGMpfWNhdGNoKHQpe3koZSwhMSx0KX19KSxlKX12YXIgUz1mdW5jdGlvbigpe30sRT0oZnVuY3Rpb24oKXtmdW5jdGlvbiB0KG4pe3ZhciBlPXRoaXM7aWYoIShlIGluc3RhbmNlb2YgdCkpdGhyb3cgbmV3IEVycm9yKCJNdXN0IGJlIGFuIGluc3RhbmNlb2YgUHJvbWlzZS4iKTtlW2JdPUMsZVt1XT1bXTt0cnl7biYmbihQKGUsTSksUChlLE8pKX1jYXRjaCh0KXt5KGUsITEsdCl9fXJldHVybiB0LnRvU3RyaW5nPWZ1bmN0aW9uKCl7cmV0dXJuImZ1bmN0aW9uIFpvbmVBd2FyZVByb21pc2UoKSB7IFtuYXRpdmUgY29kZV0gfSJ9LHQucmVzb2x2ZT1mdW5jdGlvbih0KXtyZXR1cm4geShuZXcgdGhpcyhudWxsKSxNLHQpfSx0LnJlamVjdD1mdW5jdGlvbih0KXtyZXR1cm4geShuZXcgdGhpcyhudWxsKSxPLHQpfSx0LnJhY2U9ZnVuY3Rpb24odCl7dmFyIG4sZSxhPW5ldyB0aGlzKChmdW5jdGlvbih0LGEpe249dCxlPWF9KSk7ZnVuY3Rpb24gbyh0KXtuKHQpfWZ1bmN0aW9uIHIodCl7ZSh0KX1mb3IodmFyIGk9MCxjPXQ7aTxjLmxlbmd0aDtpKyspe3ZhciBzPWNbaV07ZChzKXx8KHM9dGhpcy5yZXNvbHZlKHMpKSxzLnRoZW4obyxyKX1yZXR1cm4gYX0sdC5hbGw9ZnVuY3Rpb24obil7cmV0dXJuIHQuYWxsV2l0aENhbGxiYWNrKG4pfSx0LmFsbFNldHRsZWQ9ZnVuY3Rpb24obil7cmV0dXJuKHRoaXMmJnRoaXMucHJvdG90eXBlIGluc3RhbmNlb2YgdD90aGlzOnQpLmFsbFdpdGhDYWxsYmFjayhuLHt0aGVuQ2FsbGJhY2s6ZnVuY3Rpb24odCl7cmV0dXJue3N0YXR1czoiZnVsZmlsbGVkIix2YWx1ZTp0fX0sZXJyb3JDYWxsYmFjazpmdW5jdGlvbih0KXtyZXR1cm57c3RhdHVzOiJyZWplY3RlZCIscmVhc29uOnR9fX0pfSx0LmFsbFdpdGhDYWxsYmFjaz1mdW5jdGlvbih0LG4pe2Zvcih2YXIgZSxhLG89bmV3IHRoaXMoKGZ1bmN0aW9uKHQsbil7ZT10LGE9bn0pKSxyPTIsaT0wLGM9W10scz1mdW5jdGlvbih0KXtkKHQpfHwodD1sLnJlc29sdmUodCkpO3ZhciBvPWk7dHJ5e3QudGhlbigoZnVuY3Rpb24odCl7Y1tvXT1uP24udGhlbkNhbGxiYWNrKHQpOnQsMD09LS1yJiZlKGMpfSksKGZ1bmN0aW9uKHQpe24/KGNbb109bi5lcnJvckNhbGxiYWNrKHQpLDA9PS0tciYmZShjKSk6YSh0KX0pKX1jYXRjaCh0KXthKHQpfXIrKyxpKyt9LGw9dGhpcyxtPTAsZz10O208Zy5sZW5ndGg7bSsrKXMoZ1ttXSk7cmV0dXJuIDA9PShyLT0yKSYmZShjKSxvfSxPYmplY3QuZGVmaW5lUHJvcGVydHkodC5wcm90b3R5cGUsU3ltYm9sLnRvU3RyaW5nVGFnLHtnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4iUHJvbWlzZSJ9LGVudW1lcmFibGU6ITAsY29uZmlndXJhYmxlOiEwfSksT2JqZWN0LmRlZmluZVByb3BlcnR5KHQucHJvdG90eXBlLFN5bWJvbC5zcGVjaWVzLHtnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gdH0sZW51bWVyYWJsZTohMCxjb25maWd1cmFibGU6ITB9KSx0LnByb3RvdHlwZS50aGVuPWZ1bmN0aW9uKGUsYSl7dmFyIG89dGhpcy5jb25zdHJ1Y3RvcltTeW1ib2wuc3BlY2llc107byYmImZ1bmN0aW9uIj09dHlwZW9mIG98fChvPXRoaXMuY29uc3RydWN0b3J8fHQpO3ZhciByPW5ldyBvKFMpLGk9bi5jdXJyZW50O3JldHVybiB0aGlzW2JdPT1DP3RoaXNbdV0ucHVzaChpLHIsZSxhKTp3KHRoaXMsaSxyLGUsYSkscn0sdC5wcm90b3R5cGUuY2F0Y2g9ZnVuY3Rpb24odCl7cmV0dXJuIHRoaXMudGhlbihudWxsLHQpfSx0LnByb3RvdHlwZS5maW5hbGx5PWZ1bmN0aW9uKGUpe3ZhciBhPXRoaXMuY29uc3RydWN0b3JbU3ltYm9sLnNwZWNpZXNdO2EmJiJmdW5jdGlvbiI9PXR5cGVvZiBhfHwoYT10KTt2YXIgbz1uZXcgYShTKTtvW2ZdPWY7dmFyIHI9bi5jdXJyZW50O3JldHVybiB0aGlzW2JdPT1DP3RoaXNbdV0ucHVzaChyLG8sZSxlKTp3KHRoaXMscixvLGUsZSksb30sdH0pKCk7RS5yZXNvbHZlPUUucmVzb2x2ZSxFLnJlamVjdD1FLnJlamVjdCxFLnJhY2U9RS5yYWNlLEUuYWxsPUUuYWxsO3ZhciBBPXRbc109dC5Qcm9taXNlLHo9bi5fX3N5bWJvbF9fKCJab25lQXdhcmVQcm9taXNlIiksUj1hKHQsIlByb21pc2UiKTtSJiYhUi5jb25maWd1cmFibGV8fChSJiZkZWxldGUgUi53cml0YWJsZSxSJiZkZWxldGUgUi52YWx1ZSxSfHwoUj17Y29uZmlndXJhYmxlOiEwLGVudW1lcmFibGU6ITB9KSxSLmdldD1mdW5jdGlvbigpe3JldHVybiB0W3pdP3Rbel06dFtzXX0sUi5zZXQ9ZnVuY3Rpb24obil7bj09PUU/dFt6XT1uOih0W3NdPW4sbi5wcm90b3R5cGVbbF18fEQobiksZS5zZXROYXRpdmVQcm9taXNlKG4pKX0sbyh0LCJQcm9taXNlIixSKSksdC5Qcm9taXNlPUU7dmFyIFQ9cigidGhlblBhdGNoZWQiKTtmdW5jdGlvbiBEKHQpe3ZhciBuPXQucHJvdG90eXBlLGU9YShuLCJ0aGVuIik7aWYoIWV8fCExIT09ZS53cml0YWJsZSYmZS5jb25maWd1cmFibGUpe3ZhciBvPW4udGhlbjtuW2xdPW8sdC5wcm90b3R5cGUudGhlbj1mdW5jdGlvbih0LG4pe3ZhciBlPXRoaXM7cmV0dXJuIG5ldyBFKChmdW5jdGlvbih0LG4pe28uY2FsbChlLHQsbil9KSkudGhlbih0LG4pfSx0W1RdPSEwfX1pZihlLnBhdGNoVGhlbj1ELEEpe0QoQSk7dmFyIEk9dC5mZXRjaDsiZnVuY3Rpb24iPT10eXBlb2YgSSYmKHRbZS5zeW1ib2woImZldGNoIildPUksdC5mZXRjaD0oZnVuY3Rpb24gTih0KXtyZXR1cm4gZnVuY3Rpb24oKXt2YXIgbj10LmFwcGx5KHRoaXMsYXJndW1lbnRzKTtpZihuIGluc3RhbmNlb2YgRSlyZXR1cm4gbjt2YXIgZT1uLmNvbnN0cnVjdG9yO3JldHVybiBlW1RdfHxEKGUpLG59fSkoSSkpfXJldHVybiBQcm9taXNlW24uX19zeW1ib2xfXygidW5jYXVnaHRQcm9taXNlRXJyb3JzIildPWksRX0pKTsKLyoqCiAgICAgICAgICogQGxpY2Vuc2UKICAgICAgICAgKiBDb3B5cmlnaHQgR29vZ2xlIEluYy4gQWxsIFJpZ2h0cyBSZXNlcnZlZC4KICAgICAgICAgKgogICAgICAgICAqIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGFuIE1JVC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCiAgICAgICAgICogZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZSBhdCBodHRwczovL2FuZ3VsYXIuaW8vbGljZW5zZQogICAgICAgICAqLwp2YXIgdD1PYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yLG49T2JqZWN0LmRlZmluZVByb3BlcnR5LGU9T2JqZWN0LmdldFByb3RvdHlwZU9mLGE9T2JqZWN0LmNyZWF0ZSxvPUFycmF5LnByb3RvdHlwZS5zbGljZSxyPSJhZGRFdmVudExpc3RlbmVyIixpPSJyZW1vdmVFdmVudExpc3RlbmVyIixjPVpvbmUuX19zeW1ib2xfXyhyKSxzPVpvbmUuX19zeW1ib2xfXyhpKSxsPSJ0cnVlIixtPSJmYWxzZSIsZD1ab25lLl9fc3ltYm9sX18oIiIpO2Z1bmN0aW9uIGcodCxuKXtyZXR1cm4gWm9uZS5jdXJyZW50LndyYXAodCxuKX1mdW5jdGlvbiBwKHQsbixlLGEsbyl7cmV0dXJuIFpvbmUuY3VycmVudC5zY2hlZHVsZU1hY3JvVGFzayh0LG4sZSxhLG8pfXZhciBiPVpvbmUuX19zeW1ib2xfXyx1PSJ1bmRlZmluZWQiIT10eXBlb2Ygd2luZG93LGY9dT93aW5kb3c6dm9pZCAwLGg9dSYmZnx8Im9iamVjdCI9PXR5cGVvZiBzZWxmJiZzZWxmfHx4UCxfPVtudWxsXTtmdW5jdGlvbiBDKHQsbil7Zm9yKHZhciBlPXQubGVuZ3RoLTE7ZT49MDtlLS0pImZ1bmN0aW9uIj09dHlwZW9mIHRbZV0mJih0W2VdPWcodFtlXSxuKyJfIitlKSk7cmV0dXJuIHR9ZnVuY3Rpb24gTSh0KXtyZXR1cm4hdHx8ITEhPT10LndyaXRhYmxlJiYhKCJmdW5jdGlvbiI9PXR5cGVvZiB0LmdldCYmdm9pZCAwPT09dC5zZXQpfXZhciBPPSJ1bmRlZmluZWQiIT10eXBlb2YgV29ya2VyR2xvYmFsU2NvcGUmJnNlbGYgaW5zdGFuY2VvZiBXb3JrZXJHbG9iYWxTY29wZSxQPSEoIm53ImluIGgpJiZ2b2lkIDAhPT1oLnByb2Nlc3MmJiJbb2JqZWN0IHByb2Nlc3NdIj09PXt9LnRvU3RyaW5nLmNhbGwoaC5wcm9jZXNzKSx4PSFQJiYhTyYmISghdXx8IWYuSFRNTEVsZW1lbnQpLHk9dm9pZCAwIT09aC5wcm9jZXNzJiYiW29iamVjdCBwcm9jZXNzXSI9PT17fS50b1N0cmluZy5jYWxsKGgucHJvY2VzcykmJiFPJiYhKCF1fHwhZi5IVE1MRWxlbWVudCksaz17fSx2PWZ1bmN0aW9uKHQpe2lmKHQ9dHx8aC5ldmVudCl7dmFyIG49a1t0LnR5cGVdO258fChuPWtbdC50eXBlXT1iKCJPTl9QUk9QRVJUWSIrdC50eXBlKSk7dmFyIGUsYT10aGlzfHx0LnRhcmdldHx8aCxvPWFbbl07cmV0dXJuIHgmJmE9PT1mJiYiZXJyb3IiPT09dC50eXBlPyEwPT09KGU9byYmby5jYWxsKHRoaXMsdC5tZXNzYWdlLHQuZmlsZW5hbWUsdC5saW5lbm8sdC5jb2xubyx0LmVycm9yKSkmJnQucHJldmVudERlZmF1bHQoKTpudWxsPT0oZT1vJiZvLmFwcGx5KHRoaXMsYXJndW1lbnRzKSl8fGV8fHQucHJldmVudERlZmF1bHQoKSxlfX07ZnVuY3Rpb24gdyhlLGEsbyl7dmFyIHI9dChlLGEpO2lmKCFyJiZvJiZ0KG8sYSkmJihyPXtlbnVtZXJhYmxlOiEwLGNvbmZpZ3VyYWJsZTohMH0pLHImJnIuY29uZmlndXJhYmxlKXt2YXIgaT1iKCJvbiIrYSsicGF0Y2hlZCIpO2lmKCFlLmhhc093blByb3BlcnR5KGkpfHwhZVtpXSl7ZGVsZXRlIHIud3JpdGFibGUsZGVsZXRlIHIudmFsdWU7dmFyIGM9ci5nZXQscz1yLnNldCxsPWEuc3Vic3RyKDIpLG09a1tsXTttfHwobT1rW2xdPWIoIk9OX1BST1BFUlRZIitsKSksci5zZXQ9ZnVuY3Rpb24odCl7dmFyIG49dGhpcztufHxlIT09aHx8KG49aCksbiYmKG5bbV0mJm4ucmVtb3ZlRXZlbnRMaXN0ZW5lcihsLHYpLHMmJnMuYXBwbHkobixfKSwiZnVuY3Rpb24iPT10eXBlb2YgdD8oblttXT10LG4uYWRkRXZlbnRMaXN0ZW5lcihsLHYsITEpKTpuW21dPW51bGwpfSxyLmdldD1mdW5jdGlvbigpe3ZhciB0PXRoaXM7aWYodHx8ZSE9PWh8fCh0PWgpLCF0KXJldHVybiBudWxsO3ZhciBuPXRbbV07aWYobilyZXR1cm4gbjtpZihjKXt2YXIgbz1jJiZjLmNhbGwodGhpcyk7aWYobylyZXR1cm4gci5zZXQuY2FsbCh0aGlzLG8pLCJmdW5jdGlvbiI9PXR5cGVvZiB0LnJlbW92ZUF0dHJpYnV0ZSYmdC5yZW1vdmVBdHRyaWJ1dGUoYSksb31yZXR1cm4gbnVsbH0sbihlLGEsciksZVtpXT0hMH19fWZ1bmN0aW9uIFModCxuLGUpe2lmKG4pZm9yKHZhciBhPTA7YTxuLmxlbmd0aDthKyspdyh0LCJvbiIrblthXSxlKTtlbHNle3ZhciBvPVtdO2Zvcih2YXIgciBpbiB0KSJvbiI9PXIuc3Vic3RyKDAsMikmJm8ucHVzaChyKTtmb3IodmFyIGk9MDtpPG8ubGVuZ3RoO2krKyl3KHQsb1tpXSxlKX19dmFyIEU9Yigib3JpZ2luYWxJbnN0YW5jZSIpO2Z1bmN0aW9uIEEodCl7dmFyIGU9aFt0XTtpZihlKXtoW2IodCldPWUsaFt0XT1mdW5jdGlvbigpe3ZhciBuPUMoYXJndW1lbnRzLHQpO3N3aXRjaChuLmxlbmd0aCl7Y2FzZSAwOnRoaXNbRV09bmV3IGU7YnJlYWs7Y2FzZSAxOnRoaXNbRV09bmV3IGUoblswXSk7YnJlYWs7Y2FzZSAyOnRoaXNbRV09bmV3IGUoblswXSxuWzFdKTticmVhaztjYXNlIDM6dGhpc1tFXT1uZXcgZShuWzBdLG5bMV0sblsyXSk7YnJlYWs7Y2FzZSA0OnRoaXNbRV09bmV3IGUoblswXSxuWzFdLG5bMl0sblszXSk7YnJlYWs7ZGVmYXVsdDp0aHJvdyBuZXcgRXJyb3IoIkFyZyBsaXN0IHRvbyBsb25nLiIpfX0sVChoW3RdLGUpO3ZhciBhLG89bmV3IGUoKGZ1bmN0aW9uKCl7fSkpO2ZvcihhIGluIG8pIlhNTEh0dHBSZXF1ZXN0Ij09PXQmJiJyZXNwb25zZUJsb2IiPT09YXx8KGZ1bmN0aW9uKGUpeyJmdW5jdGlvbiI9PXR5cGVvZiBvW2VdP2hbdF0ucHJvdG90eXBlW2VdPWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXNbRV1bZV0uYXBwbHkodGhpc1tFXSxhcmd1bWVudHMpfTpuKGhbdF0ucHJvdG90eXBlLGUse3NldDpmdW5jdGlvbihuKXsiZnVuY3Rpb24iPT10eXBlb2Ygbj8odGhpc1tFXVtlXT1nKG4sdCsiLiIrZSksVCh0aGlzW0VdW2VdLG4pKTp0aGlzW0VdW2VdPW59LGdldDpmdW5jdGlvbigpe3JldHVybiB0aGlzW0VdW2VdfX0pfSkoYSk7Zm9yKGEgaW4gZSkicHJvdG90eXBlIiE9PWEmJmUuaGFzT3duUHJvcGVydHkoYSkmJihoW3RdW2FdPWVbYV0pfX1mdW5jdGlvbiB6KG4sYSxvKXtmb3IodmFyIHI9bjtyJiYhci5oYXNPd25Qcm9wZXJ0eShhKTspcj1lKHIpOyFyJiZuW2FdJiYocj1uKTt2YXIgaT1iKGEpLGM9bnVsbDtpZihyJiYhKGM9cltpXSkmJihjPXJbaV09clthXSxNKHImJnQocixhKSkpKXt2YXIgcz1vKGMsaSxhKTtyW2FdPWZ1bmN0aW9uKCl7cmV0dXJuIHModGhpcyxhcmd1bWVudHMpfSxUKHJbYV0sYyl9cmV0dXJuIGN9ZnVuY3Rpb24gUih0LG4sZSl7dmFyIGE9bnVsbDtmdW5jdGlvbiBvKHQpe3ZhciBuPXQuZGF0YTtyZXR1cm4gbi5hcmdzW24uY2JJZHhdPWZ1bmN0aW9uKCl7dC5pbnZva2UuYXBwbHkodGhpcyxhcmd1bWVudHMpfSxhLmFwcGx5KG4udGFyZ2V0LG4uYXJncyksdH1hPXoodCxuLChmdW5jdGlvbih0KXtyZXR1cm4gZnVuY3Rpb24obixhKXt2YXIgcj1lKG4sYSk7cmV0dXJuIHIuY2JJZHg+PTAmJiJmdW5jdGlvbiI9PXR5cGVvZiBhW3IuY2JJZHhdP3Aoci5uYW1lLGFbci5jYklkeF0scixvKTp0LmFwcGx5KG4sYSl9fSkpfWZ1bmN0aW9uIFQodCxuKXt0W2IoIk9yaWdpbmFsRGVsZWdhdGUiKV09bn12YXIgRD0hMSxJPSExO2Z1bmN0aW9uIE4oKXt0cnl7dmFyIHQ9Zi5uYXZpZ2F0b3IudXNlckFnZW50O2lmKC0xIT09dC5pbmRleE9mKCJNU0lFICIpfHwtMSE9PXQuaW5kZXhPZigiVHJpZGVudC8iKSlyZXR1cm4hMH1jYXRjaCh0KXt9cmV0dXJuITF9ZnVuY3Rpb24gRigpe2lmKEQpcmV0dXJuIEk7RD0hMDt0cnl7dmFyIHQ9Zi5uYXZpZ2F0b3IudXNlckFnZW50Oy0xPT09dC5pbmRleE9mKCJNU0lFICIpJiYtMT09PXQuaW5kZXhPZigiVHJpZGVudC8iKSYmLTE9PT10LmluZGV4T2YoIkVkZ2UvIil8fChJPSEwKX1jYXRjaCh0KXt9cmV0dXJuIEl9Ci8qKgogICAgICAgICAqIEBsaWNlbnNlCiAgICAgICAgICogQ29weXJpZ2h0IEdvb2dsZSBJbmMuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCiAgICAgICAgICoKICAgICAgICAgKiBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhbiBNSVQtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQogICAgICAgICAqIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUgYXQgaHR0cHM6Ly9hbmd1bGFyLmlvL2xpY2Vuc2UKICAgICAgICAgKi9ab25lLl9fbG9hZF9wYXRjaCgidG9TdHJpbmciLChmdW5jdGlvbih0KXt2YXIgbj1GdW5jdGlvbi5wcm90b3R5cGUudG9TdHJpbmcsZT1iKCJPcmlnaW5hbERlbGVnYXRlIiksYT1iKCJQcm9taXNlIiksbz1iKCJFcnJvciIpLHI9ZnVuY3Rpb24gcigpe2lmKCJmdW5jdGlvbiI9PXR5cGVvZiB0aGlzKXt2YXIgaT10aGlzW2VdO2lmKGkpcmV0dXJuImZ1bmN0aW9uIj09dHlwZW9mIGk/bi5jYWxsKGkpOk9iamVjdC5wcm90b3R5cGUudG9TdHJpbmcuY2FsbChpKTtpZih0aGlzPT09UHJvbWlzZSl7dmFyIGM9dFthXTtpZihjKXJldHVybiBuLmNhbGwoYyl9aWYodGhpcz09PUVycm9yKXt2YXIgcz10W29dO2lmKHMpcmV0dXJuIG4uY2FsbChzKX19cmV0dXJuIG4uY2FsbCh0aGlzKX07cltlXT1uLEZ1bmN0aW9uLnByb3RvdHlwZS50b1N0cmluZz1yO3ZhciBpPU9iamVjdC5wcm90b3R5cGUudG9TdHJpbmc7T2JqZWN0LnByb3RvdHlwZS50b1N0cmluZz1mdW5jdGlvbigpe3JldHVybiB0aGlzIGluc3RhbmNlb2YgUHJvbWlzZT8iW29iamVjdCBQcm9taXNlXSI6aS5jYWxsKHRoaXMpfX0pKTsKLyoqCiAgICAgICAgICogQGxpY2Vuc2UKICAgICAgICAgKiBDb3B5cmlnaHQgR29vZ2xlIEluYy4gQWxsIFJpZ2h0cyBSZXNlcnZlZC4KICAgICAgICAgKgogICAgICAgICAqIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGFuIE1JVC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCiAgICAgICAgICogZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZSBhdCBodHRwczovL2FuZ3VsYXIuaW8vbGljZW5zZQogICAgICAgICAqLwp2YXIgTD0hMTtpZigidW5kZWZpbmVkIiE9dHlwZW9mIHdpbmRvdyl0cnl7dmFyIEg9T2JqZWN0LmRlZmluZVByb3BlcnR5KHt9LCJwYXNzaXZlIix7Z2V0OmZ1bmN0aW9uKCl7TD0hMH19KTt3aW5kb3cuYWRkRXZlbnRMaXN0ZW5lcigidGVzdCIsSCxIKSx3aW5kb3cucmVtb3ZlRXZlbnRMaXN0ZW5lcigidGVzdCIsSCxIKX1jYXRjaCh0KXtMPSExfXZhciBCPXt1c2VHOiEwfSxWPXt9LGo9e30sVT1uZXcgUmVnRXhwKCJeIitkKyIoXFx3KykodHJ1ZXxmYWxzZSkkIiksVz1iKCJwcm9wYWdhdGlvblN0b3BwZWQiKTtmdW5jdGlvbiBHKHQsbil7dmFyIGU9KG4/bih0KTp0KSttLGE9KG4/bih0KTp0KStsLG89ZCtlLHI9ZCthO1ZbdF09e30sVlt0XS5mYWxzZT1vLFZbdF0udHJ1ZT1yfWZ1bmN0aW9uIFkodCxuLGEpe3ZhciBvPWEmJmEuYWRkfHxyLGM9YSYmYS5ybXx8aSxzPWEmJmEubGlzdGVuZXJzfHwiZXZlbnRMaXN0ZW5lcnMiLGc9YSYmYS5ybUFsbHx8InJlbW92ZUFsbExpc3RlbmVycyIscD1iKG8pLHU9Ii4iK28rIjoiLGY9ZnVuY3Rpb24odCxuLGUpe2lmKCF0LmlzUmVtb3ZlZCl7dmFyIGE9dC5jYWxsYmFjazsib2JqZWN0Ij09dHlwZW9mIGEmJmEuaGFuZGxlRXZlbnQmJih0LmNhbGxiYWNrPWZ1bmN0aW9uKHQpe3JldHVybiBhLmhhbmRsZUV2ZW50KHQpfSx0Lm9yaWdpbmFsRGVsZWdhdGU9YSksdC5pbnZva2UodCxuLFtlXSk7dmFyIG89dC5vcHRpb25zO28mJiJvYmplY3QiPT10eXBlb2YgbyYmby5vbmNlJiZuW2NdLmNhbGwobixlLnR5cGUsdC5vcmlnaW5hbERlbGVnYXRlP3Qub3JpZ2luYWxEZWxlZ2F0ZTp0LmNhbGxiYWNrLG8pfX0saD1mdW5jdGlvbihuKXtpZihuPW58fHQuZXZlbnQpe3ZhciBlPXRoaXN8fG4udGFyZ2V0fHx0LGE9ZVtWW24udHlwZV0uZmFsc2VdO2lmKGEpaWYoMT09PWEubGVuZ3RoKWYoYVswXSxlLG4pO2Vsc2UgZm9yKHZhciBvPWEuc2xpY2UoKSxyPTA7cjxvLmxlbmd0aCYmKCFufHwhMCE9PW5bV10pO3IrKylmKG9bcl0sZSxuKX19LF89ZnVuY3Rpb24obil7aWYobj1ufHx0LmV2ZW50KXt2YXIgZT10aGlzfHxuLnRhcmdldHx8dCxhPWVbVltuLnR5cGVdLnRydWVdO2lmKGEpaWYoMT09PWEubGVuZ3RoKWYoYVswXSxlLG4pO2Vsc2UgZm9yKHZhciBvPWEuc2xpY2UoKSxyPTA7cjxvLmxlbmd0aCYmKCFufHwhMCE9PW5bV10pO3IrKylmKG9bcl0sZSxuKX19O2Z1bmN0aW9uIEMobixhKXtpZighbilyZXR1cm4hMTt2YXIgcj0hMDthJiZ2b2lkIDAhPT1hLnVzZUcmJihyPWEudXNlRyk7dmFyIGk9YSYmYS52aCxmPSEwO2EmJnZvaWQgMCE9PWEuY2hrRHVwJiYoZj1hLmNoa0R1cCk7dmFyIEM9ITE7YSYmdm9pZCAwIT09YS5ydCYmKEM9YS5ydCk7Zm9yKHZhciBNPW47TSYmIU0uaGFzT3duUHJvcGVydHkobyk7KU09ZShNKTtpZighTSYmbltvXSYmKE09biksIU0pcmV0dXJuITE7aWYoTVtwXSlyZXR1cm4hMTt2YXIgTyx4PWEmJmEuZXZlbnROYW1lVG9TdHJpbmcseT17fSxrPU1bcF09TVtvXSx2PU1bYihjKV09TVtjXSx3PU1bYihzKV09TVtzXSxTPU1bYihnKV09TVtnXTtmdW5jdGlvbiBFKHQsbil7cmV0dXJuIUwmJiJvYmplY3QiPT10eXBlb2YgdCYmdD8hIXQuY2FwdHVyZTpMJiZuPyJib29sZWFuIj09dHlwZW9mIHQ/e2NhcHR1cmU6dCxwYXNzaXZlOiEwfTp0PyJvYmplY3QiPT10eXBlb2YgdCYmITEhPT10LnBhc3NpdmU/T2JqZWN0LmFzc2lnbihPYmplY3QuYXNzaWduKHt9LHQpLHtwYXNzaXZlOiEwfSk6dDp7cGFzc2l2ZTohMH06dH1hJiZhLnByZXBlbmQmJihPPU1bYihhLnByZXBlbmQpXT1NW2EucHJlcGVuZF0pO3ZhciBBPXI/ZnVuY3Rpb24odCl7aWYoIXkuaXNFeGlzdGluZylyZXR1cm4gay5jYWxsKHkudGFyZ2V0LHkuZXZlbnROYW1lLHkuY2FwdHVyZT9fOmgseS5vcHRpb25zKX06ZnVuY3Rpb24odCl7cmV0dXJuIGsuY2FsbCh5LnRhcmdldCx5LmV2ZW50TmFtZSx0Lmludm9rZSx5Lm9wdGlvbnMpfSx6PXI/ZnVuY3Rpb24odCl7aWYoIXQuaXNSZW1vdmVkKXt2YXIgbj1WW3QuZXZlbnROYW1lXSxlPXZvaWQgMDtuJiYoZT1uW3QuY2FwdHVyZT9sOm1dKTt2YXIgYT1lJiZ0LnRhcmdldFtlXTtpZihhKWZvcih2YXIgbz0wO288YS5sZW5ndGg7bysrKWlmKGFbb109PT10KXthLnNwbGljZShvLDEpLHQuaXNSZW1vdmVkPSEwLDA9PT1hLmxlbmd0aCYmKHQuYWxsUmVtb3ZlZD0hMCx0LnRhcmdldFtlXT1udWxsKTticmVha319aWYodC5hbGxSZW1vdmVkKXJldHVybiB2LmNhbGwodC50YXJnZXQsdC5ldmVudE5hbWUsdC5jYXB0dXJlP186aCx0Lm9wdGlvbnMpfTpmdW5jdGlvbih0KXtyZXR1cm4gdi5jYWxsKHQudGFyZ2V0LHQuZXZlbnROYW1lLHQuaW52b2tlLHQub3B0aW9ucyl9LFI9YSYmYS5kaWZmP2EuZGlmZjpmdW5jdGlvbih0LG4pe3ZhciBlPXR5cGVvZiBuO3JldHVybiJmdW5jdGlvbiI9PT1lJiZ0LmNhbGxiYWNrPT09bnx8Im9iamVjdCI9PT1lJiZ0Lm9yaWdpbmFsRGVsZWdhdGU9PT1ufSxEPVpvbmVbYigiQkxBQ0tfTElTVEVEX0VWRU5UUyIpXSxJPXRbYigiUEFTU0lWRV9FVkVOVFMiKV0sTj1mdW5jdGlvbihuLGUsbyxjLHMsZCl7cmV0dXJuIHZvaWQgMD09PXMmJihzPSExKSx2b2lkIDA9PT1kJiYoZD0hMSksZnVuY3Rpb24oKXt2YXIgZz10aGlzfHx0LHA9YXJndW1lbnRzWzBdO2EmJmEudHJhbnNmZXJFdmVudE5hbWUmJihwPWEudHJhbnNmZXJFdmVudE5hbWUocCkpO3ZhciBiPWFyZ3VtZW50c1sxXTtpZighYilyZXR1cm4gbi5hcHBseSh0aGlzLGFyZ3VtZW50cyk7aWYoUCYmInVuY2F1Z2h0RXhjZXB0aW9uIj09PXApcmV0dXJuIG4uYXBwbHkodGhpcyxhcmd1bWVudHMpO3ZhciB1PSExO2lmKCJmdW5jdGlvbiIhPXR5cGVvZiBiKXtpZighYi5oYW5kbGVFdmVudClyZXR1cm4gbi5hcHBseSh0aGlzLGFyZ3VtZW50cyk7dT0hMH1pZighaXx8aShuLGIsZyxhcmd1bWVudHMpKXt2YXIgaD1MJiYhIUkmJi0xIT09SS5pbmRleE9mKHApLF89RShhcmd1bWVudHNbMl0saCk7aWYoRClmb3IodmFyIEM9MDtDPEQubGVuZ3RoO0MrKylpZihwPT09RFtDXSlyZXR1cm4gaD9uLmNhbGwoZyxwLGIsXyk6bi5hcHBseSh0aGlzLGFyZ3VtZW50cyk7dmFyIE09ISFfJiYoImJvb2xlYW4iPT10eXBlb2YgX3x8Xy5jYXB0dXJlKSxPPSEoIV98fCJvYmplY3QiIT10eXBlb2YgXykmJl8ub25jZSxrPVpvbmUuY3VycmVudCx2PVZbcF07dnx8KEcocCx4KSx2PVZbcF0pO3ZhciB3LFM9dltNP2w6bV0sQT1nW1NdLHo9ITE7aWYoQSl7aWYoej0hMCxmKWZvcihDPTA7QzxBLmxlbmd0aDtDKyspaWYoUihBW0NdLGIpKXJldHVybn1lbHNlIEE9Z1tTXT1bXTt2YXIgVD1nLmNvbnN0cnVjdG9yLm5hbWUsTj1qW1RdO04mJih3PU5bcF0pLHd8fCh3PVQrZSsoeD94KHApOnApKSx5Lm9wdGlvbnM9XyxPJiYoeS5vcHRpb25zLm9uY2U9ITEpLHkudGFyZ2V0PWcseS5jYXB0dXJlPU0seS5ldmVudE5hbWU9cCx5LmlzRXhpc3Rpbmc9ejt2YXIgRj1yP0I6dm9pZCAwO0YmJihGLnRhc2tEYXRhPXkpO3ZhciBIPWsuc2NoZWR1bGVFdmVudFRhc2sodyxiLEYsbyxjKTtyZXR1cm4geS50YXJnZXQ9bnVsbCxGJiYoRi50YXNrRGF0YT1udWxsKSxPJiYoXy5vbmNlPSEwKSwoTHx8ImJvb2xlYW4iIT10eXBlb2YgSC5vcHRpb25zKSYmKEgub3B0aW9ucz1fKSxILnRhcmdldD1nLEguY2FwdHVyZT1NLEguZXZlbnROYW1lPXAsdSYmKEgub3JpZ2luYWxEZWxlZ2F0ZT1iKSxkP0EudW5zaGlmdChIKTpBLnB1c2goSCkscz9nOnZvaWQgMH19fTtyZXR1cm4gTVtvXT1OKGssdSxBLHosQyksTyYmKE0ucHJlcGVuZExpc3RlbmVyPU4oTywiLnByZXBlbmRMaXN0ZW5lcjoiLChmdW5jdGlvbih0KXtyZXR1cm4gTy5jYWxsKHkudGFyZ2V0LHkuZXZlbnROYW1lLHQuaW52b2tlLHkub3B0aW9ucyl9KSx6LEMsITApKSxNW2NdPWZ1bmN0aW9uKCl7dmFyIG49dGhpc3x8dCxlPWFyZ3VtZW50c1swXTthJiZhLnRyYW5zZmVyRXZlbnROYW1lJiYoZT1hLnRyYW5zZmVyRXZlbnROYW1lKGUpKTt2YXIgbz1hcmd1bWVudHNbMl0scj0hIW8mJigiYm9vbGVhbiI9PXR5cGVvZiBvfHxvLmNhcHR1cmUpLGM9YXJndW1lbnRzWzFdO2lmKCFjKXJldHVybiB2LmFwcGx5KHRoaXMsYXJndW1lbnRzKTtpZighaXx8aSh2LGMsbixhcmd1bWVudHMpKXt2YXIgcyxnPVZbZV07ZyYmKHM9Z1tyP2w6bV0pO3ZhciBwPXMmJm5bc107aWYocClmb3IodmFyIGI9MDtiPHAubGVuZ3RoO2IrKyl7dmFyIHU9cFtiXTtpZihSKHUsYykpcmV0dXJuIHAuc3BsaWNlKGIsMSksdS5pc1JlbW92ZWQ9ITAsMD09PXAubGVuZ3RoJiYodS5hbGxSZW1vdmVkPSEwLG5bc109bnVsbCwic3RyaW5nIj09dHlwZW9mIGUmJihuW2QrIk9OX1BST1BFUlRZIitlXT1udWxsKSksdS56b25lLmNhbmNlbFRhc2sodSksQz9uOnZvaWQgMH1yZXR1cm4gdi5hcHBseSh0aGlzLGFyZ3VtZW50cyl9fSxNW3NdPWZ1bmN0aW9uKCl7dmFyIG49dGhpc3x8dCxlPWFyZ3VtZW50c1swXTthJiZhLnRyYW5zZmVyRXZlbnROYW1lJiYoZT1hLnRyYW5zZmVyRXZlbnROYW1lKGUpKTtmb3IodmFyIG89W10scj1xKG4seD94KGUpOmUpLGk9MDtpPHIubGVuZ3RoO2krKyl7dmFyIGM9cltpXTtvLnB1c2goYy5vcmlnaW5hbERlbGVnYXRlP2Mub3JpZ2luYWxEZWxlZ2F0ZTpjLmNhbGxiYWNrKX1yZXR1cm4gb30sTVtnXT1mdW5jdGlvbigpe3ZhciBuPXRoaXN8fHQsZT1hcmd1bWVudHNbMF07aWYoZSl7YSYmYS50cmFuc2ZlckV2ZW50TmFtZSYmKGU9YS50cmFuc2ZlckV2ZW50TmFtZShlKSk7dmFyIG89VltlXTtpZihvKXt2YXIgcj1uW28uZmFsc2VdLGk9bltvLnRydWVdO2lmKHIpe3ZhciBzPXIuc2xpY2UoKTtmb3IoZD0wO2Q8cy5sZW5ndGg7ZCsrKXRoaXNbY10uY2FsbCh0aGlzLGUsKGw9c1tkXSkub3JpZ2luYWxEZWxlZ2F0ZT9sLm9yaWdpbmFsRGVsZWdhdGU6bC5jYWxsYmFjayxsLm9wdGlvbnMpfWlmKGkpZm9yKHM9aS5zbGljZSgpLGQ9MDtkPHMubGVuZ3RoO2QrKyl7dmFyIGw7dGhpc1tjXS5jYWxsKHRoaXMsZSwobD1zW2RdKS5vcmlnaW5hbERlbGVnYXRlP2wub3JpZ2luYWxEZWxlZ2F0ZTpsLmNhbGxiYWNrLGwub3B0aW9ucyl9fX1lbHNle2Zvcih2YXIgbT1PYmplY3Qua2V5cyhuKSxkPTA7ZDxtLmxlbmd0aDtkKyspe3ZhciBwPVUuZXhlYyhtW2RdKSxiPXAmJnBbMV07YiYmInJlbW92ZUxpc3RlbmVyIiE9PWImJnRoaXNbZ10uY2FsbCh0aGlzLGIpfXRoaXNbZ10uY2FsbCh0aGlzLCJyZW1vdmVMaXN0ZW5lciIpfWlmKEMpcmV0dXJuIHRoaXN9LFQoTVtvXSxrKSxUKE1bY10sdiksUyYmVChNW2ddLFMpLHcmJlQoTVtzXSx3KSwhMH1mb3IodmFyIE09W10sTz0wO088bi5sZW5ndGg7TysrKU1bT109QyhuW09dLGEpO3JldHVybiBNfWZ1bmN0aW9uIHEodCxuKXtpZighbil7dmFyIGU9W107Zm9yKHZhciBhIGluIHQpe3ZhciBvPVUuZXhlYyhhKSxyPW8mJm9bMV07aWYociYmKCFufHxyPT09bikpe3ZhciBpPXRbYV07aWYoaSlmb3IodmFyIGM9MDtjPGkubGVuZ3RoO2MrKyllLnB1c2goaVtjXSl9fXJldHVybiBlfXZhciBzPVZbbl07c3x8KEcobikscz1WW25dKTt2YXIgbD10W3MuZmFsc2VdLG09dFtzLnRydWVdO3JldHVybiBsP20/bC5jb25jYXQobSk6bC5zbGljZSgpOm0/bS5zbGljZSgpOltdfWZ1bmN0aW9uIFoodCxuKXt2YXIgZT10LkV2ZW50O2UmJmUucHJvdG90eXBlJiZuLnBhdGNoTWV0aG9kKGUucHJvdG90eXBlLCJzdG9wSW1tZWRpYXRlUHJvcGFnYXRpb24iLChmdW5jdGlvbih0KXtyZXR1cm4gZnVuY3Rpb24obixlKXtuW1ddPSEwLHQmJnQuYXBwbHkobixlKX19KSl9Ci8qKgogICAgICAgICAqIEBsaWNlbnNlCiAgICAgICAgICogQ29weXJpZ2h0IEdvb2dsZSBJbmMuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCiAgICAgICAgICoKICAgICAgICAgKiBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhbiBNSVQtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQogICAgICAgICAqIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUgYXQgaHR0cHM6Ly9hbmd1bGFyLmlvL2xpY2Vuc2UKICAgICAgICAgKi9mdW5jdGlvbiBYKHQsbixlLGEsbyl7dmFyIHI9Wm9uZS5fX3N5bWJvbF9fKGEpO2lmKCFuW3JdKXt2YXIgaT1uW3JdPW5bYV07blthXT1mdW5jdGlvbihyLGMscyl7cmV0dXJuIGMmJmMucHJvdG90eXBlJiZvLmZvckVhY2goKGZ1bmN0aW9uKG4pe3ZhciBvPWUrIi4iK2ErIjo6IituLHI9Yy5wcm90b3R5cGU7aWYoci5oYXNPd25Qcm9wZXJ0eShuKSl7dmFyIGk9dC5PYmplY3RHZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IocixuKTtpJiZpLnZhbHVlPyhpLnZhbHVlPXQud3JhcFdpdGhDdXJyZW50Wm9uZShpLnZhbHVlLG8pLHQuX3JlZGVmaW5lUHJvcGVydHkoYy5wcm90b3R5cGUsbixpKSk6cltuXSYmKHJbbl09dC53cmFwV2l0aEN1cnJlbnRab25lKHJbbl0sbykpfWVsc2UgcltuXSYmKHJbbl09dC53cmFwV2l0aEN1cnJlbnRab25lKHJbbl0sbykpfSkpLGkuY2FsbChuLHIsYyxzKX0sdC5hdHRhY2hPcmlnaW5Ub1BhdGNoZWQoblthXSxpKX19Ci8qKgogICAgICAgICAqIEBsaWNlbnNlCiAgICAgICAgICogQ29weXJpZ2h0IEdvb2dsZSBJbmMuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCiAgICAgICAgICoKICAgICAgICAgKiBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhbiBNSVQtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQogICAgICAgICAqIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUgYXQgaHR0cHM6Ly9hbmd1bGFyLmlvL2xpY2Vuc2UKICAgICAgICAgKi92YXIgSixRLEssJCx0dCxudD1bImFic29sdXRlZGV2aWNlb3JpZW50YXRpb24iLCJhZnRlcmlucHV0IiwiYWZ0ZXJwcmludCIsImFwcGluc3RhbGxlZCIsImJlZm9yZWluc3RhbGxwcm9tcHQiLCJiZWZvcmVwcmludCIsImJlZm9yZXVubG9hZCIsImRldmljZWxpZ2h0IiwiZGV2aWNlbW90aW9uIiwiZGV2aWNlb3JpZW50YXRpb24iLCJkZXZpY2VvcmllbnRhdGlvbmFic29sdXRlIiwiZGV2aWNlcHJveGltaXR5IiwiaGFzaGNoYW5nZSIsImxhbmd1YWdlY2hhbmdlIiwibWVzc2FnZSIsIm1vemJlZm9yZXBhaW50Iiwib2ZmbGluZSIsIm9ubGluZSIsInBhaW50IiwicGFnZXNob3ciLCJwYWdlaGlkZSIsInBvcHN0YXRlIiwicmVqZWN0aW9uaGFuZGxlZCIsInN0b3JhZ2UiLCJ1bmhhbmRsZWRyZWplY3Rpb24iLCJ1bmxvYWQiLCJ1c2VycHJveGltaXR5IiwidnJkaXNwbGF5Y29ubmVjdGVkIiwidnJkaXNwbGF5ZGlzY29ubmVjdGVkIiwidnJkaXNwbGF5cHJlc2VudGNoYW5nZSJdLGV0PVsiZW5jcnlwdGVkIiwid2FpdGluZ2ZvcmtleSIsIm1zbmVlZGtleSIsIm1vemludGVycnVwdGJlZ2luIiwibW96aW50ZXJydXB0ZW5kIl0sYXQ9WyJsb2FkIl0sb3Q9WyJibHVyIiwiZXJyb3IiLCJmb2N1cyIsImxvYWQiLCJyZXNpemUiLCJzY3JvbGwiLCJtZXNzYWdlZXJyb3IiXSxydD1bImJvdW5jZSIsImZpbmlzaCIsInN0YXJ0Il0saXQ9WyJsb2Fkc3RhcnQiLCJwcm9ncmVzcyIsImFib3J0IiwiZXJyb3IiLCJsb2FkIiwicHJvZ3Jlc3MiLCJ0aW1lb3V0IiwibG9hZGVuZCIsInJlYWR5c3RhdGVjaGFuZ2UiXSxjdD1bInVwZ3JhZGVuZWVkZWQiLCJjb21wbGV0ZSIsImFib3J0Iiwic3VjY2VzcyIsImVycm9yIiwiYmxvY2tlZCIsInZlcnNpb25jaGFuZ2UiLCJjbG9zZSJdLHN0PVsiY2xvc2UiLCJlcnJvciIsIm9wZW4iLCJtZXNzYWdlIl0sbHQ9WyJlcnJvciIsIm1lc3NhZ2UiXSxtdD1bImFib3J0IiwiYW5pbWF0aW9uY2FuY2VsIiwiYW5pbWF0aW9uZW5kIiwiYW5pbWF0aW9uaXRlcmF0aW9uIiwiYXV4Y2xpY2siLCJiZWZvcmVpbnB1dCIsImJsdXIiLCJjYW5jZWwiLCJjYW5wbGF5IiwiY2FucGxheXRocm91Z2giLCJjaGFuZ2UiLCJjb21wb3NpdGlvbnN0YXJ0IiwiY29tcG9zaXRpb251cGRhdGUiLCJjb21wb3NpdGlvbmVuZCIsImN1ZWNoYW5nZSIsImNsaWNrIiwiY2xvc2UiLCJjb250ZXh0bWVudSIsImN1cmVjaGFuZ2UiLCJkYmxjbGljayIsImRyYWciLCJkcmFnZW5kIiwiZHJhZ2VudGVyIiwiZHJhZ2V4aXQiLCJkcmFnbGVhdmUiLCJkcmFnb3ZlciIsImRyb3AiLCJkdXJhdGlvbmNoYW5nZSIsImVtcHRpZWQiLCJlbmRlZCIsImVycm9yIiwiZm9jdXMiLCJmb2N1c2luIiwiZm9jdXNvdXQiLCJnb3Rwb2ludGVyY2FwdHVyZSIsImlucHV0IiwiaW52YWxpZCIsImtleWRvd24iLCJrZXlwcmVzcyIsImtleXVwIiwibG9hZCIsImxvYWRzdGFydCIsImxvYWRlZGRhdGEiLCJsb2FkZWRtZXRhZGF0YSIsImxvc3Rwb2ludGVyY2FwdHVyZSIsIm1vdXNlZG93biIsIm1vdXNlZW50ZXIiLCJtb3VzZWxlYXZlIiwibW91c2Vtb3ZlIiwibW91c2VvdXQiLCJtb3VzZW92ZXIiLCJtb3VzZXVwIiwibW91c2V3aGVlbCIsIm9yaWVudGF0aW9uY2hhbmdlIiwicGF1c2UiLCJwbGF5IiwicGxheWluZyIsInBvaW50ZXJjYW5jZWwiLCJwb2ludGVyZG93biIsInBvaW50ZXJlbnRlciIsInBvaW50ZXJsZWF2ZSIsInBvaW50ZXJsb2NrY2hhbmdlIiwibW96cG9pbnRlcmxvY2tjaGFuZ2UiLCJ3ZWJraXRwb2ludGVybG9ja2VyY2hhbmdlIiwicG9pbnRlcmxvY2tlcnJvciIsIm1venBvaW50ZXJsb2NrZXJyb3IiLCJ3ZWJraXRwb2ludGVybG9ja2Vycm9yIiwicG9pbnRlcm1vdmUiLCJwb2ludG91dCIsInBvaW50ZXJvdmVyIiwicG9pbnRlcnVwIiwicHJvZ3Jlc3MiLCJyYXRlY2hhbmdlIiwicmVzZXQiLCJyZXNpemUiLCJzY3JvbGwiLCJzZWVrZWQiLCJzZWVraW5nIiwic2VsZWN0Iiwic2VsZWN0aW9uY2hhbmdlIiwic2VsZWN0c3RhcnQiLCJzaG93Iiwic29ydCIsInN0YWxsZWQiLCJzdWJtaXQiLCJzdXNwZW5kIiwidGltZXVwZGF0ZSIsInZvbHVtZWNoYW5nZSIsInRvdWNoY2FuY2VsIiwidG91Y2htb3ZlIiwidG91Y2hzdGFydCIsInRvdWNoZW5kIiwidHJhbnNpdGlvbmNhbmNlbCIsInRyYW5zaXRpb25lbmQiLCJ3YWl0aW5nIiwid2hlZWwiXS5jb25jYXQoWyJ3ZWJnbGNvbnRleHRyZXN0b3JlZCIsIndlYmdsY29udGV4dGxvc3QiLCJ3ZWJnbGNvbnRleHRjcmVhdGlvbmVycm9yIl0sWyJhdXRvY29tcGxldGUiLCJhdXRvY29tcGxldGVlcnJvciJdLFsidG9nZ2xlIl0sWyJhZnRlcnNjcmlwdGV4ZWN1dGUiLCJiZWZvcmVzY3JpcHRleGVjdXRlIiwiRE9NQ29udGVudExvYWRlZCIsImZyZWV6ZSIsImZ1bGxzY3JlZW5jaGFuZ2UiLCJtb3pmdWxsc2NyZWVuY2hhbmdlIiwid2Via2l0ZnVsbHNjcmVlbmNoYW5nZSIsIm1zZnVsbHNjcmVlbmNoYW5nZSIsImZ1bGxzY3JlZW5lcnJvciIsIm1vemZ1bGxzY3JlZW5lcnJvciIsIndlYmtpdGZ1bGxzY3JlZW5lcnJvciIsIm1zZnVsbHNjcmVlbmVycm9yIiwicmVhZHlzdGF0ZWNoYW5nZSIsInZpc2liaWxpdHljaGFuZ2UiLCJyZXN1bWUiXSxudCxbImJlZm9yZWNvcHkiLCJiZWZvcmVjdXQiLCJiZWZvcmVwYXN0ZSIsImNvcHkiLCJjdXQiLCJwYXN0ZSIsImRyYWdzdGFydCIsImxvYWRlbmQiLCJhbmltYXRpb25zdGFydCIsInNlYXJjaCIsInRyYW5zaXRpb25ydW4iLCJ0cmFuc2l0aW9uc3RhcnQiLCJ3ZWJraXRhbmltYXRpb25lbmQiLCJ3ZWJraXRhbmltYXRpb25pdGVyYXRpb24iLCJ3ZWJraXRhbmltYXRpb25zdGFydCIsIndlYmtpdHRyYW5zaXRpb25lbmQiXSxbImFjdGl2YXRlIiwiYWZ0ZXJ1cGRhdGUiLCJhcmlhcmVxdWVzdCIsImJlZm9yZWFjdGl2YXRlIiwiYmVmb3JlZGVhY3RpdmF0ZSIsImJlZm9yZWVkaXRmb2N1cyIsImJlZm9yZXVwZGF0ZSIsImNlbGxjaGFuZ2UiLCJjb250cm9sc2VsZWN0IiwiZGF0YWF2YWlsYWJsZSIsImRhdGFzZXRjaGFuZ2VkIiwiZGF0YXNldGNvbXBsZXRlIiwiZXJyb3J1cGRhdGUiLCJmaWx0ZXJjaGFuZ2UiLCJsYXlvdXRjb21wbGV0ZSIsImxvc2VjYXB0dXJlIiwibW92ZSIsIm1vdmVlbmQiLCJtb3Zlc3RhcnQiLCJwcm9wZXJ0eWNoYW5nZSIsInJlc2l6ZWVuZCIsInJlc2l6ZXN0YXJ0Iiwicm93ZW50ZXIiLCJyb3dleGl0Iiwicm93c2RlbGV0ZSIsInJvd3NpbnNlcnRlZCIsImNvbW1hbmQiLCJjb21wYXNzbmVlZHNjYWxpYnJhdGlvbiIsImRlYWN0aXZhdGUiLCJoZWxwIiwibXNjb250ZW50em9vbSIsIm1zbWFuaXB1bGF0aW9uc3RhdGVjaGFuZ2VkIiwibXNnZXN0dXJlY2hhbmdlIiwibXNnZXN0dXJlZG91YmxldGFwIiwibXNnZXN0dXJlZW5kIiwibXNnZXN0dXJlaG9sZCIsIm1zZ2VzdHVyZXN0YXJ0IiwibXNnZXN0dXJldGFwIiwibXNnb3Rwb2ludGVyY2FwdHVyZSIsIm1zaW5lcnRpYXN0YXJ0IiwibXNsb3N0cG9pbnRlcmNhcHR1cmUiLCJtc3BvaW50ZXJjYW5jZWwiLCJtc3BvaW50ZXJkb3duIiwibXNwb2ludGVyZW50ZXIiLCJtc3BvaW50ZXJob3ZlciIsIm1zcG9pbnRlcmxlYXZlIiwibXNwb2ludGVybW92ZSIsIm1zcG9pbnRlcm91dCIsIm1zcG9pbnRlcm92ZXIiLCJtc3BvaW50ZXJ1cCIsInBvaW50ZXJvdXQiLCJtc3NpdGVtb2RlanVtcGxpc3RpdGVtcmVtb3ZlZCIsIm1zdGh1bWJuYWlsY2xpY2siLCJzdG9wIiwic3RvcmFnZWNvbW1pdCJdKTtmdW5jdGlvbiBkdCh0LG4sZSl7aWYoIWV8fDA9PT1lLmxlbmd0aClyZXR1cm4gbjt2YXIgYT1lLmZpbHRlcigoZnVuY3Rpb24obil7cmV0dXJuIG4udGFyZ2V0PT09dH0pKTtpZighYXx8MD09PWEubGVuZ3RoKXJldHVybiBuO3ZhciBvPWFbMF0uaWdub3JlUHJvcGVydGllcztyZXR1cm4gbi5maWx0ZXIoKGZ1bmN0aW9uKHQpe3JldHVybi0xPT09by5pbmRleE9mKHQpfSkpfWZ1bmN0aW9uIGd0KHQsbixlLGEpe3QmJlModCxkdCh0LG4sZSksYSl9ZnVuY3Rpb24gcHQodCxuKXtpZigoIVB8fHkpJiYhWm9uZVt0LnN5bWJvbCgicGF0Y2hFdmVudHMiKV0pe3ZhciBhPSJ1bmRlZmluZWQiIT10eXBlb2YgV2ViU29ja2V0LG89bi5fX1pvbmVfaWdub3JlX29uX3Byb3BlcnRpZXM7aWYoeCl7dmFyIHI9d2luZG93LGk9Tj9be3RhcmdldDpyLGlnbm9yZVByb3BlcnRpZXM6WyJlcnJvciJdfV06W107Z3QocixtdC5jb25jYXQoWyJtZXNzYWdlZXJyb3IiXSksbz9vLmNvbmNhdChpKTpvLGUocikpLGd0KERvY3VtZW50LnByb3RvdHlwZSxtdCxvKSx2b2lkIDAhPT1yLlNWR0VsZW1lbnQmJmd0KHIuU1ZHRWxlbWVudC5wcm90b3R5cGUsbXQsbyksZ3QoRWxlbWVudC5wcm90b3R5cGUsbXQsbyksZ3QoSFRNTEVsZW1lbnQucHJvdG90eXBlLG10LG8pLGd0KEhUTUxNZWRpYUVsZW1lbnQucHJvdG90eXBlLGV0LG8pLGd0KEhUTUxGcmFtZVNldEVsZW1lbnQucHJvdG90eXBlLG50LmNvbmNhdChvdCksbyksZ3QoSFRNTEJvZHlFbGVtZW50LnByb3RvdHlwZSxudC5jb25jYXQob3QpLG8pLGd0KEhUTUxGcmFtZUVsZW1lbnQucHJvdG90eXBlLGF0LG8pLGd0KEhUTUxJRnJhbWVFbGVtZW50LnByb3RvdHlwZSxhdCxvKTt2YXIgYz1yLkhUTUxNYXJxdWVlRWxlbWVudDtjJiZndChjLnByb3RvdHlwZSxydCxvKTt2YXIgcz1yLldvcmtlcjtzJiZndChzLnByb3RvdHlwZSxsdCxvKX12YXIgbD1uLlhNTEh0dHBSZXF1ZXN0O2wmJmd0KGwucHJvdG90eXBlLGl0LG8pO3ZhciBtPW4uWE1MSHR0cFJlcXVlc3RFdmVudFRhcmdldDttJiZndChtJiZtLnByb3RvdHlwZSxpdCxvKSwidW5kZWZpbmVkIiE9dHlwZW9mIElEQkluZGV4JiYoZ3QoSURCSW5kZXgucHJvdG90eXBlLGN0LG8pLGd0KElEQlJlcXVlc3QucHJvdG90eXBlLGN0LG8pLGd0KElEQk9wZW5EQlJlcXVlc3QucHJvdG90eXBlLGN0LG8pLGd0KElEQkRhdGFiYXNlLnByb3RvdHlwZSxjdCxvKSxndChJREJUcmFuc2FjdGlvbi5wcm90b3R5cGUsY3QsbyksZ3QoSURCQ3Vyc29yLnByb3RvdHlwZSxjdCxvKSksYSYmZ3QoV2ViU29ja2V0LnByb3RvdHlwZSxzdCxvKX19Ci8qKgogICAgICAgICAqIEBsaWNlbnNlCiAgICAgICAgICogQ29weXJpZ2h0IEdvb2dsZSBJbmMuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCiAgICAgICAgICoKICAgICAgICAgKiBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhbiBNSVQtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQogICAgICAgICAqIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUgYXQgaHR0cHM6Ly9hbmd1bGFyLmlvL2xpY2Vuc2UKICAgICAgICAgKi9mdW5jdGlvbiBidCgpe0o9Wm9uZS5fX3N5bWJvbF9fLFE9T2JqZWN0W0ooImRlZmluZVByb3BlcnR5IildPU9iamVjdC5kZWZpbmVQcm9wZXJ0eSxLPU9iamVjdFtKKCJnZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IiKV09T2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvciwkPU9iamVjdC5jcmVhdGUsdHQ9SigidW5jb25maWd1cmFibGVzIiksT2JqZWN0LmRlZmluZVByb3BlcnR5PWZ1bmN0aW9uKHQsbixlKXtpZihmdCh0LG4pKXRocm93IG5ldyBUeXBlRXJyb3IoIkNhbm5vdCBhc3NpZ24gdG8gcmVhZCBvbmx5IHByb3BlcnR5ICciK24rIicgb2YgIit0KTt2YXIgYT1lLmNvbmZpZ3VyYWJsZTtyZXR1cm4icHJvdG90eXBlIiE9PW4mJihlPWh0KHQsbixlKSksX3QodCxuLGUsYSl9LE9iamVjdC5kZWZpbmVQcm9wZXJ0aWVzPWZ1bmN0aW9uKHQsbil7cmV0dXJuIE9iamVjdC5rZXlzKG4pLmZvckVhY2goKGZ1bmN0aW9uKGUpe09iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LGUsbltlXSl9KSksdH0sT2JqZWN0LmNyZWF0ZT1mdW5jdGlvbih0LG4pe3JldHVybiJvYmplY3QiIT10eXBlb2Ygbnx8T2JqZWN0LmlzRnJvemVuKG4pfHxPYmplY3Qua2V5cyhuKS5mb3JFYWNoKChmdW5jdGlvbihlKXtuW2VdPWh0KHQsZSxuW2VdKX0pKSwkKHQsbil9LE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3I9ZnVuY3Rpb24odCxuKXt2YXIgZT1LKHQsbik7cmV0dXJuIGUmJmZ0KHQsbikmJihlLmNvbmZpZ3VyYWJsZT0hMSksZX19ZnVuY3Rpb24gdXQodCxuLGUpe3ZhciBhPWUuY29uZmlndXJhYmxlO3JldHVybiBfdCh0LG4sZT1odCh0LG4sZSksYSl9ZnVuY3Rpb24gZnQodCxuKXtyZXR1cm4gdCYmdFt0dF0mJnRbdHRdW25dfWZ1bmN0aW9uIGh0KHQsbixlKXtyZXR1cm4gT2JqZWN0LmlzRnJvemVuKGUpfHwoZS5jb25maWd1cmFibGU9ITApLGUuY29uZmlndXJhYmxlfHwodFt0dF18fE9iamVjdC5pc0Zyb3plbih0KXx8USh0LHR0LHt3cml0YWJsZTohMCx2YWx1ZTp7fX0pLHRbdHRdJiYodFt0dF1bbl09ITApKSxlfWZ1bmN0aW9uIF90KHQsbixlLGEpe3RyeXtyZXR1cm4gUSh0LG4sZSl9Y2F0Y2gocil7aWYoIWUuY29uZmlndXJhYmxlKXRocm93IHI7dm9pZCAwPT09YT9kZWxldGUgZS5jb25maWd1cmFibGU6ZS5jb25maWd1cmFibGU9YTt0cnl7cmV0dXJuIFEodCxuLGUpfWNhdGNoKGEpe3ZhciBvPW51bGw7dHJ5e289SlNPTi5zdHJpbmdpZnkoZSl9Y2F0Y2godCl7bz1lLnRvU3RyaW5nKCl9Y29uc29sZS5sb2coIkF0dGVtcHRpbmcgdG8gY29uZmlndXJlICciK24rIicgd2l0aCBkZXNjcmlwdG9yICciK28rIicgb24gb2JqZWN0ICciK3QrIicgYW5kIGdvdCBlcnJvciwgZ2l2aW5nIHVwOiAiK2EpfX19Ci8qKgogICAgICAgICAqIEBsaWNlbnNlCiAgICAgICAgICogQ29weXJpZ2h0IEdvb2dsZSBJbmMuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCiAgICAgICAgICoKICAgICAgICAgKiBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhbiBNSVQtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQogICAgICAgICAqIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUgYXQgaHR0cHM6Ly9hbmd1bGFyLmlvL2xpY2Vuc2UKICAgICAgICAgKi9mdW5jdGlvbiBDdCh0LG4pe3ZhciBlPW4uZ2V0R2xvYmFsT2JqZWN0cygpLGE9ZS5ldmVudE5hbWVzLG89ZS5nbG9iYWxTb3VyY2VzLHI9ZS56b25lU3ltYm9sRXZlbnROYW1lcyxpPWUuVFJVRV9TVFIsYz1lLkZBTFNFX1NUUixzPWUuWk9ORV9TWU1CT0xfUFJFRklYLGw9IkFwcGxpY2F0aW9uQ2FjaGUsRXZlbnRTb3VyY2UsRmlsZVJlYWRlcixJbnB1dE1ldGhvZENvbnRleHQsTWVkaWFDb250cm9sbGVyLE1lc3NhZ2VQb3J0LE5vZGUsUGVyZm9ybWFuY2UsU1ZHRWxlbWVudEluc3RhbmNlLFNoYXJlZFdvcmtlcixUZXh0VHJhY2ssVGV4dFRyYWNrQ3VlLFRleHRUcmFja0xpc3QsV2ViS2l0TmFtZWRGbG93LFdpbmRvdyxXb3JrZXIsV29ya2VyR2xvYmFsU2NvcGUsWE1MSHR0cFJlcXVlc3QsWE1MSHR0cFJlcXVlc3RFdmVudFRhcmdldCxYTUxIdHRwUmVxdWVzdFVwbG9hZCxJREJSZXF1ZXN0LElEQk9wZW5EQlJlcXVlc3QsSURCRGF0YWJhc2UsSURCVHJhbnNhY3Rpb24sSURCQ3Vyc29yLERCSW5kZXgsV2ViU29ja2V0Ii5zcGxpdCgiLCIpLG09W10sZD10Lnd0ZixnPSJBbmNob3IsQXJlYSxBdWRpbyxCUixCYXNlLEJhc2VGb250LEJvZHksQnV0dG9uLENhbnZhcyxDb250ZW50LERMaXN0LERpcmVjdG9yeSxEaXYsRW1iZWQsRmllbGRTZXQsRm9udCxGb3JtLEZyYW1lLEZyYW1lU2V0LEhSLEhlYWQsSGVhZGluZyxIdG1sLElGcmFtZSxJbWFnZSxJbnB1dCxLZXlnZW4sTEksTGFiZWwsTGVnZW5kLExpbmssTWFwLE1hcnF1ZWUsTWVkaWEsTWVudSxNZXRhLE1ldGVyLE1vZCxPTGlzdCxPYmplY3QsT3B0R3JvdXAsT3B0aW9uLE91dHB1dCxQYXJhZ3JhcGgsUHJlLFByb2dyZXNzLFF1b3RlLFNjcmlwdCxTZWxlY3QsU291cmNlLFNwYW4sU3R5bGUsVGFibGVDYXB0aW9uLFRhYmxlQ2VsbCxUYWJsZUNvbCxUYWJsZSxUYWJsZVJvdyxUYWJsZVNlY3Rpb24sVGV4dEFyZWEsVGl0bGUsVHJhY2ssVUxpc3QsVW5rbm93bixWaWRlbyIuc3BsaXQoIiwiKTtkP209Zy5tYXAoKGZ1bmN0aW9uKHQpe3JldHVybiJIVE1MIit0KyJFbGVtZW50In0pKS5jb25jYXQobCk6dC5FdmVudFRhcmdldD9tLnB1c2goIkV2ZW50VGFyZ2V0Iik6bT1sO2Zvcih2YXIgcD10Ll9fWm9uZV9kaXNhYmxlX0lFX2NoZWNrfHwhMSxiPXQuX19ab25lX2VuYWJsZV9jcm9zc19jb250ZXh0X2NoZWNrfHwhMSx1PW4uaXNJRU9yRWRnZSgpLGY9IltvYmplY3QgRnVuY3Rpb25XcmFwcGVyXSIsaD0iZnVuY3Rpb24gX19CUk9XU0VSVE9PTFNfQ09OU09MRV9TQUZFRlVOQygpIHsgW25hdGl2ZSBjb2RlXSB9IixfPXtNU1BvaW50ZXJDYW5jZWw6InBvaW50ZXJjYW5jZWwiLE1TUG9pbnRlckRvd246InBvaW50ZXJkb3duIixNU1BvaW50ZXJFbnRlcjoicG9pbnRlcmVudGVyIixNU1BvaW50ZXJIb3ZlcjoicG9pbnRlcmhvdmVyIixNU1BvaW50ZXJMZWF2ZToicG9pbnRlcmxlYXZlIixNU1BvaW50ZXJNb3ZlOiJwb2ludGVybW92ZSIsTVNQb2ludGVyT3V0OiJwb2ludGVyb3V0IixNU1BvaW50ZXJPdmVyOiJwb2ludGVyb3ZlciIsTVNQb2ludGVyVXA6InBvaW50ZXJ1cCJ9LEM9MDtDPGEubGVuZ3RoO0MrKyl7dmFyIE09cysoKGs9YVtDXSkrYyksTz1zKyhrK2kpO3Jba109e30scltrXVtjXT1NLHJba11baV09T31mb3IoQz0wO0M8Zy5sZW5ndGg7QysrKWZvcih2YXIgUD1nW0NdLHg9b1tQXT17fSx5PTA7eTxhLmxlbmd0aDt5Kyspe3ZhciBrO3hbaz1hW3ldXT1QKyIuYWRkRXZlbnRMaXN0ZW5lcjoiK2t9dmFyIHY9W107Zm9yKEM9MDtDPG0ubGVuZ3RoO0MrKyl7dmFyIHc9dFttW0NdXTt2LnB1c2godyYmdy5wcm90b3R5cGUpfXJldHVybiBuLnBhdGNoRXZlbnRUYXJnZXQodCx2LHt2aDpmdW5jdGlvbih0LG4sZSxhKXtpZighcCYmdSl7aWYoYil0cnl7dmFyIG87aWYoKG89bi50b1N0cmluZygpKT09PWZ8fG89PWgpcmV0dXJuIHQuYXBwbHkoZSxhKSwhMX1jYXRjaChuKXtyZXR1cm4gdC5hcHBseShlLGEpLCExfWVsc2UgaWYoKG89bi50b1N0cmluZygpKT09PWZ8fG89PWgpcmV0dXJuIHQuYXBwbHkoZSxhKSwhMX1lbHNlIGlmKGIpdHJ5e24udG9TdHJpbmcoKX1jYXRjaChuKXtyZXR1cm4gdC5hcHBseShlLGEpLCExfXJldHVybiEwfSx0cmFuc2ZlckV2ZW50TmFtZTpmdW5jdGlvbih0KXtyZXR1cm4gX1t0XXx8dH19KSxab25lW24uc3ltYm9sKCJwYXRjaEV2ZW50VGFyZ2V0IildPSEhdC5FdmVudFRhcmdldCwhMH0KLyoqCiAgICAgICAgICogQGxpY2Vuc2UKICAgICAgICAgKiBDb3B5cmlnaHQgR29vZ2xlIEluYy4gQWxsIFJpZ2h0cyBSZXNlcnZlZC4KICAgICAgICAgKgogICAgICAgICAqIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGFuIE1JVC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCiAgICAgICAgICogZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZSBhdCBodHRwczovL2FuZ3VsYXIuaW8vbGljZW5zZQogICAgICAgICAqLwovKioKICAgICAgICAgKiBAbGljZW5zZQogICAgICAgICAqIENvcHlyaWdodCBHb29nbGUgSW5jLiBBbGwgUmlnaHRzIFJlc2VydmVkLgogICAgICAgICAqCiAgICAgICAgICogVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYW4gTUlULXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKICAgICAgICAgKiBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlIGF0IGh0dHBzOi8vYW5ndWxhci5pby9saWNlbnNlCiAgICAgICAgICovCmZ1bmN0aW9uIE10KHQsbil7dmFyIGU9dC5nZXRHbG9iYWxPYmplY3RzKCk7aWYoKCFlLmlzTm9kZXx8ZS5pc01peCkmJiEoZnVuY3Rpb24gYSh0LG4pe3ZhciBlPXQuZ2V0R2xvYmFsT2JqZWN0cygpO2lmKChlLmlzQnJvd3Nlcnx8ZS5pc01peCkmJiF0Lk9iamVjdEdldE93blByb3BlcnR5RGVzY3JpcHRvcihIVE1MRWxlbWVudC5wcm90b3R5cGUsIm9uY2xpY2siKSYmInVuZGVmaW5lZCIhPXR5cGVvZiBFbGVtZW50KXt2YXIgYT10Lk9iamVjdEdldE93blByb3BlcnR5RGVzY3JpcHRvcihFbGVtZW50LnByb3RvdHlwZSwib25jbGljayIpO2lmKGEmJiFhLmNvbmZpZ3VyYWJsZSlyZXR1cm4hMTtpZihhKXt0Lk9iamVjdERlZmluZVByb3BlcnR5KEVsZW1lbnQucHJvdG90eXBlLCJvbmNsaWNrIix7ZW51bWVyYWJsZTohMCxjb25maWd1cmFibGU6ITAsZ2V0OmZ1bmN0aW9uKCl7cmV0dXJuITB9fSk7dmFyIG89ISFkb2N1bWVudC5jcmVhdGVFbGVtZW50KCJkaXYiKS5vbmNsaWNrO3JldHVybiB0Lk9iamVjdERlZmluZVByb3BlcnR5KEVsZW1lbnQucHJvdG90eXBlLCJvbmNsaWNrIixhKSxvfX12YXIgcj1uLlhNTEh0dHBSZXF1ZXN0O2lmKCFyKXJldHVybiExO3ZhciBpPSJvbnJlYWR5c3RhdGVjaGFuZ2UiLGM9ci5wcm90b3R5cGUscz10Lk9iamVjdEdldE93blByb3BlcnR5RGVzY3JpcHRvcihjLGkpO2lmKHMpcmV0dXJuIHQuT2JqZWN0RGVmaW5lUHJvcGVydHkoYyxpLHtlbnVtZXJhYmxlOiEwLGNvbmZpZ3VyYWJsZTohMCxnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4hMH19KSxvPSEhKG09bmV3IHIpLm9ucmVhZHlzdGF0ZWNoYW5nZSx0Lk9iamVjdERlZmluZVByb3BlcnR5KGMsaSxzfHx7fSksbzt2YXIgbD10LnN5bWJvbCgiZmFrZSIpO3QuT2JqZWN0RGVmaW5lUHJvcGVydHkoYyxpLHtlbnVtZXJhYmxlOiEwLGNvbmZpZ3VyYWJsZTohMCxnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpc1tsXX0sc2V0OmZ1bmN0aW9uKHQpe3RoaXNbbF09dH19KTt2YXIgbSxkPWZ1bmN0aW9uKCl7fTtyZXR1cm4obT1uZXcgcikub25yZWFkeXN0YXRlY2hhbmdlPWQsbz1tW2xdPT09ZCxtLm9ucmVhZHlzdGF0ZWNoYW5nZT1udWxsLG99KSh0LG4pKXt2YXIgbz0idW5kZWZpbmVkIiE9dHlwZW9mIFdlYlNvY2tldDsoZnVuY3Rpb24gcih0KXtmb3IodmFyIG49dC5nZXRHbG9iYWxPYmplY3RzKCkuZXZlbnROYW1lcyxlPXQuc3ltYm9sKCJ1bmJvdW5kIiksYT1mdW5jdGlvbihhKXt2YXIgbz1uW2FdLHI9Im9uIitvO3NlbGYuYWRkRXZlbnRMaXN0ZW5lcihvLChmdW5jdGlvbihuKXt2YXIgYSxvLGk9bi50YXJnZXQ7Zm9yKG89aT9pLmNvbnN0cnVjdG9yLm5hbWUrIi4iK3I6InVua25vd24uIityO2k7KWlbcl0mJiFpW3JdW2VdJiYoKGE9dC53cmFwV2l0aEN1cnJlbnRab25lKGlbcl0sbykpW2VdPWlbcl0saVtyXT1hKSxpPWkucGFyZW50RWxlbWVudH0pLCEwKX0sbz0wO288bi5sZW5ndGg7bysrKWEobyl9Ci8qKgogICAgICAgICAqIEBsaWNlbnNlCiAgICAgICAgICogQ29weXJpZ2h0IEdvb2dsZSBJbmMuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCiAgICAgICAgICoKICAgICAgICAgKiBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhbiBNSVQtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQogICAgICAgICAqIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUgYXQgaHR0cHM6Ly9hbmd1bGFyLmlvL2xpY2Vuc2UKICAgICAgICAgKi8pKHQpLHQucGF0Y2hDbGFzcygiWE1MSHR0cFJlcXVlc3QiKSxvJiYoZnVuY3Rpb24gaSh0LG4pe3ZhciBlPXQuZ2V0R2xvYmFsT2JqZWN0cygpLGE9ZS5BRERfRVZFTlRfTElTVEVORVJfU1RSLG89ZS5SRU1PVkVfRVZFTlRfTElTVEVORVJfU1RSLHI9bi5XZWJTb2NrZXQ7bi5FdmVudFRhcmdldHx8dC5wYXRjaEV2ZW50VGFyZ2V0KG4sW3IucHJvdG90eXBlXSksbi5XZWJTb2NrZXQ9ZnVuY3Rpb24obixlKXt2YXIgaSxjLHM9YXJndW1lbnRzLmxlbmd0aD4xP25ldyByKG4sZSk6bmV3IHIobiksbD10Lk9iamVjdEdldE93blByb3BlcnR5RGVzY3JpcHRvcihzLCJvbm1lc3NhZ2UiKTtyZXR1cm4gbCYmITE9PT1sLmNvbmZpZ3VyYWJsZT8oaT10Lk9iamVjdENyZWF0ZShzKSxjPXMsW2Esbywic2VuZCIsImNsb3NlIl0uZm9yRWFjaCgoZnVuY3Rpb24obil7aVtuXT1mdW5jdGlvbigpe3ZhciBlPXQuQXJyYXlTbGljZS5jYWxsKGFyZ3VtZW50cyk7aWYobj09PWF8fG49PT1vKXt2YXIgcj1lLmxlbmd0aD4wP2VbMF06dm9pZCAwO2lmKHIpe3ZhciBjPVpvbmUuX19zeW1ib2xfXygiT05fUFJPUEVSVFkiK3IpO3NbY109aVtjXX19cmV0dXJuIHNbbl0uYXBwbHkocyxlKX19KSkpOmk9cyx0LnBhdGNoT25Qcm9wZXJ0aWVzKGksWyJjbG9zZSIsImVycm9yIiwibWVzc2FnZSIsIm9wZW4iXSxjKSxpfTt2YXIgaT1uLldlYlNvY2tldDtmb3IodmFyIGMgaW4gcilpW2NdPXJbY119KSh0LG4pLFpvbmVbdC5zeW1ib2woInBhdGNoRXZlbnRzIildPSEwfX1ab25lLl9fbG9hZF9wYXRjaCgidXRpbCIsKGZ1bmN0aW9uKGUsYyxzKXtzLnBhdGNoT25Qcm9wZXJ0aWVzPVMscy5wYXRjaE1ldGhvZD16LHMuYmluZEFyZ3VtZW50cz1DLHMucGF0Y2hNYWNyb1Rhc2s9Ujt2YXIgcD1jLl9fc3ltYm9sX18oIkJMQUNLX0xJU1RFRF9FVkVOVFMiKSxiPWMuX19zeW1ib2xfXygiVU5QQVRDSEVEX0VWRU5UUyIpO2VbYl0mJihlW3BdPWVbYl0pLGVbcF0mJihjW3BdPWNbYl09ZVtwXSkscy5wYXRjaEV2ZW50UHJvdG90eXBlPVoscy5wYXRjaEV2ZW50VGFyZ2V0PVkscy5pc0lFT3JFZGdlPUYscy5PYmplY3REZWZpbmVQcm9wZXJ0eT1uLHMuT2JqZWN0R2V0T3duUHJvcGVydHlEZXNjcmlwdG9yPXQscy5PYmplY3RDcmVhdGU9YSxzLkFycmF5U2xpY2U9byxzLnBhdGNoQ2xhc3M9QSxzLndyYXBXaXRoQ3VycmVudFpvbmU9ZyxzLmZpbHRlclByb3BlcnRpZXM9ZHQscy5hdHRhY2hPcmlnaW5Ub1BhdGNoZWQ9VCxzLl9yZWRlZmluZVByb3BlcnR5PU9iamVjdC5kZWZpbmVQcm9wZXJ0eSxzLnBhdGNoQ2FsbGJhY2tzPVgscy5nZXRHbG9iYWxPYmplY3RzPWZ1bmN0aW9uKCl7cmV0dXJue2dsb2JhbFNvdXJjZXM6aix6b25lU3ltYm9sRXZlbnROYW1lczpWLGV2ZW50TmFtZXM6bXQsaXNCcm93c2VyOngsaXNNaXg6eSxpc05vZGU6UCxUUlVFX1NUUjpsLEZBTFNFX1NUUjptLFpPTkVfU1lNQk9MX1BSRUZJWDpkLEFERF9FVkVOVF9MSVNURU5FUl9TVFI6cixSRU1PVkVfRVZFTlRfTElTVEVORVJfU1RSOml9fX0pKSwKLyoqCiAgICAgICAgICogQGxpY2Vuc2UKICAgICAgICAgKiBDb3B5cmlnaHQgR29vZ2xlIEluYy4gQWxsIFJpZ2h0cyBSZXNlcnZlZC4KICAgICAgICAgKgogICAgICAgICAqIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGFuIE1JVC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCiAgICAgICAgICogZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZSBhdCBodHRwczovL2FuZ3VsYXIuaW8vbGljZW5zZQogICAgICAgICAqLwooZnVuY3Rpb24odCl7dmFyIG49dC5fX1pvbmVfc3ltYm9sX3ByZWZpeHx8Il9fem9uZV9zeW1ib2xfXyI7dFsoZnVuY3Rpb24gZSh0KXtyZXR1cm4gbit0fSkoImxlZ2FjeVBhdGNoIildPWZ1bmN0aW9uKCl7dmFyIG49dC5ab25lO24uX19sb2FkX3BhdGNoKCJkZWZpbmVQcm9wZXJ0eSIsKGZ1bmN0aW9uKHQsbixlKXtlLl9yZWRlZmluZVByb3BlcnR5PXV0LGJ0KCl9KSksbi5fX2xvYWRfcGF0Y2goInJlZ2lzdGVyRWxlbWVudCIsKGZ1bmN0aW9uKHQsbixlKXshKGZ1bmN0aW9uIGEodCxuKXt2YXIgZT1uLmdldEdsb2JhbE9iamVjdHMoKTsoZS5pc0Jyb3dzZXJ8fGUuaXNNaXgpJiYicmVnaXN0ZXJFbGVtZW50ImluIHQuZG9jdW1lbnQmJm4ucGF0Y2hDYWxsYmFja3Mobixkb2N1bWVudCwiRG9jdW1lbnQiLCJyZWdpc3RlckVsZW1lbnQiLFsiY3JlYXRlZENhbGxiYWNrIiwiYXR0YWNoZWRDYWxsYmFjayIsImRldGFjaGVkQ2FsbGJhY2siLCJhdHRyaWJ1dGVDaGFuZ2VkQ2FsbGJhY2siXSl9KSh0LGUpfSkpLG4uX19sb2FkX3BhdGNoKCJFdmVudFRhcmdldExlZ2FjeSIsKGZ1bmN0aW9uKHQsbixlKXtDdCh0LGUpLE10KGUsdCl9KSl9fSkoInVuZGVmaW5lZCIhPXR5cGVvZiB3aW5kb3c/d2luZG93OnZvaWQgMCE9PXhQP3hQOiJ1bmRlZmluZWQiIT10eXBlb2Ygc2VsZj9zZWxmOnt9KTsKLyoqCiAgICAgICAgICogQGxpY2Vuc2UKICAgICAgICAgKiBDb3B5cmlnaHQgR29vZ2xlIEluYy4gQWxsIFJpZ2h0cyBSZXNlcnZlZC4KICAgICAgICAgKgogICAgICAgICAqIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGFuIE1JVC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCiAgICAgICAgICogZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZSBhdCBodHRwczovL2FuZ3VsYXIuaW8vbGljZW5zZQogICAgICAgICAqLwp2YXIgT3Q9Yigiem9uZVRhc2siKTtmdW5jdGlvbiBQdCh0LG4sZSxhKXt2YXIgbz1udWxsLHI9bnVsbDtlKz1hO3ZhciBpPXt9O2Z1bmN0aW9uIGMobil7dmFyIGU9bi5kYXRhO3JldHVybiBlLmFyZ3NbMF09ZnVuY3Rpb24gYSgpe3RyeXtuLmludm9rZS5hcHBseSh0aGlzLGFyZ3VtZW50cyl9ZmluYWxseXtuLmRhdGEmJm4uZGF0YS5pc1BlcmlvZGljfHwoIm51bWJlciI9PXR5cGVvZiBlLmhhbmRsZUlkP2RlbGV0ZSBpW2UuaGFuZGxlSWRdOmUuaGFuZGxlSWQmJihlLmhhbmRsZUlkW090XT1udWxsKSl9fSxlLmhhbmRsZUlkPW8uYXBwbHkodCxlLmFyZ3MpLG59ZnVuY3Rpb24gcyh0KXtyZXR1cm4gcih0LmRhdGEuaGFuZGxlSWQpfW89eih0LG4rPWEsKGZ1bmN0aW9uKGUpe3JldHVybiBmdW5jdGlvbihvLHIpe2lmKCJmdW5jdGlvbiI9PXR5cGVvZiByWzBdKXt2YXIgbD1wKG4sclswXSx7aXNQZXJpb2RpYzoiSW50ZXJ2YWwiPT09YSxkZWxheToiVGltZW91dCI9PT1hfHwiSW50ZXJ2YWwiPT09YT9yWzFdfHwwOnZvaWQgMCxhcmdzOnJ9LGMscyk7aWYoIWwpcmV0dXJuIGw7dmFyIG09bC5kYXRhLmhhbmRsZUlkO3JldHVybiJudW1iZXIiPT10eXBlb2YgbT9pW21dPWw6bSYmKG1bT3RdPWwpLG0mJm0ucmVmJiZtLnVucmVmJiYiZnVuY3Rpb24iPT10eXBlb2YgbS5yZWYmJiJmdW5jdGlvbiI9PXR5cGVvZiBtLnVucmVmJiYobC5yZWY9bS5yZWYuYmluZChtKSxsLnVucmVmPW0udW5yZWYuYmluZChtKSksIm51bWJlciI9PXR5cGVvZiBtfHxtP206bH1yZXR1cm4gZS5hcHBseSh0LHIpfX0pKSxyPXoodCxlLChmdW5jdGlvbihuKXtyZXR1cm4gZnVuY3Rpb24oZSxhKXt2YXIgbyxyPWFbMF07Im51bWJlciI9PXR5cGVvZiByP289aVtyXToobz1yJiZyW090XSl8fChvPXIpLG8mJiJzdHJpbmciPT10eXBlb2Ygby50eXBlPyJub3RTY2hlZHVsZWQiIT09by5zdGF0ZSYmKG8uY2FuY2VsRm4mJm8uZGF0YS5pc1BlcmlvZGljfHwwPT09by5ydW5Db3VudCkmJigibnVtYmVyIj09dHlwZW9mIHI/ZGVsZXRlIGlbcl06ciYmKHJbT3RdPW51bGwpLG8uem9uZS5jYW5jZWxUYXNrKG8pKTpuLmFwcGx5KHQsYSl9fSkpfQovKioKICAgICAgICAgKiBAbGljZW5zZQogICAgICAgICAqIENvcHlyaWdodCBHb29nbGUgSW5jLiBBbGwgUmlnaHRzIFJlc2VydmVkLgogICAgICAgICAqCiAgICAgICAgICogVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYW4gTUlULXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKICAgICAgICAgKiBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlIGF0IGh0dHBzOi8vYW5ndWxhci5pby9saWNlbnNlCiAgICAgICAgICovCi8qKgogICAgICAgICAqIEBsaWNlbnNlCiAgICAgICAgICogQ29weXJpZ2h0IEdvb2dsZSBJbmMuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCiAgICAgICAgICoKICAgICAgICAgKiBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhbiBNSVQtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQogICAgICAgICAqIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUgYXQgaHR0cHM6Ly9hbmd1bGFyLmlvL2xpY2Vuc2UKICAgICAgICAgKi8KZnVuY3Rpb24geHQodCxuKXtpZighWm9uZVtuLnN5bWJvbCgicGF0Y2hFdmVudFRhcmdldCIpXSl7Zm9yKHZhciBlPW4uZ2V0R2xvYmFsT2JqZWN0cygpLGE9ZS5ldmVudE5hbWVzLG89ZS56b25lU3ltYm9sRXZlbnROYW1lcyxyPWUuVFJVRV9TVFIsaT1lLkZBTFNFX1NUUixjPWUuWk9ORV9TWU1CT0xfUFJFRklYLHM9MDtzPGEubGVuZ3RoO3MrKyl7dmFyIGw9YVtzXSxtPWMrKGwraSksZD1jKyhsK3IpO29bbF09e30sb1tsXVtpXT1tLG9bbF1bcl09ZH12YXIgZz10LkV2ZW50VGFyZ2V0O2lmKGcmJmcucHJvdG90eXBlKXJldHVybiBuLnBhdGNoRXZlbnRUYXJnZXQodCxbZyYmZy5wcm90b3R5cGVdKSwhMH19Ci8qKgogICAgICAgICAqIEBsaWNlbnNlCiAgICAgICAgICogQ29weXJpZ2h0IEdvb2dsZSBJbmMuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCiAgICAgICAgICoKICAgICAgICAgKiBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhbiBNSVQtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQogICAgICAgICAqIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUgYXQgaHR0cHM6Ly9hbmd1bGFyLmlvL2xpY2Vuc2UKICAgICAgICAgKi8KWm9uZS5fX2xvYWRfcGF0Y2goImxlZ2FjeSIsKGZ1bmN0aW9uKHQpe3ZhciBuPXRbWm9uZS5fX3N5bWJvbF9fKCJsZWdhY3lQYXRjaCIpXTtuJiZuKCl9KSksWm9uZS5fX2xvYWRfcGF0Y2goInRpbWVycyIsKGZ1bmN0aW9uKHQpe3ZhciBuPSJzZXQiLGU9ImNsZWFyIjtQdCh0LG4sZSwiVGltZW91dCIpLFB0KHQsbixlLCJJbnRlcnZhbCIpLFB0KHQsbixlLCJJbW1lZGlhdGUiKX0pKSxab25lLl9fbG9hZF9wYXRjaCgicmVxdWVzdEFuaW1hdGlvbkZyYW1lIiwoZnVuY3Rpb24odCl7UHQodCwicmVxdWVzdCIsImNhbmNlbCIsIkFuaW1hdGlvbkZyYW1lIiksUHQodCwibW96UmVxdWVzdCIsIm1vekNhbmNlbCIsIkFuaW1hdGlvbkZyYW1lIiksUHQodCwid2Via2l0UmVxdWVzdCIsIndlYmtpdENhbmNlbCIsIkFuaW1hdGlvbkZyYW1lIil9KSksWm9uZS5fX2xvYWRfcGF0Y2goImJsb2NraW5nIiwoZnVuY3Rpb24odCxuKXtmb3IodmFyIGU9WyJhbGVydCIsInByb21wdCIsImNvbmZpcm0iXSxhPTA7YTxlLmxlbmd0aDthKyspeih0LGVbYV0sKGZ1bmN0aW9uKGUsYSxvKXtyZXR1cm4gZnVuY3Rpb24oYSxyKXtyZXR1cm4gbi5jdXJyZW50LnJ1bihlLHQscixvKX19KSl9KSksWm9uZS5fX2xvYWRfcGF0Y2goIkV2ZW50VGFyZ2V0IiwoZnVuY3Rpb24odCxuLGUpeyhmdW5jdGlvbiBhKHQsbil7bi5wYXRjaEV2ZW50UHJvdG90eXBlKHQsbil9KSh0LGUpLHh0KHQsZSk7dmFyIG89dC5YTUxIdHRwUmVxdWVzdEV2ZW50VGFyZ2V0O28mJm8ucHJvdG90eXBlJiZlLnBhdGNoRXZlbnRUYXJnZXQodCxbby5wcm90b3R5cGVdKSxBKCJNdXRhdGlvbk9ic2VydmVyIiksQSgiV2ViS2l0TXV0YXRpb25PYnNlcnZlciIpLEEoIkludGVyc2VjdGlvbk9ic2VydmVyIiksQSgiRmlsZVJlYWRlciIpfSkpLFpvbmUuX19sb2FkX3BhdGNoKCJvbl9wcm9wZXJ0eSIsKGZ1bmN0aW9uKHQsbixlKXtwdChlLHQpfSkpLFpvbmUuX19sb2FkX3BhdGNoKCJjdXN0b21FbGVtZW50cyIsKGZ1bmN0aW9uKHQsbixlKXshKGZ1bmN0aW9uIGEodCxuKXt2YXIgZT1uLmdldEdsb2JhbE9iamVjdHMoKTsoZS5pc0Jyb3dzZXJ8fGUuaXNNaXgpJiZ0LmN1c3RvbUVsZW1lbnRzJiYiY3VzdG9tRWxlbWVudHMiaW4gdCYmbi5wYXRjaENhbGxiYWNrcyhuLHQuY3VzdG9tRWxlbWVudHMsImN1c3RvbUVsZW1lbnRzIiwiZGVmaW5lIixbImNvbm5lY3RlZENhbGxiYWNrIiwiZGlzY29ubmVjdGVkQ2FsbGJhY2siLCJhZG9wdGVkQ2FsbGJhY2siLCJhdHRyaWJ1dGVDaGFuZ2VkQ2FsbGJhY2siXSl9KSh0LGUpfSkpLFpvbmUuX19sb2FkX3BhdGNoKCJYSFIiLChmdW5jdGlvbih0LG4peyEoZnVuY3Rpb24gZSh0KXt2YXIgZT10LlhNTEh0dHBSZXF1ZXN0O2lmKGUpe3ZhciBkPWUucHJvdG90eXBlLGc9ZFtjXSx1PWRbc107aWYoIWcpe3ZhciBmPXQuWE1MSHR0cFJlcXVlc3RFdmVudFRhcmdldDtpZihmKXt2YXIgaD1mLnByb3RvdHlwZTtnPWhbY10sdT1oW3NdfX12YXIgXz0icmVhZHlzdGF0ZWNoYW5nZSIsQz0ic2NoZWR1bGVkIixNPXooZCwib3BlbiIsKGZ1bmN0aW9uKCl7cmV0dXJuIGZ1bmN0aW9uKHQsbil7cmV0dXJuIHRbb109MD09blsyXSx0W2xdPW5bMV0sTS5hcHBseSh0LG4pfX0pKSxPPWIoImZldGNoVGFza0Fib3J0aW5nIiksUD1iKCJmZXRjaFRhc2tTY2hlZHVsaW5nIikseD16KGQsInNlbmQiLChmdW5jdGlvbigpe3JldHVybiBmdW5jdGlvbih0LGUpe2lmKCEwPT09bi5jdXJyZW50W1BdKXJldHVybiB4LmFwcGx5KHQsZSk7aWYodFtvXSlyZXR1cm4geC5hcHBseSh0LGUpO3ZhciBhPXt0YXJnZXQ6dCx1cmw6dFtsXSxpc1BlcmlvZGljOiExLGFyZ3M6ZSxhYm9ydGVkOiExfSxyPXAoIlhNTEh0dHBSZXF1ZXN0LnNlbmQiLHYsYSxrLHcpO3QmJiEwPT09dFttXSYmIWEuYWJvcnRlZCYmci5zdGF0ZT09PUMmJnIuaW52b2tlKCl9fSkpLHk9eihkLCJhYm9ydCIsKGZ1bmN0aW9uKCl7cmV0dXJuIGZ1bmN0aW9uKHQsZSl7dmFyIG89KGZ1bmN0aW9uIHIodCl7cmV0dXJuIHRbYV19KSh0KTtpZihvJiYic3RyaW5nIj09dHlwZW9mIG8udHlwZSl7aWYobnVsbD09by5jYW5jZWxGbnx8by5kYXRhJiZvLmRhdGEuYWJvcnRlZClyZXR1cm47by56b25lLmNhbmNlbFRhc2sobyl9ZWxzZSBpZighMD09PW4uY3VycmVudFtPXSlyZXR1cm4geS5hcHBseSh0LGUpfX0pKX1mdW5jdGlvbiBrKHQpe3ZhciBlPXQuZGF0YSxvPWUudGFyZ2V0O29baV09ITEsb1ttXT0hMTt2YXIgbD1vW3JdO2d8fChnPW9bY10sdT1vW3NdKSxsJiZ1LmNhbGwobyxfLGwpO3ZhciBkPW9bcl09ZnVuY3Rpb24oKXtpZihvLnJlYWR5U3RhdGU9PT1vLkRPTkUpaWYoIWUuYWJvcnRlZCYmb1tpXSYmdC5zdGF0ZT09PUMpe3ZhciBhPW9bbi5fX3N5bWJvbF9fKCJsb2FkZmFsc2UiKV07aWYoYSYmYS5sZW5ndGg+MCl7dmFyIHI9dC5pbnZva2U7dC5pbnZva2U9ZnVuY3Rpb24oKXtmb3IodmFyIGE9b1tuLl9fc3ltYm9sX18oImxvYWRmYWxzZSIpXSxpPTA7aTxhLmxlbmd0aDtpKyspYVtpXT09PXQmJmEuc3BsaWNlKGksMSk7ZS5hYm9ydGVkfHx0LnN0YXRlIT09Q3x8ci5jYWxsKHQpfSxhLnB1c2godCl9ZWxzZSB0Lmludm9rZSgpfWVsc2UgZS5hYm9ydGVkfHwhMSE9PW9baV18fChvW21dPSEwKX07cmV0dXJuIGcuY2FsbChvLF8sZCksb1thXXx8KG9bYV09dCkseC5hcHBseShvLGUuYXJncyksb1tpXT0hMCx0fWZ1bmN0aW9uIHYoKXt9ZnVuY3Rpb24gdyh0KXt2YXIgbj10LmRhdGE7cmV0dXJuIG4uYWJvcnRlZD0hMCx5LmFwcGx5KG4udGFyZ2V0LG4uYXJncyl9fSkodCk7dmFyIGE9YigieGhyVGFzayIpLG89YigieGhyU3luYyIpLHI9YigieGhyTGlzdGVuZXIiKSxpPWIoInhoclNjaGVkdWxlZCIpLGw9YigieGhyVVJMIiksbT1iKCJ4aHJFcnJvckJlZm9yZVNjaGVkdWxlZCIpfSkpLFpvbmUuX19sb2FkX3BhdGNoKCJnZW9sb2NhdGlvbiIsKGZ1bmN0aW9uKG4pe24ubmF2aWdhdG9yJiZuLm5hdmlnYXRvci5nZW9sb2NhdGlvbiYmKGZ1bmN0aW9uIGUobixhKXtmb3IodmFyIG89bi5jb25zdHJ1Y3Rvci5uYW1lLHI9ZnVuY3Rpb24oZSl7dmFyIHI9YVtlXSxpPW5bcl07aWYoaSl7aWYoIU0odChuLHIpKSlyZXR1cm4iY29udGludWUiO25bcl09KGZ1bmN0aW9uKHQpe3ZhciBuPWZ1bmN0aW9uKCl7cmV0dXJuIHQuYXBwbHkodGhpcyxDKGFyZ3VtZW50cyxvKyIuIityKSl9O3JldHVybiBUKG4sdCksbn0pKGkpfX0saT0wO2k8YS5sZW5ndGg7aSsrKXIoaSl9KShuLm5hdmlnYXRvci5nZW9sb2NhdGlvbixbImdldEN1cnJlbnRQb3NpdGlvbiIsIndhdGNoUG9zaXRpb24iXSl9KSksWm9uZS5fX2xvYWRfcGF0Y2goIlByb21pc2VSZWplY3Rpb25FdmVudCIsKGZ1bmN0aW9uKHQsbil7ZnVuY3Rpb24gZShuKXtyZXR1cm4gZnVuY3Rpb24oZSl7cSh0LG4pLmZvckVhY2goKGZ1bmN0aW9uKGEpe3ZhciBvPXQuUHJvbWlzZVJlamVjdGlvbkV2ZW50O2lmKG8pe3ZhciByPW5ldyBvKG4se3Byb21pc2U6ZS5wcm9taXNlLHJlYXNvbjplLnJlamVjdGlvbn0pO2EuaW52b2tlKHIpfX0pKX19dC5Qcm9taXNlUmVqZWN0aW9uRXZlbnQmJihuW2IoInVuaGFuZGxlZFByb21pc2VSZWplY3Rpb25IYW5kbGVyIildPWUoInVuaGFuZGxlZHJlamVjdGlvbiIpLG5bYigicmVqZWN0aW9uSGFuZGxlZEhhbmRsZXIiKV09ZSgicmVqZWN0aW9uaGFuZGxlZCIpKX0pKX0pKCk7Ci8qKgogICAgICogQGxpY2Vuc2UgQW5ndWxhciB2MTAuMi40CiAgICAgKiAoYykgMjAxMC0yMDIwIEdvb2dsZSBMTEMuIGh0dHBzOi8vYW5ndWxhci5pby8KICAgICAqIExpY2Vuc2U6IE1JVAogICAgICovCmNsYXNzIHZQe30KLyoqCiAgICAgKiBAbGljZW5zZQogICAgICogQ29weXJpZ2h0IEdvb2dsZSBMTEMgQWxsIFJpZ2h0cyBSZXNlcnZlZC4KICAgICAqCiAgICAgKiBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhbiBNSVQtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQogICAgICogZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZSBhdCBodHRwczovL2FuZ3VsYXIuaW8vbGljZW5zZQogICAgICovCmNvbnN0IHdQPSIqIjtmdW5jdGlvbiBTUCh0LG4pe3JldHVybnt0eXBlOjcsbmFtZTp0LGRlZmluaXRpb25zOm4sb3B0aW9uczp7fX19ZnVuY3Rpb24gRVAodCxuPW51bGwpe3JldHVybnt0eXBlOjQsc3R5bGVzOm4sdGltaW5nczp0fX1mdW5jdGlvbiBBUCh0LG49bnVsbCl7cmV0dXJue3R5cGU6MixzdGVwczp0LG9wdGlvbnM6bn19ZnVuY3Rpb24gelAodCl7cmV0dXJue3R5cGU6NixzdHlsZXM6dCxvZmZzZXQ6bnVsbH19ZnVuY3Rpb24gUlAodCxuLGUpe3JldHVybnt0eXBlOjAsbmFtZTp0LHN0eWxlczpuLG9wdGlvbnM6ZX19ZnVuY3Rpb24gVFAodCl7cmV0dXJue3R5cGU6NSxzdGVwczp0fX1mdW5jdGlvbiBEUCh0LG4sZT1udWxsKXtyZXR1cm57dHlwZToxLGV4cHI6dCxhbmltYXRpb246bixvcHRpb25zOmV9fWZ1bmN0aW9uIElQKHQ9bnVsbCl7cmV0dXJue3R5cGU6OSxvcHRpb25zOnR9fWZ1bmN0aW9uIE5QKHQsbixlPW51bGwpe3JldHVybnt0eXBlOjExLHNlbGVjdG9yOnQsYW5pbWF0aW9uOm4sb3B0aW9uczplfX0KLyoqCiAgICAgKiBAbGljZW5zZQogICAgICogQ29weXJpZ2h0IEdvb2dsZSBMTEMgQWxsIFJpZ2h0cyBSZXNlcnZlZC4KICAgICAqCiAgICAgKiBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhbiBNSVQtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQogICAgICogZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZSBhdCBodHRwczovL2FuZ3VsYXIuaW8vbGljZW5zZQogICAgICovZnVuY3Rpb24gRlAodCl7UHJvbWlzZS5yZXNvbHZlKG51bGwpLnRoZW4odCl9Ci8qKgogICAgICogQGxpY2Vuc2UKICAgICAqIENvcHlyaWdodCBHb29nbGUgTExDIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCiAgICAgKgogICAgICogVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYW4gTUlULXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKICAgICAqIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUgYXQgaHR0cHM6Ly9hbmd1bGFyLmlvL2xpY2Vuc2UKICAgICAqL2NsYXNzIExQe2NvbnN0cnVjdG9yKHQ9MCxuPTApe3RoaXMuX29uRG9uZUZucz1bXSx0aGlzLl9vblN0YXJ0Rm5zPVtdLHRoaXMuX29uRGVzdHJveUZucz1bXSx0aGlzLl9zdGFydGVkPSExLHRoaXMuX2Rlc3Ryb3llZD0hMSx0aGlzLl9maW5pc2hlZD0hMSx0aGlzLnBhcmVudFBsYXllcj1udWxsLHRoaXMudG90YWxUaW1lPXQrbn1fb25GaW5pc2goKXt0aGlzLl9maW5pc2hlZHx8KHRoaXMuX2ZpbmlzaGVkPSEwLHRoaXMuX29uRG9uZUZucy5mb3JFYWNoKCh0PT50KCkpKSx0aGlzLl9vbkRvbmVGbnM9W10pfW9uU3RhcnQodCl7dGhpcy5fb25TdGFydEZucy5wdXNoKHQpfW9uRG9uZSh0KXt0aGlzLl9vbkRvbmVGbnMucHVzaCh0KX1vbkRlc3Ryb3kodCl7dGhpcy5fb25EZXN0cm95Rm5zLnB1c2godCl9aGFzU3RhcnRlZCgpe3JldHVybiB0aGlzLl9zdGFydGVkfWluaXQoKXt9cGxheSgpe3RoaXMuaGFzU3RhcnRlZCgpfHwodGhpcy5fb25TdGFydCgpLHRoaXMudHJpZ2dlck1pY3JvdGFzaygpKSx0aGlzLl9zdGFydGVkPSEwfXRyaWdnZXJNaWNyb3Rhc2soKXtGUCgoKCk9PnRoaXMuX29uRmluaXNoKCkpKX1fb25TdGFydCgpe3RoaXMuX29uU3RhcnRGbnMuZm9yRWFjaCgodD0+dCgpKSksdGhpcy5fb25TdGFydEZucz1bXX1wYXVzZSgpe31yZXN0YXJ0KCl7fWZpbmlzaCgpe3RoaXMuX29uRmluaXNoKCl9ZGVzdHJveSgpe3RoaXMuX2Rlc3Ryb3llZHx8KHRoaXMuX2Rlc3Ryb3llZD0hMCx0aGlzLmhhc1N0YXJ0ZWQoKXx8dGhpcy5fb25TdGFydCgpLHRoaXMuZmluaXNoKCksdGhpcy5fb25EZXN0cm95Rm5zLmZvckVhY2goKHQ9PnQoKSkpLHRoaXMuX29uRGVzdHJveUZucz1bXSl9cmVzZXQoKXt9c2V0UG9zaXRpb24odCl7fWdldFBvc2l0aW9uKCl7cmV0dXJuIDB9dHJpZ2dlckNhbGxiYWNrKHQpe2NvbnN0IG49InN0YXJ0Ij09dD90aGlzLl9vblN0YXJ0Rm5zOnRoaXMuX29uRG9uZUZucztuLmZvckVhY2goKHQ9PnQoKSkpLG4ubGVuZ3RoPTB9fQovKioKICAgICAqIEBsaWNlbnNlCiAgICAgKiBDb3B5cmlnaHQgR29vZ2xlIExMQyBBbGwgUmlnaHRzIFJlc2VydmVkLgogICAgICoKICAgICAqIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGFuIE1JVC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCiAgICAgKiBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlIGF0IGh0dHBzOi8vYW5ndWxhci5pby9saWNlbnNlCiAgICAgKi9jbGFzcyBIUHtjb25zdHJ1Y3Rvcih0KXt0aGlzLl9vbkRvbmVGbnM9W10sdGhpcy5fb25TdGFydEZucz1bXSx0aGlzLl9maW5pc2hlZD0hMSx0aGlzLl9zdGFydGVkPSExLHRoaXMuX2Rlc3Ryb3llZD0hMSx0aGlzLl9vbkRlc3Ryb3lGbnM9W10sdGhpcy5wYXJlbnRQbGF5ZXI9bnVsbCx0aGlzLnRvdGFsVGltZT0wLHRoaXMucGxheWVycz10O2xldCBuPTAsZT0wLGE9MDtjb25zdCBvPXRoaXMucGxheWVycy5sZW5ndGg7MD09bz9GUCgoKCk9PnRoaXMuX29uRmluaXNoKCkpKTp0aGlzLnBsYXllcnMuZm9yRWFjaCgodD0+e3Qub25Eb25lKCgoKT0+eysrbj09byYmdGhpcy5fb25GaW5pc2goKX0pKSx0Lm9uRGVzdHJveSgoKCk9PnsrK2U9PW8mJnRoaXMuX29uRGVzdHJveSgpfSkpLHQub25TdGFydCgoKCk9PnsrK2E9PW8mJnRoaXMuX29uU3RhcnQoKX0pKX0pKSx0aGlzLnRvdGFsVGltZT10aGlzLnBsYXllcnMucmVkdWNlKCgodCxuKT0+TWF0aC5tYXgodCxuLnRvdGFsVGltZSkpLDApfV9vbkZpbmlzaCgpe3RoaXMuX2ZpbmlzaGVkfHwodGhpcy5fZmluaXNoZWQ9ITAsdGhpcy5fb25Eb25lRm5zLmZvckVhY2goKHQ9PnQoKSkpLHRoaXMuX29uRG9uZUZucz1bXSl9aW5pdCgpe3RoaXMucGxheWVycy5mb3JFYWNoKCh0PT50LmluaXQoKSkpfW9uU3RhcnQodCl7dGhpcy5fb25TdGFydEZucy5wdXNoKHQpfV9vblN0YXJ0KCl7dGhpcy5oYXNTdGFydGVkKCl8fCh0aGlzLl9zdGFydGVkPSEwLHRoaXMuX29uU3RhcnRGbnMuZm9yRWFjaCgodD0+dCgpKSksdGhpcy5fb25TdGFydEZucz1bXSl9b25Eb25lKHQpe3RoaXMuX29uRG9uZUZucy5wdXNoKHQpfW9uRGVzdHJveSh0KXt0aGlzLl9vbkRlc3Ryb3lGbnMucHVzaCh0KX1oYXNTdGFydGVkKCl7cmV0dXJuIHRoaXMuX3N0YXJ0ZWR9cGxheSgpe3RoaXMucGFyZW50UGxheWVyfHx0aGlzLmluaXQoKSx0aGlzLl9vblN0YXJ0KCksdGhpcy5wbGF5ZXJzLmZvckVhY2goKHQ9PnQucGxheSgpKSl9cGF1c2UoKXt0aGlzLnBsYXllcnMuZm9yRWFjaCgodD0+dC5wYXVzZSgpKSl9cmVzdGFydCgpe3RoaXMucGxheWVycy5mb3JFYWNoKCh0PT50LnJlc3RhcnQoKSkpfWZpbmlzaCgpe3RoaXMuX29uRmluaXNoKCksdGhpcy5wbGF5ZXJzLmZvckVhY2goKHQ9PnQuZmluaXNoKCkpKX1kZXN0cm95KCl7dGhpcy5fb25EZXN0cm95KCl9X29uRGVzdHJveSgpe3RoaXMuX2Rlc3Ryb3llZHx8KHRoaXMuX2Rlc3Ryb3llZD0hMCx0aGlzLl9vbkZpbmlzaCgpLHRoaXMucGxheWVycy5mb3JFYWNoKCh0PT50LmRlc3Ryb3koKSkpLHRoaXMuX29uRGVzdHJveUZucy5mb3JFYWNoKCh0PT50KCkpKSx0aGlzLl9vbkRlc3Ryb3lGbnM9W10pfXJlc2V0KCl7dGhpcy5wbGF5ZXJzLmZvckVhY2goKHQ9PnQucmVzZXQoKSkpLHRoaXMuX2Rlc3Ryb3llZD0hMSx0aGlzLl9maW5pc2hlZD0hMSx0aGlzLl9zdGFydGVkPSExfXNldFBvc2l0aW9uKHQpe2NvbnN0IG49dCp0aGlzLnRvdGFsVGltZTt0aGlzLnBsYXllcnMuZm9yRWFjaCgodD0+e2NvbnN0IGU9dC50b3RhbFRpbWU/TWF0aC5taW4oMSxuL3QudG90YWxUaW1lKToxO3Quc2V0UG9zaXRpb24oZSl9KSl9Z2V0UG9zaXRpb24oKXtsZXQgdD0wO3JldHVybiB0aGlzLnBsYXllcnMuZm9yRWFjaCgobj0+e2NvbnN0IGU9bi5nZXRQb3NpdGlvbigpO3Q9TWF0aC5taW4oZSx0KX0pKSx0fWJlZm9yZURlc3Ryb3koKXt0aGlzLnBsYXllcnMuZm9yRWFjaCgodD0+e3QuYmVmb3JlRGVzdHJveSYmdC5iZWZvcmVEZXN0cm95KCl9KSl9dHJpZ2dlckNhbGxiYWNrKHQpe2NvbnN0IG49InN0YXJ0Ij09dD90aGlzLl9vblN0YXJ0Rm5zOnRoaXMuX29uRG9uZUZucztuLmZvckVhY2goKHQ9PnQoKSkpLG4ubGVuZ3RoPTB9fQovKioKICAgICAqIEBsaWNlbnNlCiAgICAgKiBDb3B5cmlnaHQgR29vZ2xlIExMQyBBbGwgUmlnaHRzIFJlc2VydmVkLgogICAgICoKICAgICAqIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGFuIE1JVC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCiAgICAgKiBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlIGF0IGh0dHBzOi8vYW5ndWxhci5pby9saWNlbnNlCiAgICAgKi9mdW5jdGlvbiBCUCgpe3JldHVybiJ1bmRlZmluZWQiIT10eXBlb2YgcHJvY2VzcyYmIltvYmplY3QgcHJvY2Vzc10iPT09e30udG9TdHJpbmcuY2FsbChwcm9jZXNzKX1mdW5jdGlvbiBWUCh0KXtzd2l0Y2godC5sZW5ndGgpe2Nhc2UgMDpyZXR1cm4gbmV3IExQO2Nhc2UgMTpyZXR1cm4gdFswXTtkZWZhdWx0OnJldHVybiBuZXcgSFAodCl9fWZ1bmN0aW9uIGpQKHQsbixlLGEsbz17fSxyPXt9KXtjb25zdCBpPVtdLGM9W107bGV0IHM9LTEsbD1udWxsO2lmKGEuZm9yRWFjaCgodD0+e2NvbnN0IGU9dC5vZmZzZXQsYT1lPT1zLG09YSYmbHx8e307T2JqZWN0LmtleXModCkuZm9yRWFjaCgoZT0+e2xldCBhPWUsYz10W2VdO2lmKCJvZmZzZXQiIT09ZSlzd2l0Y2goYT1uLm5vcm1hbGl6ZVByb3BlcnR5TmFtZShhLGkpLGMpe2Nhc2UiISI6Yz1vW2VdO2JyZWFrO2Nhc2Ugd1A6Yz1yW2VdO2JyZWFrO2RlZmF1bHQ6Yz1uLm5vcm1hbGl6ZVN0eWxlVmFsdWUoZSxhLGMsaSl9bVthXT1jfSkpLGF8fGMucHVzaChtKSxsPW0scz1lfSkpLGkubGVuZ3RoKXtjb25zdCB0PSJcbiAtICI7dGhyb3cgbmV3IEVycm9yKGBVbmFibGUgdG8gYW5pbWF0ZSBkdWUgdG8gdGhlIGZvbGxvd2luZyBlcnJvcnM6JHt0fSR7aS5qb2luKHQpfWApfXJldHVybiBjfWZ1bmN0aW9uIFVQKHQsbixlLGEpe3N3aXRjaChuKXtjYXNlInN0YXJ0Ijp0Lm9uU3RhcnQoKCgpPT5hKGUmJldQKGUsInN0YXJ0Iix0KSkpKTticmVhaztjYXNlImRvbmUiOnQub25Eb25lKCgoKT0+YShlJiZXUChlLCJkb25lIix0KSkpKTticmVhaztjYXNlImRlc3Ryb3kiOnQub25EZXN0cm95KCgoKT0+YShlJiZXUChlLCJkZXN0cm95Iix0KSkpKX19ZnVuY3Rpb24gV1AodCxuLGUpe2NvbnN0IGE9ZS50b3RhbFRpbWUsbz1HUCh0LmVsZW1lbnQsdC50cmlnZ2VyTmFtZSx0LmZyb21TdGF0ZSx0LnRvU3RhdGUsbnx8dC5waGFzZU5hbWUsbnVsbD09YT90LnRvdGFsVGltZTphLCEhZS5kaXNhYmxlZCkscj10Ll9kYXRhO3JldHVybiBudWxsIT1yJiYoby5fZGF0YT1yKSxvfWZ1bmN0aW9uIEdQKHQsbixlLGEsbz0iIixyPTAsaSl7cmV0dXJue2VsZW1lbnQ6dCx0cmlnZ2VyTmFtZTpuLGZyb21TdGF0ZTplLHRvU3RhdGU6YSxwaGFzZU5hbWU6byx0b3RhbFRpbWU6cixkaXNhYmxlZDohIWl9fWZ1bmN0aW9uIFlQKHQsbixlKXtsZXQgYTtyZXR1cm4gdCBpbnN0YW5jZW9mIE1hcD8oYT10LmdldChuKSxhfHx0LnNldChuLGE9ZSkpOihhPXRbbl0sYXx8KGE9dFtuXT1lKSksYX1mdW5jdGlvbiBxUCh0KXtjb25zdCBuPXQuaW5kZXhPZigiOiIpO3JldHVyblt0LnN1YnN0cmluZygxLG4pLHQuc3Vic3RyKG4rMSldfWxldCBaUD0odCxuKT0+ITEsWFA9KHQsbik9PiExLEpQPSh0LG4sZSk9PltdO2NvbnN0IFFQPUJQKCk7KFFQfHwidW5kZWZpbmVkIiE9dHlwZW9mIEVsZW1lbnQpJiYoWlA9KHQsbik9PnQuY29udGFpbnMobiksWFA9KCgpPT57aWYoUVB8fEVsZW1lbnQucHJvdG90eXBlLm1hdGNoZXMpcmV0dXJuKHQsbik9PnQubWF0Y2hlcyhuKTt7Y29uc3QgdD1FbGVtZW50LnByb3RvdHlwZSxuPXQubWF0Y2hlc1NlbGVjdG9yfHx0Lm1vek1hdGNoZXNTZWxlY3Rvcnx8dC5tc01hdGNoZXNTZWxlY3Rvcnx8dC5vTWF0Y2hlc1NlbGVjdG9yfHx0LndlYmtpdE1hdGNoZXNTZWxlY3RvcjtyZXR1cm4gbj8odCxlKT0+bi5hcHBseSh0LFtlXSk6WFB9fSkoKSxKUD0odCxuLGUpPT57bGV0IGE9W107aWYoZSlhLnB1c2goLi4udC5xdWVyeVNlbGVjdG9yQWxsKG4pKTtlbHNle2NvbnN0IGU9dC5xdWVyeVNlbGVjdG9yKG4pO2UmJmEucHVzaChlKX1yZXR1cm4gYX0pO2xldCBLUD1udWxsLCRQPSExO2Z1bmN0aW9uIHR4KHQpe0tQfHwoS1A9KGZ1bmN0aW9uIG4oKXtyZXR1cm4idW5kZWZpbmVkIiE9dHlwZW9mIGRvY3VtZW50P2RvY3VtZW50LmJvZHk6bnVsbH0pKCl8fHt9LCRQPSEhS1Auc3R5bGUmJiJXZWJraXRBcHBlYXJhbmNlImluIEtQLnN0eWxlKTtsZXQgZT0hMDtyZXR1cm4gS1Auc3R5bGUmJiEoZnVuY3Rpb24gYSh0KXtyZXR1cm4iZWJraXQiPT10LnN1YnN0cmluZygxLDYpfSkodCkmJihlPXQgaW4gS1Auc3R5bGUsIWUmJiRQKSYmKGU9IldlYmtpdCIrdC5jaGFyQXQoMCkudG9VcHBlckNhc2UoKSt0LnN1YnN0cigxKWluIEtQLnN0eWxlKSxlfWNvbnN0IG54PVhQLGV4PVpQLGF4PUpQO2Z1bmN0aW9uIG94KHQpe2NvbnN0IG49e307cmV0dXJuIE9iamVjdC5rZXlzKHQpLmZvckVhY2goKGU9Pntjb25zdCBhPWUucmVwbGFjZSgvKFthLXpdKShbQS1aXSkvZywiJDEtJDIiKTtuW2FdPXRbZV19KSksbn0KLyoqCiAgICAgKiBAbGljZW5zZQogICAgICogQ29weXJpZ2h0IEdvb2dsZSBMTEMgQWxsIFJpZ2h0cyBSZXNlcnZlZC4KICAgICAqCiAgICAgKiBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhbiBNSVQtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQogICAgICogZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZSBhdCBodHRwczovL2FuZ3VsYXIuaW8vbGljZW5zZQogICAgICovY2xhc3Mgcnh7dmFsaWRhdGVTdHlsZVByb3BlcnR5KHQpe3JldHVybiB0eCh0KX1tYXRjaGVzRWxlbWVudCh0LG4pe3JldHVybiBueCh0LG4pfWNvbnRhaW5zRWxlbWVudCh0LG4pe3JldHVybiBleCh0LG4pfXF1ZXJ5KHQsbixlKXtyZXR1cm4gYXgodCxuLGUpfWNvbXB1dGVTdHlsZSh0LG4sZSl7cmV0dXJuIGV8fCIifWFuaW1hdGUodCxuLGUsYSxvLHI9W10saSl7cmV0dXJuIG5ldyBMUChlLGEpfX1yeC7JtWZhYz1mdW5jdGlvbiB0KG4pe3JldHVybiBuZXcobnx8cngpfSxyeC7JtXByb3Y9V2Uoe3Rva2VuOnJ4LGZhY3Rvcnk6cnguybVmYWN9KTtjbGFzcyBpeHt9aXguTk9PUD1uZXcgcng7Ci8qKgogICAgICogQGxpY2Vuc2UKICAgICAqIENvcHlyaWdodCBHb29nbGUgTExDIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCiAgICAgKgogICAgICogVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYW4gTUlULXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKICAgICAqIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUgYXQgaHR0cHM6Ly9hbmd1bGFyLmlvL2xpY2Vuc2UKICAgICAqLwpjb25zdCBjeD0ibmctZW50ZXIiLHN4PSJuZy1sZWF2ZSIsbHg9Im5nLXRyaWdnZXIiLG14PSIubmctdHJpZ2dlciIsZHg9Im5nLWFuaW1hdGluZyIsZ3g9Ii5uZy1hbmltYXRpbmciO2Z1bmN0aW9uIHB4KHQpe2lmKCJudW1iZXIiPT10eXBlb2YgdClyZXR1cm4gdDtjb25zdCBuPXQubWF0Y2goL14oLT9bXC5cZF0rKShtP3MpLyk7cmV0dXJuIW58fG4ubGVuZ3RoPDI/MDpieChwYXJzZUZsb2F0KG5bMV0pLG5bMl0pfWZ1bmN0aW9uIGJ4KHQsbil7c3dpdGNoKG4pe2Nhc2UicyI6cmV0dXJuIDFlMyp0O2RlZmF1bHQ6cmV0dXJuIHR9fWZ1bmN0aW9uIHV4KHQsbixlKXtyZXR1cm4gdC5oYXNPd25Qcm9wZXJ0eSgiZHVyYXRpb24iKT90OihmdW5jdGlvbiBhKHQsbixlKXtsZXQgYSxvPTAscj0iIjtpZigic3RyaW5nIj09dHlwZW9mIHQpe2NvbnN0IGU9dC5tYXRjaCgvXigtP1tcLlxkXSspKG0/cykoPzpccysoLT9bXC5cZF0rKShtP3MpKT8oPzpccysoWy1hLXpdKyg/OlwoLis/XCkpPykpPyQvaSk7aWYobnVsbD09PWUpcmV0dXJuIG4ucHVzaChgVGhlIHByb3ZpZGVkIHRpbWluZyB2YWx1ZSAiJHt0fSIgaXMgaW52YWxpZC5gKSx7ZHVyYXRpb246MCxkZWxheTowLGVhc2luZzoiIn07YT1ieChwYXJzZUZsb2F0KGVbMV0pLGVbMl0pO2NvbnN0IGk9ZVszXTtudWxsIT1pJiYobz1ieChwYXJzZUZsb2F0KGkpLGVbNF0pKTtjb25zdCBjPWVbNV07YyYmKHI9Yyl9ZWxzZSBhPXQ7aWYoIWUpe2xldCBlPSExLHI9bi5sZW5ndGg7YTwwJiYobi5wdXNoKCJEdXJhdGlvbiB2YWx1ZXMgYmVsb3cgMCBhcmUgbm90IGFsbG93ZWQgZm9yIHRoaXMgYW5pbWF0aW9uIHN0ZXAuIiksZT0hMCksbzwwJiYobi5wdXNoKCJEZWxheSB2YWx1ZXMgYmVsb3cgMCBhcmUgbm90IGFsbG93ZWQgZm9yIHRoaXMgYW5pbWF0aW9uIHN0ZXAuIiksZT0hMCksZSYmbi5zcGxpY2UociwwLGBUaGUgcHJvdmlkZWQgdGltaW5nIHZhbHVlICIke3R9IiBpcyBpbnZhbGlkLmApfXJldHVybntkdXJhdGlvbjphLGRlbGF5Om8sZWFzaW5nOnJ9fSkodCxuLGUpfWZ1bmN0aW9uIGZ4KHQsbj17fSl7cmV0dXJuIE9iamVjdC5rZXlzKHQpLmZvckVhY2goKGU9PntuW2VdPXRbZV19KSksbn1mdW5jdGlvbiBoeCh0LG4sZT17fSl7aWYobilmb3IobGV0IG4gaW4gdCllW25dPXRbbl07ZWxzZSBmeCh0LGUpO3JldHVybiBlfWZ1bmN0aW9uIF94KHQsbixlKXtyZXR1cm4gZT9uKyI6IitlKyI7IjoiIn1mdW5jdGlvbiBDeCh0KXtsZXQgbj0iIjtmb3IobGV0IGU9MDtlPHQuc3R5bGUubGVuZ3RoO2UrKyl7Y29uc3QgYT10LnN0eWxlLml0ZW0oZSk7bis9X3goMCxhLHQuc3R5bGUuZ2V0UHJvcGVydHlWYWx1ZShhKSl9Zm9yKGNvbnN0IGUgaW4gdC5zdHlsZSl0LnN0eWxlLmhhc093blByb3BlcnR5KGUpJiYhZS5zdGFydHNXaXRoKCJfIikmJihuKz1feCgwLGUucmVwbGFjZSgvKFthLXpdKShbQS1aXSkvZywiJDEtJDIiKS50b0xvd2VyQ2FzZSgpLHQuc3R5bGVbZV0pKTt0LnNldEF0dHJpYnV0ZSgic3R5bGUiLG4pfWZ1bmN0aW9uIE14KHQsbixlKXt0LnN0eWxlJiYoT2JqZWN0LmtleXMobikuZm9yRWFjaCgoYT0+e2NvbnN0IG89U3goYSk7ZSYmIWUuaGFzT3duUHJvcGVydHkoYSkmJihlW2FdPXQuc3R5bGVbb10pLHQuc3R5bGVbb109blthXX0pKSxCUCgpJiZDeCh0KSl9ZnVuY3Rpb24gT3godCxuKXt0LnN0eWxlJiYoT2JqZWN0LmtleXMobikuZm9yRWFjaCgobj0+e2NvbnN0IGU9U3gobik7dC5zdHlsZVtlXT0iIn0pKSxCUCgpJiZDeCh0KSl9ZnVuY3Rpb24gUHgodCl7cmV0dXJuIEFycmF5LmlzQXJyYXkodCk/MT09dC5sZW5ndGg/dFswXTpBUCh0KTp0fWNvbnN0IHh4PW5ldyBSZWdFeHAoInt7XFxzKiguKz8pXFxzKn19IiwiZyIpO2Z1bmN0aW9uIHl4KHQpe2xldCBuPVtdO2lmKCJzdHJpbmciPT10eXBlb2YgdCl7bGV0IGU7Zm9yKDtlPXh4LmV4ZWModCk7KW4ucHVzaChlWzFdKTt4eC5sYXN0SW5kZXg9MH1yZXR1cm4gbn1mdW5jdGlvbiBreCh0LG4sZSl7Y29uc3QgYT10LnRvU3RyaW5nKCksbz1hLnJlcGxhY2UoeHgsKCh0LGEpPT57bGV0IG89blthXTtyZXR1cm4gbi5oYXNPd25Qcm9wZXJ0eShhKXx8KGUucHVzaChgUGxlYXNlIHByb3ZpZGUgYSB2YWx1ZSBmb3IgdGhlIGFuaW1hdGlvbiBwYXJhbSAke2F9YCksbz0iIiksby50b1N0cmluZygpfSkpO3JldHVybiBvPT1hP3Q6b31mdW5jdGlvbiB2eCh0KXtjb25zdCBuPVtdO2xldCBlPXQubmV4dCgpO2Zvcig7IWUuZG9uZTspbi5wdXNoKGUudmFsdWUpLGU9dC5uZXh0KCk7cmV0dXJuIG59Y29uc3Qgd3g9Ly0rKFthLXowLTldKS9nO2Z1bmN0aW9uIFN4KHQpe3JldHVybiB0LnJlcGxhY2Uod3gsKCguLi50KT0+dFsxXS50b1VwcGVyQ2FzZSgpKSl9ZnVuY3Rpb24gRXgodCxuKXtyZXR1cm4gMD09PXR8fDA9PT1ufWZ1bmN0aW9uIEF4KHQsbixlKXtjb25zdCBhPU9iamVjdC5rZXlzKGUpO2lmKGEubGVuZ3RoJiZuLmxlbmd0aCl7bGV0IHI9blswXSxpPVtdO2lmKGEuZm9yRWFjaCgodD0+e3IuaGFzT3duUHJvcGVydHkodCl8fGkucHVzaCh0KSxyW3RdPWVbdF19KSksaS5sZW5ndGgpZm9yKHZhciBvPTE7bzxuLmxlbmd0aDtvKyspe2xldCBlPW5bb107aS5mb3JFYWNoKChmdW5jdGlvbihuKXtlW25dPVJ4KHQsbil9KSl9fXJldHVybiBufWZ1bmN0aW9uIHp4KHQsbixlKXtzd2l0Y2gobi50eXBlKXtjYXNlIDc6cmV0dXJuIHQudmlzaXRUcmlnZ2VyKG4sZSk7Y2FzZSAwOnJldHVybiB0LnZpc2l0U3RhdGUobixlKTtjYXNlIDE6cmV0dXJuIHQudmlzaXRUcmFuc2l0aW9uKG4sZSk7Y2FzZSAyOnJldHVybiB0LnZpc2l0U2VxdWVuY2UobixlKTtjYXNlIDM6cmV0dXJuIHQudmlzaXRHcm91cChuLGUpO2Nhc2UgNDpyZXR1cm4gdC52aXNpdEFuaW1hdGUobixlKTtjYXNlIDU6cmV0dXJuIHQudmlzaXRLZXlmcmFtZXMobixlKTtjYXNlIDY6cmV0dXJuIHQudmlzaXRTdHlsZShuLGUpO2Nhc2UgODpyZXR1cm4gdC52aXNpdFJlZmVyZW5jZShuLGUpO2Nhc2UgOTpyZXR1cm4gdC52aXNpdEFuaW1hdGVDaGlsZChuLGUpO2Nhc2UgMTA6cmV0dXJuIHQudmlzaXRBbmltYXRlUmVmKG4sZSk7Y2FzZSAxMTpyZXR1cm4gdC52aXNpdFF1ZXJ5KG4sZSk7Y2FzZSAxMjpyZXR1cm4gdC52aXNpdFN0YWdnZXIobixlKTtkZWZhdWx0OnRocm93IG5ldyBFcnJvcihgVW5hYmxlIHRvIHJlc29sdmUgYW5pbWF0aW9uIG1ldGFkYXRhIG5vZGUgIyR7bi50eXBlfWApfX1mdW5jdGlvbiBSeCh0LG4pe3JldHVybiB3aW5kb3cuZ2V0Q29tcHV0ZWRTdHlsZSh0KVtuXX0KLyoqCiAgICAgKiBAbGljZW5zZQogICAgICogQ29weXJpZ2h0IEdvb2dsZSBMTEMgQWxsIFJpZ2h0cyBSZXNlcnZlZC4KICAgICAqCiAgICAgKiBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhbiBNSVQtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQogICAgICogZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZSBhdCBodHRwczovL2FuZ3VsYXIuaW8vbGljZW5zZQogICAgICovY29uc3QgVHg9IioiO2Z1bmN0aW9uIER4KHQsbil7Y29uc3QgZT1bXTtyZXR1cm4ic3RyaW5nIj09dHlwZW9mIHQ/dC5zcGxpdCgvXHMqLFxzKi8pLmZvckVhY2goKHQ9PihmdW5jdGlvbiBhKHQsbixlKXtpZigiOiI9PXRbMF0pe2NvbnN0IGE9KGZ1bmN0aW9uIGEodCxuKXtzd2l0Y2godCl7Y2FzZSI6ZW50ZXIiOnJldHVybiJ2b2lkID0+ICoiO2Nhc2UiOmxlYXZlIjpyZXR1cm4iKiA9PiB2b2lkIjtjYXNlIjppbmNyZW1lbnQiOnJldHVybih0LG4pPT5wYXJzZUZsb2F0KG4pPnBhcnNlRmxvYXQodCk7Y2FzZSI6ZGVjcmVtZW50IjpyZXR1cm4odCxuKT0+cGFyc2VGbG9hdChuKTxwYXJzZUZsb2F0KHQpO2RlZmF1bHQ6cmV0dXJuIG4ucHVzaChgVGhlIHRyYW5zaXRpb24gYWxpYXMgdmFsdWUgIiR7dH0iIGlzIG5vdCBzdXBwb3J0ZWRgKSwiKiA9PiAqIn19KSh0LGUpO2lmKCJmdW5jdGlvbiI9PXR5cGVvZiBhKXJldHVybiB2b2lkIG4ucHVzaChhKTt0PWF9Y29uc3Qgbz10Lm1hdGNoKC9eKFwqfFstXHddKylccyooPD9bPS1dPilccyooXCp8Wy1cd10rKSQvKTtpZihudWxsPT1vfHxvLmxlbmd0aDw0KXJldHVybiBlLnB1c2goYFRoZSBwcm92aWRlZCB0cmFuc2l0aW9uIGV4cHJlc3Npb24gIiR7dH0iIGlzIG5vdCBzdXBwb3J0ZWRgKSxuO2NvbnN0IHI9b1sxXSxpPW9bMl0sYz1vWzNdO24ucHVzaChGeChyLGMpKSwiPCIhPWlbMF18fHI9PVR4JiZjPT1UeHx8bi5wdXNoKEZ4KGMscikpfSkodCxlLG4pKSk6ZS5wdXNoKHQpLGV9Y29uc3QgSXg9bmV3IFNldChbInRydWUiLCIxIl0pLE54PW5ldyBTZXQoWyJmYWxzZSIsIjAiXSk7ZnVuY3Rpb24gRngodCxuKXtjb25zdCBlPUl4Lmhhcyh0KXx8TnguaGFzKHQpLGE9SXguaGFzKG4pfHxOeC5oYXMobik7cmV0dXJuKG8scik9PntsZXQgaT10PT1UeHx8dD09byxjPW49PVR4fHxuPT1yO3JldHVybiFpJiZlJiYiYm9vbGVhbiI9PXR5cGVvZiBvJiYoaT1vP0l4Lmhhcyh0KTpOeC5oYXModCkpLCFjJiZhJiYiYm9vbGVhbiI9PXR5cGVvZiByJiYoYz1yP0l4LmhhcyhuKTpOeC5oYXMobikpLGkmJmN9fQovKioKICAgICAqIEBsaWNlbnNlCiAgICAgKiBDb3B5cmlnaHQgR29vZ2xlIExMQyBBbGwgUmlnaHRzIFJlc2VydmVkLgogICAgICoKICAgICAqIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGFuIE1JVC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCiAgICAgKiBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlIGF0IGh0dHBzOi8vYW5ndWxhci5pby9saWNlbnNlCiAgICAgKi9jb25zdCBMeD1uZXcgUmVnRXhwKCJzKjpzZWxmcyosPyIsImciKTtmdW5jdGlvbiBIeCh0LG4sZSl7cmV0dXJuIG5ldyBCeCh0KS5idWlsZChuLGUpfWNsYXNzIEJ4e2NvbnN0cnVjdG9yKHQpe3RoaXMuX2RyaXZlcj10fWJ1aWxkKHQsbil7Y29uc3QgZT1uZXcgVngobik7cmV0dXJuIHRoaXMuX3Jlc2V0Q29udGV4dFN0eWxlVGltaW5nU3RhdGUoZSksengodGhpcyxQeCh0KSxlKX1fcmVzZXRDb250ZXh0U3R5bGVUaW1pbmdTdGF0ZSh0KXt0LmN1cnJlbnRRdWVyeVNlbGVjdG9yPSIiLHQuY29sbGVjdGVkU3R5bGVzPXt9LHQuY29sbGVjdGVkU3R5bGVzWyIiXT17fSx0LmN1cnJlbnRUaW1lPTB9dmlzaXRUcmlnZ2VyKHQsbil7bGV0IGU9bi5xdWVyeUNvdW50PTAsYT1uLmRlcENvdW50PTA7Y29uc3Qgbz1bXSxyPVtdO3JldHVybiJAIj09dC5uYW1lLmNoYXJBdCgwKSYmbi5lcnJvcnMucHVzaCgiYW5pbWF0aW9uIHRyaWdnZXJzIGNhbm5vdCBiZSBwcmVmaXhlZCB3aXRoIGFuIGBAYCBzaWduIChlLmcuIHRyaWdnZXIoJ0Bmb28nLCBbLi4uXSkpIiksdC5kZWZpbml0aW9ucy5mb3JFYWNoKCh0PT57aWYodGhpcy5fcmVzZXRDb250ZXh0U3R5bGVUaW1pbmdTdGF0ZShuKSwwPT10LnR5cGUpe2NvbnN0IGU9dCxhPWUubmFtZTthLnRvU3RyaW5nKCkuc3BsaXQoL1xzKixccyovKS5mb3JFYWNoKCh0PT57ZS5uYW1lPXQsby5wdXNoKHRoaXMudmlzaXRTdGF0ZShlLG4pKX0pKSxlLm5hbWU9YX1lbHNlIGlmKDE9PXQudHlwZSl7Y29uc3Qgbz10aGlzLnZpc2l0VHJhbnNpdGlvbih0LG4pO2UrPW8ucXVlcnlDb3VudCxhKz1vLmRlcENvdW50LHIucHVzaChvKX1lbHNlIG4uZXJyb3JzLnB1c2goIm9ubHkgc3RhdGUoKSBhbmQgdHJhbnNpdGlvbigpIGRlZmluaXRpb25zIGNhbiBzaXQgaW5zaWRlIG9mIGEgdHJpZ2dlcigpIil9KSkse3R5cGU6NyxuYW1lOnQubmFtZSxzdGF0ZXM6byx0cmFuc2l0aW9uczpyLHF1ZXJ5Q291bnQ6ZSxkZXBDb3VudDphLG9wdGlvbnM6bnVsbH19dmlzaXRTdGF0ZSh0LG4pe2NvbnN0IGU9dGhpcy52aXNpdFN0eWxlKHQuc3R5bGVzLG4pLGE9dC5vcHRpb25zJiZ0Lm9wdGlvbnMucGFyYW1zfHxudWxsO2lmKGUuY29udGFpbnNEeW5hbWljU3R5bGVzKXtjb25zdCBvPW5ldyBTZXQscj1hfHx7fTtpZihlLnN0eWxlcy5mb3JFYWNoKCh0PT57aWYoangodCkpe2NvbnN0IG49dDtPYmplY3Qua2V5cyhuKS5mb3JFYWNoKCh0PT57eXgoblt0XSkuZm9yRWFjaCgodD0+e3IuaGFzT3duUHJvcGVydHkodCl8fG8uYWRkKHQpfSkpfSkpfX0pKSxvLnNpemUpe2NvbnN0IGU9dngoby52YWx1ZXMoKSk7bi5lcnJvcnMucHVzaChgc3RhdGUoIiR7dC5uYW1lfSIsIC4uLikgbXVzdCBkZWZpbmUgZGVmYXVsdCB2YWx1ZXMgZm9yIGFsbCB0aGUgZm9sbG93aW5nIHN0eWxlIHN1YnN0aXR1dGlvbnM6ICR7ZS5qb2luKCIsICIpfWApfX1yZXR1cm57dHlwZTowLG5hbWU6dC5uYW1lLHN0eWxlOmUsb3B0aW9uczphP3twYXJhbXM6YX06bnVsbH19dmlzaXRUcmFuc2l0aW9uKHQsbil7bi5xdWVyeUNvdW50PTAsbi5kZXBDb3VudD0wO2NvbnN0IGU9engodGhpcyxQeCh0LmFuaW1hdGlvbiksbik7cmV0dXJue3R5cGU6MSxtYXRjaGVyczpEeCh0LmV4cHIsbi5lcnJvcnMpLGFuaW1hdGlvbjplLHF1ZXJ5Q291bnQ6bi5xdWVyeUNvdW50LGRlcENvdW50Om4uZGVwQ291bnQsb3B0aW9uczpVeCh0Lm9wdGlvbnMpfX12aXNpdFNlcXVlbmNlKHQsbil7cmV0dXJue3R5cGU6MixzdGVwczp0LnN0ZXBzLm1hcCgodD0+engodGhpcyx0LG4pKSksb3B0aW9uczpVeCh0Lm9wdGlvbnMpfX12aXNpdEdyb3VwKHQsbil7Y29uc3QgZT1uLmN1cnJlbnRUaW1lO2xldCBhPTA7Y29uc3Qgbz10LnN0ZXBzLm1hcCgodD0+e24uY3VycmVudFRpbWU9ZTtjb25zdCBvPXp4KHRoaXMsdCxuKTtyZXR1cm4gYT1NYXRoLm1heChhLG4uY3VycmVudFRpbWUpLG99KSk7cmV0dXJuIG4uY3VycmVudFRpbWU9YSx7dHlwZTozLHN0ZXBzOm8sb3B0aW9uczpVeCh0Lm9wdGlvbnMpfX12aXNpdEFuaW1hdGUodCxuKXtjb25zdCBlPShmdW5jdGlvbiBhKHQsbil7bGV0IGU9bnVsbDtpZih0Lmhhc093blByb3BlcnR5KCJkdXJhdGlvbiIpKWU9dDtlbHNlIGlmKCJudW1iZXIiPT10eXBlb2YgdClyZXR1cm4gV3godXgodCxuKS5kdXJhdGlvbiwwLCIiKTtjb25zdCBhPXQ7aWYoYS5zcGxpdCgvXHMrLykuc29tZSgodD0+InsiPT10LmNoYXJBdCgwKSYmInsiPT10LmNoYXJBdCgxKSkpKXtjb25zdCB0PVd4KDAsMCwiIik7cmV0dXJuIHQuZHluYW1pYz0hMCx0LnN0clZhbHVlPWEsdH1yZXR1cm4gZT1lfHx1eChhLG4pLFd4KGUuZHVyYXRpb24sZS5kZWxheSxlLmVhc2luZyl9KSh0LnRpbWluZ3Msbi5lcnJvcnMpO2xldCBvO24uY3VycmVudEFuaW1hdGVUaW1pbmdzPWU7bGV0IHI9dC5zdHlsZXM/dC5zdHlsZXM6elAoe30pO2lmKDU9PXIudHlwZSlvPXRoaXMudmlzaXRLZXlmcmFtZXMocixuKTtlbHNle2xldCBhPXQuc3R5bGVzLHI9ITE7aWYoIWEpe3I9ITA7Y29uc3QgdD17fTtlLmVhc2luZyYmKHQuZWFzaW5nPWUuZWFzaW5nKSxhPXpQKHQpfW4uY3VycmVudFRpbWUrPWUuZHVyYXRpb24rZS5kZWxheTtjb25zdCBpPXRoaXMudmlzaXRTdHlsZShhLG4pO2kuaXNFbXB0eVN0ZXA9cixvPWl9cmV0dXJuIG4uY3VycmVudEFuaW1hdGVUaW1pbmdzPW51bGwse3R5cGU6NCx0aW1pbmdzOmUsc3R5bGU6byxvcHRpb25zOm51bGx9fXZpc2l0U3R5bGUodCxuKXtjb25zdCBlPXRoaXMuX21ha2VTdHlsZUFzdCh0LG4pO3JldHVybiB0aGlzLl92YWxpZGF0ZVN0eWxlQXN0KGUsbiksZX1fbWFrZVN0eWxlQXN0KHQsbil7Y29uc3QgZT1bXTtBcnJheS5pc0FycmF5KHQuc3R5bGVzKT90LnN0eWxlcy5mb3JFYWNoKCh0PT57InN0cmluZyI9PXR5cGVvZiB0P3Q9PXdQP2UucHVzaCh0KTpuLmVycm9ycy5wdXNoKGBUaGUgcHJvdmlkZWQgc3R5bGUgc3RyaW5nIHZhbHVlICR7dH0gaXMgbm90IGFsbG93ZWQuYCk6ZS5wdXNoKHQpfSkpOmUucHVzaCh0LnN0eWxlcyk7bGV0IGE9ITEsbz1udWxsO3JldHVybiBlLmZvckVhY2goKHQ9PntpZihqeCh0KSl7Y29uc3Qgbj10LGU9bi5lYXNpbmc7aWYoZSYmKG89ZSxkZWxldGUgbi5lYXNpbmcpLCFhKWZvcihsZXQgdCBpbiBuKWlmKG5bdF0udG9TdHJpbmcoKS5pbmRleE9mKCJ7eyIpPj0wKXthPSEwO2JyZWFrfX19KSkse3R5cGU6NixzdHlsZXM6ZSxlYXNpbmc6byxvZmZzZXQ6dC5vZmZzZXQsY29udGFpbnNEeW5hbWljU3R5bGVzOmEsb3B0aW9uczpudWxsfX1fdmFsaWRhdGVTdHlsZUFzdCh0LG4pe2NvbnN0IGU9bi5jdXJyZW50QW5pbWF0ZVRpbWluZ3M7bGV0IGE9bi5jdXJyZW50VGltZSxvPW4uY3VycmVudFRpbWU7ZSYmbz4wJiYoby09ZS5kdXJhdGlvbitlLmRlbGF5KSx0LnN0eWxlcy5mb3JFYWNoKCh0PT57InN0cmluZyIhPXR5cGVvZiB0JiZPYmplY3Qua2V5cyh0KS5mb3JFYWNoKChlPT57aWYoIXRoaXMuX2RyaXZlci52YWxpZGF0ZVN0eWxlUHJvcGVydHkoZSkpcmV0dXJuIHZvaWQgbi5lcnJvcnMucHVzaChgVGhlIHByb3ZpZGVkIGFuaW1hdGlvbiBwcm9wZXJ0eSAiJHtlfSIgaXMgbm90IGEgc3VwcG9ydGVkIENTUyBwcm9wZXJ0eSBmb3IgYW5pbWF0aW9uc2ApO2NvbnN0IHI9bi5jb2xsZWN0ZWRTdHlsZXNbbi5jdXJyZW50UXVlcnlTZWxlY3Rvcl0saT1yW2VdO2xldCBjPSEwO2kmJihvIT1hJiZvPj1pLnN0YXJ0VGltZSYmYTw9aS5lbmRUaW1lJiYobi5lcnJvcnMucHVzaChgVGhlIENTUyBwcm9wZXJ0eSAiJHtlfSIgdGhhdCBleGlzdHMgYmV0d2VlbiB0aGUgdGltZXMgb2YgIiR7aS5zdGFydFRpbWV9bXMiIGFuZCAiJHtpLmVuZFRpbWV9bXMiIGlzIGFsc28gYmVpbmcgYW5pbWF0ZWQgaW4gYSBwYXJhbGxlbCBhbmltYXRpb24gYmV0d2VlbiB0aGUgdGltZXMgb2YgIiR7b31tcyIgYW5kICIke2F9bXMiYCksYz0hMSksbz1pLnN0YXJ0VGltZSksYyYmKHJbZV09e3N0YXJ0VGltZTpvLGVuZFRpbWU6YX0pLG4ub3B0aW9ucyYmKGZ1bmN0aW9uIHModCxuLGUpe2NvbnN0IGE9bi5wYXJhbXN8fHt9LG89eXgodCk7by5sZW5ndGgmJm8uZm9yRWFjaCgodD0+e2EuaGFzT3duUHJvcGVydHkodCl8fGUucHVzaChgVW5hYmxlIHRvIHJlc29sdmUgdGhlIGxvY2FsIGFuaW1hdGlvbiBwYXJhbSAke3R9IGluIHRoZSBnaXZlbiBsaXN0IG9mIHZhbHVlc2ApfSkpfSkodFtlXSxuLm9wdGlvbnMsbi5lcnJvcnMpfSkpfSkpfXZpc2l0S2V5ZnJhbWVzKHQsbil7Y29uc3QgZT17dHlwZTo1LHN0eWxlczpbXSxvcHRpb25zOm51bGx9O2lmKCFuLmN1cnJlbnRBbmltYXRlVGltaW5ncylyZXR1cm4gbi5lcnJvcnMucHVzaCgia2V5ZnJhbWVzKCkgbXVzdCBiZSBwbGFjZWQgaW5zaWRlIG9mIGEgY2FsbCB0byBhbmltYXRlKCkiKSxlO2xldCBhPTA7Y29uc3Qgbz1bXTtsZXQgcj0hMSxpPSExLGM9MDtjb25zdCBzPXQuc3RlcHMubWFwKCh0PT57Y29uc3QgZT10aGlzLl9tYWtlU3R5bGVBc3QodCxuKTtsZXQgcz1udWxsIT1lLm9mZnNldD9lLm9mZnNldDooZnVuY3Rpb24gbCh0KXtpZigic3RyaW5nIj09dHlwZW9mIHQpcmV0dXJuIG51bGw7bGV0IG49bnVsbDtpZihBcnJheS5pc0FycmF5KHQpKXQuZm9yRWFjaCgodD0+e2lmKGp4KHQpJiZ0Lmhhc093blByb3BlcnR5KCJvZmZzZXQiKSl7Y29uc3QgZT10O249cGFyc2VGbG9hdChlLm9mZnNldCksZGVsZXRlIGUub2Zmc2V0fX0pKTtlbHNlIGlmKGp4KHQpJiZ0Lmhhc093blByb3BlcnR5KCJvZmZzZXQiKSl7Y29uc3QgZT10O249cGFyc2VGbG9hdChlLm9mZnNldCksZGVsZXRlIGUub2Zmc2V0fXJldHVybiBufSkoZS5zdHlsZXMpLG09MDtyZXR1cm4gbnVsbCE9cyYmKGErKyxtPWUub2Zmc2V0PXMpLGk9aXx8bTwwfHxtPjEscj1yfHxtPGMsYz1tLG8ucHVzaChtKSxlfSkpO2kmJm4uZXJyb3JzLnB1c2goIlBsZWFzZSBlbnN1cmUgdGhhdCBhbGwga2V5ZnJhbWUgb2Zmc2V0cyBhcmUgYmV0d2VlbiAwIGFuZCAxIiksciYmbi5lcnJvcnMucHVzaCgiUGxlYXNlIGVuc3VyZSB0aGF0IGFsbCBrZXlmcmFtZSBvZmZzZXRzIGFyZSBpbiBvcmRlciIpO2NvbnN0IGw9dC5zdGVwcy5sZW5ndGg7bGV0IG09MDthPjAmJmE8bD9uLmVycm9ycy5wdXNoKCJOb3QgYWxsIHN0eWxlKCkgc3RlcHMgd2l0aGluIHRoZSBkZWNsYXJlZCBrZXlmcmFtZXMoKSBjb250YWluIG9mZnNldHMiKTowPT1hJiYobT0xLyhsLTEpKTtjb25zdCBkPWwtMSxnPW4uY3VycmVudFRpbWUscD1uLmN1cnJlbnRBbmltYXRlVGltaW5ncyxiPXAuZHVyYXRpb247cmV0dXJuIHMuZm9yRWFjaCgoKHQsYSk9Pntjb25zdCByPW0+MD9hPT1kPzE6bSphOm9bYV0saT1yKmI7bi5jdXJyZW50VGltZT1nK3AuZGVsYXkraSxwLmR1cmF0aW9uPWksdGhpcy5fdmFsaWRhdGVTdHlsZUFzdCh0LG4pLHQub2Zmc2V0PXIsZS5zdHlsZXMucHVzaCh0KX0pKSxlfXZpc2l0UmVmZXJlbmNlKHQsbil7cmV0dXJue3R5cGU6OCxhbmltYXRpb246engodGhpcyxQeCh0LmFuaW1hdGlvbiksbiksb3B0aW9uczpVeCh0Lm9wdGlvbnMpfX12aXNpdEFuaW1hdGVDaGlsZCh0LG4pe3JldHVybiBuLmRlcENvdW50Kysse3R5cGU6OSxvcHRpb25zOlV4KHQub3B0aW9ucyl9fXZpc2l0QW5pbWF0ZVJlZih0LG4pe3JldHVybnt0eXBlOjEwLGFuaW1hdGlvbjp0aGlzLnZpc2l0UmVmZXJlbmNlKHQuYW5pbWF0aW9uLG4pLG9wdGlvbnM6VXgodC5vcHRpb25zKX19dmlzaXRRdWVyeSh0LG4pe2NvbnN0IGU9bi5jdXJyZW50UXVlcnlTZWxlY3RvcixhPXQub3B0aW9uc3x8e307bi5xdWVyeUNvdW50Kyssbi5jdXJyZW50UXVlcnk9dDtjb25zdFtvLHJdPShmdW5jdGlvbiBpKHQpe2NvbnN0IG49ISF0LnNwbGl0KC9ccyosXHMqLykuZmluZCgodD0+IjpzZWxmIj09dCkpO3JldHVybiBuJiYodD10LnJlcGxhY2UoTHgsIiIpKSxbdD10LnJlcGxhY2UoL0BcKi9nLG14KS5yZXBsYWNlKC9AXHcrL2csKHQ9PiIubmctdHJpZ2dlci0iK3Quc3Vic3RyKDEpKSkucmVwbGFjZSgvOmFuaW1hdGluZy9nLGd4KSxuXX0pKHQuc2VsZWN0b3IpO24uY3VycmVudFF1ZXJ5U2VsZWN0b3I9ZS5sZW5ndGg/ZSsiICIrbzpvLFlQKG4uY29sbGVjdGVkU3R5bGVzLG4uY3VycmVudFF1ZXJ5U2VsZWN0b3Ise30pO2NvbnN0IGM9engodGhpcyxQeCh0LmFuaW1hdGlvbiksbik7cmV0dXJuIG4uY3VycmVudFF1ZXJ5PW51bGwsbi5jdXJyZW50UXVlcnlTZWxlY3Rvcj1lLHt0eXBlOjExLHNlbGVjdG9yOm8sbGltaXQ6YS5saW1pdHx8MCxvcHRpb25hbDohIWEub3B0aW9uYWwsaW5jbHVkZVNlbGY6cixhbmltYXRpb246YyxvcmlnaW5hbFNlbGVjdG9yOnQuc2VsZWN0b3Isb3B0aW9uczpVeCh0Lm9wdGlvbnMpfX12aXNpdFN0YWdnZXIodCxuKXtuLmN1cnJlbnRRdWVyeXx8bi5lcnJvcnMucHVzaCgic3RhZ2dlcigpIGNhbiBvbmx5IGJlIHVzZWQgaW5zaWRlIG9mIHF1ZXJ5KCkiKTtjb25zdCBlPSJmdWxsIj09PXQudGltaW5ncz97ZHVyYXRpb246MCxkZWxheTowLGVhc2luZzoiZnVsbCJ9OnV4KHQudGltaW5ncyxuLmVycm9ycywhMCk7cmV0dXJue3R5cGU6MTIsYW5pbWF0aW9uOnp4KHRoaXMsUHgodC5hbmltYXRpb24pLG4pLHRpbWluZ3M6ZSxvcHRpb25zOm51bGx9fX1jbGFzcyBWeHtjb25zdHJ1Y3Rvcih0KXt0aGlzLmVycm9ycz10LHRoaXMucXVlcnlDb3VudD0wLHRoaXMuZGVwQ291bnQ9MCx0aGlzLmN1cnJlbnRUcmFuc2l0aW9uPW51bGwsdGhpcy5jdXJyZW50UXVlcnk9bnVsbCx0aGlzLmN1cnJlbnRRdWVyeVNlbGVjdG9yPW51bGwsdGhpcy5jdXJyZW50QW5pbWF0ZVRpbWluZ3M9bnVsbCx0aGlzLmN1cnJlbnRUaW1lPTAsdGhpcy5jb2xsZWN0ZWRTdHlsZXM9e30sdGhpcy5vcHRpb25zPW51bGx9fWZ1bmN0aW9uIGp4KHQpe3JldHVybiFBcnJheS5pc0FycmF5KHQpJiYib2JqZWN0Ij09dHlwZW9mIHR9ZnVuY3Rpb24gVXgodCl7cmV0dXJuIHQ/KHQ9ZngodCkpLnBhcmFtcyYmKHQucGFyYW1zPShmdW5jdGlvbiBuKHQpe3JldHVybiB0P2Z4KHQpOm51bGx9KSh0LnBhcmFtcykpOnQ9e30sdH1mdW5jdGlvbiBXeCh0LG4sZSl7cmV0dXJue2R1cmF0aW9uOnQsZGVsYXk6bixlYXNpbmc6ZX19ZnVuY3Rpb24gR3godCxuLGUsYSxvLHIsaT1udWxsLGM9ITEpe3JldHVybnt0eXBlOjEsZWxlbWVudDp0LGtleWZyYW1lczpuLHByZVN0eWxlUHJvcHM6ZSxwb3N0U3R5bGVQcm9wczphLGR1cmF0aW9uOm8sZGVsYXk6cix0b3RhbFRpbWU6bytyLGVhc2luZzppLHN1YlRpbWVsaW5lOmN9fWNsYXNzIFl4e2NvbnN0cnVjdG9yKCl7dGhpcy5fbWFwPW5ldyBNYXB9Y29uc3VtZSh0KXtsZXQgbj10aGlzLl9tYXAuZ2V0KHQpO3JldHVybiBuP3RoaXMuX21hcC5kZWxldGUodCk6bj1bXSxufWFwcGVuZCh0LG4pe2xldCBlPXRoaXMuX21hcC5nZXQodCk7ZXx8dGhpcy5fbWFwLnNldCh0LGU9W10pLGUucHVzaCguLi5uKX1oYXModCl7cmV0dXJuIHRoaXMuX21hcC5oYXModCl9Y2xlYXIoKXt0aGlzLl9tYXAuY2xlYXIoKX19Ci8qKgogICAgICogQGxpY2Vuc2UKICAgICAqIENvcHlyaWdodCBHb29nbGUgTExDIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCiAgICAgKgogICAgICogVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYW4gTUlULXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKICAgICAqIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUgYXQgaHR0cHM6Ly9hbmd1bGFyLmlvL2xpY2Vuc2UKICAgICAqL2NvbnN0IHF4PW5ldyBSZWdFeHAoIjplbnRlciIsImciKSxaeD1uZXcgUmVnRXhwKCI6bGVhdmUiLCJnIik7ZnVuY3Rpb24gWHgodCxuLGUsYSxvLHI9e30saT17fSxjLHMsbD1bXSl7cmV0dXJuKG5ldyBKeCkuYnVpbGRLZXlmcmFtZXModCxuLGUsYSxvLHIsaSxjLHMsbCl9Y2xhc3MgSnh7YnVpbGRLZXlmcmFtZXModCxuLGUsYSxvLHIsaSxjLHMsbD1bXSl7cz1zfHxuZXcgWXg7Y29uc3QgbT1uZXcgS3godCxuLHMsYSxvLGwsW10pO20ub3B0aW9ucz1jLG0uY3VycmVudFRpbWVsaW5lLnNldFN0eWxlcyhbcl0sbnVsbCxtLmVycm9ycyxjKSx6eCh0aGlzLGUsbSk7Y29uc3QgZD1tLnRpbWVsaW5lcy5maWx0ZXIoKHQ9PnQuY29udGFpbnNBbmltYXRpb24oKSkpO2lmKGQubGVuZ3RoJiZPYmplY3Qua2V5cyhpKS5sZW5ndGgpe2NvbnN0IHQ9ZFtkLmxlbmd0aC0xXTt0LmFsbG93T25seVRpbWVsaW5lU3R5bGVzKCl8fHQuc2V0U3R5bGVzKFtpXSxudWxsLG0uZXJyb3JzLGMpfXJldHVybiBkLmxlbmd0aD9kLm1hcCgodD0+dC5idWlsZEtleWZyYW1lcygpKSk6W0d4KG4sW10sW10sW10sMCwwLCIiLCExKV19dmlzaXRUcmlnZ2VyKHQsbil7fXZpc2l0U3RhdGUodCxuKXt9dmlzaXRUcmFuc2l0aW9uKHQsbil7fXZpc2l0QW5pbWF0ZUNoaWxkKHQsbil7Y29uc3QgZT1uLnN1Ykluc3RydWN0aW9ucy5jb25zdW1lKG4uZWxlbWVudCk7aWYoZSl7Y29uc3QgYT1uLmNyZWF0ZVN1YkNvbnRleHQodC5vcHRpb25zKSxvPW4uY3VycmVudFRpbWVsaW5lLmN1cnJlbnRUaW1lLHI9dGhpcy5fdmlzaXRTdWJJbnN0cnVjdGlvbnMoZSxhLGEub3B0aW9ucyk7byE9ciYmbi50cmFuc2Zvcm1JbnRvTmV3VGltZWxpbmUocil9bi5wcmV2aW91c05vZGU9dH12aXNpdEFuaW1hdGVSZWYodCxuKXtjb25zdCBlPW4uY3JlYXRlU3ViQ29udGV4dCh0Lm9wdGlvbnMpO2UudHJhbnNmb3JtSW50b05ld1RpbWVsaW5lKCksdGhpcy52aXNpdFJlZmVyZW5jZSh0LmFuaW1hdGlvbixlKSxuLnRyYW5zZm9ybUludG9OZXdUaW1lbGluZShlLmN1cnJlbnRUaW1lbGluZS5jdXJyZW50VGltZSksbi5wcmV2aW91c05vZGU9dH1fdmlzaXRTdWJJbnN0cnVjdGlvbnModCxuLGUpe2xldCBhPW4uY3VycmVudFRpbWVsaW5lLmN1cnJlbnRUaW1lO2NvbnN0IG89bnVsbCE9ZS5kdXJhdGlvbj9weChlLmR1cmF0aW9uKTpudWxsLHI9bnVsbCE9ZS5kZWxheT9weChlLmRlbGF5KTpudWxsO3JldHVybiAwIT09byYmdC5mb3JFYWNoKCh0PT57Y29uc3QgZT1uLmFwcGVuZEluc3RydWN0aW9uVG9UaW1lbGluZSh0LG8scik7YT1NYXRoLm1heChhLGUuZHVyYXRpb24rZS5kZWxheSl9KSksYX12aXNpdFJlZmVyZW5jZSh0LG4pe24udXBkYXRlT3B0aW9ucyh0Lm9wdGlvbnMsITApLHp4KHRoaXMsdC5hbmltYXRpb24sbiksbi5wcmV2aW91c05vZGU9dH12aXNpdFNlcXVlbmNlKHQsbil7Y29uc3QgZT1uLnN1YkNvbnRleHRDb3VudDtsZXQgYT1uO2NvbnN0IG89dC5vcHRpb25zO2lmKG8mJihvLnBhcmFtc3x8by5kZWxheSkmJihhPW4uY3JlYXRlU3ViQ29udGV4dChvKSxhLnRyYW5zZm9ybUludG9OZXdUaW1lbGluZSgpLG51bGwhPW8uZGVsYXkpKXs2PT1hLnByZXZpb3VzTm9kZS50eXBlJiYoYS5jdXJyZW50VGltZWxpbmUuc25hcHNob3RDdXJyZW50U3R5bGVzKCksYS5wcmV2aW91c05vZGU9UXgpO2NvbnN0IHQ9cHgoby5kZWxheSk7YS5kZWxheU5leHRTdGVwKHQpfXQuc3RlcHMubGVuZ3RoJiYodC5zdGVwcy5mb3JFYWNoKCh0PT56eCh0aGlzLHQsYSkpKSxhLmN1cnJlbnRUaW1lbGluZS5hcHBseVN0eWxlc1RvS2V5ZnJhbWUoKSxhLnN1YkNvbnRleHRDb3VudD5lJiZhLnRyYW5zZm9ybUludG9OZXdUaW1lbGluZSgpKSxuLnByZXZpb3VzTm9kZT10fXZpc2l0R3JvdXAodCxuKXtjb25zdCBlPVtdO2xldCBhPW4uY3VycmVudFRpbWVsaW5lLmN1cnJlbnRUaW1lO2NvbnN0IG89dC5vcHRpb25zJiZ0Lm9wdGlvbnMuZGVsYXk/cHgodC5vcHRpb25zLmRlbGF5KTowO3Quc3RlcHMuZm9yRWFjaCgocj0+e2NvbnN0IGk9bi5jcmVhdGVTdWJDb250ZXh0KHQub3B0aW9ucyk7byYmaS5kZWxheU5leHRTdGVwKG8pLHp4KHRoaXMscixpKSxhPU1hdGgubWF4KGEsaS5jdXJyZW50VGltZWxpbmUuY3VycmVudFRpbWUpLGUucHVzaChpLmN1cnJlbnRUaW1lbGluZSl9KSksZS5mb3JFYWNoKCh0PT5uLmN1cnJlbnRUaW1lbGluZS5tZXJnZVRpbWVsaW5lQ29sbGVjdGVkU3R5bGVzKHQpKSksbi50cmFuc2Zvcm1JbnRvTmV3VGltZWxpbmUoYSksbi5wcmV2aW91c05vZGU9dH1fdmlzaXRUaW1pbmcodCxuKXtpZih0LmR5bmFtaWMpe2NvbnN0IGU9dC5zdHJWYWx1ZTtyZXR1cm4gdXgobi5wYXJhbXM/a3goZSxuLnBhcmFtcyxuLmVycm9ycyk6ZSxuLmVycm9ycyl9cmV0dXJue2R1cmF0aW9uOnQuZHVyYXRpb24sZGVsYXk6dC5kZWxheSxlYXNpbmc6dC5lYXNpbmd9fXZpc2l0QW5pbWF0ZSh0LG4pe2NvbnN0IGU9bi5jdXJyZW50QW5pbWF0ZVRpbWluZ3M9dGhpcy5fdmlzaXRUaW1pbmcodC50aW1pbmdzLG4pLGE9bi5jdXJyZW50VGltZWxpbmU7ZS5kZWxheSYmKG4uaW5jcmVtZW50VGltZShlLmRlbGF5KSxhLnNuYXBzaG90Q3VycmVudFN0eWxlcygpKTtjb25zdCBvPXQuc3R5bGU7NT09by50eXBlP3RoaXMudmlzaXRLZXlmcmFtZXMobyxuKToobi5pbmNyZW1lbnRUaW1lKGUuZHVyYXRpb24pLHRoaXMudmlzaXRTdHlsZShvLG4pLGEuYXBwbHlTdHlsZXNUb0tleWZyYW1lKCkpLG4uY3VycmVudEFuaW1hdGVUaW1pbmdzPW51bGwsbi5wcmV2aW91c05vZGU9dH12aXNpdFN0eWxlKHQsbil7Y29uc3QgZT1uLmN1cnJlbnRUaW1lbGluZSxhPW4uY3VycmVudEFuaW1hdGVUaW1pbmdzOyFhJiZlLmdldEN1cnJlbnRTdHlsZVByb3BlcnRpZXMoKS5sZW5ndGgmJmUuZm9yd2FyZEZyYW1lKCk7Y29uc3Qgbz1hJiZhLmVhc2luZ3x8dC5lYXNpbmc7dC5pc0VtcHR5U3RlcD9lLmFwcGx5RW1wdHlTdGVwKG8pOmUuc2V0U3R5bGVzKHQuc3R5bGVzLG8sbi5lcnJvcnMsbi5vcHRpb25zKSxuLnByZXZpb3VzTm9kZT10fXZpc2l0S2V5ZnJhbWVzKHQsbil7Y29uc3QgZT1uLmN1cnJlbnRBbmltYXRlVGltaW5ncyxhPW4uY3VycmVudFRpbWVsaW5lLmR1cmF0aW9uLG89ZS5kdXJhdGlvbixyPW4uY3JlYXRlU3ViQ29udGV4dCgpLmN1cnJlbnRUaW1lbGluZTtyLmVhc2luZz1lLmVhc2luZyx0LnN0eWxlcy5mb3JFYWNoKCh0PT57ci5mb3J3YXJkVGltZSgodC5vZmZzZXR8fDApKm8pLHIuc2V0U3R5bGVzKHQuc3R5bGVzLHQuZWFzaW5nLG4uZXJyb3JzLG4ub3B0aW9ucyksci5hcHBseVN0eWxlc1RvS2V5ZnJhbWUoKX0pKSxuLmN1cnJlbnRUaW1lbGluZS5tZXJnZVRpbWVsaW5lQ29sbGVjdGVkU3R5bGVzKHIpLG4udHJhbnNmb3JtSW50b05ld1RpbWVsaW5lKGErbyksbi5wcmV2aW91c05vZGU9dH12aXNpdFF1ZXJ5KHQsbil7Y29uc3QgZT1uLmN1cnJlbnRUaW1lbGluZS5jdXJyZW50VGltZSxhPXQub3B0aW9uc3x8e30sbz1hLmRlbGF5P3B4KGEuZGVsYXkpOjA7byYmKDY9PT1uLnByZXZpb3VzTm9kZS50eXBlfHwwPT1lJiZuLmN1cnJlbnRUaW1lbGluZS5nZXRDdXJyZW50U3R5bGVQcm9wZXJ0aWVzKCkubGVuZ3RoKSYmKG4uY3VycmVudFRpbWVsaW5lLnNuYXBzaG90Q3VycmVudFN0eWxlcygpLG4ucHJldmlvdXNOb2RlPVF4KTtsZXQgcj1lO2NvbnN0IGk9bi5pbnZva2VRdWVyeSh0LnNlbGVjdG9yLHQub3JpZ2luYWxTZWxlY3Rvcix0LmxpbWl0LHQuaW5jbHVkZVNlbGYsISFhLm9wdGlvbmFsLG4uZXJyb3JzKTtuLmN1cnJlbnRRdWVyeVRvdGFsPWkubGVuZ3RoO2xldCBjPW51bGw7aS5mb3JFYWNoKCgoZSxhKT0+e24uY3VycmVudFF1ZXJ5SW5kZXg9YTtjb25zdCBpPW4uY3JlYXRlU3ViQ29udGV4dCh0Lm9wdGlvbnMsZSk7byYmaS5kZWxheU5leHRTdGVwKG8pLGU9PT1uLmVsZW1lbnQmJihjPWkuY3VycmVudFRpbWVsaW5lKSx6eCh0aGlzLHQuYW5pbWF0aW9uLGkpLGkuY3VycmVudFRpbWVsaW5lLmFwcGx5U3R5bGVzVG9LZXlmcmFtZSgpLHI9TWF0aC5tYXgocixpLmN1cnJlbnRUaW1lbGluZS5jdXJyZW50VGltZSl9KSksbi5jdXJyZW50UXVlcnlJbmRleD0wLG4uY3VycmVudFF1ZXJ5VG90YWw9MCxuLnRyYW5zZm9ybUludG9OZXdUaW1lbGluZShyKSxjJiYobi5jdXJyZW50VGltZWxpbmUubWVyZ2VUaW1lbGluZUNvbGxlY3RlZFN0eWxlcyhjKSxuLmN1cnJlbnRUaW1lbGluZS5zbmFwc2hvdEN1cnJlbnRTdHlsZXMoKSksbi5wcmV2aW91c05vZGU9dH12aXNpdFN0YWdnZXIodCxuKXtjb25zdCBlPW4ucGFyZW50Q29udGV4dCxhPW4uY3VycmVudFRpbWVsaW5lLG89dC50aW1pbmdzLHI9TWF0aC5hYnMoby5kdXJhdGlvbiksaT1yKihuLmN1cnJlbnRRdWVyeVRvdGFsLTEpO2xldCBjPXIqbi5jdXJyZW50UXVlcnlJbmRleDtzd2l0Y2goby5kdXJhdGlvbjwwPyJyZXZlcnNlIjpvLmVhc2luZyl7Y2FzZSJyZXZlcnNlIjpjPWktYzticmVhaztjYXNlImZ1bGwiOmM9ZS5jdXJyZW50U3RhZ2dlclRpbWV9Y29uc3Qgcz1uLmN1cnJlbnRUaW1lbGluZTtjJiZzLmRlbGF5TmV4dFN0ZXAoYyk7Y29uc3QgbD1zLmN1cnJlbnRUaW1lO3p4KHRoaXMsdC5hbmltYXRpb24sbiksbi5wcmV2aW91c05vZGU9dCxlLmN1cnJlbnRTdGFnZ2VyVGltZT1hLmN1cnJlbnRUaW1lLWwrKGEuc3RhcnRUaW1lLWUuY3VycmVudFRpbWVsaW5lLnN0YXJ0VGltZSl9fWNvbnN0IFF4PXt9O2NsYXNzIEt4e2NvbnN0cnVjdG9yKHQsbixlLGEsbyxyLGksYyl7dGhpcy5fZHJpdmVyPXQsdGhpcy5lbGVtZW50PW4sdGhpcy5zdWJJbnN0cnVjdGlvbnM9ZSx0aGlzLl9lbnRlckNsYXNzTmFtZT1hLHRoaXMuX2xlYXZlQ2xhc3NOYW1lPW8sdGhpcy5lcnJvcnM9cix0aGlzLnRpbWVsaW5lcz1pLHRoaXMucGFyZW50Q29udGV4dD1udWxsLHRoaXMuY3VycmVudEFuaW1hdGVUaW1pbmdzPW51bGwsdGhpcy5wcmV2aW91c05vZGU9UXgsdGhpcy5zdWJDb250ZXh0Q291bnQ9MCx0aGlzLm9wdGlvbnM9e30sdGhpcy5jdXJyZW50UXVlcnlJbmRleD0wLHRoaXMuY3VycmVudFF1ZXJ5VG90YWw9MCx0aGlzLmN1cnJlbnRTdGFnZ2VyVGltZT0wLHRoaXMuY3VycmVudFRpbWVsaW5lPWN8fG5ldyAkeCh0aGlzLl9kcml2ZXIsbiwwKSxpLnB1c2godGhpcy5jdXJyZW50VGltZWxpbmUpfWdldCBwYXJhbXMoKXtyZXR1cm4gdGhpcy5vcHRpb25zLnBhcmFtc311cGRhdGVPcHRpb25zKHQsbil7aWYoIXQpcmV0dXJuO2NvbnN0IGU9dDtsZXQgYT10aGlzLm9wdGlvbnM7bnVsbCE9ZS5kdXJhdGlvbiYmKGEuZHVyYXRpb249cHgoZS5kdXJhdGlvbikpLG51bGwhPWUuZGVsYXkmJihhLmRlbGF5PXB4KGUuZGVsYXkpKTtjb25zdCBvPWUucGFyYW1zO2lmKG8pe2xldCB0PWEucGFyYW1zO3R8fCh0PXRoaXMub3B0aW9ucy5wYXJhbXM9e30pLE9iamVjdC5rZXlzKG8pLmZvckVhY2goKGU9PntuJiZ0Lmhhc093blByb3BlcnR5KGUpfHwodFtlXT1reChvW2VdLHQsdGhpcy5lcnJvcnMpKX0pKX19X2NvcHlPcHRpb25zKCl7Y29uc3QgdD17fTtpZih0aGlzLm9wdGlvbnMpe2NvbnN0IG49dGhpcy5vcHRpb25zLnBhcmFtcztpZihuKXtjb25zdCBlPXQucGFyYW1zPXt9O09iamVjdC5rZXlzKG4pLmZvckVhY2goKHQ9PntlW3RdPW5bdF19KSl9fXJldHVybiB0fWNyZWF0ZVN1YkNvbnRleHQodD1udWxsLG4sZSl7Y29uc3QgYT1ufHx0aGlzLmVsZW1lbnQsbz1uZXcgS3godGhpcy5fZHJpdmVyLGEsdGhpcy5zdWJJbnN0cnVjdGlvbnMsdGhpcy5fZW50ZXJDbGFzc05hbWUsdGhpcy5fbGVhdmVDbGFzc05hbWUsdGhpcy5lcnJvcnMsdGhpcy50aW1lbGluZXMsdGhpcy5jdXJyZW50VGltZWxpbmUuZm9yayhhLGV8fDApKTtyZXR1cm4gby5wcmV2aW91c05vZGU9dGhpcy5wcmV2aW91c05vZGUsby5jdXJyZW50QW5pbWF0ZVRpbWluZ3M9dGhpcy5jdXJyZW50QW5pbWF0ZVRpbWluZ3Msby5vcHRpb25zPXRoaXMuX2NvcHlPcHRpb25zKCksby51cGRhdGVPcHRpb25zKHQpLG8uY3VycmVudFF1ZXJ5SW5kZXg9dGhpcy5jdXJyZW50UXVlcnlJbmRleCxvLmN1cnJlbnRRdWVyeVRvdGFsPXRoaXMuY3VycmVudFF1ZXJ5VG90YWwsby5wYXJlbnRDb250ZXh0PXRoaXMsdGhpcy5zdWJDb250ZXh0Q291bnQrKyxvfXRyYW5zZm9ybUludG9OZXdUaW1lbGluZSh0KXtyZXR1cm4gdGhpcy5wcmV2aW91c05vZGU9UXgsdGhpcy5jdXJyZW50VGltZWxpbmU9dGhpcy5jdXJyZW50VGltZWxpbmUuZm9yayh0aGlzLmVsZW1lbnQsdCksdGhpcy50aW1lbGluZXMucHVzaCh0aGlzLmN1cnJlbnRUaW1lbGluZSksdGhpcy5jdXJyZW50VGltZWxpbmV9YXBwZW5kSW5zdHJ1Y3Rpb25Ub1RpbWVsaW5lKHQsbixlKXtjb25zdCBhPXtkdXJhdGlvbjpudWxsIT1uP246dC5kdXJhdGlvbixkZWxheTp0aGlzLmN1cnJlbnRUaW1lbGluZS5jdXJyZW50VGltZSsobnVsbCE9ZT9lOjApK3QuZGVsYXksZWFzaW5nOiIifSxvPW5ldyB0eSh0aGlzLl9kcml2ZXIsdC5lbGVtZW50LHQua2V5ZnJhbWVzLHQucHJlU3R5bGVQcm9wcyx0LnBvc3RTdHlsZVByb3BzLGEsdC5zdHJldGNoU3RhcnRpbmdLZXlmcmFtZSk7cmV0dXJuIHRoaXMudGltZWxpbmVzLnB1c2gobyksYX1pbmNyZW1lbnRUaW1lKHQpe3RoaXMuY3VycmVudFRpbWVsaW5lLmZvcndhcmRUaW1lKHRoaXMuY3VycmVudFRpbWVsaW5lLmR1cmF0aW9uK3QpfWRlbGF5TmV4dFN0ZXAodCl7dD4wJiZ0aGlzLmN1cnJlbnRUaW1lbGluZS5kZWxheU5leHRTdGVwKHQpfWludm9rZVF1ZXJ5KHQsbixlLGEsbyxyKXtsZXQgaT1bXTtpZihhJiZpLnB1c2godGhpcy5lbGVtZW50KSx0Lmxlbmd0aD4wKXt0PSh0PXQucmVwbGFjZShxeCwiLiIrdGhpcy5fZW50ZXJDbGFzc05hbWUpKS5yZXBsYWNlKFp4LCIuIit0aGlzLl9sZWF2ZUNsYXNzTmFtZSk7bGV0IG49dGhpcy5fZHJpdmVyLnF1ZXJ5KHRoaXMuZWxlbWVudCx0LDEhPWUpOzAhPT1lJiYobj1lPDA/bi5zbGljZShuLmxlbmd0aCtlLG4ubGVuZ3RoKTpuLnNsaWNlKDAsZSkpLGkucHVzaCguLi5uKX1yZXR1cm4gb3x8MCE9aS5sZW5ndGh8fHIucHVzaChgXGBxdWVyeSgiJHtufSIpXGAgcmV0dXJuZWQgemVybyBlbGVtZW50cy4gKFVzZSBcYHF1ZXJ5KCIke259IiwgeyBvcHRpb25hbDogdHJ1ZSB9KVxgIGlmIHlvdSB3aXNoIHRvIGFsbG93IHRoaXMuKWApLGl9fWNsYXNzICR4e2NvbnN0cnVjdG9yKHQsbixlLGEpe3RoaXMuX2RyaXZlcj10LHRoaXMuZWxlbWVudD1uLHRoaXMuc3RhcnRUaW1lPWUsdGhpcy5fZWxlbWVudFRpbWVsaW5lU3R5bGVzTG9va3VwPWEsdGhpcy5kdXJhdGlvbj0wLHRoaXMuX3ByZXZpb3VzS2V5ZnJhbWU9e30sdGhpcy5fY3VycmVudEtleWZyYW1lPXt9LHRoaXMuX2tleWZyYW1lcz1uZXcgTWFwLHRoaXMuX3N0eWxlU3VtbWFyeT17fSx0aGlzLl9wZW5kaW5nU3R5bGVzPXt9LHRoaXMuX2JhY2tGaWxsPXt9LHRoaXMuX2N1cnJlbnRFbXB0eVN0ZXBLZXlmcmFtZT1udWxsLHRoaXMuX2VsZW1lbnRUaW1lbGluZVN0eWxlc0xvb2t1cHx8KHRoaXMuX2VsZW1lbnRUaW1lbGluZVN0eWxlc0xvb2t1cD1uZXcgTWFwKSx0aGlzLl9sb2NhbFRpbWVsaW5lU3R5bGVzPU9iamVjdC5jcmVhdGUodGhpcy5fYmFja0ZpbGwse30pLHRoaXMuX2dsb2JhbFRpbWVsaW5lU3R5bGVzPXRoaXMuX2VsZW1lbnRUaW1lbGluZVN0eWxlc0xvb2t1cC5nZXQobiksdGhpcy5fZ2xvYmFsVGltZWxpbmVTdHlsZXN8fCh0aGlzLl9nbG9iYWxUaW1lbGluZVN0eWxlcz10aGlzLl9sb2NhbFRpbWVsaW5lU3R5bGVzLHRoaXMuX2VsZW1lbnRUaW1lbGluZVN0eWxlc0xvb2t1cC5zZXQobix0aGlzLl9sb2NhbFRpbWVsaW5lU3R5bGVzKSksdGhpcy5fbG9hZEtleWZyYW1lKCl9Y29udGFpbnNBbmltYXRpb24oKXtzd2l0Y2godGhpcy5fa2V5ZnJhbWVzLnNpemUpe2Nhc2UgMDpyZXR1cm4hMTtjYXNlIDE6cmV0dXJuIHRoaXMuZ2V0Q3VycmVudFN0eWxlUHJvcGVydGllcygpLmxlbmd0aD4wO2RlZmF1bHQ6cmV0dXJuITB9fWdldEN1cnJlbnRTdHlsZVByb3BlcnRpZXMoKXtyZXR1cm4gT2JqZWN0LmtleXModGhpcy5fY3VycmVudEtleWZyYW1lKX1nZXQgY3VycmVudFRpbWUoKXtyZXR1cm4gdGhpcy5zdGFydFRpbWUrdGhpcy5kdXJhdGlvbn1kZWxheU5leHRTdGVwKHQpe2NvbnN0IG49MT09dGhpcy5fa2V5ZnJhbWVzLnNpemUmJk9iamVjdC5rZXlzKHRoaXMuX3BlbmRpbmdTdHlsZXMpLmxlbmd0aDt0aGlzLmR1cmF0aW9ufHxuPyh0aGlzLmZvcndhcmRUaW1lKHRoaXMuY3VycmVudFRpbWUrdCksbiYmdGhpcy5zbmFwc2hvdEN1cnJlbnRTdHlsZXMoKSk6dGhpcy5zdGFydFRpbWUrPXR9Zm9yayh0LG4pe3JldHVybiB0aGlzLmFwcGx5U3R5bGVzVG9LZXlmcmFtZSgpLG5ldyAkeCh0aGlzLl9kcml2ZXIsdCxufHx0aGlzLmN1cnJlbnRUaW1lLHRoaXMuX2VsZW1lbnRUaW1lbGluZVN0eWxlc0xvb2t1cCl9X2xvYWRLZXlmcmFtZSgpe3RoaXMuX2N1cnJlbnRLZXlmcmFtZSYmKHRoaXMuX3ByZXZpb3VzS2V5ZnJhbWU9dGhpcy5fY3VycmVudEtleWZyYW1lKSx0aGlzLl9jdXJyZW50S2V5ZnJhbWU9dGhpcy5fa2V5ZnJhbWVzLmdldCh0aGlzLmR1cmF0aW9uKSx0aGlzLl9jdXJyZW50S2V5ZnJhbWV8fCh0aGlzLl9jdXJyZW50S2V5ZnJhbWU9T2JqZWN0LmNyZWF0ZSh0aGlzLl9iYWNrRmlsbCx7fSksdGhpcy5fa2V5ZnJhbWVzLnNldCh0aGlzLmR1cmF0aW9uLHRoaXMuX2N1cnJlbnRLZXlmcmFtZSkpfWZvcndhcmRGcmFtZSgpe3RoaXMuZHVyYXRpb24rPTEsdGhpcy5fbG9hZEtleWZyYW1lKCl9Zm9yd2FyZFRpbWUodCl7dGhpcy5hcHBseVN0eWxlc1RvS2V5ZnJhbWUoKSx0aGlzLmR1cmF0aW9uPXQsdGhpcy5fbG9hZEtleWZyYW1lKCl9X3VwZGF0ZVN0eWxlKHQsbil7dGhpcy5fbG9jYWxUaW1lbGluZVN0eWxlc1t0XT1uLHRoaXMuX2dsb2JhbFRpbWVsaW5lU3R5bGVzW3RdPW4sdGhpcy5fc3R5bGVTdW1tYXJ5W3RdPXt0aW1lOnRoaXMuY3VycmVudFRpbWUsdmFsdWU6bn19YWxsb3dPbmx5VGltZWxpbmVTdHlsZXMoKXtyZXR1cm4gdGhpcy5fY3VycmVudEVtcHR5U3RlcEtleWZyYW1lIT09dGhpcy5fY3VycmVudEtleWZyYW1lfWFwcGx5RW1wdHlTdGVwKHQpe3QmJih0aGlzLl9wcmV2aW91c0tleWZyYW1lLmVhc2luZz10KSxPYmplY3Qua2V5cyh0aGlzLl9nbG9iYWxUaW1lbGluZVN0eWxlcykuZm9yRWFjaCgodD0+e3RoaXMuX2JhY2tGaWxsW3RdPXRoaXMuX2dsb2JhbFRpbWVsaW5lU3R5bGVzW3RdfHx3UCx0aGlzLl9jdXJyZW50S2V5ZnJhbWVbdF09d1B9KSksdGhpcy5fY3VycmVudEVtcHR5U3RlcEtleWZyYW1lPXRoaXMuX2N1cnJlbnRLZXlmcmFtZX1zZXRTdHlsZXModCxuLGUsYSl7biYmKHRoaXMuX3ByZXZpb3VzS2V5ZnJhbWUuZWFzaW5nPW4pO2NvbnN0IG89YSYmYS5wYXJhbXN8fHt9LHI9KGZ1bmN0aW9uIGkodCxuKXtjb25zdCBlPXt9O2xldCBhO3JldHVybiB0LmZvckVhY2goKHQ9PnsiKiI9PT10PyhhPWF8fE9iamVjdC5rZXlzKG4pLGEuZm9yRWFjaCgodD0+e2VbdF09d1B9KSkpOmh4KHQsITEsZSl9KSksZX0KLyoqCiAgICAgKiBAbGljZW5zZQogICAgICogQ29weXJpZ2h0IEdvb2dsZSBMTEMgQWxsIFJpZ2h0cyBSZXNlcnZlZC4KICAgICAqCiAgICAgKiBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhbiBNSVQtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQogICAgICogZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZSBhdCBodHRwczovL2FuZ3VsYXIuaW8vbGljZW5zZQogICAgICovKSh0LHRoaXMuX2dsb2JhbFRpbWVsaW5lU3R5bGVzKTtPYmplY3Qua2V5cyhyKS5mb3JFYWNoKCh0PT57Y29uc3Qgbj1reChyW3RdLG8sZSk7dGhpcy5fcGVuZGluZ1N0eWxlc1t0XT1uLHRoaXMuX2xvY2FsVGltZWxpbmVTdHlsZXMuaGFzT3duUHJvcGVydHkodCl8fCh0aGlzLl9iYWNrRmlsbFt0XT10aGlzLl9nbG9iYWxUaW1lbGluZVN0eWxlcy5oYXNPd25Qcm9wZXJ0eSh0KT90aGlzLl9nbG9iYWxUaW1lbGluZVN0eWxlc1t0XTp3UCksdGhpcy5fdXBkYXRlU3R5bGUodCxuKX0pKX1hcHBseVN0eWxlc1RvS2V5ZnJhbWUoKXtjb25zdCB0PXRoaXMuX3BlbmRpbmdTdHlsZXMsbj1PYmplY3Qua2V5cyh0KTswIT1uLmxlbmd0aCYmKHRoaXMuX3BlbmRpbmdTdHlsZXM9e30sbi5mb3JFYWNoKChuPT57dGhpcy5fY3VycmVudEtleWZyYW1lW25dPXRbbl19KSksT2JqZWN0LmtleXModGhpcy5fbG9jYWxUaW1lbGluZVN0eWxlcykuZm9yRWFjaCgodD0+e3RoaXMuX2N1cnJlbnRLZXlmcmFtZS5oYXNPd25Qcm9wZXJ0eSh0KXx8KHRoaXMuX2N1cnJlbnRLZXlmcmFtZVt0XT10aGlzLl9sb2NhbFRpbWVsaW5lU3R5bGVzW3RdKX0pKSl9c25hcHNob3RDdXJyZW50U3R5bGVzKCl7T2JqZWN0LmtleXModGhpcy5fbG9jYWxUaW1lbGluZVN0eWxlcykuZm9yRWFjaCgodD0+e2NvbnN0IG49dGhpcy5fbG9jYWxUaW1lbGluZVN0eWxlc1t0XTt0aGlzLl9wZW5kaW5nU3R5bGVzW3RdPW4sdGhpcy5fdXBkYXRlU3R5bGUodCxuKX0pKX1nZXRGaW5hbEtleWZyYW1lKCl7cmV0dXJuIHRoaXMuX2tleWZyYW1lcy5nZXQodGhpcy5kdXJhdGlvbil9Z2V0IHByb3BlcnRpZXMoKXtjb25zdCB0PVtdO2ZvcihsZXQgbiBpbiB0aGlzLl9jdXJyZW50S2V5ZnJhbWUpdC5wdXNoKG4pO3JldHVybiB0fW1lcmdlVGltZWxpbmVDb2xsZWN0ZWRTdHlsZXModCl7T2JqZWN0LmtleXModC5fc3R5bGVTdW1tYXJ5KS5mb3JFYWNoKChuPT57Y29uc3QgZT10aGlzLl9zdHlsZVN1bW1hcnlbbl0sYT10Ll9zdHlsZVN1bW1hcnlbbl07KCFlfHxhLnRpbWU+ZS50aW1lKSYmdGhpcy5fdXBkYXRlU3R5bGUobixhLnZhbHVlKX0pKX1idWlsZEtleWZyYW1lcygpe3RoaXMuYXBwbHlTdHlsZXNUb0tleWZyYW1lKCk7Y29uc3QgdD1uZXcgU2V0LG49bmV3IFNldCxlPTE9PT10aGlzLl9rZXlmcmFtZXMuc2l6ZSYmMD09PXRoaXMuZHVyYXRpb247bGV0IGE9W107dGhpcy5fa2V5ZnJhbWVzLmZvckVhY2goKChvLHIpPT57Y29uc3QgaT1oeChvLCEwKTtPYmplY3Qua2V5cyhpKS5mb3JFYWNoKChlPT57Y29uc3QgYT1pW2VdOyIhIj09YT90LmFkZChlKTphPT13UCYmbi5hZGQoZSl9KSksZXx8KGkub2Zmc2V0PXIvdGhpcy5kdXJhdGlvbiksYS5wdXNoKGkpfSkpO2NvbnN0IG89dC5zaXplP3Z4KHQudmFsdWVzKCkpOltdLHI9bi5zaXplP3Z4KG4udmFsdWVzKCkpOltdO2lmKGUpe2NvbnN0IHQ9YVswXSxuPWZ4KHQpO3Qub2Zmc2V0PTAsbi5vZmZzZXQ9MSxhPVt0LG5dfXJldHVybiBHeCh0aGlzLmVsZW1lbnQsYSxvLHIsdGhpcy5kdXJhdGlvbix0aGlzLnN0YXJ0VGltZSx0aGlzLmVhc2luZywhMSl9fWNsYXNzIHR5IGV4dGVuZHMgJHh7Y29uc3RydWN0b3IodCxuLGUsYSxvLHIsaT0hMSl7c3VwZXIodCxuLHIuZGVsYXkpLHRoaXMuZWxlbWVudD1uLHRoaXMua2V5ZnJhbWVzPWUsdGhpcy5wcmVTdHlsZVByb3BzPWEsdGhpcy5wb3N0U3R5bGVQcm9wcz1vLHRoaXMuX3N0cmV0Y2hTdGFydGluZ0tleWZyYW1lPWksdGhpcy50aW1pbmdzPXtkdXJhdGlvbjpyLmR1cmF0aW9uLGRlbGF5OnIuZGVsYXksZWFzaW5nOnIuZWFzaW5nfX1jb250YWluc0FuaW1hdGlvbigpe3JldHVybiB0aGlzLmtleWZyYW1lcy5sZW5ndGg+MX1idWlsZEtleWZyYW1lcygpe2xldCB0PXRoaXMua2V5ZnJhbWVzLHtkZWxheTpuLGR1cmF0aW9uOmUsZWFzaW5nOmF9PXRoaXMudGltaW5ncztpZih0aGlzLl9zdHJldGNoU3RhcnRpbmdLZXlmcmFtZSYmbil7Y29uc3Qgbz1bXSxyPWUrbixpPW4vcixjPWh4KHRbMF0sITEpO2Mub2Zmc2V0PTAsby5wdXNoKGMpO2NvbnN0IHM9aHgodFswXSwhMSk7cy5vZmZzZXQ9bnkoaSksby5wdXNoKHMpO2NvbnN0IGw9dC5sZW5ndGgtMTtmb3IobGV0IGE9MTthPD1sO2ErKyl7bGV0IGk9aHgodFthXSwhMSk7aS5vZmZzZXQ9bnkoKG4raS5vZmZzZXQqZSkvciksby5wdXNoKGkpfWU9cixuPTAsYT0iIix0PW99cmV0dXJuIEd4KHRoaXMuZWxlbWVudCx0LHRoaXMucHJlU3R5bGVQcm9wcyx0aGlzLnBvc3RTdHlsZVByb3BzLGUsbixhLCEwKX19ZnVuY3Rpb24gbnkodCxuPTMpe2NvbnN0IGU9TWF0aC5wb3coMTAsbi0xKTtyZXR1cm4gTWF0aC5yb3VuZCh0KmUpL2V9Y2xhc3MgZXl7fQovKioKICAgICAqIEBsaWNlbnNlCiAgICAgKiBDb3B5cmlnaHQgR29vZ2xlIExMQyBBbGwgUmlnaHRzIFJlc2VydmVkLgogICAgICoKICAgICAqIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGFuIE1JVC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCiAgICAgKiBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlIGF0IGh0dHBzOi8vYW5ndWxhci5pby9saWNlbnNlCiAgICAgKi9jbGFzcyBheSBleHRlbmRzIGV5e25vcm1hbGl6ZVByb3BlcnR5TmFtZSh0LG4pe3JldHVybiBTeCh0KX1ub3JtYWxpemVTdHlsZVZhbHVlKHQsbixlLGEpe2xldCBvPSIiO2NvbnN0IHI9ZS50b1N0cmluZygpLnRyaW0oKTtpZihveVtuXSYmMCE9PWUmJiIwIiE9PWUpaWYoIm51bWJlciI9PXR5cGVvZiBlKW89InB4IjtlbHNle2NvbnN0IG49ZS5tYXRjaCgvXlsrLV0/W1xkXC5dKyhbYS16XSopJC8pO24mJjA9PW5bMV0ubGVuZ3RoJiZhLnB1c2goYFBsZWFzZSBwcm92aWRlIGEgQ1NTIHVuaXQgdmFsdWUgZm9yICR7dH06JHtlfWApfXJldHVybiByK299fWNvbnN0IG95PShmdW5jdGlvbiByeSh0KXtjb25zdCBuPXt9O3JldHVybiB0LmZvckVhY2goKHQ9Pm5bdF09ITApKSxufSkoIndpZHRoLGhlaWdodCxtaW5XaWR0aCxtaW5IZWlnaHQsbWF4V2lkdGgsbWF4SGVpZ2h0LGxlZnQsdG9wLGJvdHRvbSxyaWdodCxmb250U2l6ZSxvdXRsaW5lV2lkdGgsb3V0bGluZU9mZnNldCxwYWRkaW5nVG9wLHBhZGRpbmdMZWZ0LHBhZGRpbmdCb3R0b20scGFkZGluZ1JpZ2h0LG1hcmdpblRvcCxtYXJnaW5MZWZ0LG1hcmdpbkJvdHRvbSxtYXJnaW5SaWdodCxib3JkZXJSYWRpdXMsYm9yZGVyV2lkdGgsYm9yZGVyVG9wV2lkdGgsYm9yZGVyTGVmdFdpZHRoLGJvcmRlclJpZ2h0V2lkdGgsYm9yZGVyQm90dG9tV2lkdGgsdGV4dEluZGVudCxwZXJzcGVjdGl2ZSIuc3BsaXQoIiwiKSk7ZnVuY3Rpb24gaXkodCxuLGUsYSxvLHIsaSxjLHMsbCxtLGQsZyl7cmV0dXJue3R5cGU6MCxlbGVtZW50OnQsdHJpZ2dlck5hbWU6bixpc1JlbW92YWxUcmFuc2l0aW9uOm8sZnJvbVN0YXRlOmUsZnJvbVN0eWxlczpyLHRvU3RhdGU6YSx0b1N0eWxlczppLHRpbWVsaW5lczpjLHF1ZXJpZWRFbGVtZW50czpzLHByZVN0eWxlUHJvcHM6bCxwb3N0U3R5bGVQcm9wczptLHRvdGFsVGltZTpkLGVycm9yczpnfX1jb25zdCBjeT17fTtjbGFzcyBzeXtjb25zdHJ1Y3Rvcih0LG4sZSl7dGhpcy5fdHJpZ2dlck5hbWU9dCx0aGlzLmFzdD1uLHRoaXMuX3N0YXRlU3R5bGVzPWV9bWF0Y2godCxuLGUsYSl7cmV0dXJuKGZ1bmN0aW9uIG8odCxuLGUsYSxyKXtyZXR1cm4gdC5zb21lKCh0PT50KG4sZSxhLHIpKSl9KSh0aGlzLmFzdC5tYXRjaGVycyx0LG4sZSxhKX1idWlsZFN0eWxlcyh0LG4sZSl7Y29uc3QgYT10aGlzLl9zdGF0ZVN0eWxlc1siKiJdLG89dGhpcy5fc3RhdGVTdHlsZXNbdF0scj1hP2EuYnVpbGRTdHlsZXMobixlKTp7fTtyZXR1cm4gbz9vLmJ1aWxkU3R5bGVzKG4sZSk6cn1idWlsZCh0LG4sZSxhLG8scixpLGMscyxsKXtjb25zdCBtPVtdLGQ9dGhpcy5hc3Qub3B0aW9ucyYmdGhpcy5hc3Qub3B0aW9ucy5wYXJhbXN8fGN5LGc9dGhpcy5idWlsZFN0eWxlcyhlLGkmJmkucGFyYW1zfHxjeSxtKSxwPWMmJmMucGFyYW1zfHxjeSxiPXRoaXMuYnVpbGRTdHlsZXMoYSxwLG0pLHU9bmV3IFNldCxmPW5ldyBNYXAsaD1uZXcgTWFwLF89InZvaWQiPT09YSxDPXtwYXJhbXM6T2JqZWN0LmFzc2lnbihPYmplY3QuYXNzaWduKHt9LGQpLHApfSxNPWw/W106WHgodCxuLHRoaXMuYXN0LmFuaW1hdGlvbixvLHIsZyxiLEMscyxtKTtsZXQgTz0wO2lmKE0uZm9yRWFjaCgodD0+e089TWF0aC5tYXgodC5kdXJhdGlvbit0LmRlbGF5LE8pfSkpLG0ubGVuZ3RoKXJldHVybiBpeShuLHRoaXMuX3RyaWdnZXJOYW1lLGUsYSxfLGcsYixbXSxbXSxmLGgsTyxtKTtNLmZvckVhY2goKHQ9Pntjb25zdCBlPXQuZWxlbWVudCxhPVlQKGYsZSx7fSk7dC5wcmVTdHlsZVByb3BzLmZvckVhY2goKHQ9PmFbdF09ITApKTtjb25zdCBvPVlQKGgsZSx7fSk7dC5wb3N0U3R5bGVQcm9wcy5mb3JFYWNoKCh0PT5vW3RdPSEwKSksZSE9PW4mJnUuYWRkKGUpfSkpO2NvbnN0IFA9dngodS52YWx1ZXMoKSk7cmV0dXJuIGl5KG4sdGhpcy5fdHJpZ2dlck5hbWUsZSxhLF8sZyxiLE0sUCxmLGgsTyl9fWNsYXNzIGx5e2NvbnN0cnVjdG9yKHQsbil7dGhpcy5zdHlsZXM9dCx0aGlzLmRlZmF1bHRQYXJhbXM9bn1idWlsZFN0eWxlcyh0LG4pe2NvbnN0IGU9e30sYT1meCh0aGlzLmRlZmF1bHRQYXJhbXMpO3JldHVybiBPYmplY3Qua2V5cyh0KS5mb3JFYWNoKChuPT57Y29uc3QgZT10W25dO251bGwhPWUmJihhW25dPWUpfSkpLHRoaXMuc3R5bGVzLnN0eWxlcy5mb3JFYWNoKCh0PT57aWYoInN0cmluZyIhPXR5cGVvZiB0KXtjb25zdCBvPXQ7T2JqZWN0LmtleXMobykuZm9yRWFjaCgodD0+e2xldCByPW9bdF07ci5sZW5ndGg+MSYmKHI9a3gocixhLG4pKSxlW3RdPXJ9KSl9fSkpLGV9fWNsYXNzIG15e2NvbnN0cnVjdG9yKHQsbil7dGhpcy5uYW1lPXQsdGhpcy5hc3Q9bix0aGlzLnRyYW5zaXRpb25GYWN0b3JpZXM9W10sdGhpcy5zdGF0ZXM9e30sbi5zdGF0ZXMuZm9yRWFjaCgodD0+e3RoaXMuc3RhdGVzW3QubmFtZV09bmV3IGx5KHQuc3R5bGUsdC5vcHRpb25zJiZ0Lm9wdGlvbnMucGFyYW1zfHx7fSl9KSksZHkodGhpcy5zdGF0ZXMsInRydWUiLCIxIiksZHkodGhpcy5zdGF0ZXMsImZhbHNlIiwiMCIpLG4udHJhbnNpdGlvbnMuZm9yRWFjaCgobj0+e3RoaXMudHJhbnNpdGlvbkZhY3Rvcmllcy5wdXNoKG5ldyBzeSh0LG4sdGhpcy5zdGF0ZXMpKX0pKSx0aGlzLmZhbGxiYWNrVHJhbnNpdGlvbj0oZnVuY3Rpb24gZSh0LG4pe3JldHVybiBuZXcgc3kodCx7dHlwZToxLGFuaW1hdGlvbjp7dHlwZToyLHN0ZXBzOltdLG9wdGlvbnM6bnVsbH0sbWF0Y2hlcnM6Wyh0LG4pPT4hMF0sb3B0aW9uczpudWxsLHF1ZXJ5Q291bnQ6MCxkZXBDb3VudDowfSxuKX0pKHQsdGhpcy5zdGF0ZXMpfWdldCBjb250YWluc1F1ZXJpZXMoKXtyZXR1cm4gdGhpcy5hc3QucXVlcnlDb3VudD4wfW1hdGNoVHJhbnNpdGlvbih0LG4sZSxhKXtyZXR1cm4gdGhpcy50cmFuc2l0aW9uRmFjdG9yaWVzLmZpbmQoKG89Pm8ubWF0Y2godCxuLGUsYSkpKXx8bnVsbH1tYXRjaFN0eWxlcyh0LG4sZSl7cmV0dXJuIHRoaXMuZmFsbGJhY2tUcmFuc2l0aW9uLmJ1aWxkU3R5bGVzKHQsbixlKX19ZnVuY3Rpb24gZHkodCxuLGUpe3QuaGFzT3duUHJvcGVydHkobik/dC5oYXNPd25Qcm9wZXJ0eShlKXx8KHRbZV09dFtuXSk6dC5oYXNPd25Qcm9wZXJ0eShlKSYmKHRbbl09dFtlXSl9Ci8qKgogICAgICogQGxpY2Vuc2UKICAgICAqIENvcHlyaWdodCBHb29nbGUgTExDIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCiAgICAgKgogICAgICogVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYW4gTUlULXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKICAgICAqIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUgYXQgaHR0cHM6Ly9hbmd1bGFyLmlvL2xpY2Vuc2UKICAgICAqL2NvbnN0IGd5PW5ldyBZeDtjbGFzcyBweXtjb25zdHJ1Y3Rvcih0LG4sZSl7dGhpcy5ib2R5Tm9kZT10LHRoaXMuX2RyaXZlcj1uLHRoaXMuX25vcm1hbGl6ZXI9ZSx0aGlzLl9hbmltYXRpb25zPXt9LHRoaXMuX3BsYXllcnNCeUlkPXt9LHRoaXMucGxheWVycz1bXX1yZWdpc3Rlcih0LG4pe2NvbnN0IGU9W10sYT1IeCh0aGlzLl9kcml2ZXIsbixlKTtpZihlLmxlbmd0aCl0aHJvdyBuZXcgRXJyb3IoYFVuYWJsZSB0byBidWlsZCB0aGUgYW5pbWF0aW9uIGR1ZSB0byB0aGUgZm9sbG93aW5nIGVycm9yczogJHtlLmpvaW4oIlxuIil9YCk7dGhpcy5fYW5pbWF0aW9uc1t0XT1hfV9idWlsZFBsYXllcih0LG4sZSl7Y29uc3QgYT10LmVsZW1lbnQsbz1qUCgwLHRoaXMuX25vcm1hbGl6ZXIsMCx0LmtleWZyYW1lcyxuLGUpO3JldHVybiB0aGlzLl9kcml2ZXIuYW5pbWF0ZShhLG8sdC5kdXJhdGlvbix0LmRlbGF5LHQuZWFzaW5nLFtdLCEwKX1jcmVhdGUodCxuLGU9e30pe2NvbnN0IGE9W10sbz10aGlzLl9hbmltYXRpb25zW3RdO2xldCByO2NvbnN0IGk9bmV3IE1hcDtpZihvPyhyPVh4KHRoaXMuX2RyaXZlcixuLG8sY3gsc3gse30se30sZSxneSxhKSxyLmZvckVhY2goKHQ9Pntjb25zdCBuPVlQKGksdC5lbGVtZW50LHt9KTt0LnBvc3RTdHlsZVByb3BzLmZvckVhY2goKHQ9Pm5bdF09bnVsbCkpfSkpKTooYS5wdXNoKCJUaGUgcmVxdWVzdGVkIGFuaW1hdGlvbiBkb2Vzbid0IGV4aXN0IG9yIGhhcyBhbHJlYWR5IGJlZW4gZGVzdHJveWVkIikscj1bXSksYS5sZW5ndGgpdGhyb3cgbmV3IEVycm9yKGBVbmFibGUgdG8gY3JlYXRlIHRoZSBhbmltYXRpb24gZHVlIHRvIHRoZSBmb2xsb3dpbmcgZXJyb3JzOiAke2Euam9pbigiXG4iKX1gKTtpLmZvckVhY2goKCh0LG4pPT57T2JqZWN0LmtleXModCkuZm9yRWFjaCgoZT0+e3RbZV09dGhpcy5fZHJpdmVyLmNvbXB1dGVTdHlsZShuLGUsd1ApfSkpfSkpO2NvbnN0IGM9VlAoci5tYXAoKHQ9Pntjb25zdCBuPWkuZ2V0KHQuZWxlbWVudCk7cmV0dXJuIHRoaXMuX2J1aWxkUGxheWVyKHQse30sbil9KSkpO3JldHVybiB0aGlzLl9wbGF5ZXJzQnlJZFt0XT1jLGMub25EZXN0cm95KCgoKT0+dGhpcy5kZXN0cm95KHQpKSksdGhpcy5wbGF5ZXJzLnB1c2goYyksY31kZXN0cm95KHQpe2NvbnN0IG49dGhpcy5fZ2V0UGxheWVyKHQpO24uZGVzdHJveSgpLGRlbGV0ZSB0aGlzLl9wbGF5ZXJzQnlJZFt0XTtjb25zdCBlPXRoaXMucGxheWVycy5pbmRleE9mKG4pO2U+PTAmJnRoaXMucGxheWVycy5zcGxpY2UoZSwxKX1fZ2V0UGxheWVyKHQpe2NvbnN0IG49dGhpcy5fcGxheWVyc0J5SWRbdF07aWYoIW4pdGhyb3cgbmV3IEVycm9yKGBVbmFibGUgdG8gZmluZCB0aGUgdGltZWxpbmUgcGxheWVyIHJlZmVyZW5jZWQgYnkgJHt0fWApO3JldHVybiBufWxpc3Rlbih0LG4sZSxhKXtjb25zdCBvPUdQKG4sIiIsIiIsIiIpO3JldHVybiBVUCh0aGlzLl9nZXRQbGF5ZXIodCksZSxvLGEpLCgpPT57fX1jb21tYW5kKHQsbixlLGEpe2lmKCJyZWdpc3RlciI9PWUpcmV0dXJuIHZvaWQgdGhpcy5yZWdpc3Rlcih0LGFbMF0pO2lmKCJjcmVhdGUiPT1lKXJldHVybiB2b2lkIHRoaXMuY3JlYXRlKHQsbixhWzBdfHx7fSk7Y29uc3Qgbz10aGlzLl9nZXRQbGF5ZXIodCk7c3dpdGNoKGUpe2Nhc2UicGxheSI6by5wbGF5KCk7YnJlYWs7Y2FzZSJwYXVzZSI6by5wYXVzZSgpO2JyZWFrO2Nhc2UicmVzZXQiOm8ucmVzZXQoKTticmVhaztjYXNlInJlc3RhcnQiOm8ucmVzdGFydCgpO2JyZWFrO2Nhc2UiZmluaXNoIjpvLmZpbmlzaCgpO2JyZWFrO2Nhc2UiaW5pdCI6by5pbml0KCk7YnJlYWs7Y2FzZSJzZXRQb3NpdGlvbiI6by5zZXRQb3NpdGlvbihwYXJzZUZsb2F0KGFbMF0pKTticmVhaztjYXNlImRlc3Ryb3kiOnRoaXMuZGVzdHJveSh0KX19fQovKioKICAgICAqIEBsaWNlbnNlCiAgICAgKiBDb3B5cmlnaHQgR29vZ2xlIExMQyBBbGwgUmlnaHRzIFJlc2VydmVkLgogICAgICoKICAgICAqIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGFuIE1JVC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCiAgICAgKiBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlIGF0IGh0dHBzOi8vYW5ndWxhci5pby9saWNlbnNlCiAgICAgKi9jb25zdCBieT0ibmctYW5pbWF0ZS1xdWV1ZWQiLHV5PSJuZy1hbmltYXRlLWRpc2FibGVkIixmeT0iLm5nLWFuaW1hdGUtZGlzYWJsZWQiLGh5PVtdLF95PXtuYW1lc3BhY2VJZDoiIixzZXRGb3JSZW1vdmFsOiExLHNldEZvck1vdmU6ITEsaGFzQW5pbWF0aW9uOiExLHJlbW92ZWRCZWZvcmVRdWVyaWVkOiExfSxDeT17bmFtZXNwYWNlSWQ6IiIsc2V0Rm9yTW92ZTohMSxzZXRGb3JSZW1vdmFsOiExLGhhc0FuaW1hdGlvbjohMSxyZW1vdmVkQmVmb3JlUXVlcmllZDohMH07Y2xhc3MgTXl7Y29uc3RydWN0b3IodCxuPSIiKXt0aGlzLm5hbWVzcGFjZUlkPW47Y29uc3QgZT10JiZ0Lmhhc093blByb3BlcnR5KCJ2YWx1ZSIpO2lmKHRoaXMudmFsdWU9KGZ1bmN0aW9uIGEodCl7cmV0dXJuIG51bGwhPXQ/dDpudWxsfSkoZT90LnZhbHVlOnQpLGUpe2NvbnN0IG49ZngodCk7ZGVsZXRlIG4udmFsdWUsdGhpcy5vcHRpb25zPW59ZWxzZSB0aGlzLm9wdGlvbnM9e307dGhpcy5vcHRpb25zLnBhcmFtc3x8KHRoaXMub3B0aW9ucy5wYXJhbXM9e30pfWdldCBwYXJhbXMoKXtyZXR1cm4gdGhpcy5vcHRpb25zLnBhcmFtc31hYnNvcmJPcHRpb25zKHQpe2NvbnN0IG49dC5wYXJhbXM7aWYobil7Y29uc3QgdD10aGlzLm9wdGlvbnMucGFyYW1zO09iamVjdC5rZXlzKG4pLmZvckVhY2goKGU9PntudWxsPT10W2VdJiYodFtlXT1uW2VdKX0pKX19fWNvbnN0IE95PSJ2b2lkIixQeT1uZXcgTXkoT3kpO2NsYXNzIHh5e2NvbnN0cnVjdG9yKHQsbixlKXt0aGlzLmlkPXQsdGhpcy5ob3N0RWxlbWVudD1uLHRoaXMuX2VuZ2luZT1lLHRoaXMucGxheWVycz1bXSx0aGlzLl90cmlnZ2Vycz17fSx0aGlzLl9xdWV1ZT1bXSx0aGlzLl9lbGVtZW50TGlzdGVuZXJzPW5ldyBNYXAsdGhpcy5faG9zdENsYXNzTmFtZT0ibmctdG5zLSIrdCxBeShuLHRoaXMuX2hvc3RDbGFzc05hbWUpfWxpc3Rlbih0LG4sZSxhKXtpZighdGhpcy5fdHJpZ2dlcnMuaGFzT3duUHJvcGVydHkobikpdGhyb3cgbmV3IEVycm9yKGBVbmFibGUgdG8gbGlzdGVuIG9uIHRoZSBhbmltYXRpb24gdHJpZ2dlciBldmVudCAiJHtlfSIgYmVjYXVzZSB0aGUgYW5pbWF0aW9uIHRyaWdnZXIgIiR7bn0iIGRvZXNuJ3QgZXhpc3QhYCk7aWYobnVsbD09ZXx8MD09ZS5sZW5ndGgpdGhyb3cgbmV3IEVycm9yKGBVbmFibGUgdG8gbGlzdGVuIG9uIHRoZSBhbmltYXRpb24gdHJpZ2dlciAiJHtufSIgYmVjYXVzZSB0aGUgcHJvdmlkZWQgZXZlbnQgaXMgdW5kZWZpbmVkIWApO2lmKCEoZnVuY3Rpb24gbyh0KXtyZXR1cm4ic3RhcnQiPT10fHwiZG9uZSI9PXR9KShlKSl0aHJvdyBuZXcgRXJyb3IoYFRoZSBwcm92aWRlZCBhbmltYXRpb24gdHJpZ2dlciBldmVudCAiJHtlfSIgZm9yIHRoZSBhbmltYXRpb24gdHJpZ2dlciAiJHtufSIgaXMgbm90IHN1cHBvcnRlZCFgKTtjb25zdCByPVlQKHRoaXMuX2VsZW1lbnRMaXN0ZW5lcnMsdCxbXSksaT17bmFtZTpuLHBoYXNlOmUsY2FsbGJhY2s6YX07ci5wdXNoKGkpO2NvbnN0IGM9WVAodGhpcy5fZW5naW5lLnN0YXRlc0J5RWxlbWVudCx0LHt9KTtyZXR1cm4gYy5oYXNPd25Qcm9wZXJ0eShuKXx8KEF5KHQsbHgpLEF5KHQsIm5nLXRyaWdnZXItIituKSxjW25dPVB5KSwoKT0+e3RoaXMuX2VuZ2luZS5hZnRlckZsdXNoKCgoKT0+e2NvbnN0IHQ9ci5pbmRleE9mKGkpO3Q+PTAmJnIuc3BsaWNlKHQsMSksdGhpcy5fdHJpZ2dlcnNbbl18fGRlbGV0ZSBjW25dfSkpfX1yZWdpc3Rlcih0LG4pe3JldHVybiF0aGlzLl90cmlnZ2Vyc1t0XSYmKHRoaXMuX3RyaWdnZXJzW3RdPW4sITApfV9nZXRUcmlnZ2VyKHQpe2NvbnN0IG49dGhpcy5fdHJpZ2dlcnNbdF07aWYoIW4pdGhyb3cgbmV3IEVycm9yKGBUaGUgcHJvdmlkZWQgYW5pbWF0aW9uIHRyaWdnZXIgIiR7dH0iIGhhcyBub3QgYmVlbiByZWdpc3RlcmVkIWApO3JldHVybiBufXRyaWdnZXIodCxuLGUsYT0hMCl7Y29uc3Qgbz10aGlzLl9nZXRUcmlnZ2VyKG4pLHI9bmV3IGt5KHRoaXMuaWQsbix0KTtsZXQgaT10aGlzLl9lbmdpbmUuc3RhdGVzQnlFbGVtZW50LmdldCh0KTtpfHwoQXkodCxseCksQXkodCwibmctdHJpZ2dlci0iK24pLHRoaXMuX2VuZ2luZS5zdGF0ZXNCeUVsZW1lbnQuc2V0KHQsaT17fSkpO2xldCBjPWlbbl07Y29uc3Qgcz1uZXcgTXkoZSx0aGlzLmlkKTtpZighKGUmJmUuaGFzT3duUHJvcGVydHkoInZhbHVlIikpJiZjJiZzLmFic29yYk9wdGlvbnMoYy5vcHRpb25zKSxpW25dPXMsY3x8KGM9UHkpLHMudmFsdWUhPT1PeSYmYy52YWx1ZT09PXMudmFsdWUpe2lmKCEoZnVuY3Rpb24gbCh0LG4pe2NvbnN0IGU9T2JqZWN0LmtleXModCksYT1PYmplY3Qua2V5cyhuKTtpZihlLmxlbmd0aCE9YS5sZW5ndGgpcmV0dXJuITE7Zm9yKGxldCBhPTA7YTxlLmxlbmd0aDthKyspe2NvbnN0IG89ZVthXTtpZighbi5oYXNPd25Qcm9wZXJ0eShvKXx8dFtvXSE9PW5bb10pcmV0dXJuITF9cmV0dXJuITB9KShjLnBhcmFtcyxzLnBhcmFtcykpe2NvbnN0IG49W10sZT1vLm1hdGNoU3R5bGVzKGMudmFsdWUsYy5wYXJhbXMsbiksYT1vLm1hdGNoU3R5bGVzKHMudmFsdWUscy5wYXJhbXMsbik7bi5sZW5ndGg/dGhpcy5fZW5naW5lLnJlcG9ydEVycm9yKG4pOnRoaXMuX2VuZ2luZS5hZnRlckZsdXNoKCgoKT0+e094KHQsZSksTXgodCxhKX0pKX1yZXR1cm59Y29uc3QgbT1ZUCh0aGlzLl9lbmdpbmUucGxheWVyc0J5RWxlbWVudCx0LFtdKTttLmZvckVhY2goKHQ9Pnt0Lm5hbWVzcGFjZUlkPT10aGlzLmlkJiZ0LnRyaWdnZXJOYW1lPT1uJiZ0LnF1ZXVlZCYmdC5kZXN0cm95KCl9KSk7bGV0IGQ9by5tYXRjaFRyYW5zaXRpb24oYy52YWx1ZSxzLnZhbHVlLHQscy5wYXJhbXMpLGc9ITE7aWYoIWQpe2lmKCFhKXJldHVybjtkPW8uZmFsbGJhY2tUcmFuc2l0aW9uLGc9ITB9cmV0dXJuIHRoaXMuX2VuZ2luZS50b3RhbFF1ZXVlZFBsYXllcnMrKyx0aGlzLl9xdWV1ZS5wdXNoKHtlbGVtZW50OnQsdHJpZ2dlck5hbWU6bix0cmFuc2l0aW9uOmQsZnJvbVN0YXRlOmMsdG9TdGF0ZTpzLHBsYXllcjpyLGlzRmFsbGJhY2tUcmFuc2l0aW9uOmd9KSxnfHwoQXkodCxieSksci5vblN0YXJ0KCgoKT0+e3p5KHQsYnkpfSkpKSxyLm9uRG9uZSgoKCk9PntsZXQgbj10aGlzLnBsYXllcnMuaW5kZXhPZihyKTtuPj0wJiZ0aGlzLnBsYXllcnMuc3BsaWNlKG4sMSk7Y29uc3QgZT10aGlzLl9lbmdpbmUucGxheWVyc0J5RWxlbWVudC5nZXQodCk7aWYoZSl7bGV0IHQ9ZS5pbmRleE9mKHIpO3Q+PTAmJmUuc3BsaWNlKHQsMSl9fSkpLHRoaXMucGxheWVycy5wdXNoKHIpLG0ucHVzaChyKSxyfWRlcmVnaXN0ZXIodCl7ZGVsZXRlIHRoaXMuX3RyaWdnZXJzW3RdLHRoaXMuX2VuZ2luZS5zdGF0ZXNCeUVsZW1lbnQuZm9yRWFjaCgoKG4sZSk9PntkZWxldGUgblt0XX0pKSx0aGlzLl9lbGVtZW50TGlzdGVuZXJzLmZvckVhY2goKChuLGUpPT57dGhpcy5fZWxlbWVudExpc3RlbmVycy5zZXQoZSxuLmZpbHRlcigobj0+bi5uYW1lIT10KSkpfSkpfWNsZWFyRWxlbWVudENhY2hlKHQpe3RoaXMuX2VuZ2luZS5zdGF0ZXNCeUVsZW1lbnQuZGVsZXRlKHQpLHRoaXMuX2VsZW1lbnRMaXN0ZW5lcnMuZGVsZXRlKHQpO2NvbnN0IG49dGhpcy5fZW5naW5lLnBsYXllcnNCeUVsZW1lbnQuZ2V0KHQpO24mJihuLmZvckVhY2goKHQ9PnQuZGVzdHJveSgpKSksdGhpcy5fZW5naW5lLnBsYXllcnNCeUVsZW1lbnQuZGVsZXRlKHQpKX1fc2lnbmFsUmVtb3ZhbEZvcklubmVyVHJpZ2dlcnModCxuKXtjb25zdCBlPXRoaXMuX2VuZ2luZS5kcml2ZXIucXVlcnkodCxteCwhMCk7ZS5mb3JFYWNoKCh0PT57aWYodC5fX25nX3JlbW92ZWQpcmV0dXJuO2NvbnN0IGU9dGhpcy5fZW5naW5lLmZldGNoTmFtZXNwYWNlc0J5RWxlbWVudCh0KTtlLnNpemU/ZS5mb3JFYWNoKChlPT5lLnRyaWdnZXJMZWF2ZUFuaW1hdGlvbih0LG4sITEsITApKSk6dGhpcy5jbGVhckVsZW1lbnRDYWNoZSh0KX0pKSx0aGlzLl9lbmdpbmUuYWZ0ZXJGbHVzaEFuaW1hdGlvbnNEb25lKCgoKT0+ZS5mb3JFYWNoKCh0PT50aGlzLmNsZWFyRWxlbWVudENhY2hlKHQpKSkpKX10cmlnZ2VyTGVhdmVBbmltYXRpb24odCxuLGUsYSl7Y29uc3Qgbz10aGlzLl9lbmdpbmUuc3RhdGVzQnlFbGVtZW50LmdldCh0KTtpZihvKXtjb25zdCByPVtdO2lmKE9iamVjdC5rZXlzKG8pLmZvckVhY2goKG49PntpZih0aGlzLl90cmlnZ2Vyc1tuXSl7Y29uc3QgZT10aGlzLnRyaWdnZXIodCxuLE95LGEpO2UmJnIucHVzaChlKX19KSksci5sZW5ndGgpcmV0dXJuIHRoaXMuX2VuZ2luZS5tYXJrRWxlbWVudEFzUmVtb3ZlZCh0aGlzLmlkLHQsITAsbiksZSYmVlAocikub25Eb25lKCgoKT0+dGhpcy5fZW5naW5lLnByb2Nlc3NMZWF2ZU5vZGUodCkpKSwhMH1yZXR1cm4hMX1wcmVwYXJlTGVhdmVBbmltYXRpb25MaXN0ZW5lcnModCl7Y29uc3Qgbj10aGlzLl9lbGVtZW50TGlzdGVuZXJzLmdldCh0KTtpZihuKXtjb25zdCBlPW5ldyBTZXQ7bi5mb3JFYWNoKChuPT57Y29uc3QgYT1uLm5hbWU7aWYoZS5oYXMoYSkpcmV0dXJuO2UuYWRkKGEpO2NvbnN0IG89dGhpcy5fdHJpZ2dlcnNbYV0uZmFsbGJhY2tUcmFuc2l0aW9uLHI9dGhpcy5fZW5naW5lLnN0YXRlc0J5RWxlbWVudC5nZXQodClbYV18fFB5LGk9bmV3IE15KE95KSxjPW5ldyBreSh0aGlzLmlkLGEsdCk7dGhpcy5fZW5naW5lLnRvdGFsUXVldWVkUGxheWVycysrLHRoaXMuX3F1ZXVlLnB1c2goe2VsZW1lbnQ6dCx0cmlnZ2VyTmFtZTphLHRyYW5zaXRpb246byxmcm9tU3RhdGU6cix0b1N0YXRlOmkscGxheWVyOmMsaXNGYWxsYmFja1RyYW5zaXRpb246ITB9KX0pKX19cmVtb3ZlTm9kZSh0LG4pe2NvbnN0IGU9dGhpcy5fZW5naW5lO2lmKHQuY2hpbGRFbGVtZW50Q291bnQmJnRoaXMuX3NpZ25hbFJlbW92YWxGb3JJbm5lclRyaWdnZXJzKHQsbiksdGhpcy50cmlnZ2VyTGVhdmVBbmltYXRpb24odCxuLCEwKSlyZXR1cm47bGV0IGE9ITE7aWYoZS50b3RhbEFuaW1hdGlvbnMpe2NvbnN0IG49ZS5wbGF5ZXJzLmxlbmd0aD9lLnBsYXllcnNCeVF1ZXJpZWRFbGVtZW50LmdldCh0KTpbXTtpZihuJiZuLmxlbmd0aClhPSEwO2Vsc2V7bGV0IG49dDtmb3IoO249bi5wYXJlbnROb2RlOylpZihlLnN0YXRlc0J5RWxlbWVudC5nZXQobikpe2E9ITA7YnJlYWt9fX1pZih0aGlzLnByZXBhcmVMZWF2ZUFuaW1hdGlvbkxpc3RlbmVycyh0KSxhKWUubWFya0VsZW1lbnRBc1JlbW92ZWQodGhpcy5pZCx0LCExLG4pO2Vsc2V7Y29uc3QgYT10Ll9fbmdfcmVtb3ZlZDthJiZhIT09X3l8fChlLmFmdGVyRmx1c2goKCgpPT50aGlzLmNsZWFyRWxlbWVudENhY2hlKHQpKSksZS5kZXN0cm95SW5uZXJBbmltYXRpb25zKHQpLGUuX29uUmVtb3ZhbENvbXBsZXRlKHQsbikpfX1pbnNlcnROb2RlKHQsbil7QXkodCx0aGlzLl9ob3N0Q2xhc3NOYW1lKX1kcmFpblF1ZXVlZFRyYW5zaXRpb25zKHQpe2NvbnN0IG49W107cmV0dXJuIHRoaXMuX3F1ZXVlLmZvckVhY2goKGU9Pntjb25zdCBhPWUucGxheWVyO2lmKGEuZGVzdHJveWVkKXJldHVybjtjb25zdCBvPWUuZWxlbWVudCxyPXRoaXMuX2VsZW1lbnRMaXN0ZW5lcnMuZ2V0KG8pO3ImJnIuZm9yRWFjaCgobj0+e2lmKG4ubmFtZT09ZS50cmlnZ2VyTmFtZSl7Y29uc3QgYT1HUChvLGUudHJpZ2dlck5hbWUsZS5mcm9tU3RhdGUudmFsdWUsZS50b1N0YXRlLnZhbHVlKTthLl9kYXRhPXQsVVAoZS5wbGF5ZXIsbi5waGFzZSxhLG4uY2FsbGJhY2spfX0pKSxhLm1hcmtlZEZvckRlc3Ryb3k/dGhpcy5fZW5naW5lLmFmdGVyRmx1c2goKCgpPT57YS5kZXN0cm95KCl9KSk6bi5wdXNoKGUpfSkpLHRoaXMuX3F1ZXVlPVtdLG4uc29ydCgoKHQsbik9Pntjb25zdCBlPXQudHJhbnNpdGlvbi5hc3QuZGVwQ291bnQsYT1uLnRyYW5zaXRpb24uYXN0LmRlcENvdW50O3JldHVybiAwPT1lfHwwPT1hP2UtYTp0aGlzLl9lbmdpbmUuZHJpdmVyLmNvbnRhaW5zRWxlbWVudCh0LmVsZW1lbnQsbi5lbGVtZW50KT8xOi0xfSkpfWRlc3Ryb3kodCl7dGhpcy5wbGF5ZXJzLmZvckVhY2goKHQ9PnQuZGVzdHJveSgpKSksdGhpcy5fc2lnbmFsUmVtb3ZhbEZvcklubmVyVHJpZ2dlcnModGhpcy5ob3N0RWxlbWVudCx0KX1lbGVtZW50Q29udGFpbnNEYXRhKHQpe2xldCBuPSExO3JldHVybiB0aGlzLl9lbGVtZW50TGlzdGVuZXJzLmhhcyh0KSYmKG49ITApLG49ISF0aGlzLl9xdWV1ZS5maW5kKChuPT5uLmVsZW1lbnQ9PT10KSl8fG4sbn19Y2xhc3MgeXl7Y29uc3RydWN0b3IodCxuLGUpe3RoaXMuYm9keU5vZGU9dCx0aGlzLmRyaXZlcj1uLHRoaXMuX25vcm1hbGl6ZXI9ZSx0aGlzLnBsYXllcnM9W10sdGhpcy5uZXdIb3N0RWxlbWVudHM9bmV3IE1hcCx0aGlzLnBsYXllcnNCeUVsZW1lbnQ9bmV3IE1hcCx0aGlzLnBsYXllcnNCeVF1ZXJpZWRFbGVtZW50PW5ldyBNYXAsdGhpcy5zdGF0ZXNCeUVsZW1lbnQ9bmV3IE1hcCx0aGlzLmRpc2FibGVkTm9kZXM9bmV3IFNldCx0aGlzLnRvdGFsQW5pbWF0aW9ucz0wLHRoaXMudG90YWxRdWV1ZWRQbGF5ZXJzPTAsdGhpcy5fbmFtZXNwYWNlTG9va3VwPXt9LHRoaXMuX25hbWVzcGFjZUxpc3Q9W10sdGhpcy5fZmx1c2hGbnM9W10sdGhpcy5fd2hlblF1aWV0Rm5zPVtdLHRoaXMubmFtZXNwYWNlc0J5SG9zdEVsZW1lbnQ9bmV3IE1hcCx0aGlzLmNvbGxlY3RlZEVudGVyRWxlbWVudHM9W10sdGhpcy5jb2xsZWN0ZWRMZWF2ZUVsZW1lbnRzPVtdLHRoaXMub25SZW1vdmFsQ29tcGxldGU9KHQsbik9Pnt9fV9vblJlbW92YWxDb21wbGV0ZSh0LG4pe3RoaXMub25SZW1vdmFsQ29tcGxldGUodCxuKX1nZXQgcXVldWVkUGxheWVycygpe2NvbnN0IHQ9W107cmV0dXJuIHRoaXMuX25hbWVzcGFjZUxpc3QuZm9yRWFjaCgobj0+e24ucGxheWVycy5mb3JFYWNoKChuPT57bi5xdWV1ZWQmJnQucHVzaChuKX0pKX0pKSx0fWNyZWF0ZU5hbWVzcGFjZSh0LG4pe2NvbnN0IGU9bmV3IHh5KHQsbix0aGlzKTtyZXR1cm4gbi5wYXJlbnROb2RlP3RoaXMuX2JhbGFuY2VOYW1lc3BhY2VMaXN0KGUsbik6KHRoaXMubmV3SG9zdEVsZW1lbnRzLnNldChuLGUpLHRoaXMuY29sbGVjdEVudGVyRWxlbWVudChuKSksdGhpcy5fbmFtZXNwYWNlTG9va3VwW3RdPWV9X2JhbGFuY2VOYW1lc3BhY2VMaXN0KHQsbil7Y29uc3QgZT10aGlzLl9uYW1lc3BhY2VMaXN0Lmxlbmd0aC0xO2lmKGU+PTApe2xldCBhPSExO2ZvcihsZXQgbz1lO28+PTA7by0tKWlmKHRoaXMuZHJpdmVyLmNvbnRhaW5zRWxlbWVudCh0aGlzLl9uYW1lc3BhY2VMaXN0W29dLmhvc3RFbGVtZW50LG4pKXt0aGlzLl9uYW1lc3BhY2VMaXN0LnNwbGljZShvKzEsMCx0KSxhPSEwO2JyZWFrfWF8fHRoaXMuX25hbWVzcGFjZUxpc3Quc3BsaWNlKDAsMCx0KX1lbHNlIHRoaXMuX25hbWVzcGFjZUxpc3QucHVzaCh0KTtyZXR1cm4gdGhpcy5uYW1lc3BhY2VzQnlIb3N0RWxlbWVudC5zZXQobix0KSx0fXJlZ2lzdGVyKHQsbil7bGV0IGU9dGhpcy5fbmFtZXNwYWNlTG9va3VwW3RdO3JldHVybiBlfHwoZT10aGlzLmNyZWF0ZU5hbWVzcGFjZSh0LG4pKSxlfXJlZ2lzdGVyVHJpZ2dlcih0LG4sZSl7bGV0IGE9dGhpcy5fbmFtZXNwYWNlTG9va3VwW3RdO2EmJmEucmVnaXN0ZXIobixlKSYmdGhpcy50b3RhbEFuaW1hdGlvbnMrK31kZXN0cm95KHQsbil7aWYoIXQpcmV0dXJuO2NvbnN0IGU9dGhpcy5fZmV0Y2hOYW1lc3BhY2UodCk7dGhpcy5hZnRlckZsdXNoKCgoKT0+e3RoaXMubmFtZXNwYWNlc0J5SG9zdEVsZW1lbnQuZGVsZXRlKGUuaG9zdEVsZW1lbnQpLGRlbGV0ZSB0aGlzLl9uYW1lc3BhY2VMb29rdXBbdF07Y29uc3Qgbj10aGlzLl9uYW1lc3BhY2VMaXN0LmluZGV4T2YoZSk7bj49MCYmdGhpcy5fbmFtZXNwYWNlTGlzdC5zcGxpY2UobiwxKX0pKSx0aGlzLmFmdGVyRmx1c2hBbmltYXRpb25zRG9uZSgoKCk9PmUuZGVzdHJveShuKSkpfV9mZXRjaE5hbWVzcGFjZSh0KXtyZXR1cm4gdGhpcy5fbmFtZXNwYWNlTG9va3VwW3RdfWZldGNoTmFtZXNwYWNlc0J5RWxlbWVudCh0KXtjb25zdCBuPW5ldyBTZXQsZT10aGlzLnN0YXRlc0J5RWxlbWVudC5nZXQodCk7aWYoZSl7Y29uc3QgdD1PYmplY3Qua2V5cyhlKTtmb3IobGV0IGE9MDthPHQubGVuZ3RoO2ErKyl7Y29uc3Qgbz1lW3RbYV1dLm5hbWVzcGFjZUlkO2lmKG8pe2NvbnN0IHQ9dGhpcy5fZmV0Y2hOYW1lc3BhY2Uobyk7dCYmbi5hZGQodCl9fX1yZXR1cm4gbn10cmlnZ2VyKHQsbixlLGEpe2lmKHZ5KG4pKXtjb25zdCBvPXRoaXMuX2ZldGNoTmFtZXNwYWNlKHQpO2lmKG8pcmV0dXJuIG8udHJpZ2dlcihuLGUsYSksITB9cmV0dXJuITF9aW5zZXJ0Tm9kZSh0LG4sZSxhKXtpZighdnkobikpcmV0dXJuO2NvbnN0IG89bi5fX25nX3JlbW92ZWQ7aWYobyYmby5zZXRGb3JSZW1vdmFsKXtvLnNldEZvclJlbW92YWw9ITEsby5zZXRGb3JNb3ZlPSEwO2NvbnN0IHQ9dGhpcy5jb2xsZWN0ZWRMZWF2ZUVsZW1lbnRzLmluZGV4T2Yobik7dD49MCYmdGhpcy5jb2xsZWN0ZWRMZWF2ZUVsZW1lbnRzLnNwbGljZSh0LDEpfWlmKHQpe2NvbnN0IGE9dGhpcy5fZmV0Y2hOYW1lc3BhY2UodCk7YSYmYS5pbnNlcnROb2RlKG4sZSl9YSYmdGhpcy5jb2xsZWN0RW50ZXJFbGVtZW50KG4pfWNvbGxlY3RFbnRlckVsZW1lbnQodCl7dGhpcy5jb2xsZWN0ZWRFbnRlckVsZW1lbnRzLnB1c2godCl9bWFya0VsZW1lbnRBc0Rpc2FibGVkKHQsbil7bj90aGlzLmRpc2FibGVkTm9kZXMuaGFzKHQpfHwodGhpcy5kaXNhYmxlZE5vZGVzLmFkZCh0KSxBeSh0LHV5KSk6dGhpcy5kaXNhYmxlZE5vZGVzLmhhcyh0KSYmKHRoaXMuZGlzYWJsZWROb2Rlcy5kZWxldGUodCksenkodCx1eSkpfXJlbW92ZU5vZGUodCxuLGUsYSl7aWYodnkobikpe2NvbnN0IG89dD90aGlzLl9mZXRjaE5hbWVzcGFjZSh0KTpudWxsO2lmKG8/by5yZW1vdmVOb2RlKG4sYSk6dGhpcy5tYXJrRWxlbWVudEFzUmVtb3ZlZCh0LG4sITEsYSksZSl7Y29uc3QgZT10aGlzLm5hbWVzcGFjZXNCeUhvc3RFbGVtZW50LmdldChuKTtlJiZlLmlkIT09dCYmZS5yZW1vdmVOb2RlKG4sYSl9fWVsc2UgdGhpcy5fb25SZW1vdmFsQ29tcGxldGUobixhKX1tYXJrRWxlbWVudEFzUmVtb3ZlZCh0LG4sZSxhKXt0aGlzLmNvbGxlY3RlZExlYXZlRWxlbWVudHMucHVzaChuKSxuLl9fbmdfcmVtb3ZlZD17bmFtZXNwYWNlSWQ6dCxzZXRGb3JSZW1vdmFsOmEsaGFzQW5pbWF0aW9uOmUscmVtb3ZlZEJlZm9yZVF1ZXJpZWQ6ITF9fWxpc3Rlbih0LG4sZSxhLG8pe3JldHVybiB2eShuKT90aGlzLl9mZXRjaE5hbWVzcGFjZSh0KS5saXN0ZW4obixlLGEsbyk6KCk9Pnt9fV9idWlsZEluc3RydWN0aW9uKHQsbixlLGEsbyl7cmV0dXJuIHQudHJhbnNpdGlvbi5idWlsZCh0aGlzLmRyaXZlcix0LmVsZW1lbnQsdC5mcm9tU3RhdGUudmFsdWUsdC50b1N0YXRlLnZhbHVlLGUsYSx0LmZyb21TdGF0ZS5vcHRpb25zLHQudG9TdGF0ZS5vcHRpb25zLG4sbyl9ZGVzdHJveUlubmVyQW5pbWF0aW9ucyh0KXtsZXQgbj10aGlzLmRyaXZlci5xdWVyeSh0LG14LCEwKTtuLmZvckVhY2goKHQ9PnRoaXMuZGVzdHJveUFjdGl2ZUFuaW1hdGlvbnNGb3JFbGVtZW50KHQpKSksMCE9dGhpcy5wbGF5ZXJzQnlRdWVyaWVkRWxlbWVudC5zaXplJiYobj10aGlzLmRyaXZlci5xdWVyeSh0LGd4LCEwKSxuLmZvckVhY2goKHQ9PnRoaXMuZmluaXNoQWN0aXZlUXVlcmllZEFuaW1hdGlvbk9uRWxlbWVudCh0KSkpKX1kZXN0cm95QWN0aXZlQW5pbWF0aW9uc0ZvckVsZW1lbnQodCl7Y29uc3Qgbj10aGlzLnBsYXllcnNCeUVsZW1lbnQuZ2V0KHQpO24mJm4uZm9yRWFjaCgodD0+e3QucXVldWVkP3QubWFya2VkRm9yRGVzdHJveT0hMDp0LmRlc3Ryb3koKX0pKX1maW5pc2hBY3RpdmVRdWVyaWVkQW5pbWF0aW9uT25FbGVtZW50KHQpe2NvbnN0IG49dGhpcy5wbGF5ZXJzQnlRdWVyaWVkRWxlbWVudC5nZXQodCk7biYmbi5mb3JFYWNoKCh0PT50LmZpbmlzaCgpKSl9d2hlblJlbmRlcmluZ0RvbmUoKXtyZXR1cm4gbmV3IFByb21pc2UoKHQ9PntpZih0aGlzLnBsYXllcnMubGVuZ3RoKXJldHVybiBWUCh0aGlzLnBsYXllcnMpLm9uRG9uZSgoKCk9PnQoKSkpO3QoKX0pKX1wcm9jZXNzTGVhdmVOb2RlKHQpe2NvbnN0IG49dC5fX25nX3JlbW92ZWQ7aWYobiYmbi5zZXRGb3JSZW1vdmFsKXtpZih0Ll9fbmdfcmVtb3ZlZD1feSxuLm5hbWVzcGFjZUlkKXt0aGlzLmRlc3Ryb3lJbm5lckFuaW1hdGlvbnModCk7Y29uc3QgZT10aGlzLl9mZXRjaE5hbWVzcGFjZShuLm5hbWVzcGFjZUlkKTtlJiZlLmNsZWFyRWxlbWVudENhY2hlKHQpfXRoaXMuX29uUmVtb3ZhbENvbXBsZXRlKHQsbi5zZXRGb3JSZW1vdmFsKX10aGlzLmRyaXZlci5tYXRjaGVzRWxlbWVudCh0LGZ5KSYmdGhpcy5tYXJrRWxlbWVudEFzRGlzYWJsZWQodCwhMSksdGhpcy5kcml2ZXIucXVlcnkodCxmeSwhMCkuZm9yRWFjaCgodD0+e3RoaXMubWFya0VsZW1lbnRBc0Rpc2FibGVkKHQsITEpfSkpfWZsdXNoKHQ9LTEpe2xldCBuPVtdO2lmKHRoaXMubmV3SG9zdEVsZW1lbnRzLnNpemUmJih0aGlzLm5ld0hvc3RFbGVtZW50cy5mb3JFYWNoKCgodCxuKT0+dGhpcy5fYmFsYW5jZU5hbWVzcGFjZUxpc3QodCxuKSkpLHRoaXMubmV3SG9zdEVsZW1lbnRzLmNsZWFyKCkpLHRoaXMudG90YWxBbmltYXRpb25zJiZ0aGlzLmNvbGxlY3RlZEVudGVyRWxlbWVudHMubGVuZ3RoKWZvcihsZXQgdD0wO3Q8dGhpcy5jb2xsZWN0ZWRFbnRlckVsZW1lbnRzLmxlbmd0aDt0KyspQXkodGhpcy5jb2xsZWN0ZWRFbnRlckVsZW1lbnRzW3RdLCJuZy1zdGFyLWluc2VydGVkIik7aWYodGhpcy5fbmFtZXNwYWNlTGlzdC5sZW5ndGgmJih0aGlzLnRvdGFsUXVldWVkUGxheWVyc3x8dGhpcy5jb2xsZWN0ZWRMZWF2ZUVsZW1lbnRzLmxlbmd0aCkpe2NvbnN0IGU9W107dHJ5e249dGhpcy5fZmx1c2hBbmltYXRpb25zKGUsdCl9ZmluYWxseXtmb3IobGV0IHQ9MDt0PGUubGVuZ3RoO3QrKyllW3RdKCl9fWVsc2UgZm9yKGxldCB0PTA7dDx0aGlzLmNvbGxlY3RlZExlYXZlRWxlbWVudHMubGVuZ3RoO3QrKyl0aGlzLnByb2Nlc3NMZWF2ZU5vZGUodGhpcy5jb2xsZWN0ZWRMZWF2ZUVsZW1lbnRzW3RdKTtpZih0aGlzLnRvdGFsUXVldWVkUGxheWVycz0wLHRoaXMuY29sbGVjdGVkRW50ZXJFbGVtZW50cy5sZW5ndGg9MCx0aGlzLmNvbGxlY3RlZExlYXZlRWxlbWVudHMubGVuZ3RoPTAsdGhpcy5fZmx1c2hGbnMuZm9yRWFjaCgodD0+dCgpKSksdGhpcy5fZmx1c2hGbnM9W10sdGhpcy5fd2hlblF1aWV0Rm5zLmxlbmd0aCl7Y29uc3QgdD10aGlzLl93aGVuUXVpZXRGbnM7dGhpcy5fd2hlblF1aWV0Rm5zPVtdLG4ubGVuZ3RoP1ZQKG4pLm9uRG9uZSgoKCk9Pnt0LmZvckVhY2goKHQ9PnQoKSkpfSkpOnQuZm9yRWFjaCgodD0+dCgpKSl9fXJlcG9ydEVycm9yKHQpe3Rocm93IG5ldyBFcnJvcihgVW5hYmxlIHRvIHByb2Nlc3MgYW5pbWF0aW9ucyBkdWUgdG8gdGhlIGZvbGxvd2luZyBmYWlsZWQgdHJpZ2dlciB0cmFuc2l0aW9uc1xuICR7dC5qb2luKCJcbiIpfWApfV9mbHVzaEFuaW1hdGlvbnModCxuKXtjb25zdCBlPW5ldyBZeCxhPVtdLG89bmV3IE1hcCxyPVtdLGk9bmV3IE1hcCxjPW5ldyBNYXAscz1uZXcgTWFwLGw9bmV3IFNldDt0aGlzLmRpc2FibGVkTm9kZXMuZm9yRWFjaCgodD0+e2wuYWRkKHQpO2NvbnN0IG49dGhpcy5kcml2ZXIucXVlcnkodCwiLm5nLWFuaW1hdGUtcXVldWVkIiwhMCk7Zm9yKGxldCB0PTA7dDxuLmxlbmd0aDt0KyspbC5hZGQoblt0XSl9KSk7Y29uc3QgbT10aGlzLmJvZHlOb2RlLGQ9QXJyYXkuZnJvbSh0aGlzLnN0YXRlc0J5RWxlbWVudC5rZXlzKCkpLGc9RXkoZCx0aGlzLmNvbGxlY3RlZEVudGVyRWxlbWVudHMpLHA9bmV3IE1hcDtsZXQgYj0wO2cuZm9yRWFjaCgoKHQsbik9Pntjb25zdCBlPWN4K2IrKztwLnNldChuLGUpLHQuZm9yRWFjaCgodD0+QXkodCxlKSkpfSkpO2NvbnN0IHU9W10sZj1uZXcgU2V0LGg9bmV3IFNldDtmb3IobGV0IHQ9MDt0PHRoaXMuY29sbGVjdGVkTGVhdmVFbGVtZW50cy5sZW5ndGg7dCsrKXtjb25zdCBuPXRoaXMuY29sbGVjdGVkTGVhdmVFbGVtZW50c1t0XSxlPW4uX19uZ19yZW1vdmVkO2UmJmUuc2V0Rm9yUmVtb3ZhbCYmKHUucHVzaChuKSxmLmFkZChuKSxlLmhhc0FuaW1hdGlvbj90aGlzLmRyaXZlci5xdWVyeShuLCIubmctc3Rhci1pbnNlcnRlZCIsITApLmZvckVhY2goKHQ9PmYuYWRkKHQpKSk6aC5hZGQobikpfWNvbnN0IF89bmV3IE1hcCxDPUV5KGQsQXJyYXkuZnJvbShmKSk7Qy5mb3JFYWNoKCgodCxuKT0+e2NvbnN0IGU9c3grYisrO18uc2V0KG4sZSksdC5mb3JFYWNoKCh0PT5BeSh0LGUpKSl9KSksdC5wdXNoKCgoKT0+e2cuZm9yRWFjaCgoKHQsbik9Pntjb25zdCBlPXAuZ2V0KG4pO3QuZm9yRWFjaCgodD0+enkodCxlKSkpfSkpLEMuZm9yRWFjaCgoKHQsbik9Pntjb25zdCBlPV8uZ2V0KG4pO3QuZm9yRWFjaCgodD0+enkodCxlKSkpfSkpLHUuZm9yRWFjaCgodD0+e3RoaXMucHJvY2Vzc0xlYXZlTm9kZSh0KX0pKX0pKTtjb25zdCBNPVtdLE89W107Zm9yKGxldCB0PXRoaXMuX25hbWVzcGFjZUxpc3QubGVuZ3RoLTE7dD49MDt0LS0pdGhpcy5fbmFtZXNwYWNlTGlzdFt0XS5kcmFpblF1ZXVlZFRyYW5zaXRpb25zKG4pLmZvckVhY2goKHQ9Pntjb25zdCBuPXQucGxheWVyLG89dC5lbGVtZW50O2lmKE0ucHVzaChuKSx0aGlzLmNvbGxlY3RlZEVudGVyRWxlbWVudHMubGVuZ3RoKXtjb25zdCB0PW8uX19uZ19yZW1vdmVkO2lmKHQmJnQuc2V0Rm9yTW92ZSlyZXR1cm4gdm9pZCBuLmRlc3Ryb3koKX1jb25zdCBsPSFtfHwhdGhpcy5kcml2ZXIuY29udGFpbnNFbGVtZW50KG0sbyksZD1fLmdldChvKSxnPXAuZ2V0KG8pLGI9dGhpcy5fYnVpbGRJbnN0cnVjdGlvbih0LGUsZyxkLGwpO2lmKGIuZXJyb3JzJiZiLmVycm9ycy5sZW5ndGgpTy5wdXNoKGIpO2Vsc2V7aWYobClyZXR1cm4gbi5vblN0YXJ0KCgoKT0+T3gobyxiLmZyb21TdHlsZXMpKSksbi5vbkRlc3Ryb3koKCgpPT5NeChvLGIudG9TdHlsZXMpKSksdm9pZCBhLnB1c2gobik7aWYodC5pc0ZhbGxiYWNrVHJhbnNpdGlvbilyZXR1cm4gbi5vblN0YXJ0KCgoKT0+T3gobyxiLmZyb21TdHlsZXMpKSksbi5vbkRlc3Ryb3koKCgpPT5NeChvLGIudG9TdHlsZXMpKSksdm9pZCBhLnB1c2gobik7Yi50aW1lbGluZXMuZm9yRWFjaCgodD0+dC5zdHJldGNoU3RhcnRpbmdLZXlmcmFtZT0hMCkpLGUuYXBwZW5kKG8sYi50aW1lbGluZXMpLHIucHVzaCh7aW5zdHJ1Y3Rpb246YixwbGF5ZXI6bixlbGVtZW50Om99KSxiLnF1ZXJpZWRFbGVtZW50cy5mb3JFYWNoKCh0PT5ZUChpLHQsW10pLnB1c2gobikpKSxiLnByZVN0eWxlUHJvcHMuZm9yRWFjaCgoKHQsbik9Pntjb25zdCBlPU9iamVjdC5rZXlzKHQpO2lmKGUubGVuZ3RoKXtsZXQgdD1jLmdldChuKTt0fHxjLnNldChuLHQ9bmV3IFNldCksZS5mb3JFYWNoKChuPT50LmFkZChuKSkpfX0pKSxiLnBvc3RTdHlsZVByb3BzLmZvckVhY2goKCh0LG4pPT57Y29uc3QgZT1PYmplY3Qua2V5cyh0KTtsZXQgYT1zLmdldChuKTthfHxzLnNldChuLGE9bmV3IFNldCksZS5mb3JFYWNoKCh0PT5hLmFkZCh0KSkpfSkpfX0pKTtpZihPLmxlbmd0aCl7Y29uc3QgdD1bXTtPLmZvckVhY2goKG49Pnt0LnB1c2goYEAke24udHJpZ2dlck5hbWV9IGhhcyBmYWlsZWQgZHVlIHRvOlxuYCksbi5lcnJvcnMuZm9yRWFjaCgobj0+dC5wdXNoKGAtICR7bn1cbmApKSl9KSksTS5mb3JFYWNoKCh0PT50LmRlc3Ryb3koKSkpLHRoaXMucmVwb3J0RXJyb3IodCl9Y29uc3QgUD1uZXcgTWFwLHg9bmV3IE1hcDtyLmZvckVhY2goKHQ9Pntjb25zdCBuPXQuZWxlbWVudDtlLmhhcyhuKSYmKHguc2V0KG4sbiksdGhpcy5fYmVmb3JlQW5pbWF0aW9uQnVpbGQodC5wbGF5ZXIubmFtZXNwYWNlSWQsdC5pbnN0cnVjdGlvbixQKSl9KSksYS5mb3JFYWNoKCh0PT57Y29uc3Qgbj10LmVsZW1lbnQ7dGhpcy5fZ2V0UHJldmlvdXNQbGF5ZXJzKG4sITEsdC5uYW1lc3BhY2VJZCx0LnRyaWdnZXJOYW1lLG51bGwpLmZvckVhY2goKHQ9PntZUChQLG4sW10pLnB1c2godCksdC5kZXN0cm95KCl9KSl9KSk7Y29uc3QgeT11LmZpbHRlcigodD0+RHkodCxjLHMpKSksaz1uZXcgTWFwO1N5KGssdGhpcy5kcml2ZXIsaCxzLHdQKS5mb3JFYWNoKCh0PT57RHkodCxjLHMpJiZ5LnB1c2godCl9KSk7Y29uc3Qgdj1uZXcgTWFwO2cuZm9yRWFjaCgoKHQsbik9PntTeSh2LHRoaXMuZHJpdmVyLG5ldyBTZXQodCksYywiISIpfSkpLHkuZm9yRWFjaCgodD0+e2NvbnN0IG49ay5nZXQodCksZT12LmdldCh0KTtrLnNldCh0LE9iamVjdC5hc3NpZ24oT2JqZWN0LmFzc2lnbih7fSxuKSxlKSl9KSk7Y29uc3Qgdz1bXSxTPVtdLEU9e307ci5mb3JFYWNoKCh0PT57Y29uc3R7ZWxlbWVudDpuLHBsYXllcjpyLGluc3RydWN0aW9uOml9PXQ7aWYoZS5oYXMobikpe2lmKGwuaGFzKG4pKXJldHVybiByLm9uRGVzdHJveSgoKCk9Pk14KG4saS50b1N0eWxlcykpKSxyLmRpc2FibGVkPSEwLHIub3ZlcnJpZGVUb3RhbFRpbWUoaS50b3RhbFRpbWUpLHZvaWQgYS5wdXNoKHIpO2xldCB0PUU7aWYoeC5zaXplPjEpe2xldCBlPW47Y29uc3QgYT1bXTtmb3IoO2U9ZS5wYXJlbnROb2RlOyl7Y29uc3Qgbj14LmdldChlKTtpZihuKXt0PW47YnJlYWt9YS5wdXNoKGUpfWEuZm9yRWFjaCgobj0+eC5zZXQobix0KSkpfWNvbnN0IGU9dGhpcy5fYnVpbGRBbmltYXRpb24oci5uYW1lc3BhY2VJZCxpLFAsbyx2LGspO2lmKHIuc2V0UmVhbFBsYXllcihlKSx0PT09RSl3LnB1c2gocik7ZWxzZXtjb25zdCBuPXRoaXMucGxheWVyc0J5RWxlbWVudC5nZXQodCk7biYmbi5sZW5ndGgmJihyLnBhcmVudFBsYXllcj1WUChuKSksYS5wdXNoKHIpfX1lbHNlIE94KG4saS5mcm9tU3R5bGVzKSxyLm9uRGVzdHJveSgoKCk9Pk14KG4saS50b1N0eWxlcykpKSxTLnB1c2gociksbC5oYXMobikmJmEucHVzaChyKX0pKSxTLmZvckVhY2goKHQ9Pntjb25zdCBuPW8uZ2V0KHQuZWxlbWVudCk7aWYobiYmbi5sZW5ndGgpe2NvbnN0IGU9VlAobik7dC5zZXRSZWFsUGxheWVyKGUpfX0pKSxhLmZvckVhY2goKHQ9Pnt0LnBhcmVudFBsYXllcj90LnN5bmNQbGF5ZXJFdmVudHModC5wYXJlbnRQbGF5ZXIpOnQuZGVzdHJveSgpfSkpO2ZvcihsZXQgdD0wO3Q8dS5sZW5ndGg7dCsrKXtjb25zdCBuPXVbdF0sZT1uLl9fbmdfcmVtb3ZlZDtpZih6eShuLHN4KSxlJiZlLmhhc0FuaW1hdGlvbiljb250aW51ZTtsZXQgYT1bXTtpZihpLnNpemUpe2xldCB0PWkuZ2V0KG4pO3QmJnQubGVuZ3RoJiZhLnB1c2goLi4udCk7bGV0IGU9dGhpcy5kcml2ZXIucXVlcnkobixneCwhMCk7Zm9yKGxldCB0PTA7dDxlLmxlbmd0aDt0Kyspe2xldCBuPWkuZ2V0KGVbdF0pO24mJm4ubGVuZ3RoJiZhLnB1c2goLi4ubil9fWNvbnN0IG89YS5maWx0ZXIoKHQ9PiF0LmRlc3Ryb3llZCkpO28ubGVuZ3RoP1J5KHRoaXMsbixvKTp0aGlzLnByb2Nlc3NMZWF2ZU5vZGUobil9cmV0dXJuIHUubGVuZ3RoPTAsdy5mb3JFYWNoKCh0PT57dGhpcy5wbGF5ZXJzLnB1c2godCksdC5vbkRvbmUoKCgpPT57dC5kZXN0cm95KCk7Y29uc3Qgbj10aGlzLnBsYXllcnMuaW5kZXhPZih0KTt0aGlzLnBsYXllcnMuc3BsaWNlKG4sMSl9KSksdC5wbGF5KCl9KSksd31lbGVtZW50Q29udGFpbnNEYXRhKHQsbil7bGV0IGU9ITE7Y29uc3QgYT1uLl9fbmdfcmVtb3ZlZDtyZXR1cm4gYSYmYS5zZXRGb3JSZW1vdmFsJiYoZT0hMCksdGhpcy5wbGF5ZXJzQnlFbGVtZW50LmhhcyhuKSYmKGU9ITApLHRoaXMucGxheWVyc0J5UXVlcmllZEVsZW1lbnQuaGFzKG4pJiYoZT0hMCksdGhpcy5zdGF0ZXNCeUVsZW1lbnQuaGFzKG4pJiYoZT0hMCksdGhpcy5fZmV0Y2hOYW1lc3BhY2UodCkuZWxlbWVudENvbnRhaW5zRGF0YShuKXx8ZX1hZnRlckZsdXNoKHQpe3RoaXMuX2ZsdXNoRm5zLnB1c2godCl9YWZ0ZXJGbHVzaEFuaW1hdGlvbnNEb25lKHQpe3RoaXMuX3doZW5RdWlldEZucy5wdXNoKHQpfV9nZXRQcmV2aW91c1BsYXllcnModCxuLGUsYSxvKXtsZXQgcj1bXTtpZihuKXtjb25zdCBuPXRoaXMucGxheWVyc0J5UXVlcmllZEVsZW1lbnQuZ2V0KHQpO24mJihyPW4pfWVsc2V7Y29uc3Qgbj10aGlzLnBsYXllcnNCeUVsZW1lbnQuZ2V0KHQpO2lmKG4pe2NvbnN0IHQ9IW98fG89PU95O24uZm9yRWFjaCgobj0+e24ucXVldWVkfHwodHx8bi50cmlnZ2VyTmFtZT09YSkmJnIucHVzaChuKX0pKX19cmV0dXJuKGV8fGEpJiYocj1yLmZpbHRlcigodD0+IShlJiZlIT10Lm5hbWVzcGFjZUlkfHxhJiZhIT10LnRyaWdnZXJOYW1lKSkpKSxyfV9iZWZvcmVBbmltYXRpb25CdWlsZCh0LG4sZSl7Y29uc3QgYT1uLmVsZW1lbnQsbz1uLmlzUmVtb3ZhbFRyYW5zaXRpb24/dm9pZCAwOnQscj1uLmlzUmVtb3ZhbFRyYW5zaXRpb24/dm9pZCAwOm4udHJpZ2dlck5hbWU7Zm9yKGNvbnN0IHQgb2Ygbi50aW1lbGluZXMpe2NvbnN0IGk9dC5lbGVtZW50LGM9aSE9PWEscz1ZUChlLGksW10pO3RoaXMuX2dldFByZXZpb3VzUGxheWVycyhpLGMsbyxyLG4udG9TdGF0ZSkuZm9yRWFjaCgodD0+e2NvbnN0IG49dC5nZXRSZWFsUGxheWVyKCk7bi5iZWZvcmVEZXN0cm95JiZuLmJlZm9yZURlc3Ryb3koKSx0LmRlc3Ryb3koKSxzLnB1c2godCl9KSl9T3goYSxuLmZyb21TdHlsZXMpfV9idWlsZEFuaW1hdGlvbih0LG4sZSxhLG8scil7Y29uc3QgaT1uLnRyaWdnZXJOYW1lLGM9bi5lbGVtZW50LHM9W10sbD1uZXcgU2V0LG09bmV3IFNldCxkPW4udGltZWxpbmVzLm1hcCgobj0+e2NvbnN0IGQ9bi5lbGVtZW50O2wuYWRkKGQpO2NvbnN0IGc9ZC5fX25nX3JlbW92ZWQ7aWYoZyYmZy5yZW1vdmVkQmVmb3JlUXVlcmllZClyZXR1cm4gbmV3IExQKG4uZHVyYXRpb24sbi5kZWxheSk7Y29uc3QgcD1kIT09YyxiPShmdW5jdGlvbiB1KHQpe2NvbnN0IG49W107cmV0dXJuIFR5KHQsbiksbn0pKChlLmdldChkKXx8aHkpLm1hcCgodD0+dC5nZXRSZWFsUGxheWVyKCkpKSkuZmlsdGVyKCh0PT4hIXQuZWxlbWVudCYmdC5lbGVtZW50PT09ZCkpLGY9by5nZXQoZCksaD1yLmdldChkKSxfPWpQKDAsdGhpcy5fbm9ybWFsaXplciwwLG4ua2V5ZnJhbWVzLGYsaCksQz10aGlzLl9idWlsZFBsYXllcihuLF8sYik7aWYobi5zdWJUaW1lbGluZSYmYSYmbS5hZGQoZCkscCl7Y29uc3Qgbj1uZXcga3kodCxpLGQpO24uc2V0UmVhbFBsYXllcihDKSxzLnB1c2gobil9cmV0dXJuIEN9KSk7cy5mb3JFYWNoKCh0PT57WVAodGhpcy5wbGF5ZXJzQnlRdWVyaWVkRWxlbWVudCx0LmVsZW1lbnQsW10pLnB1c2godCksdC5vbkRvbmUoKCgpPT4oZnVuY3Rpb24gbih0LGUsYSl7bGV0IG87aWYodCBpbnN0YW5jZW9mIE1hcCl7aWYobz10LmdldChlKSxvKXtpZihvLmxlbmd0aCl7Y29uc3QgdD1vLmluZGV4T2YoYSk7by5zcGxpY2UodCwxKX0wPT1vLmxlbmd0aCYmdC5kZWxldGUoZSl9fWVsc2UgaWYobz10W2VdLG8pe2lmKG8ubGVuZ3RoKXtjb25zdCB0PW8uaW5kZXhPZihhKTtvLnNwbGljZSh0LDEpfTA9PW8ubGVuZ3RoJiZkZWxldGUgdFtlXX1yZXR1cm4gb30pKHRoaXMucGxheWVyc0J5UXVlcmllZEVsZW1lbnQsdC5lbGVtZW50LHQpKSl9KSksbC5mb3JFYWNoKCh0PT5BeSh0LGR4KSkpO2NvbnN0IGc9VlAoZCk7cmV0dXJuIGcub25EZXN0cm95KCgoKT0+e2wuZm9yRWFjaCgodD0+enkodCxkeCkpKSxNeChjLG4udG9TdHlsZXMpfSkpLG0uZm9yRWFjaCgodD0+e1lQKGEsdCxbXSkucHVzaChnKX0pKSxnfV9idWlsZFBsYXllcih0LG4sZSl7cmV0dXJuIG4ubGVuZ3RoPjA/dGhpcy5kcml2ZXIuYW5pbWF0ZSh0LmVsZW1lbnQsbix0LmR1cmF0aW9uLHQuZGVsYXksdC5lYXNpbmcsZSk6bmV3IExQKHQuZHVyYXRpb24sdC5kZWxheSl9fWNsYXNzIGt5e2NvbnN0cnVjdG9yKHQsbixlKXt0aGlzLm5hbWVzcGFjZUlkPXQsdGhpcy50cmlnZ2VyTmFtZT1uLHRoaXMuZWxlbWVudD1lLHRoaXMuX3BsYXllcj1uZXcgTFAsdGhpcy5fY29udGFpbnNSZWFsUGxheWVyPSExLHRoaXMuX3F1ZXVlZENhbGxiYWNrcz17fSx0aGlzLmRlc3Ryb3llZD0hMSx0aGlzLm1hcmtlZEZvckRlc3Ryb3k9ITEsdGhpcy5kaXNhYmxlZD0hMSx0aGlzLnF1ZXVlZD0hMCx0aGlzLnRvdGFsVGltZT0wfXNldFJlYWxQbGF5ZXIodCl7dGhpcy5fY29udGFpbnNSZWFsUGxheWVyfHwodGhpcy5fcGxheWVyPXQsT2JqZWN0LmtleXModGhpcy5fcXVldWVkQ2FsbGJhY2tzKS5mb3JFYWNoKChuPT57dGhpcy5fcXVldWVkQ2FsbGJhY2tzW25dLmZvckVhY2goKGU9PlVQKHQsbix2b2lkIDAsZSkpKX0pKSx0aGlzLl9xdWV1ZWRDYWxsYmFja3M9e30sdGhpcy5fY29udGFpbnNSZWFsUGxheWVyPSEwLHRoaXMub3ZlcnJpZGVUb3RhbFRpbWUodC50b3RhbFRpbWUpLHRoaXMucXVldWVkPSExKX1nZXRSZWFsUGxheWVyKCl7cmV0dXJuIHRoaXMuX3BsYXllcn1vdmVycmlkZVRvdGFsVGltZSh0KXt0aGlzLnRvdGFsVGltZT10fXN5bmNQbGF5ZXJFdmVudHModCl7Y29uc3Qgbj10aGlzLl9wbGF5ZXI7bi50cmlnZ2VyQ2FsbGJhY2smJnQub25TdGFydCgoKCk9Pm4udHJpZ2dlckNhbGxiYWNrKCJzdGFydCIpKSksdC5vbkRvbmUoKCgpPT50aGlzLmZpbmlzaCgpKSksdC5vbkRlc3Ryb3koKCgpPT50aGlzLmRlc3Ryb3koKSkpfV9xdWV1ZUV2ZW50KHQsbil7WVAodGhpcy5fcXVldWVkQ2FsbGJhY2tzLHQsW10pLnB1c2gobil9b25Eb25lKHQpe3RoaXMucXVldWVkJiZ0aGlzLl9xdWV1ZUV2ZW50KCJkb25lIix0KSx0aGlzLl9wbGF5ZXIub25Eb25lKHQpfW9uU3RhcnQodCl7dGhpcy5xdWV1ZWQmJnRoaXMuX3F1ZXVlRXZlbnQoInN0YXJ0Iix0KSx0aGlzLl9wbGF5ZXIub25TdGFydCh0KX1vbkRlc3Ryb3kodCl7dGhpcy5xdWV1ZWQmJnRoaXMuX3F1ZXVlRXZlbnQoImRlc3Ryb3kiLHQpLHRoaXMuX3BsYXllci5vbkRlc3Ryb3kodCl9aW5pdCgpe3RoaXMuX3BsYXllci5pbml0KCl9aGFzU3RhcnRlZCgpe3JldHVybiF0aGlzLnF1ZXVlZCYmdGhpcy5fcGxheWVyLmhhc1N0YXJ0ZWQoKX1wbGF5KCl7IXRoaXMucXVldWVkJiZ0aGlzLl9wbGF5ZXIucGxheSgpfXBhdXNlKCl7IXRoaXMucXVldWVkJiZ0aGlzLl9wbGF5ZXIucGF1c2UoKX1yZXN0YXJ0KCl7IXRoaXMucXVldWVkJiZ0aGlzLl9wbGF5ZXIucmVzdGFydCgpfWZpbmlzaCgpe3RoaXMuX3BsYXllci5maW5pc2goKX1kZXN0cm95KCl7dGhpcy5kZXN0cm95ZWQ9ITAsdGhpcy5fcGxheWVyLmRlc3Ryb3koKX1yZXNldCgpeyF0aGlzLnF1ZXVlZCYmdGhpcy5fcGxheWVyLnJlc2V0KCl9c2V0UG9zaXRpb24odCl7dGhpcy5xdWV1ZWR8fHRoaXMuX3BsYXllci5zZXRQb3NpdGlvbih0KX1nZXRQb3NpdGlvbigpe3JldHVybiB0aGlzLnF1ZXVlZD8wOnRoaXMuX3BsYXllci5nZXRQb3NpdGlvbigpfXRyaWdnZXJDYWxsYmFjayh0KXtjb25zdCBuPXRoaXMuX3BsYXllcjtuLnRyaWdnZXJDYWxsYmFjayYmbi50cmlnZ2VyQ2FsbGJhY2sodCl9fWZ1bmN0aW9uIHZ5KHQpe3JldHVybiB0JiYxPT09dC5ub2RlVHlwZX1mdW5jdGlvbiB3eSh0LG4pe2NvbnN0IGU9dC5zdHlsZS5kaXNwbGF5O3JldHVybiB0LnN0eWxlLmRpc3BsYXk9bnVsbCE9bj9uOiJub25lIixlfWZ1bmN0aW9uIFN5KHQsbixlLGEsbyl7Y29uc3Qgcj1bXTtlLmZvckVhY2goKHQ9PnIucHVzaCh3eSh0KSkpKTtjb25zdCBpPVtdO2EuZm9yRWFjaCgoKGUsYSk9Pntjb25zdCByPXt9O2UuZm9yRWFjaCgodD0+e2NvbnN0IGU9clt0XT1uLmNvbXB1dGVTdHlsZShhLHQsbyk7ZSYmMCE9ZS5sZW5ndGh8fChhLl9fbmdfcmVtb3ZlZD1DeSxpLnB1c2goYSkpfSkpLHQuc2V0KGEscil9KSk7bGV0IGM9MDtyZXR1cm4gZS5mb3JFYWNoKCh0PT53eSh0LHJbYysrXSkpKSxpfWZ1bmN0aW9uIEV5KHQsbil7Y29uc3QgZT1uZXcgTWFwO2lmKHQuZm9yRWFjaCgodD0+ZS5zZXQodCxbXSkpKSwwPT1uLmxlbmd0aClyZXR1cm4gZTtjb25zdCBhPW5ldyBTZXQobiksbz1uZXcgTWFwO2Z1bmN0aW9uIHIodCl7aWYoIXQpcmV0dXJuIDE7bGV0IG49by5nZXQodCk7aWYobilyZXR1cm4gbjtjb25zdCBpPXQucGFyZW50Tm9kZTtyZXR1cm4gbj1lLmhhcyhpKT9pOmEuaGFzKGkpPzE6cihpKSxvLnNldCh0LG4pLG59cmV0dXJuIG4uZm9yRWFjaCgodD0+e2NvbnN0IG49cih0KTsxIT09biYmZS5nZXQobikucHVzaCh0KX0pKSxlfWZ1bmN0aW9uIEF5KHQsbil7aWYodC5jbGFzc0xpc3QpdC5jbGFzc0xpc3QuYWRkKG4pO2Vsc2V7bGV0IGU9dC4kJGNsYXNzZXM7ZXx8KGU9dC4kJGNsYXNzZXM9e30pLGVbbl09ITB9fWZ1bmN0aW9uIHp5KHQsbil7aWYodC5jbGFzc0xpc3QpdC5jbGFzc0xpc3QucmVtb3ZlKG4pO2Vsc2V7bGV0IGU9dC4kJGNsYXNzZXM7ZSYmZGVsZXRlIGVbbl19fWZ1bmN0aW9uIFJ5KHQsbixlKXtWUChlKS5vbkRvbmUoKCgpPT50LnByb2Nlc3NMZWF2ZU5vZGUobikpKX1mdW5jdGlvbiBUeSh0LG4pe2ZvcihsZXQgZT0wO2U8dC5sZW5ndGg7ZSsrKXtjb25zdCBhPXRbZV07YSBpbnN0YW5jZW9mIEhQP1R5KGEucGxheWVycyxuKTpuLnB1c2goYSl9fWZ1bmN0aW9uIER5KHQsbixlKXtjb25zdCBhPWUuZ2V0KHQpO2lmKCFhKXJldHVybiExO2xldCBvPW4uZ2V0KHQpO3JldHVybiBvP2EuZm9yRWFjaCgodD0+by5hZGQodCkpKTpuLnNldCh0LGEpLGUuZGVsZXRlKHQpLCEwfWNsYXNzIEl5e2NvbnN0cnVjdG9yKHQsbixlKXt0aGlzLmJvZHlOb2RlPXQsdGhpcy5fZHJpdmVyPW4sdGhpcy5fdHJpZ2dlckNhY2hlPXt9LHRoaXMub25SZW1vdmFsQ29tcGxldGU9KHQsbik9Pnt9LHRoaXMuX3RyYW5zaXRpb25FbmdpbmU9bmV3IHl5KHQsbixlKSx0aGlzLl90aW1lbGluZUVuZ2luZT1uZXcgcHkodCxuLGUpLHRoaXMuX3RyYW5zaXRpb25FbmdpbmUub25SZW1vdmFsQ29tcGxldGU9KHQsbik9PnRoaXMub25SZW1vdmFsQ29tcGxldGUodCxuKX1yZWdpc3RlclRyaWdnZXIodCxuLGUsYSxvKXtjb25zdCByPXQrIi0iK2E7bGV0IGk9dGhpcy5fdHJpZ2dlckNhY2hlW3JdO2lmKCFpKXtjb25zdCB0PVtdLG49SHgodGhpcy5fZHJpdmVyLG8sdCk7aWYodC5sZW5ndGgpdGhyb3cgbmV3IEVycm9yKGBUaGUgYW5pbWF0aW9uIHRyaWdnZXIgIiR7YX0iIGhhcyBmYWlsZWQgdG8gYnVpbGQgZHVlIHRvIHRoZSBmb2xsb3dpbmcgZXJyb3JzOlxuIC0gJHt0LmpvaW4oIlxuIC0gIil9YCk7aT0oZnVuY3Rpb24gYyh0LG4pe3JldHVybiBuZXcgbXkodCxuKX0pKGEsbiksdGhpcy5fdHJpZ2dlckNhY2hlW3JdPWl9dGhpcy5fdHJhbnNpdGlvbkVuZ2luZS5yZWdpc3RlclRyaWdnZXIobixhLGkpfXJlZ2lzdGVyKHQsbil7dGhpcy5fdHJhbnNpdGlvbkVuZ2luZS5yZWdpc3Rlcih0LG4pfWRlc3Ryb3kodCxuKXt0aGlzLl90cmFuc2l0aW9uRW5naW5lLmRlc3Ryb3kodCxuKX1vbkluc2VydCh0LG4sZSxhKXt0aGlzLl90cmFuc2l0aW9uRW5naW5lLmluc2VydE5vZGUodCxuLGUsYSl9b25SZW1vdmUodCxuLGUsYSl7dGhpcy5fdHJhbnNpdGlvbkVuZ2luZS5yZW1vdmVOb2RlKHQsbixhfHwhMSxlKX1kaXNhYmxlQW5pbWF0aW9ucyh0LG4pe3RoaXMuX3RyYW5zaXRpb25FbmdpbmUubWFya0VsZW1lbnRBc0Rpc2FibGVkKHQsbil9cHJvY2Vzcyh0LG4sZSxhKXtpZigiQCI9PWUuY2hhckF0KDApKXtjb25zdFt0LG9dPXFQKGUpO3RoaXMuX3RpbWVsaW5lRW5naW5lLmNvbW1hbmQodCxuLG8sYSl9ZWxzZSB0aGlzLl90cmFuc2l0aW9uRW5naW5lLnRyaWdnZXIodCxuLGUsYSl9bGlzdGVuKHQsbixlLGEsbyl7aWYoIkAiPT1lLmNoYXJBdCgwKSl7Y29uc3RbdCxhXT1xUChlKTtyZXR1cm4gdGhpcy5fdGltZWxpbmVFbmdpbmUubGlzdGVuKHQsbixhLG8pfXJldHVybiB0aGlzLl90cmFuc2l0aW9uRW5naW5lLmxpc3Rlbih0LG4sZSxhLG8pfWZsdXNoKHQ9LTEpe3RoaXMuX3RyYW5zaXRpb25FbmdpbmUuZmx1c2godCl9Z2V0IHBsYXllcnMoKXtyZXR1cm4gdGhpcy5fdHJhbnNpdGlvbkVuZ2luZS5wbGF5ZXJzLmNvbmNhdCh0aGlzLl90aW1lbGluZUVuZ2luZS5wbGF5ZXJzKX13aGVuUmVuZGVyaW5nRG9uZSgpe3JldHVybiB0aGlzLl90cmFuc2l0aW9uRW5naW5lLndoZW5SZW5kZXJpbmdEb25lKCl9fQovKioKICAgICAqIEBsaWNlbnNlCiAgICAgKiBDb3B5cmlnaHQgR29vZ2xlIExMQyBBbGwgUmlnaHRzIFJlc2VydmVkLgogICAgICoKICAgICAqIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGFuIE1JVC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCiAgICAgKiBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlIGF0IGh0dHBzOi8vYW5ndWxhci5pby9saWNlbnNlCiAgICAgKi9mdW5jdGlvbiBOeSh0LG4pe2xldCBlPW51bGwsYT1udWxsO3JldHVybiBBcnJheS5pc0FycmF5KG4pJiZuLmxlbmd0aD8oZT1MeShuWzBdKSxuLmxlbmd0aD4xJiYoYT1MeShuW24ubGVuZ3RoLTFdKSkpOm4mJihlPUx5KG4pKSxlfHxhP25ldyBGeSh0LGUsYSk6bnVsbH1jbGFzcyBGeXtjb25zdHJ1Y3Rvcih0LG4sZSl7dGhpcy5fZWxlbWVudD10LHRoaXMuX3N0YXJ0U3R5bGVzPW4sdGhpcy5fZW5kU3R5bGVzPWUsdGhpcy5fc3RhdGU9MDtsZXQgYT1GeS5pbml0aWFsU3R5bGVzQnlFbGVtZW50LmdldCh0KTthfHxGeS5pbml0aWFsU3R5bGVzQnlFbGVtZW50LnNldCh0LGE9e30pLHRoaXMuX2luaXRpYWxTdHlsZXM9YX1zdGFydCgpe3RoaXMuX3N0YXRlPDEmJih0aGlzLl9zdGFydFN0eWxlcyYmTXgodGhpcy5fZWxlbWVudCx0aGlzLl9zdGFydFN0eWxlcyx0aGlzLl9pbml0aWFsU3R5bGVzKSx0aGlzLl9zdGF0ZT0xKX1maW5pc2goKXt0aGlzLnN0YXJ0KCksdGhpcy5fc3RhdGU8MiYmKE14KHRoaXMuX2VsZW1lbnQsdGhpcy5faW5pdGlhbFN0eWxlcyksdGhpcy5fZW5kU3R5bGVzJiYoTXgodGhpcy5fZWxlbWVudCx0aGlzLl9lbmRTdHlsZXMpLHRoaXMuX2VuZFN0eWxlcz1udWxsKSx0aGlzLl9zdGF0ZT0xKX1kZXN0cm95KCl7dGhpcy5maW5pc2goKSx0aGlzLl9zdGF0ZTwzJiYoRnkuaW5pdGlhbFN0eWxlc0J5RWxlbWVudC5kZWxldGUodGhpcy5fZWxlbWVudCksdGhpcy5fc3RhcnRTdHlsZXMmJihPeCh0aGlzLl9lbGVtZW50LHRoaXMuX3N0YXJ0U3R5bGVzKSx0aGlzLl9lbmRTdHlsZXM9bnVsbCksdGhpcy5fZW5kU3R5bGVzJiYoT3godGhpcy5fZWxlbWVudCx0aGlzLl9lbmRTdHlsZXMpLHRoaXMuX2VuZFN0eWxlcz1udWxsKSxNeCh0aGlzLl9lbGVtZW50LHRoaXMuX2luaXRpYWxTdHlsZXMpLHRoaXMuX3N0YXRlPTMpfX1mdW5jdGlvbiBMeSh0KXtsZXQgbj1udWxsO2NvbnN0IGU9T2JqZWN0LmtleXModCk7Zm9yKGxldCBhPTA7YTxlLmxlbmd0aDthKyspe2NvbnN0IG89ZVthXTtIeShvKSYmKG49bnx8e30sbltvXT10W29dKX1yZXR1cm4gbn1mdW5jdGlvbiBIeSh0KXtyZXR1cm4iZGlzcGxheSI9PT10fHwicG9zaXRpb24iPT09dH0KLyoqCiAgICAgKiBAbGljZW5zZQogICAgICogQ29weXJpZ2h0IEdvb2dsZSBMTEMgQWxsIFJpZ2h0cyBSZXNlcnZlZC4KICAgICAqCiAgICAgKiBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhbiBNSVQtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQogICAgICogZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZSBhdCBodHRwczovL2FuZ3VsYXIuaW8vbGljZW5zZQogICAgICovRnkuaW5pdGlhbFN0eWxlc0J5RWxlbWVudD1uZXcgV2Vha01hcDtjb25zdCBCeT0iYW5pbWF0aW9uIixWeT0iYW5pbWF0aW9uZW5kIjtjbGFzcyBqeXtjb25zdHJ1Y3Rvcih0LG4sZSxhLG8scixpKXt0aGlzLl9lbGVtZW50PXQsdGhpcy5fbmFtZT1uLHRoaXMuX2R1cmF0aW9uPWUsdGhpcy5fZGVsYXk9YSx0aGlzLl9lYXNpbmc9byx0aGlzLl9maWxsTW9kZT1yLHRoaXMuX29uRG9uZUZuPWksdGhpcy5fZmluaXNoZWQ9ITEsdGhpcy5fZGVzdHJveWVkPSExLHRoaXMuX3N0YXJ0VGltZT0wLHRoaXMuX3Bvc2l0aW9uPTAsdGhpcy5fZXZlbnRGbj10PT50aGlzLl9oYW5kbGVDYWxsYmFjayh0KX1hcHBseSgpeyEoZnVuY3Rpb24gdChuLGUpe2NvbnN0IGE9WnkobiwiIikudHJpbSgpO2xldCBvPTA7YS5sZW5ndGgmJigoZnVuY3Rpb24gcih0LG4pe2xldCBlPTA7Zm9yKGxldCBhPTA7YTx0Lmxlbmd0aDthKyspdC5jaGFyQXQoYSk9PT1uJiZlKys7cmV0dXJuIGV9KShhLCIsIikrMSxlPWAke2F9LCAke2V9YCkscXkobiwiIixlKX0pKHRoaXMuX2VsZW1lbnQsYCR7dGhpcy5fZHVyYXRpb259bXMgJHt0aGlzLl9lYXNpbmd9ICR7dGhpcy5fZGVsYXl9bXMgMSBub3JtYWwgJHt0aGlzLl9maWxsTW9kZX0gJHt0aGlzLl9uYW1lfWApLFl5KHRoaXMuX2VsZW1lbnQsdGhpcy5fZXZlbnRGbiwhMSksdGhpcy5fc3RhcnRUaW1lPURhdGUubm93KCl9cGF1c2UoKXtVeSh0aGlzLl9lbGVtZW50LHRoaXMuX25hbWUsInBhdXNlZCIpfXJlc3VtZSgpe1V5KHRoaXMuX2VsZW1lbnQsdGhpcy5fbmFtZSwicnVubmluZyIpfXNldFBvc2l0aW9uKHQpe2NvbnN0IG49V3kodGhpcy5fZWxlbWVudCx0aGlzLl9uYW1lKTt0aGlzLl9wb3NpdGlvbj10KnRoaXMuX2R1cmF0aW9uLHF5KHRoaXMuX2VsZW1lbnQsIkRlbGF5IixgLSR7dGhpcy5fcG9zaXRpb259bXNgLG4pfWdldFBvc2l0aW9uKCl7cmV0dXJuIHRoaXMuX3Bvc2l0aW9ufV9oYW5kbGVDYWxsYmFjayh0KXtjb25zdCBuPXQuX25nVGVzdE1hbnVhbFRpbWVzdGFtcHx8RGF0ZS5ub3coKSxlPTFlMypwYXJzZUZsb2F0KHQuZWxhcHNlZFRpbWUudG9GaXhlZCgzKSk7dC5hbmltYXRpb25OYW1lPT10aGlzLl9uYW1lJiZNYXRoLm1heChuLXRoaXMuX3N0YXJ0VGltZSwwKT49dGhpcy5fZGVsYXkmJmU+PXRoaXMuX2R1cmF0aW9uJiZ0aGlzLmZpbmlzaCgpfWZpbmlzaCgpe3RoaXMuX2ZpbmlzaGVkfHwodGhpcy5fZmluaXNoZWQ9ITAsdGhpcy5fb25Eb25lRm4oKSxZeSh0aGlzLl9lbGVtZW50LHRoaXMuX2V2ZW50Rm4sITApKX1kZXN0cm95KCl7dGhpcy5fZGVzdHJveWVkfHwodGhpcy5fZGVzdHJveWVkPSEwLHRoaXMuZmluaXNoKCksKGZ1bmN0aW9uIHQobixlKXtjb25zdCBhPVp5KG4sIiIpLnNwbGl0KCIsIiksbz1HeShhLGUpO28+PTAmJihhLnNwbGljZShvLDEpLHF5KG4sIiIsYS5qb2luKCIsIikpKX0pKHRoaXMuX2VsZW1lbnQsdGhpcy5fbmFtZSkpfX1mdW5jdGlvbiBVeSh0LG4sZSl7cXkodCwiUGxheVN0YXRlIixlLFd5KHQsbikpfWZ1bmN0aW9uIFd5KHQsbil7Y29uc3QgZT1aeSh0LCIiKTtyZXR1cm4gZS5pbmRleE9mKCIsIik+MD9HeShlLnNwbGl0KCIsIiksbik6R3koW2VdLG4pfWZ1bmN0aW9uIEd5KHQsbil7Zm9yKGxldCBlPTA7ZTx0Lmxlbmd0aDtlKyspaWYodFtlXS5pbmRleE9mKG4pPj0wKXJldHVybiBlO3JldHVybi0xfWZ1bmN0aW9uIFl5KHQsbixlKXtlP3QucmVtb3ZlRXZlbnRMaXN0ZW5lcihWeSxuKTp0LmFkZEV2ZW50TGlzdGVuZXIoVnksbil9ZnVuY3Rpb24gcXkodCxuLGUsYSl7Y29uc3Qgbz1CeStuO2lmKG51bGwhPWEpe2NvbnN0IG49dC5zdHlsZVtvXTtpZihuLmxlbmd0aCl7Y29uc3QgdD1uLnNwbGl0KCIsIik7dFthXT1lLGU9dC5qb2luKCIsIil9fXQuc3R5bGVbb109ZX1mdW5jdGlvbiBaeSh0LG4pe3JldHVybiB0LnN0eWxlW0J5K25dfWNsYXNzIFh5e2NvbnN0cnVjdG9yKHQsbixlLGEsbyxyLGksYyl7dGhpcy5lbGVtZW50PXQsdGhpcy5rZXlmcmFtZXM9bix0aGlzLmFuaW1hdGlvbk5hbWU9ZSx0aGlzLl9kdXJhdGlvbj1hLHRoaXMuX2RlbGF5PW8sdGhpcy5fZmluYWxTdHlsZXM9aSx0aGlzLl9zcGVjaWFsU3R5bGVzPWMsdGhpcy5fb25Eb25lRm5zPVtdLHRoaXMuX29uU3RhcnRGbnM9W10sdGhpcy5fb25EZXN0cm95Rm5zPVtdLHRoaXMuX3N0YXJ0ZWQ9ITEsdGhpcy5jdXJyZW50U25hcHNob3Q9e30sdGhpcy5fc3RhdGU9MCx0aGlzLmVhc2luZz1yfHwibGluZWFyIix0aGlzLnRvdGFsVGltZT1hK28sdGhpcy5fYnVpbGRTdHlsZXIoKX1vblN0YXJ0KHQpe3RoaXMuX29uU3RhcnRGbnMucHVzaCh0KX1vbkRvbmUodCl7dGhpcy5fb25Eb25lRm5zLnB1c2godCl9b25EZXN0cm95KHQpe3RoaXMuX29uRGVzdHJveUZucy5wdXNoKHQpfWRlc3Ryb3koKXt0aGlzLmluaXQoKSx0aGlzLl9zdGF0ZT49NHx8KHRoaXMuX3N0YXRlPTQsdGhpcy5fc3R5bGVyLmRlc3Ryb3koKSx0aGlzLl9mbHVzaFN0YXJ0Rm5zKCksdGhpcy5fZmx1c2hEb25lRm5zKCksdGhpcy5fc3BlY2lhbFN0eWxlcyYmdGhpcy5fc3BlY2lhbFN0eWxlcy5kZXN0cm95KCksdGhpcy5fb25EZXN0cm95Rm5zLmZvckVhY2goKHQ9PnQoKSkpLHRoaXMuX29uRGVzdHJveUZucz1bXSl9X2ZsdXNoRG9uZUZucygpe3RoaXMuX29uRG9uZUZucy5mb3JFYWNoKCh0PT50KCkpKSx0aGlzLl9vbkRvbmVGbnM9W119X2ZsdXNoU3RhcnRGbnMoKXt0aGlzLl9vblN0YXJ0Rm5zLmZvckVhY2goKHQ9PnQoKSkpLHRoaXMuX29uU3RhcnRGbnM9W119ZmluaXNoKCl7dGhpcy5pbml0KCksdGhpcy5fc3RhdGU+PTN8fCh0aGlzLl9zdGF0ZT0zLHRoaXMuX3N0eWxlci5maW5pc2goKSx0aGlzLl9mbHVzaFN0YXJ0Rm5zKCksdGhpcy5fc3BlY2lhbFN0eWxlcyYmdGhpcy5fc3BlY2lhbFN0eWxlcy5maW5pc2goKSx0aGlzLl9mbHVzaERvbmVGbnMoKSl9c2V0UG9zaXRpb24odCl7dGhpcy5fc3R5bGVyLnNldFBvc2l0aW9uKHQpfWdldFBvc2l0aW9uKCl7cmV0dXJuIHRoaXMuX3N0eWxlci5nZXRQb3NpdGlvbigpfWhhc1N0YXJ0ZWQoKXtyZXR1cm4gdGhpcy5fc3RhdGU+PTJ9aW5pdCgpe3RoaXMuX3N0YXRlPj0xfHwodGhpcy5fc3RhdGU9MSx0aGlzLl9zdHlsZXIuYXBwbHkoKSx0aGlzLl9kZWxheSYmdGhpcy5fc3R5bGVyLnBhdXNlKCkpfXBsYXkoKXt0aGlzLmluaXQoKSx0aGlzLmhhc1N0YXJ0ZWQoKXx8KHRoaXMuX2ZsdXNoU3RhcnRGbnMoKSx0aGlzLl9zdGF0ZT0yLHRoaXMuX3NwZWNpYWxTdHlsZXMmJnRoaXMuX3NwZWNpYWxTdHlsZXMuc3RhcnQoKSksdGhpcy5fc3R5bGVyLnJlc3VtZSgpfXBhdXNlKCl7dGhpcy5pbml0KCksdGhpcy5fc3R5bGVyLnBhdXNlKCl9cmVzdGFydCgpe3RoaXMucmVzZXQoKSx0aGlzLnBsYXkoKX1yZXNldCgpe3RoaXMuX3N0eWxlci5kZXN0cm95KCksdGhpcy5fYnVpbGRTdHlsZXIoKSx0aGlzLl9zdHlsZXIuYXBwbHkoKX1fYnVpbGRTdHlsZXIoKXt0aGlzLl9zdHlsZXI9bmV3IGp5KHRoaXMuZWxlbWVudCx0aGlzLmFuaW1hdGlvbk5hbWUsdGhpcy5fZHVyYXRpb24sdGhpcy5fZGVsYXksdGhpcy5lYXNpbmcsImZvcndhcmRzIiwoKCk9PnRoaXMuZmluaXNoKCkpKX10cmlnZ2VyQ2FsbGJhY2sodCl7Y29uc3Qgbj0ic3RhcnQiPT10P3RoaXMuX29uU3RhcnRGbnM6dGhpcy5fb25Eb25lRm5zO24uZm9yRWFjaCgodD0+dCgpKSksbi5sZW5ndGg9MH1iZWZvcmVEZXN0cm95KCl7dGhpcy5pbml0KCk7Y29uc3QgdD17fTtpZih0aGlzLmhhc1N0YXJ0ZWQoKSl7Y29uc3Qgbj10aGlzLl9zdGF0ZT49MztPYmplY3Qua2V5cyh0aGlzLl9maW5hbFN0eWxlcykuZm9yRWFjaCgoZT0+eyJvZmZzZXQiIT1lJiYodFtlXT1uP3RoaXMuX2ZpbmFsU3R5bGVzW2VdOlJ4KHRoaXMuZWxlbWVudCxlKSl9KSl9dGhpcy5jdXJyZW50U25hcHNob3Q9dH19Ci8qKgogICAgICogQGxpY2Vuc2UKICAgICAqIENvcHlyaWdodCBHb29nbGUgTExDIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCiAgICAgKgogICAgICogVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYW4gTUlULXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKICAgICAqIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUgYXQgaHR0cHM6Ly9hbmd1bGFyLmlvL2xpY2Vuc2UKICAgICAqL2NsYXNzIEp5IGV4dGVuZHMgTFB7Y29uc3RydWN0b3IodCxuKXtzdXBlcigpLHRoaXMuZWxlbWVudD10LHRoaXMuX3N0YXJ0aW5nU3R5bGVzPXt9LHRoaXMuX19pbml0aWFsaXplZD0hMSx0aGlzLl9zdHlsZXM9b3gobil9aW5pdCgpeyF0aGlzLl9faW5pdGlhbGl6ZWQmJnRoaXMuX3N0YXJ0aW5nU3R5bGVzJiYodGhpcy5fX2luaXRpYWxpemVkPSEwLE9iamVjdC5rZXlzKHRoaXMuX3N0eWxlcykuZm9yRWFjaCgodD0+e3RoaXMuX3N0YXJ0aW5nU3R5bGVzW3RdPXRoaXMuZWxlbWVudC5zdHlsZVt0XX0pKSxzdXBlci5pbml0KCkpfXBsYXkoKXt0aGlzLl9zdGFydGluZ1N0eWxlcyYmKHRoaXMuaW5pdCgpLE9iamVjdC5rZXlzKHRoaXMuX3N0eWxlcykuZm9yRWFjaCgodD0+dGhpcy5lbGVtZW50LnN0eWxlLnNldFByb3BlcnR5KHQsdGhpcy5fc3R5bGVzW3RdKSkpLHN1cGVyLnBsYXkoKSl9ZGVzdHJveSgpe3RoaXMuX3N0YXJ0aW5nU3R5bGVzJiYoT2JqZWN0LmtleXModGhpcy5fc3RhcnRpbmdTdHlsZXMpLmZvckVhY2goKHQ9Pntjb25zdCBuPXRoaXMuX3N0YXJ0aW5nU3R5bGVzW3RdO24/dGhpcy5lbGVtZW50LnN0eWxlLnNldFByb3BlcnR5KHQsbik6dGhpcy5lbGVtZW50LnN0eWxlLnJlbW92ZVByb3BlcnR5KHQpfSkpLHRoaXMuX3N0YXJ0aW5nU3R5bGVzPW51bGwsc3VwZXIuZGVzdHJveSgpKX19Y2xhc3MgUXl7Y29uc3RydWN0b3IoKXt0aGlzLl9jb3VudD0wLHRoaXMuX2hlYWQ9ZG9jdW1lbnQucXVlcnlTZWxlY3RvcigiaGVhZCIpLHRoaXMuX3dhcm5pbmdJc3N1ZWQ9ITF9dmFsaWRhdGVTdHlsZVByb3BlcnR5KHQpe3JldHVybiB0eCh0KX1tYXRjaGVzRWxlbWVudCh0LG4pe3JldHVybiBueCh0LG4pfWNvbnRhaW5zRWxlbWVudCh0LG4pe3JldHVybiBleCh0LG4pfXF1ZXJ5KHQsbixlKXtyZXR1cm4gYXgodCxuLGUpfWNvbXB1dGVTdHlsZSh0LG4sZSl7cmV0dXJuIHdpbmRvdy5nZXRDb21wdXRlZFN0eWxlKHQpW25dfWJ1aWxkS2V5ZnJhbWVFbGVtZW50KHQsbixlKXtlPWUubWFwKCh0PT5veCh0KSkpO2xldCBhPWBAa2V5ZnJhbWVzICR7bn0ge1xuYCxvPSIiO2UuZm9yRWFjaCgodD0+e289IiAiO2NvbnN0IG49cGFyc2VGbG9hdCh0Lm9mZnNldCk7YSs9YCR7b30kezEwMCpufSUge1xuYCxvKz0iICIsT2JqZWN0LmtleXModCkuZm9yRWFjaCgobj0+e2NvbnN0IGU9dFtuXTtzd2l0Y2gobil7Y2FzZSJvZmZzZXQiOnJldHVybjtjYXNlImVhc2luZyI6cmV0dXJuIHZvaWQoZSYmKGErPWAke299YW5pbWF0aW9uLXRpbWluZy1mdW5jdGlvbjogJHtlfTtcbmApKTtkZWZhdWx0OnJldHVybiB2b2lkKGErPWAke299JHtufTogJHtlfTtcbmApfX0pKSxhKz1gJHtvfX1cbmB9KSksYSs9In1cbiI7Y29uc3Qgcj1kb2N1bWVudC5jcmVhdGVFbGVtZW50KCJzdHlsZSIpO3JldHVybiByLnRleHRDb250ZW50PWEscn1hbmltYXRlKHQsbixlLGEsbyxyPVtdLGkpe2kmJnRoaXMuX25vdGlmeUZhdWx0eVNjcnViYmVyKCk7Y29uc3QgYz1yLmZpbHRlcigodD0+dCBpbnN0YW5jZW9mIFh5KSkscz17fTtFeChlLGEpJiZjLmZvckVhY2goKHQ9PntsZXQgbj10LmN1cnJlbnRTbmFwc2hvdDtPYmplY3Qua2V5cyhuKS5mb3JFYWNoKCh0PT5zW3RdPW5bdF0pKX0pKTtjb25zdCBsPShmdW5jdGlvbiBtKHQpe2xldCBuPXt9O3JldHVybiB0JiYoQXJyYXkuaXNBcnJheSh0KT90Olt0XSkuZm9yRWFjaCgodD0+e09iamVjdC5rZXlzKHQpLmZvckVhY2goKGU9Pnsib2Zmc2V0IiE9ZSYmImVhc2luZyIhPWUmJihuW2VdPXRbZV0pfSkpfSkpLG59KShuPUF4KHQsbixzKSk7aWYoMD09ZSlyZXR1cm4gbmV3IEp5KHQsbCk7Y29uc3QgZD0iZ2VuX2Nzc19rZl8iK3RoaXMuX2NvdW50KyssZz10aGlzLmJ1aWxkS2V5ZnJhbWVFbGVtZW50KHQsZCxuKTtkb2N1bWVudC5xdWVyeVNlbGVjdG9yKCJoZWFkIikuYXBwZW5kQ2hpbGQoZyk7Y29uc3QgcD1OeSh0LG4pLGI9bmV3IFh5KHQsbixkLGUsYSxvLGwscCk7cmV0dXJuIGIub25EZXN0cm95KCgoKT0+KGZ1bmN0aW9uIHQobil7bi5wYXJlbnROb2RlLnJlbW92ZUNoaWxkKG4pfSkoZykpKSxifV9ub3RpZnlGYXVsdHlTY3J1YmJlcigpe3RoaXMuX3dhcm5pbmdJc3N1ZWR8fChjb25zb2xlLndhcm4oIkBhbmd1bGFyL2FuaW1hdGlvbnM6IHBsZWFzZSBsb2FkIHRoZSB3ZWItYW5pbWF0aW9ucy5qcyBwb2x5ZmlsbCB0byBhbGxvdyBwcm9ncmFtbWF0aWMgYWNjZXNzLi4uXG4iLCIgIHZpc2l0IGh0dHA6Ly9iaXQubHkvSVd1a2FtIHRvIGxlYXJuIG1vcmUgYWJvdXQgdXNpbmcgdGhlIHdlYi1hbmltYXRpb24tanMgcG9seWZpbGwuIiksdGhpcy5fd2FybmluZ0lzc3VlZD0hMCl9fWNsYXNzIEt5e2NvbnN0cnVjdG9yKHQsbixlLGEpe3RoaXMuZWxlbWVudD10LHRoaXMua2V5ZnJhbWVzPW4sdGhpcy5vcHRpb25zPWUsdGhpcy5fc3BlY2lhbFN0eWxlcz1hLHRoaXMuX29uRG9uZUZucz1bXSx0aGlzLl9vblN0YXJ0Rm5zPVtdLHRoaXMuX29uRGVzdHJveUZucz1bXSx0aGlzLl9pbml0aWFsaXplZD0hMSx0aGlzLl9maW5pc2hlZD0hMSx0aGlzLl9zdGFydGVkPSExLHRoaXMuX2Rlc3Ryb3llZD0hMSx0aGlzLnRpbWU9MCx0aGlzLnBhcmVudFBsYXllcj1udWxsLHRoaXMuY3VycmVudFNuYXBzaG90PXt9LHRoaXMuX2R1cmF0aW9uPWUuZHVyYXRpb24sdGhpcy5fZGVsYXk9ZS5kZWxheXx8MCx0aGlzLnRpbWU9dGhpcy5fZHVyYXRpb24rdGhpcy5fZGVsYXl9X29uRmluaXNoKCl7dGhpcy5fZmluaXNoZWR8fCh0aGlzLl9maW5pc2hlZD0hMCx0aGlzLl9vbkRvbmVGbnMuZm9yRWFjaCgodD0+dCgpKSksdGhpcy5fb25Eb25lRm5zPVtdKX1pbml0KCl7dGhpcy5fYnVpbGRQbGF5ZXIoKSx0aGlzLl9wcmVwYXJlUGxheWVyQmVmb3JlU3RhcnQoKX1fYnVpbGRQbGF5ZXIoKXtpZih0aGlzLl9pbml0aWFsaXplZClyZXR1cm47dGhpcy5faW5pdGlhbGl6ZWQ9ITA7Y29uc3QgdD10aGlzLmtleWZyYW1lczt0aGlzLmRvbVBsYXllcj10aGlzLl90cmlnZ2VyV2ViQW5pbWF0aW9uKHRoaXMuZWxlbWVudCx0LHRoaXMub3B0aW9ucyksdGhpcy5fZmluYWxLZXlmcmFtZT10Lmxlbmd0aD90W3QubGVuZ3RoLTFdOnt9LHRoaXMuZG9tUGxheWVyLmFkZEV2ZW50TGlzdGVuZXIoImZpbmlzaCIsKCgpPT50aGlzLl9vbkZpbmlzaCgpKSl9X3ByZXBhcmVQbGF5ZXJCZWZvcmVTdGFydCgpe3RoaXMuX2RlbGF5P3RoaXMuX3Jlc2V0RG9tUGxheWVyU3RhdGUoKTp0aGlzLmRvbVBsYXllci5wYXVzZSgpfV90cmlnZ2VyV2ViQW5pbWF0aW9uKHQsbixlKXtyZXR1cm4gdC5hbmltYXRlKG4sZSl9b25TdGFydCh0KXt0aGlzLl9vblN0YXJ0Rm5zLnB1c2godCl9b25Eb25lKHQpe3RoaXMuX29uRG9uZUZucy5wdXNoKHQpfW9uRGVzdHJveSh0KXt0aGlzLl9vbkRlc3Ryb3lGbnMucHVzaCh0KX1wbGF5KCl7dGhpcy5fYnVpbGRQbGF5ZXIoKSx0aGlzLmhhc1N0YXJ0ZWQoKXx8KHRoaXMuX29uU3RhcnRGbnMuZm9yRWFjaCgodD0+dCgpKSksdGhpcy5fb25TdGFydEZucz1bXSx0aGlzLl9zdGFydGVkPSEwLHRoaXMuX3NwZWNpYWxTdHlsZXMmJnRoaXMuX3NwZWNpYWxTdHlsZXMuc3RhcnQoKSksdGhpcy5kb21QbGF5ZXIucGxheSgpfXBhdXNlKCl7dGhpcy5pbml0KCksdGhpcy5kb21QbGF5ZXIucGF1c2UoKX1maW5pc2goKXt0aGlzLmluaXQoKSx0aGlzLl9zcGVjaWFsU3R5bGVzJiZ0aGlzLl9zcGVjaWFsU3R5bGVzLmZpbmlzaCgpLHRoaXMuX29uRmluaXNoKCksdGhpcy5kb21QbGF5ZXIuZmluaXNoKCl9cmVzZXQoKXt0aGlzLl9yZXNldERvbVBsYXllclN0YXRlKCksdGhpcy5fZGVzdHJveWVkPSExLHRoaXMuX2ZpbmlzaGVkPSExLHRoaXMuX3N0YXJ0ZWQ9ITF9X3Jlc2V0RG9tUGxheWVyU3RhdGUoKXt0aGlzLmRvbVBsYXllciYmdGhpcy5kb21QbGF5ZXIuY2FuY2VsKCl9cmVzdGFydCgpe3RoaXMucmVzZXQoKSx0aGlzLnBsYXkoKX1oYXNTdGFydGVkKCl7cmV0dXJuIHRoaXMuX3N0YXJ0ZWR9ZGVzdHJveSgpe3RoaXMuX2Rlc3Ryb3llZHx8KHRoaXMuX2Rlc3Ryb3llZD0hMCx0aGlzLl9yZXNldERvbVBsYXllclN0YXRlKCksdGhpcy5fb25GaW5pc2goKSx0aGlzLl9zcGVjaWFsU3R5bGVzJiZ0aGlzLl9zcGVjaWFsU3R5bGVzLmRlc3Ryb3koKSx0aGlzLl9vbkRlc3Ryb3lGbnMuZm9yRWFjaCgodD0+dCgpKSksdGhpcy5fb25EZXN0cm95Rm5zPVtdKX1zZXRQb3NpdGlvbih0KXt0aGlzLmRvbVBsYXllci5jdXJyZW50VGltZT10KnRoaXMudGltZX1nZXRQb3NpdGlvbigpe3JldHVybiB0aGlzLmRvbVBsYXllci5jdXJyZW50VGltZS90aGlzLnRpbWV9Z2V0IHRvdGFsVGltZSgpe3JldHVybiB0aGlzLl9kZWxheSt0aGlzLl9kdXJhdGlvbn1iZWZvcmVEZXN0cm95KCl7Y29uc3QgdD17fTt0aGlzLmhhc1N0YXJ0ZWQoKSYmT2JqZWN0LmtleXModGhpcy5fZmluYWxLZXlmcmFtZSkuZm9yRWFjaCgobj0+eyJvZmZzZXQiIT1uJiYodFtuXT10aGlzLl9maW5pc2hlZD90aGlzLl9maW5hbEtleWZyYW1lW25dOlJ4KHRoaXMuZWxlbWVudCxuKSl9KSksdGhpcy5jdXJyZW50U25hcHNob3Q9dH10cmlnZ2VyQ2FsbGJhY2sodCl7Y29uc3Qgbj0ic3RhcnQiPT10P3RoaXMuX29uU3RhcnRGbnM6dGhpcy5fb25Eb25lRm5zO24uZm9yRWFjaCgodD0+dCgpKSksbi5sZW5ndGg9MH19Y2xhc3MgJHl7Y29uc3RydWN0b3IoKXt0aGlzLl9pc05hdGl2ZUltcGw9L1x7XHMqXFtuYXRpdmVccytjb2RlXF1ccypcfS8udGVzdCh0aygpLnRvU3RyaW5nKCkpLHRoaXMuX2Nzc0tleWZyYW1lc0RyaXZlcj1uZXcgUXl9dmFsaWRhdGVTdHlsZVByb3BlcnR5KHQpe3JldHVybiB0eCh0KX1tYXRjaGVzRWxlbWVudCh0LG4pe3JldHVybiBueCh0LG4pfWNvbnRhaW5zRWxlbWVudCh0LG4pe3JldHVybiBleCh0LG4pfXF1ZXJ5KHQsbixlKXtyZXR1cm4gYXgodCxuLGUpfWNvbXB1dGVTdHlsZSh0LG4sZSl7cmV0dXJuIHdpbmRvdy5nZXRDb21wdXRlZFN0eWxlKHQpW25dfW92ZXJyaWRlV2ViQW5pbWF0aW9uc1N1cHBvcnQodCl7dGhpcy5faXNOYXRpdmVJbXBsPXR9YW5pbWF0ZSh0LG4sZSxhLG8scj1bXSxpKXtpZighaSYmIXRoaXMuX2lzTmF0aXZlSW1wbClyZXR1cm4gdGhpcy5fY3NzS2V5ZnJhbWVzRHJpdmVyLmFuaW1hdGUodCxuLGUsYSxvLHIpO2NvbnN0IGM9e2R1cmF0aW9uOmUsZGVsYXk6YSxmaWxsOjA9PWE/ImJvdGgiOiJmb3J3YXJkcyJ9O28mJihjLmVhc2luZz1vKTtjb25zdCBzPXt9LGw9ci5maWx0ZXIoKHQ9PnQgaW5zdGFuY2VvZiBLeSkpO0V4KGUsYSkmJmwuZm9yRWFjaCgodD0+e2xldCBuPXQuY3VycmVudFNuYXBzaG90O09iamVjdC5rZXlzKG4pLmZvckVhY2goKHQ9PnNbdF09blt0XSkpfSkpO2NvbnN0IG09TnkodCxuPUF4KHQsbj1uLm1hcCgodD0+aHgodCwhMSkpKSxzKSk7cmV0dXJuIG5ldyBLeSh0LG4sYyxtKX19ZnVuY3Rpb24gdGsoKXsKLyoqCiAgICAgKiBAbGljZW5zZSBBbmd1bGFyIHYxMC4yLjQKICAgICAqIChjKSAyMDEwLTIwMjAgR29vZ2xlIExMQy4gaHR0cHM6Ly9hbmd1bGFyLmlvLwogICAgICogTGljZW5zZTogTUlUCiAgICAgKi8KcmV0dXJuKGZ1bmN0aW9uIHQoKXtyZXR1cm4idW5kZWZpbmVkIiE9dHlwZW9mIHdpbmRvdyYmdm9pZCAwIT09d2luZG93LmRvY3VtZW50fSkoKSYmRWxlbWVudC5wcm90b3R5cGUuYW5pbWF0ZXx8e319Ci8qKgogICAgICogQGxpY2Vuc2UgQW5ndWxhciB2MTAuMi40CiAgICAgKiAoYykgMjAxMC0yMDIwIEdvb2dsZSBMTEMuIGh0dHBzOi8vYW5ndWxhci5pby8KICAgICAqIExpY2Vuc2U6IE1JVAogICAgICovY2xhc3MgbmsgZXh0ZW5kcyB2UHtjb25zdHJ1Y3Rvcih0LG4pe3N1cGVyKCksdGhpcy5fbmV4dEFuaW1hdGlvbklkPTAsdGhpcy5fcmVuZGVyZXI9dC5jcmVhdGVSZW5kZXJlcihuLmJvZHkse2lkOiIwIixlbmNhcHN1bGF0aW9uOmJvLk5vbmUsc3R5bGVzOltdLGRhdGE6e2FuaW1hdGlvbjpbXX19KX1idWlsZCh0KXtjb25zdCBuPXRoaXMuX25leHRBbmltYXRpb25JZC50b1N0cmluZygpO3RoaXMuX25leHRBbmltYXRpb25JZCsrO2NvbnN0IGU9QXJyYXkuaXNBcnJheSh0KT9BUCh0KTp0O3JldHVybiBvayh0aGlzLl9yZW5kZXJlcixudWxsLG4sInJlZ2lzdGVyIixbZV0pLG5ldyBlayhuLHRoaXMuX3JlbmRlcmVyKX19bmsuybVmYWM9ZnVuY3Rpb24gdChuKXtyZXR1cm4gbmV3KG58fG5rKShaYSh2dSksWmEoekMpKX0sbmsuybVwcm92PVdlKHt0b2tlbjpuayxmYWN0b3J5Om5rLsm1ZmFjfSksbmsuY3RvclBhcmFtZXRlcnM9KCk9Plt7dHlwZTp2dX0se3R5cGU6dm9pZCAwLGRlY29yYXRvcnM6W3t0eXBlOkllLGFyZ3M6W3pDXX1dfV07Y2xhc3MgZWsgZXh0ZW5kcyBjbGFzc3t9e2NvbnN0cnVjdG9yKHQsbil7c3VwZXIoKSx0aGlzLl9pZD10LHRoaXMuX3JlbmRlcmVyPW59Y3JlYXRlKHQsbil7cmV0dXJuIG5ldyBhayh0aGlzLl9pZCx0LG58fHt9LHRoaXMuX3JlbmRlcmVyKX19Y2xhc3MgYWt7Y29uc3RydWN0b3IodCxuLGUsYSl7dGhpcy5pZD10LHRoaXMuZWxlbWVudD1uLHRoaXMuX3JlbmRlcmVyPWEsdGhpcy5wYXJlbnRQbGF5ZXI9bnVsbCx0aGlzLl9zdGFydGVkPSExLHRoaXMudG90YWxUaW1lPTAsdGhpcy5fY29tbWFuZCgiY3JlYXRlIixlKX1fbGlzdGVuKHQsbil7cmV0dXJuIHRoaXMuX3JlbmRlcmVyLmxpc3Rlbih0aGlzLmVsZW1lbnQsYEBAJHt0aGlzLmlkfToke3R9YCxuKX1fY29tbWFuZCh0LC4uLm4pe3JldHVybiBvayh0aGlzLl9yZW5kZXJlcix0aGlzLmVsZW1lbnQsdGhpcy5pZCx0LG4pfW9uRG9uZSh0KXt0aGlzLl9saXN0ZW4oImRvbmUiLHQpfW9uU3RhcnQodCl7dGhpcy5fbGlzdGVuKCJzdGFydCIsdCl9b25EZXN0cm95KHQpe3RoaXMuX2xpc3RlbigiZGVzdHJveSIsdCl9aW5pdCgpe3RoaXMuX2NvbW1hbmQoImluaXQiKX1oYXNTdGFydGVkKCl7cmV0dXJuIHRoaXMuX3N0YXJ0ZWR9cGxheSgpe3RoaXMuX2NvbW1hbmQoInBsYXkiKSx0aGlzLl9zdGFydGVkPSEwfXBhdXNlKCl7dGhpcy5fY29tbWFuZCgicGF1c2UiKX1yZXN0YXJ0KCl7dGhpcy5fY29tbWFuZCgicmVzdGFydCIpfWZpbmlzaCgpe3RoaXMuX2NvbW1hbmQoImZpbmlzaCIpfWRlc3Ryb3koKXt0aGlzLl9jb21tYW5kKCJkZXN0cm95Iil9cmVzZXQoKXt0aGlzLl9jb21tYW5kKCJyZXNldCIpfXNldFBvc2l0aW9uKHQpe3RoaXMuX2NvbW1hbmQoInNldFBvc2l0aW9uIix0KX1nZXRQb3NpdGlvbigpe3JldHVybiAwfX1mdW5jdGlvbiBvayh0LG4sZSxhLG8pe3JldHVybiB0LnNldFByb3BlcnR5KG4sYEBAJHtlfToke2F9YCxvKX1jb25zdCByaz0iQCIsaWs9IkAuZGlzYWJsZWQiO2NsYXNzIGNre2NvbnN0cnVjdG9yKHQsbixlKXt0aGlzLmRlbGVnYXRlPXQsdGhpcy5lbmdpbmU9bix0aGlzLl96b25lPWUsdGhpcy5fY3VycmVudElkPTAsdGhpcy5fbWljcm90YXNrSWQ9MSx0aGlzLl9hbmltYXRpb25DYWxsYmFja3NCdWZmZXI9W10sdGhpcy5fcmVuZGVyZXJDYWNoZT1uZXcgTWFwLHRoaXMuX2NkUmVjdXJEZXB0aD0wLHRoaXMucHJvbWlzZT1Qcm9taXNlLnJlc29sdmUoMCksbi5vblJlbW92YWxDb21wbGV0ZT0odCxuKT0+e24mJm4ucGFyZW50Tm9kZSh0KSYmbi5yZW1vdmVDaGlsZCh0LnBhcmVudE5vZGUsdCl9fWNyZWF0ZVJlbmRlcmVyKHQsbil7Y29uc3QgZT10aGlzLmRlbGVnYXRlLmNyZWF0ZVJlbmRlcmVyKHQsbik7aWYoISh0JiZuJiZuLmRhdGEmJm4uZGF0YS5hbmltYXRpb24pKXtsZXQgdD10aGlzLl9yZW5kZXJlckNhY2hlLmdldChlKTtyZXR1cm4gdHx8KHQ9bmV3IHNrKCIiLGUsdGhpcy5lbmdpbmUpLHRoaXMuX3JlbmRlcmVyQ2FjaGUuc2V0KGUsdCkpLHR9Y29uc3QgYT1uLmlkLG89bi5pZCsiLSIrdGhpcy5fY3VycmVudElkO3RoaXMuX2N1cnJlbnRJZCsrLHRoaXMuZW5naW5lLnJlZ2lzdGVyKG8sdCk7Y29uc3Qgcj1uPT57QXJyYXkuaXNBcnJheShuKT9uLmZvckVhY2gocik6dGhpcy5lbmdpbmUucmVnaXN0ZXJUcmlnZ2VyKGEsbyx0LG4ubmFtZSxuKX07cmV0dXJuIG4uZGF0YS5hbmltYXRpb24uZm9yRWFjaChyKSxuZXcgbGsodGhpcyxvLGUsdGhpcy5lbmdpbmUpfWJlZ2luKCl7dGhpcy5fY2RSZWN1ckRlcHRoKyssdGhpcy5kZWxlZ2F0ZS5iZWdpbiYmdGhpcy5kZWxlZ2F0ZS5iZWdpbigpfV9zY2hlZHVsZUNvdW50VGFzaygpe3RoaXMucHJvbWlzZS50aGVuKCgoKT0+e3RoaXMuX21pY3JvdGFza0lkKyt9KSl9c2NoZWR1bGVMaXN0ZW5lckNhbGxiYWNrKHQsbixlKXt0Pj0wJiZ0PHRoaXMuX21pY3JvdGFza0lkP3RoaXMuX3pvbmUucnVuKCgoKT0+bihlKSkpOigwPT10aGlzLl9hbmltYXRpb25DYWxsYmFja3NCdWZmZXIubGVuZ3RoJiZQcm9taXNlLnJlc29sdmUobnVsbCkudGhlbigoKCk9Pnt0aGlzLl96b25lLnJ1bigoKCk9Pnt0aGlzLl9hbmltYXRpb25DYWxsYmFja3NCdWZmZXIuZm9yRWFjaCgodD0+e2NvbnN0W24sZV09dDtuKGUpfSkpLHRoaXMuX2FuaW1hdGlvbkNhbGxiYWNrc0J1ZmZlcj1bXX0pKX0pKSx0aGlzLl9hbmltYXRpb25DYWxsYmFja3NCdWZmZXIucHVzaChbbixlXSkpfWVuZCgpe3RoaXMuX2NkUmVjdXJEZXB0aC0tLDA9PXRoaXMuX2NkUmVjdXJEZXB0aCYmdGhpcy5fem9uZS5ydW5PdXRzaWRlQW5ndWxhcigoKCk9Pnt0aGlzLl9zY2hlZHVsZUNvdW50VGFzaygpLHRoaXMuZW5naW5lLmZsdXNoKHRoaXMuX21pY3JvdGFza0lkKX0pKSx0aGlzLmRlbGVnYXRlLmVuZCYmdGhpcy5kZWxlZ2F0ZS5lbmQoKX13aGVuUmVuZGVyaW5nRG9uZSgpe3JldHVybiB0aGlzLmVuZ2luZS53aGVuUmVuZGVyaW5nRG9uZSgpfX1jay7JtWZhYz1mdW5jdGlvbiB0KG4pe3JldHVybiBuZXcobnx8Y2spKFphKHZ1KSxaYShJeSksWmEoSl8pKX0sY2suybVwcm92PVdlKHt0b2tlbjpjayxmYWN0b3J5OmNrLsm1ZmFjfSksY2suY3RvclBhcmFtZXRlcnM9KCk9Plt7dHlwZTp2dX0se3R5cGU6SXl9LHt0eXBlOkpffV07Y2xhc3Mgc2t7Y29uc3RydWN0b3IodCxuLGUpe3RoaXMubmFtZXNwYWNlSWQ9dCx0aGlzLmRlbGVnYXRlPW4sdGhpcy5lbmdpbmU9ZSx0aGlzLmRlc3Ryb3lOb2RlPXRoaXMuZGVsZWdhdGUuZGVzdHJveU5vZGU/dD0+bi5kZXN0cm95Tm9kZSh0KTpudWxsfWdldCBkYXRhKCl7cmV0dXJuIHRoaXMuZGVsZWdhdGUuZGF0YX1kZXN0cm95KCl7dGhpcy5lbmdpbmUuZGVzdHJveSh0aGlzLm5hbWVzcGFjZUlkLHRoaXMuZGVsZWdhdGUpLHRoaXMuZGVsZWdhdGUuZGVzdHJveSgpfWNyZWF0ZUVsZW1lbnQodCxuKXtyZXR1cm4gdGhpcy5kZWxlZ2F0ZS5jcmVhdGVFbGVtZW50KHQsbil9Y3JlYXRlQ29tbWVudCh0KXtyZXR1cm4gdGhpcy5kZWxlZ2F0ZS5jcmVhdGVDb21tZW50KHQpfWNyZWF0ZVRleHQodCl7cmV0dXJuIHRoaXMuZGVsZWdhdGUuY3JlYXRlVGV4dCh0KX1hcHBlbmRDaGlsZCh0LG4pe3RoaXMuZGVsZWdhdGUuYXBwZW5kQ2hpbGQodCxuKSx0aGlzLmVuZ2luZS5vbkluc2VydCh0aGlzLm5hbWVzcGFjZUlkLG4sdCwhMSl9aW5zZXJ0QmVmb3JlKHQsbixlKXt0aGlzLmRlbGVnYXRlLmluc2VydEJlZm9yZSh0LG4sZSksdGhpcy5lbmdpbmUub25JbnNlcnQodGhpcy5uYW1lc3BhY2VJZCxuLHQsITApfXJlbW92ZUNoaWxkKHQsbixlKXt0aGlzLmVuZ2luZS5vblJlbW92ZSh0aGlzLm5hbWVzcGFjZUlkLG4sdGhpcy5kZWxlZ2F0ZSxlKX1zZWxlY3RSb290RWxlbWVudCh0LG4pe3JldHVybiB0aGlzLmRlbGVnYXRlLnNlbGVjdFJvb3RFbGVtZW50KHQsbil9cGFyZW50Tm9kZSh0KXtyZXR1cm4gdGhpcy5kZWxlZ2F0ZS5wYXJlbnROb2RlKHQpfW5leHRTaWJsaW5nKHQpe3JldHVybiB0aGlzLmRlbGVnYXRlLm5leHRTaWJsaW5nKHQpfXNldEF0dHJpYnV0ZSh0LG4sZSxhKXt0aGlzLmRlbGVnYXRlLnNldEF0dHJpYnV0ZSh0LG4sZSxhKX1yZW1vdmVBdHRyaWJ1dGUodCxuLGUpe3RoaXMuZGVsZWdhdGUucmVtb3ZlQXR0cmlidXRlKHQsbixlKX1hZGRDbGFzcyh0LG4pe3RoaXMuZGVsZWdhdGUuYWRkQ2xhc3ModCxuKX1yZW1vdmVDbGFzcyh0LG4pe3RoaXMuZGVsZWdhdGUucmVtb3ZlQ2xhc3ModCxuKX1zZXRTdHlsZSh0LG4sZSxhKXt0aGlzLmRlbGVnYXRlLnNldFN0eWxlKHQsbixlLGEpfXJlbW92ZVN0eWxlKHQsbixlKXt0aGlzLmRlbGVnYXRlLnJlbW92ZVN0eWxlKHQsbixlKX1zZXRQcm9wZXJ0eSh0LG4sZSl7bi5jaGFyQXQoMCk9PXJrJiZuPT1paz90aGlzLmRpc2FibGVBbmltYXRpb25zKHQsISFlKTp0aGlzLmRlbGVnYXRlLnNldFByb3BlcnR5KHQsbixlKX1zZXRWYWx1ZSh0LG4pe3RoaXMuZGVsZWdhdGUuc2V0VmFsdWUodCxuKX1saXN0ZW4odCxuLGUpe3JldHVybiB0aGlzLmRlbGVnYXRlLmxpc3Rlbih0LG4sZSl9ZGlzYWJsZUFuaW1hdGlvbnModCxuKXt0aGlzLmVuZ2luZS5kaXNhYmxlQW5pbWF0aW9ucyh0LG4pfX1jbGFzcyBsayBleHRlbmRzIHNre2NvbnN0cnVjdG9yKHQsbixlLGEpe3N1cGVyKG4sZSxhKSx0aGlzLmZhY3Rvcnk9dCx0aGlzLm5hbWVzcGFjZUlkPW59c2V0UHJvcGVydHkodCxuLGUpe24uY2hhckF0KDApPT1yaz8iLiI9PW4uY2hhckF0KDEpJiZuPT1paz90aGlzLmRpc2FibGVBbmltYXRpb25zKHQsZT12b2lkIDA9PT1lfHwhIWUpOnRoaXMuZW5naW5lLnByb2Nlc3ModGhpcy5uYW1lc3BhY2VJZCx0LG4uc3Vic3RyKDEpLGUpOnRoaXMuZGVsZWdhdGUuc2V0UHJvcGVydHkodCxuLGUpfWxpc3Rlbih0LG4sZSl7aWYobi5jaGFyQXQoMCk9PXJrKXtjb25zdCBhPShmdW5jdGlvbiBhKHQpe3N3aXRjaCh0KXtjYXNlImJvZHkiOnJldHVybiBkb2N1bWVudC5ib2R5O2Nhc2UiZG9jdW1lbnQiOnJldHVybiBkb2N1bWVudDtjYXNlIndpbmRvdyI6cmV0dXJuIHdpbmRvdztkZWZhdWx0OnJldHVybiB0fX0pKHQpO2xldCBvPW4uc3Vic3RyKDEpLHI9IiI7cmV0dXJuIG8uY2hhckF0KDApIT1yayYmKFtvLHJdPShmdW5jdGlvbiBvKHQpe2NvbnN0IG49dC5pbmRleE9mKCIuIik7cmV0dXJuW3Quc3Vic3RyaW5nKDAsbiksdC5zdWJzdHIobisxKV19Ci8qKgogICAgICogQGxpY2Vuc2UKICAgICAqIENvcHlyaWdodCBHb29nbGUgTExDIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCiAgICAgKgogICAgICogVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYW4gTUlULXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKICAgICAqIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUgYXQgaHR0cHM6Ly9hbmd1bGFyLmlvL2xpY2Vuc2UKICAgICAqLykobykpLHRoaXMuZW5naW5lLmxpc3Rlbih0aGlzLm5hbWVzcGFjZUlkLGEsbyxyLCh0PT57dGhpcy5mYWN0b3J5LnNjaGVkdWxlTGlzdGVuZXJDYWxsYmFjayh0Ll9kYXRhfHwtMSxlLHQpfSkpfXJldHVybiB0aGlzLmRlbGVnYXRlLmxpc3Rlbih0LG4sZSl9fWNsYXNzIG1rIGV4dGVuZHMgSXl7Y29uc3RydWN0b3IodCxuLGUpe3N1cGVyKHQuYm9keSxuLGUpfX1tay7JtWZhYz1mdW5jdGlvbiB0KG4pe3JldHVybiBuZXcobnx8bWspKFphKHpDKSxaYShpeCksWmEoZXkpKX0sbWsuybVwcm92PVdlKHt0b2tlbjptayxmYWN0b3J5Om1rLsm1ZmFjfSksbWsuY3RvclBhcmFtZXRlcnM9KCk9Plt7dHlwZTp2b2lkIDAsZGVjb3JhdG9yczpbe3R5cGU6SWUsYXJnczpbekNdfV19LHt0eXBlOml4fSx7dHlwZTpleX1dO2NvbnN0IGRrPW5ldyBGYSgiQW5pbWF0aW9uTW9kdWxlVHlwZSIpLGdrPVt7cHJvdmlkZTp2UCx1c2VDbGFzczpua30se3Byb3ZpZGU6ZXksdXNlRmFjdG9yeTpmdW5jdGlvbiBwaygpe3JldHVybiBuZXcgYXl9fSx7cHJvdmlkZTpJeSx1c2VDbGFzczpta30se3Byb3ZpZGU6dnUsdXNlRmFjdG9yeTpmdW5jdGlvbiBiayh0LG4sZSl7cmV0dXJuIG5ldyBjayh0LG4sZSl9LGRlcHM6W1VPLEl5LEpfXX1dLHVrPVt7cHJvdmlkZTppeCx1c2VGYWN0b3J5OmZ1bmN0aW9uIGZrKCl7cmV0dXJuKGZ1bmN0aW9uIHQoKXtyZXR1cm4iZnVuY3Rpb24iPT10eXBlb2YgdGsoKX0pKCk/bmV3ICR5Om5ldyBReX19LHtwcm92aWRlOmRrLHVzZVZhbHVlOiJCcm93c2VyQW5pbWF0aW9ucyJ9LC4uLmdrXSxoaz1be3Byb3ZpZGU6aXgsdXNlQ2xhc3M6cnh9LHtwcm92aWRlOmRrLHVzZVZhbHVlOiJOb29wQW5pbWF0aW9ucyJ9LC4uLmdrXTsKLyoqCiAgICAgKiBAbGljZW5zZQogICAgICogQ29weXJpZ2h0IEdvb2dsZSBMTEMgQWxsIFJpZ2h0cyBSZXNlcnZlZC4KICAgICAqCiAgICAgKiBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhbiBNSVQtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQogICAgICogZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZSBhdCBodHRwczovL2FuZ3VsYXIuaW8vbGljZW5zZQogICAgICovCmNsYXNzIF9re31fay7JtW1vZD14byh7dHlwZTpfa30pLF9rLsm1aW5qPUdlKHtmYWN0b3J5OmZ1bmN0aW9uIHQobil7cmV0dXJuIG5ldyhufHxfayl9LHByb3ZpZGVyczp1ayxpbXBvcnRzOlt1UF19KSwoInVuZGVmaW5lZCI9PXR5cGVvZiBuZ0ppdE1vZGV8fG5nSml0TW9kZSkmJnlvKF9rLHtleHBvcnRzOmZ1bmN0aW9uKCl7cmV0dXJuW3VQXX19KTtjbGFzcyBDa3t9Q2suybVtb2Q9eG8oe3R5cGU6Q2t9KSxDay7JtWluaj1HZSh7ZmFjdG9yeTpmdW5jdGlvbiB0KG4pe3JldHVybiBuZXcobnx8Q2spfSxwcm92aWRlcnM6aGssaW1wb3J0czpbdVBdfSksKCJ1bmRlZmluZWQiPT10eXBlb2YgbmdKaXRNb2RlfHxuZ0ppdE1vZGUpJiZ5byhDayx7ZXhwb3J0czpmdW5jdGlvbigpe3JldHVyblt1UF19fSk7Ci8qKgogICAgICogQGxpY2Vuc2UgTmdSeCA5LjIuMQogICAgICogKGMpIDIwMTUtMjAxOCBCcmFuZG9uIFJvYmVydHMsIE1pa2UgUnlhbiwgUm9iIFdvcm1hbGQsIFZpY3RvciBTYXZraW4KICAgICAqIExpY2Vuc2U6IE1JVAogICAgICovCmxldCBNaz17fTtmdW5jdGlvbiBPayh0LG4pe2lmKE1rW3RdPShNa1t0XXx8MCkrMSwiZnVuY3Rpb24iPT10eXBlb2YgbilyZXR1cm4gUGsodCwoKC4uLmUpPT5PYmplY3QuYXNzaWduKE9iamVjdC5hc3NpZ24oe30sbiguLi5lKSkse3R5cGU6dH0pKSk7c3dpdGNoKG4/bi5fYXM6ImVtcHR5Iil7Y2FzZSJlbXB0eSI6cmV0dXJuIFBrKHQsKCgpPT4oe3R5cGU6dH0pKSk7Y2FzZSJwcm9wcyI6cmV0dXJuIFBrKHQsKG49Pk9iamVjdC5hc3NpZ24oT2JqZWN0LmFzc2lnbih7fSxuKSx7dHlwZTp0fSkpKTtkZWZhdWx0OnRocm93IG5ldyBFcnJvcigiVW5leHBlY3RlZCBjb25maWcuIil9fWZ1bmN0aW9uIFBrKHQsbil7cmV0dXJuIE9iamVjdC5kZWZpbmVQcm9wZXJ0eShuLCJ0eXBlIix7dmFsdWU6dCx3cml0YWJsZTohMX0pfWNvbnN0IHhrPSJAbmdyeC9zdG9yZS9pbml0IjtjbGFzcyB5ayBleHRlbmRzIEZ7Y29uc3RydWN0b3IoKXtzdXBlcih7dHlwZTp4a30pfW5leHQodCl7aWYoImZ1bmN0aW9uIj09dHlwZW9mIHQpdGhyb3cgbmV3IFR5cGVFcnJvcigiXG4gICAgICAgIERpc3BhdGNoIGV4cGVjdGVkIGFuIG9iamVjdCwgaW5zdGVhZCBpdCByZWNlaXZlZCBhIGZ1bmN0aW9uLlxuICAgICAgICBJZiB5b3UncmUgdXNpbmcgdGhlIGNyZWF0ZUFjdGlvbiBmdW5jdGlvbiwgbWFrZSBzdXJlIHRvIGludm9rZSB0aGUgZnVuY3Rpb25cbiAgICAgICAgYmVmb3JlIGRpc3BhdGNoaW5nIHRoZSBhY3Rpb24uIEZvciBleGFtcGxlLCBzb21lQWN0aW9uIHNob3VsZCBiZSBzb21lQWN0aW9uKCkuIik7aWYodm9pZCAwPT09dCl0aHJvdyBuZXcgVHlwZUVycm9yKCJBY3Rpb25zIG11c3QgYmUgb2JqZWN0cyIpO2lmKHZvaWQgMD09PXQudHlwZSl0aHJvdyBuZXcgVHlwZUVycm9yKCJBY3Rpb25zIG11c3QgaGF2ZSBhIHR5cGUgcHJvcGVydHkiKTtzdXBlci5uZXh0KHQpfWNvbXBsZXRlKCl7fW5nT25EZXN0cm95KCl7c3VwZXIuY29tcGxldGUoKX19eWsuybVmYWM9ZnVuY3Rpb24gdChuKXtyZXR1cm4gbmV3KG58fHlrKX0seWsuybVwcm92PVdlKHt0b2tlbjp5ayxmYWN0b3J5OnlrLsm1ZmFjfSkseWsuY3RvclBhcmFtZXRlcnM9KCk9PltdO2NvbnN0IGtrPVt5a10sdms9bmV3IEZhKCJAbmdyeC9zdG9yZSBJbnRlcm5hbCBSb290IEd1YXJkIiksd2s9bmV3IEZhKCJAbmdyeC9zdG9yZSBJbnRlcm5hbCBJbml0aWFsIFN0YXRlIiksU2s9bmV3IEZhKCJAbmdyeC9zdG9yZSBJbml0aWFsIFN0YXRlIiksRWs9bmV3IEZhKCJAbmdyeC9zdG9yZSBSZWR1Y2VyIEZhY3RvcnkiKSxBaz1uZXcgRmEoIkBuZ3J4L3N0b3JlIEludGVybmFsIFJlZHVjZXIgRmFjdG9yeSBQcm92aWRlciIpLHprPW5ldyBGYSgiQG5ncngvc3RvcmUgSW5pdGlhbCBSZWR1Y2VycyIpLFJrPW5ldyBGYSgiQG5ncngvc3RvcmUgSW50ZXJuYWwgSW5pdGlhbCBSZWR1Y2VycyIpLFRrPW5ldyBGYSgiQG5ncngvc3RvcmUgU3RvcmUgRmVhdHVyZXMiKSxEaz1uZXcgRmEoIkBuZ3J4L3N0b3JlIEludGVybmFsIFN0b3JlIFJlZHVjZXJzIiksSWs9bmV3IEZhKCJAbmdyeC9zdG9yZSBJbnRlcm5hbCBGZWF0dXJlIFJlZHVjZXJzIiksTms9bmV3IEZhKCJAbmdyeC9zdG9yZSBJbnRlcm5hbCBGZWF0dXJlIENvbmZpZ3MiKSxGaz1uZXcgRmEoIkBuZ3J4L3N0b3JlIEludGVybmFsIFN0b3JlIEZlYXR1cmVzIiksTGs9bmV3IEZhKCJAbmdyeC9zdG9yZSBJbnRlcm5hbCBGZWF0dXJlIFJlZHVjZXJzIFRva2VuIiksSGs9bmV3IEZhKCJAbmdyeC9zdG9yZSBGZWF0dXJlIFJlZHVjZXJzIiksQms9bmV3IEZhKCJAbmdyeC9zdG9yZSBVc2VyIFByb3ZpZGVkIE1ldGEgUmVkdWNlcnMiKSxWaz1uZXcgRmEoIkBuZ3J4L3N0b3JlIE1ldGEgUmVkdWNlcnMiKSxqaz1uZXcgRmEoIkBuZ3J4L3N0b3JlIEludGVybmFsIFJlc29sdmVkIE1ldGEgUmVkdWNlcnMiKSxVaz1uZXcgRmEoIkBuZ3J4L3N0b3JlIFVzZXIgUnVudGltZSBDaGVja3MgQ29uZmlnIiksV2s9bmV3IEZhKCJAbmdyeC9zdG9yZSBJbnRlcm5hbCBVc2VyIFJ1bnRpbWUgQ2hlY2tzIENvbmZpZyIpLEdrPW5ldyBGYSgiQG5ncngvc3RvcmUgSW50ZXJuYWwgUnVudGltZSBDaGVja3MiKSxZaz1uZXcgRmEoIkBuZ3J4L3N0b3JlIENoZWNrIGlmIEFjdGlvbiB0eXBlcyBhcmUgdW5pcXVlIik7ZnVuY3Rpb24gcWsodCxuPXt9KXtjb25zdCBlPU9iamVjdC5rZXlzKHQpLGE9e307Zm9yKGxldCBuPTA7bjxlLmxlbmd0aDtuKyspe2NvbnN0IG89ZVtuXTsiZnVuY3Rpb24iPT10eXBlb2YgdFtvXSYmKGFbb109dFtvXSl9Y29uc3Qgbz1PYmplY3Qua2V5cyhhKTtyZXR1cm4gZnVuY3Rpb24gdChlLHIpe2U9dm9pZCAwPT09ZT9uOmU7bGV0IGk9ITE7Y29uc3QgYz17fTtmb3IobGV0IHQ9MDt0PG8ubGVuZ3RoO3QrKyl7Y29uc3Qgbj1vW3RdLHM9ZVtuXSxsPSgwLGFbbl0pKHMscik7Y1tuXT1sLGk9aXx8bCE9PXN9cmV0dXJuIGk/YzplfX1mdW5jdGlvbiBaayguLi50KXtyZXR1cm4gZnVuY3Rpb24obil7aWYoMD09PXQubGVuZ3RoKXJldHVybiBuO2NvbnN0IGU9dFt0Lmxlbmd0aC0xXTtyZXR1cm4gdC5zbGljZSgwLC0xKS5yZWR1Y2VSaWdodCgoKHQsbik9Pm4odCkpLGUobikpfX1mdW5jdGlvbiBYayh0LG4pe3JldHVybiBBcnJheS5pc0FycmF5KG4pJiZuLmxlbmd0aD4wJiYodD1aay5hcHBseShudWxsLFsuLi5uLHRdKSksKG4sZSk9Pntjb25zdCBhPXQobik7cmV0dXJuKHQsbik9PmEodD12b2lkIDA9PT10P2U6dCxuKX19Y2xhc3MgSmsgZXh0ZW5kcyBfe31jbGFzcyBRayBleHRlbmRzIHlre31jbGFzcyBLayBleHRlbmRzIEZ7Y29uc3RydWN0b3IodCxuLGUsYSl7c3VwZXIoYShlLG4pKSx0aGlzLmRpc3BhdGNoZXI9dCx0aGlzLmluaXRpYWxTdGF0ZT1uLHRoaXMucmVkdWNlcnM9ZSx0aGlzLnJlZHVjZXJGYWN0b3J5PWF9YWRkRmVhdHVyZSh0KXt0aGlzLmFkZEZlYXR1cmVzKFt0XSl9YWRkRmVhdHVyZXModCl7Y29uc3Qgbj10LnJlZHVjZSgoKHQse3JlZHVjZXJzOm4scmVkdWNlckZhY3Rvcnk6ZSxtZXRhUmVkdWNlcnM6YSxpbml0aWFsU3RhdGU6byxrZXk6cn0pPT57Y29uc3QgaT0iZnVuY3Rpb24iPT10eXBlb2Ygbj8oZnVuY3Rpb24gYyh0KXtjb25zdCBuPUFycmF5LmlzQXJyYXkodCkmJnQubGVuZ3RoPjA/WmsoLi4udCk6dD0+dDtyZXR1cm4odCxlKT0+KHQ9bih0KSwobixhKT0+dChuPXZvaWQgMD09PW4/ZTpuLGEpKX0pKGEpKG4sbyk6WGsoZSxhKShuLG8pO3JldHVybiB0W3JdPWksdH0pLHt9KTt0aGlzLmFkZFJlZHVjZXJzKG4pfXJlbW92ZUZlYXR1cmUodCl7dGhpcy5yZW1vdmVGZWF0dXJlcyhbdF0pfXJlbW92ZUZlYXR1cmVzKHQpe3RoaXMucmVtb3ZlUmVkdWNlcnModC5tYXAoKHQ9PnQua2V5KSkpfWFkZFJlZHVjZXIodCxuKXt0aGlzLmFkZFJlZHVjZXJzKHtbdF06bn0pfWFkZFJlZHVjZXJzKHQpe3RoaXMucmVkdWNlcnM9T2JqZWN0LmFzc2lnbihPYmplY3QuYXNzaWduKHt9LHRoaXMucmVkdWNlcnMpLHQpLHRoaXMudXBkYXRlUmVkdWNlcnMoT2JqZWN0LmtleXModCkpfXJlbW92ZVJlZHVjZXIodCl7dGhpcy5yZW1vdmVSZWR1Y2VycyhbdF0pfXJlbW92ZVJlZHVjZXJzKHQpe3QuZm9yRWFjaCgodD0+e3RoaXMucmVkdWNlcnM9KGZ1bmN0aW9uIG4odCxlKXtyZXR1cm4gT2JqZWN0LmtleXModCkuZmlsdGVyKCh0PT50IT09ZSkpLnJlZHVjZSgoKG4sZSk9Pk9iamVjdC5hc3NpZ24obix7W2VdOnRbZV19KSkse30pfSkodGhpcy5yZWR1Y2Vycyx0KX0pKSx0aGlzLnVwZGF0ZVJlZHVjZXJzKHQpfXVwZGF0ZVJlZHVjZXJzKHQpe3RoaXMubmV4dCh0aGlzLnJlZHVjZXJGYWN0b3J5KHRoaXMucmVkdWNlcnMsdGhpcy5pbml0aWFsU3RhdGUpKSx0aGlzLmRpc3BhdGNoZXIubmV4dCh7dHlwZToiQG5ncngvc3RvcmUvdXBkYXRlLXJlZHVjZXJzIixmZWF0dXJlczp0fSl9bmdPbkRlc3Ryb3koKXt0aGlzLmNvbXBsZXRlKCl9fUtrLsm1ZmFjPWZ1bmN0aW9uIHQobil7cmV0dXJuIG5ldyhufHxLaykoWmEoUWspLFphKFNrKSxaYSh6ayksWmEoRWspKX0sS2suybVwcm92PVdlKHt0b2tlbjpLayxmYWN0b3J5OktrLsm1ZmFjfSksS2suY3RvclBhcmFtZXRlcnM9KCk9Plt7dHlwZTpRa30se3R5cGU6dm9pZCAwLGRlY29yYXRvcnM6W3t0eXBlOkllLGFyZ3M6W1NrXX1dfSx7dHlwZTp2b2lkIDAsZGVjb3JhdG9yczpbe3R5cGU6SWUsYXJnczpbemtdfV19LHt0eXBlOnZvaWQgMCxkZWNvcmF0b3JzOlt7dHlwZTpJZSxhcmdzOltFa119XX1dO2NvbnN0ICRrPVtLayx7cHJvdmlkZTpKayx1c2VFeGlzdGluZzpLa30se3Byb3ZpZGU6UWssdXNlRXhpc3Rpbmc6eWt9XTtjbGFzcyB0diBleHRlbmRzIHh7bmdPbkRlc3Ryb3koKXt0aGlzLmNvbXBsZXRlKCl9fXR2Lsm1ZmFjPWZ1bmN0aW9uIHQobil7cmV0dXJuIG52KG58fHR2KX0sdHYuybVwcm92PVdlKHt0b2tlbjp0dixmYWN0b3J5OnR2Lsm1ZmFjfSk7Y29uc3QgbnY9dGModHYpLGV2PVt0dl07Y2xhc3MgYXYgZXh0ZW5kcyBfe31jbGFzcyBvdiBleHRlbmRzIEZ7Y29uc3RydWN0b3IodCxuLGUsYSl7c3VwZXIoYSk7Y29uc3Qgbz10LnBpcGUoKGZ1bmN0aW9uIGkodCxuPTApe3JldHVybiBmdW5jdGlvbiBlKGEpe3JldHVybiBhLmxpZnQobmV3ICQodCxuKSl9fSkoaikpLnBpcGUoeWUobikpLnBpcGUoKGZ1bmN0aW9uIHIodCxuKXtsZXQgZT0hMTtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD49MiYmKGU9ITApLGZ1bmN0aW9uIGEobyl7cmV0dXJuIG8ubGlmdChuZXcgWm4odCxuLGUpKX19KShydix7c3RhdGU6YX0pKTt0aGlzLnN0YXRlU3Vic2NyaXB0aW9uPW8uc3Vic2NyaWJlKCgoe3N0YXRlOnQsYWN0aW9uOm59KT0+e3RoaXMubmV4dCh0KSxlLm5leHQobil9KSl9bmdPbkRlc3Ryb3koKXt0aGlzLnN0YXRlU3Vic2NyaXB0aW9uLnVuc3Vic2NyaWJlKCksdGhpcy5jb21wbGV0ZSgpfX1mdW5jdGlvbiBydih0PXtzdGF0ZTp2b2lkIDB9LFtuLGVdKXtjb25zdHtzdGF0ZTphfT10O3JldHVybntzdGF0ZTplKGEsbiksYWN0aW9uOm59fW92Lsm1ZmFjPWZ1bmN0aW9uIHQobil7cmV0dXJuIG5ldyhufHxvdikoWmEoeWspLFphKEprKSxaYSh0diksWmEoU2spKX0sb3YuybVwcm92PVdlKHt0b2tlbjpvdixmYWN0b3J5Om92Lsm1ZmFjfSksb3YuSU5JVD14ayxvdi5jdG9yUGFyYW1ldGVycz0oKT0+W3t0eXBlOnlrfSx7dHlwZTpKa30se3R5cGU6dHZ9LHt0eXBlOnZvaWQgMCxkZWNvcmF0b3JzOlt7dHlwZTpJZSxhcmdzOltTa119XX1dO2NvbnN0IGl2PVtvdix7cHJvdmlkZTphdix1c2VFeGlzdGluZzpvdn1dO2NsYXNzIGN2IGV4dGVuZHMgX3tjb25zdHJ1Y3Rvcih0LG4sZSl7c3VwZXIoKSx0aGlzLmFjdGlvbnNPYnNlcnZlcj1uLHRoaXMucmVkdWNlck1hbmFnZXI9ZSx0aGlzLnNvdXJjZT10fXNlbGVjdCh0LC4uLm4pe3JldHVybiBsdi5jYWxsKG51bGwsdCwuLi5uKSh0aGlzKX1saWZ0KHQpe2NvbnN0IG49bmV3IGN2KHRoaXMsdGhpcy5hY3Rpb25zT2JzZXJ2ZXIsdGhpcy5yZWR1Y2VyTWFuYWdlcik7cmV0dXJuIG4ub3BlcmF0b3I9dCxufWRpc3BhdGNoKHQpe3RoaXMuYWN0aW9uc09ic2VydmVyLm5leHQodCl9bmV4dCh0KXt0aGlzLmFjdGlvbnNPYnNlcnZlci5uZXh0KHQpfWVycm9yKHQpe3RoaXMuYWN0aW9uc09ic2VydmVyLmVycm9yKHQpfWNvbXBsZXRlKCl7dGhpcy5hY3Rpb25zT2JzZXJ2ZXIuY29tcGxldGUoKX1hZGRSZWR1Y2VyKHQsbil7dGhpcy5yZWR1Y2VyTWFuYWdlci5hZGRSZWR1Y2VyKHQsbil9cmVtb3ZlUmVkdWNlcih0KXt0aGlzLnJlZHVjZXJNYW5hZ2VyLnJlbW92ZVJlZHVjZXIodCl9fWN2Lsm1ZmFjPWZ1bmN0aW9uIHQobil7cmV0dXJuIG5ldyhufHxjdikoWmEoYXYpLFphKHlrKSxaYShLaykpfSxjdi7JtXByb3Y9V2Uoe3Rva2VuOmN2LGZhY3Rvcnk6Y3YuybVmYWN9KSxjdi5jdG9yUGFyYW1ldGVycz0oKT0+W3t0eXBlOmF2fSx7dHlwZTp5a30se3R5cGU6S2t9XTtjb25zdCBzdj1bY3ZdO2Z1bmN0aW9uIGx2KHQsbiwuLi5lKXtyZXR1cm4gZnVuY3Rpb24gYShvKXtsZXQgcjtpZigic3RyaW5nIj09dHlwZW9mIHQpe2NvbnN0IGE9W24sLi4uZV0uZmlsdGVyKEJvb2xlYW4pO3I9by5waXBlKChmdW5jdGlvbiBpKC4uLnQpe2NvbnN0IG49dC5sZW5ndGg7aWYoMD09PW4pdGhyb3cgbmV3IEVycm9yKCJsaXN0IG9mIHByb3BlcnRpZXMgY2Fubm90IGJlIGVtcHR5LiIpO3JldHVybiBmdCgoZT0+e2xldCBhPWU7Zm9yKGxldCBlPTA7ZTxuO2UrKyl7Y29uc3Qgbj1hW3RbZV1dO2lmKHZvaWQgMD09PW4pcmV0dXJuO2E9bn1yZXR1cm4gYX0pKX0pKHQsLi4uYSkpfWVsc2V7aWYoImZ1bmN0aW9uIiE9dHlwZW9mIHQpdGhyb3cgbmV3IFR5cGVFcnJvcihgVW5leHBlY3RlZCB0eXBlICcke3R5cGVvZiB0fScgaW4gc2VsZWN0IG9wZXJhdG9yLCBleHBlY3RlZCAnc3RyaW5nJyBvciAnZnVuY3Rpb24nYCk7cj1vLnBpcGUoZnQoKGU9PnQoZSxuKSkpKX1yZXR1cm4gci5waXBlKHZuKCkpfX1mdW5jdGlvbiBtdih0LG4pe3JldHVybiB0PT09bn1mdW5jdGlvbiBkdih0LG4sZSl7Zm9yKGxldCBhPTA7YTx0Lmxlbmd0aDthKyspaWYoIWUodFthXSxuW2FdKSlyZXR1cm4hMDtyZXR1cm4hMX1mdW5jdGlvbiBndih0LG49bXYsZT1tdil7bGV0IGEsbz1udWxsLHI9bnVsbDtyZXR1cm57bWVtb2l6ZWQ6ZnVuY3Rpb24gaSgpe2lmKHZvaWQgMCE9PWEpcmV0dXJuIGEucmVzdWx0O2lmKCFvKXJldHVybiByPXQuYXBwbHkobnVsbCxhcmd1bWVudHMpLG89YXJndW1lbnRzLHI7aWYoIWR2KGFyZ3VtZW50cyxvLG4pKXJldHVybiByO2NvbnN0IGk9dC5hcHBseShudWxsLGFyZ3VtZW50cyk7cmV0dXJuIG89YXJndW1lbnRzLGUocixpKT9yOihyPWksaSl9LHJlc2V0OmZ1bmN0aW9uIGMoKXtvPW51bGwscj1udWxsfSxzZXRSZXN1bHQ6ZnVuY3Rpb24gcyh0KXthPXtyZXN1bHQ6dH19LGNsZWFyUmVzdWx0OmZ1bmN0aW9uIGwoKXthPXZvaWQgMH19fWZ1bmN0aW9uIHB2KC4uLnQpe3JldHVybihmdW5jdGlvbiBuKHQsZT17c3RhdGVGbjpidn0pe3JldHVybiBmdW5jdGlvbiguLi5uKXtsZXQgYT1uO2lmKEFycmF5LmlzQXJyYXkoYVswXSkpe2NvbnN0W3QsLi4ubl09YTthPVsuLi50LC4uLm5dfWNvbnN0IG89YS5zbGljZSgwLGEubGVuZ3RoLTEpLHI9YVthLmxlbmd0aC0xXSxpPW8uZmlsdGVyKCh0PT50LnJlbGVhc2UmJiJmdW5jdGlvbiI9PXR5cGVvZiB0LnJlbGVhc2UpKSxjPXQoKGZ1bmN0aW9uKC4uLnQpe3JldHVybiByLmFwcGx5KG51bGwsdCl9KSkscz1ndigoZnVuY3Rpb24odCxuKXtyZXR1cm4gZS5zdGF0ZUZuLmFwcGx5KG51bGwsW3QsbyxuLGNdKX0pKTtyZXR1cm4gT2JqZWN0LmFzc2lnbihzLm1lbW9pemVkLHtyZWxlYXNlOmZ1bmN0aW9uIGwoKXtzLnJlc2V0KCksYy5yZXNldCgpLGkuZm9yRWFjaCgodD0+dC5yZWxlYXNlKCkpKX0scHJvamVjdG9yOmMubWVtb2l6ZWQsc2V0UmVzdWx0OnMuc2V0UmVzdWx0LGNsZWFyUmVzdWx0OnMuY2xlYXJSZXN1bHR9KX19KShndikoLi4udCl9ZnVuY3Rpb24gYnYodCxuLGUsYSl7aWYodm9pZCAwPT09ZSl7Y29uc3QgZT1uLm1hcCgobj0+bih0KSkpO3JldHVybiBhLm1lbW9pemVkLmFwcGx5KG51bGwsZSl9Y29uc3Qgbz1uLm1hcCgobj0+bih0LGUpKSk7cmV0dXJuIGEubWVtb2l6ZWQuYXBwbHkobnVsbCxbLi4ubyxlXSl9ZnVuY3Rpb24gdXYodCl7cmV0dXJuIHB2KChuPT57Y29uc3QgZT1uW3RdO3JldHVybiBfYygpJiYhKHQgaW4gbikmJmNvbnNvbGUud2FybihgQG5ncngvc3RvcmU6IFRoZSBmZWF0dXJlIG5hbWUgIiR7dH0iIGRvZXMgbm90IGV4aXN0IGluIHRoZSBzdGF0ZSwgdGhlcmVmb3JlIGNyZWF0ZUZlYXR1cmVTZWxlY3RvciBjYW5ub3QgYWNjZXNzIGl0LiAgQmUgc3VyZSBpdCBpcyBpbXBvcnRlZCBpbiBhIGxvYWRlZCBtb2R1bGUgdXNpbmcgU3RvcmVNb2R1bGUuZm9yUm9vdCgnJHt0fScsIC4uLikgb3IgU3RvcmVNb2R1bGUuZm9yRmVhdHVyZSgnJHt0fScsIC4uLikuICBJZiB0aGUgZGVmYXVsdCBzdGF0ZSBpcyBpbnRlbmRlZCB0byBiZSB1bmRlZmluZWQsIGFzIGlzIHRoZSBjYXNlIHdpdGggcm91dGVyIHN0YXRlLCB0aGlzIGRldmVsb3BtZW50LW9ubHkgd2FybmluZyBtZXNzYWdlIGNhbiBiZSBpZ25vcmVkLmApLGV9KSwodD0+dCkpfWNvbnN0IGZ2PSJodHRwczovL25ncnguaW8vZ3VpZGUvc3RvcmUvY29uZmlndXJhdGlvbi9ydW50aW1lLWNoZWNrcyI7ZnVuY3Rpb24gaHYodCl7cmV0dXJuIHZvaWQgMD09PXR9ZnVuY3Rpb24gX3YodCl7cmV0dXJuIG51bGw9PT10fWZ1bmN0aW9uIEN2KHQpe3JldHVybiBBcnJheS5pc0FycmF5KHQpfWZ1bmN0aW9uIE12KHQpe3JldHVybiJvYmplY3QiPT10eXBlb2YgdCYmbnVsbCE9PXR9ZnVuY3Rpb24gT3YodCl7cmV0dXJuImZ1bmN0aW9uIj09dHlwZW9mIHR9ZnVuY3Rpb24gUHYodCl7T2JqZWN0LmZyZWV6ZSh0KTtjb25zdCBuPU92KHQpO3JldHVybiBPYmplY3QuZ2V0T3duUHJvcGVydHlOYW1lcyh0KS5mb3JFYWNoKChlPT57aWYoIWUuc3RhcnRzV2l0aCgiybUiKSYmKGZ1bmN0aW9uIGEodCxuKXtyZXR1cm4gT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKHQsbil9KSh0LGUpJiYoIW58fCJjYWxsZXIiIT09ZSYmImNhbGxlZSIhPT1lJiYiYXJndW1lbnRzIiE9PWUpKXtjb25zdCBuPXRbZV07IU12KG4pJiYhT3Yobil8fE9iamVjdC5pc0Zyb3plbihuKXx8UHYobil9fSkpLHR9ZnVuY3Rpb24geHYodCxuPVtdKXtyZXR1cm4oaHYodCl8fF92KHQpKSYmMD09PW4ubGVuZ3RoP3twYXRoOlsicm9vdCJdLHZhbHVlOnR9Ok9iamVjdC5rZXlzKHQpLnJlZHVjZSgoKGUsYSk9PntpZihlKXJldHVybiBlO2NvbnN0IG89dFthXTtyZXR1cm4oZnVuY3Rpb24gcih0KXtyZXR1cm4gT3YodCkmJnQuaGFzT3duUHJvcGVydHkoIsm1Y21wIil9KShvKT9lOiEoaHYobyl8fF92KG8pfHwoZnVuY3Rpb24gaSh0KXtyZXR1cm4ibnVtYmVyIj09dHlwZW9mIHR9KShvKXx8KGZ1bmN0aW9uIGModCl7cmV0dXJuImJvb2xlYW4iPT10eXBlb2YgdH0pKG8pfHwoZnVuY3Rpb24gcyh0KXtyZXR1cm4ic3RyaW5nIj09dHlwZW9mIHR9KShvKXx8Q3YobykpJiYoKGZ1bmN0aW9uIGwodCl7aWYoIShmdW5jdGlvbiBuKHQpe3JldHVybiBNdih0KSYmIUN2KHQpfSkodCkpcmV0dXJuITE7Y29uc3QgZT1PYmplY3QuZ2V0UHJvdG90eXBlT2YodCk7cmV0dXJuIGU9PT1PYmplY3QucHJvdG90eXBlfHxudWxsPT09ZX0pKG8pP3h2KG8sWy4uLm4sYV0pOntwYXRoOlsuLi5uLGFdLHZhbHVlOm99KX0pLCExKX1mdW5jdGlvbiB5dih0LG4pe2lmKCExPT09dClyZXR1cm47Y29uc3QgZT10LnBhdGguam9pbigiLiIpLGE9bmV3IEVycm9yKGBEZXRlY3RlZCB1bnNlcmlhbGl6YWJsZSAke259IGF0ICIke2V9Ii4gJHtmdn0jc3RyaWN0JHtufXNlcmlhbGl6YWJpbGl0eWApO3Rocm93IGEudmFsdWU9dC52YWx1ZSxhLnVuc2VyaWFsaXphYmxlUGF0aD1lLGF9ZnVuY3Rpb24ga3YodCl7cmV0dXJuIF9jKCk/T2JqZWN0LmFzc2lnbih7c3RyaWN0U3RhdGVTZXJpYWxpemFiaWxpdHk6ITEsc3RyaWN0QWN0aW9uU2VyaWFsaXphYmlsaXR5OiExLHN0cmljdFN0YXRlSW1tdXRhYmlsaXR5OiEwLHN0cmljdEFjdGlvbkltbXV0YWJpbGl0eTohMCxzdHJpY3RBY3Rpb25XaXRoaW5OZ1pvbmU6ITEsc3RyaWN0QWN0aW9uVHlwZVVuaXF1ZW5lc3M6ITF9LHQpOntzdHJpY3RTdGF0ZVNlcmlhbGl6YWJpbGl0eTohMSxzdHJpY3RBY3Rpb25TZXJpYWxpemFiaWxpdHk6ITEsc3RyaWN0U3RhdGVJbW11dGFiaWxpdHk6ITEsc3RyaWN0QWN0aW9uSW1tdXRhYmlsaXR5OiExLHN0cmljdEFjdGlvbldpdGhpbk5nWm9uZTohMSxzdHJpY3RBY3Rpb25UeXBlVW5pcXVlbmVzczohMX19ZnVuY3Rpb24gdnYoe3N0cmljdEFjdGlvblNlcmlhbGl6YWJpbGl0eTp0LHN0cmljdFN0YXRlU2VyaWFsaXphYmlsaXR5Om59KXtyZXR1cm4gZT0+dHx8bj8oZnVuY3Rpb24gYSh0LG4pe3JldHVybiBmdW5jdGlvbihlLGEpe24uYWN0aW9uKGEpJiZ5dih4dihhKSwiYWN0aW9uIik7Y29uc3Qgbz10KGUsYSk7cmV0dXJuIG4uc3RhdGUoKSYmeXYoeHYobyksInN0YXRlIiksb319KShlLHthY3Rpb246bj0+dCYmIVN2KG4pLHN0YXRlOigpPT5ufSk6ZX1mdW5jdGlvbiB3dih7c3RyaWN0QWN0aW9uSW1tdXRhYmlsaXR5OnQsc3RyaWN0U3RhdGVJbW11dGFiaWxpdHk6bn0pe3JldHVybiBlPT50fHxuPyhmdW5jdGlvbiBhKHQsbil7cmV0dXJuIGZ1bmN0aW9uKGUsYSl7Y29uc3Qgbz1uLmFjdGlvbihhKT9QdihhKTphLHI9dChlLG8pO3JldHVybiBuLnN0YXRlKCk/UHYocik6cn19KShlLHthY3Rpb246bj0+dCYmIVN2KG4pLHN0YXRlOigpPT5ufSk6ZX1mdW5jdGlvbiBTdih0KXtyZXR1cm4gdC50eXBlLnN0YXJ0c1dpdGgoIkBuZ3J4Iil9ZnVuY3Rpb24gRXYoe3N0cmljdEFjdGlvbldpdGhpbk5nWm9uZTp0fSl7cmV0dXJuIG49PnQ/KGZ1bmN0aW9uIGUodCxuKXtyZXR1cm4gZnVuY3Rpb24oZSxhKXtpZihuLmFjdGlvbihhKSYmIUpfLmlzSW5Bbmd1bGFyWm9uZSgpKXRocm93IG5ldyBFcnJvcihgQWN0aW9uICcke2EudHlwZX0nIHJ1bm5pbmcgb3V0c2lkZSBOZ1pvbmUuICR7ZnZ9I3N0cmljdGFjdGlvbndpdGhpbm5nem9uZWApO3JldHVybiB0KGUsYSl9fSkobix7YWN0aW9uOm49PnQmJiFTdihuKX0pOm59ZnVuY3Rpb24gQXYoKXtyZXR1cm5be3Byb3ZpZGU6WWssbXVsdGk6ITAsZGVwczpbR2tdLHVzZUZhY3Rvcnk6UnZ9XX1mdW5jdGlvbiB6dih0KXtyZXR1cm4gdH1mdW5jdGlvbiBSdih0KXtpZighdC5zdHJpY3RBY3Rpb25UeXBlVW5pcXVlbmVzcylyZXR1cm47Y29uc3Qgbj1PYmplY3QuZW50cmllcyhNaykuZmlsdGVyKCgoWyx0XSk9PnQ+MSkpLm1hcCgoKFt0XSk9PnQpKTtpZihuLmxlbmd0aCl0aHJvdyBuZXcgRXJyb3IoYEFjdGlvbiB0eXBlcyBhcmUgcmVnaXN0ZXJlZCBtb3JlIHRoYW4gb25jZSwgJHtuLm1hcCgodD0+YCIke3R9ImApKS5qb2luKCIsICIpfS4gJHtmdn0jc3RyaWN0YWN0aW9udHlwZXVuaXF1ZW5lc3NgKX1jbGFzcyBUdntjb25zdHJ1Y3Rvcih0LG4sZSxhLG8scil7fX1Udi7JtW1vZD14byh7dHlwZTpUdn0pLFR2Lsm1aW5qPUdlKHtmYWN0b3J5OmZ1bmN0aW9uIHQobil7cmV0dXJuIG5ldyhufHxUdikoWmEoeWspLFphKEprKSxaYSh0diksWmEoY3YpLFphKHZrLDgpLFphKFlrLDgpKX19KSxUdi5jdG9yUGFyYW1ldGVycz0oKT0+W3t0eXBlOnlrfSx7dHlwZTpKa30se3R5cGU6dHZ9LHt0eXBlOmN2fSx7dHlwZTp2b2lkIDAsZGVjb3JhdG9yczpbe3R5cGU6TmV9LHt0eXBlOkllLGFyZ3M6W3ZrXX1dfSx7dHlwZTp2b2lkIDAsZGVjb3JhdG9yczpbe3R5cGU6TmV9LHt0eXBlOkllLGFyZ3M6W1lrXX1dfV07Y2xhc3MgRHZ7Y29uc3RydWN0b3IodCxuLGUsYSxvKXt0aGlzLmZlYXR1cmVzPXQsdGhpcy5mZWF0dXJlUmVkdWNlcnM9bix0aGlzLnJlZHVjZXJNYW5hZ2VyPWU7Y29uc3Qgcj10Lm1hcCgoKHQsZSk9Pntjb25zdCBhPW4uc2hpZnQoKVtlXTtyZXR1cm4gT2JqZWN0LmFzc2lnbihPYmplY3QuYXNzaWduKHt9LHQpLHtyZWR1Y2VyczphLGluaXRpYWxTdGF0ZTpIdih0LmluaXRpYWxTdGF0ZSl9KX0pKTtlLmFkZEZlYXR1cmVzKHIpfW5nT25EZXN0cm95KCl7dGhpcy5yZWR1Y2VyTWFuYWdlci5yZW1vdmVGZWF0dXJlcyh0aGlzLmZlYXR1cmVzKX19RHYuybVtb2Q9eG8oe3R5cGU6RHZ9KSxEdi7JtWluaj1HZSh7ZmFjdG9yeTpmdW5jdGlvbiB0KG4pe3JldHVybiBuZXcobnx8RHYpKFphKEZrKSxaYShIayksWmEoS2spLFphKFR2KSxaYShZayw4KSl9fSksRHYuY3RvclBhcmFtZXRlcnM9KCk9Plt7dHlwZTpBcnJheSxkZWNvcmF0b3JzOlt7dHlwZTpJZSxhcmdzOltGa119XX0se3R5cGU6QXJyYXksZGVjb3JhdG9yczpbe3R5cGU6SWUsYXJnczpbSGtdfV19LHt0eXBlOktrfSx7dHlwZTpUdn0se3R5cGU6dm9pZCAwLGRlY29yYXRvcnM6W3t0eXBlOk5lfSx7dHlwZTpJZSxhcmdzOltZa119XX1dO2NsYXNzIEl2e3N0YXRpYyBmb3JSb290KHQsbj17fSl7cmV0dXJue25nTW9kdWxlOlR2LHByb3ZpZGVyczpbe3Byb3ZpZGU6dmssdXNlRmFjdG9yeTpWdixkZXBzOltbY3YsbmV3IE5lLG5ldyBMZV1dfSx7cHJvdmlkZTp3ayx1c2VWYWx1ZTpuLmluaXRpYWxTdGF0ZX0se3Byb3ZpZGU6U2ssdXNlRmFjdG9yeTpIdixkZXBzOlt3a119LHtwcm92aWRlOlJrLHVzZVZhbHVlOnR9LHtwcm92aWRlOkRrLHVzZUV4aXN0aW5nOnQgaW5zdGFuY2VvZiBGYT90OlJrfSx7cHJvdmlkZTp6ayxkZXBzOlt5ZCxSayxbbmV3IEllKERrKV1dLHVzZUZhY3Rvcnk6TnZ9LHtwcm92aWRlOkJrLHVzZVZhbHVlOm4ubWV0YVJlZHVjZXJzP24ubWV0YVJlZHVjZXJzOltdfSx7cHJvdmlkZTpqayxkZXBzOltWayxCa10sdXNlRmFjdG9yeTpCdn0se3Byb3ZpZGU6QWssdXNlVmFsdWU6bi5yZWR1Y2VyRmFjdG9yeT9uLnJlZHVjZXJGYWN0b3J5OnFrfSx7cHJvdmlkZTpFayxkZXBzOltBayxqa10sdXNlRmFjdG9yeTpYa30sa2ssJGssZXYsaXYsc3YsKGU9bi5ydW50aW1lQ2hlY2tzLFt7cHJvdmlkZTpXayx1c2VWYWx1ZTplfSx7cHJvdmlkZTpVayx1c2VGYWN0b3J5Onp2LGRlcHM6W1drXX0se3Byb3ZpZGU6R2ssZGVwczpbVWtdLHVzZUZhY3Rvcnk6a3Z9LHtwcm92aWRlOlZrLG11bHRpOiEwLGRlcHM6W0drXSx1c2VGYWN0b3J5Ond2fSx7cHJvdmlkZTpWayxtdWx0aTohMCxkZXBzOltHa10sdXNlRmFjdG9yeTp2dn0se3Byb3ZpZGU6VmssbXVsdGk6ITAsZGVwczpbR2tdLHVzZUZhY3Rvcnk6RXZ9XSksQXYoKV19O3ZhciBlfXN0YXRpYyBmb3JGZWF0dXJlKHQsbixlPXt9KXtyZXR1cm57bmdNb2R1bGU6RHYscHJvdmlkZXJzOlt7cHJvdmlkZTpOayxtdWx0aTohMCx1c2VWYWx1ZTplfSx7cHJvdmlkZTpUayxtdWx0aTohMCx1c2VWYWx1ZTp7a2V5OnQscmVkdWNlckZhY3Rvcnk6ZSBpbnN0YW5jZW9mIEZhfHwhZS5yZWR1Y2VyRmFjdG9yeT9xazplLnJlZHVjZXJGYWN0b3J5LG1ldGFSZWR1Y2VyczplIGluc3RhbmNlb2YgRmF8fCFlLm1ldGFSZWR1Y2Vycz9bXTplLm1ldGFSZWR1Y2Vycyxpbml0aWFsU3RhdGU6ZSBpbnN0YW5jZW9mIEZhfHwhZS5pbml0aWFsU3RhdGU/dm9pZCAwOmUuaW5pdGlhbFN0YXRlfX0se3Byb3ZpZGU6RmssZGVwczpbeWQsTmssVGtdLHVzZUZhY3Rvcnk6RnZ9LHtwcm92aWRlOklrLG11bHRpOiEwLHVzZVZhbHVlOm59LHtwcm92aWRlOkxrLG11bHRpOiEwLHVzZUV4aXN0aW5nOm4gaW5zdGFuY2VvZiBGYT9uOklrfSx7cHJvdmlkZTpIayxtdWx0aTohMCxkZXBzOlt5ZCxJayxbbmV3IEllKExrKV1dLHVzZUZhY3Rvcnk6THZ9LEF2KCldfX19ZnVuY3Rpb24gTnYodCxuKXtyZXR1cm4gbiBpbnN0YW5jZW9mIEZhP3QuZ2V0KG4pOm59ZnVuY3Rpb24gRnYodCxuLGUpe3JldHVybiBlLm1hcCgoKGUsYSk9PntpZihuW2FdaW5zdGFuY2VvZiBGYSl7Y29uc3Qgbz10LmdldChuW2FdKTtyZXR1cm57a2V5OmUua2V5LHJlZHVjZXJGYWN0b3J5Om8ucmVkdWNlckZhY3Rvcnk/by5yZWR1Y2VyRmFjdG9yeTpxayxtZXRhUmVkdWNlcnM6by5tZXRhUmVkdWNlcnM/by5tZXRhUmVkdWNlcnM6W10saW5pdGlhbFN0YXRlOm8uaW5pdGlhbFN0YXRlfX1yZXR1cm4gZX0pKX1mdW5jdGlvbiBMdih0LG4pe3JldHVybiBuLm1hcCgobj0+biBpbnN0YW5jZW9mIEZhP3QuZ2V0KG4pOm4pKX1mdW5jdGlvbiBIdih0KXtyZXR1cm4iZnVuY3Rpb24iPT10eXBlb2YgdD90KCk6dH1mdW5jdGlvbiBCdih0LG4pe3JldHVybiB0LmNvbmNhdChuKX1mdW5jdGlvbiBWdih0KXtpZih0KXRocm93IG5ldyBUeXBlRXJyb3IoIlN0b3JlTW9kdWxlLmZvclJvb3QoKSBjYWxsZWQgdHdpY2UuIEZlYXR1cmUgbW9kdWxlcyBzaG91bGQgdXNlIFN0b3JlTW9kdWxlLmZvckZlYXR1cmUoKSBpbnN0ZWFkLiIpO3JldHVybiJndWFyZGVkIn1mdW5jdGlvbiBqdiguLi50KXtyZXR1cm57cmVkdWNlcjp0LnBvcCgpLHR5cGVzOnQucmVkdWNlKCgodCxuKT0+Wy4uLnQsbi50eXBlXSksW10pfX1mdW5jdGlvbiBVdih0LC4uLm4pe2NvbnN0IGU9bmV3IE1hcDtmb3IobGV0IHQgb2Ygbilmb3IobGV0IG4gb2YgdC50eXBlcylpZihlLmhhcyhuKSl7Y29uc3QgYT1lLmdldChuKTtlLnNldChuLCgobixlKT0+dC5yZWR1Y2VyKGEobixlKSxlKSkpfWVsc2UgZS5zZXQobix0LnJlZHVjZXIpO3JldHVybiBmdW5jdGlvbihuPXQsYSl7Y29uc3Qgbz1lLmdldChhLnR5cGUpO3JldHVybiBvP28obixhKTpufX0KLyoqCiAgICAgKiBAbGljZW5zZSBOZ1J4IDkuMi4xCiAgICAgKiAoYykgMjAxNS0yMDE4IEJyYW5kb24gUm9iZXJ0cywgTWlrZSBSeWFuLCBSb2IgV29ybWFsZCwgVmljdG9yIFNhdmtpbgogICAgICogTGljZW5zZTogTUlUCiAgICAgKi9Jdi7JtW1vZD14byh7dHlwZTpJdn0pLEl2Lsm1aW5qPUdlKHtmYWN0b3J5OmZ1bmN0aW9uIHQobil7cmV0dXJuIG5ldyhufHxJdil9fSk7Y29uc3QgV3Y9e2Rpc3BhdGNoOiEwLHVzZUVmZmVjdHNFcnJvckhhbmRsZXI6ITB9LEd2PSJfX0BuZ3J4L2VmZmVjdHNfY3JlYXRlX18iO2Z1bmN0aW9uIFl2KHQsbil7Y29uc3QgZT10KCksYT1PYmplY3QuYXNzaWduKE9iamVjdC5hc3NpZ24oe30sV3YpLG4pO3JldHVybiBPYmplY3QuZGVmaW5lUHJvcGVydHkoZSxHdix7dmFsdWU6YX0pLGV9ZnVuY3Rpb24gcXYodCl7cmV0dXJuIE9iamVjdC5nZXRPd25Qcm9wZXJ0eU5hbWVzKHQpLmZpbHRlcigobj0+dFtuXSYmdFtuXS5oYXNPd25Qcm9wZXJ0eShHdikpKS5tYXAoKG49Pk9iamVjdC5hc3NpZ24oe3Byb3BlcnR5TmFtZTpufSx0W25dW0d2XSkpKX1mdW5jdGlvbiBadih0KXtyZXR1cm4gT2JqZWN0LmdldFByb3RvdHlwZU9mKHQpfWNvbnN0IFh2PSJfX0BuZ3J4L2VmZmVjdHNfXyI7ZnVuY3Rpb24gSnYodCl7cmV0dXJuIFprKFF2LFp2KSh0KX1mdW5jdGlvbiBRdih0KXtyZXR1cm4oZnVuY3Rpb24gbih0KXtyZXR1cm4gdC5jb25zdHJ1Y3Rvci5oYXNPd25Qcm9wZXJ0eShYdil9KSh0KT90LmNvbnN0cnVjdG9yW1h2XTpbXX1mdW5jdGlvbiBLdih0LG4sZT0xMCl7cmV0dXJuIHQucGlwZShvbigoYT0+KG4mJm4uaGFuZGxlRXJyb3IoYSksZTw9MT90Okt2KHQsbixlLTEpKSkpKX1jbGFzcyAkdiBleHRlbmRzIF97Y29uc3RydWN0b3IodCl7c3VwZXIoKSx0JiYodGhpcy5zb3VyY2U9dCl9bGlmdCh0KXtjb25zdCBuPW5ldyAkdjtyZXR1cm4gbi5zb3VyY2U9dGhpcyxuLm9wZXJhdG9yPXQsbn19ZnVuY3Rpb24gdHcoLi4udCl7cmV0dXJuIEd0KChuPT50LnNvbWUoKHQ9PiJzdHJpbmciPT10eXBlb2YgdD90PT09bi50eXBlOnQudHlwZT09PW4udHlwZSkpKSl9ZnVuY3Rpb24gbncodCl7cmV0dXJuIGV3KHQsIm5ncnhPbkluaXRFZmZlY3RzIil9ZnVuY3Rpb24gZXcodCxuKXtyZXR1cm4gdCYmbiBpbiB0JiYiZnVuY3Rpb24iPT10eXBlb2YgdFtuXX0kdi7JtWZhYz1mdW5jdGlvbiB0KG4pe3JldHVybiBuZXcobnx8JHYpKFphKHR2KSl9LCR2Lsm1cHJvdj1XZSh7dG9rZW46JHYsZmFjdG9yeTokdi7JtWZhY30pLCR2LmN0b3JQYXJhbWV0ZXJzPSgpPT5be3R5cGU6XyxkZWNvcmF0b3JzOlt7dHlwZTpJZSxhcmdzOlt0dl19XX1dO2NvbnN0IGF3PW5ldyBGYSgiQG5ncngvZWZmZWN0cyBJbnRlcm5hbCBSb290IEd1YXJkIik7bmV3IEZhKCJuZ3J4L2VmZmVjdHM6IEltbWVkaWF0ZSBFZmZlY3RzIik7Y29uc3Qgb3c9bmV3IEZhKCJuZ3J4L2VmZmVjdHM6IFVzZXIgUHJvdmlkZWQgRWZmZWN0cyIpLHJ3PW5ldyBGYSgibmdyeC9lZmZlY3RzOiBJbnRlcm5hbCBSb290IEVmZmVjdHMiKSxpdz1uZXcgRmEoIm5ncngvZWZmZWN0czogUm9vdCBFZmZlY3RzIiksY3c9bmV3IEZhKCJuZ3J4L2VmZmVjdHM6IEludGVybmFsIEZlYXR1cmUgRWZmZWN0cyIpLHN3PW5ldyBGYSgibmdyeC9lZmZlY3RzOiBGZWF0dXJlIEVmZmVjdHMiKSxsdz1uZXcgRmEoIm5ncngvZWZmZWN0czogRWZmZWN0cyBFcnJvciBIYW5kbGVyIik7Y2xhc3MgbXcgZXh0ZW5kcyB4e2NvbnN0cnVjdG9yKHQsbil7c3VwZXIoKSx0aGlzLmVycm9ySGFuZGxlcj10LHRoaXMuZWZmZWN0c0Vycm9ySGFuZGxlcj1ufWFkZEVmZmVjdHModCl7dGhpcy5uZXh0KHQpfXRvQWN0aW9ucygpe3JldHVybiB0aGlzLnBpcGUoeihadiksVHQoKHQ9PnQucGlwZSh6KGR3KSkpKSxUdCgodD0+V3QodC5waXBlKE5uKCh0PT4oZnVuY3Rpb24gbih0LGUpe3JldHVybiBuPT57Y29uc3QgYT0oZnVuY3Rpb24gbyh0LG4sZSl7Y29uc3QgYT1adih0KS5jb25zdHJ1Y3Rvci5uYW1lO3JldHVybiBXdCguLi4oZnVuY3Rpb24gbyh0KXtyZXR1cm5bSnYscXZdLnJlZHVjZSgoKG4sZSk9Pm4uY29uY2F0KGUodCkpKSxbXSl9KSh0KS5tYXAoKCh7cHJvcGVydHlOYW1lOm8sZGlzcGF0Y2g6cix1c2VFZmZlY3RzRXJyb3JIYW5kbGVyOml9KT0+e2NvbnN0IGM9ImZ1bmN0aW9uIj09dHlwZW9mIHRbb10/dFtvXSgpOnRbb10scz1pP2UoYyxuKTpjO3JldHVybiExPT09cj9zLnBpcGUoKGZ1bmN0aW9uIGwoKXtyZXR1cm4gZnVuY3Rpb24gdChuKXtyZXR1cm4gbi5saWZ0KG5ldyBWbil9fSkoKSk6cy5waXBlKChmdW5jdGlvbiBtKCl7cmV0dXJuIGZ1bmN0aW9uIHQobil7cmV0dXJuIG4ubGlmdChuZXcgWW4pfX0pKCkpLnBpcGUoZnQoKG49Pih7ZWZmZWN0OnRbb10sbm90aWZpY2F0aW9uOm4scHJvcGVydHlOYW1lOm8sc291cmNlTmFtZTphLHNvdXJjZUluc3RhbmNlOnR9KSkpKX0pKSl9KShuLHQsZSk7cmV0dXJuKGZ1bmN0aW9uIHIodCl7cmV0dXJuIGV3KHQsIm5ncnhPblJ1bkVmZmVjdHMiKX0pKG4pP24ubmdyeE9uUnVuRWZmZWN0cyhhKTphfX0pKHRoaXMuZXJyb3JIYW5kbGVyLHRoaXMuZWZmZWN0c0Vycm9ySGFuZGxlcikodCkpKSxmdCgodD0+KChmdW5jdGlvbiBuKHQsZSl7aWYoIk4iPT09dC5ub3RpZmljYXRpb24ua2luZCl7Y29uc3Qgbj10Lm5vdGlmaWNhdGlvbi52YWx1ZTshKGZ1bmN0aW9uIGEodCl7cmV0dXJuImZ1bmN0aW9uIiE9dHlwZW9mIHQmJnQmJnQudHlwZSYmInN0cmluZyI9PXR5cGVvZiB0LnR5cGV9KShuKSYmZS5oYW5kbGVFcnJvcihuZXcgRXJyb3IoYEVmZmVjdCAkeyhmdW5jdGlvbiBvKHtwcm9wZXJ0eU5hbWU6dCxzb3VyY2VJbnN0YW5jZTpuLHNvdXJjZU5hbWU6ZX0pe2NvbnN0IGE9ImZ1bmN0aW9uIj09dHlwZW9mIG5bdF07cmV0dXJuYCIke2V9LiR7U3RyaW5nKHQpfSR7YT8iKCkiOiIifSJgfSkodCl9IGRpc3BhdGNoZWQgYW4gaW52YWxpZCBhY3Rpb246ICR7KGZ1bmN0aW9uIHIodCl7dHJ5e3JldHVybiBKU09OLnN0cmluZ2lmeSh0KX1jYXRjaChuKXtyZXR1cm4gdH19KShuKX1gKSl9fSkodCx0aGlzLmVycm9ySGFuZGxlciksdC5ub3RpZmljYXRpb24pKSksR3QoKHQ9PiJOIj09PXQua2luZCkpLChmdW5jdGlvbiBuKCl7cmV0dXJuIGZ1bmN0aW9uIHQobil7cmV0dXJuIG4ubGlmdChuZXcgeW4pfX0pKCkpLHQucGlwZShUbigxKSxHdChudyksZnQoKHQ9PnQubmdyeE9uSW5pdEVmZmVjdHMoKSkpKSkpKSl9fWZ1bmN0aW9uIGR3KHQpe3JldHVybihmdW5jdGlvbiBuKHQpe3JldHVybiBldyh0LCJuZ3J4T25JZGVudGlmeUVmZmVjdHMiKX0pKHQpP3QubmdyeE9uSWRlbnRpZnlFZmZlY3RzKCk6IiJ9bXcuybVmYWM9ZnVuY3Rpb24gdChuKXtyZXR1cm4gbmV3KG58fG13KShaYShvYyksWmEobHcpKX0sbXcuybVwcm92PVdlKHt0b2tlbjptdyxmYWN0b3J5Om13Lsm1ZmFjfSksbXcuY3RvclBhcmFtZXRlcnM9KCk9Plt7dHlwZTpvY30se3R5cGU6dm9pZCAwLGRlY29yYXRvcnM6W3t0eXBlOkllLGFyZ3M6W2x3XX1dfV07Y2xhc3MgZ3d7Y29uc3RydWN0b3IodCxuKXt0aGlzLmVmZmVjdFNvdXJjZXM9dCx0aGlzLnN0b3JlPW4sdGhpcy5lZmZlY3RzU3Vic2NyaXB0aW9uPW51bGx9c3RhcnQoKXt0aGlzLmVmZmVjdHNTdWJzY3JpcHRpb258fCh0aGlzLmVmZmVjdHNTdWJzY3JpcHRpb249dGhpcy5lZmZlY3RTb3VyY2VzLnRvQWN0aW9ucygpLnN1YnNjcmliZSh0aGlzLnN0b3JlKSl9bmdPbkRlc3Ryb3koKXt0aGlzLmVmZmVjdHNTdWJzY3JpcHRpb24mJih0aGlzLmVmZmVjdHNTdWJzY3JpcHRpb24udW5zdWJzY3JpYmUoKSx0aGlzLmVmZmVjdHNTdWJzY3JpcHRpb249bnVsbCl9fWd3Lsm1ZmFjPWZ1bmN0aW9uIHQobil7cmV0dXJuIG5ldyhufHxndykoWmEobXcpLFphKGN2KSl9LGd3Lsm1cHJvdj1XZSh7dG9rZW46Z3csZmFjdG9yeTpndy7JtWZhY30pLGd3LmN0b3JQYXJhbWV0ZXJzPSgpPT5be3R5cGU6bXd9LHt0eXBlOmN2fV07Y29uc3QgcHc9IkBuZ3J4L2VmZmVjdHMvaW5pdCI7T2socHcpO2NsYXNzIGJ3e2NvbnN0cnVjdG9yKHQsbixlLGEsbyxyLGkpe3RoaXMuc291cmNlcz10LG4uc3RhcnQoKSxhLmZvckVhY2goKG49PnQuYWRkRWZmZWN0cyhuKSkpLGUuZGlzcGF0Y2goe3R5cGU6cHd9KX1hZGRFZmZlY3RzKHQpe3RoaXMuc291cmNlcy5hZGRFZmZlY3RzKHQpfX1idy7JtW1vZD14byh7dHlwZTpid30pLGJ3Lsm1aW5qPUdlKHtmYWN0b3J5OmZ1bmN0aW9uIHQobil7cmV0dXJuIG5ldyhufHxidykoWmEobXcpLFphKGd3KSxaYShjdiksWmEoaXcpLFphKFR2LDgpLFphKER2LDgpLFphKGF3LDgpKX19KSxidy5jdG9yUGFyYW1ldGVycz0oKT0+W3t0eXBlOm13fSx7dHlwZTpnd30se3R5cGU6Y3Z9LHt0eXBlOkFycmF5LGRlY29yYXRvcnM6W3t0eXBlOkllLGFyZ3M6W2l3XX1dfSx7dHlwZTpUdixkZWNvcmF0b3JzOlt7dHlwZTpOZX1dfSx7dHlwZTpEdixkZWNvcmF0b3JzOlt7dHlwZTpOZX1dfSx7dHlwZTp2b2lkIDAsZGVjb3JhdG9yczpbe3R5cGU6TmV9LHt0eXBlOkllLGFyZ3M6W2F3XX1dfV07Y2xhc3MgdXd7Y29uc3RydWN0b3IodCxuLGUsYSl7bi5mb3JFYWNoKChuPT5uLmZvckVhY2goKG49PnQuYWRkRWZmZWN0cyhuKSkpKSl9fXV3Lsm1bW9kPXhvKHt0eXBlOnV3fSksdXcuybVpbmo9R2Uoe2ZhY3Rvcnk6ZnVuY3Rpb24gdChuKXtyZXR1cm4gbmV3KG58fHV3KShaYShidyksWmEoc3cpLFphKFR2LDgpLFphKER2LDgpKX19KSx1dy5jdG9yUGFyYW1ldGVycz0oKT0+W3t0eXBlOmJ3fSx7dHlwZTpBcnJheSxkZWNvcmF0b3JzOlt7dHlwZTpJZSxhcmdzOltzd119XX0se3R5cGU6VHYsZGVjb3JhdG9yczpbe3R5cGU6TmV9XX0se3R5cGU6RHYsZGVjb3JhdG9yczpbe3R5cGU6TmV9XX1dO2NsYXNzIGZ3e3N0YXRpYyBmb3JGZWF0dXJlKHQ9W10pe3JldHVybntuZ01vZHVsZTp1dyxwcm92aWRlcnM6W3Qse3Byb3ZpZGU6Y3csbXVsdGk6ITAsdXNlVmFsdWU6dH0se3Byb3ZpZGU6b3csbXVsdGk6ITAsdXNlVmFsdWU6W119LHtwcm92aWRlOnN3LG11bHRpOiEwLHVzZUZhY3Rvcnk6aHcsZGVwczpbeWQsY3csb3ddfV19fXN0YXRpYyBmb3JSb290KHQ9W10pe3JldHVybntuZ01vZHVsZTpidyxwcm92aWRlcnM6W3twcm92aWRlOmF3LHVzZUZhY3Rvcnk6X3csZGVwczpbW2d3LG5ldyBOZSxuZXcgTGVdXX0se3Byb3ZpZGU6bHcsdXNlVmFsdWU6S3Z9LGd3LG13LCR2LHQse3Byb3ZpZGU6cncsdXNlVmFsdWU6W3RdfSx7cHJvdmlkZTpvdyxtdWx0aTohMCx1c2VWYWx1ZTpbXX0se3Byb3ZpZGU6aXcsdXNlRmFjdG9yeTpodyxkZXBzOlt5ZCxydyxvd119XX19fWZ1bmN0aW9uIGh3KHQsbixlKXtjb25zdCBhPVtdO2ZvcihsZXQgdCBvZiBuKWEucHVzaCguLi50KTtmb3IobGV0IHQgb2YgZSlhLnB1c2goLi4udCk7cmV0dXJuKGZ1bmN0aW9uIG8odCxuKXtyZXR1cm4gbi5tYXAoKG49PnQuZ2V0KG4pKSl9KSh0LGEpfWZ1bmN0aW9uIF93KHQpe2lmKHQpdGhyb3cgbmV3IFR5cGVFcnJvcigiRWZmZWN0c01vZHVsZS5mb3JSb290KCkgY2FsbGVkIHR3aWNlLiBGZWF0dXJlIG1vZHVsZXMgc2hvdWxkIHVzZSBFZmZlY3RzTW9kdWxlLmZvckZlYXR1cmUoKSBpbnN0ZWFkLiIpO3JldHVybiJndWFyZGVkIn1mdy7JtW1vZD14byh7dHlwZTpmd30pLGZ3Lsm1aW5qPUdlKHtmYWN0b3J5OmZ1bmN0aW9uIHQobil7cmV0dXJuIG5ldyhufHxmdyl9fSk7Y29uc3QgQ3c9bmV3IEZhKCJbQWxlcnRdIEFjdGlvbi1Uby1BbGVydCBQcm92aWRlciIpO2NsYXNzIE13e2NvbnN0cnVjdG9yKHQpe3RoaXMucHJvdmlkZXJzPW5ldyBNYXA7Zm9yKGNvbnN0IG4gb2YgdHx8W10pZm9yKGNvbnN0IHQgb2Ygbil7aWYodGhpcy5wcm92aWRlcnMuaGFzKHQuYWN0aW9uQ3JlYXRvci50eXBlKSl0aHJvdyBuZXcgUmFuZ2VFcnJvcihgIiR7dC5hY3Rpb25DcmVhdG9yLnR5cGV9IiBpcyBhbHJlYWR5IHJlZ2lzdGVyZWQgZm9yIGFsZXJ0cy4gTXVsdGlwbGUgYWxlcnRzIGZvciB0aGUgc2FtZSBhY3Rpb24gaXMgbm90IGFsbG93ZWQuYCk7dGhpcy5wcm92aWRlcnMuc2V0KHQuYWN0aW9uQ3JlYXRvci50eXBlLHQuYWxlcnRGcm9tQWN0aW9uKX19Z2V0QWxlcnRGcm9tQWN0aW9uKHQpe2NvbnN0IG49dGhpcy5wcm92aWRlcnMuZ2V0KHQudHlwZSk7cmV0dXJuIG4/bih0KTpudWxsfXN0YXRpYyByZWdpc3RlckFsZXJ0QWN0aW9ucyh0KXtyZXR1cm57bmdNb2R1bGU6TXcscHJvdmlkZXJzOlt7cHJvdmlkZTpDdyxtdWx0aTohMCx1c2VGYWN0b3J5OnR9XX19fU13Lsm1bW9kPXhvKHt0eXBlOk13fSksTXcuybVpbmo9R2Uoe2ZhY3Rvcnk6ZnVuY3Rpb24gdChuKXtyZXR1cm4gbmV3KG58fE13KShaYShDdyw4KSl9fSk7Y29uc3QgT3c9T2soIltBbGVydF0gQWxlcnQgUmVwb3J0ZWQiLHtfYXM6InByb3BzIixfcDp2b2lkIDB9KTtjbGFzcyBQd3tjb25zdHJ1Y3Rvcih0LG4sZSl7dGhpcy5hY3Rpb25zJD10LHRoaXMuc3RvcmU9bix0aGlzLmFsZXJ0QWN0aW9uTW9kdWxlPWUsdGhpcy5yZXBvcnRSZWdpc3RlcmVkQWN0aW9uQWxlcnRzJD1ZdigoKCk9PnRoaXMuYWN0aW9ucyQucGlwZShoZSgodD0+e2NvbnN0IG49dGhpcy5hbGVydEFjdGlvbk1vZHVsZS5nZXRBbGVydEZyb21BY3Rpb24odCk7biYmdGhpcy5zdG9yZS5kaXNwYXRjaChPdyhuKSl9KSkpKSx7ZGlzcGF0Y2g6ITF9KX19UHcuybVmYWM9ZnVuY3Rpb24gdChuKXtyZXR1cm4gbmV3KG58fFB3KShaYSgkdiksWmEoY3YpLFphKE13KSl9LFB3Lsm1cHJvdj1XZSh7dG9rZW46UHcsZmFjdG9yeTpQdy7JtWZhY30pO2NvbnN0IHh3PVV2KHtsYXRlc3RBbGVydDpudWxsfSxqdihPdywoKHQse2xvY2FsaXplZE1lc3NhZ2U6bixmb2xsb3d1cEFjdGlvbjplfSk9Pk9iamVjdC5hc3NpZ24oT2JqZWN0LmFzc2lnbih7fSx0KSx7bGF0ZXN0QWxlcnQ6e2xvY2FsaXplZE1lc3NhZ2U6bixmb2xsb3d1cEFjdGlvbjplLGNyZWF0ZWQ6RGF0ZS5ub3coKX19KSkpKSx5dz0iYWxlcnRzIixrdz1wdih1dih5dyksKHQ9PnQubGF0ZXN0QWxlcnQpKTtsZXQgdncsd3c7dHJ5e3Z3PSJ1bmRlZmluZWQiIT10eXBlb2YgSW50bCYmSW50bC52OEJyZWFrSXRlcmF0b3J9Y2F0Y2godCl7dnc9ITF9Y2xhc3MgU3d7Y29uc3RydWN0b3IodCl7dGhpcy5fcGxhdGZvcm1JZD10LHRoaXMuaXNCcm93c2VyPXRoaXMuX3BsYXRmb3JtSWQ/KGZ1bmN0aW9uIG4odCl7cmV0dXJuImJyb3dzZXIiPT09dH0pKHRoaXMuX3BsYXRmb3JtSWQpOiJvYmplY3QiPT10eXBlb2YgZG9jdW1lbnQmJiEhZG9jdW1lbnQsdGhpcy5FREdFPXRoaXMuaXNCcm93c2VyJiYvKGVkZ2UpL2kudGVzdChuYXZpZ2F0b3IudXNlckFnZW50KSx0aGlzLlRSSURFTlQ9dGhpcy5pc0Jyb3dzZXImJi8obXNpZXx0cmlkZW50KS9pLnRlc3QobmF2aWdhdG9yLnVzZXJBZ2VudCksdGhpcy5CTElOSz10aGlzLmlzQnJvd3NlciYmISghd2luZG93LmNocm9tZSYmIXZ3KSYmInVuZGVmaW5lZCIhPXR5cGVvZiBDU1MmJiF0aGlzLkVER0UmJiF0aGlzLlRSSURFTlQsdGhpcy5XRUJLSVQ9dGhpcy5pc0Jyb3dzZXImJi9BcHBsZVdlYktpdC9pLnRlc3QobmF2aWdhdG9yLnVzZXJBZ2VudCkmJiF0aGlzLkJMSU5LJiYhdGhpcy5FREdFJiYhdGhpcy5UUklERU5ULHRoaXMuSU9TPXRoaXMuaXNCcm93c2VyJiYvaVBhZHxpUGhvbmV8aVBvZC8udGVzdChuYXZpZ2F0b3IudXNlckFnZW50KSYmISgiTVNTdHJlYW0iaW4gd2luZG93KSx0aGlzLkZJUkVGT1g9dGhpcy5pc0Jyb3dzZXImJi8oZmlyZWZveHxtaW5lZmllbGQpL2kudGVzdChuYXZpZ2F0b3IudXNlckFnZW50KSx0aGlzLkFORFJPSUQ9dGhpcy5pc0Jyb3dzZXImJi9hbmRyb2lkL2kudGVzdChuYXZpZ2F0b3IudXNlckFnZW50KSYmIXRoaXMuVFJJREVOVCx0aGlzLlNBRkFSST10aGlzLmlzQnJvd3NlciYmL3NhZmFyaS9pLnRlc3QobmF2aWdhdG9yLnVzZXJBZ2VudCkmJnRoaXMuV0VCS0lUfX1Tdy7JtWZhYz1mdW5jdGlvbiB0KG4pe3JldHVybiBuZXcobnx8U3cpKFphKFRfKSl9LFN3Lsm1cHJvdj1XZSh7ZmFjdG9yeTpmdW5jdGlvbiB0KCl7cmV0dXJuIG5ldyBTdyhaYShUXykpfSx0b2tlbjpTdyxwcm92aWRlZEluOiJyb290In0pLFN3LmN0b3JQYXJhbWV0ZXJzPSgpPT5be3R5cGU6T2JqZWN0LGRlY29yYXRvcnM6W3t0eXBlOkllLGFyZ3M6W1RfXX1dfV0KLyoqCiAgICAgKiBAbGljZW5zZQogICAgICogQ29weXJpZ2h0IEdvb2dsZSBMTEMgQWxsIFJpZ2h0cyBSZXNlcnZlZC4KICAgICAqCiAgICAgKiBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhbiBNSVQtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQogICAgICogZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZSBhdCBodHRwczovL2FuZ3VsYXIuaW8vbGljZW5zZQogICAgICovO2NsYXNzIEV3e31Fdy7JtW1vZD14byh7dHlwZTpFd30pLEV3Lsm1aW5qPUdlKHtmYWN0b3J5OmZ1bmN0aW9uIHQobil7cmV0dXJuIG5ldyhufHxFdyl9fSk7Y29uc3QgQXc9WyJjb2xvciIsImJ1dHRvbiIsImNoZWNrYm94IiwiZGF0ZSIsImRhdGV0aW1lLWxvY2FsIiwiZW1haWwiLCJmaWxlIiwiaGlkZGVuIiwiaW1hZ2UiLCJtb250aCIsIm51bWJlciIsInBhc3N3b3JkIiwicmFkaW8iLCJyYW5nZSIsInJlc2V0Iiwic2VhcmNoIiwic3VibWl0IiwidGVsIiwidGV4dCIsInRpbWUiLCJ1cmwiLCJ3ZWVrIl07ZnVuY3Rpb24gencoKXtpZih3dylyZXR1cm4gd3c7aWYoIm9iamVjdCIhPXR5cGVvZiBkb2N1bWVudHx8IWRvY3VtZW50KXJldHVybiB3dz1uZXcgU2V0KEF3KSx3dztsZXQgdD1kb2N1bWVudC5jcmVhdGVFbGVtZW50KCJpbnB1dCIpO3JldHVybiB3dz1uZXcgU2V0KEF3LmZpbHRlcigobj0+KHQuc2V0QXR0cmlidXRlKCJ0eXBlIixuKSx0LnR5cGU9PT1uKSkpKSx3d30KLyoqCiAgICAgKiBAbGljZW5zZQogICAgICogQ29weXJpZ2h0IEdvb2dsZSBMTEMgQWxsIFJpZ2h0cyBSZXNlcnZlZC4KICAgICAqCiAgICAgKiBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhbiBNSVQtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQogICAgICogZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZSBhdCBodHRwczovL2FuZ3VsYXIuaW8vbGljZW5zZQogICAgICovbGV0IFJ3LFR3LER3LEl3O2Z1bmN0aW9uIE53KHQpe3JldHVybihmdW5jdGlvbiBuKCl7aWYobnVsbD09UncmJiJ1bmRlZmluZWQiIT10eXBlb2Ygd2luZG93KXRyeXt3aW5kb3cuYWRkRXZlbnRMaXN0ZW5lcigidGVzdCIsbnVsbCxPYmplY3QuZGVmaW5lUHJvcGVydHkoe30sInBhc3NpdmUiLHtnZXQ6KCk9PlJ3PSEwfSkpfWZpbmFsbHl7Unc9Und8fCExfXJldHVybiBSd30pKCk/dDohIXQuY2FwdHVyZX0KLyoqCiAgICAgKiBAbGljZW5zZQogICAgICogQ29weXJpZ2h0IEdvb2dsZSBMTEMgQWxsIFJpZ2h0cyBSZXNlcnZlZC4KICAgICAqCiAgICAgKiBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhbiBNSVQtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQogICAgICogZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZSBhdCBodHRwczovL2FuZ3VsYXIuaW8vbGljZW5zZQogICAgICovZnVuY3Rpb24gRncoKXtpZigib2JqZWN0IiE9dHlwZW9mIGRvY3VtZW50fHwhZG9jdW1lbnQpcmV0dXJuIDA7aWYobnVsbD09VHcpe2NvbnN0IHQ9ZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgiZGl2Iiksbj10LnN0eWxlO3QuZGlyPSJydGwiLG4ud2lkdGg9IjFweCIsbi5vdmVyZmxvdz0iYXV0byIsbi52aXNpYmlsaXR5PSJoaWRkZW4iLG4ucG9pbnRlckV2ZW50cz0ibm9uZSIsbi5wb3NpdGlvbj0iYWJzb2x1dGUiO2NvbnN0IGU9ZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgiZGl2IiksYT1lLnN0eWxlO2Eud2lkdGg9IjJweCIsYS5oZWlnaHQ9IjFweCIsdC5hcHBlbmRDaGlsZChlKSxkb2N1bWVudC5ib2R5LmFwcGVuZENoaWxkKHQpLFR3PTAsMD09PXQuc2Nyb2xsTGVmdCYmKHQuc2Nyb2xsTGVmdD0xLFR3PTA9PT10LnNjcm9sbExlZnQ/MToyKSx0LnBhcmVudE5vZGUucmVtb3ZlQ2hpbGQodCl9cmV0dXJuIFR3fQovKioKICAgICAqIEBsaWNlbnNlCiAgICAgKiBDb3B5cmlnaHQgR29vZ2xlIExMQyBBbGwgUmlnaHRzIFJlc2VydmVkLgogICAgICoKICAgICAqIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGFuIE1JVC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCiAgICAgKiBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlIGF0IGh0dHBzOi8vYW5ndWxhci5pby9saWNlbnNlCiAgICAgKi9mdW5jdGlvbiBMdyh0KXtpZigoZnVuY3Rpb24gbigpe2lmKG51bGw9PUl3KXtjb25zdCB0PSJ1bmRlZmluZWQiIT10eXBlb2YgZG9jdW1lbnQ/ZG9jdW1lbnQuaGVhZDpudWxsO0l3PSEoIXR8fCF0LmNyZWF0ZVNoYWRvd1Jvb3QmJiF0LmF0dGFjaFNoYWRvdyl9cmV0dXJuIEl3fSkoKSl7Y29uc3Qgbj10LmdldFJvb3ROb2RlP3QuZ2V0Um9vdE5vZGUoKTpudWxsO2lmKCJ1bmRlZmluZWQiIT10eXBlb2YgU2hhZG93Um9vdCYmU2hhZG93Um9vdCYmbiBpbnN0YW5jZW9mIFNoYWRvd1Jvb3QpcmV0dXJuIG59cmV0dXJuIG51bGx9Ci8qKgogICAgICogQGxpY2Vuc2UKICAgICAqIENvcHlyaWdodCBHb29nbGUgTExDIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCiAgICAgKgogICAgICogVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYW4gTUlULXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKICAgICAqIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUgYXQgaHR0cHM6Ly9hbmd1bGFyLmlvL2xpY2Vuc2UKICAgICAqL2NvbnN0IEh3PTEzLEJ3PTI3LFZ3PTMyLGp3PTM4LFV3PTQwOwovKioKICAgICAqIEBsaWNlbnNlCiAgICAgKiBDb3B5cmlnaHQgR29vZ2xlIExMQyBBbGwgUmlnaHRzIFJlc2VydmVkLgogICAgICoKICAgICAqIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGFuIE1JVC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCiAgICAgKiBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlIGF0IGh0dHBzOi8vYW5ndWxhci5pby9saWNlbnNlCiAgICAgKi8KZnVuY3Rpb24gV3codCwuLi5uKXtyZXR1cm4gbi5sZW5ndGg/bi5zb21lKChuPT50W25dKSk6dC5hbHRLZXl8fHQuc2hpZnRLZXl8fHQuY3RybEtleXx8dC5tZXRhS2V5fQovKioKICAgICAqIEBsaWNlbnNlCiAgICAgKiBDb3B5cmlnaHQgR29vZ2xlIExMQyBBbGwgUmlnaHRzIFJlc2VydmVkLgogICAgICoKICAgICAqIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGFuIE1JVC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCiAgICAgKiBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlIGF0IGh0dHBzOi8vYW5ndWxhci5pby9saWNlbnNlCiAgICAgKi9mdW5jdGlvbiBHdyh0KXtyZXR1cm4gbnVsbCE9dCYmImZhbHNlIiE9YCR7dH1gfQovKioKICAgICAqIEBsaWNlbnNlCiAgICAgKiBDb3B5cmlnaHQgR29vZ2xlIExMQyBBbGwgUmlnaHRzIFJlc2VydmVkLgogICAgICoKICAgICAqIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGFuIE1JVC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCiAgICAgKiBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlIGF0IGh0dHBzOi8vYW5ndWxhci5pby9saWNlbnNlCiAgICAgKi9mdW5jdGlvbiBZdyh0LG49MCl7cmV0dXJuIHF3KHQpP051bWJlcih0KTpufWZ1bmN0aW9uIHF3KHQpe3JldHVybiFpc05hTihwYXJzZUZsb2F0KHQpKSYmIWlzTmFOKE51bWJlcih0KSl9Ci8qKgogICAgICogQGxpY2Vuc2UKICAgICAqIENvcHlyaWdodCBHb29nbGUgTExDIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCiAgICAgKgogICAgICogVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYW4gTUlULXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKICAgICAqIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUgYXQgaHR0cHM6Ly9hbmd1bGFyLmlvL2xpY2Vuc2UKICAgICAqL2Z1bmN0aW9uIFp3KHQpe3JldHVybiBBcnJheS5pc0FycmF5KHQpP3Q6W3RdfQovKioKICAgICAqIEBsaWNlbnNlCiAgICAgKiBDb3B5cmlnaHQgR29vZ2xlIExMQyBBbGwgUmlnaHRzIFJlc2VydmVkLgogICAgICoKICAgICAqIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGFuIE1JVC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCiAgICAgKiBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlIGF0IGh0dHBzOi8vYW5ndWxhci5pby9saWNlbnNlCiAgICAgKi9mdW5jdGlvbiBYdyh0KXtyZXR1cm4gbnVsbD09dD8iIjoic3RyaW5nIj09dHlwZW9mIHQ/dDpgJHt0fXB4YH0KLyoqCiAgICAgKiBAbGljZW5zZQogICAgICogQ29weXJpZ2h0IEdvb2dsZSBMTEMgQWxsIFJpZ2h0cyBSZXNlcnZlZC4KICAgICAqCiAgICAgKiBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhbiBNSVQtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQogICAgICogZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZSBhdCBodHRwczovL2FuZ3VsYXIuaW8vbGljZW5zZQogICAgICovZnVuY3Rpb24gSncodCl7cmV0dXJuIHQgaW5zdGFuY2VvZiB4dT90Lm5hdGl2ZUVsZW1lbnQ6dH1jbGFzcyBRd3tjcmVhdGUodCl7cmV0dXJuInVuZGVmaW5lZCI9PXR5cGVvZiBNdXRhdGlvbk9ic2VydmVyP251bGw6bmV3IE11dGF0aW9uT2JzZXJ2ZXIodCl9fVF3Lsm1ZmFjPWZ1bmN0aW9uIHQobil7cmV0dXJuIG5ldyhufHxRdyl9LFF3Lsm1cHJvdj1XZSh7ZmFjdG9yeTpmdW5jdGlvbiB0KCl7cmV0dXJuIG5ldyBRd30sdG9rZW46UXcscHJvdmlkZWRJbjoicm9vdCJ9KTtjbGFzcyBLd3tjb25zdHJ1Y3Rvcih0KXt0aGlzLl9tdXRhdGlvbk9ic2VydmVyRmFjdG9yeT10LHRoaXMuX29ic2VydmVkRWxlbWVudHM9bmV3IE1hcH1uZ09uRGVzdHJveSgpe3RoaXMuX29ic2VydmVkRWxlbWVudHMuZm9yRWFjaCgoKHQsbik9PnRoaXMuX2NsZWFudXBPYnNlcnZlcihuKSkpfW9ic2VydmUodCl7Y29uc3Qgbj1Kdyh0KTtyZXR1cm4gbmV3IF8oKHQ9Pntjb25zdCBlPXRoaXMuX29ic2VydmVFbGVtZW50KG4pLnN1YnNjcmliZSh0KTtyZXR1cm4oKT0+e2UudW5zdWJzY3JpYmUoKSx0aGlzLl91bm9ic2VydmVFbGVtZW50KG4pfX0pKX1fb2JzZXJ2ZUVsZW1lbnQodCl7aWYodGhpcy5fb2JzZXJ2ZWRFbGVtZW50cy5oYXModCkpdGhpcy5fb2JzZXJ2ZWRFbGVtZW50cy5nZXQodCkuY291bnQrKztlbHNle2NvbnN0IG49bmV3IHgsZT10aGlzLl9tdXRhdGlvbk9ic2VydmVyRmFjdG9yeS5jcmVhdGUoKHQ9Pm4ubmV4dCh0KSkpO2UmJmUub2JzZXJ2ZSh0LHtjaGFyYWN0ZXJEYXRhOiEwLGNoaWxkTGlzdDohMCxzdWJ0cmVlOiEwfSksdGhpcy5fb2JzZXJ2ZWRFbGVtZW50cy5zZXQodCx7b2JzZXJ2ZXI6ZSxzdHJlYW06bixjb3VudDoxfSl9cmV0dXJuIHRoaXMuX29ic2VydmVkRWxlbWVudHMuZ2V0KHQpLnN0cmVhbX1fdW5vYnNlcnZlRWxlbWVudCh0KXt0aGlzLl9vYnNlcnZlZEVsZW1lbnRzLmhhcyh0KSYmKHRoaXMuX29ic2VydmVkRWxlbWVudHMuZ2V0KHQpLmNvdW50LS0sdGhpcy5fb2JzZXJ2ZWRFbGVtZW50cy5nZXQodCkuY291bnR8fHRoaXMuX2NsZWFudXBPYnNlcnZlcih0KSl9X2NsZWFudXBPYnNlcnZlcih0KXtpZih0aGlzLl9vYnNlcnZlZEVsZW1lbnRzLmhhcyh0KSl7Y29uc3R7b2JzZXJ2ZXI6bixzdHJlYW06ZX09dGhpcy5fb2JzZXJ2ZWRFbGVtZW50cy5nZXQodCk7biYmbi5kaXNjb25uZWN0KCksZS5jb21wbGV0ZSgpLHRoaXMuX29ic2VydmVkRWxlbWVudHMuZGVsZXRlKHQpfX19S3cuybVmYWM9ZnVuY3Rpb24gdChuKXtyZXR1cm4gbmV3KG58fEt3KShaYShRdykpfSxLdy7JtXByb3Y9V2Uoe2ZhY3Rvcnk6ZnVuY3Rpb24gdCgpe3JldHVybiBuZXcgS3coWmEoUXcpKX0sdG9rZW46S3cscHJvdmlkZWRJbjoicm9vdCJ9KSxLdy5jdG9yUGFyYW1ldGVycz0oKT0+W3t0eXBlOlF3fV07Y2xhc3MgJHd7Y29uc3RydWN0b3IodCxuLGUpe3RoaXMuX2NvbnRlbnRPYnNlcnZlcj10LHRoaXMuX2VsZW1lbnRSZWY9bix0aGlzLl9uZ1pvbmU9ZSx0aGlzLmV2ZW50PW5ldyBFZix0aGlzLl9kaXNhYmxlZD0hMSx0aGlzLl9jdXJyZW50U3Vic2NyaXB0aW9uPW51bGx9Z2V0IGRpc2FibGVkKCl7cmV0dXJuIHRoaXMuX2Rpc2FibGVkfXNldCBkaXNhYmxlZCh0KXt0aGlzLl9kaXNhYmxlZD1Hdyh0KSx0aGlzLl9kaXNhYmxlZD90aGlzLl91bnN1YnNjcmliZSgpOnRoaXMuX3N1YnNjcmliZSgpfWdldCBkZWJvdW5jZSgpe3JldHVybiB0aGlzLl9kZWJvdW5jZX1zZXQgZGVib3VuY2UodCl7dGhpcy5fZGVib3VuY2U9WXcodCksdGhpcy5fc3Vic2NyaWJlKCl9bmdBZnRlckNvbnRlbnRJbml0KCl7dGhpcy5fY3VycmVudFN1YnNjcmlwdGlvbnx8dGhpcy5kaXNhYmxlZHx8dGhpcy5fc3Vic2NyaWJlKCl9bmdPbkRlc3Ryb3koKXt0aGlzLl91bnN1YnNjcmliZSgpfV9zdWJzY3JpYmUoKXt0aGlzLl91bnN1YnNjcmliZSgpO2NvbnN0IHQ9dGhpcy5fY29udGVudE9ic2VydmVyLm9ic2VydmUodGhpcy5fZWxlbWVudFJlZik7dGhpcy5fbmdab25lLnJ1bk91dHNpZGVBbmd1bGFyKCgoKT0+e3RoaXMuX2N1cnJlbnRTdWJzY3JpcHRpb249KHRoaXMuZGVib3VuY2U/dC5waXBlKGxuKHRoaXMuZGVib3VuY2UpKTp0KS5zdWJzY3JpYmUodGhpcy5ldmVudCl9KSl9X3Vuc3Vic2NyaWJlKCl7dGhpcy5fY3VycmVudFN1YnNjcmlwdGlvbiYmdGhpcy5fY3VycmVudFN1YnNjcmlwdGlvbi51bnN1YnNjcmliZSgpfX0kdy7JtWZhYz1mdW5jdGlvbiB0KG4pe3JldHVybiBuZXcobnx8JHcpKFpnKEt3KSxaZyh4dSksWmcoSl8pKX0sJHcuybVkaXI9dm8oe3R5cGU6JHcsc2VsZWN0b3JzOltbIiIsImNka09ic2VydmVDb250ZW50IiwiIl1dLGlucHV0czp7ZGlzYWJsZWQ6WyJjZGtPYnNlcnZlQ29udGVudERpc2FibGVkIiwiZGlzYWJsZWQiXSxkZWJvdW5jZToiZGVib3VuY2UifSxvdXRwdXRzOntldmVudDoiY2RrT2JzZXJ2ZUNvbnRlbnQifSxleHBvcnRBczpbImNka09ic2VydmVDb250ZW50Il19KSwkdy5jdG9yUGFyYW1ldGVycz0oKT0+W3t0eXBlOkt3fSx7dHlwZTp4dX0se3R5cGU6Sl99XSwkdy5wcm9wRGVjb3JhdG9ycz17ZXZlbnQ6W3t0eXBlOmhfLGFyZ3M6WyJjZGtPYnNlcnZlQ29udGVudCJdfV0sZGlzYWJsZWQ6W3t0eXBlOmZfLGFyZ3M6WyJjZGtPYnNlcnZlQ29udGVudERpc2FibGVkIl19XSxkZWJvdW5jZTpbe3R5cGU6Zl99XX07Y2xhc3MgdFN7fWZ1bmN0aW9uIG5TKHQsbil7cmV0dXJuKHQuZ2V0QXR0cmlidXRlKG4pfHwiIikubWF0Y2goL1xTKy9nKXx8W119Ci8qKgogICAgICogQGxpY2Vuc2UKICAgICAqIENvcHlyaWdodCBHb29nbGUgTExDIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCiAgICAgKgogICAgICogVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYW4gTUlULXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKICAgICAqIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUgYXQgaHR0cHM6Ly9hbmd1bGFyLmlvL2xpY2Vuc2UKICAgICAqL3RTLsm1bW9kPXhvKHt0eXBlOnRTfSksdFMuybVpbmo9R2Uoe2ZhY3Rvcnk6ZnVuY3Rpb24gdChuKXtyZXR1cm4gbmV3KG58fHRTKX0scHJvdmlkZXJzOltRd119KSwoInVuZGVmaW5lZCI9PXR5cGVvZiBuZ0ppdE1vZGV8fG5nSml0TW9kZSkmJnlvKHRTLHtkZWNsYXJhdGlvbnM6WyR3XSxleHBvcnRzOlskd119KTtjb25zdCBlUz0iY2RrLWRlc2NyaWJlZGJ5LW1lc3NhZ2UtY29udGFpbmVyIixhUz0iY2RrLWRlc2NyaWJlZGJ5LWhvc3QiO2xldCBvUz0wO2NvbnN0IHJTPW5ldyBNYXA7bGV0IGlTPW51bGw7Y2xhc3MgY1N7Y29uc3RydWN0b3IodCxuKXt0aGlzLl9wbGF0Zm9ybT1uLHRoaXMuX2RvY3VtZW50PXR9ZGVzY3JpYmUodCxuKXt0aGlzLl9jYW5CZURlc2NyaWJlZCh0LG4pJiYoInN0cmluZyIhPXR5cGVvZiBuPyh0aGlzLl9zZXRNZXNzYWdlSWQobiksclMuc2V0KG4se21lc3NhZ2VFbGVtZW50Om4scmVmZXJlbmNlQ291bnQ6MH0pKTpyUy5oYXMobil8fHRoaXMuX2NyZWF0ZU1lc3NhZ2VFbGVtZW50KG4pLHRoaXMuX2lzRWxlbWVudERlc2NyaWJlZEJ5TWVzc2FnZSh0LG4pfHx0aGlzLl9hZGRNZXNzYWdlUmVmZXJlbmNlKHQsbikpfXJlbW92ZURlc2NyaXB0aW9uKHQsbil7aWYobiYmdGhpcy5faXNFbGVtZW50Tm9kZSh0KSl7aWYodGhpcy5faXNFbGVtZW50RGVzY3JpYmVkQnlNZXNzYWdlKHQsbikmJnRoaXMuX3JlbW92ZU1lc3NhZ2VSZWZlcmVuY2UodCxuKSwic3RyaW5nIj09dHlwZW9mIG4pe2NvbnN0IHQ9clMuZ2V0KG4pO3QmJjA9PT10LnJlZmVyZW5jZUNvdW50JiZ0aGlzLl9kZWxldGVNZXNzYWdlRWxlbWVudChuKX1pUyYmMD09PWlTLmNoaWxkTm9kZXMubGVuZ3RoJiZ0aGlzLl9kZWxldGVNZXNzYWdlc0NvbnRhaW5lcigpfX1uZ09uRGVzdHJveSgpe2NvbnN0IHQ9dGhpcy5fZG9jdW1lbnQucXVlcnlTZWxlY3RvckFsbCgiW2Nkay1kZXNjcmliZWRieS1ob3N0XSIpO2ZvcihsZXQgbj0wO248dC5sZW5ndGg7bisrKXRoaXMuX3JlbW92ZUNka0Rlc2NyaWJlZEJ5UmVmZXJlbmNlSWRzKHRbbl0pLHRbbl0ucmVtb3ZlQXR0cmlidXRlKGFTKTtpUyYmdGhpcy5fZGVsZXRlTWVzc2FnZXNDb250YWluZXIoKSxyUy5jbGVhcigpfV9jcmVhdGVNZXNzYWdlRWxlbWVudCh0KXtjb25zdCBuPXRoaXMuX2RvY3VtZW50LmNyZWF0ZUVsZW1lbnQoImRpdiIpO3RoaXMuX3NldE1lc3NhZ2VJZChuKSxuLnRleHRDb250ZW50PXQsdGhpcy5fY3JlYXRlTWVzc2FnZXNDb250YWluZXIoKSxpUy5hcHBlbmRDaGlsZChuKSxyUy5zZXQodCx7bWVzc2FnZUVsZW1lbnQ6bixyZWZlcmVuY2VDb3VudDowfSl9X3NldE1lc3NhZ2VJZCh0KXt0LmlkfHwodC5pZD0iY2RrLWRlc2NyaWJlZGJ5LW1lc3NhZ2UtIitvUysrKX1fZGVsZXRlTWVzc2FnZUVsZW1lbnQodCl7Y29uc3Qgbj1yUy5nZXQodCksZT1uJiZuLm1lc3NhZ2VFbGVtZW50O2lTJiZlJiZpUy5yZW1vdmVDaGlsZChlKSxyUy5kZWxldGUodCl9X2NyZWF0ZU1lc3NhZ2VzQ29udGFpbmVyKCl7aWYoIWlTKXtjb25zdCB0PSF0aGlzLl9wbGF0Zm9ybXx8IXRoaXMuX3BsYXRmb3JtLkVER0UmJiF0aGlzLl9wbGF0Zm9ybS5UUklERU5ULG49dGhpcy5fZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoZVMpO24mJm4ucGFyZW50Tm9kZSYmbi5wYXJlbnROb2RlLnJlbW92ZUNoaWxkKG4pLGlTPXRoaXMuX2RvY3VtZW50LmNyZWF0ZUVsZW1lbnQoImRpdiIpLGlTLmlkPWVTLGlTLmNsYXNzTGlzdC5hZGQoImNkay12aXN1YWxseS1oaWRkZW4iKSxpUy5zZXRBdHRyaWJ1dGUoImFyaWEtaGlkZGVuIix0KyIiKSx0aGlzLl9kb2N1bWVudC5ib2R5LmFwcGVuZENoaWxkKGlTKX19X2RlbGV0ZU1lc3NhZ2VzQ29udGFpbmVyKCl7aVMmJmlTLnBhcmVudE5vZGUmJihpUy5wYXJlbnROb2RlLnJlbW92ZUNoaWxkKGlTKSxpUz1udWxsKX1fcmVtb3ZlQ2RrRGVzY3JpYmVkQnlSZWZlcmVuY2VJZHModCl7Y29uc3Qgbj1uUyh0LCJhcmlhLWRlc2NyaWJlZGJ5IikuZmlsdGVyKCh0PT4wIT10LmluZGV4T2YoImNkay1kZXNjcmliZWRieS1tZXNzYWdlIikpKTt0LnNldEF0dHJpYnV0ZSgiYXJpYS1kZXNjcmliZWRieSIsbi5qb2luKCIgIikpfV9hZGRNZXNzYWdlUmVmZXJlbmNlKHQsbil7Y29uc3QgZT1yUy5nZXQobik7IShmdW5jdGlvbiBhKHQsbixlKXtjb25zdCBhPW5TKHQsbik7YS5zb21lKCh0PT50LnRyaW0oKT09ZS50cmltKCkpKXx8KGEucHVzaChlLnRyaW0oKSksdC5zZXRBdHRyaWJ1dGUobixhLmpvaW4oIiAiKSkpfSkodCwiYXJpYS1kZXNjcmliZWRieSIsZS5tZXNzYWdlRWxlbWVudC5pZCksdC5zZXRBdHRyaWJ1dGUoYVMsIiIpLGUucmVmZXJlbmNlQ291bnQrK31fcmVtb3ZlTWVzc2FnZVJlZmVyZW5jZSh0LG4pe2NvbnN0IGU9clMuZ2V0KG4pO2UucmVmZXJlbmNlQ291bnQtLSwoZnVuY3Rpb24gYSh0LG4sZSl7Y29uc3QgYT1uUyh0LG4pLmZpbHRlcigodD0+dCE9ZS50cmltKCkpKTthLmxlbmd0aD90LnNldEF0dHJpYnV0ZShuLGEuam9pbigiICIpKTp0LnJlbW92ZUF0dHJpYnV0ZShuKX0pKHQsImFyaWEtZGVzY3JpYmVkYnkiLGUubWVzc2FnZUVsZW1lbnQuaWQpLHQucmVtb3ZlQXR0cmlidXRlKGFTKX1faXNFbGVtZW50RGVzY3JpYmVkQnlNZXNzYWdlKHQsbil7Y29uc3QgZT1uUyh0LCJhcmlhLWRlc2NyaWJlZGJ5IiksYT1yUy5nZXQobiksbz1hJiZhLm1lc3NhZ2VFbGVtZW50LmlkO3JldHVybiEhbyYmLTEhPWUuaW5kZXhPZihvKX1fY2FuQmVEZXNjcmliZWQodCxuKXtpZighdGhpcy5faXNFbGVtZW50Tm9kZSh0KSlyZXR1cm4hMTtpZihuJiYib2JqZWN0Ij09dHlwZW9mIG4pcmV0dXJuITA7Y29uc3QgZT1udWxsPT1uPyIiOmAke259YC50cmltKCksYT10LmdldEF0dHJpYnV0ZSgiYXJpYS1sYWJlbCIpO3JldHVybiEoIWV8fGEmJmEudHJpbSgpPT09ZSl9X2lzRWxlbWVudE5vZGUodCl7cmV0dXJuIHQubm9kZVR5cGU9PT10aGlzLl9kb2N1bWVudC5FTEVNRU5UX05PREV9fWNTLsm1ZmFjPWZ1bmN0aW9uIHQobil7cmV0dXJuIG5ldyhufHxjUykoWmEoekMpLFphKFN3KSl9LGNTLsm1cHJvdj1XZSh7ZmFjdG9yeTpmdW5jdGlvbiB0KCl7cmV0dXJuIG5ldyBjUyhaYSh6QyksWmEoU3cpKX0sdG9rZW46Y1MscHJvdmlkZWRJbjoicm9vdCJ9KSxjUy5jdG9yUGFyYW1ldGVycz0oKT0+W3t0eXBlOnZvaWQgMCxkZWNvcmF0b3JzOlt7dHlwZTpJZSxhcmdzOlt6Q119XX0se3R5cGU6U3d9XQovKioKICAgICAqIEBsaWNlbnNlCiAgICAgKiBDb3B5cmlnaHQgR29vZ2xlIExMQyBBbGwgUmlnaHRzIFJlc2VydmVkLgogICAgICoKICAgICAqIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGFuIE1JVC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCiAgICAgKiBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlIGF0IGh0dHBzOi8vYW5ndWxhci5pby9saWNlbnNlCiAgICAgKi87Y2xhc3Mgc1N7Y29uc3RydWN0b3IodCl7dGhpcy5faXRlbXM9dCx0aGlzLl9hY3RpdmVJdGVtSW5kZXg9LTEsdGhpcy5fYWN0aXZlSXRlbT1udWxsLHRoaXMuX3dyYXA9ITEsdGhpcy5fbGV0dGVyS2V5U3RyZWFtPW5ldyB4LHRoaXMuX3R5cGVhaGVhZFN1YnNjcmlwdGlvbj1zLkVNUFRZLHRoaXMuX3ZlcnRpY2FsPSEwLHRoaXMuX2FsbG93ZWRNb2RpZmllcktleXM9W10sdGhpcy5faG9tZUFuZEVuZD0hMSx0aGlzLl9za2lwUHJlZGljYXRlRm49dD0+dC5kaXNhYmxlZCx0aGlzLl9wcmVzc2VkTGV0dGVycz1bXSx0aGlzLnRhYk91dD1uZXcgeCx0aGlzLmNoYW5nZT1uZXcgeCx0IGluc3RhbmNlb2YgemYmJnQuY2hhbmdlcy5zdWJzY3JpYmUoKHQ9PntpZih0aGlzLl9hY3RpdmVJdGVtKXtjb25zdCBuPXQudG9BcnJheSgpLmluZGV4T2YodGhpcy5fYWN0aXZlSXRlbSk7bj4tMSYmbiE9PXRoaXMuX2FjdGl2ZUl0ZW1JbmRleCYmKHRoaXMuX2FjdGl2ZUl0ZW1JbmRleD1uKX19KSl9c2tpcFByZWRpY2F0ZSh0KXtyZXR1cm4gdGhpcy5fc2tpcFByZWRpY2F0ZUZuPXQsdGhpc313aXRoV3JhcCh0PSEwKXtyZXR1cm4gdGhpcy5fd3JhcD10LHRoaXN9d2l0aFZlcnRpY2FsT3JpZW50YXRpb24odD0hMCl7cmV0dXJuIHRoaXMuX3ZlcnRpY2FsPXQsdGhpc313aXRoSG9yaXpvbnRhbE9yaWVudGF0aW9uKHQpe3JldHVybiB0aGlzLl9ob3Jpem9udGFsPXQsdGhpc313aXRoQWxsb3dlZE1vZGlmaWVyS2V5cyh0KXtyZXR1cm4gdGhpcy5fYWxsb3dlZE1vZGlmaWVyS2V5cz10LHRoaXN9d2l0aFR5cGVBaGVhZCh0PTIwMCl7aWYoKCJ1bmRlZmluZWQiPT10eXBlb2YgbmdEZXZNb2RlfHxuZ0Rldk1vZGUpJiZ0aGlzLl9pdGVtcy5sZW5ndGgmJnRoaXMuX2l0ZW1zLnNvbWUoKHQ9PiJmdW5jdGlvbiIhPXR5cGVvZiB0LmdldExhYmVsKSkpdGhyb3cgRXJyb3IoIkxpc3RLZXlNYW5hZ2VyIGl0ZW1zIGluIHR5cGVhaGVhZCBtb2RlIG11c3QgaW1wbGVtZW50IHRoZSBgZ2V0TGFiZWxgIG1ldGhvZC4iKTtyZXR1cm4gdGhpcy5fdHlwZWFoZWFkU3Vic2NyaXB0aW9uLnVuc3Vic2NyaWJlKCksdGhpcy5fdHlwZWFoZWFkU3Vic2NyaXB0aW9uPXRoaXMuX2xldHRlcktleVN0cmVhbS5waXBlKGhlKCh0PT50aGlzLl9wcmVzc2VkTGV0dGVycy5wdXNoKHQpKSksbG4odCksR3QoKCgpPT50aGlzLl9wcmVzc2VkTGV0dGVycy5sZW5ndGg+MCkpLGZ0KCgoKT0+dGhpcy5fcHJlc3NlZExldHRlcnMuam9pbigiIikpKSkuc3Vic2NyaWJlKCh0PT57Y29uc3Qgbj10aGlzLl9nZXRJdGVtc0FycmF5KCk7Zm9yKGxldCBlPTE7ZTxuLmxlbmd0aCsxO2UrKyl7Y29uc3QgYT0odGhpcy5fYWN0aXZlSXRlbUluZGV4K2UpJW4ubGVuZ3RoLG89blthXTtpZighdGhpcy5fc2tpcFByZWRpY2F0ZUZuKG8pJiYwPT09by5nZXRMYWJlbCgpLnRvVXBwZXJDYXNlKCkudHJpbSgpLmluZGV4T2YodCkpe3RoaXMuc2V0QWN0aXZlSXRlbShhKTticmVha319dGhpcy5fcHJlc3NlZExldHRlcnM9W119KSksdGhpc313aXRoSG9tZUFuZEVuZCh0PSEwKXtyZXR1cm4gdGhpcy5faG9tZUFuZEVuZD10LHRoaXN9c2V0QWN0aXZlSXRlbSh0KXtjb25zdCBuPXRoaXMuX2FjdGl2ZUl0ZW07dGhpcy51cGRhdGVBY3RpdmVJdGVtKHQpLHRoaXMuX2FjdGl2ZUl0ZW0hPT1uJiZ0aGlzLmNoYW5nZS5uZXh0KHRoaXMuX2FjdGl2ZUl0ZW1JbmRleCl9b25LZXlkb3duKHQpe2NvbnN0IG49dC5rZXlDb2RlLGU9WyJhbHRLZXkiLCJjdHJsS2V5IiwibWV0YUtleSIsInNoaWZ0S2V5Il0uZXZlcnkoKG49PiF0W25dfHx0aGlzLl9hbGxvd2VkTW9kaWZpZXJLZXlzLmluZGV4T2Yobik+LTEpKTtzd2l0Y2gobil7Y2FzZSA5OnJldHVybiB2b2lkIHRoaXMudGFiT3V0Lm5leHQoKTtjYXNlIFV3OmlmKHRoaXMuX3ZlcnRpY2FsJiZlKXt0aGlzLnNldE5leHRJdGVtQWN0aXZlKCk7YnJlYWt9cmV0dXJuO2Nhc2Uganc6aWYodGhpcy5fdmVydGljYWwmJmUpe3RoaXMuc2V0UHJldmlvdXNJdGVtQWN0aXZlKCk7YnJlYWt9cmV0dXJuO2Nhc2UgMzk6aWYodGhpcy5faG9yaXpvbnRhbCYmZSl7InJ0bCI9PT10aGlzLl9ob3Jpem9udGFsP3RoaXMuc2V0UHJldmlvdXNJdGVtQWN0aXZlKCk6dGhpcy5zZXROZXh0SXRlbUFjdGl2ZSgpO2JyZWFrfXJldHVybjtjYXNlIDM3OmlmKHRoaXMuX2hvcml6b250YWwmJmUpeyJydGwiPT09dGhpcy5faG9yaXpvbnRhbD90aGlzLnNldE5leHRJdGVtQWN0aXZlKCk6dGhpcy5zZXRQcmV2aW91c0l0ZW1BY3RpdmUoKTticmVha31yZXR1cm47Y2FzZSAzNjppZih0aGlzLl9ob21lQW5kRW5kJiZlKXt0aGlzLnNldEZpcnN0SXRlbUFjdGl2ZSgpO2JyZWFrfXJldHVybjtjYXNlIDM1OmlmKHRoaXMuX2hvbWVBbmRFbmQmJmUpe3RoaXMuc2V0TGFzdEl0ZW1BY3RpdmUoKTticmVha31yZXR1cm47ZGVmYXVsdDpyZXR1cm4gdm9pZCgoZXx8V3codCwic2hpZnRLZXkiKSkmJih0LmtleSYmMT09PXQua2V5Lmxlbmd0aD90aGlzLl9sZXR0ZXJLZXlTdHJlYW0ubmV4dCh0LmtleS50b0xvY2FsZVVwcGVyQ2FzZSgpKToobj49NjUmJm48PTkwfHxuPj00OCYmbjw9NTcpJiZ0aGlzLl9sZXR0ZXJLZXlTdHJlYW0ubmV4dChTdHJpbmcuZnJvbUNoYXJDb2RlKG4pKSkpfXRoaXMuX3ByZXNzZWRMZXR0ZXJzPVtdLHQucHJldmVudERlZmF1bHQoKX1nZXQgYWN0aXZlSXRlbUluZGV4KCl7cmV0dXJuIHRoaXMuX2FjdGl2ZUl0ZW1JbmRleH1nZXQgYWN0aXZlSXRlbSgpe3JldHVybiB0aGlzLl9hY3RpdmVJdGVtfWlzVHlwaW5nKCl7cmV0dXJuIHRoaXMuX3ByZXNzZWRMZXR0ZXJzLmxlbmd0aD4wfXNldEZpcnN0SXRlbUFjdGl2ZSgpe3RoaXMuX3NldEFjdGl2ZUl0ZW1CeUluZGV4KDAsMSl9c2V0TGFzdEl0ZW1BY3RpdmUoKXt0aGlzLl9zZXRBY3RpdmVJdGVtQnlJbmRleCh0aGlzLl9pdGVtcy5sZW5ndGgtMSwtMSl9c2V0TmV4dEl0ZW1BY3RpdmUoKXt0aGlzLl9hY3RpdmVJdGVtSW5kZXg8MD90aGlzLnNldEZpcnN0SXRlbUFjdGl2ZSgpOnRoaXMuX3NldEFjdGl2ZUl0ZW1CeURlbHRhKDEpfXNldFByZXZpb3VzSXRlbUFjdGl2ZSgpe3RoaXMuX2FjdGl2ZUl0ZW1JbmRleDwwJiZ0aGlzLl93cmFwP3RoaXMuc2V0TGFzdEl0ZW1BY3RpdmUoKTp0aGlzLl9zZXRBY3RpdmVJdGVtQnlEZWx0YSgtMSl9dXBkYXRlQWN0aXZlSXRlbSh0KXtjb25zdCBuPXRoaXMuX2dldEl0ZW1zQXJyYXkoKSxlPSJudW1iZXIiPT10eXBlb2YgdD90Om4uaW5kZXhPZih0KSxhPW5bZV07dGhpcy5fYWN0aXZlSXRlbT1udWxsPT1hP251bGw6YSx0aGlzLl9hY3RpdmVJdGVtSW5kZXg9ZX1fc2V0QWN0aXZlSXRlbUJ5RGVsdGEodCl7dGhpcy5fd3JhcD90aGlzLl9zZXRBY3RpdmVJbldyYXBNb2RlKHQpOnRoaXMuX3NldEFjdGl2ZUluRGVmYXVsdE1vZGUodCl9X3NldEFjdGl2ZUluV3JhcE1vZGUodCl7Y29uc3Qgbj10aGlzLl9nZXRJdGVtc0FycmF5KCk7Zm9yKGxldCBlPTE7ZTw9bi5sZW5ndGg7ZSsrKXtjb25zdCBhPSh0aGlzLl9hY3RpdmVJdGVtSW5kZXgrdCplK24ubGVuZ3RoKSVuLmxlbmd0aDtpZighdGhpcy5fc2tpcFByZWRpY2F0ZUZuKG5bYV0pKXJldHVybiB2b2lkIHRoaXMuc2V0QWN0aXZlSXRlbShhKX19X3NldEFjdGl2ZUluRGVmYXVsdE1vZGUodCl7dGhpcy5fc2V0QWN0aXZlSXRlbUJ5SW5kZXgodGhpcy5fYWN0aXZlSXRlbUluZGV4K3QsdCl9X3NldEFjdGl2ZUl0ZW1CeUluZGV4KHQsbil7Y29uc3QgZT10aGlzLl9nZXRJdGVtc0FycmF5KCk7aWYoZVt0XSl7Zm9yKDt0aGlzLl9za2lwUHJlZGljYXRlRm4oZVt0XSk7KWlmKCFlW3QrPW5dKXJldHVybjt0aGlzLnNldEFjdGl2ZUl0ZW0odCl9fV9nZXRJdGVtc0FycmF5KCl7cmV0dXJuIHRoaXMuX2l0ZW1zIGluc3RhbmNlb2YgemY/dGhpcy5faXRlbXMudG9BcnJheSgpOnRoaXMuX2l0ZW1zfX0KLyoqCiAgICAgKiBAbGljZW5zZQogICAgICogQ29weXJpZ2h0IEdvb2dsZSBMTEMgQWxsIFJpZ2h0cyBSZXNlcnZlZC4KICAgICAqCiAgICAgKiBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhbiBNSVQtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQogICAgICogZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZSBhdCBodHRwczovL2FuZ3VsYXIuaW8vbGljZW5zZQogICAgICovY2xhc3MgbFMgZXh0ZW5kcyBzU3tzZXRBY3RpdmVJdGVtKHQpe3RoaXMuYWN0aXZlSXRlbSYmdGhpcy5hY3RpdmVJdGVtLnNldEluYWN0aXZlU3R5bGVzKCksc3VwZXIuc2V0QWN0aXZlSXRlbSh0KSx0aGlzLmFjdGl2ZUl0ZW0mJnRoaXMuYWN0aXZlSXRlbS5zZXRBY3RpdmVTdHlsZXMoKX19Ci8qKgogICAgICogQGxpY2Vuc2UKICAgICAqIENvcHlyaWdodCBHb29nbGUgTExDIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCiAgICAgKgogICAgICogVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYW4gTUlULXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKICAgICAqIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUgYXQgaHR0cHM6Ly9hbmd1bGFyLmlvL2xpY2Vuc2UKICAgICAqL2NsYXNzIG1TIGV4dGVuZHMgc1N7Y29uc3RydWN0b3IoKXtzdXBlciguLi5hcmd1bWVudHMpLHRoaXMuX29yaWdpbj0icHJvZ3JhbSJ9c2V0Rm9jdXNPcmlnaW4odCl7cmV0dXJuIHRoaXMuX29yaWdpbj10LHRoaXN9c2V0QWN0aXZlSXRlbSh0KXtzdXBlci5zZXRBY3RpdmVJdGVtKHQpLHRoaXMuYWN0aXZlSXRlbSYmdGhpcy5hY3RpdmVJdGVtLmZvY3VzKHRoaXMuX29yaWdpbil9fWNsYXNzIGRTe2NvbnN0cnVjdG9yKHQpe3RoaXMuX3BsYXRmb3JtPXR9aXNEaXNhYmxlZCh0KXtyZXR1cm4gdC5oYXNBdHRyaWJ1dGUoImRpc2FibGVkIil9aXNWaXNpYmxlKHQpe3JldHVybihmdW5jdGlvbiBuKHQpe3JldHVybiEhKHQub2Zmc2V0V2lkdGh8fHQub2Zmc2V0SGVpZ2h0fHwiZnVuY3Rpb24iPT10eXBlb2YgdC5nZXRDbGllbnRSZWN0cyYmdC5nZXRDbGllbnRSZWN0cygpLmxlbmd0aCl9KSh0KSYmInZpc2libGUiPT09Z2V0Q29tcHV0ZWRTdHlsZSh0KS52aXNpYmlsaXR5fWlzVGFiYmFibGUodCl7aWYoIXRoaXMuX3BsYXRmb3JtLmlzQnJvd3NlcilyZXR1cm4hMTtjb25zdCBuPShmdW5jdGlvbiBhKHQpe3RyeXtyZXR1cm4gdC5mcmFtZUVsZW1lbnR9Y2F0Y2godCl7cmV0dXJuIG51bGx9fSkoKGZ1bmN0aW9uIGUodCl7cmV0dXJuIHQub3duZXJEb2N1bWVudCYmdC5vd25lckRvY3VtZW50LmRlZmF1bHRWaWV3fHx3aW5kb3d9Ci8qKgogICAgICogQGxpY2Vuc2UKICAgICAqIENvcHlyaWdodCBHb29nbGUgTExDIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCiAgICAgKgogICAgICogVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYW4gTUlULXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKICAgICAqIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUgYXQgaHR0cHM6Ly9hbmd1bGFyLmlvL2xpY2Vuc2UKICAgICAqLykodCkpO2lmKG4pe2lmKC0xPT09cFMobikpcmV0dXJuITE7aWYoIXRoaXMuaXNWaXNpYmxlKG4pKXJldHVybiExfWxldCBvPXQubm9kZU5hbWUudG9Mb3dlckNhc2UoKSxyPXBTKHQpO3JldHVybiB0Lmhhc0F0dHJpYnV0ZSgiY29udGVudGVkaXRhYmxlIik/LTEhPT1yOiJpZnJhbWUiIT09byYmIm9iamVjdCIhPT1vJiYhKHRoaXMuX3BsYXRmb3JtLldFQktJVCYmdGhpcy5fcGxhdGZvcm0uSU9TJiYhKGZ1bmN0aW9uIGkodCl7bGV0IG49dC5ub2RlTmFtZS50b0xvd2VyQ2FzZSgpLGU9ImlucHV0Ij09PW4mJnQudHlwZTtyZXR1cm4idGV4dCI9PT1lfHwicGFzc3dvcmQiPT09ZXx8InNlbGVjdCI9PT1ufHwidGV4dGFyZWEiPT09bn0pKHQpKSYmKCJhdWRpbyI9PT1vPyEhdC5oYXNBdHRyaWJ1dGUoImNvbnRyb2xzIikmJi0xIT09cjoidmlkZW8iPT09bz8tMSE9PXImJihudWxsIT09cnx8dGhpcy5fcGxhdGZvcm0uRklSRUZPWHx8dC5oYXNBdHRyaWJ1dGUoImNvbnRyb2xzIikpOnQudGFiSW5kZXg+PTApfWlzRm9jdXNhYmxlKHQsbil7cmV0dXJuKGZ1bmN0aW9uIGUodCl7cmV0dXJuIShmdW5jdGlvbiBuKHQpe3JldHVybihmdW5jdGlvbiBuKHQpe3JldHVybiJpbnB1dCI9PXQubm9kZU5hbWUudG9Mb3dlckNhc2UoKX0pKHQpJiYiaGlkZGVuIj09dC50eXBlfSkodCkmJigoZnVuY3Rpb24gZSh0KXtsZXQgbj10Lm5vZGVOYW1lLnRvTG93ZXJDYXNlKCk7cmV0dXJuImlucHV0Ij09PW58fCJzZWxlY3QiPT09bnx8ImJ1dHRvbiI9PT1ufHwidGV4dGFyZWEiPT09bn0pKHQpfHwoZnVuY3Rpb24gYSh0KXtyZXR1cm4oZnVuY3Rpb24gbih0KXtyZXR1cm4iYSI9PXQubm9kZU5hbWUudG9Mb3dlckNhc2UoKX0pKHQpJiZ0Lmhhc0F0dHJpYnV0ZSgiaHJlZiIpfSkodCl8fHQuaGFzQXR0cmlidXRlKCJjb250ZW50ZWRpdGFibGUiKXx8Z1ModCkpfSkodCkmJiF0aGlzLmlzRGlzYWJsZWQodCkmJigobnVsbD09bj92b2lkIDA6bi5pZ25vcmVWaXNpYmlsaXR5KXx8dGhpcy5pc1Zpc2libGUodCkpfX1mdW5jdGlvbiBnUyh0KXtpZighdC5oYXNBdHRyaWJ1dGUoInRhYmluZGV4Iil8fHZvaWQgMD09PXQudGFiSW5kZXgpcmV0dXJuITE7bGV0IG49dC5nZXRBdHRyaWJ1dGUoInRhYmluZGV4Iik7cmV0dXJuIi0zMjc2OCIhPW4mJiEoIW58fGlzTmFOKHBhcnNlSW50KG4sMTApKSl9ZnVuY3Rpb24gcFModCl7aWYoIWdTKHQpKXJldHVybiBudWxsO2NvbnN0IG49cGFyc2VJbnQodC5nZXRBdHRyaWJ1dGUoInRhYmluZGV4Iil8fCIiLDEwKTtyZXR1cm4gaXNOYU4obik/LTE6bn1kUy7JtWZhYz1mdW5jdGlvbiB0KG4pe3JldHVybiBuZXcobnx8ZFMpKFphKFN3KSl9LGRTLsm1cHJvdj1XZSh7ZmFjdG9yeTpmdW5jdGlvbiB0KCl7cmV0dXJuIG5ldyBkUyhaYShTdykpfSx0b2tlbjpkUyxwcm92aWRlZEluOiJyb290In0pLGRTLmN0b3JQYXJhbWV0ZXJzPSgpPT5be3R5cGU6U3d9XTtjbGFzcyBiU3tjb25zdHJ1Y3Rvcih0LG4sZSxhLG89ITEpe3RoaXMuX2VsZW1lbnQ9dCx0aGlzLl9jaGVja2VyPW4sdGhpcy5fbmdab25lPWUsdGhpcy5fZG9jdW1lbnQ9YSx0aGlzLl9oYXNBdHRhY2hlZD0hMSx0aGlzLnN0YXJ0QW5jaG9yTGlzdGVuZXI9KCk9PnRoaXMuZm9jdXNMYXN0VGFiYmFibGVFbGVtZW50KCksdGhpcy5lbmRBbmNob3JMaXN0ZW5lcj0oKT0+dGhpcy5mb2N1c0ZpcnN0VGFiYmFibGVFbGVtZW50KCksdGhpcy5fZW5hYmxlZD0hMCxvfHx0aGlzLmF0dGFjaEFuY2hvcnMoKX1nZXQgZW5hYmxlZCgpe3JldHVybiB0aGlzLl9lbmFibGVkfXNldCBlbmFibGVkKHQpe3RoaXMuX2VuYWJsZWQ9dCx0aGlzLl9zdGFydEFuY2hvciYmdGhpcy5fZW5kQW5jaG9yJiYodGhpcy5fdG9nZ2xlQW5jaG9yVGFiSW5kZXgodCx0aGlzLl9zdGFydEFuY2hvciksdGhpcy5fdG9nZ2xlQW5jaG9yVGFiSW5kZXgodCx0aGlzLl9lbmRBbmNob3IpKX1kZXN0cm95KCl7Y29uc3QgdD10aGlzLl9zdGFydEFuY2hvcixuPXRoaXMuX2VuZEFuY2hvcjt0JiYodC5yZW1vdmVFdmVudExpc3RlbmVyKCJmb2N1cyIsdGhpcy5zdGFydEFuY2hvckxpc3RlbmVyKSx0LnBhcmVudE5vZGUmJnQucGFyZW50Tm9kZS5yZW1vdmVDaGlsZCh0KSksbiYmKG4ucmVtb3ZlRXZlbnRMaXN0ZW5lcigiZm9jdXMiLHRoaXMuZW5kQW5jaG9yTGlzdGVuZXIpLG4ucGFyZW50Tm9kZSYmbi5wYXJlbnROb2RlLnJlbW92ZUNoaWxkKG4pKSx0aGlzLl9zdGFydEFuY2hvcj10aGlzLl9lbmRBbmNob3I9bnVsbCx0aGlzLl9oYXNBdHRhY2hlZD0hMX1hdHRhY2hBbmNob3JzKCl7cmV0dXJuISF0aGlzLl9oYXNBdHRhY2hlZHx8KHRoaXMuX25nWm9uZS5ydW5PdXRzaWRlQW5ndWxhcigoKCk9Pnt0aGlzLl9zdGFydEFuY2hvcnx8KHRoaXMuX3N0YXJ0QW5jaG9yPXRoaXMuX2NyZWF0ZUFuY2hvcigpLHRoaXMuX3N0YXJ0QW5jaG9yLmFkZEV2ZW50TGlzdGVuZXIoImZvY3VzIix0aGlzLnN0YXJ0QW5jaG9yTGlzdGVuZXIpKSx0aGlzLl9lbmRBbmNob3J8fCh0aGlzLl9lbmRBbmNob3I9dGhpcy5fY3JlYXRlQW5jaG9yKCksdGhpcy5fZW5kQW5jaG9yLmFkZEV2ZW50TGlzdGVuZXIoImZvY3VzIix0aGlzLmVuZEFuY2hvckxpc3RlbmVyKSl9KSksdGhpcy5fZWxlbWVudC5wYXJlbnROb2RlJiYodGhpcy5fZWxlbWVudC5wYXJlbnROb2RlLmluc2VydEJlZm9yZSh0aGlzLl9zdGFydEFuY2hvcix0aGlzLl9lbGVtZW50KSx0aGlzLl9lbGVtZW50LnBhcmVudE5vZGUuaW5zZXJ0QmVmb3JlKHRoaXMuX2VuZEFuY2hvcix0aGlzLl9lbGVtZW50Lm5leHRTaWJsaW5nKSx0aGlzLl9oYXNBdHRhY2hlZD0hMCksdGhpcy5faGFzQXR0YWNoZWQpfWZvY3VzSW5pdGlhbEVsZW1lbnRXaGVuUmVhZHkoKXtyZXR1cm4gbmV3IFByb21pc2UoKHQ9Pnt0aGlzLl9leGVjdXRlT25TdGFibGUoKCgpPT50KHRoaXMuZm9jdXNJbml0aWFsRWxlbWVudCgpKSkpfSkpfWZvY3VzRmlyc3RUYWJiYWJsZUVsZW1lbnRXaGVuUmVhZHkoKXtyZXR1cm4gbmV3IFByb21pc2UoKHQ9Pnt0aGlzLl9leGVjdXRlT25TdGFibGUoKCgpPT50KHRoaXMuZm9jdXNGaXJzdFRhYmJhYmxlRWxlbWVudCgpKSkpfSkpfWZvY3VzTGFzdFRhYmJhYmxlRWxlbWVudFdoZW5SZWFkeSgpe3JldHVybiBuZXcgUHJvbWlzZSgodD0+e3RoaXMuX2V4ZWN1dGVPblN0YWJsZSgoKCk9PnQodGhpcy5mb2N1c0xhc3RUYWJiYWJsZUVsZW1lbnQoKSkpKX0pKX1fZ2V0UmVnaW9uQm91bmRhcnkodCl7bGV0IG49dGhpcy5fZWxlbWVudC5xdWVyeVNlbGVjdG9yQWxsKGBbY2RrLWZvY3VzLXJlZ2lvbi0ke3R9XSwgW2Nka0ZvY3VzUmVnaW9uJHt0fV0sIFtjZGstZm9jdXMtJHt0fV1gKTtmb3IobGV0IGU9MDtlPG4ubGVuZ3RoO2UrKyluW2VdLmhhc0F0dHJpYnV0ZShgY2RrLWZvY3VzLSR7dH1gKT9jb25zb2xlLndhcm4oYEZvdW5kIHVzZSBvZiBkZXByZWNhdGVkIGF0dHJpYnV0ZSAnY2RrLWZvY3VzLSR7dH0nLCB1c2UgJ2Nka0ZvY3VzUmVnaW9uJHt0fScgaW5zdGVhZC4gVGhlIGRlcHJlY2F0ZWQgYXR0cmlidXRlIHdpbGwgYmUgcmVtb3ZlZCBpbiA4LjAuMC5gLG5bZV0pOm5bZV0uaGFzQXR0cmlidXRlKGBjZGstZm9jdXMtcmVnaW9uLSR7dH1gKSYmY29uc29sZS53YXJuKGBGb3VuZCB1c2Ugb2YgZGVwcmVjYXRlZCBhdHRyaWJ1dGUgJ2Nkay1mb2N1cy1yZWdpb24tJHt0fScsIHVzZSAnY2RrRm9jdXNSZWdpb24ke3R9JyBpbnN0ZWFkLiBUaGUgZGVwcmVjYXRlZCBhdHRyaWJ1dGUgd2lsbCBiZSByZW1vdmVkIGluIDguMC4wLmAsbltlXSk7cmV0dXJuInN0YXJ0Ij09dD9uLmxlbmd0aD9uWzBdOnRoaXMuX2dldEZpcnN0VGFiYmFibGVFbGVtZW50KHRoaXMuX2VsZW1lbnQpOm4ubGVuZ3RoP25bbi5sZW5ndGgtMV06dGhpcy5fZ2V0TGFzdFRhYmJhYmxlRWxlbWVudCh0aGlzLl9lbGVtZW50KX1mb2N1c0luaXRpYWxFbGVtZW50KCl7Y29uc3QgdD10aGlzLl9lbGVtZW50LnF1ZXJ5U2VsZWN0b3IoIltjZGstZm9jdXMtaW5pdGlhbF0sIFtjZGtGb2N1c0luaXRpYWxdIik7cmV0dXJuIHQ/KHQuaGFzQXR0cmlidXRlKCJjZGstZm9jdXMtaW5pdGlhbCIpJiZjb25zb2xlLndhcm4oIkZvdW5kIHVzZSBvZiBkZXByZWNhdGVkIGF0dHJpYnV0ZSAnY2RrLWZvY3VzLWluaXRpYWwnLCB1c2UgJ2Nka0ZvY3VzSW5pdGlhbCcgaW5zdGVhZC4gVGhlIGRlcHJlY2F0ZWQgYXR0cmlidXRlIHdpbGwgYmUgcmVtb3ZlZCBpbiA4LjAuMCIsdCksInVuZGVmaW5lZCIhPXR5cGVvZiBuZ0Rldk1vZGUmJiFuZ0Rldk1vZGV8fHRoaXMuX2NoZWNrZXIuaXNGb2N1c2FibGUodCl8fGNvbnNvbGUud2FybigiRWxlbWVudCBtYXRjaGluZyAnW2Nka0ZvY3VzSW5pdGlhbF0nIGlzIG5vdCBmb2N1c2FibGUuIix0KSx0LmZvY3VzKCksITApOnRoaXMuZm9jdXNGaXJzdFRhYmJhYmxlRWxlbWVudCgpfWZvY3VzRmlyc3RUYWJiYWJsZUVsZW1lbnQoKXtjb25zdCB0PXRoaXMuX2dldFJlZ2lvbkJvdW5kYXJ5KCJzdGFydCIpO3JldHVybiB0JiZ0LmZvY3VzKCksISF0fWZvY3VzTGFzdFRhYmJhYmxlRWxlbWVudCgpe2NvbnN0IHQ9dGhpcy5fZ2V0UmVnaW9uQm91bmRhcnkoImVuZCIpO3JldHVybiB0JiZ0LmZvY3VzKCksISF0fWhhc0F0dGFjaGVkKCl7cmV0dXJuIHRoaXMuX2hhc0F0dGFjaGVkfV9nZXRGaXJzdFRhYmJhYmxlRWxlbWVudCh0KXtpZih0aGlzLl9jaGVja2VyLmlzRm9jdXNhYmxlKHQpJiZ0aGlzLl9jaGVja2VyLmlzVGFiYmFibGUodCkpcmV0dXJuIHQ7bGV0IG49dC5jaGlsZHJlbnx8dC5jaGlsZE5vZGVzO2ZvcihsZXQgdD0wO3Q8bi5sZW5ndGg7dCsrKXtsZXQgZT1uW3RdLm5vZGVUeXBlPT09dGhpcy5fZG9jdW1lbnQuRUxFTUVOVF9OT0RFP3RoaXMuX2dldEZpcnN0VGFiYmFibGVFbGVtZW50KG5bdF0pOm51bGw7aWYoZSlyZXR1cm4gZX1yZXR1cm4gbnVsbH1fZ2V0TGFzdFRhYmJhYmxlRWxlbWVudCh0KXtpZih0aGlzLl9jaGVja2VyLmlzRm9jdXNhYmxlKHQpJiZ0aGlzLl9jaGVja2VyLmlzVGFiYmFibGUodCkpcmV0dXJuIHQ7bGV0IG49dC5jaGlsZHJlbnx8dC5jaGlsZE5vZGVzO2ZvcihsZXQgdD1uLmxlbmd0aC0xO3Q+PTA7dC0tKXtsZXQgZT1uW3RdLm5vZGVUeXBlPT09dGhpcy5fZG9jdW1lbnQuRUxFTUVOVF9OT0RFP3RoaXMuX2dldExhc3RUYWJiYWJsZUVsZW1lbnQoblt0XSk6bnVsbDtpZihlKXJldHVybiBlfXJldHVybiBudWxsfV9jcmVhdGVBbmNob3IoKXtjb25zdCB0PXRoaXMuX2RvY3VtZW50LmNyZWF0ZUVsZW1lbnQoImRpdiIpO3JldHVybiB0aGlzLl90b2dnbGVBbmNob3JUYWJJbmRleCh0aGlzLl9lbmFibGVkLHQpLHQuY2xhc3NMaXN0LmFkZCgiY2RrLXZpc3VhbGx5LWhpZGRlbiIpLHQuY2xhc3NMaXN0LmFkZCgiY2RrLWZvY3VzLXRyYXAtYW5jaG9yIiksdC5zZXRBdHRyaWJ1dGUoImFyaWEtaGlkZGVuIiwidHJ1ZSIpLHR9X3RvZ2dsZUFuY2hvclRhYkluZGV4KHQsbil7dD9uLnNldEF0dHJpYnV0ZSgidGFiaW5kZXgiLCIwIik6bi5yZW1vdmVBdHRyaWJ1dGUoInRhYmluZGV4Iil9dG9nZ2xlQW5jaG9ycyh0KXt0aGlzLl9zdGFydEFuY2hvciYmdGhpcy5fZW5kQW5jaG9yJiYodGhpcy5fdG9nZ2xlQW5jaG9yVGFiSW5kZXgodCx0aGlzLl9zdGFydEFuY2hvciksdGhpcy5fdG9nZ2xlQW5jaG9yVGFiSW5kZXgodCx0aGlzLl9lbmRBbmNob3IpKX1fZXhlY3V0ZU9uU3RhYmxlKHQpe3RoaXMuX25nWm9uZS5pc1N0YWJsZT90KCk6dGhpcy5fbmdab25lLm9uU3RhYmxlLnBpcGUoVG4oMSkpLnN1YnNjcmliZSh0KX19Y2xhc3MgdVN7Y29uc3RydWN0b3IodCxuLGUpe3RoaXMuX2NoZWNrZXI9dCx0aGlzLl9uZ1pvbmU9bix0aGlzLl9kb2N1bWVudD1lfWNyZWF0ZSh0LG49ITEpe3JldHVybiBuZXcgYlModCx0aGlzLl9jaGVja2VyLHRoaXMuX25nWm9uZSx0aGlzLl9kb2N1bWVudCxuKX19dVMuybVmYWM9ZnVuY3Rpb24gdChuKXtyZXR1cm4gbmV3KG58fHVTKShaYShkUyksWmEoSl8pLFphKHpDKSl9LHVTLsm1cHJvdj1XZSh7ZmFjdG9yeTpmdW5jdGlvbiB0KCl7cmV0dXJuIG5ldyB1UyhaYShkUyksWmEoSl8pLFphKHpDKSl9LHRva2VuOnVTLHByb3ZpZGVkSW46InJvb3QifSksdVMuY3RvclBhcmFtZXRlcnM9KCk9Plt7dHlwZTpkU30se3R5cGU6Sl99LHt0eXBlOnZvaWQgMCxkZWNvcmF0b3JzOlt7dHlwZTpJZSxhcmdzOlt6Q119XX1dO2NsYXNzIGZTe2NvbnN0cnVjdG9yKHQsbixlKXt0aGlzLl9lbGVtZW50UmVmPXQsdGhpcy5fZm9jdXNUcmFwRmFjdG9yeT1uLHRoaXMuX3ByZXZpb3VzbHlGb2N1c2VkRWxlbWVudD1udWxsLHRoaXMuX2RvY3VtZW50PWUsdGhpcy5mb2N1c1RyYXA9dGhpcy5fZm9jdXNUcmFwRmFjdG9yeS5jcmVhdGUodGhpcy5fZWxlbWVudFJlZi5uYXRpdmVFbGVtZW50LCEwKX1nZXQgZW5hYmxlZCgpe3JldHVybiB0aGlzLmZvY3VzVHJhcC5lbmFibGVkfXNldCBlbmFibGVkKHQpe3RoaXMuZm9jdXNUcmFwLmVuYWJsZWQ9R3codCl9Z2V0IGF1dG9DYXB0dXJlKCl7cmV0dXJuIHRoaXMuX2F1dG9DYXB0dXJlfXNldCBhdXRvQ2FwdHVyZSh0KXt0aGlzLl9hdXRvQ2FwdHVyZT1Hdyh0KX1uZ09uRGVzdHJveSgpe3RoaXMuZm9jdXNUcmFwLmRlc3Ryb3koKSx0aGlzLl9wcmV2aW91c2x5Rm9jdXNlZEVsZW1lbnQmJih0aGlzLl9wcmV2aW91c2x5Rm9jdXNlZEVsZW1lbnQuZm9jdXMoKSx0aGlzLl9wcmV2aW91c2x5Rm9jdXNlZEVsZW1lbnQ9bnVsbCl9bmdBZnRlckNvbnRlbnRJbml0KCl7dGhpcy5mb2N1c1RyYXAuYXR0YWNoQW5jaG9ycygpLHRoaXMuYXV0b0NhcHR1cmUmJnRoaXMuX2NhcHR1cmVGb2N1cygpfW5nRG9DaGVjaygpe3RoaXMuZm9jdXNUcmFwLmhhc0F0dGFjaGVkKCl8fHRoaXMuZm9jdXNUcmFwLmF0dGFjaEFuY2hvcnMoKX1uZ09uQ2hhbmdlcyh0KXtjb25zdCBuPXQuYXV0b0NhcHR1cmU7biYmIW4uZmlyc3RDaGFuZ2UmJnRoaXMuYXV0b0NhcHR1cmUmJnRoaXMuZm9jdXNUcmFwLmhhc0F0dGFjaGVkKCkmJnRoaXMuX2NhcHR1cmVGb2N1cygpfV9jYXB0dXJlRm9jdXMoKXt0aGlzLl9wcmV2aW91c2x5Rm9jdXNlZEVsZW1lbnQ9dGhpcy5fZG9jdW1lbnQuYWN0aXZlRWxlbWVudCx0aGlzLmZvY3VzVHJhcC5mb2N1c0luaXRpYWxFbGVtZW50V2hlblJlYWR5KCl9fWZTLsm1ZmFjPWZ1bmN0aW9uIHQobil7cmV0dXJuIG5ldyhufHxmUykoWmcoeHUpLFpnKHVTKSxaZyh6QykpfSxmUy7JtWRpcj12byh7dHlwZTpmUyxzZWxlY3RvcnM6W1siIiwiY2RrVHJhcEZvY3VzIiwiIl1dLGlucHV0czp7ZW5hYmxlZDpbImNka1RyYXBGb2N1cyIsImVuYWJsZWQiXSxhdXRvQ2FwdHVyZTpbImNka1RyYXBGb2N1c0F1dG9DYXB0dXJlIiwiYXV0b0NhcHR1cmUiXX0sZXhwb3J0QXM6WyJjZGtUcmFwRm9jdXMiXSxmZWF0dXJlczpbcHJdfSksZlMuY3RvclBhcmFtZXRlcnM9KCk9Plt7dHlwZTp4dX0se3R5cGU6dVN9LHt0eXBlOnZvaWQgMCxkZWNvcmF0b3JzOlt7dHlwZTpJZSxhcmdzOlt6Q119XX1dLGZTLnByb3BEZWNvcmF0b3JzPXtlbmFibGVkOlt7dHlwZTpmXyxhcmdzOlsiY2RrVHJhcEZvY3VzIl19XSxhdXRvQ2FwdHVyZTpbe3R5cGU6Zl8sYXJnczpbImNka1RyYXBGb2N1c0F1dG9DYXB0dXJlIl19XX07Ci8qKgogICAgICogQGxpY2Vuc2UKICAgICAqIENvcHlyaWdodCBHb29nbGUgTExDIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCiAgICAgKgogICAgICogVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYW4gTUlULXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKICAgICAqIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUgYXQgaHR0cHM6Ly9hbmd1bGFyLmlvL2xpY2Vuc2UKICAgICAqLwpjbGFzcyBoUyBleHRlbmRzIGJTe2NvbnN0cnVjdG9yKHQsbixlLGEsbyxyLGkpe3N1cGVyKHQsbixlLGEsaS5kZWZlciksdGhpcy5fZm9jdXNUcmFwTWFuYWdlcj1vLHRoaXMuX2luZXJ0U3RyYXRlZ3k9cix0aGlzLl9mb2N1c1RyYXBNYW5hZ2VyLnJlZ2lzdGVyKHRoaXMpfWdldCBlbmFibGVkKCl7cmV0dXJuIHRoaXMuX2VuYWJsZWR9c2V0IGVuYWJsZWQodCl7dGhpcy5fZW5hYmxlZD10LHRoaXMuX2VuYWJsZWQ/dGhpcy5fZm9jdXNUcmFwTWFuYWdlci5yZWdpc3Rlcih0aGlzKTp0aGlzLl9mb2N1c1RyYXBNYW5hZ2VyLmRlcmVnaXN0ZXIodGhpcyl9ZGVzdHJveSgpe3RoaXMuX2ZvY3VzVHJhcE1hbmFnZXIuZGVyZWdpc3Rlcih0aGlzKSxzdXBlci5kZXN0cm95KCl9X2VuYWJsZSgpe3RoaXMuX2luZXJ0U3RyYXRlZ3kucHJldmVudEZvY3VzKHRoaXMpLHRoaXMudG9nZ2xlQW5jaG9ycyghMCl9X2Rpc2FibGUoKXt0aGlzLl9pbmVydFN0cmF0ZWd5LmFsbG93Rm9jdXModGhpcyksdGhpcy50b2dnbGVBbmNob3JzKCExKX19Ci8qKgogICAgICogQGxpY2Vuc2UKICAgICAqIENvcHlyaWdodCBHb29nbGUgTExDIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCiAgICAgKgogICAgICogVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYW4gTUlULXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKICAgICAqIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUgYXQgaHR0cHM6Ly9hbmd1bGFyLmlvL2xpY2Vuc2UKICAgICAqL2NvbnN0IF9TPSJ1bmRlZmluZWQiIT10eXBlb2YgRWxlbWVudCYmISFFbGVtZW50LnByb3RvdHlwZS5jbG9zZXN0O2Z1bmN0aW9uIENTKHQsbil7cmV0dXJuIHQubWF0Y2hlcz90Lm1hdGNoZXMobik6dC5tc01hdGNoZXNTZWxlY3RvcihuKX0KLyoqCiAgICAgKiBAbGljZW5zZQogICAgICogQ29weXJpZ2h0IEdvb2dsZSBMTEMgQWxsIFJpZ2h0cyBSZXNlcnZlZC4KICAgICAqCiAgICAgKiBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhbiBNSVQtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQogICAgICogZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZSBhdCBodHRwczovL2FuZ3VsYXIuaW8vbGljZW5zZQogICAgICovY2xhc3MgTVN7Y29uc3RydWN0b3IoKXt0aGlzLl9saXN0ZW5lcj1udWxsfXByZXZlbnRGb2N1cyh0KXt0aGlzLl9saXN0ZW5lciYmdC5fZG9jdW1lbnQucmVtb3ZlRXZlbnRMaXN0ZW5lcigiZm9jdXMiLHRoaXMuX2xpc3RlbmVyLCEwKSx0aGlzLl9saXN0ZW5lcj1uPT50aGlzLl90cmFwRm9jdXModCxuKSx0Ll9uZ1pvbmUucnVuT3V0c2lkZUFuZ3VsYXIoKCgpPT57dC5fZG9jdW1lbnQuYWRkRXZlbnRMaXN0ZW5lcigiZm9jdXMiLHRoaXMuX2xpc3RlbmVyLCEwKX0pKX1hbGxvd0ZvY3VzKHQpe3RoaXMuX2xpc3RlbmVyJiYodC5fZG9jdW1lbnQucmVtb3ZlRXZlbnRMaXN0ZW5lcigiZm9jdXMiLHRoaXMuX2xpc3RlbmVyLCEwKSx0aGlzLl9saXN0ZW5lcj1udWxsKX1fdHJhcEZvY3VzKHQsbil7Y29uc3QgZT1uLnRhcmdldCxhPXQuX2VsZW1lbnQ7YS5jb250YWlucyhlKXx8bnVsbCE9PShmdW5jdGlvbiBvKHQsbil7aWYoISh0IGluc3RhbmNlb2YgTm9kZSkpcmV0dXJuIG51bGw7bGV0IGU9dDtmb3IoO251bGwhPWUmJiEoZSBpbnN0YW5jZW9mIEVsZW1lbnQpOyllPWUucGFyZW50Tm9kZTtyZXR1cm4gZSYmKF9TP2UuY2xvc2VzdChuKTooZnVuY3Rpb24gYSh0LG4pe2xldCBlPXQ7Zm9yKDtudWxsIT1lJiYhKGUgaW5zdGFuY2VvZiBFbGVtZW50JiZDUyhlLG4pKTspZT1lLnBhcmVudE5vZGU7cmV0dXJuIGV8fG51bGx9KShlLG4pKX0pKGUsImRpdi5jZGstb3ZlcmxheS1wYW5lIil8fHNldFRpbWVvdXQoKCgpPT57dC5lbmFibGVkJiYhYS5jb250YWlucyh0Ll9kb2N1bWVudC5hY3RpdmVFbGVtZW50KSYmdC5mb2N1c0ZpcnN0VGFiYmFibGVFbGVtZW50KCl9KSl9fQovKioKICAgICAqIEBsaWNlbnNlCiAgICAgKiBDb3B5cmlnaHQgR29vZ2xlIExMQyBBbGwgUmlnaHRzIFJlc2VydmVkLgogICAgICoKICAgICAqIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGFuIE1JVC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCiAgICAgKiBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlIGF0IGh0dHBzOi8vYW5ndWxhci5pby9saWNlbnNlCiAgICAgKi9jbGFzcyBPU3tjb25zdHJ1Y3Rvcigpe3RoaXMuZGVmZXI9ITF9fQovKioKICAgICAqIEBsaWNlbnNlCiAgICAgKiBDb3B5cmlnaHQgR29vZ2xlIExMQyBBbGwgUmlnaHRzIFJlc2VydmVkLgogICAgICoKICAgICAqIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGFuIE1JVC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCiAgICAgKiBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlIGF0IGh0dHBzOi8vYW5ndWxhci5pby9saWNlbnNlCiAgICAgKi9jb25zdCBQUz1uZXcgRmEoIkZPQ1VTX1RSQVBfSU5FUlRfU1RSQVRFR1kiKTsKLyoqCiAgICAgKiBAbGljZW5zZQogICAgICogQ29weXJpZ2h0IEdvb2dsZSBMTEMgQWxsIFJpZ2h0cyBSZXNlcnZlZC4KICAgICAqCiAgICAgKiBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhbiBNSVQtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQogICAgICogZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZSBhdCBodHRwczovL2FuZ3VsYXIuaW8vbGljZW5zZQogICAgICovY2xhc3MgeFN7Y29uc3RydWN0b3IoKXt0aGlzLl9mb2N1c1RyYXBTdGFjaz1bXX1yZWdpc3Rlcih0KXt0aGlzLl9mb2N1c1RyYXBTdGFjaz10aGlzLl9mb2N1c1RyYXBTdGFjay5maWx0ZXIoKG49Pm4hPT10KSk7bGV0IG49dGhpcy5fZm9jdXNUcmFwU3RhY2s7bi5sZW5ndGgmJm5bbi5sZW5ndGgtMV0uX2Rpc2FibGUoKSxuLnB1c2godCksdC5fZW5hYmxlKCl9ZGVyZWdpc3Rlcih0KXt0Ll9kaXNhYmxlKCk7Y29uc3Qgbj10aGlzLl9mb2N1c1RyYXBTdGFjayxlPW4uaW5kZXhPZih0KTstMSE9PWUmJihuLnNwbGljZShlLDEpLG4ubGVuZ3RoJiZuW24ubGVuZ3RoLTFdLl9lbmFibGUoKSl9fXhTLsm1ZmFjPWZ1bmN0aW9uIHQobil7cmV0dXJuIG5ldyhufHx4Uyl9LHhTLsm1cHJvdj1XZSh7ZmFjdG9yeTpmdW5jdGlvbiB0KCl7cmV0dXJuIG5ldyB4U30sdG9rZW46eFMscHJvdmlkZWRJbjoicm9vdCJ9KTsKLyoqCiAgICAgKiBAbGljZW5zZQogICAgICogQ29weXJpZ2h0IEdvb2dsZSBMTEMgQWxsIFJpZ2h0cyBSZXNlcnZlZC4KICAgICAqCiAgICAgKiBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhbiBNSVQtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQogICAgICogZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZSBhdCBodHRwczovL2FuZ3VsYXIuaW8vbGljZW5zZQogICAgICovCmNsYXNzIHlTe2NvbnN0cnVjdG9yKHQsbixlLGEsbyl7dGhpcy5fY2hlY2tlcj10LHRoaXMuX25nWm9uZT1uLHRoaXMuX2ZvY3VzVHJhcE1hbmFnZXI9ZSx0aGlzLl9kb2N1bWVudD1hLHRoaXMuX2luZXJ0U3RyYXRlZ3k9b3x8bmV3IE1TfWNyZWF0ZSh0LG49bmV3IE9TKXtsZXQgZTtyZXR1cm4iYm9vbGVhbiI9PXR5cGVvZiBuPyhlPW5ldyBPUyxlLmRlZmVyPW4pOmU9bixuZXcgaFModCx0aGlzLl9jaGVja2VyLHRoaXMuX25nWm9uZSx0aGlzLl9kb2N1bWVudCx0aGlzLl9mb2N1c1RyYXBNYW5hZ2VyLHRoaXMuX2luZXJ0U3RyYXRlZ3ksZSl9fXlTLsm1ZmFjPWZ1bmN0aW9uIHQobil7cmV0dXJuIG5ldyhufHx5UykoWmEoZFMpLFphKEpfKSxaYSh4UyksWmEoekMpLFphKFBTLDgpKX0seVMuybVwcm92PVdlKHtmYWN0b3J5OmZ1bmN0aW9uIHQoKXtyZXR1cm4gbmV3IHlTKFphKGRTKSxaYShKXyksWmEoeFMpLFphKHpDKSxaYShQUyw4KSl9LHRva2VuOnlTLHByb3ZpZGVkSW46InJvb3QifSkseVMuY3RvclBhcmFtZXRlcnM9KCk9Plt7dHlwZTpkU30se3R5cGU6Sl99LHt0eXBlOnhTfSx7dHlwZTp2b2lkIDAsZGVjb3JhdG9yczpbe3R5cGU6SWUsYXJnczpbekNdfV19LHt0eXBlOnZvaWQgMCxkZWNvcmF0b3JzOlt7dHlwZTpOZX0se3R5cGU6SWUsYXJnczpbUFNdfV19XQovKioKICAgICAqIEBsaWNlbnNlCiAgICAgKiBDb3B5cmlnaHQgR29vZ2xlIExMQyBBbGwgUmlnaHRzIFJlc2VydmVkLgogICAgICoKICAgICAqIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGFuIE1JVC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCiAgICAgKiBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlIGF0IGh0dHBzOi8vYW5ndWxhci5pby9saWNlbnNlCiAgICAgKi87Y29uc3Qga1M9bmV3IEZhKCJsaXZlQW5ub3VuY2VyRWxlbWVudCIse3Byb3ZpZGVkSW46InJvb3QiLGZhY3Rvcnk6ZnVuY3Rpb24gdlMoKXtyZXR1cm4gbnVsbH19KSx3Uz1uZXcgRmEoIkxJVkVfQU5OT1VOQ0VSX0RFRkFVTFRfT1BUSU9OUyIpOwovKioKICAgICAqIEBsaWNlbnNlCiAgICAgKiBDb3B5cmlnaHQgR29vZ2xlIExMQyBBbGwgUmlnaHRzIFJlc2VydmVkLgogICAgICoKICAgICAqIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGFuIE1JVC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCiAgICAgKiBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlIGF0IGh0dHBzOi8vYW5ndWxhci5pby9saWNlbnNlCiAgICAgKi8KY2xhc3MgU1N7Y29uc3RydWN0b3IodCxuLGUsYSl7dGhpcy5fbmdab25lPW4sdGhpcy5fZGVmYXVsdE9wdGlvbnM9YSx0aGlzLl9kb2N1bWVudD1lLHRoaXMuX2xpdmVFbGVtZW50PXR8fHRoaXMuX2NyZWF0ZUxpdmVFbGVtZW50KCl9YW5ub3VuY2UodCwuLi5uKXtjb25zdCBlPXRoaXMuX2RlZmF1bHRPcHRpb25zO2xldCBhLG87cmV0dXJuIDE9PT1uLmxlbmd0aCYmIm51bWJlciI9PXR5cGVvZiBuWzBdP289blswXTpbYSxvXT1uLHRoaXMuY2xlYXIoKSxjbGVhclRpbWVvdXQodGhpcy5fcHJldmlvdXNUaW1lb3V0KSxhfHwoYT1lJiZlLnBvbGl0ZW5lc3M/ZS5wb2xpdGVuZXNzOiJwb2xpdGUiKSxudWxsPT1vJiZlJiYobz1lLmR1cmF0aW9uKSx0aGlzLl9saXZlRWxlbWVudC5zZXRBdHRyaWJ1dGUoImFyaWEtbGl2ZSIsYSksdGhpcy5fbmdab25lLnJ1bk91dHNpZGVBbmd1bGFyKCgoKT0+bmV3IFByb21pc2UoKG49PntjbGVhclRpbWVvdXQodGhpcy5fcHJldmlvdXNUaW1lb3V0KSx0aGlzLl9wcmV2aW91c1RpbWVvdXQ9c2V0VGltZW91dCgoKCk9Pnt0aGlzLl9saXZlRWxlbWVudC50ZXh0Q29udGVudD10LG4oKSwibnVtYmVyIj09dHlwZW9mIG8mJih0aGlzLl9wcmV2aW91c1RpbWVvdXQ9c2V0VGltZW91dCgoKCk9PnRoaXMuY2xlYXIoKSksbykpfSksMTAwKX0pKSkpfWNsZWFyKCl7dGhpcy5fbGl2ZUVsZW1lbnQmJih0aGlzLl9saXZlRWxlbWVudC50ZXh0Q29udGVudD0iIil9bmdPbkRlc3Ryb3koKXtjbGVhclRpbWVvdXQodGhpcy5fcHJldmlvdXNUaW1lb3V0KSx0aGlzLl9saXZlRWxlbWVudCYmdGhpcy5fbGl2ZUVsZW1lbnQucGFyZW50Tm9kZSYmKHRoaXMuX2xpdmVFbGVtZW50LnBhcmVudE5vZGUucmVtb3ZlQ2hpbGQodGhpcy5fbGl2ZUVsZW1lbnQpLHRoaXMuX2xpdmVFbGVtZW50PW51bGwpfV9jcmVhdGVMaXZlRWxlbWVudCgpe2NvbnN0IHQ9ImNkay1saXZlLWFubm91bmNlci1lbGVtZW50IixuPXRoaXMuX2RvY3VtZW50LmdldEVsZW1lbnRzQnlDbGFzc05hbWUodCksZT10aGlzLl9kb2N1bWVudC5jcmVhdGVFbGVtZW50KCJkaXYiKTtmb3IobGV0IHQ9MDt0PG4ubGVuZ3RoO3QrKyluW3RdLnBhcmVudE5vZGUucmVtb3ZlQ2hpbGQoblt0XSk7cmV0dXJuIGUuY2xhc3NMaXN0LmFkZCh0KSxlLmNsYXNzTGlzdC5hZGQoImNkay12aXN1YWxseS1oaWRkZW4iKSxlLnNldEF0dHJpYnV0ZSgiYXJpYS1hdG9taWMiLCJ0cnVlIiksZS5zZXRBdHRyaWJ1dGUoImFyaWEtbGl2ZSIsInBvbGl0ZSIpLHRoaXMuX2RvY3VtZW50LmJvZHkuYXBwZW5kQ2hpbGQoZSksZX19U1MuybVmYWM9ZnVuY3Rpb24gdChuKXtyZXR1cm4gbmV3KG58fFNTKShaYShrUyw4KSxaYShKXyksWmEoekMpLFphKHdTLDgpKX0sU1MuybVwcm92PVdlKHtmYWN0b3J5OmZ1bmN0aW9uIHQoKXtyZXR1cm4gbmV3IFNTKFphKGtTLDgpLFphKEpfKSxaYSh6QyksWmEod1MsOCkpfSx0b2tlbjpTUyxwcm92aWRlZEluOiJyb290In0pLFNTLmN0b3JQYXJhbWV0ZXJzPSgpPT5be3R5cGU6dm9pZCAwLGRlY29yYXRvcnM6W3t0eXBlOk5lfSx7dHlwZTpJZSxhcmdzOltrU119XX0se3R5cGU6Sl99LHt0eXBlOnZvaWQgMCxkZWNvcmF0b3JzOlt7dHlwZTpJZSxhcmdzOlt6Q119XX0se3R5cGU6dm9pZCAwLGRlY29yYXRvcnM6W3t0eXBlOk5lfSx7dHlwZTpJZSxhcmdzOlt3U119XX1dO2NsYXNzIEVTe2NvbnN0cnVjdG9yKHQsbixlLGEpe3RoaXMuX2VsZW1lbnRSZWY9dCx0aGlzLl9saXZlQW5ub3VuY2VyPW4sdGhpcy5fY29udGVudE9ic2VydmVyPWUsdGhpcy5fbmdab25lPWEsdGhpcy5fcG9saXRlbmVzcz0icG9saXRlIn1nZXQgcG9saXRlbmVzcygpe3JldHVybiB0aGlzLl9wb2xpdGVuZXNzfXNldCBwb2xpdGVuZXNzKHQpe3RoaXMuX3BvbGl0ZW5lc3M9Im9mZiI9PT10fHwiYXNzZXJ0aXZlIj09PXQ/dDoicG9saXRlIiwib2ZmIj09PXRoaXMuX3BvbGl0ZW5lc3M/dGhpcy5fc3Vic2NyaXB0aW9uJiYodGhpcy5fc3Vic2NyaXB0aW9uLnVuc3Vic2NyaWJlKCksdGhpcy5fc3Vic2NyaXB0aW9uPW51bGwpOnRoaXMuX3N1YnNjcmlwdGlvbnx8KHRoaXMuX3N1YnNjcmlwdGlvbj10aGlzLl9uZ1pvbmUucnVuT3V0c2lkZUFuZ3VsYXIoKCgpPT50aGlzLl9jb250ZW50T2JzZXJ2ZXIub2JzZXJ2ZSh0aGlzLl9lbGVtZW50UmVmKS5zdWJzY3JpYmUoKCgpPT57Y29uc3QgdD10aGlzLl9lbGVtZW50UmVmLm5hdGl2ZUVsZW1lbnQudGV4dENvbnRlbnQ7dCE9PXRoaXMuX3ByZXZpb3VzQW5ub3VuY2VkVGV4dCYmKHRoaXMuX2xpdmVBbm5vdW5jZXIuYW5ub3VuY2UodCx0aGlzLl9wb2xpdGVuZXNzKSx0aGlzLl9wcmV2aW91c0Fubm91bmNlZFRleHQ9dCl9KSkpKSl9bmdPbkRlc3Ryb3koKXt0aGlzLl9zdWJzY3JpcHRpb24mJnRoaXMuX3N1YnNjcmlwdGlvbi51bnN1YnNjcmliZSgpfX0KLyoqCiAgICAgKiBAbGljZW5zZQogICAgICogQ29weXJpZ2h0IEdvb2dsZSBMTEMgQWxsIFJpZ2h0cyBSZXNlcnZlZC4KICAgICAqCiAgICAgKiBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhbiBNSVQtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQogICAgICogZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZSBhdCBodHRwczovL2FuZ3VsYXIuaW8vbGljZW5zZQogICAgICovCmZ1bmN0aW9uIEFTKHQpe3JldHVybiAwPT09dC5idXR0b25zfQovKioKICAgICAqIEBsaWNlbnNlCiAgICAgKiBDb3B5cmlnaHQgR29vZ2xlIExMQyBBbGwgUmlnaHRzIFJlc2VydmVkLgogICAgICoKICAgICAqIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGFuIE1JVC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCiAgICAgKiBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlIGF0IGh0dHBzOi8vYW5ndWxhci5pby9saWNlbnNlCiAgICAgKi9FUy7JtWZhYz1mdW5jdGlvbiB0KG4pe3JldHVybiBuZXcobnx8RVMpKFpnKHh1KSxaZyhTUyksWmcoS3cpLFpnKEpfKSl9LEVTLsm1ZGlyPXZvKHt0eXBlOkVTLHNlbGVjdG9yczpbWyIiLCJjZGtBcmlhTGl2ZSIsIiJdXSxpbnB1dHM6e3BvbGl0ZW5lc3M6WyJjZGtBcmlhTGl2ZSIsInBvbGl0ZW5lc3MiXX0sZXhwb3J0QXM6WyJjZGtBcmlhTGl2ZSJdfSksRVMuY3RvclBhcmFtZXRlcnM9KCk9Plt7dHlwZTp4dX0se3R5cGU6U1N9LHt0eXBlOkt3fSx7dHlwZTpKX31dLEVTLnByb3BEZWNvcmF0b3JzPXtwb2xpdGVuZXNzOlt7dHlwZTpmXyxhcmdzOlsiY2RrQXJpYUxpdmUiXX1dfTtjb25zdCB6Uz1uZXcgRmEoImNkay1mb2N1cy1tb25pdG9yLWRlZmF1bHQtb3B0aW9ucyIpLFJTPU53KHtwYXNzaXZlOiEwLGNhcHR1cmU6ITB9KTtjbGFzcyBUU3tjb25zdHJ1Y3Rvcih0LG4sZSxhKXt0aGlzLl9uZ1pvbmU9dCx0aGlzLl9wbGF0Zm9ybT1uLHRoaXMuX29yaWdpbj1udWxsLHRoaXMuX3dpbmRvd0ZvY3VzZWQ9ITEsdGhpcy5fZWxlbWVudEluZm89bmV3IE1hcCx0aGlzLl9tb25pdG9yZWRFbGVtZW50Q291bnQ9MCx0aGlzLl9yb290Tm9kZUZvY3VzTGlzdGVuZXJDb3VudD1uZXcgTWFwLHRoaXMuX2RvY3VtZW50S2V5ZG93bkxpc3RlbmVyPSgpPT57dGhpcy5fbGFzdFRvdWNoVGFyZ2V0PW51bGwsdGhpcy5fc2V0T3JpZ2luRm9yQ3VycmVudEV2ZW50UXVldWUoImtleWJvYXJkIil9LHRoaXMuX2RvY3VtZW50TW91c2Vkb3duTGlzdGVuZXI9dD0+e2lmKCF0aGlzLl9sYXN0VG91Y2hUYXJnZXQpe2NvbnN0IG49QVModCk/ImtleWJvYXJkIjoibW91c2UiO3RoaXMuX3NldE9yaWdpbkZvckN1cnJlbnRFdmVudFF1ZXVlKG4pfX0sdGhpcy5fZG9jdW1lbnRUb3VjaHN0YXJ0TGlzdGVuZXI9dD0+e251bGwhPXRoaXMuX3RvdWNoVGltZW91dElkJiZjbGVhclRpbWVvdXQodGhpcy5fdG91Y2hUaW1lb3V0SWQpLHRoaXMuX2xhc3RUb3VjaFRhcmdldD1EUyh0KSx0aGlzLl90b3VjaFRpbWVvdXRJZD1zZXRUaW1lb3V0KCgoKT0+dGhpcy5fbGFzdFRvdWNoVGFyZ2V0PW51bGwpLDY1MCl9LHRoaXMuX3dpbmRvd0ZvY3VzTGlzdGVuZXI9KCk9Pnt0aGlzLl93aW5kb3dGb2N1c2VkPSEwLHRoaXMuX3dpbmRvd0ZvY3VzVGltZW91dElkPXNldFRpbWVvdXQoKCgpPT50aGlzLl93aW5kb3dGb2N1c2VkPSExKSl9LHRoaXMuX3Jvb3ROb2RlRm9jdXNBbmRCbHVyTGlzdGVuZXI9dD0+e2NvbnN0IG49RFModCksZT0iZm9jdXMiPT09dC50eXBlP3RoaXMuX29uRm9jdXM6dGhpcy5fb25CbHVyO2ZvcihsZXQgYT1uO2E7YT1hLnBhcmVudEVsZW1lbnQpZS5jYWxsKHRoaXMsdCxhKX0sdGhpcy5fZG9jdW1lbnQ9ZSx0aGlzLl9kZXRlY3Rpb25Nb2RlPShudWxsPT1hP3ZvaWQgMDphLmRldGVjdGlvbk1vZGUpfHwwfW1vbml0b3IodCxuPSExKXtjb25zdCBlPUp3KHQpO2lmKCF0aGlzLl9wbGF0Zm9ybS5pc0Jyb3dzZXJ8fDEhPT1lLm5vZGVUeXBlKXJldHVybiBaKG51bGwpO2NvbnN0IGE9THcoZSl8fHRoaXMuX2dldERvY3VtZW50KCksbz10aGlzLl9lbGVtZW50SW5mby5nZXQoZSk7aWYobylyZXR1cm4gbiYmKG8uY2hlY2tDaGlsZHJlbj0hMCksby5zdWJqZWN0O2NvbnN0IHI9e2NoZWNrQ2hpbGRyZW46bixzdWJqZWN0Om5ldyB4LHJvb3ROb2RlOmF9O3JldHVybiB0aGlzLl9lbGVtZW50SW5mby5zZXQoZSxyKSx0aGlzLl9yZWdpc3Rlckdsb2JhbExpc3RlbmVycyhyKSxyLnN1YmplY3R9c3RvcE1vbml0b3JpbmcodCl7Y29uc3Qgbj1Kdyh0KSxlPXRoaXMuX2VsZW1lbnRJbmZvLmdldChuKTtlJiYoZS5zdWJqZWN0LmNvbXBsZXRlKCksdGhpcy5fc2V0Q2xhc3NlcyhuKSx0aGlzLl9lbGVtZW50SW5mby5kZWxldGUobiksdGhpcy5fcmVtb3ZlR2xvYmFsTGlzdGVuZXJzKGUpKX1mb2N1c1ZpYSh0LG4sZSl7Y29uc3QgYT1Kdyh0KTt0aGlzLl9zZXRPcmlnaW5Gb3JDdXJyZW50RXZlbnRRdWV1ZShuKSwiZnVuY3Rpb24iPT10eXBlb2YgYS5mb2N1cyYmYS5mb2N1cyhlKX1uZ09uRGVzdHJveSgpe3RoaXMuX2VsZW1lbnRJbmZvLmZvckVhY2goKCh0LG4pPT50aGlzLnN0b3BNb25pdG9yaW5nKG4pKSl9X2dldERvY3VtZW50KCl7cmV0dXJuIHRoaXMuX2RvY3VtZW50fHxkb2N1bWVudH1fZ2V0V2luZG93KCl7cmV0dXJuIHRoaXMuX2dldERvY3VtZW50KCkuZGVmYXVsdFZpZXd8fHdpbmRvd31fdG9nZ2xlQ2xhc3ModCxuLGUpe2U/dC5jbGFzc0xpc3QuYWRkKG4pOnQuY2xhc3NMaXN0LnJlbW92ZShuKX1fZ2V0Rm9jdXNPcmlnaW4odCl7cmV0dXJuIHRoaXMuX29yaWdpbj90aGlzLl9vcmlnaW46dGhpcy5fd2luZG93Rm9jdXNlZCYmdGhpcy5fbGFzdEZvY3VzT3JpZ2luP3RoaXMuX2xhc3RGb2N1c09yaWdpbjp0aGlzLl93YXNDYXVzZWRCeVRvdWNoKHQpPyJ0b3VjaCI6InByb2dyYW0ifV9zZXRDbGFzc2VzKHQsbil7dGhpcy5fdG9nZ2xlQ2xhc3ModCwiY2RrLWZvY3VzZWQiLCEhbiksdGhpcy5fdG9nZ2xlQ2xhc3ModCwiY2RrLXRvdWNoLWZvY3VzZWQiLCJ0b3VjaCI9PT1uKSx0aGlzLl90b2dnbGVDbGFzcyh0LCJjZGsta2V5Ym9hcmQtZm9jdXNlZCIsImtleWJvYXJkIj09PW4pLHRoaXMuX3RvZ2dsZUNsYXNzKHQsImNkay1tb3VzZS1mb2N1c2VkIiwibW91c2UiPT09biksdGhpcy5fdG9nZ2xlQ2xhc3ModCwiY2RrLXByb2dyYW0tZm9jdXNlZCIsInByb2dyYW0iPT09bil9X3NldE9yaWdpbkZvckN1cnJlbnRFdmVudFF1ZXVlKHQpe3RoaXMuX25nWm9uZS5ydW5PdXRzaWRlQW5ndWxhcigoKCk9Pnt0aGlzLl9vcmlnaW49dCwwPT09dGhpcy5fZGV0ZWN0aW9uTW9kZSYmKHRoaXMuX29yaWdpblRpbWVvdXRJZD1zZXRUaW1lb3V0KCgoKT0+dGhpcy5fb3JpZ2luPW51bGwpLDEpKX0pKX1fd2FzQ2F1c2VkQnlUb3VjaCh0KXtjb25zdCBuPURTKHQpO3JldHVybiB0aGlzLl9sYXN0VG91Y2hUYXJnZXQgaW5zdGFuY2VvZiBOb2RlJiZuIGluc3RhbmNlb2YgTm9kZSYmKG49PT10aGlzLl9sYXN0VG91Y2hUYXJnZXR8fG4uY29udGFpbnModGhpcy5fbGFzdFRvdWNoVGFyZ2V0KSl9X29uRm9jdXModCxuKXtjb25zdCBlPXRoaXMuX2VsZW1lbnRJbmZvLmdldChuKTtpZighZXx8IWUuY2hlY2tDaGlsZHJlbiYmbiE9PURTKHQpKXJldHVybjtjb25zdCBhPXRoaXMuX2dldEZvY3VzT3JpZ2luKHQpO3RoaXMuX3NldENsYXNzZXMobixhKSx0aGlzLl9lbWl0T3JpZ2luKGUuc3ViamVjdCxhKSx0aGlzLl9sYXN0Rm9jdXNPcmlnaW49YX1fb25CbHVyKHQsbil7Y29uc3QgZT10aGlzLl9lbGVtZW50SW5mby5nZXQobik7IWV8fGUuY2hlY2tDaGlsZHJlbiYmdC5yZWxhdGVkVGFyZ2V0IGluc3RhbmNlb2YgTm9kZSYmbi5jb250YWlucyh0LnJlbGF0ZWRUYXJnZXQpfHwodGhpcy5fc2V0Q2xhc3NlcyhuKSx0aGlzLl9lbWl0T3JpZ2luKGUuc3ViamVjdCxudWxsKSl9X2VtaXRPcmlnaW4odCxuKXt0aGlzLl9uZ1pvbmUucnVuKCgoKT0+dC5uZXh0KG4pKSl9X3JlZ2lzdGVyR2xvYmFsTGlzdGVuZXJzKHQpe2lmKCF0aGlzLl9wbGF0Zm9ybS5pc0Jyb3dzZXIpcmV0dXJuO2NvbnN0IG49dC5yb290Tm9kZSxlPXRoaXMuX3Jvb3ROb2RlRm9jdXNMaXN0ZW5lckNvdW50LmdldChuKXx8MDtlfHx0aGlzLl9uZ1pvbmUucnVuT3V0c2lkZUFuZ3VsYXIoKCgpPT57bi5hZGRFdmVudExpc3RlbmVyKCJmb2N1cyIsdGhpcy5fcm9vdE5vZGVGb2N1c0FuZEJsdXJMaXN0ZW5lcixSUyksbi5hZGRFdmVudExpc3RlbmVyKCJibHVyIix0aGlzLl9yb290Tm9kZUZvY3VzQW5kQmx1ckxpc3RlbmVyLFJTKX0pKSx0aGlzLl9yb290Tm9kZUZvY3VzTGlzdGVuZXJDb3VudC5zZXQobixlKzEpLDE9PSsrdGhpcy5fbW9uaXRvcmVkRWxlbWVudENvdW50JiZ0aGlzLl9uZ1pvbmUucnVuT3V0c2lkZUFuZ3VsYXIoKCgpPT57Y29uc3QgdD10aGlzLl9nZXREb2N1bWVudCgpLG49dGhpcy5fZ2V0V2luZG93KCk7dC5hZGRFdmVudExpc3RlbmVyKCJrZXlkb3duIix0aGlzLl9kb2N1bWVudEtleWRvd25MaXN0ZW5lcixSUyksdC5hZGRFdmVudExpc3RlbmVyKCJtb3VzZWRvd24iLHRoaXMuX2RvY3VtZW50TW91c2Vkb3duTGlzdGVuZXIsUlMpLHQuYWRkRXZlbnRMaXN0ZW5lcigidG91Y2hzdGFydCIsdGhpcy5fZG9jdW1lbnRUb3VjaHN0YXJ0TGlzdGVuZXIsUlMpLG4uYWRkRXZlbnRMaXN0ZW5lcigiZm9jdXMiLHRoaXMuX3dpbmRvd0ZvY3VzTGlzdGVuZXIpfSkpfV9yZW1vdmVHbG9iYWxMaXN0ZW5lcnModCl7Y29uc3Qgbj10LnJvb3ROb2RlO2lmKHRoaXMuX3Jvb3ROb2RlRm9jdXNMaXN0ZW5lckNvdW50LmhhcyhuKSl7Y29uc3QgdD10aGlzLl9yb290Tm9kZUZvY3VzTGlzdGVuZXJDb3VudC5nZXQobik7dD4xP3RoaXMuX3Jvb3ROb2RlRm9jdXNMaXN0ZW5lckNvdW50LnNldChuLHQtMSk6KG4ucmVtb3ZlRXZlbnRMaXN0ZW5lcigiZm9jdXMiLHRoaXMuX3Jvb3ROb2RlRm9jdXNBbmRCbHVyTGlzdGVuZXIsUlMpLG4ucmVtb3ZlRXZlbnRMaXN0ZW5lcigiYmx1ciIsdGhpcy5fcm9vdE5vZGVGb2N1c0FuZEJsdXJMaXN0ZW5lcixSUyksdGhpcy5fcm9vdE5vZGVGb2N1c0xpc3RlbmVyQ291bnQuZGVsZXRlKG4pKX1pZighLS10aGlzLl9tb25pdG9yZWRFbGVtZW50Q291bnQpe2NvbnN0IHQ9dGhpcy5fZ2V0RG9jdW1lbnQoKSxuPXRoaXMuX2dldFdpbmRvdygpO3QucmVtb3ZlRXZlbnRMaXN0ZW5lcigia2V5ZG93biIsdGhpcy5fZG9jdW1lbnRLZXlkb3duTGlzdGVuZXIsUlMpLHQucmVtb3ZlRXZlbnRMaXN0ZW5lcigibW91c2Vkb3duIix0aGlzLl9kb2N1bWVudE1vdXNlZG93bkxpc3RlbmVyLFJTKSx0LnJlbW92ZUV2ZW50TGlzdGVuZXIoInRvdWNoc3RhcnQiLHRoaXMuX2RvY3VtZW50VG91Y2hzdGFydExpc3RlbmVyLFJTKSxuLnJlbW92ZUV2ZW50TGlzdGVuZXIoImZvY3VzIix0aGlzLl93aW5kb3dGb2N1c0xpc3RlbmVyKSxjbGVhclRpbWVvdXQodGhpcy5fd2luZG93Rm9jdXNUaW1lb3V0SWQpLGNsZWFyVGltZW91dCh0aGlzLl90b3VjaFRpbWVvdXRJZCksY2xlYXJUaW1lb3V0KHRoaXMuX29yaWdpblRpbWVvdXRJZCl9fX1mdW5jdGlvbiBEUyh0KXtyZXR1cm4gdC5jb21wb3NlZFBhdGg/dC5jb21wb3NlZFBhdGgoKVswXTp0LnRhcmdldH1UUy7JtWZhYz1mdW5jdGlvbiB0KG4pe3JldHVybiBuZXcobnx8VFMpKFphKEpfKSxaYShTdyksWmEoekMsOCksWmEoelMsOCkpfSxUUy7JtXByb3Y9V2Uoe2ZhY3Rvcnk6ZnVuY3Rpb24gdCgpe3JldHVybiBuZXcgVFMoWmEoSl8pLFphKFN3KSxaYSh6Qyw4KSxaYSh6Uyw4KSl9LHRva2VuOlRTLHByb3ZpZGVkSW46InJvb3QifSksVFMuY3RvclBhcmFtZXRlcnM9KCk9Plt7dHlwZTpKX30se3R5cGU6U3d9LHt0eXBlOnZvaWQgMCxkZWNvcmF0b3JzOlt7dHlwZTpOZX0se3R5cGU6SWUsYXJnczpbekNdfV19LHt0eXBlOnZvaWQgMCxkZWNvcmF0b3JzOlt7dHlwZTpOZX0se3R5cGU6SWUsYXJnczpbelNdfV19XTtjbGFzcyBJU3tjb25zdHJ1Y3Rvcih0LG4pe3RoaXMuX2VsZW1lbnRSZWY9dCx0aGlzLl9mb2N1c01vbml0b3I9bix0aGlzLmNka0ZvY3VzQ2hhbmdlPW5ldyBFZn1uZ0FmdGVyVmlld0luaXQoKXtjb25zdCB0PXRoaXMuX2VsZW1lbnRSZWYubmF0aXZlRWxlbWVudDt0aGlzLl9tb25pdG9yU3Vic2NyaXB0aW9uPXRoaXMuX2ZvY3VzTW9uaXRvci5tb25pdG9yKHQsMT09PXQubm9kZVR5cGUmJnQuaGFzQXR0cmlidXRlKCJjZGtNb25pdG9yU3VidHJlZUZvY3VzIikpLnN1YnNjcmliZSgodD0+dGhpcy5jZGtGb2N1c0NoYW5nZS5lbWl0KHQpKSl9bmdPbkRlc3Ryb3koKXt0aGlzLl9mb2N1c01vbml0b3Iuc3RvcE1vbml0b3JpbmcodGhpcy5fZWxlbWVudFJlZiksdGhpcy5fbW9uaXRvclN1YnNjcmlwdGlvbiYmdGhpcy5fbW9uaXRvclN1YnNjcmlwdGlvbi51bnN1YnNjcmliZSgpfX1JUy7JtWZhYz1mdW5jdGlvbiB0KG4pe3JldHVybiBuZXcobnx8SVMpKFpnKHh1KSxaZyhUUykpfSxJUy7JtWRpcj12byh7dHlwZTpJUyxzZWxlY3RvcnM6W1siIiwiY2RrTW9uaXRvckVsZW1lbnRGb2N1cyIsIiJdLFsiIiwiY2RrTW9uaXRvclN1YnRyZWVGb2N1cyIsIiJdXSxvdXRwdXRzOntjZGtGb2N1c0NoYW5nZToiY2RrRm9jdXNDaGFuZ2UifX0pLElTLmN0b3JQYXJhbWV0ZXJzPSgpPT5be3R5cGU6eHV9LHt0eXBlOlRTfV0sSVMucHJvcERlY29yYXRvcnM9e2Nka0ZvY3VzQ2hhbmdlOlt7dHlwZTpoX31dfTsKLyoqCiAgICAgKiBAbGljZW5zZQogICAgICogQ29weXJpZ2h0IEdvb2dsZSBMTEMgQWxsIFJpZ2h0cyBSZXNlcnZlZC4KICAgICAqCiAgICAgKiBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhbiBNSVQtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQogICAgICogZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZSBhdCBodHRwczovL2FuZ3VsYXIuaW8vbGljZW5zZQogICAgICovCmNvbnN0IE5TPSJjZGstaGlnaC1jb250cmFzdC1ibGFjay1vbi13aGl0ZSIsRlM9ImNkay1oaWdoLWNvbnRyYXN0LXdoaXRlLW9uLWJsYWNrIixMUz0iY2RrLWhpZ2gtY29udHJhc3QtYWN0aXZlIjtjbGFzcyBIU3tjb25zdHJ1Y3Rvcih0LG4pe3RoaXMuX3BsYXRmb3JtPXQsdGhpcy5fZG9jdW1lbnQ9bn1nZXRIaWdoQ29udHJhc3RNb2RlKCl7aWYoIXRoaXMuX3BsYXRmb3JtLmlzQnJvd3NlcilyZXR1cm4gMDtjb25zdCB0PXRoaXMuX2RvY3VtZW50LmNyZWF0ZUVsZW1lbnQoImRpdiIpO3Quc3R5bGUuYmFja2dyb3VuZENvbG9yPSJyZ2IoMSwyLDMpIix0LnN0eWxlLnBvc2l0aW9uPSJhYnNvbHV0ZSIsdGhpcy5fZG9jdW1lbnQuYm9keS5hcHBlbmRDaGlsZCh0KTtjb25zdCBuPXRoaXMuX2RvY3VtZW50LmRlZmF1bHRWaWV3fHx3aW5kb3csZT1uJiZuLmdldENvbXB1dGVkU3R5bGU/bi5nZXRDb21wdXRlZFN0eWxlKHQpOm51bGwsYT0oZSYmZS5iYWNrZ3JvdW5kQ29sb3J8fCIiKS5yZXBsYWNlKC8gL2csIiIpO3N3aXRjaCh0aGlzLl9kb2N1bWVudC5ib2R5LnJlbW92ZUNoaWxkKHQpLGEpe2Nhc2UicmdiKDAsMCwwKSI6cmV0dXJuIDI7Y2FzZSJyZ2IoMjU1LDI1NSwyNTUpIjpyZXR1cm4gMX1yZXR1cm4gMH1fYXBwbHlCb2R5SGlnaENvbnRyYXN0TW9kZUNzc0NsYXNzZXMoKXtpZih0aGlzLl9wbGF0Zm9ybS5pc0Jyb3dzZXImJnRoaXMuX2RvY3VtZW50LmJvZHkpe2NvbnN0IHQ9dGhpcy5fZG9jdW1lbnQuYm9keS5jbGFzc0xpc3Q7dC5yZW1vdmUoTFMpLHQucmVtb3ZlKE5TKSx0LnJlbW92ZShGUyk7Y29uc3Qgbj10aGlzLmdldEhpZ2hDb250cmFzdE1vZGUoKTsxPT09bj8odC5hZGQoTFMpLHQuYWRkKE5TKSk6Mj09PW4mJih0LmFkZChMUyksdC5hZGQoRlMpKX19fUhTLsm1ZmFjPWZ1bmN0aW9uIHQobil7cmV0dXJuIG5ldyhufHxIUykoWmEoU3cpLFphKHpDKSl9LEhTLsm1cHJvdj1XZSh7ZmFjdG9yeTpmdW5jdGlvbiB0KCl7cmV0dXJuIG5ldyBIUyhaYShTdyksWmEoekMpKX0sdG9rZW46SFMscHJvdmlkZWRJbjoicm9vdCJ9KSxIUy5jdG9yUGFyYW1ldGVycz0oKT0+W3t0eXBlOlN3fSx7dHlwZTp2b2lkIDAsZGVjb3JhdG9yczpbe3R5cGU6SWUsYXJnczpbekNdfV19XQovKioKICAgICAqIEBsaWNlbnNlCiAgICAgKiBDb3B5cmlnaHQgR29vZ2xlIExMQyBBbGwgUmlnaHRzIFJlc2VydmVkLgogICAgICoKICAgICAqIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGFuIE1JVC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCiAgICAgKiBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlIGF0IGh0dHBzOi8vYW5ndWxhci5pby9saWNlbnNlCiAgICAgKi87Y2xhc3MgQlN7Y29uc3RydWN0b3IodCl7dC5fYXBwbHlCb2R5SGlnaENvbnRyYXN0TW9kZUNzc0NsYXNzZXMoKX19QlMuybVtb2Q9eG8oe3R5cGU6QlN9KSxCUy7JtWluaj1HZSh7ZmFjdG9yeTpmdW5jdGlvbiB0KG4pe3JldHVybiBuZXcobnx8QlMpKFphKEhTKSl9LGltcG9ydHM6W1tFdyx0U11dfSksQlMuY3RvclBhcmFtZXRlcnM9KCk9Plt7dHlwZTpIU31dLCgidW5kZWZpbmVkIj09dHlwZW9mIG5nSml0TW9kZXx8bmdKaXRNb2RlKSYmeW8oQlMse2RlY2xhcmF0aW9uczpmdW5jdGlvbigpe3JldHVybltFUyxmUyxJU119LGltcG9ydHM6ZnVuY3Rpb24oKXtyZXR1cm5bRXcsdFNdfSxleHBvcnRzOmZ1bmN0aW9uKCl7cmV0dXJuW0VTLGZTLElTXX19KTtjb25zdCBWUz1uZXcgRmEoImNkay1kaXItZG9jIix7cHJvdmlkZWRJbjoicm9vdCIsZmFjdG9yeTpmdW5jdGlvbiBqUygpe3JldHVybiBKYSh6Qyl9Ci8qKgogICAgICogQGxpY2Vuc2UKICAgICAqIENvcHlyaWdodCBHb29nbGUgTExDIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCiAgICAgKgogICAgICogVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYW4gTUlULXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKICAgICAqIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUgYXQgaHR0cHM6Ly9hbmd1bGFyLmlvL2xpY2Vuc2UKICAgICAqL30pO2NsYXNzIFVTe2NvbnN0cnVjdG9yKHQpe2lmKHRoaXMudmFsdWU9Imx0ciIsdGhpcy5jaGFuZ2U9bmV3IEVmLHQpe2NvbnN0IG49dC5kb2N1bWVudEVsZW1lbnQ/dC5kb2N1bWVudEVsZW1lbnQuZGlyOm51bGwsZT0odC5ib2R5P3QuYm9keS5kaXI6bnVsbCl8fG47dGhpcy52YWx1ZT0ibHRyIj09PWV8fCJydGwiPT09ZT9lOiJsdHIifX1uZ09uRGVzdHJveSgpe3RoaXMuY2hhbmdlLmNvbXBsZXRlKCl9fVVTLsm1ZmFjPWZ1bmN0aW9uIHQobil7cmV0dXJuIG5ldyhufHxVUykoWmEoVlMsOCkpfSxVUy7JtXByb3Y9V2Uoe2ZhY3Rvcnk6ZnVuY3Rpb24gdCgpe3JldHVybiBuZXcgVVMoWmEoVlMsOCkpfSx0b2tlbjpVUyxwcm92aWRlZEluOiJyb290In0pLFVTLmN0b3JQYXJhbWV0ZXJzPSgpPT5be3R5cGU6dm9pZCAwLGRlY29yYXRvcnM6W3t0eXBlOk5lfSx7dHlwZTpJZSxhcmdzOltWU119XX1dCi8qKgogICAgICogQGxpY2Vuc2UKICAgICAqIENvcHlyaWdodCBHb29nbGUgTExDIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCiAgICAgKgogICAgICogVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYW4gTUlULXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKICAgICAqIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUgYXQgaHR0cHM6Ly9hbmd1bGFyLmlvL2xpY2Vuc2UKICAgICAqLztjbGFzcyBXU3tjb25zdHJ1Y3Rvcigpe3RoaXMuX2Rpcj0ibHRyIix0aGlzLl9pc0luaXRpYWxpemVkPSExLHRoaXMuY2hhbmdlPW5ldyBFZn1nZXQgZGlyKCl7cmV0dXJuIHRoaXMuX2Rpcn1zZXQgZGlyKHQpe2NvbnN0IG49dGhpcy5fZGlyLGU9dD90LnRvTG93ZXJDYXNlKCk6dDt0aGlzLl9yYXdEaXI9dCx0aGlzLl9kaXI9Imx0ciI9PT1lfHwicnRsIj09PWU/ZToibHRyIixuIT09dGhpcy5fZGlyJiZ0aGlzLl9pc0luaXRpYWxpemVkJiZ0aGlzLmNoYW5nZS5lbWl0KHRoaXMuX2Rpcil9Z2V0IHZhbHVlKCl7cmV0dXJuIHRoaXMuZGlyfW5nQWZ0ZXJDb250ZW50SW5pdCgpe3RoaXMuX2lzSW5pdGlhbGl6ZWQ9ITB9bmdPbkRlc3Ryb3koKXt0aGlzLmNoYW5nZS5jb21wbGV0ZSgpfX1XUy7JtWZhYz1mdW5jdGlvbiB0KG4pe3JldHVybiBuZXcobnx8V1MpfSxXUy7JtWRpcj12byh7dHlwZTpXUyxzZWxlY3RvcnM6W1siIiwiZGlyIiwiIl1dLGhvc3RWYXJzOjEsaG9zdEJpbmRpbmdzOmZ1bmN0aW9uIHQobixlKXsyJm4mJk5nKCJkaXIiLGUuX3Jhd0Rpcil9LGlucHV0czp7ZGlyOiJkaXIifSxvdXRwdXRzOntjaGFuZ2U6ImRpckNoYW5nZSJ9LGV4cG9ydEFzOlsiZGlyIl0sZmVhdHVyZXM6W011KFt7cHJvdmlkZTpVUyx1c2VFeGlzdGluZzpXU31dKV19KSxXUy5wcm9wRGVjb3JhdG9ycz17Y2hhbmdlOlt7dHlwZTpoXyxhcmdzOlsiZGlyQ2hhbmdlIl19XSxkaXI6W3t0eXBlOmZffV19OwovKioKICAgICAqIEBsaWNlbnNlCiAgICAgKiBDb3B5cmlnaHQgR29vZ2xlIExMQyBBbGwgUmlnaHRzIFJlc2VydmVkLgogICAgICoKICAgICAqIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGFuIE1JVC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCiAgICAgKiBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlIGF0IGh0dHBzOi8vYW5ndWxhci5pby9saWNlbnNlCiAgICAgKi8KY2xhc3MgR1N7fUdTLsm1bW9kPXhvKHt0eXBlOkdTfSksR1MuybVpbmo9R2Uoe2ZhY3Rvcnk6ZnVuY3Rpb24gdChuKXtyZXR1cm4gbmV3KG58fEdTKX19KSwoInVuZGVmaW5lZCI9PXR5cGVvZiBuZ0ppdE1vZGV8fG5nSml0TW9kZSkmJnlvKEdTLHtkZWNsYXJhdGlvbnM6W1dTXSxleHBvcnRzOltXU119KTsKLyoqCiAgICAgKiBAbGljZW5zZQogICAgICogQ29weXJpZ2h0IEdvb2dsZSBMTEMgQWxsIFJpZ2h0cyBSZXNlcnZlZC4KICAgICAqCiAgICAgKiBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhbiBNSVQtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQogICAgICogZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZSBhdCBodHRwczovL2FuZ3VsYXIuaW8vbGljZW5zZQogICAgICovCmNvbnN0IFlTPW5ldyBSdSgiMTAuMi43IikscVM9WyIqIixbWyJtYXQtb3B0aW9uIl0sWyJuZy1jb250YWluZXIiXV1dO2Z1bmN0aW9uIFpTKHQsbil7aWYoMSZ0JiZ0cCgwLCJtYXQtcHNldWRvLWNoZWNrYm94IiwzKSwyJnQpe2NvbnN0IHQ9Z3AoKTtKZygic3RhdGUiLHQuc2VsZWN0ZWQ/ImNoZWNrZWQiOiJ1bmNoZWNrZWQiKSgiZGlzYWJsZWQiLHQuZGlzYWJsZWQpfX1uZXcgUnUoIjEwLjIuNyIpOwovKioKICAgICAqIEBsaWNlbnNlCiAgICAgKiBDb3B5cmlnaHQgR29vZ2xlIExMQyBBbGwgUmlnaHRzIFJlc2VydmVkLgogICAgICoKICAgICAqIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGFuIE1JVC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCiAgICAgKiBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlIGF0IGh0dHBzOi8vYW5ndWxhci5pby9saWNlbnNlCiAgICAgKi8KY2xhc3MgWFN7fVhTLlNUQU5EQVJEX0NVUlZFPSJjdWJpYy1iZXppZXIoMC40LDAuMCwwLjIsMSkiLFhTLkRFQ0VMRVJBVElPTl9DVVJWRT0iY3ViaWMtYmV6aWVyKDAuMCwwLjAsMC4yLDEpIixYUy5BQ0NFTEVSQVRJT05fQ1VSVkU9ImN1YmljLWJlemllcigwLjQsMC4wLDEsMSkiLFhTLlNIQVJQX0NVUlZFPSJjdWJpYy1iZXppZXIoMC40LDAuMCwwLjYsMSkiO2NsYXNzIEpTe31KUy5DT01QTEVYPSIzNzVtcyIsSlMuRU5URVJJTkc9IjIyNW1zIixKUy5FWElUSU5HPSIxOTVtcyI7Ci8qKgogICAgICogQGxpY2Vuc2UKICAgICAqIENvcHlyaWdodCBHb29nbGUgTExDIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCiAgICAgKgogICAgICogVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYW4gTUlULXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKICAgICAqIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUgYXQgaHR0cHM6Ly9hbmd1bGFyLmlvL2xpY2Vuc2UKICAgICAqLwpjb25zdCBRUz1uZXcgUnUoIjEwLjIuNyIpLEtTPW5ldyBGYSgibWF0LXNhbml0eS1jaGVja3MiLHtwcm92aWRlZEluOiJyb290IixmYWN0b3J5OmZ1bmN0aW9uICRTKCl7cmV0dXJuITB9fSk7Y2xhc3MgdEV7Y29uc3RydWN0b3IodCxuLGUpe3RoaXMuX2hhc0RvbmVHbG9iYWxDaGVja3M9ITEsdGhpcy5fZG9jdW1lbnQ9ZSx0Ll9hcHBseUJvZHlIaWdoQ29udHJhc3RNb2RlQ3NzQ2xhc3NlcygpLHRoaXMuX3Nhbml0eUNoZWNrcz1uLHRoaXMuX2hhc0RvbmVHbG9iYWxDaGVja3N8fCh0aGlzLl9jaGVja0RvY3R5cGVJc0RlZmluZWQoKSx0aGlzLl9jaGVja1RoZW1lSXNQcmVzZW50KCksdGhpcy5fY2hlY2tDZGtWZXJzaW9uTWF0Y2goKSx0aGlzLl9oYXNEb25lR2xvYmFsQ2hlY2tzPSEwKX1fZ2V0RG9jdW1lbnQoKXtjb25zdCB0PXRoaXMuX2RvY3VtZW50fHxkb2N1bWVudDtyZXR1cm4ib2JqZWN0Ij09dHlwZW9mIHQmJnQ/dDpudWxsfV9nZXRXaW5kb3coKXtjb25zdCB0PXRoaXMuX2dldERvY3VtZW50KCksbj0obnVsbD09dD92b2lkIDA6dC5kZWZhdWx0Vmlldyl8fHdpbmRvdztyZXR1cm4ib2JqZWN0Ij09dHlwZW9mIG4mJm4/bjpudWxsfV9jaGVja3NBcmVFbmFibGVkKCl7cmV0dXJuIF9jKCkmJiF0aGlzLl9pc1Rlc3RFbnYoKX1faXNUZXN0RW52KCl7Y29uc3QgdD10aGlzLl9nZXRXaW5kb3coKTtyZXR1cm4gdCYmKHQuX19rYXJtYV9ffHx0Lmphc21pbmUpfV9jaGVja0RvY3R5cGVJc0RlZmluZWQoKXtjb25zdCB0PXRoaXMuX2NoZWNrc0FyZUVuYWJsZWQoKSYmKCEwPT09dGhpcy5fc2FuaXR5Q2hlY2tzfHx0aGlzLl9zYW5pdHlDaGVja3MuZG9jdHlwZSksbj10aGlzLl9nZXREb2N1bWVudCgpO3QmJm4mJiFuLmRvY3R5cGUmJmNvbnNvbGUud2FybigiQ3VycmVudCBkb2N1bWVudCBkb2VzIG5vdCBoYXZlIGEgZG9jdHlwZS4gVGhpcyBtYXkgY2F1c2Ugc29tZSBBbmd1bGFyIE1hdGVyaWFsIGNvbXBvbmVudHMgbm90IHRvIGJlaGF2ZSBhcyBleHBlY3RlZC4iKX1fY2hlY2tUaGVtZUlzUHJlc2VudCgpe2NvbnN0IHQ9IXRoaXMuX2NoZWNrc0FyZUVuYWJsZWQoKXx8ITE9PT10aGlzLl9zYW5pdHlDaGVja3N8fCF0aGlzLl9zYW5pdHlDaGVja3MudGhlbWUsbj10aGlzLl9nZXREb2N1bWVudCgpO2lmKHR8fCFufHwhbi5ib2R5fHwiZnVuY3Rpb24iIT10eXBlb2YgZ2V0Q29tcHV0ZWRTdHlsZSlyZXR1cm47Y29uc3QgZT1uLmNyZWF0ZUVsZW1lbnQoImRpdiIpO2UuY2xhc3NMaXN0LmFkZCgibWF0LXRoZW1lLWxvYWRlZC1tYXJrZXIiKSxuLmJvZHkuYXBwZW5kQ2hpbGQoZSk7Y29uc3QgYT1nZXRDb21wdXRlZFN0eWxlKGUpO2EmJiJub25lIiE9PWEuZGlzcGxheSYmY29uc29sZS53YXJuKCJDb3VsZCBub3QgZmluZCBBbmd1bGFyIE1hdGVyaWFsIGNvcmUgdGhlbWUuIE1vc3QgTWF0ZXJpYWwgY29tcG9uZW50cyBtYXkgbm90IHdvcmsgYXMgZXhwZWN0ZWQuIEZvciBtb3JlIGluZm8gcmVmZXIgdG8gdGhlIHRoZW1pbmcgZ3VpZGU6IGh0dHBzOi8vbWF0ZXJpYWwuYW5ndWxhci5pby9ndWlkZS90aGVtaW5nIiksbi5ib2R5LnJlbW92ZUNoaWxkKGUpfV9jaGVja0Nka1ZlcnNpb25NYXRjaCgpe3RoaXMuX2NoZWNrc0FyZUVuYWJsZWQoKSYmKCEwPT09dGhpcy5fc2FuaXR5Q2hlY2tzfHx0aGlzLl9zYW5pdHlDaGVja3MudmVyc2lvbikmJlFTLmZ1bGwhPT1ZUy5mdWxsJiZjb25zb2xlLndhcm4oIlRoZSBBbmd1bGFyIE1hdGVyaWFsIHZlcnNpb24gKCIrUVMuZnVsbCsiKSBkb2VzIG5vdCBtYXRjaCB0aGUgQW5ndWxhciBDREsgdmVyc2lvbiAoIitZUy5mdWxsKyIpLlxuUGxlYXNlIGVuc3VyZSB0aGUgdmVyc2lvbnMgb2YgdGhlc2UgdHdvIHBhY2thZ2VzIGV4YWN0bHkgbWF0Y2guIil9fQovKioKICAgICAqIEBsaWNlbnNlCiAgICAgKiBDb3B5cmlnaHQgR29vZ2xlIExMQyBBbGwgUmlnaHRzIFJlc2VydmVkLgogICAgICoKICAgICAqIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGFuIE1JVC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCiAgICAgKiBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlIGF0IGh0dHBzOi8vYW5ndWxhci5pby9saWNlbnNlCiAgICAgKi8KZnVuY3Rpb24gbkUodCl7cmV0dXJuIGNsYXNzIGV4dGVuZHMgdHtjb25zdHJ1Y3RvciguLi50KXtzdXBlciguLi50KSx0aGlzLl9kaXNhYmxlZD0hMX1nZXQgZGlzYWJsZWQoKXtyZXR1cm4gdGhpcy5fZGlzYWJsZWR9c2V0IGRpc2FibGVkKHQpe3RoaXMuX2Rpc2FibGVkPUd3KHQpfX19Ci8qKgogICAgICogQGxpY2Vuc2UKICAgICAqIENvcHlyaWdodCBHb29nbGUgTExDIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCiAgICAgKgogICAgICogVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYW4gTUlULXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKICAgICAqIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUgYXQgaHR0cHM6Ly9hbmd1bGFyLmlvL2xpY2Vuc2UKICAgICAqL2Z1bmN0aW9uIGVFKHQsbil7cmV0dXJuIGNsYXNzIGV4dGVuZHMgdHtjb25zdHJ1Y3RvciguLi50KXtzdXBlciguLi50KSx0aGlzLmRlZmF1bHRDb2xvcj1uLHRoaXMuY29sb3I9bn1nZXQgY29sb3IoKXtyZXR1cm4gdGhpcy5fY29sb3J9c2V0IGNvbG9yKHQpe2NvbnN0IG49dHx8dGhpcy5kZWZhdWx0Q29sb3I7biE9PXRoaXMuX2NvbG9yJiYodGhpcy5fY29sb3ImJnRoaXMuX2VsZW1lbnRSZWYubmF0aXZlRWxlbWVudC5jbGFzc0xpc3QucmVtb3ZlKGBtYXQtJHt0aGlzLl9jb2xvcn1gKSxuJiZ0aGlzLl9lbGVtZW50UmVmLm5hdGl2ZUVsZW1lbnQuY2xhc3NMaXN0LmFkZChgbWF0LSR7bn1gKSx0aGlzLl9jb2xvcj1uKX19fQovKioKICAgICAqIEBsaWNlbnNlCiAgICAgKiBDb3B5cmlnaHQgR29vZ2xlIExMQyBBbGwgUmlnaHRzIFJlc2VydmVkLgogICAgICoKICAgICAqIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGFuIE1JVC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCiAgICAgKiBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlIGF0IGh0dHBzOi8vYW5ndWxhci5pby9saWNlbnNlCiAgICAgKi9mdW5jdGlvbiBhRSh0KXtyZXR1cm4gY2xhc3MgZXh0ZW5kcyB0e2NvbnN0cnVjdG9yKC4uLnQpe3N1cGVyKC4uLnQpLHRoaXMuX2Rpc2FibGVSaXBwbGU9ITF9Z2V0IGRpc2FibGVSaXBwbGUoKXtyZXR1cm4gdGhpcy5fZGlzYWJsZVJpcHBsZX1zZXQgZGlzYWJsZVJpcHBsZSh0KXt0aGlzLl9kaXNhYmxlUmlwcGxlPUd3KHQpfX19Ci8qKgogICAgICogQGxpY2Vuc2UKICAgICAqIENvcHlyaWdodCBHb29nbGUgTExDIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCiAgICAgKgogICAgICogVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYW4gTUlULXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKICAgICAqIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUgYXQgaHR0cHM6Ly9hbmd1bGFyLmlvL2xpY2Vuc2UKICAgICAqL2Z1bmN0aW9uIG9FKHQsbj0wKXtyZXR1cm4gY2xhc3MgZXh0ZW5kcyB0e2NvbnN0cnVjdG9yKC4uLnQpe3N1cGVyKC4uLnQpLHRoaXMuX3RhYkluZGV4PW4sdGhpcy5kZWZhdWx0VGFiSW5kZXg9bn1nZXQgdGFiSW5kZXgoKXtyZXR1cm4gdGhpcy5kaXNhYmxlZD8tMTp0aGlzLl90YWJJbmRleH1zZXQgdGFiSW5kZXgodCl7dGhpcy5fdGFiSW5kZXg9bnVsbCE9dD9Zdyh0KTp0aGlzLmRlZmF1bHRUYWJJbmRleH19fQovKioKICAgICAqIEBsaWNlbnNlCiAgICAgKiBDb3B5cmlnaHQgR29vZ2xlIExMQyBBbGwgUmlnaHRzIFJlc2VydmVkLgogICAgICoKICAgICAqIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGFuIE1JVC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCiAgICAgKiBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlIGF0IGh0dHBzOi8vYW5ndWxhci5pby9saWNlbnNlCiAgICAgKi9mdW5jdGlvbiByRSh0KXtyZXR1cm4gY2xhc3MgZXh0ZW5kcyB0e2NvbnN0cnVjdG9yKC4uLnQpe3N1cGVyKC4uLnQpLHRoaXMuZXJyb3JTdGF0ZT0hMSx0aGlzLnN0YXRlQ2hhbmdlcz1uZXcgeH11cGRhdGVFcnJvclN0YXRlKCl7Y29uc3QgdD10aGlzLmVycm9yU3RhdGUsbj0odGhpcy5lcnJvclN0YXRlTWF0Y2hlcnx8dGhpcy5fZGVmYXVsdEVycm9yU3RhdGVNYXRjaGVyKS5pc0Vycm9yU3RhdGUodGhpcy5uZ0NvbnRyb2w/dGhpcy5uZ0NvbnRyb2wuY29udHJvbDpudWxsLHRoaXMuX3BhcmVudEZvcm1Hcm91cHx8dGhpcy5fcGFyZW50Rm9ybSk7biE9PXQmJih0aGlzLmVycm9yU3RhdGU9bix0aGlzLnN0YXRlQ2hhbmdlcy5uZXh0KCkpfX19Ci8qKgogICAgICogQGxpY2Vuc2UKICAgICAqIENvcHlyaWdodCBHb29nbGUgTExDIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCiAgICAgKgogICAgICogVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYW4gTUlULXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKICAgICAqIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUgYXQgaHR0cHM6Ly9hbmd1bGFyLmlvL2xpY2Vuc2UKICAgICAqL2Z1bmN0aW9uIGlFKHQpe3JldHVybiBjbGFzcyBleHRlbmRzIHR7Y29uc3RydWN0b3IoLi4udCl7c3VwZXIoLi4udCksdGhpcy5faXNJbml0aWFsaXplZD0hMSx0aGlzLl9wZW5kaW5nU3Vic2NyaWJlcnM9W10sdGhpcy5pbml0aWFsaXplZD1uZXcgXygodD0+e3RoaXMuX2lzSW5pdGlhbGl6ZWQ/dGhpcy5fbm90aWZ5U3Vic2NyaWJlcih0KTp0aGlzLl9wZW5kaW5nU3Vic2NyaWJlcnMucHVzaCh0KX0pKX1fbWFya0luaXRpYWxpemVkKCl7aWYodGhpcy5faXNJbml0aWFsaXplZCYmKCJ1bmRlZmluZWQiPT10eXBlb2YgbmdEZXZNb2RlfHxuZ0Rldk1vZGUpKXRocm93IEVycm9yKCJUaGlzIGRpcmVjdGl2ZSBoYXMgYWxyZWFkeSBiZWVuIG1hcmtlZCBhcyBpbml0aWFsaXplZCBhbmQgc2hvdWxkIG5vdCBiZSBjYWxsZWQgdHdpY2UuIik7dGhpcy5faXNJbml0aWFsaXplZD0hMCx0aGlzLl9wZW5kaW5nU3Vic2NyaWJlcnMuZm9yRWFjaCh0aGlzLl9ub3RpZnlTdWJzY3JpYmVyKSx0aGlzLl9wZW5kaW5nU3Vic2NyaWJlcnM9bnVsbH1fbm90aWZ5U3Vic2NyaWJlcih0KXt0Lm5leHQoKSx0LmNvbXBsZXRlKCl9fX0KLyoqCiAgICAgKiBAbGljZW5zZQogICAgICogQ29weXJpZ2h0IEdvb2dsZSBMTEMgQWxsIFJpZ2h0cyBSZXNlcnZlZC4KICAgICAqCiAgICAgKiBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhbiBNSVQtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQogICAgICogZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZSBhdCBodHRwczovL2FuZ3VsYXIuaW8vbGljZW5zZQogICAgICovCi8qKgogICAgICogQGxpY2Vuc2UKICAgICAqIENvcHlyaWdodCBHb29nbGUgTExDIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCiAgICAgKgogICAgICogVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYW4gTUlULXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKICAgICAqIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUgYXQgaHR0cHM6Ly9hbmd1bGFyLmlvL2xpY2Vuc2UKICAgICAqL3RFLsm1bW9kPXhvKHt0eXBlOnRFfSksdEUuybVpbmo9R2Uoe2ZhY3Rvcnk6ZnVuY3Rpb24gdChuKXtyZXR1cm4gbmV3KG58fHRFKShaYShIUyksWmEoS1MsOCksWmEoekMsOCkpfSxpbXBvcnRzOltbR1NdLEdTXX0pLHRFLmN0b3JQYXJhbWV0ZXJzPSgpPT5be3R5cGU6SFN9LHt0eXBlOnZvaWQgMCxkZWNvcmF0b3JzOlt7dHlwZTpOZX0se3R5cGU6SWUsYXJnczpbS1NdfV19LHt0eXBlOnZvaWQgMCxkZWNvcmF0b3JzOlt7dHlwZTpOZX0se3R5cGU6SWUsYXJnczpbekNdfV19XSwoInVuZGVmaW5lZCI9PXR5cGVvZiBuZ0ppdE1vZGV8fG5nSml0TW9kZSkmJnlvKHRFLHtpbXBvcnRzOmZ1bmN0aW9uKCl7cmV0dXJuW0dTXX0sZXhwb3J0czpmdW5jdGlvbigpe3JldHVybltHU119fSk7Y29uc3QgY0U9bmV3IEZhKCJNQVRfREFURV9MT0NBTEUiLHtwcm92aWRlZEluOiJyb290IixmYWN0b3J5OmZ1bmN0aW9uIHNFKCl7cmV0dXJuIEphKE5fKX19KTtjbGFzcyBsRXtjb25zdHJ1Y3Rvcigpe3RoaXMuX2xvY2FsZUNoYW5nZXM9bmV3IHgsdGhpcy5sb2NhbGVDaGFuZ2VzPXRoaXMuX2xvY2FsZUNoYW5nZXN9Z2V0VmFsaWREYXRlT3JOdWxsKHQpe3JldHVybiB0aGlzLmlzRGF0ZUluc3RhbmNlKHQpJiZ0aGlzLmlzVmFsaWQodCk/dDpudWxsfWRlc2VyaWFsaXplKHQpe3JldHVybiBudWxsPT10fHx0aGlzLmlzRGF0ZUluc3RhbmNlKHQpJiZ0aGlzLmlzVmFsaWQodCk/dDp0aGlzLmludmFsaWQoKX1zZXRMb2NhbGUodCl7dGhpcy5sb2NhbGU9dCx0aGlzLl9sb2NhbGVDaGFuZ2VzLm5leHQoKX1jb21wYXJlRGF0ZSh0LG4pe3JldHVybiB0aGlzLmdldFllYXIodCktdGhpcy5nZXRZZWFyKG4pfHx0aGlzLmdldE1vbnRoKHQpLXRoaXMuZ2V0TW9udGgobil8fHRoaXMuZ2V0RGF0ZSh0KS10aGlzLmdldERhdGUobil9c2FtZURhdGUodCxuKXtpZih0JiZuKXtsZXQgZT10aGlzLmlzVmFsaWQodCksYT10aGlzLmlzVmFsaWQobik7cmV0dXJuIGUmJmE/IXRoaXMuY29tcGFyZURhdGUodCxuKTplPT1hfXJldHVybiB0PT1ufWNsYW1wRGF0ZSh0LG4sZSl7cmV0dXJuIG4mJnRoaXMuY29tcGFyZURhdGUodCxuKTwwP246ZSYmdGhpcy5jb21wYXJlRGF0ZSh0LGUpPjA/ZTp0fX0KLyoqCiAgICAgKiBAbGljZW5zZQogICAgICogQ29weXJpZ2h0IEdvb2dsZSBMTEMgQWxsIFJpZ2h0cyBSZXNlcnZlZC4KICAgICAqCiAgICAgKiBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhbiBNSVQtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQogICAgICogZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZSBhdCBodHRwczovL2FuZ3VsYXIuaW8vbGljZW5zZQogICAgICovY29uc3QgbUU9bmV3IEZhKCJtYXQtZGF0ZS1mb3JtYXRzIik7Ci8qKgogICAgICogQGxpY2Vuc2UKICAgICAqIENvcHlyaWdodCBHb29nbGUgTExDIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCiAgICAgKgogICAgICogVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYW4gTUlULXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKICAgICAqIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUgYXQgaHR0cHM6Ly9hbmd1bGFyLmlvL2xpY2Vuc2UKICAgICAqL2xldCBkRTt0cnl7ZEU9InVuZGVmaW5lZCIhPXR5cGVvZiBJbnRsfWNhdGNoKHQpe2RFPSExfWNvbnN0IGdFPXtsb25nOlsiSmFudWFyeSIsIkZlYnJ1YXJ5IiwiTWFyY2giLCJBcHJpbCIsIk1heSIsIkp1bmUiLCJKdWx5IiwiQXVndXN0IiwiU2VwdGVtYmVyIiwiT2N0b2JlciIsIk5vdmVtYmVyIiwiRGVjZW1iZXIiXSxzaG9ydDpbIkphbiIsIkZlYiIsIk1hciIsIkFwciIsIk1heSIsIkp1biIsIkp1bCIsIkF1ZyIsIlNlcCIsIk9jdCIsIk5vdiIsIkRlYyJdLG5hcnJvdzpbIkoiLCJGIiwiTSIsIkEiLCJNIiwiSiIsIkoiLCJBIiwiUyIsIk8iLCJOIiwiRCJdfSxwRT1mRSgzMSwodD0+U3RyaW5nKHQrMSkpKSxiRT17bG9uZzpbIlN1bmRheSIsIk1vbmRheSIsIlR1ZXNkYXkiLCJXZWRuZXNkYXkiLCJUaHVyc2RheSIsIkZyaWRheSIsIlNhdHVyZGF5Il0sc2hvcnQ6WyJTdW4iLCJNb24iLCJUdWUiLCJXZWQiLCJUaHUiLCJGcmkiLCJTYXQiXSxuYXJyb3c6WyJTIiwiTSIsIlQiLCJXIiwiVCIsIkYiLCJTIl19LHVFPS9eXGR7NH0tXGR7Mn0tXGR7Mn0oPzpUXGR7Mn06XGR7Mn06XGR7Mn0oPzpcLlxkKyk/KD86WnwoPzooPzpcK3wtKVxkezJ9OlxkezJ9KSk/KT8kLztmdW5jdGlvbiBmRSh0LG4pe2NvbnN0IGU9QXJyYXkodCk7Zm9yKGxldCBhPTA7YTx0O2ErKyllW2FdPW4oYSk7cmV0dXJuIGV9Y2xhc3MgaEUgZXh0ZW5kcyBsRXtjb25zdHJ1Y3Rvcih0LG4pe3N1cGVyKCksdGhpcy51c2VVdGNGb3JEaXNwbGF5PSEwLHN1cGVyLnNldExvY2FsZSh0KSx0aGlzLnVzZVV0Y0ZvckRpc3BsYXk9IW4uVFJJREVOVCx0aGlzLl9jbGFtcERhdGU9bi5UUklERU5UfHxuLkVER0V9Z2V0WWVhcih0KXtyZXR1cm4gdC5nZXRGdWxsWWVhcigpfWdldE1vbnRoKHQpe3JldHVybiB0LmdldE1vbnRoKCl9Z2V0RGF0ZSh0KXtyZXR1cm4gdC5nZXREYXRlKCl9Z2V0RGF5T2ZXZWVrKHQpe3JldHVybiB0LmdldERheSgpfWdldE1vbnRoTmFtZXModCl7aWYoZEUpe2NvbnN0IG49bmV3IEludGwuRGF0ZVRpbWVGb3JtYXQodGhpcy5sb2NhbGUse21vbnRoOnQsdGltZVpvbmU6InV0YyJ9KTtyZXR1cm4gZkUoMTIsKHQ9PnRoaXMuX3N0cmlwRGlyZWN0aW9uYWxpdHlDaGFyYWN0ZXJzKHRoaXMuX2Zvcm1hdChuLG5ldyBEYXRlKDIwMTcsdCwxKSkpKSl9cmV0dXJuIGdFW3RdfWdldERhdGVOYW1lcygpe2lmKGRFKXtjb25zdCB0PW5ldyBJbnRsLkRhdGVUaW1lRm9ybWF0KHRoaXMubG9jYWxlLHtkYXk6Im51bWVyaWMiLHRpbWVab25lOiJ1dGMifSk7cmV0dXJuIGZFKDMxLChuPT50aGlzLl9zdHJpcERpcmVjdGlvbmFsaXR5Q2hhcmFjdGVycyh0aGlzLl9mb3JtYXQodCxuZXcgRGF0ZSgyMDE3LDAsbisxKSkpKSl9cmV0dXJuIHBFfWdldERheU9mV2Vla05hbWVzKHQpe2lmKGRFKXtjb25zdCBuPW5ldyBJbnRsLkRhdGVUaW1lRm9ybWF0KHRoaXMubG9jYWxlLHt3ZWVrZGF5OnQsdGltZVpvbmU6InV0YyJ9KTtyZXR1cm4gZkUoNywodD0+dGhpcy5fc3RyaXBEaXJlY3Rpb25hbGl0eUNoYXJhY3RlcnModGhpcy5fZm9ybWF0KG4sbmV3IERhdGUoMjAxNywwLHQrMSkpKSkpfXJldHVybiBiRVt0XX1nZXRZZWFyTmFtZSh0KXtpZihkRSl7Y29uc3Qgbj1uZXcgSW50bC5EYXRlVGltZUZvcm1hdCh0aGlzLmxvY2FsZSx7eWVhcjoibnVtZXJpYyIsdGltZVpvbmU6InV0YyJ9KTtyZXR1cm4gdGhpcy5fc3RyaXBEaXJlY3Rpb25hbGl0eUNoYXJhY3RlcnModGhpcy5fZm9ybWF0KG4sdCkpfXJldHVybiBTdHJpbmcodGhpcy5nZXRZZWFyKHQpKX1nZXRGaXJzdERheU9mV2Vlaygpe3JldHVybiAwfWdldE51bURheXNJbk1vbnRoKHQpe3JldHVybiB0aGlzLmdldERhdGUodGhpcy5fY3JlYXRlRGF0ZVdpdGhPdmVyZmxvdyh0aGlzLmdldFllYXIodCksdGhpcy5nZXRNb250aCh0KSsxLDApKX1jbG9uZSh0KXtyZXR1cm4gbmV3IERhdGUodC5nZXRUaW1lKCkpfWNyZWF0ZURhdGUodCxuLGUpe2lmKCJ1bmRlZmluZWQiPT10eXBlb2YgbmdEZXZNb2RlfHxuZ0Rldk1vZGUpe2lmKG48MHx8bj4xMSl0aHJvdyBFcnJvcihgSW52YWxpZCBtb250aCBpbmRleCAiJHtufSIuIE1vbnRoIGluZGV4IGhhcyB0byBiZSBiZXR3ZWVuIDAgYW5kIDExLmApO2lmKGU8MSl0aHJvdyBFcnJvcihgSW52YWxpZCBkYXRlICIke2V9Ii4gRGF0ZSBoYXMgdG8gYmUgZ3JlYXRlciB0aGFuIDAuYCl9bGV0IGE9dGhpcy5fY3JlYXRlRGF0ZVdpdGhPdmVyZmxvdyh0LG4sZSk7aWYoYS5nZXRNb250aCgpIT1uJiYoInVuZGVmaW5lZCI9PXR5cGVvZiBuZ0Rldk1vZGV8fG5nRGV2TW9kZSkpdGhyb3cgRXJyb3IoYEludmFsaWQgZGF0ZSAiJHtlfSIgZm9yIG1vbnRoIHdpdGggaW5kZXggIiR7bn0iLmApO3JldHVybiBhfXRvZGF5KCl7cmV0dXJuIG5ldyBEYXRlfXBhcnNlKHQpe3JldHVybiJudW1iZXIiPT10eXBlb2YgdD9uZXcgRGF0ZSh0KTp0P25ldyBEYXRlKERhdGUucGFyc2UodCkpOm51bGx9Zm9ybWF0KHQsbil7aWYoIXRoaXMuaXNWYWxpZCh0KSl0aHJvdyBFcnJvcigiTmF0aXZlRGF0ZUFkYXB0ZXI6IENhbm5vdCBmb3JtYXQgaW52YWxpZCBkYXRlLiIpO2lmKGRFKXt0aGlzLl9jbGFtcERhdGUmJih0LmdldEZ1bGxZZWFyKCk8MXx8dC5nZXRGdWxsWWVhcigpPjk5OTkpJiYodD10aGlzLmNsb25lKHQpKS5zZXRGdWxsWWVhcihNYXRoLm1heCgxLE1hdGgubWluKDk5OTksdC5nZXRGdWxsWWVhcigpKSkpLG49T2JqZWN0LmFzc2lnbihPYmplY3QuYXNzaWduKHt9LG4pLHt0aW1lWm9uZToidXRjIn0pO2NvbnN0IGU9bmV3IEludGwuRGF0ZVRpbWVGb3JtYXQodGhpcy5sb2NhbGUsbik7cmV0dXJuIHRoaXMuX3N0cmlwRGlyZWN0aW9uYWxpdHlDaGFyYWN0ZXJzKHRoaXMuX2Zvcm1hdChlLHQpKX1yZXR1cm4gdGhpcy5fc3RyaXBEaXJlY3Rpb25hbGl0eUNoYXJhY3RlcnModC50b0RhdGVTdHJpbmcoKSl9YWRkQ2FsZW5kYXJZZWFycyh0LG4pe3JldHVybiB0aGlzLmFkZENhbGVuZGFyTW9udGhzKHQsMTIqbil9YWRkQ2FsZW5kYXJNb250aHModCxuKXtsZXQgZT10aGlzLl9jcmVhdGVEYXRlV2l0aE92ZXJmbG93KHRoaXMuZ2V0WWVhcih0KSx0aGlzLmdldE1vbnRoKHQpK24sdGhpcy5nZXREYXRlKHQpKTtyZXR1cm4gdGhpcy5nZXRNb250aChlKSE9KCh0aGlzLmdldE1vbnRoKHQpK24pJTEyKzEyKSUxMiYmKGU9dGhpcy5fY3JlYXRlRGF0ZVdpdGhPdmVyZmxvdyh0aGlzLmdldFllYXIoZSksdGhpcy5nZXRNb250aChlKSwwKSksZX1hZGRDYWxlbmRhckRheXModCxuKXtyZXR1cm4gdGhpcy5fY3JlYXRlRGF0ZVdpdGhPdmVyZmxvdyh0aGlzLmdldFllYXIodCksdGhpcy5nZXRNb250aCh0KSx0aGlzLmdldERhdGUodCkrbil9dG9Jc284NjAxKHQpe3JldHVyblt0LmdldFVUQ0Z1bGxZZWFyKCksdGhpcy5fMmRpZ2l0KHQuZ2V0VVRDTW9udGgoKSsxKSx0aGlzLl8yZGlnaXQodC5nZXRVVENEYXRlKCkpXS5qb2luKCItIil9ZGVzZXJpYWxpemUodCl7aWYoInN0cmluZyI9PXR5cGVvZiB0KXtpZighdClyZXR1cm4gbnVsbDtpZih1RS50ZXN0KHQpKXtsZXQgbj1uZXcgRGF0ZSh0KTtpZih0aGlzLmlzVmFsaWQobikpcmV0dXJuIG59fXJldHVybiBzdXBlci5kZXNlcmlhbGl6ZSh0KX1pc0RhdGVJbnN0YW5jZSh0KXtyZXR1cm4gdCBpbnN0YW5jZW9mIERhdGV9aXNWYWxpZCh0KXtyZXR1cm4haXNOYU4odC5nZXRUaW1lKCkpfWludmFsaWQoKXtyZXR1cm4gbmV3IERhdGUoTmFOKX1fY3JlYXRlRGF0ZVdpdGhPdmVyZmxvdyh0LG4sZSl7Y29uc3QgYT1uZXcgRGF0ZTtyZXR1cm4gYS5zZXRGdWxsWWVhcih0LG4sZSksYS5zZXRIb3VycygwLDAsMCwwKSxhfV8yZGlnaXQodCl7cmV0dXJuKCIwMCIrdCkuc2xpY2UoLTIpfV9zdHJpcERpcmVjdGlvbmFsaXR5Q2hhcmFjdGVycyh0KXtyZXR1cm4gdC5yZXBsYWNlKC9bXHUyMDBlXHUyMDBmXS9nLCIiKX1fZm9ybWF0KHQsbil7Y29uc3QgZT1uZXcgRGF0ZTtyZXR1cm4gZS5zZXRVVENGdWxsWWVhcihuLmdldEZ1bGxZZWFyKCksbi5nZXRNb250aCgpLG4uZ2V0RGF0ZSgpKSxlLnNldFVUQ0hvdXJzKG4uZ2V0SG91cnMoKSxuLmdldE1pbnV0ZXMoKSxuLmdldFNlY29uZHMoKSxuLmdldE1pbGxpc2Vjb25kcygpKSx0LmZvcm1hdChlKX19aEUuybVmYWM9ZnVuY3Rpb24gdChuKXtyZXR1cm4gbmV3KG58fGhFKShaYShjRSw4KSxaYShTdykpfSxoRS7JtXByb3Y9V2Uoe3Rva2VuOmhFLGZhY3Rvcnk6aEUuybVmYWN9KSxoRS5jdG9yUGFyYW1ldGVycz0oKT0+W3t0eXBlOlN0cmluZyxkZWNvcmF0b3JzOlt7dHlwZTpOZX0se3R5cGU6SWUsYXJnczpbY0VdfV19LHt0eXBlOlN3fV0KLyoqCiAgICAgKiBAbGljZW5zZQogICAgICogQ29weXJpZ2h0IEdvb2dsZSBMTEMgQWxsIFJpZ2h0cyBSZXNlcnZlZC4KICAgICAqCiAgICAgKiBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhbiBNSVQtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQogICAgICogZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZSBhdCBodHRwczovL2FuZ3VsYXIuaW8vbGljZW5zZQogICAgICovOwovKioKICAgICAqIEBsaWNlbnNlCiAgICAgKiBDb3B5cmlnaHQgR29vZ2xlIExMQyBBbGwgUmlnaHRzIFJlc2VydmVkLgogICAgICoKICAgICAqIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGFuIE1JVC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCiAgICAgKiBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlIGF0IGh0dHBzOi8vYW5ndWxhci5pby9saWNlbnNlCiAgICAgKi8KY2xhc3MgX0V7fV9FLsm1bW9kPXhvKHt0eXBlOl9FfSksX0UuybVpbmo9R2Uoe2ZhY3Rvcnk6ZnVuY3Rpb24gdChuKXtyZXR1cm4gbmV3KG58fF9FKX0scHJvdmlkZXJzOlt7cHJvdmlkZTpsRSx1c2VDbGFzczpoRX1dLGltcG9ydHM6W1tFd11dfSksKCJ1bmRlZmluZWQiPT10eXBlb2YgbmdKaXRNb2RlfHxuZ0ppdE1vZGUpJiZ5byhfRSx7aW1wb3J0czpmdW5jdGlvbigpe3JldHVybltFd119fSk7Y2xhc3MgQ0V7fUNFLsm1bW9kPXhvKHt0eXBlOkNFfSksQ0UuybVpbmo9R2Uoe2ZhY3Rvcnk6ZnVuY3Rpb24gdChuKXtyZXR1cm4gbmV3KG58fENFKX0scHJvdmlkZXJzOlt7cHJvdmlkZTptRSx1c2VWYWx1ZTp7cGFyc2U6e2RhdGVJbnB1dDpudWxsfSxkaXNwbGF5OntkYXRlSW5wdXQ6e3llYXI6Im51bWVyaWMiLG1vbnRoOiJudW1lcmljIixkYXk6Im51bWVyaWMifSxtb250aFllYXJMYWJlbDp7eWVhcjoibnVtZXJpYyIsbW9udGg6InNob3J0In0sZGF0ZUExMXlMYWJlbDp7eWVhcjoibnVtZXJpYyIsbW9udGg6ImxvbmciLGRheToibnVtZXJpYyJ9LG1vbnRoWWVhckExMXlMYWJlbDp7eWVhcjoibnVtZXJpYyIsbW9udGg6ImxvbmcifX19fV0saW1wb3J0czpbW19FXV19KSwoInVuZGVmaW5lZCI9PXR5cGVvZiBuZ0ppdE1vZGV8fG5nSml0TW9kZSkmJnlvKENFLHtpbXBvcnRzOltfRV19KTsKLyoqCiAgICAgKiBAbGljZW5zZQogICAgICogQ29weXJpZ2h0IEdvb2dsZSBMTEMgQWxsIFJpZ2h0cyBSZXNlcnZlZC4KICAgICAqCiAgICAgKiBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhbiBNSVQtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQogICAgICogZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZSBhdCBodHRwczovL2FuZ3VsYXIuaW8vbGljZW5zZQogICAgICovCmNsYXNzIE1Fe2lzRXJyb3JTdGF0ZSh0LG4pe3JldHVybiEhKHQmJnQuaW52YWxpZCYmKHQuZGlydHl8fG4mJm4uc3VibWl0dGVkKSl9fU1FLsm1ZmFjPWZ1bmN0aW9uIHQobil7cmV0dXJuIG5ldyhufHxNRSl9LE1FLsm1cHJvdj1XZSh7dG9rZW46TUUsZmFjdG9yeTpNRS7JtWZhY30pO2NsYXNzIE9Fe2lzRXJyb3JTdGF0ZSh0LG4pe3JldHVybiEhKHQmJnQuaW52YWxpZCYmKHQudG91Y2hlZHx8biYmbi5zdWJtaXR0ZWQpKX19T0UuybVmYWM9ZnVuY3Rpb24gdChuKXtyZXR1cm4gbmV3KG58fE9FKX0sT0UuybVwcm92PVdlKHtmYWN0b3J5OmZ1bmN0aW9uIHQoKXtyZXR1cm4gbmV3IE9FfSx0b2tlbjpPRSxwcm92aWRlZEluOiJyb290In0pOwovKioKICAgICAqIEBsaWNlbnNlCiAgICAgKiBDb3B5cmlnaHQgR29vZ2xlIExMQyBBbGwgUmlnaHRzIFJlc2VydmVkLgogICAgICoKICAgICAqIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGFuIE1JVC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCiAgICAgKiBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlIGF0IGh0dHBzOi8vYW5ndWxhci5pby9saWNlbnNlCiAgICAgKi8KY2xhc3MgUEV7fVBFLsm1ZmFjPWZ1bmN0aW9uIHQobil7cmV0dXJuIG5ldyhufHxQRSl9LFBFLsm1ZGlyPXZvKHt0eXBlOlBFLHNlbGVjdG9yczpbWyIiLCJtYXQtbGluZSIsIiJdLFsiIiwibWF0TGluZSIsIiJdXSxob3N0QXR0cnM6WzEsIm1hdC1saW5lIl19KTtjbGFzcyB4RXt9eEUuybVtb2Q9eG8oe3R5cGU6eEV9KSx4RS7JtWluaj1HZSh7ZmFjdG9yeTpmdW5jdGlvbiB0KG4pe3JldHVybiBuZXcobnx8eEUpfSxpbXBvcnRzOltbdEVdLHRFXX0pLCgidW5kZWZpbmVkIj09dHlwZW9mIG5nSml0TW9kZXx8bmdKaXRNb2RlKSYmeW8oeEUse2RlY2xhcmF0aW9uczpbUEVdLGltcG9ydHM6W3RFXSxleHBvcnRzOltQRSx0RV19KTsKLyoqCiAgICAgKiBAbGljZW5zZQogICAgICogQ29weXJpZ2h0IEdvb2dsZSBMTEMgQWxsIFJpZ2h0cyBSZXNlcnZlZC4KICAgICAqCiAgICAgKiBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhbiBNSVQtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQogICAgICogZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZSBhdCBodHRwczovL2FuZ3VsYXIuaW8vbGljZW5zZQogICAgICovCmNsYXNzIHlFe2NvbnN0cnVjdG9yKHQsbixlKXt0aGlzLl9yZW5kZXJlcj10LHRoaXMuZWxlbWVudD1uLHRoaXMuY29uZmlnPWUsdGhpcy5zdGF0ZT0zfWZhZGVPdXQoKXt0aGlzLl9yZW5kZXJlci5mYWRlT3V0UmlwcGxlKHRoaXMpfX1jb25zdCBrRT17ZW50ZXJEdXJhdGlvbjo0NTAsZXhpdER1cmF0aW9uOjQwMH0sdkU9Tncoe3Bhc3NpdmU6ITB9KSx3RT1bIm1vdXNlZG93biIsInRvdWNoc3RhcnQiXSxTRT1bIm1vdXNldXAiLCJtb3VzZWxlYXZlIiwidG91Y2hlbmQiLCJ0b3VjaGNhbmNlbCJdO2NsYXNzIEVFe2NvbnN0cnVjdG9yKHQsbixlLGEpe3RoaXMuX3RhcmdldD10LHRoaXMuX25nWm9uZT1uLHRoaXMuX2lzUG9pbnRlckRvd249ITEsdGhpcy5fYWN0aXZlUmlwcGxlcz1uZXcgU2V0LHRoaXMuX3BvaW50ZXJVcEV2ZW50c1JlZ2lzdGVyZWQ9ITEsYS5pc0Jyb3dzZXImJih0aGlzLl9jb250YWluZXJFbGVtZW50PUp3KGUpKX1mYWRlSW5SaXBwbGUodCxuLGU9e30pe2NvbnN0IGE9dGhpcy5fY29udGFpbmVyUmVjdD10aGlzLl9jb250YWluZXJSZWN0fHx0aGlzLl9jb250YWluZXJFbGVtZW50LmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpLG89T2JqZWN0LmFzc2lnbihPYmplY3QuYXNzaWduKHt9LGtFKSxlLmFuaW1hdGlvbik7ZS5jZW50ZXJlZCYmKHQ9YS5sZWZ0K2Eud2lkdGgvMixuPWEudG9wK2EuaGVpZ2h0LzIpO2NvbnN0IHI9ZS5yYWRpdXN8fChmdW5jdGlvbiBpKHQsbixlKXtjb25zdCBhPU1hdGgubWF4KE1hdGguYWJzKHQtZS5sZWZ0KSxNYXRoLmFicyh0LWUucmlnaHQpKSxvPU1hdGgubWF4KE1hdGguYWJzKG4tZS50b3ApLE1hdGguYWJzKG4tZS5ib3R0b20pKTtyZXR1cm4gTWF0aC5zcXJ0KGEqYStvKm8pfQovKioKICAgICAqIEBsaWNlbnNlCiAgICAgKiBDb3B5cmlnaHQgR29vZ2xlIExMQyBBbGwgUmlnaHRzIFJlc2VydmVkLgogICAgICoKICAgICAqIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGFuIE1JVC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCiAgICAgKiBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlIGF0IGh0dHBzOi8vYW5ndWxhci5pby9saWNlbnNlCiAgICAgKi8pKHQsbixhKSxjPXQtYS5sZWZ0LHM9bi1hLnRvcCxsPW8uZW50ZXJEdXJhdGlvbixtPWRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoImRpdiIpO20uY2xhc3NMaXN0LmFkZCgibWF0LXJpcHBsZS1lbGVtZW50IiksbS5zdHlsZS5sZWZ0PWMtcisicHgiLG0uc3R5bGUudG9wPXMtcisicHgiLG0uc3R5bGUuaGVpZ2h0PTIqcisicHgiLG0uc3R5bGUud2lkdGg9MipyKyJweCIsbnVsbCE9ZS5jb2xvciYmKG0uc3R5bGUuYmFja2dyb3VuZENvbG9yPWUuY29sb3IpLG0uc3R5bGUudHJhbnNpdGlvbkR1cmF0aW9uPWAke2x9bXNgLHRoaXMuX2NvbnRhaW5lckVsZW1lbnQuYXBwZW5kQ2hpbGQobSksKGZ1bmN0aW9uIGQodCl7d2luZG93LmdldENvbXB1dGVkU3R5bGUodCkuZ2V0UHJvcGVydHlWYWx1ZSgib3BhY2l0eSIpfSkobSksbS5zdHlsZS50cmFuc2Zvcm09InNjYWxlKDEpIjtjb25zdCBnPW5ldyB5RSh0aGlzLG0sZSk7cmV0dXJuIGcuc3RhdGU9MCx0aGlzLl9hY3RpdmVSaXBwbGVzLmFkZChnKSxlLnBlcnNpc3RlbnR8fCh0aGlzLl9tb3N0UmVjZW50VHJhbnNpZW50UmlwcGxlPWcpLHRoaXMuX3J1blRpbWVvdXRPdXRzaWRlWm9uZSgoKCk9Pntjb25zdCB0PWc9PT10aGlzLl9tb3N0UmVjZW50VHJhbnNpZW50UmlwcGxlO2cuc3RhdGU9MSxlLnBlcnNpc3RlbnR8fHQmJnRoaXMuX2lzUG9pbnRlckRvd258fGcuZmFkZU91dCgpfSksbCksZ31mYWRlT3V0UmlwcGxlKHQpe2NvbnN0IG49dGhpcy5fYWN0aXZlUmlwcGxlcy5kZWxldGUodCk7aWYodD09PXRoaXMuX21vc3RSZWNlbnRUcmFuc2llbnRSaXBwbGUmJih0aGlzLl9tb3N0UmVjZW50VHJhbnNpZW50UmlwcGxlPW51bGwpLHRoaXMuX2FjdGl2ZVJpcHBsZXMuc2l6ZXx8KHRoaXMuX2NvbnRhaW5lclJlY3Q9bnVsbCksIW4pcmV0dXJuO2NvbnN0IGU9dC5lbGVtZW50LGE9T2JqZWN0LmFzc2lnbihPYmplY3QuYXNzaWduKHt9LGtFKSx0LmNvbmZpZy5hbmltYXRpb24pO2Uuc3R5bGUudHJhbnNpdGlvbkR1cmF0aW9uPWAke2EuZXhpdER1cmF0aW9ufW1zYCxlLnN0eWxlLm9wYWNpdHk9IjAiLHQuc3RhdGU9Mix0aGlzLl9ydW5UaW1lb3V0T3V0c2lkZVpvbmUoKCgpPT57dC5zdGF0ZT0zLGUucGFyZW50Tm9kZS5yZW1vdmVDaGlsZChlKX0pLGEuZXhpdER1cmF0aW9uKX1mYWRlT3V0QWxsKCl7dGhpcy5fYWN0aXZlUmlwcGxlcy5mb3JFYWNoKCh0PT50LmZhZGVPdXQoKSkpfXNldHVwVHJpZ2dlckV2ZW50cyh0KXtjb25zdCBuPUp3KHQpO24mJm4hPT10aGlzLl90cmlnZ2VyRWxlbWVudCYmKHRoaXMuX3JlbW92ZVRyaWdnZXJFdmVudHMoKSx0aGlzLl90cmlnZ2VyRWxlbWVudD1uLHRoaXMuX3JlZ2lzdGVyRXZlbnRzKHdFKSl9aGFuZGxlRXZlbnQodCl7Im1vdXNlZG93biI9PT10LnR5cGU/dGhpcy5fb25Nb3VzZWRvd24odCk6InRvdWNoc3RhcnQiPT09dC50eXBlP3RoaXMuX29uVG91Y2hTdGFydCh0KTp0aGlzLl9vblBvaW50ZXJVcCgpLHRoaXMuX3BvaW50ZXJVcEV2ZW50c1JlZ2lzdGVyZWR8fCh0aGlzLl9yZWdpc3RlckV2ZW50cyhTRSksdGhpcy5fcG9pbnRlclVwRXZlbnRzUmVnaXN0ZXJlZD0hMCl9X29uTW91c2Vkb3duKHQpe2NvbnN0IG49QVModCksZT10aGlzLl9sYXN0VG91Y2hTdGFydEV2ZW50JiZEYXRlLm5vdygpPHRoaXMuX2xhc3RUb3VjaFN0YXJ0RXZlbnQrODAwO3RoaXMuX3RhcmdldC5yaXBwbGVEaXNhYmxlZHx8bnx8ZXx8KHRoaXMuX2lzUG9pbnRlckRvd249ITAsdGhpcy5mYWRlSW5SaXBwbGUodC5jbGllbnRYLHQuY2xpZW50WSx0aGlzLl90YXJnZXQucmlwcGxlQ29uZmlnKSl9X29uVG91Y2hTdGFydCh0KXtpZighdGhpcy5fdGFyZ2V0LnJpcHBsZURpc2FibGVkKXt0aGlzLl9sYXN0VG91Y2hTdGFydEV2ZW50PURhdGUubm93KCksdGhpcy5faXNQb2ludGVyRG93bj0hMDtjb25zdCBuPXQuY2hhbmdlZFRvdWNoZXM7Zm9yKGxldCB0PTA7dDxuLmxlbmd0aDt0KyspdGhpcy5mYWRlSW5SaXBwbGUoblt0XS5jbGllbnRYLG5bdF0uY2xpZW50WSx0aGlzLl90YXJnZXQucmlwcGxlQ29uZmlnKX19X29uUG9pbnRlclVwKCl7dGhpcy5faXNQb2ludGVyRG93biYmKHRoaXMuX2lzUG9pbnRlckRvd249ITEsdGhpcy5fYWN0aXZlUmlwcGxlcy5mb3JFYWNoKCh0PT57IXQuY29uZmlnLnBlcnNpc3RlbnQmJigxPT09dC5zdGF0ZXx8dC5jb25maWcudGVybWluYXRlT25Qb2ludGVyVXAmJjA9PT10LnN0YXRlKSYmdC5mYWRlT3V0KCl9KSkpfV9ydW5UaW1lb3V0T3V0c2lkZVpvbmUodCxuPTApe3RoaXMuX25nWm9uZS5ydW5PdXRzaWRlQW5ndWxhcigoKCk9PnNldFRpbWVvdXQodCxuKSkpfV9yZWdpc3RlckV2ZW50cyh0KXt0aGlzLl9uZ1pvbmUucnVuT3V0c2lkZUFuZ3VsYXIoKCgpPT57dC5mb3JFYWNoKCh0PT57dGhpcy5fdHJpZ2dlckVsZW1lbnQuYWRkRXZlbnRMaXN0ZW5lcih0LHRoaXMsdkUpfSkpfSkpfV9yZW1vdmVUcmlnZ2VyRXZlbnRzKCl7dGhpcy5fdHJpZ2dlckVsZW1lbnQmJih3RS5mb3JFYWNoKCh0PT57dGhpcy5fdHJpZ2dlckVsZW1lbnQucmVtb3ZlRXZlbnRMaXN0ZW5lcih0LHRoaXMsdkUpfSkpLHRoaXMuX3BvaW50ZXJVcEV2ZW50c1JlZ2lzdGVyZWQmJlNFLmZvckVhY2goKHQ9Pnt0aGlzLl90cmlnZ2VyRWxlbWVudC5yZW1vdmVFdmVudExpc3RlbmVyKHQsdGhpcyx2RSl9KSkpfX1jb25zdCBBRT1uZXcgRmEoIm1hdC1yaXBwbGUtZ2xvYmFsLW9wdGlvbnMiKTtjbGFzcyB6RXtjb25zdHJ1Y3Rvcih0LG4sZSxhLG8pe3RoaXMuX2VsZW1lbnRSZWY9dCx0aGlzLl9hbmltYXRpb25Nb2RlPW8sdGhpcy5yYWRpdXM9MCx0aGlzLl9kaXNhYmxlZD0hMSx0aGlzLl9pc0luaXRpYWxpemVkPSExLHRoaXMuX2dsb2JhbE9wdGlvbnM9YXx8e30sdGhpcy5fcmlwcGxlUmVuZGVyZXI9bmV3IEVFKHRoaXMsbix0LGUpfWdldCBkaXNhYmxlZCgpe3JldHVybiB0aGlzLl9kaXNhYmxlZH1zZXQgZGlzYWJsZWQodCl7dGhpcy5fZGlzYWJsZWQ9dCx0aGlzLl9zZXR1cFRyaWdnZXJFdmVudHNJZkVuYWJsZWQoKX1nZXQgdHJpZ2dlcigpe3JldHVybiB0aGlzLl90cmlnZ2VyfHx0aGlzLl9lbGVtZW50UmVmLm5hdGl2ZUVsZW1lbnR9c2V0IHRyaWdnZXIodCl7dGhpcy5fdHJpZ2dlcj10LHRoaXMuX3NldHVwVHJpZ2dlckV2ZW50c0lmRW5hYmxlZCgpfW5nT25Jbml0KCl7dGhpcy5faXNJbml0aWFsaXplZD0hMCx0aGlzLl9zZXR1cFRyaWdnZXJFdmVudHNJZkVuYWJsZWQoKX1uZ09uRGVzdHJveSgpe3RoaXMuX3JpcHBsZVJlbmRlcmVyLl9yZW1vdmVUcmlnZ2VyRXZlbnRzKCl9ZmFkZU91dEFsbCgpe3RoaXMuX3JpcHBsZVJlbmRlcmVyLmZhZGVPdXRBbGwoKX1nZXQgcmlwcGxlQ29uZmlnKCl7cmV0dXJue2NlbnRlcmVkOnRoaXMuY2VudGVyZWQscmFkaXVzOnRoaXMucmFkaXVzLGNvbG9yOnRoaXMuY29sb3IsYW5pbWF0aW9uOk9iamVjdC5hc3NpZ24oT2JqZWN0LmFzc2lnbihPYmplY3QuYXNzaWduKHt9LHRoaXMuX2dsb2JhbE9wdGlvbnMuYW5pbWF0aW9uKSwiTm9vcEFuaW1hdGlvbnMiPT09dGhpcy5fYW5pbWF0aW9uTW9kZT97ZW50ZXJEdXJhdGlvbjowLGV4aXREdXJhdGlvbjowfTp7fSksdGhpcy5hbmltYXRpb24pLHRlcm1pbmF0ZU9uUG9pbnRlclVwOnRoaXMuX2dsb2JhbE9wdGlvbnMudGVybWluYXRlT25Qb2ludGVyVXB9fWdldCByaXBwbGVEaXNhYmxlZCgpe3JldHVybiB0aGlzLmRpc2FibGVkfHwhIXRoaXMuX2dsb2JhbE9wdGlvbnMuZGlzYWJsZWR9X3NldHVwVHJpZ2dlckV2ZW50c0lmRW5hYmxlZCgpeyF0aGlzLmRpc2FibGVkJiZ0aGlzLl9pc0luaXRpYWxpemVkJiZ0aGlzLl9yaXBwbGVSZW5kZXJlci5zZXR1cFRyaWdnZXJFdmVudHModGhpcy50cmlnZ2VyKX1sYXVuY2godCxuPTAsZSl7cmV0dXJuIm51bWJlciI9PXR5cGVvZiB0P3RoaXMuX3JpcHBsZVJlbmRlcmVyLmZhZGVJblJpcHBsZSh0LG4sT2JqZWN0LmFzc2lnbihPYmplY3QuYXNzaWduKHt9LHRoaXMucmlwcGxlQ29uZmlnKSxlKSk6dGhpcy5fcmlwcGxlUmVuZGVyZXIuZmFkZUluUmlwcGxlKDAsMCxPYmplY3QuYXNzaWduKE9iamVjdC5hc3NpZ24oe30sdGhpcy5yaXBwbGVDb25maWcpLHQpKX19ekUuybVmYWM9ZnVuY3Rpb24gdChuKXtyZXR1cm4gbmV3KG58fHpFKShaZyh4dSksWmcoSl8pLFpnKFN3KSxaZyhBRSw4KSxaZyhkayw4KSl9LHpFLsm1ZGlyPXZvKHt0eXBlOnpFLHNlbGVjdG9yczpbWyIiLCJtYXQtcmlwcGxlIiwiIl0sWyIiLCJtYXRSaXBwbGUiLCIiXV0saG9zdEF0dHJzOlsxLCJtYXQtcmlwcGxlIl0saG9zdFZhcnM6Mixob3N0QmluZGluZ3M6ZnVuY3Rpb24gdChuLGUpezImbiYmRHAoIm1hdC1yaXBwbGUtdW5ib3VuZGVkIixlLnVuYm91bmRlZCl9LGlucHV0czp7cmFkaXVzOlsibWF0UmlwcGxlUmFkaXVzIiwicmFkaXVzIl0sZGlzYWJsZWQ6WyJtYXRSaXBwbGVEaXNhYmxlZCIsImRpc2FibGVkIl0sdHJpZ2dlcjpbIm1hdFJpcHBsZVRyaWdnZXIiLCJ0cmlnZ2VyIl0sY29sb3I6WyJtYXRSaXBwbGVDb2xvciIsImNvbG9yIl0sdW5ib3VuZGVkOlsibWF0UmlwcGxlVW5ib3VuZGVkIiwidW5ib3VuZGVkIl0sY2VudGVyZWQ6WyJtYXRSaXBwbGVDZW50ZXJlZCIsImNlbnRlcmVkIl0sYW5pbWF0aW9uOlsibWF0UmlwcGxlQW5pbWF0aW9uIiwiYW5pbWF0aW9uIl19LGV4cG9ydEFzOlsibWF0UmlwcGxlIl19KSx6RS5jdG9yUGFyYW1ldGVycz0oKT0+W3t0eXBlOnh1fSx7dHlwZTpKX30se3R5cGU6U3d9LHt0eXBlOnZvaWQgMCxkZWNvcmF0b3JzOlt7dHlwZTpOZX0se3R5cGU6SWUsYXJnczpbQUVdfV19LHt0eXBlOlN0cmluZyxkZWNvcmF0b3JzOlt7dHlwZTpOZX0se3R5cGU6SWUsYXJnczpbZGtdfV19XSx6RS5wcm9wRGVjb3JhdG9ycz17Y29sb3I6W3t0eXBlOmZfLGFyZ3M6WyJtYXRSaXBwbGVDb2xvciJdfV0sdW5ib3VuZGVkOlt7dHlwZTpmXyxhcmdzOlsibWF0UmlwcGxlVW5ib3VuZGVkIl19XSxjZW50ZXJlZDpbe3R5cGU6Zl8sYXJnczpbIm1hdFJpcHBsZUNlbnRlcmVkIl19XSxyYWRpdXM6W3t0eXBlOmZfLGFyZ3M6WyJtYXRSaXBwbGVSYWRpdXMiXX1dLGFuaW1hdGlvbjpbe3R5cGU6Zl8sYXJnczpbIm1hdFJpcHBsZUFuaW1hdGlvbiJdfV0sZGlzYWJsZWQ6W3t0eXBlOmZfLGFyZ3M6WyJtYXRSaXBwbGVEaXNhYmxlZCJdfV0sdHJpZ2dlcjpbe3R5cGU6Zl8sYXJnczpbIm1hdFJpcHBsZVRyaWdnZXIiXX1dfTsKLyoqCiAgICAgKiBAbGljZW5zZQogICAgICogQ29weXJpZ2h0IEdvb2dsZSBMTEMgQWxsIFJpZ2h0cyBSZXNlcnZlZC4KICAgICAqCiAgICAgKiBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhbiBNSVQtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQogICAgICogZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZSBhdCBodHRwczovL2FuZ3VsYXIuaW8vbGljZW5zZQogICAgICovCmNsYXNzIFJFe31SRS7JtW1vZD14byh7dHlwZTpSRX0pLFJFLsm1aW5qPUdlKHtmYWN0b3J5OmZ1bmN0aW9uIHQobil7cmV0dXJuIG5ldyhufHxSRSl9LGltcG9ydHM6W1t0RSxFd10sdEVdfSksKCJ1bmRlZmluZWQiPT10eXBlb2YgbmdKaXRNb2RlfHxuZ0ppdE1vZGUpJiZ5byhSRSx7ZGVjbGFyYXRpb25zOmZ1bmN0aW9uKCl7cmV0dXJuW3pFXX0saW1wb3J0czpmdW5jdGlvbigpe3JldHVyblt0RSxFd119LGV4cG9ydHM6ZnVuY3Rpb24oKXtyZXR1cm5bekUsdEVdfX0pOwovKioKICAgICAqIEBsaWNlbnNlCiAgICAgKiBDb3B5cmlnaHQgR29vZ2xlIExMQyBBbGwgUmlnaHRzIFJlc2VydmVkLgogICAgICoKICAgICAqIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGFuIE1JVC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCiAgICAgKiBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlIGF0IGh0dHBzOi8vYW5ndWxhci5pby9saWNlbnNlCiAgICAgKi8KY2xhc3MgVEV7Y29uc3RydWN0b3IodCl7dGhpcy5fYW5pbWF0aW9uTW9kZT10LHRoaXMuc3RhdGU9InVuY2hlY2tlZCIsdGhpcy5kaXNhYmxlZD0hMX19VEUuybVmYWM9ZnVuY3Rpb24gdChuKXtyZXR1cm4gbmV3KG58fFRFKShaZyhkayw4KSl9LFRFLsm1Y21wPV9vKHt0eXBlOlRFLHNlbGVjdG9yczpbWyJtYXQtcHNldWRvLWNoZWNrYm94Il1dLGhvc3RBdHRyczpbMSwibWF0LXBzZXVkby1jaGVja2JveCJdLGhvc3RWYXJzOjgsaG9zdEJpbmRpbmdzOmZ1bmN0aW9uIHQobixlKXsyJm4mJkRwKCJtYXQtcHNldWRvLWNoZWNrYm94LWluZGV0ZXJtaW5hdGUiLCJpbmRldGVybWluYXRlIj09PWUuc3RhdGUpKCJtYXQtcHNldWRvLWNoZWNrYm94LWNoZWNrZWQiLCJjaGVja2VkIj09PWUuc3RhdGUpKCJtYXQtcHNldWRvLWNoZWNrYm94LWRpc2FibGVkIixlLmRpc2FibGVkKSgiX21hdC1hbmltYXRpb24tbm9vcGFibGUiLCJOb29wQW5pbWF0aW9ucyI9PT1lLl9hbmltYXRpb25Nb2RlKX0saW5wdXRzOntzdGF0ZToic3RhdGUiLGRpc2FibGVkOiJkaXNhYmxlZCJ9LGRlY2xzOjAsdmFyczowLHRlbXBsYXRlOmZ1bmN0aW9uIHQobixlKXt9LHN0eWxlczpbJy5tYXQtcHNldWRvLWNoZWNrYm94e3dpZHRoOjE2cHg7aGVpZ2h0OjE2cHg7Ym9yZGVyOjJweCBzb2xpZDtib3JkZXItcmFkaXVzOjJweDtjdXJzb3I6cG9pbnRlcjtkaXNwbGF5OmlubGluZS1ibG9jazt2ZXJ0aWNhbC1hbGlnbjptaWRkbGU7Ym94LXNpemluZzpib3JkZXItYm94O3Bvc2l0aW9uOnJlbGF0aXZlO2ZsZXgtc2hyaW5rOjA7dHJhbnNpdGlvbjpib3JkZXItY29sb3IgOTBtcyBjdWJpYy1iZXppZXIoMCwgMCwgMC4yLCAwLjEpLGJhY2tncm91bmQtY29sb3IgOTBtcyBjdWJpYy1iZXppZXIoMCwgMCwgMC4yLCAwLjEpfS5tYXQtcHNldWRvLWNoZWNrYm94OjphZnRlcntwb3NpdGlvbjphYnNvbHV0ZTtvcGFjaXR5OjA7Y29udGVudDoiIjtib3JkZXItYm90dG9tOjJweCBzb2xpZCBjdXJyZW50Q29sb3I7dHJhbnNpdGlvbjpvcGFjaXR5IDkwbXMgY3ViaWMtYmV6aWVyKDAsIDAsIDAuMiwgMC4xKX0ubWF0LXBzZXVkby1jaGVja2JveC5tYXQtcHNldWRvLWNoZWNrYm94LWNoZWNrZWQsLm1hdC1wc2V1ZG8tY2hlY2tib3gubWF0LXBzZXVkby1jaGVja2JveC1pbmRldGVybWluYXRle2JvcmRlci1jb2xvcjp0cmFuc3BhcmVudH0uX21hdC1hbmltYXRpb24tbm9vcGFibGUubWF0LXBzZXVkby1jaGVja2JveHt0cmFuc2l0aW9uOm5vbmU7YW5pbWF0aW9uOm5vbmV9Ll9tYXQtYW5pbWF0aW9uLW5vb3BhYmxlLm1hdC1wc2V1ZG8tY2hlY2tib3g6OmFmdGVye3RyYW5zaXRpb246bm9uZX0ubWF0LXBzZXVkby1jaGVja2JveC1kaXNhYmxlZHtjdXJzb3I6ZGVmYXVsdH0ubWF0LXBzZXVkby1jaGVja2JveC1pbmRldGVybWluYXRlOjphZnRlcnt0b3A6NXB4O2xlZnQ6MXB4O3dpZHRoOjEwcHg7b3BhY2l0eToxO2JvcmRlci1yYWRpdXM6MnB4fS5tYXQtcHNldWRvLWNoZWNrYm94LWNoZWNrZWQ6OmFmdGVye3RvcDoyLjRweDtsZWZ0OjFweDt3aWR0aDo4cHg7aGVpZ2h0OjNweDtib3JkZXItbGVmdDoycHggc29saWQgY3VycmVudENvbG9yO3RyYW5zZm9ybTpyb3RhdGUoLTQ1ZGVnKTtvcGFjaXR5OjE7Ym94LXNpemluZzpjb250ZW50LWJveH1cbiddLGVuY2Fwc3VsYXRpb246MixjaGFuZ2VEZXRlY3Rpb246MH0pLFRFLmN0b3JQYXJhbWV0ZXJzPSgpPT5be3R5cGU6U3RyaW5nLGRlY29yYXRvcnM6W3t0eXBlOk5lfSx7dHlwZTpJZSxhcmdzOltka119XX1dLFRFLnByb3BEZWNvcmF0b3JzPXtzdGF0ZTpbe3R5cGU6Zl99XSxkaXNhYmxlZDpbe3R5cGU6Zl99XX07Ci8qKgogICAgICogQGxpY2Vuc2UKICAgICAqIENvcHlyaWdodCBHb29nbGUgTExDIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCiAgICAgKgogICAgICogVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYW4gTUlULXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKICAgICAqIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUgYXQgaHR0cHM6Ly9hbmd1bGFyLmlvL2xpY2Vuc2UKICAgICAqLwpjbGFzcyBERXt9REUuybVtb2Q9eG8oe3R5cGU6REV9KSxERS7JtWluaj1HZSh7ZmFjdG9yeTpmdW5jdGlvbiB0KG4pe3JldHVybiBuZXcobnx8REUpfX0pLCgidW5kZWZpbmVkIj09dHlwZW9mIG5nSml0TW9kZXx8bmdKaXRNb2RlKSYmeW8oREUse2RlY2xhcmF0aW9uczpbVEVdLGV4cG9ydHM6W1RFXX0pO2NvbnN0IElFPW5FKAovKioKICAgICAqIEBsaWNlbnNlCiAgICAgKiBDb3B5cmlnaHQgR29vZ2xlIExMQyBBbGwgUmlnaHRzIFJlc2VydmVkLgogICAgICoKICAgICAqIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGFuIE1JVC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCiAgICAgKiBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlIGF0IGh0dHBzOi8vYW5ndWxhci5pby9saWNlbnNlCiAgICAgKi8KY2xhc3N7fSk7bGV0IE5FPTA7Y2xhc3MgRkUgZXh0ZW5kcyBJRXtjb25zdHJ1Y3Rvcigpe3N1cGVyKC4uLmFyZ3VtZW50cyksdGhpcy5fbGFiZWxJZD0ibWF0LW9wdGdyb3VwLWxhYmVsLSIrTkUrK319RkUuybVmYWM9ZnVuY3Rpb24gdChuKXtyZXR1cm4gTEUobnx8RkUpfSxGRS7JtWRpcj12byh7dHlwZTpGRSxpbnB1dHM6e2xhYmVsOiJsYWJlbCJ9LGZlYXR1cmVzOltoZ119KSxGRS5wcm9wRGVjb3JhdG9ycz17bGFiZWw6W3t0eXBlOmZffV19O2NvbnN0IExFPXRjKEZFKSxIRT1uZXcgRmEoIk1hdE9wdGdyb3VwIik7Y2xhc3MgQkUgZXh0ZW5kcyBGRXt9QkUuybVmYWM9ZnVuY3Rpb24gdChuKXtyZXR1cm4gVkUobnx8QkUpfSxCRS7JtWNtcD1fbyh7dHlwZTpCRSxzZWxlY3RvcnM6W1sibWF0LW9wdGdyb3VwIl1dLGhvc3RBdHRyczpbInJvbGUiLCJncm91cCIsMSwibWF0LW9wdGdyb3VwIl0saG9zdFZhcnM6NCxob3N0QmluZGluZ3M6ZnVuY3Rpb24gdChuLGUpezImbiYmKE5nKCJhcmlhLWRpc2FibGVkIixlLmRpc2FibGVkLnRvU3RyaW5nKCkpKCJhcmlhLWxhYmVsbGVkYnkiLGUuX2xhYmVsSWQpLERwKCJtYXQtb3B0Z3JvdXAtZGlzYWJsZWQiLGUuZGlzYWJsZWQpKX0saW5wdXRzOntkaXNhYmxlZDoiZGlzYWJsZWQifSxleHBvcnRBczpbIm1hdE9wdGdyb3VwIl0sZmVhdHVyZXM6W011KFt7cHJvdmlkZTpIRSx1c2VFeGlzdGluZzpCRX1dKSxoZ10sbmdDb250ZW50U2VsZWN0b3JzOlsiKiIsIm1hdC1vcHRpb24sIG5nLWNvbnRhaW5lciJdLGRlY2xzOjQsdmFyczoyLGNvbnN0czpbWzEsIm1hdC1vcHRncm91cC1sYWJlbCIsMywiaWQiXV0sdGVtcGxhdGU6ZnVuY3Rpb24gdChuLGUpezEmbiYmKGJwKHFTKSxLZygwLCJsYWJlbCIsMCksSnAoMSksaHAoMiksJGcoKSxocCgzLDEpKSwyJm4mJihKZygiaWQiLGUuX2xhYmVsSWQpLHdzKDEpLEtwKCIiLGUubGFiZWwsIiAiKSl9LHN0eWxlczpbIi5tYXQtb3B0Z3JvdXAtbGFiZWx7d2hpdGUtc3BhY2U6bm93cmFwO292ZXJmbG93OmhpZGRlbjt0ZXh0LW92ZXJmbG93OmVsbGlwc2lzO2Rpc3BsYXk6YmxvY2s7bGluZS1oZWlnaHQ6NDhweDtoZWlnaHQ6NDhweDtwYWRkaW5nOjAgMTZweDt0ZXh0LWFsaWduOmxlZnQ7dGV4dC1kZWNvcmF0aW9uOm5vbmU7bWF4LXdpZHRoOjEwMCU7LXdlYmtpdC11c2VyLXNlbGVjdDpub25lOy1tb3otdXNlci1zZWxlY3Q6bm9uZTstbXMtdXNlci1zZWxlY3Q6bm9uZTt1c2VyLXNlbGVjdDpub25lO2N1cnNvcjpkZWZhdWx0fS5tYXQtb3B0Z3JvdXAtbGFiZWxbZGlzYWJsZWRde2N1cnNvcjpkZWZhdWx0fVtkaXI9cnRsXSAubWF0LW9wdGdyb3VwLWxhYmVse3RleHQtYWxpZ246cmlnaHR9Lm1hdC1vcHRncm91cC1sYWJlbCAubWF0LWljb257bWFyZ2luLXJpZ2h0OjE2cHg7dmVydGljYWwtYWxpZ246bWlkZGxlfS5tYXQtb3B0Z3JvdXAtbGFiZWwgLm1hdC1pY29uIHN2Z3t2ZXJ0aWNhbC1hbGlnbjp0b3B9W2Rpcj1ydGxdIC5tYXQtb3B0Z3JvdXAtbGFiZWwgLm1hdC1pY29ue21hcmdpbi1sZWZ0OjE2cHg7bWFyZ2luLXJpZ2h0OjB9XG4iXSxlbmNhcHN1bGF0aW9uOjIsY2hhbmdlRGV0ZWN0aW9uOjB9KTtjb25zdCBWRT10YyhCRSk7Ci8qKgogICAgICogQGxpY2Vuc2UKICAgICAqIENvcHlyaWdodCBHb29nbGUgTExDIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCiAgICAgKgogICAgICogVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYW4gTUlULXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKICAgICAqIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUgYXQgaHR0cHM6Ly9hbmd1bGFyLmlvL2xpY2Vuc2UKICAgICAqL2xldCBqRT0wO2NsYXNzIFVFe2NvbnN0cnVjdG9yKHQsbj0hMSl7dGhpcy5zb3VyY2U9dCx0aGlzLmlzVXNlcklucHV0PW59fWNvbnN0IFdFPW5ldyBGYSgiTUFUX09QVElPTl9QQVJFTlRfQ09NUE9ORU5UIik7Y2xhc3MgR0V7Y29uc3RydWN0b3IodCxuLGUsYSl7dGhpcy5fZWxlbWVudD10LHRoaXMuX2NoYW5nZURldGVjdG9yUmVmPW4sdGhpcy5fcGFyZW50PWUsdGhpcy5ncm91cD1hLHRoaXMuX3NlbGVjdGVkPSExLHRoaXMuX2FjdGl2ZT0hMSx0aGlzLl9kaXNhYmxlZD0hMSx0aGlzLl9tb3N0UmVjZW50Vmlld1ZhbHVlPSIiLHRoaXMuaWQ9Im1hdC1vcHRpb24tIitqRSsrLHRoaXMub25TZWxlY3Rpb25DaGFuZ2U9bmV3IEVmLHRoaXMuX3N0YXRlQ2hhbmdlcz1uZXcgeH1nZXQgbXVsdGlwbGUoKXtyZXR1cm4gdGhpcy5fcGFyZW50JiZ0aGlzLl9wYXJlbnQubXVsdGlwbGV9Z2V0IHNlbGVjdGVkKCl7cmV0dXJuIHRoaXMuX3NlbGVjdGVkfWdldCBkaXNhYmxlZCgpe3JldHVybiB0aGlzLmdyb3VwJiZ0aGlzLmdyb3VwLmRpc2FibGVkfHx0aGlzLl9kaXNhYmxlZH1zZXQgZGlzYWJsZWQodCl7dGhpcy5fZGlzYWJsZWQ9R3codCl9Z2V0IGRpc2FibGVSaXBwbGUoKXtyZXR1cm4gdGhpcy5fcGFyZW50JiZ0aGlzLl9wYXJlbnQuZGlzYWJsZVJpcHBsZX1nZXQgYWN0aXZlKCl7cmV0dXJuIHRoaXMuX2FjdGl2ZX1nZXQgdmlld1ZhbHVlKCl7cmV0dXJuKHRoaXMuX2dldEhvc3RFbGVtZW50KCkudGV4dENvbnRlbnR8fCIiKS50cmltKCl9c2VsZWN0KCl7dGhpcy5fc2VsZWN0ZWR8fCh0aGlzLl9zZWxlY3RlZD0hMCx0aGlzLl9jaGFuZ2VEZXRlY3RvclJlZi5tYXJrRm9yQ2hlY2soKSx0aGlzLl9lbWl0U2VsZWN0aW9uQ2hhbmdlRXZlbnQoKSl9ZGVzZWxlY3QoKXt0aGlzLl9zZWxlY3RlZCYmKHRoaXMuX3NlbGVjdGVkPSExLHRoaXMuX2NoYW5nZURldGVjdG9yUmVmLm1hcmtGb3JDaGVjaygpLHRoaXMuX2VtaXRTZWxlY3Rpb25DaGFuZ2VFdmVudCgpKX1mb2N1cyh0LG4pe2NvbnN0IGU9dGhpcy5fZ2V0SG9zdEVsZW1lbnQoKTsiZnVuY3Rpb24iPT10eXBlb2YgZS5mb2N1cyYmZS5mb2N1cyhuKX1zZXRBY3RpdmVTdHlsZXMoKXt0aGlzLl9hY3RpdmV8fCh0aGlzLl9hY3RpdmU9ITAsdGhpcy5fY2hhbmdlRGV0ZWN0b3JSZWYubWFya0ZvckNoZWNrKCkpfXNldEluYWN0aXZlU3R5bGVzKCl7dGhpcy5fYWN0aXZlJiYodGhpcy5fYWN0aXZlPSExLHRoaXMuX2NoYW5nZURldGVjdG9yUmVmLm1hcmtGb3JDaGVjaygpKX1nZXRMYWJlbCgpe3JldHVybiB0aGlzLnZpZXdWYWx1ZX1faGFuZGxlS2V5ZG93bih0KXt0LmtleUNvZGUhPT1IdyYmdC5rZXlDb2RlIT09Vnd8fFd3KHQpfHwodGhpcy5fc2VsZWN0VmlhSW50ZXJhY3Rpb24oKSx0LnByZXZlbnREZWZhdWx0KCkpfV9zZWxlY3RWaWFJbnRlcmFjdGlvbigpe3RoaXMuZGlzYWJsZWR8fCh0aGlzLl9zZWxlY3RlZD0hdGhpcy5tdWx0aXBsZXx8IXRoaXMuX3NlbGVjdGVkLHRoaXMuX2NoYW5nZURldGVjdG9yUmVmLm1hcmtGb3JDaGVjaygpLHRoaXMuX2VtaXRTZWxlY3Rpb25DaGFuZ2VFdmVudCghMCkpfV9nZXRBcmlhU2VsZWN0ZWQoKXtyZXR1cm4gdGhpcy5zZWxlY3RlZHx8IXRoaXMubXVsdGlwbGUmJm51bGx9X2dldFRhYkluZGV4KCl7cmV0dXJuIHRoaXMuZGlzYWJsZWQ/Ii0xIjoiMCJ9X2dldEhvc3RFbGVtZW50KCl7cmV0dXJuIHRoaXMuX2VsZW1lbnQubmF0aXZlRWxlbWVudH1uZ0FmdGVyVmlld0NoZWNrZWQoKXtpZih0aGlzLl9zZWxlY3RlZCl7Y29uc3QgdD10aGlzLnZpZXdWYWx1ZTt0IT09dGhpcy5fbW9zdFJlY2VudFZpZXdWYWx1ZSYmKHRoaXMuX21vc3RSZWNlbnRWaWV3VmFsdWU9dCx0aGlzLl9zdGF0ZUNoYW5nZXMubmV4dCgpKX19bmdPbkRlc3Ryb3koKXt0aGlzLl9zdGF0ZUNoYW5nZXMuY29tcGxldGUoKX1fZW1pdFNlbGVjdGlvbkNoYW5nZUV2ZW50KHQ9ITEpe3RoaXMub25TZWxlY3Rpb25DaGFuZ2UuZW1pdChuZXcgVUUodGhpcyx0KSl9fUdFLsm1ZmFjPWZ1bmN0aW9uIHQobil7cmV0dXJuIG5ldyhufHxHRSkoWmcoeHUpLFpnKFZtKSxaZyh2b2lkIDApLFpnKEZFKSl9LEdFLsm1ZGlyPXZvKHt0eXBlOkdFLGlucHV0czp7aWQ6ImlkIixkaXNhYmxlZDoiZGlzYWJsZWQiLHZhbHVlOiJ2YWx1ZSJ9LG91dHB1dHM6e29uU2VsZWN0aW9uQ2hhbmdlOiJvblNlbGVjdGlvbkNoYW5nZSJ9fSksR0UuY3RvclBhcmFtZXRlcnM9KCk9Plt7dHlwZTp4dX0se3R5cGU6Vm19LHt0eXBlOnZvaWQgMH0se3R5cGU6RkV9XSxHRS5wcm9wRGVjb3JhdG9ycz17dmFsdWU6W3t0eXBlOmZffV0saWQ6W3t0eXBlOmZffV0sZGlzYWJsZWQ6W3t0eXBlOmZffV0sb25TZWxlY3Rpb25DaGFuZ2U6W3t0eXBlOmhffV19O2NsYXNzIFlFIGV4dGVuZHMgR0V7Y29uc3RydWN0b3IodCxuLGUsYSl7c3VwZXIodCxuLGUsYSl9fWZ1bmN0aW9uIHFFKHQsbixlKXtpZihlLmxlbmd0aCl7bGV0IGE9bi50b0FycmF5KCksbz1lLnRvQXJyYXkoKSxyPTA7Zm9yKGxldCBuPTA7bjx0KzE7bisrKWFbbl0uZ3JvdXAmJmFbbl0uZ3JvdXA9PT1vW3JdJiZyKys7cmV0dXJuIHJ9cmV0dXJuIDB9ZnVuY3Rpb24gWkUodCxuLGUsYSl7cmV0dXJuIHQ8ZT90OnQrbj5lK2E/TWF0aC5tYXgoMCx0LWErbik6ZX0KLyoqCiAgICAgKiBAbGljZW5zZQogICAgICogQ29weXJpZ2h0IEdvb2dsZSBMTEMgQWxsIFJpZ2h0cyBSZXNlcnZlZC4KICAgICAqCiAgICAgKiBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhbiBNSVQtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQogICAgICogZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZSBhdCBodHRwczovL2FuZ3VsYXIuaW8vbGljZW5zZQogICAgICovWUUuybVmYWM9ZnVuY3Rpb24gdChuKXtyZXR1cm4gbmV3KG58fFlFKShaZyh4dSksWmcoVm0pLFpnKFdFLDgpLFpnKEhFLDgpKX0sWUUuybVjbXA9X28oe3R5cGU6WUUsc2VsZWN0b3JzOltbIm1hdC1vcHRpb24iXV0saG9zdEF0dHJzOlsicm9sZSIsIm9wdGlvbiIsMSwibWF0LW9wdGlvbiIsIm1hdC1mb2N1cy1pbmRpY2F0b3IiXSxob3N0VmFyczoxMixob3N0QmluZGluZ3M6ZnVuY3Rpb24gdChuLGUpezEmbiYmY3AoImNsaWNrIiwoZnVuY3Rpb24gdCgpe3JldHVybiBlLl9zZWxlY3RWaWFJbnRlcmFjdGlvbigpfSkpKCJrZXlkb3duIiwoZnVuY3Rpb24gdChuKXtyZXR1cm4gZS5faGFuZGxlS2V5ZG93bihuKX0pKSwyJm4mJihlYigiaWQiLGUuaWQpLE5nKCJ0YWJpbmRleCIsZS5fZ2V0VGFiSW5kZXgoKSkoImFyaWEtc2VsZWN0ZWQiLGUuX2dldEFyaWFTZWxlY3RlZCgpKSgiYXJpYS1kaXNhYmxlZCIsZS5kaXNhYmxlZC50b1N0cmluZygpKSxEcCgibWF0LXNlbGVjdGVkIixlLnNlbGVjdGVkKSgibWF0LW9wdGlvbi1tdWx0aXBsZSIsZS5tdWx0aXBsZSkoIm1hdC1hY3RpdmUiLGUuYWN0aXZlKSgibWF0LW9wdGlvbi1kaXNhYmxlZCIsZS5kaXNhYmxlZCkpfSxleHBvcnRBczpbIm1hdE9wdGlvbiJdLGZlYXR1cmVzOltoZ10sbmdDb250ZW50U2VsZWN0b3JzOlsiKiJdLGRlY2xzOjQsdmFyczozLGNvbnN0czpbWyJjbGFzcyIsIm1hdC1vcHRpb24tcHNldWRvLWNoZWNrYm94IiwzLCJzdGF0ZSIsImRpc2FibGVkIiw0LCJuZ0lmIl0sWzEsIm1hdC1vcHRpb24tdGV4dCJdLFsibWF0LXJpcHBsZSIsIiIsMSwibWF0LW9wdGlvbi1yaXBwbGUiLDMsIm1hdFJpcHBsZVRyaWdnZXIiLCJtYXRSaXBwbGVEaXNhYmxlZCJdLFsxLCJtYXQtb3B0aW9uLXBzZXVkby1jaGVja2JveCIsMywic3RhdGUiLCJkaXNhYmxlZCJdXSx0ZW1wbGF0ZTpmdW5jdGlvbiB0KG4sZSl7MSZuJiYoYnAoKSxZZygwLFpTLDEsMiwibWF0LXBzZXVkby1jaGVja2JveCIsMCksS2coMSwic3BhbiIsMSksaHAoMiksJGcoKSx0cCgzLCJkaXYiLDIpKSwyJm4mJihKZygibmdJZiIsZS5tdWx0aXBsZSksd3MoMyksSmcoIm1hdFJpcHBsZVRyaWdnZXIiLGUuX2dldEhvc3RFbGVtZW50KCkpKCJtYXRSaXBwbGVEaXNhYmxlZCIsZS5kaXNhYmxlZHx8ZS5kaXNhYmxlUmlwcGxlKSl9LGRpcmVjdGl2ZXM6W1dNLHpFLFRFXSxzdHlsZXM6WyIubWF0LW9wdGlvbnt3aGl0ZS1zcGFjZTpub3dyYXA7b3ZlcmZsb3c6aGlkZGVuO3RleHQtb3ZlcmZsb3c6ZWxsaXBzaXM7ZGlzcGxheTpibG9jaztsaW5lLWhlaWdodDo0OHB4O2hlaWdodDo0OHB4O3BhZGRpbmc6MCAxNnB4O3RleHQtYWxpZ246bGVmdDt0ZXh0LWRlY29yYXRpb246bm9uZTttYXgtd2lkdGg6MTAwJTtwb3NpdGlvbjpyZWxhdGl2ZTtjdXJzb3I6cG9pbnRlcjtvdXRsaW5lOm5vbmU7ZGlzcGxheTpmbGV4O2ZsZXgtZGlyZWN0aW9uOnJvdzttYXgtd2lkdGg6MTAwJTtib3gtc2l6aW5nOmJvcmRlci1ib3g7YWxpZ24taXRlbXM6Y2VudGVyOy13ZWJraXQtdGFwLWhpZ2hsaWdodC1jb2xvcjp0cmFuc3BhcmVudH0ubWF0LW9wdGlvbltkaXNhYmxlZF17Y3Vyc29yOmRlZmF1bHR9W2Rpcj1ydGxdIC5tYXQtb3B0aW9ue3RleHQtYWxpZ246cmlnaHR9Lm1hdC1vcHRpb24gLm1hdC1pY29ue21hcmdpbi1yaWdodDoxNnB4O3ZlcnRpY2FsLWFsaWduOm1pZGRsZX0ubWF0LW9wdGlvbiAubWF0LWljb24gc3Zne3ZlcnRpY2FsLWFsaWduOnRvcH1bZGlyPXJ0bF0gLm1hdC1vcHRpb24gLm1hdC1pY29ue21hcmdpbi1sZWZ0OjE2cHg7bWFyZ2luLXJpZ2h0OjB9Lm1hdC1vcHRpb25bYXJpYS1kaXNhYmxlZD10cnVlXXstd2Via2l0LXVzZXItc2VsZWN0Om5vbmU7LW1vei11c2VyLXNlbGVjdDpub25lOy1tcy11c2VyLXNlbGVjdDpub25lO3VzZXItc2VsZWN0Om5vbmU7Y3Vyc29yOmRlZmF1bHR9Lm1hdC1vcHRncm91cCAubWF0LW9wdGlvbjpub3QoLm1hdC1vcHRpb24tbXVsdGlwbGUpe3BhZGRpbmctbGVmdDozMnB4fVtkaXI9cnRsXSAubWF0LW9wdGdyb3VwIC5tYXQtb3B0aW9uOm5vdCgubWF0LW9wdGlvbi1tdWx0aXBsZSl7cGFkZGluZy1sZWZ0OjE2cHg7cGFkZGluZy1yaWdodDozMnB4fS5jZGstaGlnaC1jb250cmFzdC1hY3RpdmUgLm1hdC1vcHRpb257bWFyZ2luOjAgMXB4fS5jZGstaGlnaC1jb250cmFzdC1hY3RpdmUgLm1hdC1vcHRpb24ubWF0LWFjdGl2ZXtib3JkZXI6c29saWQgMXB4IGN1cnJlbnRDb2xvcjttYXJnaW46MH0ubWF0LW9wdGlvbi10ZXh0e2Rpc3BsYXk6aW5saW5lLWJsb2NrO2ZsZXgtZ3JvdzoxO292ZXJmbG93OmhpZGRlbjt0ZXh0LW92ZXJmbG93OmVsbGlwc2lzfS5tYXQtb3B0aW9uIC5tYXQtb3B0aW9uLXJpcHBsZXt0b3A6MDtsZWZ0OjA7cmlnaHQ6MDtib3R0b206MDtwb3NpdGlvbjphYnNvbHV0ZTtwb2ludGVyLWV2ZW50czpub25lfS5jZGstaGlnaC1jb250cmFzdC1hY3RpdmUgLm1hdC1vcHRpb24gLm1hdC1vcHRpb24tcmlwcGxle29wYWNpdHk6LjV9Lm1hdC1vcHRpb24tcHNldWRvLWNoZWNrYm94e21hcmdpbi1yaWdodDo4cHh9W2Rpcj1ydGxdIC5tYXQtb3B0aW9uLXBzZXVkby1jaGVja2JveHttYXJnaW4tbGVmdDo4cHg7bWFyZ2luLXJpZ2h0OjB9XG4iXSxlbmNhcHN1bGF0aW9uOjIsY2hhbmdlRGV0ZWN0aW9uOjB9KSxZRS5jdG9yUGFyYW1ldGVycz0oKT0+W3t0eXBlOnh1fSx7dHlwZTpWbX0se3R5cGU6dm9pZCAwLGRlY29yYXRvcnM6W3t0eXBlOk5lfSx7dHlwZTpJZSxhcmdzOltXRV19XX0se3R5cGU6QkUsZGVjb3JhdG9yczpbe3R5cGU6TmV9LHt0eXBlOkllLGFyZ3M6W0hFXX1dfV07Y2xhc3MgWEV7fVhFLsm1bW9kPXhvKHt0eXBlOlhFfSksWEUuybVpbmo9R2Uoe2ZhY3Rvcnk6ZnVuY3Rpb24gdChuKXtyZXR1cm4gbmV3KG58fFhFKX0saW1wb3J0czpbW1JFLFBPLERFXV19KSwoInVuZGVmaW5lZCI9PXR5cGVvZiBuZ0ppdE1vZGV8fG5nSml0TW9kZSkmJnlvKFhFLHtkZWNsYXJhdGlvbnM6ZnVuY3Rpb24oKXtyZXR1cm5bWUUsQkVdfSxpbXBvcnRzOmZ1bmN0aW9uKCl7cmV0dXJuW1JFLFBPLERFXX0sZXhwb3J0czpmdW5jdGlvbigpe3JldHVybltZRSxCRV19fSk7Ci8qKgogICAgICogQGxpY2Vuc2UKICAgICAqIENvcHlyaWdodCBHb29nbGUgTExDIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCiAgICAgKgogICAgICogVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYW4gTUlULXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKICAgICAqIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUgYXQgaHR0cHM6Ly9hbmd1bGFyLmlvL2xpY2Vuc2UKICAgICAqLwpjb25zdCBKRT1uZXcgRmEoIm1hdC1sYWJlbC1nbG9iYWwtb3B0aW9ucyIpLFFFPVsibWF0LWJ1dHRvbiIsIiJdLEtFPVsiKiJdLCRFPSIubWF0LWJ1dHRvbiAubWF0LWJ1dHRvbi1mb2N1cy1vdmVybGF5LC5tYXQtaWNvbi1idXR0b24gLm1hdC1idXR0b24tZm9jdXMtb3ZlcmxheXtvcGFjaXR5OjB9Lm1hdC1idXR0b246aG92ZXI6bm90KC5tYXQtYnV0dG9uLWRpc2FibGVkKSAubWF0LWJ1dHRvbi1mb2N1cy1vdmVybGF5LC5tYXQtc3Ryb2tlZC1idXR0b246aG92ZXI6bm90KC5tYXQtYnV0dG9uLWRpc2FibGVkKSAubWF0LWJ1dHRvbi1mb2N1cy1vdmVybGF5e29wYWNpdHk6LjA0fUBtZWRpYShob3Zlcjogbm9uZSl7Lm1hdC1idXR0b246aG92ZXI6bm90KC5tYXQtYnV0dG9uLWRpc2FibGVkKSAubWF0LWJ1dHRvbi1mb2N1cy1vdmVybGF5LC5tYXQtc3Ryb2tlZC1idXR0b246aG92ZXI6bm90KC5tYXQtYnV0dG9uLWRpc2FibGVkKSAubWF0LWJ1dHRvbi1mb2N1cy1vdmVybGF5e29wYWNpdHk6MH19Lm1hdC1idXR0b24sLm1hdC1pY29uLWJ1dHRvbiwubWF0LXN0cm9rZWQtYnV0dG9uLC5tYXQtZmxhdC1idXR0b257Ym94LXNpemluZzpib3JkZXItYm94O3Bvc2l0aW9uOnJlbGF0aXZlOy13ZWJraXQtdXNlci1zZWxlY3Q6bm9uZTstbW96LXVzZXItc2VsZWN0Om5vbmU7LW1zLXVzZXItc2VsZWN0Om5vbmU7dXNlci1zZWxlY3Q6bm9uZTtjdXJzb3I6cG9pbnRlcjtvdXRsaW5lOm5vbmU7Ym9yZGVyOm5vbmU7LXdlYmtpdC10YXAtaGlnaGxpZ2h0LWNvbG9yOnRyYW5zcGFyZW50O2Rpc3BsYXk6aW5saW5lLWJsb2NrO3doaXRlLXNwYWNlOm5vd3JhcDt0ZXh0LWRlY29yYXRpb246bm9uZTt2ZXJ0aWNhbC1hbGlnbjpiYXNlbGluZTt0ZXh0LWFsaWduOmNlbnRlcjttYXJnaW46MDttaW4td2lkdGg6NjRweDtsaW5lLWhlaWdodDozNnB4O3BhZGRpbmc6MCAxNnB4O2JvcmRlci1yYWRpdXM6NHB4O292ZXJmbG93OnZpc2libGV9Lm1hdC1idXR0b246Oi1tb3otZm9jdXMtaW5uZXIsLm1hdC1pY29uLWJ1dHRvbjo6LW1vei1mb2N1cy1pbm5lciwubWF0LXN0cm9rZWQtYnV0dG9uOjotbW96LWZvY3VzLWlubmVyLC5tYXQtZmxhdC1idXR0b246Oi1tb3otZm9jdXMtaW5uZXJ7Ym9yZGVyOjB9Lm1hdC1idXR0b24ubWF0LWJ1dHRvbi1kaXNhYmxlZCwubWF0LWljb24tYnV0dG9uLm1hdC1idXR0b24tZGlzYWJsZWQsLm1hdC1zdHJva2VkLWJ1dHRvbi5tYXQtYnV0dG9uLWRpc2FibGVkLC5tYXQtZmxhdC1idXR0b24ubWF0LWJ1dHRvbi1kaXNhYmxlZHtjdXJzb3I6ZGVmYXVsdH0ubWF0LWJ1dHRvbi5jZGsta2V5Ym9hcmQtZm9jdXNlZCAubWF0LWJ1dHRvbi1mb2N1cy1vdmVybGF5LC5tYXQtYnV0dG9uLmNkay1wcm9ncmFtLWZvY3VzZWQgLm1hdC1idXR0b24tZm9jdXMtb3ZlcmxheSwubWF0LWljb24tYnV0dG9uLmNkay1rZXlib2FyZC1mb2N1c2VkIC5tYXQtYnV0dG9uLWZvY3VzLW92ZXJsYXksLm1hdC1pY29uLWJ1dHRvbi5jZGstcHJvZ3JhbS1mb2N1c2VkIC5tYXQtYnV0dG9uLWZvY3VzLW92ZXJsYXksLm1hdC1zdHJva2VkLWJ1dHRvbi5jZGsta2V5Ym9hcmQtZm9jdXNlZCAubWF0LWJ1dHRvbi1mb2N1cy1vdmVybGF5LC5tYXQtc3Ryb2tlZC1idXR0b24uY2RrLXByb2dyYW0tZm9jdXNlZCAubWF0LWJ1dHRvbi1mb2N1cy1vdmVybGF5LC5tYXQtZmxhdC1idXR0b24uY2RrLWtleWJvYXJkLWZvY3VzZWQgLm1hdC1idXR0b24tZm9jdXMtb3ZlcmxheSwubWF0LWZsYXQtYnV0dG9uLmNkay1wcm9ncmFtLWZvY3VzZWQgLm1hdC1idXR0b24tZm9jdXMtb3ZlcmxheXtvcGFjaXR5Oi4xMn0ubWF0LWJ1dHRvbjo6LW1vei1mb2N1cy1pbm5lciwubWF0LWljb24tYnV0dG9uOjotbW96LWZvY3VzLWlubmVyLC5tYXQtc3Ryb2tlZC1idXR0b246Oi1tb3otZm9jdXMtaW5uZXIsLm1hdC1mbGF0LWJ1dHRvbjo6LW1vei1mb2N1cy1pbm5lcntib3JkZXI6MH0ubWF0LXJhaXNlZC1idXR0b257Ym94LXNpemluZzpib3JkZXItYm94O3Bvc2l0aW9uOnJlbGF0aXZlOy13ZWJraXQtdXNlci1zZWxlY3Q6bm9uZTstbW96LXVzZXItc2VsZWN0Om5vbmU7LW1zLXVzZXItc2VsZWN0Om5vbmU7dXNlci1zZWxlY3Q6bm9uZTtjdXJzb3I6cG9pbnRlcjtvdXRsaW5lOm5vbmU7Ym9yZGVyOm5vbmU7LXdlYmtpdC10YXAtaGlnaGxpZ2h0LWNvbG9yOnRyYW5zcGFyZW50O2Rpc3BsYXk6aW5saW5lLWJsb2NrO3doaXRlLXNwYWNlOm5vd3JhcDt0ZXh0LWRlY29yYXRpb246bm9uZTt2ZXJ0aWNhbC1hbGlnbjpiYXNlbGluZTt0ZXh0LWFsaWduOmNlbnRlcjttYXJnaW46MDttaW4td2lkdGg6NjRweDtsaW5lLWhlaWdodDozNnB4O3BhZGRpbmc6MCAxNnB4O2JvcmRlci1yYWRpdXM6NHB4O292ZXJmbG93OnZpc2libGU7dHJhbnNmb3JtOnRyYW5zbGF0ZTNkKDAsIDAsIDApO3RyYW5zaXRpb246YmFja2dyb3VuZCA0MDBtcyBjdWJpYy1iZXppZXIoMC4yNSwgMC44LCAwLjI1LCAxKSxib3gtc2hhZG93IDI4MG1zIGN1YmljLWJlemllcigwLjQsIDAsIDAuMiwgMSl9Lm1hdC1yYWlzZWQtYnV0dG9uOjotbW96LWZvY3VzLWlubmVye2JvcmRlcjowfS5tYXQtcmFpc2VkLWJ1dHRvbi5tYXQtYnV0dG9uLWRpc2FibGVke2N1cnNvcjpkZWZhdWx0fS5tYXQtcmFpc2VkLWJ1dHRvbi5jZGsta2V5Ym9hcmQtZm9jdXNlZCAubWF0LWJ1dHRvbi1mb2N1cy1vdmVybGF5LC5tYXQtcmFpc2VkLWJ1dHRvbi5jZGstcHJvZ3JhbS1mb2N1c2VkIC5tYXQtYnV0dG9uLWZvY3VzLW92ZXJsYXl7b3BhY2l0eTouMTJ9Lm1hdC1yYWlzZWQtYnV0dG9uOjotbW96LWZvY3VzLWlubmVye2JvcmRlcjowfS5fbWF0LWFuaW1hdGlvbi1ub29wYWJsZS5tYXQtcmFpc2VkLWJ1dHRvbnt0cmFuc2l0aW9uOm5vbmU7YW5pbWF0aW9uOm5vbmV9Lm1hdC1zdHJva2VkLWJ1dHRvbntib3JkZXI6MXB4IHNvbGlkIGN1cnJlbnRDb2xvcjtwYWRkaW5nOjAgMTVweDtsaW5lLWhlaWdodDozNHB4fS5tYXQtc3Ryb2tlZC1idXR0b24gLm1hdC1idXR0b24tcmlwcGxlLm1hdC1yaXBwbGUsLm1hdC1zdHJva2VkLWJ1dHRvbiAubWF0LWJ1dHRvbi1mb2N1cy1vdmVybGF5e3RvcDotMXB4O2xlZnQ6LTFweDtyaWdodDotMXB4O2JvdHRvbTotMXB4fS5tYXQtZmFie2JveC1zaXppbmc6Ym9yZGVyLWJveDtwb3NpdGlvbjpyZWxhdGl2ZTstd2Via2l0LXVzZXItc2VsZWN0Om5vbmU7LW1vei11c2VyLXNlbGVjdDpub25lOy1tcy11c2VyLXNlbGVjdDpub25lO3VzZXItc2VsZWN0Om5vbmU7Y3Vyc29yOnBvaW50ZXI7b3V0bGluZTpub25lO2JvcmRlcjpub25lOy13ZWJraXQtdGFwLWhpZ2hsaWdodC1jb2xvcjp0cmFuc3BhcmVudDtkaXNwbGF5OmlubGluZS1ibG9jazt3aGl0ZS1zcGFjZTpub3dyYXA7dGV4dC1kZWNvcmF0aW9uOm5vbmU7dmVydGljYWwtYWxpZ246YmFzZWxpbmU7dGV4dC1hbGlnbjpjZW50ZXI7bWFyZ2luOjA7bWluLXdpZHRoOjY0cHg7bGluZS1oZWlnaHQ6MzZweDtwYWRkaW5nOjAgMTZweDtib3JkZXItcmFkaXVzOjRweDtvdmVyZmxvdzp2aXNpYmxlO3RyYW5zZm9ybTp0cmFuc2xhdGUzZCgwLCAwLCAwKTt0cmFuc2l0aW9uOmJhY2tncm91bmQgNDAwbXMgY3ViaWMtYmV6aWVyKDAuMjUsIDAuOCwgMC4yNSwgMSksYm94LXNoYWRvdyAyODBtcyBjdWJpYy1iZXppZXIoMC40LCAwLCAwLjIsIDEpO21pbi13aWR0aDowO2JvcmRlci1yYWRpdXM6NTAlO3dpZHRoOjU2cHg7aGVpZ2h0OjU2cHg7cGFkZGluZzowO2ZsZXgtc2hyaW5rOjB9Lm1hdC1mYWI6Oi1tb3otZm9jdXMtaW5uZXJ7Ym9yZGVyOjB9Lm1hdC1mYWIubWF0LWJ1dHRvbi1kaXNhYmxlZHtjdXJzb3I6ZGVmYXVsdH0ubWF0LWZhYi5jZGsta2V5Ym9hcmQtZm9jdXNlZCAubWF0LWJ1dHRvbi1mb2N1cy1vdmVybGF5LC5tYXQtZmFiLmNkay1wcm9ncmFtLWZvY3VzZWQgLm1hdC1idXR0b24tZm9jdXMtb3ZlcmxheXtvcGFjaXR5Oi4xMn0ubWF0LWZhYjo6LW1vei1mb2N1cy1pbm5lcntib3JkZXI6MH0uX21hdC1hbmltYXRpb24tbm9vcGFibGUubWF0LWZhYnt0cmFuc2l0aW9uOm5vbmU7YW5pbWF0aW9uOm5vbmV9Lm1hdC1mYWIgLm1hdC1idXR0b24td3JhcHBlcntwYWRkaW5nOjE2cHggMDtkaXNwbGF5OmlubGluZS1ibG9jaztsaW5lLWhlaWdodDoyNHB4fS5tYXQtbWluaS1mYWJ7Ym94LXNpemluZzpib3JkZXItYm94O3Bvc2l0aW9uOnJlbGF0aXZlOy13ZWJraXQtdXNlci1zZWxlY3Q6bm9uZTstbW96LXVzZXItc2VsZWN0Om5vbmU7LW1zLXVzZXItc2VsZWN0Om5vbmU7dXNlci1zZWxlY3Q6bm9uZTtjdXJzb3I6cG9pbnRlcjtvdXRsaW5lOm5vbmU7Ym9yZGVyOm5vbmU7LXdlYmtpdC10YXAtaGlnaGxpZ2h0LWNvbG9yOnRyYW5zcGFyZW50O2Rpc3BsYXk6aW5saW5lLWJsb2NrO3doaXRlLXNwYWNlOm5vd3JhcDt0ZXh0LWRlY29yYXRpb246bm9uZTt2ZXJ0aWNhbC1hbGlnbjpiYXNlbGluZTt0ZXh0LWFsaWduOmNlbnRlcjttYXJnaW46MDttaW4td2lkdGg6NjRweDtsaW5lLWhlaWdodDozNnB4O3BhZGRpbmc6MCAxNnB4O2JvcmRlci1yYWRpdXM6NHB4O292ZXJmbG93OnZpc2libGU7dHJhbnNmb3JtOnRyYW5zbGF0ZTNkKDAsIDAsIDApO3RyYW5zaXRpb246YmFja2dyb3VuZCA0MDBtcyBjdWJpYy1iZXppZXIoMC4yNSwgMC44LCAwLjI1LCAxKSxib3gtc2hhZG93IDI4MG1zIGN1YmljLWJlemllcigwLjQsIDAsIDAuMiwgMSk7bWluLXdpZHRoOjA7Ym9yZGVyLXJhZGl1czo1MCU7d2lkdGg6NDBweDtoZWlnaHQ6NDBweDtwYWRkaW5nOjA7ZmxleC1zaHJpbms6MH0ubWF0LW1pbmktZmFiOjotbW96LWZvY3VzLWlubmVye2JvcmRlcjowfS5tYXQtbWluaS1mYWIubWF0LWJ1dHRvbi1kaXNhYmxlZHtjdXJzb3I6ZGVmYXVsdH0ubWF0LW1pbmktZmFiLmNkay1rZXlib2FyZC1mb2N1c2VkIC5tYXQtYnV0dG9uLWZvY3VzLW92ZXJsYXksLm1hdC1taW5pLWZhYi5jZGstcHJvZ3JhbS1mb2N1c2VkIC5tYXQtYnV0dG9uLWZvY3VzLW92ZXJsYXl7b3BhY2l0eTouMTJ9Lm1hdC1taW5pLWZhYjo6LW1vei1mb2N1cy1pbm5lcntib3JkZXI6MH0uX21hdC1hbmltYXRpb24tbm9vcGFibGUubWF0LW1pbmktZmFie3RyYW5zaXRpb246bm9uZTthbmltYXRpb246bm9uZX0ubWF0LW1pbmktZmFiIC5tYXQtYnV0dG9uLXdyYXBwZXJ7cGFkZGluZzo4cHggMDtkaXNwbGF5OmlubGluZS1ibG9jaztsaW5lLWhlaWdodDoyNHB4fS5tYXQtaWNvbi1idXR0b257cGFkZGluZzowO21pbi13aWR0aDowO3dpZHRoOjQwcHg7aGVpZ2h0OjQwcHg7ZmxleC1zaHJpbms6MDtsaW5lLWhlaWdodDo0MHB4O2JvcmRlci1yYWRpdXM6NTAlfS5tYXQtaWNvbi1idXR0b24gaSwubWF0LWljb24tYnV0dG9uIC5tYXQtaWNvbntsaW5lLWhlaWdodDoyNHB4fS5tYXQtYnV0dG9uLXJpcHBsZS5tYXQtcmlwcGxlLC5tYXQtYnV0dG9uLWZvY3VzLW92ZXJsYXl7dG9wOjA7bGVmdDowO3JpZ2h0OjA7Ym90dG9tOjA7cG9zaXRpb246YWJzb2x1dGU7cG9pbnRlci1ldmVudHM6bm9uZTtib3JkZXItcmFkaXVzOmluaGVyaXR9Lm1hdC1idXR0b24tcmlwcGxlLm1hdC1yaXBwbGU6bm90KDplbXB0eSl7dHJhbnNmb3JtOnRyYW5zbGF0ZVooMCl9Lm1hdC1idXR0b24tZm9jdXMtb3ZlcmxheXtvcGFjaXR5OjA7dHJhbnNpdGlvbjpvcGFjaXR5IDIwMG1zIGN1YmljLWJlemllcigwLjM1LCAwLCAwLjI1LCAxKSxiYWNrZ3JvdW5kLWNvbG9yIDIwMG1zIGN1YmljLWJlemllcigwLjM1LCAwLCAwLjI1LCAxKX0uX21hdC1hbmltYXRpb24tbm9vcGFibGUgLm1hdC1idXR0b24tZm9jdXMtb3ZlcmxheXt0cmFuc2l0aW9uOm5vbmV9Lm1hdC1idXR0b24tcmlwcGxlLXJvdW5ke2JvcmRlci1yYWRpdXM6NTAlO3otaW5kZXg6MX0ubWF0LWJ1dHRvbiAubWF0LWJ1dHRvbi13cmFwcGVyPiosLm1hdC1mbGF0LWJ1dHRvbiAubWF0LWJ1dHRvbi13cmFwcGVyPiosLm1hdC1zdHJva2VkLWJ1dHRvbiAubWF0LWJ1dHRvbi13cmFwcGVyPiosLm1hdC1yYWlzZWQtYnV0dG9uIC5tYXQtYnV0dG9uLXdyYXBwZXI+KiwubWF0LWljb24tYnV0dG9uIC5tYXQtYnV0dG9uLXdyYXBwZXI+KiwubWF0LWZhYiAubWF0LWJ1dHRvbi13cmFwcGVyPiosLm1hdC1taW5pLWZhYiAubWF0LWJ1dHRvbi13cmFwcGVyPip7dmVydGljYWwtYWxpZ246bWlkZGxlfS5tYXQtZm9ybS1maWVsZDpub3QoLm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtbGVnYWN5KSAubWF0LWZvcm0tZmllbGQtcHJlZml4IC5tYXQtaWNvbi1idXR0b24sLm1hdC1mb3JtLWZpZWxkOm5vdCgubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1sZWdhY3kpIC5tYXQtZm9ybS1maWVsZC1zdWZmaXggLm1hdC1pY29uLWJ1dHRvbntkaXNwbGF5OmJsb2NrO2ZvbnQtc2l6ZTppbmhlcml0O3dpZHRoOjIuNWVtO2hlaWdodDoyLjVlbX0uY2RrLWhpZ2gtY29udHJhc3QtYWN0aXZlIC5tYXQtYnV0dG9uLC5jZGstaGlnaC1jb250cmFzdC1hY3RpdmUgLm1hdC1mbGF0LWJ1dHRvbiwuY2RrLWhpZ2gtY29udHJhc3QtYWN0aXZlIC5tYXQtcmFpc2VkLWJ1dHRvbiwuY2RrLWhpZ2gtY29udHJhc3QtYWN0aXZlIC5tYXQtaWNvbi1idXR0b24sLmNkay1oaWdoLWNvbnRyYXN0LWFjdGl2ZSAubWF0LWZhYiwuY2RrLWhpZ2gtY29udHJhc3QtYWN0aXZlIC5tYXQtbWluaS1mYWJ7b3V0bGluZTpzb2xpZCAxcHh9LmNkay1oaWdoLWNvbnRyYXN0LWFjdGl2ZSAubWF0LWJ1dHRvbi1iYXNlLmNkay1rZXlib2FyZC1mb2N1c2VkLC5jZGstaGlnaC1jb250cmFzdC1hY3RpdmUgLm1hdC1idXR0b24tYmFzZS5jZGstcHJvZ3JhbS1mb2N1c2Vke291dGxpbmU6c29saWQgM3B4fVxuIix0QT1bIm1hdC1idXR0b24iLCJtYXQtZmxhdC1idXR0b24iLCJtYXQtaWNvbi1idXR0b24iLCJtYXQtcmFpc2VkLWJ1dHRvbiIsIm1hdC1zdHJva2VkLWJ1dHRvbiIsIm1hdC1taW5pLWZhYiIsIm1hdC1mYWIiXSxuQT1lRShuRShhRShjbGFzc3tjb25zdHJ1Y3Rvcih0KXt0aGlzLl9lbGVtZW50UmVmPXR9fSkpKTtjbGFzcyBlQSBleHRlbmRzIG5Be2NvbnN0cnVjdG9yKHQsbixlKXtzdXBlcih0KSx0aGlzLl9mb2N1c01vbml0b3I9bix0aGlzLl9hbmltYXRpb25Nb2RlPWUsdGhpcy5pc1JvdW5kQnV0dG9uPXRoaXMuX2hhc0hvc3RBdHRyaWJ1dGVzKCJtYXQtZmFiIiwibWF0LW1pbmktZmFiIiksdGhpcy5pc0ljb25CdXR0b249dGhpcy5faGFzSG9zdEF0dHJpYnV0ZXMoIm1hdC1pY29uLWJ1dHRvbiIpO2Zvcihjb25zdCB0IG9mIHRBKXRoaXMuX2hhc0hvc3RBdHRyaWJ1dGVzKHQpJiZ0aGlzLl9nZXRIb3N0RWxlbWVudCgpLmNsYXNzTGlzdC5hZGQodCk7dC5uYXRpdmVFbGVtZW50LmNsYXNzTGlzdC5hZGQoIm1hdC1idXR0b24tYmFzZSIpLHRoaXMuaXNSb3VuZEJ1dHRvbiYmKHRoaXMuY29sb3I9ImFjY2VudCIpfW5nQWZ0ZXJWaWV3SW5pdCgpe3RoaXMuX2ZvY3VzTW9uaXRvci5tb25pdG9yKHRoaXMuX2VsZW1lbnRSZWYsITApfW5nT25EZXN0cm95KCl7dGhpcy5fZm9jdXNNb25pdG9yLnN0b3BNb25pdG9yaW5nKHRoaXMuX2VsZW1lbnRSZWYpfWZvY3VzKHQ9InByb2dyYW0iLG4pe3RoaXMuX2ZvY3VzTW9uaXRvci5mb2N1c1ZpYSh0aGlzLl9nZXRIb3N0RWxlbWVudCgpLHQsbil9X2dldEhvc3RFbGVtZW50KCl7cmV0dXJuIHRoaXMuX2VsZW1lbnRSZWYubmF0aXZlRWxlbWVudH1faXNSaXBwbGVEaXNhYmxlZCgpe3JldHVybiB0aGlzLmRpc2FibGVSaXBwbGV8fHRoaXMuZGlzYWJsZWR9X2hhc0hvc3RBdHRyaWJ1dGVzKC4uLnQpe3JldHVybiB0LnNvbWUoKHQ9PnRoaXMuX2dldEhvc3RFbGVtZW50KCkuaGFzQXR0cmlidXRlKHQpKSl9fWVBLsm1ZmFjPWZ1bmN0aW9uIHQobil7cmV0dXJuIG5ldyhufHxlQSkoWmcoeHUpLFpnKFRTKSxaZyhkayw4KSl9LGVBLsm1Y21wPV9vKHt0eXBlOmVBLHNlbGVjdG9yczpbWyJidXR0b24iLCJtYXQtYnV0dG9uIiwiIl0sWyJidXR0b24iLCJtYXQtcmFpc2VkLWJ1dHRvbiIsIiJdLFsiYnV0dG9uIiwibWF0LWljb24tYnV0dG9uIiwiIl0sWyJidXR0b24iLCJtYXQtZmFiIiwiIl0sWyJidXR0b24iLCJtYXQtbWluaS1mYWIiLCIiXSxbImJ1dHRvbiIsIm1hdC1zdHJva2VkLWJ1dHRvbiIsIiJdLFsiYnV0dG9uIiwibWF0LWZsYXQtYnV0dG9uIiwiIl1dLHZpZXdRdWVyeTpmdW5jdGlvbiB0KG4sZSl7dmFyIGE7MSZuJiZVZih6RSwhMCksMiZuJiZWZihhPVpmKCkpJiYoZS5yaXBwbGU9YS5maXJzdCl9LGhvc3RBdHRyczpbMSwibWF0LWZvY3VzLWluZGljYXRvciJdLGhvc3RWYXJzOjUsaG9zdEJpbmRpbmdzOmZ1bmN0aW9uIHQobixlKXsyJm4mJihOZygiZGlzYWJsZWQiLGUuZGlzYWJsZWR8fG51bGwpLERwKCJfbWF0LWFuaW1hdGlvbi1ub29wYWJsZSIsIk5vb3BBbmltYXRpb25zIj09PWUuX2FuaW1hdGlvbk1vZGUpKCJtYXQtYnV0dG9uLWRpc2FibGVkIixlLmRpc2FibGVkKSl9LGlucHV0czp7ZGlzYWJsZWQ6ImRpc2FibGVkIixkaXNhYmxlUmlwcGxlOiJkaXNhYmxlUmlwcGxlIixjb2xvcjoiY29sb3IifSxleHBvcnRBczpbIm1hdEJ1dHRvbiJdLGZlYXR1cmVzOltoZ10sYXR0cnM6UUUsbmdDb250ZW50U2VsZWN0b3JzOktFLGRlY2xzOjQsdmFyczo1LGNvbnN0czpbWzEsIm1hdC1idXR0b24td3JhcHBlciJdLFsibWF0UmlwcGxlIiwiIiwxLCJtYXQtYnV0dG9uLXJpcHBsZSIsMywibWF0UmlwcGxlRGlzYWJsZWQiLCJtYXRSaXBwbGVDZW50ZXJlZCIsIm1hdFJpcHBsZVRyaWdnZXIiXSxbMSwibWF0LWJ1dHRvbi1mb2N1cy1vdmVybGF5Il1dLHRlbXBsYXRlOmZ1bmN0aW9uIHQobixlKXsxJm4mJihicCgpLEtnKDAsInNwYW4iLDApLGhwKDEpLCRnKCksdHAoMiwic3BhbiIsMSksdHAoMywic3BhbiIsMikpLDImbiYmKHdzKDIpLERwKCJtYXQtYnV0dG9uLXJpcHBsZS1yb3VuZCIsZS5pc1JvdW5kQnV0dG9ufHxlLmlzSWNvbkJ1dHRvbiksSmcoIm1hdFJpcHBsZURpc2FibGVkIixlLl9pc1JpcHBsZURpc2FibGVkKCkpKCJtYXRSaXBwbGVDZW50ZXJlZCIsZS5pc0ljb25CdXR0b24pKCJtYXRSaXBwbGVUcmlnZ2VyIixlLl9nZXRIb3N0RWxlbWVudCgpKSl9LGRpcmVjdGl2ZXM6W3pFXSxzdHlsZXM6WyRFXSxlbmNhcHN1bGF0aW9uOjIsY2hhbmdlRGV0ZWN0aW9uOjB9KSxlQS5jdG9yUGFyYW1ldGVycz0oKT0+W3t0eXBlOnh1fSx7dHlwZTpUU30se3R5cGU6U3RyaW5nLGRlY29yYXRvcnM6W3t0eXBlOk5lfSx7dHlwZTpJZSxhcmdzOltka119XX1dLGVBLnByb3BEZWNvcmF0b3JzPXtyaXBwbGU6W3t0eXBlOlhkLGFyZ3M6W3pFXX1dfTtjbGFzcyBhQSBleHRlbmRzIGVBe2NvbnN0cnVjdG9yKHQsbixlKXtzdXBlcihuLHQsZSl9X2hhbHREaXNhYmxlZEV2ZW50cyh0KXt0aGlzLmRpc2FibGVkJiYodC5wcmV2ZW50RGVmYXVsdCgpLHQuc3RvcEltbWVkaWF0ZVByb3BhZ2F0aW9uKCkpfX1hQS7JtWZhYz1mdW5jdGlvbiB0KG4pe3JldHVybiBuZXcobnx8YUEpKFpnKFRTKSxaZyh4dSksWmcoZGssOCkpfSxhQS7JtWNtcD1fbyh7dHlwZTphQSxzZWxlY3RvcnM6W1siYSIsIm1hdC1idXR0b24iLCIiXSxbImEiLCJtYXQtcmFpc2VkLWJ1dHRvbiIsIiJdLFsiYSIsIm1hdC1pY29uLWJ1dHRvbiIsIiJdLFsiYSIsIm1hdC1mYWIiLCIiXSxbImEiLCJtYXQtbWluaS1mYWIiLCIiXSxbImEiLCJtYXQtc3Ryb2tlZC1idXR0b24iLCIiXSxbImEiLCJtYXQtZmxhdC1idXR0b24iLCIiXV0saG9zdEF0dHJzOlsxLCJtYXQtZm9jdXMtaW5kaWNhdG9yIl0saG9zdFZhcnM6Nyxob3N0QmluZGluZ3M6ZnVuY3Rpb24gdChuLGUpezEmbiYmY3AoImNsaWNrIiwoZnVuY3Rpb24gdChuKXtyZXR1cm4gZS5faGFsdERpc2FibGVkRXZlbnRzKG4pfSkpLDImbiYmKE5nKCJ0YWJpbmRleCIsZS5kaXNhYmxlZD8tMTplLnRhYkluZGV4fHwwKSgiZGlzYWJsZWQiLGUuZGlzYWJsZWR8fG51bGwpKCJhcmlhLWRpc2FibGVkIixlLmRpc2FibGVkLnRvU3RyaW5nKCkpLERwKCJfbWF0LWFuaW1hdGlvbi1ub29wYWJsZSIsIk5vb3BBbmltYXRpb25zIj09PWUuX2FuaW1hdGlvbk1vZGUpKCJtYXQtYnV0dG9uLWRpc2FibGVkIixlLmRpc2FibGVkKSl9LGlucHV0czp7ZGlzYWJsZWQ6ImRpc2FibGVkIixkaXNhYmxlUmlwcGxlOiJkaXNhYmxlUmlwcGxlIixjb2xvcjoiY29sb3IiLHRhYkluZGV4OiJ0YWJJbmRleCJ9LGV4cG9ydEFzOlsibWF0QnV0dG9uIiwibWF0QW5jaG9yIl0sZmVhdHVyZXM6W2hnXSxhdHRyczpRRSxuZ0NvbnRlbnRTZWxlY3RvcnM6S0UsZGVjbHM6NCx2YXJzOjUsY29uc3RzOltbMSwibWF0LWJ1dHRvbi13cmFwcGVyIl0sWyJtYXRSaXBwbGUiLCIiLDEsIm1hdC1idXR0b24tcmlwcGxlIiwzLCJtYXRSaXBwbGVEaXNhYmxlZCIsIm1hdFJpcHBsZUNlbnRlcmVkIiwibWF0UmlwcGxlVHJpZ2dlciJdLFsxLCJtYXQtYnV0dG9uLWZvY3VzLW92ZXJsYXkiXV0sdGVtcGxhdGU6ZnVuY3Rpb24gdChuLGUpezEmbiYmKGJwKCksS2coMCwic3BhbiIsMCksaHAoMSksJGcoKSx0cCgyLCJzcGFuIiwxKSx0cCgzLCJzcGFuIiwyKSksMiZuJiYod3MoMiksRHAoIm1hdC1idXR0b24tcmlwcGxlLXJvdW5kIixlLmlzUm91bmRCdXR0b258fGUuaXNJY29uQnV0dG9uKSxKZygibWF0UmlwcGxlRGlzYWJsZWQiLGUuX2lzUmlwcGxlRGlzYWJsZWQoKSkoIm1hdFJpcHBsZUNlbnRlcmVkIixlLmlzSWNvbkJ1dHRvbikoIm1hdFJpcHBsZVRyaWdnZXIiLGUuX2dldEhvc3RFbGVtZW50KCkpKX0sZGlyZWN0aXZlczpbekVdLHN0eWxlczpbJEVdLGVuY2Fwc3VsYXRpb246MixjaGFuZ2VEZXRlY3Rpb246MH0pLGFBLmN0b3JQYXJhbWV0ZXJzPSgpPT5be3R5cGU6VFN9LHt0eXBlOnh1fSx7dHlwZTpTdHJpbmcsZGVjb3JhdG9yczpbe3R5cGU6TmV9LHt0eXBlOkllLGFyZ3M6W2RrXX1dfV0sYUEucHJvcERlY29yYXRvcnM9e3RhYkluZGV4Olt7dHlwZTpmX31dfTsKLyoqCiAgICAgKiBAbGljZW5zZQogICAgICogQ29weXJpZ2h0IEdvb2dsZSBMTEMgQWxsIFJpZ2h0cyBSZXNlcnZlZC4KICAgICAqCiAgICAgKiBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhbiBNSVQtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQogICAgICogZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZSBhdCBodHRwczovL2FuZ3VsYXIuaW8vbGljZW5zZQogICAgICovCmNsYXNzIG9Be31vQS7JtW1vZD14byh7dHlwZTpvQX0pLG9BLsm1aW5qPUdlKHtmYWN0b3J5OmZ1bmN0aW9uIHQobil7cmV0dXJuIG5ldyhufHxvQSl9LGltcG9ydHM6W1tSRSx0RV0sdEVdfSksKCJ1bmRlZmluZWQiPT10eXBlb2YgbmdKaXRNb2RlfHxuZ0ppdE1vZGUpJiZ5byhvQSx7ZGVjbGFyYXRpb25zOmZ1bmN0aW9uKCl7cmV0dXJuW2VBLGFBXX0saW1wb3J0czpmdW5jdGlvbigpe3JldHVybltSRSx0RV19LGV4cG9ydHM6ZnVuY3Rpb24oKXtyZXR1cm5bZUEsYUEsdEVdfX0pO2NsYXNzIHJBe31mdW5jdGlvbiBpQSh0KXtyZXR1cm4gdCYmImZ1bmN0aW9uIj09dHlwZW9mIHQuY29ubmVjdH0KLyoqCiAgICAgKiBAbGljZW5zZQogICAgICogQ29weXJpZ2h0IEdvb2dsZSBMTEMgQWxsIFJpZ2h0cyBSZXNlcnZlZC4KICAgICAqCiAgICAgKiBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhbiBNSVQtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQogICAgICogZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZSBhdCBodHRwczovL2FuZ3VsYXIuaW8vbGljZW5zZQogICAgICovY2xhc3MgY0EgZXh0ZW5kcyByQXtjb25zdHJ1Y3Rvcih0KXtzdXBlcigpLHRoaXMuX2RhdGE9dH1jb25uZWN0KCl7cmV0dXJuIHB0KHRoaXMuX2RhdGEpP3RoaXMuX2RhdGE6Wih0aGlzLl9kYXRhKX1kaXNjb25uZWN0KCl7fX0KLyoqCiAgICAgKiBAbGljZW5zZQogICAgICogQ29weXJpZ2h0IEdvb2dsZSBMTEMgQWxsIFJpZ2h0cyBSZXNlcnZlZC4KICAgICAqCiAgICAgKiBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhbiBNSVQtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQogICAgICogZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZSBhdCBodHRwczovL2FuZ3VsYXIuaW8vbGljZW5zZQogICAgICovCi8qKgogICAgICogQGxpY2Vuc2UKICAgICAqIENvcHlyaWdodCBHb29nbGUgTExDIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCiAgICAgKgogICAgICogVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYW4gTUlULXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKICAgICAqIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUgYXQgaHR0cHM6Ly9hbmd1bGFyLmlvL2xpY2Vuc2UKICAgICAqL2NsYXNzIHNBe2FwcGx5Q2hhbmdlcyh0LG4sZSxhLG8pe3QuZm9yRWFjaE9wZXJhdGlvbigoKHQsYSxyKT0+e2xldCBpLGM7aWYobnVsbD09dC5wcmV2aW91c0luZGV4KXtjb25zdCBvPWUodCxhLHIpO2k9bi5jcmVhdGVFbWJlZGRlZFZpZXcoby50ZW1wbGF0ZVJlZixvLmNvbnRleHQsby5pbmRleCksYz0xfWVsc2UgbnVsbD09cj8obi5yZW1vdmUoYSksYz0zKTooaT1uLmdldChhKSxuLm1vdmUoaSxyKSxjPTIpO28mJm8oe2NvbnRleHQ6bnVsbD09aT92b2lkIDA6aS5jb250ZXh0LG9wZXJhdGlvbjpjLHJlY29yZDp0fSl9KSl9ZGV0YWNoKCl7fX0KLyoqCiAgICAgKiBAbGljZW5zZQogICAgICogQ29weXJpZ2h0IEdvb2dsZSBMTEMgQWxsIFJpZ2h0cyBSZXNlcnZlZC4KICAgICAqCiAgICAgKiBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhbiBNSVQtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQogICAgICogZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZSBhdCBodHRwczovL2FuZ3VsYXIuaW8vbGljZW5zZQogICAgICovY2xhc3MgbEF7Y29uc3RydWN0b3IoKXt0aGlzLnZpZXdDYWNoZVNpemU9MjAsdGhpcy5fdmlld0NhY2hlPVtdfWFwcGx5Q2hhbmdlcyh0LG4sZSxhLG8pe3QuZm9yRWFjaE9wZXJhdGlvbigoKHQscixpKT0+e2xldCBjLHM7bnVsbD09dC5wcmV2aW91c0luZGV4PyhjPXRoaXMuX2luc2VydFZpZXcoKCgpPT5lKHQscixpKSksaSxuLGEodCkpLHM9Yz8xOjApOm51bGw9PWk/KHRoaXMuX2RldGFjaEFuZENhY2hlVmlldyhyLG4pLHM9Myk6KGM9dGhpcy5fbW92ZVZpZXcocixpLG4sYSh0KSkscz0yKSxvJiZvKHtjb250ZXh0Om51bGw9PWM/dm9pZCAwOmMuY29udGV4dCxvcGVyYXRpb246cyxyZWNvcmQ6dH0pfSkpfWRldGFjaCgpe2Zvcihjb25zdCB0IG9mIHRoaXMuX3ZpZXdDYWNoZSl0LmRlc3Ryb3koKX1faW5zZXJ0Vmlldyh0LG4sZSxhKXtsZXQgbz10aGlzLl9pbnNlcnRWaWV3RnJvbUNhY2hlKG4sZSk7aWYobylyZXR1cm4gdm9pZChvLmNvbnRleHQuJGltcGxpY2l0PWEpO2NvbnN0IHI9dCgpO3JldHVybiBlLmNyZWF0ZUVtYmVkZGVkVmlldyhyLnRlbXBsYXRlUmVmLHIuY29udGV4dCxyLmluZGV4KX1fZGV0YWNoQW5kQ2FjaGVWaWV3KHQsbil7Y29uc3QgZT10aGlzLl9kZXRhY2hWaWV3KHQsbik7dGhpcy5fbWF5YmVDYWNoZVZpZXcoZSxuKX1fbW92ZVZpZXcodCxuLGUsYSl7Y29uc3Qgbz1lLmdldCh0KTtyZXR1cm4gZS5tb3ZlKG8sbiksby5jb250ZXh0LiRpbXBsaWNpdD1hLG99X21heWJlQ2FjaGVWaWV3KHQsbil7aWYodGhpcy5fdmlld0NhY2hlLmxlbmd0aDx0aGlzLnZpZXdDYWNoZVNpemUpdGhpcy5fdmlld0NhY2hlLnB1c2godCk7ZWxzZXtjb25zdCBlPW4uaW5kZXhPZih0KTstMT09PWU/dC5kZXN0cm95KCk6bi5yZW1vdmUoZSl9fV9pbnNlcnRWaWV3RnJvbUNhY2hlKHQsbil7Y29uc3QgZT10aGlzLl92aWV3Q2FjaGUucG9wKCk7cmV0dXJuIGUmJm4uaW5zZXJ0KGUsdCksZXx8bnVsbH1fZGV0YWNoVmlldyh0LG4pe3JldHVybiBuLmRldGFjaCh0KX19Ci8qKgogICAgICogQGxpY2Vuc2UKICAgICAqIENvcHlyaWdodCBHb29nbGUgTExDIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCiAgICAgKgogICAgICogVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYW4gTUlULXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKICAgICAqIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUgYXQgaHR0cHM6Ly9hbmd1bGFyLmlvL2xpY2Vuc2UKICAgICAqL2NsYXNzIG1Be2NvbnN0cnVjdG9yKHQ9ITEsbixlPSEwKXt0aGlzLl9tdWx0aXBsZT10LHRoaXMuX2VtaXRDaGFuZ2VzPWUsdGhpcy5fc2VsZWN0aW9uPW5ldyBTZXQsdGhpcy5fZGVzZWxlY3RlZFRvRW1pdD1bXSx0aGlzLl9zZWxlY3RlZFRvRW1pdD1bXSx0aGlzLmNoYW5nZWQ9bmV3IHgsbiYmbi5sZW5ndGgmJih0P24uZm9yRWFjaCgodD0+dGhpcy5fbWFya1NlbGVjdGVkKHQpKSk6dGhpcy5fbWFya1NlbGVjdGVkKG5bMF0pLHRoaXMuX3NlbGVjdGVkVG9FbWl0Lmxlbmd0aD0wKX1nZXQgc2VsZWN0ZWQoKXtyZXR1cm4gdGhpcy5fc2VsZWN0ZWR8fCh0aGlzLl9zZWxlY3RlZD1BcnJheS5mcm9tKHRoaXMuX3NlbGVjdGlvbi52YWx1ZXMoKSkpLHRoaXMuX3NlbGVjdGVkfXNlbGVjdCguLi50KXt0aGlzLl92ZXJpZnlWYWx1ZUFzc2lnbm1lbnQodCksdC5mb3JFYWNoKCh0PT50aGlzLl9tYXJrU2VsZWN0ZWQodCkpKSx0aGlzLl9lbWl0Q2hhbmdlRXZlbnQoKX1kZXNlbGVjdCguLi50KXt0aGlzLl92ZXJpZnlWYWx1ZUFzc2lnbm1lbnQodCksdC5mb3JFYWNoKCh0PT50aGlzLl91bm1hcmtTZWxlY3RlZCh0KSkpLHRoaXMuX2VtaXRDaGFuZ2VFdmVudCgpfXRvZ2dsZSh0KXt0aGlzLmlzU2VsZWN0ZWQodCk/dGhpcy5kZXNlbGVjdCh0KTp0aGlzLnNlbGVjdCh0KX1jbGVhcigpe3RoaXMuX3VubWFya0FsbCgpLHRoaXMuX2VtaXRDaGFuZ2VFdmVudCgpfWlzU2VsZWN0ZWQodCl7cmV0dXJuIHRoaXMuX3NlbGVjdGlvbi5oYXModCl9aXNFbXB0eSgpe3JldHVybiAwPT09dGhpcy5fc2VsZWN0aW9uLnNpemV9aGFzVmFsdWUoKXtyZXR1cm4hdGhpcy5pc0VtcHR5KCl9c29ydCh0KXt0aGlzLl9tdWx0aXBsZSYmdGhpcy5zZWxlY3RlZCYmdGhpcy5fc2VsZWN0ZWQuc29ydCh0KX1pc011bHRpcGxlU2VsZWN0aW9uKCl7cmV0dXJuIHRoaXMuX211bHRpcGxlfV9lbWl0Q2hhbmdlRXZlbnQoKXt0aGlzLl9zZWxlY3RlZD1udWxsLCh0aGlzLl9zZWxlY3RlZFRvRW1pdC5sZW5ndGh8fHRoaXMuX2Rlc2VsZWN0ZWRUb0VtaXQubGVuZ3RoKSYmKHRoaXMuY2hhbmdlZC5uZXh0KHtzb3VyY2U6dGhpcyxhZGRlZDp0aGlzLl9zZWxlY3RlZFRvRW1pdCxyZW1vdmVkOnRoaXMuX2Rlc2VsZWN0ZWRUb0VtaXR9KSx0aGlzLl9kZXNlbGVjdGVkVG9FbWl0PVtdLHRoaXMuX3NlbGVjdGVkVG9FbWl0PVtdKX1fbWFya1NlbGVjdGVkKHQpe3RoaXMuaXNTZWxlY3RlZCh0KXx8KHRoaXMuX211bHRpcGxlfHx0aGlzLl91bm1hcmtBbGwoKSx0aGlzLl9zZWxlY3Rpb24uYWRkKHQpLHRoaXMuX2VtaXRDaGFuZ2VzJiZ0aGlzLl9zZWxlY3RlZFRvRW1pdC5wdXNoKHQpKX1fdW5tYXJrU2VsZWN0ZWQodCl7dGhpcy5pc1NlbGVjdGVkKHQpJiYodGhpcy5fc2VsZWN0aW9uLmRlbGV0ZSh0KSx0aGlzLl9lbWl0Q2hhbmdlcyYmdGhpcy5fZGVzZWxlY3RlZFRvRW1pdC5wdXNoKHQpKX1fdW5tYXJrQWxsKCl7dGhpcy5pc0VtcHR5KCl8fHRoaXMuX3NlbGVjdGlvbi5mb3JFYWNoKCh0PT50aGlzLl91bm1hcmtTZWxlY3RlZCh0KSkpfV92ZXJpZnlWYWx1ZUFzc2lnbm1lbnQodCl7aWYodC5sZW5ndGg+MSYmIXRoaXMuX211bHRpcGxlJiYoInVuZGVmaW5lZCI9PXR5cGVvZiBuZ0Rldk1vZGV8fG5nRGV2TW9kZSkpdGhyb3coZnVuY3Rpb24gbigpe3JldHVybiBFcnJvcigiQ2Fubm90IHBhc3MgbXVsdGlwbGUgdmFsdWVzIGludG8gU2VsZWN0aW9uTW9kZWwgd2l0aCBzaW5nbGUtdmFsdWUgbW9kZS4iKX0KLyoqCiAgICAgKiBAbGljZW5zZQogICAgICogQ29weXJpZ2h0IEdvb2dsZSBMTEMgQWxsIFJpZ2h0cyBSZXNlcnZlZC4KICAgICAqCiAgICAgKiBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhbiBNSVQtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQogICAgICogZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZSBhdCBodHRwczovL2FuZ3VsYXIuaW8vbGljZW5zZQogICAgICovKSgpfX1jbGFzcyBkQXtjb25zdHJ1Y3Rvcigpe3RoaXMuX2xpc3RlbmVycz1bXX1ub3RpZnkodCxuKXtmb3IobGV0IGUgb2YgdGhpcy5fbGlzdGVuZXJzKWUodCxuKX1saXN0ZW4odCl7cmV0dXJuIHRoaXMuX2xpc3RlbmVycy5wdXNoKHQpLCgpPT57dGhpcy5fbGlzdGVuZXJzPXRoaXMuX2xpc3RlbmVycy5maWx0ZXIoKG49PnQhPT1uKSl9fW5nT25EZXN0cm95KCl7dGhpcy5fbGlzdGVuZXJzPVtdfX1kQS7JtWZhYz1mdW5jdGlvbiB0KG4pe3JldHVybiBuZXcobnx8ZEEpfSxkQS7JtXByb3Y9V2Uoe2ZhY3Rvcnk6ZnVuY3Rpb24gdCgpe3JldHVybiBuZXcgZEF9LHRva2VuOmRBLHByb3ZpZGVkSW46InJvb3QifSk7Ci8qKgogICAgICogQGxpY2Vuc2UKICAgICAqIENvcHlyaWdodCBHb29nbGUgTExDIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCiAgICAgKgogICAgICogVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYW4gTUlULXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKICAgICAqIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUgYXQgaHR0cHM6Ly9hbmd1bGFyLmlvL2xpY2Vuc2UKICAgICAqLwovKioKICAgICAqIEBsaWNlbnNlCiAgICAgKiBDb3B5cmlnaHQgR29vZ2xlIExMQyBBbGwgUmlnaHRzIFJlc2VydmVkLgogICAgICoKICAgICAqIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGFuIE1JVC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCiAgICAgKiBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlIGF0IGh0dHBzOi8vYW5ndWxhci5pby9saWNlbnNlCiAgICAgKi8KY29uc3QgZ0E9bmV3IEZhKCJfVmlld1JlcGVhdGVyIikscEE9WyJjb250ZW50V3JhcHBlciJdLGJBPW5ldyBGYSgiVklSVFVBTF9TQ1JPTExfU1RSQVRFR1kiKTsKLyoqCiAgICAgKiBAbGljZW5zZQogICAgICogQ29weXJpZ2h0IEdvb2dsZSBMTEMgQWxsIFJpZ2h0cyBSZXNlcnZlZC4KICAgICAqCiAgICAgKiBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhbiBNSVQtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQogICAgICogZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZSBhdCBodHRwczovL2FuZ3VsYXIuaW8vbGljZW5zZQogICAgICovCmNsYXNzIHVBe2NvbnN0cnVjdG9yKHQsbixlKXt0aGlzLl9zY3JvbGxlZEluZGV4Q2hhbmdlPW5ldyB4LHRoaXMuc2Nyb2xsZWRJbmRleENoYW5nZT10aGlzLl9zY3JvbGxlZEluZGV4Q2hhbmdlLnBpcGUodm4oKSksdGhpcy5fdmlld3BvcnQ9bnVsbCx0aGlzLl9pdGVtU2l6ZT10LHRoaXMuX21pbkJ1ZmZlclB4PW4sdGhpcy5fbWF4QnVmZmVyUHg9ZX1hdHRhY2godCl7dGhpcy5fdmlld3BvcnQ9dCx0aGlzLl91cGRhdGVUb3RhbENvbnRlbnRTaXplKCksdGhpcy5fdXBkYXRlUmVuZGVyZWRSYW5nZSgpfWRldGFjaCgpe3RoaXMuX3Njcm9sbGVkSW5kZXhDaGFuZ2UuY29tcGxldGUoKSx0aGlzLl92aWV3cG9ydD1udWxsfXVwZGF0ZUl0ZW1BbmRCdWZmZXJTaXplKHQsbixlKXtpZihlPG4mJigidW5kZWZpbmVkIj09dHlwZW9mIG5nRGV2TW9kZXx8bmdEZXZNb2RlKSl0aHJvdyBFcnJvcigiQ0RLIHZpcnR1YWwgc2Nyb2xsOiBtYXhCdWZmZXJQeCBtdXN0IGJlIGdyZWF0ZXIgdGhhbiBvciBlcXVhbCB0byBtaW5CdWZmZXJQeCIpO3RoaXMuX2l0ZW1TaXplPXQsdGhpcy5fbWluQnVmZmVyUHg9bix0aGlzLl9tYXhCdWZmZXJQeD1lLHRoaXMuX3VwZGF0ZVRvdGFsQ29udGVudFNpemUoKSx0aGlzLl91cGRhdGVSZW5kZXJlZFJhbmdlKCl9b25Db250ZW50U2Nyb2xsZWQoKXt0aGlzLl91cGRhdGVSZW5kZXJlZFJhbmdlKCl9b25EYXRhTGVuZ3RoQ2hhbmdlZCgpe3RoaXMuX3VwZGF0ZVRvdGFsQ29udGVudFNpemUoKSx0aGlzLl91cGRhdGVSZW5kZXJlZFJhbmdlKCl9b25Db250ZW50UmVuZGVyZWQoKXt9b25SZW5kZXJlZE9mZnNldENoYW5nZWQoKXt9c2Nyb2xsVG9JbmRleCh0LG4pe3RoaXMuX3ZpZXdwb3J0JiZ0aGlzLl92aWV3cG9ydC5zY3JvbGxUb09mZnNldCh0KnRoaXMuX2l0ZW1TaXplLG4pfV91cGRhdGVUb3RhbENvbnRlbnRTaXplKCl7dGhpcy5fdmlld3BvcnQmJnRoaXMuX3ZpZXdwb3J0LnNldFRvdGFsQ29udGVudFNpemUodGhpcy5fdmlld3BvcnQuZ2V0RGF0YUxlbmd0aCgpKnRoaXMuX2l0ZW1TaXplKX1fdXBkYXRlUmVuZGVyZWRSYW5nZSgpe2lmKCF0aGlzLl92aWV3cG9ydClyZXR1cm47Y29uc3QgdD10aGlzLl92aWV3cG9ydC5nZXRSZW5kZXJlZFJhbmdlKCksbj17c3RhcnQ6dC5zdGFydCxlbmQ6dC5lbmR9LGU9dGhpcy5fdmlld3BvcnQuZ2V0Vmlld3BvcnRTaXplKCksYT10aGlzLl92aWV3cG9ydC5nZXREYXRhTGVuZ3RoKCk7bGV0IG89dGhpcy5fdmlld3BvcnQubWVhc3VyZVNjcm9sbE9mZnNldCgpLHI9by90aGlzLl9pdGVtU2l6ZTtpZihuLmVuZD5hKXtjb25zdCB0PU1hdGguY2VpbChlL3RoaXMuX2l0ZW1TaXplKSxpPU1hdGgubWF4KDAsTWF0aC5taW4ocixhLXQpKTtyIT1pJiYocj1pLG89aSp0aGlzLl9pdGVtU2l6ZSxuLnN0YXJ0PU1hdGguZmxvb3IocikpLG4uZW5kPU1hdGgubWF4KDAsTWF0aC5taW4oYSxuLnN0YXJ0K3QpKX1jb25zdCBpPW8tbi5zdGFydCp0aGlzLl9pdGVtU2l6ZTtpZihpPHRoaXMuX21pbkJ1ZmZlclB4JiYwIT1uLnN0YXJ0KXtjb25zdCB0PU1hdGguY2VpbCgodGhpcy5fbWF4QnVmZmVyUHgtaSkvdGhpcy5faXRlbVNpemUpO24uc3RhcnQ9TWF0aC5tYXgoMCxuLnN0YXJ0LXQpLG4uZW5kPU1hdGgubWluKGEsTWF0aC5jZWlsKHIrKGUrdGhpcy5fbWluQnVmZmVyUHgpL3RoaXMuX2l0ZW1TaXplKSl9ZWxzZXtjb25zdCB0PW4uZW5kKnRoaXMuX2l0ZW1TaXplLShvK2UpO2lmKHQ8dGhpcy5fbWluQnVmZmVyUHgmJm4uZW5kIT1hKXtjb25zdCBlPU1hdGguY2VpbCgodGhpcy5fbWF4QnVmZmVyUHgtdCkvdGhpcy5faXRlbVNpemUpO2U+MCYmKG4uZW5kPU1hdGgubWluKGEsbi5lbmQrZSksbi5zdGFydD1NYXRoLm1heCgwLE1hdGguZmxvb3Ioci10aGlzLl9taW5CdWZmZXJQeC90aGlzLl9pdGVtU2l6ZSkpKX19dGhpcy5fdmlld3BvcnQuc2V0UmVuZGVyZWRSYW5nZShuKSx0aGlzLl92aWV3cG9ydC5zZXRSZW5kZXJlZENvbnRlbnRPZmZzZXQodGhpcy5faXRlbVNpemUqbi5zdGFydCksdGhpcy5fc2Nyb2xsZWRJbmRleENoYW5nZS5uZXh0KE1hdGguZmxvb3IocikpfX1jbGFzcyBmQXtjb25zdHJ1Y3Rvcigpe3RoaXMuX2l0ZW1TaXplPTIwLHRoaXMuX21pbkJ1ZmZlclB4PTEwMCx0aGlzLl9tYXhCdWZmZXJQeD0yMDAsdGhpcy5fc2Nyb2xsU3RyYXRlZ3k9bmV3IHVBKHRoaXMuaXRlbVNpemUsdGhpcy5taW5CdWZmZXJQeCx0aGlzLm1heEJ1ZmZlclB4KX1nZXQgaXRlbVNpemUoKXtyZXR1cm4gdGhpcy5faXRlbVNpemV9c2V0IGl0ZW1TaXplKHQpe3RoaXMuX2l0ZW1TaXplPVl3KHQpfWdldCBtaW5CdWZmZXJQeCgpe3JldHVybiB0aGlzLl9taW5CdWZmZXJQeH1zZXQgbWluQnVmZmVyUHgodCl7dGhpcy5fbWluQnVmZmVyUHg9WXcodCl9Z2V0IG1heEJ1ZmZlclB4KCl7cmV0dXJuIHRoaXMuX21heEJ1ZmZlclB4fXNldCBtYXhCdWZmZXJQeCh0KXt0aGlzLl9tYXhCdWZmZXJQeD1Zdyh0KX1uZ09uQ2hhbmdlcygpe3RoaXMuX3Njcm9sbFN0cmF0ZWd5LnVwZGF0ZUl0ZW1BbmRCdWZmZXJTaXplKHRoaXMuaXRlbVNpemUsdGhpcy5taW5CdWZmZXJQeCx0aGlzLm1heEJ1ZmZlclB4KX19ZkEuybVmYWM9ZnVuY3Rpb24gdChuKXtyZXR1cm4gbmV3KG58fGZBKX0sZkEuybVkaXI9dm8oe3R5cGU6ZkEsc2VsZWN0b3JzOltbImNkay12aXJ0dWFsLXNjcm9sbC12aWV3cG9ydCIsIml0ZW1TaXplIiwiIl1dLGlucHV0czp7aXRlbVNpemU6Iml0ZW1TaXplIixtaW5CdWZmZXJQeDoibWluQnVmZmVyUHgiLG1heEJ1ZmZlclB4OiJtYXhCdWZmZXJQeCJ9LGZlYXR1cmVzOltNdShbe3Byb3ZpZGU6YkEsdXNlRmFjdG9yeTpmdW5jdGlvbiBoQSh0KXtyZXR1cm4gdC5fc2Nyb2xsU3RyYXRlZ3l9LGRlcHM6W2FhKCgoKT0+ZkEpKV19XSkscHJdfSksZkEucHJvcERlY29yYXRvcnM9e2l0ZW1TaXplOlt7dHlwZTpmX31dLG1pbkJ1ZmZlclB4Olt7dHlwZTpmX31dLG1heEJ1ZmZlclB4Olt7dHlwZTpmX31dfTtjbGFzcyBfQXtjb25zdHJ1Y3Rvcih0LG4sZSl7dGhpcy5fbmdab25lPXQsdGhpcy5fcGxhdGZvcm09bix0aGlzLl9zY3JvbGxlZD1uZXcgeCx0aGlzLl9nbG9iYWxTdWJzY3JpcHRpb249bnVsbCx0aGlzLl9zY3JvbGxlZENvdW50PTAsdGhpcy5zY3JvbGxDb250YWluZXJzPW5ldyBNYXAsdGhpcy5fZG9jdW1lbnQ9ZX1yZWdpc3Rlcih0KXt0aGlzLnNjcm9sbENvbnRhaW5lcnMuaGFzKHQpfHx0aGlzLnNjcm9sbENvbnRhaW5lcnMuc2V0KHQsdC5lbGVtZW50U2Nyb2xsZWQoKS5zdWJzY3JpYmUoKCgpPT50aGlzLl9zY3JvbGxlZC5uZXh0KHQpKSkpfWRlcmVnaXN0ZXIodCl7Y29uc3Qgbj10aGlzLnNjcm9sbENvbnRhaW5lcnMuZ2V0KHQpO24mJihuLnVuc3Vic2NyaWJlKCksdGhpcy5zY3JvbGxDb250YWluZXJzLmRlbGV0ZSh0KSl9c2Nyb2xsZWQodD0yMCl7cmV0dXJuIHRoaXMuX3BsYXRmb3JtLmlzQnJvd3Nlcj9uZXcgXygobj0+e3RoaXMuX2dsb2JhbFN1YnNjcmlwdGlvbnx8dGhpcy5fYWRkR2xvYmFsTGlzdGVuZXIoKTtjb25zdCBlPXQ+MD90aGlzLl9zY3JvbGxlZC5waXBlKGFuKHQpKS5zdWJzY3JpYmUobik6dGhpcy5fc2Nyb2xsZWQuc3Vic2NyaWJlKG4pO3JldHVybiB0aGlzLl9zY3JvbGxlZENvdW50KyssKCk9PntlLnVuc3Vic2NyaWJlKCksdGhpcy5fc2Nyb2xsZWRDb3VudC0tLHRoaXMuX3Njcm9sbGVkQ291bnR8fHRoaXMuX3JlbW92ZUdsb2JhbExpc3RlbmVyKCl9fSkpOlooKX1uZ09uRGVzdHJveSgpe3RoaXMuX3JlbW92ZUdsb2JhbExpc3RlbmVyKCksdGhpcy5zY3JvbGxDb250YWluZXJzLmZvckVhY2goKCh0LG4pPT50aGlzLmRlcmVnaXN0ZXIobikpKSx0aGlzLl9zY3JvbGxlZC5jb21wbGV0ZSgpfWFuY2VzdG9yU2Nyb2xsZWQodCxuKXtjb25zdCBlPXRoaXMuZ2V0QW5jZXN0b3JTY3JvbGxDb250YWluZXJzKHQpO3JldHVybiB0aGlzLnNjcm9sbGVkKG4pLnBpcGUoR3QoKHQ9PiF0fHxlLmluZGV4T2YodCk+LTEpKSl9Z2V0QW5jZXN0b3JTY3JvbGxDb250YWluZXJzKHQpe2NvbnN0IG49W107cmV0dXJuIHRoaXMuc2Nyb2xsQ29udGFpbmVycy5mb3JFYWNoKCgoZSxhKT0+e3RoaXMuX3Njcm9sbGFibGVDb250YWluc0VsZW1lbnQoYSx0KSYmbi5wdXNoKGEpfSkpLG59X2dldERvY3VtZW50KCl7cmV0dXJuIHRoaXMuX2RvY3VtZW50fHxkb2N1bWVudH1fZ2V0V2luZG93KCl7cmV0dXJuIHRoaXMuX2dldERvY3VtZW50KCkuZGVmYXVsdFZpZXd8fHdpbmRvd31fc2Nyb2xsYWJsZUNvbnRhaW5zRWxlbWVudCh0LG4pe2xldCBlPW4ubmF0aXZlRWxlbWVudCxhPXQuZ2V0RWxlbWVudFJlZigpLm5hdGl2ZUVsZW1lbnQ7ZG97aWYoZT09YSlyZXR1cm4hMH13aGlsZShlPWUucGFyZW50RWxlbWVudCk7cmV0dXJuITF9X2FkZEdsb2JhbExpc3RlbmVyKCl7dGhpcy5fZ2xvYmFsU3Vic2NyaXB0aW9uPXRoaXMuX25nWm9uZS5ydW5PdXRzaWRlQW5ndWxhcigoKCk9PlZ0KHRoaXMuX2dldFdpbmRvdygpLmRvY3VtZW50LCJzY3JvbGwiKS5zdWJzY3JpYmUoKCgpPT50aGlzLl9zY3JvbGxlZC5uZXh0KCkpKSkpfV9yZW1vdmVHbG9iYWxMaXN0ZW5lcigpe3RoaXMuX2dsb2JhbFN1YnNjcmlwdGlvbiYmKHRoaXMuX2dsb2JhbFN1YnNjcmlwdGlvbi51bnN1YnNjcmliZSgpLHRoaXMuX2dsb2JhbFN1YnNjcmlwdGlvbj1udWxsKX19X0EuybVmYWM9ZnVuY3Rpb24gdChuKXtyZXR1cm4gbmV3KG58fF9BKShaYShKXyksWmEoU3cpLFphKHpDLDgpKX0sX0EuybVwcm92PVdlKHtmYWN0b3J5OmZ1bmN0aW9uIHQoKXtyZXR1cm4gbmV3IF9BKFphKEpfKSxaYShTdyksWmEoekMsOCkpfSx0b2tlbjpfQSxwcm92aWRlZEluOiJyb290In0pLF9BLmN0b3JQYXJhbWV0ZXJzPSgpPT5be3R5cGU6Sl99LHt0eXBlOlN3fSx7dHlwZTp2b2lkIDAsZGVjb3JhdG9yczpbe3R5cGU6TmV9LHt0eXBlOkllLGFyZ3M6W3pDXX1dfV0KLyoqCiAgICAgKiBAbGljZW5zZQogICAgICogQ29weXJpZ2h0IEdvb2dsZSBMTEMgQWxsIFJpZ2h0cyBSZXNlcnZlZC4KICAgICAqCiAgICAgKiBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhbiBNSVQtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQogICAgICogZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZSBhdCBodHRwczovL2FuZ3VsYXIuaW8vbGljZW5zZQogICAgICovO2NsYXNzIENBe2NvbnN0cnVjdG9yKHQsbixlLGEpe3RoaXMuZWxlbWVudFJlZj10LHRoaXMuc2Nyb2xsRGlzcGF0Y2hlcj1uLHRoaXMubmdab25lPWUsdGhpcy5kaXI9YSx0aGlzLl9kZXN0cm95ZWQ9bmV3IHgsdGhpcy5fZWxlbWVudFNjcm9sbGVkPW5ldyBfKCh0PT50aGlzLm5nWm9uZS5ydW5PdXRzaWRlQW5ndWxhcigoKCk9PlZ0KHRoaXMuZWxlbWVudFJlZi5uYXRpdmVFbGVtZW50LCJzY3JvbGwiKS5waXBlKGRlKHRoaXMuX2Rlc3Ryb3llZCkpLnN1YnNjcmliZSh0KSkpKSl9bmdPbkluaXQoKXt0aGlzLnNjcm9sbERpc3BhdGNoZXIucmVnaXN0ZXIodGhpcyl9bmdPbkRlc3Ryb3koKXt0aGlzLnNjcm9sbERpc3BhdGNoZXIuZGVyZWdpc3Rlcih0aGlzKSx0aGlzLl9kZXN0cm95ZWQubmV4dCgpLHRoaXMuX2Rlc3Ryb3llZC5jb21wbGV0ZSgpfWVsZW1lbnRTY3JvbGxlZCgpe3JldHVybiB0aGlzLl9lbGVtZW50U2Nyb2xsZWR9Z2V0RWxlbWVudFJlZigpe3JldHVybiB0aGlzLmVsZW1lbnRSZWZ9c2Nyb2xsVG8odCl7Y29uc3Qgbj10aGlzLmVsZW1lbnRSZWYubmF0aXZlRWxlbWVudCxlPXRoaXMuZGlyJiYicnRsIj09dGhpcy5kaXIudmFsdWU7bnVsbD09dC5sZWZ0JiYodC5sZWZ0PWU/dC5lbmQ6dC5zdGFydCksbnVsbD09dC5yaWdodCYmKHQucmlnaHQ9ZT90LnN0YXJ0OnQuZW5kKSxudWxsIT10LmJvdHRvbSYmKHQudG9wPW4uc2Nyb2xsSGVpZ2h0LW4uY2xpZW50SGVpZ2h0LXQuYm90dG9tKSxlJiYwIT1GdygpPyhudWxsIT10LmxlZnQmJih0LnJpZ2h0PW4uc2Nyb2xsV2lkdGgtbi5jbGllbnRXaWR0aC10LmxlZnQpLDI9PUZ3KCk/dC5sZWZ0PXQucmlnaHQ6MT09RncoKSYmKHQubGVmdD10LnJpZ2h0Py10LnJpZ2h0OnQucmlnaHQpKTpudWxsIT10LnJpZ2h0JiYodC5sZWZ0PW4uc2Nyb2xsV2lkdGgtbi5jbGllbnRXaWR0aC10LnJpZ2h0KSx0aGlzLl9hcHBseVNjcm9sbFRvT3B0aW9ucyh0KX1fYXBwbHlTY3JvbGxUb09wdGlvbnModCl7Y29uc3Qgbj10aGlzLmVsZW1lbnRSZWYubmF0aXZlRWxlbWVudDshKGZ1bmN0aW9uIGUoKXtpZihudWxsPT1EdylpZigib2JqZWN0Ij09dHlwZW9mIGRvY3VtZW50JiZkb2N1bWVudHx8KER3PSExKSwic2Nyb2xsQmVoYXZpb3IiaW4gZG9jdW1lbnQuZG9jdW1lbnRFbGVtZW50LnN0eWxlKUR3PSEwO2Vsc2V7Y29uc3QgdD1FbGVtZW50LnByb3RvdHlwZS5zY3JvbGxUbztEdz0hIXQmJiEvXHtccypcW25hdGl2ZSBjb2RlXF1ccypcfS8udGVzdCh0LnRvU3RyaW5nKCkpfXJldHVybiBEd30pKCk/KG51bGwhPXQudG9wJiYobi5zY3JvbGxUb3A9dC50b3ApLG51bGwhPXQubGVmdCYmKG4uc2Nyb2xsTGVmdD10LmxlZnQpKTpuLnNjcm9sbFRvKHQpfW1lYXN1cmVTY3JvbGxPZmZzZXQodCl7Y29uc3Qgbj0ibGVmdCIsZT0icmlnaHQiLGE9dGhpcy5lbGVtZW50UmVmLm5hdGl2ZUVsZW1lbnQ7aWYoInRvcCI9PXQpcmV0dXJuIGEuc2Nyb2xsVG9wO2lmKCJib3R0b20iPT10KXJldHVybiBhLnNjcm9sbEhlaWdodC1hLmNsaWVudEhlaWdodC1hLnNjcm9sbFRvcDtjb25zdCBvPXRoaXMuZGlyJiYicnRsIj09dGhpcy5kaXIudmFsdWU7cmV0dXJuInN0YXJ0Ij09dD90PW8/ZTpuOiJlbmQiPT10JiYodD1vP246ZSksbyYmMj09RncoKT90PT1uP2Euc2Nyb2xsV2lkdGgtYS5jbGllbnRXaWR0aC1hLnNjcm9sbExlZnQ6YS5zY3JvbGxMZWZ0Om8mJjE9PUZ3KCk/dD09bj9hLnNjcm9sbExlZnQrYS5zY3JvbGxXaWR0aC1hLmNsaWVudFdpZHRoOi1hLnNjcm9sbExlZnQ6dD09bj9hLnNjcm9sbExlZnQ6YS5zY3JvbGxXaWR0aC1hLmNsaWVudFdpZHRoLWEuc2Nyb2xsTGVmdH19Q0EuybVmYWM9ZnVuY3Rpb24gdChuKXtyZXR1cm4gbmV3KG58fENBKShaZyh4dSksWmcoX0EpLFpnKEpfKSxaZyhVUyw4KSl9LENBLsm1ZGlyPXZvKHt0eXBlOkNBLHNlbGVjdG9yczpbWyIiLCJjZGstc2Nyb2xsYWJsZSIsIiJdLFsiIiwiY2RrU2Nyb2xsYWJsZSIsIiJdXX0pLENBLmN0b3JQYXJhbWV0ZXJzPSgpPT5be3R5cGU6eHV9LHt0eXBlOl9BfSx7dHlwZTpKX30se3R5cGU6VVMsZGVjb3JhdG9yczpbe3R5cGU6TmV9XX1dCi8qKgogICAgICogQGxpY2Vuc2UKICAgICAqIENvcHlyaWdodCBHb29nbGUgTExDIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCiAgICAgKgogICAgICogVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYW4gTUlULXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKICAgICAqIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUgYXQgaHR0cHM6Ly9hbmd1bGFyLmlvL2xpY2Vuc2UKICAgICAqLztjbGFzcyBNQXtjb25zdHJ1Y3Rvcih0LG4sZSl7dGhpcy5fcGxhdGZvcm09dCx0aGlzLl9jaGFuZ2U9bmV3IHgsdGhpcy5fY2hhbmdlTGlzdGVuZXI9dD0+e3RoaXMuX2NoYW5nZS5uZXh0KHQpfSx0aGlzLl9kb2N1bWVudD1lLG4ucnVuT3V0c2lkZUFuZ3VsYXIoKCgpPT57aWYodC5pc0Jyb3dzZXIpe2NvbnN0IHQ9dGhpcy5fZ2V0V2luZG93KCk7dC5hZGRFdmVudExpc3RlbmVyKCJyZXNpemUiLHRoaXMuX2NoYW5nZUxpc3RlbmVyKSx0LmFkZEV2ZW50TGlzdGVuZXIoIm9yaWVudGF0aW9uY2hhbmdlIix0aGlzLl9jaGFuZ2VMaXN0ZW5lcil9dGhpcy5jaGFuZ2UoKS5zdWJzY3JpYmUoKCgpPT50aGlzLl91cGRhdGVWaWV3cG9ydFNpemUoKSkpfSkpfW5nT25EZXN0cm95KCl7aWYodGhpcy5fcGxhdGZvcm0uaXNCcm93c2VyKXtjb25zdCB0PXRoaXMuX2dldFdpbmRvdygpO3QucmVtb3ZlRXZlbnRMaXN0ZW5lcigicmVzaXplIix0aGlzLl9jaGFuZ2VMaXN0ZW5lciksdC5yZW1vdmVFdmVudExpc3RlbmVyKCJvcmllbnRhdGlvbmNoYW5nZSIsdGhpcy5fY2hhbmdlTGlzdGVuZXIpfXRoaXMuX2NoYW5nZS5jb21wbGV0ZSgpfWdldFZpZXdwb3J0U2l6ZSgpe3RoaXMuX3ZpZXdwb3J0U2l6ZXx8dGhpcy5fdXBkYXRlVmlld3BvcnRTaXplKCk7Y29uc3QgdD17d2lkdGg6dGhpcy5fdmlld3BvcnRTaXplLndpZHRoLGhlaWdodDp0aGlzLl92aWV3cG9ydFNpemUuaGVpZ2h0fTtyZXR1cm4gdGhpcy5fcGxhdGZvcm0uaXNCcm93c2VyfHwodGhpcy5fdmlld3BvcnRTaXplPW51bGwpLHR9Z2V0Vmlld3BvcnRSZWN0KCl7Y29uc3QgdD10aGlzLmdldFZpZXdwb3J0U2Nyb2xsUG9zaXRpb24oKSx7d2lkdGg6bixoZWlnaHQ6ZX09dGhpcy5nZXRWaWV3cG9ydFNpemUoKTtyZXR1cm57dG9wOnQudG9wLGxlZnQ6dC5sZWZ0LGJvdHRvbTp0LnRvcCtlLHJpZ2h0OnQubGVmdCtuLGhlaWdodDplLHdpZHRoOm59fWdldFZpZXdwb3J0U2Nyb2xsUG9zaXRpb24oKXtpZighdGhpcy5fcGxhdGZvcm0uaXNCcm93c2VyKXJldHVybnt0b3A6MCxsZWZ0OjB9O2NvbnN0IHQ9dGhpcy5fZ2V0RG9jdW1lbnQoKSxuPXRoaXMuX2dldFdpbmRvdygpLGU9dC5kb2N1bWVudEVsZW1lbnQsYT1lLmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpO3JldHVybnt0b3A6LWEudG9wfHx0LmJvZHkuc2Nyb2xsVG9wfHxuLnNjcm9sbFl8fGUuc2Nyb2xsVG9wfHwwLGxlZnQ6LWEubGVmdHx8dC5ib2R5LnNjcm9sbExlZnR8fG4uc2Nyb2xsWHx8ZS5zY3JvbGxMZWZ0fHwwfX1jaGFuZ2UodD0yMCl7cmV0dXJuIHQ+MD90aGlzLl9jaGFuZ2UucGlwZShhbih0KSk6dGhpcy5fY2hhbmdlfV9nZXREb2N1bWVudCgpe3JldHVybiB0aGlzLl9kb2N1bWVudHx8ZG9jdW1lbnR9X2dldFdpbmRvdygpe3JldHVybiB0aGlzLl9nZXREb2N1bWVudCgpLmRlZmF1bHRWaWV3fHx3aW5kb3d9X3VwZGF0ZVZpZXdwb3J0U2l6ZSgpe2NvbnN0IHQ9dGhpcy5fZ2V0V2luZG93KCk7dGhpcy5fdmlld3BvcnRTaXplPXRoaXMuX3BsYXRmb3JtLmlzQnJvd3Nlcj97d2lkdGg6dC5pbm5lcldpZHRoLGhlaWdodDp0LmlubmVySGVpZ2h0fTp7d2lkdGg6MCxoZWlnaHQ6MH19fU1BLsm1ZmFjPWZ1bmN0aW9uIHQobil7cmV0dXJuIG5ldyhufHxNQSkoWmEoU3cpLFphKEpfKSxaYSh6Qyw4KSl9LE1BLsm1cHJvdj1XZSh7ZmFjdG9yeTpmdW5jdGlvbiB0KCl7cmV0dXJuIG5ldyBNQShaYShTdyksWmEoSl8pLFphKHpDLDgpKX0sdG9rZW46TUEscHJvdmlkZWRJbjoicm9vdCJ9KSxNQS5jdG9yUGFyYW1ldGVycz0oKT0+W3t0eXBlOlN3fSx7dHlwZTpKX30se3R5cGU6dm9pZCAwLGRlY29yYXRvcnM6W3t0eXBlOk5lfSx7dHlwZTpJZSxhcmdzOlt6Q119XX1dCi8qKgogICAgICogQGxpY2Vuc2UKICAgICAqIENvcHlyaWdodCBHb29nbGUgTExDIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCiAgICAgKgogICAgICogVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYW4gTUlULXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKICAgICAqIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUgYXQgaHR0cHM6Ly9hbmd1bGFyLmlvL2xpY2Vuc2UKICAgICAqLztjb25zdCBPQT0idW5kZWZpbmVkIiE9dHlwZW9mIHJlcXVlc3RBbmltYXRpb25GcmFtZT9kdDpsdDtjbGFzcyBQQSBleHRlbmRzIENBe2NvbnN0cnVjdG9yKHQsbixlLGEsbyxyLGkpe2lmKHN1cGVyKHQscixlLG8pLHRoaXMuZWxlbWVudFJlZj10LHRoaXMuX2NoYW5nZURldGVjdG9yUmVmPW4sdGhpcy5fc2Nyb2xsU3RyYXRlZ3k9YSx0aGlzLl9kZXRhY2hlZFN1YmplY3Q9bmV3IHgsdGhpcy5fcmVuZGVyZWRSYW5nZVN1YmplY3Q9bmV3IHgsdGhpcy5fb3JpZW50YXRpb249InZlcnRpY2FsIix0aGlzLnNjcm9sbGVkSW5kZXhDaGFuZ2U9bmV3IF8oKHQ9PnRoaXMuX3Njcm9sbFN0cmF0ZWd5LnNjcm9sbGVkSW5kZXhDaGFuZ2Uuc3Vic2NyaWJlKChuPT5Qcm9taXNlLnJlc29sdmUoKS50aGVuKCgoKT0+dGhpcy5uZ1pvbmUucnVuKCgoKT0+dC5uZXh0KG4pKSkpKSkpKSksdGhpcy5yZW5kZXJlZFJhbmdlU3RyZWFtPXRoaXMuX3JlbmRlcmVkUmFuZ2VTdWJqZWN0LHRoaXMuX3RvdGFsQ29udGVudFNpemU9MCx0aGlzLl90b3RhbENvbnRlbnRXaWR0aD0iIix0aGlzLl90b3RhbENvbnRlbnRIZWlnaHQ9IiIsdGhpcy5fcmVuZGVyZWRSYW5nZT17c3RhcnQ6MCxlbmQ6MH0sdGhpcy5fZGF0YUxlbmd0aD0wLHRoaXMuX3ZpZXdwb3J0U2l6ZT0wLHRoaXMuX3JlbmRlcmVkQ29udGVudE9mZnNldD0wLHRoaXMuX3JlbmRlcmVkQ29udGVudE9mZnNldE5lZWRzUmV3cml0ZT0hMSx0aGlzLl9pc0NoYW5nZURldGVjdGlvblBlbmRpbmc9ITEsdGhpcy5fcnVuQWZ0ZXJDaGFuZ2VEZXRlY3Rpb249W10sdGhpcy5fdmlld3BvcnRDaGFuZ2VzPXMuRU1QVFksIWEmJigidW5kZWZpbmVkIj09dHlwZW9mIG5nRGV2TW9kZXx8bmdEZXZNb2RlKSl0aHJvdyBFcnJvcignRXJyb3I6IGNkay12aXJ0dWFsLXNjcm9sbC12aWV3cG9ydCByZXF1aXJlcyB0aGUgIml0ZW1TaXplIiBwcm9wZXJ0eSB0byBiZSBzZXQuJyk7aSYmKHRoaXMuX3ZpZXdwb3J0Q2hhbmdlcz1pLmNoYW5nZSgpLnN1YnNjcmliZSgoKCk9Pnt0aGlzLmNoZWNrVmlld3BvcnRTaXplKCl9KSkpfWdldCBvcmllbnRhdGlvbigpe3JldHVybiB0aGlzLl9vcmllbnRhdGlvbn1zZXQgb3JpZW50YXRpb24odCl7dGhpcy5fb3JpZW50YXRpb24hPT10JiYodGhpcy5fb3JpZW50YXRpb249dCx0aGlzLl9jYWxjdWxhdGVTcGFjZXJTaXplKCkpfW5nT25Jbml0KCl7c3VwZXIubmdPbkluaXQoKSx0aGlzLm5nWm9uZS5ydW5PdXRzaWRlQW5ndWxhcigoKCk9PlByb21pc2UucmVzb2x2ZSgpLnRoZW4oKCgpPT57dGhpcy5fbWVhc3VyZVZpZXdwb3J0U2l6ZSgpLHRoaXMuX3Njcm9sbFN0cmF0ZWd5LmF0dGFjaCh0aGlzKSx0aGlzLmVsZW1lbnRTY3JvbGxlZCgpLnBpcGUoY2UobnVsbCksYW4oMCxPQSkpLnN1YnNjcmliZSgoKCk9PnRoaXMuX3Njcm9sbFN0cmF0ZWd5Lm9uQ29udGVudFNjcm9sbGVkKCkpKSx0aGlzLl9tYXJrQ2hhbmdlRGV0ZWN0aW9uTmVlZGVkKCl9KSkpKX1uZ09uRGVzdHJveSgpe3RoaXMuZGV0YWNoKCksdGhpcy5fc2Nyb2xsU3RyYXRlZ3kuZGV0YWNoKCksdGhpcy5fcmVuZGVyZWRSYW5nZVN1YmplY3QuY29tcGxldGUoKSx0aGlzLl9kZXRhY2hlZFN1YmplY3QuY29tcGxldGUoKSx0aGlzLl92aWV3cG9ydENoYW5nZXMudW5zdWJzY3JpYmUoKSxzdXBlci5uZ09uRGVzdHJveSgpfWF0dGFjaCh0KXtpZih0aGlzLl9mb3JPZiYmKCJ1bmRlZmluZWQiPT10eXBlb2YgbmdEZXZNb2RlfHxuZ0Rldk1vZGUpKXRocm93IEVycm9yKCJDZGtWaXJ0dWFsU2Nyb2xsVmlld3BvcnQgaXMgYWxyZWFkeSBhdHRhY2hlZC4iKTt0aGlzLm5nWm9uZS5ydW5PdXRzaWRlQW5ndWxhcigoKCk9Pnt0aGlzLl9mb3JPZj10LHRoaXMuX2Zvck9mLmRhdGFTdHJlYW0ucGlwZShkZSh0aGlzLl9kZXRhY2hlZFN1YmplY3QpKS5zdWJzY3JpYmUoKHQ9Pntjb25zdCBuPXQubGVuZ3RoO24hPT10aGlzLl9kYXRhTGVuZ3RoJiYodGhpcy5fZGF0YUxlbmd0aD1uLHRoaXMuX3Njcm9sbFN0cmF0ZWd5Lm9uRGF0YUxlbmd0aENoYW5nZWQoKSksdGhpcy5fZG9DaGFuZ2VEZXRlY3Rpb24oKX0pKX0pKX1kZXRhY2goKXt0aGlzLl9mb3JPZj1udWxsLHRoaXMuX2RldGFjaGVkU3ViamVjdC5uZXh0KCl9Z2V0RGF0YUxlbmd0aCgpe3JldHVybiB0aGlzLl9kYXRhTGVuZ3RofWdldFZpZXdwb3J0U2l6ZSgpe3JldHVybiB0aGlzLl92aWV3cG9ydFNpemV9Z2V0UmVuZGVyZWRSYW5nZSgpe3JldHVybiB0aGlzLl9yZW5kZXJlZFJhbmdlfXNldFRvdGFsQ29udGVudFNpemUodCl7dGhpcy5fdG90YWxDb250ZW50U2l6ZSE9PXQmJih0aGlzLl90b3RhbENvbnRlbnRTaXplPXQsdGhpcy5fY2FsY3VsYXRlU3BhY2VyU2l6ZSgpLHRoaXMuX21hcmtDaGFuZ2VEZXRlY3Rpb25OZWVkZWQoKSl9c2V0UmVuZGVyZWRSYW5nZSh0KXsoZnVuY3Rpb24gbih0LGUpe3JldHVybiB0LnN0YXJ0PT1lLnN0YXJ0JiZ0LmVuZD09ZS5lbmR9KSh0aGlzLl9yZW5kZXJlZFJhbmdlLHQpfHwodGhpcy5fcmVuZGVyZWRSYW5nZVN1YmplY3QubmV4dCh0aGlzLl9yZW5kZXJlZFJhbmdlPXQpLHRoaXMuX21hcmtDaGFuZ2VEZXRlY3Rpb25OZWVkZWQoKCgpPT50aGlzLl9zY3JvbGxTdHJhdGVneS5vbkNvbnRlbnRSZW5kZXJlZCgpKSkpfWdldE9mZnNldFRvUmVuZGVyZWRDb250ZW50U3RhcnQoKXtyZXR1cm4gdGhpcy5fcmVuZGVyZWRDb250ZW50T2Zmc2V0TmVlZHNSZXdyaXRlP251bGw6dGhpcy5fcmVuZGVyZWRDb250ZW50T2Zmc2V0fXNldFJlbmRlcmVkQ29udGVudE9mZnNldCh0LG49InRvLXN0YXJ0Iil7Y29uc3QgZT0iaG9yaXpvbnRhbCI9PXRoaXMub3JpZW50YXRpb24sYT1lPyJYIjoiWSI7bGV0IG89YHRyYW5zbGF0ZSR7YX0oJHtOdW1iZXIoKGUmJnRoaXMuZGlyJiYicnRsIj09dGhpcy5kaXIudmFsdWU/LTE6MSkqdCl9cHgpYDt0aGlzLl9yZW5kZXJlZENvbnRlbnRPZmZzZXQ9dCwidG8tZW5kIj09PW4mJihvKz1gIHRyYW5zbGF0ZSR7YX0oLTEwMCUpYCx0aGlzLl9yZW5kZXJlZENvbnRlbnRPZmZzZXROZWVkc1Jld3JpdGU9ITApLHRoaXMuX3JlbmRlcmVkQ29udGVudFRyYW5zZm9ybSE9byYmKHRoaXMuX3JlbmRlcmVkQ29udGVudFRyYW5zZm9ybT1vLHRoaXMuX21hcmtDaGFuZ2VEZXRlY3Rpb25OZWVkZWQoKCgpPT57dGhpcy5fcmVuZGVyZWRDb250ZW50T2Zmc2V0TmVlZHNSZXdyaXRlPyh0aGlzLl9yZW5kZXJlZENvbnRlbnRPZmZzZXQtPXRoaXMubWVhc3VyZVJlbmRlcmVkQ29udGVudFNpemUoKSx0aGlzLl9yZW5kZXJlZENvbnRlbnRPZmZzZXROZWVkc1Jld3JpdGU9ITEsdGhpcy5zZXRSZW5kZXJlZENvbnRlbnRPZmZzZXQodGhpcy5fcmVuZGVyZWRDb250ZW50T2Zmc2V0KSk6dGhpcy5fc2Nyb2xsU3RyYXRlZ3kub25SZW5kZXJlZE9mZnNldENoYW5nZWQoKX0pKSl9c2Nyb2xsVG9PZmZzZXQodCxuPSJhdXRvIil7Y29uc3QgZT17YmVoYXZpb3I6bn07Imhvcml6b250YWwiPT09dGhpcy5vcmllbnRhdGlvbj9lLnN0YXJ0PXQ6ZS50b3A9dCx0aGlzLnNjcm9sbFRvKGUpfXNjcm9sbFRvSW5kZXgodCxuPSJhdXRvIil7dGhpcy5fc2Nyb2xsU3RyYXRlZ3kuc2Nyb2xsVG9JbmRleCh0LG4pfW1lYXN1cmVTY3JvbGxPZmZzZXQodCl7cmV0dXJuIHN1cGVyLm1lYXN1cmVTY3JvbGxPZmZzZXQodHx8KCJob3Jpem9udGFsIj09PXRoaXMub3JpZW50YXRpb24/InN0YXJ0IjoidG9wIikpfW1lYXN1cmVSZW5kZXJlZENvbnRlbnRTaXplKCl7Y29uc3QgdD10aGlzLl9jb250ZW50V3JhcHBlci5uYXRpdmVFbGVtZW50O3JldHVybiJob3Jpem9udGFsIj09PXRoaXMub3JpZW50YXRpb24/dC5vZmZzZXRXaWR0aDp0Lm9mZnNldEhlaWdodH1tZWFzdXJlUmFuZ2VTaXplKHQpe3JldHVybiB0aGlzLl9mb3JPZj90aGlzLl9mb3JPZi5tZWFzdXJlUmFuZ2VTaXplKHQsdGhpcy5vcmllbnRhdGlvbik6MH1jaGVja1ZpZXdwb3J0U2l6ZSgpe3RoaXMuX21lYXN1cmVWaWV3cG9ydFNpemUoKSx0aGlzLl9zY3JvbGxTdHJhdGVneS5vbkRhdGFMZW5ndGhDaGFuZ2VkKCl9X21lYXN1cmVWaWV3cG9ydFNpemUoKXtjb25zdCB0PXRoaXMuZWxlbWVudFJlZi5uYXRpdmVFbGVtZW50O3RoaXMuX3ZpZXdwb3J0U2l6ZT0iaG9yaXpvbnRhbCI9PT10aGlzLm9yaWVudGF0aW9uP3QuY2xpZW50V2lkdGg6dC5jbGllbnRIZWlnaHR9X21hcmtDaGFuZ2VEZXRlY3Rpb25OZWVkZWQodCl7dCYmdGhpcy5fcnVuQWZ0ZXJDaGFuZ2VEZXRlY3Rpb24ucHVzaCh0KSx0aGlzLl9pc0NoYW5nZURldGVjdGlvblBlbmRpbmd8fCh0aGlzLl9pc0NoYW5nZURldGVjdGlvblBlbmRpbmc9ITAsdGhpcy5uZ1pvbmUucnVuT3V0c2lkZUFuZ3VsYXIoKCgpPT5Qcm9taXNlLnJlc29sdmUoKS50aGVuKCgoKT0+e3RoaXMuX2RvQ2hhbmdlRGV0ZWN0aW9uKCl9KSkpKSl9X2RvQ2hhbmdlRGV0ZWN0aW9uKCl7dGhpcy5faXNDaGFuZ2VEZXRlY3Rpb25QZW5kaW5nPSExLHRoaXMuX2NvbnRlbnRXcmFwcGVyLm5hdGl2ZUVsZW1lbnQuc3R5bGUudHJhbnNmb3JtPXRoaXMuX3JlbmRlcmVkQ29udGVudFRyYW5zZm9ybSx0aGlzLm5nWm9uZS5ydW4oKCgpPT50aGlzLl9jaGFuZ2VEZXRlY3RvclJlZi5tYXJrRm9yQ2hlY2soKSkpO2NvbnN0IHQ9dGhpcy5fcnVuQWZ0ZXJDaGFuZ2VEZXRlY3Rpb247dGhpcy5fcnVuQWZ0ZXJDaGFuZ2VEZXRlY3Rpb249W107Zm9yKGNvbnN0IG4gb2YgdCluKCl9X2NhbGN1bGF0ZVNwYWNlclNpemUoKXt0aGlzLl90b3RhbENvbnRlbnRIZWlnaHQ9Imhvcml6b250YWwiPT09dGhpcy5vcmllbnRhdGlvbj8iIjpgJHt0aGlzLl90b3RhbENvbnRlbnRTaXplfXB4YCx0aGlzLl90b3RhbENvbnRlbnRXaWR0aD0iaG9yaXpvbnRhbCI9PT10aGlzLm9yaWVudGF0aW9uP2Ake3RoaXMuX3RvdGFsQ29udGVudFNpemV9cHhgOiIifX0KLyoqCiAgICAgKiBAbGljZW5zZQogICAgICogQ29weXJpZ2h0IEdvb2dsZSBMTEMgQWxsIFJpZ2h0cyBSZXNlcnZlZC4KICAgICAqCiAgICAgKiBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhbiBNSVQtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQogICAgICogZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZSBhdCBodHRwczovL2FuZ3VsYXIuaW8vbGljZW5zZQogICAgICovCmZ1bmN0aW9uIHhBKHQsbixlKXtpZighZS5nZXRCb3VuZGluZ0NsaWVudFJlY3QpcmV0dXJuIDA7Y29uc3QgYT1lLmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpO3JldHVybiJob3Jpem9udGFsIj09PXQ/InN0YXJ0Ij09PW4/YS5sZWZ0OmEucmlnaHQ6InN0YXJ0Ij09PW4/YS50b3A6YS5ib3R0b219UEEuybVmYWM9ZnVuY3Rpb24gdChuKXtyZXR1cm4gbmV3KG58fFBBKShaZyh4dSksWmcoVm0pLFpnKEpfKSxaZyhiQSw4KSxaZyhVUyw4KSxaZyhfQSksWmcoTUEpKX0sUEEuybVjbXA9X28oe3R5cGU6UEEsc2VsZWN0b3JzOltbImNkay12aXJ0dWFsLXNjcm9sbC12aWV3cG9ydCJdXSx2aWV3UXVlcnk6ZnVuY3Rpb24gdChuLGUpe3ZhciBhOzEmbiYmamYocEEsITApLDImbiYmVmYoYT1aZigpKSYmKGUuX2NvbnRlbnRXcmFwcGVyPWEuZmlyc3QpfSxob3N0QXR0cnM6WzEsImNkay12aXJ0dWFsLXNjcm9sbC12aWV3cG9ydCJdLGhvc3RWYXJzOjQsaG9zdEJpbmRpbmdzOmZ1bmN0aW9uIHQobixlKXsyJm4mJkRwKCJjZGstdmlydHVhbC1zY3JvbGwtb3JpZW50YXRpb24taG9yaXpvbnRhbCIsImhvcml6b250YWwiPT09ZS5vcmllbnRhdGlvbikoImNkay12aXJ0dWFsLXNjcm9sbC1vcmllbnRhdGlvbi12ZXJ0aWNhbCIsImhvcml6b250YWwiIT09ZS5vcmllbnRhdGlvbil9LGlucHV0czp7b3JpZW50YXRpb246Im9yaWVudGF0aW9uIn0sb3V0cHV0czp7c2Nyb2xsZWRJbmRleENoYW5nZToic2Nyb2xsZWRJbmRleENoYW5nZSJ9LGZlYXR1cmVzOltNdShbe3Byb3ZpZGU6Q0EsdXNlRXhpc3Rpbmc6UEF9XSksaGddLG5nQ29udGVudFNlbGVjdG9yczpbIioiXSxkZWNsczo0LHZhcnM6NCxjb25zdHM6W1sxLCJjZGstdmlydHVhbC1zY3JvbGwtY29udGVudC13cmFwcGVyIl0sWyJjb250ZW50V3JhcHBlciIsIiJdLFsxLCJjZGstdmlydHVhbC1zY3JvbGwtc3BhY2VyIl1dLHRlbXBsYXRlOmZ1bmN0aW9uIHQobixlKXsxJm4mJihicCgpLEtnKDAsImRpdiIsMCwxKSxocCgyKSwkZygpLHRwKDMsImRpdiIsMikpLDImbiYmKHdzKDMpLFRwKCJ3aWR0aCIsZS5fdG90YWxDb250ZW50V2lkdGgpKCJoZWlnaHQiLGUuX3RvdGFsQ29udGVudEhlaWdodCkpfSxzdHlsZXM6WyJjZGstdmlydHVhbC1zY3JvbGwtdmlld3BvcnR7ZGlzcGxheTpibG9jaztwb3NpdGlvbjpyZWxhdGl2ZTtvdmVyZmxvdzphdXRvO2NvbnRhaW46c3RyaWN0O3RyYW5zZm9ybTp0cmFuc2xhdGVaKDApO3dpbGwtY2hhbmdlOnNjcm9sbC1wb3NpdGlvbjstd2Via2l0LW92ZXJmbG93LXNjcm9sbGluZzp0b3VjaH0uY2RrLXZpcnR1YWwtc2Nyb2xsLWNvbnRlbnQtd3JhcHBlcntwb3NpdGlvbjphYnNvbHV0ZTt0b3A6MDtsZWZ0OjA7Y29udGFpbjpjb250ZW50fVtkaXI9cnRsXSAuY2RrLXZpcnR1YWwtc2Nyb2xsLWNvbnRlbnQtd3JhcHBlcntyaWdodDowO2xlZnQ6YXV0b30uY2RrLXZpcnR1YWwtc2Nyb2xsLW9yaWVudGF0aW9uLWhvcml6b250YWwgLmNkay12aXJ0dWFsLXNjcm9sbC1jb250ZW50LXdyYXBwZXJ7bWluLWhlaWdodDoxMDAlfS5jZGstdmlydHVhbC1zY3JvbGwtb3JpZW50YXRpb24taG9yaXpvbnRhbCAuY2RrLXZpcnR1YWwtc2Nyb2xsLWNvbnRlbnQtd3JhcHBlcj5kbDpub3QoW2Nka1ZpcnR1YWxGb3JdKSwuY2RrLXZpcnR1YWwtc2Nyb2xsLW9yaWVudGF0aW9uLWhvcml6b250YWwgLmNkay12aXJ0dWFsLXNjcm9sbC1jb250ZW50LXdyYXBwZXI+b2w6bm90KFtjZGtWaXJ0dWFsRm9yXSksLmNkay12aXJ0dWFsLXNjcm9sbC1vcmllbnRhdGlvbi1ob3Jpem9udGFsIC5jZGstdmlydHVhbC1zY3JvbGwtY29udGVudC13cmFwcGVyPnRhYmxlOm5vdChbY2RrVmlydHVhbEZvcl0pLC5jZGstdmlydHVhbC1zY3JvbGwtb3JpZW50YXRpb24taG9yaXpvbnRhbCAuY2RrLXZpcnR1YWwtc2Nyb2xsLWNvbnRlbnQtd3JhcHBlcj51bDpub3QoW2Nka1ZpcnR1YWxGb3JdKXtwYWRkaW5nLWxlZnQ6MDtwYWRkaW5nLXJpZ2h0OjA7bWFyZ2luLWxlZnQ6MDttYXJnaW4tcmlnaHQ6MDtib3JkZXItbGVmdC13aWR0aDowO2JvcmRlci1yaWdodC13aWR0aDowO291dGxpbmU6bm9uZX0uY2RrLXZpcnR1YWwtc2Nyb2xsLW9yaWVudGF0aW9uLXZlcnRpY2FsIC5jZGstdmlydHVhbC1zY3JvbGwtY29udGVudC13cmFwcGVye21pbi13aWR0aDoxMDAlfS5jZGstdmlydHVhbC1zY3JvbGwtb3JpZW50YXRpb24tdmVydGljYWwgLmNkay12aXJ0dWFsLXNjcm9sbC1jb250ZW50LXdyYXBwZXI+ZGw6bm90KFtjZGtWaXJ0dWFsRm9yXSksLmNkay12aXJ0dWFsLXNjcm9sbC1vcmllbnRhdGlvbi12ZXJ0aWNhbCAuY2RrLXZpcnR1YWwtc2Nyb2xsLWNvbnRlbnQtd3JhcHBlcj5vbDpub3QoW2Nka1ZpcnR1YWxGb3JdKSwuY2RrLXZpcnR1YWwtc2Nyb2xsLW9yaWVudGF0aW9uLXZlcnRpY2FsIC5jZGstdmlydHVhbC1zY3JvbGwtY29udGVudC13cmFwcGVyPnRhYmxlOm5vdChbY2RrVmlydHVhbEZvcl0pLC5jZGstdmlydHVhbC1zY3JvbGwtb3JpZW50YXRpb24tdmVydGljYWwgLmNkay12aXJ0dWFsLXNjcm9sbC1jb250ZW50LXdyYXBwZXI+dWw6bm90KFtjZGtWaXJ0dWFsRm9yXSl7cGFkZGluZy10b3A6MDtwYWRkaW5nLWJvdHRvbTowO21hcmdpbi10b3A6MDttYXJnaW4tYm90dG9tOjA7Ym9yZGVyLXRvcC13aWR0aDowO2JvcmRlci1ib3R0b20td2lkdGg6MDtvdXRsaW5lOm5vbmV9LmNkay12aXJ0dWFsLXNjcm9sbC1zcGFjZXJ7cG9zaXRpb246YWJzb2x1dGU7dG9wOjA7bGVmdDowO2hlaWdodDoxcHg7d2lkdGg6MXB4O3RyYW5zZm9ybS1vcmlnaW46MCAwfVtkaXI9cnRsXSAuY2RrLXZpcnR1YWwtc2Nyb2xsLXNwYWNlcntyaWdodDowO2xlZnQ6YXV0bzt0cmFuc2Zvcm0tb3JpZ2luOjEwMCUgMH1cbiJdLGVuY2Fwc3VsYXRpb246MixjaGFuZ2VEZXRlY3Rpb246MH0pLFBBLmN0b3JQYXJhbWV0ZXJzPSgpPT5be3R5cGU6eHV9LHt0eXBlOlZtfSx7dHlwZTpKX30se3R5cGU6dm9pZCAwLGRlY29yYXRvcnM6W3t0eXBlOk5lfSx7dHlwZTpJZSxhcmdzOltiQV19XX0se3R5cGU6VVMsZGVjb3JhdG9yczpbe3R5cGU6TmV9XX0se3R5cGU6X0F9LHt0eXBlOk1BfV0sUEEucHJvcERlY29yYXRvcnM9e29yaWVudGF0aW9uOlt7dHlwZTpmX31dLHNjcm9sbGVkSW5kZXhDaGFuZ2U6W3t0eXBlOmhffV0sX2NvbnRlbnRXcmFwcGVyOlt7dHlwZTpYZCxhcmdzOlsiY29udGVudFdyYXBwZXIiLHtzdGF0aWM6ITB9XX1dfTtjbGFzcyB5QXtjb25zdHJ1Y3Rvcih0LG4sZSxhLG8scil7dGhpcy5fdmlld0NvbnRhaW5lclJlZj10LHRoaXMuX3RlbXBsYXRlPW4sdGhpcy5fZGlmZmVycz1lLHRoaXMuX3ZpZXdSZXBlYXRlcj1hLHRoaXMuX3ZpZXdwb3J0PW8sdGhpcy52aWV3Q2hhbmdlPW5ldyB4LHRoaXMuX2RhdGFTb3VyY2VDaGFuZ2VzPW5ldyB4LHRoaXMuZGF0YVN0cmVhbT10aGlzLl9kYXRhU291cmNlQ2hhbmdlcy5waXBlKGNlKG51bGwpLChmdW5jdGlvbiBpKCl7cmV0dXJuIHQ9PnQubGlmdChuZXcgUW4pfSkoKSxzZSgoKFt0LG5dKT0+dGhpcy5fY2hhbmdlRGF0YVNvdXJjZSh0LG4pKSksYWUoMSkpLHRoaXMuX2RpZmZlcj1udWxsLHRoaXMuX25lZWRzVXBkYXRlPSExLHRoaXMuX2Rlc3Ryb3llZD1uZXcgeCx0aGlzLmRhdGFTdHJlYW0uc3Vic2NyaWJlKCh0PT57dGhpcy5fZGF0YT10LHRoaXMuX29uUmVuZGVyZWREYXRhQ2hhbmdlKCl9KSksdGhpcy5fdmlld3BvcnQucmVuZGVyZWRSYW5nZVN0cmVhbS5waXBlKGRlKHRoaXMuX2Rlc3Ryb3llZCkpLnN1YnNjcmliZSgodD0+e3RoaXMuX3JlbmRlcmVkUmFuZ2U9dCxyLnJ1bigoKCk9PnRoaXMudmlld0NoYW5nZS5uZXh0KHRoaXMuX3JlbmRlcmVkUmFuZ2UpKSksdGhpcy5fb25SZW5kZXJlZERhdGFDaGFuZ2UoKX0pKSx0aGlzLl92aWV3cG9ydC5hdHRhY2godGhpcyl9Z2V0IGNka1ZpcnR1YWxGb3JPZigpe3JldHVybiB0aGlzLl9jZGtWaXJ0dWFsRm9yT2Z9c2V0IGNka1ZpcnR1YWxGb3JPZih0KXt0aGlzLl9jZGtWaXJ0dWFsRm9yT2Y9dCxpQSh0KT90aGlzLl9kYXRhU291cmNlQ2hhbmdlcy5uZXh0KHQpOnRoaXMuX2RhdGFTb3VyY2VDaGFuZ2VzLm5leHQobmV3IGNBKHB0KHQpP3Q6QXJyYXkuZnJvbSh0fHxbXSkpKX1nZXQgY2RrVmlydHVhbEZvclRyYWNrQnkoKXtyZXR1cm4gdGhpcy5fY2RrVmlydHVhbEZvclRyYWNrQnl9c2V0IGNka1ZpcnR1YWxGb3JUcmFja0J5KHQpe3RoaXMuX25lZWRzVXBkYXRlPSEwLHRoaXMuX2Nka1ZpcnR1YWxGb3JUcmFja0J5PXQ/KG4sZSk9PnQobisodGhpcy5fcmVuZGVyZWRSYW5nZT90aGlzLl9yZW5kZXJlZFJhbmdlLnN0YXJ0OjApLGUpOnZvaWQgMH1zZXQgY2RrVmlydHVhbEZvclRlbXBsYXRlKHQpe3QmJih0aGlzLl9uZWVkc1VwZGF0ZT0hMCx0aGlzLl90ZW1wbGF0ZT10KX1nZXQgY2RrVmlydHVhbEZvclRlbXBsYXRlQ2FjaGVTaXplKCl7cmV0dXJuIHRoaXMuX3ZpZXdSZXBlYXRlci52aWV3Q2FjaGVTaXplfXNldCBjZGtWaXJ0dWFsRm9yVGVtcGxhdGVDYWNoZVNpemUodCl7dGhpcy5fdmlld1JlcGVhdGVyLnZpZXdDYWNoZVNpemU9WXcodCl9bWVhc3VyZVJhbmdlU2l6ZSh0LG4pe2lmKHQuc3RhcnQ+PXQuZW5kKXJldHVybiAwO2lmKCh0LnN0YXJ0PHRoaXMuX3JlbmRlcmVkUmFuZ2Uuc3RhcnR8fHQuZW5kPnRoaXMuX3JlbmRlcmVkUmFuZ2UuZW5kKSYmKCJ1bmRlZmluZWQiPT10eXBlb2YgbmdEZXZNb2RlfHxuZ0Rldk1vZGUpKXRocm93IEVycm9yKCJFcnJvcjogYXR0ZW1wdGVkIHRvIG1lYXN1cmUgYW4gaXRlbSB0aGF0IGlzbid0IHJlbmRlcmVkLiIpO2NvbnN0IGU9dC5zdGFydC10aGlzLl9yZW5kZXJlZFJhbmdlLnN0YXJ0LGE9dC5lbmQtdC5zdGFydDtsZXQgbyxyO2ZvcihsZXQgdD0wO3Q8YTt0Kyspe2NvbnN0IG49dGhpcy5fdmlld0NvbnRhaW5lclJlZi5nZXQodCtlKTtpZihuJiZuLnJvb3ROb2Rlcy5sZW5ndGgpe289cj1uLnJvb3ROb2Rlc1swXTticmVha319Zm9yKGxldCB0PWEtMTt0Pi0xO3QtLSl7Y29uc3Qgbj10aGlzLl92aWV3Q29udGFpbmVyUmVmLmdldCh0K2UpO2lmKG4mJm4ucm9vdE5vZGVzLmxlbmd0aCl7cj1uLnJvb3ROb2Rlc1tuLnJvb3ROb2Rlcy5sZW5ndGgtMV07YnJlYWt9fXJldHVybiBvJiZyP3hBKG4sImVuZCIscikteEEobiwic3RhcnQiLG8pOjB9bmdEb0NoZWNrKCl7aWYodGhpcy5fZGlmZmVyJiZ0aGlzLl9uZWVkc1VwZGF0ZSl7Y29uc3QgdD10aGlzLl9kaWZmZXIuZGlmZih0aGlzLl9yZW5kZXJlZEl0ZW1zKTt0P3RoaXMuX2FwcGx5Q2hhbmdlcyh0KTp0aGlzLl91cGRhdGVDb250ZXh0KCksdGhpcy5fbmVlZHNVcGRhdGU9ITF9fW5nT25EZXN0cm95KCl7dGhpcy5fdmlld3BvcnQuZGV0YWNoKCksdGhpcy5fZGF0YVNvdXJjZUNoYW5nZXMubmV4dCh2b2lkIDApLHRoaXMuX2RhdGFTb3VyY2VDaGFuZ2VzLmNvbXBsZXRlKCksdGhpcy52aWV3Q2hhbmdlLmNvbXBsZXRlKCksdGhpcy5fZGVzdHJveWVkLm5leHQoKSx0aGlzLl9kZXN0cm95ZWQuY29tcGxldGUoKSx0aGlzLl92aWV3UmVwZWF0ZXIuZGV0YWNoKCl9X29uUmVuZGVyZWREYXRhQ2hhbmdlKCl7dGhpcy5fcmVuZGVyZWRSYW5nZSYmKHRoaXMuX3JlbmRlcmVkSXRlbXM9dGhpcy5fZGF0YS5zbGljZSh0aGlzLl9yZW5kZXJlZFJhbmdlLnN0YXJ0LHRoaXMuX3JlbmRlcmVkUmFuZ2UuZW5kKSx0aGlzLl9kaWZmZXJ8fCh0aGlzLl9kaWZmZXI9dGhpcy5fZGlmZmVycy5maW5kKHRoaXMuX3JlbmRlcmVkSXRlbXMpLmNyZWF0ZSh0aGlzLmNka1ZpcnR1YWxGb3JUcmFja0J5KSksdGhpcy5fbmVlZHNVcGRhdGU9ITApfV9jaGFuZ2VEYXRhU291cmNlKHQsbil7cmV0dXJuIHQmJnQuZGlzY29ubmVjdCh0aGlzKSx0aGlzLl9uZWVkc1VwZGF0ZT0hMCxuP24uY29ubmVjdCh0aGlzKTpaKCl9X3VwZGF0ZUNvbnRleHQoKXtjb25zdCB0PXRoaXMuX2RhdGEubGVuZ3RoO2xldCBuPXRoaXMuX3ZpZXdDb250YWluZXJSZWYubGVuZ3RoO2Zvcig7bi0tOyl7bGV0IGU9dGhpcy5fdmlld0NvbnRhaW5lclJlZi5nZXQobik7ZS5jb250ZXh0LmluZGV4PXRoaXMuX3JlbmRlcmVkUmFuZ2Uuc3RhcnQrbixlLmNvbnRleHQuY291bnQ9dCx0aGlzLl91cGRhdGVDb21wdXRlZENvbnRleHRQcm9wZXJ0aWVzKGUuY29udGV4dCksZS5kZXRlY3RDaGFuZ2VzKCl9fV9hcHBseUNoYW5nZXModCl7dGhpcy5fdmlld1JlcGVhdGVyLmFwcGx5Q2hhbmdlcyh0LHRoaXMuX3ZpZXdDb250YWluZXJSZWYsKCh0LG4sZSk9PnRoaXMuX2dldEVtYmVkZGVkVmlld0FyZ3ModCxlKSksKHQ9PnQuaXRlbSkpLHQuZm9yRWFjaElkZW50aXR5Q2hhbmdlKCh0PT57dGhpcy5fdmlld0NvbnRhaW5lclJlZi5nZXQodC5jdXJyZW50SW5kZXgpLmNvbnRleHQuJGltcGxpY2l0PXQuaXRlbX0pKTtjb25zdCBuPXRoaXMuX2RhdGEubGVuZ3RoO2xldCBlPXRoaXMuX3ZpZXdDb250YWluZXJSZWYubGVuZ3RoO2Zvcig7ZS0tOyl7Y29uc3QgdD10aGlzLl92aWV3Q29udGFpbmVyUmVmLmdldChlKTt0LmNvbnRleHQuaW5kZXg9dGhpcy5fcmVuZGVyZWRSYW5nZS5zdGFydCtlLHQuY29udGV4dC5jb3VudD1uLHRoaXMuX3VwZGF0ZUNvbXB1dGVkQ29udGV4dFByb3BlcnRpZXModC5jb250ZXh0KX19X3VwZGF0ZUNvbXB1dGVkQ29udGV4dFByb3BlcnRpZXModCl7dC5maXJzdD0wPT09dC5pbmRleCx0Lmxhc3Q9dC5pbmRleD09PXQuY291bnQtMSx0LmV2ZW49dC5pbmRleCUyPT0wLHQub2RkPSF0LmV2ZW59X2dldEVtYmVkZGVkVmlld0FyZ3ModCxuKXtyZXR1cm57dGVtcGxhdGVSZWY6dGhpcy5fdGVtcGxhdGUsY29udGV4dDp7JGltcGxpY2l0OnQuaXRlbSxjZGtWaXJ0dWFsRm9yT2Y6dGhpcy5fY2RrVmlydHVhbEZvck9mLGluZGV4Oi0xLGNvdW50Oi0xLGZpcnN0OiExLGxhc3Q6ITEsb2RkOiExLGV2ZW46ITF9LGluZGV4Om59fX15QS7JtWZhYz1mdW5jdGlvbiB0KG4pe3JldHVybiBuZXcobnx8eUEpKFpnKCR1KSxaZyhKdSksWmcoV3UpLFpnKGdBKSxaZyhQQSw0KSxaZyhKXykpfSx5QS7JtWRpcj12byh7dHlwZTp5QSxzZWxlY3RvcnM6W1siIiwiY2RrVmlydHVhbEZvciIsIiIsImNka1ZpcnR1YWxGb3JPZiIsIiJdXSxpbnB1dHM6e2Nka1ZpcnR1YWxGb3JPZjoiY2RrVmlydHVhbEZvck9mIixjZGtWaXJ0dWFsRm9yVHJhY2tCeToiY2RrVmlydHVhbEZvclRyYWNrQnkiLGNka1ZpcnR1YWxGb3JUZW1wbGF0ZToiY2RrVmlydHVhbEZvclRlbXBsYXRlIixjZGtWaXJ0dWFsRm9yVGVtcGxhdGVDYWNoZVNpemU6ImNka1ZpcnR1YWxGb3JUZW1wbGF0ZUNhY2hlU2l6ZSJ9LGZlYXR1cmVzOltNdShbe3Byb3ZpZGU6Z0EsdXNlQ2xhc3M6bEF9XSldfSkseUEuY3RvclBhcmFtZXRlcnM9KCk9Plt7dHlwZTokdX0se3R5cGU6SnV9LHt0eXBlOld1fSx7dHlwZTpsQSxkZWNvcmF0b3JzOlt7dHlwZTpJZSxhcmdzOltnQV19XX0se3R5cGU6UEEsZGVjb3JhdG9yczpbe3R5cGU6TGV9XX0se3R5cGU6Sl99XSx5QS5wcm9wRGVjb3JhdG9ycz17Y2RrVmlydHVhbEZvck9mOlt7dHlwZTpmX31dLGNka1ZpcnR1YWxGb3JUcmFja0J5Olt7dHlwZTpmX31dLGNka1ZpcnR1YWxGb3JUZW1wbGF0ZTpbe3R5cGU6Zl99XSxjZGtWaXJ0dWFsRm9yVGVtcGxhdGVDYWNoZVNpemU6W3t0eXBlOmZffV19OwovKioKICAgICAqIEBsaWNlbnNlCiAgICAgKiBDb3B5cmlnaHQgR29vZ2xlIExMQyBBbGwgUmlnaHRzIFJlc2VydmVkLgogICAgICoKICAgICAqIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGFuIE1JVC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCiAgICAgKiBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlIGF0IGh0dHBzOi8vYW5ndWxhci5pby9saWNlbnNlCiAgICAgKi8KY2xhc3Mga0F7fWtBLsm1bW9kPXhvKHt0eXBlOmtBfSksa0EuybVpbmo9R2Uoe2ZhY3Rvcnk6ZnVuY3Rpb24gdChuKXtyZXR1cm4gbmV3KG58fGtBKX19KSwoInVuZGVmaW5lZCI9PXR5cGVvZiBuZ0ppdE1vZGV8fG5nSml0TW9kZSkmJnlvKGtBLHtkZWNsYXJhdGlvbnM6W0NBXSxleHBvcnRzOltDQV19KTtjbGFzcyB2QXt9ZnVuY3Rpb24gd0EoKXt0aHJvdyBFcnJvcigiSG9zdCBhbHJlYWR5IGhhcyBhIHBvcnRhbCBhdHRhY2hlZCIpfXZBLsm1bW9kPXhvKHt0eXBlOnZBfSksdkEuybVpbmo9R2Uoe2ZhY3Rvcnk6ZnVuY3Rpb24gdChuKXtyZXR1cm4gbmV3KG58fHZBKX0saW1wb3J0czpbW0dTLEV3LGtBXSxHUyxrQV19KSwoInVuZGVmaW5lZCI9PXR5cGVvZiBuZ0ppdE1vZGV8fG5nSml0TW9kZSkmJnlvKHZBLHtkZWNsYXJhdGlvbnM6ZnVuY3Rpb24oKXtyZXR1cm5bZkEseUEsUEFdfSxpbXBvcnRzOmZ1bmN0aW9uKCl7cmV0dXJuW0dTLEV3LGtBXX0sZXhwb3J0czpmdW5jdGlvbigpe3JldHVybltHUyxrQSxmQSx5QSxQQV19fSk7Ci8qKgogICAgICogQGxpY2Vuc2UKICAgICAqIENvcHlyaWdodCBHb29nbGUgTExDIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCiAgICAgKgogICAgICogVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYW4gTUlULXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKICAgICAqIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUgYXQgaHR0cHM6Ly9hbmd1bGFyLmlvL2xpY2Vuc2UKICAgICAqLwpjbGFzcyBTQXthdHRhY2godCl7cmV0dXJuKCJ1bmRlZmluZWQiPT10eXBlb2YgbmdEZXZNb2RlfHxuZ0Rldk1vZGUpJiYobnVsbD09dCYmKGZ1bmN0aW9uIG4oKXt0aHJvdyBFcnJvcigiQXR0ZW1wdGluZyB0byBhdHRhY2ggYSBwb3J0YWwgdG8gYSBudWxsIFBvcnRhbE91dGxldCIpfSkoKSx0Lmhhc0F0dGFjaGVkKCkmJndBKCkpLHRoaXMuX2F0dGFjaGVkSG9zdD10LHQuYXR0YWNoKHRoaXMpfWRldGFjaCgpe2xldCB0PXRoaXMuX2F0dGFjaGVkSG9zdDtudWxsIT10Pyh0aGlzLl9hdHRhY2hlZEhvc3Q9bnVsbCx0LmRldGFjaCgpKTooInVuZGVmaW5lZCI9PXR5cGVvZiBuZ0Rldk1vZGV8fG5nRGV2TW9kZSkmJihmdW5jdGlvbiBuKCl7dGhyb3cgRXJyb3IoIkF0dGVtcHRpbmcgdG8gZGV0YWNoIGEgcG9ydGFsIHRoYXQgaXMgbm90IGF0dGFjaGVkIHRvIGEgaG9zdCIpfSkoKX1nZXQgaXNBdHRhY2hlZCgpe3JldHVybiBudWxsIT10aGlzLl9hdHRhY2hlZEhvc3R9c2V0QXR0YWNoZWRIb3N0KHQpe3RoaXMuX2F0dGFjaGVkSG9zdD10fX1jbGFzcyBFQSBleHRlbmRzIFNBe2NvbnN0cnVjdG9yKHQsbixlLGEpe3N1cGVyKCksdGhpcy5jb21wb25lbnQ9dCx0aGlzLnZpZXdDb250YWluZXJSZWY9bix0aGlzLmluamVjdG9yPWUsdGhpcy5jb21wb25lbnRGYWN0b3J5UmVzb2x2ZXI9YX19Y2xhc3MgQUEgZXh0ZW5kcyBTQXtjb25zdHJ1Y3Rvcih0LG4sZSl7c3VwZXIoKSx0aGlzLnRlbXBsYXRlUmVmPXQsdGhpcy52aWV3Q29udGFpbmVyUmVmPW4sdGhpcy5jb250ZXh0PWV9Z2V0IG9yaWdpbigpe3JldHVybiB0aGlzLnRlbXBsYXRlUmVmLmVsZW1lbnRSZWZ9YXR0YWNoKHQsbj10aGlzLmNvbnRleHQpe3JldHVybiB0aGlzLmNvbnRleHQ9bixzdXBlci5hdHRhY2godCl9ZGV0YWNoKCl7cmV0dXJuIHRoaXMuY29udGV4dD12b2lkIDAsc3VwZXIuZGV0YWNoKCl9fWNsYXNzIHpBIGV4dGVuZHMgU0F7Y29uc3RydWN0b3IodCl7c3VwZXIoKSx0aGlzLmVsZW1lbnQ9dCBpbnN0YW5jZW9mIHh1P3QubmF0aXZlRWxlbWVudDp0fX1jbGFzcyBSQXtjb25zdHJ1Y3Rvcigpe3RoaXMuX2lzRGlzcG9zZWQ9ITEsdGhpcy5hdHRhY2hEb21Qb3J0YWw9bnVsbH1oYXNBdHRhY2hlZCgpe3JldHVybiEhdGhpcy5fYXR0YWNoZWRQb3J0YWx9YXR0YWNoKHQpe3JldHVybigidW5kZWZpbmVkIj09dHlwZW9mIG5nRGV2TW9kZXx8bmdEZXZNb2RlKSYmKHR8fChmdW5jdGlvbiBuKCl7dGhyb3cgRXJyb3IoIk11c3QgcHJvdmlkZSBhIHBvcnRhbCB0byBhdHRhY2giKX0pKCksdGhpcy5oYXNBdHRhY2hlZCgpJiZ3QSgpLHRoaXMuX2lzRGlzcG9zZWQmJihmdW5jdGlvbiBlKCl7dGhyb3cgRXJyb3IoIlRoaXMgUG9ydGFsT3V0bGV0IGhhcyBhbHJlYWR5IGJlZW4gZGlzcG9zZWQiKX0pKCkpLHQgaW5zdGFuY2VvZiBFQT8odGhpcy5fYXR0YWNoZWRQb3J0YWw9dCx0aGlzLmF0dGFjaENvbXBvbmVudFBvcnRhbCh0KSk6dCBpbnN0YW5jZW9mIEFBPyh0aGlzLl9hdHRhY2hlZFBvcnRhbD10LHRoaXMuYXR0YWNoVGVtcGxhdGVQb3J0YWwodCkpOnRoaXMuYXR0YWNoRG9tUG9ydGFsJiZ0IGluc3RhbmNlb2YgekE/KHRoaXMuX2F0dGFjaGVkUG9ydGFsPXQsdGhpcy5hdHRhY2hEb21Qb3J0YWwodCkpOnZvaWQoKCJ1bmRlZmluZWQiPT10eXBlb2YgbmdEZXZNb2RlfHxuZ0Rldk1vZGUpJiYoZnVuY3Rpb24gYSgpe3Rocm93IEVycm9yKCJBdHRlbXB0aW5nIHRvIGF0dGFjaCBhbiB1bmtub3duIFBvcnRhbCB0eXBlLiBCYXNlUG9ydGFsT3V0bGV0IGFjY2VwdHMgZWl0aGVyIGEgQ29tcG9uZW50UG9ydGFsIG9yIGEgVGVtcGxhdGVQb3J0YWwuIil9KSgpKX1kZXRhY2goKXt0aGlzLl9hdHRhY2hlZFBvcnRhbCYmKHRoaXMuX2F0dGFjaGVkUG9ydGFsLnNldEF0dGFjaGVkSG9zdChudWxsKSx0aGlzLl9hdHRhY2hlZFBvcnRhbD1udWxsKSx0aGlzLl9pbnZva2VEaXNwb3NlRm4oKX1kaXNwb3NlKCl7dGhpcy5oYXNBdHRhY2hlZCgpJiZ0aGlzLmRldGFjaCgpLHRoaXMuX2ludm9rZURpc3Bvc2VGbigpLHRoaXMuX2lzRGlzcG9zZWQ9ITB9c2V0RGlzcG9zZUZuKHQpe3RoaXMuX2Rpc3Bvc2VGbj10fV9pbnZva2VEaXNwb3NlRm4oKXt0aGlzLl9kaXNwb3NlRm4mJih0aGlzLl9kaXNwb3NlRm4oKSx0aGlzLl9kaXNwb3NlRm49bnVsbCl9fQovKioKICAgICAqIEBsaWNlbnNlCiAgICAgKiBDb3B5cmlnaHQgR29vZ2xlIExMQyBBbGwgUmlnaHRzIFJlc2VydmVkLgogICAgICoKICAgICAqIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGFuIE1JVC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCiAgICAgKiBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlIGF0IGh0dHBzOi8vYW5ndWxhci5pby9saWNlbnNlCiAgICAgKi9jbGFzcyBUQSBleHRlbmRzIFJBe2NvbnN0cnVjdG9yKHQsbixlLGEsbyl7c3VwZXIoKSx0aGlzLm91dGxldEVsZW1lbnQ9dCx0aGlzLl9jb21wb25lbnRGYWN0b3J5UmVzb2x2ZXI9bix0aGlzLl9hcHBSZWY9ZSx0aGlzLl9kZWZhdWx0SW5qZWN0b3I9YSx0aGlzLmF0dGFjaERvbVBvcnRhbD10PT57aWYoIXRoaXMuX2RvY3VtZW50JiYoInVuZGVmaW5lZCI9PXR5cGVvZiBuZ0Rldk1vZGV8fG5nRGV2TW9kZSkpdGhyb3cgRXJyb3IoIkNhbm5vdCBhdHRhY2ggRE9NIHBvcnRhbCB3aXRob3V0IF9kb2N1bWVudCBjb25zdHJ1Y3RvciBwYXJhbWV0ZXIiKTtjb25zdCBuPXQuZWxlbWVudDtpZighbi5wYXJlbnROb2RlJiYoInVuZGVmaW5lZCI9PXR5cGVvZiBuZ0Rldk1vZGV8fG5nRGV2TW9kZSkpdGhyb3cgRXJyb3IoIkRPTSBwb3J0YWwgY29udGVudCBtdXN0IGJlIGF0dGFjaGVkIHRvIGEgcGFyZW50IG5vZGUuIik7Y29uc3QgZT10aGlzLl9kb2N1bWVudC5jcmVhdGVDb21tZW50KCJkb20tcG9ydGFsIik7bi5wYXJlbnROb2RlLmluc2VydEJlZm9yZShlLG4pLHRoaXMub3V0bGV0RWxlbWVudC5hcHBlbmRDaGlsZChuKSxzdXBlci5zZXREaXNwb3NlRm4oKCgpPT57ZS5wYXJlbnROb2RlJiZlLnBhcmVudE5vZGUucmVwbGFjZUNoaWxkKG4sZSl9KSl9LHRoaXMuX2RvY3VtZW50PW99YXR0YWNoQ29tcG9uZW50UG9ydGFsKHQpe2NvbnN0IG49KHQuY29tcG9uZW50RmFjdG9yeVJlc29sdmVyfHx0aGlzLl9jb21wb25lbnRGYWN0b3J5UmVzb2x2ZXIpLnJlc29sdmVDb21wb25lbnRGYWN0b3J5KHQuY29tcG9uZW50KTtsZXQgZTtyZXR1cm4gdC52aWV3Q29udGFpbmVyUmVmPyhlPXQudmlld0NvbnRhaW5lclJlZi5jcmVhdGVDb21wb25lbnQobix0LnZpZXdDb250YWluZXJSZWYubGVuZ3RoLHQuaW5qZWN0b3J8fHQudmlld0NvbnRhaW5lclJlZi5pbmplY3RvciksdGhpcy5zZXREaXNwb3NlRm4oKCgpPT5lLmRlc3Ryb3koKSkpKTooZT1uLmNyZWF0ZSh0LmluamVjdG9yfHx0aGlzLl9kZWZhdWx0SW5qZWN0b3IpLHRoaXMuX2FwcFJlZi5hdHRhY2hWaWV3KGUuaG9zdFZpZXcpLHRoaXMuc2V0RGlzcG9zZUZuKCgoKT0+e3RoaXMuX2FwcFJlZi5kZXRhY2hWaWV3KGUuaG9zdFZpZXcpLGUuZGVzdHJveSgpfSkpKSx0aGlzLm91dGxldEVsZW1lbnQuYXBwZW5kQ2hpbGQodGhpcy5fZ2V0Q29tcG9uZW50Um9vdE5vZGUoZSkpLGV9YXR0YWNoVGVtcGxhdGVQb3J0YWwodCl7bGV0IG49dC52aWV3Q29udGFpbmVyUmVmLGU9bi5jcmVhdGVFbWJlZGRlZFZpZXcodC50ZW1wbGF0ZVJlZix0LmNvbnRleHQpO3JldHVybiBlLnJvb3ROb2Rlcy5mb3JFYWNoKCh0PT50aGlzLm91dGxldEVsZW1lbnQuYXBwZW5kQ2hpbGQodCkpKSxlLmRldGVjdENoYW5nZXMoKSx0aGlzLnNldERpc3Bvc2VGbigoKCk9PntsZXQgdD1uLmluZGV4T2YoZSk7LTEhPT10JiZuLnJlbW92ZSh0KX0pKSxlfWRpc3Bvc2UoKXtzdXBlci5kaXNwb3NlKCksbnVsbCE9dGhpcy5vdXRsZXRFbGVtZW50LnBhcmVudE5vZGUmJnRoaXMub3V0bGV0RWxlbWVudC5wYXJlbnROb2RlLnJlbW92ZUNoaWxkKHRoaXMub3V0bGV0RWxlbWVudCl9X2dldENvbXBvbmVudFJvb3ROb2RlKHQpe3JldHVybiB0Lmhvc3RWaWV3LnJvb3ROb2Rlc1swXX19Ci8qKgogICAgICogQGxpY2Vuc2UKICAgICAqIENvcHlyaWdodCBHb29nbGUgTExDIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCiAgICAgKgogICAgICogVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYW4gTUlULXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKICAgICAqIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUgYXQgaHR0cHM6Ly9hbmd1bGFyLmlvL2xpY2Vuc2UKICAgICAqL2NsYXNzIERBIGV4dGVuZHMgQUF7Y29uc3RydWN0b3IodCxuKXtzdXBlcih0LG4pfX1EQS7JtWZhYz1mdW5jdGlvbiB0KG4pe3JldHVybiBuZXcobnx8REEpKFpnKEp1KSxaZygkdSkpfSxEQS7JtWRpcj12byh7dHlwZTpEQSxzZWxlY3RvcnM6W1siIiwiY2RrUG9ydGFsIiwiIl1dLGV4cG9ydEFzOlsiY2RrUG9ydGFsIl0sZmVhdHVyZXM6W2hnXX0pLERBLmN0b3JQYXJhbWV0ZXJzPSgpPT5be3R5cGU6SnV9LHt0eXBlOiR1fV07Y2xhc3MgSUEgZXh0ZW5kcyBEQXt9SUEuybVmYWM9ZnVuY3Rpb24gdChuKXtyZXR1cm4gTkEobnx8SUEpfSxJQS7JtWRpcj12byh7dHlwZTpJQSxzZWxlY3RvcnM6W1siIiwiY2RrLXBvcnRhbCIsIiJdLFsiIiwicG9ydGFsIiwiIl1dLGV4cG9ydEFzOlsiY2RrUG9ydGFsIl0sZmVhdHVyZXM6W011KFt7cHJvdmlkZTpEQSx1c2VFeGlzdGluZzpJQX1dKSxoZ119KTtjb25zdCBOQT10YyhJQSk7Y2xhc3MgRkEgZXh0ZW5kcyBSQXtjb25zdHJ1Y3Rvcih0LG4sZSl7c3VwZXIoKSx0aGlzLl9jb21wb25lbnRGYWN0b3J5UmVzb2x2ZXI9dCx0aGlzLl92aWV3Q29udGFpbmVyUmVmPW4sdGhpcy5faXNJbml0aWFsaXplZD0hMSx0aGlzLmF0dGFjaGVkPW5ldyBFZix0aGlzLmF0dGFjaERvbVBvcnRhbD10PT57aWYoIXRoaXMuX2RvY3VtZW50JiYoInVuZGVmaW5lZCI9PXR5cGVvZiBuZ0Rldk1vZGV8fG5nRGV2TW9kZSkpdGhyb3cgRXJyb3IoIkNhbm5vdCBhdHRhY2ggRE9NIHBvcnRhbCB3aXRob3V0IF9kb2N1bWVudCBjb25zdHJ1Y3RvciBwYXJhbWV0ZXIiKTtjb25zdCBuPXQuZWxlbWVudDtpZighbi5wYXJlbnROb2RlJiYoInVuZGVmaW5lZCI9PXR5cGVvZiBuZ0Rldk1vZGV8fG5nRGV2TW9kZSkpdGhyb3cgRXJyb3IoIkRPTSBwb3J0YWwgY29udGVudCBtdXN0IGJlIGF0dGFjaGVkIHRvIGEgcGFyZW50IG5vZGUuIik7Y29uc3QgZT10aGlzLl9kb2N1bWVudC5jcmVhdGVDb21tZW50KCJkb20tcG9ydGFsIik7dC5zZXRBdHRhY2hlZEhvc3QodGhpcyksbi5wYXJlbnROb2RlLmluc2VydEJlZm9yZShlLG4pLHRoaXMuX2dldFJvb3ROb2RlKCkuYXBwZW5kQ2hpbGQobiksc3VwZXIuc2V0RGlzcG9zZUZuKCgoKT0+e2UucGFyZW50Tm9kZSYmZS5wYXJlbnROb2RlLnJlcGxhY2VDaGlsZChuLGUpfSkpfSx0aGlzLl9kb2N1bWVudD1lfWdldCBwb3J0YWwoKXtyZXR1cm4gdGhpcy5fYXR0YWNoZWRQb3J0YWx9c2V0IHBvcnRhbCh0KXsoIXRoaXMuaGFzQXR0YWNoZWQoKXx8dHx8dGhpcy5faXNJbml0aWFsaXplZCkmJih0aGlzLmhhc0F0dGFjaGVkKCkmJnN1cGVyLmRldGFjaCgpLHQmJnN1cGVyLmF0dGFjaCh0KSx0aGlzLl9hdHRhY2hlZFBvcnRhbD10KX1nZXQgYXR0YWNoZWRSZWYoKXtyZXR1cm4gdGhpcy5fYXR0YWNoZWRSZWZ9bmdPbkluaXQoKXt0aGlzLl9pc0luaXRpYWxpemVkPSEwfW5nT25EZXN0cm95KCl7c3VwZXIuZGlzcG9zZSgpLHRoaXMuX2F0dGFjaGVkUG9ydGFsPW51bGwsdGhpcy5fYXR0YWNoZWRSZWY9bnVsbH1hdHRhY2hDb21wb25lbnRQb3J0YWwodCl7dC5zZXRBdHRhY2hlZEhvc3QodGhpcyk7Y29uc3Qgbj1udWxsIT10LnZpZXdDb250YWluZXJSZWY/dC52aWV3Q29udGFpbmVyUmVmOnRoaXMuX3ZpZXdDb250YWluZXJSZWYsZT0odC5jb21wb25lbnRGYWN0b3J5UmVzb2x2ZXJ8fHRoaXMuX2NvbXBvbmVudEZhY3RvcnlSZXNvbHZlcikucmVzb2x2ZUNvbXBvbmVudEZhY3RvcnkodC5jb21wb25lbnQpLGE9bi5jcmVhdGVDb21wb25lbnQoZSxuLmxlbmd0aCx0LmluamVjdG9yfHxuLmluamVjdG9yKTtyZXR1cm4gbiE9PXRoaXMuX3ZpZXdDb250YWluZXJSZWYmJnRoaXMuX2dldFJvb3ROb2RlKCkuYXBwZW5kQ2hpbGQoYS5ob3N0Vmlldy5yb290Tm9kZXNbMF0pLHN1cGVyLnNldERpc3Bvc2VGbigoKCk9PmEuZGVzdHJveSgpKSksdGhpcy5fYXR0YWNoZWRQb3J0YWw9dCx0aGlzLl9hdHRhY2hlZFJlZj1hLHRoaXMuYXR0YWNoZWQuZW1pdChhKSxhfWF0dGFjaFRlbXBsYXRlUG9ydGFsKHQpe3Quc2V0QXR0YWNoZWRIb3N0KHRoaXMpO2NvbnN0IG49dGhpcy5fdmlld0NvbnRhaW5lclJlZi5jcmVhdGVFbWJlZGRlZFZpZXcodC50ZW1wbGF0ZVJlZix0LmNvbnRleHQpO3JldHVybiBzdXBlci5zZXREaXNwb3NlRm4oKCgpPT50aGlzLl92aWV3Q29udGFpbmVyUmVmLmNsZWFyKCkpKSx0aGlzLl9hdHRhY2hlZFBvcnRhbD10LHRoaXMuX2F0dGFjaGVkUmVmPW4sdGhpcy5hdHRhY2hlZC5lbWl0KG4pLG59X2dldFJvb3ROb2RlKCl7Y29uc3QgdD10aGlzLl92aWV3Q29udGFpbmVyUmVmLmVsZW1lbnQubmF0aXZlRWxlbWVudDtyZXR1cm4gdC5ub2RlVHlwZT09PXQuRUxFTUVOVF9OT0RFP3Q6dC5wYXJlbnROb2RlfX1GQS7JtWZhYz1mdW5jdGlvbiB0KG4pe3JldHVybiBuZXcobnx8RkEpKFpnKFB1KSxaZygkdSksWmcoekMpKX0sRkEuybVkaXI9dm8oe3R5cGU6RkEsc2VsZWN0b3JzOltbIiIsImNka1BvcnRhbE91dGxldCIsIiJdXSxpbnB1dHM6e3BvcnRhbDpbImNka1BvcnRhbE91dGxldCIsInBvcnRhbCJdfSxvdXRwdXRzOnthdHRhY2hlZDoiYXR0YWNoZWQifSxleHBvcnRBczpbImNka1BvcnRhbE91dGxldCJdLGZlYXR1cmVzOltoZ119KSxGQS5jdG9yUGFyYW1ldGVycz0oKT0+W3t0eXBlOlB1fSx7dHlwZTokdX0se3R5cGU6dm9pZCAwLGRlY29yYXRvcnM6W3t0eXBlOkllLGFyZ3M6W3pDXX1dfV0sRkEucHJvcERlY29yYXRvcnM9e2F0dGFjaGVkOlt7dHlwZTpoX31dfTtjbGFzcyBMQSBleHRlbmRzIEZBe31MQS7JtWZhYz1mdW5jdGlvbiB0KG4pe3JldHVybiBIQShufHxMQSl9LExBLsm1ZGlyPXZvKHt0eXBlOkxBLHNlbGVjdG9yczpbWyIiLCJjZGtQb3J0YWxIb3N0IiwiIl0sWyIiLCJwb3J0YWxIb3N0IiwiIl1dLGlucHV0czp7cG9ydGFsOlsiY2RrUG9ydGFsSG9zdCIsInBvcnRhbCJdfSxleHBvcnRBczpbImNka1BvcnRhbEhvc3QiXSxmZWF0dXJlczpbTXUoW3twcm92aWRlOkZBLHVzZUV4aXN0aW5nOkxBfV0pLGhnXX0pO2NvbnN0IEhBPXRjKExBKTtjbGFzcyBCQXt9QkEuybVtb2Q9eG8oe3R5cGU6QkF9KSxCQS7JtWluaj1HZSh7ZmFjdG9yeTpmdW5jdGlvbiB0KG4pe3JldHVybiBuZXcobnx8QkEpfX0pLCgidW5kZWZpbmVkIj09dHlwZW9mIG5nSml0TW9kZXx8bmdKaXRNb2RlKSYmeW8oQkEse2RlY2xhcmF0aW9uczpbREEsRkEsSUEsTEFdLGV4cG9ydHM6W0RBLEZBLElBLExBXX0pOwovKioKICAgICAqIEBsaWNlbnNlCiAgICAgKiBDb3B5cmlnaHQgR29vZ2xlIExMQyBBbGwgUmlnaHRzIFJlc2VydmVkLgogICAgICoKICAgICAqIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGFuIE1JVC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCiAgICAgKiBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlIGF0IGh0dHBzOi8vYW5ndWxhci5pby9saWNlbnNlCiAgICAgKi8KY2xhc3MgVkF7Y29uc3RydWN0b3IodCxuKXt0aGlzLl92aWV3cG9ydFJ1bGVyPXQsdGhpcy5fcHJldmlvdXNIVE1MU3R5bGVzPXt0b3A6IiIsbGVmdDoiIn0sdGhpcy5faXNFbmFibGVkPSExLHRoaXMuX2RvY3VtZW50PW59YXR0YWNoKCl7fWVuYWJsZSgpe2lmKHRoaXMuX2NhbkJlRW5hYmxlZCgpKXtjb25zdCB0PXRoaXMuX2RvY3VtZW50LmRvY3VtZW50RWxlbWVudDt0aGlzLl9wcmV2aW91c1Njcm9sbFBvc2l0aW9uPXRoaXMuX3ZpZXdwb3J0UnVsZXIuZ2V0Vmlld3BvcnRTY3JvbGxQb3NpdGlvbigpLHRoaXMuX3ByZXZpb3VzSFRNTFN0eWxlcy5sZWZ0PXQuc3R5bGUubGVmdHx8IiIsdGhpcy5fcHJldmlvdXNIVE1MU3R5bGVzLnRvcD10LnN0eWxlLnRvcHx8IiIsdC5zdHlsZS5sZWZ0PVh3KC10aGlzLl9wcmV2aW91c1Njcm9sbFBvc2l0aW9uLmxlZnQpLHQuc3R5bGUudG9wPVh3KC10aGlzLl9wcmV2aW91c1Njcm9sbFBvc2l0aW9uLnRvcCksdC5jbGFzc0xpc3QuYWRkKCJjZGstZ2xvYmFsLXNjcm9sbGJsb2NrIiksdGhpcy5faXNFbmFibGVkPSEwfX1kaXNhYmxlKCl7aWYodGhpcy5faXNFbmFibGVkKXtjb25zdCB0PXRoaXMuX2RvY3VtZW50LmRvY3VtZW50RWxlbWVudCxuPXQuc3R5bGUsZT10aGlzLl9kb2N1bWVudC5ib2R5LnN0eWxlLGE9bi5zY3JvbGxCZWhhdmlvcnx8IiIsbz1lLnNjcm9sbEJlaGF2aW9yfHwiIjt0aGlzLl9pc0VuYWJsZWQ9ITEsbi5sZWZ0PXRoaXMuX3ByZXZpb3VzSFRNTFN0eWxlcy5sZWZ0LG4udG9wPXRoaXMuX3ByZXZpb3VzSFRNTFN0eWxlcy50b3AsdC5jbGFzc0xpc3QucmVtb3ZlKCJjZGstZ2xvYmFsLXNjcm9sbGJsb2NrIiksbi5zY3JvbGxCZWhhdmlvcj1lLnNjcm9sbEJlaGF2aW9yPSJhdXRvIix3aW5kb3cuc2Nyb2xsKHRoaXMuX3ByZXZpb3VzU2Nyb2xsUG9zaXRpb24ubGVmdCx0aGlzLl9wcmV2aW91c1Njcm9sbFBvc2l0aW9uLnRvcCksbi5zY3JvbGxCZWhhdmlvcj1hLGUuc2Nyb2xsQmVoYXZpb3I9b319X2NhbkJlRW5hYmxlZCgpe2lmKHRoaXMuX2RvY3VtZW50LmRvY3VtZW50RWxlbWVudC5jbGFzc0xpc3QuY29udGFpbnMoImNkay1nbG9iYWwtc2Nyb2xsYmxvY2siKXx8dGhpcy5faXNFbmFibGVkKXJldHVybiExO2NvbnN0IHQ9dGhpcy5fZG9jdW1lbnQuYm9keSxuPXRoaXMuX3ZpZXdwb3J0UnVsZXIuZ2V0Vmlld3BvcnRTaXplKCk7cmV0dXJuIHQuc2Nyb2xsSGVpZ2h0Pm4uaGVpZ2h0fHx0LnNjcm9sbFdpZHRoPm4ud2lkdGh9fQovKioKICAgICAqIEBsaWNlbnNlCiAgICAgKiBDb3B5cmlnaHQgR29vZ2xlIExMQyBBbGwgUmlnaHRzIFJlc2VydmVkLgogICAgICoKICAgICAqIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGFuIE1JVC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCiAgICAgKiBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlIGF0IGh0dHBzOi8vYW5ndWxhci5pby9saWNlbnNlCiAgICAgKi9mdW5jdGlvbiBqQSgpe3JldHVybiBFcnJvcigiU2Nyb2xsIHN0cmF0ZWd5IGhhcyBhbHJlYWR5IGJlZW4gYXR0YWNoZWQuIil9Y2xhc3MgVUF7Y29uc3RydWN0b3IodCxuLGUsYSl7dGhpcy5fc2Nyb2xsRGlzcGF0Y2hlcj10LHRoaXMuX25nWm9uZT1uLHRoaXMuX3ZpZXdwb3J0UnVsZXI9ZSx0aGlzLl9jb25maWc9YSx0aGlzLl9zY3JvbGxTdWJzY3JpcHRpb249bnVsbCx0aGlzLl9kZXRhY2g9KCk9Pnt0aGlzLmRpc2FibGUoKSx0aGlzLl9vdmVybGF5UmVmLmhhc0F0dGFjaGVkKCkmJnRoaXMuX25nWm9uZS5ydW4oKCgpPT50aGlzLl9vdmVybGF5UmVmLmRldGFjaCgpKSl9fWF0dGFjaCh0KXtpZih0aGlzLl9vdmVybGF5UmVmJiYoInVuZGVmaW5lZCI9PXR5cGVvZiBuZ0Rldk1vZGV8fG5nRGV2TW9kZSkpdGhyb3cgakEoKTt0aGlzLl9vdmVybGF5UmVmPXR9ZW5hYmxlKCl7aWYodGhpcy5fc2Nyb2xsU3Vic2NyaXB0aW9uKXJldHVybjtjb25zdCB0PXRoaXMuX3Njcm9sbERpc3BhdGNoZXIuc2Nyb2xsZWQoMCk7dGhpcy5fY29uZmlnJiZ0aGlzLl9jb25maWcudGhyZXNob2xkJiZ0aGlzLl9jb25maWcudGhyZXNob2xkPjE/KHRoaXMuX2luaXRpYWxTY3JvbGxQb3NpdGlvbj10aGlzLl92aWV3cG9ydFJ1bGVyLmdldFZpZXdwb3J0U2Nyb2xsUG9zaXRpb24oKS50b3AsdGhpcy5fc2Nyb2xsU3Vic2NyaXB0aW9uPXQuc3Vic2NyaWJlKCgoKT0+e2NvbnN0IHQ9dGhpcy5fdmlld3BvcnRSdWxlci5nZXRWaWV3cG9ydFNjcm9sbFBvc2l0aW9uKCkudG9wO01hdGguYWJzKHQtdGhpcy5faW5pdGlhbFNjcm9sbFBvc2l0aW9uKT50aGlzLl9jb25maWcudGhyZXNob2xkP3RoaXMuX2RldGFjaCgpOnRoaXMuX292ZXJsYXlSZWYudXBkYXRlUG9zaXRpb24oKX0pKSk6dGhpcy5fc2Nyb2xsU3Vic2NyaXB0aW9uPXQuc3Vic2NyaWJlKHRoaXMuX2RldGFjaCl9ZGlzYWJsZSgpe3RoaXMuX3Njcm9sbFN1YnNjcmlwdGlvbiYmKHRoaXMuX3Njcm9sbFN1YnNjcmlwdGlvbi51bnN1YnNjcmliZSgpLHRoaXMuX3Njcm9sbFN1YnNjcmlwdGlvbj1udWxsKX1kZXRhY2goKXt0aGlzLmRpc2FibGUoKSx0aGlzLl9vdmVybGF5UmVmPW51bGx9fQovKioKICAgICAqIEBsaWNlbnNlCiAgICAgKiBDb3B5cmlnaHQgR29vZ2xlIExMQyBBbGwgUmlnaHRzIFJlc2VydmVkLgogICAgICoKICAgICAqIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGFuIE1JVC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCiAgICAgKiBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlIGF0IGh0dHBzOi8vYW5ndWxhci5pby9saWNlbnNlCiAgICAgKi9jbGFzcyBXQXtlbmFibGUoKXt9ZGlzYWJsZSgpe31hdHRhY2goKXt9fQovKioKICAgICAqIEBsaWNlbnNlCiAgICAgKiBDb3B5cmlnaHQgR29vZ2xlIExMQyBBbGwgUmlnaHRzIFJlc2VydmVkLgogICAgICoKICAgICAqIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGFuIE1JVC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCiAgICAgKiBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlIGF0IGh0dHBzOi8vYW5ndWxhci5pby9saWNlbnNlCiAgICAgKi9mdW5jdGlvbiBHQSh0LG4pe3JldHVybiBuLnNvbWUoKG49PnQuYm90dG9tPG4udG9wfHx0LnRvcD5uLmJvdHRvbXx8dC5yaWdodDxuLmxlZnR8fHQubGVmdD5uLnJpZ2h0KSl9ZnVuY3Rpb24gWUEodCxuKXtyZXR1cm4gbi5zb21lKChuPT50LnRvcDxuLnRvcHx8dC5ib3R0b20+bi5ib3R0b218fHQubGVmdDxuLmxlZnR8fHQucmlnaHQ+bi5yaWdodCkpfQovKioKICAgICAqIEBsaWNlbnNlCiAgICAgKiBDb3B5cmlnaHQgR29vZ2xlIExMQyBBbGwgUmlnaHRzIFJlc2VydmVkLgogICAgICoKICAgICAqIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGFuIE1JVC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCiAgICAgKiBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlIGF0IGh0dHBzOi8vYW5ndWxhci5pby9saWNlbnNlCiAgICAgKi9jbGFzcyBxQXtjb25zdHJ1Y3Rvcih0LG4sZSxhKXt0aGlzLl9zY3JvbGxEaXNwYXRjaGVyPXQsdGhpcy5fdmlld3BvcnRSdWxlcj1uLHRoaXMuX25nWm9uZT1lLHRoaXMuX2NvbmZpZz1hLHRoaXMuX3Njcm9sbFN1YnNjcmlwdGlvbj1udWxsfWF0dGFjaCh0KXtpZih0aGlzLl9vdmVybGF5UmVmJiYoInVuZGVmaW5lZCI9PXR5cGVvZiBuZ0Rldk1vZGV8fG5nRGV2TW9kZSkpdGhyb3cgakEoKTt0aGlzLl9vdmVybGF5UmVmPXR9ZW5hYmxlKCl7dGhpcy5fc2Nyb2xsU3Vic2NyaXB0aW9ufHwodGhpcy5fc2Nyb2xsU3Vic2NyaXB0aW9uPXRoaXMuX3Njcm9sbERpc3BhdGNoZXIuc2Nyb2xsZWQodGhpcy5fY29uZmlnP3RoaXMuX2NvbmZpZy5zY3JvbGxUaHJvdHRsZTowKS5zdWJzY3JpYmUoKCgpPT57aWYodGhpcy5fb3ZlcmxheVJlZi51cGRhdGVQb3NpdGlvbigpLHRoaXMuX2NvbmZpZyYmdGhpcy5fY29uZmlnLmF1dG9DbG9zZSl7Y29uc3QgdD10aGlzLl9vdmVybGF5UmVmLm92ZXJsYXlFbGVtZW50LmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpLHt3aWR0aDpuLGhlaWdodDplfT10aGlzLl92aWV3cG9ydFJ1bGVyLmdldFZpZXdwb3J0U2l6ZSgpO0dBKHQsW3t3aWR0aDpuLGhlaWdodDplLGJvdHRvbTplLHJpZ2h0Om4sdG9wOjAsbGVmdDowfV0pJiYodGhpcy5kaXNhYmxlKCksdGhpcy5fbmdab25lLnJ1bigoKCk9PnRoaXMuX292ZXJsYXlSZWYuZGV0YWNoKCkpKSl9fSkpKX1kaXNhYmxlKCl7dGhpcy5fc2Nyb2xsU3Vic2NyaXB0aW9uJiYodGhpcy5fc2Nyb2xsU3Vic2NyaXB0aW9uLnVuc3Vic2NyaWJlKCksdGhpcy5fc2Nyb2xsU3Vic2NyaXB0aW9uPW51bGwpfWRldGFjaCgpe3RoaXMuZGlzYWJsZSgpLHRoaXMuX292ZXJsYXlSZWY9bnVsbH19Ci8qKgogICAgICogQGxpY2Vuc2UKICAgICAqIENvcHlyaWdodCBHb29nbGUgTExDIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCiAgICAgKgogICAgICogVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYW4gTUlULXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKICAgICAqIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUgYXQgaHR0cHM6Ly9hbmd1bGFyLmlvL2xpY2Vuc2UKICAgICAqL2NsYXNzIFpBe2NvbnN0cnVjdG9yKHQsbixlLGEpe3RoaXMuX3Njcm9sbERpc3BhdGNoZXI9dCx0aGlzLl92aWV3cG9ydFJ1bGVyPW4sdGhpcy5fbmdab25lPWUsdGhpcy5ub29wPSgpPT5uZXcgV0EsdGhpcy5jbG9zZT10PT5uZXcgVUEodGhpcy5fc2Nyb2xsRGlzcGF0Y2hlcix0aGlzLl9uZ1pvbmUsdGhpcy5fdmlld3BvcnRSdWxlcix0KSx0aGlzLmJsb2NrPSgpPT5uZXcgVkEodGhpcy5fdmlld3BvcnRSdWxlcix0aGlzLl9kb2N1bWVudCksdGhpcy5yZXBvc2l0aW9uPXQ9Pm5ldyBxQSh0aGlzLl9zY3JvbGxEaXNwYXRjaGVyLHRoaXMuX3ZpZXdwb3J0UnVsZXIsdGhpcy5fbmdab25lLHQpLHRoaXMuX2RvY3VtZW50PWF9fVpBLsm1ZmFjPWZ1bmN0aW9uIHQobil7cmV0dXJuIG5ldyhufHxaQSkoWmEoX0EpLFphKE1BKSxaYShKXyksWmEoekMpKX0sWkEuybVwcm92PVdlKHtmYWN0b3J5OmZ1bmN0aW9uIHQoKXtyZXR1cm4gbmV3IFpBKFphKF9BKSxaYShNQSksWmEoSl8pLFphKHpDKSl9LHRva2VuOlpBLHByb3ZpZGVkSW46InJvb3QifSksWkEuY3RvclBhcmFtZXRlcnM9KCk9Plt7dHlwZTpfQX0se3R5cGU6TUF9LHt0eXBlOkpffSx7dHlwZTp2b2lkIDAsZGVjb3JhdG9yczpbe3R5cGU6SWUsYXJnczpbekNdfV19XQovKioKICAgICAqIEBsaWNlbnNlCiAgICAgKiBDb3B5cmlnaHQgR29vZ2xlIExMQyBBbGwgUmlnaHRzIFJlc2VydmVkLgogICAgICoKICAgICAqIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGFuIE1JVC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCiAgICAgKiBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlIGF0IGh0dHBzOi8vYW5ndWxhci5pby9saWNlbnNlCiAgICAgKi8KLyoqCiAgICAgKiBAbGljZW5zZQogICAgICogQ29weXJpZ2h0IEdvb2dsZSBMTEMgQWxsIFJpZ2h0cyBSZXNlcnZlZC4KICAgICAqCiAgICAgKiBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhbiBNSVQtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQogICAgICogZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZSBhdCBodHRwczovL2FuZ3VsYXIuaW8vbGljZW5zZQogICAgICovO2NsYXNzIFhBe2NvbnN0cnVjdG9yKHQpe2lmKHRoaXMuc2Nyb2xsU3RyYXRlZ3k9bmV3IFdBLHRoaXMucGFuZWxDbGFzcz0iIix0aGlzLmhhc0JhY2tkcm9wPSExLHRoaXMuYmFja2Ryb3BDbGFzcz0iY2RrLW92ZXJsYXktZGFyay1iYWNrZHJvcCIsdGhpcy5kaXNwb3NlT25OYXZpZ2F0aW9uPSExLHQpe2NvbnN0IG49T2JqZWN0LmtleXModCk7Zm9yKGNvbnN0IGUgb2Ygbil2b2lkIDAhPT10W2VdJiYodGhpc1tlXT10W2VdKX19fQovKioKICAgICAqIEBsaWNlbnNlCiAgICAgKiBDb3B5cmlnaHQgR29vZ2xlIExMQyBBbGwgUmlnaHRzIFJlc2VydmVkLgogICAgICoKICAgICAqIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGFuIE1JVC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCiAgICAgKiBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlIGF0IGh0dHBzOi8vYW5ndWxhci5pby9saWNlbnNlCiAgICAgKi9jbGFzcyBKQXtjb25zdHJ1Y3Rvcih0LG4sZSxhLG8pe3RoaXMub2Zmc2V0WD1lLHRoaXMub2Zmc2V0WT1hLHRoaXMucGFuZWxDbGFzcz1vLHRoaXMub3JpZ2luWD10Lm9yaWdpblgsdGhpcy5vcmlnaW5ZPXQub3JpZ2luWSx0aGlzLm92ZXJsYXlYPW4ub3ZlcmxheVgsdGhpcy5vdmVybGF5WT1uLm92ZXJsYXlZfX1jbGFzcyBRQXt9Y2xhc3MgS0F7Y29uc3RydWN0b3IodCxuKXt0aGlzLmNvbm5lY3Rpb25QYWlyPXQsdGhpcy5zY3JvbGxhYmxlVmlld1Byb3BlcnRpZXM9bn19ZnVuY3Rpb24gJEEodCxuKXtpZigidG9wIiE9PW4mJiJib3R0b20iIT09biYmImNlbnRlciIhPT1uKXRocm93IEVycm9yKGBDb25uZWN0ZWRQb3NpdGlvbjogSW52YWxpZCAke3R9ICIke259Ii4gRXhwZWN0ZWQgInRvcCIsICJib3R0b20iIG9yICJjZW50ZXIiLmApfWZ1bmN0aW9uIHR6KHQsbil7aWYoInN0YXJ0IiE9PW4mJiJlbmQiIT09biYmImNlbnRlciIhPT1uKXRocm93IEVycm9yKGBDb25uZWN0ZWRQb3NpdGlvbjogSW52YWxpZCAke3R9ICIke259Ii4gRXhwZWN0ZWQgInN0YXJ0IiwgImVuZCIgb3IgImNlbnRlciIuYCl9Ci8qKgogICAgICogQGxpY2Vuc2UKICAgICAqIENvcHlyaWdodCBHb29nbGUgTExDIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCiAgICAgKgogICAgICogVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYW4gTUlULXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKICAgICAqIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUgYXQgaHR0cHM6Ly9hbmd1bGFyLmlvL2xpY2Vuc2UKICAgICAqL0tBLmN0b3JQYXJhbWV0ZXJzPSgpPT5be3R5cGU6SkF9LHt0eXBlOlFBLGRlY29yYXRvcnM6W3t0eXBlOk5lfV19XTtjbGFzcyBuentjb25zdHJ1Y3Rvcih0KXt0aGlzLl9hdHRhY2hlZE92ZXJsYXlzPVtdLHRoaXMuX2RvY3VtZW50PXR9bmdPbkRlc3Ryb3koKXt0aGlzLmRldGFjaCgpfWFkZCh0KXt0aGlzLnJlbW92ZSh0KSx0aGlzLl9hdHRhY2hlZE92ZXJsYXlzLnB1c2godCl9cmVtb3ZlKHQpe2NvbnN0IG49dGhpcy5fYXR0YWNoZWRPdmVybGF5cy5pbmRleE9mKHQpO24+LTEmJnRoaXMuX2F0dGFjaGVkT3ZlcmxheXMuc3BsaWNlKG4sMSksMD09PXRoaXMuX2F0dGFjaGVkT3ZlcmxheXMubGVuZ3RoJiZ0aGlzLmRldGFjaCgpfX1uei7JtWZhYz1mdW5jdGlvbiB0KG4pe3JldHVybiBuZXcobnx8bnopKFphKHpDKSl9LG56Lsm1cHJvdj1XZSh7ZmFjdG9yeTpmdW5jdGlvbiB0KCl7cmV0dXJuIG5ldyBueihaYSh6QykpfSx0b2tlbjpueixwcm92aWRlZEluOiJyb290In0pLG56LmN0b3JQYXJhbWV0ZXJzPSgpPT5be3R5cGU6dm9pZCAwLGRlY29yYXRvcnM6W3t0eXBlOkllLGFyZ3M6W3pDXX1dfV0KLyoqCiAgICAgKiBAbGljZW5zZQogICAgICogQ29weXJpZ2h0IEdvb2dsZSBMTEMgQWxsIFJpZ2h0cyBSZXNlcnZlZC4KICAgICAqCiAgICAgKiBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhbiBNSVQtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQogICAgICogZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZSBhdCBodHRwczovL2FuZ3VsYXIuaW8vbGljZW5zZQogICAgICovO2NsYXNzIGV6IGV4dGVuZHMgbnp7Y29uc3RydWN0b3IodCl7c3VwZXIodCksdGhpcy5fa2V5ZG93bkxpc3RlbmVyPXQ9Pntjb25zdCBuPXRoaXMuX2F0dGFjaGVkT3ZlcmxheXM7Zm9yKGxldCBlPW4ubGVuZ3RoLTE7ZT4tMTtlLS0paWYobltlXS5fa2V5ZG93bkV2ZW50cy5vYnNlcnZlcnMubGVuZ3RoPjApe25bZV0uX2tleWRvd25FdmVudHMubmV4dCh0KTticmVha319fWFkZCh0KXtzdXBlci5hZGQodCksdGhpcy5faXNBdHRhY2hlZHx8KHRoaXMuX2RvY3VtZW50LmJvZHkuYWRkRXZlbnRMaXN0ZW5lcigia2V5ZG93biIsdGhpcy5fa2V5ZG93bkxpc3RlbmVyKSx0aGlzLl9pc0F0dGFjaGVkPSEwKX1kZXRhY2goKXt0aGlzLl9pc0F0dGFjaGVkJiYodGhpcy5fZG9jdW1lbnQuYm9keS5yZW1vdmVFdmVudExpc3RlbmVyKCJrZXlkb3duIix0aGlzLl9rZXlkb3duTGlzdGVuZXIpLHRoaXMuX2lzQXR0YWNoZWQ9ITEpfX1lei7JtWZhYz1mdW5jdGlvbiB0KG4pe3JldHVybiBuZXcobnx8ZXopKFphKHpDKSl9LGV6Lsm1cHJvdj1XZSh7ZmFjdG9yeTpmdW5jdGlvbiB0KCl7cmV0dXJuIG5ldyBleihaYSh6QykpfSx0b2tlbjpleixwcm92aWRlZEluOiJyb290In0pLGV6LmN0b3JQYXJhbWV0ZXJzPSgpPT5be3R5cGU6dm9pZCAwLGRlY29yYXRvcnM6W3t0eXBlOkllLGFyZ3M6W3pDXX1dfV0sbmV3IE5lLG5ldyBMZTsKLyoqCiAgICAgKiBAbGljZW5zZQogICAgICogQ29weXJpZ2h0IEdvb2dsZSBMTEMgQWxsIFJpZ2h0cyBSZXNlcnZlZC4KICAgICAqCiAgICAgKiBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhbiBNSVQtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQogICAgICogZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZSBhdCBodHRwczovL2FuZ3VsYXIuaW8vbGljZW5zZQogICAgICovCmNsYXNzIGF6IGV4dGVuZHMgbnp7Y29uc3RydWN0b3IodCxuKXtzdXBlcih0KSx0aGlzLl9wbGF0Zm9ybT1uLHRoaXMuX2N1cnNvclN0eWxlSXNTZXQ9ITEsdGhpcy5fY2xpY2tMaXN0ZW5lcj10PT57Y29uc3Qgbj10LmNvbXBvc2VkUGF0aD90LmNvbXBvc2VkUGF0aCgpWzBdOnQudGFyZ2V0LGU9dGhpcy5fYXR0YWNoZWRPdmVybGF5cy5zbGljZSgpO2ZvcihsZXQgYT1lLmxlbmd0aC0xO2E+LTE7YS0tKXtjb25zdCBvPWVbYV07aWYoIShvLl9vdXRzaWRlUG9pbnRlckV2ZW50cy5vYnNlcnZlcnMubGVuZ3RoPDEpJiZvLmhhc0F0dGFjaGVkKCkpe2lmKG8ub3ZlcmxheUVsZW1lbnQuY29udGFpbnMobikpYnJlYWs7by5fb3V0c2lkZVBvaW50ZXJFdmVudHMubmV4dCh0KX19fX1hZGQodCl7c3VwZXIuYWRkKHQpLHRoaXMuX2lzQXR0YWNoZWR8fCh0aGlzLl9kb2N1bWVudC5ib2R5LmFkZEV2ZW50TGlzdGVuZXIoImNsaWNrIix0aGlzLl9jbGlja0xpc3RlbmVyLCEwKSx0aGlzLl9kb2N1bWVudC5ib2R5LmFkZEV2ZW50TGlzdGVuZXIoImNvbnRleHRtZW51Iix0aGlzLl9jbGlja0xpc3RlbmVyLCEwKSx0aGlzLl9wbGF0Zm9ybS5JT1MmJiF0aGlzLl9jdXJzb3JTdHlsZUlzU2V0JiYodGhpcy5fY3Vyc29yT3JpZ2luYWxWYWx1ZT10aGlzLl9kb2N1bWVudC5ib2R5LnN0eWxlLmN1cnNvcix0aGlzLl9kb2N1bWVudC5ib2R5LnN0eWxlLmN1cnNvcj0icG9pbnRlciIsdGhpcy5fY3Vyc29yU3R5bGVJc1NldD0hMCksdGhpcy5faXNBdHRhY2hlZD0hMCl9ZGV0YWNoKCl7dGhpcy5faXNBdHRhY2hlZCYmKHRoaXMuX2RvY3VtZW50LmJvZHkucmVtb3ZlRXZlbnRMaXN0ZW5lcigiY2xpY2siLHRoaXMuX2NsaWNrTGlzdGVuZXIsITApLHRoaXMuX2RvY3VtZW50LmJvZHkucmVtb3ZlRXZlbnRMaXN0ZW5lcigiY29udGV4dG1lbnUiLHRoaXMuX2NsaWNrTGlzdGVuZXIsITApLHRoaXMuX3BsYXRmb3JtLklPUyYmdGhpcy5fY3Vyc29yU3R5bGVJc1NldCYmKHRoaXMuX2RvY3VtZW50LmJvZHkuc3R5bGUuY3Vyc29yPXRoaXMuX2N1cnNvck9yaWdpbmFsVmFsdWUsdGhpcy5fY3Vyc29yU3R5bGVJc1NldD0hMSksdGhpcy5faXNBdHRhY2hlZD0hMSl9fWF6Lsm1ZmFjPWZ1bmN0aW9uIHQobil7cmV0dXJuIG5ldyhufHxheikoWmEoekMpLFphKFN3KSl9LGF6Lsm1cHJvdj1XZSh7ZmFjdG9yeTpmdW5jdGlvbiB0KCl7cmV0dXJuIG5ldyBheihaYSh6QyksWmEoU3cpKX0sdG9rZW46YXoscHJvdmlkZWRJbjoicm9vdCJ9KSxhei5jdG9yUGFyYW1ldGVycz0oKT0+W3t0eXBlOnZvaWQgMCxkZWNvcmF0b3JzOlt7dHlwZTpJZSxhcmdzOlt6Q119XX0se3R5cGU6U3d9XQovKioKICAgICAqIEBsaWNlbnNlCiAgICAgKiBDb3B5cmlnaHQgR29vZ2xlIExMQyBBbGwgUmlnaHRzIFJlc2VydmVkLgogICAgICoKICAgICAqIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGFuIE1JVC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCiAgICAgKiBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlIGF0IGh0dHBzOi8vYW5ndWxhci5pby9saWNlbnNlCiAgICAgKi87Y29uc3Qgb3o9ISgidW5kZWZpbmVkIj09dHlwZW9mIHdpbmRvd3x8IXdpbmRvd3x8IXdpbmRvdy5fX2thcm1hX18mJiF3aW5kb3cuamFzbWluZSk7Y2xhc3Mgcnp7Y29uc3RydWN0b3IodCxuKXt0aGlzLl9wbGF0Zm9ybT1uLHRoaXMuX2RvY3VtZW50PXR9bmdPbkRlc3Ryb3koKXtjb25zdCB0PXRoaXMuX2NvbnRhaW5lckVsZW1lbnQ7dCYmdC5wYXJlbnROb2RlJiZ0LnBhcmVudE5vZGUucmVtb3ZlQ2hpbGQodCl9Z2V0Q29udGFpbmVyRWxlbWVudCgpe3JldHVybiB0aGlzLl9jb250YWluZXJFbGVtZW50fHx0aGlzLl9jcmVhdGVDb250YWluZXIoKSx0aGlzLl9jb250YWluZXJFbGVtZW50fV9jcmVhdGVDb250YWluZXIoKXtjb25zdCB0PXRoaXMuX3BsYXRmb3JtP3RoaXMuX3BsYXRmb3JtLmlzQnJvd3NlcjoidW5kZWZpbmVkIiE9dHlwZW9mIHdpbmRvdyxuPSJjZGstb3ZlcmxheS1jb250YWluZXIiO2lmKHR8fG96KXtjb25zdCB0PXRoaXMuX2RvY3VtZW50LnF1ZXJ5U2VsZWN0b3JBbGwoYC4ke259W3BsYXRmb3JtPSJzZXJ2ZXIiXSwgLiR7bn1bcGxhdGZvcm09InRlc3QiXWApO2ZvcihsZXQgbj0wO248dC5sZW5ndGg7bisrKXRbbl0ucGFyZW50Tm9kZS5yZW1vdmVDaGlsZCh0W25dKX1jb25zdCBlPXRoaXMuX2RvY3VtZW50LmNyZWF0ZUVsZW1lbnQoImRpdiIpO2UuY2xhc3NMaXN0LmFkZChuKSxvej9lLnNldEF0dHJpYnV0ZSgicGxhdGZvcm0iLCJ0ZXN0Iik6dHx8ZS5zZXRBdHRyaWJ1dGUoInBsYXRmb3JtIiwic2VydmVyIiksdGhpcy5fZG9jdW1lbnQuYm9keS5hcHBlbmRDaGlsZChlKSx0aGlzLl9jb250YWluZXJFbGVtZW50PWV9fXJ6Lsm1ZmFjPWZ1bmN0aW9uIHQobil7cmV0dXJuIG5ldyhufHxyeikoWmEoekMpLFphKFN3KSl9LHJ6Lsm1cHJvdj1XZSh7ZmFjdG9yeTpmdW5jdGlvbiB0KCl7cmV0dXJuIG5ldyByeihaYSh6QyksWmEoU3cpKX0sdG9rZW46cnoscHJvdmlkZWRJbjoicm9vdCJ9KSxyei5jdG9yUGFyYW1ldGVycz0oKT0+W3t0eXBlOnZvaWQgMCxkZWNvcmF0b3JzOlt7dHlwZTpJZSxhcmdzOlt6Q119XX0se3R5cGU6U3d9XSxuZXcgTmUsbmV3IExlOwovKioKICAgICAqIEBsaWNlbnNlCiAgICAgKiBDb3B5cmlnaHQgR29vZ2xlIExMQyBBbGwgUmlnaHRzIFJlc2VydmVkLgogICAgICoKICAgICAqIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGFuIE1JVC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCiAgICAgKiBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlIGF0IGh0dHBzOi8vYW5ndWxhci5pby9saWNlbnNlCiAgICAgKi8KY2xhc3MgaXp7Y29uc3RydWN0b3IodCxuLGUsYSxvLHIsaSxjLGwpe3RoaXMuX3BvcnRhbE91dGxldD10LHRoaXMuX2hvc3Q9bix0aGlzLl9wYW5lPWUsdGhpcy5fY29uZmlnPWEsdGhpcy5fbmdab25lPW8sdGhpcy5fa2V5Ym9hcmREaXNwYXRjaGVyPXIsdGhpcy5fZG9jdW1lbnQ9aSx0aGlzLl9sb2NhdGlvbj1jLHRoaXMuX291dHNpZGVDbGlja0Rpc3BhdGNoZXI9bCx0aGlzLl9iYWNrZHJvcEVsZW1lbnQ9bnVsbCx0aGlzLl9iYWNrZHJvcENsaWNrPW5ldyB4LHRoaXMuX2F0dGFjaG1lbnRzPW5ldyB4LHRoaXMuX2RldGFjaG1lbnRzPW5ldyB4LHRoaXMuX2xvY2F0aW9uQ2hhbmdlcz1zLkVNUFRZLHRoaXMuX2JhY2tkcm9wQ2xpY2tIYW5kbGVyPXQ9PnRoaXMuX2JhY2tkcm9wQ2xpY2submV4dCh0KSx0aGlzLl9rZXlkb3duRXZlbnRzPW5ldyB4LHRoaXMuX291dHNpZGVQb2ludGVyRXZlbnRzPW5ldyB4LGEuc2Nyb2xsU3RyYXRlZ3kmJih0aGlzLl9zY3JvbGxTdHJhdGVneT1hLnNjcm9sbFN0cmF0ZWd5LHRoaXMuX3Njcm9sbFN0cmF0ZWd5LmF0dGFjaCh0aGlzKSksdGhpcy5fcG9zaXRpb25TdHJhdGVneT1hLnBvc2l0aW9uU3RyYXRlZ3l9Z2V0IG92ZXJsYXlFbGVtZW50KCl7cmV0dXJuIHRoaXMuX3BhbmV9Z2V0IGJhY2tkcm9wRWxlbWVudCgpe3JldHVybiB0aGlzLl9iYWNrZHJvcEVsZW1lbnR9Z2V0IGhvc3RFbGVtZW50KCl7cmV0dXJuIHRoaXMuX2hvc3R9YXR0YWNoKHQpe2xldCBuPXRoaXMuX3BvcnRhbE91dGxldC5hdHRhY2godCk7cmV0dXJuIXRoaXMuX2hvc3QucGFyZW50RWxlbWVudCYmdGhpcy5fcHJldmlvdXNIb3N0UGFyZW50JiZ0aGlzLl9wcmV2aW91c0hvc3RQYXJlbnQuYXBwZW5kQ2hpbGQodGhpcy5faG9zdCksdGhpcy5fcG9zaXRpb25TdHJhdGVneSYmdGhpcy5fcG9zaXRpb25TdHJhdGVneS5hdHRhY2godGhpcyksdGhpcy5fdXBkYXRlU3RhY2tpbmdPcmRlcigpLHRoaXMuX3VwZGF0ZUVsZW1lbnRTaXplKCksdGhpcy5fdXBkYXRlRWxlbWVudERpcmVjdGlvbigpLHRoaXMuX3Njcm9sbFN0cmF0ZWd5JiZ0aGlzLl9zY3JvbGxTdHJhdGVneS5lbmFibGUoKSx0aGlzLl9uZ1pvbmUub25TdGFibGUucGlwZShUbigxKSkuc3Vic2NyaWJlKCgoKT0+e3RoaXMuaGFzQXR0YWNoZWQoKSYmdGhpcy51cGRhdGVQb3NpdGlvbigpfSkpLHRoaXMuX3RvZ2dsZVBvaW50ZXJFdmVudHMoITApLHRoaXMuX2NvbmZpZy5oYXNCYWNrZHJvcCYmdGhpcy5fYXR0YWNoQmFja2Ryb3AoKSx0aGlzLl9jb25maWcucGFuZWxDbGFzcyYmdGhpcy5fdG9nZ2xlQ2xhc3Nlcyh0aGlzLl9wYW5lLHRoaXMuX2NvbmZpZy5wYW5lbENsYXNzLCEwKSx0aGlzLl9hdHRhY2htZW50cy5uZXh0KCksdGhpcy5fa2V5Ym9hcmREaXNwYXRjaGVyLmFkZCh0aGlzKSx0aGlzLl9jb25maWcuZGlzcG9zZU9uTmF2aWdhdGlvbiYmdGhpcy5fbG9jYXRpb24mJih0aGlzLl9sb2NhdGlvbkNoYW5nZXM9dGhpcy5fbG9jYXRpb24uc3Vic2NyaWJlKCgoKT0+dGhpcy5kaXNwb3NlKCkpKSksdGhpcy5fb3V0c2lkZUNsaWNrRGlzcGF0Y2hlciYmdGhpcy5fb3V0c2lkZUNsaWNrRGlzcGF0Y2hlci5hZGQodGhpcyksbn1kZXRhY2goKXtpZighdGhpcy5oYXNBdHRhY2hlZCgpKXJldHVybjt0aGlzLmRldGFjaEJhY2tkcm9wKCksdGhpcy5fdG9nZ2xlUG9pbnRlckV2ZW50cyghMSksdGhpcy5fcG9zaXRpb25TdHJhdGVneSYmdGhpcy5fcG9zaXRpb25TdHJhdGVneS5kZXRhY2gmJnRoaXMuX3Bvc2l0aW9uU3RyYXRlZ3kuZGV0YWNoKCksdGhpcy5fc2Nyb2xsU3RyYXRlZ3kmJnRoaXMuX3Njcm9sbFN0cmF0ZWd5LmRpc2FibGUoKTtjb25zdCB0PXRoaXMuX3BvcnRhbE91dGxldC5kZXRhY2goKTtyZXR1cm4gdGhpcy5fZGV0YWNobWVudHMubmV4dCgpLHRoaXMuX2tleWJvYXJkRGlzcGF0Y2hlci5yZW1vdmUodGhpcyksdGhpcy5fZGV0YWNoQ29udGVudFdoZW5TdGFibGUoKSx0aGlzLl9sb2NhdGlvbkNoYW5nZXMudW5zdWJzY3JpYmUoKSx0aGlzLl9vdXRzaWRlQ2xpY2tEaXNwYXRjaGVyJiZ0aGlzLl9vdXRzaWRlQ2xpY2tEaXNwYXRjaGVyLnJlbW92ZSh0aGlzKSx0fWRpc3Bvc2UoKXtjb25zdCB0PXRoaXMuaGFzQXR0YWNoZWQoKTt0aGlzLl9wb3NpdGlvblN0cmF0ZWd5JiZ0aGlzLl9wb3NpdGlvblN0cmF0ZWd5LmRpc3Bvc2UoKSx0aGlzLl9kaXNwb3NlU2Nyb2xsU3RyYXRlZ3koKSx0aGlzLmRldGFjaEJhY2tkcm9wKCksdGhpcy5fbG9jYXRpb25DaGFuZ2VzLnVuc3Vic2NyaWJlKCksdGhpcy5fa2V5Ym9hcmREaXNwYXRjaGVyLnJlbW92ZSh0aGlzKSx0aGlzLl9wb3J0YWxPdXRsZXQuZGlzcG9zZSgpLHRoaXMuX2F0dGFjaG1lbnRzLmNvbXBsZXRlKCksdGhpcy5fYmFja2Ryb3BDbGljay5jb21wbGV0ZSgpLHRoaXMuX2tleWRvd25FdmVudHMuY29tcGxldGUoKSx0aGlzLl9vdXRzaWRlUG9pbnRlckV2ZW50cy5jb21wbGV0ZSgpLHRoaXMuX291dHNpZGVDbGlja0Rpc3BhdGNoZXImJnRoaXMuX291dHNpZGVDbGlja0Rpc3BhdGNoZXIucmVtb3ZlKHRoaXMpLHRoaXMuX2hvc3QmJnRoaXMuX2hvc3QucGFyZW50Tm9kZSYmKHRoaXMuX2hvc3QucGFyZW50Tm9kZS5yZW1vdmVDaGlsZCh0aGlzLl9ob3N0KSx0aGlzLl9ob3N0PW51bGwpLHRoaXMuX3ByZXZpb3VzSG9zdFBhcmVudD10aGlzLl9wYW5lPW51bGwsdCYmdGhpcy5fZGV0YWNobWVudHMubmV4dCgpLHRoaXMuX2RldGFjaG1lbnRzLmNvbXBsZXRlKCl9aGFzQXR0YWNoZWQoKXtyZXR1cm4gdGhpcy5fcG9ydGFsT3V0bGV0Lmhhc0F0dGFjaGVkKCl9YmFja2Ryb3BDbGljaygpe3JldHVybiB0aGlzLl9iYWNrZHJvcENsaWNrfWF0dGFjaG1lbnRzKCl7cmV0dXJuIHRoaXMuX2F0dGFjaG1lbnRzfWRldGFjaG1lbnRzKCl7cmV0dXJuIHRoaXMuX2RldGFjaG1lbnRzfWtleWRvd25FdmVudHMoKXtyZXR1cm4gdGhpcy5fa2V5ZG93bkV2ZW50c31vdXRzaWRlUG9pbnRlckV2ZW50cygpe3JldHVybiB0aGlzLl9vdXRzaWRlUG9pbnRlckV2ZW50c31nZXRDb25maWcoKXtyZXR1cm4gdGhpcy5fY29uZmlnfXVwZGF0ZVBvc2l0aW9uKCl7dGhpcy5fcG9zaXRpb25TdHJhdGVneSYmdGhpcy5fcG9zaXRpb25TdHJhdGVneS5hcHBseSgpfXVwZGF0ZVBvc2l0aW9uU3RyYXRlZ3kodCl7dCE9PXRoaXMuX3Bvc2l0aW9uU3RyYXRlZ3kmJih0aGlzLl9wb3NpdGlvblN0cmF0ZWd5JiZ0aGlzLl9wb3NpdGlvblN0cmF0ZWd5LmRpc3Bvc2UoKSx0aGlzLl9wb3NpdGlvblN0cmF0ZWd5PXQsdGhpcy5oYXNBdHRhY2hlZCgpJiYodC5hdHRhY2godGhpcyksdGhpcy51cGRhdGVQb3NpdGlvbigpKSl9dXBkYXRlU2l6ZSh0KXt0aGlzLl9jb25maWc9T2JqZWN0LmFzc2lnbihPYmplY3QuYXNzaWduKHt9LHRoaXMuX2NvbmZpZyksdCksdGhpcy5fdXBkYXRlRWxlbWVudFNpemUoKX1zZXREaXJlY3Rpb24odCl7dGhpcy5fY29uZmlnPU9iamVjdC5hc3NpZ24oT2JqZWN0LmFzc2lnbih7fSx0aGlzLl9jb25maWcpLHtkaXJlY3Rpb246dH0pLHRoaXMuX3VwZGF0ZUVsZW1lbnREaXJlY3Rpb24oKX1hZGRQYW5lbENsYXNzKHQpe3RoaXMuX3BhbmUmJnRoaXMuX3RvZ2dsZUNsYXNzZXModGhpcy5fcGFuZSx0LCEwKX1yZW1vdmVQYW5lbENsYXNzKHQpe3RoaXMuX3BhbmUmJnRoaXMuX3RvZ2dsZUNsYXNzZXModGhpcy5fcGFuZSx0LCExKX1nZXREaXJlY3Rpb24oKXtjb25zdCB0PXRoaXMuX2NvbmZpZy5kaXJlY3Rpb247cmV0dXJuIHQ/InN0cmluZyI9PXR5cGVvZiB0P3Q6dC52YWx1ZToibHRyIn11cGRhdGVTY3JvbGxTdHJhdGVneSh0KXt0IT09dGhpcy5fc2Nyb2xsU3RyYXRlZ3kmJih0aGlzLl9kaXNwb3NlU2Nyb2xsU3RyYXRlZ3koKSx0aGlzLl9zY3JvbGxTdHJhdGVneT10LHRoaXMuaGFzQXR0YWNoZWQoKSYmKHQuYXR0YWNoKHRoaXMpLHQuZW5hYmxlKCkpKX1fdXBkYXRlRWxlbWVudERpcmVjdGlvbigpe3RoaXMuX2hvc3Quc2V0QXR0cmlidXRlKCJkaXIiLHRoaXMuZ2V0RGlyZWN0aW9uKCkpfV91cGRhdGVFbGVtZW50U2l6ZSgpe2lmKCF0aGlzLl9wYW5lKXJldHVybjtjb25zdCB0PXRoaXMuX3BhbmUuc3R5bGU7dC53aWR0aD1Ydyh0aGlzLl9jb25maWcud2lkdGgpLHQuaGVpZ2h0PVh3KHRoaXMuX2NvbmZpZy5oZWlnaHQpLHQubWluV2lkdGg9WHcodGhpcy5fY29uZmlnLm1pbldpZHRoKSx0Lm1pbkhlaWdodD1Ydyh0aGlzLl9jb25maWcubWluSGVpZ2h0KSx0Lm1heFdpZHRoPVh3KHRoaXMuX2NvbmZpZy5tYXhXaWR0aCksdC5tYXhIZWlnaHQ9WHcodGhpcy5fY29uZmlnLm1heEhlaWdodCl9X3RvZ2dsZVBvaW50ZXJFdmVudHModCl7dGhpcy5fcGFuZS5zdHlsZS5wb2ludGVyRXZlbnRzPXQ/ImF1dG8iOiJub25lIn1fYXR0YWNoQmFja2Ryb3AoKXtjb25zdCB0PSJjZGstb3ZlcmxheS1iYWNrZHJvcC1zaG93aW5nIjt0aGlzLl9iYWNrZHJvcEVsZW1lbnQ9dGhpcy5fZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgiZGl2IiksdGhpcy5fYmFja2Ryb3BFbGVtZW50LmNsYXNzTGlzdC5hZGQoImNkay1vdmVybGF5LWJhY2tkcm9wIiksdGhpcy5fY29uZmlnLmJhY2tkcm9wQ2xhc3MmJnRoaXMuX3RvZ2dsZUNsYXNzZXModGhpcy5fYmFja2Ryb3BFbGVtZW50LHRoaXMuX2NvbmZpZy5iYWNrZHJvcENsYXNzLCEwKSx0aGlzLl9ob3N0LnBhcmVudEVsZW1lbnQuaW5zZXJ0QmVmb3JlKHRoaXMuX2JhY2tkcm9wRWxlbWVudCx0aGlzLl9ob3N0KSx0aGlzLl9iYWNrZHJvcEVsZW1lbnQuYWRkRXZlbnRMaXN0ZW5lcigiY2xpY2siLHRoaXMuX2JhY2tkcm9wQ2xpY2tIYW5kbGVyKSwidW5kZWZpbmVkIiE9dHlwZW9mIHJlcXVlc3RBbmltYXRpb25GcmFtZT90aGlzLl9uZ1pvbmUucnVuT3V0c2lkZUFuZ3VsYXIoKCgpPT57cmVxdWVzdEFuaW1hdGlvbkZyYW1lKCgoKT0+e3RoaXMuX2JhY2tkcm9wRWxlbWVudCYmdGhpcy5fYmFja2Ryb3BFbGVtZW50LmNsYXNzTGlzdC5hZGQodCl9KSl9KSk6dGhpcy5fYmFja2Ryb3BFbGVtZW50LmNsYXNzTGlzdC5hZGQodCl9X3VwZGF0ZVN0YWNraW5nT3JkZXIoKXt0aGlzLl9ob3N0Lm5leHRTaWJsaW5nJiZ0aGlzLl9ob3N0LnBhcmVudE5vZGUuYXBwZW5kQ2hpbGQodGhpcy5faG9zdCl9ZGV0YWNoQmFja2Ryb3AoKXtsZXQgdCxuPXRoaXMuX2JhY2tkcm9wRWxlbWVudDtpZighbilyZXR1cm47bGV0IGU9KCk9PntuJiYobi5yZW1vdmVFdmVudExpc3RlbmVyKCJjbGljayIsdGhpcy5fYmFja2Ryb3BDbGlja0hhbmRsZXIpLG4ucmVtb3ZlRXZlbnRMaXN0ZW5lcigidHJhbnNpdGlvbmVuZCIsZSksbi5wYXJlbnROb2RlJiZuLnBhcmVudE5vZGUucmVtb3ZlQ2hpbGQobikpLHRoaXMuX2JhY2tkcm9wRWxlbWVudD09biYmKHRoaXMuX2JhY2tkcm9wRWxlbWVudD1udWxsKSx0aGlzLl9jb25maWcuYmFja2Ryb3BDbGFzcyYmdGhpcy5fdG9nZ2xlQ2xhc3NlcyhuLHRoaXMuX2NvbmZpZy5iYWNrZHJvcENsYXNzLCExKSxjbGVhclRpbWVvdXQodCl9O24uY2xhc3NMaXN0LnJlbW92ZSgiY2RrLW92ZXJsYXktYmFja2Ryb3Atc2hvd2luZyIpLHRoaXMuX25nWm9uZS5ydW5PdXRzaWRlQW5ndWxhcigoKCk9PntuLmFkZEV2ZW50TGlzdGVuZXIoInRyYW5zaXRpb25lbmQiLGUpfSkpLG4uc3R5bGUucG9pbnRlckV2ZW50cz0ibm9uZSIsdD10aGlzLl9uZ1pvbmUucnVuT3V0c2lkZUFuZ3VsYXIoKCgpPT5zZXRUaW1lb3V0KGUsNTAwKSkpfV90b2dnbGVDbGFzc2VzKHQsbixlKXtjb25zdCBhPXQuY2xhc3NMaXN0O1p3KG4pLmZvckVhY2goKHQ9Pnt0JiYoZT9hLmFkZCh0KTphLnJlbW92ZSh0KSl9KSl9X2RldGFjaENvbnRlbnRXaGVuU3RhYmxlKCl7dGhpcy5fbmdab25lLnJ1bk91dHNpZGVBbmd1bGFyKCgoKT0+e2NvbnN0IHQ9dGhpcy5fbmdab25lLm9uU3RhYmxlLnBpcGUoZGUoV3QodGhpcy5fYXR0YWNobWVudHMsdGhpcy5fZGV0YWNobWVudHMpKSkuc3Vic2NyaWJlKCgoKT0+e3RoaXMuX3BhbmUmJnRoaXMuX2hvc3QmJjAhPT10aGlzLl9wYW5lLmNoaWxkcmVuLmxlbmd0aHx8KHRoaXMuX3BhbmUmJnRoaXMuX2NvbmZpZy5wYW5lbENsYXNzJiZ0aGlzLl90b2dnbGVDbGFzc2VzKHRoaXMuX3BhbmUsdGhpcy5fY29uZmlnLnBhbmVsQ2xhc3MsITEpLHRoaXMuX2hvc3QmJnRoaXMuX2hvc3QucGFyZW50RWxlbWVudCYmKHRoaXMuX3ByZXZpb3VzSG9zdFBhcmVudD10aGlzLl9ob3N0LnBhcmVudEVsZW1lbnQsdGhpcy5fcHJldmlvdXNIb3N0UGFyZW50LnJlbW92ZUNoaWxkKHRoaXMuX2hvc3QpKSx0LnVuc3Vic2NyaWJlKCkpfSkpfSkpfV9kaXNwb3NlU2Nyb2xsU3RyYXRlZ3koKXtjb25zdCB0PXRoaXMuX3Njcm9sbFN0cmF0ZWd5O3QmJih0LmRpc2FibGUoKSx0LmRldGFjaCYmdC5kZXRhY2goKSl9fQovKioKICAgICAqIEBsaWNlbnNlCiAgICAgKiBDb3B5cmlnaHQgR29vZ2xlIExMQyBBbGwgUmlnaHRzIFJlc2VydmVkLgogICAgICoKICAgICAqIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGFuIE1JVC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCiAgICAgKiBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlIGF0IGh0dHBzOi8vYW5ndWxhci5pby9saWNlbnNlCiAgICAgKi9jb25zdCBjej0iY2RrLW92ZXJsYXktY29ubmVjdGVkLXBvc2l0aW9uLWJvdW5kaW5nLWJveCIsc3o9LyhbQS1aYS16JV0rKSQvO2NsYXNzIGx6e2NvbnN0cnVjdG9yKHQsbixlLGEsbyl7dGhpcy5fdmlld3BvcnRSdWxlcj1uLHRoaXMuX2RvY3VtZW50PWUsdGhpcy5fcGxhdGZvcm09YSx0aGlzLl9vdmVybGF5Q29udGFpbmVyPW8sdGhpcy5fbGFzdEJvdW5kaW5nQm94U2l6ZT17d2lkdGg6MCxoZWlnaHQ6MH0sdGhpcy5faXNQdXNoZWQ9ITEsdGhpcy5fY2FuUHVzaD0hMCx0aGlzLl9ncm93QWZ0ZXJPcGVuPSExLHRoaXMuX2hhc0ZsZXhpYmxlRGltZW5zaW9ucz0hMCx0aGlzLl9wb3NpdGlvbkxvY2tlZD0hMSx0aGlzLl92aWV3cG9ydE1hcmdpbj0wLHRoaXMuX3Njcm9sbGFibGVzPVtdLHRoaXMuX3ByZWZlcnJlZFBvc2l0aW9ucz1bXSx0aGlzLl9wb3NpdGlvbkNoYW5nZXM9bmV3IHgsdGhpcy5fcmVzaXplU3Vic2NyaXB0aW9uPXMuRU1QVFksdGhpcy5fb2Zmc2V0WD0wLHRoaXMuX29mZnNldFk9MCx0aGlzLl9hcHBsaWVkUGFuZWxDbGFzc2VzPVtdLHRoaXMucG9zaXRpb25DaGFuZ2VzPXRoaXMuX3Bvc2l0aW9uQ2hhbmdlcyx0aGlzLnNldE9yaWdpbih0KX1nZXQgcG9zaXRpb25zKCl7cmV0dXJuIHRoaXMuX3ByZWZlcnJlZFBvc2l0aW9uc31hdHRhY2godCl7aWYodGhpcy5fb3ZlcmxheVJlZiYmdCE9PXRoaXMuX292ZXJsYXlSZWYmJigidW5kZWZpbmVkIj09dHlwZW9mIG5nRGV2TW9kZXx8bmdEZXZNb2RlKSl0aHJvdyBFcnJvcigiVGhpcyBwb3NpdGlvbiBzdHJhdGVneSBpcyBhbHJlYWR5IGF0dGFjaGVkIHRvIGFuIG92ZXJsYXkiKTt0aGlzLl92YWxpZGF0ZVBvc2l0aW9ucygpLHQuaG9zdEVsZW1lbnQuY2xhc3NMaXN0LmFkZChjeiksdGhpcy5fb3ZlcmxheVJlZj10LHRoaXMuX2JvdW5kaW5nQm94PXQuaG9zdEVsZW1lbnQsdGhpcy5fcGFuZT10Lm92ZXJsYXlFbGVtZW50LHRoaXMuX2lzRGlzcG9zZWQ9ITEsdGhpcy5faXNJbml0aWFsUmVuZGVyPSEwLHRoaXMuX2xhc3RQb3NpdGlvbj1udWxsLHRoaXMuX3Jlc2l6ZVN1YnNjcmlwdGlvbi51bnN1YnNjcmliZSgpLHRoaXMuX3Jlc2l6ZVN1YnNjcmlwdGlvbj10aGlzLl92aWV3cG9ydFJ1bGVyLmNoYW5nZSgpLnN1YnNjcmliZSgoKCk9Pnt0aGlzLl9pc0luaXRpYWxSZW5kZXI9ITAsdGhpcy5hcHBseSgpfSkpfWFwcGx5KCl7aWYodGhpcy5faXNEaXNwb3NlZHx8IXRoaXMuX3BsYXRmb3JtLmlzQnJvd3NlcilyZXR1cm47aWYoIXRoaXMuX2lzSW5pdGlhbFJlbmRlciYmdGhpcy5fcG9zaXRpb25Mb2NrZWQmJnRoaXMuX2xhc3RQb3NpdGlvbilyZXR1cm4gdm9pZCB0aGlzLnJlYXBwbHlMYXN0UG9zaXRpb24oKTt0aGlzLl9jbGVhclBhbmVsQ2xhc3NlcygpLHRoaXMuX3Jlc2V0T3ZlcmxheUVsZW1lbnRTdHlsZXMoKSx0aGlzLl9yZXNldEJvdW5kaW5nQm94U3R5bGVzKCksdGhpcy5fdmlld3BvcnRSZWN0PXRoaXMuX2dldE5hcnJvd2VkVmlld3BvcnRSZWN0KCksdGhpcy5fb3JpZ2luUmVjdD10aGlzLl9nZXRPcmlnaW5SZWN0KCksdGhpcy5fb3ZlcmxheVJlY3Q9dGhpcy5fcGFuZS5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKTtjb25zdCB0PXRoaXMuX29yaWdpblJlY3Qsbj10aGlzLl9vdmVybGF5UmVjdCxlPXRoaXMuX3ZpZXdwb3J0UmVjdCxhPVtdO2xldCBvO2ZvcihsZXQgciBvZiB0aGlzLl9wcmVmZXJyZWRQb3NpdGlvbnMpe2xldCBpPXRoaXMuX2dldE9yaWdpblBvaW50KHQsciksYz10aGlzLl9nZXRPdmVybGF5UG9pbnQoaSxuLHIpLHM9dGhpcy5fZ2V0T3ZlcmxheUZpdChjLG4sZSxyKTtpZihzLmlzQ29tcGxldGVseVdpdGhpblZpZXdwb3J0KXJldHVybiB0aGlzLl9pc1B1c2hlZD0hMSx2b2lkIHRoaXMuX2FwcGx5UG9zaXRpb24ocixpKTt0aGlzLl9jYW5GaXRXaXRoRmxleGlibGVEaW1lbnNpb25zKHMsYyxlKT9hLnB1c2goe3Bvc2l0aW9uOnIsb3JpZ2luOmksb3ZlcmxheVJlY3Q6bixib3VuZGluZ0JveFJlY3Q6dGhpcy5fY2FsY3VsYXRlQm91bmRpbmdCb3hSZWN0KGkscil9KTooIW98fG8ub3ZlcmxheUZpdC52aXNpYmxlQXJlYTxzLnZpc2libGVBcmVhKSYmKG89e292ZXJsYXlGaXQ6cyxvdmVybGF5UG9pbnQ6YyxvcmlnaW5Qb2ludDppLHBvc2l0aW9uOnIsb3ZlcmxheVJlY3Q6bn0pfWlmKGEubGVuZ3RoKXtsZXQgdD1udWxsLG49LTE7Zm9yKGNvbnN0IGUgb2YgYSl7Y29uc3QgYT1lLmJvdW5kaW5nQm94UmVjdC53aWR0aCplLmJvdW5kaW5nQm94UmVjdC5oZWlnaHQqKGUucG9zaXRpb24ud2VpZ2h0fHwxKTthPm4mJihuPWEsdD1lKX1yZXR1cm4gdGhpcy5faXNQdXNoZWQ9ITEsdm9pZCB0aGlzLl9hcHBseVBvc2l0aW9uKHQucG9zaXRpb24sdC5vcmlnaW4pfWlmKHRoaXMuX2NhblB1c2gpcmV0dXJuIHRoaXMuX2lzUHVzaGVkPSEwLHZvaWQgdGhpcy5fYXBwbHlQb3NpdGlvbihvLnBvc2l0aW9uLG8ub3JpZ2luUG9pbnQpO3RoaXMuX2FwcGx5UG9zaXRpb24oby5wb3NpdGlvbixvLm9yaWdpblBvaW50KX1kZXRhY2goKXt0aGlzLl9jbGVhclBhbmVsQ2xhc3NlcygpLHRoaXMuX2xhc3RQb3NpdGlvbj1udWxsLHRoaXMuX3ByZXZpb3VzUHVzaEFtb3VudD1udWxsLHRoaXMuX3Jlc2l6ZVN1YnNjcmlwdGlvbi51bnN1YnNjcmliZSgpfWRpc3Bvc2UoKXt0aGlzLl9pc0Rpc3Bvc2VkfHwodGhpcy5fYm91bmRpbmdCb3gmJm16KHRoaXMuX2JvdW5kaW5nQm94LnN0eWxlLHt0b3A6IiIsbGVmdDoiIixyaWdodDoiIixib3R0b206IiIsaGVpZ2h0OiIiLHdpZHRoOiIiLGFsaWduSXRlbXM6IiIsanVzdGlmeUNvbnRlbnQ6IiJ9KSx0aGlzLl9wYW5lJiZ0aGlzLl9yZXNldE92ZXJsYXlFbGVtZW50U3R5bGVzKCksdGhpcy5fb3ZlcmxheVJlZiYmdGhpcy5fb3ZlcmxheVJlZi5ob3N0RWxlbWVudC5jbGFzc0xpc3QucmVtb3ZlKGN6KSx0aGlzLmRldGFjaCgpLHRoaXMuX3Bvc2l0aW9uQ2hhbmdlcy5jb21wbGV0ZSgpLHRoaXMuX292ZXJsYXlSZWY9dGhpcy5fYm91bmRpbmdCb3g9bnVsbCx0aGlzLl9pc0Rpc3Bvc2VkPSEwKX1yZWFwcGx5TGFzdFBvc2l0aW9uKCl7aWYoIXRoaXMuX2lzRGlzcG9zZWQmJighdGhpcy5fcGxhdGZvcm18fHRoaXMuX3BsYXRmb3JtLmlzQnJvd3Nlcikpe3RoaXMuX29yaWdpblJlY3Q9dGhpcy5fZ2V0T3JpZ2luUmVjdCgpLHRoaXMuX292ZXJsYXlSZWN0PXRoaXMuX3BhbmUuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCksdGhpcy5fdmlld3BvcnRSZWN0PXRoaXMuX2dldE5hcnJvd2VkVmlld3BvcnRSZWN0KCk7Y29uc3QgdD10aGlzLl9sYXN0UG9zaXRpb258fHRoaXMuX3ByZWZlcnJlZFBvc2l0aW9uc1swXSxuPXRoaXMuX2dldE9yaWdpblBvaW50KHRoaXMuX29yaWdpblJlY3QsdCk7dGhpcy5fYXBwbHlQb3NpdGlvbih0LG4pfX13aXRoU2Nyb2xsYWJsZUNvbnRhaW5lcnModCl7cmV0dXJuIHRoaXMuX3Njcm9sbGFibGVzPXQsdGhpc313aXRoUG9zaXRpb25zKHQpe3JldHVybiB0aGlzLl9wcmVmZXJyZWRQb3NpdGlvbnM9dCwtMT09PXQuaW5kZXhPZih0aGlzLl9sYXN0UG9zaXRpb24pJiYodGhpcy5fbGFzdFBvc2l0aW9uPW51bGwpLHRoaXMuX3ZhbGlkYXRlUG9zaXRpb25zKCksdGhpc313aXRoVmlld3BvcnRNYXJnaW4odCl7cmV0dXJuIHRoaXMuX3ZpZXdwb3J0TWFyZ2luPXQsdGhpc313aXRoRmxleGlibGVEaW1lbnNpb25zKHQ9ITApe3JldHVybiB0aGlzLl9oYXNGbGV4aWJsZURpbWVuc2lvbnM9dCx0aGlzfXdpdGhHcm93QWZ0ZXJPcGVuKHQ9ITApe3JldHVybiB0aGlzLl9ncm93QWZ0ZXJPcGVuPXQsdGhpc313aXRoUHVzaCh0PSEwKXtyZXR1cm4gdGhpcy5fY2FuUHVzaD10LHRoaXN9d2l0aExvY2tlZFBvc2l0aW9uKHQ9ITApe3JldHVybiB0aGlzLl9wb3NpdGlvbkxvY2tlZD10LHRoaXN9c2V0T3JpZ2luKHQpe3JldHVybiB0aGlzLl9vcmlnaW49dCx0aGlzfXdpdGhEZWZhdWx0T2Zmc2V0WCh0KXtyZXR1cm4gdGhpcy5fb2Zmc2V0WD10LHRoaXN9d2l0aERlZmF1bHRPZmZzZXRZKHQpe3JldHVybiB0aGlzLl9vZmZzZXRZPXQsdGhpc313aXRoVHJhbnNmb3JtT3JpZ2luT24odCl7cmV0dXJuIHRoaXMuX3RyYW5zZm9ybU9yaWdpblNlbGVjdG9yPXQsdGhpc31fZ2V0T3JpZ2luUG9pbnQodCxuKXtsZXQgZSxhO2lmKCJjZW50ZXIiPT1uLm9yaWdpblgpZT10LmxlZnQrdC53aWR0aC8yO2Vsc2V7Y29uc3QgYT10aGlzLl9pc1J0bCgpP3QucmlnaHQ6dC5sZWZ0LG89dGhpcy5faXNSdGwoKT90LmxlZnQ6dC5yaWdodDtlPSJzdGFydCI9PW4ub3JpZ2luWD9hOm99cmV0dXJuIGE9ImNlbnRlciI9PW4ub3JpZ2luWT90LnRvcCt0LmhlaWdodC8yOiJ0b3AiPT1uLm9yaWdpblk/dC50b3A6dC5ib3R0b20se3g6ZSx5OmF9fV9nZXRPdmVybGF5UG9pbnQodCxuLGUpe2xldCBhLG87cmV0dXJuIGE9ImNlbnRlciI9PWUub3ZlcmxheVg/LW4ud2lkdGgvMjoic3RhcnQiPT09ZS5vdmVybGF5WD90aGlzLl9pc1J0bCgpPy1uLndpZHRoOjA6dGhpcy5faXNSdGwoKT8wOi1uLndpZHRoLG89ImNlbnRlciI9PWUub3ZlcmxheVk/LW4uaGVpZ2h0LzI6InRvcCI9PWUub3ZlcmxheVk/MDotbi5oZWlnaHQse3g6dC54K2EseTp0Lnkrb319X2dldE92ZXJsYXlGaXQodCxuLGUsYSl7bGV0e3g6byx5OnJ9PXQsaT10aGlzLl9nZXRPZmZzZXQoYSwieCIpLGM9dGhpcy5fZ2V0T2Zmc2V0KGEsInkiKTtpJiYobys9aSksYyYmKHIrPWMpO2xldCBzPTAtcixsPXIrbi5oZWlnaHQtZS5oZWlnaHQsbT10aGlzLl9zdWJ0cmFjdE92ZXJmbG93cyhuLndpZHRoLDAtbyxvK24ud2lkdGgtZS53aWR0aCksZD10aGlzLl9zdWJ0cmFjdE92ZXJmbG93cyhuLmhlaWdodCxzLGwpLGc9bSpkO3JldHVybnt2aXNpYmxlQXJlYTpnLGlzQ29tcGxldGVseVdpdGhpblZpZXdwb3J0Om4ud2lkdGgqbi5oZWlnaHQ9PT1nLGZpdHNJblZpZXdwb3J0VmVydGljYWxseTpkPT09bi5oZWlnaHQsZml0c0luVmlld3BvcnRIb3Jpem9udGFsbHk6bT09bi53aWR0aH19X2NhbkZpdFdpdGhGbGV4aWJsZURpbWVuc2lvbnModCxuLGUpe2lmKHRoaXMuX2hhc0ZsZXhpYmxlRGltZW5zaW9ucyl7Y29uc3QgYT1lLmJvdHRvbS1uLnksbz1lLnJpZ2h0LW4ueCxyPWR6KHRoaXMuX292ZXJsYXlSZWYuZ2V0Q29uZmlnKCkubWluSGVpZ2h0KSxpPWR6KHRoaXMuX292ZXJsYXlSZWYuZ2V0Q29uZmlnKCkubWluV2lkdGgpLGM9dC5maXRzSW5WaWV3cG9ydEhvcml6b250YWxseXx8bnVsbCE9aSYmaTw9bztyZXR1cm4odC5maXRzSW5WaWV3cG9ydFZlcnRpY2FsbHl8fG51bGwhPXImJnI8PWEpJiZjfXJldHVybiExfV9wdXNoT3ZlcmxheU9uU2NyZWVuKHQsbixlKXtpZih0aGlzLl9wcmV2aW91c1B1c2hBbW91bnQmJnRoaXMuX3Bvc2l0aW9uTG9ja2VkKXJldHVybnt4OnQueCt0aGlzLl9wcmV2aW91c1B1c2hBbW91bnQueCx5OnQueSt0aGlzLl9wcmV2aW91c1B1c2hBbW91bnQueX07Y29uc3QgYT10aGlzLl92aWV3cG9ydFJlY3Qsbz1NYXRoLm1heCh0Lngrbi53aWR0aC1hLndpZHRoLDApLHI9TWF0aC5tYXgodC55K24uaGVpZ2h0LWEuaGVpZ2h0LDApLGk9TWF0aC5tYXgoYS50b3AtZS50b3AtdC55LDApLGM9TWF0aC5tYXgoYS5sZWZ0LWUubGVmdC10LngsMCk7bGV0IHM9MCxsPTA7cmV0dXJuIHM9bi53aWR0aDw9YS53aWR0aD9jfHwtbzp0Lng8dGhpcy5fdmlld3BvcnRNYXJnaW4/YS5sZWZ0LWUubGVmdC10Lng6MCxsPW4uaGVpZ2h0PD1hLmhlaWdodD9pfHwtcjp0Lnk8dGhpcy5fdmlld3BvcnRNYXJnaW4/YS50b3AtZS50b3AtdC55OjAsdGhpcy5fcHJldmlvdXNQdXNoQW1vdW50PXt4OnMseTpsfSx7eDp0Lngrcyx5OnQueStsfX1fYXBwbHlQb3NpdGlvbih0LG4pe2lmKHRoaXMuX3NldFRyYW5zZm9ybU9yaWdpbih0KSx0aGlzLl9zZXRPdmVybGF5RWxlbWVudFN0eWxlcyhuLHQpLHRoaXMuX3NldEJvdW5kaW5nQm94U3R5bGVzKG4sdCksdC5wYW5lbENsYXNzJiZ0aGlzLl9hZGRQYW5lbENsYXNzZXModC5wYW5lbENsYXNzKSx0aGlzLl9sYXN0UG9zaXRpb249dCx0aGlzLl9wb3NpdGlvbkNoYW5nZXMub2JzZXJ2ZXJzLmxlbmd0aCl7Y29uc3Qgbj10aGlzLl9nZXRTY3JvbGxWaXNpYmlsaXR5KCksZT1uZXcgS0EodCxuKTt0aGlzLl9wb3NpdGlvbkNoYW5nZXMubmV4dChlKX10aGlzLl9pc0luaXRpYWxSZW5kZXI9ITF9X3NldFRyYW5zZm9ybU9yaWdpbih0KXtpZighdGhpcy5fdHJhbnNmb3JtT3JpZ2luU2VsZWN0b3IpcmV0dXJuO2NvbnN0IG49dGhpcy5fYm91bmRpbmdCb3gucXVlcnlTZWxlY3RvckFsbCh0aGlzLl90cmFuc2Zvcm1PcmlnaW5TZWxlY3Rvcik7bGV0IGUsYT10Lm92ZXJsYXlZO2U9ImNlbnRlciI9PT10Lm92ZXJsYXlYPyJjZW50ZXIiOnRoaXMuX2lzUnRsKCk/InN0YXJ0Ij09PXQub3ZlcmxheVg/InJpZ2h0IjoibGVmdCI6InN0YXJ0Ij09PXQub3ZlcmxheVg/ImxlZnQiOiJyaWdodCI7Zm9yKGxldCB0PTA7dDxuLmxlbmd0aDt0Kyspblt0XS5zdHlsZS50cmFuc2Zvcm1PcmlnaW49YCR7ZX0gJHthfWB9X2NhbGN1bGF0ZUJvdW5kaW5nQm94UmVjdCh0LG4pe2NvbnN0IGU9dGhpcy5fdmlld3BvcnRSZWN0LGE9dGhpcy5faXNSdGwoKTtsZXQgbyxyLGksYyxzLGw7aWYoInRvcCI9PT1uLm92ZXJsYXlZKXI9dC55LG89ZS5oZWlnaHQtcit0aGlzLl92aWV3cG9ydE1hcmdpbjtlbHNlIGlmKCJib3R0b20iPT09bi5vdmVybGF5WSlpPWUuaGVpZ2h0LXQueSsyKnRoaXMuX3ZpZXdwb3J0TWFyZ2luLG89ZS5oZWlnaHQtaSt0aGlzLl92aWV3cG9ydE1hcmdpbjtlbHNle2NvbnN0IG49TWF0aC5taW4oZS5ib3R0b20tdC55K2UudG9wLHQueSksYT10aGlzLl9sYXN0Qm91bmRpbmdCb3hTaXplLmhlaWdodDtvPTIqbixyPXQueS1uLG8+YSYmIXRoaXMuX2lzSW5pdGlhbFJlbmRlciYmIXRoaXMuX2dyb3dBZnRlck9wZW4mJihyPXQueS1hLzIpfWlmKCJlbmQiPT09bi5vdmVybGF5WCYmIWF8fCJzdGFydCI9PT1uLm92ZXJsYXlYJiZhKWw9ZS53aWR0aC10LngrdGhpcy5fdmlld3BvcnRNYXJnaW4sYz10LngtdGhpcy5fdmlld3BvcnRNYXJnaW47ZWxzZSBpZigic3RhcnQiPT09bi5vdmVybGF5WCYmIWF8fCJlbmQiPT09bi5vdmVybGF5WCYmYSlzPXQueCxjPWUucmlnaHQtdC54O2Vsc2V7Y29uc3Qgbj1NYXRoLm1pbihlLnJpZ2h0LXQueCtlLmxlZnQsdC54KSxhPXRoaXMuX2xhc3RCb3VuZGluZ0JveFNpemUud2lkdGg7Yz0yKm4scz10LngtbixjPmEmJiF0aGlzLl9pc0luaXRpYWxSZW5kZXImJiF0aGlzLl9ncm93QWZ0ZXJPcGVuJiYocz10LngtYS8yKX1yZXR1cm57dG9wOnIsbGVmdDpzLGJvdHRvbTppLHJpZ2h0Omwsd2lkdGg6YyxoZWlnaHQ6b319X3NldEJvdW5kaW5nQm94U3R5bGVzKHQsbil7Y29uc3QgZT10aGlzLl9jYWxjdWxhdGVCb3VuZGluZ0JveFJlY3QodCxuKTt0aGlzLl9pc0luaXRpYWxSZW5kZXJ8fHRoaXMuX2dyb3dBZnRlck9wZW58fChlLmhlaWdodD1NYXRoLm1pbihlLmhlaWdodCx0aGlzLl9sYXN0Qm91bmRpbmdCb3hTaXplLmhlaWdodCksZS53aWR0aD1NYXRoLm1pbihlLndpZHRoLHRoaXMuX2xhc3RCb3VuZGluZ0JveFNpemUud2lkdGgpKTtjb25zdCBhPXt9O2lmKHRoaXMuX2hhc0V4YWN0UG9zaXRpb24oKSlhLnRvcD1hLmxlZnQ9IjAiLGEuYm90dG9tPWEucmlnaHQ9YS5tYXhIZWlnaHQ9YS5tYXhXaWR0aD0iIixhLndpZHRoPWEuaGVpZ2h0PSIxMDAlIjtlbHNle2NvbnN0IHQ9dGhpcy5fb3ZlcmxheVJlZi5nZXRDb25maWcoKS5tYXhIZWlnaHQsbz10aGlzLl9vdmVybGF5UmVmLmdldENvbmZpZygpLm1heFdpZHRoO2EuaGVpZ2h0PVh3KGUuaGVpZ2h0KSxhLnRvcD1YdyhlLnRvcCksYS5ib3R0b209WHcoZS5ib3R0b20pLGEud2lkdGg9WHcoZS53aWR0aCksYS5sZWZ0PVh3KGUubGVmdCksYS5yaWdodD1YdyhlLnJpZ2h0KSxhLmFsaWduSXRlbXM9ImNlbnRlciI9PT1uLm92ZXJsYXlYPyJjZW50ZXIiOiJlbmQiPT09bi5vdmVybGF5WD8iZmxleC1lbmQiOiJmbGV4LXN0YXJ0IixhLmp1c3RpZnlDb250ZW50PSJjZW50ZXIiPT09bi5vdmVybGF5WT8iY2VudGVyIjoiYm90dG9tIj09PW4ub3ZlcmxheVk/ImZsZXgtZW5kIjoiZmxleC1zdGFydCIsdCYmKGEubWF4SGVpZ2h0PVh3KHQpKSxvJiYoYS5tYXhXaWR0aD1YdyhvKSl9dGhpcy5fbGFzdEJvdW5kaW5nQm94U2l6ZT1lLG16KHRoaXMuX2JvdW5kaW5nQm94LnN0eWxlLGEpfV9yZXNldEJvdW5kaW5nQm94U3R5bGVzKCl7bXoodGhpcy5fYm91bmRpbmdCb3guc3R5bGUse3RvcDoiMCIsbGVmdDoiMCIscmlnaHQ6IjAiLGJvdHRvbToiMCIsaGVpZ2h0OiIiLHdpZHRoOiIiLGFsaWduSXRlbXM6IiIsanVzdGlmeUNvbnRlbnQ6IiJ9KX1fcmVzZXRPdmVybGF5RWxlbWVudFN0eWxlcygpe216KHRoaXMuX3BhbmUuc3R5bGUse3RvcDoiIixsZWZ0OiIiLGJvdHRvbToiIixyaWdodDoiIixwb3NpdGlvbjoiIix0cmFuc2Zvcm06IiJ9KX1fc2V0T3ZlcmxheUVsZW1lbnRTdHlsZXModCxuKXtjb25zdCBlPXt9LGE9dGhpcy5faGFzRXhhY3RQb3NpdGlvbigpLG89dGhpcy5faGFzRmxleGlibGVEaW1lbnNpb25zLHI9dGhpcy5fb3ZlcmxheVJlZi5nZXRDb25maWcoKTtpZihhKXtjb25zdCBhPXRoaXMuX3ZpZXdwb3J0UnVsZXIuZ2V0Vmlld3BvcnRTY3JvbGxQb3NpdGlvbigpO216KGUsdGhpcy5fZ2V0RXhhY3RPdmVybGF5WShuLHQsYSkpLG16KGUsdGhpcy5fZ2V0RXhhY3RPdmVybGF5WChuLHQsYSkpfWVsc2UgZS5wb3NpdGlvbj0ic3RhdGljIjtsZXQgaT0iIixjPXRoaXMuX2dldE9mZnNldChuLCJ4Iikscz10aGlzLl9nZXRPZmZzZXQobiwieSIpO2MmJihpKz1gdHJhbnNsYXRlWCgke2N9cHgpIGApLHMmJihpKz1gdHJhbnNsYXRlWSgke3N9cHgpYCksZS50cmFuc2Zvcm09aS50cmltKCksci5tYXhIZWlnaHQmJihhP2UubWF4SGVpZ2h0PVh3KHIubWF4SGVpZ2h0KTpvJiYoZS5tYXhIZWlnaHQ9IiIpKSxyLm1heFdpZHRoJiYoYT9lLm1heFdpZHRoPVh3KHIubWF4V2lkdGgpOm8mJihlLm1heFdpZHRoPSIiKSksbXoodGhpcy5fcGFuZS5zdHlsZSxlKX1fZ2V0RXhhY3RPdmVybGF5WSh0LG4sZSl7bGV0IGE9e3RvcDoiIixib3R0b206IiJ9LG89dGhpcy5fZ2V0T3ZlcmxheVBvaW50KG4sdGhpcy5fb3ZlcmxheVJlY3QsdCk7dGhpcy5faXNQdXNoZWQmJihvPXRoaXMuX3B1c2hPdmVybGF5T25TY3JlZW4obyx0aGlzLl9vdmVybGF5UmVjdCxlKSk7bGV0IHI9dGhpcy5fb3ZlcmxheUNvbnRhaW5lci5nZXRDb250YWluZXJFbGVtZW50KCkuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCkudG9wO3JldHVybiBvLnktPXIsImJvdHRvbSI9PT10Lm92ZXJsYXlZP2EuYm90dG9tPXRoaXMuX2RvY3VtZW50LmRvY3VtZW50RWxlbWVudC5jbGllbnRIZWlnaHQtKG8ueSt0aGlzLl9vdmVybGF5UmVjdC5oZWlnaHQpKyJweCI6YS50b3A9WHcoby55KSxhfV9nZXRFeGFjdE92ZXJsYXlYKHQsbixlKXtsZXQgYSxvPXtsZWZ0OiIiLHJpZ2h0OiIifSxyPXRoaXMuX2dldE92ZXJsYXlQb2ludChuLHRoaXMuX292ZXJsYXlSZWN0LHQpO3JldHVybiB0aGlzLl9pc1B1c2hlZCYmKHI9dGhpcy5fcHVzaE92ZXJsYXlPblNjcmVlbihyLHRoaXMuX292ZXJsYXlSZWN0LGUpKSxhPXRoaXMuX2lzUnRsKCk/ImVuZCI9PT10Lm92ZXJsYXlYPyJsZWZ0IjoicmlnaHQiOiJlbmQiPT09dC5vdmVybGF5WD8icmlnaHQiOiJsZWZ0IiwicmlnaHQiPT09YT9vLnJpZ2h0PXRoaXMuX2RvY3VtZW50LmRvY3VtZW50RWxlbWVudC5jbGllbnRXaWR0aC0oci54K3RoaXMuX292ZXJsYXlSZWN0LndpZHRoKSsicHgiOm8ubGVmdD1YdyhyLngpLG99X2dldFNjcm9sbFZpc2liaWxpdHkoKXtjb25zdCB0PXRoaXMuX2dldE9yaWdpblJlY3QoKSxuPXRoaXMuX3BhbmUuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCksZT10aGlzLl9zY3JvbGxhYmxlcy5tYXAoKHQ9PnQuZ2V0RWxlbWVudFJlZigpLm5hdGl2ZUVsZW1lbnQuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCkpKTtyZXR1cm57aXNPcmlnaW5DbGlwcGVkOllBKHQsZSksaXNPcmlnaW5PdXRzaWRlVmlldzpHQSh0LGUpLGlzT3ZlcmxheUNsaXBwZWQ6WUEobixlKSxpc092ZXJsYXlPdXRzaWRlVmlldzpHQShuLGUpfX1fc3VidHJhY3RPdmVyZmxvd3ModCwuLi5uKXtyZXR1cm4gbi5yZWR1Y2UoKCh0LG4pPT50LU1hdGgubWF4KG4sMCkpLHQpfV9nZXROYXJyb3dlZFZpZXdwb3J0UmVjdCgpe2NvbnN0IHQ9dGhpcy5fZG9jdW1lbnQuZG9jdW1lbnRFbGVtZW50LmNsaWVudFdpZHRoLG49dGhpcy5fZG9jdW1lbnQuZG9jdW1lbnRFbGVtZW50LmNsaWVudEhlaWdodCxlPXRoaXMuX3ZpZXdwb3J0UnVsZXIuZ2V0Vmlld3BvcnRTY3JvbGxQb3NpdGlvbigpO3JldHVybnt0b3A6ZS50b3ArdGhpcy5fdmlld3BvcnRNYXJnaW4sbGVmdDplLmxlZnQrdGhpcy5fdmlld3BvcnRNYXJnaW4scmlnaHQ6ZS5sZWZ0K3QtdGhpcy5fdmlld3BvcnRNYXJnaW4sYm90dG9tOmUudG9wK24tdGhpcy5fdmlld3BvcnRNYXJnaW4sd2lkdGg6dC0yKnRoaXMuX3ZpZXdwb3J0TWFyZ2luLGhlaWdodDpuLTIqdGhpcy5fdmlld3BvcnRNYXJnaW59fV9pc1J0bCgpe3JldHVybiJydGwiPT09dGhpcy5fb3ZlcmxheVJlZi5nZXREaXJlY3Rpb24oKX1faGFzRXhhY3RQb3NpdGlvbigpe3JldHVybiF0aGlzLl9oYXNGbGV4aWJsZURpbWVuc2lvbnN8fHRoaXMuX2lzUHVzaGVkfV9nZXRPZmZzZXQodCxuKXtyZXR1cm4ieCI9PT1uP251bGw9PXQub2Zmc2V0WD90aGlzLl9vZmZzZXRYOnQub2Zmc2V0WDpudWxsPT10Lm9mZnNldFk/dGhpcy5fb2Zmc2V0WTp0Lm9mZnNldFl9X3ZhbGlkYXRlUG9zaXRpb25zKCl7aWYoInVuZGVmaW5lZCI9PXR5cGVvZiBuZ0Rldk1vZGV8fG5nRGV2TW9kZSl7aWYoIXRoaXMuX3ByZWZlcnJlZFBvc2l0aW9ucy5sZW5ndGgpdGhyb3cgRXJyb3IoIkZsZXhpYmxlQ29ubmVjdGVkUG9zaXRpb25TdHJhdGVneTogQXQgbGVhc3Qgb25lIHBvc2l0aW9uIGlzIHJlcXVpcmVkLiIpO3RoaXMuX3ByZWZlcnJlZFBvc2l0aW9ucy5mb3JFYWNoKCh0PT57dHooIm9yaWdpblgiLHQub3JpZ2luWCksJEEoIm9yaWdpblkiLHQub3JpZ2luWSksdHooIm92ZXJsYXlYIix0Lm92ZXJsYXlYKSwkQSgib3ZlcmxheVkiLHQub3ZlcmxheVkpfSkpfX1fYWRkUGFuZWxDbGFzc2VzKHQpe3RoaXMuX3BhbmUmJlp3KHQpLmZvckVhY2goKHQ9PnsiIiE9PXQmJi0xPT09dGhpcy5fYXBwbGllZFBhbmVsQ2xhc3Nlcy5pbmRleE9mKHQpJiYodGhpcy5fYXBwbGllZFBhbmVsQ2xhc3Nlcy5wdXNoKHQpLHRoaXMuX3BhbmUuY2xhc3NMaXN0LmFkZCh0KSl9KSl9X2NsZWFyUGFuZWxDbGFzc2VzKCl7dGhpcy5fcGFuZSYmKHRoaXMuX2FwcGxpZWRQYW5lbENsYXNzZXMuZm9yRWFjaCgodD0+e3RoaXMuX3BhbmUuY2xhc3NMaXN0LnJlbW92ZSh0KX0pKSx0aGlzLl9hcHBsaWVkUGFuZWxDbGFzc2VzPVtdKX1fZ2V0T3JpZ2luUmVjdCgpe2NvbnN0IHQ9dGhpcy5fb3JpZ2luO2lmKHQgaW5zdGFuY2VvZiB4dSlyZXR1cm4gdC5uYXRpdmVFbGVtZW50LmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpO2lmKHQgaW5zdGFuY2VvZiBFbGVtZW50KXJldHVybiB0LmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpO2NvbnN0IG49dC53aWR0aHx8MCxlPXQuaGVpZ2h0fHwwO3JldHVybnt0b3A6dC55LGJvdHRvbTp0LnkrZSxsZWZ0OnQueCxyaWdodDp0LngrbixoZWlnaHQ6ZSx3aWR0aDpufX19ZnVuY3Rpb24gbXoodCxuKXtmb3IobGV0IGUgaW4gbiluLmhhc093blByb3BlcnR5KGUpJiYodFtlXT1uW2VdKTtyZXR1cm4gdH1mdW5jdGlvbiBkeih0KXtpZigibnVtYmVyIiE9dHlwZW9mIHQmJm51bGwhPXQpe2NvbnN0W24sZV09dC5zcGxpdChzeik7cmV0dXJuIGUmJiJweCIhPT1lP251bGw6cGFyc2VGbG9hdChuKX1yZXR1cm4gdHx8bnVsbH0KLyoqCiAgICAgKiBAbGljZW5zZQogICAgICogQ29weXJpZ2h0IEdvb2dsZSBMTEMgQWxsIFJpZ2h0cyBSZXNlcnZlZC4KICAgICAqCiAgICAgKiBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhbiBNSVQtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQogICAgICogZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZSBhdCBodHRwczovL2FuZ3VsYXIuaW8vbGljZW5zZQogICAgICovY2xhc3MgZ3p7Y29uc3RydWN0b3IodCxuLGUsYSxvLHIsaSl7dGhpcy5fcHJlZmVycmVkUG9zaXRpb25zPVtdLHRoaXMuX3Bvc2l0aW9uU3RyYXRlZ3k9bmV3IGx6KGUsYSxvLHIsaSkud2l0aEZsZXhpYmxlRGltZW5zaW9ucyghMSkud2l0aFB1c2goITEpLndpdGhWaWV3cG9ydE1hcmdpbigwKSx0aGlzLndpdGhGYWxsYmFja1Bvc2l0aW9uKHQsbiksdGhpcy5vblBvc2l0aW9uQ2hhbmdlPXRoaXMuX3Bvc2l0aW9uU3RyYXRlZ3kucG9zaXRpb25DaGFuZ2VzfWdldCBwb3NpdGlvbnMoKXtyZXR1cm4gdGhpcy5fcHJlZmVycmVkUG9zaXRpb25zfWF0dGFjaCh0KXt0aGlzLl9vdmVybGF5UmVmPXQsdGhpcy5fcG9zaXRpb25TdHJhdGVneS5hdHRhY2godCksdGhpcy5fZGlyZWN0aW9uJiYodC5zZXREaXJlY3Rpb24odGhpcy5fZGlyZWN0aW9uKSx0aGlzLl9kaXJlY3Rpb249bnVsbCl9ZGlzcG9zZSgpe3RoaXMuX3Bvc2l0aW9uU3RyYXRlZ3kuZGlzcG9zZSgpfWRldGFjaCgpe3RoaXMuX3Bvc2l0aW9uU3RyYXRlZ3kuZGV0YWNoKCl9YXBwbHkoKXt0aGlzLl9wb3NpdGlvblN0cmF0ZWd5LmFwcGx5KCl9cmVjYWxjdWxhdGVMYXN0UG9zaXRpb24oKXt0aGlzLl9wb3NpdGlvblN0cmF0ZWd5LnJlYXBwbHlMYXN0UG9zaXRpb24oKX13aXRoU2Nyb2xsYWJsZUNvbnRhaW5lcnModCl7dGhpcy5fcG9zaXRpb25TdHJhdGVneS53aXRoU2Nyb2xsYWJsZUNvbnRhaW5lcnModCl9d2l0aEZhbGxiYWNrUG9zaXRpb24odCxuLGUsYSl7Y29uc3Qgbz1uZXcgSkEodCxuLGUsYSk7cmV0dXJuIHRoaXMuX3ByZWZlcnJlZFBvc2l0aW9ucy5wdXNoKG8pLHRoaXMuX3Bvc2l0aW9uU3RyYXRlZ3kud2l0aFBvc2l0aW9ucyh0aGlzLl9wcmVmZXJyZWRQb3NpdGlvbnMpLHRoaXN9d2l0aERpcmVjdGlvbih0KXtyZXR1cm4gdGhpcy5fb3ZlcmxheVJlZj90aGlzLl9vdmVybGF5UmVmLnNldERpcmVjdGlvbih0KTp0aGlzLl9kaXJlY3Rpb249dCx0aGlzfXdpdGhPZmZzZXRYKHQpe3JldHVybiB0aGlzLl9wb3NpdGlvblN0cmF0ZWd5LndpdGhEZWZhdWx0T2Zmc2V0WCh0KSx0aGlzfXdpdGhPZmZzZXRZKHQpe3JldHVybiB0aGlzLl9wb3NpdGlvblN0cmF0ZWd5LndpdGhEZWZhdWx0T2Zmc2V0WSh0KSx0aGlzfXdpdGhMb2NrZWRQb3NpdGlvbih0KXtyZXR1cm4gdGhpcy5fcG9zaXRpb25TdHJhdGVneS53aXRoTG9ja2VkUG9zaXRpb24odCksdGhpc313aXRoUG9zaXRpb25zKHQpe3JldHVybiB0aGlzLl9wcmVmZXJyZWRQb3NpdGlvbnM9dC5zbGljZSgpLHRoaXMuX3Bvc2l0aW9uU3RyYXRlZ3kud2l0aFBvc2l0aW9ucyh0aGlzLl9wcmVmZXJyZWRQb3NpdGlvbnMpLHRoaXN9c2V0T3JpZ2luKHQpe3JldHVybiB0aGlzLl9wb3NpdGlvblN0cmF0ZWd5LnNldE9yaWdpbih0KSx0aGlzfX0KLyoqCiAgICAgKiBAbGljZW5zZQogICAgICogQ29weXJpZ2h0IEdvb2dsZSBMTEMgQWxsIFJpZ2h0cyBSZXNlcnZlZC4KICAgICAqCiAgICAgKiBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhbiBNSVQtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQogICAgICogZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZSBhdCBodHRwczovL2FuZ3VsYXIuaW8vbGljZW5zZQogICAgICovY29uc3QgcHo9ImNkay1nbG9iYWwtb3ZlcmxheS13cmFwcGVyIjtjbGFzcyBientjb25zdHJ1Y3Rvcigpe3RoaXMuX2Nzc1Bvc2l0aW9uPSJzdGF0aWMiLHRoaXMuX3RvcE9mZnNldD0iIix0aGlzLl9ib3R0b21PZmZzZXQ9IiIsdGhpcy5fbGVmdE9mZnNldD0iIix0aGlzLl9yaWdodE9mZnNldD0iIix0aGlzLl9hbGlnbkl0ZW1zPSIiLHRoaXMuX2p1c3RpZnlDb250ZW50PSIiLHRoaXMuX3dpZHRoPSIiLHRoaXMuX2hlaWdodD0iIn1hdHRhY2godCl7Y29uc3Qgbj10LmdldENvbmZpZygpO3RoaXMuX292ZXJsYXlSZWY9dCx0aGlzLl93aWR0aCYmIW4ud2lkdGgmJnQudXBkYXRlU2l6ZSh7d2lkdGg6dGhpcy5fd2lkdGh9KSx0aGlzLl9oZWlnaHQmJiFuLmhlaWdodCYmdC51cGRhdGVTaXplKHtoZWlnaHQ6dGhpcy5faGVpZ2h0fSksdC5ob3N0RWxlbWVudC5jbGFzc0xpc3QuYWRkKHB6KSx0aGlzLl9pc0Rpc3Bvc2VkPSExfXRvcCh0PSIiKXtyZXR1cm4gdGhpcy5fYm90dG9tT2Zmc2V0PSIiLHRoaXMuX3RvcE9mZnNldD10LHRoaXMuX2FsaWduSXRlbXM9ImZsZXgtc3RhcnQiLHRoaXN9bGVmdCh0PSIiKXtyZXR1cm4gdGhpcy5fcmlnaHRPZmZzZXQ9IiIsdGhpcy5fbGVmdE9mZnNldD10LHRoaXMuX2p1c3RpZnlDb250ZW50PSJmbGV4LXN0YXJ0Iix0aGlzfWJvdHRvbSh0PSIiKXtyZXR1cm4gdGhpcy5fdG9wT2Zmc2V0PSIiLHRoaXMuX2JvdHRvbU9mZnNldD10LHRoaXMuX2FsaWduSXRlbXM9ImZsZXgtZW5kIix0aGlzfXJpZ2h0KHQ9IiIpe3JldHVybiB0aGlzLl9sZWZ0T2Zmc2V0PSIiLHRoaXMuX3JpZ2h0T2Zmc2V0PXQsdGhpcy5fanVzdGlmeUNvbnRlbnQ9ImZsZXgtZW5kIix0aGlzfXdpZHRoKHQ9IiIpe3JldHVybiB0aGlzLl9vdmVybGF5UmVmP3RoaXMuX292ZXJsYXlSZWYudXBkYXRlU2l6ZSh7d2lkdGg6dH0pOnRoaXMuX3dpZHRoPXQsdGhpc31oZWlnaHQodD0iIil7cmV0dXJuIHRoaXMuX292ZXJsYXlSZWY/dGhpcy5fb3ZlcmxheVJlZi51cGRhdGVTaXplKHtoZWlnaHQ6dH0pOnRoaXMuX2hlaWdodD10LHRoaXN9Y2VudGVySG9yaXpvbnRhbGx5KHQ9IiIpe3JldHVybiB0aGlzLmxlZnQodCksdGhpcy5fanVzdGlmeUNvbnRlbnQ9ImNlbnRlciIsdGhpc31jZW50ZXJWZXJ0aWNhbGx5KHQ9IiIpe3JldHVybiB0aGlzLnRvcCh0KSx0aGlzLl9hbGlnbkl0ZW1zPSJjZW50ZXIiLHRoaXN9YXBwbHkoKXtpZighdGhpcy5fb3ZlcmxheVJlZnx8IXRoaXMuX292ZXJsYXlSZWYuaGFzQXR0YWNoZWQoKSlyZXR1cm47Y29uc3QgdD10aGlzLl9vdmVybGF5UmVmLm92ZXJsYXlFbGVtZW50LnN0eWxlLG49dGhpcy5fb3ZlcmxheVJlZi5ob3N0RWxlbWVudC5zdHlsZSxlPXRoaXMuX292ZXJsYXlSZWYuZ2V0Q29uZmlnKCkse3dpZHRoOmEsaGVpZ2h0Om8sbWF4V2lkdGg6cixtYXhIZWlnaHQ6aX09ZSxjPSEoIjEwMCUiIT09YSYmIjEwMHZ3IiE9PWF8fHImJiIxMDAlIiE9PXImJiIxMDB2dyIhPT1yKSxzPSEoIjEwMCUiIT09byYmIjEwMHZoIiE9PW98fGkmJiIxMDAlIiE9PWkmJiIxMDB2aCIhPT1pKTt0LnBvc2l0aW9uPXRoaXMuX2Nzc1Bvc2l0aW9uLHQubWFyZ2luTGVmdD1jPyIwIjp0aGlzLl9sZWZ0T2Zmc2V0LHQubWFyZ2luVG9wPXM/IjAiOnRoaXMuX3RvcE9mZnNldCx0Lm1hcmdpbkJvdHRvbT10aGlzLl9ib3R0b21PZmZzZXQsdC5tYXJnaW5SaWdodD10aGlzLl9yaWdodE9mZnNldCxjP24uanVzdGlmeUNvbnRlbnQ9ImZsZXgtc3RhcnQiOiJjZW50ZXIiPT09dGhpcy5fanVzdGlmeUNvbnRlbnQ/bi5qdXN0aWZ5Q29udGVudD0iY2VudGVyIjoicnRsIj09PXRoaXMuX292ZXJsYXlSZWYuZ2V0Q29uZmlnKCkuZGlyZWN0aW9uPyJmbGV4LXN0YXJ0Ij09PXRoaXMuX2p1c3RpZnlDb250ZW50P24uanVzdGlmeUNvbnRlbnQ9ImZsZXgtZW5kIjoiZmxleC1lbmQiPT09dGhpcy5fanVzdGlmeUNvbnRlbnQmJihuLmp1c3RpZnlDb250ZW50PSJmbGV4LXN0YXJ0Iik6bi5qdXN0aWZ5Q29udGVudD10aGlzLl9qdXN0aWZ5Q29udGVudCxuLmFsaWduSXRlbXM9cz8iZmxleC1zdGFydCI6dGhpcy5fYWxpZ25JdGVtc31kaXNwb3NlKCl7aWYodGhpcy5faXNEaXNwb3NlZHx8IXRoaXMuX292ZXJsYXlSZWYpcmV0dXJuO2NvbnN0IHQ9dGhpcy5fb3ZlcmxheVJlZi5vdmVybGF5RWxlbWVudC5zdHlsZSxuPXRoaXMuX292ZXJsYXlSZWYuaG9zdEVsZW1lbnQsZT1uLnN0eWxlO24uY2xhc3NMaXN0LnJlbW92ZShweiksZS5qdXN0aWZ5Q29udGVudD1lLmFsaWduSXRlbXM9dC5tYXJnaW5Ub3A9dC5tYXJnaW5Cb3R0b209dC5tYXJnaW5MZWZ0PXQubWFyZ2luUmlnaHQ9dC5wb3NpdGlvbj0iIix0aGlzLl9vdmVybGF5UmVmPW51bGwsdGhpcy5faXNEaXNwb3NlZD0hMH19Ci8qKgogICAgICogQGxpY2Vuc2UKICAgICAqIENvcHlyaWdodCBHb29nbGUgTExDIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCiAgICAgKgogICAgICogVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYW4gTUlULXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKICAgICAqIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUgYXQgaHR0cHM6Ly9hbmd1bGFyLmlvL2xpY2Vuc2UKICAgICAqL2NsYXNzIHV6e2NvbnN0cnVjdG9yKHQsbixlLGEpe3RoaXMuX3ZpZXdwb3J0UnVsZXI9dCx0aGlzLl9kb2N1bWVudD1uLHRoaXMuX3BsYXRmb3JtPWUsdGhpcy5fb3ZlcmxheUNvbnRhaW5lcj1hfWdsb2JhbCgpe3JldHVybiBuZXcgYnp9Y29ubmVjdGVkVG8odCxuLGUpe3JldHVybiBuZXcgZ3oobixlLHQsdGhpcy5fdmlld3BvcnRSdWxlcix0aGlzLl9kb2N1bWVudCx0aGlzLl9wbGF0Zm9ybSx0aGlzLl9vdmVybGF5Q29udGFpbmVyKX1mbGV4aWJsZUNvbm5lY3RlZFRvKHQpe3JldHVybiBuZXcgbHoodCx0aGlzLl92aWV3cG9ydFJ1bGVyLHRoaXMuX2RvY3VtZW50LHRoaXMuX3BsYXRmb3JtLHRoaXMuX292ZXJsYXlDb250YWluZXIpfX11ei7JtWZhYz1mdW5jdGlvbiB0KG4pe3JldHVybiBuZXcobnx8dXopKFphKE1BKSxaYSh6QyksWmEoU3cpLFphKHJ6KSl9LHV6Lsm1cHJvdj1XZSh7ZmFjdG9yeTpmdW5jdGlvbiB0KCl7cmV0dXJuIG5ldyB1eihaYShNQSksWmEoekMpLFphKFN3KSxaYShyeikpfSx0b2tlbjp1eixwcm92aWRlZEluOiJyb290In0pLHV6LmN0b3JQYXJhbWV0ZXJzPSgpPT5be3R5cGU6TUF9LHt0eXBlOnZvaWQgMCxkZWNvcmF0b3JzOlt7dHlwZTpJZSxhcmdzOlt6Q119XX0se3R5cGU6U3d9LHt0eXBlOnJ6fV0KLyoqCiAgICAgKiBAbGljZW5zZQogICAgICogQ29weXJpZ2h0IEdvb2dsZSBMTEMgQWxsIFJpZ2h0cyBSZXNlcnZlZC4KICAgICAqCiAgICAgKiBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhbiBNSVQtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQogICAgICogZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZSBhdCBodHRwczovL2FuZ3VsYXIuaW8vbGljZW5zZQogICAgICovO2xldCBmej0wO2NsYXNzIGh6e2NvbnN0cnVjdG9yKHQsbixlLGEsbyxyLGksYyxzLGwsbSl7dGhpcy5zY3JvbGxTdHJhdGVnaWVzPXQsdGhpcy5fb3ZlcmxheUNvbnRhaW5lcj1uLHRoaXMuX2NvbXBvbmVudEZhY3RvcnlSZXNvbHZlcj1lLHRoaXMuX3Bvc2l0aW9uQnVpbGRlcj1hLHRoaXMuX2tleWJvYXJkRGlzcGF0Y2hlcj1vLHRoaXMuX2luamVjdG9yPXIsdGhpcy5fbmdab25lPWksdGhpcy5fZG9jdW1lbnQ9Yyx0aGlzLl9kaXJlY3Rpb25hbGl0eT1zLHRoaXMuX2xvY2F0aW9uPWwsdGhpcy5fb3V0c2lkZUNsaWNrRGlzcGF0Y2hlcj1tfWNyZWF0ZSh0KXtjb25zdCBuPXRoaXMuX2NyZWF0ZUhvc3RFbGVtZW50KCksZT10aGlzLl9jcmVhdGVQYW5lRWxlbWVudChuKSxhPXRoaXMuX2NyZWF0ZVBvcnRhbE91dGxldChlKSxvPW5ldyBYQSh0KTtyZXR1cm4gby5kaXJlY3Rpb249by5kaXJlY3Rpb258fHRoaXMuX2RpcmVjdGlvbmFsaXR5LnZhbHVlLG5ldyBpeihhLG4sZSxvLHRoaXMuX25nWm9uZSx0aGlzLl9rZXlib2FyZERpc3BhdGNoZXIsdGhpcy5fZG9jdW1lbnQsdGhpcy5fbG9jYXRpb24sdGhpcy5fb3V0c2lkZUNsaWNrRGlzcGF0Y2hlcil9cG9zaXRpb24oKXtyZXR1cm4gdGhpcy5fcG9zaXRpb25CdWlsZGVyfV9jcmVhdGVQYW5lRWxlbWVudCh0KXtjb25zdCBuPXRoaXMuX2RvY3VtZW50LmNyZWF0ZUVsZW1lbnQoImRpdiIpO3JldHVybiBuLmlkPSJjZGstb3ZlcmxheS0iK2Z6Kyssbi5jbGFzc0xpc3QuYWRkKCJjZGstb3ZlcmxheS1wYW5lIiksdC5hcHBlbmRDaGlsZChuKSxufV9jcmVhdGVIb3N0RWxlbWVudCgpe2NvbnN0IHQ9dGhpcy5fZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgiZGl2Iik7cmV0dXJuIHRoaXMuX292ZXJsYXlDb250YWluZXIuZ2V0Q29udGFpbmVyRWxlbWVudCgpLmFwcGVuZENoaWxkKHQpLHR9X2NyZWF0ZVBvcnRhbE91dGxldCh0KXtyZXR1cm4gdGhpcy5fYXBwUmVmfHwodGhpcy5fYXBwUmVmPXRoaXMuX2luamVjdG9yLmdldChwQykpLG5ldyBUQSh0LHRoaXMuX2NvbXBvbmVudEZhY3RvcnlSZXNvbHZlcix0aGlzLl9hcHBSZWYsdGhpcy5faW5qZWN0b3IsdGhpcy5fZG9jdW1lbnQpfX1oei7JtWZhYz1mdW5jdGlvbiB0KG4pe3JldHVybiBuZXcobnx8aHopKFphKFpBKSxaYShyeiksWmEoUHUpLFphKHV6KSxaYShleiksWmEoeWQpLFphKEpfKSxaYSh6QyksWmEoVVMpLFphKEdDKSxaYShheikpfSxoei7JtXByb3Y9V2Uoe3Rva2VuOmh6LGZhY3Rvcnk6aHouybVmYWN9KSxoei5jdG9yUGFyYW1ldGVycz0oKT0+W3t0eXBlOlpBfSx7dHlwZTpyen0se3R5cGU6UHV9LHt0eXBlOnV6fSx7dHlwZTplen0se3R5cGU6eWR9LHt0eXBlOkpffSx7dHlwZTp2b2lkIDAsZGVjb3JhdG9yczpbe3R5cGU6SWUsYXJnczpbekNdfV19LHt0eXBlOlVTfSx7dHlwZTpHQ30se3R5cGU6YXp9XQovKioKICAgICAqIEBsaWNlbnNlCiAgICAgKiBDb3B5cmlnaHQgR29vZ2xlIExMQyBBbGwgUmlnaHRzIFJlc2VydmVkLgogICAgICoKICAgICAqIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGFuIE1JVC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCiAgICAgKiBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlIGF0IGh0dHBzOi8vYW5ndWxhci5pby9saWNlbnNlCiAgICAgKi87Y29uc3QgX3o9W3tvcmlnaW5YOiJzdGFydCIsb3JpZ2luWToiYm90dG9tIixvdmVybGF5WDoic3RhcnQiLG92ZXJsYXlZOiJ0b3AifSx7b3JpZ2luWDoic3RhcnQiLG9yaWdpblk6InRvcCIsb3ZlcmxheVg6InN0YXJ0IixvdmVybGF5WToiYm90dG9tIn0se29yaWdpblg6ImVuZCIsb3JpZ2luWToidG9wIixvdmVybGF5WDoiZW5kIixvdmVybGF5WToiYm90dG9tIn0se29yaWdpblg6ImVuZCIsb3JpZ2luWToiYm90dG9tIixvdmVybGF5WDoiZW5kIixvdmVybGF5WToidG9wIn1dLEN6PW5ldyBGYSgiY2RrLWNvbm5lY3RlZC1vdmVybGF5LXNjcm9sbC1zdHJhdGVneSIpO2NsYXNzIE16e2NvbnN0cnVjdG9yKHQpe3RoaXMuZWxlbWVudFJlZj10fX1Nei7JtWZhYz1mdW5jdGlvbiB0KG4pe3JldHVybiBuZXcobnx8TXopKFpnKHh1KSl9LE16Lsm1ZGlyPXZvKHt0eXBlOk16LHNlbGVjdG9yczpbWyIiLCJjZGstb3ZlcmxheS1vcmlnaW4iLCIiXSxbIiIsIm92ZXJsYXktb3JpZ2luIiwiIl0sWyIiLCJjZGtPdmVybGF5T3JpZ2luIiwiIl1dLGV4cG9ydEFzOlsiY2RrT3ZlcmxheU9yaWdpbiJdfSksTXouY3RvclBhcmFtZXRlcnM9KCk9Plt7dHlwZTp4dX1dO2NsYXNzIE96e2NvbnN0cnVjdG9yKHQsbixlLGEsbyl7dGhpcy5fb3ZlcmxheT10LHRoaXMuX2Rpcj1vLHRoaXMuX2hhc0JhY2tkcm9wPSExLHRoaXMuX2xvY2tQb3NpdGlvbj0hMSx0aGlzLl9ncm93QWZ0ZXJPcGVuPSExLHRoaXMuX2ZsZXhpYmxlRGltZW5zaW9ucz0hMSx0aGlzLl9wdXNoPSExLHRoaXMuX2JhY2tkcm9wU3Vic2NyaXB0aW9uPXMuRU1QVFksdGhpcy5fYXR0YWNoU3Vic2NyaXB0aW9uPXMuRU1QVFksdGhpcy5fZGV0YWNoU3Vic2NyaXB0aW9uPXMuRU1QVFksdGhpcy5fcG9zaXRpb25TdWJzY3JpcHRpb249cy5FTVBUWSx0aGlzLnZpZXdwb3J0TWFyZ2luPTAsdGhpcy5vcGVuPSExLHRoaXMuYmFja2Ryb3BDbGljaz1uZXcgRWYsdGhpcy5wb3NpdGlvbkNoYW5nZT1uZXcgRWYsdGhpcy5hdHRhY2g9bmV3IEVmLHRoaXMuZGV0YWNoPW5ldyBFZix0aGlzLm92ZXJsYXlLZXlkb3duPW5ldyBFZix0aGlzLm92ZXJsYXlPdXRzaWRlQ2xpY2s9bmV3IEVmLHRoaXMuX3RlbXBsYXRlUG9ydGFsPW5ldyBBQShuLGUpLHRoaXMuX3Njcm9sbFN0cmF0ZWd5RmFjdG9yeT1hLHRoaXMuc2Nyb2xsU3RyYXRlZ3k9dGhpcy5fc2Nyb2xsU3RyYXRlZ3lGYWN0b3J5KCl9Z2V0IG9mZnNldFgoKXtyZXR1cm4gdGhpcy5fb2Zmc2V0WH1zZXQgb2Zmc2V0WCh0KXt0aGlzLl9vZmZzZXRYPXQsdGhpcy5fcG9zaXRpb24mJnRoaXMuX3VwZGF0ZVBvc2l0aW9uU3RyYXRlZ3kodGhpcy5fcG9zaXRpb24pfWdldCBvZmZzZXRZKCl7cmV0dXJuIHRoaXMuX29mZnNldFl9c2V0IG9mZnNldFkodCl7dGhpcy5fb2Zmc2V0WT10LHRoaXMuX3Bvc2l0aW9uJiZ0aGlzLl91cGRhdGVQb3NpdGlvblN0cmF0ZWd5KHRoaXMuX3Bvc2l0aW9uKX1nZXQgaGFzQmFja2Ryb3AoKXtyZXR1cm4gdGhpcy5faGFzQmFja2Ryb3B9c2V0IGhhc0JhY2tkcm9wKHQpe3RoaXMuX2hhc0JhY2tkcm9wPUd3KHQpfWdldCBsb2NrUG9zaXRpb24oKXtyZXR1cm4gdGhpcy5fbG9ja1Bvc2l0aW9ufXNldCBsb2NrUG9zaXRpb24odCl7dGhpcy5fbG9ja1Bvc2l0aW9uPUd3KHQpfWdldCBmbGV4aWJsZURpbWVuc2lvbnMoKXtyZXR1cm4gdGhpcy5fZmxleGlibGVEaW1lbnNpb25zfXNldCBmbGV4aWJsZURpbWVuc2lvbnModCl7dGhpcy5fZmxleGlibGVEaW1lbnNpb25zPUd3KHQpfWdldCBncm93QWZ0ZXJPcGVuKCl7cmV0dXJuIHRoaXMuX2dyb3dBZnRlck9wZW59c2V0IGdyb3dBZnRlck9wZW4odCl7dGhpcy5fZ3Jvd0FmdGVyT3Blbj1Hdyh0KX1nZXQgcHVzaCgpe3JldHVybiB0aGlzLl9wdXNofXNldCBwdXNoKHQpe3RoaXMuX3B1c2g9R3codCl9Z2V0IG92ZXJsYXlSZWYoKXtyZXR1cm4gdGhpcy5fb3ZlcmxheVJlZn1nZXQgZGlyKCl7cmV0dXJuIHRoaXMuX2Rpcj90aGlzLl9kaXIudmFsdWU6Imx0ciJ9bmdPbkRlc3Ryb3koKXt0aGlzLl9hdHRhY2hTdWJzY3JpcHRpb24udW5zdWJzY3JpYmUoKSx0aGlzLl9kZXRhY2hTdWJzY3JpcHRpb24udW5zdWJzY3JpYmUoKSx0aGlzLl9iYWNrZHJvcFN1YnNjcmlwdGlvbi51bnN1YnNjcmliZSgpLHRoaXMuX3Bvc2l0aW9uU3Vic2NyaXB0aW9uLnVuc3Vic2NyaWJlKCksdGhpcy5fb3ZlcmxheVJlZiYmdGhpcy5fb3ZlcmxheVJlZi5kaXNwb3NlKCl9bmdPbkNoYW5nZXModCl7dGhpcy5fcG9zaXRpb24mJih0aGlzLl91cGRhdGVQb3NpdGlvblN0cmF0ZWd5KHRoaXMuX3Bvc2l0aW9uKSx0aGlzLl9vdmVybGF5UmVmLnVwZGF0ZVNpemUoe3dpZHRoOnRoaXMud2lkdGgsbWluV2lkdGg6dGhpcy5taW5XaWR0aCxoZWlnaHQ6dGhpcy5oZWlnaHQsbWluSGVpZ2h0OnRoaXMubWluSGVpZ2h0fSksdC5vcmlnaW4mJnRoaXMub3BlbiYmdGhpcy5fcG9zaXRpb24uYXBwbHkoKSksdC5vcGVuJiYodGhpcy5vcGVuP3RoaXMuX2F0dGFjaE92ZXJsYXkoKTp0aGlzLl9kZXRhY2hPdmVybGF5KCkpfV9jcmVhdGVPdmVybGF5KCl7dGhpcy5wb3NpdGlvbnMmJnRoaXMucG9zaXRpb25zLmxlbmd0aHx8KHRoaXMucG9zaXRpb25zPV96KTtjb25zdCB0PXRoaXMuX292ZXJsYXlSZWY9dGhpcy5fb3ZlcmxheS5jcmVhdGUodGhpcy5fYnVpbGRDb25maWcoKSk7dGhpcy5fYXR0YWNoU3Vic2NyaXB0aW9uPXQuYXR0YWNobWVudHMoKS5zdWJzY3JpYmUoKCgpPT50aGlzLmF0dGFjaC5lbWl0KCkpKSx0aGlzLl9kZXRhY2hTdWJzY3JpcHRpb249dC5kZXRhY2htZW50cygpLnN1YnNjcmliZSgoKCk9PnRoaXMuZGV0YWNoLmVtaXQoKSkpLHQua2V5ZG93bkV2ZW50cygpLnN1YnNjcmliZSgodD0+e3RoaXMub3ZlcmxheUtleWRvd24ubmV4dCh0KSx0LmtleUNvZGUhPT1Cd3x8V3codCl8fCh0LnByZXZlbnREZWZhdWx0KCksdGhpcy5fZGV0YWNoT3ZlcmxheSgpKX0pKSx0aGlzLl9vdmVybGF5UmVmLm91dHNpZGVQb2ludGVyRXZlbnRzKCkuc3Vic2NyaWJlKCh0PT57dGhpcy5vdmVybGF5T3V0c2lkZUNsaWNrLm5leHQodCl9KSl9X2J1aWxkQ29uZmlnKCl7Y29uc3QgdD10aGlzLl9wb3NpdGlvbj10aGlzLnBvc2l0aW9uU3RyYXRlZ3l8fHRoaXMuX2NyZWF0ZVBvc2l0aW9uU3RyYXRlZ3koKSxuPW5ldyBYQSh7ZGlyZWN0aW9uOnRoaXMuX2Rpcixwb3NpdGlvblN0cmF0ZWd5OnQsc2Nyb2xsU3RyYXRlZ3k6dGhpcy5zY3JvbGxTdHJhdGVneSxoYXNCYWNrZHJvcDp0aGlzLmhhc0JhY2tkcm9wfSk7cmV0dXJuKHRoaXMud2lkdGh8fDA9PT10aGlzLndpZHRoKSYmKG4ud2lkdGg9dGhpcy53aWR0aCksKHRoaXMuaGVpZ2h0fHwwPT09dGhpcy5oZWlnaHQpJiYobi5oZWlnaHQ9dGhpcy5oZWlnaHQpLCh0aGlzLm1pbldpZHRofHwwPT09dGhpcy5taW5XaWR0aCkmJihuLm1pbldpZHRoPXRoaXMubWluV2lkdGgpLCh0aGlzLm1pbkhlaWdodHx8MD09PXRoaXMubWluSGVpZ2h0KSYmKG4ubWluSGVpZ2h0PXRoaXMubWluSGVpZ2h0KSx0aGlzLmJhY2tkcm9wQ2xhc3MmJihuLmJhY2tkcm9wQ2xhc3M9dGhpcy5iYWNrZHJvcENsYXNzKSx0aGlzLnBhbmVsQ2xhc3MmJihuLnBhbmVsQ2xhc3M9dGhpcy5wYW5lbENsYXNzKSxufV91cGRhdGVQb3NpdGlvblN0cmF0ZWd5KHQpe2NvbnN0IG49dGhpcy5wb3NpdGlvbnMubWFwKCh0PT4oe29yaWdpblg6dC5vcmlnaW5YLG9yaWdpblk6dC5vcmlnaW5ZLG92ZXJsYXlYOnQub3ZlcmxheVgsb3ZlcmxheVk6dC5vdmVybGF5WSxvZmZzZXRYOnQub2Zmc2V0WHx8dGhpcy5vZmZzZXRYLG9mZnNldFk6dC5vZmZzZXRZfHx0aGlzLm9mZnNldFkscGFuZWxDbGFzczp0LnBhbmVsQ2xhc3N8fHZvaWQgMH0pKSk7cmV0dXJuIHQuc2V0T3JpZ2luKHRoaXMub3JpZ2luLmVsZW1lbnRSZWYpLndpdGhQb3NpdGlvbnMobikud2l0aEZsZXhpYmxlRGltZW5zaW9ucyh0aGlzLmZsZXhpYmxlRGltZW5zaW9ucykud2l0aFB1c2godGhpcy5wdXNoKS53aXRoR3Jvd0FmdGVyT3Blbih0aGlzLmdyb3dBZnRlck9wZW4pLndpdGhWaWV3cG9ydE1hcmdpbih0aGlzLnZpZXdwb3J0TWFyZ2luKS53aXRoTG9ja2VkUG9zaXRpb24odGhpcy5sb2NrUG9zaXRpb24pLndpdGhUcmFuc2Zvcm1PcmlnaW5Pbih0aGlzLnRyYW5zZm9ybU9yaWdpblNlbGVjdG9yKX1fY3JlYXRlUG9zaXRpb25TdHJhdGVneSgpe2NvbnN0IHQ9dGhpcy5fb3ZlcmxheS5wb3NpdGlvbigpLmZsZXhpYmxlQ29ubmVjdGVkVG8odGhpcy5vcmlnaW4uZWxlbWVudFJlZik7cmV0dXJuIHRoaXMuX3VwZGF0ZVBvc2l0aW9uU3RyYXRlZ3kodCksdH1fYXR0YWNoT3ZlcmxheSgpe3RoaXMuX292ZXJsYXlSZWY/dGhpcy5fb3ZlcmxheVJlZi5nZXRDb25maWcoKS5oYXNCYWNrZHJvcD10aGlzLmhhc0JhY2tkcm9wOnRoaXMuX2NyZWF0ZU92ZXJsYXkoKSx0aGlzLl9vdmVybGF5UmVmLmhhc0F0dGFjaGVkKCl8fHRoaXMuX292ZXJsYXlSZWYuYXR0YWNoKHRoaXMuX3RlbXBsYXRlUG9ydGFsKSx0aGlzLmhhc0JhY2tkcm9wP3RoaXMuX2JhY2tkcm9wU3Vic2NyaXB0aW9uPXRoaXMuX292ZXJsYXlSZWYuYmFja2Ryb3BDbGljaygpLnN1YnNjcmliZSgodD0+e3RoaXMuYmFja2Ryb3BDbGljay5lbWl0KHQpfSkpOnRoaXMuX2JhY2tkcm9wU3Vic2NyaXB0aW9uLnVuc3Vic2NyaWJlKCksdGhpcy5fcG9zaXRpb25TdWJzY3JpcHRpb24udW5zdWJzY3JpYmUoKSx0aGlzLnBvc2l0aW9uQ2hhbmdlLm9ic2VydmVycy5sZW5ndGg+MCYmKHRoaXMuX3Bvc2l0aW9uU3Vic2NyaXB0aW9uPXRoaXMuX3Bvc2l0aW9uLnBvc2l0aW9uQ2hhbmdlcy5waXBlKGJlKCgoKT0+dGhpcy5wb3NpdGlvbkNoYW5nZS5vYnNlcnZlcnMubGVuZ3RoPjApKSkuc3Vic2NyaWJlKCh0PT57dGhpcy5wb3NpdGlvbkNoYW5nZS5lbWl0KHQpLDA9PT10aGlzLnBvc2l0aW9uQ2hhbmdlLm9ic2VydmVycy5sZW5ndGgmJnRoaXMuX3Bvc2l0aW9uU3Vic2NyaXB0aW9uLnVuc3Vic2NyaWJlKCl9KSkpfV9kZXRhY2hPdmVybGF5KCl7dGhpcy5fb3ZlcmxheVJlZiYmdGhpcy5fb3ZlcmxheVJlZi5kZXRhY2goKSx0aGlzLl9iYWNrZHJvcFN1YnNjcmlwdGlvbi51bnN1YnNjcmliZSgpLHRoaXMuX3Bvc2l0aW9uU3Vic2NyaXB0aW9uLnVuc3Vic2NyaWJlKCl9fU96Lsm1ZmFjPWZ1bmN0aW9uIHQobil7cmV0dXJuIG5ldyhufHxPeikoWmcoaHopLFpnKEp1KSxaZygkdSksWmcoQ3opLFpnKFVTLDgpKX0sT3ouybVkaXI9dm8oe3R5cGU6T3osc2VsZWN0b3JzOltbIiIsImNkay1jb25uZWN0ZWQtb3ZlcmxheSIsIiJdLFsiIiwiY29ubmVjdGVkLW92ZXJsYXkiLCIiXSxbIiIsImNka0Nvbm5lY3RlZE92ZXJsYXkiLCIiXV0saW5wdXRzOnt2aWV3cG9ydE1hcmdpbjpbImNka0Nvbm5lY3RlZE92ZXJsYXlWaWV3cG9ydE1hcmdpbiIsInZpZXdwb3J0TWFyZ2luIl0sb3BlbjpbImNka0Nvbm5lY3RlZE92ZXJsYXlPcGVuIiwib3BlbiJdLHNjcm9sbFN0cmF0ZWd5OlsiY2RrQ29ubmVjdGVkT3ZlcmxheVNjcm9sbFN0cmF0ZWd5Iiwic2Nyb2xsU3RyYXRlZ3kiXSxvZmZzZXRYOlsiY2RrQ29ubmVjdGVkT3ZlcmxheU9mZnNldFgiLCJvZmZzZXRYIl0sb2Zmc2V0WTpbImNka0Nvbm5lY3RlZE92ZXJsYXlPZmZzZXRZIiwib2Zmc2V0WSJdLGhhc0JhY2tkcm9wOlsiY2RrQ29ubmVjdGVkT3ZlcmxheUhhc0JhY2tkcm9wIiwiaGFzQmFja2Ryb3AiXSxsb2NrUG9zaXRpb246WyJjZGtDb25uZWN0ZWRPdmVybGF5TG9ja1Bvc2l0aW9uIiwibG9ja1Bvc2l0aW9uIl0sZmxleGlibGVEaW1lbnNpb25zOlsiY2RrQ29ubmVjdGVkT3ZlcmxheUZsZXhpYmxlRGltZW5zaW9ucyIsImZsZXhpYmxlRGltZW5zaW9ucyJdLGdyb3dBZnRlck9wZW46WyJjZGtDb25uZWN0ZWRPdmVybGF5R3Jvd0FmdGVyT3BlbiIsImdyb3dBZnRlck9wZW4iXSxwdXNoOlsiY2RrQ29ubmVjdGVkT3ZlcmxheVB1c2giLCJwdXNoIl0scG9zaXRpb25zOlsiY2RrQ29ubmVjdGVkT3ZlcmxheVBvc2l0aW9ucyIsInBvc2l0aW9ucyJdLG9yaWdpbjpbImNka0Nvbm5lY3RlZE92ZXJsYXlPcmlnaW4iLCJvcmlnaW4iXSxwb3NpdGlvblN0cmF0ZWd5OlsiY2RrQ29ubmVjdGVkT3ZlcmxheVBvc2l0aW9uU3RyYXRlZ3kiLCJwb3NpdGlvblN0cmF0ZWd5Il0sd2lkdGg6WyJjZGtDb25uZWN0ZWRPdmVybGF5V2lkdGgiLCJ3aWR0aCJdLGhlaWdodDpbImNka0Nvbm5lY3RlZE92ZXJsYXlIZWlnaHQiLCJoZWlnaHQiXSxtaW5XaWR0aDpbImNka0Nvbm5lY3RlZE92ZXJsYXlNaW5XaWR0aCIsIm1pbldpZHRoIl0sbWluSGVpZ2h0OlsiY2RrQ29ubmVjdGVkT3ZlcmxheU1pbkhlaWdodCIsIm1pbkhlaWdodCJdLGJhY2tkcm9wQ2xhc3M6WyJjZGtDb25uZWN0ZWRPdmVybGF5QmFja2Ryb3BDbGFzcyIsImJhY2tkcm9wQ2xhc3MiXSxwYW5lbENsYXNzOlsiY2RrQ29ubmVjdGVkT3ZlcmxheVBhbmVsQ2xhc3MiLCJwYW5lbENsYXNzIl0sdHJhbnNmb3JtT3JpZ2luU2VsZWN0b3I6WyJjZGtDb25uZWN0ZWRPdmVybGF5VHJhbnNmb3JtT3JpZ2luT24iLCJ0cmFuc2Zvcm1PcmlnaW5TZWxlY3RvciJdfSxvdXRwdXRzOntiYWNrZHJvcENsaWNrOiJiYWNrZHJvcENsaWNrIixwb3NpdGlvbkNoYW5nZToicG9zaXRpb25DaGFuZ2UiLGF0dGFjaDoiYXR0YWNoIixkZXRhY2g6ImRldGFjaCIsb3ZlcmxheUtleWRvd246Im92ZXJsYXlLZXlkb3duIixvdmVybGF5T3V0c2lkZUNsaWNrOiJvdmVybGF5T3V0c2lkZUNsaWNrIn0sZXhwb3J0QXM6WyJjZGtDb25uZWN0ZWRPdmVybGF5Il0sZmVhdHVyZXM6W3ByXX0pLE96LmN0b3JQYXJhbWV0ZXJzPSgpPT5be3R5cGU6aHp9LHt0eXBlOkp1fSx7dHlwZTokdX0se3R5cGU6dm9pZCAwLGRlY29yYXRvcnM6W3t0eXBlOkllLGFyZ3M6W0N6XX1dfSx7dHlwZTpVUyxkZWNvcmF0b3JzOlt7dHlwZTpOZX1dfV0sT3oucHJvcERlY29yYXRvcnM9e29yaWdpbjpbe3R5cGU6Zl8sYXJnczpbImNka0Nvbm5lY3RlZE92ZXJsYXlPcmlnaW4iXX1dLHBvc2l0aW9uczpbe3R5cGU6Zl8sYXJnczpbImNka0Nvbm5lY3RlZE92ZXJsYXlQb3NpdGlvbnMiXX1dLHBvc2l0aW9uU3RyYXRlZ3k6W3t0eXBlOmZfLGFyZ3M6WyJjZGtDb25uZWN0ZWRPdmVybGF5UG9zaXRpb25TdHJhdGVneSJdfV0sb2Zmc2V0WDpbe3R5cGU6Zl8sYXJnczpbImNka0Nvbm5lY3RlZE92ZXJsYXlPZmZzZXRYIl19XSxvZmZzZXRZOlt7dHlwZTpmXyxhcmdzOlsiY2RrQ29ubmVjdGVkT3ZlcmxheU9mZnNldFkiXX1dLHdpZHRoOlt7dHlwZTpmXyxhcmdzOlsiY2RrQ29ubmVjdGVkT3ZlcmxheVdpZHRoIl19XSxoZWlnaHQ6W3t0eXBlOmZfLGFyZ3M6WyJjZGtDb25uZWN0ZWRPdmVybGF5SGVpZ2h0Il19XSxtaW5XaWR0aDpbe3R5cGU6Zl8sYXJnczpbImNka0Nvbm5lY3RlZE92ZXJsYXlNaW5XaWR0aCJdfV0sbWluSGVpZ2h0Olt7dHlwZTpmXyxhcmdzOlsiY2RrQ29ubmVjdGVkT3ZlcmxheU1pbkhlaWdodCJdfV0sYmFja2Ryb3BDbGFzczpbe3R5cGU6Zl8sYXJnczpbImNka0Nvbm5lY3RlZE92ZXJsYXlCYWNrZHJvcENsYXNzIl19XSxwYW5lbENsYXNzOlt7dHlwZTpmXyxhcmdzOlsiY2RrQ29ubmVjdGVkT3ZlcmxheVBhbmVsQ2xhc3MiXX1dLHZpZXdwb3J0TWFyZ2luOlt7dHlwZTpmXyxhcmdzOlsiY2RrQ29ubmVjdGVkT3ZlcmxheVZpZXdwb3J0TWFyZ2luIl19XSxzY3JvbGxTdHJhdGVneTpbe3R5cGU6Zl8sYXJnczpbImNka0Nvbm5lY3RlZE92ZXJsYXlTY3JvbGxTdHJhdGVneSJdfV0sb3Blbjpbe3R5cGU6Zl8sYXJnczpbImNka0Nvbm5lY3RlZE92ZXJsYXlPcGVuIl19XSx0cmFuc2Zvcm1PcmlnaW5TZWxlY3Rvcjpbe3R5cGU6Zl8sYXJnczpbImNka0Nvbm5lY3RlZE92ZXJsYXlUcmFuc2Zvcm1PcmlnaW5PbiJdfV0saGFzQmFja2Ryb3A6W3t0eXBlOmZfLGFyZ3M6WyJjZGtDb25uZWN0ZWRPdmVybGF5SGFzQmFja2Ryb3AiXX1dLGxvY2tQb3NpdGlvbjpbe3R5cGU6Zl8sYXJnczpbImNka0Nvbm5lY3RlZE92ZXJsYXlMb2NrUG9zaXRpb24iXX1dLGZsZXhpYmxlRGltZW5zaW9uczpbe3R5cGU6Zl8sYXJnczpbImNka0Nvbm5lY3RlZE92ZXJsYXlGbGV4aWJsZURpbWVuc2lvbnMiXX1dLGdyb3dBZnRlck9wZW46W3t0eXBlOmZfLGFyZ3M6WyJjZGtDb25uZWN0ZWRPdmVybGF5R3Jvd0FmdGVyT3BlbiJdfV0scHVzaDpbe3R5cGU6Zl8sYXJnczpbImNka0Nvbm5lY3RlZE92ZXJsYXlQdXNoIl19XSxiYWNrZHJvcENsaWNrOlt7dHlwZTpoX31dLHBvc2l0aW9uQ2hhbmdlOlt7dHlwZTpoX31dLGF0dGFjaDpbe3R5cGU6aF99XSxkZXRhY2g6W3t0eXBlOmhffV0sb3ZlcmxheUtleWRvd246W3t0eXBlOmhffV0sb3ZlcmxheU91dHNpZGVDbGljazpbe3R5cGU6aF99XX07Y29uc3QgUHo9e3Byb3ZpZGU6Q3osZGVwczpbaHpdLHVzZUZhY3Rvcnk6ZnVuY3Rpb24geHoodCl7cmV0dXJuKCk9PnQuc2Nyb2xsU3RyYXRlZ2llcy5yZXBvc2l0aW9uKCl9fTsKLyoqCiAgICAgKiBAbGljZW5zZQogICAgICogQ29weXJpZ2h0IEdvb2dsZSBMTEMgQWxsIFJpZ2h0cyBSZXNlcnZlZC4KICAgICAqCiAgICAgKiBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhbiBNSVQtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQogICAgICogZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZSBhdCBodHRwczovL2FuZ3VsYXIuaW8vbGljZW5zZQogICAgICovY2xhc3MgeXp7fXl6Lsm1bW9kPXhvKHt0eXBlOnl6fSkseXouybVpbmo9R2Uoe2ZhY3Rvcnk6ZnVuY3Rpb24gdChuKXtyZXR1cm4gbmV3KG58fHl6KX0scHJvdmlkZXJzOltoeixQel0saW1wb3J0czpbW0dTLEJBLHZBXSx2QV19KSwoInVuZGVmaW5lZCI9PXR5cGVvZiBuZ0ppdE1vZGV8fG5nSml0TW9kZSkmJnlvKHl6LHtkZWNsYXJhdGlvbnM6ZnVuY3Rpb24oKXtyZXR1cm5bT3osTXpdfSxpbXBvcnRzOmZ1bmN0aW9uKCl7cmV0dXJuW0dTLEJBLHZBXX0sZXhwb3J0czpmdW5jdGlvbigpe3JldHVybltPeixNeix2QV19fSk7Ci8qKgogICAgICogQGxpY2Vuc2UKICAgICAqIENvcHlyaWdodCBHb29nbGUgTExDIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCiAgICAgKgogICAgICogVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYW4gTUlULXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKICAgICAqIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUgYXQgaHR0cHM6Ly9hbmd1bGFyLmlvL2xpY2Vuc2UKICAgICAqLwovKioKICAgICAqIEBsaWNlbnNlCiAgICAgKiBDb3B5cmlnaHQgR29vZ2xlIExMQyBBbGwgUmlnaHRzIFJlc2VydmVkLgogICAgICoKICAgICAqIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGFuIE1JVC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCiAgICAgKiBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlIGF0IGh0dHBzOi8vYW5ndWxhci5pby9saWNlbnNlCiAgICAgKi8KY2xhc3Mga3ogZXh0ZW5kcyByentjb25zdHJ1Y3Rvcih0LG4pe3N1cGVyKHQsbil9bmdPbkRlc3Ryb3koKXtzdXBlci5uZ09uRGVzdHJveSgpLHRoaXMuX2Z1bGxTY3JlZW5FdmVudE5hbWUmJnRoaXMuX2Z1bGxTY3JlZW5MaXN0ZW5lciYmdGhpcy5fZG9jdW1lbnQucmVtb3ZlRXZlbnRMaXN0ZW5lcih0aGlzLl9mdWxsU2NyZWVuRXZlbnROYW1lLHRoaXMuX2Z1bGxTY3JlZW5MaXN0ZW5lcil9X2NyZWF0ZUNvbnRhaW5lcigpe3N1cGVyLl9jcmVhdGVDb250YWluZXIoKSx0aGlzLl9hZGp1c3RQYXJlbnRGb3JGdWxsc2NyZWVuQ2hhbmdlKCksdGhpcy5fYWRkRnVsbHNjcmVlbkNoYW5nZUxpc3RlbmVyKCgoKT0+dGhpcy5fYWRqdXN0UGFyZW50Rm9yRnVsbHNjcmVlbkNoYW5nZSgpKSl9X2FkanVzdFBhcmVudEZvckZ1bGxzY3JlZW5DaGFuZ2UoKXt0aGlzLl9jb250YWluZXJFbGVtZW50JiYodGhpcy5nZXRGdWxsc2NyZWVuRWxlbWVudCgpfHx0aGlzLl9kb2N1bWVudC5ib2R5KS5hcHBlbmRDaGlsZCh0aGlzLl9jb250YWluZXJFbGVtZW50KX1fYWRkRnVsbHNjcmVlbkNoYW5nZUxpc3RlbmVyKHQpe2NvbnN0IG49dGhpcy5fZ2V0RXZlbnROYW1lKCk7biYmKHRoaXMuX2Z1bGxTY3JlZW5MaXN0ZW5lciYmdGhpcy5fZG9jdW1lbnQucmVtb3ZlRXZlbnRMaXN0ZW5lcihuLHRoaXMuX2Z1bGxTY3JlZW5MaXN0ZW5lciksdGhpcy5fZG9jdW1lbnQuYWRkRXZlbnRMaXN0ZW5lcihuLHQpLHRoaXMuX2Z1bGxTY3JlZW5MaXN0ZW5lcj10KX1fZ2V0RXZlbnROYW1lKCl7aWYoIXRoaXMuX2Z1bGxTY3JlZW5FdmVudE5hbWUpe2NvbnN0IHQ9dGhpcy5fZG9jdW1lbnQ7dC5mdWxsc2NyZWVuRW5hYmxlZD90aGlzLl9mdWxsU2NyZWVuRXZlbnROYW1lPSJmdWxsc2NyZWVuY2hhbmdlIjp0LndlYmtpdEZ1bGxzY3JlZW5FbmFibGVkP3RoaXMuX2Z1bGxTY3JlZW5FdmVudE5hbWU9IndlYmtpdGZ1bGxzY3JlZW5jaGFuZ2UiOnQubW96RnVsbFNjcmVlbkVuYWJsZWQ/dGhpcy5fZnVsbFNjcmVlbkV2ZW50TmFtZT0ibW96ZnVsbHNjcmVlbmNoYW5nZSI6dC5tc0Z1bGxzY3JlZW5FbmFibGVkJiYodGhpcy5fZnVsbFNjcmVlbkV2ZW50TmFtZT0iTVNGdWxsc2NyZWVuQ2hhbmdlIil9cmV0dXJuIHRoaXMuX2Z1bGxTY3JlZW5FdmVudE5hbWV9Z2V0RnVsbHNjcmVlbkVsZW1lbnQoKXtjb25zdCB0PXRoaXMuX2RvY3VtZW50O3JldHVybiB0LmZ1bGxzY3JlZW5FbGVtZW50fHx0LndlYmtpdEZ1bGxzY3JlZW5FbGVtZW50fHx0Lm1vekZ1bGxTY3JlZW5FbGVtZW50fHx0Lm1zRnVsbHNjcmVlbkVsZW1lbnR8fG51bGx9fWt6Lsm1ZmFjPWZ1bmN0aW9uIHQobil7cmV0dXJuIG5ldyhufHxreikoWmEoekMpLFphKFN3KSl9LGt6Lsm1cHJvdj1XZSh7ZmFjdG9yeTpmdW5jdGlvbiB0KCl7cmV0dXJuIG5ldyBreihaYSh6QyksWmEoU3cpKX0sdG9rZW46a3oscHJvdmlkZWRJbjoicm9vdCJ9KSxrei5jdG9yUGFyYW1ldGVycz0oKT0+W3t0eXBlOnZvaWQgMCxkZWNvcmF0b3JzOlt7dHlwZTpJZSxhcmdzOlt6Q119XX0se3R5cGU6U3d9XTtjbGFzcyB2ent9dnouybVtb2Q9eG8oe3R5cGU6dnp9KSx2ei7JtWluaj1HZSh7ZmFjdG9yeTpmdW5jdGlvbiB0KG4pe3JldHVybiBuZXcobnx8dnopfX0pOwovKioKICAgICAqIEBsaWNlbnNlCiAgICAgKiBDb3B5cmlnaHQgR29vZ2xlIExMQyBBbGwgUmlnaHRzIFJlc2VydmVkLgogICAgICoKICAgICAqIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGFuIE1JVC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCiAgICAgKiBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlIGF0IGh0dHBzOi8vYW5ndWxhci5pby9saWNlbnNlCiAgICAgKi8KY29uc3Qgd3o9bmV3IFNldDtsZXQgU3o7Y2xhc3MgRXp7Y29uc3RydWN0b3IodCl7dGhpcy5fcGxhdGZvcm09dCx0aGlzLl9tYXRjaE1lZGlhPXRoaXMuX3BsYXRmb3JtLmlzQnJvd3NlciYmd2luZG93Lm1hdGNoTWVkaWE/d2luZG93Lm1hdGNoTWVkaWEuYmluZCh3aW5kb3cpOkF6fW1hdGNoTWVkaWEodCl7cmV0dXJuIHRoaXMuX3BsYXRmb3JtLldFQktJVCYmKGZ1bmN0aW9uIG4odCl7aWYoIXd6Lmhhcyh0KSl0cnl7U3p8fChTej1kb2N1bWVudC5jcmVhdGVFbGVtZW50KCJzdHlsZSIpLFN6LnNldEF0dHJpYnV0ZSgidHlwZSIsInRleHQvY3NzIiksZG9jdW1lbnQuaGVhZC5hcHBlbmRDaGlsZChTeikpLFN6LnNoZWV0JiYoU3ouc2hlZXQuaW5zZXJ0UnVsZShgQG1lZGlhICR7dH0gey5meC1xdWVyeS10ZXN0eyB9fWAsMCksd3ouYWRkKHQpKX1jYXRjaCh0KXtjb25zb2xlLmVycm9yKHQpfX0pKHQpLHRoaXMuX21hdGNoTWVkaWEodCl9fWZ1bmN0aW9uIEF6KHQpe3JldHVybnttYXRjaGVzOiJhbGwiPT09dHx8IiI9PT10LG1lZGlhOnQsYWRkTGlzdGVuZXI6KCk9Pnt9LHJlbW92ZUxpc3RlbmVyOigpPT57fX19Ci8qKgogICAgICogQGxpY2Vuc2UKICAgICAqIENvcHlyaWdodCBHb29nbGUgTExDIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCiAgICAgKgogICAgICogVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYW4gTUlULXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKICAgICAqIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUgYXQgaHR0cHM6Ly9hbmd1bGFyLmlvL2xpY2Vuc2UKICAgICAqL0V6Lsm1ZmFjPWZ1bmN0aW9uIHQobil7cmV0dXJuIG5ldyhufHxFeikoWmEoU3cpKX0sRXouybVwcm92PVdlKHtmYWN0b3J5OmZ1bmN0aW9uIHQoKXtyZXR1cm4gbmV3IEV6KFphKFN3KSl9LHRva2VuOkV6LHByb3ZpZGVkSW46InJvb3QifSksRXouY3RvclBhcmFtZXRlcnM9KCk9Plt7dHlwZTpTd31dO2NsYXNzIHp6e2NvbnN0cnVjdG9yKHQsbil7dGhpcy5fbWVkaWFNYXRjaGVyPXQsdGhpcy5fem9uZT1uLHRoaXMuX3F1ZXJpZXM9bmV3IE1hcCx0aGlzLl9kZXN0cm95U3ViamVjdD1uZXcgeH1uZ09uRGVzdHJveSgpe3RoaXMuX2Rlc3Ryb3lTdWJqZWN0Lm5leHQoKSx0aGlzLl9kZXN0cm95U3ViamVjdC5jb21wbGV0ZSgpfWlzTWF0Y2hlZCh0KXtyZXR1cm4gUnooWncodCkpLnNvbWUoKHQ9PnRoaXMuX3JlZ2lzdGVyUXVlcnkodCkubXFsLm1hdGNoZXMpKX1vYnNlcnZlKHQpe2xldCBuPUV0KFJ6KFp3KHQpKS5tYXAoKHQ9PnRoaXMuX3JlZ2lzdGVyUXVlcnkodCkub2JzZXJ2YWJsZSkpKTtyZXR1cm4gbj1GdChuLnBpcGUoVG4oMSkpLG4ucGlwZShvZSgxKSxsbigwKSkpLG4ucGlwZShmdCgodD0+e2NvbnN0IG49e21hdGNoZXM6ITEsYnJlYWtwb2ludHM6e319O3JldHVybiB0LmZvckVhY2goKCh7bWF0Y2hlczp0LHF1ZXJ5OmV9KT0+e24ubWF0Y2hlcz1uLm1hdGNoZXN8fHQsbi5icmVha3BvaW50c1tlXT10fSkpLG59KSkpfV9yZWdpc3RlclF1ZXJ5KHQpe2lmKHRoaXMuX3F1ZXJpZXMuaGFzKHQpKXJldHVybiB0aGlzLl9xdWVyaWVzLmdldCh0KTtjb25zdCBuPXRoaXMuX21lZGlhTWF0Y2hlci5tYXRjaE1lZGlhKHQpLGU9e29ic2VydmFibGU6bmV3IF8oKHQ9Pntjb25zdCBlPW49PnRoaXMuX3pvbmUucnVuKCgoKT0+dC5uZXh0KG4pKSk7cmV0dXJuIG4uYWRkTGlzdGVuZXIoZSksKCk9PntuLnJlbW92ZUxpc3RlbmVyKGUpfX0pKS5waXBlKGNlKG4pLGZ0KCgoe21hdGNoZXM6bn0pPT4oe3F1ZXJ5OnQsbWF0Y2hlczpufSkpKSxkZSh0aGlzLl9kZXN0cm95U3ViamVjdCkpLG1xbDpufTtyZXR1cm4gdGhpcy5fcXVlcmllcy5zZXQodCxlKSxlfX1mdW5jdGlvbiBSeih0KXtyZXR1cm4gdC5tYXAoKHQ9PnQuc3BsaXQoIiwiKSkpLnJlZHVjZSgoKHQsbik9PnQuY29uY2F0KG4pKSkubWFwKCh0PT50LnRyaW0oKSkpfQovKioKICAgICAqIEBsaWNlbnNlCiAgICAgKiBDb3B5cmlnaHQgR29vZ2xlIExMQyBBbGwgUmlnaHRzIFJlc2VydmVkLgogICAgICoKICAgICAqIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGFuIE1JVC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCiAgICAgKiBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlIGF0IGh0dHBzOi8vYW5ndWxhci5pby9saWNlbnNlCiAgICAgKi9mdW5jdGlvbiBUeih0LG4pe2lmKDEmdCl7Y29uc3QgdD1vcCgpO0tnKDAsImRpdiIsMSksS2coMSwiYnV0dG9uIiwyKSxjcCgiY2xpY2siLChmdW5jdGlvbiBuKCl7cmV0dXJuIGpyKHQpLGdwKCkuYWN0aW9uKCl9KSksSnAoMiksJGcoKSwkZygpfWlmKDImdCl7Y29uc3QgdD1ncCgpO3dzKDIpLFFwKHQuZGF0YS5hY3Rpb24pfX1mdW5jdGlvbiBEeih0LG4pe316ei7JtWZhYz1mdW5jdGlvbiB0KG4pe3JldHVybiBuZXcobnx8enopKFphKEV6KSxaYShKXykpfSx6ei7JtXByb3Y9V2Uoe2ZhY3Rvcnk6ZnVuY3Rpb24gdCgpe3JldHVybiBuZXcgenooWmEoRXopLFphKEpfKSl9LHRva2VuOnp6LHByb3ZpZGVkSW46InJvb3QifSksenouY3RvclBhcmFtZXRlcnM9KCk9Plt7dHlwZTpFen0se3R5cGU6Sl99XTtjb25zdCBJej1uZXcgRmEoIk1hdFNuYWNrQmFyRGF0YSIpO2NsYXNzIE56e2NvbnN0cnVjdG9yKCl7dGhpcy5wb2xpdGVuZXNzPSJhc3NlcnRpdmUiLHRoaXMuYW5ub3VuY2VtZW50TWVzc2FnZT0iIix0aGlzLmR1cmF0aW9uPTAsdGhpcy5kYXRhPW51bGwsdGhpcy5ob3Jpem9udGFsUG9zaXRpb249ImNlbnRlciIsdGhpcy52ZXJ0aWNhbFBvc2l0aW9uPSJib3R0b20ifX0KLyoqCiAgICAgKiBAbGljZW5zZQogICAgICogQ29weXJpZ2h0IEdvb2dsZSBMTEMgQWxsIFJpZ2h0cyBSZXNlcnZlZC4KICAgICAqCiAgICAgKiBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhbiBNSVQtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQogICAgICogZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZSBhdCBodHRwczovL2FuZ3VsYXIuaW8vbGljZW5zZQogICAgICovY29uc3QgRno9TWF0aC5wb3coMiwzMSktMTtjbGFzcyBMentjb25zdHJ1Y3Rvcih0LG4pe3RoaXMuX292ZXJsYXlSZWY9bix0aGlzLl9hZnRlckRpc21pc3NlZD1uZXcgeCx0aGlzLl9hZnRlck9wZW5lZD1uZXcgeCx0aGlzLl9vbkFjdGlvbj1uZXcgeCx0aGlzLl9kaXNtaXNzZWRCeUFjdGlvbj0hMSx0aGlzLmNvbnRhaW5lckluc3RhbmNlPXQsdGhpcy5vbkFjdGlvbigpLnN1YnNjcmliZSgoKCk9PnRoaXMuZGlzbWlzcygpKSksdC5fb25FeGl0LnN1YnNjcmliZSgoKCk9PnRoaXMuX2ZpbmlzaERpc21pc3MoKSkpfWRpc21pc3MoKXt0aGlzLl9hZnRlckRpc21pc3NlZC5jbG9zZWR8fHRoaXMuY29udGFpbmVySW5zdGFuY2UuZXhpdCgpLGNsZWFyVGltZW91dCh0aGlzLl9kdXJhdGlvblRpbWVvdXRJZCl9ZGlzbWlzc1dpdGhBY3Rpb24oKXt0aGlzLl9vbkFjdGlvbi5jbG9zZWR8fCh0aGlzLl9kaXNtaXNzZWRCeUFjdGlvbj0hMCx0aGlzLl9vbkFjdGlvbi5uZXh0KCksdGhpcy5fb25BY3Rpb24uY29tcGxldGUoKSl9Y2xvc2VXaXRoQWN0aW9uKCl7dGhpcy5kaXNtaXNzV2l0aEFjdGlvbigpfV9kaXNtaXNzQWZ0ZXIodCl7dGhpcy5fZHVyYXRpb25UaW1lb3V0SWQ9c2V0VGltZW91dCgoKCk9PnRoaXMuZGlzbWlzcygpKSxNYXRoLm1pbih0LEZ6KSl9X29wZW4oKXt0aGlzLl9hZnRlck9wZW5lZC5jbG9zZWR8fCh0aGlzLl9hZnRlck9wZW5lZC5uZXh0KCksdGhpcy5fYWZ0ZXJPcGVuZWQuY29tcGxldGUoKSl9X2ZpbmlzaERpc21pc3MoKXt0aGlzLl9vdmVybGF5UmVmLmRpc3Bvc2UoKSx0aGlzLl9vbkFjdGlvbi5jbG9zZWR8fHRoaXMuX29uQWN0aW9uLmNvbXBsZXRlKCksdGhpcy5fYWZ0ZXJEaXNtaXNzZWQubmV4dCh7ZGlzbWlzc2VkQnlBY3Rpb246dGhpcy5fZGlzbWlzc2VkQnlBY3Rpb259KSx0aGlzLl9hZnRlckRpc21pc3NlZC5jb21wbGV0ZSgpLHRoaXMuX2Rpc21pc3NlZEJ5QWN0aW9uPSExfWFmdGVyRGlzbWlzc2VkKCl7cmV0dXJuIHRoaXMuX2FmdGVyRGlzbWlzc2VkfWFmdGVyT3BlbmVkKCl7cmV0dXJuIHRoaXMuY29udGFpbmVySW5zdGFuY2UuX29uRW50ZXJ9b25BY3Rpb24oKXtyZXR1cm4gdGhpcy5fb25BY3Rpb259fQovKioKICAgICAqIEBsaWNlbnNlCiAgICAgKiBDb3B5cmlnaHQgR29vZ2xlIExMQyBBbGwgUmlnaHRzIFJlc2VydmVkLgogICAgICoKICAgICAqIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGFuIE1JVC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCiAgICAgKiBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlIGF0IGh0dHBzOi8vYW5ndWxhci5pby9saWNlbnNlCiAgICAgKi9jbGFzcyBIentjb25zdHJ1Y3Rvcih0LG4pe3RoaXMuc25hY2tCYXJSZWY9dCx0aGlzLmRhdGE9bn1hY3Rpb24oKXt0aGlzLnNuYWNrQmFyUmVmLmRpc21pc3NXaXRoQWN0aW9uKCl9Z2V0IGhhc0FjdGlvbigpe3JldHVybiEhdGhpcy5kYXRhLmFjdGlvbn19SHouybVmYWM9ZnVuY3Rpb24gdChuKXtyZXR1cm4gbmV3KG58fEh6KShaZyhMeiksWmcoSXopKX0sSHouybVjbXA9X28oe3R5cGU6SHosc2VsZWN0b3JzOltbInNpbXBsZS1zbmFjay1iYXIiXV0saG9zdEF0dHJzOlsxLCJtYXQtc2ltcGxlLXNuYWNrYmFyIl0sZGVjbHM6Myx2YXJzOjIsY29uc3RzOltbImNsYXNzIiwibWF0LXNpbXBsZS1zbmFja2Jhci1hY3Rpb24iLDQsIm5nSWYiXSxbMSwibWF0LXNpbXBsZS1zbmFja2Jhci1hY3Rpb24iXSxbIm1hdC1idXR0b24iLCIiLDMsImNsaWNrIl1dLHRlbXBsYXRlOmZ1bmN0aW9uIHQobixlKXsxJm4mJihLZygwLCJzcGFuIiksSnAoMSksJGcoKSxZZygyLFR6LDMsMSwiZGl2IiwwKSksMiZuJiYod3MoMSksUXAoZS5kYXRhLm1lc3NhZ2UpLHdzKDEpLEpnKCJuZ0lmIixlLmhhc0FjdGlvbikpfSxkaXJlY3RpdmVzOltXTSxlQV0sc3R5bGVzOlsiLm1hdC1zaW1wbGUtc25hY2tiYXJ7ZGlzcGxheTpmbGV4O2p1c3RpZnktY29udGVudDpzcGFjZS1iZXR3ZWVuO2FsaWduLWl0ZW1zOmNlbnRlcjtsaW5lLWhlaWdodDoyMHB4O29wYWNpdHk6MX0ubWF0LXNpbXBsZS1zbmFja2Jhci1hY3Rpb257ZmxleC1zaHJpbms6MDttYXJnaW46LThweCAtOHB4IC04cHggOHB4fS5tYXQtc2ltcGxlLXNuYWNrYmFyLWFjdGlvbiBidXR0b257bWF4LWhlaWdodDozNnB4O21pbi13aWR0aDowfVtkaXI9cnRsXSAubWF0LXNpbXBsZS1zbmFja2Jhci1hY3Rpb257bWFyZ2luLWxlZnQ6LThweDttYXJnaW4tcmlnaHQ6OHB4fVxuIl0sZW5jYXBzdWxhdGlvbjoyLGNoYW5nZURldGVjdGlvbjowfSksSHouY3RvclBhcmFtZXRlcnM9KCk9Plt7dHlwZTpMen0se3R5cGU6dm9pZCAwLGRlY29yYXRvcnM6W3t0eXBlOkllLGFyZ3M6W0l6XX1dfV0KLyoqCiAgICAgKiBAbGljZW5zZQogICAgICogQ29weXJpZ2h0IEdvb2dsZSBMTEMgQWxsIFJpZ2h0cyBSZXNlcnZlZC4KICAgICAqCiAgICAgKiBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhbiBNSVQtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQogICAgICogZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZSBhdCBodHRwczovL2FuZ3VsYXIuaW8vbGljZW5zZQogICAgICovO2NvbnN0IEJ6PXtzbmFja0JhclN0YXRlOlNQKCJzdGF0ZSIsW1JQKCJ2b2lkLCBoaWRkZW4iLHpQKHt0cmFuc2Zvcm06InNjYWxlKDAuOCkiLG9wYWNpdHk6MH0pKSxSUCgidmlzaWJsZSIselAoe3RyYW5zZm9ybToic2NhbGUoMSkiLG9wYWNpdHk6MX0pKSxEUCgiKiA9PiB2aXNpYmxlIixFUCgiMTUwbXMgY3ViaWMtYmV6aWVyKDAsIDAsIDAuMiwgMSkiKSksRFAoIiogPT4gdm9pZCwgKiA9PiBoaWRkZW4iLEVQKCI3NW1zIGN1YmljLWJlemllcigwLjQsIDAuMCwgMSwgMSkiLHpQKHtvcGFjaXR5OjB9KSkpXSl9OwovKioKICAgICAqIEBsaWNlbnNlCiAgICAgKiBDb3B5cmlnaHQgR29vZ2xlIExMQyBBbGwgUmlnaHRzIFJlc2VydmVkLgogICAgICoKICAgICAqIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGFuIE1JVC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCiAgICAgKiBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlIGF0IGh0dHBzOi8vYW5ndWxhci5pby9saWNlbnNlCiAgICAgKi9jbGFzcyBWeiBleHRlbmRzIFJBe2NvbnN0cnVjdG9yKHQsbixlLGEpe3N1cGVyKCksdGhpcy5fbmdab25lPXQsdGhpcy5fZWxlbWVudFJlZj1uLHRoaXMuX2NoYW5nZURldGVjdG9yUmVmPWUsdGhpcy5zbmFja0JhckNvbmZpZz1hLHRoaXMuX2Rlc3Ryb3llZD0hMSx0aGlzLl9vbkV4aXQ9bmV3IHgsdGhpcy5fb25FbnRlcj1uZXcgeCx0aGlzLl9hbmltYXRpb25TdGF0ZT0idm9pZCIsdGhpcy5hdHRhY2hEb21Qb3J0YWw9dD0+KHRoaXMuX2Fzc2VydE5vdEF0dGFjaGVkKCksdGhpcy5fYXBwbHlTbmFja0JhckNsYXNzZXMoKSx0aGlzLl9wb3J0YWxPdXRsZXQuYXR0YWNoRG9tUG9ydGFsKHQpKSx0aGlzLl9yb2xlPSJhc3NlcnRpdmUiIT09YS5wb2xpdGVuZXNzfHxhLmFubm91bmNlbWVudE1lc3NhZ2U/Im9mZiI9PT1hLnBvbGl0ZW5lc3M/bnVsbDoic3RhdHVzIjoiYWxlcnQifWF0dGFjaENvbXBvbmVudFBvcnRhbCh0KXtyZXR1cm4gdGhpcy5fYXNzZXJ0Tm90QXR0YWNoZWQoKSx0aGlzLl9hcHBseVNuYWNrQmFyQ2xhc3NlcygpLHRoaXMuX3BvcnRhbE91dGxldC5hdHRhY2hDb21wb25lbnRQb3J0YWwodCl9YXR0YWNoVGVtcGxhdGVQb3J0YWwodCl7cmV0dXJuIHRoaXMuX2Fzc2VydE5vdEF0dGFjaGVkKCksdGhpcy5fYXBwbHlTbmFja0JhckNsYXNzZXMoKSx0aGlzLl9wb3J0YWxPdXRsZXQuYXR0YWNoVGVtcGxhdGVQb3J0YWwodCl9b25BbmltYXRpb25FbmQodCl7Y29uc3R7ZnJvbVN0YXRlOm4sdG9TdGF0ZTplfT10O2lmKCgidm9pZCI9PT1lJiYidm9pZCIhPT1ufHwiaGlkZGVuIj09PWUpJiZ0aGlzLl9jb21wbGV0ZUV4aXQoKSwidmlzaWJsZSI9PT1lKXtjb25zdCB0PXRoaXMuX29uRW50ZXI7dGhpcy5fbmdab25lLnJ1bigoKCk9Pnt0Lm5leHQoKSx0LmNvbXBsZXRlKCl9KSl9fWVudGVyKCl7dGhpcy5fZGVzdHJveWVkfHwodGhpcy5fYW5pbWF0aW9uU3RhdGU9InZpc2libGUiLHRoaXMuX2NoYW5nZURldGVjdG9yUmVmLmRldGVjdENoYW5nZXMoKSl9ZXhpdCgpe3JldHVybiB0aGlzLl9hbmltYXRpb25TdGF0ZT0iaGlkZGVuIix0aGlzLl9lbGVtZW50UmVmLm5hdGl2ZUVsZW1lbnQuc2V0QXR0cmlidXRlKCJtYXQtZXhpdCIsIiIpLHRoaXMuX29uRXhpdH1uZ09uRGVzdHJveSgpe3RoaXMuX2Rlc3Ryb3llZD0hMCx0aGlzLl9jb21wbGV0ZUV4aXQoKX1fY29tcGxldGVFeGl0KCl7dGhpcy5fbmdab25lLm9uTWljcm90YXNrRW1wdHkucGlwZShUbigxKSkuc3Vic2NyaWJlKCgoKT0+e3RoaXMuX29uRXhpdC5uZXh0KCksdGhpcy5fb25FeGl0LmNvbXBsZXRlKCl9KSl9X2FwcGx5U25hY2tCYXJDbGFzc2VzKCl7Y29uc3QgdD10aGlzLl9lbGVtZW50UmVmLm5hdGl2ZUVsZW1lbnQsbj10aGlzLnNuYWNrQmFyQ29uZmlnLnBhbmVsQ2xhc3M7biYmKEFycmF5LmlzQXJyYXkobik/bi5mb3JFYWNoKChuPT50LmNsYXNzTGlzdC5hZGQobikpKTp0LmNsYXNzTGlzdC5hZGQobikpLCJjZW50ZXIiPT09dGhpcy5zbmFja0JhckNvbmZpZy5ob3Jpem9udGFsUG9zaXRpb24mJnQuY2xhc3NMaXN0LmFkZCgibWF0LXNuYWNrLWJhci1jZW50ZXIiKSwidG9wIj09PXRoaXMuc25hY2tCYXJDb25maWcudmVydGljYWxQb3NpdGlvbiYmdC5jbGFzc0xpc3QuYWRkKCJtYXQtc25hY2stYmFyLXRvcCIpfV9hc3NlcnROb3RBdHRhY2hlZCgpe2lmKHRoaXMuX3BvcnRhbE91dGxldC5oYXNBdHRhY2hlZCgpJiYoInVuZGVmaW5lZCI9PXR5cGVvZiBuZ0Rldk1vZGV8fG5nRGV2TW9kZSkpdGhyb3cgRXJyb3IoIkF0dGVtcHRpbmcgdG8gYXR0YWNoIHNuYWNrIGJhciBjb250ZW50IGFmdGVyIGNvbnRlbnQgaXMgYWxyZWFkeSBhdHRhY2hlZCIpfX1Wei7JtWZhYz1mdW5jdGlvbiB0KG4pe3JldHVybiBuZXcobnx8VnopKFpnKEpfKSxaZyh4dSksWmcoVm0pLFpnKE56KSl9LFZ6Lsm1Y21wPV9vKHt0eXBlOlZ6LHNlbGVjdG9yczpbWyJzbmFjay1iYXItY29udGFpbmVyIl1dLHZpZXdRdWVyeTpmdW5jdGlvbiB0KG4sZSl7dmFyIGE7MSZuJiZqZihGQSwhMCksMiZuJiZWZihhPVpmKCkpJiYoZS5fcG9ydGFsT3V0bGV0PWEuZmlyc3QpfSxob3N0QXR0cnM6WzEsIm1hdC1zbmFjay1iYXItY29udGFpbmVyIl0saG9zdFZhcnM6Mixob3N0QmluZGluZ3M6ZnVuY3Rpb24gdChuLGUpezEmbiYmc3AoIkBzdGF0ZS5kb25lIiwoZnVuY3Rpb24gdChuKXtyZXR1cm4gZS5vbkFuaW1hdGlvbkVuZChuKX0pKSwyJm4mJihOZygicm9sZSIsZS5fcm9sZSksYWIoIkBzdGF0ZSIsZS5fYW5pbWF0aW9uU3RhdGUpKX0sZmVhdHVyZXM6W2hnXSxkZWNsczoxLHZhcnM6MCxjb25zdHM6W1siY2RrUG9ydGFsT3V0bGV0IiwiIl1dLHRlbXBsYXRlOmZ1bmN0aW9uIHQobixlKXsxJm4mJllnKDAsRHosMCwwLCJuZy10ZW1wbGF0ZSIsMCl9LGRpcmVjdGl2ZXM6W0ZBXSxzdHlsZXM6WyIubWF0LXNuYWNrLWJhci1jb250YWluZXJ7Ym9yZGVyLXJhZGl1czo0cHg7Ym94LXNpemluZzpib3JkZXItYm94O2Rpc3BsYXk6YmxvY2s7bWFyZ2luOjI0cHg7bWF4LXdpZHRoOjMzdnc7bWluLXdpZHRoOjM0NHB4O3BhZGRpbmc6MTRweCAxNnB4O21pbi1oZWlnaHQ6NDhweDt0cmFuc2Zvcm0tb3JpZ2luOmNlbnRlcn0uY2RrLWhpZ2gtY29udHJhc3QtYWN0aXZlIC5tYXQtc25hY2stYmFyLWNvbnRhaW5lcntib3JkZXI6c29saWQgMXB4fS5tYXQtc25hY2stYmFyLWhhbmRzZXR7d2lkdGg6MTAwJX0ubWF0LXNuYWNrLWJhci1oYW5kc2V0IC5tYXQtc25hY2stYmFyLWNvbnRhaW5lcnttYXJnaW46OHB4O21heC13aWR0aDoxMDAlO21pbi13aWR0aDowO3dpZHRoOjEwMCV9XG4iXSxlbmNhcHN1bGF0aW9uOjIsZGF0YTp7YW5pbWF0aW9uOltCei5zbmFja0JhclN0YXRlXX19KSxWei5jdG9yUGFyYW1ldGVycz0oKT0+W3t0eXBlOkpffSx7dHlwZTp4dX0se3R5cGU6Vm19LHt0eXBlOk56fV0sVnoucHJvcERlY29yYXRvcnM9e19wb3J0YWxPdXRsZXQ6W3t0eXBlOlhkLGFyZ3M6W0ZBLHtzdGF0aWM6ITB9XX1dfTsKLyoqCiAgICAgKiBAbGljZW5zZQogICAgICogQ29weXJpZ2h0IEdvb2dsZSBMTEMgQWxsIFJpZ2h0cyBSZXNlcnZlZC4KICAgICAqCiAgICAgKiBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhbiBNSVQtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQogICAgICogZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZSBhdCBodHRwczovL2FuZ3VsYXIuaW8vbGljZW5zZQogICAgICovCmNsYXNzIGp6e31qei7JtW1vZD14byh7dHlwZTpqen0pLGp6Lsm1aW5qPUdlKHtmYWN0b3J5OmZ1bmN0aW9uIHQobil7cmV0dXJuIG5ldyhufHxqeil9LGltcG9ydHM6W1t5eixCQSxQTyxvQSx0RV0sdEVdfSksKCJ1bmRlZmluZWQiPT10eXBlb2YgbmdKaXRNb2RlfHxuZ0ppdE1vZGUpJiZ5byhqeix7ZGVjbGFyYXRpb25zOmZ1bmN0aW9uKCl7cmV0dXJuW1Z6LEh6XX0saW1wb3J0czpmdW5jdGlvbigpe3JldHVyblt5eixCQSxQTyxvQSx0RV19LGV4cG9ydHM6ZnVuY3Rpb24oKXtyZXR1cm5bVnosdEVdfX0pOwovKioKICAgICAqIEBsaWNlbnNlCiAgICAgKiBDb3B5cmlnaHQgR29vZ2xlIExMQyBBbGwgUmlnaHRzIFJlc2VydmVkLgogICAgICoKICAgICAqIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGFuIE1JVC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCiAgICAgKiBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlIGF0IGh0dHBzOi8vYW5ndWxhci5pby9saWNlbnNlCiAgICAgKi8KY29uc3QgVXo9bmV3IEZhKCJtYXQtc25hY2stYmFyLWRlZmF1bHQtb3B0aW9ucyIse3Byb3ZpZGVkSW46InJvb3QiLGZhY3Rvcnk6ZnVuY3Rpb24gV3ooKXtyZXR1cm4gbmV3IE56fX0pO2NsYXNzIEd6e2NvbnN0cnVjdG9yKHQsbixlLGEsbyxyKXt0aGlzLl9vdmVybGF5PXQsdGhpcy5fbGl2ZT1uLHRoaXMuX2luamVjdG9yPWUsdGhpcy5fYnJlYWtwb2ludE9ic2VydmVyPWEsdGhpcy5fcGFyZW50U25hY2tCYXI9byx0aGlzLl9kZWZhdWx0Q29uZmlnPXIsdGhpcy5fc25hY2tCYXJSZWZBdFRoaXNMZXZlbD1udWxsLHRoaXMuc2ltcGxlU25hY2tCYXJDb21wb25lbnQ9SHosdGhpcy5zbmFja0JhckNvbnRhaW5lckNvbXBvbmVudD1Weix0aGlzLmhhbmRzZXRDc3NDbGFzcz0ibWF0LXNuYWNrLWJhci1oYW5kc2V0In1nZXQgX29wZW5lZFNuYWNrQmFyUmVmKCl7Y29uc3QgdD10aGlzLl9wYXJlbnRTbmFja0JhcjtyZXR1cm4gdD90Ll9vcGVuZWRTbmFja0JhclJlZjp0aGlzLl9zbmFja0JhclJlZkF0VGhpc0xldmVsfXNldCBfb3BlbmVkU25hY2tCYXJSZWYodCl7dGhpcy5fcGFyZW50U25hY2tCYXI/dGhpcy5fcGFyZW50U25hY2tCYXIuX29wZW5lZFNuYWNrQmFyUmVmPXQ6dGhpcy5fc25hY2tCYXJSZWZBdFRoaXNMZXZlbD10fW9wZW5Gcm9tQ29tcG9uZW50KHQsbil7cmV0dXJuIHRoaXMuX2F0dGFjaCh0LG4pfW9wZW5Gcm9tVGVtcGxhdGUodCxuKXtyZXR1cm4gdGhpcy5fYXR0YWNoKHQsbil9b3Blbih0LG49IiIsZSl7Y29uc3QgYT1PYmplY3QuYXNzaWduKE9iamVjdC5hc3NpZ24oe30sdGhpcy5fZGVmYXVsdENvbmZpZyksZSk7cmV0dXJuIGEuZGF0YT17bWVzc2FnZTp0LGFjdGlvbjpufSxhLmFubm91bmNlbWVudE1lc3NhZ2U9PT10JiYoYS5hbm5vdW5jZW1lbnRNZXNzYWdlPXZvaWQgMCksdGhpcy5vcGVuRnJvbUNvbXBvbmVudCh0aGlzLnNpbXBsZVNuYWNrQmFyQ29tcG9uZW50LGEpfWRpc21pc3MoKXt0aGlzLl9vcGVuZWRTbmFja0JhclJlZiYmdGhpcy5fb3BlbmVkU25hY2tCYXJSZWYuZGlzbWlzcygpfW5nT25EZXN0cm95KCl7dGhpcy5fc25hY2tCYXJSZWZBdFRoaXNMZXZlbCYmdGhpcy5fc25hY2tCYXJSZWZBdFRoaXNMZXZlbC5kaXNtaXNzKCl9X2F0dGFjaFNuYWNrQmFyQ29udGFpbmVyKHQsbil7Y29uc3QgZT15ZC5jcmVhdGUoe3BhcmVudDpuJiZuLnZpZXdDb250YWluZXJSZWYmJm4udmlld0NvbnRhaW5lclJlZi5pbmplY3Rvcnx8dGhpcy5faW5qZWN0b3IscHJvdmlkZXJzOlt7cHJvdmlkZTpOeix1c2VWYWx1ZTpufV19KSxhPW5ldyBFQSh0aGlzLnNuYWNrQmFyQ29udGFpbmVyQ29tcG9uZW50LG4udmlld0NvbnRhaW5lclJlZixlKSxvPXQuYXR0YWNoKGEpO3JldHVybiBvLmluc3RhbmNlLnNuYWNrQmFyQ29uZmlnPW4sby5pbnN0YW5jZX1fYXR0YWNoKHQsbil7Y29uc3QgZT1PYmplY3QuYXNzaWduKE9iamVjdC5hc3NpZ24oT2JqZWN0LmFzc2lnbih7fSxuZXcgTnopLHRoaXMuX2RlZmF1bHRDb25maWcpLG4pLGE9dGhpcy5fY3JlYXRlT3ZlcmxheShlKSxvPXRoaXMuX2F0dGFjaFNuYWNrQmFyQ29udGFpbmVyKGEsZSkscj1uZXcgTHoobyxhKTtpZih0IGluc3RhbmNlb2YgSnUpe2NvbnN0IG49bmV3IEFBKHQsbnVsbCx7JGltcGxpY2l0OmUuZGF0YSxzbmFja0JhclJlZjpyfSk7ci5pbnN0YW5jZT1vLmF0dGFjaFRlbXBsYXRlUG9ydGFsKG4pfWVsc2V7Y29uc3Qgbj10aGlzLl9jcmVhdGVJbmplY3RvcihlLHIpLGE9bmV3IEVBKHQsdm9pZCAwLG4pLGk9by5hdHRhY2hDb21wb25lbnRQb3J0YWwoYSk7ci5pbnN0YW5jZT1pLmluc3RhbmNlfXJldHVybiB0aGlzLl9icmVha3BvaW50T2JzZXJ2ZXIub2JzZXJ2ZSgiKG1heC13aWR0aDogNTk5Ljk5cHgpIGFuZCAob3JpZW50YXRpb246IHBvcnRyYWl0KSIpLnBpcGUoZGUoYS5kZXRhY2htZW50cygpKSkuc3Vic2NyaWJlKCh0PT57Y29uc3Qgbj1hLm92ZXJsYXlFbGVtZW50LmNsYXNzTGlzdDt0Lm1hdGNoZXM/bi5hZGQodGhpcy5oYW5kc2V0Q3NzQ2xhc3MpOm4ucmVtb3ZlKHRoaXMuaGFuZHNldENzc0NsYXNzKX0pKSx0aGlzLl9hbmltYXRlU25hY2tCYXIocixlKSx0aGlzLl9vcGVuZWRTbmFja0JhclJlZj1yLHRoaXMuX29wZW5lZFNuYWNrQmFyUmVmfV9hbmltYXRlU25hY2tCYXIodCxuKXt0LmFmdGVyRGlzbWlzc2VkKCkuc3Vic2NyaWJlKCgoKT0+e3RoaXMuX29wZW5lZFNuYWNrQmFyUmVmPT10JiYodGhpcy5fb3BlbmVkU25hY2tCYXJSZWY9bnVsbCksbi5hbm5vdW5jZW1lbnRNZXNzYWdlJiZ0aGlzLl9saXZlLmNsZWFyKCl9KSksdGhpcy5fb3BlbmVkU25hY2tCYXJSZWY/KHRoaXMuX29wZW5lZFNuYWNrQmFyUmVmLmFmdGVyRGlzbWlzc2VkKCkuc3Vic2NyaWJlKCgoKT0+e3QuY29udGFpbmVySW5zdGFuY2UuZW50ZXIoKX0pKSx0aGlzLl9vcGVuZWRTbmFja0JhclJlZi5kaXNtaXNzKCkpOnQuY29udGFpbmVySW5zdGFuY2UuZW50ZXIoKSxuLmR1cmF0aW9uJiZuLmR1cmF0aW9uPjAmJnQuYWZ0ZXJPcGVuZWQoKS5zdWJzY3JpYmUoKCgpPT50Ll9kaXNtaXNzQWZ0ZXIobi5kdXJhdGlvbikpKSxuLmFubm91bmNlbWVudE1lc3NhZ2UmJnRoaXMuX2xpdmUuYW5ub3VuY2Uobi5hbm5vdW5jZW1lbnRNZXNzYWdlLG4ucG9saXRlbmVzcyl9X2NyZWF0ZU92ZXJsYXkodCl7Y29uc3Qgbj1uZXcgWEE7bi5kaXJlY3Rpb249dC5kaXJlY3Rpb247bGV0IGU9dGhpcy5fb3ZlcmxheS5wb3NpdGlvbigpLmdsb2JhbCgpO2NvbnN0IGE9InJ0bCI9PT10LmRpcmVjdGlvbixvPSJsZWZ0Ij09PXQuaG9yaXpvbnRhbFBvc2l0aW9ufHwic3RhcnQiPT09dC5ob3Jpem9udGFsUG9zaXRpb24mJiFhfHwiZW5kIj09PXQuaG9yaXpvbnRhbFBvc2l0aW9uJiZhLHI9IW8mJiJjZW50ZXIiIT09dC5ob3Jpem9udGFsUG9zaXRpb247cmV0dXJuIG8/ZS5sZWZ0KCIwIik6cj9lLnJpZ2h0KCIwIik6ZS5jZW50ZXJIb3Jpem9udGFsbHkoKSwidG9wIj09PXQudmVydGljYWxQb3NpdGlvbj9lLnRvcCgiMCIpOmUuYm90dG9tKCIwIiksbi5wb3NpdGlvblN0cmF0ZWd5PWUsdGhpcy5fb3ZlcmxheS5jcmVhdGUobil9X2NyZWF0ZUluamVjdG9yKHQsbil7cmV0dXJuIHlkLmNyZWF0ZSh7cGFyZW50OnQmJnQudmlld0NvbnRhaW5lclJlZiYmdC52aWV3Q29udGFpbmVyUmVmLmluamVjdG9yfHx0aGlzLl9pbmplY3Rvcixwcm92aWRlcnM6W3twcm92aWRlOkx6LHVzZVZhbHVlOm59LHtwcm92aWRlOkl6LHVzZVZhbHVlOnQuZGF0YX1dfSl9fXZhciBZejtHei7JtWZhYz1mdW5jdGlvbiB0KG4pe3JldHVybiBuZXcobnx8R3opKFphKGh6KSxaYShTUyksWmEoeWQpLFphKHp6KSxaYShHeiwxMiksWmEoVXopKX0sR3ouybVwcm92PVdlKHtmYWN0b3J5OmZ1bmN0aW9uIHQoKXtyZXR1cm4gbmV3IEd6KFphKGh6KSxaYShTUyksWmEoTGEpLFphKHp6KSxaYShHeiwxMiksWmEoVXopKX0sdG9rZW46R3oscHJvdmlkZWRJbjpqen0pLEd6LmN0b3JQYXJhbWV0ZXJzPSgpPT5be3R5cGU6aHp9LHt0eXBlOlNTfSx7dHlwZTp5ZH0se3R5cGU6enp9LHt0eXBlOkd6LGRlY29yYXRvcnM6W3t0eXBlOk5lfSx7dHlwZTpMZX1dfSx7dHlwZTpOeixkZWNvcmF0b3JzOlt7dHlwZTpJZSxhcmdzOltVel19XX1dLChmdW5jdGlvbih0KXt0W3QuVU5LTk9XTj0wXT0iVU5LTk9XTiIsdFt0LkVYUEVSSU1FTlRTPTFdPSJFWFBFUklNRU5UUyIsdFt0LkVYUEVSSU1FTlQ9Ml09IkVYUEVSSU1FTlQiLHRbdC5DT01QQVJFX0VYUEVSSU1FTlQ9M109IkNPTVBBUkVfRVhQRVJJTUVOVCJ9KShZenx8KFl6PXt9KSk7Y29uc3QgcXo9ImRlZmF1bHRFeHBlcmltZW50SWQiO2Z1bmN0aW9uIFp6KHQpe3JldHVybiB0LnNwbGl0KCIsIikubWFwKCh0PT57Y29uc3Qgbj10LmluZGV4T2YoIjoiKTtpZihuPDApdGhyb3cgbmV3IEVycm9yKGBFeHBlY3QgY29sb24gZGVsaW1pdGluZyBuYW1lIGFuZCBJRDogJHt0fWApO2NvbnN0IGU9dC5zbGljZSgwLG4pLGE9dC5zbGljZShuKzEpO2lmKCFlKXRocm93IG5ldyBFcnJvcihgRXhwZWN0IG5hbWUgdG8gYmUgbm9uLWZhbHN5OiAke3R9YCk7aWYoIWEpdGhyb3cgbmV3IEVycm9yKGBFeHBlY3QgaWQgdG8gYmUgbm9uLWZhbHN5OiAke3R9YCk7cmV0dXJue25hbWU6ZSxpZDphfX0pKX1mdW5jdGlvbiBYeih0LG4pe3N3aXRjaCh0KXtjYXNlIFl6LkNPTVBBUkVfRVhQRVJJTUVOVDpyZXR1cm5gJHt0fS8ke24uZXhwZXJpbWVudElkc31gO2Nhc2UgWXouRVhQRVJJTUVOVDpyZXR1cm5gJHt0fS8ke24uZXhwZXJpbWVudElkfWA7Y2FzZSBZei5FWFBFUklNRU5UUzpyZXR1cm4gU3RyaW5nKHQpO2RlZmF1bHQ6cmV0dXJuIiJ9fWNvbnN0IEp6PSJhcHBfcm91dGluZyIsUXo9dXYoSnopLEt6PXB2KFF6LCh0PT50LmFjdGl2ZVJvdXRlKSksJHo9cHYoUXosKHQ9PnQubmV4dFJvdXRlKSksdFI9cHYoS3osKHQ9PnQ/dC5yb3V0ZUtpbmQ6WXouVU5LTk9XTikpLG5SPXB2KEt6LCh0PT50P3QucGFyYW1zOnt9KSksZVI9cHYodFIsblIsKCh0LG4pPT4oZnVuY3Rpb24gZSh0LG4pe3N3aXRjaCh0KXtjYXNlIFl6LkVYUEVSSU1FTlQ6cmV0dXJuIE9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbChuLCJleHBlcmltZW50SWQiKT9bbi5leHBlcmltZW50SWRdOltxel07Y2FzZSBZei5DT01QQVJFX0VYUEVSSU1FTlQ6cmV0dXJuIFp6KG4uZXhwZXJpbWVudElkcykubWFwKCgoe2lkOnR9KT0+dCkpO2Nhc2UgWXouRVhQRVJJTUVOVFM6ZGVmYXVsdDpyZXR1cm4gbnVsbH19KSh0LG4pKSksYVI9cHYodFIsblIsKCh0LG4pPT5Yeih0LG4pKSksb1I9cHYodFIsblIsKCh0LG4pPT57Y29uc3QgZT17fTtpZih0IT09WXouQ09NUEFSRV9FWFBFUklNRU5UKXJldHVybiBlO2NvbnN0IGE9Wnoobi5leHBlcmltZW50SWRzKTtmb3IoY29uc3R7aWQ6dCxuYW1lOm59b2YgYSllW3RdPW47cmV0dXJuIGV9KSksclI9ImV4cGVyaW1lbnRzIixpUj1wdih1dihyUiksKHQ9PnQuZGF0YSkpLGNSPXB2KGlSLCgodCxuKT0+e2NvbnN0e2V4cGVyaW1lbnRJZDplfT1uO3JldHVybiB0LmV4cGVyaW1lbnRNYXBbZV18fG51bGx9KSksc1I9ImZlYXR1cmUiLGxSPXV2KHNSKSxtUj1wdihsUiwodD0+dC5pc0ZlYXR1cmVGbGFnc0xvYWRlZCkpLGRSPXB2KGxSLCh0PT5PYmplY3QuYXNzaWduKE9iamVjdC5hc3NpZ24oe30sdC5kZWZhdWx0RmxhZ3MpLHQuZmxhZ092ZXJyaWRlcykpKSxnUj1wdihsUiwodD0+dC5mbGFnT3ZlcnJpZGVzfHx7fSkpLHBSPXB2KGRSLCh0PT50LmVuYWJsZWRFeHBlcmltZW50YWxQbHVnaW5zKSksYlI9cHYoZFIsKHQ9PnQuaW5Db2xhYikpLHVSPXB2KGRSLCh0PT50LmVuYWJsZUdwdUNoYXJ0KSk7dmFyIGZSLGhSOwovKiEgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKICAgIENvcHlyaWdodCAoYykgTWljcm9zb2Z0IENvcnBvcmF0aW9uLgoKICAgIFBlcm1pc3Npb24gdG8gdXNlLCBjb3B5LCBtb2RpZnksIGFuZC9vciBkaXN0cmlidXRlIHRoaXMgc29mdHdhcmUgZm9yIGFueQogICAgcHVycG9zZSB3aXRoIG9yIHdpdGhvdXQgZmVlIGlzIGhlcmVieSBncmFudGVkLgoKICAgIFRIRSBTT0ZUV0FSRSBJUyBQUk9WSURFRCAiQVMgSVMiIEFORCBUSEUgQVVUSE9SIERJU0NMQUlNUyBBTEwgV0FSUkFOVElFUyBXSVRICiAgICBSRUdBUkQgVE8gVEhJUyBTT0ZUV0FSRSBJTkNMVURJTkcgQUxMIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkKICAgIEFORCBGSVRORVNTLiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQVVUSE9SIEJFIExJQUJMRSBGT1IgQU5ZIFNQRUNJQUwsIERJUkVDVCwKICAgIElORElSRUNULCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgT1IgQU5ZIERBTUFHRVMgV0hBVFNPRVZFUiBSRVNVTFRJTkcgRlJPTQogICAgTE9TUyBPRiBVU0UsIERBVEEgT1IgUFJPRklUUywgV0hFVEhFUiBJTiBBTiBBQ1RJT04gT0YgQ09OVFJBQ1QsIE5FR0xJR0VOQ0UgT1IKICAgIE9USEVSIFRPUlRJT1VTIEFDVElPTiwgQVJJU0lORyBPVVQgT0YgT1IgSU4gQ09OTkVDVElPTiBXSVRIIFRIRSBVU0UgT1IKICAgIFBFUkZPUk1BTkNFIE9GIFRISVMgU09GVFdBUkUuCiAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiAqLwpmdW5jdGlvbiBfUih0LG4pe3ZhciBlPXt9O2Zvcih2YXIgYSBpbiB0KU9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbCh0LGEpJiZuLmluZGV4T2YoYSk8MCYmKGVbYV09dFthXSk7aWYobnVsbCE9dCYmImZ1bmN0aW9uIj09dHlwZW9mIE9iamVjdC5nZXRPd25Qcm9wZXJ0eVN5bWJvbHMpe3ZhciBvPTA7Zm9yKGE9T2JqZWN0LmdldE93blByb3BlcnR5U3ltYm9scyh0KTtvPGEubGVuZ3RoO28rKyluLmluZGV4T2YoYVtvXSk8MCYmT2JqZWN0LnByb3RvdHlwZS5wcm9wZXJ0eUlzRW51bWVyYWJsZS5jYWxsKHQsYVtvXSkmJihlW2Fbb11dPXRbYVtvXV0pfXJldHVybiBlfWZ1bmN0aW9uIENSKHQsbixlLGEpe3JldHVybiBuZXcoZXx8KGU9UHJvbWlzZSkpKChmdW5jdGlvbihvLHIpe2Z1bmN0aW9uIGkodCl7dHJ5e3MoYS5uZXh0KHQpKX1jYXRjaCh0KXtyKHQpfX1mdW5jdGlvbiBjKHQpe3RyeXtzKGEudGhyb3codCkpfWNhdGNoKHQpe3IodCl9fWZ1bmN0aW9uIHModCl7dC5kb25lP28odC52YWx1ZSk6KGZ1bmN0aW9uIG4odCl7cmV0dXJuIHQgaW5zdGFuY2VvZiBlP3Q6bmV3IGUoKGZ1bmN0aW9uKG4pe24odCl9KSl9KSh0LnZhbHVlKS50aGVuKGksYyl9cygoYT1hLmFwcGx5KHQsbnx8W10pKS5uZXh0KCkpfSkpfQovKioKICAgICAqIEBsaWNlbnNlIEFuZ3VsYXIgdjEwLjIuNAogICAgICogKGMpIDIwMTAtMjAyMCBHb29nbGUgTExDLiBodHRwczovL2FuZ3VsYXIuaW8vCiAgICAgKiBMaWNlbnNlOiBNSVQKICAgICAqLyEoZnVuY3Rpb24odCl7dFt0Lk5PVF9MT0FERUQ9MF09Ik5PVF9MT0FERUQiLHRbdC5MT0FERUQ9MV09IkxPQURFRCIsdFt0LkxPQURJTkc9Ml09IkxPQURJTkciLHRbdC5GQUlMRUQ9M109IkZBSUxFRCJ9KShmUnx8KGZSPXt9KSk7Y2xhc3MgTVJ7fWNsYXNzIE9Se30KLyoqCiAgICAgKiBAbGljZW5zZQogICAgICogQ29weXJpZ2h0IEdvb2dsZSBMTEMgQWxsIFJpZ2h0cyBSZXNlcnZlZC4KICAgICAqCiAgICAgKiBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhbiBNSVQtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQogICAgICogZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZSBhdCBodHRwczovL2FuZ3VsYXIuaW8vbGljZW5zZQogICAgICovY2xhc3MgUFJ7Y29uc3RydWN0b3IodCl7dGhpcy5ub3JtYWxpemVkTmFtZXM9bmV3IE1hcCx0aGlzLmxhenlVcGRhdGU9bnVsbCx0P3RoaXMubGF6eUluaXQ9InN0cmluZyI9PXR5cGVvZiB0PygpPT57dGhpcy5oZWFkZXJzPW5ldyBNYXAsdC5zcGxpdCgiXG4iKS5mb3JFYWNoKCh0PT57Y29uc3Qgbj10LmluZGV4T2YoIjoiKTtpZihuPjApe2NvbnN0IGU9dC5zbGljZSgwLG4pLGE9ZS50b0xvd2VyQ2FzZSgpLG89dC5zbGljZShuKzEpLnRyaW0oKTt0aGlzLm1heWJlU2V0Tm9ybWFsaXplZE5hbWUoZSxhKSx0aGlzLmhlYWRlcnMuaGFzKGEpP3RoaXMuaGVhZGVycy5nZXQoYSkucHVzaChvKTp0aGlzLmhlYWRlcnMuc2V0KGEsW29dKX19KSl9OigpPT57dGhpcy5oZWFkZXJzPW5ldyBNYXAsT2JqZWN0LmtleXModCkuZm9yRWFjaCgobj0+e2xldCBlPXRbbl07Y29uc3QgYT1uLnRvTG93ZXJDYXNlKCk7InN0cmluZyI9PXR5cGVvZiBlJiYoZT1bZV0pLGUubGVuZ3RoPjAmJih0aGlzLmhlYWRlcnMuc2V0KGEsZSksdGhpcy5tYXliZVNldE5vcm1hbGl6ZWROYW1lKG4sYSkpfSkpfTp0aGlzLmhlYWRlcnM9bmV3IE1hcH1oYXModCl7cmV0dXJuIHRoaXMuaW5pdCgpLHRoaXMuaGVhZGVycy5oYXModC50b0xvd2VyQ2FzZSgpKX1nZXQodCl7dGhpcy5pbml0KCk7Y29uc3Qgbj10aGlzLmhlYWRlcnMuZ2V0KHQudG9Mb3dlckNhc2UoKSk7cmV0dXJuIG4mJm4ubGVuZ3RoPjA/blswXTpudWxsfWtleXMoKXtyZXR1cm4gdGhpcy5pbml0KCksQXJyYXkuZnJvbSh0aGlzLm5vcm1hbGl6ZWROYW1lcy52YWx1ZXMoKSl9Z2V0QWxsKHQpe3JldHVybiB0aGlzLmluaXQoKSx0aGlzLmhlYWRlcnMuZ2V0KHQudG9Mb3dlckNhc2UoKSl8fG51bGx9YXBwZW5kKHQsbil7cmV0dXJuIHRoaXMuY2xvbmUoe25hbWU6dCx2YWx1ZTpuLG9wOiJhIn0pfXNldCh0LG4pe3JldHVybiB0aGlzLmNsb25lKHtuYW1lOnQsdmFsdWU6bixvcDoicyJ9KX1kZWxldGUodCxuKXtyZXR1cm4gdGhpcy5jbG9uZSh7bmFtZTp0LHZhbHVlOm4sb3A6ImQifSl9bWF5YmVTZXROb3JtYWxpemVkTmFtZSh0LG4pe3RoaXMubm9ybWFsaXplZE5hbWVzLmhhcyhuKXx8dGhpcy5ub3JtYWxpemVkTmFtZXMuc2V0KG4sdCl9aW5pdCgpe3RoaXMubGF6eUluaXQmJih0aGlzLmxhenlJbml0IGluc3RhbmNlb2YgUFI/dGhpcy5jb3B5RnJvbSh0aGlzLmxhenlJbml0KTp0aGlzLmxhenlJbml0KCksdGhpcy5sYXp5SW5pdD1udWxsLHRoaXMubGF6eVVwZGF0ZSYmKHRoaXMubGF6eVVwZGF0ZS5mb3JFYWNoKCh0PT50aGlzLmFwcGx5VXBkYXRlKHQpKSksdGhpcy5sYXp5VXBkYXRlPW51bGwpKX1jb3B5RnJvbSh0KXt0LmluaXQoKSxBcnJheS5mcm9tKHQuaGVhZGVycy5rZXlzKCkpLmZvckVhY2goKG49Pnt0aGlzLmhlYWRlcnMuc2V0KG4sdC5oZWFkZXJzLmdldChuKSksdGhpcy5ub3JtYWxpemVkTmFtZXMuc2V0KG4sdC5ub3JtYWxpemVkTmFtZXMuZ2V0KG4pKX0pKX1jbG9uZSh0KXtjb25zdCBuPW5ldyBQUjtyZXR1cm4gbi5sYXp5SW5pdD10aGlzLmxhenlJbml0JiZ0aGlzLmxhenlJbml0IGluc3RhbmNlb2YgUFI/dGhpcy5sYXp5SW5pdDp0aGlzLG4ubGF6eVVwZGF0ZT0odGhpcy5sYXp5VXBkYXRlfHxbXSkuY29uY2F0KFt0XSksbn1hcHBseVVwZGF0ZSh0KXtjb25zdCBuPXQubmFtZS50b0xvd2VyQ2FzZSgpO3N3aXRjaCh0Lm9wKXtjYXNlImEiOmNhc2UicyI6bGV0IGU9dC52YWx1ZTtpZigic3RyaW5nIj09dHlwZW9mIGUmJihlPVtlXSksMD09PWUubGVuZ3RoKXJldHVybjt0aGlzLm1heWJlU2V0Tm9ybWFsaXplZE5hbWUodC5uYW1lLG4pO2NvbnN0IGE9KCJhIj09PXQub3A/dGhpcy5oZWFkZXJzLmdldChuKTp2b2lkIDApfHxbXTthLnB1c2goLi4uZSksdGhpcy5oZWFkZXJzLnNldChuLGEpO2JyZWFrO2Nhc2UiZCI6Y29uc3Qgbz10LnZhbHVlO2lmKG8pe2xldCB0PXRoaXMuaGVhZGVycy5nZXQobik7aWYoIXQpcmV0dXJuO3Q9dC5maWx0ZXIoKHQ9Pi0xPT09by5pbmRleE9mKHQpKSksMD09PXQubGVuZ3RoPyh0aGlzLmhlYWRlcnMuZGVsZXRlKG4pLHRoaXMubm9ybWFsaXplZE5hbWVzLmRlbGV0ZShuKSk6dGhpcy5oZWFkZXJzLnNldChuLHQpfWVsc2UgdGhpcy5oZWFkZXJzLmRlbGV0ZShuKSx0aGlzLm5vcm1hbGl6ZWROYW1lcy5kZWxldGUobil9fWZvckVhY2godCl7dGhpcy5pbml0KCksQXJyYXkuZnJvbSh0aGlzLm5vcm1hbGl6ZWROYW1lcy5rZXlzKCkpLmZvckVhY2goKG49PnQodGhpcy5ub3JtYWxpemVkTmFtZXMuZ2V0KG4pLHRoaXMuaGVhZGVycy5nZXQobikpKSl9fQovKioKICAgICAqIEBsaWNlbnNlCiAgICAgKiBDb3B5cmlnaHQgR29vZ2xlIExMQyBBbGwgUmlnaHRzIFJlc2VydmVkLgogICAgICoKICAgICAqIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGFuIE1JVC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCiAgICAgKiBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlIGF0IGh0dHBzOi8vYW5ndWxhci5pby9saWNlbnNlCiAgICAgKi9jbGFzcyB4UntlbmNvZGVLZXkodCl7cmV0dXJuIHlSKHQpfWVuY29kZVZhbHVlKHQpe3JldHVybiB5Uih0KX1kZWNvZGVLZXkodCl7cmV0dXJuIGRlY29kZVVSSUNvbXBvbmVudCh0KX1kZWNvZGVWYWx1ZSh0KXtyZXR1cm4gZGVjb2RlVVJJQ29tcG9uZW50KHQpfX1mdW5jdGlvbiB5Uih0KXtyZXR1cm4gZW5jb2RlVVJJQ29tcG9uZW50KHQpLnJlcGxhY2UoLyU0MC9naSwiQCIpLnJlcGxhY2UoLyUzQS9naSwiOiIpLnJlcGxhY2UoLyUyNC9naSwiJCIpLnJlcGxhY2UoLyUyQy9naSwiLCIpLnJlcGxhY2UoLyUzQi9naSwiOyIpLnJlcGxhY2UoLyUyQi9naSwiKyIpLnJlcGxhY2UoLyUzRC9naSwiPSIpLnJlcGxhY2UoLyUzRi9naSwiPyIpLnJlcGxhY2UoLyUyRi9naSwiLyIpfWNsYXNzIGtSe2NvbnN0cnVjdG9yKHQ9e30pe2lmKHRoaXMudXBkYXRlcz1udWxsLHRoaXMuY2xvbmVGcm9tPW51bGwsdGhpcy5lbmNvZGVyPXQuZW5jb2Rlcnx8bmV3IHhSLHQuZnJvbVN0cmluZyl7aWYodC5mcm9tT2JqZWN0KXRocm93IG5ldyBFcnJvcigiQ2Fubm90IHNwZWNpZnkgYm90aCBmcm9tU3RyaW5nIGFuZCBmcm9tT2JqZWN0LiIpO3RoaXMubWFwPShmdW5jdGlvbiBuKHQsZSl7Y29uc3QgYT1uZXcgTWFwO3JldHVybiB0Lmxlbmd0aD4wJiZ0LnNwbGl0KCImIikuZm9yRWFjaCgodD0+e2NvbnN0IG49dC5pbmRleE9mKCI9IiksW28scl09LTE9PW4/W2UuZGVjb2RlS2V5KHQpLCIiXTpbZS5kZWNvZGVLZXkodC5zbGljZSgwLG4pKSxlLmRlY29kZVZhbHVlKHQuc2xpY2UobisxKSldLGk9YS5nZXQobyl8fFtdO2kucHVzaChyKSxhLnNldChvLGkpfSkpLGF9KSh0LmZyb21TdHJpbmcsdGhpcy5lbmNvZGVyKX1lbHNlIHQuZnJvbU9iamVjdD8odGhpcy5tYXA9bmV3IE1hcCxPYmplY3Qua2V5cyh0LmZyb21PYmplY3QpLmZvckVhY2goKG49Pntjb25zdCBlPXQuZnJvbU9iamVjdFtuXTt0aGlzLm1hcC5zZXQobixBcnJheS5pc0FycmF5KGUpP2U6W2VdKX0pKSk6dGhpcy5tYXA9bnVsbH1oYXModCl7cmV0dXJuIHRoaXMuaW5pdCgpLHRoaXMubWFwLmhhcyh0KX1nZXQodCl7dGhpcy5pbml0KCk7Y29uc3Qgbj10aGlzLm1hcC5nZXQodCk7cmV0dXJuIG4/blswXTpudWxsfWdldEFsbCh0KXtyZXR1cm4gdGhpcy5pbml0KCksdGhpcy5tYXAuZ2V0KHQpfHxudWxsfWtleXMoKXtyZXR1cm4gdGhpcy5pbml0KCksQXJyYXkuZnJvbSh0aGlzLm1hcC5rZXlzKCkpfWFwcGVuZCh0LG4pe3JldHVybiB0aGlzLmNsb25lKHtwYXJhbTp0LHZhbHVlOm4sb3A6ImEifSl9c2V0KHQsbil7cmV0dXJuIHRoaXMuY2xvbmUoe3BhcmFtOnQsdmFsdWU6bixvcDoicyJ9KX1kZWxldGUodCxuKXtyZXR1cm4gdGhpcy5jbG9uZSh7cGFyYW06dCx2YWx1ZTpuLG9wOiJkIn0pfXRvU3RyaW5nKCl7cmV0dXJuIHRoaXMuaW5pdCgpLHRoaXMua2V5cygpLm1hcCgodD0+e2NvbnN0IG49dGhpcy5lbmNvZGVyLmVuY29kZUtleSh0KTtyZXR1cm4gdGhpcy5tYXAuZ2V0KHQpLm1hcCgodD0+bisiPSIrdGhpcy5lbmNvZGVyLmVuY29kZVZhbHVlKHQpKSkuam9pbigiJiIpfSkpLmZpbHRlcigodD0+IiIhPT10KSkuam9pbigiJiIpfWNsb25lKHQpe2NvbnN0IG49bmV3IGtSKHtlbmNvZGVyOnRoaXMuZW5jb2Rlcn0pO3JldHVybiBuLmNsb25lRnJvbT10aGlzLmNsb25lRnJvbXx8dGhpcyxuLnVwZGF0ZXM9KHRoaXMudXBkYXRlc3x8W10pLmNvbmNhdChbdF0pLG59aW5pdCgpe251bGw9PT10aGlzLm1hcCYmKHRoaXMubWFwPW5ldyBNYXApLG51bGwhPT10aGlzLmNsb25lRnJvbSYmKHRoaXMuY2xvbmVGcm9tLmluaXQoKSx0aGlzLmNsb25lRnJvbS5rZXlzKCkuZm9yRWFjaCgodD0+dGhpcy5tYXAuc2V0KHQsdGhpcy5jbG9uZUZyb20ubWFwLmdldCh0KSkpKSx0aGlzLnVwZGF0ZXMuZm9yRWFjaCgodD0+e3N3aXRjaCh0Lm9wKXtjYXNlImEiOmNhc2UicyI6Y29uc3Qgbj0oImEiPT09dC5vcD90aGlzLm1hcC5nZXQodC5wYXJhbSk6dm9pZCAwKXx8W107bi5wdXNoKHQudmFsdWUpLHRoaXMubWFwLnNldCh0LnBhcmFtLG4pO2JyZWFrO2Nhc2UiZCI6aWYodm9pZCAwPT09dC52YWx1ZSl7dGhpcy5tYXAuZGVsZXRlKHQucGFyYW0pO2JyZWFrfXtsZXQgbj10aGlzLm1hcC5nZXQodC5wYXJhbSl8fFtdO2NvbnN0IGU9bi5pbmRleE9mKHQudmFsdWUpOy0xIT09ZSYmbi5zcGxpY2UoZSwxKSxuLmxlbmd0aD4wP3RoaXMubWFwLnNldCh0LnBhcmFtLG4pOnRoaXMubWFwLmRlbGV0ZSh0LnBhcmFtKX19fSkpLHRoaXMuY2xvbmVGcm9tPXRoaXMudXBkYXRlcz1udWxsKX19Ci8qKgogICAgICogQGxpY2Vuc2UKICAgICAqIENvcHlyaWdodCBHb29nbGUgTExDIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCiAgICAgKgogICAgICogVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYW4gTUlULXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKICAgICAqIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUgYXQgaHR0cHM6Ly9hbmd1bGFyLmlvL2xpY2Vuc2UKICAgICAqL2Z1bmN0aW9uIHZSKHQpe3JldHVybiJ1bmRlZmluZWQiIT10eXBlb2YgQXJyYXlCdWZmZXImJnQgaW5zdGFuY2VvZiBBcnJheUJ1ZmZlcn1mdW5jdGlvbiB3Uih0KXtyZXR1cm4idW5kZWZpbmVkIiE9dHlwZW9mIEJsb2ImJnQgaW5zdGFuY2VvZiBCbG9ifWZ1bmN0aW9uIFNSKHQpe3JldHVybiJ1bmRlZmluZWQiIT10eXBlb2YgRm9ybURhdGEmJnQgaW5zdGFuY2VvZiBGb3JtRGF0YX1jbGFzcyBFUntjb25zdHJ1Y3Rvcih0LG4sZSxhKXtsZXQgbztpZih0aGlzLnVybD1uLHRoaXMuYm9keT1udWxsLHRoaXMucmVwb3J0UHJvZ3Jlc3M9ITEsdGhpcy53aXRoQ3JlZGVudGlhbHM9ITEsdGhpcy5yZXNwb25zZVR5cGU9Impzb24iLHRoaXMubWV0aG9kPXQudG9VcHBlckNhc2UoKSwoZnVuY3Rpb24gcih0KXtzd2l0Y2godCl7Y2FzZSJERUxFVEUiOmNhc2UiR0VUIjpjYXNlIkhFQUQiOmNhc2UiT1BUSU9OUyI6Y2FzZSJKU09OUCI6cmV0dXJuITE7ZGVmYXVsdDpyZXR1cm4hMH19KSh0aGlzLm1ldGhvZCl8fGE/KHRoaXMuYm9keT12b2lkIDAhPT1lP2U6bnVsbCxvPWEpOm89ZSxvJiYodGhpcy5yZXBvcnRQcm9ncmVzcz0hIW8ucmVwb3J0UHJvZ3Jlc3MsdGhpcy53aXRoQ3JlZGVudGlhbHM9ISFvLndpdGhDcmVkZW50aWFscyxvLnJlc3BvbnNlVHlwZSYmKHRoaXMucmVzcG9uc2VUeXBlPW8ucmVzcG9uc2VUeXBlKSxvLmhlYWRlcnMmJih0aGlzLmhlYWRlcnM9by5oZWFkZXJzKSxvLnBhcmFtcyYmKHRoaXMucGFyYW1zPW8ucGFyYW1zKSksdGhpcy5oZWFkZXJzfHwodGhpcy5oZWFkZXJzPW5ldyBQUiksdGhpcy5wYXJhbXMpe2NvbnN0IHQ9dGhpcy5wYXJhbXMudG9TdHJpbmcoKTtpZigwPT09dC5sZW5ndGgpdGhpcy51cmxXaXRoUGFyYW1zPW47ZWxzZXtjb25zdCBlPW4uaW5kZXhPZigiPyIpO3RoaXMudXJsV2l0aFBhcmFtcz1uKygtMT09PWU/Ij8iOmU8bi5sZW5ndGgtMT8iJiI6IiIpK3R9fWVsc2UgdGhpcy5wYXJhbXM9bmV3IGtSLHRoaXMudXJsV2l0aFBhcmFtcz1ufXNlcmlhbGl6ZUJvZHkoKXtyZXR1cm4gbnVsbD09PXRoaXMuYm9keT9udWxsOnZSKHRoaXMuYm9keSl8fHdSKHRoaXMuYm9keSl8fFNSKHRoaXMuYm9keSl8fCJzdHJpbmciPT10eXBlb2YgdGhpcy5ib2R5P3RoaXMuYm9keTp0aGlzLmJvZHkgaW5zdGFuY2VvZiBrUj90aGlzLmJvZHkudG9TdHJpbmcoKToib2JqZWN0Ij09dHlwZW9mIHRoaXMuYm9keXx8ImJvb2xlYW4iPT10eXBlb2YgdGhpcy5ib2R5fHxBcnJheS5pc0FycmF5KHRoaXMuYm9keSk/SlNPTi5zdHJpbmdpZnkodGhpcy5ib2R5KTp0aGlzLmJvZHkudG9TdHJpbmcoKX1kZXRlY3RDb250ZW50VHlwZUhlYWRlcigpe3JldHVybiBudWxsPT09dGhpcy5ib2R5fHxTUih0aGlzLmJvZHkpP251bGw6d1IodGhpcy5ib2R5KT90aGlzLmJvZHkudHlwZXx8bnVsbDp2Uih0aGlzLmJvZHkpP251bGw6InN0cmluZyI9PXR5cGVvZiB0aGlzLmJvZHk/InRleHQvcGxhaW4iOnRoaXMuYm9keSBpbnN0YW5jZW9mIGtSPyJhcHBsaWNhdGlvbi94LXd3dy1mb3JtLXVybGVuY29kZWQ7Y2hhcnNldD1VVEYtOCI6Im9iamVjdCI9PXR5cGVvZiB0aGlzLmJvZHl8fCJudW1iZXIiPT10eXBlb2YgdGhpcy5ib2R5fHxBcnJheS5pc0FycmF5KHRoaXMuYm9keSk/ImFwcGxpY2F0aW9uL2pzb24iOm51bGx9Y2xvbmUodD17fSl7Y29uc3Qgbj10Lm1ldGhvZHx8dGhpcy5tZXRob2QsZT10LnVybHx8dGhpcy51cmwsYT10LnJlc3BvbnNlVHlwZXx8dGhpcy5yZXNwb25zZVR5cGUsbz12b2lkIDAhPT10LmJvZHk/dC5ib2R5OnRoaXMuYm9keSxyPXZvaWQgMCE9PXQud2l0aENyZWRlbnRpYWxzP3Qud2l0aENyZWRlbnRpYWxzOnRoaXMud2l0aENyZWRlbnRpYWxzLGk9dm9pZCAwIT09dC5yZXBvcnRQcm9ncmVzcz90LnJlcG9ydFByb2dyZXNzOnRoaXMucmVwb3J0UHJvZ3Jlc3M7bGV0IGM9dC5oZWFkZXJzfHx0aGlzLmhlYWRlcnMscz10LnBhcmFtc3x8dGhpcy5wYXJhbXM7cmV0dXJuIHZvaWQgMCE9PXQuc2V0SGVhZGVycyYmKGM9T2JqZWN0LmtleXModC5zZXRIZWFkZXJzKS5yZWR1Y2UoKChuLGUpPT5uLnNldChlLHQuc2V0SGVhZGVyc1tlXSkpLGMpKSx0LnNldFBhcmFtcyYmKHM9T2JqZWN0LmtleXModC5zZXRQYXJhbXMpLnJlZHVjZSgoKG4sZSk9Pm4uc2V0KGUsdC5zZXRQYXJhbXNbZV0pKSxzKSksbmV3IEVSKG4sZSxvLHtwYXJhbXM6cyxoZWFkZXJzOmMscmVwb3J0UHJvZ3Jlc3M6aSxyZXNwb25zZVR5cGU6YSx3aXRoQ3JlZGVudGlhbHM6cn0pfX0KLyoqCiAgICAgKiBAbGljZW5zZQogICAgICogQ29weXJpZ2h0IEdvb2dsZSBMTEMgQWxsIFJpZ2h0cyBSZXNlcnZlZC4KICAgICAqCiAgICAgKiBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhbiBNSVQtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQogICAgICogZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZSBhdCBodHRwczovL2FuZ3VsYXIuaW8vbGljZW5zZQogICAgICovIShmdW5jdGlvbih0KXt0W3QuU2VudD0wXT0iU2VudCIsdFt0LlVwbG9hZFByb2dyZXNzPTFdPSJVcGxvYWRQcm9ncmVzcyIsdFt0LlJlc3BvbnNlSGVhZGVyPTJdPSJSZXNwb25zZUhlYWRlciIsdFt0LkRvd25sb2FkUHJvZ3Jlc3M9M109IkRvd25sb2FkUHJvZ3Jlc3MiLHRbdC5SZXNwb25zZT00XT0iUmVzcG9uc2UiLHRbdC5Vc2VyPTVdPSJVc2VyIn0pKGhSfHwoaFI9e30pKTtjbGFzcyBBUntjb25zdHJ1Y3Rvcih0LG49MjAwLGU9Ik9LIil7dGhpcy5oZWFkZXJzPXQuaGVhZGVyc3x8bmV3IFBSLHRoaXMuc3RhdHVzPXZvaWQgMCE9PXQuc3RhdHVzP3Quc3RhdHVzOm4sdGhpcy5zdGF0dXNUZXh0PXQuc3RhdHVzVGV4dHx8ZSx0aGlzLnVybD10LnVybHx8bnVsbCx0aGlzLm9rPXRoaXMuc3RhdHVzPj0yMDAmJnRoaXMuc3RhdHVzPDMwMH19Y2xhc3MgelIgZXh0ZW5kcyBBUntjb25zdHJ1Y3Rvcih0PXt9KXtzdXBlcih0KSx0aGlzLnR5cGU9aFIuUmVzcG9uc2VIZWFkZXJ9Y2xvbmUodD17fSl7cmV0dXJuIG5ldyB6Uih7aGVhZGVyczp0LmhlYWRlcnN8fHRoaXMuaGVhZGVycyxzdGF0dXM6dm9pZCAwIT09dC5zdGF0dXM/dC5zdGF0dXM6dGhpcy5zdGF0dXMsc3RhdHVzVGV4dDp0LnN0YXR1c1RleHR8fHRoaXMuc3RhdHVzVGV4dCx1cmw6dC51cmx8fHRoaXMudXJsfHx2b2lkIDB9KX19Y2xhc3MgUlIgZXh0ZW5kcyBBUntjb25zdHJ1Y3Rvcih0PXt9KXtzdXBlcih0KSx0aGlzLnR5cGU9aFIuUmVzcG9uc2UsdGhpcy5ib2R5PXZvaWQgMCE9PXQuYm9keT90LmJvZHk6bnVsbH1jbG9uZSh0PXt9KXtyZXR1cm4gbmV3IFJSKHtib2R5OnZvaWQgMCE9PXQuYm9keT90LmJvZHk6dGhpcy5ib2R5LGhlYWRlcnM6dC5oZWFkZXJzfHx0aGlzLmhlYWRlcnMsc3RhdHVzOnZvaWQgMCE9PXQuc3RhdHVzP3Quc3RhdHVzOnRoaXMuc3RhdHVzLHN0YXR1c1RleHQ6dC5zdGF0dXNUZXh0fHx0aGlzLnN0YXR1c1RleHQsdXJsOnQudXJsfHx0aGlzLnVybHx8dm9pZCAwfSl9fWNsYXNzIFRSIGV4dGVuZHMgQVJ7Y29uc3RydWN0b3IodCl7c3VwZXIodCwwLCJVbmtub3duIEVycm9yIiksdGhpcy5uYW1lPSJIdHRwRXJyb3JSZXNwb25zZSIsdGhpcy5vaz0hMSx0aGlzLm1lc3NhZ2U9dGhpcy5zdGF0dXM+PTIwMCYmdGhpcy5zdGF0dXM8MzAwP2BIdHRwIGZhaWx1cmUgZHVyaW5nIHBhcnNpbmcgZm9yICR7dC51cmx8fCIodW5rbm93biB1cmwpIn1gOmBIdHRwIGZhaWx1cmUgcmVzcG9uc2UgZm9yICR7dC51cmx8fCIodW5rbm93biB1cmwpIn06ICR7dC5zdGF0dXN9ICR7dC5zdGF0dXNUZXh0fWAsdGhpcy5lcnJvcj10LmVycm9yfHxudWxsfX0KLyoqCiAgICAgKiBAbGljZW5zZQogICAgICogQ29weXJpZ2h0IEdvb2dsZSBMTEMgQWxsIFJpZ2h0cyBSZXNlcnZlZC4KICAgICAqCiAgICAgKiBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhbiBNSVQtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQogICAgICogZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZSBhdCBodHRwczovL2FuZ3VsYXIuaW8vbGljZW5zZQogICAgICovZnVuY3Rpb24gRFIodCxuKXtyZXR1cm57Ym9keTpuLGhlYWRlcnM6dC5oZWFkZXJzLG9ic2VydmU6dC5vYnNlcnZlLHBhcmFtczp0LnBhcmFtcyxyZXBvcnRQcm9ncmVzczp0LnJlcG9ydFByb2dyZXNzLHJlc3BvbnNlVHlwZTp0LnJlc3BvbnNlVHlwZSx3aXRoQ3JlZGVudGlhbHM6dC53aXRoQ3JlZGVudGlhbHN9fWNsYXNzIElSe2NvbnN0cnVjdG9yKHQpe3RoaXMuaGFuZGxlcj10fXJlcXVlc3QodCxuLGU9e30pe2xldCBhO2lmKHQgaW5zdGFuY2VvZiBFUilhPXQ7ZWxzZXtsZXQgbyxyO289ZS5oZWFkZXJzIGluc3RhbmNlb2YgUFI/ZS5oZWFkZXJzOm5ldyBQUihlLmhlYWRlcnMpLGUucGFyYW1zJiYocj1lLnBhcmFtcyBpbnN0YW5jZW9mIGtSP2UucGFyYW1zOm5ldyBrUih7ZnJvbU9iamVjdDplLnBhcmFtc30pKSxhPW5ldyBFUih0LG4sdm9pZCAwIT09ZS5ib2R5P2UuYm9keTpudWxsLHtoZWFkZXJzOm8scGFyYW1zOnIscmVwb3J0UHJvZ3Jlc3M6ZS5yZXBvcnRQcm9ncmVzcyxyZXNwb25zZVR5cGU6ZS5yZXNwb25zZVR5cGV8fCJqc29uIix3aXRoQ3JlZGVudGlhbHM6ZS53aXRoQ3JlZGVudGlhbHN9KX1jb25zdCBvPVooYSkucGlwZSgoZnVuY3Rpb24gcih0LG4pe3JldHVybiJmdW5jdGlvbiI9PXR5cGVvZiBuP1R0KHQsbiwxKTpUdCh0LDEpfSkoKHQ9PnRoaXMuaGFuZGxlci5oYW5kbGUodCkpKSk7aWYodCBpbnN0YW5jZW9mIEVSfHwiZXZlbnRzIj09PWUub2JzZXJ2ZSlyZXR1cm4gbztjb25zdCBpPW8ucGlwZShHdCgodD0+dCBpbnN0YW5jZW9mIFJSKSkpO3N3aXRjaChlLm9ic2VydmV8fCJib2R5Iil7Y2FzZSJib2R5Ijpzd2l0Y2goYS5yZXNwb25zZVR5cGUpe2Nhc2UiYXJyYXlidWZmZXIiOnJldHVybiBpLnBpcGUoZnQoKHQ9PntpZihudWxsIT09dC5ib2R5JiYhKHQuYm9keSBpbnN0YW5jZW9mIEFycmF5QnVmZmVyKSl0aHJvdyBuZXcgRXJyb3IoIlJlc3BvbnNlIGlzIG5vdCBhbiBBcnJheUJ1ZmZlci4iKTtyZXR1cm4gdC5ib2R5fSkpKTtjYXNlImJsb2IiOnJldHVybiBpLnBpcGUoZnQoKHQ9PntpZihudWxsIT09dC5ib2R5JiYhKHQuYm9keSBpbnN0YW5jZW9mIEJsb2IpKXRocm93IG5ldyBFcnJvcigiUmVzcG9uc2UgaXMgbm90IGEgQmxvYi4iKTtyZXR1cm4gdC5ib2R5fSkpKTtjYXNlInRleHQiOnJldHVybiBpLnBpcGUoZnQoKHQ9PntpZihudWxsIT09dC5ib2R5JiYic3RyaW5nIiE9dHlwZW9mIHQuYm9keSl0aHJvdyBuZXcgRXJyb3IoIlJlc3BvbnNlIGlzIG5vdCBhIHN0cmluZy4iKTtyZXR1cm4gdC5ib2R5fSkpKTtjYXNlImpzb24iOmRlZmF1bHQ6cmV0dXJuIGkucGlwZShmdCgodD0+dC5ib2R5KSkpfWNhc2UicmVzcG9uc2UiOnJldHVybiBpO2RlZmF1bHQ6dGhyb3cgbmV3IEVycm9yKGBVbnJlYWNoYWJsZTogdW5oYW5kbGVkIG9ic2VydmUgdHlwZSAke2Uub2JzZXJ2ZX19YCl9fWRlbGV0ZSh0LG49e30pe3JldHVybiB0aGlzLnJlcXVlc3QoIkRFTEVURSIsdCxuKX1nZXQodCxuPXt9KXtyZXR1cm4gdGhpcy5yZXF1ZXN0KCJHRVQiLHQsbil9aGVhZCh0LG49e30pe3JldHVybiB0aGlzLnJlcXVlc3QoIkhFQUQiLHQsbil9anNvbnAodCxuKXtyZXR1cm4gdGhpcy5yZXF1ZXN0KCJKU09OUCIsdCx7cGFyYW1zOihuZXcga1IpLmFwcGVuZChuLCJKU09OUF9DQUxMQkFDSyIpLG9ic2VydmU6ImJvZHkiLHJlc3BvbnNlVHlwZToianNvbiJ9KX1vcHRpb25zKHQsbj17fSl7cmV0dXJuIHRoaXMucmVxdWVzdCgiT1BUSU9OUyIsdCxuKX1wYXRjaCh0LG4sZT17fSl7cmV0dXJuIHRoaXMucmVxdWVzdCgiUEFUQ0giLHQsRFIoZSxuKSl9cG9zdCh0LG4sZT17fSl7cmV0dXJuIHRoaXMucmVxdWVzdCgiUE9TVCIsdCxEUihlLG4pKX1wdXQodCxuLGU9e30pe3JldHVybiB0aGlzLnJlcXVlc3QoIlBVVCIsdCxEUihlLG4pKX19SVIuybVmYWM9ZnVuY3Rpb24gdChuKXtyZXR1cm4gbmV3KG58fElSKShaYShNUikpfSxJUi7JtXByb3Y9V2Uoe3Rva2VuOklSLGZhY3Rvcnk6SVIuybVmYWN9KSxJUi5jdG9yUGFyYW1ldGVycz0oKT0+W3t0eXBlOk1SfV0KLyoqCiAgICAgKiBAbGljZW5zZQogICAgICogQ29weXJpZ2h0IEdvb2dsZSBMTEMgQWxsIFJpZ2h0cyBSZXNlcnZlZC4KICAgICAqCiAgICAgKiBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhbiBNSVQtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQogICAgICogZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZSBhdCBodHRwczovL2FuZ3VsYXIuaW8vbGljZW5zZQogICAgICovO2NsYXNzIE5Se2NvbnN0cnVjdG9yKHQsbil7dGhpcy5uZXh0PXQsdGhpcy5pbnRlcmNlcHRvcj1ufWhhbmRsZSh0KXtyZXR1cm4gdGhpcy5pbnRlcmNlcHRvci5pbnRlcmNlcHQodCx0aGlzLm5leHQpfX1jb25zdCBGUj1uZXcgRmEoIkhUVFBfSU5URVJDRVBUT1JTIik7Y2xhc3MgTFJ7aW50ZXJjZXB0KHQsbil7cmV0dXJuIG4uaGFuZGxlKHQpfX1MUi7JtWZhYz1mdW5jdGlvbiB0KG4pe3JldHVybiBuZXcobnx8TFIpfSxMUi7JtXByb3Y9V2Uoe3Rva2VuOkxSLGZhY3Rvcnk6TFIuybVmYWN9KTsKLyoqCiAgICAgKiBAbGljZW5zZQogICAgICogQ29weXJpZ2h0IEdvb2dsZSBMTEMgQWxsIFJpZ2h0cyBSZXNlcnZlZC4KICAgICAqCiAgICAgKiBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhbiBNSVQtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQogICAgICogZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZSBhdCBodHRwczovL2FuZ3VsYXIuaW8vbGljZW5zZQogICAgICovCmxldCBIUj0wO2NsYXNzIEJSe31jbGFzcyBWUntjb25zdHJ1Y3Rvcih0LG4pe3RoaXMuY2FsbGJhY2tNYXA9dCx0aGlzLmRvY3VtZW50PW59bmV4dENhbGxiYWNrKCl7cmV0dXJuIm5nX2pzb25wX2NhbGxiYWNrXyIrSFIrK31oYW5kbGUodCl7aWYoIkpTT05QIiE9PXQubWV0aG9kKXRocm93IG5ldyBFcnJvcigiSlNPTlAgcmVxdWVzdHMgbXVzdCB1c2UgSlNPTlAgcmVxdWVzdCBtZXRob2QuIik7aWYoImpzb24iIT09dC5yZXNwb25zZVR5cGUpdGhyb3cgbmV3IEVycm9yKCJKU09OUCByZXF1ZXN0cyBtdXN0IHVzZSBKc29uIHJlc3BvbnNlIHR5cGUuIik7cmV0dXJuIG5ldyBfKChuPT57Y29uc3QgZT10aGlzLm5leHRDYWxsYmFjaygpLGE9dC51cmxXaXRoUGFyYW1zLnJlcGxhY2UoLz1KU09OUF9DQUxMQkFDSygmfCQpLyxgPSR7ZX0kMWApLG89dGhpcy5kb2N1bWVudC5jcmVhdGVFbGVtZW50KCJzY3JpcHQiKTtvLnNyYz1hO2xldCByPW51bGwsaT0hMSxjPSExO3RoaXMuY2FsbGJhY2tNYXBbZV09dD0+e2RlbGV0ZSB0aGlzLmNhbGxiYWNrTWFwW2VdLGN8fChyPXQsaT0hMCl9O2NvbnN0IHM9KCk9PntvLnBhcmVudE5vZGUmJm8ucGFyZW50Tm9kZS5yZW1vdmVDaGlsZChvKSxkZWxldGUgdGhpcy5jYWxsYmFja01hcFtlXX0sbD10PT57Y3x8KHMoKSxpPyhuLm5leHQobmV3IFJSKHtib2R5OnIsc3RhdHVzOjIwMCxzdGF0dXNUZXh0OiJPSyIsdXJsOmF9KSksbi5jb21wbGV0ZSgpKTpuLmVycm9yKG5ldyBUUih7dXJsOmEsc3RhdHVzOjAsc3RhdHVzVGV4dDoiSlNPTlAgRXJyb3IiLGVycm9yOm5ldyBFcnJvcigiSlNPTlAgaW5qZWN0ZWQgc2NyaXB0IGRpZCBub3QgaW52b2tlIGNhbGxiYWNrLiIpfSkpKX0sbT10PT57Y3x8KHMoKSxuLmVycm9yKG5ldyBUUih7ZXJyb3I6dCxzdGF0dXM6MCxzdGF0dXNUZXh0OiJKU09OUCBFcnJvciIsdXJsOmF9KSkpfTtyZXR1cm4gby5hZGRFdmVudExpc3RlbmVyKCJsb2FkIixsKSxvLmFkZEV2ZW50TGlzdGVuZXIoImVycm9yIixtKSx0aGlzLmRvY3VtZW50LmJvZHkuYXBwZW5kQ2hpbGQobyksbi5uZXh0KHt0eXBlOmhSLlNlbnR9KSwoKT0+e2M9ITAsby5yZW1vdmVFdmVudExpc3RlbmVyKCJsb2FkIixsKSxvLnJlbW92ZUV2ZW50TGlzdGVuZXIoImVycm9yIixtKSxzKCl9fSkpfX1WUi7JtWZhYz1mdW5jdGlvbiB0KG4pe3JldHVybiBuZXcobnx8VlIpKFphKEJSKSxaYSh6QykpfSxWUi7JtXByb3Y9V2Uoe3Rva2VuOlZSLGZhY3Rvcnk6VlIuybVmYWN9KSxWUi5jdG9yUGFyYW1ldGVycz0oKT0+W3t0eXBlOkJSfSx7dHlwZTp2b2lkIDAsZGVjb3JhdG9yczpbe3R5cGU6SWUsYXJnczpbekNdfV19XTtjbGFzcyBqUntjb25zdHJ1Y3Rvcih0KXt0aGlzLmpzb25wPXR9aW50ZXJjZXB0KHQsbil7cmV0dXJuIkpTT05QIj09PXQubWV0aG9kP3RoaXMuanNvbnAuaGFuZGxlKHQpOm4uaGFuZGxlKHQpfX1qUi7JtWZhYz1mdW5jdGlvbiB0KG4pe3JldHVybiBuZXcobnx8alIpKFphKFZSKSl9LGpSLsm1cHJvdj1XZSh7dG9rZW46alIsZmFjdG9yeTpqUi7JtWZhY30pLGpSLmN0b3JQYXJhbWV0ZXJzPSgpPT5be3R5cGU6VlJ9XQovKioKICAgICAqIEBsaWNlbnNlCiAgICAgKiBDb3B5cmlnaHQgR29vZ2xlIExMQyBBbGwgUmlnaHRzIFJlc2VydmVkLgogICAgICoKICAgICAqIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGFuIE1JVC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCiAgICAgKiBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlIGF0IGh0dHBzOi8vYW5ndWxhci5pby9saWNlbnNlCiAgICAgKi87Y29uc3QgVVI9L15cKVxdXH0nLD9cbi87Y2xhc3MgV1J7fWNsYXNzIEdSe2NvbnN0cnVjdG9yKCl7fWJ1aWxkKCl7cmV0dXJuIG5ldyBYTUxIdHRwUmVxdWVzdH19R1IuybVmYWM9ZnVuY3Rpb24gdChuKXtyZXR1cm4gbmV3KG58fEdSKX0sR1IuybVwcm92PVdlKHt0b2tlbjpHUixmYWN0b3J5OkdSLsm1ZmFjfSksR1IuY3RvclBhcmFtZXRlcnM9KCk9PltdO2NsYXNzIFlSe2NvbnN0cnVjdG9yKHQpe3RoaXMueGhyRmFjdG9yeT10fWhhbmRsZSh0KXtpZigiSlNPTlAiPT09dC5tZXRob2QpdGhyb3cgbmV3IEVycm9yKCJBdHRlbXB0ZWQgdG8gY29uc3RydWN0IEpzb25wIHJlcXVlc3Qgd2l0aG91dCBIdHRwQ2xpZW50SnNvbnBNb2R1bGUgaW5zdGFsbGVkLiIpO3JldHVybiBuZXcgXygobj0+e2NvbnN0IGU9dGhpcy54aHJGYWN0b3J5LmJ1aWxkKCk7aWYoZS5vcGVuKHQubWV0aG9kLHQudXJsV2l0aFBhcmFtcyksdC53aXRoQ3JlZGVudGlhbHMmJihlLndpdGhDcmVkZW50aWFscz0hMCksdC5oZWFkZXJzLmZvckVhY2goKCh0LG4pPT5lLnNldFJlcXVlc3RIZWFkZXIodCxuLmpvaW4oIiwiKSkpKSx0LmhlYWRlcnMuaGFzKCJBY2NlcHQiKXx8ZS5zZXRSZXF1ZXN0SGVhZGVyKCJBY2NlcHQiLCJhcHBsaWNhdGlvbi9qc29uLCB0ZXh0L3BsYWluLCAqLyoiKSwhdC5oZWFkZXJzLmhhcygiQ29udGVudC1UeXBlIikpe2NvbnN0IG49dC5kZXRlY3RDb250ZW50VHlwZUhlYWRlcigpO251bGwhPT1uJiZlLnNldFJlcXVlc3RIZWFkZXIoIkNvbnRlbnQtVHlwZSIsbil9aWYodC5yZXNwb25zZVR5cGUpe2NvbnN0IG49dC5yZXNwb25zZVR5cGUudG9Mb3dlckNhc2UoKTtlLnJlc3BvbnNlVHlwZT0ianNvbiIhPT1uP246InRleHQifWNvbnN0IGE9dC5zZXJpYWxpemVCb2R5KCk7bGV0IG89bnVsbDtjb25zdCByPSgpPT57aWYobnVsbCE9PW8pcmV0dXJuIG87Y29uc3Qgbj0xMjIzPT09ZS5zdGF0dXM/MjA0OmUuc3RhdHVzLGE9ZS5zdGF0dXNUZXh0fHwiT0siLHI9bmV3IFBSKGUuZ2V0QWxsUmVzcG9uc2VIZWFkZXJzKCkpLGk9KGZ1bmN0aW9uIGModCl7cmV0dXJuInJlc3BvbnNlVVJMImluIHQmJnQucmVzcG9uc2VVUkw/dC5yZXNwb25zZVVSTDovXlgtUmVxdWVzdC1VUkw6L20udGVzdCh0LmdldEFsbFJlc3BvbnNlSGVhZGVycygpKT90LmdldFJlc3BvbnNlSGVhZGVyKCJYLVJlcXVlc3QtVVJMIik6bnVsbH0pKGUpfHx0LnVybDtyZXR1cm4gbz1uZXcgelIoe2hlYWRlcnM6cixzdGF0dXM6bixzdGF0dXNUZXh0OmEsdXJsOml9KSxvfSxpPSgpPT57bGV0e2hlYWRlcnM6YSxzdGF0dXM6byxzdGF0dXNUZXh0OmksdXJsOmN9PXIoKSxzPW51bGw7MjA0IT09byYmKHM9dm9pZCAwPT09ZS5yZXNwb25zZT9lLnJlc3BvbnNlVGV4dDplLnJlc3BvbnNlKSwwPT09byYmKG89cz8yMDA6MCk7bGV0IGw9bz49MjAwJiZvPDMwMDtpZigianNvbiI9PT10LnJlc3BvbnNlVHlwZSYmInN0cmluZyI9PXR5cGVvZiBzKXtjb25zdCB0PXM7cz1zLnJlcGxhY2UoVVIsIiIpO3RyeXtzPSIiIT09cz9KU09OLnBhcnNlKHMpOm51bGx9Y2F0Y2gobil7cz10LGwmJihsPSExLHM9e2Vycm9yOm4sdGV4dDpzfSl9fWw/KG4ubmV4dChuZXcgUlIoe2JvZHk6cyxoZWFkZXJzOmEsc3RhdHVzOm8sc3RhdHVzVGV4dDppLHVybDpjfHx2b2lkIDB9KSksbi5jb21wbGV0ZSgpKTpuLmVycm9yKG5ldyBUUih7ZXJyb3I6cyxoZWFkZXJzOmEsc3RhdHVzOm8sc3RhdHVzVGV4dDppLHVybDpjfHx2b2lkIDB9KSl9LGM9dD0+e2NvbnN0e3VybDphfT1yKCksbz1uZXcgVFIoe2Vycm9yOnQsc3RhdHVzOmUuc3RhdHVzfHwwLHN0YXR1c1RleHQ6ZS5zdGF0dXNUZXh0fHwiVW5rbm93biBFcnJvciIsdXJsOmF8fHZvaWQgMH0pO24uZXJyb3Iobyl9O2xldCBzPSExO2NvbnN0IGw9YT0+e3N8fChuLm5leHQocigpKSxzPSEwKTtsZXQgbz17dHlwZTpoUi5Eb3dubG9hZFByb2dyZXNzLGxvYWRlZDphLmxvYWRlZH07YS5sZW5ndGhDb21wdXRhYmxlJiYoby50b3RhbD1hLnRvdGFsKSwidGV4dCI9PT10LnJlc3BvbnNlVHlwZSYmZS5yZXNwb25zZVRleHQmJihvLnBhcnRpYWxUZXh0PWUucmVzcG9uc2VUZXh0KSxuLm5leHQobyl9LG09dD0+e2xldCBlPXt0eXBlOmhSLlVwbG9hZFByb2dyZXNzLGxvYWRlZDp0LmxvYWRlZH07dC5sZW5ndGhDb21wdXRhYmxlJiYoZS50b3RhbD10LnRvdGFsKSxuLm5leHQoZSl9O3JldHVybiBlLmFkZEV2ZW50TGlzdGVuZXIoImxvYWQiLGkpLGUuYWRkRXZlbnRMaXN0ZW5lcigiZXJyb3IiLGMpLHQucmVwb3J0UHJvZ3Jlc3MmJihlLmFkZEV2ZW50TGlzdGVuZXIoInByb2dyZXNzIixsKSxudWxsIT09YSYmZS51cGxvYWQmJmUudXBsb2FkLmFkZEV2ZW50TGlzdGVuZXIoInByb2dyZXNzIixtKSksZS5zZW5kKGEpLG4ubmV4dCh7dHlwZTpoUi5TZW50fSksKCk9PntlLnJlbW92ZUV2ZW50TGlzdGVuZXIoImVycm9yIixjKSxlLnJlbW92ZUV2ZW50TGlzdGVuZXIoImxvYWQiLGkpLHQucmVwb3J0UHJvZ3Jlc3MmJihlLnJlbW92ZUV2ZW50TGlzdGVuZXIoInByb2dyZXNzIixsKSxudWxsIT09YSYmZS51cGxvYWQmJmUudXBsb2FkLnJlbW92ZUV2ZW50TGlzdGVuZXIoInByb2dyZXNzIixtKSksZS5yZWFkeVN0YXRlIT09ZS5ET05FJiZlLmFib3J0KCl9fSkpfX1ZUi7JtWZhYz1mdW5jdGlvbiB0KG4pe3JldHVybiBuZXcobnx8WVIpKFphKFdSKSl9LFlSLsm1cHJvdj1XZSh7dG9rZW46WVIsZmFjdG9yeTpZUi7JtWZhY30pLFlSLmN0b3JQYXJhbWV0ZXJzPSgpPT5be3R5cGU6V1J9XQovKioKICAgICAqIEBsaWNlbnNlCiAgICAgKiBDb3B5cmlnaHQgR29vZ2xlIExMQyBBbGwgUmlnaHRzIFJlc2VydmVkLgogICAgICoKICAgICAqIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGFuIE1JVC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCiAgICAgKiBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlIGF0IGh0dHBzOi8vYW5ndWxhci5pby9saWNlbnNlCiAgICAgKi87Y29uc3QgcVI9bmV3IEZhKCJYU1JGX0NPT0tJRV9OQU1FIiksWlI9bmV3IEZhKCJYU1JGX0hFQURFUl9OQU1FIik7Y2xhc3MgWFJ7fWNsYXNzIEpSe2NvbnN0cnVjdG9yKHQsbixlKXt0aGlzLmRvYz10LHRoaXMucGxhdGZvcm09bix0aGlzLmNvb2tpZU5hbWU9ZSx0aGlzLmxhc3RDb29raWVTdHJpbmc9IiIsdGhpcy5sYXN0VG9rZW49bnVsbCx0aGlzLnBhcnNlQ291bnQ9MH1nZXRUb2tlbigpe2lmKCJzZXJ2ZXIiPT09dGhpcy5wbGF0Zm9ybSlyZXR1cm4gbnVsbDtjb25zdCB0PXRoaXMuZG9jLmNvb2tpZXx8IiI7cmV0dXJuIHQhPT10aGlzLmxhc3RDb29raWVTdHJpbmcmJih0aGlzLnBhcnNlQ291bnQrKyx0aGlzLmxhc3RUb2tlbj1MTSh0LHRoaXMuY29va2llTmFtZSksdGhpcy5sYXN0Q29va2llU3RyaW5nPXQpLHRoaXMubGFzdFRva2VufX1KUi7JtWZhYz1mdW5jdGlvbiB0KG4pe3JldHVybiBuZXcobnx8SlIpKFphKHpDKSxaYShUXyksWmEocVIpKX0sSlIuybVwcm92PVdlKHt0b2tlbjpKUixmYWN0b3J5OkpSLsm1ZmFjfSksSlIuY3RvclBhcmFtZXRlcnM9KCk9Plt7dHlwZTp2b2lkIDAsZGVjb3JhdG9yczpbe3R5cGU6SWUsYXJnczpbekNdfV19LHt0eXBlOlN0cmluZyxkZWNvcmF0b3JzOlt7dHlwZTpJZSxhcmdzOltUX119XX0se3R5cGU6U3RyaW5nLGRlY29yYXRvcnM6W3t0eXBlOkllLGFyZ3M6W3FSXX1dfV07Y2xhc3MgUVJ7Y29uc3RydWN0b3IodCxuKXt0aGlzLnRva2VuU2VydmljZT10LHRoaXMuaGVhZGVyTmFtZT1ufWludGVyY2VwdCh0LG4pe2NvbnN0IGU9dC51cmwudG9Mb3dlckNhc2UoKTtpZigiR0VUIj09PXQubWV0aG9kfHwiSEVBRCI9PT10Lm1ldGhvZHx8ZS5zdGFydHNXaXRoKCJodHRwOi8vIil8fGUuc3RhcnRzV2l0aCgiaHR0cHM6Ly8iKSlyZXR1cm4gbi5oYW5kbGUodCk7Y29uc3QgYT10aGlzLnRva2VuU2VydmljZS5nZXRUb2tlbigpO3JldHVybiBudWxsPT09YXx8dC5oZWFkZXJzLmhhcyh0aGlzLmhlYWRlck5hbWUpfHwodD10LmNsb25lKHtoZWFkZXJzOnQuaGVhZGVycy5zZXQodGhpcy5oZWFkZXJOYW1lLGEpfSkpLG4uaGFuZGxlKHQpfX1RUi7JtWZhYz1mdW5jdGlvbiB0KG4pe3JldHVybiBuZXcobnx8UVIpKFphKFhSKSxaYShaUikpfSxRUi7JtXByb3Y9V2Uoe3Rva2VuOlFSLGZhY3Rvcnk6UVIuybVmYWN9KSxRUi5jdG9yUGFyYW1ldGVycz0oKT0+W3t0eXBlOlhSfSx7dHlwZTpTdHJpbmcsZGVjb3JhdG9yczpbe3R5cGU6SWUsYXJnczpbWlJdfV19XQovKioKICAgICAqIEBsaWNlbnNlCiAgICAgKiBDb3B5cmlnaHQgR29vZ2xlIExMQyBBbGwgUmlnaHRzIFJlc2VydmVkLgogICAgICoKICAgICAqIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGFuIE1JVC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCiAgICAgKiBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlIGF0IGh0dHBzOi8vYW5ndWxhci5pby9saWNlbnNlCiAgICAgKi87Y2xhc3MgS1J7Y29uc3RydWN0b3IodCxuKXt0aGlzLmJhY2tlbmQ9dCx0aGlzLmluamVjdG9yPW4sdGhpcy5jaGFpbj1udWxsfWhhbmRsZSh0KXtpZihudWxsPT09dGhpcy5jaGFpbil7Y29uc3QgdD10aGlzLmluamVjdG9yLmdldChGUixbXSk7dGhpcy5jaGFpbj10LnJlZHVjZVJpZ2h0KCgodCxuKT0+bmV3IE5SKHQsbikpLHRoaXMuYmFja2VuZCl9cmV0dXJuIHRoaXMuY2hhaW4uaGFuZGxlKHQpfX1LUi7JtWZhYz1mdW5jdGlvbiB0KG4pe3JldHVybiBuZXcobnx8S1IpKFphKE9SKSxaYSh5ZCkpfSxLUi7JtXByb3Y9V2Uoe3Rva2VuOktSLGZhY3Rvcnk6S1IuybVmYWN9KSxLUi5jdG9yUGFyYW1ldGVycz0oKT0+W3t0eXBlOk9SfSx7dHlwZTp5ZH1dO2NsYXNzICRSe3N0YXRpYyBkaXNhYmxlKCl7cmV0dXJue25nTW9kdWxlOiRSLHByb3ZpZGVyczpbe3Byb3ZpZGU6UVIsdXNlQ2xhc3M6TFJ9XX19c3RhdGljIHdpdGhPcHRpb25zKHQ9e30pe3JldHVybntuZ01vZHVsZTokUixwcm92aWRlcnM6W3QuY29va2llTmFtZT97cHJvdmlkZTpxUix1c2VWYWx1ZTp0LmNvb2tpZU5hbWV9OltdLHQuaGVhZGVyTmFtZT97cHJvdmlkZTpaUix1c2VWYWx1ZTp0LmhlYWRlck5hbWV9OltdXX19fSRSLsm1bW9kPXhvKHt0eXBlOiRSfSksJFIuybVpbmo9R2Uoe2ZhY3Rvcnk6ZnVuY3Rpb24gdChuKXtyZXR1cm4gbmV3KG58fCRSKX0scHJvdmlkZXJzOltRUix7cHJvdmlkZTpGUix1c2VFeGlzdGluZzpRUixtdWx0aTohMH0se3Byb3ZpZGU6WFIsdXNlQ2xhc3M6SlJ9LHtwcm92aWRlOnFSLHVzZVZhbHVlOiJYU1JGLVRPS0VOIn0se3Byb3ZpZGU6WlIsdXNlVmFsdWU6IlgtWFNSRi1UT0tFTiJ9XX0pO2NsYXNzIHRUe310VC7JtW1vZD14byh7dHlwZTp0VH0pLHRULsm1aW5qPUdlKHtmYWN0b3J5OmZ1bmN0aW9uIHQobil7cmV0dXJuIG5ldyhufHx0VCl9LHByb3ZpZGVyczpbSVIse3Byb3ZpZGU6TVIsdXNlQ2xhc3M6S1J9LFlSLHtwcm92aWRlOk9SLHVzZUV4aXN0aW5nOllSfSxHUix7cHJvdmlkZTpXUix1c2VFeGlzdGluZzpHUn1dLGltcG9ydHM6W1skUi53aXRoT3B0aW9ucyh7Y29va2llTmFtZToiWFNSRi1UT0tFTiIsaGVhZGVyTmFtZToiWC1YU1JGLVRPS0VOIn0pXV19KSwoInVuZGVmaW5lZCI9PXR5cGVvZiBuZ0ppdE1vZGV8fG5nSml0TW9kZSkmJnlvKHRULHtpbXBvcnRzOlskUl19KTtjbGFzcyBuVHt9blQuybVtb2Q9eG8oe3R5cGU6blR9KSxuVC7JtWluaj1HZSh7ZmFjdG9yeTpmdW5jdGlvbiB0KG4pe3JldHVybiBuZXcobnx8blQpfSxwcm92aWRlcnM6W1ZSLHtwcm92aWRlOkJSLHVzZUZhY3Rvcnk6ZnVuY3Rpb24gZVQoKXtyZXR1cm4ib2JqZWN0Ij09dHlwZW9mIHdpbmRvdz93aW5kb3c6e319fSx7cHJvdmlkZTpGUix1c2VDbGFzczpqUixtdWx0aTohMH1dfSk7Y29uc3QgYVQ9KCk9PndpbmRvdy5sb2NhdGlvbi5ocmVmO2NsYXNzIG9Ue2dldEhyZWYoKXtyZXR1cm4gYVQoKX1nZXRTZWFyY2goKXtjb25zdCB0PW5ldyBVUkxTZWFyY2hQYXJhbXMod2luZG93LmxvY2F0aW9uLnNlYXJjaCksbj1bXTtyZXR1cm4gdC5mb3JFYWNoKCgodCxlKT0+e24ucHVzaCh7a2V5OmUsdmFsdWU6dH0pfSkpLG59Z2V0SGFzaCgpe3JldHVybiB3aW5kb3cubG9jYXRpb24uaGFzaH1nZXRQYXRoKCl7cmV0dXJuIHdpbmRvdy5sb2NhdGlvbi5wYXRobmFtZX1yZXBsYWNlU3RhdGUodCl7d2luZG93Lmhpc3RvcnkucmVwbGFjZVN0YXRlKG51bGwsIiIsdCl9cHVzaFN0YXRlKHQpe3dpbmRvdy5oaXN0b3J5LnB1c2hTdGF0ZShudWxsLCIiLHQpfW9uUG9wU3RhdGUoKXtyZXR1cm4gVnQod2luZG93LCJwb3BzdGF0ZSIpLnBpcGUoZnQoKCgpPT4oe3BhdGhuYW1lOnRoaXMuZ2V0UGF0aCgpLHF1ZXJ5UGFyYW1zOnRoaXMuZ2V0U2VhcmNoKCl9KSkpKX1nZXRSZXNvbHZlZFBhdGgodCl7cmV0dXJuIG5ldyBVUkwodCxhVCgpKS5wYXRobmFtZX1nZXRGdWxsUGF0aEZyb21Sb3V0ZU9yTmF2KHQsbil7Y29uc3QgZT10aGlzLmdldFJlc29sdmVkUGF0aCh0LnBhdGhuYW1lKTtsZXQgYT0iIjtyZXR1cm4hKGZ1bmN0aW9uIG8odCl7cmV0dXJuIHQuaGFzT3duUHJvcGVydHkoInBhdGhuYW1lIikmJiF0Lmhhc093blByb3BlcnR5KCJxdWVyeVBhcmFtcyIpfSkodCkmJnQucXVlcnlQYXJhbXMubGVuZ3RoJiYoYT0iPyIrKGZ1bmN0aW9uIHIodCl7Y29uc3Qgbj1uZXcgVVJMU2VhcmNoUGFyYW1zO2Zvcihjb25zdHtrZXk6ZSx2YWx1ZTphfW9mIHQpbi5hcHBlbmQoZSxhKTtyZXR1cm4gbn0pKHQucXVlcnlQYXJhbXMpLnRvU3RyaW5nKCkpLGAke2V9JHthfSR7bj90aGlzLmdldEhhc2goKToiIn1gfX1vVC7JtWZhYz1mdW5jdGlvbiB0KG4pe3JldHVybiBuZXcobnx8b1QpfSxvVC7JtXByb3Y9V2Uoe3Rva2VuOm9ULGZhY3Rvcnk6b1QuybVmYWN9KTtjbGFzcyByVHtjb25zdHJ1Y3Rvcih0KXt0aGlzLmFwcFJvb3Q9dGhpcy5nZXRBcHBSb290RnJvbU1ldGFFbGVtZW50KHQpfWdldEFwcFJvb3RGcm9tTWV0YUVsZW1lbnQodCl7Y29uc3Qgbj1kb2N1bWVudC5xdWVyeVNlbGVjdG9yKCdoZWFkIG1ldGFbbmFtZT0idGItcmVsYXRpdmUtcm9vdCJdJyk7aWYoIW4pcmV0dXJuIi8iO2NvbnN0e3BhdGhuYW1lOmV9PW5ldyBVUkwobi5jb250ZW50LHQuZ2V0SHJlZigpKTtyZXR1cm4gZS5yZXBsYWNlKC9cLyokLywiLyIpfWdldEFic1BhdGhuYW1lV2l0aEFwcFJvb3QodCl7cmV0dXJuIHRoaXMuYXBwUm9vdC5zbGljZSgwLC0xKSt0fWdldEFwcFJvb3RsZXNzUGF0aG5hbWUodCl7cmV0dXJuIHQuc3RhcnRzV2l0aCh0aGlzLmFwcFJvb3QpPyIvIit0LnNsaWNlKHRoaXMuYXBwUm9vdC5sZW5ndGgpOnR9fXJULsm1ZmFjPWZ1bmN0aW9uIHQobil7cmV0dXJuIG5ldyhufHxyVCkoWmEob1QpKX0sclQuybVwcm92PVdlKHt0b2tlbjpyVCxmYWN0b3J5OnJULsm1ZmFjfSk7Y2xhc3MgaVQgZXh0ZW5kcyByVHtnZXRBcHBSb290KCl7cmV0dXJuIHRoaXMuYXBwUm9vdH1zZXRBcHBSb290KHQpe3RoaXMuYXBwUm9vdD10fX1pVC7JtWZhYz1mdW5jdGlvbiB0KG4pe3JldHVybiBjVChufHxpVCl9LGlULsm1cHJvdj1XZSh7dG9rZW46aVQsZmFjdG9yeTppVC7JtWZhY30pO2NvbnN0IGNUPXRjKGlUKTtmdW5jdGlvbiBzVCh0KXtjb25zdCBuPXt9O2Zvcihjb25zdFtlLGFdb2YgdC5lbnRyaWVzKCkpbltlXT1hO3JldHVybiBufWZ1bmN0aW9uIGxUKHQpe2xldCBuPXQuaGVhZGVyc3x8bmV3IFBSO3JldHVybiBuPW4uYXBwZW5kKCJYLVhTUkYtUHJvdGVjdGVkIiwiMSIpLE9iamVjdC5hc3NpZ24oT2JqZWN0LmFzc2lnbih7fSx0KSx7aGVhZGVyczpufSl9Y2xhc3MgbVR7Y29uc3RydWN0b3IodCxuLGUpe3RoaXMuYXBwUm9vdFByb3ZpZGVyPXQsdGhpcy5odHRwPW4sdGhpcy5zdG9yZT1lfXJlc29sdmVBcHBSb290KHQpe3JldHVybiB0LnN0YXJ0c1dpdGgoIi8iKT90aGlzLmFwcFJvb3RQcm92aWRlci5nZXRBYnNQYXRobmFtZVdpdGhBcHBSb290KHQpOnR9Z2V0KHQsbj17fSl7cmV0dXJuIHRoaXMuaHR0cC5nZXQodGhpcy5yZXNvbHZlQXBwUm9vdCh0KSxuKX1wb3N0KHQsbixlPXt9KXtyZXR1cm4gZT1sVChlKSx0aGlzLnN0b3JlLnNlbGVjdChtUikucGlwZShHdCgodD0+Qm9vbGVhbih0KSkpLFRuKDEpLHllKHRoaXMuc3RvcmUuc2VsZWN0KGJSKSksVHQoKChbLGFdKT0+e2NvbnN0IG89dGhpcy5yZXNvbHZlQXBwUm9vdCh0KTtyZXR1cm4gYT90aGlzLmh0dHAuZ2V0KG8se2hlYWRlcnM6ZS5oZWFkZXJzLHBhcmFtczpzVChuKX0pOnRoaXMuaHR0cC5wb3N0KG8sbixlKX0pKSl9cHV0KHQsbixlPXt9KXtyZXR1cm4gdGhpcy5odHRwLnB1dCh0aGlzLnJlc29sdmVBcHBSb290KHQpLG4sbFQoZSkpfWRlbGV0ZSh0LG49e30pe3JldHVybiB0aGlzLmh0dHAuZGVsZXRlKHRoaXMucmVzb2x2ZUFwcFJvb3QodCksbFQobikpfX1tVC7JtWZhYz1mdW5jdGlvbiB0KG4pe3JldHVybiBuZXcobnx8bVQpKFphKHJUKSxaYShJUiksWmEoY3YpKX0sbVQuybVwcm92PVdlKHt0b2tlbjptVCxmYWN0b3J5Om1ULsm1ZmFjfSk7Y29uc3QgZFQ9InRpbWVzZXJpZXMiO3ZhciBnVDshKGZ1bmN0aW9uKHQpe3QuU0NBTEFSUz0ic2NhbGFycyIsdC5ISVNUT0dSQU1TPSJoaXN0b2dyYW1zIix0LklNQUdFUz0iaW1hZ2VzIn0pKGdUfHwoZ1Q9e30pKTtjb25zdCBwVD1bZ1QuSU1BR0VTXTtmdW5jdGlvbiBiVCh0KXtyZXR1cm4gcFQuaW5jbHVkZXModCl9Y29uc3QgdVQ9W2dULkhJU1RPR1JBTVMsZ1QuSU1BR0VTXTtmdW5jdGlvbiBmVCh0KXtyZXR1cm4gdVQuaW5jbHVkZXModCl9ZnVuY3Rpb24gaFQodCl7cmV0dXJuIGZUKHQucGx1Z2luKX1jbGFzcyBfVHt9ZnVuY3Rpb24gQ1QodCl7cmV0dXJuIHQuaGFzT3duUHJvcGVydHkoImVycm9yIil9Y29uc3QgTVQ9ImRhdGEvcGx1Z2luL3RpbWVzZXJpZXMiO2Z1bmN0aW9uIE9UKHQpe2NvbnN0IG49dC5pbmRleE9mKCIvIik7cmV0dXJue3J1bjp0LnN1YnN0cmluZyhuKzEpLGV4cGVyaW1lbnRJZDp0LnN1YnN0cmluZygwLG4pfX1mdW5jdGlvbiBQVCh0LG4pe3JldHVybmAke259LyR7dH1gfWZ1bmN0aW9uIHhUKHQsbil7Y29uc3R7cnVuVG9TZXJpZXM6ZSxydW46YX09dCxvPV9SKHQsWyJydW5Ub1NlcmllcyIsInJ1biJdKSxyPU9iamVjdC5hc3NpZ24oe30sbyk7cmV0dXJuIGUmJihyLnJ1blRvU2VyaWVzPXlUKGUsbikpLGEmJihyLnJ1bklkPVBUKGEsbikpLHJ9ZnVuY3Rpb24geVQodCxuKXtjb25zdCBlPXt9O2Zvcihjb25zdCBhIGluIHQpdC5oYXNPd25Qcm9wZXJ0eShhKSYmKGVbUFQoYSxuKV09dFthXSk7cmV0dXJuIGV9Y2xhc3Mga1R7Y29uc3RydWN0b3IodCl7dGhpcy5odHRwPXR9ZmV0Y2hUYWdNZXRhZGF0YSh0KXtyZXR1cm4gSHQodC5tYXAoKHQ9PnRoaXMuaHR0cC5nZXQoYC9leHBlcmltZW50LyR7dH0vJHtNVH0vdGFnc2ApLnBpcGUoZnQoKG49PihmdW5jdGlvbiBlKHQsbil7Y29uc3QgZT17fTtmb3IoY29uc3QgYSBvZiBPYmplY3Qua2V5cyh0KSl7Y29uc3Qgbz1hO2lmKGJUKG8pKXtjb25zdCBhPXRbb10se3RhZ1J1blNhbXBsZWRJbmZvOnJ9PWEsaT1fUihhLFsidGFnUnVuU2FtcGxlZEluZm8iXSksYz17fTtmb3IoY29uc3QgdCBpbiByKXIuaGFzT3duUHJvcGVydHkodCkmJihjW3RdPXlUKHJbdF0sbikpO2Vbb109T2JqZWN0LmFzc2lnbihPYmplY3QuYXNzaWduKHt9LGkpLHt0YWdSdW5TYW1wbGVkSW5mbzpjfSl9ZWxzZXtjb25zdCBhPXRbb10se3J1blRhZ0luZm86cn09YSxpPV9SKGEsWyJydW5UYWdJbmZvIl0pO2Vbb109T2JqZWN0LmFzc2lnbihPYmplY3QuYXNzaWduKHt9LGkpLHtydW5UYWdJbmZvOnlUKHIsbil9KX19cmV0dXJuIGV9KShuLHQpKSkpKSkpLnBpcGUoZnQoKHQ9PihmdW5jdGlvbiBuKHQpe2NvbnN0IG49e307Zm9yKGNvbnN0IGUgb2YgdClmb3IoY29uc3QgdCBvZiBPYmplY3QudmFsdWVzKGdUKSlpZihiVCh0KSl7blt0XT1uW3RdfHx7dGFnRGVzY3JpcHRpb25zOnt9LHRhZ1J1blNhbXBsZWRJbmZvOnt9fTtjb25zdHt0YWdEZXNjcmlwdGlvbnM6YSx0YWdSdW5TYW1wbGVkSW5mbzpvfT1lW3RdO25bdF0udGFnRGVzY3JpcHRpb25zPU9iamVjdC5hc3NpZ24oT2JqZWN0LmFzc2lnbih7fSxuW3RdLnRhZ0Rlc2NyaXB0aW9ucyksYSk7Y29uc3Qgcj1uW3RdLnRhZ1J1blNhbXBsZWRJbmZvO2Zvcihjb25zdCB0IG9mIE9iamVjdC5rZXlzKG8pKXtyW3RdPXJbdF18fHt9O2Zvcihjb25zdCBuIG9mIE9iamVjdC5rZXlzKG9bdF0pKXJbdF1bbl09b1t0XVtuXX19ZWxzZXtuW3RdPW5bdF18fHt0YWdEZXNjcmlwdGlvbnM6e30scnVuVGFnSW5mbzp7fX07Y29uc3R7dGFnRGVzY3JpcHRpb25zOmEscnVuVGFnSW5mbzpvfT1lW3RdO25bdF0udGFnRGVzY3JpcHRpb25zPU9iamVjdC5hc3NpZ24oT2JqZWN0LmFzc2lnbih7fSxuW3RdLnRhZ0Rlc2NyaXB0aW9ucyksYSksblt0XS5ydW5UYWdJbmZvPU9iamVjdC5hc3NpZ24oT2JqZWN0LmFzc2lnbih7fSxuW3RdLnJ1blRhZ0luZm8pLG8pfXJldHVybiBufSkodCkpKSl9ZmV0Y2hUaW1lU2VyaWVzKHQpe2NvbnN0IG49dC5tYXAoKHQ9PntpZihmVCh0LnBsdWdpbikpe2NvbnN0IG49dCx7cnVuSWQ6ZX09bixhPV9SKG4sWyJydW5JZCJdKSx7cnVuOm8sZXhwZXJpbWVudElkOnJ9PU9UKGUpLGk9T2JqZWN0LmFzc2lnbihPYmplY3QuYXNzaWduKHt9LGEpLHtydW46b30pO3JldHVybiB0aGlzLmZldGNoVGltZVNlcmllc0JhY2tlbmRSZXF1ZXN0KGkscikucGlwZShmdCgoKHtyZXNwb25zZTp0LGV4cGVyaW1lbnRJZDpufSk9PnhUKHQsbikpKSl9Y29uc3Qgbj10LHtleHBlcmltZW50SWRzOmV9PW4sYT1fUihuLFsiZXhwZXJpbWVudElkcyJdKTtyZXR1cm4gSHQoZS5tYXAoKHQ9PnRoaXMuZmV0Y2hUaW1lU2VyaWVzQmFja2VuZFJlcXVlc3QoYSx0KSkpKS5waXBlKGZ0KCh0PT57Y29uc3Qgbj1fUih0WzBdLnJlc3BvbnNlLFsicnVuVG9TZXJpZXMiLCJlcnJvciJdKTtmb3IoY29uc3R7cmVzcG9uc2U6ZSxleHBlcmltZW50SWQ6YX1vZiB0KXtjb25zdCB0PXhUKGUsYSk7aWYobi5lcnJvciljb250aW51ZTtjb25zdHtydW5Ub1NlcmllczpvLGVycm9yOnJ9PXQ7aWYociluLmVycm9yPXIsbi5ydW5Ub1Nlcmllcz12b2lkIDA7ZWxzZXtuLnJ1blRvU2VyaWVzPW4ucnVuVG9TZXJpZXN8fHt9O2Zvcihjb25zdCB0IG9mIE9iamVjdC5rZXlzKG8pKW4ucnVuVG9TZXJpZXNbdF09b1t0XX19cmV0dXJuIG59KSkpfSkpO3JldHVybiBIdChuKX1mZXRjaFRpbWVTZXJpZXNCYWNrZW5kUmVxdWVzdCh0LG4pe2NvbnN0IGU9bmV3IEZvcm1EYXRhO3JldHVybiBlLmFwcGVuZCgicmVxdWVzdHMiLEpTT04uc3RyaW5naWZ5KFt0XSkpLHRoaXMuaHR0cC5wb3N0KGAvZXhwZXJpbWVudC8ke259LyR7TVR9L3RpbWVTZXJpZXNgLGUpLnBpcGUoZnQoKHQ9Pih7cmVzcG9uc2U6dFswXSxleHBlcmltZW50SWQ6bn0pKSkpfWltYWdlVXJsKHQpe3JldHVybmAke01UfS9pbWFnZURhdGE/aW1hZ2VJZD0ke3R9YH1kb3dubG9hZFVybCh0LG4sZSxhKXtjb25zdHtydW46byxleHBlcmltZW50SWQ6cn09T1QoZSk7bGV0IGk7c3dpdGNoKHQpe2Nhc2UgZ1QuU0NBTEFSUzppPSJzY2FsYXJzL3NjYWxhcnMiO2JyZWFrO2RlZmF1bHQ6dGhyb3cgbmV3IEVycm9yKGBOb3QgaW1wbGVtZW50ZWQ6IGRvd25sb2FkVXJsIGZvciAke3R9IGlzIG5vdCBpbXBsZW1lbnRlZCB5ZXRgKX1pZighcil0aHJvdyBuZXcgRXJyb3IoImV4cGVyaW1lbnRJZCBpcyBlbXB0eTsgaXQgaXMgcmVxdWlyZWQgdG8gZm9ybSBkb3dubG9hZFVybC4iKTtyZXR1cm5gL2V4cGVyaW1lbnQvJHtyfS9kYXRhL3BsdWdpbi8ke2l9PyR7bmV3IFVSTFNlYXJjaFBhcmFtcyh7dGFnOm4scnVuOm8sZm9ybWF0OmF9KX1gfX1rVC7JtWZhYz1mdW5jdGlvbiB0KG4pe3JldHVybiBuZXcobnx8a1QpKFphKG1UKSl9LGtULsm1cHJvdj1XZSh7dG9rZW46a1QsZmFjdG9yeTprVC7JtWZhY30pO2NsYXNzIHZUe312VC7JtW1vZD14byh7dHlwZTp2VH0pLHZULsm1aW5qPUdlKHtmYWN0b3J5OmZ1bmN0aW9uIHQobil7cmV0dXJuIG5ldyhufHx2VCl9LHByb3ZpZGVyczpbb1RdfSk7Y2xhc3Mgd1R7fXdULsm1bW9kPXhvKHt0eXBlOndUfSksd1QuybVpbmo9R2Uoe2ZhY3Rvcnk6ZnVuY3Rpb24gdChuKXtyZXR1cm4gbmV3KG58fHdUKX0scHJvdmlkZXJzOltyVF0saW1wb3J0czpbW3ZUXV19KSwoInVuZGVmaW5lZCI9PXR5cGVvZiBuZ0ppdE1vZGV8fG5nSml0TW9kZSkmJnlvKHdULHtpbXBvcnRzOlt2VF19KTtjbGFzcyBTVHt9U1QuybVtb2Q9eG8oe3R5cGU6U1R9KSxTVC7JtWluaj1HZSh7ZmFjdG9yeTpmdW5jdGlvbiB0KG4pe3JldHVybiBuZXcobnx8U1QpfSxwcm92aWRlcnM6W21UXSxpbXBvcnRzOltbdFQsd1RdXX0pLCgidW5kZWZpbmVkIj09dHlwZW9mIG5nSml0TW9kZXx8bmdKaXRNb2RlKSYmeW8oU1Qse2ltcG9ydHM6W3RULHdUXX0pO2NsYXNzIEVUe31mdW5jdGlvbiBBVCh0LG4sZSxhKXtyZXR1cm4gdFtuXS5oYXNPd25Qcm9wZXJ0eShlKT9iVChuKT90W25dW2VdLmhhc093blByb3BlcnR5KGEpP3Rbbl1bZV1bYV06bnVsbDp0W25dW2VdOm51bGx9ZnVuY3Rpb24gelQodCxuLGUsYSl7aWYoYlQobikpe2NvbnN0IG89T2JqZWN0LmFzc2lnbih7fSx0W25dKSxyPShmdW5jdGlvbiBvKHQsbixlKXtjb25zdCBhPXQuaGFzT3duUHJvcGVydHkobik/T2JqZWN0LmFzc2lnbih7fSx0W25dKTp7fSxvPWEuaGFzT3duUHJvcGVydHkoZSk7cmV0dXJuIGFbZV09bz9PYmplY3QuYXNzaWduKHt9LGFbZV0pOntydW5Ub1Nlcmllczp7fSxydW5Ub0xvYWRTdGF0ZTp7fX0sYX0pKG8sZSxhKTtyZXR1cm4gb1tlXT1yLG99Y29uc3Qgcj1PYmplY3QuYXNzaWduKHt9LHRbbl0pLGk9ci5oYXNPd25Qcm9wZXJ0eShlKTtyZXR1cm4gcltlXT1pP09iamVjdC5hc3NpZ24oe30scltlXSk6e3J1blRvU2VyaWVzOnt9LHJ1blRvTG9hZFN0YXRlOnt9fSxyfWZ1bmN0aW9uIFJUKHQpe3JldHVybiBKU09OLnN0cmluZ2lmeSh0KX1mdW5jdGlvbiBUVCh0LG4sZSl7Y29uc3QgYT1PYmplY3QuYXNzaWduKHt9LGUpO2Zvcihjb25zdCBlIG9mIG4pYVtlXT10O3JldHVybiBhfWZ1bmN0aW9uIERUKHQsbixlLGEpe2lmKGJUKG4pKXtjb25zdCBvPXRbbl0udGFnUnVuU2FtcGxlZEluZm87cmV0dXJuIG8uaGFzT3duUHJvcGVydHkoZSk/T2JqZWN0LmtleXMob1tlXSkuZmlsdGVyKCh0PT5hPG9bZV1bdF0ubWF4U2FtcGxlc1BlclN0ZXApKTpbXX1jb25zdCBvPXRbbl0udGFnVG9SdW5zO3JldHVybiBvLmhhc093blByb3BlcnR5KGUpP29bZV06W119ZnVuY3Rpb24gSVQodCxuLGUsYSxvLHIpe2NvbnN0IGk9bmV3IFNldCh0KSxjPVtdO2Zvcihjb25zdCBhIG9mIHQpZm9yKGNvbnN0IHQgb2YgbilpZigocz1lW3RdKS5wbHVnaW49PT0obD1hKS5wbHVnaW4mJnMudGFnPT09bC50YWcmJnMuc2FtcGxlPT09bC5zYW1wbGUmJihzLnJ1bklkPT09bC5ydW5JZHx8IXMucnVuSWQmJiFsLnJ1bklkKSl7Yy5wdXNoKHQpLGkuZGVsZXRlKGEpO2JyZWFrfXZhciBzLGw7aWYoIWMubGVuZ3RoKXJldHVybnt1bnJlc29sdmVkSW1wb3J0ZWRQaW5uZWRDYXJkczp0LGNhcmRNZXRhZGF0YU1hcDplLGNhcmRUb1Bpbm5lZENvcHk6YSxwaW5uZWRDYXJkVG9PcmlnaW5hbDpvLGNhcmRTdGVwSW5kZXg6cn07bGV0IG09e2NhcmRUb1Bpbm5lZENvcHk6YSxwaW5uZWRDYXJkVG9PcmlnaW5hbDpvLGNhcmRTdGVwSW5kZXg6cixjYXJkTWV0YWRhdGFNYXA6ZX07Zm9yKGNvbnN0IHQgb2YgYyltPU5UKHQsbS5jYXJkVG9QaW5uZWRDb3B5LG0ucGlubmVkQ2FyZFRvT3JpZ2luYWwsbS5jYXJkU3RlcEluZGV4LG0uY2FyZE1ldGFkYXRhTWFwKTtyZXR1cm4gT2JqZWN0LmFzc2lnbihPYmplY3QuYXNzaWduKHt9LG0pLHt1bnJlc29sdmVkSW1wb3J0ZWRQaW5uZWRDYXJkczpbLi4uaV19KX1mdW5jdGlvbiBOVCh0LG4sZSxhLG8pe2lmKG4uaGFzKHQpKXJldHVybntjYXJkVG9QaW5uZWRDb3B5Om4scGlubmVkQ2FyZFRvT3JpZ2luYWw6ZSxjYXJkU3RlcEluZGV4OmEsY2FyZE1ldGFkYXRhTWFwOm99O2NvbnN0IHI9bmV3IE1hcChuKSxpPW5ldyBNYXAoZSksYz1PYmplY3QuYXNzaWduKHt9LGEpLHM9T2JqZWN0LmFzc2lnbih7fSxvKSxsPShmdW5jdGlvbiBtKHQpe3JldHVybiBKU09OLnN0cmluZ2lmeSh7YmFzZUNhcmRJZDp0fSl9KSh0KTtyLnNldCh0LGwpLGkuc2V0KGwsdCksYS5oYXNPd25Qcm9wZXJ0eSh0KSYmKGNbbF09YVt0XSk7Y29uc3QgZD1vW3RdO2lmKCFkKXRocm93IG5ldyBFcnJvcigiQ2Fubm90IHBpbiBhIGNhcmQgd2l0aG91dCBtZXRhZGF0YSIpO3JldHVybiBzW2xdPWQse2NhcmRUb1Bpbm5lZENvcHk6cixwaW5uZWRDYXJkVG9PcmlnaW5hbDppLGNhcmRTdGVwSW5kZXg6YyxjYXJkTWV0YWRhdGFNYXA6c319ZnVuY3Rpb24gRlQodCl7cmV0dXJuIHQucGlubmVkQ2FyZFRvT3JpZ2luYWwuc2l6ZSt0LnVucmVzb2x2ZWRJbXBvcnRlZFBpbm5lZENhcmRzLmxlbmd0aDwxMH12YXIgTFQsSFQsQlQsVlQsalQsVVQsV1Q7RVQuybVtb2Q9eG8oe3R5cGU6RVR9KSxFVC7JtWluaj1HZSh7ZmFjdG9yeTpmdW5jdGlvbiB0KG4pe3JldHVybiBuZXcobnx8RVQpfSxwcm92aWRlcnM6W3twcm92aWRlOl9ULHVzZUNsYXNzOmtUfV0saW1wb3J0czpbW1NUXV19KSwoInVuZGVmaW5lZCI9PXR5cGVvZiBuZ0ppdE1vZGV8fG5nSml0TW9kZSkmJnlvKEVULHtpbXBvcnRzOltTVF19KSwoZnVuY3Rpb24odCl7dC5TVEVQPSJzdGVwIix0LldBTExfVElNRT0id2FsbF90aW1lIix0LlJFTEFUSVZFPSJyZWxhdGl2ZSJ9KShMVHx8KExUPXt9KSksKGZ1bmN0aW9uKHQpe3QuT0ZGU0VUPSJvZmZzZXQiLHQuT1ZFUkxBWT0ib3ZlcmxheSJ9KShIVHx8KEhUPXt9KSksKGZ1bmN0aW9uKHQpe3QuQk9UVE9NPSJib3R0b20iLHQuUklHSFQ9InJpZ2h0Iix0LkFVVE89ImF1dG8ifSkoQlR8fChCVD17fSkpLChmdW5jdGlvbih0KXt0LkRFRkFVTFQ9ImRlZmF1bHQiLHQuQVNDRU5ESU5HPSJhc2NlbmRpbmciLHQuREVTQ0VORElORz0iZGVzY2VuZGluZyIsdC5ORUFSRVNUPSJuZWFyZXN0In0pKFZUfHwoVlQ9e30pKSwoZnVuY3Rpb24odCl7dC5TVEVQPSJzdGVwIix0LlJFTEFUSVZFPSJyZWxhdGl2ZSIsdC5XQUxMX1RJTUU9IndhbGxfdGltZSJ9KShqVHx8KGpUPXt9KSksKGZ1bmN0aW9uKHQpe3QuTElORUFSPSJsaW5lYXIiLHQuTE9HPSJsb2cifSkoVVR8fChVVD17fSkpLChmdW5jdGlvbih0KXt0W3QuU1RFUD0wXT0iU1RFUCIsdFt0LlJFTEFUSVZFPTFdPSJSRUxBVElWRSIsdFt0LldBTExfVElNRT0yXT0iV0FMTF9USU1FIn0pKFdUfHwoV1Q9e30pKTtjb25zdCBHVD0ibWV0cmljcyIsWVQ9e3Rvb2x0aXBTb3J0OlZULkRFRkFVTFQsaWdub3JlT3V0bGllcnM6ITAseEF4aXNUeXBlOldULlNURVAsc2NhbGFyU21vb3RoaW5nOi42LHNjYWxhclBhcnRpdGlvbk5vbk1vbm90b25pY1g6ITEsaW1hZ2VCcmlnaHRuZXNzSW5NaWxsaToxZTMsaW1hZ2VDb250cmFzdEluTWlsbGk6MWUzLGltYWdlU2hvd0FjdHVhbFNpemU6ITEsaGlzdG9ncmFtTW9kZTpIVC5PRkZTRVR9LHFUPXV2KEdUKSxaVD1wdihxVCwodD0+dC50YWdNZXRhZGF0YUxvYWRlZCkpO3B2KHFULCh0PT50LnRhZ01ldGFkYXRhKSk7Y29uc3QgWFQ9cHYocVQsKHQ9PnQuY2FyZExpc3QpKSxKVD1wdihxVCwoKHQsbik9PntpZighdC5jYXJkTWV0YWRhdGFNYXAuaGFzT3duUHJvcGVydHkobikpcmV0dXJuIGZSLk5PVF9MT0FERUQ7Y29uc3R7cGx1Z2luOmUsdGFnOmEscnVuSWQ6byxzYW1wbGU6cn09dC5jYXJkTWV0YWRhdGFNYXBbbl0saT1BVCh0LnRpbWVTZXJpZXNEYXRhLGUsYSxyKTtpZighaSlyZXR1cm4gZlIuTk9UX0xPQURFRDtjb25zdCBjPWkucnVuVG9Mb2FkU3RhdGU7aWYobylyZXR1cm4gYy5oYXNPd25Qcm9wZXJ0eShvKT9jW29dOmZSLk5PVF9MT0FERUQ7Y29uc3Qgcz1EVCh0LnRhZ01ldGFkYXRhLGUsYSxyKTtpZighcy5sZW5ndGgpdGhyb3cgbmV3IEVycm9yKCJDYW5ub3QgbG9hZCBhIGNhcmQgd2hvc2UgdGFnIGhhcyBubyBydW5zIik7cmV0dXJuIHMuZXZlcnkoKHQ9PmNbdF09PT1mUi5MT0FERUQpKT9mUi5MT0FERUQ6cy5zb21lKCh0PT5jW3RdPT09ZlIuTE9BRElORykpP2ZSLkxPQURJTkc6ZlIuTk9UX0xPQURFRH0pKSxRVD1wdihxVCwoKHQsbik9PntpZighdC5jYXJkTWV0YWRhdGFNYXAuaGFzT3duUHJvcGVydHkobikpcmV0dXJuIG51bGw7Y29uc3R7cGx1Z2luOmUsdGFnOmEsc2FtcGxlOm99PXQuY2FyZE1ldGFkYXRhTWFwW25dLHI9QVQodC50aW1lU2VyaWVzRGF0YSxlLGEsbyk7cmV0dXJuIHI/ci5ydW5Ub1NlcmllczpudWxsfSkpLEtUPXB2KHFULCh0PT50LmNhcmRNZXRhZGF0YU1hcCkpLCRUPXB2KEtULCgodCxuKT0+dC5oYXNPd25Qcm9wZXJ0eShuKT90W25dOm51bGwpKSx0RD1wdihxVCwodD0+dC52aXNpYmxlQ2FyZHMpKSxuRD1wdih0RCwodD0+dCkpLGVEPXB2KFhULEtULCgodCxuKT0+dC5maWx0ZXIoKHQ9Pm4uaGFzT3duUHJvcGVydHkodCkpKS5tYXAoKHQ9Pk9iamVjdC5hc3NpZ24oe2NhcmRJZDp0fSxuW3RdKSkpKSksYUQ9cHYocVQsKCh0LG4pPT50LmNhcmRTdGVwSW5kZXguaGFzT3duUHJvcGVydHkobik/dC5jYXJkU3RlcEluZGV4W25dOm51bGwpKSxvRD1wdihxVCwodD0+dC5jYXJkVG9QaW5uZWRDb3B5KSksckQ9cHYocVQsKHQ9PnQucGlubmVkQ2FyZFRvT3JpZ2luYWwpKSxpRD1wdihvRCxLVCwoKHQsbik9PlsuLi50LnZhbHVlcygpXS5maWx0ZXIoKHQ9Pm4uaGFzT3duUHJvcGVydHkodCkpKS5tYXAoKHQ9Pk9iamVjdC5hc3NpZ24oe2NhcmRJZDp0fSxuW3RdKSkpKSksY0Q9cHYob0QsckQsKCh0LG4sZSk9PnQuaGFzKGUpfHxuLmhhcyhlKSkpLHNEPXB2KHFULCh0PT50LnVucmVzb2x2ZWRJbXBvcnRlZFBpbm5lZENhcmRzKSksbEQ9cHYocVQsKHQ9PkZUKHQpKSksbUQ9cHYocVQsKHQ9PnQuc2V0dGluZ3MpKSxkRD1wdihtRCwodD0+dC50b29sdGlwU29ydCkpLGdEPXB2KG1ELCh0PT50Lmlnbm9yZU91dGxpZXJzKSkscEQ9cHYobUQsKHQ9PnQueEF4aXNUeXBlKSksYkQ9cHYobUQsKHQ9PnQuaGlzdG9ncmFtTW9kZSkpLHVEPXB2KG1ELCh0PT50LnNjYWxhclNtb290aGluZykpLGZEPXB2KG1ELCh0PT50LnNjYWxhclBhcnRpdGlvbk5vbk1vbm90b25pY1gpKSxoRD1wdihtRCwodD0+dC5pbWFnZUJyaWdodG5lc3NJbk1pbGxpKSksX0Q9cHYobUQsKHQ9PnQuaW1hZ2VDb250cmFzdEluTWlsbGkpKSxDRD1wdihtRCwodD0+dC5pbWFnZVNob3dBY3R1YWxTaXplKSksTUQ9cHYocVQsKHQ9PnQudGFnRmlsdGVyKSksT0Q9cHYocVQsKCh0LG4pPT5Cb29sZWFuKHQudGFnR3JvdXBFeHBhbmRlZC5nZXQobikpKSk7dmFyIFBEOyEoZnVuY3Rpb24odCl7dFt0Lk5PTkU9MF09Ik5PTkUiLHRbdC5XSEFUU19ORVc9MV09IldIQVRTX05FVyJ9KShQRHx8KFBEPXt9KSk7Y29uc3QgeEQ9dXYoIm5vdGlmaWNhdGlvbiIpO3ZhciB5RCxrRCx2RCx3RDtwdih4RCwodD0+dC5ub3RpZmljYXRpb25zKSkscHYoeEQsKHQ9Pnt2YXIgbjtyZXR1cm4gbnVsbCE9PShuPXQubGFzdFJlYWRUaW1lc3RhbXBJbk1zKSYmdm9pZCAwIT09bj9uOi0xfSkpLChmdW5jdGlvbih0KXt0LkRBVEFTRVRfVU5LTk9XTj0iREFUQVNFVF9VTktOT1dOIix0LkRBVEFTRVRfVFJBSU5JTkc9IkRBVEFTRVRfVFJBSU5JTkciLHQuREFUQVNFVF9WQUxJREFUSU9OPSJEQVRBU0VUX1ZBTElEQVRJT04ifSkoeUR8fCh5RD17fSkpLChmdW5jdGlvbih0KXt0LlNUQVRVU19VTktOT1dOPSJTVEFUVVNfVU5LTk9XTiIsdC5TVEFUVVNfU1VDQ0VTUz0iU1RBVFVTX1NVQ0NFU1MiLHQuU1RBVFVTX0ZBSUxVUkU9IlNUQVRVU19GQUlMVVJFIix0LlNUQVRVU19SVU5OSU5HPSJTVEFUVVNfUlVOTklORyJ9KShrRHx8KGtEPXt9KSksKGZ1bmN0aW9uKHQpe3QuREFUQV9UWVBFX1VOU0VUPSJEQVRBX1RZUEVfVU5TRVQiLHQuREFUQV9UWVBFX1NUUklORz0iREFUQV9UWVBFX1NUUklORyIsdC5EQVRBX1RZUEVfQk9PTD0iREFUQV9UWVBFX0JPT0wiLHQuREFUQV9UWVBFX0ZMT0FUNjQ9IkRBVEFfVFlQRV9GTE9BVDY0In0pKHZEfHwodkQ9e30pKSwoZnVuY3Rpb24odCl7dFt0LkRJU0NSRVRFPTBdPSJESVNDUkVURSIsdFt0LklOVEVSVkFMPTFdPSJJTlRFUlZBTCJ9KSh3RHx8KHdEPXt9KSk7Y2xhc3MgU0R7fVNELsm1ZmFjPWZ1bmN0aW9uIHQobil7cmV0dXJuIG5ldyhufHxTRCl9LFNELsm1cHJvdj1XZSh7dG9rZW46U0QsZmFjdG9yeTpTRC7JtWZhYyxwcm92aWRlZEluOiJyb290In0pO2NvbnN0IEVEPSJydW5zIjtmdW5jdGlvbiBBRCh0KXtyZXR1cm4gSlNPTi5zdHJpbmdpZnkodC5zbGljZSgpLnNvcnQoKSl9Y29uc3QgekQ9dXYoRUQpLFJEPXB2KHpELCh0PT50LmRhdGEpKSxURD1wdihSRCwoKHQsbik9Pnt2YXIgZTtyZXR1cm4gbnVsbCE9PShlPXQucnVuSWRUb0V4cElkW24ucnVuSWRdKSYmdm9pZCAwIT09ZT9lOm51bGx9KSksREQ9cHYoUkQsKCh0LG4pPT57dmFyIGU7cmV0dXJuIG51bGwhPT0oZT10LnJ1bk1ldGFkYXRhW24ucnVuSWRdKSYmdm9pZCAwIT09ZT9lOm51bGx9KSksSUQ9cHYoUkQsKCh0LG4pPT4odC5ydW5JZHNbbi5leHBlcmltZW50SWRdfHxbXSkuZmlsdGVyKChuPT5Cb29sZWFuKHQucnVuTWV0YWRhdGFbbl0pKSkubWFwKChuPT50LnJ1bk1ldGFkYXRhW25dKSkpKSxORD1wdihSRCwodD0+bmV3IE1hcChPYmplY3QuZW50cmllcyh0LnJ1bk1ldGFkYXRhKSkpKSxGRD1wdihSRCwoKHQsbik9PnQucnVuc0xvYWRTdGF0ZVtuLmV4cGVyaW1lbnRJZF18fHtsYXN0TG9hZGVkVGltZUluTXM6bnVsbCxzdGF0ZTpmUi5OT1RfTE9BREVEfSkpLExEPXB2KFJELCh0PT50LmhwYXJhbUFuZE1ldHJpY1NwZWMpKSxIRD1wdihMRCwoKHQsbik9PihmdW5jdGlvbiBlKC4uLnQpe2NvbnN0IG49bmV3IE1hcCxlPW5ldyBNYXAsYT1uZXcgTWFwLG89bmV3IE1hcCxyPVtdO2Zvcihjb25zdCBpIG9mIHQpe2Zvcihjb25zdCB0IG9mIGkuaHBhcmFtcylpZihlLmhhcyh0Lm5hbWUpfHxlLnNldCh0Lm5hbWUsbmV3IFNldCksZS5nZXQodC5uYW1lKS5hZGQodC5kaXNwbGF5TmFtZSksbi5oYXModC5uYW1lKSl7Y29uc3QgZT1uLmdldCh0Lm5hbWUpLGE9dDtpZihlLnR5cGUhPT1hLnR5cGUmJnIucHVzaChgSHBhcmFtLCAke2EubmFtZX0sIHR5cGVzIGhhdmUgdG8gbWF0Y2guIEdvdDogJHtlLnR5cGV9IHZzLiAke2EudHlwZX1gKSxlLmRvbWFpbi50eXBlPT09d0QuSU5URVJWQUwmJmEuZG9tYWluLnR5cGU9PT13RC5JTlRFUlZBTCllLmRvbWFpbi5taW5WYWx1ZT09PWEuZG9tYWluLm1pblZhbHVlJiZlLmRvbWFpbi5tYXhWYWx1ZT09PWEuZG9tYWluLm1heFZhbHVlfHxyLnB1c2goYEhwYXJhbSwgJHthLm5hbWV9LCBkb21haW5zIGhhdmUgdG8gbWF0Y2guIEdvdDogJHtlLmRvbWFpbn0gdnMuICR7YS5kb21haW59YCk7ZWxzZSBpZihlLmRvbWFpbi50eXBlPT09d0QuRElTQ1JFVEUmJmEuZG9tYWluLnR5cGU9PT13RC5ESVNDUkVURSl7Y29uc3QgdD1uZXcgU2V0KFsuLi5lLmRvbWFpbi52YWx1ZXMsLi4uYS5kb21haW4udmFsdWVzXSk7ZS5kb21haW4udmFsdWVzLmxlbmd0aD09PWEuZG9tYWluLnZhbHVlcy5sZW5ndGgmJmUuZG9tYWluLnZhbHVlcy5sZW5ndGg9PT10LnNpemV8fHIucHVzaChgSHBhcmFtLCAke2EubmFtZX0sIGRvbWFpbnMgaGF2ZSB0byBtYXRjaC4gR290OiAke2UuZG9tYWlufSB2cy4gJHthLmRvbWFpbn1gKX1lbHNlIHIucHVzaChgSHBhcmFtLCAke2EubmFtZX0sIGRvbWFpbnMgaGF2ZSB0byBtYXRjaC4gR290OiAke2UuZG9tYWlufSB2cy4gJHthLmRvbWFpbn1gKX1lbHNlIG4uc2V0KHQubmFtZSxPYmplY3QuYXNzaWduKHt9LHQpKTtmb3IoY29uc3QgdCBvZiBpLm1ldHJpY3MpaWYoby5oYXModC50YWcpfHxvLnNldCh0LnRhZyxuZXcgU2V0KSxvLmdldCh0LnRhZykuYWRkKHQuZGlzcGxheU5hbWUpLGEuaGFzKHQudGFnKSl7Y29uc3Qgbj1hLmdldCh0LnRhZyksZT10O24uZGF0YXNldFR5cGUhPT1lLmRhdGFzZXRUeXBlJiZyLnB1c2goYE1ldHJpYywgJHtlLnRhZ30sIGRhdGFzZXRUeXBlcyBoYXZlIHRvIG1hdGNoLiBHb3Q6ICR7bi5kYXRhc2V0VHlwZX0gdnMuICR7ZS5kYXRhc2V0VHlwZX1gKX1lbHNlIGEuc2V0KHQudGFnLE9iamVjdC5hc3NpZ24oe30sdCkpfWlmKHIubGVuZ3RoKXRocm93IG5ldyBFcnJvcihgVmFsaWRhdGlvbiBlcnJvcjpcbiR7ci5qb2luKCJcbiIpfWApO3JldHVybntocGFyYW1zOlsuLi5uXS5tYXAoKChbdCxuXSk9Pk9iamVjdC5hc3NpZ24oT2JqZWN0LmFzc2lnbih7fSxuKSx7ZGlzcGxheU5hbWU6Wy4uLmUuZ2V0KHQpXS5qb2luKCIgb3IgIil9KSkpLG1ldHJpY3M6Wy4uLmFdLm1hcCgoKFt0LG5dKT0+T2JqZWN0LmFzc2lnbihPYmplY3QuYXNzaWduKHt9LG4pLHtkaXNwbGF5TmFtZTpbLi4uby5nZXQodCldLmpvaW4oIiBvciAiKX0pKSl9fSkoLi4ubi5leHBlcmltZW50SWRzLm1hcCgobj0+dFtuXSkpLmZpbHRlcihCb29sZWFuKSkpKSxCRD1wdihSRCwoKHQsbik9Pntjb25zdCBlPUFEKG4uZXhwZXJpbWVudElkcyk7cmV0dXJuIHQuc2VsZWN0aW9uU3RhdGUuZ2V0KGUpfHxuZXcgTWFwfSkpLFZEPXB2KHpELCh0PT50LnVpKSksakQ9cHYoVkQsKHQ9PnQucGFnaW5hdGlvbk9wdGlvbikpLFVEPXB2KFZELCh0PT50LnJlZ2V4RmlsdGVyKSksV0Q9cHYoVkQsKHQ9PnQuc29ydCkpLEdEPXB2KFZELCh0PT57Y29uc3Qgbj1uZXcgTWFwKFsuLi50LmRlZmF1bHRSdW5Db2xvciwuLi50LnJ1bkNvbG9yT3ZlcnJpZGVdKSxlPXt9O3JldHVybiBuLmZvckVhY2goKCh0LG4pPT57ZVtuXT10fSkpLGV9KSksWUQ9cHYoVkQsKHQ9PnQuaHBhcmFtRGVmYXVsdEZpbHRlcnMpKSxxRD1wdihWRCwodD0+dC5ocGFyYW1GaWx0ZXJzKSksWkQ9cHYoVkQsKHQ9PnQubWV0cmljRGVmYXVsdEZpbHRlcnMpKSxYRD1wdihWRCwodD0+dC5tZXRyaWNGaWx0ZXJzKSksSkQ9cHYoWUQscUQsKCh0LG4pPT5uZXcgTWFwKFsuLi50LC4uLm5dKSkpLFFEPXB2KFpELFhELCgodCxuKT0+bmV3IE1hcChbLi4udCwuLi5uXSkpKSxLRD1wdigodD0+e2NvbnN0IG49ZVIodCk7cmV0dXJuIG51bGw9PT1uP251bGw6QkQodCx7ZXhwZXJpbWVudElkczpufSl9KSwodD0+dCkpLCREPS9bXFxeJC4qKz8oKVtcXXt9fF0vZyx0ST0iXFx1MDAwMC1cXHUwMDIwXFx1MDA3Zi1cXHUwMDlmIixuST1uZXcgUmVnRXhwKCIoPzpbYS16QS1aXVthLXpBLVowLTkrLi1dezIsfTpcXC9cXC98ZGF0YTp8d3d3XFwuKVteXFxzIit0SSsnIl17Mix9W15cXHMnK3RJKyJcIicpfVxcXSw6Oy4hP10iLCJndSIpO2Z1bmN0aW9uIGVJKHQpe3JldHVybihmdW5jdGlvbiBuKHQsZSl7ZS5mbGFncy5pbmNsdWRlcygiZyIpfHwoZT1uZXcgUmVnRXhwKGUsZS5mbGFncysiZyIpKTtjb25zdCBhPVtdO2xldCBvPTA7Zm9yKGNvbnN0IG4gb2YgdC5tYXRjaEFsbChlKSl7Y29uc3QgZT1uLmluZGV4LHI9blswXTtlPm8mJmEucHVzaCh7aW5kZXg6byx0ZXh0OnQuc3Vic3RyaW5nKG8sZSksbWF0Y2hlc1JlZ2V4OiExfSksYS5wdXNoKHtpbmRleDplLHRleHQ6cixtYXRjaGVzUmVnZXg6ITB9KSxvPWUrci5sZW5ndGh9cmV0dXJuIHQubGVuZ3RoPm8mJmEucHVzaCh7aW5kZXg6byx0ZXh0OnQuc3Vic3RyaW5nKG8sdC5sZW5ndGgpLG1hdGNoZXNSZWdleDohMX0pLGF9KSh0LG5JKS5tYXAoKCh7bWF0Y2hlc1JlZ2V4OnQsdGV4dDpufSk9Pih7aXNVUkw6dCx0ZXh0Om59KSkpfWZ1bmN0aW9uIGFJKHQsbil7aWYoMSZ0JiYobnAoMCksSnAoMSksZXAoKSksMiZ0KXtjb25zdCB0PWdwKCkuJGltcGxpY2l0O3dzKDEpLEtwKCIgIix0LnRleHQsIiAiKX19ZnVuY3Rpb24gb0kodCxuKXtpZigxJnQmJihLZygwLCJhIiw4KSxKcCgxKSwkZygpKSwyJnQpe2NvbnN0IHQ9Z3AoKS4kaW1wbGljaXQ7X3AoImhyZWYiLHQudGV4dCxYYyksd3MoMSksUXAodC50ZXh0KX19ZnVuY3Rpb24gckkodCxuKXtpZigxJnQmJihucCgwKSxZZygxLGFJLDIsMSwibmctY29udGFpbmVyIiw2KSxZZygyLG9JLDIsMiwibmctdGVtcGxhdGUiLG51bGwsNyxLZiksZXAoKSksMiZ0KXtjb25zdCB0PW4uJGltcGxpY2l0LGU9cWcoMyk7d3MoMSksSmcoIm5nSWYiLCF0LmlzVVJMKSgibmdJZkVsc2UiLGUpfX1mdW5jdGlvbiBpSSh0LG4pe2lmKDEmdCl7Y29uc3QgdD1vcCgpO0tnKDAsImJ1dHRvbiIsOSksY3AoImNsaWNrIiwoZnVuY3Rpb24gbigpe3JldHVybiBqcih0KSxncCgpLm9uQWN0aW9uQnV0dG9uQ2xpY2tlZCgpfSkpLEpwKDEpLCRnKCl9aWYoMiZ0KXtjb25zdCB0PWdwKCk7d3MoMSksS3AoIiAiLHQuYWxlcnQuZm9sbG93dXBBY3Rpb24ubG9jYWxpemVkTGFiZWwsIiAiKX19Y2xhc3MgY0l7Y29uc3RydWN0b3IodCxuLGUpe3RoaXMuc25hY2tCYXJSZWY9dCx0aGlzLnVua25vd25EYXRhPW4sdGhpcy5zdG9yZT1lLHRoaXMuc3BsaXRCeVVSTD1lSSx0aGlzLmFsZXJ0PW59b25BY3Rpb25CdXR0b25DbGlja2VkKCl7cmV0dXJuIENSKHRoaXMsdm9pZCAwLHZvaWQgMCwoZnVuY3Rpb24qKCl7dGhpcy5zbmFja0JhclJlZi5kaXNtaXNzKCk7Y29uc3QgdD15aWVsZCB0aGlzLmFsZXJ0LmZvbGxvd3VwQWN0aW9uLmdldEZvbGxvd3VwQWN0aW9uKHRoaXMuc3RvcmUpO3RoaXMuc3RvcmUuZGlzcGF0Y2godCl9KSl9b25DbG9zZUJ1dHRvbkNsaWNrZWQoKXt0aGlzLnNuYWNrQmFyUmVmLmRpc21pc3MoKX19Y0kuybVmYWM9ZnVuY3Rpb24gdChuKXtyZXR1cm4gbmV3KG58fGNJKShaZyhMeiksWmcoSXopLFpnKGN2KSl9LGNJLsm1Y21wPV9vKHt0eXBlOmNJLHNlbGVjdG9yczpbWyJhbGVydC1kaXNwbGF5LXNuYWNrYmFyIl1dLGRlY2xzOjcsdmFyczoyLGNvbnN0czpmdW5jdGlvbigpe3JldHVybltbMSwibWVzc2FnZSJdLFs0LCJuZ0ZvciIsIm5nRm9yT2YiXSxbMSwiY29udHJvbHMiXSxbIm1hdC1idXR0b24iLCIiLCJjbGFzcyIsImZvbGxvd3VwLWJ1dHRvbiIsMywiY2xpY2siLDQsIm5nSWYiXSxbIm1hdC1idXR0b24iLCIiLDEsImRpc21pc3MtYnV0dG9uIiwzLCJjbGljayIsNiwiYXJpYS1sYWJlbCJdLFsiYXJpYS1sYWJlbCIsInVuZGVmaW5lZCIhPXR5cGVvZiBuZ0kxOG5DbG9zdXJlTW9kZSYmbmdJMThuQ2xvc3VyZU1vZGU/Z29vZy5nZXRNc2coIkRpc21pc3MiKTokbG9jYWxpemVgOkEgYnV0dG9uIHRvIGNsb3NlIHRoZSBzbmFja2JhciBtZXNzYWdl4pCfZWE0ZDlmZTYxNDIwYTNmY2U4MWNmNTRjNGM2MTVlM2MxOWM2NDZhNuKQnzE1MzYwODc1MTk3NDM3MDczNjI6RGlzbWlzc2BdLFs0LCJuZ0lmIiwibmdJZkVsc2UiXSxbImxpbmtQaWVjZSIsIiJdLFsicmVsIiwibm9yZWZlcnJlciBub29wZW5lciIsInRhcmdldCIsIl9ibGFuayIsMywiaHJlZiJdLFsibWF0LWJ1dHRvbiIsIiIsMSwiZm9sbG93dXAtYnV0dG9uIiwzLCJjbGljayJdXX0sdGVtcGxhdGU6ZnVuY3Rpb24gdChuLGUpezEmbiYmKEtnKDAsImRpdiIsMCksWWcoMSxySSw0LDIsIm5nLWNvbnRhaW5lciIsMSksJGcoKSxLZygyLCJkaXYiLDIpLFlnKDMsaUksMiwxLCJidXR0b24iLDMpLEtnKDQsImJ1dHRvbiIsNCksbHUoNSw1KSxjcCgiY2xpY2siLChmdW5jdGlvbiB0KCl7cmV0dXJuIGUub25DbG9zZUJ1dHRvbkNsaWNrZWQoKX0pKSxKcCg2LCIgRGlzbWlzcyAiKSwkZygpLCRnKCkpLDImbiYmKHdzKDEpLEpnKCJuZ0Zvck9mIixlLnNwbGl0QnlVUkwoZS5hbGVydC5sb2NhbGl6ZWRNZXNzYWdlKSksd3MoMiksSmcoIm5nSWYiLGUuYWxlcnQuZm9sbG93dXBBY3Rpb24pKX0sZGlyZWN0aXZlczpbak0sV00sZUFdLHN0eWxlczpbIltfbmdob3N0LSVDT01QJV17ZGlzcGxheTpmbGV4O2ZsZXgtd3JhcDp3cmFwfS5tZXNzYWdlW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MTRweDthbGlnbi1zZWxmOmNlbnRlcjttYXJnaW46NXB4IDA7d29yZC1icmVhazpicmVhay13b3JkfS5tZXNzYWdlW19uZ2NvbnRlbnQtJUNPTVAlXSAgIGFbX25nY29udGVudC0lQ09NUCVde2NvbG9yOmluaGVyaXR9LmNvbnRyb2xzW19uZ2NvbnRlbnQtJUNPTVAlXXt3aGl0ZS1zcGFjZTpub3dyYXA7bWFyZ2luLWxlZnQ6YXV0b31idXR0b25bX25nY29udGVudC0lQ09NUCVde3RleHQtdHJhbnNmb3JtOnVwcGVyY2FzZX0iXSxjaGFuZ2VEZXRlY3Rpb246MH0pO2NsYXNzIHNJe2NvbnN0cnVjdG9yKHQsbil7dGhpcy5zdG9yZT10LHRoaXMuc25hY2tCYXI9bix0aGlzLm5nVW5zdWJzY3JpYmU9bmV3IHh9bmdPbkluaXQoKXt0aGlzLnN0b3JlLnNlbGVjdChrdykucGlwZShkZSh0aGlzLm5nVW5zdWJzY3JpYmUpLEd0KCh0PT5Cb29sZWFuKHQpKSkpLnN1YnNjcmliZSgodD0+e3RoaXMuc2hvd0FsZXJ0KHQpfSkpfW5nT25EZXN0cm95KCl7dGhpcy5uZ1Vuc3Vic2NyaWJlLm5leHQoKSx0aGlzLm5nVW5zdWJzY3JpYmUuY29tcGxldGUoKX1zaG93QWxlcnQodCl7dGhpcy5zbmFja0Jhci5vcGVuRnJvbUNvbXBvbmVudChjSSx7ZHVyYXRpb246NWUzLGhvcml6b250YWxQb3NpdGlvbjoic3RhcnQiLHZlcnRpY2FsUG9zaXRpb246ImJvdHRvbSIsZGF0YTp0fSl9fXNJLsm1ZmFjPWZ1bmN0aW9uIHQobil7cmV0dXJuIG5ldyhufHxzSSkoWmcoY3YpLFpnKEd6KSl9LHNJLsm1Y21wPV9vKHt0eXBlOnNJLHNlbGVjdG9yczpbWyJhbGVydC1zbmFja2JhciJdXSxkZWNsczowLHZhcnM6MCx0ZW1wbGF0ZTpmdW5jdGlvbiB0KG4sZSl7fSxlbmNhcHN1bGF0aW9uOjIsY2hhbmdlRGV0ZWN0aW9uOjB9KTtjbGFzcyBsSXt9bEkuybVtb2Q9eG8oe3R5cGU6bEl9KSxsSS7JtWluaj1HZSh7ZmFjdG9yeTpmdW5jdGlvbiB0KG4pe3JldHVybiBuZXcobnx8bEkpfSxpbXBvcnRzOltbUE8sb0EsanpdXX0pLCgidW5kZWZpbmVkIj09dHlwZW9mIG5nSml0TW9kZXx8bmdKaXRNb2RlKSYmeW8obEkse2RlY2xhcmF0aW9uczpbc0ksY0ldLGltcG9ydHM6W1BPLG9BLGp6XSxleHBvcnRzOltzSV19KTtjbGFzcyBtSXt9bUkuybVtb2Q9eG8oe3R5cGU6bUl9KSxtSS7JtWluaj1HZSh7ZmFjdG9yeTpmdW5jdGlvbiB0KG4pe3JldHVybiBuZXcobnx8bUkpfSxpbXBvcnRzOltbTXcsbEksSXYuZm9yRmVhdHVyZSh5dywoZnVuY3Rpb24gZEkodCxuKXtyZXR1cm4geHcodCxuKX0pKSxmdy5mb3JGZWF0dXJlKFtQd10pXV19KSwoInVuZGVmaW5lZCI9PXR5cGVvZiBuZ0ppdE1vZGV8fG5nSml0TW9kZSkmJnlvKG1JLHtpbXBvcnRzOltNdyxsSSxEdix1d119KTtjb25zdCBnST1PaygiW0NvcmVdIFBsdWdpbiBDaGFuZ2VkIix7X2FzOiJwcm9wcyIsX3A6dm9pZCAwfSkscEk9T2soIltDb3JlXSBQbHVnaW4gVXJsIEhhc2ggQ2hhbmdlZCIse19hczoicHJvcHMiLF9wOnZvaWQgMH0pLGJJPU9rKCJbQ29yZV0gTG9hZGVkIiksdUk9T2soIltDb3JlXSBVc2VyIFRyaWdnZXJlZCBSZWxvYWQiKSxmST1PaygiW0NvcmVdIEF1dG8gUmVsb2FkIiksaEk9T2soIltDb3JlXSBQbHVnaW5MaXN0aW5nIEZldGNoIFJlcXVlc3RlZCIpLF9JPU9rKCJbQ29yZV0gUGx1Z2luTGlzdGluZyBGZXRjaCBTdWNjZXNzZnVsIix7X2FzOiJwcm9wcyIsX3A6dm9pZCAwfSksQ0k9T2soIltDb3JlXSBQbHVnaW5MaXN0aW5nIEZldGNoIEZhaWxlZCIse19hczoicHJvcHMiLF9wOnZvaWQgMH0pLE1JPU9rKCJbQ29yZV0gRW52aXJvbm1lbnQgRmV0Y2ggU3VjY2Vzc2Z1bCIse19hczoicHJvcHMiLF9wOnZvaWQgMH0pLE9JPU9rKCJbQ29yZV0gUmVsb2FkIEVuYWJsZSBUb2dnbGVkIiksUEk9T2soIltDb3JlXSBSZWxvYWQgUGVyaW9kIENoYW5nZSIse19hczoicHJvcHMiLF9wOnZvaWQgMH0pLHhJPU9rKCJbQ29yZV0gUGFnZSBTaXplIENoYW5nZSIse19hczoicHJvcHMiLF9wOnZvaWQgMH0pLHlJPU9rKCJbQ29yZV0gUnVuIFNlbGVjdGlvbiBDaGFuZ2VkIix7X2FzOiJwcm9wcyIsX3A6dm9pZCAwfSksa0k9T2soIltDb3JlXSBSdW4gRmV0Y2ggU3VjY2Vzc2Z1bCIse19hczoicHJvcHMiLF9wOnZvaWQgMH0pLHZJPVsiKiIsW1sibWF0LXRvb2xiYXItcm93Il1dXSx3ST1lRShjbGFzc3tjb25zdHJ1Y3Rvcih0KXt0aGlzLl9lbGVtZW50UmVmPXR9fSk7Y2xhc3MgU0l7fVNJLsm1ZmFjPWZ1bmN0aW9uIHQobil7cmV0dXJuIG5ldyhufHxTSSl9LFNJLsm1ZGlyPXZvKHt0eXBlOlNJLHNlbGVjdG9yczpbWyJtYXQtdG9vbGJhci1yb3ciXV0saG9zdEF0dHJzOlsxLCJtYXQtdG9vbGJhci1yb3ciXSxleHBvcnRBczpbIm1hdFRvb2xiYXJSb3ciXX0pO2NsYXNzIEVJIGV4dGVuZHMgd0l7Y29uc3RydWN0b3IodCxuLGUpe3N1cGVyKHQpLHRoaXMuX3BsYXRmb3JtPW4sdGhpcy5fZG9jdW1lbnQ9ZX1uZ0FmdGVyVmlld0luaXQoKXt0aGlzLl9wbGF0Zm9ybS5pc0Jyb3dzZXImJih0aGlzLl9jaGVja1Rvb2xiYXJNaXhlZE1vZGVzKCksdGhpcy5fdG9vbGJhclJvd3MuY2hhbmdlcy5zdWJzY3JpYmUoKCgpPT50aGlzLl9jaGVja1Rvb2xiYXJNaXhlZE1vZGVzKCkpKSl9X2NoZWNrVG9vbGJhck1peGVkTW9kZXMoKXt0aGlzLl90b29sYmFyUm93cy5sZW5ndGgmJigidW5kZWZpbmVkIj09dHlwZW9mIG5nRGV2TW9kZXx8bmdEZXZNb2RlKSYmQXJyYXkuZnJvbSh0aGlzLl9lbGVtZW50UmVmLm5hdGl2ZUVsZW1lbnQuY2hpbGROb2RlcykuZmlsdGVyKCh0PT4hKHQuY2xhc3NMaXN0JiZ0LmNsYXNzTGlzdC5jb250YWlucygibWF0LXRvb2xiYXItcm93IikpKSkuZmlsdGVyKCh0PT50Lm5vZGVUeXBlIT09KHRoaXMuX2RvY3VtZW50P3RoaXMuX2RvY3VtZW50LkNPTU1FTlRfTk9ERTo4KSkpLnNvbWUoKHQ9PiEoIXQudGV4dENvbnRlbnR8fCF0LnRleHRDb250ZW50LnRyaW0oKSkpKSYmKGZ1bmN0aW9uIHQoKXt0aHJvdyBFcnJvcigiTWF0VG9vbGJhcjogQXR0ZW1wdGluZyB0byBjb21iaW5lIGRpZmZlcmVudCB0b29sYmFyIG1vZGVzLiBFaXRoZXIgc3BlY2lmeSBtdWx0aXBsZSBgPG1hdC10b29sYmFyLXJvdz5gIGVsZW1lbnRzIGV4cGxpY2l0bHkgb3IganVzdCBwbGFjZSBjb250ZW50IGluc2lkZSBvZiBhIGA8bWF0LXRvb2xiYXI+YCBmb3IgYSBzaW5nbGUgcm93LiIpfQovKioKICAgICAqIEBsaWNlbnNlCiAgICAgKiBDb3B5cmlnaHQgR29vZ2xlIExMQyBBbGwgUmlnaHRzIFJlc2VydmVkLgogICAgICoKICAgICAqIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGFuIE1JVC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCiAgICAgKiBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlIGF0IGh0dHBzOi8vYW5ndWxhci5pby9saWNlbnNlCiAgICAgKi8pKCl9fUVJLsm1ZmFjPWZ1bmN0aW9uIHQobil7cmV0dXJuIG5ldyhufHxFSSkoWmcoeHUpLFpnKFN3KSxaZyh6QykpfSxFSS7JtWNtcD1fbyh7dHlwZTpFSSxzZWxlY3RvcnM6W1sibWF0LXRvb2xiYXIiXV0sY29udGVudFF1ZXJpZXM6ZnVuY3Rpb24gdChuLGUsYSl7dmFyIG87MSZuJiZHZihhLFNJLCEwKSwyJm4mJlZmKG89WmYoKSkmJihlLl90b29sYmFyUm93cz1vKX0saG9zdEF0dHJzOlsxLCJtYXQtdG9vbGJhciJdLGhvc3RWYXJzOjQsaG9zdEJpbmRpbmdzOmZ1bmN0aW9uIHQobixlKXsyJm4mJkRwKCJtYXQtdG9vbGJhci1tdWx0aXBsZS1yb3dzIixlLl90b29sYmFyUm93cy5sZW5ndGg+MCkoIm1hdC10b29sYmFyLXNpbmdsZS1yb3ciLDA9PT1lLl90b29sYmFyUm93cy5sZW5ndGgpfSxpbnB1dHM6e2NvbG9yOiJjb2xvciJ9LGV4cG9ydEFzOlsibWF0VG9vbGJhciJdLGZlYXR1cmVzOltoZ10sbmdDb250ZW50U2VsZWN0b3JzOlsiKiIsIm1hdC10b29sYmFyLXJvdyJdLGRlY2xzOjIsdmFyczowLHRlbXBsYXRlOmZ1bmN0aW9uIHQobixlKXsxJm4mJihicCh2SSksaHAoMCksaHAoMSwxKSl9LHN0eWxlczpbIi5jZGstaGlnaC1jb250cmFzdC1hY3RpdmUgLm1hdC10b29sYmFye291dGxpbmU6c29saWQgMXB4fS5tYXQtdG9vbGJhci1yb3csLm1hdC10b29sYmFyLXNpbmdsZS1yb3d7ZGlzcGxheTpmbGV4O2JveC1zaXppbmc6Ym9yZGVyLWJveDtwYWRkaW5nOjAgMTZweDt3aWR0aDoxMDAlO2ZsZXgtZGlyZWN0aW9uOnJvdzthbGlnbi1pdGVtczpjZW50ZXI7d2hpdGUtc3BhY2U6bm93cmFwfS5tYXQtdG9vbGJhci1tdWx0aXBsZS1yb3dze2Rpc3BsYXk6ZmxleDtib3gtc2l6aW5nOmJvcmRlci1ib3g7ZmxleC1kaXJlY3Rpb246Y29sdW1uO3dpZHRoOjEwMCV9XG4iXSxlbmNhcHN1bGF0aW9uOjIsY2hhbmdlRGV0ZWN0aW9uOjB9KSxFSS5jdG9yUGFyYW1ldGVycz0oKT0+W3t0eXBlOnh1fSx7dHlwZTpTd30se3R5cGU6dm9pZCAwLGRlY29yYXRvcnM6W3t0eXBlOkllLGFyZ3M6W3pDXX1dfV0sRUkucHJvcERlY29yYXRvcnM9e190b29sYmFyUm93czpbe3R5cGU6cWQsYXJnczpbU0kse2Rlc2NlbmRhbnRzOiEwfV19XX07Y2xhc3MgQUl7fUFJLsm1bW9kPXhvKHt0eXBlOkFJfSksQUkuybVpbmo9R2Uoe2ZhY3Rvcnk6ZnVuY3Rpb24gdChuKXtyZXR1cm4gbmV3KG58fEFJKX0saW1wb3J0czpbW3RFXSx0RV19KSwoInVuZGVmaW5lZCI9PXR5cGVvZiBuZ0ppdE1vZGV8fG5nSml0TW9kZSkmJnlvKEFJLHtkZWNsYXJhdGlvbnM6ZnVuY3Rpb24oKXtyZXR1cm5bRUksU0ldfSxpbXBvcnRzOmZ1bmN0aW9uKCl7cmV0dXJuW3RFXX0sZXhwb3J0czpmdW5jdGlvbigpe3JldHVybltFSSxTSSx0RV19fSk7Y29uc3Qgekk9ImNvcmUiLFJJPXthY3RpdmVQbHVnaW46bnVsbCxwbHVnaW5zOnt9LHBsdWdpbnNMaXN0TG9hZGVkOntzdGF0ZTpmUi5OT1RfTE9BREVELGxhc3RMb2FkZWRUaW1lSW5NczpudWxsLGZhaWx1cmVDb2RlOm51bGx9LHJlbG9hZFBlcmlvZEluTXM6M2U0LHJlbG9hZEVuYWJsZWQ6ITEscGFnZVNpemU6MTIsZW52aXJvbm1lbnQ6e2RhdGFfbG9jYXRpb246IiIsd2luZG93X3RpdGxlOiIifSxwb2x5bWVySW50ZXJvcFJ1bnM6W10scG9seW1lckludGVyb3BSdW5TZWxlY3Rpb246bmV3IFNldH0sVEk9VXYoUkksanYoZ0kscEksKCh0LHtwbHVnaW46bn0pPT5PYmplY3QuYXNzaWduKE9iamVjdC5hc3NpZ24oe30sdCkse2FjdGl2ZVBsdWdpbjpufSkpKSxqdihoSSwodD0+T2JqZWN0LmFzc2lnbihPYmplY3QuYXNzaWduKHt9LHQpLHtwbHVnaW5zTGlzdExvYWRlZDpPYmplY3QuYXNzaWduKE9iamVjdC5hc3NpZ24oe30sdC5wbHVnaW5zTGlzdExvYWRlZCkse3N0YXRlOmZSLkxPQURJTkd9KX0pKSksanYoQ0ksKCh0LHtmYWlsdXJlQ29kZTpufSk9Pk9iamVjdC5hc3NpZ24oT2JqZWN0LmFzc2lnbih7fSx0KSx7cGx1Z2luc0xpc3RMb2FkZWQ6T2JqZWN0LmFzc2lnbihPYmplY3QuYXNzaWduKHt9LHQucGx1Z2luc0xpc3RMb2FkZWQpLHtzdGF0ZTpmUi5GQUlMRUQsZmFpbHVyZUNvZGU6bn0pfSkpKSxqdihfSSwoKHQse3BsdWdpbnM6bn0pPT57Y29uc3QgZT1PYmplY3Qua2V5cyhuKS5maW5kKCh0PT5uW3RdLmVuYWJsZWQpKXx8bnVsbCxhPXQuYWN0aXZlUGx1Z2lufHxlO3JldHVybiBPYmplY3QuYXNzaWduKE9iamVjdC5hc3NpZ24oe30sdCkse2FjdGl2ZVBsdWdpbjphLHBsdWdpbnM6bixwbHVnaW5zTGlzdExvYWRlZDp7c3RhdGU6ZlIuTE9BREVELGxhc3RMb2FkZWRUaW1lSW5NczpEYXRlLm5vdygpLGZhaWx1cmVDb2RlOm51bGx9fSl9KSksanYoTUksKCh0LHtlbnZpcm9ubWVudDpufSk9Pk9iamVjdC5hc3NpZ24oT2JqZWN0LmFzc2lnbih7fSx0KSx7ZW52aXJvbm1lbnQ6bn0pKSksanYoT0ksKHQ9Pk9iamVjdC5hc3NpZ24oT2JqZWN0LmFzc2lnbih7fSx0KSx7cmVsb2FkRW5hYmxlZDohdC5yZWxvYWRFbmFibGVkfSkpKSxqdihQSSwoKHQse3BlcmlvZEluTXM6bn0pPT57Y29uc3QgZT1uPjA/bjp0LnJlbG9hZFBlcmlvZEluTXM7cmV0dXJuIE9iamVjdC5hc3NpZ24oT2JqZWN0LmFzc2lnbih7fSx0KSx7cmVsb2FkUGVyaW9kSW5NczplfSl9KSksanYoeEksKCh0LHtzaXplOm59KT0+e2NvbnN0IGU9bj4wP246dC5wYWdlU2l6ZTtyZXR1cm4gT2JqZWN0LmFzc2lnbihPYmplY3QuYXNzaWduKHt9LHQpLHtwYWdlU2l6ZTplfSl9KSksanYoa0ksKCh0LHtydW5zOm59KT0+T2JqZWN0LmFzc2lnbihPYmplY3QuYXNzaWduKHt9LHQpLHtwb2x5bWVySW50ZXJvcFJ1bnM6bn0pKSksanYoeUksKCh0LHtuZXh0U2VsZWN0aW9uOm59KT0+T2JqZWN0LmFzc2lnbihPYmplY3QuYXNzaWduKHt9LHQpLHtwb2x5bWVySW50ZXJvcFJ1blNlbGVjdGlvbjpuZXcgU2V0KG4pfSkpKSksREk9dXYoekkpLElJPXB2KERJLCh0PT50LnBsdWdpbnNMaXN0TG9hZGVkKSksTkk9cHYoREksKHQ9PnQuYWN0aXZlUGx1Z2luKSksRkk9cHYoREksKHQ9PnQucGx1Z2lucykpLExJPXB2KERJLCh0PT50LmVudmlyb25tZW50KSksSEk9cHYoREksKHQ9PnQucmVsb2FkRW5hYmxlZCkpLEJJPXB2KERJLCh0PT50LnJlbG9hZFBlcmlvZEluTXMpKSxWST1wdihESSwodD0+dC5wYWdlU2l6ZSkpO2Z1bmN0aW9uIGpJKHQsbil7MSZ0JiZocCgwKX1jb25zdCBVST1bIioiXTtmdW5jdGlvbiBXSSh0LG4pe31jb25zdCBHST1mdW5jdGlvbih0KXtyZXR1cm57YW5pbWF0aW9uRHVyYXRpb246dH19LFlJPWZ1bmN0aW9uKHQsbil7cmV0dXJue3ZhbHVlOnQscGFyYW1zOm59fSxxST1bInRhYkJvZHlXcmFwcGVyIl0sWkk9WyJ0YWJIZWFkZXIiXTtmdW5jdGlvbiBYSSh0LG4pe31mdW5jdGlvbiBKSSh0LG4pezEmdCYmWWcoMCxYSSwwLDAsIm5nLXRlbXBsYXRlIiw5KSwyJnQmJkpnKCJjZGtQb3J0YWxPdXRsZXQiLGdwKCkuJGltcGxpY2l0LnRlbXBsYXRlTGFiZWwpfWZ1bmN0aW9uIFFJKHQsbil7MSZ0JiZKcCgwKSwyJnQmJlFwKGdwKCkuJGltcGxpY2l0LnRleHRMYWJlbCl9ZnVuY3Rpb24gS0kodCxuKXtpZigxJnQpe2NvbnN0IHQ9b3AoKTtLZygwLCJkaXYiLDYpLGNwKCJjbGljayIsKGZ1bmN0aW9uIGUoKXtqcih0KTtjb25zdCBhPW4uJGltcGxpY2l0LG89bi5pbmRleCxyPWdwKCksaT1xZygxKTtyZXR1cm4gci5faGFuZGxlQ2xpY2soYSxpLG8pfSkpLEtnKDEsImRpdiIsNyksWWcoMixKSSwxLDEsIm5nLXRlbXBsYXRlIiw4KSxZZygzLFFJLDEsMSwibmctdGVtcGxhdGUiLDgpLCRnKCksJGcoKX1pZigyJnQpe2NvbnN0IHQ9bi4kaW1wbGljaXQsZT1uLmluZGV4LGE9Z3AoKTtEcCgibWF0LXRhYi1sYWJlbC1hY3RpdmUiLGEuc2VsZWN0ZWRJbmRleD09ZSksSmcoImlkIixhLl9nZXRUYWJMYWJlbElkKGUpKSgiZGlzYWJsZWQiLHQuZGlzYWJsZWQpKCJtYXRSaXBwbGVEaXNhYmxlZCIsdC5kaXNhYmxlZHx8YS5kaXNhYmxlUmlwcGxlKSxOZygidGFiSW5kZXgiLGEuX2dldFRhYkluZGV4KHQsZSkpKCJhcmlhLXBvc2luc2V0IixlKzEpKCJhcmlhLXNldHNpemUiLGEuX3RhYnMubGVuZ3RoKSgiYXJpYS1jb250cm9scyIsYS5fZ2V0VGFiQ29udGVudElkKGUpKSgiYXJpYS1zZWxlY3RlZCIsYS5zZWxlY3RlZEluZGV4PT1lKSgiYXJpYS1sYWJlbCIsdC5hcmlhTGFiZWx8fG51bGwpKCJhcmlhLWxhYmVsbGVkYnkiLCF0LmFyaWFMYWJlbCYmdC5hcmlhTGFiZWxsZWRieT90LmFyaWFMYWJlbGxlZGJ5Om51bGwpLHdzKDIpLEpnKCJuZ0lmIix0LnRlbXBsYXRlTGFiZWwpLHdzKDEpLEpnKCJuZ0lmIiwhdC50ZW1wbGF0ZUxhYmVsKX19ZnVuY3Rpb24gJEkodCxuKXtpZigxJnQpe2NvbnN0IHQ9b3AoKTtLZygwLCJtYXQtdGFiLWJvZHkiLDEwKSxjcCgiX29uQ2VudGVyZWQiLChmdW5jdGlvbiBuKCl7cmV0dXJuIGpyKHQpLGdwKCkuX3JlbW92ZVRhYkJvZHlXcmFwcGVySGVpZ2h0KCl9KSkoIl9vbkNlbnRlcmluZyIsKGZ1bmN0aW9uIG4oZSl7cmV0dXJuIGpyKHQpLGdwKCkuX3NldFRhYkJvZHlXcmFwcGVySGVpZ2h0KGUpfSkpLCRnKCl9aWYoMiZ0KXtjb25zdCB0PW4uJGltcGxpY2l0LGU9bi5pbmRleCxhPWdwKCk7RHAoIm1hdC10YWItYm9keS1hY3RpdmUiLGEuc2VsZWN0ZWRJbmRleD09ZSksSmcoImlkIixhLl9nZXRUYWJDb250ZW50SWQoZSkpKCJjb250ZW50Iix0LmNvbnRlbnQpKCJwb3NpdGlvbiIsdC5wb3NpdGlvbikoIm9yaWdpbiIsdC5vcmlnaW4pKCJhbmltYXRpb25EdXJhdGlvbiIsYS5hbmltYXRpb25EdXJhdGlvbiksTmcoImFyaWEtbGFiZWxsZWRieSIsYS5fZ2V0VGFiTGFiZWxJZChlKSl9fWNvbnN0IHROPVsidGFiTGlzdENvbnRhaW5lciJdLG5OPVsidGFiTGlzdCJdLGVOPVsibmV4dFBhZ2luYXRvciJdLGFOPVsicHJldmlvdXNQYWdpbmF0b3IiXSxvTj1uZXcgRmEoIk1hdElua0JhclBvc2l0aW9uZXIiLHtwcm92aWRlZEluOiJyb290IixmYWN0b3J5OmZ1bmN0aW9uIHJOKCl7cmV0dXJuIHQ9Pih7bGVmdDp0Pyh0Lm9mZnNldExlZnR8fDApKyJweCI6IjAiLHdpZHRoOnQ/KHQub2Zmc2V0V2lkdGh8fDApKyJweCI6IjAifSl9fSk7Y2xhc3MgaU57Y29uc3RydWN0b3IodCxuLGUsYSl7dGhpcy5fZWxlbWVudFJlZj10LHRoaXMuX25nWm9uZT1uLHRoaXMuX2lua0JhclBvc2l0aW9uZXI9ZSx0aGlzLl9hbmltYXRpb25Nb2RlPWF9YWxpZ25Ub0VsZW1lbnQodCl7dGhpcy5zaG93KCksInVuZGVmaW5lZCIhPXR5cGVvZiByZXF1ZXN0QW5pbWF0aW9uRnJhbWU/dGhpcy5fbmdab25lLnJ1bk91dHNpZGVBbmd1bGFyKCgoKT0+e3JlcXVlc3RBbmltYXRpb25GcmFtZSgoKCk9PnRoaXMuX3NldFN0eWxlcyh0KSkpfSkpOnRoaXMuX3NldFN0eWxlcyh0KX1zaG93KCl7dGhpcy5fZWxlbWVudFJlZi5uYXRpdmVFbGVtZW50LnN0eWxlLnZpc2liaWxpdHk9InZpc2libGUifWhpZGUoKXt0aGlzLl9lbGVtZW50UmVmLm5hdGl2ZUVsZW1lbnQuc3R5bGUudmlzaWJpbGl0eT0iaGlkZGVuIn1fc2V0U3R5bGVzKHQpe2NvbnN0IG49dGhpcy5faW5rQmFyUG9zaXRpb25lcih0KSxlPXRoaXMuX2VsZW1lbnRSZWYubmF0aXZlRWxlbWVudDtlLnN0eWxlLmxlZnQ9bi5sZWZ0LGUuc3R5bGUud2lkdGg9bi53aWR0aH19aU4uybVmYWM9ZnVuY3Rpb24gdChuKXtyZXR1cm4gbmV3KG58fGlOKShaZyh4dSksWmcoSl8pLFpnKG9OKSxaZyhkayw4KSl9LGlOLsm1ZGlyPXZvKHt0eXBlOmlOLHNlbGVjdG9yczpbWyJtYXQtaW5rLWJhciJdXSxob3N0QXR0cnM6WzEsIm1hdC1pbmstYmFyIl0saG9zdFZhcnM6Mixob3N0QmluZGluZ3M6ZnVuY3Rpb24gdChuLGUpezImbiYmRHAoIl9tYXQtYW5pbWF0aW9uLW5vb3BhYmxlIiwiTm9vcEFuaW1hdGlvbnMiPT09ZS5fYW5pbWF0aW9uTW9kZSl9fSksaU4uY3RvclBhcmFtZXRlcnM9KCk9Plt7dHlwZTp4dX0se3R5cGU6Sl99LHt0eXBlOnZvaWQgMCxkZWNvcmF0b3JzOlt7dHlwZTpJZSxhcmdzOltvTl19XX0se3R5cGU6U3RyaW5nLGRlY29yYXRvcnM6W3t0eXBlOk5lfSx7dHlwZTpJZSxhcmdzOltka119XX1dCi8qKgogICAgICogQGxpY2Vuc2UKICAgICAqIENvcHlyaWdodCBHb29nbGUgTExDIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCiAgICAgKgogICAgICogVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYW4gTUlULXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKICAgICAqIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUgYXQgaHR0cHM6Ly9hbmd1bGFyLmlvL2xpY2Vuc2UKICAgICAqLztjb25zdCBjTj1uZXcgRmEoIk1hdFRhYkNvbnRlbnQiKTtjbGFzcyBzTntjb25zdHJ1Y3Rvcih0KXt0aGlzLnRlbXBsYXRlPXR9fXNOLsm1ZmFjPWZ1bmN0aW9uIHQobil7cmV0dXJuIG5ldyhufHxzTikoWmcoSnUpKX0sc04uybVkaXI9dm8oe3R5cGU6c04sc2VsZWN0b3JzOltbIiIsIm1hdFRhYkNvbnRlbnQiLCIiXV0sZmVhdHVyZXM6W011KFt7cHJvdmlkZTpjTix1c2VFeGlzdGluZzpzTn1dKV19KSxzTi5jdG9yUGFyYW1ldGVycz0oKT0+W3t0eXBlOkp1fV0KLyoqCiAgICAgKiBAbGljZW5zZQogICAgICogQ29weXJpZ2h0IEdvb2dsZSBMTEMgQWxsIFJpZ2h0cyBSZXNlcnZlZC4KICAgICAqCiAgICAgKiBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhbiBNSVQtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQogICAgICogZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZSBhdCBodHRwczovL2FuZ3VsYXIuaW8vbGljZW5zZQogICAgICovO2NvbnN0IGxOPW5ldyBGYSgiTWF0VGFiTGFiZWwiKTtjbGFzcyBtTiBleHRlbmRzIERBe31tTi7JtWZhYz1mdW5jdGlvbiB0KG4pe3JldHVybiBkTihufHxtTil9LG1OLsm1ZGlyPXZvKHt0eXBlOm1OLHNlbGVjdG9yczpbWyIiLCJtYXQtdGFiLWxhYmVsIiwiIl0sWyIiLCJtYXRUYWJMYWJlbCIsIiJdXSxmZWF0dXJlczpbTXUoW3twcm92aWRlOmxOLHVzZUV4aXN0aW5nOm1OfV0pLGhnXX0pO2NvbnN0IGROPXRjKG1OKSxnTj1uRSgKLyoqCiAgICAgKiBAbGljZW5zZQogICAgICogQ29weXJpZ2h0IEdvb2dsZSBMTEMgQWxsIFJpZ2h0cyBSZXNlcnZlZC4KICAgICAqCiAgICAgKiBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhbiBNSVQtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQogICAgICogZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZSBhdCBodHRwczovL2FuZ3VsYXIuaW8vbGljZW5zZQogICAgICovCmNsYXNze30pLHBOPW5ldyBGYSgiTUFUX1RBQl9HUk9VUCIpO2NsYXNzIGJOIGV4dGVuZHMgZ057Y29uc3RydWN0b3IodCxuKXtzdXBlcigpLHRoaXMuX3ZpZXdDb250YWluZXJSZWY9dCx0aGlzLl9jbG9zZXN0VGFiR3JvdXA9bix0aGlzLnRleHRMYWJlbD0iIix0aGlzLl9jb250ZW50UG9ydGFsPW51bGwsdGhpcy5fc3RhdGVDaGFuZ2VzPW5ldyB4LHRoaXMucG9zaXRpb249bnVsbCx0aGlzLm9yaWdpbj1udWxsLHRoaXMuaXNBY3RpdmU9ITF9Z2V0IHRlbXBsYXRlTGFiZWwoKXtyZXR1cm4gdGhpcy5fdGVtcGxhdGVMYWJlbH1zZXQgdGVtcGxhdGVMYWJlbCh0KXt0aGlzLl9zZXRUZW1wbGF0ZUxhYmVsSW5wdXQodCl9Z2V0IGNvbnRlbnQoKXtyZXR1cm4gdGhpcy5fY29udGVudFBvcnRhbH1uZ09uQ2hhbmdlcyh0KXsodC5oYXNPd25Qcm9wZXJ0eSgidGV4dExhYmVsIil8fHQuaGFzT3duUHJvcGVydHkoImRpc2FibGVkIikpJiZ0aGlzLl9zdGF0ZUNoYW5nZXMubmV4dCgpfW5nT25EZXN0cm95KCl7dGhpcy5fc3RhdGVDaGFuZ2VzLmNvbXBsZXRlKCl9bmdPbkluaXQoKXt0aGlzLl9jb250ZW50UG9ydGFsPW5ldyBBQSh0aGlzLl9leHBsaWNpdENvbnRlbnR8fHRoaXMuX2ltcGxpY2l0Q29udGVudCx0aGlzLl92aWV3Q29udGFpbmVyUmVmKX1fc2V0VGVtcGxhdGVMYWJlbElucHV0KHQpe3QmJih0aGlzLl90ZW1wbGF0ZUxhYmVsPXQpfX1iTi7JtWZhYz1mdW5jdGlvbiB0KG4pe3JldHVybiBuZXcobnx8Yk4pKFpnKCR1KSxaZyhwTiw4KSl9LGJOLsm1Y21wPV9vKHt0eXBlOmJOLHNlbGVjdG9yczpbWyJtYXQtdGFiIl1dLGNvbnRlbnRRdWVyaWVzOmZ1bmN0aW9uIHQobixlLGEpe3ZhciBvOzEmbiYmKEdmKGEsbE4sITApLFlmKGEsY04sITAsSnUpKSwyJm4mJihWZihvPVpmKCkpJiYoZS50ZW1wbGF0ZUxhYmVsPW8uZmlyc3QpLFZmKG89WmYoKSkmJihlLl9leHBsaWNpdENvbnRlbnQ9by5maXJzdCkpfSx2aWV3UXVlcnk6ZnVuY3Rpb24gdChuLGUpe3ZhciBhOzEmbiYmamYoSnUsITApLDImbiYmVmYoYT1aZigpKSYmKGUuX2ltcGxpY2l0Q29udGVudD1hLmZpcnN0KX0saW5wdXRzOntkaXNhYmxlZDoiZGlzYWJsZWQiLHRleHRMYWJlbDpbImxhYmVsIiwidGV4dExhYmVsIl0sYXJpYUxhYmVsOlsiYXJpYS1sYWJlbCIsImFyaWFMYWJlbCJdLGFyaWFMYWJlbGxlZGJ5OlsiYXJpYS1sYWJlbGxlZGJ5IiwiYXJpYUxhYmVsbGVkYnkiXX0sZXhwb3J0QXM6WyJtYXRUYWIiXSxmZWF0dXJlczpbaGcscHJdLG5nQ29udGVudFNlbGVjdG9yczpVSSxkZWNsczoxLHZhcnM6MCx0ZW1wbGF0ZTpmdW5jdGlvbiB0KG4sZSl7MSZuJiYoYnAoKSxZZygwLGpJLDEsMCwibmctdGVtcGxhdGUiKSl9LGVuY2Fwc3VsYXRpb246Mn0pLGJOLmN0b3JQYXJhbWV0ZXJzPSgpPT5be3R5cGU6JHV9LHt0eXBlOnZvaWQgMCxkZWNvcmF0b3JzOlt7dHlwZTpOZX0se3R5cGU6SWUsYXJnczpbcE5dfV19XSxiTi5wcm9wRGVjb3JhdG9ycz17dGVtcGxhdGVMYWJlbDpbe3R5cGU6WmQsYXJnczpbbE5dfV0sX2V4cGxpY2l0Q29udGVudDpbe3R5cGU6WmQsYXJnczpbY04se3JlYWQ6SnUsc3RhdGljOiEwfV19XSxfaW1wbGljaXRDb250ZW50Olt7dHlwZTpYZCxhcmdzOltKdSx7c3RhdGljOiEwfV19XSx0ZXh0TGFiZWw6W3t0eXBlOmZfLGFyZ3M6WyJsYWJlbCJdfV0sYXJpYUxhYmVsOlt7dHlwZTpmXyxhcmdzOlsiYXJpYS1sYWJlbCJdfV0sYXJpYUxhYmVsbGVkYnk6W3t0eXBlOmZfLGFyZ3M6WyJhcmlhLWxhYmVsbGVkYnkiXX1dfTsKLyoqCiAgICAgKiBAbGljZW5zZQogICAgICogQ29weXJpZ2h0IEdvb2dsZSBMTEMgQWxsIFJpZ2h0cyBSZXNlcnZlZC4KICAgICAqCiAgICAgKiBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhbiBNSVQtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQogICAgICogZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZSBhdCBodHRwczovL2FuZ3VsYXIuaW8vbGljZW5zZQogICAgICovCmNvbnN0IHVOPXt0cmFuc2xhdGVUYWI6U1AoInRyYW5zbGF0ZVRhYiIsW1JQKCJjZW50ZXIsIHZvaWQsIGxlZnQtb3JpZ2luLWNlbnRlciwgcmlnaHQtb3JpZ2luLWNlbnRlciIselAoe3RyYW5zZm9ybToibm9uZSJ9KSksUlAoImxlZnQiLHpQKHt0cmFuc2Zvcm06InRyYW5zbGF0ZTNkKC0xMDAlLCAwLCAwKSIsbWluSGVpZ2h0OiIxcHgifSkpLFJQKCJyaWdodCIselAoe3RyYW5zZm9ybToidHJhbnNsYXRlM2QoMTAwJSwgMCwgMCkiLG1pbkhlaWdodDoiMXB4In0pKSxEUCgiKiA9PiBsZWZ0LCAqID0+IHJpZ2h0LCBsZWZ0ID0+IGNlbnRlciwgcmlnaHQgPT4gY2VudGVyIixFUCgie3thbmltYXRpb25EdXJhdGlvbn19IGN1YmljLWJlemllcigwLjM1LCAwLCAwLjI1LCAxKSIpKSxEUCgidm9pZCA9PiBsZWZ0LW9yaWdpbi1jZW50ZXIiLFt6UCh7dHJhbnNmb3JtOiJ0cmFuc2xhdGUzZCgtMTAwJSwgMCwgMCkifSksRVAoInt7YW5pbWF0aW9uRHVyYXRpb259fSBjdWJpYy1iZXppZXIoMC4zNSwgMCwgMC4yNSwgMSkiKV0pLERQKCJ2b2lkID0+IHJpZ2h0LW9yaWdpbi1jZW50ZXIiLFt6UCh7dHJhbnNmb3JtOiJ0cmFuc2xhdGUzZCgxMDAlLCAwLCAwKSJ9KSxFUCgie3thbmltYXRpb25EdXJhdGlvbn19IGN1YmljLWJlemllcigwLjM1LCAwLCAwLjI1LCAxKSIpXSldKX07Ci8qKgogICAgICogQGxpY2Vuc2UKICAgICAqIENvcHlyaWdodCBHb29nbGUgTExDIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCiAgICAgKgogICAgICogVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYW4gTUlULXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKICAgICAqIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUgYXQgaHR0cHM6Ly9hbmd1bGFyLmlvL2xpY2Vuc2UKICAgICAqL2NsYXNzIGZOIGV4dGVuZHMgRkF7Y29uc3RydWN0b3IodCxuLGUsYSl7c3VwZXIodCxuLGEpLHRoaXMuX2hvc3Q9ZSx0aGlzLl9jZW50ZXJpbmdTdWI9cy5FTVBUWSx0aGlzLl9sZWF2aW5nU3ViPXMuRU1QVFl9bmdPbkluaXQoKXtzdXBlci5uZ09uSW5pdCgpLHRoaXMuX2NlbnRlcmluZ1N1Yj10aGlzLl9ob3N0Ll9iZWZvcmVDZW50ZXJpbmcucGlwZShjZSh0aGlzLl9ob3N0Ll9pc0NlbnRlclBvc2l0aW9uKHRoaXMuX2hvc3QuX3Bvc2l0aW9uKSkpLnN1YnNjcmliZSgodD0+e3QmJiF0aGlzLmhhc0F0dGFjaGVkKCkmJnRoaXMuYXR0YWNoKHRoaXMuX2hvc3QuX2NvbnRlbnQpfSkpLHRoaXMuX2xlYXZpbmdTdWI9dGhpcy5faG9zdC5fYWZ0ZXJMZWF2aW5nQ2VudGVyLnN1YnNjcmliZSgoKCk9Pnt0aGlzLmRldGFjaCgpfSkpfW5nT25EZXN0cm95KCl7c3VwZXIubmdPbkRlc3Ryb3koKSx0aGlzLl9jZW50ZXJpbmdTdWIudW5zdWJzY3JpYmUoKSx0aGlzLl9sZWF2aW5nU3ViLnVuc3Vic2NyaWJlKCl9fWZOLsm1ZmFjPWZ1bmN0aW9uIHQobil7cmV0dXJuIG5ldyhufHxmTikoWmcoUHUpLFpnKCR1KSxaZyhhYSgoKCk9Pl9OKSkpLFpnKHpDKSl9LGZOLsm1ZGlyPXZvKHt0eXBlOmZOLHNlbGVjdG9yczpbWyIiLCJtYXRUYWJCb2R5SG9zdCIsIiJdXSxmZWF0dXJlczpbaGddfSksZk4uY3RvclBhcmFtZXRlcnM9KCk9Plt7dHlwZTpQdX0se3R5cGU6JHV9LHt0eXBlOl9OLGRlY29yYXRvcnM6W3t0eXBlOkllLGFyZ3M6W2FhKCgoKT0+X04pKV19XX0se3R5cGU6dm9pZCAwLGRlY29yYXRvcnM6W3t0eXBlOkllLGFyZ3M6W3pDXX1dfV07Y2xhc3MgaE57Y29uc3RydWN0b3IodCxuLGUpe3RoaXMuX2VsZW1lbnRSZWY9dCx0aGlzLl9kaXI9bix0aGlzLl9kaXJDaGFuZ2VTdWJzY3JpcHRpb249cy5FTVBUWSx0aGlzLl90cmFuc2xhdGVUYWJDb21wbGV0ZT1uZXcgeCx0aGlzLl9vbkNlbnRlcmluZz1uZXcgRWYsdGhpcy5fYmVmb3JlQ2VudGVyaW5nPW5ldyBFZix0aGlzLl9hZnRlckxlYXZpbmdDZW50ZXI9bmV3IEVmLHRoaXMuX29uQ2VudGVyZWQ9bmV3IEVmKCEwKSx0aGlzLmFuaW1hdGlvbkR1cmF0aW9uPSI1MDBtcyIsbiYmKHRoaXMuX2RpckNoYW5nZVN1YnNjcmlwdGlvbj1uLmNoYW5nZS5zdWJzY3JpYmUoKHQ9Pnt0aGlzLl9jb21wdXRlUG9zaXRpb25BbmltYXRpb25TdGF0ZSh0KSxlLm1hcmtGb3JDaGVjaygpfSkpKSx0aGlzLl90cmFuc2xhdGVUYWJDb21wbGV0ZS5waXBlKHZuKCgodCxuKT0+dC5mcm9tU3RhdGU9PT1uLmZyb21TdGF0ZSYmdC50b1N0YXRlPT09bi50b1N0YXRlKSkpLnN1YnNjcmliZSgodD0+e3RoaXMuX2lzQ2VudGVyUG9zaXRpb24odC50b1N0YXRlKSYmdGhpcy5faXNDZW50ZXJQb3NpdGlvbih0aGlzLl9wb3NpdGlvbikmJnRoaXMuX29uQ2VudGVyZWQuZW1pdCgpLHRoaXMuX2lzQ2VudGVyUG9zaXRpb24odC5mcm9tU3RhdGUpJiYhdGhpcy5faXNDZW50ZXJQb3NpdGlvbih0aGlzLl9wb3NpdGlvbikmJnRoaXMuX2FmdGVyTGVhdmluZ0NlbnRlci5lbWl0KCl9KSl9c2V0IHBvc2l0aW9uKHQpe3RoaXMuX3Bvc2l0aW9uSW5kZXg9dCx0aGlzLl9jb21wdXRlUG9zaXRpb25BbmltYXRpb25TdGF0ZSgpfW5nT25Jbml0KCl7ImNlbnRlciI9PXRoaXMuX3Bvc2l0aW9uJiZudWxsIT10aGlzLm9yaWdpbiYmKHRoaXMuX3Bvc2l0aW9uPXRoaXMuX2NvbXB1dGVQb3NpdGlvbkZyb21PcmlnaW4odGhpcy5vcmlnaW4pKX1uZ09uRGVzdHJveSgpe3RoaXMuX2RpckNoYW5nZVN1YnNjcmlwdGlvbi51bnN1YnNjcmliZSgpLHRoaXMuX3RyYW5zbGF0ZVRhYkNvbXBsZXRlLmNvbXBsZXRlKCl9X29uVHJhbnNsYXRlVGFiU3RhcnRlZCh0KXtjb25zdCBuPXRoaXMuX2lzQ2VudGVyUG9zaXRpb24odC50b1N0YXRlKTt0aGlzLl9iZWZvcmVDZW50ZXJpbmcuZW1pdChuKSxuJiZ0aGlzLl9vbkNlbnRlcmluZy5lbWl0KHRoaXMuX2VsZW1lbnRSZWYubmF0aXZlRWxlbWVudC5jbGllbnRIZWlnaHQpfV9nZXRMYXlvdXREaXJlY3Rpb24oKXtyZXR1cm4gdGhpcy5fZGlyJiYicnRsIj09PXRoaXMuX2Rpci52YWx1ZT8icnRsIjoibHRyIn1faXNDZW50ZXJQb3NpdGlvbih0KXtyZXR1cm4iY2VudGVyIj09dHx8ImxlZnQtb3JpZ2luLWNlbnRlciI9PXR8fCJyaWdodC1vcmlnaW4tY2VudGVyIj09dH1fY29tcHV0ZVBvc2l0aW9uQW5pbWF0aW9uU3RhdGUodD10aGlzLl9nZXRMYXlvdXREaXJlY3Rpb24oKSl7dGhpcy5fcG9zaXRpb249dGhpcy5fcG9zaXRpb25JbmRleDwwPyJsdHIiPT10PyJsZWZ0IjoicmlnaHQiOnRoaXMuX3Bvc2l0aW9uSW5kZXg+MD8ibHRyIj09dD8icmlnaHQiOiJsZWZ0IjoiY2VudGVyIn1fY29tcHV0ZVBvc2l0aW9uRnJvbU9yaWdpbih0KXtjb25zdCBuPXRoaXMuX2dldExheW91dERpcmVjdGlvbigpO3JldHVybiJsdHIiPT1uJiZ0PD0wfHwicnRsIj09biYmdD4wPyJsZWZ0LW9yaWdpbi1jZW50ZXIiOiJyaWdodC1vcmlnaW4tY2VudGVyIn19aE4uybVmYWM9ZnVuY3Rpb24gdChuKXtyZXR1cm4gbmV3KG58fGhOKShaZyh4dSksWmcoVVMsOCksWmcoVm0pKX0saE4uybVkaXI9dm8oe3R5cGU6aE4saW5wdXRzOnthbmltYXRpb25EdXJhdGlvbjoiYW5pbWF0aW9uRHVyYXRpb24iLHBvc2l0aW9uOiJwb3NpdGlvbiIsX2NvbnRlbnQ6WyJjb250ZW50IiwiX2NvbnRlbnQiXSxvcmlnaW46Im9yaWdpbiJ9LG91dHB1dHM6e19vbkNlbnRlcmluZzoiX29uQ2VudGVyaW5nIixfYmVmb3JlQ2VudGVyaW5nOiJfYmVmb3JlQ2VudGVyaW5nIixfYWZ0ZXJMZWF2aW5nQ2VudGVyOiJfYWZ0ZXJMZWF2aW5nQ2VudGVyIixfb25DZW50ZXJlZDoiX29uQ2VudGVyZWQifX0pLGhOLmN0b3JQYXJhbWV0ZXJzPSgpPT5be3R5cGU6eHV9LHt0eXBlOlVTLGRlY29yYXRvcnM6W3t0eXBlOk5lfV19LHt0eXBlOlZtfV0saE4ucHJvcERlY29yYXRvcnM9e19vbkNlbnRlcmluZzpbe3R5cGU6aF99XSxfYmVmb3JlQ2VudGVyaW5nOlt7dHlwZTpoX31dLF9hZnRlckxlYXZpbmdDZW50ZXI6W3t0eXBlOmhffV0sX29uQ2VudGVyZWQ6W3t0eXBlOmhffV0sX2NvbnRlbnQ6W3t0eXBlOmZfLGFyZ3M6WyJjb250ZW50Il19XSxvcmlnaW46W3t0eXBlOmZffV0sYW5pbWF0aW9uRHVyYXRpb246W3t0eXBlOmZffV0scG9zaXRpb246W3t0eXBlOmZffV19O2NsYXNzIF9OIGV4dGVuZHMgaE57Y29uc3RydWN0b3IodCxuLGUpe3N1cGVyKHQsbixlKX19X04uybVmYWM9ZnVuY3Rpb24gdChuKXtyZXR1cm4gbmV3KG58fF9OKShaZyh4dSksWmcoVVMsOCksWmcoVm0pKX0sX04uybVjbXA9X28oe3R5cGU6X04sc2VsZWN0b3JzOltbIm1hdC10YWItYm9keSJdXSx2aWV3UXVlcnk6ZnVuY3Rpb24gdChuLGUpe3ZhciBhOzEmbiYmVWYoTEEsITApLDImbiYmVmYoYT1aZigpKSYmKGUuX3BvcnRhbEhvc3Q9YS5maXJzdCl9LGhvc3RBdHRyczpbMSwibWF0LXRhYi1ib2R5Il0sZmVhdHVyZXM6W2hnXSxkZWNsczozLHZhcnM6Nixjb25zdHM6W1sxLCJtYXQtdGFiLWJvZHktY29udGVudCJdLFsiY29udGVudCIsIiJdLFsibWF0VGFiQm9keUhvc3QiLCIiXV0sdGVtcGxhdGU6ZnVuY3Rpb24gdChuLGUpezEmbiYmKEtnKDAsImRpdiIsMCwxKSxjcCgiQHRyYW5zbGF0ZVRhYi5zdGFydCIsKGZ1bmN0aW9uIHQobil7cmV0dXJuIGUuX29uVHJhbnNsYXRlVGFiU3RhcnRlZChuKX0pKSgiQHRyYW5zbGF0ZVRhYi5kb25lIiwoZnVuY3Rpb24gdChuKXtyZXR1cm4gZS5fdHJhbnNsYXRlVGFiQ29tcGxldGUubmV4dChuKX0pKSxZZygyLFdJLDAsMCwibmctdGVtcGxhdGUiLDIpLCRnKCkpLDImbiYmSmcoIkB0cmFuc2xhdGVUYWIiLGZmKDMsWUksZS5fcG9zaXRpb24sdWYoMSxHSSxlLmFuaW1hdGlvbkR1cmF0aW9uKSkpfSxkaXJlY3RpdmVzOltmTl0sc3R5bGVzOlsiLm1hdC10YWItYm9keS1jb250ZW50e2hlaWdodDoxMDAlO292ZXJmbG93OmF1dG99Lm1hdC10YWItZ3JvdXAtZHluYW1pYy1oZWlnaHQgLm1hdC10YWItYm9keS1jb250ZW50e292ZXJmbG93OmhpZGRlbn1cbiJdLGVuY2Fwc3VsYXRpb246MixkYXRhOnthbmltYXRpb246W3VOLnRyYW5zbGF0ZVRhYl19fSksX04uY3RvclBhcmFtZXRlcnM9KCk9Plt7dHlwZTp4dX0se3R5cGU6VVMsZGVjb3JhdG9yczpbe3R5cGU6TmV9XX0se3R5cGU6Vm19XSxfTi5wcm9wRGVjb3JhdG9ycz17X3BvcnRhbEhvc3Q6W3t0eXBlOlhkLGFyZ3M6W0xBXX1dfTsKLyoqCiAgICAgKiBAbGljZW5zZQogICAgICogQ29weXJpZ2h0IEdvb2dsZSBMTEMgQWxsIFJpZ2h0cyBSZXNlcnZlZC4KICAgICAqCiAgICAgKiBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhbiBNSVQtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQogICAgICogZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZSBhdCBodHRwczovL2FuZ3VsYXIuaW8vbGljZW5zZQogICAgICovCmNvbnN0IENOPW5ldyBGYSgiTUFUX1RBQlNfQ09ORklHIik7Ci8qKgogICAgICogQGxpY2Vuc2UKICAgICAqIENvcHlyaWdodCBHb29nbGUgTExDIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCiAgICAgKgogICAgICogVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYW4gTUlULXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKICAgICAqIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUgYXQgaHR0cHM6Ly9hbmd1bGFyLmlvL2xpY2Vuc2UKICAgICAqL2xldCBNTj0wO2NsYXNzIE9Oe31jb25zdCBQTj1lRShhRShjbGFzc3tjb25zdHJ1Y3Rvcih0KXt0aGlzLl9lbGVtZW50UmVmPXR9fSksInByaW1hcnkiKTtjbGFzcyB4TiBleHRlbmRzIFBOe2NvbnN0cnVjdG9yKHQsbixlLGEpe3N1cGVyKHQpLHRoaXMuX2NoYW5nZURldGVjdG9yUmVmPW4sdGhpcy5fYW5pbWF0aW9uTW9kZT1hLHRoaXMuX3RhYnM9bmV3IHpmLHRoaXMuX2luZGV4VG9TZWxlY3Q9MCx0aGlzLl90YWJCb2R5V3JhcHBlckhlaWdodD0wLHRoaXMuX3RhYnNTdWJzY3JpcHRpb249cy5FTVBUWSx0aGlzLl90YWJMYWJlbFN1YnNjcmlwdGlvbj1zLkVNUFRZLHRoaXMuX2R5bmFtaWNIZWlnaHQ9ITEsdGhpcy5fc2VsZWN0ZWRJbmRleD1udWxsLHRoaXMuaGVhZGVyUG9zaXRpb249ImFib3ZlIix0aGlzLnNlbGVjdGVkSW5kZXhDaGFuZ2U9bmV3IEVmLHRoaXMuZm9jdXNDaGFuZ2U9bmV3IEVmLHRoaXMuYW5pbWF0aW9uRG9uZT1uZXcgRWYsdGhpcy5zZWxlY3RlZFRhYkNoYW5nZT1uZXcgRWYoITApLHRoaXMuX2dyb3VwSWQ9TU4rKyx0aGlzLmFuaW1hdGlvbkR1cmF0aW9uPWUmJmUuYW5pbWF0aW9uRHVyYXRpb24/ZS5hbmltYXRpb25EdXJhdGlvbjoiNTAwbXMiLHRoaXMuZGlzYWJsZVBhZ2luYXRpb249ISghZXx8bnVsbD09ZS5kaXNhYmxlUGFnaW5hdGlvbikmJmUuZGlzYWJsZVBhZ2luYXRpb259Z2V0IGR5bmFtaWNIZWlnaHQoKXtyZXR1cm4gdGhpcy5fZHluYW1pY0hlaWdodH1zZXQgZHluYW1pY0hlaWdodCh0KXt0aGlzLl9keW5hbWljSGVpZ2h0PUd3KHQpfWdldCBzZWxlY3RlZEluZGV4KCl7cmV0dXJuIHRoaXMuX3NlbGVjdGVkSW5kZXh9c2V0IHNlbGVjdGVkSW5kZXgodCl7dGhpcy5faW5kZXhUb1NlbGVjdD1Zdyh0LG51bGwpfWdldCBhbmltYXRpb25EdXJhdGlvbigpe3JldHVybiB0aGlzLl9hbmltYXRpb25EdXJhdGlvbn1zZXQgYW5pbWF0aW9uRHVyYXRpb24odCl7dGhpcy5fYW5pbWF0aW9uRHVyYXRpb249L15cZCskLy50ZXN0KHQpP3QrIm1zIjp0fWdldCBiYWNrZ3JvdW5kQ29sb3IoKXtyZXR1cm4gdGhpcy5fYmFja2dyb3VuZENvbG9yfXNldCBiYWNrZ3JvdW5kQ29sb3IodCl7Y29uc3Qgbj10aGlzLl9lbGVtZW50UmVmLm5hdGl2ZUVsZW1lbnQ7bi5jbGFzc0xpc3QucmVtb3ZlKGBtYXQtYmFja2dyb3VuZC0ke3RoaXMuYmFja2dyb3VuZENvbG9yfWApLHQmJm4uY2xhc3NMaXN0LmFkZChgbWF0LWJhY2tncm91bmQtJHt0fWApLHRoaXMuX2JhY2tncm91bmRDb2xvcj10fW5nQWZ0ZXJDb250ZW50Q2hlY2tlZCgpe2NvbnN0IHQ9dGhpcy5faW5kZXhUb1NlbGVjdD10aGlzLl9jbGFtcFRhYkluZGV4KHRoaXMuX2luZGV4VG9TZWxlY3QpO2lmKHRoaXMuX3NlbGVjdGVkSW5kZXghPXQpe2NvbnN0IG49bnVsbD09dGhpcy5fc2VsZWN0ZWRJbmRleDtufHx0aGlzLnNlbGVjdGVkVGFiQ2hhbmdlLmVtaXQodGhpcy5fY3JlYXRlQ2hhbmdlRXZlbnQodCkpLFByb21pc2UucmVzb2x2ZSgpLnRoZW4oKCgpPT57dGhpcy5fdGFicy5mb3JFYWNoKCgobixlKT0+bi5pc0FjdGl2ZT1lPT09dCkpLG58fHRoaXMuc2VsZWN0ZWRJbmRleENoYW5nZS5lbWl0KHQpfSkpfXRoaXMuX3RhYnMuZm9yRWFjaCgoKG4sZSk9PntuLnBvc2l0aW9uPWUtdCxudWxsPT10aGlzLl9zZWxlY3RlZEluZGV4fHwwIT1uLnBvc2l0aW9ufHxuLm9yaWdpbnx8KG4ub3JpZ2luPXQtdGhpcy5fc2VsZWN0ZWRJbmRleCl9KSksdGhpcy5fc2VsZWN0ZWRJbmRleCE9PXQmJih0aGlzLl9zZWxlY3RlZEluZGV4PXQsdGhpcy5fY2hhbmdlRGV0ZWN0b3JSZWYubWFya0ZvckNoZWNrKCkpfW5nQWZ0ZXJDb250ZW50SW5pdCgpe3RoaXMuX3N1YnNjcmliZVRvQWxsVGFiQ2hhbmdlcygpLHRoaXMuX3N1YnNjcmliZVRvVGFiTGFiZWxzKCksdGhpcy5fdGFic1N1YnNjcmlwdGlvbj10aGlzLl90YWJzLmNoYW5nZXMuc3Vic2NyaWJlKCgoKT0+e2lmKHRoaXMuX2NsYW1wVGFiSW5kZXgodGhpcy5faW5kZXhUb1NlbGVjdCk9PT10aGlzLl9zZWxlY3RlZEluZGV4KXtjb25zdCB0PXRoaXMuX3RhYnMudG9BcnJheSgpO2ZvcihsZXQgbj0wO248dC5sZW5ndGg7bisrKWlmKHRbbl0uaXNBY3RpdmUpe3RoaXMuX2luZGV4VG9TZWxlY3Q9dGhpcy5fc2VsZWN0ZWRJbmRleD1uO2JyZWFrfX10aGlzLl9jaGFuZ2VEZXRlY3RvclJlZi5tYXJrRm9yQ2hlY2soKX0pKX1fc3Vic2NyaWJlVG9BbGxUYWJDaGFuZ2VzKCl7dGhpcy5fYWxsVGFicy5jaGFuZ2VzLnBpcGUoY2UodGhpcy5fYWxsVGFicykpLnN1YnNjcmliZSgodD0+e3RoaXMuX3RhYnMucmVzZXQodC5maWx0ZXIoKHQ9PiF0Ll9jbG9zZXN0VGFiR3JvdXB8fHQuX2Nsb3Nlc3RUYWJHcm91cD09PXRoaXMpKSksdGhpcy5fdGFicy5ub3RpZnlPbkNoYW5nZXMoKX0pKX1uZ09uRGVzdHJveSgpe3RoaXMuX3RhYnMuZGVzdHJveSgpLHRoaXMuX3RhYnNTdWJzY3JpcHRpb24udW5zdWJzY3JpYmUoKSx0aGlzLl90YWJMYWJlbFN1YnNjcmlwdGlvbi51bnN1YnNjcmliZSgpfXJlYWxpZ25JbmtCYXIoKXt0aGlzLl90YWJIZWFkZXImJnRoaXMuX3RhYkhlYWRlci5fYWxpZ25JbmtCYXJUb1NlbGVjdGVkVGFiKCl9X2ZvY3VzQ2hhbmdlZCh0KXt0aGlzLmZvY3VzQ2hhbmdlLmVtaXQodGhpcy5fY3JlYXRlQ2hhbmdlRXZlbnQodCkpfV9jcmVhdGVDaGFuZ2VFdmVudCh0KXtjb25zdCBuPW5ldyBPTjtyZXR1cm4gbi5pbmRleD10LHRoaXMuX3RhYnMmJnRoaXMuX3RhYnMubGVuZ3RoJiYobi50YWI9dGhpcy5fdGFicy50b0FycmF5KClbdF0pLG59X3N1YnNjcmliZVRvVGFiTGFiZWxzKCl7dGhpcy5fdGFiTGFiZWxTdWJzY3JpcHRpb24mJnRoaXMuX3RhYkxhYmVsU3Vic2NyaXB0aW9uLnVuc3Vic2NyaWJlKCksdGhpcy5fdGFiTGFiZWxTdWJzY3JpcHRpb249V3QoLi4udGhpcy5fdGFicy5tYXAoKHQ9PnQuX3N0YXRlQ2hhbmdlcykpKS5zdWJzY3JpYmUoKCgpPT50aGlzLl9jaGFuZ2VEZXRlY3RvclJlZi5tYXJrRm9yQ2hlY2soKSkpfV9jbGFtcFRhYkluZGV4KHQpe3JldHVybiBNYXRoLm1pbih0aGlzLl90YWJzLmxlbmd0aC0xLE1hdGgubWF4KHR8fDAsMCkpfV9nZXRUYWJMYWJlbElkKHQpe3JldHVybmBtYXQtdGFiLWxhYmVsLSR7dGhpcy5fZ3JvdXBJZH0tJHt0fWB9X2dldFRhYkNvbnRlbnRJZCh0KXtyZXR1cm5gbWF0LXRhYi1jb250ZW50LSR7dGhpcy5fZ3JvdXBJZH0tJHt0fWB9X3NldFRhYkJvZHlXcmFwcGVySGVpZ2h0KHQpe2lmKCF0aGlzLl9keW5hbWljSGVpZ2h0fHwhdGhpcy5fdGFiQm9keVdyYXBwZXJIZWlnaHQpcmV0dXJuO2NvbnN0IG49dGhpcy5fdGFiQm9keVdyYXBwZXIubmF0aXZlRWxlbWVudDtuLnN0eWxlLmhlaWdodD10aGlzLl90YWJCb2R5V3JhcHBlckhlaWdodCsicHgiLHRoaXMuX3RhYkJvZHlXcmFwcGVyLm5hdGl2ZUVsZW1lbnQub2Zmc2V0SGVpZ2h0JiYobi5zdHlsZS5oZWlnaHQ9dCsicHgiKX1fcmVtb3ZlVGFiQm9keVdyYXBwZXJIZWlnaHQoKXtjb25zdCB0PXRoaXMuX3RhYkJvZHlXcmFwcGVyLm5hdGl2ZUVsZW1lbnQ7dGhpcy5fdGFiQm9keVdyYXBwZXJIZWlnaHQ9dC5jbGllbnRIZWlnaHQsdC5zdHlsZS5oZWlnaHQ9IiIsdGhpcy5hbmltYXRpb25Eb25lLmVtaXQoKX1faGFuZGxlQ2xpY2sodCxuLGUpe3QuZGlzYWJsZWR8fCh0aGlzLnNlbGVjdGVkSW5kZXg9bi5mb2N1c0luZGV4PWUpfV9nZXRUYWJJbmRleCh0LG4pe3JldHVybiB0LmRpc2FibGVkP251bGw6dGhpcy5zZWxlY3RlZEluZGV4PT09bj8wOi0xfX14Ti7JtWZhYz1mdW5jdGlvbiB0KG4pe3JldHVybiBuZXcobnx8eE4pKFpnKHh1KSxaZyhWbSksWmcoQ04sOCksWmcoZGssOCkpfSx4Ti7JtWRpcj12byh7dHlwZTp4TixpbnB1dHM6e2hlYWRlclBvc2l0aW9uOiJoZWFkZXJQb3NpdGlvbiIsYW5pbWF0aW9uRHVyYXRpb246ImFuaW1hdGlvbkR1cmF0aW9uIixkaXNhYmxlUGFnaW5hdGlvbjoiZGlzYWJsZVBhZ2luYXRpb24iLGR5bmFtaWNIZWlnaHQ6ImR5bmFtaWNIZWlnaHQiLHNlbGVjdGVkSW5kZXg6InNlbGVjdGVkSW5kZXgiLGJhY2tncm91bmRDb2xvcjoiYmFja2dyb3VuZENvbG9yIn0sb3V0cHV0czp7c2VsZWN0ZWRJbmRleENoYW5nZToic2VsZWN0ZWRJbmRleENoYW5nZSIsZm9jdXNDaGFuZ2U6ImZvY3VzQ2hhbmdlIixhbmltYXRpb25Eb25lOiJhbmltYXRpb25Eb25lIixzZWxlY3RlZFRhYkNoYW5nZToic2VsZWN0ZWRUYWJDaGFuZ2UifSxmZWF0dXJlczpbaGddfSkseE4uY3RvclBhcmFtZXRlcnM9KCk9Plt7dHlwZTp4dX0se3R5cGU6Vm19LHt0eXBlOnZvaWQgMCxkZWNvcmF0b3JzOlt7dHlwZTpJZSxhcmdzOltDTl19LHt0eXBlOk5lfV19LHt0eXBlOlN0cmluZyxkZWNvcmF0b3JzOlt7dHlwZTpOZX0se3R5cGU6SWUsYXJnczpbZGtdfV19XSx4Ti5wcm9wRGVjb3JhdG9ycz17ZHluYW1pY0hlaWdodDpbe3R5cGU6Zl99XSxzZWxlY3RlZEluZGV4Olt7dHlwZTpmX31dLGhlYWRlclBvc2l0aW9uOlt7dHlwZTpmX31dLGFuaW1hdGlvbkR1cmF0aW9uOlt7dHlwZTpmX31dLGRpc2FibGVQYWdpbmF0aW9uOlt7dHlwZTpmX31dLGJhY2tncm91bmRDb2xvcjpbe3R5cGU6Zl99XSxzZWxlY3RlZEluZGV4Q2hhbmdlOlt7dHlwZTpoX31dLGZvY3VzQ2hhbmdlOlt7dHlwZTpoX31dLGFuaW1hdGlvbkRvbmU6W3t0eXBlOmhffV0sc2VsZWN0ZWRUYWJDaGFuZ2U6W3t0eXBlOmhffV19O2NsYXNzIHlOIGV4dGVuZHMgeE57Y29uc3RydWN0b3IodCxuLGUsYSl7c3VwZXIodCxuLGUsYSl9fXlOLsm1ZmFjPWZ1bmN0aW9uIHQobil7cmV0dXJuIG5ldyhufHx5TikoWmcoeHUpLFpnKFZtKSxaZyhDTiw4KSxaZyhkayw4KSl9LHlOLsm1Y21wPV9vKHt0eXBlOnlOLHNlbGVjdG9yczpbWyJtYXQtdGFiLWdyb3VwIl1dLGNvbnRlbnRRdWVyaWVzOmZ1bmN0aW9uIHQobixlLGEpe3ZhciBvOzEmbiYmR2YoYSxiTiwhMCksMiZuJiZWZihvPVpmKCkpJiYoZS5fYWxsVGFicz1vKX0sdmlld1F1ZXJ5OmZ1bmN0aW9uIHQobixlKXt2YXIgYTsxJm4mJihVZihxSSwhMCksVWYoWkksITApKSwyJm4mJihWZihhPVpmKCkpJiYoZS5fdGFiQm9keVdyYXBwZXI9YS5maXJzdCksVmYoYT1aZigpKSYmKGUuX3RhYkhlYWRlcj1hLmZpcnN0KSl9LGhvc3RBdHRyczpbMSwibWF0LXRhYi1ncm91cCJdLGhvc3RWYXJzOjQsaG9zdEJpbmRpbmdzOmZ1bmN0aW9uIHQobixlKXsyJm4mJkRwKCJtYXQtdGFiLWdyb3VwLWR5bmFtaWMtaGVpZ2h0IixlLmR5bmFtaWNIZWlnaHQpKCJtYXQtdGFiLWdyb3VwLWludmVydGVkLWhlYWRlciIsImJlbG93Ij09PWUuaGVhZGVyUG9zaXRpb24pfSxpbnB1dHM6e2NvbG9yOiJjb2xvciIsZGlzYWJsZVJpcHBsZToiZGlzYWJsZVJpcHBsZSJ9LGV4cG9ydEFzOlsibWF0VGFiR3JvdXAiXSxmZWF0dXJlczpbTXUoW3twcm92aWRlOnBOLHVzZUV4aXN0aW5nOnlOfV0pLGhnXSxkZWNsczo2LHZhcnM6Nyxjb25zdHM6W1szLCJzZWxlY3RlZEluZGV4IiwiZGlzYWJsZVJpcHBsZSIsImRpc2FibGVQYWdpbmF0aW9uIiwiaW5kZXhGb2N1c2VkIiwic2VsZWN0Rm9jdXNlZEluZGV4Il0sWyJ0YWJIZWFkZXIiLCIiXSxbImNsYXNzIiwibWF0LXRhYi1sYWJlbCBtYXQtZm9jdXMtaW5kaWNhdG9yIiwicm9sZSIsInRhYiIsIm1hdFRhYkxhYmVsV3JhcHBlciIsIiIsIm1hdC1yaXBwbGUiLCIiLCJjZGtNb25pdG9yRWxlbWVudEZvY3VzIiwiIiwzLCJpZCIsIm1hdC10YWItbGFiZWwtYWN0aXZlIiwiZGlzYWJsZWQiLCJtYXRSaXBwbGVEaXNhYmxlZCIsImNsaWNrIiw0LCJuZ0ZvciIsIm5nRm9yT2YiXSxbMSwibWF0LXRhYi1ib2R5LXdyYXBwZXIiXSxbInRhYkJvZHlXcmFwcGVyIiwiIl0sWyJyb2xlIiwidGFicGFuZWwiLDMsImlkIiwibWF0LXRhYi1ib2R5LWFjdGl2ZSIsImNvbnRlbnQiLCJwb3NpdGlvbiIsIm9yaWdpbiIsImFuaW1hdGlvbkR1cmF0aW9uIiwiX29uQ2VudGVyZWQiLCJfb25DZW50ZXJpbmciLDQsIm5nRm9yIiwibmdGb3JPZiJdLFsicm9sZSIsInRhYiIsIm1hdFRhYkxhYmVsV3JhcHBlciIsIiIsIm1hdC1yaXBwbGUiLCIiLCJjZGtNb25pdG9yRWxlbWVudEZvY3VzIiwiIiwxLCJtYXQtdGFiLWxhYmVsIiwibWF0LWZvY3VzLWluZGljYXRvciIsMywiaWQiLCJkaXNhYmxlZCIsIm1hdFJpcHBsZURpc2FibGVkIiwiY2xpY2siXSxbMSwibWF0LXRhYi1sYWJlbC1jb250ZW50Il0sWzMsIm5nSWYiXSxbMywiY2RrUG9ydGFsT3V0bGV0Il0sWyJyb2xlIiwidGFicGFuZWwiLDMsImlkIiwiY29udGVudCIsInBvc2l0aW9uIiwib3JpZ2luIiwiYW5pbWF0aW9uRHVyYXRpb24iLCJfb25DZW50ZXJlZCIsIl9vbkNlbnRlcmluZyJdXSx0ZW1wbGF0ZTpmdW5jdGlvbiB0KG4sZSl7MSZuJiYoS2coMCwibWF0LXRhYi1oZWFkZXIiLDAsMSksY3AoImluZGV4Rm9jdXNlZCIsKGZ1bmN0aW9uIHQobil7cmV0dXJuIGUuX2ZvY3VzQ2hhbmdlZChuKX0pKSgic2VsZWN0Rm9jdXNlZEluZGV4IiwoZnVuY3Rpb24gdChuKXtyZXR1cm4gZS5zZWxlY3RlZEluZGV4PW59KSksWWcoMixLSSw0LDE0LCJkaXYiLDIpLCRnKCksS2coMywiZGl2IiwzLDQpLFlnKDUsJEksMSw4LCJtYXQtdGFiLWJvZHkiLDUpLCRnKCkpLDImbiYmKEpnKCJzZWxlY3RlZEluZGV4IixlLnNlbGVjdGVkSW5kZXh8fDApKCJkaXNhYmxlUmlwcGxlIixlLmRpc2FibGVSaXBwbGUpKCJkaXNhYmxlUGFnaW5hdGlvbiIsZS5kaXNhYmxlUGFnaW5hdGlvbiksd3MoMiksSmcoIm5nRm9yT2YiLGUuX3RhYnMpLHdzKDEpLERwKCJfbWF0LWFuaW1hdGlvbi1ub29wYWJsZSIsIk5vb3BBbmltYXRpb25zIj09PWUuX2FuaW1hdGlvbk1vZGUpLHdzKDIpLEpnKCJuZ0Zvck9mIixlLl90YWJzKSl9LGRpcmVjdGl2ZXM6ZnVuY3Rpb24oKXtyZXR1cm5bQU4sak0sdk4sekUsSVMsV00sRkEsX05dfSxzdHlsZXM6WyIubWF0LXRhYi1ncm91cHtkaXNwbGF5OmZsZXg7ZmxleC1kaXJlY3Rpb246Y29sdW1ufS5tYXQtdGFiLWdyb3VwLm1hdC10YWItZ3JvdXAtaW52ZXJ0ZWQtaGVhZGVye2ZsZXgtZGlyZWN0aW9uOmNvbHVtbi1yZXZlcnNlfS5tYXQtdGFiLWxhYmVse2hlaWdodDo0OHB4O3BhZGRpbmc6MCAyNHB4O2N1cnNvcjpwb2ludGVyO2JveC1zaXppbmc6Ym9yZGVyLWJveDtvcGFjaXR5Oi42O21pbi13aWR0aDoxNjBweDt0ZXh0LWFsaWduOmNlbnRlcjtkaXNwbGF5OmlubGluZS1mbGV4O2p1c3RpZnktY29udGVudDpjZW50ZXI7YWxpZ24taXRlbXM6Y2VudGVyO3doaXRlLXNwYWNlOm5vd3JhcDtwb3NpdGlvbjpyZWxhdGl2ZX0ubWF0LXRhYi1sYWJlbDpmb2N1c3tvdXRsaW5lOm5vbmV9Lm1hdC10YWItbGFiZWw6Zm9jdXM6bm90KC5tYXQtdGFiLWRpc2FibGVkKXtvcGFjaXR5OjF9LmNkay1oaWdoLWNvbnRyYXN0LWFjdGl2ZSAubWF0LXRhYi1sYWJlbDpmb2N1c3tvdXRsaW5lOmRvdHRlZCAycHg7b3V0bGluZS1vZmZzZXQ6LTJweH0ubWF0LXRhYi1sYWJlbC5tYXQtdGFiLWRpc2FibGVke2N1cnNvcjpkZWZhdWx0fS5jZGstaGlnaC1jb250cmFzdC1hY3RpdmUgLm1hdC10YWItbGFiZWwubWF0LXRhYi1kaXNhYmxlZHtvcGFjaXR5Oi41fS5tYXQtdGFiLWxhYmVsIC5tYXQtdGFiLWxhYmVsLWNvbnRlbnR7ZGlzcGxheTppbmxpbmUtZmxleDtqdXN0aWZ5LWNvbnRlbnQ6Y2VudGVyO2FsaWduLWl0ZW1zOmNlbnRlcjt3aGl0ZS1zcGFjZTpub3dyYXB9LmNkay1oaWdoLWNvbnRyYXN0LWFjdGl2ZSAubWF0LXRhYi1sYWJlbHtvcGFjaXR5OjF9QG1lZGlhKG1heC13aWR0aDogNTk5cHgpey5tYXQtdGFiLWxhYmVse3BhZGRpbmc6MCAxMnB4fX1AbWVkaWEobWF4LXdpZHRoOiA5NTlweCl7Lm1hdC10YWItbGFiZWx7cGFkZGluZzowIDEycHh9fS5tYXQtdGFiLWdyb3VwW21hdC1zdHJldGNoLXRhYnNdPi5tYXQtdGFiLWhlYWRlciAubWF0LXRhYi1sYWJlbHtmbGV4LWJhc2lzOjA7ZmxleC1ncm93OjF9Lm1hdC10YWItYm9keS13cmFwcGVye3Bvc2l0aW9uOnJlbGF0aXZlO292ZXJmbG93OmhpZGRlbjtkaXNwbGF5OmZsZXg7dHJhbnNpdGlvbjpoZWlnaHQgNTAwbXMgY3ViaWMtYmV6aWVyKDAuMzUsIDAsIDAuMjUsIDEpfS5fbWF0LWFuaW1hdGlvbi1ub29wYWJsZS5tYXQtdGFiLWJvZHktd3JhcHBlcnt0cmFuc2l0aW9uOm5vbmU7YW5pbWF0aW9uOm5vbmV9Lm1hdC10YWItYm9keXt0b3A6MDtsZWZ0OjA7cmlnaHQ6MDtib3R0b206MDtwb3NpdGlvbjphYnNvbHV0ZTtkaXNwbGF5OmJsb2NrO292ZXJmbG93OmhpZGRlbjtmbGV4LWJhc2lzOjEwMCV9Lm1hdC10YWItYm9keS5tYXQtdGFiLWJvZHktYWN0aXZle3Bvc2l0aW9uOnJlbGF0aXZlO292ZXJmbG93LXg6aGlkZGVuO292ZXJmbG93LXk6YXV0bzt6LWluZGV4OjE7ZmxleC1ncm93OjF9Lm1hdC10YWItZ3JvdXAubWF0LXRhYi1ncm91cC1keW5hbWljLWhlaWdodCAubWF0LXRhYi1ib2R5Lm1hdC10YWItYm9keS1hY3RpdmV7b3ZlcmZsb3cteTpoaWRkZW59XG4iXSxlbmNhcHN1bGF0aW9uOjJ9KSx5Ti5jdG9yUGFyYW1ldGVycz0oKT0+W3t0eXBlOnh1fSx7dHlwZTpWbX0se3R5cGU6dm9pZCAwLGRlY29yYXRvcnM6W3t0eXBlOkllLGFyZ3M6W0NOXX0se3R5cGU6TmV9XX0se3R5cGU6U3RyaW5nLGRlY29yYXRvcnM6W3t0eXBlOk5lfSx7dHlwZTpJZSxhcmdzOltka119XX1dLHlOLnByb3BEZWNvcmF0b3JzPXtfYWxsVGFiczpbe3R5cGU6cWQsYXJnczpbYk4se2Rlc2NlbmRhbnRzOiEwfV19XSxfdGFiQm9keVdyYXBwZXI6W3t0eXBlOlhkLGFyZ3M6WyJ0YWJCb2R5V3JhcHBlciJdfV0sX3RhYkhlYWRlcjpbe3R5cGU6WGQsYXJnczpbInRhYkhlYWRlciJdfV19O2NvbnN0IGtOPW5FKAovKioKICAgICAqIEBsaWNlbnNlCiAgICAgKiBDb3B5cmlnaHQgR29vZ2xlIExMQyBBbGwgUmlnaHRzIFJlc2VydmVkLgogICAgICoKICAgICAqIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGFuIE1JVC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCiAgICAgKiBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlIGF0IGh0dHBzOi8vYW5ndWxhci5pby9saWNlbnNlCiAgICAgKi8KY2xhc3N7fSk7Y2xhc3Mgdk4gZXh0ZW5kcyBrTntjb25zdHJ1Y3Rvcih0KXtzdXBlcigpLHRoaXMuZWxlbWVudFJlZj10fWZvY3VzKCl7dGhpcy5lbGVtZW50UmVmLm5hdGl2ZUVsZW1lbnQuZm9jdXMoKX1nZXRPZmZzZXRMZWZ0KCl7cmV0dXJuIHRoaXMuZWxlbWVudFJlZi5uYXRpdmVFbGVtZW50Lm9mZnNldExlZnR9Z2V0T2Zmc2V0V2lkdGgoKXtyZXR1cm4gdGhpcy5lbGVtZW50UmVmLm5hdGl2ZUVsZW1lbnQub2Zmc2V0V2lkdGh9fXZOLsm1ZmFjPWZ1bmN0aW9uIHQobil7cmV0dXJuIG5ldyhufHx2TikoWmcoeHUpKX0sdk4uybVkaXI9dm8oe3R5cGU6dk4sc2VsZWN0b3JzOltbIiIsIm1hdFRhYkxhYmVsV3JhcHBlciIsIiJdXSxob3N0VmFyczozLGhvc3RCaW5kaW5nczpmdW5jdGlvbiB0KG4sZSl7MiZuJiYoTmcoImFyaWEtZGlzYWJsZWQiLCEhZS5kaXNhYmxlZCksRHAoIm1hdC10YWItZGlzYWJsZWQiLGUuZGlzYWJsZWQpKX0saW5wdXRzOntkaXNhYmxlZDoiZGlzYWJsZWQifSxmZWF0dXJlczpbaGddfSksdk4uY3RvclBhcmFtZXRlcnM9KCk9Plt7dHlwZTp4dX1dCi8qKgogICAgICogQGxpY2Vuc2UKICAgICAqIENvcHlyaWdodCBHb29nbGUgTExDIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCiAgICAgKgogICAgICogVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYW4gTUlULXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKICAgICAqIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUgYXQgaHR0cHM6Ly9hbmd1bGFyLmlvL2xpY2Vuc2UKICAgICAqLztjb25zdCB3Tj1Odyh7cGFzc2l2ZTohMH0pO2NsYXNzIFNOe2NvbnN0cnVjdG9yKHQsbixlLGEsbyxyLGkpe3RoaXMuX2VsZW1lbnRSZWY9dCx0aGlzLl9jaGFuZ2VEZXRlY3RvclJlZj1uLHRoaXMuX3ZpZXdwb3J0UnVsZXI9ZSx0aGlzLl9kaXI9YSx0aGlzLl9uZ1pvbmU9byx0aGlzLl9wbGF0Zm9ybT1yLHRoaXMuX2FuaW1hdGlvbk1vZGU9aSx0aGlzLl9zY3JvbGxEaXN0YW5jZT0wLHRoaXMuX3NlbGVjdGVkSW5kZXhDaGFuZ2VkPSExLHRoaXMuX2Rlc3Ryb3llZD1uZXcgeCx0aGlzLl9zaG93UGFnaW5hdGlvbkNvbnRyb2xzPSExLHRoaXMuX2Rpc2FibGVTY3JvbGxBZnRlcj0hMCx0aGlzLl9kaXNhYmxlU2Nyb2xsQmVmb3JlPSEwLHRoaXMuX3N0b3BTY3JvbGxpbmc9bmV3IHgsdGhpcy5kaXNhYmxlUGFnaW5hdGlvbj0hMSx0aGlzLl9zZWxlY3RlZEluZGV4PTAsdGhpcy5zZWxlY3RGb2N1c2VkSW5kZXg9bmV3IEVmLHRoaXMuaW5kZXhGb2N1c2VkPW5ldyBFZixvLnJ1bk91dHNpZGVBbmd1bGFyKCgoKT0+e1Z0KHQubmF0aXZlRWxlbWVudCwibW91c2VsZWF2ZSIpLnBpcGUoZGUodGhpcy5fZGVzdHJveWVkKSkuc3Vic2NyaWJlKCgoKT0+e3RoaXMuX3N0b3BJbnRlcnZhbCgpfSkpfSkpfWdldCBzZWxlY3RlZEluZGV4KCl7cmV0dXJuIHRoaXMuX3NlbGVjdGVkSW5kZXh9c2V0IHNlbGVjdGVkSW5kZXgodCl7dD1Zdyh0KSx0aGlzLl9zZWxlY3RlZEluZGV4IT10JiYodGhpcy5fc2VsZWN0ZWRJbmRleENoYW5nZWQ9ITAsdGhpcy5fc2VsZWN0ZWRJbmRleD10LHRoaXMuX2tleU1hbmFnZXImJnRoaXMuX2tleU1hbmFnZXIudXBkYXRlQWN0aXZlSXRlbSh0KSl9bmdBZnRlclZpZXdJbml0KCl7VnQodGhpcy5fcHJldmlvdXNQYWdpbmF0b3IubmF0aXZlRWxlbWVudCwidG91Y2hzdGFydCIsd04pLnBpcGUoZGUodGhpcy5fZGVzdHJveWVkKSkuc3Vic2NyaWJlKCgoKT0+e3RoaXMuX2hhbmRsZVBhZ2luYXRvclByZXNzKCJiZWZvcmUiKX0pKSxWdCh0aGlzLl9uZXh0UGFnaW5hdG9yLm5hdGl2ZUVsZW1lbnQsInRvdWNoc3RhcnQiLHdOKS5waXBlKGRlKHRoaXMuX2Rlc3Ryb3llZCkpLnN1YnNjcmliZSgoKCk9Pnt0aGlzLl9oYW5kbGVQYWdpbmF0b3JQcmVzcygiYWZ0ZXIiKX0pKX1uZ0FmdGVyQ29udGVudEluaXQoKXtjb25zdCB0PXRoaXMuX2Rpcj90aGlzLl9kaXIuY2hhbmdlOloobnVsbCksbj10aGlzLl92aWV3cG9ydFJ1bGVyLmNoYW5nZSgxNTApLGU9KCk9Pnt0aGlzLnVwZGF0ZVBhZ2luYXRpb24oKSx0aGlzLl9hbGlnbklua0JhclRvU2VsZWN0ZWRUYWIoKX07dGhpcy5fa2V5TWFuYWdlcj1uZXcgbVModGhpcy5faXRlbXMpLndpdGhIb3Jpem9udGFsT3JpZW50YXRpb24odGhpcy5fZ2V0TGF5b3V0RGlyZWN0aW9uKCkpLndpdGhIb21lQW5kRW5kKCkud2l0aFdyYXAoKSx0aGlzLl9rZXlNYW5hZ2VyLnVwZGF0ZUFjdGl2ZUl0ZW0odGhpcy5fc2VsZWN0ZWRJbmRleCksInVuZGVmaW5lZCIhPXR5cGVvZiByZXF1ZXN0QW5pbWF0aW9uRnJhbWU/cmVxdWVzdEFuaW1hdGlvbkZyYW1lKGUpOmUoKSxXdCh0LG4sdGhpcy5faXRlbXMuY2hhbmdlcykucGlwZShkZSh0aGlzLl9kZXN0cm95ZWQpKS5zdWJzY3JpYmUoKCgpPT57UHJvbWlzZS5yZXNvbHZlKCkudGhlbihlKSx0aGlzLl9rZXlNYW5hZ2VyLndpdGhIb3Jpem9udGFsT3JpZW50YXRpb24odGhpcy5fZ2V0TGF5b3V0RGlyZWN0aW9uKCkpfSkpLHRoaXMuX2tleU1hbmFnZXIuY2hhbmdlLnBpcGUoZGUodGhpcy5fZGVzdHJveWVkKSkuc3Vic2NyaWJlKCh0PT57dGhpcy5pbmRleEZvY3VzZWQuZW1pdCh0KSx0aGlzLl9zZXRUYWJGb2N1cyh0KX0pKX1uZ0FmdGVyQ29udGVudENoZWNrZWQoKXt0aGlzLl90YWJMYWJlbENvdW50IT10aGlzLl9pdGVtcy5sZW5ndGgmJih0aGlzLnVwZGF0ZVBhZ2luYXRpb24oKSx0aGlzLl90YWJMYWJlbENvdW50PXRoaXMuX2l0ZW1zLmxlbmd0aCx0aGlzLl9jaGFuZ2VEZXRlY3RvclJlZi5tYXJrRm9yQ2hlY2soKSksdGhpcy5fc2VsZWN0ZWRJbmRleENoYW5nZWQmJih0aGlzLl9zY3JvbGxUb0xhYmVsKHRoaXMuX3NlbGVjdGVkSW5kZXgpLHRoaXMuX2NoZWNrU2Nyb2xsaW5nQ29udHJvbHMoKSx0aGlzLl9hbGlnbklua0JhclRvU2VsZWN0ZWRUYWIoKSx0aGlzLl9zZWxlY3RlZEluZGV4Q2hhbmdlZD0hMSx0aGlzLl9jaGFuZ2VEZXRlY3RvclJlZi5tYXJrRm9yQ2hlY2soKSksdGhpcy5fc2Nyb2xsRGlzdGFuY2VDaGFuZ2VkJiYodGhpcy5fdXBkYXRlVGFiU2Nyb2xsUG9zaXRpb24oKSx0aGlzLl9zY3JvbGxEaXN0YW5jZUNoYW5nZWQ9ITEsdGhpcy5fY2hhbmdlRGV0ZWN0b3JSZWYubWFya0ZvckNoZWNrKCkpfW5nT25EZXN0cm95KCl7dGhpcy5fZGVzdHJveWVkLm5leHQoKSx0aGlzLl9kZXN0cm95ZWQuY29tcGxldGUoKSx0aGlzLl9zdG9wU2Nyb2xsaW5nLmNvbXBsZXRlKCl9X2hhbmRsZUtleWRvd24odCl7aWYoIVd3KHQpKXN3aXRjaCh0LmtleUNvZGUpe2Nhc2UgSHc6Y2FzZSBWdzp0aGlzLmZvY3VzSW5kZXghPT10aGlzLnNlbGVjdGVkSW5kZXgmJih0aGlzLnNlbGVjdEZvY3VzZWRJbmRleC5lbWl0KHRoaXMuZm9jdXNJbmRleCksdGhpcy5faXRlbVNlbGVjdGVkKHQpKTticmVhaztkZWZhdWx0OnRoaXMuX2tleU1hbmFnZXIub25LZXlkb3duKHQpfX1fb25Db250ZW50Q2hhbmdlcygpe2NvbnN0IHQ9dGhpcy5fZWxlbWVudFJlZi5uYXRpdmVFbGVtZW50LnRleHRDb250ZW50O3QhPT10aGlzLl9jdXJyZW50VGV4dENvbnRlbnQmJih0aGlzLl9jdXJyZW50VGV4dENvbnRlbnQ9dHx8IiIsdGhpcy5fbmdab25lLnJ1bigoKCk9Pnt0aGlzLnVwZGF0ZVBhZ2luYXRpb24oKSx0aGlzLl9hbGlnbklua0JhclRvU2VsZWN0ZWRUYWIoKSx0aGlzLl9jaGFuZ2VEZXRlY3RvclJlZi5tYXJrRm9yQ2hlY2soKX0pKSl9dXBkYXRlUGFnaW5hdGlvbigpe3RoaXMuX2NoZWNrUGFnaW5hdGlvbkVuYWJsZWQoKSx0aGlzLl9jaGVja1Njcm9sbGluZ0NvbnRyb2xzKCksdGhpcy5fdXBkYXRlVGFiU2Nyb2xsUG9zaXRpb24oKX1nZXQgZm9jdXNJbmRleCgpe3JldHVybiB0aGlzLl9rZXlNYW5hZ2VyP3RoaXMuX2tleU1hbmFnZXIuYWN0aXZlSXRlbUluZGV4OjB9c2V0IGZvY3VzSW5kZXgodCl7dGhpcy5faXNWYWxpZEluZGV4KHQpJiZ0aGlzLmZvY3VzSW5kZXghPT10JiZ0aGlzLl9rZXlNYW5hZ2VyJiZ0aGlzLl9rZXlNYW5hZ2VyLnNldEFjdGl2ZUl0ZW0odCl9X2lzVmFsaWRJbmRleCh0KXtpZighdGhpcy5faXRlbXMpcmV0dXJuITA7Y29uc3Qgbj10aGlzLl9pdGVtcz90aGlzLl9pdGVtcy50b0FycmF5KClbdF06bnVsbDtyZXR1cm4hIW4mJiFuLmRpc2FibGVkfV9zZXRUYWJGb2N1cyh0KXtpZih0aGlzLl9zaG93UGFnaW5hdGlvbkNvbnRyb2xzJiZ0aGlzLl9zY3JvbGxUb0xhYmVsKHQpLHRoaXMuX2l0ZW1zJiZ0aGlzLl9pdGVtcy5sZW5ndGgpe3RoaXMuX2l0ZW1zLnRvQXJyYXkoKVt0XS5mb2N1cygpO2NvbnN0IG49dGhpcy5fdGFiTGlzdENvbnRhaW5lci5uYXRpdmVFbGVtZW50LGU9dGhpcy5fZ2V0TGF5b3V0RGlyZWN0aW9uKCk7bi5zY3JvbGxMZWZ0PSJsdHIiPT1lPzA6bi5zY3JvbGxXaWR0aC1uLm9mZnNldFdpZHRofX1fZ2V0TGF5b3V0RGlyZWN0aW9uKCl7cmV0dXJuIHRoaXMuX2RpciYmInJ0bCI9PT10aGlzLl9kaXIudmFsdWU/InJ0bCI6Imx0ciJ9X3VwZGF0ZVRhYlNjcm9sbFBvc2l0aW9uKCl7aWYodGhpcy5kaXNhYmxlUGFnaW5hdGlvbilyZXR1cm47Y29uc3QgdD10aGlzLnNjcm9sbERpc3RhbmNlLG49dGhpcy5fcGxhdGZvcm0sZT0ibHRyIj09PXRoaXMuX2dldExheW91dERpcmVjdGlvbigpPy10OnQ7dGhpcy5fdGFiTGlzdC5uYXRpdmVFbGVtZW50LnN0eWxlLnRyYW5zZm9ybT1gdHJhbnNsYXRlWCgke01hdGgucm91bmQoZSl9cHgpYCxuJiYobi5UUklERU5UfHxuLkVER0UpJiYodGhpcy5fdGFiTGlzdENvbnRhaW5lci5uYXRpdmVFbGVtZW50LnNjcm9sbExlZnQ9MCl9Z2V0IHNjcm9sbERpc3RhbmNlKCl7cmV0dXJuIHRoaXMuX3Njcm9sbERpc3RhbmNlfXNldCBzY3JvbGxEaXN0YW5jZSh0KXt0aGlzLl9zY3JvbGxUbyh0KX1fc2Nyb2xsSGVhZGVyKHQpe3JldHVybiB0aGlzLl9zY3JvbGxUbyh0aGlzLl9zY3JvbGxEaXN0YW5jZSsoImJlZm9yZSI9PXQ/LTE6MSkqdGhpcy5fdGFiTGlzdENvbnRhaW5lci5uYXRpdmVFbGVtZW50Lm9mZnNldFdpZHRoLzMpfV9oYW5kbGVQYWdpbmF0b3JDbGljayh0KXt0aGlzLl9zdG9wSW50ZXJ2YWwoKSx0aGlzLl9zY3JvbGxIZWFkZXIodCl9X3Njcm9sbFRvTGFiZWwodCl7aWYodGhpcy5kaXNhYmxlUGFnaW5hdGlvbilyZXR1cm47Y29uc3Qgbj10aGlzLl9pdGVtcz90aGlzLl9pdGVtcy50b0FycmF5KClbdF06bnVsbDtpZighbilyZXR1cm47Y29uc3QgZT10aGlzLl90YWJMaXN0Q29udGFpbmVyLm5hdGl2ZUVsZW1lbnQub2Zmc2V0V2lkdGgse29mZnNldExlZnQ6YSxvZmZzZXRXaWR0aDpvfT1uLmVsZW1lbnRSZWYubmF0aXZlRWxlbWVudDtsZXQgcixpOyJsdHIiPT10aGlzLl9nZXRMYXlvdXREaXJlY3Rpb24oKT8ocj1hLGk9citvKTooaT10aGlzLl90YWJMaXN0Lm5hdGl2ZUVsZW1lbnQub2Zmc2V0V2lkdGgtYSxyPWktbyk7Y29uc3QgYz10aGlzLnNjcm9sbERpc3RhbmNlLHM9dGhpcy5zY3JvbGxEaXN0YW5jZStlO3I8Yz90aGlzLnNjcm9sbERpc3RhbmNlLT1jLXIrNjA6aT5zJiYodGhpcy5zY3JvbGxEaXN0YW5jZSs9aS1zKzYwKX1fY2hlY2tQYWdpbmF0aW9uRW5hYmxlZCgpe2lmKHRoaXMuZGlzYWJsZVBhZ2luYXRpb24pdGhpcy5fc2hvd1BhZ2luYXRpb25Db250cm9scz0hMTtlbHNle2NvbnN0IHQ9dGhpcy5fdGFiTGlzdC5uYXRpdmVFbGVtZW50LnNjcm9sbFdpZHRoPnRoaXMuX2VsZW1lbnRSZWYubmF0aXZlRWxlbWVudC5vZmZzZXRXaWR0aDt0fHwodGhpcy5zY3JvbGxEaXN0YW5jZT0wKSx0IT09dGhpcy5fc2hvd1BhZ2luYXRpb25Db250cm9scyYmdGhpcy5fY2hhbmdlRGV0ZWN0b3JSZWYubWFya0ZvckNoZWNrKCksdGhpcy5fc2hvd1BhZ2luYXRpb25Db250cm9scz10fX1fY2hlY2tTY3JvbGxpbmdDb250cm9scygpe3RoaXMuZGlzYWJsZVBhZ2luYXRpb24/dGhpcy5fZGlzYWJsZVNjcm9sbEFmdGVyPXRoaXMuX2Rpc2FibGVTY3JvbGxCZWZvcmU9ITA6KHRoaXMuX2Rpc2FibGVTY3JvbGxCZWZvcmU9MD09dGhpcy5zY3JvbGxEaXN0YW5jZSx0aGlzLl9kaXNhYmxlU2Nyb2xsQWZ0ZXI9dGhpcy5zY3JvbGxEaXN0YW5jZT09dGhpcy5fZ2V0TWF4U2Nyb2xsRGlzdGFuY2UoKSx0aGlzLl9jaGFuZ2VEZXRlY3RvclJlZi5tYXJrRm9yQ2hlY2soKSl9X2dldE1heFNjcm9sbERpc3RhbmNlKCl7cmV0dXJuIHRoaXMuX3RhYkxpc3QubmF0aXZlRWxlbWVudC5zY3JvbGxXaWR0aC10aGlzLl90YWJMaXN0Q29udGFpbmVyLm5hdGl2ZUVsZW1lbnQub2Zmc2V0V2lkdGh8fDB9X2FsaWduSW5rQmFyVG9TZWxlY3RlZFRhYigpe2NvbnN0IHQ9dGhpcy5faXRlbXMmJnRoaXMuX2l0ZW1zLmxlbmd0aD90aGlzLl9pdGVtcy50b0FycmF5KClbdGhpcy5zZWxlY3RlZEluZGV4XTpudWxsLG49dD90LmVsZW1lbnRSZWYubmF0aXZlRWxlbWVudDpudWxsO24/dGhpcy5faW5rQmFyLmFsaWduVG9FbGVtZW50KG4pOnRoaXMuX2lua0Jhci5oaWRlKCl9X3N0b3BJbnRlcnZhbCgpe3RoaXMuX3N0b3BTY3JvbGxpbmcubmV4dCgpfV9oYW5kbGVQYWdpbmF0b3JQcmVzcyh0LG4pe24mJm51bGwhPW4uYnV0dG9uJiYwIT09bi5idXR0b258fCh0aGlzLl9zdG9wSW50ZXJ2YWwoKSxadCg2NTAsMTAwKS5waXBlKGRlKFd0KHRoaXMuX3N0b3BTY3JvbGxpbmcsdGhpcy5fZGVzdHJveWVkKSkpLnN1YnNjcmliZSgoKCk9Pntjb25zdHttYXhTY3JvbGxEaXN0YW5jZTpuLGRpc3RhbmNlOmV9PXRoaXMuX3Njcm9sbEhlYWRlcih0KTsoMD09PWV8fGU+PW4pJiZ0aGlzLl9zdG9wSW50ZXJ2YWwoKX0pKSl9X3Njcm9sbFRvKHQpe2lmKHRoaXMuZGlzYWJsZVBhZ2luYXRpb24pcmV0dXJue21heFNjcm9sbERpc3RhbmNlOjAsZGlzdGFuY2U6MH07Y29uc3Qgbj10aGlzLl9nZXRNYXhTY3JvbGxEaXN0YW5jZSgpO3JldHVybiB0aGlzLl9zY3JvbGxEaXN0YW5jZT1NYXRoLm1heCgwLE1hdGgubWluKG4sdCkpLHRoaXMuX3Njcm9sbERpc3RhbmNlQ2hhbmdlZD0hMCx0aGlzLl9jaGVja1Njcm9sbGluZ0NvbnRyb2xzKCkse21heFNjcm9sbERpc3RhbmNlOm4sZGlzdGFuY2U6dGhpcy5fc2Nyb2xsRGlzdGFuY2V9fX1TTi7JtWZhYz1mdW5jdGlvbiB0KG4pe3JldHVybiBuZXcobnx8U04pKFpnKHh1KSxaZyhWbSksWmcoTUEpLFpnKFVTLDgpLFpnKEpfKSxaZyhTdyksWmcoZGssOCkpfSxTTi7JtWRpcj12byh7dHlwZTpTTixpbnB1dHM6e2Rpc2FibGVQYWdpbmF0aW9uOiJkaXNhYmxlUGFnaW5hdGlvbiJ9fSksU04uY3RvclBhcmFtZXRlcnM9KCk9Plt7dHlwZTp4dX0se3R5cGU6Vm19LHt0eXBlOk1BfSx7dHlwZTpVUyxkZWNvcmF0b3JzOlt7dHlwZTpOZX1dfSx7dHlwZTpKX30se3R5cGU6U3d9LHt0eXBlOlN0cmluZyxkZWNvcmF0b3JzOlt7dHlwZTpOZX0se3R5cGU6SWUsYXJnczpbZGtdfV19XSxTTi5wcm9wRGVjb3JhdG9ycz17ZGlzYWJsZVBhZ2luYXRpb246W3t0eXBlOmZffV19OwovKioKICAgICAqIEBsaWNlbnNlCiAgICAgKiBDb3B5cmlnaHQgR29vZ2xlIExMQyBBbGwgUmlnaHRzIFJlc2VydmVkLgogICAgICoKICAgICAqIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGFuIE1JVC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCiAgICAgKiBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlIGF0IGh0dHBzOi8vYW5ndWxhci5pby9saWNlbnNlCiAgICAgKi8KY2xhc3MgRU4gZXh0ZW5kcyBTTntjb25zdHJ1Y3Rvcih0LG4sZSxhLG8scixpKXtzdXBlcih0LG4sZSxhLG8scixpKSx0aGlzLl9kaXNhYmxlUmlwcGxlPSExfWdldCBkaXNhYmxlUmlwcGxlKCl7cmV0dXJuIHRoaXMuX2Rpc2FibGVSaXBwbGV9c2V0IGRpc2FibGVSaXBwbGUodCl7dGhpcy5fZGlzYWJsZVJpcHBsZT1Hdyh0KX1faXRlbVNlbGVjdGVkKHQpe3QucHJldmVudERlZmF1bHQoKX19RU4uybVmYWM9ZnVuY3Rpb24gdChuKXtyZXR1cm4gbmV3KG58fEVOKShaZyh4dSksWmcoVm0pLFpnKE1BKSxaZyhVUyw4KSxaZyhKXyksWmcoU3cpLFpnKGRrLDgpKX0sRU4uybVkaXI9dm8oe3R5cGU6RU4saW5wdXRzOntkaXNhYmxlUmlwcGxlOiJkaXNhYmxlUmlwcGxlIn0sZmVhdHVyZXM6W2hnXX0pLEVOLmN0b3JQYXJhbWV0ZXJzPSgpPT5be3R5cGU6eHV9LHt0eXBlOlZtfSx7dHlwZTpNQX0se3R5cGU6VVMsZGVjb3JhdG9yczpbe3R5cGU6TmV9XX0se3R5cGU6Sl99LHt0eXBlOlN3fSx7dHlwZTpTdHJpbmcsZGVjb3JhdG9yczpbe3R5cGU6TmV9LHt0eXBlOkllLGFyZ3M6W2RrXX1dfV0sRU4ucHJvcERlY29yYXRvcnM9e2Rpc2FibGVSaXBwbGU6W3t0eXBlOmZffV19O2NsYXNzIEFOIGV4dGVuZHMgRU57Y29uc3RydWN0b3IodCxuLGUsYSxvLHIsaSl7c3VwZXIodCxuLGUsYSxvLHIsaSl9fUFOLsm1ZmFjPWZ1bmN0aW9uIHQobil7cmV0dXJuIG5ldyhufHxBTikoWmcoeHUpLFpnKFZtKSxaZyhNQSksWmcoVVMsOCksWmcoSl8pLFpnKFN3KSxaZyhkayw4KSl9LEFOLsm1Y21wPV9vKHt0eXBlOkFOLHNlbGVjdG9yczpbWyJtYXQtdGFiLWhlYWRlciJdXSxjb250ZW50UXVlcmllczpmdW5jdGlvbiB0KG4sZSxhKXt2YXIgbzsxJm4mJkdmKGEsdk4sITEpLDImbiYmVmYobz1aZigpKSYmKGUuX2l0ZW1zPW8pfSx2aWV3UXVlcnk6ZnVuY3Rpb24gdChuLGUpe3ZhciBhOzEmbiYmKGpmKGlOLCEwKSxqZih0TiwhMCksamYobk4sITApLFVmKGVOLCEwKSxVZihhTiwhMCkpLDImbiYmKFZmKGE9WmYoKSkmJihlLl9pbmtCYXI9YS5maXJzdCksVmYoYT1aZigpKSYmKGUuX3RhYkxpc3RDb250YWluZXI9YS5maXJzdCksVmYoYT1aZigpKSYmKGUuX3RhYkxpc3Q9YS5maXJzdCksVmYoYT1aZigpKSYmKGUuX25leHRQYWdpbmF0b3I9YS5maXJzdCksVmYoYT1aZigpKSYmKGUuX3ByZXZpb3VzUGFnaW5hdG9yPWEuZmlyc3QpKX0saG9zdEF0dHJzOlsxLCJtYXQtdGFiLWhlYWRlciJdLGhvc3RWYXJzOjQsaG9zdEJpbmRpbmdzOmZ1bmN0aW9uIHQobixlKXsyJm4mJkRwKCJtYXQtdGFiLWhlYWRlci1wYWdpbmF0aW9uLWNvbnRyb2xzLWVuYWJsZWQiLGUuX3Nob3dQYWdpbmF0aW9uQ29udHJvbHMpKCJtYXQtdGFiLWhlYWRlci1ydGwiLCJydGwiPT1lLl9nZXRMYXlvdXREaXJlY3Rpb24oKSl9LGlucHV0czp7c2VsZWN0ZWRJbmRleDoic2VsZWN0ZWRJbmRleCJ9LG91dHB1dHM6e3NlbGVjdEZvY3VzZWRJbmRleDoic2VsZWN0Rm9jdXNlZEluZGV4IixpbmRleEZvY3VzZWQ6ImluZGV4Rm9jdXNlZCJ9LGZlYXR1cmVzOltoZ10sbmdDb250ZW50U2VsZWN0b3JzOlVJLGRlY2xzOjEzLHZhcnM6OCxjb25zdHM6W1siYXJpYS1oaWRkZW4iLCJ0cnVlIiwibWF0LXJpcHBsZSIsIiIsMSwibWF0LXRhYi1oZWFkZXItcGFnaW5hdGlvbiIsIm1hdC10YWItaGVhZGVyLXBhZ2luYXRpb24tYmVmb3JlIiwibWF0LWVsZXZhdGlvbi16NCIsMywibWF0UmlwcGxlRGlzYWJsZWQiLCJjbGljayIsIm1vdXNlZG93biIsInRvdWNoZW5kIl0sWyJwcmV2aW91c1BhZ2luYXRvciIsIiJdLFsxLCJtYXQtdGFiLWhlYWRlci1wYWdpbmF0aW9uLWNoZXZyb24iXSxbMSwibWF0LXRhYi1sYWJlbC1jb250YWluZXIiLDMsImtleWRvd24iXSxbInRhYkxpc3RDb250YWluZXIiLCIiXSxbInJvbGUiLCJ0YWJsaXN0IiwxLCJtYXQtdGFiLWxpc3QiLDMsImNka09ic2VydmVDb250ZW50Il0sWyJ0YWJMaXN0IiwiIl0sWzEsIm1hdC10YWItbGFiZWxzIl0sWyJhcmlhLWhpZGRlbiIsInRydWUiLCJtYXQtcmlwcGxlIiwiIiwxLCJtYXQtdGFiLWhlYWRlci1wYWdpbmF0aW9uIiwibWF0LXRhYi1oZWFkZXItcGFnaW5hdGlvbi1hZnRlciIsIm1hdC1lbGV2YXRpb24tejQiLDMsIm1hdFJpcHBsZURpc2FibGVkIiwibW91c2Vkb3duIiwiY2xpY2siLCJ0b3VjaGVuZCJdLFsibmV4dFBhZ2luYXRvciIsIiJdXSx0ZW1wbGF0ZTpmdW5jdGlvbiB0KG4sZSl7MSZuJiYoYnAoKSxLZygwLCJkaXYiLDAsMSksY3AoImNsaWNrIiwoZnVuY3Rpb24gdCgpe3JldHVybiBlLl9oYW5kbGVQYWdpbmF0b3JDbGljaygiYmVmb3JlIil9KSkoIm1vdXNlZG93biIsKGZ1bmN0aW9uIHQobil7cmV0dXJuIGUuX2hhbmRsZVBhZ2luYXRvclByZXNzKCJiZWZvcmUiLG4pfSkpKCJ0b3VjaGVuZCIsKGZ1bmN0aW9uIHQoKXtyZXR1cm4gZS5fc3RvcEludGVydmFsKCl9KSksdHAoMiwiZGl2IiwyKSwkZygpLEtnKDMsImRpdiIsMyw0KSxjcCgia2V5ZG93biIsKGZ1bmN0aW9uIHQobil7cmV0dXJuIGUuX2hhbmRsZUtleWRvd24obil9KSksS2coNSwiZGl2Iiw1LDYpLGNwKCJjZGtPYnNlcnZlQ29udGVudCIsKGZ1bmN0aW9uIHQoKXtyZXR1cm4gZS5fb25Db250ZW50Q2hhbmdlcygpfSkpLEtnKDcsImRpdiIsNyksaHAoOCksJGcoKSx0cCg5LCJtYXQtaW5rLWJhciIpLCRnKCksJGcoKSxLZygxMCwiZGl2Iiw4LDkpLGNwKCJtb3VzZWRvd24iLChmdW5jdGlvbiB0KG4pe3JldHVybiBlLl9oYW5kbGVQYWdpbmF0b3JQcmVzcygiYWZ0ZXIiLG4pfSkpKCJjbGljayIsKGZ1bmN0aW9uIHQoKXtyZXR1cm4gZS5faGFuZGxlUGFnaW5hdG9yQ2xpY2soImFmdGVyIil9KSkoInRvdWNoZW5kIiwoZnVuY3Rpb24gdCgpe3JldHVybiBlLl9zdG9wSW50ZXJ2YWwoKX0pKSx0cCgxMiwiZGl2IiwyKSwkZygpKSwyJm4mJihEcCgibWF0LXRhYi1oZWFkZXItcGFnaW5hdGlvbi1kaXNhYmxlZCIsZS5fZGlzYWJsZVNjcm9sbEJlZm9yZSksSmcoIm1hdFJpcHBsZURpc2FibGVkIixlLl9kaXNhYmxlU2Nyb2xsQmVmb3JlfHxlLmRpc2FibGVSaXBwbGUpLHdzKDUpLERwKCJfbWF0LWFuaW1hdGlvbi1ub29wYWJsZSIsIk5vb3BBbmltYXRpb25zIj09PWUuX2FuaW1hdGlvbk1vZGUpLHdzKDUpLERwKCJtYXQtdGFiLWhlYWRlci1wYWdpbmF0aW9uLWRpc2FibGVkIixlLl9kaXNhYmxlU2Nyb2xsQWZ0ZXIpLEpnKCJtYXRSaXBwbGVEaXNhYmxlZCIsZS5fZGlzYWJsZVNjcm9sbEFmdGVyfHxlLmRpc2FibGVSaXBwbGUpKX0sZGlyZWN0aXZlczpbekUsJHcsaU5dLHN0eWxlczpbJy5tYXQtdGFiLWhlYWRlcntkaXNwbGF5OmZsZXg7b3ZlcmZsb3c6aGlkZGVuO3Bvc2l0aW9uOnJlbGF0aXZlO2ZsZXgtc2hyaW5rOjB9Lm1hdC10YWItaGVhZGVyLXBhZ2luYXRpb257LXdlYmtpdC11c2VyLXNlbGVjdDpub25lOy1tb3otdXNlci1zZWxlY3Q6bm9uZTstbXMtdXNlci1zZWxlY3Q6bm9uZTt1c2VyLXNlbGVjdDpub25lO3Bvc2l0aW9uOnJlbGF0aXZlO2Rpc3BsYXk6bm9uZTtqdXN0aWZ5LWNvbnRlbnQ6Y2VudGVyO2FsaWduLWl0ZW1zOmNlbnRlcjttaW4td2lkdGg6MzJweDtjdXJzb3I6cG9pbnRlcjt6LWluZGV4OjI7LXdlYmtpdC10YXAtaGlnaGxpZ2h0LWNvbG9yOnRyYW5zcGFyZW50O3RvdWNoLWFjdGlvbjpub25lfS5tYXQtdGFiLWhlYWRlci1wYWdpbmF0aW9uLWNvbnRyb2xzLWVuYWJsZWQgLm1hdC10YWItaGVhZGVyLXBhZ2luYXRpb257ZGlzcGxheTpmbGV4fS5tYXQtdGFiLWhlYWRlci1wYWdpbmF0aW9uLWJlZm9yZSwubWF0LXRhYi1oZWFkZXItcnRsIC5tYXQtdGFiLWhlYWRlci1wYWdpbmF0aW9uLWFmdGVye3BhZGRpbmctbGVmdDo0cHh9Lm1hdC10YWItaGVhZGVyLXBhZ2luYXRpb24tYmVmb3JlIC5tYXQtdGFiLWhlYWRlci1wYWdpbmF0aW9uLWNoZXZyb24sLm1hdC10YWItaGVhZGVyLXJ0bCAubWF0LXRhYi1oZWFkZXItcGFnaW5hdGlvbi1hZnRlciAubWF0LXRhYi1oZWFkZXItcGFnaW5hdGlvbi1jaGV2cm9ue3RyYW5zZm9ybTpyb3RhdGUoLTEzNWRlZyl9Lm1hdC10YWItaGVhZGVyLXJ0bCAubWF0LXRhYi1oZWFkZXItcGFnaW5hdGlvbi1iZWZvcmUsLm1hdC10YWItaGVhZGVyLXBhZ2luYXRpb24tYWZ0ZXJ7cGFkZGluZy1yaWdodDo0cHh9Lm1hdC10YWItaGVhZGVyLXJ0bCAubWF0LXRhYi1oZWFkZXItcGFnaW5hdGlvbi1iZWZvcmUgLm1hdC10YWItaGVhZGVyLXBhZ2luYXRpb24tY2hldnJvbiwubWF0LXRhYi1oZWFkZXItcGFnaW5hdGlvbi1hZnRlciAubWF0LXRhYi1oZWFkZXItcGFnaW5hdGlvbi1jaGV2cm9ue3RyYW5zZm9ybTpyb3RhdGUoNDVkZWcpfS5tYXQtdGFiLWhlYWRlci1wYWdpbmF0aW9uLWNoZXZyb257Ym9yZGVyLXN0eWxlOnNvbGlkO2JvcmRlci13aWR0aDoycHggMnB4IDAgMDtjb250ZW50OiIiO2hlaWdodDo4cHg7d2lkdGg6OHB4fS5tYXQtdGFiLWhlYWRlci1wYWdpbmF0aW9uLWRpc2FibGVke2JveC1zaGFkb3c6bm9uZTtjdXJzb3I6ZGVmYXVsdH0ubWF0LXRhYi1saXN0e2ZsZXgtZ3JvdzoxO3Bvc2l0aW9uOnJlbGF0aXZlO3RyYW5zaXRpb246dHJhbnNmb3JtIDUwMG1zIGN1YmljLWJlemllcigwLjM1LCAwLCAwLjI1LCAxKX0ubWF0LWluay1iYXJ7cG9zaXRpb246YWJzb2x1dGU7Ym90dG9tOjA7aGVpZ2h0OjJweDt0cmFuc2l0aW9uOjUwMG1zIGN1YmljLWJlemllcigwLjM1LCAwLCAwLjI1LCAxKX0uX21hdC1hbmltYXRpb24tbm9vcGFibGUubWF0LWluay1iYXJ7dHJhbnNpdGlvbjpub25lO2FuaW1hdGlvbjpub25lfS5tYXQtdGFiLWdyb3VwLWludmVydGVkLWhlYWRlciAubWF0LWluay1iYXJ7Ym90dG9tOmF1dG87dG9wOjB9LmNkay1oaWdoLWNvbnRyYXN0LWFjdGl2ZSAubWF0LWluay1iYXJ7b3V0bGluZTpzb2xpZCAycHg7aGVpZ2h0OjB9Lm1hdC10YWItbGFiZWxze2Rpc3BsYXk6ZmxleH1bbWF0LWFsaWduLXRhYnM9Y2VudGVyXT4ubWF0LXRhYi1oZWFkZXIgLm1hdC10YWItbGFiZWxze2p1c3RpZnktY29udGVudDpjZW50ZXJ9W21hdC1hbGlnbi10YWJzPWVuZF0+Lm1hdC10YWItaGVhZGVyIC5tYXQtdGFiLWxhYmVsc3tqdXN0aWZ5LWNvbnRlbnQ6ZmxleC1lbmR9Lm1hdC10YWItbGFiZWwtY29udGFpbmVye2Rpc3BsYXk6ZmxleDtmbGV4LWdyb3c6MTtvdmVyZmxvdzpoaWRkZW47ei1pbmRleDoxfS5fbWF0LWFuaW1hdGlvbi1ub29wYWJsZS5tYXQtdGFiLWxpc3R7dHJhbnNpdGlvbjpub25lO2FuaW1hdGlvbjpub25lfS5tYXQtdGFiLWxhYmVse2hlaWdodDo0OHB4O3BhZGRpbmc6MCAyNHB4O2N1cnNvcjpwb2ludGVyO2JveC1zaXppbmc6Ym9yZGVyLWJveDtvcGFjaXR5Oi42O21pbi13aWR0aDoxNjBweDt0ZXh0LWFsaWduOmNlbnRlcjtkaXNwbGF5OmlubGluZS1mbGV4O2p1c3RpZnktY29udGVudDpjZW50ZXI7YWxpZ24taXRlbXM6Y2VudGVyO3doaXRlLXNwYWNlOm5vd3JhcDtwb3NpdGlvbjpyZWxhdGl2ZX0ubWF0LXRhYi1sYWJlbDpmb2N1c3tvdXRsaW5lOm5vbmV9Lm1hdC10YWItbGFiZWw6Zm9jdXM6bm90KC5tYXQtdGFiLWRpc2FibGVkKXtvcGFjaXR5OjF9LmNkay1oaWdoLWNvbnRyYXN0LWFjdGl2ZSAubWF0LXRhYi1sYWJlbDpmb2N1c3tvdXRsaW5lOmRvdHRlZCAycHg7b3V0bGluZS1vZmZzZXQ6LTJweH0ubWF0LXRhYi1sYWJlbC5tYXQtdGFiLWRpc2FibGVke2N1cnNvcjpkZWZhdWx0fS5jZGstaGlnaC1jb250cmFzdC1hY3RpdmUgLm1hdC10YWItbGFiZWwubWF0LXRhYi1kaXNhYmxlZHtvcGFjaXR5Oi41fS5tYXQtdGFiLWxhYmVsIC5tYXQtdGFiLWxhYmVsLWNvbnRlbnR7ZGlzcGxheTppbmxpbmUtZmxleDtqdXN0aWZ5LWNvbnRlbnQ6Y2VudGVyO2FsaWduLWl0ZW1zOmNlbnRlcjt3aGl0ZS1zcGFjZTpub3dyYXB9LmNkay1oaWdoLWNvbnRyYXN0LWFjdGl2ZSAubWF0LXRhYi1sYWJlbHtvcGFjaXR5OjF9QG1lZGlhKG1heC13aWR0aDogNTk5cHgpey5tYXQtdGFiLWxhYmVse21pbi13aWR0aDo3MnB4fX1cbiddLGVuY2Fwc3VsYXRpb246Mn0pLEFOLmN0b3JQYXJhbWV0ZXJzPSgpPT5be3R5cGU6eHV9LHt0eXBlOlZtfSx7dHlwZTpNQX0se3R5cGU6VVMsZGVjb3JhdG9yczpbe3R5cGU6TmV9XX0se3R5cGU6Sl99LHt0eXBlOlN3fSx7dHlwZTpTdHJpbmcsZGVjb3JhdG9yczpbe3R5cGU6TmV9LHt0eXBlOkllLGFyZ3M6W2RrXX1dfV0sQU4ucHJvcERlY29yYXRvcnM9e19pdGVtczpbe3R5cGU6cWQsYXJnczpbdk4se2Rlc2NlbmRhbnRzOiExfV19XSxfaW5rQmFyOlt7dHlwZTpYZCxhcmdzOltpTix7c3RhdGljOiEwfV19XSxfdGFiTGlzdENvbnRhaW5lcjpbe3R5cGU6WGQsYXJnczpbInRhYkxpc3RDb250YWluZXIiLHtzdGF0aWM6ITB9XX1dLF90YWJMaXN0Olt7dHlwZTpYZCxhcmdzOlsidGFiTGlzdCIse3N0YXRpYzohMH1dfV0sX25leHRQYWdpbmF0b3I6W3t0eXBlOlhkLGFyZ3M6WyJuZXh0UGFnaW5hdG9yIl19XSxfcHJldmlvdXNQYWdpbmF0b3I6W3t0eXBlOlhkLGFyZ3M6WyJwcmV2aW91c1BhZ2luYXRvciJdfV19OwovKioKICAgICAqIEBsaWNlbnNlCiAgICAgKiBDb3B5cmlnaHQgR29vZ2xlIExMQyBBbGwgUmlnaHRzIFJlc2VydmVkLgogICAgICoKICAgICAqIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGFuIE1JVC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCiAgICAgKiBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlIGF0IGh0dHBzOi8vYW5ndWxhci5pby9saWNlbnNlCiAgICAgKi8KY2xhc3Mgek4gZXh0ZW5kcyBTTntjb25zdHJ1Y3Rvcih0LG4sZSxhLG8scixpKXtzdXBlcih0LGEsbyxuLGUscixpKSx0aGlzLl9kaXNhYmxlUmlwcGxlPSExLHRoaXMuY29sb3I9InByaW1hcnkifWdldCBiYWNrZ3JvdW5kQ29sb3IoKXtyZXR1cm4gdGhpcy5fYmFja2dyb3VuZENvbG9yfXNldCBiYWNrZ3JvdW5kQ29sb3IodCl7Y29uc3Qgbj10aGlzLl9lbGVtZW50UmVmLm5hdGl2ZUVsZW1lbnQuY2xhc3NMaXN0O24ucmVtb3ZlKGBtYXQtYmFja2dyb3VuZC0ke3RoaXMuYmFja2dyb3VuZENvbG9yfWApLHQmJm4uYWRkKGBtYXQtYmFja2dyb3VuZC0ke3R9YCksdGhpcy5fYmFja2dyb3VuZENvbG9yPXR9Z2V0IGRpc2FibGVSaXBwbGUoKXtyZXR1cm4gdGhpcy5fZGlzYWJsZVJpcHBsZX1zZXQgZGlzYWJsZVJpcHBsZSh0KXt0aGlzLl9kaXNhYmxlUmlwcGxlPUd3KHQpfV9pdGVtU2VsZWN0ZWQoKXt9bmdBZnRlckNvbnRlbnRJbml0KCl7dGhpcy5faXRlbXMuY2hhbmdlcy5waXBlKGNlKG51bGwpLGRlKHRoaXMuX2Rlc3Ryb3llZCkpLnN1YnNjcmliZSgoKCk9Pnt0aGlzLnVwZGF0ZUFjdGl2ZUxpbmsoKX0pKSxzdXBlci5uZ0FmdGVyQ29udGVudEluaXQoKX11cGRhdGVBY3RpdmVMaW5rKHQpe2lmKCF0aGlzLl9pdGVtcylyZXR1cm47Y29uc3Qgbj10aGlzLl9pdGVtcy50b0FycmF5KCk7Zm9yKGxldCB0PTA7dDxuLmxlbmd0aDt0KyspaWYoblt0XS5hY3RpdmUpcmV0dXJuIHRoaXMuc2VsZWN0ZWRJbmRleD10LHZvaWQgdGhpcy5fY2hhbmdlRGV0ZWN0b3JSZWYubWFya0ZvckNoZWNrKCk7dGhpcy5zZWxlY3RlZEluZGV4PS0xLHRoaXMuX2lua0Jhci5oaWRlKCl9fXpOLsm1ZmFjPWZ1bmN0aW9uIHQobil7cmV0dXJuIG5ldyhufHx6TikoWmcoeHUpLFpnKFVTLDgpLFpnKEpfKSxaZyhWbSksWmcoTUEpLFpnKFN3KSxaZyhkayw4KSl9LHpOLsm1ZGlyPXZvKHt0eXBlOnpOLGlucHV0czp7Y29sb3I6ImNvbG9yIixiYWNrZ3JvdW5kQ29sb3I6ImJhY2tncm91bmRDb2xvciIsZGlzYWJsZVJpcHBsZToiZGlzYWJsZVJpcHBsZSJ9LGZlYXR1cmVzOltoZ119KSx6Ti5jdG9yUGFyYW1ldGVycz0oKT0+W3t0eXBlOnh1fSx7dHlwZTpVUyxkZWNvcmF0b3JzOlt7dHlwZTpOZX1dfSx7dHlwZTpKX30se3R5cGU6Vm19LHt0eXBlOk1BfSx7dHlwZTpTd30se3R5cGU6U3RyaW5nLGRlY29yYXRvcnM6W3t0eXBlOk5lfSx7dHlwZTpJZSxhcmdzOltka119XX1dLHpOLnByb3BEZWNvcmF0b3JzPXtiYWNrZ3JvdW5kQ29sb3I6W3t0eXBlOmZffV0sZGlzYWJsZVJpcHBsZTpbe3R5cGU6Zl99XSxjb2xvcjpbe3R5cGU6Zl99XX07Y2xhc3MgUk4gZXh0ZW5kcyB6Tntjb25zdHJ1Y3Rvcih0LG4sZSxhLG8scixpKXtzdXBlcih0LG4sZSxhLG8scixpKX19Uk4uybVmYWM9ZnVuY3Rpb24gdChuKXtyZXR1cm4gbmV3KG58fFJOKShaZyh4dSksWmcoVVMsOCksWmcoSl8pLFpnKFZtKSxaZyhNQSksWmcoU3cpLFpnKGRrLDgpKX0sUk4uybVjbXA9X28oe3R5cGU6Uk4sc2VsZWN0b3JzOltbIiIsIm1hdC10YWItbmF2LWJhciIsIiJdXSxjb250ZW50UXVlcmllczpmdW5jdGlvbiB0KG4sZSxhKXt2YXIgbzsxJm4mJkdmKGEsSU4sITApLDImbiYmVmYobz1aZigpKSYmKGUuX2l0ZW1zPW8pfSx2aWV3UXVlcnk6ZnVuY3Rpb24gdChuLGUpe3ZhciBhOzEmbiYmKGpmKGlOLCEwKSxqZih0TiwhMCksamYobk4sITApLFVmKGVOLCEwKSxVZihhTiwhMCkpLDImbiYmKFZmKGE9WmYoKSkmJihlLl9pbmtCYXI9YS5maXJzdCksVmYoYT1aZigpKSYmKGUuX3RhYkxpc3RDb250YWluZXI9YS5maXJzdCksVmYoYT1aZigpKSYmKGUuX3RhYkxpc3Q9YS5maXJzdCksVmYoYT1aZigpKSYmKGUuX25leHRQYWdpbmF0b3I9YS5maXJzdCksVmYoYT1aZigpKSYmKGUuX3ByZXZpb3VzUGFnaW5hdG9yPWEuZmlyc3QpKX0saG9zdEF0dHJzOlsxLCJtYXQtdGFiLW5hdi1iYXIiLCJtYXQtdGFiLWhlYWRlciJdLGhvc3RWYXJzOjEwLGhvc3RCaW5kaW5nczpmdW5jdGlvbiB0KG4sZSl7MiZuJiZEcCgibWF0LXRhYi1oZWFkZXItcGFnaW5hdGlvbi1jb250cm9scy1lbmFibGVkIixlLl9zaG93UGFnaW5hdGlvbkNvbnRyb2xzKSgibWF0LXRhYi1oZWFkZXItcnRsIiwicnRsIj09ZS5fZ2V0TGF5b3V0RGlyZWN0aW9uKCkpKCJtYXQtcHJpbWFyeSIsIndhcm4iIT09ZS5jb2xvciYmImFjY2VudCIhPT1lLmNvbG9yKSgibWF0LWFjY2VudCIsImFjY2VudCI9PT1lLmNvbG9yKSgibWF0LXdhcm4iLCJ3YXJuIj09PWUuY29sb3IpfSxpbnB1dHM6e2NvbG9yOiJjb2xvciJ9LGV4cG9ydEFzOlsibWF0VGFiTmF2QmFyIiwibWF0VGFiTmF2Il0sZmVhdHVyZXM6W2hnXSxhdHRyczpbIm1hdC10YWItbmF2LWJhciIsIiJdLG5nQ29udGVudFNlbGVjdG9yczpVSSxkZWNsczoxMyx2YXJzOjgsY29uc3RzOltbImFyaWEtaGlkZGVuIiwidHJ1ZSIsIm1hdC1yaXBwbGUiLCIiLDEsIm1hdC10YWItaGVhZGVyLXBhZ2luYXRpb24iLCJtYXQtdGFiLWhlYWRlci1wYWdpbmF0aW9uLWJlZm9yZSIsIm1hdC1lbGV2YXRpb24tejQiLDMsIm1hdFJpcHBsZURpc2FibGVkIiwiY2xpY2siLCJtb3VzZWRvd24iLCJ0b3VjaGVuZCJdLFsicHJldmlvdXNQYWdpbmF0b3IiLCIiXSxbMSwibWF0LXRhYi1oZWFkZXItcGFnaW5hdGlvbi1jaGV2cm9uIl0sWzEsIm1hdC10YWItbGluay1jb250YWluZXIiLDMsImtleWRvd24iXSxbInRhYkxpc3RDb250YWluZXIiLCIiXSxbMSwibWF0LXRhYi1saXN0IiwzLCJjZGtPYnNlcnZlQ29udGVudCJdLFsidGFiTGlzdCIsIiJdLFsxLCJtYXQtdGFiLWxpbmtzIl0sWyJhcmlhLWhpZGRlbiIsInRydWUiLCJtYXQtcmlwcGxlIiwiIiwxLCJtYXQtdGFiLWhlYWRlci1wYWdpbmF0aW9uIiwibWF0LXRhYi1oZWFkZXItcGFnaW5hdGlvbi1hZnRlciIsIm1hdC1lbGV2YXRpb24tejQiLDMsIm1hdFJpcHBsZURpc2FibGVkIiwibW91c2Vkb3duIiwiY2xpY2siLCJ0b3VjaGVuZCJdLFsibmV4dFBhZ2luYXRvciIsIiJdXSx0ZW1wbGF0ZTpmdW5jdGlvbiB0KG4sZSl7MSZuJiYoYnAoKSxLZygwLCJkaXYiLDAsMSksY3AoImNsaWNrIiwoZnVuY3Rpb24gdCgpe3JldHVybiBlLl9oYW5kbGVQYWdpbmF0b3JDbGljaygiYmVmb3JlIil9KSkoIm1vdXNlZG93biIsKGZ1bmN0aW9uIHQobil7cmV0dXJuIGUuX2hhbmRsZVBhZ2luYXRvclByZXNzKCJiZWZvcmUiLG4pfSkpKCJ0b3VjaGVuZCIsKGZ1bmN0aW9uIHQoKXtyZXR1cm4gZS5fc3RvcEludGVydmFsKCl9KSksdHAoMiwiZGl2IiwyKSwkZygpLEtnKDMsImRpdiIsMyw0KSxjcCgia2V5ZG93biIsKGZ1bmN0aW9uIHQobil7cmV0dXJuIGUuX2hhbmRsZUtleWRvd24obil9KSksS2coNSwiZGl2Iiw1LDYpLGNwKCJjZGtPYnNlcnZlQ29udGVudCIsKGZ1bmN0aW9uIHQoKXtyZXR1cm4gZS5fb25Db250ZW50Q2hhbmdlcygpfSkpLEtnKDcsImRpdiIsNyksaHAoOCksJGcoKSx0cCg5LCJtYXQtaW5rLWJhciIpLCRnKCksJGcoKSxLZygxMCwiZGl2Iiw4LDkpLGNwKCJtb3VzZWRvd24iLChmdW5jdGlvbiB0KG4pe3JldHVybiBlLl9oYW5kbGVQYWdpbmF0b3JQcmVzcygiYWZ0ZXIiLG4pfSkpKCJjbGljayIsKGZ1bmN0aW9uIHQoKXtyZXR1cm4gZS5faGFuZGxlUGFnaW5hdG9yQ2xpY2soImFmdGVyIil9KSkoInRvdWNoZW5kIiwoZnVuY3Rpb24gdCgpe3JldHVybiBlLl9zdG9wSW50ZXJ2YWwoKX0pKSx0cCgxMiwiZGl2IiwyKSwkZygpKSwyJm4mJihEcCgibWF0LXRhYi1oZWFkZXItcGFnaW5hdGlvbi1kaXNhYmxlZCIsZS5fZGlzYWJsZVNjcm9sbEJlZm9yZSksSmcoIm1hdFJpcHBsZURpc2FibGVkIixlLl9kaXNhYmxlU2Nyb2xsQmVmb3JlfHxlLmRpc2FibGVSaXBwbGUpLHdzKDUpLERwKCJfbWF0LWFuaW1hdGlvbi1ub29wYWJsZSIsIk5vb3BBbmltYXRpb25zIj09PWUuX2FuaW1hdGlvbk1vZGUpLHdzKDUpLERwKCJtYXQtdGFiLWhlYWRlci1wYWdpbmF0aW9uLWRpc2FibGVkIixlLl9kaXNhYmxlU2Nyb2xsQWZ0ZXIpLEpnKCJtYXRSaXBwbGVEaXNhYmxlZCIsZS5fZGlzYWJsZVNjcm9sbEFmdGVyfHxlLmRpc2FibGVSaXBwbGUpKX0sZGlyZWN0aXZlczpbekUsJHcsaU5dLHN0eWxlczpbJy5tYXQtdGFiLWhlYWRlcntkaXNwbGF5OmZsZXg7b3ZlcmZsb3c6aGlkZGVuO3Bvc2l0aW9uOnJlbGF0aXZlO2ZsZXgtc2hyaW5rOjB9Lm1hdC10YWItaGVhZGVyLXBhZ2luYXRpb257LXdlYmtpdC11c2VyLXNlbGVjdDpub25lOy1tb3otdXNlci1zZWxlY3Q6bm9uZTstbXMtdXNlci1zZWxlY3Q6bm9uZTt1c2VyLXNlbGVjdDpub25lO3Bvc2l0aW9uOnJlbGF0aXZlO2Rpc3BsYXk6bm9uZTtqdXN0aWZ5LWNvbnRlbnQ6Y2VudGVyO2FsaWduLWl0ZW1zOmNlbnRlcjttaW4td2lkdGg6MzJweDtjdXJzb3I6cG9pbnRlcjt6LWluZGV4OjI7LXdlYmtpdC10YXAtaGlnaGxpZ2h0LWNvbG9yOnRyYW5zcGFyZW50O3RvdWNoLWFjdGlvbjpub25lfS5tYXQtdGFiLWhlYWRlci1wYWdpbmF0aW9uLWNvbnRyb2xzLWVuYWJsZWQgLm1hdC10YWItaGVhZGVyLXBhZ2luYXRpb257ZGlzcGxheTpmbGV4fS5tYXQtdGFiLWhlYWRlci1wYWdpbmF0aW9uLWJlZm9yZSwubWF0LXRhYi1oZWFkZXItcnRsIC5tYXQtdGFiLWhlYWRlci1wYWdpbmF0aW9uLWFmdGVye3BhZGRpbmctbGVmdDo0cHh9Lm1hdC10YWItaGVhZGVyLXBhZ2luYXRpb24tYmVmb3JlIC5tYXQtdGFiLWhlYWRlci1wYWdpbmF0aW9uLWNoZXZyb24sLm1hdC10YWItaGVhZGVyLXJ0bCAubWF0LXRhYi1oZWFkZXItcGFnaW5hdGlvbi1hZnRlciAubWF0LXRhYi1oZWFkZXItcGFnaW5hdGlvbi1jaGV2cm9ue3RyYW5zZm9ybTpyb3RhdGUoLTEzNWRlZyl9Lm1hdC10YWItaGVhZGVyLXJ0bCAubWF0LXRhYi1oZWFkZXItcGFnaW5hdGlvbi1iZWZvcmUsLm1hdC10YWItaGVhZGVyLXBhZ2luYXRpb24tYWZ0ZXJ7cGFkZGluZy1yaWdodDo0cHh9Lm1hdC10YWItaGVhZGVyLXJ0bCAubWF0LXRhYi1oZWFkZXItcGFnaW5hdGlvbi1iZWZvcmUgLm1hdC10YWItaGVhZGVyLXBhZ2luYXRpb24tY2hldnJvbiwubWF0LXRhYi1oZWFkZXItcGFnaW5hdGlvbi1hZnRlciAubWF0LXRhYi1oZWFkZXItcGFnaW5hdGlvbi1jaGV2cm9ue3RyYW5zZm9ybTpyb3RhdGUoNDVkZWcpfS5tYXQtdGFiLWhlYWRlci1wYWdpbmF0aW9uLWNoZXZyb257Ym9yZGVyLXN0eWxlOnNvbGlkO2JvcmRlci13aWR0aDoycHggMnB4IDAgMDtjb250ZW50OiIiO2hlaWdodDo4cHg7d2lkdGg6OHB4fS5tYXQtdGFiLWhlYWRlci1wYWdpbmF0aW9uLWRpc2FibGVke2JveC1zaGFkb3c6bm9uZTtjdXJzb3I6ZGVmYXVsdH0ubWF0LXRhYi1saXN0e2ZsZXgtZ3JvdzoxO3Bvc2l0aW9uOnJlbGF0aXZlO3RyYW5zaXRpb246dHJhbnNmb3JtIDUwMG1zIGN1YmljLWJlemllcigwLjM1LCAwLCAwLjI1LCAxKX0ubWF0LXRhYi1saW5rc3tkaXNwbGF5OmZsZXh9W21hdC1hbGlnbi10YWJzPWNlbnRlcl0+Lm1hdC10YWItbGluay1jb250YWluZXIgLm1hdC10YWItbGlua3N7anVzdGlmeS1jb250ZW50OmNlbnRlcn1bbWF0LWFsaWduLXRhYnM9ZW5kXT4ubWF0LXRhYi1saW5rLWNvbnRhaW5lciAubWF0LXRhYi1saW5rc3tqdXN0aWZ5LWNvbnRlbnQ6ZmxleC1lbmR9Lm1hdC1pbmstYmFye3Bvc2l0aW9uOmFic29sdXRlO2JvdHRvbTowO2hlaWdodDoycHg7dHJhbnNpdGlvbjo1MDBtcyBjdWJpYy1iZXppZXIoMC4zNSwgMCwgMC4yNSwgMSl9Ll9tYXQtYW5pbWF0aW9uLW5vb3BhYmxlLm1hdC1pbmstYmFye3RyYW5zaXRpb246bm9uZTthbmltYXRpb246bm9uZX0ubWF0LXRhYi1ncm91cC1pbnZlcnRlZC1oZWFkZXIgLm1hdC1pbmstYmFye2JvdHRvbTphdXRvO3RvcDowfS5jZGstaGlnaC1jb250cmFzdC1hY3RpdmUgLm1hdC1pbmstYmFye291dGxpbmU6c29saWQgMnB4O2hlaWdodDowfS5tYXQtdGFiLWxpbmstY29udGFpbmVye2Rpc3BsYXk6ZmxleDtmbGV4LWdyb3c6MTtvdmVyZmxvdzpoaWRkZW47ei1pbmRleDoxfS5tYXQtdGFiLWxpbmt7aGVpZ2h0OjQ4cHg7cGFkZGluZzowIDI0cHg7Y3Vyc29yOnBvaW50ZXI7Ym94LXNpemluZzpib3JkZXItYm94O29wYWNpdHk6LjY7bWluLXdpZHRoOjE2MHB4O3RleHQtYWxpZ246Y2VudGVyO2Rpc3BsYXk6aW5saW5lLWZsZXg7anVzdGlmeS1jb250ZW50OmNlbnRlcjthbGlnbi1pdGVtczpjZW50ZXI7d2hpdGUtc3BhY2U6bm93cmFwO3ZlcnRpY2FsLWFsaWduOnRvcDt0ZXh0LWRlY29yYXRpb246bm9uZTtwb3NpdGlvbjpyZWxhdGl2ZTtvdmVyZmxvdzpoaWRkZW47LXdlYmtpdC10YXAtaGlnaGxpZ2h0LWNvbG9yOnRyYW5zcGFyZW50fS5tYXQtdGFiLWxpbms6Zm9jdXN7b3V0bGluZTpub25lfS5tYXQtdGFiLWxpbms6Zm9jdXM6bm90KC5tYXQtdGFiLWRpc2FibGVkKXtvcGFjaXR5OjF9LmNkay1oaWdoLWNvbnRyYXN0LWFjdGl2ZSAubWF0LXRhYi1saW5rOmZvY3Vze291dGxpbmU6ZG90dGVkIDJweDtvdXRsaW5lLW9mZnNldDotMnB4fS5tYXQtdGFiLWxpbmsubWF0LXRhYi1kaXNhYmxlZHtjdXJzb3I6ZGVmYXVsdH0uY2RrLWhpZ2gtY29udHJhc3QtYWN0aXZlIC5tYXQtdGFiLWxpbmsubWF0LXRhYi1kaXNhYmxlZHtvcGFjaXR5Oi41fS5tYXQtdGFiLWxpbmsgLm1hdC10YWItbGFiZWwtY29udGVudHtkaXNwbGF5OmlubGluZS1mbGV4O2p1c3RpZnktY29udGVudDpjZW50ZXI7YWxpZ24taXRlbXM6Y2VudGVyO3doaXRlLXNwYWNlOm5vd3JhcH0uY2RrLWhpZ2gtY29udHJhc3QtYWN0aXZlIC5tYXQtdGFiLWxpbmt7b3BhY2l0eToxfVttYXQtc3RyZXRjaC10YWJzXSAubWF0LXRhYi1saW5re2ZsZXgtYmFzaXM6MDtmbGV4LWdyb3c6MX0ubWF0LXRhYi1saW5rLm1hdC10YWItZGlzYWJsZWR7cG9pbnRlci1ldmVudHM6bm9uZX1AbWVkaWEobWF4LXdpZHRoOiA1OTlweCl7Lm1hdC10YWItbGlua3ttaW4td2lkdGg6NzJweH19XG4nXSxlbmNhcHN1bGF0aW9uOjJ9KSxSTi5jdG9yUGFyYW1ldGVycz0oKT0+W3t0eXBlOnh1fSx7dHlwZTpVUyxkZWNvcmF0b3JzOlt7dHlwZTpOZX1dfSx7dHlwZTpKX30se3R5cGU6Vm19LHt0eXBlOk1BfSx7dHlwZTpTd30se3R5cGU6U3RyaW5nLGRlY29yYXRvcnM6W3t0eXBlOk5lfSx7dHlwZTpJZSxhcmdzOltka119XX1dLFJOLnByb3BEZWNvcmF0b3JzPXtfaXRlbXM6W3t0eXBlOnFkLGFyZ3M6W2FhKCgoKT0+SU4pKSx7ZGVzY2VuZGFudHM6ITB9XX1dLF9pbmtCYXI6W3t0eXBlOlhkLGFyZ3M6W2lOLHtzdGF0aWM6ITB9XX1dLF90YWJMaXN0Q29udGFpbmVyOlt7dHlwZTpYZCxhcmdzOlsidGFiTGlzdENvbnRhaW5lciIse3N0YXRpYzohMH1dfV0sX3RhYkxpc3Q6W3t0eXBlOlhkLGFyZ3M6WyJ0YWJMaXN0Iix7c3RhdGljOiEwfV19XSxfbmV4dFBhZ2luYXRvcjpbe3R5cGU6WGQsYXJnczpbIm5leHRQYWdpbmF0b3IiXX1dLF9wcmV2aW91c1BhZ2luYXRvcjpbe3R5cGU6WGQsYXJnczpbInByZXZpb3VzUGFnaW5hdG9yIl19XX07Y29uc3QgVE49b0UoYUUobkUoY2xhc3N7fSkpKTtjbGFzcyBETiBleHRlbmRzIFROe2NvbnN0cnVjdG9yKHQsbixlLGEsbyxyKXtzdXBlcigpLHRoaXMuX3RhYk5hdkJhcj10LHRoaXMuZWxlbWVudFJlZj1uLHRoaXMuX2ZvY3VzTW9uaXRvcj1vLHRoaXMuX2lzQWN0aXZlPSExLHRoaXMucmlwcGxlQ29uZmlnPWV8fHt9LHRoaXMudGFiSW5kZXg9cGFyc2VJbnQoYSl8fDAsIk5vb3BBbmltYXRpb25zIj09PXImJih0aGlzLnJpcHBsZUNvbmZpZy5hbmltYXRpb249e2VudGVyRHVyYXRpb246MCxleGl0RHVyYXRpb246MH0pfWdldCBhY3RpdmUoKXtyZXR1cm4gdGhpcy5faXNBY3RpdmV9c2V0IGFjdGl2ZSh0KXtHdyh0KSE9PXRoaXMuX2lzQWN0aXZlJiYodGhpcy5faXNBY3RpdmU9dCx0aGlzLl90YWJOYXZCYXIudXBkYXRlQWN0aXZlTGluayh0aGlzLmVsZW1lbnRSZWYpKX1nZXQgcmlwcGxlRGlzYWJsZWQoKXtyZXR1cm4gdGhpcy5kaXNhYmxlZHx8dGhpcy5kaXNhYmxlUmlwcGxlfHx0aGlzLl90YWJOYXZCYXIuZGlzYWJsZVJpcHBsZXx8ISF0aGlzLnJpcHBsZUNvbmZpZy5kaXNhYmxlZH1mb2N1cygpe3RoaXMuZWxlbWVudFJlZi5uYXRpdmVFbGVtZW50LmZvY3VzKCl9bmdBZnRlclZpZXdJbml0KCl7dGhpcy5fZm9jdXNNb25pdG9yLm1vbml0b3IodGhpcy5lbGVtZW50UmVmKX1uZ09uRGVzdHJveSgpe3RoaXMuX2ZvY3VzTW9uaXRvci5zdG9wTW9uaXRvcmluZyh0aGlzLmVsZW1lbnRSZWYpfX1ETi7JtWZhYz1mdW5jdGlvbiB0KG4pe3JldHVybiBuZXcobnx8RE4pKFpnKHpOKSxaZyh4dSksWmcoQUUsOCksWGcoInRhYmluZGV4IiksWmcoVFMpLFpnKGRrLDgpKX0sRE4uybVkaXI9dm8oe3R5cGU6RE4saW5wdXRzOnthY3RpdmU6ImFjdGl2ZSJ9LGZlYXR1cmVzOltoZ119KSxETi5jdG9yUGFyYW1ldGVycz0oKT0+W3t0eXBlOnpOfSx7dHlwZTp4dX0se3R5cGU6dm9pZCAwLGRlY29yYXRvcnM6W3t0eXBlOk5lfSx7dHlwZTpJZSxhcmdzOltBRV19XX0se3R5cGU6U3RyaW5nLGRlY29yYXRvcnM6W3t0eXBlOkJlLGFyZ3M6WyJ0YWJpbmRleCJdfV19LHt0eXBlOlRTfSx7dHlwZTpTdHJpbmcsZGVjb3JhdG9yczpbe3R5cGU6TmV9LHt0eXBlOkllLGFyZ3M6W2RrXX1dfV0sRE4ucHJvcERlY29yYXRvcnM9e2FjdGl2ZTpbe3R5cGU6Zl99XX07Y2xhc3MgSU4gZXh0ZW5kcyBETntjb25zdHJ1Y3Rvcih0LG4sZSxhLG8scixpLGMpe3N1cGVyKHQsbixvLHIsaSxjKSx0aGlzLl90YWJMaW5rUmlwcGxlPW5ldyBFRSh0aGlzLGUsbixhKSx0aGlzLl90YWJMaW5rUmlwcGxlLnNldHVwVHJpZ2dlckV2ZW50cyhuLm5hdGl2ZUVsZW1lbnQpfW5nT25EZXN0cm95KCl7c3VwZXIubmdPbkRlc3Ryb3koKSx0aGlzLl90YWJMaW5rUmlwcGxlLl9yZW1vdmVUcmlnZ2VyRXZlbnRzKCl9fUlOLsm1ZmFjPWZ1bmN0aW9uIHQobil7cmV0dXJuIG5ldyhufHxJTikoWmcoUk4pLFpnKHh1KSxaZyhKXyksWmcoU3cpLFpnKEFFLDgpLFhnKCJ0YWJpbmRleCIpLFpnKFRTKSxaZyhkayw4KSl9LElOLsm1ZGlyPXZvKHt0eXBlOklOLHNlbGVjdG9yczpbWyIiLCJtYXQtdGFiLWxpbmsiLCIiXSxbIiIsIm1hdFRhYkxpbmsiLCIiXV0saG9zdEF0dHJzOlsxLCJtYXQtdGFiLWxpbmsiLCJtYXQtZm9jdXMtaW5kaWNhdG9yIl0saG9zdFZhcnM6Nyxob3N0QmluZGluZ3M6ZnVuY3Rpb24gdChuLGUpezImbiYmKE5nKCJhcmlhLWN1cnJlbnQiLGUuYWN0aXZlPyJwYWdlIjpudWxsKSgiYXJpYS1kaXNhYmxlZCIsZS5kaXNhYmxlZCkoInRhYkluZGV4IixlLnRhYkluZGV4KSxEcCgibWF0LXRhYi1kaXNhYmxlZCIsZS5kaXNhYmxlZCkoIm1hdC10YWItbGFiZWwtYWN0aXZlIixlLmFjdGl2ZSkpfSxpbnB1dHM6e2Rpc2FibGVkOiJkaXNhYmxlZCIsZGlzYWJsZVJpcHBsZToiZGlzYWJsZVJpcHBsZSIsdGFiSW5kZXg6InRhYkluZGV4In0sZXhwb3J0QXM6WyJtYXRUYWJMaW5rIl0sZmVhdHVyZXM6W2hnXX0pLElOLmN0b3JQYXJhbWV0ZXJzPSgpPT5be3R5cGU6Uk59LHt0eXBlOnh1fSx7dHlwZTpKX30se3R5cGU6U3d9LHt0eXBlOnZvaWQgMCxkZWNvcmF0b3JzOlt7dHlwZTpOZX0se3R5cGU6SWUsYXJnczpbQUVdfV19LHt0eXBlOlN0cmluZyxkZWNvcmF0b3JzOlt7dHlwZTpCZSxhcmdzOlsidGFiaW5kZXgiXX1dfSx7dHlwZTpUU30se3R5cGU6U3RyaW5nLGRlY29yYXRvcnM6W3t0eXBlOk5lfSx7dHlwZTpJZSxhcmdzOltka119XX1dCi8qKgogICAgICogQGxpY2Vuc2UKICAgICAqIENvcHlyaWdodCBHb29nbGUgTExDIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCiAgICAgKgogICAgICogVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYW4gTUlULXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKICAgICAqIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUgYXQgaHR0cHM6Ly9hbmd1bGFyLmlvL2xpY2Vuc2UKICAgICAqLztjbGFzcyBOTnt9Tk4uybVtb2Q9eG8oe3R5cGU6Tk59KSxOTi7JtWluaj1HZSh7ZmFjdG9yeTpmdW5jdGlvbiB0KG4pe3JldHVybiBuZXcobnx8Tk4pfSxpbXBvcnRzOltbUE8sdEUsQkEsUkUsdFMsQlNdLHRFXX0pLCgidW5kZWZpbmVkIj09dHlwZW9mIG5nSml0TW9kZXx8bmdKaXRNb2RlKSYmeW8oTk4se2RlY2xhcmF0aW9uczpmdW5jdGlvbigpe3JldHVyblt5TixtTixiTixpTix2TixSTixJTixfTixmTixBTixzTl19LGltcG9ydHM6ZnVuY3Rpb24oKXtyZXR1cm5bUE8sdEUsQkEsUkUsdFMsQlNdfSxleHBvcnRzOmZ1bmN0aW9uKCl7cmV0dXJuW3RFLHlOLG1OLGJOLFJOLElOLHNOXX19KTtjb25zdCBGTj1bInVuZGVybGluZSJdLExOPVsiY29ubmVjdGlvbkNvbnRhaW5lciJdLEhOPVsiaW5wdXRDb250YWluZXIiXSxCTj1bImxhYmVsIl07ZnVuY3Rpb24gVk4odCxuKXsxJnQmJihucCgwKSxLZygxLCJkaXYiLDE0KSx0cCgyLCJkaXYiLDE1KSx0cCgzLCJkaXYiLDE2KSx0cCg0LCJkaXYiLDE3KSwkZygpLEtnKDUsImRpdiIsMTgpLHRwKDYsImRpdiIsMTUpLHRwKDcsImRpdiIsMTYpLHRwKDgsImRpdiIsMTcpLCRnKCksZXAoKSl9ZnVuY3Rpb24gak4odCxuKXsxJnQmJihLZygwLCJkaXYiLDE5KSxocCgxLDEpLCRnKCkpfWZ1bmN0aW9uIFVOKHQsbil7aWYoMSZ0JiYobnAoMCksaHAoMSwyKSxLZygyLCJzcGFuIiksSnAoMyksJGcoKSxlcCgpKSwyJnQpe2NvbnN0IHQ9Z3AoMik7d3MoMyksUXAodC5fY29udHJvbC5wbGFjZWhvbGRlcil9fWZ1bmN0aW9uIFdOKHQsbil7MSZ0JiZocCgwLDMsWyIqbmdTd2l0Y2hDYXNlIiwidHJ1ZSJdKX1mdW5jdGlvbiBHTih0LG4pezEmdCYmKEtnKDAsInNwYW4iLDIzKSxKcCgxLCIgKiIpLCRnKCkpfWZ1bmN0aW9uIFlOKHQsbil7aWYoMSZ0KXtjb25zdCB0PW9wKCk7S2coMCwibGFiZWwiLDIwLDIxKSxjcCgiY2RrT2JzZXJ2ZUNvbnRlbnQiLChmdW5jdGlvbiBuKCl7cmV0dXJuIGpyKHQpLGdwKCkudXBkYXRlT3V0bGluZUdhcCgpfSkpLFlnKDIsVU4sNCwxLCJuZy1jb250YWluZXIiLDEyKSxZZygzLFdOLDEsMCwibmctY29udGVudCIsMTIpLFlnKDQsR04sMiwwLCJzcGFuIiwyMiksJGcoKX1pZigyJnQpe2NvbnN0IHQ9Z3AoKTtEcCgibWF0LWVtcHR5Iix0Ll9jb250cm9sLmVtcHR5JiYhdC5fc2hvdWxkQWx3YXlzRmxvYXQoKSkoIm1hdC1mb3JtLWZpZWxkLWVtcHR5Iix0Ll9jb250cm9sLmVtcHR5JiYhdC5fc2hvdWxkQWx3YXlzRmxvYXQoKSkoIm1hdC1hY2NlbnQiLCJhY2NlbnQiPT10LmNvbG9yKSgibWF0LXdhcm4iLCJ3YXJuIj09dC5jb2xvciksSmcoImNka09ic2VydmVDb250ZW50RGlzYWJsZWQiLCJvdXRsaW5lIiE9dC5hcHBlYXJhbmNlKSgiaWQiLHQuX2xhYmVsSWQpKCJuZ1N3aXRjaCIsdC5faGFzTGFiZWwoKSksTmcoImZvciIsdC5fY29udHJvbC5pZCkoImFyaWEtb3ducyIsdC5fY29udHJvbC5pZCksd3MoMiksSmcoIm5nU3dpdGNoQ2FzZSIsITEpLHdzKDEpLEpnKCJuZ1N3aXRjaENhc2UiLCEwKSx3cygxKSxKZygibmdJZiIsIXQuaGlkZVJlcXVpcmVkTWFya2VyJiZ0Ll9jb250cm9sLnJlcXVpcmVkJiYhdC5fY29udHJvbC5kaXNhYmxlZCl9fWZ1bmN0aW9uIHFOKHQsbil7MSZ0JiYoS2coMCwiZGl2IiwyNCksaHAoMSw0KSwkZygpKX1mdW5jdGlvbiBaTih0LG4pe2lmKDEmdCYmKEtnKDAsImRpdiIsMjUsMjYpLHRwKDIsInNwYW4iLDI3KSwkZygpKSwyJnQpe2NvbnN0IHQ9Z3AoKTt3cygyKSxEcCgibWF0LWFjY2VudCIsImFjY2VudCI9PXQuY29sb3IpKCJtYXQtd2FybiIsIndhcm4iPT10LmNvbG9yKX19ZnVuY3Rpb24gWE4odCxuKXsxJnQmJihLZygwLCJkaXYiKSxocCgxLDUpLCRnKCkpLDImdCYmSmcoIkB0cmFuc2l0aW9uTWVzc2FnZXMiLGdwKCkuX3N1YnNjcmlwdEFuaW1hdGlvblN0YXRlKX1mdW5jdGlvbiBKTih0LG4pe2lmKDEmdCYmKEtnKDAsImRpdiIsMzEpLEpwKDEpLCRnKCkpLDImdCl7Y29uc3QgdD1ncCgyKTtKZygiaWQiLHQuX2hpbnRMYWJlbElkKSx3cygxKSxRcCh0LmhpbnRMYWJlbCl9fWZ1bmN0aW9uIFFOKHQsbil7aWYoMSZ0JiYoS2coMCwiZGl2IiwyOCksWWcoMSxKTiwyLDIsImRpdiIsMjkpLGhwKDIsNiksdHAoMywiZGl2IiwzMCksaHAoNCw3KSwkZygpKSwyJnQpe2NvbnN0IHQ9Z3AoKTtKZygiQHRyYW5zaXRpb25NZXNzYWdlcyIsdC5fc3Vic2NyaXB0QW5pbWF0aW9uU3RhdGUpLHdzKDEpLEpnKCJuZ0lmIix0LmhpbnRMYWJlbCl9fWNvbnN0IEtOPVsiKiIsW1siIiwibWF0UHJlZml4IiwiIl1dLFtbIm1hdC1wbGFjZWhvbGRlciJdXSxbWyJtYXQtbGFiZWwiXV0sW1siIiwibWF0U3VmZml4IiwiIl1dLFtbIm1hdC1lcnJvciJdXSxbWyJtYXQtaGludCIsMywiYWxpZ24iLCJlbmQiXV0sW1sibWF0LWhpbnQiLCJhbGlnbiIsImVuZCJdXV07bGV0ICROPTA7Y29uc3QgdEY9bmV3IEZhKCJNYXRFcnJvciIpO2NsYXNzIG5Ge2NvbnN0cnVjdG9yKCl7dGhpcy5pZD0ibWF0LWVycm9yLSIrJE4rK319bkYuybVmYWM9ZnVuY3Rpb24gdChuKXtyZXR1cm4gbmV3KG58fG5GKX0sbkYuybVkaXI9dm8oe3R5cGU6bkYsc2VsZWN0b3JzOltbIm1hdC1lcnJvciJdXSxob3N0QXR0cnM6WyJyb2xlIiwiYWxlcnQiLDEsIm1hdC1lcnJvciJdLGhvc3RWYXJzOjEsaG9zdEJpbmRpbmdzOmZ1bmN0aW9uIHQobixlKXsyJm4mJk5nKCJpZCIsZS5pZCl9LGlucHV0czp7aWQ6ImlkIn0sZmVhdHVyZXM6W011KFt7cHJvdmlkZTp0Rix1c2VFeGlzdGluZzpuRn1dKV19KSxuRi5wcm9wRGVjb3JhdG9ycz17aWQ6W3t0eXBlOmZffV19OwovKioKICAgICAqIEBsaWNlbnNlCiAgICAgKiBDb3B5cmlnaHQgR29vZ2xlIExMQyBBbGwgUmlnaHRzIFJlc2VydmVkLgogICAgICoKICAgICAqIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGFuIE1JVC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCiAgICAgKiBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlIGF0IGh0dHBzOi8vYW5ndWxhci5pby9saWNlbnNlCiAgICAgKi8KY29uc3QgZUY9e3RyYW5zaXRpb25NZXNzYWdlczpTUCgidHJhbnNpdGlvbk1lc3NhZ2VzIixbUlAoImVudGVyIix6UCh7b3BhY2l0eToxLHRyYW5zZm9ybToidHJhbnNsYXRlWSgwJSkifSkpLERQKCJ2b2lkID0+IGVudGVyIixbelAoe29wYWNpdHk6MCx0cmFuc2Zvcm06InRyYW5zbGF0ZVkoLTEwMCUpIn0pLEVQKCIzMDBtcyBjdWJpYy1iZXppZXIoMC41NSwgMCwgMC41NSwgMC4yKSIpXSldKX07Ci8qKgogICAgICogQGxpY2Vuc2UKICAgICAqIENvcHlyaWdodCBHb29nbGUgTExDIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCiAgICAgKgogICAgICogVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYW4gTUlULXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKICAgICAqIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUgYXQgaHR0cHM6Ly9hbmd1bGFyLmlvL2xpY2Vuc2UKICAgICAqL2NsYXNzIGFGe31mdW5jdGlvbiBvRih0KXtyZXR1cm4gRXJyb3IoYEEgaGludCB3YXMgYWxyZWFkeSBkZWNsYXJlZCBmb3IgJ2FsaWduPSIke3R9IicuYCl9YUYuybVmYWM9ZnVuY3Rpb24gdChuKXtyZXR1cm4gbmV3KG58fGFGKX0sYUYuybVkaXI9dm8oe3R5cGU6YUZ9KTsKLyoqCiAgICAgKiBAbGljZW5zZQogICAgICogQ29weXJpZ2h0IEdvb2dsZSBMTEMgQWxsIFJpZ2h0cyBSZXNlcnZlZC4KICAgICAqCiAgICAgKiBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhbiBNSVQtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQogICAgICogZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZSBhdCBodHRwczovL2FuZ3VsYXIuaW8vbGljZW5zZQogICAgICovCmxldCByRj0wO2NvbnN0IGlGPW5ldyBGYSgiTWF0SGludCIpO2NsYXNzIGNGe2NvbnN0cnVjdG9yKCl7dGhpcy5hbGlnbj0ic3RhcnQiLHRoaXMuaWQ9Im1hdC1oaW50LSIrckYrK319Y0YuybVmYWM9ZnVuY3Rpb24gdChuKXtyZXR1cm4gbmV3KG58fGNGKX0sY0YuybVkaXI9dm8oe3R5cGU6Y0Ysc2VsZWN0b3JzOltbIm1hdC1oaW50Il1dLGhvc3RBdHRyczpbMSwibWF0LWhpbnQiXSxob3N0VmFyczo0LGhvc3RCaW5kaW5nczpmdW5jdGlvbiB0KG4sZSl7MiZuJiYoTmcoImlkIixlLmlkKSgiYWxpZ24iLG51bGwpLERwKCJtYXQtZm9ybS1maWVsZC1oaW50LWVuZCIsImVuZCI9PT1lLmFsaWduKSl9LGlucHV0czp7YWxpZ246ImFsaWduIixpZDoiaWQifSxmZWF0dXJlczpbTXUoW3twcm92aWRlOmlGLHVzZUV4aXN0aW5nOmNGfV0pXX0pLGNGLnByb3BEZWNvcmF0b3JzPXthbGlnbjpbe3R5cGU6Zl99XSxpZDpbe3R5cGU6Zl99XX07Ci8qKgogICAgICogQGxpY2Vuc2UKICAgICAqIENvcHlyaWdodCBHb29nbGUgTExDIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCiAgICAgKgogICAgICogVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYW4gTUlULXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKICAgICAqIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUgYXQgaHR0cHM6Ly9hbmd1bGFyLmlvL2xpY2Vuc2UKICAgICAqLwpjbGFzcyBzRnt9c0YuybVmYWM9ZnVuY3Rpb24gdChuKXtyZXR1cm4gbmV3KG58fHNGKX0sc0YuybVkaXI9dm8oe3R5cGU6c0Ysc2VsZWN0b3JzOltbIm1hdC1sYWJlbCJdXX0pOwovKioKICAgICAqIEBsaWNlbnNlCiAgICAgKiBDb3B5cmlnaHQgR29vZ2xlIExMQyBBbGwgUmlnaHRzIFJlc2VydmVkLgogICAgICoKICAgICAqIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGFuIE1JVC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCiAgICAgKiBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlIGF0IGh0dHBzOi8vYW5ndWxhci5pby9saWNlbnNlCiAgICAgKi8KY2xhc3MgbEZ7fWxGLsm1ZmFjPWZ1bmN0aW9uIHQobil7cmV0dXJuIG5ldyhufHxsRil9LGxGLsm1ZGlyPXZvKHt0eXBlOmxGLHNlbGVjdG9yczpbWyJtYXQtcGxhY2Vob2xkZXIiXV19KTsKLyoqCiAgICAgKiBAbGljZW5zZQogICAgICogQ29weXJpZ2h0IEdvb2dsZSBMTEMgQWxsIFJpZ2h0cyBSZXNlcnZlZC4KICAgICAqCiAgICAgKiBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhbiBNSVQtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQogICAgICogZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZSBhdCBodHRwczovL2FuZ3VsYXIuaW8vbGljZW5zZQogICAgICovCmNvbnN0IG1GPW5ldyBGYSgiTWF0UHJlZml4Iik7Y2xhc3MgZEZ7fWRGLsm1ZmFjPWZ1bmN0aW9uIHQobil7cmV0dXJuIG5ldyhufHxkRil9LGRGLsm1ZGlyPXZvKHt0eXBlOmRGLHNlbGVjdG9yczpbWyIiLCJtYXRQcmVmaXgiLCIiXV0sZmVhdHVyZXM6W011KFt7cHJvdmlkZTptRix1c2VFeGlzdGluZzpkRn1dKV19KTsKLyoqCiAgICAgKiBAbGljZW5zZQogICAgICogQ29weXJpZ2h0IEdvb2dsZSBMTEMgQWxsIFJpZ2h0cyBSZXNlcnZlZC4KICAgICAqCiAgICAgKiBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhbiBNSVQtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQogICAgICogZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZSBhdCBodHRwczovL2FuZ3VsYXIuaW8vbGljZW5zZQogICAgICovCmNvbnN0IGdGPW5ldyBGYSgiTWF0U3VmZml4Iik7Y2xhc3MgcEZ7fXBGLsm1ZmFjPWZ1bmN0aW9uIHQobil7cmV0dXJuIG5ldyhufHxwRil9LHBGLsm1ZGlyPXZvKHt0eXBlOnBGLHNlbGVjdG9yczpbWyIiLCJtYXRTdWZmaXgiLCIiXV0sZmVhdHVyZXM6W011KFt7cHJvdmlkZTpnRix1c2VFeGlzdGluZzpwRn1dKV19KTsKLyoqCiAgICAgKiBAbGljZW5zZQogICAgICogQ29weXJpZ2h0IEdvb2dsZSBMTEMgQWxsIFJpZ2h0cyBSZXNlcnZlZC4KICAgICAqCiAgICAgKiBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhbiBNSVQtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQogICAgICogZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZSBhdCBodHRwczovL2FuZ3VsYXIuaW8vbGljZW5zZQogICAgICovCmxldCBiRj0wO2NvbnN0IHVGPWVFKGNsYXNze2NvbnN0cnVjdG9yKHQpe3RoaXMuX2VsZW1lbnRSZWY9dH19LCJwcmltYXJ5IiksZkY9bmV3IEZhKCJNQVRfRk9STV9GSUVMRF9ERUZBVUxUX09QVElPTlMiKSxoRj1uZXcgRmEoIk1hdEZvcm1GaWVsZCIpO2NsYXNzIF9GIGV4dGVuZHMgdUZ7Y29uc3RydWN0b3IodCxuLGUsYSxvLHIsaSxjKXtzdXBlcih0KSx0aGlzLl9lbGVtZW50UmVmPXQsdGhpcy5fY2hhbmdlRGV0ZWN0b3JSZWY9bix0aGlzLl9kaXI9YSx0aGlzLl9kZWZhdWx0cz1vLHRoaXMuX3BsYXRmb3JtPXIsdGhpcy5fbmdab25lPWksdGhpcy5fb3V0bGluZUdhcENhbGN1bGF0aW9uTmVlZGVkSW1tZWRpYXRlbHk9ITEsdGhpcy5fb3V0bGluZUdhcENhbGN1bGF0aW9uTmVlZGVkT25TdGFibGU9ITEsdGhpcy5fZGVzdHJveWVkPW5ldyB4LHRoaXMuX3Nob3dBbHdheXNBbmltYXRlPSExLHRoaXMuX3N1YnNjcmlwdEFuaW1hdGlvblN0YXRlPSIiLHRoaXMuX2hpbnRMYWJlbD0iIix0aGlzLl9oaW50TGFiZWxJZD0ibWF0LWhpbnQtIitiRisrLHRoaXMuX2xhYmVsSWQ9Im1hdC1mb3JtLWZpZWxkLWxhYmVsLSIrYkYrKyx0aGlzLl9sYWJlbE9wdGlvbnM9ZXx8e30sdGhpcy5mbG9hdExhYmVsPXRoaXMuX2dldERlZmF1bHRGbG9hdExhYmVsU3RhdGUoKSx0aGlzLl9hbmltYXRpb25zRW5hYmxlZD0iTm9vcEFuaW1hdGlvbnMiIT09Yyx0aGlzLmFwcGVhcmFuY2U9byYmby5hcHBlYXJhbmNlP28uYXBwZWFyYW5jZToibGVnYWN5Iix0aGlzLl9oaWRlUmVxdWlyZWRNYXJrZXI9ISghb3x8bnVsbD09by5oaWRlUmVxdWlyZWRNYXJrZXIpJiZvLmhpZGVSZXF1aXJlZE1hcmtlcn1nZXQgYXBwZWFyYW5jZSgpe3JldHVybiB0aGlzLl9hcHBlYXJhbmNlfXNldCBhcHBlYXJhbmNlKHQpe2NvbnN0IG49dGhpcy5fYXBwZWFyYW5jZTt0aGlzLl9hcHBlYXJhbmNlPXR8fHRoaXMuX2RlZmF1bHRzJiZ0aGlzLl9kZWZhdWx0cy5hcHBlYXJhbmNlfHwibGVnYWN5Iiwib3V0bGluZSI9PT10aGlzLl9hcHBlYXJhbmNlJiZuIT09dCYmKHRoaXMuX291dGxpbmVHYXBDYWxjdWxhdGlvbk5lZWRlZE9uU3RhYmxlPSEwKX1nZXQgaGlkZVJlcXVpcmVkTWFya2VyKCl7cmV0dXJuIHRoaXMuX2hpZGVSZXF1aXJlZE1hcmtlcn1zZXQgaGlkZVJlcXVpcmVkTWFya2VyKHQpe3RoaXMuX2hpZGVSZXF1aXJlZE1hcmtlcj1Hdyh0KX1fc2hvdWxkQWx3YXlzRmxvYXQoKXtyZXR1cm4iYWx3YXlzIj09PXRoaXMuZmxvYXRMYWJlbCYmIXRoaXMuX3Nob3dBbHdheXNBbmltYXRlfV9jYW5MYWJlbEZsb2F0KCl7cmV0dXJuIm5ldmVyIiE9PXRoaXMuZmxvYXRMYWJlbH1nZXQgaGludExhYmVsKCl7cmV0dXJuIHRoaXMuX2hpbnRMYWJlbH1zZXQgaGludExhYmVsKHQpe3RoaXMuX2hpbnRMYWJlbD10LHRoaXMuX3Byb2Nlc3NIaW50cygpfWdldCBmbG9hdExhYmVsKCl7cmV0dXJuImxlZ2FjeSIhPT10aGlzLmFwcGVhcmFuY2UmJiJuZXZlciI9PT10aGlzLl9mbG9hdExhYmVsPyJhdXRvIjp0aGlzLl9mbG9hdExhYmVsfXNldCBmbG9hdExhYmVsKHQpe3QhPT10aGlzLl9mbG9hdExhYmVsJiYodGhpcy5fZmxvYXRMYWJlbD10fHx0aGlzLl9nZXREZWZhdWx0RmxvYXRMYWJlbFN0YXRlKCksdGhpcy5fY2hhbmdlRGV0ZWN0b3JSZWYubWFya0ZvckNoZWNrKCkpfWdldCBfY29udHJvbCgpe3JldHVybiB0aGlzLl9leHBsaWNpdEZvcm1GaWVsZENvbnRyb2x8fHRoaXMuX2NvbnRyb2xOb25TdGF0aWN8fHRoaXMuX2NvbnRyb2xTdGF0aWN9c2V0IF9jb250cm9sKHQpe3RoaXMuX2V4cGxpY2l0Rm9ybUZpZWxkQ29udHJvbD10fWdldExhYmVsSWQoKXtyZXR1cm4gdGhpcy5faGFzRmxvYXRpbmdMYWJlbCgpP3RoaXMuX2xhYmVsSWQ6bnVsbH1nZXRDb25uZWN0ZWRPdmVybGF5T3JpZ2luKCl7cmV0dXJuIHRoaXMuX2Nvbm5lY3Rpb25Db250YWluZXJSZWZ8fHRoaXMuX2VsZW1lbnRSZWZ9bmdBZnRlckNvbnRlbnRJbml0KCl7dGhpcy5fdmFsaWRhdGVDb250cm9sQ2hpbGQoKTtjb25zdCB0PXRoaXMuX2NvbnRyb2w7dC5jb250cm9sVHlwZSYmdGhpcy5fZWxlbWVudFJlZi5uYXRpdmVFbGVtZW50LmNsYXNzTGlzdC5hZGQoYG1hdC1mb3JtLWZpZWxkLXR5cGUtJHt0LmNvbnRyb2xUeXBlfWApLHQuc3RhdGVDaGFuZ2VzLnBpcGUoY2UobnVsbCkpLnN1YnNjcmliZSgoKCk9Pnt0aGlzLl92YWxpZGF0ZVBsYWNlaG9sZGVycygpLHRoaXMuX3N5bmNEZXNjcmliZWRCeUlkcygpLHRoaXMuX2NoYW5nZURldGVjdG9yUmVmLm1hcmtGb3JDaGVjaygpfSkpLHQubmdDb250cm9sJiZ0Lm5nQ29udHJvbC52YWx1ZUNoYW5nZXMmJnQubmdDb250cm9sLnZhbHVlQ2hhbmdlcy5waXBlKGRlKHRoaXMuX2Rlc3Ryb3llZCkpLnN1YnNjcmliZSgoKCk9PnRoaXMuX2NoYW5nZURldGVjdG9yUmVmLm1hcmtGb3JDaGVjaygpKSksdGhpcy5fbmdab25lLnJ1bk91dHNpZGVBbmd1bGFyKCgoKT0+e3RoaXMuX25nWm9uZS5vblN0YWJsZS5waXBlKGRlKHRoaXMuX2Rlc3Ryb3llZCkpLnN1YnNjcmliZSgoKCk9Pnt0aGlzLl9vdXRsaW5lR2FwQ2FsY3VsYXRpb25OZWVkZWRPblN0YWJsZSYmdGhpcy51cGRhdGVPdXRsaW5lR2FwKCl9KSl9KSksV3QodGhpcy5fcHJlZml4Q2hpbGRyZW4uY2hhbmdlcyx0aGlzLl9zdWZmaXhDaGlsZHJlbi5jaGFuZ2VzKS5zdWJzY3JpYmUoKCgpPT57dGhpcy5fb3V0bGluZUdhcENhbGN1bGF0aW9uTmVlZGVkT25TdGFibGU9ITAsdGhpcy5fY2hhbmdlRGV0ZWN0b3JSZWYubWFya0ZvckNoZWNrKCl9KSksdGhpcy5faGludENoaWxkcmVuLmNoYW5nZXMucGlwZShjZShudWxsKSkuc3Vic2NyaWJlKCgoKT0+e3RoaXMuX3Byb2Nlc3NIaW50cygpLHRoaXMuX2NoYW5nZURldGVjdG9yUmVmLm1hcmtGb3JDaGVjaygpfSkpLHRoaXMuX2Vycm9yQ2hpbGRyZW4uY2hhbmdlcy5waXBlKGNlKG51bGwpKS5zdWJzY3JpYmUoKCgpPT57dGhpcy5fc3luY0Rlc2NyaWJlZEJ5SWRzKCksdGhpcy5fY2hhbmdlRGV0ZWN0b3JSZWYubWFya0ZvckNoZWNrKCl9KSksdGhpcy5fZGlyJiZ0aGlzLl9kaXIuY2hhbmdlLnBpcGUoZGUodGhpcy5fZGVzdHJveWVkKSkuc3Vic2NyaWJlKCgoKT0+eyJmdW5jdGlvbiI9PXR5cGVvZiByZXF1ZXN0QW5pbWF0aW9uRnJhbWU/dGhpcy5fbmdab25lLnJ1bk91dHNpZGVBbmd1bGFyKCgoKT0+e3JlcXVlc3RBbmltYXRpb25GcmFtZSgoKCk9PnRoaXMudXBkYXRlT3V0bGluZUdhcCgpKSl9KSk6dGhpcy51cGRhdGVPdXRsaW5lR2FwKCl9KSl9bmdBZnRlckNvbnRlbnRDaGVja2VkKCl7dGhpcy5fdmFsaWRhdGVDb250cm9sQ2hpbGQoKSx0aGlzLl9vdXRsaW5lR2FwQ2FsY3VsYXRpb25OZWVkZWRJbW1lZGlhdGVseSYmdGhpcy51cGRhdGVPdXRsaW5lR2FwKCl9bmdBZnRlclZpZXdJbml0KCl7dGhpcy5fc3Vic2NyaXB0QW5pbWF0aW9uU3RhdGU9ImVudGVyIix0aGlzLl9jaGFuZ2VEZXRlY3RvclJlZi5kZXRlY3RDaGFuZ2VzKCl9bmdPbkRlc3Ryb3koKXt0aGlzLl9kZXN0cm95ZWQubmV4dCgpLHRoaXMuX2Rlc3Ryb3llZC5jb21wbGV0ZSgpfV9zaG91bGRGb3J3YXJkKHQpe2NvbnN0IG49dGhpcy5fY29udHJvbD90aGlzLl9jb250cm9sLm5nQ29udHJvbDpudWxsO3JldHVybiBuJiZuW3RdfV9oYXNQbGFjZWhvbGRlcigpe3JldHVybiEhKHRoaXMuX2NvbnRyb2wmJnRoaXMuX2NvbnRyb2wucGxhY2Vob2xkZXJ8fHRoaXMuX3BsYWNlaG9sZGVyQ2hpbGQpfV9oYXNMYWJlbCgpe3JldHVybiEoIXRoaXMuX2xhYmVsQ2hpbGROb25TdGF0aWMmJiF0aGlzLl9sYWJlbENoaWxkU3RhdGljKX1fc2hvdWxkTGFiZWxGbG9hdCgpe3JldHVybiB0aGlzLl9jYW5MYWJlbEZsb2F0KCkmJih0aGlzLl9jb250cm9sJiZ0aGlzLl9jb250cm9sLnNob3VsZExhYmVsRmxvYXR8fHRoaXMuX3Nob3VsZEFsd2F5c0Zsb2F0KCkpfV9oaWRlQ29udHJvbFBsYWNlaG9sZGVyKCl7cmV0dXJuImxlZ2FjeSI9PT10aGlzLmFwcGVhcmFuY2UmJiF0aGlzLl9oYXNMYWJlbCgpfHx0aGlzLl9oYXNMYWJlbCgpJiYhdGhpcy5fc2hvdWxkTGFiZWxGbG9hdCgpfV9oYXNGbG9hdGluZ0xhYmVsKCl7cmV0dXJuIHRoaXMuX2hhc0xhYmVsKCl8fCJsZWdhY3kiPT09dGhpcy5hcHBlYXJhbmNlJiZ0aGlzLl9oYXNQbGFjZWhvbGRlcigpfV9nZXREaXNwbGF5ZWRNZXNzYWdlcygpe3JldHVybiB0aGlzLl9lcnJvckNoaWxkcmVuJiZ0aGlzLl9lcnJvckNoaWxkcmVuLmxlbmd0aD4wJiZ0aGlzLl9jb250cm9sLmVycm9yU3RhdGU/ImVycm9yIjoiaGludCJ9X2FuaW1hdGVBbmRMb2NrTGFiZWwoKXt0aGlzLl9oYXNGbG9hdGluZ0xhYmVsKCkmJnRoaXMuX2NhbkxhYmVsRmxvYXQoKSYmKHRoaXMuX2FuaW1hdGlvbnNFbmFibGVkJiZ0aGlzLl9sYWJlbCYmKHRoaXMuX3Nob3dBbHdheXNBbmltYXRlPSEwLFZ0KHRoaXMuX2xhYmVsLm5hdGl2ZUVsZW1lbnQsInRyYW5zaXRpb25lbmQiKS5waXBlKFRuKDEpKS5zdWJzY3JpYmUoKCgpPT57dGhpcy5fc2hvd0Fsd2F5c0FuaW1hdGU9ITF9KSkpLHRoaXMuZmxvYXRMYWJlbD0iYWx3YXlzIix0aGlzLl9jaGFuZ2VEZXRlY3RvclJlZi5tYXJrRm9yQ2hlY2soKSl9X3ZhbGlkYXRlUGxhY2Vob2xkZXJzKCl7aWYodGhpcy5fY29udHJvbC5wbGFjZWhvbGRlciYmdGhpcy5fcGxhY2Vob2xkZXJDaGlsZCYmKCJ1bmRlZmluZWQiPT10eXBlb2YgbmdEZXZNb2RlfHxuZ0Rldk1vZGUpKQovKioKICAgICAqIEBsaWNlbnNlCiAgICAgKiBDb3B5cmlnaHQgR29vZ2xlIExMQyBBbGwgUmlnaHRzIFJlc2VydmVkLgogICAgICoKICAgICAqIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGFuIE1JVC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCiAgICAgKiBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlIGF0IGh0dHBzOi8vYW5ndWxhci5pby9saWNlbnNlCiAgICAgKi8KdGhyb3coZnVuY3Rpb24gdCgpe3JldHVybiBFcnJvcigiUGxhY2Vob2xkZXIgYXR0cmlidXRlIGFuZCBjaGlsZCBlbGVtZW50IHdlcmUgYm90aCBzcGVjaWZpZWQuIil9KSgpfV9wcm9jZXNzSGludHMoKXt0aGlzLl92YWxpZGF0ZUhpbnRzKCksdGhpcy5fc3luY0Rlc2NyaWJlZEJ5SWRzKCl9X3ZhbGlkYXRlSGludHMoKXtpZih0aGlzLl9oaW50Q2hpbGRyZW4mJigidW5kZWZpbmVkIj09dHlwZW9mIG5nRGV2TW9kZXx8bmdEZXZNb2RlKSl7bGV0IHQsbjt0aGlzLl9oaW50Q2hpbGRyZW4uZm9yRWFjaCgoZT0+e2lmKCJzdGFydCI9PT1lLmFsaWduKXtpZih0fHx0aGlzLmhpbnRMYWJlbCl0aHJvdyBvRigic3RhcnQiKTt0PWV9ZWxzZSBpZigiZW5kIj09PWUuYWxpZ24pe2lmKG4pdGhyb3cgb0YoImVuZCIpO249ZX19KSl9fV9nZXREZWZhdWx0RmxvYXRMYWJlbFN0YXRlKCl7cmV0dXJuIHRoaXMuX2RlZmF1bHRzJiZ0aGlzLl9kZWZhdWx0cy5mbG9hdExhYmVsfHx0aGlzLl9sYWJlbE9wdGlvbnMuZmxvYXR8fCJhdXRvIn1fc3luY0Rlc2NyaWJlZEJ5SWRzKCl7aWYodGhpcy5fY29udHJvbCl7bGV0IHQ9W107aWYodGhpcy5fY29udHJvbC51c2VyQXJpYURlc2NyaWJlZEJ5JiYic3RyaW5nIj09dHlwZW9mIHRoaXMuX2NvbnRyb2wudXNlckFyaWFEZXNjcmliZWRCeSYmdC5wdXNoKC4uLnRoaXMuX2NvbnRyb2wudXNlckFyaWFEZXNjcmliZWRCeS5zcGxpdCgiICIpKSwiaGludCI9PT10aGlzLl9nZXREaXNwbGF5ZWRNZXNzYWdlcygpKXtjb25zdCBuPXRoaXMuX2hpbnRDaGlsZHJlbj90aGlzLl9oaW50Q2hpbGRyZW4uZmluZCgodD0+InN0YXJ0Ij09PXQuYWxpZ24pKTpudWxsLGU9dGhpcy5faGludENoaWxkcmVuP3RoaXMuX2hpbnRDaGlsZHJlbi5maW5kKCh0PT4iZW5kIj09PXQuYWxpZ24pKTpudWxsO24/dC5wdXNoKG4uaWQpOnRoaXMuX2hpbnRMYWJlbCYmdC5wdXNoKHRoaXMuX2hpbnRMYWJlbElkKSxlJiZ0LnB1c2goZS5pZCl9ZWxzZSB0aGlzLl9lcnJvckNoaWxkcmVuJiZ0LnB1c2goLi4udGhpcy5fZXJyb3JDaGlsZHJlbi5tYXAoKHQ9PnQuaWQpKSk7dGhpcy5fY29udHJvbC5zZXREZXNjcmliZWRCeUlkcyh0KX19X3ZhbGlkYXRlQ29udHJvbENoaWxkKCl7aWYoIXRoaXMuX2NvbnRyb2wmJigidW5kZWZpbmVkIj09dHlwZW9mIG5nRGV2TW9kZXx8bmdEZXZNb2RlKSl0aHJvdyhmdW5jdGlvbiB0KCl7cmV0dXJuIEVycm9yKCJtYXQtZm9ybS1maWVsZCBtdXN0IGNvbnRhaW4gYSBNYXRGb3JtRmllbGRDb250cm9sLiIpfSkoKX11cGRhdGVPdXRsaW5lR2FwKCl7Y29uc3QgdD10aGlzLl9sYWJlbD90aGlzLl9sYWJlbC5uYXRpdmVFbGVtZW50Om51bGw7aWYoIm91dGxpbmUiIT09dGhpcy5hcHBlYXJhbmNlfHwhdHx8IXQuY2hpbGRyZW4ubGVuZ3RofHwhdC50ZXh0Q29udGVudC50cmltKCkpcmV0dXJuO2lmKCF0aGlzLl9wbGF0Zm9ybS5pc0Jyb3dzZXIpcmV0dXJuO2lmKCF0aGlzLl9pc0F0dGFjaGVkVG9ET00oKSlyZXR1cm4gdm9pZCh0aGlzLl9vdXRsaW5lR2FwQ2FsY3VsYXRpb25OZWVkZWRJbW1lZGlhdGVseT0hMCk7bGV0IG49MCxlPTA7Y29uc3QgYT10aGlzLl9jb25uZWN0aW9uQ29udGFpbmVyUmVmLm5hdGl2ZUVsZW1lbnQsbz1hLnF1ZXJ5U2VsZWN0b3JBbGwoIi5tYXQtZm9ybS1maWVsZC1vdXRsaW5lLXN0YXJ0Iikscj1hLnF1ZXJ5U2VsZWN0b3JBbGwoIi5tYXQtZm9ybS1maWVsZC1vdXRsaW5lLWdhcCIpO2lmKHRoaXMuX2xhYmVsJiZ0aGlzLl9sYWJlbC5uYXRpdmVFbGVtZW50LmNoaWxkcmVuLmxlbmd0aCl7Y29uc3Qgbz1hLmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpO2lmKDA9PT1vLndpZHRoJiYwPT09by5oZWlnaHQpcmV0dXJuIHRoaXMuX291dGxpbmVHYXBDYWxjdWxhdGlvbk5lZWRlZE9uU3RhYmxlPSEwLHZvaWQodGhpcy5fb3V0bGluZUdhcENhbGN1bGF0aW9uTmVlZGVkSW1tZWRpYXRlbHk9ITEpO2NvbnN0IHI9dGhpcy5fZ2V0U3RhcnRFbmQobyksaT10LmNoaWxkcmVuLGM9dGhpcy5fZ2V0U3RhcnRFbmQoaVswXS5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKSk7bGV0IHM9MDtmb3IobGV0IHQ9MDt0PGkubGVuZ3RoO3QrKylzKz1pW3RdLm9mZnNldFdpZHRoO249TWF0aC5hYnMoYy1yKS01LGU9cz4wPy43NSpzKzEwOjB9Zm9yKGxldCB0PTA7dDxvLmxlbmd0aDt0Kyspb1t0XS5zdHlsZS53aWR0aD1gJHtufXB4YDtmb3IobGV0IHQ9MDt0PHIubGVuZ3RoO3QrKylyW3RdLnN0eWxlLndpZHRoPWAke2V9cHhgO3RoaXMuX291dGxpbmVHYXBDYWxjdWxhdGlvbk5lZWRlZE9uU3RhYmxlPXRoaXMuX291dGxpbmVHYXBDYWxjdWxhdGlvbk5lZWRlZEltbWVkaWF0ZWx5PSExfV9nZXRTdGFydEVuZCh0KXtyZXR1cm4gdGhpcy5fZGlyJiYicnRsIj09PXRoaXMuX2Rpci52YWx1ZT90LnJpZ2h0OnQubGVmdH1faXNBdHRhY2hlZFRvRE9NKCl7Y29uc3QgdD10aGlzLl9lbGVtZW50UmVmLm5hdGl2ZUVsZW1lbnQ7aWYodC5nZXRSb290Tm9kZSl7Y29uc3Qgbj10LmdldFJvb3ROb2RlKCk7cmV0dXJuIG4mJm4hPT10fXJldHVybiBkb2N1bWVudC5kb2N1bWVudEVsZW1lbnQuY29udGFpbnModCl9fV9GLsm1ZmFjPWZ1bmN0aW9uIHQobil7cmV0dXJuIG5ldyhufHxfRikoWmcoeHUpLFpnKFZtKSxaZyhKRSw4KSxaZyhVUyw4KSxaZyhmRiw4KSxaZyhTdyksWmcoSl8pLFpnKGRrLDgpKX0sX0YuybVjbXA9X28oe3R5cGU6X0Ysc2VsZWN0b3JzOltbIm1hdC1mb3JtLWZpZWxkIl1dLGNvbnRlbnRRdWVyaWVzOmZ1bmN0aW9uIHQobixlLGEpe3ZhciBvOzEmbiYmKEdmKGEsYUYsITApLFlmKGEsYUYsITApLEdmKGEsc0YsITApLFlmKGEsc0YsITApLEdmKGEsbEYsITApLEdmKGEsdEYsITApLEdmKGEsaUYsITApLEdmKGEsbUYsITApLEdmKGEsZ0YsITApKSwyJm4mJihWZihvPVpmKCkpJiYoZS5fY29udHJvbE5vblN0YXRpYz1vLmZpcnN0KSxWZihvPVpmKCkpJiYoZS5fY29udHJvbFN0YXRpYz1vLmZpcnN0KSxWZihvPVpmKCkpJiYoZS5fbGFiZWxDaGlsZE5vblN0YXRpYz1vLmZpcnN0KSxWZihvPVpmKCkpJiYoZS5fbGFiZWxDaGlsZFN0YXRpYz1vLmZpcnN0KSxWZihvPVpmKCkpJiYoZS5fcGxhY2Vob2xkZXJDaGlsZD1vLmZpcnN0KSxWZihvPVpmKCkpJiYoZS5fZXJyb3JDaGlsZHJlbj1vKSxWZihvPVpmKCkpJiYoZS5faGludENoaWxkcmVuPW8pLFZmKG89WmYoKSkmJihlLl9wcmVmaXhDaGlsZHJlbj1vKSxWZihvPVpmKCkpJiYoZS5fc3VmZml4Q2hpbGRyZW49bykpfSx2aWV3UXVlcnk6ZnVuY3Rpb24gdChuLGUpe3ZhciBhOzEmbiYmKFVmKEZOLCEwKSxqZihMTiwhMCksVWYoSE4sITApLFVmKEJOLCEwKSksMiZuJiYoVmYoYT1aZigpKSYmKGUudW5kZXJsaW5lUmVmPWEuZmlyc3QpLFZmKGE9WmYoKSkmJihlLl9jb25uZWN0aW9uQ29udGFpbmVyUmVmPWEuZmlyc3QpLFZmKGE9WmYoKSkmJihlLl9pbnB1dENvbnRhaW5lclJlZj1hLmZpcnN0KSxWZihhPVpmKCkpJiYoZS5fbGFiZWw9YS5maXJzdCkpfSxob3N0QXR0cnM6WzEsIm1hdC1mb3JtLWZpZWxkIl0saG9zdFZhcnM6NDQsaG9zdEJpbmRpbmdzOmZ1bmN0aW9uIHQobixlKXsyJm4mJkRwKCJtYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLXN0YW5kYXJkIiwic3RhbmRhcmQiPT1lLmFwcGVhcmFuY2UpKCJtYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWZpbGwiLCJmaWxsIj09ZS5hcHBlYXJhbmNlKSgibWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1vdXRsaW5lIiwib3V0bGluZSI9PWUuYXBwZWFyYW5jZSkoIm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtbGVnYWN5IiwibGVnYWN5Ij09ZS5hcHBlYXJhbmNlKSgibWF0LWZvcm0tZmllbGQtaW52YWxpZCIsZS5fY29udHJvbC5lcnJvclN0YXRlKSgibWF0LWZvcm0tZmllbGQtY2FuLWZsb2F0IixlLl9jYW5MYWJlbEZsb2F0KCkpKCJtYXQtZm9ybS1maWVsZC1zaG91bGQtZmxvYXQiLGUuX3Nob3VsZExhYmVsRmxvYXQoKSkoIm1hdC1mb3JtLWZpZWxkLWhhcy1sYWJlbCIsZS5faGFzRmxvYXRpbmdMYWJlbCgpKSgibWF0LWZvcm0tZmllbGQtaGlkZS1wbGFjZWhvbGRlciIsZS5faGlkZUNvbnRyb2xQbGFjZWhvbGRlcigpKSgibWF0LWZvcm0tZmllbGQtZGlzYWJsZWQiLGUuX2NvbnRyb2wuZGlzYWJsZWQpKCJtYXQtZm9ybS1maWVsZC1hdXRvZmlsbGVkIixlLl9jb250cm9sLmF1dG9maWxsZWQpKCJtYXQtZm9jdXNlZCIsZS5fY29udHJvbC5mb2N1c2VkKSgibWF0LWFjY2VudCIsImFjY2VudCI9PWUuY29sb3IpKCJtYXQtd2FybiIsIndhcm4iPT1lLmNvbG9yKSgibmctdW50b3VjaGVkIixlLl9zaG91bGRGb3J3YXJkKCJ1bnRvdWNoZWQiKSkoIm5nLXRvdWNoZWQiLGUuX3Nob3VsZEZvcndhcmQoInRvdWNoZWQiKSkoIm5nLXByaXN0aW5lIixlLl9zaG91bGRGb3J3YXJkKCJwcmlzdGluZSIpKSgibmctZGlydHkiLGUuX3Nob3VsZEZvcndhcmQoImRpcnR5IikpKCJuZy12YWxpZCIsZS5fc2hvdWxkRm9yd2FyZCgidmFsaWQiKSkoIm5nLWludmFsaWQiLGUuX3Nob3VsZEZvcndhcmQoImludmFsaWQiKSkoIm5nLXBlbmRpbmciLGUuX3Nob3VsZEZvcndhcmQoInBlbmRpbmciKSkoIl9tYXQtYW5pbWF0aW9uLW5vb3BhYmxlIiwhZS5fYW5pbWF0aW9uc0VuYWJsZWQpfSxpbnB1dHM6e2NvbG9yOiJjb2xvciIsZmxvYXRMYWJlbDoiZmxvYXRMYWJlbCIsYXBwZWFyYW5jZToiYXBwZWFyYW5jZSIsaGlkZVJlcXVpcmVkTWFya2VyOiJoaWRlUmVxdWlyZWRNYXJrZXIiLGhpbnRMYWJlbDoiaGludExhYmVsIn0sZXhwb3J0QXM6WyJtYXRGb3JtRmllbGQiXSxmZWF0dXJlczpbTXUoW3twcm92aWRlOmhGLHVzZUV4aXN0aW5nOl9GfV0pLGhnXSxuZ0NvbnRlbnRTZWxlY3RvcnM6WyIqIiwiW21hdFByZWZpeF0iLCJtYXQtcGxhY2Vob2xkZXIiLCJtYXQtbGFiZWwiLCJbbWF0U3VmZml4XSIsIm1hdC1lcnJvciIsIm1hdC1oaW50Om5vdChbYWxpZ249J2VuZCddKSIsIm1hdC1oaW50W2FsaWduPSdlbmQnXSJdLGRlY2xzOjE1LHZhcnM6OCxjb25zdHM6W1sxLCJtYXQtZm9ybS1maWVsZC13cmFwcGVyIl0sWzEsIm1hdC1mb3JtLWZpZWxkLWZsZXgiLDMsImNsaWNrIl0sWyJjb25uZWN0aW9uQ29udGFpbmVyIiwiIl0sWzQsIm5nSWYiXSxbImNsYXNzIiwibWF0LWZvcm0tZmllbGQtcHJlZml4Iiw0LCJuZ0lmIl0sWzEsIm1hdC1mb3JtLWZpZWxkLWluZml4Il0sWyJpbnB1dENvbnRhaW5lciIsIiJdLFsxLCJtYXQtZm9ybS1maWVsZC1sYWJlbC13cmFwcGVyIl0sWyJjbGFzcyIsIm1hdC1mb3JtLWZpZWxkLWxhYmVsIiwzLCJjZGtPYnNlcnZlQ29udGVudERpc2FibGVkIiwiaWQiLCJtYXQtZW1wdHkiLCJtYXQtZm9ybS1maWVsZC1lbXB0eSIsIm1hdC1hY2NlbnQiLCJtYXQtd2FybiIsIm5nU3dpdGNoIiwiY2RrT2JzZXJ2ZUNvbnRlbnQiLDQsIm5nSWYiXSxbImNsYXNzIiwibWF0LWZvcm0tZmllbGQtc3VmZml4Iiw0LCJuZ0lmIl0sWyJjbGFzcyIsIm1hdC1mb3JtLWZpZWxkLXVuZGVybGluZSIsNCwibmdJZiJdLFsxLCJtYXQtZm9ybS1maWVsZC1zdWJzY3JpcHQtd3JhcHBlciIsMywibmdTd2l0Y2giXSxbNCwibmdTd2l0Y2hDYXNlIl0sWyJjbGFzcyIsIm1hdC1mb3JtLWZpZWxkLWhpbnQtd3JhcHBlciIsNCwibmdTd2l0Y2hDYXNlIl0sWzEsIm1hdC1mb3JtLWZpZWxkLW91dGxpbmUiXSxbMSwibWF0LWZvcm0tZmllbGQtb3V0bGluZS1zdGFydCJdLFsxLCJtYXQtZm9ybS1maWVsZC1vdXRsaW5lLWdhcCJdLFsxLCJtYXQtZm9ybS1maWVsZC1vdXRsaW5lLWVuZCJdLFsxLCJtYXQtZm9ybS1maWVsZC1vdXRsaW5lIiwibWF0LWZvcm0tZmllbGQtb3V0bGluZS10aGljayJdLFsxLCJtYXQtZm9ybS1maWVsZC1wcmVmaXgiXSxbMSwibWF0LWZvcm0tZmllbGQtbGFiZWwiLDMsImNka09ic2VydmVDb250ZW50RGlzYWJsZWQiLCJpZCIsIm5nU3dpdGNoIiwiY2RrT2JzZXJ2ZUNvbnRlbnQiXSxbImxhYmVsIiwiIl0sWyJjbGFzcyIsIm1hdC1wbGFjZWhvbGRlci1yZXF1aXJlZCBtYXQtZm9ybS1maWVsZC1yZXF1aXJlZC1tYXJrZXIiLCJhcmlhLWhpZGRlbiIsInRydWUiLDQsIm5nSWYiXSxbImFyaWEtaGlkZGVuIiwidHJ1ZSIsMSwibWF0LXBsYWNlaG9sZGVyLXJlcXVpcmVkIiwibWF0LWZvcm0tZmllbGQtcmVxdWlyZWQtbWFya2VyIl0sWzEsIm1hdC1mb3JtLWZpZWxkLXN1ZmZpeCJdLFsxLCJtYXQtZm9ybS1maWVsZC11bmRlcmxpbmUiXSxbInVuZGVybGluZSIsIiJdLFsxLCJtYXQtZm9ybS1maWVsZC1yaXBwbGUiXSxbMSwibWF0LWZvcm0tZmllbGQtaGludC13cmFwcGVyIl0sWyJjbGFzcyIsIm1hdC1oaW50IiwzLCJpZCIsNCwibmdJZiJdLFsxLCJtYXQtZm9ybS1maWVsZC1oaW50LXNwYWNlciJdLFsxLCJtYXQtaGludCIsMywiaWQiXV0sdGVtcGxhdGU6ZnVuY3Rpb24gdChuLGUpezEmbiYmKGJwKEtOKSxLZygwLCJkaXYiLDApLEtnKDEsImRpdiIsMSwyKSxjcCgiY2xpY2siLChmdW5jdGlvbiB0KG4pe3JldHVybiBlLl9jb250cm9sLm9uQ29udGFpbmVyQ2xpY2smJmUuX2NvbnRyb2wub25Db250YWluZXJDbGljayhuKX0pKSxZZygzLFZOLDksMCwibmctY29udGFpbmVyIiwzKSxZZyg0LGpOLDIsMCwiZGl2Iiw0KSxLZyg1LCJkaXYiLDUsNiksaHAoNyksS2coOCwic3BhbiIsNyksWWcoOSxZTiw1LDE2LCJsYWJlbCIsOCksJGcoKSwkZygpLFlnKDEwLHFOLDIsMCwiZGl2Iiw5KSwkZygpLFlnKDExLFpOLDMsNCwiZGl2IiwxMCksS2coMTIsImRpdiIsMTEpLFlnKDEzLFhOLDIsMSwiZGl2IiwxMiksWWcoMTQsUU4sNSwyLCJkaXYiLDEzKSwkZygpLCRnKCkpLDImbiYmKHdzKDMpLEpnKCJuZ0lmIiwib3V0bGluZSI9PWUuYXBwZWFyYW5jZSksd3MoMSksSmcoIm5nSWYiLGUuX3ByZWZpeENoaWxkcmVuLmxlbmd0aCksd3MoNSksSmcoIm5nSWYiLGUuX2hhc0Zsb2F0aW5nTGFiZWwoKSksd3MoMSksSmcoIm5nSWYiLGUuX3N1ZmZpeENoaWxkcmVuLmxlbmd0aCksd3MoMSksSmcoIm5nSWYiLCJvdXRsaW5lIiE9ZS5hcHBlYXJhbmNlKSx3cygxKSxKZygibmdTd2l0Y2giLGUuX2dldERpc3BsYXllZE1lc3NhZ2VzKCkpLHdzKDEpLEpnKCJuZ1N3aXRjaENhc2UiLCJlcnJvciIpLHdzKDEpLEpnKCJuZ1N3aXRjaENhc2UiLCJoaW50IikpfSxkaXJlY3RpdmVzOltXTSxaTSxYTSwkd10sc3R5bGVzOlsiLm1hdC1mb3JtLWZpZWxke2Rpc3BsYXk6aW5saW5lLWJsb2NrO3Bvc2l0aW9uOnJlbGF0aXZlO3RleHQtYWxpZ246bGVmdH1bZGlyPXJ0bF0gLm1hdC1mb3JtLWZpZWxke3RleHQtYWxpZ246cmlnaHR9Lm1hdC1mb3JtLWZpZWxkLXdyYXBwZXJ7cG9zaXRpb246cmVsYXRpdmV9Lm1hdC1mb3JtLWZpZWxkLWZsZXh7ZGlzcGxheTppbmxpbmUtZmxleDthbGlnbi1pdGVtczpiYXNlbGluZTtib3gtc2l6aW5nOmJvcmRlci1ib3g7d2lkdGg6MTAwJX0ubWF0LWZvcm0tZmllbGQtcHJlZml4LC5tYXQtZm9ybS1maWVsZC1zdWZmaXh7d2hpdGUtc3BhY2U6bm93cmFwO2ZsZXg6bm9uZTtwb3NpdGlvbjpyZWxhdGl2ZX0ubWF0LWZvcm0tZmllbGQtaW5maXh7ZGlzcGxheTpibG9jaztwb3NpdGlvbjpyZWxhdGl2ZTtmbGV4OmF1dG87bWluLXdpZHRoOjA7d2lkdGg6MTgwcHh9LmNkay1oaWdoLWNvbnRyYXN0LWFjdGl2ZSAubWF0LWZvcm0tZmllbGQtaW5maXh7Ym9yZGVyLWltYWdlOmxpbmVhci1ncmFkaWVudCh0cmFuc3BhcmVudCwgdHJhbnNwYXJlbnQpfS5tYXQtZm9ybS1maWVsZC1sYWJlbC13cmFwcGVye3Bvc2l0aW9uOmFic29sdXRlO2xlZnQ6MDtib3gtc2l6aW5nOmNvbnRlbnQtYm94O3dpZHRoOjEwMCU7aGVpZ2h0OjEwMCU7b3ZlcmZsb3c6aGlkZGVuO3BvaW50ZXItZXZlbnRzOm5vbmV9W2Rpcj1ydGxdIC5tYXQtZm9ybS1maWVsZC1sYWJlbC13cmFwcGVye2xlZnQ6YXV0bztyaWdodDowfS5tYXQtZm9ybS1maWVsZC1sYWJlbHtwb3NpdGlvbjphYnNvbHV0ZTtsZWZ0OjA7Zm9udDppbmhlcml0O3BvaW50ZXItZXZlbnRzOm5vbmU7d2lkdGg6MTAwJTt3aGl0ZS1zcGFjZTpub3dyYXA7dGV4dC1vdmVyZmxvdzplbGxpcHNpcztvdmVyZmxvdzpoaWRkZW47dHJhbnNmb3JtLW9yaWdpbjowIDA7dHJhbnNpdGlvbjp0cmFuc2Zvcm0gNDAwbXMgY3ViaWMtYmV6aWVyKDAuMjUsIDAuOCwgMC4yNSwgMSksY29sb3IgNDAwbXMgY3ViaWMtYmV6aWVyKDAuMjUsIDAuOCwgMC4yNSwgMSksd2lkdGggNDAwbXMgY3ViaWMtYmV6aWVyKDAuMjUsIDAuOCwgMC4yNSwgMSk7ZGlzcGxheTpub25lfVtkaXI9cnRsXSAubWF0LWZvcm0tZmllbGQtbGFiZWx7dHJhbnNmb3JtLW9yaWdpbjoxMDAlIDA7bGVmdDphdXRvO3JpZ2h0OjB9Lm1hdC1mb3JtLWZpZWxkLWVtcHR5Lm1hdC1mb3JtLWZpZWxkLWxhYmVsLC5tYXQtZm9ybS1maWVsZC1jYW4tZmxvYXQubWF0LWZvcm0tZmllbGQtc2hvdWxkLWZsb2F0IC5tYXQtZm9ybS1maWVsZC1sYWJlbHtkaXNwbGF5OmJsb2NrfS5tYXQtZm9ybS1maWVsZC1hdXRvZmlsbC1jb250cm9sOi13ZWJraXQtYXV0b2ZpbGwrLm1hdC1mb3JtLWZpZWxkLWxhYmVsLXdyYXBwZXIgLm1hdC1mb3JtLWZpZWxkLWxhYmVse2Rpc3BsYXk6bm9uZX0ubWF0LWZvcm0tZmllbGQtY2FuLWZsb2F0IC5tYXQtZm9ybS1maWVsZC1hdXRvZmlsbC1jb250cm9sOi13ZWJraXQtYXV0b2ZpbGwrLm1hdC1mb3JtLWZpZWxkLWxhYmVsLXdyYXBwZXIgLm1hdC1mb3JtLWZpZWxkLWxhYmVse2Rpc3BsYXk6YmxvY2s7dHJhbnNpdGlvbjpub25lfS5tYXQtaW5wdXQtc2VydmVyOmZvY3VzKy5tYXQtZm9ybS1maWVsZC1sYWJlbC13cmFwcGVyIC5tYXQtZm9ybS1maWVsZC1sYWJlbCwubWF0LWlucHV0LXNlcnZlcltwbGFjZWhvbGRlcl06bm90KDpwbGFjZWhvbGRlci1zaG93bikrLm1hdC1mb3JtLWZpZWxkLWxhYmVsLXdyYXBwZXIgLm1hdC1mb3JtLWZpZWxkLWxhYmVse2Rpc3BsYXk6bm9uZX0ubWF0LWZvcm0tZmllbGQtY2FuLWZsb2F0IC5tYXQtaW5wdXQtc2VydmVyOmZvY3VzKy5tYXQtZm9ybS1maWVsZC1sYWJlbC13cmFwcGVyIC5tYXQtZm9ybS1maWVsZC1sYWJlbCwubWF0LWZvcm0tZmllbGQtY2FuLWZsb2F0IC5tYXQtaW5wdXQtc2VydmVyW3BsYWNlaG9sZGVyXTpub3QoOnBsYWNlaG9sZGVyLXNob3duKSsubWF0LWZvcm0tZmllbGQtbGFiZWwtd3JhcHBlciAubWF0LWZvcm0tZmllbGQtbGFiZWx7ZGlzcGxheTpibG9ja30ubWF0LWZvcm0tZmllbGQtbGFiZWw6bm90KC5tYXQtZm9ybS1maWVsZC1lbXB0eSl7dHJhbnNpdGlvbjpub25lfS5tYXQtZm9ybS1maWVsZC11bmRlcmxpbmV7cG9zaXRpb246YWJzb2x1dGU7d2lkdGg6MTAwJTtwb2ludGVyLWV2ZW50czpub25lO3RyYW5zZm9ybTpzY2FsZTNkKDEsIDEuMDAwMSwgMSl9Lm1hdC1mb3JtLWZpZWxkLXJpcHBsZXtwb3NpdGlvbjphYnNvbHV0ZTtsZWZ0OjA7d2lkdGg6MTAwJTt0cmFuc2Zvcm0tb3JpZ2luOjUwJTt0cmFuc2Zvcm06c2NhbGVYKDAuNSk7b3BhY2l0eTowO3RyYW5zaXRpb246YmFja2dyb3VuZC1jb2xvciAzMDBtcyBjdWJpYy1iZXppZXIoMC41NSwgMCwgMC41NSwgMC4yKX0ubWF0LWZvcm0tZmllbGQubWF0LWZvY3VzZWQgLm1hdC1mb3JtLWZpZWxkLXJpcHBsZSwubWF0LWZvcm0tZmllbGQubWF0LWZvcm0tZmllbGQtaW52YWxpZCAubWF0LWZvcm0tZmllbGQtcmlwcGxle29wYWNpdHk6MTt0cmFuc2Zvcm06c2NhbGVYKDEpO3RyYW5zaXRpb246dHJhbnNmb3JtIDMwMG1zIGN1YmljLWJlemllcigwLjI1LCAwLjgsIDAuMjUsIDEpLG9wYWNpdHkgMTAwbXMgY3ViaWMtYmV6aWVyKDAuMjUsIDAuOCwgMC4yNSwgMSksYmFja2dyb3VuZC1jb2xvciAzMDBtcyBjdWJpYy1iZXppZXIoMC4yNSwgMC44LCAwLjI1LCAxKX0ubWF0LWZvcm0tZmllbGQtc3Vic2NyaXB0LXdyYXBwZXJ7cG9zaXRpb246YWJzb2x1dGU7Ym94LXNpemluZzpib3JkZXItYm94O3dpZHRoOjEwMCU7b3ZlcmZsb3c6aGlkZGVufS5tYXQtZm9ybS1maWVsZC1zdWJzY3JpcHQtd3JhcHBlciAubWF0LWljb24sLm1hdC1mb3JtLWZpZWxkLWxhYmVsLXdyYXBwZXIgLm1hdC1pY29ue3dpZHRoOjFlbTtoZWlnaHQ6MWVtO2ZvbnQtc2l6ZTppbmhlcml0O3ZlcnRpY2FsLWFsaWduOmJhc2VsaW5lfS5tYXQtZm9ybS1maWVsZC1oaW50LXdyYXBwZXJ7ZGlzcGxheTpmbGV4fS5tYXQtZm9ybS1maWVsZC1oaW50LXNwYWNlcntmbGV4OjEgMCAxZW19Lm1hdC1lcnJvcntkaXNwbGF5OmJsb2NrfS5tYXQtZm9ybS1maWVsZC1jb250cm9sLXdyYXBwZXJ7cG9zaXRpb246cmVsYXRpdmV9Lm1hdC1mb3JtLWZpZWxkLWhpbnQtZW5ke29yZGVyOjF9Lm1hdC1mb3JtLWZpZWxkLl9tYXQtYW5pbWF0aW9uLW5vb3BhYmxlIC5tYXQtZm9ybS1maWVsZC1sYWJlbCwubWF0LWZvcm0tZmllbGQuX21hdC1hbmltYXRpb24tbm9vcGFibGUgLm1hdC1mb3JtLWZpZWxkLXJpcHBsZXt0cmFuc2l0aW9uOm5vbmV9XG4iLCcubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1maWxsIC5tYXQtZm9ybS1maWVsZC1mbGV4e2JvcmRlci1yYWRpdXM6NHB4IDRweCAwIDA7cGFkZGluZzouNzVlbSAuNzVlbSAwIC43NWVtfS5jZGstaGlnaC1jb250cmFzdC1hY3RpdmUgLm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtZmlsbCAubWF0LWZvcm0tZmllbGQtZmxleHtvdXRsaW5lOnNvbGlkIDFweH0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1maWxsIC5tYXQtZm9ybS1maWVsZC11bmRlcmxpbmU6OmJlZm9yZXtjb250ZW50OiIiO2Rpc3BsYXk6YmxvY2s7cG9zaXRpb246YWJzb2x1dGU7Ym90dG9tOjA7aGVpZ2h0OjFweDt3aWR0aDoxMDAlfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWZpbGwgLm1hdC1mb3JtLWZpZWxkLXJpcHBsZXtib3R0b206MDtoZWlnaHQ6MnB4fS5jZGstaGlnaC1jb250cmFzdC1hY3RpdmUgLm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtZmlsbCAubWF0LWZvcm0tZmllbGQtcmlwcGxle2hlaWdodDowO2JvcmRlci10b3A6c29saWQgMnB4fS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWZpbGw6bm90KC5tYXQtZm9ybS1maWVsZC1kaXNhYmxlZCkgLm1hdC1mb3JtLWZpZWxkLWZsZXg6aG92ZXJ+Lm1hdC1mb3JtLWZpZWxkLXVuZGVybGluZSAubWF0LWZvcm0tZmllbGQtcmlwcGxle29wYWNpdHk6MTt0cmFuc2Zvcm06bm9uZTt0cmFuc2l0aW9uOm9wYWNpdHkgNjAwbXMgY3ViaWMtYmV6aWVyKDAuMjUsIDAuOCwgMC4yNSwgMSl9Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtZmlsbC5fbWF0LWFuaW1hdGlvbi1ub29wYWJsZTpub3QoLm1hdC1mb3JtLWZpZWxkLWRpc2FibGVkKSAubWF0LWZvcm0tZmllbGQtZmxleDpob3Zlcn4ubWF0LWZvcm0tZmllbGQtdW5kZXJsaW5lIC5tYXQtZm9ybS1maWVsZC1yaXBwbGV7dHJhbnNpdGlvbjpub25lfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWZpbGwgLm1hdC1mb3JtLWZpZWxkLXN1YnNjcmlwdC13cmFwcGVye3BhZGRpbmc6MCAxZW19XG4nLCcubWF0LWlucHV0LWVsZW1lbnR7Zm9udDppbmhlcml0O2JhY2tncm91bmQ6dHJhbnNwYXJlbnQ7Y29sb3I6Y3VycmVudENvbG9yO2JvcmRlcjpub25lO291dGxpbmU6bm9uZTtwYWRkaW5nOjA7bWFyZ2luOjA7d2lkdGg6MTAwJTttYXgtd2lkdGg6MTAwJTt2ZXJ0aWNhbC1hbGlnbjpib3R0b207dGV4dC1hbGlnbjppbmhlcml0fS5tYXQtaW5wdXQtZWxlbWVudDotbW96LXVpLWludmFsaWR7Ym94LXNoYWRvdzpub25lfS5tYXQtaW5wdXQtZWxlbWVudDo6LW1zLWNsZWFyLC5tYXQtaW5wdXQtZWxlbWVudDo6LW1zLXJldmVhbHtkaXNwbGF5Om5vbmV9Lm1hdC1pbnB1dC1lbGVtZW50LC5tYXQtaW5wdXQtZWxlbWVudDo6LXdlYmtpdC1zZWFyY2gtY2FuY2VsLWJ1dHRvbiwubWF0LWlucHV0LWVsZW1lbnQ6Oi13ZWJraXQtc2VhcmNoLWRlY29yYXRpb24sLm1hdC1pbnB1dC1lbGVtZW50Ojotd2Via2l0LXNlYXJjaC1yZXN1bHRzLWJ1dHRvbiwubWF0LWlucHV0LWVsZW1lbnQ6Oi13ZWJraXQtc2VhcmNoLXJlc3VsdHMtZGVjb3JhdGlvbnstd2Via2l0LWFwcGVhcmFuY2U6bm9uZX0ubWF0LWlucHV0LWVsZW1lbnQ6Oi13ZWJraXQtY29udGFjdHMtYXV0by1maWxsLWJ1dHRvbiwubWF0LWlucHV0LWVsZW1lbnQ6Oi13ZWJraXQtY2Fwcy1sb2NrLWluZGljYXRvciwubWF0LWlucHV0LWVsZW1lbnQ6Oi13ZWJraXQtY3JlZGVudGlhbHMtYXV0by1maWxsLWJ1dHRvbnt2aXNpYmlsaXR5OmhpZGRlbn0ubWF0LWlucHV0LWVsZW1lbnRbdHlwZT1kYXRlXSwubWF0LWlucHV0LWVsZW1lbnRbdHlwZT1kYXRldGltZV0sLm1hdC1pbnB1dC1lbGVtZW50W3R5cGU9ZGF0ZXRpbWUtbG9jYWxdLC5tYXQtaW5wdXQtZWxlbWVudFt0eXBlPW1vbnRoXSwubWF0LWlucHV0LWVsZW1lbnRbdHlwZT13ZWVrXSwubWF0LWlucHV0LWVsZW1lbnRbdHlwZT10aW1lXXtsaW5lLWhlaWdodDoxfS5tYXQtaW5wdXQtZWxlbWVudFt0eXBlPWRhdGVdOjphZnRlciwubWF0LWlucHV0LWVsZW1lbnRbdHlwZT1kYXRldGltZV06OmFmdGVyLC5tYXQtaW5wdXQtZWxlbWVudFt0eXBlPWRhdGV0aW1lLWxvY2FsXTo6YWZ0ZXIsLm1hdC1pbnB1dC1lbGVtZW50W3R5cGU9bW9udGhdOjphZnRlciwubWF0LWlucHV0LWVsZW1lbnRbdHlwZT13ZWVrXTo6YWZ0ZXIsLm1hdC1pbnB1dC1lbGVtZW50W3R5cGU9dGltZV06OmFmdGVye2NvbnRlbnQ6IiAiO3doaXRlLXNwYWNlOnByZTt3aWR0aDoxcHh9Lm1hdC1pbnB1dC1lbGVtZW50Ojotd2Via2l0LWlubmVyLXNwaW4tYnV0dG9uLC5tYXQtaW5wdXQtZWxlbWVudDo6LXdlYmtpdC1jYWxlbmRhci1waWNrZXItaW5kaWNhdG9yLC5tYXQtaW5wdXQtZWxlbWVudDo6LXdlYmtpdC1jbGVhci1idXR0b257Zm9udC1zaXplOi43NWVtfS5tYXQtaW5wdXQtZWxlbWVudDo6cGxhY2Vob2xkZXJ7LXdlYmtpdC11c2VyLXNlbGVjdDpub25lOy1tb3otdXNlci1zZWxlY3Q6bm9uZTstbXMtdXNlci1zZWxlY3Q6bm9uZTt1c2VyLXNlbGVjdDpub25lO3RyYW5zaXRpb246Y29sb3IgNDAwbXMgMTMzLjMzMzMzMzMzMzNtcyBjdWJpYy1iZXppZXIoMC4yNSwgMC44LCAwLjI1LCAxKX0ubWF0LWlucHV0LWVsZW1lbnQ6OnBsYWNlaG9sZGVyOi1tcy1pbnB1dC1wbGFjZWhvbGRlcnstbXMtdXNlci1zZWxlY3Q6dGV4dH0ubWF0LWlucHV0LWVsZW1lbnQ6Oi1tb3otcGxhY2Vob2xkZXJ7LXdlYmtpdC11c2VyLXNlbGVjdDpub25lOy1tb3otdXNlci1zZWxlY3Q6bm9uZTstbXMtdXNlci1zZWxlY3Q6bm9uZTt1c2VyLXNlbGVjdDpub25lO3RyYW5zaXRpb246Y29sb3IgNDAwbXMgMTMzLjMzMzMzMzMzMzNtcyBjdWJpYy1iZXppZXIoMC4yNSwgMC44LCAwLjI1LCAxKX0ubWF0LWlucHV0LWVsZW1lbnQ6Oi1tb3otcGxhY2Vob2xkZXI6LW1zLWlucHV0LXBsYWNlaG9sZGVyey1tcy11c2VyLXNlbGVjdDp0ZXh0fS5tYXQtaW5wdXQtZWxlbWVudDo6LXdlYmtpdC1pbnB1dC1wbGFjZWhvbGRlcnstd2Via2l0LXVzZXItc2VsZWN0Om5vbmU7LW1vei11c2VyLXNlbGVjdDpub25lOy1tcy11c2VyLXNlbGVjdDpub25lO3VzZXItc2VsZWN0Om5vbmU7dHJhbnNpdGlvbjpjb2xvciA0MDBtcyAxMzMuMzMzMzMzMzMzM21zIGN1YmljLWJlemllcigwLjI1LCAwLjgsIDAuMjUsIDEpfS5tYXQtaW5wdXQtZWxlbWVudDo6LXdlYmtpdC1pbnB1dC1wbGFjZWhvbGRlcjotbXMtaW5wdXQtcGxhY2Vob2xkZXJ7LW1zLXVzZXItc2VsZWN0OnRleHR9Lm1hdC1pbnB1dC1lbGVtZW50Oi1tcy1pbnB1dC1wbGFjZWhvbGRlcnstd2Via2l0LXVzZXItc2VsZWN0Om5vbmU7LW1vei11c2VyLXNlbGVjdDpub25lOy1tcy11c2VyLXNlbGVjdDpub25lO3VzZXItc2VsZWN0Om5vbmU7dHJhbnNpdGlvbjpjb2xvciA0MDBtcyAxMzMuMzMzMzMzMzMzM21zIGN1YmljLWJlemllcigwLjI1LCAwLjgsIDAuMjUsIDEpfS5tYXQtaW5wdXQtZWxlbWVudDotbXMtaW5wdXQtcGxhY2Vob2xkZXI6LW1zLWlucHV0LXBsYWNlaG9sZGVyey1tcy11c2VyLXNlbGVjdDp0ZXh0fS5tYXQtZm9ybS1maWVsZC1oaWRlLXBsYWNlaG9sZGVyIC5tYXQtaW5wdXQtZWxlbWVudDo6cGxhY2Vob2xkZXJ7Y29sb3I6dHJhbnNwYXJlbnQgIWltcG9ydGFudDstd2Via2l0LXRleHQtZmlsbC1jb2xvcjp0cmFuc3BhcmVudDt0cmFuc2l0aW9uOm5vbmV9Lm1hdC1mb3JtLWZpZWxkLWhpZGUtcGxhY2Vob2xkZXIgLm1hdC1pbnB1dC1lbGVtZW50OjotbW96LXBsYWNlaG9sZGVye2NvbG9yOnRyYW5zcGFyZW50ICFpbXBvcnRhbnQ7LXdlYmtpdC10ZXh0LWZpbGwtY29sb3I6dHJhbnNwYXJlbnQ7dHJhbnNpdGlvbjpub25lfS5tYXQtZm9ybS1maWVsZC1oaWRlLXBsYWNlaG9sZGVyIC5tYXQtaW5wdXQtZWxlbWVudDo6LXdlYmtpdC1pbnB1dC1wbGFjZWhvbGRlcntjb2xvcjp0cmFuc3BhcmVudCAhaW1wb3J0YW50Oy13ZWJraXQtdGV4dC1maWxsLWNvbG9yOnRyYW5zcGFyZW50O3RyYW5zaXRpb246bm9uZX0ubWF0LWZvcm0tZmllbGQtaGlkZS1wbGFjZWhvbGRlciAubWF0LWlucHV0LWVsZW1lbnQ6LW1zLWlucHV0LXBsYWNlaG9sZGVye2NvbG9yOnRyYW5zcGFyZW50ICFpbXBvcnRhbnQ7LXdlYmtpdC10ZXh0LWZpbGwtY29sb3I6dHJhbnNwYXJlbnQ7dHJhbnNpdGlvbjpub25lfXRleHRhcmVhLm1hdC1pbnB1dC1lbGVtZW50e3Jlc2l6ZTp2ZXJ0aWNhbDtvdmVyZmxvdzphdXRvfXRleHRhcmVhLm1hdC1pbnB1dC1lbGVtZW50LmNkay10ZXh0YXJlYS1hdXRvc2l6ZXtyZXNpemU6bm9uZX10ZXh0YXJlYS5tYXQtaW5wdXQtZWxlbWVudHtwYWRkaW5nOjJweCAwO21hcmdpbjotMnB4IDB9c2VsZWN0Lm1hdC1pbnB1dC1lbGVtZW50ey1tb3otYXBwZWFyYW5jZTpub25lOy13ZWJraXQtYXBwZWFyYW5jZTpub25lO3Bvc2l0aW9uOnJlbGF0aXZlO2JhY2tncm91bmQtY29sb3I6dHJhbnNwYXJlbnQ7ZGlzcGxheTppbmxpbmUtZmxleDtib3gtc2l6aW5nOmJvcmRlci1ib3g7cGFkZGluZy10b3A6MWVtO3RvcDotMWVtO21hcmdpbi1ib3R0b206LTFlbX1zZWxlY3QubWF0LWlucHV0LWVsZW1lbnQ6Oi1tcy1leHBhbmR7ZGlzcGxheTpub25lfXNlbGVjdC5tYXQtaW5wdXQtZWxlbWVudDo6LW1vei1mb2N1cy1pbm5lcntib3JkZXI6MH1zZWxlY3QubWF0LWlucHV0LWVsZW1lbnQ6bm90KDpkaXNhYmxlZCl7Y3Vyc29yOnBvaW50ZXJ9c2VsZWN0Lm1hdC1pbnB1dC1lbGVtZW50OjotbXMtdmFsdWV7Y29sb3I6aW5oZXJpdDtiYWNrZ3JvdW5kOm5vbmV9Lm1hdC1mb2N1c2VkIC5jZGstaGlnaC1jb250cmFzdC1hY3RpdmUgc2VsZWN0Lm1hdC1pbnB1dC1lbGVtZW50OjotbXMtdmFsdWV7Y29sb3I6aW5oZXJpdH0ubWF0LWZvcm0tZmllbGQtdHlwZS1tYXQtbmF0aXZlLXNlbGVjdCAubWF0LWZvcm0tZmllbGQtaW5maXg6OmFmdGVye2NvbnRlbnQ6IiI7d2lkdGg6MDtoZWlnaHQ6MDtib3JkZXItbGVmdDo1cHggc29saWQgdHJhbnNwYXJlbnQ7Ym9yZGVyLXJpZ2h0OjVweCBzb2xpZCB0cmFuc3BhcmVudDtib3JkZXItdG9wOjVweCBzb2xpZDtwb3NpdGlvbjphYnNvbHV0ZTt0b3A6NTAlO3JpZ2h0OjA7bWFyZ2luLXRvcDotMi41cHg7cG9pbnRlci1ldmVudHM6bm9uZX1bZGlyPXJ0bF0gLm1hdC1mb3JtLWZpZWxkLXR5cGUtbWF0LW5hdGl2ZS1zZWxlY3QgLm1hdC1mb3JtLWZpZWxkLWluZml4OjphZnRlcntyaWdodDphdXRvO2xlZnQ6MH0ubWF0LWZvcm0tZmllbGQtdHlwZS1tYXQtbmF0aXZlLXNlbGVjdCAubWF0LWlucHV0LWVsZW1lbnR7cGFkZGluZy1yaWdodDoxNXB4fVtkaXI9cnRsXSAubWF0LWZvcm0tZmllbGQtdHlwZS1tYXQtbmF0aXZlLXNlbGVjdCAubWF0LWlucHV0LWVsZW1lbnR7cGFkZGluZy1yaWdodDowO3BhZGRpbmctbGVmdDoxNXB4fS5tYXQtZm9ybS1maWVsZC10eXBlLW1hdC1uYXRpdmUtc2VsZWN0IC5tYXQtZm9ybS1maWVsZC1sYWJlbC13cmFwcGVye21heC13aWR0aDpjYWxjKDEwMCUgLSAxMHB4KX0ubWF0LWZvcm0tZmllbGQtdHlwZS1tYXQtbmF0aXZlLXNlbGVjdC5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLW91dGxpbmUgLm1hdC1mb3JtLWZpZWxkLWluZml4OjphZnRlcnttYXJnaW4tdG9wOi01cHh9Lm1hdC1mb3JtLWZpZWxkLXR5cGUtbWF0LW5hdGl2ZS1zZWxlY3QubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1maWxsIC5tYXQtZm9ybS1maWVsZC1pbmZpeDo6YWZ0ZXJ7bWFyZ2luLXRvcDotMTBweH1cbicsIi5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWxlZ2FjeSAubWF0LWZvcm0tZmllbGQtbGFiZWx7dHJhbnNmb3JtOnBlcnNwZWN0aXZlKDEwMHB4KTstbXMtdHJhbnNmb3JtOm5vbmV9Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtbGVnYWN5IC5tYXQtZm9ybS1maWVsZC1wcmVmaXggLm1hdC1pY29uLC5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWxlZ2FjeSAubWF0LWZvcm0tZmllbGQtc3VmZml4IC5tYXQtaWNvbnt3aWR0aDoxZW19Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtbGVnYWN5IC5tYXQtZm9ybS1maWVsZC1wcmVmaXggLm1hdC1pY29uLWJ1dHRvbiwubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1sZWdhY3kgLm1hdC1mb3JtLWZpZWxkLXN1ZmZpeCAubWF0LWljb24tYnV0dG9ue2ZvbnQ6aW5oZXJpdDt2ZXJ0aWNhbC1hbGlnbjpiYXNlbGluZX0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1sZWdhY3kgLm1hdC1mb3JtLWZpZWxkLXByZWZpeCAubWF0LWljb24tYnV0dG9uIC5tYXQtaWNvbiwubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1sZWdhY3kgLm1hdC1mb3JtLWZpZWxkLXN1ZmZpeCAubWF0LWljb24tYnV0dG9uIC5tYXQtaWNvbntmb250LXNpemU6aW5oZXJpdH0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1sZWdhY3kgLm1hdC1mb3JtLWZpZWxkLXVuZGVybGluZXtoZWlnaHQ6MXB4fS5jZGstaGlnaC1jb250cmFzdC1hY3RpdmUgLm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtbGVnYWN5IC5tYXQtZm9ybS1maWVsZC11bmRlcmxpbmV7aGVpZ2h0OjA7Ym9yZGVyLXRvcDpzb2xpZCAxcHh9Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtbGVnYWN5IC5tYXQtZm9ybS1maWVsZC1yaXBwbGV7dG9wOjA7aGVpZ2h0OjJweDtvdmVyZmxvdzpoaWRkZW59LmNkay1oaWdoLWNvbnRyYXN0LWFjdGl2ZSAubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1sZWdhY3kgLm1hdC1mb3JtLWZpZWxkLXJpcHBsZXtoZWlnaHQ6MDtib3JkZXItdG9wOnNvbGlkIDJweH0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1sZWdhY3kubWF0LWZvcm0tZmllbGQtZGlzYWJsZWQgLm1hdC1mb3JtLWZpZWxkLXVuZGVybGluZXtiYWNrZ3JvdW5kLXBvc2l0aW9uOjA7YmFja2dyb3VuZC1jb2xvcjp0cmFuc3BhcmVudH0uY2RrLWhpZ2gtY29udHJhc3QtYWN0aXZlIC5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWxlZ2FjeS5tYXQtZm9ybS1maWVsZC1kaXNhYmxlZCAubWF0LWZvcm0tZmllbGQtdW5kZXJsaW5le2JvcmRlci10b3Atc3R5bGU6ZG90dGVkO2JvcmRlci10b3Atd2lkdGg6MnB4fS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWxlZ2FjeS5tYXQtZm9ybS1maWVsZC1pbnZhbGlkOm5vdCgubWF0LWZvY3VzZWQpIC5tYXQtZm9ybS1maWVsZC1yaXBwbGV7aGVpZ2h0OjFweH1cbiIsIi5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLW91dGxpbmUgLm1hdC1mb3JtLWZpZWxkLXdyYXBwZXJ7bWFyZ2luOi4yNWVtIDB9Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2Utb3V0bGluZSAubWF0LWZvcm0tZmllbGQtZmxleHtwYWRkaW5nOjAgLjc1ZW0gMCAuNzVlbTttYXJnaW4tdG9wOi0wLjI1ZW07cG9zaXRpb246cmVsYXRpdmV9Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2Utb3V0bGluZSAubWF0LWZvcm0tZmllbGQtcHJlZml4LC5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLW91dGxpbmUgLm1hdC1mb3JtLWZpZWxkLXN1ZmZpeHt0b3A6LjI1ZW19Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2Utb3V0bGluZSAubWF0LWZvcm0tZmllbGQtb3V0bGluZXtkaXNwbGF5OmZsZXg7cG9zaXRpb246YWJzb2x1dGU7dG9wOi4yNWVtO2xlZnQ6MDtyaWdodDowO2JvdHRvbTowO3BvaW50ZXItZXZlbnRzOm5vbmV9Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2Utb3V0bGluZSAubWF0LWZvcm0tZmllbGQtb3V0bGluZS1zdGFydCwubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1vdXRsaW5lIC5tYXQtZm9ybS1maWVsZC1vdXRsaW5lLWVuZHtib3JkZXI6MXB4IHNvbGlkIGN1cnJlbnRDb2xvcjttaW4td2lkdGg6NXB4fS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLW91dGxpbmUgLm1hdC1mb3JtLWZpZWxkLW91dGxpbmUtc3RhcnR7Ym9yZGVyLXJhZGl1czo1cHggMCAwIDVweDtib3JkZXItcmlnaHQtc3R5bGU6bm9uZX1bZGlyPXJ0bF0gLm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2Utb3V0bGluZSAubWF0LWZvcm0tZmllbGQtb3V0bGluZS1zdGFydHtib3JkZXItcmlnaHQtc3R5bGU6c29saWQ7Ym9yZGVyLWxlZnQtc3R5bGU6bm9uZTtib3JkZXItcmFkaXVzOjAgNXB4IDVweCAwfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLW91dGxpbmUgLm1hdC1mb3JtLWZpZWxkLW91dGxpbmUtZW5ke2JvcmRlci1yYWRpdXM6MCA1cHggNXB4IDA7Ym9yZGVyLWxlZnQtc3R5bGU6bm9uZTtmbGV4LWdyb3c6MX1bZGlyPXJ0bF0gLm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2Utb3V0bGluZSAubWF0LWZvcm0tZmllbGQtb3V0bGluZS1lbmR7Ym9yZGVyLWxlZnQtc3R5bGU6c29saWQ7Ym9yZGVyLXJpZ2h0LXN0eWxlOm5vbmU7Ym9yZGVyLXJhZGl1czo1cHggMCAwIDVweH0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1vdXRsaW5lIC5tYXQtZm9ybS1maWVsZC1vdXRsaW5lLWdhcHtib3JkZXItcmFkaXVzOi4wMDAwMDFweDtib3JkZXI6MXB4IHNvbGlkIGN1cnJlbnRDb2xvcjtib3JkZXItbGVmdC1zdHlsZTpub25lO2JvcmRlci1yaWdodC1zdHlsZTpub25lfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLW91dGxpbmUubWF0LWZvcm0tZmllbGQtY2FuLWZsb2F0Lm1hdC1mb3JtLWZpZWxkLXNob3VsZC1mbG9hdCAubWF0LWZvcm0tZmllbGQtb3V0bGluZS1nYXB7Ym9yZGVyLXRvcC1jb2xvcjp0cmFuc3BhcmVudH0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1vdXRsaW5lIC5tYXQtZm9ybS1maWVsZC1vdXRsaW5lLXRoaWNre29wYWNpdHk6MH0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1vdXRsaW5lIC5tYXQtZm9ybS1maWVsZC1vdXRsaW5lLXRoaWNrIC5tYXQtZm9ybS1maWVsZC1vdXRsaW5lLXN0YXJ0LC5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLW91dGxpbmUgLm1hdC1mb3JtLWZpZWxkLW91dGxpbmUtdGhpY2sgLm1hdC1mb3JtLWZpZWxkLW91dGxpbmUtZW5kLC5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLW91dGxpbmUgLm1hdC1mb3JtLWZpZWxkLW91dGxpbmUtdGhpY2sgLm1hdC1mb3JtLWZpZWxkLW91dGxpbmUtZ2Fwe2JvcmRlci13aWR0aDoycHh9Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2Utb3V0bGluZS5tYXQtZm9jdXNlZCAubWF0LWZvcm0tZmllbGQtb3V0bGluZSwubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1vdXRsaW5lLm1hdC1mb3JtLWZpZWxkLWludmFsaWQgLm1hdC1mb3JtLWZpZWxkLW91dGxpbmV7b3BhY2l0eTowO3RyYW5zaXRpb246b3BhY2l0eSAxMDBtcyBjdWJpYy1iZXppZXIoMC4yNSwgMC44LCAwLjI1LCAxKX0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1vdXRsaW5lLm1hdC1mb2N1c2VkIC5tYXQtZm9ybS1maWVsZC1vdXRsaW5lLXRoaWNrLC5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLW91dGxpbmUubWF0LWZvcm0tZmllbGQtaW52YWxpZCAubWF0LWZvcm0tZmllbGQtb3V0bGluZS10aGlja3tvcGFjaXR5OjF9Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2Utb3V0bGluZTpub3QoLm1hdC1mb3JtLWZpZWxkLWRpc2FibGVkKSAubWF0LWZvcm0tZmllbGQtZmxleDpob3ZlciAubWF0LWZvcm0tZmllbGQtb3V0bGluZXtvcGFjaXR5OjA7dHJhbnNpdGlvbjpvcGFjaXR5IDYwMG1zIGN1YmljLWJlemllcigwLjI1LCAwLjgsIDAuMjUsIDEpfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLW91dGxpbmU6bm90KC5tYXQtZm9ybS1maWVsZC1kaXNhYmxlZCkgLm1hdC1mb3JtLWZpZWxkLWZsZXg6aG92ZXIgLm1hdC1mb3JtLWZpZWxkLW91dGxpbmUtdGhpY2t7b3BhY2l0eToxfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLW91dGxpbmUgLm1hdC1mb3JtLWZpZWxkLXN1YnNjcmlwdC13cmFwcGVye3BhZGRpbmc6MCAxZW19Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2Utb3V0bGluZS5fbWF0LWFuaW1hdGlvbi1ub29wYWJsZTpub3QoLm1hdC1mb3JtLWZpZWxkLWRpc2FibGVkKSAubWF0LWZvcm0tZmllbGQtZmxleDpob3Zlcn4ubWF0LWZvcm0tZmllbGQtb3V0bGluZSwubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1vdXRsaW5lLl9tYXQtYW5pbWF0aW9uLW5vb3BhYmxlIC5tYXQtZm9ybS1maWVsZC1vdXRsaW5lLC5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLW91dGxpbmUuX21hdC1hbmltYXRpb24tbm9vcGFibGUgLm1hdC1mb3JtLWZpZWxkLW91dGxpbmUtc3RhcnQsLm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2Utb3V0bGluZS5fbWF0LWFuaW1hdGlvbi1ub29wYWJsZSAubWF0LWZvcm0tZmllbGQtb3V0bGluZS1lbmQsLm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2Utb3V0bGluZS5fbWF0LWFuaW1hdGlvbi1ub29wYWJsZSAubWF0LWZvcm0tZmllbGQtb3V0bGluZS1nYXB7dHJhbnNpdGlvbjpub25lfVxuIiwiLm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2Utc3RhbmRhcmQgLm1hdC1mb3JtLWZpZWxkLWZsZXh7cGFkZGluZy10b3A6Ljc1ZW19Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2Utc3RhbmRhcmQgLm1hdC1mb3JtLWZpZWxkLXVuZGVybGluZXtoZWlnaHQ6MXB4fS5jZGstaGlnaC1jb250cmFzdC1hY3RpdmUgLm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2Utc3RhbmRhcmQgLm1hdC1mb3JtLWZpZWxkLXVuZGVybGluZXtoZWlnaHQ6MDtib3JkZXItdG9wOnNvbGlkIDFweH0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1zdGFuZGFyZCAubWF0LWZvcm0tZmllbGQtcmlwcGxle2JvdHRvbTowO2hlaWdodDoycHh9LmNkay1oaWdoLWNvbnRyYXN0LWFjdGl2ZSAubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1zdGFuZGFyZCAubWF0LWZvcm0tZmllbGQtcmlwcGxle2hlaWdodDowO2JvcmRlci10b3A6MnB4fS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLXN0YW5kYXJkLm1hdC1mb3JtLWZpZWxkLWRpc2FibGVkIC5tYXQtZm9ybS1maWVsZC11bmRlcmxpbmV7YmFja2dyb3VuZC1wb3NpdGlvbjowO2JhY2tncm91bmQtY29sb3I6dHJhbnNwYXJlbnR9LmNkay1oaWdoLWNvbnRyYXN0LWFjdGl2ZSAubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1zdGFuZGFyZC5tYXQtZm9ybS1maWVsZC1kaXNhYmxlZCAubWF0LWZvcm0tZmllbGQtdW5kZXJsaW5le2JvcmRlci10b3Atc3R5bGU6ZG90dGVkO2JvcmRlci10b3Atd2lkdGg6MnB4fS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLXN0YW5kYXJkOm5vdCgubWF0LWZvcm0tZmllbGQtZGlzYWJsZWQpIC5tYXQtZm9ybS1maWVsZC1mbGV4OmhvdmVyfi5tYXQtZm9ybS1maWVsZC11bmRlcmxpbmUgLm1hdC1mb3JtLWZpZWxkLXJpcHBsZXtvcGFjaXR5OjE7dHJhbnNmb3JtOm5vbmU7dHJhbnNpdGlvbjpvcGFjaXR5IDYwMG1zIGN1YmljLWJlemllcigwLjI1LCAwLjgsIDAuMjUsIDEpfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLXN0YW5kYXJkLl9tYXQtYW5pbWF0aW9uLW5vb3BhYmxlOm5vdCgubWF0LWZvcm0tZmllbGQtZGlzYWJsZWQpIC5tYXQtZm9ybS1maWVsZC1mbGV4OmhvdmVyfi5tYXQtZm9ybS1maWVsZC11bmRlcmxpbmUgLm1hdC1mb3JtLWZpZWxkLXJpcHBsZXt0cmFuc2l0aW9uOm5vbmV9XG4iXSxlbmNhcHN1bGF0aW9uOjIsZGF0YTp7YW5pbWF0aW9uOltlRi50cmFuc2l0aW9uTWVzc2FnZXNdfSxjaGFuZ2VEZXRlY3Rpb246MH0pLF9GLmN0b3JQYXJhbWV0ZXJzPSgpPT5be3R5cGU6eHV9LHt0eXBlOlZtfSx7dHlwZTp2b2lkIDAsZGVjb3JhdG9yczpbe3R5cGU6TmV9LHt0eXBlOkllLGFyZ3M6W0pFXX1dfSx7dHlwZTpVUyxkZWNvcmF0b3JzOlt7dHlwZTpOZX1dfSx7dHlwZTp2b2lkIDAsZGVjb3JhdG9yczpbe3R5cGU6TmV9LHt0eXBlOkllLGFyZ3M6W2ZGXX1dfSx7dHlwZTpTd30se3R5cGU6Sl99LHt0eXBlOlN0cmluZyxkZWNvcmF0b3JzOlt7dHlwZTpOZX0se3R5cGU6SWUsYXJnczpbZGtdfV19XSxfRi5wcm9wRGVjb3JhdG9ycz17YXBwZWFyYW5jZTpbe3R5cGU6Zl99XSxoaWRlUmVxdWlyZWRNYXJrZXI6W3t0eXBlOmZffV0saGludExhYmVsOlt7dHlwZTpmX31dLGZsb2F0TGFiZWw6W3t0eXBlOmZffV0sdW5kZXJsaW5lUmVmOlt7dHlwZTpYZCxhcmdzOlsidW5kZXJsaW5lIl19XSxfY29ubmVjdGlvbkNvbnRhaW5lclJlZjpbe3R5cGU6WGQsYXJnczpbImNvbm5lY3Rpb25Db250YWluZXIiLHtzdGF0aWM6ITB9XX1dLF9pbnB1dENvbnRhaW5lclJlZjpbe3R5cGU6WGQsYXJnczpbImlucHV0Q29udGFpbmVyIl19XSxfbGFiZWw6W3t0eXBlOlhkLGFyZ3M6WyJsYWJlbCJdfV0sX2NvbnRyb2xOb25TdGF0aWM6W3t0eXBlOlpkLGFyZ3M6W2FGXX1dLF9jb250cm9sU3RhdGljOlt7dHlwZTpaZCxhcmdzOlthRix7c3RhdGljOiEwfV19XSxfbGFiZWxDaGlsZE5vblN0YXRpYzpbe3R5cGU6WmQsYXJnczpbc0ZdfV0sX2xhYmVsQ2hpbGRTdGF0aWM6W3t0eXBlOlpkLGFyZ3M6W3NGLHtzdGF0aWM6ITB9XX1dLF9wbGFjZWhvbGRlckNoaWxkOlt7dHlwZTpaZCxhcmdzOltsRl19XSxfZXJyb3JDaGlsZHJlbjpbe3R5cGU6cWQsYXJnczpbdEYse2Rlc2NlbmRhbnRzOiEwfV19XSxfaGludENoaWxkcmVuOlt7dHlwZTpxZCxhcmdzOltpRix7ZGVzY2VuZGFudHM6ITB9XX1dLF9wcmVmaXhDaGlsZHJlbjpbe3R5cGU6cWQsYXJnczpbbUYse2Rlc2NlbmRhbnRzOiEwfV19XSxfc3VmZml4Q2hpbGRyZW46W3t0eXBlOnFkLGFyZ3M6W2dGLHtkZXNjZW5kYW50czohMH1dfV19OwovKioKICAgICAqIEBsaWNlbnNlCiAgICAgKiBDb3B5cmlnaHQgR29vZ2xlIExMQyBBbGwgUmlnaHRzIFJlc2VydmVkLgogICAgICoKICAgICAqIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGFuIE1JVC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCiAgICAgKiBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlIGF0IGh0dHBzOi8vYW5ndWxhci5pby9saWNlbnNlCiAgICAgKi8KY2xhc3MgQ0Z7fUNGLsm1bW9kPXhvKHt0eXBlOkNGfSksQ0YuybVpbmo9R2Uoe2ZhY3Rvcnk6ZnVuY3Rpb24gdChuKXtyZXR1cm4gbmV3KG58fENGKX0saW1wb3J0czpbW1BPLHRFLHRTXSx0RV19KSwoInVuZGVmaW5lZCI9PXR5cGVvZiBuZ0ppdE1vZGV8fG5nSml0TW9kZSkmJnlvKENGLHtkZWNsYXJhdGlvbnM6ZnVuY3Rpb24oKXtyZXR1cm5bbkYsX0YsY0Ysc0YsbEYsZEYscEZdfSxpbXBvcnRzOmZ1bmN0aW9uKCl7cmV0dXJuW1BPLHRFLHRTXX0sZXhwb3J0czpmdW5jdGlvbigpe3JldHVyblt0RSxuRixfRixjRixzRixsRixkRixwRl19fSk7Ci8qKgogICAgICogQGxpY2Vuc2UgQW5ndWxhciB2MTAuMi40CiAgICAgKiAoYykgMjAxMC0yMDIwIEdvb2dsZSBMTEMuIGh0dHBzOi8vYW5ndWxhci5pby8KICAgICAqIExpY2Vuc2U6IE1JVAogICAgICovCmNvbnN0IE1GPW5ldyBGYSgiTmdWYWx1ZUFjY2Vzc29yIiksT0Y9e3Byb3ZpZGU6TUYsdXNlRXhpc3Rpbmc6YWEoKCgpPT5QRikpLG11bHRpOiEwfTsKLyoqCiAgICAgKiBAbGljZW5zZQogICAgICogQ29weXJpZ2h0IEdvb2dsZSBMTEMgQWxsIFJpZ2h0cyBSZXNlcnZlZC4KICAgICAqCiAgICAgKiBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhbiBNSVQtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQogICAgICogZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZSBhdCBodHRwczovL2FuZ3VsYXIuaW8vbGljZW5zZQogICAgICovY2xhc3MgUEZ7Y29uc3RydWN0b3IodCxuKXt0aGlzLl9yZW5kZXJlcj10LHRoaXMuX2VsZW1lbnRSZWY9bix0aGlzLm9uQ2hhbmdlPXQ9Pnt9LHRoaXMub25Ub3VjaGVkPSgpPT57fX13cml0ZVZhbHVlKHQpe3RoaXMuX3JlbmRlcmVyLnNldFByb3BlcnR5KHRoaXMuX2VsZW1lbnRSZWYubmF0aXZlRWxlbWVudCwiY2hlY2tlZCIsdCl9cmVnaXN0ZXJPbkNoYW5nZSh0KXt0aGlzLm9uQ2hhbmdlPXR9cmVnaXN0ZXJPblRvdWNoZWQodCl7dGhpcy5vblRvdWNoZWQ9dH1zZXREaXNhYmxlZFN0YXRlKHQpe3RoaXMuX3JlbmRlcmVyLnNldFByb3BlcnR5KHRoaXMuX2VsZW1lbnRSZWYubmF0aXZlRWxlbWVudCwiZGlzYWJsZWQiLHQpfX1QRi7JtWZhYz1mdW5jdGlvbiB0KG4pe3JldHVybiBuZXcobnx8UEYpKFpnKFN1KSxaZyh4dSkpfSxQRi7JtWRpcj12byh7dHlwZTpQRixzZWxlY3RvcnM6W1siaW5wdXQiLCJ0eXBlIiwiY2hlY2tib3giLCJmb3JtQ29udHJvbE5hbWUiLCIiXSxbImlucHV0IiwidHlwZSIsImNoZWNrYm94IiwiZm9ybUNvbnRyb2wiLCIiXSxbImlucHV0IiwidHlwZSIsImNoZWNrYm94IiwibmdNb2RlbCIsIiJdXSxob3N0QmluZGluZ3M6ZnVuY3Rpb24gdChuLGUpezEmbiYmY3AoImNoYW5nZSIsKGZ1bmN0aW9uIHQobil7cmV0dXJuIGUub25DaGFuZ2Uobi50YXJnZXQuY2hlY2tlZCl9KSkoImJsdXIiLChmdW5jdGlvbiB0KCl7cmV0dXJuIGUub25Ub3VjaGVkKCl9KSl9LGZlYXR1cmVzOltNdShbT0ZdKV19KSxQRi5jdG9yUGFyYW1ldGVycz0oKT0+W3t0eXBlOlN1fSx7dHlwZTp4dX1dCi8qKgogICAgICogQGxpY2Vuc2UKICAgICAqIENvcHlyaWdodCBHb29nbGUgTExDIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCiAgICAgKgogICAgICogVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYW4gTUlULXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKICAgICAqIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUgYXQgaHR0cHM6Ly9hbmd1bGFyLmlvL2xpY2Vuc2UKICAgICAqLztjb25zdCB4Rj17cHJvdmlkZTpNRix1c2VFeGlzdGluZzphYSgoKCk9PmtGKSksbXVsdGk6ITB9LHlGPW5ldyBGYSgiQ29tcG9zaXRpb25FdmVudE1vZGUiKTtjbGFzcyBrRntjb25zdHJ1Y3Rvcih0LG4sZSl7dGhpcy5fcmVuZGVyZXI9dCx0aGlzLl9lbGVtZW50UmVmPW4sdGhpcy5fY29tcG9zaXRpb25Nb2RlPWUsdGhpcy5vbkNoYW5nZT10PT57fSx0aGlzLm9uVG91Y2hlZD0oKT0+e30sdGhpcy5fY29tcG9zaW5nPSExLG51bGw9PXRoaXMuX2NvbXBvc2l0aW9uTW9kZSYmKHRoaXMuX2NvbXBvc2l0aW9uTW9kZT0hKGZ1bmN0aW9uIGEoKXtjb25zdCB0PUFDKCk/QUMoKS5nZXRVc2VyQWdlbnQoKToiIjtyZXR1cm4vYW5kcm9pZCAoXGQrKS8udGVzdCh0LnRvTG93ZXJDYXNlKCkpfSkoKSl9d3JpdGVWYWx1ZSh0KXt0aGlzLl9yZW5kZXJlci5zZXRQcm9wZXJ0eSh0aGlzLl9lbGVtZW50UmVmLm5hdGl2ZUVsZW1lbnQsInZhbHVlIixudWxsPT10PyIiOnQpfXJlZ2lzdGVyT25DaGFuZ2UodCl7dGhpcy5vbkNoYW5nZT10fXJlZ2lzdGVyT25Ub3VjaGVkKHQpe3RoaXMub25Ub3VjaGVkPXR9c2V0RGlzYWJsZWRTdGF0ZSh0KXt0aGlzLl9yZW5kZXJlci5zZXRQcm9wZXJ0eSh0aGlzLl9lbGVtZW50UmVmLm5hdGl2ZUVsZW1lbnQsImRpc2FibGVkIix0KX1faGFuZGxlSW5wdXQodCl7KCF0aGlzLl9jb21wb3NpdGlvbk1vZGV8fHRoaXMuX2NvbXBvc2l0aW9uTW9kZSYmIXRoaXMuX2NvbXBvc2luZykmJnRoaXMub25DaGFuZ2UodCl9X2NvbXBvc2l0aW9uU3RhcnQoKXt0aGlzLl9jb21wb3Npbmc9ITB9X2NvbXBvc2l0aW9uRW5kKHQpe3RoaXMuX2NvbXBvc2luZz0hMSx0aGlzLl9jb21wb3NpdGlvbk1vZGUmJnRoaXMub25DaGFuZ2UodCl9fWtGLsm1ZmFjPWZ1bmN0aW9uIHQobil7cmV0dXJuIG5ldyhufHxrRikoWmcoU3UpLFpnKHh1KSxaZyh5Riw4KSl9LGtGLsm1ZGlyPXZvKHt0eXBlOmtGLHNlbGVjdG9yczpbWyJpbnB1dCIsImZvcm1Db250cm9sTmFtZSIsIiIsMywidHlwZSIsImNoZWNrYm94Il0sWyJ0ZXh0YXJlYSIsImZvcm1Db250cm9sTmFtZSIsIiJdLFsiaW5wdXQiLCJmb3JtQ29udHJvbCIsIiIsMywidHlwZSIsImNoZWNrYm94Il0sWyJ0ZXh0YXJlYSIsImZvcm1Db250cm9sIiwiIl0sWyJpbnB1dCIsIm5nTW9kZWwiLCIiLDMsInR5cGUiLCJjaGVja2JveCJdLFsidGV4dGFyZWEiLCJuZ01vZGVsIiwiIl0sWyIiLCJuZ0RlZmF1bHRDb250cm9sIiwiIl1dLGhvc3RCaW5kaW5nczpmdW5jdGlvbiB0KG4sZSl7MSZuJiZjcCgiaW5wdXQiLChmdW5jdGlvbiB0KG4pe3JldHVybiBlLl9oYW5kbGVJbnB1dChuLnRhcmdldC52YWx1ZSl9KSkoImJsdXIiLChmdW5jdGlvbiB0KCl7cmV0dXJuIGUub25Ub3VjaGVkKCl9KSkoImNvbXBvc2l0aW9uc3RhcnQiLChmdW5jdGlvbiB0KCl7cmV0dXJuIGUuX2NvbXBvc2l0aW9uU3RhcnQoKX0pKSgiY29tcG9zaXRpb25lbmQiLChmdW5jdGlvbiB0KG4pe3JldHVybiBlLl9jb21wb3NpdGlvbkVuZChuLnRhcmdldC52YWx1ZSl9KSl9LGZlYXR1cmVzOltNdShbeEZdKV19KSxrRi5jdG9yUGFyYW1ldGVycz0oKT0+W3t0eXBlOlN1fSx7dHlwZTp4dX0se3R5cGU6Qm9vbGVhbixkZWNvcmF0b3JzOlt7dHlwZTpOZX0se3R5cGU6SWUsYXJnczpbeUZdfV19XQovKioKICAgICAqIEBsaWNlbnNlCiAgICAgKiBDb3B5cmlnaHQgR29vZ2xlIExMQyBBbGwgUmlnaHRzIFJlc2VydmVkLgogICAgICoKICAgICAqIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGFuIE1JVC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCiAgICAgKiBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlIGF0IGh0dHBzOi8vYW5ndWxhci5pby9saWNlbnNlCiAgICAgKi87Y2xhc3MgdkZ7Z2V0IHZhbHVlKCl7cmV0dXJuIHRoaXMuY29udHJvbD90aGlzLmNvbnRyb2wudmFsdWU6bnVsbH1nZXQgdmFsaWQoKXtyZXR1cm4gdGhpcy5jb250cm9sP3RoaXMuY29udHJvbC52YWxpZDpudWxsfWdldCBpbnZhbGlkKCl7cmV0dXJuIHRoaXMuY29udHJvbD90aGlzLmNvbnRyb2wuaW52YWxpZDpudWxsfWdldCBwZW5kaW5nKCl7cmV0dXJuIHRoaXMuY29udHJvbD90aGlzLmNvbnRyb2wucGVuZGluZzpudWxsfWdldCBkaXNhYmxlZCgpe3JldHVybiB0aGlzLmNvbnRyb2w/dGhpcy5jb250cm9sLmRpc2FibGVkOm51bGx9Z2V0IGVuYWJsZWQoKXtyZXR1cm4gdGhpcy5jb250cm9sP3RoaXMuY29udHJvbC5lbmFibGVkOm51bGx9Z2V0IGVycm9ycygpe3JldHVybiB0aGlzLmNvbnRyb2w/dGhpcy5jb250cm9sLmVycm9yczpudWxsfWdldCBwcmlzdGluZSgpe3JldHVybiB0aGlzLmNvbnRyb2w/dGhpcy5jb250cm9sLnByaXN0aW5lOm51bGx9Z2V0IGRpcnR5KCl7cmV0dXJuIHRoaXMuY29udHJvbD90aGlzLmNvbnRyb2wuZGlydHk6bnVsbH1nZXQgdG91Y2hlZCgpe3JldHVybiB0aGlzLmNvbnRyb2w/dGhpcy5jb250cm9sLnRvdWNoZWQ6bnVsbH1nZXQgc3RhdHVzKCl7cmV0dXJuIHRoaXMuY29udHJvbD90aGlzLmNvbnRyb2wuc3RhdHVzOm51bGx9Z2V0IHVudG91Y2hlZCgpe3JldHVybiB0aGlzLmNvbnRyb2w/dGhpcy5jb250cm9sLnVudG91Y2hlZDpudWxsfWdldCBzdGF0dXNDaGFuZ2VzKCl7cmV0dXJuIHRoaXMuY29udHJvbD90aGlzLmNvbnRyb2wuc3RhdHVzQ2hhbmdlczpudWxsfWdldCB2YWx1ZUNoYW5nZXMoKXtyZXR1cm4gdGhpcy5jb250cm9sP3RoaXMuY29udHJvbC52YWx1ZUNoYW5nZXM6bnVsbH1nZXQgcGF0aCgpe3JldHVybiBudWxsfXJlc2V0KHQpe3RoaXMuY29udHJvbCYmdGhpcy5jb250cm9sLnJlc2V0KHQpfWhhc0Vycm9yKHQsbil7cmV0dXJuISF0aGlzLmNvbnRyb2wmJnRoaXMuY29udHJvbC5oYXNFcnJvcih0LG4pfWdldEVycm9yKHQsbil7cmV0dXJuIHRoaXMuY29udHJvbD90aGlzLmNvbnRyb2wuZ2V0RXJyb3IodCxuKTpudWxsfX12Ri7JtWZhYz1mdW5jdGlvbiB0KG4pe3JldHVybiBuZXcobnx8dkYpfSx2Ri7JtWRpcj12byh7dHlwZTp2Rn0pOwovKioKICAgICAqIEBsaWNlbnNlCiAgICAgKiBDb3B5cmlnaHQgR29vZ2xlIExMQyBBbGwgUmlnaHRzIFJlc2VydmVkLgogICAgICoKICAgICAqIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGFuIE1JVC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCiAgICAgKiBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlIGF0IGh0dHBzOi8vYW5ndWxhci5pby9saWNlbnNlCiAgICAgKi8KY2xhc3Mgd0YgZXh0ZW5kcyB2RntnZXQgZm9ybURpcmVjdGl2ZSgpe3JldHVybiBudWxsfWdldCBwYXRoKCl7cmV0dXJuIG51bGx9fXdGLsm1ZmFjPWZ1bmN0aW9uIHQobil7cmV0dXJuIFNGKG58fHdGKX0sd0YuybVkaXI9dm8oe3R5cGU6d0YsZmVhdHVyZXM6W2hnXX0pO2NvbnN0IFNGPXRjKHdGKTsKLyoqCiAgICAgKiBAbGljZW5zZQogICAgICogQ29weXJpZ2h0IEdvb2dsZSBMTEMgQWxsIFJpZ2h0cyBSZXNlcnZlZC4KICAgICAqCiAgICAgKiBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhbiBNSVQtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQogICAgICogZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZSBhdCBodHRwczovL2FuZ3VsYXIuaW8vbGljZW5zZQogICAgICovZnVuY3Rpb24gRUYoKXtpZigidW5kZWZpbmVkIj09dHlwZW9mIG5nRGV2TW9kZXx8bmdEZXZNb2RlKXRocm93IG5ldyBFcnJvcigidW5pbXBsZW1lbnRlZCIpfWNsYXNzIEFGIGV4dGVuZHMgdkZ7Y29uc3RydWN0b3IoKXtzdXBlciguLi5hcmd1bWVudHMpLHRoaXMuX3BhcmVudD1udWxsLHRoaXMubmFtZT1udWxsLHRoaXMudmFsdWVBY2Nlc3Nvcj1udWxsLHRoaXMuX3Jhd1ZhbGlkYXRvcnM9W10sdGhpcy5fcmF3QXN5bmNWYWxpZGF0b3JzPVtdfWdldCB2YWxpZGF0b3IoKXtyZXR1cm4gRUYoKX1nZXQgYXN5bmNWYWxpZGF0b3IoKXtyZXR1cm4gRUYoKX19Ci8qKgogICAgICogQGxpY2Vuc2UKICAgICAqIENvcHlyaWdodCBHb29nbGUgTExDIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCiAgICAgKgogICAgICogVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYW4gTUlULXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKICAgICAqIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUgYXQgaHR0cHM6Ly9hbmd1bGFyLmlvL2xpY2Vuc2UKICAgICAqL2NsYXNzIHpGe2NvbnN0cnVjdG9yKHQpe3RoaXMuX2NkPXR9Z2V0IG5nQ2xhc3NVbnRvdWNoZWQoKXtyZXR1cm4hIXRoaXMuX2NkLmNvbnRyb2wmJnRoaXMuX2NkLmNvbnRyb2wudW50b3VjaGVkfWdldCBuZ0NsYXNzVG91Y2hlZCgpe3JldHVybiEhdGhpcy5fY2QuY29udHJvbCYmdGhpcy5fY2QuY29udHJvbC50b3VjaGVkfWdldCBuZ0NsYXNzUHJpc3RpbmUoKXtyZXR1cm4hIXRoaXMuX2NkLmNvbnRyb2wmJnRoaXMuX2NkLmNvbnRyb2wucHJpc3RpbmV9Z2V0IG5nQ2xhc3NEaXJ0eSgpe3JldHVybiEhdGhpcy5fY2QuY29udHJvbCYmdGhpcy5fY2QuY29udHJvbC5kaXJ0eX1nZXQgbmdDbGFzc1ZhbGlkKCl7cmV0dXJuISF0aGlzLl9jZC5jb250cm9sJiZ0aGlzLl9jZC5jb250cm9sLnZhbGlkfWdldCBuZ0NsYXNzSW52YWxpZCgpe3JldHVybiEhdGhpcy5fY2QuY29udHJvbCYmdGhpcy5fY2QuY29udHJvbC5pbnZhbGlkfWdldCBuZ0NsYXNzUGVuZGluZygpe3JldHVybiEhdGhpcy5fY2QuY29udHJvbCYmdGhpcy5fY2QuY29udHJvbC5wZW5kaW5nfX1jbGFzcyBSRiBleHRlbmRzIHpGe2NvbnN0cnVjdG9yKHQpe3N1cGVyKHQpfX1SRi7JtWZhYz1mdW5jdGlvbiB0KG4pe3JldHVybiBuZXcobnx8UkYpKFpnKEFGLDIpKX0sUkYuybVkaXI9dm8oe3R5cGU6UkYsc2VsZWN0b3JzOltbIiIsImZvcm1Db250cm9sTmFtZSIsIiJdLFsiIiwibmdNb2RlbCIsIiJdLFsiIiwiZm9ybUNvbnRyb2wiLCIiXV0saG9zdFZhcnM6MTQsaG9zdEJpbmRpbmdzOmZ1bmN0aW9uIHQobixlKXsyJm4mJkRwKCJuZy11bnRvdWNoZWQiLGUubmdDbGFzc1VudG91Y2hlZCkoIm5nLXRvdWNoZWQiLGUubmdDbGFzc1RvdWNoZWQpKCJuZy1wcmlzdGluZSIsZS5uZ0NsYXNzUHJpc3RpbmUpKCJuZy1kaXJ0eSIsZS5uZ0NsYXNzRGlydHkpKCJuZy12YWxpZCIsZS5uZ0NsYXNzVmFsaWQpKCJuZy1pbnZhbGlkIixlLm5nQ2xhc3NJbnZhbGlkKSgibmctcGVuZGluZyIsZS5uZ0NsYXNzUGVuZGluZyl9LGZlYXR1cmVzOltoZ119KSxSRi5jdG9yUGFyYW1ldGVycz0oKT0+W3t0eXBlOkFGLGRlY29yYXRvcnM6W3t0eXBlOkZlfV19XTtjbGFzcyBURiBleHRlbmRzIHpGe2NvbnN0cnVjdG9yKHQpe3N1cGVyKHQpfX0KLyoqCiAgICAgKiBAbGljZW5zZQogICAgICogQ29weXJpZ2h0IEdvb2dsZSBMTEMgQWxsIFJpZ2h0cyBSZXNlcnZlZC4KICAgICAqCiAgICAgKiBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhbiBNSVQtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQogICAgICogZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZSBhdCBodHRwczovL2FuZ3VsYXIuaW8vbGljZW5zZQogICAgICovCmZ1bmN0aW9uIERGKHQpe3JldHVybiBudWxsPT10fHwwPT09dC5sZW5ndGh9ZnVuY3Rpb24gSUYodCl7cmV0dXJuIG51bGwhPXQmJiJudW1iZXIiPT10eXBlb2YgdC5sZW5ndGh9VEYuybVmYWM9ZnVuY3Rpb24gdChuKXtyZXR1cm4gbmV3KG58fFRGKShaZyh3RiwyKSl9LFRGLsm1ZGlyPXZvKHt0eXBlOlRGLHNlbGVjdG9yczpbWyIiLCJmb3JtR3JvdXBOYW1lIiwiIl0sWyIiLCJmb3JtQXJyYXlOYW1lIiwiIl0sWyIiLCJuZ01vZGVsR3JvdXAiLCIiXSxbIiIsImZvcm1Hcm91cCIsIiJdLFsiZm9ybSIsMywibmdOb0Zvcm0iLCIiXSxbIiIsIm5nRm9ybSIsIiJdXSxob3N0VmFyczoxNCxob3N0QmluZGluZ3M6ZnVuY3Rpb24gdChuLGUpezImbiYmRHAoIm5nLXVudG91Y2hlZCIsZS5uZ0NsYXNzVW50b3VjaGVkKSgibmctdG91Y2hlZCIsZS5uZ0NsYXNzVG91Y2hlZCkoIm5nLXByaXN0aW5lIixlLm5nQ2xhc3NQcmlzdGluZSkoIm5nLWRpcnR5IixlLm5nQ2xhc3NEaXJ0eSkoIm5nLXZhbGlkIixlLm5nQ2xhc3NWYWxpZCkoIm5nLWludmFsaWQiLGUubmdDbGFzc0ludmFsaWQpKCJuZy1wZW5kaW5nIixlLm5nQ2xhc3NQZW5kaW5nKX0sZmVhdHVyZXM6W2hnXX0pLFRGLmN0b3JQYXJhbWV0ZXJzPSgpPT5be3R5cGU6d0YsZGVjb3JhdG9yczpbe3R5cGU6RmV9XX1dO2NvbnN0IE5GPW5ldyBGYSgiTmdWYWxpZGF0b3JzIiksRkY9bmV3IEZhKCJOZ0FzeW5jVmFsaWRhdG9ycyIpLExGPS9eKD89LnsxLDI1NH0kKSg/PS57MSw2NH1AKVthLXpBLVowLTkhIyQlJicqKy89P15fYHt8fX4tXSsoPzpcLlthLXpBLVowLTkhIyQlJicqKy89P15fYHt8fX4tXSspKkBbYS16QS1aMC05XSg/OlthLXpBLVowLTktXXswLDYxfVthLXpBLVowLTldKT8oPzpcLlthLXpBLVowLTldKD86W2EtekEtWjAtOS1dezAsNjF9W2EtekEtWjAtOV0pPykqJC87Y2xhc3MgSEZ7c3RhdGljIG1pbih0KXtyZXR1cm4gbj0+e2lmKERGKG4udmFsdWUpfHxERih0KSlyZXR1cm4gbnVsbDtjb25zdCBlPXBhcnNlRmxvYXQobi52YWx1ZSk7cmV0dXJuIWlzTmFOKGUpJiZlPHQ/e21pbjp7bWluOnQsYWN0dWFsOm4udmFsdWV9fTpudWxsfX1zdGF0aWMgbWF4KHQpe3JldHVybiBuPT57aWYoREYobi52YWx1ZSl8fERGKHQpKXJldHVybiBudWxsO2NvbnN0IGU9cGFyc2VGbG9hdChuLnZhbHVlKTtyZXR1cm4haXNOYU4oZSkmJmU+dD97bWF4OnttYXg6dCxhY3R1YWw6bi52YWx1ZX19Om51bGx9fXN0YXRpYyByZXF1aXJlZCh0KXtyZXR1cm4gREYodC52YWx1ZSk/e3JlcXVpcmVkOiEwfTpudWxsfXN0YXRpYyByZXF1aXJlZFRydWUodCl7cmV0dXJuITA9PT10LnZhbHVlP251bGw6e3JlcXVpcmVkOiEwfX1zdGF0aWMgZW1haWwodCl7cmV0dXJuIERGKHQudmFsdWUpfHxMRi50ZXN0KHQudmFsdWUpP251bGw6e2VtYWlsOiEwfX1zdGF0aWMgbWluTGVuZ3RoKHQpe3JldHVybiBuPT5ERihuLnZhbHVlKXx8IUlGKG4udmFsdWUpP251bGw6bi52YWx1ZS5sZW5ndGg8dD97bWlubGVuZ3RoOntyZXF1aXJlZExlbmd0aDp0LGFjdHVhbExlbmd0aDpuLnZhbHVlLmxlbmd0aH19Om51bGx9c3RhdGljIG1heExlbmd0aCh0KXtyZXR1cm4gbj0+SUYobi52YWx1ZSkmJm4udmFsdWUubGVuZ3RoPnQ/e21heGxlbmd0aDp7cmVxdWlyZWRMZW5ndGg6dCxhY3R1YWxMZW5ndGg6bi52YWx1ZS5sZW5ndGh9fTpudWxsfXN0YXRpYyBwYXR0ZXJuKHQpe2lmKCF0KXJldHVybiBIRi5udWxsVmFsaWRhdG9yO2xldCBuLGU7cmV0dXJuInN0cmluZyI9PXR5cGVvZiB0PyhlPSIiLCJeIiE9PXQuY2hhckF0KDApJiYoZSs9Il4iKSxlKz10LCIkIiE9PXQuY2hhckF0KHQubGVuZ3RoLTEpJiYoZSs9IiQiKSxuPW5ldyBSZWdFeHAoZSkpOihlPXQudG9TdHJpbmcoKSxuPXQpLHQ9PntpZihERih0LnZhbHVlKSlyZXR1cm4gbnVsbDtjb25zdCBhPXQudmFsdWU7cmV0dXJuIG4udGVzdChhKT9udWxsOntwYXR0ZXJuOntyZXF1aXJlZFBhdHRlcm46ZSxhY3R1YWxWYWx1ZTphfX19fXN0YXRpYyBudWxsVmFsaWRhdG9yKHQpe3JldHVybiBudWxsfXN0YXRpYyBjb21wb3NlKHQpe2lmKCF0KXJldHVybiBudWxsO2NvbnN0IG49dC5maWx0ZXIoQkYpO3JldHVybiAwPT1uLmxlbmd0aD9udWxsOmZ1bmN0aW9uKHQpe3JldHVybiBqRihVRih0LG4pKX19c3RhdGljIGNvbXBvc2VBc3luYyh0KXtpZighdClyZXR1cm4gbnVsbDtjb25zdCBuPXQuZmlsdGVyKEJGKTtyZXR1cm4gMD09bi5sZW5ndGg/bnVsbDpmdW5jdGlvbih0KXtyZXR1cm4gSHQoVUYodCxuKS5tYXAoVkYpKS5waXBlKGZ0KGpGKSl9fX1mdW5jdGlvbiBCRih0KXtyZXR1cm4gbnVsbCE9dH1mdW5jdGlvbiBWRih0KXtjb25zdCBuPXJwKHQpP1J0KHQpOnQ7aWYoIWlwKG4pJiYoInVuZGVmaW5lZCI9PXR5cGVvZiBuZ0Rldk1vZGV8fG5nRGV2TW9kZSkpdGhyb3cgbmV3IEVycm9yKCJFeHBlY3RlZCB2YWxpZGF0b3IgdG8gcmV0dXJuIFByb21pc2Ugb3IgT2JzZXJ2YWJsZS4iKTtyZXR1cm4gbn1mdW5jdGlvbiBqRih0KXtsZXQgbj17fTtyZXR1cm4gdC5mb3JFYWNoKCh0PT57bj1udWxsIT10P09iamVjdC5hc3NpZ24oT2JqZWN0LmFzc2lnbih7fSxuKSx0KTpufSkpLDA9PT1PYmplY3Qua2V5cyhuKS5sZW5ndGg/bnVsbDpufWZ1bmN0aW9uIFVGKHQsbil7cmV0dXJuIG4ubWFwKChuPT5uKHQpKSl9ZnVuY3Rpb24gV0YodCl7cmV0dXJuIHQubWFwKCh0PT4oZnVuY3Rpb24gbih0KXtyZXR1cm4hdC52YWxpZGF0ZX0pKHQpP3Q6bj0+dC52YWxpZGF0ZShuKSkpfQovKioKICAgICAqIEBsaWNlbnNlCiAgICAgKiBDb3B5cmlnaHQgR29vZ2xlIExMQyBBbGwgUmlnaHRzIFJlc2VydmVkLgogICAgICoKICAgICAqIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGFuIE1JVC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCiAgICAgKiBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlIGF0IGh0dHBzOi8vYW5ndWxhci5pby9saWNlbnNlCiAgICAgKi9jb25zdCBHRj17cHJvdmlkZTpNRix1c2VFeGlzdGluZzphYSgoKCk9PllGKSksbXVsdGk6ITB9O2NsYXNzIFlGe2NvbnN0cnVjdG9yKHQsbil7dGhpcy5fcmVuZGVyZXI9dCx0aGlzLl9lbGVtZW50UmVmPW4sdGhpcy5vbkNoYW5nZT10PT57fSx0aGlzLm9uVG91Y2hlZD0oKT0+e319d3JpdGVWYWx1ZSh0KXt0aGlzLl9yZW5kZXJlci5zZXRQcm9wZXJ0eSh0aGlzLl9lbGVtZW50UmVmLm5hdGl2ZUVsZW1lbnQsInZhbHVlIixudWxsPT10PyIiOnQpfXJlZ2lzdGVyT25DaGFuZ2UodCl7dGhpcy5vbkNoYW5nZT1uPT57dCgiIj09bj9udWxsOnBhcnNlRmxvYXQobikpfX1yZWdpc3Rlck9uVG91Y2hlZCh0KXt0aGlzLm9uVG91Y2hlZD10fXNldERpc2FibGVkU3RhdGUodCl7dGhpcy5fcmVuZGVyZXIuc2V0UHJvcGVydHkodGhpcy5fZWxlbWVudFJlZi5uYXRpdmVFbGVtZW50LCJkaXNhYmxlZCIsdCl9fVlGLsm1ZmFjPWZ1bmN0aW9uIHQobil7cmV0dXJuIG5ldyhufHxZRikoWmcoU3UpLFpnKHh1KSl9LFlGLsm1ZGlyPXZvKHt0eXBlOllGLHNlbGVjdG9yczpbWyJpbnB1dCIsInR5cGUiLCJudW1iZXIiLCJmb3JtQ29udHJvbE5hbWUiLCIiXSxbImlucHV0IiwidHlwZSIsIm51bWJlciIsImZvcm1Db250cm9sIiwiIl0sWyJpbnB1dCIsInR5cGUiLCJudW1iZXIiLCJuZ01vZGVsIiwiIl1dLGhvc3RCaW5kaW5nczpmdW5jdGlvbiB0KG4sZSl7MSZuJiZjcCgiaW5wdXQiLChmdW5jdGlvbiB0KG4pe3JldHVybiBlLm9uQ2hhbmdlKG4udGFyZ2V0LnZhbHVlKX0pKSgiYmx1ciIsKGZ1bmN0aW9uIHQoKXtyZXR1cm4gZS5vblRvdWNoZWQoKX0pKX0sZmVhdHVyZXM6W011KFtHRl0pXX0pLFlGLmN0b3JQYXJhbWV0ZXJzPSgpPT5be3R5cGU6U3V9LHt0eXBlOnh1fV0KLyoqCiAgICAgKiBAbGljZW5zZQogICAgICogQ29weXJpZ2h0IEdvb2dsZSBMTEMgQWxsIFJpZ2h0cyBSZXNlcnZlZC4KICAgICAqCiAgICAgKiBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhbiBNSVQtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQogICAgICogZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZSBhdCBodHRwczovL2FuZ3VsYXIuaW8vbGljZW5zZQogICAgICovO2NvbnN0IHFGPXtwcm92aWRlOk1GLHVzZUV4aXN0aW5nOmFhKCgoKT0+WEYpKSxtdWx0aTohMH07Y2xhc3MgWkZ7Y29uc3RydWN0b3IoKXt0aGlzLl9hY2Nlc3NvcnM9W119YWRkKHQsbil7dGhpcy5fYWNjZXNzb3JzLnB1c2goW3Qsbl0pfXJlbW92ZSh0KXtmb3IobGV0IG49dGhpcy5fYWNjZXNzb3JzLmxlbmd0aC0xO24+PTA7LS1uKWlmKHRoaXMuX2FjY2Vzc29yc1tuXVsxXT09PXQpcmV0dXJuIHZvaWQgdGhpcy5fYWNjZXNzb3JzLnNwbGljZShuLDEpfXNlbGVjdCh0KXt0aGlzLl9hY2Nlc3NvcnMuZm9yRWFjaCgobj0+e3RoaXMuX2lzU2FtZUdyb3VwKG4sdCkmJm5bMV0hPT10JiZuWzFdLmZpcmVVbmNoZWNrKHQudmFsdWUpfSkpfV9pc1NhbWVHcm91cCh0LG4pe3JldHVybiEhdFswXS5jb250cm9sJiZ0WzBdLl9wYXJlbnQ9PT1uLl9jb250cm9sLl9wYXJlbnQmJnRbMV0ubmFtZT09PW4ubmFtZX19WkYuybVmYWM9ZnVuY3Rpb24gdChuKXtyZXR1cm4gbmV3KG58fFpGKX0sWkYuybVwcm92PVdlKHt0b2tlbjpaRixmYWN0b3J5OlpGLsm1ZmFjfSk7Y2xhc3MgWEZ7Y29uc3RydWN0b3IodCxuLGUsYSl7dGhpcy5fcmVuZGVyZXI9dCx0aGlzLl9lbGVtZW50UmVmPW4sdGhpcy5fcmVnaXN0cnk9ZSx0aGlzLl9pbmplY3Rvcj1hLHRoaXMub25DaGFuZ2U9KCk9Pnt9LHRoaXMub25Ub3VjaGVkPSgpPT57fX1uZ09uSW5pdCgpe3RoaXMuX2NvbnRyb2w9dGhpcy5faW5qZWN0b3IuZ2V0KEFGKSx0aGlzLl9jaGVja05hbWUoKSx0aGlzLl9yZWdpc3RyeS5hZGQodGhpcy5fY29udHJvbCx0aGlzKX1uZ09uRGVzdHJveSgpe3RoaXMuX3JlZ2lzdHJ5LnJlbW92ZSh0aGlzKX13cml0ZVZhbHVlKHQpe3RoaXMuX3N0YXRlPXQ9PT10aGlzLnZhbHVlLHRoaXMuX3JlbmRlcmVyLnNldFByb3BlcnR5KHRoaXMuX2VsZW1lbnRSZWYubmF0aXZlRWxlbWVudCwiY2hlY2tlZCIsdGhpcy5fc3RhdGUpfXJlZ2lzdGVyT25DaGFuZ2UodCl7dGhpcy5fZm49dCx0aGlzLm9uQ2hhbmdlPSgpPT57dCh0aGlzLnZhbHVlKSx0aGlzLl9yZWdpc3RyeS5zZWxlY3QodGhpcyl9fWZpcmVVbmNoZWNrKHQpe3RoaXMud3JpdGVWYWx1ZSh0KX1yZWdpc3Rlck9uVG91Y2hlZCh0KXt0aGlzLm9uVG91Y2hlZD10fXNldERpc2FibGVkU3RhdGUodCl7dGhpcy5fcmVuZGVyZXIuc2V0UHJvcGVydHkodGhpcy5fZWxlbWVudFJlZi5uYXRpdmVFbGVtZW50LCJkaXNhYmxlZCIsdCl9X2NoZWNrTmFtZSgpe3RoaXMubmFtZSYmdGhpcy5mb3JtQ29udHJvbE5hbWUmJnRoaXMubmFtZSE9PXRoaXMuZm9ybUNvbnRyb2xOYW1lJiYoInVuZGVmaW5lZCI9PXR5cGVvZiBuZ0Rldk1vZGV8fG5nRGV2TW9kZSkmJihmdW5jdGlvbiB0KCl7dGhyb3cgbmV3IEVycm9yKCdcbiAgICAgIElmIHlvdSBkZWZpbmUgYm90aCBhIG5hbWUgYW5kIGEgZm9ybUNvbnRyb2xOYW1lIGF0dHJpYnV0ZSBvbiB5b3VyIHJhZGlvIGJ1dHRvbiwgdGhlaXIgdmFsdWVzXG4gICAgICBtdXN0IG1hdGNoLiBFeDogPGlucHV0IHR5cGU9InJhZGlvIiBmb3JtQ29udHJvbE5hbWU9ImZvb2QiIG5hbWU9ImZvb2QiPlxuICAgICcpfSkoKSwhdGhpcy5uYW1lJiZ0aGlzLmZvcm1Db250cm9sTmFtZSYmKHRoaXMubmFtZT10aGlzLmZvcm1Db250cm9sTmFtZSl9fVhGLsm1ZmFjPWZ1bmN0aW9uIHQobil7cmV0dXJuIG5ldyhufHxYRikoWmcoU3UpLFpnKHh1KSxaZyhaRiksWmcoeWQpKX0sWEYuybVkaXI9dm8oe3R5cGU6WEYsc2VsZWN0b3JzOltbImlucHV0IiwidHlwZSIsInJhZGlvIiwiZm9ybUNvbnRyb2xOYW1lIiwiIl0sWyJpbnB1dCIsInR5cGUiLCJyYWRpbyIsImZvcm1Db250cm9sIiwiIl0sWyJpbnB1dCIsInR5cGUiLCJyYWRpbyIsIm5nTW9kZWwiLCIiXV0saG9zdEJpbmRpbmdzOmZ1bmN0aW9uIHQobixlKXsxJm4mJmNwKCJjaGFuZ2UiLChmdW5jdGlvbiB0KCl7cmV0dXJuIGUub25DaGFuZ2UoKX0pKSgiYmx1ciIsKGZ1bmN0aW9uIHQoKXtyZXR1cm4gZS5vblRvdWNoZWQoKX0pKX0saW5wdXRzOntuYW1lOiJuYW1lIixmb3JtQ29udHJvbE5hbWU6ImZvcm1Db250cm9sTmFtZSIsdmFsdWU6InZhbHVlIn0sZmVhdHVyZXM6W011KFtxRl0pXX0pLFhGLmN0b3JQYXJhbWV0ZXJzPSgpPT5be3R5cGU6U3V9LHt0eXBlOnh1fSx7dHlwZTpaRn0se3R5cGU6eWR9XSxYRi5wcm9wRGVjb3JhdG9ycz17bmFtZTpbe3R5cGU6Zl99XSxmb3JtQ29udHJvbE5hbWU6W3t0eXBlOmZffV0sdmFsdWU6W3t0eXBlOmZffV19OwovKioKICAgICAqIEBsaWNlbnNlCiAgICAgKiBDb3B5cmlnaHQgR29vZ2xlIExMQyBBbGwgUmlnaHRzIFJlc2VydmVkLgogICAgICoKICAgICAqIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGFuIE1JVC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCiAgICAgKiBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlIGF0IGh0dHBzOi8vYW5ndWxhci5pby9saWNlbnNlCiAgICAgKi8KY29uc3QgSkY9e3Byb3ZpZGU6TUYsdXNlRXhpc3Rpbmc6YWEoKCgpPT5RRikpLG11bHRpOiEwfTtjbGFzcyBRRntjb25zdHJ1Y3Rvcih0LG4pe3RoaXMuX3JlbmRlcmVyPXQsdGhpcy5fZWxlbWVudFJlZj1uLHRoaXMub25DaGFuZ2U9dD0+e30sdGhpcy5vblRvdWNoZWQ9KCk9Pnt9fXdyaXRlVmFsdWUodCl7dGhpcy5fcmVuZGVyZXIuc2V0UHJvcGVydHkodGhpcy5fZWxlbWVudFJlZi5uYXRpdmVFbGVtZW50LCJ2YWx1ZSIscGFyc2VGbG9hdCh0KSl9cmVnaXN0ZXJPbkNoYW5nZSh0KXt0aGlzLm9uQ2hhbmdlPW49Pnt0KCIiPT1uP251bGw6cGFyc2VGbG9hdChuKSl9fXJlZ2lzdGVyT25Ub3VjaGVkKHQpe3RoaXMub25Ub3VjaGVkPXR9c2V0RGlzYWJsZWRTdGF0ZSh0KXt0aGlzLl9yZW5kZXJlci5zZXRQcm9wZXJ0eSh0aGlzLl9lbGVtZW50UmVmLm5hdGl2ZUVsZW1lbnQsImRpc2FibGVkIix0KX19UUYuybVmYWM9ZnVuY3Rpb24gdChuKXtyZXR1cm4gbmV3KG58fFFGKShaZyhTdSksWmcoeHUpKX0sUUYuybVkaXI9dm8oe3R5cGU6UUYsc2VsZWN0b3JzOltbImlucHV0IiwidHlwZSIsInJhbmdlIiwiZm9ybUNvbnRyb2xOYW1lIiwiIl0sWyJpbnB1dCIsInR5cGUiLCJyYW5nZSIsImZvcm1Db250cm9sIiwiIl0sWyJpbnB1dCIsInR5cGUiLCJyYW5nZSIsIm5nTW9kZWwiLCIiXV0saG9zdEJpbmRpbmdzOmZ1bmN0aW9uIHQobixlKXsxJm4mJmNwKCJjaGFuZ2UiLChmdW5jdGlvbiB0KG4pe3JldHVybiBlLm9uQ2hhbmdlKG4udGFyZ2V0LnZhbHVlKX0pKSgiaW5wdXQiLChmdW5jdGlvbiB0KG4pe3JldHVybiBlLm9uQ2hhbmdlKG4udGFyZ2V0LnZhbHVlKX0pKSgiYmx1ciIsKGZ1bmN0aW9uIHQoKXtyZXR1cm4gZS5vblRvdWNoZWQoKX0pKX0sZmVhdHVyZXM6W011KFtKRl0pXX0pLFFGLmN0b3JQYXJhbWV0ZXJzPSgpPT5be3R5cGU6U3V9LHt0eXBlOnh1fV0KLyoqCiAgICAgKiBAbGljZW5zZQogICAgICogQ29weXJpZ2h0IEdvb2dsZSBMTEMgQWxsIFJpZ2h0cyBSZXNlcnZlZC4KICAgICAqCiAgICAgKiBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhbiBNSVQtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQogICAgICogZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZSBhdCBodHRwczovL2FuZ3VsYXIuaW8vbGljZW5zZQogICAgICovO2NvbnN0IEtGPSdcbiAgICA8ZGl2IFtmb3JtR3JvdXBdPSJteUdyb3VwIj5cbiAgICAgIDxpbnB1dCBmb3JtQ29udHJvbE5hbWU9ImZpcnN0TmFtZSI+XG4gICAgPC9kaXY+XG5cbiAgICBJbiB5b3VyIGNsYXNzOlxuXG4gICAgdGhpcy5teUdyb3VwID0gbmV3IEZvcm1Hcm91cCh7XG4gICAgICAgZmlyc3ROYW1lOiBuZXcgRm9ybUNvbnRyb2woKVxuICAgIH0pOycsJEY9J1xuICAgIDxkaXYgW2Zvcm1Hcm91cF09Im15R3JvdXAiPlxuICAgICAgIDxkaXYgZm9ybUdyb3VwTmFtZT0icGVyc29uIj5cbiAgICAgICAgICA8aW5wdXQgZm9ybUNvbnRyb2xOYW1lPSJmaXJzdE5hbWUiPlxuICAgICAgIDwvZGl2PlxuICAgIDwvZGl2PlxuXG4gICAgSW4geW91ciBjbGFzczpcblxuICAgIHRoaXMubXlHcm91cCA9IG5ldyBGb3JtR3JvdXAoe1xuICAgICAgIHBlcnNvbjogbmV3IEZvcm1Hcm91cCh7IGZpcnN0TmFtZTogbmV3IEZvcm1Db250cm9sKCkgfSlcbiAgICB9KTsnLHRMPSdcbiAgICA8Zm9ybT5cbiAgICAgICA8ZGl2IG5nTW9kZWxHcm91cD0icGVyc29uIj5cbiAgICAgICAgICA8aW5wdXQgWyhuZ01vZGVsKV09InBlcnNvbi5uYW1lIiBuYW1lPSJmaXJzdE5hbWUiPlxuICAgICAgIDwvZGl2PlxuICAgIDwvZm9ybT4nOwovKioKICAgICAqIEBsaWNlbnNlCiAgICAgKiBDb3B5cmlnaHQgR29vZ2xlIExMQyBBbGwgUmlnaHRzIFJlc2VydmVkLgogICAgICoKICAgICAqIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGFuIE1JVC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCiAgICAgKiBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlIGF0IGh0dHBzOi8vYW5ndWxhci5pby9saWNlbnNlCiAgICAgKi9jbGFzcyBuTHtzdGF0aWMgY29udHJvbFBhcmVudEV4Y2VwdGlvbigpe3Rocm93IG5ldyBFcnJvcihgZm9ybUNvbnRyb2xOYW1lIG11c3QgYmUgdXNlZCB3aXRoIGEgcGFyZW50IGZvcm1Hcm91cCBkaXJlY3RpdmUuICBZb3UnbGwgd2FudCB0byBhZGQgYSBmb3JtR3JvdXBcbiAgICAgICBkaXJlY3RpdmUgYW5kIHBhc3MgaXQgYW4gZXhpc3RpbmcgRm9ybUdyb3VwIGluc3RhbmNlICh5b3UgY2FuIGNyZWF0ZSBvbmUgaW4geW91ciBjbGFzcykuXG5cbiAgICAgIEV4YW1wbGU6XG5cbiAgICAgICR7S0Z9YCl9c3RhdGljIG5nTW9kZWxHcm91cEV4Y2VwdGlvbigpe3Rocm93IG5ldyBFcnJvcihgZm9ybUNvbnRyb2xOYW1lIGNhbm5vdCBiZSB1c2VkIHdpdGggYW4gbmdNb2RlbEdyb3VwIHBhcmVudC4gSXQgaXMgb25seSBjb21wYXRpYmxlIHdpdGggcGFyZW50c1xuICAgICAgIHRoYXQgYWxzbyBoYXZlIGEgImZvcm0iIHByZWZpeDogZm9ybUdyb3VwTmFtZSwgZm9ybUFycmF5TmFtZSwgb3IgZm9ybUdyb3VwLlxuXG4gICAgICAgT3B0aW9uIDE6ICBVcGRhdGUgdGhlIHBhcmVudCB0byBiZSBmb3JtR3JvdXBOYW1lIChyZWFjdGl2ZSBmb3JtIHN0cmF0ZWd5KVxuXG4gICAgICAgICR7JEZ9XG5cbiAgICAgICAgT3B0aW9uIDI6IFVzZSBuZ01vZGVsIGluc3RlYWQgb2YgZm9ybUNvbnRyb2xOYW1lICh0ZW1wbGF0ZS1kcml2ZW4gc3RyYXRlZ3kpXG5cbiAgICAgICAgJHt0TH1gKX1zdGF0aWMgbWlzc2luZ0Zvcm1FeGNlcHRpb24oKXt0aHJvdyBuZXcgRXJyb3IoYGZvcm1Hcm91cCBleHBlY3RzIGEgRm9ybUdyb3VwIGluc3RhbmNlLiBQbGVhc2UgcGFzcyBvbmUgaW4uXG5cbiAgICAgICBFeGFtcGxlOlxuXG4gICAgICAgJHtLRn1gKX1zdGF0aWMgZ3JvdXBQYXJlbnRFeGNlcHRpb24oKXt0aHJvdyBuZXcgRXJyb3IoYGZvcm1Hcm91cE5hbWUgbXVzdCBiZSB1c2VkIHdpdGggYSBwYXJlbnQgZm9ybUdyb3VwIGRpcmVjdGl2ZS4gIFlvdSdsbCB3YW50IHRvIGFkZCBhIGZvcm1Hcm91cFxuICAgICAgZGlyZWN0aXZlIGFuZCBwYXNzIGl0IGFuIGV4aXN0aW5nIEZvcm1Hcm91cCBpbnN0YW5jZSAoeW91IGNhbiBjcmVhdGUgb25lIGluIHlvdXIgY2xhc3MpLlxuXG4gICAgICBFeGFtcGxlOlxuXG4gICAgICAkeyRGfWApfXN0YXRpYyBhcnJheVBhcmVudEV4Y2VwdGlvbigpe3Rocm93IG5ldyBFcnJvcignZm9ybUFycmF5TmFtZSBtdXN0IGJlIHVzZWQgd2l0aCBhIHBhcmVudCBmb3JtR3JvdXAgZGlyZWN0aXZlLiAgWW91XCdsbCB3YW50IHRvIGFkZCBhIGZvcm1Hcm91cFxuICAgICAgIGRpcmVjdGl2ZSBhbmQgcGFzcyBpdCBhbiBleGlzdGluZyBGb3JtR3JvdXAgaW5zdGFuY2UgKHlvdSBjYW4gY3JlYXRlIG9uZSBpbiB5b3VyIGNsYXNzKS5cblxuICAgICAgICBFeGFtcGxlOlxuXG4gICAgICAgIFxuICAgIDxkaXYgW2Zvcm1Hcm91cF09Im15R3JvdXAiPlxuICAgICAgPGRpdiBmb3JtQXJyYXlOYW1lPSJjaXRpZXMiPlxuICAgICAgICA8ZGl2ICpuZ0Zvcj0ibGV0IGNpdHkgb2YgY2l0eUFycmF5LmNvbnRyb2xzOyBpbmRleCBhcyBpIj5cbiAgICAgICAgICA8aW5wdXQgW2Zvcm1Db250cm9sTmFtZV09ImkiPlxuICAgICAgICA8L2Rpdj5cbiAgICAgIDwvZGl2PlxuICAgIDwvZGl2PlxuXG4gICAgSW4geW91ciBjbGFzczpcblxuICAgIHRoaXMuY2l0eUFycmF5ID0gbmV3IEZvcm1BcnJheShbbmV3IEZvcm1Db250cm9sKFwnU0ZcJyldKTtcbiAgICB0aGlzLm15R3JvdXAgPSBuZXcgRm9ybUdyb3VwKHtcbiAgICAgIGNpdGllczogdGhpcy5jaXR5QXJyYXlcbiAgICB9KTsnKX1zdGF0aWMgZGlzYWJsZWRBdHRyV2FybmluZygpe2NvbnNvbGUud2FybigiXG4gICAgICBJdCBsb29rcyBsaWtlIHlvdSdyZSB1c2luZyB0aGUgZGlzYWJsZWQgYXR0cmlidXRlIHdpdGggYSByZWFjdGl2ZSBmb3JtIGRpcmVjdGl2ZS4gSWYgeW91IHNldCBkaXNhYmxlZCB0byB0cnVlXG4gICAgICB3aGVuIHlvdSBzZXQgdXAgdGhpcyBjb250cm9sIGluIHlvdXIgY29tcG9uZW50IGNsYXNzLCB0aGUgZGlzYWJsZWQgYXR0cmlidXRlIHdpbGwgYWN0dWFsbHkgYmUgc2V0IGluIHRoZSBET00gZm9yXG4gICAgICB5b3UuIFdlIHJlY29tbWVuZCB1c2luZyB0aGlzIGFwcHJvYWNoIHRvIGF2b2lkICdjaGFuZ2VkIGFmdGVyIGNoZWNrZWQnIGVycm9ycy5cblxuICAgICAgRXhhbXBsZTpcbiAgICAgIGZvcm0gPSBuZXcgRm9ybUdyb3VwKHtcbiAgICAgICAgZmlyc3Q6IG5ldyBGb3JtQ29udHJvbCh7dmFsdWU6ICdOYW5jeScsIGRpc2FibGVkOiB0cnVlfSwgVmFsaWRhdG9ycy5yZXF1aXJlZCksXG4gICAgICAgIGxhc3Q6IG5ldyBGb3JtQ29udHJvbCgnRHJldycsIFZhbGlkYXRvcnMucmVxdWlyZWQpXG4gICAgICB9KTtcbiAgICAiKX1zdGF0aWMgbmdNb2RlbFdhcm5pbmcodCl7Y29uc29sZS53YXJuKGBcbiAgICBJdCBsb29rcyBsaWtlIHlvdSdyZSB1c2luZyBuZ01vZGVsIG9uIHRoZSBzYW1lIGZvcm0gZmllbGQgYXMgJHt0fS5cbiAgICBTdXBwb3J0IGZvciB1c2luZyB0aGUgbmdNb2RlbCBpbnB1dCBwcm9wZXJ0eSBhbmQgbmdNb2RlbENoYW5nZSBldmVudCB3aXRoXG4gICAgcmVhY3RpdmUgZm9ybSBkaXJlY3RpdmVzIGhhcyBiZWVuIGRlcHJlY2F0ZWQgaW4gQW5ndWxhciB2NiBhbmQgd2lsbCBiZSByZW1vdmVkXG4gICAgaW4gYSBmdXR1cmUgdmVyc2lvbiBvZiBBbmd1bGFyLlxuXG4gICAgRm9yIG1vcmUgaW5mb3JtYXRpb24gb24gdGhpcywgc2VlIG91ciBBUEkgZG9jcyBoZXJlOlxuICAgIGh0dHBzOi8vYW5ndWxhci5pby9hcGkvZm9ybXMvJHsiZm9ybUNvbnRyb2wiPT09dD8iRm9ybUNvbnRyb2xEaXJlY3RpdmUiOiJGb3JtQ29udHJvbE5hbWUifSN1c2Utd2l0aC1uZ21vZGVsXG4gICAgYCl9fQovKioKICAgICAqIEBsaWNlbnNlCiAgICAgKiBDb3B5cmlnaHQgR29vZ2xlIExMQyBBbGwgUmlnaHRzIFJlc2VydmVkLgogICAgICoKICAgICAqIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGFuIE1JVC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCiAgICAgKiBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlIGF0IGh0dHBzOi8vYW5ndWxhci5pby9saWNlbnNlCiAgICAgKi9jb25zdCBlTD17cHJvdmlkZTpNRix1c2VFeGlzdGluZzphYSgoKCk9Pm9MKSksbXVsdGk6ITB9O2Z1bmN0aW9uIGFMKHQsbil7cmV0dXJuIG51bGw9PXQ/YCR7bn1gOihuJiYib2JqZWN0Ij09dHlwZW9mIG4mJihuPSJPYmplY3QiKSxgJHt0fTogJHtufWAuc2xpY2UoMCw1MCkpfWNsYXNzIG9Me2NvbnN0cnVjdG9yKHQsbil7dGhpcy5fcmVuZGVyZXI9dCx0aGlzLl9lbGVtZW50UmVmPW4sdGhpcy5fb3B0aW9uTWFwPW5ldyBNYXAsdGhpcy5faWRDb3VudGVyPTAsdGhpcy5vbkNoYW5nZT10PT57fSx0aGlzLm9uVG91Y2hlZD0oKT0+e30sdGhpcy5fY29tcGFyZVdpdGg9T2JqZWN0LmlzfXNldCBjb21wYXJlV2l0aCh0KXtpZigiZnVuY3Rpb24iIT10eXBlb2YgdCYmKCJ1bmRlZmluZWQiPT10eXBlb2YgbmdEZXZNb2RlfHxuZ0Rldk1vZGUpKXRocm93IG5ldyBFcnJvcihgY29tcGFyZVdpdGggbXVzdCBiZSBhIGZ1bmN0aW9uLCBidXQgcmVjZWl2ZWQgJHtKU09OLnN0cmluZ2lmeSh0KX1gKTt0aGlzLl9jb21wYXJlV2l0aD10fXdyaXRlVmFsdWUodCl7dGhpcy52YWx1ZT10O2NvbnN0IG49dGhpcy5fZ2V0T3B0aW9uSWQodCk7bnVsbD09biYmdGhpcy5fcmVuZGVyZXIuc2V0UHJvcGVydHkodGhpcy5fZWxlbWVudFJlZi5uYXRpdmVFbGVtZW50LCJzZWxlY3RlZEluZGV4IiwtMSk7Y29uc3QgZT1hTChuLHQpO3RoaXMuX3JlbmRlcmVyLnNldFByb3BlcnR5KHRoaXMuX2VsZW1lbnRSZWYubmF0aXZlRWxlbWVudCwidmFsdWUiLGUpfXJlZ2lzdGVyT25DaGFuZ2UodCl7dGhpcy5vbkNoYW5nZT1uPT57dGhpcy52YWx1ZT10aGlzLl9nZXRPcHRpb25WYWx1ZShuKSx0KHRoaXMudmFsdWUpfX1yZWdpc3Rlck9uVG91Y2hlZCh0KXt0aGlzLm9uVG91Y2hlZD10fXNldERpc2FibGVkU3RhdGUodCl7dGhpcy5fcmVuZGVyZXIuc2V0UHJvcGVydHkodGhpcy5fZWxlbWVudFJlZi5uYXRpdmVFbGVtZW50LCJkaXNhYmxlZCIsdCl9X3JlZ2lzdGVyT3B0aW9uKCl7cmV0dXJuKHRoaXMuX2lkQ291bnRlcisrKS50b1N0cmluZygpfV9nZXRPcHRpb25JZCh0KXtmb3IoY29uc3QgbiBvZiBBcnJheS5mcm9tKHRoaXMuX29wdGlvbk1hcC5rZXlzKCkpKWlmKHRoaXMuX2NvbXBhcmVXaXRoKHRoaXMuX29wdGlvbk1hcC5nZXQobiksdCkpcmV0dXJuIG47cmV0dXJuIG51bGx9X2dldE9wdGlvblZhbHVlKHQpe2NvbnN0IG49KGZ1bmN0aW9uIGUodCl7cmV0dXJuIHQuc3BsaXQoIjoiKVswXX0pKHQpO3JldHVybiB0aGlzLl9vcHRpb25NYXAuaGFzKG4pP3RoaXMuX29wdGlvbk1hcC5nZXQobik6dH19b0wuybVmYWM9ZnVuY3Rpb24gdChuKXtyZXR1cm4gbmV3KG58fG9MKShaZyhTdSksWmcoeHUpKX0sb0wuybVkaXI9dm8oe3R5cGU6b0wsc2VsZWN0b3JzOltbInNlbGVjdCIsImZvcm1Db250cm9sTmFtZSIsIiIsMywibXVsdGlwbGUiLCIiXSxbInNlbGVjdCIsImZvcm1Db250cm9sIiwiIiwzLCJtdWx0aXBsZSIsIiJdLFsic2VsZWN0IiwibmdNb2RlbCIsIiIsMywibXVsdGlwbGUiLCIiXV0saG9zdEJpbmRpbmdzOmZ1bmN0aW9uIHQobixlKXsxJm4mJmNwKCJjaGFuZ2UiLChmdW5jdGlvbiB0KG4pe3JldHVybiBlLm9uQ2hhbmdlKG4udGFyZ2V0LnZhbHVlKX0pKSgiYmx1ciIsKGZ1bmN0aW9uIHQoKXtyZXR1cm4gZS5vblRvdWNoZWQoKX0pKX0saW5wdXRzOntjb21wYXJlV2l0aDoiY29tcGFyZVdpdGgifSxmZWF0dXJlczpbTXUoW2VMXSldfSksb0wuY3RvclBhcmFtZXRlcnM9KCk9Plt7dHlwZTpTdX0se3R5cGU6eHV9XSxvTC5wcm9wRGVjb3JhdG9ycz17Y29tcGFyZVdpdGg6W3t0eXBlOmZffV19O2NsYXNzIHJMe2NvbnN0cnVjdG9yKHQsbixlKXt0aGlzLl9lbGVtZW50PXQsdGhpcy5fcmVuZGVyZXI9bix0aGlzLl9zZWxlY3Q9ZSx0aGlzLl9zZWxlY3QmJih0aGlzLmlkPXRoaXMuX3NlbGVjdC5fcmVnaXN0ZXJPcHRpb24oKSl9c2V0IG5nVmFsdWUodCl7bnVsbCE9dGhpcy5fc2VsZWN0JiYodGhpcy5fc2VsZWN0Ll9vcHRpb25NYXAuc2V0KHRoaXMuaWQsdCksdGhpcy5fc2V0RWxlbWVudFZhbHVlKGFMKHRoaXMuaWQsdCkpLHRoaXMuX3NlbGVjdC53cml0ZVZhbHVlKHRoaXMuX3NlbGVjdC52YWx1ZSkpfXNldCB2YWx1ZSh0KXt0aGlzLl9zZXRFbGVtZW50VmFsdWUodCksdGhpcy5fc2VsZWN0JiZ0aGlzLl9zZWxlY3Qud3JpdGVWYWx1ZSh0aGlzLl9zZWxlY3QudmFsdWUpfV9zZXRFbGVtZW50VmFsdWUodCl7dGhpcy5fcmVuZGVyZXIuc2V0UHJvcGVydHkodGhpcy5fZWxlbWVudC5uYXRpdmVFbGVtZW50LCJ2YWx1ZSIsdCl9bmdPbkRlc3Ryb3koKXt0aGlzLl9zZWxlY3QmJih0aGlzLl9zZWxlY3QuX29wdGlvbk1hcC5kZWxldGUodGhpcy5pZCksdGhpcy5fc2VsZWN0LndyaXRlVmFsdWUodGhpcy5fc2VsZWN0LnZhbHVlKSl9fXJMLsm1ZmFjPWZ1bmN0aW9uIHQobil7cmV0dXJuIG5ldyhufHxyTCkoWmcoeHUpLFpnKFN1KSxaZyhvTCw5KSl9LHJMLsm1ZGlyPXZvKHt0eXBlOnJMLHNlbGVjdG9yczpbWyJvcHRpb24iXV0saW5wdXRzOntuZ1ZhbHVlOiJuZ1ZhbHVlIix2YWx1ZToidmFsdWUifX0pLHJMLmN0b3JQYXJhbWV0ZXJzPSgpPT5be3R5cGU6eHV9LHt0eXBlOlN1fSx7dHlwZTpvTCxkZWNvcmF0b3JzOlt7dHlwZTpOZX0se3R5cGU6SGV9XX1dLHJMLnByb3BEZWNvcmF0b3JzPXtuZ1ZhbHVlOlt7dHlwZTpmXyxhcmdzOlsibmdWYWx1ZSJdfV0sdmFsdWU6W3t0eXBlOmZfLGFyZ3M6WyJ2YWx1ZSJdfV19OwovKioKICAgICAqIEBsaWNlbnNlCiAgICAgKiBDb3B5cmlnaHQgR29vZ2xlIExMQyBBbGwgUmlnaHRzIFJlc2VydmVkLgogICAgICoKICAgICAqIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGFuIE1JVC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCiAgICAgKiBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlIGF0IGh0dHBzOi8vYW5ndWxhci5pby9saWNlbnNlCiAgICAgKi8KY29uc3QgaUw9e3Byb3ZpZGU6TUYsdXNlRXhpc3Rpbmc6YWEoKCgpPT5zTCkpLG11bHRpOiEwfTtmdW5jdGlvbiBjTCh0LG4pe3JldHVybiBudWxsPT10P2Ake259YDooInN0cmluZyI9PXR5cGVvZiBuJiYobj1gJyR7bn0nYCksbiYmIm9iamVjdCI9PXR5cGVvZiBuJiYobj0iT2JqZWN0IiksYCR7dH06ICR7bn1gLnNsaWNlKDAsNTApKX1jbGFzcyBzTHtjb25zdHJ1Y3Rvcih0LG4pe3RoaXMuX3JlbmRlcmVyPXQsdGhpcy5fZWxlbWVudFJlZj1uLHRoaXMuX29wdGlvbk1hcD1uZXcgTWFwLHRoaXMuX2lkQ291bnRlcj0wLHRoaXMub25DaGFuZ2U9dD0+e30sdGhpcy5vblRvdWNoZWQ9KCk9Pnt9LHRoaXMuX2NvbXBhcmVXaXRoPU9iamVjdC5pc31zZXQgY29tcGFyZVdpdGgodCl7aWYoImZ1bmN0aW9uIiE9dHlwZW9mIHQmJigidW5kZWZpbmVkIj09dHlwZW9mIG5nRGV2TW9kZXx8bmdEZXZNb2RlKSl0aHJvdyBuZXcgRXJyb3IoYGNvbXBhcmVXaXRoIG11c3QgYmUgYSBmdW5jdGlvbiwgYnV0IHJlY2VpdmVkICR7SlNPTi5zdHJpbmdpZnkodCl9YCk7dGhpcy5fY29tcGFyZVdpdGg9dH13cml0ZVZhbHVlKHQpe2xldCBuO2lmKHRoaXMudmFsdWU9dCxBcnJheS5pc0FycmF5KHQpKXtjb25zdCBlPXQubWFwKCh0PT50aGlzLl9nZXRPcHRpb25JZCh0KSkpO249KHQsbik9Pnt0Ll9zZXRTZWxlY3RlZChlLmluZGV4T2Yobi50b1N0cmluZygpKT4tMSl9fWVsc2Ugbj0odCxuKT0+e3QuX3NldFNlbGVjdGVkKCExKX07dGhpcy5fb3B0aW9uTWFwLmZvckVhY2gobil9cmVnaXN0ZXJPbkNoYW5nZSh0KXt0aGlzLm9uQ2hhbmdlPW49Pntjb25zdCBlPVtdO2lmKHZvaWQgMCE9PW4uc2VsZWN0ZWRPcHRpb25zKXtjb25zdCB0PW4uc2VsZWN0ZWRPcHRpb25zO2ZvcihsZXQgbj0wO248dC5sZW5ndGg7bisrKXtjb25zdCBhPXQuaXRlbShuKSxvPXRoaXMuX2dldE9wdGlvblZhbHVlKGEudmFsdWUpO2UucHVzaChvKX19ZWxzZXtjb25zdCB0PW4ub3B0aW9ucztmb3IobGV0IG49MDtuPHQubGVuZ3RoO24rKyl7Y29uc3QgYT10Lml0ZW0obik7aWYoYS5zZWxlY3RlZCl7Y29uc3QgdD10aGlzLl9nZXRPcHRpb25WYWx1ZShhLnZhbHVlKTtlLnB1c2godCl9fX10aGlzLnZhbHVlPWUsdChlKX19cmVnaXN0ZXJPblRvdWNoZWQodCl7dGhpcy5vblRvdWNoZWQ9dH1zZXREaXNhYmxlZFN0YXRlKHQpe3RoaXMuX3JlbmRlcmVyLnNldFByb3BlcnR5KHRoaXMuX2VsZW1lbnRSZWYubmF0aXZlRWxlbWVudCwiZGlzYWJsZWQiLHQpfV9yZWdpc3Rlck9wdGlvbih0KXtjb25zdCBuPSh0aGlzLl9pZENvdW50ZXIrKykudG9TdHJpbmcoKTtyZXR1cm4gdGhpcy5fb3B0aW9uTWFwLnNldChuLHQpLG59X2dldE9wdGlvbklkKHQpe2Zvcihjb25zdCBuIG9mIEFycmF5LmZyb20odGhpcy5fb3B0aW9uTWFwLmtleXMoKSkpaWYodGhpcy5fY29tcGFyZVdpdGgodGhpcy5fb3B0aW9uTWFwLmdldChuKS5fdmFsdWUsdCkpcmV0dXJuIG47cmV0dXJuIG51bGx9X2dldE9wdGlvblZhbHVlKHQpe2NvbnN0IG49KGZ1bmN0aW9uIGUodCl7cmV0dXJuIHQuc3BsaXQoIjoiKVswXX0pKHQpO3JldHVybiB0aGlzLl9vcHRpb25NYXAuaGFzKG4pP3RoaXMuX29wdGlvbk1hcC5nZXQobikuX3ZhbHVlOnR9fXNMLsm1ZmFjPWZ1bmN0aW9uIHQobil7cmV0dXJuIG5ldyhufHxzTCkoWmcoU3UpLFpnKHh1KSl9LHNMLsm1ZGlyPXZvKHt0eXBlOnNMLHNlbGVjdG9yczpbWyJzZWxlY3QiLCJtdWx0aXBsZSIsIiIsImZvcm1Db250cm9sTmFtZSIsIiJdLFsic2VsZWN0IiwibXVsdGlwbGUiLCIiLCJmb3JtQ29udHJvbCIsIiJdLFsic2VsZWN0IiwibXVsdGlwbGUiLCIiLCJuZ01vZGVsIiwiIl1dLGhvc3RCaW5kaW5nczpmdW5jdGlvbiB0KG4sZSl7MSZuJiZjcCgiY2hhbmdlIiwoZnVuY3Rpb24gdChuKXtyZXR1cm4gZS5vbkNoYW5nZShuLnRhcmdldCl9KSkoImJsdXIiLChmdW5jdGlvbiB0KCl7cmV0dXJuIGUub25Ub3VjaGVkKCl9KSl9LGlucHV0czp7Y29tcGFyZVdpdGg6ImNvbXBhcmVXaXRoIn0sZmVhdHVyZXM6W011KFtpTF0pXX0pLHNMLmN0b3JQYXJhbWV0ZXJzPSgpPT5be3R5cGU6U3V9LHt0eXBlOnh1fV0sc0wucHJvcERlY29yYXRvcnM9e2NvbXBhcmVXaXRoOlt7dHlwZTpmX31dfTtjbGFzcyBsTHtjb25zdHJ1Y3Rvcih0LG4sZSl7dGhpcy5fZWxlbWVudD10LHRoaXMuX3JlbmRlcmVyPW4sdGhpcy5fc2VsZWN0PWUsdGhpcy5fc2VsZWN0JiYodGhpcy5pZD10aGlzLl9zZWxlY3QuX3JlZ2lzdGVyT3B0aW9uKHRoaXMpKX1zZXQgbmdWYWx1ZSh0KXtudWxsIT10aGlzLl9zZWxlY3QmJih0aGlzLl92YWx1ZT10LHRoaXMuX3NldEVsZW1lbnRWYWx1ZShjTCh0aGlzLmlkLHQpKSx0aGlzLl9zZWxlY3Qud3JpdGVWYWx1ZSh0aGlzLl9zZWxlY3QudmFsdWUpKX1zZXQgdmFsdWUodCl7dGhpcy5fc2VsZWN0Pyh0aGlzLl92YWx1ZT10LHRoaXMuX3NldEVsZW1lbnRWYWx1ZShjTCh0aGlzLmlkLHQpKSx0aGlzLl9zZWxlY3Qud3JpdGVWYWx1ZSh0aGlzLl9zZWxlY3QudmFsdWUpKTp0aGlzLl9zZXRFbGVtZW50VmFsdWUodCl9X3NldEVsZW1lbnRWYWx1ZSh0KXt0aGlzLl9yZW5kZXJlci5zZXRQcm9wZXJ0eSh0aGlzLl9lbGVtZW50Lm5hdGl2ZUVsZW1lbnQsInZhbHVlIix0KX1fc2V0U2VsZWN0ZWQodCl7dGhpcy5fcmVuZGVyZXIuc2V0UHJvcGVydHkodGhpcy5fZWxlbWVudC5uYXRpdmVFbGVtZW50LCJzZWxlY3RlZCIsdCl9bmdPbkRlc3Ryb3koKXt0aGlzLl9zZWxlY3QmJih0aGlzLl9zZWxlY3QuX29wdGlvbk1hcC5kZWxldGUodGhpcy5pZCksdGhpcy5fc2VsZWN0LndyaXRlVmFsdWUodGhpcy5fc2VsZWN0LnZhbHVlKSl9fQovKioKICAgICAqIEBsaWNlbnNlCiAgICAgKiBDb3B5cmlnaHQgR29vZ2xlIExMQyBBbGwgUmlnaHRzIFJlc2VydmVkLgogICAgICoKICAgICAqIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGFuIE1JVC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCiAgICAgKiBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlIGF0IGh0dHBzOi8vYW5ndWxhci5pby9saWNlbnNlCiAgICAgKi8KZnVuY3Rpb24gbUwodCxuKXtyZXR1cm5bLi4ubi5wYXRoLHRdfWZ1bmN0aW9uIGRMKHQsbil7KCJ1bmRlZmluZWQiPT10eXBlb2YgbmdEZXZNb2RlfHxuZ0Rldk1vZGUpJiYodHx8YkwobiwiQ2Fubm90IGZpbmQgY29udHJvbCB3aXRoIiksbi52YWx1ZUFjY2Vzc29yfHxiTChuLCJObyB2YWx1ZSBhY2Nlc3NvciBmb3IgZm9ybSBjb250cm9sIHdpdGgiKSksdC52YWxpZGF0b3I9SEYuY29tcG9zZShbdC52YWxpZGF0b3Isbi52YWxpZGF0b3JdKSx0LmFzeW5jVmFsaWRhdG9yPUhGLmNvbXBvc2VBc3luYyhbdC5hc3luY1ZhbGlkYXRvcixuLmFzeW5jVmFsaWRhdG9yXSksbi52YWx1ZUFjY2Vzc29yLndyaXRlVmFsdWUodC52YWx1ZSksKGZ1bmN0aW9uIGUodCxuKXtuLnZhbHVlQWNjZXNzb3IucmVnaXN0ZXJPbkNoYW5nZSgoZT0+e3QuX3BlbmRpbmdWYWx1ZT1lLHQuX3BlbmRpbmdDaGFuZ2U9ITAsdC5fcGVuZGluZ0RpcnR5PSEwLCJjaGFuZ2UiPT09dC51cGRhdGVPbiYmZ0wodCxuKX0pKX0pKHQsbiksKGZ1bmN0aW9uIGEodCxuKXt0LnJlZ2lzdGVyT25DaGFuZ2UoKCh0LGUpPT57bi52YWx1ZUFjY2Vzc29yLndyaXRlVmFsdWUodCksZSYmbi52aWV3VG9Nb2RlbFVwZGF0ZSh0KX0pKX0pKHQsbiksKGZ1bmN0aW9uIG8odCxuKXtuLnZhbHVlQWNjZXNzb3IucmVnaXN0ZXJPblRvdWNoZWQoKCgpPT57dC5fcGVuZGluZ1RvdWNoZWQ9ITAsImJsdXIiPT09dC51cGRhdGVPbiYmdC5fcGVuZGluZ0NoYW5nZSYmZ0wodCxuKSwic3VibWl0IiE9PXQudXBkYXRlT24mJnQubWFya0FzVG91Y2hlZCgpfSkpfSkodCxuKSxuLnZhbHVlQWNjZXNzb3Iuc2V0RGlzYWJsZWRTdGF0ZSYmdC5yZWdpc3Rlck9uRGlzYWJsZWRDaGFuZ2UoKHQ9PntuLnZhbHVlQWNjZXNzb3Iuc2V0RGlzYWJsZWRTdGF0ZSh0KX0pKSxuLl9yYXdWYWxpZGF0b3JzLmZvckVhY2goKG49PntuLnJlZ2lzdGVyT25WYWxpZGF0b3JDaGFuZ2UmJm4ucmVnaXN0ZXJPblZhbGlkYXRvckNoYW5nZSgoKCk9PnQudXBkYXRlVmFsdWVBbmRWYWxpZGl0eSgpKSl9KSksbi5fcmF3QXN5bmNWYWxpZGF0b3JzLmZvckVhY2goKG49PntuLnJlZ2lzdGVyT25WYWxpZGF0b3JDaGFuZ2UmJm4ucmVnaXN0ZXJPblZhbGlkYXRvckNoYW5nZSgoKCk9PnQudXBkYXRlVmFsdWVBbmRWYWxpZGl0eSgpKSl9KSl9ZnVuY3Rpb24gZ0wodCxuKXt0Ll9wZW5kaW5nRGlydHkmJnQubWFya0FzRGlydHkoKSx0LnNldFZhbHVlKHQuX3BlbmRpbmdWYWx1ZSx7ZW1pdE1vZGVsVG9WaWV3Q2hhbmdlOiExfSksbi52aWV3VG9Nb2RlbFVwZGF0ZSh0Ll9wZW5kaW5nVmFsdWUpLHQuX3BlbmRpbmdDaGFuZ2U9ITF9ZnVuY3Rpb24gcEwodCxuKXtudWxsIT10fHwidW5kZWZpbmVkIiE9dHlwZW9mIG5nRGV2TW9kZSYmIW5nRGV2TW9kZXx8YkwobiwiQ2Fubm90IGZpbmQgY29udHJvbCB3aXRoIiksdC52YWxpZGF0b3I9SEYuY29tcG9zZShbdC52YWxpZGF0b3Isbi52YWxpZGF0b3JdKSx0LmFzeW5jVmFsaWRhdG9yPUhGLmNvbXBvc2VBc3luYyhbdC5hc3luY1ZhbGlkYXRvcixuLmFzeW5jVmFsaWRhdG9yXSl9ZnVuY3Rpb24gYkwodCxuKXtsZXQgZTt0aHJvdyBlPXQucGF0aC5sZW5ndGg+MT9gcGF0aDogJyR7dC5wYXRoLmpvaW4oIiAtPiAiKX0nYDp0LnBhdGhbMF0/YG5hbWU6ICcke3QucGF0aH0nYDoidW5zcGVjaWZpZWQgbmFtZSBhdHRyaWJ1dGUiLG5ldyBFcnJvcihgJHtufSAke2V9YCl9ZnVuY3Rpb24gdUwodCl7cmV0dXJuIG51bGwhPXQ/SEYuY29tcG9zZShXRih0KSk6bnVsbH1mdW5jdGlvbiBmTCh0KXtyZXR1cm4gbnVsbCE9dD9IRi5jb21wb3NlQXN5bmMoV0YodCkpOm51bGx9ZnVuY3Rpb24gaEwodCxuKXtpZighdC5oYXNPd25Qcm9wZXJ0eSgibW9kZWwiKSlyZXR1cm4hMTtjb25zdCBlPXQubW9kZWw7cmV0dXJuISFlLmlzRmlyc3RDaGFuZ2UoKXx8IU9iamVjdC5pcyhuLGUuY3VycmVudFZhbHVlKX1sTC7JtWZhYz1mdW5jdGlvbiB0KG4pe3JldHVybiBuZXcobnx8bEwpKFpnKHh1KSxaZyhTdSksWmcoc0wsOSkpfSxsTC7JtWRpcj12byh7dHlwZTpsTCxzZWxlY3RvcnM6W1sib3B0aW9uIl1dLGlucHV0czp7bmdWYWx1ZToibmdWYWx1ZSIsdmFsdWU6InZhbHVlIn19KSxsTC5jdG9yUGFyYW1ldGVycz0oKT0+W3t0eXBlOnh1fSx7dHlwZTpTdX0se3R5cGU6c0wsZGVjb3JhdG9yczpbe3R5cGU6TmV9LHt0eXBlOkhlfV19XSxsTC5wcm9wRGVjb3JhdG9ycz17bmdWYWx1ZTpbe3R5cGU6Zl8sYXJnczpbIm5nVmFsdWUiXX1dLHZhbHVlOlt7dHlwZTpmXyxhcmdzOlsidmFsdWUiXX1dfTtjb25zdCBfTD1bUEYsUUYsWUYsb0wsc0wsWEZdO2Z1bmN0aW9uIENMKHQsbil7dC5fc3luY1BlbmRpbmdDb250cm9scygpLG4uZm9yRWFjaCgodD0+e2NvbnN0IG49dC5jb250cm9sOyJzdWJtaXQiPT09bi51cGRhdGVPbiYmbi5fcGVuZGluZ0NoYW5nZSYmKHQudmlld1RvTW9kZWxVcGRhdGUobi5fcGVuZGluZ1ZhbHVlKSxuLl9wZW5kaW5nQ2hhbmdlPSExKX0pKX1mdW5jdGlvbiBNTCh0LG4pe2lmKCFuKXJldHVybiBudWxsO2xldCBlLGEsbztyZXR1cm4gQXJyYXkuaXNBcnJheShuKXx8InVuZGVmaW5lZCIhPXR5cGVvZiBuZ0Rldk1vZGUmJiFuZ0Rldk1vZGV8fGJMKHQsIlZhbHVlIGFjY2Vzc29yIHdhcyBub3QgcHJvdmlkZWQgYXMgYW4gYXJyYXkgZm9yIGZvcm0gY29udHJvbCB3aXRoIiksbi5mb3JFYWNoKChuPT57bi5jb25zdHJ1Y3Rvcj09PWtGP2U9bjooZnVuY3Rpb24gcih0KXtyZXR1cm4gX0wuc29tZSgobj0+dC5jb25zdHJ1Y3Rvcj09PW4pKX0pKG4pPyhhJiYoInVuZGVmaW5lZCI9PXR5cGVvZiBuZ0Rldk1vZGV8fG5nRGV2TW9kZSkmJmJMKHQsIk1vcmUgdGhhbiBvbmUgYnVpbHQtaW4gdmFsdWUgYWNjZXNzb3IgbWF0Y2hlcyBmb3JtIGNvbnRyb2wgd2l0aCIpLGE9bik6KG8mJigidW5kZWZpbmVkIj09dHlwZW9mIG5nRGV2TW9kZXx8bmdEZXZNb2RlKSYmYkwodCwiTW9yZSB0aGFuIG9uZSBjdXN0b20gdmFsdWUgYWNjZXNzb3IgbWF0Y2hlcyBmb3JtIGNvbnRyb2wgd2l0aCIpLG89bil9KSksb3x8YXx8ZXx8KCgidW5kZWZpbmVkIj09dHlwZW9mIG5nRGV2TW9kZXx8bmdEZXZNb2RlKSYmYkwodCwiTm8gdmFsaWQgdmFsdWUgYWNjZXNzb3IgZm9yIGZvcm0gY29udHJvbCB3aXRoIiksbnVsbCl9ZnVuY3Rpb24gT0wodCxuKXtjb25zdCBlPXQuaW5kZXhPZihuKTtlPi0xJiZ0LnNwbGljZShlLDEpfWZ1bmN0aW9uIFBMKHQsbixlLGEpe19jKCkmJiJuZXZlciIhPT1hJiYoKG51bGwhPT1hJiYib25jZSIhPT1hfHxuLl9uZ01vZGVsV2FybmluZ1NlbnRPbmNlKSYmKCJhbHdheXMiIT09YXx8ZS5fbmdNb2RlbFdhcm5pbmdTZW50KXx8KCgidW5kZWZpbmVkIj09dHlwZW9mIG5nRGV2TW9kZXx8bmdEZXZNb2RlKSYmbkwubmdNb2RlbFdhcm5pbmcodCksbi5fbmdNb2RlbFdhcm5pbmdTZW50T25jZT0hMCxlLl9uZ01vZGVsV2FybmluZ1NlbnQ9ITApKX0KLyoqCiAgICAgKiBAbGljZW5zZQogICAgICogQ29weXJpZ2h0IEdvb2dsZSBMTEMgQWxsIFJpZ2h0cyBSZXNlcnZlZC4KICAgICAqCiAgICAgKiBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhbiBNSVQtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQogICAgICogZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZSBhdCBodHRwczovL2FuZ3VsYXIuaW8vbGljZW5zZQogICAgICovY29uc3QgeEw9IlZBTElEIix5TD0iSU5WQUxJRCIsa0w9IlBFTkRJTkciLHZMPSJESVNBQkxFRCI7ZnVuY3Rpb24gd0wodCl7cmV0dXJuKHpMKHQpP3QudmFsaWRhdG9yczp0KXx8bnVsbH1mdW5jdGlvbiBTTCh0KXtyZXR1cm4gQXJyYXkuaXNBcnJheSh0KT91TCh0KTp0fHxudWxsfWZ1bmN0aW9uIEVMKHQsbil7cmV0dXJuKHpMKG4pP24uYXN5bmNWYWxpZGF0b3JzOnQpfHxudWxsfWZ1bmN0aW9uIEFMKHQpe3JldHVybiBBcnJheS5pc0FycmF5KHQpP2ZMKHQpOnR8fG51bGx9ZnVuY3Rpb24gekwodCl7cmV0dXJuIG51bGwhPXQmJiFBcnJheS5pc0FycmF5KHQpJiYib2JqZWN0Ij09dHlwZW9mIHR9Y2xhc3MgUkx7Y29uc3RydWN0b3IodCxuKXt0aGlzLl9oYXNPd25QZW5kaW5nQXN5bmNWYWxpZGF0b3I9ITEsdGhpcy5fb25Db2xsZWN0aW9uQ2hhbmdlPSgpPT57fSx0aGlzLnByaXN0aW5lPSEwLHRoaXMudG91Y2hlZD0hMSx0aGlzLl9vbkRpc2FibGVkQ2hhbmdlPVtdLHRoaXMuX3Jhd1ZhbGlkYXRvcnM9dCx0aGlzLl9yYXdBc3luY1ZhbGlkYXRvcnM9bix0aGlzLl9jb21wb3NlZFZhbGlkYXRvckZuPVNMKHRoaXMuX3Jhd1ZhbGlkYXRvcnMpLHRoaXMuX2NvbXBvc2VkQXN5bmNWYWxpZGF0b3JGbj1BTCh0aGlzLl9yYXdBc3luY1ZhbGlkYXRvcnMpfWdldCB2YWxpZGF0b3IoKXtyZXR1cm4gdGhpcy5fY29tcG9zZWRWYWxpZGF0b3JGbn1zZXQgdmFsaWRhdG9yKHQpe3RoaXMuX3Jhd1ZhbGlkYXRvcnM9dGhpcy5fY29tcG9zZWRWYWxpZGF0b3JGbj10fWdldCBhc3luY1ZhbGlkYXRvcigpe3JldHVybiB0aGlzLl9jb21wb3NlZEFzeW5jVmFsaWRhdG9yRm59c2V0IGFzeW5jVmFsaWRhdG9yKHQpe3RoaXMuX3Jhd0FzeW5jVmFsaWRhdG9ycz10aGlzLl9jb21wb3NlZEFzeW5jVmFsaWRhdG9yRm49dH1nZXQgcGFyZW50KCl7cmV0dXJuIHRoaXMuX3BhcmVudH1nZXQgdmFsaWQoKXtyZXR1cm4gdGhpcy5zdGF0dXM9PT14TH1nZXQgaW52YWxpZCgpe3JldHVybiB0aGlzLnN0YXR1cz09PXlMfWdldCBwZW5kaW5nKCl7cmV0dXJuIHRoaXMuc3RhdHVzPT1rTH1nZXQgZGlzYWJsZWQoKXtyZXR1cm4gdGhpcy5zdGF0dXM9PT12TH1nZXQgZW5hYmxlZCgpe3JldHVybiB0aGlzLnN0YXR1cyE9PXZMfWdldCBkaXJ0eSgpe3JldHVybiF0aGlzLnByaXN0aW5lfWdldCB1bnRvdWNoZWQoKXtyZXR1cm4hdGhpcy50b3VjaGVkfWdldCB1cGRhdGVPbigpe3JldHVybiB0aGlzLl91cGRhdGVPbj90aGlzLl91cGRhdGVPbjp0aGlzLnBhcmVudD90aGlzLnBhcmVudC51cGRhdGVPbjoiY2hhbmdlIn1zZXRWYWxpZGF0b3JzKHQpe3RoaXMuX3Jhd1ZhbGlkYXRvcnM9dCx0aGlzLl9jb21wb3NlZFZhbGlkYXRvckZuPVNMKHQpfXNldEFzeW5jVmFsaWRhdG9ycyh0KXt0aGlzLl9yYXdBc3luY1ZhbGlkYXRvcnM9dCx0aGlzLl9jb21wb3NlZEFzeW5jVmFsaWRhdG9yRm49QUwodCl9Y2xlYXJWYWxpZGF0b3JzKCl7dGhpcy52YWxpZGF0b3I9bnVsbH1jbGVhckFzeW5jVmFsaWRhdG9ycygpe3RoaXMuYXN5bmNWYWxpZGF0b3I9bnVsbH1tYXJrQXNUb3VjaGVkKHQ9e30pe3RoaXMudG91Y2hlZD0hMCx0aGlzLl9wYXJlbnQmJiF0Lm9ubHlTZWxmJiZ0aGlzLl9wYXJlbnQubWFya0FzVG91Y2hlZCh0KX1tYXJrQWxsQXNUb3VjaGVkKCl7dGhpcy5tYXJrQXNUb3VjaGVkKHtvbmx5U2VsZjohMH0pLHRoaXMuX2ZvckVhY2hDaGlsZCgodD0+dC5tYXJrQWxsQXNUb3VjaGVkKCkpKX1tYXJrQXNVbnRvdWNoZWQodD17fSl7dGhpcy50b3VjaGVkPSExLHRoaXMuX3BlbmRpbmdUb3VjaGVkPSExLHRoaXMuX2ZvckVhY2hDaGlsZCgodD0+e3QubWFya0FzVW50b3VjaGVkKHtvbmx5U2VsZjohMH0pfSkpLHRoaXMuX3BhcmVudCYmIXQub25seVNlbGYmJnRoaXMuX3BhcmVudC5fdXBkYXRlVG91Y2hlZCh0KX1tYXJrQXNEaXJ0eSh0PXt9KXt0aGlzLnByaXN0aW5lPSExLHRoaXMuX3BhcmVudCYmIXQub25seVNlbGYmJnRoaXMuX3BhcmVudC5tYXJrQXNEaXJ0eSh0KX1tYXJrQXNQcmlzdGluZSh0PXt9KXt0aGlzLnByaXN0aW5lPSEwLHRoaXMuX3BlbmRpbmdEaXJ0eT0hMSx0aGlzLl9mb3JFYWNoQ2hpbGQoKHQ9Pnt0Lm1hcmtBc1ByaXN0aW5lKHtvbmx5U2VsZjohMH0pfSkpLHRoaXMuX3BhcmVudCYmIXQub25seVNlbGYmJnRoaXMuX3BhcmVudC5fdXBkYXRlUHJpc3RpbmUodCl9bWFya0FzUGVuZGluZyh0PXt9KXt0aGlzLnN0YXR1cz1rTCwhMSE9PXQuZW1pdEV2ZW50JiZ0aGlzLnN0YXR1c0NoYW5nZXMuZW1pdCh0aGlzLnN0YXR1cyksdGhpcy5fcGFyZW50JiYhdC5vbmx5U2VsZiYmdGhpcy5fcGFyZW50Lm1hcmtBc1BlbmRpbmcodCl9ZGlzYWJsZSh0PXt9KXtjb25zdCBuPXRoaXMuX3BhcmVudE1hcmtlZERpcnR5KHQub25seVNlbGYpO3RoaXMuc3RhdHVzPXZMLHRoaXMuZXJyb3JzPW51bGwsdGhpcy5fZm9yRWFjaENoaWxkKChuPT57bi5kaXNhYmxlKE9iamVjdC5hc3NpZ24oT2JqZWN0LmFzc2lnbih7fSx0KSx7b25seVNlbGY6ITB9KSl9KSksdGhpcy5fdXBkYXRlVmFsdWUoKSwhMSE9PXQuZW1pdEV2ZW50JiYodGhpcy52YWx1ZUNoYW5nZXMuZW1pdCh0aGlzLnZhbHVlKSx0aGlzLnN0YXR1c0NoYW5nZXMuZW1pdCh0aGlzLnN0YXR1cykpLHRoaXMuX3VwZGF0ZUFuY2VzdG9ycyhPYmplY3QuYXNzaWduKE9iamVjdC5hc3NpZ24oe30sdCkse3NraXBQcmlzdGluZUNoZWNrOm59KSksdGhpcy5fb25EaXNhYmxlZENoYW5nZS5mb3JFYWNoKCh0PT50KCEwKSkpfWVuYWJsZSh0PXt9KXtjb25zdCBuPXRoaXMuX3BhcmVudE1hcmtlZERpcnR5KHQub25seVNlbGYpO3RoaXMuc3RhdHVzPXhMLHRoaXMuX2ZvckVhY2hDaGlsZCgobj0+e24uZW5hYmxlKE9iamVjdC5hc3NpZ24oT2JqZWN0LmFzc2lnbih7fSx0KSx7b25seVNlbGY6ITB9KSl9KSksdGhpcy51cGRhdGVWYWx1ZUFuZFZhbGlkaXR5KHtvbmx5U2VsZjohMCxlbWl0RXZlbnQ6dC5lbWl0RXZlbnR9KSx0aGlzLl91cGRhdGVBbmNlc3RvcnMoT2JqZWN0LmFzc2lnbihPYmplY3QuYXNzaWduKHt9LHQpLHtza2lwUHJpc3RpbmVDaGVjazpufSkpLHRoaXMuX29uRGlzYWJsZWRDaGFuZ2UuZm9yRWFjaCgodD0+dCghMSkpKX1fdXBkYXRlQW5jZXN0b3JzKHQpe3RoaXMuX3BhcmVudCYmIXQub25seVNlbGYmJih0aGlzLl9wYXJlbnQudXBkYXRlVmFsdWVBbmRWYWxpZGl0eSh0KSx0LnNraXBQcmlzdGluZUNoZWNrfHx0aGlzLl9wYXJlbnQuX3VwZGF0ZVByaXN0aW5lKCksdGhpcy5fcGFyZW50Ll91cGRhdGVUb3VjaGVkKCkpfXNldFBhcmVudCh0KXt0aGlzLl9wYXJlbnQ9dH11cGRhdGVWYWx1ZUFuZFZhbGlkaXR5KHQ9e30pe3RoaXMuX3NldEluaXRpYWxTdGF0dXMoKSx0aGlzLl91cGRhdGVWYWx1ZSgpLHRoaXMuZW5hYmxlZCYmKHRoaXMuX2NhbmNlbEV4aXN0aW5nU3Vic2NyaXB0aW9uKCksdGhpcy5lcnJvcnM9dGhpcy5fcnVuVmFsaWRhdG9yKCksdGhpcy5zdGF0dXM9dGhpcy5fY2FsY3VsYXRlU3RhdHVzKCksdGhpcy5zdGF0dXMhPT14TCYmdGhpcy5zdGF0dXMhPT1rTHx8dGhpcy5fcnVuQXN5bmNWYWxpZGF0b3IodC5lbWl0RXZlbnQpKSwhMSE9PXQuZW1pdEV2ZW50JiYodGhpcy52YWx1ZUNoYW5nZXMuZW1pdCh0aGlzLnZhbHVlKSx0aGlzLnN0YXR1c0NoYW5nZXMuZW1pdCh0aGlzLnN0YXR1cykpLHRoaXMuX3BhcmVudCYmIXQub25seVNlbGYmJnRoaXMuX3BhcmVudC51cGRhdGVWYWx1ZUFuZFZhbGlkaXR5KHQpfV91cGRhdGVUcmVlVmFsaWRpdHkodD17ZW1pdEV2ZW50OiEwfSl7dGhpcy5fZm9yRWFjaENoaWxkKChuPT5uLl91cGRhdGVUcmVlVmFsaWRpdHkodCkpKSx0aGlzLnVwZGF0ZVZhbHVlQW5kVmFsaWRpdHkoe29ubHlTZWxmOiEwLGVtaXRFdmVudDp0LmVtaXRFdmVudH0pfV9zZXRJbml0aWFsU3RhdHVzKCl7dGhpcy5zdGF0dXM9dGhpcy5fYWxsQ29udHJvbHNEaXNhYmxlZCgpP3ZMOnhMfV9ydW5WYWxpZGF0b3IoKXtyZXR1cm4gdGhpcy52YWxpZGF0b3I/dGhpcy52YWxpZGF0b3IodGhpcyk6bnVsbH1fcnVuQXN5bmNWYWxpZGF0b3IodCl7aWYodGhpcy5hc3luY1ZhbGlkYXRvcil7dGhpcy5zdGF0dXM9a0wsdGhpcy5faGFzT3duUGVuZGluZ0FzeW5jVmFsaWRhdG9yPSEwO2NvbnN0IG49VkYodGhpcy5hc3luY1ZhbGlkYXRvcih0aGlzKSk7dGhpcy5fYXN5bmNWYWxpZGF0aW9uU3Vic2NyaXB0aW9uPW4uc3Vic2NyaWJlKChuPT57dGhpcy5faGFzT3duUGVuZGluZ0FzeW5jVmFsaWRhdG9yPSExLHRoaXMuc2V0RXJyb3JzKG4se2VtaXRFdmVudDp0fSl9KSl9fV9jYW5jZWxFeGlzdGluZ1N1YnNjcmlwdGlvbigpe3RoaXMuX2FzeW5jVmFsaWRhdGlvblN1YnNjcmlwdGlvbiYmKHRoaXMuX2FzeW5jVmFsaWRhdGlvblN1YnNjcmlwdGlvbi51bnN1YnNjcmliZSgpLHRoaXMuX2hhc093blBlbmRpbmdBc3luY1ZhbGlkYXRvcj0hMSl9c2V0RXJyb3JzKHQsbj17fSl7dGhpcy5lcnJvcnM9dCx0aGlzLl91cGRhdGVDb250cm9sc0Vycm9ycyghMSE9PW4uZW1pdEV2ZW50KX1nZXQodCl7cmV0dXJuKGZ1bmN0aW9uIG4odCxlLGEpe2lmKG51bGw9PWUpcmV0dXJuIG51bGw7aWYoQXJyYXkuaXNBcnJheShlKXx8KGU9ZS5zcGxpdChhKSksQXJyYXkuaXNBcnJheShlKSYmMD09PWUubGVuZ3RoKXJldHVybiBudWxsO2xldCBvPXQ7cmV0dXJuIGUuZm9yRWFjaCgodD0+e289byBpbnN0YW5jZW9mIERMP28uY29udHJvbHMuaGFzT3duUHJvcGVydHkodCk/by5jb250cm9sc1t0XTpudWxsOm8gaW5zdGFuY2VvZiBJTCYmby5hdCh0KXx8bnVsbH0pKSxvfSkodGhpcyx0LCIuIil9Z2V0RXJyb3IodCxuKXtjb25zdCBlPW4/dGhpcy5nZXQobik6dGhpcztyZXR1cm4gZSYmZS5lcnJvcnM/ZS5lcnJvcnNbdF06bnVsbH1oYXNFcnJvcih0LG4pe3JldHVybiEhdGhpcy5nZXRFcnJvcih0LG4pfWdldCByb290KCl7bGV0IHQ9dGhpcztmb3IoO3QuX3BhcmVudDspdD10Ll9wYXJlbnQ7cmV0dXJuIHR9X3VwZGF0ZUNvbnRyb2xzRXJyb3JzKHQpe3RoaXMuc3RhdHVzPXRoaXMuX2NhbGN1bGF0ZVN0YXR1cygpLHQmJnRoaXMuc3RhdHVzQ2hhbmdlcy5lbWl0KHRoaXMuc3RhdHVzKSx0aGlzLl9wYXJlbnQmJnRoaXMuX3BhcmVudC5fdXBkYXRlQ29udHJvbHNFcnJvcnModCl9X2luaXRPYnNlcnZhYmxlcygpe3RoaXMudmFsdWVDaGFuZ2VzPW5ldyBFZix0aGlzLnN0YXR1c0NoYW5nZXM9bmV3IEVmfV9jYWxjdWxhdGVTdGF0dXMoKXtyZXR1cm4gdGhpcy5fYWxsQ29udHJvbHNEaXNhYmxlZCgpP3ZMOnRoaXMuZXJyb3JzP3lMOnRoaXMuX2hhc093blBlbmRpbmdBc3luY1ZhbGlkYXRvcnx8dGhpcy5fYW55Q29udHJvbHNIYXZlU3RhdHVzKGtMKT9rTDp0aGlzLl9hbnlDb250cm9sc0hhdmVTdGF0dXMoeUwpP3lMOnhMfV9hbnlDb250cm9sc0hhdmVTdGF0dXModCl7cmV0dXJuIHRoaXMuX2FueUNvbnRyb2xzKChuPT5uLnN0YXR1cz09PXQpKX1fYW55Q29udHJvbHNEaXJ0eSgpe3JldHVybiB0aGlzLl9hbnlDb250cm9scygodD0+dC5kaXJ0eSkpfV9hbnlDb250cm9sc1RvdWNoZWQoKXtyZXR1cm4gdGhpcy5fYW55Q29udHJvbHMoKHQ9PnQudG91Y2hlZCkpfV91cGRhdGVQcmlzdGluZSh0PXt9KXt0aGlzLnByaXN0aW5lPSF0aGlzLl9hbnlDb250cm9sc0RpcnR5KCksdGhpcy5fcGFyZW50JiYhdC5vbmx5U2VsZiYmdGhpcy5fcGFyZW50Ll91cGRhdGVQcmlzdGluZSh0KX1fdXBkYXRlVG91Y2hlZCh0PXt9KXt0aGlzLnRvdWNoZWQ9dGhpcy5fYW55Q29udHJvbHNUb3VjaGVkKCksdGhpcy5fcGFyZW50JiYhdC5vbmx5U2VsZiYmdGhpcy5fcGFyZW50Ll91cGRhdGVUb3VjaGVkKHQpfV9pc0JveGVkVmFsdWUodCl7cmV0dXJuIm9iamVjdCI9PXR5cGVvZiB0JiZudWxsIT09dCYmMj09PU9iamVjdC5rZXlzKHQpLmxlbmd0aCYmInZhbHVlImluIHQmJiJkaXNhYmxlZCJpbiB0fV9yZWdpc3Rlck9uQ29sbGVjdGlvbkNoYW5nZSh0KXt0aGlzLl9vbkNvbGxlY3Rpb25DaGFuZ2U9dH1fc2V0VXBkYXRlU3RyYXRlZ3kodCl7ekwodCkmJm51bGwhPXQudXBkYXRlT24mJih0aGlzLl91cGRhdGVPbj10LnVwZGF0ZU9uKX1fcGFyZW50TWFya2VkRGlydHkodCl7cmV0dXJuIXQmJnRoaXMuX3BhcmVudCYmdGhpcy5fcGFyZW50LmRpcnR5JiYhdGhpcy5fcGFyZW50Ll9hbnlDb250cm9sc0RpcnR5KCl9fWNsYXNzIFRMIGV4dGVuZHMgUkx7Y29uc3RydWN0b3IodD1udWxsLG4sZSl7c3VwZXIod0wobiksRUwoZSxuKSksdGhpcy5fb25DaGFuZ2U9W10sdGhpcy5fYXBwbHlGb3JtU3RhdGUodCksdGhpcy5fc2V0VXBkYXRlU3RyYXRlZ3kobiksdGhpcy51cGRhdGVWYWx1ZUFuZFZhbGlkaXR5KHtvbmx5U2VsZjohMCxlbWl0RXZlbnQ6ITF9KSx0aGlzLl9pbml0T2JzZXJ2YWJsZXMoKX1zZXRWYWx1ZSh0LG49e30pe3RoaXMudmFsdWU9dGhpcy5fcGVuZGluZ1ZhbHVlPXQsdGhpcy5fb25DaGFuZ2UubGVuZ3RoJiYhMSE9PW4uZW1pdE1vZGVsVG9WaWV3Q2hhbmdlJiZ0aGlzLl9vbkNoYW5nZS5mb3JFYWNoKCh0PT50KHRoaXMudmFsdWUsITEhPT1uLmVtaXRWaWV3VG9Nb2RlbENoYW5nZSkpKSx0aGlzLnVwZGF0ZVZhbHVlQW5kVmFsaWRpdHkobil9cGF0Y2hWYWx1ZSh0LG49e30pe3RoaXMuc2V0VmFsdWUodCxuKX1yZXNldCh0PW51bGwsbj17fSl7dGhpcy5fYXBwbHlGb3JtU3RhdGUodCksdGhpcy5tYXJrQXNQcmlzdGluZShuKSx0aGlzLm1hcmtBc1VudG91Y2hlZChuKSx0aGlzLnNldFZhbHVlKHRoaXMudmFsdWUsbiksdGhpcy5fcGVuZGluZ0NoYW5nZT0hMX1fdXBkYXRlVmFsdWUoKXt9X2FueUNvbnRyb2xzKHQpe3JldHVybiExfV9hbGxDb250cm9sc0Rpc2FibGVkKCl7cmV0dXJuIHRoaXMuZGlzYWJsZWR9cmVnaXN0ZXJPbkNoYW5nZSh0KXt0aGlzLl9vbkNoYW5nZS5wdXNoKHQpfV9jbGVhckNoYW5nZUZucygpe3RoaXMuX29uQ2hhbmdlPVtdLHRoaXMuX29uRGlzYWJsZWRDaGFuZ2U9W10sdGhpcy5fb25Db2xsZWN0aW9uQ2hhbmdlPSgpPT57fX1yZWdpc3Rlck9uRGlzYWJsZWRDaGFuZ2UodCl7dGhpcy5fb25EaXNhYmxlZENoYW5nZS5wdXNoKHQpfV9mb3JFYWNoQ2hpbGQodCl7fV9zeW5jUGVuZGluZ0NvbnRyb2xzKCl7cmV0dXJuISgic3VibWl0IiE9PXRoaXMudXBkYXRlT258fCh0aGlzLl9wZW5kaW5nRGlydHkmJnRoaXMubWFya0FzRGlydHkoKSx0aGlzLl9wZW5kaW5nVG91Y2hlZCYmdGhpcy5tYXJrQXNUb3VjaGVkKCksIXRoaXMuX3BlbmRpbmdDaGFuZ2UpfHwodGhpcy5zZXRWYWx1ZSh0aGlzLl9wZW5kaW5nVmFsdWUse29ubHlTZWxmOiEwLGVtaXRNb2RlbFRvVmlld0NoYW5nZTohMX0pLDApKX1fYXBwbHlGb3JtU3RhdGUodCl7dGhpcy5faXNCb3hlZFZhbHVlKHQpPyh0aGlzLnZhbHVlPXRoaXMuX3BlbmRpbmdWYWx1ZT10LnZhbHVlLHQuZGlzYWJsZWQ/dGhpcy5kaXNhYmxlKHtvbmx5U2VsZjohMCxlbWl0RXZlbnQ6ITF9KTp0aGlzLmVuYWJsZSh7b25seVNlbGY6ITAsZW1pdEV2ZW50OiExfSkpOnRoaXMudmFsdWU9dGhpcy5fcGVuZGluZ1ZhbHVlPXR9fWNsYXNzIERMIGV4dGVuZHMgUkx7Y29uc3RydWN0b3IodCxuLGUpe3N1cGVyKHdMKG4pLEVMKGUsbikpLHRoaXMuY29udHJvbHM9dCx0aGlzLl9pbml0T2JzZXJ2YWJsZXMoKSx0aGlzLl9zZXRVcGRhdGVTdHJhdGVneShuKSx0aGlzLl9zZXRVcENvbnRyb2xzKCksdGhpcy51cGRhdGVWYWx1ZUFuZFZhbGlkaXR5KHtvbmx5U2VsZjohMCxlbWl0RXZlbnQ6ITF9KX1yZWdpc3RlckNvbnRyb2wodCxuKXtyZXR1cm4gdGhpcy5jb250cm9sc1t0XT90aGlzLmNvbnRyb2xzW3RdOih0aGlzLmNvbnRyb2xzW3RdPW4sbi5zZXRQYXJlbnQodGhpcyksbi5fcmVnaXN0ZXJPbkNvbGxlY3Rpb25DaGFuZ2UodGhpcy5fb25Db2xsZWN0aW9uQ2hhbmdlKSxuKX1hZGRDb250cm9sKHQsbil7dGhpcy5yZWdpc3RlckNvbnRyb2wodCxuKSx0aGlzLnVwZGF0ZVZhbHVlQW5kVmFsaWRpdHkoKSx0aGlzLl9vbkNvbGxlY3Rpb25DaGFuZ2UoKX1yZW1vdmVDb250cm9sKHQpe3RoaXMuY29udHJvbHNbdF0mJnRoaXMuY29udHJvbHNbdF0uX3JlZ2lzdGVyT25Db2xsZWN0aW9uQ2hhbmdlKCgoKT0+e30pKSxkZWxldGUgdGhpcy5jb250cm9sc1t0XSx0aGlzLnVwZGF0ZVZhbHVlQW5kVmFsaWRpdHkoKSx0aGlzLl9vbkNvbGxlY3Rpb25DaGFuZ2UoKX1zZXRDb250cm9sKHQsbil7dGhpcy5jb250cm9sc1t0XSYmdGhpcy5jb250cm9sc1t0XS5fcmVnaXN0ZXJPbkNvbGxlY3Rpb25DaGFuZ2UoKCgpPT57fSkpLGRlbGV0ZSB0aGlzLmNvbnRyb2xzW3RdLG4mJnRoaXMucmVnaXN0ZXJDb250cm9sKHQsbiksdGhpcy51cGRhdGVWYWx1ZUFuZFZhbGlkaXR5KCksdGhpcy5fb25Db2xsZWN0aW9uQ2hhbmdlKCl9Y29udGFpbnModCl7cmV0dXJuIHRoaXMuY29udHJvbHMuaGFzT3duUHJvcGVydHkodCkmJnRoaXMuY29udHJvbHNbdF0uZW5hYmxlZH1zZXRWYWx1ZSh0LG49e30pe3RoaXMuX2NoZWNrQWxsVmFsdWVzUHJlc2VudCh0KSxPYmplY3Qua2V5cyh0KS5mb3JFYWNoKChlPT57dGhpcy5fdGhyb3dJZkNvbnRyb2xNaXNzaW5nKGUpLHRoaXMuY29udHJvbHNbZV0uc2V0VmFsdWUodFtlXSx7b25seVNlbGY6ITAsZW1pdEV2ZW50Om4uZW1pdEV2ZW50fSl9KSksdGhpcy51cGRhdGVWYWx1ZUFuZFZhbGlkaXR5KG4pfXBhdGNoVmFsdWUodCxuPXt9KXtPYmplY3Qua2V5cyh0KS5mb3JFYWNoKChlPT57dGhpcy5jb250cm9sc1tlXSYmdGhpcy5jb250cm9sc1tlXS5wYXRjaFZhbHVlKHRbZV0se29ubHlTZWxmOiEwLGVtaXRFdmVudDpuLmVtaXRFdmVudH0pfSkpLHRoaXMudXBkYXRlVmFsdWVBbmRWYWxpZGl0eShuKX1yZXNldCh0PXt9LG49e30pe3RoaXMuX2ZvckVhY2hDaGlsZCgoKGUsYSk9PntlLnJlc2V0KHRbYV0se29ubHlTZWxmOiEwLGVtaXRFdmVudDpuLmVtaXRFdmVudH0pfSkpLHRoaXMuX3VwZGF0ZVByaXN0aW5lKG4pLHRoaXMuX3VwZGF0ZVRvdWNoZWQobiksdGhpcy51cGRhdGVWYWx1ZUFuZFZhbGlkaXR5KG4pfWdldFJhd1ZhbHVlKCl7cmV0dXJuIHRoaXMuX3JlZHVjZUNoaWxkcmVuKHt9LCgodCxuLGUpPT4odFtlXT1uIGluc3RhbmNlb2YgVEw/bi52YWx1ZTpuLmdldFJhd1ZhbHVlKCksdCkpKX1fc3luY1BlbmRpbmdDb250cm9scygpe2xldCB0PXRoaXMuX3JlZHVjZUNoaWxkcmVuKCExLCgodCxuKT0+ISFuLl9zeW5jUGVuZGluZ0NvbnRyb2xzKCl8fHQpKTtyZXR1cm4gdCYmdGhpcy51cGRhdGVWYWx1ZUFuZFZhbGlkaXR5KHtvbmx5U2VsZjohMH0pLHR9X3Rocm93SWZDb250cm9sTWlzc2luZyh0KXtpZighT2JqZWN0LmtleXModGhpcy5jb250cm9scykubGVuZ3RoKXRocm93IG5ldyBFcnJvcigiXG4gICAgICAgIFRoZXJlIGFyZSBubyBmb3JtIGNvbnRyb2xzIHJlZ2lzdGVyZWQgd2l0aCB0aGlzIGdyb3VwIHlldC4gSWYgeW91J3JlIHVzaW5nIG5nTW9kZWwsXG4gICAgICAgIHlvdSBtYXkgd2FudCB0byBjaGVjayBuZXh0IHRpY2sgKGUuZy4gdXNlIHNldFRpbWVvdXQpLlxuICAgICAgIik7aWYoIXRoaXMuY29udHJvbHNbdF0pdGhyb3cgbmV3IEVycm9yKGBDYW5ub3QgZmluZCBmb3JtIGNvbnRyb2wgd2l0aCBuYW1lOiAke3R9LmApfV9mb3JFYWNoQ2hpbGQodCl7T2JqZWN0LmtleXModGhpcy5jb250cm9scykuZm9yRWFjaCgobj0+dCh0aGlzLmNvbnRyb2xzW25dLG4pKSl9X3NldFVwQ29udHJvbHMoKXt0aGlzLl9mb3JFYWNoQ2hpbGQoKHQ9Pnt0LnNldFBhcmVudCh0aGlzKSx0Ll9yZWdpc3Rlck9uQ29sbGVjdGlvbkNoYW5nZSh0aGlzLl9vbkNvbGxlY3Rpb25DaGFuZ2UpfSkpfV91cGRhdGVWYWx1ZSgpe3RoaXMudmFsdWU9dGhpcy5fcmVkdWNlVmFsdWUoKX1fYW55Q29udHJvbHModCl7Zm9yKGNvbnN0IG4gb2YgT2JqZWN0LmtleXModGhpcy5jb250cm9scykpe2NvbnN0IGU9dGhpcy5jb250cm9sc1tuXTtpZih0aGlzLmNvbnRhaW5zKG4pJiZ0KGUpKXJldHVybiEwfXJldHVybiExfV9yZWR1Y2VWYWx1ZSgpe3JldHVybiB0aGlzLl9yZWR1Y2VDaGlsZHJlbih7fSwoKHQsbixlKT0+KChuLmVuYWJsZWR8fHRoaXMuZGlzYWJsZWQpJiYodFtlXT1uLnZhbHVlKSx0KSkpfV9yZWR1Y2VDaGlsZHJlbih0LG4pe2xldCBlPXQ7cmV0dXJuIHRoaXMuX2ZvckVhY2hDaGlsZCgoKHQsYSk9PntlPW4oZSx0LGEpfSkpLGV9X2FsbENvbnRyb2xzRGlzYWJsZWQoKXtmb3IoY29uc3QgdCBvZiBPYmplY3Qua2V5cyh0aGlzLmNvbnRyb2xzKSlpZih0aGlzLmNvbnRyb2xzW3RdLmVuYWJsZWQpcmV0dXJuITE7cmV0dXJuIE9iamVjdC5rZXlzKHRoaXMuY29udHJvbHMpLmxlbmd0aD4wfHx0aGlzLmRpc2FibGVkfV9jaGVja0FsbFZhbHVlc1ByZXNlbnQodCl7dGhpcy5fZm9yRWFjaENoaWxkKCgobixlKT0+e2lmKHZvaWQgMD09PXRbZV0pdGhyb3cgbmV3IEVycm9yKGBNdXN0IHN1cHBseSBhIHZhbHVlIGZvciBmb3JtIGNvbnRyb2wgd2l0aCBuYW1lOiAnJHtlfScuYCl9KSl9fWNsYXNzIElMIGV4dGVuZHMgUkx7Y29uc3RydWN0b3IodCxuLGUpe3N1cGVyKHdMKG4pLEVMKGUsbikpLHRoaXMuY29udHJvbHM9dCx0aGlzLl9pbml0T2JzZXJ2YWJsZXMoKSx0aGlzLl9zZXRVcGRhdGVTdHJhdGVneShuKSx0aGlzLl9zZXRVcENvbnRyb2xzKCksdGhpcy51cGRhdGVWYWx1ZUFuZFZhbGlkaXR5KHtvbmx5U2VsZjohMCxlbWl0RXZlbnQ6ITF9KX1hdCh0KXtyZXR1cm4gdGhpcy5jb250cm9sc1t0XX1wdXNoKHQpe3RoaXMuY29udHJvbHMucHVzaCh0KSx0aGlzLl9yZWdpc3RlckNvbnRyb2wodCksdGhpcy51cGRhdGVWYWx1ZUFuZFZhbGlkaXR5KCksdGhpcy5fb25Db2xsZWN0aW9uQ2hhbmdlKCl9aW5zZXJ0KHQsbil7dGhpcy5jb250cm9scy5zcGxpY2UodCwwLG4pLHRoaXMuX3JlZ2lzdGVyQ29udHJvbChuKSx0aGlzLnVwZGF0ZVZhbHVlQW5kVmFsaWRpdHkoKX1yZW1vdmVBdCh0KXt0aGlzLmNvbnRyb2xzW3RdJiZ0aGlzLmNvbnRyb2xzW3RdLl9yZWdpc3Rlck9uQ29sbGVjdGlvbkNoYW5nZSgoKCk9Pnt9KSksdGhpcy5jb250cm9scy5zcGxpY2UodCwxKSx0aGlzLnVwZGF0ZVZhbHVlQW5kVmFsaWRpdHkoKX1zZXRDb250cm9sKHQsbil7dGhpcy5jb250cm9sc1t0XSYmdGhpcy5jb250cm9sc1t0XS5fcmVnaXN0ZXJPbkNvbGxlY3Rpb25DaGFuZ2UoKCgpPT57fSkpLHRoaXMuY29udHJvbHMuc3BsaWNlKHQsMSksbiYmKHRoaXMuY29udHJvbHMuc3BsaWNlKHQsMCxuKSx0aGlzLl9yZWdpc3RlckNvbnRyb2wobikpLHRoaXMudXBkYXRlVmFsdWVBbmRWYWxpZGl0eSgpLHRoaXMuX29uQ29sbGVjdGlvbkNoYW5nZSgpfWdldCBsZW5ndGgoKXtyZXR1cm4gdGhpcy5jb250cm9scy5sZW5ndGh9c2V0VmFsdWUodCxuPXt9KXt0aGlzLl9jaGVja0FsbFZhbHVlc1ByZXNlbnQodCksdC5mb3JFYWNoKCgodCxlKT0+e3RoaXMuX3Rocm93SWZDb250cm9sTWlzc2luZyhlKSx0aGlzLmF0KGUpLnNldFZhbHVlKHQse29ubHlTZWxmOiEwLGVtaXRFdmVudDpuLmVtaXRFdmVudH0pfSkpLHRoaXMudXBkYXRlVmFsdWVBbmRWYWxpZGl0eShuKX1wYXRjaFZhbHVlKHQsbj17fSl7dC5mb3JFYWNoKCgodCxlKT0+e3RoaXMuYXQoZSkmJnRoaXMuYXQoZSkucGF0Y2hWYWx1ZSh0LHtvbmx5U2VsZjohMCxlbWl0RXZlbnQ6bi5lbWl0RXZlbnR9KX0pKSx0aGlzLnVwZGF0ZVZhbHVlQW5kVmFsaWRpdHkobil9cmVzZXQodD1bXSxuPXt9KXt0aGlzLl9mb3JFYWNoQ2hpbGQoKChlLGEpPT57ZS5yZXNldCh0W2FdLHtvbmx5U2VsZjohMCxlbWl0RXZlbnQ6bi5lbWl0RXZlbnR9KX0pKSx0aGlzLl91cGRhdGVQcmlzdGluZShuKSx0aGlzLl91cGRhdGVUb3VjaGVkKG4pLHRoaXMudXBkYXRlVmFsdWVBbmRWYWxpZGl0eShuKX1nZXRSYXdWYWx1ZSgpe3JldHVybiB0aGlzLmNvbnRyb2xzLm1hcCgodD0+dCBpbnN0YW5jZW9mIFRMP3QudmFsdWU6dC5nZXRSYXdWYWx1ZSgpKSl9Y2xlYXIoKXt0aGlzLmNvbnRyb2xzLmxlbmd0aDwxfHwodGhpcy5fZm9yRWFjaENoaWxkKCh0PT50Ll9yZWdpc3Rlck9uQ29sbGVjdGlvbkNoYW5nZSgoKCk9Pnt9KSkpKSx0aGlzLmNvbnRyb2xzLnNwbGljZSgwKSx0aGlzLnVwZGF0ZVZhbHVlQW5kVmFsaWRpdHkoKSl9X3N5bmNQZW5kaW5nQ29udHJvbHMoKXtsZXQgdD10aGlzLmNvbnRyb2xzLnJlZHVjZSgoKHQsbik9PiEhbi5fc3luY1BlbmRpbmdDb250cm9scygpfHx0KSwhMSk7cmV0dXJuIHQmJnRoaXMudXBkYXRlVmFsdWVBbmRWYWxpZGl0eSh7b25seVNlbGY6ITB9KSx0fV90aHJvd0lmQ29udHJvbE1pc3NpbmcodCl7aWYoIXRoaXMuY29udHJvbHMubGVuZ3RoKXRocm93IG5ldyBFcnJvcigiXG4gICAgICAgIFRoZXJlIGFyZSBubyBmb3JtIGNvbnRyb2xzIHJlZ2lzdGVyZWQgd2l0aCB0aGlzIGFycmF5IHlldC4gSWYgeW91J3JlIHVzaW5nIG5nTW9kZWwsXG4gICAgICAgIHlvdSBtYXkgd2FudCB0byBjaGVjayBuZXh0IHRpY2sgKGUuZy4gdXNlIHNldFRpbWVvdXQpLlxuICAgICAgIik7aWYoIXRoaXMuYXQodCkpdGhyb3cgbmV3IEVycm9yKGBDYW5ub3QgZmluZCBmb3JtIGNvbnRyb2wgYXQgaW5kZXggJHt0fWApfV9mb3JFYWNoQ2hpbGQodCl7dGhpcy5jb250cm9scy5mb3JFYWNoKCgobixlKT0+e3QobixlKX0pKX1fdXBkYXRlVmFsdWUoKXt0aGlzLnZhbHVlPXRoaXMuY29udHJvbHMuZmlsdGVyKCh0PT50LmVuYWJsZWR8fHRoaXMuZGlzYWJsZWQpKS5tYXAoKHQ9PnQudmFsdWUpKX1fYW55Q29udHJvbHModCl7cmV0dXJuIHRoaXMuY29udHJvbHMuc29tZSgobj0+bi5lbmFibGVkJiZ0KG4pKSl9X3NldFVwQ29udHJvbHMoKXt0aGlzLl9mb3JFYWNoQ2hpbGQoKHQ9PnRoaXMuX3JlZ2lzdGVyQ29udHJvbCh0KSkpfV9jaGVja0FsbFZhbHVlc1ByZXNlbnQodCl7dGhpcy5fZm9yRWFjaENoaWxkKCgobixlKT0+e2lmKHZvaWQgMD09PXRbZV0pdGhyb3cgbmV3IEVycm9yKGBNdXN0IHN1cHBseSBhIHZhbHVlIGZvciBmb3JtIGNvbnRyb2wgYXQgaW5kZXg6ICR7ZX0uYCl9KSl9X2FsbENvbnRyb2xzRGlzYWJsZWQoKXtmb3IoY29uc3QgdCBvZiB0aGlzLmNvbnRyb2xzKWlmKHQuZW5hYmxlZClyZXR1cm4hMTtyZXR1cm4gdGhpcy5jb250cm9scy5sZW5ndGg+MHx8dGhpcy5kaXNhYmxlZH1fcmVnaXN0ZXJDb250cm9sKHQpe3Quc2V0UGFyZW50KHRoaXMpLHQuX3JlZ2lzdGVyT25Db2xsZWN0aW9uQ2hhbmdlKHRoaXMuX29uQ29sbGVjdGlvbkNoYW5nZSl9fQovKioKICAgICAqIEBsaWNlbnNlCiAgICAgKiBDb3B5cmlnaHQgR29vZ2xlIExMQyBBbGwgUmlnaHRzIFJlc2VydmVkLgogICAgICoKICAgICAqIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGFuIE1JVC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCiAgICAgKiBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlIGF0IGh0dHBzOi8vYW5ndWxhci5pby9saWNlbnNlCiAgICAgKi9jb25zdCBOTD17cHJvdmlkZTp3Rix1c2VFeGlzdGluZzphYSgoKCk9PkxMKSl9LEZMPVByb21pc2UucmVzb2x2ZShudWxsKTtjbGFzcyBMTCBleHRlbmRzIHdGe2NvbnN0cnVjdG9yKHQsbil7c3VwZXIoKSx0aGlzLnN1Ym1pdHRlZD0hMSx0aGlzLl9kaXJlY3RpdmVzPVtdLHRoaXMubmdTdWJtaXQ9bmV3IEVmLHRoaXMuZm9ybT1uZXcgREwoe30sdUwodCksZkwobikpfW5nQWZ0ZXJWaWV3SW5pdCgpe3RoaXMuX3NldFVwZGF0ZVN0cmF0ZWd5KCl9Z2V0IGZvcm1EaXJlY3RpdmUoKXtyZXR1cm4gdGhpc31nZXQgY29udHJvbCgpe3JldHVybiB0aGlzLmZvcm19Z2V0IHBhdGgoKXtyZXR1cm5bXX1nZXQgY29udHJvbHMoKXtyZXR1cm4gdGhpcy5mb3JtLmNvbnRyb2xzfWFkZENvbnRyb2wodCl7RkwudGhlbigoKCk9Pntjb25zdCBuPXRoaXMuX2ZpbmRDb250YWluZXIodC5wYXRoKTt0LmNvbnRyb2w9bi5yZWdpc3RlckNvbnRyb2wodC5uYW1lLHQuY29udHJvbCksZEwodC5jb250cm9sLHQpLHQuY29udHJvbC51cGRhdGVWYWx1ZUFuZFZhbGlkaXR5KHtlbWl0RXZlbnQ6ITF9KSx0aGlzLl9kaXJlY3RpdmVzLnB1c2godCl9KSl9Z2V0Q29udHJvbCh0KXtyZXR1cm4gdGhpcy5mb3JtLmdldCh0LnBhdGgpfXJlbW92ZUNvbnRyb2wodCl7RkwudGhlbigoKCk9Pntjb25zdCBuPXRoaXMuX2ZpbmRDb250YWluZXIodC5wYXRoKTtuJiZuLnJlbW92ZUNvbnRyb2wodC5uYW1lKSxPTCh0aGlzLl9kaXJlY3RpdmVzLHQpfSkpfWFkZEZvcm1Hcm91cCh0KXtGTC50aGVuKCgoKT0+e2NvbnN0IG49dGhpcy5fZmluZENvbnRhaW5lcih0LnBhdGgpLGU9bmV3IERMKHt9KTtwTChlLHQpLG4ucmVnaXN0ZXJDb250cm9sKHQubmFtZSxlKSxlLnVwZGF0ZVZhbHVlQW5kVmFsaWRpdHkoe2VtaXRFdmVudDohMX0pfSkpfXJlbW92ZUZvcm1Hcm91cCh0KXtGTC50aGVuKCgoKT0+e2NvbnN0IG49dGhpcy5fZmluZENvbnRhaW5lcih0LnBhdGgpO24mJm4ucmVtb3ZlQ29udHJvbCh0Lm5hbWUpfSkpfWdldEZvcm1Hcm91cCh0KXtyZXR1cm4gdGhpcy5mb3JtLmdldCh0LnBhdGgpfXVwZGF0ZU1vZGVsKHQsbil7RkwudGhlbigoKCk9Pnt0aGlzLmZvcm0uZ2V0KHQucGF0aCkuc2V0VmFsdWUobil9KSl9c2V0VmFsdWUodCl7dGhpcy5jb250cm9sLnNldFZhbHVlKHQpfW9uU3VibWl0KHQpe3JldHVybiB0aGlzLnN1Ym1pdHRlZD0hMCxDTCh0aGlzLmZvcm0sdGhpcy5fZGlyZWN0aXZlcyksdGhpcy5uZ1N1Ym1pdC5lbWl0KHQpLCExfW9uUmVzZXQoKXt0aGlzLnJlc2V0Rm9ybSgpfXJlc2V0Rm9ybSh0KXt0aGlzLmZvcm0ucmVzZXQodCksdGhpcy5zdWJtaXR0ZWQ9ITF9X3NldFVwZGF0ZVN0cmF0ZWd5KCl7dGhpcy5vcHRpb25zJiZudWxsIT10aGlzLm9wdGlvbnMudXBkYXRlT24mJih0aGlzLmZvcm0uX3VwZGF0ZU9uPXRoaXMub3B0aW9ucy51cGRhdGVPbil9X2ZpbmRDb250YWluZXIodCl7cmV0dXJuIHQucG9wKCksdC5sZW5ndGg/dGhpcy5mb3JtLmdldCh0KTp0aGlzLmZvcm19fUxMLsm1ZmFjPWZ1bmN0aW9uIHQobil7cmV0dXJuIG5ldyhufHxMTCkoWmcoTkYsMTApLFpnKEZGLDEwKSl9LExMLsm1ZGlyPXZvKHt0eXBlOkxMLHNlbGVjdG9yczpbWyJmb3JtIiwzLCJuZ05vRm9ybSIsIiIsMywiZm9ybUdyb3VwIiwiIl0sWyJuZy1mb3JtIl0sWyIiLCJuZ0Zvcm0iLCIiXV0saG9zdEJpbmRpbmdzOmZ1bmN0aW9uIHQobixlKXsxJm4mJmNwKCJzdWJtaXQiLChmdW5jdGlvbiB0KG4pe3JldHVybiBlLm9uU3VibWl0KG4pfSkpKCJyZXNldCIsKGZ1bmN0aW9uIHQoKXtyZXR1cm4gZS5vblJlc2V0KCl9KSl9LGlucHV0czp7b3B0aW9uczpbIm5nRm9ybU9wdGlvbnMiLCJvcHRpb25zIl19LG91dHB1dHM6e25nU3VibWl0OiJuZ1N1Ym1pdCJ9LGV4cG9ydEFzOlsibmdGb3JtIl0sZmVhdHVyZXM6W011KFtOTF0pLGhnXX0pLExMLmN0b3JQYXJhbWV0ZXJzPSgpPT5be3R5cGU6QXJyYXksZGVjb3JhdG9yczpbe3R5cGU6TmV9LHt0eXBlOkZlfSx7dHlwZTpJZSxhcmdzOltORl19XX0se3R5cGU6QXJyYXksZGVjb3JhdG9yczpbe3R5cGU6TmV9LHt0eXBlOkZlfSx7dHlwZTpJZSxhcmdzOltGRl19XX1dLExMLnByb3BEZWNvcmF0b3JzPXtvcHRpb25zOlt7dHlwZTpmXyxhcmdzOlsibmdGb3JtT3B0aW9ucyJdfV19OwovKioKICAgICAqIEBsaWNlbnNlCiAgICAgKiBDb3B5cmlnaHQgR29vZ2xlIExMQyBBbGwgUmlnaHRzIFJlc2VydmVkLgogICAgICoKICAgICAqIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGFuIE1JVC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCiAgICAgKiBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlIGF0IGh0dHBzOi8vYW5ndWxhci5pby9saWNlbnNlCiAgICAgKi8KY2xhc3MgSEwgZXh0ZW5kcyB3RntuZ09uSW5pdCgpe3RoaXMuX2NoZWNrUGFyZW50VHlwZSgpLHRoaXMuZm9ybURpcmVjdGl2ZS5hZGRGb3JtR3JvdXAodGhpcyl9bmdPbkRlc3Ryb3koKXt0aGlzLmZvcm1EaXJlY3RpdmUmJnRoaXMuZm9ybURpcmVjdGl2ZS5yZW1vdmVGb3JtR3JvdXAodGhpcyl9Z2V0IGNvbnRyb2woKXtyZXR1cm4gdGhpcy5mb3JtRGlyZWN0aXZlLmdldEZvcm1Hcm91cCh0aGlzKX1nZXQgcGF0aCgpe3JldHVybiBtTChudWxsPT10aGlzLm5hbWU/dGhpcy5uYW1lOnRoaXMubmFtZS50b1N0cmluZygpLHRoaXMuX3BhcmVudCl9Z2V0IGZvcm1EaXJlY3RpdmUoKXtyZXR1cm4gdGhpcy5fcGFyZW50P3RoaXMuX3BhcmVudC5mb3JtRGlyZWN0aXZlOm51bGx9Z2V0IHZhbGlkYXRvcigpe3JldHVybiB1TCh0aGlzLl92YWxpZGF0b3JzKX1nZXQgYXN5bmNWYWxpZGF0b3IoKXtyZXR1cm4gZkwodGhpcy5fYXN5bmNWYWxpZGF0b3JzKX1fY2hlY2tQYXJlbnRUeXBlKCl7fX1ITC7JtWZhYz1mdW5jdGlvbiB0KG4pe3JldHVybiBCTChufHxITCl9LEhMLsm1ZGlyPXZvKHt0eXBlOkhMLGZlYXR1cmVzOltoZ119KTtjb25zdCBCTD10YyhITCk7Ci8qKgogICAgICogQGxpY2Vuc2UKICAgICAqIENvcHlyaWdodCBHb29nbGUgTExDIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCiAgICAgKgogICAgICogVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYW4gTUlULXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKICAgICAqIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUgYXQgaHR0cHM6Ly9hbmd1bGFyLmlvL2xpY2Vuc2UKICAgICAqL2NsYXNzIFZMe3N0YXRpYyBtb2RlbFBhcmVudEV4Y2VwdGlvbigpe3Rocm93IG5ldyBFcnJvcihgXG4gICAgICBuZ01vZGVsIGNhbm5vdCBiZSB1c2VkIHRvIHJlZ2lzdGVyIGZvcm0gY29udHJvbHMgd2l0aCBhIHBhcmVudCBmb3JtR3JvdXAgZGlyZWN0aXZlLiAgVHJ5IHVzaW5nXG4gICAgICBmb3JtR3JvdXAncyBwYXJ0bmVyIGRpcmVjdGl2ZSAiZm9ybUNvbnRyb2xOYW1lIiBpbnN0ZWFkLiAgRXhhbXBsZTpcblxuICAgICAgJHtLRn1cblxuICAgICAgT3IsIGlmIHlvdSdkIGxpa2UgdG8gYXZvaWQgcmVnaXN0ZXJpbmcgdGhpcyBmb3JtIGNvbnRyb2wsIGluZGljYXRlIHRoYXQgaXQncyBzdGFuZGFsb25lIGluIG5nTW9kZWxPcHRpb25zOlxuXG4gICAgICBFeGFtcGxlOlxuXG4gICAgICBcbiAgICA8ZGl2IFtmb3JtR3JvdXBdPSJteUdyb3VwIj5cbiAgICAgICA8aW5wdXQgZm9ybUNvbnRyb2xOYW1lPSJmaXJzdE5hbWUiPlxuICAgICAgIDxpbnB1dCBbKG5nTW9kZWwpXT0ic2hvd01vcmVDb250cm9scyIgW25nTW9kZWxPcHRpb25zXT0ie3N0YW5kYWxvbmU6IHRydWV9Ij5cbiAgICA8L2Rpdj5cbiAgYCl9c3RhdGljIGZvcm1Hcm91cE5hbWVFeGNlcHRpb24oKXt0aHJvdyBuZXcgRXJyb3IoYFxuICAgICAgbmdNb2RlbCBjYW5ub3QgYmUgdXNlZCB0byByZWdpc3RlciBmb3JtIGNvbnRyb2xzIHdpdGggYSBwYXJlbnQgZm9ybUdyb3VwTmFtZSBvciBmb3JtQXJyYXlOYW1lIGRpcmVjdGl2ZS5cblxuICAgICAgT3B0aW9uIDE6IFVzZSBmb3JtQ29udHJvbE5hbWUgaW5zdGVhZCBvZiBuZ01vZGVsIChyZWFjdGl2ZSBzdHJhdGVneSk6XG5cbiAgICAgICR7JEZ9XG5cbiAgICAgIE9wdGlvbiAyOiAgVXBkYXRlIG5nTW9kZWwncyBwYXJlbnQgYmUgbmdNb2RlbEdyb3VwICh0ZW1wbGF0ZS1kcml2ZW4gc3RyYXRlZ3kpOlxuXG4gICAgICAke3RMfWApfXN0YXRpYyBtaXNzaW5nTmFtZUV4Y2VwdGlvbigpe3Rocm93IG5ldyBFcnJvcignSWYgbmdNb2RlbCBpcyB1c2VkIHdpdGhpbiBhIGZvcm0gdGFnLCBlaXRoZXIgdGhlIG5hbWUgYXR0cmlidXRlIG11c3QgYmUgc2V0IG9yIHRoZSBmb3JtXG4gICAgICBjb250cm9sIG11c3QgYmUgZGVmaW5lZCBhcyBcJ3N0YW5kYWxvbmVcJyBpbiBuZ01vZGVsT3B0aW9ucy5cblxuICAgICAgRXhhbXBsZSAxOiA8aW5wdXQgWyhuZ01vZGVsKV09InBlcnNvbi5maXJzdE5hbWUiIG5hbWU9ImZpcnN0Ij5cbiAgICAgIEV4YW1wbGUgMjogPGlucHV0IFsobmdNb2RlbCldPSJwZXJzb24uZmlyc3ROYW1lIiBbbmdNb2RlbE9wdGlvbnNdPSJ7c3RhbmRhbG9uZTogdHJ1ZX0iPicpfXN0YXRpYyBtb2RlbEdyb3VwUGFyZW50RXhjZXB0aW9uKCl7dGhyb3cgbmV3IEVycm9yKGBcbiAgICAgIG5nTW9kZWxHcm91cCBjYW5ub3QgYmUgdXNlZCB3aXRoIGEgcGFyZW50IGZvcm1Hcm91cCBkaXJlY3RpdmUuXG5cbiAgICAgIE9wdGlvbiAxOiBVc2UgZm9ybUdyb3VwTmFtZSBpbnN0ZWFkIG9mIG5nTW9kZWxHcm91cCAocmVhY3RpdmUgc3RyYXRlZ3kpOlxuXG4gICAgICAkeyRGfVxuXG4gICAgICBPcHRpb24gMjogIFVzZSBhIHJlZ3VsYXIgZm9ybSB0YWcgaW5zdGVhZCBvZiB0aGUgZm9ybUdyb3VwIGRpcmVjdGl2ZSAodGVtcGxhdGUtZHJpdmVuIHN0cmF0ZWd5KTpcblxuICAgICAgJHt0TH1gKX19Ci8qKgogICAgICogQGxpY2Vuc2UKICAgICAqIENvcHlyaWdodCBHb29nbGUgTExDIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCiAgICAgKgogICAgICogVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYW4gTUlULXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKICAgICAqIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUgYXQgaHR0cHM6Ly9hbmd1bGFyLmlvL2xpY2Vuc2UKICAgICAqL2NvbnN0IGpMPXtwcm92aWRlOndGLHVzZUV4aXN0aW5nOmFhKCgoKT0+VUwpKX07Y2xhc3MgVUwgZXh0ZW5kcyBITHtjb25zdHJ1Y3Rvcih0LG4sZSl7c3VwZXIoKSx0aGlzLl9wYXJlbnQ9dCx0aGlzLl92YWxpZGF0b3JzPW4sdGhpcy5fYXN5bmNWYWxpZGF0b3JzPWV9X2NoZWNrUGFyZW50VHlwZSgpe3RoaXMuX3BhcmVudCBpbnN0YW5jZW9mIFVMfHx0aGlzLl9wYXJlbnQgaW5zdGFuY2VvZiBMTHx8InVuZGVmaW5lZCIhPXR5cGVvZiBuZ0Rldk1vZGUmJiFuZ0Rldk1vZGV8fFZMLm1vZGVsR3JvdXBQYXJlbnRFeGNlcHRpb24oKX19VUwuybVmYWM9ZnVuY3Rpb24gdChuKXtyZXR1cm4gbmV3KG58fFVMKShaZyh3Riw1KSxaZyhORiwxMCksWmcoRkYsMTApKX0sVUwuybVkaXI9dm8oe3R5cGU6VUwsc2VsZWN0b3JzOltbIiIsIm5nTW9kZWxHcm91cCIsIiJdXSxpbnB1dHM6e25hbWU6WyJuZ01vZGVsR3JvdXAiLCJuYW1lIl19LGV4cG9ydEFzOlsibmdNb2RlbEdyb3VwIl0sZmVhdHVyZXM6W011KFtqTF0pLGhnXX0pLFVMLmN0b3JQYXJhbWV0ZXJzPSgpPT5be3R5cGU6d0YsZGVjb3JhdG9yczpbe3R5cGU6SGV9LHt0eXBlOkxlfV19LHt0eXBlOkFycmF5LGRlY29yYXRvcnM6W3t0eXBlOk5lfSx7dHlwZTpGZX0se3R5cGU6SWUsYXJnczpbTkZdfV19LHt0eXBlOkFycmF5LGRlY29yYXRvcnM6W3t0eXBlOk5lfSx7dHlwZTpGZX0se3R5cGU6SWUsYXJnczpbRkZdfV19XSxVTC5wcm9wRGVjb3JhdG9ycz17bmFtZTpbe3R5cGU6Zl8sYXJnczpbIm5nTW9kZWxHcm91cCJdfV19OwovKioKICAgICAqIEBsaWNlbnNlCiAgICAgKiBDb3B5cmlnaHQgR29vZ2xlIExMQyBBbGwgUmlnaHRzIFJlc2VydmVkLgogICAgICoKICAgICAqIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGFuIE1JVC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCiAgICAgKiBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlIGF0IGh0dHBzOi8vYW5ndWxhci5pby9saWNlbnNlCiAgICAgKi8KY29uc3QgV0w9e3Byb3ZpZGU6QUYsdXNlRXhpc3Rpbmc6YWEoKCgpPT5ZTCkpfSxHTD1Qcm9taXNlLnJlc29sdmUobnVsbCk7Y2xhc3MgWUwgZXh0ZW5kcyBBRntjb25zdHJ1Y3Rvcih0LG4sZSxhKXtzdXBlcigpLHRoaXMuY29udHJvbD1uZXcgVEwsdGhpcy5fcmVnaXN0ZXJlZD0hMSx0aGlzLnVwZGF0ZT1uZXcgRWYsdGhpcy5fcGFyZW50PXQsdGhpcy5fcmF3VmFsaWRhdG9ycz1ufHxbXSx0aGlzLl9yYXdBc3luY1ZhbGlkYXRvcnM9ZXx8W10sdGhpcy52YWx1ZUFjY2Vzc29yPU1MKHRoaXMsYSl9bmdPbkNoYW5nZXModCl7dGhpcy5fY2hlY2tGb3JFcnJvcnMoKSx0aGlzLl9yZWdpc3RlcmVkfHx0aGlzLl9zZXRVcENvbnRyb2woKSwiaXNEaXNhYmxlZCJpbiB0JiZ0aGlzLl91cGRhdGVEaXNhYmxlZCh0KSxoTCh0LHRoaXMudmlld01vZGVsKSYmKHRoaXMuX3VwZGF0ZVZhbHVlKHRoaXMubW9kZWwpLHRoaXMudmlld01vZGVsPXRoaXMubW9kZWwpfW5nT25EZXN0cm95KCl7dGhpcy5mb3JtRGlyZWN0aXZlJiZ0aGlzLmZvcm1EaXJlY3RpdmUucmVtb3ZlQ29udHJvbCh0aGlzKX1nZXQgcGF0aCgpe3JldHVybiB0aGlzLl9wYXJlbnQ/bUwodGhpcy5uYW1lLHRoaXMuX3BhcmVudCk6W3RoaXMubmFtZV19Z2V0IGZvcm1EaXJlY3RpdmUoKXtyZXR1cm4gdGhpcy5fcGFyZW50P3RoaXMuX3BhcmVudC5mb3JtRGlyZWN0aXZlOm51bGx9Z2V0IHZhbGlkYXRvcigpe3JldHVybiB1TCh0aGlzLl9yYXdWYWxpZGF0b3JzKX1nZXQgYXN5bmNWYWxpZGF0b3IoKXtyZXR1cm4gZkwodGhpcy5fcmF3QXN5bmNWYWxpZGF0b3JzKX12aWV3VG9Nb2RlbFVwZGF0ZSh0KXt0aGlzLnZpZXdNb2RlbD10LHRoaXMudXBkYXRlLmVtaXQodCl9X3NldFVwQ29udHJvbCgpe3RoaXMuX3NldFVwZGF0ZVN0cmF0ZWd5KCksdGhpcy5faXNTdGFuZGFsb25lKCk/dGhpcy5fc2V0VXBTdGFuZGFsb25lKCk6dGhpcy5mb3JtRGlyZWN0aXZlLmFkZENvbnRyb2wodGhpcyksdGhpcy5fcmVnaXN0ZXJlZD0hMH1fc2V0VXBkYXRlU3RyYXRlZ3koKXt0aGlzLm9wdGlvbnMmJm51bGwhPXRoaXMub3B0aW9ucy51cGRhdGVPbiYmKHRoaXMuY29udHJvbC5fdXBkYXRlT249dGhpcy5vcHRpb25zLnVwZGF0ZU9uKX1faXNTdGFuZGFsb25lKCl7cmV0dXJuIXRoaXMuX3BhcmVudHx8ISghdGhpcy5vcHRpb25zfHwhdGhpcy5vcHRpb25zLnN0YW5kYWxvbmUpfV9zZXRVcFN0YW5kYWxvbmUoKXtkTCh0aGlzLmNvbnRyb2wsdGhpcyksdGhpcy5jb250cm9sLnVwZGF0ZVZhbHVlQW5kVmFsaWRpdHkoe2VtaXRFdmVudDohMX0pfV9jaGVja0ZvckVycm9ycygpe3RoaXMuX2lzU3RhbmRhbG9uZSgpfHx0aGlzLl9jaGVja1BhcmVudFR5cGUoKSx0aGlzLl9jaGVja05hbWUoKX1fY2hlY2tQYXJlbnRUeXBlKCl7KCJ1bmRlZmluZWQiPT10eXBlb2YgbmdEZXZNb2RlfHxuZ0Rldk1vZGUpJiYoISh0aGlzLl9wYXJlbnQgaW5zdGFuY2VvZiBVTCkmJnRoaXMuX3BhcmVudCBpbnN0YW5jZW9mIEhMP1ZMLmZvcm1Hcm91cE5hbWVFeGNlcHRpb24oKTp0aGlzLl9wYXJlbnQgaW5zdGFuY2VvZiBVTHx8dGhpcy5fcGFyZW50IGluc3RhbmNlb2YgTEx8fFZMLm1vZGVsUGFyZW50RXhjZXB0aW9uKCkpfV9jaGVja05hbWUoKXt0aGlzLm9wdGlvbnMmJnRoaXMub3B0aW9ucy5uYW1lJiYodGhpcy5uYW1lPXRoaXMub3B0aW9ucy5uYW1lKSx0aGlzLl9pc1N0YW5kYWxvbmUoKXx8dGhpcy5uYW1lfHwidW5kZWZpbmVkIiE9dHlwZW9mIG5nRGV2TW9kZSYmIW5nRGV2TW9kZXx8VkwubWlzc2luZ05hbWVFeGNlcHRpb24oKX1fdXBkYXRlVmFsdWUodCl7R0wudGhlbigoKCk9Pnt0aGlzLmNvbnRyb2wuc2V0VmFsdWUodCx7ZW1pdFZpZXdUb01vZGVsQ2hhbmdlOiExfSl9KSl9X3VwZGF0ZURpc2FibGVkKHQpe2NvbnN0IG49dC5pc0Rpc2FibGVkLmN1cnJlbnRWYWx1ZSxlPSIiPT09bnx8biYmImZhbHNlIiE9PW47R0wudGhlbigoKCk9PntlJiYhdGhpcy5jb250cm9sLmRpc2FibGVkP3RoaXMuY29udHJvbC5kaXNhYmxlKCk6IWUmJnRoaXMuY29udHJvbC5kaXNhYmxlZCYmdGhpcy5jb250cm9sLmVuYWJsZSgpfSkpfX1ZTC7JtWZhYz1mdW5jdGlvbiB0KG4pe3JldHVybiBuZXcobnx8WUwpKFpnKHdGLDkpLFpnKE5GLDEwKSxaZyhGRiwxMCksWmcoTUYsMTApKX0sWUwuybVkaXI9dm8oe3R5cGU6WUwsc2VsZWN0b3JzOltbIiIsIm5nTW9kZWwiLCIiLDMsImZvcm1Db250cm9sTmFtZSIsIiIsMywiZm9ybUNvbnRyb2wiLCIiXV0saW5wdXRzOntuYW1lOiJuYW1lIixpc0Rpc2FibGVkOlsiZGlzYWJsZWQiLCJpc0Rpc2FibGVkIl0sbW9kZWw6WyJuZ01vZGVsIiwibW9kZWwiXSxvcHRpb25zOlsibmdNb2RlbE9wdGlvbnMiLCJvcHRpb25zIl19LG91dHB1dHM6e3VwZGF0ZToibmdNb2RlbENoYW5nZSJ9LGV4cG9ydEFzOlsibmdNb2RlbCJdLGZlYXR1cmVzOltNdShbV0xdKSxoZyxwcl19KSxZTC5jdG9yUGFyYW1ldGVycz0oKT0+W3t0eXBlOndGLGRlY29yYXRvcnM6W3t0eXBlOk5lfSx7dHlwZTpIZX1dfSx7dHlwZTpBcnJheSxkZWNvcmF0b3JzOlt7dHlwZTpOZX0se3R5cGU6RmV9LHt0eXBlOkllLGFyZ3M6W05GXX1dfSx7dHlwZTpBcnJheSxkZWNvcmF0b3JzOlt7dHlwZTpOZX0se3R5cGU6RmV9LHt0eXBlOkllLGFyZ3M6W0ZGXX1dfSx7dHlwZTpBcnJheSxkZWNvcmF0b3JzOlt7dHlwZTpOZX0se3R5cGU6RmV9LHt0eXBlOkllLGFyZ3M6W01GXX1dfV0sWUwucHJvcERlY29yYXRvcnM9e25hbWU6W3t0eXBlOmZffV0saXNEaXNhYmxlZDpbe3R5cGU6Zl8sYXJnczpbImRpc2FibGVkIl19XSxtb2RlbDpbe3R5cGU6Zl8sYXJnczpbIm5nTW9kZWwiXX1dLG9wdGlvbnM6W3t0eXBlOmZfLGFyZ3M6WyJuZ01vZGVsT3B0aW9ucyJdfV0sdXBkYXRlOlt7dHlwZTpoXyxhcmdzOlsibmdNb2RlbENoYW5nZSJdfV19OwovKioKICAgICAqIEBsaWNlbnNlCiAgICAgKiBDb3B5cmlnaHQgR29vZ2xlIExMQyBBbGwgUmlnaHRzIFJlc2VydmVkLgogICAgICoKICAgICAqIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGFuIE1JVC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCiAgICAgKiBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlIGF0IGh0dHBzOi8vYW5ndWxhci5pby9saWNlbnNlCiAgICAgKi8KY2xhc3MgcUx7fXFMLsm1ZmFjPWZ1bmN0aW9uIHQobil7cmV0dXJuIG5ldyhufHxxTCl9LHFMLsm1ZGlyPXZvKHt0eXBlOnFMLHNlbGVjdG9yczpbWyJmb3JtIiwzLCJuZ05vRm9ybSIsIiIsMywibmdOYXRpdmVWYWxpZGF0ZSIsIiJdXSxob3N0QXR0cnM6WyJub3ZhbGlkYXRlIiwiIl19KTsKLyoqCiAgICAgKiBAbGljZW5zZQogICAgICogQ29weXJpZ2h0IEdvb2dsZSBMTEMgQWxsIFJpZ2h0cyBSZXNlcnZlZC4KICAgICAqCiAgICAgKiBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhbiBNSVQtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQogICAgICogZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZSBhdCBodHRwczovL2FuZ3VsYXIuaW8vbGljZW5zZQogICAgICovCmNvbnN0IFpMPW5ldyBGYSgiTmdNb2RlbFdpdGhGb3JtQ29udHJvbFdhcm5pbmciKSxYTD17cHJvdmlkZTpBRix1c2VFeGlzdGluZzphYSgoKCk9PkpMKSl9O2NsYXNzIEpMIGV4dGVuZHMgQUZ7Y29uc3RydWN0b3IodCxuLGUsYSl7c3VwZXIoKSx0aGlzLl9uZ01vZGVsV2FybmluZ0NvbmZpZz1hLHRoaXMudXBkYXRlPW5ldyBFZix0aGlzLl9uZ01vZGVsV2FybmluZ1NlbnQ9ITEsdGhpcy5fcmF3VmFsaWRhdG9ycz10fHxbXSx0aGlzLl9yYXdBc3luY1ZhbGlkYXRvcnM9bnx8W10sdGhpcy52YWx1ZUFjY2Vzc29yPU1MKHRoaXMsZSl9c2V0IGlzRGlzYWJsZWQodCl7KCJ1bmRlZmluZWQiPT10eXBlb2YgbmdEZXZNb2RlfHxuZ0Rldk1vZGUpJiZuTC5kaXNhYmxlZEF0dHJXYXJuaW5nKCl9bmdPbkNoYW5nZXModCl7dGhpcy5faXNDb250cm9sQ2hhbmdlZCh0KSYmKGRMKHRoaXMuZm9ybSx0aGlzKSx0aGlzLmNvbnRyb2wuZGlzYWJsZWQmJnRoaXMudmFsdWVBY2Nlc3Nvci5zZXREaXNhYmxlZFN0YXRlJiZ0aGlzLnZhbHVlQWNjZXNzb3Iuc2V0RGlzYWJsZWRTdGF0ZSghMCksdGhpcy5mb3JtLnVwZGF0ZVZhbHVlQW5kVmFsaWRpdHkoe2VtaXRFdmVudDohMX0pKSxoTCh0LHRoaXMudmlld01vZGVsKSYmKFBMKCJmb3JtQ29udHJvbCIsSkwsdGhpcyx0aGlzLl9uZ01vZGVsV2FybmluZ0NvbmZpZyksdGhpcy5mb3JtLnNldFZhbHVlKHRoaXMubW9kZWwpLHRoaXMudmlld01vZGVsPXRoaXMubW9kZWwpfWdldCBwYXRoKCl7cmV0dXJuW119Z2V0IHZhbGlkYXRvcigpe3JldHVybiB1TCh0aGlzLl9yYXdWYWxpZGF0b3JzKX1nZXQgYXN5bmNWYWxpZGF0b3IoKXtyZXR1cm4gZkwodGhpcy5fcmF3QXN5bmNWYWxpZGF0b3JzKX1nZXQgY29udHJvbCgpe3JldHVybiB0aGlzLmZvcm19dmlld1RvTW9kZWxVcGRhdGUodCl7dGhpcy52aWV3TW9kZWw9dCx0aGlzLnVwZGF0ZS5lbWl0KHQpfV9pc0NvbnRyb2xDaGFuZ2VkKHQpe3JldHVybiB0Lmhhc093blByb3BlcnR5KCJmb3JtIil9fUpMLsm1ZmFjPWZ1bmN0aW9uIHQobil7cmV0dXJuIG5ldyhufHxKTCkoWmcoTkYsMTApLFpnKEZGLDEwKSxaZyhNRiwxMCksWmcoWkwsOCkpfSxKTC7JtWRpcj12byh7dHlwZTpKTCxzZWxlY3RvcnM6W1siIiwiZm9ybUNvbnRyb2wiLCIiXV0saW5wdXRzOntpc0Rpc2FibGVkOlsiZGlzYWJsZWQiLCJpc0Rpc2FibGVkIl0sZm9ybTpbImZvcm1Db250cm9sIiwiZm9ybSJdLG1vZGVsOlsibmdNb2RlbCIsIm1vZGVsIl19LG91dHB1dHM6e3VwZGF0ZToibmdNb2RlbENoYW5nZSJ9LGV4cG9ydEFzOlsibmdGb3JtIl0sZmVhdHVyZXM6W011KFtYTF0pLGhnLHByXX0pLEpMLl9uZ01vZGVsV2FybmluZ1NlbnRPbmNlPSExLEpMLmN0b3JQYXJhbWV0ZXJzPSgpPT5be3R5cGU6QXJyYXksZGVjb3JhdG9yczpbe3R5cGU6TmV9LHt0eXBlOkZlfSx7dHlwZTpJZSxhcmdzOltORl19XX0se3R5cGU6QXJyYXksZGVjb3JhdG9yczpbe3R5cGU6TmV9LHt0eXBlOkZlfSx7dHlwZTpJZSxhcmdzOltGRl19XX0se3R5cGU6QXJyYXksZGVjb3JhdG9yczpbe3R5cGU6TmV9LHt0eXBlOkZlfSx7dHlwZTpJZSxhcmdzOltNRl19XX0se3R5cGU6U3RyaW5nLGRlY29yYXRvcnM6W3t0eXBlOk5lfSx7dHlwZTpJZSxhcmdzOltaTF19XX1dLEpMLnByb3BEZWNvcmF0b3JzPXtmb3JtOlt7dHlwZTpmXyxhcmdzOlsiZm9ybUNvbnRyb2wiXX1dLGlzRGlzYWJsZWQ6W3t0eXBlOmZfLGFyZ3M6WyJkaXNhYmxlZCJdfV0sbW9kZWw6W3t0eXBlOmZfLGFyZ3M6WyJuZ01vZGVsIl19XSx1cGRhdGU6W3t0eXBlOmhfLGFyZ3M6WyJuZ01vZGVsQ2hhbmdlIl19XX07Ci8qKgogICAgICogQGxpY2Vuc2UKICAgICAqIENvcHlyaWdodCBHb29nbGUgTExDIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCiAgICAgKgogICAgICogVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYW4gTUlULXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKICAgICAqIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUgYXQgaHR0cHM6Ly9hbmd1bGFyLmlvL2xpY2Vuc2UKICAgICAqLwpjb25zdCBRTD17cHJvdmlkZTp3Rix1c2VFeGlzdGluZzphYSgoKCk9PktMKSl9O2NsYXNzIEtMIGV4dGVuZHMgd0Z7Y29uc3RydWN0b3IodCxuKXtzdXBlcigpLHRoaXMuX3ZhbGlkYXRvcnM9dCx0aGlzLl9hc3luY1ZhbGlkYXRvcnM9bix0aGlzLnN1Ym1pdHRlZD0hMSx0aGlzLmRpcmVjdGl2ZXM9W10sdGhpcy5mb3JtPW51bGwsdGhpcy5uZ1N1Ym1pdD1uZXcgRWZ9bmdPbkNoYW5nZXModCl7dGhpcy5fY2hlY2tGb3JtUHJlc2VudCgpLHQuaGFzT3duUHJvcGVydHkoImZvcm0iKSYmKHRoaXMuX3VwZGF0ZVZhbGlkYXRvcnMoKSx0aGlzLl91cGRhdGVEb21WYWx1ZSgpLHRoaXMuX3VwZGF0ZVJlZ2lzdHJhdGlvbnMoKSl9Z2V0IGZvcm1EaXJlY3RpdmUoKXtyZXR1cm4gdGhpc31nZXQgY29udHJvbCgpe3JldHVybiB0aGlzLmZvcm19Z2V0IHBhdGgoKXtyZXR1cm5bXX1hZGRDb250cm9sKHQpe2NvbnN0IG49dGhpcy5mb3JtLmdldCh0LnBhdGgpO3JldHVybiBkTChuLHQpLG4udXBkYXRlVmFsdWVBbmRWYWxpZGl0eSh7ZW1pdEV2ZW50OiExfSksdGhpcy5kaXJlY3RpdmVzLnB1c2godCksbn1nZXRDb250cm9sKHQpe3JldHVybiB0aGlzLmZvcm0uZ2V0KHQucGF0aCl9cmVtb3ZlQ29udHJvbCh0KXtPTCh0aGlzLmRpcmVjdGl2ZXMsdCl9YWRkRm9ybUdyb3VwKHQpe2NvbnN0IG49dGhpcy5mb3JtLmdldCh0LnBhdGgpO3BMKG4sdCksbi51cGRhdGVWYWx1ZUFuZFZhbGlkaXR5KHtlbWl0RXZlbnQ6ITF9KX1yZW1vdmVGb3JtR3JvdXAodCl7fWdldEZvcm1Hcm91cCh0KXtyZXR1cm4gdGhpcy5mb3JtLmdldCh0LnBhdGgpfWFkZEZvcm1BcnJheSh0KXtjb25zdCBuPXRoaXMuZm9ybS5nZXQodC5wYXRoKTtwTChuLHQpLG4udXBkYXRlVmFsdWVBbmRWYWxpZGl0eSh7ZW1pdEV2ZW50OiExfSl9cmVtb3ZlRm9ybUFycmF5KHQpe31nZXRGb3JtQXJyYXkodCl7cmV0dXJuIHRoaXMuZm9ybS5nZXQodC5wYXRoKX11cGRhdGVNb2RlbCh0LG4pe3RoaXMuZm9ybS5nZXQodC5wYXRoKS5zZXRWYWx1ZShuKX1vblN1Ym1pdCh0KXtyZXR1cm4gdGhpcy5zdWJtaXR0ZWQ9ITAsQ0wodGhpcy5mb3JtLHRoaXMuZGlyZWN0aXZlcyksdGhpcy5uZ1N1Ym1pdC5lbWl0KHQpLCExfW9uUmVzZXQoKXt0aGlzLnJlc2V0Rm9ybSgpfXJlc2V0Rm9ybSh0KXt0aGlzLmZvcm0ucmVzZXQodCksdGhpcy5zdWJtaXR0ZWQ9ITF9X3VwZGF0ZURvbVZhbHVlKCl7dGhpcy5kaXJlY3RpdmVzLmZvckVhY2goKHQ9Pntjb25zdCBuPXRoaXMuZm9ybS5nZXQodC5wYXRoKTt0LmNvbnRyb2whPT1uJiYoKGZ1bmN0aW9uIGUodCxuKXtjb25zdCBlPSgpPT57KCJ1bmRlZmluZWQiPT10eXBlb2YgbmdEZXZNb2RlfHxuZ0Rldk1vZGUpJiYoZnVuY3Rpb24gdChuKXtiTChuLCJUaGVyZSBpcyBubyBGb3JtQ29udHJvbCBpbnN0YW5jZSBhdHRhY2hlZCB0byBmb3JtIGNvbnRyb2wgZWxlbWVudCB3aXRoIil9KShuKX07bi52YWx1ZUFjY2Vzc29yLnJlZ2lzdGVyT25DaGFuZ2UoZSksbi52YWx1ZUFjY2Vzc29yLnJlZ2lzdGVyT25Ub3VjaGVkKGUpLG4uX3Jhd1ZhbGlkYXRvcnMuZm9yRWFjaCgodD0+e3QucmVnaXN0ZXJPblZhbGlkYXRvckNoYW5nZSYmdC5yZWdpc3Rlck9uVmFsaWRhdG9yQ2hhbmdlKG51bGwpfSkpLG4uX3Jhd0FzeW5jVmFsaWRhdG9ycy5mb3JFYWNoKCh0PT57dC5yZWdpc3Rlck9uVmFsaWRhdG9yQ2hhbmdlJiZ0LnJlZ2lzdGVyT25WYWxpZGF0b3JDaGFuZ2UobnVsbCl9KSksdCYmdC5fY2xlYXJDaGFuZ2VGbnMoKX0pKHQuY29udHJvbCx0KSxuJiZkTChuLHQpLHQuY29udHJvbD1uKX0pKSx0aGlzLmZvcm0uX3VwZGF0ZVRyZWVWYWxpZGl0eSh7ZW1pdEV2ZW50OiExfSl9X3VwZGF0ZVJlZ2lzdHJhdGlvbnMoKXt0aGlzLmZvcm0uX3JlZ2lzdGVyT25Db2xsZWN0aW9uQ2hhbmdlKCgoKT0+dGhpcy5fdXBkYXRlRG9tVmFsdWUoKSkpLHRoaXMuX29sZEZvcm0mJnRoaXMuX29sZEZvcm0uX3JlZ2lzdGVyT25Db2xsZWN0aW9uQ2hhbmdlKCgoKT0+e30pKSx0aGlzLl9vbGRGb3JtPXRoaXMuZm9ybX1fdXBkYXRlVmFsaWRhdG9ycygpe2NvbnN0IHQ9dUwodGhpcy5fdmFsaWRhdG9ycyk7dGhpcy5mb3JtLnZhbGlkYXRvcj1IRi5jb21wb3NlKFt0aGlzLmZvcm0udmFsaWRhdG9yLHRdKTtjb25zdCBuPWZMKHRoaXMuX2FzeW5jVmFsaWRhdG9ycyk7dGhpcy5mb3JtLmFzeW5jVmFsaWRhdG9yPUhGLmNvbXBvc2VBc3luYyhbdGhpcy5mb3JtLmFzeW5jVmFsaWRhdG9yLG5dKX1fY2hlY2tGb3JtUHJlc2VudCgpe3RoaXMuZm9ybXx8InVuZGVmaW5lZCIhPXR5cGVvZiBuZ0Rldk1vZGUmJiFuZ0Rldk1vZGV8fG5MLm1pc3NpbmdGb3JtRXhjZXB0aW9uKCl9fUtMLsm1ZmFjPWZ1bmN0aW9uIHQobil7cmV0dXJuIG5ldyhufHxLTCkoWmcoTkYsMTApLFpnKEZGLDEwKSl9LEtMLsm1ZGlyPXZvKHt0eXBlOktMLHNlbGVjdG9yczpbWyIiLCJmb3JtR3JvdXAiLCIiXV0saG9zdEJpbmRpbmdzOmZ1bmN0aW9uIHQobixlKXsxJm4mJmNwKCJzdWJtaXQiLChmdW5jdGlvbiB0KG4pe3JldHVybiBlLm9uU3VibWl0KG4pfSkpKCJyZXNldCIsKGZ1bmN0aW9uIHQoKXtyZXR1cm4gZS5vblJlc2V0KCl9KSl9LGlucHV0czp7Zm9ybTpbImZvcm1Hcm91cCIsImZvcm0iXX0sb3V0cHV0czp7bmdTdWJtaXQ6Im5nU3VibWl0In0sZXhwb3J0QXM6WyJuZ0Zvcm0iXSxmZWF0dXJlczpbTXUoW1FMXSksaGcscHJdfSksS0wuY3RvclBhcmFtZXRlcnM9KCk9Plt7dHlwZTpBcnJheSxkZWNvcmF0b3JzOlt7dHlwZTpOZX0se3R5cGU6RmV9LHt0eXBlOkllLGFyZ3M6W05GXX1dfSx7dHlwZTpBcnJheSxkZWNvcmF0b3JzOlt7dHlwZTpOZX0se3R5cGU6RmV9LHt0eXBlOkllLGFyZ3M6W0ZGXX1dfV0sS0wucHJvcERlY29yYXRvcnM9e2Zvcm06W3t0eXBlOmZfLGFyZ3M6WyJmb3JtR3JvdXAiXX1dLG5nU3VibWl0Olt7dHlwZTpoX31dfTsKLyoqCiAgICAgKiBAbGljZW5zZQogICAgICogQ29weXJpZ2h0IEdvb2dsZSBMTEMgQWxsIFJpZ2h0cyBSZXNlcnZlZC4KICAgICAqCiAgICAgKiBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhbiBNSVQtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQogICAgICogZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZSBhdCBodHRwczovL2FuZ3VsYXIuaW8vbGljZW5zZQogICAgICovCmNvbnN0ICRMPXtwcm92aWRlOndGLHVzZUV4aXN0aW5nOmFhKCgoKT0+dEgpKX07Y2xhc3MgdEggZXh0ZW5kcyBITHtjb25zdHJ1Y3Rvcih0LG4sZSl7c3VwZXIoKSx0aGlzLl9wYXJlbnQ9dCx0aGlzLl92YWxpZGF0b3JzPW4sdGhpcy5fYXN5bmNWYWxpZGF0b3JzPWV9X2NoZWNrUGFyZW50VHlwZSgpe2FIKHRoaXMuX3BhcmVudCkmJigidW5kZWZpbmVkIj09dHlwZW9mIG5nRGV2TW9kZXx8bmdEZXZNb2RlKSYmbkwuZ3JvdXBQYXJlbnRFeGNlcHRpb24oKX19dEguybVmYWM9ZnVuY3Rpb24gdChuKXtyZXR1cm4gbmV3KG58fHRIKShaZyh3RiwxMyksWmcoTkYsMTApLFpnKEZGLDEwKSl9LHRILsm1ZGlyPXZvKHt0eXBlOnRILHNlbGVjdG9yczpbWyIiLCJmb3JtR3JvdXBOYW1lIiwiIl1dLGlucHV0czp7bmFtZTpbImZvcm1Hcm91cE5hbWUiLCJuYW1lIl19LGZlYXR1cmVzOltNdShbJExdKSxoZ119KSx0SC5jdG9yUGFyYW1ldGVycz0oKT0+W3t0eXBlOndGLGRlY29yYXRvcnM6W3t0eXBlOk5lfSx7dHlwZTpIZX0se3R5cGU6TGV9XX0se3R5cGU6QXJyYXksZGVjb3JhdG9yczpbe3R5cGU6TmV9LHt0eXBlOkZlfSx7dHlwZTpJZSxhcmdzOltORl19XX0se3R5cGU6QXJyYXksZGVjb3JhdG9yczpbe3R5cGU6TmV9LHt0eXBlOkZlfSx7dHlwZTpJZSxhcmdzOltGRl19XX1dLHRILnByb3BEZWNvcmF0b3JzPXtuYW1lOlt7dHlwZTpmXyxhcmdzOlsiZm9ybUdyb3VwTmFtZSJdfV19O2NvbnN0IG5IPXtwcm92aWRlOndGLHVzZUV4aXN0aW5nOmFhKCgoKT0+ZUgpKX07Y2xhc3MgZUggZXh0ZW5kcyB3Rntjb25zdHJ1Y3Rvcih0LG4sZSl7c3VwZXIoKSx0aGlzLl9wYXJlbnQ9dCx0aGlzLl92YWxpZGF0b3JzPW4sdGhpcy5fYXN5bmNWYWxpZGF0b3JzPWV9bmdPbkluaXQoKXt0aGlzLl9jaGVja1BhcmVudFR5cGUoKSx0aGlzLmZvcm1EaXJlY3RpdmUuYWRkRm9ybUFycmF5KHRoaXMpfW5nT25EZXN0cm95KCl7dGhpcy5mb3JtRGlyZWN0aXZlJiZ0aGlzLmZvcm1EaXJlY3RpdmUucmVtb3ZlRm9ybUFycmF5KHRoaXMpfWdldCBjb250cm9sKCl7cmV0dXJuIHRoaXMuZm9ybURpcmVjdGl2ZS5nZXRGb3JtQXJyYXkodGhpcyl9Z2V0IGZvcm1EaXJlY3RpdmUoKXtyZXR1cm4gdGhpcy5fcGFyZW50P3RoaXMuX3BhcmVudC5mb3JtRGlyZWN0aXZlOm51bGx9Z2V0IHBhdGgoKXtyZXR1cm4gbUwobnVsbD09dGhpcy5uYW1lP3RoaXMubmFtZTp0aGlzLm5hbWUudG9TdHJpbmcoKSx0aGlzLl9wYXJlbnQpfWdldCB2YWxpZGF0b3IoKXtyZXR1cm4gdUwodGhpcy5fdmFsaWRhdG9ycyl9Z2V0IGFzeW5jVmFsaWRhdG9yKCl7cmV0dXJuIGZMKHRoaXMuX2FzeW5jVmFsaWRhdG9ycyl9X2NoZWNrUGFyZW50VHlwZSgpe2FIKHRoaXMuX3BhcmVudCkmJigidW5kZWZpbmVkIj09dHlwZW9mIG5nRGV2TW9kZXx8bmdEZXZNb2RlKSYmbkwuYXJyYXlQYXJlbnRFeGNlcHRpb24oKX19ZnVuY3Rpb24gYUgodCl7cmV0dXJuISh0IGluc3RhbmNlb2YgdEh8fHQgaW5zdGFuY2VvZiBLTHx8dCBpbnN0YW5jZW9mIGVIKX0KLyoqCiAgICAgKiBAbGljZW5zZQogICAgICogQ29weXJpZ2h0IEdvb2dsZSBMTEMgQWxsIFJpZ2h0cyBSZXNlcnZlZC4KICAgICAqCiAgICAgKiBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhbiBNSVQtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQogICAgICogZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZSBhdCBodHRwczovL2FuZ3VsYXIuaW8vbGljZW5zZQogICAgICovZUguybVmYWM9ZnVuY3Rpb24gdChuKXtyZXR1cm4gbmV3KG58fGVIKShaZyh3RiwxMyksWmcoTkYsMTApLFpnKEZGLDEwKSl9LGVILsm1ZGlyPXZvKHt0eXBlOmVILHNlbGVjdG9yczpbWyIiLCJmb3JtQXJyYXlOYW1lIiwiIl1dLGlucHV0czp7bmFtZTpbImZvcm1BcnJheU5hbWUiLCJuYW1lIl19LGZlYXR1cmVzOltNdShbbkhdKSxoZ119KSxlSC5jdG9yUGFyYW1ldGVycz0oKT0+W3t0eXBlOndGLGRlY29yYXRvcnM6W3t0eXBlOk5lfSx7dHlwZTpIZX0se3R5cGU6TGV9XX0se3R5cGU6QXJyYXksZGVjb3JhdG9yczpbe3R5cGU6TmV9LHt0eXBlOkZlfSx7dHlwZTpJZSxhcmdzOltORl19XX0se3R5cGU6QXJyYXksZGVjb3JhdG9yczpbe3R5cGU6TmV9LHt0eXBlOkZlfSx7dHlwZTpJZSxhcmdzOltGRl19XX1dLGVILnByb3BEZWNvcmF0b3JzPXtuYW1lOlt7dHlwZTpmXyxhcmdzOlsiZm9ybUFycmF5TmFtZSJdfV19O2NvbnN0IG9IPXtwcm92aWRlOkFGLHVzZUV4aXN0aW5nOmFhKCgoKT0+ckgpKX07Y2xhc3MgckggZXh0ZW5kcyBBRntjb25zdHJ1Y3Rvcih0LG4sZSxhLG8pe3N1cGVyKCksdGhpcy5fbmdNb2RlbFdhcm5pbmdDb25maWc9byx0aGlzLl9hZGRlZD0hMSx0aGlzLnVwZGF0ZT1uZXcgRWYsdGhpcy5fbmdNb2RlbFdhcm5pbmdTZW50PSExLHRoaXMuX3BhcmVudD10LHRoaXMuX3Jhd1ZhbGlkYXRvcnM9bnx8W10sdGhpcy5fcmF3QXN5bmNWYWxpZGF0b3JzPWV8fFtdLHRoaXMudmFsdWVBY2Nlc3Nvcj1NTCh0aGlzLGEpfXNldCBpc0Rpc2FibGVkKHQpeygidW5kZWZpbmVkIj09dHlwZW9mIG5nRGV2TW9kZXx8bmdEZXZNb2RlKSYmbkwuZGlzYWJsZWRBdHRyV2FybmluZygpfW5nT25DaGFuZ2VzKHQpe3RoaXMuX2FkZGVkfHx0aGlzLl9zZXRVcENvbnRyb2woKSxoTCh0LHRoaXMudmlld01vZGVsKSYmKFBMKCJmb3JtQ29udHJvbE5hbWUiLHJILHRoaXMsdGhpcy5fbmdNb2RlbFdhcm5pbmdDb25maWcpLHRoaXMudmlld01vZGVsPXRoaXMubW9kZWwsdGhpcy5mb3JtRGlyZWN0aXZlLnVwZGF0ZU1vZGVsKHRoaXMsdGhpcy5tb2RlbCkpfW5nT25EZXN0cm95KCl7dGhpcy5mb3JtRGlyZWN0aXZlJiZ0aGlzLmZvcm1EaXJlY3RpdmUucmVtb3ZlQ29udHJvbCh0aGlzKX12aWV3VG9Nb2RlbFVwZGF0ZSh0KXt0aGlzLnZpZXdNb2RlbD10LHRoaXMudXBkYXRlLmVtaXQodCl9Z2V0IHBhdGgoKXtyZXR1cm4gbUwobnVsbD09dGhpcy5uYW1lP3RoaXMubmFtZTp0aGlzLm5hbWUudG9TdHJpbmcoKSx0aGlzLl9wYXJlbnQpfWdldCBmb3JtRGlyZWN0aXZlKCl7cmV0dXJuIHRoaXMuX3BhcmVudD90aGlzLl9wYXJlbnQuZm9ybURpcmVjdGl2ZTpudWxsfWdldCB2YWxpZGF0b3IoKXtyZXR1cm4gdUwodGhpcy5fcmF3VmFsaWRhdG9ycyl9Z2V0IGFzeW5jVmFsaWRhdG9yKCl7cmV0dXJuIGZMKHRoaXMuX3Jhd0FzeW5jVmFsaWRhdG9ycyl9X2NoZWNrUGFyZW50VHlwZSgpeygidW5kZWZpbmVkIj09dHlwZW9mIG5nRGV2TW9kZXx8bmdEZXZNb2RlKSYmKCEodGhpcy5fcGFyZW50IGluc3RhbmNlb2YgdEgpJiZ0aGlzLl9wYXJlbnQgaW5zdGFuY2VvZiBITD9uTC5uZ01vZGVsR3JvdXBFeGNlcHRpb24oKTp0aGlzLl9wYXJlbnQgaW5zdGFuY2VvZiB0SHx8dGhpcy5fcGFyZW50IGluc3RhbmNlb2YgS0x8fHRoaXMuX3BhcmVudCBpbnN0YW5jZW9mIGVIfHxuTC5jb250cm9sUGFyZW50RXhjZXB0aW9uKCkpfV9zZXRVcENvbnRyb2woKXt0aGlzLl9jaGVja1BhcmVudFR5cGUoKSx0aGlzLmNvbnRyb2w9dGhpcy5mb3JtRGlyZWN0aXZlLmFkZENvbnRyb2wodGhpcyksdGhpcy5jb250cm9sLmRpc2FibGVkJiZ0aGlzLnZhbHVlQWNjZXNzb3Iuc2V0RGlzYWJsZWRTdGF0ZSYmdGhpcy52YWx1ZUFjY2Vzc29yLnNldERpc2FibGVkU3RhdGUoITApLHRoaXMuX2FkZGVkPSEwfX1ySC7JtWZhYz1mdW5jdGlvbiB0KG4pe3JldHVybiBuZXcobnx8ckgpKFpnKHdGLDEzKSxaZyhORiwxMCksWmcoRkYsMTApLFpnKE1GLDEwKSxaZyhaTCw4KSl9LHJILsm1ZGlyPXZvKHt0eXBlOnJILHNlbGVjdG9yczpbWyIiLCJmb3JtQ29udHJvbE5hbWUiLCIiXV0saW5wdXRzOntpc0Rpc2FibGVkOlsiZGlzYWJsZWQiLCJpc0Rpc2FibGVkIl0sbmFtZTpbImZvcm1Db250cm9sTmFtZSIsIm5hbWUiXSxtb2RlbDpbIm5nTW9kZWwiLCJtb2RlbCJdfSxvdXRwdXRzOnt1cGRhdGU6Im5nTW9kZWxDaGFuZ2UifSxmZWF0dXJlczpbTXUoW29IXSksaGcscHJdfSksckguX25nTW9kZWxXYXJuaW5nU2VudE9uY2U9ITEsckguY3RvclBhcmFtZXRlcnM9KCk9Plt7dHlwZTp3RixkZWNvcmF0b3JzOlt7dHlwZTpOZX0se3R5cGU6SGV9LHt0eXBlOkxlfV19LHt0eXBlOkFycmF5LGRlY29yYXRvcnM6W3t0eXBlOk5lfSx7dHlwZTpGZX0se3R5cGU6SWUsYXJnczpbTkZdfV19LHt0eXBlOkFycmF5LGRlY29yYXRvcnM6W3t0eXBlOk5lfSx7dHlwZTpGZX0se3R5cGU6SWUsYXJnczpbRkZdfV19LHt0eXBlOkFycmF5LGRlY29yYXRvcnM6W3t0eXBlOk5lfSx7dHlwZTpGZX0se3R5cGU6SWUsYXJnczpbTUZdfV19LHt0eXBlOlN0cmluZyxkZWNvcmF0b3JzOlt7dHlwZTpOZX0se3R5cGU6SWUsYXJnczpbWkxdfV19XSxySC5wcm9wRGVjb3JhdG9ycz17bmFtZTpbe3R5cGU6Zl8sYXJnczpbImZvcm1Db250cm9sTmFtZSJdfV0saXNEaXNhYmxlZDpbe3R5cGU6Zl8sYXJnczpbImRpc2FibGVkIl19XSxtb2RlbDpbe3R5cGU6Zl8sYXJnczpbIm5nTW9kZWwiXX1dLHVwZGF0ZTpbe3R5cGU6aF8sYXJnczpbIm5nTW9kZWxDaGFuZ2UiXX1dfTsKLyoqCiAgICAgKiBAbGljZW5zZQogICAgICogQ29weXJpZ2h0IEdvb2dsZSBMTEMgQWxsIFJpZ2h0cyBSZXNlcnZlZC4KICAgICAqCiAgICAgKiBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhbiBNSVQtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQogICAgICogZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZSBhdCBodHRwczovL2FuZ3VsYXIuaW8vbGljZW5zZQogICAgICovCmNvbnN0IGlIPXtwcm92aWRlOk5GLHVzZUV4aXN0aW5nOmFhKCgoKT0+c0gpKSxtdWx0aTohMH0sY0g9e3Byb3ZpZGU6TkYsdXNlRXhpc3Rpbmc6YWEoKCgpPT5sSCkpLG11bHRpOiEwfTtjbGFzcyBzSHtjb25zdHJ1Y3Rvcigpe3RoaXMuX3JlcXVpcmVkPSExfWdldCByZXF1aXJlZCgpe3JldHVybiB0aGlzLl9yZXF1aXJlZH1zZXQgcmVxdWlyZWQodCl7dGhpcy5fcmVxdWlyZWQ9bnVsbCE9dCYmITEhPT10JiYiZmFsc2UiIT1gJHt0fWAsdGhpcy5fb25DaGFuZ2UmJnRoaXMuX29uQ2hhbmdlKCl9dmFsaWRhdGUodCl7cmV0dXJuIHRoaXMucmVxdWlyZWQ/SEYucmVxdWlyZWQodCk6bnVsbH1yZWdpc3Rlck9uVmFsaWRhdG9yQ2hhbmdlKHQpe3RoaXMuX29uQ2hhbmdlPXR9fXNILsm1ZmFjPWZ1bmN0aW9uIHQobil7cmV0dXJuIG5ldyhufHxzSCl9LHNILsm1ZGlyPXZvKHt0eXBlOnNILHNlbGVjdG9yczpbWyIiLCJyZXF1aXJlZCIsIiIsImZvcm1Db250cm9sTmFtZSIsIiIsMywidHlwZSIsImNoZWNrYm94Il0sWyIiLCJyZXF1aXJlZCIsIiIsImZvcm1Db250cm9sIiwiIiwzLCJ0eXBlIiwiY2hlY2tib3giXSxbIiIsInJlcXVpcmVkIiwiIiwibmdNb2RlbCIsIiIsMywidHlwZSIsImNoZWNrYm94Il1dLGhvc3RWYXJzOjEsaG9zdEJpbmRpbmdzOmZ1bmN0aW9uIHQobixlKXsyJm4mJk5nKCJyZXF1aXJlZCIsZS5yZXF1aXJlZD8iIjpudWxsKX0saW5wdXRzOntyZXF1aXJlZDoicmVxdWlyZWQifSxmZWF0dXJlczpbTXUoW2lIXSldfSksc0gucHJvcERlY29yYXRvcnM9e3JlcXVpcmVkOlt7dHlwZTpmX31dfTtjbGFzcyBsSCBleHRlbmRzIHNIe3ZhbGlkYXRlKHQpe3JldHVybiB0aGlzLnJlcXVpcmVkP0hGLnJlcXVpcmVkVHJ1ZSh0KTpudWxsfX1sSC7JtWZhYz1mdW5jdGlvbiB0KG4pe3JldHVybiBtSChufHxsSCl9LGxILsm1ZGlyPXZvKHt0eXBlOmxILHNlbGVjdG9yczpbWyJpbnB1dCIsInR5cGUiLCJjaGVja2JveCIsInJlcXVpcmVkIiwiIiwiZm9ybUNvbnRyb2xOYW1lIiwiIl0sWyJpbnB1dCIsInR5cGUiLCJjaGVja2JveCIsInJlcXVpcmVkIiwiIiwiZm9ybUNvbnRyb2wiLCIiXSxbImlucHV0IiwidHlwZSIsImNoZWNrYm94IiwicmVxdWlyZWQiLCIiLCJuZ01vZGVsIiwiIl1dLGhvc3RWYXJzOjEsaG9zdEJpbmRpbmdzOmZ1bmN0aW9uIHQobixlKXsyJm4mJk5nKCJyZXF1aXJlZCIsZS5yZXF1aXJlZD8iIjpudWxsKX0sZmVhdHVyZXM6W011KFtjSF0pLGhnXX0pO2NvbnN0IG1IPXRjKGxIKSxkSD17cHJvdmlkZTpORix1c2VFeGlzdGluZzphYSgoKCk9PmdIKSksbXVsdGk6ITB9O2NsYXNzIGdIe2NvbnN0cnVjdG9yKCl7dGhpcy5fZW5hYmxlZD0hMX1zZXQgZW1haWwodCl7dGhpcy5fZW5hYmxlZD0iIj09PXR8fCEwPT09dHx8InRydWUiPT09dCx0aGlzLl9vbkNoYW5nZSYmdGhpcy5fb25DaGFuZ2UoKX12YWxpZGF0ZSh0KXtyZXR1cm4gdGhpcy5fZW5hYmxlZD9IRi5lbWFpbCh0KTpudWxsfXJlZ2lzdGVyT25WYWxpZGF0b3JDaGFuZ2UodCl7dGhpcy5fb25DaGFuZ2U9dH19Z0guybVmYWM9ZnVuY3Rpb24gdChuKXtyZXR1cm4gbmV3KG58fGdIKX0sZ0guybVkaXI9dm8oe3R5cGU6Z0gsc2VsZWN0b3JzOltbIiIsImVtYWlsIiwiIiwiZm9ybUNvbnRyb2xOYW1lIiwiIl0sWyIiLCJlbWFpbCIsIiIsImZvcm1Db250cm9sIiwiIl0sWyIiLCJlbWFpbCIsIiIsIm5nTW9kZWwiLCIiXV0saW5wdXRzOntlbWFpbDoiZW1haWwifSxmZWF0dXJlczpbTXUoW2RIXSldfSksZ0gucHJvcERlY29yYXRvcnM9e2VtYWlsOlt7dHlwZTpmX31dfTtjb25zdCBwSD17cHJvdmlkZTpORix1c2VFeGlzdGluZzphYSgoKCk9PmJIKSksbXVsdGk6ITB9O2NsYXNzIGJIe2NvbnN0cnVjdG9yKCl7dGhpcy5fdmFsaWRhdG9yPUhGLm51bGxWYWxpZGF0b3J9bmdPbkNoYW5nZXModCl7Im1pbmxlbmd0aCJpbiB0JiYodGhpcy5fY3JlYXRlVmFsaWRhdG9yKCksdGhpcy5fb25DaGFuZ2UmJnRoaXMuX29uQ2hhbmdlKCkpfXZhbGlkYXRlKHQpe3JldHVybiBudWxsPT10aGlzLm1pbmxlbmd0aD9udWxsOnRoaXMuX3ZhbGlkYXRvcih0KX1yZWdpc3Rlck9uVmFsaWRhdG9yQ2hhbmdlKHQpe3RoaXMuX29uQ2hhbmdlPXR9X2NyZWF0ZVZhbGlkYXRvcigpe3RoaXMuX3ZhbGlkYXRvcj1IRi5taW5MZW5ndGgoIm51bWJlciI9PXR5cGVvZiB0aGlzLm1pbmxlbmd0aD90aGlzLm1pbmxlbmd0aDpwYXJzZUludCh0aGlzLm1pbmxlbmd0aCwxMCkpfX1iSC7JtWZhYz1mdW5jdGlvbiB0KG4pe3JldHVybiBuZXcobnx8YkgpfSxiSC7JtWRpcj12byh7dHlwZTpiSCxzZWxlY3RvcnM6W1siIiwibWlubGVuZ3RoIiwiIiwiZm9ybUNvbnRyb2xOYW1lIiwiIl0sWyIiLCJtaW5sZW5ndGgiLCIiLCJmb3JtQ29udHJvbCIsIiJdLFsiIiwibWlubGVuZ3RoIiwiIiwibmdNb2RlbCIsIiJdXSxob3N0VmFyczoxLGhvc3RCaW5kaW5nczpmdW5jdGlvbiB0KG4sZSl7MiZuJiZOZygibWlubGVuZ3RoIixlLm1pbmxlbmd0aD9lLm1pbmxlbmd0aDpudWxsKX0saW5wdXRzOnttaW5sZW5ndGg6Im1pbmxlbmd0aCJ9LGZlYXR1cmVzOltNdShbcEhdKSxwcl19KSxiSC5wcm9wRGVjb3JhdG9ycz17bWlubGVuZ3RoOlt7dHlwZTpmX31dfTtjb25zdCB1SD17cHJvdmlkZTpORix1c2VFeGlzdGluZzphYSgoKCk9PmZIKSksbXVsdGk6ITB9O2NsYXNzIGZIe2NvbnN0cnVjdG9yKCl7dGhpcy5fdmFsaWRhdG9yPUhGLm51bGxWYWxpZGF0b3J9bmdPbkNoYW5nZXModCl7Im1heGxlbmd0aCJpbiB0JiYodGhpcy5fY3JlYXRlVmFsaWRhdG9yKCksdGhpcy5fb25DaGFuZ2UmJnRoaXMuX29uQ2hhbmdlKCkpfXZhbGlkYXRlKHQpe3JldHVybiBudWxsIT10aGlzLm1heGxlbmd0aD90aGlzLl92YWxpZGF0b3IodCk6bnVsbH1yZWdpc3Rlck9uVmFsaWRhdG9yQ2hhbmdlKHQpe3RoaXMuX29uQ2hhbmdlPXR9X2NyZWF0ZVZhbGlkYXRvcigpe3RoaXMuX3ZhbGlkYXRvcj1IRi5tYXhMZW5ndGgoIm51bWJlciI9PXR5cGVvZiB0aGlzLm1heGxlbmd0aD90aGlzLm1heGxlbmd0aDpwYXJzZUludCh0aGlzLm1heGxlbmd0aCwxMCkpfX1mSC7JtWZhYz1mdW5jdGlvbiB0KG4pe3JldHVybiBuZXcobnx8ZkgpfSxmSC7JtWRpcj12byh7dHlwZTpmSCxzZWxlY3RvcnM6W1siIiwibWF4bGVuZ3RoIiwiIiwiZm9ybUNvbnRyb2xOYW1lIiwiIl0sWyIiLCJtYXhsZW5ndGgiLCIiLCJmb3JtQ29udHJvbCIsIiJdLFsiIiwibWF4bGVuZ3RoIiwiIiwibmdNb2RlbCIsIiJdXSxob3N0VmFyczoxLGhvc3RCaW5kaW5nczpmdW5jdGlvbiB0KG4sZSl7MiZuJiZOZygibWF4bGVuZ3RoIixlLm1heGxlbmd0aD9lLm1heGxlbmd0aDpudWxsKX0saW5wdXRzOnttYXhsZW5ndGg6Im1heGxlbmd0aCJ9LGZlYXR1cmVzOltNdShbdUhdKSxwcl19KSxmSC5wcm9wRGVjb3JhdG9ycz17bWF4bGVuZ3RoOlt7dHlwZTpmX31dfTtjb25zdCBoSD17cHJvdmlkZTpORix1c2VFeGlzdGluZzphYSgoKCk9Pl9IKSksbXVsdGk6ITB9O2NsYXNzIF9Ie2NvbnN0cnVjdG9yKCl7dGhpcy5fdmFsaWRhdG9yPUhGLm51bGxWYWxpZGF0b3J9bmdPbkNoYW5nZXModCl7InBhdHRlcm4iaW4gdCYmKHRoaXMuX2NyZWF0ZVZhbGlkYXRvcigpLHRoaXMuX29uQ2hhbmdlJiZ0aGlzLl9vbkNoYW5nZSgpKX12YWxpZGF0ZSh0KXtyZXR1cm4gdGhpcy5fdmFsaWRhdG9yKHQpfXJlZ2lzdGVyT25WYWxpZGF0b3JDaGFuZ2UodCl7dGhpcy5fb25DaGFuZ2U9dH1fY3JlYXRlVmFsaWRhdG9yKCl7dGhpcy5fdmFsaWRhdG9yPUhGLnBhdHRlcm4odGhpcy5wYXR0ZXJuKX19X0guybVmYWM9ZnVuY3Rpb24gdChuKXtyZXR1cm4gbmV3KG58fF9IKX0sX0guybVkaXI9dm8oe3R5cGU6X0gsc2VsZWN0b3JzOltbIiIsInBhdHRlcm4iLCIiLCJmb3JtQ29udHJvbE5hbWUiLCIiXSxbIiIsInBhdHRlcm4iLCIiLCJmb3JtQ29udHJvbCIsIiJdLFsiIiwicGF0dGVybiIsIiIsIm5nTW9kZWwiLCIiXV0saG9zdFZhcnM6MSxob3N0QmluZGluZ3M6ZnVuY3Rpb24gdChuLGUpezImbiYmTmcoInBhdHRlcm4iLGUucGF0dGVybj9lLnBhdHRlcm46bnVsbCl9LGlucHV0czp7cGF0dGVybjoicGF0dGVybiJ9LGZlYXR1cmVzOltNdShbaEhdKSxwcl19KSxfSC5wcm9wRGVjb3JhdG9ycz17cGF0dGVybjpbe3R5cGU6Zl99XX07Y2xhc3MgQ0h7fUNILsm1bW9kPXhvKHt0eXBlOkNIfSksQ0guybVpbmo9R2Uoe2ZhY3Rvcnk6ZnVuY3Rpb24gdChuKXtyZXR1cm4gbmV3KG58fENIKX19KSwoInVuZGVmaW5lZCI9PXR5cGVvZiBuZ0ppdE1vZGV8fG5nSml0TW9kZSkmJnlvKENILHtkZWNsYXJhdGlvbnM6W3FMLHJMLGxMLGtGLFlGLFFGLFBGLG9MLHNMLFhGLFJGLFRGLHNILGJILGZILF9ILGxILGdIXSxleHBvcnRzOltxTCxyTCxsTCxrRixZRixRRixQRixvTCxzTCxYRixSRixURixzSCxiSCxmSCxfSCxsSCxnSF19KTtjbGFzcyBNSHtncm91cCh0LG49bnVsbCl7Y29uc3QgZT10aGlzLl9yZWR1Y2VDb250cm9scyh0KTtsZXQgYSxvPW51bGwscj1udWxsO3JldHVybiBudWxsIT1uJiYoKAovKioKICAgICAqIEBsaWNlbnNlCiAgICAgKiBDb3B5cmlnaHQgR29vZ2xlIExMQyBBbGwgUmlnaHRzIFJlc2VydmVkLgogICAgICoKICAgICAqIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGFuIE1JVC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCiAgICAgKiBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlIGF0IGh0dHBzOi8vYW5ndWxhci5pby9saWNlbnNlCiAgICAgKi8KZnVuY3Rpb24gaSh0KXtyZXR1cm4gdm9pZCAwIT09dC5hc3luY1ZhbGlkYXRvcnN8fHZvaWQgMCE9PXQudmFsaWRhdG9yc3x8dm9pZCAwIT09dC51cGRhdGVPbn0pKG4pPyhvPW51bGwhPW4udmFsaWRhdG9ycz9uLnZhbGlkYXRvcnM6bnVsbCxyPW51bGwhPW4uYXN5bmNWYWxpZGF0b3JzP24uYXN5bmNWYWxpZGF0b3JzOm51bGwsYT1udWxsIT1uLnVwZGF0ZU9uP24udXBkYXRlT246dm9pZCAwKToobz1udWxsIT1uLnZhbGlkYXRvcj9uLnZhbGlkYXRvcjpudWxsLHI9bnVsbCE9bi5hc3luY1ZhbGlkYXRvcj9uLmFzeW5jVmFsaWRhdG9yOm51bGwpKSxuZXcgREwoZSx7YXN5bmNWYWxpZGF0b3JzOnIsdXBkYXRlT246YSx2YWxpZGF0b3JzOm99KX1jb250cm9sKHQsbixlKXtyZXR1cm4gbmV3IFRMKHQsbixlKX1hcnJheSh0LG4sZSl7Y29uc3QgYT10Lm1hcCgodD0+dGhpcy5fY3JlYXRlQ29udHJvbCh0KSkpO3JldHVybiBuZXcgSUwoYSxuLGUpfV9yZWR1Y2VDb250cm9scyh0KXtjb25zdCBuPXt9O3JldHVybiBPYmplY3Qua2V5cyh0KS5mb3JFYWNoKChlPT57bltlXT10aGlzLl9jcmVhdGVDb250cm9sKHRbZV0pfSkpLG59X2NyZWF0ZUNvbnRyb2wodCl7cmV0dXJuIHQgaW5zdGFuY2VvZiBUTHx8dCBpbnN0YW5jZW9mIERMfHx0IGluc3RhbmNlb2YgSUw/dDpBcnJheS5pc0FycmF5KHQpP3RoaXMuY29udHJvbCh0WzBdLHQubGVuZ3RoPjE/dFsxXTpudWxsLHQubGVuZ3RoPjI/dFsyXTpudWxsKTp0aGlzLmNvbnRyb2wodCl9fU1ILsm1ZmFjPWZ1bmN0aW9uIHQobil7cmV0dXJuIG5ldyhufHxNSCl9LE1ILsm1cHJvdj1XZSh7dG9rZW46TUgsZmFjdG9yeTpNSC7JtWZhY30pLAovKioKICAgICAqIEBsaWNlbnNlCiAgICAgKiBDb3B5cmlnaHQgR29vZ2xlIExMQyBBbGwgUmlnaHRzIFJlc2VydmVkLgogICAgICoKICAgICAqIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGFuIE1JVC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCiAgICAgKiBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlIGF0IGh0dHBzOi8vYW5ndWxhci5pby9saWNlbnNlCiAgICAgKi8KbmV3IFJ1KCIxMC4yLjQiKTsKLyoqCiAgICAgKiBAbGljZW5zZQogICAgICogQ29weXJpZ2h0IEdvb2dsZSBMTEMgQWxsIFJpZ2h0cyBSZXNlcnZlZC4KICAgICAqCiAgICAgKiBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhbiBNSVQtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQogICAgICogZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZSBhdCBodHRwczovL2FuZ3VsYXIuaW8vbGljZW5zZQogICAgICovCmNsYXNzIE9Ie31PSC7JtW1vZD14byh7dHlwZTpPSH0pLE9ILsm1aW5qPUdlKHtmYWN0b3J5OmZ1bmN0aW9uIHQobil7cmV0dXJuIG5ldyhufHxPSCl9LHByb3ZpZGVyczpbWkZdLGltcG9ydHM6W0NIXX0pLCgidW5kZWZpbmVkIj09dHlwZW9mIG5nSml0TW9kZXx8bmdKaXRNb2RlKSYmeW8oT0gse2RlY2xhcmF0aW9uczpbWUwsVUwsTExdLGV4cG9ydHM6W0NILFlMLFVMLExMXX0pO2NsYXNzIFBIe3N0YXRpYyB3aXRoQ29uZmlnKHQpe3JldHVybntuZ01vZHVsZTpQSCxwcm92aWRlcnM6W3twcm92aWRlOlpMLHVzZVZhbHVlOnQud2Fybk9uTmdNb2RlbFdpdGhGb3JtQ29udHJvbH1dfX19UEguybVtb2Q9eG8oe3R5cGU6UEh9KSxQSC7JtWluaj1HZSh7ZmFjdG9yeTpmdW5jdGlvbiB0KG4pe3JldHVybiBuZXcobnx8UEgpfSxwcm92aWRlcnM6W01ILFpGXSxpbXBvcnRzOltDSF19KSwoInVuZGVmaW5lZCI9PXR5cGVvZiBuZ0ppdE1vZGV8fG5nSml0TW9kZSkmJnlvKFBILHtkZWNsYXJhdGlvbnM6W0pMLEtMLHJILHRILGVIXSxleHBvcnRzOltDSCxKTCxLTCxySCx0SCxlSF19KTtjb25zdCB4SD1bInRyaWdnZXIiXSx5SD1bInBhbmVsIl07ZnVuY3Rpb24ga0godCxuKXtpZigxJnQmJihLZygwLCJzcGFuIiw4KSxKcCgxKSwkZygpKSwyJnQpe2NvbnN0IHQ9Z3AoKTt3cygxKSxRcCh0LnBsYWNlaG9sZGVyfHwiwqAiKX19ZnVuY3Rpb24gdkgodCxuKXtpZigxJnQmJihLZygwLCJzcGFuIiksSnAoMSksJGcoKSksMiZ0KXtjb25zdCB0PWdwKDIpO3dzKDEpLFFwKHQudHJpZ2dlclZhbHVlfHwiwqAiKX19ZnVuY3Rpb24gd0godCxuKXsxJnQmJmhwKDAsMCxbIipuZ1N3aXRjaENhc2UiLCJ0cnVlIl0pfWZ1bmN0aW9uIFNIKHQsbil7MSZ0JiYoS2coMCwic3BhbiIsOSksWWcoMSx2SCwyLDEsInNwYW4iLDEwKSxZZygyLHdILDEsMCwibmctY29udGVudCIsMTEpLCRnKCkpLDImdCYmKEpnKCJuZ1N3aXRjaCIsISFncCgpLmN1c3RvbVRyaWdnZXIpLHdzKDIpLEpnKCJuZ1N3aXRjaENhc2UiLCEwKSl9ZnVuY3Rpb24gRUgodCxuKXtpZigxJnQpe2NvbnN0IHQ9b3AoKTtLZygwLCJkaXYiLDEyKSxLZygxLCJkaXYiLDEzLDE0KSxjcCgiQHRyYW5zZm9ybVBhbmVsLmRvbmUiLChmdW5jdGlvbiBuKGUpe3JldHVybiBqcih0KSxncCgpLl9wYW5lbERvbmVBbmltYXRpbmdTdHJlYW0ubmV4dChlLnRvU3RhdGUpfSkpKCJrZXlkb3duIiwoZnVuY3Rpb24gbihlKXtyZXR1cm4ganIodCksZ3AoKS5faGFuZGxlS2V5ZG93bihlKX0pKSxocCgzLDEpLCRnKCksJGcoKX1pZigyJnQpe2NvbnN0IHQ9Z3AoKTtKZygiQHRyYW5zZm9ybVBhbmVsV3JhcCIsdm9pZCAwKSx3cygxKSxuYigibWF0LXNlbGVjdC1wYW5lbCAiLHQuX2dldFBhbmVsVGhlbWUoKSwiIiksVHAoInRyYW5zZm9ybS1vcmlnaW4iLHQuX3RyYW5zZm9ybU9yaWdpbikoImZvbnQtc2l6ZSIsdC5fdHJpZ2dlckZvbnRTaXplLCJweCIpLEpnKCJuZ0NsYXNzIix0LnBhbmVsQ2xhc3MpKCJAdHJhbnNmb3JtUGFuZWwiLHQubXVsdGlwbGU/InNob3dpbmctbXVsdGlwbGUiOiJzaG93aW5nIiksTmcoImlkIix0LmlkKyItcGFuZWwiKSgiYXJpYS1tdWx0aXNlbGVjdGFibGUiLHQubXVsdGlwbGUpKCJhcmlhLWxhYmVsIix0LmFyaWFMYWJlbHx8bnVsbCkoImFyaWEtbGFiZWxsZWRieSIsdC5fZ2V0UGFuZWxBcmlhTGFiZWxsZWRieSgpKX19Y29uc3QgQUg9W1tbIm1hdC1zZWxlY3QtdHJpZ2dlciJdXSwiKiJdLHpIPXt0cmFuc2Zvcm1QYW5lbFdyYXA6U1AoInRyYW5zZm9ybVBhbmVsV3JhcCIsW0RQKCIqID0+IHZvaWQiLE5QKCJAdHJhbnNmb3JtUGFuZWwiLFtJUCgpXSx7b3B0aW9uYWw6ITB9KSldKSx0cmFuc2Zvcm1QYW5lbDpTUCgidHJhbnNmb3JtUGFuZWwiLFtSUCgidm9pZCIselAoe3RyYW5zZm9ybToic2NhbGVZKDAuOCkiLG1pbldpZHRoOiIxMDAlIixvcGFjaXR5OjB9KSksUlAoInNob3dpbmciLHpQKHtvcGFjaXR5OjEsbWluV2lkdGg6ImNhbGMoMTAwJSArIDMycHgpIix0cmFuc2Zvcm06InNjYWxlWSgxKSJ9KSksUlAoInNob3dpbmctbXVsdGlwbGUiLHpQKHtvcGFjaXR5OjEsbWluV2lkdGg6ImNhbGMoMTAwJSArIDY0cHgpIix0cmFuc2Zvcm06InNjYWxlWSgxKSJ9KSksRFAoInZvaWQgPT4gKiIsRVAoIjEyMG1zIGN1YmljLWJlemllcigwLCAwLCAwLjIsIDEpIikpLERQKCIqID0+IHZvaWQiLEVQKCIxMDBtcyAyNW1zIGxpbmVhciIselAoe29wYWNpdHk6MH0pKSldKX07Ci8qKgogICAgICogQGxpY2Vuc2UKICAgICAqIENvcHlyaWdodCBHb29nbGUgTExDIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCiAgICAgKgogICAgICogVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYW4gTUlULXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKICAgICAqIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUgYXQgaHR0cHM6Ly9hbmd1bGFyLmlvL2xpY2Vuc2UKICAgICAqLwpsZXQgUkg9MDtjb25zdCBUSD0yNTYsREg9bmV3IEZhKCJtYXQtc2VsZWN0LXNjcm9sbC1zdHJhdGVneSIpLElIPW5ldyBGYSgiTUFUX1NFTEVDVF9DT05GSUciKSxOSD17cHJvdmlkZTpESCxkZXBzOltoel0sdXNlRmFjdG9yeTpmdW5jdGlvbiBGSCh0KXtyZXR1cm4oKT0+dC5zY3JvbGxTdHJhdGVnaWVzLnJlcG9zaXRpb24oKX19O2NsYXNzIExIe2NvbnN0cnVjdG9yKHQsbil7dGhpcy5zb3VyY2U9dCx0aGlzLnZhbHVlPW59fWNvbnN0IEhIPWFFKG9FKG5FKHJFKGNsYXNze2NvbnN0cnVjdG9yKHQsbixlLGEsbyl7dGhpcy5fZWxlbWVudFJlZj10LHRoaXMuX2RlZmF1bHRFcnJvclN0YXRlTWF0Y2hlcj1uLHRoaXMuX3BhcmVudEZvcm09ZSx0aGlzLl9wYXJlbnRGb3JtR3JvdXA9YSx0aGlzLm5nQ29udHJvbD1vfX0pKSkpLEJIPW5ldyBGYSgiTWF0U2VsZWN0VHJpZ2dlciIpO2NsYXNzIFZIe31WSC7JtWZhYz1mdW5jdGlvbiB0KG4pe3JldHVybiBuZXcobnx8VkgpfSxWSC7JtWRpcj12byh7dHlwZTpWSCxzZWxlY3RvcnM6W1sibWF0LXNlbGVjdC10cmlnZ2VyIl1dLGZlYXR1cmVzOltNdShbe3Byb3ZpZGU6QkgsdXNlRXhpc3Rpbmc6Vkh9XSldfSk7Y2xhc3MgakggZXh0ZW5kcyBISHtjb25zdHJ1Y3Rvcih0LG4sZSxhLG8scixpLGMscyxsLG0sZCxnLHApe3N1cGVyKG8sYSxpLGMsbCksdGhpcy5fdmlld3BvcnRSdWxlcj10LHRoaXMuX2NoYW5nZURldGVjdG9yUmVmPW4sdGhpcy5fbmdab25lPWUsdGhpcy5fZGlyPXIsdGhpcy5fcGFyZW50Rm9ybUZpZWxkPXMsdGhpcy5uZ0NvbnRyb2w9bCx0aGlzLl9saXZlQW5ub3VuY2VyPWcsdGhpcy5fcGFuZWxPcGVuPSExLHRoaXMuX3JlcXVpcmVkPSExLHRoaXMuX3Njcm9sbFRvcD0wLHRoaXMuX211bHRpcGxlPSExLHRoaXMuX2NvbXBhcmVXaXRoPSh0LG4pPT50PT09bix0aGlzLl91aWQ9Im1hdC1zZWxlY3QtIitSSCsrLHRoaXMuX3RyaWdnZXJBcmlhTGFiZWxsZWRCeT1udWxsLHRoaXMuX2Rlc3Ryb3k9bmV3IHgsdGhpcy5fdHJpZ2dlckZvbnRTaXplPTAsdGhpcy5fb25DaGFuZ2U9KCk9Pnt9LHRoaXMuX29uVG91Y2hlZD0oKT0+e30sdGhpcy5fdmFsdWVJZD0ibWF0LXNlbGVjdC12YWx1ZS0iK1JIKyssdGhpcy5fdHJhbnNmb3JtT3JpZ2luPSJ0b3AiLHRoaXMuX3BhbmVsRG9uZUFuaW1hdGluZ1N0cmVhbT1uZXcgeCx0aGlzLl9vZmZzZXRZPTAsdGhpcy5fcG9zaXRpb25zPVt7b3JpZ2luWDoic3RhcnQiLG9yaWdpblk6InRvcCIsb3ZlcmxheVg6InN0YXJ0IixvdmVybGF5WToidG9wIn0se29yaWdpblg6InN0YXJ0IixvcmlnaW5ZOiJib3R0b20iLG92ZXJsYXlYOiJzdGFydCIsb3ZlcmxheVk6ImJvdHRvbSJ9XSx0aGlzLl9kaXNhYmxlT3B0aW9uQ2VudGVyaW5nPSExLHRoaXMuX2ZvY3VzZWQ9ITEsdGhpcy5jb250cm9sVHlwZT0ibWF0LXNlbGVjdCIsdGhpcy5hcmlhTGFiZWw9IiIsdGhpcy5vcHRpb25TZWxlY3Rpb25DaGFuZ2VzPUx0KCgoKT0+e2NvbnN0IHQ9dGhpcy5vcHRpb25zO3JldHVybiB0P3QuY2hhbmdlcy5waXBlKGNlKHQpLHNlKCgoKT0+V3QoLi4udC5tYXAoKHQ9PnQub25TZWxlY3Rpb25DaGFuZ2UpKSkpKSk6dGhpcy5fbmdab25lLm9uU3RhYmxlLnBpcGUoVG4oMSksc2UoKCgpPT50aGlzLm9wdGlvblNlbGVjdGlvbkNoYW5nZXMpKSl9KSksdGhpcy5vcGVuZWRDaGFuZ2U9bmV3IEVmLHRoaXMuX29wZW5lZFN0cmVhbT10aGlzLm9wZW5lZENoYW5nZS5waXBlKEd0KCh0PT50KSksZnQoKCgpPT57fSkpKSx0aGlzLl9jbG9zZWRTdHJlYW09dGhpcy5vcGVuZWRDaGFuZ2UucGlwZShHdCgodD0+IXQpKSxmdCgoKCk9Pnt9KSkpLHRoaXMuc2VsZWN0aW9uQ2hhbmdlPW5ldyBFZix0aGlzLnZhbHVlQ2hhbmdlPW5ldyBFZix0aGlzLm5nQ29udHJvbCYmKHRoaXMubmdDb250cm9sLnZhbHVlQWNjZXNzb3I9dGhpcyksdGhpcy5fc2Nyb2xsU3RyYXRlZ3lGYWN0b3J5PWQsdGhpcy5fc2Nyb2xsU3RyYXRlZ3k9dGhpcy5fc2Nyb2xsU3RyYXRlZ3lGYWN0b3J5KCksdGhpcy50YWJJbmRleD1wYXJzZUludChtKXx8MCx0aGlzLmlkPXRoaXMuaWQscCYmKG51bGwhPXAuZGlzYWJsZU9wdGlvbkNlbnRlcmluZyYmKHRoaXMuZGlzYWJsZU9wdGlvbkNlbnRlcmluZz1wLmRpc2FibGVPcHRpb25DZW50ZXJpbmcpLG51bGwhPXAudHlwZWFoZWFkRGVib3VuY2VJbnRlcnZhbCYmKHRoaXMudHlwZWFoZWFkRGVib3VuY2VJbnRlcnZhbD1wLnR5cGVhaGVhZERlYm91bmNlSW50ZXJ2YWwpKX1nZXQgZm9jdXNlZCgpe3JldHVybiB0aGlzLl9mb2N1c2VkfHx0aGlzLl9wYW5lbE9wZW59Z2V0IHBsYWNlaG9sZGVyKCl7cmV0dXJuIHRoaXMuX3BsYWNlaG9sZGVyfXNldCBwbGFjZWhvbGRlcih0KXt0aGlzLl9wbGFjZWhvbGRlcj10LHRoaXMuc3RhdGVDaGFuZ2VzLm5leHQoKX1nZXQgcmVxdWlyZWQoKXtyZXR1cm4gdGhpcy5fcmVxdWlyZWR9c2V0IHJlcXVpcmVkKHQpe3RoaXMuX3JlcXVpcmVkPUd3KHQpLHRoaXMuc3RhdGVDaGFuZ2VzLm5leHQoKX1nZXQgbXVsdGlwbGUoKXtyZXR1cm4gdGhpcy5fbXVsdGlwbGV9c2V0IG11bHRpcGxlKHQpe2lmKHRoaXMuX3NlbGVjdGlvbk1vZGVsJiYoInVuZGVmaW5lZCI9PXR5cGVvZiBuZ0Rldk1vZGV8fG5nRGV2TW9kZSkpCi8qKgogICAgICogQGxpY2Vuc2UKICAgICAqIENvcHlyaWdodCBHb29nbGUgTExDIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCiAgICAgKgogICAgICogVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYW4gTUlULXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKICAgICAqIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUgYXQgaHR0cHM6Ly9hbmd1bGFyLmlvL2xpY2Vuc2UKICAgICAqLwp0aHJvdyhmdW5jdGlvbiBuKCl7cmV0dXJuIEVycm9yKCJDYW5ub3QgY2hhbmdlIGBtdWx0aXBsZWAgbW9kZSBvZiBzZWxlY3QgYWZ0ZXIgaW5pdGlhbGl6YXRpb24uIil9KSgpO3RoaXMuX211bHRpcGxlPUd3KHQpfWdldCBkaXNhYmxlT3B0aW9uQ2VudGVyaW5nKCl7cmV0dXJuIHRoaXMuX2Rpc2FibGVPcHRpb25DZW50ZXJpbmd9c2V0IGRpc2FibGVPcHRpb25DZW50ZXJpbmcodCl7dGhpcy5fZGlzYWJsZU9wdGlvbkNlbnRlcmluZz1Hdyh0KX1nZXQgY29tcGFyZVdpdGgoKXtyZXR1cm4gdGhpcy5fY29tcGFyZVdpdGh9c2V0IGNvbXBhcmVXaXRoKHQpe2lmKCJmdW5jdGlvbiIhPXR5cGVvZiB0JiYoInVuZGVmaW5lZCI9PXR5cGVvZiBuZ0Rldk1vZGV8fG5nRGV2TW9kZSkpdGhyb3coZnVuY3Rpb24gbigpe3JldHVybiBFcnJvcigiYGNvbXBhcmVXaXRoYCBtdXN0IGJlIGEgZnVuY3Rpb24uIil9KSgpO3RoaXMuX2NvbXBhcmVXaXRoPXQsdGhpcy5fc2VsZWN0aW9uTW9kZWwmJnRoaXMuX2luaXRpYWxpemVTZWxlY3Rpb24oKX1nZXQgdmFsdWUoKXtyZXR1cm4gdGhpcy5fdmFsdWV9c2V0IHZhbHVlKHQpe3QhPT10aGlzLl92YWx1ZSYmKHRoaXMub3B0aW9ucyYmdGhpcy5fc2V0U2VsZWN0aW9uQnlWYWx1ZSh0KSx0aGlzLl92YWx1ZT10KX1nZXQgdHlwZWFoZWFkRGVib3VuY2VJbnRlcnZhbCgpe3JldHVybiB0aGlzLl90eXBlYWhlYWREZWJvdW5jZUludGVydmFsfXNldCB0eXBlYWhlYWREZWJvdW5jZUludGVydmFsKHQpe3RoaXMuX3R5cGVhaGVhZERlYm91bmNlSW50ZXJ2YWw9WXcodCl9Z2V0IGlkKCl7cmV0dXJuIHRoaXMuX2lkfXNldCBpZCh0KXt0aGlzLl9pZD10fHx0aGlzLl91aWQsdGhpcy5zdGF0ZUNoYW5nZXMubmV4dCgpfW5nT25Jbml0KCl7dGhpcy5fc2VsZWN0aW9uTW9kZWw9bmV3IG1BKHRoaXMubXVsdGlwbGUpLHRoaXMuc3RhdGVDaGFuZ2VzLm5leHQoKSx0aGlzLl9wYW5lbERvbmVBbmltYXRpbmdTdHJlYW0ucGlwZSh2bigpLGRlKHRoaXMuX2Rlc3Ryb3kpKS5zdWJzY3JpYmUoKCgpPT57dGhpcy5wYW5lbE9wZW4/KHRoaXMuX3Njcm9sbFRvcD0wLHRoaXMub3BlbmVkQ2hhbmdlLmVtaXQoITApKToodGhpcy5vcGVuZWRDaGFuZ2UuZW1pdCghMSksdGhpcy5vdmVybGF5RGlyLm9mZnNldFg9MCx0aGlzLl9jaGFuZ2VEZXRlY3RvclJlZi5tYXJrRm9yQ2hlY2soKSl9KSksdGhpcy5fdmlld3BvcnRSdWxlci5jaGFuZ2UoKS5waXBlKGRlKHRoaXMuX2Rlc3Ryb3kpKS5zdWJzY3JpYmUoKCgpPT57dGhpcy5fcGFuZWxPcGVuJiYodGhpcy5fdHJpZ2dlclJlY3Q9dGhpcy50cmlnZ2VyLm5hdGl2ZUVsZW1lbnQuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCksdGhpcy5fY2hhbmdlRGV0ZWN0b3JSZWYubWFya0ZvckNoZWNrKCkpfSkpfW5nQWZ0ZXJDb250ZW50SW5pdCgpe3RoaXMuX2luaXRLZXlNYW5hZ2VyKCksdGhpcy5fc2VsZWN0aW9uTW9kZWwuY2hhbmdlZC5waXBlKGRlKHRoaXMuX2Rlc3Ryb3kpKS5zdWJzY3JpYmUoKHQ9Pnt0LmFkZGVkLmZvckVhY2goKHQ9PnQuc2VsZWN0KCkpKSx0LnJlbW92ZWQuZm9yRWFjaCgodD0+dC5kZXNlbGVjdCgpKSl9KSksdGhpcy5vcHRpb25zLmNoYW5nZXMucGlwZShjZShudWxsKSxkZSh0aGlzLl9kZXN0cm95KSkuc3Vic2NyaWJlKCgoKT0+e3RoaXMuX3Jlc2V0T3B0aW9ucygpLHRoaXMuX2luaXRpYWxpemVTZWxlY3Rpb24oKX0pKX1uZ0RvQ2hlY2soKXtjb25zdCB0PXRoaXMuX2dldFRyaWdnZXJBcmlhTGFiZWxsZWRieSgpO2lmKHQhPT10aGlzLl90cmlnZ2VyQXJpYUxhYmVsbGVkQnkpe2NvbnN0IG49dGhpcy5fZWxlbWVudFJlZi5uYXRpdmVFbGVtZW50O3RoaXMuX3RyaWdnZXJBcmlhTGFiZWxsZWRCeT10LHQ/bi5zZXRBdHRyaWJ1dGUoImFyaWEtbGFiZWxsZWRieSIsdCk6bi5yZW1vdmVBdHRyaWJ1dGUoImFyaWEtbGFiZWxsZWRieSIpfXRoaXMubmdDb250cm9sJiZ0aGlzLnVwZGF0ZUVycm9yU3RhdGUoKX1uZ09uQ2hhbmdlcyh0KXt0LmRpc2FibGVkJiZ0aGlzLnN0YXRlQ2hhbmdlcy5uZXh0KCksdC50eXBlYWhlYWREZWJvdW5jZUludGVydmFsJiZ0aGlzLl9rZXlNYW5hZ2VyJiZ0aGlzLl9rZXlNYW5hZ2VyLndpdGhUeXBlQWhlYWQodGhpcy5fdHlwZWFoZWFkRGVib3VuY2VJbnRlcnZhbCl9bmdPbkRlc3Ryb3koKXt0aGlzLl9kZXN0cm95Lm5leHQoKSx0aGlzLl9kZXN0cm95LmNvbXBsZXRlKCksdGhpcy5zdGF0ZUNoYW5nZXMuY29tcGxldGUoKX10b2dnbGUoKXt0aGlzLnBhbmVsT3Blbj90aGlzLmNsb3NlKCk6dGhpcy5vcGVuKCl9b3BlbigpeyF0aGlzLmRpc2FibGVkJiZ0aGlzLm9wdGlvbnMmJnRoaXMub3B0aW9ucy5sZW5ndGgmJiF0aGlzLl9wYW5lbE9wZW4mJih0aGlzLl90cmlnZ2VyUmVjdD10aGlzLnRyaWdnZXIubmF0aXZlRWxlbWVudC5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKSx0aGlzLl90cmlnZ2VyRm9udFNpemU9cGFyc2VJbnQoZ2V0Q29tcHV0ZWRTdHlsZSh0aGlzLnRyaWdnZXIubmF0aXZlRWxlbWVudCkuZm9udFNpemV8fCIwIiksdGhpcy5fcGFuZWxPcGVuPSEwLHRoaXMuX2tleU1hbmFnZXIud2l0aEhvcml6b250YWxPcmllbnRhdGlvbihudWxsKSx0aGlzLl9jYWxjdWxhdGVPdmVybGF5UG9zaXRpb24oKSx0aGlzLl9oaWdobGlnaHRDb3JyZWN0T3B0aW9uKCksdGhpcy5fY2hhbmdlRGV0ZWN0b3JSZWYubWFya0ZvckNoZWNrKCksdGhpcy5fbmdab25lLm9uU3RhYmxlLnBpcGUoVG4oMSkpLnN1YnNjcmliZSgoKCk9Pnt0aGlzLl90cmlnZ2VyRm9udFNpemUmJnRoaXMub3ZlcmxheURpci5vdmVybGF5UmVmJiZ0aGlzLm92ZXJsYXlEaXIub3ZlcmxheVJlZi5vdmVybGF5RWxlbWVudCYmKHRoaXMub3ZlcmxheURpci5vdmVybGF5UmVmLm92ZXJsYXlFbGVtZW50LnN0eWxlLmZvbnRTaXplPWAke3RoaXMuX3RyaWdnZXJGb250U2l6ZX1weGApfSkpKX1jbG9zZSgpe3RoaXMuX3BhbmVsT3BlbiYmKHRoaXMuX3BhbmVsT3Blbj0hMSx0aGlzLl9rZXlNYW5hZ2VyLndpdGhIb3Jpem9udGFsT3JpZW50YXRpb24odGhpcy5faXNSdGwoKT8icnRsIjoibHRyIiksdGhpcy5fY2hhbmdlRGV0ZWN0b3JSZWYubWFya0ZvckNoZWNrKCksdGhpcy5fb25Ub3VjaGVkKCkpfXdyaXRlVmFsdWUodCl7dGhpcy52YWx1ZT10fXJlZ2lzdGVyT25DaGFuZ2UodCl7dGhpcy5fb25DaGFuZ2U9dH1yZWdpc3Rlck9uVG91Y2hlZCh0KXt0aGlzLl9vblRvdWNoZWQ9dH1zZXREaXNhYmxlZFN0YXRlKHQpe3RoaXMuZGlzYWJsZWQ9dCx0aGlzLl9jaGFuZ2VEZXRlY3RvclJlZi5tYXJrRm9yQ2hlY2soKSx0aGlzLnN0YXRlQ2hhbmdlcy5uZXh0KCl9Z2V0IHBhbmVsT3Blbigpe3JldHVybiB0aGlzLl9wYW5lbE9wZW59Z2V0IHNlbGVjdGVkKCl7cmV0dXJuIHRoaXMubXVsdGlwbGU/dGhpcy5fc2VsZWN0aW9uTW9kZWwuc2VsZWN0ZWQ6dGhpcy5fc2VsZWN0aW9uTW9kZWwuc2VsZWN0ZWRbMF19Z2V0IHRyaWdnZXJWYWx1ZSgpe2lmKHRoaXMuZW1wdHkpcmV0dXJuIiI7aWYodGhpcy5fbXVsdGlwbGUpe2NvbnN0IHQ9dGhpcy5fc2VsZWN0aW9uTW9kZWwuc2VsZWN0ZWQubWFwKCh0PT50LnZpZXdWYWx1ZSkpO3JldHVybiB0aGlzLl9pc1J0bCgpJiZ0LnJldmVyc2UoKSx0LmpvaW4oIiwgIil9cmV0dXJuIHRoaXMuX3NlbGVjdGlvbk1vZGVsLnNlbGVjdGVkWzBdLnZpZXdWYWx1ZX1faXNSdGwoKXtyZXR1cm4hIXRoaXMuX2RpciYmInJ0bCI9PT10aGlzLl9kaXIudmFsdWV9X2hhbmRsZUtleWRvd24odCl7dGhpcy5kaXNhYmxlZHx8KHRoaXMucGFuZWxPcGVuP3RoaXMuX2hhbmRsZU9wZW5LZXlkb3duKHQpOnRoaXMuX2hhbmRsZUNsb3NlZEtleWRvd24odCkpfV9oYW5kbGVDbG9zZWRLZXlkb3duKHQpe2NvbnN0IG49dC5rZXlDb2RlLGU9bj09PVV3fHxuPT09and8fDM3PT09bnx8Mzk9PT1uLGE9bj09PUh3fHxuPT09Vncsbz10aGlzLl9rZXlNYW5hZ2VyO2lmKCFvLmlzVHlwaW5nKCkmJmEmJiFXdyh0KXx8KHRoaXMubXVsdGlwbGV8fHQuYWx0S2V5KSYmZSl0LnByZXZlbnREZWZhdWx0KCksdGhpcy5vcGVuKCk7ZWxzZSBpZighdGhpcy5tdWx0aXBsZSl7Y29uc3Qgbj10aGlzLnNlbGVjdGVkO28ub25LZXlkb3duKHQpO2NvbnN0IGU9dGhpcy5zZWxlY3RlZDtlJiZuIT09ZSYmdGhpcy5fbGl2ZUFubm91bmNlci5hbm5vdW5jZShlLnZpZXdWYWx1ZSwxZTQpfX1faGFuZGxlT3BlbktleWRvd24odCl7Y29uc3Qgbj10aGlzLl9rZXlNYW5hZ2VyLGU9dC5rZXlDb2RlLGE9ZT09PVV3fHxlPT09ancsbz1uLmlzVHlwaW5nKCk7aWYoYSYmdC5hbHRLZXkpdC5wcmV2ZW50RGVmYXVsdCgpLHRoaXMuY2xvc2UoKTtlbHNlIGlmKG98fGUhPT1IdyYmZSE9PVZ3fHwhbi5hY3RpdmVJdGVtfHxXdyh0KSlpZighbyYmdGhpcy5fbXVsdGlwbGUmJjY1PT09ZSYmdC5jdHJsS2V5KXt0LnByZXZlbnREZWZhdWx0KCk7Y29uc3Qgbj10aGlzLm9wdGlvbnMuc29tZSgodD0+IXQuZGlzYWJsZWQmJiF0LnNlbGVjdGVkKSk7dGhpcy5vcHRpb25zLmZvckVhY2goKHQ9Pnt0LmRpc2FibGVkfHwobj90LnNlbGVjdCgpOnQuZGVzZWxlY3QoKSl9KSl9ZWxzZXtjb25zdCBlPW4uYWN0aXZlSXRlbUluZGV4O24ub25LZXlkb3duKHQpLHRoaXMuX211bHRpcGxlJiZhJiZ0LnNoaWZ0S2V5JiZuLmFjdGl2ZUl0ZW0mJm4uYWN0aXZlSXRlbUluZGV4IT09ZSYmbi5hY3RpdmVJdGVtLl9zZWxlY3RWaWFJbnRlcmFjdGlvbigpfWVsc2UgdC5wcmV2ZW50RGVmYXVsdCgpLG4uYWN0aXZlSXRlbS5fc2VsZWN0VmlhSW50ZXJhY3Rpb24oKX1fb25Gb2N1cygpe3RoaXMuZGlzYWJsZWR8fCh0aGlzLl9mb2N1c2VkPSEwLHRoaXMuc3RhdGVDaGFuZ2VzLm5leHQoKSl9X29uQmx1cigpe3RoaXMuX2ZvY3VzZWQ9ITEsdGhpcy5kaXNhYmxlZHx8dGhpcy5wYW5lbE9wZW58fCh0aGlzLl9vblRvdWNoZWQoKSx0aGlzLl9jaGFuZ2VEZXRlY3RvclJlZi5tYXJrRm9yQ2hlY2soKSx0aGlzLnN0YXRlQ2hhbmdlcy5uZXh0KCkpfV9vbkF0dGFjaGVkKCl7dGhpcy5vdmVybGF5RGlyLnBvc2l0aW9uQ2hhbmdlLnBpcGUoVG4oMSkpLnN1YnNjcmliZSgoKCk9Pnt0aGlzLl9jaGFuZ2VEZXRlY3RvclJlZi5kZXRlY3RDaGFuZ2VzKCksdGhpcy5fY2FsY3VsYXRlT3ZlcmxheU9mZnNldFgoKSx0aGlzLnBhbmVsLm5hdGl2ZUVsZW1lbnQuc2Nyb2xsVG9wPXRoaXMuX3Njcm9sbFRvcH0pKX1fZ2V0UGFuZWxUaGVtZSgpe3JldHVybiB0aGlzLl9wYXJlbnRGb3JtRmllbGQ/YG1hdC0ke3RoaXMuX3BhcmVudEZvcm1GaWVsZC5jb2xvcn1gOiIifWdldCBlbXB0eSgpe3JldHVybiF0aGlzLl9zZWxlY3Rpb25Nb2RlbHx8dGhpcy5fc2VsZWN0aW9uTW9kZWwuaXNFbXB0eSgpfV9pbml0aWFsaXplU2VsZWN0aW9uKCl7UHJvbWlzZS5yZXNvbHZlKCkudGhlbigoKCk9Pnt0aGlzLl9zZXRTZWxlY3Rpb25CeVZhbHVlKHRoaXMubmdDb250cm9sP3RoaXMubmdDb250cm9sLnZhbHVlOnRoaXMuX3ZhbHVlKSx0aGlzLnN0YXRlQ2hhbmdlcy5uZXh0KCl9KSl9X3NldFNlbGVjdGlvbkJ5VmFsdWUodCl7aWYodGhpcy5tdWx0aXBsZSYmdCl7aWYoIUFycmF5LmlzQXJyYXkodCkmJigidW5kZWZpbmVkIj09dHlwZW9mIG5nRGV2TW9kZXx8bmdEZXZNb2RlKSl0aHJvdyhmdW5jdGlvbiBuKCl7cmV0dXJuIEVycm9yKCJWYWx1ZSBtdXN0IGJlIGFuIGFycmF5IGluIG11bHRpcGxlLXNlbGVjdGlvbiBtb2RlLiIpfSkoKTt0aGlzLl9zZWxlY3Rpb25Nb2RlbC5jbGVhcigpLHQuZm9yRWFjaCgodD0+dGhpcy5fc2VsZWN0VmFsdWUodCkpKSx0aGlzLl9zb3J0VmFsdWVzKCl9ZWxzZXt0aGlzLl9zZWxlY3Rpb25Nb2RlbC5jbGVhcigpO2NvbnN0IG49dGhpcy5fc2VsZWN0VmFsdWUodCk7bj90aGlzLl9rZXlNYW5hZ2VyLnVwZGF0ZUFjdGl2ZUl0ZW0obik6dGhpcy5wYW5lbE9wZW58fHRoaXMuX2tleU1hbmFnZXIudXBkYXRlQWN0aXZlSXRlbSgtMSl9dGhpcy5fY2hhbmdlRGV0ZWN0b3JSZWYubWFya0ZvckNoZWNrKCl9X3NlbGVjdFZhbHVlKHQpe2NvbnN0IG49dGhpcy5vcHRpb25zLmZpbmQoKG49Pnt0cnl7cmV0dXJuIG51bGwhPW4udmFsdWUmJnRoaXMuX2NvbXBhcmVXaXRoKG4udmFsdWUsdCl9Y2F0Y2godCl7cmV0dXJuKCJ1bmRlZmluZWQiPT10eXBlb2YgbmdEZXZNb2RlfHxuZ0Rldk1vZGUpJiZjb25zb2xlLndhcm4odCksITF9fSkpO3JldHVybiBuJiZ0aGlzLl9zZWxlY3Rpb25Nb2RlbC5zZWxlY3Qobiksbn1faW5pdEtleU1hbmFnZXIoKXt0aGlzLl9rZXlNYW5hZ2VyPW5ldyBsUyh0aGlzLm9wdGlvbnMpLndpdGhUeXBlQWhlYWQodGhpcy5fdHlwZWFoZWFkRGVib3VuY2VJbnRlcnZhbCkud2l0aFZlcnRpY2FsT3JpZW50YXRpb24oKS53aXRoSG9yaXpvbnRhbE9yaWVudGF0aW9uKHRoaXMuX2lzUnRsKCk/InJ0bCI6Imx0ciIpLndpdGhIb21lQW5kRW5kKCkud2l0aEFsbG93ZWRNb2RpZmllcktleXMoWyJzaGlmdEtleSJdKSx0aGlzLl9rZXlNYW5hZ2VyLnRhYk91dC5waXBlKGRlKHRoaXMuX2Rlc3Ryb3kpKS5zdWJzY3JpYmUoKCgpPT57dGhpcy5wYW5lbE9wZW4mJighdGhpcy5tdWx0aXBsZSYmdGhpcy5fa2V5TWFuYWdlci5hY3RpdmVJdGVtJiZ0aGlzLl9rZXlNYW5hZ2VyLmFjdGl2ZUl0ZW0uX3NlbGVjdFZpYUludGVyYWN0aW9uKCksdGhpcy5mb2N1cygpLHRoaXMuY2xvc2UoKSl9KSksdGhpcy5fa2V5TWFuYWdlci5jaGFuZ2UucGlwZShkZSh0aGlzLl9kZXN0cm95KSkuc3Vic2NyaWJlKCgoKT0+e3RoaXMuX3BhbmVsT3BlbiYmdGhpcy5wYW5lbD90aGlzLl9zY3JvbGxBY3RpdmVPcHRpb25JbnRvVmlldygpOnRoaXMuX3BhbmVsT3Blbnx8dGhpcy5tdWx0aXBsZXx8IXRoaXMuX2tleU1hbmFnZXIuYWN0aXZlSXRlbXx8dGhpcy5fa2V5TWFuYWdlci5hY3RpdmVJdGVtLl9zZWxlY3RWaWFJbnRlcmFjdGlvbigpfSkpfV9yZXNldE9wdGlvbnMoKXtjb25zdCB0PVd0KHRoaXMub3B0aW9ucy5jaGFuZ2VzLHRoaXMuX2Rlc3Ryb3kpO3RoaXMub3B0aW9uU2VsZWN0aW9uQ2hhbmdlcy5waXBlKGRlKHQpKS5zdWJzY3JpYmUoKHQ9Pnt0aGlzLl9vblNlbGVjdCh0LnNvdXJjZSx0LmlzVXNlcklucHV0KSx0LmlzVXNlcklucHV0JiYhdGhpcy5tdWx0aXBsZSYmdGhpcy5fcGFuZWxPcGVuJiYodGhpcy5jbG9zZSgpLHRoaXMuZm9jdXMoKSl9KSksV3QoLi4udGhpcy5vcHRpb25zLm1hcCgodD0+dC5fc3RhdGVDaGFuZ2VzKSkpLnBpcGUoZGUodCkpLnN1YnNjcmliZSgoKCk9Pnt0aGlzLl9jaGFuZ2VEZXRlY3RvclJlZi5tYXJrRm9yQ2hlY2soKSx0aGlzLnN0YXRlQ2hhbmdlcy5uZXh0KCl9KSl9X29uU2VsZWN0KHQsbil7Y29uc3QgZT10aGlzLl9zZWxlY3Rpb25Nb2RlbC5pc1NlbGVjdGVkKHQpO251bGwhPXQudmFsdWV8fHRoaXMuX211bHRpcGxlPyhlIT09dC5zZWxlY3RlZCYmKHQuc2VsZWN0ZWQ/dGhpcy5fc2VsZWN0aW9uTW9kZWwuc2VsZWN0KHQpOnRoaXMuX3NlbGVjdGlvbk1vZGVsLmRlc2VsZWN0KHQpKSxuJiZ0aGlzLl9rZXlNYW5hZ2VyLnNldEFjdGl2ZUl0ZW0odCksdGhpcy5tdWx0aXBsZSYmKHRoaXMuX3NvcnRWYWx1ZXMoKSxuJiZ0aGlzLmZvY3VzKCkpKToodC5kZXNlbGVjdCgpLHRoaXMuX3NlbGVjdGlvbk1vZGVsLmNsZWFyKCksbnVsbCE9dGhpcy52YWx1ZSYmdGhpcy5fcHJvcGFnYXRlQ2hhbmdlcyh0LnZhbHVlKSksZSE9PXRoaXMuX3NlbGVjdGlvbk1vZGVsLmlzU2VsZWN0ZWQodCkmJnRoaXMuX3Byb3BhZ2F0ZUNoYW5nZXMoKSx0aGlzLnN0YXRlQ2hhbmdlcy5uZXh0KCl9X3NvcnRWYWx1ZXMoKXtpZih0aGlzLm11bHRpcGxlKXtjb25zdCB0PXRoaXMub3B0aW9ucy50b0FycmF5KCk7dGhpcy5fc2VsZWN0aW9uTW9kZWwuc29ydCgoKG4sZSk9PnRoaXMuc29ydENvbXBhcmF0b3I/dGhpcy5zb3J0Q29tcGFyYXRvcihuLGUsdCk6dC5pbmRleE9mKG4pLXQuaW5kZXhPZihlKSkpLHRoaXMuc3RhdGVDaGFuZ2VzLm5leHQoKX19X3Byb3BhZ2F0ZUNoYW5nZXModCl7bGV0IG49bnVsbDtuPXRoaXMubXVsdGlwbGU/dGhpcy5zZWxlY3RlZC5tYXAoKHQ9PnQudmFsdWUpKTp0aGlzLnNlbGVjdGVkP3RoaXMuc2VsZWN0ZWQudmFsdWU6dCx0aGlzLl92YWx1ZT1uLHRoaXMudmFsdWVDaGFuZ2UuZW1pdChuKSx0aGlzLl9vbkNoYW5nZShuKSx0aGlzLnNlbGVjdGlvbkNoYW5nZS5lbWl0KG5ldyBMSCh0aGlzLG4pKSx0aGlzLl9jaGFuZ2VEZXRlY3RvclJlZi5tYXJrRm9yQ2hlY2soKX1faGlnaGxpZ2h0Q29ycmVjdE9wdGlvbigpe3RoaXMuX2tleU1hbmFnZXImJih0aGlzLmVtcHR5P3RoaXMuX2tleU1hbmFnZXIuc2V0Rmlyc3RJdGVtQWN0aXZlKCk6dGhpcy5fa2V5TWFuYWdlci5zZXRBY3RpdmVJdGVtKHRoaXMuX3NlbGVjdGlvbk1vZGVsLnNlbGVjdGVkWzBdKSl9X3Njcm9sbEFjdGl2ZU9wdGlvbkludG9WaWV3KCl7Y29uc3QgdD10aGlzLl9rZXlNYW5hZ2VyLmFjdGl2ZUl0ZW1JbmRleHx8MCxuPXFFKHQsdGhpcy5vcHRpb25zLHRoaXMub3B0aW9uR3JvdXBzKSxlPXRoaXMuX2dldEl0ZW1IZWlnaHQoKTt0aGlzLnBhbmVsLm5hdGl2ZUVsZW1lbnQuc2Nyb2xsVG9wPVpFKCh0K24pKmUsZSx0aGlzLnBhbmVsLm5hdGl2ZUVsZW1lbnQuc2Nyb2xsVG9wLFRIKX1mb2N1cyh0KXt0aGlzLl9lbGVtZW50UmVmLm5hdGl2ZUVsZW1lbnQuZm9jdXModCl9X2dldE9wdGlvbkluZGV4KHQpe3JldHVybiB0aGlzLm9wdGlvbnMucmVkdWNlKCgobixlLGEpPT52b2lkIDAhPT1uP246dD09PWU/YTp2b2lkIDApLHZvaWQgMCl9X2NhbGN1bGF0ZU92ZXJsYXlQb3NpdGlvbigpe2NvbnN0IHQ9dGhpcy5fZ2V0SXRlbUhlaWdodCgpLG49dGhpcy5fZ2V0SXRlbUNvdW50KCksZT1NYXRoLm1pbihuKnQsVEgpLGE9bip0LWU7bGV0IG89dGhpcy5lbXB0eT8wOnRoaXMuX2dldE9wdGlvbkluZGV4KHRoaXMuX3NlbGVjdGlvbk1vZGVsLnNlbGVjdGVkWzBdKTtvKz1xRShvLHRoaXMub3B0aW9ucyx0aGlzLm9wdGlvbkdyb3Vwcyk7Y29uc3Qgcj1lLzI7dGhpcy5fc2Nyb2xsVG9wPXRoaXMuX2NhbGN1bGF0ZU92ZXJsYXlTY3JvbGwobyxyLGEpLHRoaXMuX29mZnNldFk9dGhpcy5fY2FsY3VsYXRlT3ZlcmxheU9mZnNldFkobyxyLGEpLHRoaXMuX2NoZWNrT3ZlcmxheVdpdGhpblZpZXdwb3J0KGEpfV9jYWxjdWxhdGVPdmVybGF5U2Nyb2xsKHQsbixlKXtjb25zdCBhPXRoaXMuX2dldEl0ZW1IZWlnaHQoKTtyZXR1cm4gTWF0aC5taW4oTWF0aC5tYXgoMCxhKnQtbithLzIpLGUpfV9nZXRQYW5lbEFyaWFMYWJlbGxlZGJ5KCl7aWYodGhpcy5hcmlhTGFiZWwpcmV0dXJuIG51bGw7Y29uc3QgdD10aGlzLl9nZXRMYWJlbElkKCk7cmV0dXJuIHRoaXMuYXJpYUxhYmVsbGVkYnk/dCsiICIrdGhpcy5hcmlhTGFiZWxsZWRieTp0fV9nZXRBcmlhQWN0aXZlRGVzY2VuZGFudCgpe3JldHVybiB0aGlzLnBhbmVsT3BlbiYmdGhpcy5fa2V5TWFuYWdlciYmdGhpcy5fa2V5TWFuYWdlci5hY3RpdmVJdGVtP3RoaXMuX2tleU1hbmFnZXIuYWN0aXZlSXRlbS5pZDpudWxsfV9nZXRMYWJlbElkKCl7dmFyIHQ7cmV0dXJuKG51bGw9PT0odD10aGlzLl9wYXJlbnRGb3JtRmllbGQpfHx2b2lkIDA9PT10P3ZvaWQgMDp0LmdldExhYmVsSWQoKSl8fCIifV9jYWxjdWxhdGVPdmVybGF5T2Zmc2V0WCgpe2NvbnN0IHQ9dGhpcy5vdmVybGF5RGlyLm92ZXJsYXlSZWYub3ZlcmxheUVsZW1lbnQuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCksbj10aGlzLl92aWV3cG9ydFJ1bGVyLmdldFZpZXdwb3J0U2l6ZSgpLGU9dGhpcy5faXNSdGwoKSxhPXRoaXMubXVsdGlwbGU/NTY6MzI7bGV0IG87aWYodGhpcy5tdWx0aXBsZSlvPTQwO2Vsc2V7bGV0IHQ9dGhpcy5fc2VsZWN0aW9uTW9kZWwuc2VsZWN0ZWRbMF18fHRoaXMub3B0aW9ucy5maXJzdDtvPXQmJnQuZ3JvdXA/MzI6MTZ9ZXx8KG8qPS0xKTtjb25zdCByPTAtKHQubGVmdCtvLShlP2E6MCkpLGk9dC5yaWdodCtvLW4ud2lkdGgrKGU/MDphKTtyPjA/bys9cis4Omk+MCYmKG8tPWkrOCksdGhpcy5vdmVybGF5RGlyLm9mZnNldFg9TWF0aC5yb3VuZChvKSx0aGlzLm92ZXJsYXlEaXIub3ZlcmxheVJlZi51cGRhdGVQb3NpdGlvbigpfV9jYWxjdWxhdGVPdmVybGF5T2Zmc2V0WSh0LG4sZSl7Y29uc3QgYT10aGlzLl9nZXRJdGVtSGVpZ2h0KCksbz0oYS10aGlzLl90cmlnZ2VyUmVjdC5oZWlnaHQpLzIscj1NYXRoLmZsb29yKFRIL2EpO2xldCBpO3JldHVybiB0aGlzLl9kaXNhYmxlT3B0aW9uQ2VudGVyaW5nPzA6KGk9MD09PXRoaXMuX3Njcm9sbFRvcD90KmE6dGhpcy5fc2Nyb2xsVG9wPT09ZT8odC0odGhpcy5fZ2V0SXRlbUNvdW50KCktcikpKmErKGEtKHRoaXMuX2dldEl0ZW1Db3VudCgpKmEtVEgpJWEpOm4tYS8yLE1hdGgucm91bmQoLTEqaS1vKSl9X2NoZWNrT3ZlcmxheVdpdGhpblZpZXdwb3J0KHQpe2NvbnN0IG49dGhpcy5fZ2V0SXRlbUhlaWdodCgpLGU9dGhpcy5fdmlld3BvcnRSdWxlci5nZXRWaWV3cG9ydFNpemUoKSxhPXRoaXMuX3RyaWdnZXJSZWN0LnRvcC04LG89ZS5oZWlnaHQtdGhpcy5fdHJpZ2dlclJlY3QuYm90dG9tLTgscj1NYXRoLmFicyh0aGlzLl9vZmZzZXRZKSxpPU1hdGgubWluKHRoaXMuX2dldEl0ZW1Db3VudCgpKm4sVEgpLXItdGhpcy5fdHJpZ2dlclJlY3QuaGVpZ2h0O2k+bz90aGlzLl9hZGp1c3RQYW5lbFVwKGksbyk6cj5hP3RoaXMuX2FkanVzdFBhbmVsRG93bihyLGEsdCk6dGhpcy5fdHJhbnNmb3JtT3JpZ2luPXRoaXMuX2dldE9yaWdpbkJhc2VkT25PcHRpb24oKX1fYWRqdXN0UGFuZWxVcCh0LG4pe2NvbnN0IGU9TWF0aC5yb3VuZCh0LW4pO3RoaXMuX3Njcm9sbFRvcC09ZSx0aGlzLl9vZmZzZXRZLT1lLHRoaXMuX3RyYW5zZm9ybU9yaWdpbj10aGlzLl9nZXRPcmlnaW5CYXNlZE9uT3B0aW9uKCksdGhpcy5fc2Nyb2xsVG9wPD0wJiYodGhpcy5fc2Nyb2xsVG9wPTAsdGhpcy5fb2Zmc2V0WT0wLHRoaXMuX3RyYW5zZm9ybU9yaWdpbj0iNTAlIGJvdHRvbSAwcHgiKX1fYWRqdXN0UGFuZWxEb3duKHQsbixlKXtjb25zdCBhPU1hdGgucm91bmQodC1uKTtpZih0aGlzLl9zY3JvbGxUb3ArPWEsdGhpcy5fb2Zmc2V0WSs9YSx0aGlzLl90cmFuc2Zvcm1PcmlnaW49dGhpcy5fZ2V0T3JpZ2luQmFzZWRPbk9wdGlvbigpLHRoaXMuX3Njcm9sbFRvcD49ZSlyZXR1cm4gdGhpcy5fc2Nyb2xsVG9wPWUsdGhpcy5fb2Zmc2V0WT0wLHZvaWQodGhpcy5fdHJhbnNmb3JtT3JpZ2luPSI1MCUgdG9wIDBweCIpfV9nZXRPcmlnaW5CYXNlZE9uT3B0aW9uKCl7Y29uc3QgdD10aGlzLl9nZXRJdGVtSGVpZ2h0KCksbj0odC10aGlzLl90cmlnZ2VyUmVjdC5oZWlnaHQpLzI7cmV0dXJuYDUwJSAke01hdGguYWJzKHRoaXMuX29mZnNldFkpLW4rdC8yfXB4IDBweGB9X2dldEl0ZW1Db3VudCgpe3JldHVybiB0aGlzLm9wdGlvbnMubGVuZ3RoK3RoaXMub3B0aW9uR3JvdXBzLmxlbmd0aH1fZ2V0SXRlbUhlaWdodCgpe3JldHVybiAzKnRoaXMuX3RyaWdnZXJGb250U2l6ZX1fZ2V0VHJpZ2dlckFyaWFMYWJlbGxlZGJ5KCl7aWYodGhpcy5hcmlhTGFiZWwpcmV0dXJuIG51bGw7bGV0IHQ9dGhpcy5fZ2V0TGFiZWxJZCgpKyIgIit0aGlzLl92YWx1ZUlkO3JldHVybiB0aGlzLmFyaWFMYWJlbGxlZGJ5JiYodCs9IiAiK3RoaXMuYXJpYUxhYmVsbGVkYnkpLHR9c2V0RGVzY3JpYmVkQnlJZHModCl7dGhpcy5fYXJpYURlc2NyaWJlZGJ5PXQuam9pbigiICIpfW9uQ29udGFpbmVyQ2xpY2soKXt0aGlzLmZvY3VzKCksdGhpcy5vcGVuKCl9Z2V0IHNob3VsZExhYmVsRmxvYXQoKXtyZXR1cm4gdGhpcy5fcGFuZWxPcGVufHwhdGhpcy5lbXB0eX19akguybVmYWM9ZnVuY3Rpb24gdChuKXtyZXR1cm4gbmV3KG58fGpIKShaZyhNQSksWmcoVm0pLFpnKEpfKSxaZyhPRSksWmcoeHUpLFpnKFVTLDgpLFpnKExMLDgpLFpnKEtMLDgpLFpnKGhGLDgpLFpnKEFGLDEwKSxYZygidGFiaW5kZXgiKSxaZyhESCksWmcoU1MpLFpnKElILDgpKX0sakguybVjbXA9X28oe3R5cGU6akgsc2VsZWN0b3JzOltbIm1hdC1zZWxlY3QiXV0sY29udGVudFF1ZXJpZXM6ZnVuY3Rpb24gdChuLGUsYSl7dmFyIG87MSZuJiYoR2YoYSxCSCwhMCksR2YoYSxZRSwhMCksR2YoYSxIRSwhMCkpLDImbiYmKFZmKG89WmYoKSkmJihlLmN1c3RvbVRyaWdnZXI9by5maXJzdCksVmYobz1aZigpKSYmKGUub3B0aW9ucz1vKSxWZihvPVpmKCkpJiYoZS5vcHRpb25Hcm91cHM9bykpfSx2aWV3UXVlcnk6ZnVuY3Rpb24gdChuLGUpe3ZhciBhOzEmbiYmKFVmKHhILCEwKSxVZih5SCwhMCksVWYoT3osITApKSwyJm4mJihWZihhPVpmKCkpJiYoZS50cmlnZ2VyPWEuZmlyc3QpLFZmKGE9WmYoKSkmJihlLnBhbmVsPWEuZmlyc3QpLFZmKGE9WmYoKSkmJihlLm92ZXJsYXlEaXI9YS5maXJzdCkpfSxob3N0QXR0cnM6WyJyb2xlIiwiY29tYm9ib3giLCJhcmlhLWF1dG9jb21wbGV0ZSIsIm5vbmUiLCJhcmlhLWhhc3BvcHVwIiwidHJ1ZSIsMSwibWF0LXNlbGVjdCJdLGhvc3RWYXJzOjIwLGhvc3RCaW5kaW5nczpmdW5jdGlvbiB0KG4sZSl7MSZuJiZjcCgia2V5ZG93biIsKGZ1bmN0aW9uIHQobil7cmV0dXJuIGUuX2hhbmRsZUtleWRvd24obil9KSkoImZvY3VzIiwoZnVuY3Rpb24gdCgpe3JldHVybiBlLl9vbkZvY3VzKCl9KSkoImJsdXIiLChmdW5jdGlvbiB0KCl7cmV0dXJuIGUuX29uQmx1cigpfSkpLDImbiYmKE5nKCJpZCIsZS5pZCkoInRhYmluZGV4IixlLnRhYkluZGV4KSgiYXJpYS1jb250cm9scyIsZS5wYW5lbE9wZW4/ZS5pZCsiLXBhbmVsIjpudWxsKSgiYXJpYS1leHBhbmRlZCIsZS5wYW5lbE9wZW4pKCJhcmlhLWxhYmVsIixlLmFyaWFMYWJlbHx8bnVsbCkoImFyaWEtcmVxdWlyZWQiLGUucmVxdWlyZWQudG9TdHJpbmcoKSkoImFyaWEtZGlzYWJsZWQiLGUuZGlzYWJsZWQudG9TdHJpbmcoKSkoImFyaWEtaW52YWxpZCIsZS5lcnJvclN0YXRlKSgiYXJpYS1kZXNjcmliZWRieSIsZS5fYXJpYURlc2NyaWJlZGJ5fHxudWxsKSgiYXJpYS1hY3RpdmVkZXNjZW5kYW50IixlLl9nZXRBcmlhQWN0aXZlRGVzY2VuZGFudCgpKSxEcCgibWF0LXNlbGVjdC1kaXNhYmxlZCIsZS5kaXNhYmxlZCkoIm1hdC1zZWxlY3QtaW52YWxpZCIsZS5lcnJvclN0YXRlKSgibWF0LXNlbGVjdC1yZXF1aXJlZCIsZS5yZXF1aXJlZCkoIm1hdC1zZWxlY3QtZW1wdHkiLGUuZW1wdHkpKCJtYXQtc2VsZWN0LW11bHRpcGxlIixlLm11bHRpcGxlKSl9LGlucHV0czp7ZGlzYWJsZWQ6ImRpc2FibGVkIixkaXNhYmxlUmlwcGxlOiJkaXNhYmxlUmlwcGxlIix0YWJJbmRleDoidGFiSW5kZXgiLGFyaWFMYWJlbDpbImFyaWEtbGFiZWwiLCJhcmlhTGFiZWwiXSxpZDoiaWQiLGRpc2FibGVPcHRpb25DZW50ZXJpbmc6ImRpc2FibGVPcHRpb25DZW50ZXJpbmciLHR5cGVhaGVhZERlYm91bmNlSW50ZXJ2YWw6InR5cGVhaGVhZERlYm91bmNlSW50ZXJ2YWwiLHBsYWNlaG9sZGVyOiJwbGFjZWhvbGRlciIscmVxdWlyZWQ6InJlcXVpcmVkIixtdWx0aXBsZToibXVsdGlwbGUiLGNvbXBhcmVXaXRoOiJjb21wYXJlV2l0aCIsdmFsdWU6InZhbHVlIixwYW5lbENsYXNzOiJwYW5lbENsYXNzIixhcmlhTGFiZWxsZWRieTpbImFyaWEtbGFiZWxsZWRieSIsImFyaWFMYWJlbGxlZGJ5Il0sZXJyb3JTdGF0ZU1hdGNoZXI6ImVycm9yU3RhdGVNYXRjaGVyIixzb3J0Q29tcGFyYXRvcjoic29ydENvbXBhcmF0b3IifSxvdXRwdXRzOntvcGVuZWRDaGFuZ2U6Im9wZW5lZENoYW5nZSIsX29wZW5lZFN0cmVhbToib3BlbmVkIixfY2xvc2VkU3RyZWFtOiJjbG9zZWQiLHNlbGVjdGlvbkNoYW5nZToic2VsZWN0aW9uQ2hhbmdlIix2YWx1ZUNoYW5nZToidmFsdWVDaGFuZ2UifSxleHBvcnRBczpbIm1hdFNlbGVjdCJdLGZlYXR1cmVzOltNdShbe3Byb3ZpZGU6YUYsdXNlRXhpc3Rpbmc6akh9LHtwcm92aWRlOldFLHVzZUV4aXN0aW5nOmpIfV0pLGhnLHByXSxuZ0NvbnRlbnRTZWxlY3RvcnM6WyJtYXQtc2VsZWN0LXRyaWdnZXIiLCIqIl0sZGVjbHM6OSx2YXJzOjEwLGNvbnN0czpbWyJjZGstb3ZlcmxheS1vcmlnaW4iLCIiLDEsIm1hdC1zZWxlY3QtdHJpZ2dlciIsMywiY2xpY2siXSxbIm9yaWdpbiIsImNka092ZXJsYXlPcmlnaW4iLCJ0cmlnZ2VyIiwiIl0sWzEsIm1hdC1zZWxlY3QtdmFsdWUiLDMsIm5nU3dpdGNoIl0sWyJjbGFzcyIsIm1hdC1zZWxlY3QtcGxhY2Vob2xkZXIiLDQsIm5nU3dpdGNoQ2FzZSJdLFsiY2xhc3MiLCJtYXQtc2VsZWN0LXZhbHVlLXRleHQiLDMsIm5nU3dpdGNoIiw0LCJuZ1N3aXRjaENhc2UiXSxbMSwibWF0LXNlbGVjdC1hcnJvdy13cmFwcGVyIl0sWzEsIm1hdC1zZWxlY3QtYXJyb3ciXSxbImNkay1jb25uZWN0ZWQtb3ZlcmxheSIsIiIsImNka0Nvbm5lY3RlZE92ZXJsYXlMb2NrUG9zaXRpb24iLCIiLCJjZGtDb25uZWN0ZWRPdmVybGF5SGFzQmFja2Ryb3AiLCIiLCJjZGtDb25uZWN0ZWRPdmVybGF5QmFja2Ryb3BDbGFzcyIsImNkay1vdmVybGF5LXRyYW5zcGFyZW50LWJhY2tkcm9wIiwzLCJjZGtDb25uZWN0ZWRPdmVybGF5U2Nyb2xsU3RyYXRlZ3kiLCJjZGtDb25uZWN0ZWRPdmVybGF5T3JpZ2luIiwiY2RrQ29ubmVjdGVkT3ZlcmxheU9wZW4iLCJjZGtDb25uZWN0ZWRPdmVybGF5UG9zaXRpb25zIiwiY2RrQ29ubmVjdGVkT3ZlcmxheU1pbldpZHRoIiwiY2RrQ29ubmVjdGVkT3ZlcmxheU9mZnNldFkiLCJiYWNrZHJvcENsaWNrIiwiYXR0YWNoIiwiZGV0YWNoIl0sWzEsIm1hdC1zZWxlY3QtcGxhY2Vob2xkZXIiXSxbMSwibWF0LXNlbGVjdC12YWx1ZS10ZXh0IiwzLCJuZ1N3aXRjaCJdLFs0LCJuZ1N3aXRjaERlZmF1bHQiXSxbNCwibmdTd2l0Y2hDYXNlIl0sWzEsIm1hdC1zZWxlY3QtcGFuZWwtd3JhcCJdLFsicm9sZSIsImxpc3Rib3giLCJ0YWJpbmRleCIsIi0xIiwzLCJuZ0NsYXNzIiwia2V5ZG93biJdLFsicGFuZWwiLCIiXV0sdGVtcGxhdGU6ZnVuY3Rpb24gdChuLGUpe2lmKDEmbiYmKGJwKEFIKSxLZygwLCJkaXYiLDAsMSksY3AoImNsaWNrIiwoZnVuY3Rpb24gdCgpe3JldHVybiBlLnRvZ2dsZSgpfSkpLEtnKDMsImRpdiIsMiksWWcoNCxrSCwyLDEsInNwYW4iLDMpLFlnKDUsU0gsMywyLCJzcGFuIiw0KSwkZygpLEtnKDYsImRpdiIsNSksdHAoNywiZGl2Iiw2KSwkZygpLCRnKCksWWcoOCxFSCw0LDE0LCJuZy10ZW1wbGF0ZSIsNyksY3AoImJhY2tkcm9wQ2xpY2siLChmdW5jdGlvbiB0KCl7cmV0dXJuIGUuY2xvc2UoKX0pKSgiYXR0YWNoIiwoZnVuY3Rpb24gdCgpe3JldHVybiBlLl9vbkF0dGFjaGVkKCl9KSkoImRldGFjaCIsKGZ1bmN0aW9uIHQoKXtyZXR1cm4gZS5jbG9zZSgpfSkpKSwyJm4pe2NvbnN0IHQ9cWcoMSk7d3MoMyksSmcoIm5nU3dpdGNoIixlLmVtcHR5KSxOZygiaWQiLGUuX3ZhbHVlSWQpLHdzKDEpLEpnKCJuZ1N3aXRjaENhc2UiLCEwKSx3cygxKSxKZygibmdTd2l0Y2hDYXNlIiwhMSksd3MoMyksSmcoImNka0Nvbm5lY3RlZE92ZXJsYXlTY3JvbGxTdHJhdGVneSIsZS5fc2Nyb2xsU3RyYXRlZ3kpKCJjZGtDb25uZWN0ZWRPdmVybGF5T3JpZ2luIix0KSgiY2RrQ29ubmVjdGVkT3ZlcmxheU9wZW4iLGUucGFuZWxPcGVuKSgiY2RrQ29ubmVjdGVkT3ZlcmxheVBvc2l0aW9ucyIsZS5fcG9zaXRpb25zKSgiY2RrQ29ubmVjdGVkT3ZlcmxheU1pbldpZHRoIixudWxsPT1lLl90cmlnZ2VyUmVjdD9udWxsOmUuX3RyaWdnZXJSZWN0LndpZHRoKSgiY2RrQ29ubmVjdGVkT3ZlcmxheU9mZnNldFkiLGUuX29mZnNldFkpfX0sZGlyZWN0aXZlczpbTXosWk0sWE0sT3osSk0sSE1dLHN0eWxlczpbIi5tYXQtc2VsZWN0e2Rpc3BsYXk6aW5saW5lLWJsb2NrO3dpZHRoOjEwMCU7b3V0bGluZTpub25lfS5tYXQtc2VsZWN0LXRyaWdnZXJ7ZGlzcGxheTppbmxpbmUtdGFibGU7Y3Vyc29yOnBvaW50ZXI7cG9zaXRpb246cmVsYXRpdmU7Ym94LXNpemluZzpib3JkZXItYm94fS5tYXQtc2VsZWN0LWRpc2FibGVkIC5tYXQtc2VsZWN0LXRyaWdnZXJ7LXdlYmtpdC11c2VyLXNlbGVjdDpub25lOy1tb3otdXNlci1zZWxlY3Q6bm9uZTstbXMtdXNlci1zZWxlY3Q6bm9uZTt1c2VyLXNlbGVjdDpub25lO2N1cnNvcjpkZWZhdWx0fS5tYXQtc2VsZWN0LXZhbHVle2Rpc3BsYXk6dGFibGUtY2VsbDttYXgtd2lkdGg6MDt3aWR0aDoxMDAlO292ZXJmbG93OmhpZGRlbjt0ZXh0LW92ZXJmbG93OmVsbGlwc2lzO3doaXRlLXNwYWNlOm5vd3JhcH0ubWF0LXNlbGVjdC12YWx1ZS10ZXh0e3doaXRlLXNwYWNlOm5vd3JhcDtvdmVyZmxvdzpoaWRkZW47dGV4dC1vdmVyZmxvdzplbGxpcHNpc30ubWF0LXNlbGVjdC1hcnJvdy13cmFwcGVye2Rpc3BsYXk6dGFibGUtY2VsbDt2ZXJ0aWNhbC1hbGlnbjptaWRkbGV9Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtZmlsbCAubWF0LXNlbGVjdC1hcnJvdy13cmFwcGVye3RyYW5zZm9ybTp0cmFuc2xhdGVZKC01MCUpfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLW91dGxpbmUgLm1hdC1zZWxlY3QtYXJyb3ctd3JhcHBlcnt0cmFuc2Zvcm06dHJhbnNsYXRlWSgtMjUlKX0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1zdGFuZGFyZC5tYXQtZm9ybS1maWVsZC1oYXMtbGFiZWwgLm1hdC1zZWxlY3Q6bm90KC5tYXQtc2VsZWN0LWVtcHR5KSAubWF0LXNlbGVjdC1hcnJvdy13cmFwcGVye3RyYW5zZm9ybTp0cmFuc2xhdGVZKC01MCUpfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLXN0YW5kYXJkIC5tYXQtc2VsZWN0Lm1hdC1zZWxlY3QtZW1wdHkgLm1hdC1zZWxlY3QtYXJyb3ctd3JhcHBlcnt0cmFuc2l0aW9uOnRyYW5zZm9ybSA0MDBtcyBjdWJpYy1iZXppZXIoMC4yNSwgMC44LCAwLjI1LCAxKX0uX21hdC1hbmltYXRpb24tbm9vcGFibGUubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1zdGFuZGFyZCAubWF0LXNlbGVjdC5tYXQtc2VsZWN0LWVtcHR5IC5tYXQtc2VsZWN0LWFycm93LXdyYXBwZXJ7dHJhbnNpdGlvbjpub25lfS5tYXQtc2VsZWN0LWFycm93e3dpZHRoOjA7aGVpZ2h0OjA7Ym9yZGVyLWxlZnQ6NXB4IHNvbGlkIHRyYW5zcGFyZW50O2JvcmRlci1yaWdodDo1cHggc29saWQgdHJhbnNwYXJlbnQ7Ym9yZGVyLXRvcDo1cHggc29saWQ7bWFyZ2luOjAgNHB4fS5tYXQtc2VsZWN0LXBhbmVsLXdyYXB7ZmxleC1iYXNpczoxMDAlfS5tYXQtc2VsZWN0LXBhbmVse21pbi13aWR0aDoxMTJweDttYXgtd2lkdGg6MjgwcHg7b3ZlcmZsb3c6YXV0bzstd2Via2l0LW92ZXJmbG93LXNjcm9sbGluZzp0b3VjaDtwYWRkaW5nLXRvcDowO3BhZGRpbmctYm90dG9tOjA7bWF4LWhlaWdodDoyNTZweDttaW4td2lkdGg6MTAwJTtib3JkZXItcmFkaXVzOjRweH0uY2RrLWhpZ2gtY29udHJhc3QtYWN0aXZlIC5tYXQtc2VsZWN0LXBhbmVse291dGxpbmU6c29saWQgMXB4fS5tYXQtc2VsZWN0LXBhbmVsIC5tYXQtb3B0Z3JvdXAtbGFiZWwsLm1hdC1zZWxlY3QtcGFuZWwgLm1hdC1vcHRpb257Zm9udC1zaXplOmluaGVyaXQ7bGluZS1oZWlnaHQ6M2VtO2hlaWdodDozZW19Lm1hdC1mb3JtLWZpZWxkLXR5cGUtbWF0LXNlbGVjdDpub3QoLm1hdC1mb3JtLWZpZWxkLWRpc2FibGVkKSAubWF0LWZvcm0tZmllbGQtZmxleHtjdXJzb3I6cG9pbnRlcn0ubWF0LWZvcm0tZmllbGQtdHlwZS1tYXQtc2VsZWN0IC5tYXQtZm9ybS1maWVsZC1sYWJlbHt3aWR0aDpjYWxjKDEwMCUgLSAxOHB4KX0ubWF0LXNlbGVjdC1wbGFjZWhvbGRlcnt0cmFuc2l0aW9uOmNvbG9yIDQwMG1zIDEzMy4zMzMzMzMzMzMzbXMgY3ViaWMtYmV6aWVyKDAuMjUsIDAuOCwgMC4yNSwgMSl9Ll9tYXQtYW5pbWF0aW9uLW5vb3BhYmxlIC5tYXQtc2VsZWN0LXBsYWNlaG9sZGVye3RyYW5zaXRpb246bm9uZX0ubWF0LWZvcm0tZmllbGQtaGlkZS1wbGFjZWhvbGRlciAubWF0LXNlbGVjdC1wbGFjZWhvbGRlcntjb2xvcjp0cmFuc3BhcmVudDstd2Via2l0LXRleHQtZmlsbC1jb2xvcjp0cmFuc3BhcmVudDt0cmFuc2l0aW9uOm5vbmU7ZGlzcGxheTpibG9ja31cbiJdLGVuY2Fwc3VsYXRpb246MixkYXRhOnthbmltYXRpb246W3pILnRyYW5zZm9ybVBhbmVsV3JhcCx6SC50cmFuc2Zvcm1QYW5lbF19LGNoYW5nZURldGVjdGlvbjowfSksakguY3RvclBhcmFtZXRlcnM9KCk9Plt7dHlwZTpNQX0se3R5cGU6Vm19LHt0eXBlOkpffSx7dHlwZTpPRX0se3R5cGU6eHV9LHt0eXBlOlVTLGRlY29yYXRvcnM6W3t0eXBlOk5lfV19LHt0eXBlOkxMLGRlY29yYXRvcnM6W3t0eXBlOk5lfV19LHt0eXBlOktMLGRlY29yYXRvcnM6W3t0eXBlOk5lfV19LHt0eXBlOl9GLGRlY29yYXRvcnM6W3t0eXBlOk5lfSx7dHlwZTpJZSxhcmdzOltoRl19XX0se3R5cGU6QUYsZGVjb3JhdG9yczpbe3R5cGU6RmV9LHt0eXBlOk5lfV19LHt0eXBlOlN0cmluZyxkZWNvcmF0b3JzOlt7dHlwZTpCZSxhcmdzOlsidGFiaW5kZXgiXX1dfSx7dHlwZTp2b2lkIDAsZGVjb3JhdG9yczpbe3R5cGU6SWUsYXJnczpbREhdfV19LHt0eXBlOlNTfSx7dHlwZTp2b2lkIDAsZGVjb3JhdG9yczpbe3R5cGU6TmV9LHt0eXBlOkllLGFyZ3M6W0lIXX1dfV0sakgucHJvcERlY29yYXRvcnM9e3RyaWdnZXI6W3t0eXBlOlhkLGFyZ3M6WyJ0cmlnZ2VyIl19XSxwYW5lbDpbe3R5cGU6WGQsYXJnczpbInBhbmVsIl19XSxvdmVybGF5RGlyOlt7dHlwZTpYZCxhcmdzOltPel19XSxvcHRpb25zOlt7dHlwZTpxZCxhcmdzOltZRSx7ZGVzY2VuZGFudHM6ITB9XX1dLG9wdGlvbkdyb3Vwczpbe3R5cGU6cWQsYXJnczpbSEUse2Rlc2NlbmRhbnRzOiEwfV19XSxwYW5lbENsYXNzOlt7dHlwZTpmX31dLGN1c3RvbVRyaWdnZXI6W3t0eXBlOlpkLGFyZ3M6W0JIXX1dLHBsYWNlaG9sZGVyOlt7dHlwZTpmX31dLHJlcXVpcmVkOlt7dHlwZTpmX31dLG11bHRpcGxlOlt7dHlwZTpmX31dLGRpc2FibGVPcHRpb25DZW50ZXJpbmc6W3t0eXBlOmZffV0sY29tcGFyZVdpdGg6W3t0eXBlOmZffV0sdmFsdWU6W3t0eXBlOmZffV0sYXJpYUxhYmVsOlt7dHlwZTpmXyxhcmdzOlsiYXJpYS1sYWJlbCJdfV0sYXJpYUxhYmVsbGVkYnk6W3t0eXBlOmZfLGFyZ3M6WyJhcmlhLWxhYmVsbGVkYnkiXX1dLGVycm9yU3RhdGVNYXRjaGVyOlt7dHlwZTpmX31dLHR5cGVhaGVhZERlYm91bmNlSW50ZXJ2YWw6W3t0eXBlOmZffV0sc29ydENvbXBhcmF0b3I6W3t0eXBlOmZffV0saWQ6W3t0eXBlOmZffV0sb3BlbmVkQ2hhbmdlOlt7dHlwZTpoX31dLF9vcGVuZWRTdHJlYW06W3t0eXBlOmhfLGFyZ3M6WyJvcGVuZWQiXX1dLF9jbG9zZWRTdHJlYW06W3t0eXBlOmhfLGFyZ3M6WyJjbG9zZWQiXX1dLHNlbGVjdGlvbkNoYW5nZTpbe3R5cGU6aF99XSx2YWx1ZUNoYW5nZTpbe3R5cGU6aF99XX07Ci8qKgogICAgICogQGxpY2Vuc2UKICAgICAqIENvcHlyaWdodCBHb29nbGUgTExDIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCiAgICAgKgogICAgICogVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYW4gTUlULXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKICAgICAqIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUgYXQgaHR0cHM6Ly9hbmd1bGFyLmlvL2xpY2Vuc2UKICAgICAqLwpjbGFzcyBVSHt9ZnVuY3Rpb24gV0godCxuKXtpZigxJnQpe2NvbnN0IHQ9b3AoKTtLZygwLCJzcGFuIiw1KSxjcCgiY2xpY2siLChmdW5jdGlvbiBuKGUpe2pyKHQpO2NvbnN0IGE9Z3AoKS4kaW1wbGljaXQ7cmV0dXJuIGdwKCkub25BY3RpdmVQbHVnaW5TZWxlY3Rpb24oZSxhLmlkKX0pKSxKcCgxKSwkZygpfWlmKDImdCl7Y29uc3QgdD1ncCgpLiRpbXBsaWNpdDtOZygiZGF0YS1wbHVnaW4taWQiLHQuaWQpLHdzKDEpLEtwKCIgIix0LnRhYl9uYW1lLCIgIil9fWZ1bmN0aW9uIEdIKHQsbil7MSZ0JiYoS2coMCwibWF0LXRhYiIsMyksWWcoMSxXSCwyLDIsIm5nLXRlbXBsYXRlIiw0KSwkZygpKSwyJnQmJkpnKCJkaXNhYmxlZCIsIW4uJGltcGxpY2l0LmVuYWJsZWQpfWZ1bmN0aW9uIFlIKHQsbil7aWYoMSZ0JiYoS2coMCwibWF0LW9wdGlvbiIsOSksSnAoMSksJGcoKSksMiZ0KXtjb25zdCB0PW4uJGltcGxpY2l0O0pnKCJ2YWx1ZSIsdC5pZCksTmcoImRhdGEtcGx1Z2luLWlkIix0LmlkKSx3cygxKSxLcCgiICIsdC50YWJfbmFtZSwiICIpfX1mdW5jdGlvbiBxSCh0LG4pe2lmKDEmdCl7Y29uc3QgdD1vcCgpO0tnKDAsIm1hdC1mb3JtLWZpZWxkIiw2KSxLZygxLCJtYXQtbGFiZWwiKSxKcCgyLCJJbmFjdGl2ZSIpLCRnKCksS2coMywibWF0LXNlbGVjdCIsNyksY3AoInNlbGVjdGlvbkNoYW5nZSIsKGZ1bmN0aW9uIG4oZSl7cmV0dXJuIGpyKHQpLGdwKCkub25EaXNhYmxlZFBsdWdpblNlbGVjdGlvbkNoYW5nZWQoZSl9KSksWWcoNCxZSCwyLDMsIm1hdC1vcHRpb24iLDgpLCRnKCksJGcoKX1pZigyJnQpe2NvbnN0IHQ9Z3AoKTt3cygzKSxKZygidmFsdWUiLHQuc2VsZWN0ZWRQbHVnaW4pLHdzKDEpLEpnKCJuZ0Zvck9mIix0LmRpc2FibGVkUGx1Z2lucyl9fVVILsm1bW9kPXhvKHt0eXBlOlVIfSksVUguybVpbmo9R2Uoe2ZhY3Rvcnk6ZnVuY3Rpb24gdChuKXtyZXR1cm4gbmV3KG58fFVIKX0scHJvdmlkZXJzOltOSF0saW1wb3J0czpbW1BPLHl6LFhFLHRFXSxrQSxDRixYRSx0RV19KSwoInVuZGVmaW5lZCI9PXR5cGVvZiBuZ0ppdE1vZGV8fG5nSml0TW9kZSkmJnlvKFVILHtkZWNsYXJhdGlvbnM6ZnVuY3Rpb24oKXtyZXR1cm5bakgsVkhdfSxpbXBvcnRzOmZ1bmN0aW9uKCl7cmV0dXJuW1BPLHl6LFhFLHRFXX0sZXhwb3J0czpmdW5jdGlvbigpe3JldHVybltrQSxDRixqSCxWSCxYRSx0RV19fSk7Y2xhc3MgWkh7Y29uc3RydWN0b3IoKXt0aGlzLm9uUGx1Z2luU2VsZWN0aW9uQ2hhbmdlZD1uZXcgRWZ9Z2V0QWN0aXZlUGx1Z2luSW5kZXgoKXtyZXR1cm4gdGhpcy5hY3RpdmVQbHVnaW5zLmZpbmRJbmRleCgoKHtpZDp0fSk9PnQ9PT10aGlzLnNlbGVjdGVkUGx1Z2luKSl9b25BY3RpdmVQbHVnaW5TZWxlY3Rpb24odCxuKXt0LnN0b3BQcm9wYWdhdGlvbigpLHRoaXMub25QbHVnaW5TZWxlY3Rpb25DaGFuZ2VkLmVtaXQobil9b25EaXNhYmxlZFBsdWdpblNlbGVjdGlvbkNoYW5nZWQodCl7dGhpcy5vblBsdWdpblNlbGVjdGlvbkNoYW5nZWQuZW1pdCh0LnZhbHVlKX19WkguybVmYWM9ZnVuY3Rpb24gdChuKXtyZXR1cm4gbmV3KG58fFpIKX0sWkguybVjbXA9X28oe3R5cGU6Wkgsc2VsZWN0b3JzOltbInBsdWdpbi1zZWxlY3Rvci1jb21wb25lbnQiXV0saW5wdXRzOnthY3RpdmVQbHVnaW5zOiJhY3RpdmVQbHVnaW5zIixkaXNhYmxlZFBsdWdpbnM6ImRpc2FibGVkUGx1Z2lucyIsc2VsZWN0ZWRQbHVnaW46InNlbGVjdGVkUGx1Z2luIn0sb3V0cHV0czp7b25QbHVnaW5TZWxlY3Rpb25DaGFuZ2VkOiJvblBsdWdpblNlbGVjdGlvbkNoYW5nZWQifSxkZWNsczozLHZhcnM6Myxjb25zdHM6W1siYW5pbWF0aW9uRHVyYXRpb24iLCIxMDBtcyIsMSwiYWN0aXZlLXBsdWdpbi1saXN0IiwzLCJzZWxlY3RlZEluZGV4Il0sWzMsImRpc2FibGVkIiw0LCJuZ0ZvciIsIm5nRm9yT2YiXSxbImZsb2F0TGFiZWwiLCJuZXZlciIsNCwibmdJZiJdLFszLCJkaXNhYmxlZCJdLFsibWF0LXRhYi1sYWJlbCIsIiJdLFsxLCJwbHVnaW4tbmFtZSIsMywiY2xpY2siXSxbImZsb2F0TGFiZWwiLCJuZXZlciJdLFszLCJ2YWx1ZSIsInNlbGVjdGlvbkNoYW5nZSJdLFszLCJ2YWx1ZSIsNCwibmdGb3IiLCJuZ0Zvck9mIl0sWzMsInZhbHVlIl1dLHRlbXBsYXRlOmZ1bmN0aW9uIHQobixlKXsxJm4mJihLZygwLCJtYXQtdGFiLWdyb3VwIiwwKSxZZygxLEdILDIsMSwibWF0LXRhYiIsMSksJGcoKSxZZygyLHFILDUsMiwibWF0LWZvcm0tZmllbGQiLDIpKSwyJm4mJihKZygic2VsZWN0ZWRJbmRleCIsZS5nZXRBY3RpdmVQbHVnaW5JbmRleCgpKSx3cygxKSxKZygibmdGb3JPZiIsZS5hY3RpdmVQbHVnaW5zKSx3cygxKSxKZygibmdJZiIsZS5kaXNhYmxlZFBsdWdpbnMubGVuZ3RoPjApKX0sZGlyZWN0aXZlczpbeU4sak0sV00sYk4sbU4sX0Ysc0YsakgsWUVdLHN0eWxlczpbIltfbmdob3N0LSVDT01QJV17YWxpZ24taXRlbXM6Y2VudGVyO2Rpc3BsYXk6ZmxleDtmbGV4OjEgMSBhdXRvO2ZvbnQtc2l6ZToxNHB4O2hlaWdodDoxMDAlO292ZXJmbG93OmhpZGRlbn1tYXQtZm9ybS1maWVsZFtfbmdjb250ZW50LSVDT01QJV17ZmxleDowIDA7bWFyZ2luLXRvcDo1cHg7d2lkdGg6MTMwcHh9bWF0LWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXSwgbWF0LXNlbGVjdFtfbmdjb250ZW50LSVDT01QJV0sIG1hdC1vcHRpb25bX25nY29udGVudC0lQ09NUCVde2ZvbnQtd2VpZ2h0OjUwMDt0ZXh0LXRyYW5zZm9ybTp1cHBlcmNhc2V9LmFjdGl2ZS1wbHVnaW4tbGlzdFtfbmdjb250ZW50LSVDT01QJV17YWxpZ24tc2VsZjpzdHJldGNoO2ZsZXg6MSAxIGF1dG87b3ZlcmZsb3c6aGlkZGVufS5wbHVnaW4tbmFtZVtfbmdjb250ZW50LSVDT01QJV17YWxpZ24taXRlbXM6Y2VudGVyO2Rpc3BsYXk6aW5saW5lLWZsZXg7aGVpZ2h0OjEwMCU7anVzdGlmeS1jb250ZW50OmNlbnRlcjtwYWRkaW5nOjAgMTJweDt3aWR0aDoxMDAlfVtfbmdob3N0LSVDT01QJV0gICAgIC5hY3RpdmUtcGx1Z2luLWxpc3QubWF0LXByaW1hcnkgLm1hdC1pbmstYmFye2JhY2tncm91bmQtY29sb3I6Y3VycmVudENvbG9yfVtfbmdob3N0LSVDT01QJV0gICAgIC5hY3RpdmUtcGx1Z2luLWxpc3QgLm1hdC10YWItbGFiZWwsIFtfbmdob3N0LSVDT01QJV0gICAgIC5hY3RpdmUtcGx1Z2luLWxpc3QgLm1hdC10YWItbGlua3tjb2xvcjppbmhlcml0O29wYWNpdHk6Ljd9W19uZ2hvc3QtJUNPTVAlXSAgICAgLmFjdGl2ZS1wbHVnaW4tbGlzdCAubWF0LXRhYi1sYWJlbC5tYXQtdGFiLWxhYmVsLWFjdGl2ZSwgW19uZ2hvc3QtJUNPTVAlXSAgICAgLmFjdGl2ZS1wbHVnaW4tbGlzdCAubWF0LXRhYi1saW5rLm1hdC10YWItbGFiZWwtYWN0aXZle29wYWNpdHk6MX1bX25naG9zdC0lQ09NUCVdICAgICAuYWN0aXZlLXBsdWdpbi1saXN0IC5tYXQtdGFiLWhlYWRlci1wYWdpbmF0aW9uLWNoZXZyb257Ym9yZGVyLWNvbG9yOmN1cnJlbnRDb2xvcn1bX25naG9zdC0lQ09NUCVdICAgICAuYWN0aXZlLXBsdWdpbi1saXN0IC5tYXQtdGFiLWhlYWRlci1wYWdpbmF0aW9uLWRpc2FibGVke3Zpc2liaWxpdHk6aGlkZGVufVtfbmdob3N0LSVDT01QJV0gICAgIC5hY3RpdmUtcGx1Z2luLWxpc3QgLm1hdC10YWItZGlzYWJsZWR7ZGlzcGxheTpub25lfVtfbmdob3N0LSVDT01QJV0gICAgIC5hY3RpdmUtcGx1Z2luLWxpc3QgLm1hdC10YWItaGVhZGVyLCBbX25naG9zdC0lQ09NUCVdICAgICAuYWN0aXZlLXBsdWdpbi1saXN0IC5tYXQtdGFiLWxhYmVscywgW19uZ2hvc3QtJUNPTVAlXSAgICAgLmFjdGl2ZS1wbHVnaW4tbGlzdCAubWF0LXRhYi1sYWJlbHtoZWlnaHQ6MTAwJX1bX25naG9zdC0lQ09NUCVdICAgICAuYWN0aXZlLXBsdWdpbi1saXN0IC5tYXQtdGFiLWxhYmVse21pbi13aWR0aDo0OHB4O3BhZGRpbmc6MDt0ZXh0LXRyYW5zZm9ybTp1cHBlcmNhc2V9W19uZ2hvc3QtJUNPTVAlXSAgICAgLmFjdGl2ZS1wbHVnaW4tbGlzdCAubWF0LXRhYi1sYWJlbC1jb250ZW50e2hlaWdodDoxMDAlfVtfbmdob3N0LSVDT01QJV0gICAgIC5hY3RpdmUtcGx1Z2luLWxpc3QgbWF0LXRhYi1oZWFkZXI6bm90KC5tYXQtdGFiLWhlYWRlci1wYWdpbmF0aW9uLWNvbnRyb2xzLWVuYWJsZWQpe3BhZGRpbmc6MCAzNnB4fSJdfSk7Y29uc3QgWEg9cHYoRkksKHQ9Pk9iamVjdC5rZXlzKHQpLm1hcCgobj0+T2JqZWN0LmFzc2lnbih7fSx7aWQ6bn0sdFtuXSkpKSkpLEpIPXB2KFhILCh0PT50LmZpbHRlcigodD0+IXQuZW5hYmxlZCkpKSk7Y2xhc3MgUUh7Y29uc3RydWN0b3IodCl7dGhpcy5zdG9yZT10LHRoaXMuYWN0aXZlUGx1Z2luJD10aGlzLnN0b3JlLnBpcGUobHYoTkkpKSx0aGlzLnBsdWdpbnMkPXRoaXMuc3RvcmUucGlwZShsdihYSCkpLHRoaXMuZGlzYWJsZWRQbHVnaW5zJD10aGlzLnN0b3JlLnBpcGUobHYoSkgpKX1vblBsdWdpblNlbGVjdGlvbkNoYW5nZSh0KXt0aGlzLnN0b3JlLmRpc3BhdGNoKGdJKHtwbHVnaW46dH0pKX19ZnVuY3Rpb24gS0godCxuKXt9UUguybVmYWM9ZnVuY3Rpb24gdChuKXtyZXR1cm4gbmV3KG58fFFIKShaZyhjdikpfSxRSC7JtWNtcD1fbyh7dHlwZTpRSCxzZWxlY3RvcnM6W1sicGx1Z2luLXNlbGVjdG9yIl1dLGRlY2xzOjQsdmFyczo5LGNvbnN0czpbWzMsImFjdGl2ZVBsdWdpbnMiLCJkaXNhYmxlZFBsdWdpbnMiLCJzZWxlY3RlZFBsdWdpbiIsIm9uUGx1Z2luU2VsZWN0aW9uQ2hhbmdlZCJdXSx0ZW1wbGF0ZTpmdW5jdGlvbiB0KG4sZSl7MSZuJiYoS2coMCwicGx1Z2luLXNlbGVjdG9yLWNvbXBvbmVudCIsMCksY3AoIm9uUGx1Z2luU2VsZWN0aW9uQ2hhbmdlZCIsKGZ1bmN0aW9uIHQobil7cmV0dXJuIGUub25QbHVnaW5TZWxlY3Rpb25DaGFuZ2Uobil9KSkseWYoMSwiYXN5bmMiKSx5ZigyLCJhc3luYyIpLHlmKDMsImFzeW5jIiksJGcoKSksMiZuJiZKZygiYWN0aXZlUGx1Z2lucyIsa2YoMSwzLGUucGx1Z2lucyQpKSgiZGlzYWJsZWRQbHVnaW5zIixrZigyLDUsZS5kaXNhYmxlZFBsdWdpbnMkKSkoInNlbGVjdGVkUGx1Z2luIixrZigzLDcsZS5hY3RpdmVQbHVnaW4kKSl9LGRpcmVjdGl2ZXM6W1pIXSxwaXBlczpbb09dLGVuY2Fwc3VsYXRpb246Mn0pO2NsYXNzICRIe2NvbnN0cnVjdG9yKCl7dGhpcy5yb2xlPSJkaWFsb2ciLHRoaXMucGFuZWxDbGFzcz0iIix0aGlzLmhhc0JhY2tkcm9wPSEwLHRoaXMuYmFja2Ryb3BDbGFzcz0iIix0aGlzLmRpc2FibGVDbG9zZT0hMSx0aGlzLndpZHRoPSIiLHRoaXMuaGVpZ2h0PSIiLHRoaXMubWF4V2lkdGg9IjgwdnciLHRoaXMuZGF0YT1udWxsLHRoaXMuYXJpYURlc2NyaWJlZEJ5PW51bGwsdGhpcy5hcmlhTGFiZWxsZWRCeT1udWxsLHRoaXMuYXJpYUxhYmVsPW51bGwsdGhpcy5hdXRvRm9jdXM9ITAsdGhpcy5yZXN0b3JlRm9jdXM9ITAsdGhpcy5jbG9zZU9uTmF2aWdhdGlvbj0hMH19Ci8qKgogICAgICogQGxpY2Vuc2UKICAgICAqIENvcHlyaWdodCBHb29nbGUgTExDIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCiAgICAgKgogICAgICogVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYW4gTUlULXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKICAgICAqIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUgYXQgaHR0cHM6Ly9hbmd1bGFyLmlvL2xpY2Vuc2UKICAgICAqL2NvbnN0IHRCPXtkaWFsb2dDb250YWluZXI6U1AoImRpYWxvZ0NvbnRhaW5lciIsW1JQKCJ2b2lkLCBleGl0Iix6UCh7b3BhY2l0eTowLHRyYW5zZm9ybToic2NhbGUoMC43KSJ9KSksUlAoImVudGVyIix6UCh7dHJhbnNmb3JtOiJub25lIn0pKSxEUCgiKiA9PiBlbnRlciIsRVAoIjE1MG1zIGN1YmljLWJlemllcigwLCAwLCAwLjIsIDEpIix6UCh7dHJhbnNmb3JtOiJub25lIixvcGFjaXR5OjF9KSkpLERQKCIqID0+IHZvaWQsICogPT4gZXhpdCIsRVAoIjc1bXMgY3ViaWMtYmV6aWVyKDAuNCwgMC4wLCAwLjIsIDEpIix6UCh7b3BhY2l0eTowfSkpKV0pfTsKLyoqCiAgICAgKiBAbGljZW5zZQogICAgICogQ29weXJpZ2h0IEdvb2dsZSBMTEMgQWxsIFJpZ2h0cyBSZXNlcnZlZC4KICAgICAqCiAgICAgKiBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhbiBNSVQtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQogICAgICogZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZSBhdCBodHRwczovL2FuZ3VsYXIuaW8vbGljZW5zZQogICAgICovZnVuY3Rpb24gbkIoKXt0aHJvdyBFcnJvcigiQXR0ZW1wdGluZyB0byBhdHRhY2ggZGlhbG9nIGNvbnRlbnQgYWZ0ZXIgY29udGVudCBpcyBhbHJlYWR5IGF0dGFjaGVkIil9Y2xhc3MgZUIgZXh0ZW5kcyBSQXtjb25zdHJ1Y3Rvcih0LG4sZSxhLG8scil7c3VwZXIoKSx0aGlzLl9lbGVtZW50UmVmPXQsdGhpcy5fZm9jdXNUcmFwRmFjdG9yeT1uLHRoaXMuX2NoYW5nZURldGVjdG9yUmVmPWUsdGhpcy5fY29uZmlnPW8sdGhpcy5fZm9jdXNNb25pdG9yPXIsdGhpcy5fYW5pbWF0aW9uU3RhdGVDaGFuZ2VkPW5ldyBFZix0aGlzLl9lbGVtZW50Rm9jdXNlZEJlZm9yZURpYWxvZ1dhc09wZW5lZD1udWxsLHRoaXMuX2Nsb3NlSW50ZXJhY3Rpb25UeXBlPW51bGwsdGhpcy5hdHRhY2hEb21Qb3J0YWw9dD0+KHRoaXMuX3BvcnRhbE91dGxldC5oYXNBdHRhY2hlZCgpJiYoInVuZGVmaW5lZCI9PXR5cGVvZiBuZ0Rldk1vZGV8fG5nRGV2TW9kZSkmJm5CKCksdGhpcy5fcG9ydGFsT3V0bGV0LmF0dGFjaERvbVBvcnRhbCh0KSksdGhpcy5fYXJpYUxhYmVsbGVkQnk9by5hcmlhTGFiZWxsZWRCeXx8bnVsbCx0aGlzLl9kb2N1bWVudD1hfV9pbml0aWFsaXplV2l0aEF0dGFjaGVkQ29udGVudCgpe3RoaXMuX3NldHVwRm9jdXNUcmFwKCksdGhpcy5fY2FwdHVyZVByZXZpb3VzbHlGb2N1c2VkRWxlbWVudCgpLHRoaXMuX2ZvY3VzRGlhbG9nQ29udGFpbmVyKCl9YXR0YWNoQ29tcG9uZW50UG9ydGFsKHQpe3JldHVybiB0aGlzLl9wb3J0YWxPdXRsZXQuaGFzQXR0YWNoZWQoKSYmKCJ1bmRlZmluZWQiPT10eXBlb2YgbmdEZXZNb2RlfHxuZ0Rldk1vZGUpJiZuQigpLHRoaXMuX3BvcnRhbE91dGxldC5hdHRhY2hDb21wb25lbnRQb3J0YWwodCl9YXR0YWNoVGVtcGxhdGVQb3J0YWwodCl7cmV0dXJuIHRoaXMuX3BvcnRhbE91dGxldC5oYXNBdHRhY2hlZCgpJiYoInVuZGVmaW5lZCI9PXR5cGVvZiBuZ0Rldk1vZGV8fG5nRGV2TW9kZSkmJm5CKCksdGhpcy5fcG9ydGFsT3V0bGV0LmF0dGFjaFRlbXBsYXRlUG9ydGFsKHQpfV9yZWNhcHR1cmVGb2N1cygpe3RoaXMuX2NvbnRhaW5zRm9jdXMoKXx8KCF0aGlzLl9jb25maWcuYXV0b0ZvY3VzfHwhdGhpcy5fZm9jdXNUcmFwLmZvY3VzSW5pdGlhbEVsZW1lbnQoKSkmJnRoaXMuX2VsZW1lbnRSZWYubmF0aXZlRWxlbWVudC5mb2N1cygpfV90cmFwRm9jdXMoKXt0aGlzLl9jb25maWcuYXV0b0ZvY3VzP3RoaXMuX2ZvY3VzVHJhcC5mb2N1c0luaXRpYWxFbGVtZW50V2hlblJlYWR5KCk6dGhpcy5fY29udGFpbnNGb2N1cygpfHx0aGlzLl9lbGVtZW50UmVmLm5hdGl2ZUVsZW1lbnQuZm9jdXMoKX1fcmVzdG9yZUZvY3VzKCl7Y29uc3QgdD10aGlzLl9lbGVtZW50Rm9jdXNlZEJlZm9yZURpYWxvZ1dhc09wZW5lZDtpZih0aGlzLl9jb25maWcucmVzdG9yZUZvY3VzJiZ0JiYiZnVuY3Rpb24iPT10eXBlb2YgdC5mb2N1cyl7Y29uc3Qgbj10aGlzLl9kb2N1bWVudC5hY3RpdmVFbGVtZW50LGU9dGhpcy5fZWxlbWVudFJlZi5uYXRpdmVFbGVtZW50O24mJm4hPT10aGlzLl9kb2N1bWVudC5ib2R5JiZuIT09ZSYmIWUuY29udGFpbnMobil8fCh0aGlzLl9mb2N1c01vbml0b3I/KHRoaXMuX2ZvY3VzTW9uaXRvci5mb2N1c1ZpYSh0LHRoaXMuX2Nsb3NlSW50ZXJhY3Rpb25UeXBlKSx0aGlzLl9jbG9zZUludGVyYWN0aW9uVHlwZT1udWxsKTp0LmZvY3VzKCkpfXRoaXMuX2ZvY3VzVHJhcCYmdGhpcy5fZm9jdXNUcmFwLmRlc3Ryb3koKX1fc2V0dXBGb2N1c1RyYXAoKXt0aGlzLl9mb2N1c1RyYXA9dGhpcy5fZm9jdXNUcmFwRmFjdG9yeS5jcmVhdGUodGhpcy5fZWxlbWVudFJlZi5uYXRpdmVFbGVtZW50KX1fY2FwdHVyZVByZXZpb3VzbHlGb2N1c2VkRWxlbWVudCgpe3RoaXMuX2RvY3VtZW50JiYodGhpcy5fZWxlbWVudEZvY3VzZWRCZWZvcmVEaWFsb2dXYXNPcGVuZWQ9dGhpcy5fZG9jdW1lbnQuYWN0aXZlRWxlbWVudCl9X2ZvY3VzRGlhbG9nQ29udGFpbmVyKCl7dGhpcy5fZWxlbWVudFJlZi5uYXRpdmVFbGVtZW50LmZvY3VzJiZ0aGlzLl9lbGVtZW50UmVmLm5hdGl2ZUVsZW1lbnQuZm9jdXMoKX1fY29udGFpbnNGb2N1cygpe2NvbnN0IHQ9dGhpcy5fZWxlbWVudFJlZi5uYXRpdmVFbGVtZW50LG49dGhpcy5fZG9jdW1lbnQuYWN0aXZlRWxlbWVudDtyZXR1cm4gdD09PW58fHQuY29udGFpbnMobil9fWVCLsm1ZmFjPWZ1bmN0aW9uIHQobil7cmV0dXJuIG5ldyhufHxlQikoWmcoeHUpLFpnKHVTKSxaZyhWbSksWmcoekMsOCksWmcoJEgpLFpnKFRTKSl9LGVCLsm1ZGlyPXZvKHt0eXBlOmVCLHZpZXdRdWVyeTpmdW5jdGlvbiB0KG4sZSl7dmFyIGE7MSZuJiZqZihGQSwhMCksMiZuJiZWZihhPVpmKCkpJiYoZS5fcG9ydGFsT3V0bGV0PWEuZmlyc3QpfSxmZWF0dXJlczpbaGddfSksZUIuY3RvclBhcmFtZXRlcnM9KCk9Plt7dHlwZTp4dX0se3R5cGU6dVN9LHt0eXBlOlZtfSx7dHlwZTp2b2lkIDAsZGVjb3JhdG9yczpbe3R5cGU6TmV9LHt0eXBlOkllLGFyZ3M6W3pDXX1dfSx7dHlwZTokSH0se3R5cGU6VFN9XSxlQi5wcm9wRGVjb3JhdG9ycz17X3BvcnRhbE91dGxldDpbe3R5cGU6WGQsYXJnczpbRkEse3N0YXRpYzohMH1dfV19O2NsYXNzIGFCIGV4dGVuZHMgZUJ7Y29uc3RydWN0b3IoKXtzdXBlciguLi5hcmd1bWVudHMpLHRoaXMuX3N0YXRlPSJlbnRlciJ9X29uQW5pbWF0aW9uRG9uZSh7dG9TdGF0ZTp0LHRvdGFsVGltZTpufSl7ImVudGVyIj09PXQ/KHRoaXMuX3RyYXBGb2N1cygpLHRoaXMuX2FuaW1hdGlvblN0YXRlQ2hhbmdlZC5uZXh0KHtzdGF0ZToib3BlbmVkIix0b3RhbFRpbWU6bn0pKToiZXhpdCI9PT10JiYodGhpcy5fcmVzdG9yZUZvY3VzKCksdGhpcy5fYW5pbWF0aW9uU3RhdGVDaGFuZ2VkLm5leHQoe3N0YXRlOiJjbG9zZWQiLHRvdGFsVGltZTpufSkpfV9vbkFuaW1hdGlvblN0YXJ0KHt0b1N0YXRlOnQsdG90YWxUaW1lOm59KXsiZW50ZXIiPT09dD90aGlzLl9hbmltYXRpb25TdGF0ZUNoYW5nZWQubmV4dCh7c3RhdGU6Im9wZW5pbmciLHRvdGFsVGltZTpufSk6ImV4aXQiIT09dCYmInZvaWQiIT09dHx8dGhpcy5fYW5pbWF0aW9uU3RhdGVDaGFuZ2VkLm5leHQoe3N0YXRlOiJjbG9zaW5nIix0b3RhbFRpbWU6bn0pfV9zdGFydEV4aXRBbmltYXRpb24oKXt0aGlzLl9zdGF0ZT0iZXhpdCIsdGhpcy5fY2hhbmdlRGV0ZWN0b3JSZWYubWFya0ZvckNoZWNrKCl9fWFCLsm1ZmFjPWZ1bmN0aW9uIHQobil7cmV0dXJuIG9CKG58fGFCKX0sYUIuybVjbXA9X28oe3R5cGU6YUIsc2VsZWN0b3JzOltbIm1hdC1kaWFsb2ctY29udGFpbmVyIl1dLGhvc3RBdHRyczpbInRhYmluZGV4IiwiLTEiLCJhcmlhLW1vZGFsIiwidHJ1ZSIsMSwibWF0LWRpYWxvZy1jb250YWluZXIiXSxob3N0VmFyczo2LGhvc3RCaW5kaW5nczpmdW5jdGlvbiB0KG4sZSl7MSZuJiZzcCgiQGRpYWxvZ0NvbnRhaW5lci5zdGFydCIsKGZ1bmN0aW9uIHQobil7cmV0dXJuIGUuX29uQW5pbWF0aW9uU3RhcnQobil9KSkoIkBkaWFsb2dDb250YWluZXIuZG9uZSIsKGZ1bmN0aW9uIHQobil7cmV0dXJuIGUuX29uQW5pbWF0aW9uRG9uZShuKX0pKSwyJm4mJihlYigiaWQiLGUuX2lkKSxOZygicm9sZSIsZS5fY29uZmlnLnJvbGUpKCJhcmlhLWxhYmVsbGVkYnkiLGUuX2NvbmZpZy5hcmlhTGFiZWw/bnVsbDplLl9hcmlhTGFiZWxsZWRCeSkoImFyaWEtbGFiZWwiLGUuX2NvbmZpZy5hcmlhTGFiZWwpKCJhcmlhLWRlc2NyaWJlZGJ5IixlLl9jb25maWcuYXJpYURlc2NyaWJlZEJ5fHxudWxsKSxhYigiQGRpYWxvZ0NvbnRhaW5lciIsZS5fc3RhdGUpKX0sZmVhdHVyZXM6W2hnXSxkZWNsczoxLHZhcnM6MCxjb25zdHM6W1siY2RrUG9ydGFsT3V0bGV0IiwiIl1dLHRlbXBsYXRlOmZ1bmN0aW9uIHQobixlKXsxJm4mJllnKDAsS0gsMCwwLCJuZy10ZW1wbGF0ZSIsMCl9LGRpcmVjdGl2ZXM6W0ZBXSxzdHlsZXM6WyIubWF0LWRpYWxvZy1jb250YWluZXJ7ZGlzcGxheTpibG9jaztwYWRkaW5nOjI0cHg7Ym9yZGVyLXJhZGl1czo0cHg7Ym94LXNpemluZzpib3JkZXItYm94O292ZXJmbG93OmF1dG87b3V0bGluZTowO3dpZHRoOjEwMCU7aGVpZ2h0OjEwMCU7bWluLWhlaWdodDppbmhlcml0O21heC1oZWlnaHQ6aW5oZXJpdH0uY2RrLWhpZ2gtY29udHJhc3QtYWN0aXZlIC5tYXQtZGlhbG9nLWNvbnRhaW5lcntvdXRsaW5lOnNvbGlkIDFweH0ubWF0LWRpYWxvZy1jb250ZW50e2Rpc3BsYXk6YmxvY2s7bWFyZ2luOjAgLTI0cHg7cGFkZGluZzowIDI0cHg7bWF4LWhlaWdodDo2NXZoO292ZXJmbG93OmF1dG87LXdlYmtpdC1vdmVyZmxvdy1zY3JvbGxpbmc6dG91Y2h9Lm1hdC1kaWFsb2ctdGl0bGV7bWFyZ2luOjAgMCAyMHB4O2Rpc3BsYXk6YmxvY2t9Lm1hdC1kaWFsb2ctYWN0aW9uc3twYWRkaW5nOjhweCAwO2Rpc3BsYXk6ZmxleDtmbGV4LXdyYXA6d3JhcDttaW4taGVpZ2h0OjUycHg7YWxpZ24taXRlbXM6Y2VudGVyO21hcmdpbi1ib3R0b206LTI0cHh9Lm1hdC1kaWFsb2ctYWN0aW9uc1thbGlnbj1lbmRde2p1c3RpZnktY29udGVudDpmbGV4LWVuZH0ubWF0LWRpYWxvZy1hY3Rpb25zW2FsaWduPWNlbnRlcl17anVzdGlmeS1jb250ZW50OmNlbnRlcn0ubWF0LWRpYWxvZy1hY3Rpb25zIC5tYXQtYnV0dG9uLWJhc2UrLm1hdC1idXR0b24tYmFzZSwubWF0LWRpYWxvZy1hY3Rpb25zIC5tYXQtbWRjLWJ1dHRvbi1iYXNlKy5tYXQtbWRjLWJ1dHRvbi1iYXNle21hcmdpbi1sZWZ0OjhweH1bZGlyPXJ0bF0gLm1hdC1kaWFsb2ctYWN0aW9ucyAubWF0LWJ1dHRvbi1iYXNlKy5tYXQtYnV0dG9uLWJhc2UsW2Rpcj1ydGxdIC5tYXQtZGlhbG9nLWFjdGlvbnMgLm1hdC1tZGMtYnV0dG9uLWJhc2UrLm1hdC1tZGMtYnV0dG9uLWJhc2V7bWFyZ2luLWxlZnQ6MDttYXJnaW4tcmlnaHQ6OHB4fVxuIl0sZW5jYXBzdWxhdGlvbjoyLGRhdGE6e2FuaW1hdGlvbjpbdEIuZGlhbG9nQ29udGFpbmVyXX19KTtjb25zdCBvQj10YyhhQik7Ci8qKgogICAgICogQGxpY2Vuc2UKICAgICAqIENvcHlyaWdodCBHb29nbGUgTExDIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCiAgICAgKgogICAgICogVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYW4gTUlULXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKICAgICAqIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUgYXQgaHR0cHM6Ly9hbmd1bGFyLmlvL2xpY2Vuc2UKICAgICAqL2xldCByQj0wO2NsYXNzIGlCe2NvbnN0cnVjdG9yKHQsbixlPSJtYXQtZGlhbG9nLSIrckIrKyl7dGhpcy5fb3ZlcmxheVJlZj10LHRoaXMuX2NvbnRhaW5lckluc3RhbmNlPW4sdGhpcy5pZD1lLHRoaXMuZGlzYWJsZUNsb3NlPXRoaXMuX2NvbnRhaW5lckluc3RhbmNlLl9jb25maWcuZGlzYWJsZUNsb3NlLHRoaXMuX2FmdGVyT3BlbmVkPW5ldyB4LHRoaXMuX2FmdGVyQ2xvc2VkPW5ldyB4LHRoaXMuX2JlZm9yZUNsb3NlZD1uZXcgeCx0aGlzLl9zdGF0ZT0wLG4uX2lkPWUsbi5fYW5pbWF0aW9uU3RhdGVDaGFuZ2VkLnBpcGUoR3QoKHQ9PiJvcGVuZWQiPT09dC5zdGF0ZSkpLFRuKDEpKS5zdWJzY3JpYmUoKCgpPT57dGhpcy5fYWZ0ZXJPcGVuZWQubmV4dCgpLHRoaXMuX2FmdGVyT3BlbmVkLmNvbXBsZXRlKCl9KSksbi5fYW5pbWF0aW9uU3RhdGVDaGFuZ2VkLnBpcGUoR3QoKHQ9PiJjbG9zZWQiPT09dC5zdGF0ZSkpLFRuKDEpKS5zdWJzY3JpYmUoKCgpPT57Y2xlYXJUaW1lb3V0KHRoaXMuX2Nsb3NlRmFsbGJhY2tUaW1lb3V0KSx0aGlzLl9maW5pc2hEaWFsb2dDbG9zZSgpfSkpLHQuZGV0YWNobWVudHMoKS5zdWJzY3JpYmUoKCgpPT57dGhpcy5fYmVmb3JlQ2xvc2VkLm5leHQodGhpcy5fcmVzdWx0KSx0aGlzLl9iZWZvcmVDbG9zZWQuY29tcGxldGUoKSx0aGlzLl9hZnRlckNsb3NlZC5uZXh0KHRoaXMuX3Jlc3VsdCksdGhpcy5fYWZ0ZXJDbG9zZWQuY29tcGxldGUoKSx0aGlzLmNvbXBvbmVudEluc3RhbmNlPW51bGwsdGhpcy5fb3ZlcmxheVJlZi5kaXNwb3NlKCl9KSksdC5rZXlkb3duRXZlbnRzKCkucGlwZShHdCgodD0+dC5rZXlDb2RlPT09QncmJiF0aGlzLmRpc2FibGVDbG9zZSYmIVd3KHQpKSkpLnN1YnNjcmliZSgodD0+e3QucHJldmVudERlZmF1bHQoKSxjQih0aGlzLCJrZXlib2FyZCIpfSkpLHQuYmFja2Ryb3BDbGljaygpLnN1YnNjcmliZSgoKCk9Pnt0aGlzLmRpc2FibGVDbG9zZT90aGlzLl9jb250YWluZXJJbnN0YW5jZS5fcmVjYXB0dXJlRm9jdXMoKTpjQih0aGlzLCJtb3VzZSIpfSkpfWNsb3NlKHQpe3RoaXMuX3Jlc3VsdD10LHRoaXMuX2NvbnRhaW5lckluc3RhbmNlLl9hbmltYXRpb25TdGF0ZUNoYW5nZWQucGlwZShHdCgodD0+ImNsb3NpbmciPT09dC5zdGF0ZSkpLFRuKDEpKS5zdWJzY3JpYmUoKG49Pnt0aGlzLl9iZWZvcmVDbG9zZWQubmV4dCh0KSx0aGlzLl9iZWZvcmVDbG9zZWQuY29tcGxldGUoKSx0aGlzLl9vdmVybGF5UmVmLmRldGFjaEJhY2tkcm9wKCksdGhpcy5fY2xvc2VGYWxsYmFja1RpbWVvdXQ9c2V0VGltZW91dCgoKCk9PnRoaXMuX2ZpbmlzaERpYWxvZ0Nsb3NlKCkpLG4udG90YWxUaW1lKzEwMCl9KSksdGhpcy5fc3RhdGU9MSx0aGlzLl9jb250YWluZXJJbnN0YW5jZS5fc3RhcnRFeGl0QW5pbWF0aW9uKCl9YWZ0ZXJPcGVuZWQoKXtyZXR1cm4gdGhpcy5fYWZ0ZXJPcGVuZWR9YWZ0ZXJDbG9zZWQoKXtyZXR1cm4gdGhpcy5fYWZ0ZXJDbG9zZWR9YmVmb3JlQ2xvc2VkKCl7cmV0dXJuIHRoaXMuX2JlZm9yZUNsb3NlZH1iYWNrZHJvcENsaWNrKCl7cmV0dXJuIHRoaXMuX292ZXJsYXlSZWYuYmFja2Ryb3BDbGljaygpfWtleWRvd25FdmVudHMoKXtyZXR1cm4gdGhpcy5fb3ZlcmxheVJlZi5rZXlkb3duRXZlbnRzKCl9dXBkYXRlUG9zaXRpb24odCl7bGV0IG49dGhpcy5fZ2V0UG9zaXRpb25TdHJhdGVneSgpO3JldHVybiB0JiYodC5sZWZ0fHx0LnJpZ2h0KT90LmxlZnQ/bi5sZWZ0KHQubGVmdCk6bi5yaWdodCh0LnJpZ2h0KTpuLmNlbnRlckhvcml6b250YWxseSgpLHQmJih0LnRvcHx8dC5ib3R0b20pP3QudG9wP24udG9wKHQudG9wKTpuLmJvdHRvbSh0LmJvdHRvbSk6bi5jZW50ZXJWZXJ0aWNhbGx5KCksdGhpcy5fb3ZlcmxheVJlZi51cGRhdGVQb3NpdGlvbigpLHRoaXN9dXBkYXRlU2l6ZSh0PSIiLG49IiIpe3JldHVybiB0aGlzLl9nZXRQb3NpdGlvblN0cmF0ZWd5KCkud2lkdGgodCkuaGVpZ2h0KG4pLHRoaXMuX292ZXJsYXlSZWYudXBkYXRlUG9zaXRpb24oKSx0aGlzfWFkZFBhbmVsQ2xhc3ModCl7cmV0dXJuIHRoaXMuX292ZXJsYXlSZWYuYWRkUGFuZWxDbGFzcyh0KSx0aGlzfXJlbW92ZVBhbmVsQ2xhc3ModCl7cmV0dXJuIHRoaXMuX292ZXJsYXlSZWYucmVtb3ZlUGFuZWxDbGFzcyh0KSx0aGlzfWdldFN0YXRlKCl7cmV0dXJuIHRoaXMuX3N0YXRlfV9maW5pc2hEaWFsb2dDbG9zZSgpe3RoaXMuX3N0YXRlPTIsdGhpcy5fb3ZlcmxheVJlZi5kaXNwb3NlKCl9X2dldFBvc2l0aW9uU3RyYXRlZ3koKXtyZXR1cm4gdGhpcy5fb3ZlcmxheVJlZi5nZXRDb25maWcoKS5wb3NpdGlvblN0cmF0ZWd5fX1mdW5jdGlvbiBjQih0LG4sZSl7cmV0dXJuIHZvaWQgMCE9PXQuX2NvbnRhaW5lckluc3RhbmNlJiYodC5fY29udGFpbmVySW5zdGFuY2UuX2Nsb3NlSW50ZXJhY3Rpb25UeXBlPW4pLHQuY2xvc2UoZSl9Ci8qKgogICAgICogQGxpY2Vuc2UKICAgICAqIENvcHlyaWdodCBHb29nbGUgTExDIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCiAgICAgKgogICAgICogVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYW4gTUlULXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKICAgICAqIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUgYXQgaHR0cHM6Ly9hbmd1bGFyLmlvL2xpY2Vuc2UKICAgICAqL2NvbnN0IHNCPW5ldyBGYSgiTWF0RGlhbG9nRGF0YSIpLGxCPW5ldyBGYSgibWF0LWRpYWxvZy1kZWZhdWx0LW9wdGlvbnMiKSxtQj1uZXcgRmEoIm1hdC1kaWFsb2ctc2Nyb2xsLXN0cmF0ZWd5IiksZEI9e3Byb3ZpZGU6bUIsZGVwczpbaHpdLHVzZUZhY3Rvcnk6ZnVuY3Rpb24gZ0IodCl7cmV0dXJuKCk9PnQuc2Nyb2xsU3RyYXRlZ2llcy5ibG9jaygpfX07Y2xhc3MgcEJ7Y29uc3RydWN0b3IodCxuLGUsYSxvLHIsaSxjLHMpe3RoaXMuX292ZXJsYXk9dCx0aGlzLl9pbmplY3Rvcj1uLHRoaXMuX2RlZmF1bHRPcHRpb25zPWUsdGhpcy5fcGFyZW50RGlhbG9nPWEsdGhpcy5fb3ZlcmxheUNvbnRhaW5lcj1vLHRoaXMuX2RpYWxvZ1JlZkNvbnN0cnVjdG9yPWksdGhpcy5fZGlhbG9nQ29udGFpbmVyVHlwZT1jLHRoaXMuX2RpYWxvZ0RhdGFUb2tlbj1zLHRoaXMuX29wZW5EaWFsb2dzQXRUaGlzTGV2ZWw9W10sdGhpcy5fYWZ0ZXJBbGxDbG9zZWRBdFRoaXNMZXZlbD1uZXcgeCx0aGlzLl9hZnRlck9wZW5lZEF0VGhpc0xldmVsPW5ldyB4LHRoaXMuX2FyaWFIaWRkZW5FbGVtZW50cz1uZXcgTWFwLHRoaXMuYWZ0ZXJBbGxDbG9zZWQ9THQoKCgpPT50aGlzLm9wZW5EaWFsb2dzLmxlbmd0aD90aGlzLl9nZXRBZnRlckFsbENsb3NlZCgpOnRoaXMuX2dldEFmdGVyQWxsQ2xvc2VkKCkucGlwZShjZSh2b2lkIDApKSkpLHRoaXMuX3Njcm9sbFN0cmF0ZWd5PXJ9Z2V0IG9wZW5EaWFsb2dzKCl7cmV0dXJuIHRoaXMuX3BhcmVudERpYWxvZz90aGlzLl9wYXJlbnREaWFsb2cub3BlbkRpYWxvZ3M6dGhpcy5fb3BlbkRpYWxvZ3NBdFRoaXNMZXZlbH1nZXQgYWZ0ZXJPcGVuZWQoKXtyZXR1cm4gdGhpcy5fcGFyZW50RGlhbG9nP3RoaXMuX3BhcmVudERpYWxvZy5hZnRlck9wZW5lZDp0aGlzLl9hZnRlck9wZW5lZEF0VGhpc0xldmVsfV9nZXRBZnRlckFsbENsb3NlZCgpe2NvbnN0IHQ9dGhpcy5fcGFyZW50RGlhbG9nO3JldHVybiB0P3QuX2dldEFmdGVyQWxsQ2xvc2VkKCk6dGhpcy5fYWZ0ZXJBbGxDbG9zZWRBdFRoaXNMZXZlbH1vcGVuKHQsbil7aWYoKG49KGZ1bmN0aW9uIGUodCxuKXtyZXR1cm4gT2JqZWN0LmFzc2lnbihPYmplY3QuYXNzaWduKHt9LG4pLHQpfQovKioKICAgICAqIEBsaWNlbnNlCiAgICAgKiBDb3B5cmlnaHQgR29vZ2xlIExMQyBBbGwgUmlnaHRzIFJlc2VydmVkLgogICAgICoKICAgICAqIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGFuIE1JVC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCiAgICAgKiBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlIGF0IGh0dHBzOi8vYW5ndWxhci5pby9saWNlbnNlCiAgICAgKi8pKG4sdGhpcy5fZGVmYXVsdE9wdGlvbnN8fG5ldyAkSCkpLmlkJiZ0aGlzLmdldERpYWxvZ0J5SWQobi5pZCkmJigidW5kZWZpbmVkIj09dHlwZW9mIG5nRGV2TW9kZXx8bmdEZXZNb2RlKSl0aHJvdyBFcnJvcihgRGlhbG9nIHdpdGggaWQgIiR7bi5pZH0iIGV4aXN0cyBhbHJlYWR5LiBUaGUgZGlhbG9nIGlkIG11c3QgYmUgdW5pcXVlLmApO2NvbnN0IGE9dGhpcy5fY3JlYXRlT3ZlcmxheShuKSxvPXRoaXMuX2F0dGFjaERpYWxvZ0NvbnRhaW5lcihhLG4pLHI9dGhpcy5fYXR0YWNoRGlhbG9nQ29udGVudCh0LG8sYSxuKTtyZXR1cm4gdGhpcy5vcGVuRGlhbG9ncy5sZW5ndGh8fHRoaXMuX2hpZGVOb25EaWFsb2dDb250ZW50RnJvbUFzc2lzdGl2ZVRlY2hub2xvZ3koKSx0aGlzLm9wZW5EaWFsb2dzLnB1c2gociksci5hZnRlckNsb3NlZCgpLnN1YnNjcmliZSgoKCk9PnRoaXMuX3JlbW92ZU9wZW5EaWFsb2cocikpKSx0aGlzLmFmdGVyT3BlbmVkLm5leHQociksby5faW5pdGlhbGl6ZVdpdGhBdHRhY2hlZENvbnRlbnQoKSxyfWNsb3NlQWxsKCl7dGhpcy5fY2xvc2VEaWFsb2dzKHRoaXMub3BlbkRpYWxvZ3MpfWdldERpYWxvZ0J5SWQodCl7cmV0dXJuIHRoaXMub3BlbkRpYWxvZ3MuZmluZCgobj0+bi5pZD09PXQpKX1uZ09uRGVzdHJveSgpe3RoaXMuX2Nsb3NlRGlhbG9ncyh0aGlzLl9vcGVuRGlhbG9nc0F0VGhpc0xldmVsKSx0aGlzLl9hZnRlckFsbENsb3NlZEF0VGhpc0xldmVsLmNvbXBsZXRlKCksdGhpcy5fYWZ0ZXJPcGVuZWRBdFRoaXNMZXZlbC5jb21wbGV0ZSgpfV9jcmVhdGVPdmVybGF5KHQpe2NvbnN0IG49dGhpcy5fZ2V0T3ZlcmxheUNvbmZpZyh0KTtyZXR1cm4gdGhpcy5fb3ZlcmxheS5jcmVhdGUobil9X2dldE92ZXJsYXlDb25maWcodCl7Y29uc3Qgbj1uZXcgWEEoe3Bvc2l0aW9uU3RyYXRlZ3k6dGhpcy5fb3ZlcmxheS5wb3NpdGlvbigpLmdsb2JhbCgpLHNjcm9sbFN0cmF0ZWd5OnQuc2Nyb2xsU3RyYXRlZ3l8fHRoaXMuX3Njcm9sbFN0cmF0ZWd5KCkscGFuZWxDbGFzczp0LnBhbmVsQ2xhc3MsaGFzQmFja2Ryb3A6dC5oYXNCYWNrZHJvcCxkaXJlY3Rpb246dC5kaXJlY3Rpb24sbWluV2lkdGg6dC5taW5XaWR0aCxtaW5IZWlnaHQ6dC5taW5IZWlnaHQsbWF4V2lkdGg6dC5tYXhXaWR0aCxtYXhIZWlnaHQ6dC5tYXhIZWlnaHQsZGlzcG9zZU9uTmF2aWdhdGlvbjp0LmNsb3NlT25OYXZpZ2F0aW9ufSk7cmV0dXJuIHQuYmFja2Ryb3BDbGFzcyYmKG4uYmFja2Ryb3BDbGFzcz10LmJhY2tkcm9wQ2xhc3MpLG59X2F0dGFjaERpYWxvZ0NvbnRhaW5lcih0LG4pe2NvbnN0IGU9eWQuY3JlYXRlKHtwYXJlbnQ6biYmbi52aWV3Q29udGFpbmVyUmVmJiZuLnZpZXdDb250YWluZXJSZWYuaW5qZWN0b3J8fHRoaXMuX2luamVjdG9yLHByb3ZpZGVyczpbe3Byb3ZpZGU6JEgsdXNlVmFsdWU6bn1dfSksYT1uZXcgRUEodGhpcy5fZGlhbG9nQ29udGFpbmVyVHlwZSxuLnZpZXdDb250YWluZXJSZWYsZSxuLmNvbXBvbmVudEZhY3RvcnlSZXNvbHZlcik7cmV0dXJuIHQuYXR0YWNoKGEpLmluc3RhbmNlfV9hdHRhY2hEaWFsb2dDb250ZW50KHQsbixlLGEpe2NvbnN0IG89bmV3IHRoaXMuX2RpYWxvZ1JlZkNvbnN0cnVjdG9yKGUsbixhLmlkKTtpZih0IGluc3RhbmNlb2YgSnUpbi5hdHRhY2hUZW1wbGF0ZVBvcnRhbChuZXcgQUEodCxudWxsLHskaW1wbGljaXQ6YS5kYXRhLGRpYWxvZ1JlZjpvfSkpO2Vsc2V7Y29uc3QgZT10aGlzLl9jcmVhdGVJbmplY3RvcihhLG8sbikscj1uLmF0dGFjaENvbXBvbmVudFBvcnRhbChuZXcgRUEodCxhLnZpZXdDb250YWluZXJSZWYsZSkpO28uY29tcG9uZW50SW5zdGFuY2U9ci5pbnN0YW5jZX1yZXR1cm4gby51cGRhdGVTaXplKGEud2lkdGgsYS5oZWlnaHQpLnVwZGF0ZVBvc2l0aW9uKGEucG9zaXRpb24pLG99X2NyZWF0ZUluamVjdG9yKHQsbixlKXtjb25zdCBhPXQmJnQudmlld0NvbnRhaW5lclJlZiYmdC52aWV3Q29udGFpbmVyUmVmLmluamVjdG9yLG89W3twcm92aWRlOnRoaXMuX2RpYWxvZ0NvbnRhaW5lclR5cGUsdXNlVmFsdWU6ZX0se3Byb3ZpZGU6dGhpcy5fZGlhbG9nRGF0YVRva2VuLHVzZVZhbHVlOnQuZGF0YX0se3Byb3ZpZGU6dGhpcy5fZGlhbG9nUmVmQ29uc3RydWN0b3IsdXNlVmFsdWU6bn1dO3JldHVybiF0LmRpcmVjdGlvbnx8YSYmYS5nZXQoVVMsbnVsbCl8fG8ucHVzaCh7cHJvdmlkZTpVUyx1c2VWYWx1ZTp7dmFsdWU6dC5kaXJlY3Rpb24sY2hhbmdlOlooKX19KSx5ZC5jcmVhdGUoe3BhcmVudDphfHx0aGlzLl9pbmplY3Rvcixwcm92aWRlcnM6b30pfV9yZW1vdmVPcGVuRGlhbG9nKHQpe2NvbnN0IG49dGhpcy5vcGVuRGlhbG9ncy5pbmRleE9mKHQpO24+LTEmJih0aGlzLm9wZW5EaWFsb2dzLnNwbGljZShuLDEpLHRoaXMub3BlbkRpYWxvZ3MubGVuZ3RofHwodGhpcy5fYXJpYUhpZGRlbkVsZW1lbnRzLmZvckVhY2goKCh0LG4pPT57dD9uLnNldEF0dHJpYnV0ZSgiYXJpYS1oaWRkZW4iLHQpOm4ucmVtb3ZlQXR0cmlidXRlKCJhcmlhLWhpZGRlbiIpfSkpLHRoaXMuX2FyaWFIaWRkZW5FbGVtZW50cy5jbGVhcigpLHRoaXMuX2dldEFmdGVyQWxsQ2xvc2VkKCkubmV4dCgpKSl9X2hpZGVOb25EaWFsb2dDb250ZW50RnJvbUFzc2lzdGl2ZVRlY2hub2xvZ3koKXtjb25zdCB0PXRoaXMuX292ZXJsYXlDb250YWluZXIuZ2V0Q29udGFpbmVyRWxlbWVudCgpO2lmKHQucGFyZW50RWxlbWVudCl7Y29uc3Qgbj10LnBhcmVudEVsZW1lbnQuY2hpbGRyZW47Zm9yKGxldCBlPW4ubGVuZ3RoLTE7ZT4tMTtlLS0pe2xldCBhPW5bZV07YT09PXR8fCJTQ1JJUFQiPT09YS5ub2RlTmFtZXx8IlNUWUxFIj09PWEubm9kZU5hbWV8fGEuaGFzQXR0cmlidXRlKCJhcmlhLWxpdmUiKXx8KHRoaXMuX2FyaWFIaWRkZW5FbGVtZW50cy5zZXQoYSxhLmdldEF0dHJpYnV0ZSgiYXJpYS1oaWRkZW4iKSksYS5zZXRBdHRyaWJ1dGUoImFyaWEtaGlkZGVuIiwidHJ1ZSIpKX19fV9jbG9zZURpYWxvZ3ModCl7bGV0IG49dC5sZW5ndGg7Zm9yKDtuLS07KXRbbl0uY2xvc2UoKX19cEIuybVmYWM9ZnVuY3Rpb24gdChuKXtyZXR1cm4gbmV3KG58fHBCKShaZyhoeiksWmcoeWQpLFpnKHZvaWQgMCksWmcodm9pZCAwKSxaZyhyeiksWmcodm9pZCAwKSxaZyhVbSksWmcoVW0pLFpnKEZhKSl9LHBCLsm1ZGlyPXZvKHt0eXBlOnBCfSkscEIuY3RvclBhcmFtZXRlcnM9KCk9Plt7dHlwZTpoen0se3R5cGU6eWR9LHt0eXBlOnZvaWQgMH0se3R5cGU6dm9pZCAwfSx7dHlwZTpyen0se3R5cGU6dm9pZCAwfSx7dHlwZTpVbX0se3R5cGU6VW19LHt0eXBlOkZhfV07Y2xhc3MgYkIgZXh0ZW5kcyBwQntjb25zdHJ1Y3Rvcih0LG4sZSxhLG8scixpKXtzdXBlcih0LG4sYSxyLGksbyxpQixhQixzQil9fWJCLsm1ZmFjPWZ1bmN0aW9uIHQobil7cmV0dXJuIG5ldyhufHxiQikoWmEoaHopLFphKHlkKSxaYShHQyw4KSxaYShsQiw4KSxaYShtQiksWmEoYkIsMTIpLFphKHJ6KSl9LGJCLsm1cHJvdj1XZSh7dG9rZW46YkIsZmFjdG9yeTpiQi7JtWZhY30pLGJCLmN0b3JQYXJhbWV0ZXJzPSgpPT5be3R5cGU6aHp9LHt0eXBlOnlkfSx7dHlwZTpHQyxkZWNvcmF0b3JzOlt7dHlwZTpOZX1dfSx7dHlwZTokSCxkZWNvcmF0b3JzOlt7dHlwZTpOZX0se3R5cGU6SWUsYXJnczpbbEJdfV19LHt0eXBlOnZvaWQgMCxkZWNvcmF0b3JzOlt7dHlwZTpJZSxhcmdzOlttQl19XX0se3R5cGU6YkIsZGVjb3JhdG9yczpbe3R5cGU6TmV9LHt0eXBlOkxlfV19LHt0eXBlOnJ6fV07bGV0IHVCPTA7Y2xhc3MgZkJ7Y29uc3RydWN0b3IodCxuLGUpe3RoaXMuZGlhbG9nUmVmPXQsdGhpcy5fZWxlbWVudFJlZj1uLHRoaXMuX2RpYWxvZz1lLHRoaXMudHlwZT0iYnV0dG9uIn1uZ09uSW5pdCgpe3RoaXMuZGlhbG9nUmVmfHwodGhpcy5kaWFsb2dSZWY9TUIodGhpcy5fZWxlbWVudFJlZix0aGlzLl9kaWFsb2cub3BlbkRpYWxvZ3MpKX1uZ09uQ2hhbmdlcyh0KXtjb25zdCBuPXQuX21hdERpYWxvZ0Nsb3NlfHx0Ll9tYXREaWFsb2dDbG9zZVJlc3VsdDtuJiYodGhpcy5kaWFsb2dSZXN1bHQ9bi5jdXJyZW50VmFsdWUpfV9vbkJ1dHRvbkNsaWNrKHQpe2NCKHRoaXMuZGlhbG9nUmVmLDA9PT10LnNjcmVlblgmJjA9PT10LnNjcmVlblk/ImtleWJvYXJkIjoibW91c2UiLHRoaXMuZGlhbG9nUmVzdWx0KX19ZkIuybVmYWM9ZnVuY3Rpb24gdChuKXtyZXR1cm4gbmV3KG58fGZCKShaZyhpQiw4KSxaZyh4dSksWmcoYkIpKX0sZkIuybVkaXI9dm8oe3R5cGU6ZkIsc2VsZWN0b3JzOltbIiIsIm1hdC1kaWFsb2ctY2xvc2UiLCIiXSxbIiIsIm1hdERpYWxvZ0Nsb3NlIiwiIl1dLGhvc3RWYXJzOjIsaG9zdEJpbmRpbmdzOmZ1bmN0aW9uIHQobixlKXsxJm4mJmNwKCJjbGljayIsKGZ1bmN0aW9uIHQobil7cmV0dXJuIGUuX29uQnV0dG9uQ2xpY2sobil9KSksMiZuJiZOZygiYXJpYS1sYWJlbCIsZS5hcmlhTGFiZWx8fG51bGwpKCJ0eXBlIixlLnR5cGUpfSxpbnB1dHM6e3R5cGU6InR5cGUiLGRpYWxvZ1Jlc3VsdDpbIm1hdC1kaWFsb2ctY2xvc2UiLCJkaWFsb2dSZXN1bHQiXSxhcmlhTGFiZWw6WyJhcmlhLWxhYmVsIiwiYXJpYUxhYmVsIl0sX21hdERpYWxvZ0Nsb3NlOlsibWF0RGlhbG9nQ2xvc2UiLCJfbWF0RGlhbG9nQ2xvc2UiXX0sZXhwb3J0QXM6WyJtYXREaWFsb2dDbG9zZSJdLGZlYXR1cmVzOltwcl19KSxmQi5jdG9yUGFyYW1ldGVycz0oKT0+W3t0eXBlOmlCLGRlY29yYXRvcnM6W3t0eXBlOk5lfV19LHt0eXBlOnh1fSx7dHlwZTpiQn1dLGZCLnByb3BEZWNvcmF0b3JzPXthcmlhTGFiZWw6W3t0eXBlOmZfLGFyZ3M6WyJhcmlhLWxhYmVsIl19XSx0eXBlOlt7dHlwZTpmX31dLGRpYWxvZ1Jlc3VsdDpbe3R5cGU6Zl8sYXJnczpbIm1hdC1kaWFsb2ctY2xvc2UiXX1dLF9tYXREaWFsb2dDbG9zZTpbe3R5cGU6Zl8sYXJnczpbIm1hdERpYWxvZ0Nsb3NlIl19XX07Y2xhc3MgaEJ7Y29uc3RydWN0b3IodCxuLGUpe3RoaXMuX2RpYWxvZ1JlZj10LHRoaXMuX2VsZW1lbnRSZWY9bix0aGlzLl9kaWFsb2c9ZSx0aGlzLmlkPSJtYXQtZGlhbG9nLXRpdGxlLSIrdUIrK31uZ09uSW5pdCgpe3RoaXMuX2RpYWxvZ1JlZnx8KHRoaXMuX2RpYWxvZ1JlZj1NQih0aGlzLl9lbGVtZW50UmVmLHRoaXMuX2RpYWxvZy5vcGVuRGlhbG9ncykpLHRoaXMuX2RpYWxvZ1JlZiYmUHJvbWlzZS5yZXNvbHZlKCkudGhlbigoKCk9Pntjb25zdCB0PXRoaXMuX2RpYWxvZ1JlZi5fY29udGFpbmVySW5zdGFuY2U7dCYmIXQuX2FyaWFMYWJlbGxlZEJ5JiYodC5fYXJpYUxhYmVsbGVkQnk9dGhpcy5pZCl9KSl9fWhCLsm1ZmFjPWZ1bmN0aW9uIHQobil7cmV0dXJuIG5ldyhufHxoQikoWmcoaUIsOCksWmcoeHUpLFpnKGJCKSl9LGhCLsm1ZGlyPXZvKHt0eXBlOmhCLHNlbGVjdG9yczpbWyIiLCJtYXQtZGlhbG9nLXRpdGxlIiwiIl0sWyIiLCJtYXREaWFsb2dUaXRsZSIsIiJdXSxob3N0QXR0cnM6WzEsIm1hdC1kaWFsb2ctdGl0bGUiXSxob3N0VmFyczoxLGhvc3RCaW5kaW5nczpmdW5jdGlvbiB0KG4sZSl7MiZuJiZlYigiaWQiLGUuaWQpfSxpbnB1dHM6e2lkOiJpZCJ9LGV4cG9ydEFzOlsibWF0RGlhbG9nVGl0bGUiXX0pLGhCLmN0b3JQYXJhbWV0ZXJzPSgpPT5be3R5cGU6aUIsZGVjb3JhdG9yczpbe3R5cGU6TmV9XX0se3R5cGU6eHV9LHt0eXBlOmJCfV0saEIucHJvcERlY29yYXRvcnM9e2lkOlt7dHlwZTpmX31dfTtjbGFzcyBfQnt9X0IuybVmYWM9ZnVuY3Rpb24gdChuKXtyZXR1cm4gbmV3KG58fF9CKX0sX0IuybVkaXI9dm8oe3R5cGU6X0Isc2VsZWN0b3JzOltbIiIsIm1hdC1kaWFsb2ctY29udGVudCIsIiJdLFsibWF0LWRpYWxvZy1jb250ZW50Il0sWyIiLCJtYXREaWFsb2dDb250ZW50IiwiIl1dLGhvc3RBdHRyczpbMSwibWF0LWRpYWxvZy1jb250ZW50Il19KTtjbGFzcyBDQnt9ZnVuY3Rpb24gTUIodCxuKXtsZXQgZT10Lm5hdGl2ZUVsZW1lbnQucGFyZW50RWxlbWVudDtmb3IoO2UmJiFlLmNsYXNzTGlzdC5jb250YWlucygibWF0LWRpYWxvZy1jb250YWluZXIiKTspZT1lLnBhcmVudEVsZW1lbnQ7cmV0dXJuIGU/bi5maW5kKCh0PT50LmlkPT09ZS5pZCkpOm51bGx9Ci8qKgogICAgICogQGxpY2Vuc2UKICAgICAqIENvcHlyaWdodCBHb29nbGUgTExDIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCiAgICAgKgogICAgICogVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYW4gTUlULXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKICAgICAqIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUgYXQgaHR0cHM6Ly9hbmd1bGFyLmlvL2xpY2Vuc2UKICAgICAqL0NCLsm1ZmFjPWZ1bmN0aW9uIHQobil7cmV0dXJuIG5ldyhufHxDQil9LENCLsm1ZGlyPXZvKHt0eXBlOkNCLHNlbGVjdG9yczpbWyIiLCJtYXQtZGlhbG9nLWFjdGlvbnMiLCIiXSxbIm1hdC1kaWFsb2ctYWN0aW9ucyJdLFsiIiwibWF0RGlhbG9nQWN0aW9ucyIsIiJdXSxob3N0QXR0cnM6WzEsIm1hdC1kaWFsb2ctYWN0aW9ucyJdfSk7Y2xhc3MgT0J7fU9CLsm1bW9kPXhvKHt0eXBlOk9CfSksT0IuybVpbmo9R2Uoe2ZhY3Rvcnk6ZnVuY3Rpb24gdChuKXtyZXR1cm4gbmV3KG58fE9CKX0scHJvdmlkZXJzOltiQixkQl0saW1wb3J0czpbW3l6LEJBLHRFXSx0RV19KSwoInVuZGVmaW5lZCI9PXR5cGVvZiBuZ0ppdE1vZGV8fG5nSml0TW9kZSkmJnlvKE9CLHtkZWNsYXJhdGlvbnM6ZnVuY3Rpb24oKXtyZXR1cm5bYUIsZkIsaEIsQ0IsX0JdfSxpbXBvcnRzOmZ1bmN0aW9uKCl7cmV0dXJuW3l6LEJBLHRFXX0sZXhwb3J0czpmdW5jdGlvbigpe3JldHVyblthQixmQixoQixfQixDQix0RV19fSk7Y2xhc3MgUEJ7Y29uc3RydWN0b3IodCxuKXt0aGlzLl9kb2N1bWVudD1uO2NvbnN0IGU9dGhpcy5fdGV4dGFyZWE9dGhpcy5fZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgidGV4dGFyZWEiKSxhPWUuc3R5bGU7YS5wb3NpdGlvbj0iZml4ZWQiLGEudG9wPWEub3BhY2l0eT0iMCIsYS5sZWZ0PSItOTk5ZW0iLGUuc2V0QXR0cmlidXRlKCJhcmlhLWhpZGRlbiIsInRydWUiKSxlLnZhbHVlPXQsdGhpcy5fZG9jdW1lbnQuYm9keS5hcHBlbmRDaGlsZChlKX1jb3B5KCl7Y29uc3QgdD10aGlzLl90ZXh0YXJlYTtsZXQgbj0hMTt0cnl7aWYodCl7Y29uc3QgZT10aGlzLl9kb2N1bWVudC5hY3RpdmVFbGVtZW50O3Quc2VsZWN0KCksdC5zZXRTZWxlY3Rpb25SYW5nZSgwLHQudmFsdWUubGVuZ3RoKSxuPXRoaXMuX2RvY3VtZW50LmV4ZWNDb21tYW5kKCJjb3B5IiksZSYmZS5mb2N1cygpfX1jYXRjaCh0KXt9cmV0dXJuIG59ZGVzdHJveSgpe2NvbnN0IHQ9dGhpcy5fdGV4dGFyZWE7dCYmKHQucGFyZW50Tm9kZSYmdC5wYXJlbnROb2RlLnJlbW92ZUNoaWxkKHQpLHRoaXMuX3RleHRhcmVhPXZvaWQgMCl9fQovKioKICAgICAqIEBsaWNlbnNlCiAgICAgKiBDb3B5cmlnaHQgR29vZ2xlIExMQyBBbGwgUmlnaHRzIFJlc2VydmVkLgogICAgICoKICAgICAqIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGFuIE1JVC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCiAgICAgKiBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlIGF0IGh0dHBzOi8vYW5ndWxhci5pby9saWNlbnNlCiAgICAgKi9jbGFzcyB4Qntjb25zdHJ1Y3Rvcih0KXt0aGlzLl9kb2N1bWVudD10fWNvcHkodCl7Y29uc3Qgbj10aGlzLmJlZ2luQ29weSh0KSxlPW4uY29weSgpO3JldHVybiBuLmRlc3Ryb3koKSxlfWJlZ2luQ29weSh0KXtyZXR1cm4gbmV3IFBCKHQsdGhpcy5fZG9jdW1lbnQpfX14Qi7JtWZhYz1mdW5jdGlvbiB0KG4pe3JldHVybiBuZXcobnx8eEIpKFphKHpDKSl9LHhCLsm1cHJvdj1XZSh7ZmFjdG9yeTpmdW5jdGlvbiB0KCl7cmV0dXJuIG5ldyB4QihaYSh6QykpfSx0b2tlbjp4Qixwcm92aWRlZEluOiJyb290In0pLHhCLmN0b3JQYXJhbWV0ZXJzPSgpPT5be3R5cGU6dm9pZCAwLGRlY29yYXRvcnM6W3t0eXBlOkllLGFyZ3M6W3pDXX1dfV0KLyoqCiAgICAgKiBAbGljZW5zZQogICAgICogQ29weXJpZ2h0IEdvb2dsZSBMTEMgQWxsIFJpZ2h0cyBSZXNlcnZlZC4KICAgICAqCiAgICAgKiBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhbiBNSVQtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQogICAgICogZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZSBhdCBodHRwczovL2FuZ3VsYXIuaW8vbGljZW5zZQogICAgICovO2NvbnN0IHlCPW5ldyBGYSgiQ0tEX0NPUFlfVE9fQ0xJUEJPQVJEX0NPTkZJRyIpO2NsYXNzIGtCe2NvbnN0cnVjdG9yKHQsbixlKXt0aGlzLl9jbGlwYm9hcmQ9dCx0aGlzLl9uZ1pvbmU9bix0aGlzLnRleHQ9IiIsdGhpcy5hdHRlbXB0cz0xLHRoaXMuY29waWVkPW5ldyBFZix0aGlzLl9wZW5kaW5nPW5ldyBTZXQsZSYmbnVsbCE9ZS5hdHRlbXB0cyYmKHRoaXMuYXR0ZW1wdHM9ZS5hdHRlbXB0cyl9Y29weSh0PXRoaXMuYXR0ZW1wdHMpe2lmKHQ+MSl7bGV0IG49dDtjb25zdCBlPXRoaXMuX2NsaXBib2FyZC5iZWdpbkNvcHkodGhpcy50ZXh0KTt0aGlzLl9wZW5kaW5nLmFkZChlKTtjb25zdCBhPSgpPT57Y29uc3QgdD1lLmNvcHkoKTt0fHwhLS1ufHx0aGlzLl9kZXN0cm95ZWQ/KHRoaXMuX2N1cnJlbnRUaW1lb3V0PW51bGwsdGhpcy5fcGVuZGluZy5kZWxldGUoZSksZS5kZXN0cm95KCksdGhpcy5jb3BpZWQuZW1pdCh0KSk6dGhpcy5fY3VycmVudFRpbWVvdXQ9dGhpcy5fbmdab25lLnJ1bk91dHNpZGVBbmd1bGFyKCgoKT0+c2V0VGltZW91dChhLDEpKSl9O2EoKX1lbHNlIHRoaXMuY29waWVkLmVtaXQodGhpcy5fY2xpcGJvYXJkLmNvcHkodGhpcy50ZXh0KSl9bmdPbkRlc3Ryb3koKXt0aGlzLl9jdXJyZW50VGltZW91dCYmY2xlYXJUaW1lb3V0KHRoaXMuX2N1cnJlbnRUaW1lb3V0KSx0aGlzLl9wZW5kaW5nLmZvckVhY2goKHQ9PnQuZGVzdHJveSgpKSksdGhpcy5fcGVuZGluZy5jbGVhcigpLHRoaXMuX2Rlc3Ryb3llZD0hMH19a0IuybVmYWM9ZnVuY3Rpb24gdChuKXtyZXR1cm4gbmV3KG58fGtCKShaZyh4QiksWmcoSl8pLFpnKHlCLDgpKX0sa0IuybVkaXI9dm8oe3R5cGU6a0Isc2VsZWN0b3JzOltbIiIsImNka0NvcHlUb0NsaXBib2FyZCIsIiJdXSxob3N0QmluZGluZ3M6ZnVuY3Rpb24gdChuLGUpezEmbiYmY3AoImNsaWNrIiwoZnVuY3Rpb24gdCgpe3JldHVybiBlLmNvcHkoKX0pKX0saW5wdXRzOnt0ZXh0OlsiY2RrQ29weVRvQ2xpcGJvYXJkIiwidGV4dCJdLGF0dGVtcHRzOlsiY2RrQ29weVRvQ2xpcGJvYXJkQXR0ZW1wdHMiLCJhdHRlbXB0cyJdfSxvdXRwdXRzOntjb3BpZWQ6ImNka0NvcHlUb0NsaXBib2FyZENvcGllZCJ9fSksa0IuY3RvclBhcmFtZXRlcnM9KCk9Plt7dHlwZTp4Qn0se3R5cGU6Sl99LHt0eXBlOnZvaWQgMCxkZWNvcmF0b3JzOlt7dHlwZTpOZX0se3R5cGU6SWUsYXJnczpbeUJdfV19XSxrQi5wcm9wRGVjb3JhdG9ycz17dGV4dDpbe3R5cGU6Zl8sYXJnczpbImNka0NvcHlUb0NsaXBib2FyZCJdfV0sYXR0ZW1wdHM6W3t0eXBlOmZfLGFyZ3M6WyJjZGtDb3B5VG9DbGlwYm9hcmRBdHRlbXB0cyJdfV0sY29waWVkOlt7dHlwZTpoXyxhcmdzOlsiY2RrQ29weVRvQ2xpcGJvYXJkQ29waWVkIl19XX07Ci8qKgogICAgICogQGxpY2Vuc2UKICAgICAqIENvcHlyaWdodCBHb29nbGUgTExDIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCiAgICAgKgogICAgICogVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYW4gTUlULXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKICAgICAqIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUgYXQgaHR0cHM6Ly9hbmd1bGFyLmlvL2xpY2Vuc2UKICAgICAqLwpjbGFzcyB2Qnt9ZnVuY3Rpb24gd0IodCl7cmV0dXJuIEVycm9yKGBVbmFibGUgdG8gZmluZCBpY29uIHdpdGggdGhlIG5hbWUgIiR7dH0iYCl9ZnVuY3Rpb24gU0IodCl7cmV0dXJuIEVycm9yKGBUaGUgVVJMIHByb3ZpZGVkIHRvIE1hdEljb25SZWdpc3RyeSB3YXMgbm90IHRydXN0ZWQgYXMgYSByZXNvdXJjZSBVUkwgdmlhIEFuZ3VsYXIncyBEb21TYW5pdGl6ZXIuIEF0dGVtcHRlZCBVUkwgd2FzICIke3R9Ii5gKX1mdW5jdGlvbiBFQih0KXtyZXR1cm4gRXJyb3IoYFRoZSBsaXRlcmFsIHByb3ZpZGVkIHRvIE1hdEljb25SZWdpc3RyeSB3YXMgbm90IHRydXN0ZWQgYXMgc2FmZSBIVE1MIGJ5IEFuZ3VsYXIncyBEb21TYW5pdGl6ZXIuIEF0dGVtcHRlZCBsaXRlcmFsIHdhcyAiJHt0fSIuYCl9dkIuybVtb2Q9eG8oe3R5cGU6dkJ9KSx2Qi7JtWluaj1HZSh7ZmFjdG9yeTpmdW5jdGlvbiB0KG4pe3JldHVybiBuZXcobnx8dkIpfX0pLCgidW5kZWZpbmVkIj09dHlwZW9mIG5nSml0TW9kZXx8bmdKaXRNb2RlKSYmeW8odkIse2RlY2xhcmF0aW9uczpba0JdLGV4cG9ydHM6W2tCXX0pO2NsYXNzIEFCe2NvbnN0cnVjdG9yKHQsbixlKXt0aGlzLnVybD10LHRoaXMuc3ZnVGV4dD1uLHRoaXMub3B0aW9ucz1lfX1jbGFzcyB6Qntjb25zdHJ1Y3Rvcih0LG4sZSxhKXt0aGlzLl9odHRwQ2xpZW50PXQsdGhpcy5fc2FuaXRpemVyPW4sdGhpcy5fZXJyb3JIYW5kbGVyPWEsdGhpcy5fc3ZnSWNvbkNvbmZpZ3M9bmV3IE1hcCx0aGlzLl9pY29uU2V0Q29uZmlncz1uZXcgTWFwLHRoaXMuX2NhY2hlZEljb25zQnlVcmw9bmV3IE1hcCx0aGlzLl9pblByb2dyZXNzVXJsRmV0Y2hlcz1uZXcgTWFwLHRoaXMuX2ZvbnRDc3NDbGFzc2VzQnlBbGlhcz1uZXcgTWFwLHRoaXMuX2RlZmF1bHRGb250U2V0Q2xhc3M9Im1hdGVyaWFsLWljb25zIix0aGlzLl9kb2N1bWVudD1lfWFkZFN2Z0ljb24odCxuLGUpe3JldHVybiB0aGlzLmFkZFN2Z0ljb25Jbk5hbWVzcGFjZSgiIix0LG4sZSl9YWRkU3ZnSWNvbkxpdGVyYWwodCxuLGUpe3JldHVybiB0aGlzLmFkZFN2Z0ljb25MaXRlcmFsSW5OYW1lc3BhY2UoIiIsdCxuLGUpfWFkZFN2Z0ljb25Jbk5hbWVzcGFjZSh0LG4sZSxhKXtyZXR1cm4gdGhpcy5fYWRkU3ZnSWNvbkNvbmZpZyh0LG4sbmV3IEFCKGUsbnVsbCxhKSl9YWRkU3ZnSWNvbkxpdGVyYWxJbk5hbWVzcGFjZSh0LG4sZSxhKXtjb25zdCBvPXRoaXMuX3Nhbml0aXplci5zYW5pdGl6ZShaYy5IVE1MLGUpO2lmKCFvKXRocm93IEVCKGUpO3JldHVybiB0aGlzLl9hZGRTdmdJY29uQ29uZmlnKHQsbixuZXcgQUIoIiIsbyxhKSl9YWRkU3ZnSWNvblNldCh0LG4pe3JldHVybiB0aGlzLmFkZFN2Z0ljb25TZXRJbk5hbWVzcGFjZSgiIix0LG4pfWFkZFN2Z0ljb25TZXRMaXRlcmFsKHQsbil7cmV0dXJuIHRoaXMuYWRkU3ZnSWNvblNldExpdGVyYWxJbk5hbWVzcGFjZSgiIix0LG4pfWFkZFN2Z0ljb25TZXRJbk5hbWVzcGFjZSh0LG4sZSl7cmV0dXJuIHRoaXMuX2FkZFN2Z0ljb25TZXRDb25maWcodCxuZXcgQUIobixudWxsLGUpKX1hZGRTdmdJY29uU2V0TGl0ZXJhbEluTmFtZXNwYWNlKHQsbixlKXtjb25zdCBhPXRoaXMuX3Nhbml0aXplci5zYW5pdGl6ZShaYy5IVE1MLG4pO2lmKCFhKXRocm93IEVCKG4pO3JldHVybiB0aGlzLl9hZGRTdmdJY29uU2V0Q29uZmlnKHQsbmV3IEFCKCIiLGEsZSkpfXJlZ2lzdGVyRm9udENsYXNzQWxpYXModCxuPXQpe3JldHVybiB0aGlzLl9mb250Q3NzQ2xhc3Nlc0J5QWxpYXMuc2V0KHQsbiksdGhpc31jbGFzc05hbWVGb3JGb250QWxpYXModCl7cmV0dXJuIHRoaXMuX2ZvbnRDc3NDbGFzc2VzQnlBbGlhcy5nZXQodCl8fHR9c2V0RGVmYXVsdEZvbnRTZXRDbGFzcyh0KXtyZXR1cm4gdGhpcy5fZGVmYXVsdEZvbnRTZXRDbGFzcz10LHRoaXN9Z2V0RGVmYXVsdEZvbnRTZXRDbGFzcygpe3JldHVybiB0aGlzLl9kZWZhdWx0Rm9udFNldENsYXNzfWdldFN2Z0ljb25Gcm9tVXJsKHQpe2NvbnN0IG49dGhpcy5fc2FuaXRpemVyLnNhbml0aXplKFpjLlJFU09VUkNFX1VSTCx0KTtpZighbil0aHJvdyBTQih0KTtjb25zdCBlPXRoaXMuX2NhY2hlZEljb25zQnlVcmwuZ2V0KG4pO3JldHVybiBlP1ooUkIoZSkpOnRoaXMuX2xvYWRTdmdJY29uRnJvbUNvbmZpZyhuZXcgQUIodCxudWxsKSkucGlwZShoZSgodD0+dGhpcy5fY2FjaGVkSWNvbnNCeVVybC5zZXQobix0KSkpLGZ0KCh0PT5SQih0KSkpKX1nZXROYW1lZFN2Z0ljb24odCxuPSIiKXtjb25zdCBlPVRCKG4sdCksYT10aGlzLl9zdmdJY29uQ29uZmlncy5nZXQoZSk7aWYoYSlyZXR1cm4gdGhpcy5fZ2V0U3ZnRnJvbUNvbmZpZyhhKTtjb25zdCBvPXRoaXMuX2ljb25TZXRDb25maWdzLmdldChuKTtyZXR1cm4gbz90aGlzLl9nZXRTdmdGcm9tSWNvblNldENvbmZpZ3ModCxvKTpYKHdCKGUpKX1uZ09uRGVzdHJveSgpe3RoaXMuX3N2Z0ljb25Db25maWdzLmNsZWFyKCksdGhpcy5faWNvblNldENvbmZpZ3MuY2xlYXIoKSx0aGlzLl9jYWNoZWRJY29uc0J5VXJsLmNsZWFyKCl9X2dldFN2Z0Zyb21Db25maWcodCl7cmV0dXJuIHQuc3ZnVGV4dD9aKFJCKHRoaXMuX3N2Z0VsZW1lbnRGcm9tQ29uZmlnKHQpKSk6dGhpcy5fbG9hZFN2Z0ljb25Gcm9tQ29uZmlnKHQpLnBpcGUoZnQoKHQ9PlJCKHQpKSkpfV9nZXRTdmdGcm9tSWNvblNldENvbmZpZ3ModCxuKXtjb25zdCBlPXRoaXMuX2V4dHJhY3RJY29uV2l0aE5hbWVGcm9tQW55U2V0KHQsbik7cmV0dXJuIGU/WihlKTpIdChuLmZpbHRlcigodD0+IXQuc3ZnVGV4dCkpLm1hcCgodD0+dGhpcy5fbG9hZFN2Z0ljb25TZXRGcm9tQ29uZmlnKHQpLnBpcGUob24oKG49Pntjb25zdCBlPXRoaXMuX3Nhbml0aXplci5zYW5pdGl6ZShaYy5SRVNPVVJDRV9VUkwsdC51cmwpO3JldHVybiB0aGlzLl9lcnJvckhhbmRsZXIuaGFuZGxlRXJyb3IobmV3IEVycm9yKGBMb2FkaW5nIGljb24gc2V0IFVSTDogJHtlfSBmYWlsZWQ6ICR7bi5tZXNzYWdlfWApKSxaKG51bGwpfSkpKSkpKS5waXBlKGZ0KCgoKT0+e2NvbnN0IGU9dGhpcy5fZXh0cmFjdEljb25XaXRoTmFtZUZyb21BbnlTZXQodCxuKTtpZighZSl0aHJvdyB3Qih0KTtyZXR1cm4gZX0pKSl9X2V4dHJhY3RJY29uV2l0aE5hbWVGcm9tQW55U2V0KHQsbil7Zm9yKGxldCBlPW4ubGVuZ3RoLTE7ZT49MDtlLS0pe2NvbnN0IGE9bltlXTtpZihhLnN2Z1RleHQmJmEuc3ZnVGV4dC5pbmRleE9mKHQpPi0xKXtjb25zdCBuPXRoaXMuX3N2Z0VsZW1lbnRGcm9tQ29uZmlnKGEpLGU9dGhpcy5fZXh0cmFjdFN2Z0ljb25Gcm9tU2V0KG4sdCxhLm9wdGlvbnMpO2lmKGUpcmV0dXJuIGV9fXJldHVybiBudWxsfV9sb2FkU3ZnSWNvbkZyb21Db25maWcodCl7cmV0dXJuIHRoaXMuX2ZldGNoSWNvbih0KS5waXBlKGhlKChuPT50LnN2Z1RleHQ9bikpLGZ0KCgoKT0+dGhpcy5fc3ZnRWxlbWVudEZyb21Db25maWcodCkpKSl9X2xvYWRTdmdJY29uU2V0RnJvbUNvbmZpZyh0KXtyZXR1cm4gdC5zdmdUZXh0P1oobnVsbCk6dGhpcy5fZmV0Y2hJY29uKHQpLnBpcGUoaGUoKG49PnQuc3ZnVGV4dD1uKSkpfV9leHRyYWN0U3ZnSWNvbkZyb21TZXQodCxuLGUpe2NvbnN0IGE9dC5xdWVyeVNlbGVjdG9yKGBbaWQ9IiR7bn0iXWApO2lmKCFhKXJldHVybiBudWxsO2NvbnN0IG89YS5jbG9uZU5vZGUoITApO2lmKG8ucmVtb3ZlQXR0cmlidXRlKCJpZCIpLCJzdmciPT09by5ub2RlTmFtZS50b0xvd2VyQ2FzZSgpKXJldHVybiB0aGlzLl9zZXRTdmdBdHRyaWJ1dGVzKG8sZSk7aWYoInN5bWJvbCI9PT1vLm5vZGVOYW1lLnRvTG93ZXJDYXNlKCkpcmV0dXJuIHRoaXMuX3NldFN2Z0F0dHJpYnV0ZXModGhpcy5fdG9TdmdFbGVtZW50KG8pLGUpO2NvbnN0IHI9dGhpcy5fc3ZnRWxlbWVudEZyb21TdHJpbmcoIjxzdmc+PC9zdmc+Iik7cmV0dXJuIHIuYXBwZW5kQ2hpbGQobyksdGhpcy5fc2V0U3ZnQXR0cmlidXRlcyhyLGUpfV9zdmdFbGVtZW50RnJvbVN0cmluZyh0KXtjb25zdCBuPXRoaXMuX2RvY3VtZW50LmNyZWF0ZUVsZW1lbnQoIkRJViIpO24uaW5uZXJIVE1MPXQ7Y29uc3QgZT1uLnF1ZXJ5U2VsZWN0b3IoInN2ZyIpO2lmKCFlKXRocm93IEVycm9yKCI8c3ZnPiB0YWcgbm90IGZvdW5kIik7cmV0dXJuIGV9X3RvU3ZnRWxlbWVudCh0KXtjb25zdCBuPXRoaXMuX3N2Z0VsZW1lbnRGcm9tU3RyaW5nKCI8c3ZnPjwvc3ZnPiIpLGU9dC5hdHRyaWJ1dGVzO2ZvcihsZXQgdD0wO3Q8ZS5sZW5ndGg7dCsrKXtjb25zdHtuYW1lOmEsdmFsdWU6b309ZVt0XTsiaWQiIT09YSYmbi5zZXRBdHRyaWJ1dGUoYSxvKX1mb3IobGV0IGU9MDtlPHQuY2hpbGROb2Rlcy5sZW5ndGg7ZSsrKXQuY2hpbGROb2Rlc1tlXS5ub2RlVHlwZT09PXRoaXMuX2RvY3VtZW50LkVMRU1FTlRfTk9ERSYmbi5hcHBlbmRDaGlsZCh0LmNoaWxkTm9kZXNbZV0uY2xvbmVOb2RlKCEwKSk7cmV0dXJuIG59X3NldFN2Z0F0dHJpYnV0ZXModCxuKXtyZXR1cm4gdC5zZXRBdHRyaWJ1dGUoImZpdCIsIiIpLHQuc2V0QXR0cmlidXRlKCJoZWlnaHQiLCIxMDAlIiksdC5zZXRBdHRyaWJ1dGUoIndpZHRoIiwiMTAwJSIpLHQuc2V0QXR0cmlidXRlKCJwcmVzZXJ2ZUFzcGVjdFJhdGlvIiwieE1pZFlNaWQgbWVldCIpLHQuc2V0QXR0cmlidXRlKCJmb2N1c2FibGUiLCJmYWxzZSIpLG4mJm4udmlld0JveCYmdC5zZXRBdHRyaWJ1dGUoInZpZXdCb3giLG4udmlld0JveCksdH1fZmV0Y2hJY29uKHQpe3ZhciBuO2NvbnN0e3VybDplLG9wdGlvbnM6YX09dCxvPW51bGwhPT0obj1udWxsPT1hP3ZvaWQgMDphLndpdGhDcmVkZW50aWFscykmJnZvaWQgMCE9PW4mJm47aWYoIXRoaXMuX2h0dHBDbGllbnQpdGhyb3coZnVuY3Rpb24gcigpe3JldHVybiBFcnJvcigiQ291bGQgbm90IGZpbmQgSHR0cENsaWVudCBwcm92aWRlciBmb3IgdXNlIHdpdGggQW5ndWxhciBNYXRlcmlhbCBpY29ucy4gUGxlYXNlIGluY2x1ZGUgdGhlIEh0dHBDbGllbnRNb2R1bGUgZnJvbSBAYW5ndWxhci9jb21tb24vaHR0cCBpbiB5b3VyIGFwcCBpbXBvcnRzLiIpfSkoKTtpZihudWxsPT1lKXRocm93IEVycm9yKGBDYW5ub3QgZmV0Y2ggaWNvbiBmcm9tIFVSTCAiJHtlfSIuYCk7Y29uc3QgaT10aGlzLl9zYW5pdGl6ZXIuc2FuaXRpemUoWmMuUkVTT1VSQ0VfVVJMLGUpO2lmKCFpKXRocm93IFNCKGUpO2NvbnN0IGM9dGhpcy5faW5Qcm9ncmVzc1VybEZldGNoZXMuZ2V0KGkpO2lmKGMpcmV0dXJuIGM7Y29uc3Qgcz10aGlzLl9odHRwQ2xpZW50LmdldChpLHtyZXNwb25zZVR5cGU6InRleHQiLHdpdGhDcmVkZW50aWFsczpvfSkucGlwZSgoZnVuY3Rpb24gbCh0KXtyZXR1cm4gbj0+bi5saWZ0KG5ldyBIbih0KSl9KSgoKCk9PnRoaXMuX2luUHJvZ3Jlc3NVcmxGZXRjaGVzLmRlbGV0ZShpKSkpLGVlKCkpO3JldHVybiB0aGlzLl9pblByb2dyZXNzVXJsRmV0Y2hlcy5zZXQoaSxzKSxzfV9hZGRTdmdJY29uQ29uZmlnKHQsbixlKXtyZXR1cm4gdGhpcy5fc3ZnSWNvbkNvbmZpZ3Muc2V0KFRCKHQsbiksZSksdGhpc31fYWRkU3ZnSWNvblNldENvbmZpZyh0LG4pe2NvbnN0IGU9dGhpcy5faWNvblNldENvbmZpZ3MuZ2V0KHQpO3JldHVybiBlP2UucHVzaChuKTp0aGlzLl9pY29uU2V0Q29uZmlncy5zZXQodCxbbl0pLHRoaXN9X3N2Z0VsZW1lbnRGcm9tQ29uZmlnKHQpe2lmKCF0LnN2Z0VsZW1lbnQpe2NvbnN0IG49dGhpcy5fc3ZnRWxlbWVudEZyb21TdHJpbmcodC5zdmdUZXh0KTt0aGlzLl9zZXRTdmdBdHRyaWJ1dGVzKG4sdC5vcHRpb25zKSx0LnN2Z0VsZW1lbnQ9bn1yZXR1cm4gdC5zdmdFbGVtZW50fX1mdW5jdGlvbiBSQih0KXtyZXR1cm4gdC5jbG9uZU5vZGUoITApfWZ1bmN0aW9uIFRCKHQsbil7cmV0dXJuIHQrIjoiK259Ci8qKgogICAgICogQGxpY2Vuc2UKICAgICAqIENvcHlyaWdodCBHb29nbGUgTExDIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCiAgICAgKgogICAgICogVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYW4gTUlULXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKICAgICAqIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUgYXQgaHR0cHM6Ly9hbmd1bGFyLmlvL2xpY2Vuc2UKICAgICAqL3pCLsm1ZmFjPWZ1bmN0aW9uIHQobil7cmV0dXJuIG5ldyhufHx6QikoWmEoSVIsOCksWmEoc1ApLFphKHpDLDgpLFphKG9jKSl9LHpCLsm1cHJvdj1XZSh7ZmFjdG9yeTpmdW5jdGlvbiB0KCl7cmV0dXJuIG5ldyB6QihaYShJUiw4KSxaYShzUCksWmEoekMsOCksWmEob2MpKX0sdG9rZW46ekIscHJvdmlkZWRJbjoicm9vdCJ9KSx6Qi5jdG9yUGFyYW1ldGVycz0oKT0+W3t0eXBlOklSLGRlY29yYXRvcnM6W3t0eXBlOk5lfV19LHt0eXBlOnNQfSx7dHlwZTp2b2lkIDAsZGVjb3JhdG9yczpbe3R5cGU6TmV9LHt0eXBlOkllLGFyZ3M6W3pDXX1dfSx7dHlwZTpvY31dLG5ldyBOZSxuZXcgTGUsbmV3IE5lLG5ldyBOZTtjb25zdCBEQj1lRShjbGFzc3tjb25zdHJ1Y3Rvcih0KXt0aGlzLl9lbGVtZW50UmVmPXR9fSksSUI9bmV3IEZhKCJtYXQtaWNvbi1sb2NhdGlvbiIse3Byb3ZpZGVkSW46InJvb3QiLGZhY3Rvcnk6ZnVuY3Rpb24gTkIoKXtjb25zdCB0PUphKHpDKSxuPXQ/dC5sb2NhdGlvbjpudWxsO3JldHVybntnZXRQYXRobmFtZTooKT0+bj9uLnBhdGhuYW1lK24uc2VhcmNoOiIifX19KSxGQj1bImNsaXAtcGF0aCIsImNvbG9yLXByb2ZpbGUiLCJzcmMiLCJjdXJzb3IiLCJmaWxsIiwiZmlsdGVyIiwibWFya2VyIiwibWFya2VyLXN0YXJ0IiwibWFya2VyLW1pZCIsIm1hcmtlci1lbmQiLCJtYXNrIiwic3Ryb2tlIl0sTEI9RkIubWFwKCh0PT5gWyR7dH1dYCkpLmpvaW4oIiwgIiksSEI9L151cmxcKFsnIl0/IyguKj8pWyciXT9cKSQvO2NsYXNzIEJCIGV4dGVuZHMgREJ7Y29uc3RydWN0b3IodCxuLGUsYSxvKXtzdXBlcih0KSx0aGlzLl9pY29uUmVnaXN0cnk9bix0aGlzLl9sb2NhdGlvbj1hLHRoaXMuX2Vycm9ySGFuZGxlcj1vLHRoaXMuX2lubGluZT0hMSx0aGlzLl9jdXJyZW50SWNvbkZldGNoPXMuRU1QVFksZXx8dC5uYXRpdmVFbGVtZW50LnNldEF0dHJpYnV0ZSgiYXJpYS1oaWRkZW4iLCJ0cnVlIil9Z2V0IGlubGluZSgpe3JldHVybiB0aGlzLl9pbmxpbmV9c2V0IGlubGluZSh0KXt0aGlzLl9pbmxpbmU9R3codCl9Z2V0IHN2Z0ljb24oKXtyZXR1cm4gdGhpcy5fc3ZnSWNvbn1zZXQgc3ZnSWNvbih0KXt0IT09dGhpcy5fc3ZnSWNvbiYmKHQ/dGhpcy5fdXBkYXRlU3ZnSWNvbih0KTp0aGlzLl9zdmdJY29uJiZ0aGlzLl9jbGVhclN2Z0VsZW1lbnQoKSx0aGlzLl9zdmdJY29uPXQpfWdldCBmb250U2V0KCl7cmV0dXJuIHRoaXMuX2ZvbnRTZXR9c2V0IGZvbnRTZXQodCl7Y29uc3Qgbj10aGlzLl9jbGVhbnVwRm9udFZhbHVlKHQpO24hPT10aGlzLl9mb250U2V0JiYodGhpcy5fZm9udFNldD1uLHRoaXMuX3VwZGF0ZUZvbnRJY29uQ2xhc3NlcygpKX1nZXQgZm9udEljb24oKXtyZXR1cm4gdGhpcy5fZm9udEljb259c2V0IGZvbnRJY29uKHQpe2NvbnN0IG49dGhpcy5fY2xlYW51cEZvbnRWYWx1ZSh0KTtuIT09dGhpcy5fZm9udEljb24mJih0aGlzLl9mb250SWNvbj1uLHRoaXMuX3VwZGF0ZUZvbnRJY29uQ2xhc3NlcygpKX1fc3BsaXRJY29uTmFtZSh0KXtpZighdClyZXR1cm5bIiIsIiJdO2NvbnN0IG49dC5zcGxpdCgiOiIpO3N3aXRjaChuLmxlbmd0aCl7Y2FzZSAxOnJldHVyblsiIixuWzBdXTtjYXNlIDI6cmV0dXJuIG47ZGVmYXVsdDp0aHJvdyBFcnJvcihgSW52YWxpZCBpY29uIG5hbWU6ICIke3R9ImApfX1uZ09uSW5pdCgpe3RoaXMuX3VwZGF0ZUZvbnRJY29uQ2xhc3NlcygpfW5nQWZ0ZXJWaWV3Q2hlY2tlZCgpe2NvbnN0IHQ9dGhpcy5fZWxlbWVudHNXaXRoRXh0ZXJuYWxSZWZlcmVuY2VzO2lmKHQmJnQuc2l6ZSl7Y29uc3QgdD10aGlzLl9sb2NhdGlvbi5nZXRQYXRobmFtZSgpO3QhPT10aGlzLl9wcmV2aW91c1BhdGgmJih0aGlzLl9wcmV2aW91c1BhdGg9dCx0aGlzLl9wcmVwZW5kUGF0aFRvUmVmZXJlbmNlcyh0KSl9fW5nT25EZXN0cm95KCl7dGhpcy5fY3VycmVudEljb25GZXRjaC51bnN1YnNjcmliZSgpLHRoaXMuX2VsZW1lbnRzV2l0aEV4dGVybmFsUmVmZXJlbmNlcyYmdGhpcy5fZWxlbWVudHNXaXRoRXh0ZXJuYWxSZWZlcmVuY2VzLmNsZWFyKCl9X3VzaW5nRm9udEljb24oKXtyZXR1cm4hdGhpcy5zdmdJY29ufV9zZXRTdmdFbGVtZW50KHQpe3RoaXMuX2NsZWFyU3ZnRWxlbWVudCgpO2NvbnN0IG49dC5xdWVyeVNlbGVjdG9yQWxsKCJzdHlsZSIpO2ZvcihsZXQgdD0wO3Q8bi5sZW5ndGg7dCsrKW5bdF0udGV4dENvbnRlbnQrPSIgIjtjb25zdCBlPXRoaXMuX2xvY2F0aW9uLmdldFBhdGhuYW1lKCk7dGhpcy5fcHJldmlvdXNQYXRoPWUsdGhpcy5fY2FjaGVDaGlsZHJlbldpdGhFeHRlcm5hbFJlZmVyZW5jZXModCksdGhpcy5fcHJlcGVuZFBhdGhUb1JlZmVyZW5jZXMoZSksdGhpcy5fZWxlbWVudFJlZi5uYXRpdmVFbGVtZW50LmFwcGVuZENoaWxkKHQpfV9jbGVhclN2Z0VsZW1lbnQoKXtjb25zdCB0PXRoaXMuX2VsZW1lbnRSZWYubmF0aXZlRWxlbWVudDtsZXQgbj10LmNoaWxkTm9kZXMubGVuZ3RoO2Zvcih0aGlzLl9lbGVtZW50c1dpdGhFeHRlcm5hbFJlZmVyZW5jZXMmJnRoaXMuX2VsZW1lbnRzV2l0aEV4dGVybmFsUmVmZXJlbmNlcy5jbGVhcigpO24tLTspe2NvbnN0IGU9dC5jaGlsZE5vZGVzW25dOzE9PT1lLm5vZGVUeXBlJiYic3ZnIiE9PWUubm9kZU5hbWUudG9Mb3dlckNhc2UoKXx8dC5yZW1vdmVDaGlsZChlKX19X3VwZGF0ZUZvbnRJY29uQ2xhc3Nlcygpe2lmKCF0aGlzLl91c2luZ0ZvbnRJY29uKCkpcmV0dXJuO2NvbnN0IHQ9dGhpcy5fZWxlbWVudFJlZi5uYXRpdmVFbGVtZW50LG49dGhpcy5mb250U2V0P3RoaXMuX2ljb25SZWdpc3RyeS5jbGFzc05hbWVGb3JGb250QWxpYXModGhpcy5mb250U2V0KTp0aGlzLl9pY29uUmVnaXN0cnkuZ2V0RGVmYXVsdEZvbnRTZXRDbGFzcygpO24hPXRoaXMuX3ByZXZpb3VzRm9udFNldENsYXNzJiYodGhpcy5fcHJldmlvdXNGb250U2V0Q2xhc3MmJnQuY2xhc3NMaXN0LnJlbW92ZSh0aGlzLl9wcmV2aW91c0ZvbnRTZXRDbGFzcyksbiYmdC5jbGFzc0xpc3QuYWRkKG4pLHRoaXMuX3ByZXZpb3VzRm9udFNldENsYXNzPW4pLHRoaXMuZm9udEljb24hPXRoaXMuX3ByZXZpb3VzRm9udEljb25DbGFzcyYmKHRoaXMuX3ByZXZpb3VzRm9udEljb25DbGFzcyYmdC5jbGFzc0xpc3QucmVtb3ZlKHRoaXMuX3ByZXZpb3VzRm9udEljb25DbGFzcyksdGhpcy5mb250SWNvbiYmdC5jbGFzc0xpc3QuYWRkKHRoaXMuZm9udEljb24pLHRoaXMuX3ByZXZpb3VzRm9udEljb25DbGFzcz10aGlzLmZvbnRJY29uKX1fY2xlYW51cEZvbnRWYWx1ZSh0KXtyZXR1cm4ic3RyaW5nIj09dHlwZW9mIHQ/dC50cmltKCkuc3BsaXQoIiAiKVswXTp0fV9wcmVwZW5kUGF0aFRvUmVmZXJlbmNlcyh0KXtjb25zdCBuPXRoaXMuX2VsZW1lbnRzV2l0aEV4dGVybmFsUmVmZXJlbmNlcztuJiZuLmZvckVhY2goKChuLGUpPT57bi5mb3JFYWNoKChuPT57ZS5zZXRBdHRyaWJ1dGUobi5uYW1lLGB1cmwoJyR7dH0jJHtuLnZhbHVlfScpYCl9KSl9KSl9X2NhY2hlQ2hpbGRyZW5XaXRoRXh0ZXJuYWxSZWZlcmVuY2VzKHQpe2NvbnN0IG49dC5xdWVyeVNlbGVjdG9yQWxsKExCKSxlPXRoaXMuX2VsZW1lbnRzV2l0aEV4dGVybmFsUmVmZXJlbmNlcz10aGlzLl9lbGVtZW50c1dpdGhFeHRlcm5hbFJlZmVyZW5jZXN8fG5ldyBNYXA7Zm9yKGxldCB0PTA7dDxuLmxlbmd0aDt0KyspRkIuZm9yRWFjaCgoYT0+e2NvbnN0IG89blt0XSxyPW8uZ2V0QXR0cmlidXRlKGEpLGk9cj9yLm1hdGNoKEhCKTpudWxsO2lmKGkpe2xldCB0PWUuZ2V0KG8pO3R8fCh0PVtdLGUuc2V0KG8sdCkpLHQucHVzaCh7bmFtZTphLHZhbHVlOmlbMV19KX19KSl9X3VwZGF0ZVN2Z0ljb24odCl7aWYodGhpcy5fc3ZnTmFtZXNwYWNlPW51bGwsdGhpcy5fc3ZnTmFtZT1udWxsLHRoaXMuX2N1cnJlbnRJY29uRmV0Y2gudW5zdWJzY3JpYmUoKSx0KXtjb25zdFtuLGVdPXRoaXMuX3NwbGl0SWNvbk5hbWUodCk7biYmKHRoaXMuX3N2Z05hbWVzcGFjZT1uKSxlJiYodGhpcy5fc3ZnTmFtZT1lKSx0aGlzLl9jdXJyZW50SWNvbkZldGNoPXRoaXMuX2ljb25SZWdpc3RyeS5nZXROYW1lZFN2Z0ljb24oZSxuKS5waXBlKFRuKDEpKS5zdWJzY3JpYmUoKHQ9PnRoaXMuX3NldFN2Z0VsZW1lbnQodCkpLCh0PT57dGhpcy5fZXJyb3JIYW5kbGVyLmhhbmRsZUVycm9yKG5ldyBFcnJvcihgRXJyb3IgcmV0cmlldmluZyBpY29uICR7bn06JHtlfSEgJHt0Lm1lc3NhZ2V9YCkpfSkpfX19QkIuybVmYWM9ZnVuY3Rpb24gdChuKXtyZXR1cm4gbmV3KG58fEJCKShaZyh4dSksWmcoekIpLFhnKCJhcmlhLWhpZGRlbiIpLFpnKElCKSxaZyhvYykpfSxCQi7JtWNtcD1fbyh7dHlwZTpCQixzZWxlY3RvcnM6W1sibWF0LWljb24iXV0saG9zdEF0dHJzOlsicm9sZSIsImltZyIsMSwibWF0LWljb24iLCJub3RyYW5zbGF0ZSJdLGhvc3RWYXJzOjcsaG9zdEJpbmRpbmdzOmZ1bmN0aW9uIHQobixlKXsyJm4mJihOZygiZGF0YS1tYXQtaWNvbi10eXBlIixlLl91c2luZ0ZvbnRJY29uKCk/ImZvbnQiOiJzdmciKSgiZGF0YS1tYXQtaWNvbi1uYW1lIixlLl9zdmdOYW1lfHxlLmZvbnRJY29uKSgiZGF0YS1tYXQtaWNvbi1uYW1lc3BhY2UiLGUuX3N2Z05hbWVzcGFjZXx8ZS5mb250U2V0KSxEcCgibWF0LWljb24taW5saW5lIixlLmlubGluZSkoIm1hdC1pY29uLW5vLWNvbG9yIiwicHJpbWFyeSIhPT1lLmNvbG9yJiYiYWNjZW50IiE9PWUuY29sb3ImJiJ3YXJuIiE9PWUuY29sb3IpKX0saW5wdXRzOntjb2xvcjoiY29sb3IiLGlubGluZToiaW5saW5lIixzdmdJY29uOiJzdmdJY29uIixmb250U2V0OiJmb250U2V0Iixmb250SWNvbjoiZm9udEljb24ifSxleHBvcnRBczpbIm1hdEljb24iXSxmZWF0dXJlczpbaGddLG5nQ29udGVudFNlbGVjdG9yczpbIioiXSxkZWNsczoxLHZhcnM6MCx0ZW1wbGF0ZTpmdW5jdGlvbiB0KG4sZSl7MSZuJiYoYnAoKSxocCgwKSl9LHN0eWxlczpbIi5tYXQtaWNvbntiYWNrZ3JvdW5kLXJlcGVhdDpuby1yZXBlYXQ7ZGlzcGxheTppbmxpbmUtYmxvY2s7ZmlsbDpjdXJyZW50Q29sb3I7aGVpZ2h0OjI0cHg7d2lkdGg6MjRweH0ubWF0LWljb24ubWF0LWljb24taW5saW5le2ZvbnQtc2l6ZTppbmhlcml0O2hlaWdodDppbmhlcml0O2xpbmUtaGVpZ2h0OmluaGVyaXQ7d2lkdGg6aW5oZXJpdH1bZGlyPXJ0bF0gLm1hdC1pY29uLXJ0bC1taXJyb3J7dHJhbnNmb3JtOnNjYWxlKC0xLCAxKX0ubWF0LWZvcm0tZmllbGQ6bm90KC5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWxlZ2FjeSkgLm1hdC1mb3JtLWZpZWxkLXByZWZpeCAubWF0LWljb24sLm1hdC1mb3JtLWZpZWxkOm5vdCgubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1sZWdhY3kpIC5tYXQtZm9ybS1maWVsZC1zdWZmaXggLm1hdC1pY29ue2Rpc3BsYXk6YmxvY2t9Lm1hdC1mb3JtLWZpZWxkOm5vdCgubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1sZWdhY3kpIC5tYXQtZm9ybS1maWVsZC1wcmVmaXggLm1hdC1pY29uLWJ1dHRvbiAubWF0LWljb24sLm1hdC1mb3JtLWZpZWxkOm5vdCgubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1sZWdhY3kpIC5tYXQtZm9ybS1maWVsZC1zdWZmaXggLm1hdC1pY29uLWJ1dHRvbiAubWF0LWljb257bWFyZ2luOmF1dG99XG4iXSxlbmNhcHN1bGF0aW9uOjIsY2hhbmdlRGV0ZWN0aW9uOjB9KSxCQi5jdG9yUGFyYW1ldGVycz0oKT0+W3t0eXBlOnh1fSx7dHlwZTp6Qn0se3R5cGU6U3RyaW5nLGRlY29yYXRvcnM6W3t0eXBlOkJlLGFyZ3M6WyJhcmlhLWhpZGRlbiJdfV19LHt0eXBlOnZvaWQgMCxkZWNvcmF0b3JzOlt7dHlwZTpJZSxhcmdzOltJQl19XX0se3R5cGU6b2N9XSxCQi5wcm9wRGVjb3JhdG9ycz17aW5saW5lOlt7dHlwZTpmX31dLHN2Z0ljb246W3t0eXBlOmZffV0sZm9udFNldDpbe3R5cGU6Zl99XSxmb250SWNvbjpbe3R5cGU6Zl99XX07Ci8qKgogICAgICogQGxpY2Vuc2UKICAgICAqIENvcHlyaWdodCBHb29nbGUgTExDIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCiAgICAgKgogICAgICogVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYW4gTUlULXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKICAgICAqIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUgYXQgaHR0cHM6Ly9hbmd1bGFyLmlvL2xpY2Vuc2UKICAgICAqLwpjbGFzcyBWQnt9VkIuybVtb2Q9eG8oe3R5cGU6VkJ9KSxWQi7JtWluaj1HZSh7ZmFjdG9yeTpmdW5jdGlvbiB0KG4pe3JldHVybiBuZXcobnx8VkIpfSxpbXBvcnRzOltbdEVdLHRFXX0pLCgidW5kZWZpbmVkIj09dHlwZW9mIG5nSml0TW9kZXx8bmdKaXRNb2RlKSYmeW8oVkIse2RlY2xhcmF0aW9uczpmdW5jdGlvbigpe3JldHVybltCQl19LGltcG9ydHM6ZnVuY3Rpb24oKXtyZXR1cm5bdEVdfSxleHBvcnRzOmZ1bmN0aW9uKCl7cmV0dXJuW0JCLHRFXX19KTtjbGFzcyBqQntjb25zdHJ1Y3Rvcih0KXt0aGlzLmRpYWxvZ1JlZj10LHRoaXMudGVuc29yYm9hcmREb3REZXZVcmw9Imh0dHBzOi8vdGVuc29yYm9hcmQuZGV2Lz91dG1fc291cmNlPXRlbnNvcmJvYXJkIn1vbkNsb3NlKCl7dGhpcy5kaWFsb2dSZWYuY2xvc2UoKX1nZXRDb21tYW5kVGV4dCgpe3JldHVybiB0aGlzLmxvZ2Rpcj8idGVuc29yYm9hcmQgZGV2IHVwbG9hZCAtLWxvZ2RpciBcXFxuICAgICciK3RoaXMubG9nZGlyLnJlcGxhY2UoLycvZywiJ1xcJyciKSsiJyI6InRlbnNvcmJvYXJkIGRldiB1cGxvYWQgLS1sb2dkaXIge2xvZ2Rpcn0ifX1qQi7JtWZhYz1mdW5jdGlvbiB0KG4pe3JldHVybiBuZXcobnx8akIpKFpnKGlCKSl9LGpCLsm1Y21wPV9vKHt0eXBlOmpCLHNlbGVjdG9yczpbWyJ0YmRldi11cGxvYWQtZGlhbG9nLWNvbXBvbmVudCJdXSxpbnB1dHM6e2xvZ2RpcjoibG9nZGlyIn0sZGVjbHM6MjEsdmFyczo0LGNvbnN0czpbWyJ0YXJnZXQiLCJfYmxhbmsiLCJyZWwiLCJub3JlZmVycmVyIG5vb3BlbmVyIiwxLCJhbmNob3ItdGV4dCIsMywiaHJlZiJdLFsxLCJjb21tYW5kIl0sWyJtYXQtaWNvbi1idXR0b24iLCIiLCJ0aXRsZSIsIkNsaWNrIHRvIGNvcHkgdGhlIGNvbW1hbmQiLDEsImNvbW1hbmQtY29weSIsMywiY2RrQ29weVRvQ2xpcGJvYXJkIl0sWyJzdmdJY29uIiwiY29udGVudF9jb3B5XzI0cHgiXSxbMSwiYm90dG9tLWJ1dHRvbnMiXSxbIm1hdC1mbGF0LWJ1dHRvbiIsIiIsMSwiY2xvc2UtYnV0dG9uIiwzLCJjbGljayJdLFsibWF0LWZsYXQtYnV0dG9uIiwiIiwidGFyZ2V0IiwiX2JsYW5rIiwicmVsIiwibm9yZWZlcnJlciBub29wZW5lciIsMSwibGVhcm4tbW9yZS1idXR0b24iLDMsImhyZWYiXV0sdGVtcGxhdGU6ZnVuY3Rpb24gdChuLGUpezEmbiYmKEtnKDAsImgzIiksSnAoMSwiVXBsb2FkIHRvIFRlbnNvckJvYXJkLmRldiIpLCRnKCksS2coMiwicCIpLEtnKDMsImEiLDApLEpwKDQsIiBUZW5zb3JCb2FyZC5kZXYiKSwkZygpLEpwKDUsIiBlbmFibGVzIHlvdSB0byBlYXNpbHkgaG9zdCwgdHJhY2ssIGFuZCBzaGFyZSB5b3VyIE1MIGV4cGVyaW1lbnRzIHdpdGggZXZlcnlvbmUuIFlvdSBjYW4gc2hhcmUgYSBsaW5rIHRvIHRoZSB1cGxvYWRlZCBUZW5zb3JCb2FyZCBpbiBwYXBlcnMsIGJsb2cgcG9zdHMsIGFuZCBzb2NpYWwgbWVkaWEuIFRoaXMgY2FuIHNob3djYXNlIHRoZSByZXN1bHRzIG1vcmUgZWZmZWN0aXZlbHkgYW5kIGhlbHBzIHJlcHJvZHVjaWJpbGl0eS5cbiIpLCRnKCksS2coNiwicCIpLEpwKDcsIlRvIHVwbG9hZCBhIGxvZ2RpciB0byBUZW5zb3JCb2FyZC5kZXYsIHJ1biB0aGUgY29tbWFuZDoiKSwkZygpLEtnKDgsImRpdiIsMSksS2coOSwicHJlIiksS2coMTAsImNvZGUiKSxKcCgxMSksJGcoKSwkZygpLEtnKDEyLCJidXR0b24iLDIpLHRwKDEzLCJtYXQtaWNvbiIsMyksJGcoKSwkZygpLEtnKDE0LCJwIiksSnAoMTUsIiBPbmx5IGNlcnRhaW4gcGx1Z2lucyBhcmUgY3VycmVudGx5IHN1cHBvcnRlZC4gVXBsb2FkZWQgVGVuc29yQm9hcmRzIGFyZSBwdWJsaWMgYW5kIHZpc2libGUgdG8gZXZlcnlvbmU7IGRvIG5vdCB1cGxvYWQgc2Vuc2l0aXZlIGRhdGEuXG4iKSwkZygpLEtnKDE2LCJkaXYiLDQpLEtnKDE3LCJidXR0b24iLDUpLGNwKCJjbGljayIsKGZ1bmN0aW9uIHQoKXtyZXR1cm4gZS5vbkNsb3NlKCl9KSksSnAoMTgsIiBDbG9zZSAiKSwkZygpLEtnKDE5LCJhIiw2KSxKcCgyMCwiIExlYXJuIG1vcmUgIiksJGcoKSwkZygpKSwyJm4mJih3cygzKSxfcCgiaHJlZiIsZS50ZW5zb3Jib2FyZERvdERldlVybCxYYyksd3MoOCksUXAoZS5nZXRDb21tYW5kVGV4dCgpKSx3cygxKSxKZygiY2RrQ29weVRvQ2xpcGJvYXJkIixlLmdldENvbW1hbmRUZXh0KCkpLHdzKDcpLF9wKCJocmVmIixlLnRlbnNvcmJvYXJkRG90RGV2VXJsLFhjKSl9LGRpcmVjdGl2ZXM6W2VBLGtCLEJCLGFBXSxzdHlsZXM6WycubWF0LWJhZGdlLWNvbnRlbnRbX25nY29udGVudC0lQ09NUCVde2ZvbnQtd2VpZ2h0OjYwMDtmb250LXNpemU6MTJweDtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWZ9Lm1hdC1iYWRnZS1zbWFsbFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWJhZGdlLWNvbnRlbnRbX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZTo5cHh9Lm1hdC1iYWRnZS1sYXJnZVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWJhZGdlLWNvbnRlbnRbX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToyNHB4fS5tYXQtaDFbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWhlYWRsaW5lW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10eXBvZ3JhcGh5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIGgxW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250OjQwMCAyNHB4LzMycHggUm9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2xldHRlci1zcGFjaW5nOm5vcm1hbDttYXJnaW46MCAwIDE2cHh9Lm1hdC1oMltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdGl0bGVbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXR5cG9ncmFwaHlbX25nY29udGVudC0lQ09NUCVdICAgaDJbX25nY29udGVudC0lQ09NUCVde2ZvbnQ6NTAwIDIwcHgvMzJweCBSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7bGV0dGVyLXNwYWNpbmc6bm9ybWFsO21hcmdpbjowIDAgMTZweH0ubWF0LWgzW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1zdWJoZWFkaW5nLTJbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXR5cG9ncmFwaHlbX25nY29udGVudC0lQ09NUCVdICAgaDNbX25nY29udGVudC0lQ09NUCVde2ZvbnQ6NDAwIDE2cHgvMjhweCBSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7bGV0dGVyLXNwYWNpbmc6bm9ybWFsO21hcmdpbjowIDAgMTZweH0ubWF0LWg0W19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1zdWJoZWFkaW5nLTFbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXR5cG9ncmFwaHlbX25nY29udGVudC0lQ09NUCVdICAgaDRbX25nY29udGVudC0lQ09NUCVde2ZvbnQ6NDAwIDE1cHgvMjRweCBSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7bGV0dGVyLXNwYWNpbmc6bm9ybWFsO21hcmdpbjowIDAgMTZweH0ubWF0LWg1W19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10eXBvZ3JhcGh5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIGg1W19uZ2NvbnRlbnQtJUNPTVAlXXtmb250OjQwMCBjYWxjKDE0cHggKiAwLjgzKS8yMHB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjttYXJnaW46MCAwIDEycHh9Lm1hdC1oNltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdHlwb2dyYXBoeVtfbmdjb250ZW50LSVDT01QJV0gICBoNltfbmdjb250ZW50LSVDT01QJV17Zm9udDo0MDAgY2FsYygxNHB4ICogMC42NykvMjBweCBSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7bWFyZ2luOjAgMCAxMnB4fS5tYXQtYm9keS1zdHJvbmdbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWJvZHktMltfbmdjb250ZW50LSVDT01QJV17Zm9udDo1MDAgMTRweC8yNHB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtsZXR0ZXItc3BhY2luZzpub3JtYWx9Lm1hdC1ib2R5W19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1ib2R5LTFbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXR5cG9ncmFwaHlbX25nY29udGVudC0lQ09NUCVde2ZvbnQ6NDAwIDE0cHgvMjBweCBSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7bGV0dGVyLXNwYWNpbmc6bm9ybWFsfS5tYXQtYm9keVtfbmdjb250ZW50LSVDT01QJV0gICBwW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1ib2R5LTFbX25nY29udGVudC0lQ09NUCVdICAgcFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdHlwb2dyYXBoeVtfbmdjb250ZW50LSVDT01QJV0gICBwW19uZ2NvbnRlbnQtJUNPTVAlXXttYXJnaW46MCAwIDEycHh9Lm1hdC1zbWFsbFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtY2FwdGlvbltfbmdjb250ZW50LSVDT01QJV17Zm9udDo0MDAgMTJweC8yMHB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtsZXR0ZXItc3BhY2luZzpub3JtYWx9Lm1hdC1kaXNwbGF5LTRbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXR5cG9ncmFwaHlbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1kaXNwbGF5LTRbX25nY29udGVudC0lQ09NUCVde2ZvbnQ6MzAwIDExMnB4LzExMnB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtsZXR0ZXItc3BhY2luZzotMC4wNWVtO21hcmdpbjowIDAgNTZweH0ubWF0LWRpc3BsYXktM1tfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdHlwb2dyYXBoeVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWRpc3BsYXktM1tfbmdjb250ZW50LSVDT01QJV17Zm9udDo0MDAgNTZweC81NnB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtsZXR0ZXItc3BhY2luZzotMC4wMmVtO21hcmdpbjowIDAgNjRweH0ubWF0LWRpc3BsYXktMltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdHlwb2dyYXBoeVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWRpc3BsYXktMltfbmdjb250ZW50LSVDT01QJV17Zm9udDo0MDAgNDVweC80OHB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtsZXR0ZXItc3BhY2luZzotMC4wMDVlbTttYXJnaW46MCAwIDY0cHh9Lm1hdC1kaXNwbGF5LTFbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXR5cG9ncmFwaHlbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1kaXNwbGF5LTFbX25nY29udGVudC0lQ09NUCVde2ZvbnQ6NDAwIDM0cHgvNDBweCBSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7bGV0dGVyLXNwYWNpbmc6bm9ybWFsO21hcmdpbjowIDAgNjRweH0ubWF0LWJvdHRvbS1zaGVldC1jb250YWluZXJbX25nY29udGVudC0lQ09NUCVde2ZvbnQ6NDAwIDE0cHgvMjBweCBSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7bGV0dGVyLXNwYWNpbmc6bm9ybWFsfS5tYXQtYnV0dG9uW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1yYWlzZWQtYnV0dG9uW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1pY29uLWJ1dHRvbltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtc3Ryb2tlZC1idXR0b25bX25nY29udGVudC0lQ09NUCVdLCAubWF0LWZsYXQtYnV0dG9uW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1mYWJbX25nY29udGVudC0lQ09NUCVdLCAubWF0LW1pbmktZmFiW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7Zm9udC1zaXplOjE0cHg7Zm9udC13ZWlnaHQ6NTAwfS5tYXQtYnV0dG9uLXRvZ2dsZVtfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmfS5tYXQtY2FyZFtfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmfS5tYXQtY2FyZC10aXRsZVtfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjI0cHg7Zm9udC13ZWlnaHQ6NTAwfS5tYXQtY2FyZC1oZWFkZXJbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1jYXJkLXRpdGxlW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MjBweH0ubWF0LWNhcmQtc3VidGl0bGVbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWNhcmQtY29udGVudFtfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjE0cHh9Lm1hdC1jaGVja2JveFtfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmfS5tYXQtY2hlY2tib3gtbGF5b3V0W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtY2hlY2tib3gtbGFiZWxbX25nY29udGVudC0lQ09NUCVde2xpbmUtaGVpZ2h0OjI0cHh9Lm1hdC1jaGlwW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MTRweDtmb250LXdlaWdodDo1MDB9Lm1hdC1jaGlwW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtY2hpcC10cmFpbGluZy1pY29uLm1hdC1pY29uW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1jaGlwW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtY2hpcC1yZW1vdmUubWF0LWljb25bX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToxOHB4fS5tYXQtdGFibGVbX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZn0ubWF0LWhlYWRlci1jZWxsW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MTJweDtmb250LXdlaWdodDo1MDB9Lm1hdC1jZWxsW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1mb290ZXItY2VsbFtfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjE0cHh9Lm1hdC1jYWxlbmRhcltfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmfS5tYXQtY2FsZW5kYXItYm9keVtfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjEzcHh9Lm1hdC1jYWxlbmRhci1ib2R5LWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1jYWxlbmRhci1wZXJpb2QtYnV0dG9uW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MTRweDtmb250LXdlaWdodDo1MDB9Lm1hdC1jYWxlbmRhci10YWJsZS1oZWFkZXJbX25nY29udGVudC0lQ09NUCVdICAgdGhbX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToxMXB4O2ZvbnQtd2VpZ2h0OjQwMH0ubWF0LWRpYWxvZy10aXRsZVtfbmdjb250ZW50LSVDT01QJV17Zm9udDo1MDAgMjBweC8zMnB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtsZXR0ZXItc3BhY2luZzpub3JtYWx9Lm1hdC1leHBhbnNpb24tcGFuZWwtaGVhZGVyW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7Zm9udC1zaXplOjE1cHg7Zm9udC13ZWlnaHQ6NDAwfS5tYXQtZXhwYW5zaW9uLXBhbmVsLWNvbnRlbnRbX25nY29udGVudC0lQ09NUCVde2ZvbnQ6NDAwIDE0cHgvMjBweCBSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7bGV0dGVyLXNwYWNpbmc6bm9ybWFsfS5tYXQtZm9ybS1maWVsZFtfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOmluaGVyaXQ7Zm9udC13ZWlnaHQ6NDAwO2xpbmUtaGVpZ2h0OjEuMTI1O2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtsZXR0ZXItc3BhY2luZzpub3JtYWx9Lm1hdC1mb3JtLWZpZWxkLXdyYXBwZXJbX25nY29udGVudC0lQ09NUCVde3BhZGRpbmctYm90dG9tOjEuMzQzNzVlbX0ubWF0LWZvcm0tZmllbGQtcHJlZml4W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaWNvbltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtZm9ybS1maWVsZC1zdWZmaXhbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pY29uW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MTUwJTtsaW5lLWhlaWdodDoxLjEyNX0ubWF0LWZvcm0tZmllbGQtcHJlZml4W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaWNvbi1idXR0b25bX25nY29udGVudC0lQ09NUCVdLCAubWF0LWZvcm0tZmllbGQtc3VmZml4W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaWNvbi1idXR0b25bX25nY29udGVudC0lQ09NUCVde2hlaWdodDoxLjVlbTt3aWR0aDoxLjVlbX0ubWF0LWZvcm0tZmllbGQtcHJlZml4W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaWNvbi1idXR0b25bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pY29uW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1mb3JtLWZpZWxkLXN1ZmZpeFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWljb24tYnV0dG9uW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaWNvbltfbmdjb250ZW50LSVDT01QJV17aGVpZ2h0OjEuMTI1ZW07bGluZS1oZWlnaHQ6MS4xMjV9Lm1hdC1mb3JtLWZpZWxkLWluZml4W19uZ2NvbnRlbnQtJUNPTVAlXXtwYWRkaW5nOi41ZW0gMDtib3JkZXItdG9wOi44NDM3NWVtIHNvbGlkIHRyYW5zcGFyZW50fS5tYXQtZm9ybS1maWVsZC1jYW4tZmxvYXQubWF0LWZvcm0tZmllbGQtc2hvdWxkLWZsb2F0W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtZm9ybS1maWVsZC1jYW4tZmxvYXRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pbnB1dC1zZXJ2ZXJbX25nY29udGVudC0lQ09NUCVdOmZvY3VzICsgLm1hdC1mb3JtLWZpZWxkLWxhYmVsLXdyYXBwZXJbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXt0cmFuc2Zvcm06dHJhbnNsYXRlWSgtMS4zNDM3NWVtKSBzY2FsZSgwLjc1KTt3aWR0aDoxMzMuMzMzMzMzMzMzMyV9Lm1hdC1mb3JtLWZpZWxkLWNhbi1mbG9hdFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWlucHV0LXNlcnZlcltsYWJlbF1bX25nY29udGVudC0lQ09NUCVdOm5vdCg6bGFiZWwtc2hvd24pICsgLm1hdC1mb3JtLWZpZWxkLWxhYmVsLXdyYXBwZXJbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXt0cmFuc2Zvcm06dHJhbnNsYXRlWSgtMS4zNDM3NGVtKSBzY2FsZSgwLjc1KTt3aWR0aDoxMzMuMzMzMzQzMzMzMyV9Lm1hdC1mb3JtLWZpZWxkLWxhYmVsLXdyYXBwZXJbX25nY29udGVudC0lQ09NUCVde3RvcDotMC44NDM3NWVtO3BhZGRpbmctdG9wOi44NDM3NWVtfS5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17dG9wOjEuMzQzNzVlbX0ubWF0LWZvcm0tZmllbGQtdW5kZXJsaW5lW19uZ2NvbnRlbnQtJUNPTVAlXXtib3R0b206MS4zNDM3NWVtfS5tYXQtZm9ybS1maWVsZC1zdWJzY3JpcHQtd3JhcHBlcltfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjc1JTttYXJnaW4tdG9wOi42NjY2NjY2NjY3ZW07dG9wOmNhbGMoMTAwJSAtIDEuNzkxNjY2NjY2N2VtKX0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1sZWdhY3lbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLXdyYXBwZXJbX25nY29udGVudC0lQ09NUCVde3BhZGRpbmctYm90dG9tOjEuMjVlbX0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1sZWdhY3lbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWluZml4W19uZ2NvbnRlbnQtJUNPTVAlXXtwYWRkaW5nOi40Mzc1ZW0gMH0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1sZWdhY3kubWF0LWZvcm0tZmllbGQtY2FuLWZsb2F0Lm1hdC1mb3JtLWZpZWxkLXNob3VsZC1mbG9hdFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1sZWdhY3kubWF0LWZvcm0tZmllbGQtY2FuLWZsb2F0W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaW5wdXQtc2VydmVyW19uZ2NvbnRlbnQtJUNPTVAlXTpmb2N1cyArIC5tYXQtZm9ybS1maWVsZC1sYWJlbC13cmFwcGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17dHJhbnNmb3JtOnRyYW5zbGF0ZVkoLTEuMjgxMjVlbSkgc2NhbGUoMC43NSkgcGVyc3BlY3RpdmUoMTAwcHgpIHRyYW5zbGF0ZVooMC4wMDFweCk7LW1zLXRyYW5zZm9ybTp0cmFuc2xhdGVZKC0xLjI4MTI1ZW0pIHNjYWxlKDAuNzUpO3dpZHRoOjEzMy4zMzMzMzMzMzMzJX0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1sZWdhY3kubWF0LWZvcm0tZmllbGQtY2FuLWZsb2F0W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1hdXRvZmlsbC1jb250cm9sW19uZ2NvbnRlbnQtJUNPTVAlXTotd2Via2l0LWF1dG9maWxsICsgLm1hdC1mb3JtLWZpZWxkLWxhYmVsLXdyYXBwZXJbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXt0cmFuc2Zvcm06dHJhbnNsYXRlWSgtMS4yODEyNWVtKSBzY2FsZSgwLjc1KSBwZXJzcGVjdGl2ZSgxMDBweCkgdHJhbnNsYXRlWigwLjAwMTAxcHgpOy1tcy10cmFuc2Zvcm06dHJhbnNsYXRlWSgtMS4yODEyNGVtKSBzY2FsZSgwLjc1KTt3aWR0aDoxMzMuMzMzMzQzMzMzMyV9Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtbGVnYWN5Lm1hdC1mb3JtLWZpZWxkLWNhbi1mbG9hdFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWlucHV0LXNlcnZlcltsYWJlbF1bX25nY29udGVudC0lQ09NUCVdOm5vdCg6bGFiZWwtc2hvd24pICsgLm1hdC1mb3JtLWZpZWxkLWxhYmVsLXdyYXBwZXJbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXt0cmFuc2Zvcm06dHJhbnNsYXRlWSgtMS4yODEyNWVtKSBzY2FsZSgwLjc1KSBwZXJzcGVjdGl2ZSgxMDBweCkgdHJhbnNsYXRlWigwLjAwMTAycHgpOy1tcy10cmFuc2Zvcm06dHJhbnNsYXRlWSgtMS4yODEyM2VtKSBzY2FsZSgwLjc1KTt3aWR0aDoxMzMuMzMzMzUzMzMzMyV9Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtbGVnYWN5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17dG9wOjEuMjgxMjVlbX0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1sZWdhY3lbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLXVuZGVybGluZVtfbmdjb250ZW50LSVDT01QJV17Ym90dG9tOjEuMjVlbX0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1sZWdhY3lbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLXN1YnNjcmlwdC13cmFwcGVyW19uZ2NvbnRlbnQtJUNPTVAlXXttYXJnaW4tdG9wOi41NDE2NjY2NjY3ZW07dG9wOmNhbGMoMTAwJSAtIDEuNjY2NjY2NjY2N2VtKX1AbWVkaWEgcHJpbnR7Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtbGVnYWN5Lm1hdC1mb3JtLWZpZWxkLWNhbi1mbG9hdC5tYXQtZm9ybS1maWVsZC1zaG91bGQtZmxvYXRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtbGVnYWN5Lm1hdC1mb3JtLWZpZWxkLWNhbi1mbG9hdFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWlucHV0LXNlcnZlcltfbmdjb250ZW50LSVDT01QJV06Zm9jdXMgKyAubWF0LWZvcm0tZmllbGQtbGFiZWwtd3JhcHBlcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVde3RyYW5zZm9ybTp0cmFuc2xhdGVZKC0xLjI4MTIyZW0pIHNjYWxlKDAuNzUpfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWxlZ2FjeS5tYXQtZm9ybS1maWVsZC1jYW4tZmxvYXRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWF1dG9maWxsLWNvbnRyb2xbX25nY29udGVudC0lQ09NUCVdOi13ZWJraXQtYXV0b2ZpbGwgKyAubWF0LWZvcm0tZmllbGQtbGFiZWwtd3JhcHBlcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVde3RyYW5zZm9ybTp0cmFuc2xhdGVZKC0xLjI4MTIxZW0pIHNjYWxlKDAuNzUpfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWxlZ2FjeS5tYXQtZm9ybS1maWVsZC1jYW4tZmxvYXRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pbnB1dC1zZXJ2ZXJbbGFiZWxdW19uZ2NvbnRlbnQtJUNPTVAlXTpub3QoOmxhYmVsLXNob3duKSArIC5tYXQtZm9ybS1maWVsZC1sYWJlbC13cmFwcGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17dHJhbnNmb3JtOnRyYW5zbGF0ZVkoLTEuMjgxMmVtKSBzY2FsZSgwLjc1KX19Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtZmlsbFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtaW5maXhbX25nY29udGVudC0lQ09NUCVde3BhZGRpbmc6LjI1ZW0gMCAuNzVlbSAwfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWZpbGxbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXt0b3A6MS4wOTM3NWVtO21hcmdpbi10b3A6LTAuNWVtfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWZpbGwubWF0LWZvcm0tZmllbGQtY2FuLWZsb2F0Lm1hdC1mb3JtLWZpZWxkLXNob3VsZC1mbG9hdFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1maWxsLm1hdC1mb3JtLWZpZWxkLWNhbi1mbG9hdFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWlucHV0LXNlcnZlcltfbmdjb250ZW50LSVDT01QJV06Zm9jdXMgKyAubWF0LWZvcm0tZmllbGQtbGFiZWwtd3JhcHBlcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVde3RyYW5zZm9ybTp0cmFuc2xhdGVZKC0wLjU5Mzc1ZW0pIHNjYWxlKDAuNzUpO3dpZHRoOjEzMy4zMzMzMzMzMzMzJX0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1maWxsLm1hdC1mb3JtLWZpZWxkLWNhbi1mbG9hdFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWlucHV0LXNlcnZlcltsYWJlbF1bX25nY29udGVudC0lQ09NUCVdOm5vdCg6bGFiZWwtc2hvd24pICsgLm1hdC1mb3JtLWZpZWxkLWxhYmVsLXdyYXBwZXJbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXt0cmFuc2Zvcm06dHJhbnNsYXRlWSgtMC41OTM3NGVtKSBzY2FsZSgwLjc1KTt3aWR0aDoxMzMuMzMzMzQzMzMzMyV9Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2Utb3V0bGluZVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtaW5maXhbX25nY29udGVudC0lQ09NUCVde3BhZGRpbmc6MWVtIDAgMWVtIDB9Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2Utb3V0bGluZVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVde3RvcDoxLjg0Mzc1ZW07bWFyZ2luLXRvcDotMC4yNWVtfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLW91dGxpbmUubWF0LWZvcm0tZmllbGQtY2FuLWZsb2F0Lm1hdC1mb3JtLWZpZWxkLXNob3VsZC1mbG9hdFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1vdXRsaW5lLm1hdC1mb3JtLWZpZWxkLWNhbi1mbG9hdFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWlucHV0LXNlcnZlcltfbmdjb250ZW50LSVDT01QJV06Zm9jdXMgKyAubWF0LWZvcm0tZmllbGQtbGFiZWwtd3JhcHBlcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVde3RyYW5zZm9ybTp0cmFuc2xhdGVZKC0xLjU5Mzc1ZW0pIHNjYWxlKDAuNzUpO3dpZHRoOjEzMy4zMzMzMzMzMzMzJX0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1vdXRsaW5lLm1hdC1mb3JtLWZpZWxkLWNhbi1mbG9hdFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWlucHV0LXNlcnZlcltsYWJlbF1bX25nY29udGVudC0lQ09NUCVdOm5vdCg6bGFiZWwtc2hvd24pICsgLm1hdC1mb3JtLWZpZWxkLWxhYmVsLXdyYXBwZXJbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXt0cmFuc2Zvcm06dHJhbnNsYXRlWSgtMS41OTM3NGVtKSBzY2FsZSgwLjc1KTt3aWR0aDoxMzMuMzMzMzQzMzMzMyV9Lm1hdC1ncmlkLXRpbGUtaGVhZGVyW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1ncmlkLXRpbGUtZm9vdGVyW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MTRweH0ubWF0LWdyaWQtdGlsZS1oZWFkZXJbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saW5lW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1ncmlkLXRpbGUtZm9vdGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGluZVtfbmdjb250ZW50LSVDT01QJV17d2hpdGUtc3BhY2U6bm93cmFwO292ZXJmbG93OmhpZGRlbjt0ZXh0LW92ZXJmbG93OmVsbGlwc2lzO2Rpc3BsYXk6YmxvY2s7Ym94LXNpemluZzpib3JkZXItYm94fS5tYXQtZ3JpZC10aWxlLWhlYWRlcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpbmVbX25nY29udGVudC0lQ09NUCVdOm50aC1jaGlsZChuKzIpLCAubWF0LWdyaWQtdGlsZS1mb290ZXJbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saW5lW19uZ2NvbnRlbnQtJUNPTVAlXTpudGgtY2hpbGQobisyKXtmb250LXNpemU6MTJweH1pbnB1dC5tYXQtaW5wdXQtZWxlbWVudFtfbmdjb250ZW50LSVDT01QJV17bWFyZ2luLXRvcDotMC4wNjI1ZW19Lm1hdC1tZW51LWl0ZW1bX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtmb250LXNpemU6MTRweDtmb250LXdlaWdodDo0MDB9Lm1hdC1wYWdpbmF0b3JbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXBhZ2luYXRvci1wYWdlLXNpemVbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1zZWxlY3QtdHJpZ2dlcltfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2ZvbnQtc2l6ZToxMnB4fS5tYXQtcmFkaW8tYnV0dG9uW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWZ9Lm1hdC1zZWxlY3RbX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZn0ubWF0LXNlbGVjdC10cmlnZ2VyW19uZ2NvbnRlbnQtJUNPTVAlXXtoZWlnaHQ6MS4xMjVlbX0ubWF0LXNsaWRlLXRvZ2dsZS1jb250ZW50W19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWZ9Lm1hdC1zbGlkZXItdGh1bWItbGFiZWwtdGV4dFtfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2ZvbnQtc2l6ZToxMnB4O2ZvbnQtd2VpZ2h0OjUwMH0ubWF0LXN0ZXBwZXItdmVydGljYWxbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXN0ZXBwZXItaG9yaXpvbnRhbFtfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmfS5tYXQtc3RlcC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjE0cHg7Zm9udC13ZWlnaHQ6NDAwfS5tYXQtc3RlcC1zdWItbGFiZWwtZXJyb3JbX25nY29udGVudC0lQ09NUCVde2ZvbnQtd2VpZ2h0Om5vcm1hbH0ubWF0LXN0ZXAtbGFiZWwtZXJyb3JbX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToxNHB4fS5tYXQtc3RlcC1sYWJlbC1zZWxlY3RlZFtfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjE0cHg7Zm9udC13ZWlnaHQ6NTAwfS5tYXQtdGFiLWdyb3VwW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWZ9Lm1hdC10YWItbGFiZWxbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXRhYi1saW5rW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7Zm9udC1zaXplOjE0cHg7Zm9udC13ZWlnaHQ6NTAwfS5tYXQtdG9vbGJhcltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdG9vbGJhcltfbmdjb250ZW50LSVDT01QJV0gICBoMVtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdG9vbGJhcltfbmdjb250ZW50LSVDT01QJV0gICBoMltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdG9vbGJhcltfbmdjb250ZW50LSVDT01QJV0gICBoM1tfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdG9vbGJhcltfbmdjb250ZW50LSVDT01QJV0gICBoNFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdG9vbGJhcltfbmdjb250ZW50LSVDT01QJV0gICBoNVtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdG9vbGJhcltfbmdjb250ZW50LSVDT01QJV0gICBoNltfbmdjb250ZW50LSVDT01QJV17Zm9udDo1MDAgMjBweC8zMnB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtsZXR0ZXItc3BhY2luZzpub3JtYWw7bWFyZ2luOjB9Lm1hdC10b29sdGlwW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7Zm9udC1zaXplOjEwcHg7cGFkZGluZy10b3A6NnB4O3BhZGRpbmctYm90dG9tOjZweH0ubWF0LXRvb2x0aXAtaGFuZHNldFtfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjE0cHg7cGFkZGluZy10b3A6OHB4O3BhZGRpbmctYm90dG9tOjhweH0ubWF0LWxpc3QtaXRlbVtfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmfS5tYXQtbGlzdC1vcHRpb25bX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZn0ubWF0LWxpc3QtYmFzZVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpc3QtaXRlbVtfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjE2cHh9Lm1hdC1saXN0LWJhc2VbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saXN0LWl0ZW1bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saW5lW19uZ2NvbnRlbnQtJUNPTVAlXXt3aGl0ZS1zcGFjZTpub3dyYXA7b3ZlcmZsb3c6aGlkZGVuO3RleHQtb3ZlcmZsb3c6ZWxsaXBzaXM7ZGlzcGxheTpibG9jaztib3gtc2l6aW5nOmJvcmRlci1ib3h9Lm1hdC1saXN0LWJhc2VbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saXN0LWl0ZW1bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saW5lW19uZ2NvbnRlbnQtJUNPTVAlXTpudGgtY2hpbGQobisyKXtmb250LXNpemU6MTRweH0ubWF0LWxpc3QtYmFzZVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpc3Qtb3B0aW9uW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MTZweH0ubWF0LWxpc3QtYmFzZVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpc3Qtb3B0aW9uW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGluZVtfbmdjb250ZW50LSVDT01QJV17d2hpdGUtc3BhY2U6bm93cmFwO292ZXJmbG93OmhpZGRlbjt0ZXh0LW92ZXJmbG93OmVsbGlwc2lzO2Rpc3BsYXk6YmxvY2s7Ym94LXNpemluZzpib3JkZXItYm94fS5tYXQtbGlzdC1iYXNlW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGlzdC1vcHRpb25bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saW5lW19uZ2NvbnRlbnQtJUNPTVAlXTpudGgtY2hpbGQobisyKXtmb250LXNpemU6MTRweH0ubWF0LWxpc3QtYmFzZVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXN1YmhlYWRlcltfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2ZvbnQtc2l6ZToxNHB4O2ZvbnQtd2VpZ2h0OjUwMH0ubWF0LWxpc3QtYmFzZVtkZW5zZV1bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saXN0LWl0ZW1bX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToxMnB4fS5tYXQtbGlzdC1iYXNlW2RlbnNlXVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpc3QtaXRlbVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpbmVbX25nY29udGVudC0lQ09NUCVde3doaXRlLXNwYWNlOm5vd3JhcDtvdmVyZmxvdzpoaWRkZW47dGV4dC1vdmVyZmxvdzplbGxpcHNpcztkaXNwbGF5OmJsb2NrO2JveC1zaXppbmc6Ym9yZGVyLWJveH0ubWF0LWxpc3QtYmFzZVtkZW5zZV1bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saXN0LWl0ZW1bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saW5lW19uZ2NvbnRlbnQtJUNPTVAlXTpudGgtY2hpbGQobisyKXtmb250LXNpemU6MTJweH0ubWF0LWxpc3QtYmFzZVtkZW5zZV1bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saXN0LW9wdGlvbltfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjEycHh9Lm1hdC1saXN0LWJhc2VbZGVuc2VdW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGlzdC1vcHRpb25bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saW5lW19uZ2NvbnRlbnQtJUNPTVAlXXt3aGl0ZS1zcGFjZTpub3dyYXA7b3ZlcmZsb3c6aGlkZGVuO3RleHQtb3ZlcmZsb3c6ZWxsaXBzaXM7ZGlzcGxheTpibG9jaztib3gtc2l6aW5nOmJvcmRlci1ib3h9Lm1hdC1saXN0LWJhc2VbZGVuc2VdW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGlzdC1vcHRpb25bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saW5lW19uZ2NvbnRlbnQtJUNPTVAlXTpudGgtY2hpbGQobisyKXtmb250LXNpemU6MTJweH0ubWF0LWxpc3QtYmFzZVtkZW5zZV1bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1zdWJoZWFkZXJbX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtmb250LXNpemU6MTJweDtmb250LXdlaWdodDo1MDB9Lm1hdC1vcHRpb25bX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtmb250LXNpemU6MTZweH0ubWF0LW9wdGdyb3VwLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250OjUwMCAxNHB4LzI0cHggUm9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2xldHRlci1zcGFjaW5nOm5vcm1hbH0ubWF0LXNpbXBsZS1zbmFja2Jhcltfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2ZvbnQtc2l6ZToxNHB4fS5tYXQtc2ltcGxlLXNuYWNrYmFyLWFjdGlvbltfbmdjb250ZW50LSVDT01QJV17bGluZS1oZWlnaHQ6MTtmb250LWZhbWlseTppbmhlcml0O2ZvbnQtc2l6ZTppbmhlcml0O2ZvbnQtd2VpZ2h0OjUwMH0ubWF0LXRyZWVbX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZn0ubWF0LXRyZWUtbm9kZVtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtbmVzdGVkLXRyZWUtbm9kZVtfbmdjb250ZW50LSVDT01QJV17Zm9udC13ZWlnaHQ6NDAwO2ZvbnQtc2l6ZToxNHB4fS5tYXQtcmlwcGxlW19uZ2NvbnRlbnQtJUNPTVAlXXtvdmVyZmxvdzpoaWRkZW47cG9zaXRpb246cmVsYXRpdmV9Lm1hdC1yaXBwbGVbX25nY29udGVudC0lQ09NUCVdOm5vdCg6ZW1wdHkpe3RyYW5zZm9ybTp0cmFuc2xhdGVaKDApfS5tYXQtcmlwcGxlLm1hdC1yaXBwbGUtdW5ib3VuZGVkW19uZ2NvbnRlbnQtJUNPTVAlXXtvdmVyZmxvdzp2aXNpYmxlfS5tYXQtcmlwcGxlLWVsZW1lbnRbX25nY29udGVudC0lQ09NUCVde3Bvc2l0aW9uOmFic29sdXRlO2JvcmRlci1yYWRpdXM6NTAlO3BvaW50ZXItZXZlbnRzOm5vbmU7dHJhbnNpdGlvbjpvcGFjaXR5LHRyYW5zZm9ybSAwbXMgY3ViaWMtYmV6aWVyKDAsIDAsIDAuMiwgMSk7dHJhbnNmb3JtOnNjYWxlKDApfS5jZGstaGlnaC1jb250cmFzdC1hY3RpdmVbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1yaXBwbGUtZWxlbWVudFtfbmdjb250ZW50LSVDT01QJV17ZGlzcGxheTpub25lfS5jZGstdmlzdWFsbHktaGlkZGVuW19uZ2NvbnRlbnQtJUNPTVAlXXtib3JkZXI6MDtjbGlwOnJlY3QoMCAwIDAgMCk7aGVpZ2h0OjFweDttYXJnaW46LTFweDtvdmVyZmxvdzpoaWRkZW47cGFkZGluZzowO3Bvc2l0aW9uOmFic29sdXRlO3dpZHRoOjFweDtvdXRsaW5lOjA7LXdlYmtpdC1hcHBlYXJhbmNlOm5vbmU7LW1vei1hcHBlYXJhbmNlOm5vbmV9LmNkay1vdmVybGF5LWNvbnRhaW5lcltfbmdjb250ZW50LSVDT01QJV0sIC5jZGstZ2xvYmFsLW92ZXJsYXktd3JhcHBlcltfbmdjb250ZW50LSVDT01QJV17cG9pbnRlci1ldmVudHM6bm9uZTt0b3A6MDtsZWZ0OjA7aGVpZ2h0OjEwMCU7d2lkdGg6MTAwJX0uY2RrLW92ZXJsYXktY29udGFpbmVyW19uZ2NvbnRlbnQtJUNPTVAlXXtwb3NpdGlvbjpmaXhlZDt6LWluZGV4OjEwMDB9LmNkay1vdmVybGF5LWNvbnRhaW5lcltfbmdjb250ZW50LSVDT01QJV06ZW1wdHl7ZGlzcGxheTpub25lfS5jZGstZ2xvYmFsLW92ZXJsYXktd3JhcHBlcltfbmdjb250ZW50LSVDT01QJV17ZGlzcGxheTpmbGV4O3Bvc2l0aW9uOmFic29sdXRlO3otaW5kZXg6MTAwMH0uY2RrLW92ZXJsYXktcGFuZVtfbmdjb250ZW50LSVDT01QJV17cG9zaXRpb246YWJzb2x1dGU7cG9pbnRlci1ldmVudHM6YXV0bztib3gtc2l6aW5nOmJvcmRlci1ib3g7ei1pbmRleDoxMDAwO2Rpc3BsYXk6ZmxleDttYXgtd2lkdGg6MTAwJTttYXgtaGVpZ2h0OjEwMCV9LmNkay1vdmVybGF5LWJhY2tkcm9wW19uZ2NvbnRlbnQtJUNPTVAlXXtwb3NpdGlvbjphYnNvbHV0ZTt0b3A6MDtib3R0b206MDtsZWZ0OjA7cmlnaHQ6MDt6LWluZGV4OjEwMDA7cG9pbnRlci1ldmVudHM6YXV0bzstd2Via2l0LXRhcC1oaWdobGlnaHQtY29sb3I6dHJhbnNwYXJlbnQ7dHJhbnNpdGlvbjpvcGFjaXR5IDQwMG1zIGN1YmljLWJlemllcigwLjI1LCAwLjgsIDAuMjUsIDEpO29wYWNpdHk6MH0uY2RrLW92ZXJsYXktYmFja2Ryb3AuY2RrLW92ZXJsYXktYmFja2Ryb3Atc2hvd2luZ1tfbmdjb250ZW50LSVDT01QJV17b3BhY2l0eToxfUBtZWRpYSBzY3JlZW4gYW5kICgtbXMtaGlnaC1jb250cmFzdDogYWN0aXZlKXsuY2RrLW92ZXJsYXktYmFja2Ryb3AuY2RrLW92ZXJsYXktYmFja2Ryb3Atc2hvd2luZ1tfbmdjb250ZW50LSVDT01QJV17b3BhY2l0eTouNn19LmNkay1vdmVybGF5LWRhcmstYmFja2Ryb3BbX25nY29udGVudC0lQ09NUCVde2JhY2tncm91bmQ6cmdiYSgwLDAsMCwuMzIpfS5jZGstb3ZlcmxheS10cmFuc3BhcmVudC1iYWNrZHJvcFtfbmdjb250ZW50LSVDT01QJV0sIC5jZGstb3ZlcmxheS10cmFuc3BhcmVudC1iYWNrZHJvcC5jZGstb3ZlcmxheS1iYWNrZHJvcC1zaG93aW5nW19uZ2NvbnRlbnQtJUNPTVAlXXtvcGFjaXR5OjB9LmNkay1vdmVybGF5LWNvbm5lY3RlZC1wb3NpdGlvbi1ib3VuZGluZy1ib3hbX25nY29udGVudC0lQ09NUCVde3Bvc2l0aW9uOmFic29sdXRlO3otaW5kZXg6MTAwMDtkaXNwbGF5OmZsZXg7ZmxleC1kaXJlY3Rpb246Y29sdW1uO21pbi13aWR0aDoxcHg7bWluLWhlaWdodDoxcHh9LmNkay1nbG9iYWwtc2Nyb2xsYmxvY2tbX25nY29udGVudC0lQ09NUCVde3Bvc2l0aW9uOmZpeGVkO3dpZHRoOjEwMCU7b3ZlcmZsb3cteTpzY3JvbGx9QGtleWZyYW1lcyBjZGstdGV4dC1maWVsZC1hdXRvZmlsbC1zdGFydHt9QGtleWZyYW1lcyBjZGstdGV4dC1maWVsZC1hdXRvZmlsbC1lbmR7fS5jZGstdGV4dC1maWVsZC1hdXRvZmlsbC1tb25pdG9yZWRbX25nY29udGVudC0lQ09NUCVdOi13ZWJraXQtYXV0b2ZpbGx7YW5pbWF0aW9uOmNkay10ZXh0LWZpZWxkLWF1dG9maWxsLXN0YXJ0IDBzIDFtc30uY2RrLXRleHQtZmllbGQtYXV0b2ZpbGwtbW9uaXRvcmVkW19uZ2NvbnRlbnQtJUNPTVAlXTpub3QoOi13ZWJraXQtYXV0b2ZpbGwpe2FuaW1hdGlvbjpjZGstdGV4dC1maWVsZC1hdXRvZmlsbC1lbmQgMHMgMW1zfXRleHRhcmVhLmNkay10ZXh0YXJlYS1hdXRvc2l6ZVtfbmdjb250ZW50LSVDT01QJV17cmVzaXplOm5vbmV9dGV4dGFyZWEuY2RrLXRleHRhcmVhLWF1dG9zaXplLW1lYXN1cmluZ1tfbmdjb250ZW50LSVDT01QJV17cGFkZGluZzoycHggMCAhaW1wb3J0YW50O2JveC1zaXppbmc6Y29udGVudC1ib3ggIWltcG9ydGFudDtoZWlnaHQ6YXV0byAhaW1wb3J0YW50O292ZXJmbG93OmhpZGRlbiAhaW1wb3J0YW50fXRleHRhcmVhLmNkay10ZXh0YXJlYS1hdXRvc2l6ZS1tZWFzdXJpbmctZmlyZWZveFtfbmdjb250ZW50LSVDT01QJV17cGFkZGluZzoycHggMCAhaW1wb3J0YW50O2JveC1zaXppbmc6Y29udGVudC1ib3ggIWltcG9ydGFudDtoZWlnaHQ6MCAhaW1wb3J0YW50fS5tYXQtZm9jdXMtaW5kaWNhdG9yW19uZ2NvbnRlbnQtJUNPTVAlXXtwb3NpdGlvbjpyZWxhdGl2ZX0ubWF0LW1kYy1mb2N1cy1pbmRpY2F0b3JbX25nY29udGVudC0lQ09NUCVde3Bvc2l0aW9uOnJlbGF0aXZlfS5tYXQtcmlwcGxlLWVsZW1lbnRbX25nY29udGVudC0lQ09NUCVde2JhY2tncm91bmQtY29sb3I6cmdiYSgwLDAsMCwuMSl9Lm1hdC1vcHRpb25bX25nY29udGVudC0lQ09NUCVde2NvbG9yOiMyMTIxMjF9Lm1hdC1vcHRpb25bX25nY29udGVudC0lQ09NUCVdOmhvdmVyOm5vdCgubWF0LW9wdGlvbi1kaXNhYmxlZCksIC5tYXQtb3B0aW9uW19uZ2NvbnRlbnQtJUNPTVAlXTpmb2N1czpub3QoLm1hdC1vcHRpb24tZGlzYWJsZWQpe2JhY2tncm91bmQ6cmdiYSgwLDAsMCwuMDQpfS5tYXQtb3B0aW9uLm1hdC1zZWxlY3RlZFtfbmdjb250ZW50LSVDT01QJV06bm90KC5tYXQtb3B0aW9uLW11bHRpcGxlKTpub3QoLm1hdC1vcHRpb24tZGlzYWJsZWQpe2JhY2tncm91bmQ6cmdiYSgwLDAsMCwuMDQpfS5tYXQtb3B0aW9uLm1hdC1hY3RpdmVbX25nY29udGVudC0lQ09NUCVde2JhY2tncm91bmQ6cmdiYSgwLDAsMCwuMDQpO2NvbG9yOiMyMTIxMjF9Lm1hdC1vcHRpb24ubWF0LW9wdGlvbi1kaXNhYmxlZFtfbmdjb250ZW50LSVDT01QJV17Y29sb3I6cmdiYSgwLDAsMCwuMzgpfS5tYXQtcHJpbWFyeVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LW9wdGlvbi5tYXQtc2VsZWN0ZWRbX25nY29udGVudC0lQ09NUCVdOm5vdCgubWF0LW9wdGlvbi1kaXNhYmxlZCl7Y29sb3I6I2Y1N2MwMH0ubWF0LWFjY2VudFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LW9wdGlvbi5tYXQtc2VsZWN0ZWRbX25nY29udGVudC0lQ09NUCVdOm5vdCgubWF0LW9wdGlvbi1kaXNhYmxlZCl7Y29sb3I6I2ZmOTgwMH0ubWF0LXdhcm5bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1vcHRpb24ubWF0LXNlbGVjdGVkW19uZ2NvbnRlbnQtJUNPTVAlXTpub3QoLm1hdC1vcHRpb24tZGlzYWJsZWQpe2NvbG9yOiNmNDQzMzZ9Lm1hdC1vcHRncm91cC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17Y29sb3I6IzYxNjE2MX0ubWF0LW9wdGdyb3VwLWRpc2FibGVkW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtb3B0Z3JvdXAtbGFiZWxbX25nY29udGVudC0lQ09NUCVde2NvbG9yOnJnYmEoMCwwLDAsLjM4KX0ubWF0LXBzZXVkby1jaGVja2JveFtfbmdjb250ZW50LSVDT01QJV17Y29sb3I6IzYxNjE2MX0ubWF0LXBzZXVkby1jaGVja2JveFtfbmdjb250ZW50LSVDT01QJV06OmFmdGVye2NvbG9yOiNmYWZhZmF9Lm1hdC1wc2V1ZG8tY2hlY2tib3gtZGlzYWJsZWRbX25nY29udGVudC0lQ09NUCVde2NvbG9yOiNiMGIwYjB9Lm1hdC1wcmltYXJ5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtcHNldWRvLWNoZWNrYm94LWNoZWNrZWRbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXByaW1hcnlbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1wc2V1ZG8tY2hlY2tib3gtaW5kZXRlcm1pbmF0ZVtfbmdjb250ZW50LSVDT01QJV17YmFja2dyb3VuZDojZjU3YzAwfS5tYXQtcHNldWRvLWNoZWNrYm94LWNoZWNrZWRbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXBzZXVkby1jaGVja2JveC1pbmRldGVybWluYXRlW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1hY2NlbnRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1wc2V1ZG8tY2hlY2tib3gtY2hlY2tlZFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtYWNjZW50W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtcHNldWRvLWNoZWNrYm94LWluZGV0ZXJtaW5hdGVbX25nY29udGVudC0lQ09NUCVde2JhY2tncm91bmQ6I2ZmOTgwMH0ubWF0LXdhcm5bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1wc2V1ZG8tY2hlY2tib3gtY2hlY2tlZFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtd2Fybltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXBzZXVkby1jaGVja2JveC1pbmRldGVybWluYXRlW19uZ2NvbnRlbnQtJUNPTVAlXXtiYWNrZ3JvdW5kOiNmNDQzMzZ9Lm1hdC1wc2V1ZG8tY2hlY2tib3gtY2hlY2tlZC5tYXQtcHNldWRvLWNoZWNrYm94LWRpc2FibGVkW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1wc2V1ZG8tY2hlY2tib3gtaW5kZXRlcm1pbmF0ZS5tYXQtcHNldWRvLWNoZWNrYm94LWRpc2FibGVkW19uZ2NvbnRlbnQtJUNPTVAlXXtiYWNrZ3JvdW5kOiNiMGIwYjB9Lm1hdC1hcHAtYmFja2dyb3VuZFtfbmdjb250ZW50LSVDT01QJV17YmFja2dyb3VuZC1jb2xvcjojZmFmYWZhO2NvbG9yOiMyMTIxMjF9Lm1hdC1lbGV2YXRpb24tejBbX25nY29udGVudC0lQ09NUCVde2JveC1zaGFkb3c6MHB4IDBweCAwcHggMHB4IHJnYmEoMCwgMCwgMCwgMC4yKSwwcHggMHB4IDBweCAwcHggcmdiYSgwLCAwLCAwLCAwLjE0KSwwcHggMHB4IDBweCAwcHggcmdiYSgwLCAwLCAwLCAwLjEyKX0ubWF0LWVsZXZhdGlvbi16MVtfbmdjb250ZW50LSVDT01QJV17Ym94LXNoYWRvdzowcHggMnB4IDFweCAtMXB4IHJnYmEoMCwgMCwgMCwgMC4yKSwwcHggMXB4IDFweCAwcHggcmdiYSgwLCAwLCAwLCAwLjE0KSwwcHggMXB4IDNweCAwcHggcmdiYSgwLCAwLCAwLCAwLjEyKX0ubWF0LWVsZXZhdGlvbi16Mltfbmdjb250ZW50LSVDT01QJV17Ym94LXNoYWRvdzowcHggM3B4IDFweCAtMnB4IHJnYmEoMCwgMCwgMCwgMC4yKSwwcHggMnB4IDJweCAwcHggcmdiYSgwLCAwLCAwLCAwLjE0KSwwcHggMXB4IDVweCAwcHggcmdiYSgwLCAwLCAwLCAwLjEyKX0ubWF0LWVsZXZhdGlvbi16M1tfbmdjb250ZW50LSVDT01QJV17Ym94LXNoYWRvdzowcHggM3B4IDNweCAtMnB4IHJnYmEoMCwgMCwgMCwgMC4yKSwwcHggM3B4IDRweCAwcHggcmdiYSgwLCAwLCAwLCAwLjE0KSwwcHggMXB4IDhweCAwcHggcmdiYSgwLCAwLCAwLCAwLjEyKX0ubWF0LWVsZXZhdGlvbi16NFtfbmdjb250ZW50LSVDT01QJV17Ym94LXNoYWRvdzowcHggMnB4IDRweCAtMXB4IHJnYmEoMCwgMCwgMCwgMC4yKSwwcHggNHB4IDVweCAwcHggcmdiYSgwLCAwLCAwLCAwLjE0KSwwcHggMXB4IDEwcHggMHB4IHJnYmEoMCwgMCwgMCwgMC4xMil9Lm1hdC1lbGV2YXRpb24tejVbX25nY29udGVudC0lQ09NUCVde2JveC1zaGFkb3c6MHB4IDNweCA1cHggLTFweCByZ2JhKDAsIDAsIDAsIDAuMiksMHB4IDVweCA4cHggMHB4IHJnYmEoMCwgMCwgMCwgMC4xNCksMHB4IDFweCAxNHB4IDBweCByZ2JhKDAsIDAsIDAsIDAuMTIpfS5tYXQtZWxldmF0aW9uLXo2W19uZ2NvbnRlbnQtJUNPTVAlXXtib3gtc2hhZG93OjBweCAzcHggNXB4IC0xcHggcmdiYSgwLCAwLCAwLCAwLjIpLDBweCA2cHggMTBweCAwcHggcmdiYSgwLCAwLCAwLCAwLjE0KSwwcHggMXB4IDE4cHggMHB4IHJnYmEoMCwgMCwgMCwgMC4xMil9Lm1hdC1lbGV2YXRpb24tejdbX25nY29udGVudC0lQ09NUCVde2JveC1zaGFkb3c6MHB4IDRweCA1cHggLTJweCByZ2JhKDAsIDAsIDAsIDAuMiksMHB4IDdweCAxMHB4IDFweCByZ2JhKDAsIDAsIDAsIDAuMTQpLDBweCAycHggMTZweCAxcHggcmdiYSgwLCAwLCAwLCAwLjEyKX0ubWF0LWVsZXZhdGlvbi16OFtfbmdjb250ZW50LSVDT01QJV17Ym94LXNoYWRvdzowcHggNXB4IDVweCAtM3B4IHJnYmEoMCwgMCwgMCwgMC4yKSwwcHggOHB4IDEwcHggMXB4IHJnYmEoMCwgMCwgMCwgMC4xNCksMHB4IDNweCAxNHB4IDJweCByZ2JhKDAsIDAsIDAsIDAuMTIpfS5tYXQtZWxldmF0aW9uLXo5W19uZ2NvbnRlbnQtJUNPTVAlXXtib3gtc2hhZG93OjBweCA1cHggNnB4IC0zcHggcmdiYSgwLCAwLCAwLCAwLjIpLDBweCA5cHggMTJweCAxcHggcmdiYSgwLCAwLCAwLCAwLjE0KSwwcHggM3B4IDE2cHggMnB4IHJnYmEoMCwgMCwgMCwgMC4xMil9Lm1hdC1lbGV2YXRpb24tejEwW19uZ2NvbnRlbnQtJUNPTVAlXXtib3gtc2hhZG93OjBweCA2cHggNnB4IC0zcHggcmdiYSgwLCAwLCAwLCAwLjIpLDBweCAxMHB4IDE0cHggMXB4IHJnYmEoMCwgMCwgMCwgMC4xNCksMHB4IDRweCAxOHB4IDNweCByZ2JhKDAsIDAsIDAsIDAuMTIpfS5tYXQtZWxldmF0aW9uLXoxMVtfbmdjb250ZW50LSVDT01QJV17Ym94LXNoYWRvdzowcHggNnB4IDdweCAtNHB4IHJnYmEoMCwgMCwgMCwgMC4yKSwwcHggMTFweCAxNXB4IDFweCByZ2JhKDAsIDAsIDAsIDAuMTQpLDBweCA0cHggMjBweCAzcHggcmdiYSgwLCAwLCAwLCAwLjEyKX0ubWF0LWVsZXZhdGlvbi16MTJbX25nY29udGVudC0lQ09NUCVde2JveC1zaGFkb3c6MHB4IDdweCA4cHggLTRweCByZ2JhKDAsIDAsIDAsIDAuMiksMHB4IDEycHggMTdweCAycHggcmdiYSgwLCAwLCAwLCAwLjE0KSwwcHggNXB4IDIycHggNHB4IHJnYmEoMCwgMCwgMCwgMC4xMil9Lm1hdC1lbGV2YXRpb24tejEzW19uZ2NvbnRlbnQtJUNPTVAlXXtib3gtc2hhZG93OjBweCA3cHggOHB4IC00cHggcmdiYSgwLCAwLCAwLCAwLjIpLDBweCAxM3B4IDE5cHggMnB4IHJnYmEoMCwgMCwgMCwgMC4xNCksMHB4IDVweCAyNHB4IDRweCByZ2JhKDAsIDAsIDAsIDAuMTIpfS5tYXQtZWxldmF0aW9uLXoxNFtfbmdjb250ZW50LSVDT01QJV17Ym94LXNoYWRvdzowcHggN3B4IDlweCAtNHB4IHJnYmEoMCwgMCwgMCwgMC4yKSwwcHggMTRweCAyMXB4IDJweCByZ2JhKDAsIDAsIDAsIDAuMTQpLDBweCA1cHggMjZweCA0cHggcmdiYSgwLCAwLCAwLCAwLjEyKX0ubWF0LWVsZXZhdGlvbi16MTVbX25nY29udGVudC0lQ09NUCVde2JveC1zaGFkb3c6MHB4IDhweCA5cHggLTVweCByZ2JhKDAsIDAsIDAsIDAuMiksMHB4IDE1cHggMjJweCAycHggcmdiYSgwLCAwLCAwLCAwLjE0KSwwcHggNnB4IDI4cHggNXB4IHJnYmEoMCwgMCwgMCwgMC4xMil9Lm1hdC1lbGV2YXRpb24tejE2W19uZ2NvbnRlbnQtJUNPTVAlXXtib3gtc2hhZG93OjBweCA4cHggMTBweCAtNXB4IHJnYmEoMCwgMCwgMCwgMC4yKSwwcHggMTZweCAyNHB4IDJweCByZ2JhKDAsIDAsIDAsIDAuMTQpLDBweCA2cHggMzBweCA1cHggcmdiYSgwLCAwLCAwLCAwLjEyKX0ubWF0LWVsZXZhdGlvbi16MTdbX25nY29udGVudC0lQ09NUCVde2JveC1zaGFkb3c6MHB4IDhweCAxMXB4IC01cHggcmdiYSgwLCAwLCAwLCAwLjIpLDBweCAxN3B4IDI2cHggMnB4IHJnYmEoMCwgMCwgMCwgMC4xNCksMHB4IDZweCAzMnB4IDVweCByZ2JhKDAsIDAsIDAsIDAuMTIpfS5tYXQtZWxldmF0aW9uLXoxOFtfbmdjb250ZW50LSVDT01QJV17Ym94LXNoYWRvdzowcHggOXB4IDExcHggLTVweCByZ2JhKDAsIDAsIDAsIDAuMiksMHB4IDE4cHggMjhweCAycHggcmdiYSgwLCAwLCAwLCAwLjE0KSwwcHggN3B4IDM0cHggNnB4IHJnYmEoMCwgMCwgMCwgMC4xMil9Lm1hdC1lbGV2YXRpb24tejE5W19uZ2NvbnRlbnQtJUNPTVAlXXtib3gtc2hhZG93OjBweCA5cHggMTJweCAtNnB4IHJnYmEoMCwgMCwgMCwgMC4yKSwwcHggMTlweCAyOXB4IDJweCByZ2JhKDAsIDAsIDAsIDAuMTQpLDBweCA3cHggMzZweCA2cHggcmdiYSgwLCAwLCAwLCAwLjEyKX0ubWF0LWVsZXZhdGlvbi16MjBbX25nY29udGVudC0lQ09NUCVde2JveC1zaGFkb3c6MHB4IDEwcHggMTNweCAtNnB4IHJnYmEoMCwgMCwgMCwgMC4yKSwwcHggMjBweCAzMXB4IDNweCByZ2JhKDAsIDAsIDAsIDAuMTQpLDBweCA4cHggMzhweCA3cHggcmdiYSgwLCAwLCAwLCAwLjEyKX0ubWF0LWVsZXZhdGlvbi16MjFbX25nY29udGVudC0lQ09NUCVde2JveC1zaGFkb3c6MHB4IDEwcHggMTNweCAtNnB4IHJnYmEoMCwgMCwgMCwgMC4yKSwwcHggMjFweCAzM3B4IDNweCByZ2JhKDAsIDAsIDAsIDAuMTQpLDBweCA4cHggNDBweCA3cHggcmdiYSgwLCAwLCAwLCAwLjEyKX0ubWF0LWVsZXZhdGlvbi16MjJbX25nY29udGVudC0lQ09NUCVde2JveC1zaGFkb3c6MHB4IDEwcHggMTRweCAtNnB4IHJnYmEoMCwgMCwgMCwgMC4yKSwwcHggMjJweCAzNXB4IDNweCByZ2JhKDAsIDAsIDAsIDAuMTQpLDBweCA4cHggNDJweCA3cHggcmdiYSgwLCAwLCAwLCAwLjEyKX0ubWF0LWVsZXZhdGlvbi16MjNbX25nY29udGVudC0lQ09NUCVde2JveC1zaGFkb3c6MHB4IDExcHggMTRweCAtN3B4IHJnYmEoMCwgMCwgMCwgMC4yKSwwcHggMjNweCAzNnB4IDNweCByZ2JhKDAsIDAsIDAsIDAuMTQpLDBweCA5cHggNDRweCA4cHggcmdiYSgwLCAwLCAwLCAwLjEyKX0ubWF0LWVsZXZhdGlvbi16MjRbX25nY29udGVudC0lQ09NUCVde2JveC1zaGFkb3c6MHB4IDExcHggMTVweCAtN3B4IHJnYmEoMCwgMCwgMCwgMC4yKSwwcHggMjRweCAzOHB4IDNweCByZ2JhKDAsIDAsIDAsIDAuMTQpLDBweCA5cHggNDZweCA4cHggcmdiYSgwLCAwLCAwLCAwLjEyKX0ubWF0LXRoZW1lLWxvYWRlZC1tYXJrZXJbX25nY29udGVudC0lQ09NUCVde2Rpc3BsYXk6bm9uZX0ubWF0LWF1dG9jb21wbGV0ZS1wYW5lbFtfbmdjb250ZW50LSVDT01QJV17YmFja2dyb3VuZDojZmZmO2NvbG9yOiMyMTIxMjF9Lm1hdC1hdXRvY29tcGxldGUtcGFuZWxbX25nY29udGVudC0lQ09NUCVdOm5vdChbY2xhc3MqPW1hdC1lbGV2YXRpb24tel0pe2JveC1zaGFkb3c6MHB4IDJweCA0cHggLTFweCByZ2JhKDAsIDAsIDAsIDAuMiksMHB4IDRweCA1cHggMHB4IHJnYmEoMCwgMCwgMCwgMC4xNCksMHB4IDFweCAxMHB4IDBweCByZ2JhKDAsIDAsIDAsIDAuMTIpfS5tYXQtYXV0b2NvbXBsZXRlLXBhbmVsW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtb3B0aW9uLm1hdC1zZWxlY3RlZFtfbmdjb250ZW50LSVDT01QJV06bm90KC5tYXQtYWN0aXZlKTpub3QoOmhvdmVyKXtiYWNrZ3JvdW5kOiNmZmZ9Lm1hdC1hdXRvY29tcGxldGUtcGFuZWxbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1vcHRpb24ubWF0LXNlbGVjdGVkW19uZ2NvbnRlbnQtJUNPTVAlXTpub3QoLm1hdC1hY3RpdmUpOm5vdCg6aG92ZXIpOm5vdCgubWF0LW9wdGlvbi1kaXNhYmxlZCl7Y29sb3I6IzIxMjEyMX0ubWF0LWJhZGdlLWNvbnRlbnRbX25nY29udGVudC0lQ09NUCVde2NvbG9yOiNmZmY7YmFja2dyb3VuZDojZjU3YzAwfS5jZGstaGlnaC1jb250cmFzdC1hY3RpdmVbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1iYWRnZS1jb250ZW50W19uZ2NvbnRlbnQtJUNPTVAlXXtvdXRsaW5lOnNvbGlkIDFweDtib3JkZXItcmFkaXVzOjB9Lm1hdC1iYWRnZS1hY2NlbnRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1iYWRnZS1jb250ZW50W19uZ2NvbnRlbnQtJUNPTVAlXXtiYWNrZ3JvdW5kOiNmZjk4MDA7Y29sb3I6I2ZmZn0ubWF0LWJhZGdlLXdhcm5bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1iYWRnZS1jb250ZW50W19uZ2NvbnRlbnQtJUNPTVAlXXtjb2xvcjojZmZmO2JhY2tncm91bmQ6I2Y0NDMzNn0ubWF0LWJhZGdlW19uZ2NvbnRlbnQtJUNPTVAlXXtwb3NpdGlvbjpyZWxhdGl2ZX0ubWF0LWJhZGdlLWhpZGRlbltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWJhZGdlLWNvbnRlbnRbX25nY29udGVudC0lQ09NUCVde2Rpc3BsYXk6bm9uZX0ubWF0LWJhZGdlLWRpc2FibGVkW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtYmFkZ2UtY29udGVudFtfbmdjb250ZW50LSVDT01QJV17YmFja2dyb3VuZDojYjliOWI5O2NvbG9yOiM3NTc1NzV9Lm1hdC1iYWRnZS1jb250ZW50W19uZ2NvbnRlbnQtJUNPTVAlXXtwb3NpdGlvbjphYnNvbHV0ZTt0ZXh0LWFsaWduOmNlbnRlcjtkaXNwbGF5OmlubGluZS1ibG9jaztib3JkZXItcmFkaXVzOjUwJTt0cmFuc2l0aW9uOnRyYW5zZm9ybSAyMDBtcyBlYXNlLWluLW91dDt0cmFuc2Zvcm06c2NhbGUoMC42KTtvdmVyZmxvdzpoaWRkZW47d2hpdGUtc3BhY2U6bm93cmFwO3RleHQtb3ZlcmZsb3c6ZWxsaXBzaXM7cG9pbnRlci1ldmVudHM6bm9uZX0ubmctYW5pbWF0ZS1kaXNhYmxlZFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWJhZGdlLWNvbnRlbnRbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWJhZGdlLWNvbnRlbnQuX21hdC1hbmltYXRpb24tbm9vcGFibGVbX25nY29udGVudC0lQ09NUCVde3RyYW5zaXRpb246bm9uZX0ubWF0LWJhZGdlLWNvbnRlbnQubWF0LWJhZGdlLWFjdGl2ZVtfbmdjb250ZW50LSVDT01QJV17dHJhbnNmb3JtOm5vbmV9Lm1hdC1iYWRnZS1zbWFsbFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWJhZGdlLWNvbnRlbnRbX25nY29udGVudC0lQ09NUCVde3dpZHRoOjE2cHg7aGVpZ2h0OjE2cHg7bGluZS1oZWlnaHQ6MTZweH0ubWF0LWJhZGdlLXNtYWxsLm1hdC1iYWRnZS1hYm92ZVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWJhZGdlLWNvbnRlbnRbX25nY29udGVudC0lQ09NUCVde3RvcDotOHB4fS5tYXQtYmFkZ2Utc21hbGwubWF0LWJhZGdlLWJlbG93W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtYmFkZ2UtY29udGVudFtfbmdjb250ZW50LSVDT01QJV17Ym90dG9tOi04cHh9Lm1hdC1iYWRnZS1zbWFsbC5tYXQtYmFkZ2UtYmVmb3JlW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtYmFkZ2UtY29udGVudFtfbmdjb250ZW50LSVDT01QJV17bGVmdDotMTZweH1bZGlyPXJ0bF1bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1iYWRnZS1zbWFsbC5tYXQtYmFkZ2UtYmVmb3JlW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtYmFkZ2UtY29udGVudFtfbmdjb250ZW50LSVDT01QJV17bGVmdDphdXRvO3JpZ2h0Oi0xNnB4fS5tYXQtYmFkZ2Utc21hbGwubWF0LWJhZGdlLWFmdGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtYmFkZ2UtY29udGVudFtfbmdjb250ZW50LSVDT01QJV17cmlnaHQ6LTE2cHh9W2Rpcj1ydGxdW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtYmFkZ2Utc21hbGwubWF0LWJhZGdlLWFmdGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtYmFkZ2UtY29udGVudFtfbmdjb250ZW50LSVDT01QJV17cmlnaHQ6YXV0bztsZWZ0Oi0xNnB4fS5tYXQtYmFkZ2Utc21hbGwubWF0LWJhZGdlLW92ZXJsYXAubWF0LWJhZGdlLWJlZm9yZVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWJhZGdlLWNvbnRlbnRbX25nY29udGVudC0lQ09NUCVde2xlZnQ6LThweH1bZGlyPXJ0bF1bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1iYWRnZS1zbWFsbC5tYXQtYmFkZ2Utb3ZlcmxhcC5tYXQtYmFkZ2UtYmVmb3JlW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtYmFkZ2UtY29udGVudFtfbmdjb250ZW50LSVDT01QJV17bGVmdDphdXRvO3JpZ2h0Oi04cHh9Lm1hdC1iYWRnZS1zbWFsbC5tYXQtYmFkZ2Utb3ZlcmxhcC5tYXQtYmFkZ2UtYWZ0ZXJbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1iYWRnZS1jb250ZW50W19uZ2NvbnRlbnQtJUNPTVAlXXtyaWdodDotOHB4fVtkaXI9cnRsXVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWJhZGdlLXNtYWxsLm1hdC1iYWRnZS1vdmVybGFwLm1hdC1iYWRnZS1hZnRlcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWJhZGdlLWNvbnRlbnRbX25nY29udGVudC0lQ09NUCVde3JpZ2h0OmF1dG87bGVmdDotOHB4fS5tYXQtYmFkZ2UtbWVkaXVtW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtYmFkZ2UtY29udGVudFtfbmdjb250ZW50LSVDT01QJV17d2lkdGg6MjJweDtoZWlnaHQ6MjJweDtsaW5lLWhlaWdodDoyMnB4fS5tYXQtYmFkZ2UtbWVkaXVtLm1hdC1iYWRnZS1hYm92ZVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWJhZGdlLWNvbnRlbnRbX25nY29udGVudC0lQ09NUCVde3RvcDotMTFweH0ubWF0LWJhZGdlLW1lZGl1bS5tYXQtYmFkZ2UtYmVsb3dbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1iYWRnZS1jb250ZW50W19uZ2NvbnRlbnQtJUNPTVAlXXtib3R0b206LTExcHh9Lm1hdC1iYWRnZS1tZWRpdW0ubWF0LWJhZGdlLWJlZm9yZVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWJhZGdlLWNvbnRlbnRbX25nY29udGVudC0lQ09NUCVde2xlZnQ6LTIycHh9W2Rpcj1ydGxdW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtYmFkZ2UtbWVkaXVtLm1hdC1iYWRnZS1iZWZvcmVbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1iYWRnZS1jb250ZW50W19uZ2NvbnRlbnQtJUNPTVAlXXtsZWZ0OmF1dG87cmlnaHQ6LTIycHh9Lm1hdC1iYWRnZS1tZWRpdW0ubWF0LWJhZGdlLWFmdGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtYmFkZ2UtY29udGVudFtfbmdjb250ZW50LSVDT01QJV17cmlnaHQ6LTIycHh9W2Rpcj1ydGxdW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtYmFkZ2UtbWVkaXVtLm1hdC1iYWRnZS1hZnRlcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWJhZGdlLWNvbnRlbnRbX25nY29udGVudC0lQ09NUCVde3JpZ2h0OmF1dG87bGVmdDotMjJweH0ubWF0LWJhZGdlLW1lZGl1bS5tYXQtYmFkZ2Utb3ZlcmxhcC5tYXQtYmFkZ2UtYmVmb3JlW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtYmFkZ2UtY29udGVudFtfbmdjb250ZW50LSVDT01QJV17bGVmdDotMTFweH1bZGlyPXJ0bF1bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1iYWRnZS1tZWRpdW0ubWF0LWJhZGdlLW92ZXJsYXAubWF0LWJhZGdlLWJlZm9yZVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWJhZGdlLWNvbnRlbnRbX25nY29udGVudC0lQ09NUCVde2xlZnQ6YXV0bztyaWdodDotMTFweH0ubWF0LWJhZGdlLW1lZGl1bS5tYXQtYmFkZ2Utb3ZlcmxhcC5tYXQtYmFkZ2UtYWZ0ZXJbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1iYWRnZS1jb250ZW50W19uZ2NvbnRlbnQtJUNPTVAlXXtyaWdodDotMTFweH1bZGlyPXJ0bF1bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1iYWRnZS1tZWRpdW0ubWF0LWJhZGdlLW92ZXJsYXAubWF0LWJhZGdlLWFmdGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtYmFkZ2UtY29udGVudFtfbmdjb250ZW50LSVDT01QJV17cmlnaHQ6YXV0bztsZWZ0Oi0xMXB4fS5tYXQtYmFkZ2UtbGFyZ2VbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1iYWRnZS1jb250ZW50W19uZ2NvbnRlbnQtJUNPTVAlXXt3aWR0aDoyOHB4O2hlaWdodDoyOHB4O2xpbmUtaGVpZ2h0OjI4cHh9Lm1hdC1iYWRnZS1sYXJnZS5tYXQtYmFkZ2UtYWJvdmVbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1iYWRnZS1jb250ZW50W19uZ2NvbnRlbnQtJUNPTVAlXXt0b3A6LTE0cHh9Lm1hdC1iYWRnZS1sYXJnZS5tYXQtYmFkZ2UtYmVsb3dbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1iYWRnZS1jb250ZW50W19uZ2NvbnRlbnQtJUNPTVAlXXtib3R0b206LTE0cHh9Lm1hdC1iYWRnZS1sYXJnZS5tYXQtYmFkZ2UtYmVmb3JlW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtYmFkZ2UtY29udGVudFtfbmdjb250ZW50LSVDT01QJV17bGVmdDotMjhweH1bZGlyPXJ0bF1bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1iYWRnZS1sYXJnZS5tYXQtYmFkZ2UtYmVmb3JlW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtYmFkZ2UtY29udGVudFtfbmdjb250ZW50LSVDT01QJV17bGVmdDphdXRvO3JpZ2h0Oi0yOHB4fS5tYXQtYmFkZ2UtbGFyZ2UubWF0LWJhZGdlLWFmdGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtYmFkZ2UtY29udGVudFtfbmdjb250ZW50LSVDT01QJV17cmlnaHQ6LTI4cHh9W2Rpcj1ydGxdW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtYmFkZ2UtbGFyZ2UubWF0LWJhZGdlLWFmdGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtYmFkZ2UtY29udGVudFtfbmdjb250ZW50LSVDT01QJV17cmlnaHQ6YXV0bztsZWZ0Oi0yOHB4fS5tYXQtYmFkZ2UtbGFyZ2UubWF0LWJhZGdlLW92ZXJsYXAubWF0LWJhZGdlLWJlZm9yZVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWJhZGdlLWNvbnRlbnRbX25nY29udGVudC0lQ09NUCVde2xlZnQ6LTE0cHh9W2Rpcj1ydGxdW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtYmFkZ2UtbGFyZ2UubWF0LWJhZGdlLW92ZXJsYXAubWF0LWJhZGdlLWJlZm9yZVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWJhZGdlLWNvbnRlbnRbX25nY29udGVudC0lQ09NUCVde2xlZnQ6YXV0bztyaWdodDotMTRweH0ubWF0LWJhZGdlLWxhcmdlLm1hdC1iYWRnZS1vdmVybGFwLm1hdC1iYWRnZS1hZnRlcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWJhZGdlLWNvbnRlbnRbX25nY29udGVudC0lQ09NUCVde3JpZ2h0Oi0xNHB4fVtkaXI9cnRsXVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWJhZGdlLWxhcmdlLm1hdC1iYWRnZS1vdmVybGFwLm1hdC1iYWRnZS1hZnRlcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWJhZGdlLWNvbnRlbnRbX25nY29udGVudC0lQ09NUCVde3JpZ2h0OmF1dG87bGVmdDotMTRweH0ubWF0LWJvdHRvbS1zaGVldC1jb250YWluZXJbX25nY29udGVudC0lQ09NUCVde2JveC1zaGFkb3c6MHB4IDhweCAxMHB4IC01cHggcmdiYSgwLCAwLCAwLCAwLjIpLDBweCAxNnB4IDI0cHggMnB4IHJnYmEoMCwgMCwgMCwgMC4xNCksMHB4IDZweCAzMHB4IDVweCByZ2JhKDAsIDAsIDAsIDAuMTIpO2JhY2tncm91bmQ6I2ZmZjtjb2xvcjojMjEyMTIxfS5tYXQtYnV0dG9uW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1pY29uLWJ1dHRvbltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtc3Ryb2tlZC1idXR0b25bX25nY29udGVudC0lQ09NUCVde2NvbG9yOmluaGVyaXQ7YmFja2dyb3VuZDp0cmFuc3BhcmVudH0ubWF0LWJ1dHRvbi5tYXQtcHJpbWFyeVtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtaWNvbi1idXR0b24ubWF0LXByaW1hcnlbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXN0cm9rZWQtYnV0dG9uLm1hdC1wcmltYXJ5W19uZ2NvbnRlbnQtJUNPTVAlXXtjb2xvcjojZjU3YzAwfS5tYXQtYnV0dG9uLm1hdC1hY2NlbnRbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWljb24tYnV0dG9uLm1hdC1hY2NlbnRbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXN0cm9rZWQtYnV0dG9uLm1hdC1hY2NlbnRbX25nY29udGVudC0lQ09NUCVde2NvbG9yOiNmZjk4MDB9Lm1hdC1idXR0b24ubWF0LXdhcm5bX25nY29udGVudC0lQ09NUCVdLCAubWF0LWljb24tYnV0dG9uLm1hdC13YXJuW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1zdHJva2VkLWJ1dHRvbi5tYXQtd2Fybltfbmdjb250ZW50LSVDT01QJV17Y29sb3I6I2Y0NDMzNn0ubWF0LWJ1dHRvbi5tYXQtcHJpbWFyeS5tYXQtYnV0dG9uLWRpc2FibGVkW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1idXR0b24ubWF0LWFjY2VudC5tYXQtYnV0dG9uLWRpc2FibGVkW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1idXR0b24ubWF0LXdhcm4ubWF0LWJ1dHRvbi1kaXNhYmxlZFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtYnV0dG9uLm1hdC1idXR0b24tZGlzYWJsZWQubWF0LWJ1dHRvbi1kaXNhYmxlZFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtaWNvbi1idXR0b24ubWF0LXByaW1hcnkubWF0LWJ1dHRvbi1kaXNhYmxlZFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtaWNvbi1idXR0b24ubWF0LWFjY2VudC5tYXQtYnV0dG9uLWRpc2FibGVkW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1pY29uLWJ1dHRvbi5tYXQtd2Fybi5tYXQtYnV0dG9uLWRpc2FibGVkW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1pY29uLWJ1dHRvbi5tYXQtYnV0dG9uLWRpc2FibGVkLm1hdC1idXR0b24tZGlzYWJsZWRbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXN0cm9rZWQtYnV0dG9uLm1hdC1wcmltYXJ5Lm1hdC1idXR0b24tZGlzYWJsZWRbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXN0cm9rZWQtYnV0dG9uLm1hdC1hY2NlbnQubWF0LWJ1dHRvbi1kaXNhYmxlZFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtc3Ryb2tlZC1idXR0b24ubWF0LXdhcm4ubWF0LWJ1dHRvbi1kaXNhYmxlZFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtc3Ryb2tlZC1idXR0b24ubWF0LWJ1dHRvbi1kaXNhYmxlZC5tYXQtYnV0dG9uLWRpc2FibGVkW19uZ2NvbnRlbnQtJUNPTVAlXXtjb2xvcjpyZ2JhKDAsMCwwLC4yNil9Lm1hdC1idXR0b24ubWF0LXByaW1hcnlbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1idXR0b24tZm9jdXMtb3ZlcmxheVtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtaWNvbi1idXR0b24ubWF0LXByaW1hcnlbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1idXR0b24tZm9jdXMtb3ZlcmxheVtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtc3Ryb2tlZC1idXR0b24ubWF0LXByaW1hcnlbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1idXR0b24tZm9jdXMtb3ZlcmxheVtfbmdjb250ZW50LSVDT01QJV17YmFja2dyb3VuZC1jb2xvcjojZjU3YzAwfS5tYXQtYnV0dG9uLm1hdC1hY2NlbnRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1idXR0b24tZm9jdXMtb3ZlcmxheVtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtaWNvbi1idXR0b24ubWF0LWFjY2VudFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWJ1dHRvbi1mb2N1cy1vdmVybGF5W19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1zdHJva2VkLWJ1dHRvbi5tYXQtYWNjZW50W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtYnV0dG9uLWZvY3VzLW92ZXJsYXlbX25nY29udGVudC0lQ09NUCVde2JhY2tncm91bmQtY29sb3I6I2ZmOTgwMH0ubWF0LWJ1dHRvbi5tYXQtd2Fybltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWJ1dHRvbi1mb2N1cy1vdmVybGF5W19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1pY29uLWJ1dHRvbi5tYXQtd2Fybltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWJ1dHRvbi1mb2N1cy1vdmVybGF5W19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1zdHJva2VkLWJ1dHRvbi5tYXQtd2Fybltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWJ1dHRvbi1mb2N1cy1vdmVybGF5W19uZ2NvbnRlbnQtJUNPTVAlXXtiYWNrZ3JvdW5kLWNvbG9yOiNmNDQzMzZ9Lm1hdC1idXR0b24ubWF0LWJ1dHRvbi1kaXNhYmxlZFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWJ1dHRvbi1mb2N1cy1vdmVybGF5W19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1pY29uLWJ1dHRvbi5tYXQtYnV0dG9uLWRpc2FibGVkW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtYnV0dG9uLWZvY3VzLW92ZXJsYXlbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXN0cm9rZWQtYnV0dG9uLm1hdC1idXR0b24tZGlzYWJsZWRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1idXR0b24tZm9jdXMtb3ZlcmxheVtfbmdjb250ZW50LSVDT01QJV17YmFja2dyb3VuZC1jb2xvcjp0cmFuc3BhcmVudH0ubWF0LWJ1dHRvbltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXJpcHBsZS1lbGVtZW50W19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1pY29uLWJ1dHRvbltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXJpcHBsZS1lbGVtZW50W19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1zdHJva2VkLWJ1dHRvbltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXJpcHBsZS1lbGVtZW50W19uZ2NvbnRlbnQtJUNPTVAlXXtvcGFjaXR5Oi4xO2JhY2tncm91bmQtY29sb3I6Y3VycmVudENvbG9yfS5tYXQtYnV0dG9uLWZvY3VzLW92ZXJsYXlbX25nY29udGVudC0lQ09NUCVde2JhY2tncm91bmQ6IzAwMH0ubWF0LXN0cm9rZWQtYnV0dG9uW19uZ2NvbnRlbnQtJUNPTVAlXTpub3QoLm1hdC1idXR0b24tZGlzYWJsZWQpe2JvcmRlci1jb2xvcjpyZ2JhKDAsMCwwLC4xMil9Lm1hdC1mbGF0LWJ1dHRvbltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtcmFpc2VkLWJ1dHRvbltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtZmFiW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1taW5pLWZhYltfbmdjb250ZW50LSVDT01QJV17Y29sb3I6IzIxMjEyMTtiYWNrZ3JvdW5kLWNvbG9yOiNmZmZ9Lm1hdC1mbGF0LWJ1dHRvbi5tYXQtcHJpbWFyeVtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtcmFpc2VkLWJ1dHRvbi5tYXQtcHJpbWFyeVtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtZmFiLm1hdC1wcmltYXJ5W19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1taW5pLWZhYi5tYXQtcHJpbWFyeVtfbmdjb250ZW50LSVDT01QJV17Y29sb3I6I2ZmZn0ubWF0LWZsYXQtYnV0dG9uLm1hdC1hY2NlbnRbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXJhaXNlZC1idXR0b24ubWF0LWFjY2VudFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtZmFiLm1hdC1hY2NlbnRbX25nY29udGVudC0lQ09NUCVdLCAubWF0LW1pbmktZmFiLm1hdC1hY2NlbnRbX25nY29udGVudC0lQ09NUCVde2NvbG9yOiNmZmZ9Lm1hdC1mbGF0LWJ1dHRvbi5tYXQtd2Fybltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtcmFpc2VkLWJ1dHRvbi5tYXQtd2Fybltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtZmFiLm1hdC13YXJuW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1taW5pLWZhYi5tYXQtd2Fybltfbmdjb250ZW50LSVDT01QJV17Y29sb3I6I2ZmZn0ubWF0LWZsYXQtYnV0dG9uLm1hdC1wcmltYXJ5Lm1hdC1idXR0b24tZGlzYWJsZWRbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWZsYXQtYnV0dG9uLm1hdC1hY2NlbnQubWF0LWJ1dHRvbi1kaXNhYmxlZFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtZmxhdC1idXR0b24ubWF0LXdhcm4ubWF0LWJ1dHRvbi1kaXNhYmxlZFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtZmxhdC1idXR0b24ubWF0LWJ1dHRvbi1kaXNhYmxlZC5tYXQtYnV0dG9uLWRpc2FibGVkW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1yYWlzZWQtYnV0dG9uLm1hdC1wcmltYXJ5Lm1hdC1idXR0b24tZGlzYWJsZWRbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXJhaXNlZC1idXR0b24ubWF0LWFjY2VudC5tYXQtYnV0dG9uLWRpc2FibGVkW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1yYWlzZWQtYnV0dG9uLm1hdC13YXJuLm1hdC1idXR0b24tZGlzYWJsZWRbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXJhaXNlZC1idXR0b24ubWF0LWJ1dHRvbi1kaXNhYmxlZC5tYXQtYnV0dG9uLWRpc2FibGVkW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1mYWIubWF0LXByaW1hcnkubWF0LWJ1dHRvbi1kaXNhYmxlZFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtZmFiLm1hdC1hY2NlbnQubWF0LWJ1dHRvbi1kaXNhYmxlZFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtZmFiLm1hdC13YXJuLm1hdC1idXR0b24tZGlzYWJsZWRbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWZhYi5tYXQtYnV0dG9uLWRpc2FibGVkLm1hdC1idXR0b24tZGlzYWJsZWRbX25nY29udGVudC0lQ09NUCVdLCAubWF0LW1pbmktZmFiLm1hdC1wcmltYXJ5Lm1hdC1idXR0b24tZGlzYWJsZWRbX25nY29udGVudC0lQ09NUCVdLCAubWF0LW1pbmktZmFiLm1hdC1hY2NlbnQubWF0LWJ1dHRvbi1kaXNhYmxlZFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtbWluaS1mYWIubWF0LXdhcm4ubWF0LWJ1dHRvbi1kaXNhYmxlZFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtbWluaS1mYWIubWF0LWJ1dHRvbi1kaXNhYmxlZC5tYXQtYnV0dG9uLWRpc2FibGVkW19uZ2NvbnRlbnQtJUNPTVAlXXtjb2xvcjpyZ2JhKDAsMCwwLC4yNil9Lm1hdC1mbGF0LWJ1dHRvbi5tYXQtcHJpbWFyeVtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtcmFpc2VkLWJ1dHRvbi5tYXQtcHJpbWFyeVtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtZmFiLm1hdC1wcmltYXJ5W19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1taW5pLWZhYi5tYXQtcHJpbWFyeVtfbmdjb250ZW50LSVDT01QJV17YmFja2dyb3VuZC1jb2xvcjojZjU3YzAwfS5tYXQtZmxhdC1idXR0b24ubWF0LWFjY2VudFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtcmFpc2VkLWJ1dHRvbi5tYXQtYWNjZW50W19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1mYWIubWF0LWFjY2VudFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtbWluaS1mYWIubWF0LWFjY2VudFtfbmdjb250ZW50LSVDT01QJV17YmFja2dyb3VuZC1jb2xvcjojZmY5ODAwfS5tYXQtZmxhdC1idXR0b24ubWF0LXdhcm5bX25nY29udGVudC0lQ09NUCVdLCAubWF0LXJhaXNlZC1idXR0b24ubWF0LXdhcm5bX25nY29udGVudC0lQ09NUCVdLCAubWF0LWZhYi5tYXQtd2Fybltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtbWluaS1mYWIubWF0LXdhcm5bX25nY29udGVudC0lQ09NUCVde2JhY2tncm91bmQtY29sb3I6I2Y0NDMzNn0ubWF0LWZsYXQtYnV0dG9uLm1hdC1wcmltYXJ5Lm1hdC1idXR0b24tZGlzYWJsZWRbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWZsYXQtYnV0dG9uLm1hdC1hY2NlbnQubWF0LWJ1dHRvbi1kaXNhYmxlZFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtZmxhdC1idXR0b24ubWF0LXdhcm4ubWF0LWJ1dHRvbi1kaXNhYmxlZFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtZmxhdC1idXR0b24ubWF0LWJ1dHRvbi1kaXNhYmxlZC5tYXQtYnV0dG9uLWRpc2FibGVkW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1yYWlzZWQtYnV0dG9uLm1hdC1wcmltYXJ5Lm1hdC1idXR0b24tZGlzYWJsZWRbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXJhaXNlZC1idXR0b24ubWF0LWFjY2VudC5tYXQtYnV0dG9uLWRpc2FibGVkW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1yYWlzZWQtYnV0dG9uLm1hdC13YXJuLm1hdC1idXR0b24tZGlzYWJsZWRbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXJhaXNlZC1idXR0b24ubWF0LWJ1dHRvbi1kaXNhYmxlZC5tYXQtYnV0dG9uLWRpc2FibGVkW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1mYWIubWF0LXByaW1hcnkubWF0LWJ1dHRvbi1kaXNhYmxlZFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtZmFiLm1hdC1hY2NlbnQubWF0LWJ1dHRvbi1kaXNhYmxlZFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtZmFiLm1hdC13YXJuLm1hdC1idXR0b24tZGlzYWJsZWRbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWZhYi5tYXQtYnV0dG9uLWRpc2FibGVkLm1hdC1idXR0b24tZGlzYWJsZWRbX25nY29udGVudC0lQ09NUCVdLCAubWF0LW1pbmktZmFiLm1hdC1wcmltYXJ5Lm1hdC1idXR0b24tZGlzYWJsZWRbX25nY29udGVudC0lQ09NUCVdLCAubWF0LW1pbmktZmFiLm1hdC1hY2NlbnQubWF0LWJ1dHRvbi1kaXNhYmxlZFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtbWluaS1mYWIubWF0LXdhcm4ubWF0LWJ1dHRvbi1kaXNhYmxlZFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtbWluaS1mYWIubWF0LWJ1dHRvbi1kaXNhYmxlZC5tYXQtYnV0dG9uLWRpc2FibGVkW19uZ2NvbnRlbnQtJUNPTVAlXXtiYWNrZ3JvdW5kLWNvbG9yOnJnYmEoMCwwLDAsLjEyKX0ubWF0LWZsYXQtYnV0dG9uLm1hdC1wcmltYXJ5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtcmlwcGxlLWVsZW1lbnRbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXJhaXNlZC1idXR0b24ubWF0LXByaW1hcnlbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1yaXBwbGUtZWxlbWVudFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtZmFiLm1hdC1wcmltYXJ5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtcmlwcGxlLWVsZW1lbnRbX25nY29udGVudC0lQ09NUCVdLCAubWF0LW1pbmktZmFiLm1hdC1wcmltYXJ5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtcmlwcGxlLWVsZW1lbnRbX25nY29udGVudC0lQ09NUCVde2JhY2tncm91bmQtY29sb3I6cmdiYSgyNTUsMjU1LDI1NSwuMSl9Lm1hdC1mbGF0LWJ1dHRvbi5tYXQtYWNjZW50W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtcmlwcGxlLWVsZW1lbnRbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXJhaXNlZC1idXR0b24ubWF0LWFjY2VudFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXJpcHBsZS1lbGVtZW50W19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1mYWIubWF0LWFjY2VudFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXJpcHBsZS1lbGVtZW50W19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1taW5pLWZhYi5tYXQtYWNjZW50W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtcmlwcGxlLWVsZW1lbnRbX25nY29udGVudC0lQ09NUCVde2JhY2tncm91bmQtY29sb3I6cmdiYSgyNTUsMjU1LDI1NSwuMSl9Lm1hdC1mbGF0LWJ1dHRvbi5tYXQtd2Fybltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXJpcHBsZS1lbGVtZW50W19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1yYWlzZWQtYnV0dG9uLm1hdC13YXJuW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtcmlwcGxlLWVsZW1lbnRbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWZhYi5tYXQtd2Fybltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXJpcHBsZS1lbGVtZW50W19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1taW5pLWZhYi5tYXQtd2Fybltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXJpcHBsZS1lbGVtZW50W19uZ2NvbnRlbnQtJUNPTVAlXXtiYWNrZ3JvdW5kLWNvbG9yOnJnYmEoMjU1LDI1NSwyNTUsLjEpfS5tYXQtc3Ryb2tlZC1idXR0b25bX25nY29udGVudC0lQ09NUCVdOm5vdChbY2xhc3MqPW1hdC1lbGV2YXRpb24tel0pLCAubWF0LWZsYXQtYnV0dG9uW19uZ2NvbnRlbnQtJUNPTVAlXTpub3QoW2NsYXNzKj1tYXQtZWxldmF0aW9uLXpdKXtib3gtc2hhZG93OjBweCAwcHggMHB4IDBweCByZ2JhKDAsIDAsIDAsIDAuMiksMHB4IDBweCAwcHggMHB4IHJnYmEoMCwgMCwgMCwgMC4xNCksMHB4IDBweCAwcHggMHB4IHJnYmEoMCwgMCwgMCwgMC4xMil9Lm1hdC1yYWlzZWQtYnV0dG9uW19uZ2NvbnRlbnQtJUNPTVAlXTpub3QoW2NsYXNzKj1tYXQtZWxldmF0aW9uLXpdKXtib3gtc2hhZG93OjBweCAzcHggMXB4IC0ycHggcmdiYSgwLCAwLCAwLCAwLjIpLDBweCAycHggMnB4IDBweCByZ2JhKDAsIDAsIDAsIDAuMTQpLDBweCAxcHggNXB4IDBweCByZ2JhKDAsIDAsIDAsIDAuMTIpfS5tYXQtcmFpc2VkLWJ1dHRvbltfbmdjb250ZW50LSVDT01QJV06bm90KC5tYXQtYnV0dG9uLWRpc2FibGVkKTphY3RpdmU6bm90KFtjbGFzcyo9bWF0LWVsZXZhdGlvbi16XSl7Ym94LXNoYWRvdzowcHggNXB4IDVweCAtM3B4IHJnYmEoMCwgMCwgMCwgMC4yKSwwcHggOHB4IDEwcHggMXB4IHJnYmEoMCwgMCwgMCwgMC4xNCksMHB4IDNweCAxNHB4IDJweCByZ2JhKDAsIDAsIDAsIDAuMTIpfS5tYXQtcmFpc2VkLWJ1dHRvbi5tYXQtYnV0dG9uLWRpc2FibGVkW19uZ2NvbnRlbnQtJUNPTVAlXTpub3QoW2NsYXNzKj1tYXQtZWxldmF0aW9uLXpdKXtib3gtc2hhZG93OjBweCAwcHggMHB4IDBweCByZ2JhKDAsIDAsIDAsIDAuMiksMHB4IDBweCAwcHggMHB4IHJnYmEoMCwgMCwgMCwgMC4xNCksMHB4IDBweCAwcHggMHB4IHJnYmEoMCwgMCwgMCwgMC4xMil9Lm1hdC1mYWJbX25nY29udGVudC0lQ09NUCVdOm5vdChbY2xhc3MqPW1hdC1lbGV2YXRpb24tel0pLCAubWF0LW1pbmktZmFiW19uZ2NvbnRlbnQtJUNPTVAlXTpub3QoW2NsYXNzKj1tYXQtZWxldmF0aW9uLXpdKXtib3gtc2hhZG93OjBweCAzcHggNXB4IC0xcHggcmdiYSgwLCAwLCAwLCAwLjIpLDBweCA2cHggMTBweCAwcHggcmdiYSgwLCAwLCAwLCAwLjE0KSwwcHggMXB4IDE4cHggMHB4IHJnYmEoMCwgMCwgMCwgMC4xMil9Lm1hdC1mYWJbX25nY29udGVudC0lQ09NUCVdOm5vdCgubWF0LWJ1dHRvbi1kaXNhYmxlZCk6YWN0aXZlOm5vdChbY2xhc3MqPW1hdC1lbGV2YXRpb24tel0pLCAubWF0LW1pbmktZmFiW19uZ2NvbnRlbnQtJUNPTVAlXTpub3QoLm1hdC1idXR0b24tZGlzYWJsZWQpOmFjdGl2ZTpub3QoW2NsYXNzKj1tYXQtZWxldmF0aW9uLXpdKXtib3gtc2hhZG93OjBweCA3cHggOHB4IC00cHggcmdiYSgwLCAwLCAwLCAwLjIpLDBweCAxMnB4IDE3cHggMnB4IHJnYmEoMCwgMCwgMCwgMC4xNCksMHB4IDVweCAyMnB4IDRweCByZ2JhKDAsIDAsIDAsIDAuMTIpfS5tYXQtZmFiLm1hdC1idXR0b24tZGlzYWJsZWRbX25nY29udGVudC0lQ09NUCVdOm5vdChbY2xhc3MqPW1hdC1lbGV2YXRpb24tel0pLCAubWF0LW1pbmktZmFiLm1hdC1idXR0b24tZGlzYWJsZWRbX25nY29udGVudC0lQ09NUCVdOm5vdChbY2xhc3MqPW1hdC1lbGV2YXRpb24tel0pe2JveC1zaGFkb3c6MHB4IDBweCAwcHggMHB4IHJnYmEoMCwgMCwgMCwgMC4yKSwwcHggMHB4IDBweCAwcHggcmdiYSgwLCAwLCAwLCAwLjE0KSwwcHggMHB4IDBweCAwcHggcmdiYSgwLCAwLCAwLCAwLjEyKX0ubWF0LWJ1dHRvbi10b2dnbGUtc3RhbmRhbG9uZVtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtYnV0dG9uLXRvZ2dsZS1ncm91cFtfbmdjb250ZW50LSVDT01QJV17Ym94LXNoYWRvdzowcHggM3B4IDFweCAtMnB4IHJnYmEoMCwgMCwgMCwgMC4yKSwwcHggMnB4IDJweCAwcHggcmdiYSgwLCAwLCAwLCAwLjE0KSwwcHggMXB4IDVweCAwcHggcmdiYSgwLCAwLCAwLCAwLjEyKX0ubWF0LWJ1dHRvbi10b2dnbGUtc3RhbmRhbG9uZS5tYXQtYnV0dG9uLXRvZ2dsZS1hcHBlYXJhbmNlLXN0YW5kYXJkW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1idXR0b24tdG9nZ2xlLWdyb3VwLWFwcGVhcmFuY2Utc3RhbmRhcmRbX25nY29udGVudC0lQ09NUCVde2JveC1zaGFkb3c6bm9uZX0ubWF0LWJ1dHRvbi10b2dnbGVbX25nY29udGVudC0lQ09NUCVde2NvbG9yOnJnYmEoMCwwLDAsLjM4KX0ubWF0LWJ1dHRvbi10b2dnbGVbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1idXR0b24tdG9nZ2xlLWZvY3VzLW92ZXJsYXlbX25nY29udGVudC0lQ09NUCVde2JhY2tncm91bmQtY29sb3I6cmdiYSgwLDAsMCwuMTIpfS5tYXQtYnV0dG9uLXRvZ2dsZS1hcHBlYXJhbmNlLXN0YW5kYXJkW19uZ2NvbnRlbnQtJUNPTVAlXXtjb2xvcjojMjEyMTIxO2JhY2tncm91bmQ6I2ZmZn0ubWF0LWJ1dHRvbi10b2dnbGUtYXBwZWFyYW5jZS1zdGFuZGFyZFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWJ1dHRvbi10b2dnbGUtZm9jdXMtb3ZlcmxheVtfbmdjb250ZW50LSVDT01QJV17YmFja2dyb3VuZC1jb2xvcjojMDAwfS5tYXQtYnV0dG9uLXRvZ2dsZS1ncm91cC1hcHBlYXJhbmNlLXN0YW5kYXJkW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtYnV0dG9uLXRvZ2dsZVtfbmdjb250ZW50LSVDT01QJV0gKyAubWF0LWJ1dHRvbi10b2dnbGVbX25nY29udGVudC0lQ09NUCVde2JvcmRlci1sZWZ0OnNvbGlkIDFweCByZ2JhKDAsMCwwLC4xMil9W2Rpcj1ydGxdW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtYnV0dG9uLXRvZ2dsZS1ncm91cC1hcHBlYXJhbmNlLXN0YW5kYXJkW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtYnV0dG9uLXRvZ2dsZVtfbmdjb250ZW50LSVDT01QJV0gKyAubWF0LWJ1dHRvbi10b2dnbGVbX25nY29udGVudC0lQ09NUCVde2JvcmRlci1sZWZ0Om5vbmU7Ym9yZGVyLXJpZ2h0OnNvbGlkIDFweCByZ2JhKDAsMCwwLC4xMil9Lm1hdC1idXR0b24tdG9nZ2xlLWdyb3VwLWFwcGVhcmFuY2Utc3RhbmRhcmQubWF0LWJ1dHRvbi10b2dnbGUtdmVydGljYWxbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1idXR0b24tdG9nZ2xlW19uZ2NvbnRlbnQtJUNPTVAlXSArIC5tYXQtYnV0dG9uLXRvZ2dsZVtfbmdjb250ZW50LSVDT01QJV17Ym9yZGVyLWxlZnQ6bm9uZTtib3JkZXItcmlnaHQ6bm9uZTtib3JkZXItdG9wOnNvbGlkIDFweCByZ2JhKDAsMCwwLC4xMil9Lm1hdC1idXR0b24tdG9nZ2xlLWNoZWNrZWRbX25nY29udGVudC0lQ09NUCVde2JhY2tncm91bmQtY29sb3I6I2UwZTBlMDtjb2xvcjojNjE2MTYxfS5tYXQtYnV0dG9uLXRvZ2dsZS1jaGVja2VkLm1hdC1idXR0b24tdG9nZ2xlLWFwcGVhcmFuY2Utc3RhbmRhcmRbX25nY29udGVudC0lQ09NUCVde2NvbG9yOiMyMTIxMjF9Lm1hdC1idXR0b24tdG9nZ2xlLWRpc2FibGVkW19uZ2NvbnRlbnQtJUNPTVAlXXtjb2xvcjpyZ2JhKDAsMCwwLC4yNik7YmFja2dyb3VuZC1jb2xvcjojZWVlfS5tYXQtYnV0dG9uLXRvZ2dsZS1kaXNhYmxlZC5tYXQtYnV0dG9uLXRvZ2dsZS1hcHBlYXJhbmNlLXN0YW5kYXJkW19uZ2NvbnRlbnQtJUNPTVAlXXtiYWNrZ3JvdW5kOiNmZmZ9Lm1hdC1idXR0b24tdG9nZ2xlLWRpc2FibGVkLm1hdC1idXR0b24tdG9nZ2xlLWNoZWNrZWRbX25nY29udGVudC0lQ09NUCVde2JhY2tncm91bmQtY29sb3I6I2JkYmRiZH0ubWF0LWJ1dHRvbi10b2dnbGUtc3RhbmRhbG9uZS5tYXQtYnV0dG9uLXRvZ2dsZS1hcHBlYXJhbmNlLXN0YW5kYXJkW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1idXR0b24tdG9nZ2xlLWdyb3VwLWFwcGVhcmFuY2Utc3RhbmRhcmRbX25nY29udGVudC0lQ09NUCVde2JvcmRlcjpzb2xpZCAxcHggcmdiYSgwLDAsMCwuMTIpfS5tYXQtYnV0dG9uLXRvZ2dsZS1hcHBlYXJhbmNlLXN0YW5kYXJkW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtYnV0dG9uLXRvZ2dsZS1sYWJlbC1jb250ZW50W19uZ2NvbnRlbnQtJUNPTVAlXXtsaW5lLWhlaWdodDo0OHB4fS5tYXQtY2FyZFtfbmdjb250ZW50LSVDT01QJV17YmFja2dyb3VuZDojZmZmO2NvbG9yOiMyMTIxMjF9Lm1hdC1jYXJkW19uZ2NvbnRlbnQtJUNPTVAlXTpub3QoW2NsYXNzKj1tYXQtZWxldmF0aW9uLXpdKXtib3gtc2hhZG93OjBweCAycHggMXB4IC0xcHggcmdiYSgwLCAwLCAwLCAwLjIpLDBweCAxcHggMXB4IDBweCByZ2JhKDAsIDAsIDAsIDAuMTQpLDBweCAxcHggM3B4IDBweCByZ2JhKDAsIDAsIDAsIDAuMTIpfS5tYXQtY2FyZC5tYXQtY2FyZC1mbGF0W19uZ2NvbnRlbnQtJUNPTVAlXTpub3QoW2NsYXNzKj1tYXQtZWxldmF0aW9uLXpdKXtib3gtc2hhZG93OjBweCAwcHggMHB4IDBweCByZ2JhKDAsIDAsIDAsIDAuMiksMHB4IDBweCAwcHggMHB4IHJnYmEoMCwgMCwgMCwgMC4xNCksMHB4IDBweCAwcHggMHB4IHJnYmEoMCwgMCwgMCwgMC4xMil9Lm1hdC1jYXJkLXN1YnRpdGxlW19uZ2NvbnRlbnQtJUNPTVAlXXtjb2xvcjojNjE2MTYxfS5tYXQtY2hlY2tib3gtZnJhbWVbX25nY29udGVudC0lQ09NUCVde2JvcmRlci1jb2xvcjojNjE2MTYxfS5tYXQtY2hlY2tib3gtY2hlY2ttYXJrW19uZ2NvbnRlbnQtJUNPTVAlXXtmaWxsOiNmYWZhZmF9Lm1hdC1jaGVja2JveC1jaGVja21hcmstcGF0aFtfbmdjb250ZW50LSVDT01QJV17c3Ryb2tlOiNmYWZhZmEgIWltcG9ydGFudH0ubWF0LWNoZWNrYm94LW1peGVkbWFya1tfbmdjb250ZW50LSVDT01QJV17YmFja2dyb3VuZC1jb2xvcjojZmFmYWZhfS5tYXQtY2hlY2tib3gtaW5kZXRlcm1pbmF0ZS5tYXQtcHJpbWFyeVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWNoZWNrYm94LWJhY2tncm91bmRbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWNoZWNrYm94LWNoZWNrZWQubWF0LXByaW1hcnlbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1jaGVja2JveC1iYWNrZ3JvdW5kW19uZ2NvbnRlbnQtJUNPTVAlXXtiYWNrZ3JvdW5kLWNvbG9yOiNmNTdjMDB9Lm1hdC1jaGVja2JveC1pbmRldGVybWluYXRlLm1hdC1hY2NlbnRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1jaGVja2JveC1iYWNrZ3JvdW5kW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1jaGVja2JveC1jaGVja2VkLm1hdC1hY2NlbnRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1jaGVja2JveC1iYWNrZ3JvdW5kW19uZ2NvbnRlbnQtJUNPTVAlXXtiYWNrZ3JvdW5kLWNvbG9yOiNmZjk4MDB9Lm1hdC1jaGVja2JveC1pbmRldGVybWluYXRlLm1hdC13YXJuW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtY2hlY2tib3gtYmFja2dyb3VuZFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtY2hlY2tib3gtY2hlY2tlZC5tYXQtd2Fybltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWNoZWNrYm94LWJhY2tncm91bmRbX25nY29udGVudC0lQ09NUCVde2JhY2tncm91bmQtY29sb3I6I2Y0NDMzNn0ubWF0LWNoZWNrYm94LWRpc2FibGVkLm1hdC1jaGVja2JveC1jaGVja2VkW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtY2hlY2tib3gtYmFja2dyb3VuZFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtY2hlY2tib3gtZGlzYWJsZWQubWF0LWNoZWNrYm94LWluZGV0ZXJtaW5hdGVbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1jaGVja2JveC1iYWNrZ3JvdW5kW19uZ2NvbnRlbnQtJUNPTVAlXXtiYWNrZ3JvdW5kLWNvbG9yOiNiMGIwYjB9Lm1hdC1jaGVja2JveC1kaXNhYmxlZFtfbmdjb250ZW50LSVDT01QJV06bm90KC5tYXQtY2hlY2tib3gtY2hlY2tlZCkgICAubWF0LWNoZWNrYm94LWZyYW1lW19uZ2NvbnRlbnQtJUNPTVAlXXtib3JkZXItY29sb3I6I2IwYjBiMH0ubWF0LWNoZWNrYm94LWRpc2FibGVkW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtY2hlY2tib3gtbGFiZWxbX25nY29udGVudC0lQ09NUCVde2NvbG9yOiM2MTYxNjF9Lm1hdC1jaGVja2JveFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXJpcHBsZS1lbGVtZW50W19uZ2NvbnRlbnQtJUNPTVAlXXtiYWNrZ3JvdW5kLWNvbG9yOiMwMDB9Lm1hdC1jaGVja2JveC1jaGVja2VkW19uZ2NvbnRlbnQtJUNPTVAlXTpub3QoLm1hdC1jaGVja2JveC1kaXNhYmxlZCkubWF0LXByaW1hcnkgICAubWF0LXJpcHBsZS1lbGVtZW50W19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1jaGVja2JveFtfbmdjb250ZW50LSVDT01QJV06YWN0aXZlOm5vdCgubWF0LWNoZWNrYm94LWRpc2FibGVkKS5tYXQtcHJpbWFyeSAgIC5tYXQtcmlwcGxlLWVsZW1lbnRbX25nY29udGVudC0lQ09NUCVde2JhY2tncm91bmQ6I2Y1N2MwMH0ubWF0LWNoZWNrYm94LWNoZWNrZWRbX25nY29udGVudC0lQ09NUCVdOm5vdCgubWF0LWNoZWNrYm94LWRpc2FibGVkKS5tYXQtYWNjZW50ICAgLm1hdC1yaXBwbGUtZWxlbWVudFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtY2hlY2tib3hbX25nY29udGVudC0lQ09NUCVdOmFjdGl2ZTpub3QoLm1hdC1jaGVja2JveC1kaXNhYmxlZCkubWF0LWFjY2VudCAgIC5tYXQtcmlwcGxlLWVsZW1lbnRbX25nY29udGVudC0lQ09NUCVde2JhY2tncm91bmQ6I2ZmOTgwMH0ubWF0LWNoZWNrYm94LWNoZWNrZWRbX25nY29udGVudC0lQ09NUCVdOm5vdCgubWF0LWNoZWNrYm94LWRpc2FibGVkKS5tYXQtd2FybiAgIC5tYXQtcmlwcGxlLWVsZW1lbnRbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWNoZWNrYm94W19uZ2NvbnRlbnQtJUNPTVAlXTphY3RpdmU6bm90KC5tYXQtY2hlY2tib3gtZGlzYWJsZWQpLm1hdC13YXJuICAgLm1hdC1yaXBwbGUtZWxlbWVudFtfbmdjb250ZW50LSVDT01QJV17YmFja2dyb3VuZDojZjQ0MzM2fS5tYXQtY2hpcC5tYXQtc3RhbmRhcmQtY2hpcFtfbmdjb250ZW50LSVDT01QJV17YmFja2dyb3VuZC1jb2xvcjojZTBlMGUwO2NvbG9yOiMyMTIxMjF9Lm1hdC1jaGlwLm1hdC1zdGFuZGFyZC1jaGlwW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtY2hpcC1yZW1vdmVbX25nY29udGVudC0lQ09NUCVde2NvbG9yOiMyMTIxMjE7b3BhY2l0eTouNH0ubWF0LWNoaXAubWF0LXN0YW5kYXJkLWNoaXBbX25nY29udGVudC0lQ09NUCVdOm5vdCgubWF0LWNoaXAtZGlzYWJsZWQpOmFjdGl2ZXtib3gtc2hhZG93OjBweCAzcHggM3B4IC0ycHggcmdiYSgwLCAwLCAwLCAwLjIpLDBweCAzcHggNHB4IDBweCByZ2JhKDAsIDAsIDAsIDAuMTQpLDBweCAxcHggOHB4IDBweCByZ2JhKDAsIDAsIDAsIDAuMTIpfS5tYXQtY2hpcC5tYXQtc3RhbmRhcmQtY2hpcFtfbmdjb250ZW50LSVDT01QJV06bm90KC5tYXQtY2hpcC1kaXNhYmxlZCkgICAubWF0LWNoaXAtcmVtb3ZlW19uZ2NvbnRlbnQtJUNPTVAlXTpob3ZlcntvcGFjaXR5Oi41NH0ubWF0LWNoaXAubWF0LXN0YW5kYXJkLWNoaXAubWF0LWNoaXAtZGlzYWJsZWRbX25nY29udGVudC0lQ09NUCVde29wYWNpdHk6LjR9Lm1hdC1jaGlwLm1hdC1zdGFuZGFyZC1jaGlwW19uZ2NvbnRlbnQtJUNPTVAlXTo6YWZ0ZXJ7YmFja2dyb3VuZDojMDAwfS5tYXQtY2hpcC5tYXQtc3RhbmRhcmQtY2hpcC5tYXQtY2hpcC1zZWxlY3RlZC5tYXQtcHJpbWFyeVtfbmdjb250ZW50LSVDT01QJV17YmFja2dyb3VuZC1jb2xvcjojZjU3YzAwO2NvbG9yOiNmZmZ9Lm1hdC1jaGlwLm1hdC1zdGFuZGFyZC1jaGlwLm1hdC1jaGlwLXNlbGVjdGVkLm1hdC1wcmltYXJ5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtY2hpcC1yZW1vdmVbX25nY29udGVudC0lQ09NUCVde2NvbG9yOiNmZmY7b3BhY2l0eTouNH0ubWF0LWNoaXAubWF0LXN0YW5kYXJkLWNoaXAubWF0LWNoaXAtc2VsZWN0ZWQubWF0LXByaW1hcnlbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1yaXBwbGUtZWxlbWVudFtfbmdjb250ZW50LSVDT01QJV17YmFja2dyb3VuZC1jb2xvcjpyZ2JhKDI1NSwyNTUsMjU1LC4xKX0ubWF0LWNoaXAubWF0LXN0YW5kYXJkLWNoaXAubWF0LWNoaXAtc2VsZWN0ZWQubWF0LXdhcm5bX25nY29udGVudC0lQ09NUCVde2JhY2tncm91bmQtY29sb3I6I2Y0NDMzNjtjb2xvcjojZmZmfS5tYXQtY2hpcC5tYXQtc3RhbmRhcmQtY2hpcC5tYXQtY2hpcC1zZWxlY3RlZC5tYXQtd2Fybltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWNoaXAtcmVtb3ZlW19uZ2NvbnRlbnQtJUNPTVAlXXtjb2xvcjojZmZmO29wYWNpdHk6LjR9Lm1hdC1jaGlwLm1hdC1zdGFuZGFyZC1jaGlwLm1hdC1jaGlwLXNlbGVjdGVkLm1hdC13YXJuW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtcmlwcGxlLWVsZW1lbnRbX25nY29udGVudC0lQ09NUCVde2JhY2tncm91bmQtY29sb3I6cmdiYSgyNTUsMjU1LDI1NSwuMSl9Lm1hdC1jaGlwLm1hdC1zdGFuZGFyZC1jaGlwLm1hdC1jaGlwLXNlbGVjdGVkLm1hdC1hY2NlbnRbX25nY29udGVudC0lQ09NUCVde2JhY2tncm91bmQtY29sb3I6I2ZmOTgwMDtjb2xvcjojZmZmfS5tYXQtY2hpcC5tYXQtc3RhbmRhcmQtY2hpcC5tYXQtY2hpcC1zZWxlY3RlZC5tYXQtYWNjZW50W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtY2hpcC1yZW1vdmVbX25nY29udGVudC0lQ09NUCVde2NvbG9yOiNmZmY7b3BhY2l0eTouNH0ubWF0LWNoaXAubWF0LXN0YW5kYXJkLWNoaXAubWF0LWNoaXAtc2VsZWN0ZWQubWF0LWFjY2VudFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXJpcHBsZS1lbGVtZW50W19uZ2NvbnRlbnQtJUNPTVAlXXtiYWNrZ3JvdW5kLWNvbG9yOnJnYmEoMjU1LDI1NSwyNTUsLjEpfS5tYXQtdGFibGVbX25nY29udGVudC0lQ09NUCVde2JhY2tncm91bmQ6I2ZmZn0ubWF0LXRhYmxlW19uZ2NvbnRlbnQtJUNPTVAlXSAgIHRoZWFkW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10YWJsZVtfbmdjb250ZW50LSVDT01QJV0gICB0Ym9keVtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdGFibGVbX25nY29udGVudC0lQ09NUCVdICAgdGZvb3RbX25nY29udGVudC0lQ09NUCVdLCBtYXQtaGVhZGVyLXJvd1tfbmdjb250ZW50LSVDT01QJV0sIG1hdC1yb3dbX25nY29udGVudC0lQ09NUCVdLCBtYXQtZm9vdGVyLXJvd1tfbmdjb250ZW50LSVDT01QJV0sIFttYXQtaGVhZGVyLXJvd11bX25nY29udGVudC0lQ09NUCVdLCBbbWF0LXJvd11bX25nY29udGVudC0lQ09NUCVdLCBbbWF0LWZvb3Rlci1yb3ddW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10YWJsZS1zdGlja3lbX25nY29udGVudC0lQ09NUCVde2JhY2tncm91bmQ6aW5oZXJpdH1tYXQtcm93W19uZ2NvbnRlbnQtJUNPTVAlXSwgbWF0LWhlYWRlci1yb3dbX25nY29udGVudC0lQ09NUCVdLCBtYXQtZm9vdGVyLXJvd1tfbmdjb250ZW50LSVDT01QJV0sIHRoLm1hdC1oZWFkZXItY2VsbFtfbmdjb250ZW50LSVDT01QJV0sIHRkLm1hdC1jZWxsW19uZ2NvbnRlbnQtJUNPTVAlXSwgdGQubWF0LWZvb3Rlci1jZWxsW19uZ2NvbnRlbnQtJUNPTVAlXXtib3JkZXItYm90dG9tLWNvbG9yOnJnYmEoMCwwLDAsLjEyKX0ubWF0LWhlYWRlci1jZWxsW19uZ2NvbnRlbnQtJUNPTVAlXXtjb2xvcjojNjE2MTYxfS5tYXQtY2VsbFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtZm9vdGVyLWNlbGxbX25nY29udGVudC0lQ09NUCVde2NvbG9yOiMyMTIxMjF9Lm1hdC1jYWxlbmRhci1hcnJvd1tfbmdjb250ZW50LSVDT01QJV17Ym9yZGVyLXRvcC1jb2xvcjpyZ2JhKDAsMCwwLC41NCl9Lm1hdC1kYXRlcGlja2VyLXRvZ2dsZVtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtZGF0ZXBpY2tlci1jb250ZW50W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtY2FsZW5kYXItbmV4dC1idXR0b25bX25nY29udGVudC0lQ09NUCVdLCAubWF0LWRhdGVwaWNrZXItY29udGVudFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWNhbGVuZGFyLXByZXZpb3VzLWJ1dHRvbltfbmdjb250ZW50LSVDT01QJV17Y29sb3I6cmdiYSgwLDAsMCwuNTQpfS5tYXQtY2FsZW5kYXItdGFibGUtaGVhZGVyW19uZ2NvbnRlbnQtJUNPTVAlXXtjb2xvcjpyZ2JhKDAsMCwwLC4zOCl9Lm1hdC1jYWxlbmRhci10YWJsZS1oZWFkZXItZGl2aWRlcltfbmdjb250ZW50LSVDT01QJV06OmFmdGVye2JhY2tncm91bmQ6cmdiYSgwLDAsMCwuMTIpfS5tYXQtY2FsZW5kYXItYm9keS1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17Y29sb3I6IzYxNjE2MX0ubWF0LWNhbGVuZGFyLWJvZHktY2VsbC1jb250ZW50W19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1kYXRlLXJhbmdlLWlucHV0LXNlcGFyYXRvcltfbmdjb250ZW50LSVDT01QJV17Y29sb3I6IzIxMjEyMTtib3JkZXItY29sb3I6dHJhbnNwYXJlbnR9Lm1hdC1jYWxlbmRhci1ib2R5LWRpc2FibGVkW19uZ2NvbnRlbnQtJUNPTVAlXSA+IC5tYXQtY2FsZW5kYXItYm9keS1jZWxsLWNvbnRlbnRbX25nY29udGVudC0lQ09NUCVdOm5vdCgubWF0LWNhbGVuZGFyLWJvZHktc2VsZWN0ZWQpOm5vdCgubWF0LWNhbGVuZGFyLWJvZHktY29tcGFyaXNvbi1pZGVudGljYWwpe2NvbG9yOiM3NTc1NzV9Lm1hdC1mb3JtLWZpZWxkLWRpc2FibGVkW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZGF0ZS1yYW5nZS1pbnB1dC1zZXBhcmF0b3JbX25nY29udGVudC0lQ09NUCVde2NvbG9yOiM3NTc1NzV9Lm1hdC1jYWxlbmRhci1ib2R5LWNlbGxbX25nY29udGVudC0lQ09NUCVdOm5vdCgubWF0LWNhbGVuZGFyLWJvZHktZGlzYWJsZWQpOmhvdmVyID4gLm1hdC1jYWxlbmRhci1ib2R5LWNlbGwtY29udGVudFtfbmdjb250ZW50LSVDT01QJV06bm90KC5tYXQtY2FsZW5kYXItYm9keS1zZWxlY3RlZCk6bm90KC5tYXQtY2FsZW5kYXItYm9keS1jb21wYXJpc29uLWlkZW50aWNhbCksIC5jZGsta2V5Ym9hcmQtZm9jdXNlZFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWNhbGVuZGFyLWJvZHktYWN0aXZlW19uZ2NvbnRlbnQtJUNPTVAlXSA+IC5tYXQtY2FsZW5kYXItYm9keS1jZWxsLWNvbnRlbnRbX25nY29udGVudC0lQ09NUCVdOm5vdCgubWF0LWNhbGVuZGFyLWJvZHktc2VsZWN0ZWQpOm5vdCgubWF0LWNhbGVuZGFyLWJvZHktY29tcGFyaXNvbi1pZGVudGljYWwpLCAuY2RrLXByb2dyYW0tZm9jdXNlZFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWNhbGVuZGFyLWJvZHktYWN0aXZlW19uZ2NvbnRlbnQtJUNPTVAlXSA+IC5tYXQtY2FsZW5kYXItYm9keS1jZWxsLWNvbnRlbnRbX25nY29udGVudC0lQ09NUCVdOm5vdCgubWF0LWNhbGVuZGFyLWJvZHktc2VsZWN0ZWQpOm5vdCgubWF0LWNhbGVuZGFyLWJvZHktY29tcGFyaXNvbi1pZGVudGljYWwpe2JhY2tncm91bmQtY29sb3I6cmdiYSgwLDAsMCwuMDQpfS5tYXQtY2FsZW5kYXItYm9keS1pbi1wcmV2aWV3W19uZ2NvbnRlbnQtJUNPTVAlXXtjb2xvcjpyZ2JhKDAsMCwwLC4yNCl9Lm1hdC1jYWxlbmRhci1ib2R5LXRvZGF5W19uZ2NvbnRlbnQtJUNPTVAlXTpub3QoLm1hdC1jYWxlbmRhci1ib2R5LXNlbGVjdGVkKTpub3QoLm1hdC1jYWxlbmRhci1ib2R5LWNvbXBhcmlzb24taWRlbnRpY2FsKXtib3JkZXItY29sb3I6cmdiYSgwLDAsMCwuMzgpfS5tYXQtY2FsZW5kYXItYm9keS1kaXNhYmxlZFtfbmdjb250ZW50LSVDT01QJV0gPiAubWF0LWNhbGVuZGFyLWJvZHktdG9kYXlbX25nY29udGVudC0lQ09NUCVdOm5vdCgubWF0LWNhbGVuZGFyLWJvZHktc2VsZWN0ZWQpOm5vdCgubWF0LWNhbGVuZGFyLWJvZHktY29tcGFyaXNvbi1pZGVudGljYWwpe2JvcmRlci1jb2xvcjpyZ2JhKDAsMCwwLC4xOCl9Lm1hdC1jYWxlbmRhci1ib2R5LWluLXJhbmdlW19uZ2NvbnRlbnQtJUNPTVAlXTo6YmVmb3Jle2JhY2tncm91bmQ6cmdiYSgyNDUsMTI0LDAsLjIpfS5tYXQtY2FsZW5kYXItYm9keS1jb21wYXJpc29uLWlkZW50aWNhbFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtY2FsZW5kYXItYm9keS1pbi1jb21wYXJpc29uLXJhbmdlW19uZ2NvbnRlbnQtJUNPTVAlXTo6YmVmb3Jle2JhY2tncm91bmQ6cmdiYSgyNDksMTcxLDAsLjIpfS5tYXQtY2FsZW5kYXItYm9keS1jb21wYXJpc29uLWJyaWRnZS1zdGFydFtfbmdjb250ZW50LSVDT01QJV06OmJlZm9yZSwgW2Rpcj1ydGxdW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtY2FsZW5kYXItYm9keS1jb21wYXJpc29uLWJyaWRnZS1lbmRbX25nY29udGVudC0lQ09NUCVdOjpiZWZvcmV7YmFja2dyb3VuZDpsaW5lYXItZ3JhZGllbnQodG8gcmlnaHQsIHJnYmEoMjQ1LCAxMjQsIDAsIDAuMikgNTAlLCByZ2JhKDI0OSwgMTcxLCAwLCAwLjIpIDUwJSl9Lm1hdC1jYWxlbmRhci1ib2R5LWNvbXBhcmlzb24tYnJpZGdlLWVuZFtfbmdjb250ZW50LSVDT01QJV06OmJlZm9yZSwgW2Rpcj1ydGxdW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtY2FsZW5kYXItYm9keS1jb21wYXJpc29uLWJyaWRnZS1zdGFydFtfbmdjb250ZW50LSVDT01QJV06OmJlZm9yZXtiYWNrZ3JvdW5kOmxpbmVhci1ncmFkaWVudCh0byBsZWZ0LCByZ2JhKDI0NSwgMTI0LCAwLCAwLjIpIDUwJSwgcmdiYSgyNDksIDE3MSwgMCwgMC4yKSA1MCUpfS5tYXQtY2FsZW5kYXItYm9keS1pbi1yYW5nZVtfbmdjb250ZW50LSVDT01QJV0gPiAubWF0LWNhbGVuZGFyLWJvZHktY29tcGFyaXNvbi1pZGVudGljYWxbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWNhbGVuZGFyLWJvZHktaW4tY29tcGFyaXNvbi1yYW5nZS5tYXQtY2FsZW5kYXItYm9keS1pbi1yYW5nZVtfbmdjb250ZW50LSVDT01QJV06OmFmdGVye2JhY2tncm91bmQ6I2E4ZGFiNX0ubWF0LWNhbGVuZGFyLWJvZHktY29tcGFyaXNvbi1pZGVudGljYWwubWF0LWNhbGVuZGFyLWJvZHktc2VsZWN0ZWRbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWNhbGVuZGFyLWJvZHktaW4tY29tcGFyaXNvbi1yYW5nZVtfbmdjb250ZW50LSVDT01QJV0gPiAubWF0LWNhbGVuZGFyLWJvZHktc2VsZWN0ZWRbX25nY29udGVudC0lQ09NUCVde2JhY2tncm91bmQ6IzQ2YTM1ZX0ubWF0LWNhbGVuZGFyLWJvZHktc2VsZWN0ZWRbX25nY29udGVudC0lQ09NUCVde2JhY2tncm91bmQtY29sb3I6I2Y1N2MwMDtjb2xvcjojZmZmfS5tYXQtY2FsZW5kYXItYm9keS1kaXNhYmxlZFtfbmdjb250ZW50LSVDT01QJV0gPiAubWF0LWNhbGVuZGFyLWJvZHktc2VsZWN0ZWRbX25nY29udGVudC0lQ09NUCVde2JhY2tncm91bmQtY29sb3I6cmdiYSgyNDUsMTI0LDAsLjQpfS5tYXQtY2FsZW5kYXItYm9keS10b2RheS5tYXQtY2FsZW5kYXItYm9keS1zZWxlY3RlZFtfbmdjb250ZW50LSVDT01QJV17Ym94LXNoYWRvdzppbnNldCAwIDAgMCAxcHggI2ZmZn0ubWF0LWRhdGVwaWNrZXItY29udGVudFtfbmdjb250ZW50LSVDT01QJV17Ym94LXNoYWRvdzowcHggMnB4IDRweCAtMXB4IHJnYmEoMCwgMCwgMCwgMC4yKSwwcHggNHB4IDVweCAwcHggcmdiYSgwLCAwLCAwLCAwLjE0KSwwcHggMXB4IDEwcHggMHB4IHJnYmEoMCwgMCwgMCwgMC4xMik7YmFja2dyb3VuZC1jb2xvcjojZmZmO2NvbG9yOiMyMTIxMjF9Lm1hdC1kYXRlcGlja2VyLWNvbnRlbnQubWF0LWFjY2VudFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWNhbGVuZGFyLWJvZHktaW4tcmFuZ2VbX25nY29udGVudC0lQ09NUCVdOjpiZWZvcmV7YmFja2dyb3VuZDpyZ2JhKDI1NSwxNTIsMCwuMil9Lm1hdC1kYXRlcGlja2VyLWNvbnRlbnQubWF0LWFjY2VudFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWNhbGVuZGFyLWJvZHktY29tcGFyaXNvbi1pZGVudGljYWxbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWRhdGVwaWNrZXItY29udGVudC5tYXQtYWNjZW50W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtY2FsZW5kYXItYm9keS1pbi1jb21wYXJpc29uLXJhbmdlW19uZ2NvbnRlbnQtJUNPTVAlXTo6YmVmb3Jle2JhY2tncm91bmQ6cmdiYSgyNDksMTcxLDAsLjIpfS5tYXQtZGF0ZXBpY2tlci1jb250ZW50Lm1hdC1hY2NlbnRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1jYWxlbmRhci1ib2R5LWNvbXBhcmlzb24tYnJpZGdlLXN0YXJ0W19uZ2NvbnRlbnQtJUNPTVAlXTo6YmVmb3JlLCAubWF0LWRhdGVwaWNrZXItY29udGVudC5tYXQtYWNjZW50W19uZ2NvbnRlbnQtJUNPTVAlXSAgIFtkaXI9cnRsXVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWNhbGVuZGFyLWJvZHktY29tcGFyaXNvbi1icmlkZ2UtZW5kW19uZ2NvbnRlbnQtJUNPTVAlXTo6YmVmb3Jle2JhY2tncm91bmQ6bGluZWFyLWdyYWRpZW50KHRvIHJpZ2h0LCByZ2JhKDI1NSwgMTUyLCAwLCAwLjIpIDUwJSwgcmdiYSgyNDksIDE3MSwgMCwgMC4yKSA1MCUpfS5tYXQtZGF0ZXBpY2tlci1jb250ZW50Lm1hdC1hY2NlbnRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1jYWxlbmRhci1ib2R5LWNvbXBhcmlzb24tYnJpZGdlLWVuZFtfbmdjb250ZW50LSVDT01QJV06OmJlZm9yZSwgLm1hdC1kYXRlcGlja2VyLWNvbnRlbnQubWF0LWFjY2VudFtfbmdjb250ZW50LSVDT01QJV0gICBbZGlyPXJ0bF1bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1jYWxlbmRhci1ib2R5LWNvbXBhcmlzb24tYnJpZGdlLXN0YXJ0W19uZ2NvbnRlbnQtJUNPTVAlXTo6YmVmb3Jle2JhY2tncm91bmQ6bGluZWFyLWdyYWRpZW50KHRvIGxlZnQsIHJnYmEoMjU1LCAxNTIsIDAsIDAuMikgNTAlLCByZ2JhKDI0OSwgMTcxLCAwLCAwLjIpIDUwJSl9Lm1hdC1kYXRlcGlja2VyLWNvbnRlbnQubWF0LWFjY2VudFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWNhbGVuZGFyLWJvZHktaW4tcmFuZ2VbX25nY29udGVudC0lQ09NUCVdID4gLm1hdC1jYWxlbmRhci1ib2R5LWNvbXBhcmlzb24taWRlbnRpY2FsW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1kYXRlcGlja2VyLWNvbnRlbnQubWF0LWFjY2VudFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWNhbGVuZGFyLWJvZHktaW4tY29tcGFyaXNvbi1yYW5nZS5tYXQtY2FsZW5kYXItYm9keS1pbi1yYW5nZVtfbmdjb250ZW50LSVDT01QJV06OmFmdGVye2JhY2tncm91bmQ6I2E4ZGFiNX0ubWF0LWRhdGVwaWNrZXItY29udGVudC5tYXQtYWNjZW50W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtY2FsZW5kYXItYm9keS1jb21wYXJpc29uLWlkZW50aWNhbC5tYXQtY2FsZW5kYXItYm9keS1zZWxlY3RlZFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtZGF0ZXBpY2tlci1jb250ZW50Lm1hdC1hY2NlbnRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1jYWxlbmRhci1ib2R5LWluLWNvbXBhcmlzb24tcmFuZ2VbX25nY29udGVudC0lQ09NUCVdID4gLm1hdC1jYWxlbmRhci1ib2R5LXNlbGVjdGVkW19uZ2NvbnRlbnQtJUNPTVAlXXtiYWNrZ3JvdW5kOiM0NmEzNWV9Lm1hdC1kYXRlcGlja2VyLWNvbnRlbnQubWF0LWFjY2VudFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWNhbGVuZGFyLWJvZHktc2VsZWN0ZWRbX25nY29udGVudC0lQ09NUCVde2JhY2tncm91bmQtY29sb3I6I2ZmOTgwMDtjb2xvcjojZmZmfS5tYXQtZGF0ZXBpY2tlci1jb250ZW50Lm1hdC1hY2NlbnRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1jYWxlbmRhci1ib2R5LWRpc2FibGVkW19uZ2NvbnRlbnQtJUNPTVAlXSA+IC5tYXQtY2FsZW5kYXItYm9keS1zZWxlY3RlZFtfbmdjb250ZW50LSVDT01QJV17YmFja2dyb3VuZC1jb2xvcjpyZ2JhKDI1NSwxNTIsMCwuNCl9Lm1hdC1kYXRlcGlja2VyLWNvbnRlbnQubWF0LWFjY2VudFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWNhbGVuZGFyLWJvZHktdG9kYXkubWF0LWNhbGVuZGFyLWJvZHktc2VsZWN0ZWRbX25nY29udGVudC0lQ09NUCVde2JveC1zaGFkb3c6aW5zZXQgMCAwIDAgMXB4ICNmZmZ9Lm1hdC1kYXRlcGlja2VyLWNvbnRlbnQubWF0LXdhcm5bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1jYWxlbmRhci1ib2R5LWluLXJhbmdlW19uZ2NvbnRlbnQtJUNPTVAlXTo6YmVmb3Jle2JhY2tncm91bmQ6cmdiYSgyNDQsNjcsNTQsLjIpfS5tYXQtZGF0ZXBpY2tlci1jb250ZW50Lm1hdC13YXJuW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtY2FsZW5kYXItYm9keS1jb21wYXJpc29uLWlkZW50aWNhbFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtZGF0ZXBpY2tlci1jb250ZW50Lm1hdC13YXJuW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtY2FsZW5kYXItYm9keS1pbi1jb21wYXJpc29uLXJhbmdlW19uZ2NvbnRlbnQtJUNPTVAlXTo6YmVmb3Jle2JhY2tncm91bmQ6cmdiYSgyNDksMTcxLDAsLjIpfS5tYXQtZGF0ZXBpY2tlci1jb250ZW50Lm1hdC13YXJuW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtY2FsZW5kYXItYm9keS1jb21wYXJpc29uLWJyaWRnZS1zdGFydFtfbmdjb250ZW50LSVDT01QJV06OmJlZm9yZSwgLm1hdC1kYXRlcGlja2VyLWNvbnRlbnQubWF0LXdhcm5bX25nY29udGVudC0lQ09NUCVdICAgW2Rpcj1ydGxdW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtY2FsZW5kYXItYm9keS1jb21wYXJpc29uLWJyaWRnZS1lbmRbX25nY29udGVudC0lQ09NUCVdOjpiZWZvcmV7YmFja2dyb3VuZDpsaW5lYXItZ3JhZGllbnQodG8gcmlnaHQsIHJnYmEoMjQ0LCA2NywgNTQsIDAuMikgNTAlLCByZ2JhKDI0OSwgMTcxLCAwLCAwLjIpIDUwJSl9Lm1hdC1kYXRlcGlja2VyLWNvbnRlbnQubWF0LXdhcm5bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1jYWxlbmRhci1ib2R5LWNvbXBhcmlzb24tYnJpZGdlLWVuZFtfbmdjb250ZW50LSVDT01QJV06OmJlZm9yZSwgLm1hdC1kYXRlcGlja2VyLWNvbnRlbnQubWF0LXdhcm5bX25nY29udGVudC0lQ09NUCVdICAgW2Rpcj1ydGxdW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtY2FsZW5kYXItYm9keS1jb21wYXJpc29uLWJyaWRnZS1zdGFydFtfbmdjb250ZW50LSVDT01QJV06OmJlZm9yZXtiYWNrZ3JvdW5kOmxpbmVhci1ncmFkaWVudCh0byBsZWZ0LCByZ2JhKDI0NCwgNjcsIDU0LCAwLjIpIDUwJSwgcmdiYSgyNDksIDE3MSwgMCwgMC4yKSA1MCUpfS5tYXQtZGF0ZXBpY2tlci1jb250ZW50Lm1hdC13YXJuW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtY2FsZW5kYXItYm9keS1pbi1yYW5nZVtfbmdjb250ZW50LSVDT01QJV0gPiAubWF0LWNhbGVuZGFyLWJvZHktY29tcGFyaXNvbi1pZGVudGljYWxbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWRhdGVwaWNrZXItY29udGVudC5tYXQtd2Fybltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWNhbGVuZGFyLWJvZHktaW4tY29tcGFyaXNvbi1yYW5nZS5tYXQtY2FsZW5kYXItYm9keS1pbi1yYW5nZVtfbmdjb250ZW50LSVDT01QJV06OmFmdGVye2JhY2tncm91bmQ6I2E4ZGFiNX0ubWF0LWRhdGVwaWNrZXItY29udGVudC5tYXQtd2Fybltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWNhbGVuZGFyLWJvZHktY29tcGFyaXNvbi1pZGVudGljYWwubWF0LWNhbGVuZGFyLWJvZHktc2VsZWN0ZWRbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWRhdGVwaWNrZXItY29udGVudC5tYXQtd2Fybltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWNhbGVuZGFyLWJvZHktaW4tY29tcGFyaXNvbi1yYW5nZVtfbmdjb250ZW50LSVDT01QJV0gPiAubWF0LWNhbGVuZGFyLWJvZHktc2VsZWN0ZWRbX25nY29udGVudC0lQ09NUCVde2JhY2tncm91bmQ6IzQ2YTM1ZX0ubWF0LWRhdGVwaWNrZXItY29udGVudC5tYXQtd2Fybltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWNhbGVuZGFyLWJvZHktc2VsZWN0ZWRbX25nY29udGVudC0lQ09NUCVde2JhY2tncm91bmQtY29sb3I6I2Y0NDMzNjtjb2xvcjojZmZmfS5tYXQtZGF0ZXBpY2tlci1jb250ZW50Lm1hdC13YXJuW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtY2FsZW5kYXItYm9keS1kaXNhYmxlZFtfbmdjb250ZW50LSVDT01QJV0gPiAubWF0LWNhbGVuZGFyLWJvZHktc2VsZWN0ZWRbX25nY29udGVudC0lQ09NUCVde2JhY2tncm91bmQtY29sb3I6cmdiYSgyNDQsNjcsNTQsLjQpfS5tYXQtZGF0ZXBpY2tlci1jb250ZW50Lm1hdC13YXJuW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtY2FsZW5kYXItYm9keS10b2RheS5tYXQtY2FsZW5kYXItYm9keS1zZWxlY3RlZFtfbmdjb250ZW50LSVDT01QJV17Ym94LXNoYWRvdzppbnNldCAwIDAgMCAxcHggI2ZmZn0ubWF0LWRhdGVwaWNrZXItY29udGVudC10b3VjaFtfbmdjb250ZW50LSVDT01QJV17Ym94LXNoYWRvdzowcHggMHB4IDBweCAwcHggcmdiYSgwLCAwLCAwLCAwLjIpLDBweCAwcHggMHB4IDBweCByZ2JhKDAsIDAsIDAsIDAuMTQpLDBweCAwcHggMHB4IDBweCByZ2JhKDAsIDAsIDAsIDAuMTIpfS5tYXQtZGF0ZXBpY2tlci10b2dnbGUtYWN0aXZlW19uZ2NvbnRlbnQtJUNPTVAlXXtjb2xvcjojZjU3YzAwfS5tYXQtZGF0ZXBpY2tlci10b2dnbGUtYWN0aXZlLm1hdC1hY2NlbnRbX25nY29udGVudC0lQ09NUCVde2NvbG9yOiNmZjk4MDB9Lm1hdC1kYXRlcGlja2VyLXRvZ2dsZS1hY3RpdmUubWF0LXdhcm5bX25nY29udGVudC0lQ09NUCVde2NvbG9yOiNmNDQzMzZ9Lm1hdC1kYXRlLXJhbmdlLWlucHV0LWlubmVyW2Rpc2FibGVkXVtfbmdjb250ZW50LSVDT01QJV17Y29sb3I6Izc1NzU3NX0ubWF0LWRpYWxvZy1jb250YWluZXJbX25nY29udGVudC0lQ09NUCVde2JveC1zaGFkb3c6MHB4IDExcHggMTVweCAtN3B4IHJnYmEoMCwgMCwgMCwgMC4yKSwwcHggMjRweCAzOHB4IDNweCByZ2JhKDAsIDAsIDAsIDAuMTQpLDBweCA5cHggNDZweCA4cHggcmdiYSgwLCAwLCAwLCAwLjEyKTtiYWNrZ3JvdW5kOiNmZmY7Y29sb3I6IzIxMjEyMX0ubWF0LWRpdmlkZXJbX25nY29udGVudC0lQ09NUCVde2JvcmRlci10b3AtY29sb3I6cmdiYSgwLDAsMCwuMTIpfS5tYXQtZGl2aWRlci12ZXJ0aWNhbFtfbmdjb250ZW50LSVDT01QJV17Ym9yZGVyLXJpZ2h0LWNvbG9yOnJnYmEoMCwwLDAsLjEyKX0ubWF0LWV4cGFuc2lvbi1wYW5lbFtfbmdjb250ZW50LSVDT01QJV17YmFja2dyb3VuZDojZmZmO2NvbG9yOiMyMTIxMjF9Lm1hdC1leHBhbnNpb24tcGFuZWxbX25nY29udGVudC0lQ09NUCVdOm5vdChbY2xhc3MqPW1hdC1lbGV2YXRpb24tel0pe2JveC1zaGFkb3c6MHB4IDNweCAxcHggLTJweCByZ2JhKDAsIDAsIDAsIDAuMiksMHB4IDJweCAycHggMHB4IHJnYmEoMCwgMCwgMCwgMC4xNCksMHB4IDFweCA1cHggMHB4IHJnYmEoMCwgMCwgMCwgMC4xMil9Lm1hdC1hY3Rpb24tcm93W19uZ2NvbnRlbnQtJUNPTVAlXXtib3JkZXItdG9wLWNvbG9yOnJnYmEoMCwwLDAsLjEyKX0ubWF0LWV4cGFuc2lvbi1wYW5lbFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWV4cGFuc2lvbi1wYW5lbC1oZWFkZXIuY2RrLWtleWJvYXJkLWZvY3VzZWRbX25nY29udGVudC0lQ09NUCVdOm5vdChbYXJpYS1kaXNhYmxlZD10cnVlXSksIC5tYXQtZXhwYW5zaW9uLXBhbmVsW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZXhwYW5zaW9uLXBhbmVsLWhlYWRlci5jZGstcHJvZ3JhbS1mb2N1c2VkW19uZ2NvbnRlbnQtJUNPTVAlXTpub3QoW2FyaWEtZGlzYWJsZWQ9dHJ1ZV0pLCAubWF0LWV4cGFuc2lvbi1wYW5lbFtfbmdjb250ZW50LSVDT01QJV06bm90KC5tYXQtZXhwYW5kZWQpICAgLm1hdC1leHBhbnNpb24tcGFuZWwtaGVhZGVyW19uZ2NvbnRlbnQtJUNPTVAlXTpob3Zlcjpub3QoW2FyaWEtZGlzYWJsZWQ9dHJ1ZV0pe2JhY2tncm91bmQ6cmdiYSgwLDAsMCwuMDQpfUBtZWRpYShob3Zlcjogbm9uZSl7Lm1hdC1leHBhbnNpb24tcGFuZWxbX25nY29udGVudC0lQ09NUCVdOm5vdCgubWF0LWV4cGFuZGVkKTpub3QoW2FyaWEtZGlzYWJsZWQ9dHJ1ZV0pICAgLm1hdC1leHBhbnNpb24tcGFuZWwtaGVhZGVyW19uZ2NvbnRlbnQtJUNPTVAlXTpob3ZlcntiYWNrZ3JvdW5kOiNmZmZ9fS5tYXQtZXhwYW5zaW9uLXBhbmVsLWhlYWRlci10aXRsZVtfbmdjb250ZW50LSVDT01QJV17Y29sb3I6IzIxMjEyMX0ubWF0LWV4cGFuc2lvbi1wYW5lbC1oZWFkZXItZGVzY3JpcHRpb25bX25nY29udGVudC0lQ09NUCVdLCAubWF0LWV4cGFuc2lvbi1pbmRpY2F0b3JbX25nY29udGVudC0lQ09NUCVdOjphZnRlcntjb2xvcjojNjE2MTYxfS5tYXQtZXhwYW5zaW9uLXBhbmVsLWhlYWRlclthcmlhLWRpc2FibGVkPXRydWVdW19uZ2NvbnRlbnQtJUNPTVAlXXtjb2xvcjpyZ2JhKDAsMCwwLC4yNil9Lm1hdC1leHBhbnNpb24tcGFuZWwtaGVhZGVyW2FyaWEtZGlzYWJsZWQ9dHJ1ZV1bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1leHBhbnNpb24tcGFuZWwtaGVhZGVyLXRpdGxlW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1leHBhbnNpb24tcGFuZWwtaGVhZGVyW2FyaWEtZGlzYWJsZWQ9dHJ1ZV1bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1leHBhbnNpb24tcGFuZWwtaGVhZGVyLWRlc2NyaXB0aW9uW19uZ2NvbnRlbnQtJUNPTVAlXXtjb2xvcjppbmhlcml0fS5tYXQtZXhwYW5zaW9uLXBhbmVsLWhlYWRlcltfbmdjb250ZW50LSVDT01QJV17aGVpZ2h0OjQ4cHh9Lm1hdC1leHBhbnNpb24tcGFuZWwtaGVhZGVyLm1hdC1leHBhbmRlZFtfbmdjb250ZW50LSVDT01QJV17aGVpZ2h0OjY0cHh9Lm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXtjb2xvcjpyZ2JhKDk3LDk3LDk3LC42KX0ubWF0LWhpbnRbX25nY29udGVudC0lQ09NUCVde2NvbG9yOnJnYmEoOTcsOTcsOTcsLjYpfS5tYXQtZm9ybS1maWVsZC5tYXQtZm9jdXNlZFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVde2NvbG9yOiNmNTdjMDB9Lm1hdC1mb3JtLWZpZWxkLm1hdC1mb2N1c2VkW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbC5tYXQtYWNjZW50W19uZ2NvbnRlbnQtJUNPTVAlXXtjb2xvcjojZmY5ODAwfS5tYXQtZm9ybS1maWVsZC5tYXQtZm9jdXNlZFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWwubWF0LXdhcm5bX25nY29udGVudC0lQ09NUCVde2NvbG9yOiNmNDQzMzZ9Lm1hdC1mb2N1c2VkW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1yZXF1aXJlZC1tYXJrZXJbX25nY29udGVudC0lQ09NUCVde2NvbG9yOiNmZjk4MDB9Lm1hdC1mb3JtLWZpZWxkLXJpcHBsZVtfbmdjb250ZW50LSVDT01QJV17YmFja2dyb3VuZC1jb2xvcjpyZ2JhKDAsMCwwLC44Nyl9Lm1hdC1mb3JtLWZpZWxkLm1hdC1mb2N1c2VkW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1yaXBwbGVbX25nY29udGVudC0lQ09NUCVde2JhY2tncm91bmQtY29sb3I6I2Y1N2MwMH0ubWF0LWZvcm0tZmllbGQubWF0LWZvY3VzZWRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLXJpcHBsZS5tYXQtYWNjZW50W19uZ2NvbnRlbnQtJUNPTVAlXXtiYWNrZ3JvdW5kLWNvbG9yOiNmZjk4MDB9Lm1hdC1mb3JtLWZpZWxkLm1hdC1mb2N1c2VkW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1yaXBwbGUubWF0LXdhcm5bX25nY29udGVudC0lQ09NUCVde2JhY2tncm91bmQtY29sb3I6I2Y0NDMzNn0ubWF0LWZvcm0tZmllbGQtdHlwZS1tYXQtbmF0aXZlLXNlbGVjdC5tYXQtZm9jdXNlZFtfbmdjb250ZW50LSVDT01QJV06bm90KC5tYXQtZm9ybS1maWVsZC1pbnZhbGlkKSAgIC5tYXQtZm9ybS1maWVsZC1pbmZpeFtfbmdjb250ZW50LSVDT01QJV06OmFmdGVye2NvbG9yOiNmNTdjMDB9Lm1hdC1mb3JtLWZpZWxkLXR5cGUtbWF0LW5hdGl2ZS1zZWxlY3QubWF0LWZvY3VzZWRbX25nY29udGVudC0lQ09NUCVdOm5vdCgubWF0LWZvcm0tZmllbGQtaW52YWxpZCkubWF0LWFjY2VudCAgIC5tYXQtZm9ybS1maWVsZC1pbmZpeFtfbmdjb250ZW50LSVDT01QJV06OmFmdGVye2NvbG9yOiNmZjk4MDB9Lm1hdC1mb3JtLWZpZWxkLXR5cGUtbWF0LW5hdGl2ZS1zZWxlY3QubWF0LWZvY3VzZWRbX25nY29udGVudC0lQ09NUCVdOm5vdCgubWF0LWZvcm0tZmllbGQtaW52YWxpZCkubWF0LXdhcm4gICAubWF0LWZvcm0tZmllbGQtaW5maXhbX25nY29udGVudC0lQ09NUCVdOjphZnRlcntjb2xvcjojZjQ0MzM2fS5tYXQtZm9ybS1maWVsZC5tYXQtZm9ybS1maWVsZC1pbnZhbGlkW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17Y29sb3I6I2Y0NDMzNn0ubWF0LWZvcm0tZmllbGQubWF0LWZvcm0tZmllbGQtaW52YWxpZFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWwubWF0LWFjY2VudFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtZm9ybS1maWVsZC5tYXQtZm9ybS1maWVsZC1pbnZhbGlkW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtcmVxdWlyZWQtbWFya2VyW19uZ2NvbnRlbnQtJUNPTVAlXXtjb2xvcjojZjQ0MzM2fS5tYXQtZm9ybS1maWVsZC5tYXQtZm9ybS1maWVsZC1pbnZhbGlkW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1yaXBwbGVbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWZvcm0tZmllbGQubWF0LWZvcm0tZmllbGQtaW52YWxpZFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtcmlwcGxlLm1hdC1hY2NlbnRbX25nY29udGVudC0lQ09NUCVde2JhY2tncm91bmQtY29sb3I6I2Y0NDMzNn0ubWF0LWVycm9yW19uZ2NvbnRlbnQtJUNPTVAlXXtjb2xvcjojZjQ0MzM2fS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWxlZ2FjeVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVde2NvbG9yOiM2MTYxNjF9Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtbGVnYWN5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaGludFtfbmdjb250ZW50LSVDT01QJV17Y29sb3I6IzYxNjE2MX0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1sZWdhY3lbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLXVuZGVybGluZVtfbmdjb250ZW50LSVDT01QJV17YmFja2dyb3VuZC1jb2xvcjpyZ2JhKDAsMCwwLC40Mil9Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtbGVnYWN5Lm1hdC1mb3JtLWZpZWxkLWRpc2FibGVkW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC11bmRlcmxpbmVbX25nY29udGVudC0lQ09NUCVde2JhY2tncm91bmQtaW1hZ2U6bGluZWFyLWdyYWRpZW50KHRvIHJpZ2h0LCByZ2JhKDAsIDAsIDAsIDAuNDIpIDAlLCByZ2JhKDAsIDAsIDAsIDAuNDIpIDMzJSwgdHJhbnNwYXJlbnQgMCUpO2JhY2tncm91bmQtc2l6ZTo0cHggMTAwJTtiYWNrZ3JvdW5kLXJlcGVhdDpyZXBlYXQteH0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1zdGFuZGFyZFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtdW5kZXJsaW5lW19uZ2NvbnRlbnQtJUNPTVAlXXtiYWNrZ3JvdW5kLWNvbG9yOnJnYmEoMCwwLDAsLjQyKX0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1zdGFuZGFyZC5tYXQtZm9ybS1maWVsZC1kaXNhYmxlZFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtdW5kZXJsaW5lW19uZ2NvbnRlbnQtJUNPTVAlXXtiYWNrZ3JvdW5kLWltYWdlOmxpbmVhci1ncmFkaWVudCh0byByaWdodCwgcmdiYSgwLCAwLCAwLCAwLjQyKSAwJSwgcmdiYSgwLCAwLCAwLCAwLjQyKSAzMyUsIHRyYW5zcGFyZW50IDAlKTtiYWNrZ3JvdW5kLXNpemU6NHB4IDEwMCU7YmFja2dyb3VuZC1yZXBlYXQ6cmVwZWF0LXh9Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtZmlsbFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtZmxleFtfbmdjb250ZW50LSVDT01QJV17YmFja2dyb3VuZC1jb2xvcjpyZ2JhKDAsMCwwLC4wNCl9Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtZmlsbC5tYXQtZm9ybS1maWVsZC1kaXNhYmxlZFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtZmxleFtfbmdjb250ZW50LSVDT01QJV17YmFja2dyb3VuZC1jb2xvcjpyZ2JhKDAsMCwwLC4wMil9Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtZmlsbFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtdW5kZXJsaW5lW19uZ2NvbnRlbnQtJUNPTVAlXTo6YmVmb3Jle2JhY2tncm91bmQtY29sb3I6cmdiYSgwLDAsMCwuNDIpfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWZpbGwubWF0LWZvcm0tZmllbGQtZGlzYWJsZWRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXtjb2xvcjojNzU3NTc1fS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWZpbGwubWF0LWZvcm0tZmllbGQtZGlzYWJsZWRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLXVuZGVybGluZVtfbmdjb250ZW50LSVDT01QJV06OmJlZm9yZXtiYWNrZ3JvdW5kLWNvbG9yOnRyYW5zcGFyZW50fS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLW91dGxpbmVbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLW91dGxpbmVbX25nY29udGVudC0lQ09NUCVde2NvbG9yOnJnYmEoMCwwLDAsLjEyKX0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1vdXRsaW5lW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1vdXRsaW5lLXRoaWNrW19uZ2NvbnRlbnQtJUNPTVAlXXtjb2xvcjpyZ2JhKDAsMCwwLC44Nyl9Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2Utb3V0bGluZS5tYXQtZm9jdXNlZFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtb3V0bGluZS10aGlja1tfbmdjb250ZW50LSVDT01QJV17Y29sb3I6I2Y1N2MwMH0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1vdXRsaW5lLm1hdC1mb2N1c2VkLm1hdC1hY2NlbnRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLW91dGxpbmUtdGhpY2tbX25nY29udGVudC0lQ09NUCVde2NvbG9yOiNmZjk4MDB9Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2Utb3V0bGluZS5tYXQtZm9jdXNlZC5tYXQtd2Fybltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtb3V0bGluZS10aGlja1tfbmdjb250ZW50LSVDT01QJV17Y29sb3I6I2Y0NDMzNn0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1vdXRsaW5lLm1hdC1mb3JtLWZpZWxkLWludmFsaWQubWF0LWZvcm0tZmllbGQtaW52YWxpZFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtb3V0bGluZS10aGlja1tfbmdjb250ZW50LSVDT01QJV17Y29sb3I6I2Y0NDMzNn0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1vdXRsaW5lLm1hdC1mb3JtLWZpZWxkLWRpc2FibGVkW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17Y29sb3I6Izc1NzU3NX0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1vdXRsaW5lLm1hdC1mb3JtLWZpZWxkLWRpc2FibGVkW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1vdXRsaW5lW19uZ2NvbnRlbnQtJUNPTVAlXXtjb2xvcjpyZ2JhKDAsMCwwLC4wNil9Lm1hdC1pY29uLm1hdC1wcmltYXJ5W19uZ2NvbnRlbnQtJUNPTVAlXXtjb2xvcjojZjU3YzAwfS5tYXQtaWNvbi5tYXQtYWNjZW50W19uZ2NvbnRlbnQtJUNPTVAlXXtjb2xvcjojZmY5ODAwfS5tYXQtaWNvbi5tYXQtd2Fybltfbmdjb250ZW50LSVDT01QJV17Y29sb3I6I2Y0NDMzNn0ubWF0LWZvcm0tZmllbGQtdHlwZS1tYXQtbmF0aXZlLXNlbGVjdFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtaW5maXhbX25nY29udGVudC0lQ09NUCVdOjphZnRlcntjb2xvcjojNjE2MTYxfS5tYXQtaW5wdXQtZWxlbWVudFtfbmdjb250ZW50LSVDT01QJV06ZGlzYWJsZWQsIC5tYXQtZm9ybS1maWVsZC10eXBlLW1hdC1uYXRpdmUtc2VsZWN0Lm1hdC1mb3JtLWZpZWxkLWRpc2FibGVkW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1pbmZpeFtfbmdjb250ZW50LSVDT01QJV06OmFmdGVye2NvbG9yOiM3NTc1NzV9Lm1hdC1pbnB1dC1lbGVtZW50W19uZ2NvbnRlbnQtJUNPTVAlXXtjYXJldC1jb2xvcjojZjU3YzAwfS5tYXQtaW5wdXQtZWxlbWVudFtfbmdjb250ZW50LSVDT01QJV06OnBsYWNlaG9sZGVye2NvbG9yOnJnYmEoOTcsOTcsOTcsLjQyKX0ubWF0LWlucHV0LWVsZW1lbnRbX25nY29udGVudC0lQ09NUCVdOjotbW96LXBsYWNlaG9sZGVye2NvbG9yOnJnYmEoOTcsOTcsOTcsLjQyKX0ubWF0LWlucHV0LWVsZW1lbnRbX25nY29udGVudC0lQ09NUCVdOjotd2Via2l0LWlucHV0LXBsYWNlaG9sZGVye2NvbG9yOnJnYmEoOTcsOTcsOTcsLjQyKX0ubWF0LWlucHV0LWVsZW1lbnRbX25nY29udGVudC0lQ09NUCVdOi1tcy1pbnB1dC1wbGFjZWhvbGRlcntjb2xvcjpyZ2JhKDk3LDk3LDk3LC40Mil9Lm1hdC1mb3JtLWZpZWxkLm1hdC1hY2NlbnRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pbnB1dC1lbGVtZW50W19uZ2NvbnRlbnQtJUNPTVAlXXtjYXJldC1jb2xvcjojZmY5ODAwfS5tYXQtZm9ybS1maWVsZC5tYXQtd2Fybltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWlucHV0LWVsZW1lbnRbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWZvcm0tZmllbGQtaW52YWxpZFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWlucHV0LWVsZW1lbnRbX25nY29udGVudC0lQ09NUCVde2NhcmV0LWNvbG9yOiNmNDQzMzZ9Lm1hdC1mb3JtLWZpZWxkLXR5cGUtbWF0LW5hdGl2ZS1zZWxlY3QubWF0LWZvcm0tZmllbGQtaW52YWxpZFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtaW5maXhbX25nY29udGVudC0lQ09NUCVdOjphZnRlcntjb2xvcjojZjQ0MzM2fS5tYXQtbGlzdC1iYXNlW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGlzdC1pdGVtW19uZ2NvbnRlbnQtJUNPTVAlXXtjb2xvcjojMjEyMTIxfS5tYXQtbGlzdC1iYXNlW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGlzdC1vcHRpb25bX25nY29udGVudC0lQ09NUCVde2NvbG9yOiMyMTIxMjF9Lm1hdC1saXN0LWJhc2VbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1zdWJoZWFkZXJbX25nY29udGVudC0lQ09NUCVde2NvbG9yOiM2MTYxNjF9Lm1hdC1saXN0LWl0ZW0tZGlzYWJsZWRbX25nY29udGVudC0lQ09NUCVde2JhY2tncm91bmQtY29sb3I6I2VlZX0ubWF0LWxpc3Qtb3B0aW9uW19uZ2NvbnRlbnQtJUNPTVAlXTpob3ZlciwgLm1hdC1saXN0LW9wdGlvbltfbmdjb250ZW50LSVDT01QJV06Zm9jdXMsIC5tYXQtbmF2LWxpc3RbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saXN0LWl0ZW1bX25nY29udGVudC0lQ09NUCVdOmhvdmVyLCAubWF0LW5hdi1saXN0W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGlzdC1pdGVtW19uZ2NvbnRlbnQtJUNPTVAlXTpmb2N1cywgLm1hdC1hY3Rpb24tbGlzdFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpc3QtaXRlbVtfbmdjb250ZW50LSVDT01QJV06aG92ZXIsIC5tYXQtYWN0aW9uLWxpc3RbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saXN0LWl0ZW1bX25nY29udGVudC0lQ09NUCVdOmZvY3Vze2JhY2tncm91bmQ6cmdiYSgwLDAsMCwuMDQpfS5tYXQtbGlzdC1zaW5nbGUtc2VsZWN0ZWQtb3B0aW9uW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1saXN0LXNpbmdsZS1zZWxlY3RlZC1vcHRpb25bX25nY29udGVudC0lQ09NUCVdOmhvdmVyLCAubWF0LWxpc3Qtc2luZ2xlLXNlbGVjdGVkLW9wdGlvbltfbmdjb250ZW50LSVDT01QJV06Zm9jdXN7YmFja2dyb3VuZDpyZ2JhKDAsMCwwLC4xMil9Lm1hdC1tZW51LXBhbmVsW19uZ2NvbnRlbnQtJUNPTVAlXXtiYWNrZ3JvdW5kOiNmZmZ9Lm1hdC1tZW51LXBhbmVsW19uZ2NvbnRlbnQtJUNPTVAlXTpub3QoW2NsYXNzKj1tYXQtZWxldmF0aW9uLXpdKXtib3gtc2hhZG93OjBweCAycHggNHB4IC0xcHggcmdiYSgwLCAwLCAwLCAwLjIpLDBweCA0cHggNXB4IDBweCByZ2JhKDAsIDAsIDAsIDAuMTQpLDBweCAxcHggMTBweCAwcHggcmdiYSgwLCAwLCAwLCAwLjEyKX0ubWF0LW1lbnUtaXRlbVtfbmdjb250ZW50LSVDT01QJV17YmFja2dyb3VuZDp0cmFuc3BhcmVudDtjb2xvcjojMjEyMTIxfS5tYXQtbWVudS1pdGVtW2Rpc2FibGVkXVtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtbWVudS1pdGVtW2Rpc2FibGVkXVtfbmdjb250ZW50LSVDT01QJV06OmFmdGVye2NvbG9yOnJnYmEoMCwwLDAsLjM4KX0ubWF0LW1lbnUtaXRlbVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWljb24tbm8tY29sb3JbX25nY29udGVudC0lQ09NUCVdLCAubWF0LW1lbnUtaXRlbS1zdWJtZW51LXRyaWdnZXJbX25nY29udGVudC0lQ09NUCVdOjphZnRlcntjb2xvcjpyZ2JhKDAsMCwwLC41NCl9Lm1hdC1tZW51LWl0ZW1bX25nY29udGVudC0lQ09NUCVdOmhvdmVyOm5vdChbZGlzYWJsZWRdKSwgLm1hdC1tZW51LWl0ZW0uY2RrLXByb2dyYW0tZm9jdXNlZFtfbmdjb250ZW50LSVDT01QJV06bm90KFtkaXNhYmxlZF0pLCAubWF0LW1lbnUtaXRlbS5jZGsta2V5Ym9hcmQtZm9jdXNlZFtfbmdjb250ZW50LSVDT01QJV06bm90KFtkaXNhYmxlZF0pLCAubWF0LW1lbnUtaXRlbS1oaWdobGlnaHRlZFtfbmdjb250ZW50LSVDT01QJV06bm90KFtkaXNhYmxlZF0pe2JhY2tncm91bmQ6cmdiYSgwLDAsMCwuMDQpfS5tYXQtcGFnaW5hdG9yW19uZ2NvbnRlbnQtJUNPTVAlXXtiYWNrZ3JvdW5kOiNmZmZ9Lm1hdC1wYWdpbmF0b3JbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXBhZ2luYXRvci1wYWdlLXNpemVbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1zZWxlY3QtdHJpZ2dlcltfbmdjb250ZW50LSVDT01QJV17Y29sb3I6IzYxNjE2MX0ubWF0LXBhZ2luYXRvci1kZWNyZW1lbnRbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXBhZ2luYXRvci1pbmNyZW1lbnRbX25nY29udGVudC0lQ09NUCVde2JvcmRlci10b3A6MnB4IHNvbGlkIHJnYmEoMCwwLDAsLjU0KTtib3JkZXItcmlnaHQ6MnB4IHNvbGlkIHJnYmEoMCwwLDAsLjU0KX0ubWF0LXBhZ2luYXRvci1maXJzdFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtcGFnaW5hdG9yLWxhc3RbX25nY29udGVudC0lQ09NUCVde2JvcmRlci10b3A6MnB4IHNvbGlkIHJnYmEoMCwwLDAsLjU0KX0ubWF0LWljb24tYnV0dG9uW2Rpc2FibGVkXVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXBhZ2luYXRvci1kZWNyZW1lbnRbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWljb24tYnV0dG9uW2Rpc2FibGVkXVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXBhZ2luYXRvci1pbmNyZW1lbnRbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWljb24tYnV0dG9uW2Rpc2FibGVkXVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXBhZ2luYXRvci1maXJzdFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtaWNvbi1idXR0b25bZGlzYWJsZWRdW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtcGFnaW5hdG9yLWxhc3RbX25nY29udGVudC0lQ09NUCVde2JvcmRlci1jb2xvcjpyZ2JhKDAsMCwwLC4zOCl9Lm1hdC1wYWdpbmF0b3ItY29udGFpbmVyW19uZ2NvbnRlbnQtJUNPTVAlXXttaW4taGVpZ2h0OjU2cHh9Lm1hdC1wcm9ncmVzcy1iYXItYmFja2dyb3VuZFtfbmdjb250ZW50LSVDT01QJV17ZmlsbDojZmY5ODAwfS5tYXQtcHJvZ3Jlc3MtYmFyLWJ1ZmZlcltfbmdjb250ZW50LSVDT01QJV17YmFja2dyb3VuZC1jb2xvcjojZmY5ODAwfS5tYXQtcHJvZ3Jlc3MtYmFyLWZpbGxbX25nY29udGVudC0lQ09NUCVdOjphZnRlcntiYWNrZ3JvdW5kLWNvbG9yOiNmNTdjMDB9Lm1hdC1wcm9ncmVzcy1iYXIubWF0LWFjY2VudFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXByb2dyZXNzLWJhci1iYWNrZ3JvdW5kW19uZ2NvbnRlbnQtJUNPTVAlXXtmaWxsOiNmZjk4MDB9Lm1hdC1wcm9ncmVzcy1iYXIubWF0LWFjY2VudFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXByb2dyZXNzLWJhci1idWZmZXJbX25nY29udGVudC0lQ09NUCVde2JhY2tncm91bmQtY29sb3I6I2ZmOTgwMH0ubWF0LXByb2dyZXNzLWJhci5tYXQtYWNjZW50W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtcHJvZ3Jlc3MtYmFyLWZpbGxbX25nY29udGVudC0lQ09NUCVdOjphZnRlcntiYWNrZ3JvdW5kLWNvbG9yOiNmZjk4MDB9Lm1hdC1wcm9ncmVzcy1iYXIubWF0LXdhcm5bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1wcm9ncmVzcy1iYXItYmFja2dyb3VuZFtfbmdjb250ZW50LSVDT01QJV17ZmlsbDojZmZjZGQyfS5tYXQtcHJvZ3Jlc3MtYmFyLm1hdC13YXJuW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtcHJvZ3Jlc3MtYmFyLWJ1ZmZlcltfbmdjb250ZW50LSVDT01QJV17YmFja2dyb3VuZC1jb2xvcjojZmZjZGQyfS5tYXQtcHJvZ3Jlc3MtYmFyLm1hdC13YXJuW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtcHJvZ3Jlc3MtYmFyLWZpbGxbX25nY29udGVudC0lQ09NUCVdOjphZnRlcntiYWNrZ3JvdW5kLWNvbG9yOiNmNDQzMzZ9Lm1hdC1wcm9ncmVzcy1zcGlubmVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIGNpcmNsZVtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtc3Bpbm5lcltfbmdjb250ZW50LSVDT01QJV0gICBjaXJjbGVbX25nY29udGVudC0lQ09NUCVde3N0cm9rZTojZjU3YzAwfS5tYXQtcHJvZ3Jlc3Mtc3Bpbm5lci5tYXQtYWNjZW50W19uZ2NvbnRlbnQtJUNPTVAlXSAgIGNpcmNsZVtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtc3Bpbm5lci5tYXQtYWNjZW50W19uZ2NvbnRlbnQtJUNPTVAlXSAgIGNpcmNsZVtfbmdjb250ZW50LSVDT01QJV17c3Ryb2tlOiNmZjk4MDB9Lm1hdC1wcm9ncmVzcy1zcGlubmVyLm1hdC13YXJuW19uZ2NvbnRlbnQtJUNPTVAlXSAgIGNpcmNsZVtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtc3Bpbm5lci5tYXQtd2Fybltfbmdjb250ZW50LSVDT01QJV0gICBjaXJjbGVbX25nY29udGVudC0lQ09NUCVde3N0cm9rZTojZjQ0MzM2fS5tYXQtcmFkaW8tb3V0ZXItY2lyY2xlW19uZ2NvbnRlbnQtJUNPTVAlXXtib3JkZXItY29sb3I6IzYxNjE2MX0ubWF0LXJhZGlvLWJ1dHRvbi5tYXQtcHJpbWFyeS5tYXQtcmFkaW8tY2hlY2tlZFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXJhZGlvLW91dGVyLWNpcmNsZVtfbmdjb250ZW50LSVDT01QJV17Ym9yZGVyLWNvbG9yOiNmNTdjMDB9Lm1hdC1yYWRpby1idXR0b24ubWF0LXByaW1hcnlbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1yYWRpby1pbm5lci1jaXJjbGVbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXJhZGlvLWJ1dHRvbi5tYXQtcHJpbWFyeVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXJhZGlvLXJpcHBsZVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXJpcHBsZS1lbGVtZW50W19uZ2NvbnRlbnQtJUNPTVAlXTpub3QoLm1hdC1yYWRpby1wZXJzaXN0ZW50LXJpcHBsZSksIC5tYXQtcmFkaW8tYnV0dG9uLm1hdC1wcmltYXJ5Lm1hdC1yYWRpby1jaGVja2VkW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtcmFkaW8tcGVyc2lzdGVudC1yaXBwbGVbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXJhZGlvLWJ1dHRvbi5tYXQtcHJpbWFyeVtfbmdjb250ZW50LSVDT01QJV06YWN0aXZlICAgLm1hdC1yYWRpby1wZXJzaXN0ZW50LXJpcHBsZVtfbmdjb250ZW50LSVDT01QJV17YmFja2dyb3VuZC1jb2xvcjojZjU3YzAwfS5tYXQtcmFkaW8tYnV0dG9uLm1hdC1hY2NlbnQubWF0LXJhZGlvLWNoZWNrZWRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1yYWRpby1vdXRlci1jaXJjbGVbX25nY29udGVudC0lQ09NUCVde2JvcmRlci1jb2xvcjojZmY5ODAwfS5tYXQtcmFkaW8tYnV0dG9uLm1hdC1hY2NlbnRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1yYWRpby1pbm5lci1jaXJjbGVbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXJhZGlvLWJ1dHRvbi5tYXQtYWNjZW50W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtcmFkaW8tcmlwcGxlW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtcmlwcGxlLWVsZW1lbnRbX25nY29udGVudC0lQ09NUCVdOm5vdCgubWF0LXJhZGlvLXBlcnNpc3RlbnQtcmlwcGxlKSwgLm1hdC1yYWRpby1idXR0b24ubWF0LWFjY2VudC5tYXQtcmFkaW8tY2hlY2tlZFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXJhZGlvLXBlcnNpc3RlbnQtcmlwcGxlW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1yYWRpby1idXR0b24ubWF0LWFjY2VudFtfbmdjb250ZW50LSVDT01QJV06YWN0aXZlICAgLm1hdC1yYWRpby1wZXJzaXN0ZW50LXJpcHBsZVtfbmdjb250ZW50LSVDT01QJV17YmFja2dyb3VuZC1jb2xvcjojZmY5ODAwfS5tYXQtcmFkaW8tYnV0dG9uLm1hdC13YXJuLm1hdC1yYWRpby1jaGVja2VkW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtcmFkaW8tb3V0ZXItY2lyY2xlW19uZ2NvbnRlbnQtJUNPTVAlXXtib3JkZXItY29sb3I6I2Y0NDMzNn0ubWF0LXJhZGlvLWJ1dHRvbi5tYXQtd2Fybltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXJhZGlvLWlubmVyLWNpcmNsZVtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtcmFkaW8tYnV0dG9uLm1hdC13YXJuW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtcmFkaW8tcmlwcGxlW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtcmlwcGxlLWVsZW1lbnRbX25nY29udGVudC0lQ09NUCVdOm5vdCgubWF0LXJhZGlvLXBlcnNpc3RlbnQtcmlwcGxlKSwgLm1hdC1yYWRpby1idXR0b24ubWF0LXdhcm4ubWF0LXJhZGlvLWNoZWNrZWRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1yYWRpby1wZXJzaXN0ZW50LXJpcHBsZVtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtcmFkaW8tYnV0dG9uLm1hdC13YXJuW19uZ2NvbnRlbnQtJUNPTVAlXTphY3RpdmUgICAubWF0LXJhZGlvLXBlcnNpc3RlbnQtcmlwcGxlW19uZ2NvbnRlbnQtJUNPTVAlXXtiYWNrZ3JvdW5kLWNvbG9yOiNmNDQzMzZ9Lm1hdC1yYWRpby1idXR0b24ubWF0LXJhZGlvLWRpc2FibGVkLm1hdC1yYWRpby1jaGVja2VkW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtcmFkaW8tb3V0ZXItY2lyY2xlW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1yYWRpby1idXR0b24ubWF0LXJhZGlvLWRpc2FibGVkW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtcmFkaW8tb3V0ZXItY2lyY2xlW19uZ2NvbnRlbnQtJUNPTVAlXXtib3JkZXItY29sb3I6cmdiYSgwLDAsMCwuMzgpfS5tYXQtcmFkaW8tYnV0dG9uLm1hdC1yYWRpby1kaXNhYmxlZFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXJhZGlvLXJpcHBsZVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXJpcHBsZS1lbGVtZW50W19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1yYWRpby1idXR0b24ubWF0LXJhZGlvLWRpc2FibGVkW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtcmFkaW8taW5uZXItY2lyY2xlW19uZ2NvbnRlbnQtJUNPTVAlXXtiYWNrZ3JvdW5kLWNvbG9yOnJnYmEoMCwwLDAsLjM4KX0ubWF0LXJhZGlvLWJ1dHRvbi5tYXQtcmFkaW8tZGlzYWJsZWRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1yYWRpby1sYWJlbC1jb250ZW50W19uZ2NvbnRlbnQtJUNPTVAlXXtjb2xvcjpyZ2JhKDAsMCwwLC4zOCl9Lm1hdC1yYWRpby1idXR0b25bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1yaXBwbGUtZWxlbWVudFtfbmdjb250ZW50LSVDT01QJV17YmFja2dyb3VuZC1jb2xvcjojMDAwfS5tYXQtc2VsZWN0LXZhbHVlW19uZ2NvbnRlbnQtJUNPTVAlXXtjb2xvcjojMjEyMTIxfS5tYXQtc2VsZWN0LXBsYWNlaG9sZGVyW19uZ2NvbnRlbnQtJUNPTVAlXXtjb2xvcjpyZ2JhKDk3LDk3LDk3LC40Mil9Lm1hdC1zZWxlY3QtZGlzYWJsZWRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1zZWxlY3QtdmFsdWVbX25nY29udGVudC0lQ09NUCVde2NvbG9yOiM3NTc1NzV9Lm1hdC1zZWxlY3QtYXJyb3dbX25nY29udGVudC0lQ09NUCVde2NvbG9yOiM2MTYxNjF9Lm1hdC1zZWxlY3QtcGFuZWxbX25nY29udGVudC0lQ09NUCVde2JhY2tncm91bmQ6I2ZmZn0ubWF0LXNlbGVjdC1wYW5lbFtfbmdjb250ZW50LSVDT01QJV06bm90KFtjbGFzcyo9bWF0LWVsZXZhdGlvbi16XSl7Ym94LXNoYWRvdzowcHggMnB4IDRweCAtMXB4IHJnYmEoMCwgMCwgMCwgMC4yKSwwcHggNHB4IDVweCAwcHggcmdiYSgwLCAwLCAwLCAwLjE0KSwwcHggMXB4IDEwcHggMHB4IHJnYmEoMCwgMCwgMCwgMC4xMil9Lm1hdC1zZWxlY3QtcGFuZWxbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1vcHRpb24ubWF0LXNlbGVjdGVkW19uZ2NvbnRlbnQtJUNPTVAlXTpub3QoLm1hdC1vcHRpb24tbXVsdGlwbGUpe2JhY2tncm91bmQ6cmdiYSgwLDAsMCwuMTIpfS5tYXQtZm9ybS1maWVsZC5tYXQtZm9jdXNlZC5tYXQtcHJpbWFyeVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXNlbGVjdC1hcnJvd1tfbmdjb250ZW50LSVDT01QJV17Y29sb3I6I2Y1N2MwMH0ubWF0LWZvcm0tZmllbGQubWF0LWZvY3VzZWQubWF0LWFjY2VudFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXNlbGVjdC1hcnJvd1tfbmdjb250ZW50LSVDT01QJV17Y29sb3I6I2ZmOTgwMH0ubWF0LWZvcm0tZmllbGQubWF0LWZvY3VzZWQubWF0LXdhcm5bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1zZWxlY3QtYXJyb3dbX25nY29udGVudC0lQ09NUCVde2NvbG9yOiNmNDQzMzZ9Lm1hdC1mb3JtLWZpZWxkW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtc2VsZWN0Lm1hdC1zZWxlY3QtaW52YWxpZFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXNlbGVjdC1hcnJvd1tfbmdjb250ZW50LSVDT01QJV17Y29sb3I6I2Y0NDMzNn0ubWF0LWZvcm0tZmllbGRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1zZWxlY3QubWF0LXNlbGVjdC1kaXNhYmxlZFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXNlbGVjdC1hcnJvd1tfbmdjb250ZW50LSVDT01QJV17Y29sb3I6Izc1NzU3NX0ubWF0LWRyYXdlci1jb250YWluZXJbX25nY29udGVudC0lQ09NUCVde2JhY2tncm91bmQtY29sb3I6I2ZhZmFmYTtjb2xvcjojMjEyMTIxfS5tYXQtZHJhd2VyW19uZ2NvbnRlbnQtJUNPTVAlXXtiYWNrZ3JvdW5kLWNvbG9yOiNmZmY7Y29sb3I6IzIxMjEyMX0ubWF0LWRyYXdlci5tYXQtZHJhd2VyLXB1c2hbX25nY29udGVudC0lQ09NUCVde2JhY2tncm91bmQtY29sb3I6I2ZmZn0ubWF0LWRyYXdlcltfbmdjb250ZW50LSVDT01QJV06bm90KC5tYXQtZHJhd2VyLXNpZGUpe2JveC1zaGFkb3c6MHB4IDhweCAxMHB4IC01cHggcmdiYSgwLCAwLCAwLCAwLjIpLDBweCAxNnB4IDI0cHggMnB4IHJnYmEoMCwgMCwgMCwgMC4xNCksMHB4IDZweCAzMHB4IDVweCByZ2JhKDAsIDAsIDAsIDAuMTIpfS5tYXQtZHJhd2VyLXNpZGVbX25nY29udGVudC0lQ09NUCVde2JvcmRlci1yaWdodDpzb2xpZCAxcHggcmdiYSgwLDAsMCwuMTIpfS5tYXQtZHJhd2VyLXNpZGUubWF0LWRyYXdlci1lbmRbX25nY29udGVudC0lQ09NUCVde2JvcmRlci1sZWZ0OnNvbGlkIDFweCByZ2JhKDAsMCwwLC4xMik7Ym9yZGVyLXJpZ2h0Om5vbmV9W2Rpcj1ydGxdW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZHJhd2VyLXNpZGVbX25nY29udGVudC0lQ09NUCVde2JvcmRlci1sZWZ0OnNvbGlkIDFweCByZ2JhKDAsMCwwLC4xMik7Ym9yZGVyLXJpZ2h0Om5vbmV9W2Rpcj1ydGxdW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZHJhd2VyLXNpZGUubWF0LWRyYXdlci1lbmRbX25nY29udGVudC0lQ09NUCVde2JvcmRlci1sZWZ0Om5vbmU7Ym9yZGVyLXJpZ2h0OnNvbGlkIDFweCByZ2JhKDAsMCwwLC4xMil9Lm1hdC1kcmF3ZXItYmFja2Ryb3AubWF0LWRyYXdlci1zaG93bltfbmdjb250ZW50LSVDT01QJV17YmFja2dyb3VuZC1jb2xvcjpyZ2JhKDAsMCwwLC42KX0ubWF0LXNsaWRlLXRvZ2dsZS5tYXQtY2hlY2tlZFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXNsaWRlLXRvZ2dsZS10aHVtYltfbmdjb250ZW50LSVDT01QJV17YmFja2dyb3VuZC1jb2xvcjojZmY5ODAwfS5tYXQtc2xpZGUtdG9nZ2xlLm1hdC1jaGVja2VkW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtc2xpZGUtdG9nZ2xlLWJhcltfbmdjb250ZW50LSVDT01QJV17YmFja2dyb3VuZC1jb2xvcjpyZ2JhKDI1NSwxNTIsMCwuNTQpfS5tYXQtc2xpZGUtdG9nZ2xlLm1hdC1jaGVja2VkW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtcmlwcGxlLWVsZW1lbnRbX25nY29udGVudC0lQ09NUCVde2JhY2tncm91bmQtY29sb3I6I2ZmOTgwMH0ubWF0LXNsaWRlLXRvZ2dsZS5tYXQtcHJpbWFyeS5tYXQtY2hlY2tlZFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXNsaWRlLXRvZ2dsZS10aHVtYltfbmdjb250ZW50LSVDT01QJV17YmFja2dyb3VuZC1jb2xvcjojZjU3YzAwfS5tYXQtc2xpZGUtdG9nZ2xlLm1hdC1wcmltYXJ5Lm1hdC1jaGVja2VkW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtc2xpZGUtdG9nZ2xlLWJhcltfbmdjb250ZW50LSVDT01QJV17YmFja2dyb3VuZC1jb2xvcjpyZ2JhKDI0NSwxMjQsMCwuNTQpfS5tYXQtc2xpZGUtdG9nZ2xlLm1hdC1wcmltYXJ5Lm1hdC1jaGVja2VkW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtcmlwcGxlLWVsZW1lbnRbX25nY29udGVudC0lQ09NUCVde2JhY2tncm91bmQtY29sb3I6I2Y1N2MwMH0ubWF0LXNsaWRlLXRvZ2dsZS5tYXQtd2Fybi5tYXQtY2hlY2tlZFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXNsaWRlLXRvZ2dsZS10aHVtYltfbmdjb250ZW50LSVDT01QJV17YmFja2dyb3VuZC1jb2xvcjojZjQ0MzM2fS5tYXQtc2xpZGUtdG9nZ2xlLm1hdC13YXJuLm1hdC1jaGVja2VkW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtc2xpZGUtdG9nZ2xlLWJhcltfbmdjb250ZW50LSVDT01QJV17YmFja2dyb3VuZC1jb2xvcjpyZ2JhKDI0NCw2Nyw1NCwuNTQpfS5tYXQtc2xpZGUtdG9nZ2xlLm1hdC13YXJuLm1hdC1jaGVja2VkW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtcmlwcGxlLWVsZW1lbnRbX25nY29udGVudC0lQ09NUCVde2JhY2tncm91bmQtY29sb3I6I2Y0NDMzNn0ubWF0LXNsaWRlLXRvZ2dsZVtfbmdjb250ZW50LSVDT01QJV06bm90KC5tYXQtY2hlY2tlZCkgICAubWF0LXJpcHBsZS1lbGVtZW50W19uZ2NvbnRlbnQtJUNPTVAlXXtiYWNrZ3JvdW5kLWNvbG9yOiMwMDB9Lm1hdC1zbGlkZS10b2dnbGUtdGh1bWJbX25nY29udGVudC0lQ09NUCVde2JveC1zaGFkb3c6MHB4IDJweCAxcHggLTFweCByZ2JhKDAsIDAsIDAsIDAuMiksMHB4IDFweCAxcHggMHB4IHJnYmEoMCwgMCwgMCwgMC4xNCksMHB4IDFweCAzcHggMHB4IHJnYmEoMCwgMCwgMCwgMC4xMik7YmFja2dyb3VuZC1jb2xvcjojZmFmYWZhfS5tYXQtc2xpZGUtdG9nZ2xlLWJhcltfbmdjb250ZW50LSVDT01QJV17YmFja2dyb3VuZC1jb2xvcjpyZ2JhKDAsMCwwLC4zOCl9Lm1hdC1zbGlkZXItdHJhY2stYmFja2dyb3VuZFtfbmdjb250ZW50LSVDT01QJV17YmFja2dyb3VuZC1jb2xvcjpyZ2JhKDAsMCwwLC4yNil9Lm1hdC1wcmltYXJ5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtc2xpZGVyLXRyYWNrLWZpbGxbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXByaW1hcnlbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1zbGlkZXItdGh1bWJbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXByaW1hcnlbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1zbGlkZXItdGh1bWItbGFiZWxbX25nY29udGVudC0lQ09NUCVde2JhY2tncm91bmQtY29sb3I6I2Y1N2MwMH0ubWF0LXByaW1hcnlbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1zbGlkZXItdGh1bWItbGFiZWwtdGV4dFtfbmdjb250ZW50LSVDT01QJV17Y29sb3I6I2ZmZn0ubWF0LXByaW1hcnlbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1zbGlkZXItZm9jdXMtcmluZ1tfbmdjb250ZW50LSVDT01QJV17YmFja2dyb3VuZC1jb2xvcjpyZ2JhKDI0NSwxMjQsMCwuMil9Lm1hdC1hY2NlbnRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1zbGlkZXItdHJhY2stZmlsbFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtYWNjZW50W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtc2xpZGVyLXRodW1iW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1hY2NlbnRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1zbGlkZXItdGh1bWItbGFiZWxbX25nY29udGVudC0lQ09NUCVde2JhY2tncm91bmQtY29sb3I6I2ZmOTgwMH0ubWF0LWFjY2VudFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXNsaWRlci10aHVtYi1sYWJlbC10ZXh0W19uZ2NvbnRlbnQtJUNPTVAlXXtjb2xvcjojZmZmfS5tYXQtYWNjZW50W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtc2xpZGVyLWZvY3VzLXJpbmdbX25nY29udGVudC0lQ09NUCVde2JhY2tncm91bmQtY29sb3I6cmdiYSgyNTUsMTUyLDAsLjIpfS5tYXQtd2Fybltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXNsaWRlci10cmFjay1maWxsW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC13YXJuW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtc2xpZGVyLXRodW1iW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC13YXJuW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtc2xpZGVyLXRodW1iLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXtiYWNrZ3JvdW5kLWNvbG9yOiNmNDQzMzZ9Lm1hdC13YXJuW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtc2xpZGVyLXRodW1iLWxhYmVsLXRleHRbX25nY29udGVudC0lQ09NUCVde2NvbG9yOiNmZmZ9Lm1hdC13YXJuW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtc2xpZGVyLWZvY3VzLXJpbmdbX25nY29udGVudC0lQ09NUCVde2JhY2tncm91bmQtY29sb3I6cmdiYSgyNDQsNjcsNTQsLjIpfS5tYXQtc2xpZGVyW19uZ2NvbnRlbnQtJUNPTVAlXTpob3ZlciAgIC5tYXQtc2xpZGVyLXRyYWNrLWJhY2tncm91bmRbX25nY29udGVudC0lQ09NUCVdLCAuY2RrLWZvY3VzZWRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1zbGlkZXItdHJhY2stYmFja2dyb3VuZFtfbmdjb250ZW50LSVDT01QJV17YmFja2dyb3VuZC1jb2xvcjpyZ2JhKDAsMCwwLC4zOCl9Lm1hdC1zbGlkZXItZGlzYWJsZWRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1zbGlkZXItdHJhY2stYmFja2dyb3VuZFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtc2xpZGVyLWRpc2FibGVkW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtc2xpZGVyLXRyYWNrLWZpbGxbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXNsaWRlci1kaXNhYmxlZFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXNsaWRlci10aHVtYltfbmdjb250ZW50LSVDT01QJV17YmFja2dyb3VuZC1jb2xvcjpyZ2JhKDAsMCwwLC4yNil9Lm1hdC1zbGlkZXItZGlzYWJsZWRbX25nY29udGVudC0lQ09NUCVdOmhvdmVyICAgLm1hdC1zbGlkZXItdHJhY2stYmFja2dyb3VuZFtfbmdjb250ZW50LSVDT01QJV17YmFja2dyb3VuZC1jb2xvcjpyZ2JhKDAsMCwwLC4yNil9Lm1hdC1zbGlkZXItbWluLXZhbHVlW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtc2xpZGVyLWZvY3VzLXJpbmdbX25nY29udGVudC0lQ09NUCVde2JhY2tncm91bmQtY29sb3I6cmdiYSgwLDAsMCwuMTIpfS5tYXQtc2xpZGVyLW1pbi12YWx1ZS5tYXQtc2xpZGVyLXRodW1iLWxhYmVsLXNob3dpbmdbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1zbGlkZXItdGh1bWJbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXNsaWRlci1taW4tdmFsdWUubWF0LXNsaWRlci10aHVtYi1sYWJlbC1zaG93aW5nW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtc2xpZGVyLXRodW1iLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXtiYWNrZ3JvdW5kLWNvbG9yOnJnYmEoMCwwLDAsLjg3KX0ubWF0LXNsaWRlci1taW4tdmFsdWUubWF0LXNsaWRlci10aHVtYi1sYWJlbC1zaG93aW5nLmNkay1mb2N1c2VkW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtc2xpZGVyLXRodW1iW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1zbGlkZXItbWluLXZhbHVlLm1hdC1zbGlkZXItdGh1bWItbGFiZWwtc2hvd2luZy5jZGstZm9jdXNlZFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXNsaWRlci10aHVtYi1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17YmFja2dyb3VuZC1jb2xvcjpyZ2JhKDAsMCwwLC4yNil9Lm1hdC1zbGlkZXItbWluLXZhbHVlW19uZ2NvbnRlbnQtJUNPTVAlXTpub3QoLm1hdC1zbGlkZXItdGh1bWItbGFiZWwtc2hvd2luZykgICAubWF0LXNsaWRlci10aHVtYltfbmdjb250ZW50LSVDT01QJV17Ym9yZGVyLWNvbG9yOnJnYmEoMCwwLDAsLjI2KTtiYWNrZ3JvdW5kLWNvbG9yOnRyYW5zcGFyZW50fS5tYXQtc2xpZGVyLW1pbi12YWx1ZVtfbmdjb250ZW50LSVDT01QJV06bm90KC5tYXQtc2xpZGVyLXRodW1iLWxhYmVsLXNob3dpbmcpOmhvdmVyICAgLm1hdC1zbGlkZXItdGh1bWJbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXNsaWRlci1taW4tdmFsdWVbX25nY29udGVudC0lQ09NUCVdOm5vdCgubWF0LXNsaWRlci10aHVtYi1sYWJlbC1zaG93aW5nKS5jZGstZm9jdXNlZCAgIC5tYXQtc2xpZGVyLXRodW1iW19uZ2NvbnRlbnQtJUNPTVAlXXtib3JkZXItY29sb3I6cmdiYSgwLDAsMCwuMzgpfS5tYXQtc2xpZGVyLW1pbi12YWx1ZVtfbmdjb250ZW50LSVDT01QJV06bm90KC5tYXQtc2xpZGVyLXRodW1iLWxhYmVsLXNob3dpbmcpOmhvdmVyLm1hdC1zbGlkZXItZGlzYWJsZWQgICAubWF0LXNsaWRlci10aHVtYltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtc2xpZGVyLW1pbi12YWx1ZVtfbmdjb250ZW50LSVDT01QJV06bm90KC5tYXQtc2xpZGVyLXRodW1iLWxhYmVsLXNob3dpbmcpLmNkay1mb2N1c2VkLm1hdC1zbGlkZXItZGlzYWJsZWQgICAubWF0LXNsaWRlci10aHVtYltfbmdjb250ZW50LSVDT01QJV17Ym9yZGVyLWNvbG9yOnJnYmEoMCwwLDAsLjI2KX0ubWF0LXNsaWRlci1oYXMtdGlja3NbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1zbGlkZXItd3JhcHBlcltfbmdjb250ZW50LSVDT01QJV06OmFmdGVye2JvcmRlci1jb2xvcjpyZ2JhKDAsMCwwLC43KX0ubWF0LXNsaWRlci1ob3Jpem9udGFsW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtc2xpZGVyLXRpY2tzW19uZ2NvbnRlbnQtJUNPTVAlXXtiYWNrZ3JvdW5kLWltYWdlOnJlcGVhdGluZy1saW5lYXItZ3JhZGllbnQodG8gcmlnaHQsIHJnYmEoMCwgMCwgMCwgMC43KSwgcmdiYSgwLCAwLCAwLCAwLjcpIDJweCwgdHJhbnNwYXJlbnQgMCwgdHJhbnNwYXJlbnQpO2JhY2tncm91bmQtaW1hZ2U6LW1vei1yZXBlYXRpbmctbGluZWFyLWdyYWRpZW50KDAuMDAwMWRlZywgcmdiYSgwLCAwLCAwLCAwLjcpLCByZ2JhKDAsIDAsIDAsIDAuNykgMnB4LCB0cmFuc3BhcmVudCAwLCB0cmFuc3BhcmVudCl9Lm1hdC1zbGlkZXItdmVydGljYWxbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1zbGlkZXItdGlja3NbX25nY29udGVudC0lQ09NUCVde2JhY2tncm91bmQtaW1hZ2U6cmVwZWF0aW5nLWxpbmVhci1ncmFkaWVudCh0byBib3R0b20sIHJnYmEoMCwgMCwgMCwgMC43KSwgcmdiYSgwLCAwLCAwLCAwLjcpIDJweCwgdHJhbnNwYXJlbnQgMCwgdHJhbnNwYXJlbnQpfS5tYXQtc3RlcC1oZWFkZXIuY2RrLWtleWJvYXJkLWZvY3VzZWRbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXN0ZXAtaGVhZGVyLmNkay1wcm9ncmFtLWZvY3VzZWRbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXN0ZXAtaGVhZGVyW19uZ2NvbnRlbnQtJUNPTVAlXTpob3ZlcntiYWNrZ3JvdW5kLWNvbG9yOnJnYmEoMCwwLDAsLjA0KX1AbWVkaWEoaG92ZXI6IG5vbmUpey5tYXQtc3RlcC1oZWFkZXJbX25nY29udGVudC0lQ09NUCVdOmhvdmVye2JhY2tncm91bmQ6bm9uZX19Lm1hdC1zdGVwLWhlYWRlcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXN0ZXAtbGFiZWxbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXN0ZXAtaGVhZGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtc3RlcC1vcHRpb25hbFtfbmdjb250ZW50LSVDT01QJV17Y29sb3I6IzYxNjE2MX0ubWF0LXN0ZXAtaGVhZGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtc3RlcC1pY29uW19uZ2NvbnRlbnQtJUNPTVAlXXtiYWNrZ3JvdW5kLWNvbG9yOiM2MTYxNjE7Y29sb3I6I2ZmZn0ubWF0LXN0ZXAtaGVhZGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtc3RlcC1pY29uLXNlbGVjdGVkW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1zdGVwLWhlYWRlcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXN0ZXAtaWNvbi1zdGF0ZS1kb25lW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1zdGVwLWhlYWRlcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXN0ZXAtaWNvbi1zdGF0ZS1lZGl0W19uZ2NvbnRlbnQtJUNPTVAlXXtiYWNrZ3JvdW5kLWNvbG9yOiNmNTdjMDA7Y29sb3I6I2ZmZn0ubWF0LXN0ZXAtaGVhZGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtc3RlcC1pY29uLXN0YXRlLWVycm9yW19uZ2NvbnRlbnQtJUNPTVAlXXtiYWNrZ3JvdW5kLWNvbG9yOnRyYW5zcGFyZW50O2NvbG9yOiNmNDQzMzZ9Lm1hdC1zdGVwLWhlYWRlcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXN0ZXAtbGFiZWwubWF0LXN0ZXAtbGFiZWwtYWN0aXZlW19uZ2NvbnRlbnQtJUNPTVAlXXtjb2xvcjojMjEyMTIxfS5tYXQtc3RlcC1oZWFkZXJbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1zdGVwLWxhYmVsLm1hdC1zdGVwLWxhYmVsLWVycm9yW19uZ2NvbnRlbnQtJUNPTVAlXXtjb2xvcjojZjQ0MzM2fS5tYXQtc3RlcHBlci1ob3Jpem9udGFsW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1zdGVwcGVyLXZlcnRpY2FsW19uZ2NvbnRlbnQtJUNPTVAlXXtiYWNrZ3JvdW5kLWNvbG9yOiNmZmZ9Lm1hdC1zdGVwcGVyLXZlcnRpY2FsLWxpbmVbX25nY29udGVudC0lQ09NUCVdOjpiZWZvcmV7Ym9yZGVyLWxlZnQtY29sb3I6cmdiYSgwLDAsMCwuMTIpfS5tYXQtaG9yaXpvbnRhbC1zdGVwcGVyLWhlYWRlcltfbmdjb250ZW50LSVDT01QJV06OmJlZm9yZSwgLm1hdC1ob3Jpem9udGFsLXN0ZXBwZXItaGVhZGVyW19uZ2NvbnRlbnQtJUNPTVAlXTo6YWZ0ZXIsIC5tYXQtc3RlcHBlci1ob3Jpem9udGFsLWxpbmVbX25nY29udGVudC0lQ09NUCVde2JvcmRlci10b3AtY29sb3I6cmdiYSgwLDAsMCwuMTIpfS5tYXQtaG9yaXpvbnRhbC1zdGVwcGVyLWhlYWRlcltfbmdjb250ZW50LSVDT01QJV17aGVpZ2h0OjcycHh9Lm1hdC1zdGVwcGVyLWxhYmVsLXBvc2l0aW9uLWJvdHRvbVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWhvcml6b250YWwtc3RlcHBlci1oZWFkZXJbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXZlcnRpY2FsLXN0ZXBwZXItaGVhZGVyW19uZ2NvbnRlbnQtJUNPTVAlXXtwYWRkaW5nOjI0cHggMjRweH0ubWF0LXN0ZXBwZXItdmVydGljYWwtbGluZVtfbmdjb250ZW50LSVDT01QJV06OmJlZm9yZXt0b3A6LTE2cHg7Ym90dG9tOi0xNnB4fS5tYXQtc3RlcHBlci1sYWJlbC1wb3NpdGlvbi1ib3R0b21bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1ob3Jpem9udGFsLXN0ZXBwZXItaGVhZGVyW19uZ2NvbnRlbnQtJUNPTVAlXTo6YWZ0ZXIsIC5tYXQtc3RlcHBlci1sYWJlbC1wb3NpdGlvbi1ib3R0b21bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1ob3Jpem9udGFsLXN0ZXBwZXItaGVhZGVyW19uZ2NvbnRlbnQtJUNPTVAlXTo6YmVmb3Jle3RvcDozNnB4fS5tYXQtc3RlcHBlci1sYWJlbC1wb3NpdGlvbi1ib3R0b21bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1zdGVwcGVyLWhvcml6b250YWwtbGluZVtfbmdjb250ZW50LSVDT01QJV17dG9wOjM2cHh9Lm1hdC1zb3J0LWhlYWRlci1hcnJvd1tfbmdjb250ZW50LSVDT01QJV17Y29sb3I6IzYxNjE2MX0ubWF0LXRhYi1uYXYtYmFyW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10YWItaGVhZGVyW19uZ2NvbnRlbnQtJUNPTVAlXXtib3JkZXItYm90dG9tOjFweCBzb2xpZCByZ2JhKDAsMCwwLC4xMil9Lm1hdC10YWItZ3JvdXAtaW52ZXJ0ZWQtaGVhZGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtdGFiLW5hdi1iYXJbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXRhYi1ncm91cC1pbnZlcnRlZC1oZWFkZXJbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC10YWItaGVhZGVyW19uZ2NvbnRlbnQtJUNPTVAlXXtib3JkZXItdG9wOjFweCBzb2xpZCByZ2JhKDAsMCwwLC4xMik7Ym9yZGVyLWJvdHRvbTpub25lfS5tYXQtdGFiLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10YWItbGlua1tfbmdjb250ZW50LSVDT01QJV17Y29sb3I6IzIxMjEyMX0ubWF0LXRhYi1sYWJlbC5tYXQtdGFiLWRpc2FibGVkW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10YWItbGluay5tYXQtdGFiLWRpc2FibGVkW19uZ2NvbnRlbnQtJUNPTVAlXXtjb2xvcjojNzU3NTc1fS5tYXQtdGFiLWhlYWRlci1wYWdpbmF0aW9uLWNoZXZyb25bX25nY29udGVudC0lQ09NUCVde2JvcmRlci1jb2xvcjojMjEyMTIxfS5tYXQtdGFiLWhlYWRlci1wYWdpbmF0aW9uLWRpc2FibGVkW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtdGFiLWhlYWRlci1wYWdpbmF0aW9uLWNoZXZyb25bX25nY29udGVudC0lQ09NUCVde2JvcmRlci1jb2xvcjojNzU3NTc1fS5tYXQtdGFiLWdyb3VwW2NsYXNzKj1tYXQtYmFja2dyb3VuZC1dW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtdGFiLWhlYWRlcltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdGFiLW5hdi1iYXJbY2xhc3MqPW1hdC1iYWNrZ3JvdW5kLV1bX25nY29udGVudC0lQ09NUCVde2JvcmRlci1ib3R0b206bm9uZTtib3JkZXItdG9wOm5vbmV9Lm1hdC10YWItZ3JvdXAubWF0LXByaW1hcnlbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC10YWItbGFiZWwuY2RrLWtleWJvYXJkLWZvY3VzZWRbX25nY29udGVudC0lQ09NUCVdOm5vdCgubWF0LXRhYi1kaXNhYmxlZCksIC5tYXQtdGFiLWdyb3VwLm1hdC1wcmltYXJ5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtdGFiLWxhYmVsLmNkay1wcm9ncmFtLWZvY3VzZWRbX25nY29udGVudC0lQ09NUCVdOm5vdCgubWF0LXRhYi1kaXNhYmxlZCksIC5tYXQtdGFiLWdyb3VwLm1hdC1wcmltYXJ5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtdGFiLWxpbmsuY2RrLWtleWJvYXJkLWZvY3VzZWRbX25nY29udGVudC0lQ09NUCVdOm5vdCgubWF0LXRhYi1kaXNhYmxlZCksIC5tYXQtdGFiLWdyb3VwLm1hdC1wcmltYXJ5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtdGFiLWxpbmsuY2RrLXByb2dyYW0tZm9jdXNlZFtfbmdjb250ZW50LSVDT01QJV06bm90KC5tYXQtdGFiLWRpc2FibGVkKSwgLm1hdC10YWItbmF2LWJhci5tYXQtcHJpbWFyeVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXRhYi1sYWJlbC5jZGsta2V5Ym9hcmQtZm9jdXNlZFtfbmdjb250ZW50LSVDT01QJV06bm90KC5tYXQtdGFiLWRpc2FibGVkKSwgLm1hdC10YWItbmF2LWJhci5tYXQtcHJpbWFyeVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXRhYi1sYWJlbC5jZGstcHJvZ3JhbS1mb2N1c2VkW19uZ2NvbnRlbnQtJUNPTVAlXTpub3QoLm1hdC10YWItZGlzYWJsZWQpLCAubWF0LXRhYi1uYXYtYmFyLm1hdC1wcmltYXJ5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtdGFiLWxpbmsuY2RrLWtleWJvYXJkLWZvY3VzZWRbX25nY29udGVudC0lQ09NUCVdOm5vdCgubWF0LXRhYi1kaXNhYmxlZCksIC5tYXQtdGFiLW5hdi1iYXIubWF0LXByaW1hcnlbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC10YWItbGluay5jZGstcHJvZ3JhbS1mb2N1c2VkW19uZ2NvbnRlbnQtJUNPTVAlXTpub3QoLm1hdC10YWItZGlzYWJsZWQpe2JhY2tncm91bmQtY29sb3I6cmdiYSgyNTUsMTUyLDAsLjMpfS5tYXQtdGFiLWdyb3VwLm1hdC1wcmltYXJ5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaW5rLWJhcltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdGFiLW5hdi1iYXIubWF0LXByaW1hcnlbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pbmstYmFyW19uZ2NvbnRlbnQtJUNPTVAlXXtiYWNrZ3JvdW5kLWNvbG9yOiNmNTdjMDB9Lm1hdC10YWItZ3JvdXAubWF0LXByaW1hcnkubWF0LWJhY2tncm91bmQtcHJpbWFyeVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWluay1iYXJbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXRhYi1uYXYtYmFyLm1hdC1wcmltYXJ5Lm1hdC1iYWNrZ3JvdW5kLXByaW1hcnlbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pbmstYmFyW19uZ2NvbnRlbnQtJUNPTVAlXXtiYWNrZ3JvdW5kLWNvbG9yOiNmZmZ9Lm1hdC10YWItZ3JvdXAubWF0LWFjY2VudFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXRhYi1sYWJlbC5jZGsta2V5Ym9hcmQtZm9jdXNlZFtfbmdjb250ZW50LSVDT01QJV06bm90KC5tYXQtdGFiLWRpc2FibGVkKSwgLm1hdC10YWItZ3JvdXAubWF0LWFjY2VudFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXRhYi1sYWJlbC5jZGstcHJvZ3JhbS1mb2N1c2VkW19uZ2NvbnRlbnQtJUNPTVAlXTpub3QoLm1hdC10YWItZGlzYWJsZWQpLCAubWF0LXRhYi1ncm91cC5tYXQtYWNjZW50W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtdGFiLWxpbmsuY2RrLWtleWJvYXJkLWZvY3VzZWRbX25nY29udGVudC0lQ09NUCVdOm5vdCgubWF0LXRhYi1kaXNhYmxlZCksIC5tYXQtdGFiLWdyb3VwLm1hdC1hY2NlbnRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC10YWItbGluay5jZGstcHJvZ3JhbS1mb2N1c2VkW19uZ2NvbnRlbnQtJUNPTVAlXTpub3QoLm1hdC10YWItZGlzYWJsZWQpLCAubWF0LXRhYi1uYXYtYmFyLm1hdC1hY2NlbnRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC10YWItbGFiZWwuY2RrLWtleWJvYXJkLWZvY3VzZWRbX25nY29udGVudC0lQ09NUCVdOm5vdCgubWF0LXRhYi1kaXNhYmxlZCksIC5tYXQtdGFiLW5hdi1iYXIubWF0LWFjY2VudFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXRhYi1sYWJlbC5jZGstcHJvZ3JhbS1mb2N1c2VkW19uZ2NvbnRlbnQtJUNPTVAlXTpub3QoLm1hdC10YWItZGlzYWJsZWQpLCAubWF0LXRhYi1uYXYtYmFyLm1hdC1hY2NlbnRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC10YWItbGluay5jZGsta2V5Ym9hcmQtZm9jdXNlZFtfbmdjb250ZW50LSVDT01QJV06bm90KC5tYXQtdGFiLWRpc2FibGVkKSwgLm1hdC10YWItbmF2LWJhci5tYXQtYWNjZW50W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtdGFiLWxpbmsuY2RrLXByb2dyYW0tZm9jdXNlZFtfbmdjb250ZW50LSVDT01QJV06bm90KC5tYXQtdGFiLWRpc2FibGVkKXtiYWNrZ3JvdW5kLWNvbG9yOnJnYmEoMjU1LDE1MiwwLC4zKX0ubWF0LXRhYi1ncm91cC5tYXQtYWNjZW50W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaW5rLWJhcltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdGFiLW5hdi1iYXIubWF0LWFjY2VudFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWluay1iYXJbX25nY29udGVudC0lQ09NUCVde2JhY2tncm91bmQtY29sb3I6I2ZmOTgwMH0ubWF0LXRhYi1ncm91cC5tYXQtYWNjZW50Lm1hdC1iYWNrZ3JvdW5kLWFjY2VudFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWluay1iYXJbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXRhYi1uYXYtYmFyLm1hdC1hY2NlbnQubWF0LWJhY2tncm91bmQtYWNjZW50W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaW5rLWJhcltfbmdjb250ZW50LSVDT01QJV17YmFja2dyb3VuZC1jb2xvcjojZmZmfS5tYXQtdGFiLWdyb3VwLm1hdC13YXJuW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtdGFiLWxhYmVsLmNkay1rZXlib2FyZC1mb2N1c2VkW19uZ2NvbnRlbnQtJUNPTVAlXTpub3QoLm1hdC10YWItZGlzYWJsZWQpLCAubWF0LXRhYi1ncm91cC5tYXQtd2Fybltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXRhYi1sYWJlbC5jZGstcHJvZ3JhbS1mb2N1c2VkW19uZ2NvbnRlbnQtJUNPTVAlXTpub3QoLm1hdC10YWItZGlzYWJsZWQpLCAubWF0LXRhYi1ncm91cC5tYXQtd2Fybltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXRhYi1saW5rLmNkay1rZXlib2FyZC1mb2N1c2VkW19uZ2NvbnRlbnQtJUNPTVAlXTpub3QoLm1hdC10YWItZGlzYWJsZWQpLCAubWF0LXRhYi1ncm91cC5tYXQtd2Fybltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXRhYi1saW5rLmNkay1wcm9ncmFtLWZvY3VzZWRbX25nY29udGVudC0lQ09NUCVdOm5vdCgubWF0LXRhYi1kaXNhYmxlZCksIC5tYXQtdGFiLW5hdi1iYXIubWF0LXdhcm5bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC10YWItbGFiZWwuY2RrLWtleWJvYXJkLWZvY3VzZWRbX25nY29udGVudC0lQ09NUCVdOm5vdCgubWF0LXRhYi1kaXNhYmxlZCksIC5tYXQtdGFiLW5hdi1iYXIubWF0LXdhcm5bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC10YWItbGFiZWwuY2RrLXByb2dyYW0tZm9jdXNlZFtfbmdjb250ZW50LSVDT01QJV06bm90KC5tYXQtdGFiLWRpc2FibGVkKSwgLm1hdC10YWItbmF2LWJhci5tYXQtd2Fybltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXRhYi1saW5rLmNkay1rZXlib2FyZC1mb2N1c2VkW19uZ2NvbnRlbnQtJUNPTVAlXTpub3QoLm1hdC10YWItZGlzYWJsZWQpLCAubWF0LXRhYi1uYXYtYmFyLm1hdC13YXJuW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtdGFiLWxpbmsuY2RrLXByb2dyYW0tZm9jdXNlZFtfbmdjb250ZW50LSVDT01QJV06bm90KC5tYXQtdGFiLWRpc2FibGVkKXtiYWNrZ3JvdW5kLWNvbG9yOnJnYmEoMjU1LDIwNSwyMTAsLjMpfS5tYXQtdGFiLWdyb3VwLm1hdC13YXJuW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaW5rLWJhcltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdGFiLW5hdi1iYXIubWF0LXdhcm5bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pbmstYmFyW19uZ2NvbnRlbnQtJUNPTVAlXXtiYWNrZ3JvdW5kLWNvbG9yOiNmNDQzMzZ9Lm1hdC10YWItZ3JvdXAubWF0LXdhcm4ubWF0LWJhY2tncm91bmQtd2Fybltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWluay1iYXJbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXRhYi1uYXYtYmFyLm1hdC13YXJuLm1hdC1iYWNrZ3JvdW5kLXdhcm5bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pbmstYmFyW19uZ2NvbnRlbnQtJUNPTVAlXXtiYWNrZ3JvdW5kLWNvbG9yOiNmZmZ9Lm1hdC10YWItZ3JvdXAubWF0LWJhY2tncm91bmQtcHJpbWFyeVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXRhYi1sYWJlbC5jZGsta2V5Ym9hcmQtZm9jdXNlZFtfbmdjb250ZW50LSVDT01QJV06bm90KC5tYXQtdGFiLWRpc2FibGVkKSwgLm1hdC10YWItZ3JvdXAubWF0LWJhY2tncm91bmQtcHJpbWFyeVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXRhYi1sYWJlbC5jZGstcHJvZ3JhbS1mb2N1c2VkW19uZ2NvbnRlbnQtJUNPTVAlXTpub3QoLm1hdC10YWItZGlzYWJsZWQpLCAubWF0LXRhYi1ncm91cC5tYXQtYmFja2dyb3VuZC1wcmltYXJ5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtdGFiLWxpbmsuY2RrLWtleWJvYXJkLWZvY3VzZWRbX25nY29udGVudC0lQ09NUCVdOm5vdCgubWF0LXRhYi1kaXNhYmxlZCksIC5tYXQtdGFiLWdyb3VwLm1hdC1iYWNrZ3JvdW5kLXByaW1hcnlbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC10YWItbGluay5jZGstcHJvZ3JhbS1mb2N1c2VkW19uZ2NvbnRlbnQtJUNPTVAlXTpub3QoLm1hdC10YWItZGlzYWJsZWQpLCAubWF0LXRhYi1uYXYtYmFyLm1hdC1iYWNrZ3JvdW5kLXByaW1hcnlbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC10YWItbGFiZWwuY2RrLWtleWJvYXJkLWZvY3VzZWRbX25nY29udGVudC0lQ09NUCVdOm5vdCgubWF0LXRhYi1kaXNhYmxlZCksIC5tYXQtdGFiLW5hdi1iYXIubWF0LWJhY2tncm91bmQtcHJpbWFyeVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXRhYi1sYWJlbC5jZGstcHJvZ3JhbS1mb2N1c2VkW19uZ2NvbnRlbnQtJUNPTVAlXTpub3QoLm1hdC10YWItZGlzYWJsZWQpLCAubWF0LXRhYi1uYXYtYmFyLm1hdC1iYWNrZ3JvdW5kLXByaW1hcnlbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC10YWItbGluay5jZGsta2V5Ym9hcmQtZm9jdXNlZFtfbmdjb250ZW50LSVDT01QJV06bm90KC5tYXQtdGFiLWRpc2FibGVkKSwgLm1hdC10YWItbmF2LWJhci5tYXQtYmFja2dyb3VuZC1wcmltYXJ5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtdGFiLWxpbmsuY2RrLXByb2dyYW0tZm9jdXNlZFtfbmdjb250ZW50LSVDT01QJV06bm90KC5tYXQtdGFiLWRpc2FibGVkKXtiYWNrZ3JvdW5kLWNvbG9yOnJnYmEoMjU1LDE1MiwwLC4zKX0ubWF0LXRhYi1ncm91cC5tYXQtYmFja2dyb3VuZC1wcmltYXJ5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtdGFiLWhlYWRlcltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdGFiLWdyb3VwLm1hdC1iYWNrZ3JvdW5kLXByaW1hcnlbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC10YWItbGlua3NbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXRhYi1ncm91cC5tYXQtYmFja2dyb3VuZC1wcmltYXJ5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtdGFiLWhlYWRlci1wYWdpbmF0aW9uW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10YWItbmF2LWJhci5tYXQtYmFja2dyb3VuZC1wcmltYXJ5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtdGFiLWhlYWRlcltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdGFiLW5hdi1iYXIubWF0LWJhY2tncm91bmQtcHJpbWFyeVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXRhYi1saW5rc1tfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdGFiLW5hdi1iYXIubWF0LWJhY2tncm91bmQtcHJpbWFyeVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXRhYi1oZWFkZXItcGFnaW5hdGlvbltfbmdjb250ZW50LSVDT01QJV17YmFja2dyb3VuZC1jb2xvcjojZjU3YzAwfS5tYXQtdGFiLWdyb3VwLm1hdC1iYWNrZ3JvdW5kLXByaW1hcnlbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC10YWItbGFiZWxbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXRhYi1ncm91cC5tYXQtYmFja2dyb3VuZC1wcmltYXJ5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtdGFiLWxpbmtbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXRhYi1uYXYtYmFyLm1hdC1iYWNrZ3JvdW5kLXByaW1hcnlbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC10YWItbGFiZWxbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXRhYi1uYXYtYmFyLm1hdC1iYWNrZ3JvdW5kLXByaW1hcnlbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC10YWItbGlua1tfbmdjb250ZW50LSVDT01QJV17Y29sb3I6I2ZmZn0ubWF0LXRhYi1ncm91cC5tYXQtYmFja2dyb3VuZC1wcmltYXJ5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtdGFiLWxhYmVsLm1hdC10YWItZGlzYWJsZWRbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXRhYi1ncm91cC5tYXQtYmFja2dyb3VuZC1wcmltYXJ5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtdGFiLWxpbmsubWF0LXRhYi1kaXNhYmxlZFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdGFiLW5hdi1iYXIubWF0LWJhY2tncm91bmQtcHJpbWFyeVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXRhYi1sYWJlbC5tYXQtdGFiLWRpc2FibGVkW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10YWItbmF2LWJhci5tYXQtYmFja2dyb3VuZC1wcmltYXJ5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtdGFiLWxpbmsubWF0LXRhYi1kaXNhYmxlZFtfbmdjb250ZW50LSVDT01QJV17Y29sb3I6cmdiYSgyNTUsMjU1LDI1NSwuNCl9Lm1hdC10YWItZ3JvdXAubWF0LWJhY2tncm91bmQtcHJpbWFyeVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXRhYi1oZWFkZXItcGFnaW5hdGlvbi1jaGV2cm9uW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10YWItbmF2LWJhci5tYXQtYmFja2dyb3VuZC1wcmltYXJ5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtdGFiLWhlYWRlci1wYWdpbmF0aW9uLWNoZXZyb25bX25nY29udGVudC0lQ09NUCVde2JvcmRlci1jb2xvcjojZmZmfS5tYXQtdGFiLWdyb3VwLm1hdC1iYWNrZ3JvdW5kLXByaW1hcnlbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC10YWItaGVhZGVyLXBhZ2luYXRpb24tZGlzYWJsZWRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC10YWItaGVhZGVyLXBhZ2luYXRpb24tY2hldnJvbltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdGFiLW5hdi1iYXIubWF0LWJhY2tncm91bmQtcHJpbWFyeVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXRhYi1oZWFkZXItcGFnaW5hdGlvbi1kaXNhYmxlZFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXRhYi1oZWFkZXItcGFnaW5hdGlvbi1jaGV2cm9uW19uZ2NvbnRlbnQtJUNPTVAlXXtib3JkZXItY29sb3I6cmdiYSgyNTUsMjU1LDI1NSwuNCl9Lm1hdC10YWItZ3JvdXAubWF0LWJhY2tncm91bmQtcHJpbWFyeVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXJpcHBsZS1lbGVtZW50W19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10YWItbmF2LWJhci5tYXQtYmFja2dyb3VuZC1wcmltYXJ5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtcmlwcGxlLWVsZW1lbnRbX25nY29udGVudC0lQ09NUCVde2JhY2tncm91bmQtY29sb3I6cmdiYSgyNTUsMjU1LDI1NSwuMTIpfS5tYXQtdGFiLWdyb3VwLm1hdC1iYWNrZ3JvdW5kLWFjY2VudFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXRhYi1sYWJlbC5jZGsta2V5Ym9hcmQtZm9jdXNlZFtfbmdjb250ZW50LSVDT01QJV06bm90KC5tYXQtdGFiLWRpc2FibGVkKSwgLm1hdC10YWItZ3JvdXAubWF0LWJhY2tncm91bmQtYWNjZW50W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtdGFiLWxhYmVsLmNkay1wcm9ncmFtLWZvY3VzZWRbX25nY29udGVudC0lQ09NUCVdOm5vdCgubWF0LXRhYi1kaXNhYmxlZCksIC5tYXQtdGFiLWdyb3VwLm1hdC1iYWNrZ3JvdW5kLWFjY2VudFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXRhYi1saW5rLmNkay1rZXlib2FyZC1mb2N1c2VkW19uZ2NvbnRlbnQtJUNPTVAlXTpub3QoLm1hdC10YWItZGlzYWJsZWQpLCAubWF0LXRhYi1ncm91cC5tYXQtYmFja2dyb3VuZC1hY2NlbnRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC10YWItbGluay5jZGstcHJvZ3JhbS1mb2N1c2VkW19uZ2NvbnRlbnQtJUNPTVAlXTpub3QoLm1hdC10YWItZGlzYWJsZWQpLCAubWF0LXRhYi1uYXYtYmFyLm1hdC1iYWNrZ3JvdW5kLWFjY2VudFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXRhYi1sYWJlbC5jZGsta2V5Ym9hcmQtZm9jdXNlZFtfbmdjb250ZW50LSVDT01QJV06bm90KC5tYXQtdGFiLWRpc2FibGVkKSwgLm1hdC10YWItbmF2LWJhci5tYXQtYmFja2dyb3VuZC1hY2NlbnRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC10YWItbGFiZWwuY2RrLXByb2dyYW0tZm9jdXNlZFtfbmdjb250ZW50LSVDT01QJV06bm90KC5tYXQtdGFiLWRpc2FibGVkKSwgLm1hdC10YWItbmF2LWJhci5tYXQtYmFja2dyb3VuZC1hY2NlbnRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC10YWItbGluay5jZGsta2V5Ym9hcmQtZm9jdXNlZFtfbmdjb250ZW50LSVDT01QJV06bm90KC5tYXQtdGFiLWRpc2FibGVkKSwgLm1hdC10YWItbmF2LWJhci5tYXQtYmFja2dyb3VuZC1hY2NlbnRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC10YWItbGluay5jZGstcHJvZ3JhbS1mb2N1c2VkW19uZ2NvbnRlbnQtJUNPTVAlXTpub3QoLm1hdC10YWItZGlzYWJsZWQpe2JhY2tncm91bmQtY29sb3I6cmdiYSgyNTUsMTUyLDAsLjMpfS5tYXQtdGFiLWdyb3VwLm1hdC1iYWNrZ3JvdW5kLWFjY2VudFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXRhYi1oZWFkZXJbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXRhYi1ncm91cC5tYXQtYmFja2dyb3VuZC1hY2NlbnRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC10YWItbGlua3NbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXRhYi1ncm91cC5tYXQtYmFja2dyb3VuZC1hY2NlbnRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC10YWItaGVhZGVyLXBhZ2luYXRpb25bX25nY29udGVudC0lQ09NUCVdLCAubWF0LXRhYi1uYXYtYmFyLm1hdC1iYWNrZ3JvdW5kLWFjY2VudFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXRhYi1oZWFkZXJbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXRhYi1uYXYtYmFyLm1hdC1iYWNrZ3JvdW5kLWFjY2VudFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXRhYi1saW5rc1tfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdGFiLW5hdi1iYXIubWF0LWJhY2tncm91bmQtYWNjZW50W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtdGFiLWhlYWRlci1wYWdpbmF0aW9uW19uZ2NvbnRlbnQtJUNPTVAlXXtiYWNrZ3JvdW5kLWNvbG9yOiNmZjk4MDB9Lm1hdC10YWItZ3JvdXAubWF0LWJhY2tncm91bmQtYWNjZW50W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtdGFiLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10YWItZ3JvdXAubWF0LWJhY2tncm91bmQtYWNjZW50W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtdGFiLWxpbmtbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXRhYi1uYXYtYmFyLm1hdC1iYWNrZ3JvdW5kLWFjY2VudFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXRhYi1sYWJlbFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdGFiLW5hdi1iYXIubWF0LWJhY2tncm91bmQtYWNjZW50W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtdGFiLWxpbmtbX25nY29udGVudC0lQ09NUCVde2NvbG9yOiNmZmZ9Lm1hdC10YWItZ3JvdXAubWF0LWJhY2tncm91bmQtYWNjZW50W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtdGFiLWxhYmVsLm1hdC10YWItZGlzYWJsZWRbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXRhYi1ncm91cC5tYXQtYmFja2dyb3VuZC1hY2NlbnRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC10YWItbGluay5tYXQtdGFiLWRpc2FibGVkW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10YWItbmF2LWJhci5tYXQtYmFja2dyb3VuZC1hY2NlbnRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC10YWItbGFiZWwubWF0LXRhYi1kaXNhYmxlZFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdGFiLW5hdi1iYXIubWF0LWJhY2tncm91bmQtYWNjZW50W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtdGFiLWxpbmsubWF0LXRhYi1kaXNhYmxlZFtfbmdjb250ZW50LSVDT01QJV17Y29sb3I6cmdiYSgyNTUsMjU1LDI1NSwuNCl9Lm1hdC10YWItZ3JvdXAubWF0LWJhY2tncm91bmQtYWNjZW50W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtdGFiLWhlYWRlci1wYWdpbmF0aW9uLWNoZXZyb25bX25nY29udGVudC0lQ09NUCVdLCAubWF0LXRhYi1uYXYtYmFyLm1hdC1iYWNrZ3JvdW5kLWFjY2VudFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXRhYi1oZWFkZXItcGFnaW5hdGlvbi1jaGV2cm9uW19uZ2NvbnRlbnQtJUNPTVAlXXtib3JkZXItY29sb3I6I2ZmZn0ubWF0LXRhYi1ncm91cC5tYXQtYmFja2dyb3VuZC1hY2NlbnRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC10YWItaGVhZGVyLXBhZ2luYXRpb24tZGlzYWJsZWRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC10YWItaGVhZGVyLXBhZ2luYXRpb24tY2hldnJvbltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdGFiLW5hdi1iYXIubWF0LWJhY2tncm91bmQtYWNjZW50W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtdGFiLWhlYWRlci1wYWdpbmF0aW9uLWRpc2FibGVkW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtdGFiLWhlYWRlci1wYWdpbmF0aW9uLWNoZXZyb25bX25nY29udGVudC0lQ09NUCVde2JvcmRlci1jb2xvcjpyZ2JhKDI1NSwyNTUsMjU1LC40KX0ubWF0LXRhYi1ncm91cC5tYXQtYmFja2dyb3VuZC1hY2NlbnRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1yaXBwbGUtZWxlbWVudFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdGFiLW5hdi1iYXIubWF0LWJhY2tncm91bmQtYWNjZW50W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtcmlwcGxlLWVsZW1lbnRbX25nY29udGVudC0lQ09NUCVde2JhY2tncm91bmQtY29sb3I6cmdiYSgyNTUsMjU1LDI1NSwuMTIpfS5tYXQtdGFiLWdyb3VwLm1hdC1iYWNrZ3JvdW5kLXdhcm5bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC10YWItbGFiZWwuY2RrLWtleWJvYXJkLWZvY3VzZWRbX25nY29udGVudC0lQ09NUCVdOm5vdCgubWF0LXRhYi1kaXNhYmxlZCksIC5tYXQtdGFiLWdyb3VwLm1hdC1iYWNrZ3JvdW5kLXdhcm5bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC10YWItbGFiZWwuY2RrLXByb2dyYW0tZm9jdXNlZFtfbmdjb250ZW50LSVDT01QJV06bm90KC5tYXQtdGFiLWRpc2FibGVkKSwgLm1hdC10YWItZ3JvdXAubWF0LWJhY2tncm91bmQtd2Fybltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXRhYi1saW5rLmNkay1rZXlib2FyZC1mb2N1c2VkW19uZ2NvbnRlbnQtJUNPTVAlXTpub3QoLm1hdC10YWItZGlzYWJsZWQpLCAubWF0LXRhYi1ncm91cC5tYXQtYmFja2dyb3VuZC13YXJuW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtdGFiLWxpbmsuY2RrLXByb2dyYW0tZm9jdXNlZFtfbmdjb250ZW50LSVDT01QJV06bm90KC5tYXQtdGFiLWRpc2FibGVkKSwgLm1hdC10YWItbmF2LWJhci5tYXQtYmFja2dyb3VuZC13YXJuW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtdGFiLWxhYmVsLmNkay1rZXlib2FyZC1mb2N1c2VkW19uZ2NvbnRlbnQtJUNPTVAlXTpub3QoLm1hdC10YWItZGlzYWJsZWQpLCAubWF0LXRhYi1uYXYtYmFyLm1hdC1iYWNrZ3JvdW5kLXdhcm5bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC10YWItbGFiZWwuY2RrLXByb2dyYW0tZm9jdXNlZFtfbmdjb250ZW50LSVDT01QJV06bm90KC5tYXQtdGFiLWRpc2FibGVkKSwgLm1hdC10YWItbmF2LWJhci5tYXQtYmFja2dyb3VuZC13YXJuW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtdGFiLWxpbmsuY2RrLWtleWJvYXJkLWZvY3VzZWRbX25nY29udGVudC0lQ09NUCVdOm5vdCgubWF0LXRhYi1kaXNhYmxlZCksIC5tYXQtdGFiLW5hdi1iYXIubWF0LWJhY2tncm91bmQtd2Fybltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXRhYi1saW5rLmNkay1wcm9ncmFtLWZvY3VzZWRbX25nY29udGVudC0lQ09NUCVdOm5vdCgubWF0LXRhYi1kaXNhYmxlZCl7YmFja2dyb3VuZC1jb2xvcjpyZ2JhKDI1NSwyMDUsMjEwLC4zKX0ubWF0LXRhYi1ncm91cC5tYXQtYmFja2dyb3VuZC13YXJuW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtdGFiLWhlYWRlcltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdGFiLWdyb3VwLm1hdC1iYWNrZ3JvdW5kLXdhcm5bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC10YWItbGlua3NbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXRhYi1ncm91cC5tYXQtYmFja2dyb3VuZC13YXJuW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtdGFiLWhlYWRlci1wYWdpbmF0aW9uW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10YWItbmF2LWJhci5tYXQtYmFja2dyb3VuZC13YXJuW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtdGFiLWhlYWRlcltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdGFiLW5hdi1iYXIubWF0LWJhY2tncm91bmQtd2Fybltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXRhYi1saW5rc1tfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdGFiLW5hdi1iYXIubWF0LWJhY2tncm91bmQtd2Fybltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXRhYi1oZWFkZXItcGFnaW5hdGlvbltfbmdjb250ZW50LSVDT01QJV17YmFja2dyb3VuZC1jb2xvcjojZjQ0MzM2fS5tYXQtdGFiLWdyb3VwLm1hdC1iYWNrZ3JvdW5kLXdhcm5bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC10YWItbGFiZWxbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXRhYi1ncm91cC5tYXQtYmFja2dyb3VuZC13YXJuW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtdGFiLWxpbmtbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXRhYi1uYXYtYmFyLm1hdC1iYWNrZ3JvdW5kLXdhcm5bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC10YWItbGFiZWxbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXRhYi1uYXYtYmFyLm1hdC1iYWNrZ3JvdW5kLXdhcm5bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC10YWItbGlua1tfbmdjb250ZW50LSVDT01QJV17Y29sb3I6I2ZmZn0ubWF0LXRhYi1ncm91cC5tYXQtYmFja2dyb3VuZC13YXJuW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtdGFiLWxhYmVsLm1hdC10YWItZGlzYWJsZWRbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXRhYi1ncm91cC5tYXQtYmFja2dyb3VuZC13YXJuW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtdGFiLWxpbmsubWF0LXRhYi1kaXNhYmxlZFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdGFiLW5hdi1iYXIubWF0LWJhY2tncm91bmQtd2Fybltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXRhYi1sYWJlbC5tYXQtdGFiLWRpc2FibGVkW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10YWItbmF2LWJhci5tYXQtYmFja2dyb3VuZC13YXJuW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtdGFiLWxpbmsubWF0LXRhYi1kaXNhYmxlZFtfbmdjb250ZW50LSVDT01QJV17Y29sb3I6cmdiYSgyNTUsMjU1LDI1NSwuNCl9Lm1hdC10YWItZ3JvdXAubWF0LWJhY2tncm91bmQtd2Fybltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXRhYi1oZWFkZXItcGFnaW5hdGlvbi1jaGV2cm9uW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10YWItbmF2LWJhci5tYXQtYmFja2dyb3VuZC13YXJuW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtdGFiLWhlYWRlci1wYWdpbmF0aW9uLWNoZXZyb25bX25nY29udGVudC0lQ09NUCVde2JvcmRlci1jb2xvcjojZmZmfS5tYXQtdGFiLWdyb3VwLm1hdC1iYWNrZ3JvdW5kLXdhcm5bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC10YWItaGVhZGVyLXBhZ2luYXRpb24tZGlzYWJsZWRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC10YWItaGVhZGVyLXBhZ2luYXRpb24tY2hldnJvbltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdGFiLW5hdi1iYXIubWF0LWJhY2tncm91bmQtd2Fybltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXRhYi1oZWFkZXItcGFnaW5hdGlvbi1kaXNhYmxlZFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXRhYi1oZWFkZXItcGFnaW5hdGlvbi1jaGV2cm9uW19uZ2NvbnRlbnQtJUNPTVAlXXtib3JkZXItY29sb3I6cmdiYSgyNTUsMjU1LDI1NSwuNCl9Lm1hdC10YWItZ3JvdXAubWF0LWJhY2tncm91bmQtd2Fybltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXJpcHBsZS1lbGVtZW50W19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10YWItbmF2LWJhci5tYXQtYmFja2dyb3VuZC13YXJuW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtcmlwcGxlLWVsZW1lbnRbX25nY29udGVudC0lQ09NUCVde2JhY2tncm91bmQtY29sb3I6cmdiYSgyNTUsMjU1LDI1NSwuMTIpfS5tYXQtdG9vbGJhcltfbmdjb250ZW50LSVDT01QJV17YmFja2dyb3VuZDojZjVmNWY1O2NvbG9yOiMyMTIxMjF9Lm1hdC10b29sYmFyLm1hdC1wcmltYXJ5W19uZ2NvbnRlbnQtJUNPTVAlXXtiYWNrZ3JvdW5kOiNmNTdjMDA7Y29sb3I6I2ZmZn0ubWF0LXRvb2xiYXIubWF0LWFjY2VudFtfbmdjb250ZW50LSVDT01QJV17YmFja2dyb3VuZDojZmY5ODAwO2NvbG9yOiNmZmZ9Lm1hdC10b29sYmFyLm1hdC13YXJuW19uZ2NvbnRlbnQtJUNPTVAlXXtiYWNrZ3JvdW5kOiNmNDQzMzY7Y29sb3I6I2ZmZn0ubWF0LXRvb2xiYXJbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLXVuZGVybGluZVtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdG9vbGJhcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtcmlwcGxlW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10b29sYmFyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9jdXNlZFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtcmlwcGxlW19uZ2NvbnRlbnQtJUNPTVAlXXtiYWNrZ3JvdW5kLWNvbG9yOmN1cnJlbnRDb2xvcn0ubWF0LXRvb2xiYXJbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10b29sYmFyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9jdXNlZFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXRvb2xiYXJbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1zZWxlY3QtdmFsdWVbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXRvb2xiYXJbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1zZWxlY3QtYXJyb3dbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXRvb2xiYXJbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLm1hdC1mb2N1c2VkW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtc2VsZWN0LWFycm93W19uZ2NvbnRlbnQtJUNPTVAlXXtjb2xvcjppbmhlcml0fS5tYXQtdG9vbGJhcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWlucHV0LWVsZW1lbnRbX25nY29udGVudC0lQ09NUCVde2NhcmV0LWNvbG9yOmN1cnJlbnRDb2xvcn0ubWF0LXRvb2xiYXItbXVsdGlwbGUtcm93c1tfbmdjb250ZW50LSVDT01QJV17bWluLWhlaWdodDo2NHB4fS5tYXQtdG9vbGJhci1yb3dbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXRvb2xiYXItc2luZ2xlLXJvd1tfbmdjb250ZW50LSVDT01QJV17aGVpZ2h0OjY0cHh9QG1lZGlhKG1heC13aWR0aDogNTk5cHgpey5tYXQtdG9vbGJhci1tdWx0aXBsZS1yb3dzW19uZ2NvbnRlbnQtJUNPTVAlXXttaW4taGVpZ2h0OjU2cHh9Lm1hdC10b29sYmFyLXJvd1tfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdG9vbGJhci1zaW5nbGUtcm93W19uZ2NvbnRlbnQtJUNPTVAlXXtoZWlnaHQ6NTZweH19Lm1hdC10b29sdGlwW19uZ2NvbnRlbnQtJUNPTVAlXXtiYWNrZ3JvdW5kOnJnYmEoOTcsOTcsOTcsLjkpfS5tYXQtdHJlZVtfbmdjb250ZW50LSVDT01QJV17YmFja2dyb3VuZDojZmZmfS5tYXQtdHJlZS1ub2RlW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1uZXN0ZWQtdHJlZS1ub2RlW19uZ2NvbnRlbnQtJUNPTVAlXXtjb2xvcjojMjEyMTIxfS5tYXQtdHJlZS1ub2RlW19uZ2NvbnRlbnQtJUNPTVAlXXttaW4taGVpZ2h0OjQ4cHh9Lm1hdC1zbmFjay1iYXItY29udGFpbmVyW19uZ2NvbnRlbnQtJUNPTVAlXXtjb2xvcjpyZ2JhKDI1NSwyNTUsMjU1LC43KTtiYWNrZ3JvdW5kOiMzMjMyMzI7Ym94LXNoYWRvdzowcHggM3B4IDVweCAtMXB4IHJnYmEoMCwgMCwgMCwgMC4yKSwwcHggNnB4IDEwcHggMHB4IHJnYmEoMCwgMCwgMCwgMC4xNCksMHB4IDFweCAxOHB4IDBweCByZ2JhKDAsIDAsIDAsIDAuMTIpfS5tYXQtc2ltcGxlLXNuYWNrYmFyLWFjdGlvbltfbmdjb250ZW50LSVDT01QJV17Y29sb3I6I2ZmOTgwMH1kaXZbX25nY29udGVudC0lQ09NUCVdLCBwW19uZ2NvbnRlbnQtJUNPTVAlXXttYXJnaW46MTZweCAwfVtfbmdob3N0LSVDT01QJV0gPiBbX25nY29udGVudC0lQ09NUCVdOmZpcnN0LWNoaWxke21hcmdpbi10b3A6MH1bX25naG9zdC0lQ09NUCVdID4gW19uZ2NvbnRlbnQtJUNPTVAlXTpsYXN0LWNoaWxke21hcmdpbi1ib3R0b206MH1oM1tfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjE0cHg7Zm9udC13ZWlnaHQ6NTAwO2xpbmUtaGVpZ2h0OjEuNX1wW19uZ2NvbnRlbnQtJUNPTVAlXXtjb2xvcjojMjEyMTIxO2ZvbnQtc2l6ZToxMnB4O2xpbmUtaGVpZ2h0OjEuNX0uYW5jaG9yLXRleHRbX25nY29udGVudC0lQ09NUCVde2NvbG9yOiMxOTc2ZDI7dGV4dC1kZWNvcmF0aW9uOm5vbmV9LmNvbW1hbmRbX25nY29udGVudC0lQ09NUCVde2FsaWduLWl0ZW1zOmNlbnRlcjtiYWNrZ3JvdW5kOiNmNWY2Zjc7Ym9yZGVyLXJhZGl1czo0cHg7ZGlzcGxheTpmbGV4O2p1c3RpZnktY29udGVudDpzcGFjZS1iZXR3ZWVuO3BhZGRpbmc6MnB4IDEycHh9cHJlW19uZ2NvbnRlbnQtJUNPTVAlXXtvdmVyZmxvdy14OmF1dG99Y29kZVtfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjE0cHg7bGluZS1oZWlnaHQ6MS41fS5ib3R0b20tYnV0dG9uc1tfbmdjb250ZW50LSVDT01QJV17YWxpZ24taXRlbXM6Y2VudGVyO2Rpc3BsYXk6ZmxleDtqdXN0aWZ5LWNvbnRlbnQ6ZmxleC1lbmR9LmNsb3NlLWJ1dHRvbltfbmdjb250ZW50LSVDT01QJV17Y29sb3I6IzYxNjE2MTt0ZXh0LXRyYW5zZm9ybTp1cHBlcmNhc2U7bWFyZ2luLXJpZ2h0OjhweH0ubGVhcm4tbW9yZS1idXR0b25bX25nY29udGVudC0lQ09NUCVde2NvbG9yOiMxOTc2ZDI7dGV4dC10cmFuc2Zvcm06dXBwZXJjYXNlfSddfSk7Y29uc3QgVUI9cHYoTEksKHQ9PnQuZGF0YV9sb2NhdGlvbikpO2NsYXNzIFdCe2NvbnN0cnVjdG9yKHQpe3RoaXMuc3RvcmU9dCx0aGlzLmxvZ2RpciQ9dGhpcy5zdG9yZS5waXBlKGx2KFVCKSl9fWZ1bmN0aW9uIEdCKHQsbil7aWYoMSZ0KXtjb25zdCB0PW9wKCk7S2coMCwiYnV0dG9uIiwxKSxjcCgiY2xpY2siLChmdW5jdGlvbiBuKCl7cmV0dXJuIGpyKHQpLGdwKCkub3BlbkRpYWxvZygpfSkpLEtnKDEsInNwYW4iLDIpLHRwKDIsIm1hdC1pY29uIiwzKSxKcCgzLCIgVXBsb2FkICIpLCRnKCksJGcoKX19V0IuybVmYWM9ZnVuY3Rpb24gdChuKXtyZXR1cm4gbmV3KG58fFdCKShaZyhjdikpfSxXQi7JtWNtcD1fbyh7dHlwZTpXQixzZWxlY3RvcnM6W1sidGJkZXYtdXBsb2FkLWRpYWxvZyJdXSxkZWNsczoyLHZhcnM6Myxjb25zdHM6W1szLCJsb2dkaXIiXV0sdGVtcGxhdGU6ZnVuY3Rpb24gdChuLGUpezEmbiYmKHRwKDAsInRiZGV2LXVwbG9hZC1kaWFsb2ctY29tcG9uZW50IiwwKSx5ZigxLCJhc3luYyIpKSwyJm4mJkpnKCJsb2dkaXIiLGtmKDEsMSxlLmxvZ2RpciQpKX0sZGlyZWN0aXZlczpbakJdLHBpcGVzOltvT10sZW5jYXBzdWxhdGlvbjoyfSk7Y29uc3QgWUI9WyJsb2NhbGhvc3QiLCIxMjcuMC4wLjEiXTtjbGFzcyBxQntjb25zdHJ1Y3Rvcih0LG4pe3RoaXMud2luZG93PXQsdGhpcy5kaWFsb2c9bix0aGlzLnNob3duPVlCLmluY2x1ZGVzKHQubG9jYXRpb24uaG9zdG5hbWUpfW9wZW5EaWFsb2coKXt0aGlzLmRpYWxvZy5vcGVuKFdCLHt3aWR0aDoiNTYwcHgifSl9fXFCLsm1ZmFjPWZ1bmN0aW9uIHQobil7cmV0dXJuIG5ldyhufHxxQikoWmcoIndpbmRvdyIpLFpnKGJCKSl9LHFCLsm1Y21wPV9vKHt0eXBlOnFCLHNlbGVjdG9yczpbWyJ0YmRldi11cGxvYWQtYnV0dG9uIl1dLGhvc3RWYXJzOjIsaG9zdEJpbmRpbmdzOmZ1bmN0aW9uIHQobixlKXsyJm4mJkRwKCJzaG93biIsZS5zaG93bil9LGRlY2xzOjEsdmFyczoxLGNvbnN0czpbWyJtYXQtc3Ryb2tlZC1idXR0b24iLCIiLDMsImNsaWNrIiw0LCJuZ0lmIl0sWyJtYXQtc3Ryb2tlZC1idXR0b24iLCIiLDMsImNsaWNrIl0sWzEsImJ1dHRvbi1jb250ZW50cyJdLFsic3ZnSWNvbiIsImluZm9fb3V0bGluZV8yNHB4Il1dLHRlbXBsYXRlOmZ1bmN0aW9uIHQobixlKXsxJm4mJllnKDAsR0IsNCwwLCJidXR0b24iLDApLDImbiYmSmcoIm5nSWYiLGUuc2hvd24pfSxkaXJlY3RpdmVzOltXTSxlQSxCQl0sc3R5bGVzOlsnLm1hdC1iYWRnZS1jb250ZW50W19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXdlaWdodDo2MDA7Zm9udC1zaXplOjEycHg7Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmfS5tYXQtYmFkZ2Utc21hbGxbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1iYWRnZS1jb250ZW50W19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6OXB4fS5tYXQtYmFkZ2UtbGFyZ2VbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1iYWRnZS1jb250ZW50W19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MjRweH0ubWF0LWgxW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1oZWFkbGluZVtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdHlwb2dyYXBoeVtfbmdjb250ZW50LSVDT01QJV0gICBoMVtfbmdjb250ZW50LSVDT01QJV17Zm9udDo0MDAgMjRweC8zMnB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtsZXR0ZXItc3BhY2luZzpub3JtYWw7bWFyZ2luOjAgMCAxNnB4fS5tYXQtaDJbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXRpdGxlW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10eXBvZ3JhcGh5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIGgyW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250OjUwMCAyMHB4LzMycHggUm9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2xldHRlci1zcGFjaW5nOm5vcm1hbDttYXJnaW46MCAwIDE2cHh9Lm1hdC1oM1tfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtc3ViaGVhZGluZy0yW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10eXBvZ3JhcGh5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIGgzW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250OjQwMCAxNnB4LzI4cHggUm9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2xldHRlci1zcGFjaW5nOm5vcm1hbDttYXJnaW46MCAwIDE2cHh9Lm1hdC1oNFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtc3ViaGVhZGluZy0xW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10eXBvZ3JhcGh5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIGg0W19uZ2NvbnRlbnQtJUNPTVAlXXtmb250OjQwMCAxNXB4LzI0cHggUm9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2xldHRlci1zcGFjaW5nOm5vcm1hbDttYXJnaW46MCAwIDE2cHh9Lm1hdC1oNVtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdHlwb2dyYXBoeVtfbmdjb250ZW50LSVDT01QJV0gICBoNVtfbmdjb250ZW50LSVDT01QJV17Zm9udDo0MDAgY2FsYygxNHB4ICogMC44MykvMjBweCBSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7bWFyZ2luOjAgMCAxMnB4fS5tYXQtaDZbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXR5cG9ncmFwaHlbX25nY29udGVudC0lQ09NUCVdICAgaDZbX25nY29udGVudC0lQ09NUCVde2ZvbnQ6NDAwIGNhbGMoMTRweCAqIDAuNjcpLzIwcHggUm9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO21hcmdpbjowIDAgMTJweH0ubWF0LWJvZHktc3Ryb25nW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1ib2R5LTJbX25nY29udGVudC0lQ09NUCVde2ZvbnQ6NTAwIDE0cHgvMjRweCBSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7bGV0dGVyLXNwYWNpbmc6bm9ybWFsfS5tYXQtYm9keVtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtYm9keS0xW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10eXBvZ3JhcGh5W19uZ2NvbnRlbnQtJUNPTVAlXXtmb250OjQwMCAxNHB4LzIwcHggUm9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2xldHRlci1zcGFjaW5nOm5vcm1hbH0ubWF0LWJvZHlbX25nY29udGVudC0lQ09NUCVdICAgcFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtYm9keS0xW19uZ2NvbnRlbnQtJUNPTVAlXSAgIHBbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXR5cG9ncmFwaHlbX25nY29udGVudC0lQ09NUCVdICAgcFtfbmdjb250ZW50LSVDT01QJV17bWFyZ2luOjAgMCAxMnB4fS5tYXQtc21hbGxbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWNhcHRpb25bX25nY29udGVudC0lQ09NUCVde2ZvbnQ6NDAwIDEycHgvMjBweCBSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7bGV0dGVyLXNwYWNpbmc6bm9ybWFsfS5tYXQtZGlzcGxheS00W19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10eXBvZ3JhcGh5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZGlzcGxheS00W19uZ2NvbnRlbnQtJUNPTVAlXXtmb250OjMwMCAxMTJweC8xMTJweCBSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7bGV0dGVyLXNwYWNpbmc6LTAuMDVlbTttYXJnaW46MCAwIDU2cHh9Lm1hdC1kaXNwbGF5LTNbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXR5cG9ncmFwaHlbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1kaXNwbGF5LTNbX25nY29udGVudC0lQ09NUCVde2ZvbnQ6NDAwIDU2cHgvNTZweCBSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7bGV0dGVyLXNwYWNpbmc6LTAuMDJlbTttYXJnaW46MCAwIDY0cHh9Lm1hdC1kaXNwbGF5LTJbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXR5cG9ncmFwaHlbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1kaXNwbGF5LTJbX25nY29udGVudC0lQ09NUCVde2ZvbnQ6NDAwIDQ1cHgvNDhweCBSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7bGV0dGVyLXNwYWNpbmc6LTAuMDA1ZW07bWFyZ2luOjAgMCA2NHB4fS5tYXQtZGlzcGxheS0xW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10eXBvZ3JhcGh5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZGlzcGxheS0xW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250OjQwMCAzNHB4LzQwcHggUm9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2xldHRlci1zcGFjaW5nOm5vcm1hbDttYXJnaW46MCAwIDY0cHh9Lm1hdC1ib3R0b20tc2hlZXQtY29udGFpbmVyW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250OjQwMCAxNHB4LzIwcHggUm9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2xldHRlci1zcGFjaW5nOm5vcm1hbH0ubWF0LWJ1dHRvbltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtcmFpc2VkLWJ1dHRvbltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtaWNvbi1idXR0b25bX25nY29udGVudC0lQ09NUCVdLCAubWF0LXN0cm9rZWQtYnV0dG9uW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1mbGF0LWJ1dHRvbltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtZmFiW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1taW5pLWZhYltfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2ZvbnQtc2l6ZToxNHB4O2ZvbnQtd2VpZ2h0OjUwMH0ubWF0LWJ1dHRvbi10b2dnbGVbX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZn0ubWF0LWNhcmRbX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZn0ubWF0LWNhcmQtdGl0bGVbX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToyNHB4O2ZvbnQtd2VpZ2h0OjUwMH0ubWF0LWNhcmQtaGVhZGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtY2FyZC10aXRsZVtfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjIwcHh9Lm1hdC1jYXJkLXN1YnRpdGxlW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1jYXJkLWNvbnRlbnRbX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToxNHB4fS5tYXQtY2hlY2tib3hbX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZn0ubWF0LWNoZWNrYm94LWxheW91dFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWNoZWNrYm94LWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXtsaW5lLWhlaWdodDoyNHB4fS5tYXQtY2hpcFtfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjE0cHg7Zm9udC13ZWlnaHQ6NTAwfS5tYXQtY2hpcFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWNoaXAtdHJhaWxpbmctaWNvbi5tYXQtaWNvbltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtY2hpcFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWNoaXAtcmVtb3ZlLm1hdC1pY29uW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MThweH0ubWF0LXRhYmxlW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWZ9Lm1hdC1oZWFkZXItY2VsbFtfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjEycHg7Zm9udC13ZWlnaHQ6NTAwfS5tYXQtY2VsbFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtZm9vdGVyLWNlbGxbX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToxNHB4fS5tYXQtY2FsZW5kYXJbX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZn0ubWF0LWNhbGVuZGFyLWJvZHlbX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToxM3B4fS5tYXQtY2FsZW5kYXItYm9keS1sYWJlbFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtY2FsZW5kYXItcGVyaW9kLWJ1dHRvbltfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjE0cHg7Zm9udC13ZWlnaHQ6NTAwfS5tYXQtY2FsZW5kYXItdGFibGUtaGVhZGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIHRoW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MTFweDtmb250LXdlaWdodDo0MDB9Lm1hdC1kaWFsb2ctdGl0bGVbX25nY29udGVudC0lQ09NUCVde2ZvbnQ6NTAwIDIwcHgvMzJweCBSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7bGV0dGVyLXNwYWNpbmc6bm9ybWFsfS5tYXQtZXhwYW5zaW9uLXBhbmVsLWhlYWRlcltfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2ZvbnQtc2l6ZToxNXB4O2ZvbnQtd2VpZ2h0OjQwMH0ubWF0LWV4cGFuc2lvbi1wYW5lbC1jb250ZW50W19uZ2NvbnRlbnQtJUNPTVAlXXtmb250OjQwMCAxNHB4LzIwcHggUm9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2xldHRlci1zcGFjaW5nOm5vcm1hbH0ubWF0LWZvcm0tZmllbGRbX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZTppbmhlcml0O2ZvbnQtd2VpZ2h0OjQwMDtsaW5lLWhlaWdodDoxLjEyNTtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7bGV0dGVyLXNwYWNpbmc6bm9ybWFsfS5tYXQtZm9ybS1maWVsZC13cmFwcGVyW19uZ2NvbnRlbnQtJUNPTVAlXXtwYWRkaW5nLWJvdHRvbToxLjM0Mzc1ZW19Lm1hdC1mb3JtLWZpZWxkLXByZWZpeFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWljb25bX25nY29udGVudC0lQ09NUCVdLCAubWF0LWZvcm0tZmllbGQtc3VmZml4W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaWNvbltfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjE1MCU7bGluZS1oZWlnaHQ6MS4xMjV9Lm1hdC1mb3JtLWZpZWxkLXByZWZpeFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWljb24tYnV0dG9uW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1mb3JtLWZpZWxkLXN1ZmZpeFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWljb24tYnV0dG9uW19uZ2NvbnRlbnQtJUNPTVAlXXtoZWlnaHQ6MS41ZW07d2lkdGg6MS41ZW19Lm1hdC1mb3JtLWZpZWxkLXByZWZpeFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWljb24tYnV0dG9uW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaWNvbltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtZm9ybS1maWVsZC1zdWZmaXhbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pY29uLWJ1dHRvbltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWljb25bX25nY29udGVudC0lQ09NUCVde2hlaWdodDoxLjEyNWVtO2xpbmUtaGVpZ2h0OjEuMTI1fS5tYXQtZm9ybS1maWVsZC1pbmZpeFtfbmdjb250ZW50LSVDT01QJV17cGFkZGluZzouNWVtIDA7Ym9yZGVyLXRvcDouODQzNzVlbSBzb2xpZCB0cmFuc3BhcmVudH0ubWF0LWZvcm0tZmllbGQtY2FuLWZsb2F0Lm1hdC1mb3JtLWZpZWxkLXNob3VsZC1mbG9hdFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWZvcm0tZmllbGQtY2FuLWZsb2F0W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaW5wdXQtc2VydmVyW19uZ2NvbnRlbnQtJUNPTVAlXTpmb2N1cyArIC5tYXQtZm9ybS1maWVsZC1sYWJlbC13cmFwcGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17dHJhbnNmb3JtOnRyYW5zbGF0ZVkoLTEuMzQzNzVlbSkgc2NhbGUoMC43NSk7d2lkdGg6MTMzLjMzMzMzMzMzMzMlfS5tYXQtZm9ybS1maWVsZC1jYW4tZmxvYXRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pbnB1dC1zZXJ2ZXJbbGFiZWxdW19uZ2NvbnRlbnQtJUNPTVAlXTpub3QoOmxhYmVsLXNob3duKSArIC5tYXQtZm9ybS1maWVsZC1sYWJlbC13cmFwcGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17dHJhbnNmb3JtOnRyYW5zbGF0ZVkoLTEuMzQzNzRlbSkgc2NhbGUoMC43NSk7d2lkdGg6MTMzLjMzMzM0MzMzMzMlfS5tYXQtZm9ybS1maWVsZC1sYWJlbC13cmFwcGVyW19uZ2NvbnRlbnQtJUNPTVAlXXt0b3A6LTAuODQzNzVlbTtwYWRkaW5nLXRvcDouODQzNzVlbX0ubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVde3RvcDoxLjM0Mzc1ZW19Lm1hdC1mb3JtLWZpZWxkLXVuZGVybGluZVtfbmdjb250ZW50LSVDT01QJV17Ym90dG9tOjEuMzQzNzVlbX0ubWF0LWZvcm0tZmllbGQtc3Vic2NyaXB0LXdyYXBwZXJbX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZTo3NSU7bWFyZ2luLXRvcDouNjY2NjY2NjY2N2VtO3RvcDpjYWxjKDEwMCUgLSAxLjc5MTY2NjY2NjdlbSl9Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtbGVnYWN5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC13cmFwcGVyW19uZ2NvbnRlbnQtJUNPTVAlXXtwYWRkaW5nLWJvdHRvbToxLjI1ZW19Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtbGVnYWN5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1pbmZpeFtfbmdjb250ZW50LSVDT01QJV17cGFkZGluZzouNDM3NWVtIDB9Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtbGVnYWN5Lm1hdC1mb3JtLWZpZWxkLWNhbi1mbG9hdC5tYXQtZm9ybS1maWVsZC1zaG91bGQtZmxvYXRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtbGVnYWN5Lm1hdC1mb3JtLWZpZWxkLWNhbi1mbG9hdFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWlucHV0LXNlcnZlcltfbmdjb250ZW50LSVDT01QJV06Zm9jdXMgKyAubWF0LWZvcm0tZmllbGQtbGFiZWwtd3JhcHBlcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVde3RyYW5zZm9ybTp0cmFuc2xhdGVZKC0xLjI4MTI1ZW0pIHNjYWxlKDAuNzUpIHBlcnNwZWN0aXZlKDEwMHB4KSB0cmFuc2xhdGVaKDAuMDAxcHgpOy1tcy10cmFuc2Zvcm06dHJhbnNsYXRlWSgtMS4yODEyNWVtKSBzY2FsZSgwLjc1KTt3aWR0aDoxMzMuMzMzMzMzMzMzMyV9Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtbGVnYWN5Lm1hdC1mb3JtLWZpZWxkLWNhbi1mbG9hdFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtYXV0b2ZpbGwtY29udHJvbFtfbmdjb250ZW50LSVDT01QJV06LXdlYmtpdC1hdXRvZmlsbCArIC5tYXQtZm9ybS1maWVsZC1sYWJlbC13cmFwcGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17dHJhbnNmb3JtOnRyYW5zbGF0ZVkoLTEuMjgxMjVlbSkgc2NhbGUoMC43NSkgcGVyc3BlY3RpdmUoMTAwcHgpIHRyYW5zbGF0ZVooMC4wMDEwMXB4KTstbXMtdHJhbnNmb3JtOnRyYW5zbGF0ZVkoLTEuMjgxMjRlbSkgc2NhbGUoMC43NSk7d2lkdGg6MTMzLjMzMzM0MzMzMzMlfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWxlZ2FjeS5tYXQtZm9ybS1maWVsZC1jYW4tZmxvYXRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pbnB1dC1zZXJ2ZXJbbGFiZWxdW19uZ2NvbnRlbnQtJUNPTVAlXTpub3QoOmxhYmVsLXNob3duKSArIC5tYXQtZm9ybS1maWVsZC1sYWJlbC13cmFwcGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17dHJhbnNmb3JtOnRyYW5zbGF0ZVkoLTEuMjgxMjVlbSkgc2NhbGUoMC43NSkgcGVyc3BlY3RpdmUoMTAwcHgpIHRyYW5zbGF0ZVooMC4wMDEwMnB4KTstbXMtdHJhbnNmb3JtOnRyYW5zbGF0ZVkoLTEuMjgxMjNlbSkgc2NhbGUoMC43NSk7d2lkdGg6MTMzLjMzMzM1MzMzMzMlfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWxlZ2FjeVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVde3RvcDoxLjI4MTI1ZW19Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtbGVnYWN5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC11bmRlcmxpbmVbX25nY29udGVudC0lQ09NUCVde2JvdHRvbToxLjI1ZW19Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtbGVnYWN5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1zdWJzY3JpcHQtd3JhcHBlcltfbmdjb250ZW50LSVDT01QJV17bWFyZ2luLXRvcDouNTQxNjY2NjY2N2VtO3RvcDpjYWxjKDEwMCUgLSAxLjY2NjY2NjY2NjdlbSl9QG1lZGlhIHByaW50ey5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWxlZ2FjeS5tYXQtZm9ybS1maWVsZC1jYW4tZmxvYXQubWF0LWZvcm0tZmllbGQtc2hvdWxkLWZsb2F0W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWxlZ2FjeS5tYXQtZm9ybS1maWVsZC1jYW4tZmxvYXRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pbnB1dC1zZXJ2ZXJbX25nY29udGVudC0lQ09NUCVdOmZvY3VzICsgLm1hdC1mb3JtLWZpZWxkLWxhYmVsLXdyYXBwZXJbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXt0cmFuc2Zvcm06dHJhbnNsYXRlWSgtMS4yODEyMmVtKSBzY2FsZSgwLjc1KX0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1sZWdhY3kubWF0LWZvcm0tZmllbGQtY2FuLWZsb2F0W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1hdXRvZmlsbC1jb250cm9sW19uZ2NvbnRlbnQtJUNPTVAlXTotd2Via2l0LWF1dG9maWxsICsgLm1hdC1mb3JtLWZpZWxkLWxhYmVsLXdyYXBwZXJbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXt0cmFuc2Zvcm06dHJhbnNsYXRlWSgtMS4yODEyMWVtKSBzY2FsZSgwLjc1KX0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1sZWdhY3kubWF0LWZvcm0tZmllbGQtY2FuLWZsb2F0W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaW5wdXQtc2VydmVyW2xhYmVsXVtfbmdjb250ZW50LSVDT01QJV06bm90KDpsYWJlbC1zaG93bikgKyAubWF0LWZvcm0tZmllbGQtbGFiZWwtd3JhcHBlcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVde3RyYW5zZm9ybTp0cmFuc2xhdGVZKC0xLjI4MTJlbSkgc2NhbGUoMC43NSl9fS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWZpbGxbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWluZml4W19uZ2NvbnRlbnQtJUNPTVAlXXtwYWRkaW5nOi4yNWVtIDAgLjc1ZW0gMH0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1maWxsW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17dG9wOjEuMDkzNzVlbTttYXJnaW4tdG9wOi0wLjVlbX0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1maWxsLm1hdC1mb3JtLWZpZWxkLWNhbi1mbG9hdC5tYXQtZm9ybS1maWVsZC1zaG91bGQtZmxvYXRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtZmlsbC5tYXQtZm9ybS1maWVsZC1jYW4tZmxvYXRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pbnB1dC1zZXJ2ZXJbX25nY29udGVudC0lQ09NUCVdOmZvY3VzICsgLm1hdC1mb3JtLWZpZWxkLWxhYmVsLXdyYXBwZXJbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXt0cmFuc2Zvcm06dHJhbnNsYXRlWSgtMC41OTM3NWVtKSBzY2FsZSgwLjc1KTt3aWR0aDoxMzMuMzMzMzMzMzMzMyV9Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtZmlsbC5tYXQtZm9ybS1maWVsZC1jYW4tZmxvYXRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pbnB1dC1zZXJ2ZXJbbGFiZWxdW19uZ2NvbnRlbnQtJUNPTVAlXTpub3QoOmxhYmVsLXNob3duKSArIC5tYXQtZm9ybS1maWVsZC1sYWJlbC13cmFwcGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17dHJhbnNmb3JtOnRyYW5zbGF0ZVkoLTAuNTkzNzRlbSkgc2NhbGUoMC43NSk7d2lkdGg6MTMzLjMzMzM0MzMzMzMlfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLW91dGxpbmVbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWluZml4W19uZ2NvbnRlbnQtJUNPTVAlXXtwYWRkaW5nOjFlbSAwIDFlbSAwfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLW91dGxpbmVbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXt0b3A6MS44NDM3NWVtO21hcmdpbi10b3A6LTAuMjVlbX0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1vdXRsaW5lLm1hdC1mb3JtLWZpZWxkLWNhbi1mbG9hdC5tYXQtZm9ybS1maWVsZC1zaG91bGQtZmxvYXRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2Utb3V0bGluZS5tYXQtZm9ybS1maWVsZC1jYW4tZmxvYXRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pbnB1dC1zZXJ2ZXJbX25nY29udGVudC0lQ09NUCVdOmZvY3VzICsgLm1hdC1mb3JtLWZpZWxkLWxhYmVsLXdyYXBwZXJbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXt0cmFuc2Zvcm06dHJhbnNsYXRlWSgtMS41OTM3NWVtKSBzY2FsZSgwLjc1KTt3aWR0aDoxMzMuMzMzMzMzMzMzMyV9Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2Utb3V0bGluZS5tYXQtZm9ybS1maWVsZC1jYW4tZmxvYXRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pbnB1dC1zZXJ2ZXJbbGFiZWxdW19uZ2NvbnRlbnQtJUNPTVAlXTpub3QoOmxhYmVsLXNob3duKSArIC5tYXQtZm9ybS1maWVsZC1sYWJlbC13cmFwcGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17dHJhbnNmb3JtOnRyYW5zbGF0ZVkoLTEuNTkzNzRlbSkgc2NhbGUoMC43NSk7d2lkdGg6MTMzLjMzMzM0MzMzMzMlfS5tYXQtZ3JpZC10aWxlLWhlYWRlcltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtZ3JpZC10aWxlLWZvb3Rlcltfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjE0cHh9Lm1hdC1ncmlkLXRpbGUtaGVhZGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGluZVtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtZ3JpZC10aWxlLWZvb3Rlcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpbmVbX25nY29udGVudC0lQ09NUCVde3doaXRlLXNwYWNlOm5vd3JhcDtvdmVyZmxvdzpoaWRkZW47dGV4dC1vdmVyZmxvdzplbGxpcHNpcztkaXNwbGF5OmJsb2NrO2JveC1zaXppbmc6Ym9yZGVyLWJveH0ubWF0LWdyaWQtdGlsZS1oZWFkZXJbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saW5lW19uZ2NvbnRlbnQtJUNPTVAlXTpudGgtY2hpbGQobisyKSwgLm1hdC1ncmlkLXRpbGUtZm9vdGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGluZVtfbmdjb250ZW50LSVDT01QJV06bnRoLWNoaWxkKG4rMil7Zm9udC1zaXplOjEycHh9aW5wdXQubWF0LWlucHV0LWVsZW1lbnRbX25nY29udGVudC0lQ09NUCVde21hcmdpbi10b3A6LTAuMDYyNWVtfS5tYXQtbWVudS1pdGVtW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7Zm9udC1zaXplOjE0cHg7Zm9udC13ZWlnaHQ6NDAwfS5tYXQtcGFnaW5hdG9yW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1wYWdpbmF0b3ItcGFnZS1zaXplW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtc2VsZWN0LXRyaWdnZXJbX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtmb250LXNpemU6MTJweH0ubWF0LXJhZGlvLWJ1dHRvbltfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmfS5tYXQtc2VsZWN0W19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWZ9Lm1hdC1zZWxlY3QtdHJpZ2dlcltfbmdjb250ZW50LSVDT01QJV17aGVpZ2h0OjEuMTI1ZW19Lm1hdC1zbGlkZS10b2dnbGUtY29udGVudFtfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmfS5tYXQtc2xpZGVyLXRodW1iLWxhYmVsLXRleHRbX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtmb250LXNpemU6MTJweDtmb250LXdlaWdodDo1MDB9Lm1hdC1zdGVwcGVyLXZlcnRpY2FsW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1zdGVwcGVyLWhvcml6b250YWxbX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZn0ubWF0LXN0ZXAtbGFiZWxbX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToxNHB4O2ZvbnQtd2VpZ2h0OjQwMH0ubWF0LXN0ZXAtc3ViLWxhYmVsLWVycm9yW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXdlaWdodDpub3JtYWx9Lm1hdC1zdGVwLWxhYmVsLWVycm9yW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MTRweH0ubWF0LXN0ZXAtbGFiZWwtc2VsZWN0ZWRbX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToxNHB4O2ZvbnQtd2VpZ2h0OjUwMH0ubWF0LXRhYi1ncm91cFtfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmfS5tYXQtdGFiLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10YWItbGlua1tfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2ZvbnQtc2l6ZToxNHB4O2ZvbnQtd2VpZ2h0OjUwMH0ubWF0LXRvb2xiYXJbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXRvb2xiYXJbX25nY29udGVudC0lQ09NUCVdICAgaDFbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXRvb2xiYXJbX25nY29udGVudC0lQ09NUCVdICAgaDJbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXRvb2xiYXJbX25nY29udGVudC0lQ09NUCVdICAgaDNbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXRvb2xiYXJbX25nY29udGVudC0lQ09NUCVdICAgaDRbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXRvb2xiYXJbX25nY29udGVudC0lQ09NUCVdICAgaDVbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXRvb2xiYXJbX25nY29udGVudC0lQ09NUCVdICAgaDZbX25nY29udGVudC0lQ09NUCVde2ZvbnQ6NTAwIDIwcHgvMzJweCBSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7bGV0dGVyLXNwYWNpbmc6bm9ybWFsO21hcmdpbjowfS5tYXQtdG9vbHRpcFtfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2ZvbnQtc2l6ZToxMHB4O3BhZGRpbmctdG9wOjZweDtwYWRkaW5nLWJvdHRvbTo2cHh9Lm1hdC10b29sdGlwLWhhbmRzZXRbX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToxNHB4O3BhZGRpbmctdG9wOjhweDtwYWRkaW5nLWJvdHRvbTo4cHh9Lm1hdC1saXN0LWl0ZW1bX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZn0ubWF0LWxpc3Qtb3B0aW9uW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWZ9Lm1hdC1saXN0LWJhc2VbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saXN0LWl0ZW1bX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToxNnB4fS5tYXQtbGlzdC1iYXNlW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGlzdC1pdGVtW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGluZVtfbmdjb250ZW50LSVDT01QJV17d2hpdGUtc3BhY2U6bm93cmFwO292ZXJmbG93OmhpZGRlbjt0ZXh0LW92ZXJmbG93OmVsbGlwc2lzO2Rpc3BsYXk6YmxvY2s7Ym94LXNpemluZzpib3JkZXItYm94fS5tYXQtbGlzdC1iYXNlW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGlzdC1pdGVtW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGluZVtfbmdjb250ZW50LSVDT01QJV06bnRoLWNoaWxkKG4rMil7Zm9udC1zaXplOjE0cHh9Lm1hdC1saXN0LWJhc2VbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saXN0LW9wdGlvbltfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjE2cHh9Lm1hdC1saXN0LWJhc2VbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saXN0LW9wdGlvbltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpbmVbX25nY29udGVudC0lQ09NUCVde3doaXRlLXNwYWNlOm5vd3JhcDtvdmVyZmxvdzpoaWRkZW47dGV4dC1vdmVyZmxvdzplbGxpcHNpcztkaXNwbGF5OmJsb2NrO2JveC1zaXppbmc6Ym9yZGVyLWJveH0ubWF0LWxpc3QtYmFzZVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpc3Qtb3B0aW9uW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGluZVtfbmdjb250ZW50LSVDT01QJV06bnRoLWNoaWxkKG4rMil7Zm9udC1zaXplOjE0cHh9Lm1hdC1saXN0LWJhc2VbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1zdWJoZWFkZXJbX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtmb250LXNpemU6MTRweDtmb250LXdlaWdodDo1MDB9Lm1hdC1saXN0LWJhc2VbZGVuc2VdW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGlzdC1pdGVtW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MTJweH0ubWF0LWxpc3QtYmFzZVtkZW5zZV1bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saXN0LWl0ZW1bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saW5lW19uZ2NvbnRlbnQtJUNPTVAlXXt3aGl0ZS1zcGFjZTpub3dyYXA7b3ZlcmZsb3c6aGlkZGVuO3RleHQtb3ZlcmZsb3c6ZWxsaXBzaXM7ZGlzcGxheTpibG9jaztib3gtc2l6aW5nOmJvcmRlci1ib3h9Lm1hdC1saXN0LWJhc2VbZGVuc2VdW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGlzdC1pdGVtW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGluZVtfbmdjb250ZW50LSVDT01QJV06bnRoLWNoaWxkKG4rMil7Zm9udC1zaXplOjEycHh9Lm1hdC1saXN0LWJhc2VbZGVuc2VdW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGlzdC1vcHRpb25bX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToxMnB4fS5tYXQtbGlzdC1iYXNlW2RlbnNlXVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpc3Qtb3B0aW9uW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGluZVtfbmdjb250ZW50LSVDT01QJV17d2hpdGUtc3BhY2U6bm93cmFwO292ZXJmbG93OmhpZGRlbjt0ZXh0LW92ZXJmbG93OmVsbGlwc2lzO2Rpc3BsYXk6YmxvY2s7Ym94LXNpemluZzpib3JkZXItYm94fS5tYXQtbGlzdC1iYXNlW2RlbnNlXVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpc3Qtb3B0aW9uW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGluZVtfbmdjb250ZW50LSVDT01QJV06bnRoLWNoaWxkKG4rMil7Zm9udC1zaXplOjEycHh9Lm1hdC1saXN0LWJhc2VbZGVuc2VdW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtc3ViaGVhZGVyW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7Zm9udC1zaXplOjEycHg7Zm9udC13ZWlnaHQ6NTAwfS5tYXQtb3B0aW9uW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7Zm9udC1zaXplOjE2cHh9Lm1hdC1vcHRncm91cC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17Zm9udDo1MDAgMTRweC8yNHB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtsZXR0ZXItc3BhY2luZzpub3JtYWx9Lm1hdC1zaW1wbGUtc25hY2tiYXJbX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtmb250LXNpemU6MTRweH0ubWF0LXNpbXBsZS1zbmFja2Jhci1hY3Rpb25bX25nY29udGVudC0lQ09NUCVde2xpbmUtaGVpZ2h0OjE7Zm9udC1mYW1pbHk6aW5oZXJpdDtmb250LXNpemU6aW5oZXJpdDtmb250LXdlaWdodDo1MDB9Lm1hdC10cmVlW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWZ9Lm1hdC10cmVlLW5vZGVbX25nY29udGVudC0lQ09NUCVdLCAubWF0LW5lc3RlZC10cmVlLW5vZGVbX25nY29udGVudC0lQ09NUCVde2ZvbnQtd2VpZ2h0OjQwMDtmb250LXNpemU6MTRweH0ubWF0LXJpcHBsZVtfbmdjb250ZW50LSVDT01QJV17b3ZlcmZsb3c6aGlkZGVuO3Bvc2l0aW9uOnJlbGF0aXZlfS5tYXQtcmlwcGxlW19uZ2NvbnRlbnQtJUNPTVAlXTpub3QoOmVtcHR5KXt0cmFuc2Zvcm06dHJhbnNsYXRlWigwKX0ubWF0LXJpcHBsZS5tYXQtcmlwcGxlLXVuYm91bmRlZFtfbmdjb250ZW50LSVDT01QJV17b3ZlcmZsb3c6dmlzaWJsZX0ubWF0LXJpcHBsZS1lbGVtZW50W19uZ2NvbnRlbnQtJUNPTVAlXXtwb3NpdGlvbjphYnNvbHV0ZTtib3JkZXItcmFkaXVzOjUwJTtwb2ludGVyLWV2ZW50czpub25lO3RyYW5zaXRpb246b3BhY2l0eSx0cmFuc2Zvcm0gMG1zIGN1YmljLWJlemllcigwLCAwLCAwLjIsIDEpO3RyYW5zZm9ybTpzY2FsZSgwKX0uY2RrLWhpZ2gtY29udHJhc3QtYWN0aXZlW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtcmlwcGxlLWVsZW1lbnRbX25nY29udGVudC0lQ09NUCVde2Rpc3BsYXk6bm9uZX0uY2RrLXZpc3VhbGx5LWhpZGRlbltfbmdjb250ZW50LSVDT01QJV17Ym9yZGVyOjA7Y2xpcDpyZWN0KDAgMCAwIDApO2hlaWdodDoxcHg7bWFyZ2luOi0xcHg7b3ZlcmZsb3c6aGlkZGVuO3BhZGRpbmc6MDtwb3NpdGlvbjphYnNvbHV0ZTt3aWR0aDoxcHg7b3V0bGluZTowOy13ZWJraXQtYXBwZWFyYW5jZTpub25lOy1tb3otYXBwZWFyYW5jZTpub25lfS5jZGstb3ZlcmxheS1jb250YWluZXJbX25nY29udGVudC0lQ09NUCVdLCAuY2RrLWdsb2JhbC1vdmVybGF5LXdyYXBwZXJbX25nY29udGVudC0lQ09NUCVde3BvaW50ZXItZXZlbnRzOm5vbmU7dG9wOjA7bGVmdDowO2hlaWdodDoxMDAlO3dpZHRoOjEwMCV9LmNkay1vdmVybGF5LWNvbnRhaW5lcltfbmdjb250ZW50LSVDT01QJV17cG9zaXRpb246Zml4ZWQ7ei1pbmRleDoxMDAwfS5jZGstb3ZlcmxheS1jb250YWluZXJbX25nY29udGVudC0lQ09NUCVdOmVtcHR5e2Rpc3BsYXk6bm9uZX0uY2RrLWdsb2JhbC1vdmVybGF5LXdyYXBwZXJbX25nY29udGVudC0lQ09NUCVde2Rpc3BsYXk6ZmxleDtwb3NpdGlvbjphYnNvbHV0ZTt6LWluZGV4OjEwMDB9LmNkay1vdmVybGF5LXBhbmVbX25nY29udGVudC0lQ09NUCVde3Bvc2l0aW9uOmFic29sdXRlO3BvaW50ZXItZXZlbnRzOmF1dG87Ym94LXNpemluZzpib3JkZXItYm94O3otaW5kZXg6MTAwMDtkaXNwbGF5OmZsZXg7bWF4LXdpZHRoOjEwMCU7bWF4LWhlaWdodDoxMDAlfS5jZGstb3ZlcmxheS1iYWNrZHJvcFtfbmdjb250ZW50LSVDT01QJV17cG9zaXRpb246YWJzb2x1dGU7dG9wOjA7Ym90dG9tOjA7bGVmdDowO3JpZ2h0OjA7ei1pbmRleDoxMDAwO3BvaW50ZXItZXZlbnRzOmF1dG87LXdlYmtpdC10YXAtaGlnaGxpZ2h0LWNvbG9yOnRyYW5zcGFyZW50O3RyYW5zaXRpb246b3BhY2l0eSA0MDBtcyBjdWJpYy1iZXppZXIoMC4yNSwgMC44LCAwLjI1LCAxKTtvcGFjaXR5OjB9LmNkay1vdmVybGF5LWJhY2tkcm9wLmNkay1vdmVybGF5LWJhY2tkcm9wLXNob3dpbmdbX25nY29udGVudC0lQ09NUCVde29wYWNpdHk6MX1AbWVkaWEgc2NyZWVuIGFuZCAoLW1zLWhpZ2gtY29udHJhc3Q6IGFjdGl2ZSl7LmNkay1vdmVybGF5LWJhY2tkcm9wLmNkay1vdmVybGF5LWJhY2tkcm9wLXNob3dpbmdbX25nY29udGVudC0lQ09NUCVde29wYWNpdHk6LjZ9fS5jZGstb3ZlcmxheS1kYXJrLWJhY2tkcm9wW19uZ2NvbnRlbnQtJUNPTVAlXXtiYWNrZ3JvdW5kOnJnYmEoMCwwLDAsLjMyKX0uY2RrLW92ZXJsYXktdHJhbnNwYXJlbnQtYmFja2Ryb3BbX25nY29udGVudC0lQ09NUCVdLCAuY2RrLW92ZXJsYXktdHJhbnNwYXJlbnQtYmFja2Ryb3AuY2RrLW92ZXJsYXktYmFja2Ryb3Atc2hvd2luZ1tfbmdjb250ZW50LSVDT01QJV17b3BhY2l0eTowfS5jZGstb3ZlcmxheS1jb25uZWN0ZWQtcG9zaXRpb24tYm91bmRpbmctYm94W19uZ2NvbnRlbnQtJUNPTVAlXXtwb3NpdGlvbjphYnNvbHV0ZTt6LWluZGV4OjEwMDA7ZGlzcGxheTpmbGV4O2ZsZXgtZGlyZWN0aW9uOmNvbHVtbjttaW4td2lkdGg6MXB4O21pbi1oZWlnaHQ6MXB4fS5jZGstZ2xvYmFsLXNjcm9sbGJsb2NrW19uZ2NvbnRlbnQtJUNPTVAlXXtwb3NpdGlvbjpmaXhlZDt3aWR0aDoxMDAlO292ZXJmbG93LXk6c2Nyb2xsfUBrZXlmcmFtZXMgY2RrLXRleHQtZmllbGQtYXV0b2ZpbGwtc3RhcnR7fUBrZXlmcmFtZXMgY2RrLXRleHQtZmllbGQtYXV0b2ZpbGwtZW5ke30uY2RrLXRleHQtZmllbGQtYXV0b2ZpbGwtbW9uaXRvcmVkW19uZ2NvbnRlbnQtJUNPTVAlXTotd2Via2l0LWF1dG9maWxse2FuaW1hdGlvbjpjZGstdGV4dC1maWVsZC1hdXRvZmlsbC1zdGFydCAwcyAxbXN9LmNkay10ZXh0LWZpZWxkLWF1dG9maWxsLW1vbml0b3JlZFtfbmdjb250ZW50LSVDT01QJV06bm90KDotd2Via2l0LWF1dG9maWxsKXthbmltYXRpb246Y2RrLXRleHQtZmllbGQtYXV0b2ZpbGwtZW5kIDBzIDFtc310ZXh0YXJlYS5jZGstdGV4dGFyZWEtYXV0b3NpemVbX25nY29udGVudC0lQ09NUCVde3Jlc2l6ZTpub25lfXRleHRhcmVhLmNkay10ZXh0YXJlYS1hdXRvc2l6ZS1tZWFzdXJpbmdbX25nY29udGVudC0lQ09NUCVde3BhZGRpbmc6MnB4IDAgIWltcG9ydGFudDtib3gtc2l6aW5nOmNvbnRlbnQtYm94ICFpbXBvcnRhbnQ7aGVpZ2h0OmF1dG8gIWltcG9ydGFudDtvdmVyZmxvdzpoaWRkZW4gIWltcG9ydGFudH10ZXh0YXJlYS5jZGstdGV4dGFyZWEtYXV0b3NpemUtbWVhc3VyaW5nLWZpcmVmb3hbX25nY29udGVudC0lQ09NUCVde3BhZGRpbmc6MnB4IDAgIWltcG9ydGFudDtib3gtc2l6aW5nOmNvbnRlbnQtYm94ICFpbXBvcnRhbnQ7aGVpZ2h0OjAgIWltcG9ydGFudH0ubWF0LWZvY3VzLWluZGljYXRvcltfbmdjb250ZW50LSVDT01QJV17cG9zaXRpb246cmVsYXRpdmV9Lm1hdC1tZGMtZm9jdXMtaW5kaWNhdG9yW19uZ2NvbnRlbnQtJUNPTVAlXXtwb3NpdGlvbjpyZWxhdGl2ZX0ubWF0LXJpcHBsZS1lbGVtZW50W19uZ2NvbnRlbnQtJUNPTVAlXXtiYWNrZ3JvdW5kLWNvbG9yOnJnYmEoMCwwLDAsLjEpfS5tYXQtb3B0aW9uW19uZ2NvbnRlbnQtJUNPTVAlXXtjb2xvcjojMjEyMTIxfS5tYXQtb3B0aW9uW19uZ2NvbnRlbnQtJUNPTVAlXTpob3Zlcjpub3QoLm1hdC1vcHRpb24tZGlzYWJsZWQpLCAubWF0LW9wdGlvbltfbmdjb250ZW50LSVDT01QJV06Zm9jdXM6bm90KC5tYXQtb3B0aW9uLWRpc2FibGVkKXtiYWNrZ3JvdW5kOnJnYmEoMCwwLDAsLjA0KX0ubWF0LW9wdGlvbi5tYXQtc2VsZWN0ZWRbX25nY29udGVudC0lQ09NUCVdOm5vdCgubWF0LW9wdGlvbi1tdWx0aXBsZSk6bm90KC5tYXQtb3B0aW9uLWRpc2FibGVkKXtiYWNrZ3JvdW5kOnJnYmEoMCwwLDAsLjA0KX0ubWF0LW9wdGlvbi5tYXQtYWN0aXZlW19uZ2NvbnRlbnQtJUNPTVAlXXtiYWNrZ3JvdW5kOnJnYmEoMCwwLDAsLjA0KTtjb2xvcjojMjEyMTIxfS5tYXQtb3B0aW9uLm1hdC1vcHRpb24tZGlzYWJsZWRbX25nY29udGVudC0lQ09NUCVde2NvbG9yOnJnYmEoMCwwLDAsLjM4KX0ubWF0LXByaW1hcnlbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1vcHRpb24ubWF0LXNlbGVjdGVkW19uZ2NvbnRlbnQtJUNPTVAlXTpub3QoLm1hdC1vcHRpb24tZGlzYWJsZWQpe2NvbG9yOiNmNTdjMDB9Lm1hdC1hY2NlbnRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1vcHRpb24ubWF0LXNlbGVjdGVkW19uZ2NvbnRlbnQtJUNPTVAlXTpub3QoLm1hdC1vcHRpb24tZGlzYWJsZWQpe2NvbG9yOiNmZjk4MDB9Lm1hdC13YXJuW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtb3B0aW9uLm1hdC1zZWxlY3RlZFtfbmdjb250ZW50LSVDT01QJV06bm90KC5tYXQtb3B0aW9uLWRpc2FibGVkKXtjb2xvcjojZjQ0MzM2fS5tYXQtb3B0Z3JvdXAtbGFiZWxbX25nY29udGVudC0lQ09NUCVde2NvbG9yOiM2MTYxNjF9Lm1hdC1vcHRncm91cC1kaXNhYmxlZFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LW9wdGdyb3VwLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXtjb2xvcjpyZ2JhKDAsMCwwLC4zOCl9Lm1hdC1wc2V1ZG8tY2hlY2tib3hbX25nY29udGVudC0lQ09NUCVde2NvbG9yOiM2MTYxNjF9Lm1hdC1wc2V1ZG8tY2hlY2tib3hbX25nY29udGVudC0lQ09NUCVdOjphZnRlcntjb2xvcjojZmFmYWZhfS5tYXQtcHNldWRvLWNoZWNrYm94LWRpc2FibGVkW19uZ2NvbnRlbnQtJUNPTVAlXXtjb2xvcjojYjBiMGIwfS5tYXQtcHJpbWFyeVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXBzZXVkby1jaGVja2JveC1jaGVja2VkW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1wcmltYXJ5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtcHNldWRvLWNoZWNrYm94LWluZGV0ZXJtaW5hdGVbX25nY29udGVudC0lQ09NUCVde2JhY2tncm91bmQ6I2Y1N2MwMH0ubWF0LXBzZXVkby1jaGVja2JveC1jaGVja2VkW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1wc2V1ZG8tY2hlY2tib3gtaW5kZXRlcm1pbmF0ZVtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtYWNjZW50W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtcHNldWRvLWNoZWNrYm94LWNoZWNrZWRbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWFjY2VudFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXBzZXVkby1jaGVja2JveC1pbmRldGVybWluYXRlW19uZ2NvbnRlbnQtJUNPTVAlXXtiYWNrZ3JvdW5kOiNmZjk4MDB9Lm1hdC13YXJuW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtcHNldWRvLWNoZWNrYm94LWNoZWNrZWRbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXdhcm5bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1wc2V1ZG8tY2hlY2tib3gtaW5kZXRlcm1pbmF0ZVtfbmdjb250ZW50LSVDT01QJV17YmFja2dyb3VuZDojZjQ0MzM2fS5tYXQtcHNldWRvLWNoZWNrYm94LWNoZWNrZWQubWF0LXBzZXVkby1jaGVja2JveC1kaXNhYmxlZFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtcHNldWRvLWNoZWNrYm94LWluZGV0ZXJtaW5hdGUubWF0LXBzZXVkby1jaGVja2JveC1kaXNhYmxlZFtfbmdjb250ZW50LSVDT01QJV17YmFja2dyb3VuZDojYjBiMGIwfS5tYXQtYXBwLWJhY2tncm91bmRbX25nY29udGVudC0lQ09NUCVde2JhY2tncm91bmQtY29sb3I6I2ZhZmFmYTtjb2xvcjojMjEyMTIxfS5tYXQtZWxldmF0aW9uLXowW19uZ2NvbnRlbnQtJUNPTVAlXXtib3gtc2hhZG93OjBweCAwcHggMHB4IDBweCByZ2JhKDAsIDAsIDAsIDAuMiksMHB4IDBweCAwcHggMHB4IHJnYmEoMCwgMCwgMCwgMC4xNCksMHB4IDBweCAwcHggMHB4IHJnYmEoMCwgMCwgMCwgMC4xMil9Lm1hdC1lbGV2YXRpb24tejFbX25nY29udGVudC0lQ09NUCVde2JveC1zaGFkb3c6MHB4IDJweCAxcHggLTFweCByZ2JhKDAsIDAsIDAsIDAuMiksMHB4IDFweCAxcHggMHB4IHJnYmEoMCwgMCwgMCwgMC4xNCksMHB4IDFweCAzcHggMHB4IHJnYmEoMCwgMCwgMCwgMC4xMil9Lm1hdC1lbGV2YXRpb24tejJbX25nY29udGVudC0lQ09NUCVde2JveC1zaGFkb3c6MHB4IDNweCAxcHggLTJweCByZ2JhKDAsIDAsIDAsIDAuMiksMHB4IDJweCAycHggMHB4IHJnYmEoMCwgMCwgMCwgMC4xNCksMHB4IDFweCA1cHggMHB4IHJnYmEoMCwgMCwgMCwgMC4xMil9Lm1hdC1lbGV2YXRpb24tejNbX25nY29udGVudC0lQ09NUCVde2JveC1zaGFkb3c6MHB4IDNweCAzcHggLTJweCByZ2JhKDAsIDAsIDAsIDAuMiksMHB4IDNweCA0cHggMHB4IHJnYmEoMCwgMCwgMCwgMC4xNCksMHB4IDFweCA4cHggMHB4IHJnYmEoMCwgMCwgMCwgMC4xMil9Lm1hdC1lbGV2YXRpb24tejRbX25nY29udGVudC0lQ09NUCVde2JveC1zaGFkb3c6MHB4IDJweCA0cHggLTFweCByZ2JhKDAsIDAsIDAsIDAuMiksMHB4IDRweCA1cHggMHB4IHJnYmEoMCwgMCwgMCwgMC4xNCksMHB4IDFweCAxMHB4IDBweCByZ2JhKDAsIDAsIDAsIDAuMTIpfS5tYXQtZWxldmF0aW9uLXo1W19uZ2NvbnRlbnQtJUNPTVAlXXtib3gtc2hhZG93OjBweCAzcHggNXB4IC0xcHggcmdiYSgwLCAwLCAwLCAwLjIpLDBweCA1cHggOHB4IDBweCByZ2JhKDAsIDAsIDAsIDAuMTQpLDBweCAxcHggMTRweCAwcHggcmdiYSgwLCAwLCAwLCAwLjEyKX0ubWF0LWVsZXZhdGlvbi16Nltfbmdjb250ZW50LSVDT01QJV17Ym94LXNoYWRvdzowcHggM3B4IDVweCAtMXB4IHJnYmEoMCwgMCwgMCwgMC4yKSwwcHggNnB4IDEwcHggMHB4IHJnYmEoMCwgMCwgMCwgMC4xNCksMHB4IDFweCAxOHB4IDBweCByZ2JhKDAsIDAsIDAsIDAuMTIpfS5tYXQtZWxldmF0aW9uLXo3W19uZ2NvbnRlbnQtJUNPTVAlXXtib3gtc2hhZG93OjBweCA0cHggNXB4IC0ycHggcmdiYSgwLCAwLCAwLCAwLjIpLDBweCA3cHggMTBweCAxcHggcmdiYSgwLCAwLCAwLCAwLjE0KSwwcHggMnB4IDE2cHggMXB4IHJnYmEoMCwgMCwgMCwgMC4xMil9Lm1hdC1lbGV2YXRpb24tejhbX25nY29udGVudC0lQ09NUCVde2JveC1zaGFkb3c6MHB4IDVweCA1cHggLTNweCByZ2JhKDAsIDAsIDAsIDAuMiksMHB4IDhweCAxMHB4IDFweCByZ2JhKDAsIDAsIDAsIDAuMTQpLDBweCAzcHggMTRweCAycHggcmdiYSgwLCAwLCAwLCAwLjEyKX0ubWF0LWVsZXZhdGlvbi16OVtfbmdjb250ZW50LSVDT01QJV17Ym94LXNoYWRvdzowcHggNXB4IDZweCAtM3B4IHJnYmEoMCwgMCwgMCwgMC4yKSwwcHggOXB4IDEycHggMXB4IHJnYmEoMCwgMCwgMCwgMC4xNCksMHB4IDNweCAxNnB4IDJweCByZ2JhKDAsIDAsIDAsIDAuMTIpfS5tYXQtZWxldmF0aW9uLXoxMFtfbmdjb250ZW50LSVDT01QJV17Ym94LXNoYWRvdzowcHggNnB4IDZweCAtM3B4IHJnYmEoMCwgMCwgMCwgMC4yKSwwcHggMTBweCAxNHB4IDFweCByZ2JhKDAsIDAsIDAsIDAuMTQpLDBweCA0cHggMThweCAzcHggcmdiYSgwLCAwLCAwLCAwLjEyKX0ubWF0LWVsZXZhdGlvbi16MTFbX25nY29udGVudC0lQ09NUCVde2JveC1zaGFkb3c6MHB4IDZweCA3cHggLTRweCByZ2JhKDAsIDAsIDAsIDAuMiksMHB4IDExcHggMTVweCAxcHggcmdiYSgwLCAwLCAwLCAwLjE0KSwwcHggNHB4IDIwcHggM3B4IHJnYmEoMCwgMCwgMCwgMC4xMil9Lm1hdC1lbGV2YXRpb24tejEyW19uZ2NvbnRlbnQtJUNPTVAlXXtib3gtc2hhZG93OjBweCA3cHggOHB4IC00cHggcmdiYSgwLCAwLCAwLCAwLjIpLDBweCAxMnB4IDE3cHggMnB4IHJnYmEoMCwgMCwgMCwgMC4xNCksMHB4IDVweCAyMnB4IDRweCByZ2JhKDAsIDAsIDAsIDAuMTIpfS5tYXQtZWxldmF0aW9uLXoxM1tfbmdjb250ZW50LSVDT01QJV17Ym94LXNoYWRvdzowcHggN3B4IDhweCAtNHB4IHJnYmEoMCwgMCwgMCwgMC4yKSwwcHggMTNweCAxOXB4IDJweCByZ2JhKDAsIDAsIDAsIDAuMTQpLDBweCA1cHggMjRweCA0cHggcmdiYSgwLCAwLCAwLCAwLjEyKX0ubWF0LWVsZXZhdGlvbi16MTRbX25nY29udGVudC0lQ09NUCVde2JveC1zaGFkb3c6MHB4IDdweCA5cHggLTRweCByZ2JhKDAsIDAsIDAsIDAuMiksMHB4IDE0cHggMjFweCAycHggcmdiYSgwLCAwLCAwLCAwLjE0KSwwcHggNXB4IDI2cHggNHB4IHJnYmEoMCwgMCwgMCwgMC4xMil9Lm1hdC1lbGV2YXRpb24tejE1W19uZ2NvbnRlbnQtJUNPTVAlXXtib3gtc2hhZG93OjBweCA4cHggOXB4IC01cHggcmdiYSgwLCAwLCAwLCAwLjIpLDBweCAxNXB4IDIycHggMnB4IHJnYmEoMCwgMCwgMCwgMC4xNCksMHB4IDZweCAyOHB4IDVweCByZ2JhKDAsIDAsIDAsIDAuMTIpfS5tYXQtZWxldmF0aW9uLXoxNltfbmdjb250ZW50LSVDT01QJV17Ym94LXNoYWRvdzowcHggOHB4IDEwcHggLTVweCByZ2JhKDAsIDAsIDAsIDAuMiksMHB4IDE2cHggMjRweCAycHggcmdiYSgwLCAwLCAwLCAwLjE0KSwwcHggNnB4IDMwcHggNXB4IHJnYmEoMCwgMCwgMCwgMC4xMil9Lm1hdC1lbGV2YXRpb24tejE3W19uZ2NvbnRlbnQtJUNPTVAlXXtib3gtc2hhZG93OjBweCA4cHggMTFweCAtNXB4IHJnYmEoMCwgMCwgMCwgMC4yKSwwcHggMTdweCAyNnB4IDJweCByZ2JhKDAsIDAsIDAsIDAuMTQpLDBweCA2cHggMzJweCA1cHggcmdiYSgwLCAwLCAwLCAwLjEyKX0ubWF0LWVsZXZhdGlvbi16MThbX25nY29udGVudC0lQ09NUCVde2JveC1zaGFkb3c6MHB4IDlweCAxMXB4IC01cHggcmdiYSgwLCAwLCAwLCAwLjIpLDBweCAxOHB4IDI4cHggMnB4IHJnYmEoMCwgMCwgMCwgMC4xNCksMHB4IDdweCAzNHB4IDZweCByZ2JhKDAsIDAsIDAsIDAuMTIpfS5tYXQtZWxldmF0aW9uLXoxOVtfbmdjb250ZW50LSVDT01QJV17Ym94LXNoYWRvdzowcHggOXB4IDEycHggLTZweCByZ2JhKDAsIDAsIDAsIDAuMiksMHB4IDE5cHggMjlweCAycHggcmdiYSgwLCAwLCAwLCAwLjE0KSwwcHggN3B4IDM2cHggNnB4IHJnYmEoMCwgMCwgMCwgMC4xMil9Lm1hdC1lbGV2YXRpb24tejIwW19uZ2NvbnRlbnQtJUNPTVAlXXtib3gtc2hhZG93OjBweCAxMHB4IDEzcHggLTZweCByZ2JhKDAsIDAsIDAsIDAuMiksMHB4IDIwcHggMzFweCAzcHggcmdiYSgwLCAwLCAwLCAwLjE0KSwwcHggOHB4IDM4cHggN3B4IHJnYmEoMCwgMCwgMCwgMC4xMil9Lm1hdC1lbGV2YXRpb24tejIxW19uZ2NvbnRlbnQtJUNPTVAlXXtib3gtc2hhZG93OjBweCAxMHB4IDEzcHggLTZweCByZ2JhKDAsIDAsIDAsIDAuMiksMHB4IDIxcHggMzNweCAzcHggcmdiYSgwLCAwLCAwLCAwLjE0KSwwcHggOHB4IDQwcHggN3B4IHJnYmEoMCwgMCwgMCwgMC4xMil9Lm1hdC1lbGV2YXRpb24tejIyW19uZ2NvbnRlbnQtJUNPTVAlXXtib3gtc2hhZG93OjBweCAxMHB4IDE0cHggLTZweCByZ2JhKDAsIDAsIDAsIDAuMiksMHB4IDIycHggMzVweCAzcHggcmdiYSgwLCAwLCAwLCAwLjE0KSwwcHggOHB4IDQycHggN3B4IHJnYmEoMCwgMCwgMCwgMC4xMil9Lm1hdC1lbGV2YXRpb24tejIzW19uZ2NvbnRlbnQtJUNPTVAlXXtib3gtc2hhZG93OjBweCAxMXB4IDE0cHggLTdweCByZ2JhKDAsIDAsIDAsIDAuMiksMHB4IDIzcHggMzZweCAzcHggcmdiYSgwLCAwLCAwLCAwLjE0KSwwcHggOXB4IDQ0cHggOHB4IHJnYmEoMCwgMCwgMCwgMC4xMil9Lm1hdC1lbGV2YXRpb24tejI0W19uZ2NvbnRlbnQtJUNPTVAlXXtib3gtc2hhZG93OjBweCAxMXB4IDE1cHggLTdweCByZ2JhKDAsIDAsIDAsIDAuMiksMHB4IDI0cHggMzhweCAzcHggcmdiYSgwLCAwLCAwLCAwLjE0KSwwcHggOXB4IDQ2cHggOHB4IHJnYmEoMCwgMCwgMCwgMC4xMil9Lm1hdC10aGVtZS1sb2FkZWQtbWFya2VyW19uZ2NvbnRlbnQtJUNPTVAlXXtkaXNwbGF5Om5vbmV9Lm1hdC1hdXRvY29tcGxldGUtcGFuZWxbX25nY29udGVudC0lQ09NUCVde2JhY2tncm91bmQ6I2ZmZjtjb2xvcjojMjEyMTIxfS5tYXQtYXV0b2NvbXBsZXRlLXBhbmVsW19uZ2NvbnRlbnQtJUNPTVAlXTpub3QoW2NsYXNzKj1tYXQtZWxldmF0aW9uLXpdKXtib3gtc2hhZG93OjBweCAycHggNHB4IC0xcHggcmdiYSgwLCAwLCAwLCAwLjIpLDBweCA0cHggNXB4IDBweCByZ2JhKDAsIDAsIDAsIDAuMTQpLDBweCAxcHggMTBweCAwcHggcmdiYSgwLCAwLCAwLCAwLjEyKX0ubWF0LWF1dG9jb21wbGV0ZS1wYW5lbFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LW9wdGlvbi5tYXQtc2VsZWN0ZWRbX25nY29udGVudC0lQ09NUCVdOm5vdCgubWF0LWFjdGl2ZSk6bm90KDpob3Zlcil7YmFja2dyb3VuZDojZmZmfS5tYXQtYXV0b2NvbXBsZXRlLXBhbmVsW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtb3B0aW9uLm1hdC1zZWxlY3RlZFtfbmdjb250ZW50LSVDT01QJV06bm90KC5tYXQtYWN0aXZlKTpub3QoOmhvdmVyKTpub3QoLm1hdC1vcHRpb24tZGlzYWJsZWQpe2NvbG9yOiMyMTIxMjF9Lm1hdC1iYWRnZS1jb250ZW50W19uZ2NvbnRlbnQtJUNPTVAlXXtjb2xvcjojZmZmO2JhY2tncm91bmQ6I2Y1N2MwMH0uY2RrLWhpZ2gtY29udHJhc3QtYWN0aXZlW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtYmFkZ2UtY29udGVudFtfbmdjb250ZW50LSVDT01QJV17b3V0bGluZTpzb2xpZCAxcHg7Ym9yZGVyLXJhZGl1czowfS5tYXQtYmFkZ2UtYWNjZW50W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtYmFkZ2UtY29udGVudFtfbmdjb250ZW50LSVDT01QJV17YmFja2dyb3VuZDojZmY5ODAwO2NvbG9yOiNmZmZ9Lm1hdC1iYWRnZS13YXJuW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtYmFkZ2UtY29udGVudFtfbmdjb250ZW50LSVDT01QJV17Y29sb3I6I2ZmZjtiYWNrZ3JvdW5kOiNmNDQzMzZ9Lm1hdC1iYWRnZVtfbmdjb250ZW50LSVDT01QJV17cG9zaXRpb246cmVsYXRpdmV9Lm1hdC1iYWRnZS1oaWRkZW5bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1iYWRnZS1jb250ZW50W19uZ2NvbnRlbnQtJUNPTVAlXXtkaXNwbGF5Om5vbmV9Lm1hdC1iYWRnZS1kaXNhYmxlZFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWJhZGdlLWNvbnRlbnRbX25nY29udGVudC0lQ09NUCVde2JhY2tncm91bmQ6I2I5YjliOTtjb2xvcjojNzU3NTc1fS5tYXQtYmFkZ2UtY29udGVudFtfbmdjb250ZW50LSVDT01QJV17cG9zaXRpb246YWJzb2x1dGU7dGV4dC1hbGlnbjpjZW50ZXI7ZGlzcGxheTppbmxpbmUtYmxvY2s7Ym9yZGVyLXJhZGl1czo1MCU7dHJhbnNpdGlvbjp0cmFuc2Zvcm0gMjAwbXMgZWFzZS1pbi1vdXQ7dHJhbnNmb3JtOnNjYWxlKDAuNik7b3ZlcmZsb3c6aGlkZGVuO3doaXRlLXNwYWNlOm5vd3JhcDt0ZXh0LW92ZXJmbG93OmVsbGlwc2lzO3BvaW50ZXItZXZlbnRzOm5vbmV9Lm5nLWFuaW1hdGUtZGlzYWJsZWRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1iYWRnZS1jb250ZW50W19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1iYWRnZS1jb250ZW50Ll9tYXQtYW5pbWF0aW9uLW5vb3BhYmxlW19uZ2NvbnRlbnQtJUNPTVAlXXt0cmFuc2l0aW9uOm5vbmV9Lm1hdC1iYWRnZS1jb250ZW50Lm1hdC1iYWRnZS1hY3RpdmVbX25nY29udGVudC0lQ09NUCVde3RyYW5zZm9ybTpub25lfS5tYXQtYmFkZ2Utc21hbGxbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1iYWRnZS1jb250ZW50W19uZ2NvbnRlbnQtJUNPTVAlXXt3aWR0aDoxNnB4O2hlaWdodDoxNnB4O2xpbmUtaGVpZ2h0OjE2cHh9Lm1hdC1iYWRnZS1zbWFsbC5tYXQtYmFkZ2UtYWJvdmVbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1iYWRnZS1jb250ZW50W19uZ2NvbnRlbnQtJUNPTVAlXXt0b3A6LThweH0ubWF0LWJhZGdlLXNtYWxsLm1hdC1iYWRnZS1iZWxvd1tfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWJhZGdlLWNvbnRlbnRbX25nY29udGVudC0lQ09NUCVde2JvdHRvbTotOHB4fS5tYXQtYmFkZ2Utc21hbGwubWF0LWJhZGdlLWJlZm9yZVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWJhZGdlLWNvbnRlbnRbX25nY29udGVudC0lQ09NUCVde2xlZnQ6LTE2cHh9W2Rpcj1ydGxdW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtYmFkZ2Utc21hbGwubWF0LWJhZGdlLWJlZm9yZVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWJhZGdlLWNvbnRlbnRbX25nY29udGVudC0lQ09NUCVde2xlZnQ6YXV0bztyaWdodDotMTZweH0ubWF0LWJhZGdlLXNtYWxsLm1hdC1iYWRnZS1hZnRlcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWJhZGdlLWNvbnRlbnRbX25nY29udGVudC0lQ09NUCVde3JpZ2h0Oi0xNnB4fVtkaXI9cnRsXVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWJhZGdlLXNtYWxsLm1hdC1iYWRnZS1hZnRlcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWJhZGdlLWNvbnRlbnRbX25nY29udGVudC0lQ09NUCVde3JpZ2h0OmF1dG87bGVmdDotMTZweH0ubWF0LWJhZGdlLXNtYWxsLm1hdC1iYWRnZS1vdmVybGFwLm1hdC1iYWRnZS1iZWZvcmVbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1iYWRnZS1jb250ZW50W19uZ2NvbnRlbnQtJUNPTVAlXXtsZWZ0Oi04cHh9W2Rpcj1ydGxdW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtYmFkZ2Utc21hbGwubWF0LWJhZGdlLW92ZXJsYXAubWF0LWJhZGdlLWJlZm9yZVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWJhZGdlLWNvbnRlbnRbX25nY29udGVudC0lQ09NUCVde2xlZnQ6YXV0bztyaWdodDotOHB4fS5tYXQtYmFkZ2Utc21hbGwubWF0LWJhZGdlLW92ZXJsYXAubWF0LWJhZGdlLWFmdGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtYmFkZ2UtY29udGVudFtfbmdjb250ZW50LSVDT01QJV17cmlnaHQ6LThweH1bZGlyPXJ0bF1bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1iYWRnZS1zbWFsbC5tYXQtYmFkZ2Utb3ZlcmxhcC5tYXQtYmFkZ2UtYWZ0ZXJbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1iYWRnZS1jb250ZW50W19uZ2NvbnRlbnQtJUNPTVAlXXtyaWdodDphdXRvO2xlZnQ6LThweH0ubWF0LWJhZGdlLW1lZGl1bVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWJhZGdlLWNvbnRlbnRbX25nY29udGVudC0lQ09NUCVde3dpZHRoOjIycHg7aGVpZ2h0OjIycHg7bGluZS1oZWlnaHQ6MjJweH0ubWF0LWJhZGdlLW1lZGl1bS5tYXQtYmFkZ2UtYWJvdmVbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1iYWRnZS1jb250ZW50W19uZ2NvbnRlbnQtJUNPTVAlXXt0b3A6LTExcHh9Lm1hdC1iYWRnZS1tZWRpdW0ubWF0LWJhZGdlLWJlbG93W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtYmFkZ2UtY29udGVudFtfbmdjb250ZW50LSVDT01QJV17Ym90dG9tOi0xMXB4fS5tYXQtYmFkZ2UtbWVkaXVtLm1hdC1iYWRnZS1iZWZvcmVbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1iYWRnZS1jb250ZW50W19uZ2NvbnRlbnQtJUNPTVAlXXtsZWZ0Oi0yMnB4fVtkaXI9cnRsXVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWJhZGdlLW1lZGl1bS5tYXQtYmFkZ2UtYmVmb3JlW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtYmFkZ2UtY29udGVudFtfbmdjb250ZW50LSVDT01QJV17bGVmdDphdXRvO3JpZ2h0Oi0yMnB4fS5tYXQtYmFkZ2UtbWVkaXVtLm1hdC1iYWRnZS1hZnRlcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWJhZGdlLWNvbnRlbnRbX25nY29udGVudC0lQ09NUCVde3JpZ2h0Oi0yMnB4fVtkaXI9cnRsXVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWJhZGdlLW1lZGl1bS5tYXQtYmFkZ2UtYWZ0ZXJbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1iYWRnZS1jb250ZW50W19uZ2NvbnRlbnQtJUNPTVAlXXtyaWdodDphdXRvO2xlZnQ6LTIycHh9Lm1hdC1iYWRnZS1tZWRpdW0ubWF0LWJhZGdlLW92ZXJsYXAubWF0LWJhZGdlLWJlZm9yZVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWJhZGdlLWNvbnRlbnRbX25nY29udGVudC0lQ09NUCVde2xlZnQ6LTExcHh9W2Rpcj1ydGxdW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtYmFkZ2UtbWVkaXVtLm1hdC1iYWRnZS1vdmVybGFwLm1hdC1iYWRnZS1iZWZvcmVbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1iYWRnZS1jb250ZW50W19uZ2NvbnRlbnQtJUNPTVAlXXtsZWZ0OmF1dG87cmlnaHQ6LTExcHh9Lm1hdC1iYWRnZS1tZWRpdW0ubWF0LWJhZGdlLW92ZXJsYXAubWF0LWJhZGdlLWFmdGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtYmFkZ2UtY29udGVudFtfbmdjb250ZW50LSVDT01QJV17cmlnaHQ6LTExcHh9W2Rpcj1ydGxdW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtYmFkZ2UtbWVkaXVtLm1hdC1iYWRnZS1vdmVybGFwLm1hdC1iYWRnZS1hZnRlcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWJhZGdlLWNvbnRlbnRbX25nY29udGVudC0lQ09NUCVde3JpZ2h0OmF1dG87bGVmdDotMTFweH0ubWF0LWJhZGdlLWxhcmdlW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtYmFkZ2UtY29udGVudFtfbmdjb250ZW50LSVDT01QJV17d2lkdGg6MjhweDtoZWlnaHQ6MjhweDtsaW5lLWhlaWdodDoyOHB4fS5tYXQtYmFkZ2UtbGFyZ2UubWF0LWJhZGdlLWFib3ZlW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtYmFkZ2UtY29udGVudFtfbmdjb250ZW50LSVDT01QJV17dG9wOi0xNHB4fS5tYXQtYmFkZ2UtbGFyZ2UubWF0LWJhZGdlLWJlbG93W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtYmFkZ2UtY29udGVudFtfbmdjb250ZW50LSVDT01QJV17Ym90dG9tOi0xNHB4fS5tYXQtYmFkZ2UtbGFyZ2UubWF0LWJhZGdlLWJlZm9yZVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWJhZGdlLWNvbnRlbnRbX25nY29udGVudC0lQ09NUCVde2xlZnQ6LTI4cHh9W2Rpcj1ydGxdW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtYmFkZ2UtbGFyZ2UubWF0LWJhZGdlLWJlZm9yZVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWJhZGdlLWNvbnRlbnRbX25nY29udGVudC0lQ09NUCVde2xlZnQ6YXV0bztyaWdodDotMjhweH0ubWF0LWJhZGdlLWxhcmdlLm1hdC1iYWRnZS1hZnRlcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWJhZGdlLWNvbnRlbnRbX25nY29udGVudC0lQ09NUCVde3JpZ2h0Oi0yOHB4fVtkaXI9cnRsXVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWJhZGdlLWxhcmdlLm1hdC1iYWRnZS1hZnRlcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWJhZGdlLWNvbnRlbnRbX25nY29udGVudC0lQ09NUCVde3JpZ2h0OmF1dG87bGVmdDotMjhweH0ubWF0LWJhZGdlLWxhcmdlLm1hdC1iYWRnZS1vdmVybGFwLm1hdC1iYWRnZS1iZWZvcmVbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1iYWRnZS1jb250ZW50W19uZ2NvbnRlbnQtJUNPTVAlXXtsZWZ0Oi0xNHB4fVtkaXI9cnRsXVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWJhZGdlLWxhcmdlLm1hdC1iYWRnZS1vdmVybGFwLm1hdC1iYWRnZS1iZWZvcmVbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1iYWRnZS1jb250ZW50W19uZ2NvbnRlbnQtJUNPTVAlXXtsZWZ0OmF1dG87cmlnaHQ6LTE0cHh9Lm1hdC1iYWRnZS1sYXJnZS5tYXQtYmFkZ2Utb3ZlcmxhcC5tYXQtYmFkZ2UtYWZ0ZXJbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1iYWRnZS1jb250ZW50W19uZ2NvbnRlbnQtJUNPTVAlXXtyaWdodDotMTRweH1bZGlyPXJ0bF1bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1iYWRnZS1sYXJnZS5tYXQtYmFkZ2Utb3ZlcmxhcC5tYXQtYmFkZ2UtYWZ0ZXJbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1iYWRnZS1jb250ZW50W19uZ2NvbnRlbnQtJUNPTVAlXXtyaWdodDphdXRvO2xlZnQ6LTE0cHh9Lm1hdC1ib3R0b20tc2hlZXQtY29udGFpbmVyW19uZ2NvbnRlbnQtJUNPTVAlXXtib3gtc2hhZG93OjBweCA4cHggMTBweCAtNXB4IHJnYmEoMCwgMCwgMCwgMC4yKSwwcHggMTZweCAyNHB4IDJweCByZ2JhKDAsIDAsIDAsIDAuMTQpLDBweCA2cHggMzBweCA1cHggcmdiYSgwLCAwLCAwLCAwLjEyKTtiYWNrZ3JvdW5kOiNmZmY7Y29sb3I6IzIxMjEyMX0ubWF0LWJ1dHRvbltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtaWNvbi1idXR0b25bX25nY29udGVudC0lQ09NUCVdLCAubWF0LXN0cm9rZWQtYnV0dG9uW19uZ2NvbnRlbnQtJUNPTVAlXXtjb2xvcjppbmhlcml0O2JhY2tncm91bmQ6dHJhbnNwYXJlbnR9Lm1hdC1idXR0b24ubWF0LXByaW1hcnlbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWljb24tYnV0dG9uLm1hdC1wcmltYXJ5W19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1zdHJva2VkLWJ1dHRvbi5tYXQtcHJpbWFyeVtfbmdjb250ZW50LSVDT01QJV17Y29sb3I6I2Y1N2MwMH0ubWF0LWJ1dHRvbi5tYXQtYWNjZW50W19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1pY29uLWJ1dHRvbi5tYXQtYWNjZW50W19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1zdHJva2VkLWJ1dHRvbi5tYXQtYWNjZW50W19uZ2NvbnRlbnQtJUNPTVAlXXtjb2xvcjojZmY5ODAwfS5tYXQtYnV0dG9uLm1hdC13YXJuW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1pY29uLWJ1dHRvbi5tYXQtd2Fybltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtc3Ryb2tlZC1idXR0b24ubWF0LXdhcm5bX25nY29udGVudC0lQ09NUCVde2NvbG9yOiNmNDQzMzZ9Lm1hdC1idXR0b24ubWF0LXByaW1hcnkubWF0LWJ1dHRvbi1kaXNhYmxlZFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtYnV0dG9uLm1hdC1hY2NlbnQubWF0LWJ1dHRvbi1kaXNhYmxlZFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtYnV0dG9uLm1hdC13YXJuLm1hdC1idXR0b24tZGlzYWJsZWRbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWJ1dHRvbi5tYXQtYnV0dG9uLWRpc2FibGVkLm1hdC1idXR0b24tZGlzYWJsZWRbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWljb24tYnV0dG9uLm1hdC1wcmltYXJ5Lm1hdC1idXR0b24tZGlzYWJsZWRbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWljb24tYnV0dG9uLm1hdC1hY2NlbnQubWF0LWJ1dHRvbi1kaXNhYmxlZFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtaWNvbi1idXR0b24ubWF0LXdhcm4ubWF0LWJ1dHRvbi1kaXNhYmxlZFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtaWNvbi1idXR0b24ubWF0LWJ1dHRvbi1kaXNhYmxlZC5tYXQtYnV0dG9uLWRpc2FibGVkW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1zdHJva2VkLWJ1dHRvbi5tYXQtcHJpbWFyeS5tYXQtYnV0dG9uLWRpc2FibGVkW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1zdHJva2VkLWJ1dHRvbi5tYXQtYWNjZW50Lm1hdC1idXR0b24tZGlzYWJsZWRbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXN0cm9rZWQtYnV0dG9uLm1hdC13YXJuLm1hdC1idXR0b24tZGlzYWJsZWRbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXN0cm9rZWQtYnV0dG9uLm1hdC1idXR0b24tZGlzYWJsZWQubWF0LWJ1dHRvbi1kaXNhYmxlZFtfbmdjb250ZW50LSVDT01QJV17Y29sb3I6cmdiYSgwLDAsMCwuMjYpfS5tYXQtYnV0dG9uLm1hdC1wcmltYXJ5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtYnV0dG9uLWZvY3VzLW92ZXJsYXlbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWljb24tYnV0dG9uLm1hdC1wcmltYXJ5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtYnV0dG9uLWZvY3VzLW92ZXJsYXlbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXN0cm9rZWQtYnV0dG9uLm1hdC1wcmltYXJ5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtYnV0dG9uLWZvY3VzLW92ZXJsYXlbX25nY29udGVudC0lQ09NUCVde2JhY2tncm91bmQtY29sb3I6I2Y1N2MwMH0ubWF0LWJ1dHRvbi5tYXQtYWNjZW50W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtYnV0dG9uLWZvY3VzLW92ZXJsYXlbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWljb24tYnV0dG9uLm1hdC1hY2NlbnRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1idXR0b24tZm9jdXMtb3ZlcmxheVtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtc3Ryb2tlZC1idXR0b24ubWF0LWFjY2VudFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWJ1dHRvbi1mb2N1cy1vdmVybGF5W19uZ2NvbnRlbnQtJUNPTVAlXXtiYWNrZ3JvdW5kLWNvbG9yOiNmZjk4MDB9Lm1hdC1idXR0b24ubWF0LXdhcm5bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1idXR0b24tZm9jdXMtb3ZlcmxheVtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtaWNvbi1idXR0b24ubWF0LXdhcm5bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1idXR0b24tZm9jdXMtb3ZlcmxheVtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtc3Ryb2tlZC1idXR0b24ubWF0LXdhcm5bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1idXR0b24tZm9jdXMtb3ZlcmxheVtfbmdjb250ZW50LSVDT01QJV17YmFja2dyb3VuZC1jb2xvcjojZjQ0MzM2fS5tYXQtYnV0dG9uLm1hdC1idXR0b24tZGlzYWJsZWRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1idXR0b24tZm9jdXMtb3ZlcmxheVtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtaWNvbi1idXR0b24ubWF0LWJ1dHRvbi1kaXNhYmxlZFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWJ1dHRvbi1mb2N1cy1vdmVybGF5W19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1zdHJva2VkLWJ1dHRvbi5tYXQtYnV0dG9uLWRpc2FibGVkW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtYnV0dG9uLWZvY3VzLW92ZXJsYXlbX25nY29udGVudC0lQ09NUCVde2JhY2tncm91bmQtY29sb3I6dHJhbnNwYXJlbnR9Lm1hdC1idXR0b25bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1yaXBwbGUtZWxlbWVudFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtaWNvbi1idXR0b25bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1yaXBwbGUtZWxlbWVudFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtc3Ryb2tlZC1idXR0b25bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1yaXBwbGUtZWxlbWVudFtfbmdjb250ZW50LSVDT01QJV17b3BhY2l0eTouMTtiYWNrZ3JvdW5kLWNvbG9yOmN1cnJlbnRDb2xvcn0ubWF0LWJ1dHRvbi1mb2N1cy1vdmVybGF5W19uZ2NvbnRlbnQtJUNPTVAlXXtiYWNrZ3JvdW5kOiMwMDB9Lm1hdC1zdHJva2VkLWJ1dHRvbltfbmdjb250ZW50LSVDT01QJV06bm90KC5tYXQtYnV0dG9uLWRpc2FibGVkKXtib3JkZXItY29sb3I6cmdiYSgwLDAsMCwuMTIpfS5tYXQtZmxhdC1idXR0b25bX25nY29udGVudC0lQ09NUCVdLCAubWF0LXJhaXNlZC1idXR0b25bX25nY29udGVudC0lQ09NUCVdLCAubWF0LWZhYltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtbWluaS1mYWJbX25nY29udGVudC0lQ09NUCVde2NvbG9yOiMyMTIxMjE7YmFja2dyb3VuZC1jb2xvcjojZmZmfS5tYXQtZmxhdC1idXR0b24ubWF0LXByaW1hcnlbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXJhaXNlZC1idXR0b24ubWF0LXByaW1hcnlbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWZhYi5tYXQtcHJpbWFyeVtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtbWluaS1mYWIubWF0LXByaW1hcnlbX25nY29udGVudC0lQ09NUCVde2NvbG9yOiNmZmZ9Lm1hdC1mbGF0LWJ1dHRvbi5tYXQtYWNjZW50W19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1yYWlzZWQtYnV0dG9uLm1hdC1hY2NlbnRbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWZhYi5tYXQtYWNjZW50W19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1taW5pLWZhYi5tYXQtYWNjZW50W19uZ2NvbnRlbnQtJUNPTVAlXXtjb2xvcjojZmZmfS5tYXQtZmxhdC1idXR0b24ubWF0LXdhcm5bX25nY29udGVudC0lQ09NUCVdLCAubWF0LXJhaXNlZC1idXR0b24ubWF0LXdhcm5bX25nY29udGVudC0lQ09NUCVdLCAubWF0LWZhYi5tYXQtd2Fybltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtbWluaS1mYWIubWF0LXdhcm5bX25nY29udGVudC0lQ09NUCVde2NvbG9yOiNmZmZ9Lm1hdC1mbGF0LWJ1dHRvbi5tYXQtcHJpbWFyeS5tYXQtYnV0dG9uLWRpc2FibGVkW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1mbGF0LWJ1dHRvbi5tYXQtYWNjZW50Lm1hdC1idXR0b24tZGlzYWJsZWRbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWZsYXQtYnV0dG9uLm1hdC13YXJuLm1hdC1idXR0b24tZGlzYWJsZWRbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWZsYXQtYnV0dG9uLm1hdC1idXR0b24tZGlzYWJsZWQubWF0LWJ1dHRvbi1kaXNhYmxlZFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtcmFpc2VkLWJ1dHRvbi5tYXQtcHJpbWFyeS5tYXQtYnV0dG9uLWRpc2FibGVkW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1yYWlzZWQtYnV0dG9uLm1hdC1hY2NlbnQubWF0LWJ1dHRvbi1kaXNhYmxlZFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtcmFpc2VkLWJ1dHRvbi5tYXQtd2Fybi5tYXQtYnV0dG9uLWRpc2FibGVkW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1yYWlzZWQtYnV0dG9uLm1hdC1idXR0b24tZGlzYWJsZWQubWF0LWJ1dHRvbi1kaXNhYmxlZFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtZmFiLm1hdC1wcmltYXJ5Lm1hdC1idXR0b24tZGlzYWJsZWRbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWZhYi5tYXQtYWNjZW50Lm1hdC1idXR0b24tZGlzYWJsZWRbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWZhYi5tYXQtd2Fybi5tYXQtYnV0dG9uLWRpc2FibGVkW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1mYWIubWF0LWJ1dHRvbi1kaXNhYmxlZC5tYXQtYnV0dG9uLWRpc2FibGVkW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1taW5pLWZhYi5tYXQtcHJpbWFyeS5tYXQtYnV0dG9uLWRpc2FibGVkW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1taW5pLWZhYi5tYXQtYWNjZW50Lm1hdC1idXR0b24tZGlzYWJsZWRbX25nY29udGVudC0lQ09NUCVdLCAubWF0LW1pbmktZmFiLm1hdC13YXJuLm1hdC1idXR0b24tZGlzYWJsZWRbX25nY29udGVudC0lQ09NUCVdLCAubWF0LW1pbmktZmFiLm1hdC1idXR0b24tZGlzYWJsZWQubWF0LWJ1dHRvbi1kaXNhYmxlZFtfbmdjb250ZW50LSVDT01QJV17Y29sb3I6cmdiYSgwLDAsMCwuMjYpfS5tYXQtZmxhdC1idXR0b24ubWF0LXByaW1hcnlbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXJhaXNlZC1idXR0b24ubWF0LXByaW1hcnlbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWZhYi5tYXQtcHJpbWFyeVtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtbWluaS1mYWIubWF0LXByaW1hcnlbX25nY29udGVudC0lQ09NUCVde2JhY2tncm91bmQtY29sb3I6I2Y1N2MwMH0ubWF0LWZsYXQtYnV0dG9uLm1hdC1hY2NlbnRbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXJhaXNlZC1idXR0b24ubWF0LWFjY2VudFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtZmFiLm1hdC1hY2NlbnRbX25nY29udGVudC0lQ09NUCVdLCAubWF0LW1pbmktZmFiLm1hdC1hY2NlbnRbX25nY29udGVudC0lQ09NUCVde2JhY2tncm91bmQtY29sb3I6I2ZmOTgwMH0ubWF0LWZsYXQtYnV0dG9uLm1hdC13YXJuW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1yYWlzZWQtYnV0dG9uLm1hdC13YXJuW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1mYWIubWF0LXdhcm5bX25nY29udGVudC0lQ09NUCVdLCAubWF0LW1pbmktZmFiLm1hdC13YXJuW19uZ2NvbnRlbnQtJUNPTVAlXXtiYWNrZ3JvdW5kLWNvbG9yOiNmNDQzMzZ9Lm1hdC1mbGF0LWJ1dHRvbi5tYXQtcHJpbWFyeS5tYXQtYnV0dG9uLWRpc2FibGVkW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1mbGF0LWJ1dHRvbi5tYXQtYWNjZW50Lm1hdC1idXR0b24tZGlzYWJsZWRbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWZsYXQtYnV0dG9uLm1hdC13YXJuLm1hdC1idXR0b24tZGlzYWJsZWRbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWZsYXQtYnV0dG9uLm1hdC1idXR0b24tZGlzYWJsZWQubWF0LWJ1dHRvbi1kaXNhYmxlZFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtcmFpc2VkLWJ1dHRvbi5tYXQtcHJpbWFyeS5tYXQtYnV0dG9uLWRpc2FibGVkW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1yYWlzZWQtYnV0dG9uLm1hdC1hY2NlbnQubWF0LWJ1dHRvbi1kaXNhYmxlZFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtcmFpc2VkLWJ1dHRvbi5tYXQtd2Fybi5tYXQtYnV0dG9uLWRpc2FibGVkW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1yYWlzZWQtYnV0dG9uLm1hdC1idXR0b24tZGlzYWJsZWQubWF0LWJ1dHRvbi1kaXNhYmxlZFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtZmFiLm1hdC1wcmltYXJ5Lm1hdC1idXR0b24tZGlzYWJsZWRbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWZhYi5tYXQtYWNjZW50Lm1hdC1idXR0b24tZGlzYWJsZWRbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWZhYi5tYXQtd2Fybi5tYXQtYnV0dG9uLWRpc2FibGVkW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1mYWIubWF0LWJ1dHRvbi1kaXNhYmxlZC5tYXQtYnV0dG9uLWRpc2FibGVkW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1taW5pLWZhYi5tYXQtcHJpbWFyeS5tYXQtYnV0dG9uLWRpc2FibGVkW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1taW5pLWZhYi5tYXQtYWNjZW50Lm1hdC1idXR0b24tZGlzYWJsZWRbX25nY29udGVudC0lQ09NUCVdLCAubWF0LW1pbmktZmFiLm1hdC13YXJuLm1hdC1idXR0b24tZGlzYWJsZWRbX25nY29udGVudC0lQ09NUCVdLCAubWF0LW1pbmktZmFiLm1hdC1idXR0b24tZGlzYWJsZWQubWF0LWJ1dHRvbi1kaXNhYmxlZFtfbmdjb250ZW50LSVDT01QJV17YmFja2dyb3VuZC1jb2xvcjpyZ2JhKDAsMCwwLC4xMil9Lm1hdC1mbGF0LWJ1dHRvbi5tYXQtcHJpbWFyeVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXJpcHBsZS1lbGVtZW50W19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1yYWlzZWQtYnV0dG9uLm1hdC1wcmltYXJ5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtcmlwcGxlLWVsZW1lbnRbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWZhYi5tYXQtcHJpbWFyeVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXJpcHBsZS1lbGVtZW50W19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1taW5pLWZhYi5tYXQtcHJpbWFyeVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXJpcHBsZS1lbGVtZW50W19uZ2NvbnRlbnQtJUNPTVAlXXtiYWNrZ3JvdW5kLWNvbG9yOnJnYmEoMjU1LDI1NSwyNTUsLjEpfS5tYXQtZmxhdC1idXR0b24ubWF0LWFjY2VudFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXJpcHBsZS1lbGVtZW50W19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1yYWlzZWQtYnV0dG9uLm1hdC1hY2NlbnRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1yaXBwbGUtZWxlbWVudFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtZmFiLm1hdC1hY2NlbnRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1yaXBwbGUtZWxlbWVudFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtbWluaS1mYWIubWF0LWFjY2VudFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXJpcHBsZS1lbGVtZW50W19uZ2NvbnRlbnQtJUNPTVAlXXtiYWNrZ3JvdW5kLWNvbG9yOnJnYmEoMjU1LDI1NSwyNTUsLjEpfS5tYXQtZmxhdC1idXR0b24ubWF0LXdhcm5bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1yaXBwbGUtZWxlbWVudFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtcmFpc2VkLWJ1dHRvbi5tYXQtd2Fybltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXJpcHBsZS1lbGVtZW50W19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1mYWIubWF0LXdhcm5bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1yaXBwbGUtZWxlbWVudFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtbWluaS1mYWIubWF0LXdhcm5bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1yaXBwbGUtZWxlbWVudFtfbmdjb250ZW50LSVDT01QJV17YmFja2dyb3VuZC1jb2xvcjpyZ2JhKDI1NSwyNTUsMjU1LC4xKX0ubWF0LXN0cm9rZWQtYnV0dG9uW19uZ2NvbnRlbnQtJUNPTVAlXTpub3QoW2NsYXNzKj1tYXQtZWxldmF0aW9uLXpdKSwgLm1hdC1mbGF0LWJ1dHRvbltfbmdjb250ZW50LSVDT01QJV06bm90KFtjbGFzcyo9bWF0LWVsZXZhdGlvbi16XSl7Ym94LXNoYWRvdzowcHggMHB4IDBweCAwcHggcmdiYSgwLCAwLCAwLCAwLjIpLDBweCAwcHggMHB4IDBweCByZ2JhKDAsIDAsIDAsIDAuMTQpLDBweCAwcHggMHB4IDBweCByZ2JhKDAsIDAsIDAsIDAuMTIpfS5tYXQtcmFpc2VkLWJ1dHRvbltfbmdjb250ZW50LSVDT01QJV06bm90KFtjbGFzcyo9bWF0LWVsZXZhdGlvbi16XSl7Ym94LXNoYWRvdzowcHggM3B4IDFweCAtMnB4IHJnYmEoMCwgMCwgMCwgMC4yKSwwcHggMnB4IDJweCAwcHggcmdiYSgwLCAwLCAwLCAwLjE0KSwwcHggMXB4IDVweCAwcHggcmdiYSgwLCAwLCAwLCAwLjEyKX0ubWF0LXJhaXNlZC1idXR0b25bX25nY29udGVudC0lQ09NUCVdOm5vdCgubWF0LWJ1dHRvbi1kaXNhYmxlZCk6YWN0aXZlOm5vdChbY2xhc3MqPW1hdC1lbGV2YXRpb24tel0pe2JveC1zaGFkb3c6MHB4IDVweCA1cHggLTNweCByZ2JhKDAsIDAsIDAsIDAuMiksMHB4IDhweCAxMHB4IDFweCByZ2JhKDAsIDAsIDAsIDAuMTQpLDBweCAzcHggMTRweCAycHggcmdiYSgwLCAwLCAwLCAwLjEyKX0ubWF0LXJhaXNlZC1idXR0b24ubWF0LWJ1dHRvbi1kaXNhYmxlZFtfbmdjb250ZW50LSVDT01QJV06bm90KFtjbGFzcyo9bWF0LWVsZXZhdGlvbi16XSl7Ym94LXNoYWRvdzowcHggMHB4IDBweCAwcHggcmdiYSgwLCAwLCAwLCAwLjIpLDBweCAwcHggMHB4IDBweCByZ2JhKDAsIDAsIDAsIDAuMTQpLDBweCAwcHggMHB4IDBweCByZ2JhKDAsIDAsIDAsIDAuMTIpfS5tYXQtZmFiW19uZ2NvbnRlbnQtJUNPTVAlXTpub3QoW2NsYXNzKj1tYXQtZWxldmF0aW9uLXpdKSwgLm1hdC1taW5pLWZhYltfbmdjb250ZW50LSVDT01QJV06bm90KFtjbGFzcyo9bWF0LWVsZXZhdGlvbi16XSl7Ym94LXNoYWRvdzowcHggM3B4IDVweCAtMXB4IHJnYmEoMCwgMCwgMCwgMC4yKSwwcHggNnB4IDEwcHggMHB4IHJnYmEoMCwgMCwgMCwgMC4xNCksMHB4IDFweCAxOHB4IDBweCByZ2JhKDAsIDAsIDAsIDAuMTIpfS5tYXQtZmFiW19uZ2NvbnRlbnQtJUNPTVAlXTpub3QoLm1hdC1idXR0b24tZGlzYWJsZWQpOmFjdGl2ZTpub3QoW2NsYXNzKj1tYXQtZWxldmF0aW9uLXpdKSwgLm1hdC1taW5pLWZhYltfbmdjb250ZW50LSVDT01QJV06bm90KC5tYXQtYnV0dG9uLWRpc2FibGVkKTphY3RpdmU6bm90KFtjbGFzcyo9bWF0LWVsZXZhdGlvbi16XSl7Ym94LXNoYWRvdzowcHggN3B4IDhweCAtNHB4IHJnYmEoMCwgMCwgMCwgMC4yKSwwcHggMTJweCAxN3B4IDJweCByZ2JhKDAsIDAsIDAsIDAuMTQpLDBweCA1cHggMjJweCA0cHggcmdiYSgwLCAwLCAwLCAwLjEyKX0ubWF0LWZhYi5tYXQtYnV0dG9uLWRpc2FibGVkW19uZ2NvbnRlbnQtJUNPTVAlXTpub3QoW2NsYXNzKj1tYXQtZWxldmF0aW9uLXpdKSwgLm1hdC1taW5pLWZhYi5tYXQtYnV0dG9uLWRpc2FibGVkW19uZ2NvbnRlbnQtJUNPTVAlXTpub3QoW2NsYXNzKj1tYXQtZWxldmF0aW9uLXpdKXtib3gtc2hhZG93OjBweCAwcHggMHB4IDBweCByZ2JhKDAsIDAsIDAsIDAuMiksMHB4IDBweCAwcHggMHB4IHJnYmEoMCwgMCwgMCwgMC4xNCksMHB4IDBweCAwcHggMHB4IHJnYmEoMCwgMCwgMCwgMC4xMil9Lm1hdC1idXR0b24tdG9nZ2xlLXN0YW5kYWxvbmVbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWJ1dHRvbi10b2dnbGUtZ3JvdXBbX25nY29udGVudC0lQ09NUCVde2JveC1zaGFkb3c6MHB4IDNweCAxcHggLTJweCByZ2JhKDAsIDAsIDAsIDAuMiksMHB4IDJweCAycHggMHB4IHJnYmEoMCwgMCwgMCwgMC4xNCksMHB4IDFweCA1cHggMHB4IHJnYmEoMCwgMCwgMCwgMC4xMil9Lm1hdC1idXR0b24tdG9nZ2xlLXN0YW5kYWxvbmUubWF0LWJ1dHRvbi10b2dnbGUtYXBwZWFyYW5jZS1zdGFuZGFyZFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtYnV0dG9uLXRvZ2dsZS1ncm91cC1hcHBlYXJhbmNlLXN0YW5kYXJkW19uZ2NvbnRlbnQtJUNPTVAlXXtib3gtc2hhZG93Om5vbmV9Lm1hdC1idXR0b24tdG9nZ2xlW19uZ2NvbnRlbnQtJUNPTVAlXXtjb2xvcjpyZ2JhKDAsMCwwLC4zOCl9Lm1hdC1idXR0b24tdG9nZ2xlW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtYnV0dG9uLXRvZ2dsZS1mb2N1cy1vdmVybGF5W19uZ2NvbnRlbnQtJUNPTVAlXXtiYWNrZ3JvdW5kLWNvbG9yOnJnYmEoMCwwLDAsLjEyKX0ubWF0LWJ1dHRvbi10b2dnbGUtYXBwZWFyYW5jZS1zdGFuZGFyZFtfbmdjb250ZW50LSVDT01QJV17Y29sb3I6IzIxMjEyMTtiYWNrZ3JvdW5kOiNmZmZ9Lm1hdC1idXR0b24tdG9nZ2xlLWFwcGVhcmFuY2Utc3RhbmRhcmRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1idXR0b24tdG9nZ2xlLWZvY3VzLW92ZXJsYXlbX25nY29udGVudC0lQ09NUCVde2JhY2tncm91bmQtY29sb3I6IzAwMH0ubWF0LWJ1dHRvbi10b2dnbGUtZ3JvdXAtYXBwZWFyYW5jZS1zdGFuZGFyZFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWJ1dHRvbi10b2dnbGVbX25nY29udGVudC0lQ09NUCVdICsgLm1hdC1idXR0b24tdG9nZ2xlW19uZ2NvbnRlbnQtJUNPTVAlXXtib3JkZXItbGVmdDpzb2xpZCAxcHggcmdiYSgwLDAsMCwuMTIpfVtkaXI9cnRsXVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWJ1dHRvbi10b2dnbGUtZ3JvdXAtYXBwZWFyYW5jZS1zdGFuZGFyZFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWJ1dHRvbi10b2dnbGVbX25nY29udGVudC0lQ09NUCVdICsgLm1hdC1idXR0b24tdG9nZ2xlW19uZ2NvbnRlbnQtJUNPTVAlXXtib3JkZXItbGVmdDpub25lO2JvcmRlci1yaWdodDpzb2xpZCAxcHggcmdiYSgwLDAsMCwuMTIpfS5tYXQtYnV0dG9uLXRvZ2dsZS1ncm91cC1hcHBlYXJhbmNlLXN0YW5kYXJkLm1hdC1idXR0b24tdG9nZ2xlLXZlcnRpY2FsW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtYnV0dG9uLXRvZ2dsZVtfbmdjb250ZW50LSVDT01QJV0gKyAubWF0LWJ1dHRvbi10b2dnbGVbX25nY29udGVudC0lQ09NUCVde2JvcmRlci1sZWZ0Om5vbmU7Ym9yZGVyLXJpZ2h0Om5vbmU7Ym9yZGVyLXRvcDpzb2xpZCAxcHggcmdiYSgwLDAsMCwuMTIpfS5tYXQtYnV0dG9uLXRvZ2dsZS1jaGVja2VkW19uZ2NvbnRlbnQtJUNPTVAlXXtiYWNrZ3JvdW5kLWNvbG9yOiNlMGUwZTA7Y29sb3I6IzYxNjE2MX0ubWF0LWJ1dHRvbi10b2dnbGUtY2hlY2tlZC5tYXQtYnV0dG9uLXRvZ2dsZS1hcHBlYXJhbmNlLXN0YW5kYXJkW19uZ2NvbnRlbnQtJUNPTVAlXXtjb2xvcjojMjEyMTIxfS5tYXQtYnV0dG9uLXRvZ2dsZS1kaXNhYmxlZFtfbmdjb250ZW50LSVDT01QJV17Y29sb3I6cmdiYSgwLDAsMCwuMjYpO2JhY2tncm91bmQtY29sb3I6I2VlZX0ubWF0LWJ1dHRvbi10b2dnbGUtZGlzYWJsZWQubWF0LWJ1dHRvbi10b2dnbGUtYXBwZWFyYW5jZS1zdGFuZGFyZFtfbmdjb250ZW50LSVDT01QJV17YmFja2dyb3VuZDojZmZmfS5tYXQtYnV0dG9uLXRvZ2dsZS1kaXNhYmxlZC5tYXQtYnV0dG9uLXRvZ2dsZS1jaGVja2VkW19uZ2NvbnRlbnQtJUNPTVAlXXtiYWNrZ3JvdW5kLWNvbG9yOiNiZGJkYmR9Lm1hdC1idXR0b24tdG9nZ2xlLXN0YW5kYWxvbmUubWF0LWJ1dHRvbi10b2dnbGUtYXBwZWFyYW5jZS1zdGFuZGFyZFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtYnV0dG9uLXRvZ2dsZS1ncm91cC1hcHBlYXJhbmNlLXN0YW5kYXJkW19uZ2NvbnRlbnQtJUNPTVAlXXtib3JkZXI6c29saWQgMXB4IHJnYmEoMCwwLDAsLjEyKX0ubWF0LWJ1dHRvbi10b2dnbGUtYXBwZWFyYW5jZS1zdGFuZGFyZFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWJ1dHRvbi10b2dnbGUtbGFiZWwtY29udGVudFtfbmdjb250ZW50LSVDT01QJV17bGluZS1oZWlnaHQ6NDhweH0ubWF0LWNhcmRbX25nY29udGVudC0lQ09NUCVde2JhY2tncm91bmQ6I2ZmZjtjb2xvcjojMjEyMTIxfS5tYXQtY2FyZFtfbmdjb250ZW50LSVDT01QJV06bm90KFtjbGFzcyo9bWF0LWVsZXZhdGlvbi16XSl7Ym94LXNoYWRvdzowcHggMnB4IDFweCAtMXB4IHJnYmEoMCwgMCwgMCwgMC4yKSwwcHggMXB4IDFweCAwcHggcmdiYSgwLCAwLCAwLCAwLjE0KSwwcHggMXB4IDNweCAwcHggcmdiYSgwLCAwLCAwLCAwLjEyKX0ubWF0LWNhcmQubWF0LWNhcmQtZmxhdFtfbmdjb250ZW50LSVDT01QJV06bm90KFtjbGFzcyo9bWF0LWVsZXZhdGlvbi16XSl7Ym94LXNoYWRvdzowcHggMHB4IDBweCAwcHggcmdiYSgwLCAwLCAwLCAwLjIpLDBweCAwcHggMHB4IDBweCByZ2JhKDAsIDAsIDAsIDAuMTQpLDBweCAwcHggMHB4IDBweCByZ2JhKDAsIDAsIDAsIDAuMTIpfS5tYXQtY2FyZC1zdWJ0aXRsZVtfbmdjb250ZW50LSVDT01QJV17Y29sb3I6IzYxNjE2MX0ubWF0LWNoZWNrYm94LWZyYW1lW19uZ2NvbnRlbnQtJUNPTVAlXXtib3JkZXItY29sb3I6IzYxNjE2MX0ubWF0LWNoZWNrYm94LWNoZWNrbWFya1tfbmdjb250ZW50LSVDT01QJV17ZmlsbDojZmFmYWZhfS5tYXQtY2hlY2tib3gtY2hlY2ttYXJrLXBhdGhbX25nY29udGVudC0lQ09NUCVde3N0cm9rZTojZmFmYWZhICFpbXBvcnRhbnR9Lm1hdC1jaGVja2JveC1taXhlZG1hcmtbX25nY29udGVudC0lQ09NUCVde2JhY2tncm91bmQtY29sb3I6I2ZhZmFmYX0ubWF0LWNoZWNrYm94LWluZGV0ZXJtaW5hdGUubWF0LXByaW1hcnlbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1jaGVja2JveC1iYWNrZ3JvdW5kW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1jaGVja2JveC1jaGVja2VkLm1hdC1wcmltYXJ5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtY2hlY2tib3gtYmFja2dyb3VuZFtfbmdjb250ZW50LSVDT01QJV17YmFja2dyb3VuZC1jb2xvcjojZjU3YzAwfS5tYXQtY2hlY2tib3gtaW5kZXRlcm1pbmF0ZS5tYXQtYWNjZW50W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtY2hlY2tib3gtYmFja2dyb3VuZFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtY2hlY2tib3gtY2hlY2tlZC5tYXQtYWNjZW50W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtY2hlY2tib3gtYmFja2dyb3VuZFtfbmdjb250ZW50LSVDT01QJV17YmFja2dyb3VuZC1jb2xvcjojZmY5ODAwfS5tYXQtY2hlY2tib3gtaW5kZXRlcm1pbmF0ZS5tYXQtd2Fybltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWNoZWNrYm94LWJhY2tncm91bmRbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWNoZWNrYm94LWNoZWNrZWQubWF0LXdhcm5bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1jaGVja2JveC1iYWNrZ3JvdW5kW19uZ2NvbnRlbnQtJUNPTVAlXXtiYWNrZ3JvdW5kLWNvbG9yOiNmNDQzMzZ9Lm1hdC1jaGVja2JveC1kaXNhYmxlZC5tYXQtY2hlY2tib3gtY2hlY2tlZFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWNoZWNrYm94LWJhY2tncm91bmRbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWNoZWNrYm94LWRpc2FibGVkLm1hdC1jaGVja2JveC1pbmRldGVybWluYXRlW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtY2hlY2tib3gtYmFja2dyb3VuZFtfbmdjb250ZW50LSVDT01QJV17YmFja2dyb3VuZC1jb2xvcjojYjBiMGIwfS5tYXQtY2hlY2tib3gtZGlzYWJsZWRbX25nY29udGVudC0lQ09NUCVdOm5vdCgubWF0LWNoZWNrYm94LWNoZWNrZWQpICAgLm1hdC1jaGVja2JveC1mcmFtZVtfbmdjb250ZW50LSVDT01QJV17Ym9yZGVyLWNvbG9yOiNiMGIwYjB9Lm1hdC1jaGVja2JveC1kaXNhYmxlZFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWNoZWNrYm94LWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXtjb2xvcjojNjE2MTYxfS5tYXQtY2hlY2tib3hbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1yaXBwbGUtZWxlbWVudFtfbmdjb250ZW50LSVDT01QJV17YmFja2dyb3VuZC1jb2xvcjojMDAwfS5tYXQtY2hlY2tib3gtY2hlY2tlZFtfbmdjb250ZW50LSVDT01QJV06bm90KC5tYXQtY2hlY2tib3gtZGlzYWJsZWQpLm1hdC1wcmltYXJ5ICAgLm1hdC1yaXBwbGUtZWxlbWVudFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtY2hlY2tib3hbX25nY29udGVudC0lQ09NUCVdOmFjdGl2ZTpub3QoLm1hdC1jaGVja2JveC1kaXNhYmxlZCkubWF0LXByaW1hcnkgICAubWF0LXJpcHBsZS1lbGVtZW50W19uZ2NvbnRlbnQtJUNPTVAlXXtiYWNrZ3JvdW5kOiNmNTdjMDB9Lm1hdC1jaGVja2JveC1jaGVja2VkW19uZ2NvbnRlbnQtJUNPTVAlXTpub3QoLm1hdC1jaGVja2JveC1kaXNhYmxlZCkubWF0LWFjY2VudCAgIC5tYXQtcmlwcGxlLWVsZW1lbnRbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWNoZWNrYm94W19uZ2NvbnRlbnQtJUNPTVAlXTphY3RpdmU6bm90KC5tYXQtY2hlY2tib3gtZGlzYWJsZWQpLm1hdC1hY2NlbnQgICAubWF0LXJpcHBsZS1lbGVtZW50W19uZ2NvbnRlbnQtJUNPTVAlXXtiYWNrZ3JvdW5kOiNmZjk4MDB9Lm1hdC1jaGVja2JveC1jaGVja2VkW19uZ2NvbnRlbnQtJUNPTVAlXTpub3QoLm1hdC1jaGVja2JveC1kaXNhYmxlZCkubWF0LXdhcm4gICAubWF0LXJpcHBsZS1lbGVtZW50W19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1jaGVja2JveFtfbmdjb250ZW50LSVDT01QJV06YWN0aXZlOm5vdCgubWF0LWNoZWNrYm94LWRpc2FibGVkKS5tYXQtd2FybiAgIC5tYXQtcmlwcGxlLWVsZW1lbnRbX25nY29udGVudC0lQ09NUCVde2JhY2tncm91bmQ6I2Y0NDMzNn0ubWF0LWNoaXAubWF0LXN0YW5kYXJkLWNoaXBbX25nY29udGVudC0lQ09NUCVde2JhY2tncm91bmQtY29sb3I6I2UwZTBlMDtjb2xvcjojMjEyMTIxfS5tYXQtY2hpcC5tYXQtc3RhbmRhcmQtY2hpcFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWNoaXAtcmVtb3ZlW19uZ2NvbnRlbnQtJUNPTVAlXXtjb2xvcjojMjEyMTIxO29wYWNpdHk6LjR9Lm1hdC1jaGlwLm1hdC1zdGFuZGFyZC1jaGlwW19uZ2NvbnRlbnQtJUNPTVAlXTpub3QoLm1hdC1jaGlwLWRpc2FibGVkKTphY3RpdmV7Ym94LXNoYWRvdzowcHggM3B4IDNweCAtMnB4IHJnYmEoMCwgMCwgMCwgMC4yKSwwcHggM3B4IDRweCAwcHggcmdiYSgwLCAwLCAwLCAwLjE0KSwwcHggMXB4IDhweCAwcHggcmdiYSgwLCAwLCAwLCAwLjEyKX0ubWF0LWNoaXAubWF0LXN0YW5kYXJkLWNoaXBbX25nY29udGVudC0lQ09NUCVdOm5vdCgubWF0LWNoaXAtZGlzYWJsZWQpICAgLm1hdC1jaGlwLXJlbW92ZVtfbmdjb250ZW50LSVDT01QJV06aG92ZXJ7b3BhY2l0eTouNTR9Lm1hdC1jaGlwLm1hdC1zdGFuZGFyZC1jaGlwLm1hdC1jaGlwLWRpc2FibGVkW19uZ2NvbnRlbnQtJUNPTVAlXXtvcGFjaXR5Oi40fS5tYXQtY2hpcC5tYXQtc3RhbmRhcmQtY2hpcFtfbmdjb250ZW50LSVDT01QJV06OmFmdGVye2JhY2tncm91bmQ6IzAwMH0ubWF0LWNoaXAubWF0LXN0YW5kYXJkLWNoaXAubWF0LWNoaXAtc2VsZWN0ZWQubWF0LXByaW1hcnlbX25nY29udGVudC0lQ09NUCVde2JhY2tncm91bmQtY29sb3I6I2Y1N2MwMDtjb2xvcjojZmZmfS5tYXQtY2hpcC5tYXQtc3RhbmRhcmQtY2hpcC5tYXQtY2hpcC1zZWxlY3RlZC5tYXQtcHJpbWFyeVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWNoaXAtcmVtb3ZlW19uZ2NvbnRlbnQtJUNPTVAlXXtjb2xvcjojZmZmO29wYWNpdHk6LjR9Lm1hdC1jaGlwLm1hdC1zdGFuZGFyZC1jaGlwLm1hdC1jaGlwLXNlbGVjdGVkLm1hdC1wcmltYXJ5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtcmlwcGxlLWVsZW1lbnRbX25nY29udGVudC0lQ09NUCVde2JhY2tncm91bmQtY29sb3I6cmdiYSgyNTUsMjU1LDI1NSwuMSl9Lm1hdC1jaGlwLm1hdC1zdGFuZGFyZC1jaGlwLm1hdC1jaGlwLXNlbGVjdGVkLm1hdC13YXJuW19uZ2NvbnRlbnQtJUNPTVAlXXtiYWNrZ3JvdW5kLWNvbG9yOiNmNDQzMzY7Y29sb3I6I2ZmZn0ubWF0LWNoaXAubWF0LXN0YW5kYXJkLWNoaXAubWF0LWNoaXAtc2VsZWN0ZWQubWF0LXdhcm5bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1jaGlwLXJlbW92ZVtfbmdjb250ZW50LSVDT01QJV17Y29sb3I6I2ZmZjtvcGFjaXR5Oi40fS5tYXQtY2hpcC5tYXQtc3RhbmRhcmQtY2hpcC5tYXQtY2hpcC1zZWxlY3RlZC5tYXQtd2Fybltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXJpcHBsZS1lbGVtZW50W19uZ2NvbnRlbnQtJUNPTVAlXXtiYWNrZ3JvdW5kLWNvbG9yOnJnYmEoMjU1LDI1NSwyNTUsLjEpfS5tYXQtY2hpcC5tYXQtc3RhbmRhcmQtY2hpcC5tYXQtY2hpcC1zZWxlY3RlZC5tYXQtYWNjZW50W19uZ2NvbnRlbnQtJUNPTVAlXXtiYWNrZ3JvdW5kLWNvbG9yOiNmZjk4MDA7Y29sb3I6I2ZmZn0ubWF0LWNoaXAubWF0LXN0YW5kYXJkLWNoaXAubWF0LWNoaXAtc2VsZWN0ZWQubWF0LWFjY2VudFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWNoaXAtcmVtb3ZlW19uZ2NvbnRlbnQtJUNPTVAlXXtjb2xvcjojZmZmO29wYWNpdHk6LjR9Lm1hdC1jaGlwLm1hdC1zdGFuZGFyZC1jaGlwLm1hdC1jaGlwLXNlbGVjdGVkLm1hdC1hY2NlbnRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1yaXBwbGUtZWxlbWVudFtfbmdjb250ZW50LSVDT01QJV17YmFja2dyb3VuZC1jb2xvcjpyZ2JhKDI1NSwyNTUsMjU1LC4xKX0ubWF0LXRhYmxlW19uZ2NvbnRlbnQtJUNPTVAlXXtiYWNrZ3JvdW5kOiNmZmZ9Lm1hdC10YWJsZVtfbmdjb250ZW50LSVDT01QJV0gICB0aGVhZFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdGFibGVbX25nY29udGVudC0lQ09NUCVdICAgdGJvZHlbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXRhYmxlW19uZ2NvbnRlbnQtJUNPTVAlXSAgIHRmb290W19uZ2NvbnRlbnQtJUNPTVAlXSwgbWF0LWhlYWRlci1yb3dbX25nY29udGVudC0lQ09NUCVdLCBtYXQtcm93W19uZ2NvbnRlbnQtJUNPTVAlXSwgbWF0LWZvb3Rlci1yb3dbX25nY29udGVudC0lQ09NUCVdLCBbbWF0LWhlYWRlci1yb3ddW19uZ2NvbnRlbnQtJUNPTVAlXSwgW21hdC1yb3ddW19uZ2NvbnRlbnQtJUNPTVAlXSwgW21hdC1mb290ZXItcm93XVtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdGFibGUtc3RpY2t5W19uZ2NvbnRlbnQtJUNPTVAlXXtiYWNrZ3JvdW5kOmluaGVyaXR9bWF0LXJvd1tfbmdjb250ZW50LSVDT01QJV0sIG1hdC1oZWFkZXItcm93W19uZ2NvbnRlbnQtJUNPTVAlXSwgbWF0LWZvb3Rlci1yb3dbX25nY29udGVudC0lQ09NUCVdLCB0aC5tYXQtaGVhZGVyLWNlbGxbX25nY29udGVudC0lQ09NUCVdLCB0ZC5tYXQtY2VsbFtfbmdjb250ZW50LSVDT01QJV0sIHRkLm1hdC1mb290ZXItY2VsbFtfbmdjb250ZW50LSVDT01QJV17Ym9yZGVyLWJvdHRvbS1jb2xvcjpyZ2JhKDAsMCwwLC4xMil9Lm1hdC1oZWFkZXItY2VsbFtfbmdjb250ZW50LSVDT01QJV17Y29sb3I6IzYxNjE2MX0ubWF0LWNlbGxbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWZvb3Rlci1jZWxsW19uZ2NvbnRlbnQtJUNPTVAlXXtjb2xvcjojMjEyMTIxfS5tYXQtY2FsZW5kYXItYXJyb3dbX25nY29udGVudC0lQ09NUCVde2JvcmRlci10b3AtY29sb3I6cmdiYSgwLDAsMCwuNTQpfS5tYXQtZGF0ZXBpY2tlci10b2dnbGVbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWRhdGVwaWNrZXItY29udGVudFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWNhbGVuZGFyLW5leHQtYnV0dG9uW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1kYXRlcGlja2VyLWNvbnRlbnRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1jYWxlbmRhci1wcmV2aW91cy1idXR0b25bX25nY29udGVudC0lQ09NUCVde2NvbG9yOnJnYmEoMCwwLDAsLjU0KX0ubWF0LWNhbGVuZGFyLXRhYmxlLWhlYWRlcltfbmdjb250ZW50LSVDT01QJV17Y29sb3I6cmdiYSgwLDAsMCwuMzgpfS5tYXQtY2FsZW5kYXItdGFibGUtaGVhZGVyLWRpdmlkZXJbX25nY29udGVudC0lQ09NUCVdOjphZnRlcntiYWNrZ3JvdW5kOnJnYmEoMCwwLDAsLjEyKX0ubWF0LWNhbGVuZGFyLWJvZHktbGFiZWxbX25nY29udGVudC0lQ09NUCVde2NvbG9yOiM2MTYxNjF9Lm1hdC1jYWxlbmRhci1ib2R5LWNlbGwtY29udGVudFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtZGF0ZS1yYW5nZS1pbnB1dC1zZXBhcmF0b3JbX25nY29udGVudC0lQ09NUCVde2NvbG9yOiMyMTIxMjE7Ym9yZGVyLWNvbG9yOnRyYW5zcGFyZW50fS5tYXQtY2FsZW5kYXItYm9keS1kaXNhYmxlZFtfbmdjb250ZW50LSVDT01QJV0gPiAubWF0LWNhbGVuZGFyLWJvZHktY2VsbC1jb250ZW50W19uZ2NvbnRlbnQtJUNPTVAlXTpub3QoLm1hdC1jYWxlbmRhci1ib2R5LXNlbGVjdGVkKTpub3QoLm1hdC1jYWxlbmRhci1ib2R5LWNvbXBhcmlzb24taWRlbnRpY2FsKXtjb2xvcjojNzU3NTc1fS5tYXQtZm9ybS1maWVsZC1kaXNhYmxlZFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWRhdGUtcmFuZ2UtaW5wdXQtc2VwYXJhdG9yW19uZ2NvbnRlbnQtJUNPTVAlXXtjb2xvcjojNzU3NTc1fS5tYXQtY2FsZW5kYXItYm9keS1jZWxsW19uZ2NvbnRlbnQtJUNPTVAlXTpub3QoLm1hdC1jYWxlbmRhci1ib2R5LWRpc2FibGVkKTpob3ZlciA+IC5tYXQtY2FsZW5kYXItYm9keS1jZWxsLWNvbnRlbnRbX25nY29udGVudC0lQ09NUCVdOm5vdCgubWF0LWNhbGVuZGFyLWJvZHktc2VsZWN0ZWQpOm5vdCgubWF0LWNhbGVuZGFyLWJvZHktY29tcGFyaXNvbi1pZGVudGljYWwpLCAuY2RrLWtleWJvYXJkLWZvY3VzZWRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1jYWxlbmRhci1ib2R5LWFjdGl2ZVtfbmdjb250ZW50LSVDT01QJV0gPiAubWF0LWNhbGVuZGFyLWJvZHktY2VsbC1jb250ZW50W19uZ2NvbnRlbnQtJUNPTVAlXTpub3QoLm1hdC1jYWxlbmRhci1ib2R5LXNlbGVjdGVkKTpub3QoLm1hdC1jYWxlbmRhci1ib2R5LWNvbXBhcmlzb24taWRlbnRpY2FsKSwgLmNkay1wcm9ncmFtLWZvY3VzZWRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1jYWxlbmRhci1ib2R5LWFjdGl2ZVtfbmdjb250ZW50LSVDT01QJV0gPiAubWF0LWNhbGVuZGFyLWJvZHktY2VsbC1jb250ZW50W19uZ2NvbnRlbnQtJUNPTVAlXTpub3QoLm1hdC1jYWxlbmRhci1ib2R5LXNlbGVjdGVkKTpub3QoLm1hdC1jYWxlbmRhci1ib2R5LWNvbXBhcmlzb24taWRlbnRpY2FsKXtiYWNrZ3JvdW5kLWNvbG9yOnJnYmEoMCwwLDAsLjA0KX0ubWF0LWNhbGVuZGFyLWJvZHktaW4tcHJldmlld1tfbmdjb250ZW50LSVDT01QJV17Y29sb3I6cmdiYSgwLDAsMCwuMjQpfS5tYXQtY2FsZW5kYXItYm9keS10b2RheVtfbmdjb250ZW50LSVDT01QJV06bm90KC5tYXQtY2FsZW5kYXItYm9keS1zZWxlY3RlZCk6bm90KC5tYXQtY2FsZW5kYXItYm9keS1jb21wYXJpc29uLWlkZW50aWNhbCl7Ym9yZGVyLWNvbG9yOnJnYmEoMCwwLDAsLjM4KX0ubWF0LWNhbGVuZGFyLWJvZHktZGlzYWJsZWRbX25nY29udGVudC0lQ09NUCVdID4gLm1hdC1jYWxlbmRhci1ib2R5LXRvZGF5W19uZ2NvbnRlbnQtJUNPTVAlXTpub3QoLm1hdC1jYWxlbmRhci1ib2R5LXNlbGVjdGVkKTpub3QoLm1hdC1jYWxlbmRhci1ib2R5LWNvbXBhcmlzb24taWRlbnRpY2FsKXtib3JkZXItY29sb3I6cmdiYSgwLDAsMCwuMTgpfS5tYXQtY2FsZW5kYXItYm9keS1pbi1yYW5nZVtfbmdjb250ZW50LSVDT01QJV06OmJlZm9yZXtiYWNrZ3JvdW5kOnJnYmEoMjQ1LDEyNCwwLC4yKX0ubWF0LWNhbGVuZGFyLWJvZHktY29tcGFyaXNvbi1pZGVudGljYWxbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWNhbGVuZGFyLWJvZHktaW4tY29tcGFyaXNvbi1yYW5nZVtfbmdjb250ZW50LSVDT01QJV06OmJlZm9yZXtiYWNrZ3JvdW5kOnJnYmEoMjQ5LDE3MSwwLC4yKX0ubWF0LWNhbGVuZGFyLWJvZHktY29tcGFyaXNvbi1icmlkZ2Utc3RhcnRbX25nY29udGVudC0lQ09NUCVdOjpiZWZvcmUsIFtkaXI9cnRsXVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWNhbGVuZGFyLWJvZHktY29tcGFyaXNvbi1icmlkZ2UtZW5kW19uZ2NvbnRlbnQtJUNPTVAlXTo6YmVmb3Jle2JhY2tncm91bmQ6bGluZWFyLWdyYWRpZW50KHRvIHJpZ2h0LCByZ2JhKDI0NSwgMTI0LCAwLCAwLjIpIDUwJSwgcmdiYSgyNDksIDE3MSwgMCwgMC4yKSA1MCUpfS5tYXQtY2FsZW5kYXItYm9keS1jb21wYXJpc29uLWJyaWRnZS1lbmRbX25nY29udGVudC0lQ09NUCVdOjpiZWZvcmUsIFtkaXI9cnRsXVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWNhbGVuZGFyLWJvZHktY29tcGFyaXNvbi1icmlkZ2Utc3RhcnRbX25nY29udGVudC0lQ09NUCVdOjpiZWZvcmV7YmFja2dyb3VuZDpsaW5lYXItZ3JhZGllbnQodG8gbGVmdCwgcmdiYSgyNDUsIDEyNCwgMCwgMC4yKSA1MCUsIHJnYmEoMjQ5LCAxNzEsIDAsIDAuMikgNTAlKX0ubWF0LWNhbGVuZGFyLWJvZHktaW4tcmFuZ2VbX25nY29udGVudC0lQ09NUCVdID4gLm1hdC1jYWxlbmRhci1ib2R5LWNvbXBhcmlzb24taWRlbnRpY2FsW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1jYWxlbmRhci1ib2R5LWluLWNvbXBhcmlzb24tcmFuZ2UubWF0LWNhbGVuZGFyLWJvZHktaW4tcmFuZ2VbX25nY29udGVudC0lQ09NUCVdOjphZnRlcntiYWNrZ3JvdW5kOiNhOGRhYjV9Lm1hdC1jYWxlbmRhci1ib2R5LWNvbXBhcmlzb24taWRlbnRpY2FsLm1hdC1jYWxlbmRhci1ib2R5LXNlbGVjdGVkW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1jYWxlbmRhci1ib2R5LWluLWNvbXBhcmlzb24tcmFuZ2VbX25nY29udGVudC0lQ09NUCVdID4gLm1hdC1jYWxlbmRhci1ib2R5LXNlbGVjdGVkW19uZ2NvbnRlbnQtJUNPTVAlXXtiYWNrZ3JvdW5kOiM0NmEzNWV9Lm1hdC1jYWxlbmRhci1ib2R5LXNlbGVjdGVkW19uZ2NvbnRlbnQtJUNPTVAlXXtiYWNrZ3JvdW5kLWNvbG9yOiNmNTdjMDA7Y29sb3I6I2ZmZn0ubWF0LWNhbGVuZGFyLWJvZHktZGlzYWJsZWRbX25nY29udGVudC0lQ09NUCVdID4gLm1hdC1jYWxlbmRhci1ib2R5LXNlbGVjdGVkW19uZ2NvbnRlbnQtJUNPTVAlXXtiYWNrZ3JvdW5kLWNvbG9yOnJnYmEoMjQ1LDEyNCwwLC40KX0ubWF0LWNhbGVuZGFyLWJvZHktdG9kYXkubWF0LWNhbGVuZGFyLWJvZHktc2VsZWN0ZWRbX25nY29udGVudC0lQ09NUCVde2JveC1zaGFkb3c6aW5zZXQgMCAwIDAgMXB4ICNmZmZ9Lm1hdC1kYXRlcGlja2VyLWNvbnRlbnRbX25nY29udGVudC0lQ09NUCVde2JveC1zaGFkb3c6MHB4IDJweCA0cHggLTFweCByZ2JhKDAsIDAsIDAsIDAuMiksMHB4IDRweCA1cHggMHB4IHJnYmEoMCwgMCwgMCwgMC4xNCksMHB4IDFweCAxMHB4IDBweCByZ2JhKDAsIDAsIDAsIDAuMTIpO2JhY2tncm91bmQtY29sb3I6I2ZmZjtjb2xvcjojMjEyMTIxfS5tYXQtZGF0ZXBpY2tlci1jb250ZW50Lm1hdC1hY2NlbnRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1jYWxlbmRhci1ib2R5LWluLXJhbmdlW19uZ2NvbnRlbnQtJUNPTVAlXTo6YmVmb3Jle2JhY2tncm91bmQ6cmdiYSgyNTUsMTUyLDAsLjIpfS5tYXQtZGF0ZXBpY2tlci1jb250ZW50Lm1hdC1hY2NlbnRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1jYWxlbmRhci1ib2R5LWNvbXBhcmlzb24taWRlbnRpY2FsW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1kYXRlcGlja2VyLWNvbnRlbnQubWF0LWFjY2VudFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWNhbGVuZGFyLWJvZHktaW4tY29tcGFyaXNvbi1yYW5nZVtfbmdjb250ZW50LSVDT01QJV06OmJlZm9yZXtiYWNrZ3JvdW5kOnJnYmEoMjQ5LDE3MSwwLC4yKX0ubWF0LWRhdGVwaWNrZXItY29udGVudC5tYXQtYWNjZW50W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtY2FsZW5kYXItYm9keS1jb21wYXJpc29uLWJyaWRnZS1zdGFydFtfbmdjb250ZW50LSVDT01QJV06OmJlZm9yZSwgLm1hdC1kYXRlcGlja2VyLWNvbnRlbnQubWF0LWFjY2VudFtfbmdjb250ZW50LSVDT01QJV0gICBbZGlyPXJ0bF1bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1jYWxlbmRhci1ib2R5LWNvbXBhcmlzb24tYnJpZGdlLWVuZFtfbmdjb250ZW50LSVDT01QJV06OmJlZm9yZXtiYWNrZ3JvdW5kOmxpbmVhci1ncmFkaWVudCh0byByaWdodCwgcmdiYSgyNTUsIDE1MiwgMCwgMC4yKSA1MCUsIHJnYmEoMjQ5LCAxNzEsIDAsIDAuMikgNTAlKX0ubWF0LWRhdGVwaWNrZXItY29udGVudC5tYXQtYWNjZW50W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtY2FsZW5kYXItYm9keS1jb21wYXJpc29uLWJyaWRnZS1lbmRbX25nY29udGVudC0lQ09NUCVdOjpiZWZvcmUsIC5tYXQtZGF0ZXBpY2tlci1jb250ZW50Lm1hdC1hY2NlbnRbX25nY29udGVudC0lQ09NUCVdICAgW2Rpcj1ydGxdW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtY2FsZW5kYXItYm9keS1jb21wYXJpc29uLWJyaWRnZS1zdGFydFtfbmdjb250ZW50LSVDT01QJV06OmJlZm9yZXtiYWNrZ3JvdW5kOmxpbmVhci1ncmFkaWVudCh0byBsZWZ0LCByZ2JhKDI1NSwgMTUyLCAwLCAwLjIpIDUwJSwgcmdiYSgyNDksIDE3MSwgMCwgMC4yKSA1MCUpfS5tYXQtZGF0ZXBpY2tlci1jb250ZW50Lm1hdC1hY2NlbnRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1jYWxlbmRhci1ib2R5LWluLXJhbmdlW19uZ2NvbnRlbnQtJUNPTVAlXSA+IC5tYXQtY2FsZW5kYXItYm9keS1jb21wYXJpc29uLWlkZW50aWNhbFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtZGF0ZXBpY2tlci1jb250ZW50Lm1hdC1hY2NlbnRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1jYWxlbmRhci1ib2R5LWluLWNvbXBhcmlzb24tcmFuZ2UubWF0LWNhbGVuZGFyLWJvZHktaW4tcmFuZ2VbX25nY29udGVudC0lQ09NUCVdOjphZnRlcntiYWNrZ3JvdW5kOiNhOGRhYjV9Lm1hdC1kYXRlcGlja2VyLWNvbnRlbnQubWF0LWFjY2VudFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWNhbGVuZGFyLWJvZHktY29tcGFyaXNvbi1pZGVudGljYWwubWF0LWNhbGVuZGFyLWJvZHktc2VsZWN0ZWRbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWRhdGVwaWNrZXItY29udGVudC5tYXQtYWNjZW50W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtY2FsZW5kYXItYm9keS1pbi1jb21wYXJpc29uLXJhbmdlW19uZ2NvbnRlbnQtJUNPTVAlXSA+IC5tYXQtY2FsZW5kYXItYm9keS1zZWxlY3RlZFtfbmdjb250ZW50LSVDT01QJV17YmFja2dyb3VuZDojNDZhMzVlfS5tYXQtZGF0ZXBpY2tlci1jb250ZW50Lm1hdC1hY2NlbnRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1jYWxlbmRhci1ib2R5LXNlbGVjdGVkW19uZ2NvbnRlbnQtJUNPTVAlXXtiYWNrZ3JvdW5kLWNvbG9yOiNmZjk4MDA7Y29sb3I6I2ZmZn0ubWF0LWRhdGVwaWNrZXItY29udGVudC5tYXQtYWNjZW50W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtY2FsZW5kYXItYm9keS1kaXNhYmxlZFtfbmdjb250ZW50LSVDT01QJV0gPiAubWF0LWNhbGVuZGFyLWJvZHktc2VsZWN0ZWRbX25nY29udGVudC0lQ09NUCVde2JhY2tncm91bmQtY29sb3I6cmdiYSgyNTUsMTUyLDAsLjQpfS5tYXQtZGF0ZXBpY2tlci1jb250ZW50Lm1hdC1hY2NlbnRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1jYWxlbmRhci1ib2R5LXRvZGF5Lm1hdC1jYWxlbmRhci1ib2R5LXNlbGVjdGVkW19uZ2NvbnRlbnQtJUNPTVAlXXtib3gtc2hhZG93Omluc2V0IDAgMCAwIDFweCAjZmZmfS5tYXQtZGF0ZXBpY2tlci1jb250ZW50Lm1hdC13YXJuW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtY2FsZW5kYXItYm9keS1pbi1yYW5nZVtfbmdjb250ZW50LSVDT01QJV06OmJlZm9yZXtiYWNrZ3JvdW5kOnJnYmEoMjQ0LDY3LDU0LC4yKX0ubWF0LWRhdGVwaWNrZXItY29udGVudC5tYXQtd2Fybltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWNhbGVuZGFyLWJvZHktY29tcGFyaXNvbi1pZGVudGljYWxbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWRhdGVwaWNrZXItY29udGVudC5tYXQtd2Fybltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWNhbGVuZGFyLWJvZHktaW4tY29tcGFyaXNvbi1yYW5nZVtfbmdjb250ZW50LSVDT01QJV06OmJlZm9yZXtiYWNrZ3JvdW5kOnJnYmEoMjQ5LDE3MSwwLC4yKX0ubWF0LWRhdGVwaWNrZXItY29udGVudC5tYXQtd2Fybltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWNhbGVuZGFyLWJvZHktY29tcGFyaXNvbi1icmlkZ2Utc3RhcnRbX25nY29udGVudC0lQ09NUCVdOjpiZWZvcmUsIC5tYXQtZGF0ZXBpY2tlci1jb250ZW50Lm1hdC13YXJuW19uZ2NvbnRlbnQtJUNPTVAlXSAgIFtkaXI9cnRsXVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWNhbGVuZGFyLWJvZHktY29tcGFyaXNvbi1icmlkZ2UtZW5kW19uZ2NvbnRlbnQtJUNPTVAlXTo6YmVmb3Jle2JhY2tncm91bmQ6bGluZWFyLWdyYWRpZW50KHRvIHJpZ2h0LCByZ2JhKDI0NCwgNjcsIDU0LCAwLjIpIDUwJSwgcmdiYSgyNDksIDE3MSwgMCwgMC4yKSA1MCUpfS5tYXQtZGF0ZXBpY2tlci1jb250ZW50Lm1hdC13YXJuW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtY2FsZW5kYXItYm9keS1jb21wYXJpc29uLWJyaWRnZS1lbmRbX25nY29udGVudC0lQ09NUCVdOjpiZWZvcmUsIC5tYXQtZGF0ZXBpY2tlci1jb250ZW50Lm1hdC13YXJuW19uZ2NvbnRlbnQtJUNPTVAlXSAgIFtkaXI9cnRsXVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWNhbGVuZGFyLWJvZHktY29tcGFyaXNvbi1icmlkZ2Utc3RhcnRbX25nY29udGVudC0lQ09NUCVdOjpiZWZvcmV7YmFja2dyb3VuZDpsaW5lYXItZ3JhZGllbnQodG8gbGVmdCwgcmdiYSgyNDQsIDY3LCA1NCwgMC4yKSA1MCUsIHJnYmEoMjQ5LCAxNzEsIDAsIDAuMikgNTAlKX0ubWF0LWRhdGVwaWNrZXItY29udGVudC5tYXQtd2Fybltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWNhbGVuZGFyLWJvZHktaW4tcmFuZ2VbX25nY29udGVudC0lQ09NUCVdID4gLm1hdC1jYWxlbmRhci1ib2R5LWNvbXBhcmlzb24taWRlbnRpY2FsW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1kYXRlcGlja2VyLWNvbnRlbnQubWF0LXdhcm5bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1jYWxlbmRhci1ib2R5LWluLWNvbXBhcmlzb24tcmFuZ2UubWF0LWNhbGVuZGFyLWJvZHktaW4tcmFuZ2VbX25nY29udGVudC0lQ09NUCVdOjphZnRlcntiYWNrZ3JvdW5kOiNhOGRhYjV9Lm1hdC1kYXRlcGlja2VyLWNvbnRlbnQubWF0LXdhcm5bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1jYWxlbmRhci1ib2R5LWNvbXBhcmlzb24taWRlbnRpY2FsLm1hdC1jYWxlbmRhci1ib2R5LXNlbGVjdGVkW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1kYXRlcGlja2VyLWNvbnRlbnQubWF0LXdhcm5bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1jYWxlbmRhci1ib2R5LWluLWNvbXBhcmlzb24tcmFuZ2VbX25nY29udGVudC0lQ09NUCVdID4gLm1hdC1jYWxlbmRhci1ib2R5LXNlbGVjdGVkW19uZ2NvbnRlbnQtJUNPTVAlXXtiYWNrZ3JvdW5kOiM0NmEzNWV9Lm1hdC1kYXRlcGlja2VyLWNvbnRlbnQubWF0LXdhcm5bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1jYWxlbmRhci1ib2R5LXNlbGVjdGVkW19uZ2NvbnRlbnQtJUNPTVAlXXtiYWNrZ3JvdW5kLWNvbG9yOiNmNDQzMzY7Y29sb3I6I2ZmZn0ubWF0LWRhdGVwaWNrZXItY29udGVudC5tYXQtd2Fybltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWNhbGVuZGFyLWJvZHktZGlzYWJsZWRbX25nY29udGVudC0lQ09NUCVdID4gLm1hdC1jYWxlbmRhci1ib2R5LXNlbGVjdGVkW19uZ2NvbnRlbnQtJUNPTVAlXXtiYWNrZ3JvdW5kLWNvbG9yOnJnYmEoMjQ0LDY3LDU0LC40KX0ubWF0LWRhdGVwaWNrZXItY29udGVudC5tYXQtd2Fybltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWNhbGVuZGFyLWJvZHktdG9kYXkubWF0LWNhbGVuZGFyLWJvZHktc2VsZWN0ZWRbX25nY29udGVudC0lQ09NUCVde2JveC1zaGFkb3c6aW5zZXQgMCAwIDAgMXB4ICNmZmZ9Lm1hdC1kYXRlcGlja2VyLWNvbnRlbnQtdG91Y2hbX25nY29udGVudC0lQ09NUCVde2JveC1zaGFkb3c6MHB4IDBweCAwcHggMHB4IHJnYmEoMCwgMCwgMCwgMC4yKSwwcHggMHB4IDBweCAwcHggcmdiYSgwLCAwLCAwLCAwLjE0KSwwcHggMHB4IDBweCAwcHggcmdiYSgwLCAwLCAwLCAwLjEyKX0ubWF0LWRhdGVwaWNrZXItdG9nZ2xlLWFjdGl2ZVtfbmdjb250ZW50LSVDT01QJV17Y29sb3I6I2Y1N2MwMH0ubWF0LWRhdGVwaWNrZXItdG9nZ2xlLWFjdGl2ZS5tYXQtYWNjZW50W19uZ2NvbnRlbnQtJUNPTVAlXXtjb2xvcjojZmY5ODAwfS5tYXQtZGF0ZXBpY2tlci10b2dnbGUtYWN0aXZlLm1hdC13YXJuW19uZ2NvbnRlbnQtJUNPTVAlXXtjb2xvcjojZjQ0MzM2fS5tYXQtZGF0ZS1yYW5nZS1pbnB1dC1pbm5lcltkaXNhYmxlZF1bX25nY29udGVudC0lQ09NUCVde2NvbG9yOiM3NTc1NzV9Lm1hdC1kaWFsb2ctY29udGFpbmVyW19uZ2NvbnRlbnQtJUNPTVAlXXtib3gtc2hhZG93OjBweCAxMXB4IDE1cHggLTdweCByZ2JhKDAsIDAsIDAsIDAuMiksMHB4IDI0cHggMzhweCAzcHggcmdiYSgwLCAwLCAwLCAwLjE0KSwwcHggOXB4IDQ2cHggOHB4IHJnYmEoMCwgMCwgMCwgMC4xMik7YmFja2dyb3VuZDojZmZmO2NvbG9yOiMyMTIxMjF9Lm1hdC1kaXZpZGVyW19uZ2NvbnRlbnQtJUNPTVAlXXtib3JkZXItdG9wLWNvbG9yOnJnYmEoMCwwLDAsLjEyKX0ubWF0LWRpdmlkZXItdmVydGljYWxbX25nY29udGVudC0lQ09NUCVde2JvcmRlci1yaWdodC1jb2xvcjpyZ2JhKDAsMCwwLC4xMil9Lm1hdC1leHBhbnNpb24tcGFuZWxbX25nY29udGVudC0lQ09NUCVde2JhY2tncm91bmQ6I2ZmZjtjb2xvcjojMjEyMTIxfS5tYXQtZXhwYW5zaW9uLXBhbmVsW19uZ2NvbnRlbnQtJUNPTVAlXTpub3QoW2NsYXNzKj1tYXQtZWxldmF0aW9uLXpdKXtib3gtc2hhZG93OjBweCAzcHggMXB4IC0ycHggcmdiYSgwLCAwLCAwLCAwLjIpLDBweCAycHggMnB4IDBweCByZ2JhKDAsIDAsIDAsIDAuMTQpLDBweCAxcHggNXB4IDBweCByZ2JhKDAsIDAsIDAsIDAuMTIpfS5tYXQtYWN0aW9uLXJvd1tfbmdjb250ZW50LSVDT01QJV17Ym9yZGVyLXRvcC1jb2xvcjpyZ2JhKDAsMCwwLC4xMil9Lm1hdC1leHBhbnNpb24tcGFuZWxbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1leHBhbnNpb24tcGFuZWwtaGVhZGVyLmNkay1rZXlib2FyZC1mb2N1c2VkW19uZ2NvbnRlbnQtJUNPTVAlXTpub3QoW2FyaWEtZGlzYWJsZWQ9dHJ1ZV0pLCAubWF0LWV4cGFuc2lvbi1wYW5lbFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWV4cGFuc2lvbi1wYW5lbC1oZWFkZXIuY2RrLXByb2dyYW0tZm9jdXNlZFtfbmdjb250ZW50LSVDT01QJV06bm90KFthcmlhLWRpc2FibGVkPXRydWVdKSwgLm1hdC1leHBhbnNpb24tcGFuZWxbX25nY29udGVudC0lQ09NUCVdOm5vdCgubWF0LWV4cGFuZGVkKSAgIC5tYXQtZXhwYW5zaW9uLXBhbmVsLWhlYWRlcltfbmdjb250ZW50LSVDT01QJV06aG92ZXI6bm90KFthcmlhLWRpc2FibGVkPXRydWVdKXtiYWNrZ3JvdW5kOnJnYmEoMCwwLDAsLjA0KX1AbWVkaWEoaG92ZXI6IG5vbmUpey5tYXQtZXhwYW5zaW9uLXBhbmVsW19uZ2NvbnRlbnQtJUNPTVAlXTpub3QoLm1hdC1leHBhbmRlZCk6bm90KFthcmlhLWRpc2FibGVkPXRydWVdKSAgIC5tYXQtZXhwYW5zaW9uLXBhbmVsLWhlYWRlcltfbmdjb250ZW50LSVDT01QJV06aG92ZXJ7YmFja2dyb3VuZDojZmZmfX0ubWF0LWV4cGFuc2lvbi1wYW5lbC1oZWFkZXItdGl0bGVbX25nY29udGVudC0lQ09NUCVde2NvbG9yOiMyMTIxMjF9Lm1hdC1leHBhbnNpb24tcGFuZWwtaGVhZGVyLWRlc2NyaXB0aW9uW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1leHBhbnNpb24taW5kaWNhdG9yW19uZ2NvbnRlbnQtJUNPTVAlXTo6YWZ0ZXJ7Y29sb3I6IzYxNjE2MX0ubWF0LWV4cGFuc2lvbi1wYW5lbC1oZWFkZXJbYXJpYS1kaXNhYmxlZD10cnVlXVtfbmdjb250ZW50LSVDT01QJV17Y29sb3I6cmdiYSgwLDAsMCwuMjYpfS5tYXQtZXhwYW5zaW9uLXBhbmVsLWhlYWRlclthcmlhLWRpc2FibGVkPXRydWVdW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZXhwYW5zaW9uLXBhbmVsLWhlYWRlci10aXRsZVtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtZXhwYW5zaW9uLXBhbmVsLWhlYWRlclthcmlhLWRpc2FibGVkPXRydWVdW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZXhwYW5zaW9uLXBhbmVsLWhlYWRlci1kZXNjcmlwdGlvbltfbmdjb250ZW50LSVDT01QJV17Y29sb3I6aW5oZXJpdH0ubWF0LWV4cGFuc2lvbi1wYW5lbC1oZWFkZXJbX25nY29udGVudC0lQ09NUCVde2hlaWdodDo0OHB4fS5tYXQtZXhwYW5zaW9uLXBhbmVsLWhlYWRlci5tYXQtZXhwYW5kZWRbX25nY29udGVudC0lQ09NUCVde2hlaWdodDo2NHB4fS5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17Y29sb3I6cmdiYSg5Nyw5Nyw5NywuNil9Lm1hdC1oaW50W19uZ2NvbnRlbnQtJUNPTVAlXXtjb2xvcjpyZ2JhKDk3LDk3LDk3LC42KX0ubWF0LWZvcm0tZmllbGQubWF0LWZvY3VzZWRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXtjb2xvcjojZjU3YzAwfS5tYXQtZm9ybS1maWVsZC5tYXQtZm9jdXNlZFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWwubWF0LWFjY2VudFtfbmdjb250ZW50LSVDT01QJV17Y29sb3I6I2ZmOTgwMH0ubWF0LWZvcm0tZmllbGQubWF0LWZvY3VzZWRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsLm1hdC13YXJuW19uZ2NvbnRlbnQtJUNPTVAlXXtjb2xvcjojZjQ0MzM2fS5tYXQtZm9jdXNlZFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtcmVxdWlyZWQtbWFya2VyW19uZ2NvbnRlbnQtJUNPTVAlXXtjb2xvcjojZmY5ODAwfS5tYXQtZm9ybS1maWVsZC1yaXBwbGVbX25nY29udGVudC0lQ09NUCVde2JhY2tncm91bmQtY29sb3I6cmdiYSgwLDAsMCwuODcpfS5tYXQtZm9ybS1maWVsZC5tYXQtZm9jdXNlZFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtcmlwcGxlW19uZ2NvbnRlbnQtJUNPTVAlXXtiYWNrZ3JvdW5kLWNvbG9yOiNmNTdjMDB9Lm1hdC1mb3JtLWZpZWxkLm1hdC1mb2N1c2VkW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1yaXBwbGUubWF0LWFjY2VudFtfbmdjb250ZW50LSVDT01QJV17YmFja2dyb3VuZC1jb2xvcjojZmY5ODAwfS5tYXQtZm9ybS1maWVsZC5tYXQtZm9jdXNlZFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtcmlwcGxlLm1hdC13YXJuW19uZ2NvbnRlbnQtJUNPTVAlXXtiYWNrZ3JvdW5kLWNvbG9yOiNmNDQzMzZ9Lm1hdC1mb3JtLWZpZWxkLXR5cGUtbWF0LW5hdGl2ZS1zZWxlY3QubWF0LWZvY3VzZWRbX25nY29udGVudC0lQ09NUCVdOm5vdCgubWF0LWZvcm0tZmllbGQtaW52YWxpZCkgICAubWF0LWZvcm0tZmllbGQtaW5maXhbX25nY29udGVudC0lQ09NUCVdOjphZnRlcntjb2xvcjojZjU3YzAwfS5tYXQtZm9ybS1maWVsZC10eXBlLW1hdC1uYXRpdmUtc2VsZWN0Lm1hdC1mb2N1c2VkW19uZ2NvbnRlbnQtJUNPTVAlXTpub3QoLm1hdC1mb3JtLWZpZWxkLWludmFsaWQpLm1hdC1hY2NlbnQgICAubWF0LWZvcm0tZmllbGQtaW5maXhbX25nY29udGVudC0lQ09NUCVdOjphZnRlcntjb2xvcjojZmY5ODAwfS5tYXQtZm9ybS1maWVsZC10eXBlLW1hdC1uYXRpdmUtc2VsZWN0Lm1hdC1mb2N1c2VkW19uZ2NvbnRlbnQtJUNPTVAlXTpub3QoLm1hdC1mb3JtLWZpZWxkLWludmFsaWQpLm1hdC13YXJuICAgLm1hdC1mb3JtLWZpZWxkLWluZml4W19uZ2NvbnRlbnQtJUNPTVAlXTo6YWZ0ZXJ7Y29sb3I6I2Y0NDMzNn0ubWF0LWZvcm0tZmllbGQubWF0LWZvcm0tZmllbGQtaW52YWxpZFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVde2NvbG9yOiNmNDQzMzZ9Lm1hdC1mb3JtLWZpZWxkLm1hdC1mb3JtLWZpZWxkLWludmFsaWRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsLm1hdC1hY2NlbnRbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWZvcm0tZmllbGQubWF0LWZvcm0tZmllbGQtaW52YWxpZFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLXJlcXVpcmVkLW1hcmtlcltfbmdjb250ZW50LSVDT01QJV17Y29sb3I6I2Y0NDMzNn0ubWF0LWZvcm0tZmllbGQubWF0LWZvcm0tZmllbGQtaW52YWxpZFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtcmlwcGxlW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1mb3JtLWZpZWxkLm1hdC1mb3JtLWZpZWxkLWludmFsaWRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLXJpcHBsZS5tYXQtYWNjZW50W19uZ2NvbnRlbnQtJUNPTVAlXXtiYWNrZ3JvdW5kLWNvbG9yOiNmNDQzMzZ9Lm1hdC1lcnJvcltfbmdjb250ZW50LSVDT01QJV17Y29sb3I6I2Y0NDMzNn0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1sZWdhY3lbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXtjb2xvcjojNjE2MTYxfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWxlZ2FjeVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWhpbnRbX25nY29udGVudC0lQ09NUCVde2NvbG9yOiM2MTYxNjF9Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtbGVnYWN5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC11bmRlcmxpbmVbX25nY29udGVudC0lQ09NUCVde2JhY2tncm91bmQtY29sb3I6cmdiYSgwLDAsMCwuNDIpfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWxlZ2FjeS5tYXQtZm9ybS1maWVsZC1kaXNhYmxlZFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtdW5kZXJsaW5lW19uZ2NvbnRlbnQtJUNPTVAlXXtiYWNrZ3JvdW5kLWltYWdlOmxpbmVhci1ncmFkaWVudCh0byByaWdodCwgcmdiYSgwLCAwLCAwLCAwLjQyKSAwJSwgcmdiYSgwLCAwLCAwLCAwLjQyKSAzMyUsIHRyYW5zcGFyZW50IDAlKTtiYWNrZ3JvdW5kLXNpemU6NHB4IDEwMCU7YmFja2dyb3VuZC1yZXBlYXQ6cmVwZWF0LXh9Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2Utc3RhbmRhcmRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLXVuZGVybGluZVtfbmdjb250ZW50LSVDT01QJV17YmFja2dyb3VuZC1jb2xvcjpyZ2JhKDAsMCwwLC40Mil9Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2Utc3RhbmRhcmQubWF0LWZvcm0tZmllbGQtZGlzYWJsZWRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLXVuZGVybGluZVtfbmdjb250ZW50LSVDT01QJV17YmFja2dyb3VuZC1pbWFnZTpsaW5lYXItZ3JhZGllbnQodG8gcmlnaHQsIHJnYmEoMCwgMCwgMCwgMC40MikgMCUsIHJnYmEoMCwgMCwgMCwgMC40MikgMzMlLCB0cmFuc3BhcmVudCAwJSk7YmFja2dyb3VuZC1zaXplOjRweCAxMDAlO2JhY2tncm91bmQtcmVwZWF0OnJlcGVhdC14fS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWZpbGxbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWZsZXhbX25nY29udGVudC0lQ09NUCVde2JhY2tncm91bmQtY29sb3I6cmdiYSgwLDAsMCwuMDQpfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWZpbGwubWF0LWZvcm0tZmllbGQtZGlzYWJsZWRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWZsZXhbX25nY29udGVudC0lQ09NUCVde2JhY2tncm91bmQtY29sb3I6cmdiYSgwLDAsMCwuMDIpfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWZpbGxbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLXVuZGVybGluZVtfbmdjb250ZW50LSVDT01QJV06OmJlZm9yZXtiYWNrZ3JvdW5kLWNvbG9yOnJnYmEoMCwwLDAsLjQyKX0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1maWxsLm1hdC1mb3JtLWZpZWxkLWRpc2FibGVkW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17Y29sb3I6Izc1NzU3NX0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1maWxsLm1hdC1mb3JtLWZpZWxkLWRpc2FibGVkW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC11bmRlcmxpbmVbX25nY29udGVudC0lQ09NUCVdOjpiZWZvcmV7YmFja2dyb3VuZC1jb2xvcjp0cmFuc3BhcmVudH0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1vdXRsaW5lW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1vdXRsaW5lW19uZ2NvbnRlbnQtJUNPTVAlXXtjb2xvcjpyZ2JhKDAsMCwwLC4xMil9Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2Utb3V0bGluZVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtb3V0bGluZS10aGlja1tfbmdjb250ZW50LSVDT01QJV17Y29sb3I6cmdiYSgwLDAsMCwuODcpfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLW91dGxpbmUubWF0LWZvY3VzZWRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLW91dGxpbmUtdGhpY2tbX25nY29udGVudC0lQ09NUCVde2NvbG9yOiNmNTdjMDB9Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2Utb3V0bGluZS5tYXQtZm9jdXNlZC5tYXQtYWNjZW50W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1vdXRsaW5lLXRoaWNrW19uZ2NvbnRlbnQtJUNPTVAlXXtjb2xvcjojZmY5ODAwfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLW91dGxpbmUubWF0LWZvY3VzZWQubWF0LXdhcm5bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLW91dGxpbmUtdGhpY2tbX25nY29udGVudC0lQ09NUCVde2NvbG9yOiNmNDQzMzZ9Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2Utb3V0bGluZS5tYXQtZm9ybS1maWVsZC1pbnZhbGlkLm1hdC1mb3JtLWZpZWxkLWludmFsaWRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLW91dGxpbmUtdGhpY2tbX25nY29udGVudC0lQ09NUCVde2NvbG9yOiNmNDQzMzZ9Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2Utb3V0bGluZS5tYXQtZm9ybS1maWVsZC1kaXNhYmxlZFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVde2NvbG9yOiM3NTc1NzV9Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2Utb3V0bGluZS5tYXQtZm9ybS1maWVsZC1kaXNhYmxlZFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtb3V0bGluZVtfbmdjb250ZW50LSVDT01QJV17Y29sb3I6cmdiYSgwLDAsMCwuMDYpfS5tYXQtaWNvbi5tYXQtcHJpbWFyeVtfbmdjb250ZW50LSVDT01QJV17Y29sb3I6I2Y1N2MwMH0ubWF0LWljb24ubWF0LWFjY2VudFtfbmdjb250ZW50LSVDT01QJV17Y29sb3I6I2ZmOTgwMH0ubWF0LWljb24ubWF0LXdhcm5bX25nY29udGVudC0lQ09NUCVde2NvbG9yOiNmNDQzMzZ9Lm1hdC1mb3JtLWZpZWxkLXR5cGUtbWF0LW5hdGl2ZS1zZWxlY3RbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWluZml4W19uZ2NvbnRlbnQtJUNPTVAlXTo6YWZ0ZXJ7Y29sb3I6IzYxNjE2MX0ubWF0LWlucHV0LWVsZW1lbnRbX25nY29udGVudC0lQ09NUCVdOmRpc2FibGVkLCAubWF0LWZvcm0tZmllbGQtdHlwZS1tYXQtbmF0aXZlLXNlbGVjdC5tYXQtZm9ybS1maWVsZC1kaXNhYmxlZFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtaW5maXhbX25nY29udGVudC0lQ09NUCVdOjphZnRlcntjb2xvcjojNzU3NTc1fS5tYXQtaW5wdXQtZWxlbWVudFtfbmdjb250ZW50LSVDT01QJV17Y2FyZXQtY29sb3I6I2Y1N2MwMH0ubWF0LWlucHV0LWVsZW1lbnRbX25nY29udGVudC0lQ09NUCVdOjpwbGFjZWhvbGRlcntjb2xvcjpyZ2JhKDk3LDk3LDk3LC40Mil9Lm1hdC1pbnB1dC1lbGVtZW50W19uZ2NvbnRlbnQtJUNPTVAlXTo6LW1vei1wbGFjZWhvbGRlcntjb2xvcjpyZ2JhKDk3LDk3LDk3LC40Mil9Lm1hdC1pbnB1dC1lbGVtZW50W19uZ2NvbnRlbnQtJUNPTVAlXTo6LXdlYmtpdC1pbnB1dC1wbGFjZWhvbGRlcntjb2xvcjpyZ2JhKDk3LDk3LDk3LC40Mil9Lm1hdC1pbnB1dC1lbGVtZW50W19uZ2NvbnRlbnQtJUNPTVAlXTotbXMtaW5wdXQtcGxhY2Vob2xkZXJ7Y29sb3I6cmdiYSg5Nyw5Nyw5NywuNDIpfS5tYXQtZm9ybS1maWVsZC5tYXQtYWNjZW50W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaW5wdXQtZWxlbWVudFtfbmdjb250ZW50LSVDT01QJV17Y2FyZXQtY29sb3I6I2ZmOTgwMH0ubWF0LWZvcm0tZmllbGQubWF0LXdhcm5bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pbnB1dC1lbGVtZW50W19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1mb3JtLWZpZWxkLWludmFsaWRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pbnB1dC1lbGVtZW50W19uZ2NvbnRlbnQtJUNPTVAlXXtjYXJldC1jb2xvcjojZjQ0MzM2fS5tYXQtZm9ybS1maWVsZC10eXBlLW1hdC1uYXRpdmUtc2VsZWN0Lm1hdC1mb3JtLWZpZWxkLWludmFsaWRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWluZml4W19uZ2NvbnRlbnQtJUNPTVAlXTo6YWZ0ZXJ7Y29sb3I6I2Y0NDMzNn0ubWF0LWxpc3QtYmFzZVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpc3QtaXRlbVtfbmdjb250ZW50LSVDT01QJV17Y29sb3I6IzIxMjEyMX0ubWF0LWxpc3QtYmFzZVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpc3Qtb3B0aW9uW19uZ2NvbnRlbnQtJUNPTVAlXXtjb2xvcjojMjEyMTIxfS5tYXQtbGlzdC1iYXNlW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtc3ViaGVhZGVyW19uZ2NvbnRlbnQtJUNPTVAlXXtjb2xvcjojNjE2MTYxfS5tYXQtbGlzdC1pdGVtLWRpc2FibGVkW19uZ2NvbnRlbnQtJUNPTVAlXXtiYWNrZ3JvdW5kLWNvbG9yOiNlZWV9Lm1hdC1saXN0LW9wdGlvbltfbmdjb250ZW50LSVDT01QJV06aG92ZXIsIC5tYXQtbGlzdC1vcHRpb25bX25nY29udGVudC0lQ09NUCVdOmZvY3VzLCAubWF0LW5hdi1saXN0W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGlzdC1pdGVtW19uZ2NvbnRlbnQtJUNPTVAlXTpob3ZlciwgLm1hdC1uYXYtbGlzdFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpc3QtaXRlbVtfbmdjb250ZW50LSVDT01QJV06Zm9jdXMsIC5tYXQtYWN0aW9uLWxpc3RbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saXN0LWl0ZW1bX25nY29udGVudC0lQ09NUCVdOmhvdmVyLCAubWF0LWFjdGlvbi1saXN0W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGlzdC1pdGVtW19uZ2NvbnRlbnQtJUNPTVAlXTpmb2N1c3tiYWNrZ3JvdW5kOnJnYmEoMCwwLDAsLjA0KX0ubWF0LWxpc3Qtc2luZ2xlLXNlbGVjdGVkLW9wdGlvbltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtbGlzdC1zaW5nbGUtc2VsZWN0ZWQtb3B0aW9uW19uZ2NvbnRlbnQtJUNPTVAlXTpob3ZlciwgLm1hdC1saXN0LXNpbmdsZS1zZWxlY3RlZC1vcHRpb25bX25nY29udGVudC0lQ09NUCVdOmZvY3Vze2JhY2tncm91bmQ6cmdiYSgwLDAsMCwuMTIpfS5tYXQtbWVudS1wYW5lbFtfbmdjb250ZW50LSVDT01QJV17YmFja2dyb3VuZDojZmZmfS5tYXQtbWVudS1wYW5lbFtfbmdjb250ZW50LSVDT01QJV06bm90KFtjbGFzcyo9bWF0LWVsZXZhdGlvbi16XSl7Ym94LXNoYWRvdzowcHggMnB4IDRweCAtMXB4IHJnYmEoMCwgMCwgMCwgMC4yKSwwcHggNHB4IDVweCAwcHggcmdiYSgwLCAwLCAwLCAwLjE0KSwwcHggMXB4IDEwcHggMHB4IHJnYmEoMCwgMCwgMCwgMC4xMil9Lm1hdC1tZW51LWl0ZW1bX25nY29udGVudC0lQ09NUCVde2JhY2tncm91bmQ6dHJhbnNwYXJlbnQ7Y29sb3I6IzIxMjEyMX0ubWF0LW1lbnUtaXRlbVtkaXNhYmxlZF1bX25nY29udGVudC0lQ09NUCVdLCAubWF0LW1lbnUtaXRlbVtkaXNhYmxlZF1bX25nY29udGVudC0lQ09NUCVdOjphZnRlcntjb2xvcjpyZ2JhKDAsMCwwLC4zOCl9Lm1hdC1tZW51LWl0ZW1bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pY29uLW5vLWNvbG9yW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1tZW51LWl0ZW0tc3VibWVudS10cmlnZ2VyW19uZ2NvbnRlbnQtJUNPTVAlXTo6YWZ0ZXJ7Y29sb3I6cmdiYSgwLDAsMCwuNTQpfS5tYXQtbWVudS1pdGVtW19uZ2NvbnRlbnQtJUNPTVAlXTpob3Zlcjpub3QoW2Rpc2FibGVkXSksIC5tYXQtbWVudS1pdGVtLmNkay1wcm9ncmFtLWZvY3VzZWRbX25nY29udGVudC0lQ09NUCVdOm5vdChbZGlzYWJsZWRdKSwgLm1hdC1tZW51LWl0ZW0uY2RrLWtleWJvYXJkLWZvY3VzZWRbX25nY29udGVudC0lQ09NUCVdOm5vdChbZGlzYWJsZWRdKSwgLm1hdC1tZW51LWl0ZW0taGlnaGxpZ2h0ZWRbX25nY29udGVudC0lQ09NUCVdOm5vdChbZGlzYWJsZWRdKXtiYWNrZ3JvdW5kOnJnYmEoMCwwLDAsLjA0KX0ubWF0LXBhZ2luYXRvcltfbmdjb250ZW50LSVDT01QJV17YmFja2dyb3VuZDojZmZmfS5tYXQtcGFnaW5hdG9yW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1wYWdpbmF0b3ItcGFnZS1zaXplW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtc2VsZWN0LXRyaWdnZXJbX25nY29udGVudC0lQ09NUCVde2NvbG9yOiM2MTYxNjF9Lm1hdC1wYWdpbmF0b3ItZGVjcmVtZW50W19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1wYWdpbmF0b3ItaW5jcmVtZW50W19uZ2NvbnRlbnQtJUNPTVAlXXtib3JkZXItdG9wOjJweCBzb2xpZCByZ2JhKDAsMCwwLC41NCk7Ym9yZGVyLXJpZ2h0OjJweCBzb2xpZCByZ2JhKDAsMCwwLC41NCl9Lm1hdC1wYWdpbmF0b3ItZmlyc3RbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXBhZ2luYXRvci1sYXN0W19uZ2NvbnRlbnQtJUNPTVAlXXtib3JkZXItdG9wOjJweCBzb2xpZCByZ2JhKDAsMCwwLC41NCl9Lm1hdC1pY29uLWJ1dHRvbltkaXNhYmxlZF1bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1wYWdpbmF0b3ItZGVjcmVtZW50W19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1pY29uLWJ1dHRvbltkaXNhYmxlZF1bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1wYWdpbmF0b3ItaW5jcmVtZW50W19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1pY29uLWJ1dHRvbltkaXNhYmxlZF1bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1wYWdpbmF0b3ItZmlyc3RbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWljb24tYnV0dG9uW2Rpc2FibGVkXVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXBhZ2luYXRvci1sYXN0W19uZ2NvbnRlbnQtJUNPTVAlXXtib3JkZXItY29sb3I6cmdiYSgwLDAsMCwuMzgpfS5tYXQtcGFnaW5hdG9yLWNvbnRhaW5lcltfbmdjb250ZW50LSVDT01QJV17bWluLWhlaWdodDo1NnB4fS5tYXQtcHJvZ3Jlc3MtYmFyLWJhY2tncm91bmRbX25nY29udGVudC0lQ09NUCVde2ZpbGw6I2ZmOTgwMH0ubWF0LXByb2dyZXNzLWJhci1idWZmZXJbX25nY29udGVudC0lQ09NUCVde2JhY2tncm91bmQtY29sb3I6I2ZmOTgwMH0ubWF0LXByb2dyZXNzLWJhci1maWxsW19uZ2NvbnRlbnQtJUNPTVAlXTo6YWZ0ZXJ7YmFja2dyb3VuZC1jb2xvcjojZjU3YzAwfS5tYXQtcHJvZ3Jlc3MtYmFyLm1hdC1hY2NlbnRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1wcm9ncmVzcy1iYXItYmFja2dyb3VuZFtfbmdjb250ZW50LSVDT01QJV17ZmlsbDojZmY5ODAwfS5tYXQtcHJvZ3Jlc3MtYmFyLm1hdC1hY2NlbnRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1wcm9ncmVzcy1iYXItYnVmZmVyW19uZ2NvbnRlbnQtJUNPTVAlXXtiYWNrZ3JvdW5kLWNvbG9yOiNmZjk4MDB9Lm1hdC1wcm9ncmVzcy1iYXIubWF0LWFjY2VudFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXByb2dyZXNzLWJhci1maWxsW19uZ2NvbnRlbnQtJUNPTVAlXTo6YWZ0ZXJ7YmFja2dyb3VuZC1jb2xvcjojZmY5ODAwfS5tYXQtcHJvZ3Jlc3MtYmFyLm1hdC13YXJuW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtcHJvZ3Jlc3MtYmFyLWJhY2tncm91bmRbX25nY29udGVudC0lQ09NUCVde2ZpbGw6I2ZmY2RkMn0ubWF0LXByb2dyZXNzLWJhci5tYXQtd2Fybltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXByb2dyZXNzLWJhci1idWZmZXJbX25nY29udGVudC0lQ09NUCVde2JhY2tncm91bmQtY29sb3I6I2ZmY2RkMn0ubWF0LXByb2dyZXNzLWJhci5tYXQtd2Fybltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXByb2dyZXNzLWJhci1maWxsW19uZ2NvbnRlbnQtJUNPTVAlXTo6YWZ0ZXJ7YmFja2dyb3VuZC1jb2xvcjojZjQ0MzM2fS5tYXQtcHJvZ3Jlc3Mtc3Bpbm5lcltfbmdjb250ZW50LSVDT01QJV0gICBjaXJjbGVbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXNwaW5uZXJbX25nY29udGVudC0lQ09NUCVdICAgY2lyY2xlW19uZ2NvbnRlbnQtJUNPTVAlXXtzdHJva2U6I2Y1N2MwMH0ubWF0LXByb2dyZXNzLXNwaW5uZXIubWF0LWFjY2VudFtfbmdjb250ZW50LSVDT01QJV0gICBjaXJjbGVbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXNwaW5uZXIubWF0LWFjY2VudFtfbmdjb250ZW50LSVDT01QJV0gICBjaXJjbGVbX25nY29udGVudC0lQ09NUCVde3N0cm9rZTojZmY5ODAwfS5tYXQtcHJvZ3Jlc3Mtc3Bpbm5lci5tYXQtd2Fybltfbmdjb250ZW50LSVDT01QJV0gICBjaXJjbGVbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXNwaW5uZXIubWF0LXdhcm5bX25nY29udGVudC0lQ09NUCVdICAgY2lyY2xlW19uZ2NvbnRlbnQtJUNPTVAlXXtzdHJva2U6I2Y0NDMzNn0ubWF0LXJhZGlvLW91dGVyLWNpcmNsZVtfbmdjb250ZW50LSVDT01QJV17Ym9yZGVyLWNvbG9yOiM2MTYxNjF9Lm1hdC1yYWRpby1idXR0b24ubWF0LXByaW1hcnkubWF0LXJhZGlvLWNoZWNrZWRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1yYWRpby1vdXRlci1jaXJjbGVbX25nY29udGVudC0lQ09NUCVde2JvcmRlci1jb2xvcjojZjU3YzAwfS5tYXQtcmFkaW8tYnV0dG9uLm1hdC1wcmltYXJ5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtcmFkaW8taW5uZXItY2lyY2xlW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1yYWRpby1idXR0b24ubWF0LXByaW1hcnlbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1yYWRpby1yaXBwbGVbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1yaXBwbGUtZWxlbWVudFtfbmdjb250ZW50LSVDT01QJV06bm90KC5tYXQtcmFkaW8tcGVyc2lzdGVudC1yaXBwbGUpLCAubWF0LXJhZGlvLWJ1dHRvbi5tYXQtcHJpbWFyeS5tYXQtcmFkaW8tY2hlY2tlZFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXJhZGlvLXBlcnNpc3RlbnQtcmlwcGxlW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1yYWRpby1idXR0b24ubWF0LXByaW1hcnlbX25nY29udGVudC0lQ09NUCVdOmFjdGl2ZSAgIC5tYXQtcmFkaW8tcGVyc2lzdGVudC1yaXBwbGVbX25nY29udGVudC0lQ09NUCVde2JhY2tncm91bmQtY29sb3I6I2Y1N2MwMH0ubWF0LXJhZGlvLWJ1dHRvbi5tYXQtYWNjZW50Lm1hdC1yYWRpby1jaGVja2VkW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtcmFkaW8tb3V0ZXItY2lyY2xlW19uZ2NvbnRlbnQtJUNPTVAlXXtib3JkZXItY29sb3I6I2ZmOTgwMH0ubWF0LXJhZGlvLWJ1dHRvbi5tYXQtYWNjZW50W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtcmFkaW8taW5uZXItY2lyY2xlW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1yYWRpby1idXR0b24ubWF0LWFjY2VudFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXJhZGlvLXJpcHBsZVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXJpcHBsZS1lbGVtZW50W19uZ2NvbnRlbnQtJUNPTVAlXTpub3QoLm1hdC1yYWRpby1wZXJzaXN0ZW50LXJpcHBsZSksIC5tYXQtcmFkaW8tYnV0dG9uLm1hdC1hY2NlbnQubWF0LXJhZGlvLWNoZWNrZWRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1yYWRpby1wZXJzaXN0ZW50LXJpcHBsZVtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtcmFkaW8tYnV0dG9uLm1hdC1hY2NlbnRbX25nY29udGVudC0lQ09NUCVdOmFjdGl2ZSAgIC5tYXQtcmFkaW8tcGVyc2lzdGVudC1yaXBwbGVbX25nY29udGVudC0lQ09NUCVde2JhY2tncm91bmQtY29sb3I6I2ZmOTgwMH0ubWF0LXJhZGlvLWJ1dHRvbi5tYXQtd2Fybi5tYXQtcmFkaW8tY2hlY2tlZFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXJhZGlvLW91dGVyLWNpcmNsZVtfbmdjb250ZW50LSVDT01QJV17Ym9yZGVyLWNvbG9yOiNmNDQzMzZ9Lm1hdC1yYWRpby1idXR0b24ubWF0LXdhcm5bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1yYWRpby1pbm5lci1jaXJjbGVbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXJhZGlvLWJ1dHRvbi5tYXQtd2Fybltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXJhZGlvLXJpcHBsZVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXJpcHBsZS1lbGVtZW50W19uZ2NvbnRlbnQtJUNPTVAlXTpub3QoLm1hdC1yYWRpby1wZXJzaXN0ZW50LXJpcHBsZSksIC5tYXQtcmFkaW8tYnV0dG9uLm1hdC13YXJuLm1hdC1yYWRpby1jaGVja2VkW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtcmFkaW8tcGVyc2lzdGVudC1yaXBwbGVbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXJhZGlvLWJ1dHRvbi5tYXQtd2Fybltfbmdjb250ZW50LSVDT01QJV06YWN0aXZlICAgLm1hdC1yYWRpby1wZXJzaXN0ZW50LXJpcHBsZVtfbmdjb250ZW50LSVDT01QJV17YmFja2dyb3VuZC1jb2xvcjojZjQ0MzM2fS5tYXQtcmFkaW8tYnV0dG9uLm1hdC1yYWRpby1kaXNhYmxlZC5tYXQtcmFkaW8tY2hlY2tlZFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXJhZGlvLW91dGVyLWNpcmNsZVtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtcmFkaW8tYnV0dG9uLm1hdC1yYWRpby1kaXNhYmxlZFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXJhZGlvLW91dGVyLWNpcmNsZVtfbmdjb250ZW50LSVDT01QJV17Ym9yZGVyLWNvbG9yOnJnYmEoMCwwLDAsLjM4KX0ubWF0LXJhZGlvLWJ1dHRvbi5tYXQtcmFkaW8tZGlzYWJsZWRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1yYWRpby1yaXBwbGVbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1yaXBwbGUtZWxlbWVudFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtcmFkaW8tYnV0dG9uLm1hdC1yYWRpby1kaXNhYmxlZFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXJhZGlvLWlubmVyLWNpcmNsZVtfbmdjb250ZW50LSVDT01QJV17YmFja2dyb3VuZC1jb2xvcjpyZ2JhKDAsMCwwLC4zOCl9Lm1hdC1yYWRpby1idXR0b24ubWF0LXJhZGlvLWRpc2FibGVkW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtcmFkaW8tbGFiZWwtY29udGVudFtfbmdjb250ZW50LSVDT01QJV17Y29sb3I6cmdiYSgwLDAsMCwuMzgpfS5tYXQtcmFkaW8tYnV0dG9uW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtcmlwcGxlLWVsZW1lbnRbX25nY29udGVudC0lQ09NUCVde2JhY2tncm91bmQtY29sb3I6IzAwMH0ubWF0LXNlbGVjdC12YWx1ZVtfbmdjb250ZW50LSVDT01QJV17Y29sb3I6IzIxMjEyMX0ubWF0LXNlbGVjdC1wbGFjZWhvbGRlcltfbmdjb250ZW50LSVDT01QJV17Y29sb3I6cmdiYSg5Nyw5Nyw5NywuNDIpfS5tYXQtc2VsZWN0LWRpc2FibGVkW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtc2VsZWN0LXZhbHVlW19uZ2NvbnRlbnQtJUNPTVAlXXtjb2xvcjojNzU3NTc1fS5tYXQtc2VsZWN0LWFycm93W19uZ2NvbnRlbnQtJUNPTVAlXXtjb2xvcjojNjE2MTYxfS5tYXQtc2VsZWN0LXBhbmVsW19uZ2NvbnRlbnQtJUNPTVAlXXtiYWNrZ3JvdW5kOiNmZmZ9Lm1hdC1zZWxlY3QtcGFuZWxbX25nY29udGVudC0lQ09NUCVdOm5vdChbY2xhc3MqPW1hdC1lbGV2YXRpb24tel0pe2JveC1zaGFkb3c6MHB4IDJweCA0cHggLTFweCByZ2JhKDAsIDAsIDAsIDAuMiksMHB4IDRweCA1cHggMHB4IHJnYmEoMCwgMCwgMCwgMC4xNCksMHB4IDFweCAxMHB4IDBweCByZ2JhKDAsIDAsIDAsIDAuMTIpfS5tYXQtc2VsZWN0LXBhbmVsW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtb3B0aW9uLm1hdC1zZWxlY3RlZFtfbmdjb250ZW50LSVDT01QJV06bm90KC5tYXQtb3B0aW9uLW11bHRpcGxlKXtiYWNrZ3JvdW5kOnJnYmEoMCwwLDAsLjEyKX0ubWF0LWZvcm0tZmllbGQubWF0LWZvY3VzZWQubWF0LXByaW1hcnlbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1zZWxlY3QtYXJyb3dbX25nY29udGVudC0lQ09NUCVde2NvbG9yOiNmNTdjMDB9Lm1hdC1mb3JtLWZpZWxkLm1hdC1mb2N1c2VkLm1hdC1hY2NlbnRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1zZWxlY3QtYXJyb3dbX25nY29udGVudC0lQ09NUCVde2NvbG9yOiNmZjk4MDB9Lm1hdC1mb3JtLWZpZWxkLm1hdC1mb2N1c2VkLm1hdC13YXJuW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtc2VsZWN0LWFycm93W19uZ2NvbnRlbnQtJUNPTVAlXXtjb2xvcjojZjQ0MzM2fS5tYXQtZm9ybS1maWVsZFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXNlbGVjdC5tYXQtc2VsZWN0LWludmFsaWRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1zZWxlY3QtYXJyb3dbX25nY29udGVudC0lQ09NUCVde2NvbG9yOiNmNDQzMzZ9Lm1hdC1mb3JtLWZpZWxkW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtc2VsZWN0Lm1hdC1zZWxlY3QtZGlzYWJsZWRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1zZWxlY3QtYXJyb3dbX25nY29udGVudC0lQ09NUCVde2NvbG9yOiM3NTc1NzV9Lm1hdC1kcmF3ZXItY29udGFpbmVyW19uZ2NvbnRlbnQtJUNPTVAlXXtiYWNrZ3JvdW5kLWNvbG9yOiNmYWZhZmE7Y29sb3I6IzIxMjEyMX0ubWF0LWRyYXdlcltfbmdjb250ZW50LSVDT01QJV17YmFja2dyb3VuZC1jb2xvcjojZmZmO2NvbG9yOiMyMTIxMjF9Lm1hdC1kcmF3ZXIubWF0LWRyYXdlci1wdXNoW19uZ2NvbnRlbnQtJUNPTVAlXXtiYWNrZ3JvdW5kLWNvbG9yOiNmZmZ9Lm1hdC1kcmF3ZXJbX25nY29udGVudC0lQ09NUCVdOm5vdCgubWF0LWRyYXdlci1zaWRlKXtib3gtc2hhZG93OjBweCA4cHggMTBweCAtNXB4IHJnYmEoMCwgMCwgMCwgMC4yKSwwcHggMTZweCAyNHB4IDJweCByZ2JhKDAsIDAsIDAsIDAuMTQpLDBweCA2cHggMzBweCA1cHggcmdiYSgwLCAwLCAwLCAwLjEyKX0ubWF0LWRyYXdlci1zaWRlW19uZ2NvbnRlbnQtJUNPTVAlXXtib3JkZXItcmlnaHQ6c29saWQgMXB4IHJnYmEoMCwwLDAsLjEyKX0ubWF0LWRyYXdlci1zaWRlLm1hdC1kcmF3ZXItZW5kW19uZ2NvbnRlbnQtJUNPTVAlXXtib3JkZXItbGVmdDpzb2xpZCAxcHggcmdiYSgwLDAsMCwuMTIpO2JvcmRlci1yaWdodDpub25lfVtkaXI9cnRsXVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWRyYXdlci1zaWRlW19uZ2NvbnRlbnQtJUNPTVAlXXtib3JkZXItbGVmdDpzb2xpZCAxcHggcmdiYSgwLDAsMCwuMTIpO2JvcmRlci1yaWdodDpub25lfVtkaXI9cnRsXVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWRyYXdlci1zaWRlLm1hdC1kcmF3ZXItZW5kW19uZ2NvbnRlbnQtJUNPTVAlXXtib3JkZXItbGVmdDpub25lO2JvcmRlci1yaWdodDpzb2xpZCAxcHggcmdiYSgwLDAsMCwuMTIpfS5tYXQtZHJhd2VyLWJhY2tkcm9wLm1hdC1kcmF3ZXItc2hvd25bX25nY29udGVudC0lQ09NUCVde2JhY2tncm91bmQtY29sb3I6cmdiYSgwLDAsMCwuNil9Lm1hdC1zbGlkZS10b2dnbGUubWF0LWNoZWNrZWRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1zbGlkZS10b2dnbGUtdGh1bWJbX25nY29udGVudC0lQ09NUCVde2JhY2tncm91bmQtY29sb3I6I2ZmOTgwMH0ubWF0LXNsaWRlLXRvZ2dsZS5tYXQtY2hlY2tlZFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXNsaWRlLXRvZ2dsZS1iYXJbX25nY29udGVudC0lQ09NUCVde2JhY2tncm91bmQtY29sb3I6cmdiYSgyNTUsMTUyLDAsLjU0KX0ubWF0LXNsaWRlLXRvZ2dsZS5tYXQtY2hlY2tlZFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXJpcHBsZS1lbGVtZW50W19uZ2NvbnRlbnQtJUNPTVAlXXtiYWNrZ3JvdW5kLWNvbG9yOiNmZjk4MDB9Lm1hdC1zbGlkZS10b2dnbGUubWF0LXByaW1hcnkubWF0LWNoZWNrZWRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1zbGlkZS10b2dnbGUtdGh1bWJbX25nY29udGVudC0lQ09NUCVde2JhY2tncm91bmQtY29sb3I6I2Y1N2MwMH0ubWF0LXNsaWRlLXRvZ2dsZS5tYXQtcHJpbWFyeS5tYXQtY2hlY2tlZFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXNsaWRlLXRvZ2dsZS1iYXJbX25nY29udGVudC0lQ09NUCVde2JhY2tncm91bmQtY29sb3I6cmdiYSgyNDUsMTI0LDAsLjU0KX0ubWF0LXNsaWRlLXRvZ2dsZS5tYXQtcHJpbWFyeS5tYXQtY2hlY2tlZFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXJpcHBsZS1lbGVtZW50W19uZ2NvbnRlbnQtJUNPTVAlXXtiYWNrZ3JvdW5kLWNvbG9yOiNmNTdjMDB9Lm1hdC1zbGlkZS10b2dnbGUubWF0LXdhcm4ubWF0LWNoZWNrZWRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1zbGlkZS10b2dnbGUtdGh1bWJbX25nY29udGVudC0lQ09NUCVde2JhY2tncm91bmQtY29sb3I6I2Y0NDMzNn0ubWF0LXNsaWRlLXRvZ2dsZS5tYXQtd2Fybi5tYXQtY2hlY2tlZFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXNsaWRlLXRvZ2dsZS1iYXJbX25nY29udGVudC0lQ09NUCVde2JhY2tncm91bmQtY29sb3I6cmdiYSgyNDQsNjcsNTQsLjU0KX0ubWF0LXNsaWRlLXRvZ2dsZS5tYXQtd2Fybi5tYXQtY2hlY2tlZFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXJpcHBsZS1lbGVtZW50W19uZ2NvbnRlbnQtJUNPTVAlXXtiYWNrZ3JvdW5kLWNvbG9yOiNmNDQzMzZ9Lm1hdC1zbGlkZS10b2dnbGVbX25nY29udGVudC0lQ09NUCVdOm5vdCgubWF0LWNoZWNrZWQpICAgLm1hdC1yaXBwbGUtZWxlbWVudFtfbmdjb250ZW50LSVDT01QJV17YmFja2dyb3VuZC1jb2xvcjojMDAwfS5tYXQtc2xpZGUtdG9nZ2xlLXRodW1iW19uZ2NvbnRlbnQtJUNPTVAlXXtib3gtc2hhZG93OjBweCAycHggMXB4IC0xcHggcmdiYSgwLCAwLCAwLCAwLjIpLDBweCAxcHggMXB4IDBweCByZ2JhKDAsIDAsIDAsIDAuMTQpLDBweCAxcHggM3B4IDBweCByZ2JhKDAsIDAsIDAsIDAuMTIpO2JhY2tncm91bmQtY29sb3I6I2ZhZmFmYX0ubWF0LXNsaWRlLXRvZ2dsZS1iYXJbX25nY29udGVudC0lQ09NUCVde2JhY2tncm91bmQtY29sb3I6cmdiYSgwLDAsMCwuMzgpfS5tYXQtc2xpZGVyLXRyYWNrLWJhY2tncm91bmRbX25nY29udGVudC0lQ09NUCVde2JhY2tncm91bmQtY29sb3I6cmdiYSgwLDAsMCwuMjYpfS5tYXQtcHJpbWFyeVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXNsaWRlci10cmFjay1maWxsW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1wcmltYXJ5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtc2xpZGVyLXRodW1iW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1wcmltYXJ5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtc2xpZGVyLXRodW1iLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXtiYWNrZ3JvdW5kLWNvbG9yOiNmNTdjMDB9Lm1hdC1wcmltYXJ5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtc2xpZGVyLXRodW1iLWxhYmVsLXRleHRbX25nY29udGVudC0lQ09NUCVde2NvbG9yOiNmZmZ9Lm1hdC1wcmltYXJ5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtc2xpZGVyLWZvY3VzLXJpbmdbX25nY29udGVudC0lQ09NUCVde2JhY2tncm91bmQtY29sb3I6cmdiYSgyNDUsMTI0LDAsLjIpfS5tYXQtYWNjZW50W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtc2xpZGVyLXRyYWNrLWZpbGxbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWFjY2VudFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXNsaWRlci10aHVtYltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtYWNjZW50W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtc2xpZGVyLXRodW1iLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXtiYWNrZ3JvdW5kLWNvbG9yOiNmZjk4MDB9Lm1hdC1hY2NlbnRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1zbGlkZXItdGh1bWItbGFiZWwtdGV4dFtfbmdjb250ZW50LSVDT01QJV17Y29sb3I6I2ZmZn0ubWF0LWFjY2VudFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXNsaWRlci1mb2N1cy1yaW5nW19uZ2NvbnRlbnQtJUNPTVAlXXtiYWNrZ3JvdW5kLWNvbG9yOnJnYmEoMjU1LDE1MiwwLC4yKX0ubWF0LXdhcm5bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1zbGlkZXItdHJhY2stZmlsbFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtd2Fybltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXNsaWRlci10aHVtYltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtd2Fybltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXNsaWRlci10aHVtYi1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17YmFja2dyb3VuZC1jb2xvcjojZjQ0MzM2fS5tYXQtd2Fybltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXNsaWRlci10aHVtYi1sYWJlbC10ZXh0W19uZ2NvbnRlbnQtJUNPTVAlXXtjb2xvcjojZmZmfS5tYXQtd2Fybltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXNsaWRlci1mb2N1cy1yaW5nW19uZ2NvbnRlbnQtJUNPTVAlXXtiYWNrZ3JvdW5kLWNvbG9yOnJnYmEoMjQ0LDY3LDU0LC4yKX0ubWF0LXNsaWRlcltfbmdjb250ZW50LSVDT01QJV06aG92ZXIgICAubWF0LXNsaWRlci10cmFjay1iYWNrZ3JvdW5kW19uZ2NvbnRlbnQtJUNPTVAlXSwgLmNkay1mb2N1c2VkW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtc2xpZGVyLXRyYWNrLWJhY2tncm91bmRbX25nY29udGVudC0lQ09NUCVde2JhY2tncm91bmQtY29sb3I6cmdiYSgwLDAsMCwuMzgpfS5tYXQtc2xpZGVyLWRpc2FibGVkW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtc2xpZGVyLXRyYWNrLWJhY2tncm91bmRbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXNsaWRlci1kaXNhYmxlZFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXNsaWRlci10cmFjay1maWxsW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1zbGlkZXItZGlzYWJsZWRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1zbGlkZXItdGh1bWJbX25nY29udGVudC0lQ09NUCVde2JhY2tncm91bmQtY29sb3I6cmdiYSgwLDAsMCwuMjYpfS5tYXQtc2xpZGVyLWRpc2FibGVkW19uZ2NvbnRlbnQtJUNPTVAlXTpob3ZlciAgIC5tYXQtc2xpZGVyLXRyYWNrLWJhY2tncm91bmRbX25nY29udGVudC0lQ09NUCVde2JhY2tncm91bmQtY29sb3I6cmdiYSgwLDAsMCwuMjYpfS5tYXQtc2xpZGVyLW1pbi12YWx1ZVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXNsaWRlci1mb2N1cy1yaW5nW19uZ2NvbnRlbnQtJUNPTVAlXXtiYWNrZ3JvdW5kLWNvbG9yOnJnYmEoMCwwLDAsLjEyKX0ubWF0LXNsaWRlci1taW4tdmFsdWUubWF0LXNsaWRlci10aHVtYi1sYWJlbC1zaG93aW5nW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtc2xpZGVyLXRodW1iW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1zbGlkZXItbWluLXZhbHVlLm1hdC1zbGlkZXItdGh1bWItbGFiZWwtc2hvd2luZ1tfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXNsaWRlci10aHVtYi1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17YmFja2dyb3VuZC1jb2xvcjpyZ2JhKDAsMCwwLC44Nyl9Lm1hdC1zbGlkZXItbWluLXZhbHVlLm1hdC1zbGlkZXItdGh1bWItbGFiZWwtc2hvd2luZy5jZGstZm9jdXNlZFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXNsaWRlci10aHVtYltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtc2xpZGVyLW1pbi12YWx1ZS5tYXQtc2xpZGVyLXRodW1iLWxhYmVsLXNob3dpbmcuY2RrLWZvY3VzZWRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1zbGlkZXItdGh1bWItbGFiZWxbX25nY29udGVudC0lQ09NUCVde2JhY2tncm91bmQtY29sb3I6cmdiYSgwLDAsMCwuMjYpfS5tYXQtc2xpZGVyLW1pbi12YWx1ZVtfbmdjb250ZW50LSVDT01QJV06bm90KC5tYXQtc2xpZGVyLXRodW1iLWxhYmVsLXNob3dpbmcpICAgLm1hdC1zbGlkZXItdGh1bWJbX25nY29udGVudC0lQ09NUCVde2JvcmRlci1jb2xvcjpyZ2JhKDAsMCwwLC4yNik7YmFja2dyb3VuZC1jb2xvcjp0cmFuc3BhcmVudH0ubWF0LXNsaWRlci1taW4tdmFsdWVbX25nY29udGVudC0lQ09NUCVdOm5vdCgubWF0LXNsaWRlci10aHVtYi1sYWJlbC1zaG93aW5nKTpob3ZlciAgIC5tYXQtc2xpZGVyLXRodW1iW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1zbGlkZXItbWluLXZhbHVlW19uZ2NvbnRlbnQtJUNPTVAlXTpub3QoLm1hdC1zbGlkZXItdGh1bWItbGFiZWwtc2hvd2luZykuY2RrLWZvY3VzZWQgICAubWF0LXNsaWRlci10aHVtYltfbmdjb250ZW50LSVDT01QJV17Ym9yZGVyLWNvbG9yOnJnYmEoMCwwLDAsLjM4KX0ubWF0LXNsaWRlci1taW4tdmFsdWVbX25nY29udGVudC0lQ09NUCVdOm5vdCgubWF0LXNsaWRlci10aHVtYi1sYWJlbC1zaG93aW5nKTpob3Zlci5tYXQtc2xpZGVyLWRpc2FibGVkICAgLm1hdC1zbGlkZXItdGh1bWJbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXNsaWRlci1taW4tdmFsdWVbX25nY29udGVudC0lQ09NUCVdOm5vdCgubWF0LXNsaWRlci10aHVtYi1sYWJlbC1zaG93aW5nKS5jZGstZm9jdXNlZC5tYXQtc2xpZGVyLWRpc2FibGVkICAgLm1hdC1zbGlkZXItdGh1bWJbX25nY29udGVudC0lQ09NUCVde2JvcmRlci1jb2xvcjpyZ2JhKDAsMCwwLC4yNil9Lm1hdC1zbGlkZXItaGFzLXRpY2tzW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtc2xpZGVyLXdyYXBwZXJbX25nY29udGVudC0lQ09NUCVdOjphZnRlcntib3JkZXItY29sb3I6cmdiYSgwLDAsMCwuNyl9Lm1hdC1zbGlkZXItaG9yaXpvbnRhbFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXNsaWRlci10aWNrc1tfbmdjb250ZW50LSVDT01QJV17YmFja2dyb3VuZC1pbWFnZTpyZXBlYXRpbmctbGluZWFyLWdyYWRpZW50KHRvIHJpZ2h0LCByZ2JhKDAsIDAsIDAsIDAuNyksIHJnYmEoMCwgMCwgMCwgMC43KSAycHgsIHRyYW5zcGFyZW50IDAsIHRyYW5zcGFyZW50KTtiYWNrZ3JvdW5kLWltYWdlOi1tb3otcmVwZWF0aW5nLWxpbmVhci1ncmFkaWVudCgwLjAwMDFkZWcsIHJnYmEoMCwgMCwgMCwgMC43KSwgcmdiYSgwLCAwLCAwLCAwLjcpIDJweCwgdHJhbnNwYXJlbnQgMCwgdHJhbnNwYXJlbnQpfS5tYXQtc2xpZGVyLXZlcnRpY2FsW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtc2xpZGVyLXRpY2tzW19uZ2NvbnRlbnQtJUNPTVAlXXtiYWNrZ3JvdW5kLWltYWdlOnJlcGVhdGluZy1saW5lYXItZ3JhZGllbnQodG8gYm90dG9tLCByZ2JhKDAsIDAsIDAsIDAuNyksIHJnYmEoMCwgMCwgMCwgMC43KSAycHgsIHRyYW5zcGFyZW50IDAsIHRyYW5zcGFyZW50KX0ubWF0LXN0ZXAtaGVhZGVyLmNkay1rZXlib2FyZC1mb2N1c2VkW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1zdGVwLWhlYWRlci5jZGstcHJvZ3JhbS1mb2N1c2VkW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1zdGVwLWhlYWRlcltfbmdjb250ZW50LSVDT01QJV06aG92ZXJ7YmFja2dyb3VuZC1jb2xvcjpyZ2JhKDAsMCwwLC4wNCl9QG1lZGlhKGhvdmVyOiBub25lKXsubWF0LXN0ZXAtaGVhZGVyW19uZ2NvbnRlbnQtJUNPTVAlXTpob3ZlcntiYWNrZ3JvdW5kOm5vbmV9fS5tYXQtc3RlcC1oZWFkZXJbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1zdGVwLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1zdGVwLWhlYWRlcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXN0ZXAtb3B0aW9uYWxbX25nY29udGVudC0lQ09NUCVde2NvbG9yOiM2MTYxNjF9Lm1hdC1zdGVwLWhlYWRlcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXN0ZXAtaWNvbltfbmdjb250ZW50LSVDT01QJV17YmFja2dyb3VuZC1jb2xvcjojNjE2MTYxO2NvbG9yOiNmZmZ9Lm1hdC1zdGVwLWhlYWRlcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXN0ZXAtaWNvbi1zZWxlY3RlZFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtc3RlcC1oZWFkZXJbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1zdGVwLWljb24tc3RhdGUtZG9uZVtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtc3RlcC1oZWFkZXJbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1zdGVwLWljb24tc3RhdGUtZWRpdFtfbmdjb250ZW50LSVDT01QJV17YmFja2dyb3VuZC1jb2xvcjojZjU3YzAwO2NvbG9yOiNmZmZ9Lm1hdC1zdGVwLWhlYWRlcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXN0ZXAtaWNvbi1zdGF0ZS1lcnJvcltfbmdjb250ZW50LSVDT01QJV17YmFja2dyb3VuZC1jb2xvcjp0cmFuc3BhcmVudDtjb2xvcjojZjQ0MzM2fS5tYXQtc3RlcC1oZWFkZXJbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1zdGVwLWxhYmVsLm1hdC1zdGVwLWxhYmVsLWFjdGl2ZVtfbmdjb250ZW50LSVDT01QJV17Y29sb3I6IzIxMjEyMX0ubWF0LXN0ZXAtaGVhZGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtc3RlcC1sYWJlbC5tYXQtc3RlcC1sYWJlbC1lcnJvcltfbmdjb250ZW50LSVDT01QJV17Y29sb3I6I2Y0NDMzNn0ubWF0LXN0ZXBwZXItaG9yaXpvbnRhbFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtc3RlcHBlci12ZXJ0aWNhbFtfbmdjb250ZW50LSVDT01QJV17YmFja2dyb3VuZC1jb2xvcjojZmZmfS5tYXQtc3RlcHBlci12ZXJ0aWNhbC1saW5lW19uZ2NvbnRlbnQtJUNPTVAlXTo6YmVmb3Jle2JvcmRlci1sZWZ0LWNvbG9yOnJnYmEoMCwwLDAsLjEyKX0ubWF0LWhvcml6b250YWwtc3RlcHBlci1oZWFkZXJbX25nY29udGVudC0lQ09NUCVdOjpiZWZvcmUsIC5tYXQtaG9yaXpvbnRhbC1zdGVwcGVyLWhlYWRlcltfbmdjb250ZW50LSVDT01QJV06OmFmdGVyLCAubWF0LXN0ZXBwZXItaG9yaXpvbnRhbC1saW5lW19uZ2NvbnRlbnQtJUNPTVAlXXtib3JkZXItdG9wLWNvbG9yOnJnYmEoMCwwLDAsLjEyKX0ubWF0LWhvcml6b250YWwtc3RlcHBlci1oZWFkZXJbX25nY29udGVudC0lQ09NUCVde2hlaWdodDo3MnB4fS5tYXQtc3RlcHBlci1sYWJlbC1wb3NpdGlvbi1ib3R0b21bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1ob3Jpem9udGFsLXN0ZXBwZXItaGVhZGVyW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC12ZXJ0aWNhbC1zdGVwcGVyLWhlYWRlcltfbmdjb250ZW50LSVDT01QJV17cGFkZGluZzoyNHB4IDI0cHh9Lm1hdC1zdGVwcGVyLXZlcnRpY2FsLWxpbmVbX25nY29udGVudC0lQ09NUCVdOjpiZWZvcmV7dG9wOi0xNnB4O2JvdHRvbTotMTZweH0ubWF0LXN0ZXBwZXItbGFiZWwtcG9zaXRpb24tYm90dG9tW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaG9yaXpvbnRhbC1zdGVwcGVyLWhlYWRlcltfbmdjb250ZW50LSVDT01QJV06OmFmdGVyLCAubWF0LXN0ZXBwZXItbGFiZWwtcG9zaXRpb24tYm90dG9tW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaG9yaXpvbnRhbC1zdGVwcGVyLWhlYWRlcltfbmdjb250ZW50LSVDT01QJV06OmJlZm9yZXt0b3A6MzZweH0ubWF0LXN0ZXBwZXItbGFiZWwtcG9zaXRpb24tYm90dG9tW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtc3RlcHBlci1ob3Jpem9udGFsLWxpbmVbX25nY29udGVudC0lQ09NUCVde3RvcDozNnB4fS5tYXQtc29ydC1oZWFkZXItYXJyb3dbX25nY29udGVudC0lQ09NUCVde2NvbG9yOiM2MTYxNjF9Lm1hdC10YWItbmF2LWJhcltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdGFiLWhlYWRlcltfbmdjb250ZW50LSVDT01QJV17Ym9yZGVyLWJvdHRvbToxcHggc29saWQgcmdiYSgwLDAsMCwuMTIpfS5tYXQtdGFiLWdyb3VwLWludmVydGVkLWhlYWRlcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXRhYi1uYXYtYmFyW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10YWItZ3JvdXAtaW52ZXJ0ZWQtaGVhZGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtdGFiLWhlYWRlcltfbmdjb250ZW50LSVDT01QJV17Ym9yZGVyLXRvcDoxcHggc29saWQgcmdiYSgwLDAsMCwuMTIpO2JvcmRlci1ib3R0b206bm9uZX0ubWF0LXRhYi1sYWJlbFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdGFiLWxpbmtbX25nY29udGVudC0lQ09NUCVde2NvbG9yOiMyMTIxMjF9Lm1hdC10YWItbGFiZWwubWF0LXRhYi1kaXNhYmxlZFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdGFiLWxpbmsubWF0LXRhYi1kaXNhYmxlZFtfbmdjb250ZW50LSVDT01QJV17Y29sb3I6Izc1NzU3NX0ubWF0LXRhYi1oZWFkZXItcGFnaW5hdGlvbi1jaGV2cm9uW19uZ2NvbnRlbnQtJUNPTVAlXXtib3JkZXItY29sb3I6IzIxMjEyMX0ubWF0LXRhYi1oZWFkZXItcGFnaW5hdGlvbi1kaXNhYmxlZFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXRhYi1oZWFkZXItcGFnaW5hdGlvbi1jaGV2cm9uW19uZ2NvbnRlbnQtJUNPTVAlXXtib3JkZXItY29sb3I6Izc1NzU3NX0ubWF0LXRhYi1ncm91cFtjbGFzcyo9bWF0LWJhY2tncm91bmQtXVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXRhYi1oZWFkZXJbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXRhYi1uYXYtYmFyW2NsYXNzKj1tYXQtYmFja2dyb3VuZC1dW19uZ2NvbnRlbnQtJUNPTVAlXXtib3JkZXItYm90dG9tOm5vbmU7Ym9yZGVyLXRvcDpub25lfS5tYXQtdGFiLWdyb3VwLm1hdC1wcmltYXJ5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtdGFiLWxhYmVsLmNkay1rZXlib2FyZC1mb2N1c2VkW19uZ2NvbnRlbnQtJUNPTVAlXTpub3QoLm1hdC10YWItZGlzYWJsZWQpLCAubWF0LXRhYi1ncm91cC5tYXQtcHJpbWFyeVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXRhYi1sYWJlbC5jZGstcHJvZ3JhbS1mb2N1c2VkW19uZ2NvbnRlbnQtJUNPTVAlXTpub3QoLm1hdC10YWItZGlzYWJsZWQpLCAubWF0LXRhYi1ncm91cC5tYXQtcHJpbWFyeVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXRhYi1saW5rLmNkay1rZXlib2FyZC1mb2N1c2VkW19uZ2NvbnRlbnQtJUNPTVAlXTpub3QoLm1hdC10YWItZGlzYWJsZWQpLCAubWF0LXRhYi1ncm91cC5tYXQtcHJpbWFyeVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXRhYi1saW5rLmNkay1wcm9ncmFtLWZvY3VzZWRbX25nY29udGVudC0lQ09NUCVdOm5vdCgubWF0LXRhYi1kaXNhYmxlZCksIC5tYXQtdGFiLW5hdi1iYXIubWF0LXByaW1hcnlbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC10YWItbGFiZWwuY2RrLWtleWJvYXJkLWZvY3VzZWRbX25nY29udGVudC0lQ09NUCVdOm5vdCgubWF0LXRhYi1kaXNhYmxlZCksIC5tYXQtdGFiLW5hdi1iYXIubWF0LXByaW1hcnlbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC10YWItbGFiZWwuY2RrLXByb2dyYW0tZm9jdXNlZFtfbmdjb250ZW50LSVDT01QJV06bm90KC5tYXQtdGFiLWRpc2FibGVkKSwgLm1hdC10YWItbmF2LWJhci5tYXQtcHJpbWFyeVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXRhYi1saW5rLmNkay1rZXlib2FyZC1mb2N1c2VkW19uZ2NvbnRlbnQtJUNPTVAlXTpub3QoLm1hdC10YWItZGlzYWJsZWQpLCAubWF0LXRhYi1uYXYtYmFyLm1hdC1wcmltYXJ5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtdGFiLWxpbmsuY2RrLXByb2dyYW0tZm9jdXNlZFtfbmdjb250ZW50LSVDT01QJV06bm90KC5tYXQtdGFiLWRpc2FibGVkKXtiYWNrZ3JvdW5kLWNvbG9yOnJnYmEoMjU1LDE1MiwwLC4zKX0ubWF0LXRhYi1ncm91cC5tYXQtcHJpbWFyeVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWluay1iYXJbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXRhYi1uYXYtYmFyLm1hdC1wcmltYXJ5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaW5rLWJhcltfbmdjb250ZW50LSVDT01QJV17YmFja2dyb3VuZC1jb2xvcjojZjU3YzAwfS5tYXQtdGFiLWdyb3VwLm1hdC1wcmltYXJ5Lm1hdC1iYWNrZ3JvdW5kLXByaW1hcnlbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pbmstYmFyW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10YWItbmF2LWJhci5tYXQtcHJpbWFyeS5tYXQtYmFja2dyb3VuZC1wcmltYXJ5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaW5rLWJhcltfbmdjb250ZW50LSVDT01QJV17YmFja2dyb3VuZC1jb2xvcjojZmZmfS5tYXQtdGFiLWdyb3VwLm1hdC1hY2NlbnRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC10YWItbGFiZWwuY2RrLWtleWJvYXJkLWZvY3VzZWRbX25nY29udGVudC0lQ09NUCVdOm5vdCgubWF0LXRhYi1kaXNhYmxlZCksIC5tYXQtdGFiLWdyb3VwLm1hdC1hY2NlbnRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC10YWItbGFiZWwuY2RrLXByb2dyYW0tZm9jdXNlZFtfbmdjb250ZW50LSVDT01QJV06bm90KC5tYXQtdGFiLWRpc2FibGVkKSwgLm1hdC10YWItZ3JvdXAubWF0LWFjY2VudFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXRhYi1saW5rLmNkay1rZXlib2FyZC1mb2N1c2VkW19uZ2NvbnRlbnQtJUNPTVAlXTpub3QoLm1hdC10YWItZGlzYWJsZWQpLCAubWF0LXRhYi1ncm91cC5tYXQtYWNjZW50W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtdGFiLWxpbmsuY2RrLXByb2dyYW0tZm9jdXNlZFtfbmdjb250ZW50LSVDT01QJV06bm90KC5tYXQtdGFiLWRpc2FibGVkKSwgLm1hdC10YWItbmF2LWJhci5tYXQtYWNjZW50W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtdGFiLWxhYmVsLmNkay1rZXlib2FyZC1mb2N1c2VkW19uZ2NvbnRlbnQtJUNPTVAlXTpub3QoLm1hdC10YWItZGlzYWJsZWQpLCAubWF0LXRhYi1uYXYtYmFyLm1hdC1hY2NlbnRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC10YWItbGFiZWwuY2RrLXByb2dyYW0tZm9jdXNlZFtfbmdjb250ZW50LSVDT01QJV06bm90KC5tYXQtdGFiLWRpc2FibGVkKSwgLm1hdC10YWItbmF2LWJhci5tYXQtYWNjZW50W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtdGFiLWxpbmsuY2RrLWtleWJvYXJkLWZvY3VzZWRbX25nY29udGVudC0lQ09NUCVdOm5vdCgubWF0LXRhYi1kaXNhYmxlZCksIC5tYXQtdGFiLW5hdi1iYXIubWF0LWFjY2VudFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXRhYi1saW5rLmNkay1wcm9ncmFtLWZvY3VzZWRbX25nY29udGVudC0lQ09NUCVdOm5vdCgubWF0LXRhYi1kaXNhYmxlZCl7YmFja2dyb3VuZC1jb2xvcjpyZ2JhKDI1NSwxNTIsMCwuMyl9Lm1hdC10YWItZ3JvdXAubWF0LWFjY2VudFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWluay1iYXJbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXRhYi1uYXYtYmFyLm1hdC1hY2NlbnRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pbmstYmFyW19uZ2NvbnRlbnQtJUNPTVAlXXtiYWNrZ3JvdW5kLWNvbG9yOiNmZjk4MDB9Lm1hdC10YWItZ3JvdXAubWF0LWFjY2VudC5tYXQtYmFja2dyb3VuZC1hY2NlbnRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pbmstYmFyW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10YWItbmF2LWJhci5tYXQtYWNjZW50Lm1hdC1iYWNrZ3JvdW5kLWFjY2VudFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWluay1iYXJbX25nY29udGVudC0lQ09NUCVde2JhY2tncm91bmQtY29sb3I6I2ZmZn0ubWF0LXRhYi1ncm91cC5tYXQtd2Fybltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXRhYi1sYWJlbC5jZGsta2V5Ym9hcmQtZm9jdXNlZFtfbmdjb250ZW50LSVDT01QJV06bm90KC5tYXQtdGFiLWRpc2FibGVkKSwgLm1hdC10YWItZ3JvdXAubWF0LXdhcm5bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC10YWItbGFiZWwuY2RrLXByb2dyYW0tZm9jdXNlZFtfbmdjb250ZW50LSVDT01QJV06bm90KC5tYXQtdGFiLWRpc2FibGVkKSwgLm1hdC10YWItZ3JvdXAubWF0LXdhcm5bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC10YWItbGluay5jZGsta2V5Ym9hcmQtZm9jdXNlZFtfbmdjb250ZW50LSVDT01QJV06bm90KC5tYXQtdGFiLWRpc2FibGVkKSwgLm1hdC10YWItZ3JvdXAubWF0LXdhcm5bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC10YWItbGluay5jZGstcHJvZ3JhbS1mb2N1c2VkW19uZ2NvbnRlbnQtJUNPTVAlXTpub3QoLm1hdC10YWItZGlzYWJsZWQpLCAubWF0LXRhYi1uYXYtYmFyLm1hdC13YXJuW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtdGFiLWxhYmVsLmNkay1rZXlib2FyZC1mb2N1c2VkW19uZ2NvbnRlbnQtJUNPTVAlXTpub3QoLm1hdC10YWItZGlzYWJsZWQpLCAubWF0LXRhYi1uYXYtYmFyLm1hdC13YXJuW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtdGFiLWxhYmVsLmNkay1wcm9ncmFtLWZvY3VzZWRbX25nY29udGVudC0lQ09NUCVdOm5vdCgubWF0LXRhYi1kaXNhYmxlZCksIC5tYXQtdGFiLW5hdi1iYXIubWF0LXdhcm5bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC10YWItbGluay5jZGsta2V5Ym9hcmQtZm9jdXNlZFtfbmdjb250ZW50LSVDT01QJV06bm90KC5tYXQtdGFiLWRpc2FibGVkKSwgLm1hdC10YWItbmF2LWJhci5tYXQtd2Fybltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXRhYi1saW5rLmNkay1wcm9ncmFtLWZvY3VzZWRbX25nY29udGVudC0lQ09NUCVdOm5vdCgubWF0LXRhYi1kaXNhYmxlZCl7YmFja2dyb3VuZC1jb2xvcjpyZ2JhKDI1NSwyMDUsMjEwLC4zKX0ubWF0LXRhYi1ncm91cC5tYXQtd2Fybltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWluay1iYXJbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXRhYi1uYXYtYmFyLm1hdC13YXJuW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaW5rLWJhcltfbmdjb250ZW50LSVDT01QJV17YmFja2dyb3VuZC1jb2xvcjojZjQ0MzM2fS5tYXQtdGFiLWdyb3VwLm1hdC13YXJuLm1hdC1iYWNrZ3JvdW5kLXdhcm5bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pbmstYmFyW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10YWItbmF2LWJhci5tYXQtd2Fybi5tYXQtYmFja2dyb3VuZC13YXJuW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaW5rLWJhcltfbmdjb250ZW50LSVDT01QJV17YmFja2dyb3VuZC1jb2xvcjojZmZmfS5tYXQtdGFiLWdyb3VwLm1hdC1iYWNrZ3JvdW5kLXByaW1hcnlbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC10YWItbGFiZWwuY2RrLWtleWJvYXJkLWZvY3VzZWRbX25nY29udGVudC0lQ09NUCVdOm5vdCgubWF0LXRhYi1kaXNhYmxlZCksIC5tYXQtdGFiLWdyb3VwLm1hdC1iYWNrZ3JvdW5kLXByaW1hcnlbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC10YWItbGFiZWwuY2RrLXByb2dyYW0tZm9jdXNlZFtfbmdjb250ZW50LSVDT01QJV06bm90KC5tYXQtdGFiLWRpc2FibGVkKSwgLm1hdC10YWItZ3JvdXAubWF0LWJhY2tncm91bmQtcHJpbWFyeVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXRhYi1saW5rLmNkay1rZXlib2FyZC1mb2N1c2VkW19uZ2NvbnRlbnQtJUNPTVAlXTpub3QoLm1hdC10YWItZGlzYWJsZWQpLCAubWF0LXRhYi1ncm91cC5tYXQtYmFja2dyb3VuZC1wcmltYXJ5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtdGFiLWxpbmsuY2RrLXByb2dyYW0tZm9jdXNlZFtfbmdjb250ZW50LSVDT01QJV06bm90KC5tYXQtdGFiLWRpc2FibGVkKSwgLm1hdC10YWItbmF2LWJhci5tYXQtYmFja2dyb3VuZC1wcmltYXJ5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtdGFiLWxhYmVsLmNkay1rZXlib2FyZC1mb2N1c2VkW19uZ2NvbnRlbnQtJUNPTVAlXTpub3QoLm1hdC10YWItZGlzYWJsZWQpLCAubWF0LXRhYi1uYXYtYmFyLm1hdC1iYWNrZ3JvdW5kLXByaW1hcnlbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC10YWItbGFiZWwuY2RrLXByb2dyYW0tZm9jdXNlZFtfbmdjb250ZW50LSVDT01QJV06bm90KC5tYXQtdGFiLWRpc2FibGVkKSwgLm1hdC10YWItbmF2LWJhci5tYXQtYmFja2dyb3VuZC1wcmltYXJ5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtdGFiLWxpbmsuY2RrLWtleWJvYXJkLWZvY3VzZWRbX25nY29udGVudC0lQ09NUCVdOm5vdCgubWF0LXRhYi1kaXNhYmxlZCksIC5tYXQtdGFiLW5hdi1iYXIubWF0LWJhY2tncm91bmQtcHJpbWFyeVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXRhYi1saW5rLmNkay1wcm9ncmFtLWZvY3VzZWRbX25nY29udGVudC0lQ09NUCVdOm5vdCgubWF0LXRhYi1kaXNhYmxlZCl7YmFja2dyb3VuZC1jb2xvcjpyZ2JhKDI1NSwxNTIsMCwuMyl9Lm1hdC10YWItZ3JvdXAubWF0LWJhY2tncm91bmQtcHJpbWFyeVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXRhYi1oZWFkZXJbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXRhYi1ncm91cC5tYXQtYmFja2dyb3VuZC1wcmltYXJ5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtdGFiLWxpbmtzW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10YWItZ3JvdXAubWF0LWJhY2tncm91bmQtcHJpbWFyeVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXRhYi1oZWFkZXItcGFnaW5hdGlvbltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdGFiLW5hdi1iYXIubWF0LWJhY2tncm91bmQtcHJpbWFyeVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXRhYi1oZWFkZXJbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXRhYi1uYXYtYmFyLm1hdC1iYWNrZ3JvdW5kLXByaW1hcnlbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC10YWItbGlua3NbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXRhYi1uYXYtYmFyLm1hdC1iYWNrZ3JvdW5kLXByaW1hcnlbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC10YWItaGVhZGVyLXBhZ2luYXRpb25bX25nY29udGVudC0lQ09NUCVde2JhY2tncm91bmQtY29sb3I6I2Y1N2MwMH0ubWF0LXRhYi1ncm91cC5tYXQtYmFja2dyb3VuZC1wcmltYXJ5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtdGFiLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10YWItZ3JvdXAubWF0LWJhY2tncm91bmQtcHJpbWFyeVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXRhYi1saW5rW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10YWItbmF2LWJhci5tYXQtYmFja2dyb3VuZC1wcmltYXJ5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtdGFiLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10YWItbmF2LWJhci5tYXQtYmFja2dyb3VuZC1wcmltYXJ5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtdGFiLWxpbmtbX25nY29udGVudC0lQ09NUCVde2NvbG9yOiNmZmZ9Lm1hdC10YWItZ3JvdXAubWF0LWJhY2tncm91bmQtcHJpbWFyeVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXRhYi1sYWJlbC5tYXQtdGFiLWRpc2FibGVkW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10YWItZ3JvdXAubWF0LWJhY2tncm91bmQtcHJpbWFyeVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXRhYi1saW5rLm1hdC10YWItZGlzYWJsZWRbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXRhYi1uYXYtYmFyLm1hdC1iYWNrZ3JvdW5kLXByaW1hcnlbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC10YWItbGFiZWwubWF0LXRhYi1kaXNhYmxlZFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdGFiLW5hdi1iYXIubWF0LWJhY2tncm91bmQtcHJpbWFyeVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXRhYi1saW5rLm1hdC10YWItZGlzYWJsZWRbX25nY29udGVudC0lQ09NUCVde2NvbG9yOnJnYmEoMjU1LDI1NSwyNTUsLjQpfS5tYXQtdGFiLWdyb3VwLm1hdC1iYWNrZ3JvdW5kLXByaW1hcnlbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC10YWItaGVhZGVyLXBhZ2luYXRpb24tY2hldnJvbltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdGFiLW5hdi1iYXIubWF0LWJhY2tncm91bmQtcHJpbWFyeVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXRhYi1oZWFkZXItcGFnaW5hdGlvbi1jaGV2cm9uW19uZ2NvbnRlbnQtJUNPTVAlXXtib3JkZXItY29sb3I6I2ZmZn0ubWF0LXRhYi1ncm91cC5tYXQtYmFja2dyb3VuZC1wcmltYXJ5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtdGFiLWhlYWRlci1wYWdpbmF0aW9uLWRpc2FibGVkW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtdGFiLWhlYWRlci1wYWdpbmF0aW9uLWNoZXZyb25bX25nY29udGVudC0lQ09NUCVdLCAubWF0LXRhYi1uYXYtYmFyLm1hdC1iYWNrZ3JvdW5kLXByaW1hcnlbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC10YWItaGVhZGVyLXBhZ2luYXRpb24tZGlzYWJsZWRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC10YWItaGVhZGVyLXBhZ2luYXRpb24tY2hldnJvbltfbmdjb250ZW50LSVDT01QJV17Ym9yZGVyLWNvbG9yOnJnYmEoMjU1LDI1NSwyNTUsLjQpfS5tYXQtdGFiLWdyb3VwLm1hdC1iYWNrZ3JvdW5kLXByaW1hcnlbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1yaXBwbGUtZWxlbWVudFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdGFiLW5hdi1iYXIubWF0LWJhY2tncm91bmQtcHJpbWFyeVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXJpcHBsZS1lbGVtZW50W19uZ2NvbnRlbnQtJUNPTVAlXXtiYWNrZ3JvdW5kLWNvbG9yOnJnYmEoMjU1LDI1NSwyNTUsLjEyKX0ubWF0LXRhYi1ncm91cC5tYXQtYmFja2dyb3VuZC1hY2NlbnRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC10YWItbGFiZWwuY2RrLWtleWJvYXJkLWZvY3VzZWRbX25nY29udGVudC0lQ09NUCVdOm5vdCgubWF0LXRhYi1kaXNhYmxlZCksIC5tYXQtdGFiLWdyb3VwLm1hdC1iYWNrZ3JvdW5kLWFjY2VudFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXRhYi1sYWJlbC5jZGstcHJvZ3JhbS1mb2N1c2VkW19uZ2NvbnRlbnQtJUNPTVAlXTpub3QoLm1hdC10YWItZGlzYWJsZWQpLCAubWF0LXRhYi1ncm91cC5tYXQtYmFja2dyb3VuZC1hY2NlbnRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC10YWItbGluay5jZGsta2V5Ym9hcmQtZm9jdXNlZFtfbmdjb250ZW50LSVDT01QJV06bm90KC5tYXQtdGFiLWRpc2FibGVkKSwgLm1hdC10YWItZ3JvdXAubWF0LWJhY2tncm91bmQtYWNjZW50W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtdGFiLWxpbmsuY2RrLXByb2dyYW0tZm9jdXNlZFtfbmdjb250ZW50LSVDT01QJV06bm90KC5tYXQtdGFiLWRpc2FibGVkKSwgLm1hdC10YWItbmF2LWJhci5tYXQtYmFja2dyb3VuZC1hY2NlbnRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC10YWItbGFiZWwuY2RrLWtleWJvYXJkLWZvY3VzZWRbX25nY29udGVudC0lQ09NUCVdOm5vdCgubWF0LXRhYi1kaXNhYmxlZCksIC5tYXQtdGFiLW5hdi1iYXIubWF0LWJhY2tncm91bmQtYWNjZW50W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtdGFiLWxhYmVsLmNkay1wcm9ncmFtLWZvY3VzZWRbX25nY29udGVudC0lQ09NUCVdOm5vdCgubWF0LXRhYi1kaXNhYmxlZCksIC5tYXQtdGFiLW5hdi1iYXIubWF0LWJhY2tncm91bmQtYWNjZW50W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtdGFiLWxpbmsuY2RrLWtleWJvYXJkLWZvY3VzZWRbX25nY29udGVudC0lQ09NUCVdOm5vdCgubWF0LXRhYi1kaXNhYmxlZCksIC5tYXQtdGFiLW5hdi1iYXIubWF0LWJhY2tncm91bmQtYWNjZW50W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtdGFiLWxpbmsuY2RrLXByb2dyYW0tZm9jdXNlZFtfbmdjb250ZW50LSVDT01QJV06bm90KC5tYXQtdGFiLWRpc2FibGVkKXtiYWNrZ3JvdW5kLWNvbG9yOnJnYmEoMjU1LDE1MiwwLC4zKX0ubWF0LXRhYi1ncm91cC5tYXQtYmFja2dyb3VuZC1hY2NlbnRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC10YWItaGVhZGVyW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10YWItZ3JvdXAubWF0LWJhY2tncm91bmQtYWNjZW50W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtdGFiLWxpbmtzW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10YWItZ3JvdXAubWF0LWJhY2tncm91bmQtYWNjZW50W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtdGFiLWhlYWRlci1wYWdpbmF0aW9uW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10YWItbmF2LWJhci5tYXQtYmFja2dyb3VuZC1hY2NlbnRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC10YWItaGVhZGVyW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10YWItbmF2LWJhci5tYXQtYmFja2dyb3VuZC1hY2NlbnRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC10YWItbGlua3NbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXRhYi1uYXYtYmFyLm1hdC1iYWNrZ3JvdW5kLWFjY2VudFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXRhYi1oZWFkZXItcGFnaW5hdGlvbltfbmdjb250ZW50LSVDT01QJV17YmFja2dyb3VuZC1jb2xvcjojZmY5ODAwfS5tYXQtdGFiLWdyb3VwLm1hdC1iYWNrZ3JvdW5kLWFjY2VudFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXRhYi1sYWJlbFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdGFiLWdyb3VwLm1hdC1iYWNrZ3JvdW5kLWFjY2VudFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXRhYi1saW5rW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10YWItbmF2LWJhci5tYXQtYmFja2dyb3VuZC1hY2NlbnRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC10YWItbGFiZWxbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXRhYi1uYXYtYmFyLm1hdC1iYWNrZ3JvdW5kLWFjY2VudFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXRhYi1saW5rW19uZ2NvbnRlbnQtJUNPTVAlXXtjb2xvcjojZmZmfS5tYXQtdGFiLWdyb3VwLm1hdC1iYWNrZ3JvdW5kLWFjY2VudFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXRhYi1sYWJlbC5tYXQtdGFiLWRpc2FibGVkW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10YWItZ3JvdXAubWF0LWJhY2tncm91bmQtYWNjZW50W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtdGFiLWxpbmsubWF0LXRhYi1kaXNhYmxlZFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdGFiLW5hdi1iYXIubWF0LWJhY2tncm91bmQtYWNjZW50W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtdGFiLWxhYmVsLm1hdC10YWItZGlzYWJsZWRbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXRhYi1uYXYtYmFyLm1hdC1iYWNrZ3JvdW5kLWFjY2VudFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXRhYi1saW5rLm1hdC10YWItZGlzYWJsZWRbX25nY29udGVudC0lQ09NUCVde2NvbG9yOnJnYmEoMjU1LDI1NSwyNTUsLjQpfS5tYXQtdGFiLWdyb3VwLm1hdC1iYWNrZ3JvdW5kLWFjY2VudFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXRhYi1oZWFkZXItcGFnaW5hdGlvbi1jaGV2cm9uW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10YWItbmF2LWJhci5tYXQtYmFja2dyb3VuZC1hY2NlbnRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC10YWItaGVhZGVyLXBhZ2luYXRpb24tY2hldnJvbltfbmdjb250ZW50LSVDT01QJV17Ym9yZGVyLWNvbG9yOiNmZmZ9Lm1hdC10YWItZ3JvdXAubWF0LWJhY2tncm91bmQtYWNjZW50W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtdGFiLWhlYWRlci1wYWdpbmF0aW9uLWRpc2FibGVkW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtdGFiLWhlYWRlci1wYWdpbmF0aW9uLWNoZXZyb25bX25nY29udGVudC0lQ09NUCVdLCAubWF0LXRhYi1uYXYtYmFyLm1hdC1iYWNrZ3JvdW5kLWFjY2VudFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXRhYi1oZWFkZXItcGFnaW5hdGlvbi1kaXNhYmxlZFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXRhYi1oZWFkZXItcGFnaW5hdGlvbi1jaGV2cm9uW19uZ2NvbnRlbnQtJUNPTVAlXXtib3JkZXItY29sb3I6cmdiYSgyNTUsMjU1LDI1NSwuNCl9Lm1hdC10YWItZ3JvdXAubWF0LWJhY2tncm91bmQtYWNjZW50W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtcmlwcGxlLWVsZW1lbnRbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXRhYi1uYXYtYmFyLm1hdC1iYWNrZ3JvdW5kLWFjY2VudFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXJpcHBsZS1lbGVtZW50W19uZ2NvbnRlbnQtJUNPTVAlXXtiYWNrZ3JvdW5kLWNvbG9yOnJnYmEoMjU1LDI1NSwyNTUsLjEyKX0ubWF0LXRhYi1ncm91cC5tYXQtYmFja2dyb3VuZC13YXJuW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtdGFiLWxhYmVsLmNkay1rZXlib2FyZC1mb2N1c2VkW19uZ2NvbnRlbnQtJUNPTVAlXTpub3QoLm1hdC10YWItZGlzYWJsZWQpLCAubWF0LXRhYi1ncm91cC5tYXQtYmFja2dyb3VuZC13YXJuW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtdGFiLWxhYmVsLmNkay1wcm9ncmFtLWZvY3VzZWRbX25nY29udGVudC0lQ09NUCVdOm5vdCgubWF0LXRhYi1kaXNhYmxlZCksIC5tYXQtdGFiLWdyb3VwLm1hdC1iYWNrZ3JvdW5kLXdhcm5bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC10YWItbGluay5jZGsta2V5Ym9hcmQtZm9jdXNlZFtfbmdjb250ZW50LSVDT01QJV06bm90KC5tYXQtdGFiLWRpc2FibGVkKSwgLm1hdC10YWItZ3JvdXAubWF0LWJhY2tncm91bmQtd2Fybltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXRhYi1saW5rLmNkay1wcm9ncmFtLWZvY3VzZWRbX25nY29udGVudC0lQ09NUCVdOm5vdCgubWF0LXRhYi1kaXNhYmxlZCksIC5tYXQtdGFiLW5hdi1iYXIubWF0LWJhY2tncm91bmQtd2Fybltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXRhYi1sYWJlbC5jZGsta2V5Ym9hcmQtZm9jdXNlZFtfbmdjb250ZW50LSVDT01QJV06bm90KC5tYXQtdGFiLWRpc2FibGVkKSwgLm1hdC10YWItbmF2LWJhci5tYXQtYmFja2dyb3VuZC13YXJuW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtdGFiLWxhYmVsLmNkay1wcm9ncmFtLWZvY3VzZWRbX25nY29udGVudC0lQ09NUCVdOm5vdCgubWF0LXRhYi1kaXNhYmxlZCksIC5tYXQtdGFiLW5hdi1iYXIubWF0LWJhY2tncm91bmQtd2Fybltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXRhYi1saW5rLmNkay1rZXlib2FyZC1mb2N1c2VkW19uZ2NvbnRlbnQtJUNPTVAlXTpub3QoLm1hdC10YWItZGlzYWJsZWQpLCAubWF0LXRhYi1uYXYtYmFyLm1hdC1iYWNrZ3JvdW5kLXdhcm5bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC10YWItbGluay5jZGstcHJvZ3JhbS1mb2N1c2VkW19uZ2NvbnRlbnQtJUNPTVAlXTpub3QoLm1hdC10YWItZGlzYWJsZWQpe2JhY2tncm91bmQtY29sb3I6cmdiYSgyNTUsMjA1LDIxMCwuMyl9Lm1hdC10YWItZ3JvdXAubWF0LWJhY2tncm91bmQtd2Fybltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXRhYi1oZWFkZXJbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXRhYi1ncm91cC5tYXQtYmFja2dyb3VuZC13YXJuW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtdGFiLWxpbmtzW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10YWItZ3JvdXAubWF0LWJhY2tncm91bmQtd2Fybltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXRhYi1oZWFkZXItcGFnaW5hdGlvbltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdGFiLW5hdi1iYXIubWF0LWJhY2tncm91bmQtd2Fybltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXRhYi1oZWFkZXJbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXRhYi1uYXYtYmFyLm1hdC1iYWNrZ3JvdW5kLXdhcm5bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC10YWItbGlua3NbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXRhYi1uYXYtYmFyLm1hdC1iYWNrZ3JvdW5kLXdhcm5bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC10YWItaGVhZGVyLXBhZ2luYXRpb25bX25nY29udGVudC0lQ09NUCVde2JhY2tncm91bmQtY29sb3I6I2Y0NDMzNn0ubWF0LXRhYi1ncm91cC5tYXQtYmFja2dyb3VuZC13YXJuW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtdGFiLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10YWItZ3JvdXAubWF0LWJhY2tncm91bmQtd2Fybltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXRhYi1saW5rW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10YWItbmF2LWJhci5tYXQtYmFja2dyb3VuZC13YXJuW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtdGFiLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10YWItbmF2LWJhci5tYXQtYmFja2dyb3VuZC13YXJuW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtdGFiLWxpbmtbX25nY29udGVudC0lQ09NUCVde2NvbG9yOiNmZmZ9Lm1hdC10YWItZ3JvdXAubWF0LWJhY2tncm91bmQtd2Fybltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXRhYi1sYWJlbC5tYXQtdGFiLWRpc2FibGVkW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10YWItZ3JvdXAubWF0LWJhY2tncm91bmQtd2Fybltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXRhYi1saW5rLm1hdC10YWItZGlzYWJsZWRbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXRhYi1uYXYtYmFyLm1hdC1iYWNrZ3JvdW5kLXdhcm5bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC10YWItbGFiZWwubWF0LXRhYi1kaXNhYmxlZFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdGFiLW5hdi1iYXIubWF0LWJhY2tncm91bmQtd2Fybltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXRhYi1saW5rLm1hdC10YWItZGlzYWJsZWRbX25nY29udGVudC0lQ09NUCVde2NvbG9yOnJnYmEoMjU1LDI1NSwyNTUsLjQpfS5tYXQtdGFiLWdyb3VwLm1hdC1iYWNrZ3JvdW5kLXdhcm5bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC10YWItaGVhZGVyLXBhZ2luYXRpb24tY2hldnJvbltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdGFiLW5hdi1iYXIubWF0LWJhY2tncm91bmQtd2Fybltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXRhYi1oZWFkZXItcGFnaW5hdGlvbi1jaGV2cm9uW19uZ2NvbnRlbnQtJUNPTVAlXXtib3JkZXItY29sb3I6I2ZmZn0ubWF0LXRhYi1ncm91cC5tYXQtYmFja2dyb3VuZC13YXJuW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtdGFiLWhlYWRlci1wYWdpbmF0aW9uLWRpc2FibGVkW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtdGFiLWhlYWRlci1wYWdpbmF0aW9uLWNoZXZyb25bX25nY29udGVudC0lQ09NUCVdLCAubWF0LXRhYi1uYXYtYmFyLm1hdC1iYWNrZ3JvdW5kLXdhcm5bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC10YWItaGVhZGVyLXBhZ2luYXRpb24tZGlzYWJsZWRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC10YWItaGVhZGVyLXBhZ2luYXRpb24tY2hldnJvbltfbmdjb250ZW50LSVDT01QJV17Ym9yZGVyLWNvbG9yOnJnYmEoMjU1LDI1NSwyNTUsLjQpfS5tYXQtdGFiLWdyb3VwLm1hdC1iYWNrZ3JvdW5kLXdhcm5bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1yaXBwbGUtZWxlbWVudFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdGFiLW5hdi1iYXIubWF0LWJhY2tncm91bmQtd2Fybltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXJpcHBsZS1lbGVtZW50W19uZ2NvbnRlbnQtJUNPTVAlXXtiYWNrZ3JvdW5kLWNvbG9yOnJnYmEoMjU1LDI1NSwyNTUsLjEyKX0ubWF0LXRvb2xiYXJbX25nY29udGVudC0lQ09NUCVde2JhY2tncm91bmQ6I2Y1ZjVmNTtjb2xvcjojMjEyMTIxfS5tYXQtdG9vbGJhci5tYXQtcHJpbWFyeVtfbmdjb250ZW50LSVDT01QJV17YmFja2dyb3VuZDojZjU3YzAwO2NvbG9yOiNmZmZ9Lm1hdC10b29sYmFyLm1hdC1hY2NlbnRbX25nY29udGVudC0lQ09NUCVde2JhY2tncm91bmQ6I2ZmOTgwMDtjb2xvcjojZmZmfS5tYXQtdG9vbGJhci5tYXQtd2Fybltfbmdjb250ZW50LSVDT01QJV17YmFja2dyb3VuZDojZjQ0MzM2O2NvbG9yOiNmZmZ9Lm1hdC10b29sYmFyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC11bmRlcmxpbmVbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXRvb2xiYXJbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLXJpcHBsZVtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdG9vbGJhcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvY3VzZWRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLXJpcHBsZVtfbmdjb250ZW50LSVDT01QJV17YmFja2dyb3VuZC1jb2xvcjpjdXJyZW50Q29sb3J9Lm1hdC10b29sYmFyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdG9vbGJhcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvY3VzZWRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10b29sYmFyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtc2VsZWN0LXZhbHVlW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10b29sYmFyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtc2VsZWN0LWFycm93W19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10b29sYmFyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC5tYXQtZm9jdXNlZFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXNlbGVjdC1hcnJvd1tfbmdjb250ZW50LSVDT01QJV17Y29sb3I6aW5oZXJpdH0ubWF0LXRvb2xiYXJbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pbnB1dC1lbGVtZW50W19uZ2NvbnRlbnQtJUNPTVAlXXtjYXJldC1jb2xvcjpjdXJyZW50Q29sb3J9Lm1hdC10b29sYmFyLW11bHRpcGxlLXJvd3NbX25nY29udGVudC0lQ09NUCVde21pbi1oZWlnaHQ6NjRweH0ubWF0LXRvb2xiYXItcm93W19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10b29sYmFyLXNpbmdsZS1yb3dbX25nY29udGVudC0lQ09NUCVde2hlaWdodDo2NHB4fUBtZWRpYShtYXgtd2lkdGg6IDU5OXB4KXsubWF0LXRvb2xiYXItbXVsdGlwbGUtcm93c1tfbmdjb250ZW50LSVDT01QJV17bWluLWhlaWdodDo1NnB4fS5tYXQtdG9vbGJhci1yb3dbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXRvb2xiYXItc2luZ2xlLXJvd1tfbmdjb250ZW50LSVDT01QJV17aGVpZ2h0OjU2cHh9fS5tYXQtdG9vbHRpcFtfbmdjb250ZW50LSVDT01QJV17YmFja2dyb3VuZDpyZ2JhKDk3LDk3LDk3LC45KX0ubWF0LXRyZWVbX25nY29udGVudC0lQ09NUCVde2JhY2tncm91bmQ6I2ZmZn0ubWF0LXRyZWUtbm9kZVtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtbmVzdGVkLXRyZWUtbm9kZVtfbmdjb250ZW50LSVDT01QJV17Y29sb3I6IzIxMjEyMX0ubWF0LXRyZWUtbm9kZVtfbmdjb250ZW50LSVDT01QJV17bWluLWhlaWdodDo0OHB4fS5tYXQtc25hY2stYmFyLWNvbnRhaW5lcltfbmdjb250ZW50LSVDT01QJV17Y29sb3I6cmdiYSgyNTUsMjU1LDI1NSwuNyk7YmFja2dyb3VuZDojMzIzMjMyO2JveC1zaGFkb3c6MHB4IDNweCA1cHggLTFweCByZ2JhKDAsIDAsIDAsIDAuMiksMHB4IDZweCAxMHB4IDBweCByZ2JhKDAsIDAsIDAsIDAuMTQpLDBweCAxcHggMThweCAwcHggcmdiYSgwLCAwLCAwLCAwLjEyKX0ubWF0LXNpbXBsZS1zbmFja2Jhci1hY3Rpb25bX25nY29udGVudC0lQ09NUCVde2NvbG9yOiNmZjk4MDB9W19uZ2hvc3QtJUNPTVAlXSAgIGJ1dHRvbi5tYXQtc3Ryb2tlZC1idXR0b25bX25nY29udGVudC0lQ09NUCVde2JhY2tncm91bmQtY29sb3I6I2ZmOTgwMDtib3JkZXI6MXB4IHNvbGlkICNlYmViZWJ9LmJ1dHRvbi1jb250ZW50c1tfbmdjb250ZW50LSVDT01QJV17YWxpZ24taXRlbXM6Y2VudGVyO2Rpc3BsYXk6ZmxleDt0ZXh0LXRyYW5zZm9ybTp1cHBlcmNhc2V9bWF0LWljb25bX25nY29udGVudC0lQ09NUCVde21hcmdpbi1yaWdodDo2cHh9J119KTtjb25zdCBaQj1wdihGSSxOSSwoKHQsbik9PiEoIW58fCF0W25dKSYmdFtuXS5kaXNhYmxlX3JlbG9hZCkpO2NsYXNzIFhCe2NvbnN0cnVjdG9yKHQpe3RoaXMuc3RvcmU9dCx0aGlzLnJlbG9hZERpc2FibGVkJD10aGlzLnN0b3JlLnNlbGVjdChaQiksdGhpcy5pc1JlbG9hZGluZyQ9dGhpcy5zdG9yZS5zZWxlY3QoSUkpLnBpcGUoeWUodGhpcy5yZWxvYWREaXNhYmxlZCQpLGZ0KCgoW3Qsbl0pPT4hbiYmdC5zdGF0ZT09PWZSLkxPQURJTkcpKSksdGhpcy5sYXN0TG9hZGVkVGltZUluTXMkPXRoaXMuc3RvcmUuc2VsZWN0KElJKS5waXBlKGZ0KCh0PT50Lmxhc3RMb2FkZWRUaW1lSW5NcykpKX10cmlnZ2VyUmVsb2FkKCl7dGhpcy5zdG9yZS5kaXNwYXRjaCh1SSgpKX1nZXRSZWxvYWRUaXRsZSh0KXtyZXR1cm4gdD9gTGFzdCBVcGRhdGVkOiAke3R9YDoiTG9hZGluZy4uLiJ9fVhCLsm1ZmFjPWZ1bmN0aW9uIHQobil7cmV0dXJuIG5ldyhufHxYQikoWmcoY3YpKX0sWEIuybVjbXA9X28oe3R5cGU6WEIsc2VsZWN0b3JzOltbImFwcC1oZWFkZXItcmVsb2FkIl1dLGRlY2xzOjYsdmFyczoxMyxjb25zdHM6W1sibWF0LWljb24tYnV0dG9uIiwiIiwxLCJyZWxvYWQtYnV0dG9uIiwzLCJ0aXRsZSIsImRpc2FibGVkIiwiY2xpY2siXSxbInN2Z0ljb24iLCJyZWZyZXNoXzI0cHgiLDEsInJlZnJlc2gtaWNvbiJdXSx0ZW1wbGF0ZTpmdW5jdGlvbiB0KG4sZSl7MSZuJiYoS2coMCwiYnV0dG9uIiwwKSxjcCgiY2xpY2siLChmdW5jdGlvbiB0KCl7cmV0dXJuIGUudHJpZ2dlclJlbG9hZCgpfSkpLHlmKDEsImFzeW5jIikseWYoMiwiZGF0ZSIpLHlmKDMsImFzeW5jIikseWYoNCwiYXN5bmMiKSx0cCg1LCJtYXQtaWNvbiIsMSksJGcoKSksMiZuJiYoRHAoImxvYWRpbmciLGtmKDEsNCxlLmlzUmVsb2FkaW5nJCkpLEpnKCJ0aXRsZSIsZS5nZXRSZWxvYWRUaXRsZSh2ZigyLDYsa2YoMyw5LGUubGFzdExvYWRlZFRpbWVJbk1zJCksIm1lZGl1bSIpKSkoImRpc2FibGVkIixrZig0LDExLGUucmVsb2FkRGlzYWJsZWQkKSkpfSxkaXJlY3RpdmVzOltlQSxCQl0scGlwZXM6W29PLGxPXSxzdHlsZXM6WyIucmVsb2FkLWJ1dHRvbltfbmdjb250ZW50LSVDT01QJV0sIC5yZWZyZXNoLWljb25bX25nY29udGVudC0lQ09NUCVdIHtcbiAgICAgICAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbiAgICAgICAgZGlzcGxheTogZmxleDtcbiAgICAgICAganVzdGlmeS1jb250ZW50OiBjZW50ZXI7XG4gICAgICB9XG5cbiAgICAgIC5yZWxvYWQtYnV0dG9uLmxvYWRpbmdbX25nY29udGVudC0lQ09NUCVdIHtcbiAgICAgICAgYW5pbWF0aW9uOiByb3RhdGUgMnMgbGluZWFyIGluZmluaXRlO1xuICAgICAgfVxuXG4gICAgICBAa2V5ZnJhbWVzIHJvdGF0ZSB7XG4gICAgICAgIDAlIHtcbiAgICAgICAgICB0cmFuc2Zvcm06IHJvdGF0ZSgwZGVnKTtcbiAgICAgICAgfVxuICAgICAgICA1MCUge1xuICAgICAgICAgIHRyYW5zZm9ybTogcm90YXRlKDE4MGRlZyk7XG4gICAgICAgIH1cbiAgICAgICAgMTAwJSB7XG4gICAgICAgICAgdHJhbnNmb3JtOiByb3RhdGUoMzYwZGVnKTtcbiAgICAgICAgfVxuICAgICAgfSJdfSk7Y29uc3QgSkI9WyJpbnB1dCJdLFFCPWZ1bmN0aW9uKCl7cmV0dXJue2VudGVyRHVyYXRpb246MTUwfX0sS0I9bmV3IEZhKCJtYXQtY2hlY2tib3gtZGVmYXVsdC1vcHRpb25zIix7cHJvdmlkZWRJbjoicm9vdCIsZmFjdG9yeTpmdW5jdGlvbiAkQigpe3JldHVybntjb2xvcjoiYWNjZW50IixjbGlja0FjdGlvbjoiY2hlY2staW5kZXRlcm1pbmF0ZSJ9fX0pLHRWPW5ldyBGYSgibWF0LWNoZWNrYm94LWNsaWNrLWFjdGlvbiIpOwovKioKICAgICAqIEBsaWNlbnNlCiAgICAgKiBDb3B5cmlnaHQgR29vZ2xlIExMQyBBbGwgUmlnaHRzIFJlc2VydmVkLgogICAgICoKICAgICAqIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGFuIE1JVC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCiAgICAgKiBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlIGF0IGh0dHBzOi8vYW5ndWxhci5pby9saWNlbnNlCiAgICAgKi8KbGV0IG5WPTA7Y29uc3QgZVY9e3Byb3ZpZGU6TUYsdXNlRXhpc3Rpbmc6YWEoKCgpPT5yVikpLG11bHRpOiEwfTtjbGFzcyBhVnt9Y29uc3Qgb1Y9b0UoZUUoYUUobkUoY2xhc3N7Y29uc3RydWN0b3IodCl7dGhpcy5fZWxlbWVudFJlZj10fX0pKSkpO2NsYXNzIHJWIGV4dGVuZHMgb1Z7Y29uc3RydWN0b3IodCxuLGUsYSxvLHIsaSxjKXtzdXBlcih0KSx0aGlzLl9jaGFuZ2VEZXRlY3RvclJlZj1uLHRoaXMuX2ZvY3VzTW9uaXRvcj1lLHRoaXMuX25nWm9uZT1hLHRoaXMuX2NsaWNrQWN0aW9uPXIsdGhpcy5fYW5pbWF0aW9uTW9kZT1pLHRoaXMuX29wdGlvbnM9Yyx0aGlzLmFyaWFMYWJlbD0iIix0aGlzLmFyaWFMYWJlbGxlZGJ5PW51bGwsdGhpcy5fdW5pcXVlSWQ9Im1hdC1jaGVja2JveC0iKyArK25WLHRoaXMuaWQ9dGhpcy5fdW5pcXVlSWQsdGhpcy5sYWJlbFBvc2l0aW9uPSJhZnRlciIsdGhpcy5uYW1lPW51bGwsdGhpcy5jaGFuZ2U9bmV3IEVmLHRoaXMuaW5kZXRlcm1pbmF0ZUNoYW5nZT1uZXcgRWYsdGhpcy5fb25Ub3VjaGVkPSgpPT57fSx0aGlzLl9jdXJyZW50QW5pbWF0aW9uQ2xhc3M9IiIsdGhpcy5fY3VycmVudENoZWNrU3RhdGU9MCx0aGlzLl9jb250cm9sVmFsdWVBY2Nlc3NvckNoYW5nZUZuPSgpPT57fSx0aGlzLl9jaGVja2VkPSExLHRoaXMuX2Rpc2FibGVkPSExLHRoaXMuX2luZGV0ZXJtaW5hdGU9ITEsdGhpcy5fb3B0aW9ucz10aGlzLl9vcHRpb25zfHx7fSx0aGlzLl9vcHRpb25zLmNvbG9yJiYodGhpcy5jb2xvcj10aGlzLmRlZmF1bHRDb2xvcj10aGlzLl9vcHRpb25zLmNvbG9yKSx0aGlzLnRhYkluZGV4PXBhcnNlSW50KG8pfHwwLHRoaXMuX2NsaWNrQWN0aW9uPXRoaXMuX2NsaWNrQWN0aW9ufHx0aGlzLl9vcHRpb25zLmNsaWNrQWN0aW9ufWdldCBpbnB1dElkKCl7cmV0dXJuYCR7dGhpcy5pZHx8dGhpcy5fdW5pcXVlSWR9LWlucHV0YH1nZXQgcmVxdWlyZWQoKXtyZXR1cm4gdGhpcy5fcmVxdWlyZWR9c2V0IHJlcXVpcmVkKHQpe3RoaXMuX3JlcXVpcmVkPUd3KHQpfW5nQWZ0ZXJWaWV3SW5pdCgpe3RoaXMuX2ZvY3VzTW9uaXRvci5tb25pdG9yKHRoaXMuX2VsZW1lbnRSZWYsITApLnN1YnNjcmliZSgodD0+e3R8fFByb21pc2UucmVzb2x2ZSgpLnRoZW4oKCgpPT57dGhpcy5fb25Ub3VjaGVkKCksdGhpcy5fY2hhbmdlRGV0ZWN0b3JSZWYubWFya0ZvckNoZWNrKCl9KSl9KSksdGhpcy5fc3luY0luZGV0ZXJtaW5hdGUodGhpcy5faW5kZXRlcm1pbmF0ZSl9bmdBZnRlclZpZXdDaGVja2VkKCl7fW5nT25EZXN0cm95KCl7dGhpcy5fZm9jdXNNb25pdG9yLnN0b3BNb25pdG9yaW5nKHRoaXMuX2VsZW1lbnRSZWYpfWdldCBjaGVja2VkKCl7cmV0dXJuIHRoaXMuX2NoZWNrZWR9c2V0IGNoZWNrZWQodCl7dCE9dGhpcy5jaGVja2VkJiYodGhpcy5fY2hlY2tlZD10LHRoaXMuX2NoYW5nZURldGVjdG9yUmVmLm1hcmtGb3JDaGVjaygpKX1nZXQgZGlzYWJsZWQoKXtyZXR1cm4gdGhpcy5fZGlzYWJsZWR9c2V0IGRpc2FibGVkKHQpe2NvbnN0IG49R3codCk7biE9PXRoaXMuZGlzYWJsZWQmJih0aGlzLl9kaXNhYmxlZD1uLHRoaXMuX2NoYW5nZURldGVjdG9yUmVmLm1hcmtGb3JDaGVjaygpKX1nZXQgaW5kZXRlcm1pbmF0ZSgpe3JldHVybiB0aGlzLl9pbmRldGVybWluYXRlfXNldCBpbmRldGVybWluYXRlKHQpe2NvbnN0IG49dCE9dGhpcy5faW5kZXRlcm1pbmF0ZTt0aGlzLl9pbmRldGVybWluYXRlPUd3KHQpLG4mJih0aGlzLl90cmFuc2l0aW9uQ2hlY2tTdGF0ZSh0aGlzLl9pbmRldGVybWluYXRlPzM6dGhpcy5jaGVja2VkPzE6MiksdGhpcy5pbmRldGVybWluYXRlQ2hhbmdlLmVtaXQodGhpcy5faW5kZXRlcm1pbmF0ZSkpLHRoaXMuX3N5bmNJbmRldGVybWluYXRlKHRoaXMuX2luZGV0ZXJtaW5hdGUpfV9pc1JpcHBsZURpc2FibGVkKCl7cmV0dXJuIHRoaXMuZGlzYWJsZVJpcHBsZXx8dGhpcy5kaXNhYmxlZH1fb25MYWJlbFRleHRDaGFuZ2UoKXt0aGlzLl9jaGFuZ2VEZXRlY3RvclJlZi5kZXRlY3RDaGFuZ2VzKCl9d3JpdGVWYWx1ZSh0KXt0aGlzLmNoZWNrZWQ9ISF0fXJlZ2lzdGVyT25DaGFuZ2UodCl7dGhpcy5fY29udHJvbFZhbHVlQWNjZXNzb3JDaGFuZ2VGbj10fXJlZ2lzdGVyT25Ub3VjaGVkKHQpe3RoaXMuX29uVG91Y2hlZD10fXNldERpc2FibGVkU3RhdGUodCl7dGhpcy5kaXNhYmxlZD10fV9nZXRBcmlhQ2hlY2tlZCgpe3JldHVybiB0aGlzLmNoZWNrZWQ/InRydWUiOnRoaXMuaW5kZXRlcm1pbmF0ZT8ibWl4ZWQiOiJmYWxzZSJ9X3RyYW5zaXRpb25DaGVja1N0YXRlKHQpe2xldCBuPXRoaXMuX2N1cnJlbnRDaGVja1N0YXRlLGU9dGhpcy5fZWxlbWVudFJlZi5uYXRpdmVFbGVtZW50O2lmKG4hPT10JiYodGhpcy5fY3VycmVudEFuaW1hdGlvbkNsYXNzLmxlbmd0aD4wJiZlLmNsYXNzTGlzdC5yZW1vdmUodGhpcy5fY3VycmVudEFuaW1hdGlvbkNsYXNzKSx0aGlzLl9jdXJyZW50QW5pbWF0aW9uQ2xhc3M9dGhpcy5fZ2V0QW5pbWF0aW9uQ2xhc3NGb3JDaGVja1N0YXRlVHJhbnNpdGlvbihuLHQpLHRoaXMuX2N1cnJlbnRDaGVja1N0YXRlPXQsdGhpcy5fY3VycmVudEFuaW1hdGlvbkNsYXNzLmxlbmd0aD4wKSl7ZS5jbGFzc0xpc3QuYWRkKHRoaXMuX2N1cnJlbnRBbmltYXRpb25DbGFzcyk7Y29uc3QgdD10aGlzLl9jdXJyZW50QW5pbWF0aW9uQ2xhc3M7dGhpcy5fbmdab25lLnJ1bk91dHNpZGVBbmd1bGFyKCgoKT0+e3NldFRpbWVvdXQoKCgpPT57ZS5jbGFzc0xpc3QucmVtb3ZlKHQpfSksMWUzKX0pKX19X2VtaXRDaGFuZ2VFdmVudCgpe2NvbnN0IHQ9bmV3IGFWO3Quc291cmNlPXRoaXMsdC5jaGVja2VkPXRoaXMuY2hlY2tlZCx0aGlzLl9jb250cm9sVmFsdWVBY2Nlc3NvckNoYW5nZUZuKHRoaXMuY2hlY2tlZCksdGhpcy5jaGFuZ2UuZW1pdCh0KX10b2dnbGUoKXt0aGlzLmNoZWNrZWQ9IXRoaXMuY2hlY2tlZH1fb25JbnB1dENsaWNrKHQpe3Quc3RvcFByb3BhZ2F0aW9uKCksdGhpcy5kaXNhYmxlZHx8Im5vb3AiPT09dGhpcy5fY2xpY2tBY3Rpb24/dGhpcy5kaXNhYmxlZHx8Im5vb3AiIT09dGhpcy5fY2xpY2tBY3Rpb258fCh0aGlzLl9pbnB1dEVsZW1lbnQubmF0aXZlRWxlbWVudC5jaGVja2VkPXRoaXMuY2hlY2tlZCx0aGlzLl9pbnB1dEVsZW1lbnQubmF0aXZlRWxlbWVudC5pbmRldGVybWluYXRlPXRoaXMuaW5kZXRlcm1pbmF0ZSk6KHRoaXMuaW5kZXRlcm1pbmF0ZSYmImNoZWNrIiE9PXRoaXMuX2NsaWNrQWN0aW9uJiZQcm9taXNlLnJlc29sdmUoKS50aGVuKCgoKT0+e3RoaXMuX2luZGV0ZXJtaW5hdGU9ITEsdGhpcy5pbmRldGVybWluYXRlQ2hhbmdlLmVtaXQodGhpcy5faW5kZXRlcm1pbmF0ZSl9KSksdGhpcy50b2dnbGUoKSx0aGlzLl90cmFuc2l0aW9uQ2hlY2tTdGF0ZSh0aGlzLl9jaGVja2VkPzE6MiksdGhpcy5fZW1pdENoYW5nZUV2ZW50KCkpfWZvY3VzKHQ9ImtleWJvYXJkIixuKXt0aGlzLl9mb2N1c01vbml0b3IuZm9jdXNWaWEodGhpcy5faW5wdXRFbGVtZW50LHQsbil9X29uSW50ZXJhY3Rpb25FdmVudCh0KXt0LnN0b3BQcm9wYWdhdGlvbigpfV9nZXRBbmltYXRpb25DbGFzc0ZvckNoZWNrU3RhdGVUcmFuc2l0aW9uKHQsbil7aWYoIk5vb3BBbmltYXRpb25zIj09PXRoaXMuX2FuaW1hdGlvbk1vZGUpcmV0dXJuIiI7bGV0IGU9IiI7c3dpdGNoKHQpe2Nhc2UgMDppZigxPT09billPSJ1bmNoZWNrZWQtY2hlY2tlZCI7ZWxzZXtpZigzIT1uKXJldHVybiIiO2U9InVuY2hlY2tlZC1pbmRldGVybWluYXRlIn1icmVhaztjYXNlIDI6ZT0xPT09bj8idW5jaGVja2VkLWNoZWNrZWQiOiJ1bmNoZWNrZWQtaW5kZXRlcm1pbmF0ZSI7YnJlYWs7Y2FzZSAxOmU9Mj09PW4/ImNoZWNrZWQtdW5jaGVja2VkIjoiY2hlY2tlZC1pbmRldGVybWluYXRlIjticmVhaztjYXNlIDM6ZT0xPT09bj8iaW5kZXRlcm1pbmF0ZS1jaGVja2VkIjoiaW5kZXRlcm1pbmF0ZS11bmNoZWNrZWQifXJldHVybmBtYXQtY2hlY2tib3gtYW5pbS0ke2V9YH1fc3luY0luZGV0ZXJtaW5hdGUodCl7Y29uc3Qgbj10aGlzLl9pbnB1dEVsZW1lbnQ7biYmKG4ubmF0aXZlRWxlbWVudC5pbmRldGVybWluYXRlPXQpfX1yVi7JtWZhYz1mdW5jdGlvbiB0KG4pe3JldHVybiBuZXcobnx8clYpKFpnKHh1KSxaZyhWbSksWmcoVFMpLFpnKEpfKSxYZygidGFiaW5kZXgiKSxaZyh0Viw4KSxaZyhkayw4KSxaZyhLQiw4KSl9LHJWLsm1Y21wPV9vKHt0eXBlOnJWLHNlbGVjdG9yczpbWyJtYXQtY2hlY2tib3giXV0sdmlld1F1ZXJ5OmZ1bmN0aW9uIHQobixlKXt2YXIgYTsxJm4mJihVZihKQiwhMCksVWYoekUsITApKSwyJm4mJihWZihhPVpmKCkpJiYoZS5faW5wdXRFbGVtZW50PWEuZmlyc3QpLFZmKGE9WmYoKSkmJihlLnJpcHBsZT1hLmZpcnN0KSl9LGhvc3RBdHRyczpbMSwibWF0LWNoZWNrYm94Il0saG9zdFZhcnM6MTIsaG9zdEJpbmRpbmdzOmZ1bmN0aW9uIHQobixlKXsyJm4mJihlYigiaWQiLGUuaWQpLE5nKCJ0YWJpbmRleCIsbnVsbCksRHAoIm1hdC1jaGVja2JveC1pbmRldGVybWluYXRlIixlLmluZGV0ZXJtaW5hdGUpKCJtYXQtY2hlY2tib3gtY2hlY2tlZCIsZS5jaGVja2VkKSgibWF0LWNoZWNrYm94LWRpc2FibGVkIixlLmRpc2FibGVkKSgibWF0LWNoZWNrYm94LWxhYmVsLWJlZm9yZSIsImJlZm9yZSI9PWUubGFiZWxQb3NpdGlvbikoIl9tYXQtYW5pbWF0aW9uLW5vb3BhYmxlIiwiTm9vcEFuaW1hdGlvbnMiPT09ZS5fYW5pbWF0aW9uTW9kZSkpfSxpbnB1dHM6e2Rpc2FibGVSaXBwbGU6ImRpc2FibGVSaXBwbGUiLGNvbG9yOiJjb2xvciIsdGFiSW5kZXg6InRhYkluZGV4IixhcmlhTGFiZWw6WyJhcmlhLWxhYmVsIiwiYXJpYUxhYmVsIl0sYXJpYUxhYmVsbGVkYnk6WyJhcmlhLWxhYmVsbGVkYnkiLCJhcmlhTGFiZWxsZWRieSJdLGlkOiJpZCIsbGFiZWxQb3NpdGlvbjoibGFiZWxQb3NpdGlvbiIsbmFtZToibmFtZSIscmVxdWlyZWQ6InJlcXVpcmVkIixjaGVja2VkOiJjaGVja2VkIixkaXNhYmxlZDoiZGlzYWJsZWQiLGluZGV0ZXJtaW5hdGU6ImluZGV0ZXJtaW5hdGUiLGFyaWFEZXNjcmliZWRieTpbImFyaWEtZGVzY3JpYmVkYnkiLCJhcmlhRGVzY3JpYmVkYnkiXSx2YWx1ZToidmFsdWUifSxvdXRwdXRzOntjaGFuZ2U6ImNoYW5nZSIsaW5kZXRlcm1pbmF0ZUNoYW5nZToiaW5kZXRlcm1pbmF0ZUNoYW5nZSJ9LGV4cG9ydEFzOlsibWF0Q2hlY2tib3giXSxmZWF0dXJlczpbTXUoW2VWXSksaGddLG5nQ29udGVudFNlbGVjdG9yczpbIioiXSxkZWNsczoxNyx2YXJzOjIwLGNvbnN0czpbWzEsIm1hdC1jaGVja2JveC1sYXlvdXQiXSxbImxhYmVsIiwiIl0sWzEsIm1hdC1jaGVja2JveC1pbm5lci1jb250YWluZXIiXSxbInR5cGUiLCJjaGVja2JveCIsMSwibWF0LWNoZWNrYm94LWlucHV0IiwiY2RrLXZpc3VhbGx5LWhpZGRlbiIsMywiaWQiLCJyZXF1aXJlZCIsImNoZWNrZWQiLCJkaXNhYmxlZCIsInRhYkluZGV4IiwiY2hhbmdlIiwiY2xpY2siXSxbImlucHV0IiwiIl0sWyJtYXRSaXBwbGUiLCIiLDEsIm1hdC1jaGVja2JveC1yaXBwbGUiLCJtYXQtZm9jdXMtaW5kaWNhdG9yIiwzLCJtYXRSaXBwbGVUcmlnZ2VyIiwibWF0UmlwcGxlRGlzYWJsZWQiLCJtYXRSaXBwbGVSYWRpdXMiLCJtYXRSaXBwbGVDZW50ZXJlZCIsIm1hdFJpcHBsZUFuaW1hdGlvbiJdLFsxLCJtYXQtcmlwcGxlLWVsZW1lbnQiLCJtYXQtY2hlY2tib3gtcGVyc2lzdGVudC1yaXBwbGUiXSxbMSwibWF0LWNoZWNrYm94LWZyYW1lIl0sWzEsIm1hdC1jaGVja2JveC1iYWNrZ3JvdW5kIl0sWyJ2ZXJzaW9uIiwiMS4xIiwiZm9jdXNhYmxlIiwiZmFsc2UiLCJ2aWV3Qm94IiwiMCAwIDI0IDI0IiwwLCJ4bWwiLCJzcGFjZSIsInByZXNlcnZlIiwxLCJtYXQtY2hlY2tib3gtY2hlY2ttYXJrIl0sWyJmaWxsIiwibm9uZSIsInN0cm9rZSIsIndoaXRlIiwiZCIsIk00LjEsMTIuNyA5LDE3LjYgMjAuMyw2LjMiLDEsIm1hdC1jaGVja2JveC1jaGVja21hcmstcGF0aCJdLFsxLCJtYXQtY2hlY2tib3gtbWl4ZWRtYXJrIl0sWzEsIm1hdC1jaGVja2JveC1sYWJlbCIsMywiY2RrT2JzZXJ2ZUNvbnRlbnQiXSxbImNoZWNrYm94TGFiZWwiLCIiXSxbMiwiZGlzcGxheSIsIm5vbmUiXV0sdGVtcGxhdGU6ZnVuY3Rpb24gdChuLGUpe2lmKDEmbiYmKGJwKCksS2coMCwibGFiZWwiLDAsMSksS2coMiwiZGl2IiwyKSxLZygzLCJpbnB1dCIsMyw0KSxjcCgiY2hhbmdlIiwoZnVuY3Rpb24gdChuKXtyZXR1cm4gZS5fb25JbnRlcmFjdGlvbkV2ZW50KG4pfSkpKCJjbGljayIsKGZ1bmN0aW9uIHQobil7cmV0dXJuIGUuX29uSW5wdXRDbGljayhuKX0pKSwkZygpLEtnKDUsImRpdiIsNSksdHAoNiwiZGl2Iiw2KSwkZygpLHRwKDcsImRpdiIsNyksS2coOCwiZGl2Iiw4KSx1aSgpLEtnKDksInN2ZyIsOSksdHAoMTAsInBhdGgiLDEwKSwkZygpLGZpKCksdHAoMTEsImRpdiIsMTEpLCRnKCksJGcoKSxLZygxMiwic3BhbiIsMTIsMTMpLGNwKCJjZGtPYnNlcnZlQ29udGVudCIsKGZ1bmN0aW9uIHQoKXtyZXR1cm4gZS5fb25MYWJlbFRleHRDaGFuZ2UoKX0pKSxLZygxNCwic3BhbiIsMTQpLEpwKDE1LCLCoCIpLCRnKCksaHAoMTYpLCRnKCksJGcoKSksMiZuKXtjb25zdCB0PXFnKDEpLG49cWcoMTMpO05nKCJmb3IiLGUuaW5wdXRJZCksd3MoMiksRHAoIm1hdC1jaGVja2JveC1pbm5lci1jb250YWluZXItbm8tc2lkZS1tYXJnaW4iLCFuLnRleHRDb250ZW50fHwhbi50ZXh0Q29udGVudC50cmltKCkpLHdzKDEpLEpnKCJpZCIsZS5pbnB1dElkKSgicmVxdWlyZWQiLGUucmVxdWlyZWQpKCJjaGVja2VkIixlLmNoZWNrZWQpKCJkaXNhYmxlZCIsZS5kaXNhYmxlZCkoInRhYkluZGV4IixlLnRhYkluZGV4KSxOZygidmFsdWUiLGUudmFsdWUpKCJuYW1lIixlLm5hbWUpKCJhcmlhLWxhYmVsIixlLmFyaWFMYWJlbHx8bnVsbCkoImFyaWEtbGFiZWxsZWRieSIsZS5hcmlhTGFiZWxsZWRieSkoImFyaWEtY2hlY2tlZCIsZS5fZ2V0QXJpYUNoZWNrZWQoKSkoImFyaWEtZGVzY3JpYmVkYnkiLGUuYXJpYURlc2NyaWJlZGJ5KSx3cygyKSxKZygibWF0UmlwcGxlVHJpZ2dlciIsdCkoIm1hdFJpcHBsZURpc2FibGVkIixlLl9pc1JpcHBsZURpc2FibGVkKCkpKCJtYXRSaXBwbGVSYWRpdXMiLDIwKSgibWF0UmlwcGxlQ2VudGVyZWQiLCEwKSgibWF0UmlwcGxlQW5pbWF0aW9uIixiZigxOSxRQikpfX0sZGlyZWN0aXZlczpbekUsJHddLHN0eWxlczpbIkBrZXlmcmFtZXMgbWF0LWNoZWNrYm94LWZhZGUtaW4tYmFja2dyb3VuZHswJXtvcGFjaXR5OjB9NTAle29wYWNpdHk6MX19QGtleWZyYW1lcyBtYXQtY2hlY2tib3gtZmFkZS1vdXQtYmFja2dyb3VuZHswJSw1MCV7b3BhY2l0eToxfTEwMCV7b3BhY2l0eTowfX1Aa2V5ZnJhbWVzIG1hdC1jaGVja2JveC11bmNoZWNrZWQtY2hlY2tlZC1jaGVja21hcmstcGF0aHswJSw1MCV7c3Ryb2tlLWRhc2hvZmZzZXQ6MjIuOTEwMjU5fTUwJXthbmltYXRpb24tdGltaW5nLWZ1bmN0aW9uOmN1YmljLWJlemllcigwLCAwLCAwLjIsIDAuMSl9MTAwJXtzdHJva2UtZGFzaG9mZnNldDowfX1Aa2V5ZnJhbWVzIG1hdC1jaGVja2JveC11bmNoZWNrZWQtaW5kZXRlcm1pbmF0ZS1taXhlZG1hcmt7MCUsNjguMiV7dHJhbnNmb3JtOnNjYWxlWCgwKX02OC4yJXthbmltYXRpb24tdGltaW5nLWZ1bmN0aW9uOmN1YmljLWJlemllcigwLCAwLCAwLCAxKX0xMDAle3RyYW5zZm9ybTpzY2FsZVgoMSl9fUBrZXlmcmFtZXMgbWF0LWNoZWNrYm94LWNoZWNrZWQtdW5jaGVja2VkLWNoZWNrbWFyay1wYXRoe2Zyb217YW5pbWF0aW9uLXRpbWluZy1mdW5jdGlvbjpjdWJpYy1iZXppZXIoMC40LCAwLCAxLCAxKTtzdHJva2UtZGFzaG9mZnNldDowfXRve3N0cm9rZS1kYXNob2Zmc2V0Oi0yMi45MTAyNTl9fUBrZXlmcmFtZXMgbWF0LWNoZWNrYm94LWNoZWNrZWQtaW5kZXRlcm1pbmF0ZS1jaGVja21hcmt7ZnJvbXthbmltYXRpb24tdGltaW5nLWZ1bmN0aW9uOmN1YmljLWJlemllcigwLCAwLCAwLjIsIDAuMSk7b3BhY2l0eToxO3RyYW5zZm9ybTpyb3RhdGUoMGRlZyl9dG97b3BhY2l0eTowO3RyYW5zZm9ybTpyb3RhdGUoNDVkZWcpfX1Aa2V5ZnJhbWVzIG1hdC1jaGVja2JveC1pbmRldGVybWluYXRlLWNoZWNrZWQtY2hlY2ttYXJre2Zyb217YW5pbWF0aW9uLXRpbWluZy1mdW5jdGlvbjpjdWJpYy1iZXppZXIoMC4xNCwgMCwgMCwgMSk7b3BhY2l0eTowO3RyYW5zZm9ybTpyb3RhdGUoNDVkZWcpfXRve29wYWNpdHk6MTt0cmFuc2Zvcm06cm90YXRlKDM2MGRlZyl9fUBrZXlmcmFtZXMgbWF0LWNoZWNrYm94LWNoZWNrZWQtaW5kZXRlcm1pbmF0ZS1taXhlZG1hcmt7ZnJvbXthbmltYXRpb24tdGltaW5nLWZ1bmN0aW9uOmN1YmljLWJlemllcigwLCAwLCAwLjIsIDAuMSk7b3BhY2l0eTowO3RyYW5zZm9ybTpyb3RhdGUoLTQ1ZGVnKX10b3tvcGFjaXR5OjE7dHJhbnNmb3JtOnJvdGF0ZSgwZGVnKX19QGtleWZyYW1lcyBtYXQtY2hlY2tib3gtaW5kZXRlcm1pbmF0ZS1jaGVja2VkLW1peGVkbWFya3tmcm9te2FuaW1hdGlvbi10aW1pbmctZnVuY3Rpb246Y3ViaWMtYmV6aWVyKDAuMTQsIDAsIDAsIDEpO29wYWNpdHk6MTt0cmFuc2Zvcm06cm90YXRlKDBkZWcpfXRve29wYWNpdHk6MDt0cmFuc2Zvcm06cm90YXRlKDMxNWRlZyl9fUBrZXlmcmFtZXMgbWF0LWNoZWNrYm94LWluZGV0ZXJtaW5hdGUtdW5jaGVja2VkLW1peGVkbWFya3swJXthbmltYXRpb24tdGltaW5nLWZ1bmN0aW9uOmxpbmVhcjtvcGFjaXR5OjE7dHJhbnNmb3JtOnNjYWxlWCgxKX0zMi44JSwxMDAle29wYWNpdHk6MDt0cmFuc2Zvcm06c2NhbGVYKDApfX0ubWF0LWNoZWNrYm94LWJhY2tncm91bmQsLm1hdC1jaGVja2JveC1mcmFtZXt0b3A6MDtsZWZ0OjA7cmlnaHQ6MDtib3R0b206MDtwb3NpdGlvbjphYnNvbHV0ZTtib3JkZXItcmFkaXVzOjJweDtib3gtc2l6aW5nOmJvcmRlci1ib3g7cG9pbnRlci1ldmVudHM6bm9uZX0ubWF0LWNoZWNrYm94e3RyYW5zaXRpb246YmFja2dyb3VuZCA0MDBtcyBjdWJpYy1iZXppZXIoMC4yNSwgMC44LCAwLjI1LCAxKSxib3gtc2hhZG93IDI4MG1zIGN1YmljLWJlemllcigwLjQsIDAsIDAuMiwgMSk7Y3Vyc29yOnBvaW50ZXI7LXdlYmtpdC10YXAtaGlnaGxpZ2h0LWNvbG9yOnRyYW5zcGFyZW50fS5fbWF0LWFuaW1hdGlvbi1ub29wYWJsZS5tYXQtY2hlY2tib3h7dHJhbnNpdGlvbjpub25lO2FuaW1hdGlvbjpub25lfS5tYXQtY2hlY2tib3ggLm1hdC1yaXBwbGUtZWxlbWVudDpub3QoLm1hdC1jaGVja2JveC1wZXJzaXN0ZW50LXJpcHBsZSl7b3BhY2l0eTouMTZ9Lm1hdC1jaGVja2JveC1sYXlvdXR7LXdlYmtpdC11c2VyLXNlbGVjdDpub25lOy1tb3otdXNlci1zZWxlY3Q6bm9uZTstbXMtdXNlci1zZWxlY3Q6bm9uZTt1c2VyLXNlbGVjdDpub25lO2N1cnNvcjppbmhlcml0O2FsaWduLWl0ZW1zOmJhc2VsaW5lO3ZlcnRpY2FsLWFsaWduOm1pZGRsZTtkaXNwbGF5OmlubGluZS1mbGV4O3doaXRlLXNwYWNlOm5vd3JhcH0ubWF0LWNoZWNrYm94LWxhYmVsey13ZWJraXQtdXNlci1zZWxlY3Q6YXV0bzstbW96LXVzZXItc2VsZWN0OmF1dG87LW1zLXVzZXItc2VsZWN0OmF1dG87dXNlci1zZWxlY3Q6YXV0b30ubWF0LWNoZWNrYm94LWlubmVyLWNvbnRhaW5lcntkaXNwbGF5OmlubGluZS1ibG9jaztoZWlnaHQ6MTZweDtsaW5lLWhlaWdodDowO21hcmdpbjphdXRvO21hcmdpbi1yaWdodDo4cHg7b3JkZXI6MDtwb3NpdGlvbjpyZWxhdGl2ZTt2ZXJ0aWNhbC1hbGlnbjptaWRkbGU7d2hpdGUtc3BhY2U6bm93cmFwO3dpZHRoOjE2cHg7ZmxleC1zaHJpbms6MH1bZGlyPXJ0bF0gLm1hdC1jaGVja2JveC1pbm5lci1jb250YWluZXJ7bWFyZ2luLWxlZnQ6OHB4O21hcmdpbi1yaWdodDphdXRvfS5tYXQtY2hlY2tib3gtaW5uZXItY29udGFpbmVyLW5vLXNpZGUtbWFyZ2lue21hcmdpbi1sZWZ0OjA7bWFyZ2luLXJpZ2h0OjB9Lm1hdC1jaGVja2JveC1mcmFtZXtiYWNrZ3JvdW5kLWNvbG9yOnRyYW5zcGFyZW50O3RyYW5zaXRpb246Ym9yZGVyLWNvbG9yIDkwbXMgY3ViaWMtYmV6aWVyKDAsIDAsIDAuMiwgMC4xKTtib3JkZXItd2lkdGg6MnB4O2JvcmRlci1zdHlsZTpzb2xpZH0uX21hdC1hbmltYXRpb24tbm9vcGFibGUgLm1hdC1jaGVja2JveC1mcmFtZXt0cmFuc2l0aW9uOm5vbmV9LmNkay1oaWdoLWNvbnRyYXN0LWFjdGl2ZSAubWF0LWNoZWNrYm94LmNkay1rZXlib2FyZC1mb2N1c2VkIC5tYXQtY2hlY2tib3gtZnJhbWV7Ym9yZGVyLXN0eWxlOmRvdHRlZH0ubWF0LWNoZWNrYm94LWJhY2tncm91bmR7YWxpZ24taXRlbXM6Y2VudGVyO2Rpc3BsYXk6aW5saW5lLWZsZXg7anVzdGlmeS1jb250ZW50OmNlbnRlcjt0cmFuc2l0aW9uOmJhY2tncm91bmQtY29sb3IgOTBtcyBjdWJpYy1iZXppZXIoMCwgMCwgMC4yLCAwLjEpLG9wYWNpdHkgOTBtcyBjdWJpYy1iZXppZXIoMCwgMCwgMC4yLCAwLjEpfS5fbWF0LWFuaW1hdGlvbi1ub29wYWJsZSAubWF0LWNoZWNrYm94LWJhY2tncm91bmR7dHJhbnNpdGlvbjpub25lfS5jZGstaGlnaC1jb250cmFzdC1hY3RpdmUgLm1hdC1jaGVja2JveCAubWF0LWNoZWNrYm94LWJhY2tncm91bmR7YmFja2dyb3VuZDpub25lfS5tYXQtY2hlY2tib3gtcGVyc2lzdGVudC1yaXBwbGV7d2lkdGg6MTAwJTtoZWlnaHQ6MTAwJTt0cmFuc2Zvcm06bm9uZX0ubWF0LWNoZWNrYm94LWlubmVyLWNvbnRhaW5lcjpob3ZlciAubWF0LWNoZWNrYm94LXBlcnNpc3RlbnQtcmlwcGxle29wYWNpdHk6LjA0fS5tYXQtY2hlY2tib3guY2RrLWtleWJvYXJkLWZvY3VzZWQgLm1hdC1jaGVja2JveC1wZXJzaXN0ZW50LXJpcHBsZXtvcGFjaXR5Oi4xMn0ubWF0LWNoZWNrYm94LXBlcnNpc3RlbnQtcmlwcGxlLC5tYXQtY2hlY2tib3gubWF0LWNoZWNrYm94LWRpc2FibGVkIC5tYXQtY2hlY2tib3gtaW5uZXItY29udGFpbmVyOmhvdmVyIC5tYXQtY2hlY2tib3gtcGVyc2lzdGVudC1yaXBwbGV7b3BhY2l0eTowfUBtZWRpYShob3Zlcjogbm9uZSl7Lm1hdC1jaGVja2JveC1pbm5lci1jb250YWluZXI6aG92ZXIgLm1hdC1jaGVja2JveC1wZXJzaXN0ZW50LXJpcHBsZXtkaXNwbGF5Om5vbmV9fS5tYXQtY2hlY2tib3gtY2hlY2ttYXJre3RvcDowO2xlZnQ6MDtyaWdodDowO2JvdHRvbTowO3Bvc2l0aW9uOmFic29sdXRlO3dpZHRoOjEwMCV9Lm1hdC1jaGVja2JveC1jaGVja21hcmstcGF0aHtzdHJva2UtZGFzaG9mZnNldDoyMi45MTAyNTk7c3Ryb2tlLWRhc2hhcnJheToyMi45MTAyNTk7c3Ryb2tlLXdpZHRoOjIuMTMzMzMzMzMzM3B4fS5jZGstaGlnaC1jb250cmFzdC1ibGFjay1vbi13aGl0ZSAubWF0LWNoZWNrYm94LWNoZWNrbWFyay1wYXRoe3N0cm9rZTojMDAwICFpbXBvcnRhbnR9Lm1hdC1jaGVja2JveC1taXhlZG1hcmt7d2lkdGg6Y2FsYygxMDAlIC0gNnB4KTtoZWlnaHQ6MnB4O29wYWNpdHk6MDt0cmFuc2Zvcm06c2NhbGVYKDApIHJvdGF0ZSgwZGVnKTtib3JkZXItcmFkaXVzOjJweH0uY2RrLWhpZ2gtY29udHJhc3QtYWN0aXZlIC5tYXQtY2hlY2tib3gtbWl4ZWRtYXJre2hlaWdodDowO2JvcmRlci10b3A6c29saWQgMnB4O21hcmdpbi10b3A6MnB4fS5tYXQtY2hlY2tib3gtbGFiZWwtYmVmb3JlIC5tYXQtY2hlY2tib3gtaW5uZXItY29udGFpbmVye29yZGVyOjE7bWFyZ2luLWxlZnQ6OHB4O21hcmdpbi1yaWdodDphdXRvfVtkaXI9cnRsXSAubWF0LWNoZWNrYm94LWxhYmVsLWJlZm9yZSAubWF0LWNoZWNrYm94LWlubmVyLWNvbnRhaW5lcnttYXJnaW4tbGVmdDphdXRvO21hcmdpbi1yaWdodDo4cHh9Lm1hdC1jaGVja2JveC1jaGVja2VkIC5tYXQtY2hlY2tib3gtY2hlY2ttYXJre29wYWNpdHk6MX0ubWF0LWNoZWNrYm94LWNoZWNrZWQgLm1hdC1jaGVja2JveC1jaGVja21hcmstcGF0aHtzdHJva2UtZGFzaG9mZnNldDowfS5tYXQtY2hlY2tib3gtY2hlY2tlZCAubWF0LWNoZWNrYm94LW1peGVkbWFya3t0cmFuc2Zvcm06c2NhbGVYKDEpIHJvdGF0ZSgtNDVkZWcpfS5tYXQtY2hlY2tib3gtaW5kZXRlcm1pbmF0ZSAubWF0LWNoZWNrYm94LWNoZWNrbWFya3tvcGFjaXR5OjA7dHJhbnNmb3JtOnJvdGF0ZSg0NWRlZyl9Lm1hdC1jaGVja2JveC1pbmRldGVybWluYXRlIC5tYXQtY2hlY2tib3gtY2hlY2ttYXJrLXBhdGh7c3Ryb2tlLWRhc2hvZmZzZXQ6MH0ubWF0LWNoZWNrYm94LWluZGV0ZXJtaW5hdGUgLm1hdC1jaGVja2JveC1taXhlZG1hcmt7b3BhY2l0eToxO3RyYW5zZm9ybTpzY2FsZVgoMSkgcm90YXRlKDBkZWcpfS5tYXQtY2hlY2tib3gtdW5jaGVja2VkIC5tYXQtY2hlY2tib3gtYmFja2dyb3VuZHtiYWNrZ3JvdW5kLWNvbG9yOnRyYW5zcGFyZW50fS5tYXQtY2hlY2tib3gtZGlzYWJsZWR7Y3Vyc29yOmRlZmF1bHR9LmNkay1oaWdoLWNvbnRyYXN0LWFjdGl2ZSAubWF0LWNoZWNrYm94LWRpc2FibGVke29wYWNpdHk6LjV9Lm1hdC1jaGVja2JveC1hbmltLXVuY2hlY2tlZC1jaGVja2VkIC5tYXQtY2hlY2tib3gtYmFja2dyb3VuZHthbmltYXRpb246MTgwbXMgbGluZWFyIDBtcyBtYXQtY2hlY2tib3gtZmFkZS1pbi1iYWNrZ3JvdW5kfS5tYXQtY2hlY2tib3gtYW5pbS11bmNoZWNrZWQtY2hlY2tlZCAubWF0LWNoZWNrYm94LWNoZWNrbWFyay1wYXRoe2FuaW1hdGlvbjoxODBtcyBsaW5lYXIgMG1zIG1hdC1jaGVja2JveC11bmNoZWNrZWQtY2hlY2tlZC1jaGVja21hcmstcGF0aH0ubWF0LWNoZWNrYm94LWFuaW0tdW5jaGVja2VkLWluZGV0ZXJtaW5hdGUgLm1hdC1jaGVja2JveC1iYWNrZ3JvdW5ke2FuaW1hdGlvbjoxODBtcyBsaW5lYXIgMG1zIG1hdC1jaGVja2JveC1mYWRlLWluLWJhY2tncm91bmR9Lm1hdC1jaGVja2JveC1hbmltLXVuY2hlY2tlZC1pbmRldGVybWluYXRlIC5tYXQtY2hlY2tib3gtbWl4ZWRtYXJre2FuaW1hdGlvbjo5MG1zIGxpbmVhciAwbXMgbWF0LWNoZWNrYm94LXVuY2hlY2tlZC1pbmRldGVybWluYXRlLW1peGVkbWFya30ubWF0LWNoZWNrYm94LWFuaW0tY2hlY2tlZC11bmNoZWNrZWQgLm1hdC1jaGVja2JveC1iYWNrZ3JvdW5ke2FuaW1hdGlvbjoxODBtcyBsaW5lYXIgMG1zIG1hdC1jaGVja2JveC1mYWRlLW91dC1iYWNrZ3JvdW5kfS5tYXQtY2hlY2tib3gtYW5pbS1jaGVja2VkLXVuY2hlY2tlZCAubWF0LWNoZWNrYm94LWNoZWNrbWFyay1wYXRoe2FuaW1hdGlvbjo5MG1zIGxpbmVhciAwbXMgbWF0LWNoZWNrYm94LWNoZWNrZWQtdW5jaGVja2VkLWNoZWNrbWFyay1wYXRofS5tYXQtY2hlY2tib3gtYW5pbS1jaGVja2VkLWluZGV0ZXJtaW5hdGUgLm1hdC1jaGVja2JveC1jaGVja21hcmt7YW5pbWF0aW9uOjkwbXMgbGluZWFyIDBtcyBtYXQtY2hlY2tib3gtY2hlY2tlZC1pbmRldGVybWluYXRlLWNoZWNrbWFya30ubWF0LWNoZWNrYm94LWFuaW0tY2hlY2tlZC1pbmRldGVybWluYXRlIC5tYXQtY2hlY2tib3gtbWl4ZWRtYXJre2FuaW1hdGlvbjo5MG1zIGxpbmVhciAwbXMgbWF0LWNoZWNrYm94LWNoZWNrZWQtaW5kZXRlcm1pbmF0ZS1taXhlZG1hcmt9Lm1hdC1jaGVja2JveC1hbmltLWluZGV0ZXJtaW5hdGUtY2hlY2tlZCAubWF0LWNoZWNrYm94LWNoZWNrbWFya3thbmltYXRpb246NTAwbXMgbGluZWFyIDBtcyBtYXQtY2hlY2tib3gtaW5kZXRlcm1pbmF0ZS1jaGVja2VkLWNoZWNrbWFya30ubWF0LWNoZWNrYm94LWFuaW0taW5kZXRlcm1pbmF0ZS1jaGVja2VkIC5tYXQtY2hlY2tib3gtbWl4ZWRtYXJre2FuaW1hdGlvbjo1MDBtcyBsaW5lYXIgMG1zIG1hdC1jaGVja2JveC1pbmRldGVybWluYXRlLWNoZWNrZWQtbWl4ZWRtYXJrfS5tYXQtY2hlY2tib3gtYW5pbS1pbmRldGVybWluYXRlLXVuY2hlY2tlZCAubWF0LWNoZWNrYm94LWJhY2tncm91bmR7YW5pbWF0aW9uOjE4MG1zIGxpbmVhciAwbXMgbWF0LWNoZWNrYm94LWZhZGUtb3V0LWJhY2tncm91bmR9Lm1hdC1jaGVja2JveC1hbmltLWluZGV0ZXJtaW5hdGUtdW5jaGVja2VkIC5tYXQtY2hlY2tib3gtbWl4ZWRtYXJre2FuaW1hdGlvbjozMDBtcyBsaW5lYXIgMG1zIG1hdC1jaGVja2JveC1pbmRldGVybWluYXRlLXVuY2hlY2tlZC1taXhlZG1hcmt9Lm1hdC1jaGVja2JveC1pbnB1dHtib3R0b206MDtsZWZ0OjUwJX0ubWF0LWNoZWNrYm94IC5tYXQtY2hlY2tib3gtcmlwcGxle3Bvc2l0aW9uOmFic29sdXRlO2xlZnQ6Y2FsYyg1MCUgLSAyMHB4KTt0b3A6Y2FsYyg1MCUgLSAyMHB4KTtoZWlnaHQ6NDBweDt3aWR0aDo0MHB4O3otaW5kZXg6MTtwb2ludGVyLWV2ZW50czpub25lfVxuIl0sZW5jYXBzdWxhdGlvbjoyLGNoYW5nZURldGVjdGlvbjowfSksclYuY3RvclBhcmFtZXRlcnM9KCk9Plt7dHlwZTp4dX0se3R5cGU6Vm19LHt0eXBlOlRTfSx7dHlwZTpKX30se3R5cGU6U3RyaW5nLGRlY29yYXRvcnM6W3t0eXBlOkJlLGFyZ3M6WyJ0YWJpbmRleCJdfV19LHt0eXBlOnZvaWQgMCxkZWNvcmF0b3JzOlt7dHlwZTpOZX0se3R5cGU6SWUsYXJnczpbdFZdfV19LHt0eXBlOlN0cmluZyxkZWNvcmF0b3JzOlt7dHlwZTpOZX0se3R5cGU6SWUsYXJnczpbZGtdfV19LHt0eXBlOnZvaWQgMCxkZWNvcmF0b3JzOlt7dHlwZTpOZX0se3R5cGU6SWUsYXJnczpbS0JdfV19XSxyVi5wcm9wRGVjb3JhdG9ycz17YXJpYUxhYmVsOlt7dHlwZTpmXyxhcmdzOlsiYXJpYS1sYWJlbCJdfV0sYXJpYUxhYmVsbGVkYnk6W3t0eXBlOmZfLGFyZ3M6WyJhcmlhLWxhYmVsbGVkYnkiXX1dLGFyaWFEZXNjcmliZWRieTpbe3R5cGU6Zl8sYXJnczpbImFyaWEtZGVzY3JpYmVkYnkiXX1dLGlkOlt7dHlwZTpmX31dLHJlcXVpcmVkOlt7dHlwZTpmX31dLGxhYmVsUG9zaXRpb246W3t0eXBlOmZffV0sbmFtZTpbe3R5cGU6Zl99XSxjaGFuZ2U6W3t0eXBlOmhffV0saW5kZXRlcm1pbmF0ZUNoYW5nZTpbe3R5cGU6aF99XSx2YWx1ZTpbe3R5cGU6Zl99XSxfaW5wdXRFbGVtZW50Olt7dHlwZTpYZCxhcmdzOlsiaW5wdXQiXX1dLHJpcHBsZTpbe3R5cGU6WGQsYXJnczpbekVdfV0sY2hlY2tlZDpbe3R5cGU6Zl99XSxkaXNhYmxlZDpbe3R5cGU6Zl99XSxpbmRldGVybWluYXRlOlt7dHlwZTpmX31dfTsKLyoqCiAgICAgKiBAbGljZW5zZQogICAgICogQ29weXJpZ2h0IEdvb2dsZSBMTEMgQWxsIFJpZ2h0cyBSZXNlcnZlZC4KICAgICAqCiAgICAgKiBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhbiBNSVQtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQogICAgICogZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZSBhdCBodHRwczovL2FuZ3VsYXIuaW8vbGljZW5zZQogICAgICovCmNvbnN0IGlWPXtwcm92aWRlOk5GLHVzZUV4aXN0aW5nOmFhKCgoKT0+Y1YpKSxtdWx0aTohMH07Y2xhc3MgY1YgZXh0ZW5kcyBsSHt9Y1YuybVmYWM9ZnVuY3Rpb24gdChuKXtyZXR1cm4gc1Yobnx8Y1YpfSxjVi7JtWRpcj12byh7dHlwZTpjVixzZWxlY3RvcnM6W1sibWF0LWNoZWNrYm94IiwicmVxdWlyZWQiLCIiLCJmb3JtQ29udHJvbE5hbWUiLCIiXSxbIm1hdC1jaGVja2JveCIsInJlcXVpcmVkIiwiIiwiZm9ybUNvbnRyb2wiLCIiXSxbIm1hdC1jaGVja2JveCIsInJlcXVpcmVkIiwiIiwibmdNb2RlbCIsIiJdXSxmZWF0dXJlczpbTXUoW2lWXSksaGddfSk7Y29uc3Qgc1Y9dGMoY1YpOwovKioKICAgICAqIEBsaWNlbnNlCiAgICAgKiBDb3B5cmlnaHQgR29vZ2xlIExMQyBBbGwgUmlnaHRzIFJlc2VydmVkLgogICAgICoKICAgICAqIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGFuIE1JVC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCiAgICAgKiBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlIGF0IGh0dHBzOi8vYW5ndWxhci5pby9saWNlbnNlCiAgICAgKi9jbGFzcyBsVnt9bFYuybVtb2Q9eG8oe3R5cGU6bFZ9KSxsVi7JtWluaj1HZSh7ZmFjdG9yeTpmdW5jdGlvbiB0KG4pe3JldHVybiBuZXcobnx8bFYpfX0pLCgidW5kZWZpbmVkIj09dHlwZW9mIG5nSml0TW9kZXx8bmdKaXRNb2RlKSYmeW8obFYse2RlY2xhcmF0aW9uczpbY1ZdLGV4cG9ydHM6W2NWXX0pO2NsYXNzIG1We31tVi7JtW1vZD14byh7dHlwZTptVn0pLG1WLsm1aW5qPUdlKHtmYWN0b3J5OmZ1bmN0aW9uIHQobil7cmV0dXJuIG5ldyhufHxtVil9LGltcG9ydHM6W1tSRSx0RSx0UyxsVl0sdEUsbFZdfSksKCJ1bmRlZmluZWQiPT10eXBlb2YgbmdKaXRNb2RlfHxuZ0ppdE1vZGUpJiZ5byhtVix7ZGVjbGFyYXRpb25zOmZ1bmN0aW9uKCl7cmV0dXJuW3JWXX0saW1wb3J0czpmdW5jdGlvbigpe3JldHVybltSRSx0RSx0UyxsVl19LGV4cG9ydHM6ZnVuY3Rpb24oKXtyZXR1cm5bclYsdEUsbFZdfX0pO2NvbnN0IGRWPU53KHtwYXNzaXZlOiEwfSk7Y2xhc3MgZ1Z7Y29uc3RydWN0b3IodCxuKXt0aGlzLl9wbGF0Zm9ybT10LHRoaXMuX25nWm9uZT1uLHRoaXMuX21vbml0b3JlZEVsZW1lbnRzPW5ldyBNYXB9bW9uaXRvcih0KXtpZighdGhpcy5fcGxhdGZvcm0uaXNCcm93c2VyKXJldHVybiBVO2NvbnN0IG49SncodCksZT10aGlzLl9tb25pdG9yZWRFbGVtZW50cy5nZXQobik7aWYoZSlyZXR1cm4gZS5zdWJqZWN0O2NvbnN0IGE9bmV3IHgsbz0iY2RrLXRleHQtZmllbGQtYXV0b2ZpbGxlZCIscj10PT57ImNkay10ZXh0LWZpZWxkLWF1dG9maWxsLXN0YXJ0IiE9PXQuYW5pbWF0aW9uTmFtZXx8bi5jbGFzc0xpc3QuY29udGFpbnMobyk/ImNkay10ZXh0LWZpZWxkLWF1dG9maWxsLWVuZCI9PT10LmFuaW1hdGlvbk5hbWUmJm4uY2xhc3NMaXN0LmNvbnRhaW5zKG8pJiYobi5jbGFzc0xpc3QucmVtb3ZlKG8pLHRoaXMuX25nWm9uZS5ydW4oKCgpPT5hLm5leHQoe3RhcmdldDp0LnRhcmdldCxpc0F1dG9maWxsZWQ6ITF9KSkpKToobi5jbGFzc0xpc3QuYWRkKG8pLHRoaXMuX25nWm9uZS5ydW4oKCgpPT5hLm5leHQoe3RhcmdldDp0LnRhcmdldCxpc0F1dG9maWxsZWQ6ITB9KSkpKX07cmV0dXJuIHRoaXMuX25nWm9uZS5ydW5PdXRzaWRlQW5ndWxhcigoKCk9PntuLmFkZEV2ZW50TGlzdGVuZXIoImFuaW1hdGlvbnN0YXJ0IixyLGRWKSxuLmNsYXNzTGlzdC5hZGQoImNkay10ZXh0LWZpZWxkLWF1dG9maWxsLW1vbml0b3JlZCIpfSkpLHRoaXMuX21vbml0b3JlZEVsZW1lbnRzLnNldChuLHtzdWJqZWN0OmEsdW5saXN0ZW46KCk9PntuLnJlbW92ZUV2ZW50TGlzdGVuZXIoImFuaW1hdGlvbnN0YXJ0IixyLGRWKX19KSxhfXN0b3BNb25pdG9yaW5nKHQpe2NvbnN0IG49SncodCksZT10aGlzLl9tb25pdG9yZWRFbGVtZW50cy5nZXQobik7ZSYmKGUudW5saXN0ZW4oKSxlLnN1YmplY3QuY29tcGxldGUoKSxuLmNsYXNzTGlzdC5yZW1vdmUoImNkay10ZXh0LWZpZWxkLWF1dG9maWxsLW1vbml0b3JlZCIpLG4uY2xhc3NMaXN0LnJlbW92ZSgiY2RrLXRleHQtZmllbGQtYXV0b2ZpbGxlZCIpLHRoaXMuX21vbml0b3JlZEVsZW1lbnRzLmRlbGV0ZShuKSl9bmdPbkRlc3Ryb3koKXt0aGlzLl9tb25pdG9yZWRFbGVtZW50cy5mb3JFYWNoKCgodCxuKT0+dGhpcy5zdG9wTW9uaXRvcmluZyhuKSkpfX1nVi7JtWZhYz1mdW5jdGlvbiB0KG4pe3JldHVybiBuZXcobnx8Z1YpKFphKFN3KSxaYShKXykpfSxnVi7JtXByb3Y9V2Uoe2ZhY3Rvcnk6ZnVuY3Rpb24gdCgpe3JldHVybiBuZXcgZ1YoWmEoU3cpLFphKEpfKSl9LHRva2VuOmdWLHByb3ZpZGVkSW46InJvb3QifSksZ1YuY3RvclBhcmFtZXRlcnM9KCk9Plt7dHlwZTpTd30se3R5cGU6Sl99XTtjbGFzcyBwVntjb25zdHJ1Y3Rvcih0LG4pe3RoaXMuX2VsZW1lbnRSZWY9dCx0aGlzLl9hdXRvZmlsbE1vbml0b3I9bix0aGlzLmNka0F1dG9maWxsPW5ldyBFZn1uZ09uSW5pdCgpe3RoaXMuX2F1dG9maWxsTW9uaXRvci5tb25pdG9yKHRoaXMuX2VsZW1lbnRSZWYpLnN1YnNjcmliZSgodD0+dGhpcy5jZGtBdXRvZmlsbC5lbWl0KHQpKSl9bmdPbkRlc3Ryb3koKXt0aGlzLl9hdXRvZmlsbE1vbml0b3Iuc3RvcE1vbml0b3JpbmcodGhpcy5fZWxlbWVudFJlZil9fXBWLsm1ZmFjPWZ1bmN0aW9uIHQobil7cmV0dXJuIG5ldyhufHxwVikoWmcoeHUpLFpnKGdWKSl9LHBWLsm1ZGlyPXZvKHt0eXBlOnBWLHNlbGVjdG9yczpbWyIiLCJjZGtBdXRvZmlsbCIsIiJdXSxvdXRwdXRzOntjZGtBdXRvZmlsbDoiY2RrQXV0b2ZpbGwifX0pLHBWLmN0b3JQYXJhbWV0ZXJzPSgpPT5be3R5cGU6eHV9LHt0eXBlOmdWfV0scFYucHJvcERlY29yYXRvcnM9e2Nka0F1dG9maWxsOlt7dHlwZTpoX31dfTsKLyoqCiAgICAgKiBAbGljZW5zZQogICAgICogQ29weXJpZ2h0IEdvb2dsZSBMTEMgQWxsIFJpZ2h0cyBSZXNlcnZlZC4KICAgICAqCiAgICAgKiBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhbiBNSVQtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQogICAgICogZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZSBhdCBodHRwczovL2FuZ3VsYXIuaW8vbGljZW5zZQogICAgICovCmNsYXNzIGJWe2NvbnN0cnVjdG9yKHQsbixlLGEpe3RoaXMuX2VsZW1lbnRSZWY9dCx0aGlzLl9wbGF0Zm9ybT1uLHRoaXMuX25nWm9uZT1lLHRoaXMuX2Rlc3Ryb3llZD1uZXcgeCx0aGlzLl9lbmFibGVkPSEwLHRoaXMuX3ByZXZpb3VzTWluUm93cz0tMSx0aGlzLl9kb2N1bWVudD1hLHRoaXMuX3RleHRhcmVhRWxlbWVudD10aGlzLl9lbGVtZW50UmVmLm5hdGl2ZUVsZW1lbnQsdGhpcy5fbWVhc3VyaW5nQ2xhc3M9bi5GSVJFRk9YPyJjZGstdGV4dGFyZWEtYXV0b3NpemUtbWVhc3VyaW5nLWZpcmVmb3giOiJjZGstdGV4dGFyZWEtYXV0b3NpemUtbWVhc3VyaW5nIn1nZXQgbWluUm93cygpe3JldHVybiB0aGlzLl9taW5Sb3dzfXNldCBtaW5Sb3dzKHQpe3RoaXMuX21pblJvd3M9WXcodCksdGhpcy5fc2V0TWluSGVpZ2h0KCl9Z2V0IG1heFJvd3MoKXtyZXR1cm4gdGhpcy5fbWF4Um93c31zZXQgbWF4Um93cyh0KXt0aGlzLl9tYXhSb3dzPVl3KHQpLHRoaXMuX3NldE1heEhlaWdodCgpfWdldCBlbmFibGVkKCl7cmV0dXJuIHRoaXMuX2VuYWJsZWR9c2V0IGVuYWJsZWQodCl7dD1Hdyh0KSx0aGlzLl9lbmFibGVkIT09dCYmKCh0aGlzLl9lbmFibGVkPXQpP3RoaXMucmVzaXplVG9GaXRDb250ZW50KCEwKTp0aGlzLnJlc2V0KCkpfV9zZXRNaW5IZWlnaHQoKXtjb25zdCB0PXRoaXMubWluUm93cyYmdGhpcy5fY2FjaGVkTGluZUhlaWdodD90aGlzLm1pblJvd3MqdGhpcy5fY2FjaGVkTGluZUhlaWdodCsicHgiOm51bGw7dCYmKHRoaXMuX3RleHRhcmVhRWxlbWVudC5zdHlsZS5taW5IZWlnaHQ9dCl9X3NldE1heEhlaWdodCgpe2NvbnN0IHQ9dGhpcy5tYXhSb3dzJiZ0aGlzLl9jYWNoZWRMaW5lSGVpZ2h0P3RoaXMubWF4Um93cyp0aGlzLl9jYWNoZWRMaW5lSGVpZ2h0KyJweCI6bnVsbDt0JiYodGhpcy5fdGV4dGFyZWFFbGVtZW50LnN0eWxlLm1heEhlaWdodD10KX1uZ0FmdGVyVmlld0luaXQoKXt0aGlzLl9wbGF0Zm9ybS5pc0Jyb3dzZXImJih0aGlzLl9pbml0aWFsSGVpZ2h0PXRoaXMuX3RleHRhcmVhRWxlbWVudC5zdHlsZS5oZWlnaHQsdGhpcy5yZXNpemVUb0ZpdENvbnRlbnQoKSx0aGlzLl9uZ1pvbmUucnVuT3V0c2lkZUFuZ3VsYXIoKCgpPT57VnQodGhpcy5fZ2V0V2luZG93KCksInJlc2l6ZSIpLnBpcGUoYW4oMTYpLGRlKHRoaXMuX2Rlc3Ryb3llZCkpLnN1YnNjcmliZSgoKCk9PnRoaXMucmVzaXplVG9GaXRDb250ZW50KCEwKSkpfSkpKX1uZ09uRGVzdHJveSgpe3RoaXMuX2Rlc3Ryb3llZC5uZXh0KCksdGhpcy5fZGVzdHJveWVkLmNvbXBsZXRlKCl9X2NhY2hlVGV4dGFyZWFMaW5lSGVpZ2h0KCl7aWYodGhpcy5fY2FjaGVkTGluZUhlaWdodClyZXR1cm47bGV0IHQ9dGhpcy5fdGV4dGFyZWFFbGVtZW50LmNsb25lTm9kZSghMSk7dC5yb3dzPTEsdC5zdHlsZS5wb3NpdGlvbj0iYWJzb2x1dGUiLHQuc3R5bGUudmlzaWJpbGl0eT0iaGlkZGVuIix0LnN0eWxlLmJvcmRlcj0ibm9uZSIsdC5zdHlsZS5wYWRkaW5nPSIwIix0LnN0eWxlLmhlaWdodD0iIix0LnN0eWxlLm1pbkhlaWdodD0iIix0LnN0eWxlLm1heEhlaWdodD0iIix0LnN0eWxlLm92ZXJmbG93PSJoaWRkZW4iLHRoaXMuX3RleHRhcmVhRWxlbWVudC5wYXJlbnROb2RlLmFwcGVuZENoaWxkKHQpLHRoaXMuX2NhY2hlZExpbmVIZWlnaHQ9dC5jbGllbnRIZWlnaHQsdGhpcy5fdGV4dGFyZWFFbGVtZW50LnBhcmVudE5vZGUucmVtb3ZlQ2hpbGQodCksdGhpcy5fc2V0TWluSGVpZ2h0KCksdGhpcy5fc2V0TWF4SGVpZ2h0KCl9bmdEb0NoZWNrKCl7dGhpcy5fcGxhdGZvcm0uaXNCcm93c2VyJiZ0aGlzLnJlc2l6ZVRvRml0Q29udGVudCgpfXJlc2l6ZVRvRml0Q29udGVudCh0PSExKXtpZighdGhpcy5fZW5hYmxlZClyZXR1cm47aWYodGhpcy5fY2FjaGVUZXh0YXJlYUxpbmVIZWlnaHQoKSwhdGhpcy5fY2FjaGVkTGluZUhlaWdodClyZXR1cm47Y29uc3Qgbj10aGlzLl9lbGVtZW50UmVmLm5hdGl2ZUVsZW1lbnQsZT1uLnZhbHVlO2lmKCF0JiZ0aGlzLl9taW5Sb3dzPT09dGhpcy5fcHJldmlvdXNNaW5Sb3dzJiZlPT09dGhpcy5fcHJldmlvdXNWYWx1ZSlyZXR1cm47Y29uc3QgYT1uLnBsYWNlaG9sZGVyO24uY2xhc3NMaXN0LmFkZCh0aGlzLl9tZWFzdXJpbmdDbGFzcyksbi5wbGFjZWhvbGRlcj0iIixuLnN0eWxlLmhlaWdodD1uLnNjcm9sbEhlaWdodC00KyJweCIsbi5jbGFzc0xpc3QucmVtb3ZlKHRoaXMuX21lYXN1cmluZ0NsYXNzKSxuLnBsYWNlaG9sZGVyPWEsdGhpcy5fbmdab25lLnJ1bk91dHNpZGVBbmd1bGFyKCgoKT0+eyJ1bmRlZmluZWQiIT10eXBlb2YgcmVxdWVzdEFuaW1hdGlvbkZyYW1lP3JlcXVlc3RBbmltYXRpb25GcmFtZSgoKCk9PnRoaXMuX3Njcm9sbFRvQ2FyZXRQb3NpdGlvbihuKSkpOnNldFRpbWVvdXQoKCgpPT50aGlzLl9zY3JvbGxUb0NhcmV0UG9zaXRpb24obikpKX0pKSx0aGlzLl9wcmV2aW91c1ZhbHVlPWUsdGhpcy5fcHJldmlvdXNNaW5Sb3dzPXRoaXMuX21pblJvd3N9cmVzZXQoKXt2b2lkIDAhPT10aGlzLl9pbml0aWFsSGVpZ2h0JiYodGhpcy5fdGV4dGFyZWFFbGVtZW50LnN0eWxlLmhlaWdodD10aGlzLl9pbml0aWFsSGVpZ2h0KX1fbm9vcElucHV0SGFuZGxlcigpe31fZ2V0RG9jdW1lbnQoKXtyZXR1cm4gdGhpcy5fZG9jdW1lbnR8fGRvY3VtZW50fV9nZXRXaW5kb3coKXtyZXR1cm4gdGhpcy5fZ2V0RG9jdW1lbnQoKS5kZWZhdWx0Vmlld3x8d2luZG93fV9zY3JvbGxUb0NhcmV0UG9zaXRpb24odCl7Y29uc3R7c2VsZWN0aW9uU3RhcnQ6bixzZWxlY3Rpb25FbmQ6ZX09dCxhPXRoaXMuX2dldERvY3VtZW50KCk7dGhpcy5fZGVzdHJveWVkLmlzU3RvcHBlZHx8YS5hY3RpdmVFbGVtZW50IT09dHx8dC5zZXRTZWxlY3Rpb25SYW5nZShuLGUpfX1iVi7JtWZhYz1mdW5jdGlvbiB0KG4pe3JldHVybiBuZXcobnx8YlYpKFpnKHh1KSxaZyhTdyksWmcoSl8pLFpnKHpDLDgpKX0sYlYuybVkaXI9dm8oe3R5cGU6YlYsc2VsZWN0b3JzOltbInRleHRhcmVhIiwiY2RrVGV4dGFyZWFBdXRvc2l6ZSIsIiJdXSxob3N0QXR0cnM6WyJyb3dzIiwiMSIsMSwiY2RrLXRleHRhcmVhLWF1dG9zaXplIl0saG9zdEJpbmRpbmdzOmZ1bmN0aW9uIHQobixlKXsxJm4mJmNwKCJpbnB1dCIsKGZ1bmN0aW9uIHQoKXtyZXR1cm4gZS5fbm9vcElucHV0SGFuZGxlcigpfSkpfSxpbnB1dHM6e21pblJvd3M6WyJjZGtBdXRvc2l6ZU1pblJvd3MiLCJtaW5Sb3dzIl0sbWF4Um93czpbImNka0F1dG9zaXplTWF4Um93cyIsIm1heFJvd3MiXSxlbmFibGVkOlsiY2RrVGV4dGFyZWFBdXRvc2l6ZSIsImVuYWJsZWQiXX0sZXhwb3J0QXM6WyJjZGtUZXh0YXJlYUF1dG9zaXplIl19KSxiVi5jdG9yUGFyYW1ldGVycz0oKT0+W3t0eXBlOnh1fSx7dHlwZTpTd30se3R5cGU6Sl99LHt0eXBlOnZvaWQgMCxkZWNvcmF0b3JzOlt7dHlwZTpOZX0se3R5cGU6SWUsYXJnczpbekNdfV19XSxiVi5wcm9wRGVjb3JhdG9ycz17bWluUm93czpbe3R5cGU6Zl8sYXJnczpbImNka0F1dG9zaXplTWluUm93cyJdfV0sbWF4Um93czpbe3R5cGU6Zl8sYXJnczpbImNka0F1dG9zaXplTWF4Um93cyJdfV0sZW5hYmxlZDpbe3R5cGU6Zl8sYXJnczpbImNka1RleHRhcmVhQXV0b3NpemUiXX1dLF9ub29wSW5wdXRIYW5kbGVyOlt7dHlwZTpfXyxhcmdzOlsiaW5wdXQiXX1dfTsKLyoqCiAgICAgKiBAbGljZW5zZQogICAgICogQ29weXJpZ2h0IEdvb2dsZSBMTEMgQWxsIFJpZ2h0cyBSZXNlcnZlZC4KICAgICAqCiAgICAgKiBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhbiBNSVQtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQogICAgICogZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZSBhdCBodHRwczovL2FuZ3VsYXIuaW8vbGljZW5zZQogICAgICovCmNsYXNzIHVWe311Vi7JtW1vZD14byh7dHlwZTp1Vn0pLHVWLsm1aW5qPUdlKHtmYWN0b3J5OmZ1bmN0aW9uIHQobil7cmV0dXJuIG5ldyhufHx1Vil9LGltcG9ydHM6W1tFd11dfSksKCJ1bmRlZmluZWQiPT10eXBlb2YgbmdKaXRNb2RlfHxuZ0ppdE1vZGUpJiZ5byh1Vix7ZGVjbGFyYXRpb25zOmZ1bmN0aW9uKCl7cmV0dXJuW3BWLGJWXX0saW1wb3J0czpmdW5jdGlvbigpe3JldHVybltFd119LGV4cG9ydHM6ZnVuY3Rpb24oKXtyZXR1cm5bcFYsYlZdfX0pO2NsYXNzIGZWIGV4dGVuZHMgYlZ7Z2V0IG1hdEF1dG9zaXplTWluUm93cygpe3JldHVybiB0aGlzLm1pblJvd3N9c2V0IG1hdEF1dG9zaXplTWluUm93cyh0KXt0aGlzLm1pblJvd3M9dH1nZXQgbWF0QXV0b3NpemVNYXhSb3dzKCl7cmV0dXJuIHRoaXMubWF4Um93c31zZXQgbWF0QXV0b3NpemVNYXhSb3dzKHQpe3RoaXMubWF4Um93cz10fWdldCBtYXRBdXRvc2l6ZSgpe3JldHVybiB0aGlzLmVuYWJsZWR9c2V0IG1hdEF1dG9zaXplKHQpe3RoaXMuZW5hYmxlZD10fWdldCBtYXRUZXh0YXJlYUF1dG9zaXplKCl7cmV0dXJuIHRoaXMuZW5hYmxlZH1zZXQgbWF0VGV4dGFyZWFBdXRvc2l6ZSh0KXt0aGlzLmVuYWJsZWQ9dH19ZlYuybVmYWM9ZnVuY3Rpb24gdChuKXtyZXR1cm4gaFYobnx8ZlYpfSxmVi7JtWRpcj12byh7dHlwZTpmVixzZWxlY3RvcnM6W1sidGV4dGFyZWEiLCJtYXQtYXV0b3NpemUiLCIiXSxbInRleHRhcmVhIiwibWF0VGV4dGFyZWFBdXRvc2l6ZSIsIiJdXSxob3N0QXR0cnM6WyJyb3dzIiwiMSIsMSwiY2RrLXRleHRhcmVhLWF1dG9zaXplIiwibWF0LWF1dG9zaXplIl0saW5wdXRzOntjZGtBdXRvc2l6ZU1pblJvd3M6ImNka0F1dG9zaXplTWluUm93cyIsY2RrQXV0b3NpemVNYXhSb3dzOiJjZGtBdXRvc2l6ZU1heFJvd3MiLG1hdEF1dG9zaXplTWluUm93czoibWF0QXV0b3NpemVNaW5Sb3dzIixtYXRBdXRvc2l6ZU1heFJvd3M6Im1hdEF1dG9zaXplTWF4Um93cyIsbWF0QXV0b3NpemU6WyJtYXQtYXV0b3NpemUiLCJtYXRBdXRvc2l6ZSJdLG1hdFRleHRhcmVhQXV0b3NpemU6Im1hdFRleHRhcmVhQXV0b3NpemUifSxleHBvcnRBczpbIm1hdFRleHRhcmVhQXV0b3NpemUiXSxmZWF0dXJlczpbaGddfSksZlYucHJvcERlY29yYXRvcnM9e21hdEF1dG9zaXplTWluUm93czpbe3R5cGU6Zl99XSxtYXRBdXRvc2l6ZU1heFJvd3M6W3t0eXBlOmZffV0sbWF0QXV0b3NpemU6W3t0eXBlOmZfLGFyZ3M6WyJtYXQtYXV0b3NpemUiXX1dLG1hdFRleHRhcmVhQXV0b3NpemU6W3t0eXBlOmZffV19O2NvbnN0IGhWPXRjKGZWKSxfVj1uZXcgRmEoIk1BVF9JTlBVVF9WQUxVRV9BQ0NFU1NPUiIpLENWPVsiYnV0dG9uIiwiY2hlY2tib3giLCJmaWxlIiwiaGlkZGVuIiwiaW1hZ2UiLCJyYWRpbyIsInJhbmdlIiwicmVzZXQiLCJzdWJtaXQiXTsKLyoqCiAgICAgKiBAbGljZW5zZQogICAgICogQ29weXJpZ2h0IEdvb2dsZSBMTEMgQWxsIFJpZ2h0cyBSZXNlcnZlZC4KICAgICAqCiAgICAgKiBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhbiBNSVQtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQogICAgICogZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZSBhdCBodHRwczovL2FuZ3VsYXIuaW8vbGljZW5zZQogICAgICovbGV0IE1WPTA7Y29uc3QgT1Y9ckUoY2xhc3N7Y29uc3RydWN0b3IodCxuLGUsYSl7dGhpcy5fZGVmYXVsdEVycm9yU3RhdGVNYXRjaGVyPXQsdGhpcy5fcGFyZW50Rm9ybT1uLHRoaXMuX3BhcmVudEZvcm1Hcm91cD1lLHRoaXMubmdDb250cm9sPWF9fSk7Y2xhc3MgUFYgZXh0ZW5kcyBPVntjb25zdHJ1Y3Rvcih0LG4sZSxhLG8scixpLGMscyxsKXtzdXBlcihyLGEsbyxlKSx0aGlzLl9lbGVtZW50UmVmPXQsdGhpcy5fcGxhdGZvcm09bix0aGlzLm5nQ29udHJvbD1lLHRoaXMuX2F1dG9maWxsTW9uaXRvcj1jLHRoaXMuX2Zvcm1GaWVsZD1sLHRoaXMuX3VpZD0ibWF0LWlucHV0LSIrTVYrKyx0aGlzLmZvY3VzZWQ9ITEsdGhpcy5zdGF0ZUNoYW5nZXM9bmV3IHgsdGhpcy5jb250cm9sVHlwZT0ibWF0LWlucHV0Iix0aGlzLmF1dG9maWxsZWQ9ITEsdGhpcy5fZGlzYWJsZWQ9ITEsdGhpcy5fcmVxdWlyZWQ9ITEsdGhpcy5fdHlwZT0idGV4dCIsdGhpcy5fcmVhZG9ubHk9ITEsdGhpcy5fbmV2ZXJFbXB0eUlucHV0VHlwZXM9WyJkYXRlIiwiZGF0ZXRpbWUiLCJkYXRldGltZS1sb2NhbCIsIm1vbnRoIiwidGltZSIsIndlZWsiXS5maWx0ZXIoKHQ9Pnp3KCkuaGFzKHQpKSk7Y29uc3QgbT10aGlzLl9lbGVtZW50UmVmLm5hdGl2ZUVsZW1lbnQsZD1tLm5vZGVOYW1lLnRvTG93ZXJDYXNlKCk7dGhpcy5faW5wdXRWYWx1ZUFjY2Vzc29yPWl8fG0sdGhpcy5fcHJldmlvdXNOYXRpdmVWYWx1ZT10aGlzLnZhbHVlLHRoaXMuaWQ9dGhpcy5pZCxuLklPUyYmcy5ydW5PdXRzaWRlQW5ndWxhcigoKCk9Pnt0Lm5hdGl2ZUVsZW1lbnQuYWRkRXZlbnRMaXN0ZW5lcigia2V5dXAiLCh0PT57bGV0IG49dC50YXJnZXQ7bi52YWx1ZXx8bi5zZWxlY3Rpb25TdGFydHx8bi5zZWxlY3Rpb25FbmR8fChuLnNldFNlbGVjdGlvblJhbmdlKDEsMSksbi5zZXRTZWxlY3Rpb25SYW5nZSgwLDApKX0pKX0pKSx0aGlzLl9pc1NlcnZlcj0hdGhpcy5fcGxhdGZvcm0uaXNCcm93c2VyLHRoaXMuX2lzTmF0aXZlU2VsZWN0PSJzZWxlY3QiPT09ZCx0aGlzLl9pc1RleHRhcmVhPSJ0ZXh0YXJlYSI9PT1kLHRoaXMuX2lzTmF0aXZlU2VsZWN0JiYodGhpcy5jb250cm9sVHlwZT1tLm11bHRpcGxlPyJtYXQtbmF0aXZlLXNlbGVjdC1tdWx0aXBsZSI6Im1hdC1uYXRpdmUtc2VsZWN0Iil9Z2V0IGRpc2FibGVkKCl7cmV0dXJuIHRoaXMubmdDb250cm9sJiZudWxsIT09dGhpcy5uZ0NvbnRyb2wuZGlzYWJsZWQ/dGhpcy5uZ0NvbnRyb2wuZGlzYWJsZWQ6dGhpcy5fZGlzYWJsZWR9c2V0IGRpc2FibGVkKHQpe3RoaXMuX2Rpc2FibGVkPUd3KHQpLHRoaXMuZm9jdXNlZCYmKHRoaXMuZm9jdXNlZD0hMSx0aGlzLnN0YXRlQ2hhbmdlcy5uZXh0KCkpfWdldCBpZCgpe3JldHVybiB0aGlzLl9pZH1zZXQgaWQodCl7dGhpcy5faWQ9dHx8dGhpcy5fdWlkfWdldCByZXF1aXJlZCgpe3JldHVybiB0aGlzLl9yZXF1aXJlZH1zZXQgcmVxdWlyZWQodCl7dGhpcy5fcmVxdWlyZWQ9R3codCl9Z2V0IHR5cGUoKXtyZXR1cm4gdGhpcy5fdHlwZX1zZXQgdHlwZSh0KXt0aGlzLl90eXBlPXR8fCJ0ZXh0Iix0aGlzLl92YWxpZGF0ZVR5cGUoKSwhdGhpcy5faXNUZXh0YXJlYSYmencoKS5oYXModGhpcy5fdHlwZSkmJih0aGlzLl9lbGVtZW50UmVmLm5hdGl2ZUVsZW1lbnQudHlwZT10aGlzLl90eXBlKX1nZXQgdmFsdWUoKXtyZXR1cm4gdGhpcy5faW5wdXRWYWx1ZUFjY2Vzc29yLnZhbHVlfXNldCB2YWx1ZSh0KXt0IT09dGhpcy52YWx1ZSYmKHRoaXMuX2lucHV0VmFsdWVBY2Nlc3Nvci52YWx1ZT10LHRoaXMuc3RhdGVDaGFuZ2VzLm5leHQoKSl9Z2V0IHJlYWRvbmx5KCl7cmV0dXJuIHRoaXMuX3JlYWRvbmx5fXNldCByZWFkb25seSh0KXt0aGlzLl9yZWFkb25seT1Hdyh0KX1uZ0FmdGVyVmlld0luaXQoKXt0aGlzLl9wbGF0Zm9ybS5pc0Jyb3dzZXImJnRoaXMuX2F1dG9maWxsTW9uaXRvci5tb25pdG9yKHRoaXMuX2VsZW1lbnRSZWYubmF0aXZlRWxlbWVudCkuc3Vic2NyaWJlKCh0PT57dGhpcy5hdXRvZmlsbGVkPXQuaXNBdXRvZmlsbGVkLHRoaXMuc3RhdGVDaGFuZ2VzLm5leHQoKX0pKX1uZ09uQ2hhbmdlcygpe3RoaXMuc3RhdGVDaGFuZ2VzLm5leHQoKX1uZ09uRGVzdHJveSgpe3RoaXMuc3RhdGVDaGFuZ2VzLmNvbXBsZXRlKCksdGhpcy5fcGxhdGZvcm0uaXNCcm93c2VyJiZ0aGlzLl9hdXRvZmlsbE1vbml0b3Iuc3RvcE1vbml0b3JpbmcodGhpcy5fZWxlbWVudFJlZi5uYXRpdmVFbGVtZW50KX1uZ0RvQ2hlY2soKXt0aGlzLm5nQ29udHJvbCYmdGhpcy51cGRhdGVFcnJvclN0YXRlKCksdGhpcy5fZGlydHlDaGVja05hdGl2ZVZhbHVlKCksdGhpcy5fZGlydHlDaGVja1BsYWNlaG9sZGVyKCl9Zm9jdXModCl7dGhpcy5fZWxlbWVudFJlZi5uYXRpdmVFbGVtZW50LmZvY3VzKHQpfV9mb2N1c0NoYW5nZWQodCl7dD09PXRoaXMuZm9jdXNlZHx8dGhpcy5yZWFkb25seSYmdHx8KHRoaXMuZm9jdXNlZD10LHRoaXMuc3RhdGVDaGFuZ2VzLm5leHQoKSl9X29uSW5wdXQoKXt9X2RpcnR5Q2hlY2tQbGFjZWhvbGRlcigpe3ZhciB0LG47Y29uc3QgZT0obnVsbD09PShuPW51bGw9PT0odD10aGlzLl9mb3JtRmllbGQpfHx2b2lkIDA9PT10P3ZvaWQgMDp0Ll9oaWRlQ29udHJvbFBsYWNlaG9sZGVyKXx8dm9pZCAwPT09bj92b2lkIDA6bi5jYWxsKHQpKT9udWxsOnRoaXMucGxhY2Vob2xkZXI7aWYoZSE9PXRoaXMuX3ByZXZpb3VzUGxhY2Vob2xkZXIpe2NvbnN0IHQ9dGhpcy5fZWxlbWVudFJlZi5uYXRpdmVFbGVtZW50O3RoaXMuX3ByZXZpb3VzUGxhY2Vob2xkZXI9ZSxlP3Quc2V0QXR0cmlidXRlKCJwbGFjZWhvbGRlciIsZSk6dC5yZW1vdmVBdHRyaWJ1dGUoInBsYWNlaG9sZGVyIil9fV9kaXJ0eUNoZWNrTmF0aXZlVmFsdWUoKXtjb25zdCB0PXRoaXMuX2VsZW1lbnRSZWYubmF0aXZlRWxlbWVudC52YWx1ZTt0aGlzLl9wcmV2aW91c05hdGl2ZVZhbHVlIT09dCYmKHRoaXMuX3ByZXZpb3VzTmF0aXZlVmFsdWU9dCx0aGlzLnN0YXRlQ2hhbmdlcy5uZXh0KCkpfV92YWxpZGF0ZVR5cGUoKXtpZihDVi5pbmRleE9mKHRoaXMuX3R5cGUpPi0xJiYoInVuZGVmaW5lZCI9PXR5cGVvZiBuZ0Rldk1vZGV8fG5nRGV2TW9kZSkpdGhyb3coZnVuY3Rpb24gdChuKXtyZXR1cm4gRXJyb3IoYElucHV0IHR5cGUgIiR7bn0iIGlzbid0IHN1cHBvcnRlZCBieSBtYXRJbnB1dC5gKX0KLyoqCiAgICAgKiBAbGljZW5zZQogICAgICogQ29weXJpZ2h0IEdvb2dsZSBMTEMgQWxsIFJpZ2h0cyBSZXNlcnZlZC4KICAgICAqCiAgICAgKiBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhbiBNSVQtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQogICAgICogZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZSBhdCBodHRwczovL2FuZ3VsYXIuaW8vbGljZW5zZQogICAgICovKSh0aGlzLl90eXBlKX1faXNOZXZlckVtcHR5KCl7cmV0dXJuIHRoaXMuX25ldmVyRW1wdHlJbnB1dFR5cGVzLmluZGV4T2YodGhpcy5fdHlwZSk+LTF9X2lzQmFkSW5wdXQoKXtsZXQgdD10aGlzLl9lbGVtZW50UmVmLm5hdGl2ZUVsZW1lbnQudmFsaWRpdHk7cmV0dXJuIHQmJnQuYmFkSW5wdXR9Z2V0IGVtcHR5KCl7cmV0dXJuISh0aGlzLl9pc05ldmVyRW1wdHkoKXx8dGhpcy5fZWxlbWVudFJlZi5uYXRpdmVFbGVtZW50LnZhbHVlfHx0aGlzLl9pc0JhZElucHV0KCl8fHRoaXMuYXV0b2ZpbGxlZCl9Z2V0IHNob3VsZExhYmVsRmxvYXQoKXtpZih0aGlzLl9pc05hdGl2ZVNlbGVjdCl7Y29uc3QgdD10aGlzLl9lbGVtZW50UmVmLm5hdGl2ZUVsZW1lbnQsbj10Lm9wdGlvbnNbMF07cmV0dXJuIHRoaXMuZm9jdXNlZHx8dC5tdWx0aXBsZXx8IXRoaXMuZW1wdHl8fCEhKHQuc2VsZWN0ZWRJbmRleD4tMSYmbiYmbi5sYWJlbCl9cmV0dXJuIHRoaXMuZm9jdXNlZHx8IXRoaXMuZW1wdHl9c2V0RGVzY3JpYmVkQnlJZHModCl7dC5sZW5ndGg/dGhpcy5fZWxlbWVudFJlZi5uYXRpdmVFbGVtZW50LnNldEF0dHJpYnV0ZSgiYXJpYS1kZXNjcmliZWRieSIsdC5qb2luKCIgIikpOnRoaXMuX2VsZW1lbnRSZWYubmF0aXZlRWxlbWVudC5yZW1vdmVBdHRyaWJ1dGUoImFyaWEtZGVzY3JpYmVkYnkiKX1vbkNvbnRhaW5lckNsaWNrKCl7dGhpcy5mb2N1c2VkfHx0aGlzLmZvY3VzKCl9fVBWLsm1ZmFjPWZ1bmN0aW9uIHQobil7cmV0dXJuIG5ldyhufHxQVikoWmcoeHUpLFpnKFN3KSxaZyhBRiwxMCksWmcoTEwsOCksWmcoS0wsOCksWmcoT0UpLFpnKF9WLDEwKSxaZyhnViksWmcoSl8pLFpnKGhGLDgpKX0sUFYuybVkaXI9dm8oe3R5cGU6UFYsc2VsZWN0b3JzOltbImlucHV0IiwibWF0SW5wdXQiLCIiXSxbInRleHRhcmVhIiwibWF0SW5wdXQiLCIiXSxbInNlbGVjdCIsIm1hdE5hdGl2ZUNvbnRyb2wiLCIiXSxbImlucHV0IiwibWF0TmF0aXZlQ29udHJvbCIsIiJdLFsidGV4dGFyZWEiLCJtYXROYXRpdmVDb250cm9sIiwiIl1dLGhvc3RBdHRyczpbMSwibWF0LWlucHV0LWVsZW1lbnQiLCJtYXQtZm9ybS1maWVsZC1hdXRvZmlsbC1jb250cm9sIl0saG9zdFZhcnM6OSxob3N0QmluZGluZ3M6ZnVuY3Rpb24gdChuLGUpezEmbiYmY3AoImZvY3VzIiwoZnVuY3Rpb24gdCgpe3JldHVybiBlLl9mb2N1c0NoYW5nZWQoITApfSkpKCJibHVyIiwoZnVuY3Rpb24gdCgpe3JldHVybiBlLl9mb2N1c0NoYW5nZWQoITEpfSkpKCJpbnB1dCIsKGZ1bmN0aW9uIHQoKXtyZXR1cm4gZS5fb25JbnB1dCgpfSkpLDImbiYmKGViKCJkaXNhYmxlZCIsZS5kaXNhYmxlZCkoInJlcXVpcmVkIixlLnJlcXVpcmVkKSxOZygiaWQiLGUuaWQpKCJkYXRhLXBsYWNlaG9sZGVyIixlLnBsYWNlaG9sZGVyKSgicmVhZG9ubHkiLGUucmVhZG9ubHkmJiFlLl9pc05hdGl2ZVNlbGVjdHx8bnVsbCkoImFyaWEtaW52YWxpZCIsZS5lcnJvclN0YXRlKSgiYXJpYS1yZXF1aXJlZCIsZS5yZXF1aXJlZC50b1N0cmluZygpKSxEcCgibWF0LWlucHV0LXNlcnZlciIsZS5faXNTZXJ2ZXIpKX0saW5wdXRzOntpZDoiaWQiLGRpc2FibGVkOiJkaXNhYmxlZCIscmVxdWlyZWQ6InJlcXVpcmVkIix0eXBlOiJ0eXBlIix2YWx1ZToidmFsdWUiLHJlYWRvbmx5OiJyZWFkb25seSIscGxhY2Vob2xkZXI6InBsYWNlaG9sZGVyIixlcnJvclN0YXRlTWF0Y2hlcjoiZXJyb3JTdGF0ZU1hdGNoZXIiLHVzZXJBcmlhRGVzY3JpYmVkQnk6WyJhcmlhLWRlc2NyaWJlZGJ5IiwidXNlckFyaWFEZXNjcmliZWRCeSJdfSxleHBvcnRBczpbIm1hdElucHV0Il0sZmVhdHVyZXM6W011KFt7cHJvdmlkZTphRix1c2VFeGlzdGluZzpQVn1dKSxoZyxwcl19KSxQVi5jdG9yUGFyYW1ldGVycz0oKT0+W3t0eXBlOnh1fSx7dHlwZTpTd30se3R5cGU6QUYsZGVjb3JhdG9yczpbe3R5cGU6TmV9LHt0eXBlOkZlfV19LHt0eXBlOkxMLGRlY29yYXRvcnM6W3t0eXBlOk5lfV19LHt0eXBlOktMLGRlY29yYXRvcnM6W3t0eXBlOk5lfV19LHt0eXBlOk9FfSx7dHlwZTp2b2lkIDAsZGVjb3JhdG9yczpbe3R5cGU6TmV9LHt0eXBlOkZlfSx7dHlwZTpJZSxhcmdzOltfVl19XX0se3R5cGU6Z1Z9LHt0eXBlOkpffSx7dHlwZTpfRixkZWNvcmF0b3JzOlt7dHlwZTpOZX0se3R5cGU6SWUsYXJnczpbaEZdfV19XSxQVi5wcm9wRGVjb3JhdG9ycz17ZGlzYWJsZWQ6W3t0eXBlOmZffV0saWQ6W3t0eXBlOmZffV0scGxhY2Vob2xkZXI6W3t0eXBlOmZffV0scmVxdWlyZWQ6W3t0eXBlOmZffV0sdHlwZTpbe3R5cGU6Zl99XSxlcnJvclN0YXRlTWF0Y2hlcjpbe3R5cGU6Zl99XSx1c2VyQXJpYURlc2NyaWJlZEJ5Olt7dHlwZTpmXyxhcmdzOlsiYXJpYS1kZXNjcmliZWRieSJdfV0sdmFsdWU6W3t0eXBlOmZffV0scmVhZG9ubHk6W3t0eXBlOmZffV0sX2ZvY3VzQ2hhbmdlZDpbe3R5cGU6X18sYXJnczpbImZvY3VzIixbInRydWUiXV19LHt0eXBlOl9fLGFyZ3M6WyJibHVyIixbImZhbHNlIl1dfV0sX29uSW5wdXQ6W3t0eXBlOl9fLGFyZ3M6WyJpbnB1dCJdfV19OwovKioKICAgICAqIEBsaWNlbnNlCiAgICAgKiBDb3B5cmlnaHQgR29vZ2xlIExMQyBBbGwgUmlnaHRzIFJlc2VydmVkLgogICAgICoKICAgICAqIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGFuIE1JVC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCiAgICAgKiBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlIGF0IGh0dHBzOi8vYW5ndWxhci5pby9saWNlbnNlCiAgICAgKi8KY2xhc3MgeFZ7fWZ1bmN0aW9uIHlWKHQsbil7MSZ0JiYoS2coMCwibWF0LWVycm9yIiksSnAoMSwiIFJlbG9hZCBwZXJpb2QgaGFzIHRvIGJlIG1pbmltdW0gb2YgMTUgc2Vjb25kcy4gIiksJGcoKSl9ZnVuY3Rpb24ga1YodCxuKXsxJnQmJihLZygwLCJtYXQtZXJyb3IiKSxKcCgxLCIgUGFnZSBzaXplIGhhcyB0byBiZSBhIHBvc2l0aXZlIGludGVnZXIuICIpLCRnKCkpfXhWLsm1bW9kPXhvKHt0eXBlOnhWfSkseFYuybVpbmo9R2Uoe2ZhY3Rvcnk6ZnVuY3Rpb24gdChuKXtyZXR1cm4gbmV3KG58fHhWKX0scHJvdmlkZXJzOltPRV0saW1wb3J0czpbW3VWLENGXSx1VixDRl19KSwoInVuZGVmaW5lZCI9PXR5cGVvZiBuZ0ppdE1vZGV8fG5nSml0TW9kZSkmJnlvKHhWLHtkZWNsYXJhdGlvbnM6ZnVuY3Rpb24oKXtyZXR1cm5bUFYsZlZdfSxpbXBvcnRzOmZ1bmN0aW9uKCl7cmV0dXJuW3VWLENGXX0sZXhwb3J0czpmdW5jdGlvbigpe3JldHVyblt1VixDRixQVixmVl19fSk7Y29uc3QgdlY9cHYoQkksKHQ9Pk1hdGgucm91bmQodC8xZTMpKSk7Y2xhc3Mgd1Z7Y29uc3RydWN0b3IodCl7dGhpcy5zdG9yZT10LHRoaXMucmVsb2FkRW5hYmxlZCQ9dGhpcy5zdG9yZS5waXBlKGx2KEhJKSksdGhpcy5wYWdlU2l6ZSQ9dGhpcy5zdG9yZS5waXBlKGx2KFZJKSksdGhpcy5yZWxvYWRQZXJpb2RJblNlYyQ9dGhpcy5zdG9yZS5waXBlKGx2KHZWKSksdGhpcy5yZWxvYWRQZXJpb2RDb250cm9sPW5ldyBUTCgxNSxbSEYucmVxdWlyZWQsSEYubWluKDE1KV0pLHRoaXMucGFnaW5hdGlvbkNvbnRyb2w9bmV3IFRMKDEsW0hGLnJlcXVpcmVkLEhGLm1pbigxKSx0PT57Y29uc3Qgbj1OdW1iZXIodC52YWx1ZSk7cmV0dXJuIE1hdGgucm91bmQobik9PT10LnZhbHVlP251bGw6e2ludGVnZXI6e3ZhbHVlOnQudmFsdWV9fX1dKSx0aGlzLm5nVW5zdWJzY3JpYmU9bmV3IHh9bmdPbkluaXQoKXt0aGlzLnJlbG9hZFBlcmlvZEluU2VjJC5waXBlKGRlKHRoaXMubmdVbnN1YnNjcmliZSksR3QoKHQ9PnQhPT10aGlzLnJlbG9hZFBlcmlvZENvbnRyb2wudmFsdWUpKSkuc3Vic2NyaWJlKCh0PT57dGhpcy5yZWxvYWRQZXJpb2RDb250cm9sLnNldFZhbHVlKHQpfSkpLHRoaXMucmVsb2FkRW5hYmxlZCQucGlwZShkZSh0aGlzLm5nVW5zdWJzY3JpYmUpKS5zdWJzY3JpYmUoKHQ9Pnt0P3RoaXMucmVsb2FkUGVyaW9kQ29udHJvbC5lbmFibGUoKTp0aGlzLnJlbG9hZFBlcmlvZENvbnRyb2wuZGlzYWJsZSgpfSkpLHRoaXMucmVsb2FkUGVyaW9kQ29udHJvbC52YWx1ZUNoYW5nZXMucGlwZShkZSh0aGlzLm5nVW5zdWJzY3JpYmUpLGxuKDUwMCksR3QoKCgpPT50aGlzLnJlbG9hZFBlcmlvZENvbnRyb2wudmFsaWQpKSkuc3Vic2NyaWJlKCgoKT0+e3RoaXMucmVsb2FkUGVyaW9kQ29udHJvbC52YWxpZCYmdGhpcy5zdG9yZS5kaXNwYXRjaChQSSh7cGVyaW9kSW5NczoxZTMqdGhpcy5yZWxvYWRQZXJpb2RDb250cm9sLnZhbHVlfSkpfSkpLHRoaXMucGFnZVNpemUkLnBpcGUoZGUodGhpcy5uZ1Vuc3Vic2NyaWJlKSxHdCgodD0+dCE9PXRoaXMucGFnaW5hdGlvbkNvbnRyb2wudmFsdWUpKSkuc3Vic2NyaWJlKCh0PT57dGhpcy5wYWdpbmF0aW9uQ29udHJvbC5zZXRWYWx1ZSh0KX0pKSx0aGlzLnBhZ2luYXRpb25Db250cm9sLnZhbHVlQ2hhbmdlcy5waXBlKGRlKHRoaXMubmdVbnN1YnNjcmliZSksbG4oNTAwKSxHdCgoKCk9PnRoaXMucGFnaW5hdGlvbkNvbnRyb2wudmFsaWQpKSkuc3Vic2NyaWJlKCgoKT0+e3RoaXMuc3RvcmUuZGlzcGF0Y2goeEkoe3NpemU6dGhpcy5wYWdpbmF0aW9uQ29udHJvbC52YWx1ZX0pKX0pKX1uZ09uRGVzdHJveSgpe3RoaXMubmdVbnN1YnNjcmliZS5uZXh0KCksdGhpcy5uZ1Vuc3Vic2NyaWJlLmNvbXBsZXRlKCl9b25SZWxvYWRUb2dnbGUoKXt0aGlzLnN0b3JlLmRpc3BhdGNoKE9JKCkpfX13Vi7JtWZhYz1mdW5jdGlvbiB0KG4pe3JldHVybiBuZXcobnx8d1YpKFpnKGN2KSl9LHdWLsm1Y21wPV9vKHt0eXBlOndWLHNlbGVjdG9yczpbWyJzZXR0aW5ncy1kaWFsb2ciXV0sZGVjbHM6MTUsdmFyczo3LGNvbnN0czpbWzEsInJlbG9hZC10b2dnbGUiXSxbMywiY2hlY2tlZCIsImNoYW5nZSJdLFsibWF0SW5wdXQiLCIiLCJ0eXBlIiwibnVtYmVyIiwicGxhY2Vob2xkZXIiLCJSZWxvYWQgUGVyaW9kIiwxLCJyZWxvYWQtcGVyaW9kIiwzLCJmb3JtQ29udHJvbCJdLFs0LCJuZ0lmIl0sWyJtYXRJbnB1dCIsIiIsInR5cGUiLCJudW1iZXIiLCJwbGFjZWhvbGRlciIsIlBhZ2luYXRpb24gTGltaXQiLDEsInBhZ2Utc2l6ZSIsMywiZm9ybUNvbnRyb2wiXV0sdGVtcGxhdGU6ZnVuY3Rpb24gdChuLGUpezEmbiYmKEtnKDAsImgzIiksSnAoMSwiU2V0dGluZ3MiKSwkZygpLEtnKDIsImRpdiIpLEtnKDMsImRpdiIsMCksS2coNCwibWF0LWNoZWNrYm94IiwxKSxjcCgiY2hhbmdlIiwoZnVuY3Rpb24gdCgpe3JldHVybiBlLm9uUmVsb2FkVG9nZ2xlKCl9KSkseWYoNSwiYXN5bmMiKSxKcCg2LCJSZWxvYWQgZGF0YSIpLCRnKCksJGcoKSxLZyg3LCJkaXYiKSxLZyg4LCJtYXQtZm9ybS1maWVsZCIpLHRwKDksImlucHV0IiwyKSwkZygpLFlnKDEwLHlWLDIsMCwibWF0LWVycm9yIiwzKSwkZygpLCRnKCksS2coMTEsImRpdiIpLEtnKDEyLCJtYXQtZm9ybS1maWVsZCIpLHRwKDEzLCJpbnB1dCIsNCksJGcoKSxZZygxNCxrViwyLDAsIm1hdC1lcnJvciIsMyksJGcoKSksMiZuJiYod3MoNCksSmcoImNoZWNrZWQiLGtmKDUsNSxlLnJlbG9hZEVuYWJsZWQkKSksd3MoNSksSmcoImZvcm1Db250cm9sIixlLnJlbG9hZFBlcmlvZENvbnRyb2wpLHdzKDEpLEpnKCJuZ0lmIixlLnJlbG9hZFBlcmlvZENvbnRyb2wuaGFzRXJyb3IoIm1pbiIpfHxlLnJlbG9hZFBlcmlvZENvbnRyb2wuaGFzRXJyb3IoInJlcXVpcmVkIikpLHdzKDMpLEpnKCJmb3JtQ29udHJvbCIsZS5wYWdpbmF0aW9uQ29udHJvbCksd3MoMSksSmcoIm5nSWYiLGUucGFnaW5hdGlvbkNvbnRyb2wuaW52YWxpZCkpfSxkaXJlY3RpdmVzOltyVixfRixQVixZRixrRixSRixKTCxXTSxuRl0scGlwZXM6W29PXSxzdHlsZXM6WyJbX25naG9zdC0lQ09NUCVdIHtcbiAgZm9udC1zaXplOiAxNXB4O1xufVxuXG5bX25naG9zdC0lQ09NUCVdICAgID4gZGl2W19uZ2NvbnRlbnQtJUNPTVAlXSB7XG4gIG1hcmdpbjogMTBweCAwO1xufVxuXG5bX25naG9zdC0lQ09NUCVdICAgID4gW19uZ2NvbnRlbnQtJUNPTVAlXTpmaXJzdC1jaGlsZCB7XG4gIG1hcmdpbi10b3A6IDA7XG59XG5cbltfbmdob3N0LSVDT01QJV0gICAgPiBbX25nY29udGVudC0lQ09NUCVdOmxhc3QtY2hpbGQge1xuICBtYXJnaW4tYm90dG9tOiAwO1xufVxuXG5oM1tfbmdjb250ZW50LSVDT01QJV0ge1xuICBmb250LXNpemU6IDIwcHg7XG59XG5cbi5yZWxvYWQtdG9nZ2xlW19uZ2NvbnRlbnQtJUNPTVAlXSB7XG4gIG1hcmdpbi1ib3R0b206IDEwcHg7XG59Il19KTtjbGFzcyBTVntjb25zdHJ1Y3Rvcih0KXt0aGlzLmRpYWxvZz10fW9wZW5EaWFsb2coKXt0aGlzLmRpYWxvZy5vcGVuKHdWLHt3aWR0aDoiNDAwcHgifSl9fVNWLsm1ZmFjPWZ1bmN0aW9uIHQobil7cmV0dXJuIG5ldyhufHxTVikoWmcoYkIpKX0sU1YuybVjbXA9X28oe3R5cGU6U1Ysc2VsZWN0b3JzOltbInNldHRpbmdzLWJ1dHRvbiJdXSxkZWNsczoyLHZhcnM6MCxjb25zdHM6W1sibWF0LWljb24tYnV0dG9uIiwiIiwzLCJjbGljayJdLFsic3ZnSWNvbiIsInNldHRpbmdzXzI0cHgiXV0sdGVtcGxhdGU6ZnVuY3Rpb24gdChuLGUpezEmbiYmKEtnKDAsImJ1dHRvbiIsMCksY3AoImNsaWNrIiwoZnVuY3Rpb24gdCgpe3JldHVybiBlLm9wZW5EaWFsb2coKX0pKSx0cCgxLCJtYXQtaWNvbiIsMSksJGcoKSl9LGRpcmVjdGl2ZXM6W2VBLEJCXSxlbmNhcHN1bGF0aW9uOjJ9KTtjbGFzcyBFVnt9ZnVuY3Rpb24gQVYodCl7cmV0dXJuIFRWKHQpLm1hcCgodD0+e2NvbnN0IG49dC5zdGFydHNXaXRoKCI6Iik7cmV0dXJuIG4/e3BhdGhQYXJ0OnQsaXNQYXJhbTohMCxwYXJhbU5hbWU6dC5zbGljZSgxKX06e3BhdGhQYXJ0OnQsaXNQYXJhbTpufX0pKX1FVi7JtWZhYz1mdW5jdGlvbiB0KG4pe3JldHVybiBuZXcobnx8RVYpfSxFVi7JtWNtcD1fbyh7dHlwZTpFVixzZWxlY3RvcnM6W1siYXBwLWhlYWRlciJdXSxkZWNsczo5LHZhcnM6MCxjb25zdHM6W1siY29sb3IiLCJwcmltYXJ5Il0sWzEsImJyYW5kIl0sWzEsInBsdWdpbnMiXSxbIm1hdC1pY29uLWJ1dHRvbiIsIiIsImhyZWYiLCJodHRwczovL2dpdGh1Yi5jb20vdGVuc29yZmxvdy90ZW5zb3Jib2FyZC9ibG9iL21hc3Rlci9SRUFETUUubWQiLCJyZWwiLCJub29wZW5lciBub3JlZmVycmVyIiwidGFyZ2V0IiwiX2JsYW5rIiwiYXJpYS1sYWJlbCIsIkhlbHAiLDEsInJlYWRtZSJdLFsic3ZnSWNvbiIsImhlbHBfb3V0bGluZV8yNHB4Il1dLHRlbXBsYXRlOmZ1bmN0aW9uIHQobixlKXsxJm4mJihLZygwLCJtYXQtdG9vbGJhciIsMCksS2coMSwic3BhbiIsMSksSnAoMiwiVGVuc29yQm9hcmQiKSwkZygpLHRwKDMsInBsdWdpbi1zZWxlY3RvciIsMiksdHAoNCwidGJkZXYtdXBsb2FkLWJ1dHRvbiIpLHRwKDUsImFwcC1oZWFkZXItcmVsb2FkIiksdHAoNiwic2V0dGluZ3MtYnV0dG9uIiksS2coNywiYSIsMyksdHAoOCwibWF0LWljb24iLDQpLCRnKCksJGcoKSl9LGRpcmVjdGl2ZXM6W0VJLFFILHFCLFhCLFNWLGFBLEJCXSxzdHlsZXM6WyJtYXQtdG9vbGJhcltfbmdjb250ZW50LSVDT01QJV0ge1xuICAgICAgICBhbGlnbi1pdGVtczogY2VudGVyO1xuICAgICAgICBkaXNwbGF5OiBmbGV4O1xuICAgICAgICBoZWlnaHQ6IDY0cHg7XG4gICAgICAgIG92ZXJmbG93OiBoaWRkZW47XG4gICAgICAgIHdpZHRoOiAxMDAlO1xuICAgICAgfVxuXG4gICAgICB0YmRldi11cGxvYWQtYnV0dG9uLnNob3duW19uZ2NvbnRlbnQtJUNPTVAlXSB7XG4gICAgICAgIG1hcmdpbjogMCA4cHggMCAxNnB4O1xuICAgICAgfVxuXG4gICAgICAuYnJhbmRbX25nY29udGVudC0lQ09NUCVdLCAucmVhZG1lW19uZ2NvbnRlbnQtJUNPTVAlXSwgYXBwLWhlYWRlci1yZWxvYWRbX25nY29udGVudC0lQ09NUCVdLCBzZXR0aW5ncy1idXR0b25bX25nY29udGVudC0lQ09NUCVdIHtcbiAgICAgICAgZmxleDogMCAwIGF1dG87XG4gICAgICB9XG5cbiAgICAgIC5icmFuZFtfbmdjb250ZW50LSVDT01QJV0ge1xuICAgICAgICBsZXR0ZXItc3BhY2luZzogLTAuMDI1ZW07XG4gICAgICAgIG1hcmdpbi1sZWZ0OiAxMHB4O1xuICAgICAgICB0ZXh0LXJlbmRlcmluZzogb3B0aW1pemVMZWdpYmlsaXR5O1xuICAgICAgfVxuXG4gICAgICAucGx1Z2luc1tfbmdjb250ZW50LSVDT01QJV0ge1xuICAgICAgICBhbGlnbi1pdGVtczogY2VudGVyO1xuICAgICAgICBkaXNwbGF5OiBmbGV4O1xuICAgICAgICBmbGV4OiAxIDEgYXV0bztcbiAgICAgICAgZm9udC1zaXplOiAxNHB4O1xuICAgICAgICBoZWlnaHQ6IDEwMCU7XG4gICAgICAgIG92ZXJmbG93OiBoaWRkZW47XG4gICAgICB9Il19KTtjbGFzcyB6Vntjb25zdHJ1Y3Rvcih0KXt0aGlzLmNvbmZpZz10LHRoaXMudmFsaWRhdGVDb25maWcodCksdGhpcy5wYXRoRnJhZ21lbnRzPUFWKHQucGF0aCksdGhpcy5wYXRoTWF0Y2hlcnM9dGhpcy5nZXRQYXRoTWF0Y2hlcnModGhpcy5wYXRoRnJhZ21lbnRzKSx0aGlzLnJlZGlyZWN0aW9uRnJhZ21lbnRzPW51bGw9PT10LnJvdXRlS2luZD9BVih0LnJlZGlyZWN0aW9uUGF0aCk6bnVsbH12YWxpZGF0ZUNvbmZpZyh7cGF0aDp0fSl7aWYoIXQuc3RhcnRzV2l0aCgiLyIpKXRocm93IG5ldyBSYW5nZUVycm9yKGBjb25maWcucGF0aCBzaG91bGQgc3RhcnQgd2l0aCAnLycuICR7dH1gKTtsZXQgbj0wO2Zvcig7KG49dC5pbmRleE9mKCI6IixuKzEpKT49MDspe2lmKCIvIiE9PXRbbi0xXSl0aHJvdyBuZXcgUmFuZ2VFcnJvcihgY29uZmlnLnBhdGggcGFyYW1ldGVyIHNob3VsZCBjb21lIGFmdGVyICcvJy4gJHt0fWApO2lmKHZvaWQgMD09PXRbbisxXXx8Ii8iPT09dFtuKzFdKXRocm93IG5ldyBSYW5nZUVycm9yKGBjb25maWcucGF0aCBwYXJhbWV0ZXIgc2hvdWxkIGhhdmUgbm9uLWVtcHR5IG5hbWUuICR7dH1gKX19Z2V0UGF0aE1hdGNoZXJzKHQpe3JldHVybiB0Lm1hcCgodD0+e2NvbnN0e3BhdGhQYXJ0Om59PXQ7cmV0dXJuIHQuaXNQYXJhbT9uPT4oe2lzUGFyYW1QYXRoUGFydDohMCxwYXJ0TWF0Y2hlZDohMCxwYXJhbU5hbWU6dC5wYXJhbU5hbWUscGFyYW1WYWx1ZTpufSk6dD0+KHtpc1BhcmFtUGF0aFBhcnQ6ITEscGFydE1hdGNoZWQ6dD09PW59KX0pKX1tYXRjaCh0KXtsZXQgbj17fTtpZih0aGlzLnBhdGhNYXRjaGVycy5sZW5ndGghPT10Lmxlbmd0aClyZXR1cm57cmVzdWx0OiExfTtsZXQgZT0wO2Zvcihjb25zdCBhIG9mIHRoaXMucGF0aE1hdGNoZXJzKXtjb25zdCBvPWEodFtlKytdKTtpZighby5wYXJ0TWF0Y2hlZClyZXR1cm57cmVzdWx0OiExfTtvLmlzUGFyYW1QYXRoUGFydCYmKG49T2JqZWN0LmFzc2lnbihPYmplY3QuYXNzaWduKHt9LG4pLHtbby5wYXJhbU5hbWVdOm8ucGFyYW1WYWx1ZX0pKX1yZXR1cm4gdGhpcy5yZWRpcmVjdGlvbkZyYWdtZW50cz97cmVzdWx0OiEwLHBhcmFtczpuLHBhdGhQYXJ0czp0aGlzLnJlcHJvamVjdFBhdGhCeVBhcmFtcyh0aGlzLnJlZGlyZWN0aW9uRnJhZ21lbnRzLG4pLGlzUmVkaXJlY3Rpb246ITB9OntyZXN1bHQ6ITAscGFyYW1zOm4scGF0aFBhcnRzOnQsaXNSZWRpcmVjdGlvbjohMX19cmVwcm9qZWN0UGF0aEJ5UGFyYW1zKHQsbil7Y29uc3QgZT1bXTtmb3IoY29uc3QgYSBvZiB0KWlmKGEuaXNQYXJhbSl7Y29uc3R7cGFyYW1OYW1lOnR9PWE7aWYoIW4uaGFzT3duUHJvcGVydHkodCkpdGhyb3cgbmV3IFJhbmdlRXJyb3IoYEZhaWxlZCB0byByZXByb2plY3QgcGFyYW1ldGVyLiAiJHt0fSIgcGFyYW1ldGVyIHNob3VsZCBiZSBwcmVzZW50LmApO2UucHVzaChuW3RdKX1lbHNlIGUucHVzaChhLnBhdGhQYXJ0KTtyZXR1cm4gZX1tYXRjaEJ5UGFyYW1zKHQpe3JldHVybntyZXN1bHQ6ITAscGFyYW1zOnQscGF0aFBhcnRzOnRoaXMucmVwcm9qZWN0UGF0aEJ5UGFyYW1zKHRoaXMucGF0aEZyYWdtZW50cyx0KSxpc1JlZGlyZWN0aW9uOiExfX19Y2xhc3MgUlZ7Y29uc3RydWN0b3IodCxuPTMpe2lmKHRoaXMubWF4UmVkaXJlY3Rpb249bixuPDApdGhyb3cgbmV3IFJhbmdlRXJyb3IoIm1heFJlZGlyZWN0aW9uIGhhcyB0byBiZSBub24tbmVnYXRpdmUgbnVtYmVyIik7dGhpcy52YWxpZGF0ZVJvdXRlQ29uZmlncyh0KSx0aGlzLmRlZmF1bHRSb3V0ZUNvbmZpZz1udWxsLHRoaXMucm91dGVLaW5kVG9Db25maWdNYXRjaGVycz1uZXcgTWFwLHRoaXMuY29uZmlnTWF0Y2hlcnM9W107Zm9yKGNvbnN0IG4gb2YgdCl7Y29uc3QgdD1uZXcgelYobik7dGhpcy5jb25maWdNYXRjaGVycy5wdXNoKHQpLG51bGwhPT10LmNvbmZpZy5yb3V0ZUtpbmQmJih0aGlzLnJvdXRlS2luZFRvQ29uZmlnTWF0Y2hlcnMuc2V0KHQuY29uZmlnLnJvdXRlS2luZCx0KSx0LmNvbmZpZy5kZWZhdWx0Um91dGUmJih0aGlzLmRlZmF1bHRSb3V0ZUNvbmZpZz10KSl9fXZhbGlkYXRlUm91dGVDb25maWdzKHQpe2NvbnN0IG49dC5maWx0ZXIoKHQ9PkJvb2xlYW4obnVsbCE9PXQucm91dGVLaW5kJiZ0LmRlZmF1bHRSb3V0ZSkpKTtpZihuLmxlbmd0aD4xKXtjb25zdCB0PW4ubWFwKCgoe3BhdGg6dH0pPT50KSkuam9pbigiLCAiKTt0aHJvdyBuZXcgUmFuZ2VFcnJvcihgVGhlcmUgYXJlIG1vcmUgdGhhbiBvbmUgZGVmYXVsdFJvdXRlcy4gJHt0fWApfWlmKDE9PT1uLmxlbmd0aCl7Y29uc3R7cGF0aDp0fT1uWzBdO2lmKEJvb2xlYW4oQVYodCkuZmluZCgoKHtpc1BhcmFtOnR9KT0+dCkpKSl0aHJvdyBuZXcgUmFuZ2VFcnJvcihgQSBkZWZhdWx0Um91dGUgY2Fubm90IGhhdmUgYW55IHBhcmFtcy4gJHt0fWApfWNvbnN0IGU9bmV3IFNldDtmb3IoY29uc3R7cm91dGVLaW5kOm59b2YgdClpZihudWxsIT09bil7aWYoZS5oYXMobikpdGhyb3cgbmV3IFJhbmdlRXJyb3IoYE11bHRpcGxlIHJvdXRlIGNvbmZpZ3VyYXRpb24gZm9yIGtpbmQ6ICR7bn0uIENvbmZpZ3VyYXRpb25zIHNob3VsZCBoYXZlIHVuaXF1ZSByb3V0ZUtpbmRzYCk7ZS5hZGQobil9fW1hdGNoKHQpe2lmKCF0LnBhdGhuYW1lLnN0YXJ0c1dpdGgoIi8iKSl0aHJvdyBuZXcgUmFuZ2VFcnJvcignTmF2aWdhdGlvbiBoYXMgdG8gbWFkZSB3aXRoIHBhdGhuYW1lIHRoYXQgc3RhcnRzIHdpdGggIi8iJyk7bGV0IG49VFYodC5wYXRobmFtZSksZT0wO2Zvcig7Oyl7bGV0IHQ9ITE7Zm9yKGNvbnN0IGUgb2YgdGhpcy5jb25maWdNYXRjaGVycyl7Y29uc3QgYT1lLm1hdGNoKG4pO2lmKGEucmVzdWx0KXtjb25zdHtwYXJhbXM6byxwYXRoUGFydHM6cixpc1JlZGlyZWN0aW9uOml9PWE7aWYoaSl7bj1yLHQ9ITA7YnJlYWt9Y29uc3QgYz1lLmNvbmZpZztyZXR1cm57cm91dGVLaW5kOmMucm91dGVLaW5kLHBhcmFtczpvLHBhdGhuYW1lOkRWKHIpLGRlZXBMaW5rUHJvdmlkZXI6Yy5kZWVwTGlua1Byb3ZpZGVyfHxudWxsfX19aWYodCYmZSsrLGU+dGhpcy5tYXhSZWRpcmVjdGlvbnx8IXQpYnJlYWt9aWYoZT50aGlzLm1heFJlZGlyZWN0aW9uKXRocm93IG5ldyBFcnJvcihgUG90ZW50aWFsIHJlZGlyZWN0aW9uIGxvb3AgKHJlZGlyZWN0aW5nIG1vcmUgdGhhbiAke3RoaXMubWF4UmVkaXJlY3Rpb259IHRpbWVzLiBQbGVhc2UgZG8gbm90IGhhdmUgY3ljbGVzIGluIHRoZSByb3V0ZXMuYCk7aWYodGhpcy5kZWZhdWx0Um91dGVDb25maWcpe2NvbnN0IHQ9dGhpcy5kZWZhdWx0Um91dGVDb25maWcuY29uZmlnO3JldHVybntyb3V0ZUtpbmQ6dC5yb3V0ZUtpbmQscGFyYW1zOnt9LHBhdGhuYW1lOnQucGF0aCxkZWVwTGlua1Byb3ZpZGVyOnQuZGVlcExpbmtQcm92aWRlcnx8bnVsbH19cmV0dXJuIG51bGx9bWF0Y2hCeVJvdXRlS2luZCh0LG4pe2NvbnN0IGU9dGhpcy5yb3V0ZUtpbmRUb0NvbmZpZ01hdGNoZXJzLmdldCh0KTtpZighZXx8IWUuY29uZmlnLnJvdXRlS2luZCl0aHJvdyBuZXcgUmFuZ2VFcnJvcihgUmVxdWlyZXMgY29uZmlndXJhdGlvbiBmb3Igcm91dGVLaW5kOiAke3R9YCk7Y29uc3QgYT1lLm1hdGNoQnlQYXJhbXMobiksbz1lLmNvbmZpZztyZXR1cm57cm91dGVLaW5kOnQscGFyYW1zOm4scGF0aG5hbWU6RFYoYS5wYXRoUGFydHMpLGRlZXBMaW5rUHJvdmlkZXI6by5kZWVwTGlua1Byb3ZpZGVyfHxudWxsfX19ZnVuY3Rpb24gVFYodCl7cmV0dXJuIHQuc3BsaXQoIi8iKS5zbGljZSgxKX1mdW5jdGlvbiBEVih0KXtyZXR1cm4iLyIrdC5qb2luKCIvIil9Y29uc3QgSVY9bmV3IEZhKCJbQXBwIFJvdXRpbmddIFJvdXRlIENvbmZpZyIpO2NsYXNzIE5We2NvbnN0cnVjdG9yKHQpe2lmKHRoaXMucm91dGVDb25maWdzPW51bGwsdGhpcy5yb3V0ZUtpbmRUb05nQ29tcG9uZW50PW5ldyBNYXAsIXQpcmV0dXJuO2NvbnN0IG49W107Zm9yKGNvbnN0IGUgb2YgdClmb3IoY29uc3QgdCBvZiBlKW4ucHVzaCh0KTt0aGlzLnJvdXRlQ29uZmlncz1uZXcgUlYobiksbi5mb3JFYWNoKCh0PT57dC5yb3V0ZUtpbmQmJnRoaXMucm91dGVLaW5kVG9OZ0NvbXBvbmVudC5zZXQodC5yb3V0ZUtpbmQsdC5uZ0NvbXBvbmVudCl9KSl9Z2V0Um91dGVDb25maWdzKCl7cmV0dXJuIHRoaXMucm91dGVDb25maWdzfWdldE5nQ29tcG9uZW50QnlSb3V0ZUtpbmQodCl7cmV0dXJuIHRoaXMucm91dGVLaW5kVG9OZ0NvbXBvbmVudC5nZXQodCl8fG51bGx9c3RhdGljIHJlZ2lzdGVyUm91dGVzKHQpe3JldHVybntuZ01vZHVsZTpOVixwcm92aWRlcnM6W3twcm92aWRlOklWLG11bHRpOiEwLHVzZUZhY3Rvcnk6dH1dfX19TlYuybVtb2Q9eG8oe3R5cGU6TlZ9KSxOVi7JtWluaj1HZSh7ZmFjdG9yeTpmdW5jdGlvbiB0KG4pe3JldHVybiBuZXcobnx8TlYpKFphKElWLDgpKX19KTtjb25zdCBGVj1bInJvdXRlQ29udGFpbmVyIl07Y2xhc3MgTFZ7Y29uc3RydWN0b3IodCl7dGhpcy5jb21wb25lbnRGYWN0b3J5UmVzb2x2ZXI9dH1uZ09uQ2hhbmdlcyh0KXtjb25zdCBuPXQuYWN0aXZlTmdDb21wb25lbnQ7aWYobiYmKHRoaXMucm91dGVDb250YWluZXIuY2xlYXIoKSxuLmN1cnJlbnRWYWx1ZSkpe2NvbnN0IHQ9dGhpcy5jb21wb25lbnRGYWN0b3J5UmVzb2x2ZXIucmVzb2x2ZUNvbXBvbmVudEZhY3Rvcnkobi5jdXJyZW50VmFsdWUpO3RoaXMucm91dGVDb250YWluZXIuY3JlYXRlQ29tcG9uZW50KHQpfX19TFYuybVmYWM9ZnVuY3Rpb24gdChuKXtyZXR1cm4gbmV3KG58fExWKShaZyhQdSkpfSxMVi7JtWNtcD1fbyh7dHlwZTpMVixzZWxlY3RvcnM6W1sicm91dGVyLW91dGxldC1jb21wb25lbnQiXV0sdmlld1F1ZXJ5OmZ1bmN0aW9uIHQobixlKXt2YXIgYTsxJm4mJmpmKEZWLCEwLCR1KSwyJm4mJlZmKGE9WmYoKSkmJihlLnJvdXRlQ29udGFpbmVyPWEuZmlyc3QpfSxpbnB1dHM6e2FjdGl2ZU5nQ29tcG9uZW50OiJhY3RpdmVOZ0NvbXBvbmVudCJ9LGZlYXR1cmVzOltwcl0sZGVjbHM6Mix2YXJzOjAsY29uc3RzOltbInJvdXRlQ29udGFpbmVyIiwiIl1dLHRlbXBsYXRlOmZ1bmN0aW9uIHQobixlKXsxJm4mJmFwKDAsbnVsbCwwKX0sZW5jYXBzdWxhdGlvbjoyLGNoYW5nZURldGVjdGlvbjowfSk7Y2xhc3MgSFZ7Y29uc3RydWN0b3IodCxuKXt0aGlzLnN0b3JlPXQsdGhpcy5yZWdpc3RyeT1uLHRoaXMuYWN0aXZlTmdDb21wb25lbnQkPUV0KFt0aGlzLnN0b3JlLnNlbGVjdChLeiksdGhpcy5zdG9yZS5zZWxlY3QoJHopXSkucGlwZShmdCgoKFt0LG5dKT0+dD9udWxsIT09biYmWHoobi5yb3V0ZUtpbmQsbi5wYXJhbXMpIT09WHoodC5yb3V0ZUtpbmQsdC5wYXJhbXMpP251bGw6dGhpcy5yZWdpc3RyeS5nZXROZ0NvbXBvbmVudEJ5Um91dGVLaW5kKHQucm91dGVLaW5kKTpudWxsKSkpfX1IVi7JtWZhYz1mdW5jdGlvbiB0KG4pe3JldHVybiBuZXcobnx8SFYpKFpnKGN2KSxaZyhOVikpfSxIVi7JtWNtcD1fbyh7dHlwZTpIVixzZWxlY3RvcnM6W1sicm91dGVyLW91dGxldCJdXSxkZWNsczoyLHZhcnM6Myxjb25zdHM6W1szLCJhY3RpdmVOZ0NvbXBvbmVudCJdXSx0ZW1wbGF0ZTpmdW5jdGlvbiB0KG4sZSl7MSZuJiYodHAoMCwicm91dGVyLW91dGxldC1jb21wb25lbnQiLDApLHlmKDEsImFzeW5jIikpLDImbiYmSmcoImFjdGl2ZU5nQ29tcG9uZW50IixrZigxLDEsZS5hY3RpdmVOZ0NvbXBvbmVudCQpKX0sZGlyZWN0aXZlczpbTFZdLHBpcGVzOltvT10sZW5jYXBzdWxhdGlvbjoyLGNoYW5nZURldGVjdGlvbjowfSk7Y29uc3QgQlY9Il9fdGFiX18iO2NsYXNzIFZWe2NvbnN0cnVjdG9yKCl7dGhpcy50ZlN0b3JhZ2U9ZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgidGYtc3RvcmFnZSIpLGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoInRmLWdsb2JhbHMiKS50Zl9nbG9iYWxzLnNldFVzZUhhc2goITApLHRoaXMudGZTdG9yYWdlLnRmX3N0b3JhZ2UubWlncmF0ZUxlZ2FjeVVSTFNjaGVtZSgpfWdldFN0cmluZyh0KXtyZXR1cm4gdGhpcy50ZlN0b3JhZ2UudGZfc3RvcmFnZS5nZXRTdHJpbmcodCl9c2V0U3RyaW5nKHQsbixlKXt0aGlzLnRmU3RvcmFnZS50Zl9zdG9yYWdlLnNldFN0cmluZyh0LG4sZSl9Z2V0UGx1Z2luSWQoKXtyZXR1cm4gdGhpcy5nZXRTdHJpbmcoQlYpfXNldFBsdWdpbklkKHQsbil7dGhpcy5zZXRTdHJpbmcoQlYsdCxuKX19dmFyIGpWO1ZWLsm1ZmFjPWZ1bmN0aW9uIHQobil7cmV0dXJuIG5ldyhufHxWVil9LFZWLsm1cHJvdj1XZSh7dG9rZW46VlYsZmFjdG9yeTpWVi7JtWZhY30pLChmdW5jdGlvbih0KXt0W3QuQUNUSVZFX1BMVUdJTj0wXT0iQUNUSVZFX1BMVUdJTiJ9KShqVnx8KGpWPXt9KSk7Y2xhc3MgVVZ7Y29uc3RydWN0b3IodCl7dGhpcy5kZWVwTGlua2VyPXQsdGhpcy5vbkhhc2hDaGFuZ2U9dGhpcy5vbkhhc2hDaGFuZ2VkSW1wbC5iaW5kKHRoaXMpLHRoaXMub25WYWx1ZUNoYW5nZT1uZXcgRWZ9b25IYXNoQ2hhbmdlZEltcGwoKXtjb25zdCB0PXRoaXMuZGVlcExpbmtlci5nZXRQbHVnaW5JZCgpO3QhPT10aGlzLmFjdGl2ZVBsdWdpbklkJiZ0aGlzLm9uVmFsdWVDaGFuZ2UuZW1pdCh7cHJvcDpqVi5BQ1RJVkVfUExVR0lOLHZhbHVlOnR9KX1uZ09uSW5pdCgpe3dpbmRvdy5hZGRFdmVudExpc3RlbmVyKCJoYXNoY2hhbmdlIix0aGlzLm9uSGFzaENoYW5nZSl9bmdPbkRlc3Ryb3koKXt3aW5kb3cucmVtb3ZlRXZlbnRMaXN0ZW5lcigiaGFzaGNoYW5nZSIsdGhpcy5vbkhhc2hDaGFuZ2UpfW5nT25DaGFuZ2VzKHQpe2lmKHQuYWN0aXZlUGx1Z2luSWQpe2NvbnN0IG49dC5hY3RpdmVQbHVnaW5JZDt0aGlzLmRlZXBMaW5rZXIuc2V0UGx1Z2luSWQobnVsbD09PW4uY3VycmVudFZhbHVlPyIiOm4uY3VycmVudFZhbHVlLHtkZWZhdWx0VmFsdWU6IiIsdXNlTG9jYXRpb25SZXBsYWNlOm51bGw9PT1uLnByZXZpb3VzVmFsdWV8fG4uZmlyc3RDaGFuZ2V9KX19fVVWLsm1ZmFjPWZ1bmN0aW9uIHQobil7cmV0dXJuIG5ldyhufHxVVikoWmcoVlYpKX0sVVYuybVjbXA9X28oe3R5cGU6VVYsc2VsZWN0b3JzOltbImhhc2gtc3RvcmFnZS1jb21wb25lbnQiXV0saW5wdXRzOnthY3RpdmVQbHVnaW5JZDoiYWN0aXZlUGx1Z2luSWQifSxvdXRwdXRzOntvblZhbHVlQ2hhbmdlOiJvblZhbHVlQ2hhbmdlIn0sZmVhdHVyZXM6W3ByXSxkZWNsczowLHZhcnM6MCx0ZW1wbGF0ZTpmdW5jdGlvbiB0KG4sZSl7fSxlbmNhcHN1bGF0aW9uOjIsY2hhbmdlRGV0ZWN0aW9uOjB9KTtjbGFzcyBXVntjb25zdHJ1Y3Rvcih0KXt0aGlzLnN0b3JlPXQsdGhpcy5hY3RpdmVQbHVnaW5JZCQ9dGhpcy5zdG9yZS5waXBlKGx2KE5JKSl9b25WYWx1ZUNoYW5nZWQodCl7c3dpdGNoKHQucHJvcCl7Y2FzZSBqVi5BQ1RJVkVfUExVR0lOOnRoaXMuc3RvcmUuZGlzcGF0Y2gocEkoe3BsdWdpbjp0LnZhbHVlfSkpfX19V1YuybVmYWM9ZnVuY3Rpb24gdChuKXtyZXR1cm4gbmV3KG58fFdWKShaZyhjdikpfSxXVi7JtWNtcD1fbyh7dHlwZTpXVixzZWxlY3RvcnM6W1siaGFzaC1zdG9yYWdlIl1dLGRlY2xzOjIsdmFyczozLGNvbnN0czpbWzMsImFjdGl2ZVBsdWdpbklkIiwib25WYWx1ZUNoYW5nZSJdXSx0ZW1wbGF0ZTpmdW5jdGlvbiB0KG4sZSl7MSZuJiYoS2coMCwiaGFzaC1zdG9yYWdlLWNvbXBvbmVudCIsMCksY3AoIm9uVmFsdWVDaGFuZ2UiLChmdW5jdGlvbiB0KG4pe3JldHVybiBlLm9uVmFsdWVDaGFuZ2VkKG4pfSkpLHlmKDEsImFzeW5jIiksJGcoKSksMiZuJiZKZygiYWN0aXZlUGx1Z2luSWQiLGtmKDEsMSxlLmFjdGl2ZVBsdWdpbklkJCkpfSxkaXJlY3RpdmVzOltVVl0scGlwZXM6W29PXSxzdHlsZXM6WyJbX25naG9zdC0lQ09NUCVdIHtcbiAgICAgICAgZGlzcGxheTogbm9uZTtcbiAgICAgIH0iXSxjaGFuZ2VEZXRlY3Rpb246MH0pO2NsYXNzIEdWe25nT25DaGFuZ2VzKHQpe3QudGl0bGUmJihkb2N1bWVudC50aXRsZT10LnRpdGxlLmN1cnJlbnRWYWx1ZSl9fUdWLsm1ZmFjPWZ1bmN0aW9uIHQobil7cmV0dXJuIG5ldyhufHxHVil9LEdWLsm1Y21wPV9vKHt0eXBlOkdWLHNlbGVjdG9yczpbWyJwYWdlLXRpdGxlLWNvbXBvbmVudCJdXSxpbnB1dHM6e3RpdGxlOiJ0aXRsZSJ9LGZlYXR1cmVzOltwcl0sZGVjbHM6MCx2YXJzOjAsdGVtcGxhdGU6ZnVuY3Rpb24gdChuLGUpe30sZW5jYXBzdWxhdGlvbjoyLGNoYW5nZURldGVjdGlvbjowfSk7Y2xhc3MgWVZ7Y29uc3RydWN0b3IodCl7dGhpcy5zdG9yZT10LHRoaXMudGl0bGUkPXRoaXMuc3RvcmUucGlwZShsdihMSSksZnQoKHQ9PnQud2luZG93X3RpdGxlfHwiVGVuc29yQm9hcmQiKSksdm4oKSl9fVlWLsm1ZmFjPWZ1bmN0aW9uIHQobil7cmV0dXJuIG5ldyhufHxZVikoWmcoY3YpKX0sWVYuybVjbXA9X28oe3R5cGU6WVYsc2VsZWN0b3JzOltbInBhZ2UtdGl0bGUiXV0sZGVjbHM6Mix2YXJzOjMsY29uc3RzOltbMywidGl0bGUiXV0sdGVtcGxhdGU6ZnVuY3Rpb24gdChuLGUpezEmbiYmKHRwKDAsInBhZ2UtdGl0bGUtY29tcG9uZW50IiwwKSx5ZigxLCJhc3luYyIpKSwyJm4mJkpnKCJ0aXRsZSIsa2YoMSwxLGUudGl0bGUkKSl9LGRpcmVjdGl2ZXM6W0dWXSxwaXBlczpbb09dLHN0eWxlczpbIltfbmdob3N0LSVDT01QJV0ge1xuICAgICAgICBkaXNwbGF5OiBub25lO1xuICAgICAgfSJdLGNoYW5nZURldGVjdGlvbjowfSk7Y2xhc3MgcVZ7Y29uc3RydWN0b3IodCl7dGhpcy5zdG9yZT10LHRoaXMubmdVbnN1YnNjcmliZT1uZXcgeCx0aGlzLmdldFBhZ2VTaXplJD10aGlzLnN0b3JlLnBpcGUobHYoVkkpKSx0aGlzLnBhZ2luYXRlZFZpZXdTdG9yZT1kb2N1bWVudC5jcmVhdGVFbGVtZW50KCJ0Zi1wYWdpbmF0ZWQtdmlldy1zdG9yZSIpLnRmX3BhZ2luYXRlZF92aWV3fW5nT25Jbml0KCl7dGhpcy5nZXRQYWdlU2l6ZSQucGlwZShkZSh0aGlzLm5nVW5zdWJzY3JpYmUpLHZuKCkpLnN1YnNjcmliZSgodD0+e3RoaXMucGFnaW5hdGVkVmlld1N0b3JlLnNldExpbWl0KHQpfSkpfW5nT25EZXN0cm95KCl7dGhpcy5uZ1Vuc3Vic2NyaWJlLm5leHQoKSx0aGlzLm5nVW5zdWJzY3JpYmUuY29tcGxldGUoKX19cVYuybVmYWM9ZnVuY3Rpb24gdChuKXtyZXR1cm4gbmV3KG58fHFWKShaZyhjdikpfSxxVi7JtWNtcD1fbyh7dHlwZTpxVixzZWxlY3RvcnM6W1sic2V0dGluZ3MtcG9seW1lci1pbnRlcm9wIl1dLGRlY2xzOjAsdmFyczowLHRlbXBsYXRlOmZ1bmN0aW9uIHQobixlKXt9LGVuY2Fwc3VsYXRpb246MixjaGFuZ2VEZXRlY3Rpb246MH0pO2NsYXNzIFpWe2NvbnN0cnVjdG9yKHQsbil7dGhpcy5zdG9yZT10LHRoaXMudmNSZWY9bix0aGlzLnN0b3JlLnNlbGVjdChLeikucGlwZShHdCgodD0+Qm9vbGVhbih0KSkpLFRuKDEpKS5zdWJzY3JpYmUoKCgpPT57dGhpcy5zdG9yZS5kaXNwYXRjaChiSSgpKX0pKX19WlYuybVmYWM9ZnVuY3Rpb24gdChuKXtyZXR1cm4gbmV3KG58fFpWKShaZyhjdiksWmcoJHUpKX0sWlYuybVjbXA9X28oe3R5cGU6WlYsc2VsZWN0b3JzOltbInRiLXdlYmFwcCJdXSxkZWNsczo3LHZhcnM6MCx0ZW1wbGF0ZTpmdW5jdGlvbiB0KG4sZSl7MSZuJiYodHAoMCwiYXBwLWhlYWRlciIpLEtnKDEsIm1haW4iKSx0cCgyLCJyb3V0ZXItb3V0bGV0IiksJGcoKSx0cCgzLCJhbGVydC1zbmFja2JhciIpLHRwKDQsImhhc2gtc3RvcmFnZSIpLHRwKDUsInBhZ2UtdGl0bGUiKSx0cCg2LCJzZXR0aW5ncy1wb2x5bWVyLWludGVyb3AiKSl9LGRpcmVjdGl2ZXM6W0VWLEhWLHNJLFdWLFlWLHFWXSxzdHlsZXM6WyJodG1sW19uZ2NvbnRlbnQtJUNPTVAlXSwgYm9keVtfbmdjb250ZW50LSVDT01QJV0ge1xuICBmb250LWZhbWlseTogUm9ib3RvLCBzYW5zLXNlcmlmO1xuICBoZWlnaHQ6IDEwMCU7XG4gIG1hcmdpbjogMDtcbiAgcGFkZGluZzogMDtcbn1cblxuW19uZ2hvc3QtJUNPTVAlXSB7XG4gIGJhY2tncm91bmQ6ICNmNWY1ZjU7XG4gIGRpc3BsYXk6IGZsZXg7XG4gIGZsZXgtZGlyZWN0aW9uOiBjb2x1bW47XG4gIGhlaWdodDogMTAwJTtcbn1cblxuYXBwLWhlYWRlcltfbmdjb250ZW50LSVDT01QJV0ge1xuICBib3gtc2hhZG93OiAwIDFweCAzcHggM3B4IHJnYmEoMCwgMCwgMCwgMC4yNSk7XG4gIGZsZXg6IDAgMDtcbiAgei1pbmRleDogMTsgXG59XG5cbm1haW5bX25nY29udGVudC0lQ09NUCVdIHtcbiAgZmxleC1ncm93OiAxO1xuICBvdmVyZmxvdzogYXV0bztcbn0iXX0pO2NvbnN0IFhWPU9rKCJbQXBwIFJvdXRpbmddIFN0YXRlIFJlaHlkcmF0ZWQgRnJvbSBVcmwiLHtfYXM6InByb3BzIixfcDp2b2lkIDB9KSxKVj1PaygiW0FwcCBSb3V0aW5nXSBJbiBBcHAgTmF2aWdhdGlvbiBSZXF1ZXN0ZWQiLHtfYXM6InByb3BzIixfcDp2b2lkIDB9KSxRVj1PaygiW0FwcCBSb3V0aW5nXSBJbiBBcHAgTmF2aWdhdGluZyIse19hczoicHJvcHMiLF9wOnZvaWQgMH0pLEtWPU9rKCJbQXBwIFJvdXRpbmddIEluIEFwcCBOYXZpZ2F0ZWQiLHtfYXM6InByb3BzIixfcDp2b2lkIDB9KSwkVj1uZXcgRmEoIltBcHAgUm91dGluZ10gUHJvZ3JhbW1hdGljYWwgTmF2aWdhdGlvbiBQcm92aWRlciIpO2NsYXNzIHRqe2NvbnN0cnVjdG9yKHQpe3RoaXMucHJvdmlkZXJzPW5ldyBNYXA7Zm9yKGNvbnN0IG4gb2YgdHx8W10pe2lmKHRoaXMucHJvdmlkZXJzLmhhcyhuLmFjdGlvbkNyZWF0b3IudHlwZSkpdGhyb3cgbmV3IFJhbmdlRXJyb3IoYCIke24uYWN0aW9uQ3JlYXRvci50eXBlfSIgaXMgYWxyZWFkeSByZWdpc3RlcmVkIGZvciBuYXYuIE11bHRpcGxlIG5hdmlnYXRpb25zIG9uIHNhbWUga2ljayBpcyBub3QgYWxsb3dlZC5gKTt0aGlzLnByb3ZpZGVycy5zZXQobi5hY3Rpb25DcmVhdG9yLnR5cGUsbi5sYW1iZGEpfX1nZXROYXZpZ2F0aW9uKHQpe2NvbnN0IG49dGhpcy5wcm92aWRlcnMuZ2V0KHQudHlwZSk7cmV0dXJuIG4/bih0KTpudWxsfXN0YXRpYyByZWdpc3RlclByb2dyYW1tYXRpY2FsTmF2aWdhdGlvbih0KXtyZXR1cm57bmdNb2R1bGU6dGoscHJvdmlkZXJzOlt7cHJvdmlkZTokVixtdWx0aTohMCx1c2VGYWN0b3J5OnR9XX19fXRqLsm1bW9kPXhvKHt0eXBlOnRqfSksdGouybVpbmo9R2Uoe2ZhY3Rvcnk6ZnVuY3Rpb24gdChuKXtyZXR1cm4gbmV3KG58fHRqKShaYSgkViw4KSl9fSk7Y29uc3Qgbmo9T2soIltBcHAgUm91dGluZ10gRWZmZWN0cyBJbml0Iik7Y2xhc3MgZWp7Y29uc3RydWN0b3IodCxuLGUsYSxvLHIpe3RoaXMuYWN0aW9ucyQ9dCx0aGlzLnN0b3JlPW4sdGhpcy5sb2NhdGlvbj1lLHRoaXMucHJvZ3JhbW1hdGljYWxOYXZNb2R1bGU9byx0aGlzLmFwcFJvb3RQcm92aWRlcj1yLHRoaXMub25OYXZpZ2F0aW9uUmVxdWVzdGVkJD10aGlzLmFjdGlvbnMkLnBpcGUodHcoSlYpLGZ0KCh0PT57Y29uc3Qgbj10LnBhdGhuYW1lLnN0YXJ0c1dpdGgoIi8iKT90aGlzLmFwcFJvb3RQcm92aWRlci5nZXRBYnNQYXRobmFtZVdpdGhBcHBSb290KHQucGF0aG5hbWUpOnRoaXMubG9jYXRpb24uZ2V0UmVzb2x2ZWRQYXRoKHQucGF0aG5hbWUpO3JldHVybiBPYmplY3QuYXNzaWduKE9iamVjdC5hc3NpZ24oe30sdCkse3BhdGhuYW1lOm59KX0pKSksdGhpcy5vbkluaXQkPXRoaXMuYWN0aW9ucyQucGlwZSh0dyhuaikpLnBpcGUoZm4oMCksZnQoKCgpPT4oe3BhdGhuYW1lOnRoaXMubG9jYXRpb24uZ2V0UGF0aCgpLHF1ZXJ5UGFyYW1zOnRoaXMubG9jYXRpb24uZ2V0U2VhcmNoKCkscmVwbGFjZVN0YXRlOiEwLGJyb3dzZXJJbml0aWF0ZWQ6ITB9KSkpKSx0aGlzLnVzZXJJbml0TmF2Um91dGUkPVd0KHRoaXMub25OYXZpZ2F0aW9uUmVxdWVzdGVkJCx0aGlzLm9uSW5pdCQsdGhpcy5sb2NhdGlvbi5vblBvcFN0YXRlKCkucGlwZShmdCgodD0+KHtwYXRobmFtZTp0LnBhdGhuYW1lLHJlcGxhY2VTdGF0ZTp0LnJlcGxhY2VTdGF0ZSxicm93c2VySW5pdGlhdGVkOiEwfSkpKSkpLnBpcGUoZnQoKHQ9PntpZighdC5wYXRobmFtZS5zdGFydHNXaXRoKCIvIikpdGhyb3cgbmV3IEVycm9yKGBbQXBwIHJvdXRpbmddIHBhdGhuYW1lIG11c3Qgc3RhcnQgd2l0aCAnLycuIEdvdDogJHt0LnBhdGhuYW1lfWApO3JldHVybiBPYmplY3QuYXNzaWduKE9iamVjdC5hc3NpZ24oe30sdCkse3BhdGhuYW1lOnRoaXMuYXBwUm9vdFByb3ZpZGVyLmdldEFwcFJvb3RsZXNzUGF0aG5hbWUodC5wYXRobmFtZSl9KX0pKSxmdCgodD0+KHtyb3V0ZU1hdGNoOnRoaXMucm91dGVDb25maWdzP3RoaXMucm91dGVDb25maWdzLm1hdGNoKHQpOm51bGwsb3B0aW9uczp7cmVwbGFjZVN0YXRlOnQucmVwbGFjZVN0YXRlLGJyb3dzZXJJbml0aWF0ZWQ6dC5icm93c2VySW5pdGlhdGVkfX0pKSkpLHRoaXMucHJvZ3JhbW10aWNhbE5hdlJvdXRlJD10aGlzLmFjdGlvbnMkLnBpcGUoZnQoKHQ9PnRoaXMucHJvZ3JhbW1hdGljYWxOYXZNb2R1bGUuZ2V0TmF2aWdhdGlvbih0KSkpLEd0KCh0PT5udWxsIT09dCkpLGZ0KCh0PT57Y29uc3R7cm91dGVLaW5kOm4scm91dGVQYXJhbXM6ZX09dDtyZXR1cm57cm91dGVNYXRjaDp0aGlzLnJvdXRlQ29uZmlncz90aGlzLnJvdXRlQ29uZmlncy5tYXRjaEJ5Um91dGVLaW5kKG4sZSk6bnVsbCxvcHRpb25zOntyZXBsYWNlU3RhdGU6ITEsYnJvd3NlckluaXRpYXRlZDohMX19fSkpKSx0aGlzLnZhbGlkYXRlZFJvdXRlJD1XdCh0aGlzLnVzZXJJbml0TmF2Um91dGUkLHRoaXMucHJvZ3JhbW10aWNhbE5hdlJvdXRlJCkucGlwZShHdCgoKHtyb3V0ZU1hdGNoOnR9KT0+Qm9vbGVhbih0KSkpLGZ0KCh0PT4oe3JvdXRlTWF0Y2g6dC5yb3V0ZU1hdGNoLG9wdGlvbnM6dC5vcHRpb25zfSkpKSksdGhpcy5maXJlTmF2aWdhdGVkSWZWYWxpZFJvdXRlJD1ZdigoKCk9PnRoaXMudmFsaWRhdGVkUm91dGUkLnBpcGUoaGUoKCh7cm91dGVNYXRjaDp0LG9wdGlvbnM6bn0pPT57aWYobi5icm93c2VySW5pdGlhdGVkJiZ0LmRlZXBMaW5rUHJvdmlkZXIpe2NvbnN0IG49dC5kZWVwTGlua1Byb3ZpZGVyLmRlc2VyaWFsaXplUXVlcnlQYXJhbXModGhpcy5sb2NhdGlvbi5nZXRTZWFyY2goKSk7dGhpcy5zdG9yZS5kaXNwYXRjaChYVih7cm91dGVLaW5kOnQucm91dGVLaW5kLHBhcnRpYWxTdGF0ZTpufSkpfX0pKSxzZSgoKHtyb3V0ZU1hdGNoOnQsb3B0aW9uczpufSk9Pnt2YXIgZTtjb25zdCBhPXtyZXBsYWNlU3RhdGU6bnVsbCE9PShlPW4ucmVwbGFjZVN0YXRlKSYmdm9pZCAwIT09ZSYmZX0sbz1aKHtyb3V0ZUtpbmQ6dC5yb3V0ZUtpbmQscGFyYW1zOnQucGFyYW1zLHBhdGhuYW1lOnQucGF0aG5hbWUscXVlcnlQYXJhbXM6W10sbmF2aWdhdGlvbk9wdGlvbnM6YX0pO3JldHVybiBudWxsPT09dC5kZWVwTGlua1Byb3ZpZGVyP286dC5kZWVwTGlua1Byb3ZpZGVyLnNlcmlhbGl6ZVN0YXRlVG9RdWVyeVBhcmFtcyh0aGlzLnN0b3JlKS5waXBlKGZ0KCgobixlKT0+KHtyb3V0ZUtpbmQ6dC5yb3V0ZUtpbmQscGFyYW1zOnQucGFyYW1zLHBhdGhuYW1lOnQucGF0aG5hbWUscXVlcnlQYXJhbXM6bixuYXZpZ2F0aW9uT3B0aW9uczowPT09ZT9hOk9iamVjdC5hc3NpZ24oT2JqZWN0LmFzc2lnbih7fSxhKSx7cmVwbGFjZVN0YXRlOiEwfSl9KSkpKX0pKSxoZSgodD0+e3RoaXMuc3RvcmUuZGlzcGF0Y2goUVYoe2FmdGVyOnR9KSl9KSksbG4oMCkseWUodGhpcy5zdG9yZS5zZWxlY3QoS3opKSxmdCgoKFt0LG5dKT0+S1Yoe2JlZm9yZTpuLGFmdGVyOnR9KSkpKSkpLHRoaXMuY2hhbmdlQnJvd3NlclVybCQ9WXYoKCgpPT50aGlzLmFjdGlvbnMkLnBpcGUodHcoS1YpLHllKHRoaXMuc3RvcmUuc2VsZWN0KEt6KSksR3QoKChbLHRdKT0+Qm9vbGVhbih0KSkpLGZ0KCgoW3Qsbl0pPT57Y29uc3QgZT10LmJlZm9yZTtyZXR1cm57cHJlc2VydmVIYXNoOm51bGw9PT1lfHxYeihlLnJvdXRlS2luZCxlLnBhcmFtcyk9PT1YeihuLnJvdXRlS2luZCxuLnBhcmFtcykscm91dGU6bn19KSksR3QoKCh7cm91dGU6dH0pPT4hKGZ1bmN0aW9uIG4odCxlKXtyZXR1cm4gdC5wYXRobmFtZT09PWUucGF0aG5hbWUmJnQucXVlcnlQYXJhbXMubGVuZ3RoPT09ZS5xdWVyeVBhcmFtcy5sZW5ndGgmJnQucXVlcnlQYXJhbXMuZXZlcnkoKCh0LG4pPT57Y29uc3QgYT1lLnF1ZXJ5UGFyYW1zW25dO3JldHVybiB0LmtleT09PWEua2V5JiZ0LnZhbHVlPT09YS52YWx1ZX0pKX0pKHQse3BhdGhuYW1lOnRoaXMuYXBwUm9vdFByb3ZpZGVyLmdldEFwcFJvb3RsZXNzUGF0aG5hbWUodGhpcy5sb2NhdGlvbi5nZXRQYXRoKCkpLHF1ZXJ5UGFyYW1zOnRoaXMubG9jYXRpb24uZ2V0U2VhcmNoKCl9KSkpLGhlKCgoe3ByZXNlcnZlSGFzaDp0LHJvdXRlOm59KT0+e24ubmF2aWdhdGlvbk9wdGlvbnMucmVwbGFjZVN0YXRlP3RoaXMubG9jYXRpb24ucmVwbGFjZVN0YXRlKHRoaXMuYXBwUm9vdFByb3ZpZGVyLmdldEFic1BhdGhuYW1lV2l0aEFwcFJvb3QodGhpcy5sb2NhdGlvbi5nZXRGdWxsUGF0aEZyb21Sb3V0ZU9yTmF2KG4sdCkpKTp0aGlzLmxvY2F0aW9uLnB1c2hTdGF0ZSh0aGlzLmFwcFJvb3RQcm92aWRlci5nZXRBYnNQYXRobmFtZVdpdGhBcHBSb290KHRoaXMubG9jYXRpb24uZ2V0RnVsbFBhdGhGcm9tUm91dGVPck5hdihuLHQpKSl9KSkpKSx7ZGlzcGF0Y2g6ITF9KSx0aGlzLnJvdXRlQ29uZmlncz1hLmdldFJvdXRlQ29uZmlncygpfW5ncnhPbkluaXRFZmZlY3RzKCl7cmV0dXJuIG5qKCl9fWVqLsm1ZmFjPWZ1bmN0aW9uIHQobil7cmV0dXJuIG5ldyhufHxlaikoWmEoJHYpLFphKGN2KSxaYShvVCksWmEoTlYpLFphKHRqKSxaYShyVCkpfSxlai7JtXByb3Y9V2Uoe3Rva2VuOmVqLGZhY3Rvcnk6ZWouybVmYWN9KTtjb25zdCBhaj1Vdih7YWN0aXZlUm91dGU6bnVsbCxuZXh0Um91dGU6bnVsbH0sanYoUVYsKCh0LHthZnRlcjpufSk9Pk9iamVjdC5hc3NpZ24oT2JqZWN0LmFzc2lnbih7fSx0KSx7bmV4dFJvdXRlOm59KSkpLGp2KEtWLCgodCx7YWZ0ZXI6bn0pPT5PYmplY3QuYXNzaWduKE9iamVjdC5hc3NpZ24oe30sdCkse2FjdGl2ZVJvdXRlOm4sbmV4dFJvdXRlOm51bGx9KSkpKTtjbGFzcyBvant9b2ouybVtb2Q9eG8oe3R5cGU6b2p9KSxvai7JtWluaj1HZSh7ZmFjdG9yeTpmdW5jdGlvbiB0KG4pe3JldHVybiBuZXcobnx8b2opfSxwcm92aWRlcnM6W3RqXSxpbXBvcnRzOltbSXYuZm9yRmVhdHVyZShKeiwoZnVuY3Rpb24gcmoodCxuKXtyZXR1cm4gYWoodCxuKX0pKSxmdy5mb3JGZWF0dXJlKFtlal0pLHdULHZUXV19KSwoInVuZGVmaW5lZCI9PXR5cGVvZiBuZ0ppdE1vZGV8fG5nSml0TW9kZSkmJnlvKG9qLHtpbXBvcnRzOltEdix1dyx3VCx2VF19KTtjbGFzcyBpantjb25zdHJ1Y3Rvcih0LG4sZSl7dGhpcy5zdG9yZT10LHRoaXMubG9jYXRpb249bix0aGlzLmFwcFJvb3RQcm92aWRlcj1lLHRoaXMucGF0aG5hbWU9bnVsbH1oYW5kbGVDbGljayh0KXshdGhpcy5wYXRobmFtZXx8dC5jdHJsS2V5fHx0Lm1ldGFLZXl8fCh0LnByZXZlbnREZWZhdWx0KCksdC5zdG9wUHJvcGFnYXRpb24oKSx0aGlzLnN0b3JlLmRpc3BhdGNoKEpWKHtwYXRobmFtZTp0aGlzLnBhdGhuYW1lfSkpKX1nZXQgaHJlZigpe3JldHVybiB0aGlzLnBhdGhuYW1lP3RoaXMuYXBwUm9vdFByb3ZpZGVyLmdldEFic1BhdGhuYW1lV2l0aEFwcFJvb3QodGhpcy5sb2NhdGlvbi5nZXRGdWxsUGF0aEZyb21Sb3V0ZU9yTmF2KHtwYXRobmFtZTp0aGlzLnBhdGhuYW1lfSkpOm51bGx9c2V0IHJvdXRlckxpbmsodCl7aWYoInN0cmluZyI9PXR5cGVvZiB0JiYodD1bdF0pLDA9PT10Lmxlbmd0aCl0aHJvdyBuZXcgUmFuZ2VFcnJvcigicm91dGVMaW5rIHNob3VsZCBoYXZlIHByb3BlciBwYXRoLiBHb3Qgbm90aGluZy4iKTtjb25zdCBuPVsuLi50XS5qb2luKCIvIik7dGhpcy5wYXRobmFtZT1uLmVuZHNXaXRoKCIvIik/bjpuKyIvIn19aWouybVmYWM9ZnVuY3Rpb24gdChuKXtyZXR1cm4gbmV3KG58fGlqKShaZyhjdiksWmcob1QpLFpnKHJUKSl9LGlqLsm1ZGlyPXZvKHt0eXBlOmlqLHNlbGVjdG9yczpbWyJhIiwicm91dGVyTGluayIsIiJdXSxob3N0VmFyczoxLGhvc3RCaW5kaW5nczpmdW5jdGlvbiB0KG4sZSl7MSZuJiZjcCgiY2xpY2siLChmdW5jdGlvbiB0KG4pe3JldHVybiBlLmhhbmRsZUNsaWNrKG4pfSkpLDImbiYmTmcoImhyZWYiLGUuaHJlZixYYyl9LGlucHV0czp7cm91dGVyTGluazoicm91dGVyTGluayJ9fSk7Y2xhc3MgY2p7fXZhciBzajtmdW5jdGlvbiBsaih0KXtsZXQgbj1zai5VTktOT1dOO3JldHVybiB0IGluc3RhbmNlb2YgVFImJjQwND09PXQuc3RhdHVzJiYobj1zai5OT1RfRk9VTkQpLFgobmV3IG1qKG4pKX1jai7JtW1vZD14byh7dHlwZTpjan0pLGNqLsm1aW5qPUdlKHtmYWN0b3J5OmZ1bmN0aW9uIHQobil7cmV0dXJuIG5ldyhufHxjail9LGltcG9ydHM6W1tQTyx3VCx2VCxOVl1dfSksKCJ1bmRlZmluZWQiPT10eXBlb2YgbmdKaXRNb2RlfHxuZ0ppdE1vZGUpJiZ5byhjaix7ZGVjbGFyYXRpb25zOltIVixMVixpal0saW1wb3J0czpbUE8sd1QsdlQsTlZdLGV4cG9ydHM6W0hWLGlqXX0pLChmdW5jdGlvbih0KXt0LlVOS05PV049IlVOS05PV04iLHQuTk9UX0ZPVU5EPSJOT1RfRk9VTkQifSkoc2p8fChzaj17fSkpO2NsYXNzIG1qe2NvbnN0cnVjdG9yKHQpe3RoaXMuZmFpbHVyZUNvZGU9dH19Y2xhc3MgZGp7Y29uc3RydWN0b3IodCl7dGhpcy5odHRwPXQsdGhpcy50ZkJhY2tlbmQ9ZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgidGYtYmFja2VuZCIpLnRmX2JhY2tlbmR9ZmV0Y2hQbHVnaW5zTGlzdGluZyh0KXtjb25zdCBuPShmdW5jdGlvbiBlKHQpe2lmKCF0Lmxlbmd0aClyZXR1cm4gbnVsbDtjb25zdCBuPW5ldyBVUkxTZWFyY2hQYXJhbXM7Zm9yKGNvbnN0IGUgb2YgdCluLmFwcGVuZCgiZXhwZXJpbWVudGFsUGx1Z2luIixlKTtyZXR1cm4gbn0pKHQpLGE9bj9gZGF0YS9wbHVnaW5zX2xpc3Rpbmc/JHtuLnRvU3RyaW5nKCl9YDoiZGF0YS9wbHVnaW5zX2xpc3RpbmciO3JldHVybiB0aGlzLmh0dHAuZ2V0KGEpLnBpcGUob24obGopKX1mZXRjaEVudmlyb25tZW50KCl7cmV0dXJuIEh0KFt0aGlzLmh0dHAuZ2V0KCJkYXRhL2Vudmlyb25tZW50IiksUnQodGhpcy50ZkJhY2tlbmQuZW52aXJvbm1lbnRTdG9yZS5yZWZyZXNoKCkpXSkucGlwZShmdCgoKFt0XSk9PnQpKSxvbihsaikpfX1kai7JtWZhYz1mdW5jdGlvbiB0KG4pe3JldHVybiBuZXcobnx8ZGopKFphKG1UKSl9LGRqLsm1cHJvdj1XZSh7dG9rZW46ZGosZmFjdG9yeTpkai7JtWZhY30pO2NsYXNzIGdqe31nai7JtW1vZD14byh7dHlwZTpnan0pLGdqLsm1aW5qPUdlKHtmYWN0b3J5OmZ1bmN0aW9uIHQobil7cmV0dXJuIG5ldyhufHxnail9LHByb3ZpZGVyczpbZGpdLGltcG9ydHM6W1tTVF1dfSksKCJ1bmRlZmluZWQiPT10eXBlb2YgbmdKaXRNb2RlfHxuZ0ppdE1vZGUpJiZ5byhnaix7aW1wb3J0czpbU1RdfSk7Y2xhc3MgcGp7Y29uc3RydWN0b3IodCxuLGUpe3RoaXMuYWN0aW9ucyQ9dCx0aGlzLnN0b3JlPW4sdGhpcy53ZWJhcHBEYXRhU291cmNlPWUsdGhpcy50ZkJhY2tlbmQ9e3JlZjpkb2N1bWVudC5jcmVhdGVFbGVtZW50KCJ0Zi1iYWNrZW5kIikudGZfYmFja2VuZH0sdGhpcy5mZXRjaFdlYkFwcERhdGEkPVl2KCgoKT0+dGhpcy5hY3Rpb25zJC5waXBlKHR3KGJJLGZJLHVJKSx5ZSh0aGlzLnN0b3JlLnNlbGVjdChJSSksdGhpcy5zdG9yZS5zZWxlY3QocFIpKSxHdCgoKFsse3N0YXRlOnR9XSk9PnQhPT1mUi5MT0FESU5HKSksaGUoKCgpPT50aGlzLnN0b3JlLmRpc3BhdGNoKGhJKCkpKSksVHQoKChbLCx0XSk9PihmdW5jdGlvbiBuKC4uLnQpe2xldCBuO3JldHVybiJmdW5jdGlvbiI9PXR5cGVvZiB0W3QubGVuZ3RoLTFdJiYobj10LnBvcCgpKSxxKHQsdm9pZCAwKS5saWZ0KG5ldyBKdChuKSl9KSh0aGlzLndlYmFwcERhdGFTb3VyY2UuZmV0Y2hQbHVnaW5zTGlzdGluZyh0KSx0aGlzLmZldGNoRW52aXJvbm1lbnQoKSx0aGlzLnJlZnJlc2hQb2x5bWVyUnVucygpKS5waXBlKGZ0KCgoW3RdKT0+e3RoaXMuc3RvcmUuZGlzcGF0Y2goX0koe3BsdWdpbnM6dH0pKX0pKSxvbigodD0+KHRoaXMuc3RvcmUuZGlzcGF0Y2goQ0kodCBpbnN0YW5jZW9mIG1qP3tmYWlsdXJlQ29kZTp0LmZhaWx1cmVDb2RlfTp7ZmFpbHVyZUNvZGU6c2ouVU5LTk9XTn0pKSxVKSkpKSkpKSkse2Rpc3BhdGNoOiExfSksdGhpcy5kaXNwYXRjaENoYW5nZVBsdWdpbiQ9WXYoKCgpPT50aGlzLmFjdGlvbnMkLnBpcGUodHcoYkksX0kpLHllKHRoaXMuc3RvcmUuc2VsZWN0KE5JKSksZnQoKChbLHRdKT0+dCkpLHZuKCksR3QoKHQ9Pm51bGwhPT10KSksVG4oMSksaGUoKHQ9Pnt0aGlzLnN0b3JlLmRpc3BhdGNoKGdJKHtwbHVnaW46dH0pKX0pKSkpLHtkaXNwYXRjaDohMX0pfXJlZnJlc2hQb2x5bWVyUnVucygpe3JldHVybiBSdCh0aGlzLnRmQmFja2VuZC5yZWYucnVuc1N0b3JlLnJlZnJlc2goKSl9ZmV0Y2hFbnZpcm9ubWVudCgpe3JldHVybiB0aGlzLndlYmFwcERhdGFTb3VyY2UuZmV0Y2hFbnZpcm9ubWVudCgpLnBpcGUoaGUoKHQ9Pnt0aGlzLnN0b3JlLmRpc3BhdGNoKE1JKHtlbnZpcm9ubWVudDp0fSkpfSkpKX19cGouybVmYWM9ZnVuY3Rpb24gdChuKXtyZXR1cm4gbmV3KG58fHBqKShaYSgkdiksWmEoY3YpLFphKGRqKSl9LHBqLsm1cHJvdj1XZSh7dG9rZW46cGosZmFjdG9yeTpwai7JtWZhY30pO2NvbnN0IGJqPW5ldyBGYSgiQ29yZSBGZWF0dXJlIENvbmZpZyIpO2NsYXNzIHVqe311ai7JtW1vZD14byh7dHlwZTp1an0pLHVqLsm1aW5qPUdlKHtmYWN0b3J5OmZ1bmN0aW9uIHQobil7cmV0dXJuIG5ldyhufHx1ail9LHByb3ZpZGVyczpbe3Byb3ZpZGU6YmosZGVwczpbVlZdLHVzZUZhY3Rvcnk6ZnVuY3Rpb24gZmoodCl7cmV0dXJue2luaXRpYWxTdGF0ZTpPYmplY3QuYXNzaWduKE9iamVjdC5hc3NpZ24oe30sUkkpLHthY3RpdmVQbHVnaW46dC5nZXRQbHVnaW5JZCgpfHxudWxsfSl9fX1dLGltcG9ydHM6W1tmdy5mb3JGZWF0dXJlKFtwal0pLEl2LmZvckZlYXR1cmUoekksKGZ1bmN0aW9uIGhqKHQsbil7cmV0dXJuIFRJKHQsbil9KSxiaiksZ2pdXX0pLCgidW5kZWZpbmVkIj09dHlwZW9mIG5nSml0TW9kZXx8bmdKaXRNb2RlKSYmeW8odWose2ltcG9ydHM6W3V3LER2LGdqXX0pO2NsYXNzIF9qe31fai7JtW1vZD14byh7dHlwZTpfan0pLF9qLsm1aW5qPUdlKHtmYWN0b3J5OmZ1bmN0aW9uIHQobil7cmV0dXJuIG5ldyhufHxfail9LHByb3ZpZGVyczpbVlZdfSk7Y2xhc3MgQ2p7fUNqLsm1bW9kPXhvKHt0eXBlOkNqfSksQ2ouybVpbmo9R2Uoe2ZhY3Rvcnk6ZnVuY3Rpb24gdChuKXtyZXR1cm4gbmV3KG58fENqKX0saW1wb3J0czpbW1BPLF9qXV19KSwoInVuZGVmaW5lZCI9PXR5cGVvZiBuZ0ppdE1vZGV8fG5nSml0TW9kZSkmJnlvKENqLHtkZWNsYXJhdGlvbnM6W1dWLFVWXSxpbXBvcnRzOltQTyxfal0sZXhwb3J0czpbV1ZdfSk7Y2xhc3MgTWp7fU1qLsm1bW9kPXhvKHt0eXBlOk1qfSksTWouybVpbmo9R2Uoe2ZhY3Rvcnk6ZnVuY3Rpb24gdChuKXtyZXR1cm4gbmV3KG58fE1qKX0saW1wb3J0czpbW1BPXV19KSwoInVuZGVmaW5lZCI9PXR5cGVvZiBuZ0ppdE1vZGV8fG5nSml0TW9kZSkmJnlvKE1qLHtkZWNsYXJhdGlvbnM6W1lWLEdWXSxpbXBvcnRzOltQT10sZXhwb3J0czpbWVZdfSk7Y29uc3QgT2o9e2lkOnF6LG5hbWU6IkRlZmF1bHQgZXhwZXJpbWVudCIsc3RhcnRfdGltZTowfSxQaj1Vdih7ZXhwZXJpbWVudE1hcDp7W09qLmlkXTpPan19KTtjbGFzcyB4ant9eGouybVtb2Q9eG8oe3R5cGU6eGp9KSx4ai7JtWluaj1HZSh7ZmFjdG9yeTpmdW5jdGlvbiB0KG4pe3JldHVybiBuZXcobnx8eGopfSxpbXBvcnRzOltbSXYuZm9yRmVhdHVyZShyUiwoZnVuY3Rpb24geWoodCxuKXtyZXR1cm4gcWsoe2RhdGE6UGp9KSh0LG4pfSkpXV19KSwoInVuZGVmaW5lZCI9PXR5cGVvZiBuZ0ppdE1vZGV8fG5nSml0TW9kZSkmJnlvKHhqLHtpbXBvcnRzOltEdl19KTtjbGFzcyBrant9a2ouybVmYWM9ZnVuY3Rpb24gdChuKXtyZXR1cm4gbmV3KG58fGtqKX0sa2ouybVwcm92PVdlKHt0b2tlbjpraixmYWN0b3J5OmtqLsm1ZmFjfSk7Y29uc3Qgdmo9ImV4cGVyaW1lbnRhbFBsdWdpbiIsd2o9ImZhc3RDaGFydCIsU2o9InNjYWxhcnNCYXRjaFNpemUiLEVqPW5ldyBVUkxTZWFyY2hQYXJhbXMod2luZG93LmxvY2F0aW9uLnNlYXJjaCk7Y2xhc3MgQWogZXh0ZW5kcyBrantnZXRGZWF0dXJlcygpe2NvbnN0IHQ9dGhpcy5nZXRQYXJhbXMoKSxuPXt9O3JldHVybiB0Lmhhcyh2aikmJihuLmVuYWJsZWRFeHBlcmltZW50YWxQbHVnaW5zPXQuZ2V0QWxsKHZqKSksdC5oYXMoInRlbnNvcmJvYXJkQ29sYWIiKSYmKG4uaW5Db2xhYj0idHJ1ZSI9PT10LmdldCgidGVuc29yYm9hcmRDb2xhYiIpKSx0Lmhhcyh3aikmJihuLmVuYWJsZUdwdUNoYXJ0PSJ0cnVlIj09PXQuZ2V0KHdqKSksdC5oYXMoU2opJiYobi5zY2FsYXJzQmF0Y2hTaXplPU51bWJlcih0LmdldChTaikpKSxufWdldFBhcmFtcygpe3JldHVybiBFan19QWouybVmYWM9ZnVuY3Rpb24gdChuKXtyZXR1cm4gemoobnx8QWopfSxBai7JtXByb3Y9V2Uoe3Rva2VuOkFqLGZhY3Rvcnk6QWouybVmYWN9KTtjb25zdCB6aj10YyhBaik7Y2xhc3MgUmp7fVJqLsm1bW9kPXhvKHt0eXBlOlJqfSksUmouybVpbmo9R2Uoe2ZhY3Rvcnk6ZnVuY3Rpb24gdChuKXtyZXR1cm4gbmV3KG58fFJqKX0scHJvdmlkZXJzOlt7cHJvdmlkZTpraix1c2VDbGFzczpBan1dfSk7Y29uc3QgVGo9e2lzRmVhdHVyZUZsYWdzTG9hZGVkOiExLGRlZmF1bHRGbGFnczp7ZW5hYmxlZEV4cGVyaW1lbnRhbFBsdWdpbnM6W10saW5Db2xhYjohMSxlbmFibGVHcHVDaGFydDohMCxzY2FsYXJzQmF0Y2hTaXplOnZvaWQgMH0sZmxhZ092ZXJyaWRlczp7fX0sRGo9bmV3IEZhKCJbRmVhdHVyZSBGbGFnXSBTdG9yZSBDb25maWciKSxJaj1PaygiW0ZFQVRVUkUgRkxBR10gUGFydGlhbCBGZWF0dXJlIEZsYWdzIExvYWRlZCIse19hczoicHJvcHMiLF9wOnZvaWQgMH0pLE5qPVV2KFRqLGp2KElqLCgodCx7ZmVhdHVyZXM6bn0pPT5PYmplY3QuYXNzaWduKE9iamVjdC5hc3NpZ24oe30sdCkse2lzRmVhdHVyZUZsYWdzTG9hZGVkOiEwLGZsYWdPdmVycmlkZXM6T2JqZWN0LmFzc2lnbihPYmplY3QuYXNzaWduKHt9LHQuZmxhZ092ZXJyaWRlcyksbil9KSkpKSxGaj1PaygiW0ZFQVRVUkUgRkxBR10gRWZmZWN0cyBJbml0Iik7Y2xhc3MgTGp7Y29uc3RydWN0b3IodCxuKXt0aGlzLmFjdGlvbnMkPXQsdGhpcy5kYXRhU291cmNlPW4sdGhpcy5nZXRGZWF0dXJlRmxhZ3MkPVl2KCgoKT0+dGhpcy5hY3Rpb25zJC5waXBlKHR3KEZqKSxmdCgoKCk9Pntjb25zdCB0PXRoaXMuZGF0YVNvdXJjZS5nZXRGZWF0dXJlcygpO3JldHVybiBJaih7ZmVhdHVyZXM6dH0pfSkpKSkpfW5ncnhPbkluaXRFZmZlY3RzKCl7cmV0dXJuIEZqKCl9fUxqLsm1ZmFjPWZ1bmN0aW9uIHQobil7cmV0dXJuIG5ldyhufHxMaikoWmEoJHYpLFphKGtqKSl9LExqLsm1cHJvdj1XZSh7dG9rZW46TGosZmFjdG9yeTpMai7JtWZhY30pO2NsYXNzIEhqe31Iai7JtW1vZD14byh7dHlwZTpIan0pLEhqLsm1aW5qPUdlKHtmYWN0b3J5OmZ1bmN0aW9uIHQobil7cmV0dXJuIG5ldyhufHxIail9LHByb3ZpZGVyczpbe3Byb3ZpZGU6RGosdXNlRmFjdG9yeTpmdW5jdGlvbiBCaigpe3JldHVybntpbml0aWFsU3RhdGU6VGp9fX1dLGltcG9ydHM6W1tSaixJdi5mb3JGZWF0dXJlKHNSLChmdW5jdGlvbiBWaih0LG4pe3JldHVybiBOaih0LG4pfSksRGopLGZ3LmZvckZlYXR1cmUoW0xqXSldXX0pLCgidW5kZWZpbmVkIj09dHlwZW9mIG5nSml0TW9kZXx8bmdKaXRNb2RlKSYmeW8oSGose2ltcG9ydHM6W1JqLER2LHV3XX0pO2NsYXNzIGpqe31qai7JtW1vZD14byh7dHlwZTpqan0pLGpqLsm1aW5qPUdlKHtmYWN0b3J5OmZ1bmN0aW9uIHQobil7cmV0dXJuIG5ldyhufHxqail9LGltcG9ydHM6W1tQTyxPSCxQSCxvQSxtVixPQixWQix4Vl1dfSksKCJ1bmRlZmluZWQiPT10eXBlb2YgbmdKaXRNb2RlfHxuZ0ppdE1vZGUpJiZ5byhqaix7ZGVjbGFyYXRpb25zOltTVix3VixxVl0saW1wb3J0czpbUE8sT0gsUEgsb0EsbVYsT0IsVkIseFZdLGV4cG9ydHM6W1NWLHFWXX0pO2NsYXNzIFVqe31Vai7JtW1vZD14byh7dHlwZTpVan0pLFVqLsm1aW5qPUdlKHtmYWN0b3J5OmZ1bmN0aW9uIHQobil7cmV0dXJuIG5ldyhufHxVail9LHByb3ZpZGVyczpbe3Byb3ZpZGU6IndpbmRvdyIsdXNlVmFsdWU6d2luZG93fV0saW1wb3J0czpbW3ZCLFBPLG9BLE9CLFZCXV19KSwoInVuZGVmaW5lZCI9PXR5cGVvZiBuZ0ppdE1vZGV8fG5nSml0TW9kZSkmJnlvKFVqLHtkZWNsYXJhdGlvbnM6W3FCLGpCLFdCXSxpbXBvcnRzOlt2QixQTyxvQSxPQixWQl0sZXhwb3J0czpbcUJdfSk7Y2xhc3MgV2p7fVdqLsm1bW9kPXhvKHt0eXBlOldqfSksV2ouybVpbmo9R2Uoe2ZhY3Rvcnk6ZnVuY3Rpb24gdChuKXtyZXR1cm4gbmV3KG58fFdqKX0scHJvdmlkZXJzOltdLGltcG9ydHM6W1tvQSxWQixOTixBSSxVSCxQTyx1aixqaixVal1dfSksKCJ1bmRlZmluZWQiPT10eXBlb2YgbmdKaXRNb2RlfHxuZ0ppdE1vZGUpJiZ5byhXaix7ZGVjbGFyYXRpb25zOltFVixaSCxRSCxYQl0saW1wb3J0czpbb0EsVkIsTk4sQUksVUgsUE8sdWosamosVWpdLGV4cG9ydHM6W0VWLFFILFhCXX0pO2NsYXNzIEdqe2NvbnN0cnVjdG9yKHQsbil7Y29uc3QgZT10LmJ5cGFzc1NlY3VyaXR5VHJ1c3RSZXNvdXJjZVVybCgiLi9pY29uX2J1bmRsZS5zdmciKTtuLmFkZFN2Z0ljb25TZXQoZSl9fUdqLsm1bW9kPXhvKHt0eXBlOkdqfSksR2ouybVpbmo9R2Uoe2ZhY3Rvcnk6ZnVuY3Rpb24gdChuKXtyZXR1cm4gbmV3KG58fEdqKShaYShzUCksWmEoekIpKX0saW1wb3J0czpbW1ZCXV19KSwoInVuZGVmaW5lZCI9PXR5cGVvZiBuZ0ppdE1vZGV8fG5nSml0TW9kZSkmJnlvKEdqLHtpbXBvcnRzOltWQl19KTtjbGFzcyBZantjb25zdHJ1Y3Rvcih0KXt0aGlzLmh0dHA9dCx0aGlzLmh0dHBQYXRoUHJlZml4PSJkYXRhL3BsdWdpbi9kZWJ1Z2dlci12MiJ9ZmV0Y2hSdW5zKCl7cmV0dXJuIHRoaXMuaHR0cC5nZXQodGhpcy5odHRwUGF0aFByZWZpeCsiL3J1bnMiKX1mZXRjaEV4ZWN1dGlvbkRpZ2VzdHModCxuLGUpe3JldHVybiB0aGlzLmh0dHAuZ2V0KHRoaXMuaHR0cFBhdGhQcmVmaXgrIi9leGVjdXRpb24vZGlnZXN0cyIse3BhcmFtczp7cnVuOnQsYmVnaW46U3RyaW5nKG4pLGVuZDpTdHJpbmcoZSl9fSl9ZmV0Y2hFeGVjdXRpb25EYXRhKHQsbixlKXtyZXR1cm4gdGhpcy5odHRwLmdldCh0aGlzLmh0dHBQYXRoUHJlZml4KyIvZXhlY3V0aW9uL2RhdGEiLHtwYXJhbXM6e3J1bjp0LGJlZ2luOlN0cmluZyhuKSxlbmQ6U3RyaW5nKGUpfX0pfWZldGNoR3JhcGhFeGVjdXRpb25EaWdlc3RzKHQsbixlLGEpe2lmKHZvaWQgMCE9PWEpdGhyb3cgbmV3IEVycm9yKCJ0cmFjZV9pZCBpcyBub3QgaW1wbGVtZW50ZWQgZm9yIGZldGNoR3JhcGhFeGVjdXRpb25EaWdlc3RzKCkgeWV0Iik7cmV0dXJuIHRoaXMuaHR0cC5nZXQodGhpcy5odHRwUGF0aFByZWZpeCsiL2dyYXBoX2V4ZWN1dGlvbi9kaWdlc3RzIix7cGFyYW1zOntydW46dCxiZWdpbjpTdHJpbmcobiksZW5kOlN0cmluZyhlKX19KX1mZXRjaEdyYXBoRXhlY3V0aW9uRGF0YSh0LG4sZSxhKXtpZih2b2lkIDAhPT1hKXRocm93IG5ldyBFcnJvcigidHJhY2VfaWQgaXMgbm90IGltcGxlbWVudGVkIGZvciBmZXRjaEdyYXBoRXhlY3V0aW9uRGF0YSgpIHlldCIpO3JldHVybiB0aGlzLmh0dHAuZ2V0KHRoaXMuaHR0cFBhdGhQcmVmaXgrIi9ncmFwaF9leGVjdXRpb24vZGF0YSIse3BhcmFtczp7cnVuOnQsYmVnaW46U3RyaW5nKG4pLGVuZDpTdHJpbmcoZSl9fSl9ZmV0Y2hHcmFwaE9wSW5mbyh0LG4sZSl7cmV0dXJuIHRoaXMuaHR0cC5nZXQodGhpcy5odHRwUGF0aFByZWZpeCsiL2dyYXBocy9vcF9pbmZvIix7cGFyYW1zOntydW46dCxncmFwaF9pZDpuLG9wX25hbWU6ZX19KX1mZXRjaFNvdXJjZUZpbGVMaXN0KHQpe3JldHVybiB0aGlzLmh0dHAuZ2V0KHRoaXMuaHR0cFBhdGhQcmVmaXgrIi9zb3VyY2VfZmlsZXMvbGlzdCIse3BhcmFtczp7cnVuOnR9fSl9ZmV0Y2hTb3VyY2VGaWxlKHQsbil7cmV0dXJuIHRoaXMuaHR0cC5nZXQodGhpcy5odHRwUGF0aFByZWZpeCsiL3NvdXJjZV9maWxlcy9maWxlIix7cGFyYW1zOntydW46dCxpbmRleDpTdHJpbmcobil9fSl9ZmV0Y2hTdGFja0ZyYW1lcyh0LG4pe3JldHVybiB0aGlzLmh0dHAuZ2V0KHRoaXMuaHR0cFBhdGhQcmVmaXgrIi9zdGFja19mcmFtZXMvc3RhY2tfZnJhbWVzIix7cGFyYW1zOntydW46dCxzdGFja19mcmFtZV9pZHM6bi5qb2luKCIsIil9fSkucGlwZShmdCgodD0+KHtzdGFja19mcmFtZXM6dC5zdGFja19mcmFtZXMubWFwKCh0PT4oZnVuY3Rpb24gbih0KXtyZXR1cm57aG9zdF9uYW1lOnRbMF0sZmlsZV9wYXRoOnRbMV0sbGluZW5vOnRbMl0sZnVuY3Rpb25fbmFtZTp0WzNdfX0pKHQpKSl9KSkpKX1mZXRjaEFsZXJ0cyh0LG4sZSxhKXtjb25zdCBvPXtydW46dCxiZWdpbjpTdHJpbmcobiksZW5kOlN0cmluZyhlKX07cmV0dXJuIHZvaWQgMCE9PWEmJihvLmFsZXJ0X3R5cGU9YSksdGhpcy5odHRwLmdldCh0aGlzLmh0dHBQYXRoUHJlZml4KyIvYWxlcnRzIix7cGFyYW1zOm99KX19WWouybVmYWM9ZnVuY3Rpb24gdChuKXtyZXR1cm4gbmV3KG58fFlqKShaYShtVCkpfSxZai7JtXByb3Y9V2Uoe3Rva2VuOllqLGZhY3Rvcnk6WWouybVmYWN9KTtjbGFzcyBxant9cWouybVtb2Q9eG8oe3R5cGU6cWp9KSxxai7JtWluaj1HZSh7ZmFjdG9yeTpmdW5jdGlvbiB0KG4pe3JldHVybiBuZXcobnx8cWopfSxwcm92aWRlcnM6W1lqXSxpbXBvcnRzOltbU1RdXX0pLCgidW5kZWZpbmVkIj09dHlwZW9mIG5nSml0TW9kZXx8bmdKaXRNb2RlKSYmeW8ocWose2ltcG9ydHM6W1NUXX0pO2NsYXNzIFpqe31aai7JtWZhYz1mdW5jdGlvbiB0KG4pe3JldHVybiBuZXcobnx8WmopfSxaai7JtWNtcD1fbyh7dHlwZTpaaixzZWxlY3RvcnM6W1siaW5hY3RpdmUtY29tcG9uZW50Il1dLGRlY2xzOjU0LHZhcnM6MCxjb25zdHM6W1sxLCJjb250YWluZXIiXSxbMSwidGl0bGUiXSxbMSwiY29kZSJdLFsxLCJhcmciXSxbMSwiZXhoaWJpdHMtY29udGFpbmVyIl0sWzEsImV4aGliaXQiXSxbMSwic2NyZWVuc2hvdCJdLFsic3JjIiwiZGF0YTppbWFnZS9wbmc7YmFzZTY0LGlWQk9SdzBLR2dvQUFBQU5TVWhFVWdBQUFUWUFBQUUyQ0FZQUFBRHJ2TDZwQUFBb3lIcFVXSFJTWVhjZ2NISnZabWxzWlNCMGVYQmxJR1Y0YVdZQUFIamFyWnhwZGh5NWNvWC9ZeFZlQXVaaE9SZ0M1M2dIWHI2L2kySnJlbXFybisxV2k2U0t4VXdrRUhHSFFJRE8vdXMvci9zUC9odXRaWmRMNjNYVTZ2a3ZqenppNUl2dVAvK045ekg0L0Q2Ky8xTDkraXI4L0xyNzlvM0k1NlIzZnI3UjV1ZHptTHhldnYvQVgvY0k2K2ZYWGYvNlR1eGZGL3I2QmhmK2pFQjMxdGZueDBIeWV2eThIdkxYaFlaOXZxaWp0eCtIdXI0dXRML2UrSWJ5OVRkL0c5Ym5rLzd0Zm5xaE1VdW5jS01VbzZXUS9QdVlQeU5JbjcrVHYrMTlqTHd2OE5wTUtRWDMrZlIxTVNia3A4Zjc2N1AzUDA3UVQ1UDgxMWZ1MTluLzl0VXZreC9uMSt2cGw3bXNYM1BrNisrL0Vjb3ZyNmR2dDRrL2hjTzNFY1dmdjNGN3pQL3lPRjkvN3ozOVh2czgzY3lWR2ExZkVmVW0rNjhaMGhzWFU1N2VqMVgrTlA0V3ZtN3Z6K0JQOTlOdmx2ejQ3UmQvZGhnaHNpclhoUnhPbU9FR2U1OTMyQXd4UjR1Tnp6SHVtTjVyUGJVNDRrNWFwNncvNGNhV1JqcXBzMjQ3bW1QTmNvcmZ4aExlZmNlNzN3NmRPNS9BVzJQZ1lscnF2LzNqL3Fkdi9qdC8zTDFiVXhSOC96WlhqQ3NxcmhtR1ZrNGZlUmRMRU83WHVwVTN3WC85K1ZwKy8wUDhFS3FzWUhuVDNIbkE2ZGZuRXF1RTc3R1Yzam9uM2xmNC9Gbmo0TnI1dWdCVHhMMExnd21KRmZBMXBCSnE4QzNHRmdMejJGbWd5Y2hqeW5HeEFxR1VlQmhrekNuVjZGcnNVZmZtWjFwNDc0MGwxcWlYd1NZV29xUktiblZXYUxKWU9SZmlwK1ZPRE0yU1NpNmwxTkpLZDJXVVdWUE50ZFJhV3hYSXpaWmFicVhWMWxwdm84MmVldTZsMTk1Njc2UFBFVWNDQTh1b280MCt4cGd6dXNtTkp0ZWF2SC95eW9vcnJiektxcXV0dnNhYW0vRFplWmRkZDl0OWp6MVBQT2tBRTZlZWR2b1paMXB3QmxKWXRtTFZtblViTmkreGR0UE50OXg2MisxMzNQbHQxYjVXOVYvKy9CdXJGcjVXTGI2VjB2dmF0MVhqVmRmYVg1Y0lncE9pTldQRllnNnNlTk1LRU5CUmErWjd5RGxxNWJSbWZrU1Nva1FHV2JRMjdnU3RHRXVZTGNSeXc3ZTErNzV5LzJqZFhPbi9hTjNpbjFiT2FlbitQMWJPc1hUL3VtNi9XYlVqbnR0dnhUNVpxRG4xaWV5N1paeTQzSTV4MVRMbnRKbGFTMlh1RlhNTGFaZVFXejIxcm5xQms5dlBMdDNIeHJlNlo1WVBuTU1rSEw5eVBhSG9RcjJtZk9QeEUzaGZwZDAxMDJGcGs1NnlNNDY5VHI2NTMxVVlMWmNHLzg0OE83UmozTFNzdUZkWTV0bzBuaXVsZlhua2x2SStucVFzQndCZGZXOG1kZDhXb20rc1pPbzk1NTcrNG9Za0tMOWxualpqSnlENU9IVnptNld1V2M1Y1paZVRKeW52emZPNDJZYzZSbzhSclNHU1BubE1TMjNuY1FtMWZJL0N4YVVlVGkzd2Rkc2d3dHAzN2JwdXlNWGFZYkpydjFZQTd1WFRhY2JUNWREYTNLekRDbTB5ZjVVeE0zM2I1UWs5aEYxbjRhWjNTUlNFczI4ZnpXSTZWbWVJeVd4czQxcStyaDdXT0MwYVZ6RGl1Sy9HUEJFUXdTbUpDT24reEVSYVk5N00wRWJidmh6aXRuYXlvTEdFUE1Kc3UxcGlrUWZnTmN0bDZYc0kxdGZObGgxejNHOG9kcEtGd2NNaHV5NlA0bEVUUU9IdU00Mnk3QjdOU0NJT1Q3cDlYeVkvSE9YMlFpSzFmUlp6MUhZRU9YaVlma3JOK2FSbHUvaFZmUitSbUdSdHlUSTduWm1vaWNnNy91WnlEOEc5RHprNkVvTm9zYUdQYWd4NVpSS05jWVo4V3puN2lBdlA5YlBaS0dZa0p2Y05QTkQxblljK1BDUndQWTFReUhEdGF0WGM2clhDeEpkSmJaT1JNaGVWZExCK2EwdVJteElSaGNsazJPZTBib2N3N2l5RUorWnpWTUR5Z2YrZHhOMlllc3Jyci9YVHlOaTlXcG41OU0wMDNXT05CU1lWRXZkVjZCYXVIUFpLREROV0d4VllLYmU0V0VjU2NHdytFNkVreHNuSjBCTTl0QktZdDZBYlZ6MU9HZ3VnSWZmdkhFVDZKRm9MNHdRY3ptQ3lLOHpXU0tNYWh3Zkh5R0dHa3FZR0VOWUJUbk9Eak10Y1p4RlkyYllWY0FPUUkySWh0N3VOcFNSRjlrUkNkQ1lZUE9Uckd5QS9WcmN1WW1IY1hhK0ZuUmx5T1luWnRWRFMzandPb2RwdFNmQWt3VTh5Tnk2WjFYakFLYUJZdVord2hiVWtGQWhhQS9SSkZ2bytRUVZiQXpDdWJTY0ZveWRrSnBOL2JpSG1ISUhPdHd1aHRuZE9lMG1Fd1FmTEc4aFIwd2dsS3hSSjIySnhFMUNEZk40VGVyZGJ3RURHeVBWV2REc3RBR08yQzhMYjZDL21SZ1BMbUpoNGdLcld6eVNtZ2Y0RkZsZndqNWNKVUZEa0trd09rWFBuY1kxWkpnS1BFVmFnRzZuUW9KU0lka3N4ZDhWUU8xbXkrUzRrbVMyRnhCWUVWTll1bHlRa1k1RlEvaUVNYjZjUWp1T3NreEppbEZnRE1venc4S1lCR1ZFNlJoaXgxaEk5dDI5a1h5ZEtZanl6TGxZaEkydVl5cEdDZ2VNMUFYZmVHeUEwODlPa3FKdE1lbWYwaTF3SE1GNitmMjRrSk1oRmhFWFFpamdDSGJFTzVCdjh1Qy81SW1JbEJnT01DbW9DZzJQN1RhaUIzQUVBQlZ0Um1KTUZKaVN6cUdIQUthN3VBVU9QQnBwMEJtU1E0Z1VOSVJOZllQMUZWTnpjL0Q0QWQwR2VvbzByVXUwQ1lSQUJUeXFXdTJrNFVCVHR0WGhXSXdSTnJBc3hEakozcmQxWDdjSUtoV3VUS1NBU2VTQm1IMGlZeXRXTnNBYWhocm1qbFNXVldDTHoyekpFT3NZOUZRNnJ3dmJlYlY4aWtFdWtzbGx5TE5DTnN6YUE2S1lKM3kyTEFjeTJ1UmcweVpoV211aVV4aFVFQUxWWklsUVBjTVRWR3pSUHN2TG9teENjRnhBYXJXUkN3dGExQ0VtNlRQZ1F1eGkvamE2ditBQWVHc1FpcXcxOEl0cFlSMEplT0N3V0FVbExZdXIyS3NNSTBvNG5JTlhONVRTWStoeFo5WFA1RnBkY0NsZWdzRVBIWUdKaDRVajJVbFlnL05ybEduTXNKbU1qVkxoWllFWFRsbUlERlZtV3hKU2pvekFPeEJjcTJZUGxVVTQzTjVIVS9ZYUZ2Ly9zOUVVR3Rrc21hcm9BZE84TEJaRUVaeUlsZGtKUTlUQnJSUjhjVXJiSVhvTVBNazNNU2dPelpvRkY3QklYRnpGWUdxTlpyQng2eUxOZWdFc2luL3FHdUlLdWpoelBIVG15UkhDRUJybG1FalI4ZTlUbGtPZG5sYXRaUGF1bnd3ZmpuZHc4STFvV2RBYjdveU1rNDlCZXFYSFBHTWxsRW1PVVJzQU1ORXczNXFoQW53QnlPY2c4a0RPVG0ydjRZd1VoZ0tISUJLVUZwQ0RQQy9xeHRQNTZVR1JzWUw4RkNROGdMVG1JbnA4eEtaQXVkTUNJOHNPWGZBT29BTGs4RGcrVnpqYVdwMHBIbkFlUjZDbG01YVRaaTVYVEY5bS96MTdFSjFtTWNvbDVBeDFNSmVBT3djcTk0QjJSUFFnSlFoalVIdWdWcEJ5TWRBVzRBR1dVT0hQdGpnSTgvL0t5WG0zS0F3eHcyUU5RUWhxUU44RlNYL25vRWJHVzVXQTkwYTdNclhjTFcyVm9TaUl5Q2VrdnJIK1R4S29FemcxaTEwWlcyRHBHOGd6WWQzZDRJMjhtZ1hVaGNxUmRqME5paVhlUUJtUStTNW9CcTFTUUNQUEZ2TUlFekc1Rm9yU1IrSWhHNUJ3aU95dG1FN0NBcko4N09UaUlOWVJseEs5ejM1bVk5N29XSWdmb1prYWdNUzdNNElBSmNDNGRucG1CY291TDZZZEh0dGVrdUNCc3F1ZUFKT1EycXlueERIc3N6QURZVEhEQkJ3aG5IcFV2Q0ljTm1QWUo4MkVJZ2hJelNOd3ZoNjIvcUZzd2hhZVRrQ0kwWUN4U0hXeVgrcjlEVG1LQlRqMGI4RUE0cys0c0N4K2hjNStSYVh2RElvaGhZN3ExNUh4ajRKcEtZV2FHeVVFVXlEcXNSa3gxNjUzRnVNSVd4WFZGekVHWkNJMlRKWGhkUWh6QVc0Q3B1QUh5WlJSb05BWUwvUmdQMjVFUmdYa284R2ZlaW0rVVEwZkFMY0tTak9DQlFiTHQ5bjdnYXZDVHNmRGNualMxOUFaVmlIbk1Gb01mOHhSQkdxZzVHQkRmZytsNncwMUp3bTcwdTF0Z1dGV2dYQ1J6SnYyUk5RMkdKOVluaUxtdzUwUnJKa2lNeVFWcDBvSktrVFFxc3MwbkpvWW0zQlVGL0VDOTZNWUVTVU5HODB6eHpSREFqR3RvT0x1cWRWK0UyRWxkNm9INUtLclRsZkQxMllWZlh2ajFNODhCa1pzbkNsanl4bUl5VUZLM3l0b05MUThxc1UrRTFzQjRJRmcydWg4K1JCSWhEOGtlUkRodndTMHVGQVQyVSthcGlxOE5vMWdEVmdYcnBlVURNMkZJYzBDZXg5QzBwK1BCTDZJUlRhNE0rZDJyS3lkRXlueGdqUjBDYmtFYU1BZFZ5d3VKckx4ZHM0N3N4WHppVWdsbUZuNGx3Qms3QWRIamFKc1BiUzJ1d0dBTnhvQmUwYUdRRjdCR0hIa1VvaWN4VHdmUlZFRUJBSW9pdjRwRmlmRHRLdzRuNFMwR0U5d0pkVmdSYkR0bnM4QjRpYVRLUUhNWEpZSVc2dklzVEs3aGl1RENuUUZKSmd5OWg3Y0dTMEc1eEZ2SnZxYUVoM0ltU2JkSW1hcVVhTTF4MzRyY1FQZmlJOUNIdlVhRmp3M21zaEtBZ3hoSDVzSE9BRGswRUZQQXFSNVZoZGZYMHZKeFpnZU1FaTZicVNNZkVTOWR3N0ViNUNNbFI3a2Q3RFBJVjdJQkc3dEVDWmZ3R2cwRkhBY1RmZ2pBN2JBK3Q2Sk1JNHh0aytuRVRseS9JSTJEbDAxWk1yMFU0blVEblNqOVBVSDlLamtQOVZ3RUppNWhnRytPdDZBWUt2aUJiQ0RNTXRRbWRzemt1eW90ZCtFdnNYNVFNSW1QNmlYNFdaS085UWVsTzJBWjhUdTVPR3c1VUF5aCtRWlJqZ3VYYmlCTmRFbCtHdzZLQzQxRWttOWlPWkE4MWE5UjBaeTRMaWhBaFcxV0ZvSWtzUnZFK3lpMXdWa3pOMlJqQnQrd3RnU1NLZ3U2RzNHeUFlTzdoQ2xIVm9oYm9ZYWliSkJOUndBMjVvN2NSbGVTdTFjMmhjVmxaZ0ZnMXAweG1PUzJuWndOYWdHSVdCWFFFaVdGWTY3Z3NETFpUVEM4TlZWQnlIOXVMV0YzeUh3TWZWUmQxMGZJbERCREJhYVM1bEJRL2U3bXpqUTJ3TFpDMTc4WjJ6LytydnNmdm8zZ0haaTN5ZFJVS0xzMlNSQ01qT0ZFdkNwRHlNazRUd0R6ZW5UbzRIdDV0QlY1TnVnYVROOThaNG0yOFlmcENXSnNmODhrZlNqSTZnVCtJa1RDU0lBeXVyYnNCdGc1ZURObC9HVnR3V3ExRFpWMWdnK2RqaEN6d3p5cE5vTjBRYjUrZ0xYVXZ2UVYyZ1gyUlZrdGVVeUVWcG1xUW52Qko4K0dpY2QrNFR3YnVuUVQyd0Q1Qld0eVJBOE5WQnZQUXlEakk5QWFyOGFBUldBc2p0eHZDRVY0RUcvanNSRkhRa1FDRStlaDBWL0JLa2xEWEJYUU1PRlhVVnBnRm1TbllrWnZxbTc4YmtTQWRFU25JNlRKeGJoTlBuTGpwZzJzQkpjYk1tZzlNMDlpTnp5MjdjQkZIWFpVOGdSOXgzU3Jhc0VpQmxid3hTWDRKVzBYa0Nua2VJbUl4YkxGSCtURTVDbVpLV1ZGR3NjamozRXU0QWdESVlMUjJDVU9wQS9LREsyTFl1WTlleXF1cXkzNDRGNUxCOE9sUzd5UGNXTEk3aTFFZGdHMWZsVnJPS21Hak84cFFXbXYybmlJTnhneDQ3VFFRd3Z6WFB3d0g2SlFpb3M0M0IrNCtEN2dCUEJJNlhOUnJvQ0lHZktvcVJJY2hFZzRpUUJoL1lKbG5QVEtFQmxTQ0hZREtoeGtrb1RHajNoT3dXeVJTd2d6M204NVNCa2ZDRkFlaFZzMnBvbVhxa3o5UUVBMStBSUtCZnpOWGNnY2pUa2hNcThLQ240a2toaEFScFhyRFBDOHlCeTh4QUZNWkJiT1pKY3FmNGR3dzVpaEN0RWhKQzN4Q1FaUFJvdmI1MmFBT3ZmbjdmQkswVmNCalZGd1BKMm5JdzVzVjdRWERFSkFFRUVvdmdoeTRtbU5NYkpTNGFyWVNycXEvbnNtUzRYNWd4OExlbjZBSDd0TUJXYmdzZmRXOVJQa2hza05rTHc1WXRjQkpjeTJhcXdOVDBHdUhkWURwVFZ4bXN3ZkFGUUIrb2t4SVFMdzQ3VjI4Sk0xeERHZWNGRjNHZXJPeWNXQUJPTXVpR2dFRUtwcXlKbVFhd05LNlVPS0dtSWpFcmFQZUU5R3ZiaENYVGwzTXBKMU5JbmZpb2hBMnkxa1BLNFIrWUlNNDUxUVR1WGZDSE9WRVpKa1BKUFVXZElMTUdSQnJIeXI3QVY2SFU2NHJUcFpLbXd2VkhNU2JIZXhlZ3ViblVPdlNPbkV4ekVRWXl0NjhaTEhDU0FMaVcrQ0JBVk1qc1labnM2V2pidklBVU1XY0dNeXF3a0hrUWdlRWlxcXZmQ293UGlSZWNKVGRlVWJnZ0xpT29RSXlTM1RWRjNRczdBaXZqT2ZzOS9Tb20yNEMwc2FJWWVMb216blZVSEhFRGt6NXF4NitleDVBeGVxUS9oWmdaRnd0TmtoK2NnNlRHTnRUU1ZmOE55L0VoMm9nK2hEUGIrcUp2WW5RTXZHY3JFRVE3VjRMeWU5dGh1NGJweER3QTJnVlZCQlhwVm5Ndi9qSjFYckI4MkRaeUZJWGkvQmVCTHVCVFdIWXEvSWVpUVVvd0w4eGRqbnFKeUFkQXRGK1FGUXNrWmpTQ1ZEclVpM2hIS3pESUZnc2p6Q284cndrejNqcXRUSHVGM0RpV09FOGF4WUh1eW9TSUpVVkhYNTdyVkFRNjM5VUIxc1RPdm9TRGpHQms3KzY0dk50VTgwZ0kySEd1aEF4TnJWWnNFSjBtUE1JQkdLQ0d4eXBmZGdMUzdQdFVPZHFnaHB4OFpqb1ZSM04yVGhySzVDWStPQkNMbzF2eS8xUlNFeURja1crRGZqQis5SWpmakFsUzlCdWw0RW5ieGk1U0dZUXhlRzk3VytxQ3lXOXZhRWtyKzkrRTgvL2UxSEJidnU2NmRiVEtvK0JGUnhyZHR2WkJCOHB2SU1NWWs2UkdhR3ErMmRGanNxVG9WbnJJK3NYUmZWMTRpRkdCRnpxdDBlNmROS2x0aldyb0JDOEVyTkdRQnp1RHMwYjNEMDFnNUVPcFhwcXFyTjRMUXJWM2ZpQ29LaW8zdWdSa2dVMFRvQWM5SXJSQkZac2l6UGd6TVc4eFRWS3JBMmtJNThIc2E2RTVrV3Iwc0pzQWhycUJvQ3Ywa2hKSFNXYW9tL0cxbDRTdlBvVmNVSldYdUZKZ0VZR2ZCVXhNWmZraCtmbThZejBvaDRMQWhjb2tKSlBXbVRFUEN6MTI2cWFvM1pneWFFUUJ5d3pDSUVuZmEydDBwUjhBeWFQTDNTa1hReWNycVhteUtZbHlPd3dwZm9ZNzVHT2FKQW1ERVl2Z0ZkTHlTdXc5NUZXRUZWdGd5S3hhekJMUFQ4bG1iRTZTSHJTMGhlVlhTZ0hZbWVzUVlySWFqSjV2RllWc2JML1k2RVlacDR4dWFLZVJFbWFDWkJueWw4OEdha1l6RHVjODZJOFBDQVhCR1ZibmhtS2lnOXF4eXpuQm1BUEJIanFGa1Rtc0I1VnNpSjF5UXlaY1poT1NnVEVJQVd5SFFWZnhvd3drd0RXRUEwc3U0bXdJWFVUSFBDbW9DdHFyUmtrcmdLTERJNUdXQVR4c3RQaHFPWFZaQkM3VGlzUVlCK042a0VaUnRMS2hSRVJxTy9Gb01sZ1FFOG5wWHd3L3N4TmlnUTlxNHF5dXdsbUVZbVpubVJIc2w5TWtkQ1MrVVZ4TDMyRXU2K01DTDNiQ1FISVFqMVFhWDRoQTV1cEpMeFVFSGlGNGF1ekswMjZneEZ6aktEZzdXY2pETW40N1JaaHRzayt2RjNDUDJMNWdDcDRaMmxuUWswSGlGZk1URGNxNG9xWGNaMHF1d252UUk5Vk5nWGxrbGh5NkZjWkRPRyt3NmJweUQvc0xwSG13L1l5Q0NyMjdZMitIWlAreUxZSTBNSHVDZGloQXRnRXduWkNWNVd4QWhCS0tPWENwRmFZb0ZpWDNLUWl1US9PWUtlWlFXUVBPcEFXTng4NVl2YjN1bzVXTklUZzBGNm1aSXdpcW8xaFFnSlN4bU50MEpXRnRFdmNoVFdrclB5aTF3RDFIZThlbU5FUm5WdDIxN3BxNGtNWmg0WUVyb2ZoQnlsOTZaS1ZkY21NaElJNVEwcUk1ejh3V0E0ZVY2MEM3T1o0TW9yelVUS3pqdUp5NTJhc09ZRTdSd2lSclRGRkFMRUtKbGVWVXlPamNXZlJDWk1TdzZTTVFQZ0RGKzdjbUhQWDNjYy92elovYzAzWG1IU0U1dy9TTjJ2Y3VVdnI2cEhqQ2R5cWt5a2xMQ1djMnpzWGNLR0k3bmdRcEFEYTNFYUdOcVRnbEpJQXAvQXNRTk5VbVBUdHIreEZqdys4dmdRRlIxUWdOR3k3R1lDUWxSZ3kwd1NycCs4Z2VJSUREeXNvVHAyMkU4Y1cwZmpzYzRORUc1NGZUZmxXclZuSmpkVnREdGREN0pMR2FpRXZkNnlqSnNCN0ppaHNIYnZHZE9qS2hta3N5Q1RLTlUrSEhTdjRtUXd3R20rVFgreXRXRWpOaG1Kb29GeDFnczFmRkdUN3VIbmtOZkp3M0tkSUdWY21EMHVoTWJjSWloTWlCbldhOG1LU3FXTnl1T0JtVmZLSEIyRE5zWlR0eldJa1JyWDFQNEt1S3hTTGZlT3JrM3lHV21PMzFQeGtmalJOaHpENXo0Qkx3cG1JenUxVmNmUEFIMnFEUU5IUU5sUnV3eFFjM0tKSHFnRmNlR2xxdDJVM2hsd1dERkJmSGhHMUlnSzl5U2p0T3diQWdtT2gyTTJVTHNrTEZRSmlGL0ZPYmwybVZUVUlZemJ4dUV5VExOWHBxUEZWSkFQU3U1VzRPQmxxcEtSRmRyU2FkcEpDVWM0Z2lpNzNTbkFNTUNHeHNHTzUxSzg0YW9YRDhmejUzYXM3UEhJU0Z4WVZGQlNGV2hGbmh0R3haQm1NZ1c4ZCtpSmdVMEdCNEhhdXJGZkFBUE1wbklmUXMyUGlYc2FVQWJVckZLQXFjaFVieGwzZWhVM1ZBdzFkTHNqRU10WlNFVWlKK01TeHpiOE9qUFVDSVBKZEdPd3lwK0tsWHgyZjNyRCs1emJVMEUvRVZ6OCtWWDNlVG1yQ3dFMUxNd0hTR1MzZVZrODhzYzg0L01iRWRyMGRMNW9pZUFlaUpuYlNacFRtU0JBaUh5cFEvVW1WbzJsZWMwT3NvbWdjdVN4UVM0aXZpZ1VIU3EvQmsvVVJ1SVpBOENpd1FHbWJaRUloVm81b2x5dXQwbHNFQkJYU0pUV3lXMHJ0OFFjVGZTemJhZlMxbEZUeVdpVmNGUlJDVzdXUHVrY1FsR1lrclFQNUV3STZQa0JBSWoxNEdtR2hqeEFTRU91Q3pFS3dqNWZqUXJLaFFraTZrMGJoVHcvZEE2cFFKdkVnOTVUQ1Q2VU5NK0xXVXJ5SEtqL2hoUW5UUnpBak9KQ1pHUVlhNm1LZkRHSkFCTjZmV3RQRWZPOGt1MkNMa0U5TU9jZ1E1QnBTVlBrV0RFTHJZNnR6UU95NUx5WjU1SDl2NC9XbjgvdS80clduK2pRaFY2QUlONWVpQkQ3djRtbURmZWVFYkJ2MkJZK2EvRGFHcG96djY0ZWRLNTMwaGp3TjRZbUxNZ1dhWXBya08vcnVKVlUrdXpwWksrZXlibThkdW15OWhDS1pEbzZuaWtoNVRyNndxbkpETmdadUJUMVRYalY3R0FYZFdBWXd2dW8xWURBQXluNHVZbG5EYjFMM2xRVllWR0MvYUliTnhZQzJMUFgrWUF4UktQYVJlMGxoTGxLdjlNRFJoNlUyRVc5VW9BQXh1eXFrMkdzMGh1Mlo5WlNGcE5SMFVjc09KTVdzV1RBd2xqTVFGTjdCUkorcVdta3k2V2lBZmpPUGdUNHhBVm0rQm9JeG9iaDQ5Q1RDUHZ1d0JjR3B4M3FITHN1THEvWjFRZ0ptdFhOY3NGYURYdkthbkFYVlJYVTB6bTFTZEJVNXNYVEkwbVN3ektqaDAvdFhiMDZuVkRFdHZMb1VNWlJGWWhIcjFlbHZmREs0dkJ2VUwrTmpPd1psOGxFQTZwTHhtSEk3OXUyZXdWeCtiSmpyM3F2SFd2RUlhbEw4aUI5RzFCdnRjYnBWUWRmb0FKK0FmcjdDa0Qzdnc3bG55TllZdlEzSWZ4THhlMkhFUDRSNElnVE1MSWhYbXRSaTE2TytHUDhlQ3lMOWNaS1Y1UXZENDlWcTdhckhEaUMwQlBCWHFVY25FQkNBN0lBMEZtTVdBaHRsM09oczJ0bFBWdkhmS3BYRWdFYXVqb3NKcm9ZMHVFMlBWZVZabUJORUFqRVMwdVhaQVdYQ2hzcDVSclVNdHp4OUFvZG1DaE9ST1lHYUk4d1Y5eFZRR0IrSkRlcC9KaXZqRmhxVE1DRGZSekgzUklXTXoyQ0hLZ1lUUVc4aFRoT0ZRVzBzR1RvRHoreHlsME5mYUJjVWsrYi9pNFFEbjdVWmtkaE5SSFNZemdWR0Rmeit2YmEwVWZoVTZYRURCYis3OXB6ajNIWHJkUlZxVmNEa0xTZTRoNmlHckV3d0lEQVpNUFBVSHA3WlNwOFJZalNYZ0psOGxON250eWxvNUgwczRDOHVxbndmSmdXRmF0dHFQMk5WR3BnZG42ZFl2QXl3a3I5a3RxM1N5Sm5pQU9Sb0oyREE5MWpRZkVUSktSeVFyWTlZNzE0WGxENFlwM2RaTFZtdW42cGxRMmxzeFR6MVlNRzZyVWlzQzdTWHAxN3ZxdXZpMUVBYVVubVVBb0d4YzZUcy9MWmVRekszbFBjYnpxM0VDZm1GTy9lRmsvelF3cjhLY0xkUDAyQlAyV0ErNjY1SnpGQWtCYjFkQmdxR1hhQ3R2ZEQ5TFl3SE5BaUdNZUhvdWJWWDZEZC9RdTJBM1NZWmdUMHh1Z0ZtZTBBNmswWUwycm5IaVNESDhwU0dHc24vVldkbVdXbk1pZ3NnRGd2U2QyQ1c1b1dUUXhvRXZwRkVCZEdaT0g1MzJRRU1vRGZWSG9sSnF3a05WV24xWWREemtFcEV2LzFxcHplRVlKamFkZGhFcG5WdDZGT3kycTNSSVhjQVJtbjlvNkkyeUVzWjl5djU4Z1ZiUS9rR2xscGhuWXpTWktsdTVjaEdncjNLNFhuQVJ6NUJtRzZNdGsyY05Zd2lYWlF5QWk4T0NEZ3VBcEVQdFJPY05ET2ZUTFJST0JjK0xySURYaUNKSDBhZEhMZ3pqQ1phckMvZzhyMVhCZ3NaZ3hqUG01bjlmaU5PekxlRDhIRGk2OWZTNVZFeUdFOHo0cDFxUW5CMzlYd2VSUExJUUhQOGhYYjBKMTZOUndqVi9GdG1rcHBpSDFTS2wzMWNRSHZ4eWNtekFoNEZXYmc0bnlueWc3RStWQmhiRFFQd2krR2I4QUlwa2ZvcmpJRDZRMVdvYXlERGhQY1h0UkFoc0kyNld2dHA1ZFpBMDRWRmNlanFYOXBrQ3BxMDU3TlpkYnU5bGZ4dnIzSkRLc1hpSndwYWdHTTJpVkkya0pLNW9XUWg0ZjA4QTVvQmFXcENXUEM2QUNucXdoVFZvL3BobU1Cd1NVZHBkTTFVVHZjWGZYNkJvWXZoQ1NlQW9TZWMzejIzSHRWblhSMXRDcHI0bkQwbURVY0VFYTc0dFhCMWpUN3Q0MzRmL3paL2MwMy9uRUhRUGNSVlJFV1RLdWU4Q0hMa3JTQjFaQkJWYVVpZ0swQUtPUjQrb1doZ0RyZDhMRko3RXhmcUFOWm8yL3FjQW5DeXF1aUZyMmFraEhLUkhMeWFpbFI0MnBHamVGYU1IZG9LQndkWWw0ZEhPRkQ3VGd0Sis5Y0IrSGl0Vm1POThSMnQvcXFWTWdQTld6TzlieDhYZ2dSd2NMeE9EYkFDcDkva0NBNGNpSTU0aUN6Zi80WWVKcnFBdDdJNGw3VTF4WXlENnYrWDNnTGd0S21xVFFMa1NvMkpaRUo4UzY2emt3WjVsaW5uMWo4cmtNNE5ZbFFoN1lsVmluaSs1cTM2cDJLZnZTYVFmYmhxS3JZeUo1ZHkyY1hJZGZrdUVtQlVQdkNlTXZLWFczWXNCTFlmdVk5SUhhT091eWdBalhMUVpseG4wL0hGM0NHY2lkLzhUelp1Mnp3NUZveUorcmdYYzE0WjFRNXdSNnA2RmpLVklzaGRwODFTRExDWktHRnZYYnpReTF6K0V1Zm5IeWtSL2g5K3I5UldsbU44aWdPaTFQWlJxWjNiYXRVQmM0ZUxLaTZMMEUxa2tBZE85QVpDQnUzazlLTnpXdDdxNmszbDh4Z210V2xIZFF1aHVPNEFXUzhJbUlzanFtK0RrSGtyRnVnVEJlYTB6ZWJ6dmZYTFhLMGN1b05xLzlXWW56LzdQNXZpZkU5TDl5M3hBajRST1EvRGltRG1BaVRFVjRESWw2M3YrUkltREg1WmRPUk1lU1pybmVlMTlNL25JREFOcjREYVFMOXExdU1EQXRMNHFsK2RoamVQOFJyQm5JMlhDQ3oxaVFMcHRwTWtDREVmbk5lTGVzSXlzSnRPOXgyY1l4Uk85SE1jbzNxdGNjcTQzNGFjWVBnWW1JRFpCUUdMTUZkV1NodHYrQ0VBVFo3SGVuWUdwQmQ1MTlBYVJSOEt3akRZUXVGQWZibWdsR0c3NU8wcTA0OHFPOXlxWFlHR3Vzd3lYUlh4MFJJdTZCR1dmamJBcUY4Y01RV2tBVHE0OWV1ZG9aQnNUUGNQaHZ1TkpQVUdWKzd0V0hwcHpiK0hlN0U5NW5nT1NRRG8yd3I5NzUwS0lYb1FkZGxGVVJpYndmazNXQnBxcXFXb1Vrd01CTll6VUdsaU5JY3p3QnJBTXVnTXpsTnRBTFM2cEQxS3VZYTFOSktVSEo1Yk5aTjRENUtOdXl0WHNRYk1wT2cweCtZbW1pZWFiN3Z1Q1QycFRJejRHTUptRzNFNHRYMlBNdDVYdTh6Q1NpTmhzcjBPZ1QwTm52RkVVZ0E1c2hVcEIzcTBvd2E1NnZpcXZWbEY1M0NQRnNOU2lUTStuREhVQ0VyVkpSbkp3cXpDdXIrMVYyY0hldG9nLzE2Q1pva210cXIwaXovcUl6ei9iUDdUWDNuZDlXZEgxOTdwUjNNSmRhdTdwWFJhWUFKeTcrQlhpa1ZNbWZzakFpMVFmd1VzbVpvbjlsT1FIR29LRmkwcDNMUVlIVjRTZTNTMUJhcm5YZnN0QXZxd2tmL3FscXBYaS9rSWRaYXh1WU1zU2JYQng1bTBlR0tpVUFDSmtrVVFGejFRM0JPTFpPcS9qZ1NwV24vSE5xV0pBdmlBTFJVbFprWWFtUUYvZFdvUkZqaFBHVFIxTGFoUmxrTkhUV0Zaamp6SEFjVGxZNUdyVmpwUnBDQ20rUjRtN2U5MHc3Vkp4ekc5OUVrWlE5c0ZZL0NwTlNtUFdsWkJMZGhrS3J4b1AzOThBZGlxbm9XSzd5WllQSGFud3NKVk9ISGRCZjFJdllnWnd1blFhMkQvSzFIVUp2VTI1dkdheWwvYmJ4RFhiaDdhWWNReUZpWWtLRjJPZ0ZXclhKalRDTmNxNjNScXRhblR2UVdad3c4b3FEbTYrRFI5Z1N1NFNKOEhtVGhvZFlOUVdZb1BkakdDWllMQ0lKQW9ha3lUU1pLbTNxbmJVMFVkbVpBNnRBTjZqNWcrUkVRR1JOSEhNVStJQ3BtVDczdGlHcXp0cU8yTjlvcFVYS1BVSWFlZFg0dHFXVzlkWjlmNHgzcUtlcmZDWnlRNzBGZ0NDM1JtRnhDeDRWVy81eXAxbEZ3U1Voc0kvYldTU1lqbnRYcGkreWRiK1dtOW02VXpGV1ZWUndMTWhuUWp4ay9nSEpYR3l5cE91L0NIRUpJa3UvZGFZOExUWUdzMW9iSzdDM3F6SnR3ajF6Z3ZlMGxLNTRuZ1FVNm1ZY1c2dGxYblN3ZFBJZk9rTEZzSHU0L0Z6T29HckpPd09tSVUxRUw2NmhLNDZQakJkdFFRSFVQMU0zU3h1THJuK1NCbm9FSWtsVEFpc3NxSGswMVBZTVcwdU9NQ1FPcHBuVWdub2pCWUNObW9UM2VwZlhzQzdCY0c1Vm16Qjc0Q0FDR0Zwd0twZHlmaHdyYTJsSEpDOEdFNmxWanY0NVlScEQxblJscDBrb3czSXJxUWR3cU1QU2tZelh2b0k1TEJEcldnMkFHakRUUUZkV3NpWXdqdTNsc3hXc2lLRkYraGJRaGp6K3RuQmVWM2xFUTI3VHBoUlZkcWF0QndWVG9najJLOWlCMStvL2swNm15cmhhY1B4dzZlSi9kcnkvTTlMdWQyL0UzcjdPZXFKdUdsM09laHdHc1ZJWll0aEljcWJOaHBZeWtVd0ZFWEs1cUdBeXFkTUUzcGlOanFGQjd1L05xTURiWkJ2eGE4Tk5EMTd2TC9jazZNamoxT0VpQmJqVm9TK3NPblk5VXBJV0c2RDFGaUtCK1ZBbEV3cHAvZEtkOEpXWWovT0VKTGtsVG5lbkQwbGlvUjNaSnZXMUJGcStUL3dGS1U2cGxqQmp5QkJ0RTdzdnZ1bFdJYS9ScG04QU5ZVUZXdmdYZEVwa1o4RUM4SWdrbTRwVU1XOEd2cmpPTVlhc3JDQURRMFNBQUQzMkViaHpLcGw1UVFLQW5qMDBFR0dNeDlWdXk2T3Ixd0hsbEhXdTl3TjZWS3U5bElLWHFhK1VOd0pSalBkU1RyejZucmEwUzFVRUtRT1Y1WjUvb1JCRFFncDdneU5vaU9XV2xwb1MycFdoYkpZc09RanU4YnFoZGxuT2hYOHRXUjdqc3ZGdzdzNnp6NklTMkNGdzFBZWd2cVdhVFg2ZFJ3QktpME9mcmlZaFp2ZmxKaGpBeHYxcTJPc0xNVjgzbXI5T0NwQVFtY3RvZEpVVGViUjFuSkttNmpuUXd6NkJXeXViVWRyaW5BcWRtZ0hyeCtKTWxCWnNnVi9XQTRMcTNmUHhsRkNTY2VvSjdmM1FFWi9LZHFqT1hJenBDVTZrNm5ncHJhalNLa24yV2Rmb0wycGl2c3E1TmcyWmJBZ3ozUEpwa3ErcUZFYVFsNmRVUFNVNHY5VWxqL09QVjRReEYvbFRmb2piODBIdUd4b01UWm9TcEoyK3BZSGw4aldGTFRXYmM4YlVFT2ZKYkoxNkFFU09KbDFwSWNBWjNFMFhhMXpxZlFqNUNPd2VVS2dZcE05Y1hzNHhlclZERFZlRWVnbkxJNmxkcTBqR2Y1RitQT2dDS3dQQ0FUWHp0MThoS0tPa2RTbjBIVU9NZUNSZmVXTkt3SlpGTHhmZlB0SEdJVWU3MEMwT0hIZ0tGck9PSE9vWHhyaW0yQUxOUk9HcjNVUmRNZm0zN09nQlVNNGJQZlc3WnNEczZqRHQxSXJQS1BvMUlNbkQ1dzRyc3FlMHJJcDI1YjZvMnZPTy8rTTJyZmpFR2l2U0ErNitPaGJHc0N5dHdHZlJnRFVHSkZnT0dMUmw4QUhleTNNanR3OCtsRjFzNmp3bHA0NGFJYWxYUTNLMDZKc1BVa2lKODVKdUhSQU9Qang2b2l6TUJIeUcyT29TOVBBeVdzR3ZWcDg0bklhZ1FOYjQ2ajNNaytIQnJ5RTFDZmFwd3k5QkV0NHhZUFFWNGtJSk9QeXBRRkIwUDFXN1RodmtCWmxSOEVsY1dMb1I5a2xiRHFmMEJsbjlDWTM3aWc3dENYYkNZeUphdFZsbGhFNkZCSjRlWkV4M3pHMkFHeXorMFYySWVvRjBCa1UwdUJ6S0FuMkx3T3BhbWszaDRTdkRvNkt3bllZMmhWSU9LZ0UwS3RLbUFYVnRXNlRjRHNXU2Nqa3NPbmhwSm9VS2pqb1MrdmdmVVNISkVBaDU2WHZWbkQwQzM2VmlnTkl5S0ZzQXFybm9kblJiczZ0WEkxbHFHSjBhWHpIdE9Tc2VYUnlsdXZoTURLZW9hZ1ZVNjc4ak11a1huVUxZUkVzZ2l1Smo1eWZtZGs5Rk9USTA0eXFzeXM3cXh0UlBzSkpTaEFyVlNWMG1GaGVQV3I2MjU2dDdQcWhudlpFK2JBL3cxcWJ0S25TaWlKcEFjeU9rZ0l1SHRWRGNKUnljNU1zR1RtWVp5RkU5eEREV3VFUW9vdEtRNmRiaXZaZk1wYlZURzhUcllyK28xZEp5bVcrQ2xLdlBBSGdZMEpqa3E0TEV1ZFUyVHJvcjVPS3NpVmh5S2VyRFBmblpXUjR5QlJPS0N0OEhTMUZRKzlRc0lNaG44ZGo5VnFpUFJaMUNIdGFvWHFBVUpUOVB2cUNEUmdITldpNFRTcjJKSTZxRUVhaGtkV1ZSUDJhL3lBKzljRFdRTzdmSEx2cE80QkUvU01ic2RtZVdWdEJzY01KVUhZYTBUSS82QzJWT0hYL0Rzd09XNGI0Y0JPNG84TmtuUXE5TkdOcE5hM2wvZktObWdNMk1BMXdGOFZWS3hMQVJ0RmFiRmVDUEJDaytQTDBtSzN1NWYrWDZ0MTROQ1dIeTBCNlJxcVByeGRWOTEzTTJueG5YdnQ4SHk2KzNWNE1ZQWpyUXluSy9EakpMd0VSdFE2K2Y0cTlyaXdOSmZ5NGRwWktVWk1ZWDF0VDdHVWN5OFpWV2hhMG9KQnBBa0xjR2l1ZzY1REc4SSt0ME5ERXZLZituM1ZEUzEzNm9TRWdSTmJZWFArVDRjSGNnVDFkR2lYc0pRbEJmSTNYY20wZFRPTlB4K0hjVTZUbjNlaG9yWXB4Nk5pU1RmMnVrRE1Kdk9WbW9mVUlDdlg3WUJaVmJwVmNFT1VlNjFKNDRDdU15eG0xN3RPUGhzOUJiNkJBcDg5SU9LYVdyQzBXWlBsM2dGMThBNFJOZGE4QktvNjBkUEhTK042QUVsc3RPMlZ3T3pXYURYdVF0dlgyL0kwVVNHS05QaWlqb0JIMUdFb0tFZUdROEU4Ukh4YXFXYVJCakxrVndSUEwvcUJhNU5PeHc0Zi8wK0RaVjJlbEVsQVJhRUVvUE1VOXBQaE9GZHVWL2ZYN1VBMlQwQlczajlKaWhTTEUxQ0Y5dXVPcStsM3hRUTlCdCs1dGF2cGpBVTMyZzZFM3VmTDcwSFVia01TMFYweEs3K28vZFRyNTZvSTlmOEd4UmxUaEUrVFM1U3BlOGhRWXBxNE9uUnZWM1NRRDAvckVaUVh3eHhhZzd1bklvUUpDcGZxS1g2ODdzZmpuNnpDVzlhOEFzb2RaZHlHclFoOVhFZFcrY0tjbFRic2s0R0FhNk9XZlNNWXVoWDZhaHpYNHAxZkIwZ0lNYUFDSXVTblRtclpCckhmTXo3MlZmbFdkUnZ0SXduZFgzamlmRHFhbU5xS01BSVRPdHdJaUtWbU4rVy9ZNkNmR2d2YWc5NnBQU000SDZTRnl5RHdOVTA1L0NDQWREV1daQ3NMZHd1Y2FIZnpoV0NUcXFvazZRaE1WajhoYmhDK3Bhalh5S2hCaEIxV09nYjJMZ1ZuRndxNGs2VHFzNHRwbmF0WFpaK3BZYzY1L1Zkc2E1T0M2SmxtT2hjbFVncmFhY0NrR28rZVQyakF4SzMyczlYMExtTmRGak5nUk5ucHByeVE4ZHcxU3ljVkNNc1BESkprTFhGcVpOeE9qTHoxNi9NY2dpRTlmZVZJUndqNXRUOU45Q3V0aGpnNnQxNEFBQUJnMmxEUTFCSlEwTWdjSEp2Wm1sc1pRQUFlSng5a1QxSXcwQWN4VjlUcGFJVkJUdUlPR1NvVGhaRVJSeTFDa1dvRUdxRlZoMU1MdjJDSmcxSmlvdWo0RnB3OEdPeDZ1RGlyS3VEcXlBSWZvQTRPVG9wdWtpSi8wc0tMV0k4T083SHUzdVB1M2VBVUM4enplb1lCelRkTmxPSnVKakpyb3FoVjRRZ29CODlDTWpNTXVZa0tRbmY4WFdQQUYvdllqekwvOXlmbzFmTldRd0lpTVN6ekRCdDRnM2k2VTNiNEx4UEhHRkZXU1UrSng0ejZZTEVqMXhYUEg3alhIQlo0SmtSTTUyYUo0NFFpNFUyVnRxWUZVMk5lSW80cW1vNjVRc1pqMVhPVzV5MWNwVTE3OGxmR003cEs4dGNwem1NQkJheEJBa2lGRlJSUWhrMllyVHFwRmhJMFg3Y3h6L2sraVZ5S2VRcWdaRmpBUlZva0YwLytCLzg3dGJLVDA1NFNlRTQwUG5pT0I4alFHZ1hhTlFjNS92WWNSb25RUEFadU5KYi9rb2RtUGtrdmRiU29rZEEzelp3Y2QzU2xEM2djZ2NZZkRKa1UzYWxJRTBobndmZXoraWJzc0RBTGRDOTV2WFczTWZwQTVDbXJwSTN3TUVoTUZxZzdIV2ZkM2UxOS9idm1XWi9QOGE3Y21MdzBYeHZBQUFBQm1KTFIwUUEvd0QvQVArZ3ZhZVRBQUFBQ1hCSVdYTUFBQXNUQUFBTEV3RUFtcHdZQUFBQUIzUkpUVVVINUFjQ0VCOGZCVnhIdEFBQUlBQkpSRUZVZU5yc25YbDhWT1c5LzkvUG1TMDdrSVd3aE1VRUFSRUVwQVcwSW1vUnBZcTFpRld3L2tURnVyU2lYY0M2ME5xQ1hiRDF1dHdxV21xeHJkRDJJcmRYc2JUSTlZcExDeWlpVXRrREVSSWdlektUV2MrYzgveittSE1tSjVNSml5SWs4THhmci9NS1pDWXprek5uUHZudVgvSDlyMTNBbXExVlJIMTlHVGJ4WnVaZCtBRzN6MXRGMFIycldEdHZHRkRMaWhuam1MZGhISXMrV003MFBLRDhHYTY0OUZIS0wxM005bWNuMDRxZkZiUEdNdS9OMFN6WXNKd2JpdXp2UnlsZnNZQ0hGci9DNWowQmZJVm5NZjdtZTdpbWJnRjMvQzdLekdVYldUaWVMa2s0SE9iQWdRUFUxTlJRVjFkSFkyTWpUVTFOQkFJQldscGFDQWFEaE1OaHd1RXcwV2lVYURSS0xCWWpGb3VoNnpxNnJoT1B4NU9IWVJqSnI0WmhZSnFtODkvQ05FMmNoNVRTL2lxa2xOZ0hJRksvQWtncGhmWFNrMTlUdmlkMjdkcFZYRkJRME52bjh4VzdYSzVpVGRPS05FMHJFRUxrQXoyQVBDRkVIcEFOWkFHWmdOYzZYSUJtUFo0SkdFRE1Pc0pBQ0FoS0tmMkFYMHJaSktWc2tGTFdHNFpScCt0NmRTUVNxVGw0OE9EQmtTTkgxbGlQSXgxSHUvOExJVkp2czc4SElJVVE3YjQ2RHFscEdrSUlORTFMUGFUTDVjTGxjcUZwR3ZhLzNXNTM4cXQ5ZUR3ZTNHNDNobUhRdlh0M2ZENGZQcCtQek14TU1qTXp5YzdPSmljbmg5emNYTHAzNzA2UEhqMG9MQ3lrWjgrZTlPblRoOHpNekdPNDZ2eXNtenVKbXpkUFpkWGErUXhEa1lwOTBiZWVzaFd6R0R2dlRVWXYyTUR5Vm1YNkhJaXliczVZYmw1VnhCMnIxakt2aTcwN3NWaU1Bd2NPY09qUUllcnE2bWhvYUtDcHFRbS8zNThVdEZBb1JDUVNJUktKSEZIUW5HTG1QRXpURkxiQXBZaFpHeUd6eGNrcFVxbUM1ZngvVFUzTjRKeWNuRUZ1dDd0TTA3UlNJY1JBSWNRQVlBQ1EwVWxPY3dUWUo2WDh4RFROQ3NNdzlzWmlzVDJOalkzbEF3WU0ySjBpY1BJd2d0ZE9BRzNoRTBLMEVUcE4wMlNxeUZuQ2xoUTU1K0VVTjVmTGhXRVk1T1hsNGZWNjhYcTkrSHcrTWpJeXlNaklJQ3NyS3lsd2VYbDVkTy9lbmZ6OGZBb0xDK25WcXhkOSt2VEI2L1VlVnRDMnJuaVJsOTVjeFlwVmxReGI4Q3JMYnloUktwWUdkeTNRYWxodFpmSHYxaFBqTEM0Y1gzVGNCR3pyTTNOWlZqS1ArVk5MOE5uZkxWL0I0blVCNkR1VlM3dVlxTzNmdjU5RGh3NVJXMXRMZlgwOWpZMk4rUDErQW9GQVV0REM0ZkJoQlUzWDlhUjFsaXBxNmNUTXRzcHNZYlAvS0tVUnNqYi8zN1ZyVjg4K2ZmcU04SGc4STF3dTE5bENpTE9Cc3lENVZuUm1Nb0RCUW9qQnRwQjR2VjV5Y25Jd1RUTUtiRE5OYzJzOEh0OGFEb2MvM3JsejU4Zmp4bzJyc3l4RktSTW5TdHIvZDRxY2xGSUtJZXo3SkFYT01JeWs5V1piYzlZaE9oSTVwN0NacG9tbWFYZzhIandlRDE2dmwzQTRqTS9uSXhRS0VRd0dhV2xwSVJBSTRQZjdhV3Bxb3JHeGtZYUdCbXByYStuVnF4ZjkrdlhyK0xPMDZnbCt0NzZJY1RjL3laTksxRHEyMklaY2NEMlRKdzZqaUZvMnIxdkRCMVZRZXZOU1ZzNGZUOTV4ZVlwS1ZzeWF4cnczL2ZRZE5aR0pvMHZBdjVYMXIyeGdUNnd2Vnk1ZXlaT1RpN3JFeWFxdXJtN25kalkzTnlmZFRxZWdSU0tSZG9KMkJDdE4yRzVuaXFDSkRxeXlkaGJadGRkZTYxcXlaTWtYTXpJeXZ1Qnl1Y1lJSWM0RkJwOW0xL1F1MHpUZjEzVjlzOS92Zi8vclgvLzYrK3ZXclRNZDRwWVVPU0dFbWM2aVMyZk5hWm9tMDFoeHVGeXVOaUlucFNRckt5dnBuam9GenV2MUpxMjN6TXhNc3JLeWt1NXB0MjdkMnJtbnhjWEZTcUUrcmJCOS82YXZzRzc5TnVySXBiQnNORk52bnNjOTA0Y2RKMUd6cVdYOWkwK3dlTms2TnBkWEVhQ1EwdkdUdWZtZWU3aGhkT2NYdGVibVpxcXFxcEpXV2pxM00xMGNUZGQxWXJGWTBrSkxFMGNUempoYUdzdE1wSW1YMlZhWitONzN2dWQ2K09HSEwvRDVmT2RwbW5hK0VPSThJRWRkMW0xb2tWS3VqOGZqNndPQndNYTc3cnByL1YvKzhwZDRHcUV6bmE2clErU2NjVG1aYXNtbHhOK2tsSktNakl4MnNUZXYxNXNVdUk3aWIwNzN0S2lvaUY2OWV0RzNiMSs2ZGV1bTNzWFBHbU5UdEtMck92djM3MjlqcFRVMU5TV3R0S09KbzZWTER0aUNsbUtkSmQxTWgwV0dVOGlrbEZwRFE4T3duSnljaTF3dTE0VkNpSW1BdXVxUDhlK1VhWnB2NmJyK2RuVjE5ZHNEQnc3Y2JvbGJPNnZPYWRIWjFwdnozM2FDd1NseVVrcDhQcDlNbDF4SXRkN1N4ZDlzNjYxNzkrNXRyTGQrL2ZyaDhYalV1NmVFN2JOeDZOQWhLaXNyMnlVSG5HNm5MV3EybFdaYmFFY3JhSVpoSk4xTTB6UTdGTE5RS0hTeDErdWRwR25hSkdDRWVuZU9LLytPeCtPdisvMytOd29MQzk4bWtjVTFVOFd1STVHemt3MjJ1d3JnOVhxVEZseEhBbWRiY0xiMVpvdWIwejFOVFM2VWxKVFFxMWN2OVk0cFlUdDJnc0VnKy9idDQ4Q0JBMVJYVjZkTkRoeXBmQ1BGN1JRcGlRR25kU1pTTExTa21JWEQ0U2xlcjNlS0VHSUswRmU5TXllRUtzTXcvaEVJQk5ibTUrZXZwYlZjSmEzSU9XTnl0cXNLNEhhN3BiTTh4QmE1STFsdnFlNXBibTR1ZVhsNTlPalJnNEtDQW9xTGkrblRwdy85Ky9jbk96dGJ2VnRLMkk2Ty9mdjNKNjAwWnl3dFhYSWdOWmFXeGtvN2txQ0oxSmhaTUJpOHhPZnpYU1dFdUZLSldhY1F1ZFZOVFUycmk0cUtiRXV1amNpbFduSDJ2eDN1YVR1QmM3dmRIUXFjMDNwTFRTNmt4dDVLU2tvT2t6MVZLR0VEQW9FQW4zenlDVlZWVlcyc3RPYm01alkxYVVkWlpDdHMxOU4yTnc5am5XbU5qWTNEYzNKeXZxWnAydFdnYWkwN0tkdGlzZGdyQnc0YytGdHBhZWxXaDhBWkRwRnp4dWJhV0hGMjl0UVdPVXZZWkRyM05OVjZjOWErMlpsVDIzcnIyN2N2QXdZTUlEYzNWNzFEU3RqYVcybDJnaUJkeHJPakVnNWIxTklKbXJOTHdDbG90cGl0V3JVcVk5S2tTZGU2M2U3cFFvakwxR1hZZFRCTmMwMG9GSHI1cWFlZWV1WEJCeDhNQS9HT1JDNmR3RGxyNE5JSm5DMXVIWldHcEdaTzdjU0NzdDZVc0FFUUNvWFl1M2R2dXdTQmJhVzF0TFFrWTJsSDZCdzRuS0FKcDl2WjFOUTBJanM3K3pwTjA2NEQxSlhZeGY4bTZyciswdjc5Ky84NmFOQ2diUTVYMVVoMVZSMENKNDhrY0IxbFR1M1lXMDVPVHRKNlMwMHNuSEhHR1dSbFphbDM1blFWdG9NSER5WmR6NXFhbWpZSmdpUFZwVGxFTGEyZ1dRVzFiZHpOVUNnMHhldjF6aEJDWEtzdXVWUFNpbHZaMU5UMFVtRmg0ZXRTeXJnUXdpbHdodE9DczRYT0dZZExGYmlPWW0vcDZ0NXMxN1JuejU1SjE3UjM3OTZuL1h2aVBwMStXY013S0M4dlo5KytmUnc4ZUREWkV0WGMzSXpmN3ljWURDWkZMUnFOcHUwZXNBWE5FVWRMSzJnMzNuaWphOG1TSlRlNjNlNGJnUXZVeC8vVVJkTzBhZm41K2ROaXNkZzdPM2Z1L1BNdHQ5enkwc2FORytPV20ycElLZHRsVmczRGtLWnBTazNUN0Zpc2RKWUV4ZU54NlN3WHNqMEVaeWpFL3FOci94RU9oVUxKZHEyeXNqSmNMcGNTdGxPZHBxWW05dXpaMHlicjZXeUpPbEt4YlJxM1V6aTZCSktDdG1uVHB0d1JJMGJNY3JsY042RnF6azR2OTBlSUwyVm5aMy9wWC8vNjF6Y2prY2p5WmN1Vy9lVzIyMjd6VzlaYnZDT0JrMUpLUjZHMlUrQmthZ3VlczlmNFNBSlhXbHBLOSs3ZGxTdDZxbEpaV1VsRlJRV1ZsWlZwYTlQU0Zkc2V4a3BMRzBQYnRtMWJqN0t5c2x0Y0x0Y3R3Q0QxTVQvOU1BeUR5c3BLQmd3WVlIK3JQQktKL09HVlYxNzU4M1hYWGRkb1czRDJZY1hnekhReE9HZmRtOU05VFMwTHNZdDYwOVc4bFpTVU1IRGdRRXBLU3BTd25VcElLZG01Y3llZmZQSkpzdUQyY0ZuUDFBNkNEdHhPTzh1cFNTbkZoeDkrbUhmV1dXZk5kcmxjczRFeTlmRld3dVlRTnBzOTRYRDQ5My82MDUrVzMzcnJyYzFIRURqVDBYU2YycmtnMDNVc2RKUTF0UXQ2Qnd3WXdPREJnN0c2SlpTd2RXVUNnUUM3ZCs5T3h0TnFhbXFTV1U5bndXMEhycWRJYllWS3NkSzArZlBudStiUG4vOU5sOHYxVFZUOTJRbDhZdzlCOVE1b3FJQndVK0lBeU95ZU9QSUhRdkVReU8zVm1ZVE4va083TFJRS3ZmRDFyMzk5MmVyVnEyT1d3TmtpWnpvRXpreTEzcHdDNS9GNFpFZjlwczVwSWZuNStmVHMyWlBldlh2VHYzOS9CZzBhZE5yVXZKMlN3bFpkWFUxNWVUbjc5Ky9uNE1HRDdVbzVVdU5wem9Cc09yZlRUZ3pZV2M1SUpISzl4K081RXhpbmxPWUUwVkFCdTljbHZoNE4rUU5oME1URTEwNGliQTZCMitqMys1ZDI3OTc5RlNHRW5pSnc3VnhVUndlRFRMWGVVbXZlVWd0NjdaS1EzcjE3MDY5ZlA4ckt5azZMY1VpblhQS2dvcUtpVFpMQW5wdldVVHpOYWFYWmdWbW4yK2xJREdpaFVPZ1NyOWQ3bDlYeXBEaFJiUGtyVkgxNDdFSzRzUUw2am9JUlgrMWMxb1FRWTd0MTZ6YldNSXdyYTJwcWx2YnUzZnVmVG9GTFRUTFlDUVpyV0lKTW1kOW4vLytva2d5UlNJUndPTXpBZ1FPVnNIV1ZlTnFPSFR2WXMyZFBzalhLSGpQVVVUeXRBOWV6bmR2WjBOQXdPQzh2NzF0Q2lEdVV5cHhBNGhIWThFTEMvZnkwVkgyUWNGZlB2UTdjR1ozcTE5TTA3U3U5ZXZYNlNpd1dXL0x4eHgvL2Z2VG8wZVVPZ2JQTFJBekFORTNUdFBkYjJObFR1MlhQS1c2cEltY253RkxGTFJLSk1HVElrRk0yN25aS0NGczRIR2JIamgxVVZGUzA2ZmUwNjlNNmlxZWxXbW1XcUNYZHpsbXpacm1lZSs2NXUxMHUxeHhBeldFKzBXeFlDb0hxNCtQR3Z2OW5HSHRUcC93MVBSN1A3RkdqUmswSkJvUFBUcGd3NGZlYk4yK09BYnBsdldtMml5cWxOTzF4NWxZQ1N6cUhLNlFLWExwU0VXZll4UmEzWTFza280VHRoTkRZMk1qT25UdXBxS2hJRG9SMFR1VklWNTltL1JWemlwclRTdE9rbENJVUNrMzIrWHozQWw5V0NuT1MzTS9qSVdwT2NkdnlQNTNPTFhYUU55c3I2eWZ2dnZ2dXhUVTFOVXQ2OSs3OWxoQWk1bkJQQmEwOXFUTEZnbk1LbkV5M0ZDaWRlMnBYQVF3ZVBKZ2VQWHFjWXNMbVg4R01VZlBZa0hzTnYvdndVU1oyb1JkZlhWM2RwcHpEYm1KUFYzVHJLT1VRdG5tZXhrclRLaXNyZXhVWEY5K3JhZHAzbExxY0pCb3FqajJtZHJSdWFkK1JKelNoOENuYzA0dDc5ZXAxY1RRYS9mWHJyNy8rdXlsVHBoeXkzRlBOS1hDSlhUVEM3TWg2YzdpcUhJMmJPbmp3NEZNcXFkQmxMYmI5Ky9lemE5Y3VQdm5razJRNWg3T1RJRjJTSU5WS013ekRhYVZwa1Voa3VzZmorUTR3UnFuTFNXVFhHNjMvMWcveDBJLy93YklHR0RmajZ5eWZrQWtZVkg2NGlZZGUzY3Y2eWdoa1pqTjY1QWptVFIvQ2FLc0hQTHAvTnd0V2JPR1Z2WDRDWkZBNnVEOTNUQi9MOU4zcllPekFUbjhLdkY3dnR5Njc3TEx6Nit2cm55MG9LRmd0aEhCWjdxbnVpTDBKWi93dGpjQjFHSHRMdGVCc2dldnlVMEw4NWF4N1pSbnVTYVBtc1FjZzhCSTNsNjVqNWtzYldWaTJsUmNYUE1UaU5WdXBpdnJvTzJ3aU44OWZ5QzJqOHpyRmF5OHZMMmYzN3QxSlViUExPVktiMkRzU05XZkdVMHFwVlZkWDl5c29LUGl1RU9JdXBTb25tY0FoYVB3aytkK3RyMjlrUlVQS3Rmdnh2NWp4YkRsVmVDZ2RXSXl2b1pZTjY5Y3pveDdXZm1jSUpjMTdtZlA0Tzd3V2hzTGlZb2JSeklhdE81bjNlSXk4SDdxWWZOYWhrMUxuZHF3SUlVYm41K2N2anNWaXYzbm5uWGVldi9qaWl5dUZFSnJEUFkxanRmTFprMFRzektsVDNKeGJ6NXpMZyt6WXNuTzRReXdXbzZ5c0s5YVpsN05pemh3V3JkbUczNWVMZStiTUMvbmRzamVwOHBaeTZRM1hjR21SbjNVUHpXTCtLajk5TDV6T0hTWGx2TEpzRlF0bitjbGJ1NVRwSjNtcDFQYnQyNU9GdDg2ZXo4TmtQb1d6MTlOUmw2WkpLVVVrRXBubThYaStCM3hCcVVwbmlDOXNiLzEzL1E0V3ZOcElMT1V1VzdmV0VzM0w1c0lyTG1mcGhCd0k3V2JXRDk3aHpiMzdXQjhhd3VTS2ZXejFaTkIzMkZoVzNub0dSYlR3L0tLWFdGaFJ4YXE5TUxtK29rc0ltNDNINDdsdDRzU0pZMnByYXhjWEZSV3RzV0p2bWlWcXR2Vkd3bkNUcWRhYlNJbkRrZXFpT2plbjJRSTNkT2pRTG5iaFJLSG9HdVl2bjhya3ZCVzRiNWwzSmE4dGU1TXEzMmhtenIrVGlaVHpUSGtkVU1yVWVmT1pOeXpLcFdjdFp0V2VYUEw4T0xZcm4xaWtsSHo4OGNmczNyMjd6Y0ppZTJ1VVBaa2pKVW1RS21ySmVOcjI3ZHU3bDVXVmZWL1R0SGxLVFRvUjlSWFdQMktzK2VzSGJLQUg0d2Eyc0tGQ1Q5NWwvTFZmWTJPNkFWQWVMM2tleUJzNWtiZEdwbnR3RjNrZVN6d0hqdTlTcDBVSWNXNWhZZUZ6a1Vqa2lULys4WSsvblQxN2RxTmx2ZW0wanNneWJFRnp4dDdzUWFkT2NVdGQrNWdRdVNoTkZlL3k1eWYyVWpqclAzbHM1dGxkcUJ4a0dOUG5EN09OdDNReHRqSW1Yam1LSjdaOXdPSXJ4N0ptMUhqR1gzb05NKytaekxDVDVJbnF1czdISDMrYzdDWklMYnhOTGVldzB0bXBXYzlrZ2lBWURGN284L25tQ2lFbUt5WHBaRmd0VXRHOW0xaXdLVUxmQ3laeWMzeGRHMkd6cWYxd0V3dmVhNloyYnhVYjRobGNlTzBvSmpzMzFCM2F6VU92VmxGWmY0ajFGUnA5eDR6bGpzRkFQTnBsVDQvUDU3dm41cHR2UG52U3BFblBEaHc0OEYwcjloYXpYRk1oaERBU2hscHIzTTNwbXFaTUVra0lXenhDM2Q0dHZMNS9Qd2Y4SnU2TVhreWR2SU1QUDR4ejl0bG5kOG0xZjJtVEI4UHVYTTdhMFN0WXR1dzExcTFmeDdKSFgyUFo3NjVrOGRvbm1YeUN4UzBTaWFRVk5idndOdDArQW9lbGx1cDZhckZZN0hhWHkzVWYwRWVwU0NjazBndzA4L3p5M1ZSbDl1T0pxM3VSdHlMOVhmMTc5N0Zxa3oveG43eHVEQ3RPcWNmeTE3Sm1Vd1YxQU81c2hwM1JMYkVJL0xNVS9IWUNORTJiTkdEQWdHRit2LzgvOC9MeS9neG9sbnVhdE54d0pCWnNqOGV5M29UbHNtS2FVUnFyeXFsdENxT2o0YzNyeWFCemh6UDIzSE00UzZ0ZzU4NkVxM3IyMldlVGtaSFJ0YzRSZ00veVVhTlJ3TCtlWitiTVpkRnJlY3g4Y2ltdmJsekxRNk9BdW5XczJueGlYMXd3R09Tamp6NDZiSjFhU2x4TnhHSXhZZmQ4V21hMlpwcW1WbFZWMVNjZWp6L21jcm1lVUtMV3VhbjkxMFlXVjhLNHE4Y3k5VENUcnN1dS9ocDdudjRHRys0OWk3TkMxU3grOWwrc0NUbnVNUGc4Tmo1OUU5c1dYTXcxQlVGZVcvRTZpL1lhcDhwcDZwT2JtL3ZUYURSNi82cFZxMHFrbEJuV1I5a0xlS1NVTGltbFpsLy9WZ3hOMk41TUpCSVI0V0F6MVEwaG9xWWdvK2dNUm80WXpCa0ZHZWpOTlJ3NGNJQ0tpZ3AyN3R6SlJ4OTlSREFZN0dJV202K0l2Rndnc0lZRjAyWlJ2bkFoZWJWcldMVnFIVnNyUDJCeVNTM3J5Z0Z2R2FOT1lMSWtFQWkwc2RTY0xWSzJvRG5IZDl1dXAxV2YxaWJyR1F3R0ovaDh2dnVFRUpjcTJlamtaQmlzK0w4REJJQU55MStpZEhuclRSdVcvNFVKKzcvQ3E1ZDVxZFZkNUJYa1VPUnhVVFI0R05lVWJHTmhSUzBicW1GaWZndVZZUU5mWGpkS3NzQlgwSitadzdKNXFUckk1cDB0Y003Z1UrWjBlYjNlMlZPbVRDbmR1M2Z2TTJlY2NjWjdWdHpOVGl3SUlZUmhtcVpwTDNodUczZHppVzdkTW1WTE1FSzRlamNiYXo4aHQ3QXZaV2NPWXFqRFhiV1BzODgrdTh0TUIzSGptOGc5ODY5azY0STE3Q2t2cHlwYXdwMVBMc1gvMEFKK3QrNTNMSTU1S1R6clV1Nll0NUJiVGxCVFVYTnpjMUxVN0diMit2cjZkdTduWVRLZnlYaGFOQnI5aHR2dHZoODEvTEZya05tVHNqUDdjS0VqNUZGYmVZaHRmcFBjNG1MR255RllzL3hsNW0yRmNUTyt4dklKT1JCcTRJTUdBQytGbVZDNS9uVXUvWjlHY3NkY3pGdTM5aWVQTU9YVllVQWpMOC9iNlhwR2o0TnJlc21BQVFNR05EUTBQSldmbi8rSzVacUtGTmNVWjl6TkZqbVBKMU4wTCt3bVBlZ0VBMzZhYXovaGc5b3FhdU9YY3FIVjJlRHNVVDM3N0xQcDFxMWIxNGl4bFUxL2tyWFRuZDhlejUzUHZzcWRKK0VGTlRVMWZXcFJjeVFKdEZ0dXVjVzFlUEhpSDJpYTlpQ24yVzZITGszQmNDWmZleW5Pck03NjMvK1ptZXNqREx0a0lvK2VsMG10cHkrRlcvZXpZZm5MVEhvdkgxOTFMZHY4a0h2bUVLYjJnaExQRU1hdFdjK0dUZXVZVkYxRW1kN01obW9UOHZveGMxZ21GQTg5NVU2YkVLS3NSNDhldnd5RlFuM0dqeCsvNUtPUFB0SWMxcHR1aVZreTdoYVB4OXRrVEtYWEszTUtlbFBZRzJMQklPNW9NNDJOeWJLUk5zZlpaNS9kNlVlT2Q2b1BmR05qNHhGRkxaMzdtWm9rT0hUb1VMK0Nnb0w3aFJDemxWSjBNWXFISnVhdUhZYWlMMHhrT1p0WXNHWXY2M2RWUTJZZTR5NFl3ZnlyQnlVbUZSUU00ZGw3WFN4YXNZVTFlNnZaUUFabkRUdUxPNmFQWVdvM29HRGdxWHIyM0ptWm1mUGVlKys5NHRkZmYvMDNsMTkrZWFWdHVWbldXOXkrWTdxa1F1S0xqOHpjQWpKbEM4M042WVhORnJmTzNGL2FhUVpOT2tYTnpuN2FvdWFNcWFXeDFPeldLTTAwVFJFSUJMNlFtWm41Z0pxWjFvWFpzTFJOOThGeHBjY0FHRGZyYzNub294MDBlU0l3REdQMXpwMDdGdzhiTm13TEVMV3lwanFRWEErb2Fab1VRcGpXZEY1cDdWU1F6cEhqOWtUZTd0MjdVMUJRUUs5ZXZaSURLenV6dUhVS2k4M3BmcWFLMnVIY1Q2dmZNK2wraHNQaHk3eGU3NE9veWJaZG16TXZnbzB2Zkg2UGZScmdjcm1tREIwNnRLQ3lzdkxwa3BLU3Q2eEVnbTI1SVlUQW1WU3dnMjZ0bGxzeUZzZmhqSi9odzRkM1NyZjBwQXViTTFIZ0ZMWEd4c2EwRXpwUzNNK2txRVdqMFJsdXQvdEI0RXlsREYyYy9JR0pLUnpIZThKSEo1L3M4VG5FM2NiMjZkTW52NjZ1N3FuQ3dzSy9TU21kU1FVZFIxTEJJV0RTY2wzYnFWazZnUk5DTUh6NDhFNlhVRGlwd3VZczZYREcxR3hSTzV6NzZSUzFXQ3gyaDh2bGVvaVQxdkNsT082TXVCcjhoNDdmVExZZUF4S1BlWm9oaEJoVVVGRHdVRk5UVTA3Mzd0My95Mkc1dFFsRjJlSVdqOGZUaWx0SG9tWWZJMGFNNkZTbElDZE4ySUxCWUllSmdqUjFhc0s1NDlNcGFycXV6OVUwN1NFZ1E2bkJLY2E0V2NkbmltNlBBVERtK3RQNVRCWjE2OVp0Zmt0TFMzWk9Uczd2blc2cFU3VFNpWnVkWEVnVnRGUmgwelNORVNOR2tKMmQzU2wrWWUxa1BLbXpUZW9vc3AvQ3VVSEtqcWs5L2ZUVEhsM1hmNmhwMmtJbGFxY283Z3o0MGgwSkYvS3p1Si9qWnAxeXRXdWZnb3pzN093SFFxSFE3VmRlZVdXMm8xUEJBN2l0VGdXWGFackNNQXpoNkZJZ0dvMEsrL01ZREFieCsvMDBOVFZSWDEvUG9VT0hxS3lzcEx5OG5JOC8vcGhJSk5JcGZsblh3dzgvZkVLZlVOZDEvdjN2ZjdjWlBlUzAxRkppYXNMZXlHNG5DcVNVNHQxMzM4MzV5bGUrOGlOTjAzNmdQdjJuQWNWREU3R3hVSlBWUzNxVVZ0bzVWNS9RS1I1U1N2eCtmNmV1OGZKNFBPZE5tellObDh1MWRkMjZkZkVPcG5mSU5Ja0RrZXFTT3ByczJ4eEZSVVc0WEs3VFI5aWtsR3pac3FXTnFLWGJKSlU2ZHNncGFqdDI3T2d4ZE9qUUgycWE5bDMxaVQrTnlPd09KYU1TSXVmTFNUaEtuZ3lJV1QyTXVjV1FYWmdRc2lHVG9QU0N4TStjUUxxQ3NBRzQzZTZ4NTU5L3ZpZ3VMdDcrdDcvOVRYZG1SanNTTjZjQU91dlpVZ1hPL2xwY1hIeFNSeDZkMEJoYlI3MmZUdmV6bzVJT0thVW9MeTh2Nk4rLy80TkNpTHZWSi8wMEpiZFg0bEFOY3A4Sm44OTMrMjIzM2FaNXZkNGx0OTkrZXkyMHhzNGNWcGxoR0lidGFiVkpLRGpqYTg0NG04dmx3dDVhUDN6NDhGTmYyT3pKdHgyTkhqcE04VzNTVWxPaXBsQWNWM0c3N2FhYmJpSWFqVDQzWjg2Y0JxZGxsazdjY0dSTE94SzJWSEU3V1pONFQ0Z3JXbDVlbnR3bWRmRGd3UTdIZWFjcjZiQmphcGI3T1VkZGpvck9TbGR4UlZQYzBqRWpSNDZVUW9oL3Yvbm1tNFpsamJWelMxUEVybDI4elhrT25PNnB5K1VpUHovLzFMUFk5dS9mZjlReHRYUjFhazgvL2JSbjVNaVJEMnFhZG8vNjZDZ1V4NStNakl6YkgzamdnZmltVFp1ZVhiMTZOZWtzTjlNMERXZ3RCYkhLUmVUaDNGR1h5NFhWcG5YQ3QxOTlyc0pXWFYyZFhKR1h1bmpsY0RFMVo1M2E3Tm16SDlRMDdmdnE4bE1vUGo4eU16Ty90V0xGaWxoMmR2WnZiVUZ6aUp2RVd0SnMrYWJKbUpzUVFqcmRVT2RodTZPMnVKM0l2YVdmbTdEWkc5cWQ3bWRINDd4VFkyb3B4YmNQcXN0T29majh5Y3JLK2s0Z0VJams1dWIra2JaWlVwbGF4R3QvWHlTUUhjWFpiS3ZORnJjVDFUVC91UWhiT0J4dUkycjI0cFhtNXViRHVwL1dLTzlrbTVUVlVhQlFLRTRRT1RrNTMybHNiQXoxNk5GanBXVzFTVkppYkphNE9TMDJJWVNRdHFnNUJjNjIyR3hoTytlY2M4ak16T3g2d2lhbFpNZU9IZTEyRktSYWF0WTJLZWNTWSt5Rks5Rm9kSWJWKzZrNkNoU0tFMHRHOSs3ZDUxUlhWd2VMaTR2L0xoUDlWMjArMy9aWGUyQ2xaYTIxc2R5Y0ZwdlRKZlg1Zkl3Y09mSnpyM0U3N3NMbUZMWFU3S2U5OTdPanliZW1hWXB3T0h5Wk5hVkROYlFyRkNlSG9xS2lvcnYyN3QzclArT01NLzZaWXJuWjhUYTc5QU9Ib0FsTjAyUkhjVFpiMkRJeU1qNzNNcERqS213VkZSWHMyYk9IcXFxcXBLV1c2bjQ2dWdwSUtldlFBb0hBRjZ4NWFtcjBrRUp4RWhGQ0RPcmZ2Ly90bXpkdmJobzlldlRIbHVXV25Oc21oR2hqdFpHU0lVMk5zN25kYnR4dU4xNnZGNi9YUzBaR0JnTUhEdXo4d2xaZFhaMFV0ZXJxNnFTbzJmMmZEdmV6VGF1VWM1eDNabWJtQTZnaGtRcEZwMERUdEMrT0dERmk5c3FWS3grZE5tMWFsVVBjcEdOMkc2WnBtbmFtTkozVlpzZmFuQmxTZTBMdjU1VXBQUzdDRmdnRWtwTTZxcXVyMnpTMU8yTnE2Y282cEpUaWxsdHVjVms3Q3RRNGI0V2lFK0Z5dVM2LzRvb3Jhb2NPSGZyWTl1M2J6UlJ4c3pPbjB0NHFiNHViTTVsZ1cyejJWNi9YbTNSSnM3S3lQcGM1YnA5WjJLU1U3VnFsbkpaYXVxYjIxQXpvNHNXTGY2QVdyeWdVblJPdjEzdmp1KysrVzVPYm0vdDdTOURNRkhHVHFabFNUZFBhV0c3cFNqOThQaCtabVptTUdqWHF1Q2NUUHJPdzdkeTVrMzM3OWlYTE9vNW1UVjVLQnZRYnFsWk5vZWpjNU9UazNGTmRYWDJvdUxqNDc0Q1p4aTF0RTNPenlqNlM0bmE0V0Z0V1ZoWkRoZ3pwUE1KV1dWblpybGF0ZzFZcDBtVkFnOEhnQkd1WnNkcjdxVkIwYnR4RlJVVjNiTjI2OWRDd1ljUGV0Nnd6MjBwcmx5bU54K095bzRMZGRMRzI3T3hzU2txTzMwYjJUeTBvVFUxTmFXdlZPaEExa2JLbFhUdHc0RUFmbjg5M0gyb0FqVUxSSlJCQ2xBMGVQUGlXRjE5ODhjQU5OOXh3d09HU0ppMjRsUHEycEV1YVR0aWM0cGFWbFVWT1RzNXhHeURnL2pUN0d3M1RaTSsvdDFLNWV3L1YrNnRvT0ZSRGMzMDlnYVptUXY0QWtXQ0lTQ2hFTkJKQmo4U0Vyc2VJNjNGaEdxYVFNaUZzUFQzaGVhSnAzNlhxY2xHY25FK3BCaTRQYUo3RXdFcHZ0am9uUjRITDVicDQyclJwRmNCVHRNYmJUTklrRTFMRnpabEljTHFremtUQ3lKRWpqOHYwM1U5bHNaWHYvWVRLcW9OVTE5VFIwTkJJczk5UFMwdVFVQ2hNT0JJaEVvMFNqY1hRWTdyUTQzSGljU014TmxoS0lTVmFySHIzN1VLSXU5UmxvamhwU0JQaVVTQUtzUllJTlVKR0xtVGsyZDZVb2dNeU1qSnVycSt2cnlnb0tQZ3JZSFNVVEJCQ1NEdmVsbXE1T2QxUnA3RGw1T1F3ZVBEZ0V5OXNCNnRyMkZkWnhhSHFXdW9iR21scTloTUl0QkFNaFFpRkkwUWlVYUxSR0hwTUp5RnFjUkl4TlNta2xDSll0ZTFDbDh0MW43bzhGSjFMNkF3SU40RWVocHllQ1l0TzBTSDUrZmwzYk4yNnRjS0t0NWtwaDVSU3lvUzJDZUx4ZURJN0dvMUc2VWpjTWpNemsrVWZ2WHYzUG5IQ0ZncUYrV1IvSlFjUDFWQmJYMDlqVXpNb01qSUJBQUFnQUVsRVFWVCtRQXN0U1ZHTEVJM0ZpT2t4OUhoYzZQRTRodEU2Z21qN2h2L3Q3dlA1NWdKOTFLV2g2SlRFbytBL21CQTNsK2R6ZjdwMTY5WjFtbC85b29zdU9wYTc5d1p1QXZhU2lMRzFFVFpBV2lWZHBtRVl4T054R1l2RlJEUWFsZmEycTVhV2x1UzJxK3JxYXFxcXFxaW9xR0RuenAyVWxaV1JrZkhwVzhXUFNkajI3dHRQMWNGcWF1dHNVUXZRRW5SWWFyRVlzWmlPcnNlRnJzY3hEQk5EV2k0b2lMSXpCbnhmd0dUMTZWRjBhc3c0aE9vVHV4Vk9BR1ZuZnJhK3lmSmQyd0h3OWYzaXAzNk1hTlc3QUZTZCtlU3gvTmdsWVRPMmJWRDU5MzlMWXF1OGdaMUlBQ2tRVWtncE1FMUpYRUxVZ0dCY2FDSW1OV0pvSW9KTGhIQ0pJRzZYSDdlckNZK25Eby8zRUFjWFpYSEdHV2R3NW0wZmZhcmY1Nmp0N2YxVkI2aXNPa2hOYlIzMWpVMDArd01FV29LRXdtRWk0VVJjTFJhTEVkTjFkRDFPM0RBd0RGTklNeEZYaXh6Y09VM1R0SG5xVTZQb01wYmIwYTc2TzQzSjFMemZlbmZnanllUW1NVGpBN3lXd2VTU1NKY0VUU0tGaVJRR2tqZ21PZ1l4NGtSbG5JalVDY3NvUVROS3dBelRhQVNwaS91cHJhMmxwcWJtVTcrdW94SzJRRXNMK3lzUGNLaW1sdnI2UnBxYi9RUmFXaExKQXFlb1dkWmFzbDdOeW9CVzczaXZuOGZqL3A2NkRCUmRpbkJ6SXNtZ09MeFA2dWsrNjltaVdiMDdFRGROZ21ZNnhFMlhwa2lLR3pvUnFST1NVVnJNQ0g0alRHTThtSFJQVzR4UHQ0RDVxRnpSVC9aVmNhQzZocnI2QmhxYkUzRzFZREJNeUpFQmpTV1NCYmFvWVpvU0thV1FTSzBndjhkM2dTK29TK0FVOHRhYVl3U2UyMEhrWDlVWVZhRXU4WnBkZmJQSk9LOG51ZDhjZ3RiTmV4US9JUk43UzMyNUorMDFmL0xYSjNtR2EvbjUxYjFQOXRuRDkvT2JLTGlpanNZeEx4T090ZDRpRUtNdnpSdnhkV3I1dGUyU1NqQ0VNNWtBMGtSS0F4TUJhTklRTGlHa1MycTRoWVpidXZDWVViekNqYzl3b3pVM2s1bVpTYVVlWWFqcjJFUHlSN1RZOWxjZHBPcmdJV3JyNm1td2tnV0pES2l6c1YxdjY0SmFHZENFQzdwcnVpcnRPUFh3UC9FeHdSVjd1NHlvQVJoVlFZSXI5dUovNHVPai95RTlyTjdzbzhDbmVXNStiK0JQSmpnc05pL2dBZHdTcVFHYUJHRkNXcGMwS25YQ1VyZGMwZ2grdjUrbXBpWU82VTBjMEJ1UHI4VVdESWFvUEhDUTZ0bzZHaHFha3ZWcXdaQXRhakdpbHFqRjQzRVJONndzcU9XQ1ZuNjh2cGZINC82T2V0dFBQU0wvcXVteXJ6MjZxZjdvN3h5UGRzbmZzZm9mai9EUzNtSUszSDVhR2dPNGgwMWtjR0FMZTVyOE5JZUxHZitObXppMzZQaG1mWHQ1dXQwRWZKek9hcE5JQ1VLYVNGTUFCbExHcFNrMFlVZzNjYUpvdUhFUmxpNjhwaHNSRE5MYzNFeXRIaVZIeTZDN0s0c3N6WGQ4TExaRXZWcE5zbDdORnJWRUVXNHNVWVNiR0JocHVhQW1walJ0RjFRVUZ4WGRDNHhSTW5CcUlRTTZaa08weTc1K296YU1HZENQOHBmdHVqRzJlT0dYK09yczczTHJ0eThuWStOYTZzKzlneHZ1ZUpDWlkvMjh2YTdpdUQrZlFJd0NwbHRXbXcvd1NpdldabW1OSUdHMVlWdHRjV21JR0FZeGFSQ1ZPaEVaSXlTamhFSWhXbHBhYUl3SHFZMzdxWW8xSEI5WDlGQjFMUWNPVlZOYjE1QW83V2hwb1NVWUlod0pFN1dLY0dOSmE4Mnd1d3ZzTEtnSUhkZ3hXZE9Fc3RaT1FVU3VwMnYvQW9aRTYrcS93eEh4a0oyYm0xZ2FrcGxQZGs0eC9mc2xmdWVjM0V6aWtjL054ZjdtSC8vNHgzUFR1S1IybGxTa1prbmpHT2pFaVVrclUycnFSQ0lSUXFFUVRVYUkrbmlBUTNvek5ici9zd21iSG85YkxtZzlEVlpweHlmdnJPS3ZmOS9BM3VZb2tWZzBVWVNyNjhTakFkSFU3Q2VzdDNZWHpKcHhqY3ZuOWQ2YjdyRTMvL1I2U3MrN2x4Y1BwTnhROXpJenpwdkdRKytsY1IzKzd5ZU12V2taNVVwVFRpT3l5UGoxTGZUWitUV3lDeDBYN0lUenlGOTlDNzEzM2szdmQ2Nm54emY3dDdtSWozUzc0dk9uVDU4K013ZUk3aGtPcTgxamhiMDBhY1hhWkVMWUV1TFdKa3NhSjBKQzJNTGhjS0lFSkI2aUxoN2dvTjVJWEJxZlh0aVNwUjBOalRUNS9iUUVnMFIwQTB3L0ZlWFZoR0s2blFVbGJpUk1kZGxhaUtzOTkvalA3d2ErM09HenhqNWswYTllcC9hb1htSUxhMVo5UU1uVVN5aFQxOHpwWXhWT21rQzNTMU1hMDB2SGtQLzBDRndiLzBuOVZYK2s3cGQxdU8rK25PNWZ5enE2MnhVbkJFM1RKcTQrNHdkVEhWYWJwMVhjcEl1a3VMVzZwRHBHNHBCeFlsSW5HbzBTaVVRSUdoSDhSb2pHZUl2bGtqWitPbUZyOWdjNGNLZzZVZHJSMUp6b0F3MkdpTVJOcEFEWmNwQ3F4b2pkQnlyaWhreTQxMUlLcEJRTjVSOE1kcmxjY3c3N3JEblo4TVovc3VpZkxVZCtoWFZ2ODlKN2c1aDVVUzkxeFp3dTVQWW43NEVCR0s5VllqcENlZTVKWitLcDNVbnpJOXVKYlc5RS8rODNhZG5nd2plcDcxSGRyamh4ZEhObDNmVEg0dHY3T2NXTnRyVnR3bG5iNXJUYVlzU0p4V0pFbzFGQ01rYUxHYUhaQ0ZFZmI2RTYza1RBQ0IrN3NGVWRTSFFYTkRRMk9WcW13c1RpSnJpN2taOGhDZGZYRWRUajF1REk1S1FTSVpGYVhwNzQxdVpsUHltWk5ua3lwV01tTS9hYWVTejZaOXZBbjNmZ1Zkd3pHVjc2NlhOc1BrSU11dmFOdjdQNUM1Y3p1ZkJ3NHJlUHpWdjI0VmZYVXljVHFCNTRKL1RGN1N3REczc1JSZS9kUU43WWprYlR1UERjUFlITXVrMDAvM2ZiVXBMNDB2L2kwT1Z2RVl1bC9JalBkVlMzZDBVR1hEM25VOVd3RlY4Mmoxc3Zzd2MzbnNtVmMrL21IR3RQc2Z1Y08vbnVOODQ1eGtjMGlQN2dlUTZNYUZ2RGRoajZucDh6K0dwU0V3bEN1S3hEUXhOSnE4MUlKQktJVzRrRVhkZUp4V0tFWll5UUdTVmdSR2lLQjZrN295L2gzMXhFejlkdlNoNUYvM0ZtdTNrc2JjbzlxbXZyT0ZSVFM1MDl0Y05xbVFwSG9zVGlFa3hCWmxFM1hBZWE4RGU3UkphM3RROFVpUWdmMkg1SjNhcjVkOHg2TnNZTlAxdkNzNE5oNi9LZk0rZit4emhyMVVLbUppL3dmQ1ovNzl0c3VPYm5QUFRjVmJ4NmQwZXpKZy94eWl2N0dEOXJMSG4ydHc2OHpZS2ZMbU56ckQvWDNQMXRKZ2VlWTg3U0ZzcDZ0N0Q1cVZFOCt0Uk1odm1VcHB4d3ZJVmsvZUppc2t2anhGZitrK1lOUlhUN3labXdKNHJyZ2JGRXZ2TXlMZHNOcU5wSDVOVW8rcDRPWWlWRHg5SjlHb1J1L1FDOWFGSktDTU5BT2dUUU5XRWNPZU9pUk83YmQzUzNueVljMkZmQkM4Lyt4eEh2TittS3IvSEY4eTg2cXNmMFhUU1FndWVtQWhCYXVZMm1INnc5OHM5b25wdmU2UGZBT3hmdC8ra21JRzRkaVg1U3BBbkNORUdBeEFCcElJV09JVjNFRVphd1JXU2NrQm5ESnlKa0dsNmFtM2JRd0Jlbzk0U1RHNjVpZGFPUTdPcFkyQTRjVEdSQm01cWFDYlFrQ25IRFlhc0kxNUJJYWFETERISjlRalJHd2tRMGo5Qk1LVWk4T00zcjlkNlZkOTYzV2JrOG43SStPUUJNbkhFNXc1WXQ0NE1LbURyQzhXU0ZsekQvN3BlWjlLdkhlUDZhcDdrbFhTSDQzdGQ1NmVBbzVwMmZrL3pXK3FYTDRQYkhXZGw3SzRzZXVJc1p1ZE41OXJtcktBUFcvL1JlWHRvNWsyRWpsTTZjOExqS3RQUEpxbjJUMnZ0aVpQemlNb3F1OStQLzFuOFQzZ1BpYTFkUmNFVVBXcmJYUWRVZUFqL2EwOEdqOUNEN0p5TVFyLzZkd0ljR1RPckFvbnZnZWdwbjVDTjhjZUlyLzBIejMwTEhjUHVwVDUvK0E3bi9rU2VPNjJORzM2amd3T0NuanZublNuMDlyd0grRGVpQUxxV01DN3ZPVGFLUjZFckFCT0tZVXBOQ3hJVWhSVHllc05wa25BaHVRbWJDSlcyb3JHSEhkUzhRenlobWVHYS9JN3VpKzZ0YVhkQm1mOElGVGZTQkprWVI2WVlFYVJDUHg4SG53eVVraGg3SHF2TFI3di9icnV1RkVGZjZDbk9vL2NkalRMdnlTb2FlTjVuU3kvNkREYkVZNlR6T2t1bmY1cDZCdTNuaXAzK25NczN0VzFmOUhmOUZWekhlWVlINXZGQzVZeDliZCs2bVBPb2xMN0NQeWdCQUMvNUE0bmJGaVVmNjQ0aWlIbmhIRmVQckMyYk1oNmN3OFdab2VTNWs0TWpaTE5mMUU4anQrd24rWCs1eldGN3RYU0w5dWI5UmUrMWZhUGpoTHVTa1NmUzRxY2N4M0s0NGtiaUVkdG1tZ1QrNXdPR1NlbHByMjVJZENaaE9sNVRFOUYxZDE1TmRDUkVaUzNRbEdHR2FqQ0IxZXVDd0hRbHVnSml1YzZpNnB0VUZEYlpPdzdYcjFlSm1RdGlNZUZ6RURZSEhKWVFSTjRWaENtMW9YcUZMYzdudkJDaGY5aEN6WHVyRndsLzlucWxEOHZFRi9zNk15YzkxOFBTRHVPV0JxM2hwMW5Nc2VtTjZxcXl4N0I4eEp2OXNGRTdQY3ZUZFArREs1NWJ4dTRwQjNQeXJKWXl1ZjVtNTM3Nkx4YlFRSFRpTEo0ZW9pK21rQ052ZjNzQmZkRDdaTStMRW5ucVY1bTA5eVB1UGFSVGx1WUJxQW5jZEladmxMU2I3bXdQUWlxREhQMHV0djJKdUJORHQvKzRrYStsL1VmdXJPaXVtMmtpOER1TGI2ekRQNmt2QnRLRzRYL2dYOFdUTTlRaTNLMDRvUFQzZHJoMmg5ZjdYRnZPZ2JsbHVUcGRVZ3BBU2FWcmlKdVBTRkNJZWx5NlhDeDB6VVFJaWRjSm1qQllqUXJNV3BzRm9vVVp2cHNpZGgwZTQwZ3ZiQWFzWHRMR3B5V3B3VDh4WWk5b043cnBPM0FDa2FZOGp3aFF1TkJFWHBwVENrOS92bThBNGFHSHpQM2VUTithYlRCK1NuM2lHUUF1SHl3LzRSc3hpL3BXdmMvTlR5OGlOZVpNbEhkSDNYbWFON3hLV3BycVZ2djVNdmZzSFRFMjZ0RmZ4NUF0WEVZMkNUOFhXVGlJaG9pK3NKZnFDL2Y4QS9odjNnZGNGc2FPb1BZclYwVEo3T1NHbnhUM3FmQXAva2tYdzFyV0U5L2p4UG5BOTNVdTMwVEQ3dzZSSXlTaUpuQnN1dkE5Y2U1amJGU2N0VElINDRySUJkMDhlc2ZlQlZVbVhGR3lYMUdxNVFpUk1wMFQ1aDVZWVRva3VUWFJjUk5FSnl4ZyswME9MRWJFS2QxczRwRGZSejF2US9qbkRrUWlIYWxwbnJMVUVnNG5Ca2RGV2EwM1hkZUpTSWpHRkVVOHVPaFpDQ0hGTldlKzhGaUcrbVhpNEhNb0c1bFAzcjJVOC84L2RiSDN2N3p4MC8xSStpRUcwUTNYTFllTGQzK1pTZ2dSYXIzTFd2YlNSb2lzdlo5aFJuandsYXAyVVZGSHJXMHJ1ejgvRFY5amV4VFQzMUJIZjdqanFvaENOSnI1ZkYwUGZXSWNZTjRhOGI1YmlMdTJCWjlKWThxN0lJdjdXbmtUMSttRnZWNXhNZXJpenI3MDc1OHU1cERUSUoxeFJxYVYySkJpR0lRekR3RmtDa21pVWp4RTBJd1NzOFVhMXVwK0kyYjQ5VG10WHM1WmNuZGNxYXJvZXg3Q0dqNWltYVMxbVFVaUVlR3p1Mk5sZVd2Vm45TzAvNUtFUmgzamllN2N4N1lFVitDK2J4Y3poT1VUckQxT3pWbmdKOCs4ZTJmcUhOZkEyTC8yekY5ZGMxbDlkRWFjYWZmdVRPYWtVWDk5akw4R1FhLytQK2gvdVFYeHRFa1YvL3dhRlB5NUZ2cnFXeGw5V0g5WHRpcE9IUUF5OXMrZWxsOUsyYUxkTkg2bGR0R3NtaEEzRFNKUi82Tkx1SlUySVc4aDJTWTBROVVZTDFYcFQrK2Y3NXo5ZVlsZDVSYnNGTGY0V3l5VnQzVHdsb3RIRUxvTzRZUWhwU20zcmh2L05IMXgyeGp0d25Kc0NEcnpOOC8vTVllcjBVUlNwYTZKVGNtRGN5MTM2OWZmWmNOVXhtQnNEanVwdWhtRlFXVm5KZ0FFRGp2cWh1L0RPZ3c1NTQ0MDMwdjloa25MUEgvN3doenVlZi83NU9pQUloSUN3RUNKbXVhaUdFTUswdGxsSmE5R0x0TGRZMmN0ZWNuSnk2TmF0Ry9uNStSUVhGMU5TVXNLZ1FZUGE3RWh3MTlXM3IxbXpWdWNsckRWcjAxUThibUJZMXBxVUNYVXRHempnbHVNdWFnQjlMdUNXNlVvOEZLYytFeWRPN0RTdnBYVXQ2T2RHNmFoUm95WTkvL3p6SysxWW14QkN4eXIvRUVLWVFvamttajduM2xGN1czeE9UZzU1ZVhuazUrZFRWRlJFNzk2OTZkKy9QNE1HRGFLc3JGV0tOSHNwU3pEb3FGbXpkeGZZb21iNXU2WnBDdE5xbmRyMGY2dHlYUzd0Rm5WcEtoU0tvNlZidDI3WHpKMDdOemZwamtycHNkelJwRXVhV05kcENtdTdsYkJMUHhMckJ4S3RWdmFtSzcvZlQyTmpJelUxTllSQ3JmV0ttajFuTFJRT3Q0NzV0dUpxdXA0VXRuYlcyb2hoUTJZQmc5UmJkWHJpNnBWMWVyeDJ6YVhlN09PSUVLTHN2dnZ1dTVqMlNRU1hsRkpMVE42V3dqUk5MR0ZMMXJUWjRtWTN5TnN6Mit3VmZvY09IV3A5MnhJZEJna1hOR0tOK1U2NG9EcHhvNjIxSmkxcjdjYXZYKzF5dVZ3M3FiZnA5TVUzcHFEcnZ2WXZGQjZEQ3FwYWtlTk5mbjcrVjB0TFM3MXByRGJOdHRvc2NXdG50ZG5pWm84MUNnYURCQUlCR2hzYnFhMnRKUkpKTEgvUm5OYWFNd3RxRDQ4MERBUFRNSzNsTEFscmJjbVRpMjRFVk9QU2FVemVQV2VUZFhWL1hIMnp1NDZsMWplTDdPbG5rRGRuMk5IL2tDZFR2ZG5IMzJvNysrMjMzNTV3TkZiYjRTdzNwOVhXM056Y3htcHpKL1lYUk5QRzFoSzFKQ2FHWmExWkZwdm1kcnR2VkcvUDZZM1d6VXYzKzBlZDRwOUFEYnc1NnMzK0hDZ3VMcjRDZU5NU3RwaVUwaTJFY0pOSUpHZ3lnYkRLUHFSaEdDSWVqOHZVV0Zza0VtbGp0ZFhWMVZGU1VvTGJLdVd3ZDRJbWxURnUxWkVZcG9FcEpWSktKSWpRd1IxVGdBdlVXNk00NWNuc0JrSjgvczlqR25Cb0s3VFVuRFpic1RRNGIrZXJpMGNOdnVLT2paYkY1a0ZLSFlGTFNnd1NoaFNtTkRHa2dTRjE0bWFVdUJFbUhnK2l4d1BFWWsxRW9nMkVJelcwaEEvUUhQeUUrcGJkSFBML095RnN5V0xjdUcydEdSaTJHMnBLcEpsWXpnSlNlRDJlR2VxS1Y1enl1SDNneS92OG55ZlVDSldiUVErZGRxZDRZTi9pU2NBSFNhc05QRUlTUjBnWENGTWloWlJnU2lrTnc4UXdUT0tHaVc0WTZMcEJUSThUMVhYQ2tTakJjSlJBTUV4VG9JVzZ4bWEwYUNUaGd1cHh2VzBXMUhKRHJhUUJVaUthOW00WklZUzRWbDMxaWxQYm5IQkJUczhUODF3dE5hZWxxQUY0M082ci92ZTNDL3NsTGJaRW5DMWxOd0tZVWdvakVXc1RjU01SKzllTk9IbzhUaXltRTQxWjRoWUsweHdJMGRBVVFIT1dkeVFMY1cwWDFEUVRibWpDV3RPeXM3T3VVMWU5NHBTMzFQSjZKK0pySjRMbUE2ZjE2UjQ3WXNpRnBHeXpRbG9aVW9rbXBSU21sSmlteExBVENiYTR4UTFpOFRqUm1FNGtHaU1ZaVJJSWhtZ01CTkdTVGU1T1VVdGFhM2JDQUxIcVQ3L0wwRFJOQ1p2aTFFUzR3SnNOdWIwUy96NVJuT2FiNW5PeU1xNllPV1ZDaG0yMVNWdmNFclBhQkltWlJpSmh0VWtNd3hRSmw5U2EvcUhIaWVseElwYlYxaEtPNEE4RTBld3NxRzY1b0hiU0lHbXRXU1Vla3k2NjRGcWduL29FS0U0TklkTVMxcGszQjdJTG9Yc0piZmI4blNpNjhFTG00MFRKbzNOdkhaZkdIWFZKMEtTMGhZMmsxUlkzVE9KeEU5MjIydlJXcXkwVWpoSUloWEhydUluanhzQkZYQW9NS1lRaEJZWWxhSlpxYXU3QzB1a25KRU9rVUNoT0szb1dkTDhFZU50aHRibUZ4SVdRV3VJdmtKUlNJZ3dwTVV3cERkTVFjY09RdHVXbXgxT3N0bEFFcmRVTmpTZEhoU1JhcDZSOWlNYkd4dUZDaU12VVc2QlFkRDJpYi82R29YZTh6TlpPK3ZyY0x0Y2xhNWNzU0UwaXVDeXJMVG5PU0pyU0t0ZzFMY3V0TmRabUp4SVNWbHNFZDdKdXpSSTJNOWtUbWhBMVFPVGs1SHhOWFI0S3hRbWs4ald1dVBNVnRyVisvTW50T1pESjA2Y3hmMG9KaHkxRWFkekZpLy9yWi96ME1TZHd5Zmd1SHJyeEtaYWxqa2J6bk12aWxiT1lmSVNmL3VMd3dlT0FUMUtzTmgyQmhpUlIraUdRcG1rbEVxelNEenQ4MWpiV0Ztc1Z0dGFrZ1RYRnd6UnROMVJvbW5hMXV0SVVpaE9NWnhBTGZqdUhHM29BNkZSdVdzMmNSNTlpYnZhUGVQYkN3elR5TjI3amQ4dXF5THQ4REdVbnRISEN6YVVQUHNhejQ0LzlKM096TXljQi8wM2JPSnNiWk55cWtoYW1GV3N6VEZNYWlUNVNtWWkzR2VoR2E2d3RISTJocGJxZzlvSFZpQm9NQmk4QmhxbXJUS0U0cVNwSHlaZ3AzRHhFWi9PV0dpci81MWR0M2N2cU41ZzI3UmY4OHIrZVlld0RiN0JIMzhYYzJROHpkNU4xdTE3TlM0Ly9pZ25UNWpEMCtvWE1XVnVkM0VVU3JkekVRL2Mvek1ocDMyWG9qYi9nOWhXN3FMVnVXLy80ZzR6OTBaK1plLzh2bUhUamZZeTg0eG1lMzM2TWRYZXhTcDZaODEydVdGcVplTTdHVGR4Ky9ZUGMvcWExNHJ6Nkl4WSs4TWpRUWYzNkRiVUVyZFVkbGJoTUtUWERsQ0p1bUNKcW1CaW14TlFqSEt6elV4K3p5ei9DN1A3dzM3eTVQOFR1RFcraDJhS1dMcjRHQ0ovUGQ1VzZxQlNLazQxTzdmWjNXTGJEdzdBaCtaUmNPSTdSTlIreHlsclJXdnYrUjJ3dE9aZXZYWHNuRzM5NkVhV2VNM2wweWNNOE9zYjY4Wm9xYW9kL2cxZFgvb3ExczR0WnYrUmwxclFBc1FvV0xmd0xXNGZjd05xVmovSGh6eWJoVzcyRU9hdnJrODljVnhubTBudnZZKzBmRnJKMFREMkxYbmcvS1h4SGhiZUVXKzY5Q1A3K1oxNnM5TFB1Tnl2WlBQd3FGbDZZQjdFS0Z2em9SVFlQdVk3WC8vcjRlYzQ0bTdReW80Q21DU0ZjQWpCTklvYkVNRUZDTXVhV0dLMEdwbUhTOCt4ekU2Nm93LzNFYm5hM0RrMEljYVc2cUJTS2s2Rmx1NW4vLytZd1B4bGo2OHZFNmJPWlB5a1BPSWRyaHF4azhadVZ6Q3ZOWjkzNktzb3V2SzdqbUZyZmM3bGpVakY1UU42WWN5aDcrZzFxZ3hEZDhUWXJnaU40ZHVhWmlUSDhKV09ZUC8wZEpxeCtuL0lwbHdKUU9PSkxUQzVPV0kyalI1VEErbW9xSWMzWS9qaXZQVEtIVXNkM0xyem41eXlkbElXdmRBcVBYcjZOR1F1ZkpDOVl3cndueDFFRVJMZTh3WXJnQ0o2Y2VTYjl2RndDTEUyMTJvUklkQ0lnaEttQlFFck1oUFVsVE1PVWlUaWJoaUhCdEZ4U2Q2cTFacnVoZ0FpSHcxT0F2dW9LVXloT2Rvd3RsVHdtZnZsTUZyeThqZkxwK2J5Mkk1OHJieXMrV3E4MjRZTHFFRzBNRUMwK2l4TEgyTG1pbnZuNEdxczd0TXA4bnlyRzVtSFlWeTlpOU1zdlV2N2w2NWh1L1U3UlJqK0JwZ3B1di81OWdENERCdlFmOGNrbis5NXJHMmREQndRU0lZUVFta0NhMWhSejB6U3RqZ1F3cFV3S201WXFhcGFsQmlDOFh1OFVkWFVwRkoyVG92RmpHVjN6UHN2K3ZvWE5KZU9ZV25Mc2orSHJrWW12dXByS1dPdjNhbXNhaVBZb1BzNkxsRUtzWDdhYXpTVUQ4TDIxbWhldHhXRytuRHh5ZTM2SjVTc2ZZL3ZLeDlpKzhqKyttR3F4U2RuYWlXQktpU0dsTUdXcUsyb21GcFNhaWRJUHpSSTBlNmlic01zOExEZFVDWnRDMFZuSk9ZdHJoamZ3NHJLUEtKa3dncVN1ZVRQeEVhS3k2Y2hCZnQrSWk1anVmWjlGeXlxb0JhTFZtMWl3b29yUlU4NDlycVVpMFMydk1QZXRmT1k5T0lkSHYreG4wZU52VXduNGhvOWxNaHRadEtJQ1A1Q2hOMTZVWXEwbFYvUkpwR1phb21hQ0VFaWlFVjNvUnB4d3dFOWRIS1NacUd0enB5WU5iRGMwRkFwZHJOeFFoYUl6azhYRVNZUHdiZkJ6NVhqSHFQYVNjN2o1M0hkNDZNNGZzKzNCaFR4NnVJZndEbVRlajcvT2dsOHZaZEkwUDlIc2ZDWitkVFpQVHZrMG85L2J4OWpnTEJhOU1Ja1BmcjJCb2huM2NVT3hCMlpNWS9JOUx6QjM5VmtzbnpLTWhUK2V4b0pmTDJYQ01qOVJiMTZmeTJaK2U4Zy9sdjNuaHlUN1JuRkptUmdaamhCQ0F5R2xrRjZYSUtwSE9WZ2Z3K1Z5NDlNa3BsWCtJWHIyN0VrMEdoV3hXSXg0UEM1TTA5U2tsQzVkMTMrbWFkcDMxTVdqVUJ3ZG4yYXZLQit2K215VzBLWS9NbWw1Q2N0L2VSRWxwOGg1RElZaVMzTEdYdnNpMEFJRWdLQ0FNSUtvUU9oQ1lHaENtRzZYSnIwZUZ6NnZSMmI2dkdUNmZHUmwrc2pPekVCTHpZYVNxRi9UTkUyYnBDNVZoYUx6RW0yczRQa1YyeWo1OHJtbmpLZ0JaR1g2emt2bmltTE5hY051czVKU0pEb1JUR3VGZ1pIc1JOQlNpbktSVW9xR2hvWmhxR1V0Q2tYblpjL0xYSEhyTTd6VTR5b1dUc2s3cFg0MUljVFpxNS81VWU4T3hFMUlpVUNDS2ExTXFMT0gxRHJjcVEzdkpIcERMMUpYamtMUmlTbTlpclVyVDkzYStURm5uemtNMkc4TG13U1hrR2dJMjJLVFFvS1VkdStvZGRoYnJaSlpVVnBIRkFtWHkzV2h1bklVQ3NYSm9udGV6aWpMU2t0TytrZ2NzbFdycE4wL0twT1ZIWVoxYUtrVzIvZSs5ejJYRUdLaU9yVUtoZUprNFhHN3podDVacitVaHZoa25LMTFsQkdXS3lyYnVxTmFpaHZLd3c4L2ZBSFFUWjFhaFVKeEV1bjIvQ1BmTFhWYWJUTFJGSi9ZRmkvQm1xNkx0RVF0T2RMSWFiRlpDSi9QZDU0NnB3cUY0bVJUV3RKclNIdFhGSzNWSFUwWVphWjFHTEkxRWFvNXl6eEl6RjQ3WDUxU2hVSnhzc25Kemp6SFliRzFLZnV3OVVwYVdWSnA3VDgyWkdLc2tXWmJhMUpLY2UyMTE3cUVFTXBpVXlnVUp4MjN5L1dGQWIzeVhTa1dtOHNTTkUxS0JGaHh0amJ1YUd1TVRRQml5WklsWHdSeTFDbFZLQlNkd1doYjl1aDkvWjJpSnExOW96aFc4eVhpYk02YU5vZkZCcENSa2ZFRmRTNFZDa1ZuNGN3QmZkc2tFR2diWnlNMXppYWxpU25OVnVValViODJScDFLaFVMUldlaVdteldFZHNtRHRuRTJISEUyMDB5MFdia2RZNHFFRU9KY2RTb1ZDa1Zud2VOMkQ2ZDlqQzNaTDRxem5pM3BqclphYk96YXRhc25NRmlkU29WQzBWa1FRZ3o2NWZkbTVYUWtiaVJVTFZuUFpydWxkb3hOOU9uVFJ6VzlLeFNLVHNlbDU1L2J4eEl5YStBa0doSmhUOVdWV0pVZFZoZUNsSTdzZ3NmalVjS21VQ2c2SFgyTEMvbzdyTFIydFd4WUk0eGF1eEFTd29hVVVyaGNyclBWS1ZRb0ZKMk5uS3pNTXh5aTFrYllyRGhid2lPVkNNc1ZGWnJkSXlxRVVNS21VQ2c2SFI2UGUxQ0txTGtjRmh1dDRwWklJTml1S05ZZHpsS25VS0ZRZERZMElZWTRyTFQySlI5cEVnZ2FJR3BxYWdaenVIV0JDb1ZDY1NTcU56RjN6b01NblhvZmM5YnJ4L09SZlNzZnY3L1FLV2pTbXNkR3N1VERUaUE0TExhY25KeEI2bDFSS0U1WC9MeDQveTlZVkFsVXY4RzA3NzlCNVRFL2hzNmFGLzdDdXA1WHNmYWxYL0RrZUUvYm03ZS94SVFibDdJbTl1bGU0ZERTZmtXa0xkSzFPeEFTZ3FickJ1RzRaYkc1M2U0eTllWXFGS2NwTGJ0NHMzRWdGNVpBN1padFJJY1AraFRMWWNMVU51cVVqQmpVWnF0OGt0S0xlSExlRk1aN1A5MUxMT3lSVjV6R0hSVnREeWtNMHhTNkFXNHBwZEEwclZTOXV3ckY2Y1pXNXQ3Nkl1dUNZZXBpSGpiZitCSFJZSUNvdDVJSk5kZXhkdDQ1YmVOVHNVcGVmUHJQTEY1ZlJTMlpERHQzQ2d2dnVvQmhPWlU4OC8xbmVHSkhuTmlPUll4ZFBaWm5GMS9EYU9mUDdsakw3WS9vUFBxbmJ6RCt6ZDh3Y2huY1VCcG0zWTVxYW1PWlRMenBOaDZkVkl5djhXMW0zUG9PZVJkbVVybTlnZG9tS1B2eU5CYmNPS1JQVzBzdEdWOFRKbEpvZ0c3YXhtTTA0WW9LSVFhcU4xbWhPTjBZeHFPL2ZZU1ZNL295YXVaMzJmaUhPZHhSTW9qNXp6ekNXNm1pUm9nMWp6L0RFNDFqZUhiSlkyeGZjaWZYQkZjejYvRk4xRkxDbmIrOGovbkQzWXk2YVI0YlUwVXRIVFVOTUdVV2EzLzdDRy9kTzVEMVMxNW1UVXVyYTh6d0cxaTUrR0UyUGpPTm92VXY4cE0zUTcwdHk2eTl1QUZTQ09GMmljUWQzTjdFRFVLSUFlcE5WaWhPUjNTMjdnaFFka1l4dEZUeVFhd3Z3M3FrYzFlM3NHeDlKdE52dW9oaE9VQk9DVGZjTm82ODk5OWhYZU9uZU5xZVozSE5pTVRhd0x6U015bUxOVkFidEc4czVzSXhCUWxoN1hFT2QweklaZU03TzBvNkVEVjdzUXNrQnhWSjNOWU5TdGdVaXRPTXl0WFBNR05aSmY2bU1HeDVrSFdFcVF0NjJIeHJCVGMvK0QzdWRBYW9tdnpVVWtCcFQ2YzQ5YVdFajlqVENQVDREQy9FeWpORWRTQk5ESzZvT0EvK0hlbVhZckVKQ1pwSW1hWnJ5NXUyYTlldVlpQkR2YzBLeGVsRnlaUTdlZXVaYVl6dit5V1cvdUVSWHAxNUptZGRkVGNiZjVzaWFnRGQ4eWlpbmowMWJkM0pXdklvN2ZINXZzN0t5Z2JJenMzNDJieGJjanEwMkZMUUNnb0tlcXUzV0tFNFRhbXBvSmt2QnFBQUFDQUFTVVJCVkx5NGhES2dmRTg5SmFYRjZlK1hNNEtaNDhPc2VPRnR0cllBTFpXOHVQUU5hcy85RWhPUHU3QlZzZXAvSy9BRDBjcTNlZUxOTU9Nbm5Na1hCNStSNXhDeTFucTJGS1JwNHZiNWZNWHEzVlVvVGsvOGxRMVFNb1k4L0pSWGVpaWI0dW5nbmxsTXZ2ZE9hcC8rTTdObXI4UWZ5NlJzL0JTZXZXc01SY2Y5VmVXU1Y3bWFhZGZ2b2pLV3grZ3BOL0RvcER5YWQvZkk2OEJhYTExR0pSQ0dhVWdSalVidjlIcTlUNnUzV0tINGJCaUdRV1ZsSlFNR0hFUEkrdU5WNnNRNWFYeWJHYmUrejVXL25jTU5LWlpnWlhYZGduNWZ2dmtkSUdBZkFrSUlJZ0lSRXdKREU4SjBhWnAwYTVwV3BNNm1RcUhvN0dSbCtQSWNibWdiUzgwNTVRTWttcVpwQmVxVUtSU0t6bzdYNDI0WFl5TmRqQTF3Q3lIeTFTbFRLQlNkZ2g0WHNIemxCV2x2Y3J2YkNGdjdReUpzbWRQNGJCVW9Db1ZDY1VKd2FWbzZWNVEyVnB0VnFLc0JlZXFVS1JTS3pvNm1pUnpTeGRaa0czRVRFdENFRUVyWUZBcEZwMGVJOXNLV2FyblpYVlVha0sxT21VS2g2UFRDbHRBcXAvdVpwdXRBSm9VdFM1MHloVUxSQlN5MnpCUlJjMmllYkNOd0dwQ3BUcGxDb2VnQ1pCekdEVzFqdFdtazdhZFhLQlNLVG9lM3ZYZWFUdFpRd3FaUUtJNkdFSnRYUE1PRTY3L0wwTysvUnZuSkU3WjJDWU4yQWlkYjU0Y3JGSXBUbFMxL1p0TENqNGlpczI3UlF1WnUraFFicENyZjRhRmxmaVkvdkpEdHY3eVU0N2NrcFo1MS8vTUdhNnFQNnM2dXcxaHMxa1o0TUdsdFMxQW9GS2NvV3pkVlVEUm1JRDZxZUcxUE1SY084Uno3Z3pRMlVKdmRsd3VISHU5Y1l3T3ZyVmpOYTBlM0ZrdnIwRXF6VExYRUpuZ1FVa3FwM25xRjRyUFQyYVo3bFAvUGs4eFlVWVcvU2NmWFBST2ZubGphVXBqZGs1dC8zSDZZWk8ybWw1bjdtM2RZWDZQajYza20wMmQ5bmZuakM0aXVYOHFFeHoraUxnaTUyWm1NbjMwZnowNXFXLzRhcmR6RWdsKy93aXM3L0VTemk1bjQxV2tzbkg0bVJjQzZSZmN4TjNzMkc3OTFadUxPNjMvRDBOL2tzL3pIZVN5NGZ5MWJtOEtRblV2WjViZng2bGNyMHk1emVmUzJjeWdCeFBDcDA0QWdpZWtlZnFBRkNBcUlTdENCT0NBMUVwYWJRcUU0eFNqNzZodzIvdlltcHZZOGgwZC8rd2h2M1hzT2ZTK2N6Y1kvcEptUVcva2FzeDc5aUpKWjgvaHc1UzlZZTFzKzZ4NWZ3cUk5NEJzL2k0MFBqcU93KzdrOCthZEgyb2thc1FvV0xmd0xXNGZjd05xVmovSGh6eWJoVzcyRU9hdnJELzhDU3k1bDVSOW1NNzE3SmxQblBzS3Jzd1phTjdSZjV2TFFXaitIMVNxUm1CT2VHTXFtb1FHR3VnUVVpbE9VbWlyS2V3NWltQmZLdDFkVE5yeHYycnR0WHYwT2xjT25NRzk4QVQ0OEZJMlp5cnpoRGF4WVhYSEVwNGh1ZVpzVndSSE1tNW13MEh3bFk1Zy92UytiVjcvL0taTU03WmU1ckg5ckcvNzJXdFcrVjlUQ0RjUklybE5RS0JTbkJsdDU2STYvc0tiSlQxMHNrMmszcms3c0RNMStoQW52VCtQVmVXUGFOSW5YTm9iSkt5NXdmQytMa3BKYy9KWDFSQm1Zc29vdlJkZ2FBMFNMejJxektMbW9aejYreG1wcWo4TnZrbGptRXNhZjBLcWpRdU1ZN3F4UUtMb0t3MWk0K0dHV2ZqbWZDKzk2a0kxL21NWFVuaU1TTG1tS3FBRVU5Y2pFWDEyUFAva2RuY3FhQUhrOUNnNHJhZ0MrSHBuNHFxdXBkQ2hKYlUwRDBSN0ZpYkhobjdHZ3pGcm1RbDU3clpJcFg5c0lXMWhkQkFyRnFVaUk4bW9vSzhtQ3htckt2Y1dVZFNBeW82ZDhpWkovcjJYUkpqOVJFb21FSjk3UFovcVVnVWQ4RnQrSWk1anVmWjlGeXlxb0JhTFZtMWl3b29yUlU4NmxEQ2dweWNlLzVTUFdOK3BFR3l0NGZuV0ZRNkU4K0x3NnRUWDFSSlBmUzcvTUpROGlSL1ZyeTRRckdsSVhnRUp4S3RMQUI1VUZuRlVDN0syaXR1ZWdqdXZQU2k1bDZkd3djMy96Q0NNZnNiS2k5ODVtWHVsUlBJMTNJUE4rL0hVVy9Ib3BrNmI1aVdibk0vR3JzM2x5U21JNGQ5bmwxM0hQbHFYYy92L1dFZTArZ0trajhzbE4vbkJmcnBreWtGbS9lWVJKZSs3a3JablEwVElYS1dVNGpYWG0rTDlBQ0lrcFRTbWtsQjhBSTlWRm9GQjhOdFF5bCtQQVlaYTVtRkp1Y1kyNDZvZTBsbnM0RjdwRUJVSVhncmdtaEtsSktmM3FiQ29VaXM2T2xMS2xZMnZObnAyYlFBT1VzQ2tVaWs2UGFjb1doNERKZElKbWVhUzRwWlJOUWdoMTFoUUt4Y25uTU10Y0RNTUlITVppYytvYW1wU3lRWjFOaFVMUjJZa2Joai9GWXBQcHhVMmdTU25yMVNsVEtCU2RuV2hNOTNmZ2Zrckh1Z01BTk1NdzZ0UXBVeWdVbloxUUpCcWdmV3hOdG5kRVFkTjF2VnFkTW9WQzBkbHA4Z2M3Y2tXVFltZG5DOXlSU0tRbUp5ZEhuVFdGb2hQeHlZRWFkUkpTK0dEN25rREhvaWF0RmFPSlFXenVnd2NQSGl3c0xGUm5UYUhvUkF6bzAxT2RoQlNxNnh2dGNnL1RGaldSOEQ2bDdZSUtJZEEwZ1RaeTVNZ2FqcllIUzZGUUtFNE9rYm0vV2hvNmpDdjYvOXQ3OC9pbzZudi8vL1U1Mit4TGxza2VFaEtXRUVSQUsrRHZpbGgvNk5XcWJTOVlXclM5U2x1K2FQdXIxRzhMMVFxOXRxQnRvY3RGYnl0V3IxaGJzRnFnVldwUlJCVFVGbGNVTlN5YVJDQVFRc2pDekdTWm1YUE81L2ZIbkhQeW1aTXpTYkJzd3VmMWVCd1RBbWFaTS9QTTY3MTkzdFRhQ1krK28zYjM4OGVOaTR2clRCV2w5SUFOWkRyajNESkVETEJSU3VrKy90QnhjWEdkcWRKMC9hQU5haGx1emR5WWJBU2thYkRwdXY0eGYraTR1TGpPVkNXVGFyT0RZM05zK1NBa3ZmT0FhcHJXeUI4NkxpNnVNMVh4N3A1bWh4QTBhK3VIbEtaaHNrRlIrTjVrTGk2dU0wRXBiRmo2QTh4L1RVMy9zV0FhZm43SFoxb3hoQndiSVNSZEdRVkFPem82NnZtRHljVjFaaW5SOUJZVzNYazN4bDkzRzJxKzlrc3MyTnpFbkRJN05FRFViWDRlYTNlZnJMTmtXN0JwN1N2WTNuR2lQNitNNnhiOUNydlcvUkx2TEJnSEJVQkQvYjQyQm1ZMjEyYU9VeEhydndJQVdsRlI4UkZ3bkk4WkZ4Zlh5VlB5UXl4WitpUjJWTTNBK3NkL2hzMEx6MGZUd3c5Z3dmYmpnVlFQZHJ5d0VXdjJuS3pULzF1d2JzMUwyTlp4Y2o2N1M1RVJUQWVTaVR1K3Y3ekQ3dFFJb0lOazlMU2xDd2drSFlxYTFtNFhnQW44R2NYRmRmb1YzZjRTTm1BU0hwMTdmdm80NzNGWFlPbjFiK09hcDk1RDY1VEppRGljTkx0cDZmL0Zrc0xiOFBMY1N1eDQ5T2VZOTJ3N29sMHFrbnVXWWZ6akFPUVJXSHpmWEZ5ZkEwUTNQNEJKYXlWY1Y5aU9IUTN0YUZWS2NmM2NHN0Y0U3ZvNDc4UzJoekIrVFNIV3IvdzhhZ0VBSDJMUjF4NUc5THMveDMwWHR1Q1JPKy9EaWtZVmlWUVB0djd3QjFnTndEWDhhanorMDh1eUh6K2VvVzVzWDdzYVM1N2FoZm91SUZnMkJuUG1maG0zamdzNi9GdTZ4d1kxSFlCT0FRb0tDcVMzdmhOaUxCYWxlanJIaG5SbHRFNFFCQTQyTHE0elFFME5MVURWWkFNcWFWV1Bya1R3cVE5Umo4bnA3VThEYU9MTlA4RHJOMGV4K3M2N3NXN0tRcXovUWw3L2Y5U3BZc0tpLzR2bFpUSmF0eitLR2YrOUdsVXJic09OaFlOOWQ0WDQray92d2RleEUvTm1QSTNxZXhjTmJUY0NHMmEvdFI2M1BRVXMvT25QY1gxWkNuVWJmNCtiNzFtUDZvZHZ4cFcyQ1U5ZDErdlJQN2VtQTlDSjJaUkxRVFZLSVlHQUNDSUVRZ2dGUUZWVnJlTlBKeTZ1TTBPSkxoVXVSY3BjZmVlVDRFcXBKeTVuVkRBQ1U4clNLNFVqVTY3R0RRVWY0Mi92bmFJRHRSVVpybFFQV2p1aWlNS0wycXUvaWMwUHpNSTBoN0YxWFV2dVEvLzhHaE9DRWlvUUFKUkNBMU04QUVCN2Vubys0RThuTHE0elF5NmZoRVRTQnJFdUZRbFpHblRQNXlkVEFHVTVRTFR6MUd6amRJMmJnY2UvT3dhNzFqeUE2Vis1QzlQL2F6MDJ0S2lPUDF1eU4zN1FCalFOOXBZUFFpaEpUOEpUUXZwR3F1amV2WHM1MkxpNHpoQlYxeFFDZXo1RVhVWjQyb1JvMlVnamh5VURTQ0Z4d3RhZHg5RFVBZ1REbmpSNEZCbXVWT3FrVlJRVExTMUlqTDRNOS8xMEVWNy8wMTI0YjJvUFZ0NjlHbXNkQ2hIUjlnTXRCc0EwQm1yR1pWUkVLUVVGSUJDU3ZremlUWjQ4K1NpQUQvbFRpb3ZyREhCc0YxeUI2K1hYc2VTaE90VEh1OUc2K3lVc1dOdU9LNzh3THAxZnl5bEZiY0ZCL08zbEprU1JRdXZ1NTdIcWZkWDJXVHdveTVGUi8vWXUxQ2VCUkR5S0tBdkNJenV4YVhjM2dCVHFOeitOVlVjcWNhMlp2QjllaWVxT1hmamJlOTBBdWxHMytTVnM2clIvbDBHVTViUmorOXROaUFLSWRuUVBHWVN0MjUvQU5YYytnVTB0S1FCZVJBb0RjQ1g3ZzdRM2dZK09IZDdaZzZ5dEh1bExwd0NJQUpta2l3aFc4UUNBcnV2NjI0SWdqT1JQS3k2dTB5eWxFZ3NYemNLUzN6eUphMmEzQStGU1hIbkRyVmcreFd2OGd6TE0vL1psbVBmZnY4S0UzOHNvUGU4Q1hIbGVBRTBabjBUR3RKdG00TXA3bnNZMU01OEV3aFdZZjlmM2NHdU44ZGMrTDNZOS9pdE1lcThkMFp4S1hML3d4cjdDUWVHL1llbE5IK0syZXhaaFZkS0RDWmRlZ0NtbDltK3lFcmZNbll4NXYva1ZKdndlQ0pUK0crNjdieWFtRGFIWHYrd0xOK1BCanZWWTl2MGY0TFl1d0ZWUWlldS9lNk5SNGUxcjBLV1VmdUFVaHBKMFZWU242ZVBYQUVLb0xLYmRHaUVFUkJSRldkZDFDWURjMDlOenE4dmwraGwvVm5GeEhiOCtUUXVUbzVzZndLU25SK0NaKzY0WVludkc2ZEhob3gyL0xMN3NQMTlGZWtseUhKbExrbnNCa2hJSVZFS0lMZ2tDVlNTQktvcWN6ckdabGRGb05QbzJmM3B5Y1hHZEtkcmRjR0NmemEyeE9UWktqSkVxb3pHWGtuU09qUXBzbkRwcjFxeTNEU3B5Y1hGeG5XN0Z2L2FENVMzSXJJUm1nTTI4Q0NHVWtMNFRkQ1ZDaUhGS09QU3RXN2ZxbE5MdGhKRHAvREhsNGpwN0ZaeCtLM2FmNGE5eVZkUGVhbXJ0N0FjMVk1U0tBc1J3YmVhTWFCcHFiQjhiakxlNnFxcmIrVzNuNHVJNjNZckd1OTkzQ0VQWmNKU21ZMUJZYm8yWTdSN0dINmlaWjR2RllxL3poNVNMaSt0MGErL0hCeHNHZ2hySk9EbVhRQ0JHSDVzZ0lDUEhCa0QvMXJlK3RSM0FNZjZ3Y25GeG5VWWQrOGFpWHpkbGdacERqZzJVQ0FTQ1FLZ2dHSTZORVgzeXlTZFZYZGRmNW84ckZ4ZVhreWc5K1Y4anBhcXYxVFVlWXNOUU5STnVmV2V3TWVFbkNCRWdFQ0ZkUENDRW1IMXVGSUNlU3FWZWNibGMxL0pieU1YRkJhUzdZUStuUERpU1VLQ0JJSjdRVHVyWGEydHIyNWt0REtYcEFnS2w1dFFCQ0ZLVUFGUUVxQWlxaTJtd0FWWXZtMDRwcFMwdExhOE1HemFNMzAwdUxpN29GTmdSQ3dLdUFQeDVRZmg4ZmhTZTVLLzU0VWQvcjNlQW1nWkFNMWxGQ0tGRUVDQUlBbVJaaHFLNDRISzU0SGE3MDhjV21ZVUQwN0ZWVmxidUJ2QSt2NlZjWEZ5SFUyN0FGVUJoVVFsOFB2OHBDSFZwM2R4dmZyM05Gb2FxQnRSc1J4YVpQV3lDa1Y5TGcwNFFCQUZNbnMyQ202cXFXL2d0NWVMaU9wSlE0QThFVDluWDYrcnFlZzNPdWJXK2ltamFrQmt0SGdJRWdjQ0NtaWhZN1I1bUtBcmpmOVNqMGVoTC9KWnljWjNib2hUUXFKRGRxYlZ0eDhydmZRV2Z1L3hpVEwvcVAvRER2emNEQUpxZi9DWXV2ZVJpNC9vbS90dzg5SzlaWC85UkhUTHphN2JDQVhUTGlCbVRCb0lnZ0JoUUV3VVJrdW5ZR0xoUlNxbWVuNS8vaXA3ZXZsektieThYMTdrcFFvQjRVc3VTVTR2aDVmc1c0MWw4Q3l1ZStnK01WR0tJSVFBQUtKNzFNTFo5SVlGRSs5K3g0TVpuanVkTEhycjJjMWZ0dDRXZ3htVVBReWswVllja3A2RW1zbzdOc0c5T1MwYzFUZE9lNDdlV2k0dkxXYzM0NE1Na2FxLytIRVlHQUxnQ0NMQkg0THBjY0IzbnV1S2VucDV0MmR3YUlkQ1FzWEtQVWwzWHFKNTJiRlFRUklpQ0NGSHY3Ty9ZekxsUkFIb3NGdHNjRG9lL3ptOGdGeGNYRTM5aTQ1My9pZnQzSkpHTUo0RmZYSXZQL1FLQU1nVjMvbmtKcHJxRzlqbGUrK015UFBqa2R1eVBLeWlhZUEzbWZmKzd5TzlzZk5jR05hdHdZTFI1NkFSSUE4MzRUTWw0SE8zeE9BUlBCRlZsUG9qRW5RYWJlZW02bmdHMzNOemN6VHdjNWVMaXlsUWVydjdwTTdnYWU3SHlocm5ZLy9XLzRkN3B4N2VKWWQrVFA4Q1AvMTZCT3gvY2hLbTVjYnkyOG5iOCtIdS9QZlRlMXA4MEdzWkt0WU1ObE9vZ2hJSVFLZ29pUktJaHFSSjR3aUVFalRZUFVSUWdlbklncEMyY2tERXZ5cFJVZFUzVE52SWJ5Y1hGZGVLMEZ4di8raUZxdi9wZFRDMTJBYTQ4VEw3bEc1aDQ5T21YNEpoYjZ6OUtSVWg2T3hVaEFESENVRUVVSVlvaVJFbUNJSXFpNWRqTWtCUjkrL3UwenM1T0RqWXVMcTRUcUhhMHQvdFJWQnpvKzVDckFnRnYyNDVzWWFnRnQ0dzJEd0FnU0VNdFhRMFZSUkdTS0tiQlpzS05nWnJWenhhSlJGNUJla3M4RnhjWDF3bFFMbkp6NHpqY0ZyTStRbnViOS96bWpRUDJhbWpLaEJySlBESFhPQ2szL2YreVVCTkZDWklXNjZ1S21tK1pZNHlzQWRSa01ybUIzd3d1THE1UHJJdzFnYU53OVJkSG91NlIzK0xsNWdTQU5yenkyd2RlUXY5Smc0ekNnWFd3cE1Fb1FSUkFvTk5Fa2tJVUNYUUtTSklJaWNZZ3NZNk55YlVScGpxcUhUcDA2TytWbFpVTCtkM2g0dUlhaXBxZi9DYStmRi9mcXVKM2Jyd1k5d09ZOU1OTitNWG5BcWlZOVhQOFY5c1MzRC92U3Z3NHJrQUxqWGpYd2EzWkczTXBUT01sQ0JCa0JYNnRHL0dPSTJqc0pKRDlaUmlYbXdNNU1CSmt4SWdSNk8zdFJXOXZMMGtrRWtpbFVrUlZWYUxydWtBcGxaRGV6T3BTVmZXUGdpQmN5VzhaRjVlelBrMWJxb1lxU29HM1kyRVVWcHk4clp5cXFyNDR2S0pzSllCZTlHMmpNcTl1UWtnQ1FJb1FvaEpDZEZFVXFTVEpWRkVVdU53dTZuYTc0WEY3NFBWNjRmUDdFUXdFSUVpU1pEcTJqT3FvUFJ6dDd1NSttajkxdWJqT0xSRUNTRVJIVjlmSjIvSFUzSHpvVlljUU5BVkFKWVJrYnFVeTJDUUlBa1JSb0ZadVRSSWhTUkprU1lLc0tIM0ZBM3NSd1ZZZDFlKy8vLzROQUE3d1c4M0ZkVzZwUUVtZ0szWnlEdFdtbERiOTE0OFc3MkxBbHJLRm9Uck1JNHJNblFiVzJGUWZ0eVJSU29OTmxxRW9TcDlqWS9Oc2dpQ0FvYU1PUUx2cnJydDZVcW5VT242YnViak9MUlVwQ2RCRUhFZWFtMDY0YzR2SDQ4ODl2K201bEpOYkE0Zzl2NWFHbXpFWGFvZWFKTXVRRlFVdWx3dVNKS1UvYVB3aktvb2kwVFNOQ29JQVRkTW80OXJVQXdjTy9MV3FxdXE3L0ZaemNaMWI0ZWdGZ1NpT0pMcHh1QzJPMkZFUlhja1RjNEx1SzYrODhuWVd0NllDMUJ4OFQzT0lHdEoxYUpwR05VMkZxcWFRU29sSUprVkl2U0o2WlFrOUxxVVBiRXl1alExSE0yWkhSNHdZc1V0VjFmV0NJTXpndDV1TDY5eUNXNkZiUmFFN0JrcUJ6RlVwbjB5SlpPcHZseTFhZE5UbTFGSUFVZ1JRUWN3d0ZGUWdvQ0lCWkJGUUpNQ3RFSGdVd09zQ3ZHNGc0QVZDZmlBM0NCVGtBSUlzeTdDNU50Z0g0NDFSS3czcFNRUWVqbkp4bmVPUU94SGEzWGpnVlFlM2x0SG1rYkZpenpoM1RSVFRvYWdraXBBa0ViSWtRcFlrS0lvTXQwdUIxK1B1QTVzb2l1WmJhb2FsekpIaFZuVTBQejkvQzZYMFZYNTd1Ymk0UHFrMFRkOCtZZWI4eGdIY210WjMvbHJhWEltRVVGRWdFQVdSU3FJSVVVekRUWllrS0xJRXR5TEQ0M2JCNzNWRFVCUUZzaXpEN3R4c0RidFdFUUdBMnRYVjlRUy9OVnhjWEo5VUJ3NjN2akNBVzFNTnQ2YVQ5SlozS2hCQUVJamgxQVJJa21BNE5SR0tMTUZsdVRVWEFsNVBIOWdjaWdqbWlGWEc3Q2dBYmZyMDZlc29wWHpaQ3hjWDEzRkxwN1J1NmxlLy8zNFd0MmJNaC9ZVkRkSmdNOXlhS0ZEVHFhWGJPMnh1emVOR01PQ0Q0SEs1a0FWdUdhNk5EVWRmZi8xMXRiZTM5M0YraTdpNHVJNVhSOW82bjIxcTdXU2hsalN1Tk5TSWVaSkh1bjlOTVBZYW1DMGViRzVOa2ZyY21zL3RRc0RuUlk0ZGJEYTRzYTdOUGhpdnJsbXo1a2tBOWZ3MmNYRnhEVldVMG9ZZjNmK0hIWU9Fb2RaSnVRUkEycTBKRU1WMGJrMlNSTWlpWkJVTVhJWmI4M2s5Q0FXOHlBMEhJSGc4SGpqQnpWWWhaVU5TRFlBMmQrN2NhRzl2N3gvNHJlTGk0aHFxV2p1aUd4NWE5M3pDeWEwUklHVVVEVFRBUEVneTdkaEVVVENLQlFKa1VZUXNHN2sxMllDYXg0V0F6NE53d0kvOG5GQWFiRzYzdTE4NG1xWDlJNlAxWThPR0RVOEFhT0MzaTR1TGF3aHVyWEhadzArK1pZTWE2OWo2V2p6U1JRTUloRUMwaWdacHQyYk9oQ3F5RExkTGhzZWx3Ty8xSUJUd0lTOGNRRkZlRGdTZnp3ZTMyMjI1Tmhadzl0WVBXNjVOL2ZLWHY5elIwOVB6R0w5bFhGeGNnN3ExOW1OUC8vS3hwM3R0SWFqcDFsU1F2aFY3cGxzVEJVTFRiaTBkaHFhQmxsa0o5WG5jQ1BnOHlBbW0zWm9raVJEOGZqKzhYbStHYXp1ZTFvOC8vZWxQajFOSytRbTdYRnhjQTdtMVBYZi81bzl2T2tETmRHME9MUjVHMFVBVWpSWVBlek91REsvYkJiL1BjR3VoQUlyeWN3QUFRaUFRZ00vbmd6MGtaZURtMVBwaFZVaS84WTF2SE92dTd2NDl2M1ZjWEZ6WjFOemEvdlFEVHo0M1dHNHRveUZYTU55YUpBcTBIOVFVR1I2WEs4T3RSWEpEY0J1TFRJVndPQXpXdFExUUpjM3EybWJObXJXR1V2bzZ2MzFjWEZ4MjZicis1dlJ2L0hDSEE5UUdjR3VBS0JCSWdqbGQwRGRoNEpKbHVKVjBNNjdmNTBFNDRFTmVPSWlpL0Z6cmF3bzVPVGtJQm9PV2EzUEt0Ykd1amRrYWIyMXIzcmh4WXpJYWpUN0tieUVYRjVkZERVMkhuOW5WZUVqRjRKVlFIU0JVU0I4a1NVVkJnQ1NKaGx0TFEwMlJtZllPanh0Qm54YzV3UUFLY3NQd2V2cDJtd3I1K2ZrSWg4TUlCQUx3ZXIwVzNFekhObFRYRmc2SE4raTYvbmQrRzdtNHVFeWxWUFg1a1orYnQ4dkJxUTN1MXNSTXR5WWJCUU9QMnhpZDhua1FEdnFRbnhORVVTUW40K3NLQlFVRnlNM05SVEFZaE4vdnQzSnREaE1KQTdrMmxSQ1NPbkxrQ0hkdFhGeGNsbmJzcXQrRXpHWmNDMnlHVzFPSDZ0WmNWbnVITVRybDl5STNGRUJCWGhnK2p6c1RiQ1VsSmNqUHowZE9UZzdNUXNKUWNtMW1NWUYxYmNYRnhmOUlwVklQODl2SnhjWFYxZE83WnZMczd4K3dRUzJSemEwSlJpWFV5YTBwc2dTWHkyenZjQ0hnOTFydEhTV1J2SDVmVy9CNFBDZ3FLa0plWGg1Q29WRFdRb0pUaGRUZTEwWUlTWDN3d1FlUEFUaklieXNYMTdrckNoejg2K1ovYm9OendZQjFheGw5YTFZbDFPN1dGS05nNEhhbjJ6djhYdVNGZ2lqS3o0SEhyZlFIR3dDVWxKUWdFb21BTFNSNHZWNjRYQzVrRzVMUGxtdWJPSEZpZlhkMzk0UDgxbkp4bmJzNmNyVGp5YS9lK2FzT20xUEw2dFpJaGxzVE04NVpjeWt5WElvQ3IxdUJ6MnNVREVJQlJISkRLQ25JYy96NkFnQW9pb0tpb2lKa0t5VFlxcVRVbkVxd3IrZ3pYZHZVcVZNZjAzWDlSWDU3dWJnR2tlSTc2MzRrVmROZS9zeVhibnRqQ0c1Tk05eWFiazRaU0ViZldyOHFxSEV5YnNDYmJ1L0lEd2RSRk1tRklrdlp3UVlBNWVYbE1Bc0paa2pxVkVoZ2grU1pHVktkZFcwN2R1eElIamx5aE9mYXVMZ0dVNmprclB1UmR1NXBmS2FwdGRNK1haQUFrQ0RNQmlyRHJlbkVPa1NTV0U1TnRvMU5lVHpwazNITjB6c0s4c0lvTDhyUCtqMEk3Qi9Na05SMGJRUDB0bG11alpsSVlKMWJxcmk0K09Wa012a2Ivc3psNGhwQWtaRm5sV3VMeHJzZnZYRFc3UjhiYm8yRld0L0FlLy96MXFoSUNFMFB1SXMwZlNxdW5PSFcwaE1HWG9TRGZrUnlzb2Vnam1BckxDek1HcEk2akZ0UlNaSXlDZ21zYXlPRUpMZHMyYktLVXJxRFAzdTV1TEtJQ0VEMXBVQk9CU0I3UHRVL2lxN1RkeC80MHpQMmdvR1ZXeU5BMGd4Qm1mUFdxR0NGb0dtb1paeUs2eFNDNXVlaU1DODg0UGZTTDBBdExTMUZlM3M3b3RFbzR2RTRlbnA2a0Vna2tFd21rVXdta1VxbG9Lb3FWRldGcG1uUU5BMjZyb05aMDZkUlNnVUE2dFZYWDMyNHJhM3R3ZHpjM0pYOEdjekZsYzFlaUVESnVFLzlqL0hobmozcjcvanZ4K0lPVUVzN05rTFNCUU5DTkNOOVJRVlJoQ2pMa0Z3dVNDNFhaSThIaXRjTGw5OFBkekFJYnpnTWYxNGVnb1dGeUIwMkRBVWpScUIwM0RnZ0ZCcTZZd09BVUNnRXA5NjJMSTI3R1NFcEhKcDI4L0x5TnFaU3FZZjRzNWVMNit4VlBCNWZYVk5UczRjSlFUT2dSZ2hoMStycEFOS051S0pJelZZeVdaYWhHSnZjM1c0M1BCNFBmRDRmQW9FQWNuSnlrSitmajVLU0VvUUdnWm9qMklCMEljSHNiV09INUxQTmt0cWFkblZDaU5WcFRBaEp2ZnJxcTQ5UVN0L210NStMNit5VHJ1dnZQUHJvb3kraWYxNk5oVnJLTURzYUlVUTNKcGlzdFo4bTFFeXdlVHdlZUwxZStQMStoTU5oNU9YbG9haW9DT1hsNVVNendVNGZsR1VaWldWbEtDd3M3RmNsZFRoeGQ2QkNnZ29nOWRuUGZyYXByYTJOaDZOY1hHZWg5dXpacy80NzMvbE9OR3NJMnRlM1pteDJKMW5kbXVuVVBCNFAvSDQvUXFFUWNuTnpVVmhZaUxLeU1zaXlQS1R2U2NyMkYwVkZSZWpvNkVBMEdrVlhWMWZXWEJ1Ylo5TjFuZXE2Ym02MTBpaWx4SEJ0UWlRUzJkVGIyN3ZDNVhMTjUwOEZMcTZ6UThlT0hYdTR0cloyN3dCdXpkbytaYmcxYW9MTmJQaG5uWnJwMXZ4K1A0TEJJSEp5Y2hDSlJGQlNVb0tpb3FJaGYxL1NRSDg1Yk5nd2RIWjJJaGFMb2J1N093TnVaZ0hCdUtpdTY4UldTS0FBZEVxcFZTWDk0eC8vK0w5ejVzd1pLd2pDZFA2VTRPSUM5dTNiOTZuOTNsVlZmZW1lZSs1NTJRYTFYcHRieThpckFhQ0VFT3R6R0NZSUFKREdSdnF0d1JIclk4ZjdXQTBJTnAvUGg3S3lNc3UxZFhkM1cyQkxwVkoyMTBZMVRTTzZybFBqRzlNTngyYm0yNFJ2ZnZPYkhkT25UMyt3b3FLaUZrQUpmMXB6bmV1cXFLajR0SDdyemErKyt1cUdWYXRXOVRpRW9MMndGUXlNdkpwdU9EVnFPRFJxNXRMTUlrRTRIRVp1Ymk0S0NncFFWbGFHcXFvcTFOYldEam0zTmlTd0FlbEN3ckZqeHl6WDF0dmJtd0UzdHZYRENFZEIwNExSMTBZb3BXb2F6a1Nvckt4OEl4cU4vazhnRUxpWFA2MjV1RDZkT25qdzRCOHZ1ZVNTSmdOcUxORHNJYWhxVGlZUlFxeThtcjFZNEhhN0xjQUZnMEhrNXVZaUVvbWd0TFQwdUtFR1pDa2VPUDFXWVZ0QTJFRjVXd3NJZFJpU1o4ZXRVb1NRWkRBWWZDS1pUUEtSS3k2dU0xUjFTNmFpcXVwbXJJMzIvN3Q0UEw2NnJLenNiV1MyZGxnaHFDMnZaa0hOVmdXbDJhREd0blo4VWtjN0pMQUZBb0dNRnBCUUtPUTRsV0NEbTFrbHpSaVNOeCtJNTU5Ly9tRmQxN2Z3cHhBWFYxclJ1clZZTXU4YVRCMWZnNnFxR295Zk5CMnpGenlDcmExbnp2ZW9xdXJXbFN0WGJvRnpCZFNBRzAxU1NsVktxYWJydXE1cG1xNXBPdFZodVRXcUtBcEV0UXZ0N1RFazVYUTRHZ2dFRUFxRk1sbzdBb0hBSi9vK3BhSCt3L0x5Y3NkcEJJZGNXN2FRRkViT1RTV0VKSys5OXRwRGpZMk5EMVJVVkZRUVFxcjUwNXJyWEZicjFnV1lQVzhkR29JVGNPMzE4M0ZES1JEYnRRMGJOaXpGbksydlljVXpEK0s2eU9uOUhpbWxEZHUzYjM5NndZSUZNWWNRdEJmcElmY2twV2JCZ0dpRXBFZW5LTlZwS3RHRGhNZUhnR0dDeEdnem1vOG9DTmVjbHdFMU03LzJTVUxRNHdZYkFBd2ZQdHl4UXVvd1prVjFYU2RtWlFNQTFYV2RiUUVoaEJCaCtQRGhiN2EzdDkrZms1UHppK1A5WHJpNHpoNnJ0aFhMRnF4RFEyUW1WcTFmam1rV3dHN0ZMVGNzd1l5WnE3QmsyVlpjdVh3YVhLZlJyRFUyTnE2Wk9uVnFrODJ0WllhZ2xLWUxCa1RRUk1IcVY0TWthT2p1U2FFM25xQkNYaEF1bHd1aUxJQVFFVzV2Wm10SGFXa3BoZzhmL2k5OXM4THgvR092MTR1S2lnb1VGeGRuSEV5WjVkUmRLc3R5djVEVU5wV1F5TTNOM2REVDAvTXIvdXptT25lNXRnWWJqaXE0ZFA1QzBTQXhzZ0FBSUFCSlJFRlVCbXBwQlNmZWdzVUxic0NWa1FSYWJmbXZaYXNYWU1iVUdsU05YNEN0YWQrSHJRL2NoaGxUeDZPbXFnbzFrNjdCelVzMm9TbkJmTUt0dDJGODFYUXNXcnNhaTJaUHgvaWFLdFNNbjRvWkM5YWl6aUdmbHFqZmdFV3pwMlBzaUlxSHFxdXIzMmVjV2k5N0VVSVNZQStRVEovY29adU51TExMQjc4a1VJSHFJSG83OW43d0FkNDdsQVFoY2J5LzZTOTQ1Sy92SXhXSm9QaklVNWd6YXc1dS8vMmZjTnMxazFCVE5SVkw2Z0JzbW9lYXFrbFlzRDN6Kzl1NllEeXFhdVpoRS92QnBxM0g3NUtLaTRzSGRHMW1PTXFHcEdZTGlCR2FzdmsyQVlBd1pjcVVoOTk4ODgxQ1daWnY0azl6cm5OTmRhL3RRQksxdUdLS1U2d1p3YlJibDJKYXY0OXZ3OHBsVmJqaSt2bFlWRldMYWtTeGRkRU16Rm1Ud09RYjVtUHBCQmRhWDF1SGxhdHV3ZXpvS216T2NIc05XTE5vRmE2ZFB4LzN6UThpdW0wVmxxMWNpTmxSRnpZL2VCMzZ2b3Z0V0haekhTbysrL2tuOXJmOGcrMVg2eGVDc2xBRG9GTUtTb3pGVCttOG1nSi9VU21LdlY3NFBCSnl4cFlCeHhyd3dXRTN4bDR4SFJlUEhvTnhSVVVZNWcxQmtSSjRmdmtLakxuMlJzeWZXWVdKRVFCTlEzZS9DMmJQK1dUaFgzVjFOZUx4ZU5iMkR3WnNHU0VwcFpUcXVtNXZBU0U3ZCs0VXRtelo4dEQwNmRNTFJGRzhtai9WdWM0ZEpkRGFHZ1dVQ0NJczE2S3RhR1dkRmx3SVJvSU1uRW94ODc3MVdENHRhUHo3VFZpeEhaaHd5NE40ZE9IRTlMKzcvanBFV2lkaDRhYS9ZZnZ5YVF3Y0ZVeGUvRGp1dTlINGdsT21vQ3d4SFROWHJjQ3F1dXV3c0xidmE0Ni84NG5ObnpteTRma044UjZuWGpWN0ZWUWxBdEdoVTUxU25hWlNLVkFJVUVRWnNpeFRhN2pkbHc0OUpia1p1NDU0VVRsdUlpNDV2d0xEeThwUWZTeTlScS9xbHNleGZtSHRjWWZlZFN1WFlOM0JxazhHTmxFVVVWVlYxUTlzN0RTQ2JjeUttSVVFSStmR0ZoTUlJVVM0NnFxcm11cnE2bGJXMU5Ua0VVSW04U2M4MTdrQ3RrUWlEUkVYOHlyZXZ1UWEzTER1YU44SEFqT3g2dDNsREp5cU1YbGlrSWxacjhUeXpWZmFQbmNRMVdVUllIc3JvZ21nanhJdVJNb2lHZENjT1BNNlZLMWFpZTA3V29GYTgrOG12Rld1N0gxNi92ejVVVnRPcmNlNGVtMzlhdWxHWElsUVVKMXF1azdWWkMrT3RTZG8zT1ZIVVhrSWVVWnJSeUFRZ0JTVklZb3VCUE1McldaYzhWMENJSURheWJXZklKOVlqNjFiRzRBeEN6NTV3ajRjRHFPeXN0S0NXN1lLS2V2Y1RMZ1pVd2tnaEpqRkJJRVFRbXByYTk5cmFtcjZiVWxKU1M0aFpBUi8wbk9kL1RLQlpnRE9lRFhYM25JZlZsMmJBQkRGdG1YenNXb29vVmkwRG10WHJNQ2FUZHRSZHpDR3BHWFFxdE5JR29nVVpWVW9BMURmMEFRZ0FrcFIzOVBUOXVkN1oxN1ZZb05hWHdXVXlhc1p1WE1ycnliTExpckxNbVJCcDJxaUYvR2VPSm9iUGdMMVRjYmtrclJqa3pzVVNKSUw0Y0lTVkZaV0lod08vNHVQWlNzYVdnRmxZdlcvVm9rc0t5dXpCdVJadUdYTHRSbFFNNGUvekxCVU14NGNBa0FvS3l0NytlalJvL2ZuNWVVdEFoRGhUM3l1c3gxc2tVZ1FTRGFocVJWQW1lRzFxcWRnV2pVQVJORzZTaGxDanFrT0Q4eWVnZVd0RXpGbjRYSXNyQzVEMEFYVXJid1pDemNOMVR0YU9ucWd2WHYxNGNPdk5DSnpzTDNYSWErV012TnE1akoxZHJyQTdYYkRrMStFU2lXRnByMzdjS1RoTURDaENqazVPVkRhWFpBa0QvTExLbEJXVm5aQ0g5Vi91Y1ZpMUtoUkdhNk5EVW50SjM5UVN0bDhtMjRPd3hyaEtTR0VFRW9weWMvUC8zdG5aNmMvRkFvdEJ1RG1UMzZ1czFtMWwwNUVZTTFXL0cxVEU3Nys5VS80QXQreEJtdDJBWmV1ZUJDTHIrc0xVUlBCSVFaMDllK2dDVUNrcXF6MzRNR0RxNjVlOFhZZCt0bzZ6UENUZFd2OVFsQkNxSzRtazBpSkxuaDlNaFJGc2ZKcTNrQWV5dk1Qb0xNdGlWUWdqUHo4ZkxpT3VxRW9QaFJWalJyU0x3QWdrVUhmL29xZ0tnSWttNXFPcjkzRFNZUVFqQmd4d3BwTXlNL1B0eVlUN0dOWFpndUliZkd5T1hKbHRvQWtBU1RDNGZDZnU3cTZlQnNJMTFtdjRMUmJjSDFwRXUrc1dJQkg2aEw5d3F2VzF1UVE3RllDVVFDSktQUC9KK3J3L0k1V3V4c0RFRU45WFQwYncyTFRxazA0aURHWU1nb1BHZU5TTE5SNkdiaGxuTEZtdm43TmZqV0JnRkk5aFNUcEt4WjR2Vjc0UENuRTRnU0NQdzlsaGZrb0tpcENSV0VJaXFJZ21TU0QvM3lSQ0NLSW9iNitLZVBuZTYwdXh2eWpha3liVmdYc1duTmltbUlEZ1FDcXE2djdGUkkwVGNzMklEOVlNWUZRU29uZjczK3N1N3ZiNC9GNGJ1ZFBmNjZ6TnhxZGlJVVBMa0xkN0tWWU9tTTZuci91U2x3NnBoUTQyb0RYTm0zQXRvWUFKdHd5RXhNSHRIM1g0c3I4ZFZpM1pEYm1OVnlKYXJSaXg2WU4ySEV3Q1NDS1JCUUFVMnZZdFh3MlpqUmNqMnNuNU9Qb2EydXcrbTlIRWI3MDlnZC9NS25nSHc2aFp3OHlqeU95T1RXekVWZWliaDhRNjByUytORVdKTHVEeUFtbjBCTnJ3NzcyTnJRblhhaWVQaFVYR0lkR2puU05RdWlKTFZpelpBbHd4YVc0N3NacEtCdm81eXRkaFZYTGJzYThnek14d1hVUTcyemFnT2NiQURDTDRHdHZXWXlaRythY3VHNy93c0pDeDF5YnFxcHNQMXRHV01vV0U0eFBvOW5EMGxtelpqMzg1ei8vV1hHNzNkL21yd0N1czVadHRWL0g0NXRyOGNpeUZWaXpkUzFXcklzaHFlU2pxbllhYmxrNUgvT3ZyQjY0U2hpY2hxV1BMNE5yMFFwc1dMMFNXMTFWbUhMOWZYaDh3dk5ZdExJSkI1bjhIUkRBRllzV28yemJDcXhjMG9Db3F4UWpyNzM3a2ZwWGY3a1YvYWNLckJDVUVDUW9OVmZvV1ZEcmE4S1ZaU2lLajVhR0tIcWljY1I3WTJnOUhNTlJRVUc0c0FwVHAxNk9hLzl0SkVwTFMxRlZWWVh5eSsvRTRqZWJzV3pES3F4b3pjZTBHNmNORFA5SGx5RzZZQVUyclZxT3JZRXFUTHh1TVpaTlhJR0ZHeklmaCtXUHJ3UmhEM0k3RWRxOWV6ZDI3OTZOeHNaR0hEcDBDRWVPSEVGN2UzdkcwVWNHQUFrRFFHTDB1d2tBUkVxcEJFQUc0S0tVdW4vMG94K0ZmL2pESDk3aWNybm04WmNBMTVrcVRkUFExTlIwWnAreHR2VTJqSit6RmROV3ZZdjdESTdFWXJIZmYvdmIzOTc4aHovOG9ZZHhaVDBBdW8yM1BZUVFxMkJBakcxVDdQbHF6TkhlMWhscjV2eW5lYjVhU1VrSmhnOGZqcHFhR3RUVTFKelVIL09FejJlT0hqM2FDa250N1I5WlhKdDU0aTZRV1NtMXd0S2YvT1FublpGSTVPRzVjK2NLTHBkckxuOEpjWEdkR01WaXNUOHNYcng0aXdHMUpBTzFIZ1pxL1U3RGRhcUFzc1VDbjgvbmVMeDNaV1VsUm84ZWZkSi9yaE1PTmtJSVJvOGViWUhOM3ZxaGFacDE1QytUYjh0V0tiVSs1M2UrODUwMlJWRWV2dW1tbThEaHhzVjFZcUMyZE9uU3pTdFdyT2hDWnFHQWJjRE5sbGZUQlVGZ04weFJjeEdML2NCSTA2MlpVR09QQnYvVWdBMEFQQjRQUm8wYTFhOXAxOWJQMXErWVlMZzAwN1d4Y0NPRUVESnYzcnpXUkNMeHU3bHo1K3B1dDV1SHBWeGNuMURKN3RqdkZ5OWV2R1VBcUxGT3JkL3FQT1BBU0dwM2F1Ykt2RkFvWkIwWVdWeGNqSXFLQ293YU5Rb2V6Nm5aZGkvZWZmZmRKK1VUbXdkUW1uQXpLNlFzM0d6WFlCaW5BTEJ4NDhZVUllVDlpeSsrV0pWbG1ZOWVjWjB4b3BRaUdvMmVnQTc2azZqS3EzSER6VGM4OHZTeS8yL0w3MzczdSs1c1RnME9rd1Zzb2NDRW1zdmxvdXdKdVBhVmVXYWhZTXlZTWNqUHp6OWxQK1pKUFFPdHNMQ3czelNDUTRVVVRKN05xcFFDZ0cxZ0hvUVFVRXF4ZE9sU3ZQWFdXdyt1WGJzMjZmVjZlU3NJRjljUTFkSFI4ZUFWVjF5eDlhMjMza3BtYzJxd0hVUEVWajh6SzZCOVRzM2MyczdtMUlxS2lsQlJVWUdSSTBlaXNMRHdsUDZjSi8xd3gvTHk4Z3pYeGs0ajJGMWIrcGNlSlFDb3Fxb20zRFEyTERYaHRuSGpSdmg4dnYrTnhXSzlmci8vZHZBSkJTNnVnZFRiMnRyNlVFRkJ3VC9RLy9UYmdhQ21FVUkwb2U4SW9xemhaekFZUkRpY25pb29LaXJDc0dIRHJPYjlVNjFUY21wdGRYVjExdVBEbVZOMlRUdHY1ZHBVVlRYL3poRnVBQkFJQlA3WTBkSFJIUTZIYndPZkxlWGljdExSZ3djUHJqSW1DdGpaeng1YitPa0lOV2JCY1FiVW5GYm5tVkFyTHkvSGlCRWpVRjE5ZWs3OVAyWEhjZGZVMUdUYmkrRG8zRXk0QWVuK29BSGdSbk55Y3RhM3RMUjBSU0tSYi9GVFFiaTR3QnFGK3ZyNit0VWpSNDZzRzhTcEpiSkJqYzJwWlFzL25hQjJzbnZWemdpd0FjRFlzV1A3d1MwTDJDeTRtUW0zYkhBei8xeFlXUGhzWTJOamROaXdZZk1FUWJpSVA2VzV6blZwbXZiV3UrKysrK2NMTDd5d0VmMW5Qd2RyNmJDZ05saE96WVJhWVdFaHlzdkxVVjFkamJGang1N1duLzJVZ28wUWdyRmp4MloxYlE2L2JWZ0g1d2czNC9OU1Npa2RQbno0UDNiczJORTVidHk0YjRxaWVCVi9hbk9kOFRyMnU1UHlhVk1wYmZPV2JidWV2bXJtL1MxTStHbWYvZXdoeHJxOFRLaFJqUkJLUllGUVVhQlVsblRJb2c2WHBNSXRxL0FxS2ZqZFNRUTlDWVM5UGNqemQ2RXdGRWQ1WGhUVmhaMFlXOTRHRW4zOTNBRWJBTWl5Yk1GdEVNZkc1dHV5d1kwYUg2ZG1hRHB4NHNRUDFxOWZ2L3lhYTY1cFZSVGxhL3lWdzNXdXFiczcrY1REajIxN2Z2NGRmNDRPQUxWZUFpUkFZS3QrUWlNRWFhaUpoTXF5QUVVVzRYSkoxTzJXNGZVbzhQbGNDUGpkQ0llOHlNdjFvNmd3aFBMU1hGUVBMOERZbWxMSWtuamFINFBUc3ZMTzdYWmo3Tml4am5rMjFxMnhJU2toQktsVUtuMFVTUHIvMC9yWWx1bmNac3lZY2JDbXB1WlhiN3p4eGhHLzN6OGZmTFVmMTdraHRhMDkvdEQ0Zi91dmx3ODJ4KzA3Q3RqejFFeW8yWndhZElHQUNnS2hrZ0UxV1JhUTZFelF6cUFMWTNMU1VBc0dHS2dWaEZCV21vdnE0UkdNSFZNQ3QxcytJeDZJMC9hQzkvbDhGdHpzWUxPSHBZUVFhdVRUN0swZzlna0Zhc0p0OSs3ZGVpQVFlS3lscGVWd0pCSzVoUzlsNWpwVHRmMmUrM0h6MGY4WDcvNjY5aFB2RGFXVU5qVHVPN3FtZXNLaTk1RzVUYXJmZVdvTTFOU0JvS1lvSW5VcElxaVFSRktSNGZlNUVUQ2hsdWRIVVVHd0QybzFwZkI1WGFoLzlwL1luajhPTjM3RzcvQmR4ckgxdm1ldzVPbjlhSXBKaUl3Ymg4VS9tWTRyUzg0aXNBSHBjOXpHamgzcjZOall2Qng3L3dhQkcyV2RHd0JhV0ZqNGJGMWQzZUZSbzBaOVhSVEZ6L0tYRWRkWlo5TlViZXYyTnhxZW5ucjFMNXlXR2R1UDgwNkE5QjNwM1FjMVFnVUJWSklFS2t2RWdKb010MXVBSmhLSUxoY0NBVGR5V0tkVzFnZTFRTUFOUUVYZGM2OWdaVW1WSTloYW4zMEd0ejB0WWVsanQrTzZrbDVzL2RFYXpMdmpEV3grN0NLVW5VMWdBNEJRS0dUQmJSQ285WU9ia1c5anozT3pnR2JBVFFlZzE5Yld2cjE2OWVwRE0yYk0rTmp0ZHMvaEx3V3VNMVdKWjlkaC9JUEFqYU1UMkxxekRhMUpGNmJkTmhQTFA1OEhGMXF3N0QvV1lQdm9LcmoydEtBcGxvQllOV2IxZVNQVkxiKzU1eTh4WkxaejJNTlBhKzZUVXFRRVFqUVE2Q2JVUkFGVVRlazBtZFFCUXFnZ0U1U1Z5dkI2UkdnUzBPMTJHVkR6UUR1MEgzOTZMb1pPM1l2eUM4ZmpoejhlanV1Qys3SGtQNTdDMmtNYVlsaURTWHN1d2VNUFg0UytNRW5GanVjT0lmanZzM0JkaVFUQWoybHp4cUg2S3g5aWUrd2lYSitvdzd5dmJFWGtaN2RpNldmT0FyQUI2WTFYQTVXSFRjQVJRc3lMRWtLSW1YTXpjMjI2cmxPMnY0MTFiamZlZU9NaEFQZTN0YlY5bkp1YmV3dUFZdjR5NGpvamRlZ1ljTmNzYlA2Wkg5RlhuOEgwTzE3Q3BzL094SFVCQUVpZ1ZSbUQ5WC81UW5QeTQvMS9MSnR3ejl0Yis1YXFKQm1Jc1VkNUp3aEJrbEtrUUtBS0lCb0lOSUdBRW9Ib29rQkFVeHJWaUlDY1BCZjFTeFR0clFtMGRJc29LM0JCbFFVbzNuVDQ2VG42TVZidkN1SzJIOC9Bdk10ejhmRmp6K0xtYjI5RzVDOVhZZkZmYnNXRTIzK05aU1UzNE9VRjloR3FYclRHVkVSS0dDZVg3MGNFdldnOUNtRDRNTnh5MTc4ak9PNHNjV3ltY25KeU11REdRS3dmMk96T0RRQmg1a3I3T1RjQXV1SGVhRjVlM2wvcjZ1bytIalZxMUUyaUtGN09YMFZjWjV4S3FqRFRDT1dDbzRlaE92a0dXbU1BQWdBZ29tWnl4VXQ3dDMrNDRaS3JmdEdFZ2Jlejk5cENUeFZJaDU2RVFCY0VRZ1dCUUpJSUpScEJVZ2NsZ2dpWDM0VVJ1VUVvWGkrQ0FRa3BSVURVNzBOeGdRdjFyM1doK2t1Zng3ekxoeUVuN0VYT2JaZmh1cWZYWWMwL3BtUEtZSW1lZnFzYlJBQXFZa2tBOEdQaVovMW5UeWhxaDl0NTU1M1hEMm9EUUk2U3RQcmwzQ3diMTljT1lvYW1XbTF0N2RzLys5blBHci96bmUvczhucTkvTWh4cmpOWFJqVWhZV3hqNlVscEQ3L3kyTnFYSDM1dVc0OHRuOVovN3llUXBFQ0tXRkNERHZSQlRSUUpsU1FDV1JLZ2VDWHE3a2toMnQ2TnpyWWVCQ0s1T0wvWWpaeXdncVJiUkdjb2lQSXlOeHBVTDJvdkhJR2NzTmRNSnFHcVJNWHpSM3N4NkxpMll2K0FCa0JDUURueEQ5c1oxd1lSRG9lSEJEZDdXR3ErYnh5TnBKdEFZNG9LT2lIRWRHNzZIWGZjb2Q5eHh4My9lK0RBZ2IybHBhVTNFMEltOGxjUjE1a3FxdE4zZHUwNXN2N3VWeHIzQW8ycVF6NHR3NlVSZ2lTb0JUU05FR2lnMEVGQUJaRlFTU0JVa3RMdEhJb2lVZ2tFdmtJL3l2MEtmTEtPNW8rTzR0Mm1mRXdZNFVmU0k2RXROd2NqcXZNUXJYZ2ZyMFoxNWp1TG8rR29oRWorWUdkUXVCSEpsOUI2S0E0Z2xQN1EwVGhhNFVQa0pKeG1KSnlKTnpFVUNtSGN1SEVZT1hJa2hnMGJodUxpWWtRaUVlVGs1R1JiN1VjVlJRR3oybzh5cS8wMDQ0ejJGSUFrSVNSQkNESFBjKzh1THkvZnVtN2R1aC8yOXZhdTRpOGZyak5ScXE2dGZ2R0pMZjlUTy9sL2RpTnp6NmYxUEdZdWEwVWVOWjJhY1paYStoYzgyODRoR0kyM0lsTEhlckMvVFlYc2RTT1U0MGUrWDRMaTg2RzRLSWg4bjRKQVFUN0dqYW5CRjJjUFI5MnFGN0Roa0FxZ0Z6c2UyWW9OR0lNYi9oOEpnQVNYUzBLaTdSaGFFLzA5MUpUTGhpSDYzSGFzYlZTQnhERnNXdlVPNnNlTndwUkFHcEE3WG14QWZlSXNkV3ltQW9FQXhvMGJCMEVRSEM5Q2lQMnQ1ZHhTcVpSWk1XV0xDcFFKVFUzM3BnSFF2dlNsTHpVQitFMVRVOVBPa3BLU213Z2hFL2pMaWV0MFM5ZnB1eC9XdDY5ZisrR2JlN0RzVFpVSlBaT09MbzJCR2FWOSt3bEl1ajlORnloRlN0ZHBUMUtFenl0Q1VTVHFka2x3dTJYa2oxQ2dISXpoblRmam9LS01nb3BobUgxVkdTckt2VWdFWERoWVdvSkF3STNBNTcrQUI0OCtneVgvK1dzc2lFbUlqQjZEeGIrWmppbEd5RHpsK25Fb3UrTXBUUDNQUy9ETUV4ZURiUjROWHZYdmVQRFFjMWcwOTlkWVpQU3gzZmVUaWVsV2o2UDdzZkpIVzFIMm0xdXgrUHgvL2JFNzRWdXFUclI2ZTN2eHdRY2ZvTDYrSGdjT0hNRGh3NGR4OU9oUmRIWjJJaHFOb3F1cnk5cDhsVWdrekYwTGhObCtCVjNYQ2FWVU1DOGpheWtCa0NtbGlwSEpjQUZ3clZxMUtqSnIxcXpydlY3di8rRXZMYTdqMFNmYVVwVmxWalFhNjNuMGdmOTljZHNkZHo4VlIxK0JnQjJQWXNQUWRPZ0pOdlFrT2tIL0lvRXNDWkJsa2JxVXRMdnl1R1Y0dmE2TWlZTDh2QUNLQ2tJb0w4dXh4cVRPbEltQ1Q3MWpzeUp6dHh2bm4zOCtSRkhzZDdIdXplYmdzaFVWS0pON000c0tPdEpWVXcyQU9tZk9IRzNPbkRrUDdkMjc5NjJxcXFvYlJGR2N4bCt5WEtjczdGVDFsM2UrZitDWkN5Kzc5Mk1EVW5hWHh1YlVrZ1JJWmt3Um9LOC96WEJxVkJTWUlvRWlVa1dSNEhiSmNCdFE4L3RjQ0FZOHlBbDVrWi9Iekg1V0ZXRHNtRE5qOXZPc0F4dVFIcHdmUDM0OEpFbnFCemI3V3daMlZCQUVJZ2dDVkZXbHpMNkY5TjYvdnREVXFCUVJ6UXhOQWFpalJvMTZmY1NJRVR0ZmYvMzE2M0p5Y200Q1VNcGZkbHduUzVUaTRKSFdZMDkrWnRwUDNtaEt6M215VUVzNFhFa0hsOVlYZXBxVEJHSmZrU0R0MUdTNDNSTGNiZ1UrYjNyMk14VHdJQnoySVdKQ3JTd1hJNFlYWXV5WVVweUNoVkxuTHRpQWRIdkhlZWVkQjBtU2pnZHcvU3FtaEJCcWhLWmduWnVaZDBONkc3MEdRUDNvbzQvVTNOemM5UnMzYm56anNzc3UrNkxiN2I2SnZ3UzVUcWhDL3dkZFhWMXIvdnJYdjI3NzZsZm5kUXppMGd5Z0VSTm9LZU1Yc1hWK0dyT2JBSklrT2U3OE5FKyt0ZS85WkkvelBwMkhSSjVUWUROVlUxTURXWmJOQ2lpTU5XQ09JYW9KTitNdFllQUdQUzNyU0NTemdkZkp2VjE5OWRXTkFINWJWMWYzNnNpUkkyZEtrdlR2L0JYSjlhOHFsVW85djJQSGprMlRKMDgrd0FBdEc5U1NETlJVOUEyd214R0h0V3pGT01iYmZKMVFSVkZnUHlEU2hGcHVibTdHaXJ6VGVaejNPUTAySUwxRHdXenZNQzhXY0U2aHFYSERyZENVcVpwYXJvMEpUVFhHdlZsUG90cmEycmNBdk4vVTFQUkNjWEh4bC9oSnZWeWZSTHF1djluUTBQRE15SkVqZDVtL1BHMUFTenE0dEpTRFM5T1ppeHEvMkxOQ3pldjF3dXYxSWhBSVdIcy9Dd29LTEtpTkhEbnl0Q3hlNFdCalZGNWVuZ0UzODJhYW9hcmR4Um1ncytDV1NxVW9JY1E4OE5KZVdOQVp3R1c0TndDcHNyS3lGeSs4OE1KL1B2dnNzMWZtNWVWOWlSQlN3MSt1WElQbjBlaWU1dWJtcDZkUG43NWoxNjVkS3BNZlkzTnA3TnVrRFdvcTgwdlhBcHE1RWs4VVJmYVhQWFc1WEJsUU01ZXVtSHMvSTVFSVNrcEtyR1hHcDNwRjNzblVTVnVZZkNwazJtbW5mSno1ZG9CeExIdGExSndyaFFFNEdIQ3pHbjFOMkFIUW01dWJ0ZVhMbHpla1Vxa1hMcmpnZ21hMzIxMUNDTW5oTDk5ekdseU9DNU1wcFkydHJhMlBMVnk0OEUrelo4L2VmL1RvVWJzcjYzZGtOOUxMVlhydCtUUm1jYkhUUm5Zb2lrSVZSZW1YUzJPQnhpNWRxYTZ1UHVYTGpMbGpHNEp5Y25Kdy92bm53L3p0eEV3Z1pPVGgyQ3VSU0RpR3BveDdNNGZyQlZ0NHFnRlFqZkEwQlNCMTc3MzNKdSs5OTk2L0xGMjY5SVZ2Zi92YjAwT2gwRXgrcUNXWEFiU0cxdGJXRGN1V0xYdnJsNy84WlMrVEczUEtwYkZoYUFycDQ0VlVRbUJHQ3hwQStrWUZBVXBBYVBxcFNrQkJRQ21vVGdGS0NYUUthRHFGcGdPcVJwSFNnSlFHSkZXS2hBb2tVa0J2aXFBblJiRDdvd01BRHB4VmovMm4yckdaa21VWmhZV0ZqcWVBREhIZTFHN2d6Qk43MlJOQzdOVlR5NzBCMExaczJaTDQrYzkvdnJlN3UvdjVDeTY0b01uajhlUVNRZ3I0eS92Y2MyekJZTEN1cGFYbEQ5LzczdmNlbnoxN2R1TS8vL25QWGdlSDFtK25weTJucGhKaWdkRElwNldmaTRRSUVBV1JpcElJU1RKeWFiSU1SVW4vY25lNTNYQzdQZkI2ZmZENS9BZ0VBd2lGd3NqSnlVVitwQURGeFNVb0h6WU1WZFVqSUVueVdYa3Z6dmpKZytQVnh4OS9qSWFHQmpRMU5WbFRDaDBkSFloR280akZZdWp1N2taM2R6ZDZlM3VSU0NTUVRDYk5UZldFWGVxczZ6b3hMK054TXFjVzJNa0ZpVklxQTVDUlBydkF1cXFxcXBSWFhubGxhbUZoNFRXQ0lGek1YL1pudjVMSjVQWTMzbmpqaGE5ODVTdnZOelUxbVNOTnJFT3pGd2d5SEpveDA4eU1RaEh6bHlobEs1NW1vWXd0RUdRckVwanRIR2I0V1ZaV2hxcXFLbFJXVnA3VjkrS3NXM0pTV1ZrSmo4ZGpEc2ViZVllaEZCaW9VVTBscXFwYTRhblo5MmE2TlNNODFRY0lUNU1BbElhR0JxV2twT1FGQU52Mjd0MDdvYkt5Y3Jvc3k1L25MLyt6VDRsRTRtKzdkKzkrZGNLRUNZME16Tml3TStrQU5SWjJxZ0UxcTlwcGdJMmF4UUhqdVVtWjU2NEZORE9ueGhZSi9INS9SazZ0dUxqWXlxbWRUVVdDY3dac0FGQllXQWl2MTJzQnp1MTJnMzBTMk9IVzI5dHJBUzZaVEdiTHZWRktLV0hQZURQUGQyT2VtQ25Ed1ZtQUE2Q01HalhxZFFEdnZQRENDMDlNbWpUcFVyL2ZmdzF3d285NTV6cTFZV2RUTEJaNzdzVVhYM3o3aTEvODR0RXNRSE9DbXVuT3JHRjFJNCttMjZ1ZEJ0UmdWanpONTZ1VFN6T2haaThVbU8wY1p1TnRJQkE0Sis3UFdSZUsybk1lZS9mdXhiNTkrM0RvMENHMHRMU2d2YjNkR3FDUHgrUFdBTDBabWhwRDlFZ21rMUJWMVhSdkdlR3BzWGhHb0pRU3c4R1o0YWw1c1NFcUc2cktBSlFiYnJqQnZYejU4c2tGQlFXWFM1TEVUL0g5RkVsVjFSY1BIRGp3NnUyMzM3N3JxYWVlU2cwUmFDazcwQUMyS0pBQk05MmNkMmJEVHRhbHliSU10cFhEUGtrUURvZVJtNXVMd3NMQ2pIWU84bW1kaitKZ2MxWlRVeE0rL3Zoak5EVTFvYVdsQlcxdGJRUG0zY3pjV3lxVmdubEtDQU00WXF3TUpPdzFBT0NrTElDVEFjaWJOMjh1ditpaWl5WUhBb0hwdkIvdWpQMEZ1YWV6cy9PbGJkdTJ2ZnZGTDM2eGpRR1NFOUJTV1lDbTJvRm1IbnhxaHB0Mmw4WUN6ZXhQTTEzYVFQbTB2THc4RkJZV29xeXNESldWbFNnck8vZUNnM01DYkFEUTJkbVpVVlJvYlcxRlIwY0hqaDA3aGxnc1poMS8xTnZiNjFSWWdBRTJZcm8zRm5CTWdZRUZIRnRrRUEwSFo0ZGN4dlhlZSsvVlZGZFhYK3p4ZUM0SFVNS1JjbHBoZHFpN3UvdWx1cnE2SFpNbVRkcVB2aXI0WUVDejU4NVlWMmNQT2FsNUlBT1Q0MlZkR2p2cjZSaDZzazIzN015bldTU3c5OVJ4c0oyRjBqUU45ZlgxMkw5L1A1cWJtOUhhMm9xMnRqWWNPM2JNT3R1dHE2dkxPdHV0dDdjM0EyNE83czBNVDgwejN3WUMzRkFnWjM1TTJyMTc5N2lLaW9xTDNHNzNaUnh5cHc1bVBUMDkyejc2NktOM3g0OGYzMmdMRjUyQXBnNFJadjJBQm1zUEJ5Z1JDQlJaN2hkMnNpN05MQkM0WEM1cjN0UG44eUVZRENJVUNpRXZMdytSU01US3AxVlhWME1VeFhQMlhwNVRZRFBWM055TWZmdjI0ZURCZ3poeTVFaEdhQnFQeHkyNHNZZFhzbkJqQWNjVUZ3WUNIREhBSmppRXFaSU5hckx0WTlMT25UdEhWMVZWVGZCNnZSY1RRc1p5QkowNDZicGUxOVhWOWRxZVBYdnFMcnJvSXRhWjZReVlCZ0theWdCTnBaU3FScVhjNm5FME42V3hRRE1ybmJxdVUwRVE0WGE3K2dITkhucDZQSjUrUSt4bTZGbFFVSURTMGxKVVZGU2d1Smh2bGp3bndRWUEzZDNkYUd4c3pPaDNhMjl2eDdGanh4Q1B4eEdQeHkyNE9ZV21XY0pUQzNBT09UakNPTGlNWEJ3RE9DZlFaZnpkeG8wYml5Kzg4TUxhY0RnOFFaYmxpMkZ0eHVBYW9vNmxVcW5YMnRyYWR2N3puLytzbnpGalJwc0JJSDBBZCtZRU5mYUVqWDdGQU1haFdia3pOb2RtRmdZMFRZY29pdkQ1dk96d2VyL1EwNFNhMysvdjE4cGhocDdEaHcrSDErdmxkL2hjQnB1cEF3Y080TUNCQXpoMDZCQmFXMXNIckpxeW9ha3Q5ellZNE1BV0dXeVFNNTJjR2FhS2RwZzVBUTZBT0g3OGVQbVJSeDZwcXFxcUd1MzMrOCtYSk9rekFQejhhWjJodUtxcWIwV2owZmYzN3QzYjhJMXZmS09wcnE2dTMrU0lMWFRNQmpRV1p1ei9vOXVBWmprMDQ0SWRhR2JZcWFvYUZTVUpBYjh2QTJoc2IxcTJxcWM1eEY1ZVhuN1duTXJCd1hZQ0ZZdkZyTkNVclpxYTdzMXByMElXOTVZQk9GM1g3VlZVWkFsVDdaQXpRMVVyTCtjQU5zbjJkMkpGUllXNFpzMmFZU05IanF3S2hVS2paVmsranhBeTRoekxrMzJVVENZLzZPam8rR2ozN3QzN3Z2YTFyN1UwTlRYcE5sZm01TTZ5dVRUcjc4eG1iTnZueUlDWnphR0JyWEtheDJteGhZRmtTb1VrU1FpSGdoa3V6UXc5N1EyM2JOWFRERDNQbGQ0MERyWi93YjJ4VlZQVHZjVmlzYXc5Ync2NU53dHdwbnN6SVdjUFV4bkFPWVdxOW5CVnRBSE82WDNSZnYzaUY3L3dYM0hGRlNXbHBhWEQvSDcvY0ZtV1J3aUNNQnJXS3Q1UHJSSzZydTlKSnBQMXNWaHMzLzc5K3c4Kzk5eHpMWGZkZFZlUENaaEJZSllOYWhudk04NHNJOHhrUTAzWTVvbVp3MDJJcFFpWEFBQUdHVWxFUVZRdG1ERXVqVEtOdGtna1U1QWtHWG01NGF5OWFZRkFJTU9sbWFFbmQya2NiRU5XVjFjWDl1L2ZielgwMm52ZXNoVVdzZ0ZPMDdUQkFHZDNjU2JnaUFQa0JBZklEZmErNk9BR2hmWHIxK2ZYMU5SRTh2UHpDLzErZjRrc3k4V2lLSllSUXNveDZFcnZVNlplU3VrQlRkTU9KcFBKNW5nODNuemt5SkhXdXJxNnRpOS8rY3NkWUE0bUdBUm0yUnlhNC92MjVEOExNL1F0QUtKc01jQjBad0FnU1ZJL29MRjlhV3h4b0tjM21UN0VvU0MvWDRIQXFUZXRwS1FFdzRZTmc4L240eTlXRHJiajErSERoL3NWRnV6dXpkN1VhMDRzT0xnM3EvZU5CWnltYVNiWXdQVEN3Y0hGMlNGbkFZcUIzR0NYWUh0ZnNMMXY1ZjkrL2V0Zis4ZU5HeGNzS2lvS2hrS2hvTmZyRFNxS0VwUWtLU2lLWWxBUUJEOGh4RThJOFJGQ1BBWUl6UU1Bek04SkJnelcyamhLYVErbHRJdFNHdGQxUGE1cFdreFYxV2dpa1loMmQzZkhPanM3bzgzTnpiR2RPM2ZHRnl4WTBNM0FpOXBBUmdlQW1XNXpXTnBnbC8yOHZXd3dZMEZtdWpObVN4b0ZBRVZSTEpqWldqZ3lpZ095TEtPN0p3bEZVVkJTWEdBMTI5cGRHbHNnS0NvcTRpOU9EclovVGFsVXlpb3NIRGx5eE5wbk90U20zcUVDenViaVdBYzNFT1FjWWNkTVB3Z0RRRTEwQUp2OVlyL09RQmNjM3RyZnowaURPYnpQdmgzb3NvUE1mbVZ6YWYzZU40OStkNExZWURBejM3ZnQxSUFvaXFDVXd1VnlaUVdhdmVJWjcrcUZ5K1ZDeGJEU2pHYmJjRGlNL1B4OEZCUVVXQVVDV1piNWk1S0Q3Y1RwMkxGak9IandZTC9jMjFENjNveVpVM3Q0bWhHbUd1N05ncHd4eldDRnFzeDlzdWZraUFPRXNzRk95QUl6Y1FoZ1l3RW5PRUJ0SU1BTkJEYzcwT0FBc1lFY21wN0ZyZGtUKzROQ2pDa0FVRnVZYWNMTUtnUXdGYzZNSFJ1aUtGSktLZHh1ZHdiUUpFbXlISnE5T0JDTmRjUHQ4V0RVaU9IOUtwNUZSVVVvTFMxRktNUTdlampZVHFKYVdsb3kzQnM3a2pWUWEwZzI5OGEyaDVqVlU1dUxBek4wYjdvM2UwNE9EbzV1VU9EWnFyRk9RQnNJYnNmajNJNEhiTWNUZGpvQ2pxbE9aZ1VZQXk4V25tQnpadWFmMlRDVFhRN0VBSTJ5dVRSS0tieGViMWFYWm0vaDZJeDJ3ZXYxNGZ6emFxeHowMHlYZGk0Y0w4VEJkZ2Jwd0lFRGxudHpLaTdZcTZkT3JTR3BWTXB5YmpiQVFkZDE0Z0E0MXNuQkZxcmEzWno5ejNZb1pYVmlEdUV1R1FSczJWeWJQU1NsQThCdElNRHBUbjltb0RTUXM3UC9QeGxmaS8yekxkU0UzWm5aZ0VadGxVN3JiRDlkMStIeitRWnN0R1ZuUE5zNllnZ0VncGd5YWFMbDBuaTFrNFB0dENtWlRPTFFvVVA5aWd0c2VEcFkvbTBBOXpZZzVNeGlBK1BrN0c0T1dSeWRIVVJPMTZET2pBMkhUMGFPemJaVWh3NFJlUFlMdGlQZFlRZVozWldaem96Sm4yV0ZtUjFxSnRnMFRVTXdHQnh3YUoxdHRHMDVlZ3poY0E2dXVQd1NsSlNVUUZFVS91TGlZRHY5NnVucDZSZWVzdFhUb2JTSDJPRm1tMkJ3bWtlMVE0NXRIWUZEWGc0MktNSEIyV0VBSnpiVWZKb1R6TEk1dHFFV0V1eUF3d0FBZ3gxYzlqd1preStETFc5bTMwT2JBVE8yZllOZDFHM1BwV21haG5BNG5IVyswNngybW1IbndjUHR5SThVNExKTCtJcmFFeW1KUHdUL21qd2VENnFycTFGVVZJVERodzluRE5XeitUY1RjSFlITjFEMTFBRndsTW5ERVJ2Z3FBMTA1a1ZOb0ZGS3pjTUcyVjlvZzRMS0NZWUR3R3lvcHhuU29VTE9ZUzBpYkNFbCsyOHozbWVjbVNQSUhJQkc3VXUzQndNYWUybWFocHljbkg1YjE5bWpoY3loOWFLaUlrQ3E1eThpRHJZelZ6NmZEOVhWMVNndUx1NlhmMlBiUSt5QXM4K2VabWtQY1FwUnFRazFUZE9zL0pzVDZFekFNYTdPaEYwLzE4NUFiREJvWlFQWUp3VmJWc0F4SjcvMjBiZ1BkckE1c2d5STJjTE1maUF6TjZqYlE4L0J3azU3RHMyOFZGVkZmbjYrZGF5UUhXaG1IbzBQcTNPd2Zhcms5WHBSVlZXRmtwSVNLLy9XMXRhVzBmL21WRUU5SGdkbkMwOHozQnliZzNOd2NIYlltWEJqMzJaQWovMjdVNUhDWUIyWDdXUDk0R1Y3NndneEI2Qmw1TkJZcU5uRHpzRWNtajJINW5hN2tVcWxVRkpTa3RHUGxwZVhaelhadXQxdS9pTGhZUHYweXUxMlc4Y3lzd1VHdG9MS0F1NTRjbkFPN3MycFRjUU91bjRGQjlQWjJRSEgvSmt5UlFuVzFmV2ptaFA4aHVMVW5NN2haei9HZ3N2bXh1enVMQU5tYkl0R2x2eVpZN2c1VklkbXo2R1pVd09wVkFxVmxaWEl5Y25KbUJxUUpQNVNPNVg2L3dIRjFGblo4ajFpeHdBQUFBQkpSVTVFcmtKZ2dnPT0iXSxbMSwiZGVzY3JpcHRpb24iXSxbInNyYyIsImRhdGE6aW1hZ2UvcG5nO2Jhc2U2NCxpVkJPUncwS0dnb0FBQUFOU1VoRVVnQUFBVFlBQUFFMkNBWUFBQURydkw2cEFBQk1DM3BVV0hSU1lYY2djSEp2Wm1sc1pTQjBlWEJsSUdWNGFXWUFBSGphcmYxWnRpVzVsV1VML2tzcm9na2lxQVJvRGlvWjQvVWdtNTl6NGlpTlJ0STlJdnhsbWxJTDNudXVGTUF1MXRvVnJ2My8rWCsrNjMvOXIvLzF2S21rSytXM2xsYkt6WCtwcFJZNi82ajM3NzkyL256dWRQNDgvOFh5NTEvUHYzNzkrdXNiZ2Iram4veDk0KzIvdjUvTzEvTS9mK0FmOTNqR3YzNzlxbisrRStxZkMvMzVCaGYrUFlGMzl0L3I3dy9KMThQdjYwLzZjNkcyZi84b3JiNS9mOVR4NTBMenp3ZlBvL3o1bmY1NnJOOWYvdi9yWDc3d3Nrb3JjNk1Zd281UHZNK2Y2ZmNFOGZlNzgvczlmd1krOS9DMUhtTXNGMzg5OGYxek1SYmtYMTd2SDMvZjk5OFg2RjhXK1IvL3V2NTk5Zi82MTc4dGZ1aC92aDcvYlMzTG56VzZ5My85alNmLzI5ZmpYN2NKL3lJT2Z6MVIrTmR2M0NIRi8zaWRQNysvYjlYdjI3KzM2MGhoUytXUFJKM0ZmdjV4R1Q0NFdQSjRmcXp3NitWMzV0L3YrZFg0VmU5K1Q3WjgzZk1lL0pwUGV3Szc4bDFQZXRiVG4rL1o1Ky81VEI0eGhSMWUvZzVoaG5pK1Z1TWJXcGpSZlVyK2VyN3d4aFpYck96YkRQdGk2MUlNZnozTGMrN2J6djNtVTduemV2aG9lTGlZVy8zZi9ycitkOS84bi95NnZtKzZSTTlkLzFvcm5pc28xenlHTytlZmZJb05lYjQvKzViUEF2L2oxNS90di84bVA0Z3FPNWpQTWxkZXNOL2pkNG1SbjMvS1ZqejdIUGxjNXUrZkNqM1h1LzVjZ0NYaTNwbUhlU0k3Y0pjbjVxYzg5eHZDK3p5c1kyV0RPazhlWWdxREhYaHlEb3VIUkY1aUNkY2JhdkRlL016N25NK0dIRXJ3eTlnbU5pTEhnbTVWZHFpeldTbGw1T2RORlJucU9lYVVjeTc1emZYS0xmY1NTeXE1bFBJV2pWeC80NXZlL0piM2ZldmIzbDVqVFRYWFV0OWFhNnU5aFJheGdibVY5cmJhV3VzOVhKMGJkYTdWK1h6bkt5T01PTkxJbzR4MzFORkduNGpQVERQUE10OVpaNXQ5aFJVWFptS1Y5YTY2MnVyN3VUYVdZcWVkZDludnJydnQvaUZyWC96U2w3L3l2Vi85MnRmLzJyVS91L29mdi80SHUvYjgyYlZ3ZHNyUHZYL3RHbCs5M3ZjZmwzZzBKOWs5WThkQ2V0angxeDFBb0lON2R0Y25wZURPdVdkM0N5aEZEanhrZG0rdTliaGpiR0hhVDhqZjg5ZmUvWFBuL3EvMjdjcjEvMnJmd3Y5cDV5NjM3djhmTzNleGRmKzViLy9GcmkzOTNEdzc5dE5DMS9TT2FCK2Y2YUZlL0w1di92anJieDZwN3A3TDZIbjFrV2RlcWFNaTk3N2ZGNGZ5Y05tWlluOTN2MU5ZTzZVdmhwVGVLOWJRYThaTzVhK05zZDU3Yk5jOHNEWnYrdXBUOEZyUGRxbml6cFUxcm4yK2JZLzYxTDdqTzh2SGgzZHVWNG00eUJFd1pZVmxyMkZ6RTR4Zi83aG9TeXpCeU8vcWZjMzAzalB3MW53WGJ4dlkwZHhhL1lvK09vNzdZc08vT25tWitMNWZxV3pEMmhtZkhzWUl2ZXlNUndRSVBMeGxuYU90dE5OWUxmT2N1WVhNcG43SUV3SlVyNEVSWHBYbkNxbjFQVi9ldWViMWZtOHI5ZXUxalBZK1gwRW9JcSs1VzE4ZE85TXorL0h1WjNDaE4yMDh3WHM5N0I0dW92WXY1NDh2MVB5bDhkMW5UL0hnZGNlNjJVLzJycWVFb0k1VVN3aHJ0dmZGdzFSV1pCM2R1Y283bmwxNHpWbEhpanpOWUFrLzFBSWR3SDQ5cGFrTW4xTDU3ZnpsK1pYSm84Vm50N3oycXUrZUgxdGNVSkY1ZjMzdHdkNStNZFk3OXpCU3V0bWQ5NWwxemFVWFd0L2RlY2I4RGw1dmZVaFBXT05iKy9sbXJ5dTkrN3Q0aXF4NDdQY3A3M2R2Zk1ITHo4eFIybXhZeVBkOTRzYXZ6cEJ2OWd1ZEQzZkpkYVByRzZmMjdJbkVQU3RjSTAxZWtqOGl0K28rOWhmbmpaY2Izck9sWGRreWRpNnUrOXNqb1ZvOThZZzdzSU1ZbHpKQ3JTR3gvUk9SYUNuMHZWV251VDdXbGx1UCtiMG8zVTRGdVlqMzdyUGlkWGRnQzlDNXdjNjlMaDFYdy9ZZ0YvbkNQb1RreFNwcUZuZngvZHR1d2IvWE44Ly9mM3BoczU2blpUUzczVEUyZlhnWWIzaS8ySGRlSTYxckxGNG0zUFZMckdGaUR6c09LYmNSZS90UWNPQnVXMk5nbUNiYndmOHdWbXhUYi9FYm9XQ3BrS25VM3R3dmZOTkNNd2M3SFZKQnFnZUdCN0FBc3B2SUZ6WnViWVRqcmV2TEEyVVplL0tZTnkvbERTSnIyK1ptdDYrTlRqMXpGVXhiUTFiN3lsdmRmN0ZJOStCUkVLRzFRSXh6OHJFM0hEMHNXSStleGh6K2JxdjA5YUMwMmliYzU0NWVMY3pHTTkycnByS1JyNGF0aWJ4MWY3bkxnMHpzanFsYXE3UVdNRkFwbGRydnZMZ095TDlpeFBZY0R5WVpSTlhCVnhHYklpNWU2ZHRQL2xoV1ZndkpTYmtpTWEzeGtiWHFMT2w3RU5RWEZVMXhRaUUrM2pSclRCSFYrbUl3c0FYK0w4VEI1czQrWjhRZm9MeDNUaGdsOUJnbDM5dzlMcFQzZXdGNm9ROXNkcnZkWXZRVCtNWGI4KytZKzEyd3piSDN0OTVqWWhmaTNkbzNLNHZDVTkyNVlVMTRoVGxCL3JFc2x2dkN6TVhOanN4Y25wUjdUUmpxOEtRM0lJTWRMcUNIdXd1TGd5ZklnNDBhaGVjY3V3Rld4dXhsbFlTSEFFVFVtUEo0Y2tUVUoycFhzTzhUM0xyYmZOK3VNTEgzck9QRHNpRHN2UGx1R0EzVzBWM0VwN0VrL1VZdkxwYTVwTURMRDIxTDRzVlFJQzUyZi81NFhpeGZ3Z0VOUkdXLzJOK01TcUwwZks0MmJvNndoODBGOXRXNFk0dDVycmNPMUJ6bnNIQnl1REtFRHUvVjBmZlk1NTFLS00vSHYydjVVRjlNT1Q4eFA5eEYzRHZqeGFGWkc1dVhFNS9BQUtZK3NFNjhidVV2VEQ1ZUF1RjhlNnFqM0JPRkJtVUROakZ4ZVh3RmJVWWlNejdqd1dXdmhSdHBYaDlubTk3YWVtWlYwUWhXRnZISDZtS0dmZWZCTXlOaHI1THhmSU1uYS9WNDN2VzFXYTlIQ3lLdzV4blJGc3g1THdGQndJNjYvQTgrR3llUnRJak5WZVRiQmJEUFc3RFM3RmhUMGw0WnBGdU1VUU5LWUhranRwUlh5MWhSVmlhLzZEK0NXVnJHa0NNKytHRjByUXFudjdsYlNZRFJranZPWlZ6U2d3OUc4SVlSWnNVQXlWWEM5dUlkbVVKbGtKNVVQa0RLaGl2MGdZZ2pIMFhQOVdITWNZaExhMzA5cU9VUnBYWGp6OWFIMnJkditZSDdReEtoRUFVUWtHQ21MQ2J5eFk4aEE3bWlOQjhyelI4Mzl2WXQxMXNuRjBjSlZ3ZTg3YmV5SXdyZE14WXU4MWJlc041VHdJQXZqQnEycjJjODJBeDR4dzlSK2ZiKzhDSzhLK2dBNElJUndvaGo4WUJsajI2ZDdXdjdneDBORU05Q0tFRkJLQzZDOEcwV1A3SjZINzRCeDlBUmh1dkdDb1IzREZ6MEREemozV05SRlZrc1NBS1AycENEMllvY1dCUHpZY0FCT0R3Uzk4YVZZa2p3N1JIanYzalpqZEZKd0NWWUlUZGFlTzFqOU1lR1pQMzlKeHJLemJwLzc1R2ZrQXU3Z1laWERQZUY3ZVVpRFNneHBFVGxSVnRCRkc5OVhOVmJ4ZWRHUEN1N0VTYWVUMGNMYXZ4YWpncE94ZzFpMEY4QU95WVVCWHVmVVBBS2VBKzBsZ3NBeTlCWnhIaC9neFhMR0tEZW5uZXkrcWs4RDVnbmdUaDVJbFpRZzNhOUUvUExPcFpQVStsSzdhY0NIMFpsNjNzcmViVDBGcUFXMG9pZkhqankrUURZcGpHQ3FyaWkzVHdYUUd2UDl1RUFGZXdGNnNHbGNHSFVGQ2VQaVJNNWd0MndUMC9IRlVqOVVEcHNWUHR1dHZFRGZNT05ubkkxbkFZcWczSFpCYkRGNW9BZnNWcVpqWDNBT00xMzUyWVZnODQvOFgyUVhjd2wvakdPd2liamFSSEFkQ0h0U0ZsY1FVTU9tbi9UZ2lFQ1ZzUTRvVUFxY29CS2xJeGp1SlZ0ZEFpWlA4Z0ROQUV1TDJIZ2xhNWJtSU5vS1pNUXgzR1dIaGRYZ2FZbzlZT3ZCZ0srR0dOK1BKU1dsbnlTMXdzWmdjWC9JY1ozbmVtYUZUTzFWZThtd2NkRHgvdU4wRlhXVGNTUjBVekVIUy9PVm9OWGNwaHpBd3J4aVlITDNDdzdOcWlWSzdJSFdMZ0cvQU03STcxb09TdjF2Szd5ZzU2SGhnL0QrQVl3TmdRUHVQc2hlZUt0bXJrNXFwVWdUUHZxNkJRd0lSZWNXQUl6SUFnb1BxOEZPWVlhSllnSGQwSHlKMkNWSFovSUZaajF3M052dkFIZk9WeCtYVmlteDhqSkN5WDV4OWVQdnk1MVBUS0c5ZnNBRnVUdkg1bkhwdjN0SjYvLzl6LzZyejk1blIvZG8rUzdZZ3g3YXRpZUNKcWNZMkpPWVNtSTZJUFJoWmFDOUxEZkNHbkxFSUNYSFNxaWtkL2JYdk5JSzliaHhlMi84K0FBZExUK1l5ViszNEJGK0MyVjkwQVpUTkROemFLYXp5M25UaGNDT1BGeW9MK0FIbUZ0WGlBcjZvTzZIdVRIUGtKazhnc2QyRjJIa3pIdTdLQzRIVUJYL2ZQRE0xK0w3VUc3M3hVRWRnL01BTVVPTXM4Y3ZUV2taZURtY1c5NHV3K3ZKRTZMZ01RM2RqajBEUkFmUmpvdWNIREJHV09Cc1pzTmdjR0FoeGU0Q0tabUtiZ25kbTBBY2dHYlBHcE1jV2dURXFoMXBMdUJhaE55M09OMWJ5NEZxY0dQYlJabm9DMnNCT2FQandUSklLNCtSRndZVm9sSEdiQWpyTERSVDRoamIzdVB2ZGFvMzJYb0N1QXFvRkxQMFN6VURaNGNXQkFZTlp0YkVtYXZzLzBOR1owNHBwbWZNTVNuN0RQVUcyTjBmL21xY0d1QUpkQ2d2a3BKaWhuM0JQdjRLcDQ1RDV4K3J0eHpkaEZZU1ZLTWhDR2ErbTdzMG9JMkw2NTlUVFFTU2xqZklUcGlqWENXY1R6cEc5RC9QbGcxZVA2SHpNQ1N4MWZ4ZGpzSEhCWmkxV1NSRDI2K3JQRmcyTGp6Qit3QWplQkRJQWp2bTU5OEtBUitBbFNHQ1BYQ1l0MGkvVGRNOUw2OUFWNVFSU0p3NndSa1h4ZXFIZlJVQmJ1QnRIMWYrNFBIQU85eFk1amFFVmhnSWRZc3duZy9YTlA4OER2b2lCeXhBdFRaenl0ai9ScXdINnorcE1CdDVlTG5oMUdLRy96QTQrWEkzbU43ZUMzZW4zMW5sWjhNRm9wQThZNEZEZTBGc2JFZlFFMmVBMW9CMlVLcU5vUmlwd1I1WVVlQ3pBdVU4b0NjTUo2WXhBZzl3dG1odUN6WERlU1NvbHpGWGNmREFYUjFuQm1tSmJvM3BpZ3dMZWdmc0FHVXp1NDBPSUFzbXAvbEhiWXVhY0o5TVdQaHVYNzhyT0x0b0phN3Yyd1RvcEI1ZDVUMVpsVnVURHUyMVRBR0RCNnpDWmlMT01DaG4wMjhYa3FvN3J3NklCdEVoazRVYlMrT0NIalRXVXo4Q1k1QnpvVG9ZZWpoTXgxRUNCT0ZUa2kyMk00SGFBWGtmRFJzQ1Qzbzd4NHNQUnN5OEtxR0g5Q1dEUEREYzJFbkJNTTNrT2NiMkFCc1R4QW5lajBlTDJETVdiM3lYbVVqZTlzY0F6Q3MzK3hTeWU5QmgyL0d2N0ZFT05aVldSTGpiczhMVE9rYkc3THdkTE9BamhyRW1uVy9RTlpZaWlCWkt2bkJpUm8xQWFiQTJPK1dIM1h6aE1MRXZEall3ck8zRmNNcUFGeDRDZWp2WlEzdmNxM3FIbVNsY0hUTVJvWGlKTDRJQkkyU1l2QU5zRzNoallhU0F0eUlpZ1dpOU9vSDFRbnd6NDJLSENZUG1NSlU4U0JydlNCNmxCL2g0TDZiVmNLSlljNENDaTBaRzVXTkJjSE5XN1c5M3dFaGhHN3NDNElMOWtIVXdkZjUvTXVkZytPellwQ3FnSTFHWVBrU1dOZVE0dHd2T0JlYm5zRXVoaVJRWEFTOFg0Q1lnRi9BQzVhTlBPQ0t0VnRUbU1EeXVleW9UbDhHQ21Lb2J3NHFjcGUyc200TEVReVZGd1A2c1RnWURVUU10VVJjdVRleUVScU1ITXdHYWhDbFZHdzhIa3F2aXoxbHpaQ016VGJtZ1RIUmhPUGJyNU02QWFBdnNSV3dCbXo1SFNnZGNDRGYyM0h1ckNHNi9BRU9jSk9mNGZZWEhLa0NBWDQyY3VLL1RVSnBFTWJ4WjROYklmcFlmb0JXUUw1cXlPK0VMWFc4RGw0SUs0MmRsK2tCR1BrOEpBS1dpVks5ejVWZytUamF0dTdkcTZyQU5xSURyR0xJSWpqTWJybUJLd05ldDluSEpQMkdvZjdqU2Y3eElOZWZKMEVQK3JHS0JuMEUxWHlLM1VGSXY3eE9mSmUxaGcwWFNEUFlDOFZpZGVKZE5KNjNEdjNLTUZkTXJzNUFFdDFRYlg2ZzFJSkFZN1poYzRqQWc2YmZmY2xadnZMbjFuang5UDN6OXRmZjd4OC93SzFvQXlMS0FwMEY3U3ZqMGdHNkJsbWtRYzNvbU5FL0JiUEg1MnVZdE53dlRGcVNpaGJJZnhOQWc4RmJkREZsc0M4TURQbitqT2dtNmFDeElKZ2p0cFV0TmNSOUZuMjBjQ1U4VU9DeGZEZk1OcUFWL3dhaURzK0lRT0lBajFSbWNhYjVPU0x6WXNXaFZNT2M0Ti9DR3BkeGpkWWJuZ0hmY29SZ0hKQWxzUDBEdC81dGYvN3I3Ym4rMmg4dC93Q0I0Q3p5Zy8rRjMrQlpGNlFIR3dic3lMVmdPbEk0VWNVYnBMRG4wVThqNlNqTHRiQ1FhK2JLQzB6REJnSGxZZE1iMnNjMmJyeFVsRnNjb0w2bWlBdCtObkI3NkFBUHh4YURURmhZTE9TK0h5RDkwem92S00zTEUzczQwRXlNYk5ESHcwbDU2Z2VLNjE3aVk5L3pxby94OHIzN1QxbXV1NVE3N3FyRkV4Z3Z2UHRFR3lHMWtxNFRFNE9YeVJyWXV4T2RUbnVBT3o1c3pGNVY1bzhDbEhwTkhDSEtYVEx3cHdDVEVJUTN3bk5CcUJBVUtIZGZUM0J0QjE2TjYvTzlWUVd1ZkNMeVRPd3J1cmswSTRqeVBXREFLQlJtbUxYcEVTS01tMHdSVUlIbHVDVmFzbURlSHl1RTFRVWxTWUNlVmVIS0czZjBqQXVFTnd3YUdOMUhaaGRxSk5WOHgyZDhHQlFNYk9uUXdoaGlVZGtOV0EvajhLOUJsS1h4YjZ1RWRTSE5NR21EbkR3amtnMWRnS2FPYjJZYzdhTlo2Qld5Z0t4bEtNcWUwcUd5c1pQR3BrUFNuaUpWSTExR3pscG5sWDU3V3h0T1FBZ0hxbWhRZDdPcnJDRS96WmVrcHhoaFErbml1c0RGY1pUZ0svaktWUnNXMkRUMy9hcExvcnh2RjBYWVRBUk1zcU9DT0lxVjJzYndzek5BMDY1UzNGQmx2RHJQaW53WVFLaDRpbnJqYmlyVXFPbmtoaVFLUkkrM2lSTVVBN1A3TXN1Q2dZM3pCN3dnZVJHb2ttWUE4RU1vNmhWRVFoRHVsY0ZQKzJBMTRPdjNiaVFhVWl3STN6bmk4eUZuSDFxdzhibnZCNVRoSmgrV0hKTlQ4SmhUeEpiQkgrcnNQT3E0alMwWFZnMjhPU2UwYytBampBRkRRbkd2WUdONHhzZEZjZUdZekZacmlkRFFDMTc4THBkZDBhMDREZmdScTJpQWs0VlBPR1dlRncrd1loOXI1MldBdzQxUE9yT0dFSmlveHQ1ZjRKeHQzQ0UwYnJoa0wzbFUwRTB5QVlBVE8rSVhQbndzV25pWGI2UGFLVHpvZnRYbnpUZFdnTkthVjkyNGIxRFlsMnRDc2NETUNPOE44WDFnTml0eHU3cUJPeER1L0Q3Z0g1TW5jRFV3Mk0xdEFBdEQzV254TWpRMFpjY1E2b0N0d0R3bHRSaVNnR0QrSTNSZnNVMVBodGkrMEVoMGJqWEVSd2VRVm9zZ2pTZGZBUzF5WVRkZWVFaW05NnQxMjVpQ0RESytPN2dVZndydmkwYTBRTEliQzNoWGN6R0ZKZnArMFA3a1JaQmdvL09QSWUwbkphQXpBc1UrQmgweTBnM08zZEtDUnpkbDRuN005UUJKY1ZPL25CSkxuSzhoR0RMa2dSRnBpQnZhYmpEeFJJK0JKVkpZRUZZdkVwa1FVU0hlRDVIRnRjTXp0THBRWDZTcVh4aVVrUkFFVmdGL052UGhyMXRuQUxpSVFyV0ZIR0ozc1JjTDg4YnJ3OUlTdUFpZmVaczRlQmFVYUYrNlN6d0gyd1NIaG9hMnAwWUFQQ0p5ZzAveUVYYklMNnp3NDRGZlNDQWZRR0s1YjBidVFmNWdSUnpaQlhwY2J5cURiNDBKL3g3OFJqVzVoS0huQXFvRVJ4ai91TEd6d01jbkwrSDQvVnZpcHhxZ1d5dzQrS2lhdDllY2lYTU52MmgwcWtiSmJ3QnhudHVnMjkxMXlZYWwwSDVZMm01eFBYbEdKUUhsdU1TTVlLS04wVVJXT2hCcXBpK0ViblhOMXAxcnQrYVNHZ3lKQVBpVVpjTmhjUytNY1lqQmpFb0dSRlN3WlA4UDRSUG4vMjNkTUFoOE1HT3JJL0Fob29XWi85N1hlUGFkSjArSzhXOG1wZEN4SmRteXhDZWJKR1dmRFRGaEZmY0c2ME1QQkNiL2Zqc0U4c2NENDZVNHhuL2UvY0ZUWUNuck1JMmtTSnRyU3ljcUFqK0JkTVNUaEdMWGE4K3hSL04rcllmeFhwK0ZMYlZqUDFIUjI5ZzFST01GL0pmK3o5dWR1MDJEQUZ0NE91dUJFRHdRM25QaHV3QlBGOEpmRTNnZjRJUTV4OHNVQXdKNEQzd3FmdE4wWDZ5WWgxK3VEN01aa3M4d04vS0JRZ0JWeHREV1hQemJUNll2WWlpM0FmenZaQWw5MTdNZ2Z5MEgrSmdIaVRkd1BPQ0NzVzI0MWxaeDFYRGsrMktIeHozaHVyanpyYWlCTmJXdmtvMSt0aDQ4aGRsci80ZWJYUCs0U3o0U0FVam0zWUVHYUxVTEQ4WkQ0VENZdUxzT1Q4bm44Vi9BL010MkFBN215ZkxoZkM3Z2JSelk1NHh2ZWo0VUdvdnNtczZUamYzWEIvamJ0di9MZThZYVFQNHNEUndESXdGaXdvVmtUZkdKNldBeUc5dUNEVUhaUVpkR2ticWs1ZSs3aC9YQyt2U3hMMGc2V29sVXl0QU5PT0tYSTJZVk1aYnNqQ2RDNU5GRjdERzg1MzJCditBNUpLZFg1Qy9xdmt6eEtaRDRiellBSWlTTXpsV2FOcXVHemppQ0ZCRllCcm9xWDlFR2habnhSRGp3OXk5UVdpYVE4U3JDdWZFSG1xT1ZFNHFMUDhVbFE1QWIyZ1FWS0MrV2JVdi9icE9GejFHQ1ptSmtQOWhSZEhjKzE1QmNHTXFCd3R6eFh1am1NTThLMW9UTm1oekJoSlozYzlHOHp3YUFSVDR6dFpBaFAzMWpQTEFvbHo1dm1PbVkrSU45SWhEY2oyWEd4NmY2NFc0eGxTYkp3Q2FOWndRNXJjTHlzdUtzblFWbEdhVFI5MlhBY24wbWJrcnZYQVZuaElpTWVtZFpGVHVDNlo5bzBLL0taZkxxMjFnWVBqYXpRZFU4dmtZU3VyNFR4aVB3WGliUlgrT2Q0UFJwVGRrVFBqTlU4b3Jlc1pYYklCdjgzMmpaU1FVYTZDcnJhZXdQcUxZQjhoODBmeGc5ai8wQkVMR3pjbjFjU0dkakpxWmtqQ1BTVlVJaGlEQVN6Y3J2WU9ZNGhxOEh2RWc3OVlsd3UwTWxQcmpsaExzVlRHUUdwVVdyNmZnWlpDMHJLVlBKUjZad2E5eitTNWdTcnYyWXpsQTRUVFZIbHAxVmdTeGJodkNMYVlIN3U1VWozRHNOZ0I1NzJMRHlMOHhSUHdoZ0J0VUNMWjU5UmVBbFpDR0R4T1I0b3QyM0lYbEpaSWh2TFN2RHExcVk2UVNuMkV5QUMreUROVFMrWHZQSjVEMm02UnQwTEJYVEdjYW84UzFjVEV0dXZZTjBWU3lzK2NQSHJFT1ZZSU5nanZRa0JKMzc0MjJ4a2Rmem1IU29reDNBV0l4alc4UFArOEtqdU9NYjRJTUxoSUNJQUhCUmFNVHJ0V2dtZmdBekFBbnZIUGNGUnZCYnFKTnF3K3NoakxOM0pCOG9CbCt0ZUxadlFlR1dnWTc4R0xKUy8vKzY0N21meVV6OTB4RGlveVRvZGNUeDRMQWcvakhoYnNWaGlWMkRHQ0JIK0hTVGdQbkZVNk1Cajk4UHhrdStmalg4Tk41bkFuWGErNWo2QkNXQzhYQTJRcUJRakFMeExsQ1d1RkdrbHZCWEo5bGRBUStneVpHS01PcmlVWUJ3QTR1RER0NVlVOGdDTkdxREFTcllPK1g0WUxhUS8yY045cTBjSGdiS1FZbkI0UDY1RUppSlBmcGJqa0hjRDBCS3Q0bm9YOGJ2eHhVanlwekw0WXFZR2ZqUkIvUUI1SmdrUys4RHdTL1gxd2NZS2kxZUNTa0NJZ0xTcDdiek9Za0h4ZG02b0J1am13MHlnemt4ajNsakp3MnI4UHdZK3JvbmhpM2tvWjV1TVcweVY3dE11M2ZMT1VDQ1NHUVV0TGVsN1JSbkx3UDMzU0RoU1V6R1g4ciswdkZIak9VSHVNM2xwRFIrYlA3QnVlNEhCTWIzdjZhUityMk0wb3h3dkxvQk1UUmVBL3FPMGxhVUhOK2JJU25XdlNDa0JpN3hpVHgvUnl5eXRVeWdGL0JCcmdDaHVrNEJOVUNMcjREaDRhNUpOTkpNZWtSVUpQVlhUemVOemdGYVU0OXZ3aUlpZ1lZaGVTdVV2Y1JrckE1dlBZQkkwYkRjWXhZUlFueEY4NVBzVHJCS1JjcUtqVllOeGhpK2g3UkJyeEtMc1ZXY1NNWFpZbUN4TGppN2NxOWZES0NVQ3dzQ3JUZ0xGa28rUDRRUmdPZ0IvakMvckErQUE1dUJhT3dGOEFjQ0FxRW1HamF3SnBnUzdodEdYU0IvZktKSkFObE5SUlJXeDZFWk4rRGRiamxDTjRqQmJxSFhWb3B4endTK0VtNk12NzM0QlUrSEdGbU90d1l3NHNGT2ZNSGFGVGdqTW00bGp3Z0ptKzNXbTlFQXF5UWdHTzRZdUNoZWhLM2QyMHJmdUFBRnRSNUI0UGRTSDdINEgrZ1BBRzdxcThQbEEreHJqTTRpbGN6NldEdGk2VkcwWE1EODJnY3VoR3creGdBLzl1WEJxUFBLckdSc1EwV0NrcU5nd0xKeUZxMmU5UVBRbXpxZjNJUnJZUkxxMWFBUGtJTWJqVzh3OW5MU294OVdFWE9IOCtMM3hwNE1qSDk5VGZudkNtZmxmZ0tjMjBUVzhiNGpYdEVRMVhtWDhQNldNQnNWd0haQjNXNWo3b0F0a0NNb0JFU1VnaGxCU0JHY1c1L3lHdlora0o1OElaYTNGMExlWUR3c1VMb2JqOWpSN25iQ0VqbWZ0QmEwSXFCN1ZpeGlrdGtMc2FqSlV2UEZPTmV6MkpYTDVIZERpNGVsQVljVlFTQkFFYXdLeUc1dUVJcUFRYkxBWG1BTGNCNUlzTVZTWlJvOW1aZVJRWlpzK2Q3bzFScnNjRFF5dEF5ZTZUbTJtUWM0bzZWL29vLzdNMHN4QWF0ODBZb2pyL2RkTUlXZXJlRVNNb2RhY0lvMzFzMnlod1NBMlBHWWlSdG5BeFBjbHY0QkNudmREVThDV00wSUdFUnR0Z3NMYkVSR2VKaDdOUStGUHFMbkdMWjZTbTBBeXRXRU5JK1hZc1o2QS9CQWhWQ2o5VmhTY0dQdU1BaUFDSjhINkdEV0xacmJSd2JxUWhiQlQrVStKZGtac2oxdzJoYklZN0FOd0FEOGRVWWJGeTNneWVPYVdJZU5CLzhzbVFKVTEyckFRYjJNM0NJWGd6SGZJUkdzdGVsNjFqZFhvL2ltd1pEcVZKRzROaSt6ZjV0N2Y0REs5dlppNkdzK0lEdVhHQTZBSU56Qk1PWDlqZkdyM0w5M0hKWVZDc25OdjdKcUwwOFU3N1JQclNFZ2gwZXRwcmNNMlF3bFBPQ2RNS1VHaTNBY2liVjltcVVNeGdpM1ZlZ0FzWDVxUXkrc01wVEt6RTB5Q21scE9sREFTZ1l4aUxjSFltUkV6K29CNjNiQVFSMEVqczE3RTNJMXVuVVhEN3RXVVQwTU1EZk0yekl6WHUzUmpuMjhQakNoV1Nkb2NBMnYwTFJkWUwzQlRzT1ZsY05WZVhiQU43cTJ0NlVWSm9ZQVk3L2tQTVNlYS9vKzBMZERBNUJrTkJjL2hIRExCTEo1NzJKUU5vWVR1VjJza2ZnSWVRWW52QlZRUGpKRUpCakRmREFnd0xNK2g2V1RGZWpHNmtJRis0dUFGeFlaRXpiN0F5RHViN24yQ3hSRmJnQTJaclJhM05NMG1wVXZnQjNqSWQrMHdIRWFjRHY1MFJQYlQzNTVMR1F4SHdUMm9HdFRKNDFPN294dDRYZFNyalY4ZUtZRWU4Q1czTWdpV3hXTVZ0WXBTZWFLQWwzUTY3UWNOZ2ZySVEzTTVYSS9rQlpXaEV2aStwTk9hb2ZPdnJBWHQ0V2w3N0RLdzJ6dWxEdWVjSHMzakpoZUVPRmxOZVNmckVQVjFrYnJSZmppTDFlTDBUU0N6SmVnNWNteWFhdFcxQVI1aTZXZSswTUpjRHdnL3djRUJTL08yWXYxdG5HTU9NLzNSYStuNFJLVFpEd1FXQUFEMnd6anIyZ3hnTFZqU2lWTWpBVzgwdnJ2SHZiZm4xVlRiVER6VnlNUmJoWkM3d3dRWnovRFpaaExhVHgxbUtnOUdLQ25rS0IrMERRMEtXQ1pwZ3lsNTFPKzBHUkJWakpOWEFkbUJrSUZBNC9wQ213Q2dBaFE5ZWlxekJBYTFlYW52di9xcWY0OC9sL0pqVDh2TVBKbDBmdzYzd0lwSEJ1Rm1CUmM2WWtDaGNPdGN6c3gzbUNVRW9xYm1vRjFIT0QzRXpMandmbDYxWGQwUElySGtURUF5ZHg4U3NnS2xIdDEwMTJzZ3J5OTdNTU4xMXF2K0JXb0IvTUdCN01vc0tPcTJZUDhUNHZxQkNqVk5ISUMvbUp1OHNsZ0orU3ZZZXNBUUJhdkpQUHFrTk1NR0psWStHNGNCM2RrTzBENjZVYjRma3BRZmxWc3VrNkFuUlUxcjdzYVR6WGI4YXpiNmtFNExGK1lEU2RaOGdVQllOOWdSZXdZem1IakFubHpYSEVDeUdQWjUwd2duaE1SV3NhZUgyczVnUjFBVlpibXc3K3hhdmxiMTBrUFFGeHVxSFRiSnRPTWhVQXNzSCtQeFpMaEcySjhucTc4SXhuMTE2TWQwalJPVThtRmhFdHVUMno5czBKbEdRbG8vcmlQMEhvMHY2STFIdmhNc3ptNXppQVZVdmo1czA0ODR1cVhGdWpHd1Rhd3V1V2sxWUxsVlhoTmlBdDJCYzZFSHdaU2xwd05DY2tPQWk0aVcvQnozaEhPQkFhK0RBN01mK1RKWE9YeHk2RDljNVgvODJWK1VPYkZvWWxzb2tiNVFZNE8yOERFQTZCU01Nenl6dkhMVm9tL2hDbXdocEZaeFZCdXU4UUM2ODFhbkNSQ0F3RmpQdEUxeXg0RUlWQ2IrMWV2THVkRnN3TE1CaWNmc1J3d0NBQWxRQlA2QXZjTW1sYVdoMWREOUxGYXNvTXJLWFE0bkFkRWlJZ2lpakNBL1A1YWZWNURFYzFBOG5kYVpyQ1MydHdoZllieUIxQ3BUUHdHRjE1R09JTk8wNFFGYU41bWsvL3BxbzBPcC8xTE9OUDNXellZYkk1Mkp5VFEvWWlqYkxOa0pwZlN0SlFCUzJNZHZ1V3llUm9kS20xajhWenNtRzVnV01OQ3NrRHVQV2FTMnhzUEEzMFhpR3JHL1hJUi9BT1lvZ1BOK3VFVzFvVkQ3RUxnQmE5bjlPZW5ZY3RXakdLY2cvVVZyVTA0OXJPYS9udkhPMWN2TzBVUCtEYWNMNVFYc0huLzlIT2ZwSGcvSkZOam11SXY0RzJKMkhHMS9UVXpLVFYzRGZDTVpwUFk1YmJ1Q2VlMDFIeHVDQ082RnFyZFZjYk9jVUMySkpnM2UxbXdaWWtNb0IxRWpndXdqQm1raWdCYVlHWTA1ekhyZlVSVHYzRXBPWEhXMzE1ODNCVWVQTzJDWVQxK1g3UGtoRmRBaEk4WHhVamlRbmgzTmdMemlFTzIvbUZlRnI3eHFoWGtyNzQ5dU0wT29RUXZzVjdMTkVuWkE5cUNGYkVhY3oxbUhpeG1mTXkrVmVQdDdPb0RPWTQ2MFBFZnF3TXF2Myt5aEdGd0ViWDgrUUNXK0F2YXdhanYzNExaT0hCTjJ6VVJ1M3RMYVJBdlpCYk1oS213emNzYUk4akRqamdSQzE5N2ZXZjhRSS9zS3l4Q1h2dmxZbXo3K2xqeGFpMkx6U1JaUHB2eDBiZnRMaS9PQWUvMTl2c0VWWDJ1QjNLTjIydFltMTJ0QVVIRjBUc3dNSjYyd3czUlJWNThXYzlranVaVHBtSXBrQzRCU1lUZ1BuaWFpZG1MMkNqUUsxYmlCR2FteGQ1QUx4TjEyaXo4ZVFtZ0pNTktwbFR2YW0wQVVMc0FZNFZZdGh4Wm13SkkrN1IrNEt6dlQ1TGx0N3NYTHRRMG1aNG52UEJQbGhtYnoyWkkrQU1yS1Y2RFpySGhGdjFJMG9IS21QUW5Wd3RqN3RmaS96MnV6RGZiTm9BYzVnK1R2VWF4T2toWkpBQVRDTFlseFh4eVdmaVcra3pJckVWUUFmcmJqQjVhb0g4dGdBVWdJU0JkMWVSOVlYZG5MVHdGR1BTMjU4c1ZXSllKZ2pLTEpZbzRYdzBWVmhYQS9ocFZnM2RjcjkwWGNnSjBxaGlSaDhFK1dpcFRMak9DU05lb2R4c05pZGdiVzhscXY4WmlvNDBWcFdOU3hvUHNYdGs2Qkh6ZCsyQnlnbEhCK1N2QVFiYUJHNC8xM1VqVDlBWFpkNU1Jc0JtcmROa0hiSGhrYjhDYno5WE1WRzFveHltM2hzcytWbWpEQ2tCN29ITXdHclRpZm5uQnQ1My9pK3c4d0lmQzQ1Yjd5OCtvMkpRSllwdDJQVUJxam92RWZpRXE3Q25JTnZDRHZBYjhpMzEvQ2d3TWVtdjUwd09oZ3lzQXZuSkcwQU9ZTGQ2WGoyempqN2xNa05qSG0xZGJRbGxMa1YweERuNGJkaGtubW8ra3RtYmVGSWw1UG9zV1JDNlBEdkpURWM0MmNtZndENDdOcXNNdFI5U3N4WlBYdDBVTEZOakVmYk5hVU1JTDU5TWo4dXdLbzd1eXJYUUR5MS95Q0NnUzVpemZLUTFmQjBiQVEyYmM5Mk1zMHRvUk0xUnZ6NmUxQ2RNNWdGTFJ5cXI3bWloTkFxd0hpU0QyTk9PYTBpODNhbXJmNmtvMDU5bE55bVJlZnBaZmRWY0NjMzBMV3drbCt1VWdzVVUvYTFPczlVa25QV245WllUOTN5YzZGTi8vdk5qZjdubnVlRXd0eUJaSWFjRXZsb1ZkZUxIUm9ULzQrUmY4QmFLR3RSZ05CTXZJQ2JzQjk5Zm9pSW1SYjA2VU5WL3QvL0tPLzd3aCtBWVR2aXhEclNhODdjNUZhYTN3U1JIUGdEQjJ1R2NIZmV5bzg3cnhBeWNhOVZvaGdhblV1b1NUUFpBZ25TSUNFWU5lQ1FaWlFIbDlOYTZQLzdUN2cwYzIzUmxoc1JEZm9WdEtFZHh4ZWo4d1ViTllKSVdoUnljQmVCbGtiUkV0dmg5WXg3WGMvSUIxUTIzUlY5UU9tZFA2TnQ4RDBwK1IvMlU3RnArSHBFMTQ1RUpiOFpKY0c4Wnh3U1dUS2RoZks5UUdYcUhwRnYxbVNHRGhTc3NNTXBTWXgwQmhoMm5iVVhETEJYTXdaaDRHY1FVUnp6Qm5jV0JMc1hDbm1UcC8wVVU4Y0xhd0QzaUM4RDNSY3RiYkxQUnRuMk5QYUxpaFNqUVJxbFdRN0ZRYjc5dlNuWkd6ZDFsemNvdjNPaDlmRlVLYXR2VjVDUk5uTU14a3FzRUc2OWdDWHNVT1R2dlBycnNnSGJhK254d1AveTR6N08zREFXWFFRbjBwVzRiYy9PcVJwVTU0bDlQUkNyOHdBd2VudU5zVjBBdHJ1TktqSjc0UFRuNFZvYkVNQVVFdDhmNGJSSk9mSjcwV0w1ckF3eWhBS3V2ZHJabTViWGk1TE1NeDdXcjQ5SFBickh1WjNTNWxpTGl0b1dZZHovL2s4MzdCVWhha0lEWkFWbHQ4K0VFcUw3MGt6Z0dpalZOREhuK1VaWjJZQ3M5WHNsMDF0c1c4MlU2d2I5OEw2NDc4M2dhUVJvbW9WTml4QTlnbmJnbWlneGV2dkJ5R05kdkx0YXo3ZTVDOU83WUtsRjZHVFNmUzFLMXVaR3RoTXVpbVZYTzN6WkdYd0FBdE9HMDQzUzQ0V0lpMTRBYUF5K2hKVG1pamRiVU5WRnpIZm83R1N4YThHZ2FDUy9FeWtKcHFZVWUwVHRnUU5Xc0hlT2tkM3dxQnc0M1Y5ckpKQTNFMGhIb0hiUG04eFFzWnRycHZPU3p2azJhNlVLTXh1aktBWTBFaVlKQldCa1BqeksyY2VwS1ZMS0JCOEsxclFNcENNZFUvYkIvYi91Qm53OVlGdjNoYXRKbkZzb2tBeGMzQmVSZjNyOWJ1Um5mdGRzYWlQbmJkQlF0UmNvODhLTHgyUXBNdHRPRVJybG93WEphTDVmSXI0bHRXNENmNEt5c1FCRmJUd3ZWeCttNE5QMEFmWmhKM1JCL0pmb250RjY1cEVDeUNQQU03eVE2ZHZJVUpJZHVPcmRoV3VHOGJYbzQrZG9qSGlaMGxiREkwNlpVVEFDY2FpQzNiQ1lVa0E5Y0FDdk1HbC9KY0dLYkhRa1QrRnlIWkUyQ0xienNYaHVHaFNKOTFwc2tjQnVRZU1QcTl5NDZCdlplRkVUeHcwNkhqdkxCK0U3ZVF3cGtmZzNKR2F4WFN4RDg2b2NNbnFWQ2MrN0hMT2QwWFRIUHFSNUxKS3ZZSER4UDEweUNHWVlIektvYWc1QSsxWVFVZXA4ZGdUQjMrWWV2R043WEk3M2RmdGpsQTZjcUpNMEZVNjdCS3AzNXIxZXc2MWM4TXZzaDQvWUNCcU1sc0FDRGxFV0FBd3U0MDgxVjltMnc3bjk3MHMvZTEvQnJYNW02R2xScUxnSzJwNW93ZStNM2FVbE5KRkxTYTFZRGVHK3dHK1Z2R1k3N0gzbUEwa0tkNWdGVmZpdllNVHN1RU95SzFveTNoRlFPYWRmalcyZTNiSkI2b2R3UEpybUpWU21PRGI2WFJ2Y0JucmJDYm5aWHczVzdWa0JHSzdOd0k2N1FGb3RFMUs5QWRJT0xITmhWOC96VGlqRTE4YlBKSHlIbCs4RE9TWnZrYjNxVForWEJxdFlCR3B3LzhOWjdQMHhrSDJYay9MMWgzWHc2akVOTiswNTdKTm5Ra3hZZzZHQm5RQVk0M2EyZmErYjExeFVGMkRYWUFVTnA1M3BMVjkzZGYxdFdlZHQxaFc0RHhZNzROT3NNTklJd2Zibm5XaEJXUEJnUVFlQVBvRmRaUm1wanpUU2tPblNsVTFOZ3NQNUFBNjFndEs4YkhORWxyVnBlbC96QmhSbmRyMGg1OEFOcG5XWGwvOS9aS1hIalllS29WcnhXdElRaTFzQmVnWTZnN29vQU9nVGRmZE5PdU5pejlhY1E5bEIxVWJUdkxCekVBaDJDNVh5dlY1NzdhK0JXWkRtc1BkYnRteGdQbXRxQVo3WjhCajE5VjhtdDFDQW9nbzlzRjJyYm1hNlE1UDE0STBianowNENjdkcreXB2Z0J0WDhGRFdUNWdMNDFvR0dQci91WXFicXRTNzdOZWVkV09nN0lmUG4xL3FyeGg0TmM4RGxQSElZRHBvSG96M1FES3NKcXV0UmdqTWVJblZXdHBwUU5rdGhpbm5uNStWdzRCVHVSV0F1Y3JDSnF0Qk4xK1U1aEVtNGNCMkFQTE42bTNLZ0NxTDRxVTdjRjRTaUlVVUJ6bmxlMjZ2N3JqclZ3cHRPdklqdHV5Zmc3c1hqZ2VEQUd1RzNoNjdDanVPUmlOUU8wWXVzWjAzNzdoamRjV0NLTTFNUXM3UmE0Sy9jRmFDR2JncUtUR0xUVVliRkk5UWJGZmtpVjdQQ0pvQ05Fci9GSmZNS0tGNWFkbDBJSjJVdGNvRE5MT20rS2FpNXo2YWNGSFhzTjliZWJ4WGpNdE9NQzhjTDU3ZEh0OVdRM3dvVVRzY3BqV2VzSVcyUHZRT29MMDdWTWN0cG1qcEcwZkFUK0Q3UmZXZVV3aVlBWGVoeEswRktISnRjTGtObXFlU3F3OXYxQWxGNDd5UnF1eGtoTk40eGdlYndzT2VpWCtOZkRVcTVUcGV0YlBqWmozZVd5bGVrdFA2bEZnc0hIeGhMaTl4TzJCVW4vSnJMUEF3d2orcm9LcUI1dUdSZG1uaFIwaEgzbzk0VmYvTGFqdm5nQTF0ZTVObTlKZWlKTXQvbElhL1ZRL2ZiV2RUdU1CdkNWOU9XZ01FUXViOXRnKzhiVHNzdlJ4Z1F3OU9uL0tGekRmSDAyd2p6c3R1a25zNXFzWHhCazhYNzdBUG9Od1o0aWc0MUR2OUFmcTRyaVpsdGZFSEpJM0RqNWltWmpXRFNneFpOUEI4azdlVXdiNk41azgzRUM5SjdZSnRiaVRsYzF4TGJqRWNUWENvYnlMSE4ybXpWNU91VE9NbEo5WDV6MkdKUVQyNGhBQVdNa0NiTENEb0FadGlvQ0ptMDI0UUZ2bDJOcURJYUZVNHNNamdjb3dtWlY5M1V5Tkx4VXNEU2puL0E5Z05FZVJ6NXgvUjgrTWpWNGpoVndCRTIyOVFsNkhJVFB1UWdUbXZTZzdURXVsdU9Fa3VvbkFENVlIUC9RclY1emhBdkNiRHcrQVR4WjdpN0V3andDY0RBZWVsNW5OZlFPbDcyV05WdkxIblcyM2pqajU1UVNTRERtTnBpS3JLZTY2Z1IwYkxsQitPRXFCZ2g1SkpONkU5TUE2ZGF3TFdNeFdGY2dCc1k4M0ZhK04xdytaQWJiTkx1VzZiTkNMQzU4VmJaUXFqcUpCNWNIQWdLMmh3MWd0eVlrdWd2NXNacWtUOEVNT2owNlNBeWk0SmdOaTliZ1F4bmxBa25BTkJDTEcxQXY5dWpJR1JEeHV3TGkvcUh6eCtZMWFSMFBqKzB6UGxVbjJ3NmtRT29UcHZQREpKdFkwWDF0eXhmZ25jWENPRXp0Z0lzQUs5SDNmcXJSQzdvaGNSL1YrbjU4Yk1hQlFMK2VJRm5ZcDI4cmF3czZBR29McTQ4VkFvZGZXbHI5RXRMSFMxaDYrSjFGNWdidnY0aURkRERiQVM5elNIWXlzazdvQUJBSHJBQVZ4Yzl6OVJITks0TVZ5d3R3R01FVUIyNGZLM1NmeVVoL1hWTjZiekQyeDVYR0wwTEFDbHhuMkpKVmE1aGFzMHJyVjNSejZsMy83Y3ZHMEhMOWJ5NTUvZk9hLzc5ZDh2cXZIdlAvelNXdi8vMmJzN3lvSWlRMFlHNXZhK0tFMGlmNmtINExlVGNjbjNGSUp6OHNnK3ozK0kvTC9DeUhjeEIrdHNNc3BlMitNUGVnbnZmZjRJQlR1M3o5KzljTkh2MFhMMnVkSk9ZRk5kNklvNTFVdWYxbzE3TE05QXVYUTF1Z1pKZ2lmQ2RXME1MblBqK3dJaHdwaDJvOGhIV3daTzlURkcxbTFDVG9oMFFUdURXck5zdlYzbTBQS2Zid1hOKytLQnp4cks0Wm9HWlZzRFVlRDd1d3dwd092VUdaNEpITGtuajBSa2hzNk9iNmJPYjdySFVHVzVTQlpkaFdnelY3OURzZWF4c1UvT0l4M1ZaeWJJdGhiOXVCSFAwUnNEbWZJNVFzcTM3dCtmcXd6UmxzaUVORXhaSjlhdjE1TElRQURmTTFUTW9DaG1yUDdDZkFBbjZHbWRqRTZiU0QxQzhzYUlmRHRGUUNqTzBXamp0RDd4ak9ON3pMcmpITC9ZSnhOU2NnN1FEZ2R2ck01MncxNTA3QUNacGdGT1dIQ3NPdW9nMnJlT3pQOEg4NTFaclJCdXBrbWZWbmRhTGYxQ2RETzVGS3lJM0owdS9rdGk0V0M0TUo3dHF3U0NpQ3BzZHdkTEYweWRpNWZ2Zk9QcHd6WVpCQThRa0l5QzRsMnlBQ0hpR1lwNTFuOWxxM2xYN2NFa01weGJRcXhnZDdUcU9GSlhxdXowa2ZtZEdFQWR6MWNNckhtRHdzSE42UGl1VHU5cDlDV01UeHcyVkQ3U1BHWmp5dVpSVUdGeWlwMmF3MThBTUJwMUtCUjFCRXhmQ2JWaUE0NjBNT3RVd2FoVk9mRzV6ZnhnNG5vemFXNFM0bjdTUUxHdXhVaitBc2JQTnRSUXErckQzdzR5dmNnb3FTd1FhOFRjVHg1ejhWbzNzc2lkWnRZTU94cEgvOXpmTzZHOVhKZkFCcktPZDYrMms2WllzRktqZjdCdkMwVnVpek1zUWFWWUE4a0VhaTFFK3YveWZhM1dCT21PU0xUenk3Q0UvOGVEVVRkSW9qcU1ubTg0NG9nYzVpYmFCQjV5WHNhZjhGUGdYUUI1SnV4clRnQ3BLNzVMeU9qaDlhKzhyWW93bktmL0twMUVnV1B5Y3VFUjFqZ3hxbldFeXpCT2RDRFd2WWNVN2c5VHdoM1JVK0xGVjJUTmFGbENjMjY4dUhxWUlkZEYrREhaMitIOEFHakpZY3VtbUZEUjU4ZGhPaWZoVkQ0cmdaTkltZFhKZFJJaE1Rb0ppTlhIMnZwRG5lenI1NjRYNHFWMDhqQTZhZFdjVytyRlNjRktnRERZNVhtODQ4S3RtbzM5ZE9JOWQyTGcreURMOFFtMjJNVTFiOVQyMnRnNXpBM056bERtWFAwK0Eyc0ptUUtHdTg5cnAwcTlBak9PWkdKZXk3R01BZ2VKREJNckczUm9EWFdjNkYzZk9rdWs5eDJOclBtVGxrclJGWTVuTFNoZmt0THJEaGYxZ2lVS3c5cm80Y2FsaEc3TTh3Q2dRWVNoKzZEMjFoL2V4YkNmWUpZdGMvY3lBWGFCTC8wRTlTMXBDVkxzRmF0V0xPejVSRHdWYWNVWWY5T2ZXZElnNnpRUXNBcjdrcmdJUVN4M1ZpbkxGWUNkcnZWY285ZkczY3VITUU2c01YaWdHdFpBVkFmRDZRcnowczY3U1BhS2pHcjlRelhUYXJaWFlCTzhKdFJzQzJkMmZnMmExOFExYnRlVWdkQ1dkSjRWQ0FiWDhZMnhrbXJxWk4yUFkwVDJTL3lCbTdCdUY3RHg1Nk40c2tRODZpVk1TdTJLakZuL2RvTExKeE5pTm5wNk1wbjVTTWMwQ1FiSmhxc0xidmtON3FhS1QxYTgwRjlabllQSk01V2pWZG1pSGhuWjl2TWVQbndsTWJpTWJaY24yUHl3UWU3NGt2Tm5RNTJzbitPNTNRY1Z0WUFzY0VhcDRzY2oyenc2eHpjemlGMHhqT2F3L1JLZEFQOUo2anlwTlk1MlUzMVFqbFFjU3hUckVreTNwdTcyK0Y2UFBzV2pEOFRybDdMU1pydHhOMkhyanRkYWZqRDh3L3J6Mmp0VkhkeUhKMmhsOXV6bmNLUlVMZlQ1azlobmp4MmZ1eGJQaVpoZzZjNndWZC8vblhlaXFiSGNWaDRlZG4vd1g2b2JJSCsrYkxZNVB4ZDR2cEhYaDFoaWdhSHJWYzAwTENuaTlYSm1FTE0vdHViTExiTzNSM2pJOGluWjYra25PeTd1eGtwRmg0RzJBSkJpbzRkK3BHcTg2T0w5bVJQZFkyQ1pjUFVBcHN4cklqN05ES1lFa0dQaGRiYlZIck5Jcjl2cEZycHZZYWNzQ2xZQVpSWkJ6ZVpZa1FKcGRmeHRqdzZnZ1hwRFNiY0l4QUdrR1d5UU1jRTBiV0dVZExpZXQyTHlLL3FackRSL2l2SHQ5amQ0V0RlVnZDc2h5eWRoZW5GanFXWXRzRDhDQzJHYVk3N2FlUDBiR01GaWZhQVl4d3dIbjI5U1RGeWpJMlF6U3ZSYVpXdEZuWkNXTTRDVlViSHh6WE4vTU5JMzJ6Tlh4czFUNHpHL2pCYnVubWxjNHdQN3VUTGFGdzdobEw1NTdqM25TTWZBdERZZVVzaXo4L3k1OTU5T2VNVDBUUnEybEFURW00Rm82bkkxeWhPMi9xUFVtSjlTd3NtejJHVGtlQzdVd3NOczRqV3J5YUxVYVN6OENGN0RHY0pyWExkN0dwQWRFY2ZCaWNCU2JBZTdDcjkybUJnSkRnenN6a0RNellzbHJETWt6WUNpSnVsR3dZWWFqV0tGN1I4Wk52U2hOWVpETC9OeGN5c3FuNktBMGxwRnVkbmZaOG5nR2diM1JPU3Z1Z2F4ampNSHJBRmtKRjRXdTMwL3ZNaWdLZ0g2anFaMHNNMm13cjhHT3N6QzcxWVZMMnNmWXI1STdXMjVYaTRGb01mSi85c28vSG9XN1ErZktjV0FLMkhuZ0ZGSG82Y21yTFMzUmlEQWJ2VURVODhJdkJzc0RURUdlVlF1LzJYdjkrMTZjNWpMS092L2M4ZllibVkveVhqLzc2c3Y3NjhIdXQ5OWRXLzE5KzJvbzJtMlljczJFMjBYbTh1TTk5TzlSZ1JJeExleHpYWW5FRkZnOG5zajRocHlYYisxRU5ZQXNaZnlCQmZNZFV1dmxqT2t1dG1qVUJ5aUtteGNGZnI5V2FWZUwzM2RWcUpkQ1FQUHFIamVLZlJNRnBkQkhDRzdkYXphaHNNcUFFTkVoL21pbTY0Y2hwRWdvZHh1VTFoOG80dGd0YmF4Y01MbVZieEJyQVJzdmVkV2NVbVZkMDFJZHd6RWxzZ0ZmbldYd3ZiSmcxU2haeE9ub0RWY2R2TzVuRjJ1UUhZNWY0RjVRNGRJZTEyZ3puRklXN0NnMlJIVDZ6YktpM2N2ZTdPbTZreHRqZFZFd0ZObGFodG9SeFZreWlxZmZkSDVOaHdCVXd5MFFIVHZCNDJDMkJwOHIyWjJLUEJ0dUdHUnlPdElMeXg5TXlQSC9WTS91ekVGS0pGOUNlTnZQM2h5L3RNTWdzTzhzYXVwUGEvb3prK1gzaXovZWZ2eTdYLzM0NW5FTDkxN3Y1N2IvdWRmMXU5dThYKzNPelladjcrNEE1d1ZvNEdJQzVmdFlKZXV1MEFKblFRY0RibnRlZkJXbmx2N2pkLyszTE9YWHBNbWdKS21HbExUSEZCbWxmSVVhZlVvVlhoaFhDWDk3ejlkYUh4Y3REYWhsUC9ORlJEVGd0MC9TbmcrWTNYWFNWKzA5bEprOXdpc2tRMDFPeWpITTNEdjRDY0VjNlVUNEg1NW4zaHVGYUh4RlEycEZPMldoenVGSkNtVUIzVGx2cWpyTFU0UnpBUDdzNXFaTU1nUDArL1RQYlpyZXZkUnczOERwZXU2WHR1QkhzMkQ2cjArZFpmTnRLL3p6czcxRnQxWFBTYjlSbE9pOFFkL1JhWmZmWWZGMnVVdXVZWjN6VXZFK3pUTm9DTWowMlMvSHNyazU3eUFOb0JQeTVuYVdLQVlkQVJOMVcvY2ZjRTVEL2Z6NEpwTnNoS2RFWitkQnVhM3VMSWRvYzBYVm5ZQlEwSkZuM1pKM0taMDk1dThCTHZxd2VJcjRpSGk5b204bkVieVpUSjN6TU5pVjhXME5nN0VaWGRFYU16Wnozd05vS2pLNW9iTUZKbU5iK1ArQVNwNWMwcDAzTUZJVVdrL2ZvajYyMTFYRzRJUUdRTVRIeFZHbmcyNGU5ZldWY2o4UEVCdHBsRkJpb2FPVThmajloa25NRmE0ck55K2h5aGQxMmNaelNGQmtrRUI3b3RJNll1ZzIwbDYxVjNTWUNQbjFNMVkwbmV1eG00NGtpdmlmd29uRDEzY05ydFBnZENicmpxdDRPY1ZiNk1FdGZ2WXp6bnE2enh5cEhVS2oxbmVjZ0NleEtrSC9iMGRRQkdkWkpZZTE0VEkrWGVEQjNEODRYUjg0U0xWVEVkQUFPeUVqbHg0SURjYTNzYzl6RnNuK1RKY00zZFNIQ1ZnYTB6OHVTUUc3c1NJUi96Q2ZISFRta0NjQzVDanpld1lmZ0Y0VWtHdkEzYmVISWpmQTZ3aGg4VVIxdUJyMjBRTEkxZ0tVelgrMXJ0dTNNK2w3QW81MXJ4cjJYNFJDYm8xYVJrYlh4cTZSd3R4M2ZoQzFaanJic050MDZtclRaSmgwdXh4K0VoSDhGSUlJQ2I4ZTZHTWs0SllveE94a0hNSFViNHJScmFjdkdyQmg2UFdqRGduMFRERWo4aFlZWDZiTUpXck1ZQzNMMThHSnBESWNCWWJkL002RE9mSS9iUVZwT1lnTlFTSFlWN3dlWjMyMWRkYStUUm5la0twd2pPL2QxT0VZa3ZvNERkaGorR2NFMG5ydXl1R2MyRm9EU3NyRTc5WnFsV09XY3d2RHVuT1k0TXl1emcvR0Jhd3JpNDl6bU00aGtsRi9obm9iVW1JVXNId1BnekN6VFNoaUNCZEcvMEVoUUhOVFZ1VFpDbkxhUFZldjZ1WFE3WnY2TWVWKzJ6ZklTb2hkcllWdDNJSUtsYXJCS1FPakY3amRzZS9KSkgva3g5K25qY2R6Y3RvS0YxVGVTYndHVWxzaUFGQXI4bUNPYnBvWTd0QWNvRUM2UDRuQTZodVVNcDFSU1pBdTEvWlZNdkdjeTdlbnJkOWFWT2VubCtRL1FRaDd0cEhzNjNoWTVZZGZzM09lL1piTWlVbVNnV0M0RC9NdlJtamlIWDZEMzM0a3I2VkpNWHJaU0xGZ0sxaXNpczdrRGo0MDdPa3doT0JpdVFIdkN5ZU01b1VMc2FuSGFZZ3VkRnZCdDNRSjdLa1Z2VHRpUytGbDJzNjVkbTAwMXdSalA1SG1kdk11bDNwTWJnMEE1M1c3QU9EcUlZOW9MRWd6V0xIdmNzaks2TXpBQThibzhyV0dpWHNWaFBna0VibDB3R0lHZmV1MzlBK3RINTIxaURyNXA4Mk1wZ2hFYnBPMVNiYmFQYWdJdVBwSG5OS1hjblAvK0F2ZFpVWk9RMlE1OUZIYWgzRXUzN2J5UVZMY1EwSzRKR054Zlk2c1F5UGM0eFg4YlhTVTdOZ0I1QjhkUTJCekNsMTlYM2N3b1B0RUNCMTgrUVUyM1NaYjNRbDh3K3NXdUoyOW5IYXdUbUNzK29Ua1kzOTZaYW4rZWtSaGRxMTM5YXhneWZTM3lQMlZNZDdvdjBWWmwyNTI2WmdzTkVxOFl2NmZkYVRrM3h2T0Z3cS9CSHFZRTdGL1JtaFNuTzk5R2ZmY0puMXhvOXdlTitEeXlCV3pzM010enBzaVhubWlScVowazJSZHl0TjYvSklOdDRQbm45S3JySCtPclRLRENHVE5jWjdHNURpYzAvR1h6dE9jMUZDdjErTTYySmdaUHdRWjhUdFJ4SWpRT01iV3JCQXM2WU1QZlYvSzBZUTdTWjlRMXN6MFE0clUxM3BiT0lrL3dYU0VRSzJwckV0dUt5bXBFMGF6TG1jZW1pbTZNcUhQUVVTeFc4OFhyWWF1MU5kR091NTR6TW9CMnM4QXNWckhiR0d4Zy8vaEk0d00yWC96RWJnV0tkdWJ6V25JTC93dzRyWExHTDcvQXNBYVlGWnBobzhhdE1OWURaWEcyUmxFUVBsQkx1eHkxWlc4eVpIcGJYVnhRL1NCY3lwYS9zLytzaWkwc0UrVnpxSW5pc2s5U3pXQnhjMmc0T2o0MzBLOHR5K250R0p5Vzd6N091TFR6RmxLQ0pQZGpkckdZOGowRUZrcDRXOGdXN1MwdmRqVmE3dmFPSzVac2w1L2xsdVpiTFZwSHNPcHZzdUZ0ZEdIZ1l2Q2RHdmNablpkVG5JeVE2M0k5VHdKTllBaW4vWk82T3hsZDBVTlVNUjBhNHVrVlJ0cUdFd2FocW9nYnpnUUQ1S0R3NFd3eDRKS2pWRHdtNURLMC8xaXRDVE0xaHVmOFY0d0dyQVRxWUQ3RTZnTisycWtnSG42dzltNU5QMkRHSG5WUEl6akxPVjlHY3dWYXhjNHNYdWpNVml5Q1lYU1dsMS9PbTYxT2x3em1NVDNJWTJKdGJxNE1qaXBZYVJzN1c3eVNKY3dXZTNnU1Q3ZGR4cTZaendKQjU3ODcyRGVsejJLVTdxQm9XNVI5d0FZUThaQUpqYnJ6dkw3TDdwN0hNajlyL2UxWXpjNXRCa0x3QWpkd3hHNWU0S1RkY2ZmbkRCUjcyN05zMStra2dLbGxGdFNvSDVMb2RIZVlQVTQwT2VyNlhvN2Q0b0dxSTVRTTZ6bFZ4bFpPQUZXUWhqOXZxZzZqQXNLTUFaNUJDSzhjcTFXang4clpMZkl0cC9LaUFPT01kRHphbmZwNjBqVGdtQXFRb3pqVXlxYkZLRGNvNDRUanI3Z2ROWlJBanNhaDhDR2FOUnYzN1BXMzB2YWNLdUFFeVJLNVBlOGVIZ3ZQRFhPLzRiUjRubmtXRjBpTWErTmJ5NEIwejEydHJObTJuenNrSlpqK0IzSTV1OTZoUDlpTWRpWXVBOEdyVTBPQUFUcnFXZkJyNGNuRytmYzZSWCthZkZibHpBRndoRGw2NVVTbzhmb3N6YWxjMWVuSGo1MmNFL3ZuUnZDQ2tKclBTYUxkQ2IyMncvTUd3ZWdoN0JkVy9zeUZGWXFaSld2bDFydzZ0TjdERVNBYXFLYjlwSStUdHVPNFRrbGpQaU50ZVhVSEVSUzdrczRHOE1yOXpJWFVUTzlUeStHRXQySzMrUEs0QllCSWV2RnYwSVBMZXBkNTZ0aXNwa0FGc3hsMkczaVQ0Y1YweXAxQnlLYzFyaGViR0I5cjJFRytpQVl3cnQ1bmNQM0ZhdGc2Y3NUWmVxMGowRmJNbWlkcXYvVEpnNWYvalowK0VZcGRCeWJDM3B1LzZjQUZOTWhPcm5Bb085OFk5VUZwNTYrdCsrM2hzeDM4M3k1NTNNVy8vQlQ3ZnYxVHFKNzNEaFdjOFp0ZllyRnIvL2RMNXA5WC90dlA4UFFPeDU3ck9tMlQrMGFkc1J0U2F0REZ1ajFtQVNjZDIrbnpYOHRKMXJGZ1h1LzhwalBPNEhaR25iT2oyamh2ZVAxelhYN3ZLRVA5UGUvLzdQbXVmMzNBZnp4ZkJBeTFWUnltKzhBVCsydGFianZJeW1yaFExeXpoV1QzaEhnSGUrOHZKL2FsOTArYjE5RVdER2hvV0gva2UrVXpnandBZG9LUkduYjlISWp6ckMrZlNqcUxhQ05ROUprWFpxWkZCL3N1bzlWbk12ajQ0RWV4dnRub2ZMVWtzWjBPaWdlTnhGbkRSRHkyQjM2NmZLTDZGdU4vT01oelJvVXoxVnlhTk5nN1FPL2VUcDVqOWUxWHJMYWlud3BwaUVVRG5qOE5XanIwZmMxNENjdjNYYXZWWDV2MDkxdElDYTd6VURJd2R3dE9RQWdUa1FkL1lXcURYWnZZazljUkJtVTdSL2dJNmMwYW1XdDVERXp2NFRTendDcWlzdFliQnROL05vRU5jVVhWdndXbnJHRWZ2MzQ3Rk5RUmNKNDA4YTV3ZFk4Nit1eGY4QVhPbUZ2TFZuZncrSjN0Nno2T3ZITTJjWFYySlpZRVlMdWFDbmVPSDlpbkZpVmZscVBhVEh4T2ZMTjFJTmpDYndJRVBiZjBmdng2NStCMm1Dc3Nrb1hSeGVwUTQrMUd3OUtSSy92N3Y5dWhJeWZieXM5WkJXamZvcU1ackMyd1dUMmZVeWFIMVhWTy8vOHphdVdjSlpaeHBlMHQ4YklZeGtrNTNRbTVOaVRvelY0ak03Z0E4ZTlYODYveW9RQXFNcStEZXdMMEpQc0V1QU5jK25Hdzk4VUtlSmx0N1FFM1A0T3hzemQrazRlc3hONGhtQ0YzWXpyZG9zajhjWnZ4V0Z6dVhJYmp4NUQwcXp2R2N6OG5pS0h2clRibVpMUGliTXdaTW1xelRnZGFvblFCUnVubzNmNDZYZEp1bW5EbkNjVnRUcXQrelZESkhlTWFoanlCZGZhbU9FalFHQzhLZ1ZtKzI3YmNhbHFDT1U1ZUVEZmE4UlBHd2hjbytLcjF6SWFZUXFUbUNJTzJ4dU5KS2ZJS201UXhJdTFkSHRqbHFWRkcwSXkvQS9LY014VkNkZ3lFc1JHV1lZMWlBeXRLNDhRQTU0MmJDN1lMWU50SjZJbVl6ZFBXS2ppbUMxMGRpcmVzSzNEZTNrbkl3V25abU5kWXphdEJ4c0ZCR0IxOVpRZTNqWHpPRnNXRmhYUGdtQUhXUnpEa2xPcHEvNDVUQlY3SVNnY2U0emxYT3hyeVovU3VwMnZBZHhPQUVONElidUZDL09jY0RRZGNQTDJtYXVOcEhwWlFZUVhxUG5YK3NOZ3o2V2U5RGpUQnZMNE9FSmxRL1dXQjk3WkhQRG51MVFtbUE5S1A2UUFDZHRZRGFjSnByUWVwZ0VKZzlBS0lKVHNYWk04SE43bGdKVTllNkRZNHk1WStiTFRIVURSUFd6S0dISGpHeDNKcFFmWjJ3QmlrSmp0RWJuM096YmJIN0E3YjRKUFJGZFRXN3JsbHpacUp3NUZzdER2Yjk4RFpQQk93NVdqeTM5TlYyRFU3M0xlbnhsaHc0aUdzT3puekZ2QXlFQjNuek5nRGMzdWNYQy8vTWd2YndxWXkvdlRUcnIrWnM1ei8vcTEvL2M0Wm1tbmEwSUhZdytGNFM5U1F6bmxzRmpKVnFEa2d5NTQ5SjM0ajEvRWMxVk50UVJ1bnJnWWhUc254MEpiY0lBamIzckxWRnA3ZjhlekRhY1QxZ2owRDhuSjBJTVlwYmJKTDVUMFppUGtqZHVDay8rN3JHM1FLQ2FzOU5vY3BzSm81UUo2cWMyWmFzTUU2ejNONDBXdElOV0c3bmo0ZDYzcG1UTnMwZFFwSW14WC9BRzhlK1lrWEZzeXc4VFkxZmxzTjlqOThwbUtmZkJ3RG1yV09xMHExU3E4ZkVKZWVGeEtBWlE2dmhZeWZCOXZCQVpiNzFvS1ZBbDh6Y090SlRYWjVQRTRaeG9SWDZ5S0EwbTFEMFcweWQ2YlNpU0xYWDJUWXMyNE1Vbmk0bm1NaDQ1bFlncE4wcnZDSnUrVndyWVY3bVZib085b1I4Wml2NFlQcXFCY3dOOXQ0bmovLzZhLy9EUWEzbWVzYzkyVW02TWhMdkk2NEhHRmgxZjRwU1BIZnZpNTkzYnFxZkJEL2EwR0RWWXRXbXNBRWVyeUszU2dBOHdxNzNzWEkyRnFlQndCeUhBNy9kQ1l6Yk0wNWRuWWt4TnFDbmlPWStSZWRQNUtoQ0lXNE5kcnNXTElZZjhrMWszTmoyVi9EaWNNbXZBL1cwSTJLbkttcndWcm40ckZjRmxJNEllV2sxYS8vTnEvdW1YYjJZZXU0VVljemtBb0c0bFFVeVBQMEVLVUJXaFNNNDhQeUpmQytuVXhnQmJmUlFLZWdyZW44UzZPWmc4MTNxTGVWTHZzOWM2c3QwOUphYUUvRG05RjlRd1lYTUtNRFRDUVFjTEp1SUhLaGhQbXVUbFYvbkNOdUIySDluTC9FejBoTDBqbkF6a0hvQS81OWc0YmdJbXdoTzNYbkF1cG81bjAvUjE2Qk5ad1VOazBHZFNuZTY3d0xSSkExM0FacnNFaUdyejNpWUlBc2M0Y2M4M09tTC9zOVNtRzNwbWN1bkJwbTJMVklCYXZscVppSVBJNlNIZkhjU0tnK1RzeW1yVkdIdVlqbndvQUJjWXpkTE5TZ1RVdzhyZy9vK1M0TDhaN0h0dW5pM054c08rM25vQmdiN3l3WmJuZkJUQmVqcC9CK1RLYW5BVlRyaExOMUUvR2MzZ09ndkhmRmNIOUdIRUJpV0ZXTFdJWUQ0N2RETUxuMTY3bE5zRTdlQkYyenZCK0hldGNLQm5HMGVQODh4STduTkdjVG4yZFlaL2ZueUN1UHdvSFMvczdJYXJnb3crWGhISnlFcTdILyszTU10dWV3Tm1lMDRDN1JZS1JvZlJVYndTV2RVK1FZekhKeUxhOWh5QXpCQmUxNEVrT3VsM1BIVzdXWHdubHRyTzhIdGthZW5Za2xsUHR6R2lPZ0VRN3gwN3hQTE8zUWhuZWR6amxZNTBUN2I0UG1PeDZsZ2YvOWIzN1VvSFk5OFlUcUpKWGlhV2ZCVG5kVzFNQzRVKzZzbkpibWU5QWRndjc4QU5XTnRKbmdHOGxNQ1Z6ZG13SHRIQUV6emxHUnE2RFlvREduRERmNzB4TXdxWUtRbkRYN0hDTHR5Tks3ZmRYVE96MDU5Y3gzUWZycmNEeURkckxBTElEN0RsRDVLcnVteEp5SWlaVEhzMTg4WlEvazdhRzR3K0grd1NGTDhUN0JscG9kdmdlS1Y1NVBkdkJyVHFxelcweG80UFM2NGNSRkQwZXRRS0s2UENQUzhTeGRzdXlyOGs5QWhWVS96MzBhQVR5ZjA3cDRiRW52N1RxSkY5Q2xnMmFWaWVpaDVaQzlSK292QjdEQkFvZFE3SEFvL1ZRYTIwSmwxUThtMEhHSlNOMWJBS05ybnpNbm9HQkIvWnVPL0JvdmJCc0RhazJkWjUzWWxvdmlQQUdpMVAzQmRlYlZvak9ldzRiSmE1ZnAvanJLNDBRS1hNenpMRDNkRWdrSjJ1M2FUL1l6ZHJQbFlHZ3dGSi9KZjUxM1dyK1QrMitYZFlIM09kckhCSzVSVE11MXFvbmlZRHRMWVYyQU5wRElJMkovQkF4a3pGWWJjd2RsMmlDWUVjaFRzVzg5OGZBb3dIbEtabDZuSGpoUUUyVnppcDU5eVJDZGZXdXR2MmpGN2o2Tm5OT0JkWkN2am9Yc3Y0a2h5OUVQNlYrVndvZy9NQmJ6MjZvSG1vSmFXY0VEblcxNWxYMFg1eng3Q29NVGIwNngyWXV1QnlVVk0ydzB4Vk51WXJBRnJWcnA0Nmt0a0FmckdmLzJpa2VIamdaZDl6bENwdFdENklzVEtvS1ppdnZieFRrWWNYaGdBWVRVSHV2WDhkZTVlQTRaaHRVVSt0eFdpR0RCMzh1V0JDZHcyV3Q3NnYvekwwYkM0dFpRZjJYcDM1LzN6dmlQK0Rwa09HSWJZcm5sWmYxMEhxL0xnMlhRVkNmUVRINFl4RnFzVDQyL25oWWMxZnJmWGZya3JZS0QwNjhsK0xadEFSaU1PRnJkaGptWXg0OTUyTkE1NlE2L0ZmUlg1b3V0ekVQekRWeENBWVB0T2liQUwzMkNnU2VEalk2YkR4NFBnR0xDY3M3WndJN0FmRHpwR0xWNTAxaDJ1S2Zid2ZidjhhM2dXNmhXSEZjOTdXYW1kT1h5UlZ4Y3pTM29mN2NWRWNPaHdDYTFDNDdLazVBOVptTWJnQnFlVlhzTHVreXdPSElYTENuN2k2YmNQcWN0R3RNc1FVcDBUaWxxSjZkNW8zMm1JeDhuVjVhRDVoSCthSU56bVBQNnBTb0Zhc0gwdE5PZjAyRDlscU4zbmRFYjR6clRtYzJzdFRPWXpVRGY0NG1vemg3cEp5M3pvbXZqTnQxanFXSnhpcU9sTS95WTgxTXFLL1VBcFIybVdXK1B1d1JIRkR0Y0FCa3RnZmRlNXlLM1AvTnFlVWlZOE1uUXpOU2RDMlNlK0g0d0FMdWVTUEdNdThia01iN1pEQmVPdW5xZUZNelFNdDE0Q21HK0N3ZFdIK2NDdm1VMXNBOTQybjViejM1MXZNQTZZMXc4MGV4eExrLytkVk04Zjg3VndzQnRUNjRCZEYxV1ROdVE3L0dBckxPVC9mYzVIT1o4dEI2M1BKb25vSndJVHNDN3I0b3JpNTU2K3AxUnF4N01tT0Q5VnJGQVFKMFhqYmV5aUwvOFRTMDkvL3VGQk1mbWFRcE9kVFFFWnFPRFNmdVRFVHhEVUM5TWpHYlplUWZJeUcwRm5RT21ISGEwVHpxdDVOODVQdFpkRmFlczIwSDRuL3AvNlVLZG8vQ2R2UDNmSzgzZlp2QVdSSExhQlQzbDdVMzR4Vm9kVEZBODN2SnpPUG43NGcrM1ovbndvOXBLZUloZDNrNlVDdzU5eTBpUTI0MzhWS01yMDJOVnNIOG5UdlNlMDdXaENqMVlEY29ucm5ocVRaRGtVM25Ublo1NHN5TG93THpQSVFPajJXNkpFRThuS05wOGIzR3lJYmJ5T0RrWmhnRG9TSmNOTHRhUFdUbTJodlBoa3Nma2dhRWZoOE1ISjVhL25ncjYyZ3pkbk8ycEwzTDZxUldZbnJXQnZFSFgzOWZqdzhUeGovTjgrUm1uTytDSWRhWlc3Szdvc005dS9RNE8rd1oyTzNyOE9jVnllQUIyYURwTTREb2hGQUM1K0dVNjJnRmc1YkFnZzlQUlU4S0R4eEU1L016RFQ2eXRoT3g3OHQzeWFEbEloQUtTOFAwLzBvS2NOMU5pZ0daRDEyRTZyY2FKMnErTkRpbjg4dEgyYmlmVThQV2NLU3V0Y2VYSlF1ZFE3c3RjZFF3WjFtK2Vkeml1WXQzQ1FqdlJEZXViSzVJeHp4T1R3MzJXT1RBbG94OGswZXVJS0RPbzFyTVNrV1hkVElGSTJLbFJESm4rQ2l3MVRNNmUzdEZEZkszeDdSYUVidU1MMkdIa2RUdjBzVG5aNjg5azA3blBJWE1lMHBERmFHeHJHeWZWaEtrZjI5bG1FbWpQUzB5bWY4emovODQ3QXVyOVpySzhDMU9CZVMyZStQeHJnYlFtcEo0aG5rWEc2UUdOMVZuaUZpWmg0cTFtZm14MXhLZmJqSFE2V0tabnZ6emJ3Vk80alRlZWZCMnYzZTl3c3VhT25yUm96QlNWdzV6NVRBN0FodnIxZzlidkR5WER0WG0yV0phWXB0a1NBb3ptT3RIZkU2bE40UUdsenBGR05wUUE4eXdMSFI2MTNoMmkzSjVxczRIOVdNNnJsV0E4NXQzUnl4aDJRR01NbmoybUR4M1FVQjJjV3l5ZWx1WnRMSGd6Y2VFdU81RFdKQ09zdGwxbndpdzIyL08veStlNWd2YU5USmRsdEdNNWtjUG45STA2Q09KMkJvT0RZaFROWkZ2ck9Rc2xMWTl5YWlmNXgyNGFYYkh4cVduZVR2ck9aSnd6UnRYWTdXbkFWa3hnRXVIMS90amRqVkxqQTZ0REZKTUJicTkvaDJNaERwSFNYRUhlbHRuOW1NNVJXeDdBeEw3Wkc4dTcycmlocXpZY3ViSDJsOVVlcnpuemN6UzlER2VuTTdhcFdmTndDbGRXNXpYZjkzUjhZNUZ3bWRuR0c2T0FudnNUejdIZkYrVE5nalZMUzVyOEl1TzU3enc4ZENKajZSWmJZQ1ZGRWgwNitRMDNqWDNUSVhnditaQmRwOWF3dng3ZWlnMndFTWFLSnJ3NlQyWDBkRnAzK21YcllUOHVDTUhDdVpmbG9SM1l4OUlOWlQzdWdNblR5MDFZWjk3OTRNbnU1WkVZQ0lCelJvU2tGbStKb0xmRjNHZG0xaGxvN1JDd3VzOEIzMWE3bFBaZEFTL1o3TTBLVHR3ZDl6bnNPVm5UdER6QlFqVjl6Q3ViRW5TNFBQYWViMmVId2xiNzE3T25GZmUrTDl1akhUK0YzbVZQMytyT0J2RGNQL3RYd25NT1ZQTFFHQTl4cWliZzJGL0padmZJZWcrdHdhenBmNjV6TENySTVmci9BcFlUcUE4YUplcllBQUFCZzJsRFExQkpRME1nY0hKdlptbHNaUUFBZUp4OWtUMUl3MEFjeFY5VHBhSVZCVHVJT0dTb1RoWkVSUnkxQ2tXb0VHcUZWaDFNTHYyQ0pnMUppb3VqNEZwdzhHT3g2dURpckt1RHF5QUlmb0E0T1RvcHVraUovMHNLTFdJOE9PN0h1M3VQdTNlQVVDOHp6ZW9ZQnpUZE5sT0p1SmpKcm9xaFY0UWdvQjg5Q01qTU11WWtLUW5mOFhXUEFGL3ZZanpMLzl5Zm8xZk5XUXdJaU1TenpEQnQ0ZzNpNlUzYjRMeFBIR0ZGV1NVK0p4NHo2WUxFajF4WFBIN2pYSEJaNEprUk01MmFKNDRRaTRVMlZ0cVlGVTJOZUlvNHFtbzY1UXNaajFYT1c1eTFjcFUxNzhsZkdNN3BLOHRjcHptTUJCYXhCQWtpRkZSUlFoazJZclRxcEZoSTBYN2N4ei9rK2lWeUtlUXFnWkZqQVJWb2tGMC8rQi84N3RiS1QwNTRTZUU0MFBuaU9COGpRR2dYYU5RYzUvdlljUm9uUVBBWnVOSmIva29kbVBra3ZkYlNva2RBM3pad2NkM1NsRDNnY2djWWZESmtVM2FsSUUwaG53ZmV6K2lic3NEQUxkQzk1dlhXM01mcEE1Q21ycEkzd01FaE1GcWc3SFdmZDNlMTkvYnZtV1ovUDhhN2NtTHcwWHh2QUFBQUJtSkxSMFFBL3dEL0FQK2d2YWVUQUFBQUNYQklXWE1BQUFzVEFBQUxFd0VBbXB3WUFBQUFCM1JKVFVVSDVBY0NFQ1FTUjEvVU1RQUFJQUJKUkVGVWVOcnNYV2Q0RkZYYnZzL00xblRTRXdKSnFFS29TcStDU0ZFc0tLSitvb0NnaUlyU3V3Z3Z2U2dkUVNrV1JIMUZSSW9GQy9LQ2dDQ0NRaUMwa0pDMnU4bHV5dmFkY3I0Zk96TnNHb1lTaXV4elhYTnRzanU3TTNQbW5IdWVlaitFVW9xN1ZmNzg4MCtNR0RFQ2YvLzlOOExEdzlHelowL0V4c2JpcTYrK3d0bXpad0VBR3pkdXhPelpzNUdibTR0SEgzMFVMTXNpSkNRRWE5YXNBUURzM2JzWEkwZU94T25UcDVHWW1JaEdqUnJodDk5K3c5aXhZMkd6MmJCNTgyWVVGaGJpMFVjZmhkdnRoc1Bod05HalIyRXltUUFBb2FHaFNFNU9oaWlLNEhrZWdpQW9yNElnUUJSRjM3K0pLSXJ3M1NpbDhpdWhsRUxlQUpDeXJ3QkFLU1hTNVN1dlpkNGo1ODZkaTRtSWlJalRhclV4TE12R01Bd1R4VEJNQkNFa0hFQU5BQ0dFa0JBQWdRQUNBT2dCYUtTTkJjQkl2eWNDRUFCNHBNMEp3QUhBVGlrdEFWQkNLUzJpbEZvb3BXWkJFQW80ampPNlhDNVRYbDVlWHZQbXpVM1M3MUNmcmR6L2hKQ3luOG52QVFBbGhKUjc5ZGtvd3pBZ2hJQmhtTEliWlZrV0xNdUNZUmpJZjZ0VUt1VlYzdFJxTmRScU5UUWFEVFFhRGJSYUxiUmFMZlI2UGZSNlBRSURBeEVVRklUZzRHQ0VoWVdoUm8wYWlJeU1SSFIwTk9MajQzSDQ4R0hVclg4UC9ISmpoTnpOd0hZOTR2RjRrSnViQzRQQmdJS0NBbGdzRmhRVkZhR2twQVEybXcxMnV4ME9od011bHdzdWx3dHV0eHNlandjZWp3Y2N4NEhqT1BBOFgycVRBY3gzRTBXUnlBQlhCc3hLQVpuOGZ4a0FLd1ZZdnY5djI3YXRnVjZ2cjhleWJGMkdZZW9BU0NLRUpBSklCS0M3VFliWkJlQVNwVFNUVXBvaGl1SkZqdVBTclZicmhRRURCcHlYd2MwSDJDb0R2SElBU0FpaDBuaFJFSEo1WUFncEJYeStJT2NMZW1YQnpoZjBmTUZPcDlkRHA5VWlORFFVTVRFeENzQ0ZoSVFnTEN3TTRlSGhpSXlNUkVaR0J0cTI3d1MxV3UxZlhINWd1M1laT1hJa1ZxNWNlVnVkVTNSMHRGZk5xUURNWksxTUJqYjUzc21hbWk5NCtmNi9iLy9CNkpqWTJLWnF0Ym9wd3pBcGhKQVVBSTBBYU8vd1crZ0djRm9VeFZPQ0lKeHl1WnlwNlJmU1V4L3AyNmRBMGhSOVFVMHNBNENnbENyL1gwR2pvNFJod0JBR0RFUEFNREtZTVpSaDJBcEJqVld4VUtuVVVLdFVVS25WMEtqVkVoZ1NxRFVhMUVwSVFFQkFBQUlEQXhFY0hJeVFrQkRVcUZFRE9UazVhTnFzSlFSQlFFeE1qQitaL01CMjg4Um9OQ0kzTnhjbWt3a0ZCUVVvTEN4RWNYRXhyRllyYkRZYkhBNEhuRTZub3FXVjFkRCtRVXNqc3RsWkJ0QjhOYk5TMmxoWlVIdTQ3eVBzNG5lV3ROYnBkSzBZaHJtUEVISXZnQVozMlcwNko0cmluN2s1V2NjMEd2V2ZZOGVNK1hQdjNyMmlEOWlKbFFDZVpNWVNTZ2dvUUVCSVpTREhnR0Vac0F3RGhtRnBLWUJUc1ZDeGw3VTJsV3lpcXRVUVJSSEJ3VUdJaUlpQVhxOUhRRUNBWXA0YWpVYlViM0FQYWtnYVhHeE1MQ0tqb3Z5THpnOXMxU2ZGeGNYSXljbUJ3V0JBZm41K2hXYW4wK21FMCttRTIrMVd6RTZPNCtEeGVNRHpmQ2xROC9HakVWOC9XZ1dhR2FuQVg2Wm9abVBIam1VZmUrenhUdUdSVWUyRGdvSTdFRUxhQXdqeTN6SEFicmZCV2xLTVZ2ZmRhNk9VSHVKNS9wRFZhajM4NnF1dkh2cmlpeTk0UWtoWm9CTXJNbTNMYUhHMGxGK09VY0FOTE11QVliMGdwMkpac0w3Z0pnRWN3ekJnaUZjekwrdC9NNXZOcUZVN0NhR2hvVjRUTlNJQzBkSFJpSXVMUTNCd2lQK0crb0h0eGduSGNjakt5aXFscFJVVkZTbGFXbFg4YUdXMU5Gazc4dzBPeUpxWmJHYjZhR1MrdmpKQ0tXVXNGa3Zqb0tDZysxbVc3UUtRcmtlT0hBbU5UNmp0djFrVlNHN09KYlJwM2JyY2MrclE3NGYzUlVYSDdpOG95Ti9mdm0zck5BblVLdExxeEVwQTdySW14ekNVSVQ0YUhNdUNsYlc0Y3RxYkNxSWdJakl5UWdrdzZIUTY2SFE2RkJVVklTNnVKZ0tEQWhFY0hJTFEwRkJGZTR1SmlVVndVQkN5c3pKaHQ5c3F2ZDdBd0NBa0pkZEZTR2pvTFJ2emt1SmlaRnk4Y012UFUzVzNUWFpLS1F3R0Ewd21FM2hCZ00xcXJYQS9pOFVDazhsVVNqdXoyKzJLZHVZTFpQOEFZaFZHTldXSHYyVC9nUGo0eDhxQ21jUGg2S2JSYUhvd0ROTURRRlBmODNRNkhYNEVxMFNjamdySEp0VHRjdmJWYXJWOWE5Wk13S1hzdkpNOHovOWlzOWwrYlpyU2FEOGhFSHlCamxKYVRxT1QvSE1BSVpTSUlrUkN3SWdNQk1KUWhoSEFzZ3hoR0JZc3oxS2U1YUZTU1JvY3A0SWc4TERadE5Cb05JcDI3M0s1VUZKU0FxMU9ENmZMcS9rN0hONjVack5hVVZKU2dpSkxBUUlEQXhFV0ZuWkZMVFhqNGdVMGEzSHZMUnZ6aStubjRYRFkvMUdicnU3elZOMXRvSGJzMkRHQU1BZ01Da1pnWUJCaVlrdnY0M0E0a0pPVERiZUhCOGVMNEFRUmdrZ2hVaWl2RktUMFJsRm1vNkFVRUNtRktGSWlLcEZMNzFiV3hLU1VFaXFabWNRYnJtT2NUbWNmalViVGh4RFNCMEROYTczbUgzZi9nSTBiMXNOa01pSStQaDRmYi9vTTU4NmR4ZEFoZzVSOUprMlpob2NlZXZodXhiOG1LcFdxU1ZoWTJCdFpPWGs1Z2lEOFlMZmJmMHBwMU9BbnlWd1ZLZ1U1U2lrRm9kNEFLd1VoSWtTUlFCQjhBSTVsd2ZNc1dCVlBWYndLb2lqQTRYQ0E0emlvMVdyRlhXRzMyNkVwTGxhQVRuWnRPQngyMk93MkZKaU1DQTBOaGMxbVEyUmtKSFE2WGFXZ2NTdmxuMER0WnAzblhRVnNCb01CSUF5aVkrSXFObDF5YzVHWG13dFR2Z2xtc3hsRmhZV0tIODNoc01NcG01MXVOenh1Tnp5Y0I1eEgwdFo0SHg4YUwwQVFlTW5jRkNHS3NzbEpDYVVpS0FVQktMbHNjbnIvLysyM0E5MFRFMnMvR2g4ZjMvZDZ3TXozZWhiTW40dVpzK2FnZGVzMktDa3BBUURVcTFjZlAvNzhLd0RncGFHRHEyMjhONnhmaDhjZTc0ZUlpSWh5NTdWc3lUczRjZUp2YURRYTlIaXdGMGE4K2hwWWxnVUFaR2RuWThXeUpUaHg4Z1MwV2kxNjl1eUZsNGVQVUQ2dkRwR09XZlBFeVJNdmFyWGFGNmRNblpZemROakwzOW50OXUrYU5XbTBYd0k0b1l6WldsYUxrNElQSWtTUmdTZ1N5Z2dDQklZRkt6QkVZSG1Jb2tpZFRtYzVZSE00SEZDck5WNVhoalMvM0c0M25FNFhIQTRuQ2kwRkV0QTVZTGZiRVJFUmdjaklTTDlhN2djMndHVEtSMkJRY0xuM2JUWWJzck96dkRscCtmbXdGRnBRWENUNzBTNUhPOTB1Rjl3ZU56eHVqeGZVT0E0OHg0RlRBSTBITHdjRUZGQVRKVENURTJpOUlDYWJtYWRPbjIwU0VCallqMkdZeCsxMlcrUDgvSHpFeDhmZmtPczlrM1lha1pHUjZOaXhFd0FvQzRFUUFxMVdxL3hkWGZMaHh2WG8zS1ZMT1dDYjhmWTBOR25TRlArWlBSZkZSVVVZTS9wTjFFeW9pWDc5bm9Rb2lwZzBZUnk2ZFg4QXMrYk1nOGxveExpeG94QVZGWTMrVHcyb2x2T3M1SmcxbzZLaWgvVi9hc0N3ckJ6RDZjNGQyKzM0eit5NTM3NHc4UDlPQVJBazdVMGd4S3VZWDlia0tLV1VVRUlFU2lraG9paFNRa1FJQWtOWjF1dU9jTGxjVUtsVVZBNHFxZFZxdUZ3dXFOUjJ5YVhoOWRPNlBSN0pYSFdodUtoUTBlWmNMaGNjRGdjY0RnZWlvcUtnMSt1djZicS8ydklsM2x1OUVqLzlzaGNBOE1yTHcyQ3hXRXE1WXlaTm5vSWVEL1lFQUp3K2ZRcTdkdTVBOCtZdDhHRFBYdFcrWGhmTW40dHZkKzFVNXVqckk5OUUvNmNHSUQwOUhVdmVYWXlTNGlJRWg0Umk0cVRKcUZYTDYyYytlT0EzckZteit1NENObDdnRVJnWVZFWjd5RUZ1VGk2TVJpUE1abThLaDFkTHMxNzJwOG5SVG8va1UvUEkvalF2cUFrOEQ1NzNEUWdJdm1rYXBIUkFBTXhISDMraTY5eWw2MU1zeS9ZbmhQVHlkYXJhU29xdSt6cVBIeitHR2RPbktackE0NDk2emN4K1QvVEhvTUZEcXZRYmh3NGV3TW9WeTJFdzVDRXhNUWxqeG81SFNwTW15dWQ3ZjkyRERSdldJZDlrUWt4c0xJWVBINEYyN1RzQUFFYSsvaXF5TG1VQ0FFYS8rUVpVS2hZSkNiV3djdlVhaUtLSXJsMjc0ZUcrZmFIVmFoRWRFNE5XclZ2ajdKa3p5bUtxRVI2TzV3WU9oRWFqUVVLdFd1allxVFBTMGs1WDI3eW93akViRVVJYXhjYkdUcmlVbmJmYjZYUnNuekg5clIyZmZiYlpDWUNYTkRjWjdCU1FrMzF4aEZCUTZqVlRLYVhVN1hhRDUza2lCUlVvei9Od3U5MWdXUlY0TlErT3YreXo1YVJnbExXa1JBbE1lVHllVWdBWEdSbFpvZlltaWlJWWhpbjNOd0RrNWVYaDIxMDdTKzIvNXYxMXl0OXVsd3REQnIrQWpwMDZBd0JXcjFxSjlQUUxjTmp0cUZldi90WForazJhS0luc1Z6ckhzdjliekdhOHQrWURORTVKS2ZXZFdmOTVHNk5HalVIekZpMnhhK2NPTEYrMkZJc1d2d3VYeTRtRkMrWmg1ZXExWU80bVlQTU5GRGlkVHB3NWN3Wm56NTdGeFl2cHlNN09RbDVlSHZMelRRckFGUmNYd3lxWm9qYTdIUTY3QTA2SDB5ZFh6UTIzMjAzY2JnL3hCaEU4NEhtT1NEbHBSQlJGUmhSRmhsTEtVa3JaMU5Obm0yZGN5cDdkcmZzREoxUXExUWUrb09hclBWNnZ0R2pSRXR1Mjc4S2JvOGFnWnMwRWJOdStDOXUyNzZveXFGMDRmeDV2VFp1Q0VhKzlqbDNmN2NaVEE1N0dtTkZ2d0dRMEFnQXlNek13ZTlaTVRKdzRCVHUvL1FHUFBQSVlwazZkRElma3JGK3hjalcyYmQ4RkFGaXliRG0yYmQrRmxhdTlKV2dNdytDNWdjOGpMS3lHMTlsOE1SMEhmdnNOYmR1MlU3VEtGU3RYUTZmVEt4UDkrTEZqYU5hc2ViWE5pNnM1SmlHa1owQkE0TW9GaTk3Wlg3OUJneWxyMzEvWGpGS3FoVGZoV1FOQURWQVZwVlFsMzNkNUhraHpnbkFjUnp5U051Wnl1WWpMNVNJeVdEbWRUamdkVGpqc0R0anNkdGhzTmxpbHdKWE5aa054Y1RFS0N3dGhOcHRoTXBtUWw1ZUhyS3dzWExwMENXNjNXem5QSTBjT1krcmtpZUE0RGhhTEJTOE5IVkpLRzF1MGNENUd2dkZtcFdQeTNYZmZvbFBuTG9vMk9PeWxsN0g0blNXb1U3ZnVWWTl2U0VnSU5CcE5oWit0WC9jK05uKzZDUUJ3NHNUZmVQT04xOHM5Y01yNnlSOTk3SEUwYjlFU0FIRFBQWTFnbGdBekx5OFBZV0UxVUxObXpic3ZLdW8xU1kzSXpzcVduaUw1S0N5MDRNS0ZDOWo5dy9mbzF1MEJ1RnhPT0YydXk2YW5wS1ZsWm1ZZ3JFWU5FRUlnOER6aGVhK0c1dkc0SVFnQ1lWVXE4QnhIWkpITnpkNjkrL1JaKzhINlovZjliKzlUSDI3Y0FJN2pVTGRlUFV5YVBFVlpUTGVUN055NUhWM3Y3NmFZc0wzN1BJVHZ2dHVGM2J0L3dNRG5YMEJFUkNRMmJQd1l0V3A3MWY5SEhuME1TNWU4ZzZ5c1MyallzR3IxanFrblQyTDBxSkZ3dVZ5NHYxdDNkT2w2ZjRYN3JYbHZGZlFCQVhqbzRiNDM3ZnFyY2t4Q1NLMkk4SWhSUWNIQm96S3pjcmVXbEJSLzFUU2wwUzhBNGFYSXFpQnBiWUt2QmdlQThqeFBHWWFSOHhlcGxOZElHSVlCTDZnb0wvZ21jWHY5dDA2SG8xUStwS3pSZVJSejFXdW1Sa2xKdmExYXRjYXZlMzdCekJuVGtaT1RqU2VmZkFyaEVraHMvMlliNnRhdGgwYU5VeW8xemJkKzlTVVdMbjVYZWE4eVlMcGVlZmIvQm1MMHFEZGdOaGRnMy8vK2gxbHo1aXFmbVMxbVRKODJCV2FMR1czYXRNWG9NZU9nMVdyUnI5K1R5ajVmZlA0WmV2YnVEUUNJalkyRHhXSkdlbnI2M2FXeGlhS0k5UFFMT0hQbWpLU2xYVUplWGg1TUpoUE9wS1dCNTNsY3lycWtWQkxJZVdwT2h4Tk9seE9VVW5qY0h1Snh1MHRwYUZMYUJxR2l5QkJDR0VvcDArK0pKMVVYTGw0YVBHNzhoQis3ZEwxL3E5bHNmbXJGOG1WNGQra3lmUExwWjFDcjFOajYxVmUzYlpBbExxNjBuNjkyN1NRWURIa0FnS0NnSUJ3OStnZUd2endVenozN05BYS9NRkFaMzZwS1NwTW0yUDNUSG56eDVWYms1ZVZody9wMTVmYjUrS01QOGZ2dmh6QjM3bnlvVkRmbkdWelZZMUpLWVNtMElDZ3dDQXpEUEJFV1Z1UFRTOWw1VzlMT25uKzJlZk1XZWtxcERwZUpBWHcxT0laU3lnaUN3UEE4VDNpZUp4ekhFWjduNWNBQmNidmN4T1Z5ZVZNL0hFNGxWMUlPSHZBOHIxUXNoSWFHUXEvWHcyUXlJVGMzRjFsWldVaFB2d0JLS1lZUEg0RS9qLzRCclVhcmdMVFJhTUNPN2Q5ZzJMQ1hLcjIyMy9idlExSnlIY1RHeGwzWFdQYnUzUnY5Ky9kSGZIdzhPblRvZ1A3OSs2Tng0OGFsOWdrS0NzSXJyN3lLTC8vN0JicDE3MTdxd1RoKy9FUzg4KzVTYlByMGM1ak5abnk5ZFV1cDcyNzU4cjhvTUJmZ3FhZWVCZ0RvOVhwTW5qSU44K2ZOdm5zMHRxS2lJcHcvZng2c1NndFR2aEVXc3pjL3pXcjFtcHBaV1pjUUd4ZUgzTndjeE1URUtFOUNRMTRlT0k0RElRU1VVc0p4SGdBRUhNY1JRZUNCMGpXYVpQTm5Yd1F2V2poLzhKS2x5d2NSUXBvZVBIZ0E4K1l2QkJWRnZERnF0R0tDTmJ6bkh1VGw1ZDZXWXhVVEV3TkRYbDZwOTNKeXN0R3lwVGZ2YU4vLzl1TFRUWjlneWRMbFNLaFZDd0RRcFZQN2lyU2FjbURuZHJudzNYZmZvaytmaDZEVjZSQVhGNGNlUFI3RS92Mzd5azNhSDNmL2dHVXJWdDIwaE5Pck9lYVJJNGVoVWF2Um9HRkQzK3Z0R0JnWTJISDd6bTlmZHJ2ZG4zMzk5VmYvblRCdWJBa2hSSkI4Y2JJV3AvamlCRUdnbEZJcWlpSTRqb01naUpSbFJRaWlRQVJCb0lKS2dDQjRRYzgzSjlKdXQwT2owVUNuMHlubFdiTC83Znk1OHlqSUw4Q2FOYXN3OFBsQk9Ic21EUXZtejhXa3lWT3hjOGNPV0cxV3ZETDhKWUI0eVJ5R0RIb2VhOVorQUsyVVF2TEY1NS9oNVZkR1hQZDRmdi85OXdDQURoMDZJQ01qQTdtNTVlZjdoUXNYTUgvZUhQeG4xaHhzM0xBT3RST1Q4UEREZlNFSUFscTB2RmN4aFh2MjdJWER2Lyt1Zk8vWFBiL2d4eDkvd0x0TGxwZUtscmRyM3dIdDJuZTRPelMyN094c25EeDVFbGxaV2NqS3VvUzgzRHlZVEplREJVYURBWUlnSWlnd0NFV0ZoWW9mclNBL0g0SWdJQ1FrbEdpMU9rSXBoU0FJaEJkNElnZzhZU1FCd0R6NVpQL3dpNW5aWXp0MTduSW9KaloyY2RycFUwMnpzaTRCQUpLU2toRVZIWTNPbmJzb2kzdkhqbS9RbzhlRHR5NlFJcGs2QUVBbHlpUVpoQjd1K3dqMjd0MkR3NGQvQjgveitPV1huNUY2OGdSNjl2SzZCTTFtTXdnQkdKWkZjWEdSNGlPaFl1a3Fscmo0ZUJ3NmVCQWN4eUZmb21uU2FMWDQ1T09QOFBubm04RnhISXFLQ3JGdjMvL1FyRm16eTZid2p1M1k5dlZXTEYyK1VqR2ZxdDM4cnVJeDNXNDNmajkwRVBQbnpjSHdWMTVGWUdCZ1JZRGVSS2ZUelhuMjJlZStQMzhoWThUcTk5WkdTUnFjbGxLcW9aU3FmVFU0eVEvTGVNa1BlTUx4SFBFR0RkekU3WFlUbDhzTkg1OWNLZTNOYnJmREtpWHh5cjYzckt4TE9IVG9BT3JVcVl0dTNSL0F0T2t6b05Gb1liRllNSFRZUy9qOGl5M1krTkVuV0xOMkhUUWFEVForOUlrQ2FxZFBuWUxiNDZsV242YXZIUDNqQ0NaTm5vcjd1M1hIdTB0WDRGVHFTVkJLVVZ4Y2pCY0cvcCtTb25UOCtERWtKU2NyZjMvMDRVYk1YN0Nvd3ZFSC91WHBIcFJTbkQxN0ZwbVptUXJGRUt0U282UzRCRmFiRlE2N0hRNm5FOWs1MlFnSTBFdk9WNExpNG1JUWhzRGxjaE8xV2dVUDU0RW9DZ0JBZk9pQkdBRGtoeDkvQ2JsMEtYUFlnZjM3aGpFTVV4Y0FPbmJzaklNSER5SXdNQkNkTzNjdFp3N1BtVE1MRHp6UW8xSWZSM1ZMMlFUZEJmUG5Zc0g4dVhpd1p5KzhOWDBHNnRkdmdMZG56c0o3cTFmQ2tKZUgyb21KV0xqNFhjUkkyY3g5SG5vWUowK2V3TkFoTDRCbFZYanM4WDZvWDc4QkxJV1dVc2NaTTJZY0ZpOWE2SDBTMTY2TmRScytna2Fqd1lLRmk3Rnl4VEo4OGZsblVLdlY2SHAvTnd3YS9DSUFRQkFFTEZyb05RT2ZmYnAvYVROeDArYnJObzhxa3FvZWMrUnJyNElRSURFeENXUEhUVkI4a0ZlUXVscWRia2JmUng1OW9jZURQVC8rWnR2WG40MGJPN3BZMXQ0ay81dWl4WGxUUTRoSUtBWDFWcWhRUVJRaGlnTGhlUjRzeTFLNWNxVWlpaXY1WVdVdzVLRkdqWEEwYU5BUVo4K2VnY1Bod0ppeDQ2cVUydlA1WjUvaXFSdWNWblBnd0lGS1B4dnc5RFBLM3hFUkVSZy9ZUklBSUR3OEhDOE9HNGJYWHgwT1NvSGtPblhRN3dtdmIyMyt2RGx3dTkwWTVSTm9tUHJXMjJqUW9DRUtDeTE0ZWRqUWYyK3RxTlZxeGZuejUzSHAwbVUvMmw5Ly9RV0dWY0Z1czhIdWs1dVdsbmI2c3ZaQ0tkUnFOZEhwZExCYXJUTHZGcEdJSUFuRE1JUlN5aVFsSmJGNzl1NS9tV1habDMvNjZjZkcrLyszRnpQK014c0FrSjZlam5selp5TW9NQkNEWHh5SzVzMWJLT2UxYk9tNzREZ080OFpQckRnaWVTNE5YYnQycmZKMTd0MjcxMDlRV0lsVU5wYTNjTXhPcDU0NC90SHk1Y3MzZi9mZGR4NEo0QlFURmQ3YVZQbVZ5c1gyRE1OUVFSQVUvamVWU2tWWmxvVmFyWVpLcFZMSUxXWFROQ201anNUM0pwRlp4c1NnWnMwRUpDY25sVXQzdXRGeThMZi9WWG5mOWgyN1ZOdDUvQ3MxTnFQUmlBc1hMaUFyeTV2QzRVc0V5YkFxcnpQVzZZVEw3WUxkYmdmUDg0aU9pUUhQY1hDNlhNUmh0NE5oV1JCQ2lDQUljaTZhRXVVOGZlYjhNeThNL0w4UlJxT3hiWHg4UFBMSytBN3ExS2tEdTgyR2dvSjhORzE2MmNUYS9Pa21tTTFtekpnNTY0WmRxMTRmNEVld3F4eWJXemhtaldyVUNKKy9jK2ZPSjBwS1NqNE1Dd3ZiUVFqaGZBRk8wdUtJVjRzRHBWU2dvbFNySi9uaklJb2lVYWxVMUpjVlJ0YmFBSUtpb2lMd0hLOGsrN3JkYnJoZExyaGNUaVFsSmxVckhWSkFRR0NWeXFvQ0FnS3JkYUQvZGNDV2taR0I5UFIwWkdkbkswbUJjdEt0MVdvRnc3QktLb2ZINDRIRmJJRktwWUxiNVNZOHo0TktCZXJldEEyR2lDSlBCRUVnQUpnMmJkcDJmMmZKMGxjREF3UDdUcG95RlZNblQwU044SENvVkN3Q3lpeVdqcDA2bzZTNFNFazJOQm9OV1BQZUtpUWsxTUtRUWQ0b0lzT3cyUGpSSjlkMXZTekx3bTYzVmZ1VCtFNFR1ODFhYVFrV2M0dkd6RzZ6Z2xXcFFBaHBFeG9hMmtZUWhMNG1rK25EdUxpNEE0UVFqbExLRTBKa2dCTkJJSUpDaENncUJKbWk2TTBha2FtdFJGRlV6Rk1BME9uMHNKYVVlRk5DZURrbGhMdGN5ZUJ5dytseW9aWVU5TG5Sa2x5bjNqOFd3Z2NFQkNLNVRyMXFIZXQvalNsS0tjV1pNMmVRbnA2T25Kd2NHSTFHaFdaSXJ2Zk15Y2tCWVJndkswZXBzaWllZU5rNGVGLzZJRmxMWTA2a3BqVUlEZzUralJEeXlxMHlueW9IOGt5WUxSYkV4TWI3MGN4WGF6ZmtJakl5QW9tMXkxTTZaV1Jtd215KytXTm1OT1FpSWlJQ1NZbWx6NG5qdUhXcHFha2Z0MnpaOGdJQURnQXZSVklWSDV6TUgrZkxDZWREY0VuTG1xVXlKWkljTVpWVFE4TER3eEVWRllXNHVEalVybDI3V2t2cWJxWDhLelEydVlvZ0l5TkRBVFd6Mll6aTRtS2ZJbllIM0c0M1JFcDl5NklJei9QZ0JSNmlRaXRFQ1FVbG9KVDBmMm9BdTNEUk95TlpsbjBEUU1MTnVKYWc0T0NyMmo4eHNUYnk4MDB3R25JUkZCeHkxMnR1ZHBzVk5wc1ZBczlYQ0dvQWtKU1lDSlBwNW8yWmZFNmlJSlFETlFCUXE5WERXclJvMGNkdXQ2L3QzTG56eDhlT0hmUElBQWR2a01xM0FGL2hocE5Cam1FWUl2bmZxRXhSN3R0Y1JnWTRYOVpldWVkQ3c0WU5yN25XOUhhV08xNWpLeXdzeE5telo1VThHVjhPdGJKa2tJV0ZoZkJXQy9EZ0t0ZlNHQURrM0lXTW5ocU5aaFNBQjI3bW9uUzduV2pXdE9sVmE2c1hNekpoc1pnaDhDSmNycnVUbzAydkR3RERzb2lNaUVSaVlxMS8xRVl5TXk4aHY2QUFBaTlVMjVqcDlRRmdWYW9LTmJXS1JCVEZQU2FUYVYxY1hOdytRb2h2Z0lHWE5EZEJBalJSRGk2d0xFdDl3SXlxMWVwU0pKYStQUmJrQmpKeWQ2eWtwQ1EwYU5BQU5XclU4QVBiYldOdUdJMmwwamxrMnU2S0dHN2RiamZzZGp0Y0xoY1JLWVVnRVVFcVdocWxCS0RNa2FQSFlxT2lva2NSUWtiZjdPc3hHZk1RRnh1RHVMZzQrT1h1Rm8vSHMrcVhYMzdaMktkUEg0TVVZSkExT01FbmNpcURHNVcxTlZsVFU2dlZWRzRCV0JiY2ZFM1MrUGg0SkNZbW9rR0RCditxSmpKM3JDbWFsWldGYytmT0lUTXpVMG5uOEcydUl0TzYrRExkQ29KQVBCNnVJdllOQmdCejRlS2wvaXFWYWpTQSsyN210VGpzTnRpc0pRQ29IOVQ4QWdEUWFEU3Y5ZXJWcTRQWmJGNGJFUkh4SFNHRWxjQ044OGwvSTE0bFR4UjlHdjVRSDZwNVdsbXVXMlYxcDlVVlZQQURXeFhrd29VTE9ILyt2QUpxY2pwSDJlWXFaZWk3Q2NkeEFLaDgwK1V1VDh5MmJkdHFoWVNFak1tOGVQN1ZtMzB0d2NIQlVLbFVpSStQUTJ4c3JIOUYrK1d5T1VWSXkvRHc4RFVlaitlRDMzNzdiVU8zYnQyeUNTR01iSnBTU25sY1psNFd2VjRKNmhzcEpiNVIwN0xwSVRKOXZTKzF2Y2ZqUWQxcllQRHdBOXQxU2xwYW1wSjRLM2VOS2l6RmRPc29DMnJFcHhlQjRrdURWRG5nZHJ1ZlVLdlZZd0cwOGk4bHY5eU9vbGFyWCtyYXRldDkrZm41YTZLaW9uWkx2amRHQWpWWmU1TlRRY3BxYitYU1FzcFdMdmgyVHBNQjdwNTc3dXlrYjVLUmtYRkhuS2hjSGlVSENYejlhV1cxTko5T1VjUmJXT3p0RENXbmNGQkt5YzgvL3h5V21KZzRqbUdZQ2Y2bDQ1Yzd5UGUyYk92V3Jlc25UWnBVQ01EamsrQXJ5UDQzdVdwQlNnbng5YjFSM3dvRnVmVmZVRkJRT2IrYkhGUzRVOU5CVkltSmliZjlTWEljaDlUVVZNVjNWbEdIcUFxNlF2bDJVL2NGTmNadXQzZlJhclhqQ1NFOS9VdkZMM2VZdkRsKy9QaVVaNTU1Wm0xU1V0SVJBQ3dBT1hwS1VKckpGNklvZ2hBaWwyUVJtZit0cklibVcyVHZjRGhndFZwUlZGU0VsSlFVcU5WcXZ5bDZvOFhsY2lFMU5WVXBrWktyQ1h4YjRpazlDU1RDUFZsVGswMVBDZGdZU2luajhYaUdzeXc3RVlBL285VXZkNlF3RE5Nak1UR3hjVWxKeWNxUWtKQXZBRENTZVNvbmxaY0tMTWdXRC9VS2thc1hmUHJZNGtyRjlTa3BLWlYyeGJwdFRkSGJPZDNEYnJlWEFyV3kxUVJsR3hiTC9qVEovSlRyUEJsUkZFbHVibTU4ZEhUMEJFTElxLzZsNFpmYjFkMWlNQmhnTkpvZ0NBSnNOdXMvZm9mbitYVkhqaHhaTjNueTVGeEpjNU1yRjVUaWVwKzhOMGlwSVhJU3I1THpKbmVtTDF1bEVCMGRqWm8xYXlJNU9mbTJBTGZnNEJDd0xJUG82T2dyWmhEY3RocWIxV3F0Rk5Sa2hsdTU5Nkp2a0VBR05aL0lKMk8zMnp0cnRkcUpoSkFIL2N2SEw3Y3JxQjA3ZGd3VVJLbUdxR0pXMmJENkRSdlg2ZHJ0Z2ZjNnRHdnpCd0FHM3NpcFRJRHFwVVh5L2tPbHZyZGVqWTFTTDBPUzFBZFgzdVFldW9KSXdRc1VIQy9DN1JHUW1KeUFvS0JiWDlsaXQ5dVFtMmRBYmw0ZTdydjMzanNIMklxTGl4VlFrNHZaeldaemhacGFKWkZQeFovbWRyc0hxbFNxeVFEcStaZVBYMjVYTVJnTW9DRFhWTC9LTUV6M1dyVnFKNTVNVFZ2UkpPV2VIYUNVb1lCdjN3MUJvZ3NSdmJFQUNza0NCYnpyaENvbXFSeFJsY3hVVWFRUXFSUk5wU0lhTm1pSTRKQ1FXenBXZ1lGQkNBd01nc21ZQjRQQlVHR2ExRzNGb1B2RER6K2dmZnYyaUltSlFkZXVYVEZod2dUczJiTkhZZWlvS0FMcVZ2b1BlSDFxMHNhSW9xaWFQMy8rbFBUMDlMWGZmLy85YlFOcVBNOWoxS2hSaUk2T1JtaG9LSVlQSDY1MGQvTEwzU3NtVXo2Q2dxOExNT3FHaG9VdFBuZis0dkNHOXpRS0FLQ1R1bWZKUFJkWVNzRlNLbmZMRWdqUGMvQnduSmVwMStXV2VpeDR1Mk5aclZZVUZ4WEJZakhEWkRRaEp5Y0hHUmN2SXUxTUdrcUtpMitMTVFzTUNvWlI2cHhXVnRnWk0yYmNGaWU1ZCs5ZTlPelpFeWtwS1hqZ2dRZVFsSlNFb3FJaUhENThXSTdzS0lCVzF2eVV0VFF2dGJMQXBLU2sxUHI4ODgvbmR1M2FkY3lBQVFPWWtKQVFkT25TNWJhNHpva1RKMkxidG0zNDlOTlA4ZXl6ejJMcDBxVTRkZW9VSG52c01mL3F2b3NsTnpjWE5jSWpydnA3cDArbFl0NVU3TWVIQUFBZ0FFbEVRVlNjMmVqVnV3OEFNQ3ExdXVPei8vZGNTS3ZXYlM1OHZmVXJCK0JWM1NvemZ5bEFjTG1SdDJTTzBzdWJwS2tWRk9UajBNR0RLQ3dzUkVSRUJJS0NncUhUNmZEMTExOWgvdHpaMkxadEt3b3RoV2dwbVliNStmbDRhOW9VYk42OENULy85Qk9hTkcySzBOQXdBTUJmZngzSHRDbVRzSFhyRmh3LzlpZGF0Mmw3VFYyd05Cb05yTlppeEZmZ2E3dHRUTkcxYTllaWFkT21lT2FaWjVDVmxRVkNDRnEyYkltQ2dnS2NPWE1HS1NrcGxTWGVsZ29TUFBqZ2c2MGFOV28wcFZ1M2JuM2xtM2U3aU4xdXg2cFZxN0JwMHlhRm11ajk5OTlIejU0OXNXREJnZ3FiM3ZybDdoQ3J0UVRSMTJDR05yeW5FZDZlK1o5Uzc2blY2a0ZkdW5TSi91WFgvNjNwZm4rWEU1UlNSa0kzeFRTVnNVMFVCSkdYZkcyQTk5VUxlQkt3Z2VKQytnVndIQWVXWVJFUkVZR01qQXhRQUlHQmdkaTZaUXZXZnJBZUdvMEdZOGU4aVNOSERxTjE2elpZdldvRnVuZC9BSDBmZVJSLy9IRUVDK2JOeGFyMzFvTG5lY3liTXd2ekZ5NUdVbEl5MW4zZzdTdjYwc3ZEcjJuY2ZIc0YzM2FtYUZGUkVleDJPM0p5Y25EaHdvVlNQclhFeEVRa0ppWXFLUjEydXgzNStmbWtzTEFRTnB1TnVGd3VJZ2dDSTRvaWs1U1UxUHZISDM5Y3NuejU4cjZFRUhUcDBnVkhqeDdGVzIrOWhYYnR2QTE1MjdWcmg5bXpaNk43OSs0SUNBaEF2WHIxOFAzMzMyUFpzbVZJU0VoQWFHZ29oZzBicGhEM1VVb3hiOTQ4MUs5Zkh4cU5CaEVSRVJnMGFCRHNkanM4SGcrYU5tMktCeCs4SEpQWXRHa1R0Rm90amg4L0RnRG8zNzgvV3JYeUZqVWNPM1lNVHFlekZOOWE1ODdlVHRzSER4NzByMjYvbEJPejJZeXhZMFpoMFBQL2g4R0RCdUwzUTk1NWtwMmRqUUg5bjhDVC9SN0ZxRGRHbHZyTzVJbmpNV1RRODMxbS8yZkcxSlNVbEM0QWRLRFV0NUVNSzRvaUs2OGJwWWtNeDZHa3BKZ1lESGxlUWtxbnQzRnpaR1FrR2pab0NJMVdnNUtTRXVUbTVpQXpJd083Zi9nQktVMmFJQ0RBUzdKYUk2d0cvcExtL1Y5L0hVZVhMdDU1SGhvYWlyUzAwL0I0UEREazVVR24xeU1weWR1WUpUdzhISDhkUDNiRHgrMldhMnh5b0tCZHUzYjQ5dHR2TVhmdVhNVEZ4U0VrSkFSNnZSNHkxN3VjMG1FMm13a0FxRlFxUWltVnU2NHpWcXYxV1kxR003VnYzNzcxR3pac2lFV0xGb0ZoR0xSdjN4NlBQUElJcGt5Wm9oeHovdno1MkxGakJ6cDE2b1JYWG5rRi9mcjF3K09QUDQ3VHAwL2oxS2xUNk5hdEd4NTY2Q0U4OGNRVFdMVnFGUll1WElqTm16ZWpjZVBHT0g3OE9BWU9ISWptelp0anpKZ3grUERERDlHdVhUdDg4c2tuNk42OU8wYU9ISW1aTTJlaVJZc1dDckFWRmhZQ0FISnljaFJ3OUhtNklpSWlBdG5aMmY1VjdKZHk4c1hubTlHc1dUTU1HdndpMHRQVHNYclZDclJ0MXg0SkNRbjQ3NWF0T0hmdUxPYk9MazAxUDIvQkltbHRGYlVaL3RMUThBOC8rbVRGNEVIUGZ5c3BNa1N5VGprS0NONEhPQkdsZkY0UVFxaEtwU0p1dDl1cnhBR2dvQ0NFZ2R2bGdzMW1RNzRwSHdCQlptWUdBZ0lDY1BGaU9sWXNXd3BCRkJBcytRbUxpNHVoMWVtd1kvczMrT21uM2RCb05MRFpiQ2dwS1lGV3E0WEg0OEhLRmN1UW01dUxvcUtpR3o1dXQxUmo4MDNwRUVVUkF3Y09STjI2ZFdFeW1YRHExQ2tjUFhvVXFhbXBLQ2twZ2R2dFJrbEpDWkhBUUluNE1BekRCQWNIdi9MbGwxOHUwbWcwOWVXR0Z6cWREaHFOQm9RUWhWbFVsbjc5K3FGYnQyNVFxOVY0NG9rbjRISzVNSGZ1WEFRSEI2TnQyN1pvMHFRSlVsTlRBUUJKU1VsWXYzNDkrdlRwZzhURVJEejIyR1BvMnJXcjh2bDk5OTJIU1pNbVlmejQ4Umd5WkFpYU5HbUNDUk11VjJrOTg4d3pHREhDMjZQUjRYQlVtQXVrMVdxbERsbCs4VXRwYWQybUxYNys2VWQ4OU9GR3VGMHVMSDVuU1pXK0o0b2laczU0R3cvM2ZiVGVBejBlbkhZcTdkd0FBRHBwMDFCSzFhQlVCWUFGS0tPa1J3R0VaVlhnT0EveHVEMCtyZjdzY0hzOGNEZ2NzQlJha0o5dlFsRlJFVTc4L1JmR2p4dUQ1NTUvQWQyNmxhWXVuRGRuRmpJeUxtTHhPMHVoMVdwTEtUTmpScitKeG8xVE1QS05ONnRsM0c0WnNQa20zOG9wSFM2WEMzWHExRUdyVnEzUXVIRmpSRVJFUUJBRUdJMUc0bmE3SlhZTzd4Tkh6bEhqT0c1OFNrcktndFRVMUNwM3FQQXRJNU1IUENFaG9aUlRVZ2Fhdm4zN29uYnQycGc1Y3lhZWUrNDV0R2pSQXQ5OTk1M1VPTU1yMDZkUFIwUkVCUGJzMllPUFAvNVk2WE5RVnZSNlBUd2VUN24zM1c1M3BmMFIvWEtYQTF2ck5saTVhZzFxSmlUZzQ0ODI0dTIzcGxicGUrdlh2UStkVG9lQno3OEFBRkhCd2NGdmZmM045c0VBOUJLNGFRa2hha0tJaWxMS0FtQjhBbkNFNDNoNE9BOVJJcVpPSnppUEYraEtpb3Roc1ZqZ2NidFJYRktDeHg5L0FnUUVKZFlTaElhRktlWm5oNDZkTVBLTlVWQ3IxZkI0UEFwemIwbHhNVWFQR1lmZWZSNkN5K1ZDbVBTZE94N1lmTXVrc3JPemtaT1RneTFidHVEaXhZdEtuaHJIY2REcjlRZ0pDU0dBbC83YkY5UldyMTZ0NWpodU9zTXdzMFZSMUpYdE9INUYrMXRWM2dLdnJOaDN5WklsNk5DaEF6SXpNOUdoUXdlc1hic1d2WHYzTHJXUDBXaEVUazRPS0tYNDlkZGZLejF1UWtJQ1hDNVhLZFdiNHppWXpXYlVyRm5UdjRyOVVrN216WjJOdzBjT28wZVBCekY1eWpRY09uUVEvelRYOSsvZmg3Mi8vb29wVTkveW5kZTZKazJhVHJuMzNudUhOMnZXUEJCU09naWxWQTBwSFFRQVMwV1I4RHhIQklFblBGYzZIWVRuZWJqZGJzV2tWR3MwY0RnY0tDakl4OFdMNmRqOXcvZG8xTGd4QUtCRmk1YktlZjU1OUNpU2twS2gwV2dRR3hlSDBMQXdhQ1VMYXYrK2ZXamVvc1dkNzJPVEM5cDlheitMaW9xUW41OFBoOE9CNU9SazMrUmJJbXM0Y3ZzN0FHVG56cDFCUFh2Mm5Nb3d6TGlpb2lLY09uVUtRNGNPcmZCNDE4dE9zR1RKRWt5ZVBCa3paODVVM3N2SXlDZ1Z3WHpwcFpmUW9rVUw5T3ZYRDZOSGowYlBuajByQktxV0xWdENyOWRqMzc1OWVPU1JSNlJKdUI4TXd5akJEYi80eFZjR0Rud0JpeGN2d09lYlA0VW9paGd6ZGp3WWhrRjJkamJHakhvREhPZEJjWEV4QnZSL0F2ZmVkeDhtVFo2S2xjdVh3dVZ5NGJVUkx5dS9zM0wxV2dRSEIyUEJvbmRHdjdOb29hYWdJSDlkYm02dS9JU1ZvNlc4dE5ZRWIyTXN3ZXRpay9iaGVZRjZPSzg1Q2dJRUJ3VWpMaTRlbjI3eWRwSy85OTc3RUJ3Y0RKN244ZXBySXpGLzNoeDgrZDh2b05mck1YSHlGRVdwbURMMUxjeWFOUU9jaDBPdFdyVXdZZEtVT3h2WUtLWGx5cVRrNkdkeWNqTE9ueitQMU5SVUJBUUVRQkFFdU4zZXB3UWhSQ2JUSXlrcEtUVm16NTQ5TlNJaTRrMjFXbzBwVTZZZ0pDUUVBd1pVM0wwNktDZ0lCdzhleEtGRGg2NEpQTUxEdzNIZ3dBSGs1dVpDRUFRc1hMZ1FwMDZkUWxPcEw4SDY5ZXV4Wjg4ZS9QMzMzNmhYcng0MmJkcUVsMTU2Q2Q5Kyt5MEE0UFBQUDBkaFlTRkdqQmlCd01CQURCMDZGSysvL2pxQ2c0T2gwV2d3ZlBod0RCa3lCT0hoNGY1VjdKZHlVcXQyYlN4YnZxcEM3ZisvVzdaVytKM1AvL3RWcGI5M3p6Mk44TUg2amErNTNXN1Y1azgzclp2KzFsU3p0TFo4bEFFR2xJcUNLREtsd0Mwb0tBZ2FyVWEybmtCQVVDTXNERWxKU1lpSWlFQk1UQ3d5TXpMQXNpd2FOMDZwMUIvWXRHa3pySDEvZmJXTzIwMDFSYTlVMEI0VUZJVFkyRmlJb2lpYm8wUUdOWlpsQ2FXVVhMaHdJZUw3Nzc5L0t5NHU3czBISG5nQVhicDBnVmFyeGY3OSt5dTEwMTk3N1RVY09IQUFnd2NQdnFaejNyQmhBMHBLU2xDM2JsMjBhOWNPTnBzTmt5Wk53cDkvL29tc3JDeU1HVE1HVTZkT1JZTUdEY0F3REQ3NDRBUDgrT09QMkxCaEF3Qmd5NVl0V0wvKzhrMWN2SGd4SG5yb0lUeisrT1BvMjdjdjdyLy9maXhidHN5L2d2MXlVMFdyMVE1L2J1REFsK2N0V0JRRlFDdFZLYWk5eW81U3BVQkUwWnQ1NEczQTdBMG91TjNlS2dXSHcrRTFTeVdmbThsa1FtNXVMakl5TW5EMnpKbGJlbjAzamQwakxTME5hV2xwU29zOHVadVVYQ2JseTN4Ykp2bVdVRXJKbVRObmF0U3BVK2N0UXNoSS83UXNMYUlvSWlQekVpd1dDd1JCZ010NWQ1Wm82ZlI2c0N5TDhCb1JTRXFxWFdrUVI3WWV2R05tQnM5WDM1anA5SHFvVkNwRWhFY2dLYWx5N3NPOWUvZWlidjJiejFycmNicy8yTFRway9mZm5qN05Bc0JGQ0hGRGFSeERCRUlnRU1Jb0RXUFVhaFhVR2czVmFxUytwUUVCQ0FvTVJMRFV6aThpSWhLeHNiR29YYnMyNnRhcmozcjFxcmVhc2JJK3ZEZkZGSlY3RkpUbFU1TTdTUjAvZnR5M1FvRDQydjNTRmxTdlhyMnBBUDdWb0dZd0dLNjZVNURiN2NGZmYvMEZWcVZDY0Vpb3Y2K28zWWJDb2tJVUhNMUhpK1l0b05Hb0t3UzFQLzQ0Q29abEVSUmMvV05tdDl0Z3RsaVFYNUNQMXEydXpFQ2ZjL1B6R1YvcTFxMjdlSEhJaTJzLzNMaEJXWWRlMDlSYllnV0lnaWhTVUc4eFBCVUVrUWk4UUpWdTh6NGtsVTZIQTNhN0RWWnJDWW9LaTJBdUtDaVZjWEFqcGVZVmZyZmFnUzBySzZ0VWo0S3kzZGtkRGdkcTE2NnRhR29lajZkVTdlZnExYXZWdzRZTm04b3d6SnZ3U3puSk0rU0JWYW44bmVBbGtaa2ZqSVpjNU9ibElxa0NodWlMR1psZ1dQYW1qWm52T1dWbVhrTGlGZnFMMWt4SXVCWERObnpxdE9sOFJrYkcybC8zL0ZLWmhpdGNCanVSVWlvU1NzdjNVZUFsWmw2UGg0UEw0ODJCSTRRZy9pWkgvYXNWMkl4R285SWlyMnpqbFFvNlNaR0t1TlFrVUJ2blg3SVZpN25BaktDUVVQOUFsSkdnNEJBVUZKZ3JCRGFMeFlMZ1d6Qm1RY0VoS0RBWFhCSFlicGtacjlPOTl2NEg2ejBONmlXdmw3VmFPYUJBdmRFRktwYktNeUVVSUFRZ2NsZDZFRUxBZU1rc3dUQXNXSmFGaWxWQjVUVmZFUlVWZGVjRG05eWhYVzZSbDUrZlh5bWRkMW1mbW0veUxjTXdVLzNMdERJL0VTQUl3bDF2ZmxhbUpSVVhXU3I4N0ZhTldXQmdFSW9MTGRmMDNaTGlZbVJjdkFDNzNYYkYzMDlLcm91UTBHc0RiYjFlUHpydDdBWFhQUTNxYnBMd1RKbHFQbU1uWG03ZngxR084eEFKK0VBWUFzSXdFckF4WUZrR0twWEMxZ3VOUm9QUTBOQTdGOWljVG1jcFVDdkxwMVlKU2FUY2ZJVkl2UWxlWVJobTJwVVg5dFZUS2Q5dVVsV3E0NHFFRU1EcDlITzVWVG9QSytHNXU1WEJsV3U5WHhmVHo4UGhzRjl4SDd2ZGhveUxGOUNzeGIzWEFiNkJvMCtlT3VObzByamhWaDlRbzJVME9CRUFGVVdSOER4UG5VNEhZVm1XTW9TQUVBWU1ReUNYTm5vM0ZWUnFOVFJxRFJvMWJueFRLTVp2T0xCUlNuSG16Qm1sVFo0Yy9TeXJxWldKZnNxTkpSaUo5ZlpabG1XbndWdjZVZWx4cnBGSytiYVRxbEFkWDZ2OHVQc0hiTnl3SGlhVEVmSHg4Zmg0MDJjNGQrNHNoZzRacE93emFjbzBQUFRRdzM0a3ZJM2xuMEROZHk1ZHIxVWFHaHI2eHJHL1R0cGJObS95dmErMlZnYmNBRUNrbEhwOWFweUhlSHNyWEFZMmhtWEJNaEt3eVZxYlZvUEdqVk9xdmEzZkRRYzJYMUFyMjh6WWJyZFhTT2Z0NjFkek9wMjlWQ3JWVkFCWE5NaXZoMHI1ZGpTYi9vbnErRm9rTnpjWEMrYlB4Y3haYzlDNmRSdVVsSlFBQU9yVnE0OGZmLzRWQVBEUzBNSFZkbDBiMXEvRFk0LzNLOFZtSXAvWHNpWHY0TVNKdjZIUmFORGp3VjRZOGVwcllGa1dnSmVTWjhXeUpUaHg4Z1MwV2kxNjl1eUZsNGVQVUQ2dkR2bW5ZM2JwMUI1cXRScUVNRWhLU3NLUW9jUFFzV09uZnl1T1JrVkVSTHk2Y3VYS2t0ZGZmLzFBR2MyTkVrS285RCtSbTJEeEhPZmxJbWNJSlF3QlF5US9tNlM1S2NDbTFrQ3IwYUplL2ZyVmVnRTNORUUzSXlNRDZlbnBsZWFweWRSRFVvczgrTExmVWtvWnE5WGFTcVBSVEFYd2oxZDlBNmlVYnorQXV3TFY4VFU5Wk5KT0l6SXlFaDA3ZG9KR28xSEt3QWdoU21laTZueHlmcmh4UFN3V2M3bjNaN3c5RFRVVEV2RDFOenZ4L2djYmNPamdBV3pmdmcyQU55ZHYwb1J4YU5Ed0htejdaaWRXckZpTnZiL3V3ZGRidjZxMjg2enFNVmV1WG9NZHU3N0RrS0hEc0hqaGZHejlhc3N0bVNlRUVOeDc3NzNvMmJNbmV2VG9nZmo0cTN1NEM0S0EzMzdiajhrVHh5TTdLNnV5WTlTTGlvb2F2bURCZ3NhUzVTVFRqS3VWdWxKSzVXNzBoT2Q1OEp3MzljTlRLdlhEanNLaVF2ejA0MjZzWGZNZTVzK2ZnLzM3OXlGTE9tN1dwVXNZK2ZxcmVQYVpwekJtMUJzb0tpcFV6dUdqRHpmaXVXZWZ4ak5QOThldW5UdHVqY1ptTkJvVlVETWFqUXFveWJscXZsM2FmVHEwSzZCbU1CaHE2Zlg2S1FEYVZ2WG0vTnVjNW9HQlFiQlpyNTlQL3ZqeFk1Z3hmUm84RXMzTTQ0OTZ6Y3grVC9USG9NRkRxdlFiaHc0ZXdNb1Z5MkV3NUNFeE1RbGp4bzVIU3BNbXl1ZDdmOTJERFJ2V0lkOWtRa3hzTElZUEg0RjI3VHNBQUVhKy9pcXlMbVVDQUVhLytRWlVLaFlKQ2JXd2N2VWFpS0tJcmwyNzRlRytmYUhWYWhFZEU0TldyVnNybWVvV2l3VTF3c1B4M01DQjBHZzBTS2hWQ3gwN2RVWmEydWxxRy9lck9hWmVyMGZIanAyZ25qSU5iMCtmaGw2OSs5eDBacGJrNUdTd0xJdmR1M2REcTlXaWUvZnV5TS9QaDhSK1V3cXc1U1JsMzcvZmZPTjExS3haRTZkUG40SWdDbGNDME5hSmlZbkR4bzRkdStpZGQ5N0prYlUySDUrYkhHQVFCVUVFSWJ5MzdwRXdsREFNQ0VQQXNBeHljM05CQ01FRFBYb0FsR0xEK25Xb1Y3OCs5RG9kbGk1NUI0ODkzZzg5ZWp5SUx6Ny9ETyt0WG9YSlU2Ymh4SW0vdlhOczQwZHd1OTBZUG53WVd0NTdYNVZCL0lab2JGYXJWV0hxOEszL2xEdTNYeW10ZzFKS1huenhSVFlpSW1JeUlhUnYxWTlaY2tNbmk5bHN4dVJKRS9EY3MwOWozdHpadHd6Y0txTTZ2aHBwMGFJbHRtM2ZoVGRIalVITm1nbll0bjBYdG0zZlZXVlF1M0QrUE42YU5nVWpYbnNkdTc3YmphY0dQSTB4bzkrQVNkSW1Nek16TUh2V1RFeWNPQVU3di8wQmp6enlHS1pPbmF3MHBWbXhjalcyYmQ4RkFGaXliRG0yYmQrRmxhdlhlQ2NjdytDNWdjOGpMS3lHMXlsK01SMEhmdnNOYmR0NjYzZ2pJeU94WXVWcTZIUjZaVUVlUDNZTXpabzFyN1l4djVaanRtN1RGaDZPdXlXbFE1R1JrY2pOelZWOFhhSW9va2FOR3FYMk9YTGtNS1pPbmdpTzQyQ3hXUERTMENHd1dMd1IyWGVYTE1Qa0tkT3FwQmd3RE5QN3Z2dnVHeHdURTZPWHREYWYwaXV3QUJodlJ6aVJ1Rnd1NG5LNXdIRWVZakdia1plYkM1ZlRoZUxpSWdRR0JxS2twQVFxdFJxQ0lDRDE1QWxrWkdZZ0xlMjBjdThmZXJndkR2OStDQUJ3L3R4WnRHalpFbHFkRGlHaG9XamZ2Z1ArT0hMNDVwbWlsTkp5VlFXK21wcHZCTlMzUTd0dkJIVE5taldUQ0NIRGJzUk4vMnJMbDNqdTJhZng3RE5QWWY2OE9YQzdYRlg2M3Z0cjM4TTk5elRDcDU5OWdiSGpMaE5GbW94RzdOeXgvYTV5Vk8vY3VSMWQ3KytHamgwN1FhdlZvbmVmaDNCUG8wYll2ZnNIQUVCRVJDUTJiUHdZalZOU3dEQU1Ibm4wTVhBZUQ3S3lMbFg1R0trblQ2Sm5qMjRZOVB4enVLZFJJM1RwZW4rRis2MTVieFgwQVFGNDZPRytOKzM2cTNKTVFnakNhNFREZHYzTytxc1dqVVlEUVJBUUVSR0JUcDA2UVJURlVrU09BTkNxVld1RVIwUmc1b3pwR0R2bVRmUjc0a21GYU9GcUc2ZW9WS3JuRnkxYU5CQmVMamRmazFRbFlRZ2pVa29ZaG9ISDR5RTJtdzB1bDRzRUJnYkM3WFpEcFZMQllNaUQxV3BGZG5ZMkNnc3R5TTNOUlc1T0RpSWpveUFuQlI4NmVBQldxM2M4NjlTdGg2Ti9IRkVva2xKVFQ4Sm1zOTA4WUR0Nzlpd3VYYnFrcEhWVXBmZG5tUWpvd0J1VnEzYml4Ti9Zc3VXL1dQdkJlbnk2K1Fzd0RJUDE2OWRWNmJ2bno1MURoNDRkeTkzNC9QeDg3Tmp4elYwRmJBYURBWEZ4cFZYKzJyV1RZRERrQWZDeVBCdzkrZ2VHdnp3VXp6MzdOQWEvTUZEUmRLb3FLVTJhWVBkUGUvREZsMXVSbDVlSERSWGNwNDgvK2hDLy8zNEljK2ZPcjVCRHJ6cWtxc2VrbE1KU2FFSFFMWEtISkNjbm8xR2pSdmp0dDkrVW9GQlo0QjArZkFUK1BQb0h0QnJ0ZFQwWTlIbzlCZzRjK0tiQllPaFpnYi9OcTdsNS9XME1JUVNDSUVDdDFrQVFCT0x4dUJFVUZBeGVFSEQ0OTBNNGZTb1ZETVBBNFhEQVpES2hWNi9lK09hYnJ6Rms4UE5JVFQySndFQnYvNFRtelZ1Z1o2OCtHUG42Q0V5Zk5nVUIrZ0RvQS9RM3g4ZVduWjFkTGxmTnQxVEtCOVJRVVFUVWJyZDNscG9aMzVCWmE3TmFFUlFVaklDQUFEQU1neGVIdm9TTEY5T2x4WnFIUlFzWElOOWtSR2hZRFl3YlB3R0ppVW40K2VlZjhOOHZQa05tWmlibXpwa0ZqVWFENTU1N0hsMjYzbytsUzk3QnNUK1B3bUF3WVBqTFhyNjN0ZSt2eDRiMTYvRG5uMGRoTkJpUTBxUUpMcVpmUUdSVU5ONTVkeWtvcFZpOWFpWCsrT013T0ErSDloMDY0clhYUjRKU2luRmpSdUgrYnQzeHlLT1A0Y1NKdnpGbjluK3didjJIdDBWM2JWK0ppWW1CSVMrdjFIczVPZGxvMmRLYmlyTHZmM3Z4NmFaUHNHVHBjaVRVcWdYQUd6V3NhSEdWQlR1M3k0WHZ2dnNXZmZvOEJLMU9oN2k0T1BUbzhTRDI3OTlYYXI4dFgvNFhQKzcrQWN0V3JMcm1oTk9ybGFzNTVwRWpoNkZScTlHZ1ljT2Jmbitrc2tQOCtlZWZBQUNXWmN0Unk5dHNOb3dmUHdZRG54K0VzMmZTc0dEK1hFeWFQUFdhZ2tWT3B4TmJ0bXhSQVhqbHI3LytNalJ2M3Z4UHlkY21TdjQySldKS0tTVU13OExqY1ZPbjA5dVVuakFNb3FLaUVCQVFBSjFPaDcvLytndWlJTUppTVVNYkY0L25YeGlNQmcwYTRtSjZPaTVsWmlySGZXN2c4M2h1NFBNQWdKZUd2WWk2ZGF0ZVVIL05HbHRSVVZHRnVXcVZnQm9wMDZXZHljM05qZGRxdFJOeEF6dTB0MjdURmpWcjFzVEx3MTdFMTF1M1FLZlRvWFhyTmdDQU9iTm5vV2ZQWHZoNDAyZDQvb1ZCbUM1UkxEL3dRQStzZlg4OWF0YU14N1MzWm1EdCsrc1ZzMmpVNkxHWU1IRUtrcEtUc2ZiOTlhVTRwTnEyYlljWk0yY2hNek1ESDMyeUdaY3lNMkd4V0dBMEdoQVlHSUFOR3ovR3g1czJJL1hrQ1J3L2ZneUVFRXlaTmgyZmJ2b1lhV21uTVhmT0xFeDc2KzFiQm1yUy9mQnFINktvYU5JQThIRGZSN0IzN3g0Y1B2dzdlSjdITDcvOGpOU1RKOUN6VnkvRkgwa0l3TEFzaW91THNQblRUZEx2bEdhS2lZdVB4NkdEQjhGeEhQSk5KcTgyck5YaWs0OC93dWVmYndiSGNTZ3FLc1MrZmY5RHMyYk5McHZDTzdaajI5ZGJzWFQ1eXB2R1UxZlZZN3JkYnZ4KzZDRG16NXVENGErOGVrc28zZlB6OHhXQTBtZzBDQXNMSzljUTVjS0Y4K2phdFJ2Kzc3bUJtRFo5QmpRYXJlSmp1dzZwVzc5Ky9SZEhqUm9WVzVHL2pWTEtNQXpEeUZSakhvOEhITThSenNQQjQzYkRZWGZnekpremlJcUtndDFoUjFGUkVRb0tDbUEwR1BESEgwZXdmTmtTUFBsVWFWNUZqdU93NlpPUFFZaVh4NjFhTlRaQkVKQ2VucTRFQzN3am9CV2tkWkF5YVIyRVVzcEVSMGRQSUlROGVDTnZ1RXFsd295WnMzRDZWQ3ErL2ZaYkRINWhJR2JObm9zNmRldmk3SmswOUZ6aEpleHIwNll0M25XNVlESWFFUjF6YldtOVdxMFdPcjFlTVZzREF2VGdPUTZ4c1hHSWpJekN4QWxqd1RJc0RFYXYzOUhybTRyQTZESGo4UHFycitENUZ3YWpTWk9tdHdUVXlpYm9McGcvRnd2bXo4V0RQWHZocmVrelVMOStBN3c5Y3hiZVc3MFNocnc4MUU1TXhNTEY3eUlteHB0ZjErZWhoM0h5NUFrTUhmSUNXRmFGeHg3dmgvcjFHOEJTcGx4b3pKaHhXTHhvSVRadVdJZmF0V3RqM1lhUG9ORm9zR0RoWXF4Y3NReGZmUDRaMUdvMXV0N2ZEWU1HdjZqTXJVVUx2V2JnczAvM0wyMG1idHFNMk5pNEd6NGVWVDNteU5kZUJTRkFZbUlTeG82YmNFUHoySUtEZzZ1OGIwWkdCc0xDd3RDalJ3OEF3UEhqeDh2MTBtamV2QVdhTjIraHJJdXg0OGJmSVAvcnptNnRXN2ZPQUxEQ1Iyc1RBVkJDaURkR1NrVXExNHZ5UEU4WndwQVNhd25sT1E2aG9XR0lqb21GM1c2SFdxV0dXcTNHcmwwN3dESXNubnI2YWJTWEl1dUFsK0o4K2RKMzBieDVTOHhmc0xoQ2JiT3ljYnNtWVBPTmdGYkdxVllHMUdRR0FMbGNhamdoNU5VYlBVRlBuejRGblU2SFJvMVQwS2h4Q3I3OXRqRSsrR0F0NXMxYm9KaEdpcG5FTUtDNDhWeDBmLzExSEx0MjdzRFNaU3VnMWVrd1kzcnBxakNId3dHMVdnMlh5MW50QU5hcmR4KzVRM2dwcVYrL0FmNjMvOHA5VER0MjdGVHB3dFZxdFpqMjF0dWwzcXVvNFcyYnR1MHFaSG10Vjc4K2xpNWZXZUZ2c3l5THZmc08zRlNncjhveC8ybThic1E1Mk8yMktrVXE1YXFiNjVWUFAvdmltcjZuVnF1SGJOaXdJZVBGRjEvY0JpL0Zya2dCS3JXU3AvQ21nWWlpS0ZLQkY4QVREb0VCQVVTcjFWR2RYZ2UzMndXbncxdU5vRktyMEsxYmQ4VEd4cUZXcmRySXlMaUlPblhxQWdBNmRlcU1UcDA2VjNvZWRwdTFVai9vVlp1aWVYbDVDZ1dSYjFwSEJSRlErSUNhb3EzWjdmWXVMTXRPckk3SmtYWHBFaGJPbndlNzNWdCtZaTRvUUdob0tMUTZIZW8zYUlnZnBhamVIMzhjZ1ZxbFFuVDBQMnRyb2FHaEtNZ3ZxTEM3VkVWaU5wdWgxK3VoMW1pUW41L3Z6WVdTaW9rTmhqeTh0M29sM3Y5Z0F3Ny8vanVPWEVYNHVuTEhiZ0Q4Y25WamN5dkhyTEpqUjBkSHczR0ZXdWVBZ0txWnZGWGQ3M3AvS3lnbzZKVjMzMzIzaFJKTWtKckN5Q2FwbkFJaWlnTGhlUUVjejRQalBQQjRaQVplRnh3T0IrdzJHMHFLUzd3TXZQbEdLYm0vYWtucWRwc1YwZEhSMXc5c0RvZWpGRnZIUHdRTHlpWGhwcVdsaFdtMTJ2RUFxcVVPcW1ldjN1amNwU3RlSHZZaW5uM21LYVNlUElIWFIzcHAzS1pPbTQ1dmQrM0U0RUVEc1hIOU9zejR6NXdxT1ZJVGF0VkMyM2J0OFBTQUovSEN3R2RoTkJxdXVIK25UcDJoMCt2eDFKUDlNSDNhRk5TdFZ4OTJ1eDA4ejJQbTI5UHgwc3V2b0ZidDJwajYxdHRZdkhEK2Rmczk1Q2U5WDhwUCtzcEtzSmhiTkdaMm14VnNKUnBHWEZ3Y0tCV1JiOHlyOE55UzY5VDdSOUFLQ0FoRWNwMGJ4MWo3RDhlTWk0K1BIL1RDQzROcXlPQkd5NE1iUXlrbG9pZ1FnZWZCY2J6a2IvUEE3WExCNVhUQzduREFhck9pdUxnSUZyTUZKcU1SMlZuWlNsK0Z5c2JSWk1nRkNDb3RQN3dxYXZEVTFGU2twYVVoTXpOVHFRWDFOVVY5S2d5SXJMVkp2alZHb2lHYXhURE1oQnN4NkxlS1NybTZwVEtxNDhyOUxaa3dXeXgrb3NreVlqVGtJakl5QW9tMXkzT2ZaV1Jtd215KytXTm1OT1FpSWlJQ1NWZmdZek9aVERBWURPQjVIbGJyN2M5VzQzSzVWdlh1M1hzOUFJZTB1UUI0Q0NFY0FKNFFJaEpDUklsYVhLWXZvbHF0bDFvOElDQUFnWUdCQ0E0T1JvMGFOUkFSRVlHNHVEalVybDBieWNuSjVUWEY0R0NvVlNyRXhzWldxcTFkbFk4dEt5c0wyZG5aTUpsTU1Kdk5GUVlMUEI1UHVkUU9PVmpnY3JtZXVGR2dkclhPMWp0SnJ2YTZFaE5ySXovZkJLTWhWMkU1dWRzMU5adk5Db0huS3dRMUFFaEtUSVRKZFBQR1RENG5VUkN1Q0dxeVNYcWxCWHNieW10WldWbG5hOVdxdFZmMnR4RkNsSUFDQUhoWlB3aGtjRk9wVk5Cb05OQnF0ZERyOVFxd2hZYUdJanc4SEZGUlVZaUxpME9kT25WUVMwb251bHFwRXJCWnJWYWxzcUFzcVBuV2dQcW1kdmlhb0VhanNaWmFyUjU3cTV5dGQ5S2l2TnBFVkVJSVdyVnFoWXNabWJCWXpDaXlXT0J5M1owY2JYcDlBQmlXUldSRUpCSVRyN3dnMnJSdWpjek1TOGd2S0tqV01kUHJBOENxVlArb3FkM0pVck5temNGZmZ2bmwyYWVlZWlvYmw2T2tNckJST1pMZ0phZmtLY013aEdWWnlySXNYQzVYS1NKS0dld0NBZ0lRSEp0ZzBOd0FBQ0FBU1VSQlZCeU1zTEN3YTFKaXFyU0taTlBUTndtM2dzb0NYMUNUcXdzSXBaU0ppSWdZQTZEVmpSek02T2hvR0F6R2Z4Mnd4Y2RmZlRvRElRUjFrcE5RSnpuSmI0TmVwYmFiK0M4Rm01c3BoSkNXZmZ2MkhRQmdGUUJCNm8vZ2paWktwSlR3RWxOU0NkekFjWndDYmlxVnFrSndDd3dNUkVoSUNKcjRrQzlVVmY0eGVKQ1ZsWVdjbkJ6Rm4xWVpxRjNCQk8xZkhha2RpclBWWklEakRuZWVPK3cycnpNVTlJWnhzZm5GTHpkVGREcmRrT3pzN002UXlxMG9wUnBJeWJ1K2dRUkJFSWdFYkFwdXlCMnVIQkxOVVVtSk4wcWFuNStQbkp3Y2hlTG9obWxzZHJ1OXdudzFYOEpJR2RoNG5pOW5nbVpuWjhlcTFlclIxVFdZOTk1N0w0eEdJNHdtRTZ3bHhYY2tOYmpzREUxSXFIbW4rVmI4NHBkU0VoOGZQMmpqeG8ycFE0WU1FU1IvbStCcmxwWTFTYVhxQk9wTFJHbTMyeFd0VFE0c2hJU0VJRHc4L0txcVBLNEliR1h6MWNwRVBuM3oxU295UVVsTVRNd29BUGRWNTJER3hNUmNkUzlPdi9qRkw5VmlrcllZTUdCQS95RkRobndBZ1BjeFNRWEpKQlhoWmQxVlRGS0dZWWhLcGFJeUM0aHZZS0dvcUtpVXI2MVJvMFpWQjdaTW42SlRYOG5QejhlWk0yZEtNWGVVOWErVkRSejRjcXlscGFYMXpNcktHdTIvM1g3eHkxMGxMKy9acytkb3QyN2REc3ZnQmlsU0toZkxTMDFnNUtwNWhWUHVjdmVyeTZacVdUTzFxaTM4VklsaFA1UjdrK01GNUYvTUFuRWFRTnhtRUU4eENHY0RJOWhCQkJjZ3VBREI0OTFFamxCUkFDZ2w4amI0LzlxdzlhUDNqUExmWTcvNDVlNlRoR2JpLzlWTHJ2SDMrWXVGUEFDQkFBSkFaYk9VZ1JmTkFDcUNpanlGNkNZUVhCU0NBeENzSUlJT2pHQUI0ZkpCUExrZzdrd1E1em5BbG9yNDVGcFFxLzY1OTBXRndZT3NiQXNNcG1LWUxUWVVGVHRoczduZ2NMcmhkSEp3dXpsNFBEdzhIQStPRjhEeklnU0JRaFFwUkVvSkJaajNsdzBlQ2VBQi95MzJpMSt1VFNpOWM4K2RaWm11aC9kTWZ3UnlJTUViUkpBRENTeVZpQ2xGa1VJUUtIaGVCTWNMOEhBOFBCNGViamNIcDVPRHcrbUd6ZVpDVWJFVFpvc05CbE14TG1WVnJWS25uSSt0dU1TSjNMd2lGQlJZVVZqa2dOWHFoTjNoQlRXWG00UGJ3OFBqRWNCeEFuaGVKTHhBSVFpVWlKUVNVQkRMeFhjYnNDenpobjlxK3NVdlZ5Y2lCUXlXU0pnS3d5Q0lMR3gzZGpyaW9BVUxGaHlaT0hIaVJhOUo2ZzBtZUUxU2lKSUZTa1JLd0F1RWNnSkRQRHhMM1p3S1RvOGFOcGNhSlU0dENtMDZGRmoxTUJZRkl0c2NCRU54Q1BKSzRsQW5nVU5jZUFFcXE0b3NCMnc1dVlVdzVaZkFVbWhIaWRVSm05ME5oOU1EbDhzamdSb1BqdVBCKzJwckZLQVVoQUpNU0lqK05RQUovbW5xRjc5Y0hhZ2RPMWNmWU1NUUZISm45OG1WcEdaQzdlVEhKMDZjdUJvQUQyK0VWSDRWUVFnRnZHMzhDQ0VnVXJObEl0RWRzU28xVkNvMVZHb04xQm90TkZvZHRMb0FpQ1FReFRZMThvb1NrR2NPdzczMXoxY0licVZNVVdOK0NRekdZaFJZYkNncWRzQnFjOEhoOE1EcDR1Qnl5NkFteUNZbzRiMG1LS0VpSlpTQ09QSldkQ2VFdlBKdm1uRGpwbTNCL1gzZnVXRy94L01DUmszK0F0SDF4aUcwOXBzWVBtb1RIQTZQZjJYZjVXSW9qQVRZTU1URXh2OXJrczYxV3UyZ1BiL3VhNDdMVk9JYVN1RkRKZTdObmhCRmtRaUNBRjdnQ2M5NUF3ZWM1Ly9aTysvd0tLbzJpdjltdG1WVElFMTZDVWhIYVZKRTBBQWZVa1JCQkNzbElBZ3FMWUxTbGQ2RDlONUVwU2dJaWlCS0VaQWVsQ0lJVWdVRUV0SjdzbVZtdmo5bWQ1Sk5JeUJOMmZNOCswQjJabmJ1M3AxNTUyMzNIQ3NXcXdXTFE4WlAxVDVJSkQ0dWp1U1VGSFE2QStnS2N6UGVMOWR6dXhpMkd4RUpSTWNtazVDZ0dyWFVOQXZwR2RiTXZKckRzTm50c21DM08wSlFHVUVCQVJDTlJzUDc3a3MwZnd3YnM1Rk5QL3pPdXM5NnNXbDFIM2J1K1pOK2c5ZTZKK1lSUjFSOG9mK2NUaTVBdWZMbE8yUXhiQVpRREdTcVc0bk8xakJKbGdYSkxtRzMyd1diM1paWkZiVm1Wa1ZUVWxKSVRFd2tMamFXeUp1UmVQdjQzdHF3L1gwOVRnMUI0MUpKVEVvakpkVkNlcHFWakF3YkZvdWpXSkRwclNGSk1yS3NPQXNjWWtiVXZEY0VnUmZkbDJqZVNFMjFNRy9wYnNMR2R5QzRjU1dDRzFkaThhek9yRnh6a0poWU4vWFFvd3BGQVVuUzM1R25kdWIwSHd3TXZmY3A3VE5uVGhNMmJZckdhZWpFeG8zZkVOTGxMVUs2ZG5JUjVJbU9qbWJnQndONHUzdlhsaTFhdG1wTUZpcHhSVkhVSW9LaWlBN21IeFJIcTRjazJiVjJEeWZGVVlhajVTTTFOWlhrNUNTTlVqd3hNUW03ck0rMTBDSUNXRzEyTlFTTlRTRWhLWTNrRkF0cGFSYlNuVWJOV1RDd1M5anRrbUNYWkNRWng3SXB4STgvYXEwejZIWHZQZWdMNU9ubWt3a2Q5aFhCYmNJSXFqR2NKeHFPNGZ1dEo3VHRkWnRNWlBqWWpWU3RQNHJpbFQvaTdQbElMQlliWXladnBuek5FWGdVN1VPOXBoUFpzZHRWS05kbWsrZ2QraVhlSmZ0VHZQSkhmRHB2ZStZUEdKUE1LNTBYNGxmMkE3eEw5dWVGVitkdzRWS1V0cjFqMTBYVWJUSVJnR08vLzAxNnVvM2dScFcwN2M4MlZFWHZENFpmZE4vaGp5Z0VBVkxTaERzNnRuS1Zxb3dhTS9hZWptLyt2TGtzVzdxRVN4Y3ZhaVN1QUZldlhtSEQrdlVzV0xTVVpjdFhjdUxFTVkwOGRmNjhPVFJyOWo5V2ZyNktkOTk3LzFVUEQ3T0hNeHpGVVNFVkJFRUhPSTJieXRzbVNVaU9WVXcybXcyckxZdXlmSG82cVNtcEpDYXFJV2wwVkJRSmlWS3VPVFk5d0kwYkNVVEhKQk9ma0VwU2tsb0ZUWE8wZGxpc2RxeWFweWJocUlJNnZEVTFEUDE0OEV1OUtLQ0MrNzNHZ21XL3NIVjlQNW85VjRYTlAvN09LMTBXY25qblVHclhVQmM3ejVpL2s1VUx1bUV5NnFsVW9TZzkrMzNCanp2L1lPR25iMUdwUWxHV2ZyNlBGMTZkdy9HOUk2bFdSZVhyT25ENEl1WEtCbkIwendpT25yaEtqMzZmVThqSFRNK3VqUWtkOWpVV3E0M3duNGNDMEcvd1Y0Uzg5eG43ZjFJWm1qcTJxME44Z2xyZXVoNlJnTkdvSjhBLzg4bHNNT2dJOFBmaTJvMEU5eDN1Umc3RXhzWXljY0k0WXFLakVFU1I5OTdyUTRPbkczTHQyalVHaHZiSFpyUGk2K3ZIaXBWZlpLWTdobnpFalJ2WEFWVjB5ZFBMaXpWcjF3RXFyZitjV1ROSVRFckUzOCtmd1VPSGFWb1dBT3UrL29vTkc5WnIrd1AwZktjWFJxT1JzR2xUWE1iMis0a1RQRlczTHA2ZW50anRkdng4L1RoeC9EajE2dFhueEluamZQQ0JTdWpqNit0YnIwU0o0aTB1WGJxMEdiQTVYbG9oUVZFVTJSR1NPbFlrU09oMGR1eDJHemFiSHF2TjBhaWJuazZhU1ExSkV4SVNpSW1Od1dUSXZhZE5uNTV1MVhyV0VwT3lWRUUxbytiSXF6bHlhNDRRMU9tdENTZjJmVnhJcHhON1BTd1h3bHNkNjlIc09aV0E4c1ZXTldqZXBDb0xsLy9Db3BtcTltV2JGay95V251VmFDUXVQcFhQVmg5ZzFaSWV2TlJhVmYyZU5xNGpoMzc5aXltemZtTGxBbFU1dlZqUlFpeWIweFdUeVVDbENrWDU3ZmdWNWl6ZVJjK3VqYmw4TlpiU0pmMG9XZHdQVDA4ankrZDI1ZHFOZUcwOGIzU29wLzAvTGQyS2g0YytseVNySG92VjdyNkwzY2lCcjlhdXBrYU5Hb1IwZTV0TGx5NHhmOTRjR2p6ZGtGS2xTdkgxK2cyY1AzK09pZVBIdVJ3emFjbzBBQklURStqOVRnOCtHUGdob01yMlRSdy9sdkVUSjFPOGVIRisrbkVyQytiUFkvU1l6T05yMXFxVmczazRMNEhseE1SRVBEdzhpSTZPWnRLRWNVaXloSThqVDVpWW1Jakp3NFB2TjMzSGpoM2I4UFQwZkxWSHozZjJMRnU2eE9vMGJJNVZDWklqMzZiSWlpSUlha2lxMkNXN1lMUHJGTDB6SkRXb0lXbDZlanFwcVNscVNCb2ZqMEV2a3A0dVl6YTdqbEc4RWFtR29QR0ptVDFyR2VtWkJRT2J6ZG16bHRWYkE5bmhyVld0WEx3blVPMWh1UkRxMUhTbG9hbGVwVGluenR6US9xNzRlT1pDOHpObkk1QmxoWWIxeXJzYzAvanBDdnh4SmxOWHMyN3RJRXdtZy9aMy9hZks4ZWU1U0dSWlpzaUFsbnovNCs4RVBqNlFOcS9ONGJzZlRsQzlTdTdNckdZUEExYXJsT045aThXT2w2ZlJmUmU3a1FQMTZqZGc1NDd0clB4c0JaYU1ETUttenlqUWNiSXNNMmIwS05xODJKYjY5ZFZnNnErL0xuSHQydDhNSHpxWTdpRmRXTDM2UzZKdXV1b0xWS3BVbVZjNmRDencrRTZmL29PUkk0YnlUdTkzYWRyVXRTZC8wb1J4WEw3OEYySFRaMkl5bWFwMDY5N2plVndLQ1k0S3Fab1NFMUM5Tm1SWlFySkxTSGE3UXl0QnJaSmFMUll5TEJta3A2VnJoWVRFeEVSdVJDYm05TmpVbnJVVWtoemVXcnJUVzdNNFFsQm56NW9rQzVKZDlkYWN6Ymhud3NmNDZYUml6NGZwUXBDemFWdG1XT3pvZEpuRjM2d0dKTHVWei9vWldZVitqZG5jWGIxZVJLOFhFVVdSdGkvVTVQcVpLWHkvOVhkKzNQa0h3OGQreS94bHV6bThZeGllMll4VnFSSitaR1RZU0VoTXc3ZXdwNWEvaTQxTHBXUnhYL2RkN0VaT3cxYXZQblBuTFNUOFNEaWZyMXlCMFdoa3pMZ0p0enh1MmRMRmVIaDQwTGxMMXl5NVlodkZpaFZ6Q1Z2L0NRb1hMa3hHUmdaaDAyZFNxRkFoVHB3NFRtRmZYMjNiTTQwYTA2SmxLODFiTEY2OCtLdTllcjI3Yy9IaWhkWXM0YWlkTEx4dExsNmJYUkowZHJ2aVVpVzFXRWpQU0NjMU5ZM2s1R1QwT29Hb2FKbGlSUXZoNVduSzlOaGlZcE5KU0V4WGU5YlNyVnJCd0taVlFlVk1iMDFXdlRWbmJ1M3hjbys5RFR6K01GMEk0VWN2dS94OTZNZ2xhdGZJblUyMVl2a2k2UFVpQjQ5Y2Nubi9RUGhGcWxUS3pEdWN2ZUQ2VkR0KzhtK3FWVllKSVllTTJzRDVpMUYwZWVOcFZpM3B3ZjZmUHVMVTZSc2NQNW1UUTZwMmpkS1l6UWIySGppdnZiZnYwQVZFVWVEcGJGNmpHMjRBVEpvNG52QWo0VFJ2L2p6RGhvL2swS0dETGcvZDNMQnYzMTcyN043TjhCRWZ1d2dXVmFoUWdhU2tKSDdaczF2THQzMi82VHVYWTgrZlA4ZkdqZDhVYUd4UDFxaUIxV3JGWkRJaFNSSUhEK3luWmkxVnk3UldyZHJhT0kvKzlodEJRZVV3bVV6bCsvVHQxNXhzUllUc1hwdnM5TnJVUWtKbWxkU21DaTliTWpKSVQxZHpiU2twS2NURUpoTjUwOVZyMDhjbnFDc01VaDNlbXNWaVU5ZHNPVU5RbThOYmsxeTl0ZC8yRFBmUjZjUzNIN3FjeElaZmVhYis0enpmdENvclZoM2c1T25yckZyU0k5ZDlmWHc4Nk5lckdZTkdyc2ZieTBTbENrVlovdVYrRG9aZll1cldEN1g5L2poemc0WEw5L0R1MjhFYy92VXY1aXpheGRJNVhSeEdMNUkrSDY1aFh0aWJCUGg3c1dMVkFieTlUWnBoWFB2TkVlSVQwbml2UnpCZVhpWjZkR2xNMzhGcjhmSHh3R2pRMHp2MFM3cDNlZ1ovUHkvM1hleEdEblR1M0pXd3NDbXNYYjBLV1pZWk9PZ2pSRkYwS1I0a0ppYnlXc2RYcVBQVVV3d2ROb0s1czJlU2taRkJuL2N5VTk5ejV5L0N4OGVIU1ZPbU1mUFQ2U3hhdUFCUFQwOEdaaE5TUG5iMEtCczJyS2Q5K3c2M0hGdlpza0cwYjkrQmQzdjFSRUhoMldlRHFWZXZQZ0R2OStuSDVFa1RXUGYxVjVqTlpvWU1HdzZBbjc5L2gvYXZkTmkrY2NNM05zRHFNRzUyVkdVcmxXMVhiZHAxNU5wVXJ5MXJsZFJpdFdxOWJUb1I0aE1rb3FLVEtWN1VWNHVTaEZtVFgrVkdSRHhSTWNuRXg2ZVNtS3d1ZWs5TnMycExxVElza21DMVN0anRpaURKaXFnb2lOYm8rZjEwT2pIc1lib0lubTQrbVNlcWx1RENYOUVjT25LSkd0VkxNWDE4UjU1OVJtMnBxTnRrSWkrM3FjbklqOXBveDFpdGRrYU8vNDR2dmpwRVFtSTZ0WjRzemZpUmJmbGZzTXI5OU9ISTladzVGNEdmcnljLy8zSVduVTVrYUdncityelRCRkRiUFFZTS9ZcnR1ODZRbkpKQm5acGxtRGEyQTQyZVZtWFFPblpkeE9XcnNmeTZlN2dqbjJZamROalhyUG5tQ0tJZzBMRmRIV1pQZVFNUEQ0UDdMbjZFc2VkNDVmK2s2bHB1aUkrUG4xamppYXJmQXlsQUtwQW1DSUlGVmQzSzdsQzFrblU2bldJd0dqRVpUWXFIaHdrUHN4bFBzeWRlM2w3NCtCVEN0N0F2b2dnTmEwbVVEM3FNYWxWS1VENUlwVFVTeG85OHlYVVpsY043UzAyemtwNWhKU1BESmxpc0VqYWJJa2lTTE1neVl1Zlg2K2svVzlEak1QRGt3MmJZV2pXdnp1aWhMejJ5TjRpaWdDQzR2L3ZETW1jRi9leEh5YkFwaXZKSG80WU4zdi83NzZzcER1T1dKZ2hDT21CQmxleVRSRkdVUlZGVURBYURvaEpQZWlnZUhoNllQYzE0ZW5yaDdlMU40VUtGRVFTRmVrL0tsQ25sVDZVS3hhajVSR2s4UEF6b1V4eTV0WXdNRzFaTDF0VUZXUmE1Wit0Yld6cW5XNWVIemFobGgrRGIrMS8zZzBlZW0wYlJJcmUvckVaUzlGeU9xa3g4a2g1SkZzbElmelJWcWp6TVpuU2lnbjhoTzBGRnppSUtlYmZReUFwY2lhbE1iSUlKU2RiZHN6bFR4eVFUV05oQzJjZk8zdExJWGI5MjdWSDRxYW92V0xqNDJSZmJ0TnJweUxYWkZFV3hnV0FYQkxXUUlNdXlBQ2cybXkzVElPSlk2U1NyS3hVOFRDYTF1VGxGSWpFcGs5b29xRXdnK3RRMGk0TzVJMXR1VFpLUkpGbVFKTVd4eWtCOW9TRHE5Ym91RC8xVElXSFJJM0V6cDl2OStQMUNLZlFHRDN3S3UzVkZVMU5UaUU5T0lpYWhLalVmdjRwSm41aXJVZnYxM0JQbzlPYjdNbWVwcVNuRUppY1JGZjhFOVNxZHl0ZTRsU3oxYUJEakZDOVJvZzN3aThPd1dRRzlJS0RIMGRlR3Ftd2xxTXZRQlFVRVFSUUVSUlRWYmdSUnA4Tml0U0tna0pvbWtaeWNRWHhDR2pFeHlaUXE0WWVZbm01VHZUV3JTeU11ZHJ1RUpNbHFKZFJCbnFTQWtIWnpibXVnOGNNNFdZZDJESDNrd3RESXVDTG9EUjcvS1ZhSWZ3SXZMMitLRml1QlR1OUJSRnp1aWwrWG82dWgwNXZ2MjV4bGpzbk1sWmpLdUFHaUtEYmNzL2RBTFRKSktBMktvdWhRSzZTcU5WTVVGRVZXSzZTeU00ck11cFpVbFNSSVQ3ZVJrcHBCWWxJYXNmR3BSRVlsSWFaclBHdHF6NXJOTG1HWEhFYk5HWUptTW5nSVJvUHVUZmZQOHZBZ050SDBuMlNGK0tmdzlpbEVUS0lwMTIxeGlmb0hNbWZlUG9XSVNUQzVmeHdIU3BjdW5iMzF3OG44b1hPeWZqaG9qWkFsdGYzRDdsZ2tiN2Zac0RwYVFOSXpyS1NtV1VsT3lTQWhJWTJZMkdUMEZrc21lYVRXczZibTFnUzFiMDF4V0U2RWhDc3pueFFFNGRYYkNna2Y0V1Qydlo0ZlNkWWh5VHEzcDVhSGw1UVlINHNzZ3lpNnp2ZURtak4xVEhGMzlKc25KU1p5K2ErTHBPYWpvZXZsNVUxUXVjY3BWTGp3WFJudnZUNm53V0JvdS9hcjlWKzk4WHJIQzJSU2grc0ZRYkE3d2xGWmxleFRCRW1TRlVtU0JNa3VLVTZ2elc2ekFRb1dpMHg2dXBYVVZBdUp5ZW5FeGFXaVYzTnJXWmROeVE1dlRWYUxCZ280K2RhOHZFeXZGMlRBL3pHSzQzdjdGUGNFblU2aWlHOUN2bFRIdVVFblNvOXNvYUFnU0U5UGR6RnFvQnFVQnpsbjZlbHBkL1FnKyt2U0JkTFNVdlBkSnpVMWhjdC9YYVJHclRwM1phejM0NXkxNjlSK0RyaWFKZGRtZFhodGtxS291VFpGa1JWVnhVcHlwVGF5MnhGUXNGZ2xNaXcyMVd0THppQStNUTE5RnYwQ05hOW16eXdheUE1WEVBVmg4MWQ5UEVSUmVMMGdSdTAvUm5GOHo1R2Fta0pFZ2wrK1ZNZDNpdTNiZm1MRjhtVkVSZDJrUklrU2ZQN2xHczZmUDBlUDdpSGFQa09IaitTRkY5cTRmNGlIR0xjeU1GbXZwWC9UT1QwOXZkcTBlN245K3UrKzNXakp6TFZoRXdSRVVCeTVOa0ZRRkJsSmtoVkpsZ1M3dWtnZXU5MkdBRml0TWhrV0crbnBWbEpTTTBoS1NrZWZuVURTbmlXM2xuWDVWUE9tMVY0RlN0OXFvRmtwanQwb2VJamk1ZVhOelVpWm0vRitGUE9Qdnl1ZmUrUEdEYVpNbnNpWWNST29WNjgrU1VsSkFGU29VSkh0TzNjRDhFNlBidmZzZXkxZnRwUjJMN2NuSUNBZ3g3aG16WmpPeVpPL1l6UWFhZjU4Uzk1N3Y0L0dLbkh0MmpYbXpKckJ5Vk1uTVpsTXRHalJrbDY5Mzh2Qk9uRTNjYXR6UHRlNElRYURBVUVRQ1FvS29udVBualJxMU5oOThmNXpsQnI1OGFnRzMzMjdjUmZhRWl0RkQwS21Qb0pLSWE1a3piV3BpK1FsUU1GcWs3Rlk3R1JZYktTbHE3azIwUm1DU3BLYzJlSWhaN1o0NEd6eDBPa0t0T1QvdjBweGZGL0MwbnlvanU4RVovODhRMkJnSUkwYU5jWm9OQklZR09nSXh3Uk1KaE1tazhsbExlSGR4bWNybGhFWEY1dmovZEdqUmxLeVZDazJmcmVaeFV1V2MramdBVFp0K2xiMStHV1pvWU0vcEZMbEtuejczV2JtekpuUG50MjcyTGpobTNzMnpvS2VjKzc4aFh5L1pTdmRlL1FrYk9wa05ueXovb0ZjSjRJZ1VLZE9IVnEwYUVIejVzMHBVZUwybkFoSmt0aS9meC9EaG56RXRiLy92aThwZ2JGalJ2SFdHNi9SdlZzWHpwdytyVzM3KytwVnhvOGIwNHdzMVZFYzYwZWRETHVTSkFtU0pBbUtJZ3VTYXR3RXA3Q3lKS2tScDlWcWQvSGFOTVBtMHQ0aE9TbS8xUmFQK0tzem5oQUVXdDdxQy93VGltTTNWTTh0TDZyajI4SHg0OGQ0dVcwYnBrMmRUR1JrSkMrM2JjUExiZHV3OHJNVkJmNk1Rd2NQMFBtdE4yamVMSmdlM1VQNDQ5UXBsKzE3ZHU4aXBHc25YbWoxUE4yN2RlSFF3UVBhdG41OTMrZmx0bXBvKzhHQS9yemN0ZzE5MzM5WE15TEJ3VTNwR3RJTms4bEVrYUpGcVZ1dkh1Zk9uZ1VnTGk0T1AzOS9Pblh1ak5Gb3BGVHAwalJxL0N4Ly9ubm1uczM3N1p6VGJEYlRxRkZqaGcwZnlaTEZDMTBZWmU4WHlwVXJoMDZuWTl1MmJlemR1NWVhTld0aU1CaHlOZGk1L1g5QS83NzhzbWMzWjg2Y1JwS2wyenAzNDhhTjBldjFlVDRnY3Z0NzNkZGY0ZW5weWVxMVh6TjQ4RkRHanh1RDRyaklaODZZenN2dFgybTJadTI2MG1UVEh3VjBnaUFJb2lnNjE0NGlhelVBU1hzNXFkV3NGanNaR1RiUzBxeUl6b0tCWFNzWU9MVU10S0tCNE8zbDBiNWdUNUk3cHpoMlEwVktxdkNQYzJ5MWF0WG0yMDFiR0JBNmtKSWxTL0h0cGkxOHUya0xJZDI2RitqNGl4Y3U4UEhJNGJ6WHB5OWJ0bTdqMWRkZVorQUgvVFh1cml0WExqTiszQmlHREJuTzVoOSs0cVdYMmpGaXhERFMwdFNrL0p5NTgvbDIweFlBWnN5YXpiZWJ0akIzL2tJQVJGR2tVK2N1K1BxcW51bGZmMTNpd1A3OU5HandOQUNCZ1lITW1Uc2ZEdyt6ZG5NY1AzYU1HalZxM3JNNXY1TnoxcXZmQUt2TnBobmsrNG5Bd0VCdTNMamhjQ1pVaWkwL1AxZFAvOGlSY0VZTUc0TE5aaU11TG81M2VuUW5MazRWRy81MHhpeUdEUjk1Unc1SVFFQkFubDcraHdORE9YN3NxR2JNRnN5ZjU3aWV6bXUvYjlWcTFURWFqVnk3cG5xSzU4K2ZvMEdEcDZsVnUxYURYTHcyRVJBVkJVRVFCTFh0UThsYVJIQzBnTml6ZW0xMjBqT3NpSFpKMXNSWm5HR29yR1N5ZUtBb2dpZ0tMLytUSDJMUXdGQmU2OWlla0M1djBiWHptMnpaL0wyVzEzaXQ0eXUwYi9jaTNVUHU3V0tHN2lGZHVIang5blFGdHYzMEk2OTFmSVVYV3JkZzlxeThDZjUyN05qTzZFOUcvbWVNNitiTm13aHUwcFJHalJwak1wbG8xZm9GcWxTdHlqYUhrRWRBUUNETFYzeE90ZXJWRVVXUmw5cTJ3MmExOHZmZlZ3dDhqajlPbmFKRjg2YUVkT2xFbGFwVmVTNjRTYTc3TFZ3d0Q3T25KeSswdVg4NlFRVTVweUFJK1B2NWs1SjYvMFY0akVZamtpUVJFQkJBNDhhTmtXVVprOG0xUDY1dTNYcjRCd1F3WnZRbkRCbzRnUGF2ZE1EZjMxODcvbDZnVDkvK1RKd3ducmx6WnJQMWh5MTA2YW9XcUI2dlVJRmY5dXhCbG1VdVhickV6WnVScENTcjgvYjQ0eFhZczNzWFhsN2V6Yk1aTlgybWNjdnNhVk5rUnpqcTFFZVFWTWRNVlpLWHNGaHRwR2ZZRUxNWU5hMWdJQ3VBbzJpUUdqRzNHWGVCSWZlakljTlkrY1ZxNXN4YndPY3JWM0RwMGlXTjNuaHEyS2NQNVEzZW9tVXJ2bDYvZ1c3ZDN1WlJRbVJrSk1XTHUrWnR5cFFKSWpKU1pSWDI5dmJtdDk5K3BYZXZIblI2ODNXNmRlMmNheWlTSDZvLzhRVGJkdXppcTNVYmlJaUljRkU0Y3VMemxaOXgrUEFoSms2Y25HZjRjN2RSMEhNcWlrSmNmQnplRHlqdFVxNWNPYXBXcmNyKy9mdTFvbEIydzl1Nzkzc2MvZTFYVEViVFAzb3dtTTFtT25ic1NNZU9IVEVZRExScjE0Nk9IVHZ5MkdPUHVlejNlSVVLNmozejFScDY5WDZYUW9YVVhQdXJyNzJCVHEramU3Y3VmUEg1WjNoN2UyUDJWTDNqUVI4TzV1ZWZkL0oyOTY1VnVvYUVWSEVZczZ4NU5wMmlLQ3BYbTNNMWdpd2pPVU5UV2RZNk9sU3ZUY0ppc2FHWHNxd3ljRFRrT3NOUUFNRmswcmU5bXo5STRjSytQUEZrRFM1ZU9FLzU4bm1US3lZbUpqQjU0Z1Npb3FLdzIyMTA2dHhWWStNOGMrWTBNMmRNSnowdGpTSkZpekYwMkFndE1iNTcxOCtzWHYwbGxvd01xai94SkI4TS9GRExQK3o2ZVNkalIzOU1lbm9HZmZ2MTE3eUViOWF2VTVQWGlrTFRaditqVy9jZXQvd2VSNDZFOCtuMGFZaUNTTWxTSmZFMGUycmI4aHREODJiQjlCL3dBVXVYTEVKUjRQc3RXeDg2dzFhMGFGRWlJeUpjM3J0Ky9ScTFhNnU5U250LzJjT3FMNzlneHN6WmxDcXRGc3FmYTl3dzE1c3J1N0d6WkdTd2Rlc1B0Rzc5QWlZUEQ0b1hMMDd6NXMremI5OWVsLzNXci91YTdkdCtZdGFjZVhldDRmUld1SjF6SGprU2p0RmdvRkxsKzc5RXltcTFZcmZiT1hwVURmdDBPaDBXaThVMXBaR1N3a2NmRGFSemx4RE9uZjJUS1pNbk1uVFlpRHNxRnFXbnA3Tit2Vm9vYWRldUhULzg4QU5aRjZkbmpYQjI3L3FaOFJNbU1UMXNHaE1tVGFaU3BjcVl6V2FHRGhzQlFGSlNFbSs4MW9FU0pVb0NVS3AwYVQ2ZE1jdHgzK3hxK1BuS2xYOWtOV3lDSURqQ1VVWElHbnFyS1RNSlJSR1FKQVc3WGZYYWJEWTdGb3RkRFVWVmIwMFdIRVVEVGFoRlVSUlJFSVM3R2dORVIwVng2dVR2VktsU05kLzl6cDA3eC8rYVA4K3lGU3VaTTNjQnMyYk93T3BZR3picTR4R0VoZzdrOHkvWDhNd3pqVml5YUlHV3IxbS9maDF6NXN4bjVSZXJBZmhoeTJidE0zMThmRmo1eFdwR2p4bkgvUGx6QVpWWWIvUG1UU3hjdEpRbHl6N2p0OTkrWTlmUE8vTWRtOFZpWWNLNE1Zd2FQWll2VjYrbFRPbXkyclpiamNGdXR4TVZGY1c2Yjc1bC9UY2JINWp4Y25adkF5aXlqTjF1MTR4UW14ZGZZcytlWFlTSEg4WnV0L1B6enp2NTQ5UkpXclJVNjBleHNiRUlBb2c2SFltSkNheGU5YVhqYzF5ckhzVkxsT0RRd1lQWWJEYWlvMVJKUXFQSnhCZWZyMlR0MnRYWWJEWVNFdUxadS9jWGF0U29rUmtLZjcrSmJ6ZHVZT2JzdVZyNGRNL0Q3d0tlMDJLeGNQalFRU1pQbWtEdmQ5L0h5K3YrRTRSR1IwZHJCc3BvTk9McjYwdENncXZLMmNXTEZ3Z09ic3BiblRvejhwUFJHSTBtTGNkMnIzRHk1RWsrblRHTDU0S2JNT0xqVC9qdDF5TXUyNU9Ta3BnMmRUSXZ2dFEyUnpqODk5OVhXYlowY2JNc0lhaFdSSEI0YktJZ0NDN0xyRlFhTmRsUkkzRE50ZW5WU3Fpc2VXdXl5bUVwQUVKNjVMeldRTW03OGFXbmgwM0Y3R0hHYURMU3AyOS9TcGNwaysvK05XdldZdm15Sld6YjlpTTZuUjZMSllQazVHUVM0dVB4OXZhaGFyWHFBTHpVdGgxTm16VUQ0UERoUTF6Nyt5cnY5bjVIZTdKNWUvdGs1aDBjN0o1VnExWFRFdUhoNFlkNC92bVdtTTJxYS96aWl5OFJIbjZZcHMzK2wrZllybDY5d21PUEZkR01jNVZxMWRqM3k1NENqUUdnYTBpM2U1Ym5LQWl5TitoT21UeVJLWk1uOG55TGxuejh5V2dxVnF6RXFESGpXREIvTHBFUkVaUXBXNWFwWVo5cU1tMnRYMmpEcVZNbjZkRzlLenFkbm5ZdnQ2ZGl4VXJFeGJ2ZU9BTUhma2pZdEttc1dMNlVNbVhLc0hUNVNveEdJMU9taGpGM3ppeStXcnNHZzhGQWNKT21oRGpDZlVtU21EWlZEUVBmZk4yMXcranpMMWRUckZqeHV6NGZCVDFudno3dkl3Z3FjK3lnRHdmZnRUNDJSUUZ2ejRLWHdpOWZ2b3l2cnkvTm16Y0g0UGp4NDFpdDFoejN3NjJBdVFBQUlBQkpSRUZVVDgyYUtrMjNYcTluVURhbTNEdkZkOTk5bDNjdVBjczVhdFdxVGExYXRiVy9GeTlhd081ZHUvaGY4K2R6RkxINjkzdWZsT1FVUXJxL1hXTDAyUEZQTm5tdTBhL1o4bXcyUWJYa3puQlVVWXNJTW9LZ2VteVNvMWJnekxYcEphZnlsSFA1bEpwYkF4Q01SbDNydTNYeERQcHdzRVliWEJDc1hiTUt1ODNPbEtuVEVRUkJheDl3aGpoT0dBd0cvUHpVSjZ6TmFpTzRTVk5OYml5L3hHL1dFQ21yZHk0SWdsYUt6aSsva2xlemFFSEdJR1pmNTNPUDBMSlZhMXEyeXZrVFZxeFlpVi8ySGN6MzJFYU5HdWQ1NDVwTUprWitQTXJsdlhkNjVlUy9xOS9nYWI1ZXZ5SEgreFVxVm1UbTdMbTVmclpPcDJQUDNnUDMxZEFYNUp5M21xOS9Ba0VBdmM1T2FtcEtnU3FWaXFKdzdOaXhmM3plVld1K3VtOXozS3YzZS9UcW5idW0rdXc1ODdPbUt1b0J4N09GbzdwczRhaWd5TElpU1haRVFVU1NCTWZpZ2t5dlRaU2RZYWlqR3FxU3VXbGhhR3NlRUtLalkvRDI4VVlRQkk0ZlAwWlNVaEtLb2xDNlRCbVNrNU01Zi80Y0FELzl1RlVUY3ExWHZ6NC83OXpKOWV1cVdPek9uVHM0ZWZMM2ZNOVR0MjU5dG0vYlJucDZPamFialIrMmJLYStvelNkRjhxV0RTSTZPbG9ydVVmY3lKVDN1NU14L0pNbnZUbExicytON0Vsdnp4dzlnUTk2em5JYkUwQVIzd1JTay9NV3pmYjBMRmpJVzlEOTd1Wm4zYzF6bWp3OG1tVHoxcHc5YmFMajVTRGxVQVJKa2hBRXV5QTdvODRzWHB0ZUMwTVZCU1ZMR0pvV01iZnAzUXBEODBKK2doU3Z2Zlk2WThlTTRvY3RXNmhjcFFvVktsWWtNU0dCd01CQXhvd2J6NmRoMDdCWUxBUStGc2lRb1dwaXNrcVZxdlRyUDRDaGd6L0VacmRSTHFnY2c0Y095M2NNVDlXdFM4dFdyWG0zbDFvd2VQYTVKalJ0Mmt4TGhpNWRzcGlVMUJSa1NXTGYzcjEwNlJyQ1MyM2JNWFQ0Q0VZTUc0S2Z2ejk2dlU0ckh0ekpHUDdKazE0VTVRSS82UjhscEtZa0k0cHlqcDVBZGM2a0J6Sm5xU25KNkVRcDF6N0ZZdjV4M0lqMUp5cFN3Y3ZITDhmWXlwV3ZjTXRGNlo2ZVhwUXJYK0d1amZkQm5CTW9zWDNIcnNyUE4yOTZnaXcwUms2anBobzJCRm1XSGU0YlNMS2dkWFk0SzZSQ2tVQXpGcXRkc0ZwbDdKSWl5S3BZaTg0V3MyQ1NLQW9mM082b0hpWHU5bnVCaStmL0pMaFd3WnMrTDBkVkpqYTVrSHR0YmpiY2pMeEJRS0VrZ2g3TE9aZVhveXNUbTNULzV5eS9NVG05eWFqNFFrVEdCMkNUaktRK29zUXQ2ZW5wUzF1M2JyMEtWUThoR1ZYd0pkMGgrR0lUQkNSUkZHU0RYbENNUmhHVFVhK1lQUXlZelFZOHpTYTh2RXpvbldHb2tvWEpRMUVVVVJTRjV2YzZDZXBHVG5oN0tyZkYxMVVtOER4UjhkVzVHWGtEYng4M05YaHFTaklwS2NuWWJSbVVDVGlYZXlvaDhDeFJjVS9ldHpsemprbXlwMU0yOEd5K0huaFIveVNLK2ljOTRxSThTa1BncXl6aHFNN0I5cUZXUnhFY0MrTkJsaFZGVnB0MkZVbFMxQXFwWFVLZnJTa1hCWVM0eXpPcWNRZGlMYmViQkhVajV3MmcxOWx2NjRJV1JabTZsYzV3T2JveWNZbFdFdUxpeU1oNE5CLzFack1ub2lnVFVOaEcyY2ZPSVFwS250ZHB2VW9udVJKVG1aZ0V5ejJkTTdQWkU1MG9FZUJyb1d6ZzJRTC90bzh5T2FzZ0NOVzNydTlidkhYSHVYOXB4azFCaCtESXNZRWdLS3JOa21YVWJnNUhaZFQ1MHF2VTM5bldobnA3TkxuVFFSWHhUU0FpSWNGdDJPNEFLU21KbFBTN2Zjb2lVYkJUdnNnZmxDL2lsdCs3SGNNUjlOaFpnaDU3T09UMzNIREZVN1dDcWdGL093MmJBam9oYXdGQnpiVXBpcU5OVFhLc1JuRDB0eUU2dkRVQmJXMG9nazRVbjd2VEFSWHpqME9SRW9pNmVZMjBCN0NPN3QrSXROUVVvaUt1Z3BSSVViOS94c1gyYUQvcEg3NDVjeHUxTzRPdnIyY3QxS0tCbnN3Q2dpcjBvdEdwS1lLc0lEaThOa0dXbFN3ZW01T2V5T0d4RGVyWFRDY0lCUCtUSC9LcFNwZTRHZS9EemZnQWtoT05wS1M2ZjZpODRPMEZCcDJWVW9GeEZQRk5jaytJRzI0QUJyMnVZYzNxeFF3bi9valVad2xIUlFSRUJVVUFRVkFVeHhJcnhiRzR3RUc3SnNreWdwZFpKOWpzaWlDcDFWQXgrZnJzcHA1bTQ0L3VxWFhERFRjZUpJNmV1TkxucWVDSnA4aFNIUlVFMGdHcklBZzJRVURXYWRWUkhSNG12ZUxoWWNCc05xSzNTMWtXdml1S2NETXFzZUg5Nm94M3d3MDMzTWpUYXpQb0tnTi9aZzFGRlFWUkVGQTdPQkNRWlFXN0JJSk5SaERzYXNnb2dPRGg0U0hhN1haQlVSUlJVUlNkM1c3ZkpBakM4KzVwZGNNTk54NGs3SGI3Ym9QQk1ER0x4NVlpQ0VJcVlCRUV3U29JZ2lRSWdxelg2eFdqMGFnNDZPNFZzOW1NNkZ3WHFTaUs4T3FycitvRVFXam9ubEkzM0hEalFVT3YxOWN0VzdaczFzS0JWa0J3T0dLdVZFWlpYb0xSYUJRbFNSSVZSZEVsSmlZMjlQYjIzdVdlVWpmY3VQOVFGSVhJeUVodTNveENraVJTVXBJZitUazVkZXBVNzc1OSs1NTFlbXlPVjdvZ0NGYkE3dlRhZERxZG90ZnJNUmdNaXNsa1FwK1Z5Y0xEdzZPdSsvSnl3NDBIWTlTT0hUdUdncUN0aG5EcjhZS3YvMlBsZ1F0a2FmdHdrRTlxalRTQ0lDQUlBcUtvUTYvWG85Y2JNaGVXQW9KT3AzdnEzL2psUTBORGFkV3FWWUgyVFVsSlFSQUVkdS9lZmNmbnExV3JGcE1uVDc3VHZBR2hvYUVVS1ZLRXdvVUwwN3QzYjAwRXhZMUhGNUdSa1NnSUZDMVd3dDNjbmdVK1BqNlZzNFdob3BONE1xdnRVaG1KWkxXZlRaSFZISnR6bmFnZ0NIWGNVM2x2TVd6WU1EWnQyc1M2ZGV2WXRHa1RPM2Z1cEYrL2Z1NkplY1FSRlJYdDF1UE5CUWFENFFseTV0aXlHVFVGbFc1TlFWRmtGRm5XZHVEOCtmTkZnRXJ1cWJ4M1NFMU5aZDY4ZVlTRmhSRWNIRXh3Y0RDTEZ5OW01Y3FWeE1URXVDZm9FWVlrU1hma3FaMDUvUWNEUS92ZjgvR2RPWE9hc0dsVDJPNVFLbk5pNDhadkNPbnlGaUZkTzdrSThrUkhSelB3Z3dHRWRPMUUzejd2Y2ZYcUZXM2JpUlBINmZsMk43cUZkR2IwSnlQejFXWVZCS0hDeUk5SGVlZGozQUFFSEFzTm5NMjZ6cXFvVUtKRWlTZi9LeGZKZDk5OVIvMzY5VEdielhoNWVkRzhlWFBPblhObGV2amxsMStvVnEwYUhoNGVOR3ZXakwvKytrdmJKc3N5WThlT3BYVHAwbmg3ZTlPb1VTUDI3OStmNjdtaW82TjU1WlZYOFBQenc5dmJteGRlZUlFTEZ5NW8yd01EQS9ud1E1Vk45OWl4WTZTbnB4TWNuTG13NDlsbm53WGc0TUdEN3J2N0VVWnk4cDJ0T3FsY3BTcWp4b3k5cDJPYlAyOHV5NVl1NGRMRml5NUc2T3JWSzJ4WXY1NEZpNWF5YlBsS1RwdzR4cEVqNFk1ajV0Q3MyZjlZK2ZrcXVuVi9teW1USm1xcG1Fa1R4akh5azFGOHR2SkxTcFV1bzJsbTVJVm5ud3N1NFRCa0xvU1RqckJVVzRHZ0tsaXBYcHZtMGhrTWh2K0VZZnY5OTk5NTVaVlg2Tnk1TTJmT25HSEhqaDNjdkhsVE15NU96Sm8xaTBtVEpuSDgrSEc4dmIxcDFxeVpwcnd6Y2VKRWxpeFp3cElsU3poNThpUWRPblNnZWZQbW5NMUZIRGMwTkJTTHhVSjRlRGpIamgxRGxtVkNRakwxQkFZTkdxUngwMSsvZmgyajBVaEFRRUJXVjV1QWdBQ3VYYnZtdnJ2ZHlJSFkyRmdHRFF3bHBNdGJkQXZwek9GRDZnUFFxY25ib1gxYlF2dTdwaktHRGZsSTlhSzZ2RVc3bDE3Z3pUZGUxYlpkdkhpUjBQNTk2ZDZ0QzRNK0dNRE5tNUV1eDY3NytpdVgvUUY2dnRPTHNPa3pLUC80NDY3MzJva1RQRlczTHA2ZUtzbXFuNjhmSjQ0ZjE3eXk1NTVUSCtDRkN4Zm16ei9QWUxWYWlZeUl3TU5zSmlpb0hBRCsvdjZjT0o0L3pYbnhZc1hLWkRGcWpqeGIxbkJVeVF4SjFUd2JlbEI3MkhRNlhmWC93b1dnS0FxZmZ2b3AvZnVyN25sUVVCQWhJU0VzV0xEQVpiOVBQdm1FZHUzYUFiQml4UXBLbFNyRjVzMmJlZW1sbDVnOGVUTExseS9YQ2hJREJ3NWsxNjVkekp3NU04Zm5YTDU4bWRLbFMxT3laRWs4UFQxWnZueTVpNUVhTml5VFBUY3RMUTBQRDQ4Y1l6YVpURG5rMDl4d0ErQ3J0YXVwVWFNR0lkM2U1dEtsUzh5Zk40Y0dUemZVTkhuUG56L0h4UEhqWEk2Wk5HVWFvRXBZOW42bmg2YS9ZYlZhbVRoK0xPTW5UcVo0OGVMODlPTldGc3lmeCtneG1jZlhyRlVyaDU1SFhzSkRpWW1KZUhoNEVCMGR6YVFKNDVCa0NSOUhuakF4TVJHVGh3ZmZiL3FPSFR1MllUUWFTVWxKSVNrcENaUEpoTlZxWmU2Y1dkeTRjU09Id2xaMmVIbDdsOHRpMUJ3R1RoRWRGQU9PWGphY3RRSkZVUlJCNzJ4eUV3VGhQMkhZYXRhc1NVQkFBTk9uVCtmTW1UT2NQWHVXWDMvOWxhSkZYWXZualJ0bkNwVUVCQVJRdm54NS92ampENTU4OGtsU1UxUHAxcTBiYjcrZEtaUnN0VnBkam5GaXlKQWh2UG5tbXdRR0J0SzBhVk5lZlBGRnVuYnRtdXZZekdaekRqVWhVQ1hkSG9TTW14c1BQK3JWYjhDY1dUTUFnZnIxR3hBMmZVYUJqcE5sbVRHalI5SG14YmJVcjk4QVVLVWhyMTM3bStGREI2djdLREplMmZRS0tsV3FUS1ZLQmRkS1BYMzZENDZOR0Vyb0I0TTQrK2VmWE15U2hwazBZUndCZ1lHRVRaL0pxeDFlZGpHSUF6OFl3SXN2dmtTSGpxOHlZdGpRZk05aE1CZ3FaTXV0NWN5eG9hQ0FWa0RRWjI2ZzZuL2hRamg0OENETm1qV2pTWk1tTkczYWxOZGVlNDN3OEhDV0xsMmE3MU5Jcjlkak5CbzFyYzAxYTlaUXZicXJyYy9OMjJyYnRpM1hyMS9uKysrLzU4Y2ZmMlQ0OE9ITW56K2Z3NGNQYXk2NkU2VktsU0lqSTRPRWhBUjhmWDBCc05sc3hNYkdVckprU2ZkZDdFWk93MWF2UG5QbkxTVDhTRGlmcjF5QjBXaGt6TGdKdHp4dTJkTEZlSGg0MExsTDVrUFdack5SckZneFZxejg0cTZNclhEaHdtUmtaQkEyZlNhRkNoWGl4SW5qRkhaYzE0VUxGK2FaUm8wMWtYTlZodEtiUW9VS2taU1l5SVNKVTNqODhjYzVlL1pQN1Y3SUM0SWdWTTZTVzh1YVo4dGVRRkNjQlFRUkVLS2lvaW9CcHYvQ2hiQmd3UUxxMTYvUDFxMWJHVHg0TUMxYXRPREdqUnM1SlBXeTVzdVNrNU81ZVBFaTFhdFhwM3o1OHBoTUppNWN1RUNGQ2hXMDE2SkZpOWl5WlV1dUh0djU4K2ZwMHFVTHExYXRZdi8rL1p3NmRZcmpqbHhEVnRTdVhSdXoyY3pldlptcTUvdjI3VU1VUlo1KyttbjNYZXhHRGt5YU9KN3dJK0UwYi80OHc0YVA1TkNoZ3k3U2tibGgzNzY5N05tOW0rRWpQbmFScXF4UW9RSkpTVW44c21lM2xtLzdmcE9yVHVqNTgrZll1UEdiQW8zdHlSbzFzRnF0bUV3bUpFbmk0SUg5MUt5bGFwbldxbFZiRytmUjMzNGpLS2djUnFPUllzV0xVOWpYRjVQRHNkaTNkNjkyVEQ0d0xWNjZQREFYZzZiMXNBRlpQRFpIanMzYjI3dkNmK1ZDOFBmM1orZk9uWnc4ZVpLU0pVdXlidDA2bGkxYmhwK2ZuOHQrNDhlUHAzSGp4dmo2K2hJYUdrckZpaFZwM2JvMW9pZ3ljT0JBeG80ZFM3Rml4V2pZc0NIcjE2OW54b3daYk4rK1BjZjV6cDQ5UzU4K2ZaZzNieDRCQVFHc1dMRUNiMjl2cWxSUkJXMG1UWnBFN2RxMWFkV3FGVjVlWHZUbzBZTytmZnZpNCtPRDBXaWtkKy9lZE8vZS9iNHBucnZ4NzBMbnpsMEpDNXZDMnRXcmtHV1pnWU0rUWhURmZCWGU1czZlU1VaR0JuM2U2NlY5enR6NWkvRHg4V0hTbEduTS9IUTZpeFl1d05QVGs0SFpoSlNQSFQzS2hnM3JhZCsrd3kzSFZyWnNFTzNiZCtEZFhqMVJVSGoyMldCTk8vajlQdjJZUEdrQzY3NytDclBaekpCaHc3WElhUGlJanhrM2JqUTJxNDNTcFVzemVPandXNTZyUW9XS2p3SFhjL2ZZSERvaEdyZWtnaUNLb29mRllobWcxK3NuLzF0Ly9ORFFVUDc4ODA5Ky9QRkhZbU5qNmRtekp6dDM3c1JnTVBEVVUwL3h4aHR2MExOblQ2NWV2WXF2cnk4K1BqNU1uVHFWbFN0WDh2ZmZmOU9vVVNNV0xseElHWWM2dmMxbVk4eVlNWHoyMldmRXhNUlF1WEpsUHZua0V6cDA2T0I0R3RYaWpUZmVZT2pRb1VSSFJ6Tmd3QUMyYjk5T2NuSXlkZXJVWWRxMGFUUnExQWhRMnoyNmRldEdXRmlZbGs4TERRMWx6Wm8xaUtKSXg0NGRtVDE3ZHE1aHJodVBEdmJzMmVOV2Q4c0hjYkd4WVRWclZOK091bWJVK1VvVEJDRURWU2xlRWtWUlhUTnFNQ2lDSUFobXU5MCtVeFRGWHU3cGM4TU50MkY3R0pHUm5yNjZZb1Z5WDJRemJLbFpESnRkRUVSWnB4TVZ2Y0dnNkIzSnVhQi82eGVlTjI4ZWZmdjIvVS84ZUpHUmtUbXF0d1dCTE10Y3ZuS1Z1TGc0SkVraUkvM1JYSHZxWVRhajArbnc5d3NnS0tnTStSR21Lb3JpbUxOWTdQWjdOMmNlWmpONnZaNEEvd0NDZ3NyZWN2L3I3bjdHWENGSlVuRWNUYmxaWDRxaXBoSFY3ZzRaV1FiSkxpRUlndUFweS9KUm9MSjcrdjU5c0Zpc25EaHhBcDFlNzlZVkJWSlRVMGhKVGtLUzdOU3FXUXVqMFpDclVmdjExOThRZGJyN295dnFHSk1zUzlTclc5ZnRzZDBCRkVVNVg2WlU4US9JSkoxMEVrODZxY0x0am5CVTBldjFpck82VU5ZOWRmOU9SRVJHb05QcjNhd1FEbmg1ZVZPMFdBbDBPajAzSW03a3VzOWZsNjhnNm5UM2JjNmNZeEpGSFZldVhIVmZ0SGNBUVJCS1ovUFlzdi9mcFZsWFBILytmRkhBbmJuK2x5STJKdGJOQ3BFTHZIMEtFUk1UbSt1MnVMaTRCekpuM2o2RmlJbDFreDNjYVZUL3llZ3gzdVRaOHVIVWJRRlEwQWNFQkJSM3o5bS8xVDIvYzFhSVI4RnpTMHlJeTNYYmc1b3pMeTl2RXVQajd1allwTVJFTHY5MWtkUjh0SHE5dkx3Skt2YzRoUW9YZm1EemZpL0hXYlZLdFVKQVRDN2Vtdk9Pd05uNm9UZVpURVh2L2czbnBqZ3VLSHg4Q3FIVGlSUXBVb1RpeFcvdkdTTUlrSjd1SnFuTUMrbDVFSGcreU9MS25mNWVmMTI2UUZwYS9nSzlxYWtwWFA3cklqVnFQVGhheFhzNXpzZUtGQ21VM1Z0ekZBOEUxM0JVVWZRNm5lNnVHalkzeGZIdEl6VTFoUnNSa2R5SWlPQ3BPbmYzb3R5KzdTZFdMRjlHVk5STlNwUW93ZWRmcnVIOCtYUDA2SjdKUURKMCtFaGVlS0dOKzRkNGlIRXJZNUgxV3ZxdmpyTlFvVUtGc2hnd1ozT3U0RmdNbnpXU0VmU2lLRDUyTjc5WVZvcGpOd29lb25oNWVSTjFNNExJeUVpS0ZTdDJWejczeG8wYlRKazhrVEhqSmxDdlhuMlNrbFRPcndvVktySjk1MjRBM3VuUjdaNTlyK1hMbHRMdTVmWXVORTNPY2MyYU1aMlRKMy9IYURUUy9QbVd2UGQrSDQxVjR0cTFhOHlaTllPVHAwNWlNcGxvMGFJbHZYcS9sNE4xNG03aVZ1ZDhybkZEREFZRGdpQVNGQlJFOXg0OWFkU29zZnZpdlk4d216MEt1UnExSEMvSDBra0ZVUlRGZ0x0NWNqZkY4VDh3Y040KzNMeDU4NjU5M3RrL3p4QVlHRWlqUm8weEdvMEVCZ1k2UWxnQmh3YWp5MXJDdTQzUFZpd2pMaTVuQW4vMHFKR1VMRldLamQ5dFp2R1M1Unc2ZUlCTm03NEYxSjY4b1lNL3BGTGxLbno3M1dibXpKblBudDI3MkxqaG0zczJ6b0tlYys3OGhYeS9aU3ZkZS9Ra2JPcGtObnl6L29GY0o0SWdVS2RPSFZxMGFFSHo1czBwVWVMMm5JaURCL1lUMHJVVHI3LzZDak0rRGRQV2ROcHNOc0ttVFNHa3kxdDBEK25Ddm4yWmE1cnpZOFM5ZDVGTUtwdSsrNWFoZzFYYUpZUEJtTjFqRTNFVURySkdqRmFyRlZFUWhMdTZTTkdkelA1bm5wdGRrdjd4NXh3L2ZveVgyN1poMnRUSlJFWkc4bkxiTnJ6Y3RnMHJQMXRSNE04NGRQQUFuZDk2ZytiTmd1blJQWVEvVHAxeTJiNW45eTVDdW5iaWhWYlAwNzFiRnc0ZFBLQnQ2OWYzZlY1dXE0YTJId3pvejh0dDI5RDMvWGMxSXhJYzNKU3VJZDB3bVV3VUtWcVV1dlhxY2M1QlNoQVhGNGVmdnorZE9uZkdhRFJTcW5ScEdqVitsai8vUEhQUDV2MTJ6bWsybTJuVXFESERobzlreWVLRitkSmEzeXVVSzFjT25VN0h0bTNiMkx0M0x6VnIxc1JnTU9ScXNMUC9QeU1qbmFsVEpqRngwbFJXcjExSFRFd00yMzc2RVlDdFAyd2hJeU9EbFYrc1p2cU1XY3llK2FubTVlZkZpRnNRUFBIRUU5cEROYjh4WnYwN0ppYUdkM3AwNThLRjg5cnZvTmZyQytYaHFXa3ZXWmJSNi9XSWdOL2RuUFE3cFRoMlEwVks4ajh2dE5TcVZadHZOMjFoUU9oQVNwWXN4YmVidHZEdHBpMkVkT3Rlb09NdlhyakF4eU9IODE2ZnZtelp1bzFYWDN1ZGdSLzBKOHJoVFY2NWNwbng0OFl3Wk1od052L3dFeSs5MUk0Ukk0WnBhbHR6NXM3bjIwMHFFOHFNV2JQNWR0TVc1czVmQ0lBb2luVHEzQVZmWC9XeSsrdXZTeHpZdjU4R0RWUjJrOERBUU9iTW5ZK0hoMW03MEk4Zk8wYU5Halh2Mlp6ZnlUbnIxVytBMVdiVERQTDlSR0JnSURkdTNOQThGRm1XYzVBOEhEa1N6b2hoUTdEWmJNVEZ4ZkZPais3RXhjVVJFUkdCcjY4ZkpVdVdSS2ZUMGFwVmF3NGZQZ1NvckxmUFB2dWM0M2NTTUJpTW5EdDNWdHVXR3lOdUFYTmplWkpWTGx1NldLTUdQM255ZHdiMFYxY1IrZnI2OHNXcU5ZUjB5K1JFMU9sMHVZV2l1SWFocWtjckF2YzhiaHcwTUpUWE9yWW5wTXRiZE8zOEpsczJmNi9sTlY3citBcnQyNzFJOTVBdTkzUU0zVU82Y1BIaXhkczZadHRQUC9KYXgxZDRvWFVMWnMvS20rQnZ4NDd0alA1azVIL0d1RzdldkluZ0prMXAxS2d4SnBPSlZxMWZvRXJWcW14ekNIa0VCQVN5Zk1YblZLdGVIVkVVZWFsdE8yeFdLMy8vWGZEbTB6OU9uYUpGODZhRWRPbEVsYXBWZVM2NFNhNzdMVnd3RDdPbkp5KzBlZkcrZmYrQ25GTVFCUHo5L0VsNUFNbDZvOUdJSkVrRUJBVFF1SEZqWkZuR1pISmxIYXRidHg3K0FRR01HZjBKZ3dZT29QMHJIZkQzOTZkWXNlTEV4Y1Z5NmRJbDdIWTc0ZUhocEtTbzM4SEppSHZxMUVtR0RQNFFvOGxJWW1LaXRzM0ppRHQzeml5TkVmZWY0czIzT3JOcjE4L01tVDJUY1dORzA3ZGZmNmQzbGlPbktnaUNkejY1TlJjanB4Y0U0YjRreEQ0YU1veDY5ZXFUbUpoQXI1NXZVN1dheW4yV0Y3M3h3NEFXTFZ2Um9tVXJ2djVxTFpHUkVZK00xeGdaR1VtRkNoVmQzaXRUSmtpYkEyOXZiM1pzMzhiNDhXTklTVTdKTTZ6SUQ5V2ZlSUp0TzNZUkVSSEJKeCtQWVBteXBmUjh4NVdINGZPVm4zSDQ4Q0htekptUFhxKy9MOSs5b09kVUZJVzQrRGk4SDFEYXhSbU83dCsvbjFxNThKa0pna0R2M3UveHh1c2RLVk9tckdha3pXWXp3NGFQWlBLazhZN2Z0U3llWnJOMjNQZmZieUk5UFoxSms2Y3hlK2FuTHArWkZ5TnVYbWpWcWhYZTN1cjhPUE9BcDArZjV2VHAwOW8rM3Q3ZXZQdnUrM3dRMm84MzMrcEU1Y3A1THlzVFJkRTduekJVTTJvMm13MDljRjg1cVFzWDl1V0pKMnR3OGNKNXlwY3ZuK2QraVlrSlRKNDRnYWlvS094Mkc1MDZkOVhZT00rY09jM01HZE5KVDB1alNORmlEQjAyUW92aGQrLzZtZFdydjhTU2tVSDFKNTdrZzRFZmF2bUhYVC92Wk96b2owbFB6NkJ2di82YWwvRE4rblZxOGxwUmFOcnNmM1RyM3VPVzMrUElrWEErblQ0TlVSQXBXYW9rbnVaTXR0ejh4dEM4V1REOUIzekEwaVdMVUJUNGZzdldoODZ3RlMxYWxNZ0lWME4rL2ZvMWF0ZFdXMUgyL3JLSFZWOSt3WXlac3lsVnVqU2dWZzF6dTdteUd6dExSZ1pidC81QTY5WXZZUEx3b0hqeDRqUnYvcnhMb2hwZy9icXYyYjd0SjJiTm1YZmZHazV2NTV4SGpvUmpOQmlvVlBuK0w3RzJXcTNZN1hhT0hqM3FETkZ5YUdha3BLVHcwVWNENmR3bGhITm4vMlRLNUlrTUhUWUNRUkI0dXVFelBOM3dHVWZ1Yks1R1MxKzRjR0hNWmpOangwMUFGRVVzRmd1RkhmT1FGeU51ZnZqeFJ6VjM5OHd6ejNENThtVXRmSFpKZTF5OHlPUkpFeGc3YmdJcmxpK2xUTmtnMnVUdEtYdGxNMkpaakpxUU5XUkZCRHp2NTQ4U0hSWEZxWk8vVTZWSy9rems1ODZkNDMvTm4yZlppcFhNbWJ1QVdUTm5ZTFZhc1ZxdGpQcDRCS0doQS9uOHl6VTg4MHdqbGl4YW9PVnIxcTlmeDV3NTgxbjV4V29BZnRpeVdmdE1IeDhmVm42eG10Rmp4akYvL2x4QUpkYmJ2SGtUQ3hjdFpjbXl6L2p0dDkvWTlmUE9mTWRtc1ZpWU1HNE1vMGFQNWN2VmF5bFRPbk9wN2EzR1lMZmJpWXFLWXQwMzM3TCttNDBQekhqWjdYYU5CbDJSWmV4MnUyYUUycno0RW52MjdDSTgvREIydTUyZmY5N0pINmRPMHFKbFMwQlZUaElFRUhVNkVoTVR0QnlKSXJ1eUZCY3ZVWUpEQnc5aXM5bUlqb3BTd3lpVGlTOCtYOG5hdGF1eDJXd2tKTVN6ZCs4djFLaFJJek1VL240VDMyN2N3TXpaYys4YkFXZEJ6Mm14V0RoODZDQ1RKMDJnOTd2dlB4Q3RpdWpvYUsyYWJUUWE4ZlgxelNHSWN2SGlCWUtEbS9KV3A4Nk0vR1EwUnFPSnVEalhWUStIRHgxa3g0NXRXZzlqclZxMXNkdnRpS0pJUWtJOEZ5OWVwRkxGU3RxMjNCaHgveWwrKy9VSVE0ZU5vRW5UWm53NmN3Nm4vemlWZyswNnk0UFNuTTJvWlgyR3VwVDM5WUQ1ZnZ3WTA4T21Zdll3WXpRWjZkTzNQNlVkcEk1NW9XYk5XaXhmdG9SdDIzNUVwOU5qc1dTUW5KeE1Rbnc4M3Q0K1ZLMm02aEc4MUxZZFRaczFVMytvdzRlNDl2ZFYzdTM5VHBhbmlrOW0zc0hCN2xtMVdqVXRFUjRlZm9qbm4yK0oyZUdPdi9qaVM0U0hINlpwcy8vbE9iYXJWNi93MkdORk5PTmNwVm8xOXYyeXAwQmpBT2dhMHUydVhCUjNpdXdOdWxNbVQyVEs1SWs4MzZJbEgzOHltb29WS3pGcXpEZ1d6SjlMWkVRRVpjcVdaV3JZcHhRdHF2Ylh0WDZoRGFkT25hUkg5NjdvZEhyYXZkeWVpaFVyRVpkdHVkREFnUjhTTm0ycStpUXVVNGFseTFkaU5CcVpNaldNdVhObThkWGFOUmdNQm9LYk5OV1N4SklrTVczcVpQUjZQVysrM3RFMVRQeHlOY1dLM2YwVmdBVTlaNzgrN3lNSUtuUHNvQThIMzlVK05oOGZud0x2ZS9ueVpYeDlmVFZaeCtQSGorZEk1TmVzV1l1YU5XdHArYXBCV1poeTQrUGo2Tld6QjZWTGwyYmlwQ2s4VnFTSTlydWVPM2RPeTNmM0d4Q3FlYTU1TWVJV0JBY09ITWh6MjJ1dnY2SDlQeUFnZ0k4RzV5dnM0cEZQR09xd2NDS1NKS0VIN3NzZE51akR3UnB0Y0VHd2RzMHE3RFk3VTZaT1J4QUVyWDNBYVo2ZE1CZ00rUG1wVDFpYjFVWndrNmFhM0ZoK2lkK3NJVkxXVmk1QkVQSjhZbVROcitUVkxGcVFNZVRIRTNZMzBiSlZhMXEyYXAzai9Zb1ZLL0hMdnZ3Rm1oczFhcHpualdzeW1SajU4U2lYOTk3cDFUdkhmdlViUE0zWDZ6ZmtlTDlDeFlyTW5EMDMxOC9XNlhUczJYdmd2aHI2Z3B6elZ2TjFOOGFRbXBwU29GWXA1K3FlTzRXZm56L3Jjb2tXc2h2QXJBZ01EQ3l3UXRiZFJFQkFnRlpoejhWV0NkbnRnU0NBVHFlMmV6dzQxeUZmZHpzR2J4OXZCRUhnK1BGakpDVWxvU2dLcGN1VUlUazVtZlBuVldYM24zN2NTdGkwS1FEVXExK2ZuM2Z1NVByMTZ3RHMzTG1Ea3lkL3ovYzhkZXZXWi91MmJhU25wMk96MmZoaHkyYnFOOGhmV0tWczJTQ2lvNk8xbkVGRWx0ekJuWXpobjhCczlzU04yNXViQnpsbmVaMjdTSkVpcE9XenB0clRzMkFoYjBIM3UxZTR4K00wNXVLcENVbzJyODBaaXVvZTFDVGtKMGp4Mm11dk0zYk1LSDdZc29YS1ZhcFFvV0pGRWhNU0NBd01aTXk0OFh3YU5nMkx4VUxnWTRFTUdUcENEUW1yVktWZi93RU1IZndoTnJ1TmNrSGxHRHgwV0w1amVLcHVYVnEyYXMyN3ZkU0N3YlBQTmFGcFV6VzAzZmJUanl4ZHNwaVUxQlJrU1dMZjNyMTA2UnJDUzIzYk1YVDRDRVlNRzRLZnZ6OTZ2VTRySHR6SkdPN1hrLzVSUW1wS2NwNWV0ZmlBNWl3MUpSbGRIcFhXNHNXTEV4RVJRZlROQ0R5OWZYS01yVno1Q3JkY1lPN3A2VVc1OGc5V2wra2VqMU9YbThlV1c5NU5VRzRWZDkwbWpoNDlTcEZpYm8zTU8wVlU1SFhxM01aQytNdVhyeEFiRitkZW01c05OeU52RUJnWVFObGNjcm1YcjF3aE52Yit6OW5OeUJzRUJBUVFWRGJ2L0hKVVZCU1JrWkhZN1hhU2s5MnNPTm5ScEVtVDlrQWFLb051RXBtaUxoWTA3UU5CdnV2TlFXNFA0cDg5MFcrM1g2dHMyVEpFUjBjam50cVBBQUFnQUVsRVFWUnhNL0tHbXhyY01ZY3BLY2xJZG51dVJnMGdxR3hab3FMdTM1dzV4eVJMVXI1R3pSbVNGbkVrODkzSUZkbkRUc0daWXhNRVFWMTFJSXFDb0NpS2hMcEU0YTRnSWlLQ3lNaWJQRmJVelY5NSs5N2FEVXFVS0g3YjdCNktvdkRYNVN2RXhjVWkyV1V5TWg1TmpqYXoyUk5ScHlNd0lKQ3laVXZmY29IL2xTdFhpWTZKUWJKTDkyek96R1pQZEhyOUxUMDFOd29FV1JDRWprQnFGbzh0UlJDRVZNQWlDSUpORUFTN0tJcUtvQ2lLRlREYzdYQlVFSFY0ZVhuajZmYmNib2swaDlnSEtMY1ZocnJoeGlNR215QUlyMmN4Yk1sQXNpQUlhVUJHVnNPbUIrNjZZYXRUcHc0M2I5N2tabFFVeVVtSmJnYmRmT0R0NDROQnI2ZFVxWkx1RU1RTk4vS0h0YUE3T2czYlhhOFJGeTFhOUk0ME10MXd3dzAzQ21qWWxHei9haENCZFBkOHVlR0dHLzhDWkJUWVk3dHk1WXBiRGNRTk45eDQ2S0VvU25vdTNwbWlPQlJkbkoxcmlxSW8rckpseTZhNnA4d05OOXg0MkNITGNtcVcwRk16Y05uYlBRUkJRRlFVeFUxNTY0WWJidndiUExic3pKWkt0djlyZit0UmUwSGNjTU9OQjMvanV2VjQ4NEhkYmsvSllzQ1VMS0dva2pVVWxXVVp2YUlvQ2ZkU3FjZ05OOXdvbUZGejYvSG1ENHZGa3B5YngrWnF2ekpEMGJoSGJZSktsU3BGdFdyVmNoV2o4UGIyNXJQUFBydVhUeDFDUTBNcFVxUUloUXNYcG5mdjNwb0lpaHVQTHJMcThicVhJK1o1N3lSbDg5Z1VjbW4xQU5Xd3hUNktrM1RtekJrbVRacDAzODg3Yk5nd05tM2F4THAxNjlpMGFSTTdkKzZrWDc5KzdxdjJFWWRiai9mV3NGcXRTVms4dFZ6eWE0TEtyU2lBS0VsU3pLTTRTZVhLbFdQaXhJbWNPWFBtdnAwek5UV1ZlZlBtRVJZV1JuQndNTUhCd1N4ZXZKaVZLMWNTRXhQanZuSWZZZHlwSHUrWjAzOHdNTFQvZlhBRVRoTTJiUXJiSFVwbFRtemMrQTBoWGQ0aXBHc25saTlicXIyZm44RHlpUlBINmZsMk43cUZkR2IwSnlNTHJNMmFucDZXakd0VGJyYnFxTk5mQTlGbXM5MThGQytrM3IxN1U3MTZkZDU1NTUxOEdYUFhyMS9QazA4K2lkbHNwbnIxNml4ZHV0UmwrODgvLzB5ZE9uVXdtODNVcTFlUHNMQXdGM0hZd01CQVB2eFFaZE05ZHV3WTZlbnBCQWNIYTl1ZmZmWlpBQTRlUE9pK3V4OWgzS2tlYitVcVZSazFadXc5SGR2OGVYTlp0blFKbHk1ZWRERkNWNjllWWNQNjlTeFl0SlJseTFkeTRzUXhqaHdKZHh5VHU4Q3kzVzVuMG9SeGpQeGtGSit0L0pKU3BjdG9taG0zUWxKaVVsNmhhSTRWQ1BxTWpJeW9XNm5OL0JlaDArbFlzbVFKRFJvMFlOR2lSYno3N3JzNTl0bTdkeStkT25WaTl1elp0R3JWaXFOSGo5SzdkMjkwT2gzZHUzZm40c1dMdEduVGhyNTkrN0ptelJwKytlVVgrdmZ2N3lMd01XalFJR3JYcmczQTlldlhNUnFOQkFRRWFOc05CZ01CQVFGY3UzYk5mWGU3a1FPeHNiRk1uRENPbU9nb0JGSGt2ZmY2ME9EcGhpNGtyYjYrZnF4WStVVm11bVBJUjl5NG9USTRKeVFrNE9ubHhacTE2d0JWRldyT3JCa2tKaVhpNytmUDRLSEROQzBMZ0hWZmY4V0dEZXUxL1FGNnZ0TUxvOUdvTVZVNzhmdUpFenhWdHk2ZW5wN1k3WGI4ZlAwNGNmdzQ5ZXJWNThTSjQzend3U0RBVldBNTZ1Wk5QTXhtZ29MS0FlRHY3OC9QTzNjVWFDNXVSdDFNTG9CUlV3RDBFUkVSRVhuSnovL1g4ZFJUVHhFYUdzcVFJVU5vMjdhdHBuM294SVFKRStqUm93ZTllNnQ4L21YTGx1WFNwVXRNblRxVjd0MjdzM0RoUXFwVXFjSzBhZFBVcDJmbHlwdzhlWkxWcTFlNzVOU2NTRXRMdzhQREk4YzRUQ1pURHZrME45d0ErR3J0YW1yVXFFRkl0N2U1ZE9rUzgrZk5vY0hURFNsVnFsU2VtcnlUcHFqWFkySmlBcjNmNmFIcGIxaXRWaWFPSDh2NGlaTXBYcnc0UC8yNGxRWHo1ekY2VE9ieE5XdlZ5c0U4bkpmd2tGTmdPVG82bWtrVHhpSEpFajZPUEdGV2dlVWRPN1pwQXN0SlNVbVlUQ2FzVml0ejU4eml4bzBiT1JTMjhnNjdUenZiUGVTOFBEVm5NQ3JXckZreml0dFlnL1ZmdzlpeFl3a0lDS0J2Mzc0NXRwMDZkWXBseTViaDdlMnR2VWFPSE1tRkN4ZVFKSW5qeDQ5VHY3NnJRRTJqUm8zeVBKZlpiTTYxRW11eFdCNklqSnNiRHovcTFXL0F6aDNiV2ZuWkNpd1pHUVVXVkpGbG1UR2pSOUhteGJiVXI5OEFVS1VocjEzN20rRkRCOU05cEF1clYzK3BxYlU1VWFsU1pWN3AwTEhBNHp0OStnOUdqaGpLTzczZnBXbFRWMlczU1JQR2NmbnlYNFJObittaVZKK1ltTWpBRHdaUXJWcDErdlVmVU5CVFpVd1lQell0bjFCVU0zU0NvRGJvQWx3RktqMktGNDZucHljTEZ5NmtaY3VXYk56b3F0eGp0OXNaTkdnUWI3LzlkbzdqUkZGRXI5Zm5FQVRPTDE5WHFsUXBNakl5U0VoSXdOZlhGMUJWcTJOall5bFowazJuN2tZdWhxMWVmZWJPVzBqNGtYQStYN2tDbzlISW1IRVRibm5jc3FXTDhmRHdvSE9YcnRwN05wdU5Zc1dLdVlTdC93U0ZDeGNtSXlPRHNPa3pLVlNvRUNkT0hLZXc0N3JPUzJDNVVLRkNKQ1VtTW1IaUZCNS8vSEhPbnYxVHV4ZnlnNklvZjJjellISVd6eTNuL2FrZW8xeDVsQytlRmkxYTBMbHpaL3IyN2F1SkNBTlVxMWFOa3lkUFVxRkNCZTExNE1BQlpzMmFoU0FJUFBua2t4dzVjc1RsczdML25SVzFhOWZHYkRhemQyK202dm0rZmZzUVJaR25uMzdhZlJlN2tRT1RKbzRuL0VnNHpacy96N0RoSXpsMDZHQ09oMmwyN051M2x6Mjdkek44eE1jdXphc1ZLbFFnS1NtSlgvYnMxdkp0MzIvNnp1WFk4K2ZQc1hIak53VWEyNU0xYW1DMVdqR1pURWlTeE1FRCs2bFpTOVV5elV0Z3VWang0aFQyOWNYa0NHLzM3ZDJySFpNZkpFbTZuczJvNWVHdHFmMGVla0NSWmZseVhvbytqd3BtekpoQjFhcFZYWEpkUTRZTW9WV3JWb3dlUFpwT25UcHgrdlJwK3Zmdno4Q0JBd0hvMjdjdnMyZlBadWpRb2J6OTl0c2NPblNJQlFzV3VJU1ZreVpOb25idDJyUnExUW92THk5NjlPaEIzNzU5OGZIeHdXZzAwcnQzYjdwMzczN2ZGTS9kK0hlaGMrZXVoSVZOWWUzcVZjaXl6TUJCSHlHS1lyNEtiM05uenlRakk0TSs3L1hTUG1mdS9FWDQrUGd3YWNvMFpuNDZuVVVMRitEcDZjbkFiRHFpeDQ0ZVpjT0c5YlJ2MytHV1l5dGJOb2oyN1R2d2JxK2VLQ2c4KzJ5d3BoMmNsOEN5WHE5bitJaVBHVGR1TkRhcmpkS2xTek40NkszRmwyMDJXMFF1SHB1aXF1KzVlbTJDZ0NJSWd1Q2RrWkhSejJnMFRueFVMcFpTcFVvUkdocXF0V0U0OGNVWFg5QzFhMWRXckZoQnQyN2RBRmkxYWhVVEowN2t3b1VMRkN0V2pKNDllekp5NUVqdFNmalRUejh4Y09CQUxseTRRTzNhdFduUW9BSHIxNi9YZEVVREF3UHAxcTBiWVdGaFdqNHRORFNVTld2V0lJb2lIVHQyWlBiczJia1dGZHg0ZExCbnp4NGVyMWpGUFJGNUlDWW01dFBhTlovNEJWZGE4QlFuTFRncWJiZ2tpcUtzMCtsVnc1YVVsTlRHMjl0N3JYdjZiZzhuVDU0a0xTMk5CZzBhYU8rTkhqMmFIMzc0Z2ZEdzhQczJEbG1XdVh6bEtuRnhjVWlTUkViNm83bEV5OE5zUnFmVDRlOFhRRkJRR1VSUnpDOW40NWl6V096MmV6ZG5IbVl6ZXIyZUFQOEFnb0xLdWczYkhlTHNuMzhPYS82L0pxZkpLZVNTRGppazkwUkpGRVZacjljcGVrQ0pqNCsvK0NqMHNrbVNkTnZ5ZHZuZEdCY3VYS0JMbHk2c1dyV0tXclZxY2ZMa1NlYk5tOGZ3NGNQSmpQY0xqc2pJeU51bVU3ZFlySnc0Y1FLZFhvOVBvY0p1K2IzVUZPSVQ0b241TFpwYU5XdGhOQnB5L2UxKy9mVTNSSjBPYjU5N1AyZXBxU25FeHNVUkhSTk52YnAxODkzM3VydWZNVmNjT25nZ2xzeUNnVlk0Y0RCN09FSlJCUVVGV1pZUkJFSHdCSXovWisrNzQ1dW8vLytmZDVkY2R2ZW1wWVcyREZHZ1NBRS9GQkYvYkJ6Z0YwVUZSQ3hZa0NFZ0loUVVGR1FyUWdzaVU1Q2xJR0paQXJKa3lpcFlobXlRMHFicGJ0T1JjWGUvUDI0MFNkTlNvR1htOVhoRWFkWmQzbmYzdk5kOFBsbVcxUU5RdUpidzdtenExS2xZdkhneDB0TFNFQndjakxpNE9Jd2VQYnBTYjZFNjdXR0ovejdxeG9zVGV5RXN0THlYZE8zNkRlVG01ajRVd1dRZmIyK0VPcEhoYzNsc2xkKy9RMm9GOUFFdlkyQjBDRVZMQUpnRm9XU0dKRWxPSnBOeEpNcVNjUmRjNjNmM0ZoOGZqK3ZYcjhOa011SHExYXNZTTJiTUF3TTFBTWpPeW5ZTlR6c3hyYzROV1ZuTytSMXljbklleXBwcGRXN0l5bmJOQk45RHF1VWk3RnM4YkZzOTdJc0hJb091NkoyekxIdmV0WVNQbDNIY3ZROVBQK21tMFdqQnNreUZLWW1Ic1dZYWpSYU1sWEVkbkxzMGk4VnlGZVg3MXh6NzJIaDJEd0hjWkFSQmNCekhjVmFyOVh4Rm94TXVlelNOSUlDU0VoZVhXMFZXVWdIUDNjTXNydHpyOFNySXo4ZU42MWRSVkdTc0ZEakQ2b1REemQzOW9mMittdGhQbzdId3BoTkFLK2V4RVVTWjdvRk1mS0drcE9TY0M5Z3E4NDU0Mm1hRHdRQXJ3OEJZV0QyMHpWcXREaks1REg2K3ZnZ01ES3oyL2Q2MWN3ZVdMMXNLZ3lFRFFVRkJXTGxxTFM1ZnZvVFkvdjJrOTR5Tm40Q3VYYnU1RHZJamJOZXZYVUZ4Y2VYMFBrVkZSdHk0ZmhXTm16WjdvdmJ6OXUyMDJ3NkF4Z0JnaGFKQnVZY0liQURBWGJwMDZWeDBkTFRyREtvQTFKS1Rrd0dDaEVhcjQybWJBNnJ2KzR1S2pFalhaeUE5UFIzTm1sWGZTWm1XbG9ZWjA2Zml5OGxmSXpxNkJRb0tlR3FjaUloSTdOcTlEd0F3TVBiOUdsdTNaVXVYNFBYdVBlellUTVQ5bWp2bkc2U2svQU9hcHRHK1F5Y00vbWlJTkh5ZG1wcUtoTGx6a0hJMkJRcUZBaDA3ZHNLSGNZTlJrMDNrZDlybWl6RXZRQzZYZ3lCSWhJV0ZvWC9zQUxSdUhmUEF6c0U3Z1lYdHVmUXdyU2IyYy8rK3ZSa0NhREVpcU5sN2JieVhCbHVWS2hIbFdyWnNtUVhnc2d2R3lwdGVyd2NJRW43K2dUV1NtOUZvdFBEekR3UkFJRDA5dmRxKzkrSy9GK0RqNDRQV3JXTkEwN1RFRTBjUUJCUUtCUlFLQldwUzcrTEg1VXVSazFNK2dUOXA0Z1RVQ2c3R2I3OXZ3YUxGeTNEMHlHRWtKVzBDd1Bma2pSMHpHdlhxTjhDbTM3Y2dJV0VCOXUvYmk5ODIvbHBqKzFuVmJTWXVXSWpOVzdlamYrd0F6SjQ1SFJ0LzNlQzZPR3JlcWJneWM4YTBrc3JDVUlJUVFsSFloNklRM3NDeUxIdUtKTWxJMTNMYW04R1FDWTFXVitQYjBlamNZREFZN2pza1BYMDZHWk8rbUFDejJZemk0bUowZjQwUE0zdTgwUlA5M3U5ZnBlODRldVF3RWhQbVFhOVBSMmhvR0VaOThpa2FQZnVzN1YwVXk1WXRRYWJCQVArQUFNVEZEVWFyRi80SEFCZzI5Q1BjRWhoVFIzNDhIRElaaGVEZ0VDUXVXQWlXWmRHMmJUdDBlK1VWS0JRSytQbjdvM2wwTkM1ZHZBaUFyMWg2ZW5taGQ1OCtvR2thd1NFaGFCM1RCdi8rVzNORis3dlpwa3FsUXV2V01aREhUOERFTHlhZ1UrY3VqeDB6QzhNd09IcjBDTFlrL1k0aFE0Y2pPQ1FFQUQ4a1AvZTdiNUh5enhtUUpJWFlnUjhpSm9ZblFzM016TVMwcVZPUW5aMEZuYzROWXo0Ymk5cTFReXZkRGtFUWlJcUtnbytQRDFpV3hmbno1NUdXbGxibC9Weng0M0w4c1gzYk9XZGhLQUNXNHppMkxMOUdjQ0FJdmtHOW9FQXFIZ0FBWjdGWWtoVUtSUzhYbE5tYmxiRStrQ3FhUnFPRnNTRHZ2cituYWRNb2JFcmFpaDEvYk1mS0ZUOWk5ZHFmNytyelY2OWN3ZWNUNGpIcHF5bG8zandhZS9mc3hxaVJ3L0hUcXJYdzgvZkh6WnMzTUdYeWw1ZzdiejRhTkd5SVRiOXR4UGp4NDdCNXkzYW8xV29rSkM2UXdyYzVjK2NoTXJLTU9JWWtTZlR1MDdjc0ozUDlHZzRmT29TUGh2QzBVVDQrUHRMblJXL3FkSEl5WHUvZW84YlcvVjYyR2QyaUpjd1dDeTVkdklpb1pzMGV5Zk9XWlZtcDljajIzeDhQSDRwYXRXcmh3b1h6WUd3cXg5dTNiVVZwYVNsVy9MUUdPVGs1R1BSaExCbzNiZ0kzTnplSkVmZVZWMS9EaVJQSE1XUGFWTXovL29kS3QxK25UaDFRRklXZE8zZENvVkRnNVpkZlJtWm1KaXdXaTlOOXRQMDdKZVVmN04rM0Y3Tm1mM3ZsaFZiUmptR29iWTROSW9BUkFqaHJ0VnErM1VOTXdoVVVGSnh5d1ZoNXE2NUNRWlcyWlRRKzlOKzdaVXNTMnI3VURxMWJ4MENoVUtCemw2NW8wTEFoZGdwODk5N2VQbGkyZkNXZWFkUUlKRW5pMWRkZWg4VnN4cTFiLzFWNUcrZk9ua1hIOXUzUXIyOXZOR2pZRUMrMmZjbnAreForUHg4cXRScGR1NzN5d0g1L1ZiWkpFQVM4UEwxZ0xESStrdWZzOGVQSE1IN2NaN0JZTE1qSnljSEEyUDdJeWVFRjZiNmRNeGZqNGllVXUxbWZPWE1hYmRxOEtOeUFDTWpsTkM1ZHVpaTk5dUtMUEtXOUxTUHVuVzRZb29mR2NmeEVnS2VucDkxN2xpNVpKRkdEcDZUOGc0K0g4emU0SzVjdm9XbFVGRzd4cnIrdHQ4WTRDVWZCY1p3RWNISTViZGVneTczMTFsdW53SGYydXF3U08zUG1ORHAxZUJsNWVibVNoOU92Nzd0UFZFNHhNTkMrSzc5MjdURG85WHorVDZ2VjR1VEpFNGo3TUJhOTMrbUY5OS9ySTkxdHEycU5ubjBXTy8vY2k1L1hiMFI2ZXJxZEVJaG9LMWY4aUwvL1BvcXBVNmRYMnlqY25heXEyK1E0RGptNU9kQStvajJFelp0SHc4dmJHMTlPK2dLZmpQb1lQZDc0UDRsQjVrNk11R2ZQcHVDek1hTkJLMmprNStkTHI0bU11SWtKY3lWRzNNcU1wbWt3REFOdmIyL0V4TVNBWlZrN3dra0FlT2ZkUHRpN2R3OFM1bjJIeVY5T3d0Qmh2REJOM2ZBSW5EeHgzRGgweUVjWkRpR29IYkFKWUZaTzFJVVVrc2NjQUhiLy92MHN4M0ZIWGRCMVp5c3BLY0dhMWF1ZnlOL203KzhQdlVNUjQvYnRWSWtiLzhCZis3RjYxVS80L1BOSldMMzI1d3BEWFlJZ3lvR2RxYlFVbTM3YkNGTXBUOW9jR0JpSTl1MDc0TXlaMDNidjI3RCtGK3phdVFOenZrdDRZSDFaZDdQTjQ4ZVBnWmJMVWE5Ky9ZZHlmRHAyN0NnOUhGbWN4YldQaXh1TVV5ZFBRRUVycXV6eGJ0NmNoT1hMbG1MYTlGa0lkY2loVmNTSWU2ZHd0R0hEaGpoMDZKQlVsYmMxclZhTFFZTSt3dnBmZmthN2wxOUcvZnI4V0ZtVEprM1J2a09ua3daRFJtV2d4cGJOaVlyQktLL3pRTUtlTjV5MVdxMHVZS3ZpQWR1N1o3ZmszdHZhdnIxNzhPSEFEOUN2Nzd1WU9XT2FsRk5JUzB2RG9BOEhvUGM3dlRCcjVuUXBxZjlROG9aV3EwU3F5YkVzckZhckJFTGRYbmtWKy9mdnhiRmpmOE5xdFdMUG50MDRkellGSFR0MUFzQUxqQkFFUUZJVTh2UHpwRkNDWSszSlRBT0RnbkQweUJGWUxCWmtHZ3o4WFZ5aHdFOHJWMkRkdWpXd1dDekl5OHZGZ1FOL29YSGp4bVdoOE9Za2JQcHRJNzZibC9qQWVPcXF1azJUeVlTL2p4N0I5R2xmSTI3UVJ3K2xjSkNSa1lHZE8zZEtEMmRNTWthakVaOStPZ3A5K3ZaRFFFQUFaa3lmV2ltN3N4aGllbmg0WU5ic2IrSGw1UVdUeVFSM0FlQkZSdHhodzBkQUxwZExqTGlWbWRsc2hzbGt3c0dEQjJFeW1VQlJWRGx0ajZ0WHIyTDZ0Sy94MWVTdmNmVElZV3pkdWtWNjdkVlhYenZySkF4bGJITnNvbU5HRUlTVXEzTnpkNGRNS0k5eW9sdFhXRmg0ekVWNmVHZFRxelhvMktrTFZxOWFpUzVkeWdEcSt2VnIyTEJoUFJJU0ZrQ2hWR0xtakduWXRuVUxYdS9lQTNQbmZJUDJIVHFpNTV0djRkamZSM0hvNElHSHN1K09EYm96cGsvRmpPbFQwYUZqSjN6K3hTUkVSdGJEeEM4bjQvc0ZpZENucDZOMmFDaG16djVXOHRpNmRPMkdzMmRURU52L1BWQ1VESzkzNzRISXlIckl5YlVIK1ZHalJtUDJySmxZdm13SmF0ZXVqU1hMVm9DbWFjeVlPUnVKQ1hQeDg3cTFrTXZsYVB0U08vUjduNmRmWnhnR3MyYnlZZUE3dmV5NTkxZXVXb09BZ09wdllxN3FOb2NOK1FnRXdSTXNmako2ekFQdFk3dGJ1M3IxQ3RxMmJZZDNlL2VCMVdyRjNPL21JQ2NucDF4UG9hMDFiUnFGYytmT2dpUko1T1hsNHVyVnE2Z25GSDRxWXNTdHpESXpNKzNDWHc4UGozTENMU2RQSE1mWWNlUHhmUFBtZUs1eEV5eGJ1aGhkdTNZRFFSQzRkdjNhdFlwQURRNVRCeVJKUVNhallEWURGRW1WVFI2SUh0dEhIMzEwZE4yNmRma0EzRjN3VmJtOThYODkwYTl2YjRrMUZBRCsvdnNvVW0vOWgwRnhBNlc3bGxab0ZVbEorUWNUQlVXZzhJaWE3NnJwMUxrTE9uWHVVdTc1eU1oNitPdGc1VHFtclZ2SFZIamhLaFFLVFBoOG90MXpBeitNSy9lK0ZpMWI0WmNORzhzOUh4RVppZS9tSlRyOWJvcWlzUC9BNFFkNkhLdXl6VHV0MS8yYVRsZTk3VVJObWpSRmt5WTg1YlpNSnNNbkRreTV6cXhMMTI2NGRPa1MrdmZqcTliRFBoNGhoZVFWTWVKV1pqZHUzSUNIaHdmYXQyOFBBRGg5K25TNWdzTmJ2ZDZXL3UzdDdZMVB4NHlWVW41eEEyTlRuWUlhUWJEZ09KWVRqQ1JKamlRSmppQklhTFZhTGpjM2gvZlliSE9pdi96eWkzWE5talVIU0pKOHhRVmRGUnRCRUZDcFZIaWpaMCtzV2xVbWptRXhXOUQycFhhUzVKbGp3cmttRzJKZDl2Z2FSVkVvS2pJKzBPRjh4OXhvWlFEbzQrTlRaWVVzMi9NOU9UbjVudmJOWXJIOHJkZnJiY05RcXdodUJBOXVuRFJsUUpJZ0NCSWtTWUJXS09EdTdzRVhEeHhtcmxpTHhYTFFkYXJkR2RnQW9FZjNOM0E3OVpiMGZIU0xGdGl6ZTdkRURiNTc5NTlJU2ZsSGN1ZTNiOXZLaDROQ0dmMStUYVZTdXc3R1hhN053MXl6aXJidDUrZUhZbU5ocGFtUHFxWklIbmFLcGpyZWw1dWIrMDhsWWFoREtDcU1VcEVrU0lJRVNaSlNWUlJDSW80RndHVmtaTGlBcllxbVVDclJwMjladnFwQmc0WVlOdnhqakIwekdtLzM2b2svZCs1QWNIQXdBR0Q0aUZIWXVlTVA5SDZuRjdadDJ3cXlHbVlmeFR1OXkreXR5RmhZNFd3cCtaRFdyTWhZQ0txQ0ZwTEF3RUJ3SEl2TWpIU24rMWFuYnNRZHdVQ3QxcUJPM1lpSHV1N1Z0WituVHA2NDZnVFV4RWVabUF0QjhJVXNraWdETlpJRW9WS3BDS3ZWU3JBc1MzSWNSM0VjSndlZ1lGbDJINEJuWFpjSWNQTFVLZmdIM0wvdTU0VUw1MUdyVmpEYzNOeXdaODl1Yk4rMkZiTm1mMnYzbmd6OWJUeC9GNTNzTjI3Y1JIYU9pMEhYMFRMMGFmRHg4VVpvN2ZKc3RRK0xkWmhuOWZWR21CTUdYZEVNQmdQMGVqMnNWaXNLSDJCaitLTmtITWVkYjlldTNTVHdJaTIyNGkxRkFJb0pnaEEwRGdpR0lBaVdKRW1Pb2lqUU5NM1JOQTJGUWdFWkg1OUtlUjhwSExWYXJYdGtNcGtMMkFESXFpbi9VVnBTaWpHalIvSEs3MW90UGhzN3J0d2RYUzZYMzlWM2hvYldSbWFtQVJuNk5HaDFiaTdOQTJNaGpNWkNNRmFyVTFBRGdMRFFVQmdNRDI3TnhIMWlHYVpTVUJORFVqOC92NmY2R0JZV0Z2NE5KN2sxQUl3WVZZcXRIaFJGUVM2WGc2WnBLSlZLS0pWS3FGUXFFRnF0bHJCWUxBVERNQVRMc2hUSGNSUUFPaXNyNjJVdkw2K05MbGdEMHRQVGthN1BFQmc0YXM0TUdla0lEUEMvNnlGNGp1TncvY1pONU9Sa2c3R3lLQzE5T3NrblZTbzFTSXFDajdjUFFrTkQ3bGlvdVhuelAyUm1aWUd4TWpXMlppcVZHcFJNZGtkUHpXVmxkdUxFaVUram82T3ZBaWhHbWNhQmtTQ0lJc0dMTXd2NkJneEZVWnhjTHVjVUNnV1VTaVduVkNxaFZxdEJ1TG01RVdheldRUTIyM0JVeWJKc01vQmFycVVHVHAxS0JrRVEwR2gxVUZmekhiNjR5QWhqWVFFQXJscjUyRnptc3Njd0RFMGpTWEtrVFJocUMyd2xBRW9KZ3JEUkVLVTRtcVlsWUZPcFZGQ3IxWHdvU3BJa3h6Q01iU2pLQVdBWWh0bEJVZFFIcnVVR21qV0xRbnA2T2d5R1RCUVc1Rlhic0xwT3A0Tk1Ka05RVUNBQ0FnSmNDKzJ5cDlwS1NrcitnbjAxMUM0VWRjQW9vWWVOeHpDU0pFRlJGQ2lLS3N1eGlXMGZ3bEFwQzRBdExDejgwOFBEd3dWc2dnVUdCdFlJZmJmTFhPWXkzcTVjdVhMR0FkU3NBS3dFUWRpMWVoQU9mV3dpb0luL0pzWHlxRGhuWmRQVHhucDVlZjBKNExacnVWM21NcGM5aURDMFNaTW0xd1h3c2pvOEdGdFFBd0JiN0xJRk40cWlJR05abHVNNHJveHQwc1pqQThCZXUzWnRPMFZSQTF6TDdqS1h1YXlHdzlCOWpwNmFBNmlKekxtY0dGMEtQRzhjd3pCZ0dBWldxeFVXaXdVeWhVSWhrclJKMC84QzJMRUFHSGQzOSszZTN0NHVZSE9aeTF4V28zYjgrUEhrU3NKUWlkRkQ5TkJrTWhua2NqbUV3Z0hFd29GV3F3VnBHNXZhY0xOSjRhaXZyKzlCdUZUaVhlWXlsOVZzR0hxeFJZc1cvem1BbWdVVk1IbzQ1dGFrRUZRbTR4ODJGUVdDSkVtT1pWbENpR0ZGc1FUR2JEWnZwbW02b1d2NVhlYXlHcjI0b2RmcmtaRmhBTU13TUJxZm5zbUR3c0xDZmJCdnlwVWVITWVKamJraXdTUllsdVVzRmd0c2RBL0FjWndVanNwc1BUYkJhK09JTW9VWEZnQ1RscGEyTFN3c2JJenIxSE9aeTJvTzFKS1RrOEdCa0tZaC9KK2kzNzl6eHg5bm5IaHJWdkRUQm5iRWtpUkpjcFJNQmxwT1E2R2dvVkFxb1ZLcW9GS3JvRkZyb05QcHlrSlJXM0J6REVmcjFxMTdubVhablUvYVlpWW1Ka0twVkQ3UWJWcXRWb3dZTVFKK2ZuNXdkM2RIWEZ3Y2lvdUxYVmYyVTI1NnZSNGNDUGdIQkQxMVkzRldxM1Z2N0Fmdlo5c0FtOFhCYXlzZmhvb0Q3N1poS0NXRFRDNkhYQzRIS1pQSlJGRGpiRHcyem9idGd3WEFGQmNYSjdsT3YvdTNjZVBHSVNrcENldlhyMGRTVWhKMjc5Nk5ZY09HdVJibUtUZURJUk5hbmR0VCtkdlQwOU1PT1FsQkxhaTRmMDFveGlVNWloU0FUY2JuMStReUdlUTBYUmFLT2hZUkNJS3dhLzFJU0VqWVBHN2N1TThBaExoT3czdXpvcUlpeko4L0g2dFdyVUxidHJ5VTJhSkZpOUN4WTBmTW1ERkRVbXAzMmRObkRNUGNrNmQyNGZ3NUxGNzBBNzc5Ymw2Tjd0K0ZDK2V4ZGN0bU5HblNGQjA2ZHBLZS8rMjNYN0ZwNDY4QVFhQnQyM2I0SUpadm9LaE1ZUG5NbWROSW1Qc2RySXdWWWFGaHFkZXVYNy9nNEsxSllhaUlQNDROdVNSRmdpUWR2RFdoU2tyVGRKbkhaaHVLaXVHb2pkZkdqQjgvdnNSaXNmejZ0SjF3YTlldVJaTW1UYUJTcVZDM2JsM01tMmQvQXUzWnN3Zk5taldEU3FWQ2RIUTBacytlYlFkUVBYdjJSUFBtelFFQXljbkpLQ2twa1VBTkFOcTA0Wlcyanh3NTRycTZuMklyTEN5NHA4L1ZiOUFRRTcvOHFrYjNiY0g4UkN4ZHNoalhybDVGVVZHUjlQeC8vOTNFeGcwYjhQMFBTN0IwMlFxY09aT000OGVQQ1ovaEJaWlhyRnlOOS90L2dCblRwa3FwbUdsZlQ4YUVMeWJpeHhXcjRPUHJ0MlB2bnQwV1o5NGFRTmhYUkVWd0kwbFF0dU5UQXFqSjVITElSZG9pc1R3cXZJbWpLSXBnR0lZalNSSU13MGg1TmdEV1c3ZHViYXBidCs2SXArVmsrK21ubnhBYkc0dHZ2dmtHblR0M3hsOS8vWVhodzRkRHJWWmp3SUFCdUhyMUtycDE2NGFoUTRkaTdkcTEwdXUyeWtVOWUvWkViaTZ2UDNyNzltM1FORzBucUNHWHkrSHQ3WTNVMUZUWDFlMnljcGFkblkycFgwOUdWcVlCQkVsaThPQWhhTm5xQmFTbXBtTFVpT0d3V016dzhQREU4aFZsOVBUalB2c1VhV244d0ZCZVhoN1VHZzNXcmxzUGdGZUZTcGc3Qi9rRitmRHk5TUtZc2VNa2tSNEFXUC9MejlpNGNZUDBmZ0FZTVBCRDBEU04yYk5tMk8zYlAyZk80UG5temFGV3EyRzFXdUhwNFlrenAwOGpPcm9GenB3NWpaRWpQd0ZnTDdCc3lNaUFVcVZDV0ZnZDBiTTdWWUczWmlVSU1iOUdjQURCRVFCSGtDUkhrU1JJa3VLa1NGTU1Rd1Z2VGFGUWxnR2JUYTdOTmh5MW14Mk5pSWk0WUxWYU41SWsrY2JUY0ZKOTg4MDMrT0NERDZRY1dHUmtKRzdjdUlISmt5ZGp3SUFCV0xod0lSbzBhSUJaczJieGQ4LzY5WkdTa29JMWE5WkkzL0gyMjJWaUZjWEZ4VTZMRlFxRm9wd3NtY3RjQmdBL3IxdUR4bzBibzkvN0grRGF0V3RZTUQ4QkxWdTlnT0RnWVB5eVlTTXVYNzZFcVZNbTIzMW0yZ3orZk16UHowUGN3RmhKZjhOc05tUHFsSzh3WmVwMEJBWUdZc2NmMi9IOWd2bVk5UGpPN3JRQUFDQUFTVVJCVkdYWjU1czBiVnFPZWZoT0FzdVptWm1ZOXZWa01Dd0RuWkFudEJWWS92UFBuWkxBY2tGQkFSUUtCY3htTStaKzkrMldaVXNYWnpsNGFyYmdKb1NoNFBpSFdEU3dTWi9KeXJ3MVdtaldWYW1VSU9WeU9SeThOamdPeGd1OUlnd0FKaTh2NzZrSlI4K2ZQNDhYWG5qQjdybVltQmo4OTk5L01CcU5PSDM2ZERteDJ0YXRXMWY0ZlNxVnFweEtEOEJyVlQ0TWZVcVhQZm9XM2FJbGR2KzVDeXQrWEE1VGFXbVZCVlZZbHNXWGt5YWkyeXV2b1VXTGxnQjRhY2pVMUZ1SUh6c0cvZnYxeFpvMXEyREl5TEQ3WEwxNjlmSEcvL1c4aTJ2a0hDYU1INHVCY1lQUXJ0My9zd2ZZQ2dTVzgvUHpNV3JreC9Cdzl6amt4RnV6TFJwSWJCNjJ1VFdLc2dsRFpSUmtNcm1OdDZhQVNxV0dUQVEyc1d0WERFY3BpdUlFSFVIYjJWSEd4OGRuRDhNd2h3aUNhUDJrbjFRcWxjcnBDU1ArWHlhVGxWTTZyMHlVTmpnNEdLV2xwY2pMeTRPSGh3Y0F3R0t4SURzN0c3VnF1V2p2WE9ZRTJLSmJJSEgrUWh3N2Znd3JWeXdIVGRQNGN2TFhkL3pjMGlXTG9GUXEwYWZ2ZTlKekZvc0ZBUUVCZG1Ici9aaTd1enRLUzBzeCs1dnY0T2JtaGpOblRzTmRPSzlGZ2VXT25UcEwzcUpXcTRXYm14c0s4dk14ZWNxMG95Ky8xT1o2SmQ2YTJMdkdsblZwQ0dFb2oxR1NReWFYeVVETDVhQVZDaWlWS3FnMWFwQTBUVU11OUg1VUVKTGFGUkVBV0l1S2luNStHazZxaGcwYmxrdnFIejU4R0lHQmdYQnpjOE56enoySDQ4ZVAyNzN1K0xldFJVVkZRYVZTNGNDQk1xSGtnd2NQZ2lSSnRHclZ5blVWdTZ5Y1RaczZCY2VPSDBQNzloMHdMbjRDamg0OVV1NW02bWdIRHg3QS9uMzdFRC8rY3pzVzRZaUlDQlFVRk9Ddi9mdWtmTnZtcE4vdFBudjU4aVg4OWx2VmdyTG5HamVHMld5R1FxRUF3ekE0Y3ZnUW1qVGx0VXdyRWxnT0NBeUV1NGNIOG5KemQxZmtyUUdFSFpzSFFOaDRiR1Y1TmNyT1cxTkFxVkJDclZaQnE5RkNKZ0piUlVVRW03WVBhUktoZmZ2MnZ4NDVjdVJEZ2lBZWUwMEVsbVh4eHg5L2xIdStiZHUyaUkrUFI4K2VQZkhzczgraWMrZk9PSGp3SU9iTW1ZT0pFM214NEtGRGgyTGV2SGtZTzNZc1B2amdBeHc5ZWhUZmYvKzlYVmk1YnQwNjVPYm1ZdkRnd2RCb05JaU5qY1hRb1VPaDArbEEwelRpNHVMUXYzOS9TVEhiWlM2enRUNTkzc1BzMlRPd2JzMXFzQ3lMVVo5OENwSWs3WW9IK2ZuNWVLdm5HMmoyL1BNWU8yNDhFdWQ5aDlMU1Vnd1ovS0gwUFlrTGZvQk9wOE8wR2JQdzNiZmY0SWVGMzBPdFZtT1VnNDVvOHFsVDJMaHhBM3IwK0w4NzdsdG9hQmg2OVBnL0RQcHdBRGh3YU5PbXJTUWVYcEhBc2t3bXc3ajRDZWRmZTZYcjJRcThOUXRCaUtBbUZBMEk4TjRhUllJaUtVNG1WVUxsVXQ4YXJhQ2hWQ21oRmlZUGlKNDlleUkvUHgrRmhZVW9LaXBDY1hFeFNrcEtZREtaQ0pQSkJCczlCSkxqT0JrQU9RQmxVVkhSQUpWSzlmWGpmTklrSmlaVzJCeDcvZnAxaElXRllkbXlaWmd4WXdadTNMaUJzTEF3REI4K0hFT0dESkhldDJQSERvd2FOUXBYcmx4QlZGUVVXclpzaVEwYk5raTZvajE3OXNTTkd6ZHc0c1FKS1o4MllzUUlyRjI3RmlSSm9tZlBucGczYjk0RG40QncyYU5sKy9mdlIzaGtnNmZpdHhvTWhtK2ZqMnA4QkR6OXQ2aHJZQVJQQlY1Q0VFUXBEM0NFbFZlaG9qaVpUQ1lxVUhHMlRCNGFyUlk2blE2ZW5wN3c4ZkZGVUZBUXdzTENRUFR1M1J0NWVYa29LQ2hBVVZFUmlvcUtVRkpTZ3RMU1VwaE1Kc0pzTnNOcXRaSXN5eEkyZWdqMDRzV0x2V0pqWS84QUVQNjBub3dwS1Nrb0xpNUd5NVl0cGVjbVRacUViZHUyNGRpeFl3L1U2N3h4OHovazVPU0FZUmlVbGp5ZEkxcEtsUW9VUmNITDB4dGhZYlVsOGxSbnhuR2NzR2Jac0ZwcmJzMlVLaFZrTWhtOHZid1JGaGI2MUFNYngzSFhQaHN6ZXVMYU5hdUxBSlNnVE5mQUNGNWFyd1NBV1FBMlJwRFdZNFZ3azFNb0ZmeGNxRW9GdFVZRG5WWUxOM2QzZUhsNXc5L2ZEOEhCSVFpUGlJQk1wVktocEtRRU5FM0RiRFpETHBmRFlyRTRWa2h0UTFJR0FETnc0TUNDM3IxNy82UlVLaWM5amdzOGJOZ3dKQ1ltM3M4QndwVXJWOUMzYjErc1hyMGFUWnMyUlVwS0N1YlBuNC80ZU43dHZwTktrcVBwOVhyNCs5L2Q2TFBKWk1hWk0yZEF5V1RRdWJtNzVQZUtqTWpOeTBYV3lVdzBiZElVTkMxM2V1eE9uRGdKa3FLZzFkWDhtaFVWR1pHZGs0UE1yRXhFQzgzYUZkbnRKN3lmTVRjM2QvUGFOYXROTmlHb1dRUXlBQllPWUFnSGJRUHhQeHpIZ1dNNXNDd0xsbVY1SmcrQnpjTnF0Y0Jpc2NCaU5zTnNNdlBBcGxRcVVWSlNZcGRyazhsa3NGcXRvQ2dLRE1PQTR6aUpOcHpqT0FZQXMzbno1cC9mZlBQTjl3RFVmZHdXT0NFaEFRa0pDZmYxSFQxNjlFQjhmRHhHakJpQnRMUTBCQWNINDlOUFA4WEhIMzhzWFVBMWJlbjZkRkF5bVVzd1dUQ05SZ3VOUm9zTWZSclMwdE1RRmxyZVM3cCs0eVpJaW5wZ2EyYTdUemR2L29mUVNtVDRhZ1VIUDhuZTJ2V2xTNWVjZEFBMW05eGFXWXRIR2FFa0JibE0xQTNscTU2aXQ2YlZhdUh1N2c1UFR5LzQrZmtoT0RnWWRjUEQwYWpSc3lBMUdnMlVTaVVVQ2dWb21vWnRNVUVvSW9DaUtNNm1uMDFzL2JEMjZ0VXJ0NlNrWk9YVGZDSEZ4OGZqK3ZYck1KbE11SHIxS3NhTUdWTnBDRlRkbHAyVi9kUU9UMWRtV3AwYnNyS3luYjZXazVQelVOWk1xM05EVm5iV1UzdE1zck96a3hZdldsZ0srNEtCQ0c0U2s0ZHRpd2NmaXBLZ1pCUkhVUTdOdU1LVWdWcXRra0RPMjhzYk1wa01wRmFyaFZxdGhsS3B4TDIwZnF4YnQyNHR4M0V1aHQySGNnZTg5K0hwcDhGelkxbkc2V3NQYTgwMEdpMFlLL09VbnF2Y3hXOW16enJoQk5URWZGbzV3UlplNloxMG1BZmxSNmZrQXFpcFZFcG9OQnE0dWJuQnc5TVR2bjYrQUFDWlRxZVRLcUpDd2NBdTF5YVR5VGlyMVVvd0RPTzBZVGMyTmpiL3JiZmVXcUhSYUtZLzRRY0dlcjBlQm9NQlZvYUJzYkI2MkUyMVdoMWtjaG44Zkgzdld0cVBJSUNTRWhlWFcwVldVZ0hQM2NNc3J0enI4U0tTTTBITVR3YXU1TjNiaGlNOHdBMkpBaGZsV3kyL295QS9IemV1WDBWUmtiRlNJQStyRXc0M2QzZGtaR1FrcmZwcFJZVzVOVGhweUNWSmt1UDcxbVNjVEVieG9DYVRnNmJMZEE1NGpRTWQ3NjE1KzBDaDRMc0xaQjRlSGlnb0tJRFJhSlNxb1dheldRSTNxOVVLbVV3R2htSEVwSjNVMHliazJxeHZ2ZlhXbWkxYnRyeEJFRVNMSnhYVWtwT1RBWUtFUnF2ajJVMnJVZHU0cU1pSWRIMEcwdFBUcTEwSmZ0Zk9IVmkrYkNrTWhnd0VCUVZoNWFxMXVIejVFbUw3OTVQZU16WitBcnAyN2VaQ3drZlpFcE9CcTNuMy92a3JlU0RtSjROYjByRmFkdWY2dFNzb0xpNjY0M2w5NC9wVlBOdTQ2WWwzZXIyWjdBVFVuSHBya0poeWJZZmM1WkRMNUpEVGZET3VRcUdBVXFXQ1JzTlBNM2g2OFhrMjBXU2VucDdJeTh0RFlXR2hiUThiYUpybXF3d09YcHNONjRlazFyeDkrM1p6UVVIQmorN3U3azhrc09uMWVvQWc0ZWRmTTJMSlluTFpvRTlEZW5wNnRZa3lwNldsWWNiMHFmaHk4dGVJam02QmdnS2VHaWNpSWhLN2R1OERBQXlNZmIvRzFtM1owaVY0dlhzUE96WVRjYi9tenZrR0tTbi9nS1pwdE8vUUNZTS9HaUlOWDZlbXBpSmg3aHlrbkUyQlFxRkF4NDZkOEdIYzRITEQyZFZwZDlybWl6RXZRQzZYZ3lCSWhJV0ZvWC9zQUxSdUhmUEF6a0hpZmtETkJ0eXF5KzRFYXJiZzl0L05tMXV2WExsc3ZZTzN4cFRQclZHUVVSUW5qVTdKNVR3ZE9FMlhlV3M2TGR3OVBPRHQ3V00zQWtuNitQakF3OE1ET3AwT2FyVWFLcFVLQ29WQ3lyVTV5N2M1eTdWNWVIaHNabGwyMjVNSWJBWkRKalJhWGMzbllIUnVNQmdNMWZaOUYvKzlBQjhmSDdSdUhRT2FwaVdlT0lJZ29GRHdkNzI3YlVtNUcvdHgrVkxrNUpSUDRFK2FPQUcxZ29QeDIrOWJzR2p4TWh3OWNoaEpTWnNBOEQxNVk4ZU1ScjM2RGJEcDl5MUlTRmlBL2Z2MjRyZU5OY2U5VU5WdEppNVlpTTFidDZOLzdBRE1uamtkRzMvZDRQSWs3MkJXcTNWWG01Z1hMamp4MUNyMDFrZzdiNjBNMU9UQ1BLaENxWVJLeGN2c3VidTV3OHZUQy80MjNob0FrSDUrZnZEeThvS2JteHUwV2kzRTlnK3hTbW9EYkp3TmhiamRpQlg0YVh5THdXRDQ4WWs4T0l6MWdTU2JOUm90ckZicmZYL1A2ZFBKNlA1YU44eWFPUjE2dlI3ZFgrdUc3cTkxdzRvZmwxZjVPNDRlT1l3Kzc3Nk45aSszUld6L2ZqaDM5cXpkNi92MzdVVy85M3FqYStjTzZQOStYeHc5Y2xoNmJkalFqOUQ5TlQ2MEhmbnhjSFIvclJ1R2ZqUklBcEcyYmR2aHZYN3ZRNkZRd00vZkg4MmpvM0hwNGtVQWZNWFMwOHNMdmZ2MEFVM1RDQTRKUWV1WU52ajMzNXFyVDkzTk5sVXFGVnEzanNHNCtBbFl2R2loSGZIaWsyQkZSVVZJK24wVHhvNFpYVDBoNi9Yck8yRS9FMm9IYkJ6SFdUbU9ZemlPWTFtVzVRaEE4dFpLU29xNVRJTUJxYmR1b2FDZ29JeTlRNm1DUnFPR1FxSEFndm1KT0hqd0w2alVhbnRnQ3dvS2dvK1BEenc5UGFIVDZlRFkvbEZKbGJTYzF4WVlHSGpZWXJFc2VkS0FyYm9LQlZYYWx0RjQzOS9SdEdrVU5pVnR4Y2NqUnFGV3JXQnNTdHFLVFVsYjBlLzkvbFg2L05VclYvRDVoSGdNSGpJVVc3ZnZ4SnR2OWNLb2tjTWxpcHViTjI5Z3l1UXY4ZGxuOGRpeWJRZGVmZlYxakI4L1RoS2xTVWhjZ0UxSld3RUFjK2JPdzZha3JVaGNzSkEvNFVnU3ZmdjBoWWVIcDNEaVg4UGhRNGZRc2lWUEF1RGo0NE9FeEFWUUtsVVNFSjVPVGtianhrMXFiTTN2Wlp2UkxWckNiTEZJZ1B3NG1lTVF2ZmgzVmxZV0JzYjJ4NVVybDZ2bFJsSmFXcnBtL1BqeHR4eEF6ZVRvcmZGalV6eWVNQXdEa3FUQXNnd3NGZ3MvU1JBZWpzeXNUTEFjQjZWQ0NaWFEzbkhzMkZFb2xVcTR1Ym1YMnphcFVxa1FFQkFBYjI5dnVMdTd3N2I5b3pLdnpWbGZHMEVRbG5QbnpxMEVjTnZsaEQrK3RtVkxFdHErMUE2dFc4ZEFvVkNnYzVldWFOQ3dJWGJ1M0FFQThQYjJ3YkxsSy9GTW8wWWdTUkt2dnZZNkxHWXpidDM2cjhyYk9IZjJMRHEyYjRkK2ZYdWpRY09HZUxIdFMwN2Z0L0Q3K1ZDcDFlamE3WlVIOXZ1cnNrMkNJT0RsNlFWamtmSFJPWEFFb1AwZ0NtNmovd2RDS1lQcXRmcHdHOWNHaEp2QzdtMmpSNDNBNmVSVEFIakczTzhYekFjQWVIaDQ0S2ZWYTlIdi9RK3FZMjl1SHp0MjdLOEtQRFhiM2pVVzRITnJGRVZ4SE1keEZFV0JaVmxPb1ZBSXcrMHFlSHQ1d1dnc2hFb29HT1RsNWNGc011SEZGMStFWEY1K3VvUUVnS0NnSVBqNitzTFQweE51Ym03UWFEUlFxOVZTSHNZWkEwaEZ1YmFvcUtpcnhjWEZQenpwRjMvWHpoMVFXUGhrQ3RycTlYb0VCdHAzNWRldUhRYTlQaDBBb05WcWNmTGtDY1I5R0l2ZTcvVEMrKy8xY2VvSlZHYU5ubjBXTy8vY2k1L1hiMFI2ZWpxV0xTM3Y2SzljOFNQKy92c29wazZkRHBsTTlrQitlMVczeVhFY2NuSnpvSDJFZWdpVkhTTkFxT1JnYzByZ3ZmUTFxTjlvaU5JL3I4TDlVM3ZxeENGRGgyUHExMU9RbURBUDI3ZHRSZC8zK0FxNWVHMVhoK1hsNWYyU21KaVk2K0NwbVp6bjFqaXVUTW9Za01rb0tKUkttTTFtVUNTUE5jWEZ4U0FJUW5DNkZEaDg2QkFHRElpRHpzMTVvN1VNNEtsL0F3SUNrSk9UVTJIcmg4VmlFV2F5ckp6QTlzR3hMQXVDSUZpTzR3amJYRnViTm0xV0hqOSt2QjFKa3UxYy9zL2paLzcrL3RDbnA5dmZmbStuSWlxS2IwVTU4TmQrckY3MUUrWjhOdy9CSWJ4bzJZc3hMemoxYWh6QnpsUmFpdTNidDZGTGw2NVFLSlVJREF4RSsvWWRjUERnQWJ2M2JWai9DM2J0M0lHNUNmUGg1dTcrUUg3MzNXenorUEZqb09WeTFLdGYvNEVmSDBYckVMakh2eWo5YmZrM0U3bWY3SVM4bmpkS3RsMkc5WG91ZE1OYkluZmtEcGlQcDBIN2dYMExVWGhFQkRwMjZveVZLNVpqNXF4djRPWjI3MU1ZY3JrYzdkclpYK1k3ZHV3NE1IcjA2T05WOE5ZWUFUOVlxOVhLQ1pFZ0tKbU1VeXFVSUFrQ04yNWNsNFlIZURZUERVNmZUc1pMN1Y1R3ZRWU44Ty9GQ3hVREd3Q0VoSVFnS3l2TGFldUhDR3dpdURFTUl6MkVHVklXQUNIMnRTVW5KNXNOQnNPU2dJQ0FweExZZnQyd25xL3ljUnphdmZ6LzhINy9XQUI4bThOWGs3NUFZV0VobWtaRjRkREJBMUl1NmtHYmJaR0NZMWxZclZacHdxVGJLNjlpeU9BNGRPalVDYzJhUFkrLy90cVBjMmRUOE5uWWNRQjRnUkdDQUVpS1FuNStIclp1MlNKOGovMXNiR0JRRUk0ZU9ZSzZkY09SbDVzTFh6OC8wQW9GZmxxNUF2bjVlWGkzZDE4VUZSbHg0TUJmYU5La0xKKzFaWE1TTnYyMkVYTVQ1ajh3bnJxcWJ0TmtNdUYwOGluTW1ERU5jWU0rZWlpVTdxWkR0MkRvdHJyOE1iMmVDN3FKUCtUUCtjRjZNdytxVit2QmNqa2JjRGd1TzNmOGdYMTc5MkRLMTlQd3pleForSHJhZE5TcmQyOEFiYkZZc0hPbnZaYjZ0V3ZYdGhZVUZEaE9GNGdlV3ptR1hJcWlRRklVd0hGUzM2eGNMa2RBWUNBMEdnMTBXaDMrK2VjTS9QMERRTk1LWEwxeUJZVUZoYmo0N3dYazVHU0RKRW5JNVhMMGV2dWQ4c0FtaHFTNXVibkl6OCtIMFdoRWNYRXhUQ2FUSGJqWmVtME13M0FjeDBGNFNOTUlBQ3lCZ1lFSFRDYlRmSnFtaHp4Tm9KWjg2aFMyYkVuQ3doK1dnS0lvZkRKcUJFSkR3OUR1NWYrSHVYTytRZnNPSGRIenpiZHc3TytqT09UZ3BUd29jMnpRblRGOUttWk1uNG9PSFR2aDh5OG1JVEt5SGlaK09SbmZMMGlFUGowZHRVTkRNWFAydDVLYVVaZXUzWEQyYkFwaSs3OEhpcExoOWU0OUVCbFpEem01T1hiYkdUVnFOR2JQbW9ubHk1YWdkdTNhV0xKc0JXaWF4b3laczVHWU1CYy9yMXNMdVZ5T3RpKzFrL0k2RE1OZzFrdytESHlubHozMy9zcFZheEFRVVAyOWhGWGQ1ckFoSDRFZ2VJTEZUMGFQZWFCOWJGV3hrdTJYNGZiSi8wRDVxSkhWZXlNMGJ6NEQ5ODlpa0Qvam9OMzdVbEpTOE8yY3VmRHo5NGVidXp0T25qaCt6OEJXYmg5S1NuNGNOMjdjRFFHOHpJNEZBMVF3WlFDQXMxZ3MwR2kxbk54R3cwQXVwNUdXbmdhWlRJWTZkZXJDejg4UDAyZk9Sb1A2RGVEajY0dUYzOCtIVnF1ekE3Vnl3T2J2NzQvczdHems1ZVZKd0NhT1dZa2VtNDNYNWhpUzJrMGpFQVJoM3JObnovSk9uVHI5anlDSXFLY0YySTRkTzRvT0hUcEp6WUt2dlBJcWpoMzdHKzFlL245SVNma0hFd1ZGb1BDSXlCcmZsMDZkdTZCVDV5N2xubytNckllL0RsYXVZOXE2ZFV5RkY2NUNvY0NFenlmYVBUZnd3N2h5NzJ2UnNoVisyYkN4M1BNUmtaSDRicDV6eWlpS29yRC93T0VIZXN5cXNzMDdyZGY5bWs1WERYMlNESWVDbVlla1A0M0xUd1BMVDVkNzJ5YzJyTGxObTBhaGFkUHF1VHc1amp2enh4OS9PQllNYkhOclppbTNSaENzUVBuTldhMVdEZ0NVU2lXbjArbWtXZENpb21KY3VuZ1IvdjRCNk5DeEU4L2tJVXdZK1BoV1BocFdManRhcTFhdGNyazIwV056OE5xa2NKUmxXVnZWZUliak9CS0F0VXVYTHZyczdPd2Z2THk4Rmo1TlhwdHR6NnZBWXljbG5HdXlJZFpsajY5UkZJV2lJdU1qUVdqZzdlMTlUeW1TdExTMGpXdlhyalU2QVRXVEhhanhuR3NzUVlBalNaS245cGJ6UFdyaTJKU0NwdUh0NVlYNjllc0x0RVMrOFBEd2dJK1BqOTFrenFEQnpnUENjdnc2N3U3dWNOYmJWa0hqTGlmU0cxWFV0T3Z0N2IzZFlyRXNmbHBPME9iTlcyRFh6cDBvS1NtQnhXTEJ0cTFiMEVMbzBXcmFOQXJidC9FbnpPVkwxZFAvcEZLcFhhaHdsMnZ6TU5lc29tMzcrZm1oMkZoeGxaMEw5N2gvajZvYXZrTTB0ZG8rdDFoYVdycDY1TWlSRjIxQ1VKT0R0MlpYTUNBSWdpT0VabjhacnpqRnllVXlZUmFVbG1aQitTRjNnU1hYMnh2Ky9nR1NkdWxkZVd3QVgwZ1F2VFpicW5CSHI4MjJpQ0I2YlN4ZkJtT0VTaWxKRUFSMTZOQ2haVzNidG4yZUlJaG1UOUtGTStDRGZpQUU3alZmWHo4a0pDN0E4ODJibzFQbkxoajBJVjh3YVBQaVMyalg3bVVBd1BBUm8vRGx4TS94NjRiMUNJK0k0Qk9tVDlDZC9sR3lJbU5oaGEwTDVFTmFzeUpqSWFnS1drZ0NBd09SbnA2T3pJeDBxQVdpQlRzYkdnVXVNZm1lWjBhNWNBOWdhUFZsaE9yVWpaQUc0VG1PTzcxbno1NjlUdkpxdHUwZGprVURmblJLSEp1U3l5Q1hDNTRiTFk1TmxRMjVlM2w2d2MvWHI4b3lsVTVYV1M2WEl6ZzQySzZJWUV0cEpJYWlqdTBmVGdvSlZnQ1dkdTNhcFdabVppNzA4ZkZaOURoZUpGb24rWTl0Zit5cThQMjkzbjZuWERJVEFQTHljakZ6OXJkd2MzUERuajI3VVZKU1VxVnQzU2xzeU03SmNRR2JneG1OaGZEeDlYSDZtbytQTjdLekgveWFHWTJGNVFnQmJLMVpzMll3R0F6UTYvVW9Lc3kzNzVQVUFoaGJHMER0KzlpRGJPQnlkdlZkRjFvTnRGb05idDY4dWZISEgzOHNxQ2dFaFlPeU81K1ZFWlR2T0E0Y3kzSWN5NEpsR1RDTWxYOVlMYkJhekxDWVMyRXhsOEpVV2d4VGFSRnVYcjl5NzhBR0FBRUJBY2pOemJYejJwemwybXc5Tm9kQ2d1aTFXUWlDSUgxOWZYZVdscGJPVlNnVUh6OXVGNG1zbXU3d3BTV2xHRE42RksvOHJ0Vks3Uk8yZDNSblhkU1ZXV2hvYldSbUdwQ2hUNE5XNStiU1BEQVd3bWdzQkdPMUlyUzJjeEFJQ3cyRndmRGcxa3pjSjVaaEVCWmFPVEQ1K2ZuWjBlODg2cGFmbjcva3BaZGV1bFNSdDBZUWhBaHNERUVRak1qY0lhcE8wVFFObFVvbGVHZGxkTjllWGw3dzlTMVRuV3JRb0FFYU5teFk5V3Uyc2hkcjE2NWRZVitibzlmR3NpemhVRWdvVnlWZHRXclYwdjc5K3pjaVNiTDk0M1N4K1BuNUlWMmZjZDhYUUZTelpsaTRxT0pSMnFJaUl3SUQ3azdNaFNBSU5HL2VITmR2M0VST1RqYnljbkpRV3ZwMGtrK3FWR3FRRkFVZmJ4K0Vob1pVK3Q0VzBkRzRlZk0vWkdabDFlaWFxVlJxVURJWnZMMjk3d2hxajV0WnJkWjlFeWRPUE9BQWFxVWlzQW1nWnA5WEU3UU1SQ1YzdVZ6T3llVmx4SkcyQU9maDRRRnZiMjhFQkFTZ2R1MjdXenZpVG9JanQyN2R3dm56NTNIdDJqV2twcWJDWURBZ0p5ZEhBanhITFZJQjlBaVdaUW1XWlNtTzR5andXcVEweDNIS0d6ZHV0QW9ORFowTDRMRlNIemwxS2hrRVFVQ2oxVUZkelhmNDRpSWpqSVVGQUxocUo1cDBtY3RxeU5JUEhUbzBPeVltNXBZQVpDWGdOVUtMWUs4UGFpdWx4OWg2YXdxRmdwUDBRVFc4MExHSGh3ZTh2R3pFV2VyV3hUUFBQSU9Ra0pDN2k3THU5SWFRa0JCSlVOa3gxK2JZK2lIS1luRzgyVTRrV0hubmdpRER3c0tPRnhRVUpPcDB1cW1QMDFGczFpd0s2ZW5wTUJneVVWaVFWeTBzSEFEZnZ5U1R5UkFVRklpQWdBRFg1ZUt5eDhKdTM3NjlLaVltSmxVSU04WFFzOVJKQ0dvVnZEVnAwRjBpalJSQ1VWdWFiMUcvUUF4RmE5V3FkZGVnVmlWZzQvTTRvVTV6YlU1NjJzUkNnbU52bXpodVpTRUlnbkp6Yy92WlpETFZwV2w2d09OME1BTURBNnVOM2RabExudGN6V2cwcmc0T0RqNEYrOVlPeHhEVVloT0NzczVDMElwQWpWZDE5MEZRVUJCQ1EwUHZhUitycEJPbjAra1FFaEppUjI5a3k3Z3JEcWtLL1cxMnZXMkMxeWIxdG9rTHNXdlhyaVVzeSs1eG5TWXVjOWxqbFZmYnYzRGh3ajF3WGdHVlBEWTR6SU1LNUpHY0xhalJBc1czR0k3cWRLSW9DNTlYQ3drSnVlZUpETm5ObXplcmpvSThWWkhUN25ueE9mRjE0U0VtOEZpaEE1OFF3ZTJWVjE1Sk8zRGd3UGNoSVNHaEFNSmRwNHpMWFBab0c4ZHgxMDZjT0pIMDZhZWZGam9KUWN1Qm1pQ0FiQ2VuWjRzZkZlRUlMK1JDZ21WWjNBMCsyUUhiM2JoNnZyNitUaWNSYkFTV1lVTWZUcGhNSmhBRUFVRzZUMm9CSWZoZlJMWnAwK1pFVGs1T2dxZW41K3lxaHNVdWM1bkxIbzZ6ZHUzYXRUVnZ2dmxtcW9PMzVpd0V0ZHEyZG9qaHA4RHZLQlVNdEZxdFhlZ3BWajhqSXlQUnVIRmpxTlgzUGlGeVYyQ2lWcXNSR2hwYWJvYTBndmxSam1WWlFpd2tjQnpIQ2dVRjI2a0Uwc3ZMYTNOeGNYR1FTcVVhNHpwM1hPYXlSOU95czdNWGg0ZUhuN1h4MUVwdEh3UkJtR3hCelRFRUZTUUd5dVhWYk1ITlY5RFdEUTBOdlM5UXUydGdBL2dFZWtWOGJjN0dyTVRHWFFIY09HRXFRY3kza1FESVZxMWFMVGx4NG9TL1hDN3Y1enFGWFBZVWgzclE2L1hJeURDQVlSZ1lqWThHUTNOcGFlblA3Nzc3cm0yL1dya1FsT000Q2RRNGptTUZSbHlPWlZtT1lSZzd2ajh4c2hNZllwVlVvVkJBclZaRExwZmowcVZMRHhiWUFDQThQTnpwcUpXVGFRUk82R2NUUjYzRVdWTGJGaERpbjMvK0lmZnMyYk80ZmZ2MmZoUkZkWEdkNGk1N0drRXRPVGtaSEFocEdzTC9FZGd2aThYeTUwOHJWK3pLeWNteE9BRTEyd2tEZm15S0lGZ0NZUGwwRksvZUxqQjNjRW9sTDhTaTBXajVualYzRDNoNWU4SGZQd0MxZ29NUlhqZGMwdEc0WDd1bmI2QW9DblhyMWtWd2NERDgvZjNoNWVWbFZ5bFZLcFcyK1RkT1pBS3hWYllTM0ZVcitCWVFjK2ZPblZNdlhicTBrT080WTQvekNicHAweVlvbGNxS0V4VldLMGFNR0FFL1B6KzR1N3NqTGk1T1VuZHkyZE5yZXIwZUhBajRCd1E5TW1OeExNdWVQSFR3WU5MRUx5WVVPT1RVU29SSHFSMm9TWFJFSkZlK0NscCt1a0RucG9PSGg2ZEVSVlE3TkxSYVFPMmVnUTNnRlczQ3dzSVFGQlFFUjIxU0p5cFhvcHF6WFF1SUE3aVpubm5tbVpTMHRMUUZITWRkZVZKUDRISGp4aUVwS1FucjE2OUhVbElTZHUvZWpXSERocm11N0tmY0RJWk1hSFZ1ajh6K2NCeDM5ZHk1Yyt2Nzlua253d0hVYkN1Z0pqdFFFM3JXU0ZLYUI0VmNKdWZrdENoMHJJQktaVDlsNE9QakEvK0FBSVNFMUw0djdZVnFBellBQ0E0T1JtaG9LQUlEQXlYK3RrckFEYmI5YlFKL20wUWxManhNd2NIQkIzSnljaElBWkQ1cEoyOVJVUkhtejUrUDJiTm5vMjNidG1qYnRpMFdMVnFFRlN0V0lDc3J5M1YxUDhYR01NdzllV29YenAvRHFCSERxM3Qzc203ZXZMbTZhK2NPMTJFLzJHNEhiQVJCV0RpT3M0aUN4eHpIQ1J4ckZFZVFKSXFLak1qTnpVR213UUFDdk5pMFJxMkcyV1RDZ2IvK3dwWXRtL0hucnAzdzl2YXU5c2IzKy9iNzZ0V3JoOXExYTB2ZzV1SGhZU2ZoWndOdVlrZ3E5c094emtKU0FDWWZINTl0K2ZuNTN3a0xXS1BXcWxVclRKa3lCUysvL0RMVWFqVWlJaUx3eHg5L1lPN2N1UWdPRG9hN3V6c0dEQmdncVMyTkdERUNuVHQzdHZ1Tzd0MjdZOUNnUVU2L3YyZlBubWpldkRrQUlEazVHU1VsSldqYnRxMzBlcHMyYlFBQVI0NGNjVjNkVDdFVkZoYmMwK2ZxTjJpSWlWOStWWjI3VXFyWHB5OXYwN3JWZVpTMWRaVGFoSjY4dDJiWDJrRXlKRW14SE1leDREaklaQlRNSmhOVUtqVVhFbEliL2dFQlNFOVBoMXF0Z1ZxalFVcktQM2psMVZjeGV2UVlSRVJFNHZDaFE5VytudmZkTzBZUUJDSWlJcHdxV2ptcmpvb3RJQUFJQUU2TENSekhrUjRlSHV1TlJxTkdvOUhFMS9SSk5YMzZkR3pldkJreE1URVlOR2dRZXZUb2dlN2R1K1BDaFFzNGYvNDgyclZyaDY1ZHUrS05OOTY0NisvdTJiTW5jbk56QVFDM2I5OEdUZE4ybkZ4eXVSemUzdDVJVFUxMVhkMHVLMmZaMmRtWSt2VmtaR1VhUUpBa0JnOGVncGF0WGtCcWFpcEdqUmdPaThVTUR3OVBMRi94VTFtNjQ3TlBrWmJHYTVibjVlVkJyZEZnN2JyMUFJQ3JWNjhpWWU0YzVCZmt3OHZUQzJQR2pwTkVlZ0JnK2JLbGk3LzRmUHdwQjFBcnRRRTN2bGdBV0lScmxpVUlzQVJKY0FSSGdPTTRUaWFUZ1dWWnp0M0RIUXFGQWdSQlFKK2VEclZLRFlxaW9GYXJVYjlCUXdUVnFvV2lJaU1PSFR6NE1ybkV3QUFBSUFCSlJFRlU2QUVid0k5Y2hZZUhseU9qRk11OFRnYmtiZnZiSUlTazRtU0NDRzZFVnF0ZFdWeGNyRktwVkNOcjh1VHAwYU9IcEkzNHhodHZZTm15WlpnNmRTcDBPaDFhdG15Slo1OTlGdWZPbmJzbllIdjc3YmVsZnhjWEZ6c3RMQ2dVQ3BoTUp0ZFY3TEp5OXZPNk5XamN1REg2dmY4QnJsMjdoZ1h6RTlDeTFRc0lEZzdHTHhzMjR2TGxTNWc2WmJMZFo2Yk5tQVVBeU0vUFE5ekFXSXdjTlJvQVlEYWJNWFhLVjVneWRUb0NBd094NDQvdCtIN0JmRXdTQklieTgvTisrT0x6OFllZGhKNGxkOGlyY1N6RGlGUmxrTXRwVVp3RlJVVkZNQXBzeGtvVkg3MXB0RnI0K3ZwaSs3YXR5TS9QUjE1ZTNxTUpiQUN2Y0dWTElXN2J0R3Zqc2RuMnRVbmd4cGFwNmpJQzBFbmc5dFpiYnkxWnYzNDlyVlFxYTB6R3ozYjZRcUZRU1BsRDBXaWFyaGJnVWFsVU1Kdk41WjQzbVV3UFJaL1NaWSsrUmJkb2lZUzVjd0FRYU5HaUpXWi9NNmRLbjJOWkZsOU9tb2h1cjd5R0ZpMWFBZ0N1WDcrRzFOUmJpQi9MOThLekhBdU5vRjFRV0ZpNDdKMWViKzFIK2FrQyt4RFVSa0pQRkR0bUdJYVR5K1VjNzV5QW8ybWVMRFhUWUlCR28wVjBkQXY4L2ZkUnVMdDdRS1ZVZ21WWnJQaHhPWHIxZWhzTm4za0c0OGVOZlhTQkRRREN3c0xzdEJFY3B4RnNpQ2hoNDYxeEF2aUprd2tRbXYxQUVBU3haY3NXWXRxMGFVdmk0K05sQ29VaXJpWk9IcGtUSHZxSzFLU2NQVyt4V0txMG5lRGdZSlNXbGlJdkx3OGVIaDdTWjdPenM2dk01ZTZ5cHd6WW9sc2djZjVDSER0K0RDdFhMQWROMC9oeTh0ZDMvTnpTSll1Z1ZDclJwKzk3ZHVkcFFFQ0FYZGdLQUVhamNjV0UrSEY3VTFMK2NleFRjd1ExT3paY29kbWVveFVLanBiTFliWllRSkVrYUlVQ0ZFWEIxOWNYZGVyVWhidTdCd2lDUUdCUUlIUmFIUmlyRlJNK240anc4SEJjdlBpdmRDMDhzc0FHQVBYcjF5K25SZW9ZampwNGJTSzlFV3h5Ym95UWd5TUlnaUMrK3VxclBGOWYzeVVEQnc0a0ZRckZ3SWQ1b3RFMFhjNTF2blRwVXBVNG82S2lvcUJTcVhEZ3dBRzgrdXFyQUlDREJ3K0NKRW0wYXRYS2RSVzdySnhObXpvRjBTMWFvbjM3RG1nUjNRSnY5dXdCbG1VcjdmYzZlUEFBOXUvYmg0V0xsdGpkaUNNaUlsQlFVSUMvOXUvRGkyMWZ3dFdyVjNIcTVJbWZ6cDQ5dTJmanhnMGxOcDVhaWNQRFJCQ0VXY2lwMmJIaE1pekx5U2daWkRJNVNrcEtPSGN2YnlpVlN1aDBibEFvK1ArWG1rcjVKdHhhd1FnTERVTkFZQ0FVTk0zdjY0RURhTkswNmFNUGJBUkJvSDc5K2hLd09YcHNETVBZZW15MjRBWmhGQU5DdnMzdU80Y05HNVpOMC9TU2Z2MzY0V0dDVzh1V0xURjc5bXdzVzdZTXpaczN4NkpGaTVDZW5sN2grOWV0VzRmYzNGd01IandZR28wR3NiR3hHRHAwS0hRNkhXaWFSbHhjSFByMzd3OHZMeS9YVmV5eWN0YW56M3VZUFhzRzFxMVpEWlpsTWVxVFQwR1NwRjN4SUQ4L0gyLzFmQVBObm44ZVk4ZU5SK0s4NzFCYVdvb2hneitVdmlkeHdRL1E2WFNZTm1NV3Z2djJHL3l3OEh2UU5QMlRoNmZubnh2Vy8xSUUrMEtCYlFPdXlYRU9WT3BYb3lnUURJT1NrbUtVbHBad2FyVWFubDVlVUtsVXFGZS9QbTdldUlHalJ3OURwOU9oMTl2dklpUTRCUFhxMTBmOCtNOHhlZklrV013V2hJU0VZTXpZK0VjZjJNUmNVcjE2OWV3cXBMYTVOaUd2VnE2WUFQdEtxUzI0RVFSQkVIRnhjWmttazJuUndJRURXYVZTR2Zjd1RyVFhYMzhkSTBlT3hPalJvOEd5TFByMTY0Y0JBd2FndE5SNVo4cUdEUnR3NDhZTkRCNDhHQUF3ZS9ac1dLMVdkTy9lSFNSSm9tZlBucGc3ZDY3ckNuYVpVd3VwWFJ0ejU4MTNtdGI0WmNORzV6ZlRYMzZ0OFBzYU5HaUloWXVXd0dnMHJwZzFjOGFlWlVzWFZ3UnFrcWNtZ2hwSmtneFFSaG9wb3loT3JsU0NwaFVjMzN3cmlMS29OWEJ6ZDBka1pDVDgvUHdRRkZRTFlYWHFvRzU0T0pSS0paNTdyakYrV0xTMFJ0ZnRqcG9IOTJNWkdSazRkKzRjcmx5NWd0VFVWT2oxZW1Sblo1ZlRTeEJDVjBJQVFFSmc0U1U0amlOdE5CUGtITWNwQUNnblRKamdIaDhmSDZ0U3FZYTRUbjArVVh6ajVuL0l5Y2tCd3pBb0xYazZSN1NVS2hVb2lvS1hwemZDd21wWEdxNXhIQ2VzV1RhczFwcGJNNlZLQlpsTUJtOHZiNFNGVlV3UnRuLy9mb1JITm5nZzYxUllXTGhzUXZ5NHZUYmhwek5RczJYc3NJaU1IV0p6UFVYSk9JSGVtd2MxcGIyNHNhZG5tY3BVYUZnWTZ0ZHZBRjlmM3dkMkx0UW9CNXEvdjMrNTRYZ25GVkxZNU5ta1NxbHd3ZHIydUltRkJVeVpNZ1VuVDU3OFljT0dEV2ExV24zUHJTQWRPblRBbjMvKytjaGNtSHE5SHY3K2R6ZjZiREtaY2ViTUdWQXlHWFJ1N2k3NXZTSWpjdk55a1hVeUUwMmJOSVZZb1hNRXRSTW5Ub0trS0doMU5iOW1SVVZHWk9ma0lETXJFOUZDczNaRmRydUcreGtMQ2dwK0dEcGs4UDVMbHk2YUt3TTFsRlZBSlQxUWdUaFdVSm9pSUl4T1Nhd2RKQ1ZRZjFNVTVESVp4UGxRdFZJRnM4bFU0Ny90Z1FFYndJdkJpT0JXV1hWVXJKQUt2V3ljMVdvVndZMnhEVXRGY051K2ZUczBHczNTd3NMQ1VxMVdPeEtBOG03M2JkZXVYWS85aFp5dVR3Y2xrOEUvSUFndUF6UWFMVFFhTFRMMGFVaExUME9ZRXlMVjZ6ZHVncVNvQjdabXR2dDA4K1ovQ0sxRWhxK1dUWnRSTlZ0cGRuYjI0bFl0bXg5R2VmYmJpancxS3dpQ0lRQ0dFRHcxR1VWeE1wbmdxWWxEN1dvMXRCb05kSGFra1lHb1hUc1VrWkdSQ0EwTGUrRG53UU5oclEwUEQ2OUlZRmtDT0p1N3FaUnJzMXF0NG10T3dRMEFkRHJkcXR6YzNHSVBENC9oQUh5ZnRnczVPeXNiV2pkM0Y2STVtRmJuaHF5c2JLZkFscE9UQTkxRFdET3R6ZzFaMlZtVkFsc05XWlplbjc0OCt2bW9VN0NmL1hUMDB1eEJEUUtvRVNSSEVpUkhrUUpiQjIxREdDbk1mMm9GdlFJK0JQVkRyVnA4WHUxaGdOb0RBelkrYWRuQUtiQTVlbTJpNXlhQ0c4QVBDRmNDYnB5bnArZkdqSXlNSWw5ZjM0OElnb2g0V2k1ZWpydjM0ZW1ud1hQTHo4dHgrdHJEV2pPTlJvdjgzSng3K2l5Um5BbGlmakp3NWU2NjlEbHdWMithc2xhMy9tL3krVHQ0YXFaeW9FWUlvRVlTQWd1dURISTV6U2xva2FsREFEV0pCZGNMYmpvZExPWlM1T1ZtSXpORGc4eU1OS2ZyRUZZbkhHN3U3bzgvc0FGQW8wYU55b0ZiQmNBbWdadVljS3NJM01TLy9mMzkvN2grL1hwQjdkcTE0MGlTaks1K0VPSFpUUTBHQTZ3TUEyTmg5YkNiYXJVNnlPUXkrQW0weUhkMXNoTkFTWW1MeTYwaUs2bUE1KzVoRmxmdStYZ2xKZ05YN3c3VVdIQW56NVhjV3Q4NWRmWjFsSi85dEcvcHNNdXBsUWMxbVFCcXRJTDMxQnlMQmFMSXNkVmlnb2VIUjZYSzdVVkZSdHk0ZmhXTm16WjdNb0NOSUFnMGF0U29RcS9OR1pqWWVIQk93VTM0WG83ak9LNU9uVHFIazVPVDg1NTc3cmtCRkVWMXJrNVFTMDVPQmdnU0dxMk9aemV0Um0zam9pSWowdlVaU0U5UHIzWWwrRjA3ZDJENXNxVXdHRElRRkJTRWxhdlc0dkxsUzRqdFg4YkNQalorQXJwMjdlWkN3a2ZZaUxzRU5RdkgvSG13OEdKU240eUZHVGJocCtQc1o0a0FhdVp5T1RVN1VKT0RGZ1NPbFFwQkxrL2pXQUgxUTJCUUVJd0ZlWldDbXUwNS8wU0VvcUxKNVhJSjNPN2dzZG5tMnlvQ04zSHdsaE5EMDZpb3FITWJOMjZjMWExYnQweWFwdnRXeHo3cjlYcUFJT0huWHpOaXlXSnkyYUJQUTNwNmVyVnhVNldscFdIRzlLbjRjdkxYaUk1dWdZSUNuaG9uSWlJU3UzYnZBd0FNakgyL3hvNzFzcVZMOEhyM0huWnNKdUorelozekRWSlMvZ0ZOMDJqZm9STUdmelFFRkVVQkFGSlRVNUV3ZHc1U3pxWkFvVkNnWThkTytEQnVzUFI2VGRpZHR2bGl6QXVReStVZ0NCSmhZV0hvSHpzQXJWdkhQSnFlS212K2VVMzJvVjFmNVAxV1VBbW9sZlBVQkFMWUNrQ043MVZUcWtRUkZsMFpxUG54YlIxaG9XSEl6OHV1MGVOVVZTTWZ4a2FWU2lVYU5XcUU4UEJ3QkFjSFMwTE10bHh1WXJPZlFxR1F4RlZsTWhsbkk4VE0ySEs1Q1RtQ1VnQWxiN3p4eHUwbVRacDhhelFhdnhGZXZ5OHpHREtoMGVwcWZGMDBPamNZRElacSs3NkwvMTZBajQ4UFdyZU9BVTNUOFBIeGtUeG5RUXF0d3BuWTZyQWZseTlGVGs1MnVlY25UWnlBV3NIQitPMzNMVmkwZUJtT0hqbU1wS1JOZlBqRXNoZzdaalRxMVcrQVRiOXZRVUxDQXV6ZnR4ZS9iZnkxeHZhenF0dE1YTEFRbTdkdVIvL1lBWmc5Y3pvMi9ycmhvVnkwM2o5Mmg5dm8vMGwvZXlWMGhiSlRCQUJZYzYxRjM3ZStOdkgzTC9KK3kzZklwUlVMajdMcXB5Mm9nV0JnVS8ya0tGazVVQU1IWkdabW9yaTRXTXFwK2ZyNklpZ3dDS0doWWFoWHZ6NW9ZVlJLUE0rYU5XdUdqaDA3b24zNzlnZ0t1cnNxOUlvZmw2UDNPNzN3ZHErZTJMcGxjNWszYXJGZzlxd1o2TmYzWGZUdjF4Y0hEeDU0K0I1Ym1aZWlRYU5Halp3TnhaY0xTMFd4VmRoVVM0VVQwbkZDZ1JQRDBuLy8vWmZWNlhRck16SXk5TDYrdm9NSWdyaG5VV1lyWTMwZ3lXYU5SZ3Rqd2YxVHVKdytuWXhKWDB5QTJXeEdjWEV4dXIvR2g1azkzdWlKZnUvM3I5SjNIRDF5R0lrSjg2RFhweU0wTkF5alB2a1VqWjU5Vm5wOS83NjlXTFpzQ1RJTkJ2Z0hCQ0F1YmpCYXZjQmZiTU9HZm9SYi8vRkN0eU0vSGc2WmpFSndjQWdTRnl3RXk3Sm8yN1lkdXIzeUNoUUtCZno4L2RFOE9ocVhMbDRFd0Zjc1BiMjgwTHRQSDlBMGplQ1FFTFNPYVlOLy83MVFZK3QrTjl0VXFWUm8zVG9HOHZnSm1QakZCSFRxM09XaE1MTm8ralNHY1ZreTJKd1NJWnpocnYxbnpscnp3czJ2enNKZVRjb1puNW9RZmhKV2dCTkJqZVVkQnRLbVVDRG5hS0ZRa0orZkQwWlFtcUpwR2w1ZVpaNWFhQmdQYW82U2VYWHExQUZGVWRpNWN5Y1VDZ1ZlZnZsbFpHWm0ycEZHT002OWluK25wUHpEbjJQTFY4QmtNaUV1YmdDaW1qMlBvS0FnYk4rMkZhV2xwVmp4MHhyazVPUmcwSWV4YU55NGlVUXRucDZlL25BOE50RjBPcDFUejgzVDB4TTZuYzRaeGJpZE1JeW9uK0RndVprRno2MFVRTEcvdi84Zi8vNzc3eVNHWWZiZTYzNVdWNkdnU3RzeTNuL3VvV25US0d4SzJvcVBSNHhDclZyQjJKUzBGWnVTdGxZWjFLNWV1WUxQSjhSajhKQ2gyTHA5Sjk1OHF4ZEdqUndPUTBZR0FPRG16UnVZTXZsTGZQWlpQTFpzMjRGWFgzMGQ0OGVQazBScEVoSVhZRlBTVmdEQW5MbnpzQ2xwS3hJWExPUkRCSkpFN3o1OTRlSGhDWUNuMGpsODZCQmF0dVJKQUh4OGZKQ1F1QUJLcFVvNjBVOG5KNk54NHlZMXR1YjNzczNvRmkxaHRsZ2tRSDdRWmpscmdQYkQ1L2tiTDJ2ZC8vZnRjL05mdVBsVkN1d1piNHNkSHFVRS96QURoQVVFeWtDTnoreHdWcXVGazhsNUN2Kzh2SHpJNURLb1ZDclVDYXVEcUdiUHc4dmJHMXF0RnI2K2ZyeW5GaGFHK3ZYcVE2dlZPbDNYdExRMHlWbGhXUmFlbnA1MjcxbTZaQkhXckY0RkFFaEorUWNmRHg4S0FMaHkrUkthUmtWQm9WVEN6ZDBkTDd6d1A1dzR6dXM4blRsekdtM2F2Q2ljVHdUa2NocVhMcFVkaDFrenB6OWNZQU1BZDNkM0NkeENRa0xzd08wT0ZPTzJZU2tyaEtiaW5Vb0V0eElBeGM4ODg4eXBuMy8rZVVwcGFlbHlWeHI2enJabFN4TGF2dFFPclZ2SFFLRlFvSE9Ycm1qUXNDRjI3dHpCaDBMZVBsaTJmS1VrbGZicWE2L0RZamJqMXEzL3FyeU5jMmZQb21QN2R1alh0emNhTkd5SUY5dSs1UFI5QzcrZkQ1VmFqYTdkWG5sZ3Y3OHEyeVFJQWw2ZVhqRFdjQks4d2h2Z3lqTlFkWTVBaVNlMU91SFg1U3U3L1RibWxnT29PUUpiQ1FHVUFvU1pmOEJLQ0twU0pNQ1JJRGlhcGptU0pGRlNYTXdWRkJUQTNjTWRPcTJPbi8xMGM0Tzd1enRVS2hYYzNOejRuSm9BYXJvS1JGaG9tZ2JETVBEMjlrWk1UQXhZbHBYNERrVjc1OTArMkx0M0R4TG1mWWZKWDA3QzBHRzhma1BkOEFpY1BIRWNScU1SQlFVRk9IZnVySFRUejgvUGgxS3B4Tm16S2Zoc3pHalFDaHI1K2ZrQWdLVGZOeUU4UE9MaGhhSzI1dUhoZ1VhTkdsVjZFb24vRng0Y1FSQ0V4V0xoYk9zTUxNdHl0djF0WWxnS2dPdmR1M2NhZ0lUczdPd2JYbDVlZ3dEY2M0Yit3b1h6aUJzWWkyWExWeUlpTWhKTGx5ekc1cVJOa3BkU2tYMDM1eHNjUG5RSU9UazVtRGpwUzdSNXNlMGpDV3g2dlI0UkVaRjJ6OVd1SFFhOW5tY3gwV3ExK0hQWFRreVo4aVdNaFVhN01LS3ExdWpaWjdIeno3MUlUMC9IRjUrUHg3S2xTekJnNElkMjcxbTU0a2Y4L2ZkUkpDUXNjTXFaVnhOVzFXMXlISWVjM0J4b0gxSVBJVmRrU2I4OGYvZXFoc2VHbk1JeGlmeFJCRFpUQmFHbkJlQkVwWGFHQU1FSndBWUtCQ2VYeTZGVXFyaTh2RnhRbEF3Qi9nRkM5Vk1ITnpjM2VIbDVRYS9Yd05QTFN3Zy9HOXl4RjAwTVJ3OGRPb1NtVHVpSnRGb3RCZzM2Q0NOSERNTTc3L1pHL2ZyOHZHeVRKazNSc1ZNWERCczZHTzV1N2xDcjFGQ3BWZExuTm05T1FrbEpDYVpObjRWNTMzMExBTWpJMEdOejB1OUluUC85b3dGc0FPRHA2V2tIYmpZZ1ZnN1l4R09Mc2laZXdtYXVWQVE2YWE0TkFDdVM0bmw3ZTI4NmYvNzhqWHIxNnZXaktPcmxlOTFmdVZ5T3YvN2FqNGpJU0J3K1ZEWE85aEVqUDhHSWtaOWduTUJnK3FpYXY3OC85QTVVVExkdnB5SXFpbTlGT2ZEWGZxeGU5UlBtZkRjUHdRSVAzWXN4THppOUlUbUNuYW0wRk51M2IwT1hMbDJoVUNvUkdCaUk5dTA3bEVzQWIxai9DM2J0M0lHNUNmTnJ0Skh6WHJkNS9QZ3gwSEk1NnRXdi84Q1BqNVd4N3Z0YmYzNXp0eC9qVTFHSk9ydDlnWUNRZXRRQWdpVUpnaVZBY0NUSGdnTEp5VUJDSnBOeitmbDVjSE4zQjJPMXdtREl3TFBQTlM2YktQRHpoVnZxTGZqNitxRisvZi9mM3BuSFIxWGUrLy96bkdYMnliNE15WVNFa0lSY3R1Q2x3clZpWFM0dVZGc3B1SytYcXEwLy9mVzZJbGE5cmJWMUJaY3F5cTE2UmF1MWV1VVZiZFVmOWQ2NndyMGdvbEdKQ1lRa0pDUWtJU0dRWlNhWm1iTTh2ei9PZVU2ZU9abEpRQUZKelBONkhlWmtNcE1aenB4NW44OTNMMGZxS01lSU5adjk3TFBQQUJqemlPMmRxQnNhR3ZEQS9mZmludC9laTdYUFBZdkpoVVU0MjFUS2wxNTJPUzY5ekVoc3VPYnFuMkxxMUJMTHluTzczYmpudC9kQ0VBUkVvMUdrcHFiaXJUZmZSSCtvSDlmKy9KcHYzeFMxdzIzbXpKa29LU2xCUVVGQjNGaS8xTlJVeStmbWRydVphVXJaM0ZLYldjcjhib3JOTkIxZ3B1bXFWYXZ1SGhnWWVQTHJ2dGQvbUQ0REgzKzhDWFYxT3hEZzBqTSszcndKSzViZll2Mzg2Q09ydnJYbzJZaGZEck83TVFCUVhiZmFTZ0hBMmVmOENCOSsrRDYyYlBrWXFxcml2ZmZleFZmVjIzREdtV2NDTUFhTUVBSUlvb2plM2g3TFIwTDErS0RQcEx3OGJONjBDWXFpb011TTlqcWNUcno0eHhmd3lpc3ZRMUVVOVBRY3dJWU5IMkgyN05sRHB2Q2JmOFVicjFmaXNjZFhIN1UrZFFmN210Rm9GQjl2M29RSDdyOFhQNy8ydXFNZU9PalRCcCs5L2ZIZnJUMzdiM2VNWm5vT0FJaVkwNlJpQUJSQ3pJSEdGTG9naVZRa0FwVWdVQmtDSEVTa2hBQitmd3J5ODRPWVZ2NFBjTG5jY0x2Y3lNaklSRTVPRHZMejhwR2VsbzY4dkx4Um9RWVlFVlFtUkJ3T0I5TFMwb1kxYWYxMDZ5ZTQvWmQzNHBSVFQ4TWpqejJCbXErcTQ0S0hpcUxncFJmL0NFS0FXYk5tV3o1azFReGs5UFFjUUVOREE4cEt5M0RWMWRmZ2xWZlhZZTBMTHg0N2lvMDNTMmZPbkRsTXNZMndVV0lzRUVLc051T21rcU5jZ3EvT2VyUUQwRysvL1hiOTl0dHYvNCtXbHBhNi9QejhmeUdFSEhjbzc5TWh5L0I2UEhqeGp5OWd3VWtuNGF2cWJXUEdoMlpQMEgzd2dmdnc0QVAzNGZRenpzUy8vZXB1bEphVzRkZS8rUzNXUExVYUhlM3RtRnhZaUlkV1BXSk5NMXIwdzdOUlhiME5WeTI3QXFJbzRkekZQMEZwYVJuMjI4cUZicjc1VnF4YStaQnhKWjQ4R2M4Kzl3SWNEZ2NlZkdnVlZqL3hlN3o2eXA4aHl6Sk9QdVZVWFBrdlB3Vmc1Q211Zk9nQlNKS0VpeTg4TDk1TWZPbGxCQUtIUDVmd1lGL3pGOWRmQjBLQXdzSWkzSExyYlVjMWowMEgvYndoc3JmeWxKYjc2dEE0bE9Ka1UycldMY0ZRSHpVQVJpVUJpQTVRS2dCVXBJUktnZ0JSQTJRaVVpY2tPTlBTaDJvL2ZUNFVGQlFNNWFtWmdZSWRPN1lQaTM0bVcwMU5UVWhMUzhQQ2hRc0JBSjkvL3Ztd21SOFhYRGcwN0Nnek14UExieHVhZjdCeDR3WTgvdGdqcUtnNERnODh1TXFDNUtJZm5vMjZ1am9zdTlKUWM3KzQ0Y1poQ2xzNkZyOTRxYW1wbURWcmx0VU9oUkJpM2ZMNzNIMFczQUJRcnFwQjUzeHdpVXhUcmFDZzRNUFhYbnV0N3B4enpybkE1WEl0TzlqM3FLZ3FUdnZuaGZqOVk0L2doaHR2eGgvV1BIWE1IY2N6ejFxRU04OWFOT3orMHRJeWZMUng1RG1tSjU2NElPa1gxK2wwNHE1LyszWGNmZGY4YkhqZnozbnoveWxoTThTUzBsSTg5dmpxaEg5YkZFVjh1T0YvaitweE9walhITzE0ZmRQbDl5ZlBreHdJaC8vMDJyNFAzNy9yUUdVZlozckdFZ0hOOUtjcEFEV2dSZzJnRVFxZGdGSUNRa1VRS2lvYUpBQXlrUXlvUVliYjR6R1NiLzFEUHJYczdCd2pwY1BNVS92ZTl3NitXdEdxMlBtYWE4R0NrN0Jnd1VuRDdwY2tDYmZjdW56RTV4NlRZR01mTkE4Mys1WUFjQmJjRkVXaFpvVUNIMVNnWEtVQ1UyOGFBTzM4ODg5dkJmQmthMnZybDNsNWVWY1NRa1p0d3E1ckdyNS80Z0kwTlRYRlJYb0VVWVIrQkp0M1Rxenh1VVJSUkRnY2lzdVgxSFg5aTEyN2RsV2U4b01UZDRCTFp4b0JhakV5cE5KWWR3NmRBR2FRZ0VBRW9SSUV5QkFzcUxrZ3crWDB3T1B6d2VmeldUNjFuQnlqVEtxb01IR2VXcUxsOFhneE1CQStxTWNkeVNVZHl4KzIxK3ZGN05teklZcWl0WTBDT21vcU9CWXh0UWNWbUcycTIwMVRBRm93R1B4ZzdkcTFYMTF3d1FYbmVUeWVuNDMyL2pJeU12Qi9mL0d2Nk9meTNQTHpnOWpkM0lSWUxBYXE2Nml0clVGaFlkRVJPMFp1dDJlQ0NvZDRiTDdOWTVic3RYTnljdERSc2RjQ1d5alUvL3dmWDNqK28vdnZ1emRrVTJsODVKUGZlS2laWmlkMEUyalVpSHdLVkFLQlRFVHFnQWdIWkxpSURMZkRBMDlKRG54bVNnZURHdC85MXA2bWtXeE5LUzdCcnNiNkVlSG04WGd4cGJqa3V3czJ3Q2kvc3NQTkRya0VKaXBUYi9ZcUJjcjUzcGhwcXB1bXFRWkFYYlpzbWJaczJiSm42dXJxUGkwdUxyNUVGTVZEeXNuSXk4dkRxYWY5TXk2LzlDS2twS1JhWlV4QWZMckhWOVhiOE1UanY4ZjlEenlFcVNWZi8wTk9kS1dmV0VEWUhOS2JhQW5mMGpFTGgvb2hKa2tobVRScEV0cmIyOUhSMXJwaGQwdnIyMHVYTEc1S290SjRueG9Mak1XR1ZKb3hSY3E0Y0JzMW40SWdVa2tTSVVsbWh3NkhEQWRyRW1uT0tHRDkxQ3p6TXovZnlGT2JWbjVJcVRZcHFhbW9PRzd1dC83NUg5R1pCNGR6VVVxdCtRa3RMUzNvNk9oQVYxY1hlbnA2ME52YmkzQTRqSEE0akVna3dvLy9JOXpnWnFMck9wdWxRQUN3ZVFxaUNYaVpVdW9BNEFEZ0JPQXNLU2x4YmRteTVVZU51M1pkbVJzNE9vTS85M2Jzd2R4RDZQRFIxTlNNN3YzN0p6cm9EanVPYmNqS3lrUmhnazRUVGMzTjZPNCsrc2RzYjBjYk1qTXpVWlNnMFNTbGRFOW5aK2QvenBrejU1T09qZzdGQnJWb0lvVUdLOXBKVkJpTklUVFRFcUZzTXl0MElFa1NKTW1hVXdBbkJ6YVB4d08vMzQrMHREUmtaR1FnTnpjWCtmbjVtREpseWhHdEpmNU9LemFMd0lSZzVzeVo3QU1hcHR6c3QrWTJMR0pLQ0tFbTNNQXJOMmFhd3BoR3J3RlE2K3ZyMVl5TWpNb25uM3p5a3dVL09HVnhSa2JtbFVmNmlpN0w4aUU5cDdCd01ycTZPckczb3cwK2Y4ckV6SU5RUDBLaGZtaXFtaEJxQUZCVVdJak96cU4zek5oNzBqVXRJZFRDNGZETGI3enh4a2VYWFhiWmdWRlVXcFJUYU5aRWRsT2xhU2JNZEE1bVJzZGIyZGJLMjgzMVVqUGJlV2RuWnlNUUNHRHk1TWtvS1NsQmVYbjVtRDRQeG94aTQxZERRd1BxNit2UjNOeU05dloyN051M0QvdjM3MGRmWHg5Q29SREM0VEFHQndjdDVXYk9YQ0RjR0VCZXZRbW1laE5NMEVzQUpFNjlXUXJ1L1E4MlZFd3BMbDRxaXVLWlIrTC8xYm0zSFpNQ3VZZmN0b2hTaWwxTnpkaS92eHVhcWlNUytXNDJuM1M3UFJCRUVWbVpXU2dzTEJoVmJUUTM3MGJYdm4zUVZPMklIVE8zMndOUmtoSXFOVVZSL3J1cXF1cS81cytmMzhJQkxSblVFcG1kNnBEWmFRSE5tRTFnQXMwb1pJOVhhRjZ2MTRKYVJrWUdzckt5TUduU0pCUVdGcUtrcEFSVHAwNGQ4K2ZDbUFRYkFMUzB0R0RuenAwVzNEbzdPM0hnd0FIMDl2YWl2NzhmQXdNRC9HaS9ZWERUTkkyWXc1dlptRDhHTjJhZXNwRi9NZzgzQU01UFBxMWFrSk9UZS83aDZ0UTdFQTRoMU44SGdCNzJScE1UNjloYnVxNXZiV3hzZkx1MHRMVFdWRngybFJaTG9OS1VCQ3BONXpacVdqQkpvZVl4MHpuODFueUNkQ1B5YVVLdHRMUVVCV1lseVZoZjBsaDk0d1VGQlRDckRtQVd4VnUzaWN4VjAwU2xnaUFRUVJDZ0tBb2xoTENHbC9iQWdoVXBKWVF3MDlRNkFZK2ZlOXo3SlNVbG14NSsrT0V6VWxKU3ppZUVmRzNkN3ZmN0lVa1M4dkltSVJBSVRIenJ4L0dpbE81b2IyLy82OEtGQzZ0cWEyc1p6T3krdEpqTmg4WkR6Ulljc0lZWFUxRVVxU2lLMXZkQmxtWEtldTR4cUhtOVhndHFScERBYkR0VVdJaXlzckpESHYwNEFiWWp0SEp6YzhHYVVQS0FTd1ExenZmR1ppRVNSVkZBQ0dFSnZaUU9EVFhWYldraEdnRFZuRytxbVA0MzVkeHp6MzNyamp2dStQRFdXMjg5UFMwdDdYeENTUEhFMTNkaUpRRGFycTZ1cnIvZWZmZmRXOWVzV1JQbFRNbFlBdE9UM1NwMnM1T2RpOHlYeGlheTIxV2FMTXNXME94UVl3RUNsczVSVkZTRXNyS3lZZTJFeHJ3cDJ0VFVOT2IvRTVGSUJJMk5qVmEwZE4rK2ZWYTBOQlFLWVdCZ0FJT0RnNGhHbzVaWmFoYm9FbFl6eWN4U0xtcEtiS2FwU0NtVm1JbksrZDhjQUp5MzNISkx5aFZYWExFd0pTVmw2VGRwYWpteHhoWFFHdmZ2My8vbW1qVnJQbjMyMldjakhLQ1VKRUNMY2JDelJ6dVpVck9pbmN6ODVLd1VxOXMwVTJ0OG9DQTFOUlZwYVdubTNNOEFDZ29LVUZ4Y0RKZkxOZTZPL1pqMXNTVTRpYkJqeHc0ME5qWml6NTQ5Mkx0M3J3VTRGbFJnZ09QOWJzejN4Z0dPbUYxOUNmTy9JVDQxUklRUlhFZ0VPTWZ5NWN2OUsxYXNPRFVqSStOY1FzaU1pYS8zZDlLSFZ0UFoyZm0zWC8zcVYxWFBQUE5NZEFTZzJUZkZORHRWRG1ZYWIzYmFWWnFwMU9LQWxpanl5WURHVWptS2k0c3hiZHEwTVp2TzhaMEJHMXROVFUxb2JHeEVhMnVycGQ0T0hEaUF2cjYrcEVHRkJJR0Z1TWdwVTI4TWNoaktmVXNLdU9MaVlzZkdqUnRQeXMzTlBWc1FoQk1tdnU3amYybWF0cm1scGVYZGswNDZxYnExdFpYQmlRZWFjaEJBWTgrekFnTUFLQi94WkNxTkR4QWtDeEtreEUxbkR5QVlES0s0dUJoRjM5SWc0d2tmMjlkY1JVVkZmRnVqT0IvY0tBRUdkaVZrNm8xcW1tYmx2Y0hNZFRQVlcxeHd3ZVovaXdGd05EWTJPdkx5OHQ0RjhGRmRYZDJjb3FLaWhiSXMvM2ppNnovK1ZqUWFmV3Y3OXUzL00yZk9uRjBjekhpVkZrc0FOU1VKMFBqZ1FGeVNMYS9TZUxQVDRYQU04NmN4MDVOUDV5Z29LTURVcVZQSFZaRGdPd00yd0FncThIM2JYQzRYK0pQQURyZElKR0lCTGhhTFdaRlRCamN1dUVENGtYK3NRd2lNZkNJVmdHSXFPQXR3QUJ4bFpXVmJBSHorN3J2dnZqcHYzcndmK0h5K3N3RUVKNUF3cGwwZnJmMzkvZSs4Ly83N255MWV2SGhmRXFBbGdwb3lra0l6TDVoOGxCNHNwc1d0a0pUeUFBQVRUa2xFUVZUbUJ1aTZUblZkaDZacFZsOHlSVkdzQkhXbTZCd09COExoTU54dU4vcjcrOUhiMjR2dDI3ZGorL2J0aCtVWStQMHBFRVhCU2htWk1FV1BvdCt0cnE0T3pjM05hR3Rydzk2OWU3Ri8vLzRSL1c1bUtWYkM0QUtYMUF2VE5HV2xXWEZCQnB1SnlwdXFNZ0RISlpkYzRscTVjdVg4bkp5YzB5UkpPbTBDRTJObnFhcjZma3RMeS8vY2ROTk50WC81eTErVWd3U2FrZ0JvOXFBQWc1bE9pQUNqeGxPZ2dpaENFa1dJckNSS2tpRTdaRGhrQjR5cDdLWlNjN3ZoOFhyaDkvbVJrbXFNeHN2S3lrSnVJSUJnMEFnU0hBbC9XcGpMd1p4N0RPVmdqaXV3WFhUUlJYajExVmR4L2ZYWFkvWHFvWDVmcmEydGFHcHF3ZzAzM0lEUFB2c001NTU3TGdvS0NwTDYzYmlFWHBoK3Q1R0NDMlFVd0VsSkFDY0RrQmN0V2xTd2R1M2ErVGs1T1F1L1NUN2N4RHFpRjhnZFBUMDlIM3owMFVkZkxGNjh1SnVEVWlLZ0tVbUFwaVlEbXRramtESmZHaEVFaUtZdlRSUU5vRW15V1JvbE95QTdISENhVUhPN1hIREg1YWdaNlJ4WjJkbW0rVG41cUtpcHpyM3R5SnNVT0daeU1jZWRLU3JMTXQ1NDR3MDg4Y1FUMWhVcUdBeENFQVJVVjFjRE1EcDFCZ0tCWVQ0NGV5NWNMQmFES0lwUUZJVmxkWk5FNXFuTkI4YzZoUWltaVNweEpxcGtudkFXMk5hdlgxOGZDQVNhQWJ5K2JkdTI4cWxUcDU3Z2RydFBBekJSMWY3dHdxeHRZR0RnZzVxYW1xcDU4K2J0Wmo3Vmd3QWF2Nm1tUXRNU21ad01hSUlnVUVxcG1WOXBKTnFLa2doSlpMV2VFbVRaWVNnMUZpUndHcEZQdHhuNTlQdU55R2RHWmdaeXNuT1JsNWVIeVlXRjFxek5JNzI4UGovMjd0MDdBYllqdFJZc1dJQU5HelpneTVZdG1EOS92blgveG8wYk1XZk9IR3pkdXRVcTlqVW56Y2NCTGh3T1cwR0dTQ1JpQWM1VWI5UWVYTkIxblE4d0pBb3lhQUJFODRvdFVVb1oyT3hLVHA0MWE5Ym5BTDRDOFB6MjdkdG5GUllXSHU5eXVVNlpnTnpSZzluZzRPQkg5ZlgxWDFSVVZPemkxVlVTb0trSENiT0VRT01EQTdxdVUxbVdNVXlseFptZVRyajRkQTZ2RjdGb0ZGcy8rUVFYWDNJSk1qT3prR09tY3hRVlRZa2JSUHhOVjIxdERkNSs2MDFVVk16QjZXY01MNVgyZW4wSTlmY2VNNS9sdUFOYlJrWUdUajMxVkZSV1ZzYUJiZDI2ZGJqZ2dndnc2YWVmSWhnTW9yUzBGQjZQQnpVMU5haXNyRVJQVHcvY2JqZkt5OHVSbjUrUHdjRkJTSktFblR0M1l0KytmZGFnRTBtU2FHWm1Ka1JSSktGUUNKRkloSXFpQ05heEZ3QVJSZEVDbks3cmdtbDJpR2JrVkRSUGZHYW1TZ2xBSjVXWGwyOEY4RG1BdFY5KytlVzA0dUxpT1I2UDU0U0ozTGpEdTNSZHJ3bUh3eC92MkxHajV2ampqK2VWbWM2QmFTU2dxUnpRN09ZbWk1elRaRUJqNlJ1cXFzTGhjRUJrSFRrazA0SmdLczNoaE5NMTNQVDBwNlJnem5ISElSaWNiS1J6RkFTUmszTjRvNTVQUGJrYWpZME5HQWlIaDQxbDVOZlJIQ3orblFNYkFDeGR1aFFQUC93d0huendRUURBNE9BZzFxOWZqNVVyVjJMRmloVklUMC9IN05telVWZFhoK2VmZng2WFhISUpDZ29LVUZ0Yml6ZmZmQk95TENNWURHTDM3dDNvNnVwQ2FXa3BaRmxHVDA4UDl1elpnNEdCQWFTbXB0SllMSVpJSkVKMFhZZlg2NldhcGlFU2lVRFhkU3BKRXVHaXFNUzhXZ3MyTTVXdmFPQTNIblRTN05tenZ6Q1YzS3ZyMTYrZk5IZnUzT2xwYVdselpGaytBVURxQko0T2FmVXFpdkp4ZDNmM2w1czJiV3BZc21SSk40WWlrY25VV1NLbzhSMDJWTnR6ZFU2aFViNC9Ha3V3RlN3Zm1oSEJGQVNCT3AwdVBqOE5zc01CZ1JEczNyMGJtcXBDbENUTW5qVWIrY0VnS0FYKzM5dHZRUkFFcEtkbjRKSEhIcmVza0YrdVdJNjJ0ajBBZ0o2ZUhuaThYdno1bGRjQUdKMXhudmo5bytqdDYwVkdlZ1p1dS8yWDFwQWVBSGp0UDE5RlplVTY2L0VBY1BVMVA0UEQ0Y0NxbFErT21ROTVYSUp0OGVMRnVPNjY2MUJkWFkyWk0yZGkvZnIxbUQ1OU9nb0xDNjNIZUR3ZXZQenl5N2o0NG90eDdiWFhvcTJ0RGNGZ0VLRlFDSnMyYlVKRlJRVnljM1BoOS91UmxaV0ZTQ1FDbjgrSGZmdjJRZE0wdU4xdVJDSVJBS0RwNmVrUUJNRXlVVlZWaFNpS2JOWUNpNklTMHpRVnpQc1k0RVR6aXlLWnFrNjBRWTRIbmJSbzBhSmRBRm9BL0wyaW9rSis3cm5uaW91TGk2ZjVmTDdaa2lSOUQ4QkVLMTJia0ZCVjlkTyt2cjdxdXJxNnhxdXV1cXExcHFaR3R5a3p6V1k2SmdNYUR6UCtPYnJOM0xRVW1ya2hHZEJZenpSQ0NGd3UxekNWdHFkdEQzS3ljekI5eGd5b3FvcnR0YldZLzA4bklEMDlIZC8vL29tSXhhSjQ5WlUvWXhvMzMvVCtCMWNhQk8vdHdjK3Z1UW8zM1h3ckFHUE81MzIvdXdlL3UrOEJUSm8wQ2UvOGJUM1dQUFVrN3Y3TmI2M25Wc3laTTZ6enNNUGhHSE1mK3JqTlkxdXdZQUZlZi8xMXpKdzVFK3ZXcmNONTU1MDM3SEhWMWRYbzZ1cENaV1VsdU1sVzBIVWQyZG5aY0xsY2FHeHN4TTZkTzYwMEVVVlJrSktTQXEvWGk0RUJvNGVYMysrSHBtbFVWVlVNRGc0U1ZWVWh5N0tWYTJSR1VWaytFalhIYVExVGNLYVphbFUyY0pCTEJEdnBpeSsra09iT25Wc05ZRHVBdHdvTEM4V1hYMzU1Y21scGFYRnFhdW8wV1pabkVrSkt2a3NVbzVUV3gyS3hydzRjT0ZDL2ZmdjI1c3N2djN4dmEydXJibE5saWRSWk1wVm0vWTRsWTl2K0J1ODNpek0zZWFCeENlQnhRR01LalJBQ3Q4YzlsTVpobXA3QllBRjIxdTFBVzFzYlNrcEtjTWxsbHlFajNZaDZCZ0lCUktOUnVOM3VSQ1kyZm5QM3IzSDJPVC9HdkhtR1MyYlhya2EwdHJiZ0RuTmd0MDUxZUcxRFZjcktwcUdzYk5xWVB3K2s4WHFDTDEyNkZHdlhyc1Z0dDkyR3Q5OStHL2ZlZSsrd3g2aXFpbHR1dVFVLy9ha3gwN0s5dmQxcU9TNktJdDU0NHcyODg4NDdLQzR1eHVUSmt6Rmp4Z3hVVlZWQmtpVDRmRDVyaUl2WDY3VlNRMlJacHRGb0ZFNm5rNWpSVTJxTG9ES3dXVlBzS2FXNmVSK0RuQUFqUllBdndCZHRnQnUyMzl6Y0xKNTQ0b2s3QU5RRGVCZUF1R3JWS3QvcHA1K2VsNStmUDlubjgwMlJaYmxFRUlScE1IckxqZVVWMVhWOVJ5d1dhK2p2NzIvZXZYdjNubmZlZVdmdm5YZmVPUWd1SjJ3RW1DV0RXdHcrcDh6aXpFeWJPcU0yb0ZHK2t3emZZY1lPTkxZQmdOZmpqUThRZUR6SXk4dkhqT25UY2FDbkJ6dnJkcUM5clEwMzNuUUxKdVhsSVM4dkR6dDMxaVU4T1AveDdOTnd1Vnk0N1BJcnJQc1VSVUVnRU1EYUYxNGM5eGU0Y1F1MkpVdVc0TVliYjhUVFR6K05zckl5VEpreVpkaGpwaytmam0zYnRxSEVIS1pTVWxLQ1o1NTVCaHMzYnNSVlYxMkZUWnMyWWVIQ2hWaXdZSUdWODdaNTgyYTQzVzc0L1g1cnFyWFg2N1VpcHc2SGc1a1ZsRzlvcVdrYUJFR2dxcXFDVWdwUkZDbWxsSmhCQjhLcE9GWjRUempJQ1Nia2hBU1FHM0gvMWx0dkhRVFFEYUNHTTMyRnlzcktyUEx5OHV5c3JLeGNuOCtYSjh2eUpGRVVnNFNRQWdESFNydUhDS1cwUmRPMFBiRllyRDBVQ3JWM2RuWjIxZFRVZEY5NDRZVUhNSlNkcjQ4Q3MyUUtMZUUrQnpQZERqTU1EUUNpeWRSWklxRFppdGF0alVYakFjRG45OGVWUnZsOFBtemQrZ21tVFN2SHFhZWVCcmZialh0L2R3K21sWmZENTB2dWNkaTRjUU0rL09BRC9QdlR6OFlsNVphVWxLQ3ZydzhmZmZnQmZuRHlLV2hvYUVETlY5WDQwWS9QdFI2emMyY2RxcXUzNFNjL1dUb0J0bU54QllOQnpKczNEM2ZkZFJmdXZQUE9oSTlac1dJRnpqcnJMTng5OTkyNDlOSkxVVk5UZytYTGwrUG1tMi9HakJremtKV1ZoWTZPRHZqOWZpaUtndmZlZXcrUlNBU3lMQ005UFIzNzl4dVR6MzArbjFXeHdFNVN0OXNOVlZXeGYvOStxaWdLZkQ0ZkpFa2lnNE9EMERTTk1qOEdTeGNSQklFVjI0TUJiZ1RJV1lDeWRSMFphZU9UaDRVbFM1WU1BTmpEL1YzMkd1VFJSeC8xelpvMUt5VVFDS1NrcHFhbWVEeWVGSWZEa1NKSlVvb29paW1DSVBnSUlUNUNpSmNRNGpaQnlCb0FzTmNDQndacmJCeWxkSkJTR3FhVWhuUmREMm1hMXErcWFsODBHdTBiR0JqbzcrbnA2V3R2YisvLzhzc3ZROHVYTHgvZzRFVnRJS01qd0V5M0tTeHR0STExMFVnQXNqaVk4U0FEUzZnMXA2VHg1aWFEbWEydFVCelFXTjgwcDlNSlNpbFNVMU50cmJ0VGNkWlpQOFM3Ny80M0dodnE0WFE2Y2VkZHY0TFA1ME5yYXl0dXZ2RmZvU2d4OVBiMjRvTHpsdUFmNTg3RjdiKzhFNnNmZnd5UlNBVFgvNStoQ1pLcm4vb0QvSDQvN245d0pSNTc1R0g4NGQvWHdPUHg0R2JiNE9HcXp6NURaZVc2TVErMmNWZDVvS29xMXExYkJ3Qll1WElsYnJ2dE5qUTBOS0M0Mk9nQktVa1NYbnJwSlZ4MDBVVUFnRC85NlUrNDc3NzdVRjlmajBBZ2dLdXZ2aHAzM1hVWENDSFlzbVVMcnI3NmF0VFcxc0xqOGFDODNKaXZXRlZWaFdYTGxxRzJ0aFovLy92ZnNYanhZcXRxWWRldVhXaHVia1pGUlFVVVJjSE9uVHVocWlxQ3dTQ2Jsb1h1N202bTFDQUlBanV4Q2VlTHN5REg5aE5BTGc1Mm5Kb1RFb0Vzd1Q1L20yampYMmVrRFFsdTdmdHhickFFKy96dFNKc2RaUFl0bVVvYnRzOEc5eVNDMkdnd1kvdTJ4cVVIQlRSZXBmSE5JSHQ2ZWpCcFVqNjhQaS84Zm5PK3AxbkFucHNiUUg1Ky9pR053ZnMyVnNQTzdUajU1Sk1ud0RaV1ZtOXZML2JzMldQNTMrejFwbXg0akwyWkpWZHpDbTRNb0ZXOHpNeFVQc2pBeXJXNHNpMytjeUkyME1WQmpsSVFnQTZEM1NIK25BaHNQT0NFQkZBYkNYQWp3YzBPTkNTQTJFZ0tUVStpMXV5Ty9WRWhabnM5M20vR1lHYmRjcWFuZlhBM3RYZHRaakJ6dWR4SVNmRVBhd0xKRkZwM2R6Y0tKaGRaelNBek1qT3Q0bksvUDJWTWZFK09KYkNORzFQMGhCTk93T2JObThkY0VJKy95S1NtcGpMemxISmRIQWpYM1lFUVF1SlVISXh4Z2NUdzAwRUFDRWtFSlVvaDJLQkhSZ0hhU0hBN0ZPVjJLR0E3RkxNekdlQ29EV2dqQVV5M0F3d2dsQkJRZ0lBUUMyUUd6QVFCQWpFaEpnb1ErUklvdGhtbFVFTnFUWlloQ0FRQ0lWQTFEZG1wcWNNYVFmcjlmaEJDRUF3R29Xa2FmRDQvVWxOUzRmVjQwZGZiaDc3ZXZtUCtSTTRQSGx2TmFzWU4yRFp0Mm5UVVhvc2YyTnpkM1IzWHlESWNEby9VcWRkU2JvcWlXTXJOVkc5OERTcmhGQnpsbEJ5N3BUWlRsY0ZFNTlVZHI3SUlBVWtFUFE2U280Rk1HQVZveWFCR0VrQjhOTFZHa3lpM1pLQmpjTkpIZWc1ejlyT1pzcHp6UDVFcXM4R01RQkRZN0ZxQkNzTHdtUnFTSkJsZ2syVElKdFFjWnFLdDArR0FydXVRSkJtWm1abFc1UUJyQkNtS0lvcUxweUxibkVVd3NTYkFkdFJYUVVFQmNuTnowZGJXWm5YcFRXU2VzbzRoSXdHTzN4allSb01jQnpob21rWUpreGhEUUl1RGpVM2h4VUdQU3owWkJqRFR0QjBKWkVmU3gyYjdtU21wcE1DamlaN1BkYzdBc0gyRDlnYlFDQUVCQVJFSUZRaEJuRG96RkJvVkJRR0NLRUswUTAyU0lFbk1wMlpBVFhZNDRKQmxPRXl6MDZncUVDR0tBZ0tCZ05XdW16V0NsR1VaMDJmTU9PU0IyUk5yQW15SGRUa2NEaFFWRlZtQTYrenN0TnFROS9UMG9MKy9mMFQvV3pMQWNmNDNxNE1JRHprdWlkaUNuR21lSW42NFBhL2NDRXhBWVFoMklPdzduZ3hZTnBVM3FqK05zbjA2aW1JajFzM0JRRzRVNFBFL0crWWovM2RzVG44QW9McE9JUWdDREo0UmF2WS9BN0dVbWNBRkJrVFQ3RFJ2ZVlVbU1vWEdBYzFVYVBIQkFUYzhIc09YcGlvS0prK2ViTFhyWnRPaW90SG9pRkFqVlYwZ1QxWUI5VDJILzJRdVNRTzkvampRNDdJbndEWWVGNlVVSFIwZDZPenNoS3BwaDFUVUc0bEUwTi9mYjVtamJFdld5Skp0bEFJNnBaQWtDVTZuY3lUQVFkTTB2cHJCZ3B3Z2lLQlVwN3BPVGNEcG9CU2dvS3o5S2dCQ1RQQ1ozM2VZSUJ3T0tpNmdSRWE1amR1M2VIVncvUXpwSVNxNStEZWY0SGRjemhabCtjK2lLRnJQWWVhbHBta1FSV2tZekFpZmcyYjR6eXlvamVaSGswMnowK0Z3d3VGMHhBSE40eG1hdkQ0UTdrZHBhU2x5Y25JUUNBVGc5WG9QN2dSYlhRVTA5QnlaRTcrK0IrVEpLdEJuejVnQTIzaUVXbFZWRlVBRWVIMStlTDArNUg2TjFsS0RnNFBvN094RWQvYys5SmlUNmZ2Nit4QU9oUkFPRDJCd2NBQ1J3UWdpMFFoaXBub2JHQnhFSkRJSVZWR01xM3BpOHpSdVk0cE5WVlZJa2dSZHAwU25PcWl1d3dDY01ScVZSV1ZOQUJEWjRZQnVtcnFNUnl5Nk44UW5BazdOSVlsNXlZTVNCMkdDamdJMkFrS1NBaTRPV1BHUDQzNG1oSmVhb0pSYWRaanMvMGdJTVNwRUhBN21PNk1NYWhiTUREL2FjTE56UktDeHRrSXV1Tnd1dU4wZWVMMGVlSDArcEpqcEcybnA2UWozOTZLaW9nSWVqK2VReml0eXBLREd3VzNDRkIySHE2T2pBeUFDY25LL1diZFJ0OXVOd3NKQ0JBSzU2T3JzUXZkK003alEyMnVacHdNRFlRd01HRENMUnFOd2V6eUl4V0xvNyt1RkpFbHd1OTBqbXFoTXRXbWFCa1ZSSUVueVVKQmhDRzVFVlkyLzRYUTZ6Y2VZL2poUmhLNGIxbHMwR2pXVWlpaGl5SlpGSE5nU3BBUXhmbUFvZGtFVFhpeVN0YU5tYmFEaTFaVDFQR3IvdlpuUXpJUE5BbGdDcHo4SUlkQTBEUTZId3dJYU15OEJ3T2x3eHFkcWlJTDFHVkZLNFRMck5GMXVGMFJSd2hlZlYxbC8xK1B4b0tTMEZIbVptWEhwRzNhRjV2ZjdrWkthaXZUMGRHUm1aQ0k3Snh1dHU1c09HV29UYXdKc1gzdDFkbmJCNi9NZnRyL25kTG9RTENoQVlOSWtNL2V0MjFKdy9mMzlDSVZER0RBVjNPQmdCTkZvQkE1Wnh1RGdBSHcrMzRnK09INkx4V0tRWlVkY0FiOEpPS3FHRkJCQzRQZjdUUlZIQ2FVNmRNcE1WbW9NcnlFQ1pFbmkvWFNjdjI3SUZjWUJ6L3FIRE8wTmd4OGJOR0tERzFWVjFZSVZwWUNtcVNDRVFoQ01hZ3hGVVVBRUFaSm92Q2RWVmFEcmxCckY0a01xelhMNjJ6YUJHQ2FtcHFuVTVYSU55emRqNE9LaEZncUZFQXFGVUZ3OEZTNjNHM3M3T3REV3RnZXpaczBHVTMzZk8zNGUwdExTME5mWGgrcHRYOExwY0dMR3pGbHdtd3JONC9YQTUvV1pMYm9OaFphUmtZbnM3T3pEbWx5YitmeGlLTldkNkZ2MXZ3Q0FqQ2QraUlHMzZoQjVwejdwYy96WEhRL25LVVhZZDRIUmpzaDcrV3hJVTlMUmU4K0hCLzI2b3pXYlBKYlcvd2NhTHRid3VPTFRxd0FBQUFCSlJVNUVya0pnZ2c9PSJdLFsic3JjIiwiZGF0YTppbWFnZS9wbmc7YmFzZTY0LGlWQk9SdzBLR2dvQUFBQU5TVWhFVWdBQUFUWUFBQUUyQ0FZQUFBRHJ2TDZwQUFCS29ucFVXSFJTWVhjZ2NISnZabWxzWlNCMGVYQmxJR1Y0YVdZQUFIamFyWjF0bHVXNHJXWC9heFJ2Q0JLL09SenhRMnYxREhyNHZUY2pzMXhWdGwvN3JXNlhxeUl6NHNhOUVna2NuQU1DMExYLzkvLzZydi82ci85NlNtdmhTcm0yMGt1NStWL3FxWWVYUDdUNzUzLzkvUGU1MC9uditWOHN2LzcwL1BYNzF4OC9DSHlOdnZMbkIvWDkrZnE4ZkQvLzR4ZCtmOFl6L3ZyOXEvMzZTV2kvM3VqWEQzampueXZ3ay8zeit2TkY4djN3OC8wbi9YcWp2bi8rVUhxcmY3N1U4ZXVONXE4WG5rdjU5Vy82NDdKK3Z2ajM2eS9mcUt6U3lueFFER0hISjk3bnYrbm5DdUxQdnkvLzF2UGZ3T3VlR1BuekU5dDF2dnkrSlJia0w3ZjMrK3Q5LzNtQi9yTEl2LzkwL1gzMS8valQzeFkvdkwrK0gvKzJsdVhYR3QzbFgvL2d5WC83ZnZ6alk4SmZ6T0dQS3dwLy9jRVk2Wjl2NTllLzM3ZmE5KzJmdTN0VFlVWExMNHM2aS8zOGZodGVPRmp5ZUg2dDhFL2wzOHlmNi9tbjgwKzczM3V5NWV1ZTkrQ2YrZlFuc0N2ZjlhUm5QZS96UGZ0OG5jL2tFbFBZb2ZJMWhCbmkrVjZMTmZRd28vdVUvT2Y1UW8wOXJ0all5eG4yeGZhbEdQNjRsdWQ4YmorZk41L0dKNitIbDRhSE4zdjRsWC83ei9YZi9mQi84cy8xZmRNbGV1NzJ4MXB4WFVHNzVqTGNPZi9McTlpRDUvdTFiL2tzOE85L2ZtMy8vU2Y3d1ZUWndYeVd1WEdEN3oxKzNtTGs1eCsyRmM4K1IxNlgrZnF6eWM5VjE2ODNZSW40N016RlBKRWR1TXNUODFPZXU0WlFuNGQxYkd6UXk1V0htTUpnQjU2Y3crSWlRNHF4aEt1R0Z2eHNmcWMrNTdVaGh4TDhOdGpFUnVSWThLM0dEcjFzVmtvWis2bXBZVU52ampubG5FdXV1VjI1NTdmRWtrb3VwZFFpeUwwMTFsUnpMYlhXVm50OVcyeXA1VlphYmEzMTl2YlFJeGlZZSttMXQ5NzcrNGJyNVlOZTN1dmw5Uy9mR1dIRWtVWWVaZFRSUmgvdnhIeG1tbm1XV1dlYmZiNHJyTGlBaVZWV1hXMzE5ZTduMmlERlRqdnZzdXR1dSsvM3c5YSsrS1V2ZitXclgvdjY5LzZ4YTc5MjlaLysrUi9zMnZOcjE4TFpLVjlYLzlnMXZudlYrdnN0SHVFa3UyZnNXRWdQTzE3ZEFRdzZ1R2QzZTFJSzdweDdkdmVBVStUQVJXYjM1bHFQTzhZV3B2MkUvRDEvN04wL2R1NC8ycmNydC85bzM4TC9iZWN1dCs3L3g4NWRiTjAvNzl1LzJMVmxuSnRueDM2ODBEVzlJOTdIYTk3QUZYMWpmZnkxeEMrLzhhdmoyN051WWRJZi8rYy92Vjd2WjcvMTRWN0x1K3BUYzBpbHZXeHVISjNMR0hQaVYybEVMMlcvaVplTUhkTFhXbnk1ZzluV00rODlyakJuSEx1MkorODZkc3hmZTRHNmIreTFWNTRKZTlxVHoxcTEzMnZ0OFhBZk0rOTNqVFZDR256dUUvb01xVjVQNDYwbTY0WDEzWHZYbVFZMnNMK1k3LzU4TmUzNjhMT1k1NzNtSHAzdEhQVWVUOHBqczJPQS84c3VZbFRYVEtMVnMrYXFMOFFreDAxNGZkZkxPblF1TWVUQm5sYldKNHpTQWZZM3ovcU5WTi93TFN4cmZpWE9YRWU2SURWMTNpeEdiUW1EN2tTWjNzdjNzTUZmM1N6R0hQeHh4YS9OTDl4Y252NHpvQ0YxOHE2eHpvQnp6cTlkYmVXUzBtS2RacjVIdVZzUDdQc2NRSDdmcTRVMVMxeGhyUHRMK1ZzWTBGejRRWTk1cnhwcTN5V3dFU21YcTdTSFBmbHE1dWFNTit1NzJZek82OXpZZjdQNXo4eXJjVEhBUVN6OXUwY3ExekRneGJ1VXRRYXd3cTJGdVBFakRCT3pqV3NVdGpseUtYUEUvUElKQmNkL0I1Kzg0NmhjeW9NaDhHdlhHTWVxL2p1TCt4Yy9tNldNV1BhWThjT3A5MnpmRmRZcUhmZU9pYkRPUFdNYktVeFhwc2MyVi9iVzFqNjMrWHd2WVAvSFcyTXRJYkFoUlByMmZCZWgvUUY5Rm1DQ0tmVzV1Y2YreGxBeDRtZVh3WEtYOFJVK3ZSUjg4eVBDWXlmdFRmZWJXbnQ1VDh4OXJuVzE4dVVKaUgzSG5NcUxEWDcvN2dxK2Z2UGlyNlZ2eC9weFFUR05zSHRib09QMXNvUDh0WHdSQU1LN3VVcFFETjhIRlVibmZuTUFTY1NzMk9WKzc3TmViQ0FhQlJmLzVvOVg3NjllVWg0dXZ0ZnZpZC9aL2YwMVhlRmxpMnJCV3A1Wmd1YXk4NFFtTGp4azgvNnNJZXlHVDMyMGxUQmh0WVNUeElja1BReDMvUGFqNXc1c2FvUm52UFZqSzdqK1k1Y2RNSzZ3QlJjdTFkYmZML0xoa1hlNE5sRzZsOGFPRHVnU0sxUlQrYkJqWGpsSEw5dDdYdnloRlpha2g2Zm5HMnNMS1FmdWI3L1M3N3JHODE2cGpGV2VkL0lwZ0d0dkJBS3dHT04vOGx2elIrQnZOVTd3bEwvT0F6NHpweGIzeUN6TWZqVEhjV05VMThNOVZaejBUYk0yN2g1SGU5ZFJFSm05bEk3SkxsTEExMEpnSmYrZHlWNy91VDAvWHZIS0d3NFhKamZOQlJjaVQrY2VwRFUzeGplQlZUeGFPbHBEd1RLSnJ2VXRHeU5zN3k3bEc0REFncERsY3ZmUmltdkVSWTlLR0oxVlRIb0hWOVF6VkRFQnBwT1FwcmtXUHJUenlnMXV3bm40Ly9leWlyRU5ZSktWNHA3NTB6RDJBVHZzeVZwUHY4clRkTFdPTlFKUWZPSnU4ZEN1elhzOWhDOENZa3hFeE1kUEdSdThpZ1JWSW1rcHNkMEU4L1JpR3Z0YS9VNDVnbytkbmNlblM4WlFIbHlyUHgxOFlKOW01QmNxY2NaUFdxVytYd3Q3RWpJbi9zUnZiYUlBY1kzN3dGclo1a0JFWHVuZXhNLytlTnN2aUFPeURkQjExNEpvV2tEREEwWmhNYy9nZDBkcS9UN3NHKys1UU9Ga1ZEV0NEWUpjMjFYa3hlaStBdEJrUWhQb2NFK0MvaUQrczdKMVBqdmk5eDNHVXg5RHpxNDVYV1BpN3ZFUkVNRFl4a0p5K2J6bG5BVCtHcm1pTWNxenVNM2IwQVFSZ09oOEhTd0IvaU4rR1NBcmZPOUs4U1U4Y2h2OHpTVWhxbUM2NWRrcEc4YkFKVlovODR0bjhUR0xsZ0ZySXhXL2p6a2xzQUV5RWErUkZvc09RSTZheFNob0ZQenEvbmFBT3NDMjlvZFlMUU5DUmRRalhvekFIY0FpcW1qYTBpSWNmNU4xdXpaT0NJWkZTRWVxd0Q2VVkwbENwdFlEakVTUXNTOGlUU0c0VmpDc05MNnV2WjhKZk1TVmhiRXZ2VmRKYTk4Z3dkNzNPd2kza1dDZVh1dzhBeThmNy9IdFlwQzVVMkVsWjl2SWNiQUsvME9Mc1Z2WVBwenRKa0MraE9RYnVwZDBwenV2dFVJbTNMN2JDd1VFU3N6NVdibEJIT3VIUzNQUm1NS1FKUkxTWURFZnNCSFlOUnkrbHd4Mjlsc3RCYnppUVJ2Q3h3ZGpmZEFVR0NBeHpVV0Z4TFZhQ09GakE5RGd4UWZkWkhNSkpSZTZ6SENDelJQZUlVaDRONWZQNHNQMVFIWjQzczBOc1U0cERhSW1kbkFMQmpLbi92NWNGamVXNHhVeVJHaStIWExZQy82Q3hBS1ZjQ1A4amhzaHFPWm52d1Rtc0RiMm5FRFZpVE1RWmUvYWlYN1lLSmF2OEl2UXhnNW05NEY1WUV6M0I5b0FHNG1MNzhBdzlLamczVVIwZGg0RVozWGVuTmhaM3BkYnhXVDczbnRkUzM1Qk5Bb1lkNHNEejNnN0x2cEpBL0FhS0JadmdCTVgxbjI5V01tY0hkYlJjeUNZSlNWVzVYZDZ2ZlNlUlBnSThCdEM5YXVkd0NnbXVBNmxJLzdjQi9XUUJrQU1aQksrV041UUZ3cWg1QUZZMWM2UEJtL1VlUGxzM25YaVZyRU1wQ0Iwbm8xRFgxZU1JeHZuZW9OSmdnRUxyYzZhYWt1YlZYbFlsNFZsQlFJa2JNck5UYzBkUmNla0dnaG9xSWMyYyt0NTRva1RNd0F1UUFiZWUyRTFpMUQ2UU1ZQzBnQ3FTZVJZRjh5dW1TS0FqcVVxSGlCSWNBNTVHVkV3c1pSUXBEay9zRyt4SVlTckNVMEJSM1p1V2dwc1ljTDUyRFhBdkd2S1BVYWlBd0lLbHdXcFdIUHpQZndXVkJOa2p0QXdUQ09XYjc1Z25vdCtRaFd2d0tucnZuckNtOVlMMnpUeVBUVUF6SVFMNERKa2RBV1hEZ3FoUGtDWVoyM2VIUndCYU54cTJHcnFPQWc3ZW9QWmdBaDREdUpxaHZkVGpUTnFzQmNKWFREQ1JIUjkyTURwWndnT04yRTd3OHBCYXdJekRsb0Q0SG9CNUhDTFVESjQ5UWJXQ3hUaUFvbit5QURzNWUyd2kvS0NuRVFYakhiMzV4NHZDeHpCVW9JSVc4cldvVVdncjBRYi9IT05wQldqLzFpeFR1QmhZKytwejU1MEd5c0VSdHh3NXA0aklUZE9JaGlVQUVKOEEvSVFyU2VWaFlZSlFqczc3SDIrY0NRdUdYOGtIQkM4T3ppRkhHMGhKY0lzWVZNZ0x0Z3ZVcVVTUDlVTUYwUXBqdTh1SHg2c1dnbnpZekhuVThIa3IrY0t4emRTQVR5VERZSWtUcmJ1Z1RBQ1BCV1RmckdyaEc5ZUw5SEtQNkpNK1JOR1VKUCs2eTkxYmlYQnM3aXFnSjRDMUFITGhRUkNWZ1NrVEpROVlrZTRMTlFQdklrZEpvQ09pbEk1Q2RHQWs5VVhoSTRFS1p4OCs4R0dPdDhYcXBiQ3k5b0RVNUNLeXBLMVdjZUZmVXdZd3JjQ29oWDkzUk1zRUg3b1RzQUUwYm04QVFnd0NNUHBVYlJCMEkzRkw2UUVuSWEwc010M3ZkQWszME5jaEtHeXBIRGFKalhldDFJYlUrcVRpOWs5WkpnZjlQZzFqSGtGRXpLR0c2S0Y3N0loMXduaFI2ajFwaURqalNVT29OSU5GQnByQnlHTy8rQlplc3o3NWM1MUZSVGxCb2xiSU9KbC9CcEp4MVplRWN2K2pJMTNsNCtDd29FWTlMSzJSRVZleUowdlROMFBZVk1KRngyVGF3Z3hnak9ZaXhIdFBJQ2tDN2NZSCs4UDRuMUxUZjY5TjA2dmpnVG1VbWhnQzR1SHc0RW8yQ1RPQWdFRDZpQlZud3VHUlkvOHRnczBqSHNoQkZBRkRmY05tRXIyY3hDNGkrQnVLcXl6NmdNbjdxQVF3Wk5vam5jMTFTdm1HSEM4dUhFUlhna01ic3hHNU1pR1lRSlFma3Q2QU5lMzRWSE5uV2NORGlEMWsxWkU0MzV2T3pGcDRqQUQ0Y2ZIc2hNSndoSmc1VEFGRnVmODFnQThNQ2VEVWRzR0lseTVKeE9hSXhMcDJEc3dDc2tNbnNCOEx2Z0FmSng5TndvTXdQcmVJTjNOdlJDN01lTVhPNGJFVHBZZlB2NkNnMXdGaThWMTF3VHJlZ3NiMlVhNFpITWdCYW9laVdzdUZhTkpYTE04cEJOcDl0RW9tTWVJQ2VEN3lyR3psNlZsS1RFL1NEWkxQNUVRZ0F2aytOWGpsMlpHNEFkbG9CTzRTQ1ZTd2ZpSUlaVi92LzVFTXpSSWlVZVhKbXBPQmQ0SVk4enJUUmc4a1FXK3pXOVhXR0UwUlRKQ3g0ZUpFZ0FnZHdIeWZGTjVYekVTMVA0OXNGem8zM29FUVpZbFh5MFo3REdMNzNPN0lqSWNUY2w2dlFDSXYwNFVia1pvZmlXUEQxSStFeVNCZUFQSGJmenBYUWlKSFM1MFlNNjl3MnZML2d5NkJQUEtWdnhhRGhjakVZaFFpYjJiZ0lBQ3N6aFBUVGRScWJHMXlBUVd0SmxoZi9nNzN4WEhTNUFCYktRczFvNmpDT3lBVWlvemViQXdFVFZmUmczNlNZZzNLRzNKTit2Tkc3WHdCTmpkNEhLSStNQVBjYWtpNUhCdEREZWorOWd6akdLWU1NVEppQUFnMjUzNFhGa04vQ0dHaGNWZEUwdmVDazZrNWJjaUsvMXpRZHlFbHlUcUhhNzI1VUdZUURIenVaRy9vbnBCNVlyU2ZSQ1RmVU5HWWRZM25IUElaQUp5RC82Y1h6d0tCb25QY1NQQUZaclBlNFpWd2pqR3FNWHdTaVI4TlBET3hTQ3pxdkQ1cjVhVmdJaVlSSk1VUkQ1ZThiNHFQdmk3RjVNQzcwY29ieGdwa3BBcllpK2hLWXFMcGQ4azRpTjMrbUhwa0txZ1pzbTVoSFBrbFhsditJcVp0STQ3OFQyRTIyOWJ2LzdwUWhBZUtQQnpKZ0ZTWVk2c0NPeHRDM2gzQUtJRDJpamVSbGxXKzhHTEhpUlJ1dmhsNlR1Y0srSlZoSVlNT1VJT1FEVUtaUDhMTE1obWxYQnN5REFoeWp3bWw3Lyt0anZYOTN0emNORWNEanZtRGJpaG5ST09qL2FSZmtjMkN5WjFDR0Ria0RGd0Z4U3FLNXZVSzE5WkYvcm1JUndUN0x4VGoyWk1GV2YyRmliL25aTTVLQndvUUhqZDNCWnM5Zzl6L2NkRnNVYmJLNjhaSy9sdTFFOHd6TytoNjBLOHdHejhEVm5SZUs4bHIwVmF4TmRNTDZSdTkzR2I2VVdXaG5qQmZGT3Jwc3JVWlZrVWhYR0VvZjM5cTA4bVpraTFUWCtpTFlBYStYSjl1S0o5bTl0bUhXQ0ZIYnF5WmlEV29MaUFmQ3pIQ0FkWVlxY212QkZRRDMrRHQyYnNHVjRIcVFhbjBLa1E5ZzRUTzRtbnR5SkNTL3czVjhJSzZMR3h3amhZckZBTmY4cCtJQlV5ZVJHdUN0RVRNWVZBOEpSMm0wTUM4OStCL1g1MXcrYWdLT3dPa2ZkTzV1S1d5bWlnQkF2cUxHZ0s0TTUxbjh2NC91eW9mNzZRanowRzlwQ3hqU2hDN01ZUHdSKzJGT1dOci9EK2NQVFNHOENHVm1nTkpYdC9CVllHKzBQQmh5R2hCTnc3SVRQQkFHV3FSUC94cW8wZ2FaZ1k0UDdlQURpa0FUVnk3ZWVGdHU2dDlvSk9RYzRGRlJnNnZQckYxTUdlWFQvRStnUHFwZzlXaHRTRmdBTytDSWVaM0lzS3hGN1FRZUwxY3p3am0zc3NDTWlDZXF2VG81UzRoemtuMlExdm5EbzZIVm9raHFzTHdUVEMyQU1EMlJlaG5zV0FNM1NvMndmdGh5WkFHRDUzNVhuNVZhUWx3bXVtd20wUU5NQ0ZDRDNDTmN2dTdETWVEVXlPWmo3N2h4N2g1TmdIVXRJczJEc1ZpSWJLYkNvYVZwMENNYWg1akFQM2ZURkxlQlVFbGlnSFArU1NML1V1bGt6UTNyZkhISkFPVUN4NnF0eTBjeWtBZXJzWGt5VVRHQnovR2dhdmhHUStad1BsSEZpblEvL1FPL0RCVi9rSGNHV2NBZG5VNEc0Z2F6REI0UTd5bGpCYnJqZHIvM2cvUDJMMWtXOW1zQkFTWTZGWVJNMTM0WktZRGZzaUFRRXZDU2Q4Q2pzUGkzaWYyMFRJUkdzOHhPenJnLzNpaHFCUFdEQ0xZV29NQU52YjdCYkxTcHlHMVNDUVFGNUFHQ2RwR3lmL3pMbWlUSi8yRmMrdUlGcS9Udm1Gck1kZk9Cbnh5V1ZMVzdEdmlWRWlrZUR4QTFXRm0wWHNoSFVCNXpCck5NR0UxbTZQTXdoUllFMHp3NW5RSGV6YURWamVJQk52akE3NTdwOFU3NFJqTFBPazNQZDRidStmVUJSWit2VEdjdmtsdjhvOUluQlA2QStwSkp2aGtWaEJJeGRUaEJEZWd4QlFOcUprSUFpR2ovLzRuVHRqOE4rK1ZMcmZDYlh3NTRWQkJST2lHd0dBNWJObHZDMXZUT0FKQ2l6VGNZWjBvZ0lCN21ObFpRNHZ0ZzhlZ1lWUVFTNCtlS2JOZGlEY0Nhc0RCelJONUJGOU4rV0pWdW1IUFJWK0JNaThUL21NZnFsNTFDMGJlZmRFV3crd3Jua3dBeTBFNHdsaER4d1RpMERUV0g0dzNFdm9Zei9aSFJWMkI3d3plSTJ3TitucllrVFByNVE5aXBYRi96S01pbmovSWdNQlhXeHB0aVp2NzNqam8vR0NhV3lmS1FLMmMwRVRMNndOSWJvbnV4WERBSm1PM0drUmh0RnVkcmlhYWtWSjg1WTM4U1NaUk1kQXVGeklVM3h1WG0rZVoxNG1hajBCd3lhQS9jd09zc3FtR0VCU0xuMWdHYmVIbWhOR1VRTUJDVWJLeTdpVTBSVmpOY0NTQW5nRWFya3NtZFhBSVZqM0NuU2pESkkveGN5QlRHUXpPNkk4QjUyUjFkeTRhR2d1SzNkQUdrQm8vV0xWb2tlcXNzOXNEdTR4VnlBUFVHVyt6OFIrc2ZSMWtzRXBuM091QUZBMHo0VjBqcW1TZStLQkVhaS8wb1YxWUZmTEIrZURQWU1XdzZRRndRZDJqSXdiZ05zMzRGcUxIWU1JUllUdnM4ZGtqK0hSMTRLTk5jMmRUOUNiSDh3bzlDOTQ2TldNLytJc3NjbnJKS0JETHdMWE5GNW9ubWVCaElaQm5Pckp6T2lSemdNNlJoRGszOWlKYzBob0V4MTNySEM4V2FiV3ZXK2NCVGg3TWlUWi9EcnhJUkhLc0RkQ2RvTlk4UlZIS0FEejlxelFROGU1SUFOUS9PK2NsajRCR1lCOFJJNDhBUlRuZ3JFbjNCeUZqUkRiclBpRnErVVlBV2hDVFpsZG93d3Y4Y2pNMkY0M2wyQysrYjZKdDgxY1hzOW5mWWdvQTBZSVBnTHNRTnAzZWZ6dFNUQkcwSENiNmFIV0xKNXd1a2k3UnMrOEFiU0hUNFdEWlVUcGpTY1hlWWZwWFQ0Y1dDeGdOcHUxYzRRVkVzQzVhNnlkcFJ2Nmdqb3dQbXE4a25FSk5BRGc0bm5CQjFPUXFkMEluSURZQXNtL3E1OGpNTmcwUGdqSHdPODhxbmpqUyt3SlVCOHdDZzdYSUpWUUhVRFFPTGwybmgwSG5hemZuSHhhN2RaRStLWGlaTUVjandvYzN2NmtLa1g2Q0JBTEZoMU1zV1d1QWxUOTlvdnA0QWJmSXBSZzIxZ1g2SHZsMG5OSnJZc0JIL3grbVVnejVueG9Ib2dWTEdzUzN5c3doZ3hoZFNxTEZFNTBja3NzQllCQTErZmlNL09UUUNUSURQakpkWHNZaUQyOXRiMWNVb1Fid3VYUGdjT1F5NkFGY3l0bWc3Y251UjlXaDZ5THZCRzhDUmFiTXBIOVBXd0hPNWRRQjVUOUY1STZLbU1ka3hnL0NadVlIYXZKSHNONzBMWVlvNnhtc212Zm5jMDhZS0ZwSEFUNElMRXNGUi9WTnZFUHMvOWtoNndLT3JPaFB6UFc0V0ZEZldEeGVEbnNrOFZPN2dYNkV3YVNZV2ErY1VsUjhYdHpTV0FxWEE0WEdjcmV3ZDNrN25FUTc3bVEwTzkza3Qrcy9jVkdKcE9ra2Y4MDFoYVZRY1NJcmlFT3pKNWl4Q3c4ekdNY2RjN21CdlZTdk5FTGo5aU5DL01wMk5FRFM5a2ZZUUxXMElFbU5JZXFIbDRVaktUYnN5YlF0TjE0V0l0WUszOERxVEliV0dja0ptUXpPSmM2ZW5xNGJWMVR6UExpRGpSWDdOd0VUVW9KTzBMYWNobUlmRm5Ga3FGR2t3T3RzeHozU29VUHZnamRjQXNVeWtsRHdUQXdOeTdWRTArV01KNkRHK0pzZ3cxemY2c1F1c2ZOOWQrZm1zTGp6R3pLZmx6S1FjQi9ReTlnSjdEM2llYTJrcVlBY3VGUUFoejN5NllvUDA5Y2YzMGwzRGVMVDI3WXlndDN2b0pPblkzOWhJNVVncDhGeXVRUDZzNzd3aUx4QjRIK2VWam9nby9pYjN3MWlKdVBCTE9KVjFoMjhJdjVXeUk3c2FpdVRyQStCUml5dm1heGdXeVdXSWJRUmdnaHpsNXA1VmdRbW1YVUFzc2hpVmZQcHBvdFp5anozbWI1WkdLeWdRUS9BaE1BWDBTZS9zNXRURUlIRVdjck5XR1BPVzAwSDBIckM5Zkh2V1lpREJidk1YRDd6Vmx1UzQ5K2NSWXM4SkFXdi82bUxZaDUvSXpsLzM0WTBPVjVFSmRyalV6R1ZxMkF5SXFRTG5GcVA1VVI2QnplMytOcGZBVTQrL1dEWDk5bU8vakJaZFZxT25VR2VFbzNrZmV3eWNTallLa1N6ckpZMFlEZEFPbHc1S1ZUK3hQam5adzZRUXVRM09rQ1FhTFJrOWptQWNOTTJYSWx3allVdHYyY1NTU0RBekg4c1c0bCtkb0pubnZ1RnN0NFQ2Vkp3dGVnVFNWc1hxMmNZeThOUmR3ZkYyL1FRZ2RtZUFndW1NMzhSZWpKaEtWSFZ3bDcrOVFwaUFiemtJc1lJT2hFTS90YUV1b0dTTUU5Vk9zZXA3TE5nNDBJckFYaFhtNEZrckhxbnF4dERCejlCQjZoOUVIQzRBbklVajE5b1NWakd3b0N2R2lldGQwVnJ1akI3Q3MzMEUvZWZGc1RnVDVDVDhZeFBZTHVVR2JjNGdWeUkrb3YvTmI2Wml3Slo0TVlXY3c0eFdhVklqd2huK053WkNmaWwwamJRWFlvOTdwWWZnZ2s1QW5VSnVLQkRvVllBSHNZYWdyZXNIbCtEaXlXNXNjQmVGaHdTYWpURzNPRkU4d1AwdmF1YTkxY0VpSWRjSzRwdnFhTU1ZTENCc0NYMlAzakpBREwxMFhtQU1nUkNEY1Jnc3VIZlNXSjJnSXVMZ3Q3SUtlM0NKQ2UxM3dqdmpiVUNwNGFxaExaeWpwWkpqWWVRTk1ldTBrRXp3cTRkeloxTGV3STRaVmJnb1JZVlFiUDNkQ1c1ZjJnUVJjWGt6eUlBd2R4Vi9RTTFNbFVUQWduU25iUGt2QnNERHhjeElsdUx1Z0cva0NOZUpManJ5SS9JQnBadlZjam1NM2dna3lUSTRWek52bXliY0NGcktTeUlOZlJkNmcxQkZFcVQwcVl4NENkbTNqMXZCeXVaQ0dKbEhhdER3R1JjRkhyYktaVlhOR2pRZXlKdjE4ZUZNN2lnZlhMQ3l1WWc1NTgyRndRRnZrTHVUV0JnMElwYVhKL2NJdDh2eDYwYmowekc5TzdTZGZydVNYamFFOU03KzNxY0dUOW5udENMS3pWWWc4Q2J4UHVVYWZsWTAwckdwaUFGUmdFQlRnZ2FpN0FqNVRDVmlYMjUyWTlEU1hFN0laeTVCZmhKNTR4RW0ySTFORTFoN0VIYXdMd2pBSXArRjd2QnY1YUxqYVB4U2RBaDZjdnJNTGp1Vjg2ejJScFJldDhlZzhNRFBhOENIQ3NBUmpTSUE0eG50U2haU1B6TXRld1BsUUNXRGd0bFVpc01rNlZ3Wk5RTEMrQnVSUEE4cHM4SXdDTlIzcmkxdWc5bzBKeWUyeWQrMlhWbWpVNzBDUElRbUZoa1hneHdtMWFMTzdJUE9WUnJEdThGREs0Z3JDMDViNzhnNlMyL3FMMTcxSVpubXo2dEtwa2VrcUhDc0Vpc1BiYU1pQ0Q3eEtUOFdvWTBJaEdHU0wrWXpVUlRJUlZnNHZ3MjlmRGo2QXMwTkVHdTErbzlLUDlQenlZeTN5UWMzMTd3S1dkTmVRVHNvZElJaU1SMTNGL2xDb1d2Szh5ZHJ2TmFZRUdYUENHMHpaUFg5NkFwMllyMW1CbVdCcDB5bE1tZ2ladWlzUUdLd1ozK3AxalBtd2NxSVdBRkNCbjREU1NLMUhaUElXbmFRK2g0VVB5V1U3U01QL2swV2dsZE9IdU94ZFVCM3QvZDBqQXZFNDJCL2ZTNE1EWkx4RDRKbHB5ZTdLTjhXWWdrNGlBbXYzd0tJZ3I4ZHdDQ2ZZaVc1MTFFem9lTk5wRjhKNFBTSkhRMEY1a3hLUGpCODVqREFuUkF1TjU5Y0pEWTE1UGdYQjloTXM4NVlIRUdlQkMyTGhxaGZtRCtPejdTcXd2aEpUMWpFK2MzNzA4V3VlOUVhZFZzNEpoR2RDK1UxaDFrdHk5S094MTlDdENNVlhFcFp0aXlkWTJBNGdtMXZzQTdWb2F0L2syNGV6VHhodkczaXhYd2k4SlpNTnlPMjRuWEVRZjFMNUhMK1lmZVZ0OEluRE5DT2ZRQnV1WlZTamQwK2lad2s4ZDJ3eEF5TU8yejRnZkhaSGJNRWhDQ3R6SFlnRllURnZOMG1OQzFTTDJWaVVPdUxJSGpOcmlrdzFmU3daaVl0MEgwQ293dVlIQXJSR3dZQkVCc252eWxlYU11WnpIY2w5V2VscUlTeHl0dzB6SG5ybi84SlprYVlGSElPTTdvc2pEVEhENVpFUlkwZk1WRHYyTk1ISUEyWWlNaDIxOFlENXM2MlJuV01uenRjSjM0SzJRNUdEUkhlcm81dzJhcXZwd0VXSUZIQ1Q4L09EUDM0WlhFd3dlWkRpMExDTkZFMnc3QWVnM1dFYUFCUElJKytpWEI5Q0t5WU5LWE55VFNjaUp1UlRFWnhqd05ZdlppWlpFYmlCWm8way9uQ216MzU5NVNGUFhWdUFUWXFFREVNZ1c4UTh6dzVEL3VBaVk0Wlg1VmlnVGRtb1JUOEFpcGIyZ0t5NDRadWFLQ0hNQTZpdWZIMGI3WXZFT1llOUZ6MkdjZ01IT2xpbndUbENBNWQ0UWM5TlgzbDA5K1FWRENRRHhhckNvaGs1QTd2S0dqM21LbHcvSGVPRGxuazkrZmdweTV6MFYzSEM5WWdVTXVCV2hMVmtqQkJnR2VJUU5WOUFEVVdQSmlRNUgrTXhRMFVXYy96d25oUGRnSGNYY1JSRUNpVEZyWVhnRXFSdUhSdlBpeGxjTm5qS2hCSWd6c21JUUdKd3djNWdzdkh6aGlNUDFnTHY0WlozOEJUYzM5L1pJNXlSSGFsd1c2R1pNSE9Xd01uYURHT0p0bGZ5WUpoNkk1NGxybm05a3MxYzFIY2s3WDE1aUVhSEozTDRURjM2eG15eGt5M0I3QUpXd1Y0Q1FETSt6Qm84UW9GS0tDQ0lQOHI5ZHoyazZvaWhaTW90VmdGR3ZSUm56UXA2NDc1bXdsamFNb2lnblBkdjR1dktkTFFIS1N1Y2pVcmYyMHZxU0d5M0FsUUhqQTVwa3p1Wk5PRzMwSFYrUGVqZXVUM1R5eUo3dzAwTUZvMkFjalUxbS8va0tBcHYzQmRTOUtTdFZMSmYwaUNCZitTbFdWdUxWWmhDeDUzbURxQVUvZ1lkYlFXN2VmcHRPV05YYU02djJUZjRzK1NyVUNtcVFpSUR6Z3BXV2JYRVpzU3lLRHAyVkczd0dZVDZaaks5ZjVkVmRoV050d2NaTTBTS29ibmh2REI0QXdwRkR2TjVILzRHZUkrekZTVTkwWFdnZ1RTcEhlQWtoNUJ0MDVoMWRvbXFsRnR3VWlFUDNZYUhxalZRdjB5TEZucFV2ZW9acndoaHYrMURCOE93TXNDNTdpeERxMzJ1bGRpdDRiSkZvS1RGbXk4U0lPVTJ5ZU9wY0xSeEoxb3lxV1pEVnFrWlc2MzNNb2lyZGNPQnMwY0Jqd2tPclQ1L3REbnlHOVNvUWpYaEphVisyV2U4Q21GczN0WEJiVjJkeGhwV1BlTEY1U25NWTFWREhkcU5Nc2FGOUo2UUpFaGVYYk5qUlNiaG1PTnRVN3JKNXNEcmk0L1FrWlhsWWhmaEE1UUg5dzN3Vm92U3pGU0Y4Q3ZscVFvZFhqTXM2bFRaT3E0OHgxQ28vVU02S0dxVHd1Yi9ObFhPRHkyYWdSQmh2NWkzUi9qYU5RRmJPcjVkMkhVanIxc1QwOS9FTS94UlhuYVFqTVJEKzFRamdYSEFMbnUvQnNPUnR1QkRyVjZ5bXp5Y2ZjcGRML3lERzRaVkpiYy9WRUNwOU8yNDJaUUZnNUlkZHNSNk1PSWVFWVlrdzZCaXlyb1F2aEpNcnVqeXd4Z0MyeDZaRmFaVXM5a1YrY3VHYldCSGI5eWJQdW9xOFc4ZTc3WlJCRWNKRVZPb0NBSmQwM2Q5SjlBS0VIbHdQUDFWRkNLUytaZ0poYVVITHQzajRzVzF2MndCUm9KSFlQNHVCdVhtKy9xekxFMWwzaWswQnZEcG8xMHpOUURSdjZ5Y2FQTmFUd0dMaEhnU1lTTWEvQ0RObzJYclZjWVgzZ25kZERaNVBJTVNJWHV2aGV6NUgwdWhucUhDc3l6d3ZKdndOM3JQZXdTS2YyMVJFVmtmZWtINkMvM29BdXdzejJnVkNZUzhFaXdycVlBTFpKUE80dDFrMmNCTTFpSHdIWVMxWDl6VDEyMUJZMW1ZL0hrU3RGeWUrYm16aHRscDJ2ZVZXYjRiMmVVTHdKUXRROW9zVWpCOWVDR1VLY0FDYkg5Z1FjNGFuSU1uY2FKU2xYQXQyK0x6UUdtRXlXdkVIa1BZT1Z5RVNZNDlKTmZ4cEJ6QVc1VEI2aEx2Q1VWOEVuR2tzcEdTRFJKeTRENzlGQkpVNVVlSXN0dm1iRXVBZWpiMnZwdXBOTWxxVFhDMTN4enFnVTRRRmx2UUoxZE9TdVMvTEpJbkZtRVVsRElBVWNIdlRXM1Z3ejduM1dsZ3NrTmdpRDZJZkVleTlUeFV6cXF0WTN5WXZoQVpjaU4rZmJrd3JlVEVuOFFFd2VIc3dvM01iZ0xjRm1obWlUZ1JBc1lCbkExNWs5QUZmWEdud1pWbFdiVWtaOGZ0VTh5SzRDV2tLcVNldFUzZUFJSUhRc2pBVDFRMko4S2dqRGZSTWg1Mjc1Mnd5Q0FqUFB0WDBsaVRlTnhvZGFkVjN0dGloRG8zTkl1bTBqREs1U25lRkpWdTgydDh5VGRkL25tcjZ0NWttSURLbkMrUElwNHArM2g3WVdjNWEybzAvUDJodXYvSGFqL3gvLzNyOUp5L0VRTCttdEE2N2JvczNRZHg0OWhlc2N1Tm1leS91RDZXUENsRDBnUkk1cXE0SlpjR013ZWtIR3F2VW8xWlBxUnBFUStoM2oxSHZ0cWZzNTBOQ3dKeXpaOStReldsNS9wUTAyK0ZRb1JrVi9QTXdiczNYdWtFTE9PcDlpaHlOMTdDUTVGbnVhOGZXWlNtZWFGdHRBU2xUa1lZclJRODFLc0lodnhXcUFTRUFnMUJkSGdpaWtwRFd1R0REWHdsaGZydW5pL2hiOXlsUXRHVFdnN255VTFhUjBLd1pOZzByVHMwMm12c2hVQkRGVE81YThFKzRHcWo1dE8yN2FWZmYyZ29zdDdIcFM0SzFRWjZBNXh4Ymg4cENQc3gvVkdMUFQwWjVla2h5anJiNVVKUW1TaWMvVndhbHJMdDZyRklEQVA1aFBOalVML09CbW1sQWZ0V0FOSi84VndIeHBPdmZDQWg4YjJIZjRBdUlaR0ZFQmxEdWN6eHVreUErckVKOGdrU21UVWpSeFk1aTV4NTkyN2tRWkNXdGV5alhJRVVHem1yWUd6Wi9lZkIrRTJxSXcvM2U3R3UwSCtXenlhTGUxNFp6eGVHaDJwdWg1emdzNGQzREQ1czdvaDFnRmphMUlpR0Mwc0w0dGdiSVVzSVVJVmlKdXdkdzdjeTB6aERtbUt4bEp3eG9SZWpWSXhJTVR5L2tpSVY4dm1MOEFrNmdWd2FGZEgrSVpoRHI1L1NYWGN2YURzRExpb0k3OW9GSEdadFpIeXR4Tmh3RWpJSkM4dGJiVnVPMUxIMzhpb01LQ09McE5hViszZWQwK2c3NFFyVE85QVVvdVdVVEdQYUNUSXROaThlR3E0R0gyS2JjRlBIb1llaExrTERKRzFWYUw4dTh4dnNoblR6NU5tY2EzM2RhUzVUTmlzcmdwODFMck1PdzJDMTZWNFFMbkRkNS90ZW5EUmxwWGo4VjU2bG15N3JZN2gxZ0NjTk9FSDRYLzRRVVBmT3dKYThNOXZqYUhPUlpTTlZPN1pQTy9IaGQvSWR0dktzbm51RldBVmI3djRMbnRESmNYQm13OXVoVkNSYzhyYmZYZ01BeThlVU1zRnVxa1BNRnRWWHpBckNzZDdFMEl3UjcxQklYeE1valFTZS94dHZpNHpETDU2MFFpSTVyTnUwaHhnOTl3RWFOcTJjQ3VjSzVuNDZCL21wQW8yV1BLbTdkS1U1NzVsRkJINFQvRlZjMkZ1MHBlYndKb3FlV0ZacEQ3RWV0UUJyU1k0M3g2ZitJbUNDS0ZwNXZUWTBvNVhrWHZMb3BxZ0R6ejJwS1lqTXFTMVVIMk11UGhMcHZuUHdvdDlId29wb3dEdUxhT1oxNEJTQzJGS0tCYXl4Z0RTNE1IOE0rSldGUW9LZEI1dUJIWlo1eVNtSjhabU04WG1MRllMeHNPcG9qdFBIZWZNY1FEa0xjTGc5QWNYdW1JbVNvMmM1WFN6Mm5hWUZsVVNNQkJhT1RRV2VyMEVHSzBXWG5xWCtiKzk1b3d6c0U5YmtsSkRNYWg4eGM0eWJYU2dSbDdnM2ViRGthWmxUYTV3NVB1MDdaT0tUNmQ1dndYYWFOTUQzQ09ZcmZQalUrUGRTZnZGSHhYTVFTR3NucHRsTEhYTTJyWG40dG5FUjZvR21lNm5FeEd0T2FZRFNOeFZidnVvblhZTndnU0FJeTEyTjVWTFJhUHhOMVlHeFFMU3dydktiNFBRYzF0STE0VHFmazcyQUdMbTlESDI2Q3FWaVk1cG5DbGMvRndzcHYwMGVCTlVmY04vanpZK0R4WEpMYlFtVFk5eFRQZWRmY2tHbnJUdEdaWUR4MHoya0NsNm1kblE2UE1OdGRUNEtubU9GNWY1MU0vU1hEODUzV1FmSDVCNTBQTmpzTDVQcFRmdWNIdFgveU96L1puWlBic1RUbmorek83eHdPUWVlUDFJN2lENmVWZXVJVWl4VjViWm4vVUxqSTdaMGxxRjhMbG1FWmlkTnRaK1l0c3drU1NNVzdad0xFUEpIaFF1aDdCSUEydHdTQW5Rc213M01GeW0wa2lXelRHc0JHUE4zRk1sMzdraXJ4TFJNSThiVGFQVzBjRjVRTFhxWFlSekIrdHAvY010RDUzdFk2dlRhdklwSlpQeFFvUW9ZcmdDbDdPcFdHNGlLQXJhMEM4ZGQwWlU5OWlGMDR0NW9VcndoV0x0aHNBRFlRRW9xZExRMlpjMC96UlZ0VFdxemE4T0FwWUxvUWRoUXVKTmFnZ2d5R280U0lpSjZqSFdtQlVQUFVzeVRCUkNRaFpFRzFWOFJEOGZyY1Q4Ky9mVEwxZ3NtaVl2QzNrK01paW1XUGRqMElGVkN0OWEwYjMzOExnc1B1cldIUkhDclZFKy9iT0hBVGlyOFhjZHhOVHJLaXFJYUFaeGU0OWxkcUJwRzVlSmoxTW45SXJHdXY5U1BkY29BMnJmQ3lSV1VvWGI2Ukc2TEdQbExQODBhQjZWdERsaXd2K09idE1ScSt2T1JDYU9GVEl6bTlaWDZLck1kYW9LRTIxQkdoUXI3UXJVUmlPRGhMRWs5dUdDUVlkN1lSRkNUQllma1FDL1E5czdNU2lBVjk4VmE0R0xhRVVXemJxRXU5MkdIb1U3Y1lIQ0grSnFqRUFxcUVacHlZejVBcysybndlalBhYjNES1FpSllSejB4UHVWVWJyRnJYN2FkRFNuV0xVZkZOWWoycGRzbEFKc3dock1SSG1zMGVjeUsvTEQ1U1MzOTJwRG5sWFJGdDM5aGs4bVNIbVNNS1FNN1pLMW9iVGJwM2dkSjgvM0hWNno2QnAwaEwvamVIWjVvRGNHOEwzWWNpOXozOTR5MUlUNXJRN0Z3dGlPQ1dVeVRKSldMK0N5TmVINFQ0bUNiU0R0MGVLYXY4V2FvSS9qM3AwREtKc2pNWlNRNGhiMittQ3BBc0N3ejZtOVZaMjVEVkp2V1hac1ZyZUV6Yk1VUExuRFoxNzM2R0NZSWhxek5YbVlZTDN6Wnl0TGtvWUt0RlhxU0xjM0VDQURIbWx4cmtqQzN1TGxKRnJ1c1pVOUxMQmtWdW9zRkI3alN5VzZDamZaemRvaFZ3ZS90Qk9yN0h0YXdveEllSzdaQ0xtWVBpTzRYcTJNdTFLUks5amlHVGNQQ2gwbWZhb2JaVG5YTDE2RU54ZlE5L0FvRFlYZmhOWGcwRy9WWThkaXUwL3FTMlR2N3A5RXFXQkMzWlhkVnVBZkV4V0t0R043cStaTHVhOWViZFMrSWJNaWtXY3FrcG9XTjdPVXBhRFNoUzR6N3FmZ2IwTk9EMktQR08zUXA0Mk4zcG9ZOTJkRnBDalFDc01tWlM4RCt3UHQvdWlUWnUwNjBZQzlZZVZ1SDRQTysydEJEbEFQV1E3ZW5vRU8zaGlYN0c1NXJkRkgxRTFiN1pRVWMzZ1d1NG9nZjhOWHR0UW4yQ09HbllJY2phOWdSWlB1dzlSVjd3RkFrbGllS3o5Y0dlUmloM2F2SWFIUzA0YWhDTWhiYU4zMGVTOGNCVlRwNUxIdk9pQmdJTFdMR3dCcHFxL0NjaVk5d2taOFdmOW1YaDdNRGI4cUxoQm9IWmp4VnREMFpBbmpiQm8wQ1p4c0F4bUU1Q2xTSEJidWYrL1RvUkdNNGxwMWh1QnFOODBGS3R1RUFEZFIrOG8rTHFJcW9RRm5jbGt4M3hWNTJSc3JDUHRpalU2WnNVZTVUOW1VaFpUUnhpeW5YRSt5MzhyejIwK0tFVzBOajJWakNZdlk4c3YzNUw4TmhXWitDYTZYTEdra0xEZ1BCMUp6ZWJTVjBoUnR2RHpHc0ViVHZQaWVQRmsvTjR1blJ0KzNKVXNzeHd5NDIrMEJHb2NvdnNZOG9CTENkcy9JYnptRW55TkwydUVlVzA4a2hoVlUzRWZ0dUFBVC90a2V2eXVFUXdkMHl4dUhCSXZZUjd0d3FCTUNUK2Zna0czcnM1Zy84UHhGWUhQMHdqVmVZU3pMcDlVWEFBdWpqOTNEeUM1ck9qOXdBU0ZQN3dDOWlSTUk0dCtWWEhYTzM4T0o5N2pRVml2S3djK0NETFRsT0FXTTB5OUhXaFNMSEpnbnBucHQ5TnQyMkV1N1hJMmcvMktKcDJ4VWdKWGFxQ3FTUFI3cDJPQ2RvS1ZLamdhWGh1ZXlHeDVreG51ZXJnN2ozdmQrcG93MFRVYkI0anlTQkpPU2paWitiQUx2TVBVSG9nS0o1aXZQeDc0YndlL055SGxoN2ZpWjVnS3JBNllBd25UYWRhcFUydjRWZlB4anVSSlRBMyswcE90MjM3TnhwNEJyajhpSWRKV0VkUW42SVlnNG13Ujc1dElEV0E2N2krb3pjSU54STdDSlhJQW0wc3ZCVW9UbThBS082VGxVUUgvQzZTdDMwcGJOaUdpeURoWlgvZWxaaEpUR0x4NElFNXg2d1U1NVc1UnY1WittYUp5S1hmVEFCTE90V2NNR1MwWjNvUGtTZ3hSaXdUbFEzRERFNjFhTU45Nmg2aEFQZ2oyZHBRRFkxUWRqQ0ZadU5ZOGw0NWtnbkdhQ0RKclRjUndWYVQ2NFI0OGNrclN6NzgxL2szR0F6cHZMV0N3STlaUnRRWkR6Z0JrQWdyN1lYWTZOV3dVdm1NenBHMXArVDFRL05BN0hIUm9EYVJKTEduZ1dIMy9GRGEzdUpIc1JLTFRCQ241TmRzczhQM3F6Ym5neUw0SUlWQVlYd0xzT3hwd21lT2cwYy9iditqSTVRU0dUSnpiSk1BMnF5TkFEdTlKMGdsODVRZzV1dHVnVzJmV2FBQ0ZXdlJ3SDlVaFI4QVdGekdyLzZHZ1JkQzltaVozMllkU0s4WVVESVUzUEZKcFd3UWJ1QlRuRXhmdFEyVG1CZjlzT3FPQnJrQ01NL3JhT0pSclBHT0pwRjFnKzAzZUplR0ZTeHpoSXo4S3dldjZ4SGtUbEtKVWxrVWZWbko0ZDUzZ2t6dDE3SEF6eEVzSDJReFY1Y2F3cTNLTkllUjhsNG9BSkZBK2dmTUx1K1o0b0k0R0xIYkxScDFyaVlQVkc2azQ1c2lmK2ZjYkh4NDJYenI0SE5RbVRzOGJzaVVKbXNsK0g2b1lqZGRQU1JjcFlkM3dMblBvVGNabEpMbTkzL1pZVnJxbnpPeTFYYVliYmpoYkRHK3NZbmdPcEpubityaXRmM1RCTXJzSTNIRG5tRVlCcW5aVWlDTjVFaGo3S253S0I3aG1wZXJLQXpaajdMV3VBY3g1QmVtMG1zajBBV2xRcFcyMkdUbWtJeVRadGxUcEUwRE51S1htdFBVM05rSVd5Z3lWTjFvM3FhMDdJQ2dLdHNaNTRPUUlFa0tGYnJtS3QwbGswd2pKNHBRaEZvdFQyK1hpekcrT3hiclF0VVlEWHNyVm13aG1EYk85dTFnYVZxalNuZlhCR0dVeDNZMHJGUjhHODVFTVZWVFJDdGFTcnlqT3F4aE9OTUFicWpmY29mOUwzWlJiT2t5WTFMZy9UQnFXN0xmeDlsMXluWXU2ME9PcnRtOVNxYW5IdTFkclZWbTJLUlhvbnZJVHRtYjZjZkZKYlNOckdJcTNqWFQ2NndudUVocHBEdWRZSHdkN1lCOWtXOXRwb0pPOXU1UXNQWGVMNnVCSUk5SUlvZWpOeWhBTXNVRU93YkZzSFczdmRKWmVFaVA2TVZ1R3RVaUFYTWR6SW5BbWRwNDRkYXg3L1hQL3lyOG9mcmYxei9BSDVhT0dRWk8zYk54UklkSDV1WG5SQVRQVWk5WlRYYmltcnpEY3NUZC9UZEFoSnFzbEVYTS9Ga0RuY2hkanZLeHNrNVlaNUUwLzFjNS9UYU9zenVTSkxRR3NRN0d5LzUzRzNsYW5Ed1RiV0hBbGNmaXU5UkZwYlppNTB0M1NpQldBNVhzRWxhaVpRL0hMeWFFaWNRSS9CT1NNYlZiNDlSa3RWUU5zZWNtVDVJWk0rSmFtK1lKeUxXWk5pRmdXQml1MzRkNDdKY25UQVNUZDNPQlZYRFZ6eENocEpWaHcwc1BxTm5DOG5QSUZEOStINXNuck43RlNUMllvWlZPdGd6cjNKWXh5MGxkQnBCOThEWlFUaEh2WVAxRVYzTGRSTVorS2tkeWRtRVNMbUtzelhnbnVneGpEb0hsRitIZUVHUXVoTXVjTHNWei9URDEwV3FUN0pQTUh1QXdHdXM1andkaVMrV2pVcXI0eUhhRlBTRDFSQjI0WHkxSWdrc2NKcTJYenU4SUp5WStrMC8xY2wvMHA2UmNlUTYyQVZMendGK3k3eUpjbndpVzlCdFdQeVFET3ErQUNFeXRXMzkxalFMalptQXZpeGlrbDlOVzdac0gwQ3VWOGQvbmVGVUwxaitUUnU5Mk53UDdvMDltUjA3ZGJiM1o0dDJSQlNqTTR2VlpjK1pSUURsUmZ6TmNkbVJCYld4bGZPMFFyV2Z3WE5JV2Q0Z3Z1eGNFakcrM0VVOUpKMUMydXpwdEhKS1FoU1ZDTTNoZDZETnVLWFhadWZBQVZzdUFCVGUzeDVPSWduc2RscXhseHpnWUYxQjFiV0p4T2FWSWJVMkFGMWw4T2xjbTJVYUpYSjlkYlAvN0g3QzBMdXBDOU1OVDdjc2hOV3A5czg5Rmc0b0tyL0tmZ0NvaFBpckVYbWJMZDRtdXJWaUd5ZWRhVG85UmJKUGZmd2E3bUg3RFBBTVM3RkVYckUwenNnUjFOTTRNMWxneXJlalJDcDRSNmd3R1dIVnh2VDh1aExXcWkySDZCdEgzamlKWWxybmlac2NvcGd5d1lLWU02LzM3cnphZ1FoT2F1R3VzUGVxOHM5bXcrNjFTaVVvMVFRZHQzdmVuR01oeUdLVTRaRW1oQWZrKzNLNGJrdmRMSWpaMGFiSzk1eUx6Mjd3TllzTCsvUFlEa0ZET1BPMDhsU2dja2ZWUllkNVJ1dmRVS1NYYzRsUWxJdUFnM2lBTjV4Q2NTcytYK2dBU2hqTDZsNEpLQXBmZjVUWHdZS2pLbTN5M0Y5aE5lUEZPOE83N0d4MHlvVkROTXZIaFVBQThQWEZ4OEVucDJPQXludFM4Q3dpYTJkRnJ5UHZITlhHMzFBVDRORlc0a0R6bDd5T0VEWFVrK2FrQXU1ejZoRTlNTnNxeVkyNnN5aTF2OTBqVi96YjdoZEUyazNzUCsydU5kbXoyMjR6NU9LTUtRR1A2aTBRS2tRNE8wS1NzOEtTVXl6RForSEVNemRFMWFwUy9lVmFlem12QUNPSHdyeVpDMjRRRUhBQTExMlc2ZUpka0hBN1dlUDRHWGxrU1h5dzZyYmFBRXVZUXpzTC9rNEpHU3RzeHpRZ3ZteFBzRnQ2MldCdTNTNTBWY2lxR3lyd2dXYk4yWDZ3Z2Q0dGNXQlg0QmI3Sm1RRHNEZHg4U3hzczE0ZFUvQ3VNRnVZbkszZWp2Y3N6Wll2UUxOemc0N1VPM1VoK2h3cUU3ZURaNzluZHFtZC9iQXZxK214SEpRWC9vL0xvcG83bjJGbmZKbElzMWpPWExQSVd3NTJObStoMHBsZWwxUGdMSWgrb1lKd0F4VHgrSWdjTHdwMU9hdkZnR0Z5eGhQbVlwUjRpM1hKYWFObHg1azBaNEZYeXBjK21leGFhU2RYeDM1VXMzWmFwNk15VzlXaGxtbktkVVlJV3REN2hNK0lZU1A0OHRBYzVRSFB0bjhtQmllRGZCNjZubzZNV3c2SnFGM09uSDNzeGMyNERCNXAzUXlNWnpZSFhrQTlVd0lSN1ovdEY5cTJtNTRtYW4rQ2xucTJPbXZtbE01MEJ3UWtTd05OUlc1SFhqb0V4Z2hKUkxKUkhSby9sYVE0TFNReGVycFI3SkRFZSs2R2ZIcUpLOEVhV09rM04zUjdLWjk5UnFma3ZwamZ4RGJRNU55OFF6K3VGdS90ZEpkS0dGek83SkNrVFlmdWVZUnAyOGMwTFh5Zll0eUsyT0dOcS9PTW5LNFFQVDY0dHpIZ3NnRVNJWnN3WXRUZ2E2LzVzN21aeW5JMFMvVWRIUXNZc0JIVHVUU2RLQlJNdnp3cURYQ1VpT0kwcEd0R3UwWXRPQjIzZzhMRUhZZFJzTVVPUWFtOHUvbEtMT3pHZ1pGS0VLQm9DZ2tLbUtFaGVxSG9jRms4YkwrVWZnTkxtOXRHTWtkTHdSNnhrOTZ6aGNOZVI3ZnUweDQ1WnhqbEpEc0J1MFIrczJqWC8xTkx6b1ppejFmemNoSno5QURqek9PREhTRUQwaU12eldNNUdjQjJRUGd1MjRjbTZoa2JDZWRJZWRsbGswOCt0U2NrclhPMFZoTkJiWDk3MFU3Slp2OXpXbzhhdkpYTkJhQUNYOTdYWWlTcmRvMVZ0c1ZBZFhyTlorb0FMa0pJY203SGVySXQ3Y1haUWV4TmkrdXp3UkFQRm1XeWxBNWNsOWVac0xBU2V3RGZnSms3YlRmRXRWbjFPdDVvK2xJeXR2ZGpVZjNLWUlCMTVSQ0ZibmNMaEtmcDJVb0VpNW5TaXpWbHQ2Sngvd0ZnSzlCbmk5ajRPN0hLbysvSFV2VjZjcTNCb2NyMmN4UzBQSWppNEJhdTZKd3FvQUdpdWRPN204cXpocDBkZHc0ZURNeEJZM2c4a1krWTFxM09NanRuL3FmSGMyRmVSRE45Ny9ESU1UTWgwUGw0dGZicmNmSUk4cXplVmdEY1FQSEo4NWc1S0k0RGFmOWhNY3YxK3c5OE5HNzJSYVVPWEJEVDd5OWFoOHZiclBlWWFIUEhCNVV6VlRPWTMzUWpVQy93eE05QkFhZGUvdTRPaFNWc09oSHI2VTY3TytkVzJBb0IxU1BISXlTeXd3Q3lyamYvaWkwSjVtL2JDUVJpbnZHb2U2eHBldEtxZVpUV1o4dXY5QVhGRGxOQUhIWTFpRDNzOXB1QUNmbE01UVh4NnVYczhlZE1NWUNQRFlKUnNlKzFubEUzZHMxdWFGNkFraVRuTmNCaWJpZHh2YTcvR2JOaWxzZngxKzFDTjRUVEFXRG5VYlE5Yy92QlhneGJvNzBOSjErelNPOHc3V0x4Ykhld1hpZXVudW9hWEJmLzFmdTN2WWdPb2Iybms0c2M2ZlhaeEl3OWdPZEZlRU14REtDc09SanFNMUxiL1AwUjl3aDZqcjd6ZUxXajhzcXBLdDcyb2lDV25MbGNGWU5nVm1nZVRGaGF0TTZBcmhid3ArYnNRMnVLQUlEUEN2eisxTXZvOGpxSHBYb1YxcUlVRC8xd05jY2RqWGJLeTJFT0NZV3hQZk1tSmlBcnBzV05udlRmWjd6M0d5Nm8yRCtoVVJwSzBMOXF5aGN6UTc2SjBLemhHVzdXWFlvSk8zM3g1c3VGY3dUVjQvZ2pPMm1LUXlUM0dWbnQvRG5JdlBVelV1Wmh2YVBkT1pLL2diZE9xLzhRUlE1eVFXVVRsOTJrWmU4RWEybkNEUzk4QVhMSDJFWFZwUzEwNFRRdlRST2JNQ01IK1U1RnAzbDRxMmF1dHdISkFXdElEclJHRmhhYlJBaDZ6bG90SGx0dWh3RTR3b2FWY3pqMjd6cVZ3OFhCRGxQckJXQkRkQTFGYVBTUXlmcVFHUnlNTFE1WHVOMVlEakV1am9TZGlkZHQxcFBkVzZaeFA1RFc1M2FZNXI2Y0UxeWNoK2MwUk16WjA1cHdMMkFTb3MvbHBETXZkWUdmNlJ5UjhnYzQrVElOem1kbVM3a0o3YzlqeWJDZWFIY3JLMnFnc3JrUGljajJlTnY4QkpvQkJ3bm05and1Y0pabzZkR1JIaXdnbE1Vc3VJOEZXWmFuZUk1NjBydVpiemcxQkRxMENyUnRXcGp3T3BqTi9DNFhIZHdTSU9XeE5HUTY0OEdwVit1S0VESWZyWUcyUXBCT094Mm1KVHZOVVlMV3U2TzN5K2VQY01DaXVMMmQrQ0FrTCtpQ3JVTUVESmgvK2Rna0R4Q2N6U0JiM1BsUnZGc0RBWDBPOVpTaU9zbjY3YmNucXRueFZCMnVQWkpqbTBHYlpZM3hoZHMvczJRa3E3TVdJY1QzR2VOYlljaDViL21QTzJXMWxtZVBWZzdkRGhNSjAyRWJjOHA2SVJibHVUdzJpMDdBNHo0cmZOUkJqa0dWSDUwemI5WWdyUTd2TVZVTXQwSkVKOGhGNmlDYjlTS0lUV2hiU2VtYUxwMUhkcEFLenppcWgrakJJOHh6eWJ4TlVnNDdUTTJUZFd4RVBoeU12ZzdaY2RablhKQzlpd1hNR1g3MGRzZnRvVDZSTXVoYWg3bzVFK0FJNHRjeVdCYURuNW1KUEtWMURucTVYeXNFaXIwRm5TdUtaNzRIUkxQWXJVMGc5c2hYZCtPMys0eUN3N0lrSndjZjQyRXEwdEwwUFRFL2JPSEIyZVoreTNWc2J1TzBoekh4NGEzWnJ1eGdPRXpiVG0zcjVtK1ZkYktzMytJbDV6VENWSTdzYU03Tm5ublp3Zko1RWpSTzlpS0FRd1RaRFdLeFdsOTN3dUZnLzRhZDVjRmF4RE80N01PT2loVnd6c2c4UisvenFpM3JqemJOZ2RYUm1tUkVhWTJuNlB1RlNqZ25TZllRem9tT2ZlUVlCS0xNcnZrendjN084Wnd2eCs2ZjRmWVBCRW5jZUNWS3o2bFdUYVlybTIycGNUUkxFZEE5MnF2MU1jNVV1Q0hhMi83MkJSc0JMQjEyQUs2SUhwUEx4clBmNUJ4Y0IwYlplQmZ0RkxHVXpFY0I1RmRldFUzMkVCZkwzUnhmaWJxNkFQSVVyYjYwMlQ2ZktkS1F2QUF2WTQzdDVxMDJ5Y1Y1WU9xZ1hQdXNERFdyOVZxTjhKWDk2L2tpMklUVlVEN1VZVm9Yb1BUbnNqMy9idHlDamNZaitScWN5enFOeHk0YmVlWGptTW5iVTJXZzR4cUtyL3NkVVgyS1FLMDJyc2V5cDd4M0VKK1JDQzlmUUt2bDVCK1JmRzNIbmRzUmxBYTNRd0FJbVYxTEp2ZWU0dWhsUWtSRzc3d0pLWmZzQ0szek9RZlVaeXFtd3pCdFYwcUVOTFlXdUZ5bWRxcWpWc0Rzd2ozc0V1d3RObG5vdENLei9VNmZIVXNtRE9kZUdvZnpzM2VkNXM2bmRhcjdER1FNVzBsZWlMUStnY05SMkZ4b0hSMEFlK0NJUUw2SFNjVjREeCtZRTJaZWtha1lGcklLc2ljTGJBWmdHN1R0Ukw3T0k0R3NCSHBRMFE2aTlqRVJuVWg0U21sTjljVmZxZng3UXVlUURpOTRWUW5FRG9vTVR0WGFsU0RER3RuUENvSVEwVmxzQTdXSC8yODlZNXdzNGZscjZIWWljMnRTQUtEd1RIekdBOUFzMXludXRDb3ArY3dJVC9CUmJhdWUyUlpPSW5KOHFWeFBtbnRPV0p4SmppSmJCVlZ4anVDUVpxaUN5N1pyWjArWVBZbE9SQXlFWVBTaUZMdDEvZ1ZjeHpsM3NUWGtPWk80bk0xb2wvUVpMc1JyUE0rL3duUXVISURDSWpwdWJsdUp2ejVCeko3NmhCNjNOTktaWE84cjZ4dmRZNEprZDVCSnErSzBicnQ4dG1NL1NuV29zTU9ETURFMDRISmkzRjJEeDRYUDhyRXY1dThkd3VOUUx0TVAzVDYrbkt4YkNjTitoaXZEYi9PWmlldUFHUWRPWlAySUc5NW8xZmM4cE1xU3B0UGJyZkpUZ0FZZktHTnZrdk9SdDA4Ym1SZjIwVzF0c0xUeVMrRXA0M2FjNG5PNi9aMUl2dTB3UjdYRTZ1eGkvTm1TYWY2KzdRSjg3R2lTNVRpdUdKYmtkVXJIaXBPMlRqc2hQdHV6dFUxV1BFVmt4bXNqa0djc0h0YTR6SzlqcEdBeFhEa2haVjlXaExQUVkwaENRZlpZbkM5dm5zbEdEMGVuVG84TkxTczJlTENndGlFTEZrUVBNQnEvUWszRWRLRVNCOXgzT0dHL09xemJjK1U3Ty9RTUVtcDlvek01WVhWTzdRa2UzVGtzSVU0Zkl3TTlaSU5abXpIcVpSZGV0MzRaV1VVMEhRU2F4MElBRUIxT2pIa1I4ZkZDM09YbitWVXpOYk93VG5NMmdlVEk3R1hkbk5QUFZ0V2o5KzFKOG5tRVRzc2UxVFRzT1ltaXFaekp6dDFDVWpiRWtsbElnaEpybm1kYkZRZExYZU04bUNHK0NDczczVnM4UFU1OW50SDBIaXdGaiszbnVUMHJONjJFaHFjaXFPZXBzYkZYUVdSQ2l3eXUzY2RWQ0lQZ3pIU0tsOVVWaEEvN2pYeWFGVngzbnlGeHp1Y2JFdUZEYWdlQ0VmUnB4cktMR01jRzFlYzh4b1ZGQzVaTXJzLzJVZ0xIWjhOZFBzT2Fzc1kvSE9BU3BKeTlyUWNkaGMvc2N4aDVXUlQ5QWxrZWpCSUMyRnJIcmZMU1JjQ1A4dVVXd21rblRFNk9WMkRZNEZPckpnNmRyYWRIOEN2WHF4Yy9uZ3dBek0yblhaU05wR3Z5aEdhQ2dxQktXSjR3bEJNVVhyTWFQbGZETTkwNUxibmtYVXU1SEJ5MWJ0NGhvSW1jUS9RWW1qeHJINUFkYnNXWnlDVTVCczRIakhtVU84L01obXpydU1oa3crQUxod1RtcEpycmcxVHBIMTgxVExOeU1TQWZJWVRyTm4rRUpZUjBDb285d2ZLd2E1eG5SdGd3TkNxUkZucmkwSG1IUFVyaGN2MmlVMW9jZzIvZUh2Tm4rM0JjWnpLa2RVb3hYZ0xrWmhjTWxPcTRNMHo3NGsxWk0wY3FQN2FHbXZaWGdIbTRwRU54MDMwNVRlRmsrZTR6c3ZSOWJTZ2JVL1ZPakVkc0Z3d3kzemEybjJlWmZPWVo0SnV3NW1CdkcwN3hSTWY3UTJ4WVJDZGVXcHdSZzhmanp1RDBFU0xUbThNanJ3b3RkRWhsUStaRGYxNVBVNkVoelluaDMybUVkY0tNRmQzYmlnVW5wOFg3MU5GL3RqbExNMWdPcENqVWFKdUhSSFIvWjA0M0dHQzN5TGY5bjhuUW5SRU1IaTZmS3Y3OXlVQkF0TVVGMzFhNHFicUxiSVMxVTd0dkhNWGlWK2RPT3RMRDZoTllLaUUvenVESk9EK05Nalo3UHM5UDE4L0lIMndFc0wrY1lnU1h4dGlqRThFc05Ud3R6cThBL2QyMnh6LzJDSFQyeE9ZV0pDT09DMkVHWCs0L3FzYUovUTdiUVFCWm9ZY0d1bFd1MWVvdnJORTVydHNwUjU4WWJNVUw3S0E2by9oOTY1bHJ1VEJNMU5ZR044OEFuRHRnQThGaG1Rak42U0RvQmVaREJMT1BCYkRqSEVMd1ZkNWNmWW1PdHBVQ1RRSTMybWRJMGhmU1pXMXZQNC9WSWFwRHhsNms5bnZMQUJPb0tmS3VNN05DUExDanZ5SzFST3FlYmM5NDdBaFN0OS9YdU8yVUtJK2pNbndDRGpRdTIrNEVQS2xXTk50bjJ2SXl2RWt2ZHFURXBRNE5qdDA3ei8wZzROakNNQjIrRG5URG1CRDBUc2YzSVZCemdOdlE2L1l6aGxOYXJycFNsVUdmdStmRnpRSEY4OFVnNDhldG9XQThnQi93TXp2TWF6blYvQTd3dHFycTdzNlVlbjEyaEYxUXZOZHRJVnBZQk1rSjA2c0ZUTVJSTDdPNGxoVTJzOENCMkhZR2FFcXdUL1hmYVlIeWNNaXgrWDM0a01KTUpCME9uTGM0MHJacktmZ0hyWEZXZzZqTisvdTRITVQ2NGMvYktHZVdEUUpqZ1l4ajc1MDZoaWdrREZuRkE0S21lVnQ1REZlOFFCWVk5TGQ2SU01ajhIYlR6UEVOMDYwZDh3VW9QWEVrZmkwUFBRaWtRUDd5MlFqczJtekIvRlZLbG52WUh4NThPQTlzM1B5U1RVZnVSOEYxTEE4M0NWaTRNd2RMMzI5d1lwV3gzajYrbi9Lb2F1TXByTmJ1c242ZThUTU9oWFhXUFFyOWNRZDlMQkRzMFVrblpwbnQwNEE5cUt6WTRvbmE4YXpUcWRkNVhzNHc3YWF6UUl3a0ZDRHBBQkFnd3JtY3IrYzBzcFhaekl0bXVCc1JvRG9VR2cyZjVEYW5ZZEU1RWRGSUxtcWRndkJtZHREeGRNTlgxV29OdlE5dUVRaWJkYURKUERYckxVTGIvRERIZVNiYWV3MWp3dU5rZnZqaXlhdGJ0R2RCdVBYRHlOSDdWNW5jNThEKzRQUzFCd0w1Rm9qaDZaRTVVN1F4eU41Zkg1UG5VOGhZVFo4UVVjeXJCeUtvVGRZQkgrNFB3WW5JNXFNZXN6T3liU2ExTnNwc01TQ1RuTWQrZlVLeVUzNThJcFVQRXdpT2tyV2IvTlRoWTFDRk5WYmsyRlBzT0IzRXJKVnFiL0k1S3BhUHlLekxOWjFBYzBvZG80OXV5RUZReHE4UUNmZVp4RHpFVFo5VDFxV3pEblRjSHFDOWZGcjBqTTBuNk93RnJRbE9EU3YyZlNWclZzcnBoTVZKVU5kbnlDQ1kwSUZNSTk2UTJKdzgzajdQbDR5T1dLOFJlZkxCSVovd3RYeFNIamFVbStvWjc3UXJKV1B4WEU1eFVDd0sxQWVzYktPU1RmR09mUG02UlBuTWdjVjZ6TlVTd3kyc0hpWGFPMHY0U0lNWE9lUVNORHhKMHRQNGZhYmFxZkZoL3N0YUpBSUN2L1k0Ynp0OVZ4WXBKRlVPMFhZdVR6cTUvbmtvdS9IQTFPeEpMSHYydkoyMEI3TnA1clBHTXZCeFh5eEZndm90RHc2WEIrakZicys1K2xpTzNMZlFHZWRJcCtyZXNyRzU3dWpjM1kzZE9zWWZZKy9ldm9PMTc4dkJFbmV5QkFNaTVFQVI5YlFkTHVPMGN5bTl6elJWck1zRFRzTmdSbTU2Ry9iUW1DWTdRWVBGdnNFVzNwd0xKRlo5VGthV0lqaHp4RWZ2UVdLY0F1LzRjWGpWTmdmcFdTRnJYV2RCcXZ1QWg0b2RYd2c2Zm9YUDVQcXdHK3hvQm56NnRJUmJ0TThpT2FTcE9mZlVzYm1Pa25qT3VJenB1ZkFjeXJmdzVzc1JyeXlKRlBQWHM5TXd5R2tUdU04NmVURStZTmI1ejQ0cjhmekVkb1RQeUF2NFBVNVhtVjEyNE9nQ3EzZHVNTG5JYkN0bys4Z0ZBRm1rMURxem8zem9uT3lMQmVSbXBhTWVSY0ZKelQ2WlB2dWVpNDFuUzU3WEd1M2d1WS9UV1FCVEtIZUZWNjl0VFprSCt5b21pMnpPYzl1ZUhjYm5ReC8wRngrTzFhLzNUQ2kxMU1oT1lHSUhyTEg3YkNlcnN0bERKOGRWSitoNnpPZkRQUndsa3AwNVdud0tUUEl1VGQxY0k3cFh6elB5VDVsZU5sdzYzZ0pHOXFBQ2xIQ1BMZnRRaXM4Q2hqUFB6dzQ1NjFFY1ZwbGZSL1plMklsUG5ZT2F4QXduODNnWmNJZ29DL1Q2eVZxRGJQWThuS2RkeldvditzTktCNFBSOC9qNEZ5NXMrckE3YTNGOG9wWjFteW1jWkZ4MDNOdXB0L1l4ZFAwdFVINjg5UjFuV3BXSE51d0tNdVdSMFFNSE02N3J1MC81S2Z2emhWVk9WdC9TTjVEVUo4UTVVTWFIUFZocU5NeVVtT3FMeEIrV21ZLzNzWWNJZTdhMlhZNlhkaWlpYlc0NDY4OU1aR3dheHZ1NUp5T2N4empzYmYvVFkxN2ZNanViQ3lDYnptbTRtd2ViNHpxUk8vbFlZZWh3OHJHUHk5UXc2SDZ5c2RzSDErSzI1N0EyMmhaamgyVXhreE45aEE4TUVaZUUrRHByYk5rc2thTVA4KzArb2M3UlRFZndMaXZHaUlSZUNuYmg4WUhzdnBzeWNKdzZFSXNmNVZQU2M1bFdVTGY2WUx2bkhHRFllSzBjUko3QVR4N2lCY3lMM2ZSSkl3NC94UE05S1gwajdscnN1emxubGxkRHl2aUloZWMyTFkyNWZQRk1Cdy9MVHI1Z2ZZUlRod2cyeEFlMjJ0a0U2T3poVStIV2N2NjRvK1MwbzIxZm9NbWplNXhIZTVid0ZKK3JNUUZseDFoOUJITWYrdVJqSEdCUitkZW9xZnYwejVpWVBYNE1IamtTeC9OcVdHVWoyRzJIRERyZ0t4TnBZWEhkWnBYaVE1a0x1T0Njc21id1JRSWFYeXl6OERQZmVvbTg2VmMvSTRycXRhd2ZOZXEwVWoyQTNiSTR4MGMzMmJuc1ExN3NRRDFQdWJLcEdOc3c3enoyUmJTWVJoV0hucHF0NHJjdG15WjhFb0FteEJiNVpycWJrQjNuTXg1YmFYd2l4T2NqSGgzRGlUcHNGdWdDbHMydU1xdHd5N2JTQkRuM3NEaDhFZ0JQd1BoVFR5UEI1UG5kblY3RkV2di9lWjh4aDdOOTdDS01TQ0dmQUZzSlJoNmJuVEdyWXpxNVBYdXNXWjJDR0lmUGQ0SUYvcjNoa2RXNHRrZDRQbjdya1lHYnFITGVFTzhDNnpCWUUybkVUWk9nVGpxUlFUc0lDWGVLMmVlY2RzYzZ4TGF1VTFXckJaaXRPZ1BiYTIxT0YvU1F6dkczVmt4Z3VYdEdCNVdkcHlDZFZ2N3VXQ1lUVXlMc2VDNEhXRnJ0WU10S2RBb1Fpc1FKNitOek5Ddlk4WnlSS3c0OHhRQ2hhOGdjT0tOWlZDdUtnazhwZlh6Q1FGWEtydkE1RTk4TzJlempCNnI5dmlqZjVUTi9HK0sxT1B5Nk84b1NVbkk3R3I5RGU3RjhJK0Rzbm1XajlUMmZ4eWlMSElvRmdJKzY4SjU3NFN4TzNhN0w1OFA0YkowQS9yM3FwU1JCL0V6eGVScVJmUUlUeGhpQVZwakZtRDdjYkp1MjlSamZrdjB6WHUwN0J4K081eEMrZlc1V1B1bW9lY29ZRVY4QWNydjJQTE5Na0dmd1JWWktVTVNKc3lVaUhqSEcxOW1IcVR1KzN4NlRIczZ6U2FCZXdJZkQrb29QZEE3MkhIK1Z1eHpXSjltcEJ1dDNqSHkyclF6RjNDcm9hbUlmbUx1ZE1NQ05RZFJzci9BNWo1czN3MkJadmV2TUFTay9sY1NPTER6UEo0V09MK05Hc1JseXFEemZYajIxRHo0Mk9QdG9pY2ZrY2JTbWZKMnoyNHVsSG83RTVpcVFpaGFrVHgrVEdwRGVNejFDMlVmNHpCMzE1Zk5VTFBXNTIrTmpxWjk3KzF5bllCSFU0eU5UblRSenBqZWljMzBHZWZsNXh0Z3BIL0xKQXNRWTQ3d2RhV0NWQTRKV2NUVHBNTjN0d1RUL3NtdTdWOCsrK0M3ckFEa0U5eDdIQ1ZodzhucGc3SU9wSFhYbzh4cDlxT09wL3ZGaHlMNFlrMzdVMDlGQmt6YkgzYWdEQnh1d1d0MjRPa2ExTldBbGowSVJGRDZ6YVpZR2VYcmlPY0MzV0ovbHJjdVd1Kzg4N2F5ZnJ2N2hnYVhqOHB5K1Z5Sm1kNXFISWMyV3Jqak13R01nS0JmVTJObzh5K1VyMHZpK2NWdWo4K1Y0ZzIwQmswK3N3NFk5aHVYQ2lVR09UWGZxR3BUWkp5RjUrajVmbjdzbWY5djI0enF4L3dUNHV1cFZQSElnTkhnVzVJRnVQN005dm9STGZkVkhEOEdJQWZmc0FjUjlHdmVURDBBYkJkbUhBM3lQZWVFWExkS0dtNHI3b1o3UFhFZjhCQ0p2blJxdjl4bU5WdDFHSHc1OWhwMWpIOFJ0SzFVc2kyRmxmWWJ0REQ2cHduejd6aEhFYzV6enJxZFFEQmFtaFN6cDU1bnpaYXNadm9FNUxnbms0WlRKczF2bGZFblRjWHp6MUpkRUg1eG1raUR5QnE5RDhyRmpiSWNGbC9MT3hmV2JnN1FteWhIV0R3U0J6NzQvYnFmN25HT3M2dlUwd1FmTkFSbk9yTHR0NWFocTYvYzh4V1BlT1RuY3MwV1RmRllyM1I0cHB6T2dUenpCUnk2cm5BQ0U4OHkwSncyV01xbW5pK045YmFheGU4Q0dmb21Dd3dMcy9mZzhlellWUEJ4a3JpdGFnV0NUZ2djelBUdkUzNGR1SnAraW1CMndkU3IxWDJ2WkFFRmo2RGVBeldLYXhJZHdQekEzdTNraW91TTZEMUpLWDVxZWZNdEt1ZEpsaHB0bzJIMU13WnVkdHdYRXF1ZWM4d3Vhc1dPQXJHTys2N1FqaStXK1BoOS8rNHFURmlXMERpQjZTTktHMC9odHowVzR3cGkyUmw4M3U1RVM4Z1BkeWZaNFBvaVJHYnZpWmJtbE5ZYVdmRm9saUxCWXBqU2ZkM1lGNE91RUZMdVgxdkRKdTJ2WTh1MkQ2dC8yWldRSWR1NVVtM3dWQzlXNmMrUnQ4YlBaR21kanlaM1l4QnJiTVh0Yjd2bjZDSEVjdy9QNTZwQVZiS2xaT2tDNDVJclM5VmtNZGR1VVo4TkVzTjNrdGtOM3diYmw3R0JwUXdDMm5nMCtub280OGppYXI4ZGo3TFVBWnY4UFBQZnZFYTZPMFU0QUFBR0RhVU5EVUVsRFF5QndjbTltYVd4bEFBQjRuSDJSUFVqRFFCekZYMU9sb2hVRk80ZzRaS2hPRmtSRkhMVUtSYWdRYW9WV0hVd3UvWUltRFVtS2k2UGdXbkR3WTdIcTRPS3NxNE9ySUFoK2dEZzVPaW02U0luL1N3b3RZanc0N3NlN2U0KzdkNEJRTHpQTjZoZ0hOTjAyVTRtNG1NbXVpcUZYaENDZ0h6MEl5TXd5NWlRcENkL3hkWThBWCs5aVBNdi8zSitqVjgxWkRBaUl4TFBNTUczaURlTHBUZHZndkU4Y1lVVlpKVDRuSGpQcGdzU1BYRmM4ZnVOY2NGbmdtUkV6blpvbmpoQ0xoVFpXMnBnVlRZMTRpamlxYWpybEN4bVBWYzVibkxWeWxUWHZ5VjhZenVrcnkxeW5PWXdFRnJFRUNTSVVWRkZDR1RaaXRPcWtXRWpSZnR6SFArVDZKWElwNUNxQmtXTUJGV2lRWFQvNEgvenUxc3BQVG5oSjRUalErZUk0SHlOQWFCZG8xQnpuKzloeEdpZEE4Qm00MGx2K1NoMlkrU1M5MXRLaVIwRGZObkJ4M2RLVVBlQnlCeGg4TW1SVGRxVWdUU0dmQjk3UDZKdXl3TUF0MEwzbTlkYmN4K2tEa0thdWtqZkF3U0V3V3FEc2RaOTNkN1gzOXUrWlpuOC94cnR5WXZEUmZHOEFBQUFHWWt0SFJBRC9BUDhBLzZDOXA1TUFBQUFKY0VoWmN3QUFDeE1BQUFzVEFRQ2FuQmdBQUFBSGRFbE5SUWZrQndJUkVnK3NoME9xQUFBZ0FFbEVRVlI0MnV4ZGQzZ1UxZDUrejJ6THB2ZUVrSVJpQ0MwUWFnaGRPcUdJTkJGRVVjRUdJb0lGcFBoaHVWN0FjbTNYM3BBcktnb2lJQ0FpdllsMEVrcENTTzlsZTV2Wm1mUDlzVHZEN0daRFVVVFUvVDNQUEp2ZHpjeWVPWFBtbmZmWENhVVVmdm50WXJQWlVGNWVqdXJxYXRUVzFrS24wMEd2MThOa01zRnNOc05pc2NCbXM4Rm1zOEhoY01EaGNJQmxXYkFzQzQ3andIRWNuRTZudFBFOEw3M3lQQTlCRU9SL0UwRVFJTjhvcGVJcm9aUkMzQUFRNzFjQW9KUVM5OUNsVjYvUFNGNWVYbHhVVkZRVGpVWVRwMUFvNGhpR2lXRVlKb29RRWdrZ0FrQW9JU1FVUUJDQVFBQmFBR3IzcGdEQXVJOG5BT0FCc083TkJzQUt3RUlwTlFJd1VrcjFsTko2U21rZHovTzFITWRWMmUzMjZvcUtpb3IwOVBScTkzR29iR3Z3bmhEaS9aMzRHUUJRUWtpRFY5bEdHWVlCSVFRTXcwQVFCS2pWYWpBTUE0WmhxRUtoZ0VLaEFNTXdFUDlXS3BYU3E3aXBWQ3FvVkNxbzFXcW8xV3BvTkJwb05CcG90VnBvdFZvRUJRVWhPRGdZSVNFaENBOFBSMFJFQktLam94RWJHNHVFaEFSb3RWci96WFFkaGZpQjdiY0p5N0lvTHk5SFpXVWxhbXRyVVY5ZkQ3MWVENlBSS0FHYTFXcUYzVzZIM1c2L0lxREp3VXkrQ1lKQVJJRHpBak1QSUJQQlNRNVMzb0FsZjE5ZFhaMGFIQnljb2xRcWIyRVlwaVVocERraHBCbUFaZ0FDYnBKcHRnTW9wcFFXQ1lKUXlQTjhBY3V5RjNVNlhYNnpaczB1ZUFFY3ZRemdOUUJBRWZnSUlSNUFSeW1sU3FWU0JEWUowT1FnSjkvazROWVl3QVVFQkNBZ0lBQ0JnWUVTd0lXR2hpSThQQnlSa1pHSWpvNUdmSHc4RWhJU29GYXIvVGVYSDlqK0hDa3BLVUZsWlNWcWFtcFFWMWNIblU0SG85RUlrOGtrQVpyTlpyc3NvSEVjSjdFemIxRHpCV1lpS3hPQlRieDJQb0RNNDMxZVhsNXNRa0pDQjVWSzFVR2hVTFFuaExRSDBCYUE1cTk4RFhpZWQ1U1dscDVOU2tvNjQzUTZ6OWhzdHB6YzNOeWNIajE2MUxxWm9oelVCRGRUODJCMjNrQW5BcHNJYUNLYnV4TElpYUNtVUNpZ1Vxa3VDM0JhclZZQ3VKQ1FFSVNHaGlJaUlnSlJVVkdJaVlsQmZIdzhrcEtTL0RlWkg5aHVuRlJWVlRWUU93MEdnNlIyeWdITmJyYzNBTFFyc0RRaXFwMWVnRVlhWVdVTkdObkVpUk1WSDMzMFVmZUFnSUJ1Q29XaUt5R2tDNERVditPMTRIa2VwYVdsYU5hc21mZFhlWUlnSE9NNDdyalJhRHgyeHgxM0hOdTllN2NnQXpzSjlBZ2hnamVqY3dOYkF6YkhNQXoxQVhCUUtCVDBTdXhORG5BaWV4TUJUbFJQdzhMQ0dxaW5jWEZ4L3B2T0QyeC9uQmdNQnBTVmxVa3N6WmZhNmN1T3huRWNXSmFWR0pvUE94cVIyOUY4TURQaXcxNG1zakx5eEJOUEtKWXVYZHBIbzlIMFpCaW1GeUdrSjREZ2Y4STF1UXl3ZVl1WlVuckk2WFFlTXBsTWgyZk9uSGxvelpvMVRoOUFKNGpBNWdZMDZzTXVSNzJabkpmOWpYcmIzMFFHcDFhckpZQnJ6UDRtVjA5Rjl0YTBhVk9FaFlYNWIwSS9zRjAvNFRnT0pTVWxIaXhOcjlkTExPMXE3R2krbkFNaW9IbXhNMG5ObERFeXlJR01Vc3JVMTllM0N3NE92bFdoVVBRamhQUUg4STljOWRjQWJBMmVVNElnN09VNGJsOVZWZFcrNXMyYm4zT0RXd05XSjJkMEludVQveTA2R09RZ0p3SmNZODZGSzluZlJQWVdIaDd1d2Q2U2twS2dVcW44TjZVZjJINmZWRlpXb3JTMHRJRnpRSzUyaXFBbXNqU1JvVjB0b1BFOEw2bVpnaUEwQ21aV3EzV0FXcTBlekRETVlBQWQvRmZuZHdHYnQyUTduYzRkUnFOeFYzUjA5RDY0dkxpQ045ZzFCbklNdzBqcXFrS2hvRmNMY0NLREU5bWJDRzV5OWRUYnVaQ1ltSWo0K0hqL3hmY0QyN1dMeFdKQmNYRXh5c3ZMVVZWVjVkTTVjS1h3RFMrMWszZzVCdVRzakhneE5Bbk1iRFpibGxxdHppS0VaQUZvNnI4eU4wVEtlSjcvMFdReWJZK01qTnlPUytFcVBrRk9wcTU2cUtvaWkvUHlvTklyc1RkdjlkVGJ1UkFYRjRlRWhBUWtKeWNqS0NqSWY3WDh3SFoxVWxKU0lyRTB1UzNObDNQQTI1Ym1nNlZkQ2RDSXQ4M01ZckVNMUdnMHR4RkNSdm5CN0tZQXVTMTZ2WDVMVEV5TXlPUThRTTZieGNsQXJsR0FVeXFWalFLY25MMTVPeGU4YlcrSmlZbCs3NmtmMkM0dkpwTUpSVVZGS0NzcjgyQnBCb1BCSXlidEtvTnNpYWg2aXVybVpkZ1pvOVBwMG9LRGc4Y3lESE03Z0hiK0pYbFR5bG1XWlRlV2w1ZHZidG15NVJrWndQRXlrS095MXdZc1RxNm11b0dOWGsxd3J6ejJUZlNjaXV5dGFkT21hTmFzR1VKQ1F2eFh5QTlzRFZtYTZDRHc1ZkZzTElSREJEVmZnQ2JQRXBBRG1naG1telp0Q2hnOGVQQkVwVkk1Z1JBeXpMOE0vem9pQ01JMnE5VzY0YTIzM3RxNGFORWlHd0NuSE9Sa0xFNFEyWnUzbXVvVkh1SUJjQ0s0TlJZYTR1MDVGUjBMZnZibUJ6WUFnTlZxUlVGQlFRTUhnY2pTekdhelpFdTdRdWJBNVFDTnlOVk92VjdmSVNnb2FCTERNSk1BK0ZmaVgveVp5SEhjMnBLU2t2VXBLU2xuWmFvcTc2MnF5Z0NPWGduZ0xoZllxOVZxRVJ3Y0xMRTNiOGRDaXhZdEVCZ1k2TDh5LzFSZ3E2aW9rRlRQNnVwcUR3ZkJsZUxTWktEbUU5RGNBYlVlNnFiVmFzMVNxOVdUQ1NFVC9VdnViOG5pMXVuMStyWFIwZEU3M0F4T0RuQzhMelZWRmliU0FPQWFzNzM1aW5zVFZkUFkyRmhKTlczU3BNay8vcG9vLzBrbnkvTTg4dlB6VVZ4Y2pJcUtDaWtseW1Bd3dHZzB3bUt4U0tEbWNEaDhaZytJZ0Nhem8va0V0THZ2dmx2eDBVY2YzYTFVS3U4RzBNZC8rLzk5aFdHWWNaR1JrZU40bnQ5dnNWaStIang0OE5yRGh3ODdSWkNqbERid3JQSThUd1ZCb0dMaVBjL3pWQjRTNUhRNnFUeGNTTlFRNUtZUThhRXJQb1N0Vml2TVpqTk1KaE51dWVVV0tCU0tmeTVqS3l3cy9FZWNxTkZvOUFsb29zZFRyblplem83bVMrV1VzVE95YWRPbWtOYXRXOStyVUNpbXdSOXo5bzhVU21tMncrSDRjdjM2OVdzV0xGaGdKSVR3TWliWFFFMlZzVGh2Qm5kWis1dGNQUlVEZThXYzB5Wk5taUE1T1JtaG9hSC9UR0RqT081dmY1SmxaV1VvTEN5VXZKNWlCb0czNnRsWUdJZVgya2xrYVU4U3FHVm5aMGUwYk5ueWZvVkNjVCtBRlAvdDdSY0ErWGE3ZmRXbVRadStuakpsaXM1TFRlWGQ0Q2FwcU81Z1h5clBRZlZXVDMyRmhYaW5aRVZIUjB0ZTArYk5tNk5wMDM5ZTVORGYyc1pHS1VWdWJpNktpb3FrZ052TGVUMjlNd2dhVVR0Rkx5ZERLU1VuVDU0TWJkdTI3UXlGUWpFRHdDMytlOWt2UHVTaXpXYjcvS3V2dnZweSt2VHBoc3NCSENGRWtDWGRlMmN1VUY4WkM0MTVUY1dBM21iTm1pRTFOUlh1YkFrL3NQMlZ4V1F5NGNLRkM1TDZXVjFkTFhrOTVRRzNqZVI1RXU5VUtDOVBKN05reVJMRmtpVkxIbFFvRkEvQ0gzL21sNnQ3MEo2MVdxMHI3N2pqanRWYnRteGgzUUFucWFneWdCUGtIbFR2MUN5VlNrVWJ5emVWcTZXUmtaR0lqWTJWMU5LVWxKUi9UTXpiM3hMWXFxcXFrSitmajVLU0VsUlVWRFFJNWZCT1hwZmIxTHhZbW9kalFQUnkydTMyTzFVcTFTTUFldmh2VjcvOEJvQTdiRFFhUHdzUEQ5OUlDT0c4QU02YndWRlpCZ1AxWm0vZU1XL2VBYjFpU0VpVEprMlFsSlNFVzI2NTVSOVJEdWx2NXhVdExDekV4WXNYUGVMVDVMbWUzc25yY3BZbU9ncmthcWZNanNaWXJkYUJhclY2cGp2bHlTOSsrVzFzZ3BDTXNMQ3dESjduUjFWWFYzL1dwRW1UQTNLQTgvYWk4anhQM1FKQkVLaFgvVDd4UFh4NVVVV3ppdWhGdGR2dHNObHNhTjY4dVIvWS9pcjJ0UFBueitQaXhZdU5PZ2t1VTltMkFVdVRxNTMxOWZXcG9hR2hzd2doRC90dlM3OWNMMkVZWmtSOGZQd0lsbVUveXNuSitieHo1ODc1TW9BVHcwUjRBSUlnQ0lMWTM4SzlVVEZsVHc1dTNpQW5Pc0M4d2MxdXQ2TjE2OVovVzd2YjN3TFliRFlienA4LzcrSDVsTWVuTldaUDgyWnBibENUMU01Nzc3MVg4Y0VISDh4V0tCU1BBVWowMzRwKytTTkVwVkxONk5TcFU1YkZZbm0vYjkrK254OC9mcHdGd0xuWkd5T3FxSlJTcVJpbTI0RkY1Y1VWdkFIT3UxcXpIT0JZbHBYQTdlL1lTT1l2RDJ3Nm5RNjV1YmtvTEN5VUNrTEtxM0w0S2dicGZvckpRVTNPMGhoS0tiRmFyVU0xR3MzakFBYjViejIvM0FCcEdoZ1krUHl2di80Nm9McTYrcU1tVFpyc0pZU3dNdldVNEZKT0t2VmljSEtBbzc2YUF2bFNUOFVvZ05UVVZFUkVSUGlCN1dhUnFxb3FqM0FPTVluZFY0VmJXU2dIRWVtNUQ1YkdsSmFXeHNmRnhUM09NTXhjLzczbWx6OUJQUjBRSHg4L3dPRncvSGZIamgyZlptVmxWYnJWVTBZT2NLNEs1a1JvakwzSlZGVmNqWnFhbXByNnQzSXEvR1dCcmFTa0JIbDVlU2dxS3BMQ09lVE5WWHc1Q2J4WkdzL3pjcGJHMk8zMkNTcVZhbTdwdWVOZHl4M0J5RWh2ZFZPZGMzMTlQV3ByYTVHYW11cEhnTCtBNlBWNmJOcTBDUTZIQTRNR0Rib21nNzFhclo0MWJOaXdYblYxZGU5SFJVVnRJWVFvM09vcEo3TzlFYm45VFE1d0xNc1NsbVVidGIxNU16aU80MUJUVXdPejJRd0FpSWlJUU92V3JYODM4U2dvS0FBQXhNZkhYOVg1VjFSVXdPRncvRzduQnRQb042d2VueXg3RW9QN1p5SWpzejhlV2ZncXlrek9tMkxCNU9mbjQ4eVpNeDV4YXBmWW1nN0ZGODdnMkpGZmtaMmRnOExpTWxoc2RqZ2NEaUlDbkRzMWlnaUN3QWlDb0tpc3JFeDJPcDJ2cVZTcS93SG91dm8vODNEUHduZHVpbk05ZlBndzNuenpUUURBa1NOSDhOcHJyLzJwWS9nOXduRWNCZzBhQklQQjhLZU40WHJMMmJOblliZmJHM3p1ZERveFljSUVGQlVWSVRBd0VGYXI5WnFQVFFqcEhCa1orUjdMc290MzdOalJqRklhUUNuVndOV1lXa1VwVlZCS0ZZSWdLQVJCWUhpZUowNm5rN0FzQzVQSkJLUFJTRVF2cUR5UDFHQXdTRldpS3lvcVVGeGNqQXNYTHVEUW9VUDQrT09QOGZiYmIvL21kZmJTU3kvaHpKa3pBSUNDZ2dLc1c3Y09LMWFzd0twVnE2NXFQV3pac3NYbi8xN3JlbWdVMkxaOThDeGUvSFEzUms1L0J2KzM0RDdrL2ZnZUhubjI0ejk5SVowN2R3NW56NTVGZm42K1I3VmJrYTFWRmVjaHY2UWF5c0JRaEFRSGdITllTSDI5bm9pTXpjM1VpQ0FJSWtzYkZ4MGQvUlVoWk9iTitOVC84c3N2a1pHUjhiY1lnMHFsd3Z2dnYvK2J1aTdkRFBQZ1MrYk1tWU9Ta3BJR24rZmw1WUVRZ2tXTEZtSHk1TWxvMTY3ZDc1bTNCL3IzNy8vZkV5ZE9aQUhRd3RVVFZnUTNwUnZnR0JIYzNMMDBDTS96Y0RnY3hHNjNFeEhjTEJZTFRDWVRUcDQ4aVlLQ0F0VFUxRWo5UFZpV3haZ3hZekJ3NE1EZk5FNlR5WVRkdTNlalRaczJBSURNekV5c1dMRUN0OTEyMncxZkQ0MENXMUZSRVVoRWMweVpOQVlqYjc4WEx5OS9FY082Sk1FSlFGOTRGSFB2bjRDTWpFemNOdmtoN0Q1WEJRQTR1djVORE0rNkYzazJBSERpeFlkRzR1RmxYN3A1K1VsTXlocU9kNy9ZaURsVGIwZG1SaVkrMjEzb1ltQ0h2c2M5NDRZaUk2TVhwajc2SFBKckhTSnR4TlpQbG1QMGdMN0k3RHNZRHk1NEJhZlBuVU5CUVlIVURzKzdKMEZGZVRYQXFCQWFGQUNWV2t2VVNnV280SFNCbXROSk9JNWxuRTRuMDJQQWlQQnY5cDE1UWFWU2ZRbWcyNEZ2MzhUdy9yMHc4TFo3Y0xqUUpLZXVIbU5ZOHVZYU9HN1FUV00wR25IMjdGbjA2SEVwRHRocXRXTGV2SG5vMzc4L0hudnNNVGdjcnRHWXpXWTg5ZFJUR0RwMEtDWk5tb1JUcDA0QkFMNzQ0Z3M4K3VpakdEQmdBQll2WG95c3JDek1tVE5IYkxxTXRXdlhZdVRJa2NqS3l2TDVwUFExaGw5KytRWGp4NC9INE1HRHNXVEpFdGhzTmdCQWJXMHRacytlamF5c0xJd2ZQeDYvL1BLTHRNOWRkOTJGa1NOSFlzNmNPWks2SThxbm4zNks0Y09IWThpUUlYanR0ZGZnSFRUdVBZYnZ2LzhlNzczM252VDk2ZE9uc1dEQkFva3BMVnUyREVPSERzWFlzV09sTVpqTlpreWZQaDJ2di80Nmhnd1pnb2tUSjZLb3FBZ0E4TUlMTDJELy92M1M4VmF2WG8zVnExZGY5dHJzMmJNSEV5ZE9SR2xwS2ViT25ZdUpFeWRpNTg2ZEFJQ25uMzRhVHp6eEJDb3FLakJ4NGtSTW5EZ1JMTXRlOW5qcjE2L0g2NisvamhrelpxQmZ2MzVZdW5TcE5BL0xseS9IcUZHanVpeGN1UENEWGJ0MnpmM3d3dytqS2FVQkFEU1VVaFdsVkNrSWdwTG5lVWJjM01CR0RBWURhbXRyVVZ0YlMydzJHM1E2SFU2ZlBnMmowWWpzN0d4czI3WU5SNDhlUldWbEpjckt5bEJRVUlEaTRtTFUxZFZKdjUrWGw0ZDc3cmtIZ2lCSTQ1MDllemFPSGozcWNRNGJOMjdFcUZHandERE1GZGYyNWRiRHVYUG5NR0hDQkF3WU1BQ2ZmdnJwRmRma2hRc1hNSFBtVER6d3dBUG8zNzgvRmk1Y0NNaDBjNCt0OHNRRzlHamZFcDE2amNEU1Y5N0I2UkxYaVZMZWdGa2pPcUg3c0duNGJ0TjZ6SnB3SzFyM21JQVNPOFd1aitlalJZcytPR21tb0pUREk0TlNNR3oyVzY3OXF2ZWhTNHNXYU5tNkUyYk1tNDlGODUvRTNud3orTG9UR05DK0pVWS8rQ3cyckYrTjBUM2JZdFRqcm4xT3JGdUdsaTNhWXY3cksvSEswamxJaW9sQzFyUW5NSC8rZkV5ZlBoM2p4bzNENE1HRGtabVppWTRkT3lJMU5SVWFCUUZSYWhBWkdVbENRa0tJVnFzbGFyV2FVU3FWQ3VLeUthcFhyZmwyOE9JSFIvL1lzbTBmZXF5YW80N1NQYlJyU2dzNjlxR2xkUDNhbFhSWXQxVGFlc1RqbEZKS1Q2eGJSbHUyYUV1ZmVldC9kTzJuSzJpbmxKWjAyYm9UOUViSXFsV3I2TnR2dnkyOS8vSEhIMm4vL3YxcFdWa1pkVGdjOU00Nzc2UnIxNjZsbEZLNllNRUMrcTkvL1lzS2drQVBIejVNZS9Ub1FhMVdLMzM5OWRmcGYvN3pIM3JreUJFNmRPaFF5bkVjN2RXckY2MnRyYVVIRHg2a0kwZU9wSHE5bnVyMWVqcGt5QkI2OHVUSnk0NUJwOVBSN3QyNzA3Tm56MUtlNStuQ2hRdnBHMis4UVNtbDlQMzMzNmVmZi80NXBaVFNRNGNPMFg3OStrbjdtVXdtYWpRYWFYcDZPalVZRE5MbjU4K2ZwLzM2OWFNV2k0VmFMQlk2WmNvVStzc3Z2MXgyRERVMU5iUjM3OTZVNHpoS0thVkxsaXloYTlhc29aUlMrdnJycjlPbm4zNmFPcDFPZXZic1dacVptVW50ZGpzMUdBdzBKU1dGSGpod2dGSks2WW9WSytqOCtmT2xlWjA1YzZaMC9HSERodEhDd3NLcnVrWkRoZ3lodWJtNURUNC9jZUlFSFRObXpGVmY2NDgvL3BqZWR0dHRWS2ZUVWJQWlRBY09IRWgvL2ZWWFNpbWxOcHVOR28xR09tUEdEUHJqano5U251ZC9LaXdzbkFDZ0dZQW1BS0lJSVdFQWdnQUVNQXlqSm9Rb0NTRUt0VnJOQkFRRUVBQWtMQ3lNeE1mSEl6azVHUUVCQVdqZXZEa3lNek14ZVBCZ2pCczNEdE9uVDhmOCtmUHgwRU1QWWVEQWdUaCsvRGhZbGdXbEZHUEdqTUhPblR0QktjVzVjK2ZRdDI5Zk9KMU9EOHdZTjI0Y3lzcktHbURKcDU5K2l1ZWZmOTdqTTdlcWpQVDBkQmdNQnVuemp6LytHR1BIam9YWmJFWlZWUlV5TXpPUm5aM3RzZStxVmF2dzl0dHZTKzlQbno2TnJsMjdvcXlzREZhckZSTW5UbXljc2NXbGo4YldyZC9qdnF3TzJQL05leGd6ZUFnKytma2NoT0lEMkhIV2dJa1BQbzNiUjQ3Qm9zZnVCbHQ5Rkx0UDFsOFZDeG4xNkhKOCtPb3l2TGpzWmZScEdZU0NnN3RSYUdVd2ZkNGlqQjR6R1crOCt3Rm1qdXZ0ZWdKOHZ3RTBMQUY4eFJua0ZCa1FvSERpOVBHalVweWFkMGlIeldZRFR5a2c4QjZxcDh2cktUQVVVTXgrWTlQRFV5ZU9YN2xrL3N5aEduc1p0dTNPUmY2dmgxRFBCK0RCcDUvQm1ISDNZR0NYaEV0UG9lODNBQkZKU0ZBWVVXVUxSR0lFZzEyNzl0MFF4cloyN1ZxTUd6Zk80N00yYmRvZ0lTRUJhclVhM2JwMVEwVkZCUURncDU5K3dvd1pNMEFJUWZmdTNaR2NuSXdUSjA0QWdGUjFOU1FrQkVxbEVrRkJRV0JaRnBzM2IwYVRKazJ3ZHUxYXJGMjdGakV4TVRoMDZOQmx4M0Q0OEdGMDZOQUJiZHEwQWNNd1dMQmdBY2FQSHc4QW1ERmpCaElTRXZEMjIyOWo1ODZkcUttcGtmWVRmOTg3SURRdUxnNHFsUXJ2dlBNT1RwOCtqWlVyVnpaUU1iekhFQjBkalM1ZHVtRDM3dDFnV1JhN2QrL0dxRkd1WkpBZmZ2Z0JJU0VoV0xseUpRNGNPQUNHWVhEKy9IbHBERDE3OWdRQVpHUmtvS3JLcFdrTUhEZ1FPVGs1ME9sME9IbnlKT0xpNHE1SFc3OXJsdTdkdXlNOFBCeEJRVUZvMzc0OUtpc3JBUUFCQVFFSUNRbVI2cXN4RERPNFdiTm1iM3p6elRkVDNLcHBnS2lhQWhCVlV3VUFSc3llSVlRUXR5T04yTzEyOER3UHU5MHVxYVo2dlI1MWRYVlNZTHZSYUVSdWJpNU9uVG9GdTkyT0dUTm00UFBQUHdjQWZQWFZWN2pubm5zODZyM2w1dVlpSkNRRUNRa0pWM1d1amEwSEFPamN1VE9DZ29JUUd4dUxZY09HZVREL3h1NkxoSVFFSkNRa1FLdlY0cTY3N21vTTJGaHNXL01aOWhjeWVHenhNbXpic3hlM2QxRGhsZGZlZDNsUUFHZzBydWF0S3ZjcngvTHVmUVhJR0dzRENmZUtsMkU1QndBRk5CcVhnN1pGZWg5azllM3NvcHdtQ3ppYkhoZk9uMGRoWVJIQ2sxSVJHNks4WFBjb1FrRUlwWUpVTzgzcDVCaWU1NW5pdk8wSnZWcTJlQzFBcTMwRFFJSlNvNFlDQU1lejRKdzhBQVdVbW9aT1lydk5EaVhEbzZheUVwV1YxZWlTTlFWWnZkcmVFRnRpZUhqNFphdWhNZ3dqcVFzY3gwR2owVWpmYWJYYUs2by9OcHNOb2FHaDBqWjI3RmowNmRQbnNtUGdPQTVxdFZwNkh4SVNJcFhGZWUyMTE3QisvWHIwNk5FREkwYU11S3J6REFzTHc4YU5HNUdhbW9wdnZ2a0d3NFlOUTFsWjJSWG5ZZXJVcWZqMjIyK3hmZnQyREJvMFNBb3l0ZGxzaUl5TWxNNXA3dHk1UHVkUVBuZEtwUkxqeDQvSDk5OS9qM1hyMXVHdXUrNzYwMjEzaEJCY0lZODdRYTFXdnpSejVzeG5ObTNhbENpcXBqS0FFNEdOY2R1VElRZ0NjUWZuRWtFUWlNUGg4SEFxNlBWNjZkNnlXQ3dvTEN5VXdLMXYzNzdJejgvSHVYUG5zRzNiTmt5YU5NbGpNR3ZXck1HRUNST3UrenlvMVdySVM2dGR6WDJoMFdnYUF6WWxqdis0RWs4dGVCWjdUK2FqdExRUWVyUHJ4bEUwNjRaTzBTcjhzTzUvS0N3dHhhb3ZOd0NCTGRHdFl3emlZK0lBMU9HWGc5bklQN2tMRjZyNUt3NjhaWmNNUkNoWWJQcG1IY3BLOC9EWXVFejB2dWRGbUV3bU5FbStCWmJhS2dpaDhiaWxaVE1vQlJZQmFrV0RPRFYzeFZ2Q3Npd1VoQUJVSUN6TEVaN25HVUdnek5DSFgrM1hwSG5taDVudHcyYnUycmdHNTRwTDhlMnFOYkNRRUdSMGFZMWJPblJFSUN4WXYyb2RDczhmeGNtOE9tbDhmWHIzQktmWElTRWpDdzgvT0ExdDRzT1FrZEhsRDEvWWE5YXN3UjEzM0hGTlQvc3RXN1pJYnZiczdHeDA3Tmp4aXZ0VVZWVmh6Smd4bURCaEFscTNidTJ4WUh5Tm9YUG56amg2OUNqMGVyMzBQeDk4OElIa3RSMDNiaHk2ZCs4dXFRbFhrbDI3ZHVIbGwxL0diYmZkaGxkZWVRVnQyN2JGd1lNSHJ6Z1AzYnQzUjJscEtWYXVYSWtwVTZaSW4yZGtaSUJsV1V5WU1BRVRKa3hBUWtMQ1ZRV2ZUcG8wQ2V2WHI4Zmh3NGV2eVhpdTFXcFJWMWYzcDRCZmVubzZqaDQ5T3FOWHIxNHZGUlFVOVBEbFdBQ2dFQVNCRWRtYjZEV2xsTUtYVTBITTFySFpiRklKL2J5OFBKdzlleGFUSmszQ280OCtpcUZEaDNwVUNlRTREcnQyN2NMUW9VT3Z5M2tWRmhhQ1VncUh3NEhkdTNlalE0Y09WMXdQT3AxT3NqZi85Tk5QamNXeE1YanNwZitpZXY1Q3pCZzNCQndGb2x0Mndjc3Z6NEZTM1FUTFh2OFhaczU3SGdQN3JZSTZyQ21lZWVWdHBJVUNHSHduUnFWOWcrVVAzNFpQVy9kRGk2WmgwRjNoSkRUSi9mSEswZ2Z4MUw4WG9lKzdIS0thZDhWekM2Zmc5T25UaU80NEJKbXRMK0RuYno0RDYrU2gwSWFnWllvR0FYQjZ4NmhKOFdsUUtBZ1JCQ0lJUEFIQURKNzR5TlRYLysvaFp3alJwaXg0K1hVVVBUSVBJMjd0QjBWQUJPNWIraHFHdHRJQ0dJb2xEdzdCc3g4K2pSOVh4Nko5d3FXcW84TWZmaDZQbHo2Qk54NmZndVU4RU4ycUsxN3FQeGxBK0IrMllGbVd4WjQ5ZXlTRCtOWEkwcVZMTVhQbVRHemF0QWtWRlJWWXVuVHBGVy9vOGVQSDQvVHAwOGpLeWtKTVRBd1VDb1hrNW05c0RBa0pDWmc3ZHk0bVRKaUFtSmdZQUpEYzdqTm16TURDaFFzUkd4dUwyTmhZQ0lJQWc4R0FzTEF3akJzM0R2WDE5VENaVEJnMWFoU0Nnb0t3WmNzV1pHWm1ZdlhxMVJnelpvenJ3YWxRU0RmSTVlYUJFSUtKRXlkaXk1WXRTRW01Vk5kejRjS0ZlUFRSUnpGMjdGaFFTdEd1WGJ1cjhxYUtQUU5hdFdvRnBmTHF3enVuVHAyS09YUG1vSG56NWhnOWVqU21UcDE2M2RmRDg4OC9qeDA3ZHFDMnRoYkhqaDNEU3krOWhQZmZmeCt0VzdmRzFLbFRNV3JVcUlGeGNYSE5CZzBhOU5iUFAvKzgwWjJHSmEvc3pBTUFwVlJ3eDI1Q29WQlFrUkNvMVdvYUh4OFBzOW1NVTZkT1NXenhzODgrUS92MjdURnk1RWdJZ29BMmJkcWd1TGdZOTk1N3I4ZjRmdjc1Wi9UdDI5ZUR5UVBBaGcwYjhOcHJyOEZrTXNIcGRPTG5uMy9HSTQ4OGdrbVRKalc2SGtTUUdqdDJMUFI2UFhyMDZDR1pEeTYzSGh3T0IrNjk5MTRwOU9hS1pZdFlod2xXQjRQd1VLL08wNElUOVhvOWdrT2pvZlpZQndMMDlYb0VSMFplVS9TdndEcWdOOXNBQmppYmsrTVJ6bEZkWFlYYWVoMGNObHVEYkFJNXFNbXlDSmhwZDA5VkxQL1BmeGRFaHdjdGdrY2dzbXQ4MnVCd2FOU2VoTlZtMFFQS1lHaDlxS1Nzd3dLampVZDArQjlmYXZuczJiTTRjdVFJN3I3NzdtdmV0NjZ1RHFHaG9WQ3BWRmU5ajgxbUE4ZHhIbVdrcnpRR2xtVmhOcHNSR1JuWllJSFpiRGFFaDE4YjhKdE1KaEJDRUJ3Y2ZGM213V0F3UUsxVy8rNDh5Q2xUcGpTSXU5dTRjYU9INTAvc2tYR2xjeTR1THNZamp6emk4Vm43OXUyeFlzV0szenkrbXBvYWFMVmFNQXlEZi8zclg4N0V4TVRYM252dnZZOU9uVHBsZDZka2NlN042YTd6SmhCQ0JIa2hTNDFHQTdWYVRjWGFibUxwSTdGb1pWUlVGT0xqNDJFMEdwR1RrNE5WcTFaNW5PdW5uMzZLUG4zNm9GV3I2eGZRTGlicnkwTkJHbHNQMmRuWldMaHdJYjc3N2p2bzlYcEVSa2JlWFBYWWREb2RjcnhBVFhRU2lNMVc1TjJqWktBbXI1dkdWRlpXSmtWRlJUMURDSmtCdi9qbGJ5cUNJT0R1dSs5RzA2Wk53Zk04VHAwNmhhKy8vaG9oSVNFcmQrelk4ZUh3NGNOTENTRU9MM0RqdmNCTktqMHVncHU4RzVZSWJxV2xwU2dvS01Dc1diUFFwMDhmdEcvZi9xYkpMeFdCYmNPR0RaY1kvYzBDYkhKUUt5a3A4UUExZWNNVkgweE5USTFpQkVFZ0pwT3BtMWFyWGVpdm1lYVhmd3E0WldkbncyNjNJejA5WFhJZzhUeS9KVGMzOTcxMjdkcWRCdUNRc1RlbnU3a003KzZ4SUlpTlkrVGdKcFljRjcyWFlnMjNsSlFVcVdEbHpRSnVWcXNWaFlXRkhrSFFOd1d3NmZWNlpHZG4rd1Exa2FuNVVqOWxXUVNFVXNyWWJMWmhhclY2RWZ5VmJmM2lGMUJLRDVlWGw3K1RtSmk0MXd2Y09EZTRTY3pOWFg2OEFiZzFwcGFLNEphV2xuYk5ab2NiSVg5NkVyekJZUERKMUhRNm5jOEtIVjdxcHdScURvZGpzbEtwWEFTZ2xYOUorOFV2cmtxOUNRa0prYlcxdFc5RlIwZHZwcFF5eEJVNFJpaWxITnhPQmNHZFV1QW1PUlF1eHdQMUFaUytmZ05wYVdtL0tTM3Fid3RzSnBQSnAwMU5CTFhMcVo5eVVHTlo5bUdGUXJFWVFJeC9PZnZGTHg3QWt4SVZGYlZZcjljSGg0ZUhmK011ZDBTOE5UWVIzSnhPcDA5d2F3elV4SzFEaHc0M1ZhTVk1cy82WVl2RjBxaWp3RWNUWTlJWXFIRWM5NVJDb1ZqdUI3WEc3US8zM1hmZlRUV213c0pDL05VYWRiLzg4c3ZvM2JzM2hnNGRLcVVhVFo0OEdaTW5UOGIwNmRPdisrL3QzNzhmMTdIbmIweFlXTmdTczlsOEx3Q3RMSmhYbnFrZ1pTazRuVTdpcmxwSlI3UUFBQ0FBU1VSQlZOTW1KZERiYkRhUFFONjZ1am9wZVQ0L1B4ODVPVG13V0N3NGUvYXNsTkhoTGZQbXpaTXlaUnFUelpzM1N4a09memxnczl2dDErTDlKUElPVXFKTjdaMTMzbEZ4SFBjc3d6QXZ3cFZTNGhjZnd2TThqaHc1Y2xPTjZjVVhYNFRGWXBIZUc0MUd6SjQ5KzZhZHc1TW5UMkxMbGkzNDZhZWZzRzNiTm5UcTFBa3FsUXF2dlBJS25udnV1ZXMrdnpVMU5WaStmUGsxaGV6NGtvc1hMK0s1NTU0VDN3WUVCUVV0ckt5c2ZFaWowUVExQW00S1FSQ0l2UHlSdTlLdUJHNFdpd1ZHbzdGUmNIdmlpU2M4VXEza2N1clVLYWxnUW1OU1dWa3BGU2Y0UzZtaUhNZGQxdnZwWlZNVGN6NGhMOGZ5NjYrL0JxZW5weTlpR09iSnZ5TVlIVGh3QU0yYk44ZisvZnNSRnhlSHZuMzdTamwxWnJNWjI3ZHZCd0QwNmRNSDBkSFIwbjdsNWVYWXQyOGZJaU1qTVhEZ1FKOVZGazZkT2dXTlJpTVZFYXl0cmNYT25Uc1JHQmlJZnYzNmVhZ1RSNDhlUlY1ZUh2cjE2NGZjM0Z6Y2V1dXRrbHF5Yjk4K2xKZVhvM2Z2M2toTXZOUU9vcXlzRFB2MjdVTm9hQ2dHRGh6b2tlWUZ1TElpYW1wcTBMNTlld0JBVGs0T3pwNDlpOTI3ZDJQYnRtMEFnTDU5KzByeFo4WEZ4VGh3NEFDU2s1UFJxMWN2Q1FndlhMaUFtSmdZN04rL0g2bXBxZWpTcGNzVngwQXB4ZDY5ZTFGUlVZR2VQWHNpT1RsWjJpY25Kd2RSVVZFb0xTMUZibTR1K3ZYcmg4VEVST3pjdVJPSERoMUNSRVFFOXUzYkI3VmFMYzFEMDZaTllUS1pHbVdsaHc0ZFFsSlNFbnIxNmdWQ0NJNGRPNGJVMUZSb3RWcWNQbjBhblRwMXdvVUxGeEFZR09pUlk3bHUzVHFNSFR2Mml1dmgrUEhqaUk2T1JsSlNFZ0JJZWJPREJnM0NzV1BIY1BUb1VlemF0VXNLY0IwNmRDaTBXdTNjMXExYnE0Y05HL2JSeXkrL3JIZXJsS0xkemVsV1MzbDNxWHhSTFlYRDRTQ0NJRkNqMFFpMVdvM0V4RVFQVlpRUWdwS1NFZ1FFQkhqWTI4VHI1NnRzMDlHalI1R2JtNHR1M2JwNXhNQUpnb0FkTzNhZ3ZyNGVRNFlNa1k3M3l5Ky9vRTJiTmdnTEN3UExzamh3NElCMExleDJPN1p0MndhbFVvbDI3ZHJkV01aR0tmVUFOWGt5dTNmVEZWbHZBZzlRTzMvK2ZFUjZldnJTdnl1b0FhNHlPazgrK1NUMGVqMldMVnNtWlFQb2REcmNkdHR0S0MwdFJXRmhJVWFQSG8zYTJsb0F3TEZqeHpCcDBpVG85WHBzM3J3WkR6endRSVBqYnRteUJmUG56NWZBOE9MRmk1ZzRjYUtVL0QxbXpCZ3BMV1gxNnRWNCt1bW5ZVFFhc1dqUklqejk5Tk1lS3NYWFgzOE5vOUdJS1ZPbUlEczdHd0J3L1BoeDNIMzMzVEFhamRpNWN5Y21UNTdjd0RhemJ0MDZqd1RtdXJvNmxKYVdRaEFFRkJVVm9haW9TTFR6WU9mT25YamdnUWRnc1ZqdzdydnZTb0dzcGFXbG1EVnJGdDU0NHczb2REck1talVMdTNidHV1SVk1czJiaHkrKytBSW1rd2xUcDA3MUtGVzBhdFVxVEo4K0hlKysreTV5Y25KUVgrOHE2bEJTVW9LYW1oclliRFlVRlJXaHRMVDBpdGR2NTg2ZHVPKysrMkN4V1BEUlJ4OUprZkliTjI3RWtTTkhjUGJzV1R6eHhCTUFnUGZmZjk5RFBhT1U0dnZ2djhmdHQ5OSt4ZlZ3L3Z4NVBQLzg4OUwvYmQyNkZaOS8vamtZaGtGMWRUVXFLeXZCc3F3MHI2S3dMRHZMNFhBOFBISGl4R2dBWXZGS0ZRQ2xJQWdLQUFwS0tXRlpWbEpMVFNZVHFxcXFZTEZZVUYxZGpaeWNIQS9tVmxWVmhhMWJ0NkpkdTNiSXlja0JwUlJuenB6QitQSGpVVjFkamM4Ly85eGo3bDU5OVZXOC92cnJzRnF0ZU9TUlI3Qmp4dzdwdXcwYk51RG8wYU00ZmZvMHhvd1pJN0g3NWN1WFN5WU1vOUdJSjU5OFVnTENxVk9uWXZ2MjdjalB6M2RsZnpSV3R1aVAyRTZmUG8xdnYvMFdyN3p5Q3ViTm00ZXBVNmRpNU1pUjZOT25EenAxNm9UVTFGUWtKU1VoTmpZVzRlSGhKQ2dvaUdnMEdrYXBWQ29VQ29XeXNMQXdUaENFTituZlhJWVBIMDZ6czdNcHBaU1dscGJTRGgwNlVLZlRTV3RyYStteFk4Y29wWlN5TEV0bnpKaEJ0MnpaUWltbDlQNzc3NmViTm0yaTd0TFFkTUdDQlZTbjAxR2owVWpUMHRMbzFxMWI2WkFoUTJoVlZaWDBPNldscGZUTW1UUFM4Ykt5c3VqcDA2Y3BwWlQyNzk5ZkdrTjVlVG50M3IwN3BaVFM0OGVQMHhFalJsQlhOV3BLdi9ubUcvclVVMDlSU2luOTlOTlA2ZXpaczZuVDZaUytzOWxzMHU4SmdrQ3pzcktvVHFmek9OK2FtaHJhdFd2WEJ2TXdlUEJnYVF3V2k0VjI3dHlaT2h3T21wT1RRd2NOR2lTTjRZTVBQcURQUGZmY1pjZHc1c3daZXV1dHQxS3hSK2V1WGJ2bytQSGpwZCthUDM4K2ZmNzU1MzFlajAyYk50RlpzMmI1L001b05OS09IVHQ2ZkRacTFDaDYrUEJoU2ltbEhNZlJuajE3MHZ6OGZQcmRkOS9SZDk1NWgzNzQ0WWQwNE1DQnRMS3lrbzRkTzlaampvNGNPZExndHhwYkQzYTduV1prWk5EaTRtSktLYVYzM25rbjNiRmp4MlZMSnhrTUJwcVdsa1k1anFOMnUvMkQyYk5uWndCb0FTQUJRQlNBVUVKSUlNTXdHZ0JLaG1FVUdvMkdJWVNRd01CQUVoc2JpNFNFQkRBTWcwNmRPcUZQbno0WU9YSWtKaytlakNaTm1tREZpaFg0OXR0dnBScDVIMy84c1hULzkrdlhEL241K2Fpc3JFUkdSZ2JzZGpzb3BUaDQ4Q0NtVEpraWxTMWF0R2lSdE0vMDZkT3hmdjE2VUVveGR1eFluRGh4QXBSUzFOVFVvR3ZYcnFDVTRwZGZmc0dJRVNNZ3NzeTMzbnJyeHFtaTU4NmR3NFVMRnlUMVU5N3pVN1NwTlJKOEt6RzE1T1RrUllTUTJmZ0hpSml2MkxScFV6QU1BNlBSaUpDUUVLeGV2Um9yVnF4QWFHZ29jbkp5cENkN1lXR2hwRjRTUXZEdmYvOGJnTXZ6YkxmYk1YLytmUFRzMlZQSzd3UmNwV09lZi81NVdDd1dCQWNIbzZLaUFqelBTNnhJUEo3YzFwT2JtNHZ5OG5LTUhEbFNzdUcxYmV1cWRqSjU4bVFVRlJWaDJMQmhTRTFOeGJScDB4QVFjTW44ZWVUSUVhU2twRnhWM0JQUDg4alB6OGRUVHozbE1WNHgrVjZyMVVycWVYQndzRlRKcExFeEZCUVVvRzNidHBKNm5wYVdKdFhqRitWNnBRUmR2SGhSVXIyVVNpWGF0R21Ed3NKQ3BLZW5ZK2ZPblhBNEhKZzZkU29PSGp3SXBWTHBNVWVOSlhuN1dnOFJFUkdZT25VcVZxMWFoY21USjZPbXBnYjkrL2UvcXJYbDNoNFlOMjRjOXU3ZCs4R0pFeWZxdmJVcmQ4NG9MK2FYOGp4UFdaWVYrLy9CWnJOSmFtaDVlVGxpWTJOUlhWME5sVW9GaFVLQjA2ZFBTK1drNU9zb1B6OGZGb3RGVXJjRlFmQllFM0x6UldwcXFrZTFGMTlTVmxibTBTTlZwVkxkR0dETHo4LzNDV28rS25RMENPa1FiV290V3JUNHg0Q2FYSXhHSTFpV1JYQndNTFpzMlFLajBZZ3Z2M1JWSlg3MDBVZWwvNHVPamtaRlJZV1VFTDVueng1MDc5N2Q1U0ZpR0d6ZXZCbno1czNEZSsrOUorVXJybDY5R29tSmlWaXlaQWtBZUtnL1VWRlJxS3lzOUxDZmlaKzNiZHZXWjRYWnZMdzhQUHp3dzNqMjJXZHg3Tmd4UFBqZ2c5aTJiUnVpb3FJdWU5TVNRanlxc3dLQVFxRkFlSGc0UHZ6d1E2a3NraWlpK3UxTEdodERURXlNeHcxU1ZsYm1BZkxYVThUZkVwdnVpTC9WdkhselZGWldJakF3RUlNR0RjTGl4WXM5R3FaWUxCWWNQMzVjZWloZGFUMEFyaVQ4RVNOR2dHVlpUSnMyemNPdTZtdGV2VVd0VmovUXBrMGJZZFNvVWUrLytPS0xhQXpjUkFEaU9FNEtCUkVkQVlRUVhMeDRFZDI2ZFVOdGJTMFVDb1hrUURoKy9EaDY5KzR0SFU5Y1E5SFIwZGkwYVpOUE83Qjh6T1hsNWNqTXpCVEhLajNBNUNhT3FLaW9CdXI4SHc1c0pTVWxVdE1WYjZibWJWUHpGZEx4emp2dnFOeU9nam4vSkVCNzc3MzNNR1hLRkt4YXRRb2pSb3lBU3FWQ2JHeXNWQStydUxnWXUzYnRra3JzVEpzMlRmS2s1ZWJtNHF1dnZzS0dEUnZnZERxaFZxdVJrSkNBdDk1NkM3ZmZmanZhdFd1SC92MzdJeVltQmx1M2JzV09IVHR3NHNRSm5EbHpSckt4VFpvMENRc1hMc1NERHo3b2tZUFh0MjlmdlBMS0szajExVmZSdjM5LzdOaXhBMGxKU1pnOGVUS09IRG1DYmR1MlljNmNPYWlwcVlGYXJaYWV2bUxsaU9YTGx6YzQxL0R3Y0NnVUNuejExVmRvMHFRSjJyVnJoNWlZR0R6d3dBT1lNMmNPNXMyYmg3cTZPbXpac2dYLy9lOS9MenR2alkyaGE5ZXVJSVRnN2JmZlJrWkdCcFl0VzlhZ1NzVzFlcHMzYk5nQXU5ME9qdVB3M1hmZklUUTBGSU1HRGNMOTk5K1BKVXVXNE1rbm44VGV2WHNSRmhhR3RMUTBFRUlRR0JpSXRtM2JJams1R1VWRlJSNzlBRFp2M296aHc0Zjd2Tmw5clFmQTFVMXE4T0RCMkxCaEEvYnQ4eXlBbXBTVWhPTGlZdnp3d3c4SUNBaVFBTUpiRkFyRlF3c1hMblR1M0xuei9mMzc5emV3aTdyZjg0SWdTSEZ1bEZMaWNEZ29JUVR5cHVONnZWNEN0dFRVVkx6NzdydUlqSXlFeldaRGNYRXhBS0IxNjlabzNydzVGaTFhaFBIangrUFlzV093V0N5WU8zZXVOQTlkdTNhRnlXVEMvdjM3c1hqeFlnQkExNjVkOGZubm44UGhjT0NISDM2UXhwZVptWW4vKzcvL3czdnZ2WWRXclZwaHpabzFVQ3hkdXZRUHV6bXJxcXB3enQyalFON00yR0F3ZUJTSTlFNlRrc2VwclYrL2ZnbkRNQXYrU2FEMnhSZGZZTlNvVVRoNDhDQmF0R2lCdVhQblFxVlNJVEV4RVltSmlkaTNieC9pNCtNeFljSUVSRVZGSVRFeEVhMWF0VUpTVXBLckZwVlNpUmRlZUVIeUxDb1VDblR2M2gxQlFVSG8wYU1IenB3NWcvVDBkTFJyMXc0cWxRcUhEaDFDV2xvYWhnNGRpb1NFQk1URXhDQWpJd05XcXhWSGpoeEJ0MjdkY09qUUlVeWZQaDBLaFFLMzNYWWJjbk56Y2ZUb1ViUnAwd1lUSmt3QXd6QklUMDlIVUZBUWR1N2NDWXZGZ3NXTEYwdTlLdGV0VzRjbVRacElIanE1TUF5RFhyMTZZZCsrZmFpb3FFQmFXaHBDUTBPbGlyS2kralpyMWl5SnFRUUdCbnJVNllxTGkwT0xGaTBhSFFNaEJDTkhqa1IyZGphT0h6K09pUk1uTm1neTBySmxTOFRHeHZxOEpsRlJVUTA4ZDl1M2I0ZkZZa0czYnQxZ01CamdkRHFSbnA2TzlQUjBoSVdGWWZ2MjdZaUtpc0t6eno0cmxmU0ppSWhBdDI3ZEVCMGRqZWpvYUdSbVprcWU2T2VlZXc2UFAvNTRneWoreHRhRG5EdzBiOTRjQXdZTThOaFBxOVdpWThlTzJMTm5EM1E2SFRwMTZvU0FnQUFvRkFwMDY5Wk4rcit3c0RCMDdOZ3g0ODQ3NzdTLzlOSkxwMldNVDBRNEtxcWNjaWFuVkNxSjZOUUtDUW54cUtSQ0tVVmtaQ1NhTld1R0V5ZE9JQ2twQ1ZsWldVaExTNE5XcTBWV1ZoYXFxNnR4OE9CQnhNYkc0dDU3NzVYVTdkNjlleU12THc5bFpXVjQ5dGxuSmU5MXQyN2RVRnBhaXB5Y0hFeWFOQW14c2JIbzJyV3JWT3JxOE9IRHFLcXFRbng4L0IrWEs2clQ2WkNkbmUzQjFyeXpDcnpET3VSeGFtTHdyVHRPelM5Kzhjc05FTFBaL08rUWtKRC9BYkM1SzRNNEFMQ1FWUVlSYzB1VlNpVjFNMklxNXBXS1NmTVJFUkZTWG1seWNqSlNVbEtRbHBaMnc1TG0veEJWMUdhelNSM2FLeW9xVUZ0Yks3WEh1NXo2eWZNODVHbFNETU1zOWk4MXYvamx4a2x3Y1BCY25VNW5qWWlJV09kbVpoVHVXRGF2OUN2cUluWEVsYU5GQ0dVWUJnekRnQkFDOFcrbFVnbVZTZ1YzY2owNmR1ejR1MnZrL1NuQVJpbkYrZlBuVVZoWTZLRit5cXQwaUI1UWVaRkl0NnVXRVJQYTNibWYvb3dDdi9qbHhrcEFlSGo0WTFWVlZaYTR1TGl0MUpWYzZtMXZnN3VIZ3VCME9rWFBxQWh5SUlSSWRqWnhFd0ZPbzlFZ1BUM2RaeE9YbXhyWTVLQW1OaklXSFFVV2krV3lsVzhGUVNBMm0yMll1MHFIUC9mVEwzNzVjeVFtSmlabVprRkJnYkZGaXhZSHZKZ2JCVUFGUVJDOW81QUJHaEdMVjRxYkhOUkVZQXNJQ0pDYUt2OGxnSzJ3c0JBWEwxNUVXVm1aVDBlQjNXNXZrRlVnQyt0Z1RDWlROM2M5TlgvcEliLzQ1VThVUWtoS2NuTHlROGVQSDlkMzd0dzV4ODNjUkpXVWluMFJSTllHbVlOQlZFVzlHWnRTcVlSYXJZWmFyWmI2bXY1UmN0MjhvbFZWVlpKZHJieTgzS2RkclRFUHFGak9PelEwOUNWQ3lFRC9zdktMWDI0S2NHc2FFeE1UMnFsVHA5TmZmLzIxelExZWtxY1VQbXEydVZWUzhXLzU1NUIvTG9hK3lIdGNYRmZHZGoxYWg1bk5acHc1YzBaaWEySU9xSGViUElmRDRlRUJGZFhQdSs2NlN3SGdtZnI2ZW44NWI3LzQ1ZWFTNFptWm1UVXBLU212WGJod1FaQXhOMWY2Z2ZzUDl5dmNXUW5FblVJSCtlWjBPcVhOWFRVRTdkcTErMFBBVGZsN2F6NVJTcEdYbDRmaTRtSlVWRlEwc0tzMVZ0TGI3U3dnQUpobHk1WXRjRHFkTjZUeGl0aFQwYnZxeEpYRVlyRWdNRkFMUWhqL1V2ZkxQNDI1M2IxMTY5YnFsSlNVejkwNEpzakJqUkFSeHdUSzh6emhPSTY2YVJzVnZhUnlGZFhiWTlxK2ZmdnI3a3hRQmdVRi9xNEQ1T1hsb2JhMkJucTlEbWF6Q1ZhckJYYTdwSExLS25RNGlSaWRMUGVBMXRiV1RIVTdDMjZJOEx3VFRpZVBhejF2blU2SHlNaUlhK281YVRBWUVSSVM3RE9TM0M5KytTdEpVRkRnblB6OEM1VzMzSkt5RllBM2M1UCtUeEFFZ2VkNU9KMU9LQlFNNFRpT0twVktpYUhaN1RaWXJSYVl6U2JvOVRyVTF0YWdvcUw4dXJidUF3RGx0ZHlvM2xKV1ZvYXlzbkpVVjllZ3ZsNEhnOEVJczdsQmp3STN1RW1nUnR4VWxkVFcxdlFOQ0FoNEJqZXdMcHpyYVNIZ3Q1eTNhQUM5V2pHWlRBZ0xDOFh2bVdPLytPVW1FV1Y4ZlB6RHg0OGZxK3pjdWNzeFg4ek4vVW9FUVFEUDg1VGpuR0FZeml2a1F3bVZTZzIxV2dPTkpnQmFiU0NDZ29JUkdocmFJQ2Y0ZHcyMnNXcVhWNUxTOGpJY1Azc0JPbmRHZ2NGd0thbmRiTGJBYkxXQnZRUnNJbHNqdkNBUUtsQ21xS2d3SVNnb2FENkFsQnRMcXhrcHp1WmFWVzU1Y3U4ZnRjOGZJZnBqZTZCb2xvR1FxQnNURmtnNU82dzE5VkJHUkVPalZRTndvbUxySnRoc2dLcHBHeVJsdFBsYjNPbS9aVjV0aFRtd09LTVJuUkxYeUgvWVViWGpNQ0p2N1FlVm0rZzdpazZqN0ZnK0FJTFlRYU1SSE1wY3g3RkVJRG9sNFdwM3VhVjE2OWIzcjF5NXNuemF0R25sQU1SQVhmR1ZpcDVTbnVmaER0cVZRa0F1ZVVjdDd0QVB0YnNUbGhiQndVRUlDd3U3cHFZd2p0SmNHSXhheExaTGFuQk95bXRXazZnVml6N1lnUDFGNVNCMVpTaXZxVWZYdUZBb0xTWllMR2FVbEpXaHNONE13dGtnQ0VDSUVzVHBkTUxKY2NUQk9RbmdzcXU5azJ0KytybjQrQ0hrVDFpUWxPS2ExVU14UCs1YTl2c3QrL3dSVXZMWmNnUk4vZ3hodlFQLzhOK3EyL1laRHIveUpiVE5Xc0JSVm9CbTg5OUZtLzVKVUFVRXduSnVOODRkcUVLenpIWi9DMkQ3TGZOcU9MQUdoZnBNeEthT2JJem5JLys5enhEWTkxWm8zRVNmVVdxZzFnYmc0dHN2UUoxK0cwTERHNjZueXU4L1JzRHRhUWlMOFJ4THdmdExvZXoxR0pJNlJEYll4M3ppUjVRWU9pTTJOZkZhTko0QjQ4YU5LNXcyYmRwYk10WW15RmdiNElwemcxc2xwUXpERUlXQ29RNkhBa3FsYXhNekVkVHFTMjMrZ29PRDBiRmp4NnNtQXBiam0zSDJWQkxpMDVvMU9LZHJCemFvMFQrdERYbzJEVUZob1JxNzlwWmk3emtkdWtjb1lOYlg0V0tkRlluaGdlRHRRRVYxSFRFcmxWQUlUbkN1Q0dWQ0FNWlNtLy9ReURmMnpNekpURVhIRzV4YklEZGkvalkxbHZuRDl3RUVVREJ3NnF2QTBTQUVSbmg2alNnRUVEQ3dWNVZEMElRak1QelNZclpYbFlKWGhpSW9LdlRTRHF3ZG9BVE91bW9JbWpBRWhIcW10RGlOZGJBWkhRaU1pNGRDOWR0Qm1DL2RqLzJMVjZMSDJvMW8waXdVRUd5dzFuTmdHQTNpQjQ5QU1GT08vQUtMai9rUTRLaXBCc2NwRUpRUUE4K0hIUTliZVFVRVZUQUNZOEk5dnFNT0s4eFZ0ZERFeEVHdDFkeGs4K3I3bkFqUGdUb0ZVS3NCTmdzUUhCZmhPVDVuRFBwKyt4bUliSTYwemRxaGViTjJxUHhvQ1lDR2E1YzZuV2ovM0NvUVpjUFB6YWNPUU5scU9vZ1FEaWlWMGppbzRFVDg3Zk1RTC92czBqQTRXTXNyd0VUR0lTQlEwMkN0OEViSGZWVVZWWVZ4VGVMV0ErQjlxYVNDSUFpRUVPcDBPc0V3QkE0YkpZUXcxS1hCS0tGVXV0T3NWR29FYU5SUU9PelFLTFVJRFExMTI5c0UyQ3JMUVFNaVBhNERBSEM2S25Ba0JFVGdRSjI4TkIveWMxSmVxemVpb3FJZWFrNlBrcXBLMU5YVmd6aFoyTXdtV05RcTFPb01JQW9DY0M2N21vSlFjQ3dMRUVxb3E2WTZzVmhNL1pUT3V2a2NvMFN3a29DUUd3MXNsd0R1dHpDMmE5bnZ0K3dEQU9lZm1ZaUx1U293U2lXRXlvc0l2bjBoK3M0ZDdmclNlQXJyK3orRHBHRXhxRHlsQTh3NmRQamtKelJMTXVMUWZWTlJaNDJFeWxJR2tqWVJ0NzQ2R3lvR29FNE9oVy9OUjdGS0FYdkJHY1RQWG9IdWQ3a0tFaGIrNTFHYzNGU0NpT1lSTUY2b1E4WjNHeEVyUGR3ZE9QbmtUS2dHelVLN3JDNVhYaHMvckllcSt3UWtOSGVyRTRwQUJNbnlSd2dWUUhuQmF6NnFzWFB3ZUxBeExhR0NBU1pkS1BxdStoQ1JNUnBRVXpIMlRMa0g5dENXVUFzNjJCTUdJdXRWVjBrKy9lN1BzV2ZSSndodG13SjcyVVVrUC9rSjJnMXNmcFBNYStQbkJJR0g4ZWVWMkg3Z0t6Q1dNcUQxblJqNHhpd29BVlN1K3k5T2Zia0QrbU4xR0h4bUx5SzlzWnJqQUhpdUovYnN6OWo5L0Vld25QNFZyZC9laTdhM05uR3BaTWMyWWQvTFg4Q1NVd0pTOERqS1A5RWkrclpIMEdWeVB3QmxPSEQzazlBVm5rZkk3WXZSLytsTHBkcnR1WHV3ZTlZaU1FMWFnUzNNUTl4REw2SGJYWDE5clpXSDl4eklMdXpYSysyWVN4V2xBa0FFVVMxMXUwa0p6N0p3MnUxVVNRanNPaDM0NkhnM2ExT0M2TXRROVF1TFdwVWRRZXBnWEZUK2lJQjNYa0NndlF4NXp6d0hOclFaVUg4UlFVUG5vdmNUNDBBZzRPSnJzM0Z5WXlIQ1lqWGdXQWRJbTJUM2ZIaWUwelVCbTlWcWxjSTZhbXZyb0srdnh2SENTc1FGaDdyYWM5bnNJTHdBbzlFR284TkpGRlFBRlNpaERBaER3SXhic2lMOGtUVTduNnF2MHlkTUd6OFlLZW8vUXhIOWJjRDJlL2E3WmhEbG5YQkc5c0tvajU0Q01lWGhoOHp4cUpneUFnbnhTaGV2cURrRlJlWm1qRjdlRVFBTEo2dEUxZW8zVWFYcWg5SGZMNGJDYWNDdUlabkkyek1PN1Fja0Fyd1R5clFzREg1dUNwemxlN0Yrd0JLMEdyY0xFWUhWT1BmaFhtVHNPb1dFT0FCT0Zqd2pmOWdJTUp3NkFrMTczVldkZytYQ0JRUW45Mno4ZjZrQXdla05iQkhvczM0NzFDRXU2cDczd2hTYytXb1grajQySE9ZRFA2QStiRERHZmVFcWhNbXpyTFJ2NGVjZm9OblRuNkhUR05mVG5XZUZLNDd4eHMxcjQrY0VnWWNWeVJqNzdadFFDd2JzSE5RRCtZZnVRSnVlc1dneWZnNmFqQitMSDlwTWRBT1kxL2lkSEVBOWdVM1RiakNHZmpVWVIrN3FCdEJMYXkydzYyZ00vV28wanQvZkc2bzczMExhMEdUWmtSTFI1OHV2VVBMK1k3aFFUMlhIcytMSVkzT1FzT0JyZEJ6Y0dvTHBQRGIzbTRINk1Yc1JGZEpnclRSaHFXTGFzbVgvTGxpdzRCbUJVZ2lFUUlETVkwb3BCUVVFeWlpZzBBWlFGWnpFWEZ0RHRhR0JVQ2pzSUN3TGMxMDE0b2VQUkd5TEpvaUxqa1p0UlFWMi91ZFZKSTE4R2NObkRRR2NPdXdZT0FDbDQwYWlxZm9Ram41eUFVTVBiMFY0a0lEajl3OUdsZlNnOUR5bmEzTFhGUlFVb0t6TW5RTmFYNHVESjg3QW9RcENzc0lKczlrT2ptVWhjQUtjMUVuQVM0bnRFQVFRUWFERWtkenB5Ym45MncydEx6bVBWN2Nmd2FqVUVZaFR3UzgrSkxaUEwxZW5uWkJXaUdrRDFKOHFSMEs4ZTNGcVVuSEw2STZTYVVDcEJuUW5UeUt1NzVOUUFJQXlERTE2dDBmMTZkUEFBSmY5Sks2bnE0cXBNcUU3b3FJdW9qN2Zqb2dPa1lqdkdZa2pEMHhEOHBCK2lCODREUEh0NWZhV1FQVC82ZFFmZktZTXFqZStnOXp2ZHNObXRvT3RMa0tJdTV5ME5xMHJtRk1QWU5jY0IrSjZkRVh5eUpFSVVydm5wMmN2SFBqWExEalBqa0JVajM1SUh0RGxKcHBYWmFQbkJBQlJtWmxRTXdDWU1NUjNiNFg2N0d5ZzUwMlFjR1BLUlhXMkRZcTkzK0RZUVpkcVRwMmwwQldZRWRYUjUxb1pPSHYyN0xNTEZqenpzVnNsNWIzc2JkU04wSlRuZVRBcUJnTGxpYzNPVXFWQ0FjSnljQVpHUUNBc2pFWWpOQm9OQW1zS1VIK3NDSHowZWh5ci93VVVBT3Qwb0Q2bkJCR3FNMkRTTWhBZXhBQmdFTiszSjZyT05MYXFydFpRV2xLQzB0SlNWRmRYb2E2dUZrZE9uRUtKUTRIV29Vclk3YTVxSFZRUUlIQWNHTUpBelFDOFFBbEFDYVdVbWZiOGY4Wk5IZHJuNlo3TjR6R3lieCswNXdxeHJkRGlSN0JHNmNWbHZ0TUc0ZmRGa0JEM2xWZWk4MGZiMEh2eGRLaTVNdXdmUHhSNXgycCs4MUdEV2phSHNhRDRtdmF4N0YrSmd4K2ZSSmQzL29lUlc3YWc2LzFEM2RvTW9FenNnZEg3ZmtMS2tFNHc3VnFGSDI1L0RLeDd2NllQdkl3Ulg2NUFlSHdBemkrNUI0ZmUzM0hUek92bHpzbm5Yb3ppSmxsMEFxQ0tSUHpJTENSbVpTRXBheVI2ZkxvV1RXOEpiSFN0QkFZR3ppb3BLZTRMVnlVZURhVlVEVmY0bG9KU3FxQUFReWwxOXlybHdRUGdPQllzNjRDRDQ4QkJnTlZxaGNsa2hzRmdRRjJkRGpxT0FkdXFMVWlYTGtqS3lrS1hOLytIbEY3WEZncHlWY0JtTXBrOGVvQWVQM1VLWjR3VUhhSTBZTzAyMk8wT3NLd0RDZ0NVdFJPSEsyYU5VRUVnQkdDcXFrcVRRZ1BWVHhUVkdselRaemVneEVJUUhPQ1A3MnBNcXZjZWNCa3JUSG1vT1FkRWRyeThTejRpdlFPcTl1NEZEd0JPQXlyMjV5QlNWbUcyNnVCZWwvRzMvRmZVNlZvaHFrVUFBQmFzUlVCVVJqKzBtL2NzVXZyRndwZ3Y3K0xOSXVmLzV1RDg5cXRqYlFtang0SGR0eHBsQlFiM2ZXS0ZwZHB3eWUwVUdRbTJyQVJPdVhtanJBd0JyZElSSGhNRUNCYVUvYlQza3FIYVpBTEM0cEE0YWdLNnY3WVV5cEp6c0xwM1prMG1CTjNTQ1NuM1BveE9EOTRHL2JtOG0yWmVMM2RPQUZDM2J4OVl3WFc4eWwvekVOa2g3ZXJjZHBIaHNGeWhzWW0zS0RVYXNIWDFWL2ZQSVcwUTI5b0dxeWtjc2QyNklyWmJWNFMzYUFaVkVIUFp0ZEswYWRON3YvbG1UUk1SM0FCSTRBYUFvUUxQdU94dFRzSVRRSEJ5aEdVNU9EZ25XTjRKbTgwVnRPc0NOdzYwYVNES0NxdGdpd2lIdG5VcW9scTNoRG9rRUVHZE9vQm1INGJlSWdCd29uTHZ3Y2JQKzJyTzE1WFk3aTRZV1ZPS0EzbVZzTEYyN0NtM1FXRHRnQUFrQkNuaHBDQXF4dFc5QnRSVmg0NEJtS2lvdUhtUGp1emQ3WUZ2TitMb2tSam9hMnVSMExFblJpUnAvQWpXaUNocUQrTEhjWGVBcjc2STBBZGVjTnVCR3BmNE94OUgzQTkzNG9jUko2Q3lsWUdrUFlSVy9TK3BsZHpKTGRnNmNTdnNCV2ZRZk1sYmNEbWFxckZyMkZqd0NhbFFveDVHOHkwWU9GUWVpc0doY3RNM1VNY09SK3ZCSGE5OEV5WDNSNzkvVDhIKzIvc2pvRVVMT0VxTGtmTFNhblFZNm5JbWFMcU1SS3VXWDJGOXQ5N1FkQm1CMFI4c1F0U2dTVkMvZFJlMlREd0t4bGFQZ09oTERnRHp3Zi9oNThWZklxSk5DOWdLemlCNjVnS0V1YWZoN0lJN1VIUlJpNUFZTlhTNTFlajZ3ZU0zemJ3S2x6a25BTkFxeXZIVDdlUEFXTXJBZEhvTXQyUkVBZERoNEQzM1FGZnZnTkZRZ1FQalJrT3BiWUUrYTkrRTJNSzY5ZHo1MlBuWU9PUXZEVWI3bDc5RXE1NEp5RnZ4S1BMMkZNR2FXdzFTY2k4S1g5TWliZm4va056ZXRWZnlQUTlqMXhPUG9PeVRFTVRkK1RReXBnOUc3ZFozY1BqdExXQXJMOExCL1lyTisxZWl5WDBMMFhsOFQzUjc4M1hzZm5BcVN0NUxnWktyaGRtU2dDRS9mWXpneTZ3VlFram5VYU5HM1FIZ3Z6S1ZsSGZUVklGU1NnV25rd29BVlNyVmNEcWQ0RGlPRUo2bm5FQmh0OXZkd2J1dXloOVJQUWVnYXZ0S2JEeitFM0lpQXhCbERVUGZEZDhqSnI0dnVqN1FFajhQRzQ3UVdDMTRxbkUxREFRYW5CT2hHbW5RZ1FBQUlBQkpSRUZVVkxpaUNpb211SmVXaXVXSTZxRFhHM3gxbVhJbnVIT0U1d1ZDS1ZYWTdiYUpLcFhxZnk3ckw0ZHlnd1VhYlJDaXRIK09jYTI2dWhvc3l5RXg4ZHFvYlhaMkRsSlRXMG0xNi8rb2ZRRGc3Rk9qWWVtNkZCMkhKWUlUZ2hFVUZYVFYrN3JDRWtJUUZOVXcwTkZSVXdraElCVGFrRUFQOWNOV1dRa25WQWlPajhIMWNPZFExZ3B6ZVRWVU1mRUlDTHFLZUI2QmhhbTRFdXJZQkdnQ2xWNWZXV0dwcklVcUloWUJJWjdIWWcwMWNCZ2NDRXhJaEVKNWs4M3JaYzRKQUhoTEhXeG14aXZjNDJZUkFkYnlVbEJOQklLaVFxNTZyWlNWbGMxTlRFemFCY0FDVjJseE82V1VKWVJ3N3JMaXZIZEpjYTFXaThEQVFBUUZCU0VrSkFUaDRXR0lqSXhDYkd3czRrSUQwYXhaSzNUdW5ZbmtwRXRCdUd4ZEZaeE1NQUlqZ240Ylk3TllMQ2d0TFVWVmxieTJtZ2tXaTlXZEQzb3BiY3JwbEhKQmlTQzRnbkJMUzB2aVZTclYzRXVQU3hVU0lzUGhsNnNUZFVRYzFOZTRUMEJjNDhHV21waDRuOVlJYlh6Q2RSMDNVUWNpNUZwcWJURnFoRFJQYnVTclFJUWsrLzVPSFJZRGRkaE5PcStYT1NjQVVBUkZJVGpvWmwxNURBSVRrcTk1clNRa0pFejc5Tk5QY3U2NzczNGVBQTlRaWJYaFVvRktNWmVVS2hRS3dySXNkV1VrS0tCU0tXR3hxS1RPWW9HQldoaFlPOHBLU3hFVkdZbWdJTmVFcWFPdWZQMHVhMk83MUlURjFUSlBCRFZYYVc4SEhBNFdIT2VSTWlWNlFnbWxsTVRGeFQwT29Lc2ZvcTVORW1mOEgxSnVUZkZQaEg5ZS8xSkNDT2wweHgxM1RIRGIyVFNVUXU1SVlFUmNrR1VsZ09NNHduRXNIQTRXZHJzRE5wc05Gb3ZWblNTdlIxMWRMU29ySzZYV2ZWZHRXMnpzaThyS1NxL3kzaWFZelJiWWJGWVBwc2F5bkZSalNSQjRLY0hkYXJVTVpSaG1ydjl5WDd1RXRPN21ud1QvdlA0bEpUQXc4TUhjM1BOSFUxTmJId2JnZERHM1M3WTJTSW55VXJvVldKYURRc0ZLU2ZJMm13cG1zOXFkSks5RFVGQVFRa05ERVJFUmdmajQrS3ZrbkQ2RTR6Z3ZGZFJWVzgxbXM4Sm1zN3U5b0t4VTJsdXVnbEpLeWIzM1RsTm9OSnJIL1pmWkwzNzU1MG5MbGkybnBLU2t5RDJrS2plSll1QU8veEFFTVFURUNhZlRTVGlPQTh1S3JNME9tODBLczlrTWc4R0krdnA2VkZWVm83UzBGRmRiUDlJbnNMbENPNnJjS3FoQnFyTm1zOG1aR3V2UkFkcGRKWk5RU3BrUFB2aGdOb0JCL2t0ODdWSmRYWTNTMGpML1JQamxMeXNLaGFMLzRjTy9qQmFCalZLcUVzR05VcXFnbERMdTZ0bHlsVlRDRllmREJXNlg2cllaM0NwcEZVcEtTbjRic0JrTUJuZlBnaHJvZEhxWVRLNjJlV0xMUEhtTk5hZVRJL0l1VXdCSWZYMWRxa0toZU14L2VmM2lsMyt1UkVSRVROdXlaWE9TRjdoSnNXMEFpQ0FJTXRiR1Nhek5WWkRTN3JhM1dXQXlHYUhUNlZGYlc0UHk4bklZRElackJ6WjVoeWxYZVc4THJGWlBVRE9hektnMW1LQTNXV0ZqT2JuRGdCRTQ2NnhYTnV4TVhMQnVML2FXbVM0ZDJHbkhON3NQNGNtdnR1SGYyMCtneWtIOVYvOTZpOU9DMnRQblhjR2t2MU1xVnIrQWcrOXZ1KzVENUN0L3hZN1p5ejNHYURpMkhjZVd6TWUrMlhOeDVydTlFSDdYTHdqUW45aVA4eCsrZ3hOdnJvVEQ2N3VxclN0eGNQWmpPUExLaDdCYVpiL2tyTU8rKzJmQzVFK0d1VjdTOU5aYmI3M2REV3dlUWJzaWEvTjBKSGd5TnhIY3JGWWJ6R1lMakVhWFNscGRYWTJ5cXdoUzlnQzJxcW9xVkZaV3VoTGMzWEZxTGhYVUpyT3IyV0d3Mk1FUVZ5RVB3Y2tScHl0bWpWZ05GUU5uZjdUNVlTNHFFU05iL2o5NzV4MGZSWjMvLytmTWx1eG0wM3MyZ1NRa2hCWWdHQ0RTSVFLQ29LQUNJdllHbk9XOHM1ZXZEVTg1ejNMcXozWXFsa05SRWJGZ3BCY0ZSS1FIQ00yUWhQUmVOOXRuZm4vc0p0a1VVaENVMDNrOXpBT3ptNW41ek9mem1mZTg2K3R0NEtIM3Z1RkF2V3NMZjVUK0hVdHpiTXdkTVlqZzJqeHVYdkh6cjl6QUN0ckFkSlF0MXo3YVZIYjBxMlJrWFJtV3l0cXpQc1RqTHoxTDhNVXo4U3dpeXZsaUpYN0RKeEUzWXhUWmo5OU01b2JjWDNHRktqSmZlSVhxekQxa3Z2cHhpN21vM3Z3MlAvemphNkxuWG9lMmFDT2I3bnUxdWNKS0hVek1FQzBIM3QrZzdLT3pCSjFPZDBObTV1SEJIbHJiNmFLa0xiUzJsdjYyeHFvRWwwbGFYbDVCY1hFeEpTVWxYUmRzaFlXdVppelYxVlV0VEZDcjFZTE4xaWpZSlB5OXRZSldGQkFGQk5GVnhpOEFZdUhKN051UCtNVnkvNmplakVtK2dMa0pBaXYyRndCV05od3U0ZFpKSXhrYUU4SDhTMGRnUDNhVWcyWmw4YzhXaXI1ZXd2NlhsdUtvTzhuaHhZdlp2L2g1cWlxa1JpbEYxcHZQcy8yT085bjc4aElhVEYxN3BjaDFoUnhhL0FqYjczMkVnb3g4VDZsSDlqc3ZzZjJPTzluOTBwS1dtaytIZ3ZjSXg5YWFpSnZjcDhYSGc1OTVnNFJMSnhJMWNSYVJLU0dZQ290L3hVd0VNL0tqNWFUZWZ3MnRLekN6UDF4SzdNS0g2VEZxR0lNV1BZTDl1LzlTNW1IVlJNMituT0wvdm9kRmVlT2VOZlR1M2Z0S1dnWVJOQjdtYUtQVzFsUkw2aGxJc05tc1dLMHRUZExxNmlyS3lzb29MQ3pxbW1ETHkzTVZ1TGVPZ3JwTVVGZGFoMGVUNCthQWdTdUNLMW9zNXJuSHk2dW5KMFNFNEd5bzUxU2RsY1NJRUk2WFZnRk9ISktNU3VXK25LaENKZGR6c3RLdXJQeFpnay8vWVlTTkdZS29DU0k0TFkyd3RMSG85YTc1UHZIMEFvN3VxU0grdGx2UjVHOWt3OTB2ZGtsYkxscnhHZW9oMDRpZEVNZFAxOHlqdk1JQk9NaTRldzYvWkRwSldEQWZIL01lTnY3MTMxMDZYOTNQUDJCUEhJN2ZhYklyaTVjdElqdTNGLzB1SDNZT1pzaEM5ZEU4L1BzblVuL3lHRGF2UkFJaXlxbkphbmFYaUJFcEJJbDdLYzZ5S1J2cUxFR3RWbCtjbjU4M21xYmN0bVpmVzJOREp6ZWRlSXRBZ2t1NDJkMzViVzJqcEtXbEplVGw1WGNzMkd3Mkc4WEZybHJRNnVwcXR3bmE0QkVGUFUxNmg5TXB5TElzM3ZIUVl5cU5Sdk1YczgyR3QxYkZwMnZXY3MyS245RnIxTlRhSFlBM0krS0RXUEZqQm1YMURhemR1bzljV2NCc2RTZ3JmNWJnMjNzUXhtRkppTG9BSWxKVE1hYW1vdk1HS0NONzVTNlNIbjJjaU9Sa0JpNTZGT2U2NVZUVWQzNU8vNmxYMDNmS0tLS20zMGI4TUNjNUd6S1FTM2R5YktPVG9ZdnVJaWd4a2ZpNzcwWGNzWUtxaHM3UFYzdnlKSWJvbUhhL2E5aS9nbTJ2N1NOdCtSTDhmTThGbGJvSm14bFVtbUsyVEJ4TFpub3VhajA0Nmp6TkJoOThZblRVWlJVckcrb3NJakl5Y25aS1Nvck9yYlcxQ1NRMG1xWHRwWCs0dExiR0tHbUQyeVN0cHJ5OG5PTGlJbXkyOWw5Q2FwY0pXdGlpSDZpci9yT3haS3BaVzJ0TXhIVTZuYTQyZHBJa0NJSWd2UEwwWS9PQlZMMVdTNFBKeWRYVEwrRVNwNXE5T3pmanAzSFZoTjQyWXdyV3RUdTVmV2tXQS92MFpYelFDYndWZG85ekQwYzFEZFgrZUllNTFTVHZVUFMrMVZncWdVNzYxQm84a2lIMXhraktLOHR4bE5aaXRSU3k2OVlibTlSOXI2UWtzQUtkVVAvTE9PQTBOT2tWTzdZUmNQRnNBa1BQRlZlOEFhMGVuUFlJSnY2MEQwMUlFRDhzQnJXdnZ1MmZTazVsMzV4RmlLSTRiTTJhMVpORFE4TytCZXp1SHdkdVduRmN5YnVDdXk5cGs1engxTnEwV2xjZ1FhZHpCUktxcWhwTjBrSmkyeW5mVTV2TjVpWTZJbGN0cUdlVDQ1YjVhZzZIUTNBTE5jSHVjQW0xakFQNy9WUXExWHlBUHFHQi9ISzBITkZyTUtIQThlSnlFbnU0T2hKcHZRTzQ1L0tMM1M2YVFpWnM4K1grVUlWbDh1enVJQUZCY3Jha0hGTUg0QjFRUTBPcERlSzBZQ3JEWEJlQUxxZ0xPbzZIcjh0Y1dJUitzQkYxbUFFdlF6eWpQdjRVUXpmZlMzNlJjWmczdEorSEZEVHhXcEpzb2UwYmtTWDU0QjJJenZmWEZGZnFDT2pmZzVyTTQrZ3VHQWFtREtwTHd4Z1E3OXZDWEcwb01CRVNGOW51R0p4YWZ3eUJ2c28rT3hQUFozRHc3RWNlZWZqN1o1OWRiQVBzc2l3NzNBd2dUcmZXMXFKMW45c3lsSnVqcERaM2xMVFJKSzJob3NJVlNBZ1BEMGV2Yi9tQ0Vwdm9pS29hMitjMWVEUTh0amJXZ3VKd05QcldITmhzRGdBQldSYjIxRGh1WGJiL1ZIK0EyTDU5NlZlYncvUGJUN0JsLzE0K3paS1psZXdxSGk0NmxjdEhlMDZ3NmVBeC9yNTBFNE11SEVxY0l0Zk9zbElTZzYvNkJKbnZmVUhldWcwMG1BQkNpYjFpR0llZStRZkZHZnM1K01SaVZKUG5FT3pUK2VscTFuN00wVFhiS2ZqMkhiTDJhT2c1c1Q5Q1dDcDl4dHI0OGY3bktkNmZRZEhtTmV4KzRaMHVwWmo0alJpSmtMa0hVenNlaU1wTkt6bStlbmU3eCsyNWRnemJYMTdWNVdrbyt2WWpqbnkrQWFlOW5Ld1BQaVI3K3lFQWVsMTNQVGx2UEVQdTl6czU4UGl6YUtaY1M2aEhFYjFjY1lCeTB5QWkrclRWR2cvY01ZWHZuMTJ1N0xFemhDQUlmZSs3Nzc1SnRLMUc4RXo5YUpHMDYzQTArdldiVFZLTHhWVkxXbGRYNTg1dEsyODNrS0NhTy9jcWo5eTFLbXByYTlwcGVtekZabk9GWXAwT1J4Tjd4eVB2ZlJhazl2WjUzU3BxZzRaSEI0SEtpN1IrVVJ3NGxrVkdwWk03THgzSE1IZWZRNmZOd3BiTWJQYVgxREl3YVRBUGpJbm45K0FOTlpsTU9KMFNmbjUrM1RxdXRMU000T0RnYnZVSVBaTmp6blI4cnQzampYSFNoWmlPSHFRaHZ3akR3QXZSZXdzRWo1bU1xdXd3ZWF1M0lNYU9aUGlqZjBIYmhYNFR3ZU1tWXp1d2xwTE1XZ1krL1UvQ1kvd0FrZkFwTTFDVkhpUXZmUU8xaGJVRWp4eExVRnhrNTVSSCtranNHVXVwOFI1RFdLK1dMQytTdFFGMVdDeEJjYTFxQWFWaUR2L3piWXgzUEVaWWJOZVlZYXArMmtSRHJaYXc0UU1SR2t5SWZqMEo3bTFFRjNjQklWRjJUcVd2UllnZXpmQkhGcURWTkkrNjZKUFhhT2cxbmNReDdmYzk5UnN3ak9ENFNFVktuYW5Pck5NWk5Sck4razJiTmx0eDE0ODJVb2tMZ3REWVdkNnprNXdnaWdLaXFITC9pTzRPVnlwM2x5czFXcTBXbmM2TG9LQ2dGdlJnd2pmZmZPM1J5NkJSdU5XNm1Ud2FrM1BOV0N5TlhHc093ZWwwaXJJc2l6YWI5VjZWU3ZYcy85TGtudTk4YkdjNnZ2OFYyTEkyc1BIcEg1bjh3ZU5kZXJIWk1yNWcxU00vTStQYjV6aW5IbGxIQlZ1dStBdURQdnlVb0VCUmtVTG5DTlhWMWY4S0RBeGFpWXV6elNRSVFnTXVENjFORUFTSElBaVNTcVdTR2puYmREb3ZXYWZUNCsydHgyQXc0T1BqaTUrZkgwRkJnWVNHaGhFVlpTUXVMbzcrL2ZzVEh4L2ZiSXA2Qmd6Y1pKR05HaHAydThPdEVqb0ZkM3BIVStuVW5qMjdmVlVxMWMzS1Vpbm9EclR4RTVuYVJhRUdvRTJhd2VWZkxlYWNoNW5Vd1l6L1pya2kxTTR4L1AzOXI3ei8vdnQ4RzgxUmQ0UlVSYXRTSzNkdUd3NkhLMUpxdHp1dzJld2VVVkpYYmx0aklLRzB0SlNHaHViUXZPZ3FjcTl2WlhxMnpGbHJqMnR0NE1DQk53SUt1WldDY3d0UmphaFdoTTBmeU5jVy8rQ0REMDV3QzdaMmZXMnRPZHZhNXJaWld3UVNYRVh5cmtCQzA3WnBXZVRlbUsvV05oTHFadTRRQU9HNjY2NVZxVlNxRzVSbFVxQkFRWGNSRkJRMG8xZXZYdHAydERheFVXdnpxRWhveXAxdERpUjRrbEkyRnNtNzBqOHNGb3RMc0xtME5WZVJlenRDelpPU3FFbGJlL2ZkZDY4REJpcExkUGJoSXRWVFVnb1UvS0cxdGdIYnRtMGQweFd0clgzTnJWRzROUmJKdDB6L0FCQmJwbmZZV3ZqV25FNm5PMit0bVJrWEVOVnE5WFhLOHB4THdlYW5USVNDUHpUQ3c4T251UVZhbzlhbXBoVVpaV00xUXFNTWF1bHJzNTAyL2NQaGNLQnVyQWR0MU5ZYTg5V2FLd3lhZkd1NEtiK25BcU9yYTJ1cHNZdEVCZnJRcmd2RUtZT3FkUUtBazZLcU9nemV2dmg1cVpUVlBRMksxM3hLVmJFVk1hUVhmYWFQNmRJeHR2d2psQlNLOUJqZXA4dlhzUmNmSVd2Tno4aEErTVFyQ0lvK1Y1cWloT1JvVzAwcXFOVm5wU3RXaXl0VjVaS3p0NHhlRjNXREJyd3VuMk5mYkVRQ0FsTXZKcUpmMStpbks3YXZSdFY3SEFGaDNsMitWTVhXZEVxenloRjA0Y1RQbmNMWlN1V1VHaW9vM0xJTnEwbkVlT21sNkhXLzNYNDFuZGhOclRXVXlLU1lMaDhqaXVLSTQ4ZVBKYnNweEJ1TDQrMXVyYzNwTmtlYk5EYW4wNG5EWnNGVVg0OVRxNFhRU0x5OHZGclZrVFpxYlNXSXJuclE1Z29ERDIydFRjQUFFTFJxMjlWMy9mc0RwcjMxTFgvLzZFdEd2N1NDSGFXTjlYWldudnZvQzBZKzlSOFNGaTNIczBUVllhcGcvaXNmc2VDenpWejY0bEkrUEZLbVNMRFRRT1ZsUUZOemhEMnZmTjdsWXhyMmZjdStEOVoyenlRUXRXZ01Cb28vZVpIQ3pLcHpkaituM25tWWxTbERXWm1TekNmR2FENGZNcFNWS1VQWitNUkh2K3E4K1I4dDVzaUdJeTFmblFXNytQbUYvM2J2UktJYWpjRkE1ZG9QeWY3eGVKY1B5MzdqTVlvT1ZYZnZVbDU2dEdJNSs1OTZuYk5YYXU5ZzkwMlg4TXVtUTVoTHk1SE9JVHZKd1lkdW9yaXc1UVVxTnkwajg4dGQzVDVYYkd6c1JFOXp0RldFVkdnZFNIQTZuVGhsR1d0MU9mV1ZkVTBWQ1dhenBVbHJjOVdSbGlFMlVoSjVDalYzaFlGbjBBQlpsb1hxNnFxQmdrbzdlOEdzbVd4L1lCNHI3NzZPQi9wN3NXakR3Y1pIa3NrakwyVFZnb3RvL2U1ZjlmMlAxUFVjekRjTEwyZmxOVU41K2F2dFZDajBNTzBpZE1LbDlKcWNlbnJ0cktLRTJsT0ZPTnVaUDJkREhYWDVwYlNoOFpSc21FN2xZREZabWo1U2g4VVRQM3NXZ1ZHK3AzMWdHdkpQVVY5U3hhK2hCZTE1MjNQTU9yQ2ZXUWRXNGVjZHlLaTErNWwxWUQ4VG43cTJlWGlTUzdNejVlZGdxYk4wcnFFNEhKaU9IYURtVkRtU3cwR2I5cmlTamJxY2ZPeTJMbXd5UXdTOVpzOGlOUEUwcmVVY05rejVwekJWdE0vY2FpMHR4RnpUME01YTFGQ2JrOTlpblFLSHB4RS80eUpPRitpVkxDWnFjM0t3TmxpNk9Mc1NraU9mc24waVNZc2VwUDlmYnNEZ29VQTZUUlhVbmNwdmQ2L0lBQTRMZFRrNVhab255ZUdnZXVjV1REVTIxNXkzdS9lSzJ6Szl1SzloYldoWmNxTFJhQzdidUhGRER3K05yY2tjYmZLMXVWc091SVFhZ3VqdERSb1ZEbWRqTGFrSHRWRmREYVU1MlJSazU2SDJUTzlvTHB0eTRuUktTRkt6eGdhSUJvUGhLaEJKOHVqZzNqUElIMHRKSS8yUW1pRzlvcUFtcDgwVTdzZ3FaTUpGWXdFSWp1bEZQOGRXZHBZNXVTUmNNVW03WTlMdHZHb01aZVpJdkgwbHFyTWJTSDMvRTZMNnVKcnUyZzZ2WnMyc3pXaW93cXdmeHVSUG5rZXZCZk94TFd5ZS95QXFZeUxXN09ORTNQNHZobDgvcnNNcnlYVzViSms5RDR0dkw3UnlKWmFvU1V4N3Biay9qKzNZSnJZdVdrN3lHMjhSN1A4cjcrcklsM3l5NEhNU2V0VlJWaVJocjNJd2V2MWFMSi9ldy9IU2tWejAyQ3pBd3BhUi9ZajlPSnNZelE3Vy9lMUZMQ2NPWWpjOFJmVjNBUmhHem1ITVBYUGM1bWdXVzY2Ymk2MnVudXBTUHlhdlgwSEFHVnJaOWhQcldIWE4wL2oyN29WVWZoSXBiam9YdmZFZ1dyZGd5bjcxWG5MVktpelptVVRlL1JLcDE0OEhKRTY5OHdpN2wveUVmM3dRdGZsMlJuNjRqUERZamdkUnZmbDlOai80THY3OUU3QVVaQkh6NEZJR1RJenI4Smk4OS83QjRXOTJVbHRUeEUvejVxSldCekRzL1hjSjlvV0M5eDdocHplMkVSQVhTSFd1alpHZmZVcGtuR3V4Q3BmY3o0R2RFbUwyTHB3YWI2eit5Y3o4NUorbmRRMlVyL3NQdTk5ZVExMjJtWXA3cnVhRVFVWFArVS9SZi9JQUFNejd2bWI5dGN1UktuNUI2bk1OVTkrK0Z4VlF2V001UDl6OVBQbytmVEVkKzRYRWY3emJkQXpBOE9HcFk0RlRicTNOQnJJTkJCV3k3SlJsV1pSQWxweE9XUkJFMUdxWDVpWkxNb0xrYkpIKzBWQnlncjBydmlReTJraUoxSUM2dFcrdDBWSG4wdGFhVGRCdnYvMVdKNHJpVlMxWDNjUjdPN09ZTStteVRyYUhsYkk2QnlQOFJGNzRiQTNKbzBjUjdnTmx0V1lJOTFIa1ZkY05HWWE4dXdhdHIrc0JLZnJnRWZhL3M1S29GMjV4elhLMWxxbHJ2OFNnczdIN3FsRmtmcjJmbE5tSjdQN3IzNGgrN0RNR1RleURWSGVNNzhiZVNzWGxXd251NERtcjM1NU9WZkFVcnZqNE1kZmJ1QlU5akxPdWxJcjloN0NkSlh0S1ByR0h3QmMya3pyY0NBNExUcUR3ZENaMDlBaW1yRmpCOFNmbVVoWDNkMUp2YktuZFNxVW1CcTc5bW1CL2tkMVhEU2YzK3l3Q3BzZWZtVnNnYWdTWC9yZ1ZqUnJBd3JZcFE4bmRQWi9ldzEwdkUrM2dTNW40MUR3Y2hWdjVhc0pqSk03YWdpRjdOVHYvYzR5TE4yL0N6MWVrL0l0bitPbjU5NW4rZXNldFFMS1h2a3Zjb3grUVBLTTNJT0hzZ2hiVjQrYkg2WEh6S1ZZbFhNM0lGU3NJYXN4a3Jzdmc1Myt1Wi9TMnJZU0g2Y2gvL1c1MlBmYytsNzNWL0hLcTJubVVTemF0SXlCWWg5Tmk2ZERmR1RKNUFWTW1MMkRyaERpaVh2MmNYcjFicGt5YkhVWXUvK1k1MUpZYzBnZk5wS3ppWGlKOEM5bDUrejlJV3JxUlhrbWgyUE8zOFBYTXA0aWJ1QnczVlNBK1BvWnA4K2JOVzdGczJUS3J5eHhGSXlEYlpSQUZ3ZldmNENLenhlbDB5azZuVTVBbFdSYWNUbmN0cWJzQmpDR0E2Tm16aUl3TXAyZlBDTlNOVVZDWEdlcjBTUEZvNlYrYk9ISGliS0M1ejd4azUvVXZWdU5JU0dWQi8rQ3VlblV3NkRSb1JFR1JVV2VJbXUwcnlmdzRIVk5GSFk3cUVxUyt6ZThhUThwb0REb0FMU0dqaDNIOHdDR1lBcVdIektpMmZzN2VIU0FqSVR2eXFjcXVKM2pRNlY4cStxUVV4SXpiMkhLM2xmRFVGSHBPbTRiQm96Sk1QM1F1Y3c3UFBYczNGbk1odllhN1RVRzE3bGZWRWF2aWt3ajJkejE0aHVoSTZxcXJ6L2hjZ21qaHhQT0x5ZDk1QUx0VndweFRTMEJsRGVBU2JPRWpScm1HYkJ4R2NQQkpLck1zbUhkdkEyL0lldmxaVnd2MHloUFVIUFRDNlhZZW5RNWhJMGJ5NHpOMzREaHlDY0dwWStrNTRZSXpIcmZsV0FibXFHR0VoYm1pQ0JGangxQzdOTDNGR0FJbXppVEFYY3V0MHYyNmFFTmd5aEJYZFlndUFrTklEWlphY0pidm9yekdpNkF2LzBQVmw0QmtScXpNcEtZSzlNMGlJL3I1NS8rVnVtelpzczJONXFqc01rY2RJRHRsR2NubGI1TmtTWEsyMHRnOG9xUmFNOFUvYmFHaXBwNENqUmZxUmhQVTZXeWQ0dEdja0F1SWFyVnFsc2Y3bWs5WHJXYXJHTWY3VS92VGVWNjRGNkcrYXNwcW5meGx4a1ZBQS8rcGgxQS92U0twT3JZOFc3b3FUcTVqeTZQTEdmZkZmd21MRGFicTZ4Zlo4cld0SXdYUGRSSk5FQkhUcHVMalhxZ2VVNmZqRysvZDRiWFUwYWxjdW0wOVJWdTNVdmpOVXRMZldjdk16VytoUFVlM0t1b05wOWxIVXRPL2NoZDVTUVZQQjFZM2loYmFlOTFtdi9vUSthVXBqRjIyQ0oyM210M1hEVU9XNU5PZndYMDlyNWpCUkUyZDZ2NThLajF2RG1neGxQYXVGWFhiODF5U3RwK2lyVDl4N0xIcktienVWVVl0U0R0bjIwdnJjL2FlUDBFOFRkR2JmelJSVTZjMmxjVDFtRGE3alZzZ0xDd3NEZGpXeXRmbW1iQXJ1MUkvWEpSR3Nvd2dPSjJ5UzJhNTNHaFZtWWRCTmpKZ1NoclJQWXlJemNtNHp2YlNPNUJsV2FpcXFrd1NCT0hpUm45Wit2cjFmRllYd2p0WHBqU3BsSjF0bVpHSlJqWWZ5d2FnTFBja3g5U1JwSVlxL3JYVHpsaHdDT3J5WEV3ZWNzdGVWSVFjMlpmZzJHREFRZDY2bG8xSFRIdTJVVzhCc0ZHK2JSZWhBd2VCYjEvQytwaHBxQXNnYkdnS1lVTlRDSWlMUVdOb1hqaHRTQWgxQlMwYnFEanE2c0Evbk9qcHN4ajIwcE9vODQ3aTZmdTFaVzFsKzEwUFUxbDM3dWJBS3lDQUJqZjlzN1A0QUpWRkxjbVIxSG9EbHNyeXMvZWdod1JoT3RXU2JycWhvSUNBSWNQUWVhdHhWaHlpYUdkTFBybVNIVnRkODFXNGk0cXEzZ1RINlFnWlBocHIxaUgwL1lZMHpibWZNYWhabUJtQzBEcUtNVlcxbE5TMnVqb004Y2trM0xpUTVQbVhVWDMweEJuZmk2N1BJSFFGdXlndGRRVWhpbi9ZaWwveTRGL05xS1AyMVdNcjcxb0VYUlUzakJCeXNScGltK2NoTGdwTnE3ZWpXcTFPMjdCaGZZOTJCSnVxMFdKc2xFZVNKQ0VMNExEWlduUzJzcGdhRVB6OWNUaXQxSmRubzI0VWFtMnJESnFDQm9LUGo4L2x6Y1owQ1lzM1pWR3I4eUx0V1Zlb1hSdmFpKzBMSndEdzVOc2ZrRjVzbzg3bVlNYWlKU1FOSHNhSE13WXhmY3dvdm50bkZaZTllWkthcWxyK2V2azBncFVTd05NTHRyQVJESjRad3VvTFI2QTJwbkR4dDYraEh6WVZJMit6ZXVaY3RHSWR1cUNRbG9JZ1NPS0hXWmVqcGdxTDcwUW16eGdFd05CWFgrYjcrZGVTOTFZQ2FuczU5U1lqazlZdmFTTFE3WFhMUFd5NitUNitmRjlIM045ZkpQbktvZFR2K0lpTi8vY0pnWDNqTUdkbkVuTDdRL2g3dkpTZDVTZkovdXdyWWg1YlROQTVTbjhMbVhnRnFuL09JWDNtVDZqOUl0R0Z0TlJ6akpkZno5RmJIK0tiMWEvZ04vNTZ4ajk2N2ErNlh2VGNCWnlZTjUrVkk5OGs0cHFIR0huSE5HS3V1WlgxQ3haUXQzRWdsaHJRSjdSa1hiRWZXTTJhMld1d1pHY1MrOWovSThBYkdEQ1YxSnUyczM3Q09Qejd4V0krbFkzZnBROHk5cDVMM1U5eVR3YmZkeEZiMDBhZzhvdGhUUG9LZ24zZ3lFTnp5RDJweHpkVVM5WHhVbExlL3R1WjM0enZJRklmdXBqdDB5ZmpIeDlNZGJhTmtaOHMrdFZya25EVFFyYmZQWk5mL0EzRTNQMFNBNmNuZGZDbU1KTDYya05zdldrS0orTDdJbGVWWWdsS1pmcEhpOW9JMkdIRGhxVUN1WjdDVFpabHUrQ0trRXF5SUxqTlVRbVZsdzdKVkU5VnRnbGJZRGphV0M5MDRVWnFNMzhpcS93a0pZSU9ZZkRnd2U3K0JtWXNGb3RndFZxeDIrMkN3K0VRM0NGWGxkUHAyQVAwUHh1MlZVbFZQWHFEQVQvdDc2T3RuZSswUlozRGdTay9IMVZnQkRwRFc3K0lzNkdPaGxvTFBoR2hyY3dkaVliQ2ZHU3ZRQXpCWFpORWtxMEJVM0U1bXNBd2RMNjYzMlc5Wkp1Sit0STZ2S01qK0wzMGUyZERIUTJsTlhqM2pFYlZ6c3ZZV2xhTXBQTkQ3OXZTdkpjc0preWxGWGlGUmFEVmRXMFAyR3JLc05aWThUWkdvem9MbENaT1V3ME5GU2E4bzQzdGp2MjNjYW5ZTU9VWEkvcUhvUGR2UDVsWmx1V2pvcWk2QTZnSDZuQlJHcGtCaTRCZ0YwVEJLUWlDcEZhclpZMUdJM3Q1ZWFIVDZXUzlYbyszdDdlTDBzaGJqNDlXVDFqUEhpNk5yZGtFYmRiWWNDZkltVXoxYVdkSHFMa2NIdUdCU3JuUXJ6UUdNRVRIbmw3OTkvYkYxOXUzM2JuM052YnMzbXBwdmZIdDJmTjN2VnRCYThBMzJ2Qzdqa0hsN1l0dkI2a2FYcUh0VnlxSU9nTytQYnMzZHExL0tGci9zemgyZ3orK0J2L2ZkOHVLV2d5ZDdDTkJFUG9lUEpqUmQrREFRZnZibUtQSVRtUWtRUkFFU1hKcGJZMkJCTTg2VW9ja0kyblYyR3dXeE1iR0xNMjVhODMrTlVEdzh2SzZUQkVtQ2hRb09OZUlqNDhmMGNvVWJjMzRRWE9abFlTbjdQSXNrTGRhYllnZXZqWEI3VnNUUEJ4Mm9pQUkwNVVwVjZCQXdibUdYcTlQbzduNm9OMFdmYTRmcVpINVEyaWhzVFYxdHJJMWFteVNSK0RBcGFrQmd0bmNNQldJVXFaY2dRSUZ2d0dNUjQ4ZUdVakw4cXBHeG8vRzFETkJranlMNDVzMXQyYjJqeWJCMW9aenplWGUwR3FuS25QOTI2SzB0SlQ4L0FKbEloVDhLUkVURXpQTVUyTnptNk9xVnVab0M2NDJONFY0QzYxTmRBY01tbFM3eGdQZFpxZ2kyQlFvVVBDYlFhZlRqVytscmJWbmpyYVFXYTBEQ1hhN0hkSFRERzNVMUFDaG9jRTBvWDB6MU1uT2pNTXNXcm1CZTVkdjR2MTl1UjcwS3pKWmVYbDh1bTB2cjI0OFNLM0hVUTVyQTlzUEhlZXRqVHRabmxtaXJPQnZpRVAzWGNHSkhjWG53VWdrZnI1NlBBV24vamh6YXl2TnBicXc0Z3lQcm1QYlpaZFMycVhEYlZSbEhNSitGaGh4YWpjdFljTVRTOC9xUE1nTkZaUWV5VzN6K2MvWGpDVXZwM3ZtYUViR2dUNGVXbHNMamEzeHB5VlhtOVFtUWlxMk1rUHhNRU1udHI4MzYvaHFieUY5WW1QRXpSS1VBQUFnQUVsRVFWUzR0SDhVbTdkczRQRWZHa2R1NXIzMWV6aFNYTUpiUDJTMkVHeWxlVG04c3plYi9iK2M1SXRqaW1EN0xXRXRLOEJ1dHAwSEl4R0pucmNRdjhBL2tPdGcxU3ZzV2JMK2pBVzlwU0FQUjFlNlRWUE9qcXR2cE5wOEZsNHZwa29heXM0dS81NlUrd01iL3ZwaW04OHRlVG5ZN2QwN1Y2OWV2Wkk5TmJiVG1LTjRtcVBOV3B0THNLbWJvNkdOVEI0dU0xUVV4ZllGbXhqQTRoc25OZjBhMkZER1gvYm53dGhZd0p0bmJwNEpOVGw4YzNCblN6R2MwSjhQRXZxemVzTmFQcWhUaE0yNVFQWE9kSTR2WDQ4ZERRRWpwOUgveXZGTlNicTI0cVBzZSt4MXpGWmZFdjkyTnlGR1g4QkMzcklQS2RwN0ZMdGRUZkNrV2ZTWm5vb0FWUCtjVG1XbG5vWTlHNmlwRkltNzZYYU1TZTRpZFVjZDJlKy9RK0grazNqRkQ2SC93cHZ3OXU0NCs5TjA2QWRPck5vT29oYnYwYTBFYjg1K01wZDhncW5haWlGK0NIMFgzdEE1QSt4cHhsQ3pkdzFGQmY3MHZYUUVBSldiVjFJbEpSSi9VUkpsNno2aVFXMmtjbk02Rm1jd0NmUHZJRFRXMy8yd2wzTDhuWGVveUNyQmtEU08vcmRjaVZiZHFJMlVjZUs5OXlnN1VvQlh6MFFTYnI2VkFQOXFNbDkrbjRvOUdkVFZsYkYvY1RaQ1pES0RiM1I1Ynh3VldSeDk5ME9xVDlVU01QWXkrbDJWNWs0d3RwSDMwVnVjMm5tU2dMVEpkRVVCcS94K0JhZCszSS9aVk1PSkZ4WlRvQldKbkxPUThIaC8xL21XdlV2ZWpxT29qUWtrenAvZlZOamVzUUpZemJHWG42VTh1NHJJV1RmVGEweS9KczB3Ly9QM3lQdmhFS3FJUkJJWGRuNiszQTllb3ZMZ0FlVGlYUFl0WG95Z0NxVDMzeFkya1NhWVQreGs5NUpQc1h0Rk0rQ2V1L0Z6bDdCWThqTTQ5czdIMUZVN0NKMTZOWWxUaGlJQTN0N2VJNERQV3B1aWplWW9zaVE1SlVuQTZVUWxxbVZKSXdsT3UwMDIxZFJna3lRc1h0NklqVkxQblpTTExDTlVWbGIwcDR2TldvNlVscE5vREZHa3l1OE11V1FuRytZL1Qrak1hK2x6M1JVSTVwb1dSSUFubDM5RjZDV3pDZEJscy9YQjE1cE1vWnBDTzFHenI2UDN2R2tVdlhJN0I5Y2NBNkJtVnpvNy92WTRtcFJweEU3b3dZNnJyNldpUmdJY1pOdzloMTh5blNRc21JK1BlUThiLy9ydlRoOVFUWGdzWVdtaktmbjhWVnFTYlRTdzg2YnJjZmE1bUg3emI4US9RTUxhNlJ2KzlHUHc2enVJd2xmdjQ4VHVRbXhaVy9uaDRmOFFNQ2pScGZPcy80d2REN3hJNE9TNUdCTWRiTG4yVHN3T2x4V3k4NW9abEptTUpONTJJeHo5akIrZVc5NWtvZncwN3pJS0NuMUp1RzArNGIyOHFNMnRCTFV2d2VQUzhFOE1ReHZkbDdDME5NS0hKcnB2S1o4dE0rZlFFSkJDbjl1dW92N2JaOW45d1hZQVNqNTlsbDJmSGlMdXBoc1I5cTJrckxEenluNWQzRURDMGxKUmE3MElISk5HV05wNGZJSmNuSWlGU3g1ajE2Y1p4TjUwTXdHYWs2eWZkMStYbUhucjFuMUtRK1NGeE04Y3lhRTdyeUwzbUl0RU0rdTV2N0IvVlRheE44MG5OS3lVemRjOTFPbjUvSWVPSVdSWUV2aEdFSjZXUnRpNEM5MDBUeTZ0TkdkRk9zWloxNkF0M2NKUHp5OXpPYlJLOTdOdTVpMklneWJSWjk1bEZMNThCNGMzWlFHdVppK3JWMzhYMlo2ZkRWa1daQVJCRUFRUWFIS2pPZTFXbktqUkJJZWlEZENoYmwzd2pxczJkSHhYSHFaVDJZZDU4N0NUZCs3c3AwaVczOXQ3MVZDSnc2RkhiNHdtSkQ2Q2tPU1czOGRkZHlmUkkvb2pSMTFOeHVVZllBTzBoRExncnpkUnNYOC81bW9iL29QaUtOOTFFS2E0K2lZRVhId05mYWFNQWtZUnQrSTljamNkSTJoVUpjYzJPcG00Nnk1OE5CQjA5NzFrcFY1TFZjTzlCSGRBL2E4TjdZa3gxTWd2YlRRN0s1WnFLNEZoWVFRTVNDSjRZSExuUXJ4MFp3ZGpNREx5dGFkWmM4dHQ1QmhxNmZ2aVJ3U0hOcGN6UmM1YlNPeVlZVEJtTUxrZkRpQi9ieFV4NnZYa2x2ZG41cjFYb3dMODc3MkRyMmU4anVYUk9ZZ1pxOGtwVHVES3IyNTNNWnNrTjlkR2hxZW1ZajhVUVprMkhtTnFNeWRjMWZybDFCaW5NZjZHaTVHQlFYZmR5S3BGWHpIOHhsSGtybGhKNzc5K2pmR0NPSXo5NytmRWgxZDJlci9lUGZ2ZzNkTVhqVVpIU0dvcW9ZWm1vWkc5NGl2NlB2UTl4Z3NpSVBrSmNwWmVRTUdKbDRqcjNYRUpsK2FDUzBtK0tnMEI2RGZ6TTNMVGZ5QW1makJIbHV3aWVkT1BoSWFva2Z2ZlQrN1NFUlJsT1lpSlAzMTlWMERTTUh4VitRaUd2QmJ6MElqZUMvK09jV2dnZ2ZaWnJIck9WVjllOFBuN2FNYmZTdjlwbzVHQWdRdXVZTWZ5ZEpMU1hKeDFLU2twL1lFOFQzTlVFSVNtWkYwRVFVQVVaVUhFcFpocHZORDVhbkE2ck5nRkw1ZGdhK3p1M3ZpalVxbkdkamJaRlVVNUxQajhBSXR1bUVtaVFhbG0vNzJoaXB2RXlIc3lPSERuSEg0b3RHSzg1dStNZUdCdVUzMmxWNkNyNUYzUWFSRWNEaVRBV1pISitoazM0VDF5S2dFUi9qUVUxeVA1TkZOU2UwZUVOdjIvUGpTTTZzb1NIS1hsV0MyRjdMcjF4aVlhSHEra0pMQUMzbWN5OGtDR3Zmb00rMTk5bUMvK25rZkFpTXNZOGNxVCtIYXdweHlsUlIyT1FkZG5QREdKaXpoZU1KanhvMW8yR05HSE5kSi9hL0UyK3ROUVhrMkRzeGlwTW9OdE45ellQS29COFVpQXRiQVlUVXg4dCtpYTZvdnpjUnpkdzVZYm12c25CUGNlN2pwZmFSMUJZV0Z1VlN3Q1E4Q3ZLUWcxWXlrMW8ydTBtTVJBREdGZ3E2d0RPdVpJMUlWRk5ia3BkTVl3R3JJcW9hWUlzOW5Nb1h0djVXalRtK0FDVk5qYzh1WE0vS3JxUUpkVFZhVlJJVnV0cnBFWEZXRDY4UWliYjlqY3JQa05hUzV5Q2dnSVNBWTJlR2hycmg4QkFWa1dKS2RUa0oyU0lJb3FKRW1TSGVaYW9hYlVLaHQ4ZkJGMHRyWWEyNzMzM3FzU0JLRkQzdWk2aWdKdStXZ2JkODZkd2JnSWIwV3FuQmRRMC9PV0IrbDV5NFBZU2pOWU4yNDJSZGZPSmRyWWdlOW00d29jUTI1ZzdMOXVCK0Q0RTd2d0RGZzJGRGMzM0RHWGxlSjFZVGpxTUExZWhuaEdmZndwQnZYWkdYbmdtRmxNR0RNTDJWTEZqbm1UT2Y3ZEhGSm1uNTQxUWgwVzJlRVl5cjk1a2R6cUljVDMrb1dmWDkvQXFEdWEzY1htNGtJZ0JiRFJVRmhEWkVnQTN1b0lWSkdwVFBqc3RUYUY5alpqQlBiY25kZ2ttdWpBUFNFSUFuS3I3aWsrRWRGNHBZUXk4YjJIMndxVWNIL01wYVZBSEZpS01WVTd1aXdnQkZGcTFkdEJqeTVNajZXd0hIcEhnRlNGcVJTTVhhQmJzWlFXSUxzMUdVdGhLZDRSUWVBZmp0N2d6NUMzbGhFZWVBYktTamU2eU9nampmaGZOSk9KVDdmUHlLTFJhRVlNSGp4SWMrQkFScXRFWFVGMDZXdUNnQ3podE51Uk5HcnNaZ3NhbjJCMFlmN292SFdvVzVtaFBQbmtFNk9CMDFmTjJ1dTRjMGs2dXVnK1ZCWmtzN1FBVlBvQTVpVzdpbHkzSHpqRXlZcHlyRTR6WDI3UElDRThrcWtKb1VnTjFTdzdjSXJEcDZvcHRVa3MzUUdwQS9xUjZLZFJaTkpaZ0Mxck8wYzJGUkNaT2dCSC9rNnMyaGg4QWpveGNhSjYwTEFubllLZlIwUHhMbzU5dXcvOTlFdWFneEZyUCtib21rSDRPZzZSdmMvQStGZjZJUGhMOUJscjQ4ZjduMmZnRFJjalZ4VlNzQ2VQSWZmZDFpSDdSdFgrN1pocXJKaE5UaXAzYmtGOXlvdVExQkhvZEtVYy9OY0tnc2FOUkVzbDlhVjJnbVBDT3h5M0VKWjYyakU0czdhejdSOXJHZlhOTjRUNGxyRit5aHhPcFBhbjkxQ1hoQy82NUMxeVVpTVFzbGRUWXIrUVlSY0VvaFduMHRQM1JiWS9zNFErbDZiaUtEeEdTYmJFQlgrWmpYYlFWR0lqL3MzMi8zdUQvblBIWXN2ZGd4dzVpWjd1OC9uSDk2WHFnNjg0T1RRSWJXZ00wY1A3RVRocERqNHZYTTdQYi9ZbWJrd2k1cXhEVkp2Q0dEUnZJakZ6cm1UYnE0c0pDYm1kcXEvZW9MNnJjbzBRQW1JY25IaHpLZGJrU0FKU1J1TWJyQ051MWt4K2V2RkpBbndYVXIvcEEyb2lwaEhWdTNQOTByNDNuWDJmWFl3eG9vWWozeHhseUtmalFlMUx2NXNHc3Z1dWgwbis2eldvN2VVVWJkcFB3bVAzMEJtQnZ5bzZIbjNCTXh6NmZCWCtnVUdFangvVkZIeHBEMUd6YitUQUpYOGhvMzhJeGdGRzZvN3V4T3FUVE45TGhqVXBjTys5OTM2dmxKU1VRelEzVTFZSklDSUlJckxzUkVaQUZHUlpscEZGQWJ1NUZsdURCcm02RkpWYXJSYmNpYmtDSUQ3MTFKTlhpNko0ZWgrYlpLZktwaUxjb01GaWQyQ3hPN0NLV29aSEJ3RndMUGNVZVZZMVEyTkR3ZUZBcmZjbEtjd1gyVnJQRDlsbCtQZ0gwaS9JRzR2ZFFWUjRCQkg2MzVhTXhtUXk0WFJLM1c1S1hGcGFSbkJ3TUNxVjZwd2VjNmJqUTNCU3RXczdSWnMyVTFzcU1IRFIwNFFhbTdlamI3OFVESUh1NkpZbWdMQmgvZEgxSEV4Z1VBMDVYNjdCakpHazIyWmo2SkZBWUZ3NE5idlNjY1JjaEw1c0Q2WEhUUXg4K3ArRTkvQUZSTUtuekVCVmVwQzg5QTNVRnRZU1BISXNRWEdSSFhMbWw2MWJTZFh4Zkh5VFVoRnJDekVYbE9CelFTbzZMekJuSGFCbzB5YktEdWNRZmN1akpJNU42RlI3T2QwWXlyZHZKblQyWHpEMmpVRFFCaEE1b2k4Vmh3c0pHUmhQeGZwUDBJMmRpK1BnSnFyS2ZFaDU3Z244QTNRZ2VCRjEyVXhzUjdlVHYrNEhURlYyd3NhT3d6OHFCQVF2b2krYmdUMTdKL2xyZjhEcUNNQTRZUVE2YjlkVHE0MGRURWlVUVBYaDQxak1Xc0lIOXdhTkh6MW5US0x1NTgwVWJOeUsxYW9sWXV4NGZNTjhNUXdZZ2ErWVQrNDNtOUdObVUxTVNpK0NoZzdGcTFOWkpCSStNUTFiMWlIcTgvTFJ4U1ZqQ05MaGU4RTRmT1FDVHExYWo4MFF6L0JuSDhiZzNia3FiUmllaGxmQnorVC9uRVhDL2M4U2srd1MxRUdqTDhGSEtDSXYvVHVxc29yeHUyQTBZZjFpT2ljaTlnb25hbXcvYWpJT1lTNnN4bjk0Q28zTVpBSEpJOUM3RFR2Qk41eXdRUW1JaGtoaUx4bEJ4WlkxRkc3N0NZY1lUT1RZMFhnSE5GdUFlcjArNjdubm5qdUJxOStvSFhBSTRBQ2NnQ1FJb2l5cVJGa1FCTlJlT2xTU0U2bkJndG9RaUtEVDZVUlA3aldIdy82TklBaVQvcWlhemZuT3gzYW00enZieUgzOWRySk5reGovd09WL21MVS9jditsbUZLZVpPamNGRVhGL3grQXcrSFlvdEZvbjZXWm82MWVFQVFUWUJVRXdTWUl6Unh0V3EyTG84M0x5OFhSSnJvVGNwRmxXWmc5ZTVaS0VJUVJ5cFFxOEFxTHd5Y2k2QTkxVDdxWVJMeERGSi93LzR6WFdLMGVHaE1UMHh3NGFObE1XV3gwbjdtU2RSdC9YS2xyYXM4MGozZmZmWGNZb1BURFUwREU3UHVKK0lQZFU5eWRMeW9MKzc4Rm4yWExQdTQ1YXRUb1l6VDNRQkRkYVIrTnBWV0NMTXV5TERmbjQwcVMxS3l4QWVoMHVxSEtYQ3BRb09COFFlL2V2WHU1aFpwbjJrZWpZS09seHVicTFTSkpVc3ZDVXBWS3BUZ2Z6aUxDd2tLN0ZUZ0FNQmdNK1BuNUtwT25RQUhnNysvZnA1VVpLbnI4Q0swME55VEpSV21rOXFBcEVnUkJ1RUNaeXJNcDJNSzZmWXpCWUZBbVRvRUNOelFhVFJKdGZXeU54ZkJOVEIrZVJmR2VHaHNuVGh3UEF4Szdlc0hxMmxweUsrcHhuQzRuejltMnFhelZiQ2EzckJxelExWldUSUVDQloxQ0VJU0VGMTU0M3FlbFlKTmJtNk5DY3o2dVIvQUFFSXhHWTVlSzNwSHF1ZXVWRmV5MWF3bjNjbEpvMS9QdjY2Y3hJa3dQV0hudW8yLzVPcXVjVWltQUxVOWRSYlQ3c1BkWHJ1U056RHA2QkhpUlYyVmh3UldYY091QU1HWGxGQ2hRMENFbVRacGtCQ3BvSXB4RUZBUUVEODBOYVBhMXliS0V1dEZHMVdpMFhSTnNvb1lGczJhUzFNT1Yxcjd5dTFVczJuQ1ExZk9HQXlvbWo3eVFXeWVhbWZqbW5oYUhqVWdkeFRVenc5R0trSDkwRDVOWGJPUHlBVmQwVXRHbVFJR0NQenVpb3FKNkFwbHVRZGFpY3hWdG9xTXU0U2E2SloyZ1Vva0R1bllacnlhaEJ0QXp5QjlMRTgrTW1pRzlvZ2pXdDgxODdoc1YzbFJyRnhia2graXdZNVdVUlZPZ1FFSEg4UEh4aWZNUWFxMWI4alhsc3JrN1dDRkprdENVNUNZSXdvQnVYOUZ1NHIyZFdjeEo3ZHVOZzJRKzJYcVFZY09UTUNxa0lBb1VLT2dFR28wbW9aVlFhK0ZqYTUyb0s4dHlVd21ZQUhTUFZFMnk4L29YcTNFa3BMS2dmOWNOeWgwL2IrWGpjajllbURSQVdURUZDaFIwQ2xFVSszaG9hVzZoSm51YW85QWlnT0FTYkVKcGFVa2k0TlgxU3puNWROVnF0b3B4dkRLMVAxMVZ2QTVtN09LeG4ycDU1N28wZ2hWU0R3VUtGSFFOWGl0WGZoSGlJZHhFV2FZRmg2Um5BRUdXWGVrZStQajRKSFQ5R2pMcDY5ZnpXVjBJNzF5WmdyNkxVdTNFOFFQOGZWTUJiOXcwaFJodnhRWlZvRUJCMTlHM2I5OVFUcCtrNnlIVVhPYW9HaERVYW5WOGw2OWdMbUh4cGl4cWRWNmtQZXVpK2RXRzltTDd3Z2tBUFBuMkI2UVgyNml6T1ppeGFBbEpnNGZ4NFl4Qi9HZjFEZ29yUmE1NStVUDNpZlM4ZDk4OEJ1cVZSVk9nUUVISENBa0pEVzlyanJiVTJqek1VVmtRQkVIdmNOaGZGa1Z4L3A5aGduNUwyaUlGQ2hTY0haak41bVhlM29hbHVPaUw2b0E2TjRXUkJiQUxndUFRUlZGU3E5V3lScU9SUlFCQkVHS1ZxVk9nUU1INUNvMUdFK25XeXNUVG1LS2VhUit1THdSQmlGR21Ub0VDQmVjclZDcFY5R21FbXVBaDNBQVprSnUrVkFTYkFnVUt6bHNJZ3RDamxjWW15SEtMbEE5MzlRSElNb2duVGh3UEIzVEsxQ2xRb09BOGh1N2YvMzdKcDNPTnpXV09pc0hCd1pIS25DbFFvT0I4eDhDQkEvMDhCRm1iZEk5R29TYkxNcUtYbDFmNG1WemtUR2lMek9ZR2NzdXFNZG4vUExSRnN1UkFrcFNpV0FVS2ZpMGlJaUw4VHFPdHRmNUJyVktwdWlmWXpwQzI2S092VnZMbVVSUGh2bG9LSzAzY09HTXFDd2Y5d1pYRndrMHNUNzRlVlk4SVpKc0ZyN2dVaHIvNEVoRzlPeTlCTSszK21nUGJIWXk4KzBwbFJ5dFFBUGo3KzdmVzJFNW5pZ3FpS0lxaDNUcTdtN1pvK3dQeldIbjNkVHpRMzR0Rkd3NjZ2M1RSRnExYWNCR3R5YTJ2bkRxZDdROWR4OG83cmlMOTJxRzgrczFQVlB3WlZzTXJrVWw3ZGpQNzRINzZEbkd3L2YvK1g0dXZIVFZsMU9ZWEk3WFE4aVRzeGRtVUh2d0Z5ZEU5alU4R2NGaW95OG5CYnBQYzUzTjlaNnNxbzc2MHBzMHg5cG95YWsvbDQ3QXBtcVdDOHhmZTN0NStweEZxVGRUZ2phVlZhbEVVdTBtSjVrVlNqK2F5MHA1Qi9saEtXdElXVVpQVDVpaTlSMGRZQ1ZDcnhBNGI3UDd4b0Nac2VBcVd6VWR4QWlvc0hIdjZMZzV2eU1NL1ZFTnRiUkFUUGx0Q1FHQWRPK2ZmUnNXSkhCcktKTmJOM1FVQlNVeDQ5MG04S0NTOTcrVU0zN09UVUFOVWZybVliZXNOWFBiR1gxMEs0cEw3T2JCVFFzemVoVlBqamRVL21abWYvSk85TjZWU0lReEJObFhUY0RTRGlMKy94WWlieHdLUS9jSkM5bjJUUzJCc0VMVy9sSFBocXJXRU4rMElDL3YvdmdEMVJYZVJORjNwODZQZzk0VldxKzNVeCtiVzJGQUxnbkRtelNNYmFZc21YZGFsUC85cHp5NWUzWlhOeVFvci81aDNLVUYvaHRXUTZpamV0SWxxU3cwblgvdUN1R3VlUWdWVWIzaVBqQjBhTHR1NEJpODE1THc4bjMxdnJXTEN3NWR6NGJzcnFQbnVWVFovWldYSzIvZDM2M0pWTzQ5eXlhWjFCQVRyY0Zvc1RhdXU2VGVWQ1EvT3dMSjdHVi9ldTR6aE40OUZSU2xIbC96SWhWc3lNSVlERGh2T0ZtVzhFaldIOXVFMXNGcDVxaFQ4L3FxQld1MUh4NzQxb1ZtTmdNQXplMkM3VDFzMHNHOC9uakxHc0czdkhsN2R1SitMYmgzUEg3NTFpVlJMOGFwdkVZcVBVYU1meXVRYkpnSlF0bjA3R2tReUYvOERDYkRuVmxCbFBRVDh1czdyQVJObkVoRHN5dDVSNlpxemVNS0dEQVpBRngyTldGMk5IVkFSUk1TSUlIYmZkZ005SjQwbEl1MWlJZ1pFZXlyL2pGdWZvVHhSQ3M0THFGU3Fka3hSR1JDRTFnNFpFZkRyL2lYT2pMYklZUENoZDJRWU4wMGRqVi8rTVg2cytCTkVSOVZSSlAvN0pjWitzb3Bla2NmWTlWcDYwK1Fia2xLSm1qcVZIbE9uMG12aEk0eDkvSmF1U01ybTVXc25KSzMxYVo5VlFGQzdWMGxzYVI0UGVYY2RvLzd2RnJUMkFyWmZPWmtUZTh1VUowakJlUWxSRkgxbzQxdHJXVkxsL2d4UkVJUnVDcll6b1MyU0tLb3hOZjFXV1ZwTW5rTkxvTzdQNUdVVDZYZi9BNVFzZVo3S0dvblFVU09welR5QmYzSUtZVU5UQ0JzNkdFTlFzLzZxOWpWZ0w2K2twZWp5eGN1bmxvYkNCcGZXdDIvUHJ4eVREWnRKSW5qNFdQcmY4emdKWThPb3pTcHA4ZjNoSis3bTJBWkZhMVB3KzBNUUJKOU9UTkFtWGpZMWROTWFQQ1Bhb3I2OHN2UXp0cHQxaE9wRmNpdE16SmwrRVVQL1pDMDBOYkZwOUIzL0xBZi9rODY0QjI0bGFjZmRwSStiVEVDdmNPcHpmeUhxanBkSXVXcUVTN3RObVVva04vTE51SWxvSWxLNDZMUG4wT0ZMNytzbnNYUFd4UnhMQ0VkckVNSG4xNHlvbEMwWFg0N1RtSWlXU21ycjQwbWIzTi9qZXp2RjMzNk9ObXdLZlNZT1VwNHNCYiszWURQUXN1aTlUYW9IelJKT0tnQ012OFhBVEEwbUtpd09nbjE5TVdoK0g3TEo4NDIyeUdtcW9hR3FEbjJZRWJXMmEzTmlMU3RFMGdXZzkvVStDeU9RTUJjWDQwQ0RUMFRvbnl4U3JlQi9ERVdDSUM0RVRMaW9pMnFCZWtFUXpJQlZFQVM3SUFoT2xVb2xxWUhmak9yUjRHM0E0SzJzamlkVUJuOThEZjdkT3NZcjlHeStoMFQwRVVabElSVDhMMERYZ1JucUFWZndRR0ZPVktCQXdmOENXc3VxZGcwTVdVWVJiQW9VS1BpZkVteHRBZ2J0Q2JoRy9uQUZDaFFvT04raDZrQmpheUhnR3NzU0ZKd0RIRHAwR0p2TnBreUVBZ1ZuQjJKSFdscDdmNmhBZ1FJRi93c1FPdmtkUUJDQmJsSTZPTm1aY1poRkt6ZHc3L0pOdkw4dmwyYWRSQ1lyTDQ5UHQrM2wxWTBIcVczdmNJZUo5emYreEpiOEdtV0pPb0t0bU14L1BVZmUvdHpmNWZLL3ZIUXY2WmRNWXZub0cyZzRoOWN4WjZTVFB2MVNWZzRmd3RIdjgzL1hLYS9QT29TcFJ0R3d6Mk4wV1ZhSmdMTjdwNjdqcTcyRjlJbU40ZEwrVVd6ZXNvSEhmOGhwM0thOHQzNFBSNHBMZU91SHpIWUYyK290MjNqanh3eTJGTlFxeTlUUlE3YmphdzU5c0pUOS8vbnlkN2wrd2owdk11MlQ1eEdyS2ptWGhXLzZRZE9ZOXUwcWVpVjU0N0QrdnJSSko1NVpRUGJPWW1Yem5iOXdua1piYTZPMXFRRWJvT202bFJ2QTRoc25OZjBhMkZER1gvYm53dGhZd0p0bmJwNEpOVGw4YzNCbm0wTnJpN05aV3VqRDdEanZjNm9GL0JHUXQzb052ZTU5aVB5WFA2Ylc5amY4dWhDN3J0Nlp6dkhsNjdHaklXRGtOUHBmT2I1cHhVMUh0bk5zMlRlWWF5WDhMN3lZZmxkUFJJV0Z2R1VmVXJUM0tIYTdtdUJKcytnelBiWFRKTjJLN2F2SVhmMGpEVlVtZkFlTm9lOU5zMmxrcGFyYnU0N1NtaUM4U240aWQrdFJmTVpjd2VDNWFXZjhnaTc1YmluWmEzZUJYeFR4dHl3a05OYkYyU0EzbEhMczdYY29QMUdFbHpHR1hqY3NKRGpheFFKb09yeVZJeCt1eEdvVjhSazBsdjYzek9od2cxdXpkbkZrK1FaS2pwWWpybmdUeHg0Ly9FWmVTcTl4U1Uzbk83YjBLOHhXTFZGemJ5UTJ0UThBaFYrOGcyd2NST2wzS3pGYmZVbjgyOTJFR0YxanNPYnNKM1BKSjVpcXJSamloOUIzNFEzb2RSM2ZFNWc0OGZwU2dxZGNTTTZTcFZnY3Z2VDUyLzBFR3czS0ErRzJZN3Fqc2YwcTNmdElhVG1KeHBBdTdGRWJ6MzM3TXd1bkRzTkxTVy92Wks2cXlGK1hUZVRVT1VRbWxwRGZCUzFDTHRuSmh2blBFenJ6V3ZwY2R3V0N1YVpKMDdJY1djT2FlUStnRzNveGZXNmFnMURXNkQ2b282YlFUdFRzNitnOWJ4cEZyOXpPd1RYSE9yMVdYVll1Z1duVDZiZmdlcVRNei9qaG1ZK2F2OXUzbnIzMy9ZMVQyVjdFekpxSjJsRjN4aHBmOVliWCtPSFpkS0xtM2t4a25KTXRWOTVFcmZ1TmVQeloyOGt2REtUdjdRdUpITklEUzZXN0Z0bVd6L2Z6N3NJN2JRNTliNW1MSGhPT1RxNmpEb29pTEMwTjd4QURQb011SkN3dERmKzQ4T2E1dS81UmZOSm1rbkRGT0k3ZWV6M1pCNnNBS1BybVhYWSs5eUdobDh3bVFKZk4xZ2RmYzUreGdaMDNYWSt6ejhYMG0zOGovZ0VTVm52bjl3UW1zbDU3a1IvLzd6WDhSMTVNOUtnRUxPVjF5dk53ZXNFbXQvcTNoY1ptNWd5cGkwNWxIK2JOdzA3ZXViTmZwMy83ODg0ZFZQZElabXlvbG4zS0FuVUlhOFpHS254U0NUZHFrZExHY0dUdE92cVB1YjVqV2RoUWljT2hSMitNSmlRK2dwRGs1dTl5bHI1TjZIV1AwbitHUzNNS1NSN20vaWFVQVgrOWlZcjkrekZYMi9BZkZFZjVyb013cFUrSDE0cTkvblpxait5bnBxQWMvNlQrSEZ1eEc3aTIrVzJaa01hSWgyOURBS0oveFR6a0xsOUIzTzB2MFdQRUJUQmlFSVVyQjVIM1V6NEQwcUt4VmxhaWlRckJMNzR2SVFPU1BMWitOVmFUQ2wxWUJJR0Q0Z2dlTkt6VDY2Z0NqUmhUalpTRTZORWtEc0dZMnJONTd0Ny9EMkUzUEVTdnNjT1FnYjZ6aDVHZHZvbTRnUzdLOXJqcjdpUjZSSC9rcUt2SnVQd0RiSUFXSzVacUs0RmhZUVFNU0NKNFlIS1g3c24xaUpycGMrOXp4QThOVmg2RXRyQjBSMk03STZ1d29paUhCWjhmWU5FTlUwazBkQkpjdFZYd2o0M1pEQTNYc1A3d1NVN1cyTWtyTE9aUWhVbFpxblpRdUc0dEdyMkZvNisvUVVWZVBXVnIxMkx0N09HTW04VEllOFp6NE00NUxCK2N5clovZmRya2tEQVhGT0FiRjlmV1lWR1J5ZHEwTkRKWHJLZnEwR0VhaXV1UkhKM3RIUk83cjcrWUg1LzlMNVg3RDFPWFhZUmtzN1Y0WmZvbUpwNlZtbE5MWlNYZUlXRk43MkI5V0NDVzBuSUEranp3QWw1NVgvUHRpS0Y4ZmNtMUZKNXdFODM3SkRIeXBkczQrZVFDdmhpUXpLWUhYc2JxT1BNeG1Fb0tLZnZ5VGJiY2NDUGYzM0Fqdi94WWprOXdzMm5vRmVoaUlSQjBXZ1NIdyszZERtVFlxODlRL3M3RGZERXdtWFczUGs2ZFNlcjBubHdMR1lKdnZDTFUyclZLWk5uY2puYldua0VncTNFVmxIWUxkUlVGM1BMUk51NmNPNE54RVYwby9wUlZqQjBZUzI3dUtYS0I3SG83OXRKU1RsVEVraFNzK0E5YXY1VHkxMjhsZk1LOXFBeGFWSDFIRXBEK1R3b09tdWcxc0tPNVV0UHpsZ2ZwZWN1RDJFb3pXRGR1TmtYWHppWGFDUG9lVVpSa1p3TXROZXZLalN0d0RMbUJzZis2M1dYZVBiR0xVeTJrcFJyUjRXaXhjK1Q4SFp3NEhNR1ZlMTVHQzlSdWVJM0RPekpkZEgrTmI4c3pTQ0lTMUNxa1Judk5EVjFRRUEzbHBVQlB3SUc1dEFxL01KZmJ3eXYyQWk1ODYyUEFRZGJpQmV4L2F3WEdGeGNBRUg3WlFzSXZXNGl6SnA4dDB5YVFzL2NHK2d6dm9sSFNxcitFSWR4STVPaDdHSEhibUc3ZFQrQ1lXVXdZTXd2WlVzV09lWk01L3QwY1VtWW5kWGhQZERKL3RvcGliQTR2Zk1JRC82eUN6ZVFoekRyMGNLaGxXYTRWaEc2OFgrMTEzTGtrSFYxMEh5b0xzbGxhQUNwOUFQT1NYZXI3OWdPSE9GbFJqdFZwNXN2dEdTU0VSekkxSVpUN1pveHZPc1VySCtkVGxUQ0l5eE5ERlRuV1dvdksvNUhDM0o1TXZlKzJwb0NCZlBBcjhqZCtUNitCbDV4ZUtjN2F6cEZOQlVTbURzQ1J2eE9yTmdhZkFMZnBlTTE4RHM5N2lzeDRIV0Z4dnBSK24wSGNYYmZnSGRXRGhqM3BGUHc4R29wM2NlemJmZWluZTF6RHB4ZWhzVVZrdlBBaEVYMGlNVTZkakM0d0NtL3pRYkxXN1NEWVlPTHdxeDhEUTM3MWZZZW1qbURYZjEvQklFM0NmOUNGaE1TRjBuUE9MRFk4K1MvQzR4NUN5bHBOZmxFaUYxL29NdG15UDNnVm9lY3dmRU0xVkp6SXd5ZjVLcmNwY1lnRHkvWVFQaVlGb1NhTEJwTXZ2bDEwdnZ2MVR1RFk4bmZ4RmNmaUhUZUkwTjRSeE42d2dNTTNQTWJSeUNjSjZlbEg5ZDRmRUh2UG9OZW91QTdPVk1yQmY2MGdhTnhJdEZSU1gyb25PTWJscyt2b25qckRMMDllVDJicFNHWjk5dVNmVmJEVmQ2Q3R0UkIycWllZWVPSktRUkFTdSs3WXRsTmxVeEZ1MEdDeE83RFlIVmhGTGNPalhSME1qdVdlSXMrcVptaHNLRGdjcVBXK0pJWDV0amxOZEhnNHNYNi9mYmNPc2l3QUFDQUFTVVJCVkFONms4bUUweW5oNTljOWZzM1MwaktDZzROUnFWVG45QmhyUVNIcXZzUG9rUnpmOUpsM2xCR0hYVU5vLzlnT1ZCNG5WYnUyVTdScE03V2xBZ01YUFUybzBXVW1xVU1UaUJrM2dKSzE2UlQvZkFoOTcxVENCOGJpMVhNd2dVRTE1SHk1QmpOR2ttNmJqYUZIQW9GeGpSMFpOUmd2dmdqenNRd3NKU1lDaHFhZzlRN0ZtQnBMd2NvdnFjcXRwOTlkdCtNZEhrVjRjclA1NlJVWjczR09yc0UzZVF3K1lpVzFXYm1vSXhQeGp3eEEzMnNZb1VZYnA3NUt4MVFmeEpCL0xpSW8xRVZHNDZqTXBXalRaa3ArM0ljaGRTN0p0MTZDU2dSRWdkcU1IUlJ0MlVUbEwxVWtQdmcwMGYzQ3VxWmxEUnVQMmx4TTNTODU0QmRGWUd3WTZyQUVZc2IwcG5oTk9zVS9IVUR3amNVNGJqZzZneXZPNnRzdkJVT2dleDlyQWdnYjVtS1VObWNkb0dqVEpzb081eEI5eTZNa2prMEE2UENlWE5BU05Hd29Xblg3WXpUMEhrem9nTmcvNTB2ZjZUejY5TlAvK0JsWEVNSGErSzhnQ0hiQUtRaUNKQWlDTEFpQ0xEaWRqbzlFVWJ6bXp6STV2eVVmMjduaWNGT2c0RS9wcExGWVZ1cjEzditsTFI5YkF5MzQyRVJKbEdXNVVwa3lCUW9Vbk85d09CeTFIaWFuZkhwZm00QW95M0tGTW1VS0ZDZzQzMkcxV2h2TGxWb0x0RFlDVG5RNm5lWEtsQ2xRb09COFIwTkRReDB0azNKUEd4MFY3WFo3aVRKbDV3WmhZYUhkQ2h3b1VLRGc5S2l1cmo2ZEtkb2s3Qm96UEVTTHhWS3FUTm01RW14aGltQlRvT0Fzb2Fpb3FLNjFRQk9FTm1WVnNpQ0FXRlJVWEhSRzByTzJsdHlLZWh5bkkyUnd0dElRSlJtSFUycjZrYVEvejRMSTdueDB1UjNXbGRNVnV6VjlMaWtiV29FQ2dJeU1nL1h1UjBOcUZtNUNPNCtQZ0hydzRNR2xrdVMwNE9vQTB6bWtldTU2WlFWNzdWckN2WndVMnZYOCsvcHBqQWpUQTFhZSsraGJ2czRxcDFRS1lNdFRWelhWQ242MWJqV1A3Q2pBejUyZ00vckNVYnh3VWVJZmZ6VnE5dkRGcEg4ejQrY25TQjl3RDVNT3IycHE1SnEvNUI1TzFreWduL0VBQjQ0a01QR3B1VTJIYlp1UVJPeUhoeWk4SjVuUXAzZlRxNTlhMmRrSy9zeXczSC8vL1EwZG1LSXQvRzJOVDhzcG9HdFNSdFN3WU5aTWtucTQwdHBYZnJlS1JSc09zbnJlY0VERjVKRVhjdXRFTXhQZmJOdWxmT3FFQ2J3NFBrRlpJZ1VLRkhUUDZwSGx2RllDVFBMUTNGcnFhNEtBNkRwRzdnWk5xMWVUVUFQb0dlU1BwYW5HVDgyUVhsRUU2OXZYTHFxcnE5aHlKSWZzR3N1ZmFFa0VWRjVlZ0loS3IyOVJIQzZxdkJDMUlvSktoZGdxMVZ6VTYwRUUwVXZ2NGpsV29PQlBES2ZUV2RCS3FMWHl0UW15SUFnMEJnL1VnQ3hKVXM0Wk9ibnRKdDdibWNXY1NaZDErcWNhTHgzMmtuSlc3UzloNi9KMVRKOHloY2M5NkdIK3NQQy9nTXUzTGdIZzB0M0xXM3hsdkhFeHJsYkYwMmhOeFRqcXUxMEE5UGg0aDdLckZmenBZYlBaaXRyUjJOcE4rUkFFUVZZRHN0UHB6TzYyWUpQc3ZQN0ZhaHdKcVN6bzN6bk55clFKYVV4ei8zOVo3bUVtdkxlZDZ5L29TYXhHV1RRRkNoUjBqUHI2K3FKMlRORFQrdGxFdHpRODJVM0ZrRTlYcldhckdNY3JVL3QzdTlWVmFIUWtVWTU2VGluODRBb1VLT2dDU2t0THkraUNqNjNSSEJVQnVhcXFLcXZybDVCSlg3K2V6K3BDZU9mS0ZQUmkxNDZwckRjMy9aWjE3Q1FGK21ENitDZ0xwa0NCZ3M2Um1abFo0U0hNcEU1TVVRUkJFTHdCclNRNWl3R3ZUcTlnTG1iMG9pK28xWG5oSmJvY2RkclFYbXhmT0FHQUo5LytnUFJpRzFWbUIvNTZMNUlHRCtQREdRTzQ3NVgzMk9Qd3dWOGprVmNyY2Uvc3FjenJFL0tiVDlCdnllNmhRSUdDc3dLcklJalg0bXBqVUkrTDJhTk9FSVI2OTJjMlFSQWNvaWc2VlNwUjFtZzBzaUFJZ3Q0dDJMWUF5ZWR1YkJKbDFmV1luUUxoQWI1NC9VNEorWXBnVTZEZ2Z3dVNKR1dvVk9wRnVOb1llQW8yazRkZ2M3b0VtMHJXYURSeVk0NkJMRWxTcGlpSzUxQ3dpWVFHK0NtcnBFQ0JnbTdCWnJObDBkYTMxdHJISm51WW9ZaUNJTWlBN0hBNE1wVXBWS0JBd2ZtR3VycTYzSFlFV3BPUHJYVU9XMVB3QUpETlp2TmhaUW9WS0ZCd3Z1SFVxVk1GclFTYWs5T2tmRFFLdWNhWXBuejgrQWxGc0NsUW9PQzh3OXExNjByY2dzdnBJZFRhcEhzMG1hR2k0S284QU9UVTFOUnlTWEtlQUhyL3BxTis1OUsybjExd05hVE1VMVpVZ1lJL09XUlovdVhSUng4MXR6WkQzWFJGbnBxYWgzQVRtNHJnWlVDU0pHbXZLSXE5LzhnVDVWV1RpNm93RTZxNzE1VFc3OVFwUk1jSlVDc3NHd29VL0ZhdzJleUgyelZEWlNRRVdRSkJScFpCbG1SQmxoR2NJRGprcHVBQmdHeTMyL2QxZmlrbk96TU9zMmpsQnU1ZHZvbjM5K1ZpYTVhdlpPWGw4ZW0ydmJ5NjhTQzFyVzNsL0J5ZStYSWo5NjNZekVlWmhYKzZSU3JmdDVteFQzN1I0ck9UMjc1bCtyOVd0L3YzUDY1WndlalpkNUU4NjFIMjFuaDg0YWhsMFpQL1lOQVZkM1BKNHE5LzI1dHdGSFB0VFE4eTlJcUZYUHZHRDEwKzdJVW5IK0cvZTZ1NmRhbGwvM21OMGRmK25lZ1p6M0EyMlZDL1c3bjYvN04zN25GUjFmbi9mNTR6RjRaaEdFWVlZRVJFUkZKRFJFTXlKRFV6YzgzTXpGeHp5OHkxc2pJejEzVmJhMTF6L2ZVMXQyMjdtR3RtZGpNejE4ek1UTTFZTkRQWHlzeklDNWtSSVJJaUlnekRNTXpsZkg1L3pJVVp3R3ZxVnM3NzhUZ1BaYzdsOHpubjh6bXY4NzYrUHB6UjdITTNzS3VvbEJNdEtML21qWmZKR1RXWm5tUC9TY1Y1ZS9BdTl1MHJ4dGFNbjIvNWkwOHo1LzF2eitoS0JhdGZwKys0NmFSZCt3ZDIyODVoRnhVYlU2YlA0NEQ5M0pFSUhyZmFEclppaGdiNzJQQ1RUVXBJeUZKVDhBQi9aTlJxdGU0NmRlZnJXTE9ybkM2cEhiZ2hveDJidCtRemEydUpiMmNETDMvNEJmc3JqckJvNjc0UVlEdFdkb0RmdmJxTnVMYkpETDAwR2RubHZ1aUF6ZTJvcC9Sb2JjaHZzUjB5dU92cUxxMGNYY2ZzZjc3SHpQbFBzbnZWLzVFZDA3U24vTE9QZUxrOGdaMnJuMlg5d3pkZTJKdFFXMWoyeXQrWk55cUxHcnZyOUVIOWFDVld1K2VNbXJyMW5zbHNXemdKZGEyVmMvR3E1Rzk0ajRJRHh6aXc1eHVxN2NlWi8vSmFxazVuR3RwTEdYNy9pN1M2T0lpOW1Ca3ZGckpzNmJQc1h2WkhMT2Z0d2RjeWNkSmNpcG9SNDFpcnE2bXVkNTNSbFFhT3ZKMXRTLzlDa3F2dXhFU3haeUdGbTlheXIwMFduZlhuam82bXFQalFEODIwdFdBZm01RDg0T1lET0YrcWgxQUgyNm1qUjkreWEvUG1BaHR3NG1JbjJjVGo0NjhOL05uR2ZwVDdkdjhBL1ZNQlBmODNZUVRVbHJEMjYwOURUbHV4YlJmWERSckl2YmxKRnhXWU9ZNGY1c21YMTFKY3IyVm91aTdrQzd6c3RiY29zaXBZTHMwT09XZm50dit3NXN0dktheDJzM3JsVzJ4VFJUTHh6cHRKaWJTeitNVjMyTFgzYXh4Vkd1WTh0NHpZanBsTUc5YnpaM0d2YmxzVmkxZm1zL3Y3Q2hTZGtkRTMzY0RnalBnbWNDdjlob2ZtdklsTm44Q1UzNCtnYTV5MzBNVisvREFMM3RqSW5uSWJtYmw5bVRxOEY2ZEtnMVlhanJObzJYdnMrUDRZc1ltSmpCczlndXkyK3BPLzBBT3VZdG5LdGJ6OFNTRmJsRFU4TlA0bXpLZndMR3o1WUIzNVh4ZGpyVC9NRTg4dFE0L01yV1BIa05GR0p2Lzl0V3paOHkxbGpnYVd2UFFtZWwwYzArNitEdE1KcjliSTB0YzNVZU9xNXFBOWdhR2RuS3o4L0JqVDc3K2RqRGdOdXovL2hCVUZleWl2YlNEdDBoNU1IWE0xSmczcy91OW1WdTA4U0ltOW5rV0xsbUhSU0F5OTRVYnlVZzArQmI2S0p4Y3NaczlSR0QvMnR3eTRwTTFQR0VRN3k5OVl3Nlp2am1EcGVBbFRieHVLeFFkVVpVVzdlV0xGUnlodGtobWVGWThqdGhQRGU3UUxXSEtML2wzQXJWT2ZEckh1Vml4L0IyTnFlOVovOENtNnhJNU0vLzMxV0h4MW1EVWwrMW0yMzBtTzlrZVdGQlNSME9reVprNjRDajB1MXE5ZXg2b3ZmckM5c1dIcmtXWmFtZ2RRaE5jYzlWT0RDMGxDS0lxQ3JjR0RyZEdGN0hPNkNVRDU2S09QRkNIRWpqTjVEdnNycStpY2RLclNLQmQ3UzJ1SkVjZTVjL0ZiM1ByeUJqNzRvZVppOEJBd2ZkcHNEdXE3TUdsWU5zdmV5US9hcHlJN3B5ZGR0VWRabEIrYVFwamNJWjBodWQwd1NSSGs1V1l6Sks4N1JnMkFodDY5THlPdmN5SUdjeUpEcnN5bS82VnRUOW9ENjZFRHpGbjRKck9iYlp1S3p2M2laTTdxQ3FxMUNZeS9aVGhqKzdWbjZvTi9ZWHRWazVhMjVKMHREQm8yaE55b0h4bnloeGV4QXpRY1pkU0VSNm1NNmN5VVc2K2haTlByVFAvMzE2ZHNhOG44cDFoL0pKcHBkOXpJME80SlZCMXZPT1U1eFFmMnMrT0hPcExqNDBuUU9kajB5ZDRXcGwxelNldDhLVU42WDRKT1k2VC9sZGtNdWJJbkNUcnZpNW5lOVZLRzVLU2oweGtZZUdVMmd5L3ZjZ29hNmthV3Z2SW1jcWZlbEgrOG5NVjd0ZVJHVmZERXUxOEJjTENrZ3B3cjg1ZzJkZ2djS0dETXM1c0FTRXJweEpBck00alZhT2pkTzVzaFYxNUdTcHNtNkYrOTdqK2s5ZXJMc0k2QzBYOTVpWi9DTGZIcU0vOWdmbUU5RTI4ZFJ1eVBYekQ0cnl1ODZsRnRNVU1uelNjbDl5cEc5ekl5YmZaOFZuOFpaTkRiZm1EVGdTajZkb3NPQWJaVmI3N0JqTmMvWi9TbzY0aXQzTW5JdVUydWs1b2ZpcGo5NUhQTS8yOE5JNisvaWxTZEN3ZFFzSHdKVTk3OWp0dCtlOTBYVHBkYmFjVUU5WnVoaWlLRWtQRHFiWTF1QlkxR1RZeGVHNGlLQnNETjdYYnYwR2cwZzA3bklaUit2NWZuOTNwNGNmS2xwL29NWUhPNVdiL3ZDTStQR1lhdC9Cc212TGFSamcrTjRkZE1EcTVVN0dYRjkzSHNlV2tnRmhsbTN0NmZVUi80SDdkTVJyY001TU83NGZ2UTh5enRPMkJwcjhPZ2lTQ25Wd2FaQWExQ1E4OGVHYWpMZDJNb2o2UnZkc2FwTFVlTmxnUnpTeDNDb0RuM05XMzZsRXltRDYvaHMyKyt3eVpNWkNRNCtHeGZOWG45dlZyYm1OdCt5K0RzUzZEbkhiejgxbjFzT1R5SjFEMEY3RXZzdzZyUlZ5QURjKzRjU3NiVFc1bC9TL2VUdGxWOTNJcStiUXhwcVIzbzJTWHR0UG9uR3l6TWUrUStYcDc3REVObTNBZEYzeU9md21wSzZkaUpsRGczV20wMHVka1pJYVptYXFkTFNJMnBSeGNSVFY1MnhrazB0ZUR2V1J5RCtsMks4ME16U3EvTEdPQ3BaOVVYM28vTXFOL2VSUEczQnluNnNaYk1ycW5NWDFjRURDYWhYUW9KN2ZRWU5WcXlzelBJYWFhWURoeDJIU1A3Wk1EbDBjeGVPSThTSjJTY1ZlVmZEVXZYNzJmbXE0K1FsNklocjlNNGx2U2Z5Mjc3cmNnZmY0SXpheERUaDNpdGd3bFhmMGhoOEVmdHh6TEtZeEpJYVVVRHZ2Zk8yK25mUFliK0tXTlkrSnRGRkQ5NkUybSs0K3lHTkJiUEhPTTFFZk1BRkphLy96RlRKai9IWlIyMWUxb3hRejJBUjVLODRDWUVJQ0g4YTdxbzFTb2lJeUpRKzNJL2hQY2dJZXJxNmo2TGpZMDk1U000OW1NSjk3ejFGWFB1R0VIbnFGUFoxR3IwYWhqVyt6SlNqWkZnektKUDFIWStLN2YvcW9ITldWT0xyVTBjWnQvanNjVEdBeGQyVVRBNVFvZkYzTkkwTWVwUEhkMWR0dUJKWnE3ZEQ4Zzg4ZHg4Um5lSlBQbUhibGMrZzJhK3k1QkJ1U1JFcWFteWUzQzRtL3cveVdiZnZKS05XR0pjVk5ZMElsZFdZajM0RFNNZlBCUTRybmZIUzFIZ3BIUlk5OTUvUDQ4c1dFSDJzTmZSSlhaay92K2J5c0NPSnkvWlMrdlVBWUFoTjE5UEVtRHMydkhDVHdwWmpWb0dXYVZDMWtob1pSWDJSZ0UwTUhQS0kyd1JxUXpxWm9IalZUaGNweGVCTnh0OTk2MVdvVmE1VWNSWit4S29yRFZnTWZ0SUVpTk5KRVRaS0Q4TzZ0b2FMT1ltV3YrRTJKalFqemlneUZJckY5V1FsT0E3TmlhV0JNbEtwUjNTZkYxTzdwamN6Ty9WU0VWVkkwTXNKZzZVZkZ2Y0dxZ0YrOWVFZDBPU1piUW8xRGM0c05rZGhQallBR1hTcFB0M3JGanhaaTBRYzZMN3J6dDJtRHVYYldQeW1CdTV5cUkvalNlbW9XT2lBWmZiSFhnTUxvK0VSdjUxTDAybmpUVmhQSDZNS2dVc01sUlVIYjN3UHI3cW82ei82UE1XenZjaHBsUXkyMGFmOU55eGs2Y3pkdklKN2syanh1RUtEUWFzZW1jREl5ZE9aZDZJVG9DTDRpM3ZoT3d2cTZvQ3pLQllxYWpWa1JRYlFYSkNBZ2xaYmRqNDFOZ1RhRGdxWkxlblJVVFMxTDR6Qy84K0MvQ3diUDQvbVBuYUZyYlBIbjVhejZScnR6UE1hSklsWk1WenhnRU1tN1dXS3JzZzFYSWF1dHlQZTFuNFRSeWxIenlJQVNqWitqWlBmRkVTZElBRTBwbXY3dWEwMnlnLzNraHl1emlha2MralZTazRnb2RRYlNBaHhrWkZsUXRTTkdDdm9iTGVRRkliMEpuaktkM1dGUE10cXpnS1FkOFJYV0k4Q2NjcktWY2dUUTUxUTVVZnFZRVVFOVJXVXltTW1JTWdRMjRCaGhGWXpCR1VWOVRVUHZyNE0yVW5BTFdRa2lyWlYzRVFxZFBTUnFzUkdoVmVqUzFJeE1xVks5M0xsNy94c1N6THcxcDNsOVV4K2FYMzBTVjNvZnJ3OTd4K0dGU1JKbTd0NmFYNS91U3JQUlFmcTZMUjA4QTdueFNTbnRpVzY5TGp1YkhYcFV3bytDODlqVG5VSHo3STU0cUZ2N2FMK0ZVRG01eVF3YTNweDVqeHdtWW1YMkhpc1RjK2hvUytYc0NwUGNxMmZZY3BQZkFqOXFOcTh2KzdHMU5DTWptZHppMlZrNmxUZHhiL3JmczV2N2VzN3Qwb2V1a2RGbWZwU1UxdXorQWVIVWhwbDhDS3JWdlkyVlZpMzhjZnNQNEhKVVFqWC9uRzJ3eE9HVTNscCs5VDJxRWZmZHZLNkUwRFNWdjBDTk5lYThldFY2UlFXVkxNSG5zYkhocVo0ejBwcWgwRDJoOWp6dk1iR056SnpNQ0JseE9yaGxYL1hnWHR1dExackdibjk1V2taMTV6L2daU24waFhkUmtMVm54RVh0c29jaTdQNFhTKzV4dmZYTXlZZFI1czc4MDQ5Ukp3TWZFa09iNWoyVWQ3eU5FN2VPS2xEd25ObFRlUjBkN0RvcVVicWV4bUppTXJpN1EycDdZM0N6ZTl6ZVZ6ZC9IdFo4OFN1b3hTRFAxN1JQSFVvcmNwNzJVaEw2OFB5UVlUNDRaZXltUFBMaVgyenY1c1cvVW11djVYMDFNUGNyOStKRDg5ayttdnBaQVRXY1dybng0aE4zaHdqZWtNN2xqTDlxSUcwakpDTmZ0Rkx5OGpNL0kzYkYrMWt1UnJCNUIrVWtWVTV0YnIrM0hQOHk5OWV2RDc4bUF6MUIwQ2JzSy9NcVd2UmxRbzFEc0VraVNqdUQybzFHcTFKSVJBQ0NINXRILzU0WWNmVGxDcjFhMzcyUlFYeDUwcUVxTTBPRnh1SEM0M2piS1czc2xlTStPYkgwbzUxS2dtSnpVZTNHN1VrZEZrSmtSalRreWltNzZSRFYvL3dJOUtKQStQNkVjbmd4cDJ2ZG15amJiZElhbjdlWm1qamRYbEtIVkgwZXYxWjNSZWJXMHQwZEhSeVBLWmhMSlZET2lYdzRHZE8valAvcVBjY2Nzd09xVWtrZHU1TGJhS1VsWit2SWRhS1pvZVNWR1VWbFJoMTVySTdoZ01iRnA2WlhjbXFoVU5QeW91Z1p5TzhmOHowTmFaVXhqYzFjZ1hSVDlRcjRtaGQzb2lHZDJ6RU9VSGVQdWpRcUl1N2N1OTEzU2tVM3BuVXRwNFAyRFhYM1U1LzhuZnpBOVNJZ3YrZkN1SmtTclFSSEh6YjNMNDlzc3ZXZmZKVjFRNnRRenNjeGtkNHZRQk44WTFBM0w0OGJ0aVNxb2E2TkdqQzlGcXNOZFVzT21UWGVSL2ZvQ1U3RUhNdmpXWGlQTzE2STJrNHpmOXUxRjhzSmppOG1Pa1hacEJmR1RRb0dnTTlPbVJTbXZ2YTN4U0NsZDFUd2t5cTFYMDZKRk9KSkRjc1JQSk1WcDBKak9YWFpMRzRPeTJyRnUvbGMvTEduaGd3azIwaXpmVHIxdjd3QXQvVmI5ZVZKVjh6N2VIajVLWWtrNTdrOVlYWE9oSWVrSlVZTTdrWkhjaDJEc1ViYll3b05jbE5IY2s5TDN5Q3VvclN2anV4K09rZGUxR2dsNmlaKy9lNkt1L1orWG1MOUVrWjdMZ3dadUkxa2lnTVhMVG9Dd09mRjFFamI0OS9SSWFPR3JxeWczZExZSDdTaEJWTE5oVnoyMTlPZ2FDQnl2ZmZJOGJ4bzVpZS80V0dpMFpMSGpnQnFJMFRjOU9aekxUT3owMFNhWmo5NTdFV2crOTg4NzJ2WWNBSjlBSU9Iei9PZ0dYSCtCVXNxeW9KQW0xU2taUkJFNjNCNmNpSWVsME90bnRka3RDQ0ZrSW9SSkNhRXRLdnUrZWtwS3k3WUs4SVJlNHBLcjIyODl4bCs4akx1N01LZzlLUzB0SlNrcENIYTQ4Q010RktrWGZmRWRxcDA2b25jZTU5ZmQvWk9qTXB4bmZQY2hqNWFwaDFMMVBNZWZaMldRWVpNREpxQnZHTVhiUkNrYWNHZjBoNytSdnYyL2tIK2I5U0NnSG0wMkNlaVFhSlNTbkpPR1JKRWxSeTdMUXFtVVJvZFVRRWFFUi91Q0JrQ1FKNFkwdkNFQkpUZTFZcENpZVBVQm1lRGpERXBhd0FHejljQTNqWnBlaFNKRU1IVFdKY2QyYnVlRTFKbGE5TkNmRUw1amV0Uk94WjdoZ2t5TEV2cEYvbUhlc21SbnFwbVc2aDVCOE9XeitJS2hLa2xISkVtcFpsZ255c3dYQXplMTJGNmpWNmw4ZHNMa2pZbkRIcGtGQzRwbVpzTFVTSWo0Vk5PRmx0Y0p5Y2NyRU9TOHc4UXpQbWZmYVcyZmNUcjJ0L3RNVCtOWThTSklYMUNRRWtvUWt5OTRJczFxTFNxTkYxa1lnUitnQzZSNUlrdVJUMnJ5SWFMVmF0OFRHeGs3NXRRMk9SMmZDSlVkQndwbnB4bzJWTGtUOEpSQ21CZzlMV002cmZGTzZjeCtoYVI1dXdDTkpVcERHSmlGSnNwQmtGWkpLZzZ6UkltdDF5Rm9kcWdoOWs4YldMSjlOTVp2anR5bUs1ekRRN3J6ZVJmYnZXdjdXdG50NGRNTVNsb3RRaEJEbGwxL2V1N1NaQ2VyZmZKUkZVZ2hycml6TGdVMmxVcUZTeVY1Z2syVlplRHllWUZOVUFCNlB4L09CU3FXYWNGN3ZKTXk3RnBhd2hNVW5EUTBOVzF2VDFvSzJFQjQyV1phRkg4Tzh3T1lGTjdrMWpjMlBqSFYxdHZ3VGRhREdhdVdIWTdZVHN3TjRRdE9mRlVYQjdRbmRmdldpVkxOaThTSVdMVnJFK3UxRnY3cmJxeWt2WXZXSzVTeGZkeUVDNkU0S1ZxK20wbkVSdk4yT0t0Ym5mM2JDM2Z1MmI2U3dOTFRXZXZlV05SUlZ0RjRsV2xtOGs1WExsN05teSs1bTg5UEpad1ZyV2I1c0dYdEttN2g0UGl0WVQ1WHpmM1ByQnc5KzkxVXpVSE1EN2xBemxCWWFXeE9ncVZDcDFGNWc4MjhRNERZU2dCSWJHNXNQSEE1OUdEWWVlUHBWcmwrMGpqOHNlNGUrVDYzaXY1WCtBdVJHL3I3c2JmTCs5Z0xwYzFaU0Zqakp4VVAvZW8yKzgzemI0eTl6NmN3bGZGUWpmdVV6Vk1aZ01GQzY0eTBXcnQ3eGkrdTl1MlFMbzZjODFmcE82eDRHNVYzUDlxSlNLaXByT1ArZktUdFBUSHVRd291QU8ySGRNMzlpL2I0VEU2V3RYL3d3cTdlWGhmeTI4ZFcvcysyQXRTVkdsbXdpZCtDZDdDa3RvN0k2OU9HdG5mZDc3bjNpYmNyS0s3RGFtMm83Ykh2V01IMyt4ditKR2RxalI0L3ZmZURWM0F4dEtxWHlGWVlHWTVjWDBKbzJ0VStGazVyU1BpUWhTU2hDQ0FWUVBCN1BCcFZLZFZmVHU2cmhubEVqeUd6dkxSTlp2ZjQ5NXVSL3pZWmJld01xQnVmbGN0ZWdCZ1k5LzBWUWx6VTgrY0R2QTMrVkYzM0p5TTNINldPU2Z1VzRabUxZcldQUlZYOUNZY2tKdEo3S01tcmNPbEtiTTZRb1RzcEt5NUFOWnBMTW9UV1FEbHMxNVpWV3pFbkpHSFhuS2E5T1VYRFVsTEZwKzFlNDNXNlFaZFQrNUdSRndWcTBrMUxMUU9iTm5PNmRXS2QxVFVBR2UwMFZsVFpJVFc2Nlo2ZTlocklLSzBtcEtlaUNMK1oyVUZKV2lTWGxESmR1Vkp5VWxaYWpqN1VRYTlTRmRLS3lyQlMzM2t4U3JPSDBBTjVocGNvR2xsZ3RaZVUxSkNWYm11N1hOMDQ2Y3hKbVEyZzcxUlhsV0oxcVVsSXNJYzlIQVJTN2xiSXFHOGtwU2FHSnZjNVM1aTNaeWNMZHI3UjRlQldscGVqTUxXbS9GTGViNlVzK1FhMldXMWhKeFR0MllPaDdDN09tVDBPVzFTSG5iTisrZzNGVE5qTjVjR2grNXNEeGs1aWEvUUNsVTRhUWNnRmpaWGE3ZmNzSmZHdWVJUCthQWdFZlc4QU05V3RzYXJVS3RWcU4ybWVQRW15UytzS2pDdUNwcWFuWkVCY1gxd1JzUkpEWnZxa1VLaVUyQnNjUmY2R3ptc3ZTMmtGdHlVbHY0SzJkZXhtV2ZUVVhkWHhSc1RGMy9BMjhXdWdtUlY5RGxiRXZHOWM4ajBVSDlySWREQjUwRzdyMG5zaldNbUw3MzgrS3g4WUJzT1hWdjNEWDNQVmtaYVpRZXVBQU01Wi96cWdzd3pudjNoT1RoN04rNXcvWURsUXhhTWgxcU9WRUZxNWRSbWNkUERaeENKdDJINmJtWUExRGhseUhuSG9WRzVmTVBDVzRqZS9kQm4zL0NXek4zNEplZGpCZ3lnczhNU0dQdGZNZlpPcUNyV1IwTmxOVTJzaXJhOWJUTjgySXJYUTdnd2I5RGwxNkZnNkhpNW9nanFFeG1aR01XdFhBcUs1UXMyTUpYYWQrU3NXT0Z3RTRzRzBwbzhjL1Ntem5MSnhWSlF5YTlpS3p4L1RHWHI2TDBTTnVvOHFZQmxVSFNCM3hLTXRuanoxcHY4Zm50cVhFbkV2cHJzL29tdHNIYS9GWDlKejRBZ3NtRGFSeTN5WkdqcmtmYlhJR05RZjNNWEQ2OHp3NWNSQlF3Y2lzZmxRbWRDYVdHZzVVbTFpNS9tMnlMRG8yUG5NM2o2dzlRaXlOMkt1S2NHYmN5ZllWc3dMdlFrbkJLaW82LzRhUUlYVldNV25FTld5clNjQ0VBN2V0bXNGRGZJcHo0VHBHVG51V29sM2JtTDc4VzZZT1NmYWRWTVdVa2I5ajU4RURGRmZLREJteUdVdnVMU3g3N0M1S3R5NWp3cHpYS05wVmpxSDhOdFk5cFdQY3JKY1kxOTliRm9teEo0TTdsN09xb0lScFExSXYyQ3V4YjkvK0wwOWloZ1pwYktGQmd5WVQxR3VHcXRWcVNFNXVoOWxzbHFLam82V0lpQWhaclZhclpGbldTSklVS1VtU1VaS2tCQ0dVZlVJb29zWG1yQlAzUGZPU1dMajNhT2p2TmNXaTU2dzN4YUZXem5IVkhSSjVzNWVLL1EydFhPOENiRWVPVkloRGh3NmQ4WGxmZi8yMWFHeDBuRldiSHo1M2o3aitqeStIL1BiREIwK0t4RjYzaUZxUElvUndpRDlmZjZsNDhJV3RRZ2hGL09lNWU4WFY5eTBNSEJ2Yzd1Mlh4WWhYUHJmNi9uYUt4a2IzU2R2KzhhUEZvbTFpb2toc3RqMzZ4bWVuN0hmRDE4dEZUSzg3V3QxMy9QT1hSZUtWOTV6UmM3aWpWNVM0NXI1bmhNdC8vUWE3cVAxcWxVanNlSlg0dnRaN0gxKzhNVVAwdW4ydUVFSVJ6OTdkUi96dThUWGU5cjVhSVdLa1JQSGhqOTV6YitrV0lkN2E3K3ZMZnhlTHhDdnU5TGJqS2hOWHQ0OFhyM3hTNW12WExZNGRyeEZDS09MUm03dUwrNTdOOXgxWEpXN3MxazY4KzYzOTVIMitJbEc4dGQ4cFh2dno5ZUwyZjZ3Unh6NVpJcnI5ZG80UXdpWitmM2s3OGZmMzl3Z2hGT0dwM1NONnRiOVVmRkhySGMvYTJxYnJ2dmJuNjhUdHZ2dlk4UFNkb2wyL2UwVzlVSVJvT0NoNnRXa25QajdhMU41YmY3dEYzUGp3MHBBK2ZQSEdJNkxqdGRORW8xQ0VhQ2dWVjdYVGlFZmZMQXc1NXMvWGR4QlBieWh0T1cvZm5DVjYzUEZFcS9mMngrczdpT2MrTEc5MTMrc1AzeWh1K2R2S0MvWmVLb3FuQ0JnTkRBY0dBYmxBTnlCVmtxUUVIeFpGeXJLc1VhdlZxb2lJQ0RrNk9sb3ltODFTY25JNzB0UFR5Y3JLb2srZlBseDc3YldvWlZubGp5aElzaXdMUlZFa1h4REJiNDU2bkU3bmUxcXROcFIwVFhIeHI3YzM0RTYvZ25zeVRyODhhZHZPL2NSZjJwV3VPaTVxMmJYclMzcjJ2UWFqREtCbHdPQThIdHU1R3liMkpiTjNmdzdNL1RQajVSTDY1dlZsNU1paCtJbWtCZ3pzeTV5N2J1VEF5T3ZvTzJnb1EvTk96c2xtNlg4WDVSVjMvV3g4am1QR2pnMllYanFkamgzYkNsRDBzR2p1WDd6VHFxcUlQYnQwS01DdW5Yc1lPTUZMR21ES0drQlA4NmtOWHZlQmJYd205Mlp0WGxLZ3pWaVRFYWhreTlZRHhKby9ZTWFNRDcwNmpkdEI0ZTRTaHFkM1Bja1Y5UmdNYWpBYU1CbGlNUmp0T093MnNPNWp5MjQ3Y3NIcnpOanFOUldkN2xMMkhMU1JuYTFqeDZvbldiamlReXF0RG1vcWlra2RkWFBnaWoxemU2TUgwQ1dSbWxCRFZRM2dzOHFycTZzd0pZZXlnUlR1L3BLOEFYZDZ0VHBkTWdQejBzKzdUOU1ZYTZLcTdNSTVOR3RxYXJiUXN0SWd4QlNWSkVrSnJCc2FFZzBOOHEycDFXZzBHcThwMnN3Y0ZWSlR0cTRDZU1yTHk5ZW5wcVkrRkJUeVpNVjdHL2hZN3NncjEyVncyclhIU2lNcnNTT2dwQUFBSUFCSlJFRlVkeFl6Y3NSRmx1Snhoc1haQ2IzSHNHOTNMZ1g1QmF4ZStqZWVYTEdkZld2bklnTVRubnlYL3J1MlViQmxDek5HOVdQM3dvOTRaTVNKQzBRcWQ2eGc4TDEvYi9IN3VObXZNVzFFMW9VUHBoaGJrZzlZMG5veFlvUi83WVliR1RVNTlwU1B6T3ZWOHpydEZFVnBldEZQZXFLZUFVTnZvbmVDOTY4UkkyNGtKVDNsOUFaUDlqRkVlT0VUVUZDMFpnYVB2SkVVMlgrOW0wbnJyS2Q4eTBJbUxQaUMvSTN2MFRYQndQb243MlIrUlJNVXFlVVQrMFdOSmhOV3E3V1ZQc2dYZEtSc1Zpc21rK0dDdGJkMTY4ZGZOUU0xMTBuTVVCR2F0eGJrVy9NQm0reFBhR3NDdHdCVmVDQTZtcGJXYVoraUtKdDhzUXZlLy9CRC9sMW41c1diZXhGNUJzLzc2QS9mOEltbkxjUFREQmNWcmxsaTIxSmNYQkx5bGMzT3ZvemQyLzZEVlFGd3NtWGpkbkp5ZWdZbWxTRWhsUkczVG1EeE13OVRzVzgvRHA4RDJXcTFrNTdkbjRuVFp2SFErTDdzMlhmZ3BHMmJzNGV6ZnQxN3JHdTIzVFc0NnluN3JkWHBVS3FyZkgwOGZWbjJ4QlRtTHMwL3JXT3ordzZrNnNCWEpHWDJKamMzbDl6Y1hOSjhRWVhzM0o0VWJQR21rdFFVYm1GWFZWTkhZczFHU2t1OGtjRWQyM1lFbnEwNnZTKzlsYzlZR1lnYUt0VFVXSUVFQnZSUDVtQ0ZNOUJPZGtiblZvSDI5RlNhVEFabTJDbTF4Z2F1bDVtZWh0RWdVMUZhU2tMWFhuUk5NSUJpWSsyNmd0TytiRTUyTC9idENhV0t6ODYrak8xYnRubFhnM09Va2IvOTRQbjNkKzNaUTA1MnpnVjVQOXh1OStZUkkwWWNDd0kyRnkwVGM0TnkxNlNRWk54ZzM1cEdvMGFyMWFKV3E5VitVUE5GUjJVaFNRck56Vkc3dldHdHdSQTFtSVlqUEY3d0hWWmRCQVBuN3ZlK0FQRnBmSEx2MVFETVh2d3E3MWM0cVhPNnVYSE9TMlQydUp6WGJ2UnFCbTkvdnA5K3ZYcGhraThxWENOeitBVHlYcjZKdEs1dmtUWDBQdFkrTlptVVFST1pzdng5Y25LdUlrVm5wY3JZbjQzanZHYlhaeXRtTS9HWmo4bnNta0p4NFc0bVBmS1MxM1RCelVQRGU3QkxTU2ZKNktTd3hNM3k5WU5Qcm05bzlTUWxuOTNMSzZjUFpHcnZaOG5KdWd5aklaVmxCZS9ROVRRdXRXUFRXK3hPNzh3ajQwN05NRy9NR3NIaVNSOHhzR2QzdW1hbVUxVnlrSzZqL3Nhck0wZHgxeU4vWitYZzN6Rmc2NHM0M1lMa0lGTjAzTVM3R1RxK0g1dXlPbU14UnlEalcvdEJuY1NpNWY5Z3pMaXJXTlkxRTZXcWpFRlRuMmZtbU40OE5QOFZ4bzY4blp6bHlWaTBEZzZXQ1padDNVck9XVkhnNlpuMzZrdU1Ibk1EYTUvcWlzNVpTYW10SGZrN1Y1RTFkRHptSjY0bmIvQ242T3hWV0JMU1R2dXE2WU5HWXBoMkd3Y2RqK0ZmK3lkcjFCU0dMYjJHbkx4cmlaVmRLT1ltbXArWFo5L0J5L25GRk8rclFGZHlFNnNlMHpOajRYc015ektlL1lTMUgyRGpMaVBMbDZWZmtQZmowS0d5VDFveFFWMG5NRU9GSk1sQjBkQW1UYzJ2cldtMVdxUnUzYnJSME5CQVEwTURqWTBPcWJIUmljdmxraFJGa1JWRmtZVVFha0Q3Zi8vM21QSGhoeC9lQnJUL0pZTk1aV1VsVHFlTDVPUXpxeFRiczJjdm5UdGZndlljMTRyV1ZKVmpkV3RKc1lTK1hVNjdsZkxLYWt3SlNaajAyaGJuVk50bFVwSXRxSDhsSHdtM3cwWjVSUld4bGlRTU9tM3dEc3JLcWtoSVNVYmI3RjV0VmVYWU1HSXh0MklCS0U3S1M4dlJtUzNFR2tJZHV0VVZwVGpRWTdHWXo0R0JwMUJSVmdxNldDekJhVG1LazlLU2NveVdaRXo2TTB2SldUN3JKbmFuUGN3VDQzdUh0Rk5aWG9iT2xIUmF0TzQvUmJZdm1jYVRwVG1zbm5QK1hVWkNpTEtiYmhyNTUzZmZmZGRPRTBXUkRiQkprbVRIeThQbWxDVEpMY3V5SXN1eW90Rm9SRVNFbG9nSW5ZaU1qQ1F5TXBLb3FDZ01CZ05HbzVIWTJEWklQWHIwd0c2MzA5RFFnTVBoa0JvYkczRzVYRkl6ampZTm9HdHNkRHlpMFdpbWhvRXRMR0U1ZjZKWWkxbTZxWVR4b3diK1Q5b3ZXUFVxNlVQR2tXSTQvMTlOcTlYNlVreU02UU9nZ1ZEdXRYcEpraG9BaHlSSkxrbVN2TnhyYXJYd0Fsc0VPcDBYMlBSNlBWRlJVVVJIUnhNVEUwTmNYSnpYRlBXYm95cVZTcWhVS3NuajhRaFpsdkI0UkhDSmxmdlFvVU5yMHRMU3BvYW5YbGgrUFZMRDhvWExxRzdGajJqSjdNdW9BUmQrelZiWm1NYjRVV24vc3ljeWNOVDRDOWJXNXMxYmRqWHpyWjNRdnliTGt2Q2JuejZzQ2pKQjFXaTFHaUlpSW9pTTFQbUJUVVdRcjgwWEhaWHh4a1lEMFZFbFBmMlMvVzYzYTdVc3l5UERMMFJZZmgxaTR0WkprOE9QNFg4Z2pZMk42MGFNR0ZGRnFGL05CYmdrU1Fxd2VSQ29EUTFsOFFqR0xyOXZUYWVMSURKU2o2elJhQUlIQktkK0JCZkcrd0lKSHJ5VkNHK0hoeVFzWVFuTFQ1V2lvcUpQV3RIV2dvTUdudFlvaXBxbmVHZzBHalFhTFZwdEJEcWREcjArQUd5YVFMalVyK0twVkxKb3p2WUJlTXptK0FJaHhDZmhZUWxMV01KeXR1THhlSGIwN0huWjl5ZlIxbHF3ZWFoVVRXYW9GNnZVcU5XYUZ0cWF3UkNGV3F2Vm9ORjRiVlNYeTR1QWJyY2JiMFdDZ3FJb0FYQVRRbmdBZDMxOS9iL2RpbkpsclV1bVhSdEQ2NUU1andCVnN5SjNqNHZ5NHpZaW9nekVSWVlwdG4vT3NydGdOVHNPVklJdWlYSGpoNk1QUDVLd25FTTVkS2pzUHlmUjF2eU11VXBvc2JzcXhBVDE0NWJmdDZiVGVRTUowZEhScUxWYUxScU5GclhhMlVvUXdkMWlvUmZBazlJbDgrMUxINXc3TVRIQ2sxbnVpdVRwY2RmVEp5RVNMMjNST3Q3OXJvcEt4Y1NXdjkyQ3Z5VDN5S0Z2R2I5c0czR1dlSTVYSHFWenJ6eitPYWdMY25pTVc1WHlIVEJuQ3l5YThiOXBYNnZUWTVBcm1mclFHNHdJQTF0WXpxRW9pckt2WDcrK2UxclgxcHFXMXNPL1lJc2tDVm1XV2drYStFMVF2N1lXaWNFUWhkRVlneHdSRVlGWGEvT2FwRTNnSnZ1ME5qbVFyT3NIdHVQbGg5ejVEOXowNXVvSGIrZWhqQWptNUgvdDY3S1h0dWk5ZTY2aCtScmpiMno5bE81NVY3UHM5OE40ZDlLMWZMcDVPMTgxWENRRDZmdlhXZ1ZsRmFINzdEVlFYRXJJU3VlS0FyWnkyTG9MM0c3T2FQVnZCZTlVS1NrR3V6TzBBN2JxbHUyZlNETHloakIyOUZCT0ZQRjNPNndVRjVkZ2Q3YnNYRTFsR1NXbDViVFlwVGdwS3ltbXZNb2FmcnN2WXFtc3JOeFlWblk0R05TY0JOWUxEU21oVWtLMXRlQ2dnZDhFYmRMV29xSzgybHFiTmlia2lBZ2RXbTJFendIWGxNR3JVcW1GdnlJaEtJamdhd3ozOHVYTFZ3TGZwY1RHNEdnTXBTMktpMnlaUUdqUWFsSDVsN09YQUxVV2crcmlHTWorRnBqMkVPUU5ndUdEWUlHdk9HM3hET2paSDZaTWdLemVVRlR0L2YyaE1UQnVOcFJzZ1NGRFlQQVk4TzBpMXd5N2ZSeUVlMVpBejdGTjdlUXZnQUZqWUhBdWpCa0wyU084djg4WUNVTkd3c2d4TUNnYkppLzhpV2JxMm1mbzNMa1hVNmJjUTlmT1BWaTVvOVMzeDhtVEU2K2g3OUE3bURyNTkvVE1IbzUvajcxc0IzMHpMbVg4NUQ4eGZ1UzFqSm01TlB5R1g0UWloQ2llTmV2UkwwOWhocllvZVBlVlRZbmc5QTR2c0VVUUVhSHpKZWthaUltSklUWTJGblZrcEk2R0JxODY1M1JxZkw0MmRmTUlhYkJKNmdFOGQ5ODkwWHJiNkJHdnYvenBkN05IWHp2OGxEZDB4M1hYOE1Ecm14aGZ2SmZxWXpYY09mcGFMcmxZY2wzZEV0V3hnajArWm1hSEE0clh3Mk5ib1hBWG1OU3dkaTQ4OUJTc2ZReWVYQWtIMThDSUZaQy80c3lhMnJrTmR1NkdETE8zbmNDSEpSTld6WUdhSFpBNkVaNlpCR2VWdjY1VU1tM1MvK094dGQ5d2E3YVpmYXRtTTJEYVk0ell2aGh0elc0V3JMS3lwZXB6VW1WUW5NNkF0cnBqelZLMEEvOUUvc0o3dlJEb2RJYmY4b3RRamg0OSt0NkxMNzdZMkpxMkprbVMzd3oxMEVUL0xVSWpvY0dncGlVaVFrdGtwQzZnclpsTUpzem1lT1RJU0QwNm5ZNG1YNXVHWmttN3dla2ZJYWtmazJiKzM3L2Q2VmNVbnc1dDBaYlB2cUJTWitHZXE3SzU1L0oydkpHL2t3QS81YTlkWk1HdFFacVZUZ2ZidG9BZW1EY1Rac3lBamJ0aFQrRlBiNnJuVUMrbytkdnhTNTZ2T3NlVUFycHFiM3IzMlRuL0NpbTBaekFnMjl0SXhzQkJxQXMvcDFRQmpPbjBUNjlrekxEYm1mdk1JbmFYMVFUQU03TjNmdzZzZVp6eGsyZXdaUGs2YklvNi9KWmZmTnJhOTA4ODhjUVh6VUF0V0dOcmtlTFJITlJhK3RaMHZraW9JVkIxWUxFa0lrZEY2ZEhwSXZINjJyVDRvNlNocVI4cUVRUnFDdDRJcWZ1VitjOGMvL3VBamt0UEhRQm9aT1duMzNMYnRWZlNKOVhDOWYzNjBzMVZ3cWFTK29zRTJNQm9hT2tMUytrSkkwWjR0M0hUWU5VVForYXpVOXd0OXhsUFVQc2NZTW81bjlFYU9aYWwyL2N5Zi9vdHlCVzdHTno3Y3JhV2VUVXpMeFhUUjR6STY4eldwWDhqYi9STWxQQzdmckZwYTJ2LytjK25ITTFNVUwrMjF1b1NlOEVZRkZ4aDROWFdXdnJXekdZemFyVWEyV0F3b05kSGhtaHRUVW03NnRhNDJuemdKbmtrU1hLdldibmlUU0hFL3BQZmtncERoSW9mcW1xOUw2U2psa1AxRWdiZHhmdlY3ajhBRGhSQzF4ekl6ZlZ1S1VGMThIb2pXQ3REZ3dvQUNVWW85VEh5YlB2c1BIZlNZTWJzTHFla09xZ1hTWmxrNmZleFpWY1ZBUHNLOG5GblhlN2xKSFBhc0xyMTlCNDRqQm56RmpJaTNVRlJpVmMzUERFVlUxZ3VFbTN0bTltelorOXNCZFNjUWY2MVZsSThaRUpMcDBLMU5iMCtzcG0yNW1VK1VVZEhHNm1ycTZPKzNvN0QwVUJqWXlOT3B4YU54b1hMNVVLdFZndTMyeTE1UEI2aGVNTnpRZ2dVRUlvUWVDWk11TFAyaFRyTGF6dW1YRGNQVGt4Yk5QbjZLN2w3MVh0OHNUT2VtcW9xa3JMNk1EUm83WVNMVGRLR3dzeXRrSk1GbWVuZUtPYlFoMkR1T0I5KzVIcjVrYk95d0pBRUd6ZENMREJoSXR3MUNCWjJCYk1CT0ovVWR1cFVaczhheXEwOXU2QTNwYkZpKzRka0dpdzh0ZUN2akJyWmgrV1phZXpaVjg2QzVlOTcyVjFyQ3VtZmV6dm1qQ3prbWhKcUVzWXdMOWZML1h0aUtxYXdYQXp5NDQ4L3JuMysrVVduOHEyRkpPUUcwUktKbHFBV0VXRDFpSTQyMHFaTkcrTGo0OUg1L0MvU2E2KzlTbWxwS1JVVlJ6aDJySXFhbWxycTZxelliUFdueS9xaHZlNjZJZnAxNjlhdGtpU3A5MG52enVPaXZMYWVpTWlvLzFtQzdzK04zY05oZzRwcXNGaEFkNXFYcnE0RVJRZG00Lzl1b3JvZE5zb3Fxa2hJVGtFZm5LR3RPS21vS01ldE5wR2NFRXB4ZlRJcXByRDhla1ZSbEoyWm1kMmYycjkvdndNdmkwZTliN01CZGgrTGgvTjBXRHdNQmkrUW1Vd3h4TVdac1ZnU1NVbEo0WkpMTHFGSGp4N285ZDdQcGJwTm16YlUxTlJRVjJmRGJxK25vY0ZCWTJNRVdxMFRsOHNiSVZXclZjTHQ5ck4reUhnOG5rQ3lMdURac0dHajAycTF2aG9URTNOeVlGTnBTSW8xaFVjNlNIUUdTRDFEclNzMjRYL2ZiN1hPUUdwckhaZTFXSkpTV3oxSHF6ZVNtbW9NRC9wRkpzWEZ4ZS92MzcvZnpha2pvUXBOcTd2N3RMWG12clVJSDRPSFYxc3pHcjNhV2tKQ1FnRFVBR1N6Mll6SlpDSTYyb0JlSDBWa3BJNklpQWlmcjYxMWYxdFExQ0t3K0lMSjFPWTlSVkhXaDRjeExHRUppMTljTHRlSGwxelNlWDh6UUR1bGI2MDF2NXBHb3czUUV1bjFVVVJIRzN6cEhlYUFieTBBYkFrSmljVEd4bUkweG1Bd1JPRk4vNGlncVNKQjdVc0JVWWtnQ3ZHUUVpdThpeTY0S2lzclh3MFBaVmpDRWhhL2ZQbmxsNXNJVGNZTkFKdFBXM09mWEZ2VE5Lc0hiU3AwTnhxOXliZ0pDWWxFUlVXRkFsdFNVbHZNWmpOdDJwaUlqbzRtTlAwaklraHIwelNQa3JiUTJ0cTJUZHJ1Y3JtV2hJY3pMR0VKUzMxOS9mSXJyc2c5MUF6VUdrK2tyZm1YMUd0ZU51V25KRHBSZWtkU1V0dVdIcEhJeUVnc0ZndHhjWEhFeE1UZ1RmL3dKdTFHUkdoOUtTQUJjelM0ekVvMHF5RjFTNUxrMnJ0MzcxTGc4Szl0a0RJenU0VnB3Y01TbHRNVUljVGhOV3ZXYkcxTlUydW1yWVhrcmJVV0NmVlhHUGk1MXBxbmQwUkdScllFTm9Da3BDVGk0K05wMDZZTlJxT1JxS2dvOVBwSUlpTDg0S1k1YlYvYlpaZGxmMmUzMjE4SUQyMVl3bkx4U21WbDVjcXhZMjgvM2t4VE82RzJkaUxmbXRjRTFSSVI0YzFaQ3c0WXhNZkhrNVNVMUdyNzNuWEl0Vm9zRnE5SjZnMGtSS1BYNndPQkJLMDJJbGh6RTRvUU9OMGU0ZllvUWhGTnJCOStkTzdhSTN2cHMvbUZtME00SE53TzN2cG9COU5YYk9MeC9OMGNhUlRoMFE5TFdINkY0bmE3UDg3SnlmbjhOTFMxa0tYMS9OVUZ2bFFQWHlWVVJGREFJTGdlMUl6RjB2YUVWbFFnQWFsOSsyVDhnWVNZR0NNR2d3Ri9IV213MXFiUnlEamRvTlpvVUtsVUlBVEMxemsvdUIwNmVNQzVZTU4vbHdRRDI3TDMxL042aVpNeGZiS0lzeDVpd3FyUHdpVTFZUW5McjFBS0N3dmZMeXM3M0x5Nm9CRm9EQVkxSDZBcHdUV2hUVkhRSm0wdHRCN1VHQWdZdEcrZmZNSStoRlFPSmlXMUpUNCtIcE9wRGRIUlhwTTBNdEpya2pacGJUck1iYUtGSVRLQ0NLMUdxRlN5OEdKYndGYjJTQkt1ZzAvZDk3SEw2ZnlYOThxTjVPODl3bDNYNXBIVHdjTEVHL3JnK3FhSXJ4dkNreUFzWWZrMWlkVnFmYlZYcjV3U0gzZ0ZnMXB3d1h0enZqV2Z0cVpxUlZ2VGhWUVltRXgrRTdUdFNmc1JBbXlKaVlsWUxCYk01amhNcGhpZlNlb0ZONTJ1eVJ6MVJVbUZXcTFHQk5HTE5HbHRraHR3Ymlzb2VFVUk4U1Y0Y0NzQ2xjclhuS3hDSld3VVY3dkNNeUVzWWZtVmlLSW9YejMvL0tMbUFZT0FiMDJTSkNldCs5WjhKcWhHTkdsclRXVlQzcHkxYUV5bUdNeG1iOEFnTVRIeDlJRU5vRjI3ZGlRa0pQaHkyNHdZREZHQkluay9BNGcva0FBS2lwQlFhOVFCSWtwSkNqQmd1c2RkTjdUaStQSGpMNENlUHAxaVdiVzlrS00yT3g5OC9DVS9DSW1HUm5kNE5vUWxMTDhTK2ZiYmIxZlBtREhEMWdxbytUVTJQNmdGcDNpMFdIR3FpYm5EWCtRZTVWdmhQWmFFaEFUYXRUdDFPV1FMWUl1SmlTRXBLUW16T2Q2WDI5WmtrZ2FEbXl4Qm5jTWpkSG85R3BXcTFhUmRKTWtWRjJmZTRISzVYcno3eGlGMDV3aVRYdC9BcDBvaUEySlY2SFZoVHE2d2hPWFhJRGFiN1kydVhTLzlKc2dFYld5bXJiV2FqTnNVTU5DSTVxQVdXdVR1SlpCTVNrb2lKaWJtbFAxcEZWbmF0MjlQZFhVMVZxdVYrdnA2WHlGOEkwNm5FNmZUaWFPaG5pTzJSb3dtRTJxUGs4WkdCVVZSRUVJSVJWRVVFQjRoa0NTUWtTVFZKNTk4OHZKVlYxM1ZhOXBOdjhrR2NOZVZjL1cyYVA0VUgxNnBLaXhoK1JXWW9MdGZmZlcxemEzNDFZSkJ6WVUzMTlValNaTFNQQm0zeWE4V1dqWmxNRVNIRkx5M2I5Lyt0UHJVS3JCcE5CcVNrNU9wcmEzRlpxdkRicmZqY0RpOGxFYU9CcjQrVm9jcU1ncEp1R2h3SzhJdEpFbXRVZ2toRkR3ZThOSWFTWW9BTndMWDFWY1BMTnZ6NWE1RlgzcWlGaWRwRmQ3NStIT3ljbnZUTVl4cllRbkxMMTYrK2VhYjFRODg4SUQxSkNab2kyUmMzNnBUTGRJN3ZINjFsbEhReE1RRWtwT1QwV2hPRHpST3lLZHFzVmlhSmU1RysycEpJNG1QaThPa2p3Q1ZDa21sUXBLOXFDdkxLaUZKQ0NSSlNKS3ZZbC9DSlVtU00vT3k3RTJsSlNYUHJpODZUTS9lZlhsNmNPZndqQWhMV0g3aFVsdGJ1eVFqbzl1QmsyaHJmbUR6KzlaOEFZTUFxSVV3NG5xam9QNWEwT2lRUk56bWhlNW5yTEg1SlNVbEpZalN5TzZqTkdva1BWbnhjYmJacUsrMzA5RFFJQm9iR3lXUHg0TmFyY2JqOFFpZkJCWlpsaVRKbVZoVCt0S00zLysrbXl6TGc4SlRJaXhoK1dXTDIrM2U4dWlqc3o5dUJtb09tbkxXVGhRRkRUWkJoWmUxSTVnOFV1OHpRVTArRTlSQ1NrcktHZlh0cEF6NFVWRlJKQ2NuazVpWTRFdmNqY0ZnQ0M2VWJ3b20rR3U3Vkw1QWduK3BQb0lxRXU2NjYrN2podzRkZWdFb0QwK0xzSVRsRnkwL2Z2cnBwKzg5Kyt5ekRhMllvSTVtSm1pZ3dpQTBZS0FXd1pxYXY4RGRZSWdPTEtQbk4wR2JzM2Y4SkkwTnZJR0UydHJhZ05ZVzhMVTV2ZFRoYnJjYnQ5dU54K05CVVpxQ0NFSUlmT0FtQ1NIY2dDUkprcHlhMnZGenE3VjJRWFIwOU56dzNBaExXSDZaY3ZqdzRXVjkrL1lyODRGWE1LQTFOMEhkUVJVR29tbFJsdEJnZ2IvQVBTcks0RXZ0YUVOOHZEZTE0M1FEQm1jRWJBQWRPblR3UlVodE5EUTAwTmpvd09sMDRuSTVnNEROamNmakVSNlBSd29HT0ovV0p2bE1VcGNrU1Nxak1lYmZqWTJPTksxV2UxZDRpb1FsTEw4c3NkbHNieVFudDk5RmFHcEhjeFBVUldqWlZBc1R0SWxqTGJqQVBaU09xRU9IRG1mVng5TmFqQzA2T3ByMjdkc0gwUnNGTSs3NnF4TDh4SlNhVTVta1RxRHh3dy96bHlpS1VoQ2VKbUVKeXk5SDNHNzNSNHNXTFNxZzlRaG9RR003bVFucUJ6V3ROcUpaZFlHQm1CaFRnSTZvZmZ2MlJFZEhuMVUvVHp0RHRuMzc5bGl0M2tWZVFyVTJ2MG5xd2VQeDRQRW9KekpKRVVKSVB0WFVPV3pZc1BMdnZ5OSt2a09IMUE2U1JLZndsQWxMV0g3ZUlvUW8zckZqeDlvLy9lbWh1bFpNVUFjdEF3YWVFNXVnWGsxTnA0djBzWGI0T2RhOEJlN0p5Y2xuWllLZWtjYm1sNDRkTzlLdW5UY0ZKRkt2QjAwaytxaW9JR0xLQ0xRYURaSXNDMW5sWDBrK2hHMDNFRWlRSk1uWnNXUGF6cHFhNDgvUmN2bk1pMGFzcFh0WXYyM1B1Ym5POW4wWHBNL2IxcStnelBwemY2NndmdHVGYXMxT3dmb3RPSDhoYzZXNWZMWnBOUWVyVC9rS3VvdS8vdS95ZnYzNmx6WFQxbG96UWYySnVMN3FBcThKcXRINHRiVlF2NXEvWktwTm0xamk0K05wMXk2SmpoMDcvcVI3T2lOZzArdjFkR2h2NXExUENubjk2ekkrS1NsbjAzZVZOS2k5TnJJa1BKUlUxM0hNN3NScWR3aTdTMEZXcVlVc1MwS1NVQlRoWFl0VUNPRVdBcGNrU1kyeHNYSHZOVFEwUFBWTEFhSW5KbzlrVzltNUkxeXFMTXpubVpWYmZ2SjF5ajlieFNNTDExNlFlMXJ3ME8vWjhUT1BhMWNXd2pNclczbE9PK0RlZWVlMnJkMHI1L0Zrd1VHMHY1QzUwbHhlbm5NLzI0cHRKejNtMkxIcUY5Tjc5TjBUcEtrNWdqZEpraHFEUWEzSkJKV0VTcVVXWGxEVGloUFZnWHJ6MWN5MGJadEVodzRkUWxhY091L0FCdEMyWFhzbS9tNE04MzgvZ2dkdUdFUy85a2IyMXppSmlvckNFQjNEcFIzYWtaNlVRTHVFTmtoQ3dZV01MS3VFSW9RQVNjaXl2MUJlK0JrQUduTnpjNWU0WEs3WGZnSCtCUXEzZlVoWmpUZG9FaXJlQ2F3NGJCUVhsK0lNbXMvMm1pcUtpMHV3dTBNbnVhSW9wQTZaek1iNWsxdTlsc05XUlVsWjFabjEwVzZscExTaUJkZWR3MVpEU1hFeE5vZjdETzdKdTM1b2NVa3BkbWZMRjdTbXNveUs2cFl2aEsycXZOVitLMDQ3SmNYRlZGbnQ1M1djRkFWU2g4REcrUzEvdDVYRDFsM2dkbnYvRHRudmdKSVNzTGVpZWlsNDdZcVM0dWI3N1R6NXhCdE1talQybHpWWEZDZGxKU1hZV2huWDV1Tmt0OXYvM2FOSGorQjh0UlltS0MxVE8zeHJHS2hFTU1kYTgyQ0Jueml5S1YrdFBXM2J0djNKYytBc3F0QWp1SzV2VDc3NlNzWnVieURGa3NDbnRkVVlEQkc0WEc0a1djYUdnc2ZqUWExUkM2RlNTMm9aSEkxT1pGa1NFaUtRQWlLOEtTQlNZZUhYY2tGQndZdURCZzFLVUtsVTEvMGNRYTF3M1ROTWUrWmRDZy9hMlgzWGRTd3hxQmsyOVo5TUhaWUZ3S3ZUYjJSMVRVY3FQOXNNZWgzcXpKdlp0bVFHVDl3N2lHVzdQYVFsNk5penI1elpyNzdOMkw3cGdJTlo0NGFUWC9nTnRxejcyTE5zUnFDdFJWTi93NG9EY2FqZHg2azZXRWpLNk1kWk8yLzhLZnRZWGJpR0FZTStRRWMxRmZvOEN0WS9UNElXVnM0Wnk2elYzOU01MWN6QndpTEdQL0VHRDQzS09lVTlyVnZ3SUZPZTJrUkdWbWZLRHhRemQrMFhERW4zNmlYTFpvOW5zZlVJKzNidVl1ckwvMkg2c0V4d1Z6TnIvTTJzTEZKSTBkdXBOdlJtM2VwL1lkRkJ4ZTQxREI3MUoxSXlzN0JWSGlSNy9OTThOWEhnZVJtcldlTWd2eEJzV2JCbldkUHZENDJCYlVWUVVnRkRoZ0N4c0hJbHhBSTdWc0w0R1pDZUNRZUtZTzV5R0pYalBTOS9BY3paQnJxRFlOVkNqUW1LZkF0Tk9vcldVMkRQWVVtYTdoY3pWNVNhZzR3Yy9Cc3FERjJSN1EwNEtwM2srdlkxSDZlZXQvOGpQODMxelllSER4OXVMVmV0TlJOVUNhNEY5YThKcXRGb1JkTXFVNUdCT3RDWUdCT3hzWEVrSmlhU25OeWVUcDNPa2J0ZENPV3N0dVBIcS9sNDh3ZjB2MlU4MTkzL1orNjc3ejVHai80dDExNTdMVmRjY1FXZEwwbEROc1FSYjJsTGJHd2JTVktwSkpWV0swdXlySkprV1FOU0JKSVVKVW1TU1pLa1JLRER2bjE3aHl1SzUxTnZ3Y0w1Mlk0Y3FSQ0hEaDA2Ni9OdjZ4RWwzdHJ2YlBIN0szKzhYc1QzR2lWK3JIY0xJUlRSMEdnWFFpaWl0clltY016M0c1NFFIYTZkR25MZS9yZG1pVzYzelEzNTdma0hyeEdYM3paWGVJUWlYSWNMUkx1NEs4UVBucFAzYS85YnM0U21YVDl4cUVFUlFqakVIMy9UVWZ6cDljOWE5S0Z1L3lvUjMrVm1VWCtLZTZyOWFwV0lhM2VGMkgvTTRmMnRzVVljci9QZTJ5M2RWT0tQTDI0WFFpaGk3NzluaWs0M3pCQkNLR0x6YzVORWo1c2ZFWTFDRVVLNHhkTjNYeW4rOE9JMjMvTzVUdHp4ajdXQjZ6YzJPazcrckJ2M2lUNXRFMFZpWXVoMjlmM3pUMnVjOXIrbGlHNjN0Zno5MjNjVTBlMlcwTjg4UnhYUktWRVJueHoyL3Yzang0cG8zMDhSTHQvK0Q1OVRSR1E3UmV3OTZ2MjdvYUhwM0M5ZW15RzYvKzZ4WDlSY2VmZnhzYUxmZmQ3bjJIaGtoK2dVcVJLdmZGN2RZcHpjYnRmTzk5NWIrd0R3VzJBNE1Cam9DMlFEWFlFT2tpUWwrdDdoS0ZtV0kxUXFsVWF0VnFzaUlpSmtnOEVneGNiR1NtM2J0aVV0clNPWm1kMjQ0b29ydVBiYWF4azkrcmZjZDk5OS9PMXZmK09WVjE3bTQ0KzNjdng0OVZualVmUHRySG1EVE1Zb3R1d3RKckpiSDRiRmV5Z3ZLL05GU04wME50Unp5T3JDa2hpSHh0MklRM2lFSk1tU0pLdUUxL3lXRkNGNWtMeHFxd1RJa2lSSkdSbmR2aTRyTzdRd0tTa3BWcEtrOUY5YUlHRHd5RnV4NkwzV3ZVN3IvWUpYRkc1aThqT3ZjS0NzR3NWUlJhV2NkMXJYNnAyWGl3eklTY21ZbmRWWW5ZRHU1T2VrNVY1TnNnNUFTLytCZVN6Y3VSdkc1bUFyM2NtTWVmOWk5OEVLRkxlTm1tb2pWdUJrWG94ZE93cElIWFF6WFdOOW5pT3RFWk8yU2RIdm5lZFZaNUpTVXJCVmZRN0ExcTJiMGRwem1EWGpZUUJLUyt4VTZBcUJQTEw3OW1QRzVEOXhiOFZuNVBYdHo2aGhnempwbWwvYXJtd3YvL0dDakZ2SmRpaFh3NXI1c05acnBXSGQ0eTJQOFJmeTlCd0tHV2J2LzNWQjQxQlpmUlNqTWZrWE5WZDI3ZnljL2lPbmV4OXpRZzU5TTR5QmZVM2o5T2wzU1cyVDNucDArdjFIbWdVS2dpT2dKL0NyeWFKcEJYZC9zS0FwQW1vd0dIeHJnclloSWNGYkI1cWFtb3JKWkRwblkzcVd3T1poeFhzYjJCT2Z3eFBYR1BqK215S2NQbG9qaDcyT1Q0N1cwUzQ1bVdqRlFYMjkxejhncTFSSXNwb0lMY0xqY2VOVUVFaVNnaTl4MXc5d3ljbnRQNjZxT3ZwY1hGemNUQ0QrbHdSc09xT2htYk9wa0ZHai9zcGo2ejlnV0hZSzlsMUxzVXo0OFBRR1JnNGFHdm5NSGRDSzM0T3FWREZoK0cwTVcvUWg4d2Rub3E3Y2dpWHpyejg1REMwSDk4L25yRktBck54ckdUSFk5MDBhY1NQR2hGUUFza2JNWUYvT2NQSTNGYkIwM24wczNmSkg4cCs1OThRTk9BOHlJdSszbERUcmFOZGhEN0Rpc1FubmZPeU15VEJ5Uk5QZkk4ZEFRdkIrWSt2bm1ZM1IyT3pXWDlaY2tlWFczSFRCNDFTMTdQVi92L0hnOVB1L0o3U3czZEdLWHkxQTlSMjAyTEh3cnduYU1nSnE4QVVMdlB4cWJkdDZrM0NUazVQUDZYaWVCYkFKM3Yvd1EvNWRaMmJwNzNwaGtBV2VoZ1ljRGdjT1d3M3JkaHdqT1MyZFJCeFlyYlY0ekZOaUFBQWdBRWxFUVZTQlVxdW95QWhSNXhTU1RxMUc4YmdCU1pFbENRRjRDeFM4L2pZaGhHUTJ4Nit2cVRsdWlJbUorZXVwOVpRTEt3YWpucXJLYXVpYWNPcURxOHNvVmFmUXQyY0tNckIremJ1NDBaKzN2aFh2MkV5Wll6YkpPaWZiQ3JhVE0vWVA0SzZrdE5wSS83eE0xTUNPOWV1cFZFNTlUOW01QXltWjh3K0txcWQ0dFRhM2xScUhBWlBoeFBHbUFmMnY1cUZ0eFdUUEd1dlZ4aFE3VlRYZXhxeFdLN0hKR1l5ZWtFRnVrcHU4SjR0T2ZqUGFWQmF2ZlkvbXZtMnQ0YWQ5MWZWR3NGWjZ2ZHoreVorYUI0WlNrRk9odDQ5QW9xcnE5Q1plMTU0NWxEK3pBU2UwMEVCL3JuT2xkMDR2NW0zYkNyZG00YXpjeWJZaUt3TjgrNnhXcTZOQmlubmx3VWYrM3o2YTBqb2NRRU1JcUxWTTdmQnJhOEg4YXFLMXlnTC9LbE50MjFwSVNlbEE1ODdubnVubnpJR3Q0UWlQRjN5SFZSZkJ3TG43QVZCRlczaXFkd3FGaFY5eVNOR2lQbktNYit4MXVCdnN0TkZIWXRicGlEWEZVSC9rbUtodjlFakNJNFJLclpaay9NU1VJZldra2hCQ05wbmF2R1d6MVVWRlJVVTk4bk1DdGdtVC9zRDRDVmV4MkdSZ3pDTXY4dERJbmljK09HVUFVL0llcFcvdU5hUVpGTXdwOFlFSFhyRmpCYU9tL3d0N1ZRa2xWVEo5Kzc1UDVyQUhXVFJqMUZuM3pXTDJNSGJRMWFpcHB0STRsSUxSMmFCVm1ENmhNOE56KzlBeldZK2MxQjZMZk9wN01tYU40TlVaSHpFMHB3Y1pXWjJwTEMzbHNaV2ZNamo5eEFia2dJbHpHUHJaYjhuc2VTVVpLU1lPSGlobThvTDN1WGVRZ2JWUGpPZXg5VWZKU0kxbFgyRVJqeXg4KzVSVE15SHB6TC9pRlR0ZzFIU3dWMEZKRmZUdEM1bkRZSkhQMzU2VUM0T0FyQ3d3Sk1IR2pSQnJodVh6WVZ5ZU4zaGdMUWR0RHVRdk9vMFBYYytoNUxrZlpXdVprMEhKMmwvRVhCbHk3eXhlSG5ROXVRTS9RTzEwWWJRMHFhUExIdjNkaS9jL3MyRlhNMUJ6QklHYnR4YTBsV0NCZjZGalh3UlV0QllCallreEJkWXRhTjgraGZUMFRraVNkTTdmVTBtSWM1Tm5jK1RJRWZidTNjdDMzMzNIb1VObEhEbFN3YkZqeHpoK3ZJYTZ1anJxNjcxRjlQWDFEVGhkVHNudExhQ1hQQjZQSklTUWZac2EwQUJhSVlRT2lMVGI2KytKakl6OHc3bTY0Y3JLU3B4T0Y4bko3UzRZR0ZhVmxlRFdtN0hFR3M1N1cyNjdsZklhQjhsSkNTRzVQRFdWWmRnd2tKeHdaaHFQMjJHanZMSWFzeVVadmZiMHNvUHNOWlZVV2QxWWtwTFFCbjA2SGJZcXlxdHNXSkpTVHZ0YUYxSVVONVNWZ2RFTXBqTVlxbTFMcGpLL05JK1ZjMGIvZ3VhS20vTFNja3hCNDNyOCtQRVhZbVBqdGpRelBSc0F1KzlmcjlZbVNVN0ptMlFmQURaZlpZRS9UMDAwQVpxQjZHaHYvV2RjWEJ5SmlSYmF0MCttVTZkT2RPdlc3WlNMc3B5dHFHYlBmdlRjbUdnR0E1SWswZGpvTFk1M3VmeUY4UXFLNHZHWFdQbERzVDVRRlUyL0JkdTZYczBOZ0srKyttclB5SkVqVWF2VnZjOUZQK3ZyNi9GNEZJd25jcHFjQjlFYlRSZ2l0UmVrTFZrVFFVeDBGTTIvZ2Jvb0k4YW9NN2ZxWmJXV21KZ1lOS3JULzZwcWRGSEV4RVNqYW9aZGFxMmVOaWJUR1YzclFvb2tRNHdKZEdjNFZDbFp2V2s4WEViWEhsMVIvV0xtaWt4MDBMalcxdGErUEdqUXRadC8vUEZIVnl2QTVrM0M5Zm5WSkVseU5UTS9BNkRtTnovOUN4ejdBd1Z0MnJUeHJWblFObUIrbm11LzJqa0lIclF1cWFtcE9Cd09uRTR2clpIYjdRcFFHbms4aWcva3ZHRFdCR3BDZUpNbEZjVlhWNG9Rd3VWM3VxMWI5NzcwK09Qemxqenl5TVBxaUlpSWU3aG9wWWJsQzVkUjNZcUNiY25zeTZnQlBRbkwvMGpVc1l3ZE4rSVhPMWZxNnVwZWUrQ0JCelovOGNVWHpmUFVta0ROR3dIMWEyb2VmTXdkL2dobzh3UmNid1RVbjZzV3VzSlVXbHBIVWxOVHorK1FuT3NMZHVuU3hjZlo1Z3lrZi9nTDVQMmFtMjhUUWdpZjFrWkFsVk1VNFdjQ2tmdyt0emx6NXRURXg1dVgzSDMzM1hKRVJNVGRGK2ZiWStMV1NaUERJQktXY3pwWDZ1cnFYdi9yWDJjVnZQNzZzb1lnVGEwaGVQT0RHa0dWQmJJc3RSWUJEZmpWdklTUmhxQWEwSVJBV2tlWExsM08vN2Ztbkt2emtrU1hMbDFvYkd6MDhiVzUvRnh0QWMydEtaRk9CSUdiUUFpaCtJaEFRa3hVU1pKNDRJRXB4N1JhN1pJNzdyaURpeGZjd2hLV2N5ZDFkWFd2UC9iWVkvblBQdnRzUGFHQmdvQS96UWRxSWZscVhoTlViaEVCOVMvRTBwd3cwcHVyMXBiVTFBNTA2ZExsdkFRTHpqdXdBVVJHUnRLNWMrY2dXaU92MXRia2EvT2FwRDZ6MUE5dXdxZWwrU09sd2VBbVNSTFNQZmZjZTdTeHNYSHgzWGZmcmVoMHVudkNVek1zWVRsclVIdnRyMytkVlhBU1VHdVFwTkJWcG9LWHpndU9nRFpwYWswSnVERXh4b0JmelorcjFybHpaeUlqSXkvSS9aMno0RUZyNEtiVDZRTGc1dkg0d1MzQTFlYlgydnliRDhiRmlYUkJBYkJodzBhWEpFbDcrdlRKZFdzMG1qTU9LUHd2Z2dkaENjdlBTV3ByYTErZVBIbHl3ZUxGTDlwUHBLblJTbVZCRTZqSndyL0FjV2dFTktyRmVnVituOXFsbDE2SzJXeStZUGQ0RmpGM0Q1OFc3bVhPNm56K3VMS0FWNzc4SWNCRDFWaGZ3L0tQUG1YR3Z6ZnhsM2UzVTZ4RWNja2xsOUNoUXdvSjVqZ2FGSW5EOVkzVUNLMXZkWGw5OE9yeVFxUFJvRktwaFQrRDJSOTFvWW5EclJGd1BQYllZN1UzM3p6cUJidmQvdlNGbmhRSDkreWsybkd1cnVaazM2N2QyRTQ3NDZhY2tUbS80Y0JaRUg5Wks0b3BPZ1AyaDIydlBzSzlUNjc1MmIra0kzT2dxSlhuc1c4WFovQmNUMGZjekx0ck5GdEs3RC9wdVo1S0trdUxLS2s4UzdJNzl3R0daTjlNMlVrT09YNzgrQXZYWERNb1A4aW4xa0pUb3lVTlVYQmh1NCtHS05TbkZobXA5eVhnZXFzSzR1UE5XQ3h0NmRBaGhVc3V1ZVM4cFhXY08yQlQ2bGl6cTV3dXFSMjRJYU1kbTdma00ydHJDUUEvRkpmd2RiM00xZDA3a3gwcmVPQ0ZWUncydENVOVBaMW9uWWI5RFJMMUhzRVJSWVBSYU1SZ2FFWlM2UU0zdGRvUGJsNXl5bVlFbFkyQVk4T0dEZlZSVVlhWGJEYmI0NzZCdVNBeWUrelZGSlNjSzE3TVNpWU92WWtpKytrRFlXbEpNYzZ6ZUdFL1cvVTQweGVzTyszamJUVkhxYWl5L2V5QmJmeFVTR2hsRms4Y3loazgxOU1ZcVIxTFdWR1JSdjlVL1U5NnJxZVN0ZlAvd0x6VmhXZjlvU3dwTGoxUnVaemo2TkdqejhYR3htMEppbjZlRHFoNUpFbnkrSU1GTGMzUFVMSklmMVdCbjRJb1BUMzlKekhoWGpnZm0yemk4ZkhYQnY1c1l6L0tmYnQvZ1A2cGRPN2VrOGU3Ky9la3NtdnZmclorWDgxRDJaMXd1UVlTazlDTzl6ZXVwNkRjZ2NraytjelNRTm9IUHI5YXdOZm1kdU1ySmNVVDdIUHpwWVFBRUIxdFhIYjhlTFhkWkRKTjRUeldscGJ1WE1maU5aOVNXT0hFL3N5ajdEYkw1STY0bTJFNTNqTHBmVnRYczJUNSsxamxOb3k1ZHlxRHNydzVPb3E5Z2tYUHpHZEgwV0Zpa3pzeTd0NXBaS2NZMloyL2pGVmJ2cURFVnNPaU9YL0ZvcFVaT3U0UDVIVStkUUx0N3Z5bHpGKzFtWVNNcTVnK2JUd21OYml0WlN4ZTlESzdpNzVIMGNjeGVzSVVCbWVuZ0xPY3ArWSt6ODRkdXpoZ3JXVG16Ty9RSmZkaTVyMGpBaTlEL3NyRnJOcjRCUmphTW1yQ0pBYjE5UFhkV2MyU3VZK3c3ZUF4aGszNEk2UDYra3BmM0ZaV0xKelBwcDNma3RENWNxWk9teFFvNk42M2JUV0xscjZQRFMwWkEyNWkycTJET1IrcHVQdTJ3dkpOM2huY08rVFp3S290VUdLRFJYUEFvb1doNHlEUDEvWHQ2MkRaR25BYllPSTB5UEZYdVR2Z21RVXdaREFzWGdCMkEweWZCZW0rNFhoMThRc01IL3RDMDcyYzRybmFxdzZ3WVA0aTlwVFVram5vdDB3ZE55UlFjclZqM1dKZVhmMWZuRm9qZWNOdjQ2Nmh2VkdxOWpIbi83ZDM3dUZSbEhmNy84enNJWnZOWnJNc0lRa2hpVEZnaUNIRWlCZ1JJeUlpSWxKRVJLU0lpSlFpV3FyV29yVktLUzh2UHp6VUlxVVVyVkk4SVo0UUVSRXBJcVVVRVJBUk1VYU1NY1FRWWdnaGhHV3oyZXpPenZQN1kvWXd1em1BZUtLK1B0YzExNTVuWm1lZXVlZitudTd2d2hmWXRiV0N1cksvTTZ2bW42UVZYc2FNY1lOUHdOSmNMRi80Q0J0THYyTEkySXVqa2F5aGdvVUxGMU5XZmF3aFBqbjlxU2NlZldBMzBiV2ZMVEhtWjd1Z3BtdHdIQVZxa1VCQkFvbUowYUNtVlJYMCt2WmtpTDV6WUlzWm45WTNrSnQrVnRzUC9NZXBPS0l5S1RVSmdMeThQQlJGb1Z0S04rSmJXa2hPUnVkckN5MWg4QXFERzBBZzBDbTRpUzVkbktzT0hhcHI3dGF0MjIzZmxTcUlQU09QNGNOdGJIL3hFWXBLTG1OSXRwbTBETTFQVjc1aEVTUHVmSTBGaS82WFpGOGxNOFpjeGRKdDcxT2NZbWJwZlRleXpuY0Y4MmFPbzc1eUR3ME5ic2l5azk2ckg4TXRGdFlzZVpIaUlWZVFiNE9zNUpOSW9GV3FXUFp5T1EvZS9rdFd6TCtEeVhNc3JKNDNIbDk5SlkyV2JDYmZOZ3BmL1c1dUczMFpTM2QreXNBVU80T0dYb0hzMmsxbGJSK0dENzhDMlJhcFhYeHg5ZzNNMjJabndaeGJzWHBxS04xWEhnYTJMUzgveDhnbER6RWhleHNUeHQ1TWNmVzdaSmtWSHB4eUJadk5WekQ3empzb1hma29JeVkzc3V2bDJWQzNsUkhqLzRjRnovNmRiTHVQYlhzMHdjdk9nRzNicXNmWnNQZFF6TTJ6SzdmZE40T1VUbVpuU2pZTUh3cFRSOFBZZXlFdCtOMzBYakRjQW11V1FQRVFnc2MxYUY0dmc2bFB3TUpIZ0ZvWVB3dzI3WUVzU3hEWTVzRzY3VEIxTXRBSWpTN0FBZERBK3ZXVjNEZXZVSGZsZEhKY1BkV01IWHdGK1ZNZjR2WlJhU3liK3h0bWVpd3NtajZZeHQwckdEM3pGWll2ZXdpSDJzRHVhczJNbGEwcERCMStCZDd5RGNoWkZ6QjhlQkhXNUJNM0NWNDU3eGNzM0p2Qm92dCt5YnBGOTFLaG8ydHpwdjZNK25ObmZYSDk5YmJuUjQ2OEpsVDdHWnVuRmxwYU93SzFVRlZCWithbkJtcGRTVXRMSlRNemsxNjllcEtYbC9lRE1mbHZCR3pWK3ovaHNVOENQRG5qN0ZoN2xXZldiQ1R1N0FGYzJTTXUvRzZmUG4xSVQwOG5vYm1aMUZRNkNpSUV2eTBFaEtPbEhZSWJhSUNZbXBxMmZ2LysvYTZzck14YlpGaysvOXMrVUk2MFhwU2s5U0xOWmlTLy95Qks4aUtIYnVuQ3Z6QngxcXVNS01rRCtqTjE2Rk9zV0x1TDRpa0RhV3hvd0pxVlFrNXVBVVdGUmJvTE01K1ViRHQyczRWK0pTWDBQOWtLR3RuS3pMbHpLTTQyVWpqM3Q2U01lZzdYdlBIWWV3MWk1cVE4ZHU3WmpWdE5JVC9kemM3ZHRRd2NrVVgva2hLYTlxU1RiTTZscEtSRUI1TFZMRnk4bFFWN3ZtUllsaGtvUnZjcEJTTnZaTnFvSVVBeEEyZjltYjIxa0dYWnlzSjFDcHNyN3lYYkRQM3Urd05QOVBvWnBaN1o1THNiYUZLc3BHUmswUzgzblg3OVQveDNMQTRuYVdsdGJpTVlUMER6a3JPZ0pBdHN4cmFBbDVJTmRqUDBLeUhxdUM1NkJPNTZBZ1lIOTJ2MDA3QjZLOXcrTlBnRkQ5eTdDSWFreDJ5c3FaSktWd2JaK2lKYjJkYmhjUzFiK3l4bEdkZXdjdm9vWkdEdXZiZVNmOCtMTEpvK0dHOURJNnJGUmxwR05nVlovUWdmSW1zeUpTVWw3RnZ0cEtsWFVmUjU2dGhod1BJVkc1bTU2aUFEQzZ3VXo3MkhKYXYvRVBHbkhXcjhvTFhWL2NySWtUZnVwMjN0cDY1RWlsYUpqa0hOWURBSWs4bUkyV3pTZ1Zwc1VYdW9YQ296WEM3MVE0NVRCcllqWDFWeHl5c2ZNZmVtMGVRbTZHZWhZTU9tamJ4NlBKbmxOeFpHM2EwbFNTSTdPNXZFNHk0eU05Q1pvbXFVT1JwYWo4YmdvRFBtQmhJYWVSUGl6RFBQM1BiaGg3dWIrdmJ0TzlWZ01Bei92ZzVpZFhVdFpZdC94NjVuUS8vV3d0Q2gydlBwYy8vT2ZiUCtsMzY1OTJQSktHTFJzcWNZa3ZjTm9rTnlDdWxCZW1KSnk4RGFWRThqMExUMWFZWk9mcFRoWTY0bXhXNm13YTNnOVowZ3l1Q3VwVVpOSXllci9SS2VaSWN6UEUzTVpnVkZBVzlkRFkzZUd1NGNkMDNrZTBYbm9IckIyR3Nrejg3YXpheEpWMUJlNDJYNDFQdDVmTTdrVG5YWGJJNFUwdEppdmlIYnY1TThwT3BhV0RvTFZ1bUljVC85aGh5UW05NnVZeGxGL2pyYitSSlg2WGJHalA0MC9GNXgza1dvUVByUXlUdzRwb0twSXkrazJpVXorZDVIbVQvOVZLZHFFM1gxRmpLU05iK2ZNUzBOWjNBLy9YNy94b3NuM3I3bXhobTNIdEtabjNwUUN4ZTFTN1JSNm9nQk5STW1VM3NOV0VLeTNtMUI3ZnZJVmZ2V2dlMzRrWVA4WXZsV1pveS9ta3ZTb3AycDc3NzNILzd5dWN6VE4xK012WjNDT1lQUmdDT3JKejNQRktocUlJYXRoWUFzNUc4TG02UWRnVnNJRFVYSU5EMzMzSDZmckZyMTZwK3V1dXFxdzJheitjWnZQZG9peTZneFl2bFpXUmtVVGY4Yjk0NXFhd1U3Y29wWnN1SU5RR0g1cko4emE4Rnl0ajF4WnlSMkk2dHR0UGM3RDk3VVUxT3JVSlJqeEZ0WGc4ZVpRVEx3eExMSEdEUHJLUjZjM0Evd1Vibm16N0U3M21hL3NhV1RJZGRSV2UyalY5YkoxU2VhMHpKdzJuSjVldTFiWWZOUFA1MUd6WmpMcUJsemNkWHRabkRoNVd5ZU9wbGhuWlFFVnU3Wnd0cHRCMkpXazByeGlDSFl2NGx6VG03YjB5QXJIY1lzaHZFRlh6T1U1c2dteDFKSFRRUDBTdUdFeHpVci9ReFNCcVN5ZnVXOGRyWmhZOHJzaFV5WnZaRDYwbFVVRGZ3OVU2WU9wNWRSUDc5T05qamxJRDNGUzAyREI5S3NLSFYxTktyUTR2Rzg5TmpTZjd4OXh4MS9jSFVDYWw2ZFdhcVBmcllCdFVoaGU3eE9xY091NjFXUUdpeHN6NkZQbno2WVRLWWZQS2owOVlITmY1d1ovM2dUUzBadkdnL3U1N21EWUloM01LRW9pLzNsZTdqMXJjKzU0ZEwrclA5QWkreWNkY2FaREVoUFJQVTBzZUtqYWo2cGJ1S0lUMlZ2TnlmMnREUElVS045YkRwUUN6MFhJYXZUNzlkeTJiUkVYd0lSYkFzelFpR0VFR1BHWEhzd0x5OXZ3ZnZ2NzZ5MzJXeDM4QzBtSXVmbjkyTDVvZ1ZZUmhiUXEzQWcrVmxPcHQ3NUs0YmY5VXR5elA5RHJsTm01NmIxNUl5Nmg2SDVkbFkrL2lCa0R5UTN6Y3l1ZlZYMDZuK1QzbkFpUDBmaDhRVlBVTjgvZy93QlE4ZzVrWjlOOWJKZ3ppeFNiaC9GaXZsL1p0akUzMkVEc3JLemVYSHQ4K3dxa2lsYjl3VHJ5aFgwS2xlNXVYM1l2ZVFsWGh5UWpDTXRoK0VEQzhDWXhaMHpTcmhyeXEwc21QTXJyTjRhOWpYYW1EcXU0MTRFY2xvSmR3NzFNWG42SEdaTkh3V05OYXpkWHNYYzJiZmpLOS9Nb3ZYVkRDa3B3bE85bFFaekR0bk96di9POENtekdYNEt1cEc3dDBLakYxdysyTDRKR3F3d2NIQkVGVGcvQng1ZkFQWDlJWDhBNUNURDdUTmg2alN3emRlQ0Nsdld3K0Rib2Q4SkNYUWF3NGFtc0cxN09ZTkhSV3VIdFhkYzgwZE9JbWZ1cGR5MUlJOEpRL0twTDk5RHFUdU5lNmFNb0dycmFsYVYreGpjTDVmYTNidVFzN0pKMXMzT3ZGNW44K0NLZjdBcXcwMXlSaDZEK25YbU1yWXhjZUp3NXMrK242ejdmczZhUlk4b3h4WGx5VXR6ZS8vblVOc2VCWHBBODBxUzFDcUVhQ2Y1Vmg4b01JYVltb2lQRDVtZk5oMVQwMEF0MUt1Z1Q1OCtXQ3luaDN6aTEwL1FWZjBjOVJsSVRURGg5U3Q0L1FxdHNwbmlEQ2ZIbTF1dzJteVlSQ0Q4V1ZJWEp6bEpGa1NybXkzN0QyTkw2c0xaVGl0K0laR1htNHZUS0ZBVUJWV05sRnVwcWdpYm9qcXlSb2k5Q2RIaDNnbEprZ1FnR2hvYTFBY2VlS0RzdHR0dXJiSmFyVDBsU1hMQ04wL1FMUjV5RlVyZFBqNnRxQ0srUng5eTA1UG8ybk1BVnhZNVdmUHFxMngrdnd4clpsK0dYbndlaVhFeW5vWktOcXovSnhzMzd5U3JaREp6ZmoyYU9EbENFUzRaY1NVTjVYdjRmSDgxcWIzNms5bjFCQk5EVG1YVXNETjQvcG1WT00vOU9RL2RNNTQ0R2ZJdnVCUlJ0WU5YMy9nWENmM0dNWDEwRVQzN0ZKT1ZyR1Y2SitXY3g0QXNpZDBmZlVxZHg4ekY1Mm1PM1lKTFI1TnJxZU8xVjEvbjQyb1hGdys5Z3V4VTdkZzRNM3BUa0pNYTN0Yyt4UmVUSEM5VE1tb2Nscm9QV2JWcUhaOGVPRWEvUzRaeVRxOGVHQ1NGRDdmOWl3M3IvMG5aVnhKL1dQQW81L1ZJL0U0bTd0c3Z3MGNWMFBkQ2NCK0U2aG80ZDFBRTJDNFpBUTNsOFBsK1NPMEZtVjBoNjF3WTBCMVd2UW83UG9LMFBqRDRmTEFZSXJmNUFRTWhycDN0WlhmeE0rZnBYVXdiZTBuVSsrMGVWMU1TMTQ2N2lzL2ZYYy9hdHpaUjN4ckhrS0hET0NQVmpveVg3WnZmNXEzMTcvQmxTemNlL3NzRG5Ka1VPZWVaNTVad1Z0d3hQaXdyeDIxMGNuNStkcWZINGV5TGhtRS85QUV2clh1M01tZncxWSt0WC9uWSs4M0hqM2VrMEtGUDUvQUZBUzBxK1RZMitobHF2aElmcjVtZmlZbjJvQVNSSmhTcEJRcDZVVkJRZ00xbTQzUVozNW9lMjZtT1k4ZU9VVnBhU2tYRkZ4dzRjSUM2dWpxT0hHbUkwWEZyQ1JiV3QrTHorU1IvVU10TlZWVkpWZFdRbnBzQk1LRHB1Wm1FRUhGb2M5UlNWdlpKVVc1dTdoU0R3WERwRDZISDl0UDRNUXdQZDQ2K2tsRUwzMkpJdHZXMDJqTkZVZjY5ZmZ2Mk5SMDBNKzZnVDRId0MwRkFsdVdBUHZtMi9UeTFXRjIxVUVxSEZ2MHNLQ2dnS1NucHREb214aDk2QjVLU2t1alRwNC9POU5TYmxsRkVUVS9mSk5CNkoyaW1hZGpKSVVKK3Q2QlpxZ0pxZm42ZjNjOC8vM3p0bURIWFZBRTNuODZYVC9tdVRleXRhbXpuRXp2RHhnN2pwMEt3SDJwWVdiajYzOS83Vm4wTkZhelp2S2ZkejNLTGg1TGpORDcvK09PUGI3cjc3bnVPRTUzT0VXdCs2dHZrK1NWSkRrZ1NxcjVNcXIyS2dsQ2VXcXo1cVJlTFBOMUE3YlFBTmdDSHcwR2ZQdms2VUpOMGoxSVk0Q1JKQ2kxQ2tpUko4N2twUVVCVFVWVWg5UGx0SVo4YklHNjQ0WVphNEsrZmZiYXZ5bXBObUE1MFB4MHZuNHk4SXV3WjdVUXpaU08ybjlEbC85d3cyak1ZVkdLakhidnFLN2ZIdFR3eE1Uc2s0NjFQNTlDYm9PMzEvZ3dBQWEyeVIxYmJMMmpYZkdvaDh6TVUvZFNZV2dqVThyL1Z6bEkvT21BRDZOS2xTekQzSlFKbUdvaUZtSnNVZmgzTDNBQkpWU1VWVkNrRWFucm1CcWhCOWlaNjk4NWJ2V25UcHFydTNkTnVNaGdNUTA2M0UySzFPYkgraEdBL2pkRDl6R3doSlNiUlQxR1V6VHQyN0hpanBPVGlHanJ2enE2dkpHaXY4VXFvcVhHYmlvSkk4bTFIZ1lKOHVuVHBjdG9ldCs5TTNlTlVSbng4UEhhN1BhemZGZ29raExJNk9nZ2FkSll3RTdadFF3QUhpR2VlZWVhdzFXcmQwYTlmUDgrcEtJVDhOSDRhUDlRNGR1elkwdnZ1dS8vMVcyNjU1WWpPOUR4UnpXZFVNYnRPZWlnbW5jT2k2OUllS3oyazk2bjFPYTFCRFU2RDRFRUhKNDlQUGluaml5KytvS2JtQUhWMWh6aHk1QWhOVFUyNFhDNmFtNXZ4ZUR6dEJCVDhLRW9nRkZDSURTb1kwWUlLWm9KQkJTRHV3SUhxaTN2MDZERlprcVJ6Zjdwc2ZocW42MUJWZGM5bm4zMjJLaisvVDNtUXBjWDYwL1FtYUpUcGlTYmpIV0pxSXRMUTJFVEhQalc5K1JuTjFFNUhuOXEzeHRpYVhDNE91ZjNZTEdaa1BXY0tLTlEySHNNakROak0wUm02clMwdEhHeHFKaTR1RHBQY01kR3lXQ3c0SEk1d1Q5TG82Z1RDdnJpWTVHYXBJL0lXU2dIUm02YWgxNDgrK3VqQmdvS0NuVGs1T1g2ajBmaTlnNXVydXBSM1BxN25yS3lVay8rUnQ1NVZhM2JROCt3enYzSHprTk5wVk8zZHl2cDN0bERYWWlHblI5ZnZmd2RPOGJodVhmc2ljbG9COXJqdlpyZmNidmZ6VHo2NTlPV1JJMGNlcFAxNlQzMHFoMWZxdU9lbnJ1N1RIR1pxUXZGaHRqbXcyeEpJVEl3MFh3bEpENFZVT2dvS0NrNllKclYzeXpvQ1hYdVNhSlpBYmVURko1OWg2L3U3cVBmWk9DdnorOU5qKy9vK050WE5yLyt5a3QxK002bHhBV3I5OFR3NjZTb3VUSW1uNXZPUHVlN0ZIVGdkZGp5dTQzVHYxWmUvWDFkTW9neFByVnJGa3JMalpEcmlPSERVeXkxalJqQzFUOGNYYzJKaUluMzc5a1dXWldUWkVIeU1MSktrZjR3RUZDUkp3dS8zaTJDRmdoQkNvS3BxVkNBaHFQR21DazA2SkhEZGRlTnFnTC9WMUJ6WW01NmVmcE1rU2Q5cVo1VDFTMmRSa1Q2ZUdTUGFwcnpYNzkzSXdnMUdScFFVblB3S1BWWE1mM0FwZzhjTXdmbGZCRng3MWl4a1ZXTUJjeWNQYmZOWjNiWW5HRFRsT2FaUC9obHlpdWM3MjRmYTdTOHpkN1BDNC9kTytKYU9xOHFLQlg5a1ZNRjRNcjdsa0xXcXFoOTkvdm5ucS9MeXp2NU14OUppTzdOM3hOSVVTWklDUXFpcUVBalphRklOQmdPUkVxbElubHJkb2E4d2RjMGlNVEV4cXFBOVVpYWxWUlFrSkNSMGZsK28zc3prV1Mrd1pjdUlrSWNRbTgzRzNnMVBzYmJDd29pQmVhY3hzTWttYmhrN21vSk1MUnF5YXQwYnpOMzRNVzlOS01icVRPZlYzOTVFdXRXRTZuTXphY0Z6dkZTZXg5UThPeGRlY0JFM2pFN0ZMRVBOdmc4WXRuSXIxL1FaUTJmMzVZU0VCQW9MQzlGT2lJekIwQjdJU1VGZ2t3bUtVNkpGVFAzQm9FSzRJVE5ocE5NWW15cEpVaWlvb0FLQmpJek16VTg5dGV5VGNlUEdqYlZhcmRQYXZYczIxVlB2VXNuS1NvczZlQ3JnZFRYUTRKYkpTbzljRnFxaVVGMzJBYVcrSVNpS2dpd2JrZVh3eENWNytBeldqelMydVZqY2pmWDR6RTdzc29jNnQweEdpajM4bVdMdng4N3R5OXRVQUNsS2RDbU9iRFJHdnFQNnFLbXV3WktjVHJMTkVyczVrRlhxcXFzd090Skp0bi83MmVPcXFsQlg5UW03YSt6dEhBZUZuZHZlbzkvWVc3aG41bmhrNDhsTlM4WHJvcnEya2JTTW1ENmxLcWlLbStyYUp0S3pNOEsxcXFxcTRxNnRZTXR1YjNBZnREbDB3dVBxZGRIZ2hqU25tWnJhSnRJejBzTGZVUlNWUlJzL2JWTzByeXBLVkNSVC8zOEJtdXFxY2N2Mk5uMWVRMm9vQi9lWFAvMjNmNnpZOHNEL20rc21FaURRbDBmcHpkRDJURTlWa2lSVlZUWHJSS2dpdXBteDJZd3N5OFJackpoa2lFK3c0WEE0dE1WdXcyS09JeTA5Zzl6Y3M0SVZCV1p0RHRVMmtwNlJSa05OTmJhMExLeTZVL1hzd2djWU12bC9JdEY3MmNISUNST3hOTDdMM3FvTzd0Rk45ZFM1RkxLeTBxT3VKOFhycHFhMkhrZEtPbzdZK1JvOFNvMjExZmdzenFnZXJLclBRM1Z0dzZsRVJlTW95SXh3N2l4bkV0NURmZ0NjWFNNd0pac1R5TEFiYWZGcEYxdGVqNGlDWm9yVGpxejRhVDJScGszUUxJMkFteUVHNUNLc0xjTGdwQkRBU1pJa2lkREZIZ1E0Z1M1aTJnNTdVMjYrZVVyZzVwdW5QRmxlL3RrSE9UazVFd3dHd3lXaGcvbjBmVDluenVwSzh0TmtLdHpwckY3M0V2bkpabFkvY2lPelZoN0FialFnZTZveEY5M0N1bVV6TVZkdllmaVUvNlZtMzI2YWJIZFRzY3BKOXVBYldUcHJFdUJsOXFSUmJOejdHZTdDV3lsZEhteFY3dDVEYnRiUEtDakpZL3ZlUmdiMFMyUGY3cjNNVy8weFk0b2NySHg0Qm8rdjJjRzJLaWZWTlc4VEp2YzFXeGcrL3Y2ZzRxYVAwcDI3V2JUOUtKUDYyYWd2MjhDWThiL0NuSkZQVTBVWlEyWSt4aVBUTk5ha2xMNklZL3h6VE1rOXh0WWFnYWRSWWNXdUhmVDdOcVA0M25JbWpmb1ZaZFdsVkxtM01YejNDMWh5TDJmdGtudkFWY3I0c2IraHZMeVVHblVYdzdjL1E5SG9PM2hreHNnVHNyOHhNLzVHZm1FT2UwdHJlZVRGTnhrM0lJdW03VXZKbWZBWVJTbFdMRmFGZmU1ME5teDhoVjcySnU0WmZ6MWI5MVZRVmFjeWZQaDc0RHlIbDE5K0JDZDBlRnduRCtoT1ZmSUFxbmZ2SkcvQWhiZ3FQNkpvMnQ5WmZOc1F5amNzNWJhSG4yZnY5dTBzMmRQQzJIRDFrNHU3eHYyTVhmVWF0Rlh2MjgzUVdhK3c3TTRScUs1S3BvMjlqdDBlSnc1ZlBSVDhuTFhMN2cxV1ROUnhjV3IvLzV3eHJPak5GNWF2cStxQXBlbk5VRjhRMEh4NmxoYTZhVXRhdUUzRW1ReWlWVkVKOWYwMEcrR3Iyb09vQmhQeVY0ZVFWTEFtSnRHMXE1TkRuL3lIMXlzOVpHZWs4UHd6eTdubDBaYzU3endMeSsrOWh2bWJtckc3UDhXWWNSNDI1U3ZxazY5azk4dHpncGRIUFMrK1hNYnNlMDgyRnVmbGlhY3h2RGdBQUNBQVNVUkJWSHR2NHBGMVZlU21tS2wwSmJOcS9TdmtPWTFzZmZvK0pqLzhOZ1c1NlZTWGxUTHd0cit3K003Z2ZHamFSWGJlcll3ZG5jcUdYVWRRWEkzTVcvTVIrYVdQTVB6aExSUTVCRTFOdGVnNlJwM0M0anZPclF2L3daSlBEcmY1ckhaL0tSZk9mNFVEM3RqZkJYaDY1VW9tdi9ueDE5cVdxZ2I0K09POXZQYmFheXhhOUJmdXUrLzMvUEtYditTNjY4WXliTmd3THJwb0lFVkZSZVRsOVNZN081dnUzYnVUbkp3c0pTVWxTUWtKVmlrdUxrNDJtVXdHZzhGZ2xHWFpKTXR5bkNSSlZrbVNFaVZKNmlKSlVncVFBZVFBWndORnZYcjFHdERZZU9UL0NhSFdOSCs2U25UdGZxSFkzNndJSVZUeHQxOWRLbjUyLzdOQ0NGVzg5cWNiUkxjTEpvdmpBVlVJZjRPNCt1eXU0cWtkRFVJSVZRaWhpaWQvZTRXNDViRXQ0ZGY2NWROWFpvcytOOHlQdkhkOHR6aXJ4Nlhpc0ZERXplY2xpWCs4M3loZWUrQUc4YXZITmtXK2MzaUw2TkhqTW5HNG5mVUpvWXAzSHZ1MU9QZnFlN1Q5RVc1eDgvazl4RU52bGdvaFZCRTRWaXJPeXp4YmZIQk0rNjcvNHhYQ1lPZ2lubnEzV3Z1OTN5TmEvTzJ2VndoVnZQLzhiSkdhbWhxemRCZFAvcnUydzkrRWxyZi8rZ3R4MWUrV3RmdlpHMys2U1Z6N3h4VW5YSWNRcWhDQk9uRnBqeTdpK1EvcWhSQ3ErT1NWMmFMYmhWTkZxMURGMGZlZUVJYjRzOFNPdzE0aGhDcisvTXVMeEUwUHJRMy85dlBYNW9zKzE4OXVmNzN0SE5lYkxrZ1ZyM3pxRTgvODdpcHg0NTlXaXlQdkxoVjlycHVyKzUxUFhOOG5RYnp5ZWZ2Nyt0V0hLMFh2M2lYaTQrRCtQSFgzVmVMSzN5NFRBYUVLSVR6aWpzdk9Fbjk1cDFxb2FxQ21ydTZqQlRMOEhCZ0xqQWF1QWk0SEJnRVhBRVhCdVprRFpFaVNsQktjdTRtU0pGbGxXWTZUWmRsa01CaU1KcFBKWUpRbEdja2dKZGtUSkFra1oycDNzck96U1hQRVliS25jdEZGQTdsODhQbVlKQ2k1ZWhMMzNmZDdIbnJvSVY1NzdUVSsvbmd2cnJLVmRPdDlMYzFDNWJuZlhjMnZIOXZNbDI4OFRPWlZkeUlDNVp4NzVpVWNDbDZmZ2YzcjZOTDlNZzYzYysyKy9kZGJ1T3EzeTZMZSsrTE5oOG04OEFhTytyWFhyLysvNi9uWi9Tc1FRdVg0c1NZQ29mVWUzVTdQcnVmeVJmQjc0dWhPempDWitNTUx1NExyOHRMU3F2RHBLM09KUC9NS0RyV3FDT0g2Qm5sc3FwKy92Zm9XU3E4THVDVS8ycUJzYnZ5S1cxLytnUHR2dUlhTUdJZnFlenYvdy9NTmRsNlk4dlgwbWlSSm9xQ2dBS1BSaU5Gb3dHQXdoaG1jTE9zZm8zeHhZYitiSkNraDlpWlVWUTByaHVqWVc2aS9RaURFM2lvcUtoU25zK3VxdDk1YTkzN1hROXRIT3dkY2VsTjJVQ2wyNkpETG1QL0VibUFpQU1XREJtR1RBZG5KNElFNTdOcGR5dVRpUWFkMGFHV2JIUnN5ZG9jZHU4Mk96V2JEN1RrNW1lN3FyYzh5ZlVrNTY3YThvZTJQcTR6TmV6ekltNTdqM2kwYTgvUXAxWlJXdU9uWFQ2UHc1cHhCakI4WWxPQXdXdWpNRU8wL1lRNTFFK2I4c002NjJyM3M5ZVF6T0ZpOW5qOWtLTWJKdjZaYWhXVEFuaitRL3NtYUFUcGswTVVzVzdzTEdIR0tHN05pc3huQmJzTmhjMkt6ZS9DZTVMbndOWlF5YnZ6OXpIL3hYeFFFOTJmVHhpMzRjck81Nzk3UEFDaDNxeHg1Zi91S0ZWKzFicGs0OGNhakoyQnBvUnBQbnlSSm9UU09nQzdxS2ZUNWFUN0ZMNHh4OFpqajRqRWJQS0xWRDlhdThiZ1ArZW5hb3p0MmV4SjJleUtaOXQwa2RVMmhSNDhNRWtRakx5NWRUSFdEQjFWeDA5Um9KOVNCd1c2elkzWFljZG84SU51dzRpYmtEZlUyTmVDeE96aFpvcjkxODcreEl2UGdyTjlySExleW5sTHZIbUE4YWxNRjk5NzFKM2FXVmVGVmZkUzdHMmh3UTA1bzVaWjhKbzN0RjN4aHhoTDBOV1QzdjRBVU00RHRWSUV0d0l0dnZNVi81RE41NnNyOEtHdXkxZDNBcmM5dTVOcXJyK0txck9oTTA0LzN2czhmdHJ2NHg5UVJkRDFGWlpPOHZEeEN6aytqMFlqQkVBSzZpSm1xK2VIQ3ZqZ1JmSlNDRVZHZGJ6WUs0RlFkd0lYQUxRQW9WMTQ1WWord0pQT3lYNzZyS01xMVJxUHhpcE54S24veklVZHM5Wk5ZbmFkMk4rT24vSm5GcS85Rkw0Y3h2QitxT1psaFk2NG1LN2lxMGFPdkpTYzNVdThvVzIyY3JGZHQ3K29GVEpyelhKdjM3MzM4bjR3ZmtNS1BiOGpoaDhqWk9BbFpJYVdKMjhmZlFNbnNweGhUbEJhMXZnRkRyMlprZ1ExRlVkNCs2NnhlRzZaT0hYZGdlUVRRT2dJMXZZOU4wWm1lWVg5eHFFK0lMQnVFMFNEd2VrSDF1a1ZEYXpNSWdiL0ZTMEtDalRpempNbHFvMHVYTGppZERxeEdpYTZwUGVoNVpsZm0vZklQWEw5c005T0hGV0NzMzB4YXdSOWkvbTM3YzlKaXQyUDJ1SEJCMjhDTDNON1ZvWkpWZERHalI0ZHUvbGN6MVpFQktOdzM2V29zazU1bnd4T0RNRk5OY2ZKRjBkUGZhc1BTRG5MSnN2RWJCQThRdlBuMjI3eDBQSmxuZjM0ZThicWRWanhOM1BIVWVnWU9HY2FOdmFQLzN1ZmxIL0diVFFkWjhvdVJuR0g5WmlyNFBYdjJ4R3cyQndIT2lNa1VEWER0TUxjZ3dFbFNSSG84VXFFUVltMjZ3RUpBeDk3Q2srakFPMDkrWURJOVdWcFRjK0NkdDkvWmVGMi8vbFBDU3IwN3QyekJyVTdHcGpheWVWc2xvNlpHWktSdFZodU5EZlhmN2ZYbnEyZjZ1QnNZK2VBTERNdlhIWHQ3QVVQeVBWUzduSXdicmtudXVCc2FNTnBPN1J6a0RadksydjdqMnN4Y1o4cUpRL2xXYXlJTkRWKzNvNU9QaFRPbll4MHlnMmtqZ25mcDlBSUtyV1ZzM3QzQWhIN0psRzNhaUZKNFBsa3llQUJYMlZaMk5mZ29UamF6YWN0LzZOL3Y5NUY5c050dzFkZWc4RjJXM2Fnc3ZlZEdhZ3AvelpJSkE2SStHVEowSUs5K1hyTnIwdUNTTjN1ZmxmdHA2T1laQTJqdGdKcmtseVFOK0lRUUFRRUJPWnh3aXhvSXFBTEpnTmxvRWthakVlRnJCdGtrenNoTTF3UWlaUzhmZi9ZVlJsc2k2YWxkK2R6dG9WdTNiaml0WGc0MkJSaWVjU2I1dVFrY2NYZGwwTUFDak1EMmRldW9QOG43czV6ZGowTGZQc29hb1NRRzJkS2MzYW5jV0JVbEV6OW84Q1hNbWY4WmVmM3ZRYnNISzVwc1BoNnFxejFNTFNuR0xFUFZwalhzUFlXbVhWLy8zTFljNG9GTlgrQ3l4REZrdnFZUWF1Nld3N3ZUTDJYSGh4K3lzZTQ0SDd5K2xuKzhIbVFIbHcvai9nR1ovUDJ0OTZodGxMbGg0VFBCRmNXemJPWUUrcDVpLzlUTXpFd2R1Sm5Ra2cyTllWTTFtc1dGZ1U0SUlhUmdQYW1RcEVBb1Z5NGNXTkN4dHhEQVJiRTN3SitSa2ZrdjJSai8zcjgvZVg2WUVPSTZJQytGU29ZTnVneWpwd1p6eWUrWk1DQnlkb2VOdjRWRjQzNUYwZW9IeUJ0MkN5L09uMHJkOWhjWk8vTnZlQnFxcUdxUUtTbDVrNEtSZC9ENGpFNzB0N3o3R0Rmc2w5UjZYZFRYVnpPeTVHTE1HUmV6OGNYNTFHOTZrZVc3NmlpY2V6TXZ6OVZPN2J3Vi8yWmt2cFVIbi80SDQ4Yi9qRFVMOHJENDZxbDI5MkRqcnBWa25NSnhOMXZ0WkZoUExhK2gvOGhKT0I2L2dZS2lGM0FXWGNPV3AyZWRGTEJ0WFBrY2pyUlJFV0NUMDFpdytBK01IWE1oS3dweUtDMnJaZkdLTnpHakFaczl6YzY5SXkvRmFsVXBkMmV3N3BHSVFtMzZnTkVNNVJvS0M4L0RsbjRCNjljdndkbkpjZTFzeko5MkJldkszT3lyOUxCMzNFVXN0RHBZc09wTml1MTdlWERSZXNpcm9WL1IzN1RyWU9aZitlTU5GMzAyOUJlejF2eXE3NkFQZXo4Y1VIUlJUTDBpaHkrV29VbmdGNW9haHhLY2gyb0UxQ1FoeXdoRkVVSklNbWF6ZGowY2IzWUpjMEp5dUF1YzFlckVZVHlBcXpXTzR1S0xhRmozVDE1K3pVVzgwWVN6YXp3WlBmUEk3Tm1MbVZOeUdUWGdRb295ck1qcG1hU2Q3UDFQem1EYzZDeldiOWhEeWZqb2JLbUNVVk1ZdU93YWN2SmVvWERFcmF4Wk1JT2NFYmN6YTh2TjlDODhuNEplNlZSVjdtUEVQVTh5ZjlJZ2JydHpBbE9IWDhDeWdqUzgxdTcwT29XY3B0T3k4dURyaktOSGoxSmVYazVWMVpmVTF0WlNYMTlQWStNUm1wcU9CV1dQUWxVS0xYaTlyWGc4SG53K0gwS29rdGFoWGlFUUNFakIvZ3VoYWdVcFdMRWdCOEhmQ0JpRFZRc210TW9GTXhCMzMzMi9UenpiVW5INTZzQTExeTIvYTJoT2cxY21JK1YwekM1VHFhdXBCb3VUdE9RZmgwYUk0blZUVTlkQVNrWVcxbUMrUmRQMnBlVE4vSURhVFgraXBzNUZla3dhd1E4eGhCRDdEeDgrdkdiT25EbTdIbnZzOFZhZEtlbHJ4L1FNUGZxREVVOUZ0Nmg2WDFxd2lvQmcwbTNRZWpHSEdobGpzVVM2czJ1cXQ0azRIRWs0blYxSlNlbEt2Tm5DMmVlY1IyR2YzbEVsVWszMU5iaXh0VWxGT2RGd2xhMmhaTVlHZG01YWZOS3VEYSs3aWJwR0YybHBHVmgwS1R2dXhub2FQREpaR2NtbjFPWE0rTjgrdWJ0MDZVSmhZU0Z4Y1hIRXhabkRkeXc5ZzlNek55SFVVSWNySWN0K1NaWmxGRVVSZ1VBVWV3c1YxOHN4NW1rQVVJTG1xUi93ejUvL2dBOTRyZmNnOFk3M3p1RkRlM1JMdWhib2Vmb2RLWm0wak93ZmxmZkxhTEdSbmQyK1lvQnN0cEdWWmZ1aEFhM3k4T0hEYnp6ODhNTWYvUG5QQzd3NmdQSjNBR2l4Z1FGRkh4d0lBcHNJbFVVRjVidlJRRTNMVHd0V0UwU0JtczJtcWQ0bUpZWDZFMmdkMnJPenMrbmR1emZ4OGRGbWt5TWxnMVBKOXJIbmoyTGhqRVpxWFNvNUo2bnJickU1eUxhMTNack5tWUx0Ry9DRC8zckdwcHRFZlBiWloxUlc3dWZnd1JvT0hUcEVRME9rdnRUdGR1UHhlSEM1anRIUzRrVUlnYy9udytmejRmZjdKVVZwbDcxSlFnZzVDSENobWxORGtMMlpndXpOckYvdXZudG00dTkrOTd0TG5VN24xWklrOWVHbjhmMnl1S1lhdHV4ek1XUkEvZy9IalZXMXJMNitmdjNzMlgvODhNa25uMnp0Qk5CaUYzOFExTm9ETkQyb2hWbGFFTlJFTUVjTnZlUlFCTlQwMVFTcDlPaVJRVTdPbWZUdTNmc0hiN3J5WFkwZkRiQ0ZSbFZWRlpXVmxkVFUxRkJYVjBkRGc2Ykc2M0lkNC9oeE4wZVBIc1hqOFNDRUNCYlF0K0x6K2ZINy9TRmwzaUJ6QzBpcUtxUmc1RFJrb29aQ1FnYWRlZG91d09YazVKaTNidjNQeGFtcHFWZkpzbnpoVDVEejR4K0JRR0Q3Z1FNMTcxeDhjVWxwVGMxQkpTWXcwQm1vNlFFdDdFY0xWUThBUWgveGJNdlNUSmpOY2VnVmI2MVdmZDFucEpGeFJrWUdPVGs1Wkdkbi82alBoZkhIOW9leXM3T0pqNC9IWW9rbkxpNE9zemt1SEdRd0drMEVBZ0ZrV1VZSW9UTlRXekVZREtFN1lZaTlpVUFnZ0NSSm9ieTNrRWtxeHdZWFlzeFRIMkN1ckt3MHA2ZjNlQWZZVWw3K1dWRjJkdlpRazhrMDZxZkwvOGMzV2x0YjErN2J0Ky9kb3FKejkrdkFUTS9TZk8yQW1yOERRQXZvVWpqQ1ptY3NTek1halVHV3BvR2F4V0xSeVhnbllMTWxrcFNVaE5PcGx4M0tvbWZQSEZKVFUzLzA1OFQ0WS94VHFhbXBXSzNXSU1CWnNGZ2lBQmNJS0JnTUJsUlZEVWRRdlY1akNOencrWHhDbHVYMmZHOGlhSnJHUms4REJKdGlvSVhpVFhxQUE4eTV1YjEzQW52ZWVXZmpTOFhGRnd5eTJSS3VnbE1LU3Y0MFRoL1hSODN4NDhmLythOS9iZDQ5ZXZUb2hnNEFyVDFRODNmRzBEb3lPME1zclgzVFUrOVAwNElFU1VrT25FNG5LU25kNk42OU8xbFpaOUNyVjA4U0V4UC9UNXlmVXpaRm0xd3VqdmxsZW5TeFJSY0FCeFJxang3SEVKOUFha0owcjhxV0ZnLzFiaC9KamlRU1ROTDNNZmtvTHkvbnl5KzFpT21oUS9VY09GRE4wYU5OcUdvQXQxdUxtTGEwUkpyRnRMYTI0dmY3OFBtMGhqRTYzeHVoNWpGcVFLQUtJUWZibVlaTTFJNThjSHBUMVFTWUoweVlZUG5Ubng2K0lDVWxaWWpSYU94UXhYZlA1dFZZOG9hUmwzYnl6VU5xeTZCQ2dVR0ZQNjZKV3JGck0ycEdNYm5oWTZHaUtGRmw1aGlERS9GRUpjaXFxdXFLMzZNK29iNm1HcC9aMFNZaTJOUlFRNk1iMHRMVC9uWG9ZTTI3di9uTmJ6NTkvZlhYL1NjSmFQNTJBQzNRQVVOVFEvWE93UUFCMFN3dDByeTRyVDh0b3FQbWRHcEJndlQwZE00NDR3eHljM08vVTM5YTlkNnR1SjJGNUdlY0hoSDM3MDIyYVBucVZUeTJyNW5VUkRPMWpjMU12dnBLcGhkK3QyMEhKRW1pZCsvZUpDUWtCUE41NHZINy9SZ01SbFExRUpYa0c1azhCbHBialJnTVB2eCt2OUMrTDB1S0VrQlJGS0g0QXZoVkZVa1NLdHBOTmF3V0VzeDNNd1FuYTRqQkdZT0E1Z3NCMjRvVksxcFhyRmp4TDJEcnhvMXZQM1grK2VkZmtKaVlPRlNTcENoZGwvVlBQMFR5bEFGZkM5ajJiWU1WalQ4dVlGTmQ1VXlaK3Y5WXNmM3Q4SHNyNTkzQXhBZlhrK3l3aGFmeUkycytZbnkvUm9wdDV6SnYzMUdHdDhlSlBXVVVwQlZnSC9jdzI1Zk9qQUJYeFZiR2pidUpXbU1HZHFVZXVmQm10ajU5RDNqcnVXUEMxWit0L3NTM09jblEvTkhIbjVZZjBZRlNlNERtN3dEUWxCTUFtbWcvT0dEQWFEVHBwWWFJaXpNVEYyZHB4NSttS2Q1MjdacE1hbW9xR1JrOTJQMzZZdHpYTGFMM2R4d2tzQ2sxakptK2xtMXJIOFI4R3N5WlUyQnNyWlFlYUltU0xYcXlLWlczSmhUVGVPUUkzbmg3bEd6UjRORTNNRFhQVGt1cmovZzQ3UzhmMmIrWGk1Ly9ndi9NdW9idlMwNndxYW1KeXNyOWxKYVdVbHRiU3lBUTRPalJSbzRkMDRJS3NmbHVRV1hlVU5RVVJWSHcrLzFTOC9FQWZqVkFuRGtTUGRVRkdDUWhrS0ZOa01FUVpIREdHQllYdFh6ODhkNjhuajE3WGhnZkh6OUVWWlIwVmNkQ1Rnb0FWRzJSalRHTUpVaGgzSTNRNUlPTXRLOEpMRjZvcW9XTWJBaWxHbm1hb0s0UjByS0lrcTRKMWI1VVYwRnlCbGgxczF6eFFuVWRaR1czdmFPcXdjOVMwcU4vQTdCeDBUU1dOQTVoMVp6eE9tRDdPUXRyTG1IcjQ5TmoxbFJGLzA2QXJYTHRnNHhkc2d0MzJXRTJWL3liZENPQW0wbjllMktmOWhLTHB3MEdvTFMwclBiTU04L1kvTkpEMHo3OHhmKytVQjN5cVo0RW9Pa1hKY2pRQXUyWm5BU0ZUNE0xelRGbXB3R0R3UlJzV215aUk5TXpJU0dCUkpzVkNZa3VLZW4wek00SUJna3l5YzdLNHBGcEEzRk1mcE83Um1SSHkxZ0I3b1phR3J4bXNqT1MyOHlWeHJwcUZHc3lLZmJvbTZxbnFaNjZKaTlwNlJuUlVsSDRtRDZvRDRNWHZzLzRmajk4ZzVmdlRiWW9CR3FoWTJjMHlIeWZnV2FIdzhFNTV4VFMydXJGWkRLaEtIN2k0eTNFeFZtQ1FRYk5FZHZjYk1Kb2JNRmtNdUwxYWl6TzUvUGhiL1Z6cE1FZ1ZGV1JCQXF0cllxUTVBQm1rNHFFSkh4K0RkeENRUVpaRGdjWkFrSmdBQ2xZeFNOQ3pLME55UFh0VzdnSCtBUjQrb0lMTHVoNzRMTVB6Ny83aFlyQmR3N1BTRCtaL3podE9PeXFnT3dKc0hwZTVQMTd4OEFlR1ZRM1ZKZkMwRm13K0xZVHIrL3BtYkNxQ2VwM0FsWXdGc0RXcGZEd2RGaStCM0pTb0xRTTVqd05FMHZBdlFjeXhzSElYR2h3d1o0NjJMSUxjdTFRdHhzR2o0YU1RdTJmNzlzTVc1c2dHOWorTWt5K0Yzb1ZRUGsrbUw4Q3h2WVB3eUVyVnJ6TzZFVVBmeXZ6WU0zcU54ZzY0Vkc4UzY5bDdmWUdwcFVrNDkyM250VVZXZXlaZkVtdHgrUFpVbEh4eFVmbm5IUE9majI3NmdEUTJnTzIwSHVob0ZJZ0RHaXlyRXBDcUdxb0l6Z0lKRWtZVFNZTXNpUzhMUzNJNWdTNldPUEEzeXdhanJySXpNN0dhdEZBeldLSkl5NHUxSkhkU2tLQ2pYakp6ZXN2djRFMTdRemkxR1pTaXNmeDVKekIyQnAyTTI3OFBaVHZxY0ZZZVJNYkZsa1pNUDV1NWswZEJrb2pzeWRmeTh2N1ZMS3NIaHB0eGF4ZDlUZlNMREJ6UkNiYlBIMHhtZzNVVis1bDlPem5lSEN5VnMvNTR0d2JtUFZ5SllXOWtxbllWODhUVzNjd0lJeUpaa2FOdW9nbEw2OWxmTCtKVWNmY1ZiYWVDZmM4eTd6bEt5aHluTGJBcGh2K1pwYnQrSUp4bDdjTjluMVY5U2xiampsNVdWY3p1djJEOTFuMC9uNHFqN1F5YjhMUHZuZjFWNFBCUU0rZVBZbUxzK0R6dFdLMUpnUzdYTWNDbkptV0ZpMksydHJhcW9HYjBjY1oyVWFPMXZtRksrQ25TNklXUFEwRUFxTEZGd0JKeFd4U2hhcXFrcUlnQ1JDU0ZJNmlCZ0NESktHQVpBaE9mR1BRVERXMkEzVEdIVHQyN0FMMi9PYktyS2N1Mi90Ujc1eWNuQ0tyMVhwaFo3bHhTemZBMm9Xd3RKMXlURnNCckp3TFRkc2hleG9zdk8za1R2NzJQYkIzTzZSWndSdnNDamo5WWJnbjZFcXBXZytENThMRURjRTdlaDNjc3hNS0hYRFBjRmk1RWU0YkF3L2ZDMk1maEhrVG9Hb0Q5Tm9Zdk1rMXdNVGI0ZG5kTURBZDZyWkM4VjB3ZWt0dy8zd1Y3Q3kxYzN0QjJ5dWlkTTFmR0ZyeHFqYVIweTVnOWZKNW5XZThxM1dzWGxmRjdIbjk4ZFJleXVOcjF6RjE0TVN5OGcvMzdmQjBjWlQxakRQb21abXFZMW1kQVpxaVkyZUtIc3drQ1RYWWxGaG9pZ3VTa0dSSkdNT1JUb2xXYjZ0UWhZRjRzNG40T0JPTlRjZEZnSGlPSFdzaExhc25TYmI0c0Q4dDBqM0tpczJtcWQwZStiU1VoTDRqZWZpdWNmVG9rVTU2ZWpwWldWbVFtOHZHamVPWk5mWnNISk9mWitiSTdQQmgyUHo0Yk5aNEwyTHZybm1ZVVZrNDdSSWVYcjZOQlZNSGFpUmd3RGpXUFR3WlQvVkdldlcvbTJuamQ1QmpxV1BKNHMwczIzdVFRV21BNHNNWFkwd1VGaGF4NjhHZGhCUnZ3cmNtVngyN2RuMkUyL2ZmRUJVOUJkbWl2bmxuOHovcFo3QjE5d2NzZW1jUGwwMGRUTUlQUUZOVFVsSndPcnVRbUppSXpaWVFGVUhWSnRGeDNHNHpack9IbGhhTjRZVk0wMmF6RDhsdnhHTHhpMkJnUWZLNEZReW1nREFhdFI0TkFVVVZJQ1JaRGtkUkpRM2toQnk4VU9UZ2hXQUltcW5oc3ExMmdNNVlXSGpPUjBFbTk5SmJiNjNyZnQ1NTUrVTdISTRpazhsMElYQlNuVFVHQnZYL0hGbGdhUVEzbkZSMitiQXhHcWdCWVhtWXVyMHdZeUdVMTJnbVpMMXVndHR5TlZBRHlNcUNVTy9uWGJ0aDl0UGE4K3lCa0JHY2VWWGJvTllJcXhmQkdrRDFnYXNVYW9Fc0FGY0RqVVlIam5iY2pEbURybVB4bktERXQ5RjJRdDlPNC9hMWxLWmRkdXo4cm9FZDlVWEZlOStaOU5jdkRBOU5QaEx5a1hiQ3p0b0ROYjNDUnJUdkRGU0JwR3FQUW9SN2JzaXlNTWdJN1lhb0NKQzAzcEVHSXhhTFJSaU5SdEtOY1BCd0EvYlViTHAzdGVzQ0JCcW8yV3pScVJ6WkNlZnorcUtWUExzeWdXSERScEJiZEdLaHh5MWIvb1haMDUvWjkvNCs2RGJ3VUdmWkMyakFObVNRWm81YnN3WlNiQzlsZDVWQ1RsNHlRd1lsYzl1NGF4ZzM4aklHRHgvRm9NS3NxUFhhblE1YzlVZmFiTTg1WURKMWRaTlBkMU1VVGxXMktDSEJ4bGtKTnM2NnNvUTM1cTVnMjVGTHVMenJENVA1YkxWYTZkT25EM2E3bmNURVJCSVNiRml0VnF6V2VKcWFOQWJuZHNkaE5qZGpOcHZ3ZWsxNHZhMGNOeHN4NENjK1B1eDdFN0xrQjJOQU1wczFCdWRyMVJpY0xHc3BJb0dBUUpLRmhBZ0g3S1RnWFYzV21KemsxL25pRERFZ3B3YzZZMUJDNlFDdzhaeHpDazNMbGoyVms1TnpabStielZab05CcjdRL3Q5bGNPS0xsK3o4TTRTRytSeXc5aXhNRzhkak93SG50MlFOcVdkN2NSc1N6YUNUNG40SXZTZVhYc0dqQmtkZVQxbVBJUUZrT3dPN0lvTGx4ZGk2WmpWa1U1ZTNnbDE5TjJLb256Z2NybEtGejcrVk9XUkQ3ZlgyTTNMMVJobUZvanhnM1VFYUhvdzAvOUcxZnZQZ28waVZVbENJQkN5TEtNR0FrS1dEYWhLcXhESUpOb1RNWnVNSEd0c0VBYVRCbDRta3dtUDV3aXlMT0h6SzlnU2JjVEh0TVFMOWZsME9wMTA2NVpDZXZxRmJMdm1Kajc3OUZOV1Bmc2dmMzN0QThyV3pPODhLZ3dVRHJpYzBjT0NnZ3VqcjhhZWtuMUNxSmp6OHZ1TTNyNkZMWnMyTUhISStUeTQ3bU1tRkVla3F0eE5MbXpPMDZPRDFmY2tXNlR5MWJFV3VpZHAvS3l4dm80RGlwa3VsaCsrbkNNek14T0h3eEVFT0ZzWTRPTGpqMkt4YU9DbUJSWmFNSmxhT0JabndvQ1BoQVJqcUdLQmhEZ2pMc1V2TEhZRGlpOGd1WVdDeVJ3UUpsa2xFQWpnOTZ0SWtpRFlUeWJVNkZsdnBzckJDOFFnU1ZJNDZLQUR1ZmJBenZqUlIzdU41NTEzWGltd0QxaDd4aGxuR0c0YjlYeFdxK0dzSEo4dnFiZkpaQ3FRSktuWHQzckFHcUhhQ0NWRjJrNnZXMzFTNm1RTUdnanIxOENJR2JCM1BkUW9FZlptcXdZNUc0cURRWTJHQmgyR21YTXB6bTJrdE54RFllR0pvOE5DaUFwVmlFK09IcTZyMkZ5eDc4c2JiNXgwcUthbVJvMWhaZTJ4czQ1WVd2aXpvTktMRXJNT1ZRaWhUOVVRV2d0Y1NjZ3lCRlNFd1dCQThmdUZ3V1JDVlZveG1PS3h4c2NKZ3hSQVVTRStUbXQ3Sjd4TmZIVk0wSys0bU9xOUgxRGp5dWI4TkljdTRWWWY5ZFRxUGJ0MjZVSnFqeDZjZmU2RkRPL25JRzNrYzNnMWw2akdvQzBXNmhzYTBMeVoyaGc4NkZMdTJWcEp2OWtUTlphcmVtaG9pdHhxTm0zWnhNeVJVL0JVYjJPbnE0QUYyVWJBaDh1dFVqUndLRVVEaDlKVStrL0t5bXRCQjJ4bFphVVU5Vy9MR04zbG01Z3hmeFgzTEZwTXZ2MTBCYlpUa2kxSzVTL1B2Y1M3TFJhNnhjdDhlYVNaY1NNdm8zL0NhUUh1SkNZbVVsQlFRRkpTa2c3Z0VyQmFHMmxxaXNkaWNSRVgxMHhjbkpuR09ETW00Y1ZtTTlIYXFrVk4weko5dUN0TTFCLzJJMVJGeUdZRmU0SWlCWk43aGRjYlFEYXFRaGFxRkVyMDFRVWFRaUFYWm5IQnZEZy8wYmx4aGhpQWEvUDh5eSsvTlB6dXJ5V2ZBUlZ4QzNrSE1Eenl5SjlzaDVvdVQwOTA5Y2hxYmJXZGFSS21YaUQzUmxNbytmb2pDMjRmQ0NVRElNY0d5VmtuTjRudWVoaEdqNEg4cFpEYkg3S0NkcU9jRENzV3dhU0JXdkRBVlF2bS9yRHg4WWhUZXV5NEsxaTVmaU1UQ2tkRmgrZUYrTXpyOVg1eC9QanhMNnVycXcvKzg1OGJEdDEvLy8wdGdEcWhYN280QVpoMUJHcXh6OE5MOFB4RUpkSUcyd01KaUtScklFbENRc0pva0lSZjBkS0tmSzFlVE9ZNExDWlZIR2x5YzdqQkMwTENhSkF3eDhWak5jUGVmWFhrOVJ0SWFsYzdHWU12NHUyTk8vSGs5eWE3VzNKUWxjTkp0Mjdkd3FWUm1abVpiSHJpTGk1ZStCOEs4cktvM0x1SDIrNzdCM3I0SHp2dE40eWRkZ01iRjlzWlBQbC9XREJqQklPbnpXWEV6dXNvS0xxSS9Dd0hGZVdWekZqOEp0T0hhbVMvYWZ2TERCcjZHazJWcFV4NitCbHlMQUIxakMrK0ZIZEdQbllhcUhUbnNtWmtZUlI1V2J2bTM0eWRPNi9OdWZmV2wvUE1NeTh4OGNIdkQ5aSsxMXJSWms4elI3d0tYUk1UU1RESlB3aUkxZGZYNC9QNXljam8wZjQrTmpkVFhWMGRUdWc5Y2lSVWErb0t5eUMxdEdpK3Q5WldieERjdEhwVGo5dUhJaFNFcXFXSGhJcnFROVVMd1JwVWdqV29vVUo3UWtDbmU1U0RnQ2ZybHBDTWtpR21DZlNKbmh0aWZ3L0lxMWE5bXB5WGw5Y3RPYmxicXMyV2tHNHltYm9iRElZTVNaSXkyeHA5YlVkRERTaFdTUHVhRVNCRkFXb2hheWlVbDBmc1psV0JtaHF3SjRNallreDdoUkFIV2cvdk9qaHcrQisvV3JIMjZhK1V4dnJEWldWbFI2Ni9mdnhSSWhwNjRmU0pEc0NzSTRiVzRmTlE4Ym51OS9vVWpYQ3FSdWd4MkIwdHFOWXNpWkJjdlc2SmxFTVpaQVFTMWdRYmxyaFFuYWM1R1BFTUJRZ1N3dTN3dW5SeGhGbGFLRGlnYjRYbjg3aW9yVy9VT2pwWlR6Nkx6Tk5VVDROTElTMDlIWFB3N2pSemVDYlpNOTluWXFHQ1luR1NISlh1b2RKUVc0c2JNMW5wS2RHcEkvdldNbkQ2T3JadlhvTDFOQ0FyUDdvaStHOEtiS0ZSVjFjWExLUS9SRVBEWVJvYkc0TWFieEdsRUkrbi9Zb0Z2OThmem4zVFZ5NEVBb29VQ0toaGdBc0UxQ0N3cWFocUdOVFFNYnFPUUM0TVVER3FJNTB0Y3N4ek9lWjVhQnZTbzQ4dXNQWHQyOWVlbHBabVQwcEtzbHV0VnJ2WmJMWWJqVWE3d1dDd3k3SnNreVRKSmtsU2dpUko4VUVnREFrQUdIVGV0UkF3K0dxMzRwdjVMTjV6ZTR1V2JhK0o1dlFKd3Izd2w2bzdFQWdjVnhURjFkcmE2dko0UE1lYm1wcGNYMzMxMWZHOWV6OTIzMzMzM1I0ZGVJa1lJQk9kYisvMDRnQUFDOHhKUkVGVWdKa2V5RHBpYWxGTEowQVdCV1o2SUFPRUxFdEM2NUltWVRESU9rQ1RNUmlNc1pVRFJCSnQyMVlRYU1tMm1pSkhZcUk5ek5LU2s3c0Z1N0ZyT1dyZjVRZ0IyNHloWDI4Nys3YXRwY0ZSVEVuKzZTRVAveE93ZFpiTjR2ZHo0TUNCc0lDbEpvTjBsR1BIWE8yS1dFYXJoZmlDQUtlMEEzQVJGcWQxdWxkRDVWckVNTGpPUUs1ZHNOT1ZkOG1kZ0pxaEhXQ0xYZlRiNld5aG5jZlk1OUZPMnJiUDlZK2RMYkZBRnJ0MHhOTGFQQTlKdjdjSFlpY0NzOUR6bUo0YVVleXNMYUNGUUMxU3VONlJHR1JTa2gySG93dkp5VjF4eUc3KzgyRWxEbWNYREliby92VDloNDFuUU82MzIxMTkzODdOV0hzTkpNdHAvcSsrem44Q3RwTVl4NDRkNCtEQmc5VFYxWEg0Y0lpOVJYVGVtcHM5T3ZNMFVyVVFxVG1OQnJoQUlCQmxwcXFxR2dWeVFxaVNxb3F3cVVxNDRiT1FoRUFQZEZJN0lCUURVTUtnVlVPMHk5STZBemVwQTRDVDJ3RzF6Z0N1TTNDTEJUVGFBYkhPR0pyYUFWdUxlcTJsMmtpZGdsalFaNmJyTnh2Mm00WEFMR2hxU2toU05KanBRRTJFRkdQMGdHWTBSaGhhcUhxZ2JWNmFUVmZuR2ZHbDllalJnNlNrSkg0YTMzbFU5UC9lU0VwS0lpa3BpYTVkdTFKYit4WDE5WWVDT205SGd5Vlp4NE1GOWMzaGducXZWMStTcFdkdklSTTFFS1Vlb2dsY0JnZ0VWRlJWRlVHUUU2cXFTcUYrTTFxL0JxSllYUEFDam1WME9nQ1NaRW1LQlR3aEJ3R3lNMERyRE55K0RuUDdPc0QyZGN6T2RnRXVDRWlkQWhqUnpiTERvS3IzbVlWZUJ3RXRpcGxwUUNhSDJqNktFRk9MMUhZYXd3ck9FWllXcVI2d1JLVndoRmhhRWwyNmRDRTVPWm1VbEZUUzA3di9uNUFYK2duWWZ1QlJXdm9KdWJsbmtacWF5b0VETmRUVmZjWGh3NGM1Y3VSSWxKQmx5RHpWSzRib2EwNDEzNXNHY29GQUdPQUlCQUo2aVNSSngrQkVoTW1KMEtPSU1WWFJSMWNqYkZ4STdZTlNGTmhGZmFjZGMxYzZBYkIxeE5waVRWTFJDYmgxQm5CcWU2OTFvTlFaczR2OVRkUzI5SzlqVEUxa1dkWUZBL1NBWmlDa3VoRUxhQVpEaEtIcGk5YmJVN2JWek02SUVHVFhybDJETEswN21aay9LVnI5Qkd3L3dNak16Q0ExTllYYTJ0cXdTbTliODdRNUdGd0lBWnd2eHYvV2hyMkZBZ3hCa0ZNN0JEa2R3QkhONXFSWW9JdDYzczVuYlpaZ0hsMG56RXhMMHZvdWZXeEIxbld5VEs2akJiMXBHZk9hOWxoWmlKbnAvR2Z0Z0ZuSTdEUjJ3dEwwZmpSelVCTXdYaWNDR1cxMmh0UnQwOVBUTVp2TlAxMWdQd3l3QmRpeGR4Ly9yUGlLWTRwTXdWazl1ZUhjTXpBRHJjMU52THJyTS9iV0hjTmdzVEd5dUpBTHU4Y2t3aXZOUFBYdmp6bXo5OWtNenZqdjlSMll6V2F5czdOSlRVMXRZNTdxbzZmUi9qYzlnK3M0ZXFvb0NvcS9sWlpXQ1l0WmlnSTVYYkNoUFpBajBpWVZLZlpSVlZVa1dRNEoyTVF5T3pwaFlyclhVa2pXNjJUQnJDUEdGdldlQ05uWkoyWnlkQUpna2Q4TElWUlZZRERJVVV4TTV5OURuNklSQzJhaHdJQytDYmVlb1hVVzdZejQwU3h0L0dpaGFHZXMyUm5iVUtXOVViWWJzb3FnM1phdzdpb21USG1ZeFN1VzROUmQxYlhsZTVCVDhrbHpmRHVBNlNsZHhlQzV1OWo1OHZ4dnZKNGhjM2V4L1JUV2N6TC82UlQwMkk2emVuY3RSWVhacEpwVmxyMjlrYytPWDhhRGc3TDVzcktLajV0bEx1MmJpL3ZJUVg3OTk1VXN2bU1pQTdwRU52UFc1cTBzZWU5THJyTDErSzhHdHRDSWo0K25aODhjMHRKU3FhdXJvNzYrUG1pZTZ2MXZJWUJyYVNPTDFGSDB0TG5oQ0ljYkErUmtwZWpUUTRUT0Q2Y0hPWVJRaFJad1VBa0dIc0pBRjd6T0pTRUVraXdqUmNDT2syRmRNY0IzSWpBNzJYS1NOcWFwaVB3NENxUkM3S29qdHFjSHhQRHo0UDh6R0F6aDkyTUNBRVFlWThGTTFqWGQxZ09hSWRpWXU2Tm9aN1NzVUVpRlF3TzBpQit0YTlldXBLU2trSmFXRnBXUGRxSXhiUVFzcklEKzdSVE5yVnN5Qjh1QThWR2dCckRrdnAvam1QeFdWQkg4TjdxaHB4VncrNlJ2bnRLaGVsMVVWUjgrcGQrZXpILzYrc0FtTzNoZzh1WGhsMTA4aDdsMXo1Y3dLSnZjdmtVODBEZjBTVGE3UC9tVUxmc2JHZEJGT3hDdXV2MDhWMnZqdWpPdGVINWsxRGNoSVlHZVBYdlN2WHYzY1BUMFNPMW5QUC9DZS9RdEtjSGVjaHpYb1VvMmZWSkxuNzY1SkxTMkJBTU1zUXpPeTRFdnZxRHBXRE5DRVJ3NWNnUlZNcEdTNG9SQWdJRGk1ZkRoWTFpdFJuSE01VUpGeHA3a1FCWit5ZVZ5b3dTMFdJSXB6aUpNUmdraEJBRy9EMThnSUFCSmxnMUloTUJPUlZGVUxTQ2hxcUN4bHBNRnJUWUFwa1hZcFRDbEM2YmtJN2N2Y2lqQzN3bUJyUGI5WUY0WVlZQUs3bTJRMVdtQUpJUXFoTkIrTDBreVJxTWhCSEFFRkQ4Q0NVbldvcFFoVUF2NFcxRXhvclMyRWhCZ3RkbXh4cG5DUU5aTzJnWnRmV250TXpTdDcwQVEwSXp4N1BuRVN1NFpOblpzUzZSYlRoSTNUM1NRM2szem94MnRTT052ejFoeHlUQitPZ3d0QkR5d2NCR012eFBTTE9DcmgwZWVoUmwzUWVVbVdMa1pxdHp3K0Z4SU04T0lTVEF3TjRRU2pTeCs0bC9jdFdWcCtPQTJsVzlqd2JOdnNibTBIc3Z5UDlPMDNVSGU0R3VaT0ZSclpseTVjeTFibTVKSnFkM0NpNXMrSVhmSXo3bHY4bkFxZDIzZzZaZmZvcnF1a2ZUYzg1bHgrM1RTN1JwTXJIdjZZYlpWSE1lYWRYN1VpYXpZdm9idGpYYThlemF3dGVJSUk2ZjhsckVsdVNkeDFmaFl2V1FlYTNaK1NiK1JOM0hiMkJKa29MNThPMHVmWFVWNTlTR2NHYjJaZHZ1ZDVLVlpUL2lmVkU4OXl4WXZabXZwQWI1eCt2K245UTNrcHJlVFMrTS9Uc1VSbFQ2cFFWYW0rbmhvN1U2bVgzaytjVC9PamwrQVZseWZrNVBET2VlY1EvNjVnempIMGNDTEc4dkl5a3BqeC9vMW1EUHl5VXhMcFZ1M0ZKS1R1K0owT25FNHVvVEx1ZXgyTzZrOU1raDFKaUtaRTBoTFN5TTFwU3NKVm8wQnhNY1pjTHVQYytSb00zYUhFN3ZOZ3RFY1I1eFJGcklwVHRpVGtvUXR3U3g4TGMxZ0RHYTBXelE1SnMwMk13bVR5U1NNUnFNd0dpUVJCQWhoTUJxRTFzUkJVZzBHZ3lyTGNudExJTGlFR3ZkR0w1cjJuQ0pKa3FaNG9kVlZobC9ITEFGSmtnS3lKQVZrV1E0bXlXcnJsbVVwdkIyQlVJV0d1bXB3dTZyQllGQWx0STVOSnBOUlNLaENDYWpDYURRS2s4a2tUQ2F6TUVpSWdDcDBpck54aUlCQ2EydXJzQ1FrQ3B0WkZtN1hjUkVYci9tL0lvNzk0SEdPajhkcXRYQzhzWjVEaHc1UlYxZEhiVzB0Qnc4ZTVLc2pidXgyTzBsSlNUZ2NYWUorc3E1MDY1WkNhbW9xNmNuZGVXOUxCbVVOWjNEOTlUazA3c3hsVzEwKzU1eHpEa3BGRHRmZWFhVmtMRXdhQ1hlTmdaMzFnQld5ZkREcEhrMHNkTllVY0tXQlhZYjBYakI4T0RqTlVEeEVlNTZsdStSODVadllLZmRuUUhxRXAxaVNzeGcyL0FxeVUyejA2bmN4dzRkZlFiOWVFVm0veXAxdmN0KzBYN0Nxd3NMNGlkZGpWVndBVkZXVTAydkFsZHgrMXgxa3VkOWoySlI1WWNHQ3ZINkRLY2tLOE1peU4yS0E3UTFtVExzYnRXQW9FNFptTW4zc3pWU2ZoRVJSMCs1VmJIRDFZdnFVYTFrOSt6b1diNmdFb0theUFtZCtDWGZlZFFjbEtZY1lOdUlXM0NmNlQ2cUxHU011WmwyTm5XbTMzL0hOZ2dmVit6L2hzVThDUERuajdGaWl5VE5yTmhKMzlnQ3U3S0dWSk83YzhSNU5tVVVNNm1ibXcvOER6a3VMeFVKMmRqWjNMWDZCVHkrL21NY2YvNERHekpITXZ1NFMzQzU5aW9pblRZbVcxWnFJVGJpbzlQakp5TWlJOXNFWnRSbVRjVlp2RWcxQ1o2WmFNTWY3YVBZMG8wanh5SEtMVURFUUYyZEdtTTNFV1ZRYVdyMlMwUnhIbkNGb3NpcUNGcTlmeE5zU2tJV2d0YVVaUllEUmFDUml3WXFRT1JvbVdrRWlGa1craE5EaXBxby9BTEtNakNvRkFtQXdHSkdsamsxUWpXUkorSDArSklNUm94eDVEMEFFQWdRa0NZc2xMc3FrTkp0TkJCU0ZnQ293R21SOEFVRmNuQmxKa3BFc0ZwUVdGNjVXU1Znc2NXRnpzL1c0aENrdWlXU25BMWxLNEhobExYSmNQUEZHZmJXQVBqQWcwMnBMSkk1b2M5U2MyQVduczB1VUQwM2ZTTVZPRWlhamc5LyswVW0vMUc1MFA1N0txelZHTEJaWXVoQW16b0lSSmRyL256b1VWcXlGNGlrd1poWnNIZ0ZqeGtCVENtd015cHFsWkd1TDNRejlTdHFhb3JYbFZWaHlNcU5rWFN6T0RFcEtNbGlmWXNXUlgweEpTVnV6elpoM0JZL1B1eDBaR0I1OGI4ajRHZFJXN0dWdmVRMFpoZWRTOSt4Yk5BTEpRRTVoTVNtK011UmxiVTNJZ3BFM01tM1VFS0NZZ2JQK3pONWFUU201MDVFK2lQbjNqc2NCekpweERmZTh1SXJiaDgyazMvQ0paRmZ2WTA5WkplWmU1MkNwZklBS054UjE4cDljdTFlenZEYVBtczB6c1FQL0gzaXhnSm1RTzV3dUFBQUFBRWxGVGtTdVFtQ0MiXSxbMSwiZGV0YWlscy1jb250YWluZXIiXSxbMSwiZGV0YWlscyJdLFsiaHJlZiIsImh0dHBzOi8vd3d3LnRlbnNvcmZsb3cub3JnL2FwaV9kb2NzL3B5dGhvbi90Zi9kZWJ1Z2dpbmcvZXhwZXJpbWVudGFsL2VuYWJsZV9kdW1wX2RlYnVnX2luZm8iLCJ0YXJnZXQiLCJibGFuayIsInJlbCIsIm5vcmVmZXJyZXIgbm9vcGVuZXIiXSxbImhyZWYiLCJodHRwczovL3d3dy50ZW5zb3JmbG93Lm9yZy9hcGlfZG9jcy9weXRob24vdGYvZGVidWdnaW5nIiwidGFyZ2V0IiwiYmxhbmsiLCJyZWwiLCJub3JlZmVycmVyIG5vb3BlbmVyIl1dLHRlbXBsYXRlOmZ1bmN0aW9uIHQobixlKXsxJm4mJihLZygwLCJkaXYiLDApLEtnKDEsImRpdiIsMSksSnAoMiwiRGVidWdnZXIgVjIgaXMgaW5hY3RpdmUgYmVjYXVzZSBubyBkYXRhIGlzIGF2YWlsYWJsZS4iKSwkZygpLEtnKDMsImRpdiIpLEpwKDQsIlRvIHVzZSB0aGUgZGVidWdnZXIsIiksJGcoKSxLZyg1LCJkaXYiKSxLZyg2LCJvbCIpLEtnKDcsImxpIiksSnAoOCwiIEFkZCB0aGUgZm9sbG93aW5nIGxpbmUgdG8gdGhlIGJlZ2lubmluZyBvZiB5b3VyIHByb2dyYW06ICIpLEtnKDksImRpdiIsMiksS2coMTAsInNwYW4iKSxKcCgxMSwidGYuZGVidWdnaW5nLmV4cGVyaW1lbnRhbC5lbmFibGVfZHVtcF9kZWJ1Z19pbmZvKCIpLCRnKCksS2coMTIsInNwYW4iLDMpLEpwKDEzLCJsb2dkaXIiKSwkZygpLEpwKDE0LCIsICIpLEtnKDE1LCJzcGFuIiwzKSxKcCgxNiwndGVuc29yX2RlYnVnX21vZGU9IkZVTExfSEVBTFRIIicpLCRnKCksSnAoMTcsIiwgIiksS2coMTgsInNwYW4iLDMpLEpwKDE5LCJjaXJjdWxhcl9idWZmZXJfc2l6ZT0tMSIpLCRnKCksS2coMjAsInNwYW4iKSxKcCgyMSwiKSIpLCRnKCksJGcoKSwkZygpLEtnKDIyLCJsaSIpLEpwKDIzLCJSZS1ydW4gdGhlIHByb2dyYW0uIiksJGcoKSwkZygpLCRnKCksS2coMjQsImRpdiIsNCksS2coMjUsImRpdiIsNSksS2coMjYsImRpdiIsNiksdHAoMjcsImltZyIsNyksJGcoKSxLZygyOCwiZGl2Iiw4KSxKcCgyOSwiQXV0by1hbGVydHMgZm9yIHByb2JsZW1zIGZvdW5kIiksJGcoKSwkZygpLEtnKDMwLCJkaXYiLDUpLEtnKDMxLCJkaXYiLDYpLHRwKDMyLCJpbWciLDkpLCRnKCksS2coMzMsImRpdiIsOCksSnAoMzQsIiBJbnRlZ3JhdGVkIGRlYnVnZ2luZyB0byB0cmFjZSBwcm9ibGVtcyB0byB0aGVpciBjYXVzZXMgIiksJGcoKSwkZygpLEtnKDM1LCJkaXYiLDUpLEtnKDM2LCJkaXYiLDYpLHRwKDM3LCJpbWciLDEwKSwkZygpLEtnKDM4LCJkaXYiLDgpLEpwKDM5LCJMaW5rIGxvZyB0byBjb2RlIiksJGcoKSwkZygpLCRnKCksS2coNDAsImRpdiIsMTEpLEtnKDQxLCJkaXYiLDEyKSxKcCg0MiwiIFRoZSBsb2cgZGlyZWN0b3J5IG11c3QgY29udGFpbiBUZW5zb3JGbG93IERlYnVnZ2VyIChWMikgZGF0YS4gdGYuZGVidWdnaW5nLmV4cGVyaW1lbnRhbC5lbmFibGVfZHVtcF9kZWJ1Z19pbmZvKCkgd2lsbCBjb2xsZWN0IHRlbnNvciBkYXRhLCBncmFwaCBzdHJ1Y3R1cmVzLCB0aGUgYXNzb2NpYXRlZCBzdGFjayB0cmFjZXMsIGFuZCBzb3VyY2UgY29kZSB0byB0aGUgc3BlY2lmaWNlZCBkaXJlY3RvcnkgbG9nZGlyIGFzIHRoZSBpbnN0cnVtZW50ZWQgVGVuc29yRmxvdyBwcm9ncmFtIGV4ZWN1dGVzLiAiKSwkZygpLEtnKDQzLCJkaXYiLDEyKSxLZyg0NCwiZGl2IiksSnAoNDUsIiBTZWUgIiksS2coNDYsImEiLDEzKSxKcCg0NywiIGRvY3VtZW50YXRpb24gIiksJGcoKSxKcCg0OCwiIG9mIHRoZSBQeXRob24gQVBJIG9mIERlYnVnZ2VyIFYyLiAiKSwkZygpLEtnKDQ5LCJkaXYiKSxKcCg1MCwiIFNlZSAiKSxLZyg1MSwiYSIsMTQpLEpwKDUyLCIgaGVyZSAiKSwkZygpLEpwKDUzLCIgZm9yIG90aGVyIFRlbnNvckZsb3cgZGVidWdnaW5nIEFQSXMuICIpLCRnKCksJGcoKSwkZygpLCRnKCkpfSxzdHlsZXM6WyIuYXJnW19uZ2NvbnRlbnQtJUNPTVAlXSB7XG4gIGNvbG9yOiBsaWdodGJsdWU7XG4gIGZvbnQtc3R5bGU6IGl0YWxpYztcbiAgbWFyZ2luOiAycHg7XG59XG5cbi5jb2RlW19uZ2NvbnRlbnQtJUNPTVAlXSB7XG4gIGZvbnQtZmFtaWx5OiAnUm9ib3RvIE1vbm8nLCBtb25vc3BhY2U7XG4gIG1hcmdpbjogMTBweDtcbn1cblxuLmNvbnRhaW5lcltfbmdjb250ZW50LSVDT01QJV0ge1xuICBoZWlnaHQ6IDEwMCU7XG4gIGZvbnQtZmFtaWx5OiBSb2JvdG87XG4gIGZvbnQtc2l6ZTogMTVweDtcbiAgb3ZlcmZsb3cteTogYXV0bztcbiAgcGFkZGluZzogNTBweDtcbn1cblxuLmRldGFpbHMtY29udGFpbmVyW19uZ2NvbnRlbnQtJUNPTVAlXSB7XG4gIGRpc3BsYXk6IGlubGluZS1mbGV4O1xuICB2ZXJ0aWNhbC1hbGlnbjogbWlkZGxlO1xuICB3aWR0aDogMTAwJTtcbn1cblxuLmRldGFpbHNbX25nY29udGVudC0lQ09NUCVdIHtcbiAgZGlzcGxheTogaW5saW5lLWJsb2NrO1xuICBtYXJnaW46IDEwcHggNjBweDtcbiAgd2lkdGg6IDUwJTtcbn1cblxuLmV4aGliaXQtY29udGFpbmVyW19uZ2NvbnRlbnQtJUNPTVAlXSB7XG4gIHdoaXRlLXNwYWNlOiBub3dyYXA7XG4gIHdpZHRoOiAxMDAlO1xufVxuXG4uZXhoaWJpdFtfbmdjb250ZW50LSVDT01QJV0ge1xuICBhbGlnbi1jb250ZW50OiBjZW50ZXI7XG4gIGRpc3BsYXk6IGlubGluZS1ibG9jaztcbiAgbWFyZ2luOiAxMHB4IDYwcHg7XG4gIHZlcnRpY2FsLWFsaWduOiB0b3A7XG4gIHdpZHRoOiAzMTBweDtcbn1cblxuLmV4aGliaXRbX25nY29udGVudC0lQ09NUCVdICAgLmRlc2NyaXB0aW9uW19uZ2NvbnRlbnQtJUNPTVAlXSB7XG4gIGZvbnQtd2VpZ2h0OiBib2xkO1xuICB0ZXh0LWFsaWduOiBjZW50ZXI7XG4gIHdpZHRoOiAzMTBweDtcbn1cblxuLmV4aGliaXRbX25nY29udGVudC0lQ09NUCVdICAgLnNjcmVlbnNob3RbX25nY29udGVudC0lQ09NUCVdICAgY2FudmFzW19uZ2NvbnRlbnQtJUNPTVAlXSB7XG4gIGhlaWdodDogMjAwcHg7XG4gIHdpZHRoOiAxMDAlO1xufVxuXG4udGl0bGVbX25nY29udGVudC0lQ09NUCVdIHtcbiAgZm9udC1zaXplOiAxMzUlO1xuICBmb250LXdlaWdodDogYm9sZDtcbiAgbWFyZ2luLWJvdHRvbTogMjVweDtcbn0iXX0pO2NsYXNzIFhqe2NvbnN0cnVjdG9yKHQpe3RoaXMuc3RvcmU9dH19WGouybVmYWM9ZnVuY3Rpb24gdChuKXtyZXR1cm4gbmV3KG58fFhqKShaZyhjdikpfSxYai7JtWNtcD1fbyh7dHlwZTpYaixzZWxlY3RvcnM6W1sidGYtZGVidWdnZXItdjItaW5hY3RpdmUiXV0sZGVjbHM6MSx2YXJzOjAsdGVtcGxhdGU6ZnVuY3Rpb24gdChuLGUpezEmbiYmdHAoMCwiaW5hY3RpdmUtY29tcG9uZW50Iil9LGRpcmVjdGl2ZXM6W1pqXSxlbmNhcHN1bGF0aW9uOjJ9KTtjb25zdCBKaj1PaygiW0RlYnVnZ2VyXSBEZWJ1Z2dlciBMb2FkZWQiKSxRaj1PaygiW0RlYnVnZ2VyXSBEZWJ1Z2dlciBVbmxvYWRlZCIpLEtqPU9rKCJbRGVidWdnZXJdIEEgTmV3IERlYnVnZ2VyIERhdGEgUG9sbGluZyBFdmVudCBCZWdpbnMiKSwkaj1PaygiW0RlYnVnZ2VyXSBEZWJ1Z2dlciBSdW5zIFJlcXVlc3RlZCIpLHRVPU9rKCJbRGVidWdnZXJdIERlYnVnZ2VyIFJ1bnMgTG9hZGVkIix7X2FzOiJwcm9wcyIsX3A6dm9pZCAwfSksblU9T2soIltEZWJ1Z2dlcl0gRGVidWdnZXIgUnVucyBSZXF1ZXN0IEZhaWxlZCIpLGVVPU9rKCJbRGVidWdnZXJdIE51bWJlciBhbmQgQnJlYWtkb3duIG9mIEFsZXJ0cyBSZXF1ZXN0ZWQiKSxhVT1PaygiW0RlYnVnZ2VyXSBOdW1iZXIgYW5kIEJyZWFrZG93biBvZiBBbGVydHMgTG9hZGVkIix7X2FzOiJwcm9wcyIsX3A6dm9pZCAwfSksb1U9T2soIltEZWJ1Z2dlcl0gQWxlcnRzIERhdGEgb2YgYW4gQWxlcnRUeXBlIElzIExvYWRlZCIse19hczoicHJvcHMiLF9wOnZvaWQgMH0pLHJVPU9rKCJbRGVidWdnZXJdIEFsZXJ0IFR5cGUgRm9jdXMgVG9nZ2xlZCIse19hczoicHJvcHMiLF9wOnZvaWQgMH0pLGlVPU9rKCJbRGVidWdnZXJdIE51bWJlciBvZiBUb3AtTGV2ZWwgRXhlY3V0aW9ucyBSZXF1ZXN0ZWQiKSxjVT1PaygiW0RlYnVnZ2VyXSBOdW1iZXIgb2YgVG9wLUxldmVsIEV4ZWN1dGlvbnMgTG9hZGVkIix7X2FzOiJwcm9wcyIsX3A6dm9pZCAwfSksc1U9T2soIltEZWJ1Z2dlcl0gRXhlY3V0aW9uRGlnZXN0cyBSZXF1ZXN0ZWQiLHtfYXM6InByb3BzIixfcDp2b2lkIDB9KSxsVT1PaygiW0RlYnVnZ2VyXSBFeGVjdXRpb25EaWdlc3RzIExvYWRlZCIse19hczoicHJvcHMiLF9wOnZvaWQgMH0pLG1VPU9rKCJbRGVidWdnZXJdIFNjcm9sbCBMZWZ0d2FyZCBvbiB0aGUgRXhlY3V0aW9uIFRpbWVsaW5lIiksZFU9T2soIltEZWJ1Z2dlcl0gU2Nyb2xsIFJpZ2h0d2FyZCBvbiB0aGUgRXhlY3V0aW9uIFRpbWVsaW5lIiksZ1U9T2soIltEZWJ1Z2dlcl0gU2Nyb2xsIHRoZSBFeGVjdXRpb24gVGltZWxpbmUgdG8gR2l2ZW4gSW5kZXgiLHtfYXM6InByb3BzIixfcDp2b2lkIDB9KSxwVT1PaygiW0RlYnVnZ2VyXSBFeGVjdXRpb24gRGF0YSBPYmplY3RzIEJlaW5nIEZvY3VzZWQgT24iLHtfYXM6InByb3BzIixfcDp2b2lkIDB9KSxiVT1PaygiW0RlYnVnZ2VyXSBFeGVjdXRpb24gRGF0YSBPYmplY3RzIExvYWRlZCIse19hczoicHJvcHMiLF9wOnZvaWQgMH0pLHVVPU9rKCJbRGVidWdnZXJdIE51bWJlciBvZiBJbnRyYS1HcmFwaCBFeGVjdXRpb25zIFJlcXVlc3RlZCIpLGZVPU9rKCJbRGVidWdnZXJdIE51bWJlciBvZiBJbnRyYS1HcmFwaCBFeGVjdXRpb25zIExvYWRlZCIse19hczoicHJvcHMiLF9wOnZvaWQgMH0pLGhVPU9rKCJbRGVidWdnZXJdIEludHJhLUdyYXBoIEV4ZWN1dGlvbiBEYXRhIFJlcXVlc3RlZCIse19hczoicHJvcHMiLF9wOnZvaWQgMH0pLF9VPU9rKCJbRGVidWdnZXJdIEludHJhLUdyYXBoIEV4ZWN1dGlvbiBEYXRhIExvYWRlZCIse19hczoicHJvcHMiLF9wOnZvaWQgMH0pLENVPU9rKCJbRGVidWdnZXJdIFNjcm9sbCBJbnRyYS1HcmFwaCBFeGVjdXRpb24gTGlzdCB0byBHaXZlbiBJbmRleCIse19hczoicHJvcHMiLF9wOnZvaWQgMH0pLE1VPU9rKCJbRGVidWdnZXJdIEdyYXBoIEV4ZWN1dGlvbiBpcyBGb2N1c2VkIE9uIix7X2FzOiJwcm9wcyIsX3A6dm9pZCAwfSksT1U9T2soIltEZWJ1Z2dlcl0gR3JhcGggT3AgSXMgRm9jdXNlZCBPbiIse19hczoicHJvcHMiLF9wOnZvaWQgMH0pLFBVPU9rKCJbRGVidWdnZXJdIEdyYXBoIE9wIEluZm8gUmVxdWVzdGVkIix7X2FzOiJwcm9wcyIsX3A6dm9pZCAwfSkseFU9T2soIltEZWJ1Z2dlcl0gR3JhcGggT3AgSW5mbyBMb2FkZWQiLHtfYXM6InByb3BzIixfcDp2b2lkIDB9KSx5VT1PaygiW0RlYnVnZ2VyXSBTb3VyY2UgRmlsZSBMaXN0IFJlcXVlc3RlZC4iKSxrVT1PaygiW0RlYnVnZ2VyXSBTb3VyY2UgRmlsZSBMaXN0IExvYWRlZCIse19hczoicHJvcHMiLF9wOnZvaWQgMH0pLHZVPU9rKCJbRGVidWdnZXJdIFNvdXJjZSBGaWxlIExpbmUgSXMgRm9jdXNlZCBvbiIse19hczoicHJvcHMiLF9wOnZvaWQgMH0pLHdVPU9rKCJbRGVidWdnZXJdIFNvdXJjZSBGaWxlIFJlcXVlc3RlZCIse19hczoicHJvcHMiLF9wOnZvaWQgMH0pLFNVPU9rKCJbRGVidWdnZXJdIFNvdXJjZSBGaWxlIExvYWRlZCIse19hczoicHJvcHMiLF9wOnZvaWQgMH0pLEVVPU9rKCJbRGVidWdnZXJdIEEgU2V0IG9mIFN0YWNrIEZyYW1lcyBIYXZlIEJlZW4gTG9hZGVkIix7X2FzOiJwcm9wcyIsX3A6dm9pZCAwfSksQVU9ImRlYnVnZ2VyIjt2YXIgelUsUlUsVFU7ZnVuY3Rpb24gRFUodCl7aWYobnVsbD09PXQuY29kZUxvY2F0aW9uRm9jdXNUeXBlKXJldHVybiBudWxsO2xldCBuPVtdO2lmKHQuY29kZUxvY2F0aW9uRm9jdXNUeXBlPT09VFUuRVhFQ1VUSU9OKXtjb25zdHtmb2N1c0luZGV4OmUsZXhlY3V0aW9uRGF0YTphfT10LmV4ZWN1dGlvbnM7aWYobnVsbD09PWV8fHZvaWQgMD09PWFbZV0pcmV0dXJuIG51bGw7bj1hW2VdLnN0YWNrX2ZyYW1lX2lkc31lbHNle2lmKG51bGw9PT10LmdyYXBocy5mb2N1c2VkT3ApcmV0dXJuIG51bGw7Y29uc3R7Z3JhcGhJZDplLG9wTmFtZTphfT10LmdyYXBocy5mb2N1c2VkT3A7aWYodm9pZCAwPT09dC5ncmFwaHMub3BzW2VdfHwhdC5ncmFwaHMub3BzW2VdLmhhcyhhKSlyZXR1cm4gbnVsbDtuPXQuZ3JhcGhzLm9wc1tlXS5nZXQoYSkuc3RhY2tfZnJhbWVfaWRzfWNvbnN0IGU9W107Zm9yKGNvbnN0IGEgb2Ygbil7aWYobnVsbD09dC5zdGFja0ZyYW1lc1thXSlyZXR1cm4gbnVsbDtlLnB1c2godC5zdGFja0ZyYW1lc1thXSl9cmV0dXJuIGV9ZnVuY3Rpb24gSVUodCxuKXtyZXR1cm4gdC5maW5kSW5kZXgoKHQ9PnQuaG9zdF9uYW1lPT09bi5ob3N0X25hbWUmJnQuZmlsZV9wYXRoPT09bi5maWxlX3BhdGgpKX1mdW5jdGlvbiBOVSh0LG4sZSl7aWYobj49ZSl0aHJvdyBuZXcgRXJyb3IoYEV4cGVjdGVkIGJlZ2luIHRvIGJlIGxlc3MgdGhhbiBlbmQsIGJ1dCBnb3QgYmVnaW49JHtufSwgZW5kPSR7ZX1gKTtyZXR1cm4gdC5maW5kSW5kZXgoKHQ9PnQuYmVnaW49PT1uJiZ0LmVuZD09PWUpKX1mdW5jdGlvbiBGVSh0KXtjb25zdCBuPXQuc291cmNlQ29kZS5mb2N1c0xpbmVTcGVjO2lmKCF0LnN0aWNrVG9Cb3R0b21tb3N0RnJhbWVJbkZvY3VzZWRGaWxlKXJldHVybiBuO2NvbnN0IGU9RFUodCk7aWYobnVsbD09PWUpcmV0dXJuIG47Y29uc3QgYT0oZnVuY3Rpb24gbyh0LG4pe2lmKG51bGw9PT1uKXJldHVybiBudWxsO2ZvcihsZXQgZT10Lmxlbmd0aC0xO2U+PTA7LS1lKXtjb25zdCBhPXRbZV0se2hvc3RfbmFtZTpvLGZpbGVfcGF0aDpyfT1hO2lmKG89PT1uLmhvc3RfbmFtZSYmcj09PW4uZmlsZV9wYXRoKXJldHVybiBhfXJldHVybiBudWxsfSkoZSxuKTtyZXR1cm4gbnVsbD09PWE/bjphfSEoZnVuY3Rpb24odCl7dFt0LlVOU1BFQ0lGSUVEPTBdPSJVTlNQRUNJRklFRCIsdFt0Lk5PX1RFTlNPUj0xXT0iTk9fVEVOU09SIix0W3QuQ1VSVF9IRUFMVEg9Ml09IkNVUlRfSEVBTFRIIix0W3QuQ09OQ0lTRV9IRUFMVEg9M109IkNPTkNJU0VfSEVBTFRIIix0W3QuRlVMTF9IRUFMVEg9NF09IkZVTExfSEVBTFRIIix0W3QuU0hBUEU9NV09IlNIQVBFIix0W3QuRlVMTF9OVU1FUklDUz02XT0iRlVMTF9OVU1FUklDUyIsdFt0LkZVTExfVEVOU09SPTddPSJGVUxMX1RFTlNPUiIsdFt0LlJFRFVDRV9JTkZfTkFOX1RIUkVFX1NMT1RTPThdPSJSRURVQ0VfSU5GX05BTl9USFJFRV9TTE9UUyJ9KSh6VXx8KHpVPXt9KSksKGZ1bmN0aW9uKHQpe3QuRlVOQ1RJT05fUkVDT01QSUxFX0FMRVJUPSJGdW5jdGlvblJlY29tcGlsZXNBbGVydCIsdC5JTkZfTkFOX0FMRVJUPSJJbmZOYW5BbGVydCIsdC5URU5TT1JfU0hBUEVfQUxFUlQ9IlRlbnNvclNoYXBlQWxlcnQifSkoUlV8fChSVT17fSkpLChmdW5jdGlvbih0KXt0W3QuRVhFQ1VUSU9OPTBdPSJFWEVDVVRJT04iLHRbdC5HUkFQSF9PUF9DUkVBVElPTj0xXT0iR1JBUEhfT1BfQ1JFQVRJT04ifSkoVFV8fChUVT17fSkpO2NvbnN0IExVPVV2KHtydW5zOnt9LHJ1bnNMb2FkZWQ6e3N0YXRlOmZSLk5PVF9MT0FERUQsbGFzdExvYWRlZFRpbWVJbk1zOm51bGx9LGFjdGl2ZVJ1bklkOm51bGwsbGFzdERhdGFQb2xsT25zZXRUaW1lTXM6LTEsbGFzdE5vbkVtcHR5UG9sbERhdGFUaW1lTXM6MSxhbGVydHM6e2FsZXJ0c0xvYWRlZDp7c3RhdGU6ZlIuTk9UX0xPQURFRCxsYXN0TG9hZGVkVGltZUluTXM6bnVsbH0sbnVtQWxlcnRzOjAsYWxlcnRzQnJlYWtkb3duOnt9LGFsZXJ0czp7fSxleGVjdXRpb25JbmRpY2VzOnt9LGdyYXBoRXhlY3V0aW9uSW5kaWNlczp7fSxmb2N1c1R5cGU6bnVsbH0sZXhlY3V0aW9uczooZnVuY3Rpb24gSFUoKXtyZXR1cm57bnVtRXhlY3V0aW9uc0xvYWRlZDp7c3RhdGU6ZlIuTk9UX0xPQURFRCxsYXN0TG9hZGVkVGltZUluTXM6bnVsbH0sZXhlY3V0aW9uRGlnZXN0c0xvYWRlZDp7bG9hZGluZ1JhbmdlczpbXSxudW1FeGVjdXRpb25zOjAscGFnZUxvYWRlZFNpemVzOnt9fSxkaXNwbGF5Q291bnQ6NTAscGFnZVNpemU6MTAwLHNjcm9sbEJlZ2luSW5kZXg6MCxmb2N1c0luZGV4Om51bGwsZXhlY3V0aW9uRGlnZXN0czp7fSxleGVjdXRpb25EYXRhOnt9fX0pKCksZ3JhcGhFeGVjdXRpb25zOihmdW5jdGlvbiBCVSgpe3JldHVybntudW1FeGVjdXRpb25zTG9hZGVkOntzdGF0ZTpmUi5OT1RfTE9BREVELGxhc3RMb2FkZWRUaW1lSW5NczpudWxsfSxleGVjdXRpb25EaWdlc3RzTG9hZGVkOntsb2FkaW5nUmFuZ2VzOltdLG51bUV4ZWN1dGlvbnM6MCxwYWdlTG9hZGVkU2l6ZXM6e319LGRpc3BsYXlDb3VudDoxMDAscGFnZVNpemU6MjAwLHNjcm9sbEJlZ2luSW5kZXg6MCxmb2N1c0luZGV4Om51bGwsZ3JhcGhFeGVjdXRpb25EaWdlc3RzOnt9LGdyYXBoRXhlY3V0aW9uRGF0YUxvYWRpbmdQYWdlczpbXSxncmFwaEV4ZWN1dGlvbkRhdGFQYWdlTG9hZGVkU2l6ZXM6e30sZ3JhcGhFeGVjdXRpb25EYXRhOnt9fX0pKCksZ3JhcGhzOntvcHM6e30sbG9hZGluZ09wczp7fSxmb2N1c2VkT3A6bnVsbH0sc3RhY2tGcmFtZXM6e30sY29kZUxvY2F0aW9uRm9jdXNUeXBlOm51bGwsc3RpY2tUb0JvdHRvbW1vc3RGcmFtZUluRm9jdXNlZEZpbGU6ITEsc291cmNlQ29kZTp7c291cmNlRmlsZUxpc3RMb2FkZWQ6e3N0YXRlOmZSLk5PVF9MT0FERUQsbGFzdExvYWRlZFRpbWVJbk1zOm51bGx9LHNvdXJjZUZpbGVMaXN0OltdLGZpbGVDb250ZW50czpbXSxmb2N1c0xpbmVTcGVjOm51bGx9fSxqdigkaiwodD0+T2JqZWN0LmFzc2lnbihPYmplY3QuYXNzaWduKHt9LHQpLHtydW5zTG9hZGVkOk9iamVjdC5hc3NpZ24oT2JqZWN0LmFzc2lnbih7fSx0LnJ1bnNMb2FkZWQpLHtzdGF0ZTpmUi5MT0FESU5HfSl9KSkpLGp2KG5VLCh0PT5PYmplY3QuYXNzaWduKE9iamVjdC5hc3NpZ24oe30sdCkse3J1bnNMb2FkZWQ6T2JqZWN0LmFzc2lnbihPYmplY3QuYXNzaWduKHt9LHQucnVuc0xvYWRlZCkse3N0YXRlOmZSLkZBSUxFRH0pfSkpKSxqdih0VSwoKHQse3J1bnM6bn0pPT57Y29uc3QgZT1PYmplY3Qua2V5cyhuKSxhPWUubGVuZ3RoPjAmJm51bGw9PT10LmFjdGl2ZVJ1bklkO3JldHVybiBPYmplY3QuYXNzaWduKE9iamVjdC5hc3NpZ24oe30sdCkse2xhc3ROb25FbXB0eVBvbGxEYXRhVGltZU1zOmE/RGF0ZS5ub3coKTp0Lmxhc3ROb25FbXB0eVBvbGxEYXRhVGltZU1zLHJ1bnM6bixydW5zTG9hZGVkOntzdGF0ZTpmUi5MT0FERUQsbGFzdExvYWRlZFRpbWVJbk1zOkRhdGUubm93KCl9LGFjdGl2ZVJ1bklkOmUubGVuZ3RoPjA/ZVswXTpudWxsfSl9KSksanYoS2osKHQ9Pk9iamVjdC5hc3NpZ24oT2JqZWN0LmFzc2lnbih7fSx0KSx7bGFzdERhdGFQb2xsT25zZXRUaW1lTXM6RGF0ZS5ub3coKX0pKSksanYoZVUsKHQ9Pm51bGw9PT10LmFjdGl2ZVJ1bklkP3Q6T2JqZWN0LmFzc2lnbihPYmplY3QuYXNzaWduKHt9LHQpLHthbGVydHM6T2JqZWN0LmFzc2lnbihPYmplY3QuYXNzaWduKHt9LHQuYWxlcnRzKSx7YWxlcnRzTG9hZGVkOk9iamVjdC5hc3NpZ24oT2JqZWN0LmFzc2lnbih7fSx0LmFsZXJ0cy5hbGVydHNMb2FkZWQpLHtzdGF0ZTpmUi5MT0FESU5HfSl9KX0pKSksanYoYVUsKCh0LHtudW1BbGVydHM6bixhbGVydHNCcmVha2Rvd246ZX0pPT57aWYobnVsbD09PXQuYWN0aXZlUnVuSWQpcmV0dXJuIHQ7Y29uc3QgYT1uPnQuYWxlcnRzLm51bUFsZXJ0cztyZXR1cm4gT2JqZWN0LmFzc2lnbihPYmplY3QuYXNzaWduKHt9LHQpLHtsYXN0Tm9uRW1wdHlQb2xsRGF0YVRpbWVNczphP0RhdGUubm93KCk6dC5sYXN0Tm9uRW1wdHlQb2xsRGF0YVRpbWVNcyxhbGVydHM6T2JqZWN0LmFzc2lnbihPYmplY3QuYXNzaWduKHt9LHQuYWxlcnRzKSx7YWxlcnRzTG9hZGVkOk9iamVjdC5hc3NpZ24oT2JqZWN0LmFzc2lnbih7fSx0LmFsZXJ0cy5hbGVydHNMb2FkZWQpLHtzdGF0ZTpmUi5MT0FERUQsbGFzdExvYWRlZFRpbWVJbk1zOkRhdGUubm93KCl9KSxudW1BbGVydHM6bixhbGVydHNCcmVha2Rvd246ZX0pfSl9KSksanYob1UsKCh0LHtudW1BbGVydHM6bixhbGVydHNCcmVha2Rvd246ZSxhbGVydFR5cGU6YSxiZWdpbjpvLGFsZXJ0czpyfSk9PntpZihudWxsPT09dC5hY3RpdmVSdW5JZClyZXR1cm4gdDtjb25zdCBpPXt9LGM9dC5hbGVydHMuZXhlY3V0aW9uSW5kaWNlc1thXT90LmFsZXJ0cy5leGVjdXRpb25JbmRpY2VzW2FdLnNsaWNlKCk6W10scz10LmFsZXJ0cy5ncmFwaEV4ZWN1dGlvbkluZGljZXNbYV0/dC5hbGVydHMuZ3JhcGhFeGVjdXRpb25JbmRpY2VzW2FdLnNsaWNlKCk6W107Zm9yKGxldCB0PTA7dDxyLmxlbmd0aDsrK3Qpe2NvbnN0IG49byt0LGU9clt0XTtpZihpW25dPWUsZS5hbGVydF90eXBlPT09UlUuSU5GX05BTl9BTEVSVCl7Y29uc3QgdD1lO2Nbbl09dC5leGVjdXRpb25faW5kZXgsbnVsbCE9PXQuZ3JhcGhfZXhlY3V0aW9uX3RyYWNlX2luZGV4JiYoc1tuXT10LmdyYXBoX2V4ZWN1dGlvbl90cmFjZV9pbmRleCl9fXZvaWQgMCE9PXQuYWxlcnRzLmFsZXJ0c1thXSYmT2JqZWN0LmFzc2lnbihpLHQuYWxlcnRzLmFsZXJ0c1thXSk7bGV0IGw9dC5leGVjdXRpb25zLnNjcm9sbEJlZ2luSW5kZXgsbT10LmdyYXBoRXhlY3V0aW9ucy5mb2N1c0luZGV4O2lmKGE9PT1SVS5JTkZfTkFOX0FMRVJUJiYwPT09byl7Y29uc3Qgbj1yWzBdO2w9TWF0aC5tYXgoMCxuLmV4ZWN1dGlvbl9pbmRleC1NYXRoLmZsb29yKHQuZXhlY3V0aW9ucy5kaXNwbGF5Q291bnQvMikpLG51bGwhPT1uLmdyYXBoX2V4ZWN1dGlvbl90cmFjZV9pbmRleCYmKG09bi5ncmFwaF9leGVjdXRpb25fdHJhY2VfaW5kZXgpfXJldHVybiBPYmplY3QuYXNzaWduKE9iamVjdC5hc3NpZ24oe30sdCkse2V4ZWN1dGlvbnM6T2JqZWN0LmFzc2lnbihPYmplY3QuYXNzaWduKHt9LHQuZXhlY3V0aW9ucykse3Njcm9sbEJlZ2luSW5kZXg6bH0pLGdyYXBoRXhlY3V0aW9uczpPYmplY3QuYXNzaWduKE9iamVjdC5hc3NpZ24oe30sdC5ncmFwaEV4ZWN1dGlvbnMpLHtmb2N1c0luZGV4Om19KSxhbGVydHM6T2JqZWN0LmFzc2lnbihPYmplY3QuYXNzaWduKHt9LHQuYWxlcnRzKSx7YWxlcnRzTG9hZGVkOk9iamVjdC5hc3NpZ24oT2JqZWN0LmFzc2lnbih7fSx0LmFsZXJ0cy5hbGVydHNMb2FkZWQpLHtzdGF0ZTpmUi5MT0FERUQsbGFzdExvYWRlZFRpbWVJbk1zOkRhdGUubm93KCl9KSxudW1BbGVydHM6bixhbGVydHNCcmVha2Rvd246ZSxhbGVydHM6T2JqZWN0LmFzc2lnbihPYmplY3QuYXNzaWduKHt9LHQuYWxlcnRzLmFsZXJ0cykse1thXTppfSksZXhlY3V0aW9uSW5kaWNlczpPYmplY3QuYXNzaWduKE9iamVjdC5hc3NpZ24oe30sdC5hbGVydHMuZXhlY3V0aW9uSW5kaWNlcykse1thXTpjfSksZ3JhcGhFeGVjdXRpb25JbmRpY2VzOk9iamVjdC5hc3NpZ24oT2JqZWN0LmFzc2lnbih7fSx0LmFsZXJ0cy5ncmFwaEV4ZWN1dGlvbkluZGljZXMpLHtbYV06c30pfSl9KX0pKSxqdihyVSwoKHQse2FsZXJ0VHlwZTpufSk9Pntjb25zdCBlPU9iamVjdC5hc3NpZ24oT2JqZWN0LmFzc2lnbih7fSx0KSx7YWxlcnRzOk9iamVjdC5hc3NpZ24oT2JqZWN0LmFzc2lnbih7fSx0LmFsZXJ0cykse2ZvY3VzVHlwZTp0LmFsZXJ0cy5mb2N1c1R5cGU9PT1uP251bGw6bn0pfSksYT1lLmFsZXJ0cy5mb2N1c1R5cGU7aWYobnVsbCE9PWEpe2NvbnN0IHQ9ZS5hbGVydHMuZXhlY3V0aW9uSW5kaWNlc1thXXx8W107dm9pZCAwIT09dFswXSYmKGUuZXhlY3V0aW9ucy5zY3JvbGxCZWdpbkluZGV4PU1hdGgubWF4KDAsTnVtYmVyKHRbMF0pLU1hdGguZmxvb3IoZS5leGVjdXRpb25zLmRpc3BsYXlDb3VudC8yKSkpfXJldHVybiBlfSkpLGp2KGlVLCh0PT5udWxsPT09dC5hY3RpdmVSdW5JZD90Ok9iamVjdC5hc3NpZ24oT2JqZWN0LmFzc2lnbih7fSx0KSx7ZXhlY3V0aW9uczpPYmplY3QuYXNzaWduKE9iamVjdC5hc3NpZ24oe30sdC5leGVjdXRpb25zKSx7bnVtRXhlY3V0aW9uc0xvYWRlZDpPYmplY3QuYXNzaWduKE9iamVjdC5hc3NpZ24oe30sdC5leGVjdXRpb25zLm51bUV4ZWN1dGlvbnNMb2FkZWQpLHtzdGF0ZTpmUi5MT0FESU5HfSl9KX0pKSksanYoY1UsKCh0LHtudW1FeGVjdXRpb25zOm59KT0+e2lmKG51bGw9PT10LmFjdGl2ZVJ1bklkKXJldHVybiB0O2NvbnN0IGU9bj50LmV4ZWN1dGlvbnMuZXhlY3V0aW9uRGlnZXN0c0xvYWRlZC5udW1FeGVjdXRpb25zLGE9T2JqZWN0LmFzc2lnbihPYmplY3QuYXNzaWduKHt9LHQpLHtsYXN0Tm9uRW1wdHlQb2xsRGF0YVRpbWVNczplP0RhdGUubm93KCk6dC5sYXN0Tm9uRW1wdHlQb2xsRGF0YVRpbWVNcyxleGVjdXRpb25zOk9iamVjdC5hc3NpZ24oT2JqZWN0LmFzc2lnbih7fSx0LmV4ZWN1dGlvbnMpLHtudW1FeGVjdXRpb25zTG9hZGVkOk9iamVjdC5hc3NpZ24oT2JqZWN0LmFzc2lnbih7fSx0LmV4ZWN1dGlvbnMubnVtRXhlY3V0aW9uc0xvYWRlZCkse3N0YXRlOmZSLkxPQURFRCxsYXN0TG9hZGVkVGltZUluTXM6RGF0ZS5ub3coKX0pLGV4ZWN1dGlvbkRpZ2VzdHNMb2FkZWQ6T2JqZWN0LmFzc2lnbihPYmplY3QuYXNzaWduKHt9LHQuZXhlY3V0aW9ucy5leGVjdXRpb25EaWdlc3RzTG9hZGVkKSx7bnVtRXhlY3V0aW9uczpufSl9KX0pO3JldHVybiBuPjAmJm51bGw9PT10LmV4ZWN1dGlvbnMuZm9jdXNJbmRleCYmKGEuZXhlY3V0aW9ucy5mb2N1c0luZGV4PTApLGF9KSksanYoc1UsKCh0LG4pPT57aWYobnVsbD09PXQuYWN0aXZlUnVuSWQpcmV0dXJuIHQ7Y29uc3QgZT1bLi4udC5leGVjdXRpb25zLmV4ZWN1dGlvbkRpZ2VzdHNMb2FkZWQubG9hZGluZ1Jhbmdlc107cmV0dXJuLTE9PT1OVShlLG4uYmVnaW4sbi5lbmQpJiZlLnB1c2goe2JlZ2luOm4uYmVnaW4sZW5kOm4uZW5kfSksT2JqZWN0LmFzc2lnbihPYmplY3QuYXNzaWduKHt9LHQpLHtleGVjdXRpb25zOk9iamVjdC5hc3NpZ24oT2JqZWN0LmFzc2lnbih7fSx0LmV4ZWN1dGlvbnMpLHtleGVjdXRpb25EaWdlc3RzTG9hZGVkOk9iamVjdC5hc3NpZ24oT2JqZWN0LmFzc2lnbih7fSx0LmV4ZWN1dGlvbnMuZXhlY3V0aW9uRGlnZXN0c0xvYWRlZCkse2xvYWRpbmdSYW5nZXM6ZX0pfSl9KX0pKSxqdihsVSwoKHQsbik9PntpZihudWxsPT09dC5hY3RpdmVSdW5JZClyZXR1cm4gdDtjb25zdCBlPVsuLi50LmV4ZWN1dGlvbnMuZXhlY3V0aW9uRGlnZXN0c0xvYWRlZC5sb2FkaW5nUmFuZ2VzXSxhPU5VKGUsbi5iZWdpbixuLmVuZCk7LTEhPT1hJiZlLnNwbGljZShhLDEpO2NvbnN0IG89T2JqZWN0LmFzc2lnbihPYmplY3QuYXNzaWduKHt9LHQpLHtleGVjdXRpb25zOk9iamVjdC5hc3NpZ24oT2JqZWN0LmFzc2lnbih7fSx0LmV4ZWN1dGlvbnMpLHtleGVjdXRpb25EaWdlc3RzTG9hZGVkOk9iamVjdC5hc3NpZ24oT2JqZWN0LmFzc2lnbih7fSx0LmV4ZWN1dGlvbnMuZXhlY3V0aW9uRGlnZXN0c0xvYWRlZCkse251bUV4ZWN1dGlvbnM6bi5udW1fZGlnZXN0cyxsb2FkaW5nUmFuZ2VzOmV9KSxleGVjdXRpb25EaWdlc3RzOk9iamVjdC5hc3NpZ24oe30sdC5leGVjdXRpb25zLmV4ZWN1dGlvbkRpZ2VzdHMpfSl9KTtmb3IobGV0IHQ9bi5iZWdpbjt0PG4uZW5kOysrdClvLmV4ZWN1dGlvbnMuZXhlY3V0aW9uRGlnZXN0c1t0XT1uLmV4ZWN1dGlvbl9kaWdlc3RzW3Qtbi5iZWdpbl07aWYobi5lbmQ+bi5iZWdpbil7Y29uc3QgZT1uLmJlZ2luL3QuZXhlY3V0aW9ucy5wYWdlU2l6ZTtvLmV4ZWN1dGlvbnMuZXhlY3V0aW9uRGlnZXN0c0xvYWRlZC5wYWdlTG9hZGVkU2l6ZXM9T2JqZWN0LmFzc2lnbihPYmplY3QuYXNzaWduKHt9LG8uZXhlY3V0aW9ucy5leGVjdXRpb25EaWdlc3RzTG9hZGVkLnBhZ2VMb2FkZWRTaXplcykse1tlXTpuLmVuZC1uLmJlZ2lufSl9cmV0dXJuIG99KSksanYobVUsKHQ9PntpZihudWxsPT09dC5hY3RpdmVSdW5JZClyZXR1cm4gdDtsZXQgbj10LmV4ZWN1dGlvbnMuc2Nyb2xsQmVnaW5JbmRleDtyZXR1cm4gbj4wJiZuLS0sT2JqZWN0LmFzc2lnbihPYmplY3QuYXNzaWduKHt9LHQpLHtleGVjdXRpb25zOk9iamVjdC5hc3NpZ24oT2JqZWN0LmFzc2lnbih7fSx0LmV4ZWN1dGlvbnMpLHtzY3JvbGxCZWdpbkluZGV4Om59KX0pfSkpLGp2KGRVLCh0PT57aWYobnVsbD09PXQuYWN0aXZlUnVuSWQpcmV0dXJuIHQ7bGV0IG49dC5leGVjdXRpb25zLnNjcm9sbEJlZ2luSW5kZXg7cmV0dXJuIG4rdC5leGVjdXRpb25zLmRpc3BsYXlDb3VudCsxPD10LmV4ZWN1dGlvbnMuZXhlY3V0aW9uRGlnZXN0c0xvYWRlZC5udW1FeGVjdXRpb25zJiZuKyssT2JqZWN0LmFzc2lnbihPYmplY3QuYXNzaWduKHt9LHQpLHtleGVjdXRpb25zOk9iamVjdC5hc3NpZ24oT2JqZWN0LmFzc2lnbih7fSx0LmV4ZWN1dGlvbnMpLHtzY3JvbGxCZWdpbkluZGV4Om59KX0pfSkpLGp2KGdVLCgodCxuKT0+e2lmKG4uaW5kZXg8MHx8IU51bWJlci5pc0ludGVnZXIobi5pbmRleCkpdGhyb3cgbmV3IEVycm9yKGBBdHRlbXB0IHRvIHNjcm9sbCB0byBuZWdhdGl2ZSBvciBub24taW50ZWdlciBleGVjdXRpb24gaW5kZXggKCR7bi5pbmRleH0pYCk7Y29uc3R7ZGlzcGxheUNvdW50OmV9PXQuZXhlY3V0aW9ucyx7bnVtRXhlY3V0aW9uczphfT10LmV4ZWN1dGlvbnMuZXhlY3V0aW9uRGlnZXN0c0xvYWRlZDtpZihuLmluZGV4Pk1hdGgubWF4KDAsYS1lKSl0aHJvdyBuZXcgRXJyb3IoYEF0dGVtcHQgdG8gc2Nyb2xsIHRvIGV4ZWN1dGlvbiBpbmRleCAoJHtuLmluZGV4fSksIHdoaWNoIGV4Y2VlZHMgbWF4aW11bSBhbGxvd2VkIGluZGV4IChudW1FeGVjdXRpb25zPSR7YX07IGRpc3BsYXlDb3VudD0ke2V9KWApO3JldHVybiBPYmplY3QuYXNzaWduKE9iamVjdC5hc3NpZ24oe30sdCkse2V4ZWN1dGlvbnM6T2JqZWN0LmFzc2lnbihPYmplY3QuYXNzaWduKHt9LHQuZXhlY3V0aW9ucykse3Njcm9sbEJlZ2luSW5kZXg6bi5pbmRleH0pfSl9KSksanYocFUsKCh0LG4pPT57Y29uc3QgZT1PYmplY3QuYXNzaWduKE9iamVjdC5hc3NpZ24oe30sdCkse2V4ZWN1dGlvbnM6T2JqZWN0LmFzc2lnbihPYmplY3QuYXNzaWduKHt9LHQuZXhlY3V0aW9ucykse2ZvY3VzSW5kZXg6dC5leGVjdXRpb25zLnNjcm9sbEJlZ2luSW5kZXgrbi5kaXNwbGF5SW5kZXh9KSxjb2RlTG9jYXRpb25Gb2N1c1R5cGU6VFUuRVhFQ1VUSU9OLHNvdXJjZUNvZGU6T2JqZWN0LmFzc2lnbih7fSx0LnNvdXJjZUNvZGUpfSk7cmV0dXJuIGUuc291cmNlQ29kZS5mb2N1c0xpbmVTcGVjPUZVKGUpLGV9KSksanYoYlUsKCh0LG4pPT57aWYobnVsbD09PXQuYWN0aXZlUnVuSWQpcmV0dXJuIHQ7Y29uc3QgZT1PYmplY3QuYXNzaWduKE9iamVjdC5hc3NpZ24oe30sdCkse2V4ZWN1dGlvbnM6T2JqZWN0LmFzc2lnbihPYmplY3QuYXNzaWduKHt9LHQuZXhlY3V0aW9ucykse2V4ZWN1dGlvbkRhdGE6T2JqZWN0LmFzc2lnbih7fSx0LmV4ZWN1dGlvbnMuZXhlY3V0aW9uRGF0YSl9KX0pO2ZvcihsZXQgdD1uLmJlZ2luO3Q8bi5lbmQ7Kyt0KWUuZXhlY3V0aW9ucy5leGVjdXRpb25EYXRhW3RdPW4uZXhlY3V0aW9uc1t0LW4uYmVnaW5dO3JldHVybiBlfSkpLGp2KHVVLCh0PT5udWxsPT09dC5hY3RpdmVSdW5JZD90Ok9iamVjdC5hc3NpZ24oT2JqZWN0LmFzc2lnbih7fSx0KSx7Z3JhcGhFeGVjdXRpb25zOk9iamVjdC5hc3NpZ24oT2JqZWN0LmFzc2lnbih7fSx0LmdyYXBoRXhlY3V0aW9ucykse251bUV4ZWN1dGlvbnNMb2FkZWQ6T2JqZWN0LmFzc2lnbihPYmplY3QuYXNzaWduKHt9LHQuZ3JhcGhFeGVjdXRpb25zLm51bUV4ZWN1dGlvbnNMb2FkZWQpLHtzdGF0ZTpmUi5MT0FESU5HfSl9KX0pKSksanYoZlUsKCh0LHtudW1HcmFwaEV4ZWN1dGlvbnM6bn0pPT57aWYobnVsbD09PXQuYWN0aXZlUnVuSWQpcmV0dXJuIHQ7Y29uc3QgZT1uPnQuZ3JhcGhFeGVjdXRpb25zLmV4ZWN1dGlvbkRpZ2VzdHNMb2FkZWQubnVtRXhlY3V0aW9ucyxhPU9iamVjdC5hc3NpZ24oT2JqZWN0LmFzc2lnbih7fSx0KSx7bGFzdE5vbkVtcHR5UG9sbERhdGFUaW1lTXM6ZT9EYXRlLm5vdygpOnQubGFzdE5vbkVtcHR5UG9sbERhdGFUaW1lTXMsZ3JhcGhFeGVjdXRpb25zOk9iamVjdC5hc3NpZ24oT2JqZWN0LmFzc2lnbih7fSx0LmdyYXBoRXhlY3V0aW9ucykse251bUV4ZWN1dGlvbnNMb2FkZWQ6T2JqZWN0LmFzc2lnbihPYmplY3QuYXNzaWduKHt9LHQuZ3JhcGhFeGVjdXRpb25zLm51bUV4ZWN1dGlvbnNMb2FkZWQpLHtzdGF0ZTpmUi5MT0FERUQsbGFzdExvYWRlZFRpbWVJbk1zOkRhdGUubm93KCl9KSxleGVjdXRpb25EaWdlc3RzTG9hZGVkOk9iamVjdC5hc3NpZ24oT2JqZWN0LmFzc2lnbih7fSx0LmdyYXBoRXhlY3V0aW9ucy5leGVjdXRpb25EaWdlc3RzTG9hZGVkKSx7bnVtRXhlY3V0aW9uczpufSl9KX0pO3JldHVybiBuPjAmJm51bGw9PT10LmdyYXBoRXhlY3V0aW9ucy5mb2N1c0luZGV4JiYoYS5ncmFwaEV4ZWN1dGlvbnMuZm9jdXNJbmRleD0wKSxhfSkpLGp2KGhVLCgodCx7cGFnZUluZGV4Om59KT0+e2lmKG51bGw9PT10LmFjdGl2ZVJ1bklkKXJldHVybiB0O2NvbnN0IGU9dC5ncmFwaEV4ZWN1dGlvbnMuZ3JhcGhFeGVjdXRpb25EYXRhTG9hZGluZ1BhZ2VzLnNsaWNlKCk7cmV0dXJuLTE9PT1lLmluZGV4T2YobikmJmUucHVzaChuKSxPYmplY3QuYXNzaWduKE9iamVjdC5hc3NpZ24oe30sdCkse2dyYXBoRXhlY3V0aW9uczpPYmplY3QuYXNzaWduKE9iamVjdC5hc3NpZ24oe30sdC5ncmFwaEV4ZWN1dGlvbnMpLHtncmFwaEV4ZWN1dGlvbkRhdGFMb2FkaW5nUGFnZXM6ZX0pfSl9KSksanYoX1UsKCh0LG4pPT57aWYobnVsbD09PXQuYWN0aXZlUnVuSWQpcmV0dXJuIHQ7Y29uc3R7cGFnZVNpemU6ZX09dC5ncmFwaEV4ZWN1dGlvbnMsYT10LmdyYXBoRXhlY3V0aW9ucy5ncmFwaEV4ZWN1dGlvbkRhdGFMb2FkaW5nUGFnZXMuc2xpY2UoKSxvPU9iamVjdC5hc3NpZ24oe30sdC5ncmFwaEV4ZWN1dGlvbnMuZ3JhcGhFeGVjdXRpb25EYXRhUGFnZUxvYWRlZFNpemVzKSxyPU9iamVjdC5hc3NpZ24oe30sdC5ncmFwaEV4ZWN1dGlvbnMuZ3JhcGhFeGVjdXRpb25EYXRhKTtmb3IobGV0IHQ9bi5iZWdpbjt0PG4uZW5kOysrdCl7Y29uc3QgaT1NYXRoLmZsb29yKHQvZSk7LTEhPT1hLmluZGV4T2YoaSkmJmEuc3BsaWNlKGEuaW5kZXhPZihpKSwxKSx2b2lkIDA9PT1vW2ldJiYob1tpXT0wKSx2b2lkIDA9PT1yW3RdJiZvW2ldKyssclt0XT1uLmdyYXBoX2V4ZWN1dGlvbnNbdC1uLmJlZ2luXX1yZXR1cm4gT2JqZWN0LmFzc2lnbihPYmplY3QuYXNzaWduKHt9LHQpLHtncmFwaEV4ZWN1dGlvbnM6T2JqZWN0LmFzc2lnbihPYmplY3QuYXNzaWduKHt9LHQuZ3JhcGhFeGVjdXRpb25zKSx7Z3JhcGhFeGVjdXRpb25EYXRhTG9hZGluZ1BhZ2VzOmEsZ3JhcGhFeGVjdXRpb25EYXRhUGFnZUxvYWRlZFNpemVzOm8sZ3JhcGhFeGVjdXRpb25EYXRhOnJ9KX0pfSkpLGp2KENVLCgodCxuKT0+e2lmKG4uaW5kZXg8MHx8IU51bWJlci5pc0ludGVnZXIobi5pbmRleCkpdGhyb3cgbmV3IEVycm9yKGBBdHRlbXB0IHRvIHNjcm9sbCB0byBuZWdhdGl2ZSBvciBub24taW50ZWdlciBncmFwaC1leGVjdXRpb24gaW5kZXggKCR7bi5pbmRleH0pYCk7cmV0dXJuIE9iamVjdC5hc3NpZ24oT2JqZWN0LmFzc2lnbih7fSx0KSx7Z3JhcGhFeGVjdXRpb25zOk9iamVjdC5hc3NpZ24oT2JqZWN0LmFzc2lnbih7fSx0LmdyYXBoRXhlY3V0aW9ucykse3Njcm9sbEJlZ2luSW5kZXg6bi5pbmRleH0pfSl9KSksanYoTVUsKCh0LG4pPT5WVSh0LG4uZ3JhcGhfaWQsbi5vcF9uYW1lLG4uaW5kZXgpKSksanYoT1UsKCh0LG4pPT5WVSh0LG4uZ3JhcGhfaWQsbi5vcF9uYW1lKSkpLGp2KFBVLCgodCxuKT0+e2NvbnN0e2dyYXBoX2lkOmUsb3BfbmFtZTphfT1uLG89T2JqZWN0LmFzc2lnbihPYmplY3QuYXNzaWduKHt9LHQpLHtncmFwaHM6T2JqZWN0LmFzc2lnbihPYmplY3QuYXNzaWduKHt9LHQuZ3JhcGhzKSx7bG9hZGluZ09wczpPYmplY3QuYXNzaWduKHt9LHQuZ3JhcGhzLmxvYWRpbmdPcHMpfSl9KTtyZXR1cm4gdm9pZCAwPT09by5ncmFwaHMubG9hZGluZ09wc1tlXSYmKG8uZ3JhcGhzLmxvYWRpbmdPcHNbZV09bmV3IE1hcCksby5ncmFwaHMubG9hZGluZ09wc1tlXS5oYXMoYSl8fG8uZ3JhcGhzLmxvYWRpbmdPcHNbZV0uc2V0KGEsZlIuTE9BRElORyksb30pKSxqdih4VSwoKHQsbik9Pntjb25zdHtncmFwaE9wSW5mb1Jlc3BvbnNlOmV9PW4se2dyYXBoX2lkczphfT1lLG89YVthLmxlbmd0aC0xXSxyPU9iamVjdC5hc3NpZ24oT2JqZWN0LmFzc2lnbih7fSx0KSx7Z3JhcGhzOk9iamVjdC5hc3NpZ24oT2JqZWN0LmFzc2lnbih7fSx0LmdyYXBocykse29wczpPYmplY3QuYXNzaWduKE9iamVjdC5hc3NpZ24oe30sdC5ncmFwaHMub3BzKSx7W29dOm5ldyBNYXAodC5ncmFwaHMub3BzW29dKX0pLGxvYWRpbmdPcHM6T2JqZWN0LmFzc2lnbihPYmplY3QuYXNzaWduKHt9LHQuZ3JhcGhzLmxvYWRpbmdPcHMpLHtbb106bmV3IE1hcCh0LmdyYXBocy5sb2FkaW5nT3BzW29dKX0pfSl9KTtmb3IoY29uc3QgdCBvZiBlLmlucHV0cyl0LmRhdGEmJnIuZ3JhcGhzLm9wc1tvXS5zZXQodC5vcF9uYW1lLHQuZGF0YSk7Zm9yKGxldCB0PTA7dDxlLmNvbnN1bWVycy5sZW5ndGg7Kyt0KWZvcihjb25zdCBuIG9mIGUuY29uc3VtZXJzW3RdKW4uZGF0YSYmci5ncmFwaHMub3BzW29dLnNldChuLm9wX25hbWUsbi5kYXRhKTtyZXR1cm4gci5ncmFwaHMub3BzW29dLnNldChlLm9wX25hbWUsT2JqZWN0LmFzc2lnbihPYmplY3QuYXNzaWduKHt9LGUpLHtpbnB1dHM6ZS5pbnB1dHMubWFwKCh0PT4oe29wX25hbWU6dC5vcF9uYW1lLG91dHB1dF9zbG90OnQub3V0cHV0X3Nsb3R9KSkpLGNvbnN1bWVyczplLmNvbnN1bWVycy5tYXAoKHQ9PnQubWFwKCh0PT4oe29wX25hbWU6dC5vcF9uYW1lLGlucHV0X3Nsb3Q6dC5pbnB1dF9zbG90fSkpKSkpfSkpLHIuZ3JhcGhzLmxvYWRpbmdPcHNbb10uc2V0KGUub3BfbmFtZSxmUi5MT0FERUQpLHJ9KSksanYoeVUsKHQ9Pk9iamVjdC5hc3NpZ24oT2JqZWN0LmFzc2lnbih7fSx0KSx7c291cmNlQ29kZTpPYmplY3QuYXNzaWduKE9iamVjdC5hc3NpZ24oe30sdC5zb3VyY2VDb2RlKSx7c291cmNlRmlsZUxpc3RMb2FkZWQ6T2JqZWN0LmFzc2lnbihPYmplY3QuYXNzaWduKHt9LHQuc291cmNlQ29kZS5zb3VyY2VGaWxlTGlzdExvYWRlZCkse3N0YXRlOmZSLkxPQURJTkd9KX0pfSkpKSxqdihrVSwoKHQsbik9Pntjb25zdCBlPU9iamVjdC5hc3NpZ24oT2JqZWN0LmFzc2lnbih7fSx0KSx7c291cmNlQ29kZTpPYmplY3QuYXNzaWduKE9iamVjdC5hc3NpZ24oe30sdC5zb3VyY2VDb2RlKSx7c291cmNlRmlsZUxpc3RMb2FkZWQ6T2JqZWN0LmFzc2lnbihPYmplY3QuYXNzaWduKHt9LHQuc291cmNlQ29kZS5zb3VyY2VGaWxlTGlzdExvYWRlZCkse3N0YXRlOmZSLkxPQURFRCxsYXN0TG9hZGVkVGltZUluTXM6RGF0ZS5ub3coKX0pLHNvdXJjZUZpbGVMaXN0Om4uc291cmNlRmlsZXMsZmlsZUNvbnRlbnRzOnQuc291cmNlQ29kZS5maWxlQ29udGVudHMuc2xpY2UoKX0pfSksYT1uLnNvdXJjZUZpbGVzLmxlbmd0aCx7ZmlsZUNvbnRlbnRzOm99PWUuc291cmNlQ29kZTtmb3IobGV0IG49MDtuPGE7KytuKW9bbl09dC5zb3VyY2VDb2RlLmZpbGVDb250ZW50c1tuXXx8e2xvYWRTdGF0ZTpmUi5OT1RfTE9BREVELGxpbmVzOm51bGx9O3JldHVybiBlfSkpLGp2KHZVLCgodCxuKT0+e2NvbnN0IGU9RFUodCksYT1PYmplY3QuYXNzaWduKE9iamVjdC5hc3NpZ24oe30sdCkse3NvdXJjZUNvZGU6T2JqZWN0LmFzc2lnbihPYmplY3QuYXNzaWduKHt9LHQuc291cmNlQ29kZSkse2ZvY3VzTGluZVNwZWM6bi5zdGFja0ZyYW1lfSl9KTtyZXR1cm4gbnVsbCE9PWUmJihhLnN0aWNrVG9Cb3R0b21tb3N0RnJhbWVJbkZvY3VzZWRGaWxlPShmdW5jdGlvbiBvKHQsbil7bGV0IGU9LTEsYT0tMTtpZih0LmZvckVhY2goKCh7ZmlsZV9wYXRoOnQsbGluZW5vOm99LHIpPT57dD09PW4uZmlsZV9wYXRoJiYoYT1yLG89PT1uLmxpbmVubyYmKGU9cikpfSkpLC0xPT09ZSl0aHJvdyBuZXcgRXJyb3IoYFN0YWNrIGZyYW1lICR7SlNPTi5zdHJpbmdpZnkobil9IGlzIG5vdCBmb3VuZC5gKTtyZXR1cm4gZT09PWF9KShlLG4uc3RhY2tGcmFtZSkpLGF9KSksanYod1UsKCh0LG4pPT57Y29uc3QgZT1PYmplY3QuYXNzaWduKE9iamVjdC5hc3NpZ24oe30sdCkse3NvdXJjZUNvZGU6T2JqZWN0LmFzc2lnbihPYmplY3QuYXNzaWduKHt9LHQuc291cmNlQ29kZSkse2ZpbGVDb250ZW50czp0LnNvdXJjZUNvZGUuZmlsZUNvbnRlbnRzLnNsaWNlKCl9KX0pLGE9SVUoZS5zb3VyY2VDb2RlLnNvdXJjZUZpbGVMaXN0LG4pO2lmKCEoYT49MCkpdGhyb3cgbmV3IEVycm9yKGBDYW5ub3QgZmluZCB0aGUgZm9sbG93aW5nIGZpbGUgaW4gZmlsZSBsaXN0OiBob3N0X25hbWU9IiR7bi5ob3N0X25hbWV9IiwgZmlsZV9wYXRoPSIke24uZmlsZV9wYXRofSJgKTtyZXR1cm4gZS5zb3VyY2VDb2RlLmZpbGVDb250ZW50c1thXS5sb2FkU3RhdGU9ZlIuTE9BRElORyxlfSkpLGp2KFNVLCgodCxuKT0+e2NvbnN0IGU9T2JqZWN0LmFzc2lnbihPYmplY3QuYXNzaWduKHt9LHQpLHtzb3VyY2VDb2RlOk9iamVjdC5hc3NpZ24oT2JqZWN0LmFzc2lnbih7fSx0LnNvdXJjZUNvZGUpLHtmaWxlQ29udGVudHM6dC5zb3VyY2VDb2RlLmZpbGVDb250ZW50cy5zbGljZSgpfSl9KSxhPUlVKGUuc291cmNlQ29kZS5zb3VyY2VGaWxlTGlzdCxuKTtpZighKGE+PTApKXRocm93IG5ldyBFcnJvcihgQ2Fubm90IGZpbmQgdGhlIGZvbGxvd2luZyBmaWxlIGluIGZpbGUgbGlzdDogaG9zdF9uYW1lPSIke24uaG9zdF9uYW1lfSIsIGZpbGVfcGF0aD0iJHtuLmZpbGVfcGF0aH0iYCk7cmV0dXJuIGUuc291cmNlQ29kZS5maWxlQ29udGVudHNbYV09e2xvYWRTdGF0ZTpmUi5MT0FERUQsbGluZXM6bi5saW5lc30sZX0pKSxqdihFVSwoKHQsbik9PntpZihudWxsPT09dC5hY3RpdmVSdW5JZClyZXR1cm4gdDtjb25zdCBlPU9iamVjdC5hc3NpZ24oT2JqZWN0LmFzc2lnbih7fSx0KSx7c3RhY2tGcmFtZXM6T2JqZWN0LmFzc2lnbihPYmplY3QuYXNzaWduKHt9LHQuc3RhY2tGcmFtZXMpLG4uc3RhY2tGcmFtZXMpLHNvdXJjZUNvZGU6T2JqZWN0LmFzc2lnbih7fSx0LnNvdXJjZUNvZGUpfSk7cmV0dXJuIGUuc291cmNlQ29kZS5mb2N1c0xpbmVTcGVjPUZVKGUpLGV9KSkpO2Z1bmN0aW9uIFZVKHQsbixlLGEpe2NvbnN0IG89T2JqZWN0LmFzc2lnbihPYmplY3QuYXNzaWduKHt9LHQpLHtncmFwaHM6T2JqZWN0LmFzc2lnbihPYmplY3QuYXNzaWduKHt9LHQuZ3JhcGhzKSx7Zm9jdXNlZE9wOntncmFwaElkOm4sb3BOYW1lOmV9fSksY29kZUxvY2F0aW9uRm9jdXNUeXBlOlRVLkdSQVBIX09QX0NSRUFUSU9OLHNvdXJjZUNvZGU6T2JqZWN0LmFzc2lnbih7fSx0LnNvdXJjZUNvZGUpfSk7cmV0dXJuIG8uc291cmNlQ29kZS5mb2N1c0xpbmVTcGVjPUZVKG8pLHZvaWQgMCE9PWEmJihvLmdyYXBoRXhlY3V0aW9ucz1PYmplY3QuYXNzaWduKE9iamVjdC5hc3NpZ24oe30sdC5ncmFwaEV4ZWN1dGlvbnMpLHtmb2N1c0luZGV4OmF9KSksb31jb25zdCBqVT11dihBVSksVVU9cHYoalUsKHQ9PnQucnVucykpLFdVPXB2KGpVLCh0PT50LnJ1bnNMb2FkZWQpKSxHVT1wdihqVSwodD0+dC5hY3RpdmVSdW5JZCkpLFlVPXB2KGpVLCh0PT50Lmxhc3REYXRhUG9sbE9uc2V0VGltZU1zLXQubGFzdE5vbkVtcHR5UG9sbERhdGFUaW1lTXMpKSxxVT1wdihqVSwodD0+dC5hbGVydHMpKSxaVT1wdihxVSwodD0+dC5hbGVydHNMb2FkZWQpKSxYVT1wdihxVSwodD0+dC5udW1BbGVydHMpKSxKVT1wdihxVSwodD0+dC5mb2N1c1R5cGUpKSxRVT1wdihxVSwodD0+bnVsbD09PXQuZm9jdXNUeXBlPzA6dC5hbGVydHNCcmVha2Rvd25bdC5mb2N1c1R5cGVdfHwwKSksS1U9cHYocVUsKHQ9Pm51bGw9PT10LmZvY3VzVHlwZXx8dm9pZCAwPT09dC5hbGVydHNbdC5mb2N1c1R5cGVdP251bGw6dC5hbGVydHNbdC5mb2N1c1R5cGVdKSksJFU9cHYocVUsKHQ9PnQuYWxlcnRzQnJlYWtkb3duKSksdFc9cHYoalUsKHQ9PnQuZXhlY3V0aW9ucykpLG5XPXB2KHRXLCh0PT50Lm51bUV4ZWN1dGlvbnNMb2FkZWQpKSxlVz1wdih0VywodD0+dC5leGVjdXRpb25EaWdlc3RzTG9hZGVkKSksYVc9cHYodFcsKHQ9PnQuZXhlY3V0aW9uRGlnZXN0c0xvYWRlZC5udW1FeGVjdXRpb25zKSksb1c9cHYodFcsKHQ9PnQuc2Nyb2xsQmVnaW5JbmRleCkpLHJXPXB2KHRXLCh0PT50LnBhZ2VTaXplKSksaVc9cHYodFcsKHQ9PnQuZGlzcGxheUNvdW50KSksY1c9cHYodFcsKHQ9Pntjb25zdCBuPVtdO2ZvcihsZXQgZT10LnNjcm9sbEJlZ2luSW5kZXg7ZTx0LnNjcm9sbEJlZ2luSW5kZXgrdC5kaXNwbGF5Q291bnQ7KytlKW4ucHVzaChlIGluIHQuZXhlY3V0aW9uRGlnZXN0cz90LmV4ZWN1dGlvbkRpZ2VzdHNbZV06bnVsbCk7cmV0dXJuIG59KSksc1c9cHYoalUsKHQ9PnQuZ3JhcGhFeGVjdXRpb25zKSksbFc9cHYoc1csKHQ9PnQubnVtRXhlY3V0aW9uc0xvYWRlZCkpLG1XPXB2KGpVLCh0PT50LmdyYXBoRXhlY3V0aW9ucy5leGVjdXRpb25EaWdlc3RzTG9hZGVkLm51bUV4ZWN1dGlvbnMpKSxkVz1wdihzVywodD0+dC5zY3JvbGxCZWdpbkluZGV4KSksZ1c9cHYoc1csKHQ9PnQuZGlzcGxheUNvdW50KSkscFc9cHYoc1csKHQ9PnQucGFnZVNpemUpKSxiVz1wdihzVywodD0+dC5ncmFwaEV4ZWN1dGlvbkRhdGFMb2FkaW5nUGFnZXMpKSx1Vz1wdihzVywodD0+dC5ncmFwaEV4ZWN1dGlvbkRhdGFQYWdlTG9hZGVkU2l6ZXMpKSxmVz1wdihzVywodD0+dC5ncmFwaEV4ZWN1dGlvbkRhdGEpKSxoVz1wdihzVywodD0+dC5mb2N1c0luZGV4KSksX1c9cHYoalUsKHQ9PnQuZ3JhcGhzKSksQ1c9cHYoX1csKHQ9Pntjb25zdHtmb2N1c2VkT3A6bixvcHM6ZX09dDtyZXR1cm4gbnVsbD09PW58fHZvaWQgMD09PWVbbi5ncmFwaElkXT9udWxsOmVbbi5ncmFwaElkXS5nZXQobi5vcE5hbWUpfHxudWxsfSkpLE1XPXB2KF9XLCh0PT57Y29uc3R7Zm9jdXNlZE9wOm4sb3BzOmV9PXQ7aWYobnVsbCE9PW4mJnZvaWQgMCE9PWVbbi5ncmFwaElkXSYmZVtuLmdyYXBoSWRdLmhhcyhuLm9wTmFtZSkpe2NvbnN0IHQ9ZVtuLmdyYXBoSWRdLHtpbnB1dHM6YX09dC5nZXQobi5vcE5hbWUpO3JldHVybiBhLm1hcCgobj0+e2NvbnN0IGU9T2JqZWN0LmFzc2lnbih7fSxuKTtyZXR1cm4gdC5oYXMobi5vcF9uYW1lKSYmKGUuZGF0YT10LmdldChuLm9wX25hbWUpKSxlfSkpfXJldHVybiBudWxsfSkpLE9XPXB2KGhXLGZXLE1XLCgodCxuLGUpPT57aWYobnVsbD09PXR8fG51bGw9PT1lKXJldHVybiBudWxsO2NvbnN0IGE9ZS5tYXAoKHQ9PiExKSksbz1bXTtpZigwPT09ZS5sZW5ndGgpcmV0dXJuIG87Y29uc3Qgcj1uW3RdLmdyYXBoX2lkLGk9TWF0aC5tYXgoMCx0LTIwMCk7Zm9yKGxldCBjPXQtMTtjPj1pOy0tYylpZih2b2lkIDAhPT1uW2NdKWZvcihsZXQgdD0wO3Q8ZS5sZW5ndGgmJihhW3RdfHxuW2NdLmdyYXBoX2lkIT09cnx8bltjXS5vcF9uYW1lIT09ZVt0XS5vcF9uYW1lfHxuW2NdLm91dHB1dF9zbG90IT09ZVt0XS5vdXRwdXRfc2xvdHx8KG8ucHVzaChjKSxhW3RdPSEwLG8ubGVuZ3RoIT09ZS5sZW5ndGgpKTsrK3QpO3JldHVybiBvfSkpLFBXPXB2KF9XLCh0PT57Y29uc3R7Zm9jdXNlZE9wOm4sb3BzOmV9PXQ7aWYobnVsbCE9PW4mJnZvaWQgMCE9PWVbbi5ncmFwaElkXSYmZVtuLmdyYXBoSWRdLmhhcyhuLm9wTmFtZSkpe2NvbnN0IHQ9ZVtuLmdyYXBoSWRdLHtjb25zdW1lcnM6YX09dC5nZXQobi5vcE5hbWUpO3JldHVybiBhLm1hcCgobj0+bi5tYXAoKG49Pntjb25zdCBlPU9iamVjdC5hc3NpZ24oe30sbik7cmV0dXJuIHQuaGFzKG4ub3BfbmFtZSkmJihlLmRhdGE9dC5nZXQobi5vcF9uYW1lKSksZX0pKSkpfXJldHVybiBudWxsfSkpLHhXPXB2KGpVLCh0PT57Y29uc3Qgbj10LmV4ZWN1dGlvbnMuc2Nyb2xsQmVnaW5JbmRleCxlPXQuZXhlY3V0aW9ucy5zY3JvbGxCZWdpbkluZGV4K3QuZXhlY3V0aW9ucy5kaXNwbGF5Q291bnQsYT1uZXcgQXJyYXkoZS1uKS5maWxsKG51bGwpLG89dC5hbGVydHMuZm9jdXNUeXBlO2lmKG51bGw9PT1vKXJldHVybiBhO2NvbnN0IHI9dC5hbGVydHMuZXhlY3V0aW9uSW5kaWNlc1tvXTtpZih2b2lkIDA9PT1yKXJldHVybiBhO2ZvcihsZXQgbz1uO288ZTsrK28pci5pbmNsdWRlcyhvKSYmKGFbby1uXT10LmFsZXJ0cy5mb2N1c1R5cGUpO3JldHVybiBhfSkpLHlXPXB2KGpVLCh0PT50LmV4ZWN1dGlvbnMpKSxrVz1wdih5VywodD0+dC5mb2N1c0luZGV4KSksdlc9cHYoeVcsKHQ9PntpZihudWxsPT09dC5mb2N1c0luZGV4KXJldHVybiBudWxsO2NvbnN0e2ZvY3VzSW5kZXg6bixzY3JvbGxCZWdpbkluZGV4OmUsZGlzcGxheUNvdW50OmF9PXQ7cmV0dXJuIG48ZXx8bj49ZSthP251bGw6bi1lfSkpLHdXPXB2KHlXLCh0PT50LmV4ZWN1dGlvbkRhdGEpKSxTVz1wdihqVSwodD0+dC5ncmFwaHMubG9hZGluZ09wcykpLEVXPXB2KGpVLCh0PT50LnN0YWNrRnJhbWVzKSksQVc9cHYoeVcsKHQ9Pntjb25zdHtmb2N1c0luZGV4Om4sZXhlY3V0aW9uRGF0YTplfT10O3JldHVybiBudWxsPT09bnx8dm9pZCAwPT09ZVtuXT9udWxsOmVbbl19KSkselc9cHYoalUsa1csQVcsQ1csKCh0LG4sZSxhKT0+e2NvbnN0e2NvZGVMb2NhdGlvbkZvY3VzVHlwZTpvfT10O3JldHVybiBudWxsPT09bz9udWxsOm89PT1UVS5FWEVDVVRJT04/bnVsbD09PW58fG51bGw9PT1lP251bGw6e2NvZGVMb2NhdGlvblR5cGU6VFUuRVhFQ1VUSU9OLG9wVHlwZTplLm9wX3R5cGUsZXhlY3V0aW9uSW5kZXg6bn06bnVsbD09PWE/bnVsbDp7Y29kZUxvY2F0aW9uVHlwZTpUVS5HUkFQSF9PUF9DUkVBVElPTixvcFR5cGU6YS5vcF90eXBlLG9wTmFtZTphLm9wX25hbWV9fSkpLFJXPXB2KGpVLERVKSxUVz1wdihqVSwodD0+dC5zb3VyY2VDb2RlKSksRFc9cHYoVFcsKHQ9PnQuc291cmNlRmlsZUxpc3RMb2FkZWQpKTtwdihUVywodD0+dC5zb3VyY2VGaWxlTGlzdCkpO2NvbnN0IElXPXB2KFRXLCh0PT57Y29uc3R7c291cmNlRmlsZUxpc3Q6bixmb2N1c0xpbmVTcGVjOmV9PXQ7cmV0dXJuIG51bGw9PT1lPy0xOklVKG4sZSl9KSksTlc9cHYoVFcsSVcsKCh0LG4pPT4tMT09PW4/bnVsbDp0LmZpbGVDb250ZW50c1tuXXx8bnVsbCkpLEZXPXB2KGpVLCh0PT50LnNvdXJjZUNvZGUuZm9jdXNMaW5lU3BlYykpLExXPXB2KGpVLCh0PT50LnN0aWNrVG9Cb3R0b21tb3N0RnJhbWVJbkZvY3VzZWRGaWxlKSksSFc9ZnVuY3Rpb24odCl7cmV0dXJuW3RdfTtmdW5jdGlvbiBCVyh0LG4pe2lmKDEmdCl7Y29uc3QgdD1vcCgpO0tnKDAsImRpdiIsNyksY3AoImNsaWNrIiwoZnVuY3Rpb24gZSgpe2pyKHQpO2NvbnN0IGE9bi4kaW1wbGljaXQ7cmV0dXJuIGdwKCkub25Ub2dnbGVGb2N1c1R5cGUuZW1pdChhLnR5cGUpfSkpLEtnKDEsImRpdiIsOCksSnAoMiksJGcoKSxLZygzLCJkaXYiLDkpLEpwKDQpLCRnKCksdHAoNSwiZGl2IiksJGcoKX1pZigyJnQpe2NvbnN0IHQ9bi4kaW1wbGljaXQsZT1ncCgpO0pnKCJuZ0NsYXNzIix1Zig0LEhXLHQudHlwZT09PWUuZm9jdXNUeXBlPyJmb2N1cyI6IiIpKSx3cygyKSxRcCh0LmRpc3BsYXlOYW1lKSx3cygyKSwkcCgiICIsdC5kaXNwbGF5U3ltYm9sLCI6ICIsdC5jb3VudCwiICIpfX1jbGFzcyBWV3tjb25zdHJ1Y3Rvcigpe3RoaXMubnVtQWxlcnRzPTAsdGhpcy5hbGVydHNCcmVha2Rvd249W10sdGhpcy5mb2N1c1R5cGU9bnVsbCx0aGlzLm9uVG9nZ2xlRm9jdXNUeXBlPW5ldyBFZn19VlcuybVmYWM9ZnVuY3Rpb24gdChuKXtyZXR1cm4gbmV3KG58fFZXKX0sVlcuybVjbXA9X28oe3R5cGU6Vlcsc2VsZWN0b3JzOltbImFsZXJ0cy1jb21wb25lbnQiXV0saW5wdXRzOntudW1BbGVydHM6Im51bUFsZXJ0cyIsYWxlcnRzQnJlYWtkb3duOiJhbGVydHNCcmVha2Rvd24iLGZvY3VzVHlwZToiZm9jdXNUeXBlIn0sb3V0cHV0czp7b25Ub2dnbGVGb2N1c1R5cGU6Im9uVG9nZ2xlRm9jdXNUeXBlIn0sZGVjbHM6MTAsdmFyczo1LGNvbnN0czpbWzEsImFsZXJ0cy1jb250YWluZXIiXSxbMSwiZGVidWdnaW5nLXRpdGxlIl0sWzEsIm51bS1hbGVydHMtY29udGFpbmVyIl0sWzEsIm51bS1hbGVydHMtbGFiZWwiXSxbMSwibnVtLWFsZXJ0cy12YWx1ZSIsMywibmdDbGFzcyJdLFsxLCJhbGVydHMtYnJlYWtkb3duLWNvbnRhaW5lciJdLFsiY2xhc3MiLCJhbGVydHMtYnJlYWtkb3duLXR5cGUiLDMsIm5nQ2xhc3MiLCJjbGljayIsNCwibmdGb3IiLCJuZ0Zvck9mIl0sWzEsImFsZXJ0cy1icmVha2Rvd24tdHlwZSIsMywibmdDbGFzcyIsImNsaWNrIl0sWzEsImFsZXJ0LXR5cGUtbmFtZSJdLFsxLCJhbGVydC10eXBlLWNvdW50Il1dLHRlbXBsYXRlOmZ1bmN0aW9uIHQobixlKXsxJm4mJihLZygwLCJkaXYiLDApLEtnKDEsImRpdiIsMSksSnAoMiwiRGVidWdnaW5nIiksJGcoKSxLZygzLCJkaXYiLDIpLEtnKDQsImRpdiIsMyksSnAoNSwiQWxlcnRzIiksJGcoKSxLZyg2LCJkaXYiLDQpLEpwKDcpLCRnKCksJGcoKSxLZyg4LCJkaXYiLDUpLFlnKDksQlcsNiw2LCJkaXYiLDYpLCRnKCksJGcoKSksMiZuJiYod3MoNiksSmcoIm5nQ2xhc3MiLHVmKDMsSFcsZS5udW1BbGVydHM+MD8ibm9uLXplcm8iOiIiKSksd3MoMSksS3AoIiAiLGUubnVtQWxlcnRzLCIgIiksd3MoMiksSmcoIm5nRm9yT2YiLGUuYWxlcnRzQnJlYWtkb3duKSl9LGRpcmVjdGl2ZXM6W0hNLGpNXSxzdHlsZXM6WyIuYWxlcnRzLWJyZWFrZG93bi1jb250YWluZXJbX25nY29udGVudC0lQ09NUCVdIHtcbiAgZm9udC1zaXplOiAxM3B4O1xuICBwYWRkaW5nOiAxMHB4IDEwcHggMTBweDtcbiAgcG9zaXRpb246IHJlbGF0aXZlO1xufVxuXG4uYWxlcnRzLWJyZWFrZG93bi10eXBlW19uZ2NvbnRlbnQtJUNPTVAlXSB7XG4gIGJvcmRlci1yYWRpdXM6IDAgMTBweCAxMHB4IDA7XG4gIGN1cnNvcjogcG9pbnRlcjtcbiAgZGlzcGxheTogZmxleDtcbiAgcGFkZGluZzogNnB4IDAgNnB4IDUwcHg7XG4gIHZlcnRpY2FsLWFsaWduOiBtaWRkbGU7XG59XG5cbi5hbGVydHMtYnJlYWtkb3duLXR5cGUuZm9jdXNbX25nY29udGVudC0lQ09NUCVdIHtcbiAgYmFja2dyb3VuZC1jb2xvcjogI2ZmZWVlMDtcbn1cblxuLmFsZXJ0cy1jb250YWluZXJbX25nY29udGVudC0lQ09NUCVdIHtcbiAgZm9udC1mYW1pbHk6ICdSb2JvdG8nLCBBcmlhbCwgSGVsdmV0aWNhLCBzYW5zLXNlcmlmO1xufVxuXG4uYWxlcnQtdHlwZS1jb3VudFtfbmdjb250ZW50LSVDT01QJV0ge1xuICBcbiAgYmFja2dyb3VuZC1jb2xvcjogI2U1MjU5MjtcbiAgYm9yZGVyLXJhZGl1czogM3B4O1xuICBjb2xvcjogI2ZmZjtcbiAgZGlzcGxheTogaW5saW5lLWJsb2NrO1xuICBwYWRkaW5nOiAzcHg7XG4gIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgcmlnaHQ6IDIwcHg7XG4gIHZlcnRpY2FsLWFsaWduOiBtaWRkbGU7XG59XG5cbi5hbGVydC10eXBlLW5hbWVbX25nY29udGVudC0lQ09NUCVdIHtcbiAgZGlzcGxheTogaW5saW5lLWJsb2NrO1xuICBwYWRkaW5nOiAzcHg7XG4gIHZlcnRpY2FsLWFsaWduOiBtaWRkbGU7XG59XG5cbi5kZWJ1Z2dpbmctdGl0bGVbX25nY29udGVudC0lQ09NUCVdIHtcbiAgZm9udC1zaXplOiAxOHB4O1xufVxuXG4ubnVtLWFsZXJ0cy1jb250YWluZXJbX25nY29udGVudC0lQ09NUCVdIHtcbiAgZm9udC13ZWlnaHQ6IGJvbGQ7XG4gIHBhZGRpbmc6IDEwcHggMTBweCAxMHB4IDMwcHg7XG4gIHBvc2l0aW9uOiByZWxhdGl2ZTtcbn1cblxuLm51bS1hbGVydHMtbGFiZWxbX25nY29udGVudC0lQ09NUCVdIHtcbiAgZGlzcGxheTogaW5saW5lLWJsb2NrO1xuICBmb250LXNpemU6IDEzcHg7XG59XG5cbi5udW0tYWxlcnRzLXZhbHVlW19uZ2NvbnRlbnQtJUNPTVAlXSB7XG4gIGJvcmRlci1yYWRpdXM6IDEycHg7XG4gIGRpc3BsYXk6IGlubGluZS1ibG9jaztcbiAgZm9udC1zaXplOiAxM3B4O1xuICBmb250LXdlaWdodDogbm9ybWFsO1xuICBsaW5lLWhlaWdodDogMjRweDtcbiAgcG9zaXRpb246IGFic29sdXRlO1xuICByaWdodDogMjBweDtcbiAgdGV4dC1hbGlnbjogY2VudGVyO1xuICB2ZXJ0aWNhbC1hbGlnbjogbWlkZGxlO1xuICB3aWR0aDogMjRweDtcbn1cblxuLm51bS1hbGVydHMtdmFsdWUubm9uLXplcm9bX25nY29udGVudC0lQ09NUCVdIHtcbiAgYmFja2dyb3VuZC1jb2xvcjogI2ZmYjc4MDtcbiAgZm9udC13ZWlnaHQ6IGJvbGQ7XG59Il19KTtjb25zdCBqVz17W1JVLkZVTkNUSU9OX1JFQ09NUElMRV9BTEVSVF06e2Rpc3BsYXlOYW1lOiJGdW5jdGlvbiByZWNvbXBpbGVzIixkaXNwbGF5U3ltYm9sOiJDIn0sW1JVLklORl9OQU5fQUxFUlRdOntkaXNwbGF5TmFtZToiTmFOL+KIniIsZGlzcGxheVN5bWJvbDoi4oieIn0sW1JVLlRFTlNPUl9TSEFQRV9BTEVSVF06e2Rpc3BsYXlOYW1lOiJUZW5zb3Igc2hhcGUiLGRpc3BsYXlTeW1ib2w6IuKWoCJ9fTtjbGFzcyBVV3tjb25zdHJ1Y3Rvcih0KXt0aGlzLnN0b3JlPXQsdGhpcy5udW1BbGVydHMkPXRoaXMuc3RvcmUucGlwZShsdihYVSkpLHRoaXMuYWxlcnRzQnJlYWtkb3duJD10aGlzLnN0b3JlLnBpcGUobHYocHYoJFUsKHQ9Pntjb25zdCBuPU9iamVjdC5rZXlzKHQpO3JldHVybiBuLnNvcnQoKSxuLm1hcCgobj0+T2JqZWN0LmFzc2lnbihPYmplY3QuYXNzaWduKHt0eXBlOm59LGpXW25dKSx7Y291bnQ6dFtuXX0pKSl9KSkpKSx0aGlzLmZvY3VzVHlwZSQ9dGhpcy5zdG9yZS5waXBlKGx2KEpVKSl9b25Ub2dnbGVGb2N1c1R5cGUodCl7dGhpcy5zdG9yZS5kaXNwYXRjaChyVSh7YWxlcnRUeXBlOnR9KSl9fVVXLsm1ZmFjPWZ1bmN0aW9uIHQobil7cmV0dXJuIG5ldyhufHxVVykoWmcoY3YpKX0sVVcuybVjbXA9X28oe3R5cGU6VVcsc2VsZWN0b3JzOltbInRmLWRlYnVnZ2VyLXYyLWFsZXJ0cyJdXSxkZWNsczo0LHZhcnM6OSxjb25zdHM6W1szLCJudW1BbGVydHMiLCJhbGVydHNCcmVha2Rvd24iLCJmb2N1c1R5cGUiLCJvblRvZ2dsZUZvY3VzVHlwZSJdXSx0ZW1wbGF0ZTpmdW5jdGlvbiB0KG4sZSl7MSZuJiYoS2coMCwiYWxlcnRzLWNvbXBvbmVudCIsMCksY3AoIm9uVG9nZ2xlRm9jdXNUeXBlIiwoZnVuY3Rpb24gdChuKXtyZXR1cm4gZS5vblRvZ2dsZUZvY3VzVHlwZShuKX0pKSx5ZigxLCJhc3luYyIpLHlmKDIsImFzeW5jIikseWYoMywiYXN5bmMiKSwkZygpKSwyJm4mJkpnKCJudW1BbGVydHMiLGtmKDEsMyxlLm51bUFsZXJ0cyQpKSgiYWxlcnRzQnJlYWtkb3duIixrZigyLDUsZS5hbGVydHNCcmVha2Rvd24kKSkoImZvY3VzVHlwZSIsa2YoMyw3LGUuZm9jdXNUeXBlJCkpfSxkaXJlY3RpdmVzOltWV10scGlwZXM6W29PXSxlbmNhcHN1bGF0aW9uOjIsY2hhbmdlRGV0ZWN0aW9uOjB9KTtjb25zdCBXVz1bInNsaWRlcldyYXBwZXIiXSxHVz1Odyh7cGFzc2l2ZTohMX0pLFlXPXtwcm92aWRlOk1GLHVzZUV4aXN0aW5nOmFhKCgoKT0+WFcpKSxtdWx0aTohMH07Y2xhc3MgcVd7fWNvbnN0IFpXPW9FKGVFKG5FKGNsYXNze2NvbnN0cnVjdG9yKHQpe3RoaXMuX2VsZW1lbnRSZWY9dH19KSwiYWNjZW50IikpO2NsYXNzIFhXIGV4dGVuZHMgWld7Y29uc3RydWN0b3IodCxuLGUsYSxvLHIsaSxjKXtzdXBlcih0KSx0aGlzLl9mb2N1c01vbml0b3I9bix0aGlzLl9jaGFuZ2VEZXRlY3RvclJlZj1lLHRoaXMuX2Rpcj1hLHRoaXMuX25nWm9uZT1yLHRoaXMuX2FuaW1hdGlvbk1vZGU9Yyx0aGlzLl9pbnZlcnQ9ITEsdGhpcy5fbWF4PTEwMCx0aGlzLl9taW49MCx0aGlzLl9zdGVwPTEsdGhpcy5fdGh1bWJMYWJlbD0hMSx0aGlzLl90aWNrSW50ZXJ2YWw9MCx0aGlzLl92YWx1ZT1udWxsLHRoaXMuX3ZlcnRpY2FsPSExLHRoaXMuY2hhbmdlPW5ldyBFZix0aGlzLmlucHV0PW5ldyBFZix0aGlzLnZhbHVlQ2hhbmdlPW5ldyBFZix0aGlzLm9uVG91Y2hlZD0oKT0+e30sdGhpcy5fcGVyY2VudD0wLHRoaXMuX2lzU2xpZGluZz0hMSx0aGlzLl9pc0FjdGl2ZT0hMSx0aGlzLl90aWNrSW50ZXJ2YWxQZXJjZW50PTAsdGhpcy5fc2xpZGVyRGltZW5zaW9ucz1udWxsLHRoaXMuX2NvbnRyb2xWYWx1ZUFjY2Vzc29yQ2hhbmdlRm49KCk9Pnt9LHRoaXMuX2RpckNoYW5nZVN1YnNjcmlwdGlvbj1zLkVNUFRZLHRoaXMuX3BvaW50ZXJEb3duPXQ9Pnt0aGlzLmRpc2FibGVkfHx0aGlzLl9pc1NsaWRpbmd8fCFKVyh0KSYmMCE9PXQuYnV0dG9ufHx0aGlzLl9uZ1pvbmUucnVuKCgoKT0+e2NvbnN0IG49dGhpcy52YWx1ZSxlPVFXKHQpO3RoaXMuX2lzU2xpZGluZz0hMCx0aGlzLl9sYXN0UG9pbnRlckV2ZW50PXQsdC5wcmV2ZW50RGVmYXVsdCgpLHRoaXMuX2ZvY3VzSG9zdEVsZW1lbnQoKSx0aGlzLl9vbk1vdXNlZW50ZXIoKSx0aGlzLl9iaW5kR2xvYmFsRXZlbnRzKHQpLHRoaXMuX2ZvY3VzSG9zdEVsZW1lbnQoKSx0aGlzLl91cGRhdGVWYWx1ZUZyb21Qb3NpdGlvbihlKSx0aGlzLl92YWx1ZU9uU2xpZGVTdGFydD1uLG4hPXRoaXMudmFsdWUmJnRoaXMuX2VtaXRJbnB1dEV2ZW50KCl9KSl9LHRoaXMuX3BvaW50ZXJNb3ZlPXQ9PntpZih0aGlzLl9pc1NsaWRpbmcpe3QucHJldmVudERlZmF1bHQoKTtjb25zdCBuPXRoaXMudmFsdWU7dGhpcy5fbGFzdFBvaW50ZXJFdmVudD10LHRoaXMuX3VwZGF0ZVZhbHVlRnJvbVBvc2l0aW9uKFFXKHQpKSxuIT10aGlzLnZhbHVlJiZ0aGlzLl9lbWl0SW5wdXRFdmVudCgpfX0sdGhpcy5fcG9pbnRlclVwPXQ9Pnt0aGlzLl9pc1NsaWRpbmcmJih0LnByZXZlbnREZWZhdWx0KCksdGhpcy5fcmVtb3ZlR2xvYmFsRXZlbnRzKCksdGhpcy5faXNTbGlkaW5nPSExLHRoaXMuX3ZhbHVlT25TbGlkZVN0YXJ0PT10aGlzLnZhbHVlfHx0aGlzLmRpc2FibGVkfHx0aGlzLl9lbWl0Q2hhbmdlRXZlbnQoKSx0aGlzLl92YWx1ZU9uU2xpZGVTdGFydD10aGlzLl9sYXN0UG9pbnRlckV2ZW50PW51bGwpfSx0aGlzLl93aW5kb3dCbHVyPSgpPT57dGhpcy5fbGFzdFBvaW50ZXJFdmVudCYmdGhpcy5fcG9pbnRlclVwKHRoaXMuX2xhc3RQb2ludGVyRXZlbnQpfSx0aGlzLl9kb2N1bWVudD1pLHRoaXMudGFiSW5kZXg9cGFyc2VJbnQobyl8fDAsci5ydW5PdXRzaWRlQW5ndWxhcigoKCk9Pntjb25zdCBuPXQubmF0aXZlRWxlbWVudDtuLmFkZEV2ZW50TGlzdGVuZXIoIm1vdXNlZG93biIsdGhpcy5fcG9pbnRlckRvd24sR1cpLG4uYWRkRXZlbnRMaXN0ZW5lcigidG91Y2hzdGFydCIsdGhpcy5fcG9pbnRlckRvd24sR1cpfSkpfWdldCBpbnZlcnQoKXtyZXR1cm4gdGhpcy5faW52ZXJ0fXNldCBpbnZlcnQodCl7dGhpcy5faW52ZXJ0PUd3KHQpfWdldCBtYXgoKXtyZXR1cm4gdGhpcy5fbWF4fXNldCBtYXgodCl7dGhpcy5fbWF4PVl3KHQsdGhpcy5fbWF4KSx0aGlzLl9wZXJjZW50PXRoaXMuX2NhbGN1bGF0ZVBlcmNlbnRhZ2UodGhpcy5fdmFsdWUpLHRoaXMuX2NoYW5nZURldGVjdG9yUmVmLm1hcmtGb3JDaGVjaygpfWdldCBtaW4oKXtyZXR1cm4gdGhpcy5fbWlufXNldCBtaW4odCl7dGhpcy5fbWluPVl3KHQsdGhpcy5fbWluKSxudWxsPT09dGhpcy5fdmFsdWUmJih0aGlzLnZhbHVlPXRoaXMuX21pbiksdGhpcy5fcGVyY2VudD10aGlzLl9jYWxjdWxhdGVQZXJjZW50YWdlKHRoaXMuX3ZhbHVlKSx0aGlzLl9jaGFuZ2VEZXRlY3RvclJlZi5tYXJrRm9yQ2hlY2soKX1nZXQgc3RlcCgpe3JldHVybiB0aGlzLl9zdGVwfXNldCBzdGVwKHQpe3RoaXMuX3N0ZXA9WXcodCx0aGlzLl9zdGVwKSx0aGlzLl9zdGVwJTEhPTAmJih0aGlzLl9yb3VuZFRvRGVjaW1hbD10aGlzLl9zdGVwLnRvU3RyaW5nKCkuc3BsaXQoIi4iKS5wb3AoKS5sZW5ndGgpLHRoaXMuX2NoYW5nZURldGVjdG9yUmVmLm1hcmtGb3JDaGVjaygpfWdldCB0aHVtYkxhYmVsKCl7cmV0dXJuIHRoaXMuX3RodW1iTGFiZWx9c2V0IHRodW1iTGFiZWwodCl7dGhpcy5fdGh1bWJMYWJlbD1Hdyh0KX1nZXQgdGlja0ludGVydmFsKCl7cmV0dXJuIHRoaXMuX3RpY2tJbnRlcnZhbH1zZXQgdGlja0ludGVydmFsKHQpe3RoaXMuX3RpY2tJbnRlcnZhbD0iYXV0byI9PT10PyJhdXRvIjoibnVtYmVyIj09dHlwZW9mIHR8fCJzdHJpbmciPT10eXBlb2YgdD9Zdyh0LHRoaXMuX3RpY2tJbnRlcnZhbCk6MH1nZXQgdmFsdWUoKXtyZXR1cm4gbnVsbD09PXRoaXMuX3ZhbHVlJiYodGhpcy52YWx1ZT10aGlzLl9taW4pLHRoaXMuX3ZhbHVlfXNldCB2YWx1ZSh0KXtpZih0IT09dGhpcy5fdmFsdWUpe2xldCBuPVl3KHQpO3RoaXMuX3JvdW5kVG9EZWNpbWFsJiYobj1wYXJzZUZsb2F0KG4udG9GaXhlZCh0aGlzLl9yb3VuZFRvRGVjaW1hbCkpKSx0aGlzLl92YWx1ZT1uLHRoaXMuX3BlcmNlbnQ9dGhpcy5fY2FsY3VsYXRlUGVyY2VudGFnZSh0aGlzLl92YWx1ZSksdGhpcy5fY2hhbmdlRGV0ZWN0b3JSZWYubWFya0ZvckNoZWNrKCl9fWdldCB2ZXJ0aWNhbCgpe3JldHVybiB0aGlzLl92ZXJ0aWNhbH1zZXQgdmVydGljYWwodCl7dGhpcy5fdmVydGljYWw9R3codCl9Z2V0IGRpc3BsYXlWYWx1ZSgpe3JldHVybiB0aGlzLmRpc3BsYXlXaXRoP3RoaXMuZGlzcGxheVdpdGgodGhpcy52YWx1ZSk6dGhpcy5fcm91bmRUb0RlY2ltYWwmJnRoaXMudmFsdWUmJnRoaXMudmFsdWUlMSE9MD90aGlzLnZhbHVlLnRvRml4ZWQodGhpcy5fcm91bmRUb0RlY2ltYWwpOnRoaXMudmFsdWV8fDB9Zm9jdXModCl7dGhpcy5fZm9jdXNIb3N0RWxlbWVudCh0KX1ibHVyKCl7dGhpcy5fYmx1ckhvc3RFbGVtZW50KCl9Z2V0IHBlcmNlbnQoKXtyZXR1cm4gdGhpcy5fY2xhbXAodGhpcy5fcGVyY2VudCl9X3Nob3VsZEludmVydEF4aXMoKXtyZXR1cm4gdGhpcy52ZXJ0aWNhbD8hdGhpcy5pbnZlcnQ6dGhpcy5pbnZlcnR9X2lzTWluVmFsdWUoKXtyZXR1cm4gMD09PXRoaXMucGVyY2VudH1fZ2V0VGh1bWJHYXAoKXtyZXR1cm4gdGhpcy5kaXNhYmxlZD83OnRoaXMuX2lzTWluVmFsdWUoKSYmIXRoaXMudGh1bWJMYWJlbD90aGlzLl9pc0FjdGl2ZT8xMDo3OjB9X2dldFRyYWNrQmFja2dyb3VuZFN0eWxlcygpe2NvbnN0IHQ9dGhpcy52ZXJ0aWNhbD9gMSwgJHsxLXRoaXMucGVyY2VudH0sIDFgOjEtdGhpcy5wZXJjZW50KyIsIDEsIDEiO3JldHVybnt0cmFuc2Zvcm06YHRyYW5zbGF0ZSR7dGhpcy52ZXJ0aWNhbD8iWSI6IlgifSgke3RoaXMuX3Nob3VsZEludmVydE1vdXNlQ29vcmRzKCk/Ii0iOiIifSR7dGhpcy5fZ2V0VGh1bWJHYXAoKX1weCkgc2NhbGUzZCgke3R9KWB9fV9nZXRUcmFja0ZpbGxTdHlsZXMoKXtjb25zdCB0PXRoaXMucGVyY2VudCxuPXRoaXMudmVydGljYWw/YDEsICR7dH0sIDFgOmAke3R9LCAxLCAxYDtyZXR1cm57dHJhbnNmb3JtOmB0cmFuc2xhdGUke3RoaXMudmVydGljYWw/IlkiOiJYIn0oJHt0aGlzLl9zaG91bGRJbnZlcnRNb3VzZUNvb3JkcygpPyIiOiItIn0ke3RoaXMuX2dldFRodW1iR2FwKCl9cHgpIHNjYWxlM2QoJHtufSlgLGRpc3BsYXk6MD09PXQ/Im5vbmUiOiIifX1fZ2V0VGlja3NDb250YWluZXJTdHlsZXMoKXtyZXR1cm57dHJhbnNmb3JtOmB0cmFuc2xhdGUke3RoaXMudmVydGljYWw/IlkiOiJYIn0oJHt0aGlzLnZlcnRpY2FsfHwicnRsIiE9dGhpcy5fZ2V0RGlyZWN0aW9uKCk/Ii0iOiIifSR7dGhpcy5fdGlja0ludGVydmFsUGVyY2VudC8yKjEwMH0lKWB9fV9nZXRUaWNrc1N0eWxlcygpe2xldCB0PTEwMCp0aGlzLl90aWNrSW50ZXJ2YWxQZXJjZW50LG49e2JhY2tncm91bmRTaXplOnRoaXMudmVydGljYWw/YDJweCAke3R9JWA6YCR7dH0lIDJweGAsdHJhbnNmb3JtOmB0cmFuc2xhdGVaKDApIHRyYW5zbGF0ZSR7dGhpcy52ZXJ0aWNhbD8iWSI6IlgifSgke3RoaXMudmVydGljYWx8fCJydGwiIT10aGlzLl9nZXREaXJlY3Rpb24oKT8iIjoiLSJ9JHt0LzJ9JSkke3RoaXMudmVydGljYWx8fCJydGwiIT10aGlzLl9nZXREaXJlY3Rpb24oKT8iIjoiIHJvdGF0ZSgxODBkZWcpIn1gfTtpZih0aGlzLl9pc01pblZhbHVlKCkmJnRoaXMuX2dldFRodW1iR2FwKCkpe2NvbnN0IHQ9dGhpcy5fc2hvdWxkSW52ZXJ0QXhpcygpO2xldCBlO2U9dGhpcy52ZXJ0aWNhbD90PyJCb3R0b20iOiJUb3AiOnQ/IlJpZ2h0IjoiTGVmdCIsbltgcGFkZGluZyR7ZX1gXT1gJHt0aGlzLl9nZXRUaHVtYkdhcCgpfXB4YH1yZXR1cm4gbn1fZ2V0VGh1bWJDb250YWluZXJTdHlsZXMoKXtjb25zdCB0PXRoaXMuX3Nob3VsZEludmVydEF4aXMoKTtyZXR1cm57dHJhbnNmb3JtOmB0cmFuc2xhdGUke3RoaXMudmVydGljYWw/IlkiOiJYIn0oLSR7MTAwKigoInJ0bCIhPXRoaXMuX2dldERpcmVjdGlvbigpfHx0aGlzLnZlcnRpY2FsP3Q6IXQpP3RoaXMucGVyY2VudDoxLXRoaXMucGVyY2VudCl9JSlgfX1fc2hvdWxkSW52ZXJ0TW91c2VDb29yZHMoKXtjb25zdCB0PXRoaXMuX3Nob3VsZEludmVydEF4aXMoKTtyZXR1cm4icnRsIiE9dGhpcy5fZ2V0RGlyZWN0aW9uKCl8fHRoaXMudmVydGljYWw/dDohdH1fZ2V0RGlyZWN0aW9uKCl7cmV0dXJuIHRoaXMuX2RpciYmInJ0bCI9PXRoaXMuX2Rpci52YWx1ZT8icnRsIjoibHRyIn1uZ0FmdGVyVmlld0luaXQoKXt0aGlzLl9mb2N1c01vbml0b3IubW9uaXRvcih0aGlzLl9lbGVtZW50UmVmLCEwKS5zdWJzY3JpYmUoKHQ9Pnt0aGlzLl9pc0FjdGl2ZT0hIXQmJiJrZXlib2FyZCIhPT10LHRoaXMuX2NoYW5nZURldGVjdG9yUmVmLmRldGVjdENoYW5nZXMoKX0pKSx0aGlzLl9kaXImJih0aGlzLl9kaXJDaGFuZ2VTdWJzY3JpcHRpb249dGhpcy5fZGlyLmNoYW5nZS5zdWJzY3JpYmUoKCgpPT57dGhpcy5fY2hhbmdlRGV0ZWN0b3JSZWYubWFya0ZvckNoZWNrKCl9KSkpfW5nT25EZXN0cm95KCl7Y29uc3QgdD10aGlzLl9lbGVtZW50UmVmLm5hdGl2ZUVsZW1lbnQ7dC5yZW1vdmVFdmVudExpc3RlbmVyKCJtb3VzZWRvd24iLHRoaXMuX3BvaW50ZXJEb3duLEdXKSx0LnJlbW92ZUV2ZW50TGlzdGVuZXIoInRvdWNoc3RhcnQiLHRoaXMuX3BvaW50ZXJEb3duLEdXKSx0aGlzLl9sYXN0UG9pbnRlckV2ZW50PW51bGwsdGhpcy5fcmVtb3ZlR2xvYmFsRXZlbnRzKCksdGhpcy5fZm9jdXNNb25pdG9yLnN0b3BNb25pdG9yaW5nKHRoaXMuX2VsZW1lbnRSZWYpLHRoaXMuX2RpckNoYW5nZVN1YnNjcmlwdGlvbi51bnN1YnNjcmliZSgpfV9vbk1vdXNlZW50ZXIoKXt0aGlzLmRpc2FibGVkfHwodGhpcy5fc2xpZGVyRGltZW5zaW9ucz10aGlzLl9nZXRTbGlkZXJEaW1lbnNpb25zKCksdGhpcy5fdXBkYXRlVGlja0ludGVydmFsUGVyY2VudCgpKX1fb25Gb2N1cygpe3RoaXMuX3NsaWRlckRpbWVuc2lvbnM9dGhpcy5fZ2V0U2xpZGVyRGltZW5zaW9ucygpLHRoaXMuX3VwZGF0ZVRpY2tJbnRlcnZhbFBlcmNlbnQoKX1fb25CbHVyKCl7dGhpcy5vblRvdWNoZWQoKX1fb25LZXlkb3duKHQpe2lmKHRoaXMuZGlzYWJsZWR8fFd3KHQpKXJldHVybjtjb25zdCBuPXRoaXMudmFsdWU7c3dpdGNoKHQua2V5Q29kZSl7Y2FzZSAzMzp0aGlzLl9pbmNyZW1lbnQoMTApO2JyZWFrO2Nhc2UgMzQ6dGhpcy5faW5jcmVtZW50KC0xMCk7YnJlYWs7Y2FzZSAzNTp0aGlzLnZhbHVlPXRoaXMubWF4O2JyZWFrO2Nhc2UgMzY6dGhpcy52YWx1ZT10aGlzLm1pbjticmVhaztjYXNlIDM3OnRoaXMuX2luY3JlbWVudCgicnRsIj09dGhpcy5fZ2V0RGlyZWN0aW9uKCk/MTotMSk7YnJlYWs7Y2FzZSBqdzp0aGlzLl9pbmNyZW1lbnQoMSk7YnJlYWs7Y2FzZSAzOTp0aGlzLl9pbmNyZW1lbnQoInJ0bCI9PXRoaXMuX2dldERpcmVjdGlvbigpPy0xOjEpO2JyZWFrO2Nhc2UgVXc6dGhpcy5faW5jcmVtZW50KC0xKTticmVhaztkZWZhdWx0OnJldHVybn1uIT10aGlzLnZhbHVlJiYodGhpcy5fZW1pdElucHV0RXZlbnQoKSx0aGlzLl9lbWl0Q2hhbmdlRXZlbnQoKSksdGhpcy5faXNTbGlkaW5nPSEwLHQucHJldmVudERlZmF1bHQoKX1fb25LZXl1cCgpe3RoaXMuX2lzU2xpZGluZz0hMX1fZ2V0V2luZG93KCl7cmV0dXJuIHRoaXMuX2RvY3VtZW50LmRlZmF1bHRWaWV3fHx3aW5kb3d9X2JpbmRHbG9iYWxFdmVudHModCl7Y29uc3Qgbj10aGlzLl9kb2N1bWVudCxlPUpXKHQpLGE9ZT8idG91Y2hlbmQiOiJtb3VzZXVwIjtuLmFkZEV2ZW50TGlzdGVuZXIoZT8idG91Y2htb3ZlIjoibW91c2Vtb3ZlIix0aGlzLl9wb2ludGVyTW92ZSxHVyksbi5hZGRFdmVudExpc3RlbmVyKGEsdGhpcy5fcG9pbnRlclVwLEdXKSxlJiZuLmFkZEV2ZW50TGlzdGVuZXIoInRvdWNoY2FuY2VsIix0aGlzLl9wb2ludGVyVXAsR1cpO2NvbnN0IG89dGhpcy5fZ2V0V2luZG93KCk7dm9pZCAwIT09byYmbyYmby5hZGRFdmVudExpc3RlbmVyKCJibHVyIix0aGlzLl93aW5kb3dCbHVyKX1fcmVtb3ZlR2xvYmFsRXZlbnRzKCl7Y29uc3QgdD10aGlzLl9kb2N1bWVudDt0LnJlbW92ZUV2ZW50TGlzdGVuZXIoIm1vdXNlbW92ZSIsdGhpcy5fcG9pbnRlck1vdmUsR1cpLHQucmVtb3ZlRXZlbnRMaXN0ZW5lcigibW91c2V1cCIsdGhpcy5fcG9pbnRlclVwLEdXKSx0LnJlbW92ZUV2ZW50TGlzdGVuZXIoInRvdWNobW92ZSIsdGhpcy5fcG9pbnRlck1vdmUsR1cpLHQucmVtb3ZlRXZlbnRMaXN0ZW5lcigidG91Y2hlbmQiLHRoaXMuX3BvaW50ZXJVcCxHVyksdC5yZW1vdmVFdmVudExpc3RlbmVyKCJ0b3VjaGNhbmNlbCIsdGhpcy5fcG9pbnRlclVwLEdXKTtjb25zdCBuPXRoaXMuX2dldFdpbmRvdygpO3ZvaWQgMCE9PW4mJm4mJm4ucmVtb3ZlRXZlbnRMaXN0ZW5lcigiYmx1ciIsdGhpcy5fd2luZG93Qmx1cil9X2luY3JlbWVudCh0KXt0aGlzLnZhbHVlPXRoaXMuX2NsYW1wKCh0aGlzLnZhbHVlfHwwKSt0aGlzLnN0ZXAqdCx0aGlzLm1pbix0aGlzLm1heCl9X3VwZGF0ZVZhbHVlRnJvbVBvc2l0aW9uKHQpe2lmKCF0aGlzLl9zbGlkZXJEaW1lbnNpb25zKXJldHVybjtsZXQgbj10aGlzLl9jbGFtcCgoKHRoaXMudmVydGljYWw/dC55OnQueCktKHRoaXMudmVydGljYWw/dGhpcy5fc2xpZGVyRGltZW5zaW9ucy50b3A6dGhpcy5fc2xpZGVyRGltZW5zaW9ucy5sZWZ0KSkvKHRoaXMudmVydGljYWw/dGhpcy5fc2xpZGVyRGltZW5zaW9ucy5oZWlnaHQ6dGhpcy5fc2xpZGVyRGltZW5zaW9ucy53aWR0aCkpO2lmKHRoaXMuX3Nob3VsZEludmVydE1vdXNlQ29vcmRzKCkmJihuPTEtbiksMD09PW4pdGhpcy52YWx1ZT10aGlzLm1pbjtlbHNlIGlmKDE9PT1uKXRoaXMudmFsdWU9dGhpcy5tYXg7ZWxzZXtjb25zdCB0PXRoaXMuX2NhbGN1bGF0ZVZhbHVlKG4pLGU9TWF0aC5yb3VuZCgodC10aGlzLm1pbikvdGhpcy5zdGVwKSp0aGlzLnN0ZXArdGhpcy5taW47dGhpcy52YWx1ZT10aGlzLl9jbGFtcChlLHRoaXMubWluLHRoaXMubWF4KX19X2VtaXRDaGFuZ2VFdmVudCgpe3RoaXMuX2NvbnRyb2xWYWx1ZUFjY2Vzc29yQ2hhbmdlRm4odGhpcy52YWx1ZSksdGhpcy52YWx1ZUNoYW5nZS5lbWl0KHRoaXMudmFsdWUpLHRoaXMuY2hhbmdlLmVtaXQodGhpcy5fY3JlYXRlQ2hhbmdlRXZlbnQoKSl9X2VtaXRJbnB1dEV2ZW50KCl7dGhpcy5pbnB1dC5lbWl0KHRoaXMuX2NyZWF0ZUNoYW5nZUV2ZW50KCkpfV91cGRhdGVUaWNrSW50ZXJ2YWxQZXJjZW50KCl7aWYodGhpcy50aWNrSW50ZXJ2YWwmJnRoaXMuX3NsaWRlckRpbWVuc2lvbnMpaWYoImF1dG8iPT10aGlzLnRpY2tJbnRlcnZhbCl7bGV0IHQ9dGhpcy52ZXJ0aWNhbD90aGlzLl9zbGlkZXJEaW1lbnNpb25zLmhlaWdodDp0aGlzLl9zbGlkZXJEaW1lbnNpb25zLndpZHRoLG49TWF0aC5jZWlsKDMwLyh0KnRoaXMuc3RlcC8odGhpcy5tYXgtdGhpcy5taW4pKSk7dGhpcy5fdGlja0ludGVydmFsUGVyY2VudD1uKnRoaXMuc3RlcC90fWVsc2UgdGhpcy5fdGlja0ludGVydmFsUGVyY2VudD10aGlzLnRpY2tJbnRlcnZhbCp0aGlzLnN0ZXAvKHRoaXMubWF4LXRoaXMubWluKX1fY3JlYXRlQ2hhbmdlRXZlbnQodD10aGlzLnZhbHVlKXtsZXQgbj1uZXcgcVc7cmV0dXJuIG4uc291cmNlPXRoaXMsbi52YWx1ZT10LG59X2NhbGN1bGF0ZVBlcmNlbnRhZ2UodCl7cmV0dXJuKCh0fHwwKS10aGlzLm1pbikvKHRoaXMubWF4LXRoaXMubWluKX1fY2FsY3VsYXRlVmFsdWUodCl7cmV0dXJuIHRoaXMubWluK3QqKHRoaXMubWF4LXRoaXMubWluKX1fY2xhbXAodCxuPTAsZT0xKXtyZXR1cm4gTWF0aC5tYXgobixNYXRoLm1pbih0LGUpKX1fZ2V0U2xpZGVyRGltZW5zaW9ucygpe3JldHVybiB0aGlzLl9zbGlkZXJXcmFwcGVyP3RoaXMuX3NsaWRlcldyYXBwZXIubmF0aXZlRWxlbWVudC5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKTpudWxsfV9mb2N1c0hvc3RFbGVtZW50KHQpe3RoaXMuX2VsZW1lbnRSZWYubmF0aXZlRWxlbWVudC5mb2N1cyh0KX1fYmx1ckhvc3RFbGVtZW50KCl7dGhpcy5fZWxlbWVudFJlZi5uYXRpdmVFbGVtZW50LmJsdXIoKX13cml0ZVZhbHVlKHQpe3RoaXMudmFsdWU9dH1yZWdpc3Rlck9uQ2hhbmdlKHQpe3RoaXMuX2NvbnRyb2xWYWx1ZUFjY2Vzc29yQ2hhbmdlRm49dH1yZWdpc3Rlck9uVG91Y2hlZCh0KXt0aGlzLm9uVG91Y2hlZD10fXNldERpc2FibGVkU3RhdGUodCl7dGhpcy5kaXNhYmxlZD10fX1mdW5jdGlvbiBKVyh0KXtyZXR1cm4idCI9PT10LnR5cGVbMF19ZnVuY3Rpb24gUVcodCl7Y29uc3Qgbj1KVyh0KT90LnRvdWNoZXNbMF18fHQuY2hhbmdlZFRvdWNoZXNbMF06dDtyZXR1cm57eDpuLmNsaWVudFgseTpuLmNsaWVudFl9fQovKioKICAgICAqIEBsaWNlbnNlCiAgICAgKiBDb3B5cmlnaHQgR29vZ2xlIExMQyBBbGwgUmlnaHRzIFJlc2VydmVkLgogICAgICoKICAgICAqIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGFuIE1JVC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCiAgICAgKiBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlIGF0IGh0dHBzOi8vYW5ndWxhci5pby9saWNlbnNlCiAgICAgKi9YVy7JtWZhYz1mdW5jdGlvbiB0KG4pe3JldHVybiBuZXcobnx8WFcpKFpnKHh1KSxaZyhUUyksWmcoVm0pLFpnKFVTLDgpLFhnKCJ0YWJpbmRleCIpLFpnKEpfKSxaZyh6QyksWmcoZGssOCkpfSxYVy7JtWNtcD1fbyh7dHlwZTpYVyxzZWxlY3RvcnM6W1sibWF0LXNsaWRlciJdXSx2aWV3UXVlcnk6ZnVuY3Rpb24gdChuLGUpe3ZhciBhOzEmbiYmVWYoV1csITApLDImbiYmVmYoYT1aZigpKSYmKGUuX3NsaWRlcldyYXBwZXI9YS5maXJzdCl9LGhvc3RBdHRyczpbInJvbGUiLCJzbGlkZXIiLDEsIm1hdC1zbGlkZXIiLCJtYXQtZm9jdXMtaW5kaWNhdG9yIl0saG9zdFZhcnM6MjgsaG9zdEJpbmRpbmdzOmZ1bmN0aW9uIHQobixlKXsxJm4mJmNwKCJmb2N1cyIsKGZ1bmN0aW9uIHQoKXtyZXR1cm4gZS5fb25Gb2N1cygpfSkpKCJibHVyIiwoZnVuY3Rpb24gdCgpe3JldHVybiBlLl9vbkJsdXIoKX0pKSgia2V5ZG93biIsKGZ1bmN0aW9uIHQobil7cmV0dXJuIGUuX29uS2V5ZG93bihuKX0pKSgia2V5dXAiLChmdW5jdGlvbiB0KCl7cmV0dXJuIGUuX29uS2V5dXAoKX0pKSgibW91c2VlbnRlciIsKGZ1bmN0aW9uIHQoKXtyZXR1cm4gZS5fb25Nb3VzZWVudGVyKCl9KSkoInNlbGVjdHN0YXJ0IiwoZnVuY3Rpb24gdChuKXtyZXR1cm4gbi5wcmV2ZW50RGVmYXVsdCgpfSkpLDImbiYmKGViKCJ0YWJJbmRleCIsZS50YWJJbmRleCksTmcoImFyaWEtZGlzYWJsZWQiLGUuZGlzYWJsZWQpKCJhcmlhLXZhbHVlbWF4IixlLm1heCkoImFyaWEtdmFsdWVtaW4iLGUubWluKSgiYXJpYS12YWx1ZW5vdyIsZS52YWx1ZSkoImFyaWEtb3JpZW50YXRpb24iLGUudmVydGljYWw/InZlcnRpY2FsIjoiaG9yaXpvbnRhbCIpLERwKCJtYXQtc2xpZGVyLWRpc2FibGVkIixlLmRpc2FibGVkKSgibWF0LXNsaWRlci1oYXMtdGlja3MiLGUudGlja0ludGVydmFsKSgibWF0LXNsaWRlci1ob3Jpem9udGFsIiwhZS52ZXJ0aWNhbCkoIm1hdC1zbGlkZXItYXhpcy1pbnZlcnRlZCIsZS5fc2hvdWxkSW52ZXJ0QXhpcygpKSgibWF0LXNsaWRlci1pbnZlcnQtbW91c2UtY29vcmRzIixlLl9zaG91bGRJbnZlcnRNb3VzZUNvb3JkcygpKSgibWF0LXNsaWRlci1zbGlkaW5nIixlLl9pc1NsaWRpbmcpKCJtYXQtc2xpZGVyLXRodW1iLWxhYmVsLXNob3dpbmciLGUudGh1bWJMYWJlbCkoIm1hdC1zbGlkZXItdmVydGljYWwiLGUudmVydGljYWwpKCJtYXQtc2xpZGVyLW1pbi12YWx1ZSIsZS5faXNNaW5WYWx1ZSgpKSgibWF0LXNsaWRlci1oaWRlLWxhc3QtdGljayIsZS5kaXNhYmxlZHx8ZS5faXNNaW5WYWx1ZSgpJiZlLl9nZXRUaHVtYkdhcCgpJiZlLl9zaG91bGRJbnZlcnRBeGlzKCkpKCJfbWF0LWFuaW1hdGlvbi1ub29wYWJsZSIsIk5vb3BBbmltYXRpb25zIj09PWUuX2FuaW1hdGlvbk1vZGUpKX0saW5wdXRzOntkaXNhYmxlZDoiZGlzYWJsZWQiLGNvbG9yOiJjb2xvciIsdGFiSW5kZXg6InRhYkluZGV4IixpbnZlcnQ6ImludmVydCIsbWF4OiJtYXgiLG1pbjoibWluIix2YWx1ZToidmFsdWUiLHN0ZXA6InN0ZXAiLHRodW1iTGFiZWw6InRodW1iTGFiZWwiLHRpY2tJbnRlcnZhbDoidGlja0ludGVydmFsIix2ZXJ0aWNhbDoidmVydGljYWwiLGRpc3BsYXlXaXRoOiJkaXNwbGF5V2l0aCJ9LG91dHB1dHM6e2NoYW5nZToiY2hhbmdlIixpbnB1dDoiaW5wdXQiLHZhbHVlQ2hhbmdlOiJ2YWx1ZUNoYW5nZSJ9LGV4cG9ydEFzOlsibWF0U2xpZGVyIl0sZmVhdHVyZXM6W011KFtZV10pLGhnXSxkZWNsczoxMyx2YXJzOjYsY29uc3RzOltbMSwibWF0LXNsaWRlci13cmFwcGVyIl0sWyJzbGlkZXJXcmFwcGVyIiwiIl0sWzEsIm1hdC1zbGlkZXItdHJhY2std3JhcHBlciJdLFsxLCJtYXQtc2xpZGVyLXRyYWNrLWJhY2tncm91bmQiLDMsIm5nU3R5bGUiXSxbMSwibWF0LXNsaWRlci10cmFjay1maWxsIiwzLCJuZ1N0eWxlIl0sWzEsIm1hdC1zbGlkZXItdGlja3MtY29udGFpbmVyIiwzLCJuZ1N0eWxlIl0sWzEsIm1hdC1zbGlkZXItdGlja3MiLDMsIm5nU3R5bGUiXSxbMSwibWF0LXNsaWRlci10aHVtYi1jb250YWluZXIiLDMsIm5nU3R5bGUiXSxbMSwibWF0LXNsaWRlci1mb2N1cy1yaW5nIl0sWzEsIm1hdC1zbGlkZXItdGh1bWIiXSxbMSwibWF0LXNsaWRlci10aHVtYi1sYWJlbCJdLFsxLCJtYXQtc2xpZGVyLXRodW1iLWxhYmVsLXRleHQiXV0sdGVtcGxhdGU6ZnVuY3Rpb24gdChuLGUpezEmbiYmKEtnKDAsImRpdiIsMCwxKSxLZygyLCJkaXYiLDIpLHRwKDMsImRpdiIsMyksdHAoNCwiZGl2Iiw0KSwkZygpLEtnKDUsImRpdiIsNSksdHAoNiwiZGl2Iiw2KSwkZygpLEtnKDcsImRpdiIsNyksdHAoOCwiZGl2Iiw4KSx0cCg5LCJkaXYiLDkpLEtnKDEwLCJkaXYiLDEwKSxLZygxMSwic3BhbiIsMTEpLEpwKDEyKSwkZygpLCRnKCksJGcoKSwkZygpKSwyJm4mJih3cygzKSxKZygibmdTdHlsZSIsZS5fZ2V0VHJhY2tCYWNrZ3JvdW5kU3R5bGVzKCkpLHdzKDEpLEpnKCJuZ1N0eWxlIixlLl9nZXRUcmFja0ZpbGxTdHlsZXMoKSksd3MoMSksSmcoIm5nU3R5bGUiLGUuX2dldFRpY2tzQ29udGFpbmVyU3R5bGVzKCkpLHdzKDEpLEpnKCJuZ1N0eWxlIixlLl9nZXRUaWNrc1N0eWxlcygpKSx3cygxKSxKZygibmdTdHlsZSIsZS5fZ2V0VGh1bWJDb250YWluZXJTdHlsZXMoKSksd3MoNSksUXAoZS5kaXNwbGF5VmFsdWUpKX0sZGlyZWN0aXZlczpbJE1dLHN0eWxlczpbJy5tYXQtc2xpZGVye2Rpc3BsYXk6aW5saW5lLWJsb2NrO3Bvc2l0aW9uOnJlbGF0aXZlO2JveC1zaXppbmc6Ym9yZGVyLWJveDtwYWRkaW5nOjhweDtvdXRsaW5lOm5vbmU7dmVydGljYWwtYWxpZ246bWlkZGxlfS5tYXQtc2xpZGVyOm5vdCgubWF0LXNsaWRlci1kaXNhYmxlZCk6YWN0aXZlLC5tYXQtc2xpZGVyLm1hdC1zbGlkZXItc2xpZGluZzpub3QoLm1hdC1zbGlkZXItZGlzYWJsZWQpe2N1cnNvcjotd2Via2l0LWdyYWJiaW5nO2N1cnNvcjpncmFiYmluZ30ubWF0LXNsaWRlci13cmFwcGVye3Bvc2l0aW9uOmFic29sdXRlfS5tYXQtc2xpZGVyLXRyYWNrLXdyYXBwZXJ7cG9zaXRpb246YWJzb2x1dGU7dG9wOjA7bGVmdDowO292ZXJmbG93OmhpZGRlbn0ubWF0LXNsaWRlci10cmFjay1maWxse3Bvc2l0aW9uOmFic29sdXRlO3RyYW5zZm9ybS1vcmlnaW46MCAwO3RyYW5zaXRpb246dHJhbnNmb3JtIDQwMG1zIGN1YmljLWJlemllcigwLjI1LCAwLjgsIDAuMjUsIDEpLGJhY2tncm91bmQtY29sb3IgNDAwbXMgY3ViaWMtYmV6aWVyKDAuMjUsIDAuOCwgMC4yNSwgMSl9Lm1hdC1zbGlkZXItdHJhY2stYmFja2dyb3VuZHtwb3NpdGlvbjphYnNvbHV0ZTt0cmFuc2Zvcm0tb3JpZ2luOjEwMCUgMTAwJTt0cmFuc2l0aW9uOnRyYW5zZm9ybSA0MDBtcyBjdWJpYy1iZXppZXIoMC4yNSwgMC44LCAwLjI1LCAxKSxiYWNrZ3JvdW5kLWNvbG9yIDQwMG1zIGN1YmljLWJlemllcigwLjI1LCAwLjgsIDAuMjUsIDEpfS5tYXQtc2xpZGVyLXRpY2tzLWNvbnRhaW5lcntwb3NpdGlvbjphYnNvbHV0ZTtsZWZ0OjA7dG9wOjA7b3ZlcmZsb3c6aGlkZGVufS5tYXQtc2xpZGVyLXRpY2tze2JhY2tncm91bmQtcmVwZWF0OnJlcGVhdDtiYWNrZ3JvdW5kLWNsaXA6Y29udGVudC1ib3g7Ym94LXNpemluZzpib3JkZXItYm94O29wYWNpdHk6MDt0cmFuc2l0aW9uOm9wYWNpdHkgNDAwbXMgY3ViaWMtYmV6aWVyKDAuMjUsIDAuOCwgMC4yNSwgMSl9Lm1hdC1zbGlkZXItdGh1bWItY29udGFpbmVye3Bvc2l0aW9uOmFic29sdXRlO3otaW5kZXg6MTt0cmFuc2l0aW9uOnRyYW5zZm9ybSA0MDBtcyBjdWJpYy1iZXppZXIoMC4yNSwgMC44LCAwLjI1LCAxKX0ubWF0LXNsaWRlci1mb2N1cy1yaW5ne3Bvc2l0aW9uOmFic29sdXRlO3dpZHRoOjMwcHg7aGVpZ2h0OjMwcHg7Ym9yZGVyLXJhZGl1czo1MCU7dHJhbnNmb3JtOnNjYWxlKDApO29wYWNpdHk6MDt0cmFuc2l0aW9uOnRyYW5zZm9ybSA0MDBtcyBjdWJpYy1iZXppZXIoMC4yNSwgMC44LCAwLjI1LCAxKSxiYWNrZ3JvdW5kLWNvbG9yIDQwMG1zIGN1YmljLWJlemllcigwLjI1LCAwLjgsIDAuMjUsIDEpLG9wYWNpdHkgNDAwbXMgY3ViaWMtYmV6aWVyKDAuMjUsIDAuOCwgMC4yNSwgMSl9Lm1hdC1zbGlkZXIuY2RrLWtleWJvYXJkLWZvY3VzZWQgLm1hdC1zbGlkZXItZm9jdXMtcmluZywubWF0LXNsaWRlci5jZGstcHJvZ3JhbS1mb2N1c2VkIC5tYXQtc2xpZGVyLWZvY3VzLXJpbmd7dHJhbnNmb3JtOnNjYWxlKDEpO29wYWNpdHk6MX0ubWF0LXNsaWRlcjpub3QoLm1hdC1zbGlkZXItZGlzYWJsZWQpOm5vdCgubWF0LXNsaWRlci1zbGlkaW5nKSAubWF0LXNsaWRlci10aHVtYi1sYWJlbCwubWF0LXNsaWRlcjpub3QoLm1hdC1zbGlkZXItZGlzYWJsZWQpOm5vdCgubWF0LXNsaWRlci1zbGlkaW5nKSAubWF0LXNsaWRlci10aHVtYntjdXJzb3I6LXdlYmtpdC1ncmFiO2N1cnNvcjpncmFifS5tYXQtc2xpZGVyLXRodW1ie3Bvc2l0aW9uOmFic29sdXRlO3JpZ2h0Oi0xMHB4O2JvdHRvbTotMTBweDtib3gtc2l6aW5nOmJvcmRlci1ib3g7d2lkdGg6MjBweDtoZWlnaHQ6MjBweDtib3JkZXI6M3B4IHNvbGlkIHRyYW5zcGFyZW50O2JvcmRlci1yYWRpdXM6NTAlO3RyYW5zZm9ybTpzY2FsZSgwLjcpO3RyYW5zaXRpb246dHJhbnNmb3JtIDQwMG1zIGN1YmljLWJlemllcigwLjI1LCAwLjgsIDAuMjUsIDEpLGJhY2tncm91bmQtY29sb3IgNDAwbXMgY3ViaWMtYmV6aWVyKDAuMjUsIDAuOCwgMC4yNSwgMSksYm9yZGVyLWNvbG9yIDQwMG1zIGN1YmljLWJlemllcigwLjI1LCAwLjgsIDAuMjUsIDEpfS5tYXQtc2xpZGVyLXRodW1iLWxhYmVse2Rpc3BsYXk6bm9uZTthbGlnbi1pdGVtczpjZW50ZXI7anVzdGlmeS1jb250ZW50OmNlbnRlcjtwb3NpdGlvbjphYnNvbHV0ZTt3aWR0aDoyOHB4O2hlaWdodDoyOHB4O2JvcmRlci1yYWRpdXM6NTAlO3RyYW5zaXRpb246dHJhbnNmb3JtIDQwMG1zIGN1YmljLWJlemllcigwLjI1LCAwLjgsIDAuMjUsIDEpLGJvcmRlci1yYWRpdXMgNDAwbXMgY3ViaWMtYmV6aWVyKDAuMjUsIDAuOCwgMC4yNSwgMSksYmFja2dyb3VuZC1jb2xvciA0MDBtcyBjdWJpYy1iZXppZXIoMC4yNSwgMC44LCAwLjI1LCAxKX0uY2RrLWhpZ2gtY29udHJhc3QtYWN0aXZlIC5tYXQtc2xpZGVyLXRodW1iLWxhYmVse291dGxpbmU6c29saWQgMXB4fS5tYXQtc2xpZGVyLXRodW1iLWxhYmVsLXRleHR7ei1pbmRleDoxO29wYWNpdHk6MDt0cmFuc2l0aW9uOm9wYWNpdHkgNDAwbXMgY3ViaWMtYmV6aWVyKDAuMjUsIDAuOCwgMC4yNSwgMSl9Lm1hdC1zbGlkZXItc2xpZGluZyAubWF0LXNsaWRlci10cmFjay1maWxsLC5tYXQtc2xpZGVyLXNsaWRpbmcgLm1hdC1zbGlkZXItdHJhY2stYmFja2dyb3VuZCwubWF0LXNsaWRlci1zbGlkaW5nIC5tYXQtc2xpZGVyLXRodW1iLWNvbnRhaW5lcnt0cmFuc2l0aW9uLWR1cmF0aW9uOjBtc30ubWF0LXNsaWRlci1oYXMtdGlja3MgLm1hdC1zbGlkZXItd3JhcHBlcjo6YWZ0ZXJ7Y29udGVudDoiIjtwb3NpdGlvbjphYnNvbHV0ZTtib3JkZXItd2lkdGg6MDtib3JkZXItc3R5bGU6c29saWQ7b3BhY2l0eTowO3RyYW5zaXRpb246b3BhY2l0eSA0MDBtcyBjdWJpYy1iZXppZXIoMC4yNSwgMC44LCAwLjI1LCAxKX0ubWF0LXNsaWRlci1oYXMtdGlja3MuY2RrLWZvY3VzZWQ6bm90KC5tYXQtc2xpZGVyLWhpZGUtbGFzdC10aWNrKSAubWF0LXNsaWRlci13cmFwcGVyOjphZnRlciwubWF0LXNsaWRlci1oYXMtdGlja3M6aG92ZXI6bm90KC5tYXQtc2xpZGVyLWhpZGUtbGFzdC10aWNrKSAubWF0LXNsaWRlci13cmFwcGVyOjphZnRlcntvcGFjaXR5OjF9Lm1hdC1zbGlkZXItaGFzLXRpY2tzLmNkay1mb2N1c2VkOm5vdCgubWF0LXNsaWRlci1kaXNhYmxlZCkgLm1hdC1zbGlkZXItdGlja3MsLm1hdC1zbGlkZXItaGFzLXRpY2tzOmhvdmVyOm5vdCgubWF0LXNsaWRlci1kaXNhYmxlZCkgLm1hdC1zbGlkZXItdGlja3N7b3BhY2l0eToxfS5tYXQtc2xpZGVyLXRodW1iLWxhYmVsLXNob3dpbmcgLm1hdC1zbGlkZXItZm9jdXMtcmluZ3tkaXNwbGF5Om5vbmV9Lm1hdC1zbGlkZXItdGh1bWItbGFiZWwtc2hvd2luZyAubWF0LXNsaWRlci10aHVtYi1sYWJlbHtkaXNwbGF5OmZsZXh9Lm1hdC1zbGlkZXItYXhpcy1pbnZlcnRlZCAubWF0LXNsaWRlci10cmFjay1maWxse3RyYW5zZm9ybS1vcmlnaW46MTAwJSAxMDAlfS5tYXQtc2xpZGVyLWF4aXMtaW52ZXJ0ZWQgLm1hdC1zbGlkZXItdHJhY2stYmFja2dyb3VuZHt0cmFuc2Zvcm0tb3JpZ2luOjAgMH0ubWF0LXNsaWRlcjpub3QoLm1hdC1zbGlkZXItZGlzYWJsZWQpLmNkay1mb2N1c2VkLm1hdC1zbGlkZXItdGh1bWItbGFiZWwtc2hvd2luZyAubWF0LXNsaWRlci10aHVtYnt0cmFuc2Zvcm06c2NhbGUoMCl9Lm1hdC1zbGlkZXI6bm90KC5tYXQtc2xpZGVyLWRpc2FibGVkKS5jZGstZm9jdXNlZCAubWF0LXNsaWRlci10aHVtYi1sYWJlbHtib3JkZXItcmFkaXVzOjUwJSA1MCUgMH0ubWF0LXNsaWRlcjpub3QoLm1hdC1zbGlkZXItZGlzYWJsZWQpLmNkay1mb2N1c2VkIC5tYXQtc2xpZGVyLXRodW1iLWxhYmVsLXRleHR7b3BhY2l0eToxfS5tYXQtc2xpZGVyOm5vdCgubWF0LXNsaWRlci1kaXNhYmxlZCkuY2RrLW1vdXNlLWZvY3VzZWQgLm1hdC1zbGlkZXItdGh1bWIsLm1hdC1zbGlkZXI6bm90KC5tYXQtc2xpZGVyLWRpc2FibGVkKS5jZGstdG91Y2gtZm9jdXNlZCAubWF0LXNsaWRlci10aHVtYiwubWF0LXNsaWRlcjpub3QoLm1hdC1zbGlkZXItZGlzYWJsZWQpLmNkay1wcm9ncmFtLWZvY3VzZWQgLm1hdC1zbGlkZXItdGh1bWJ7Ym9yZGVyLXdpZHRoOjJweDt0cmFuc2Zvcm06c2NhbGUoMSl9Lm1hdC1zbGlkZXItZGlzYWJsZWQgLm1hdC1zbGlkZXItZm9jdXMtcmluZ3t0cmFuc2Zvcm06c2NhbGUoMCk7b3BhY2l0eTowfS5tYXQtc2xpZGVyLWRpc2FibGVkIC5tYXQtc2xpZGVyLXRodW1ie2JvcmRlci13aWR0aDo0cHg7dHJhbnNmb3JtOnNjYWxlKDAuNSl9Lm1hdC1zbGlkZXItZGlzYWJsZWQgLm1hdC1zbGlkZXItdGh1bWItbGFiZWx7ZGlzcGxheTpub25lfS5tYXQtc2xpZGVyLWhvcml6b250YWx7aGVpZ2h0OjQ4cHg7bWluLXdpZHRoOjEyOHB4fS5tYXQtc2xpZGVyLWhvcml6b250YWwgLm1hdC1zbGlkZXItd3JhcHBlcntoZWlnaHQ6MnB4O3RvcDoyM3B4O2xlZnQ6OHB4O3JpZ2h0OjhweH0ubWF0LXNsaWRlci1ob3Jpem9udGFsIC5tYXQtc2xpZGVyLXdyYXBwZXI6OmFmdGVye2hlaWdodDoycHg7Ym9yZGVyLWxlZnQtd2lkdGg6MnB4O3JpZ2h0OjA7dG9wOjB9Lm1hdC1zbGlkZXItaG9yaXpvbnRhbCAubWF0LXNsaWRlci10cmFjay13cmFwcGVye2hlaWdodDoycHg7d2lkdGg6MTAwJX0ubWF0LXNsaWRlci1ob3Jpem9udGFsIC5tYXQtc2xpZGVyLXRyYWNrLWZpbGx7aGVpZ2h0OjJweDt3aWR0aDoxMDAlO3RyYW5zZm9ybTpzY2FsZVgoMCl9Lm1hdC1zbGlkZXItaG9yaXpvbnRhbCAubWF0LXNsaWRlci10cmFjay1iYWNrZ3JvdW5ke2hlaWdodDoycHg7d2lkdGg6MTAwJTt0cmFuc2Zvcm06c2NhbGVYKDEpfS5tYXQtc2xpZGVyLWhvcml6b250YWwgLm1hdC1zbGlkZXItdGlja3MtY29udGFpbmVye2hlaWdodDoycHg7d2lkdGg6MTAwJX0uY2RrLWhpZ2gtY29udHJhc3QtYWN0aXZlIC5tYXQtc2xpZGVyLWhvcml6b250YWwgLm1hdC1zbGlkZXItdGlja3MtY29udGFpbmVye2hlaWdodDowO291dGxpbmU6c29saWQgMnB4O3RvcDoxcHh9Lm1hdC1zbGlkZXItaG9yaXpvbnRhbCAubWF0LXNsaWRlci10aWNrc3toZWlnaHQ6MnB4O3dpZHRoOjEwMCV9Lm1hdC1zbGlkZXItaG9yaXpvbnRhbCAubWF0LXNsaWRlci10aHVtYi1jb250YWluZXJ7d2lkdGg6MTAwJTtoZWlnaHQ6MDt0b3A6NTAlfS5tYXQtc2xpZGVyLWhvcml6b250YWwgLm1hdC1zbGlkZXItZm9jdXMtcmluZ3t0b3A6LTE1cHg7cmlnaHQ6LTE1cHh9Lm1hdC1zbGlkZXItaG9yaXpvbnRhbCAubWF0LXNsaWRlci10aHVtYi1sYWJlbHtyaWdodDotMTRweDt0b3A6LTQwcHg7dHJhbnNmb3JtOnRyYW5zbGF0ZVkoMjZweCkgc2NhbGUoMC4wMSkgcm90YXRlKDQ1ZGVnKX0ubWF0LXNsaWRlci1ob3Jpem9udGFsIC5tYXQtc2xpZGVyLXRodW1iLWxhYmVsLXRleHR7dHJhbnNmb3JtOnJvdGF0ZSgtNDVkZWcpfS5tYXQtc2xpZGVyLWhvcml6b250YWwuY2RrLWZvY3VzZWQgLm1hdC1zbGlkZXItdGh1bWItbGFiZWx7dHJhbnNmb3JtOnJvdGF0ZSg0NWRlZyl9LmNkay1oaWdoLWNvbnRyYXN0LWFjdGl2ZSAubWF0LXNsaWRlci1ob3Jpem9udGFsLmNkay1mb2N1c2VkIC5tYXQtc2xpZGVyLXRodW1iLWxhYmVsLC5jZGstaGlnaC1jb250cmFzdC1hY3RpdmUgLm1hdC1zbGlkZXItaG9yaXpvbnRhbC5jZGstZm9jdXNlZCAubWF0LXNsaWRlci10aHVtYi1sYWJlbC10ZXh0e3RyYW5zZm9ybTpub25lfS5tYXQtc2xpZGVyLXZlcnRpY2Fse3dpZHRoOjQ4cHg7bWluLWhlaWdodDoxMjhweH0ubWF0LXNsaWRlci12ZXJ0aWNhbCAubWF0LXNsaWRlci13cmFwcGVye3dpZHRoOjJweDt0b3A6OHB4O2JvdHRvbTo4cHg7bGVmdDoyM3B4fS5tYXQtc2xpZGVyLXZlcnRpY2FsIC5tYXQtc2xpZGVyLXdyYXBwZXI6OmFmdGVye3dpZHRoOjJweDtib3JkZXItdG9wLXdpZHRoOjJweDtib3R0b206MDtsZWZ0OjB9Lm1hdC1zbGlkZXItdmVydGljYWwgLm1hdC1zbGlkZXItdHJhY2std3JhcHBlcntoZWlnaHQ6MTAwJTt3aWR0aDoycHh9Lm1hdC1zbGlkZXItdmVydGljYWwgLm1hdC1zbGlkZXItdHJhY2stZmlsbHtoZWlnaHQ6MTAwJTt3aWR0aDoycHg7dHJhbnNmb3JtOnNjYWxlWSgwKX0ubWF0LXNsaWRlci12ZXJ0aWNhbCAubWF0LXNsaWRlci10cmFjay1iYWNrZ3JvdW5ke2hlaWdodDoxMDAlO3dpZHRoOjJweDt0cmFuc2Zvcm06c2NhbGVZKDEpfS5tYXQtc2xpZGVyLXZlcnRpY2FsIC5tYXQtc2xpZGVyLXRpY2tzLWNvbnRhaW5lcnt3aWR0aDoycHg7aGVpZ2h0OjEwMCV9LmNkay1oaWdoLWNvbnRyYXN0LWFjdGl2ZSAubWF0LXNsaWRlci12ZXJ0aWNhbCAubWF0LXNsaWRlci10aWNrcy1jb250YWluZXJ7d2lkdGg6MDtvdXRsaW5lOnNvbGlkIDJweDtsZWZ0OjFweH0ubWF0LXNsaWRlci12ZXJ0aWNhbCAubWF0LXNsaWRlci1mb2N1cy1yaW5ne2JvdHRvbTotMTVweDtsZWZ0Oi0xNXB4fS5tYXQtc2xpZGVyLXZlcnRpY2FsIC5tYXQtc2xpZGVyLXRpY2tze3dpZHRoOjJweDtoZWlnaHQ6MTAwJX0ubWF0LXNsaWRlci12ZXJ0aWNhbCAubWF0LXNsaWRlci10aHVtYi1jb250YWluZXJ7aGVpZ2h0OjEwMCU7d2lkdGg6MDtsZWZ0OjUwJX0ubWF0LXNsaWRlci12ZXJ0aWNhbCAubWF0LXNsaWRlci10aHVtYnstd2Via2l0LWJhY2tmYWNlLXZpc2liaWxpdHk6aGlkZGVuO2JhY2tmYWNlLXZpc2liaWxpdHk6aGlkZGVufS5tYXQtc2xpZGVyLXZlcnRpY2FsIC5tYXQtc2xpZGVyLXRodW1iLWxhYmVse2JvdHRvbTotMTRweDtsZWZ0Oi00MHB4O3RyYW5zZm9ybTp0cmFuc2xhdGVYKDI2cHgpIHNjYWxlKDAuMDEpIHJvdGF0ZSgtNDVkZWcpfS5tYXQtc2xpZGVyLXZlcnRpY2FsIC5tYXQtc2xpZGVyLXRodW1iLWxhYmVsLXRleHR7dHJhbnNmb3JtOnJvdGF0ZSg0NWRlZyl9Lm1hdC1zbGlkZXItdmVydGljYWwuY2RrLWZvY3VzZWQgLm1hdC1zbGlkZXItdGh1bWItbGFiZWx7dHJhbnNmb3JtOnJvdGF0ZSgtNDVkZWcpfVtkaXI9cnRsXSAubWF0LXNsaWRlci13cmFwcGVyOjphZnRlcntsZWZ0OjA7cmlnaHQ6YXV0b31bZGlyPXJ0bF0gLm1hdC1zbGlkZXItaG9yaXpvbnRhbCAubWF0LXNsaWRlci10cmFjay1maWxse3RyYW5zZm9ybS1vcmlnaW46MTAwJSAxMDAlfVtkaXI9cnRsXSAubWF0LXNsaWRlci1ob3Jpem9udGFsIC5tYXQtc2xpZGVyLXRyYWNrLWJhY2tncm91bmR7dHJhbnNmb3JtLW9yaWdpbjowIDB9W2Rpcj1ydGxdIC5tYXQtc2xpZGVyLWhvcml6b250YWwubWF0LXNsaWRlci1heGlzLWludmVydGVkIC5tYXQtc2xpZGVyLXRyYWNrLWZpbGx7dHJhbnNmb3JtLW9yaWdpbjowIDB9W2Rpcj1ydGxdIC5tYXQtc2xpZGVyLWhvcml6b250YWwubWF0LXNsaWRlci1heGlzLWludmVydGVkIC5tYXQtc2xpZGVyLXRyYWNrLWJhY2tncm91bmR7dHJhbnNmb3JtLW9yaWdpbjoxMDAlIDEwMCV9Lm1hdC1zbGlkZXIuX21hdC1hbmltYXRpb24tbm9vcGFibGUgLm1hdC1zbGlkZXItdHJhY2stZmlsbCwubWF0LXNsaWRlci5fbWF0LWFuaW1hdGlvbi1ub29wYWJsZSAubWF0LXNsaWRlci10cmFjay1iYWNrZ3JvdW5kLC5tYXQtc2xpZGVyLl9tYXQtYW5pbWF0aW9uLW5vb3BhYmxlIC5tYXQtc2xpZGVyLXRpY2tzLC5tYXQtc2xpZGVyLl9tYXQtYW5pbWF0aW9uLW5vb3BhYmxlIC5tYXQtc2xpZGVyLXRodW1iLWNvbnRhaW5lciwubWF0LXNsaWRlci5fbWF0LWFuaW1hdGlvbi1ub29wYWJsZSAubWF0LXNsaWRlci1mb2N1cy1yaW5nLC5tYXQtc2xpZGVyLl9tYXQtYW5pbWF0aW9uLW5vb3BhYmxlIC5tYXQtc2xpZGVyLXRodW1iLC5tYXQtc2xpZGVyLl9tYXQtYW5pbWF0aW9uLW5vb3BhYmxlIC5tYXQtc2xpZGVyLXRodW1iLWxhYmVsLC5tYXQtc2xpZGVyLl9tYXQtYW5pbWF0aW9uLW5vb3BhYmxlIC5tYXQtc2xpZGVyLXRodW1iLWxhYmVsLXRleHQsLm1hdC1zbGlkZXIuX21hdC1hbmltYXRpb24tbm9vcGFibGUgLm1hdC1zbGlkZXItaGFzLXRpY2tzIC5tYXQtc2xpZGVyLXdyYXBwZXI6OmFmdGVye3RyYW5zaXRpb246bm9uZX1cbiddLGVuY2Fwc3VsYXRpb246MixjaGFuZ2VEZXRlY3Rpb246MH0pLFhXLmN0b3JQYXJhbWV0ZXJzPSgpPT5be3R5cGU6eHV9LHt0eXBlOlRTfSx7dHlwZTpWbX0se3R5cGU6VVMsZGVjb3JhdG9yczpbe3R5cGU6TmV9XX0se3R5cGU6U3RyaW5nLGRlY29yYXRvcnM6W3t0eXBlOkJlLGFyZ3M6WyJ0YWJpbmRleCJdfV19LHt0eXBlOkpffSx7dHlwZTp2b2lkIDAsZGVjb3JhdG9yczpbe3R5cGU6SWUsYXJnczpbekNdfV19LHt0eXBlOlN0cmluZyxkZWNvcmF0b3JzOlt7dHlwZTpOZX0se3R5cGU6SWUsYXJnczpbZGtdfV19XSxYVy5wcm9wRGVjb3JhdG9ycz17aW52ZXJ0Olt7dHlwZTpmX31dLG1heDpbe3R5cGU6Zl99XSxtaW46W3t0eXBlOmZffV0sc3RlcDpbe3R5cGU6Zl99XSx0aHVtYkxhYmVsOlt7dHlwZTpmX31dLHRpY2tJbnRlcnZhbDpbe3R5cGU6Zl99XSx2YWx1ZTpbe3R5cGU6Zl99XSxkaXNwbGF5V2l0aDpbe3R5cGU6Zl99XSx2ZXJ0aWNhbDpbe3R5cGU6Zl99XSxjaGFuZ2U6W3t0eXBlOmhffV0saW5wdXQ6W3t0eXBlOmhffV0sdmFsdWVDaGFuZ2U6W3t0eXBlOmhffV0sX3NsaWRlcldyYXBwZXI6W3t0eXBlOlhkLGFyZ3M6WyJzbGlkZXJXcmFwcGVyIl19XX07Y2xhc3MgS1d7fUtXLsm1bW9kPXhvKHt0eXBlOktXfSksS1cuybVpbmo9R2Uoe2ZhY3Rvcnk6ZnVuY3Rpb24gdChuKXtyZXR1cm4gbmV3KG58fEtXKX0saW1wb3J0czpbW1BPLHRFXSx0RV19KSwoInVuZGVmaW5lZCI9PXR5cGVvZiBuZ0ppdE1vZGV8fG5nSml0TW9kZSkmJnlvKEtXLHtkZWNsYXJhdGlvbnM6ZnVuY3Rpb24oKXtyZXR1cm5bWFddfSxpbXBvcnRzOmZ1bmN0aW9uKCl7cmV0dXJuW1BPLHRFXX0sZXhwb3J0czpmdW5jdGlvbigpe3JldHVybltYVyx0RV19fSk7Y29uc3QgJFc9ezE5OiJmbG9hdDE2IiwxOiJmbG9hdDMyIiwyOiJmbG9hdDY0IiwzOiJpbnQzMiIsNDoidWludDgiLDE3OiJ1aW50MTYiLDIyOiJ1aW50MzIiLDIzOiJ1aW50NjQiLDU6ImludDE2Iiw2OiJpbnQ4Iiw3OiJzdHJpbmciLDg6ImNvbXBsZXg2NCIsMTg6ImNvbXBsZXgxMjgiLDk6ImludDY0IiwxMDoiYm9vbCIsMTE6InFpbnQ4IiwxMjoicXVpbnQ4IiwxNToicWludDE2IiwxNjoicXVpbnQxNiIsMTM6InFpbnQzMiIsMTQ6ImJmbG9hdDE2IiwyMDoicmVzb3VyY2UiLDIxOiJ2YXJpYW50IiwxMTk6ImZsb2F0MTZfcmVmIiwxMDE6ImZsb2F0MzJfcmVmIiwxMDI6ImZsb2F0NjRfcmVmIiwxMDM6ImludDMyX3JlZiIsMTIyOiJ1aW50MzJfcmVmIiwxMDQ6InVpbnQ4X3JlZiIsMTE3OiJ1aW50MTZfcmVmIiwxMDU6ImludDE2X3JlZiIsMTA2OiJpbnQ4X3JlZiIsMTA3OiJzdHJpbmdfcmVmIiwxMDg6ImNvbXBsZXg2NF9yZWYiLDExODoiY29tcGxleDEyOF9yZWYiLDEwOToiaW50NjRfcmVmIiwxMjM6InVpbnQ2NF9yZWYiLDExMDoiYm9vbF9yZWYiLDExMToicWludDhfcmVmIiwxMTI6InF1aW50OF9yZWYiLDExNToicWludDE2X3JlZiIsMTE2OiJxdWludDE2X3JlZiIsMTEzOiJxaW50MzJfcmVmIiwxMTQ6ImJmbG9hdDE2X3JlZiIsMTIwOiJyZXNvdXJjZV9yZWYiLDEyMToidmFyaWFudF9yZWYifTtmdW5jdGlvbiB0Ryh0KXtjb25zdHt0ZW5zb3JEZWJ1Z01vZGU6bixhcnJheTplfT10O3N3aXRjaChuKXtjYXNlIHpVLk5PX1RFTlNPUjppZihudWxsIT09ZSl0aHJvdyBuZXcgRXJyb3IoIlVuZXhwZWN0ZWRseSByZWNlaXZlZCBub24tbnVsbCBkZWJ1Zy10ZW5zb3ItdmFsdWUgYXJyYXkgdW5kZXIgTk9fVEVOU09SIG1vZGUiKTtyZXR1cm57fTtjYXNlIHpVLkNVUlRfSEVBTFRIOmlmKG51bGw9PT1lfHwyIT09ZS5sZW5ndGgpdGhyb3cgbmV3IEVycm9yKGBVbmRlciBDVVJUX0hFQUxUSCBtb2RlLCBleHBlY3RlZCBkZWJ1Zy10ZW5zb3ItdmFsdWUgYXJyYXkgdG8gaGF2ZSBsZW5ndGggMiwgYnV0IGdvdCAke0pTT04uc3RyaW5naWZ5KGUpfWApO3JldHVybntoYXNJbmZPck5hTjpCb29sZWFuKGVbMV0pfTtjYXNlIHpVLkNPTkNJU0VfSEVBTFRIOntpZihudWxsPT09ZXx8NSE9PWUubGVuZ3RoKXRocm93IG5ldyBFcnJvcihgVW5kZXIgQ09OQ0lTRV9IRUFMVEggbW9kZSwgZXhwZWN0ZWQgZGVidWctdGVuc29yLXZhbHVlIGFycmF5IHRvIGhhdmUgbGVuZ3RoIDUsIGJ1dCBnb3QgJHtKU09OLnN0cmluZ2lmeShlKX1gKTtjb25zdCB0PXtzaXplOmVbMV19O3JldHVybiBlWzJdPjAmJih0Lm51bU5lZ2F0aXZlSW5mcz1lWzJdKSxlWzNdPjAmJih0Lm51bVBvc2l0aXZlSW5mcz1lWzNdKSxlWzRdPjAmJih0Lm51bU5hTnM9ZVs0XSksdH1jYXNlIHpVLlNIQVBFOntpZihudWxsPT09ZXx8MTAhPT1lLmxlbmd0aCl0aHJvdyBuZXcgRXJyb3IoYFVuZGVyIFNIQVBFIG1vZGUsIGV4cGVjdGVkIGRlYnVnLXRlbnNvci12YWx1ZSBhcnJheSB0byBoYXZlIGxlbmd0aCAxMCwgYnV0IGdvdCAke0pTT04uc3RyaW5naWZ5KGUpfWApO2NvbnN0IHQ9ZVsyXTtsZXQgbj1lLnNsaWNlKDQsTWF0aC5taW4oNCt0LGUubGVuZ3RoKSk7cmV0dXJuIG4ubGVuZ3RoPHQmJihuPW5ldyBBcnJheSh0LW4ubGVuZ3RoKS5jb25jYXQobikpLHtkdHlwZTokV1tlWzFdXSxyYW5rOnQsc2l6ZTplWzNdLHNoYXBlOm59fWNhc2UgelUuRlVMTF9IRUFMVEg6e2lmKG51bGw9PT1lfHwxMSE9PWUubGVuZ3RoKXRocm93IG5ldyBFcnJvcihgVW5kZXIgRlVMTF9IRUFMVEggbW9kZSwgZXhwZWN0ZWQgZGVidWctdGVuc29yLXZhbHVlIGFycmF5IHRvIGhhdmUgbGVuZ3RoIDExLCBidXQgZ290ICR7SlNPTi5zdHJpbmdpZnkoZSl9YCk7Y29uc3QgdD17ZHR5cGU6JFdbZVsyXV0scmFuazplWzNdLHNpemU6ZVs0XX07cmV0dXJuIGVbNV0+MCYmKHQubnVtTmVnYXRpdmVJbmZzPWVbNV0pLGVbNl0+MCYmKHQubnVtUG9zaXRpdmVJbmZzPWVbNl0pLGVbN10+MCYmKHQubnVtTmFOcz1lWzddKSxlWzhdPjAmJih0Lm51bU5lZ2F0aXZlRmluaXRlcz1lWzhdKSxlWzldPjAmJih0Lm51bVplcm9zPWVbOV0pLGVbMTBdPjAmJih0Lm51bVBvc2l0aXZlRmluaXRlcz1lWzEwXSksdH1jYXNlIHpVLkZVTExfVEVOU09SOmlmKG51bGwhPT1lKXRocm93IG5ldyBFcnJvcigiVW5leHBlY3RlZGx5IHJlY2VpdmVkIG5vbi1udWxsIGRlYnVnLXRlbnNvci12YWx1ZSBhcnJheSB1bmRlciBGVUxMX1RFTlNPUiBtb2RlIik7cmV0dXJue307ZGVmYXVsdDp0aHJvdyBuZXcgRXJyb3IoYFVucmVjb2duaXplZCB0ZW5zb3JEZWJ1Z01vZGU6ICR7bn1gKX19Y29uc3Qgbkc9Iltfbmdob3N0LSVDT01QJV0ge1xuICAgIGJhY2tncm91bmQtY29sb3I6ICNlM2U1ZTg7XG4gICAgYm9yZGVyOiAxcHggc29saWQgI2MwYzBjMDtcbiAgICBib3JkZXItcmFkaXVzOiA0cHg7XG4gICAgZm9udC1mYW1pbHk6ICdSb2JvdG8gTW9ubycsIG1vbm9zcGFjZTtcbiAgICBoZWlnaHQ6IDE0cHg7XG4gICAgbGluZS1oZWlnaHQ6IDE0cHg7XG4gICAgbWFyZ2luOiAwIDJweDtcbiAgICBwYWRkaW5nOiAxcHggM3B4O1xuICAgIHdpZHRoOiBtYXgtY29udGVudDtcbiAgfSI7ZnVuY3Rpb24gZUcodCxuKXsxJnQmJnRwKDAsImRpdiIsNCl9ZnVuY3Rpb24gYUcodCxuKXtpZigxJnQmJihLZygwLCJkaXYiLDcpLEtnKDEsInNwYW4iLDgpLEpwKDIsIk5hTiIpLCRnKCksS2coMywic3BhbiIsOSksSnAoNCksJGcoKSwkZygpKSwyJnQpe2NvbnN0IHQ9Z3AoMik7d3MoNCksS3AoIsOXIix0Lm51bU5hTnMsIiIpfX1mdW5jdGlvbiBvRyh0LG4pe2lmKDEmdCYmKEtnKDAsImRpdiIsNyksS2coMSwic3BhbiIsOCksSnAoMiwiLeKIniIpLCRnKCksS2coMywic3BhbiIsOSksSnAoNCksJGcoKSwkZygpKSwyJnQpe2NvbnN0IHQ9Z3AoMik7d3MoNCksS3AoIsOXIix0Lm51bU5lZ2F0aXZlSW5mcywiIil9fWZ1bmN0aW9uIHJHKHQsbil7aWYoMSZ0JiYoS2coMCwiZGl2Iiw3KSxLZygxLCJzcGFuIiw4KSxKcCgyLCIr4oieIiksJGcoKSxLZygzLCJzcGFuIiw5KSxKcCg0KSwkZygpLCRnKCkpLDImdCl7Y29uc3QgdD1ncCgyKTt3cyg0KSxLcCgiw5ciLHQubnVtUG9zaXRpdmVJbmZzLCIiKX19ZnVuY3Rpb24gaUcodCxuKXtpZigxJnQmJihLZygwLCJkaXYiLDcpLEtnKDEsInNwYW4iLDEwKSxKcCgyLCItIiksJGcoKSxLZygzLCJzcGFuIiw5KSxKcCg0KSwkZygpLCRnKCkpLDImdCl7Y29uc3QgdD1ncCgyKTt3cyg0KSxLcCgiw5ciLHQubnVtTmVnYXRpdmVGaW5pdGVzLCIiKX19ZnVuY3Rpb24gY0codCxuKXtpZigxJnQmJihLZygwLCJkaXYiLDcpLEtnKDEsInNwYW4iLDEwKSxKcCgyLCIwIiksJGcoKSxLZygzLCJzcGFuIiw5KSxKcCg0KSwkZygpLCRnKCkpLDImdCl7Y29uc3QgdD1ncCgyKTt3cyg0KSxLcCgiw5ciLHQubnVtWmVyb3MsIiIpfX1mdW5jdGlvbiBzRyh0LG4pe2lmKDEmdCYmKEtnKDAsImRpdiIsNyksS2coMSwic3BhbiIsMTApLEpwKDIsIisiKSwkZygpLEtnKDMsInNwYW4iLDkpLEpwKDQpLCRnKCksJGcoKSksMiZ0KXtjb25zdCB0PWdwKDIpO3dzKDQpLEtwKCLDlyIsdC5udW1Qb3NpdGl2ZUZpbml0ZXMsIiIpfX1mdW5jdGlvbiBsRyh0LG4pe2lmKDEmdCYmKEtnKDAsImRpdiIsNSksWWcoMSxhRyw1LDEsImRpdiIsNiksWWcoMixvRyw1LDEsImRpdiIsNiksWWcoMyxyRyw1LDEsImRpdiIsNiksWWcoNCxpRyw1LDEsImRpdiIsNiksWWcoNSxjRyw1LDEsImRpdiIsNiksWWcoNixzRyw1LDEsImRpdiIsNiksJGcoKSksMiZ0KXtjb25zdCB0PWdwKCk7d3MoMSksSmcoIm5nSWYiLHZvaWQgMCE9PXQubnVtTmFOcyYmdC5udW1OYU5zPjApLHdzKDEpLEpnKCJuZ0lmIix2b2lkIDAhPT10Lm51bU5lZ2F0aXZlSW5mcyYmdC5udW1OZWdhdGl2ZUluZnM+MCksd3MoMSksSmcoIm5nSWYiLHZvaWQgMCE9PXQubnVtUG9zaXRpdmVJbmZzJiZ0Lm51bVBvc2l0aXZlSW5mcz4wKSx3cygxKSxKZygibmdJZiIsdm9pZCAwIT09dC5udW1OZWdhdGl2ZUZpbml0ZXMmJnQubnVtTmVnYXRpdmVGaW5pdGVzPjApLHdzKDEpLEpnKCJuZ0lmIix2b2lkIDAhPT10Lm51bVplcm9zJiZ0Lm51bVplcm9zPjApLHdzKDEpLEpnKCJuZ0lmIix2b2lkIDAhPT10Lm51bVBvc2l0aXZlRmluaXRlcyYmdC5udW1Qb3NpdGl2ZUZpbml0ZXM+MCl9fWNvbnN0IG1HPWZ1bmN0aW9uKHQpe3JldHVyblsiY29udGFpbmVyIix0XX07ZnVuY3Rpb24gZEcodCxuKXsxJnQmJnRwKDAsImRlYnVnLXRlbnNvci1kdHlwZSIsNSksMiZ0JiZKZygiZHR5cGUiLGdwKCkuZGVidWdUZW5zb3JWYWx1ZS5kdHlwZSl9ZnVuY3Rpb24gZ0codCxuKXsxJnQmJnRwKDAsImRlYnVnLXRlbnNvci1yYW5rIiw2KSwyJnQmJkpnKCJyYW5rIixncCgpLmRlYnVnVGVuc29yVmFsdWUucmFuayl9ZnVuY3Rpb24gcEcodCxuKXsxJnQmJnRwKDAsImRlYnVnLXRlbnNvci1zaGFwZSIsNyksMiZ0JiZKZygic2hhcGUiLGdwKCkuZGVidWdUZW5zb3JWYWx1ZS5zaGFwZSl9ZnVuY3Rpb24gYkcodCxuKXsxJnQmJnRwKDAsImRlYnVnLXRlbnNvci1oYXMtaW5mLW9yLW5hbiIsOCksMiZ0JiZKZygiaGFzSW5mT3JOYU4iLGdwKCkuZGVidWdUZW5zb3JWYWx1ZS5oYXNJbmZPck5hTil9ZnVuY3Rpb24gdUcodCxuKXtpZigxJnQmJnRwKDAsImRlYnVnLXRlbnNvci1udW1lcmljLWJyZWFrZG93biIsOSksMiZ0KXtjb25zdCB0PWdwKCk7X3AoInNpemUiLHQuZGVidWdUZW5zb3JWYWx1ZS5zaXplKSxKZygibnVtTmVnYXRpdmVJbmZzIix0LmRlYnVnVGVuc29yVmFsdWUubnVtTmVnYXRpdmVJbmZzKSgibnVtUG9zaXRpdmVJbmZzIix0LmRlYnVnVGVuc29yVmFsdWUubnVtUG9zaXRpdmVJbmZzKSgibnVtTmFOcyIsdC5kZWJ1Z1RlbnNvclZhbHVlLm51bU5hTnMpKCJudW1OZWdhdGl2ZUZpbml0ZXMiLHQuZGVidWdUZW5zb3JWYWx1ZS5udW1OZWdhdGl2ZUZpbml0ZXMpKCJudW1aZXJvcyIsdC5kZWJ1Z1RlbnNvclZhbHVlLm51bVplcm9zKSgibnVtUG9zaXRpdmVGaW5pdGVzIix0LmRlYnVnVGVuc29yVmFsdWUubnVtUG9zaXRpdmVGaW5pdGVzKX19Y2xhc3MgZkd7fWZHLsm1ZmFjPWZ1bmN0aW9uIHQobil7cmV0dXJuIG5ldyhufHxmRyl9LGZHLsm1Y21wPV9vKHt0eXBlOmZHLHNlbGVjdG9yczpbWyJkZWJ1Zy10ZW5zb3ItZHR5cGUiXV0saW5wdXRzOntkdHlwZToiZHR5cGUifSxkZWNsczoxLHZhcnM6MSx0ZW1wbGF0ZTpmdW5jdGlvbiB0KG4sZSl7MSZuJiZKcCgwKSwyJm4mJktwKCIgIixlLmR0eXBlLCIgIil9LHN0eWxlczpbbkddfSk7Y2xhc3MgaEd7fWhHLsm1ZmFjPWZ1bmN0aW9uIHQobil7cmV0dXJuIG5ldyhufHxoRyl9LGhHLsm1Y21wPV9vKHt0eXBlOmhHLHNlbGVjdG9yczpbWyJkZWJ1Zy10ZW5zb3ItcmFuayJdXSxpbnB1dHM6e3Jhbms6InJhbmsifSxkZWNsczoxLHZhcnM6MSx0ZW1wbGF0ZTpmdW5jdGlvbiB0KG4sZSl7MSZuJiZKcCgwKSwyJm4mJktwKCIgIixlLnJhbmssIkQgIil9LHN0eWxlczpbbkddfSk7Y2xhc3MgX0d7Z2V0IHNoYXBlU3RyaW5nKCl7cmV0dXJuIlsiK3RoaXMuc2hhcGUubWFwKCh0PT52b2lkIDA9PT10PyI/IjpTdHJpbmcodCkpKS5qb2luKCIsIikrIl0ifX1fRy7JtWZhYz1mdW5jdGlvbiB0KG4pe3JldHVybiBuZXcobnx8X0cpfSxfRy7JtWNtcD1fbyh7dHlwZTpfRyxzZWxlY3RvcnM6W1siZGVidWctdGVuc29yLXNoYXBlIl1dLGlucHV0czp7c2hhcGU6InNoYXBlIn0sZGVjbHM6MSx2YXJzOjEsdGVtcGxhdGU6ZnVuY3Rpb24gdChuLGUpezEmbiYmSnAoMCksMiZuJiZLcCgiIHNoYXBlOiIsZS5zaGFwZVN0cmluZywiICIpfSxzdHlsZXM6W25HXX0pO2NsYXNzIENHe2dldCBicmVha2Rvd25FeGlzdHMoKXtyZXR1cm4gdm9pZCAwIT09dGhpcy5udW1OYU5zfHx2b2lkIDAhPT10aGlzLm51bU5lZ2F0aXZlSW5mc3x8dm9pZCAwIT09dGhpcy5udW1Qb3NpdGl2ZUluZnN8fHZvaWQgMCE9PXRoaXMubnVtTmVnYXRpdmVGaW5pdGVzfHx2b2lkIDAhPT10aGlzLm51bVplcm9zfHx2b2lkIDAhPT10aGlzLm51bVBvc2l0aXZlRmluaXRlc319Q0cuybVmYWM9ZnVuY3Rpb24gdChuKXtyZXR1cm4gbmV3KG58fENHKX0sQ0cuybVjbXA9X28oe3R5cGU6Q0csc2VsZWN0b3JzOltbImRlYnVnLXRlbnNvci1udW1lcmljLWJyZWFrZG93biJdXSxpbnB1dHM6e3NpemU6InNpemUiLG51bU5hTnM6Im51bU5hTnMiLG51bU5lZ2F0aXZlSW5mczoibnVtTmVnYXRpdmVJbmZzIixudW1Qb3NpdGl2ZUluZnM6Im51bVBvc2l0aXZlSW5mcyIsbnVtTmVnYXRpdmVGaW5pdGVzOiJudW1OZWdhdGl2ZUZpbml0ZXMiLG51bVplcm9zOiJudW1aZXJvcyIsbnVtUG9zaXRpdmVGaW5pdGVzOiJudW1Qb3NpdGl2ZUZpbml0ZXMifSxkZWNsczo3LHZhcnM6Myxjb25zdHM6W1sxLCJzaXplIl0sWzEsInNpemUtdmFsdWUiXSxbImNsYXNzIiwiYnJlYWsiLDQsIm5nSWYiXSxbImNsYXNzIiwiYnJlYWtkb3duIiw0LCJuZ0lmIl0sWzEsImJyZWFrIl0sWzEsImJyZWFrZG93biJdLFsiY2xhc3MiLCJjYXRlZ29yeSIsNCwibmdJZiJdLFsxLCJjYXRlZ29yeSJdLFsxLCJjYXRlZ29yeS10YWciLCJpbmZpbml0ZSJdLFsxLCJjYXRlZ29yeS1jb3VudCJdLFsxLCJjYXRlZ29yeS10YWciLCJmaW5pdGUiXV0sdGVtcGxhdGU6ZnVuY3Rpb24gdChuLGUpezEmbiYmKEtnKDAsImRpdiIsMCksS2coMSwic3BhbiIpLEpwKDIsInNpemU6IiksJGcoKSxLZygzLCJzcGFuIiwxKSxKcCg0KSwkZygpLCRnKCksWWcoNSxlRywxLDAsImRpdiIsMiksWWcoNixsRyw3LDYsImRpdiIsMykpLDImbiYmKHdzKDQpLFFwKGUuc2l6ZSksd3MoMSksSmcoIm5nSWYiLGUuYnJlYWtkb3duRXhpc3RzKSx3cygxKSxKZygibmdJZiIsZS5icmVha2Rvd25FeGlzdHMpKX0sZGlyZWN0aXZlczpbV01dLHN0eWxlczpbIltfbmdob3N0LSVDT01QJV0ge1xuICAgICAgICBiYWNrZ3JvdW5kLWNvbG9yOiAjZTNlNWU4O1xuICAgICAgICBib3JkZXI6IDFweCBzb2xpZCAjYzBjMGMwO1xuICAgICAgICBib3JkZXItcmFkaXVzOiA0cHg7XG4gICAgICAgIGZvbnQtZmFtaWx5OiAnUm9ib3RvIE1vbm8nLCBtb25vc3BhY2U7XG4gICAgICAgIGZvbnQtc2l6ZTogMTBweDtcbiAgICAgICAgbWFyZ2luOiAwIDJweDtcbiAgICAgICAgcGFkZGluZzogMXB4O1xuICAgICAgfVxuICAgICAgLmJyZWFrW19uZ2NvbnRlbnQtJUNPTVAlXSB7XG4gICAgICAgIGZsZXgtYmFzaXM6IDEwMCU7XG4gICAgICAgIHdpZHRoOiAwO1xuICAgICAgfVxuICAgICAgLnNpemVbX25nY29udGVudC0lQ09NUCVdIHtcbiAgICAgICAgZGlzcGxheTogYmxvY2s7XG4gICAgICAgIGhlaWdodDogMTFweDtcbiAgICAgICAgbGluZS1oZWlnaHQ6IDExcHg7XG4gICAgICAgIG1hcmdpbjogMCAzcHg7XG4gICAgICAgIHZlcnRpY2FsLWFsaWduOiBtaWRkbGU7XG4gICAgICB9XG4gICAgICAuYnJlYWtkb3duW19uZ2NvbnRlbnQtJUNPTVAlXSB7XG4gICAgICAgIGJvcmRlci10b3A6IDFweCBzb2xpZCByZ2JhKDAsIDAsIDAsIDAuMTIpO1xuICAgICAgICBkaXNwbGF5OiBmbGV4O1xuICAgICAgICBoZWlnaHQ6IDExcHg7XG4gICAgICAgIGxpbmUtaGVpZ2h0OiAxMXB4O1xuICAgICAgICBwYWRkaW5nOiAycHg7XG4gICAgICAgIHZlcnRpY2FsLWFsaWduOiBtaWRkbGU7XG4gICAgICB9XG4gICAgICAuY2F0ZWdvcnlbX25nY29udGVudC0lQ09NUCVdIHtcbiAgICAgICAgbWFyZ2luLWJvdHRvbTogMnB4O1xuICAgICAgICBtYXJnaW4tbGVmdDogNHB4O1xuICAgICAgICBtYXJnaW4tdG9wOiAycHg7XG4gICAgICAgIGhlaWd0aDogMTAwJTtcbiAgICAgICAgd2lkdGg6IG1heC1jb250ZW50O1xuICAgICAgfVxuICAgICAgLmNhdGVnb3J5LXRhZ1tfbmdjb250ZW50LSVDT01QJV0ge1xuICAgICAgICBib3JkZXItcmFkaXVzOiAycHg7XG4gICAgICAgIHBhZGRpbmc6IDAgMnB4O1xuICAgICAgfVxuICAgICAgLmZpbml0ZVtfbmdjb250ZW50LSVDT01QJV0ge1xuICAgICAgICBiYWNrZ3JvdW5kLWNvbG9yOiAjYWFhO1xuICAgICAgICBjb2xvcjogI2ZlZmVmZTtcbiAgICAgIH1cbiAgICAgIC5pbmZpbml0ZVtfbmdjb250ZW50LSVDT01QJV0ge1xuICAgICAgICBiYWNrZ3JvdW5kLWNvbG9yOiAjZTUyNTkyO1xuICAgICAgICBjb2xvcjogI2ZmZjtcbiAgICAgIH0iXX0pO2NsYXNzIE1He2dldCBpbmZvU3RyaW5nKCl7cmV0dXJuIHRoaXMuaGFzSW5mT3JOYU4/IkhhcyDiiJ4vTmFOIjoiTm8g4oieL05hTiJ9fU1HLsm1ZmFjPWZ1bmN0aW9uIHQobil7cmV0dXJuIG5ldyhufHxNRyl9LE1HLsm1Y21wPV9vKHt0eXBlOk1HLHNlbGVjdG9yczpbWyJkZWJ1Zy10ZW5zb3ItaGFzLWluZi1vci1uYW4iXV0saW5wdXRzOntoYXNJbmZPck5hTjoiaGFzSW5mT3JOYU4ifSxkZWNsczoyLHZhcnM6NCxjb25zdHM6W1szLCJuZ0NsYXNzIl1dLHRlbXBsYXRlOmZ1bmN0aW9uIHQobixlKXsxJm4mJihLZygwLCJkaXYiLDApLEpwKDEpLCRnKCkpLDImbiYmKEpnKCJuZ0NsYXNzIix1ZigyLG1HLGUuaGFzSW5mT3JOYU4/Imhhcy1pbmYtb3ItbmFuIjoiIikpLHdzKDEpLEtwKCIgIixlLmluZm9TdHJpbmcsIiAiKSl9LGRpcmVjdGl2ZXM6W0hNXSxzdHlsZXM6WyIuY29udGFpbmVyW19uZ2NvbnRlbnQtJUNPTVAlXSB7XG4gICAgICAgIGJhY2tncm91bmQtY29sb3I6ICNlM2U1ZTg7XG4gICAgICAgIGJvcmRlcjogMXB4IHNvbGlkICNjMGMwYzA7XG4gICAgICAgIGJvcmRlci1yYWRpdXM6IDRweDtcbiAgICAgICAgY29sb3I6ICM2NjY2NjY7XG4gICAgICAgIGZvbnQtZmFtaWx5OiAnUm9ib3RvIE1vbm8nLCBtb25vc3BhY2U7XG4gICAgICAgIGhlaWdodDogMTRweDtcbiAgICAgICAgbGluZS1oZWlnaHQ6IDE0cHg7XG4gICAgICAgIG1hcmdpbjogMCAycHg7XG4gICAgICAgIHBhZGRpbmc6IDFweCAzcHg7XG4gICAgICAgIHdpZHRoOiBtYXgtY29udGVudDtcbiAgICAgIH1cbiAgICAgIC5oYXMtaW5mLW9yLW5hbltfbmdjb250ZW50LSVDT01QJV0ge1xuICAgICAgICBiYWNrZ3JvdW5kLWNvbG9yOiAjZTUyNTkyO1xuICAgICAgICBjb2xvcjogI2ZmZjtcbiAgICAgIH0iXX0pO2NsYXNzIE9He31PRy7JtWZhYz1mdW5jdGlvbiB0KG4pe3JldHVybiBuZXcobnx8T0cpfSxPRy7JtWNtcD1fbyh7dHlwZTpPRyxzZWxlY3RvcnM6W1siZGVidWctdGVuc29yLXZhbHVlIl1dLGlucHV0czp7ZGVidWdUZW5zb3JWYWx1ZToiZGVidWdUZW5zb3JWYWx1ZSJ9LGRlY2xzOjUsdmFyczo1LGNvbnN0czpbWzMsImR0eXBlIiw0LCJuZ0lmIl0sWzMsInJhbmsiLDQsIm5nSWYiXSxbMywic2hhcGUiLDQsIm5nSWYiXSxbMywiaGFzSW5mT3JOYU4iLDQsIm5nSWYiXSxbMywic2l6ZSIsIm51bU5lZ2F0aXZlSW5mcyIsIm51bVBvc2l0aXZlSW5mcyIsIm51bU5hTnMiLCJudW1OZWdhdGl2ZUZpbml0ZXMiLCJudW1aZXJvcyIsIm51bVBvc2l0aXZlRmluaXRlcyIsNCwibmdJZiJdLFszLCJkdHlwZSJdLFszLCJyYW5rIl0sWzMsInNoYXBlIl0sWzMsImhhc0luZk9yTmFOIl0sWzMsInNpemUiLCJudW1OZWdhdGl2ZUluZnMiLCJudW1Qb3NpdGl2ZUluZnMiLCJudW1OYU5zIiwibnVtTmVnYXRpdmVGaW5pdGVzIiwibnVtWmVyb3MiLCJudW1Qb3NpdGl2ZUZpbml0ZXMiXV0sdGVtcGxhdGU6ZnVuY3Rpb24gdChuLGUpezEmbiYmKFlnKDAsZEcsMSwxLCJkZWJ1Zy10ZW5zb3ItZHR5cGUiLDApLFlnKDEsZ0csMSwxLCJkZWJ1Zy10ZW5zb3ItcmFuayIsMSksWWcoMixwRywxLDEsImRlYnVnLXRlbnNvci1zaGFwZSIsMiksWWcoMyxiRywxLDEsImRlYnVnLXRlbnNvci1oYXMtaW5mLW9yLW5hbiIsMyksWWcoNCx1RywxLDcsImRlYnVnLXRlbnNvci1udW1lcmljLWJyZWFrZG93biIsNCkpLDImbiYmKEpnKCJuZ0lmIix2b2lkIDAhPT1lLmRlYnVnVGVuc29yVmFsdWUuZHR5cGUpLHdzKDEpLEpnKCJuZ0lmIix2b2lkIDAhPT1lLmRlYnVnVGVuc29yVmFsdWUucmFuayksd3MoMSksSmcoIm5nSWYiLHZvaWQgMCE9PWUuZGVidWdUZW5zb3JWYWx1ZS5zaGFwZSksd3MoMSksSmcoIm5nSWYiLHZvaWQgMCE9PWUuZGVidWdUZW5zb3JWYWx1ZS5oYXNJbmZPck5hTiksd3MoMSksSmcoIm5nSWYiLHZvaWQgMCE9PWUuZGVidWdUZW5zb3JWYWx1ZS5zaXplKSl9LGRpcmVjdGl2ZXM6W1dNLGZHLGhHLF9HLE1HLENHXSxzdHlsZXM6WyJbX25naG9zdC0lQ09NUCVdIHtcbiAgICAgICAgYWxpZ24taXRlbXM6IGZsZXgtc3RhcnQ7XG4gICAgICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgICAgIGZsZXgtd3JhcDogbm93cmFwO1xuICAgICAgICBvdmVyZmxvdzogaGlkZGVuO1xuICAgICAgICB2ZXJ0aWNhbC1hbGlnbjogdG9wO1xuICAgICAgfVxuICAgICAgZGVidWctdGVuc29yLW51bWVyaWMtYnJlYWtkb3duW19uZ2NvbnRlbnQtJUNPTVAlXSB7XG4gICAgICAgIGRpc3BsYXk6IGlubGluZS1ibG9jaztcbiAgICAgIH0iXX0pO2NvbnN0IFBHPWZ1bmN0aW9uKHQsbil7cmV0dXJue3RlbnNvckRlYnVnTW9kZTp0LGFycmF5Om59fTtmdW5jdGlvbiB4Ryh0LG4pe2lmKDEmdCYmKEtnKDAsImRpdiIsMTIpLEtnKDEsImRpdiIsMTMpLEpwKDIpLCRnKCksS2coMywiZGl2IiwxNCksdHAoNCwiZGVidWctdGVuc29yLXZhbHVlIiwxNSksJGcoKSwkZygpKSwyJnQpe2NvbnN0IHQ9bi4kaW1wbGljaXQsZT1uLmluZGV4LGE9Z3AoMyk7d3MoMiksS3AoIk91dHB1dCBzbG90ICIsZSwiOiIpLHdzKDIpLEpnKCJkZWJ1Z1RlbnNvclZhbHVlIixhLnBhcnNlRGVidWdUZW5zb3JWYWx1ZShmZigyLFBHLGEudGVuc29yRGVidWdNb2RlLHQpKSl9fWZ1bmN0aW9uIHlHKHQsbil7aWYoMSZ0JiYoS2coMCwiZGl2IiwxMCksWWcoMSx4Ryw1LDUsImRpdiIsMTEpLCRnKCkpLDImdCl7Y29uc3QgdD1ncCgyKTt3cygxKSxKZygibmdGb3JPZiIsdC5kZWJ1Z1RlbnNvclZhbHVlcyl9fWZ1bmN0aW9uIGtHKHQsbil7aWYoMSZ0JiYoS2coMCwiZGl2IiksS2coMSwiZGl2IiksS2coMiwiZGl2IiwzKSxLZygzLCJzcGFuIiw0KSxKcCg0LCIgT3A6ICIpLCRnKCksS2coNSwic3BhbiIsNSksSnAoNiksJGcoKSwkZygpLEtnKDcsImRpdiIsMyksS2coOCwic3BhbiIsNCksSnAoOSwiICMgb2YgaW5wdXQgdGVuc29yczogIiksJGcoKSxLZygxMCwic3BhbiIsNiksSnAoMTEpLCRnKCksJGcoKSxLZygxMiwiZGl2IiwzKSxLZygxMywic3BhbiIsNCksSnAoMTQsIiAjIG9mIG91dHB1dCB0ZW5zb3JzOiAiKSwkZygpLEtnKDE1LCJzcGFuIiw3KSxKcCgxNiksJGcoKSxLZygxNywic3BhbiIsOCksSnAoMTgpLCRnKCksJGcoKSxZZygxOSx5RywyLDEsImRpdiIsOSksJGcoKSwkZygpKSwyJnQpe2NvbnN0IHQ9Z3AoKTt3cyg2KSxLcCgiICIsdC5mb2N1c2VkRXhlY3V0aW9uRGF0YS5vcF90eXBlLCIgIiksd3MoNSksS3AoIiAiLG51bGw9PXQuZm9jdXNlZEV4ZWN1dGlvbkRhdGEuaW5wdXRfdGVuc29yX2lkcz8wOnQuZm9jdXNlZEV4ZWN1dGlvbkRhdGEuaW5wdXRfdGVuc29yX2lkcy5sZW5ndGgsIiAiKSx3cyg1KSxLcCgiICIsbnVsbD09dC5mb2N1c2VkRXhlY3V0aW9uRGF0YS5vdXRwdXRfdGVuc29yX2lkcz8wOnQuZm9jdXNlZEV4ZWN1dGlvbkRhdGEub3V0cHV0X3RlbnNvcl9pZHMubGVuZ3RoLCIgIiksd3MoMiksS3AoIiAoZGVidWcgbW9kZTogIix0LlRlbnNvckRlYnVnTW9kZVt0LnRlbnNvckRlYnVnTW9kZV0sIikgIiksd3MoMSksSmcoIm5nSWYiLHQuaGFzRGVidWdUZW5zb3JWYWx1ZXMpfX1mdW5jdGlvbiB2Ryh0LG4pe31jbGFzcyB3R3tjb25zdHJ1Y3Rvcigpe3RoaXMudGVuc29yRGVidWdNb2RlPXpVLlVOU1BFQ0lGSUVELHRoaXMuaGFzRGVidWdUZW5zb3JWYWx1ZXM9ITEsdGhpcy5kZWJ1Z1RlbnNvclZhbHVlcz1udWxsLHRoaXMuZGVidWdUZW5zb3JEdHlwZXM9bnVsbCx0aGlzLlRlbnNvckRlYnVnTW9kZT16VSx0aGlzLnBhcnNlRGVidWdUZW5zb3JWYWx1ZT10R319d0cuybVmYWM9ZnVuY3Rpb24gdChuKXtyZXR1cm4gbmV3KG58fHdHKX0sd0cuybVjbXA9X28oe3R5cGU6d0csc2VsZWN0b3JzOltbImV4ZWN1dGlvbi1kYXRhLWNvbXBvbmVudCJdXSxpbnB1dHM6e2ZvY3VzZWRFeGVjdXRpb25JbmRleDoiZm9jdXNlZEV4ZWN1dGlvbkluZGV4Iixmb2N1c2VkRXhlY3V0aW9uRGF0YToiZm9jdXNlZEV4ZWN1dGlvbkRhdGEiLHRlbnNvckRlYnVnTW9kZToidGVuc29yRGVidWdNb2RlIixoYXNEZWJ1Z1RlbnNvclZhbHVlczoiaGFzRGVidWdUZW5zb3JWYWx1ZXMiLGRlYnVnVGVuc29yVmFsdWVzOiJkZWJ1Z1RlbnNvclZhbHVlcyIsZGVidWdUZW5zb3JEdHlwZXM6ImRlYnVnVGVuc29yRHR5cGVzIn0sZGVjbHM6Nyx2YXJzOjMsY29uc3RzOltbMSwiZm9jdXMtZXhlY3V0aW9uLWNvbnRhaW5lciJdLFs0LCJuZ0lmIiwibmdJZkVsc2UiXSxbImxvYWRpbmdfc2VjdGlvbiIsIiJdLFsxLCJleGVjdXRpb24tZGF0YS1maWVsZCJdLFsxLCJleGVjdXRpb24tZGF0YS1rZXkiXSxbMSwiZXhlY3V0aW9uLWRhdGEtdmFsdWUiLCJvcC10eXBlIl0sWzEsImV4ZWN1dGlvbi1kYXRhLXZhbHVlIiwiaW5wdXQtdGVuc29ycyJdLFsxLCJleGVjdXRpb24tZGF0YS12YWx1ZSIsIm91dHB1dC10ZW5zb3JzIl0sWzEsImV4ZWN1dGlvbi1kYXRhLXZhbHVlIl0sWyJjbGFzcyIsIm91dHB1dC1zbG90cyIsNCwibmdJZiJdLFsxLCJvdXRwdXQtc2xvdHMiXSxbImNsYXNzIiwib3V0cHV0LXNsb3QtY29udGFpbmVyIiw0LCJuZ0ZvciIsIm5nRm9yT2YiXSxbMSwib3V0cHV0LXNsb3QtY29udGFpbmVyIl0sWzEsIm91dHB1dC1zbG90LW51bWJlciJdLFsxLCJvdXRwdXQtc2xvdC1kZWJ1Zy10ZW5zb3ItdmFsdWUiXSxbMywiZGVidWdUZW5zb3JWYWx1ZSJdXSx0ZW1wbGF0ZTpmdW5jdGlvbiB0KG4sZSl7aWYoMSZuJiYoS2coMCwiZGl2IiwwKSxLZygxLCJkaXYiKSxLZygyLCJzcGFuIiksSnAoMyksJGcoKSwkZygpLFlnKDQsa0csMjAsNSwiZGl2IiwxKSxZZyg1LHZHLDAsMCwibmctdGVtcGxhdGUiLG51bGwsMixLZiksJGcoKSksMiZuKXtjb25zdCB0PXFnKDYpO3dzKDMpLEtwKCIgUHl0aG9uIEV4ZWN1dGlvbiAjIixlLmZvY3VzZWRFeGVjdXRpb25JbmRleCwiICIpLHdzKDEpLEpnKCJuZ0lmIixudWxsIT09ZS5mb2N1c2VkRXhlY3V0aW9uRGF0YSkoIm5nSWZFbHNlIix0KX19LGRpcmVjdGl2ZXM6W1dNLGpNLE9HXSxzdHlsZXM6WyIuZGVidWctdGVuc29yLXZhbHVlcy10YWJsZVtfbmdjb250ZW50LSVDT01QJV0ge1xuICB3aWR0aDogMTAwJTtcbn1cblxuLmRlYnVnLXRlbnNvci12YWx1ZXMtdGFibGVbX25nY29udGVudC0lQ09NUCVdICAgdGRbX25nY29udGVudC0lQ09NUCVdIHtcbiAgYm9yZGVyLXRvcDogMXB4IHNvbGlkICMwMDA7XG4gIHRleHQtYWxpZ246IGxlZnQ7XG59XG5cbi5kZWJ1Zy10ZW5zb3ItdmFsdWVzLXRhYmxlW19uZ2NvbnRlbnQtJUNPTVAlXSAgIHRoW19uZ2NvbnRlbnQtJUNPTVAlXSB7XG4gIHRleHQtYWxpZ246IGxlZnQ7XG59XG5cbi5leGVjdXRpb24tZGF0YS1maWVsZFtfbmdjb250ZW50LSVDT01QJV0ge1xuICB3aGl0ZS1zcGFjZTogbm93cmFwO1xufVxuXG4uZXhlY3V0aW9uLWRhdGEta2V5W19uZ2NvbnRlbnQtJUNPTVAlXSB7XG4gIGRpc3BsYXk6IGlubGluZS1ibG9jaztcbiAgbWF4LXdpZHRoOiAxMjBweDtcbiAgdGV4dC1hbGlnbjogcmlnaHQ7XG4gIHdpZHRoOiAxMjBweDtcbn1cblxuLmV4ZWN1dGlvbi1kYXRhLXZhbHVlW19uZ2NvbnRlbnQtJUNPTVAlXSB7XG4gIGRpc3BsYXk6IGlubGluZS1ibG9jaztcbiAgbWFyZ2luLWxlZnQ6IDEwcHg7XG59XG5cbi5mb2N1cy1leGVjdXRpb24tY29udGFpbmVyW19uZ2NvbnRlbnQtJUNPTVAlXSB7XG4gIGJhY2tncm91bmQtY29sb3I6ICNmZmQ0YjM7XG4gIGJvcmRlci1yYWRpdXM6IDRweDtcbiAgZm9udC1zaXplOiAxMnB4O1xuICBoZWlnaHQ6IDEyMHB4O1xuICBwYWRkaW5nOiA1cHg7XG4gIHdpZHRoOiAzNjBweDtcbn1cblxuLm91dHB1dC1zbG90c1tfbmdjb250ZW50LSVDT01QJV0ge1xuICBoZWlnaHQ6IDYwcHg7XG4gIG92ZXJmbG93LXg6IGF1dG87XG4gIG92ZXJmbG93LXk6IGF1dG87XG59XG5cbi5vdXRwdXQtc2xvdC1jb250YWluZXJbX25nY29udGVudC0lQ09NUCVdIHtcbiAgYm9yZGVyLXRvcDogMXB4IHNvbGlkIHJnYmEoMCwgMCwgMCwgMC4xMik7XG4gIG1hcmdpbi10b3A6IDVweDtcbiAgcGFkZGluZzogMnB4IDA7XG4gIHZlcnRpY2FsLWFsaWduOiB0b3A7XG59XG5cbi5vdXRwdXQtc2xvdC1udW1iZXJbX25nY29udGVudC0lQ09NUCVdIHtcbiAgZGlzcGxheTogYmxvY2s7XG4gIGZvbnQtZmFtaWx5OiAnUm9ib3RvIE1vbm8nLCBtb25vc3BhY2U7XG59XG5cbi5vdXRwdXQtc2xvdC1kZWJ1Zy10ZW5zb3ItdmFsdWVbX25nY29udGVudC0lQ09NUCVdIHtcbiAgZGlzcGxheTogYmxvY2s7XG4gIG1hcmdpbjogM3B4IDAgM3B4IDMwcHg7XG59XG5cbi5vdXRwdXQtdGVuc29yc1tfbmdjb250ZW50LSVDT01QJV0ge1xuICBtYXJnaW4tdG9wOiA1cHg7XG59Il19KTtjb25zdCBTRz0iVW5rbm93biBkdHlwZSI7Y2xhc3MgRUd7Y29uc3RydWN0b3IodCl7dGhpcy5zdG9yZT10LHRoaXMuZm9jdXNlZEV4ZWN1dGlvbkRhdGEkPXRoaXMuc3RvcmUucGlwZShsdihBVykpLHRoaXMudGVuc29yRGVidWdNb2RlJD10aGlzLnN0b3JlLnBpcGUobHYocHYoQVcsKHQ9Pm51bGw9PT10P3pVLlVOU1BFQ0lGSUVEOnQudGVuc29yX2RlYnVnX21vZGUpKSkpLHRoaXMuaGFzRGVidWdUZW5zb3JWYWx1ZXMkPXRoaXMuc3RvcmUucGlwZShsdihwdihBVywodD0+e2lmKG51bGw9PT10fHxudWxsPT09dC5kZWJ1Z190ZW5zb3JfdmFsdWVzKXJldHVybiExO2Zvcihjb25zdCBuIG9mIHQuZGVidWdfdGVuc29yX3ZhbHVlcylpZihudWxsIT09biYmbi5sZW5ndGg+MClyZXR1cm4hMDtyZXR1cm4hMX0pKSkpLHRoaXMuZGVidWdUZW5zb3JWYWx1ZXMkPXRoaXMuc3RvcmUucGlwZShsdihwdihBVywodD0+bnVsbD09PXQ/bnVsbDp0LmRlYnVnX3RlbnNvcl92YWx1ZXMpKSkpLHRoaXMuZGVidWdUZW5zb3JEdHlwZXMkPXRoaXMuc3RvcmUucGlwZShsdihwdihBVywodD0+e2lmKG51bGw9PT10fHxudWxsPT09dC5kZWJ1Z190ZW5zb3JfdmFsdWVzKXJldHVybiBudWxsO2lmKHQudGVuc29yX2RlYnVnX21vZGUhPT16VS5GVUxMX0hFQUxUSCYmdC50ZW5zb3JfZGVidWdfbW9kZSE9PXpVLlNIQVBFKXJldHVybiBudWxsO2NvbnN0IG49W107Zm9yKGNvbnN0IGUgb2YgdC5kZWJ1Z190ZW5zb3JfdmFsdWVzKWlmKG51bGw9PT1lKW4ucHVzaChTRyk7ZWxzZXtjb25zdCBhPVN0cmluZyh0LnRlbnNvcl9kZWJ1Z19tb2RlPT09elUuRlVMTF9IRUFMVEg/ZVsyXTplWzFdKTtuLnB1c2goJFdbYV18fFNHKX1yZXR1cm4gbn0pKSkpfX1mdW5jdGlvbiBBRyh0LG4pe2lmKDEmdCl7Y29uc3QgdD1vcCgpO0tnKDAsIm1hdC1zbGlkZXIiLDExKSxjcCgiaW5wdXQiLChmdW5jdGlvbiBuKGUpe3JldHVybiBqcih0KSxncCgyKS5vblNsaWRlckNoYW5nZS5lbWl0KGUudmFsdWUpfSkpLCRnKCl9aWYoMiZ0KXtjb25zdCB0PWdwKDIpO0pnKCJtaW4iLDApKCJtYXgiLHQuc2Nyb2xsQmVnaW5JbmRleFVwcGVyTGltaXQpKCJ2YWx1ZSIsdC5zY3JvbGxCZWdpbkluZGV4KX19ZnVuY3Rpb24gekcodCxuKXtpZigxJnQpe2NvbnN0IHQ9b3AoKTtLZygwLCJkaXYiLDYpLEtnKDEsImJ1dHRvbiIsNyksY3AoImNsaWNrIiwoZnVuY3Rpb24gbigpe3JldHVybiBqcih0KSxncCgpLm9uTmF2aWdhdGVMZWZ0LmVtaXQoKX0pKSxKcCgyLCIgPCAiKSwkZygpLEtnKDMsImRpdiIsOCksSnAoNCksJGcoKSxLZyg1LCJidXR0b24iLDkpLGNwKCJjbGljayIsKGZ1bmN0aW9uIG4oKXtyZXR1cm4ganIodCksZ3AoKS5vbk5hdmlnYXRlUmlnaHQuZW1pdCgpfSkpLEpwKDYsIiA+ICIpLCRnKCksWWcoNyxBRywxLDMsIm1hdC1zbGlkZXIiLDEwKSwkZygpfWlmKDImdCl7Y29uc3QgdD1ncCgpO3dzKDQpLHRiKCIgIix0LnNjcm9sbEJlZ2luSW5kZXgsIiB+ICIsdC5zY3JvbGxCZWdpbkluZGV4K3QuZGlzcGxheUNvdW50LTEsIiBvZiAiLHQubnVtRXhlY3V0aW9ucywiICIpLHdzKDMpLEpnKCJuZ0lmIix0LnNjcm9sbEJlZ2luSW5kZXhVcHBlckxpbWl0PjApfX1FRy7JtWZhYz1mdW5jdGlvbiB0KG4pe3JldHVybiBuZXcobnx8RUcpKFpnKGN2KSl9LEVHLsm1Y21wPV9vKHt0eXBlOkVHLHNlbGVjdG9yczpbWyJ0Zi1kZWJ1Z2dlci12Mi1leGVjdXRpb24tZGF0YSJdXSxpbnB1dHM6e2ZvY3VzZWRFeGVjdXRpb25JbmRleDoiZm9jdXNlZEV4ZWN1dGlvbkluZGV4In0sZGVjbHM6Nix2YXJzOjE2LGNvbnN0czpbWzMsImZvY3VzZWRFeGVjdXRpb25JbmRleCIsImZvY3VzZWRFeGVjdXRpb25EYXRhIiwidGVuc29yRGVidWdNb2RlIiwiaGFzRGVidWdUZW5zb3JWYWx1ZXMiLCJkZWJ1Z1RlbnNvclZhbHVlcyIsImRlYnVnVGVuc29yRHR5cGVzIl1dLHRlbXBsYXRlOmZ1bmN0aW9uIHQobixlKXsxJm4mJih0cCgwLCJleGVjdXRpb24tZGF0YS1jb21wb25lbnQiLDApLHlmKDEsImFzeW5jIikseWYoMiwiYXN5bmMiKSx5ZigzLCJhc3luYyIpLHlmKDQsImFzeW5jIikseWYoNSwiYXN5bmMiKSksMiZuJiZKZygiZm9jdXNlZEV4ZWN1dGlvbkluZGV4IixlLmZvY3VzZWRFeGVjdXRpb25JbmRleCkoImZvY3VzZWRFeGVjdXRpb25EYXRhIixrZigxLDYsZS5mb2N1c2VkRXhlY3V0aW9uRGF0YSQpKSgidGVuc29yRGVidWdNb2RlIixrZigyLDgsZS50ZW5zb3JEZWJ1Z01vZGUkKSkoImhhc0RlYnVnVGVuc29yVmFsdWVzIixrZigzLDEwLGUuaGFzRGVidWdUZW5zb3JWYWx1ZXMkKSkoImRlYnVnVGVuc29yVmFsdWVzIixrZig0LDEyLGUuZGVidWdUZW5zb3JWYWx1ZXMkKSkoImRlYnVnVGVuc29yRHR5cGVzIixrZig1LDE0LGUuZGVidWdUZW5zb3JEdHlwZXMkKSl9LGRpcmVjdGl2ZXM6W3dHXSxwaXBlczpbb09dLGVuY2Fwc3VsYXRpb246Mn0pO2NvbnN0IFJHPWZ1bmN0aW9uKHQsbixlKXtyZXR1cm5bdCxuLGVdfTtmdW5jdGlvbiBURyh0LG4pe2lmKDEmdCl7Y29uc3QgdD1vcCgpO0tnKDAsImRpdiIsMTQpLGNwKCJjbGljayIsKGZ1bmN0aW9uIGUoKXtqcih0KTtjb25zdCBhPW4uaW5kZXg7cmV0dXJuIGdwKDIpLm9uRXhlY3V0aW9uRGlnZXN0Q2xpY2tlZC5lbWl0KGEpfSkpLEtnKDEsImRpdiIsMTUpLEpwKDIpLCRnKCksJGcoKX1pZigyJnQpe2NvbnN0IHQ9bi4kaW1wbGljaXQsZT1uLmluZGV4LGE9Z3AoMik7d3MoMSksX3AoInRpdGxlIix0Lm9wX3R5cGUpLEpnKCJuZ0NsYXNzIixoZigzLFJHLHQuaXNfZ3JhcGg/ImZ1bmMtZ3JhcGgtZXhlY3V0aW9uIjoiIixlPT09YS5mb2N1c2VkRXhlY3V0aW9uRGlzcGxheUluZGV4PyJmb2N1c2VkIjoiIixhLmRpc3BsYXlGb2N1c2VkQWxlcnRUeXBlc1tlXXx8IiIpKSx3cygxKSxLcCgiICIsdC5zaG9ydF9vcF90eXBlLCIgIil9fWZ1bmN0aW9uIERHKHQsbil7aWYoMSZ0JiYoS2coMCwiZGl2IiwxMiksWWcoMSxURywzLDcsImRpdiIsMTMpLCRnKCkpLDImdCl7Y29uc3QgdD1ncCgpO3dzKDEpLEpnKCJuZ0Zvck9mIix0LmRpc3BsYXlFeGVjdXRpb25EaWdlc3RzKX19ZnVuY3Rpb24gSUcodCxuKXtpZigxJnQmJihucCgwKSx0cCgxLCJ0Zi1kZWJ1Z2dlci12Mi1leGVjdXRpb24tZGF0YSIsMTYpLGVwKCkpLDImdCl7Y29uc3QgdD1ncCgpO3dzKDEpLEpnKCJmb2N1c2VkRXhlY3V0aW9uSW5kZXgiLHQuZm9jdXNlZEV4ZWN1dGlvbkluZGV4KX19Y2xhc3MgTkd7Y29uc3RydWN0b3IoKXt0aGlzLmFjdGl2ZVJ1bklkPW51bGwsdGhpcy5sb2FkaW5nTnVtRXhlY3V0aW9ucz0hMSx0aGlzLm51bUV4ZWN1dGlvbnM9MCx0aGlzLnNjcm9sbEJlZ2luSW5kZXg9MCx0aGlzLnNjcm9sbEJlZ2luSW5kZXhVcHBlckxpbWl0PTAsdGhpcy5wYWdlU2l6ZT0wLHRoaXMuZGlzcGxheUNvdW50PTAsdGhpcy5kaXNwbGF5RXhlY3V0aW9uRGlnZXN0cz1bXSx0aGlzLmRpc3BsYXlGb2N1c2VkQWxlcnRUeXBlcz1bXSx0aGlzLmZvY3VzZWRFeGVjdXRpb25JbmRleD1udWxsLHRoaXMuZm9jdXNlZEV4ZWN1dGlvbkRpc3BsYXlJbmRleD1udWxsLHRoaXMuZm9jdXNlZEV4ZWN1dGlvbkRhdGE9bnVsbCx0aGlzLm9uTmF2aWdhdGVMZWZ0PW5ldyBFZix0aGlzLm9uTmF2aWdhdGVSaWdodD1uZXcgRWYsdGhpcy5vbkV4ZWN1dGlvbkRpZ2VzdENsaWNrZWQ9bmV3IEVmLHRoaXMub25TbGlkZXJDaGFuZ2U9bmV3IEVmfX1ORy7JtWZhYz1mdW5jdGlvbiB0KG4pe3JldHVybiBuZXcobnx8TkcpfSxORy7JtWNtcD1fbyh7dHlwZTpORyxzZWxlY3RvcnM6W1sidGltZWxpbmUtY29tcG9uZW50Il1dLGlucHV0czp7YWN0aXZlUnVuSWQ6ImFjdGl2ZVJ1bklkIixsb2FkaW5nTnVtRXhlY3V0aW9uczoibG9hZGluZ051bUV4ZWN1dGlvbnMiLG51bUV4ZWN1dGlvbnM6Im51bUV4ZWN1dGlvbnMiLHNjcm9sbEJlZ2luSW5kZXg6InNjcm9sbEJlZ2luSW5kZXgiLHNjcm9sbEJlZ2luSW5kZXhVcHBlckxpbWl0OiJzY3JvbGxCZWdpbkluZGV4VXBwZXJMaW1pdCIscGFnZVNpemU6InBhZ2VTaXplIixkaXNwbGF5Q291bnQ6ImRpc3BsYXlDb3VudCIsZGlzcGxheUV4ZWN1dGlvbkRpZ2VzdHM6ImRpc3BsYXlFeGVjdXRpb25EaWdlc3RzIixkaXNwbGF5Rm9jdXNlZEFsZXJ0VHlwZXM6ImRpc3BsYXlGb2N1c2VkQWxlcnRUeXBlcyIsZm9jdXNlZEV4ZWN1dGlvbkluZGV4OiJmb2N1c2VkRXhlY3V0aW9uSW5kZXgiLGZvY3VzZWRFeGVjdXRpb25EaXNwbGF5SW5kZXg6ImZvY3VzZWRFeGVjdXRpb25EaXNwbGF5SW5kZXgiLGZvY3VzZWRFeGVjdXRpb25EYXRhOiJmb2N1c2VkRXhlY3V0aW9uRGF0YSJ9LG91dHB1dHM6e29uTmF2aWdhdGVMZWZ0OiJvbk5hdmlnYXRlTGVmdCIsb25OYXZpZ2F0ZVJpZ2h0OiJvbk5hdmlnYXRlUmlnaHQiLG9uRXhlY3V0aW9uRGlnZXN0Q2xpY2tlZDoib25FeGVjdXRpb25EaWdlc3RDbGlja2VkIixvblNsaWRlckNoYW5nZToib25TbGlkZXJDaGFuZ2UifSxkZWNsczo5LHZhcnM6NCxjb25zdHM6W1sxLCJ0aW1lbGluZS10aXRsZSJdLFsxLCJleGVjdXRpb24tY291bnQiXSxbMSwidG9wLWxldmVsLWV4ZWN1dGlvbnMiXSxbImNsYXNzIiwibmF2aWdhdGlvbi1zZWN0aW9uIiw0LCJuZ0lmIl0sWyJjbGFzcyIsImV4ZWN1dGlvbi10aW1lbGluZSIsNCwibmdJZiJdLFs0LCJuZ0lmIl0sWzEsIm5hdmlnYXRpb24tc2VjdGlvbiJdLFsibWF0LWJ1dHRvbiIsIiIsMSwibmF2aWdhdGlvbi1idXR0b24tbGVmdCIsMywiY2xpY2siXSxbMSwibmF2aWdhdGlvbi1wb3NpdGlvbi1pbmZvIl0sWyJtYXQtYnV0dG9uIiwiIiwxLCJuYXZpZ2F0aW9uLWJ1dHRvbi1yaWdodCIsMywiY2xpY2siXSxbImNsYXNzIiwidGltZWxpbmUtc2xpZGVyIiwic3RlcCIsIjEiLDMsIm1pbiIsIm1heCIsInZhbHVlIiwiaW5wdXQiLDQsIm5nSWYiXSxbInN0ZXAiLCIxIiwxLCJ0aW1lbGluZS1zbGlkZXIiLDMsIm1pbiIsIm1heCIsInZhbHVlIiwiaW5wdXQiXSxbMSwiZXhlY3V0aW9uLXRpbWVsaW5lIl0sWzMsImNsaWNrIiw0LCJuZ0ZvciIsIm5nRm9yT2YiXSxbMywiY2xpY2siXSxbMSwiZXhlY3V0aW9uLWRpZ2VzdCIsMywibmdDbGFzcyIsInRpdGxlIl0sWzMsImZvY3VzZWRFeGVjdXRpb25JbmRleCJdXSx0ZW1wbGF0ZTpmdW5jdGlvbiB0KG4sZSl7MSZuJiYoS2coMCwiZGl2IiksS2coMSwiZGl2IiwwKSxKcCgyLCIgUHl0aG9uIEV4ZWN1dGlvbiBUaW1lbGluZSAiKSxLZygzLCJzcGFuIiwxKSxKcCg0KSwkZygpLCRnKCksS2coNSwiZGl2IiwyKSxZZyg2LHpHLDgsNCwiZGl2IiwzKSxZZyg3LERHLDIsMSwiZGl2Iiw0KSxZZyg4LElHLDIsMSwibmctY29udGFpbmVyIiw1KSwkZygpLCRnKCkpLDImbiYmKHdzKDQpLEtwKCIgKCIsZS5udW1FeGVjdXRpb25zLCIpICIpLHdzKDIpLEpnKCJuZ0lmIixlLm51bUV4ZWN1dGlvbnMpLHdzKDEpLEpnKCJuZ0lmIixlLm51bUV4ZWN1dGlvbnMpLHdzKDEpLEpnKCJuZ0lmIixudWxsIT09ZS5hY3RpdmVSdW5JZCYmbnVsbCE9PWUuZm9jdXNlZEV4ZWN1dGlvbkluZGV4KSl9LGRpcmVjdGl2ZXM6W1dNLGVBLFhXLGpNLEhNLEVHXSxzdHlsZXM6WyIuZXhlY3V0aW9uLWRpZ2VzdFtfbmdjb250ZW50LSVDT01QJV0ge1xuICBiYWNrZ3JvdW5kLWNvbG9yOiAjZTNlNWU4O1xuICBib3JkZXI6IDFweCBzb2xpZCAjYzBjMGMwO1xuICBjb2xvcjogIzQyNTA2NjtcbiAgZGlzcGxheTogaW5saW5lLWJsb2NrO1xuICBmb250LXNpemU6IDEwcHg7XG4gIGhlaWdodDogMTVweDtcbiAgcGFkZGluZzogMXB4O1xuICB0ZXh0LWFsaWduOiBjZW50ZXI7XG4gIHZlcnRpY2FsLWFsaWduOiBtaWRkbGU7XG4gIHdpZHRoOiAxMnB4O1xufVxuXG4uZXhlY3V0aW9uLWRpZ2VzdC5mdW5jLWdyYXBoLWV4ZWN1dGlvbltfbmdjb250ZW50LSVDT01QJV0ge1xuICBiYWNrZ3JvdW5kLWNvbG9yOiAjYzdkYmY1O1xuICBjb2xvcjogIzRlNTY2NDtcbiAgdGV4dC1kZWNvcmF0aW9uOiB1bmRlcmxpbmU7XG59XG5cbi5leGVjdXRpb24tZGlnZXN0LmZvY3VzZWRbX25nY29udGVudC0lQ09NUCVdIHtcbiAgYmFja2dyb3VuZC1jb2xvcjogI2ZmZDRiMztcbiAgYm9yZGVyOiAxcHggc29saWQgIzAwMDtcbiAgZm9udC13ZWlnaHQ6IGJvbGQ7XG59XG5cbi5leGVjdXRpb24tZGlnZXN0LkluZk5hbkFsZXJ0W19uZ2NvbnRlbnQtJUNPTVAlXSB7XG4gIGJhY2tncm91bmQtY29sb3I6ICNlNTI1OTI7XG4gIGNvbG9yOiAjZmZmO1xufVxuXG5cbi5leGVjdXRpb24tZGlnZXN0W19uZ2NvbnRlbnQtJUNPTVAlXTpob3ZlciB7XG4gIGJvcmRlcjogMXB4IHNvbGlkICMwMDA7XG4gIGZvbnQtd2VpZ2h0OiBib2xkO1xufVxuXG4uZXhlY3V0aW9uLXRpbWVsaW5lW19uZ2NvbnRlbnQtJUNPTVAlXSB7XG4gIGRpc3BsYXk6IGZsZXg7XG4gIG92ZXJmbG93LXg6IGhpZGRlbjtcbiAgd2hpdGUtc3BhY2U6IG5vd3JhcDtcbiAgd2lkdGg6IDEwMCU7XG4gIG1hcmdpbi10b3A6IDVweDtcbiAgbWFyZ2luLWJvdHRvbTogNXB4O1xufVxuXG4udGltZWxpbmUtc2xpZGVyW19uZ2NvbnRlbnQtJUNPTVAlXSB7XG4gIGRpc3BsYXk6IGlubGluZS1ibG9jaztcbiAgaGVpZ2h0OiA0OHB4O1xuICBsZWZ0OiAzNDBweDsgXG4gIHBhZGRpbmc6IDA7XG4gIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgcmlnaHQ6IDQwcHg7XG59XG5cbiAgLnRpbWVsaW5lLXNsaWRlciAubWF0LXNsaWRlci10aHVtYiB7XG4gIGJvcmRlci1yYWRpdXM6IDVweDtcbiAgcmlnaHQ6IC00MHB4O1xuICB3aWR0aDogODBweDtcbn1cblxuXG4ubmF2aWdhdGlvbi1wb3NpdGlvbi1pbmZvW19uZ2NvbnRlbnQtJUNPTVAlXSB7XG4gIGRpc3BsYXk6IGlubGluZS1mbGV4O1xuICBmb250LXNpemU6IDE0cHg7XG4gIGxpbmUtaGVpZ2h0OiBub3JtYWw7XG4gIG1heC13aWR0aDogMjAwcHg7XG4gIHBhZGRpbmctbGVmdDogMTBweDtcbiAgcGFkZGluZy1yaWdodDogMTBweDtcbiAgdGV4dC1hbGlnbjogY2VudGVyO1xuICB2ZXJ0aWNhbC1hbGlnbjogbWlkZGxlO1xufVxuXG4ubmF2aWdhdGlvbi1zZWN0aW9uW19uZ2NvbnRlbnQtJUNPTVAlXSB7XG4gIGhlaWdodDogNDhweDtcbiAgbGluZS1oZWlnaHQ6IDQ4cHg7XG4gIHBvc2l0aW9uOiByZWxhdGl2ZTtcbiAgdmVydGljYWwtYWxpZ246IG1pZGRsZTtcbiAgd2lkdGg6IDEwMCU7XG59Il0sY2hhbmdlRGV0ZWN0aW9uOjB9KTtjb25zdCBGRz1bIl9fZm9yd2FyZF8iLCJfX2JhY2t3YXJkXyIsIl9faW5mZXJlbmNlXyJdO2NsYXNzIExHe2NvbnN0cnVjdG9yKHQpe3RoaXMuc3RvcmU9dCx0aGlzLmFjdGl2ZVJ1bklkJD10aGlzLnN0b3JlLnBpcGUobHYoR1UpKSx0aGlzLmxvYWRpbmdOdW1FeGVjdXRpb25zJD10aGlzLnN0b3JlLnBpcGUobHYocHYoblcsKHQ9PnQuc3RhdGU9PWZSLkxPQURJTkcpKSkpLHRoaXMuc2Nyb2xsQmVnaW5JbmRleCQ9dGhpcy5zdG9yZS5waXBlKGx2KG9XKSksdGhpcy5zY3JvbGxCZWdpbkluZGV4VXBwZXJMaW1pdCQ9dGhpcy5zdG9yZS5waXBlKGx2KHB2KGFXLGlXLCgodCxuKT0+TWF0aC5tYXgoMCx0LW4pKSkpKSx0aGlzLnBhZ2VTaXplJD10aGlzLnN0b3JlLnBpcGUobHYoclcpKSx0aGlzLmRpc3BsYXlDb3VudCQ9dGhpcy5zdG9yZS5waXBlKGx2KGlXKSksdGhpcy5kaXNwbGF5RXhlY3V0aW9uRGlnZXN0cyQ9dGhpcy5zdG9yZS5waXBlKGx2KHB2KGNXLCh0PT50Lm1hcCgodD0+KGZ1bmN0aW9uIG4odCxlPTEpe2lmKCF0KXJldHVybntvcF90eXBlOiIoTi9BKSIsc2hvcnRfb3BfdHlwZToiLi4iLGlzX2dyYXBoOiExfTtjb25zdCBhPUZHLmZpbHRlcigobj0+dC5vcF90eXBlLnN0YXJ0c1dpdGgobikpKTtpZihhLmxlbmd0aCl7Y29uc3Qgbj10Lm9wX3R5cGUuc2xpY2UoYVswXS5sZW5ndGgpO3JldHVybntvcF90eXBlOnQub3BfdHlwZSxzaG9ydF9vcF90eXBlOm4uc2xpY2UoMCxlKSxpc19ncmFwaDohMH19cmV0dXJue29wX3R5cGU6dC5vcF90eXBlLHNob3J0X29wX3R5cGU6dC5vcF90eXBlLnNsaWNlKDAsZSksaXNfZ3JhcGg6ITF9fSkodCkpKSkpKSksdGhpcy5kaXNwbGF5Rm9jdXNlZEFsZXJ0VHlwZXMkPXRoaXMuc3RvcmUucGlwZShsdih4VykpLHRoaXMuZm9jdXNlZEV4ZWN1dGlvbkluZGV4JD10aGlzLnN0b3JlLnBpcGUobHYoa1cpKSx0aGlzLmZvY3VzZWRFeGVjdXRpb25EaXNwbGF5SW5kZXgkPXRoaXMuc3RvcmUucGlwZShsdih2VykpLHRoaXMubnVtRXhlY3V0aW9ucyQ9dGhpcy5zdG9yZS5waXBlKGx2KGFXKSl9b25OYXZpZ2F0ZUxlZnQoKXt0aGlzLnN0b3JlLmRpc3BhdGNoKG1VKCkpfW9uTmF2aWdhdGVSaWdodCgpe3RoaXMuc3RvcmUuZGlzcGF0Y2goZFUoKSl9b25FeGVjdXRpb25EaWdlc3RDbGlja2VkKHQpe3RoaXMuc3RvcmUuZGlzcGF0Y2gocFUoe2Rpc3BsYXlJbmRleDp0fSkpfW9uU2xpZGVyQ2hhbmdlKHQpe3RoaXMuc3RvcmUuZGlzcGF0Y2goZ1Uoe2luZGV4OnR9KSl9fWZ1bmN0aW9uIEhHKHQsbil7MSZ0JiYoS2coMCwic3BhbiIpLEpwKDEsIiBPdXRwdXQgIiksJGcoKSl9ZnVuY3Rpb24gQkcodCxuKXsxJnQmJihLZygwLCJzcGFuIiksSnAoMSwiIElucHV0ICIpLCRnKCkpfWZ1bmN0aW9uIFZHKHQsbil7aWYoMSZ0JiYoS2coMCwiZGl2Iiw2KSxLZygxLCJzcGFuIiw3KSxZZygyLEhHLDIsMCwic3BhbiIsOCksWWcoMyxCRywyLDAsInNwYW4iLDgpLCRnKCksSnAoNCksJGcoKSksMiZ0KXtjb25zdCB0PWdwKCk7d3MoMSksSmcoIm5nU3dpdGNoIix0LmtpbmQpLHdzKDEpLEpnKCJuZ1N3aXRjaENhc2UiLCJpbnB1dCIpLHdzKDEpLEpnKCJuZ1N3aXRjaENhc2UiLCJjb25zdW1lciIpLHdzKDEpLEtwKCIgc2xvdDogIix0LnNsb3QsIiAiKX19ZnVuY3Rpb24gakcodCxuKXtpZigxJnQmJihLZygwLCJkaXYiLDkpLEpwKDEpLCRnKCkpLDImdCl7Y29uc3QgdD1ncCgpO3dzKDEpLEtwKCIgIix0Lm9wRGF0YS5vcF90eXBlLCIgIil9fWZ1bmN0aW9uIFVHKHQsbil7MSZ0JiYoS2coMCwic3BhbiIsMTApLEpwKDEsIiAoT3AgaW5mbyB1bmF2YWlsYWJsZS4pICIpLCRnKCkpfUxHLsm1ZmFjPWZ1bmN0aW9uIHQobil7cmV0dXJuIG5ldyhufHxMRykoWmcoY3YpKX0sTEcuybVjbXA9X28oe3R5cGU6TEcsc2VsZWN0b3JzOltbInRmLWRlYnVnZ2VyLXYyLXRpbWVsaW5lIl1dLGRlY2xzOjEyLHZhcnM6MzMsY29uc3RzOltbMywiYWN0aXZlUnVuSWQiLCJsb2FkaW5nTnVtRXhlY3V0aW9ucyIsIm51bUV4ZWN1dGlvbnMiLCJzY3JvbGxCZWdpbkluZGV4Iiwic2Nyb2xsQmVnaW5JbmRleFVwcGVyTGltaXQiLCJwYWdlU2l6ZSIsImRpc3BsYXlDb3VudCIsImRpc3BsYXlFeGVjdXRpb25EaWdlc3RzIiwiZGlzcGxheUZvY3VzZWRBbGVydFR5cGVzIiwiZm9jdXNlZEV4ZWN1dGlvbkluZGV4IiwiZm9jdXNlZEV4ZWN1dGlvbkRpc3BsYXlJbmRleCIsIm9uTmF2aWdhdGVMZWZ0Iiwib25OYXZpZ2F0ZVJpZ2h0Iiwib25FeGVjdXRpb25EaWdlc3RDbGlja2VkIiwib25TbGlkZXJDaGFuZ2UiXV0sdGVtcGxhdGU6ZnVuY3Rpb24gdChuLGUpezEmbiYmKEtnKDAsInRpbWVsaW5lLWNvbXBvbmVudCIsMCksY3AoIm9uTmF2aWdhdGVMZWZ0IiwoZnVuY3Rpb24gdCgpe3JldHVybiBlLm9uTmF2aWdhdGVMZWZ0KCl9KSkoIm9uTmF2aWdhdGVSaWdodCIsKGZ1bmN0aW9uIHQoKXtyZXR1cm4gZS5vbk5hdmlnYXRlUmlnaHQoKX0pKSgib25FeGVjdXRpb25EaWdlc3RDbGlja2VkIiwoZnVuY3Rpb24gdChuKXtyZXR1cm4gZS5vbkV4ZWN1dGlvbkRpZ2VzdENsaWNrZWQobil9KSkoIm9uU2xpZGVyQ2hhbmdlIiwoZnVuY3Rpb24gdChuKXtyZXR1cm4gZS5vblNsaWRlckNoYW5nZShuKX0pKSx5ZigxLCJhc3luYyIpLHlmKDIsImFzeW5jIikseWYoMywiYXN5bmMiKSx5Zig0LCJhc3luYyIpLHlmKDUsImFzeW5jIikseWYoNiwiYXN5bmMiKSx5Zig3LCJhc3luYyIpLHlmKDgsImFzeW5jIikseWYoOSwiYXN5bmMiKSx5ZigxMCwiYXN5bmMiKSx5ZigxMSwiYXN5bmMiKSwkZygpKSwyJm4mJkpnKCJhY3RpdmVSdW5JZCIsa2YoMSwxMSxlLmFjdGl2ZVJ1bklkJCkpKCJsb2FkaW5nTnVtRXhlY3V0aW9ucyIsa2YoMiwxMyxlLmxvYWRpbmdOdW1FeGVjdXRpb25zJCkpKCJudW1FeGVjdXRpb25zIixrZigzLDE1LGUubnVtRXhlY3V0aW9ucyQpKSgic2Nyb2xsQmVnaW5JbmRleCIsa2YoNCwxNyxlLnNjcm9sbEJlZ2luSW5kZXgkKSkoInNjcm9sbEJlZ2luSW5kZXhVcHBlckxpbWl0IixrZig1LDE5LGUuc2Nyb2xsQmVnaW5JbmRleFVwcGVyTGltaXQkKSkoInBhZ2VTaXplIixrZig2LDIxLGUucGFnZVNpemUkKSkoImRpc3BsYXlDb3VudCIsa2YoNywyMyxlLmRpc3BsYXlDb3VudCQpKSgiZGlzcGxheUV4ZWN1dGlvbkRpZ2VzdHMiLGtmKDgsMjUsZS5kaXNwbGF5RXhlY3V0aW9uRGlnZXN0cyQpKSgiZGlzcGxheUZvY3VzZWRBbGVydFR5cGVzIixrZig5LDI3LGUuZGlzcGxheUZvY3VzZWRBbGVydFR5cGVzJCkpKCJmb2N1c2VkRXhlY3V0aW9uSW5kZXgiLGtmKDEwLDI5LGUuZm9jdXNlZEV4ZWN1dGlvbkluZGV4JCkpKCJmb2N1c2VkRXhlY3V0aW9uRGlzcGxheUluZGV4IixrZigxMSwzMSxlLmZvY3VzZWRFeGVjdXRpb25EaXNwbGF5SW5kZXgkKSl9LGRpcmVjdGl2ZXM6W05HXSxwaXBlczpbb09dLGVuY2Fwc3VsYXRpb246MixjaGFuZ2VEZXRlY3Rpb246MH0pO2NvbnN0IFdHPWZ1bmN0aW9uKHQpe3JldHVyblt0XX07Y2xhc3MgR0d7Y29uc3RydWN0b3IoKXt0aGlzLm9uT3BOYW1lQ2xpY2s9bmV3IEVmfX1mdW5jdGlvbiBZRyh0LG4pe2lmKDEmdCl7Y29uc3QgdD1vcCgpO0tnKDAsImRpdiIsMTMpLEtnKDEsImRpdiIsMTQpLEpwKDIpLCRnKCksS2coMywiZ3JhcGgtb3AiLDE1KSxjcCgib25PcE5hbWVDbGljayIsKGZ1bmN0aW9uIG4oZSl7anIodCk7Y29uc3QgYT1ncCgzKTtyZXR1cm4gYS5vbkdyYXBoT3BOYXZpZ2F0ZS5lbWl0KHtvcF9uYW1lOmUub3BfbmFtZSxncmFwaF9pZDphLmdyYXBoSWR9KX0pKSwkZygpLCRnKCl9aWYoMiZ0KXtjb25zdCB0PW4uJGltcGxpY2l0LGU9bi5pbmRleDt3cygyKSxLcCgiSW5wdXQgc2xvdCAiLGUsIjoiKSx3cygxKSxKZygia2luZCIsImlucHV0IikoIm9wTmFtZSIsdC5vcF9uYW1lKSgic2xvdCIsdC5vdXRwdXRfc2xvdCkoIm9wRGF0YSIsdC5kYXRhKX19ZnVuY3Rpb24gcUcodCxuKXtpZigxJnQmJihLZygwLCJkaXYiLDExKSxLZygxLCJkaXYiKSxZZygyLFlHLDQsNSwiZGl2IiwxMiksJGcoKSwkZygpKSwyJnQpe2NvbnN0IHQ9Z3AoMik7d3MoMiksSmcoIm5nRm9yT2YiLHQuaW5wdXRPcHMpfX1mdW5jdGlvbiBaRyh0LG4pezEmdCYmKEtnKDAsImRpdiIsMTYpLEpwKDEsIiAoVGhpcyBvcCBoYXMgbm8gaW5wdXQgdGVuc29yLikgIiksJGcoKSl9ZnVuY3Rpb24gWEcodCxuKXtpZigxJnQpe2NvbnN0IHQ9b3AoKTtLZygwLCJkaXYiLDIzKSxLZygxLCJncmFwaC1vcCIsMTUpLGNwKCJvbk9wTmFtZUNsaWNrIiwoZnVuY3Rpb24gbihlKXtqcih0KTtjb25zdCBhPWdwKDQpO3JldHVybiBhLm9uR3JhcGhPcE5hdmlnYXRlLmVtaXQoe29wX25hbWU6ZS5vcF9uYW1lLGdyYXBoX2lkOmEuZ3JhcGhJZH0pfSkpLCRnKCksJGcoKX1pZigyJnQpe2NvbnN0IHQ9bi4kaW1wbGljaXQ7d3MoMSksSmcoImtpbmQiLCJjb25zdW1lciIpKCJvcE5hbWUiLHQub3BfbmFtZSkoInNsb3QiLHQuaW5wdXRfc2xvdCkoIm9wRGF0YSIsdC5kYXRhKX19ZnVuY3Rpb24gSkcodCxuKXtpZigxJnQmJihLZygwLCJkaXYiLDE5KSxLZygxLCJkaXYiLDIwKSxKcCgyKSxLZygzLCJzcGFuIiksc3UoNCwyMSksJGcoKSxKcCg1LCIpICIpLCRnKCksWWcoNixYRywyLDQsImRpdiIsMjIpLCRnKCkpLDImdCl7Y29uc3QgdD1uLiRpbXBsaWNpdCxlPW4uaW5kZXg7d3MoMiksJHAoIiBPdXRwdXQgc2xvdCAiLGUsIjogKCIsdC5sZW5ndGgsIiAiKSx3cygyKSxtdSh0Lmxlbmd0aCksZHUoNCksd3MoMiksSmcoIm5nRm9yT2YiLHQpfX1mdW5jdGlvbiBRRyh0LG4pe2lmKDEmdCYmKEtnKDAsImRpdiIsMTcpLEtnKDEsImRpdiIpLFlnKDIsSkcsNyw0LCJkaXYiLDE4KSwkZygpLCRnKCkpLDImdCl7Y29uc3QgdD1ncCgyKTt3cygyKSxKZygibmdGb3JPZiIsdC5jb25zdW1lck9wcyl9fWZ1bmN0aW9uIEtHKHQsbil7aWYoMSZ0JiYoS2coMCwiZGl2IiwyNCksSnAoMSksS2coMiwic3BhbiIpLHN1KDMsMjUpLCRnKCksSnAoNCwiIGFuZCBubyBjb25zdW1lci4pICIpLCRnKCkpLDImdCl7Y29uc3QgdD1ncCgyKTt3cygxKSxLcCgiIChUaGlzIG9wIGhhcyAiLHQub3BJbmZvLmNvbnN1bWVycy5sZW5ndGgsIiBvdXRwdXQgIiksd3MoMiksbXUodC5vcEluZm8uY29uc3VtZXJzLmxlbmd0aCksZHUoMyl9fWZ1bmN0aW9uICRHKHQsbil7aWYoMSZ0KXtjb25zdCB0PW9wKCk7S2coMCwiZGl2IiksWWcoMSxxRywzLDEsImRpdiIsNCksWWcoMixaRywyLDAsIm5nLXRlbXBsYXRlIixudWxsLDUsS2YpLEtnKDQsImRpdiIsNiksS2coNSwiZGl2Iiw3KSxKcCg2LCJPcDoiKSwkZygpLEtnKDcsImdyYXBoLW9wIiw4KSxjcCgib25PcE5hbWVDbGljayIsKGZ1bmN0aW9uIG4oZSl7anIodCk7Y29uc3QgYT1ncCgpO3JldHVybiBhLm9uR3JhcGhPcE5hdmlnYXRlLmVtaXQoe29wX25hbWU6ZS5vcF9uYW1lLGdyYXBoX2lkOmEuZ3JhcGhJZH0pfSkpLCRnKCksJGcoKSxZZyg4LFFHLDMsMSwiZGl2Iiw5KSxZZyg5LEtHLDUsMiwibmctdGVtcGxhdGUiLG51bGwsMTAsS2YpLCRnKCl9aWYoMiZ0KXtjb25zdCB0PXFnKDMpLG49cWcoMTApLGU9Z3AoKTt3cygxKSxKZygibmdJZiIsZS5pbnB1dE9wcy5sZW5ndGg+MCkoIm5nSWZFbHNlIix0KSx3cyg2KSxKZygia2luZCIsInNlbGYiKSgib3BOYW1lIixlLm9wSW5mby5vcF9uYW1lKSgib3BEYXRhIixlLm9wSW5mbyksd3MoMSksSmcoIm5nSWYiLGUudG90YWxOdW1Db25zdW1lcnM+MCkoIm5nSWZFbHNlIixuKX19ZnVuY3Rpb24gdFkodCxuKXsxJnQmJihLZygwLCJzcGFuIiwyNiksSnAoMSwiIChPcCBpbmZvIHVuYXZhaWxhYmxlLikgIiksJGcoKSl9ZnVuY3Rpb24gblkodCxuKXsxJnQmJihLZygwLCJkaXYiLDI3KSxKcCgxLCIgTm8gZ3JhcGggb3Agc2VsZWN0ZWQuIENsaWNrIGEgdGVuc29yIG5hbWUgaW4gdGhlIEdyYXBoIEV4ZWN1dGlvbnMgdGFibGUgdG8gdmlldyB0aGUgbmVpZ2hib3Job29kIG9mIHRoZSB0ZW5zb3IncyBvcCBpbiBpdHMgZ3JhcGguICIpLCRnKCkpfUdHLsm1ZmFjPWZ1bmN0aW9uIHQobil7cmV0dXJuIG5ldyhufHxHRyl9LEdHLsm1Y21wPV9vKHt0eXBlOkdHLHNlbGVjdG9yczpbWyJncmFwaC1vcCJdXSxpbnB1dHM6e2tpbmQ6ImtpbmQiLG9wTmFtZToib3BOYW1lIixzbG90OiJzbG90IixvcERhdGE6Im9wRGF0YSJ9LG91dHB1dHM6e29uT3BOYW1lQ2xpY2s6Im9uT3BOYW1lQ2xpY2sifSxkZWNsczo5LHZhcnM6Nyxjb25zdHM6W1sxLCJvcC1jb250YWluZXIiXSxbMSwiaW5wdXQtdGVuc29yLW5hbWUiXSxbMSwib3AtbmFtZSIsMywibmdDbGFzcyIsImNsaWNrIl0sWyJjbGFzcyIsInNsb3QiLDQsIm5nSWYiXSxbImNsYXNzIiwib3AtdHlwZSIsNCwibmdJZiIsIm5nSWZFbHNlIl0sWyJvcEluZm9NaXNzaW5nIiwiIl0sWzEsInNsb3QiXSxbMywibmdTd2l0Y2giXSxbNCwibmdTd2l0Y2hDYXNlIl0sWzEsIm9wLXR5cGUiXSxbMSwib3AtaW5mby1taXNzaW5nIl1dLHRlbXBsYXRlOmZ1bmN0aW9uIHQobixlKXtpZigxJm4mJihLZygwLCJidXR0b24iLDApLEtnKDEsImRpdiIsMSksS2coMiwiYnV0dG9uIiwyKSxjcCgiY2xpY2siLChmdW5jdGlvbiB0KCl7cmV0dXJuIGUub25PcE5hbWVDbGljay5lbWl0KHtvcF9uYW1lOmUub3BOYW1lfSl9KSksS2coMywic3BhbiIpLEpwKDQpLCRnKCksJGcoKSxZZyg1LFZHLDUsNCwiZGl2IiwzKSwkZygpLFlnKDYsakcsMiwxLCJkaXYiLDQpLFlnKDcsVUcsMiwwLCJuZy10ZW1wbGF0ZSIsbnVsbCw1LEtmKSwkZygpKSwyJm4pe2NvbnN0IHQ9cWcoOCk7d3MoMiksSmcoIm5nQ2xhc3MiLHVmKDUsV0csInNlbGYiPT09ZS5raW5kPyJzZWxmLW9wLW5hbWUiOiIiKSksd3MoMiksUXAoZS5vcE5hbWUpLHdzKDEpLEpnKCJuZ0lmIiwic2VsZiIhPT1lLmtpbmQpLHdzKDEpLEpnKCJuZ0lmIix2b2lkIDAhPT1lLm9wRGF0YSkoIm5nSWZFbHNlIix0KX19LGRpcmVjdGl2ZXM6W0hNLFdNLFpNLFhNXSxzdHlsZXM6WyIub3AtY29udGFpbmVyW19uZ2NvbnRlbnQtJUNPTVAlXSB7XG4gIGJhY2tncm91bmQtY29sb3I6IHRyYW5zcGFyZW50O1xuICBib3JkZXI6IDJweCBzb2xpZCAjYzZjYWQxO1xuICBib3JkZXItcmFkaXVzOiA0cHg7XG4gIGJveC1zaGFkb3c6IDFweCAzcHggI2VlZTtcbiAgY3Vyc29yOiBwb2ludGVyO1xuICBtYXJnaW46IDAgNXB4IDAgMDtcbiAgcGFkZGluZzogMnB4IDZweDtcbiAgdGV4dC1hbGlnbjogcmlnaHQ7XG4gIHdpZHRoOiAyMDBweDtcbn1cblxuLm9wLWNvbnRhaW5lcltfbmdjb250ZW50LSVDT01QJV06Zm9jdXMge1xuICBvdXRsaW5lOiAwO1xufVxuXG4ub3AtY29udGFpbmVyW19uZ2NvbnRlbnQtJUNPTVAlXTpob3ZlciB7XG4gIGJvcmRlcjogMnB4IHNvbGlkICNmZmQzYjI7XG59XG5cbi5vcC1pbmZvLW1pc3NpbmdbX25nY29udGVudC0lQ09NUCVdIHtcbiAgY29sb3I6ICM4MDgwODA7XG59XG5cbi5vcC1uYW1lW19uZ2NvbnRlbnQtJUNPTVAlXSB7XG4gIGJhY2tncm91bmQtY29sb3I6IHRyYW5zcGFyZW50O1xuICBib3JkZXI6IG5vbmU7XG4gIGN1cnNvcjogcG9pbnRlcjtcbiAgZGlzcGxheTogaW5saW5lLWJsb2NrO1xuICBvdmVyZmxvdy13cmFwOiBhbnl3aGVyZTtcbiAgcGFkZGluZzogMDtcbiAgdGV4dC1hbGlnbjogcmlnaHQ7XG4gIHRleHQtZGVjb3JhdGlvbjogdW5kZXJsaW5lO1xuICB3aGl0ZS1zcGFjZTogcHJlLXdyYXA7XG59XG5cbi5vcC1uYW1lW19uZ2NvbnRlbnQtJUNPTVAlXTpmb2N1cyB7XG4gIG91dGxpbmU6IDA7XG59XG5cbi5vcC10eXBlW19uZ2NvbnRlbnQtJUNPTVAlXSB7XG4gIGJhY2tncm91bmQtY29sb3I6ICNlM2U1ZTg7XG4gIGJvcmRlcjogMXB4IHNvbGlkICNjMGMwYzA7XG4gIGJvcmRlci1yYWRpdXM6IDRweDtcbiAgZGlzcGxheTogaW5saW5lLWJsb2NrO1xuICBmb250LWZhbWlseTogJ1JvYm90byBNb25vJywgbW9ub3NwYWNlO1xuICBmb250LXNpemU6IDEwcHg7XG4gIGhlaWdodDogMTRweDtcbiAgbGluZS1oZWlnaHQ6IDE0cHg7XG4gIG1hcmdpbi10b3A6IDNweDtcbiAgcGFkZGluZzogMXB4IDNweDtcbiAgd2lkdGg6IG1heC1jb250ZW50O1xufVxuXG4uc2VsZi1vcC1uYW1lW19uZ2NvbnRlbnQtJUNPTVAlXSB7XG4gIGZvbnQtd2VpZ2h0OiBib2xkO1xuICB0ZXh0LWRlY29yYXRpb246IG5vbmU7XG59XG5cbi5zbG90W19uZ2NvbnRlbnQtJUNPTVAlXSB7XG4gIGNvbG9yOiAjNzA3MDcwO1xufSJdfSk7Y2xhc3MgZVl7Y29uc3RydWN0b3IoKXt0aGlzLm9uR3JhcGhPcE5hdmlnYXRlPW5ldyBFZn1nZXQgZ3JhcGhJZCgpe3JldHVybiB0aGlzLm9wSW5mby5ncmFwaF9pZHNbdGhpcy5vcEluZm8uZ3JhcGhfaWRzLmxlbmd0aC0xXX1nZXQgdG90YWxOdW1Db25zdW1lcnMoKXtyZXR1cm4gdGhpcy5jb25zdW1lck9wcy5yZWR1Y2UoKCh0LG4pPT50K24ubGVuZ3RoKSwwKX19ZVkuybVmYWM9ZnVuY3Rpb24gdChuKXtyZXR1cm4gbmV3KG58fGVZKX0sZVkuybVjbXA9X28oe3R5cGU6ZVksc2VsZWN0b3JzOltbImdyYXBoLWNvbXBvbmVudCJdXSxpbnB1dHM6e29wSW5mbzoib3BJbmZvIixpbnB1dE9wczoiaW5wdXRPcHMiLGNvbnN1bWVyT3BzOiJjb25zdW1lck9wcyJ9LG91dHB1dHM6e29uR3JhcGhPcE5hdmlnYXRlOiJvbkdyYXBoT3BOYXZpZ2F0ZSJ9LGRlY2xzOjksdmFyczoyLGNvbnN0czpmdW5jdGlvbigpe3ZhciB0LG4sZTtyZXR1cm4gdD1ndSh0PSJ1bmRlZmluZWQiIT10eXBlb2YgbmdJMThuQ2xvc3VyZU1vZGUmJm5nSTE4bkNsb3N1cmVNb2RlP2dvb2cuZ2V0TXNnKCJ7VkFSX1BMVVJBTCwgcGx1cmFsLCA9MCB7Y29uc3VtZXJ9ID0xIHtjb25zdW1lcn0gb3RoZXIge2NvbnN1bWVyc319Iik6JGxvY2FsaXplYDrikJ9mZTU1ZjliMTkzZWEyMGFhZTViNTYzNWU2OGQ5Mzg2NTAzODQ3NzQ24pCfNDk1NTEzMzc0MDg0MTI5OTg1MTp7VkFSX1BMVVJBTCwgcGx1cmFsLCA9MCB7Y29uc3VtZXJ9ID0xIHtjb25zdW1lcn0gb3RoZXIge2NvbnN1bWVyc319YCx7VkFSX1BMVVJBTDoi77+9MO+/vSJ9KSxuPSJ1bmRlZmluZWQiIT10eXBlb2YgbmdJMThuQ2xvc3VyZU1vZGUmJm5nSTE4bkNsb3N1cmVNb2RlP2dvb2cuZ2V0TXNnKCIgeyRpY3V9Iix7aWN1OnR9KTokbG9jYWxpemVgOuKQn2JhYTQ2MGUyZjJiODU3ZTI2MjkyYjI0NmZjMThhZTBlYTliNWU1MzfikJ81NTU2MzQwMzQzODUwMTY1NTE2OiAke3R9OklDVTpgLGU9Z3UoZT0idW5kZWZpbmVkIiE9dHlwZW9mIG5nSTE4bkNsb3N1cmVNb2RlJiZuZ0kxOG5DbG9zdXJlTW9kZT9nb29nLmdldE1zZygie1ZBUl9QTFVSQUwsIHBsdXJhbCwgPTAge3RlbnNvcn0gPTEge3RlbnNvcn0gb3RoZXIge3RlbnNvcnN9fSIpOiRsb2NhbGl6ZWA64pCfNmFhNzVmNjI3ZTBkYzE2MTUwZWY0NDg0NjRlMGM4NTdhYWEwZGMxOOKQnzUxNTY3MTI5MzUxNTA1ODY4Nzg6e1ZBUl9QTFVSQUwsIHBsdXJhbCwgPTAge3RlbnNvcn0gPTEge3RlbnNvcn0gb3RoZXIge3RlbnNvcnN9fWAse1ZBUl9QTFVSQUw6Iu+/vTDvv70ifSksW1sxLCJncmFwaC1zdHJ1Y3R1cmUtY29udGFpbmVyIl0sWzQsIm5nSWYiLCJuZ0lmRWxzZSJdLFsib3BJbmZvTWlzc2luZyIsIiJdLFsibm9PcEZvY3VzZWQiLCIiXSxbImNsYXNzIiwiaW5wdXRzLWNvbnRhaW5lciIsNCwibmdJZiIsIm5nSWZFbHNlIl0sWyJub0lucHV0cyIsIiJdLFsxLCJzZWxmLW9wLWNvbnRhaW5lciJdLFsxLCJzZWxmLW9wLWhlYWRlciJdLFszLCJraW5kIiwib3BOYW1lIiwib3BEYXRhIiwib25PcE5hbWVDbGljayJdLFsiY2xhc3MiLCJjb25zdW1lcnMtY29udGFpbmVyIiw0LCJuZ0lmIiwibmdJZkVsc2UiXSxbIm5vQ29uc3VtZXJzIiwiIl0sWzEsImlucHV0cy1jb250YWluZXIiXSxbImNsYXNzIiwiaW5wdXQtb3Atc2VjdGlvbiIsNCwibmdGb3IiLCJuZ0Zvck9mIl0sWzEsImlucHV0LW9wLXNlY3Rpb24iXSxbMSwiaW5wdXQtc2xvdC1oZWFkZXIiXSxbMywia2luZCIsIm9wTmFtZSIsInNsb3QiLCJvcERhdGEiLCJvbk9wTmFtZUNsaWNrIl0sWzEsImlucHV0cy1jb250YWluZXIiLCJuby1pbnB1dHMtaW5kaWNhdG9yIl0sWzEsImNvbnN1bWVycy1jb250YWluZXIiXSxbImNsYXNzIiwic2xvdC1jb25zdW1lcnMtY29udGFpbmVyIiw0LCJuZ0ZvciIsIm5nRm9yT2YiXSxbMSwic2xvdC1jb25zdW1lcnMtY29udGFpbmVyIl0sWzEsInNsb3QtY29uc3VtZXJzLWhlYWRlciJdLG4sWyJjbGFzcyIsImNvbnN1bWVyLXNlY3Rpb24iLDQsIm5nRm9yIiwibmdGb3JPZiJdLFsxLCJjb25zdW1lci1zZWN0aW9uIl0sWzEsIm9wLWNvbnN1bWVycy1jb250YWluZXIiXSwidW5kZWZpbmVkIiE9dHlwZW9mIG5nSTE4bkNsb3N1cmVNb2RlJiZuZ0kxOG5DbG9zdXJlTW9kZT9nb29nLmdldE1zZygiIHskaWN1fSIse2ljdTplfSk6JGxvY2FsaXplYDrikJ84OTM0NzZjMmM0MjFjZWU0NzY2M2M5NzMyZmE0MWE3NTBkM2E3M2Rm4pCfMjQ2MDY3MDUzNzM1MTYyNjM0OiAke2V9OklDVTpgLFsxLCJvcC1pbmZvLW1pc3NpbmciXSxbMSwibm8tb3AtZm9jdXNlZCJdXX0sdGVtcGxhdGU6ZnVuY3Rpb24gdChuLGUpe2lmKDEmbiYmKEtnKDAsImRpdiIpLEtnKDEsImRpdiIpLEpwKDIsIkdyYXBoIFN0cnVjdHVyZSIpLCRnKCksS2coMywiZGl2IiwwKSxZZyg0LCRHLDExLDcsImRpdiIsMSksJGcoKSxZZyg1LHRZLDIsMCwibmctdGVtcGxhdGUiLG51bGwsMixLZiksWWcoNyxuWSwyLDAsIm5nLXRlbXBsYXRlIixudWxsLDMsS2YpLCRnKCkpLDImbil7Y29uc3QgdD1xZyg4KTt3cyg0KSxKZygibmdJZiIsbnVsbCE9ZS5vcEluZm8pKCJuZ0lmRWxzZSIsdCl9fSxkaXJlY3RpdmVzOltXTSxHRyxqTV0sc3R5bGVzOlsiW19uZ2hvc3QtJUNPTVAlXSB7XG4gIG92ZXJmbG93LXk6IGF1dG87XG59XG5cbi5jb25zdW1lcnMtY29udGFpbmVyW19uZ2NvbnRlbnQtJUNPTVAlXSB7XG4gIHBhZGRpbmctYm90dG9tOiA1cHg7XG4gIG92ZXJmbG93LXg6IGF1dG87XG4gIHdoaXRlLXNwYWNlOiBub3dyYXA7XG59XG5cbi5jb25zdW1lci1zZWN0aW9uW19uZ2NvbnRlbnQtJUNPTVAlXSB7XG4gIGRpc3BsYXk6IGJsb2NrO1xuICBtYXJnaW46IDVweCAwO1xufVxuXG4uZ3JhcGgtc3RydWN0dXJlLWNvbnRhaW5lcltfbmdjb250ZW50LSVDT01QJV0ge1xuICBmb250LXNpemU6IDEycHg7XG4gIG92ZXJmbG93LXk6IGF1dG87XG4gIHdoaXRlLXNwYWNlOiBub3dyYXA7XG59XG5cbi5pbnB1dHMtY29udGFpbmVyW19uZ2NvbnRlbnQtJUNPTVAlXSB7XG4gIGJvcmRlci1ib3R0b206IDFweCBzb2xpZCByZ2IoMCwgMCwgMCwgMC4xMik7XG4gIG1hcmdpbi10b3A6IDVweDtcbiAgb3ZlcmZsb3cteDogYXV0bztcbiAgcGFkZGluZy1ib3R0b206IDA7XG4gIHdoaXRlLXNwYWNlOiBub3dyYXA7XG59XG5cbi5pbnB1dC1vcC1zZWN0aW9uW19uZ2NvbnRlbnQtJUNPTVAlXSB7XG4gIGJvcmRlci1yaWdodDogMXB4IHNvbGlkIHJnYigwLCAwLCAwLCAwLjEyKTtcbiAgZGlzcGxheTogaW5saW5lLWJsb2NrO1xuICBtYXJnaW4tcmlnaHQ6IDVweDtcbiAgcGFkZGluZy1ib3R0b206IDVweDtcbn1cblxuLmlucHV0LXNsb3QtaGVhZGVyW19uZ2NvbnRlbnQtJUNPTVAlXSB7XG4gIFxuICBiYWNrZ3JvdW5kLWNvbG9yOiAjZmZmMDk5O1xuICBtYXJnaW4tYm90dG9tOiA1cHg7XG59XG5cbi5pbnB1dC10ZW5zb3ItbmFtZVtfbmdjb250ZW50LSVDT01QJV0ge1xuICBkaXNwbGF5OiBibG9jaztcbiAgd2hpdGUtc3BhY2U6IG5vd3JhcDtcbn1cblxuLm5vLW9wLWZvY3VzZWRbX25nY29udGVudC0lQ09NUCVdIHtcbiAgY29sb3I6ICM4MDgwODA7XG4gIGZvbnQtZmFtaWx5OiAnUm9ib3RvJywgQXJpYWwsIEhlbHZldGljYSwgc2Fucy1zZXJpZjtcbiAgZm9udC1zaXplOiAxM3B4O1xuICB3aGl0ZS1zcGFjZTogbm9ybWFsO1xufVxuXG4uc2VsZi1vcC1oZWFkZXJbX25nY29udGVudC0lQ09NUCVdIHtcbiAgZm9udC13ZWlnaHQ6IGJvbGQ7XG4gIG1hcmdpbi1ib3R0b206IDVweDtcbn1cblxuLnNlbGYtb3AtY29udGFpbmVyW19uZ2NvbnRlbnQtJUNPTVAlXSB7XG4gIGJvcmRlci1ib3R0b206IDFweCBzb2xpZCByZ2IoMCwgMCwgMCwgMC4xMik7XG4gIHBhZGRpbmctYm90dG9tOiA1cHg7XG59XG5cbi5zbG90LWNvbnN1bWVycy1jb250YWluZXJbX25nY29udGVudC0lQ09NUCVdIHtcbiAgYm9yZGVyLXJpZ2h0OiAxcHggc29saWQgcmdiKDAsIDAsIDAsIDAuMTIpO1xuICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7XG4gIG1hcmdpbi1yaWdodDogNXB4O1xuICBwYWRkaW5nLXRvcDogNXB4O1xuICB2ZXJ0aWNhbC1hbGlnbjogdG9wO1xufVxuXG4uc2xvdC1jb25zdW1lcnMtaGVhZGVyW19uZ2NvbnRlbnQtJUNPTVAlXSB7XG4gIHdoaXRlLXNwYWNlOiBub3dyYXA7XG59Il0sY2hhbmdlRGV0ZWN0aW9uOjB9KTtjbGFzcyBhWXtjb25zdHJ1Y3Rvcih0KXt0aGlzLnN0b3JlPXQsdGhpcy5vcEluZm8kPXRoaXMuc3RvcmUucGlwZShsdihDVykpLHRoaXMuaW5wdXRPcHMkPXRoaXMuc3RvcmUucGlwZShsdihNVykpLHRoaXMuY29uc3VtZXJPcHMkPXRoaXMuc3RvcmUucGlwZShsdihQVykpfW9uR3JhcGhPcE5hdmlnYXRlKHQpe3RoaXMuc3RvcmUuZGlzcGF0Y2goT1UodCkpfX1mdW5jdGlvbiBvWSh0LG4pezEmdCYmKEtnKDAsImRpdiIsMTIpLEpwKDEsIuKWtiIpLCRnKCkpfWFZLsm1ZmFjPWZ1bmN0aW9uIHQobil7cmV0dXJuIG5ldyhufHxhWSkoWmcoY3YpKX0sYVkuybVjbXA9X28oe3R5cGU6YVksc2VsZWN0b3JzOltbInRmLWRlYnVnZ2VyLXYyLWdyYXBoIl1dLGRlY2xzOjQsdmFyczo5LGNvbnN0czpbWzMsIm9wSW5mbyIsImlucHV0T3BzIiwiY29uc3VtZXJPcHMiLCJvbkdyYXBoT3BOYXZpZ2F0ZSJdXSx0ZW1wbGF0ZTpmdW5jdGlvbiB0KG4sZSl7MSZuJiYoS2coMCwiZ3JhcGgtY29tcG9uZW50IiwwKSxjcCgib25HcmFwaE9wTmF2aWdhdGUiLChmdW5jdGlvbiB0KG4pe3JldHVybiBlLm9uR3JhcGhPcE5hdmlnYXRlKG4pfSkpLHlmKDEsImFzeW5jIikseWYoMiwiYXN5bmMiKSx5ZigzLCJhc3luYyIpLCRnKCkpLDImbiYmSmcoIm9wSW5mbyIsa2YoMSwzLGUub3BJbmZvJCkpKCJpbnB1dE9wcyIsa2YoMiw1LGUuaW5wdXRPcHMkKSkoImNvbnN1bWVyT3BzIixrZigzLDcsZS5jb25zdW1lck9wcyQpKX0sZGlyZWN0aXZlczpbZVldLHBpcGVzOltvT10sZW5jYXBzdWxhdGlvbjoyfSk7Y29uc3Qgclk9ZnVuY3Rpb24odCxuKXtyZXR1cm57dGVuc29yRGVidWdNb2RlOnQsYXJyYXk6bn19O2Z1bmN0aW9uIGlZKHQsbil7aWYoMSZ0JiZ0cCgwLCJkZWJ1Zy10ZW5zb3ItdmFsdWUiLDE3KSwyJnQpe2NvbnN0IHQ9Z3AoMikuJGltcGxpY2l0LG49Z3AoMik7SmcoImRlYnVnVGVuc29yVmFsdWUiLG4ucGFyc2VEZWJ1Z1RlbnNvclZhbHVlKGZmKDEsclksbi5ncmFwaEV4ZWN1dGlvbkRhdGFbdF0udGVuc29yX2RlYnVnX21vZGUsbi5ncmFwaEV4ZWN1dGlvbkRhdGFbdF0uZGVidWdfdGVuc29yX3ZhbHVlKSkpfX1mdW5jdGlvbiBjWSh0LG4pe2lmKDEmdCl7Y29uc3QgdD1vcCgpO0tnKDAsImRpdiIpLEtnKDEsImRpdiIsMTMpLEtnKDIsImJ1dHRvbiIsMTQpLGNwKCJjbGljayIsKGZ1bmN0aW9uIG4oKXtqcih0KTtjb25zdCBlPWdwKCkuJGltcGxpY2l0LGE9Z3AoMik7cmV0dXJuIGEub25UZW5zb3JOYW1lQ2xpY2suZW1pdCh7aW5kZXg6ZSxncmFwaF9pZDphLmdyYXBoRXhlY3V0aW9uRGF0YVtlXS5ncmFwaF9pZCxvcF9uYW1lOmEuZ3JhcGhFeGVjdXRpb25EYXRhW2VdLm9wX25hbWV9KX0pKSxKcCgzKSwkZygpLEtnKDQsImRpdiIsMTUpLEpwKDUpLCRnKCksJGcoKSxZZyg2LGlZLDEsNCwiZGVidWctdGVuc29yLXZhbHVlIiwxNiksJGcoKX1pZigyJnQpe2NvbnN0IHQ9Z3AoKS4kaW1wbGljaXQsbj1ncCgyKTt3cygyKSxfcCgidGl0bGUiLG4uZ2V0VGVuc29yTmFtZSh0KSksd3MoMSksS3AoIiAiLG4uZ2V0VGVuc29yTmFtZSh0KSwiICIpLHdzKDIpLFFwKG4uZ3JhcGhFeGVjdXRpb25EYXRhW3RdLm9wX3R5cGUpLHdzKDEpLEpnKCJuZ0lmIixudWxsIT09bi5ncmFwaEV4ZWN1dGlvbkRhdGFbdF0uZGVidWdfdGVuc29yX3ZhbHVlKX19ZnVuY3Rpb24gc1kodCxuKXsxJnQmJihLZygwLCJkaXYiLDE4KSxKcCgxLCIgTG9hZGluZy4uLiAiKSwkZygpKX1jb25zdCBsWT1mdW5jdGlvbih0KXtyZXR1cm57ImlucHV0LW9mLWZvY3VzIjp0fX07ZnVuY3Rpb24gbVkodCxuKXtpZigxJnQmJihLZygwLCJkaXYiLDUpLEtnKDEsImRpdiIsNiksS2coMiwiZGl2Iiw3KSxZZygzLG9ZLDIsMCwiZGl2Iiw4KSxKcCg0KSwkZygpLFlnKDUsY1ksNyw0LCJkaXYiLDkpLFlnKDYsc1ksMiwwLCJuZy10ZW1wbGF0ZSIsMTAsMTEsS2YpLCRnKCksJGcoKSksMiZ0KXtjb25zdCB0PW4uJGltcGxpY2l0LGU9cWcoNyksYT1ncCgyKTt3cygxKSxKZygibmdDbGFzcyIsdWYoNSxsWSxhLmlzSW5wdXRPZkZvY3VzKHQpKSksd3MoMiksSmcoIm5nSWYiLHQ9PT1hLmZvY3VzSW5kZXgpLHdzKDEpLEtwKCIgIix0LCIgIiksd3MoMSksSmcoIm5nSWYiLGEuZ3JhcGhFeGVjdXRpb25EYXRhW3RdKSgibmdJZkVsc2UiLGUpfX1mdW5jdGlvbiBkWSh0LG4pe2lmKDEmdCl7Y29uc3QgdD1vcCgpO0tnKDAsImNkay12aXJ0dWFsLXNjcm9sbC12aWV3cG9ydCIsMyksY3AoInNjcm9sbGVkSW5kZXhDaGFuZ2UiLChmdW5jdGlvbiBuKGUpe3JldHVybiBqcih0KSxncCgpLm9uU2Nyb2xsZWRJbmRleENoYW5nZS5lbWl0KGUpfSkpLFlnKDEsbVksOCw3LCJkaXYiLDQpLCRnKCl9aWYoMiZ0KXtjb25zdCB0PWdwKCk7d3MoMSksSmcoImNka1ZpcnR1YWxGb3JPZiIsdC5ncmFwaEV4ZWN1dGlvbkluZGljZXMpfX1jbGFzcyBnWXtjb25zdHJ1Y3Rvcigpe3RoaXMub25TY3JvbGxlZEluZGV4Q2hhbmdlPW5ldyBFZix0aGlzLm9uVGVuc29yTmFtZUNsaWNrPW5ldyBFZix0aGlzLnBhcnNlRGVidWdUZW5zb3JWYWx1ZT10Ryx0aGlzLlRFU1RfT05MWT17Z2V0Vmlld1BvcnQ6KCk9PnRoaXMudmlld1BvcnR9fW5nT25DaGFuZ2VzKHQpe2lmKHRoaXMudmlld1BvcnQmJnQuZm9jdXNJbmRleCYmbnVsbCE9PXQuZm9jdXNJbmRleC5jdXJyZW50VmFsdWUpe2NvbnN0IG49dGhpcy52aWV3UG9ydC5nZXRSZW5kZXJlZFJhbmdlKCksZT10LmZvY3VzSW5kZXguY3VycmVudFZhbHVlLGE9TWF0aC5yb3VuZCgobi5lbmQtbi5zdGFydCkvMyksbz1NYXRoLm1heChlLWEsMCk7dGhpcy52aWV3UG9ydC5zY3JvbGxUb0luZGV4KG8sZT49bi5zdGFydCYmZTxuLmVuZD8ic21vb3RoIjp2b2lkIDApfX1nZXRUZW5zb3JOYW1lKHQpe3JldHVybmAke3RoaXMuZ3JhcGhFeGVjdXRpb25EYXRhW3RdLm9wX25hbWV9OiR7dGhpcy5ncmFwaEV4ZWN1dGlvbkRhdGFbdF0ub3V0cHV0X3Nsb3R9YH1pc0lucHV0T2ZGb2N1cyh0KXtyZXR1cm4gbnVsbCE9PXRoaXMuZm9jdXNJbnB1dEluZGljZXMmJnRoaXMuZm9jdXNJbnB1dEluZGljZXMuaW5jbHVkZXModCl9fWdZLsm1ZmFjPWZ1bmN0aW9uIHQobil7cmV0dXJuIG5ldyhufHxnWSl9LGdZLsm1Y21wPV9vKHt0eXBlOmdZLHNlbGVjdG9yczpbWyJncmFwaC1leGVjdXRpb25zLWNvbXBvbmVudCJdXSx2aWV3UXVlcnk6ZnVuY3Rpb24gdChuLGUpe3ZhciBhOzEmbiYmVWYoUEEsITApLDImbiYmVmYoYT1aZigpKSYmKGUudmlld1BvcnQ9YS5maXJzdCl9LGlucHV0czp7bnVtR3JhcGhFeGVjdXRpb25zOiJudW1HcmFwaEV4ZWN1dGlvbnMiLGdyYXBoRXhlY3V0aW9uRGF0YToiZ3JhcGhFeGVjdXRpb25EYXRhIixncmFwaEV4ZWN1dGlvbkluZGljZXM6ImdyYXBoRXhlY3V0aW9uSW5kaWNlcyIsZm9jdXNJbmRleDoiZm9jdXNJbmRleCIsZm9jdXNJbnB1dEluZGljZXM6ImZvY3VzSW5wdXRJbmRpY2VzIn0sb3V0cHV0czp7b25TY3JvbGxlZEluZGV4Q2hhbmdlOiJvblNjcm9sbGVkSW5kZXhDaGFuZ2UiLG9uVGVuc29yTmFtZUNsaWNrOiJvblRlbnNvck5hbWVDbGljayJ9LGZlYXR1cmVzOltwcl0sZGVjbHM6NCx2YXJzOjIsY29uc3RzOltbMSwiZ3JhcGgtZXhlY3V0aW9ucy1jb250YWluZXIiXSxbMSwiZ3JhcGgtZXhlY3V0aW9ucy10aXRsZSJdLFsiaXRlbVNpemUiLCIzOCIsImNsYXNzIiwiZ3JhcGgtZXhlY3V0aW9ucy12aWV3cG9ydCIsMywic2Nyb2xsZWRJbmRleENoYW5nZSIsNCwibmdJZiJdLFsiaXRlbVNpemUiLCIzOCIsMSwiZ3JhcGgtZXhlY3V0aW9ucy12aWV3cG9ydCIsMywic2Nyb2xsZWRJbmRleENoYW5nZSJdLFsiY2xhc3MiLCJ0ZW5zb3ItY29udGFpbmVyIiw0LCJjZGtWaXJ0dWFsRm9yIiwiY2RrVmlydHVhbEZvck9mIl0sWzEsInRlbnNvci1jb250YWluZXIiXSxbMSwidGVuc29yLWl0ZW0iLDMsIm5nQ2xhc3MiXSxbMSwiZ3JhcGgtZXhlY3V0aW9uLWluZGV4Il0sWyJjbGFzcyIsImdyYXBoLWV4ZWN1dGlvbi1mb2N1cyIsNCwibmdJZiJdLFs0LCJuZ0lmIiwibmdJZkVsc2UiXSxbImNsYXNzIiwidGVuc29yLWl0ZW0iXSxbImRhdGFMb2FkaW5nIiwiIl0sWzEsImdyYXBoLWV4ZWN1dGlvbi1mb2N1cyJdLFsxLCJ0ZW5zb3ItbmFtZS1hbmQtb3AtdHlwZSJdLFsxLCJ0ZW5zb3ItbmFtZSIsMywidGl0bGUiLCJjbGljayJdLFsxLCJvcC10eXBlIl0sWzMsImRlYnVnVGVuc29yVmFsdWUiLDQsIm5nSWYiXSxbMywiZGVidWdUZW5zb3JWYWx1ZSJdLFsxLCJsb2FkaW5nLXNwaW5uZXIiXV0sdGVtcGxhdGU6ZnVuY3Rpb24gdChuLGUpezEmbiYmKEtnKDAsImRpdiIsMCksS2coMSwiZGl2IiwxKSxKcCgyKSwkZygpLFlnKDMsZFksMiwxLCJjZGstdmlydHVhbC1zY3JvbGwtdmlld3BvcnQiLDIpLCRnKCkpLDImbiYmKHdzKDIpLEtwKCIgR3JhcGggRXhlY3V0aW9ucyAoIixlLm51bUdyYXBoRXhlY3V0aW9ucywiKSAiKSx3cygxKSxKZygibmdJZiIsbnVsbCE9PWUubnVtR3JhcGhFeGVjdXRpb25zJiZlLm51bUdyYXBoRXhlY3V0aW9ucz4wKSl9LGRpcmVjdGl2ZXM6W1dNLFBBLGZBLHlBLEhNLE9HXSxzdHlsZXM6WyIuZ3JhcGgtZXhlY3V0aW9ucy1jb250YWluZXJbX25nY29udGVudC0lQ09NUCVdIHtcbiAgYm9yZGVyLWxlZnQ6IDFweCBzb2xpZCByZ2JhKDAsIDAsIDAsIDAuMTIpO1xuICBkaXNwbGF5OiBmbGV4O1xuICBmbGV4LWRpcmVjdGlvbjogY29sdW1uO1xuICBoZWlnaHQ6IDEwMCU7XG4gIG1hcmdpbi1sZWZ0OiA4cHg7XG4gIHBhZGRpbmctbGVmdDogMTBweDtcbn1cblxuLmdyYXBoLWV4ZWN1dGlvbi1mb2N1c1tfbmdjb250ZW50LSVDT01QJV0ge1xuICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7XG59XG5cbi5ncmFwaC1leGVjdXRpb24taW5kZXhbX25nY29udGVudC0lQ09NUCVdIHtcbiAgY29sb3I6ICM3NTc1NzU7XG4gIGRpc3BsYXk6IGlubGluZS1ibG9jaztcbiAgcGFkZGluZy1yaWdodDogNHB4O1xuICB0ZXh0LWFsaWduOiByaWdodDtcbiAgd2lkdGg6IDQwcHg7XG59XG5cbi5ncmFwaC1leGVjdXRpb25zLXRpdGxlW19uZ2NvbnRlbnQtJUNPTVAlXSB7XG4gIGJveC1zaGFkb3c6IDAgNXB4IDNweCAtM3B4ICNjY2M7XG4gIHBhZGRpbmctYm90dG9tOiA1cHg7XG59XG5cbi5ncmFwaC1leGVjdXRpb25zLXZpZXdwb3J0W19uZ2NvbnRlbnQtJUNPTVAlXSB7XG4gIGZsZXgtZ3JvdzogMTtcbiAgZm9udC1zaXplOiAxMnB4O1xuICB3aWR0aDogMTAwJTtcbiAgb3ZlcmZsb3cteDogaGlkZGVuO1xufVxuXG4uaW5wdXQtb2YtZm9jdXNbX25nY29udGVudC0lQ09NUCVdIHtcbiAgXG4gIGJhY2tncm91bmQtY29sb3I6ICNmZmYwOTk7XG59XG5cbi5sb2FkaW5nLXNwaW5uZXJbX25nY29udGVudC0lQ09NUCVdIHtcbiAgZGlzcGxheTogaW5saW5lLWJsb2NrO1xufVxuXG4ub3AtdHlwZVtfbmdjb250ZW50LSVDT01QJV0ge1xuICBiYWNrZ3JvdW5kLWNvbG9yOiAjZTNlNWU4O1xuICBib3JkZXI6IDFweCBzb2xpZCAjYzBjMGMwO1xuICBib3JkZXItcmFkaXVzOiA0cHg7XG4gIGRpcmVjdGlvbjogcnRsO1xuICBkaXNwbGF5OiBibG9jaztcbiAgZm9udC1mYW1pbHk6ICdSb2JvdG8gTW9ubycsIG1vbm9zcGFjZTtcbiAgZm9udC1zaXplOiAxMHB4O1xuICBoZWlnaHQ6IDE0cHg7XG4gIGxpbmUtaGVpZ2h0OiAxNHB4O1xuICBwYWRkaW5nOiAxcHggM3B4O1xuICB3aWR0aDogbWF4LWNvbnRlbnQ7XG59XG5cbi50ZW5zb3ItY29udGFpbmVyW19uZ2NvbnRlbnQtJUNPTVAlXSB7XG4gIHdpZHRoOiAxMDAlO1xufVxuXG4udGVuc29yLWl0ZW1bX25nY29udGVudC0lQ09NUCVdIHtcbiAgYm9yZGVyLWJvdHRvbTogMXB4IHNvbGlkIHJnYmEoMCwgMCwgMCwgMC4xMik7XG4gIGRpc3BsYXk6IGZsZXg7XG4gIGZsZXgtd3JhcDogbm93cmFwO1xuICBoZWlnaHQ6IDM4cHg7XG4gIGxpbmUtaGVpZ2h0OiAzOHB4O1xuICB0ZXh0LWFsaWduOiBsZWZ0O1xuICB2ZXJ0aWNhbC1hbGlnbjogbWlkZGxlO1xuICB3aGl0ZS1zcGFjZTogbm93cmFwO1xuICB3aWR0aDogMTAwJTtcbn1cblxuLnRlbnNvci1uYW1lW19uZ2NvbnRlbnQtJUNPTVAlXSB7XG4gIGJhY2tncm91bmQtY29sb3I6IHRyYW5zcGFyZW50O1xuICBib3JkZXI6IG5vbmU7XG4gIGJveC1zaXppbmc6IGJvcmRlci1ib3g7XG4gIGN1cnNvcjogcG9pbnRlcjtcbiAgZGlyZWN0aW9uOiBydGw7XG4gIGRpc3BsYXk6IGJsb2NrO1xuICBoZWlnaHQ6IDE2cHg7XG4gIGxpbmUtaGVpZ2h0OiAxNnB4O1xuICBtYXJnaW46IDJweCAwIDFweDtcbiAgbWF4LXdpZHRoOiBjYWxjKDEwMCUgLSAycHgpO1xuICBvdmVyZmxvdzogaGlkZGVuO1xuICBwYWRkaW5nOiAwIDJweDtcbiAgdGV4dC1hbGlnbjogcmlnaHQ7XG4gIHRleHQtZGVjb3JhdGlvbjogdW5kZXJsaW5lO1xuICB0ZXh0LW92ZXJmbG93OiBlbGxpcHNpcztcbiAgd2hpdGUtc3BhY2U6IG5vd3JhcDtcbn1cblxuLnRlbnNvci1uYW1lW19uZ2NvbnRlbnQtJUNPTVAlXTpmb2N1cyB7XG4gIG91dGxpbmU6IDFweCBzb2xpZCAjYzZjYWQxO1xufVxuXG4udGVuc29yLW5hbWUtYW5kLW9wLXR5cGVbX25nY29udGVudC0lQ09NUCVdIHtcbiAgZGlyZWN0aW9uOiBydGw7XG4gIGRpc3BsYXk6IGlubGluZS1ibG9jaztcbiAgb3ZlcmZsb3c6IGhpZGRlbjtcbiAgcGFkZGluZy1yaWdodDogOHB4O1xuICB0ZXh0LWFsaWduOiByaWdodDtcbiAgd2lkdGg6IDI0MHB4O1xufVxuXG5kZWJ1Zy10ZW5zb3ItdmFsdWVbX25nY29udGVudC0lQ09NUCVdIHtcbiAgZGlzcGxheTogaW5saW5lLWJsb2NrO1xuICBtYXJnaW46IDJweCAwO1xufSJdLGNoYW5nZURldGVjdGlvbjowfSk7Y2xhc3MgcFl7Y29uc3RydWN0b3IodCl7dGhpcy5zdG9yZT10LHRoaXMubnVtR3JhcGhFeGVjdXRpb25zJD10aGlzLnN0b3JlLnBpcGUobHYobVcpKSx0aGlzLmdyYXBoRXhlY3V0aW9uRGF0YSQ9dGhpcy5zdG9yZS5waXBlKGx2KGZXKSksdGhpcy5ncmFwaEV4ZWN1dGlvbkluZGljZXMkPXRoaXMuc3RvcmUucGlwZShsdihwdihtVywodD0+MD09PXQ/bnVsbDpBcnJheS5mcm9tKHtsZW5ndGg6dH0pLm1hcCgoKHQsbik9Pm4pKSkpKSksdGhpcy5mb2N1c0luZGV4JD10aGlzLnN0b3JlLnBpcGUobHYoaFcpKSx0aGlzLmZvY3VzSW5wdXRJbmRpY2VzJD10aGlzLnN0b3JlLnBpcGUobHYoT1cpKX1vblNjcm9sbGVkSW5kZXhDaGFuZ2UodCl7dGhpcy5zdG9yZS5kaXNwYXRjaChDVSh7aW5kZXg6dH0pKX1vblRlbnNvck5hbWVDbGljayh0KXt0aGlzLnN0b3JlLmRpc3BhdGNoKE1VKHQpKX19cFkuybVmYWM9ZnVuY3Rpb24gdChuKXtyZXR1cm4gbmV3KG58fHBZKShaZyhjdikpfSxwWS7JtWNtcD1fbyh7dHlwZTpwWSxzZWxlY3RvcnM6W1sidGYtZGVidWdnZXItdjItZ3JhcGgtZXhlY3V0aW9ucyJdXSxkZWNsczo2LHZhcnM6MTUsY29uc3RzOltbMywibnVtR3JhcGhFeGVjdXRpb25zIiwiZ3JhcGhFeGVjdXRpb25EYXRhIiwiZ3JhcGhFeGVjdXRpb25JbmRpY2VzIiwiZm9jdXNJbmRleCIsImZvY3VzSW5wdXRJbmRpY2VzIiwib25TY3JvbGxlZEluZGV4Q2hhbmdlIiwib25UZW5zb3JOYW1lQ2xpY2siXV0sdGVtcGxhdGU6ZnVuY3Rpb24gdChuLGUpezEmbiYmKEtnKDAsImdyYXBoLWV4ZWN1dGlvbnMtY29tcG9uZW50IiwwKSxjcCgib25TY3JvbGxlZEluZGV4Q2hhbmdlIiwoZnVuY3Rpb24gdChuKXtyZXR1cm4gZS5vblNjcm9sbGVkSW5kZXhDaGFuZ2Uobil9KSkoIm9uVGVuc29yTmFtZUNsaWNrIiwoZnVuY3Rpb24gdChuKXtyZXR1cm4gZS5vblRlbnNvck5hbWVDbGljayhuKX0pKSx5ZigxLCJhc3luYyIpLHlmKDIsImFzeW5jIikseWYoMywiYXN5bmMiKSx5Zig0LCJhc3luYyIpLHlmKDUsImFzeW5jIiksJGcoKSksMiZuJiZKZygibnVtR3JhcGhFeGVjdXRpb25zIixrZigxLDUsZS5udW1HcmFwaEV4ZWN1dGlvbnMkKSkoImdyYXBoRXhlY3V0aW9uRGF0YSIsa2YoMiw3LGUuZ3JhcGhFeGVjdXRpb25EYXRhJCkpKCJncmFwaEV4ZWN1dGlvbkluZGljZXMiLGtmKDMsOSxlLmdyYXBoRXhlY3V0aW9uSW5kaWNlcyQpKSgiZm9jdXNJbmRleCIsa2YoNCwxMSxlLmZvY3VzSW5kZXgkKSkoImZvY3VzSW5wdXRJbmRpY2VzIixrZig1LDEzLGUuZm9jdXNJbnB1dEluZGljZXMkKSl9LGRpcmVjdGl2ZXM6W2dZXSxwaXBlczpbb09dLGVuY2Fwc3VsYXRpb246Mn0pO2NvbnN0IGJZPWZ1bmN0aW9uIHVZKCl7cmV0dXJuIHdpbmRvd307ZnVuY3Rpb24gZlkodCl7Y29uc3Qgbj1iWSgpLnJlcXVpcmU7cmV0dXJuIG5ldyBQcm9taXNlKChlPT57bih0LGUpfSkpfWZ1bmN0aW9uIGhZKCl7cmV0dXJuIENSKHRoaXMsdm9pZCAwLHZvaWQgMCwoZnVuY3Rpb24qKCl7Y29uc3QgdD1iWSgpO2lmKHZvaWQgMD09PXQubW9uYWNvKXtpZighdC5yZXF1aXJlKXRocm93IG5ldyBFcnJvcigibG9hZE1vbmFjbygpIGZhaWxlZCBiZWNhdXNlIGZ1bmN0aW9uIHJlcXVpcmUoKSBpcyB1bmF2YWlsYWJsZSIpO3QucmVxdWlyZS5jb25maWcoe3BhdGhzOnt2czoiL3RmLWltcG9ydHMvdnMifX0pLHlpZWxkIGZZKFsidnMvZWRpdG9yL2VkaXRvci5tYWluIl0pLHlpZWxkIGZZKFsidnMvcHl0aG9uL3B5dGhvbi5jb250cmlidXRpb24iXSl9fSkpfWNsYXNzIF9Ze2NvbnN0cnVjdG9yKHQpe3RoaXMucmVzaXplRXZlbnREZWJvdW5jZVBlcmlvZEluTXM9MTAwLHRoaXMub25SZXNpemU9bmV3IEVmLHRoaXMubmdVbnN1YnNjcmliZSQ9bmV3IHgsdGhpcy5vblJlc2l6ZSQ9bmV3IHg7Y29uc3Qgbj1uZXcgUmVzaXplT2JzZXJ2ZXIoKCgpPT57dGhpcy5vblJlc2l6ZSQubmV4dCgpfSkpO24ub2JzZXJ2ZSh0Lm5hdGl2ZUVsZW1lbnQpLHRoaXMubmdVbnN1YnNjcmliZSQuc3Vic2NyaWJlKCgoKT0+e24udW5vYnNlcnZlKHQubmF0aXZlRWxlbWVudCl9KSl9bmdPbkluaXQoKXt0aGlzLm9uUmVzaXplJC5waXBlKG9lKDEpLGxuKHRoaXMucmVzaXplRXZlbnREZWJvdW5jZVBlcmlvZEluTXMpLGRlKHRoaXMubmdVbnN1YnNjcmliZSQpKS5zdWJzY3JpYmUoKCgpPT57dGhpcy5vblJlc2l6ZS5lbWl0KCl9KSl9bmdPbkRlc3Ryb3koKXt0aGlzLm5nVW5zdWJzY3JpYmUkLm5leHQoKSx0aGlzLm5nVW5zdWJzY3JpYmUkLmNvbXBsZXRlKCl9fV9ZLsm1ZmFjPWZ1bmN0aW9uIHQobil7cmV0dXJuIG5ldyhufHxfWSkoWmcoeHUpKX0sX1kuybVkaXI9dm8oe3R5cGU6X1ksc2VsZWN0b3JzOltbIiIsImRldGVjdFJlc2l6ZSIsIiJdXSxpbnB1dHM6e3Jlc2l6ZUV2ZW50RGVib3VuY2VQZXJpb2RJbk1zOiJyZXNpemVFdmVudERlYm91bmNlUGVyaW9kSW5NcyJ9LG91dHB1dHM6e29uUmVzaXplOiJvblJlc2l6ZSJ9fSk7Y29uc3QgQ1k9WyJjb2RlVmlld2VyQ29udGFpbmVyIl07Y2xhc3MgTVl7Y29uc3RydWN0b3IoKXt0aGlzLmxpbmVzPW51bGwsdGhpcy5mb2N1c2VkTGluZW5vPW51bGwsdGhpcy5tb25hY289bnVsbCx0aGlzLmVkaXRvcj1udWxsLHRoaXMuZGVjb3JhdGlvbnM9W10sdGhpcy5SRVNJWkVfREVCT1VOQ0VfSU5URVJWQUxfTVM9NTB9b25SZXNpemUoKXt0aGlzLmVkaXRvciYmdGhpcy5lZGl0b3IubGF5b3V0KCl9bmdPbkNoYW5nZXModCl7aWYobnVsbD09PXRoaXMubW9uYWNvKXJldHVybjtjb25zdCBuPXQubW9uYWNvP3RoaXMubGluZXM6dC5saW5lcz90LmxpbmVzLmN1cnJlbnRWYWx1ZTpudWxsO2lmKG4pe2NvbnN0IHQ9bi5qb2luKCJcbiIpO251bGw9PT10aGlzLmVkaXRvcj90aGlzLmVkaXRvcj10aGlzLm1vbmFjby5lZGl0b3IuY3JlYXRlKHRoaXMuY29kZVZpZXdlckNvbnRhaW5lci5uYXRpdmVFbGVtZW50LHt2YWx1ZTp0LGxhbmd1YWdlOiJweXRob24iLHJlYWRPbmx5OiEwLGZvbnRTaXplOjEwLG1pbmltYXA6e2VuYWJsZWQ6ITB9fSk6dGhpcy5lZGl0b3Iuc2V0VmFsdWUodCl9Y29uc3QgZT10Lm1vbmFjbz90aGlzLmZvY3VzZWRMaW5lbm86dC5mb2N1c2VkTGluZW5vP3QuZm9jdXNlZExpbmVuby5jdXJyZW50VmFsdWU6bnVsbDtpZihlJiZ0aGlzLmxpbmVzJiZudWxsIT09dGhpcy5tb25hY28pe3RoaXMuZWRpdG9yLnJldmVhbExpbmVJbkNlbnRlcihlLHRoaXMubW9uYWNvLmVkaXRvci5TY3JvbGxUeXBlLlNtb290aCk7Y29uc3QgdD10aGlzLmxpbmVzW2UtMV0ubGVuZ3RoO3RoaXMuZGVjb3JhdGlvbnM9dGhpcy5lZGl0b3IuZGVsdGFEZWNvcmF0aW9ucyh0aGlzLmRlY29yYXRpb25zLFt7cmFuZ2U6bmV3IHRoaXMubW9uYWNvLlJhbmdlKGUsMSxlLDEpLG9wdGlvbnM6e2lzV2hvbGVMaW5lOiEwLGxpbmVzRGVjb3JhdGlvbnNDbGFzc05hbWU6ImhpZ2hsaWdodC1ndXR0ZXIifX0se3JhbmdlOm5ldyB0aGlzLm1vbmFjby5SYW5nZShlLDEsZSx0KzEpLG9wdGlvbnM6e2lubGluZUNsYXNzTmFtZToiaGlnaGxpZ2h0LWxpbmUifX1dKX19fU1ZLsm1ZmFjPWZ1bmN0aW9uIHQobil7cmV0dXJuIG5ldyhufHxNWSl9LE1ZLsm1Y21wPV9vKHt0eXBlOk1ZLHNlbGVjdG9yczpbWyJzb3VyY2UtY29kZS1jb21wb25lbnQiXV0sdmlld1F1ZXJ5OmZ1bmN0aW9uIHQobixlKXt2YXIgYTsxJm4mJmpmKENZLCEwLHh1KSwyJm4mJlZmKGE9WmYoKSkmJihlLmNvZGVWaWV3ZXJDb250YWluZXI9YS5maXJzdCl9LGlucHV0czp7bGluZXM6ImxpbmVzIixmb2N1c2VkTGluZW5vOiJmb2N1c2VkTGluZW5vIixtb25hY286Im1vbmFjbyJ9LGZlYXR1cmVzOltwcl0sZGVjbHM6Mix2YXJzOjEsY29uc3RzOltbImRldGVjdFJlc2l6ZSIsIiIsMSwiY29kZS12aWV3ZXItY29udGFpbmVyIiwzLCJyZXNpemVFdmVudERlYm91bmNlUGVyaW9kSW5NcyIsIm9uUmVzaXplIl0sWyJjb2RlVmlld2VyQ29udGFpbmVyIiwiIl1dLHRlbXBsYXRlOmZ1bmN0aW9uIHQobixlKXsxJm4mJihLZygwLCJkaXYiLDAsMSksY3AoIm9uUmVzaXplIiwoZnVuY3Rpb24gdCgpe3JldHVybiBlLm9uUmVzaXplKCl9KSksJGcoKSksMiZuJiZKZygicmVzaXplRXZlbnREZWJvdW5jZVBlcmlvZEluTXMiLGUuUkVTSVpFX0RFQk9VTkNFX0lOVEVSVkFMX01TKX0sZGlyZWN0aXZlczpbX1ldLHN0eWxlczpbIi5jb2RlLXZpZXdlci1jb250YWluZXJbX25nY29udGVudC0lQ09NUCVdIHtcbiAgaGVpZ2h0OiAxMDAlO1xufVxuXG5bX25naG9zdC0lQ09NUCVdICAgICAuaGlnaGxpZ2h0LWd1dHRlciB7XG4gIGJhY2tncm91bmQ6IHJnYmEoMjU1LCAxMTEsIDAsIDAuNyk7XG4gIHdpZHRoOiA1cHggIWltcG9ydGFudDtcbn1cblxuW19uZ2hvc3QtJUNPTVAlXSAgICAgLmhpZ2hsaWdodC1saW5lIHtcbiAgYmFja2dyb3VuZDogcmdiYSgyNTUsIDExMSwgMCwgMC4zKTtcbn0iXSxjaGFuZ2VEZXRlY3Rpb246MH0pO2NsYXNzIE9Ze2NvbnN0cnVjdG9yKCl7dGhpcy5saW5lcz1udWxsLHRoaXMuZm9jdXNlZExpbmVubz1udWxsLHRoaXMubW9uYWNvJD1udWxsfW5nT25Jbml0KCl7dGhpcy5tb25hY28kPVJ0KGhZKCkpLnBpcGUoZnQoKCgpPT53aW5kb3cubW9uYWNvKSkpfX1mdW5jdGlvbiBQWSh0LG4pe2lmKDEmdCYmKEtnKDAsImRpdiIsNiksSnAoMSksJGcoKSksMiZ0KXtjb25zdCB0PWdwKCk7d3MoMSksS3AoIiAiLHQuZm9jdXNlZFNvdXJjZUxpbmVTcGVjLmZpbGVfcGF0aCwiICIpfX1mdW5jdGlvbiB4WSh0LG4pezEmdCYmKEtnKDAsImRpdiIsNyksSnAoMSwiIE5vIGZpbGUgc2VsZWN0ZWQuIENsaWNrIGEgbGluZSBudW1iZXIgaW4gdGhlIFN0YWNrIFRyYWNlIHNlY3Rpb24gdG8gc2hvdyB0aGUgc291cmNlIGNvZGUuICIpLCRnKCkpfWZ1bmN0aW9uIHlZKHQsbil7aWYoMSZ0JiZ0cCgwLCJzb3VyY2UtY29kZSIsOCksMiZ0KXtjb25zdCB0PWdwKCk7SmcoImxpbmVzIix0LmZvY3VzZWRTb3VyY2VGaWxlQ29udGVudC5saW5lcykoImZvY3VzZWRMaW5lbm8iLHQuZm9jdXNlZFNvdXJjZUxpbmVTcGVjLmxpbmVubyl9fU9ZLsm1ZmFjPWZ1bmN0aW9uIHQobil7cmV0dXJuIG5ldyhufHxPWSl9LE9ZLsm1Y21wPV9vKHt0eXBlOk9ZLHNlbGVjdG9yczpbWyJzb3VyY2UtY29kZSJdXSxpbnB1dHM6e2xpbmVzOiJsaW5lcyIsZm9jdXNlZExpbmVubzoiZm9jdXNlZExpbmVubyJ9LGRlY2xzOjIsdmFyczo1LGNvbnN0czpbWzMsImxpbmVzIiwiZm9jdXNlZExpbmVubyIsIm1vbmFjbyJdXSx0ZW1wbGF0ZTpmdW5jdGlvbiB0KG4sZSl7MSZuJiYodHAoMCwic291cmNlLWNvZGUtY29tcG9uZW50IiwwKSx5ZigxLCJhc3luYyIpKSwyJm4mJkpnKCJsaW5lcyIsZS5saW5lcykoImZvY3VzZWRMaW5lbm8iLGUuZm9jdXNlZExpbmVubykoIm1vbmFjbyIsa2YoMSwzLGUubW9uYWNvJCkpfSxkaXJlY3RpdmVzOltNWV0scGlwZXM6W29PXSxlbmNhcHN1bGF0aW9uOjJ9KTtjbGFzcyBrWXtjb25zdHJ1Y3Rvcigpe3RoaXMuZm9jdXNlZFNvdXJjZUZpbGVDb250ZW50PW51bGwsdGhpcy5mb2N1c2VkU291cmNlTGluZVNwZWM9bnVsbH19a1kuybVmYWM9ZnVuY3Rpb24gdChuKXtyZXR1cm4gbmV3KG58fGtZKX0sa1kuybVjbXA9X28oe3R5cGU6a1ksc2VsZWN0b3JzOltbInNvdXJjZS1maWxlcy1jb21wb25lbnQiXV0saW5wdXRzOntmb2N1c2VkU291cmNlRmlsZUNvbnRlbnQ6ImZvY3VzZWRTb3VyY2VGaWxlQ29udGVudCIsZm9jdXNlZFNvdXJjZUxpbmVTcGVjOiJmb2N1c2VkU291cmNlTGluZVNwZWMifSxkZWNsczo4LHZhcnM6Myxjb25zdHM6W1sxLCJzb3VyY2UtZmlsZXMtY29udGFpbmVyIl0sWzEsImhlYWRlci1zZWN0aW9uIl0sWzEsInRpdGxlLXRhZyJdLFsiY2xhc3MiLCJmaWxlLWxhYmVsIiw0LCJuZ0lmIiwibmdJZkVsc2UiXSxbIm5vRmlsZVNlbGVjdGVkIiwiIl0sWzMsImxpbmVzIiwiZm9jdXNlZExpbmVubyIsNCwibmdJZiJdLFsxLCJmaWxlLWxhYmVsIl0sWzEsIm5vLWZpbGUtc2VsZWN0ZWQiXSxbMywibGluZXMiLCJmb2N1c2VkTGluZW5vIl1dLHRlbXBsYXRlOmZ1bmN0aW9uIHQobixlKXtpZigxJm4mJihLZygwLCJkaXYiLDApLEtnKDEsImRpdiIsMSksS2coMiwiZGl2IiwyKSxKcCgzLCJTb3VyY2UgQ29kZSIpLCRnKCksWWcoNCxQWSwyLDEsImRpdiIsMyksWWcoNSx4WSwyLDAsIm5nLXRlbXBsYXRlIixudWxsLDQsS2YpLCRnKCksWWcoNyx5WSwxLDIsInNvdXJjZS1jb2RlIiw1KSwkZygpKSwyJm4pe2NvbnN0IHQ9cWcoNik7d3MoNCksSmcoIm5nSWYiLG51bGwhPT1lLmZvY3VzZWRTb3VyY2VMaW5lU3BlYykoIm5nSWZFbHNlIix0KSx3cygzKSxKZygibmdJZiIsbnVsbCE9PWUuZm9jdXNlZFNvdXJjZUZpbGVDb250ZW50JiZudWxsIT09ZS5mb2N1c2VkU291cmNlTGluZVNwZWMmJm51bGwhPT1lLmZvY3VzZWRTb3VyY2VGaWxlQ29udGVudC5saW5lcyl9fSxkaXJlY3RpdmVzOltXTSxPWV0sc3R5bGVzOlsiLmhlYWRlci1zZWN0aW9uW19uZ2NvbnRlbnQtJUNPTVAlXSB7XG4gIGJvcmRlci1ib3R0b206IDFweCBzb2xpZCByZ2JhKDAsIDAsIDAsIDAuMTIpO1xuICBkaXNwbGF5OiBmbGV4O1xuICBoZWlnaHQ6IDI0cHg7XG4gIHBhZGRpbmctYm90dG9tOiA2cHg7XG4gIHZlcnRpY2FsLWFsaWduOiBtaWRkbGU7XG4gIHdoaXRlLXNwYWNlOiBub3dyYXA7XG4gIHdpZHRoOiAxMDAlO1xufVxuXG4uZmlsZS1sYWJlbFtfbmdjb250ZW50LSVDT01QJV0ge1xuICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7XG4gIGZvbnQtd2VpZ2h0OiBub3JtYWw7XG4gIHdoaXRlLXNwYWNlOiBub3JtYWw7XG4gIG92ZXJmbG93LXdyYXA6IGFueXdoZXJlO1xuICBvdmVyZmxvdy15OiBhdXRvO1xuICBwYWRkaW5nOiAwIDIwcHg7XG59XG5cbi5uby1maWxlLXNlbGVjdGVkW19uZ2NvbnRlbnQtJUNPTVAlXSB7XG4gIGRpc3BsYXk6IGlubGluZS1ibG9jaztcbiAgY29sb3I6ICM2NjY7XG4gIHBhZGRpbmc6IDAgMjBweDtcbiAgd2hpdGUtc3BhY2U6IG5vcm1hbDtcbn1cblxuLnNvdXJjZS1maWxlcy1jb250YWluZXJbX25nY29udGVudC0lQ09NUCVdIHtcbiAgZGlzcGxheTogZmxleDtcbiAgZmxleC1kaXJlY3Rpb246IGNvbHVtbjtcbiAgZm9udC1mYW1pbHk6ICdSb2JvdG8gTW9ubycsIG1vbm9zcGFjZTtcbiAgZm9udC1zaXplOiAxMHB4O1xuICBoZWlnaHQ6IDEwMCU7XG59XG5cbi50aXRsZS10YWdbX25nY29udGVudC0lQ09NUCVdIHtcbiAgZGlzcGxheTogaW5saW5lLWJsb2NrO1xuICBmb250LXdlaWdodDogYm9sZDtcbiAgaGVpZ2h0OiAxMDAlO1xuICBwYWRkaW5nLWxlZnQ6IDZweDtcbiAgdmVydGljYWwtYWxpZ246IHRvcDtcbn1cblxuc291cmNlLWNvZGVbX25nY29udGVudC0lQ09NUCVdIHtcbiAgZmxleC1ncm93OiAxO1xuICB3aWR0aDogMTAwJTtcbn0iXX0pO2NsYXNzIHZZe2NvbnN0cnVjdG9yKHQpe3RoaXMuc3RvcmU9dCx0aGlzLmZvY3VzZWRTb3VyY2VGaWxlQ29udGVudCQ9dGhpcy5zdG9yZS5waXBlKGx2KE5XKSksdGhpcy5mb2N1c2VkU291cmNlTGluZVNwZWMkPXRoaXMuc3RvcmUucGlwZShsdihGVykpfX12WS7JtWZhYz1mdW5jdGlvbiB0KG4pe3JldHVybiBuZXcobnx8dlkpKFpnKGN2KSl9LHZZLsm1Y21wPV9vKHt0eXBlOnZZLHNlbGVjdG9yczpbWyJ0Zi1kZWJ1Z2dlci12Mi1zb3VyY2UtZmlsZXMiXV0sZGVjbHM6Myx2YXJzOjYsY29uc3RzOltbMywiZm9jdXNlZFNvdXJjZUZpbGVDb250ZW50IiwiZm9jdXNlZFNvdXJjZUxpbmVTcGVjIl1dLHRlbXBsYXRlOmZ1bmN0aW9uIHQobixlKXsxJm4mJih0cCgwLCJzb3VyY2UtZmlsZXMtY29tcG9uZW50IiwwKSx5ZigxLCJhc3luYyIpLHlmKDIsImFzeW5jIikpLDImbiYmSmcoImZvY3VzZWRTb3VyY2VGaWxlQ29udGVudCIsa2YoMSwyLGUuZm9jdXNlZFNvdXJjZUZpbGVDb250ZW50JCkpKCJmb2N1c2VkU291cmNlTGluZVNwZWMiLGtmKDIsNCxlLmZvY3VzZWRTb3VyY2VMaW5lU3BlYyQpKX0sZGlyZWN0aXZlczpba1ldLHBpcGVzOltvT10sZW5jYXBzdWxhdGlvbjoyfSk7Y29uc3Qgd1k9WyJzdGFja0ZyYW1lQXJyYXkiXTtmdW5jdGlvbiBTWSh0LG4pe2lmKDEmdCYmKEtnKDAsInNwYW4iLDEzKSxKcCgxKSwkZygpKSwyJnQpe2NvbnN0IHQ9Z3AoMyk7d3MoMSksS3AoIiAjIix0LmV4ZWN1dGlvbkluZGV4LCI6ICIpfX1mdW5jdGlvbiBFWSh0LG4pe2lmKDEmdCYmKEtnKDAsInNwYW4iLDE0KSxKcCgxKSwkZygpKSwyJnQpe2NvbnN0IHQ9Z3AoMyk7d3MoMSksS3AoIiAiLHQub3BUeXBlLCIgIil9fWZ1bmN0aW9uIEFZKHQsbil7aWYoMSZ0JiYoS2coMCwiZGl2IiksSnAoMSwiIEVhZ2VyIGV4ZWN1dGlvbiAiKSxZZygyLFNZLDIsMSwic3BhbiIsMTEpLFlnKDMsRVksMiwxLCJzcGFuIiwxMiksJGcoKSksMiZ0KXtjb25zdCB0PWdwKDIpO3dzKDIpLEpnKCJuZ0lmIixudWxsIT09dC5vcFR5cGUpLHdzKDEpLEpnKCJuZ0lmIixudWxsIT09dC5vcFR5cGUpfX1mdW5jdGlvbiB6WSh0LG4pe2lmKDEmdCYmKEtnKDAsInNwYW4iLDE2KSxKcCgxKSwkZygpKSwyJnQpe2NvbnN0IHQ9Z3AoMyk7d3MoMSksS3AoJyAiJyx0Lm9wTmFtZSwnIiAnKX19ZnVuY3Rpb24gUlkodCxuKXtpZigxJnQmJihLZygwLCJzcGFuIiwxNCksSnAoMSksJGcoKSksMiZ0KXtjb25zdCB0PWdwKDMpO3dzKDEpLEtwKCIgIix0Lm9wVHlwZSwiICIpfX1mdW5jdGlvbiBUWSh0LG4pe2lmKDEmdCYmKEtnKDAsImRpdiIpLEpwKDEsIiBDcmVhdGlvbiBvZiBncmFwaCBvcCAiKSxZZygyLHpZLDIsMSwic3BhbiIsMTUpLFlnKDMsUlksMiwxLCJzcGFuIiwxMiksJGcoKSksMiZ0KXtjb25zdCB0PWdwKDIpO3dzKDIpLEpnKCJuZ0lmIixudWxsIT09dC5vcE5hbWUpLHdzKDEpLEpnKCJuZ0lmIixudWxsIT09dC5vcFR5cGUpfX1mdW5jdGlvbiBEWSh0LG4pe2lmKDEmdCYmKEtnKDAsInNwYW4iLDE3KSxKcCgxKSwkZygpKSwyJnQpe2NvbnN0IHQ9Z3AoMik7d3MoMSksS3AoIiAoSG9zdCBuYW1lOiAiLHQuc3RhY2tGcmFtZXNGb3JEaXNwbGF5WzBdLmhvc3RfbmFtZSwiKSAiKX19ZnVuY3Rpb24gSVkodCxuKXtpZigxJnQmJihLZygwLCJkaXYiLDcpLEtnKDEsInNwYW4iKSxLZygyLCJzcGFuIiw4KSxZZygzLEFZLDQsMiwiZGl2Iiw5KSxZZyg0LFRZLDQsMiwiZGl2Iiw5KSwkZygpLCRnKCksS2coNSwiZGl2IiksWWcoNixEWSwyLDEsInNwYW4iLDEwKSwkZygpLCRnKCkpLDImdCl7Y29uc3QgdD1ncCgpO3dzKDIpLEpnKCJuZ1N3aXRjaCIsdC5jb2RlTG9jYXRpb25UeXBlKSx3cygxKSxKZygibmdTd2l0Y2hDYXNlIix0LkNvZGVMb2NhdGlvblR5cGUuRVhFQ1VUSU9OKSx3cygxKSxKZygibmdTd2l0Y2hDYXNlIix0LkNvZGVMb2NhdGlvblR5cGUuR1JBUEhfT1BfQ1JFQVRJT04pLHdzKDIpLEpnKCJuZ0lmIixudWxsIT09dC5zdGFja0ZyYW1lc0ZvckRpc3BsYXkmJnQuc3RhY2tGcmFtZXNGb3JEaXNwbGF5Lmxlbmd0aD4wKX19ZnVuY3Rpb24gTlkodCxuKXsxJnQmJihLZygwLCJkaXYiLDE4KSxKcCgxLCIgQ2xpY2sgYW4gZWFnZXIgZXhlY3V0aW9uIG9yIGdyYXBoIG9wIHRvIHNob3cgaXRzIG9yaWdpbmFsIHN0YWNrIHRyYWNlLiAiKSwkZygpKX1mdW5jdGlvbiBGWSh0LG4pezEmdCYmKEtnKDAsImRpdiIsMjgpLEpwKDEsIiDipJMgIiksJGcoKSl9Y29uc3QgTFk9ZnVuY3Rpb24odCxuKXtyZXR1cm5bdCxuXX07ZnVuY3Rpb24gSFkodCxuKXtpZigxJnQpe2NvbnN0IHQ9b3AoKTtLZygwLCJkaXYiLDIyKSxLZygxLCJkaXYiLDIzKSxKcCgyKSwkZygpLEtnKDMsImRpdiIsMjQpLFlnKDQsRlksMiwwLCJkaXYiLDI1KSxLZyg1LCJkaXYiLDI2KSxjcCgiY2xpY2siLChmdW5jdGlvbiBlKCl7anIodCk7Y29uc3QgYT1uLiRpbXBsaWNpdDtyZXR1cm4gZ3AoMikub25Tb3VyY2VMaW5lQ2xpY2tlZC5lbWl0KGEpfSkpLEpwKDYpLCRnKCksS2coNywiZGl2IiwyNyksSnAoOCksJGcoKSwkZygpLCRnKCl9aWYoMiZ0KXtjb25zdCB0PW4uJGltcGxpY2l0LGU9Z3AoMik7SmcoIm5nQ2xhc3MiLGZmKDYsTFksdC5iZWxvbmdzVG9Gb2N1c2VkRmlsZT8iZm9jdXNlZC1maWxlIjoiIix0LmZvY3VzZWQ/ImZvY3VzZWQtc3RhY2stZnJhbWUiOiIiKSksd3MoMSksX3AoInRpdGxlIix0LmZpbGVfcGF0aCksd3MoMSksS3AoIiAiLHQuY29uY2lzZV9maWxlX3BhdGgsIiAiKSx3cygyKSxKZygibmdJZiIsZS5zdGlja1RvQm90dG9tbW9zdEZyYW1lSW5Gb2N1c2VkRmlsZSYmdC5mb2N1c2VkKSx3cygyKSxLcCgiIExpbmUgIix0LmxpbmVubywiICIpLHdzKDIpLEtwKCIgIix0LmZ1bmN0aW9uX25hbWUsIiAiKX19ZnVuY3Rpb24gQlkodCxuKXtpZigxJnQmJihLZygwLCJkaXYiLDE5LDIwKSxZZygyLEhZLDksOSwiZGl2IiwyMSksJGcoKSksMiZ0KXtjb25zdCB0PWdwKCk7d3MoMiksSmcoIm5nRm9yT2YiLHQuc3RhY2tGcmFtZXNGb3JEaXNwbGF5KX19ZnVuY3Rpb24gVlkodCxuKXt9Y2xhc3Mgall7Y29uc3RydWN0b3IoKXt0aGlzLnN0YWNrRnJhbWVzRm9yRGlzcGxheT1udWxsLHRoaXMub25Tb3VyY2VMaW5lQ2xpY2tlZD1uZXcgRWYsdGhpcy5Db2RlTG9jYXRpb25UeXBlPVRVfW5nQWZ0ZXJWaWV3Q2hlY2tlZCgpe2lmKHZvaWQgMD09PXRoaXMuc3RhY2tGcmFtZUFycmF5KXJldHVybjtjb25zdCB0PXRoaXMuc3RhY2tGcmFtZUFycmF5Lm5hdGl2ZUVsZW1lbnQsbj10LnF1ZXJ5U2VsZWN0b3IoIi5mb2N1c2VkLXN0YWNrLWZyYW1lIik7aWYobnVsbCE9PW4pcmV0dXJuIHZvaWQgdGhpcy5zY3JvbGxUb0VsZW1lbnQodCxuKTtjb25zdCBlPXQucXVlcnlTZWxlY3RvcigiLnN0YWNrLWZyYW1lLWNvbnRhaW5lcjpsYXN0LWNoaWxkIik7bnVsbCE9PWUmJnRoaXMuc2Nyb2xsVG9FbGVtZW50KHQsZSl9c2Nyb2xsVG9FbGVtZW50KHQsbil7dC5zY3JvbGxUb3A9bi5vZmZzZXRUb3B9fWpZLsm1ZmFjPWZ1bmN0aW9uIHQobil7cmV0dXJuIG5ldyhufHxqWSl9LGpZLsm1Y21wPV9vKHt0eXBlOmpZLHNlbGVjdG9yczpbWyJzdGFjay10cmFjZS1jb21wb25lbnQiXV0sdmlld1F1ZXJ5OmZ1bmN0aW9uIHQobixlKXt2YXIgYTsxJm4mJlVmKHdZLCEwKSwyJm4mJlZmKGE9WmYoKSkmJihlLnN0YWNrRnJhbWVBcnJheT1hLmZpcnN0KX0saW5wdXRzOntjb2RlTG9jYXRpb25UeXBlOiJjb2RlTG9jYXRpb25UeXBlIixvcFR5cGU6Im9wVHlwZSIsb3BOYW1lOiJvcE5hbWUiLGV4ZWN1dGlvbkluZGV4OiJleGVjdXRpb25JbmRleCIsc3RpY2tUb0JvdHRvbW1vc3RGcmFtZUluRm9jdXNlZEZpbGU6InN0aWNrVG9Cb3R0b21tb3N0RnJhbWVJbkZvY3VzZWRGaWxlIixzdGFja0ZyYW1lc0ZvckRpc3BsYXk6InN0YWNrRnJhbWVzRm9yRGlzcGxheSJ9LG91dHB1dHM6e29uU291cmNlTGluZUNsaWNrZWQ6Im9uU291cmNlTGluZUNsaWNrZWQifSxkZWNsczoxMCx2YXJzOjQsY29uc3RzOltbMSwic3RhY2stdHJhY2UtY29udGFpbmVyIl0sWzEsInN0YWNrLXRyYWNlLWhlYWRlciJdLFsxLCJzdGFjay10cmFjZS10aXRsZSJdLFsiY2xhc3MiLCJzdGFjay10cmFjZS1hdXgtaW5mbyIsNCwibmdJZiIsIm5nSWZFbHNlIl0sWyJub1N0YWNrVHJhY2UiLCIiXSxbImNsYXNzIiwic3RhY2stZnJhbWUtYXJyYXkiLDQsIm5nSWYiLCJuZ0lmRWxzZSJdLFsibG9hZGluZ1NlY3Rpb24iLCIiXSxbMSwic3RhY2stdHJhY2UtYXV4LWluZm8iXSxbMSwiY29kZS1sb2NhdGlvbi1vcmlnaW4iLDMsIm5nU3dpdGNoIl0sWzQsIm5nU3dpdGNoQ2FzZSJdLFsiY2xhc3MiLCJzdGFjay10cmFjZS1ob3N0LW5hbWUiLDQsIm5nSWYiXSxbImNsYXNzIiwiZWFnZXItZXhlY3V0aW9uLWluZGV4Iiw0LCJuZ0lmIl0sWyJjbGFzcyIsIm9wLXR5cGUiLDQsIm5nSWYiXSxbMSwiZWFnZXItZXhlY3V0aW9uLWluZGV4Il0sWzEsIm9wLXR5cGUiXSxbImNsYXNzIiwib3AtbmFtZSIsNCwibmdJZiJdLFsxLCJvcC1uYW1lIl0sWzEsInN0YWNrLXRyYWNlLWhvc3QtbmFtZSJdLFsxLCJzdGFjay10cmFjZS1hdXgtaW5mbyIsIm5vLXN0YWNrLXRyYWNlIl0sWzEsInN0YWNrLWZyYW1lLWFycmF5Il0sWyJzdGFja0ZyYW1lQXJyYXkiLCIiXSxbImNsYXNzIiwic3RhY2stZnJhbWUtY29udGFpbmVyIiwzLCJuZ0NsYXNzIiw0LCJuZ0ZvciIsIm5nRm9yT2YiXSxbMSwic3RhY2stZnJhbWUtY29udGFpbmVyIiwzLCJuZ0NsYXNzIl0sWzEsInN0YWNrLWZyYW1lLWZpbGUtcGF0aCIsMywidGl0bGUiXSxbMSwic3RhY2stZnJhbWUtbGluZW5vLWZ1bmN0aW9uIl0sWyJjbGFzcyIsInN0aWNrLXRvLWJvdHRvbW1vc3QtaW5kaWNhdG9yIiwidGl0bGUiLCJTdGlja2luZyB0byB0aGUgYm90dG9tbW9zdCBmcmFtZSBpbiB0aGUgY3VycmVudCBzb3VyY2UgZmlsZSB3aGVuIG5hdmlnYXRpbmcgZXhlY3V0aW9ucyBhbmQgZ3JhcGggb3BzLiBUbyByZW1vdmUgdGhpcyBzdGlja2luZywgY2xpY2sgYW55IG5vbi1ib3R0b21tb3N0IHN0YWNrIGZyYW1lLiIsNCwibmdJZiJdLFsxLCJzdGFjay1mcmFtZS1saW5lbm8iLDMsImNsaWNrIl0sWzEsInN0YWNrLWZyYW1lLWZ1bmN0aW9uIl0sWyJ0aXRsZSIsIlN0aWNraW5nIHRvIHRoZSBib3R0b21tb3N0IGZyYW1lIGluIHRoZSBjdXJyZW50IHNvdXJjZSBmaWxlIHdoZW4gbmF2aWdhdGluZyBleGVjdXRpb25zIGFuZCBncmFwaCBvcHMuIFRvIHJlbW92ZSB0aGlzIHN0aWNraW5nLCBjbGljayBhbnkgbm9uLWJvdHRvbW1vc3Qgc3RhY2sgZnJhbWUuIiwxLCJzdGljay10by1ib3R0b21tb3N0LWluZGljYXRvciJdXSx0ZW1wbGF0ZTpmdW5jdGlvbiB0KG4sZSl7aWYoMSZuJiYoS2coMCwiZGl2IiwwKSxLZygxLCJkaXYiLDEpLEtnKDIsInNwYW4iLDIpLEpwKDMsIiBTdGFjayBUcmFjZSAiKSwkZygpLFlnKDQsSVksNyw0LCJkaXYiLDMpLFlnKDUsTlksMiwwLCJuZy10ZW1wbGF0ZSIsbnVsbCw0LEtmKSwkZygpLFlnKDcsQlksMywxLCJkaXYiLDUpLFlnKDgsVlksMCwwLCJuZy10ZW1wbGF0ZSIsbnVsbCw2LEtmKSwkZygpKSwyJm4pe2NvbnN0IHQ9cWcoNiksbj1xZyg5KTt3cyg0KSxKZygibmdJZiIsbnVsbCE9PWUuY29kZUxvY2F0aW9uVHlwZSkoIm5nSWZFbHNlIix0KSx3cygzKSxKZygibmdJZiIsbnVsbCE9PWUuc3RhY2tGcmFtZXNGb3JEaXNwbGF5KSgibmdJZkVsc2UiLG4pfX0sZGlyZWN0aXZlczpbV00sWk0sWE0sak0sSE1dLHN0eWxlczpbIi5mb2N1c2VkLWZpbGVbX25nY29udGVudC0lQ09NUCVdIHtcbiAgZm9udC13ZWlnaHQ6IGJvbGQ7XG59XG5cbi5mb2N1c2VkLXN0YWNrLWZyYW1lW19uZ2NvbnRlbnQtJUNPTVAlXSB7XG4gIGJhY2tncm91bmQtY29sb3I6IHJnYmEoMjU1LCAxMTEsIDAsIDAuMyk7XG59XG5cbi5uby1zdGFjay10cmFjZVtfbmdjb250ZW50LSVDT01QJV0ge1xuICBjb2xvcjogIzgwODA4MDtcbn1cblxuLm9wLW5hbWVbX25nY29udGVudC0lQ09NUCVdIHtcbiAgd29yZC13cmFwOiBhbnl3aGVyZTtcbn1cblxuLm9wLXR5cGVbX25nY29udGVudC0lQ09NUCVdIHtcbiAgYmFja2dyb3VuZC1jb2xvcjogI2UzZTVlODtcbiAgYm9yZGVyOiAxcHggc29saWQgI2MwYzBjMDtcbiAgYm9yZGVyLXJhZGl1czogNHB4O1xuICBmb250LWZhbWlseTogJ1JvYm90byBNb25vJywgbW9ub3NwYWNlO1xuICBmb250LXNpemU6IDEwcHg7XG4gIGhlaWdodDogMTRweDtcbiAgbGluZS1oZWlnaHQ6IDE0cHg7XG4gIHBhZGRpbmc6IDFweCAzcHg7XG4gIHdpZHRoOiBtYXgtY29udGVudDtcbn1cblxuLnN0YWNrLWZyYW1lLWFycmF5W19uZ2NvbnRlbnQtJUNPTVAlXSB7XG4gIG92ZXJmbG93LXg6IGhpZGRlbjtcbiAgb3ZlcmZsb3cteTogYXV0bztcbiAgXG4gIHdpZHRoOiBjYWxjKDEwMCUgLSA4cHgpO1xufVxuXG4uc3RhY2stZnJhbWUtY29udGFpbmVyW19uZ2NvbnRlbnQtJUNPTVAlXSB7XG4gIGJvcmRlci1ib3R0b206IDFweCBzb2xpZCAjYTBhMGEwO1xufVxuXG4uc3RhY2stZnJhbWUtZmlsZS1wYXRoW19uZ2NvbnRlbnQtJUNPTVAlXSB7XG4gIG1heC13aWR0aDogMTgwcHg7XG4gIHdpZHRoOiAxODBweDtcbn1cblxuLnN0YWNrLWZyYW1lLWxpbmVuby1mdW5jdGlvbltfbmdjb250ZW50LSVDT01QJV0ge1xuICB0ZXh0LWFsaWduOiByaWdodDtcbiAgd2hpdGUtc3BhY2U6IG5vd3JhcDtcbn1cblxuLnN0YWNrLWZyYW1lLWZ1bmN0aW9uW19uZ2NvbnRlbnQtJUNPTVAlXSB7XG4gIGRpc3BsYXk6IGlubGluZS1ibG9jaztcbiAgbWF4LXdpZHRoOiAyMDBweDtcbiAgcGFkZGluZy1sZWZ0OiAxMHB4O1xuICB0ZXh0LWFsaWduOiBsZWZ0O1xuICB3aGl0ZS1zcGFjZTogbm9ybWFsO1xuICB3aWR0aDogMjAwcHg7XG4gIHdvcmQtd3JhcDogYW55d2hlcmU7XG59XG5cbi5zdGFjay1mcmFtZS1saW5lbm9bX25nY29udGVudC0lQ09NUCVdIHtcbiAgY3Vyc29yOiBwb2ludGVyO1xuICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7XG4gIG1heC13aWR0aDogODBweDtcbiAgdGV4dC1hbGlnbjogbGVmdDtcbiAgdGV4dC1kZWNvcmF0aW9uOiB1bmRlcmxpbmU7XG4gIHdpZHRoOiA4MHB4O1xufVxuXG4uc3RhY2stdHJhY2UtYXV4LWluZm9bX25nY29udGVudC0lQ09NUCVdIHtcbiAgbWFyZ2luLXRvcDogMTVweDtcbiAgcGFkZGluZy1sZWZ0OiAyNHB4O1xufVxuXG4uc3RhY2stdHJhY2UtY29udGFpbmVyW19uZ2NvbnRlbnQtJUNPTVAlXSB7XG4gIGJvcmRlci1sZWZ0OiAxcHggc29saWQgcmdiYSgwLCAwLCAwLCAwLjEyKTtcbiAgYm94LXNpemluZzogYm9yZGVyLWJveDtcbiAgZGlzcGxheTogZmxleDtcbiAgZmxleC1mbG93OiBjb2x1bW47XG4gIGZvbnQtc2l6ZTogMTBweDtcbiAgZm9udC1mYW1pbHk6ICdSb2JvdG8gTW9ubycsIG1vbm9zcGFjZTtcbiAgaGVpZ2h0OiAxMDAlO1xuICBtYXJnaW4tbGVmdDogOHB4O1xuICBtYXgtaGVpZ2h0OiAzNjBweDtcbiAgb3ZlcmZsb3cteDogaGlkZGVuO1xuICBvdmVyZmxvdy15OiBoaWRkZW47XG4gIHBhZGRpbmctbGVmdDogOHB4O1xuICB3aWR0aDogMTAwJTtcbn1cblxuLnN0YWNrLXRyYWNlLWhlYWRlcltfbmdjb250ZW50LSVDT01QJV0ge1xuICBib3gtc2hhZG93OiAwIDVweCAzcHggLTNweCAjY2NjO1xuICBwYWRkaW5nLWJvdHRvbTogM3B4O1xufVxuLnN0YWNrLXRyYWNlLWhvc3QtbmFtZVtfbmdjb250ZW50LSVDT01QJV0ge1xuICBjb2xvcjogIzgwODA4MDtcbn1cblxuLnN0YWNrLXRyYWNlLXRpdGxlW19uZ2NvbnRlbnQtJUNPTVAlXSB7XG4gIGZvbnQtd2VpZ2h0OiBib2xkO1xufVxuXG4uc3RpY2stdG8tYm90dG9tbW9zdC1pbmRpY2F0b3JbX25nY29udGVudC0lQ09NUCVdIHtcbiAgZGlzcGxheTogaW5saW5lLWJsb2NrO1xuICBmb250LXdlaWdodDogYm9sZDtcbiAgZm9udC1zaXplOiAxMnB4O1xuICBwYWRkaW5nLXJpZ2h0OiAzcHg7XG59Il19KTtjbGFzcyBVWXtjb25zdHJ1Y3Rvcih0KXt0aGlzLnN0b3JlPXQsdGhpcy5jb2RlTG9jYXRpb25UeXBlJD10aGlzLnN0b3JlLnBpcGUobHYocHYoelcsKHQ9Pm51bGw9PT10P251bGw6dC5jb2RlTG9jYXRpb25UeXBlKSkpKSx0aGlzLm9wVHlwZSQ9dGhpcy5zdG9yZS5waXBlKGx2KHB2KHpXLCh0PT5udWxsPT09dD9udWxsOnQub3BUeXBlKSkpKSx0aGlzLm9wTmFtZSQ9dGhpcy5zdG9yZS5waXBlKGx2KHB2KHpXLCh0PT5udWxsPT09dHx8dC5jb2RlTG9jYXRpb25UeXBlIT09VFUuR1JBUEhfT1BfQ1JFQVRJT04/bnVsbDp0Lm9wTmFtZSkpKSksdGhpcy5leGVjdXRpb25JbmRleCQ9dGhpcy5zdG9yZS5waXBlKGx2KHB2KHpXLCh0PT5udWxsPT09dHx8dC5jb2RlTG9jYXRpb25UeXBlIT09VFUuRVhFQ1VUSU9OP251bGw6dC5leGVjdXRpb25JbmRleCkpKSksdGhpcy5zdGlja1RvQm90dG9tbW9zdEZyYW1lSW5Gb2N1c2VkRmlsZSQ9dGhpcy5zdG9yZS5waXBlKGx2KExXKSksdGhpcy5zdGFja0ZyYW1lc0ZvckRpc3BsYXkkPXRoaXMuc3RvcmUucGlwZShsdihwdihSVyxGVywoKHQsbik9PntpZihudWxsPT09dClyZXR1cm4gbnVsbDtjb25zdCBlPVtdO2Zvcihjb25zdCBhIG9mIHQpe2NvbnN0e2hvc3RfbmFtZTp0LGZpbGVfcGF0aDpvLGxpbmVubzpyLGZ1bmN0aW9uX25hbWU6aX09YSxjPW8uc3BsaXQoIi8iKSxzPW51bGwhPT1uJiZ0PT09bi5ob3N0X25hbWUmJm89PT1uLmZpbGVfcGF0aDtlLnB1c2goe2hvc3RfbmFtZTp0LGZpbGVfcGF0aDpvLGNvbmNpc2VfZmlsZV9wYXRoOmNbYy5sZW5ndGgtMV0sbGluZW5vOnIsZnVuY3Rpb25fbmFtZTppLGJlbG9uZ3NUb0ZvY3VzZWRGaWxlOnMsZm9jdXNlZDpzJiZyPT09bi5saW5lbm99KX1yZXR1cm4gZX0pKSkpfW9uU291cmNlTGluZUNsaWNrZWQodCl7Y29uc3R7aG9zdF9uYW1lOm4sZmlsZV9wYXRoOmUsbGluZW5vOmEsZnVuY3Rpb25fbmFtZTpvfT10O3RoaXMuc3RvcmUuZGlzcGF0Y2godlUoe3N0YWNrRnJhbWU6e2hvc3RfbmFtZTpuLGZpbGVfcGF0aDplLGxpbmVubzphLGZ1bmN0aW9uX25hbWU6b319KSl9fWZ1bmN0aW9uIFdZKHQsbil7MSZ0JiZ0cCgwLCJ0Zi1kZWJ1Z2dlci12Mi1pbmFjdGl2ZSIpfWZ1bmN0aW9uIEdZKHQsbil7MSZ0JiYoS2coMCwiZGl2IiwzKSx0cCgxLCJ0Zi1kZWJ1Z2dlci12Mi1hbGVydHMiKSxLZygyLCJkaXYiLDQpLHRwKDMsInRmLWRlYnVnZ2VyLXYyLXRpbWVsaW5lIiksdHAoNCwidGYtZGVidWdnZXItdjItZ3JhcGgiKSwkZygpLHRwKDUsInRmLWRlYnVnZ2VyLXYyLWdyYXBoLWV4ZWN1dGlvbnMiKSwkZygpLEtnKDYsImRpdiIsNSksdHAoNywidGYtZGVidWdnZXItdjItc291cmNlLWZpbGVzIiksdHAoOCwidGYtZGVidWdnZXItdjItc3RhY2stdHJhY2UiKSwkZygpKX1VWS7JtWZhYz1mdW5jdGlvbiB0KG4pe3JldHVybiBuZXcobnx8VVkpKFpnKGN2KSl9LFVZLsm1Y21wPV9vKHt0eXBlOlVZLHNlbGVjdG9yczpbWyJ0Zi1kZWJ1Z2dlci12Mi1zdGFjay10cmFjZSJdXSxkZWNsczo3LHZhcnM6MTgsY29uc3RzOltbMywiY29kZUxvY2F0aW9uVHlwZSIsIm9wVHlwZSIsIm9wTmFtZSIsImV4ZWN1dGlvbkluZGV4Iiwic3RpY2tUb0JvdHRvbW1vc3RGcmFtZUluRm9jdXNlZEZpbGUiLCJzdGFja0ZyYW1lc0ZvckRpc3BsYXkiLCJvblNvdXJjZUxpbmVDbGlja2VkIl1dLHRlbXBsYXRlOmZ1bmN0aW9uIHQobixlKXsxJm4mJihLZygwLCJzdGFjay10cmFjZS1jb21wb25lbnQiLDApLGNwKCJvblNvdXJjZUxpbmVDbGlja2VkIiwoZnVuY3Rpb24gdChuKXtyZXR1cm4gZS5vblNvdXJjZUxpbmVDbGlja2VkKG4pfSkpLHlmKDEsImFzeW5jIikseWYoMiwiYXN5bmMiKSx5ZigzLCJhc3luYyIpLHlmKDQsImFzeW5jIikseWYoNSwiYXN5bmMiKSx5Zig2LCJhc3luYyIpLCRnKCkpLDImbiYmSmcoImNvZGVMb2NhdGlvblR5cGUiLGtmKDEsNixlLmNvZGVMb2NhdGlvblR5cGUkKSkoIm9wVHlwZSIsa2YoMiw4LGUub3BUeXBlJCkpKCJvcE5hbWUiLGtmKDMsMTAsZS5vcE5hbWUkKSkoImV4ZWN1dGlvbkluZGV4IixrZig0LDEyLGUuZXhlY3V0aW9uSW5kZXgkKSkoInN0aWNrVG9Cb3R0b21tb3N0RnJhbWVJbkZvY3VzZWRGaWxlIixrZig1LDE0LGUuc3RpY2tUb0JvdHRvbW1vc3RGcmFtZUluRm9jdXNlZEZpbGUkKSkoInN0YWNrRnJhbWVzRm9yRGlzcGxheSIsa2YoNiwxNixlLnN0YWNrRnJhbWVzRm9yRGlzcGxheSQpKX0sZGlyZWN0aXZlczpballdLHBpcGVzOltvT10sZW5jYXBzdWxhdGlvbjoyfSk7Y2xhc3MgWVl7Y29uc3RydWN0b3IoKXt0aGlzLnJ1bnM9e30sdGhpcy5ydW5JZHM9W10sdGhpcy5hY3RpdmVSdW5JZD1udWxsfX1ZWS7JtWZhYz1mdW5jdGlvbiB0KG4pe3JldHVybiBuZXcobnx8WVkpfSxZWS7JtWNtcD1fbyh7dHlwZTpZWSxzZWxlY3RvcnM6W1siZGVidWdnZXItY29tcG9uZW50Il1dLGlucHV0czp7cnVuczoicnVucyIscnVuSWRzOiJydW5JZHMiLGFjdGl2ZVJ1bklkOiJhY3RpdmVSdW5JZCJ9LGRlY2xzOjQsdmFyczoyLGNvbnN0czpbWzEsImRlYnVnZ2VyLWNvbnRhaW5lciJdLFs0LCJuZ0lmIiwibmdJZkVsc2UiXSxbImRhdGFBdmFpbGFibGUiLCIiXSxbMSwidG9wLXNlY3Rpb24iXSxbMSwidG9wLWNlbnRlci1zZWN0aW9uIl0sWzEsImJvdHRvbS1zZWN0aW9uIl1dLHRlbXBsYXRlOmZ1bmN0aW9uIHQobixlKXtpZigxJm4mJihLZygwLCJkaXYiLDApLFlnKDEsV1ksMSwwLCJ0Zi1kZWJ1Z2dlci12Mi1pbmFjdGl2ZSIsMSksWWcoMixHWSw5LDAsIm5nLXRlbXBsYXRlIixudWxsLDIsS2YpLCRnKCkpLDImbil7Y29uc3QgdD1xZygzKTt3cygxKSxKZygibmdJZiIsMD09PWUucnVuSWRzLmxlbmd0aCkoIm5nSWZFbHNlIix0KX19LGRpcmVjdGl2ZXM6W1dNLFhqLFVXLExHLGFZLHBZLHZZLFVZXSxzdHlsZXM6WyIuYm90dG9tLXNlY3Rpb25bX25nY29udGVudC0lQ09NUCVdIHtcbiAgYm94LXNpemluZzogYm9yZGVyLWJveDtcbiAgYm9yZGVyLXRvcDogMXB4IHNvbGlkIHJnYmEoMCwgMCwgMCwgMC4xMik7XG4gIGRpc3BsYXk6IGZsZXg7XG4gIGZsZXgtZ3JvdzogMTtcbiAgaGVpZ2h0OiAzNCU7XG4gIHBhZGRpbmctdG9wOiA2cHg7XG59XG5cbi5kZWJ1Z2dlci1jb250YWluZXJbX25nY29udGVudC0lQ09NUCVdIHtcbiAgYm94LXNpemluZzogYm9yZGVyLWJveDtcbiAgYmFja2dyb3VuZC1jb2xvcjogI2ZmZjtcbiAgaGVpZ2h0OiAxMDAlO1xuICBvdmVyZmxvdzogaGlkZGVuO1xufVxuXG4udG9wLXNlY3Rpb25bX25nY29udGVudC0lQ09NUCVdIHtcbiAgYm94LXNpemluZzogYm9yZGVyLWJveDtcbiAgZGlzcGxheTogZmxleDtcbiAgZmxleC1ncm93OiAxO1xuICBoZWlnaHQ6IDY2JTtcbiAgcGFkZGluZzogNnB4IDA7XG59XG5cbnRmLWRlYnVnZ2VyLXYyLWFsZXJ0c1tfbmdjb250ZW50LSVDT01QJV0ge1xuICBib3JkZXItcmlnaHQ6IDFweCBzb2xpZCByZ2JhKDAsIDAsIDAsIDAuMTIpO1xuICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7XG4gIG1hcmdpbi1yaWdodDogMTBweDtcbiAgbWluLXdpZHRoOiAxNjBweDtcbiAgd2lkdGg6IGNhbGMoMTUlIC0gMTFweCk7XG59XG5cbnRmLWRlYnVnZ2VyLXYyLWdyYXBoLWV4ZWN1dGlvbnNbX25nY29udGVudC0lQ09NUCVdIHtcbiAgZGlzcGxheTogaW5saW5lLWJsb2NrO1xuICBmbGV4LWdyb3c6IDE7XG4gIG1pbi13aWR0aDogNTQwcHg7XG4gIHdpZHRoOiA1NDBweDtcbn1cblxudGYtZGVidWdnZXItdjItc291cmNlLWZpbGVzW19uZ2NvbnRlbnQtJUNPTVAlXSB7XG4gIGRpc3BsYXk6IGlubGluZS1ibG9jaztcbiAgaGVpZ2h0OiAxMDAlO1xuICB3aWR0aDogNzAlO1xufVxuXG50Zi1kZWJ1Z2dlci12Mi1zdGFjay10cmFjZVtfbmdjb250ZW50LSVDT01QJV0ge1xuICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7XG4gIGZsZXgtZ3JvdzogMTtcbiAgaGVpZ2h0OiAxMDAlO1xuICBtaW4td2lkdGg6IDU0MHB4O1xuICB3aWR0aDogNTQwcHg7XG59XG5cbi50b3AtY2VudGVyLXNlY3Rpb25bX25nY29udGVudC0lQ09NUCVdIHtcbiAgZGlzcGxheTogaW5saW5lLWJsb2NrO1xuICBvdmVyZmxvdzogYXV0bztcbiAgd2lkdGg6IDU1JTtcbn1cblxudGYtZGVidWdnZXItdjItdGltZWxpbmVbX25nY29udGVudC0lQ09NUCVdIHtcbiAgZGlzcGxheTogYmxvY2s7XG59XG5cbnRmLWRlYnVnZ2VyLXYyLWdyYXBoW19uZ2NvbnRlbnQtJUNPTVAlXSB7XG4gIGJvcmRlci10b3A6IDFweCBzb2xpZCByZ2JhKDAsIDAsIDAsIDAuMTIpO1xuICBkaXNwbGF5OiBibG9jaztcbiAgbWFyZ2luLXRvcDogNXB4O1xufSJdLGNoYW5nZURldGVjdGlvbjowfSk7Y2xhc3MgcVl7Y29uc3RydWN0b3IodCl7dGhpcy5zdG9yZT10LHRoaXMucnVucyQ9dGhpcy5zdG9yZS5waXBlKGx2KFVVKSksdGhpcy5ydW5zSWRzJD10aGlzLnN0b3JlLnBpcGUobHYocHYoVVUsKHQ9Pk9iamVjdC5rZXlzKHQpKSkpKSx0aGlzLmFjdGl2ZVJ1bklkJD10aGlzLnN0b3JlLnBpcGUobHYoR1UpKX1uZ09uSW5pdCgpe3RoaXMuc3RvcmUuZGlzcGF0Y2goSmooKSl9bmdPbkRlc3Ryb3koKXt0aGlzLnN0b3JlLmRpc3BhdGNoKFFqKCkpfX1mdW5jdGlvbiBaWSh0LG4sZSxhLG8pe2lmKGU8PTB8fCFOdW1iZXIuaXNJbnRlZ2VyKGUpKXRocm93IG5ldyBFcnJvcihgSW52YWxpZCBwYWdlU2l6ZTogJHtlfWApO2lmKG4+YSl0aHJvdyBuZXcgRXJyb3IoYGVuZCBpbmRleCAoJHtufSkgZXhjZWVkcyB0b3RhbCBudW1iZXIgb2YgaXRlbXMgKCR7YX0pYCk7aWYobi10PmUpdGhyb3cgbmV3IEVycm9yKCJiZWdpbi1lbmQgc3BhbiBleGNlZWRzIHBhZ2Ugc2l6ZSwgd2hpY2ggaXMgbm90IGFsbG93ZWQiKTtjb25zdCByPVtdLGk9TWF0aC5mbG9vcih0L2UpOyghKGkgaW4gbyl8fG9baV08ZSYmaSplK29baV08YSkmJnIucHVzaChpKTtjb25zdCBjPU1hdGguZmxvb3IoKG4tMSkvZSk7cmV0dXJuIGMhPT1pJiYoIShjIGluIG8pfHxjKmUrb1tjXTxuJiZuPGEpJiZyLnB1c2goYykscn1xWS7JtWZhYz1mdW5jdGlvbiB0KG4pe3JldHVybiBuZXcobnx8cVkpKFpnKGN2KSl9LHFZLsm1Y21wPV9vKHt0eXBlOnFZLHNlbGVjdG9yczpbWyJ0Zi1kZWJ1Z2dlci12MiJdXSxkZWNsczo0LHZhcnM6OSxjb25zdHM6W1szLCJydW5zIiwicnVuSWRzIiwiYWN0aXZlUnVuSWQiXV0sdGVtcGxhdGU6ZnVuY3Rpb24gdChuLGUpezEmbiYmKHRwKDAsImRlYnVnZ2VyLWNvbXBvbmVudCIsMCkseWYoMSwiYXN5bmMiKSx5ZigyLCJhc3luYyIpLHlmKDMsImFzeW5jIikpLDImbiYmSmcoInJ1bnMiLGtmKDEsMyxlLnJ1bnMkKSkoInJ1bklkcyIsa2YoMiw1LGUucnVuc0lkcyQpKSgiYWN0aXZlUnVuSWQiLGtmKDMsNyxlLmFjdGl2ZVJ1bklkJCkpfSxkaXJlY3RpdmVzOltZWV0scGlwZXM6W29PXSxlbmNhcHN1bGF0aW9uOjJ9KTtjbGFzcyBYWXtjb25zdHJ1Y3Rvcih0LG4sZSl7dGhpcy5hY3Rpb25zJD10LHRoaXMuc3RvcmU9bix0aGlzLmRhdGFTb3VyY2U9ZSx0aGlzLmxvYWREYXRhJD1ZdigoKCk9Pntjb25zdCB0PXRoaXMubG9hZERlYnVnZ2VyUnVucyhXdCh0aGlzLm9uRGVidWdnZXJEYXRhUG9sbCgpLHRoaXMub25Db3JlUmVsb2FkKCkpKS5waXBlKGVlKCkpLG49dGhpcy5sb2FkU291cmNlRmlsZUxpc3QodCksZT10aGlzLmNyZWF0ZU51bUV4ZWN1dGlvbkxvYWRlcih0KSxhPXRoaXMuY3JlYXRlTnVtQWxlcnRzQW5kQnJlYWtkb3duTG9hZGVyKHQpLG89dGhpcy5vbkFsZXJ0VHlwZUZvY3VzZWQoKSxyPXRoaXMuZmV0Y2hFeGVjdXRpb25EaWdlc3RzRm9yQWxlcnRUeXBlRm9jdXMobyksaT10aGlzLmNyZWF0ZUluaXRpYWxFeGVjdXRpb25EZXRlY3RvcihlKS5waXBlKGVlKCkpLGM9dGhpcy5jcmVhdGVFeGVjdXRpb25EaWdlc3RMb2FkZXIoV3QodGhpcy5vbkV4ZWN1dGlvblNjcm9sbCgpLHRoaXMuY3JlYXRlSW5pdGlhbEV4ZWN1dGlvbkRpZ2VzdChpKSxyKSkscz10aGlzLmNyZWF0ZUV4ZWN1dGlvbkRhdGFBbmRTdGFja0ZyYW1lc0xvYWRlcihXdCh0aGlzLm9uRXhlY3V0aW9uRGlnZXN0Rm9jdXNlZCgpLGkucGlwZSh5ZSh0aGlzLnN0b3JlLnNlbGVjdChHVSksdGhpcy5zdG9yZS5zZWxlY3Qod1cpKSxmdCgoKFssdCxuXSk9Pih7YWN0aXZlUnVuSWQ6dCxsb2FkZWRFeGVjdXRpb25EYXRhOm4sZm9jdXNJbmRleDowfSkpKSkpKTtyZXR1cm4gV3QoYSxjLHMsdGhpcy5jcmVhdGVOdW1HcmFwaEV4ZWN1dGlvbkxvYWRlcih0KSxuLHRoaXMub25Tb3VyY2VGaWxlRm9jdXNlZCgpLHRoaXMubG9hZEdyYXBoRXhlY3V0aW9uUGFnZXModGhpcy5vbkdyYXBoRXhlY3V0aW9uU2Nyb2xsKCkpLHRoaXMubG9hZEdyYXBoT3BTdGFja0ZyYW1lcyh0aGlzLmxvYWRHcmFwaE9wSW5mbygpKSkucGlwZShmdCgoKCk9Pih7fSkpKSl9KSx7ZGlzcGF0Y2g6ITF9KX1vbkRlYnVnZ2VyRGF0YVBvbGwoKXtyZXR1cm4gdGhpcy5hY3Rpb25zJC5waXBlKHR3KEpqKSxzZSgodD0+KGZ1bmN0aW9uIG4odCxlLGEpe3JldHVybiB0LnBpcGUoKGZ1bmN0aW9uIG8odCl7cmV0dXJuIG49Pm4ubGlmdChuZXcgJG4odCkpfSkoKHQ9PnQucGlwZSh5ZShlKSwoZnVuY3Rpb24gbih0LGUpe3JldHVybiBlP249Pm5ldyBQbihuLGUpLmxpZnQobmV3IE1uKHQpKTpuPT5uLmxpZnQobmV3IE1uKHQpKX0pKCgoWyx0XSk9Plp0KHQpKSkpKSksZGUoYSksZnQoKCgpPT57fSkpKX0pKFoodCksdGhpcy5zdG9yZS5zZWxlY3QoWVUpLnBpcGUoZnQoKHQ9PihmdW5jdGlvbiBuKHQpe3JldHVybiB0PjZlND82ZTQ6dD40ZTM/dDoyZTN9KSh0KSkpKSx0aGlzLmFjdGlvbnMkLnBpcGUodHcoUWopKSkpKSxoZSgoKCk9PnRoaXMuc3RvcmUuZGlzcGF0Y2goS2ooKSkpKSxmdCgoKCk9Pnt9KSkpfW9uQ29yZVJlbG9hZCgpe3JldHVybiB0aGlzLmFjdGlvbnMkLnBpcGUodHcodUksZkkpLGhlKCgoKT0+dGhpcy5zdG9yZS5kaXNwYXRjaChLaigpKSkpLGZ0KCgoKT0+e30pKSl9bG9hZERlYnVnZ2VyUnVucyh0KXtyZXR1cm4gdC5waXBlKHllKHRoaXMuc3RvcmUuc2VsZWN0KFdVKSksR3QoKChbLHtzdGF0ZTp0fV0pPT50IT09ZlIuTE9BRElORykpLGhlKCgoKT0+dGhpcy5zdG9yZS5kaXNwYXRjaCgkaigpKSkpLFR0KCgoKT0+dGhpcy5kYXRhU291cmNlLmZldGNoUnVucygpLnBpcGUoaGUoKHQ9Pnt0aGlzLnN0b3JlLmRpc3BhdGNoKHRVKHtydW5zOnR9KSl9KSksZnQoKCgpPT57fSkpKSkpKX1jcmVhdGVOdW1FeGVjdXRpb25Mb2FkZXIodCl7cmV0dXJuIHQucGlwZSh5ZSh0aGlzLnN0b3JlLnNlbGVjdChVVSksdGhpcy5zdG9yZS5zZWxlY3QoblcpKSxHdCgoKFssdCxuXSk9Pk9iamVjdC5rZXlzKHQpLmxlbmd0aD4wJiZuLnN0YXRlIT09ZlIuTE9BRElORykpLGhlKCgoKT0+dGhpcy5zdG9yZS5kaXNwYXRjaChpVSgpKSkpLFR0KCgoWyx0XSk9Pntjb25zdCBuPU9iamVjdC5rZXlzKHQpWzBdO3JldHVybiB0aGlzLmRhdGFTb3VyY2UuZmV0Y2hFeGVjdXRpb25EaWdlc3RzKG4sMCwwKS5waXBlKGhlKCh0PT57dGhpcy5zdG9yZS5kaXNwYXRjaChjVSh7bnVtRXhlY3V0aW9uczp0Lm51bV9kaWdlc3RzfSkpfSkpLGZ0KCgoKT0+e30pKSl9KSkpfWNyZWF0ZU51bUdyYXBoRXhlY3V0aW9uTG9hZGVyKHQpe3JldHVybiB0LnBpcGUoeWUodGhpcy5zdG9yZS5zZWxlY3QoVVUpLHRoaXMuc3RvcmUuc2VsZWN0KGxXKSksR3QoKChbLHQsbl0pPT5PYmplY3Qua2V5cyh0KS5sZW5ndGg+MCYmbi5zdGF0ZSE9PWZSLkxPQURJTkcpKSxoZSgoKCk9PnRoaXMuc3RvcmUuZGlzcGF0Y2godVUoKSkpKSxUdCgoKFssdF0pPT57Y29uc3Qgbj1PYmplY3Qua2V5cyh0KVswXTtyZXR1cm4gdGhpcy5kYXRhU291cmNlLmZldGNoR3JhcGhFeGVjdXRpb25EaWdlc3RzKG4sMCwwKS5waXBlKGhlKCh0PT57dGhpcy5zdG9yZS5kaXNwYXRjaChmVSh7bnVtR3JhcGhFeGVjdXRpb25zOnQubnVtX2RpZ2VzdHN9KSl9KSksZnQoKCgpPT57fSkpKX0pKSl9Y3JlYXRlTnVtQWxlcnRzQW5kQnJlYWtkb3duTG9hZGVyKHQpe3JldHVybiB0LnBpcGUoeWUodGhpcy5zdG9yZS5zZWxlY3QoVVUpLHRoaXMuc3RvcmUuc2VsZWN0KFpVKSksR3QoKChbLHQsbl0pPT5PYmplY3Qua2V5cyh0KS5sZW5ndGg+MCYmbi5zdGF0ZSE9PWZSLkxPQURJTkcpKSxoZSgoKCk9PnRoaXMuc3RvcmUuZGlzcGF0Y2goZVUoKSkpKSxUdCgoKFssdF0pPT57Y29uc3Qgbj1PYmplY3Qua2V5cyh0KVswXTtyZXR1cm4gdGhpcy5kYXRhU291cmNlLmZldGNoQWxlcnRzKG4sMCwwKS5waXBlKGhlKCh0PT57dGhpcy5zdG9yZS5kaXNwYXRjaChhVSh7bnVtQWxlcnRzOnQubnVtX2FsZXJ0cyxhbGVydHNCcmVha2Rvd246dC5hbGVydHNfYnJlYWtkb3dufSkpfSkpLGZ0KCgoKT0+e30pKSl9KSkpfWNyZWF0ZUluaXRpYWxFeGVjdXRpb25EZXRlY3Rvcih0KXtyZXR1cm4gdC5waXBlKHllKHRoaXMuc3RvcmUuc2VsZWN0KGFXKSx0aGlzLnN0b3JlLnNlbGVjdChlVykpLEd0KCgoWyx0LG5dKT0+dD4wJiYwPT09T2JqZWN0LmtleXMobi5wYWdlTG9hZGVkU2l6ZXMpLmxlbmd0aCkpLGZ0KCgoKT0+e30pKSl9Y3JlYXRlSW5pdGlhbEV4ZWN1dGlvbkRpZ2VzdCh0KXtyZXR1cm4gdC5waXBlKHllKHRoaXMuc3RvcmUuc2VsZWN0KGFXKSx0aGlzLnN0b3JlLnNlbGVjdChHVSksdGhpcy5zdG9yZS5zZWxlY3QoclcpKSxHdCgoKFssLHRdKT0+bnVsbCE9PXQpKSxmdCgoKFssdCxuLGVdKT0+KHtiZWdpbjowLGVuZDpNYXRoLm1pbih0LGUpLHJ1bklkOm59KSkpKX1vbkV4ZWN1dGlvblNjcm9sbCgpe3JldHVybiB0aGlzLmFjdGlvbnMkLnBpcGUodHcobVUsZFUsZ1UpLHllKHRoaXMuc3RvcmUuc2VsZWN0KEdVKSx0aGlzLnN0b3JlLnNlbGVjdChvVyksdGhpcy5zdG9yZS5zZWxlY3QoYVcpLHRoaXMuc3RvcmUuc2VsZWN0KGlXKSx0aGlzLnN0b3JlLnNlbGVjdChyVykpLEd0KCgoW3RdKT0+bnVsbCE9PXQpKSxmdCgoKFssdCxuLGUsYSxvXSk9Pih7cnVuSWQ6dCxiZWdpbjpuLGVuZDpNYXRoLm1pbihlLG4rYSkscGFnZVNpemU6b30pKSkseWUodGhpcy5zdG9yZS5zZWxlY3QoZVcpKSxmdCgoKFt0LG5dKT0+KHtwcm9wczp0LGxvYWRlZDpuLG1pc3NpbmdQYWdlczpaWSh0LmJlZ2luLHQuZW5kLHQucGFnZVNpemUsbi5udW1FeGVjdXRpb25zLG4ucGFnZUxvYWRlZFNpemVzKX0pKSksR3QoKCh7bWlzc2luZ1BhZ2VzOnR9KT0+dC5sZW5ndGg+MCkpLGZ0KCgoe3Byb3BzOnQsbG9hZGVkOm4sbWlzc2luZ1BhZ2VzOmV9KT0+e2NvbnN0e3J1bklkOmEscGFnZVNpemU6b309dDtyZXR1cm57YmVnaW46ZVswXSpvLGVuZDpNYXRoLm1pbihuLm51bUV4ZWN1dGlvbnMsKGVbZS5sZW5ndGgtMV0rMSkqbykscnVuSWQ6YX19KSkpfWNyZWF0ZUV4ZWN1dGlvbkRpZ2VzdExvYWRlcih0KXtyZXR1cm4gdC5waXBlKHllKHRoaXMuc3RvcmUuc2VsZWN0KGVXKSksR3QoKChbe2JlZ2luOnQsZW5kOm59LGVdKT0+bj50JiYhKGZ1bmN0aW9uIGEodCxuLGUpe2lmKG4+PWUpdGhyb3cgbmV3IEVycm9yKGBFeHBlY3RlZCBiZWdpbiB0byBiZSBsZXNzIHRoYW4gZW5kLCBidXQgZ290IGJlZ2luPSR7bn0sIGVuZD0ke2V9YCk7cmV0dXJuLTEhPT10LmZpbmRJbmRleCgodD0+dC5iZWdpbj49biYmdC5lbmQ8PWUpKX0pKGUubG9hZGluZ1Jhbmdlcyx0LG4pKSksaGUoKChbe2JlZ2luOnQsZW5kOm59XSk9Pnt0aGlzLnN0b3JlLmRpc3BhdGNoKHNVKHtiZWdpbjp0LGVuZDpufSkpfSkpLFR0KCgoW3tydW5JZDp0LGJlZ2luOm4sZW5kOmV9XSk9PnRoaXMuZGF0YVNvdXJjZS5mZXRjaEV4ZWN1dGlvbkRpZ2VzdHModCxuLGUpLnBpcGUoaGUoKHQ9Pnt0aGlzLnN0b3JlLmRpc3BhdGNoKGxVKHQpKX0pKSxmdCgoKCk9Pnt9KSkpKSkpfW9uRXhlY3V0aW9uRGlnZXN0Rm9jdXNlZCgpe3JldHVybiB0aGlzLmFjdGlvbnMkLnBpcGUodHcocFUpLHllKHRoaXMuc3RvcmUuc2VsZWN0KEdVKSx0aGlzLnN0b3JlLnNlbGVjdCh3VyksdGhpcy5zdG9yZS5zZWxlY3Qob1cpKSxmdCgoKFt0LG4sZSxhXSk9Pih7YWN0aXZlUnVuSWQ6bixsb2FkZWRFeGVjdXRpb25EYXRhOmUsZm9jdXNJbmRleDphK3QuZGlzcGxheUluZGV4fSkpKSl9Y3JlYXRlRXhlY3V0aW9uRGF0YUFuZFN0YWNrRnJhbWVzTG9hZGVyKHQpe3JldHVybiB0LnBpcGUoR3QoKCh7YWN0aXZlUnVuSWQ6dCxsb2FkZWRFeGVjdXRpb25EYXRhOm4sZm9jdXNJbmRleDplfSk9Pm51bGwhPT10JiZudWxsIT09ZSYmdm9pZCAwPT09bltlXSkpLFR0KCgoe2FjdGl2ZVJ1bklkOnQsZm9jdXNJbmRleDpufSk9Pntjb25zdCBlPW4sYT1lKzE7cmV0dXJuIHRoaXMuZGF0YVNvdXJjZS5mZXRjaEV4ZWN1dGlvbkRhdGEodCxlLGEpLnBpcGUoaGUoKHQ9Pnt0aGlzLnN0b3JlLmRpc3BhdGNoKGJVKHQpKX0pKSxmdCgodD0+KHtleGVjdXRpb25EYXRhOnQsYmVnaW46ZSxlbmQ6YX0pKSkpfSkpLGZ0KCgoe2V4ZWN1dGlvbkRhdGE6dH0pPT50LmV4ZWN1dGlvbnNbMF0pKSx5ZSh0aGlzLnN0b3JlLnNlbGVjdChHVSksdGhpcy5zdG9yZS5zZWxlY3QoRVcpKSxHdCgoKFt0LG4sZV0pPT57aWYobnVsbD09PW4pcmV0dXJuITE7Zm9yKGNvbnN0IG4gb2YgdC5zdGFja19mcmFtZV9pZHMpaWYodm9pZCAwPT09ZVtuXSlyZXR1cm4hMDtyZXR1cm4hMX0pKSxUdCgoKFt0LG5dKT0+e2NvbnN0IGU9dC5zdGFja19mcmFtZV9pZHM7cmV0dXJuIHRoaXMuZGF0YVNvdXJjZS5mZXRjaFN0YWNrRnJhbWVzKG4sZSkucGlwZShoZSgodD0+e2NvbnN0IG49e307Zm9yKGxldCBhPTA7YTxlLmxlbmd0aDsrK2EpbltlW2FdXT10LnN0YWNrX2ZyYW1lc1thXTt0aGlzLnN0b3JlLmRpc3BhdGNoKEVVKHtzdGFja0ZyYW1lczpufSkpfSkpLGZ0KCgoKT0+e30pKSl9KSkpfW9uR3JhcGhFeGVjdXRpb25TY3JvbGwoKXtyZXR1cm4gdGhpcy5hY3Rpb25zJC5waXBlKHR3KENVKSxsbigxMDApLHllKHRoaXMuc3RvcmUuc2VsZWN0KEdVKSx0aGlzLnN0b3JlLnNlbGVjdChtVyksdGhpcy5zdG9yZS5zZWxlY3QoZFcpKSxHdCgoKFssdCxuXSk9Pm51bGwhPT10JiZuPjApKSxmdCgoKFssdCxuLGVdKT0+KHtydW5JZDp0LG51bUdyYXBoRXhlY3V0aW9uczpuLHNjcm9sbEJlZ2luSW5kZXg6ZX0pKSkseWUodGhpcy5zdG9yZS5zZWxlY3QocFcpLHRoaXMuc3RvcmUuc2VsZWN0KGdXKSx0aGlzLnN0b3JlLnNlbGVjdChiVyksdGhpcy5zdG9yZS5zZWxlY3QodVcpKSxmdCgoKFt7cnVuSWQ6dCxudW1HcmFwaEV4ZWN1dGlvbnM6bixzY3JvbGxCZWdpbkluZGV4OmV9LGEsbyxyLGldKT0+e2xldCBjPVpZKGUsTWF0aC5taW4oZStvLG4pLGEsbixpKTtyZXR1cm4gYz1jLmZpbHRlcigodD0+LTE9PT1yLmluZGV4T2YodCkpKSx7cnVuSWQ6dCxtaXNzaW5nUGFnZXM6YyxwYWdlU2l6ZTphLG51bUdyYXBoRXhlY3V0aW9uczpufX0pKSl9bG9hZEdyYXBoRXhlY3V0aW9uUGFnZXModCl7cmV0dXJuIHQucGlwZShHdCgoKHttaXNzaW5nUGFnZXM6dH0pPT50Lmxlbmd0aD4wKSksaGUoKCh7bWlzc2luZ1BhZ2VzOnR9KT0+e3QuZm9yRWFjaCgodD0+e3RoaXMuc3RvcmUuZGlzcGF0Y2goaFUoe3BhZ2VJbmRleDp0fSkpfSkpfSkpLFR0KCgoe3J1bklkOnQsbWlzc2luZ1BhZ2VzOm4scGFnZVNpemU6ZSxudW1HcmFwaEV4ZWN1dGlvbnM6YX0pPT57Y29uc3Qgbz1uWzBdKmUscj1NYXRoLm1pbigobltuLmxlbmd0aC0xXSsxKSplLGEpO3JldHVybiB0aGlzLmRhdGFTb3VyY2UuZmV0Y2hHcmFwaEV4ZWN1dGlvbkRhdGEodCxvLHIpLnBpcGUoaGUoKHQ9Pnt0aGlzLnN0b3JlLmRpc3BhdGNoKF9VKHQpKX0pKSxmdCgoKCk9Pnt9KSkpfSkpKX1sb2FkR3JhcGhPcEluZm8oKXtyZXR1cm4gdGhpcy5hY3Rpb25zJC5waXBlKHR3KE9VLE1VKSx5ZSh0aGlzLnN0b3JlLnNlbGVjdChHVSksdGhpcy5zdG9yZS5zZWxlY3QoU1cpKSxHdCgoKFt0LG4sZV0pPT57Y29uc3R7Z3JhcGhfaWQ6YSxvcF9uYW1lOm99PXQ7cmV0dXJuIShudWxsPT09bnx8dm9pZCAwIT09ZVthXSYmZVthXS5oYXMobykmJihlW2FdLmdldChvKT09PWZSLkxPQURJTkd8fGVbYV0uZ2V0KG8pPT09ZlIuTE9BREVEKSl9KSksaGUoKChbe2dyYXBoX2lkOnQsb3BfbmFtZTpufV0pPT50aGlzLnN0b3JlLmRpc3BhdGNoKFBVKHtncmFwaF9pZDp0LG9wX25hbWU6bn0pKSkpLFR0KCgoW3Qsbl0pPT57Y29uc3R7Z3JhcGhfaWQ6ZSxvcF9uYW1lOmF9PXQ7cmV0dXJuIHRoaXMuZGF0YVNvdXJjZS5mZXRjaEdyYXBoT3BJbmZvKG4sZSxhKS5waXBlKGhlKCh0PT50aGlzLnN0b3JlLmRpc3BhdGNoKHhVKHtncmFwaE9wSW5mb1Jlc3BvbnNlOnR9KSkpKSxmdCgodD0+KHtydW5JZDpuLHN0YWNrRnJhbWVJZHM6dC5zdGFja19mcmFtZV9pZHN9KSkpKX0pKSl9bG9hZEdyYXBoT3BTdGFja0ZyYW1lcyh0KXtyZXR1cm4gdC5waXBlKHllKHRoaXMuc3RvcmUuc2VsZWN0KEVXKSksZnQoKChbe3J1bklkOnQsc3RhY2tGcmFtZUlkczpufSxlXSk9Pih7cnVuSWQ6dCxtaXNzaW5nU3RhY2tGcmFtZUlkczpuLmZpbHRlcigodD0+dm9pZCAwPT09ZVt0XSkpfSkpKSxHdCgoKHtydW5JZDp0LG1pc3NpbmdTdGFja0ZyYW1lSWRzOm59KT0+bnVsbCE9PXQmJm4ubGVuZ3RoPjApKSxUdCgoKHtydW5JZDp0LG1pc3NpbmdTdGFja0ZyYW1lSWRzOm59KT0+dGhpcy5kYXRhU291cmNlLmZldGNoU3RhY2tGcmFtZXModCxuKS5waXBlKGhlKCh0PT57Y29uc3QgZT17fTtmb3IobGV0IGE9MDthPG4ubGVuZ3RoOysrYSllW25bYV1dPXQuc3RhY2tfZnJhbWVzW2FdO3RoaXMuc3RvcmUuZGlzcGF0Y2goRVUoe3N0YWNrRnJhbWVzOmV9KSl9KSksZnQoKCgpPT57fSkpKSkpKX1vbkFsZXJ0VHlwZUZvY3VzZWQoKXtyZXR1cm4gdGhpcy5hY3Rpb25zJC5waXBlKHR3KHJVKSx5ZSh0aGlzLnN0b3JlLnNlbGVjdChHVSksdGhpcy5zdG9yZS5zZWxlY3QoSlUpLHRoaXMuc3RvcmUuc2VsZWN0KFFVKSx0aGlzLnN0b3JlLnNlbGVjdChLVSksdGhpcy5zdG9yZS5zZWxlY3QoWlUpKSxHdCgoKFssdCxuLGUsYSxvXSk9Pm51bGwhPT10JiZudWxsIT09biYmZT4wJiYobnVsbD09PWF8fE9iamVjdC5rZXlzKGEpLmxlbmd0aDxlKSYmby5zdGF0ZSE9PWZSLkxPQURJTkcpKSxoZSgoKCk9PnRoaXMuc3RvcmUuZGlzcGF0Y2goZVUoKSkpKSxUdCgoKFssdCxuXSk9PnRoaXMuZGF0YVNvdXJjZS5mZXRjaEFsZXJ0cyh0LDAsLTEsbikpKSxoZSgoKHtudW1fYWxlcnRzOnQsYWxlcnRzX2JyZWFrZG93bjpuLGFsZXJ0X3R5cGU6ZSxiZWdpbjphLGVuZDpvLGFsZXJ0czpyfSk9Pnt0aGlzLnN0b3JlLmRpc3BhdGNoKG9VKHtudW1BbGVydHM6dCxhbGVydHNCcmVha2Rvd246bixhbGVydFR5cGU6ZSxiZWdpbjphLGVuZDpvLGFsZXJ0czpyfSkpfSkpKX1mZXRjaEV4ZWN1dGlvbkRpZ2VzdHNGb3JBbGVydFR5cGVGb2N1cyh0KXtyZXR1cm4gdC5waXBlKHllKHRoaXMuc3RvcmUuc2VsZWN0KHJXKSx0aGlzLnN0b3JlLnNlbGVjdChpVyksdGhpcy5zdG9yZS5zZWxlY3QoYVcpLHRoaXMuc3RvcmUuc2VsZWN0KGVXKSx0aGlzLnN0b3JlLnNlbGVjdChHVSkpLGZ0KCgoW3QsbixlLGEsbyxyXSk9Pntjb25zdCBpPXQuYWxlcnRzWzBdLmV4ZWN1dGlvbl9pbmRleCxjPVpZKE1hdGgubWF4KDAsaS1NYXRoLmZsb29yKGUvMikpLE1hdGgubWluKGkrTWF0aC5mbG9vcihlLzIpLGEpLG4sYSxvLnBhZ2VMb2FkZWRTaXplcyk7cmV0dXJuIDA9PT1jLmxlbmd0aD97cnVuSWQ6cixiZWdpbjowLGVuZDowfTp7cnVuSWQ6cixiZWdpbjpjWzBdKm4sZW5kOk1hdGgubWluKG8ubnVtRXhlY3V0aW9ucywoY1tjLmxlbmd0aC0xXSsxKSpuKX19KSkpfWxvYWRTb3VyY2VGaWxlTGlzdCh0KXtyZXR1cm4gdC5waXBlKHllKHRoaXMuc3RvcmUuc2VsZWN0KEdVKSx0aGlzLnN0b3JlLnNlbGVjdChEVykpLEd0KCgoWyx0LG5dKT0+bnVsbCE9PXQmJm4uc3RhdGUhPT1mUi5MT0FESU5HKSksaGUoKCgpPT50aGlzLnN0b3JlLmRpc3BhdGNoKHlVKCkpKSksVHQoKChbLHRdKT0+dGhpcy5kYXRhU291cmNlLmZldGNoU291cmNlRmlsZUxpc3QodCkucGlwZShoZSgodD0+e2NvbnN0IG49W107dC5mb3JFYWNoKCgoW3QsZV0pPT57bi5wdXNoKHtob3N0X25hbWU6dCxmaWxlX3BhdGg6ZX0pfSkpLHRoaXMuc3RvcmUuZGlzcGF0Y2goa1Uoe3NvdXJjZUZpbGVzOm59KSl9KSksZnQoKCgpPT57fSkpKSkpKX1vblNvdXJjZUZpbGVGb2N1c2VkKCl7cmV0dXJuIHRoaXMuYWN0aW9ucyQucGlwZSh0dyh2VSkseWUodGhpcy5zdG9yZS5zZWxlY3QoR1UpLHRoaXMuc3RvcmUuc2VsZWN0KElXKSx0aGlzLnN0b3JlLnNlbGVjdChOVykpLGZ0KCgoW3QsbixlLGFdKT0+KHtydW5JZDpuLHN0YWNrRnJhbWU6dC5zdGFja0ZyYW1lLGZpbGVJbmRleDplLGZpbGVDb250ZW50OmF9KSkpLEd0KCgoe3J1bklkOnQsZmlsZUNvbnRlbnQ6bn0pPT5udWxsIT09dCYmbnVsbCE9PW4mJm4ubG9hZFN0YXRlPT09ZlIuTk9UX0xPQURFRCkpLGhlKCgoe3N0YWNrRnJhbWU6dH0pPT50aGlzLnN0b3JlLmRpc3BhdGNoKHdVKHtob3N0X25hbWU6dC5ob3N0X25hbWUsZmlsZV9wYXRoOnQuZmlsZV9wYXRofSkpKSksVHQoKCh7ZmlsZUluZGV4OnQscnVuSWQ6bn0pPT50aGlzLmRhdGFTb3VyY2UuZmV0Y2hTb3VyY2VGaWxlKG4sdCkucGlwZShoZSgodD0+e3RoaXMuc3RvcmUuZGlzcGF0Y2goU1UodCkpfSkpLGZ0KCgoKT0+e30pKSkpKSl9fVhZLsm1ZmFjPWZ1bmN0aW9uIHQobil7cmV0dXJuIG5ldyhufHxYWSkoWmEoJHYpLFphKGN2KSxaYShZaikpfSxYWS7JtXByb3Y9V2Uoe3Rva2VuOlhZLGZhY3Rvcnk6WFkuybVmYWN9KTtjbGFzcyBKWXt9SlkuybVtb2Q9eG8oe3R5cGU6Sll9KSxKWS7JtWluaj1HZSh7ZmFjdG9yeTpmdW5jdGlvbiB0KG4pe3JldHVybiBuZXcobnx8SlkpfSxpbXBvcnRzOltbUE9dXX0pLCgidW5kZWZpbmVkIj09dHlwZW9mIG5nSml0TW9kZXx8bmdKaXRNb2RlKSYmeW8oSlkse2RlY2xhcmF0aW9uczpbVlcsVVddLGltcG9ydHM6W1BPXSxleHBvcnRzOltVV119KTtjbGFzcyBRWXt9UVkuybVtb2Q9eG8oe3R5cGU6UVl9KSxRWS7JtWluaj1HZSh7ZmFjdG9yeTpmdW5jdGlvbiB0KG4pe3JldHVybiBuZXcobnx8UVkpfSxpbXBvcnRzOltbUE9dXX0pLCgidW5kZWZpbmVkIj09dHlwZW9mIG5nSml0TW9kZXx8bmdKaXRNb2RlKSYmeW8oUVkse2RlY2xhcmF0aW9uczpbZkcsTUcsQ0csaEcsX0csT0ddLGltcG9ydHM6W1BPXSxleHBvcnRzOltPR119KTtjbGFzcyBLWXt9S1kuybVtb2Q9eG8oe3R5cGU6S1l9KSxLWS7JtWluaj1HZSh7ZmFjdG9yeTpmdW5jdGlvbiB0KG4pe3JldHVybiBuZXcobnx8S1kpfSxpbXBvcnRzOltbUE8sUVksdkFdXX0pLCgidW5kZWZpbmVkIj09dHlwZW9mIG5nSml0TW9kZXx8bmdKaXRNb2RlKSYmeW8oS1kse2RlY2xhcmF0aW9uczpbZ1kscFldLGltcG9ydHM6W1BPLFFZLHZBXSxleHBvcnRzOltwWV19KTtjbGFzcyAkWXt9JFkuybVtb2Q9eG8oe3R5cGU6JFl9KSwkWS7JtWluaj1HZSh7ZmFjdG9yeTpmdW5jdGlvbiB0KG4pe3JldHVybiBuZXcobnx8JFkpfSxpbXBvcnRzOltbUE9dXX0pLCgidW5kZWZpbmVkIj09dHlwZW9mIG5nSml0TW9kZXx8bmdKaXRNb2RlKSYmeW8oJFkse2RlY2xhcmF0aW9uczpbZVksR0csYVldLGltcG9ydHM6W1BPXSxleHBvcnRzOlthWV19KTtjbGFzcyB0cXt9dHEuybVtb2Q9eG8oe3R5cGU6dHF9KSx0cS7JtWluaj1HZSh7ZmFjdG9yeTpmdW5jdGlvbiB0KG4pe3JldHVybiBuZXcobnx8dHEpfX0pLCgidW5kZWZpbmVkIj09dHlwZW9mIG5nSml0TW9kZXx8bmdKaXRNb2RlKSYmeW8odHEse2RlY2xhcmF0aW9uczpbWmosWGpdLGV4cG9ydHM6W1hqXX0pO2NsYXNzIG5xe31ucS7JtW1vZD14byh7dHlwZTpucX0pLG5xLsm1aW5qPUdlKHtmYWN0b3J5OmZ1bmN0aW9uIHQobil7cmV0dXJuIG5ldyhufHxucSl9fSksKCJ1bmRlZmluZWQiPT10eXBlb2YgbmdKaXRNb2RlfHxuZ0ppdE1vZGUpJiZ5byhucSx7ZGVjbGFyYXRpb25zOltfWV0sZXhwb3J0czpbX1ldfSk7Y29uc3QgZXE9WyJjb2RlVmlld2VyQ29udGFpbmVyIl07Y2xhc3MgYXF7Y29uc3RydWN0b3IoKXt0aGlzLmZpcnN0VGV4dD1udWxsLHRoaXMuc2Vjb25kVGV4dD1udWxsLHRoaXMucmVuZGVyU2lkZUJ5U2lkZT0hMCx0aGlzLm1vbmFjbz1udWxsLHRoaXMuZWRpdG9yPW51bGwsdGhpcy5SRVNJWkVfREVCT1VOQ0VfSU5URVJWQUxfTVM9NTB9b25SZXNpemUoKXt0aGlzLmVkaXRvciYmdGhpcy5lZGl0b3IubGF5b3V0KCl9bmdPbkNoYW5nZXModCl7aWYoIXRoaXMubW9uYWNvKXJldHVybjtjb25zdCBuPSF0aGlzLmVkaXRvcjtuJiYodGhpcy5lZGl0b3I9dGhpcy5tb25hY28uZWRpdG9yLmNyZWF0ZURpZmZFZGl0b3IodGhpcy5jb2RlVmlld2VyQ29udGFpbmVyLm5hdGl2ZUVsZW1lbnQse3JlYWRPbmx5OiEwLGZvbnRTaXplOjEwLG1pbmltYXA6e2VuYWJsZWQ6ITB9LHJlbmRlclNpZGVCeVNpZGU6dGhpcy5yZW5kZXJTaWRlQnlTaWRlfSkpLChufHx0LmZpcnN0VGV4dHx8dC5zZWNvbmRUZXh0KSYmdGhpcy5lZGl0b3Iuc2V0TW9kZWwoe29yaWdpbmFsOnRoaXMubW9uYWNvLmVkaXRvci5jcmVhdGVNb2RlbCh0aGlzLmZpcnN0VGV4dHx8IiIpLG1vZGlmaWVkOnRoaXMubW9uYWNvLmVkaXRvci5jcmVhdGVNb2RlbCh0aGlzLnNlY29uZFRleHR8fCIiKX0pLHQucmVuZGVyU2lkZUJ5U2lkZSYmdGhpcy5lZGl0b3IudXBkYXRlT3B0aW9ucyh7cmVuZGVyU2lkZUJ5U2lkZTp0aGlzLnJlbmRlclNpZGVCeVNpZGV9KX19YXEuybVmYWM9ZnVuY3Rpb24gdChuKXtyZXR1cm4gbmV3KG58fGFxKX0sYXEuybVjbXA9X28oe3R5cGU6YXEsc2VsZWN0b3JzOltbInNvdXJjZS1jb2RlLWRpZmYtY29tcG9uZW50Il1dLHZpZXdRdWVyeTpmdW5jdGlvbiB0KG4sZSl7dmFyIGE7MSZuJiZqZihlcSwhMCx4dSksMiZuJiZWZihhPVpmKCkpJiYoZS5jb2RlVmlld2VyQ29udGFpbmVyPWEuZmlyc3QpfSxpbnB1dHM6e2ZpcnN0VGV4dDoiZmlyc3RUZXh0IixzZWNvbmRUZXh0OiJzZWNvbmRUZXh0IixyZW5kZXJTaWRlQnlTaWRlOiJyZW5kZXJTaWRlQnlTaWRlIixtb25hY286Im1vbmFjbyJ9LGZlYXR1cmVzOltwcl0sZGVjbHM6Mix2YXJzOjEsY29uc3RzOltbImRldGVjdFJlc2l6ZSIsIiIsMSwiY29kZS12aWV3ZXItY29udGFpbmVyIiwzLCJyZXNpemVFdmVudERlYm91bmNlUGVyaW9kSW5NcyIsIm9uUmVzaXplIl0sWyJjb2RlVmlld2VyQ29udGFpbmVyIiwiIl1dLHRlbXBsYXRlOmZ1bmN0aW9uIHQobixlKXsxJm4mJihLZygwLCJkaXYiLDAsMSksY3AoIm9uUmVzaXplIiwoZnVuY3Rpb24gdCgpe3JldHVybiBlLm9uUmVzaXplKCl9KSksJGcoKSksMiZuJiZKZygicmVzaXplRXZlbnREZWJvdW5jZVBlcmlvZEluTXMiLGUuUkVTSVpFX0RFQk9VTkNFX0lOVEVSVkFMX01TKX0sZGlyZWN0aXZlczpbX1ldLHN0eWxlczpbIi5jb2RlLXZpZXdlci1jb250YWluZXJbX25nY29udGVudC0lQ09NUCVdIHtcbiAgICAgICAgaGVpZ2h0OiAxMDAlO1xuICAgICAgfSJdLGNoYW5nZURldGVjdGlvbjowfSk7Y2xhc3Mgb3F7Y29uc3RydWN0b3IoKXt0aGlzLmZpcnN0VGV4dD1udWxsLHRoaXMuc2Vjb25kVGV4dD1udWxsLHRoaXMucmVuZGVyU2lkZUJ5U2lkZT0hMCx0aGlzLm1vbmFjbyQ9bnVsbH1uZ09uSW5pdCgpe3RoaXMubW9uYWNvJD1SdChoWSgpKS5waXBlKGZ0KCgoKT0+d2luZG93Lm1vbmFjbykpKX19b3EuybVmYWM9ZnVuY3Rpb24gdChuKXtyZXR1cm4gbmV3KG58fG9xKX0sb3EuybVjbXA9X28oe3R5cGU6b3Esc2VsZWN0b3JzOltbInNvdXJjZS1jb2RlLWRpZmYiXV0saW5wdXRzOntmaXJzdFRleHQ6ImZpcnN0VGV4dCIsc2Vjb25kVGV4dDoic2Vjb25kVGV4dCIscmVuZGVyU2lkZUJ5U2lkZToicmVuZGVyU2lkZUJ5U2lkZSJ9LGRlY2xzOjIsdmFyczo2LGNvbnN0czpbWzMsImZpcnN0VGV4dCIsInNlY29uZFRleHQiLCJyZW5kZXJTaWRlQnlTaWRlIiwibW9uYWNvIl1dLHRlbXBsYXRlOmZ1bmN0aW9uIHQobixlKXsxJm4mJih0cCgwLCJzb3VyY2UtY29kZS1kaWZmLWNvbXBvbmVudCIsMCkseWYoMSwiYXN5bmMiKSksMiZuJiZKZygiZmlyc3RUZXh0IixlLmZpcnN0VGV4dCkoInNlY29uZFRleHQiLGUuc2Vjb25kVGV4dCkoInJlbmRlclNpZGVCeVNpZGUiLGUucmVuZGVyU2lkZUJ5U2lkZSkoIm1vbmFjbyIsa2YoMSw0LGUubW9uYWNvJCkpfSxkaXJlY3RpdmVzOlthcV0scGlwZXM6W29PXSxzdHlsZXM6WyJzb3VyY2UtY29kZS1kaWZmLWNvbXBvbmVudFtfbmdjb250ZW50LSVDT01QJV0ge1xuICAgICAgICBkaXNwbGF5OiBibG9jaztcbiAgICAgICAgaGVpZ2h0OiAxMDAlO1xuICAgICAgfSJdLGNoYW5nZURldGVjdGlvbjowfSk7Y2xhc3MgcnF7fXJxLsm1bW9kPXhvKHt0eXBlOnJxfSkscnEuybVpbmo9R2Uoe2ZhY3Rvcnk6ZnVuY3Rpb24gdChuKXtyZXR1cm4gbmV3KG58fHJxKX0saW1wb3J0czpbW1BPLG5xXV19KSwoInVuZGVmaW5lZCI9PXR5cGVvZiBuZ0ppdE1vZGV8fG5nSml0TW9kZSkmJnlvKHJxLHtkZWNsYXJhdGlvbnM6W01ZLE9ZLGFxLG9xXSxpbXBvcnRzOltQTyxucV0sZXhwb3J0czpbT1ksb3FdfSk7Y2xhc3MgaXF7fWlxLsm1bW9kPXhvKHt0eXBlOmlxfSksaXEuybVpbmo9R2Uoe2ZhY3Rvcnk6ZnVuY3Rpb24gdChuKXtyZXR1cm4gbmV3KG58fGlxKX0saW1wb3J0czpbW1BPLHJxXV19KSwoInVuZGVmaW5lZCI9PXR5cGVvZiBuZ0ppdE1vZGV8fG5nSml0TW9kZSkmJnlvKGlxLHtkZWNsYXJhdGlvbnM6W2tZLHZZXSxpbXBvcnRzOltQTyxycV0sZXhwb3J0czpbdlldfSk7Y2xhc3MgY3F7fWNxLsm1bW9kPXhvKHt0eXBlOmNxfSksY3EuybVpbmo9R2Uoe2ZhY3Rvcnk6ZnVuY3Rpb24gdChuKXtyZXR1cm4gbmV3KG58fGNxKX0saW1wb3J0czpbW1BPLHJxXV19KSwoInVuZGVmaW5lZCI9PXR5cGVvZiBuZ0ppdE1vZGV8fG5nSml0TW9kZSkmJnlvKGNxLHtkZWNsYXJhdGlvbnM6W2pZLFVZXSxpbXBvcnRzOltQTyxycV0sZXhwb3J0czpbVVldfSk7Y2xhc3Mgc3F7fXNxLsm1bW9kPXhvKHt0eXBlOnNxfSksc3EuybVpbmo9R2Uoe2ZhY3Rvcnk6ZnVuY3Rpb24gdChuKXtyZXR1cm4gbmV3KG58fHNxKX0saW1wb3J0czpbW1BPLFFZXV19KSwoInVuZGVmaW5lZCI9PXR5cGVvZiBuZ0ppdE1vZGV8fG5nSml0TW9kZSkmJnlvKHNxLHtkZWNsYXJhdGlvbnM6W3dHLEVHXSxpbXBvcnRzOltQTyxRWV0sZXhwb3J0czpbRUddfSk7Y2xhc3MgbHF7fWxxLsm1bW9kPXhvKHt0eXBlOmxxfSksbHEuybVpbmo9R2Uoe2ZhY3Rvcnk6ZnVuY3Rpb24gdChuKXtyZXR1cm4gbmV3KG58fGxxKX0saW1wb3J0czpbW1BPLHNxLG9BLEtXXV19KSwoInVuZGVmaW5lZCI9PXR5cGVvZiBuZ0ppdE1vZGV8fG5nSml0TW9kZSkmJnlvKGxxLHtkZWNsYXJhdGlvbnM6W05HLExHXSxpbXBvcnRzOltQTyxzcSxvQSxLV10sZXhwb3J0czpbTEddfSk7Y29uc3QgbXE9bmV3IEZhKCJbcGx1Z2luc10gUGx1Z2luIHJlZ2lzdHJ5IGNvbmZpZyIpLGRxPW5ldyBNYXA7Y2xhc3MgZ3F7Y29uc3RydWN0b3IodCl7aWYoIXQpcmV0dXJuO2NvbnN0IG49bmV3IFNldCh0Lm1hcCgodD0+dC5wbHVnaW5OYW1lKSkpO2NvbnNvbGUuYXNzZXJ0KG4uc2l6ZT09PXQubGVuZ3RoLCJDYW5ub3QgcmVnaXN0ZXIgdGhlIHNhbWUgcGx1Z2luIG11bHRpcGxlIHRpbWVzLiIpO2Zvcihjb25zdCBuIG9mIHQpe2NvbnN0e3BsdWdpbk5hbWU6dCxjb21wb25lbnRDbGFzczplfT1uO2RxLnNldCh0LGUpfX1zdGF0aWMgZm9yUGx1Z2luKHQsbil7cmV0dXJue25nTW9kdWxlOmdxLHByb3ZpZGVyczpbe3Byb3ZpZGU6bXEsbXVsdGk6ITAsdXNlVmFsdWU6e3BsdWdpbk5hbWU6dCxjb21wb25lbnRDbGFzczpufX1dfX1nZXRDb21wb25lbnQodCl7cmV0dXJuIGRxLmdldCh0KXx8bnVsbH19Z3EuybVtb2Q9eG8oe3R5cGU6Z3F9KSxncS7JtWluaj1HZSh7ZmFjdG9yeTpmdW5jdGlvbiB0KG4pe3JldHVybiBuZXcobnx8Z3EpKFphKG1xLDgpKX19KTtjbGFzcyBwcXt9cHEuybVtb2Q9eG8oe3R5cGU6cHF9KSxwcS7JtWluaj1HZSh7ZmFjdG9yeTpmdW5jdGlvbiB0KG4pe3JldHVybiBuZXcobnx8cHEpfSxpbXBvcnRzOltbSlksUE8sS1ksJFksdHEsaXEsY3EscWosbHEsSXYuZm9yRmVhdHVyZShBVSwoZnVuY3Rpb24gYnEodCxuKXtyZXR1cm4gTFUodCxuKX0pKSxmdy5mb3JGZWF0dXJlKFtYWV0pLGdxLmZvclBsdWdpbigiZGVidWdnZXItdjIiLHFZKV1dfSksKCJ1bmRlZmluZWQiPT10eXBlb2YgbmdKaXRNb2RlfHxuZ0ppdE1vZGUpJiZ5byhwcSx7ZGVjbGFyYXRpb25zOltZWSxxWV0saW1wb3J0czpbSlksUE8sS1ksJFksdHEsaXEsY3EscWosbHEsRHYsdXcsZ3FdLGV4cG9ydHM6W3FZXX0pO2NvbnN0IHVxPVsiKiJdO2Z1bmN0aW9uIGZxKHQsbil7aWYoMSZ0KXtjb25zdCB0PW9wKCk7S2coMCwiZGl2IiwwKSxjcCgia2V5ZG93biIsKGZ1bmN0aW9uIG4oZSl7cmV0dXJuIGpyKHQpLGdwKCkuX2hhbmRsZUtleWRvd24oZSl9KSkoImNsaWNrIiwoZnVuY3Rpb24gbigpe3JldHVybiBqcih0KSxncCgpLmNsb3NlZC5lbWl0KCJjbGljayIpfSkpKCJAdHJhbnNmb3JtTWVudS5zdGFydCIsKGZ1bmN0aW9uIG4oZSl7cmV0dXJuIGpyKHQpLGdwKCkuX29uQW5pbWF0aW9uU3RhcnQoZSl9KSkoIkB0cmFuc2Zvcm1NZW51LmRvbmUiLChmdW5jdGlvbiBuKGUpe3JldHVybiBqcih0KSxncCgpLl9vbkFuaW1hdGlvbkRvbmUoZSl9KSksS2coMSwiZGl2IiwxKSxocCgyKSwkZygpLCRnKCl9aWYoMiZ0KXtjb25zdCB0PWdwKCk7SmcoImlkIix0LnBhbmVsSWQpKCJuZ0NsYXNzIix0Ll9jbGFzc0xpc3QpKCJAdHJhbnNmb3JtTWVudSIsdC5fcGFuZWxBbmltYXRpb25TdGF0ZSksTmcoImFyaWEtbGFiZWwiLHQuYXJpYUxhYmVsfHxudWxsKSgiYXJpYS1sYWJlbGxlZGJ5Iix0LmFyaWFMYWJlbGxlZGJ5fHxudWxsKSgiYXJpYS1kZXNjcmliZWRieSIsdC5hcmlhRGVzY3JpYmVkYnl8fG51bGwpfX1jb25zdCBocT17dHJhbnNmb3JtTWVudTpTUCgidHJhbnNmb3JtTWVudSIsW1JQKCJ2b2lkIix6UCh7b3BhY2l0eTowLHRyYW5zZm9ybToic2NhbGUoMC44KSJ9KSksRFAoInZvaWQgPT4gZW50ZXIiLChmdW5jdGlvbiBfcSh0LG49bnVsbCl7cmV0dXJue3R5cGU6MyxzdGVwczp0LG9wdGlvbnM6bn19KShbTlAoIi5tYXQtbWVudS1jb250ZW50LCAubWF0LW1kYy1tZW51LWNvbnRlbnQiLEVQKCIxMDBtcyBsaW5lYXIiLHpQKHtvcGFjaXR5OjF9KSkpLEVQKCIxMjBtcyBjdWJpYy1iZXppZXIoMCwgMCwgMC4yLCAxKSIselAoe3RyYW5zZm9ybToic2NhbGUoMSkifSkpXSkpLERQKCIqID0+IHZvaWQiLEVQKCIxMDBtcyAyNW1zIGxpbmVhciIselAoe29wYWNpdHk6MH0pKSldKSxmYWRlSW5JdGVtczpTUCgiZmFkZUluSXRlbXMiLFtSUCgic2hvd2luZyIselAoe29wYWNpdHk6MX0pKSxEUCgidm9pZCA9PiAqIixbelAoe29wYWNpdHk6MH0pLEVQKCI0MDBtcyAxMDBtcyBjdWJpYy1iZXppZXIoMC41NSwgMCwgMC41NSwgMC4yKSIpXSldKX0sQ3E9bmV3IEZhKCJNYXRNZW51Q29udGVudCIpOwovKioKICAgICAqIEBsaWNlbnNlCiAgICAgKiBDb3B5cmlnaHQgR29vZ2xlIExMQyBBbGwgUmlnaHRzIFJlc2VydmVkLgogICAgICoKICAgICAqIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGFuIE1JVC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCiAgICAgKiBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlIGF0IGh0dHBzOi8vYW5ndWxhci5pby9saWNlbnNlCiAgICAgKi9jbGFzcyBNcXtjb25zdHJ1Y3Rvcih0LG4sZSxhLG8scixpKXt0aGlzLl90ZW1wbGF0ZT10LHRoaXMuX2NvbXBvbmVudEZhY3RvcnlSZXNvbHZlcj1uLHRoaXMuX2FwcFJlZj1lLHRoaXMuX2luamVjdG9yPWEsdGhpcy5fdmlld0NvbnRhaW5lclJlZj1vLHRoaXMuX2RvY3VtZW50PXIsdGhpcy5fY2hhbmdlRGV0ZWN0b3JSZWY9aSx0aGlzLl9hdHRhY2hlZD1uZXcgeH1hdHRhY2godD17fSl7dGhpcy5fcG9ydGFsfHwodGhpcy5fcG9ydGFsPW5ldyBBQSh0aGlzLl90ZW1wbGF0ZSx0aGlzLl92aWV3Q29udGFpbmVyUmVmKSksdGhpcy5kZXRhY2goKSx0aGlzLl9vdXRsZXR8fCh0aGlzLl9vdXRsZXQ9bmV3IFRBKHRoaXMuX2RvY3VtZW50LmNyZWF0ZUVsZW1lbnQoImRpdiIpLHRoaXMuX2NvbXBvbmVudEZhY3RvcnlSZXNvbHZlcix0aGlzLl9hcHBSZWYsdGhpcy5faW5qZWN0b3IpKTtjb25zdCBuPXRoaXMuX3RlbXBsYXRlLmVsZW1lbnRSZWYubmF0aXZlRWxlbWVudDtuLnBhcmVudE5vZGUuaW5zZXJ0QmVmb3JlKHRoaXMuX291dGxldC5vdXRsZXRFbGVtZW50LG4pLHRoaXMuX2NoYW5nZURldGVjdG9yUmVmJiZ0aGlzLl9jaGFuZ2VEZXRlY3RvclJlZi5tYXJrRm9yQ2hlY2soKSx0aGlzLl9wb3J0YWwuYXR0YWNoKHRoaXMuX291dGxldCx0KSx0aGlzLl9hdHRhY2hlZC5uZXh0KCl9ZGV0YWNoKCl7dGhpcy5fcG9ydGFsLmlzQXR0YWNoZWQmJnRoaXMuX3BvcnRhbC5kZXRhY2goKX1uZ09uRGVzdHJveSgpe3RoaXMuX291dGxldCYmdGhpcy5fb3V0bGV0LmRpc3Bvc2UoKX19TXEuybVmYWM9ZnVuY3Rpb24gdChuKXtyZXR1cm4gbmV3KG58fE1xKShaZyhKdSksWmcoUHUpLFpnKHBDKSxaZyh5ZCksWmcoJHUpLFpnKHpDKSxaZyhWbSkpfSxNcS7JtWRpcj12byh7dHlwZTpNcSxzZWxlY3RvcnM6W1sibmctdGVtcGxhdGUiLCJtYXRNZW51Q29udGVudCIsIiJdXSxmZWF0dXJlczpbTXUoW3twcm92aWRlOkNxLHVzZUV4aXN0aW5nOk1xfV0pXX0pLE1xLmN0b3JQYXJhbWV0ZXJzPSgpPT5be3R5cGU6SnV9LHt0eXBlOlB1fSx7dHlwZTpwQ30se3R5cGU6eWR9LHt0eXBlOiR1fSx7dHlwZTp2b2lkIDAsZGVjb3JhdG9yczpbe3R5cGU6SWUsYXJnczpbekNdfV19LHt0eXBlOlZtfV0KLyoqCiAgICAgKiBAbGljZW5zZQogICAgICogQ29weXJpZ2h0IEdvb2dsZSBMTEMgQWxsIFJpZ2h0cyBSZXNlcnZlZC4KICAgICAqCiAgICAgKiBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhbiBNSVQtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQogICAgICogZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZSBhdCBodHRwczovL2FuZ3VsYXIuaW8vbGljZW5zZQogICAgICovOwovKioKICAgICAqIEBsaWNlbnNlCiAgICAgKiBDb3B5cmlnaHQgR29vZ2xlIExMQyBBbGwgUmlnaHRzIFJlc2VydmVkLgogICAgICoKICAgICAqIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGFuIE1JVC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCiAgICAgKiBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlIGF0IGh0dHBzOi8vYW5ndWxhci5pby9saWNlbnNlCiAgICAgKi8KY29uc3QgT3E9bmV3IEZhKCJNQVRfTUVOVV9QQU5FTCIpLFBxPWFFKG5FKAovKioKICAgICAqIEBsaWNlbnNlCiAgICAgKiBDb3B5cmlnaHQgR29vZ2xlIExMQyBBbGwgUmlnaHRzIFJlc2VydmVkLgogICAgICoKICAgICAqIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGFuIE1JVC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCiAgICAgKiBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlIGF0IGh0dHBzOi8vYW5ndWxhci5pby9saWNlbnNlCiAgICAgKi8KY2xhc3N7fSkpO2NsYXNzIHhxIGV4dGVuZHMgUHF7Y29uc3RydWN0b3IodCxuLGUsYSl7c3VwZXIoKSx0aGlzLl9lbGVtZW50UmVmPXQsdGhpcy5fZm9jdXNNb25pdG9yPWUsdGhpcy5fcGFyZW50TWVudT1hLHRoaXMucm9sZT0ibWVudWl0ZW0iLHRoaXMuX2hvdmVyZWQ9bmV3IHgsdGhpcy5fZm9jdXNlZD1uZXcgeCx0aGlzLl9oaWdobGlnaHRlZD0hMSx0aGlzLl90cmlnZ2Vyc1N1Ym1lbnU9ITEsYSYmYS5hZGRJdGVtJiZhLmFkZEl0ZW0odGhpcyl9Zm9jdXModD0icHJvZ3JhbSIsbil7dGhpcy5fZm9jdXNNb25pdG9yP3RoaXMuX2ZvY3VzTW9uaXRvci5mb2N1c1ZpYSh0aGlzLl9nZXRIb3N0RWxlbWVudCgpLHQsbik6dGhpcy5fZ2V0SG9zdEVsZW1lbnQoKS5mb2N1cyhuKSx0aGlzLl9mb2N1c2VkLm5leHQodGhpcyl9bmdBZnRlclZpZXdJbml0KCl7dGhpcy5fZm9jdXNNb25pdG9yJiZ0aGlzLl9mb2N1c01vbml0b3IubW9uaXRvcih0aGlzLl9lbGVtZW50UmVmLCExKX1uZ09uRGVzdHJveSgpe3RoaXMuX2ZvY3VzTW9uaXRvciYmdGhpcy5fZm9jdXNNb25pdG9yLnN0b3BNb25pdG9yaW5nKHRoaXMuX2VsZW1lbnRSZWYpLHRoaXMuX3BhcmVudE1lbnUmJnRoaXMuX3BhcmVudE1lbnUucmVtb3ZlSXRlbSYmdGhpcy5fcGFyZW50TWVudS5yZW1vdmVJdGVtKHRoaXMpLHRoaXMuX2hvdmVyZWQuY29tcGxldGUoKSx0aGlzLl9mb2N1c2VkLmNvbXBsZXRlKCl9X2dldFRhYkluZGV4KCl7cmV0dXJuIHRoaXMuZGlzYWJsZWQ/Ii0xIjoiMCJ9X2dldEhvc3RFbGVtZW50KCl7cmV0dXJuIHRoaXMuX2VsZW1lbnRSZWYubmF0aXZlRWxlbWVudH1fY2hlY2tEaXNhYmxlZCh0KXt0aGlzLmRpc2FibGVkJiYodC5wcmV2ZW50RGVmYXVsdCgpLHQuc3RvcFByb3BhZ2F0aW9uKCkpfV9oYW5kbGVNb3VzZUVudGVyKCl7dGhpcy5faG92ZXJlZC5uZXh0KHRoaXMpfWdldExhYmVsKCl7dmFyIHQsbjtjb25zdCBlPXRoaXMuX2VsZW1lbnRSZWYubmF0aXZlRWxlbWVudC5jbG9uZU5vZGUoITApLGE9ZS5xdWVyeVNlbGVjdG9yQWxsKCJtYXQtaWNvbiwgLm1hdGVyaWFsLWljb25zIik7Zm9yKGxldCBuPTA7bjxhLmxlbmd0aDtuKyspe2NvbnN0IGU9YVtuXTtudWxsPT09KHQ9ZS5wYXJlbnROb2RlKXx8dm9pZCAwPT09dHx8dC5yZW1vdmVDaGlsZChlKX1yZXR1cm4obnVsbD09PShuPWUudGV4dENvbnRlbnQpfHx2b2lkIDA9PT1uP3ZvaWQgMDpuLnRyaW0oKSl8fCIifX14cS7JtWZhYz1mdW5jdGlvbiB0KG4pe3JldHVybiBuZXcobnx8eHEpKFpnKHh1KSxaZyh6QyksWmcoVFMpLFpnKE9xLDgpKX0seHEuybVjbXA9X28oe3R5cGU6eHEsc2VsZWN0b3JzOltbIiIsIm1hdC1tZW51LWl0ZW0iLCIiXV0saG9zdEF0dHJzOlsxLCJtYXQtZm9jdXMtaW5kaWNhdG9yIl0saG9zdFZhcnM6MTAsaG9zdEJpbmRpbmdzOmZ1bmN0aW9uIHQobixlKXsxJm4mJmNwKCJjbGljayIsKGZ1bmN0aW9uIHQobil7cmV0dXJuIGUuX2NoZWNrRGlzYWJsZWQobil9KSkoIm1vdXNlZW50ZXIiLChmdW5jdGlvbiB0KCl7cmV0dXJuIGUuX2hhbmRsZU1vdXNlRW50ZXIoKX0pKSwyJm4mJihOZygicm9sZSIsZS5yb2xlKSgidGFiaW5kZXgiLGUuX2dldFRhYkluZGV4KCkpKCJhcmlhLWRpc2FibGVkIixlLmRpc2FibGVkLnRvU3RyaW5nKCkpKCJkaXNhYmxlZCIsZS5kaXNhYmxlZHx8bnVsbCksRHAoIm1hdC1tZW51LWl0ZW0iLCEwKSgibWF0LW1lbnUtaXRlbS1oaWdobGlnaHRlZCIsZS5faGlnaGxpZ2h0ZWQpKCJtYXQtbWVudS1pdGVtLXN1Ym1lbnUtdHJpZ2dlciIsZS5fdHJpZ2dlcnNTdWJtZW51KSl9LGlucHV0czp7ZGlzYWJsZWQ6ImRpc2FibGVkIixkaXNhYmxlUmlwcGxlOiJkaXNhYmxlUmlwcGxlIixyb2xlOiJyb2xlIn0sZXhwb3J0QXM6WyJtYXRNZW51SXRlbSJdLGZlYXR1cmVzOltoZ10sYXR0cnM6WyJtYXQtbWVudS1pdGVtIiwiIl0sbmdDb250ZW50U2VsZWN0b3JzOnVxLGRlY2xzOjIsdmFyczoyLGNvbnN0czpbWyJtYXRSaXBwbGUiLCIiLDEsIm1hdC1tZW51LXJpcHBsZSIsMywibWF0UmlwcGxlRGlzYWJsZWQiLCJtYXRSaXBwbGVUcmlnZ2VyIl1dLHRlbXBsYXRlOmZ1bmN0aW9uIHQobixlKXsxJm4mJihicCgpLGhwKDApLHRwKDEsImRpdiIsMCkpLDImbiYmKHdzKDEpLEpnKCJtYXRSaXBwbGVEaXNhYmxlZCIsZS5kaXNhYmxlUmlwcGxlfHxlLmRpc2FibGVkKSgibWF0UmlwcGxlVHJpZ2dlciIsZS5fZ2V0SG9zdEVsZW1lbnQoKSkpfSxkaXJlY3RpdmVzOlt6RV0sZW5jYXBzdWxhdGlvbjoyLGNoYW5nZURldGVjdGlvbjowfSkseHEuY3RvclBhcmFtZXRlcnM9KCk9Plt7dHlwZTp4dX0se3R5cGU6dm9pZCAwLGRlY29yYXRvcnM6W3t0eXBlOkllLGFyZ3M6W3pDXX1dfSx7dHlwZTpUU30se3R5cGU6dm9pZCAwLGRlY29yYXRvcnM6W3t0eXBlOkllLGFyZ3M6W09xXX0se3R5cGU6TmV9XX1dLHhxLnByb3BEZWNvcmF0b3JzPXtyb2xlOlt7dHlwZTpmX31dLF9jaGVja0Rpc2FibGVkOlt7dHlwZTpfXyxhcmdzOlsiY2xpY2siLFsiJGV2ZW50Il1dfV0sX2hhbmRsZU1vdXNlRW50ZXI6W3t0eXBlOl9fLGFyZ3M6WyJtb3VzZWVudGVyIl19XX07Ci8qKgogICAgICogQGxpY2Vuc2UKICAgICAqIENvcHlyaWdodCBHb29nbGUgTExDIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCiAgICAgKgogICAgICogVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYW4gTUlULXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKICAgICAqIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUgYXQgaHR0cHM6Ly9hbmd1bGFyLmlvL2xpY2Vuc2UKICAgICAqLwpjb25zdCB5cT1uZXcgRmEoIm1hdC1tZW51LWRlZmF1bHQtb3B0aW9ucyIse3Byb3ZpZGVkSW46InJvb3QiLGZhY3Rvcnk6ZnVuY3Rpb24ga3EoKXtyZXR1cm57b3ZlcmxhcFRyaWdnZXI6ITEseFBvc2l0aW9uOiJhZnRlciIseVBvc2l0aW9uOiJiZWxvdyIsYmFja2Ryb3BDbGFzczoiY2RrLW92ZXJsYXktdHJhbnNwYXJlbnQtYmFja2Ryb3AifX19KTtsZXQgdnE9MDtjbGFzcyB3cXtjb25zdHJ1Y3Rvcih0LG4sZSl7dGhpcy5fZWxlbWVudFJlZj10LHRoaXMuX25nWm9uZT1uLHRoaXMuX2RlZmF1bHRPcHRpb25zPWUsdGhpcy5feFBvc2l0aW9uPXRoaXMuX2RlZmF1bHRPcHRpb25zLnhQb3NpdGlvbix0aGlzLl95UG9zaXRpb249dGhpcy5fZGVmYXVsdE9wdGlvbnMueVBvc2l0aW9uLHRoaXMuX2RpcmVjdERlc2NlbmRhbnRJdGVtcz1uZXcgemYsdGhpcy5fdGFiU3Vic2NyaXB0aW9uPXMuRU1QVFksdGhpcy5fY2xhc3NMaXN0PXt9LHRoaXMuX3BhbmVsQW5pbWF0aW9uU3RhdGU9InZvaWQiLHRoaXMuX2FuaW1hdGlvbkRvbmU9bmV3IHgsdGhpcy5vdmVybGF5UGFuZWxDbGFzcz10aGlzLl9kZWZhdWx0T3B0aW9ucy5vdmVybGF5UGFuZWxDbGFzc3x8IiIsdGhpcy5iYWNrZHJvcENsYXNzPXRoaXMuX2RlZmF1bHRPcHRpb25zLmJhY2tkcm9wQ2xhc3MsdGhpcy5fb3ZlcmxhcFRyaWdnZXI9dGhpcy5fZGVmYXVsdE9wdGlvbnMub3ZlcmxhcFRyaWdnZXIsdGhpcy5faGFzQmFja2Ryb3A9dGhpcy5fZGVmYXVsdE9wdGlvbnMuaGFzQmFja2Ryb3AsdGhpcy5jbG9zZWQ9bmV3IEVmLHRoaXMuY2xvc2U9dGhpcy5jbG9zZWQsdGhpcy5wYW5lbElkPSJtYXQtbWVudS1wYW5lbC0iK3ZxKyt9Z2V0IHhQb3NpdGlvbigpe3JldHVybiB0aGlzLl94UG9zaXRpb259c2V0IHhQb3NpdGlvbih0KXsiYmVmb3JlIj09PXR8fCJhZnRlciI9PT10fHwidW5kZWZpbmVkIiE9dHlwZW9mIG5nRGV2TW9kZSYmIW5nRGV2TW9kZXx8KGZ1bmN0aW9uIG4oKXt0aHJvdyBFcnJvcigneFBvc2l0aW9uIHZhbHVlIG11c3QgYmUgZWl0aGVyIFwnYmVmb3JlXCcgb3IgYWZ0ZXJcJy5cbiAgICAgIEV4YW1wbGU6IDxtYXQtbWVudSB4UG9zaXRpb249ImJlZm9yZSIgI21lbnU9Im1hdE1lbnUiPjwvbWF0LW1lbnU+Jyl9KSgpLHRoaXMuX3hQb3NpdGlvbj10LHRoaXMuc2V0UG9zaXRpb25DbGFzc2VzKCl9Z2V0IHlQb3NpdGlvbigpe3JldHVybiB0aGlzLl95UG9zaXRpb259c2V0IHlQb3NpdGlvbih0KXsiYWJvdmUiPT09dHx8ImJlbG93Ij09PXR8fCJ1bmRlZmluZWQiIT10eXBlb2YgbmdEZXZNb2RlJiYhbmdEZXZNb2RlfHwoZnVuY3Rpb24gbigpe3Rocm93IEVycm9yKCd5UG9zaXRpb24gdmFsdWUgbXVzdCBiZSBlaXRoZXIgXCdhYm92ZVwnIG9yIGJlbG93XCcuXG4gICAgICBFeGFtcGxlOiA8bWF0LW1lbnUgeVBvc2l0aW9uPSJhYm92ZSIgI21lbnU9Im1hdE1lbnUiPjwvbWF0LW1lbnU+Jyl9KSgpLHRoaXMuX3lQb3NpdGlvbj10LHRoaXMuc2V0UG9zaXRpb25DbGFzc2VzKCl9Z2V0IG92ZXJsYXBUcmlnZ2VyKCl7cmV0dXJuIHRoaXMuX292ZXJsYXBUcmlnZ2VyfXNldCBvdmVybGFwVHJpZ2dlcih0KXt0aGlzLl9vdmVybGFwVHJpZ2dlcj1Hdyh0KX1nZXQgaGFzQmFja2Ryb3AoKXtyZXR1cm4gdGhpcy5faGFzQmFja2Ryb3B9c2V0IGhhc0JhY2tkcm9wKHQpe3RoaXMuX2hhc0JhY2tkcm9wPUd3KHQpfXNldCBwYW5lbENsYXNzKHQpe2NvbnN0IG49dGhpcy5fcHJldmlvdXNQYW5lbENsYXNzO24mJm4ubGVuZ3RoJiZuLnNwbGl0KCIgIikuZm9yRWFjaCgodD0+e3RoaXMuX2NsYXNzTGlzdFt0XT0hMX0pKSx0aGlzLl9wcmV2aW91c1BhbmVsQ2xhc3M9dCx0JiZ0Lmxlbmd0aCYmKHQuc3BsaXQoIiAiKS5mb3JFYWNoKCh0PT57dGhpcy5fY2xhc3NMaXN0W3RdPSEwfSkpLHRoaXMuX2VsZW1lbnRSZWYubmF0aXZlRWxlbWVudC5jbGFzc05hbWU9IiIpfWdldCBjbGFzc0xpc3QoKXtyZXR1cm4gdGhpcy5wYW5lbENsYXNzfXNldCBjbGFzc0xpc3QodCl7dGhpcy5wYW5lbENsYXNzPXR9bmdPbkluaXQoKXt0aGlzLnNldFBvc2l0aW9uQ2xhc3NlcygpfW5nQWZ0ZXJDb250ZW50SW5pdCgpe3RoaXMuX3VwZGF0ZURpcmVjdERlc2NlbmRhbnRzKCksdGhpcy5fa2V5TWFuYWdlcj1uZXcgbVModGhpcy5fZGlyZWN0RGVzY2VuZGFudEl0ZW1zKS53aXRoV3JhcCgpLndpdGhUeXBlQWhlYWQoKS53aXRoSG9tZUFuZEVuZCgpLHRoaXMuX3RhYlN1YnNjcmlwdGlvbj10aGlzLl9rZXlNYW5hZ2VyLnRhYk91dC5zdWJzY3JpYmUoKCgpPT50aGlzLmNsb3NlZC5lbWl0KCJ0YWIiKSkpLHRoaXMuX2RpcmVjdERlc2NlbmRhbnRJdGVtcy5jaGFuZ2VzLnBpcGUoY2UodGhpcy5fZGlyZWN0RGVzY2VuZGFudEl0ZW1zKSxzZSgodD0+V3QoLi4udC5tYXAoKHQ9PnQuX2ZvY3VzZWQpKSkpKSkuc3Vic2NyaWJlKCh0PT50aGlzLl9rZXlNYW5hZ2VyLnVwZGF0ZUFjdGl2ZUl0ZW0odCkpKX1uZ09uRGVzdHJveSgpe3RoaXMuX2RpcmVjdERlc2NlbmRhbnRJdGVtcy5kZXN0cm95KCksdGhpcy5fdGFiU3Vic2NyaXB0aW9uLnVuc3Vic2NyaWJlKCksdGhpcy5jbG9zZWQuY29tcGxldGUoKX1faG92ZXJlZCgpe3JldHVybiB0aGlzLl9kaXJlY3REZXNjZW5kYW50SXRlbXMuY2hhbmdlcy5waXBlKGNlKHRoaXMuX2RpcmVjdERlc2NlbmRhbnRJdGVtcyksc2UoKHQ9Pld0KC4uLnQubWFwKCh0PT50Ll9ob3ZlcmVkKSkpKSkpfWFkZEl0ZW0odCl7fXJlbW92ZUl0ZW0odCl7fV9oYW5kbGVLZXlkb3duKHQpe2NvbnN0IG49dC5rZXlDb2RlLGU9dGhpcy5fa2V5TWFuYWdlcjtzd2l0Y2gobil7Y2FzZSBCdzpXdyh0KXx8KHQucHJldmVudERlZmF1bHQoKSx0aGlzLmNsb3NlZC5lbWl0KCJrZXlkb3duIikpO2JyZWFrO2Nhc2UgMzc6dGhpcy5wYXJlbnRNZW51JiYibHRyIj09PXRoaXMuZGlyZWN0aW9uJiZ0aGlzLmNsb3NlZC5lbWl0KCJrZXlkb3duIik7YnJlYWs7Y2FzZSAzOTp0aGlzLnBhcmVudE1lbnUmJiJydGwiPT09dGhpcy5kaXJlY3Rpb24mJnRoaXMuY2xvc2VkLmVtaXQoImtleWRvd24iKTticmVhaztkZWZhdWx0Om4hPT1qdyYmbiE9PVV3fHxlLnNldEZvY3VzT3JpZ2luKCJrZXlib2FyZCIpLGUub25LZXlkb3duKHQpfX1mb2N1c0ZpcnN0SXRlbSh0PSJwcm9ncmFtIil7dGhpcy5sYXp5Q29udGVudD90aGlzLl9uZ1pvbmUub25TdGFibGUucGlwZShUbigxKSkuc3Vic2NyaWJlKCgoKT0+dGhpcy5fZm9jdXNGaXJzdEl0ZW0odCkpKTp0aGlzLl9mb2N1c0ZpcnN0SXRlbSh0KX1fZm9jdXNGaXJzdEl0ZW0odCl7Y29uc3Qgbj10aGlzLl9rZXlNYW5hZ2VyO2lmKG4uc2V0Rm9jdXNPcmlnaW4odCkuc2V0Rmlyc3RJdGVtQWN0aXZlKCksIW4uYWN0aXZlSXRlbSYmdGhpcy5fZGlyZWN0RGVzY2VuZGFudEl0ZW1zLmxlbmd0aCl7bGV0IHQ9dGhpcy5fZGlyZWN0RGVzY2VuZGFudEl0ZW1zLmZpcnN0Ll9nZXRIb3N0RWxlbWVudCgpLnBhcmVudEVsZW1lbnQ7Zm9yKDt0Oyl7aWYoIm1lbnUiPT09dC5nZXRBdHRyaWJ1dGUoInJvbGUiKSl7dC5mb2N1cygpO2JyZWFrfXQ9dC5wYXJlbnRFbGVtZW50fX19cmVzZXRBY3RpdmVJdGVtKCl7dGhpcy5fa2V5TWFuYWdlci5zZXRBY3RpdmVJdGVtKC0xKX1zZXRFbGV2YXRpb24odCl7Y29uc3Qgbj1gbWF0LWVsZXZhdGlvbi16JHtNYXRoLm1pbig0K3QsMjQpfWAsZT1PYmplY3Qua2V5cyh0aGlzLl9jbGFzc0xpc3QpLmZpbmQoKHQ9PnQuc3RhcnRzV2l0aCgibWF0LWVsZXZhdGlvbi16IikpKTtlJiZlIT09dGhpcy5fcHJldmlvdXNFbGV2YXRpb258fCh0aGlzLl9wcmV2aW91c0VsZXZhdGlvbiYmKHRoaXMuX2NsYXNzTGlzdFt0aGlzLl9wcmV2aW91c0VsZXZhdGlvbl09ITEpLHRoaXMuX2NsYXNzTGlzdFtuXT0hMCx0aGlzLl9wcmV2aW91c0VsZXZhdGlvbj1uKX1zZXRQb3NpdGlvbkNsYXNzZXModD10aGlzLnhQb3NpdGlvbixuPXRoaXMueVBvc2l0aW9uKXtjb25zdCBlPXRoaXMuX2NsYXNzTGlzdDtlWyJtYXQtbWVudS1iZWZvcmUiXT0iYmVmb3JlIj09PXQsZVsibWF0LW1lbnUtYWZ0ZXIiXT0iYWZ0ZXIiPT09dCxlWyJtYXQtbWVudS1hYm92ZSJdPSJhYm92ZSI9PT1uLGVbIm1hdC1tZW51LWJlbG93Il09ImJlbG93Ij09PW59X3N0YXJ0QW5pbWF0aW9uKCl7dGhpcy5fcGFuZWxBbmltYXRpb25TdGF0ZT0iZW50ZXIifV9yZXNldEFuaW1hdGlvbigpe3RoaXMuX3BhbmVsQW5pbWF0aW9uU3RhdGU9InZvaWQifV9vbkFuaW1hdGlvbkRvbmUodCl7dGhpcy5fYW5pbWF0aW9uRG9uZS5uZXh0KHQpLHRoaXMuX2lzQW5pbWF0aW5nPSExfV9vbkFuaW1hdGlvblN0YXJ0KHQpe3RoaXMuX2lzQW5pbWF0aW5nPSEwLCJlbnRlciI9PT10LnRvU3RhdGUmJjA9PT10aGlzLl9rZXlNYW5hZ2VyLmFjdGl2ZUl0ZW1JbmRleCYmKHQuZWxlbWVudC5zY3JvbGxUb3A9MCl9X3VwZGF0ZURpcmVjdERlc2NlbmRhbnRzKCl7dGhpcy5fYWxsSXRlbXMuY2hhbmdlcy5waXBlKGNlKHRoaXMuX2FsbEl0ZW1zKSkuc3Vic2NyaWJlKCh0PT57dGhpcy5fZGlyZWN0RGVzY2VuZGFudEl0ZW1zLnJlc2V0KHQuZmlsdGVyKCh0PT50Ll9wYXJlbnRNZW51PT09dGhpcykpKSx0aGlzLl9kaXJlY3REZXNjZW5kYW50SXRlbXMubm90aWZ5T25DaGFuZ2VzKCl9KSl9fXdxLsm1ZmFjPWZ1bmN0aW9uIHQobil7cmV0dXJuIG5ldyhufHx3cSkoWmcoeHUpLFpnKEpfKSxaZyh5cSkpfSx3cS7JtWRpcj12byh7dHlwZTp3cSxjb250ZW50UXVlcmllczpmdW5jdGlvbiB0KG4sZSxhKXt2YXIgbzsxJm4mJihHZihhLENxLCEwKSxHZihhLHhxLCEwKSxHZihhLHhxLCExKSksMiZuJiYoVmYobz1aZigpKSYmKGUubGF6eUNvbnRlbnQ9by5maXJzdCksVmYobz1aZigpKSYmKGUuX2FsbEl0ZW1zPW8pLFZmKG89WmYoKSkmJihlLml0ZW1zPW8pKX0sdmlld1F1ZXJ5OmZ1bmN0aW9uIHQobixlKXt2YXIgYTsxJm4mJlVmKEp1LCEwKSwyJm4mJlZmKGE9WmYoKSkmJihlLnRlbXBsYXRlUmVmPWEuZmlyc3QpfSxpbnB1dHM6e2JhY2tkcm9wQ2xhc3M6ImJhY2tkcm9wQ2xhc3MiLHhQb3NpdGlvbjoieFBvc2l0aW9uIix5UG9zaXRpb246InlQb3NpdGlvbiIsb3ZlcmxhcFRyaWdnZXI6Im92ZXJsYXBUcmlnZ2VyIixoYXNCYWNrZHJvcDoiaGFzQmFja2Ryb3AiLHBhbmVsQ2xhc3M6WyJjbGFzcyIsInBhbmVsQ2xhc3MiXSxjbGFzc0xpc3Q6ImNsYXNzTGlzdCIsYXJpYUxhYmVsOlsiYXJpYS1sYWJlbCIsImFyaWFMYWJlbCJdLGFyaWFMYWJlbGxlZGJ5OlsiYXJpYS1sYWJlbGxlZGJ5IiwiYXJpYUxhYmVsbGVkYnkiXSxhcmlhRGVzY3JpYmVkYnk6WyJhcmlhLWRlc2NyaWJlZGJ5IiwiYXJpYURlc2NyaWJlZGJ5Il19LG91dHB1dHM6e2Nsb3NlZDoiY2xvc2VkIixjbG9zZToiY2xvc2UifX0pLHdxLmN0b3JQYXJhbWV0ZXJzPSgpPT5be3R5cGU6eHV9LHt0eXBlOkpffSx7dHlwZTp2b2lkIDAsZGVjb3JhdG9yczpbe3R5cGU6SWUsYXJnczpbeXFdfV19XSx3cS5wcm9wRGVjb3JhdG9ycz17X2FsbEl0ZW1zOlt7dHlwZTpxZCxhcmdzOlt4cSx7ZGVzY2VuZGFudHM6ITB9XX1dLGJhY2tkcm9wQ2xhc3M6W3t0eXBlOmZffV0sYXJpYUxhYmVsOlt7dHlwZTpmXyxhcmdzOlsiYXJpYS1sYWJlbCJdfV0sYXJpYUxhYmVsbGVkYnk6W3t0eXBlOmZfLGFyZ3M6WyJhcmlhLWxhYmVsbGVkYnkiXX1dLGFyaWFEZXNjcmliZWRieTpbe3R5cGU6Zl8sYXJnczpbImFyaWEtZGVzY3JpYmVkYnkiXX1dLHhQb3NpdGlvbjpbe3R5cGU6Zl99XSx5UG9zaXRpb246W3t0eXBlOmZffV0sdGVtcGxhdGVSZWY6W3t0eXBlOlhkLGFyZ3M6W0p1XX1dLGl0ZW1zOlt7dHlwZTpxZCxhcmdzOlt4cSx7ZGVzY2VuZGFudHM6ITF9XX1dLGxhenlDb250ZW50Olt7dHlwZTpaZCxhcmdzOltDcV19XSxvdmVybGFwVHJpZ2dlcjpbe3R5cGU6Zl99XSxoYXNCYWNrZHJvcDpbe3R5cGU6Zl99XSxwYW5lbENsYXNzOlt7dHlwZTpmXyxhcmdzOlsiY2xhc3MiXX1dLGNsYXNzTGlzdDpbe3R5cGU6Zl99XSxjbG9zZWQ6W3t0eXBlOmhffV0sY2xvc2U6W3t0eXBlOmhffV19O2NsYXNzIFNxIGV4dGVuZHMgd3F7fVNxLsm1ZmFjPWZ1bmN0aW9uIHQobil7cmV0dXJuIEVxKG58fFNxKX0sU3EuybVkaXI9dm8oe3R5cGU6U3EsZmVhdHVyZXM6W2hnXX0pO2NvbnN0IEVxPXRjKFNxKTtjbGFzcyBBcSBleHRlbmRzIFNxe2NvbnN0cnVjdG9yKHQsbixlKXtzdXBlcih0LG4sZSl9fUFxLsm1ZmFjPWZ1bmN0aW9uIHQobil7cmV0dXJuIG5ldyhufHxBcSkoWmcoeHUpLFpnKEpfKSxaZyh5cSkpfSxBcS7JtWNtcD1fbyh7dHlwZTpBcSxzZWxlY3RvcnM6W1sibWF0LW1lbnUiXV0sZXhwb3J0QXM6WyJtYXRNZW51Il0sZmVhdHVyZXM6W011KFt7cHJvdmlkZTpPcSx1c2VFeGlzdGluZzpTcX0se3Byb3ZpZGU6U3EsdXNlRXhpc3Rpbmc6QXF9XSksaGddLG5nQ29udGVudFNlbGVjdG9yczp1cSxkZWNsczoxLHZhcnM6MCxjb25zdHM6W1sidGFiaW5kZXgiLCItMSIsInJvbGUiLCJtZW51IiwxLCJtYXQtbWVudS1wYW5lbCIsMywiaWQiLCJuZ0NsYXNzIiwia2V5ZG93biIsImNsaWNrIl0sWzEsIm1hdC1tZW51LWNvbnRlbnQiXV0sdGVtcGxhdGU6ZnVuY3Rpb24gdChuLGUpezEmbiYmKGJwKCksWWcoMCxmcSwzLDYsIm5nLXRlbXBsYXRlIikpfSxkaXJlY3RpdmVzOltITV0sc3R5bGVzOlsnLm1hdC1tZW51LXBhbmVse21pbi13aWR0aDoxMTJweDttYXgtd2lkdGg6MjgwcHg7b3ZlcmZsb3c6YXV0bzstd2Via2l0LW92ZXJmbG93LXNjcm9sbGluZzp0b3VjaDttYXgtaGVpZ2h0OmNhbGMoMTAwdmggLSA0OHB4KTtib3JkZXItcmFkaXVzOjRweDtvdXRsaW5lOjA7bWluLWhlaWdodDo2NHB4fS5tYXQtbWVudS1wYW5lbC5uZy1hbmltYXRpbmd7cG9pbnRlci1ldmVudHM6bm9uZX0uY2RrLWhpZ2gtY29udHJhc3QtYWN0aXZlIC5tYXQtbWVudS1wYW5lbHtvdXRsaW5lOnNvbGlkIDFweH0ubWF0LW1lbnUtY29udGVudDpub3QoOmVtcHR5KXtwYWRkaW5nLXRvcDo4cHg7cGFkZGluZy1ib3R0b206OHB4fS5tYXQtbWVudS1pdGVtey13ZWJraXQtdXNlci1zZWxlY3Q6bm9uZTstbW96LXVzZXItc2VsZWN0Om5vbmU7LW1zLXVzZXItc2VsZWN0Om5vbmU7dXNlci1zZWxlY3Q6bm9uZTtjdXJzb3I6cG9pbnRlcjtvdXRsaW5lOm5vbmU7Ym9yZGVyOm5vbmU7LXdlYmtpdC10YXAtaGlnaGxpZ2h0LWNvbG9yOnRyYW5zcGFyZW50O3doaXRlLXNwYWNlOm5vd3JhcDtvdmVyZmxvdzpoaWRkZW47dGV4dC1vdmVyZmxvdzplbGxpcHNpcztkaXNwbGF5OmJsb2NrO2xpbmUtaGVpZ2h0OjQ4cHg7aGVpZ2h0OjQ4cHg7cGFkZGluZzowIDE2cHg7dGV4dC1hbGlnbjpsZWZ0O3RleHQtZGVjb3JhdGlvbjpub25lO21heC13aWR0aDoxMDAlO3Bvc2l0aW9uOnJlbGF0aXZlfS5tYXQtbWVudS1pdGVtOjotbW96LWZvY3VzLWlubmVye2JvcmRlcjowfS5tYXQtbWVudS1pdGVtW2Rpc2FibGVkXXtjdXJzb3I6ZGVmYXVsdH1bZGlyPXJ0bF0gLm1hdC1tZW51LWl0ZW17dGV4dC1hbGlnbjpyaWdodH0ubWF0LW1lbnUtaXRlbSAubWF0LWljb257bWFyZ2luLXJpZ2h0OjE2cHg7dmVydGljYWwtYWxpZ246bWlkZGxlfS5tYXQtbWVudS1pdGVtIC5tYXQtaWNvbiBzdmd7dmVydGljYWwtYWxpZ246dG9wfVtkaXI9cnRsXSAubWF0LW1lbnUtaXRlbSAubWF0LWljb257bWFyZ2luLWxlZnQ6MTZweDttYXJnaW4tcmlnaHQ6MH0ubWF0LW1lbnUtaXRlbVtkaXNhYmxlZF17cG9pbnRlci1ldmVudHM6bm9uZX0uY2RrLWhpZ2gtY29udHJhc3QtYWN0aXZlIC5tYXQtbWVudS1pdGVtLmNkay1wcm9ncmFtLWZvY3VzZWQsLmNkay1oaWdoLWNvbnRyYXN0LWFjdGl2ZSAubWF0LW1lbnUtaXRlbS5jZGsta2V5Ym9hcmQtZm9jdXNlZCwuY2RrLWhpZ2gtY29udHJhc3QtYWN0aXZlIC5tYXQtbWVudS1pdGVtLWhpZ2hsaWdodGVke291dGxpbmU6ZG90dGVkIDFweH0ubWF0LW1lbnUtaXRlbS1zdWJtZW51LXRyaWdnZXJ7cGFkZGluZy1yaWdodDozMnB4fS5tYXQtbWVudS1pdGVtLXN1Ym1lbnUtdHJpZ2dlcjo6YWZ0ZXJ7d2lkdGg6MDtoZWlnaHQ6MDtib3JkZXItc3R5bGU6c29saWQ7Ym9yZGVyLXdpZHRoOjVweCAwIDVweCA1cHg7Ym9yZGVyLWNvbG9yOnRyYW5zcGFyZW50IHRyYW5zcGFyZW50IHRyYW5zcGFyZW50IGN1cnJlbnRDb2xvcjtjb250ZW50OiIiO2Rpc3BsYXk6aW5saW5lLWJsb2NrO3Bvc2l0aW9uOmFic29sdXRlO3RvcDo1MCU7cmlnaHQ6MTZweDt0cmFuc2Zvcm06dHJhbnNsYXRlWSgtNTAlKX1bZGlyPXJ0bF0gLm1hdC1tZW51LWl0ZW0tc3VibWVudS10cmlnZ2Vye3BhZGRpbmctcmlnaHQ6MTZweDtwYWRkaW5nLWxlZnQ6MzJweH1bZGlyPXJ0bF0gLm1hdC1tZW51LWl0ZW0tc3VibWVudS10cmlnZ2VyOjphZnRlcntyaWdodDphdXRvO2xlZnQ6MTZweDt0cmFuc2Zvcm06cm90YXRlWSgxODBkZWcpIHRyYW5zbGF0ZVkoLTUwJSl9YnV0dG9uLm1hdC1tZW51LWl0ZW17d2lkdGg6MTAwJX0ubWF0LW1lbnUtaXRlbSAubWF0LW1lbnUtcmlwcGxle3RvcDowO2xlZnQ6MDtyaWdodDowO2JvdHRvbTowO3Bvc2l0aW9uOmFic29sdXRlO3BvaW50ZXItZXZlbnRzOm5vbmV9XG4nXSxlbmNhcHN1bGF0aW9uOjIsZGF0YTp7YW5pbWF0aW9uOltocS50cmFuc2Zvcm1NZW51LGhxLmZhZGVJbkl0ZW1zXX0sY2hhbmdlRGV0ZWN0aW9uOjB9KSxBcS5jdG9yUGFyYW1ldGVycz0oKT0+W3t0eXBlOnh1fSx7dHlwZTpKX30se3R5cGU6dm9pZCAwLGRlY29yYXRvcnM6W3t0eXBlOkllLGFyZ3M6W3lxXX1dfV0KLyoqCiAgICAgKiBAbGljZW5zZQogICAgICogQ29weXJpZ2h0IEdvb2dsZSBMTEMgQWxsIFJpZ2h0cyBSZXNlcnZlZC4KICAgICAqCiAgICAgKiBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhbiBNSVQtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQogICAgICogZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZSBhdCBodHRwczovL2FuZ3VsYXIuaW8vbGljZW5zZQogICAgICovO2NvbnN0IHpxPW5ldyBGYSgibWF0LW1lbnUtc2Nyb2xsLXN0cmF0ZWd5IiksUnE9e3Byb3ZpZGU6enEsZGVwczpbaHpdLHVzZUZhY3Rvcnk6ZnVuY3Rpb24gVHEodCl7cmV0dXJuKCk9PnQuc2Nyb2xsU3RyYXRlZ2llcy5yZXBvc2l0aW9uKCl9fSxEcT1Odyh7cGFzc2l2ZTohMH0pO2NsYXNzIElxe2NvbnN0cnVjdG9yKHQsbixlLGEsbyxyLGksYyl7dGhpcy5fb3ZlcmxheT10LHRoaXMuX2VsZW1lbnQ9bix0aGlzLl92aWV3Q29udGFpbmVyUmVmPWUsdGhpcy5fcGFyZW50TWVudT1vLHRoaXMuX21lbnVJdGVtSW5zdGFuY2U9cix0aGlzLl9kaXI9aSx0aGlzLl9mb2N1c01vbml0b3I9Yyx0aGlzLl9vdmVybGF5UmVmPW51bGwsdGhpcy5fbWVudU9wZW49ITEsdGhpcy5fY2xvc2luZ0FjdGlvbnNTdWJzY3JpcHRpb249cy5FTVBUWSx0aGlzLl9ob3ZlclN1YnNjcmlwdGlvbj1zLkVNUFRZLHRoaXMuX21lbnVDbG9zZVN1YnNjcmlwdGlvbj1zLkVNUFRZLHRoaXMuX2hhbmRsZVRvdWNoU3RhcnQ9KCk9PnRoaXMuX29wZW5lZEJ5PSJ0b3VjaCIsdGhpcy5fb3BlbmVkQnk9bnVsbCx0aGlzLnJlc3RvcmVGb2N1cz0hMCx0aGlzLm1lbnVPcGVuZWQ9bmV3IEVmLHRoaXMub25NZW51T3Blbj10aGlzLm1lbnVPcGVuZWQsdGhpcy5tZW51Q2xvc2VkPW5ldyBFZix0aGlzLm9uTWVudUNsb3NlPXRoaXMubWVudUNsb3NlZCxuLm5hdGl2ZUVsZW1lbnQuYWRkRXZlbnRMaXN0ZW5lcigidG91Y2hzdGFydCIsdGhpcy5faGFuZGxlVG91Y2hTdGFydCxEcSksciYmKHIuX3RyaWdnZXJzU3VibWVudT10aGlzLnRyaWdnZXJzU3VibWVudSgpKSx0aGlzLl9zY3JvbGxTdHJhdGVneT1hfWdldCBfZGVwcmVjYXRlZE1hdE1lbnVUcmlnZ2VyRm9yKCl7cmV0dXJuIHRoaXMubWVudX1zZXQgX2RlcHJlY2F0ZWRNYXRNZW51VHJpZ2dlckZvcih0KXt0aGlzLm1lbnU9dH1nZXQgbWVudSgpe3JldHVybiB0aGlzLl9tZW51fXNldCBtZW51KHQpe3QhPT10aGlzLl9tZW51JiYodGhpcy5fbWVudT10LHRoaXMuX21lbnVDbG9zZVN1YnNjcmlwdGlvbi51bnN1YnNjcmliZSgpLHQmJih0IT09dGhpcy5fcGFyZW50TWVudXx8InVuZGVmaW5lZCIhPXR5cGVvZiBuZ0Rldk1vZGUmJiFuZ0Rldk1vZGV8fChmdW5jdGlvbiBuKCl7dGhyb3cgRXJyb3IoIm1hdE1lbnVUcmlnZ2VyRm9yOiBtZW51IGNhbm5vdCBjb250YWluIGl0cyBvd24gdHJpZ2dlci4gQXNzaWduIGEgbWVudSB0aGF0IGlzIG5vdCBhIHBhcmVudCBvZiB0aGUgdHJpZ2dlciBvciBtb3ZlIHRoZSB0cmlnZ2VyIG91dHNpZGUgb2YgdGhlIG1lbnUuIil9KSgpLHRoaXMuX21lbnVDbG9zZVN1YnNjcmlwdGlvbj10LmNsb3NlLnN1YnNjcmliZSgodD0+e3RoaXMuX2Rlc3Ryb3lNZW51KCksImNsaWNrIiE9PXQmJiJ0YWIiIT09dHx8IXRoaXMuX3BhcmVudE1lbnV8fHRoaXMuX3BhcmVudE1lbnUuY2xvc2VkLmVtaXQodCl9KSkpKX1uZ0FmdGVyQ29udGVudEluaXQoKXt0aGlzLl9jaGVja01lbnUoKSx0aGlzLl9oYW5kbGVIb3ZlcigpfW5nT25EZXN0cm95KCl7dGhpcy5fb3ZlcmxheVJlZiYmKHRoaXMuX292ZXJsYXlSZWYuZGlzcG9zZSgpLHRoaXMuX292ZXJsYXlSZWY9bnVsbCksdGhpcy5fZWxlbWVudC5uYXRpdmVFbGVtZW50LnJlbW92ZUV2ZW50TGlzdGVuZXIoInRvdWNoc3RhcnQiLHRoaXMuX2hhbmRsZVRvdWNoU3RhcnQsRHEpLHRoaXMuX21lbnVDbG9zZVN1YnNjcmlwdGlvbi51bnN1YnNjcmliZSgpLHRoaXMuX2Nsb3NpbmdBY3Rpb25zU3Vic2NyaXB0aW9uLnVuc3Vic2NyaWJlKCksdGhpcy5faG92ZXJTdWJzY3JpcHRpb24udW5zdWJzY3JpYmUoKX1nZXQgbWVudU9wZW4oKXtyZXR1cm4gdGhpcy5fbWVudU9wZW59Z2V0IGRpcigpe3JldHVybiB0aGlzLl9kaXImJiJydGwiPT09dGhpcy5fZGlyLnZhbHVlPyJydGwiOiJsdHIifXRyaWdnZXJzU3VibWVudSgpe3JldHVybiEoIXRoaXMuX21lbnVJdGVtSW5zdGFuY2V8fCF0aGlzLl9wYXJlbnRNZW51KX10b2dnbGVNZW51KCl7cmV0dXJuIHRoaXMuX21lbnVPcGVuP3RoaXMuY2xvc2VNZW51KCk6dGhpcy5vcGVuTWVudSgpfW9wZW5NZW51KCl7aWYodGhpcy5fbWVudU9wZW4pcmV0dXJuO3RoaXMuX2NoZWNrTWVudSgpO2NvbnN0IHQ9dGhpcy5fY3JlYXRlT3ZlcmxheSgpLG49dC5nZXRDb25maWcoKTt0aGlzLl9zZXRQb3NpdGlvbihuLnBvc2l0aW9uU3RyYXRlZ3kpLG4uaGFzQmFja2Ryb3A9bnVsbD09dGhpcy5tZW51Lmhhc0JhY2tkcm9wPyF0aGlzLnRyaWdnZXJzU3VibWVudSgpOnRoaXMubWVudS5oYXNCYWNrZHJvcCx0LmF0dGFjaCh0aGlzLl9nZXRQb3J0YWwoKSksdGhpcy5tZW51LmxhenlDb250ZW50JiZ0aGlzLm1lbnUubGF6eUNvbnRlbnQuYXR0YWNoKHRoaXMubWVudURhdGEpLHRoaXMuX2Nsb3NpbmdBY3Rpb25zU3Vic2NyaXB0aW9uPXRoaXMuX21lbnVDbG9zaW5nQWN0aW9ucygpLnN1YnNjcmliZSgoKCk9PnRoaXMuY2xvc2VNZW51KCkpKSx0aGlzLl9pbml0TWVudSgpLHRoaXMubWVudSBpbnN0YW5jZW9mIFNxJiZ0aGlzLm1lbnUuX3N0YXJ0QW5pbWF0aW9uKCl9Y2xvc2VNZW51KCl7dGhpcy5tZW51LmNsb3NlLmVtaXQoKX1mb2N1cyh0PSJwcm9ncmFtIixuKXt0aGlzLl9mb2N1c01vbml0b3I/dGhpcy5fZm9jdXNNb25pdG9yLmZvY3VzVmlhKHRoaXMuX2VsZW1lbnQsdCxuKTp0aGlzLl9lbGVtZW50Lm5hdGl2ZUVsZW1lbnQuZm9jdXMobil9X2Rlc3Ryb3lNZW51KCl7aWYoIXRoaXMuX292ZXJsYXlSZWZ8fCF0aGlzLm1lbnVPcGVuKXJldHVybjtjb25zdCB0PXRoaXMubWVudTt0aGlzLl9jbG9zaW5nQWN0aW9uc1N1YnNjcmlwdGlvbi51bnN1YnNjcmliZSgpLHRoaXMuX292ZXJsYXlSZWYuZGV0YWNoKCksdGhpcy5fcmVzdG9yZUZvY3VzKCksdCBpbnN0YW5jZW9mIFNxPyh0Ll9yZXNldEFuaW1hdGlvbigpLHQubGF6eUNvbnRlbnQ/dC5fYW5pbWF0aW9uRG9uZS5waXBlKEd0KCh0PT4idm9pZCI9PT10LnRvU3RhdGUpKSxUbigxKSxkZSh0LmxhenlDb250ZW50Ll9hdHRhY2hlZCkpLnN1YnNjcmliZSh7bmV4dDooKT0+dC5sYXp5Q29udGVudC5kZXRhY2goKSxjb21wbGV0ZTooKT0+dGhpcy5fc2V0SXNNZW51T3BlbighMSl9KTp0aGlzLl9zZXRJc01lbnVPcGVuKCExKSk6KHRoaXMuX3NldElzTWVudU9wZW4oITEpLHQubGF6eUNvbnRlbnQmJnQubGF6eUNvbnRlbnQuZGV0YWNoKCkpfV9pbml0TWVudSgpe3RoaXMubWVudS5wYXJlbnRNZW51PXRoaXMudHJpZ2dlcnNTdWJtZW51KCk/dGhpcy5fcGFyZW50TWVudTp2b2lkIDAsdGhpcy5tZW51LmRpcmVjdGlvbj10aGlzLmRpcix0aGlzLl9zZXRNZW51RWxldmF0aW9uKCksdGhpcy5fc2V0SXNNZW51T3BlbighMCksdGhpcy5tZW51LmZvY3VzRmlyc3RJdGVtKHRoaXMuX29wZW5lZEJ5fHwicHJvZ3JhbSIpfV9zZXRNZW51RWxldmF0aW9uKCl7aWYodGhpcy5tZW51LnNldEVsZXZhdGlvbil7bGV0IHQ9MCxuPXRoaXMubWVudS5wYXJlbnRNZW51O2Zvcig7bjspdCsrLG49bi5wYXJlbnRNZW51O3RoaXMubWVudS5zZXRFbGV2YXRpb24odCl9fV9yZXN0b3JlRm9jdXMoKXt0aGlzLnJlc3RvcmVGb2N1cyYmKHRoaXMuX29wZW5lZEJ5P3RoaXMudHJpZ2dlcnNTdWJtZW51KCl8fHRoaXMuZm9jdXModGhpcy5fb3BlbmVkQnkpOnRoaXMuZm9jdXMoKSksdGhpcy5fb3BlbmVkQnk9bnVsbH1fc2V0SXNNZW51T3Blbih0KXt0aGlzLl9tZW51T3Blbj10LHRoaXMuX21lbnVPcGVuP3RoaXMubWVudU9wZW5lZC5lbWl0KCk6dGhpcy5tZW51Q2xvc2VkLmVtaXQoKSx0aGlzLnRyaWdnZXJzU3VibWVudSgpJiYodGhpcy5fbWVudUl0ZW1JbnN0YW5jZS5faGlnaGxpZ2h0ZWQ9dCl9X2NoZWNrTWVudSgpe3RoaXMubWVudXx8InVuZGVmaW5lZCIhPXR5cGVvZiBuZ0Rldk1vZGUmJiFuZ0Rldk1vZGV8fChmdW5jdGlvbiB0KCl7dGhyb3cgRXJyb3IoJ21hdE1lbnVUcmlnZ2VyRm9yOiBtdXN0IHBhc3MgaW4gYW4gbWF0LW1lbnUgaW5zdGFuY2UuXG5cbiAgICBFeGFtcGxlOlxuICAgICAgPG1hdC1tZW51ICNtZW51PSJtYXRNZW51Ij48L21hdC1tZW51PlxuICAgICAgPGJ1dHRvbiBbbWF0TWVudVRyaWdnZXJGb3JdPSJtZW51Ij48L2J1dHRvbj4nKX0pKCl9X2NyZWF0ZU92ZXJsYXkoKXtpZighdGhpcy5fb3ZlcmxheVJlZil7Y29uc3QgdD10aGlzLl9nZXRPdmVybGF5Q29uZmlnKCk7dGhpcy5fc3Vic2NyaWJlVG9Qb3NpdGlvbnModC5wb3NpdGlvblN0cmF0ZWd5KSx0aGlzLl9vdmVybGF5UmVmPXRoaXMuX292ZXJsYXkuY3JlYXRlKHQpLHRoaXMuX292ZXJsYXlSZWYua2V5ZG93bkV2ZW50cygpLnN1YnNjcmliZSgpfXJldHVybiB0aGlzLl9vdmVybGF5UmVmfV9nZXRPdmVybGF5Q29uZmlnKCl7cmV0dXJuIG5ldyBYQSh7cG9zaXRpb25TdHJhdGVneTp0aGlzLl9vdmVybGF5LnBvc2l0aW9uKCkuZmxleGlibGVDb25uZWN0ZWRUbyh0aGlzLl9lbGVtZW50KS53aXRoTG9ja2VkUG9zaXRpb24oKS53aXRoVHJhbnNmb3JtT3JpZ2luT24oIi5tYXQtbWVudS1wYW5lbCwgLm1hdC1tZGMtbWVudS1wYW5lbCIpLGJhY2tkcm9wQ2xhc3M6dGhpcy5tZW51LmJhY2tkcm9wQ2xhc3N8fCJjZGstb3ZlcmxheS10cmFuc3BhcmVudC1iYWNrZHJvcCIscGFuZWxDbGFzczp0aGlzLm1lbnUub3ZlcmxheVBhbmVsQ2xhc3Msc2Nyb2xsU3RyYXRlZ3k6dGhpcy5fc2Nyb2xsU3RyYXRlZ3koKSxkaXJlY3Rpb246dGhpcy5fZGlyfSl9X3N1YnNjcmliZVRvUG9zaXRpb25zKHQpe3RoaXMubWVudS5zZXRQb3NpdGlvbkNsYXNzZXMmJnQucG9zaXRpb25DaGFuZ2VzLnN1YnNjcmliZSgodD0+e3RoaXMubWVudS5zZXRQb3NpdGlvbkNsYXNzZXMoInN0YXJ0Ij09PXQuY29ubmVjdGlvblBhaXIub3ZlcmxheVg/ImFmdGVyIjoiYmVmb3JlIiwidG9wIj09PXQuY29ubmVjdGlvblBhaXIub3ZlcmxheVk/ImJlbG93IjoiYWJvdmUiKX0pKX1fc2V0UG9zaXRpb24odCl7bGV0W24sZV09ImJlZm9yZSI9PT10aGlzLm1lbnUueFBvc2l0aW9uP1siZW5kIiwic3RhcnQiXTpbInN0YXJ0IiwiZW5kIl0sW2Esb109ImFib3ZlIj09PXRoaXMubWVudS55UG9zaXRpb24/WyJib3R0b20iLCJ0b3AiXTpbInRvcCIsImJvdHRvbSJdLFtyLGldPVthLG9dLFtjLHNdPVtuLGVdLGw9MDt0aGlzLnRyaWdnZXJzU3VibWVudSgpPyhzPW49ImJlZm9yZSI9PT10aGlzLm1lbnUueFBvc2l0aW9uPyJzdGFydCI6ImVuZCIsZT1jPSJlbmQiPT09bj8ic3RhcnQiOiJlbmQiLGw9ImJvdHRvbSI9PT1hPzg6LTgpOnRoaXMubWVudS5vdmVybGFwVHJpZ2dlcnx8KHI9InRvcCI9PT1hPyJib3R0b20iOiJ0b3AiLGk9InRvcCI9PT1vPyJib3R0b20iOiJ0b3AiKSx0LndpdGhQb3NpdGlvbnMoW3tvcmlnaW5YOm4sb3JpZ2luWTpyLG92ZXJsYXlYOmMsb3ZlcmxheVk6YSxvZmZzZXRZOmx9LHtvcmlnaW5YOmUsb3JpZ2luWTpyLG92ZXJsYXlYOnMsb3ZlcmxheVk6YSxvZmZzZXRZOmx9LHtvcmlnaW5YOm4sb3JpZ2luWTppLG92ZXJsYXlYOmMsb3ZlcmxheVk6byxvZmZzZXRZOi1sfSx7b3JpZ2luWDplLG9yaWdpblk6aSxvdmVybGF5WDpzLG92ZXJsYXlZOm8sb2Zmc2V0WTotbH1dKX1fbWVudUNsb3NpbmdBY3Rpb25zKCl7Y29uc3QgdD10aGlzLl9vdmVybGF5UmVmLmJhY2tkcm9wQ2xpY2soKSxuPXRoaXMuX292ZXJsYXlSZWYuZGV0YWNobWVudHMoKTtyZXR1cm4gV3QodCx0aGlzLl9wYXJlbnRNZW51P3RoaXMuX3BhcmVudE1lbnUuY2xvc2VkOlooKSx0aGlzLl9wYXJlbnRNZW51P3RoaXMuX3BhcmVudE1lbnUuX2hvdmVyZWQoKS5waXBlKEd0KCh0PT50IT09dGhpcy5fbWVudUl0ZW1JbnN0YW5jZSkpLEd0KCgoKT0+dGhpcy5fbWVudU9wZW4pKSk6WigpLG4pfV9oYW5kbGVNb3VzZWRvd24odCl7QVModCl8fCh0aGlzLl9vcGVuZWRCeT0wPT09dC5idXR0b24/Im1vdXNlIjpudWxsLHRoaXMudHJpZ2dlcnNTdWJtZW51KCkmJnQucHJldmVudERlZmF1bHQoKSl9X2hhbmRsZUtleWRvd24odCl7Y29uc3Qgbj10LmtleUNvZGU7dGhpcy50cmlnZ2Vyc1N1Ym1lbnUoKSYmKDM5PT09biYmImx0ciI9PT10aGlzLmRpcnx8Mzc9PT1uJiYicnRsIj09PXRoaXMuZGlyKSYmdGhpcy5vcGVuTWVudSgpfV9oYW5kbGVDbGljayh0KXt0aGlzLnRyaWdnZXJzU3VibWVudSgpPyh0LnN0b3BQcm9wYWdhdGlvbigpLHRoaXMub3Blbk1lbnUoKSk6dGhpcy50b2dnbGVNZW51KCl9X2hhbmRsZUhvdmVyKCl7dGhpcy50cmlnZ2Vyc1N1Ym1lbnUoKSYmKHRoaXMuX2hvdmVyU3Vic2NyaXB0aW9uPXRoaXMuX3BhcmVudE1lbnUuX2hvdmVyZWQoKS5waXBlKEd0KCh0PT50PT09dGhpcy5fbWVudUl0ZW1JbnN0YW5jZSYmIXQuZGlzYWJsZWQpKSxmbigwLGx0KSkuc3Vic2NyaWJlKCgoKT0+e3RoaXMuX29wZW5lZEJ5PSJtb3VzZSIsdGhpcy5tZW51IGluc3RhbmNlb2YgU3EmJnRoaXMubWVudS5faXNBbmltYXRpbmc/dGhpcy5tZW51Ll9hbmltYXRpb25Eb25lLnBpcGUoVG4oMSksZm4oMCxsdCksZGUodGhpcy5fcGFyZW50TWVudS5faG92ZXJlZCgpKSkuc3Vic2NyaWJlKCgoKT0+dGhpcy5vcGVuTWVudSgpKSk6dGhpcy5vcGVuTWVudSgpfSkpKX1fZ2V0UG9ydGFsKCl7cmV0dXJuIHRoaXMuX3BvcnRhbCYmdGhpcy5fcG9ydGFsLnRlbXBsYXRlUmVmPT09dGhpcy5tZW51LnRlbXBsYXRlUmVmfHwodGhpcy5fcG9ydGFsPW5ldyBBQSh0aGlzLm1lbnUudGVtcGxhdGVSZWYsdGhpcy5fdmlld0NvbnRhaW5lclJlZikpLHRoaXMuX3BvcnRhbH19SXEuybVmYWM9ZnVuY3Rpb24gdChuKXtyZXR1cm4gbmV3KG58fElxKShaZyhoeiksWmcoeHUpLFpnKCR1KSxaZyh6cSksWmcoU3EsOCksWmcoeHEsMTApLFpnKFVTLDgpLFpnKFRTKSl9LElxLsm1ZGlyPXZvKHt0eXBlOklxLHNlbGVjdG9yczpbWyIiLCJtYXQtbWVudS10cmlnZ2VyLWZvciIsIiJdLFsiIiwibWF0TWVudVRyaWdnZXJGb3IiLCIiXV0saG9zdEF0dHJzOlsiYXJpYS1oYXNwb3B1cCIsInRydWUiLDEsIm1hdC1tZW51LXRyaWdnZXIiXSxob3N0VmFyczoyLGhvc3RCaW5kaW5nczpmdW5jdGlvbiB0KG4sZSl7MSZuJiZjcCgibW91c2Vkb3duIiwoZnVuY3Rpb24gdChuKXtyZXR1cm4gZS5faGFuZGxlTW91c2Vkb3duKG4pfSkpKCJrZXlkb3duIiwoZnVuY3Rpb24gdChuKXtyZXR1cm4gZS5faGFuZGxlS2V5ZG93bihuKX0pKSgiY2xpY2siLChmdW5jdGlvbiB0KG4pe3JldHVybiBlLl9oYW5kbGVDbGljayhuKX0pKSwyJm4mJk5nKCJhcmlhLWV4cGFuZGVkIixlLm1lbnVPcGVufHxudWxsKSgiYXJpYS1jb250cm9scyIsZS5tZW51T3Blbj9lLm1lbnUucGFuZWxJZDpudWxsKX0saW5wdXRzOntyZXN0b3JlRm9jdXM6WyJtYXRNZW51VHJpZ2dlclJlc3RvcmVGb2N1cyIsInJlc3RvcmVGb2N1cyJdLF9kZXByZWNhdGVkTWF0TWVudVRyaWdnZXJGb3I6WyJtYXQtbWVudS10cmlnZ2VyLWZvciIsIl9kZXByZWNhdGVkTWF0TWVudVRyaWdnZXJGb3IiXSxtZW51OlsibWF0TWVudVRyaWdnZXJGb3IiLCJtZW51Il0sbWVudURhdGE6WyJtYXRNZW51VHJpZ2dlckRhdGEiLCJtZW51RGF0YSJdfSxvdXRwdXRzOnttZW51T3BlbmVkOiJtZW51T3BlbmVkIixvbk1lbnVPcGVuOiJvbk1lbnVPcGVuIixtZW51Q2xvc2VkOiJtZW51Q2xvc2VkIixvbk1lbnVDbG9zZToib25NZW51Q2xvc2UifSxleHBvcnRBczpbIm1hdE1lbnVUcmlnZ2VyIl19KSxJcS5jdG9yUGFyYW1ldGVycz0oKT0+W3t0eXBlOmh6fSx7dHlwZTp4dX0se3R5cGU6JHV9LHt0eXBlOnZvaWQgMCxkZWNvcmF0b3JzOlt7dHlwZTpJZSxhcmdzOlt6cV19XX0se3R5cGU6U3EsZGVjb3JhdG9yczpbe3R5cGU6TmV9XX0se3R5cGU6eHEsZGVjb3JhdG9yczpbe3R5cGU6TmV9LHt0eXBlOkZlfV19LHt0eXBlOlVTLGRlY29yYXRvcnM6W3t0eXBlOk5lfV19LHt0eXBlOlRTfV0sSXEucHJvcERlY29yYXRvcnM9e19kZXByZWNhdGVkTWF0TWVudVRyaWdnZXJGb3I6W3t0eXBlOmZfLGFyZ3M6WyJtYXQtbWVudS10cmlnZ2VyLWZvciJdfV0sbWVudTpbe3R5cGU6Zl8sYXJnczpbIm1hdE1lbnVUcmlnZ2VyRm9yIl19XSxtZW51RGF0YTpbe3R5cGU6Zl8sYXJnczpbIm1hdE1lbnVUcmlnZ2VyRGF0YSJdfV0scmVzdG9yZUZvY3VzOlt7dHlwZTpmXyxhcmdzOlsibWF0TWVudVRyaWdnZXJSZXN0b3JlRm9jdXMiXX1dLG1lbnVPcGVuZWQ6W3t0eXBlOmhffV0sb25NZW51T3Blbjpbe3R5cGU6aF99XSxtZW51Q2xvc2VkOlt7dHlwZTpoX31dLG9uTWVudUNsb3NlOlt7dHlwZTpoX31dfTsKLyoqCiAgICAgKiBAbGljZW5zZQogICAgICogQ29weXJpZ2h0IEdvb2dsZSBMTEMgQWxsIFJpZ2h0cyBSZXNlcnZlZC4KICAgICAqCiAgICAgKiBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhbiBNSVQtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQogICAgICogZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZSBhdCBodHRwczovL2FuZ3VsYXIuaW8vbGljZW5zZQogICAgICovCmNsYXNzIE5xe31OcS7JtW1vZD14byh7dHlwZTpOcX0pLE5xLsm1aW5qPUdlKHtmYWN0b3J5OmZ1bmN0aW9uIHQobil7cmV0dXJuIG5ldyhufHxOcSl9LHByb3ZpZGVyczpbUnFdLGltcG9ydHM6W3RFXX0pLCgidW5kZWZpbmVkIj09dHlwZW9mIG5nSml0TW9kZXx8bmdKaXRNb2RlKSYmeW8oTnEse2RlY2xhcmF0aW9uczpmdW5jdGlvbigpe3JldHVybltJcSxNcV19LGV4cG9ydHM6ZnVuY3Rpb24oKXtyZXR1cm5bSXEsTXEsdEVdfX0pO2NsYXNzIEZxe31GcS7JtW1vZD14byh7dHlwZTpGcX0pLEZxLsm1aW5qPUdlKHtmYWN0b3J5OmZ1bmN0aW9uIHQobil7cmV0dXJuIG5ldyhufHxGcSl9LHByb3ZpZGVyczpbUnFdLGltcG9ydHM6W1tQTyx0RSxSRSx5eixOcV0sa0EsdEUsTnFdfSksKCJ1bmRlZmluZWQiPT10eXBlb2YgbmdKaXRNb2RlfHxuZ0ppdE1vZGUpJiZ5byhGcSx7ZGVjbGFyYXRpb25zOmZ1bmN0aW9uKCl7cmV0dXJuW0FxLHhxXX0saW1wb3J0czpmdW5jdGlvbigpe3JldHVybltQTyx0RSxSRSx5eixOcV19LGV4cG9ydHM6ZnVuY3Rpb24oKXtyZXR1cm5ba0EsdEUsQXEseHEsTnFdfX0pO2NvbnN0IExxPXt0b29sdGlwU3RhdGU6U1AoInN0YXRlIixbUlAoImluaXRpYWwsIHZvaWQsIGhpZGRlbiIselAoe29wYWNpdHk6MCx0cmFuc2Zvcm06InNjYWxlKDApIn0pKSxSUCgidmlzaWJsZSIselAoe3RyYW5zZm9ybToic2NhbGUoMSkifSkpLERQKCIqID0+IHZpc2libGUiLEVQKCIyMDBtcyBjdWJpYy1iZXppZXIoMCwgMCwgMC4yLCAxKSIsVFAoW3pQKHtvcGFjaXR5OjAsdHJhbnNmb3JtOiJzY2FsZSgwKSIsb2Zmc2V0OjB9KSx6UCh7b3BhY2l0eTouNSx0cmFuc2Zvcm06InNjYWxlKDAuOTkpIixvZmZzZXQ6LjV9KSx6UCh7b3BhY2l0eToxLHRyYW5zZm9ybToic2NhbGUoMSkiLG9mZnNldDoxfSldKSkpLERQKCIqID0+IGhpZGRlbiIsRVAoIjEwMG1zIGN1YmljLWJlemllcigwLCAwLCAwLjIsIDEpIix6UCh7b3BhY2l0eTowfSkpKV0pfSxIcT1Odyh7cGFzc2l2ZTohMH0pO2Z1bmN0aW9uIEJxKHQpe3JldHVybiBFcnJvcihgVG9vbHRpcCBwb3NpdGlvbiAiJHt0fSIgaXMgaW52YWxpZC5gKX1jb25zdCBWcT1uZXcgRmEoIm1hdC10b29sdGlwLXNjcm9sbC1zdHJhdGVneSIpLGpxPXtwcm92aWRlOlZxLGRlcHM6W2h6XSx1c2VGYWN0b3J5OmZ1bmN0aW9uIFVxKHQpe3JldHVybigpPT50LnNjcm9sbFN0cmF0ZWdpZXMucmVwb3NpdGlvbih7c2Nyb2xsVGhyb3R0bGU6MjB9KX19LFdxPW5ldyBGYSgibWF0LXRvb2x0aXAtZGVmYXVsdC1vcHRpb25zIix7cHJvdmlkZWRJbjoicm9vdCIsZmFjdG9yeTpmdW5jdGlvbiBHcSgpe3JldHVybntzaG93RGVsYXk6MCxoaWRlRGVsYXk6MCx0b3VjaGVuZEhpZGVEZWxheToxNTAwfX19KTtjbGFzcyBZcXtjb25zdHJ1Y3Rvcih0LG4sZSxhLG8scixpLGMscyxsLG0pe3RoaXMuX292ZXJsYXk9dCx0aGlzLl9lbGVtZW50UmVmPW4sdGhpcy5fc2Nyb2xsRGlzcGF0Y2hlcj1lLHRoaXMuX3ZpZXdDb250YWluZXJSZWY9YSx0aGlzLl9uZ1pvbmU9byx0aGlzLl9wbGF0Zm9ybT1yLHRoaXMuX2FyaWFEZXNjcmliZXI9aSx0aGlzLl9mb2N1c01vbml0b3I9Yyx0aGlzLl9kaXI9bCx0aGlzLl9kZWZhdWx0T3B0aW9ucz1tLHRoaXMuX3Bvc2l0aW9uPSJiZWxvdyIsdGhpcy5fZGlzYWJsZWQ9ITEsdGhpcy5fdmlld0luaXRpYWxpemVkPSExLHRoaXMuX3BvaW50ZXJFeGl0RXZlbnRzSW5pdGlhbGl6ZWQ9ITEsdGhpcy5zaG93RGVsYXk9dGhpcy5fZGVmYXVsdE9wdGlvbnMuc2hvd0RlbGF5LHRoaXMuaGlkZURlbGF5PXRoaXMuX2RlZmF1bHRPcHRpb25zLmhpZGVEZWxheSx0aGlzLnRvdWNoR2VzdHVyZXM9ImF1dG8iLHRoaXMuX21lc3NhZ2U9IiIsdGhpcy5fcGFzc2l2ZUxpc3RlbmVycz1bXSx0aGlzLl9kZXN0cm95ZWQ9bmV3IHgsdGhpcy5faGFuZGxlS2V5ZG93bj10PT57dGhpcy5faXNUb29sdGlwVmlzaWJsZSgpJiZ0LmtleUNvZGU9PT1CdyYmIVd3KHQpJiYodC5wcmV2ZW50RGVmYXVsdCgpLHQuc3RvcFByb3BhZ2F0aW9uKCksdGhpcy5fbmdab25lLnJ1bigoKCk9PnRoaXMuaGlkZSgwKSkpKX0sdGhpcy5fc2Nyb2xsU3RyYXRlZ3k9cyxtJiYobS5wb3NpdGlvbiYmKHRoaXMucG9zaXRpb249bS5wb3NpdGlvbiksbS50b3VjaEdlc3R1cmVzJiYodGhpcy50b3VjaEdlc3R1cmVzPW0udG91Y2hHZXN0dXJlcykpLG8ucnVuT3V0c2lkZUFuZ3VsYXIoKCgpPT57bi5uYXRpdmVFbGVtZW50LmFkZEV2ZW50TGlzdGVuZXIoImtleWRvd24iLHRoaXMuX2hhbmRsZUtleWRvd24pfSkpfWdldCBwb3NpdGlvbigpe3JldHVybiB0aGlzLl9wb3NpdGlvbn1zZXQgcG9zaXRpb24odCl7dCE9PXRoaXMuX3Bvc2l0aW9uJiYodGhpcy5fcG9zaXRpb249dCx0aGlzLl9vdmVybGF5UmVmJiYodGhpcy5fdXBkYXRlUG9zaXRpb24oKSx0aGlzLl90b29sdGlwSW5zdGFuY2UmJnRoaXMuX3Rvb2x0aXBJbnN0YW5jZS5zaG93KDApLHRoaXMuX292ZXJsYXlSZWYudXBkYXRlUG9zaXRpb24oKSkpfWdldCBkaXNhYmxlZCgpe3JldHVybiB0aGlzLl9kaXNhYmxlZH1zZXQgZGlzYWJsZWQodCl7dGhpcy5fZGlzYWJsZWQ9R3codCksdGhpcy5fZGlzYWJsZWQ/dGhpcy5oaWRlKDApOnRoaXMuX3NldHVwUG9pbnRlckVudGVyRXZlbnRzSWZOZWVkZWQoKX1nZXQgbWVzc2FnZSgpe3JldHVybiB0aGlzLl9tZXNzYWdlfXNldCBtZXNzYWdlKHQpe3RoaXMuX2FyaWFEZXNjcmliZXIucmVtb3ZlRGVzY3JpcHRpb24odGhpcy5fZWxlbWVudFJlZi5uYXRpdmVFbGVtZW50LHRoaXMuX21lc3NhZ2UpLHRoaXMuX21lc3NhZ2U9bnVsbCE9dD9TdHJpbmcodCkudHJpbSgpOiIiLCF0aGlzLl9tZXNzYWdlJiZ0aGlzLl9pc1Rvb2x0aXBWaXNpYmxlKCk/dGhpcy5oaWRlKDApOih0aGlzLl9zZXR1cFBvaW50ZXJFbnRlckV2ZW50c0lmTmVlZGVkKCksdGhpcy5fdXBkYXRlVG9vbHRpcE1lc3NhZ2UoKSx0aGlzLl9uZ1pvbmUucnVuT3V0c2lkZUFuZ3VsYXIoKCgpPT57UHJvbWlzZS5yZXNvbHZlKCkudGhlbigoKCk9Pnt0aGlzLl9hcmlhRGVzY3JpYmVyLmRlc2NyaWJlKHRoaXMuX2VsZW1lbnRSZWYubmF0aXZlRWxlbWVudCx0aGlzLm1lc3NhZ2UpfSkpfSkpKX1nZXQgdG9vbHRpcENsYXNzKCl7cmV0dXJuIHRoaXMuX3Rvb2x0aXBDbGFzc31zZXQgdG9vbHRpcENsYXNzKHQpe3RoaXMuX3Rvb2x0aXBDbGFzcz10LHRoaXMuX3Rvb2x0aXBJbnN0YW5jZSYmdGhpcy5fc2V0VG9vbHRpcENsYXNzKHRoaXMuX3Rvb2x0aXBDbGFzcyl9bmdBZnRlclZpZXdJbml0KCl7dGhpcy5fdmlld0luaXRpYWxpemVkPSEwLHRoaXMuX3NldHVwUG9pbnRlckVudGVyRXZlbnRzSWZOZWVkZWQoKSx0aGlzLl9mb2N1c01vbml0b3IubW9uaXRvcih0aGlzLl9lbGVtZW50UmVmKS5waXBlKGRlKHRoaXMuX2Rlc3Ryb3llZCkpLnN1YnNjcmliZSgodD0+e3Q/ImtleWJvYXJkIj09PXQmJnRoaXMuX25nWm9uZS5ydW4oKCgpPT50aGlzLnNob3coKSkpOnRoaXMuX25nWm9uZS5ydW4oKCgpPT50aGlzLmhpZGUoMCkpKX0pKX1uZ09uRGVzdHJveSgpe2NvbnN0IHQ9dGhpcy5fZWxlbWVudFJlZi5uYXRpdmVFbGVtZW50O2NsZWFyVGltZW91dCh0aGlzLl90b3VjaHN0YXJ0VGltZW91dCksdGhpcy5fb3ZlcmxheVJlZiYmKHRoaXMuX292ZXJsYXlSZWYuZGlzcG9zZSgpLHRoaXMuX3Rvb2x0aXBJbnN0YW5jZT1udWxsKSx0LnJlbW92ZUV2ZW50TGlzdGVuZXIoImtleWRvd24iLHRoaXMuX2hhbmRsZUtleWRvd24pLHRoaXMuX3Bhc3NpdmVMaXN0ZW5lcnMuZm9yRWFjaCgoKFtuLGVdKT0+e3QucmVtb3ZlRXZlbnRMaXN0ZW5lcihuLGUsSHEpfSkpLHRoaXMuX3Bhc3NpdmVMaXN0ZW5lcnMubGVuZ3RoPTAsdGhpcy5fZGVzdHJveWVkLm5leHQoKSx0aGlzLl9kZXN0cm95ZWQuY29tcGxldGUoKSx0aGlzLl9hcmlhRGVzY3JpYmVyLnJlbW92ZURlc2NyaXB0aW9uKHQsdGhpcy5tZXNzYWdlKSx0aGlzLl9mb2N1c01vbml0b3Iuc3RvcE1vbml0b3JpbmcodCl9c2hvdyh0PXRoaXMuc2hvd0RlbGF5KXtpZih0aGlzLmRpc2FibGVkfHwhdGhpcy5tZXNzYWdlfHx0aGlzLl9pc1Rvb2x0aXBWaXNpYmxlKCkmJiF0aGlzLl90b29sdGlwSW5zdGFuY2UuX3Nob3dUaW1lb3V0SWQmJiF0aGlzLl90b29sdGlwSW5zdGFuY2UuX2hpZGVUaW1lb3V0SWQpcmV0dXJuO2NvbnN0IG49dGhpcy5fY3JlYXRlT3ZlcmxheSgpO3RoaXMuX2RldGFjaCgpLHRoaXMuX3BvcnRhbD10aGlzLl9wb3J0YWx8fG5ldyBFQShxcSx0aGlzLl92aWV3Q29udGFpbmVyUmVmKSx0aGlzLl90b29sdGlwSW5zdGFuY2U9bi5hdHRhY2godGhpcy5fcG9ydGFsKS5pbnN0YW5jZSx0aGlzLl90b29sdGlwSW5zdGFuY2UuYWZ0ZXJIaWRkZW4oKS5waXBlKGRlKHRoaXMuX2Rlc3Ryb3llZCkpLnN1YnNjcmliZSgoKCk9PnRoaXMuX2RldGFjaCgpKSksdGhpcy5fc2V0VG9vbHRpcENsYXNzKHRoaXMuX3Rvb2x0aXBDbGFzcyksdGhpcy5fdXBkYXRlVG9vbHRpcE1lc3NhZ2UoKSx0aGlzLl90b29sdGlwSW5zdGFuY2Uuc2hvdyh0KX1oaWRlKHQ9dGhpcy5oaWRlRGVsYXkpe3RoaXMuX3Rvb2x0aXBJbnN0YW5jZSYmdGhpcy5fdG9vbHRpcEluc3RhbmNlLmhpZGUodCl9dG9nZ2xlKCl7dGhpcy5faXNUb29sdGlwVmlzaWJsZSgpP3RoaXMuaGlkZSgpOnRoaXMuc2hvdygpfV9pc1Rvb2x0aXBWaXNpYmxlKCl7cmV0dXJuISF0aGlzLl90b29sdGlwSW5zdGFuY2UmJnRoaXMuX3Rvb2x0aXBJbnN0YW5jZS5pc1Zpc2libGUoKX1fY3JlYXRlT3ZlcmxheSgpe2lmKHRoaXMuX292ZXJsYXlSZWYpcmV0dXJuIHRoaXMuX292ZXJsYXlSZWY7Y29uc3QgdD10aGlzLl9zY3JvbGxEaXNwYXRjaGVyLmdldEFuY2VzdG9yU2Nyb2xsQ29udGFpbmVycyh0aGlzLl9lbGVtZW50UmVmKSxuPXRoaXMuX292ZXJsYXkucG9zaXRpb24oKS5mbGV4aWJsZUNvbm5lY3RlZFRvKHRoaXMuX2VsZW1lbnRSZWYpLndpdGhUcmFuc2Zvcm1PcmlnaW5PbigiLm1hdC10b29sdGlwIikud2l0aEZsZXhpYmxlRGltZW5zaW9ucyghMSkud2l0aFZpZXdwb3J0TWFyZ2luKDgpLndpdGhTY3JvbGxhYmxlQ29udGFpbmVycyh0KTtyZXR1cm4gbi5wb3NpdGlvbkNoYW5nZXMucGlwZShkZSh0aGlzLl9kZXN0cm95ZWQpKS5zdWJzY3JpYmUoKHQ9Pnt0aGlzLl90b29sdGlwSW5zdGFuY2UmJnQuc2Nyb2xsYWJsZVZpZXdQcm9wZXJ0aWVzLmlzT3ZlcmxheUNsaXBwZWQmJnRoaXMuX3Rvb2x0aXBJbnN0YW5jZS5pc1Zpc2libGUoKSYmdGhpcy5fbmdab25lLnJ1bigoKCk9PnRoaXMuaGlkZSgwKSkpfSkpLHRoaXMuX292ZXJsYXlSZWY9dGhpcy5fb3ZlcmxheS5jcmVhdGUoe2RpcmVjdGlvbjp0aGlzLl9kaXIscG9zaXRpb25TdHJhdGVneTpuLHBhbmVsQ2xhc3M6Im1hdC10b29sdGlwLXBhbmVsIixzY3JvbGxTdHJhdGVneTp0aGlzLl9zY3JvbGxTdHJhdGVneSgpfSksdGhpcy5fdXBkYXRlUG9zaXRpb24oKSx0aGlzLl9vdmVybGF5UmVmLmRldGFjaG1lbnRzKCkucGlwZShkZSh0aGlzLl9kZXN0cm95ZWQpKS5zdWJzY3JpYmUoKCgpPT50aGlzLl9kZXRhY2goKSkpLHRoaXMuX292ZXJsYXlSZWZ9X2RldGFjaCgpe3RoaXMuX292ZXJsYXlSZWYmJnRoaXMuX292ZXJsYXlSZWYuaGFzQXR0YWNoZWQoKSYmdGhpcy5fb3ZlcmxheVJlZi5kZXRhY2goKSx0aGlzLl90b29sdGlwSW5zdGFuY2U9bnVsbH1fdXBkYXRlUG9zaXRpb24oKXtjb25zdCB0PXRoaXMuX292ZXJsYXlSZWYuZ2V0Q29uZmlnKCkucG9zaXRpb25TdHJhdGVneSxuPXRoaXMuX2dldE9yaWdpbigpLGU9dGhpcy5fZ2V0T3ZlcmxheVBvc2l0aW9uKCk7dC53aXRoUG9zaXRpb25zKFtPYmplY3QuYXNzaWduKE9iamVjdC5hc3NpZ24oe30sbi5tYWluKSxlLm1haW4pLE9iamVjdC5hc3NpZ24oT2JqZWN0LmFzc2lnbih7fSxuLmZhbGxiYWNrKSxlLmZhbGxiYWNrKV0pfV9nZXRPcmlnaW4oKXtjb25zdCB0PSF0aGlzLl9kaXJ8fCJsdHIiPT10aGlzLl9kaXIudmFsdWUsbj10aGlzLnBvc2l0aW9uO2xldCBlO2lmKCJhYm92ZSI9PW58fCJiZWxvdyI9PW4pZT17b3JpZ2luWDoiY2VudGVyIixvcmlnaW5ZOiJhYm92ZSI9PW4/InRvcCI6ImJvdHRvbSJ9O2Vsc2UgaWYoImJlZm9yZSI9PW58fCJsZWZ0Ij09biYmdHx8InJpZ2h0Ij09biYmIXQpZT17b3JpZ2luWDoic3RhcnQiLG9yaWdpblk6ImNlbnRlciJ9O2Vsc2UgaWYoImFmdGVyIj09bnx8InJpZ2h0Ij09biYmdHx8ImxlZnQiPT1uJiYhdCllPXtvcmlnaW5YOiJlbmQiLG9yaWdpblk6ImNlbnRlciJ9O2Vsc2UgaWYoInVuZGVmaW5lZCI9PXR5cGVvZiBuZ0Rldk1vZGV8fG5nRGV2TW9kZSl0aHJvdyBCcShuKTtjb25zdHt4OmEseTpvfT10aGlzLl9pbnZlcnRQb3NpdGlvbihlLm9yaWdpblgsZS5vcmlnaW5ZKTtyZXR1cm57bWFpbjplLGZhbGxiYWNrOntvcmlnaW5YOmEsb3JpZ2luWTpvfX19X2dldE92ZXJsYXlQb3NpdGlvbigpe2NvbnN0IHQ9IXRoaXMuX2Rpcnx8Imx0ciI9PXRoaXMuX2Rpci52YWx1ZSxuPXRoaXMucG9zaXRpb247bGV0IGU7aWYoImFib3ZlIj09billPXtvdmVybGF5WDoiY2VudGVyIixvdmVybGF5WToiYm90dG9tIn07ZWxzZSBpZigiYmVsb3ciPT1uKWU9e292ZXJsYXlYOiJjZW50ZXIiLG92ZXJsYXlZOiJ0b3AifTtlbHNlIGlmKCJiZWZvcmUiPT1ufHwibGVmdCI9PW4mJnR8fCJyaWdodCI9PW4mJiF0KWU9e292ZXJsYXlYOiJlbmQiLG92ZXJsYXlZOiJjZW50ZXIifTtlbHNlIGlmKCJhZnRlciI9PW58fCJyaWdodCI9PW4mJnR8fCJsZWZ0Ij09biYmIXQpZT17b3ZlcmxheVg6InN0YXJ0IixvdmVybGF5WToiY2VudGVyIn07ZWxzZSBpZigidW5kZWZpbmVkIj09dHlwZW9mIG5nRGV2TW9kZXx8bmdEZXZNb2RlKXRocm93IEJxKG4pO2NvbnN0e3g6YSx5Om99PXRoaXMuX2ludmVydFBvc2l0aW9uKGUub3ZlcmxheVgsZS5vdmVybGF5WSk7cmV0dXJue21haW46ZSxmYWxsYmFjazp7b3ZlcmxheVg6YSxvdmVybGF5WTpvfX19X3VwZGF0ZVRvb2x0aXBNZXNzYWdlKCl7dGhpcy5fdG9vbHRpcEluc3RhbmNlJiYodGhpcy5fdG9vbHRpcEluc3RhbmNlLm1lc3NhZ2U9dGhpcy5tZXNzYWdlLHRoaXMuX3Rvb2x0aXBJbnN0YW5jZS5fbWFya0ZvckNoZWNrKCksdGhpcy5fbmdab25lLm9uTWljcm90YXNrRW1wdHkucGlwZShUbigxKSxkZSh0aGlzLl9kZXN0cm95ZWQpKS5zdWJzY3JpYmUoKCgpPT57dGhpcy5fdG9vbHRpcEluc3RhbmNlJiZ0aGlzLl9vdmVybGF5UmVmLnVwZGF0ZVBvc2l0aW9uKCl9KSkpfV9zZXRUb29sdGlwQ2xhc3ModCl7dGhpcy5fdG9vbHRpcEluc3RhbmNlJiYodGhpcy5fdG9vbHRpcEluc3RhbmNlLnRvb2x0aXBDbGFzcz10LHRoaXMuX3Rvb2x0aXBJbnN0YW5jZS5fbWFya0ZvckNoZWNrKCkpfV9pbnZlcnRQb3NpdGlvbih0LG4pe3JldHVybiJhYm92ZSI9PT10aGlzLnBvc2l0aW9ufHwiYmVsb3ciPT09dGhpcy5wb3NpdGlvbj8idG9wIj09PW4/bj0iYm90dG9tIjoiYm90dG9tIj09PW4mJihuPSJ0b3AiKToiZW5kIj09PXQ/dD0ic3RhcnQiOiJzdGFydCI9PT10JiYodD0iZW5kIikse3g6dCx5Om59fV9zZXR1cFBvaW50ZXJFbnRlckV2ZW50c0lmTmVlZGVkKCl7IXRoaXMuX2Rpc2FibGVkJiZ0aGlzLm1lc3NhZ2UmJnRoaXMuX3ZpZXdJbml0aWFsaXplZCYmIXRoaXMuX3Bhc3NpdmVMaXN0ZW5lcnMubGVuZ3RoJiYodGhpcy5fcGxhdGZvcm1TdXBwb3J0c01vdXNlRXZlbnRzKCk/dGhpcy5fcGFzc2l2ZUxpc3RlbmVycy5wdXNoKFsibW91c2VlbnRlciIsKCk9Pnt0aGlzLl9zZXR1cFBvaW50ZXJFeGl0RXZlbnRzSWZOZWVkZWQoKSx0aGlzLnNob3coKX1dKToib2ZmIiE9PXRoaXMudG91Y2hHZXN0dXJlcyYmKHRoaXMuX2Rpc2FibGVOYXRpdmVHZXN0dXJlc0lmTmVjZXNzYXJ5KCksdGhpcy5fcGFzc2l2ZUxpc3RlbmVycy5wdXNoKFsidG91Y2hzdGFydCIsKCk9Pnt0aGlzLl9zZXR1cFBvaW50ZXJFeGl0RXZlbnRzSWZOZWVkZWQoKSxjbGVhclRpbWVvdXQodGhpcy5fdG91Y2hzdGFydFRpbWVvdXQpLHRoaXMuX3RvdWNoc3RhcnRUaW1lb3V0PXNldFRpbWVvdXQoKCgpPT50aGlzLnNob3coKSksNTAwKX1dKSksdGhpcy5fYWRkTGlzdGVuZXJzKHRoaXMuX3Bhc3NpdmVMaXN0ZW5lcnMpKX1fc2V0dXBQb2ludGVyRXhpdEV2ZW50c0lmTmVlZGVkKCl7aWYodGhpcy5fcG9pbnRlckV4aXRFdmVudHNJbml0aWFsaXplZClyZXR1cm47dGhpcy5fcG9pbnRlckV4aXRFdmVudHNJbml0aWFsaXplZD0hMDtjb25zdCB0PVtdO2lmKHRoaXMuX3BsYXRmb3JtU3VwcG9ydHNNb3VzZUV2ZW50cygpKXQucHVzaChbIm1vdXNlbGVhdmUiLCgpPT50aGlzLmhpZGUoKV0pO2Vsc2UgaWYoIm9mZiIhPT10aGlzLnRvdWNoR2VzdHVyZXMpe3RoaXMuX2Rpc2FibGVOYXRpdmVHZXN0dXJlc0lmTmVjZXNzYXJ5KCk7Y29uc3Qgbj0oKT0+e2NsZWFyVGltZW91dCh0aGlzLl90b3VjaHN0YXJ0VGltZW91dCksdGhpcy5oaWRlKHRoaXMuX2RlZmF1bHRPcHRpb25zLnRvdWNoZW5kSGlkZURlbGF5KX07dC5wdXNoKFsidG91Y2hlbmQiLG5dLFsidG91Y2hjYW5jZWwiLG5dKX10aGlzLl9hZGRMaXN0ZW5lcnModCksdGhpcy5fcGFzc2l2ZUxpc3RlbmVycy5wdXNoKC4uLnQpfV9hZGRMaXN0ZW5lcnModCl7dC5mb3JFYWNoKCgoW3Qsbl0pPT57dGhpcy5fZWxlbWVudFJlZi5uYXRpdmVFbGVtZW50LmFkZEV2ZW50TGlzdGVuZXIodCxuLEhxKX0pKX1fcGxhdGZvcm1TdXBwb3J0c01vdXNlRXZlbnRzKCl7cmV0dXJuIXRoaXMuX3BsYXRmb3JtLklPUyYmIXRoaXMuX3BsYXRmb3JtLkFORFJPSUR9X2Rpc2FibGVOYXRpdmVHZXN0dXJlc0lmTmVjZXNzYXJ5KCl7Y29uc3QgdD10aGlzLnRvdWNoR2VzdHVyZXM7aWYoIm9mZiIhPT10KXtjb25zdCBuPXRoaXMuX2VsZW1lbnRSZWYubmF0aXZlRWxlbWVudCxlPW4uc3R5bGU7KCJvbiI9PT10fHwiSU5QVVQiIT09bi5ub2RlTmFtZSYmIlRFWFRBUkVBIiE9PW4ubm9kZU5hbWUpJiYoZS51c2VyU2VsZWN0PWUubXNVc2VyU2VsZWN0PWUud2Via2l0VXNlclNlbGVjdD1lLk1velVzZXJTZWxlY3Q9Im5vbmUiKSwib24iIT09dCYmbi5kcmFnZ2FibGV8fChlLndlYmtpdFVzZXJEcmFnPSJub25lIiksZS50b3VjaEFjdGlvbj0ibm9uZSIsZS53ZWJraXRUYXBIaWdobGlnaHRDb2xvcj0idHJhbnNwYXJlbnQifX19WXEuybVmYWM9ZnVuY3Rpb24gdChuKXtyZXR1cm4gbmV3KG58fFlxKShaZyhoeiksWmcoeHUpLFpnKF9BKSxaZygkdSksWmcoSl8pLFpnKFN3KSxaZyhjUyksWmcoVFMpLFpnKFZxKSxaZyhVUyw4KSxaZyhXcSw4KSl9LFlxLsm1ZGlyPXZvKHt0eXBlOllxLHNlbGVjdG9yczpbWyIiLCJtYXRUb29sdGlwIiwiIl1dLGhvc3RBdHRyczpbMSwibWF0LXRvb2x0aXAtdHJpZ2dlciJdLGlucHV0czp7c2hvd0RlbGF5OlsibWF0VG9vbHRpcFNob3dEZWxheSIsInNob3dEZWxheSJdLGhpZGVEZWxheTpbIm1hdFRvb2x0aXBIaWRlRGVsYXkiLCJoaWRlRGVsYXkiXSx0b3VjaEdlc3R1cmVzOlsibWF0VG9vbHRpcFRvdWNoR2VzdHVyZXMiLCJ0b3VjaEdlc3R1cmVzIl0scG9zaXRpb246WyJtYXRUb29sdGlwUG9zaXRpb24iLCJwb3NpdGlvbiJdLGRpc2FibGVkOlsibWF0VG9vbHRpcERpc2FibGVkIiwiZGlzYWJsZWQiXSxtZXNzYWdlOlsibWF0VG9vbHRpcCIsIm1lc3NhZ2UiXSx0b29sdGlwQ2xhc3M6WyJtYXRUb29sdGlwQ2xhc3MiLCJ0b29sdGlwQ2xhc3MiXX0sZXhwb3J0QXM6WyJtYXRUb29sdGlwIl19KSxZcS5jdG9yUGFyYW1ldGVycz0oKT0+W3t0eXBlOmh6fSx7dHlwZTp4dX0se3R5cGU6X0F9LHt0eXBlOiR1fSx7dHlwZTpKX30se3R5cGU6U3d9LHt0eXBlOmNTfSx7dHlwZTpUU30se3R5cGU6dm9pZCAwLGRlY29yYXRvcnM6W3t0eXBlOkllLGFyZ3M6W1ZxXX1dfSx7dHlwZTpVUyxkZWNvcmF0b3JzOlt7dHlwZTpOZX1dfSx7dHlwZTp2b2lkIDAsZGVjb3JhdG9yczpbe3R5cGU6TmV9LHt0eXBlOkllLGFyZ3M6W1dxXX1dfV0sWXEucHJvcERlY29yYXRvcnM9e3Bvc2l0aW9uOlt7dHlwZTpmXyxhcmdzOlsibWF0VG9vbHRpcFBvc2l0aW9uIl19XSxkaXNhYmxlZDpbe3R5cGU6Zl8sYXJnczpbIm1hdFRvb2x0aXBEaXNhYmxlZCJdfV0sc2hvd0RlbGF5Olt7dHlwZTpmXyxhcmdzOlsibWF0VG9vbHRpcFNob3dEZWxheSJdfV0saGlkZURlbGF5Olt7dHlwZTpmXyxhcmdzOlsibWF0VG9vbHRpcEhpZGVEZWxheSJdfV0sdG91Y2hHZXN0dXJlczpbe3R5cGU6Zl8sYXJnczpbIm1hdFRvb2x0aXBUb3VjaEdlc3R1cmVzIl19XSxtZXNzYWdlOlt7dHlwZTpmXyxhcmdzOlsibWF0VG9vbHRpcCJdfV0sdG9vbHRpcENsYXNzOlt7dHlwZTpmXyxhcmdzOlsibWF0VG9vbHRpcENsYXNzIl19XX07Y2xhc3MgcXF7Y29uc3RydWN0b3IodCxuKXt0aGlzLl9jaGFuZ2VEZXRlY3RvclJlZj10LHRoaXMuX2JyZWFrcG9pbnRPYnNlcnZlcj1uLHRoaXMuX3Zpc2liaWxpdHk9ImluaXRpYWwiLHRoaXMuX2Nsb3NlT25JbnRlcmFjdGlvbj0hMSx0aGlzLl9vbkhpZGU9bmV3IHgsdGhpcy5faXNIYW5kc2V0PXRoaXMuX2JyZWFrcG9pbnRPYnNlcnZlci5vYnNlcnZlKCIobWF4LXdpZHRoOiA1OTkuOTlweCkgYW5kIChvcmllbnRhdGlvbjogcG9ydHJhaXQpLCAobWF4LXdpZHRoOiA5NTkuOTlweCkgYW5kIChvcmllbnRhdGlvbjogbGFuZHNjYXBlKSIpfXNob3codCl7dGhpcy5faGlkZVRpbWVvdXRJZCYmKGNsZWFyVGltZW91dCh0aGlzLl9oaWRlVGltZW91dElkKSx0aGlzLl9oaWRlVGltZW91dElkPW51bGwpLHRoaXMuX2Nsb3NlT25JbnRlcmFjdGlvbj0hMCx0aGlzLl9zaG93VGltZW91dElkPXNldFRpbWVvdXQoKCgpPT57dGhpcy5fdmlzaWJpbGl0eT0idmlzaWJsZSIsdGhpcy5fc2hvd1RpbWVvdXRJZD1udWxsLHRoaXMuX21hcmtGb3JDaGVjaygpfSksdCl9aGlkZSh0KXt0aGlzLl9zaG93VGltZW91dElkJiYoY2xlYXJUaW1lb3V0KHRoaXMuX3Nob3dUaW1lb3V0SWQpLHRoaXMuX3Nob3dUaW1lb3V0SWQ9bnVsbCksdGhpcy5faGlkZVRpbWVvdXRJZD1zZXRUaW1lb3V0KCgoKT0+e3RoaXMuX3Zpc2liaWxpdHk9ImhpZGRlbiIsdGhpcy5faGlkZVRpbWVvdXRJZD1udWxsLHRoaXMuX21hcmtGb3JDaGVjaygpfSksdCl9YWZ0ZXJIaWRkZW4oKXtyZXR1cm4gdGhpcy5fb25IaWRlfWlzVmlzaWJsZSgpe3JldHVybiJ2aXNpYmxlIj09PXRoaXMuX3Zpc2liaWxpdHl9bmdPbkRlc3Ryb3koKXt0aGlzLl9vbkhpZGUuY29tcGxldGUoKX1fYW5pbWF0aW9uU3RhcnQoKXt0aGlzLl9jbG9zZU9uSW50ZXJhY3Rpb249ITF9X2FuaW1hdGlvbkRvbmUodCl7Y29uc3Qgbj10LnRvU3RhdGU7ImhpZGRlbiIhPT1ufHx0aGlzLmlzVmlzaWJsZSgpfHx0aGlzLl9vbkhpZGUubmV4dCgpLCJ2aXNpYmxlIiE9PW4mJiJoaWRkZW4iIT09bnx8KHRoaXMuX2Nsb3NlT25JbnRlcmFjdGlvbj0hMCl9X2hhbmRsZUJvZHlJbnRlcmFjdGlvbigpe3RoaXMuX2Nsb3NlT25JbnRlcmFjdGlvbiYmdGhpcy5oaWRlKDApfV9tYXJrRm9yQ2hlY2soKXt0aGlzLl9jaGFuZ2VEZXRlY3RvclJlZi5tYXJrRm9yQ2hlY2soKX19cXEuybVmYWM9ZnVuY3Rpb24gdChuKXtyZXR1cm4gbmV3KG58fHFxKShaZyhWbSksWmcoenopKX0scXEuybVjbXA9X28oe3R5cGU6cXEsc2VsZWN0b3JzOltbIm1hdC10b29sdGlwLWNvbXBvbmVudCJdXSxob3N0QXR0cnM6WyJhcmlhLWhpZGRlbiIsInRydWUiXSxob3N0VmFyczoyLGhvc3RCaW5kaW5nczpmdW5jdGlvbiB0KG4sZSl7MSZuJiZjcCgiY2xpY2siLChmdW5jdGlvbiB0KCl7cmV0dXJuIGUuX2hhbmRsZUJvZHlJbnRlcmFjdGlvbigpfSksITEsb3IpLDImbiYmVHAoInpvb20iLCJ2aXNpYmxlIj09PWUuX3Zpc2liaWxpdHk/MTpudWxsKX0sZGVjbHM6Myx2YXJzOjcsY29uc3RzOltbMSwibWF0LXRvb2x0aXAiLDMsIm5nQ2xhc3MiXV0sdGVtcGxhdGU6ZnVuY3Rpb24gdChuLGUpe3ZhciBhOzEmbiYmKEtnKDAsImRpdiIsMCksY3AoIkBzdGF0ZS5zdGFydCIsKGZ1bmN0aW9uIHQoKXtyZXR1cm4gZS5fYW5pbWF0aW9uU3RhcnQoKX0pKSgiQHN0YXRlLmRvbmUiLChmdW5jdGlvbiB0KG4pe3JldHVybiBlLl9hbmltYXRpb25Eb25lKG4pfSkpLHlmKDEsImFzeW5jIiksSnAoMiksJGcoKSksMiZuJiYoRHAoIm1hdC10b29sdGlwLWhhbmRzZXQiLG51bGw9PShhPWtmKDEsNSxlLl9pc0hhbmRzZXQpKT9udWxsOmEubWF0Y2hlcyksSmcoIm5nQ2xhc3MiLGUudG9vbHRpcENsYXNzKSgiQHN0YXRlIixlLl92aXNpYmlsaXR5KSx3cygyKSxRcChlLm1lc3NhZ2UpKX0sZGlyZWN0aXZlczpbSE1dLHBpcGVzOltvT10sc3R5bGVzOlsiLm1hdC10b29sdGlwLXBhbmVse3BvaW50ZXItZXZlbnRzOm5vbmUgIWltcG9ydGFudH0ubWF0LXRvb2x0aXB7Y29sb3I6I2ZmZjtib3JkZXItcmFkaXVzOjRweDttYXJnaW46MTRweDttYXgtd2lkdGg6MjUwcHg7cGFkZGluZy1sZWZ0OjhweDtwYWRkaW5nLXJpZ2h0OjhweDtvdmVyZmxvdzpoaWRkZW47dGV4dC1vdmVyZmxvdzplbGxpcHNpc30uY2RrLWhpZ2gtY29udHJhc3QtYWN0aXZlIC5tYXQtdG9vbHRpcHtvdXRsaW5lOnNvbGlkIDFweH0ubWF0LXRvb2x0aXAtaGFuZHNldHttYXJnaW46MjRweDtwYWRkaW5nLWxlZnQ6MTZweDtwYWRkaW5nLXJpZ2h0OjE2cHh9XG4iXSxlbmNhcHN1bGF0aW9uOjIsZGF0YTp7YW5pbWF0aW9uOltMcS50b29sdGlwU3RhdGVdfSxjaGFuZ2VEZXRlY3Rpb246MH0pLHFxLmN0b3JQYXJhbWV0ZXJzPSgpPT5be3R5cGU6Vm19LHt0eXBlOnp6fV0KLyoqCiAgICAgKiBAbGljZW5zZQogICAgICogQ29weXJpZ2h0IEdvb2dsZSBMTEMgQWxsIFJpZ2h0cyBSZXNlcnZlZC4KICAgICAqCiAgICAgKiBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhbiBNSVQtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQogICAgICogZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZSBhdCBodHRwczovL2FuZ3VsYXIuaW8vbGljZW5zZQogICAgICovO2NsYXNzIFpxe31mdW5jdGlvbiBYcSh0LG4pe2lmKDEmdCYmKEtnKDAsIm1hdC1vcHRpb24iLDE5KSxKcCgxKSwkZygpKSwyJnQpe2NvbnN0IHQ9bi4kaW1wbGljaXQ7SmcoInZhbHVlIix0KSx3cygxKSxLcCgiICIsdCwiICIpfX1mdW5jdGlvbiBKcSh0LG4pe2lmKDEmdCl7Y29uc3QgdD1vcCgpO0tnKDAsIm1hdC1mb3JtLWZpZWxkIiwxNiksS2coMSwibWF0LXNlbGVjdCIsMTcpLGNwKCJzZWxlY3Rpb25DaGFuZ2UiLChmdW5jdGlvbiBuKGUpe3JldHVybiBqcih0KSxncCgyKS5fY2hhbmdlUGFnZVNpemUoZS52YWx1ZSl9KSksWWcoMixYcSwyLDIsIm1hdC1vcHRpb24iLDE4KSwkZygpLCRnKCl9aWYoMiZ0KXtjb25zdCB0PWdwKDIpO0pnKCJhcHBlYXJhbmNlIix0Ll9mb3JtRmllbGRBcHBlYXJhbmNlKSgiY29sb3IiLHQuY29sb3IpLHdzKDEpLEpnKCJ2YWx1ZSIsdC5wYWdlU2l6ZSkoImRpc2FibGVkIix0LmRpc2FibGVkKSgiYXJpYS1sYWJlbCIsdC5faW50bC5pdGVtc1BlclBhZ2VMYWJlbCksd3MoMSksSmcoIm5nRm9yT2YiLHQuX2Rpc3BsYXllZFBhZ2VTaXplT3B0aW9ucyl9fWZ1bmN0aW9uIFFxKHQsbil7aWYoMSZ0JiYoS2coMCwiZGl2IiwyMCksSnAoMSksJGcoKSksMiZ0KXtjb25zdCB0PWdwKDIpO3dzKDEpLFFwKHQucGFnZVNpemUpfX1mdW5jdGlvbiBLcSh0LG4pe2lmKDEmdCYmKEtnKDAsImRpdiIsMTIpLEtnKDEsImRpdiIsMTMpLEpwKDIpLCRnKCksWWcoMyxKcSwzLDYsIm1hdC1mb3JtLWZpZWxkIiwxNCksWWcoNCxRcSwyLDEsImRpdiIsMTUpLCRnKCkpLDImdCl7Y29uc3QgdD1ncCgpO3dzKDIpLEtwKCIgIix0Ll9pbnRsLml0ZW1zUGVyUGFnZUxhYmVsLCIgIiksd3MoMSksSmcoIm5nSWYiLHQuX2Rpc3BsYXllZFBhZ2VTaXplT3B0aW9ucy5sZW5ndGg+MSksd3MoMSksSmcoIm5nSWYiLHQuX2Rpc3BsYXllZFBhZ2VTaXplT3B0aW9ucy5sZW5ndGg8PTEpfX1mdW5jdGlvbiAkcSh0LG4pe2lmKDEmdCl7Y29uc3QgdD1vcCgpO0tnKDAsImJ1dHRvbiIsMjEpLGNwKCJjbGljayIsKGZ1bmN0aW9uIG4oKXtyZXR1cm4ganIodCksZ3AoKS5maXJzdFBhZ2UoKX0pKSx1aSgpLEtnKDEsInN2ZyIsNyksdHAoMiwicGF0aCIsMjIpLCRnKCksJGcoKX1pZigyJnQpe2NvbnN0IHQ9Z3AoKTtKZygibWF0VG9vbHRpcCIsdC5faW50bC5maXJzdFBhZ2VMYWJlbCkoIm1hdFRvb2x0aXBEaXNhYmxlZCIsdC5fcHJldmlvdXNCdXR0b25zRGlzYWJsZWQoKSkoIm1hdFRvb2x0aXBQb3NpdGlvbiIsImFib3ZlIikoImRpc2FibGVkIix0Ll9wcmV2aW91c0J1dHRvbnNEaXNhYmxlZCgpKSxOZygiYXJpYS1sYWJlbCIsdC5faW50bC5maXJzdFBhZ2VMYWJlbCl9fWZ1bmN0aW9uIHRaKHQsbil7aWYoMSZ0KXtjb25zdCB0PW9wKCk7dWkoKSxmaSgpLEtnKDAsImJ1dHRvbiIsMjMpLGNwKCJjbGljayIsKGZ1bmN0aW9uIG4oKXtyZXR1cm4ganIodCksZ3AoKS5sYXN0UGFnZSgpfSkpLHVpKCksS2coMSwic3ZnIiw3KSx0cCgyLCJwYXRoIiwyNCksJGcoKSwkZygpfWlmKDImdCl7Y29uc3QgdD1ncCgpO0pnKCJtYXRUb29sdGlwIix0Ll9pbnRsLmxhc3RQYWdlTGFiZWwpKCJtYXRUb29sdGlwRGlzYWJsZWQiLHQuX25leHRCdXR0b25zRGlzYWJsZWQoKSkoIm1hdFRvb2x0aXBQb3NpdGlvbiIsImFib3ZlIikoImRpc2FibGVkIix0Ll9uZXh0QnV0dG9uc0Rpc2FibGVkKCkpLE5nKCJhcmlhLWxhYmVsIix0Ll9pbnRsLmxhc3RQYWdlTGFiZWwpfX1acS7JtW1vZD14byh7dHlwZTpacX0pLFpxLsm1aW5qPUdlKHtmYWN0b3J5OmZ1bmN0aW9uIHQobil7cmV0dXJuIG5ldyhufHxacSl9LHByb3ZpZGVyczpbanFdLGltcG9ydHM6W1tCUyxQTyx5eix0RV0sdEUsa0FdfSksKCJ1bmRlZmluZWQiPT10eXBlb2YgbmdKaXRNb2RlfHxuZ0ppdE1vZGUpJiZ5byhacSx7ZGVjbGFyYXRpb25zOmZ1bmN0aW9uKCl7cmV0dXJuW1lxLHFxXX0saW1wb3J0czpmdW5jdGlvbigpe3JldHVybltCUyxQTyx5eix0RV19LGV4cG9ydHM6ZnVuY3Rpb24oKXtyZXR1cm5bWXEscXEsdEUsa0FdfX0pO2NsYXNzIG5ae2NvbnN0cnVjdG9yKCl7dGhpcy5jaGFuZ2VzPW5ldyB4LHRoaXMuaXRlbXNQZXJQYWdlTGFiZWw9Ikl0ZW1zIHBlciBwYWdlOiIsdGhpcy5uZXh0UGFnZUxhYmVsPSJOZXh0IHBhZ2UiLHRoaXMucHJldmlvdXNQYWdlTGFiZWw9IlByZXZpb3VzIHBhZ2UiLHRoaXMuZmlyc3RQYWdlTGFiZWw9IkZpcnN0IHBhZ2UiLHRoaXMubGFzdFBhZ2VMYWJlbD0iTGFzdCBwYWdlIix0aGlzLmdldFJhbmdlTGFiZWw9KHQsbixlKT0+e2lmKDA9PWV8fDA9PW4pcmV0dXJuYDAgb2YgJHtlfWA7Y29uc3QgYT10Km47cmV0dXJuYCR7YSsxfSDigJMgJHthPChlPU1hdGgubWF4KGUsMCkpP01hdGgubWluKGErbixlKTphK259IG9mICR7ZX1gfX19blouybVmYWM9ZnVuY3Rpb24gdChuKXtyZXR1cm4gbmV3KG58fG5aKX0sblouybVwcm92PVdlKHtmYWN0b3J5OmZ1bmN0aW9uIHQoKXtyZXR1cm4gbmV3IG5afSx0b2tlbjpuWixwcm92aWRlZEluOiJyb290In0pO2NvbnN0IGVaPXtwcm92aWRlOm5aLGRlcHM6W1tuZXcgTmUsbmV3IExlLG5aXV0sdXNlRmFjdG9yeTpmdW5jdGlvbiBhWih0KXtyZXR1cm4gdHx8bmV3IG5afX0sb1o9bmV3IEZhKCJNQVRfUEFHSU5BVE9SX0RFRkFVTFRfT1BUSU9OUyIpLHJaPW5FKGlFKGNsYXNze30pKTsKLyoqCiAgICAgKiBAbGljZW5zZQogICAgICogQ29weXJpZ2h0IEdvb2dsZSBMTEMgQWxsIFJpZ2h0cyBSZXNlcnZlZC4KICAgICAqCiAgICAgKiBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhbiBNSVQtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQogICAgICogZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZSBhdCBodHRwczovL2FuZ3VsYXIuaW8vbGljZW5zZQogICAgICovY2xhc3MgaVogZXh0ZW5kcyByWntjb25zdHJ1Y3Rvcih0LG4sZSl7aWYoc3VwZXIoKSx0aGlzLl9pbnRsPXQsdGhpcy5fY2hhbmdlRGV0ZWN0b3JSZWY9bix0aGlzLl9wYWdlSW5kZXg9MCx0aGlzLl9sZW5ndGg9MCx0aGlzLl9wYWdlU2l6ZU9wdGlvbnM9W10sdGhpcy5faGlkZVBhZ2VTaXplPSExLHRoaXMuX3Nob3dGaXJzdExhc3RCdXR0b25zPSExLHRoaXMucGFnZT1uZXcgRWYsdGhpcy5faW50bENoYW5nZXM9dC5jaGFuZ2VzLnN1YnNjcmliZSgoKCk9PnRoaXMuX2NoYW5nZURldGVjdG9yUmVmLm1hcmtGb3JDaGVjaygpKSksZSl7Y29uc3R7cGFnZVNpemU6dCxwYWdlU2l6ZU9wdGlvbnM6bixoaWRlUGFnZVNpemU6YSxzaG93Rmlyc3RMYXN0QnV0dG9uczpvLGZvcm1GaWVsZEFwcGVhcmFuY2U6cn09ZTtudWxsIT10JiYodGhpcy5fcGFnZVNpemU9dCksbnVsbCE9biYmKHRoaXMuX3BhZ2VTaXplT3B0aW9ucz1uKSxudWxsIT1hJiYodGhpcy5faGlkZVBhZ2VTaXplPWEpLG51bGwhPW8mJih0aGlzLl9zaG93Rmlyc3RMYXN0QnV0dG9ucz1vKSxudWxsIT1yJiYodGhpcy5fZm9ybUZpZWxkQXBwZWFyYW5jZT1yKX19Z2V0IHBhZ2VJbmRleCgpe3JldHVybiB0aGlzLl9wYWdlSW5kZXh9c2V0IHBhZ2VJbmRleCh0KXt0aGlzLl9wYWdlSW5kZXg9TWF0aC5tYXgoWXcodCksMCksdGhpcy5fY2hhbmdlRGV0ZWN0b3JSZWYubWFya0ZvckNoZWNrKCl9Z2V0IGxlbmd0aCgpe3JldHVybiB0aGlzLl9sZW5ndGh9c2V0IGxlbmd0aCh0KXt0aGlzLl9sZW5ndGg9WXcodCksdGhpcy5fY2hhbmdlRGV0ZWN0b3JSZWYubWFya0ZvckNoZWNrKCl9Z2V0IHBhZ2VTaXplKCl7cmV0dXJuIHRoaXMuX3BhZ2VTaXplfXNldCBwYWdlU2l6ZSh0KXt0aGlzLl9wYWdlU2l6ZT1NYXRoLm1heChZdyh0KSwwKSx0aGlzLl91cGRhdGVEaXNwbGF5ZWRQYWdlU2l6ZU9wdGlvbnMoKX1nZXQgcGFnZVNpemVPcHRpb25zKCl7cmV0dXJuIHRoaXMuX3BhZ2VTaXplT3B0aW9uc31zZXQgcGFnZVNpemVPcHRpb25zKHQpe3RoaXMuX3BhZ2VTaXplT3B0aW9ucz0odHx8W10pLm1hcCgodD0+WXcodCkpKSx0aGlzLl91cGRhdGVEaXNwbGF5ZWRQYWdlU2l6ZU9wdGlvbnMoKX1nZXQgaGlkZVBhZ2VTaXplKCl7cmV0dXJuIHRoaXMuX2hpZGVQYWdlU2l6ZX1zZXQgaGlkZVBhZ2VTaXplKHQpe3RoaXMuX2hpZGVQYWdlU2l6ZT1Hdyh0KX1nZXQgc2hvd0ZpcnN0TGFzdEJ1dHRvbnMoKXtyZXR1cm4gdGhpcy5fc2hvd0ZpcnN0TGFzdEJ1dHRvbnN9c2V0IHNob3dGaXJzdExhc3RCdXR0b25zKHQpe3RoaXMuX3Nob3dGaXJzdExhc3RCdXR0b25zPUd3KHQpfW5nT25Jbml0KCl7dGhpcy5faW5pdGlhbGl6ZWQ9ITAsdGhpcy5fdXBkYXRlRGlzcGxheWVkUGFnZVNpemVPcHRpb25zKCksdGhpcy5fbWFya0luaXRpYWxpemVkKCl9bmdPbkRlc3Ryb3koKXt0aGlzLl9pbnRsQ2hhbmdlcy51bnN1YnNjcmliZSgpfW5leHRQYWdlKCl7aWYoIXRoaXMuaGFzTmV4dFBhZ2UoKSlyZXR1cm47Y29uc3QgdD10aGlzLnBhZ2VJbmRleDt0aGlzLnBhZ2VJbmRleCsrLHRoaXMuX2VtaXRQYWdlRXZlbnQodCl9cHJldmlvdXNQYWdlKCl7aWYoIXRoaXMuaGFzUHJldmlvdXNQYWdlKCkpcmV0dXJuO2NvbnN0IHQ9dGhpcy5wYWdlSW5kZXg7dGhpcy5wYWdlSW5kZXgtLSx0aGlzLl9lbWl0UGFnZUV2ZW50KHQpfWZpcnN0UGFnZSgpe2lmKCF0aGlzLmhhc1ByZXZpb3VzUGFnZSgpKXJldHVybjtjb25zdCB0PXRoaXMucGFnZUluZGV4O3RoaXMucGFnZUluZGV4PTAsdGhpcy5fZW1pdFBhZ2VFdmVudCh0KX1sYXN0UGFnZSgpe2lmKCF0aGlzLmhhc05leHRQYWdlKCkpcmV0dXJuO2NvbnN0IHQ9dGhpcy5wYWdlSW5kZXg7dGhpcy5wYWdlSW5kZXg9dGhpcy5nZXROdW1iZXJPZlBhZ2VzKCktMSx0aGlzLl9lbWl0UGFnZUV2ZW50KHQpfWhhc1ByZXZpb3VzUGFnZSgpe3JldHVybiB0aGlzLnBhZ2VJbmRleD49MSYmMCE9dGhpcy5wYWdlU2l6ZX1oYXNOZXh0UGFnZSgpe2NvbnN0IHQ9dGhpcy5nZXROdW1iZXJPZlBhZ2VzKCktMTtyZXR1cm4gdGhpcy5wYWdlSW5kZXg8dCYmMCE9dGhpcy5wYWdlU2l6ZX1nZXROdW1iZXJPZlBhZ2VzKCl7cmV0dXJuIHRoaXMucGFnZVNpemU/TWF0aC5jZWlsKHRoaXMubGVuZ3RoL3RoaXMucGFnZVNpemUpOjB9X2NoYW5nZVBhZ2VTaXplKHQpe2NvbnN0IG49dGhpcy5wYWdlSW5kZXg7dGhpcy5wYWdlSW5kZXg9TWF0aC5mbG9vcih0aGlzLnBhZ2VJbmRleCp0aGlzLnBhZ2VTaXplL3QpfHwwLHRoaXMucGFnZVNpemU9dCx0aGlzLl9lbWl0UGFnZUV2ZW50KG4pfV9uZXh0QnV0dG9uc0Rpc2FibGVkKCl7cmV0dXJuIHRoaXMuZGlzYWJsZWR8fCF0aGlzLmhhc05leHRQYWdlKCl9X3ByZXZpb3VzQnV0dG9uc0Rpc2FibGVkKCl7cmV0dXJuIHRoaXMuZGlzYWJsZWR8fCF0aGlzLmhhc1ByZXZpb3VzUGFnZSgpfV91cGRhdGVEaXNwbGF5ZWRQYWdlU2l6ZU9wdGlvbnMoKXt0aGlzLl9pbml0aWFsaXplZCYmKHRoaXMucGFnZVNpemV8fCh0aGlzLl9wYWdlU2l6ZT0wIT10aGlzLnBhZ2VTaXplT3B0aW9ucy5sZW5ndGg/dGhpcy5wYWdlU2l6ZU9wdGlvbnNbMF06NTApLHRoaXMuX2Rpc3BsYXllZFBhZ2VTaXplT3B0aW9ucz10aGlzLnBhZ2VTaXplT3B0aW9ucy5zbGljZSgpLC0xPT09dGhpcy5fZGlzcGxheWVkUGFnZVNpemVPcHRpb25zLmluZGV4T2YodGhpcy5wYWdlU2l6ZSkmJnRoaXMuX2Rpc3BsYXllZFBhZ2VTaXplT3B0aW9ucy5wdXNoKHRoaXMucGFnZVNpemUpLHRoaXMuX2Rpc3BsYXllZFBhZ2VTaXplT3B0aW9ucy5zb3J0KCgodCxuKT0+dC1uKSksdGhpcy5fY2hhbmdlRGV0ZWN0b3JSZWYubWFya0ZvckNoZWNrKCkpfV9lbWl0UGFnZUV2ZW50KHQpe3RoaXMucGFnZS5lbWl0KHtwcmV2aW91c1BhZ2VJbmRleDp0LHBhZ2VJbmRleDp0aGlzLnBhZ2VJbmRleCxwYWdlU2l6ZTp0aGlzLnBhZ2VTaXplLGxlbmd0aDp0aGlzLmxlbmd0aH0pfX1pWi7JtWZhYz1mdW5jdGlvbiB0KG4pe3JldHVybiBuZXcobnx8aVopKFpnKG5aKSxaZyhWbSksWmcob1osOCkpfSxpWi7JtWNtcD1fbyh7dHlwZTppWixzZWxlY3RvcnM6W1sibWF0LXBhZ2luYXRvciJdXSxob3N0QXR0cnM6WzEsIm1hdC1wYWdpbmF0b3IiXSxpbnB1dHM6e2Rpc2FibGVkOiJkaXNhYmxlZCIscGFnZUluZGV4OiJwYWdlSW5kZXgiLGxlbmd0aDoibGVuZ3RoIixwYWdlU2l6ZToicGFnZVNpemUiLHBhZ2VTaXplT3B0aW9uczoicGFnZVNpemVPcHRpb25zIixoaWRlUGFnZVNpemU6ImhpZGVQYWdlU2l6ZSIsc2hvd0ZpcnN0TGFzdEJ1dHRvbnM6InNob3dGaXJzdExhc3RCdXR0b25zIixjb2xvcjoiY29sb3IifSxvdXRwdXRzOntwYWdlOiJwYWdlIn0sZXhwb3J0QXM6WyJtYXRQYWdpbmF0b3IiXSxmZWF0dXJlczpbaGddLGRlY2xzOjE0LHZhcnM6MTQsY29uc3RzOltbMSwibWF0LXBhZ2luYXRvci1vdXRlci1jb250YWluZXIiXSxbMSwibWF0LXBhZ2luYXRvci1jb250YWluZXIiXSxbImNsYXNzIiwibWF0LXBhZ2luYXRvci1wYWdlLXNpemUiLDQsIm5nSWYiXSxbMSwibWF0LXBhZ2luYXRvci1yYW5nZS1hY3Rpb25zIl0sWzEsIm1hdC1wYWdpbmF0b3ItcmFuZ2UtbGFiZWwiXSxbIm1hdC1pY29uLWJ1dHRvbiIsIiIsInR5cGUiLCJidXR0b24iLCJjbGFzcyIsIm1hdC1wYWdpbmF0b3ItbmF2aWdhdGlvbi1maXJzdCIsMywibWF0VG9vbHRpcCIsIm1hdFRvb2x0aXBEaXNhYmxlZCIsIm1hdFRvb2x0aXBQb3NpdGlvbiIsImRpc2FibGVkIiwiY2xpY2siLDQsIm5nSWYiXSxbIm1hdC1pY29uLWJ1dHRvbiIsIiIsInR5cGUiLCJidXR0b24iLDEsIm1hdC1wYWdpbmF0b3ItbmF2aWdhdGlvbi1wcmV2aW91cyIsMywibWF0VG9vbHRpcCIsIm1hdFRvb2x0aXBEaXNhYmxlZCIsIm1hdFRvb2x0aXBQb3NpdGlvbiIsImRpc2FibGVkIiwiY2xpY2siXSxbInZpZXdCb3giLCIwIDAgMjQgMjQiLCJmb2N1c2FibGUiLCJmYWxzZSIsMSwibWF0LXBhZ2luYXRvci1pY29uIl0sWyJkIiwiTTE1LjQxIDcuNDFMMTQgNmwtNiA2IDYgNiAxLjQxLTEuNDFMMTAuODMgMTJ6Il0sWyJtYXQtaWNvbi1idXR0b24iLCIiLCJ0eXBlIiwiYnV0dG9uIiwxLCJtYXQtcGFnaW5hdG9yLW5hdmlnYXRpb24tbmV4dCIsMywibWF0VG9vbHRpcCIsIm1hdFRvb2x0aXBEaXNhYmxlZCIsIm1hdFRvb2x0aXBQb3NpdGlvbiIsImRpc2FibGVkIiwiY2xpY2siXSxbImQiLCJNMTAgNkw4LjU5IDcuNDEgMTMuMTcgMTJsLTQuNTggNC41OUwxMCAxOGw2LTZ6Il0sWyJtYXQtaWNvbi1idXR0b24iLCIiLCJ0eXBlIiwiYnV0dG9uIiwiY2xhc3MiLCJtYXQtcGFnaW5hdG9yLW5hdmlnYXRpb24tbGFzdCIsMywibWF0VG9vbHRpcCIsIm1hdFRvb2x0aXBEaXNhYmxlZCIsIm1hdFRvb2x0aXBQb3NpdGlvbiIsImRpc2FibGVkIiwiY2xpY2siLDQsIm5nSWYiXSxbMSwibWF0LXBhZ2luYXRvci1wYWdlLXNpemUiXSxbMSwibWF0LXBhZ2luYXRvci1wYWdlLXNpemUtbGFiZWwiXSxbImNsYXNzIiwibWF0LXBhZ2luYXRvci1wYWdlLXNpemUtc2VsZWN0IiwzLCJhcHBlYXJhbmNlIiwiY29sb3IiLDQsIm5nSWYiXSxbImNsYXNzIiwibWF0LXBhZ2luYXRvci1wYWdlLXNpemUtdmFsdWUiLDQsIm5nSWYiXSxbMSwibWF0LXBhZ2luYXRvci1wYWdlLXNpemUtc2VsZWN0IiwzLCJhcHBlYXJhbmNlIiwiY29sb3IiXSxbMywidmFsdWUiLCJkaXNhYmxlZCIsImFyaWEtbGFiZWwiLCJzZWxlY3Rpb25DaGFuZ2UiXSxbMywidmFsdWUiLDQsIm5nRm9yIiwibmdGb3JPZiJdLFszLCJ2YWx1ZSJdLFsxLCJtYXQtcGFnaW5hdG9yLXBhZ2Utc2l6ZS12YWx1ZSJdLFsibWF0LWljb24tYnV0dG9uIiwiIiwidHlwZSIsImJ1dHRvbiIsMSwibWF0LXBhZ2luYXRvci1uYXZpZ2F0aW9uLWZpcnN0IiwzLCJtYXRUb29sdGlwIiwibWF0VG9vbHRpcERpc2FibGVkIiwibWF0VG9vbHRpcFBvc2l0aW9uIiwiZGlzYWJsZWQiLCJjbGljayJdLFsiZCIsIk0xOC40MSAxNi41OUwxMy44MiAxMmw0LjU5LTQuNTlMMTcgNmwtNiA2IDYgNnpNNiA2aDJ2MTJINnoiXSxbIm1hdC1pY29uLWJ1dHRvbiIsIiIsInR5cGUiLCJidXR0b24iLDEsIm1hdC1wYWdpbmF0b3ItbmF2aWdhdGlvbi1sYXN0IiwzLCJtYXRUb29sdGlwIiwibWF0VG9vbHRpcERpc2FibGVkIiwibWF0VG9vbHRpcFBvc2l0aW9uIiwiZGlzYWJsZWQiLCJjbGljayJdLFsiZCIsIk01LjU5IDcuNDFMMTAuMTggMTJsLTQuNTkgNC41OUw3IDE4bDYtNi02LTZ6TTE2IDZoMnYxMmgtMnoiXV0sdGVtcGxhdGU6ZnVuY3Rpb24gdChuLGUpezEmbiYmKEtnKDAsImRpdiIsMCksS2coMSwiZGl2IiwxKSxZZygyLEtxLDUsMywiZGl2IiwyKSxLZygzLCJkaXYiLDMpLEtnKDQsImRpdiIsNCksSnAoNSksJGcoKSxZZyg2LCRxLDMsNSwiYnV0dG9uIiw1KSxLZyg3LCJidXR0b24iLDYpLGNwKCJjbGljayIsKGZ1bmN0aW9uIHQoKXtyZXR1cm4gZS5wcmV2aW91c1BhZ2UoKX0pKSx1aSgpLEtnKDgsInN2ZyIsNyksdHAoOSwicGF0aCIsOCksJGcoKSwkZygpLGZpKCksS2coMTAsImJ1dHRvbiIsOSksY3AoImNsaWNrIiwoZnVuY3Rpb24gdCgpe3JldHVybiBlLm5leHRQYWdlKCl9KSksdWkoKSxLZygxMSwic3ZnIiw3KSx0cCgxMiwicGF0aCIsMTApLCRnKCksJGcoKSxZZygxMyx0WiwzLDUsImJ1dHRvbiIsMTEpLCRnKCksJGcoKSwkZygpKSwyJm4mJih3cygyKSxKZygibmdJZiIsIWUuaGlkZVBhZ2VTaXplKSx3cygzKSxLcCgiICIsZS5faW50bC5nZXRSYW5nZUxhYmVsKGUucGFnZUluZGV4LGUucGFnZVNpemUsZS5sZW5ndGgpLCIgIiksd3MoMSksSmcoIm5nSWYiLGUuc2hvd0ZpcnN0TGFzdEJ1dHRvbnMpLHdzKDEpLEpnKCJtYXRUb29sdGlwIixlLl9pbnRsLnByZXZpb3VzUGFnZUxhYmVsKSgibWF0VG9vbHRpcERpc2FibGVkIixlLl9wcmV2aW91c0J1dHRvbnNEaXNhYmxlZCgpKSgibWF0VG9vbHRpcFBvc2l0aW9uIiwiYWJvdmUiKSgiZGlzYWJsZWQiLGUuX3ByZXZpb3VzQnV0dG9uc0Rpc2FibGVkKCkpLE5nKCJhcmlhLWxhYmVsIixlLl9pbnRsLnByZXZpb3VzUGFnZUxhYmVsKSx3cygzKSxKZygibWF0VG9vbHRpcCIsZS5faW50bC5uZXh0UGFnZUxhYmVsKSgibWF0VG9vbHRpcERpc2FibGVkIixlLl9uZXh0QnV0dG9uc0Rpc2FibGVkKCkpKCJtYXRUb29sdGlwUG9zaXRpb24iLCJhYm92ZSIpKCJkaXNhYmxlZCIsZS5fbmV4dEJ1dHRvbnNEaXNhYmxlZCgpKSxOZygiYXJpYS1sYWJlbCIsZS5faW50bC5uZXh0UGFnZUxhYmVsKSx3cygzKSxKZygibmdJZiIsZS5zaG93Rmlyc3RMYXN0QnV0dG9ucykpfSxkaXJlY3RpdmVzOltXTSxlQSxZcSxfRixqSCxqTSxZRV0sc3R5bGVzOlsiLm1hdC1wYWdpbmF0b3J7ZGlzcGxheTpibG9ja30ubWF0LXBhZ2luYXRvci1vdXRlci1jb250YWluZXJ7ZGlzcGxheTpmbGV4fS5tYXQtcGFnaW5hdG9yLWNvbnRhaW5lcntkaXNwbGF5OmZsZXg7YWxpZ24taXRlbXM6Y2VudGVyO2p1c3RpZnktY29udGVudDpmbGV4LWVuZDtwYWRkaW5nOjAgOHB4O2ZsZXgtd3JhcDp3cmFwLXJldmVyc2U7d2lkdGg6MTAwJX0ubWF0LXBhZ2luYXRvci1wYWdlLXNpemV7ZGlzcGxheTpmbGV4O2FsaWduLWl0ZW1zOmJhc2VsaW5lO21hcmdpbi1yaWdodDo4cHh9W2Rpcj1ydGxdIC5tYXQtcGFnaW5hdG9yLXBhZ2Utc2l6ZXttYXJnaW4tcmlnaHQ6MDttYXJnaW4tbGVmdDo4cHh9Lm1hdC1wYWdpbmF0b3ItcGFnZS1zaXplLWxhYmVse21hcmdpbjowIDRweH0ubWF0LXBhZ2luYXRvci1wYWdlLXNpemUtc2VsZWN0e21hcmdpbjo2cHggNHB4IDAgNHB4O3dpZHRoOjU2cHh9Lm1hdC1wYWdpbmF0b3ItcGFnZS1zaXplLXNlbGVjdC5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLW91dGxpbmV7d2lkdGg6NjRweH0ubWF0LXBhZ2luYXRvci1wYWdlLXNpemUtc2VsZWN0Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtZmlsbHt3aWR0aDo2NHB4fS5tYXQtcGFnaW5hdG9yLXJhbmdlLWxhYmVse21hcmdpbjowIDMycHggMCAyNHB4fS5tYXQtcGFnaW5hdG9yLXJhbmdlLWFjdGlvbnN7ZGlzcGxheTpmbGV4O2FsaWduLWl0ZW1zOmNlbnRlcn0ubWF0LXBhZ2luYXRvci1pY29ue3dpZHRoOjI4cHg7ZmlsbDpjdXJyZW50Q29sb3J9W2Rpcj1ydGxdIC5tYXQtcGFnaW5hdG9yLWljb257dHJhbnNmb3JtOnJvdGF0ZSgxODBkZWcpfVxuIl0sZW5jYXBzdWxhdGlvbjoyLGNoYW5nZURldGVjdGlvbjowfSksaVouY3RvclBhcmFtZXRlcnM9KCk9Plt7dHlwZTpuWn0se3R5cGU6Vm19LHt0eXBlOnZvaWQgMCxkZWNvcmF0b3JzOlt7dHlwZTpOZX0se3R5cGU6SWUsYXJnczpbb1pdfV19XSxpWi5wcm9wRGVjb3JhdG9ycz17Y29sb3I6W3t0eXBlOmZffV0scGFnZUluZGV4Olt7dHlwZTpmX31dLGxlbmd0aDpbe3R5cGU6Zl99XSxwYWdlU2l6ZTpbe3R5cGU6Zl99XSxwYWdlU2l6ZU9wdGlvbnM6W3t0eXBlOmZffV0saGlkZVBhZ2VTaXplOlt7dHlwZTpmX31dLHNob3dGaXJzdExhc3RCdXR0b25zOlt7dHlwZTpmX31dLHBhZ2U6W3t0eXBlOmhffV19OwovKioKICAgICAqIEBsaWNlbnNlCiAgICAgKiBDb3B5cmlnaHQgR29vZ2xlIExMQyBBbGwgUmlnaHRzIFJlc2VydmVkLgogICAgICoKICAgICAqIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGFuIE1JVC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCiAgICAgKiBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlIGF0IGh0dHBzOi8vYW5ndWxhci5pby9saWNlbnNlCiAgICAgKi8KY2xhc3MgY1p7fWZ1bmN0aW9uIHNaKHQsbil7aWYoMSZ0JiYodWkoKSx0cCgwLCJjaXJjbGUiLDMpKSwyJnQpe2NvbnN0IHQ9Z3AoKTtUcCgiYW5pbWF0aW9uLW5hbWUiLCJtYXQtcHJvZ3Jlc3Mtc3Bpbm5lci1zdHJva2Utcm90YXRlLSIrdC5fc3Bpbm5lckFuaW1hdGlvbkxhYmVsKSgic3Ryb2tlLWRhc2hvZmZzZXQiLHQuX2dldFN0cm9rZURhc2hPZmZzZXQoKSwicHgiKSgic3Ryb2tlLWRhc2hhcnJheSIsdC5fZ2V0U3Ryb2tlQ2lyY3VtZmVyZW5jZSgpLCJweCIpKCJzdHJva2Utd2lkdGgiLHQuX2dldENpcmNsZVN0cm9rZVdpZHRoKCksIiUiKSxOZygiciIsdC5fZ2V0Q2lyY2xlUmFkaXVzKCkpfX1mdW5jdGlvbiBsWih0LG4pe2lmKDEmdCYmKHVpKCksdHAoMCwiY2lyY2xlIiwzKSksMiZ0KXtjb25zdCB0PWdwKCk7VHAoInN0cm9rZS1kYXNob2Zmc2V0Iix0Ll9nZXRTdHJva2VEYXNoT2Zmc2V0KCksInB4IikoInN0cm9rZS1kYXNoYXJyYXkiLHQuX2dldFN0cm9rZUNpcmN1bWZlcmVuY2UoKSwicHgiKSgic3Ryb2tlLXdpZHRoIix0Ll9nZXRDaXJjbGVTdHJva2VXaWR0aCgpLCIlIiksTmcoInIiLHQuX2dldENpcmNsZVJhZGl1cygpKX19ZnVuY3Rpb24gbVoodCxuKXtpZigxJnQmJih1aSgpLHRwKDAsImNpcmNsZSIsMykpLDImdCl7Y29uc3QgdD1ncCgpO1RwKCJhbmltYXRpb24tbmFtZSIsIm1hdC1wcm9ncmVzcy1zcGlubmVyLXN0cm9rZS1yb3RhdGUtIit0Ll9zcGlubmVyQW5pbWF0aW9uTGFiZWwpKCJzdHJva2UtZGFzaG9mZnNldCIsdC5fZ2V0U3Ryb2tlRGFzaE9mZnNldCgpLCJweCIpKCJzdHJva2UtZGFzaGFycmF5Iix0Ll9nZXRTdHJva2VDaXJjdW1mZXJlbmNlKCksInB4IikoInN0cm9rZS13aWR0aCIsdC5fZ2V0Q2lyY2xlU3Ryb2tlV2lkdGgoKSwiJSIpLE5nKCJyIix0Ll9nZXRDaXJjbGVSYWRpdXMoKSl9fWZ1bmN0aW9uIGRaKHQsbil7aWYoMSZ0JiYodWkoKSx0cCgwLCJjaXJjbGUiLDMpKSwyJnQpe2NvbnN0IHQ9Z3AoKTtUcCgic3Ryb2tlLWRhc2hvZmZzZXQiLHQuX2dldFN0cm9rZURhc2hPZmZzZXQoKSwicHgiKSgic3Ryb2tlLWRhc2hhcnJheSIsdC5fZ2V0U3Ryb2tlQ2lyY3VtZmVyZW5jZSgpLCJweCIpKCJzdHJva2Utd2lkdGgiLHQuX2dldENpcmNsZVN0cm9rZVdpZHRoKCksIiUiKSxOZygiciIsdC5fZ2V0Q2lyY2xlUmFkaXVzKCkpfX1jWi7JtW1vZD14byh7dHlwZTpjWn0pLGNaLsm1aW5qPUdlKHtmYWN0b3J5OmZ1bmN0aW9uIHQobil7cmV0dXJuIG5ldyhufHxjWil9LHByb3ZpZGVyczpbZVpdLGltcG9ydHM6W1tQTyxvQSxVSCxacV1dfSksKCJ1bmRlZmluZWQiPT10eXBlb2YgbmdKaXRNb2RlfHxuZ0ppdE1vZGUpJiZ5byhjWix7ZGVjbGFyYXRpb25zOmZ1bmN0aW9uKCl7cmV0dXJuW2laXX0saW1wb3J0czpmdW5jdGlvbigpe3JldHVybltQTyxvQSxVSCxacV19LGV4cG9ydHM6ZnVuY3Rpb24oKXtyZXR1cm5baVpdfX0pO2NvbnN0IGdaPSIubWF0LXByb2dyZXNzLXNwaW5uZXJ7ZGlzcGxheTpibG9jaztwb3NpdGlvbjpyZWxhdGl2ZX0ubWF0LXByb2dyZXNzLXNwaW5uZXIgc3Zne3Bvc2l0aW9uOmFic29sdXRlO3RyYW5zZm9ybTpyb3RhdGUoLTkwZGVnKTt0b3A6MDtsZWZ0OjA7dHJhbnNmb3JtLW9yaWdpbjpjZW50ZXI7b3ZlcmZsb3c6dmlzaWJsZX0ubWF0LXByb2dyZXNzLXNwaW5uZXIgY2lyY2xle2ZpbGw6dHJhbnNwYXJlbnQ7dHJhbnNmb3JtLW9yaWdpbjpjZW50ZXI7dHJhbnNpdGlvbjpzdHJva2UtZGFzaG9mZnNldCAyMjVtcyBsaW5lYXJ9Ll9tYXQtYW5pbWF0aW9uLW5vb3BhYmxlLm1hdC1wcm9ncmVzcy1zcGlubmVyIGNpcmNsZXt0cmFuc2l0aW9uOm5vbmU7YW5pbWF0aW9uOm5vbmV9LmNkay1oaWdoLWNvbnRyYXN0LWFjdGl2ZSAubWF0LXByb2dyZXNzLXNwaW5uZXIgY2lyY2xle3N0cm9rZTpjdXJyZW50Q29sb3J9Lm1hdC1wcm9ncmVzcy1zcGlubmVyLm1hdC1wcm9ncmVzcy1zcGlubmVyLWluZGV0ZXJtaW5hdGUtYW5pbWF0aW9uW21vZGU9aW5kZXRlcm1pbmF0ZV17YW5pbWF0aW9uOm1hdC1wcm9ncmVzcy1zcGlubmVyLWxpbmVhci1yb3RhdGUgMjAwMG1zIGxpbmVhciBpbmZpbml0ZX0uX21hdC1hbmltYXRpb24tbm9vcGFibGUubWF0LXByb2dyZXNzLXNwaW5uZXIubWF0LXByb2dyZXNzLXNwaW5uZXItaW5kZXRlcm1pbmF0ZS1hbmltYXRpb25bbW9kZT1pbmRldGVybWluYXRlXXt0cmFuc2l0aW9uOm5vbmU7YW5pbWF0aW9uOm5vbmV9Lm1hdC1wcm9ncmVzcy1zcGlubmVyLm1hdC1wcm9ncmVzcy1zcGlubmVyLWluZGV0ZXJtaW5hdGUtYW5pbWF0aW9uW21vZGU9aW5kZXRlcm1pbmF0ZV0gY2lyY2xle3RyYW5zaXRpb24tcHJvcGVydHk6c3Ryb2tlO2FuaW1hdGlvbi1kdXJhdGlvbjo0MDAwbXM7YW5pbWF0aW9uLXRpbWluZy1mdW5jdGlvbjpjdWJpYy1iZXppZXIoMC4zNSwgMCwgMC4yNSwgMSk7YW5pbWF0aW9uLWl0ZXJhdGlvbi1jb3VudDppbmZpbml0ZX0uX21hdC1hbmltYXRpb24tbm9vcGFibGUubWF0LXByb2dyZXNzLXNwaW5uZXIubWF0LXByb2dyZXNzLXNwaW5uZXItaW5kZXRlcm1pbmF0ZS1hbmltYXRpb25bbW9kZT1pbmRldGVybWluYXRlXSBjaXJjbGV7dHJhbnNpdGlvbjpub25lO2FuaW1hdGlvbjpub25lfS5tYXQtcHJvZ3Jlc3Mtc3Bpbm5lci5tYXQtcHJvZ3Jlc3Mtc3Bpbm5lci1pbmRldGVybWluYXRlLWZhbGxiYWNrLWFuaW1hdGlvblttb2RlPWluZGV0ZXJtaW5hdGVde2FuaW1hdGlvbjptYXQtcHJvZ3Jlc3Mtc3Bpbm5lci1zdHJva2Utcm90YXRlLWZhbGxiYWNrIDEwMDAwbXMgY3ViaWMtYmV6aWVyKDAuODcsIDAuMDMsIDAuMzMsIDEpIGluZmluaXRlfS5fbWF0LWFuaW1hdGlvbi1ub29wYWJsZS5tYXQtcHJvZ3Jlc3Mtc3Bpbm5lci5tYXQtcHJvZ3Jlc3Mtc3Bpbm5lci1pbmRldGVybWluYXRlLWZhbGxiYWNrLWFuaW1hdGlvblttb2RlPWluZGV0ZXJtaW5hdGVde3RyYW5zaXRpb246bm9uZTthbmltYXRpb246bm9uZX0ubWF0LXByb2dyZXNzLXNwaW5uZXIubWF0LXByb2dyZXNzLXNwaW5uZXItaW5kZXRlcm1pbmF0ZS1mYWxsYmFjay1hbmltYXRpb25bbW9kZT1pbmRldGVybWluYXRlXSBjaXJjbGV7dHJhbnNpdGlvbi1wcm9wZXJ0eTpzdHJva2V9Ll9tYXQtYW5pbWF0aW9uLW5vb3BhYmxlLm1hdC1wcm9ncmVzcy1zcGlubmVyLm1hdC1wcm9ncmVzcy1zcGlubmVyLWluZGV0ZXJtaW5hdGUtZmFsbGJhY2stYW5pbWF0aW9uW21vZGU9aW5kZXRlcm1pbmF0ZV0gY2lyY2xle3RyYW5zaXRpb246bm9uZTthbmltYXRpb246bm9uZX1Aa2V5ZnJhbWVzIG1hdC1wcm9ncmVzcy1zcGlubmVyLWxpbmVhci1yb3RhdGV7MCV7dHJhbnNmb3JtOnJvdGF0ZSgwZGVnKX0xMDAle3RyYW5zZm9ybTpyb3RhdGUoMzYwZGVnKX19QGtleWZyYW1lcyBtYXQtcHJvZ3Jlc3Mtc3Bpbm5lci1zdHJva2Utcm90YXRlLTEwMHswJXtzdHJva2UtZGFzaG9mZnNldDoyNjguNjA2MTcxNTc1cHg7dHJhbnNmb3JtOnJvdGF0ZSgwKX0xMi41JXtzdHJva2UtZGFzaG9mZnNldDo1Ni41NDg2Njc3cHg7dHJhbnNmb3JtOnJvdGF0ZSgwKX0xMi41MDAxJXtzdHJva2UtZGFzaG9mZnNldDo1Ni41NDg2Njc3cHg7dHJhbnNmb3JtOnJvdGF0ZVgoMTgwZGVnKSByb3RhdGUoNzIuNWRlZyl9MjUle3N0cm9rZS1kYXNob2Zmc2V0OjI2OC42MDYxNzE1NzVweDt0cmFuc2Zvcm06cm90YXRlWCgxODBkZWcpIHJvdGF0ZSg3Mi41ZGVnKX0yNS4wMDAxJXtzdHJva2UtZGFzaG9mZnNldDoyNjguNjA2MTcxNTc1cHg7dHJhbnNmb3JtOnJvdGF0ZSgyNzBkZWcpfTM3LjUle3N0cm9rZS1kYXNob2Zmc2V0OjU2LjU0ODY2NzdweDt0cmFuc2Zvcm06cm90YXRlKDI3MGRlZyl9MzcuNTAwMSV7c3Ryb2tlLWRhc2hvZmZzZXQ6NTYuNTQ4NjY3N3B4O3RyYW5zZm9ybTpyb3RhdGVYKDE4MGRlZykgcm90YXRlKDE2MS41ZGVnKX01MCV7c3Ryb2tlLWRhc2hvZmZzZXQ6MjY4LjYwNjE3MTU3NXB4O3RyYW5zZm9ybTpyb3RhdGVYKDE4MGRlZykgcm90YXRlKDE2MS41ZGVnKX01MC4wMDAxJXtzdHJva2UtZGFzaG9mZnNldDoyNjguNjA2MTcxNTc1cHg7dHJhbnNmb3JtOnJvdGF0ZSgxODBkZWcpfTYyLjUle3N0cm9rZS1kYXNob2Zmc2V0OjU2LjU0ODY2NzdweDt0cmFuc2Zvcm06cm90YXRlKDE4MGRlZyl9NjIuNTAwMSV7c3Ryb2tlLWRhc2hvZmZzZXQ6NTYuNTQ4NjY3N3B4O3RyYW5zZm9ybTpyb3RhdGVYKDE4MGRlZykgcm90YXRlKDI1MS41ZGVnKX03NSV7c3Ryb2tlLWRhc2hvZmZzZXQ6MjY4LjYwNjE3MTU3NXB4O3RyYW5zZm9ybTpyb3RhdGVYKDE4MGRlZykgcm90YXRlKDI1MS41ZGVnKX03NS4wMDAxJXtzdHJva2UtZGFzaG9mZnNldDoyNjguNjA2MTcxNTc1cHg7dHJhbnNmb3JtOnJvdGF0ZSg5MGRlZyl9ODcuNSV7c3Ryb2tlLWRhc2hvZmZzZXQ6NTYuNTQ4NjY3N3B4O3RyYW5zZm9ybTpyb3RhdGUoOTBkZWcpfTg3LjUwMDEle3N0cm9rZS1kYXNob2Zmc2V0OjU2LjU0ODY2NzdweDt0cmFuc2Zvcm06cm90YXRlWCgxODBkZWcpIHJvdGF0ZSgzNDEuNWRlZyl9MTAwJXtzdHJva2UtZGFzaG9mZnNldDoyNjguNjA2MTcxNTc1cHg7dHJhbnNmb3JtOnJvdGF0ZVgoMTgwZGVnKSByb3RhdGUoMzQxLjVkZWcpfX1Aa2V5ZnJhbWVzIG1hdC1wcm9ncmVzcy1zcGlubmVyLXN0cm9rZS1yb3RhdGUtZmFsbGJhY2t7MCV7dHJhbnNmb3JtOnJvdGF0ZSgwZGVnKX0yNSV7dHJhbnNmb3JtOnJvdGF0ZSgxMTcwZGVnKX01MCV7dHJhbnNmb3JtOnJvdGF0ZSgyMzQwZGVnKX03NSV7dHJhbnNmb3JtOnJvdGF0ZSgzNTEwZGVnKX0xMDAle3RyYW5zZm9ybTpyb3RhdGUoNDY4MGRlZyl9fVxuIixwWj1lRShjbGFzc3tjb25zdHJ1Y3Rvcih0KXt0aGlzLl9lbGVtZW50UmVmPXR9fSwicHJpbWFyeSIpLGJaPW5ldyBGYSgibWF0LXByb2dyZXNzLXNwaW5uZXItZGVmYXVsdC1vcHRpb25zIix7cHJvdmlkZWRJbjoicm9vdCIsZmFjdG9yeTpmdW5jdGlvbiB1Wigpe3JldHVybntkaWFtZXRlcjoxMDB9fX0pO2NsYXNzIGZaIGV4dGVuZHMgcFp7Y29uc3RydWN0b3IodCxuLGUsYSxvKXtzdXBlcih0KSx0aGlzLl9lbGVtZW50UmVmPXQsdGhpcy5fZG9jdW1lbnQ9ZSx0aGlzLl9kaWFtZXRlcj0xMDAsdGhpcy5fdmFsdWU9MCx0aGlzLl9mYWxsYmFja0FuaW1hdGlvbj0hMSx0aGlzLm1vZGU9ImRldGVybWluYXRlIjtjb25zdCByPWZaLl9kaWFtZXRlcnM7dGhpcy5fc3Bpbm5lckFuaW1hdGlvbkxhYmVsPXRoaXMuX2dldFNwaW5uZXJBbmltYXRpb25MYWJlbCgpLHIuaGFzKGUuaGVhZCl8fHIuc2V0KGUuaGVhZCxuZXcgU2V0KFsxMDBdKSksdGhpcy5fZmFsbGJhY2tBbmltYXRpb249bi5FREdFfHxuLlRSSURFTlQsdGhpcy5fbm9vcEFuaW1hdGlvbnM9Ik5vb3BBbmltYXRpb25zIj09PWEmJiEhbyYmIW8uX2ZvcmNlQW5pbWF0aW9ucyxvJiYoby5kaWFtZXRlciYmKHRoaXMuZGlhbWV0ZXI9by5kaWFtZXRlciksby5zdHJva2VXaWR0aCYmKHRoaXMuc3Ryb2tlV2lkdGg9by5zdHJva2VXaWR0aCkpfWdldCBkaWFtZXRlcigpe3JldHVybiB0aGlzLl9kaWFtZXRlcn1zZXQgZGlhbWV0ZXIodCl7dGhpcy5fZGlhbWV0ZXI9WXcodCksdGhpcy5fc3Bpbm5lckFuaW1hdGlvbkxhYmVsPXRoaXMuX2dldFNwaW5uZXJBbmltYXRpb25MYWJlbCgpLCF0aGlzLl9mYWxsYmFja0FuaW1hdGlvbiYmdGhpcy5fc3R5bGVSb290JiZ0aGlzLl9hdHRhY2hTdHlsZU5vZGUoKX1nZXQgc3Ryb2tlV2lkdGgoKXtyZXR1cm4gdGhpcy5fc3Ryb2tlV2lkdGh8fHRoaXMuZGlhbWV0ZXIvMTB9c2V0IHN0cm9rZVdpZHRoKHQpe3RoaXMuX3N0cm9rZVdpZHRoPVl3KHQpfWdldCB2YWx1ZSgpe3JldHVybiJkZXRlcm1pbmF0ZSI9PT10aGlzLm1vZGU/dGhpcy5fdmFsdWU6MH1zZXQgdmFsdWUodCl7dGhpcy5fdmFsdWU9TWF0aC5tYXgoMCxNYXRoLm1pbigxMDAsWXcodCkpKX1uZ09uSW5pdCgpe2NvbnN0IHQ9dGhpcy5fZWxlbWVudFJlZi5uYXRpdmVFbGVtZW50O3RoaXMuX3N0eWxlUm9vdD1Mdyh0KXx8dGhpcy5fZG9jdW1lbnQuaGVhZCx0aGlzLl9hdHRhY2hTdHlsZU5vZGUoKSx0LmNsYXNzTGlzdC5hZGQoYG1hdC1wcm9ncmVzcy1zcGlubmVyLWluZGV0ZXJtaW5hdGUke3RoaXMuX2ZhbGxiYWNrQW5pbWF0aW9uPyItZmFsbGJhY2siOiIifS1hbmltYXRpb25gKX1fZ2V0Q2lyY2xlUmFkaXVzKCl7cmV0dXJuKHRoaXMuZGlhbWV0ZXItMTApLzJ9X2dldFZpZXdCb3goKXtjb25zdCB0PTIqdGhpcy5fZ2V0Q2lyY2xlUmFkaXVzKCkrdGhpcy5zdHJva2VXaWR0aDtyZXR1cm5gMCAwICR7dH0gJHt0fWB9X2dldFN0cm9rZUNpcmN1bWZlcmVuY2UoKXtyZXR1cm4gMipNYXRoLlBJKnRoaXMuX2dldENpcmNsZVJhZGl1cygpfV9nZXRTdHJva2VEYXNoT2Zmc2V0KCl7cmV0dXJuImRldGVybWluYXRlIj09PXRoaXMubW9kZT90aGlzLl9nZXRTdHJva2VDaXJjdW1mZXJlbmNlKCkqKDEwMC10aGlzLl92YWx1ZSkvMTAwOnRoaXMuX2ZhbGxiYWNrQW5pbWF0aW9uJiYiaW5kZXRlcm1pbmF0ZSI9PT10aGlzLm1vZGU/LjIqdGhpcy5fZ2V0U3Ryb2tlQ2lyY3VtZmVyZW5jZSgpOm51bGx9X2dldENpcmNsZVN0cm9rZVdpZHRoKCl7cmV0dXJuIHRoaXMuc3Ryb2tlV2lkdGgvdGhpcy5kaWFtZXRlcioxMDB9X2F0dGFjaFN0eWxlTm9kZSgpe2NvbnN0IHQ9dGhpcy5fc3R5bGVSb290LG49dGhpcy5fZGlhbWV0ZXIsZT1mWi5fZGlhbWV0ZXJzO2xldCBhPWUuZ2V0KHQpO2lmKCFhfHwhYS5oYXMobikpe2NvbnN0IG89dGhpcy5fZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgic3R5bGUiKTtvLnNldEF0dHJpYnV0ZSgibWF0LXNwaW5uZXItYW5pbWF0aW9uIix0aGlzLl9zcGlubmVyQW5pbWF0aW9uTGFiZWwpLG8udGV4dENvbnRlbnQ9dGhpcy5fZ2V0QW5pbWF0aW9uVGV4dCgpLHQuYXBwZW5kQ2hpbGQobyksYXx8KGE9bmV3IFNldCxlLnNldCh0LGEpKSxhLmFkZChuKX19X2dldEFuaW1hdGlvblRleHQoKXtjb25zdCB0PXRoaXMuX2dldFN0cm9rZUNpcmN1bWZlcmVuY2UoKTtyZXR1cm4iXG4gQGtleWZyYW1lcyBtYXQtcHJvZ3Jlc3Mtc3Bpbm5lci1zdHJva2Utcm90YXRlLURJQU1FVEVSIHtcbiAgICAwJSAgICAgIHsgc3Ryb2tlLWRhc2hvZmZzZXQ6IFNUQVJUX1ZBTFVFOyAgdHJhbnNmb3JtOiByb3RhdGUoMCk7IH1cbiAgICAxMi41JSAgIHsgc3Ryb2tlLWRhc2hvZmZzZXQ6IEVORF9WQUxVRTsgICAgdHJhbnNmb3JtOiByb3RhdGUoMCk7IH1cbiAgICAxMi41MDAxJSAgeyBzdHJva2UtZGFzaG9mZnNldDogRU5EX1ZBTFVFOyAgICB0cmFuc2Zvcm06IHJvdGF0ZVgoMTgwZGVnKSByb3RhdGUoNzIuNWRlZyk7IH1cbiAgICAyNSUgICAgIHsgc3Ryb2tlLWRhc2hvZmZzZXQ6IFNUQVJUX1ZBTFVFOyAgdHJhbnNmb3JtOiByb3RhdGVYKDE4MGRlZykgcm90YXRlKDcyLjVkZWcpOyB9XG5cbiAgICAyNS4wMDAxJSAgIHsgc3Ryb2tlLWRhc2hvZmZzZXQ6IFNUQVJUX1ZBTFVFOyAgdHJhbnNmb3JtOiByb3RhdGUoMjcwZGVnKTsgfVxuICAgIDM3LjUlICAgeyBzdHJva2UtZGFzaG9mZnNldDogRU5EX1ZBTFVFOyAgICB0cmFuc2Zvcm06IHJvdGF0ZSgyNzBkZWcpOyB9XG4gICAgMzcuNTAwMSUgIHsgc3Ryb2tlLWRhc2hvZmZzZXQ6IEVORF9WQUxVRTsgICAgdHJhbnNmb3JtOiByb3RhdGVYKDE4MGRlZykgcm90YXRlKDE2MS41ZGVnKTsgfVxuICAgIDUwJSAgICAgeyBzdHJva2UtZGFzaG9mZnNldDogU1RBUlRfVkFMVUU7ICB0cmFuc2Zvcm06IHJvdGF0ZVgoMTgwZGVnKSByb3RhdGUoMTYxLjVkZWcpOyB9XG5cbiAgICA1MC4wMDAxJSAgeyBzdHJva2UtZGFzaG9mZnNldDogU1RBUlRfVkFMVUU7ICB0cmFuc2Zvcm06IHJvdGF0ZSgxODBkZWcpOyB9XG4gICAgNjIuNSUgICB7IHN0cm9rZS1kYXNob2Zmc2V0OiBFTkRfVkFMVUU7ICAgIHRyYW5zZm9ybTogcm90YXRlKDE4MGRlZyk7IH1cbiAgICA2Mi41MDAxJSAgeyBzdHJva2UtZGFzaG9mZnNldDogRU5EX1ZBTFVFOyAgICB0cmFuc2Zvcm06IHJvdGF0ZVgoMTgwZGVnKSByb3RhdGUoMjUxLjVkZWcpOyB9XG4gICAgNzUlICAgICB7IHN0cm9rZS1kYXNob2Zmc2V0OiBTVEFSVF9WQUxVRTsgIHRyYW5zZm9ybTogcm90YXRlWCgxODBkZWcpIHJvdGF0ZSgyNTEuNWRlZyk7IH1cblxuICAgIDc1LjAwMDElICB7IHN0cm9rZS1kYXNob2Zmc2V0OiBTVEFSVF9WQUxVRTsgIHRyYW5zZm9ybTogcm90YXRlKDkwZGVnKTsgfVxuICAgIDg3LjUlICAgeyBzdHJva2UtZGFzaG9mZnNldDogRU5EX1ZBTFVFOyAgICB0cmFuc2Zvcm06IHJvdGF0ZSg5MGRlZyk7IH1cbiAgICA4Ny41MDAxJSAgeyBzdHJva2UtZGFzaG9mZnNldDogRU5EX1ZBTFVFOyAgICB0cmFuc2Zvcm06IHJvdGF0ZVgoMTgwZGVnKSByb3RhdGUoMzQxLjVkZWcpOyB9XG4gICAgMTAwJSAgICB7IHN0cm9rZS1kYXNob2Zmc2V0OiBTVEFSVF9WQUxVRTsgIHRyYW5zZm9ybTogcm90YXRlWCgxODBkZWcpIHJvdGF0ZSgzNDEuNWRlZyk7IH1cbiAgfVxuIi5yZXBsYWNlKC9TVEFSVF9WQUxVRS9nLCIiKy45NSp0KS5yZXBsYWNlKC9FTkRfVkFMVUUvZywiIisuMip0KS5yZXBsYWNlKC9ESUFNRVRFUi9nLGAke3RoaXMuX3NwaW5uZXJBbmltYXRpb25MYWJlbH1gKX1fZ2V0U3Bpbm5lckFuaW1hdGlvbkxhYmVsKCl7cmV0dXJuIHRoaXMuZGlhbWV0ZXIudG9TdHJpbmcoKS5yZXBsYWNlKCIuIiwiXyIpfX1mWi7JtWZhYz1mdW5jdGlvbiB0KG4pe3JldHVybiBuZXcobnx8ZlopKFpnKHh1KSxaZyhTdyksWmcoekMsOCksWmcoZGssOCksWmcoYlopKX0sZlouybVjbXA9X28oe3R5cGU6Zlosc2VsZWN0b3JzOltbIm1hdC1wcm9ncmVzcy1zcGlubmVyIl1dLGhvc3RBdHRyczpbInJvbGUiLCJwcm9ncmVzc2JhciIsMSwibWF0LXByb2dyZXNzLXNwaW5uZXIiXSxob3N0VmFyczoxMCxob3N0QmluZGluZ3M6ZnVuY3Rpb24gdChuLGUpezImbiYmKE5nKCJhcmlhLXZhbHVlbWluIiwiZGV0ZXJtaW5hdGUiPT09ZS5tb2RlPzA6bnVsbCkoImFyaWEtdmFsdWVtYXgiLCJkZXRlcm1pbmF0ZSI9PT1lLm1vZGU/MTAwOm51bGwpKCJhcmlhLXZhbHVlbm93IiwiZGV0ZXJtaW5hdGUiPT09ZS5tb2RlP2UudmFsdWU6bnVsbCkoIm1vZGUiLGUubW9kZSksVHAoIndpZHRoIixlLmRpYW1ldGVyLCJweCIpKCJoZWlnaHQiLGUuZGlhbWV0ZXIsInB4IiksRHAoIl9tYXQtYW5pbWF0aW9uLW5vb3BhYmxlIixlLl9ub29wQW5pbWF0aW9ucykpfSxpbnB1dHM6e2NvbG9yOiJjb2xvciIsbW9kZToibW9kZSIsZGlhbWV0ZXI6ImRpYW1ldGVyIixzdHJva2VXaWR0aDoic3Ryb2tlV2lkdGgiLHZhbHVlOiJ2YWx1ZSJ9LGV4cG9ydEFzOlsibWF0UHJvZ3Jlc3NTcGlubmVyIl0sZmVhdHVyZXM6W2hnXSxkZWNsczozLHZhcnM6OCxjb25zdHM6W1sicHJlc2VydmVBc3BlY3RSYXRpbyIsInhNaWRZTWlkIG1lZXQiLCJmb2N1c2FibGUiLCJmYWxzZSIsMywibmdTd2l0Y2giXSxbImN4IiwiNTAlIiwiY3kiLCI1MCUiLDMsImFuaW1hdGlvbi1uYW1lIiwic3Ryb2tlLWRhc2hvZmZzZXQiLCJzdHJva2UtZGFzaGFycmF5Iiwic3Ryb2tlLXdpZHRoIiw0LCJuZ1N3aXRjaENhc2UiXSxbImN4IiwiNTAlIiwiY3kiLCI1MCUiLDMsInN0cm9rZS1kYXNob2Zmc2V0Iiwic3Ryb2tlLWRhc2hhcnJheSIsInN0cm9rZS13aWR0aCIsNCwibmdTd2l0Y2hDYXNlIl0sWyJjeCIsIjUwJSIsImN5IiwiNTAlIl1dLHRlbXBsYXRlOmZ1bmN0aW9uIHQobixlKXsxJm4mJih1aSgpLEtnKDAsInN2ZyIsMCksWWcoMSxzWiwxLDksImNpcmNsZSIsMSksWWcoMixsWiwxLDcsImNpcmNsZSIsMiksJGcoKSksMiZuJiYoVHAoIndpZHRoIixlLmRpYW1ldGVyLCJweCIpKCJoZWlnaHQiLGUuZGlhbWV0ZXIsInB4IiksSmcoIm5nU3dpdGNoIiwiaW5kZXRlcm1pbmF0ZSI9PT1lLm1vZGUpLE5nKCJ2aWV3Qm94IixlLl9nZXRWaWV3Qm94KCkpLHdzKDEpLEpnKCJuZ1N3aXRjaENhc2UiLCEwKSx3cygxKSxKZygibmdTd2l0Y2hDYXNlIiwhMSkpfSxkaXJlY3RpdmVzOltaTSxYTV0sc3R5bGVzOltnWl0sZW5jYXBzdWxhdGlvbjoyLGNoYW5nZURldGVjdGlvbjowfSksZlouX2RpYW1ldGVycz1uZXcgV2Vha01hcCxmWi5jdG9yUGFyYW1ldGVycz0oKT0+W3t0eXBlOnh1fSx7dHlwZTpTd30se3R5cGU6dm9pZCAwLGRlY29yYXRvcnM6W3t0eXBlOk5lfSx7dHlwZTpJZSxhcmdzOlt6Q119XX0se3R5cGU6U3RyaW5nLGRlY29yYXRvcnM6W3t0eXBlOk5lfSx7dHlwZTpJZSxhcmdzOltka119XX0se3R5cGU6dm9pZCAwLGRlY29yYXRvcnM6W3t0eXBlOkllLGFyZ3M6W2JaXX1dfV0sZloucHJvcERlY29yYXRvcnM9e2RpYW1ldGVyOlt7dHlwZTpmX31dLHN0cm9rZVdpZHRoOlt7dHlwZTpmX31dLG1vZGU6W3t0eXBlOmZffV0sdmFsdWU6W3t0eXBlOmZffV19O2NsYXNzIGhaIGV4dGVuZHMgZlp7Y29uc3RydWN0b3IodCxuLGUsYSxvKXtzdXBlcih0LG4sZSxhLG8pLHRoaXMubW9kZT0iaW5kZXRlcm1pbmF0ZSJ9fWhaLsm1ZmFjPWZ1bmN0aW9uIHQobil7cmV0dXJuIG5ldyhufHxoWikoWmcoeHUpLFpnKFN3KSxaZyh6Qyw4KSxaZyhkayw4KSxaZyhiWikpfSxoWi7JtWNtcD1fbyh7dHlwZTpoWixzZWxlY3RvcnM6W1sibWF0LXNwaW5uZXIiXV0saG9zdEF0dHJzOlsicm9sZSIsInByb2dyZXNzYmFyIiwibW9kZSIsImluZGV0ZXJtaW5hdGUiLDEsIm1hdC1zcGlubmVyIiwibWF0LXByb2dyZXNzLXNwaW5uZXIiXSxob3N0VmFyczo2LGhvc3RCaW5kaW5nczpmdW5jdGlvbiB0KG4sZSl7MiZuJiYoVHAoIndpZHRoIixlLmRpYW1ldGVyLCJweCIpKCJoZWlnaHQiLGUuZGlhbWV0ZXIsInB4IiksRHAoIl9tYXQtYW5pbWF0aW9uLW5vb3BhYmxlIixlLl9ub29wQW5pbWF0aW9ucykpfSxpbnB1dHM6e2NvbG9yOiJjb2xvciJ9LGZlYXR1cmVzOltoZ10sZGVjbHM6Myx2YXJzOjgsY29uc3RzOltbInByZXNlcnZlQXNwZWN0UmF0aW8iLCJ4TWlkWU1pZCBtZWV0IiwiZm9jdXNhYmxlIiwiZmFsc2UiLDMsIm5nU3dpdGNoIl0sWyJjeCIsIjUwJSIsImN5IiwiNTAlIiwzLCJhbmltYXRpb24tbmFtZSIsInN0cm9rZS1kYXNob2Zmc2V0Iiwic3Ryb2tlLWRhc2hhcnJheSIsInN0cm9rZS13aWR0aCIsNCwibmdTd2l0Y2hDYXNlIl0sWyJjeCIsIjUwJSIsImN5IiwiNTAlIiwzLCJzdHJva2UtZGFzaG9mZnNldCIsInN0cm9rZS1kYXNoYXJyYXkiLCJzdHJva2Utd2lkdGgiLDQsIm5nU3dpdGNoQ2FzZSJdLFsiY3giLCI1MCUiLCJjeSIsIjUwJSJdXSx0ZW1wbGF0ZTpmdW5jdGlvbiB0KG4sZSl7MSZuJiYodWkoKSxLZygwLCJzdmciLDApLFlnKDEsbVosMSw5LCJjaXJjbGUiLDEpLFlnKDIsZFosMSw3LCJjaXJjbGUiLDIpLCRnKCkpLDImbiYmKFRwKCJ3aWR0aCIsZS5kaWFtZXRlciwicHgiKSgiaGVpZ2h0IixlLmRpYW1ldGVyLCJweCIpLEpnKCJuZ1N3aXRjaCIsImluZGV0ZXJtaW5hdGUiPT09ZS5tb2RlKSxOZygidmlld0JveCIsZS5fZ2V0Vmlld0JveCgpKSx3cygxKSxKZygibmdTd2l0Y2hDYXNlIiwhMCksd3MoMSksSmcoIm5nU3dpdGNoQ2FzZSIsITEpKX0sZGlyZWN0aXZlczpbWk0sWE1dLHN0eWxlczpbZ1pdLGVuY2Fwc3VsYXRpb246MixjaGFuZ2VEZXRlY3Rpb246MH0pLGhaLmN0b3JQYXJhbWV0ZXJzPSgpPT5be3R5cGU6eHV9LHt0eXBlOlN3fSx7dHlwZTp2b2lkIDAsZGVjb3JhdG9yczpbe3R5cGU6TmV9LHt0eXBlOkllLGFyZ3M6W3pDXX1dfSx7dHlwZTpTdHJpbmcsZGVjb3JhdG9yczpbe3R5cGU6TmV9LHt0eXBlOkllLGFyZ3M6W2RrXX1dfSx7dHlwZTp2b2lkIDAsZGVjb3JhdG9yczpbe3R5cGU6SWUsYXJnczpbYlpdfV19XQovKioKICAgICAqIEBsaWNlbnNlCiAgICAgKiBDb3B5cmlnaHQgR29vZ2xlIExMQyBBbGwgUmlnaHRzIFJlc2VydmVkLgogICAgICoKICAgICAqIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGFuIE1JVC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCiAgICAgKiBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlIGF0IGh0dHBzOi8vYW5ndWxhci5pby9saWNlbnNlCiAgICAgKi87Y2xhc3MgX1p7fWZ1bmN0aW9uIENaKHQsbil7aWYoMSZ0KXtjb25zdCB0PW9wKCk7S2coMCwiZGl2IiwzKSxjcCgiQGFycm93UG9zaXRpb24uc3RhcnQiLChmdW5jdGlvbiBuKCl7cmV0dXJuIGpyKHQpLGdwKCkuX2Rpc2FibGVWaWV3U3RhdGVBbmltYXRpb249ITB9KSkoIkBhcnJvd1Bvc2l0aW9uLmRvbmUiLChmdW5jdGlvbiBuKCl7cmV0dXJuIGpyKHQpLGdwKCkuX2Rpc2FibGVWaWV3U3RhdGVBbmltYXRpb249ITF9KSksdHAoMSwiZGl2Iiw0KSxLZygyLCJkaXYiLDUpLHRwKDMsImRpdiIsNiksdHAoNCwiZGl2Iiw3KSx0cCg1LCJkaXYiLDgpLCRnKCksJGcoKX1pZigyJnQpe2NvbnN0IHQ9Z3AoKTtKZygiQGFycm93T3BhY2l0eSIsdC5fZ2V0QXJyb3dWaWV3U3RhdGUoKSkoIkBhcnJvd1Bvc2l0aW9uIix0Ll9nZXRBcnJvd1ZpZXdTdGF0ZSgpKSgiQGFsbG93Q2hpbGRyZW4iLHQuX2dldEFycm93RGlyZWN0aW9uU3RhdGUoKSksd3MoMiksSmcoIkBpbmRpY2F0b3IiLHQuX2dldEFycm93RGlyZWN0aW9uU3RhdGUoKSksd3MoMSksSmcoIkBsZWZ0UG9pbnRlciIsdC5fZ2V0QXJyb3dEaXJlY3Rpb25TdGF0ZSgpKSx3cygxKSxKZygiQHJpZ2h0UG9pbnRlciIsdC5fZ2V0QXJyb3dEaXJlY3Rpb25TdGF0ZSgpKX19X1ouybVtb2Q9eG8oe3R5cGU6X1p9KSxfWi7JtWluaj1HZSh7ZmFjdG9yeTpmdW5jdGlvbiB0KG4pe3JldHVybiBuZXcobnx8X1opfSxpbXBvcnRzOltbdEUsUE9dLHRFXX0pLCgidW5kZWZpbmVkIj09dHlwZW9mIG5nSml0TW9kZXx8bmdKaXRNb2RlKSYmeW8oX1ose2RlY2xhcmF0aW9uczpmdW5jdGlvbigpe3JldHVybltmWixoWl19LGltcG9ydHM6ZnVuY3Rpb24oKXtyZXR1cm5bdEUsUE9dfSxleHBvcnRzOmZ1bmN0aW9uKCl7cmV0dXJuW2ZaLGhaLHRFXX19KTtjb25zdCBNWj1pRShuRSgKLyoqCiAgICAgKiBAbGljZW5zZQogICAgICogQ29weXJpZ2h0IEdvb2dsZSBMTEMgQWxsIFJpZ2h0cyBSZXNlcnZlZC4KICAgICAqCiAgICAgKiBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhbiBNSVQtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQogICAgICogZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZSBhdCBodHRwczovL2FuZ3VsYXIuaW8vbGljZW5zZQogICAgICovCmNsYXNze30pKTtjbGFzcyBPWiBleHRlbmRzIE1ae2NvbnN0cnVjdG9yKCl7c3VwZXIoLi4uYXJndW1lbnRzKSx0aGlzLnNvcnRhYmxlcz1uZXcgTWFwLHRoaXMuX3N0YXRlQ2hhbmdlcz1uZXcgeCx0aGlzLnN0YXJ0PSJhc2MiLHRoaXMuX2RpcmVjdGlvbj0iIix0aGlzLnNvcnRDaGFuZ2U9bmV3IEVmfWdldCBkaXJlY3Rpb24oKXtyZXR1cm4gdGhpcy5fZGlyZWN0aW9ufXNldCBkaXJlY3Rpb24odCl7aWYodCYmImFzYyIhPT10JiYiZGVzYyIhPT10JiYoInVuZGVmaW5lZCI9PXR5cGVvZiBuZ0Rldk1vZGV8fG5nRGV2TW9kZSkpdGhyb3coZnVuY3Rpb24gbih0KXtyZXR1cm4gRXJyb3IoYCR7dH0gaXMgbm90IGEgdmFsaWQgc29ydCBkaXJlY3Rpb24gKCdhc2MnIG9yICdkZXNjJykuYCl9KSh0KTt0aGlzLl9kaXJlY3Rpb249dH1nZXQgZGlzYWJsZUNsZWFyKCl7cmV0dXJuIHRoaXMuX2Rpc2FibGVDbGVhcn1zZXQgZGlzYWJsZUNsZWFyKHQpe3RoaXMuX2Rpc2FibGVDbGVhcj1Hdyh0KX1yZWdpc3Rlcih0KXtpZigidW5kZWZpbmVkIj09dHlwZW9mIG5nRGV2TW9kZXx8bmdEZXZNb2RlKXtpZighdC5pZCl0aHJvdyhmdW5jdGlvbiBuKCl7cmV0dXJuIEVycm9yKCJNYXRTb3J0SGVhZGVyIG11c3QgYmUgcHJvdmlkZWQgd2l0aCBhIHVuaXF1ZSBpZC4iKX0pKCk7aWYodGhpcy5zb3J0YWJsZXMuaGFzKHQuaWQpKXRocm93KGZ1bmN0aW9uIGUodCl7cmV0dXJuIEVycm9yKGBDYW5ub3QgaGF2ZSB0d28gTWF0U29ydGFibGVzIHdpdGggdGhlIHNhbWUgaWQgKCR7dH0pLmApfSkodC5pZCl9dGhpcy5zb3J0YWJsZXMuc2V0KHQuaWQsdCl9ZGVyZWdpc3Rlcih0KXt0aGlzLnNvcnRhYmxlcy5kZWxldGUodC5pZCl9c29ydCh0KXt0aGlzLmFjdGl2ZSE9dC5pZD8odGhpcy5hY3RpdmU9dC5pZCx0aGlzLmRpcmVjdGlvbj10LnN0YXJ0P3Quc3RhcnQ6dGhpcy5zdGFydCk6dGhpcy5kaXJlY3Rpb249dGhpcy5nZXROZXh0U29ydERpcmVjdGlvbih0KSx0aGlzLnNvcnRDaGFuZ2UuZW1pdCh7YWN0aXZlOnRoaXMuYWN0aXZlLGRpcmVjdGlvbjp0aGlzLmRpcmVjdGlvbn0pfWdldE5leHRTb3J0RGlyZWN0aW9uKHQpe2lmKCF0KXJldHVybiIiO2xldCBuPShmdW5jdGlvbiBlKHQsbil7bGV0IGU9WyJhc2MiLCJkZXNjIl07cmV0dXJuImRlc2MiPT10JiZlLnJldmVyc2UoKSxufHxlLnB1c2goIiIpLGV9Ci8qKgogICAgICogQGxpY2Vuc2UKICAgICAqIENvcHlyaWdodCBHb29nbGUgTExDIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCiAgICAgKgogICAgICogVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYW4gTUlULXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKICAgICAqIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUgYXQgaHR0cHM6Ly9hbmd1bGFyLmlvL2xpY2Vuc2UKICAgICAqLykodC5zdGFydHx8dGhpcy5zdGFydCxudWxsIT10LmRpc2FibGVDbGVhcj90LmRpc2FibGVDbGVhcjp0aGlzLmRpc2FibGVDbGVhciksYT1uLmluZGV4T2YodGhpcy5kaXJlY3Rpb24pKzE7cmV0dXJuIGE+PW4ubGVuZ3RoJiYoYT0wKSxuW2FdfW5nT25Jbml0KCl7dGhpcy5fbWFya0luaXRpYWxpemVkKCl9bmdPbkNoYW5nZXMoKXt0aGlzLl9zdGF0ZUNoYW5nZXMubmV4dCgpfW5nT25EZXN0cm95KCl7dGhpcy5fc3RhdGVDaGFuZ2VzLmNvbXBsZXRlKCl9fU9aLsm1ZmFjPWZ1bmN0aW9uIHQobil7cmV0dXJuIFBaKG58fE9aKX0sT1ouybVkaXI9dm8oe3R5cGU6T1osc2VsZWN0b3JzOltbIiIsIm1hdFNvcnQiLCIiXV0saG9zdEF0dHJzOlsxLCJtYXQtc29ydCJdLGlucHV0czp7ZGlzYWJsZWQ6WyJtYXRTb3J0RGlzYWJsZWQiLCJkaXNhYmxlZCJdLHN0YXJ0OlsibWF0U29ydFN0YXJ0Iiwic3RhcnQiXSxkaXJlY3Rpb246WyJtYXRTb3J0RGlyZWN0aW9uIiwiZGlyZWN0aW9uIl0sZGlzYWJsZUNsZWFyOlsibWF0U29ydERpc2FibGVDbGVhciIsImRpc2FibGVDbGVhciJdLGFjdGl2ZTpbIm1hdFNvcnRBY3RpdmUiLCJhY3RpdmUiXX0sb3V0cHV0czp7c29ydENoYW5nZToibWF0U29ydENoYW5nZSJ9LGV4cG9ydEFzOlsibWF0U29ydCJdLGZlYXR1cmVzOltoZyxwcl19KSxPWi5wcm9wRGVjb3JhdG9ycz17YWN0aXZlOlt7dHlwZTpmXyxhcmdzOlsibWF0U29ydEFjdGl2ZSJdfV0sc3RhcnQ6W3t0eXBlOmZfLGFyZ3M6WyJtYXRTb3J0U3RhcnQiXX1dLGRpcmVjdGlvbjpbe3R5cGU6Zl8sYXJnczpbIm1hdFNvcnREaXJlY3Rpb24iXX1dLGRpc2FibGVDbGVhcjpbe3R5cGU6Zl8sYXJnczpbIm1hdFNvcnREaXNhYmxlQ2xlYXIiXX1dLHNvcnRDaGFuZ2U6W3t0eXBlOmhfLGFyZ3M6WyJtYXRTb3J0Q2hhbmdlIl19XX07Y29uc3QgUFo9dGMoT1opLHhaPUpTLkVOVEVSSU5HKyIgIitYUy5TVEFOREFSRF9DVVJWRSx5Wj17aW5kaWNhdG9yOlNQKCJpbmRpY2F0b3IiLFtSUCgiYWN0aXZlLWFzYywgYXNjIix6UCh7dHJhbnNmb3JtOiJ0cmFuc2xhdGVZKDBweCkifSkpLFJQKCJhY3RpdmUtZGVzYywgZGVzYyIselAoe3RyYW5zZm9ybToidHJhbnNsYXRlWSgxMHB4KSJ9KSksRFAoImFjdGl2ZS1hc2MgPD0+IGFjdGl2ZS1kZXNjIixFUCh4WikpXSksbGVmdFBvaW50ZXI6U1AoImxlZnRQb2ludGVyIixbUlAoImFjdGl2ZS1hc2MsIGFzYyIselAoe3RyYW5zZm9ybToicm90YXRlKC00NWRlZykifSkpLFJQKCJhY3RpdmUtZGVzYywgZGVzYyIselAoe3RyYW5zZm9ybToicm90YXRlKDQ1ZGVnKSJ9KSksRFAoImFjdGl2ZS1hc2MgPD0+IGFjdGl2ZS1kZXNjIixFUCh4WikpXSkscmlnaHRQb2ludGVyOlNQKCJyaWdodFBvaW50ZXIiLFtSUCgiYWN0aXZlLWFzYywgYXNjIix6UCh7dHJhbnNmb3JtOiJyb3RhdGUoNDVkZWcpIn0pKSxSUCgiYWN0aXZlLWRlc2MsIGRlc2MiLHpQKHt0cmFuc2Zvcm06InJvdGF0ZSgtNDVkZWcpIn0pKSxEUCgiYWN0aXZlLWFzYyA8PT4gYWN0aXZlLWRlc2MiLEVQKHhaKSldKSxhcnJvd09wYWNpdHk6U1AoImFycm93T3BhY2l0eSIsW1JQKCJkZXNjLXRvLWFjdGl2ZSwgYXNjLXRvLWFjdGl2ZSwgYWN0aXZlIix6UCh7b3BhY2l0eToxfSkpLFJQKCJkZXNjLXRvLWhpbnQsIGFzYy10by1oaW50LCBoaW50Iix6UCh7b3BhY2l0eTouNTR9KSksUlAoImhpbnQtdG8tZGVzYywgYWN0aXZlLXRvLWRlc2MsIGRlc2MsIGhpbnQtdG8tYXNjLCBhY3RpdmUtdG8tYXNjLCBhc2MsIHZvaWQiLHpQKHtvcGFjaXR5OjB9KSksRFAoIiogPT4gYXNjLCAqID0+IGRlc2MsICogPT4gYWN0aXZlLCAqID0+IGhpbnQsICogPT4gdm9pZCIsRVAoIjBtcyIpKSxEUCgiKiA8PT4gKiIsRVAoeFopKV0pLGFycm93UG9zaXRpb246U1AoImFycm93UG9zaXRpb24iLFtEUCgiKiA9PiBkZXNjLXRvLWhpbnQsICogPT4gZGVzYy10by1hY3RpdmUiLEVQKHhaLFRQKFt6UCh7dHJhbnNmb3JtOiJ0cmFuc2xhdGVZKC0yNSUpIn0pLHpQKHt0cmFuc2Zvcm06InRyYW5zbGF0ZVkoMCkifSldKSkpLERQKCIqID0+IGhpbnQtdG8tZGVzYywgKiA9PiBhY3RpdmUtdG8tZGVzYyIsRVAoeFosVFAoW3pQKHt0cmFuc2Zvcm06InRyYW5zbGF0ZVkoMCkifSkselAoe3RyYW5zZm9ybToidHJhbnNsYXRlWSgyNSUpIn0pXSkpKSxEUCgiKiA9PiBhc2MtdG8taGludCwgKiA9PiBhc2MtdG8tYWN0aXZlIixFUCh4WixUUChbelAoe3RyYW5zZm9ybToidHJhbnNsYXRlWSgyNSUpIn0pLHpQKHt0cmFuc2Zvcm06InRyYW5zbGF0ZVkoMCkifSldKSkpLERQKCIqID0+IGhpbnQtdG8tYXNjLCAqID0+IGFjdGl2ZS10by1hc2MiLEVQKHhaLFRQKFt6UCh7dHJhbnNmb3JtOiJ0cmFuc2xhdGVZKDApIn0pLHpQKHt0cmFuc2Zvcm06InRyYW5zbGF0ZVkoLTI1JSkifSldKSkpLFJQKCJkZXNjLXRvLWhpbnQsIGFzYy10by1oaW50LCBoaW50LCBkZXNjLXRvLWFjdGl2ZSwgYXNjLXRvLWFjdGl2ZSwgYWN0aXZlIix6UCh7dHJhbnNmb3JtOiJ0cmFuc2xhdGVZKDApIn0pKSxSUCgiaGludC10by1kZXNjLCBhY3RpdmUtdG8tZGVzYywgZGVzYyIselAoe3RyYW5zZm9ybToidHJhbnNsYXRlWSgtMjUlKSJ9KSksUlAoImhpbnQtdG8tYXNjLCBhY3RpdmUtdG8tYXNjLCBhc2MiLHpQKHt0cmFuc2Zvcm06InRyYW5zbGF0ZVkoMjUlKSJ9KSldKSxhbGxvd0NoaWxkcmVuOlNQKCJhbGxvd0NoaWxkcmVuIixbRFAoIiogPD0+ICoiLFtOUCgiQCoiLElQKCkse29wdGlvbmFsOiEwfSldKV0pfTsKLyoqCiAgICAgKiBAbGljZW5zZQogICAgICogQ29weXJpZ2h0IEdvb2dsZSBMTEMgQWxsIFJpZ2h0cyBSZXNlcnZlZC4KICAgICAqCiAgICAgKiBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhbiBNSVQtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQogICAgICogZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZSBhdCBodHRwczovL2FuZ3VsYXIuaW8vbGljZW5zZQogICAgICovCmNsYXNzIGtae2NvbnN0cnVjdG9yKCl7dGhpcy5jaGFuZ2VzPW5ldyB4LHRoaXMuc29ydEJ1dHRvbkxhYmVsPXQ9PmBDaGFuZ2Ugc29ydGluZyBmb3IgJHt0fWB9fWtaLsm1ZmFjPWZ1bmN0aW9uIHQobil7cmV0dXJuIG5ldyhufHxrWil9LGtaLsm1cHJvdj1XZSh7ZmFjdG9yeTpmdW5jdGlvbiB0KCl7cmV0dXJuIG5ldyBrWn0sdG9rZW46a1oscHJvdmlkZWRJbjoicm9vdCJ9KTtjb25zdCB2Wj17cHJvdmlkZTprWixkZXBzOltbbmV3IE5lLG5ldyBMZSxrWl1dLHVzZUZhY3Rvcnk6ZnVuY3Rpb24gd1oodCl7cmV0dXJuIHR8fG5ldyBrWn19LFNaPW5FKAovKioKICAgICAqIEBsaWNlbnNlCiAgICAgKiBDb3B5cmlnaHQgR29vZ2xlIExMQyBBbGwgUmlnaHRzIFJlc2VydmVkLgogICAgICoKICAgICAqIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGFuIE1JVC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCiAgICAgKiBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlIGF0IGh0dHBzOi8vYW5ndWxhci5pby9saWNlbnNlCiAgICAgKi8KY2xhc3N7fSk7Y2xhc3MgRVogZXh0ZW5kcyBTWntjb25zdHJ1Y3Rvcih0LG4sZSxhLG8scil7aWYoc3VwZXIoKSx0aGlzLl9pbnRsPXQsdGhpcy5fc29ydD1lLHRoaXMuX2NvbHVtbkRlZj1hLHRoaXMuX2ZvY3VzTW9uaXRvcj1vLHRoaXMuX2VsZW1lbnRSZWY9cix0aGlzLl9zaG93SW5kaWNhdG9ySGludD0hMSx0aGlzLl9hcnJvd0RpcmVjdGlvbj0iIix0aGlzLl9kaXNhYmxlVmlld1N0YXRlQW5pbWF0aW9uPSExLHRoaXMuYXJyb3dQb3NpdGlvbj0iYWZ0ZXIiLCFlJiYoInVuZGVmaW5lZCI9PXR5cGVvZiBuZ0Rldk1vZGV8fG5nRGV2TW9kZSkpdGhyb3coZnVuY3Rpb24gaSgpe3JldHVybiBFcnJvcigiTWF0U29ydEhlYWRlciBtdXN0IGJlIHBsYWNlZCB3aXRoaW4gYSBwYXJlbnQgZWxlbWVudCB3aXRoIHRoZSBNYXRTb3J0IGRpcmVjdGl2ZS4iKX0pKCk7dGhpcy5fcmVyZW5kZXJTdWJzY3JpcHRpb249V3QoZS5zb3J0Q2hhbmdlLGUuX3N0YXRlQ2hhbmdlcyx0LmNoYW5nZXMpLnN1YnNjcmliZSgoKCk9Pnt0aGlzLl9pc1NvcnRlZCgpJiZ0aGlzLl91cGRhdGVBcnJvd0RpcmVjdGlvbigpLCF0aGlzLl9pc1NvcnRlZCgpJiZ0aGlzLl92aWV3U3RhdGUmJiJhY3RpdmUiPT09dGhpcy5fdmlld1N0YXRlLnRvU3RhdGUmJih0aGlzLl9kaXNhYmxlVmlld1N0YXRlQW5pbWF0aW9uPSExLHRoaXMuX3NldEFuaW1hdGlvblRyYW5zaXRpb25TdGF0ZSh7ZnJvbVN0YXRlOiJhY3RpdmUiLHRvU3RhdGU6dGhpcy5fYXJyb3dEaXJlY3Rpb259KSksbi5tYXJrRm9yQ2hlY2soKX0pKX1nZXQgZGlzYWJsZUNsZWFyKCl7cmV0dXJuIHRoaXMuX2Rpc2FibGVDbGVhcn1zZXQgZGlzYWJsZUNsZWFyKHQpe3RoaXMuX2Rpc2FibGVDbGVhcj1Hdyh0KX1uZ09uSW5pdCgpeyF0aGlzLmlkJiZ0aGlzLl9jb2x1bW5EZWYmJih0aGlzLmlkPXRoaXMuX2NvbHVtbkRlZi5uYW1lKSx0aGlzLl91cGRhdGVBcnJvd0RpcmVjdGlvbigpLHRoaXMuX3NldEFuaW1hdGlvblRyYW5zaXRpb25TdGF0ZSh7dG9TdGF0ZTp0aGlzLl9pc1NvcnRlZCgpPyJhY3RpdmUiOnRoaXMuX2Fycm93RGlyZWN0aW9ufSksdGhpcy5fc29ydC5yZWdpc3Rlcih0aGlzKX1uZ0FmdGVyVmlld0luaXQoKXt0aGlzLl9mb2N1c01vbml0b3IubW9uaXRvcih0aGlzLl9lbGVtZW50UmVmLCEwKS5zdWJzY3JpYmUoKHQ9PnRoaXMuX3NldEluZGljYXRvckhpbnRWaXNpYmxlKCEhdCkpKX1uZ09uRGVzdHJveSgpe3RoaXMuX2ZvY3VzTW9uaXRvci5zdG9wTW9uaXRvcmluZyh0aGlzLl9lbGVtZW50UmVmKSx0aGlzLl9zb3J0LmRlcmVnaXN0ZXIodGhpcyksdGhpcy5fcmVyZW5kZXJTdWJzY3JpcHRpb24udW5zdWJzY3JpYmUoKX1fc2V0SW5kaWNhdG9ySGludFZpc2libGUodCl7dGhpcy5faXNEaXNhYmxlZCgpJiZ0fHwodGhpcy5fc2hvd0luZGljYXRvckhpbnQ9dCx0aGlzLl9pc1NvcnRlZCgpfHwodGhpcy5fdXBkYXRlQXJyb3dEaXJlY3Rpb24oKSx0aGlzLl9zZXRBbmltYXRpb25UcmFuc2l0aW9uU3RhdGUodGhpcy5fc2hvd0luZGljYXRvckhpbnQ/e2Zyb21TdGF0ZTp0aGlzLl9hcnJvd0RpcmVjdGlvbix0b1N0YXRlOiJoaW50In06e2Zyb21TdGF0ZToiaGludCIsdG9TdGF0ZTp0aGlzLl9hcnJvd0RpcmVjdGlvbn0pKSl9X3NldEFuaW1hdGlvblRyYW5zaXRpb25TdGF0ZSh0KXt0aGlzLl92aWV3U3RhdGU9dCx0aGlzLl9kaXNhYmxlVmlld1N0YXRlQW5pbWF0aW9uJiYodGhpcy5fdmlld1N0YXRlPXt0b1N0YXRlOnQudG9TdGF0ZX0pfV90b2dnbGVPbkludGVyYWN0aW9uKCl7dGhpcy5fc29ydC5zb3J0KHRoaXMpLCJoaW50IiE9PXRoaXMuX3ZpZXdTdGF0ZS50b1N0YXRlJiYiYWN0aXZlIiE9PXRoaXMuX3ZpZXdTdGF0ZS50b1N0YXRlfHwodGhpcy5fZGlzYWJsZVZpZXdTdGF0ZUFuaW1hdGlvbj0hMCk7Y29uc3QgdD10aGlzLl9pc1NvcnRlZCgpP3tmcm9tU3RhdGU6dGhpcy5fYXJyb3dEaXJlY3Rpb24sdG9TdGF0ZToiYWN0aXZlIn06e2Zyb21TdGF0ZToiYWN0aXZlIix0b1N0YXRlOnRoaXMuX2Fycm93RGlyZWN0aW9ufTt0aGlzLl9zZXRBbmltYXRpb25UcmFuc2l0aW9uU3RhdGUodCksdGhpcy5fc2hvd0luZGljYXRvckhpbnQ9ITF9X2hhbmRsZUNsaWNrKCl7dGhpcy5faXNEaXNhYmxlZCgpfHx0aGlzLl90b2dnbGVPbkludGVyYWN0aW9uKCl9X2hhbmRsZUtleWRvd24odCl7dGhpcy5faXNEaXNhYmxlZCgpfHx0LmtleUNvZGUhPT1WdyYmdC5rZXlDb2RlIT09SHd8fCh0LnByZXZlbnREZWZhdWx0KCksdGhpcy5fdG9nZ2xlT25JbnRlcmFjdGlvbigpKX1faXNTb3J0ZWQoKXtyZXR1cm4gdGhpcy5fc29ydC5hY3RpdmU9PXRoaXMuaWQmJigiYXNjIj09PXRoaXMuX3NvcnQuZGlyZWN0aW9ufHwiZGVzYyI9PT10aGlzLl9zb3J0LmRpcmVjdGlvbil9X2dldEFycm93RGlyZWN0aW9uU3RhdGUoKXtyZXR1cm5gJHt0aGlzLl9pc1NvcnRlZCgpPyJhY3RpdmUtIjoiIn0ke3RoaXMuX2Fycm93RGlyZWN0aW9ufWB9X2dldEFycm93Vmlld1N0YXRlKCl7Y29uc3QgdD10aGlzLl92aWV3U3RhdGUuZnJvbVN0YXRlO3JldHVybih0P2Ake3R9LXRvLWA6IiIpK3RoaXMuX3ZpZXdTdGF0ZS50b1N0YXRlfV91cGRhdGVBcnJvd0RpcmVjdGlvbigpe3RoaXMuX2Fycm93RGlyZWN0aW9uPXRoaXMuX2lzU29ydGVkKCk/dGhpcy5fc29ydC5kaXJlY3Rpb246dGhpcy5zdGFydHx8dGhpcy5fc29ydC5zdGFydH1faXNEaXNhYmxlZCgpe3JldHVybiB0aGlzLl9zb3J0LmRpc2FibGVkfHx0aGlzLmRpc2FibGVkfV9nZXRBcmlhU29ydEF0dHJpYnV0ZSgpe3JldHVybiB0aGlzLl9pc1NvcnRlZCgpPyJhc2MiPT10aGlzLl9zb3J0LmRpcmVjdGlvbj8iYXNjZW5kaW5nIjoiZGVzY2VuZGluZyI6Im5vbmUifV9yZW5kZXJBcnJvdygpe3JldHVybiF0aGlzLl9pc0Rpc2FibGVkKCl8fHRoaXMuX2lzU29ydGVkKCl9fUVaLsm1ZmFjPWZ1bmN0aW9uIHQobil7cmV0dXJuIG5ldyhufHxFWikoWmcoa1opLFpnKFZtKSxaZyhPWiw4KSxaZygiTUFUX1NPUlRfSEVBREVSX0NPTFVNTl9ERUYiLDgpLFpnKFRTKSxaZyh4dSkpfSxFWi7JtWNtcD1fbyh7dHlwZTpFWixzZWxlY3RvcnM6W1siIiwibWF0LXNvcnQtaGVhZGVyIiwiIl1dLGhvc3RBdHRyczpbMSwibWF0LXNvcnQtaGVhZGVyIl0saG9zdFZhcnM6Myxob3N0QmluZGluZ3M6ZnVuY3Rpb24gdChuLGUpezEmbiYmY3AoImNsaWNrIiwoZnVuY3Rpb24gdCgpe3JldHVybiBlLl9oYW5kbGVDbGljaygpfSkpKCJrZXlkb3duIiwoZnVuY3Rpb24gdChuKXtyZXR1cm4gZS5faGFuZGxlS2V5ZG93bihuKX0pKSgibW91c2VlbnRlciIsKGZ1bmN0aW9uIHQoKXtyZXR1cm4gZS5fc2V0SW5kaWNhdG9ySGludFZpc2libGUoITApfSkpKCJtb3VzZWxlYXZlIiwoZnVuY3Rpb24gdCgpe3JldHVybiBlLl9zZXRJbmRpY2F0b3JIaW50VmlzaWJsZSghMSl9KSksMiZuJiYoTmcoImFyaWEtc29ydCIsZS5fZ2V0QXJpYVNvcnRBdHRyaWJ1dGUoKSksRHAoIm1hdC1zb3J0LWhlYWRlci1kaXNhYmxlZCIsZS5faXNEaXNhYmxlZCgpKSl9LGlucHV0czp7ZGlzYWJsZWQ6ImRpc2FibGVkIixhcnJvd1Bvc2l0aW9uOiJhcnJvd1Bvc2l0aW9uIixkaXNhYmxlQ2xlYXI6ImRpc2FibGVDbGVhciIsaWQ6WyJtYXQtc29ydC1oZWFkZXIiLCJpZCJdLHN0YXJ0OiJzdGFydCJ9LGV4cG9ydEFzOlsibWF0U29ydEhlYWRlciJdLGZlYXR1cmVzOltoZ10sYXR0cnM6WyJtYXQtc29ydC1oZWFkZXIiLCIiXSxuZ0NvbnRlbnRTZWxlY3RvcnM6WyIqIl0sZGVjbHM6NCx2YXJzOjYsY29uc3RzOltbInJvbGUiLCJidXR0b24iLDEsIm1hdC1zb3J0LWhlYWRlci1jb250YWluZXIiLCJtYXQtZm9jdXMtaW5kaWNhdG9yIl0sWzEsIm1hdC1zb3J0LWhlYWRlci1jb250ZW50Il0sWyJjbGFzcyIsIm1hdC1zb3J0LWhlYWRlci1hcnJvdyIsNCwibmdJZiJdLFsxLCJtYXQtc29ydC1oZWFkZXItYXJyb3ciXSxbMSwibWF0LXNvcnQtaGVhZGVyLXN0ZW0iXSxbMSwibWF0LXNvcnQtaGVhZGVyLWluZGljYXRvciJdLFsxLCJtYXQtc29ydC1oZWFkZXItcG9pbnRlci1sZWZ0Il0sWzEsIm1hdC1zb3J0LWhlYWRlci1wb2ludGVyLXJpZ2h0Il0sWzEsIm1hdC1zb3J0LWhlYWRlci1wb2ludGVyLW1pZGRsZSJdXSx0ZW1wbGF0ZTpmdW5jdGlvbiB0KG4sZSl7MSZuJiYoYnAoKSxLZygwLCJkaXYiLDApLEtnKDEsImRpdiIsMSksaHAoMiksJGcoKSxZZygzLENaLDYsNiwiZGl2IiwyKSwkZygpKSwyJm4mJihEcCgibWF0LXNvcnQtaGVhZGVyLXNvcnRlZCIsZS5faXNTb3J0ZWQoKSkoIm1hdC1zb3J0LWhlYWRlci1wb3NpdGlvbi1iZWZvcmUiLCJiZWZvcmUiPT1lLmFycm93UG9zaXRpb24pLE5nKCJ0YWJpbmRleCIsZS5faXNEaXNhYmxlZCgpP251bGw6MCksd3MoMyksSmcoIm5nSWYiLGUuX3JlbmRlckFycm93KCkpKX0sZGlyZWN0aXZlczpbV01dLHN0eWxlczpbIi5tYXQtc29ydC1oZWFkZXItY29udGFpbmVye2Rpc3BsYXk6ZmxleDtjdXJzb3I6cG9pbnRlcjthbGlnbi1pdGVtczpjZW50ZXI7bGV0dGVyLXNwYWNpbmc6bm9ybWFsO291dGxpbmU6MH1bbWF0LXNvcnQtaGVhZGVyXS5jZGsta2V5Ym9hcmQtZm9jdXNlZCAubWF0LXNvcnQtaGVhZGVyLWNvbnRhaW5lcixbbWF0LXNvcnQtaGVhZGVyXS5jZGstcHJvZ3JhbS1mb2N1c2VkIC5tYXQtc29ydC1oZWFkZXItY29udGFpbmVye2JvcmRlci1ib3R0b206c29saWQgMXB4IGN1cnJlbnRDb2xvcn0ubWF0LXNvcnQtaGVhZGVyLWRpc2FibGVkIC5tYXQtc29ydC1oZWFkZXItY29udGFpbmVye2N1cnNvcjpkZWZhdWx0fS5tYXQtc29ydC1oZWFkZXItY29udGVudHt0ZXh0LWFsaWduOmNlbnRlcjtkaXNwbGF5OmZsZXg7YWxpZ24taXRlbXM6Y2VudGVyfS5tYXQtc29ydC1oZWFkZXItcG9zaXRpb24tYmVmb3Jle2ZsZXgtZGlyZWN0aW9uOnJvdy1yZXZlcnNlfS5tYXQtc29ydC1oZWFkZXItYXJyb3d7aGVpZ2h0OjEycHg7d2lkdGg6MTJweDttaW4td2lkdGg6MTJweDtwb3NpdGlvbjpyZWxhdGl2ZTtkaXNwbGF5OmZsZXg7b3BhY2l0eTowfS5tYXQtc29ydC1oZWFkZXItYXJyb3csW2Rpcj1ydGxdIC5tYXQtc29ydC1oZWFkZXItcG9zaXRpb24tYmVmb3JlIC5tYXQtc29ydC1oZWFkZXItYXJyb3d7bWFyZ2luOjAgMCAwIDZweH0ubWF0LXNvcnQtaGVhZGVyLXBvc2l0aW9uLWJlZm9yZSAubWF0LXNvcnQtaGVhZGVyLWFycm93LFtkaXI9cnRsXSAubWF0LXNvcnQtaGVhZGVyLWFycm93e21hcmdpbjowIDZweCAwIDB9Lm1hdC1zb3J0LWhlYWRlci1zdGVte2JhY2tncm91bmQ6Y3VycmVudENvbG9yO2hlaWdodDoxMHB4O3dpZHRoOjJweDttYXJnaW46YXV0bztkaXNwbGF5OmZsZXg7YWxpZ24taXRlbXM6Y2VudGVyfS5jZGstaGlnaC1jb250cmFzdC1hY3RpdmUgLm1hdC1zb3J0LWhlYWRlci1zdGVte3dpZHRoOjA7Ym9yZGVyLWxlZnQ6c29saWQgMnB4fS5tYXQtc29ydC1oZWFkZXItaW5kaWNhdG9ye3dpZHRoOjEwMCU7aGVpZ2h0OjJweDtkaXNwbGF5OmZsZXg7YWxpZ24taXRlbXM6Y2VudGVyO3Bvc2l0aW9uOmFic29sdXRlO3RvcDowO2xlZnQ6MH0ubWF0LXNvcnQtaGVhZGVyLXBvaW50ZXItbWlkZGxle21hcmdpbjphdXRvO2hlaWdodDoycHg7d2lkdGg6MnB4O2JhY2tncm91bmQ6Y3VycmVudENvbG9yO3RyYW5zZm9ybTpyb3RhdGUoNDVkZWcpfS5jZGstaGlnaC1jb250cmFzdC1hY3RpdmUgLm1hdC1zb3J0LWhlYWRlci1wb2ludGVyLW1pZGRsZXt3aWR0aDowO2hlaWdodDowO2JvcmRlci10b3A6c29saWQgMnB4O2JvcmRlci1sZWZ0OnNvbGlkIDJweH0ubWF0LXNvcnQtaGVhZGVyLXBvaW50ZXItbGVmdCwubWF0LXNvcnQtaGVhZGVyLXBvaW50ZXItcmlnaHR7YmFja2dyb3VuZDpjdXJyZW50Q29sb3I7d2lkdGg6NnB4O2hlaWdodDoycHg7cG9zaXRpb246YWJzb2x1dGU7dG9wOjB9LmNkay1oaWdoLWNvbnRyYXN0LWFjdGl2ZSAubWF0LXNvcnQtaGVhZGVyLXBvaW50ZXItbGVmdCwuY2RrLWhpZ2gtY29udHJhc3QtYWN0aXZlIC5tYXQtc29ydC1oZWFkZXItcG9pbnRlci1yaWdodHt3aWR0aDowO2hlaWdodDowO2JvcmRlci1sZWZ0OnNvbGlkIDZweDtib3JkZXItdG9wOnNvbGlkIDJweH0ubWF0LXNvcnQtaGVhZGVyLXBvaW50ZXItbGVmdHt0cmFuc2Zvcm0tb3JpZ2luOnJpZ2h0O2xlZnQ6MH0ubWF0LXNvcnQtaGVhZGVyLXBvaW50ZXItcmlnaHR7dHJhbnNmb3JtLW9yaWdpbjpsZWZ0O3JpZ2h0OjB9XG4iXSxlbmNhcHN1bGF0aW9uOjIsZGF0YTp7YW5pbWF0aW9uOlt5Wi5pbmRpY2F0b3IseVoubGVmdFBvaW50ZXIseVoucmlnaHRQb2ludGVyLHlaLmFycm93T3BhY2l0eSx5Wi5hcnJvd1Bvc2l0aW9uLHlaLmFsbG93Q2hpbGRyZW5dfSxjaGFuZ2VEZXRlY3Rpb246MH0pLEVaLmN0b3JQYXJhbWV0ZXJzPSgpPT5be3R5cGU6a1p9LHt0eXBlOlZtfSx7dHlwZTpPWixkZWNvcmF0b3JzOlt7dHlwZTpOZX1dfSx7dHlwZTp2b2lkIDAsZGVjb3JhdG9yczpbe3R5cGU6SWUsYXJnczpbIk1BVF9TT1JUX0hFQURFUl9DT0xVTU5fREVGIl19LHt0eXBlOk5lfV19LHt0eXBlOlRTfSx7dHlwZTp4dX1dLEVaLnByb3BEZWNvcmF0b3JzPXtpZDpbe3R5cGU6Zl8sYXJnczpbIm1hdC1zb3J0LWhlYWRlciJdfV0sYXJyb3dQb3NpdGlvbjpbe3R5cGU6Zl99XSxzdGFydDpbe3R5cGU6Zl99XSxkaXNhYmxlQ2xlYXI6W3t0eXBlOmZffV19OwovKioKICAgICAqIEBsaWNlbnNlCiAgICAgKiBDb3B5cmlnaHQgR29vZ2xlIExMQyBBbGwgUmlnaHRzIFJlc2VydmVkLgogICAgICoKICAgICAqIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGFuIE1JVC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCiAgICAgKiBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlIGF0IGh0dHBzOi8vYW5ndWxhci5pby9saWNlbnNlCiAgICAgKi8KY2xhc3MgQVp7fUFaLsm1bW9kPXhvKHt0eXBlOkFafSksQVouybVpbmo9R2Uoe2ZhY3Rvcnk6ZnVuY3Rpb24gdChuKXtyZXR1cm4gbmV3KG58fEFaKX0scHJvdmlkZXJzOlt2Wl0saW1wb3J0czpbW1BPXV19KSwoInVuZGVmaW5lZCI9PXR5cGVvZiBuZ0ppdE1vZGV8fG5nSml0TW9kZSkmJnlvKEFaLHtkZWNsYXJhdGlvbnM6ZnVuY3Rpb24oKXtyZXR1cm5bT1osRVpdfSxpbXBvcnRzOmZ1bmN0aW9uKCl7cmV0dXJuW1BPXX0sZXhwb3J0czpmdW5jdGlvbigpe3JldHVybltPWixFWl19fSk7Y29uc3Qgelo9W1tbImNhcHRpb24iXV0sW1siY29sZ3JvdXAiXSxbImNvbCJdXV07ZnVuY3Rpb24gUloodCxuKXtpZigxJnQmJihLZygwLCJ0aCIsMyksSnAoMSksJGcoKSksMiZ0KXtjb25zdCB0PWdwKCk7VHAoInRleHQtYWxpZ24iLHQuanVzdGlmeSksd3MoMSksS3AoIiAiLHQuaGVhZGVyVGV4dCwiICIpfX1mdW5jdGlvbiBUWih0LG4pe2lmKDEmdCYmKEtnKDAsInRkIiw0KSxKcCgxKSwkZygpKSwyJnQpe2NvbnN0IHQ9bi4kaW1wbGljaXQsZT1ncCgpO1RwKCJ0ZXh0LWFsaWduIixlLmp1c3RpZnkpLHdzKDEpLEtwKCIgIixlLmRhdGFBY2Nlc3Nvcih0LGUubmFtZSksIiAiKX19Ci8qKgogICAgICogQGxpY2Vuc2UKICAgICAqIENvcHlyaWdodCBHb29nbGUgTExDIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCiAgICAgKgogICAgICogVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYW4gTUlULXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKICAgICAqIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUgYXQgaHR0cHM6Ly9hbmd1bGFyLmlvL2xpY2Vuc2UKICAgICAqL2Z1bmN0aW9uIERaKHQpe3JldHVybiBjbGFzcyBleHRlbmRzIHR7Y29uc3RydWN0b3IoLi4udCl7c3VwZXIoLi4udCksdGhpcy5fc3RpY2t5PSExLHRoaXMuX2hhc1N0aWNreUNoYW5nZWQ9ITF9Z2V0IHN0aWNreSgpe3JldHVybiB0aGlzLl9zdGlja3l9c2V0IHN0aWNreSh0KXtjb25zdCBuPXRoaXMuX3N0aWNreTt0aGlzLl9zdGlja3k9R3codCksdGhpcy5faGFzU3RpY2t5Q2hhbmdlZD1uIT09dGhpcy5fc3RpY2t5fWhhc1N0aWNreUNoYW5nZWQoKXtjb25zdCB0PXRoaXMuX2hhc1N0aWNreUNoYW5nZWQ7cmV0dXJuIHRoaXMuX2hhc1N0aWNreUNoYW5nZWQ9ITEsdH1yZXNldFN0aWNreUNoYW5nZWQoKXt0aGlzLl9oYXNTdGlja3lDaGFuZ2VkPSExfX19Ci8qKgogICAgICogQGxpY2Vuc2UKICAgICAqIENvcHlyaWdodCBHb29nbGUgTExDIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCiAgICAgKgogICAgICogVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYW4gTUlULXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKICAgICAqIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUgYXQgaHR0cHM6Ly9hbmd1bGFyLmlvL2xpY2Vuc2UKICAgICAqL2NvbnN0IElaPW5ldyBGYSgiQ0RLX1RBQkxFIiksTlo9bmV3IEZhKCJ0ZXh0LWNvbHVtbi1vcHRpb25zIik7Ci8qKgogICAgICogQGxpY2Vuc2UKICAgICAqIENvcHlyaWdodCBHb29nbGUgTExDIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCiAgICAgKgogICAgICogVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYW4gTUlULXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKICAgICAqIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUgYXQgaHR0cHM6Ly9hbmd1bGFyLmlvL2xpY2Vuc2UKICAgICAqLwpjbGFzcyBGWntjb25zdHJ1Y3Rvcih0KXt0aGlzLnRlbXBsYXRlPXR9fUZaLsm1ZmFjPWZ1bmN0aW9uIHQobil7cmV0dXJuIG5ldyhufHxGWikoWmcoSnUpKX0sRlouybVkaXI9dm8oe3R5cGU6Rlosc2VsZWN0b3JzOltbIiIsImNka0NlbGxEZWYiLCIiXV19KSxGWi5jdG9yUGFyYW1ldGVycz0oKT0+W3t0eXBlOkp1fV07Y2xhc3MgTFp7Y29uc3RydWN0b3IodCl7dGhpcy50ZW1wbGF0ZT10fX1MWi7JtWZhYz1mdW5jdGlvbiB0KG4pe3JldHVybiBuZXcobnx8TFopKFpnKEp1KSl9LExaLsm1ZGlyPXZvKHt0eXBlOkxaLHNlbGVjdG9yczpbWyIiLCJjZGtIZWFkZXJDZWxsRGVmIiwiIl1dfSksTFouY3RvclBhcmFtZXRlcnM9KCk9Plt7dHlwZTpKdX1dO2NsYXNzIEhae2NvbnN0cnVjdG9yKHQpe3RoaXMudGVtcGxhdGU9dH19SFouybVmYWM9ZnVuY3Rpb24gdChuKXtyZXR1cm4gbmV3KG58fEhaKShaZyhKdSkpfSxIWi7JtWRpcj12byh7dHlwZTpIWixzZWxlY3RvcnM6W1siIiwiY2RrRm9vdGVyQ2VsbERlZiIsIiJdXX0pLEhaLmN0b3JQYXJhbWV0ZXJzPSgpPT5be3R5cGU6SnV9XTtjb25zdCBCWj1EWihjbGFzc3t9KTtjbGFzcyBWWiBleHRlbmRzIEJae2NvbnN0cnVjdG9yKHQpe3N1cGVyKCksdGhpcy5fdGFibGU9dCx0aGlzLl9zdGlja3lFbmQ9ITF9Z2V0IG5hbWUoKXtyZXR1cm4gdGhpcy5fbmFtZX1zZXQgbmFtZSh0KXt0aGlzLl9zZXROYW1lSW5wdXQodCl9Z2V0IHN0aWNreUVuZCgpe3JldHVybiB0aGlzLl9zdGlja3lFbmR9c2V0IHN0aWNreUVuZCh0KXtjb25zdCBuPXRoaXMuX3N0aWNreUVuZDt0aGlzLl9zdGlja3lFbmQ9R3codCksdGhpcy5faGFzU3RpY2t5Q2hhbmdlZD1uIT09dGhpcy5fc3RpY2t5RW5kfV91cGRhdGVDb2x1bW5Dc3NDbGFzc05hbWUoKXt0aGlzLl9jb2x1bW5Dc3NDbGFzc05hbWU9W2BjZGstY29sdW1uLSR7dGhpcy5jc3NDbGFzc0ZyaWVuZGx5TmFtZX1gXX1fc2V0TmFtZUlucHV0KHQpe3QmJih0aGlzLl9uYW1lPXQsdGhpcy5jc3NDbGFzc0ZyaWVuZGx5TmFtZT10LnJlcGxhY2UoL1teYS16MC05Xy1dL2dpLCItIiksdGhpcy5fdXBkYXRlQ29sdW1uQ3NzQ2xhc3NOYW1lKCkpfX1WWi7JtWZhYz1mdW5jdGlvbiB0KG4pe3JldHVybiBuZXcobnx8VlopKFpnKElaLDgpKX0sVlouybVkaXI9dm8oe3R5cGU6Vlosc2VsZWN0b3JzOltbIiIsImNka0NvbHVtbkRlZiIsIiJdXSxjb250ZW50UXVlcmllczpmdW5jdGlvbiB0KG4sZSxhKXt2YXIgbzsxJm4mJihHZihhLEZaLCEwKSxHZihhLExaLCEwKSxHZihhLEhaLCEwKSksMiZuJiYoVmYobz1aZigpKSYmKGUuY2VsbD1vLmZpcnN0KSxWZihvPVpmKCkpJiYoZS5oZWFkZXJDZWxsPW8uZmlyc3QpLFZmKG89WmYoKSkmJihlLmZvb3RlckNlbGw9by5maXJzdCkpfSxpbnB1dHM6e3N0aWNreToic3RpY2t5IixuYW1lOlsiY2RrQ29sdW1uRGVmIiwibmFtZSJdLHN0aWNreUVuZDoic3RpY2t5RW5kIn0sZmVhdHVyZXM6W011KFt7cHJvdmlkZToiTUFUX1NPUlRfSEVBREVSX0NPTFVNTl9ERUYiLHVzZUV4aXN0aW5nOlZafV0pLGhnXX0pLFZaLmN0b3JQYXJhbWV0ZXJzPSgpPT5be3R5cGU6dm9pZCAwLGRlY29yYXRvcnM6W3t0eXBlOkllLGFyZ3M6W0laXX0se3R5cGU6TmV9XX1dLFZaLnByb3BEZWNvcmF0b3JzPXtuYW1lOlt7dHlwZTpmXyxhcmdzOlsiY2RrQ29sdW1uRGVmIl19XSxzdGlja3lFbmQ6W3t0eXBlOmZfLGFyZ3M6WyJzdGlja3lFbmQiXX1dLGNlbGw6W3t0eXBlOlpkLGFyZ3M6W0ZaXX1dLGhlYWRlckNlbGw6W3t0eXBlOlpkLGFyZ3M6W0xaXX1dLGZvb3RlckNlbGw6W3t0eXBlOlpkLGFyZ3M6W0haXX1dfTtjbGFzcyBqWntjb25zdHJ1Y3Rvcih0LG4pe2NvbnN0IGU9bi5uYXRpdmVFbGVtZW50LmNsYXNzTGlzdDtmb3IoY29uc3QgbiBvZiB0Ll9jb2x1bW5Dc3NDbGFzc05hbWUpZS5hZGQobil9fWNsYXNzIFVaIGV4dGVuZHMgalp7Y29uc3RydWN0b3IodCxuKXtzdXBlcih0LG4pfX1VWi7JtWZhYz1mdW5jdGlvbiB0KG4pe3JldHVybiBuZXcobnx8VVopKFpnKFZaKSxaZyh4dSkpfSxVWi7JtWRpcj12byh7dHlwZTpVWixzZWxlY3RvcnM6W1siY2RrLWhlYWRlci1jZWxsIl0sWyJ0aCIsImNkay1oZWFkZXItY2VsbCIsIiJdXSxob3N0QXR0cnM6WyJyb2xlIiwiY29sdW1uaGVhZGVyIiwxLCJjZGstaGVhZGVyLWNlbGwiXSxmZWF0dXJlczpbaGddfSksVVouY3RvclBhcmFtZXRlcnM9KCk9Plt7dHlwZTpWWn0se3R5cGU6eHV9XTtjbGFzcyBXWiBleHRlbmRzIGpae2NvbnN0cnVjdG9yKHQsbil7c3VwZXIodCxuKX19V1ouybVmYWM9ZnVuY3Rpb24gdChuKXtyZXR1cm4gbmV3KG58fFdaKShaZyhWWiksWmcoeHUpKX0sV1ouybVkaXI9dm8oe3R5cGU6V1osc2VsZWN0b3JzOltbImNkay1mb290ZXItY2VsbCJdLFsidGQiLCJjZGstZm9vdGVyLWNlbGwiLCIiXV0saG9zdEF0dHJzOlsicm9sZSIsImdyaWRjZWxsIiwxLCJjZGstZm9vdGVyLWNlbGwiXSxmZWF0dXJlczpbaGddfSksV1ouY3RvclBhcmFtZXRlcnM9KCk9Plt7dHlwZTpWWn0se3R5cGU6eHV9XTtjbGFzcyBHWiBleHRlbmRzIGpae2NvbnN0cnVjdG9yKHQsbil7c3VwZXIodCxuKX19R1ouybVmYWM9ZnVuY3Rpb24gdChuKXtyZXR1cm4gbmV3KG58fEdaKShaZyhWWiksWmcoeHUpKX0sR1ouybVkaXI9dm8oe3R5cGU6R1osc2VsZWN0b3JzOltbImNkay1jZWxsIl0sWyJ0ZCIsImNkay1jZWxsIiwiIl1dLGhvc3RBdHRyczpbInJvbGUiLCJncmlkY2VsbCIsMSwiY2RrLWNlbGwiXSxmZWF0dXJlczpbaGddfSksR1ouY3RvclBhcmFtZXRlcnM9KCk9Plt7dHlwZTpWWn0se3R5cGU6eHV9XQovKioKICAgICAqIEBsaWNlbnNlCiAgICAgKiBDb3B5cmlnaHQgR29vZ2xlIExMQyBBbGwgUmlnaHRzIFJlc2VydmVkLgogICAgICoKICAgICAqIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGFuIE1JVC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCiAgICAgKiBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlIGF0IGh0dHBzOi8vYW5ndWxhci5pby9saWNlbnNlCiAgICAgKi87Y2xhc3MgWVp7Y29uc3RydWN0b3IoKXt0aGlzLnRhc2tzPVtdLHRoaXMuZW5kVGFza3M9W119fWNvbnN0IHFaPW5ldyBGYSgiX0NPQUxFU0NFRF9TVFlMRV9TQ0hFRFVMRVIiKTtjbGFzcyBaWntjb25zdHJ1Y3Rvcih0KXt0aGlzLl9uZ1pvbmU9dCx0aGlzLl9jdXJyZW50U2NoZWR1bGU9bnVsbCx0aGlzLl9kZXN0cm95ZWQ9bmV3IHh9c2NoZWR1bGUodCl7dGhpcy5fY3JlYXRlU2NoZWR1bGVJZk5lZWRlZCgpLHRoaXMuX2N1cnJlbnRTY2hlZHVsZS50YXNrcy5wdXNoKHQpfXNjaGVkdWxlRW5kKHQpe3RoaXMuX2NyZWF0ZVNjaGVkdWxlSWZOZWVkZWQoKSx0aGlzLl9jdXJyZW50U2NoZWR1bGUuZW5kVGFza3MucHVzaCh0KX1uZ09uRGVzdHJveSgpe3RoaXMuX2Rlc3Ryb3llZC5uZXh0KCksdGhpcy5fZGVzdHJveWVkLmNvbXBsZXRlKCl9X2NyZWF0ZVNjaGVkdWxlSWZOZWVkZWQoKXt0aGlzLl9jdXJyZW50U2NoZWR1bGV8fCh0aGlzLl9jdXJyZW50U2NoZWR1bGU9bmV3IFlaLHRoaXMuX2dldFNjaGVkdWxlT2JzZXJ2YWJsZSgpLnBpcGUoZGUodGhpcy5fZGVzdHJveWVkKSkuc3Vic2NyaWJlKCgoKT0+e2Zvcig7dGhpcy5fY3VycmVudFNjaGVkdWxlLnRhc2tzLmxlbmd0aHx8dGhpcy5fY3VycmVudFNjaGVkdWxlLmVuZFRhc2tzLmxlbmd0aDspe2NvbnN0IHQ9dGhpcy5fY3VycmVudFNjaGVkdWxlO3RoaXMuX2N1cnJlbnRTY2hlZHVsZT1uZXcgWVo7Zm9yKGNvbnN0IG4gb2YgdC50YXNrcyluKCk7Zm9yKGNvbnN0IG4gb2YgdC5lbmRUYXNrcyluKCl9dGhpcy5fY3VycmVudFNjaGVkdWxlPW51bGx9KSkpfV9nZXRTY2hlZHVsZU9ic2VydmFibGUoKXtyZXR1cm4gdGhpcy5fbmdab25lLmlzU3RhYmxlP1J0KFByb21pc2UucmVzb2x2ZSh2b2lkIDApKTp0aGlzLl9uZ1pvbmUub25TdGFibGUucGlwZShUbigxKSl9fVpaLsm1ZmFjPWZ1bmN0aW9uIHQobil7cmV0dXJuIG5ldyhufHxaWikoWmEoSl8pKX0sWlouybVwcm92PVdlKHt0b2tlbjpaWixmYWN0b3J5OlpaLsm1ZmFjfSksWlouY3RvclBhcmFtZXRlcnM9KCk9Plt7dHlwZTpKX31dO2NsYXNzIFhae2NvbnN0cnVjdG9yKHQsbil7dGhpcy50ZW1wbGF0ZT10LHRoaXMuX2RpZmZlcnM9bn1uZ09uQ2hhbmdlcyh0KXtpZighdGhpcy5fY29sdW1uc0RpZmZlcil7Y29uc3Qgbj10LmNvbHVtbnMmJnQuY29sdW1ucy5jdXJyZW50VmFsdWV8fFtdO3RoaXMuX2NvbHVtbnNEaWZmZXI9dGhpcy5fZGlmZmVycy5maW5kKG4pLmNyZWF0ZSgpLHRoaXMuX2NvbHVtbnNEaWZmZXIuZGlmZihuKX19Z2V0Q29sdW1uc0RpZmYoKXtyZXR1cm4gdGhpcy5fY29sdW1uc0RpZmZlci5kaWZmKHRoaXMuY29sdW1ucyl9ZXh0cmFjdENlbGxUZW1wbGF0ZSh0KXtyZXR1cm4gdGhpcyBpbnN0YW5jZW9mIFFaP3QuaGVhZGVyQ2VsbC50ZW1wbGF0ZTp0aGlzIGluc3RhbmNlb2YgJFo/dC5mb290ZXJDZWxsLnRlbXBsYXRlOnQuY2VsbC50ZW1wbGF0ZX19WFouybVmYWM9ZnVuY3Rpb24gdChuKXtyZXR1cm4gbmV3KG58fFhaKShaZyhKdSksWmcoV3UpKX0sWFouybVkaXI9dm8oe3R5cGU6WFosZmVhdHVyZXM6W3ByXX0pLFhaLmN0b3JQYXJhbWV0ZXJzPSgpPT5be3R5cGU6SnV9LHt0eXBlOld1fV07Y29uc3QgSlo9RFooY2xhc3MgZXh0ZW5kcyBYWnt9KTtjbGFzcyBRWiBleHRlbmRzIEpae2NvbnN0cnVjdG9yKHQsbixlKXtzdXBlcih0LG4pLHRoaXMuX3RhYmxlPWV9bmdPbkNoYW5nZXModCl7c3VwZXIubmdPbkNoYW5nZXModCl9fVFaLsm1ZmFjPWZ1bmN0aW9uIHQobil7cmV0dXJuIG5ldyhufHxRWikoWmcoSnUpLFpnKFd1KSxaZyhJWiw4KSl9LFFaLsm1ZGlyPXZvKHt0eXBlOlFaLHNlbGVjdG9yczpbWyIiLCJjZGtIZWFkZXJSb3dEZWYiLCIiXV0saW5wdXRzOntjb2x1bW5zOlsiY2RrSGVhZGVyUm93RGVmIiwiY29sdW1ucyJdLHN0aWNreTpbImNka0hlYWRlclJvd0RlZlN0aWNreSIsInN0aWNreSJdfSxmZWF0dXJlczpbaGcscHJdfSksUVouY3RvclBhcmFtZXRlcnM9KCk9Plt7dHlwZTpKdX0se3R5cGU6V3V9LHt0eXBlOnZvaWQgMCxkZWNvcmF0b3JzOlt7dHlwZTpJZSxhcmdzOltJWl19LHt0eXBlOk5lfV19XTtjb25zdCBLWj1EWihjbGFzcyBleHRlbmRzIFhae30pO2NsYXNzICRaIGV4dGVuZHMgS1p7Y29uc3RydWN0b3IodCxuLGUpe3N1cGVyKHQsbiksdGhpcy5fdGFibGU9ZX1uZ09uQ2hhbmdlcyh0KXtzdXBlci5uZ09uQ2hhbmdlcyh0KX19JFouybVmYWM9ZnVuY3Rpb24gdChuKXtyZXR1cm4gbmV3KG58fCRaKShaZyhKdSksWmcoV3UpLFpnKElaLDgpKX0sJFouybVkaXI9dm8oe3R5cGU6JFosc2VsZWN0b3JzOltbIiIsImNka0Zvb3RlclJvd0RlZiIsIiJdXSxpbnB1dHM6e2NvbHVtbnM6WyJjZGtGb290ZXJSb3dEZWYiLCJjb2x1bW5zIl0sc3RpY2t5OlsiY2RrRm9vdGVyUm93RGVmU3RpY2t5Iiwic3RpY2t5Il19LGZlYXR1cmVzOltoZyxwcl19KSwkWi5jdG9yUGFyYW1ldGVycz0oKT0+W3t0eXBlOkp1fSx7dHlwZTpXdX0se3R5cGU6dm9pZCAwLGRlY29yYXRvcnM6W3t0eXBlOkllLGFyZ3M6W0laXX0se3R5cGU6TmV9XX1dO2NsYXNzIHRYIGV4dGVuZHMgWFp7Y29uc3RydWN0b3IodCxuLGUpe3N1cGVyKHQsbiksdGhpcy5fdGFibGU9ZX19dFguybVmYWM9ZnVuY3Rpb24gdChuKXtyZXR1cm4gbmV3KG58fHRYKShaZyhKdSksWmcoV3UpLFpnKElaLDgpKX0sdFguybVkaXI9dm8oe3R5cGU6dFgsc2VsZWN0b3JzOltbIiIsImNka1Jvd0RlZiIsIiJdXSxpbnB1dHM6e2NvbHVtbnM6WyJjZGtSb3dEZWZDb2x1bW5zIiwiY29sdW1ucyJdLHdoZW46WyJjZGtSb3dEZWZXaGVuIiwid2hlbiJdfSxmZWF0dXJlczpbaGddfSksdFguY3RvclBhcmFtZXRlcnM9KCk9Plt7dHlwZTpKdX0se3R5cGU6V3V9LHt0eXBlOnZvaWQgMCxkZWNvcmF0b3JzOlt7dHlwZTpJZSxhcmdzOltJWl19LHt0eXBlOk5lfV19XTtjbGFzcyBuWHtjb25zdHJ1Y3Rvcih0KXt0aGlzLl92aWV3Q29udGFpbmVyPXQsblgubW9zdFJlY2VudENlbGxPdXRsZXQ9dGhpc31uZ09uRGVzdHJveSgpe25YLm1vc3RSZWNlbnRDZWxsT3V0bGV0PT09dGhpcyYmKG5YLm1vc3RSZWNlbnRDZWxsT3V0bGV0PW51bGwpfX1uWC7JtWZhYz1mdW5jdGlvbiB0KG4pe3JldHVybiBuZXcobnx8blgpKFpnKCR1KSl9LG5YLsm1ZGlyPXZvKHt0eXBlOm5YLHNlbGVjdG9yczpbWyIiLCJjZGtDZWxsT3V0bGV0IiwiIl1dfSksblgubW9zdFJlY2VudENlbGxPdXRsZXQ9bnVsbCxuWC5jdG9yUGFyYW1ldGVycz0oKT0+W3t0eXBlOiR1fV07Y2xhc3MgZVh7fWVYLsm1ZmFjPWZ1bmN0aW9uIHQobil7cmV0dXJuIG5ldyhufHxlWCl9LGVYLsm1Y21wPV9vKHt0eXBlOmVYLHNlbGVjdG9yczpbWyJjZGstaGVhZGVyLXJvdyJdLFsidHIiLCJjZGstaGVhZGVyLXJvdyIsIiJdXSxob3N0QXR0cnM6WyJyb2xlIiwicm93IiwxLCJjZGstaGVhZGVyLXJvdyJdLGRlY2xzOjEsdmFyczowLGNvbnN0czpbWyJjZGtDZWxsT3V0bGV0IiwiIl1dLHRlbXBsYXRlOmZ1bmN0aW9uIHQobixlKXsxJm4mJmFwKDAsMCl9LGRpcmVjdGl2ZXM6W25YXSxlbmNhcHN1bGF0aW9uOjJ9KTtjbGFzcyBhWHt9YVguybVmYWM9ZnVuY3Rpb24gdChuKXtyZXR1cm4gbmV3KG58fGFYKX0sYVguybVjbXA9X28oe3R5cGU6YVgsc2VsZWN0b3JzOltbImNkay1mb290ZXItcm93Il0sWyJ0ciIsImNkay1mb290ZXItcm93IiwiIl1dLGhvc3RBdHRyczpbInJvbGUiLCJyb3ciLDEsImNkay1mb290ZXItcm93Il0sZGVjbHM6MSx2YXJzOjAsY29uc3RzOltbImNka0NlbGxPdXRsZXQiLCIiXV0sdGVtcGxhdGU6ZnVuY3Rpb24gdChuLGUpezEmbiYmYXAoMCwwKX0sZGlyZWN0aXZlczpbblhdLGVuY2Fwc3VsYXRpb246Mn0pO2NsYXNzIG9Ye31vWC7JtWZhYz1mdW5jdGlvbiB0KG4pe3JldHVybiBuZXcobnx8b1gpfSxvWC7JtWNtcD1fbyh7dHlwZTpvWCxzZWxlY3RvcnM6W1siY2RrLXJvdyJdLFsidHIiLCJjZGstcm93IiwiIl1dLGhvc3RBdHRyczpbInJvbGUiLCJyb3ciLDEsImNkay1yb3ciXSxkZWNsczoxLHZhcnM6MCxjb25zdHM6W1siY2RrQ2VsbE91dGxldCIsIiJdXSx0ZW1wbGF0ZTpmdW5jdGlvbiB0KG4sZSl7MSZuJiZhcCgwLDApfSxkaXJlY3RpdmVzOltuWF0sZW5jYXBzdWxhdGlvbjoyfSk7Y2xhc3Mgclh7Y29uc3RydWN0b3IodCl7dGhpcy50ZW1wbGF0ZVJlZj10fX1yWC7JtWZhYz1mdW5jdGlvbiB0KG4pe3JldHVybiBuZXcobnx8clgpKFpnKEp1KSl9LHJYLsm1ZGlyPXZvKHt0eXBlOnJYLHNlbGVjdG9yczpbWyJuZy10ZW1wbGF0ZSIsImNka05vRGF0YVJvdyIsIiJdXX0pLHJYLmN0b3JQYXJhbWV0ZXJzPSgpPT5be3R5cGU6SnV9XQovKioKICAgICAqIEBsaWNlbnNlCiAgICAgKiBDb3B5cmlnaHQgR29vZ2xlIExMQyBBbGwgUmlnaHRzIFJlc2VydmVkLgogICAgICoKICAgICAqIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGFuIE1JVC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCiAgICAgKiBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlIGF0IGh0dHBzOi8vYW5ndWxhci5pby9saWNlbnNlCiAgICAgKi87Y29uc3QgaVg9WyJ0b3AiLCJib3R0b20iLCJsZWZ0IiwicmlnaHQiXTtjbGFzcyBjWHtjb25zdHJ1Y3Rvcih0LG4sZSxhLG89ITAscj0hMCl7dGhpcy5faXNOYXRpdmVIdG1sVGFibGU9dCx0aGlzLl9zdGlja0NlbGxDc3M9bix0aGlzLmRpcmVjdGlvbj1lLHRoaXMuX2NvYWxlc2NlZFN0eWxlU2NoZWR1bGVyPWEsdGhpcy5faXNCcm93c2VyPW8sdGhpcy5fbmVlZHNQb3NpdGlvblN0aWNreU9uRWxlbWVudD1yfWNsZWFyU3RpY2t5UG9zaXRpb25pbmcodCxuKXtjb25zdCBlPVtdO2Zvcihjb25zdCBuIG9mIHQpaWYobi5ub2RlVHlwZT09PW4uRUxFTUVOVF9OT0RFKXtlLnB1c2gobik7Zm9yKGxldCB0PTA7dDxuLmNoaWxkcmVuLmxlbmd0aDt0KyspZS5wdXNoKG4uY2hpbGRyZW5bdF0pfXRoaXMuX3NjaGVkdWxlU3R5bGVDaGFuZ2VzKCgoKT0+e2Zvcihjb25zdCB0IG9mIGUpdGhpcy5fcmVtb3ZlU3RpY2t5U3R5bGUodCxuKX0pKX11cGRhdGVTdGlja3lDb2x1bW5zKHQsbixlKXtpZighdC5sZW5ndGh8fCF0aGlzLl9pc0Jyb3dzZXJ8fCFuLnNvbWUoKHQ9PnQpKSYmIWUuc29tZSgodD0+dCkpKXJldHVybjtjb25zdCBhPXRbMF0sbz1hLmNoaWxkcmVuLmxlbmd0aCxyPXRoaXMuX2dldENlbGxXaWR0aHMoYSksaT10aGlzLl9nZXRTdGlja3lTdGFydENvbHVtblBvc2l0aW9ucyhyLG4pLGM9dGhpcy5fZ2V0U3RpY2t5RW5kQ29sdW1uUG9zaXRpb25zKHIsZSk7dGhpcy5fc2NoZWR1bGVTdHlsZUNoYW5nZXMoKCgpPT57Y29uc3QgYT0icnRsIj09PXRoaXMuZGlyZWN0aW9uLHI9YT8icmlnaHQiOiJsZWZ0IixzPWE/ImxlZnQiOiJyaWdodCI7Zm9yKGNvbnN0IGEgb2YgdClmb3IobGV0IHQ9MDt0PG87dCsrKXtjb25zdCBvPWEuY2hpbGRyZW5bdF07blt0XSYmdGhpcy5fYWRkU3RpY2t5U3R5bGUobyxyLGlbdF0pLGVbdF0mJnRoaXMuX2FkZFN0aWNreVN0eWxlKG8scyxjW3RdKX19KSl9c3RpY2tSb3dzKHQsbixlKXtpZighdGhpcy5faXNCcm93c2VyKXJldHVybjtjb25zdCBhPSJib3R0b20iPT09ZT90LnNsaWNlKCkucmV2ZXJzZSgpOnQsbz0iYm90dG9tIj09PWU/bi5zbGljZSgpLnJldmVyc2UoKTpuLHI9W10saT1bXTtmb3IobGV0IHQ9MCxuPTA7dDxhLmxlbmd0aDt0Kyspe2lmKHJbdF09biwhb1t0XSljb250aW51ZTtjb25zdCBlPWFbdF07aVt0XT10aGlzLl9pc05hdGl2ZUh0bWxUYWJsZT9BcnJheS5mcm9tKGUuY2hpbGRyZW4pOltlXSx0IT09YS5sZW5ndGgtMSYmKG4rPWUuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCkuaGVpZ2h0KX10aGlzLl9zY2hlZHVsZVN0eWxlQ2hhbmdlcygoKCk9Pntmb3IobGV0IHQ9MDt0PGEubGVuZ3RoO3QrKyl7aWYoIW9bdF0pY29udGludWU7Y29uc3Qgbj1yW3RdO2Zvcihjb25zdCBhIG9mIGlbdF0pdGhpcy5fYWRkU3RpY2t5U3R5bGUoYSxlLG4pfX0pKX11cGRhdGVTdGlja3lGb290ZXJDb250YWluZXIodCxuKXtpZighdGhpcy5faXNOYXRpdmVIdG1sVGFibGUpcmV0dXJuO2NvbnN0IGU9dC5xdWVyeVNlbGVjdG9yKCJ0Zm9vdCIpO3RoaXMuX3NjaGVkdWxlU3R5bGVDaGFuZ2VzKCgoKT0+e24uc29tZSgodD0+IXQpKT90aGlzLl9yZW1vdmVTdGlja3lTdHlsZShlLFsiYm90dG9tIl0pOnRoaXMuX2FkZFN0aWNreVN0eWxlKGUsImJvdHRvbSIsMCl9KSl9X3JlbW92ZVN0aWNreVN0eWxlKHQsbil7Zm9yKGNvbnN0IGUgb2Ygbil0LnN0eWxlW2VdPSIiO2lYLnNvbWUoKGU9Pi0xPT09bi5pbmRleE9mKGUpJiZ0LnN0eWxlW2VdKSk/dC5zdHlsZS56SW5kZXg9dGhpcy5fZ2V0Q2FsY3VsYXRlZFpJbmRleCh0KToodC5zdHlsZS56SW5kZXg9IiIsdGhpcy5fbmVlZHNQb3NpdGlvblN0aWNreU9uRWxlbWVudCYmKHQuc3R5bGUucG9zaXRpb249IiIpLHQuY2xhc3NMaXN0LnJlbW92ZSh0aGlzLl9zdGlja0NlbGxDc3MpKX1fYWRkU3RpY2t5U3R5bGUodCxuLGUpe3QuY2xhc3NMaXN0LmFkZCh0aGlzLl9zdGlja0NlbGxDc3MpLHQuc3R5bGVbbl09YCR7ZX1weGAsdC5zdHlsZS56SW5kZXg9dGhpcy5fZ2V0Q2FsY3VsYXRlZFpJbmRleCh0KSx0aGlzLl9uZWVkc1Bvc2l0aW9uU3RpY2t5T25FbGVtZW50JiYodC5zdHlsZS5jc3NUZXh0Kz0icG9zaXRpb246IC13ZWJraXQtc3RpY2t5OyBwb3NpdGlvbjogc3RpY2t5OyAiKX1fZ2V0Q2FsY3VsYXRlZFpJbmRleCh0KXtjb25zdCBuPXt0b3A6MTAwLGJvdHRvbToxMCxsZWZ0OjEscmlnaHQ6MX07bGV0IGU9MDtmb3IoY29uc3QgYSBvZiBpWCl0LnN0eWxlW2FdJiYoZSs9blthXSk7cmV0dXJuIGU/YCR7ZX1gOiIifV9nZXRDZWxsV2lkdGhzKHQpe2NvbnN0IG49W10sZT10LmNoaWxkcmVuO2ZvcihsZXQgdD0wO3Q8ZS5sZW5ndGg7dCsrKW4ucHVzaChlW3RdLmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpLndpZHRoKTtyZXR1cm4gbn1fZ2V0U3RpY2t5U3RhcnRDb2x1bW5Qb3NpdGlvbnModCxuKXtjb25zdCBlPVtdO2xldCBhPTA7Zm9yKGxldCBvPTA7bzx0Lmxlbmd0aDtvKyspbltvXSYmKGVbb109YSxhKz10W29dKTtyZXR1cm4gZX1fZ2V0U3RpY2t5RW5kQ29sdW1uUG9zaXRpb25zKHQsbil7Y29uc3QgZT1bXTtsZXQgYT0wO2ZvcihsZXQgbz10Lmxlbmd0aDtvPjA7by0tKW5bb10mJihlW29dPWEsYSs9dFtvXSk7cmV0dXJuIGV9X3NjaGVkdWxlU3R5bGVDaGFuZ2VzKHQpe3RoaXMuX2NvYWxlc2NlZFN0eWxlU2NoZWR1bGVyP3RoaXMuX2NvYWxlc2NlZFN0eWxlU2NoZWR1bGVyLnNjaGVkdWxlKHQpOnQoKX19Ci8qKgogICAgICogQGxpY2Vuc2UKICAgICAqIENvcHlyaWdodCBHb29nbGUgTExDIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCiAgICAgKgogICAgICogVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYW4gTUlULXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKICAgICAqIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUgYXQgaHR0cHM6Ly9hbmd1bGFyLmlvL2xpY2Vuc2UKICAgICAqL2Z1bmN0aW9uIHNYKHQpe3JldHVybiBFcnJvcihgQ291bGQgbm90IGZpbmQgY29sdW1uIHdpdGggaWQgIiR7dH0iLmApfQovKioKICAgICAqIEBsaWNlbnNlCiAgICAgKiBDb3B5cmlnaHQgR29vZ2xlIExMQyBBbGwgUmlnaHRzIFJlc2VydmVkLgogICAgICoKICAgICAqIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGFuIE1JVC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCiAgICAgKiBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlIGF0IGh0dHBzOi8vYW5ndWxhci5pby9saWNlbnNlCiAgICAgKi8KY2xhc3MgbFh7Y29uc3RydWN0b3IodCxuKXt0aGlzLnZpZXdDb250YWluZXI9dCx0aGlzLmVsZW1lbnRSZWY9bn19bFguybVmYWM9ZnVuY3Rpb24gdChuKXtyZXR1cm4gbmV3KG58fGxYKShaZygkdSksWmcoeHUpKX0sbFguybVkaXI9dm8oe3R5cGU6bFgsc2VsZWN0b3JzOltbIiIsInJvd091dGxldCIsIiJdXX0pLGxYLmN0b3JQYXJhbWV0ZXJzPSgpPT5be3R5cGU6JHV9LHt0eXBlOnh1fV07Y2xhc3MgbVh7Y29uc3RydWN0b3IodCxuKXt0aGlzLnZpZXdDb250YWluZXI9dCx0aGlzLmVsZW1lbnRSZWY9bn19bVguybVmYWM9ZnVuY3Rpb24gdChuKXtyZXR1cm4gbmV3KG58fG1YKShaZygkdSksWmcoeHUpKX0sbVguybVkaXI9dm8oe3R5cGU6bVgsc2VsZWN0b3JzOltbIiIsImhlYWRlclJvd091dGxldCIsIiJdXX0pLG1YLmN0b3JQYXJhbWV0ZXJzPSgpPT5be3R5cGU6JHV9LHt0eXBlOnh1fV07Y2xhc3MgZFh7Y29uc3RydWN0b3IodCxuKXt0aGlzLnZpZXdDb250YWluZXI9dCx0aGlzLmVsZW1lbnRSZWY9bn19ZFguybVmYWM9ZnVuY3Rpb24gdChuKXtyZXR1cm4gbmV3KG58fGRYKShaZygkdSksWmcoeHUpKX0sZFguybVkaXI9dm8oe3R5cGU6ZFgsc2VsZWN0b3JzOltbIiIsImZvb3RlclJvd091dGxldCIsIiJdXX0pLGRYLmN0b3JQYXJhbWV0ZXJzPSgpPT5be3R5cGU6JHV9LHt0eXBlOnh1fV07Y2xhc3MgZ1h7Y29uc3RydWN0b3IodCxuKXt0aGlzLnZpZXdDb250YWluZXI9dCx0aGlzLmVsZW1lbnRSZWY9bn19Z1guybVmYWM9ZnVuY3Rpb24gdChuKXtyZXR1cm4gbmV3KG58fGdYKShaZygkdSksWmcoeHUpKX0sZ1guybVkaXI9dm8oe3R5cGU6Z1gsc2VsZWN0b3JzOltbIiIsIm5vRGF0YVJvd091dGxldCIsIiJdXX0pLGdYLmN0b3JQYXJhbWV0ZXJzPSgpPT5be3R5cGU6JHV9LHt0eXBlOnh1fV07Y2xhc3MgcFh7Y29uc3RydWN0b3IodCxuLGUsYSxvLHIsaSxjLHMpe3RoaXMuX2RpZmZlcnM9dCx0aGlzLl9jaGFuZ2VEZXRlY3RvclJlZj1uLHRoaXMuX2VsZW1lbnRSZWY9ZSx0aGlzLl9kaXI9byx0aGlzLl9wbGF0Zm9ybT1pLHRoaXMuX3ZpZXdSZXBlYXRlcj1jLHRoaXMuX2NvYWxlc2NlZFN0eWxlU2NoZWR1bGVyPXMsdGhpcy5fb25EZXN0cm95PW5ldyB4LHRoaXMuX2NvbHVtbkRlZnNCeU5hbWU9bmV3IE1hcCx0aGlzLl9jdXN0b21Db2x1bW5EZWZzPW5ldyBTZXQsdGhpcy5fY3VzdG9tUm93RGVmcz1uZXcgU2V0LHRoaXMuX2N1c3RvbUhlYWRlclJvd0RlZnM9bmV3IFNldCx0aGlzLl9jdXN0b21Gb290ZXJSb3dEZWZzPW5ldyBTZXQsdGhpcy5faGVhZGVyUm93RGVmQ2hhbmdlZD0hMCx0aGlzLl9mb290ZXJSb3dEZWZDaGFuZ2VkPSEwLHRoaXMuX2NhY2hlZFJlbmRlclJvd3NNYXA9bmV3IE1hcCx0aGlzLnN0aWNreUNzc0NsYXNzPSJjZGstdGFibGUtc3RpY2t5Iix0aGlzLm5lZWRzUG9zaXRpb25TdGlja3lPbkVsZW1lbnQ9ITAsdGhpcy5faXNTaG93aW5nTm9EYXRhUm93PSExLHRoaXMuX211bHRpVGVtcGxhdGVEYXRhUm93cz0hMSx0aGlzLnZpZXdDaGFuZ2U9bmV3IEYoe3N0YXJ0OjAsZW5kOk51bWJlci5NQVhfVkFMVUV9KSxhfHx0aGlzLl9lbGVtZW50UmVmLm5hdGl2ZUVsZW1lbnQuc2V0QXR0cmlidXRlKCJyb2xlIiwiZ3JpZCIpLHRoaXMuX2RvY3VtZW50PXIsdGhpcy5faXNOYXRpdmVIdG1sVGFibGU9IlRBQkxFIj09PXRoaXMuX2VsZW1lbnRSZWYubmF0aXZlRWxlbWVudC5ub2RlTmFtZX1nZXQgdHJhY2tCeSgpe3JldHVybiB0aGlzLl90cmFja0J5Rm59c2V0IHRyYWNrQnkodCl7InVuZGVmaW5lZCIhPXR5cGVvZiBuZ0Rldk1vZGUmJiFuZ0Rldk1vZGV8fG51bGw9PXR8fCJmdW5jdGlvbiI9PXR5cGVvZiB0fHxjb25zb2xlLndhcm4oYHRyYWNrQnkgbXVzdCBiZSBhIGZ1bmN0aW9uLCBidXQgcmVjZWl2ZWQgJHtKU09OLnN0cmluZ2lmeSh0KX0uYCksdGhpcy5fdHJhY2tCeUZuPXR9Z2V0IGRhdGFTb3VyY2UoKXtyZXR1cm4gdGhpcy5fZGF0YVNvdXJjZX1zZXQgZGF0YVNvdXJjZSh0KXt0aGlzLl9kYXRhU291cmNlIT09dCYmdGhpcy5fc3dpdGNoRGF0YVNvdXJjZSh0KX1nZXQgbXVsdGlUZW1wbGF0ZURhdGFSb3dzKCl7cmV0dXJuIHRoaXMuX211bHRpVGVtcGxhdGVEYXRhUm93c31zZXQgbXVsdGlUZW1wbGF0ZURhdGFSb3dzKHQpe3RoaXMuX211bHRpVGVtcGxhdGVEYXRhUm93cz1Hdyh0KSx0aGlzLl9yb3dPdXRsZXQmJnRoaXMuX3Jvd091dGxldC52aWV3Q29udGFpbmVyLmxlbmd0aCYmKHRoaXMuX2ZvcmNlUmVuZGVyRGF0YVJvd3MoKSx0aGlzLnVwZGF0ZVN0aWNreUNvbHVtblN0eWxlcygpKX1uZ09uSW5pdCgpe3RoaXMuX3NldHVwU3RpY2t5U3R5bGVyKCksdGhpcy5faXNOYXRpdmVIdG1sVGFibGUmJnRoaXMuX2FwcGx5TmF0aXZlVGFibGVTZWN0aW9ucygpLHRoaXMuX2RhdGFEaWZmZXI9dGhpcy5fZGlmZmVycy5maW5kKFtdKS5jcmVhdGUoKCh0LG4pPT50aGlzLnRyYWNrQnk/dGhpcy50cmFja0J5KG4uZGF0YUluZGV4LG4uZGF0YSk6bikpfW5nQWZ0ZXJDb250ZW50Q2hlY2tlZCgpe2lmKHRoaXMuX2NhY2hlUm93RGVmcygpLHRoaXMuX2NhY2hlQ29sdW1uRGVmcygpLCF0aGlzLl9oZWFkZXJSb3dEZWZzLmxlbmd0aCYmIXRoaXMuX2Zvb3RlclJvd0RlZnMubGVuZ3RoJiYhdGhpcy5fcm93RGVmcy5sZW5ndGgmJigidW5kZWZpbmVkIj09dHlwZW9mIG5nRGV2TW9kZXx8bmdEZXZNb2RlKSl0aHJvdyhmdW5jdGlvbiB0KCl7cmV0dXJuIEVycm9yKCJNaXNzaW5nIGRlZmluaXRpb25zIGZvciBoZWFkZXIsIGZvb3RlciwgYW5kIHJvdzsgY2Fubm90IGRldGVybWluZSB3aGljaCBjb2x1bW5zIHNob3VsZCBiZSByZW5kZXJlZC4iKX0pKCk7Y29uc3Qgbj10aGlzLl9yZW5kZXJVcGRhdGVkQ29sdW1ucygpfHx0aGlzLl9oZWFkZXJSb3dEZWZDaGFuZ2VkfHx0aGlzLl9mb290ZXJSb3dEZWZDaGFuZ2VkO3RoaXMuX2hlYWRlclJvd0RlZkNoYW5nZWQmJih0aGlzLl9mb3JjZVJlbmRlckhlYWRlclJvd3MoKSx0aGlzLl9oZWFkZXJSb3dEZWZDaGFuZ2VkPSExKSx0aGlzLl9mb290ZXJSb3dEZWZDaGFuZ2VkJiYodGhpcy5fZm9yY2VSZW5kZXJGb290ZXJSb3dzKCksdGhpcy5fZm9vdGVyUm93RGVmQ2hhbmdlZD0hMSksdGhpcy5kYXRhU291cmNlJiZ0aGlzLl9yb3dEZWZzLmxlbmd0aD4wJiYhdGhpcy5fcmVuZGVyQ2hhbmdlU3Vic2NyaXB0aW9uP3RoaXMuX29ic2VydmVSZW5kZXJDaGFuZ2VzKCk6biYmdGhpcy51cGRhdGVTdGlja3lDb2x1bW5TdHlsZXMoKSx0aGlzLl9jaGVja1N0aWNreVN0YXRlcygpfW5nT25EZXN0cm95KCl7dGhpcy5fcm93T3V0bGV0LnZpZXdDb250YWluZXIuY2xlYXIoKSx0aGlzLl9ub0RhdGFSb3dPdXRsZXQudmlld0NvbnRhaW5lci5jbGVhcigpLHRoaXMuX2hlYWRlclJvd091dGxldC52aWV3Q29udGFpbmVyLmNsZWFyKCksdGhpcy5fZm9vdGVyUm93T3V0bGV0LnZpZXdDb250YWluZXIuY2xlYXIoKSx0aGlzLl9jYWNoZWRSZW5kZXJSb3dzTWFwLmNsZWFyKCksdGhpcy5fb25EZXN0cm95Lm5leHQoKSx0aGlzLl9vbkRlc3Ryb3kuY29tcGxldGUoKSxpQSh0aGlzLmRhdGFTb3VyY2UpJiZ0aGlzLmRhdGFTb3VyY2UuZGlzY29ubmVjdCh0aGlzKX1yZW5kZXJSb3dzKCl7dGhpcy5fcmVuZGVyUm93cz10aGlzLl9nZXRBbGxSZW5kZXJSb3dzKCk7Y29uc3QgdD10aGlzLl9kYXRhRGlmZmVyLmRpZmYodGhpcy5fcmVuZGVyUm93cyk7aWYoIXQpcmV0dXJuIHZvaWQgdGhpcy5fdXBkYXRlTm9EYXRhUm93KCk7Y29uc3Qgbj10aGlzLl9yb3dPdXRsZXQudmlld0NvbnRhaW5lcjt0aGlzLl92aWV3UmVwZWF0ZXI/dGhpcy5fdmlld1JlcGVhdGVyLmFwcGx5Q2hhbmdlcyh0LG4sKCh0LG4sZSk9PnRoaXMuX2dldEVtYmVkZGVkVmlld0FyZ3ModC5pdGVtLGUpKSwodD0+dC5pdGVtLmRhdGEpLCh0PT57MT09PXQub3BlcmF0aW9uJiZ0LmNvbnRleHQmJnRoaXMuX3JlbmRlckNlbGxUZW1wbGF0ZUZvckl0ZW0odC5yZWNvcmQuaXRlbS5yb3dEZWYsdC5jb250ZXh0KX0pKTp0LmZvckVhY2hPcGVyYXRpb24oKCh0LGUsYSk9PntpZihudWxsPT10LnByZXZpb3VzSW5kZXgpe2NvbnN0IG49dC5pdGVtO3RoaXMuX3JlbmRlclJvdyh0aGlzLl9yb3dPdXRsZXQsbi5yb3dEZWYsYSx7JGltcGxpY2l0Om4uZGF0YX0pfWVsc2UgaWYobnVsbD09YSluLnJlbW92ZShlKTtlbHNle2NvbnN0IHQ9bi5nZXQoZSk7bi5tb3ZlKHQsYSl9fSkpLHRoaXMuX3VwZGF0ZVJvd0luZGV4Q29udGV4dCgpLHQuZm9yRWFjaElkZW50aXR5Q2hhbmdlKCh0PT57bi5nZXQodC5jdXJyZW50SW5kZXgpLmNvbnRleHQuJGltcGxpY2l0PXQuaXRlbS5kYXRhfSkpLHRoaXMuX3VwZGF0ZU5vRGF0YVJvdygpLHRoaXMudXBkYXRlU3RpY2t5Q29sdW1uU3R5bGVzKCl9YWRkQ29sdW1uRGVmKHQpe3RoaXMuX2N1c3RvbUNvbHVtbkRlZnMuYWRkKHQpfXJlbW92ZUNvbHVtbkRlZih0KXt0aGlzLl9jdXN0b21Db2x1bW5EZWZzLmRlbGV0ZSh0KX1hZGRSb3dEZWYodCl7dGhpcy5fY3VzdG9tUm93RGVmcy5hZGQodCl9cmVtb3ZlUm93RGVmKHQpe3RoaXMuX2N1c3RvbVJvd0RlZnMuZGVsZXRlKHQpfWFkZEhlYWRlclJvd0RlZih0KXt0aGlzLl9jdXN0b21IZWFkZXJSb3dEZWZzLmFkZCh0KSx0aGlzLl9oZWFkZXJSb3dEZWZDaGFuZ2VkPSEwfXJlbW92ZUhlYWRlclJvd0RlZih0KXt0aGlzLl9jdXN0b21IZWFkZXJSb3dEZWZzLmRlbGV0ZSh0KSx0aGlzLl9oZWFkZXJSb3dEZWZDaGFuZ2VkPSEwfWFkZEZvb3RlclJvd0RlZih0KXt0aGlzLl9jdXN0b21Gb290ZXJSb3dEZWZzLmFkZCh0KSx0aGlzLl9mb290ZXJSb3dEZWZDaGFuZ2VkPSEwfXJlbW92ZUZvb3RlclJvd0RlZih0KXt0aGlzLl9jdXN0b21Gb290ZXJSb3dEZWZzLmRlbGV0ZSh0KSx0aGlzLl9mb290ZXJSb3dEZWZDaGFuZ2VkPSEwfXVwZGF0ZVN0aWNreUhlYWRlclJvd1N0eWxlcygpe2NvbnN0IHQ9dGhpcy5fZ2V0UmVuZGVyZWRSb3dzKHRoaXMuX2hlYWRlclJvd091dGxldCksbj10aGlzLl9lbGVtZW50UmVmLm5hdGl2ZUVsZW1lbnQucXVlcnlTZWxlY3RvcigidGhlYWQiKTtuJiYobi5zdHlsZS5kaXNwbGF5PXQubGVuZ3RoPyIiOiJub25lIik7Y29uc3QgZT10aGlzLl9oZWFkZXJSb3dEZWZzLm1hcCgodD0+dC5zdGlja3kpKTt0aGlzLl9zdGlja3lTdHlsZXIuY2xlYXJTdGlja3lQb3NpdGlvbmluZyh0LFsidG9wIl0pLHRoaXMuX3N0aWNreVN0eWxlci5zdGlja1Jvd3ModCxlLCJ0b3AiKSx0aGlzLl9oZWFkZXJSb3dEZWZzLmZvckVhY2goKHQ9PnQucmVzZXRTdGlja3lDaGFuZ2VkKCkpKX11cGRhdGVTdGlja3lGb290ZXJSb3dTdHlsZXMoKXtjb25zdCB0PXRoaXMuX2dldFJlbmRlcmVkUm93cyh0aGlzLl9mb290ZXJSb3dPdXRsZXQpLG49dGhpcy5fZWxlbWVudFJlZi5uYXRpdmVFbGVtZW50LnF1ZXJ5U2VsZWN0b3IoInRmb290Iik7biYmKG4uc3R5bGUuZGlzcGxheT10Lmxlbmd0aD8iIjoibm9uZSIpO2NvbnN0IGU9dGhpcy5fZm9vdGVyUm93RGVmcy5tYXAoKHQ9PnQuc3RpY2t5KSk7dGhpcy5fc3RpY2t5U3R5bGVyLmNsZWFyU3RpY2t5UG9zaXRpb25pbmcodCxbImJvdHRvbSJdKSx0aGlzLl9zdGlja3lTdHlsZXIuc3RpY2tSb3dzKHQsZSwiYm90dG9tIiksdGhpcy5fc3RpY2t5U3R5bGVyLnVwZGF0ZVN0aWNreUZvb3RlckNvbnRhaW5lcih0aGlzLl9lbGVtZW50UmVmLm5hdGl2ZUVsZW1lbnQsZSksdGhpcy5fZm9vdGVyUm93RGVmcy5mb3JFYWNoKCh0PT50LnJlc2V0U3RpY2t5Q2hhbmdlZCgpKSl9dXBkYXRlU3RpY2t5Q29sdW1uU3R5bGVzKCl7Y29uc3QgdD10aGlzLl9nZXRSZW5kZXJlZFJvd3ModGhpcy5faGVhZGVyUm93T3V0bGV0KSxuPXRoaXMuX2dldFJlbmRlcmVkUm93cyh0aGlzLl9yb3dPdXRsZXQpLGU9dGhpcy5fZ2V0UmVuZGVyZWRSb3dzKHRoaXMuX2Zvb3RlclJvd091dGxldCk7dGhpcy5fc3RpY2t5U3R5bGVyLmNsZWFyU3RpY2t5UG9zaXRpb25pbmcoWy4uLnQsLi4ubiwuLi5lXSxbImxlZnQiLCJyaWdodCJdKSx0LmZvckVhY2goKCh0LG4pPT57dGhpcy5fYWRkU3RpY2t5Q29sdW1uU3R5bGVzKFt0XSx0aGlzLl9oZWFkZXJSb3dEZWZzW25dKX0pKSx0aGlzLl9yb3dEZWZzLmZvckVhY2goKHQ9Pntjb25zdCBlPVtdO2ZvcihsZXQgYT0wO2E8bi5sZW5ndGg7YSsrKXRoaXMuX3JlbmRlclJvd3NbYV0ucm93RGVmPT09dCYmZS5wdXNoKG5bYV0pO3RoaXMuX2FkZFN0aWNreUNvbHVtblN0eWxlcyhlLHQpfSkpLGUuZm9yRWFjaCgoKHQsbik9Pnt0aGlzLl9hZGRTdGlja3lDb2x1bW5TdHlsZXMoW3RdLHRoaXMuX2Zvb3RlclJvd0RlZnNbbl0pfSkpLEFycmF5LmZyb20odGhpcy5fY29sdW1uRGVmc0J5TmFtZS52YWx1ZXMoKSkuZm9yRWFjaCgodD0+dC5yZXNldFN0aWNreUNoYW5nZWQoKSkpfV9nZXRBbGxSZW5kZXJSb3dzKCl7Y29uc3QgdD1bXSxuPXRoaXMuX2NhY2hlZFJlbmRlclJvd3NNYXA7dGhpcy5fY2FjaGVkUmVuZGVyUm93c01hcD1uZXcgTWFwO2ZvcihsZXQgZT0wO2U8dGhpcy5fZGF0YS5sZW5ndGg7ZSsrKXtsZXQgYT10aGlzLl9kYXRhW2VdO2NvbnN0IG89dGhpcy5fZ2V0UmVuZGVyUm93c0ZvckRhdGEoYSxlLG4uZ2V0KGEpKTt0aGlzLl9jYWNoZWRSZW5kZXJSb3dzTWFwLmhhcyhhKXx8dGhpcy5fY2FjaGVkUmVuZGVyUm93c01hcC5zZXQoYSxuZXcgV2Vha01hcCk7Zm9yKGxldCBuPTA7bjxvLmxlbmd0aDtuKyspe2xldCBlPW9bbl07Y29uc3QgYT10aGlzLl9jYWNoZWRSZW5kZXJSb3dzTWFwLmdldChlLmRhdGEpO2EuaGFzKGUucm93RGVmKT9hLmdldChlLnJvd0RlZikucHVzaChlKTphLnNldChlLnJvd0RlZixbZV0pLHQucHVzaChlKX19cmV0dXJuIHR9X2dldFJlbmRlclJvd3NGb3JEYXRhKHQsbixlKXtyZXR1cm4gdGhpcy5fZ2V0Um93RGVmcyh0LG4pLm1hcCgoYT0+e2NvbnN0IG89ZSYmZS5oYXMoYSk/ZS5nZXQoYSk6W107aWYoby5sZW5ndGgpe2NvbnN0IHQ9by5zaGlmdCgpO3JldHVybiB0LmRhdGFJbmRleD1uLHR9cmV0dXJue2RhdGE6dCxyb3dEZWY6YSxkYXRhSW5kZXg6bn19KSl9X2NhY2hlQ29sdW1uRGVmcygpe3RoaXMuX2NvbHVtbkRlZnNCeU5hbWUuY2xlYXIoKSxiWCh0aGlzLl9nZXRPd25EZWZzKHRoaXMuX2NvbnRlbnRDb2x1bW5EZWZzKSx0aGlzLl9jdXN0b21Db2x1bW5EZWZzKS5mb3JFYWNoKCh0PT57aWYodGhpcy5fY29sdW1uRGVmc0J5TmFtZS5oYXModC5uYW1lKSYmKCJ1bmRlZmluZWQiPT10eXBlb2YgbmdEZXZNb2RlfHxuZ0Rldk1vZGUpKXRocm93KGZ1bmN0aW9uIG4odCl7cmV0dXJuIEVycm9yKGBEdXBsaWNhdGUgY29sdW1uIGRlZmluaXRpb24gbmFtZSBwcm92aWRlZDogIiR7dH0iLmApfSkodC5uYW1lKTt0aGlzLl9jb2x1bW5EZWZzQnlOYW1lLnNldCh0Lm5hbWUsdCl9KSl9X2NhY2hlUm93RGVmcygpe3RoaXMuX2hlYWRlclJvd0RlZnM9YlgodGhpcy5fZ2V0T3duRGVmcyh0aGlzLl9jb250ZW50SGVhZGVyUm93RGVmcyksdGhpcy5fY3VzdG9tSGVhZGVyUm93RGVmcyksdGhpcy5fZm9vdGVyUm93RGVmcz1iWCh0aGlzLl9nZXRPd25EZWZzKHRoaXMuX2NvbnRlbnRGb290ZXJSb3dEZWZzKSx0aGlzLl9jdXN0b21Gb290ZXJSb3dEZWZzKSx0aGlzLl9yb3dEZWZzPWJYKHRoaXMuX2dldE93bkRlZnModGhpcy5fY29udGVudFJvd0RlZnMpLHRoaXMuX2N1c3RvbVJvd0RlZnMpO2NvbnN0IHQ9dGhpcy5fcm93RGVmcy5maWx0ZXIoKHQ9PiF0LndoZW4pKTtpZighdGhpcy5tdWx0aVRlbXBsYXRlRGF0YVJvd3MmJnQubGVuZ3RoPjEmJigidW5kZWZpbmVkIj09dHlwZW9mIG5nRGV2TW9kZXx8bmdEZXZNb2RlKSl0aHJvdyhmdW5jdGlvbiBuKCl7cmV0dXJuIEVycm9yKCJUaGVyZSBjYW4gb25seSBiZSBvbmUgZGVmYXVsdCByb3cgd2l0aG91dCBhIHdoZW4gcHJlZGljYXRlIGZ1bmN0aW9uLiIpfSkoKTt0aGlzLl9kZWZhdWx0Um93RGVmPXRbMF19X3JlbmRlclVwZGF0ZWRDb2x1bW5zKCl7Y29uc3QgdD0odCxuKT0+dHx8ISFuLmdldENvbHVtbnNEaWZmKCksbj10aGlzLl9yb3dEZWZzLnJlZHVjZSh0LCExKTtuJiZ0aGlzLl9mb3JjZVJlbmRlckRhdGFSb3dzKCk7Y29uc3QgZT10aGlzLl9oZWFkZXJSb3dEZWZzLnJlZHVjZSh0LCExKTtlJiZ0aGlzLl9mb3JjZVJlbmRlckhlYWRlclJvd3MoKTtjb25zdCBhPXRoaXMuX2Zvb3RlclJvd0RlZnMucmVkdWNlKHQsITEpO3JldHVybiBhJiZ0aGlzLl9mb3JjZVJlbmRlckZvb3RlclJvd3MoKSxufHxlfHxhfV9zd2l0Y2hEYXRhU291cmNlKHQpe3RoaXMuX2RhdGE9W10saUEodGhpcy5kYXRhU291cmNlKSYmdGhpcy5kYXRhU291cmNlLmRpc2Nvbm5lY3QodGhpcyksdGhpcy5fcmVuZGVyQ2hhbmdlU3Vic2NyaXB0aW9uJiYodGhpcy5fcmVuZGVyQ2hhbmdlU3Vic2NyaXB0aW9uLnVuc3Vic2NyaWJlKCksdGhpcy5fcmVuZGVyQ2hhbmdlU3Vic2NyaXB0aW9uPW51bGwpLHR8fCh0aGlzLl9kYXRhRGlmZmVyJiZ0aGlzLl9kYXRhRGlmZmVyLmRpZmYoW10pLHRoaXMuX3Jvd091dGxldC52aWV3Q29udGFpbmVyLmNsZWFyKCkpLHRoaXMuX2RhdGFTb3VyY2U9dH1fb2JzZXJ2ZVJlbmRlckNoYW5nZXMoKXtpZighdGhpcy5kYXRhU291cmNlKXJldHVybjtsZXQgdDtpZihpQSh0aGlzLmRhdGFTb3VyY2UpP3Q9dGhpcy5kYXRhU291cmNlLmNvbm5lY3QodGhpcyk6cHQodGhpcy5kYXRhU291cmNlKT90PXRoaXMuZGF0YVNvdXJjZTpBcnJheS5pc0FycmF5KHRoaXMuZGF0YVNvdXJjZSkmJih0PVoodGhpcy5kYXRhU291cmNlKSksdm9pZCAwPT09dCYmKCJ1bmRlZmluZWQiPT10eXBlb2YgbmdEZXZNb2RlfHxuZ0Rldk1vZGUpKXRocm93KGZ1bmN0aW9uIG4oKXtyZXR1cm4gRXJyb3IoIlByb3ZpZGVkIGRhdGEgc291cmNlIGRpZCBub3QgbWF0Y2ggYW4gYXJyYXksIE9ic2VydmFibGUsIG9yIERhdGFTb3VyY2UiKX0pKCk7dGhpcy5fcmVuZGVyQ2hhbmdlU3Vic2NyaXB0aW9uPXQucGlwZShkZSh0aGlzLl9vbkRlc3Ryb3kpKS5zdWJzY3JpYmUoKHQ9Pnt0aGlzLl9kYXRhPXR8fFtdLHRoaXMucmVuZGVyUm93cygpfSkpfV9mb3JjZVJlbmRlckhlYWRlclJvd3MoKXt0aGlzLl9oZWFkZXJSb3dPdXRsZXQudmlld0NvbnRhaW5lci5sZW5ndGg+MCYmdGhpcy5faGVhZGVyUm93T3V0bGV0LnZpZXdDb250YWluZXIuY2xlYXIoKSx0aGlzLl9oZWFkZXJSb3dEZWZzLmZvckVhY2goKCh0LG4pPT50aGlzLl9yZW5kZXJSb3codGhpcy5faGVhZGVyUm93T3V0bGV0LHQsbikpKSx0aGlzLnVwZGF0ZVN0aWNreUhlYWRlclJvd1N0eWxlcygpfV9mb3JjZVJlbmRlckZvb3RlclJvd3MoKXt0aGlzLl9mb290ZXJSb3dPdXRsZXQudmlld0NvbnRhaW5lci5sZW5ndGg+MCYmdGhpcy5fZm9vdGVyUm93T3V0bGV0LnZpZXdDb250YWluZXIuY2xlYXIoKSx0aGlzLl9mb290ZXJSb3dEZWZzLmZvckVhY2goKCh0LG4pPT50aGlzLl9yZW5kZXJSb3codGhpcy5fZm9vdGVyUm93T3V0bGV0LHQsbikpKSx0aGlzLnVwZGF0ZVN0aWNreUZvb3RlclJvd1N0eWxlcygpfV9hZGRTdGlja3lDb2x1bW5TdHlsZXModCxuKXtjb25zdCBlPUFycmF5LmZyb20obi5jb2x1bW5zfHxbXSkubWFwKCh0PT57Y29uc3Qgbj10aGlzLl9jb2x1bW5EZWZzQnlOYW1lLmdldCh0KTtpZighbiYmKCJ1bmRlZmluZWQiPT10eXBlb2YgbmdEZXZNb2RlfHxuZ0Rldk1vZGUpKXRocm93IHNYKHQpO3JldHVybiBufSkpLGE9ZS5tYXAoKHQ9PnQuc3RpY2t5KSksbz1lLm1hcCgodD0+dC5zdGlja3lFbmQpKTt0aGlzLl9zdGlja3lTdHlsZXIudXBkYXRlU3RpY2t5Q29sdW1ucyh0LGEsbyl9X2dldFJlbmRlcmVkUm93cyh0KXtjb25zdCBuPVtdO2ZvcihsZXQgZT0wO2U8dC52aWV3Q29udGFpbmVyLmxlbmd0aDtlKyspe2NvbnN0IGE9dC52aWV3Q29udGFpbmVyLmdldChlKTtuLnB1c2goYS5yb290Tm9kZXNbMF0pfXJldHVybiBufV9nZXRSb3dEZWZzKHQsbil7aWYoMT09dGhpcy5fcm93RGVmcy5sZW5ndGgpcmV0dXJuW3RoaXMuX3Jvd0RlZnNbMF1dO2xldCBlPVtdO2lmKHRoaXMubXVsdGlUZW1wbGF0ZURhdGFSb3dzKWU9dGhpcy5fcm93RGVmcy5maWx0ZXIoKGU9PiFlLndoZW58fGUud2hlbihuLHQpKSk7ZWxzZXtsZXQgYT10aGlzLl9yb3dEZWZzLmZpbmQoKGU9PmUud2hlbiYmZS53aGVuKG4sdCkpKXx8dGhpcy5fZGVmYXVsdFJvd0RlZjthJiZlLnB1c2goYSl9aWYoIWUubGVuZ3RoJiYoInVuZGVmaW5lZCI9PXR5cGVvZiBuZ0Rldk1vZGV8fG5nRGV2TW9kZSkpdGhyb3coZnVuY3Rpb24gYSh0KXtyZXR1cm4gRXJyb3IoYENvdWxkIG5vdCBmaW5kIGEgbWF0Y2hpbmcgcm93IGRlZmluaXRpb24gZm9yIHRoZXByb3ZpZGVkIHJvdyBkYXRhOiAke0pTT04uc3RyaW5naWZ5KHQpfWApfSkodCk7cmV0dXJuIGV9X2dldEVtYmVkZGVkVmlld0FyZ3ModCxuKXtyZXR1cm57dGVtcGxhdGVSZWY6dC5yb3dEZWYudGVtcGxhdGUsY29udGV4dDp7JGltcGxpY2l0OnQuZGF0YX0saW5kZXg6bn19X3JlbmRlclJvdyh0LG4sZSxhPXt9KXtjb25zdCBvPXQudmlld0NvbnRhaW5lci5jcmVhdGVFbWJlZGRlZFZpZXcobi50ZW1wbGF0ZSxhLGUpO3JldHVybiB0aGlzLl9yZW5kZXJDZWxsVGVtcGxhdGVGb3JJdGVtKG4sYSksb31fcmVuZGVyQ2VsbFRlbXBsYXRlRm9ySXRlbSh0LG4pe2ZvcihsZXQgZSBvZiB0aGlzLl9nZXRDZWxsVGVtcGxhdGVzKHQpKW5YLm1vc3RSZWNlbnRDZWxsT3V0bGV0JiZuWC5tb3N0UmVjZW50Q2VsbE91dGxldC5fdmlld0NvbnRhaW5lci5jcmVhdGVFbWJlZGRlZFZpZXcoZSxuKTt0aGlzLl9jaGFuZ2VEZXRlY3RvclJlZi5tYXJrRm9yQ2hlY2soKX1fdXBkYXRlUm93SW5kZXhDb250ZXh0KCl7Y29uc3QgdD10aGlzLl9yb3dPdXRsZXQudmlld0NvbnRhaW5lcjtmb3IobGV0IG49MCxlPXQubGVuZ3RoO248ZTtuKyspe2NvbnN0IGE9dC5nZXQobikuY29udGV4dDthLmNvdW50PWUsYS5maXJzdD0wPT09bixhLmxhc3Q9bj09PWUtMSxhLmV2ZW49biUyPT0wLGEub2RkPSFhLmV2ZW4sdGhpcy5tdWx0aVRlbXBsYXRlRGF0YVJvd3M/KGEuZGF0YUluZGV4PXRoaXMuX3JlbmRlclJvd3Nbbl0uZGF0YUluZGV4LGEucmVuZGVySW5kZXg9bik6YS5pbmRleD10aGlzLl9yZW5kZXJSb3dzW25dLmRhdGFJbmRleH19X2dldENlbGxUZW1wbGF0ZXModCl7cmV0dXJuIHQmJnQuY29sdW1ucz9BcnJheS5mcm9tKHQuY29sdW1ucywobj0+e2NvbnN0IGU9dGhpcy5fY29sdW1uRGVmc0J5TmFtZS5nZXQobik7aWYoIWUmJigidW5kZWZpbmVkIj09dHlwZW9mIG5nRGV2TW9kZXx8bmdEZXZNb2RlKSl0aHJvdyBzWChuKTtyZXR1cm4gdC5leHRyYWN0Q2VsbFRlbXBsYXRlKGUpfSkpOltdfV9hcHBseU5hdGl2ZVRhYmxlU2VjdGlvbnMoKXtjb25zdCB0PXRoaXMuX2RvY3VtZW50LmNyZWF0ZURvY3VtZW50RnJhZ21lbnQoKSxuPVt7dGFnOiJ0aGVhZCIsb3V0bGV0czpbdGhpcy5faGVhZGVyUm93T3V0bGV0XX0se3RhZzoidGJvZHkiLG91dGxldHM6W3RoaXMuX3Jvd091dGxldCx0aGlzLl9ub0RhdGFSb3dPdXRsZXRdfSx7dGFnOiJ0Zm9vdCIsb3V0bGV0czpbdGhpcy5fZm9vdGVyUm93T3V0bGV0XX1dO2Zvcihjb25zdCBlIG9mIG4pe2NvbnN0IG49dGhpcy5fZG9jdW1lbnQuY3JlYXRlRWxlbWVudChlLnRhZyk7bi5zZXRBdHRyaWJ1dGUoInJvbGUiLCJyb3dncm91cCIpO2Zvcihjb25zdCB0IG9mIGUub3V0bGV0cyluLmFwcGVuZENoaWxkKHQuZWxlbWVudFJlZi5uYXRpdmVFbGVtZW50KTt0LmFwcGVuZENoaWxkKG4pfXRoaXMuX2VsZW1lbnRSZWYubmF0aXZlRWxlbWVudC5hcHBlbmRDaGlsZCh0KX1fZm9yY2VSZW5kZXJEYXRhUm93cygpe3RoaXMuX2RhdGFEaWZmZXIuZGlmZihbXSksdGhpcy5fcm93T3V0bGV0LnZpZXdDb250YWluZXIuY2xlYXIoKSx0aGlzLnJlbmRlclJvd3MoKX1fY2hlY2tTdGlja3lTdGF0ZXMoKXtjb25zdCB0PSh0LG4pPT50fHxuLmhhc1N0aWNreUNoYW5nZWQoKTt0aGlzLl9oZWFkZXJSb3dEZWZzLnJlZHVjZSh0LCExKSYmdGhpcy51cGRhdGVTdGlja3lIZWFkZXJSb3dTdHlsZXMoKSx0aGlzLl9mb290ZXJSb3dEZWZzLnJlZHVjZSh0LCExKSYmdGhpcy51cGRhdGVTdGlja3lGb290ZXJSb3dTdHlsZXMoKSxBcnJheS5mcm9tKHRoaXMuX2NvbHVtbkRlZnNCeU5hbWUudmFsdWVzKCkpLnJlZHVjZSh0LCExKSYmdGhpcy51cGRhdGVTdGlja3lDb2x1bW5TdHlsZXMoKX1fc2V0dXBTdGlja3lTdHlsZXIoKXt0aGlzLl9zdGlja3lTdHlsZXI9bmV3IGNYKHRoaXMuX2lzTmF0aXZlSHRtbFRhYmxlLHRoaXMuc3RpY2t5Q3NzQ2xhc3MsdGhpcy5fZGlyP3RoaXMuX2Rpci52YWx1ZToibHRyIix0aGlzLl9jb2FsZXNjZWRTdHlsZVNjaGVkdWxlcix0aGlzLl9wbGF0Zm9ybS5pc0Jyb3dzZXIsdGhpcy5uZWVkc1Bvc2l0aW9uU3RpY2t5T25FbGVtZW50KSwodGhpcy5fZGlyP3RoaXMuX2Rpci5jaGFuZ2U6WigpKS5waXBlKGRlKHRoaXMuX29uRGVzdHJveSkpLnN1YnNjcmliZSgodD0+e3RoaXMuX3N0aWNreVN0eWxlci5kaXJlY3Rpb249dCx0aGlzLnVwZGF0ZVN0aWNreUNvbHVtblN0eWxlcygpfSkpfV9nZXRPd25EZWZzKHQpe3JldHVybiB0LmZpbHRlcigodD0+IXQuX3RhYmxlfHx0Ll90YWJsZT09PXRoaXMpKX1fdXBkYXRlTm9EYXRhUm93KCl7aWYodGhpcy5fbm9EYXRhUm93KXtjb25zdCB0PTA9PT10aGlzLl9yb3dPdXRsZXQudmlld0NvbnRhaW5lci5sZW5ndGg7aWYodCE9PXRoaXMuX2lzU2hvd2luZ05vRGF0YVJvdyl7Y29uc3Qgbj10aGlzLl9ub0RhdGFSb3dPdXRsZXQudmlld0NvbnRhaW5lcjt0P24uY3JlYXRlRW1iZWRkZWRWaWV3KHRoaXMuX25vRGF0YVJvdy50ZW1wbGF0ZVJlZik6bi5jbGVhcigpLHRoaXMuX2lzU2hvd2luZ05vRGF0YVJvdz10fX19fWZ1bmN0aW9uIGJYKHQsbil7cmV0dXJuIHQuY29uY2F0KEFycmF5LmZyb20obikpfQovKioKICAgICAqIEBsaWNlbnNlCiAgICAgKiBDb3B5cmlnaHQgR29vZ2xlIExMQyBBbGwgUmlnaHRzIFJlc2VydmVkLgogICAgICoKICAgICAqIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGFuIE1JVC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCiAgICAgKiBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlIGF0IGh0dHBzOi8vYW5ndWxhci5pby9saWNlbnNlCiAgICAgKi9wWC7JtWZhYz1mdW5jdGlvbiB0KG4pe3JldHVybiBuZXcobnx8cFgpKFpnKFd1KSxaZyhWbSksWmcoeHUpLFhnKCJyb2xlIiksWmcoVVMsOCksWmcoekMpLFpnKFN3KSxaZyhnQSw4KSxaZyhxWiw4KSl9LHBYLsm1Y21wPV9vKHt0eXBlOnBYLHNlbGVjdG9yczpbWyJjZGstdGFibGUiXSxbInRhYmxlIiwiY2RrLXRhYmxlIiwiIl1dLGNvbnRlbnRRdWVyaWVzOmZ1bmN0aW9uIHQobixlLGEpe3ZhciBvOzEmbiYmKEdmKGEsclgsITApLEdmKGEsVlosITApLEdmKGEsdFgsITApLEdmKGEsUVosITApLEdmKGEsJFosITApKSwyJm4mJihWZihvPVpmKCkpJiYoZS5fbm9EYXRhUm93PW8uZmlyc3QpLFZmKG89WmYoKSkmJihlLl9jb250ZW50Q29sdW1uRGVmcz1vKSxWZihvPVpmKCkpJiYoZS5fY29udGVudFJvd0RlZnM9byksVmYobz1aZigpKSYmKGUuX2NvbnRlbnRIZWFkZXJSb3dEZWZzPW8pLFZmKG89WmYoKSkmJihlLl9jb250ZW50Rm9vdGVyUm93RGVmcz1vKSl9LHZpZXdRdWVyeTpmdW5jdGlvbiB0KG4sZSl7dmFyIGE7MSZuJiYoamYobFgsITApLGpmKG1YLCEwKSxqZihkWCwhMCksamYoZ1gsITApKSwyJm4mJihWZihhPVpmKCkpJiYoZS5fcm93T3V0bGV0PWEuZmlyc3QpLFZmKGE9WmYoKSkmJihlLl9oZWFkZXJSb3dPdXRsZXQ9YS5maXJzdCksVmYoYT1aZigpKSYmKGUuX2Zvb3RlclJvd091dGxldD1hLmZpcnN0KSxWZihhPVpmKCkpJiYoZS5fbm9EYXRhUm93T3V0bGV0PWEuZmlyc3QpKX0saG9zdEF0dHJzOlsxLCJjZGstdGFibGUiXSxpbnB1dHM6e3RyYWNrQnk6InRyYWNrQnkiLGRhdGFTb3VyY2U6ImRhdGFTb3VyY2UiLG11bHRpVGVtcGxhdGVEYXRhUm93czoibXVsdGlUZW1wbGF0ZURhdGFSb3dzIn0sZXhwb3J0QXM6WyJjZGtUYWJsZSJdLGZlYXR1cmVzOltNdShbe3Byb3ZpZGU6SVosdXNlRXhpc3Rpbmc6cFh9LHtwcm92aWRlOmdBLHVzZUNsYXNzOnNBfSx7cHJvdmlkZTpxWix1c2VDbGFzczpaWn1dKV0sbmdDb250ZW50U2VsZWN0b3JzOlsiY2FwdGlvbiIsImNvbGdyb3VwLCBjb2wiXSxkZWNsczo2LHZhcnM6MCxjb25zdHM6W1siaGVhZGVyUm93T3V0bGV0IiwiIl0sWyJyb3dPdXRsZXQiLCIiXSxbIm5vRGF0YVJvd091dGxldCIsIiJdLFsiZm9vdGVyUm93T3V0bGV0IiwiIl1dLHRlbXBsYXRlOmZ1bmN0aW9uIHQobixlKXsxJm4mJihicCh6WiksaHAoMCksaHAoMSwxKSxhcCgyLDApLGFwKDMsMSksYXAoNCwyKSxhcCg1LDMpKX0sZGlyZWN0aXZlczpbbVgsbFgsZ1gsZFhdLGVuY2Fwc3VsYXRpb246Mn0pLHBYLmN0b3JQYXJhbWV0ZXJzPSgpPT5be3R5cGU6V3V9LHt0eXBlOlZtfSx7dHlwZTp4dX0se3R5cGU6U3RyaW5nLGRlY29yYXRvcnM6W3t0eXBlOkJlLGFyZ3M6WyJyb2xlIl19XX0se3R5cGU6VVMsZGVjb3JhdG9yczpbe3R5cGU6TmV9XX0se3R5cGU6dm9pZCAwLGRlY29yYXRvcnM6W3t0eXBlOkllLGFyZ3M6W3pDXX1dfSx7dHlwZTpTd30se3R5cGU6dm9pZCAwLGRlY29yYXRvcnM6W3t0eXBlOk5lfSx7dHlwZTpJZSxhcmdzOltnQV19XX0se3R5cGU6WlosZGVjb3JhdG9yczpbe3R5cGU6TmV9LHt0eXBlOkllLGFyZ3M6W3FaXX1dfV0scFgucHJvcERlY29yYXRvcnM9e3RyYWNrQnk6W3t0eXBlOmZffV0sZGF0YVNvdXJjZTpbe3R5cGU6Zl99XSxtdWx0aVRlbXBsYXRlRGF0YVJvd3M6W3t0eXBlOmZffV0sX3Jvd091dGxldDpbe3R5cGU6WGQsYXJnczpbbFgse3N0YXRpYzohMH1dfV0sX2hlYWRlclJvd091dGxldDpbe3R5cGU6WGQsYXJnczpbbVgse3N0YXRpYzohMH1dfV0sX2Zvb3RlclJvd091dGxldDpbe3R5cGU6WGQsYXJnczpbZFgse3N0YXRpYzohMH1dfV0sX25vRGF0YVJvd091dGxldDpbe3R5cGU6WGQsYXJnczpbZ1gse3N0YXRpYzohMH1dfV0sX2NvbnRlbnRDb2x1bW5EZWZzOlt7dHlwZTpxZCxhcmdzOltWWix7ZGVzY2VuZGFudHM6ITB9XX1dLF9jb250ZW50Um93RGVmczpbe3R5cGU6cWQsYXJnczpbdFgse2Rlc2NlbmRhbnRzOiEwfV19XSxfY29udGVudEhlYWRlclJvd0RlZnM6W3t0eXBlOnFkLGFyZ3M6W1FaLHtkZXNjZW5kYW50czohMH1dfV0sX2NvbnRlbnRGb290ZXJSb3dEZWZzOlt7dHlwZTpxZCxhcmdzOlskWix7ZGVzY2VuZGFudHM6ITB9XX1dLF9ub0RhdGFSb3c6W3t0eXBlOlpkLGFyZ3M6W3JYXX1dfTtjbGFzcyB1WHtjb25zdHJ1Y3Rvcih0LG4pe3RoaXMuX3RhYmxlPXQsdGhpcy5fb3B0aW9ucz1uLHRoaXMuanVzdGlmeT0ic3RhcnQiLHRoaXMuX29wdGlvbnM9bnx8e319Z2V0IG5hbWUoKXtyZXR1cm4gdGhpcy5fbmFtZX1zZXQgbmFtZSh0KXt0aGlzLl9uYW1lPXQsdGhpcy5fc3luY0NvbHVtbkRlZk5hbWUoKX1uZ09uSW5pdCgpe2lmKHRoaXMuX3N5bmNDb2x1bW5EZWZOYW1lKCksdm9pZCAwPT09dGhpcy5oZWFkZXJUZXh0JiYodGhpcy5oZWFkZXJUZXh0PXRoaXMuX2NyZWF0ZURlZmF1bHRIZWFkZXJUZXh0KCkpLHRoaXMuZGF0YUFjY2Vzc29yfHwodGhpcy5kYXRhQWNjZXNzb3I9dGhpcy5fb3B0aW9ucy5kZWZhdWx0RGF0YUFjY2Vzc29yfHwoKHQsbik9PnRbbl0pKSx0aGlzLl90YWJsZSl0aGlzLmNvbHVtbkRlZi5jZWxsPXRoaXMuY2VsbCx0aGlzLmNvbHVtbkRlZi5oZWFkZXJDZWxsPXRoaXMuaGVhZGVyQ2VsbCx0aGlzLl90YWJsZS5hZGRDb2x1bW5EZWYodGhpcy5jb2x1bW5EZWYpO2Vsc2UgaWYoInVuZGVmaW5lZCI9PXR5cGVvZiBuZ0Rldk1vZGV8fG5nRGV2TW9kZSl0aHJvdyhmdW5jdGlvbiB0KCl7cmV0dXJuIEVycm9yKCJUZXh0IGNvbHVtbiBjb3VsZCBub3QgZmluZCBhIHBhcmVudCB0YWJsZSBmb3IgcmVnaXN0cmF0aW9uLiIpfSkoKX1uZ09uRGVzdHJveSgpe3RoaXMuX3RhYmxlJiZ0aGlzLl90YWJsZS5yZW1vdmVDb2x1bW5EZWYodGhpcy5jb2x1bW5EZWYpfV9jcmVhdGVEZWZhdWx0SGVhZGVyVGV4dCgpe2NvbnN0IHQ9dGhpcy5uYW1lO2lmKCF0JiYoInVuZGVmaW5lZCI9PXR5cGVvZiBuZ0Rldk1vZGV8fG5nRGV2TW9kZSkpdGhyb3coZnVuY3Rpb24gbigpe3JldHVybiBFcnJvcigiVGFibGUgdGV4dCBjb2x1bW4gbXVzdCBoYXZlIGEgbmFtZS4iKX0pKCk7cmV0dXJuIHRoaXMuX29wdGlvbnMmJnRoaXMuX29wdGlvbnMuZGVmYXVsdEhlYWRlclRleHRUcmFuc2Zvcm0/dGhpcy5fb3B0aW9ucy5kZWZhdWx0SGVhZGVyVGV4dFRyYW5zZm9ybSh0KTp0WzBdLnRvVXBwZXJDYXNlKCkrdC5zbGljZSgxKX1fc3luY0NvbHVtbkRlZk5hbWUoKXt0aGlzLmNvbHVtbkRlZiYmKHRoaXMuY29sdW1uRGVmLm5hbWU9dGhpcy5uYW1lKX19dVguybVmYWM9ZnVuY3Rpb24gdChuKXtyZXR1cm4gbmV3KG58fHVYKShaZyhwWCw4KSxaZyhOWiw4KSl9LHVYLsm1Y21wPV9vKHt0eXBlOnVYLHNlbGVjdG9yczpbWyJjZGstdGV4dC1jb2x1bW4iXV0sdmlld1F1ZXJ5OmZ1bmN0aW9uIHQobixlKXt2YXIgYTsxJm4mJihqZihWWiwhMCksamYoRlosITApLGpmKExaLCEwKSksMiZuJiYoVmYoYT1aZigpKSYmKGUuY29sdW1uRGVmPWEuZmlyc3QpLFZmKGE9WmYoKSkmJihlLmNlbGw9YS5maXJzdCksVmYoYT1aZigpKSYmKGUuaGVhZGVyQ2VsbD1hLmZpcnN0KSl9LGlucHV0czp7anVzdGlmeToianVzdGlmeSIsbmFtZToibmFtZSIsaGVhZGVyVGV4dDoiaGVhZGVyVGV4dCIsZGF0YUFjY2Vzc29yOiJkYXRhQWNjZXNzb3IifSxkZWNsczozLHZhcnM6MCxjb25zdHM6W1siY2RrQ29sdW1uRGVmIiwiIl0sWyJjZGstaGVhZGVyLWNlbGwiLCIiLDMsInRleHQtYWxpZ24iLDQsImNka0hlYWRlckNlbGxEZWYiXSxbImNkay1jZWxsIiwiIiwzLCJ0ZXh0LWFsaWduIiw0LCJjZGtDZWxsRGVmIl0sWyJjZGstaGVhZGVyLWNlbGwiLCIiXSxbImNkay1jZWxsIiwiIl1dLHRlbXBsYXRlOmZ1bmN0aW9uIHQobixlKXsxJm4mJihucCgwLDApLFlnKDEsUlosMiwzLCJ0aCIsMSksWWcoMixUWiwyLDMsInRkIiwyKSxlcCgpKX0sZGlyZWN0aXZlczpbVlosTFosRlosVVosR1pdLGVuY2Fwc3VsYXRpb246Mn0pLHVYLmN0b3JQYXJhbWV0ZXJzPSgpPT5be3R5cGU6cFgsZGVjb3JhdG9yczpbe3R5cGU6TmV9XX0se3R5cGU6dm9pZCAwLGRlY29yYXRvcnM6W3t0eXBlOk5lfSx7dHlwZTpJZSxhcmdzOltOWl19XX1dLHVYLnByb3BEZWNvcmF0b3JzPXtuYW1lOlt7dHlwZTpmX31dLGhlYWRlclRleHQ6W3t0eXBlOmZffV0sZGF0YUFjY2Vzc29yOlt7dHlwZTpmX31dLGp1c3RpZnk6W3t0eXBlOmZffV0sY29sdW1uRGVmOlt7dHlwZTpYZCxhcmdzOltWWix7c3RhdGljOiEwfV19XSxjZWxsOlt7dHlwZTpYZCxhcmdzOltGWix7c3RhdGljOiEwfV19XSxoZWFkZXJDZWxsOlt7dHlwZTpYZCxhcmdzOltMWix7c3RhdGljOiEwfV19XX07Y2xhc3MgZlh7fWZYLsm1bW9kPXhvKHt0eXBlOmZYfSksZlguybVpbmo9R2Uoe2ZhY3Rvcnk6ZnVuY3Rpb24gdChuKXtyZXR1cm4gbmV3KG58fGZYKX0saW1wb3J0czpbW3ZBXV19KSwoInVuZGVmaW5lZCI9PXR5cGVvZiBuZ0ppdE1vZGV8fG5nSml0TW9kZSkmJnlvKGZYLHtkZWNsYXJhdGlvbnM6ZnVuY3Rpb24oKXtyZXR1cm5bcFgsdFgsRlosblgsTFosSFosVlosR1osb1gsVVosV1osZVgsUVosYVgsJFosbFgsbVgsZFgsdVgsclgsZ1hdfSxpbXBvcnRzOmZ1bmN0aW9uKCl7cmV0dXJuW3ZBXX0sZXhwb3J0czpmdW5jdGlvbigpe3JldHVybltwWCx0WCxGWixuWCxMWixIWixWWixHWixvWCxVWixXWixlWCxRWixhWCwkWixsWCxtWCxkWCx1WCxyWCxnWF19fSk7Y29uc3QgaFg9W1tbImNhcHRpb24iXV0sW1siY29sZ3JvdXAiXSxbImNvbCJdXV07ZnVuY3Rpb24gX1godCxuKXtpZigxJnQmJihLZygwLCJ0aCIsMyksSnAoMSksJGcoKSksMiZ0KXtjb25zdCB0PWdwKCk7VHAoInRleHQtYWxpZ24iLHQuanVzdGlmeSksd3MoMSksS3AoIiAiLHQuaGVhZGVyVGV4dCwiICIpfX1mdW5jdGlvbiBDWCh0LG4pe2lmKDEmdCYmKEtnKDAsInRkIiw0KSxKcCgxKSwkZygpKSwyJnQpe2NvbnN0IHQ9bi4kaW1wbGljaXQsZT1ncCgpO1RwKCJ0ZXh0LWFsaWduIixlLmp1c3RpZnkpLHdzKDEpLEtwKCIgIixlLmRhdGFBY2Nlc3Nvcih0LGUubmFtZSksIiAiKX19Y2xhc3MgTVggZXh0ZW5kcyBwWHtjb25zdHJ1Y3Rvcigpe3N1cGVyKC4uLmFyZ3VtZW50cyksdGhpcy5zdGlja3lDc3NDbGFzcz0ibWF0LXRhYmxlLXN0aWNreSIsdGhpcy5uZWVkc1Bvc2l0aW9uU3RpY2t5T25FbGVtZW50PSExfX1NWC7JtWZhYz1mdW5jdGlvbiB0KG4pe3JldHVybiBPWChufHxNWCl9LE1YLsm1Y21wPV9vKHt0eXBlOk1YLHNlbGVjdG9yczpbWyJtYXQtdGFibGUiXSxbInRhYmxlIiwibWF0LXRhYmxlIiwiIl1dLGhvc3RBdHRyczpbMSwibWF0LXRhYmxlIl0sZXhwb3J0QXM6WyJtYXRUYWJsZSJdLGZlYXR1cmVzOltNdShbe3Byb3ZpZGU6Z0EsdXNlQ2xhc3M6c0F9LHtwcm92aWRlOnBYLHVzZUV4aXN0aW5nOk1YfSx7cHJvdmlkZTpJWix1c2VFeGlzdGluZzpNWH0se3Byb3ZpZGU6cVosdXNlQ2xhc3M6Wlp9XSksaGddLG5nQ29udGVudFNlbGVjdG9yczpbImNhcHRpb24iLCJjb2xncm91cCwgY29sIl0sZGVjbHM6Nix2YXJzOjAsY29uc3RzOltbImhlYWRlclJvd091dGxldCIsIiJdLFsicm93T3V0bGV0IiwiIl0sWyJub0RhdGFSb3dPdXRsZXQiLCIiXSxbImZvb3RlclJvd091dGxldCIsIiJdXSx0ZW1wbGF0ZTpmdW5jdGlvbiB0KG4sZSl7MSZuJiYoYnAoaFgpLGhwKDApLGhwKDEsMSksYXAoMiwwKSxhcCgzLDEpLGFwKDQsMiksYXAoNSwzKSl9LGRpcmVjdGl2ZXM6W21YLGxYLGdYLGRYXSxzdHlsZXM6WydtYXQtdGFibGV7ZGlzcGxheTpibG9ja31tYXQtaGVhZGVyLXJvd3ttaW4taGVpZ2h0OjU2cHh9bWF0LXJvdyxtYXQtZm9vdGVyLXJvd3ttaW4taGVpZ2h0OjQ4cHh9bWF0LXJvdyxtYXQtaGVhZGVyLXJvdyxtYXQtZm9vdGVyLXJvd3tkaXNwbGF5OmZsZXg7Ym9yZGVyLXdpZHRoOjA7Ym9yZGVyLWJvdHRvbS13aWR0aDoxcHg7Ym9yZGVyLXN0eWxlOnNvbGlkO2FsaWduLWl0ZW1zOmNlbnRlcjtib3gtc2l6aW5nOmJvcmRlci1ib3h9bWF0LXJvdzo6YWZ0ZXIsbWF0LWhlYWRlci1yb3c6OmFmdGVyLG1hdC1mb290ZXItcm93OjphZnRlcntkaXNwbGF5OmlubGluZS1ibG9jazttaW4taGVpZ2h0OmluaGVyaXQ7Y29udGVudDoiIn1tYXQtY2VsbDpmaXJzdC1vZi10eXBlLG1hdC1oZWFkZXItY2VsbDpmaXJzdC1vZi10eXBlLG1hdC1mb290ZXItY2VsbDpmaXJzdC1vZi10eXBle3BhZGRpbmctbGVmdDoyNHB4fVtkaXI9cnRsXSBtYXQtY2VsbDpmaXJzdC1vZi10eXBlOm5vdCg6b25seS1vZi10eXBlKSxbZGlyPXJ0bF0gbWF0LWhlYWRlci1jZWxsOmZpcnN0LW9mLXR5cGU6bm90KDpvbmx5LW9mLXR5cGUpLFtkaXI9cnRsXSBtYXQtZm9vdGVyLWNlbGw6Zmlyc3Qtb2YtdHlwZTpub3QoOm9ubHktb2YtdHlwZSl7cGFkZGluZy1sZWZ0OjA7cGFkZGluZy1yaWdodDoyNHB4fW1hdC1jZWxsOmxhc3Qtb2YtdHlwZSxtYXQtaGVhZGVyLWNlbGw6bGFzdC1vZi10eXBlLG1hdC1mb290ZXItY2VsbDpsYXN0LW9mLXR5cGV7cGFkZGluZy1yaWdodDoyNHB4fVtkaXI9cnRsXSBtYXQtY2VsbDpsYXN0LW9mLXR5cGU6bm90KDpvbmx5LW9mLXR5cGUpLFtkaXI9cnRsXSBtYXQtaGVhZGVyLWNlbGw6bGFzdC1vZi10eXBlOm5vdCg6b25seS1vZi10eXBlKSxbZGlyPXJ0bF0gbWF0LWZvb3Rlci1jZWxsOmxhc3Qtb2YtdHlwZTpub3QoOm9ubHktb2YtdHlwZSl7cGFkZGluZy1yaWdodDowO3BhZGRpbmctbGVmdDoyNHB4fW1hdC1jZWxsLG1hdC1oZWFkZXItY2VsbCxtYXQtZm9vdGVyLWNlbGx7ZmxleDoxO2Rpc3BsYXk6ZmxleDthbGlnbi1pdGVtczpjZW50ZXI7b3ZlcmZsb3c6aGlkZGVuO3dvcmQtd3JhcDpicmVhay13b3JkO21pbi1oZWlnaHQ6aW5oZXJpdH10YWJsZS5tYXQtdGFibGV7Ym9yZGVyLXNwYWNpbmc6MH10ci5tYXQtaGVhZGVyLXJvd3toZWlnaHQ6NTZweH10ci5tYXQtcm93LHRyLm1hdC1mb290ZXItcm93e2hlaWdodDo0OHB4fXRoLm1hdC1oZWFkZXItY2VsbHt0ZXh0LWFsaWduOmxlZnR9W2Rpcj1ydGxdIHRoLm1hdC1oZWFkZXItY2VsbHt0ZXh0LWFsaWduOnJpZ2h0fXRoLm1hdC1oZWFkZXItY2VsbCx0ZC5tYXQtY2VsbCx0ZC5tYXQtZm9vdGVyLWNlbGx7cGFkZGluZzowO2JvcmRlci1ib3R0b20td2lkdGg6MXB4O2JvcmRlci1ib3R0b20tc3R5bGU6c29saWR9dGgubWF0LWhlYWRlci1jZWxsOmZpcnN0LW9mLXR5cGUsdGQubWF0LWNlbGw6Zmlyc3Qtb2YtdHlwZSx0ZC5tYXQtZm9vdGVyLWNlbGw6Zmlyc3Qtb2YtdHlwZXtwYWRkaW5nLWxlZnQ6MjRweH1bZGlyPXJ0bF0gdGgubWF0LWhlYWRlci1jZWxsOmZpcnN0LW9mLXR5cGU6bm90KDpvbmx5LW9mLXR5cGUpLFtkaXI9cnRsXSB0ZC5tYXQtY2VsbDpmaXJzdC1vZi10eXBlOm5vdCg6b25seS1vZi10eXBlKSxbZGlyPXJ0bF0gdGQubWF0LWZvb3Rlci1jZWxsOmZpcnN0LW9mLXR5cGU6bm90KDpvbmx5LW9mLXR5cGUpe3BhZGRpbmctbGVmdDowO3BhZGRpbmctcmlnaHQ6MjRweH10aC5tYXQtaGVhZGVyLWNlbGw6bGFzdC1vZi10eXBlLHRkLm1hdC1jZWxsOmxhc3Qtb2YtdHlwZSx0ZC5tYXQtZm9vdGVyLWNlbGw6bGFzdC1vZi10eXBle3BhZGRpbmctcmlnaHQ6MjRweH1bZGlyPXJ0bF0gdGgubWF0LWhlYWRlci1jZWxsOmxhc3Qtb2YtdHlwZTpub3QoOm9ubHktb2YtdHlwZSksW2Rpcj1ydGxdIHRkLm1hdC1jZWxsOmxhc3Qtb2YtdHlwZTpub3QoOm9ubHktb2YtdHlwZSksW2Rpcj1ydGxdIHRkLm1hdC1mb290ZXItY2VsbDpsYXN0LW9mLXR5cGU6bm90KDpvbmx5LW9mLXR5cGUpe3BhZGRpbmctcmlnaHQ6MDtwYWRkaW5nLWxlZnQ6MjRweH0ubWF0LXRhYmxlLXN0aWNreXtwb3NpdGlvbjotd2Via2l0LXN0aWNreTtwb3NpdGlvbjpzdGlja3l9XG4nXSxlbmNhcHN1bGF0aW9uOjJ9KTtjb25zdCBPWD10YyhNWCk7Ci8qKgogICAgICogQGxpY2Vuc2UKICAgICAqIENvcHlyaWdodCBHb29nbGUgTExDIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCiAgICAgKgogICAgICogVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYW4gTUlULXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKICAgICAqIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUgYXQgaHR0cHM6Ly9hbmd1bGFyLmlvL2xpY2Vuc2UKICAgICAqL2NsYXNzIFBYIGV4dGVuZHMgRlp7fVBYLsm1ZmFjPWZ1bmN0aW9uIHQobil7cmV0dXJuIHhYKG58fFBYKX0sUFguybVkaXI9dm8oe3R5cGU6UFgsc2VsZWN0b3JzOltbIiIsIm1hdENlbGxEZWYiLCIiXV0sZmVhdHVyZXM6W011KFt7cHJvdmlkZTpGWix1c2VFeGlzdGluZzpQWH1dKSxoZ119KTtjb25zdCB4WD10YyhQWCk7Y2xhc3MgeVggZXh0ZW5kcyBMWnt9eVguybVmYWM9ZnVuY3Rpb24gdChuKXtyZXR1cm4ga1gobnx8eVgpfSx5WC7JtWRpcj12byh7dHlwZTp5WCxzZWxlY3RvcnM6W1siIiwibWF0SGVhZGVyQ2VsbERlZiIsIiJdXSxmZWF0dXJlczpbTXUoW3twcm92aWRlOkxaLHVzZUV4aXN0aW5nOnlYfV0pLGhnXX0pO2NvbnN0IGtYPXRjKHlYKTtjbGFzcyB2WCBleHRlbmRzIEhae312WC7JtWZhYz1mdW5jdGlvbiB0KG4pe3JldHVybiB3WChufHx2WCl9LHZYLsm1ZGlyPXZvKHt0eXBlOnZYLHNlbGVjdG9yczpbWyIiLCJtYXRGb290ZXJDZWxsRGVmIiwiIl1dLGZlYXR1cmVzOltNdShbe3Byb3ZpZGU6SFosdXNlRXhpc3Rpbmc6dlh9XSksaGddfSk7Y29uc3Qgd1g9dGModlgpO2NsYXNzIFNYIGV4dGVuZHMgVlp7Z2V0IG5hbWUoKXtyZXR1cm4gdGhpcy5fbmFtZX1zZXQgbmFtZSh0KXt0aGlzLl9zZXROYW1lSW5wdXQodCl9X3VwZGF0ZUNvbHVtbkNzc0NsYXNzTmFtZSgpe3N1cGVyLl91cGRhdGVDb2x1bW5Dc3NDbGFzc05hbWUoKSx0aGlzLl9jb2x1bW5Dc3NDbGFzc05hbWUucHVzaChgbWF0LWNvbHVtbi0ke3RoaXMuY3NzQ2xhc3NGcmllbmRseU5hbWV9YCl9fVNYLsm1ZmFjPWZ1bmN0aW9uIHQobil7cmV0dXJuIEVYKG58fFNYKX0sU1guybVkaXI9dm8oe3R5cGU6U1gsc2VsZWN0b3JzOltbIiIsIm1hdENvbHVtbkRlZiIsIiJdXSxpbnB1dHM6e3N0aWNreToic3RpY2t5IixuYW1lOlsibWF0Q29sdW1uRGVmIiwibmFtZSJdfSxmZWF0dXJlczpbTXUoW3twcm92aWRlOlZaLHVzZUV4aXN0aW5nOlNYfSx7cHJvdmlkZToiTUFUX1NPUlRfSEVBREVSX0NPTFVNTl9ERUYiLHVzZUV4aXN0aW5nOlNYfV0pLGhnXX0pLFNYLnByb3BEZWNvcmF0b3JzPXtuYW1lOlt7dHlwZTpmXyxhcmdzOlsibWF0Q29sdW1uRGVmIl19XX07Y29uc3QgRVg9dGMoU1gpO2NsYXNzIEFYIGV4dGVuZHMgVVp7fUFYLsm1ZmFjPWZ1bmN0aW9uIHQobil7cmV0dXJuIHpYKG58fEFYKX0sQVguybVkaXI9dm8oe3R5cGU6QVgsc2VsZWN0b3JzOltbIm1hdC1oZWFkZXItY2VsbCJdLFsidGgiLCJtYXQtaGVhZGVyLWNlbGwiLCIiXV0saG9zdEF0dHJzOlsicm9sZSIsImNvbHVtbmhlYWRlciIsMSwibWF0LWhlYWRlci1jZWxsIl0sZmVhdHVyZXM6W2hnXX0pO2NvbnN0IHpYPXRjKEFYKTtjbGFzcyBSWCBleHRlbmRzIFdae31SWC7JtWZhYz1mdW5jdGlvbiB0KG4pe3JldHVybiBUWChufHxSWCl9LFJYLsm1ZGlyPXZvKHt0eXBlOlJYLHNlbGVjdG9yczpbWyJtYXQtZm9vdGVyLWNlbGwiXSxbInRkIiwibWF0LWZvb3Rlci1jZWxsIiwiIl1dLGhvc3RBdHRyczpbInJvbGUiLCJncmlkY2VsbCIsMSwibWF0LWZvb3Rlci1jZWxsIl0sZmVhdHVyZXM6W2hnXX0pO2NvbnN0IFRYPXRjKFJYKTtjbGFzcyBEWCBleHRlbmRzIEdae31EWC7JtWZhYz1mdW5jdGlvbiB0KG4pe3JldHVybiBJWChufHxEWCl9LERYLsm1ZGlyPXZvKHt0eXBlOkRYLHNlbGVjdG9yczpbWyJtYXQtY2VsbCJdLFsidGQiLCJtYXQtY2VsbCIsIiJdXSxob3N0QXR0cnM6WyJyb2xlIiwiZ3JpZGNlbGwiLDEsIm1hdC1jZWxsIl0sZmVhdHVyZXM6W2hnXX0pO2NvbnN0IElYPXRjKERYKTsKLyoqCiAgICAgKiBAbGljZW5zZQogICAgICogQ29weXJpZ2h0IEdvb2dsZSBMTEMgQWxsIFJpZ2h0cyBSZXNlcnZlZC4KICAgICAqCiAgICAgKiBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhbiBNSVQtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQogICAgICogZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZSBhdCBodHRwczovL2FuZ3VsYXIuaW8vbGljZW5zZQogICAgICovY2xhc3MgTlggZXh0ZW5kcyBRWnt9TlguybVmYWM9ZnVuY3Rpb24gdChuKXtyZXR1cm4gRlgobnx8TlgpfSxOWC7JtWRpcj12byh7dHlwZTpOWCxzZWxlY3RvcnM6W1siIiwibWF0SGVhZGVyUm93RGVmIiwiIl1dLGlucHV0czp7Y29sdW1uczpbIm1hdEhlYWRlclJvd0RlZiIsImNvbHVtbnMiXSxzdGlja3k6WyJtYXRIZWFkZXJSb3dEZWZTdGlja3kiLCJzdGlja3kiXX0sZmVhdHVyZXM6W011KFt7cHJvdmlkZTpRWix1c2VFeGlzdGluZzpOWH1dKSxoZ119KTtjb25zdCBGWD10YyhOWCk7Y2xhc3MgTFggZXh0ZW5kcyAkWnt9TFguybVmYWM9ZnVuY3Rpb24gdChuKXtyZXR1cm4gSFgobnx8TFgpfSxMWC7JtWRpcj12byh7dHlwZTpMWCxzZWxlY3RvcnM6W1siIiwibWF0Rm9vdGVyUm93RGVmIiwiIl1dLGlucHV0czp7Y29sdW1uczpbIm1hdEZvb3RlclJvd0RlZiIsImNvbHVtbnMiXSxzdGlja3k6WyJtYXRGb290ZXJSb3dEZWZTdGlja3kiLCJzdGlja3kiXX0sZmVhdHVyZXM6W011KFt7cHJvdmlkZTokWix1c2VFeGlzdGluZzpMWH1dKSxoZ119KTtjb25zdCBIWD10YyhMWCk7Y2xhc3MgQlggZXh0ZW5kcyB0WHt9QlguybVmYWM9ZnVuY3Rpb24gdChuKXtyZXR1cm4gVlgobnx8QlgpfSxCWC7JtWRpcj12byh7dHlwZTpCWCxzZWxlY3RvcnM6W1siIiwibWF0Um93RGVmIiwiIl1dLGlucHV0czp7Y29sdW1uczpbIm1hdFJvd0RlZkNvbHVtbnMiLCJjb2x1bW5zIl0sd2hlbjpbIm1hdFJvd0RlZldoZW4iLCJ3aGVuIl19LGZlYXR1cmVzOltNdShbe3Byb3ZpZGU6dFgsdXNlRXhpc3Rpbmc6Qlh9XSksaGddfSk7Y29uc3QgVlg9dGMoQlgpO2NsYXNzIGpYIGV4dGVuZHMgZVh7fWpYLsm1ZmFjPWZ1bmN0aW9uIHQobil7cmV0dXJuIFVYKG58fGpYKX0salguybVjbXA9X28oe3R5cGU6algsc2VsZWN0b3JzOltbIm1hdC1oZWFkZXItcm93Il0sWyJ0ciIsIm1hdC1oZWFkZXItcm93IiwiIl1dLGhvc3RBdHRyczpbInJvbGUiLCJyb3ciLDEsIm1hdC1oZWFkZXItcm93Il0sZXhwb3J0QXM6WyJtYXRIZWFkZXJSb3ciXSxmZWF0dXJlczpbTXUoW3twcm92aWRlOmVYLHVzZUV4aXN0aW5nOmpYfV0pLGhnXSxkZWNsczoxLHZhcnM6MCxjb25zdHM6W1siY2RrQ2VsbE91dGxldCIsIiJdXSx0ZW1wbGF0ZTpmdW5jdGlvbiB0KG4sZSl7MSZuJiZhcCgwLDApfSxkaXJlY3RpdmVzOltuWF0sZW5jYXBzdWxhdGlvbjoyfSk7Y29uc3QgVVg9dGMoalgpO2NsYXNzIFdYIGV4dGVuZHMgYVh7fVdYLsm1ZmFjPWZ1bmN0aW9uIHQobil7cmV0dXJuIEdYKG58fFdYKX0sV1guybVjbXA9X28oe3R5cGU6V1gsc2VsZWN0b3JzOltbIm1hdC1mb290ZXItcm93Il0sWyJ0ciIsIm1hdC1mb290ZXItcm93IiwiIl1dLGhvc3RBdHRyczpbInJvbGUiLCJyb3ciLDEsIm1hdC1mb290ZXItcm93Il0sZXhwb3J0QXM6WyJtYXRGb290ZXJSb3ciXSxmZWF0dXJlczpbTXUoW3twcm92aWRlOmFYLHVzZUV4aXN0aW5nOldYfV0pLGhnXSxkZWNsczoxLHZhcnM6MCxjb25zdHM6W1siY2RrQ2VsbE91dGxldCIsIiJdXSx0ZW1wbGF0ZTpmdW5jdGlvbiB0KG4sZSl7MSZuJiZhcCgwLDApfSxkaXJlY3RpdmVzOltuWF0sZW5jYXBzdWxhdGlvbjoyfSk7Y29uc3QgR1g9dGMoV1gpO2NsYXNzIFlYIGV4dGVuZHMgb1h7fVlYLsm1ZmFjPWZ1bmN0aW9uIHQobil7cmV0dXJuIHFYKG58fFlYKX0sWVguybVjbXA9X28oe3R5cGU6WVgsc2VsZWN0b3JzOltbIm1hdC1yb3ciXSxbInRyIiwibWF0LXJvdyIsIiJdXSxob3N0QXR0cnM6WyJyb2xlIiwicm93IiwxLCJtYXQtcm93Il0sZXhwb3J0QXM6WyJtYXRSb3ciXSxmZWF0dXJlczpbTXUoW3twcm92aWRlOm9YLHVzZUV4aXN0aW5nOllYfV0pLGhnXSxkZWNsczoxLHZhcnM6MCxjb25zdHM6W1siY2RrQ2VsbE91dGxldCIsIiJdXSx0ZW1wbGF0ZTpmdW5jdGlvbiB0KG4sZSl7MSZuJiZhcCgwLDApfSxkaXJlY3RpdmVzOltuWF0sZW5jYXBzdWxhdGlvbjoyfSk7Y29uc3QgcVg9dGMoWVgpO2NsYXNzIFpYIGV4dGVuZHMgclh7fVpYLsm1ZmFjPWZ1bmN0aW9uIHQobil7cmV0dXJuIFhYKG58fFpYKX0sWlguybVkaXI9dm8oe3R5cGU6Wlgsc2VsZWN0b3JzOltbIm5nLXRlbXBsYXRlIiwibWF0Tm9EYXRhUm93IiwiIl1dLGZlYXR1cmVzOltNdShbe3Byb3ZpZGU6clgsdXNlRXhpc3Rpbmc6Wlh9XSksaGddfSk7Y29uc3QgWFg9dGMoWlgpOwovKioKICAgICAqIEBsaWNlbnNlCiAgICAgKiBDb3B5cmlnaHQgR29vZ2xlIExMQyBBbGwgUmlnaHRzIFJlc2VydmVkLgogICAgICoKICAgICAqIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGFuIE1JVC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCiAgICAgKiBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlIGF0IGh0dHBzOi8vYW5ndWxhci5pby9saWNlbnNlCiAgICAgKi9jbGFzcyBKWCBleHRlbmRzIHVYe31KWC7JtWZhYz1mdW5jdGlvbiB0KG4pe3JldHVybiBRWChufHxKWCl9LEpYLsm1Y21wPV9vKHt0eXBlOkpYLHNlbGVjdG9yczpbWyJtYXQtdGV4dC1jb2x1bW4iXV0sZmVhdHVyZXM6W2hnXSxkZWNsczozLHZhcnM6MCxjb25zdHM6W1sibWF0Q29sdW1uRGVmIiwiIl0sWyJtYXQtaGVhZGVyLWNlbGwiLCIiLDMsInRleHQtYWxpZ24iLDQsIm1hdEhlYWRlckNlbGxEZWYiXSxbIm1hdC1jZWxsIiwiIiwzLCJ0ZXh0LWFsaWduIiw0LCJtYXRDZWxsRGVmIl0sWyJtYXQtaGVhZGVyLWNlbGwiLCIiXSxbIm1hdC1jZWxsIiwiIl1dLHRlbXBsYXRlOmZ1bmN0aW9uIHQobixlKXsxJm4mJihucCgwLDApLFlnKDEsX1gsMiwzLCJ0aCIsMSksWWcoMixDWCwyLDMsInRkIiwyKSxlcCgpKX0sZGlyZWN0aXZlczpbU1gseVgsUFgsQVgsRFhdLGVuY2Fwc3VsYXRpb246Mn0pO2NvbnN0IFFYPXRjKEpYKTtjbGFzcyBLWHt9S1guybVtb2Q9eG8oe3R5cGU6S1h9KSxLWC7JtWluaj1HZSh7ZmFjdG9yeTpmdW5jdGlvbiB0KG4pe3JldHVybiBuZXcobnx8S1gpfSxpbXBvcnRzOltbZlgsdEVdLHRFXX0pLCgidW5kZWZpbmVkIj09dHlwZW9mIG5nSml0TW9kZXx8bmdKaXRNb2RlKSYmeW8oS1gse2RlY2xhcmF0aW9uczpmdW5jdGlvbigpe3JldHVybltNWCx5WCxOWCxTWCxQWCxCWCx2WCxMWCxBWCxEWCxSWCxqWCxZWCxXWCxaWCxKWF19LGltcG9ydHM6ZnVuY3Rpb24oKXtyZXR1cm5bZlgsdEVdfSxleHBvcnRzOmZ1bmN0aW9uKCl7cmV0dXJuW3RFLE1YLHlYLE5YLFNYLFBYLEJYLHZYLExYLEFYLERYLFJYLGpYLFlYLFdYLFpYLEpYXX19KTtjbGFzcyAkWCBleHRlbmRzIHJBe2NvbnN0cnVjdG9yKHQ9W10pe3N1cGVyKCksdGhpcy5fcmVuZGVyRGF0YT1uZXcgRihbXSksdGhpcy5fZmlsdGVyPW5ldyBGKCIiKSx0aGlzLl9pbnRlcm5hbFBhZ2VDaGFuZ2VzPW5ldyB4LHRoaXMuX3JlbmRlckNoYW5nZXNTdWJzY3JpcHRpb249cy5FTVBUWSx0aGlzLnNvcnRpbmdEYXRhQWNjZXNzb3I9KHQsbik9Pntjb25zdCBlPXRbbl07aWYocXcoZSkpe2NvbnN0IHQ9TnVtYmVyKGUpO3JldHVybiB0PDkwMDcxOTkyNTQ3NDA5OTE/dDplfXJldHVybiBlfSx0aGlzLnNvcnREYXRhPSh0LG4pPT57Y29uc3QgZT1uLmFjdGl2ZSxhPW4uZGlyZWN0aW9uO3JldHVybiBlJiYiIiE9YT90LnNvcnQoKCh0LG4pPT57bGV0IG89dGhpcy5zb3J0aW5nRGF0YUFjY2Vzc29yKHQsZSkscj10aGlzLnNvcnRpbmdEYXRhQWNjZXNzb3IobixlKTtjb25zdCBpPXR5cGVvZiBvLGM9dHlwZW9mIHI7aSE9PWMmJigibnVtYmVyIj09PWkmJihvKz0iIiksIm51bWJlciI9PT1jJiYocis9IiIpKTtsZXQgcz0wO3JldHVybiBudWxsIT1vJiZudWxsIT1yP28+cj9zPTE6bzxyJiYocz0tMSk6bnVsbCE9bz9zPTE6bnVsbCE9ciYmKHM9LTEpLHMqKCJhc2MiPT1hPzE6LTEpfSkpOnR9LHRoaXMuZmlsdGVyUHJlZGljYXRlPSh0LG4pPT57Y29uc3QgZT1PYmplY3Qua2V5cyh0KS5yZWR1Y2UoKChuLGUpPT5uK3RbZV0rIuKXrCIpLCIiKS50b0xvd2VyQ2FzZSgpLGE9bi50cmltKCkudG9Mb3dlckNhc2UoKTtyZXR1cm4tMSE9ZS5pbmRleE9mKGEpfSx0aGlzLl9kYXRhPW5ldyBGKHQpLHRoaXMuX3VwZGF0ZUNoYW5nZVN1YnNjcmlwdGlvbigpfWdldCBkYXRhKCl7cmV0dXJuIHRoaXMuX2RhdGEudmFsdWV9c2V0IGRhdGEodCl7dGhpcy5fZGF0YS5uZXh0KHQpfWdldCBmaWx0ZXIoKXtyZXR1cm4gdGhpcy5fZmlsdGVyLnZhbHVlfXNldCBmaWx0ZXIodCl7dGhpcy5fZmlsdGVyLm5leHQodCl9Z2V0IHNvcnQoKXtyZXR1cm4gdGhpcy5fc29ydH1zZXQgc29ydCh0KXt0aGlzLl9zb3J0PXQsdGhpcy5fdXBkYXRlQ2hhbmdlU3Vic2NyaXB0aW9uKCl9Z2V0IHBhZ2luYXRvcigpe3JldHVybiB0aGlzLl9wYWdpbmF0b3J9c2V0IHBhZ2luYXRvcih0KXt0aGlzLl9wYWdpbmF0b3I9dCx0aGlzLl91cGRhdGVDaGFuZ2VTdWJzY3JpcHRpb24oKX1fdXBkYXRlQ2hhbmdlU3Vic2NyaXB0aW9uKCl7Y29uc3QgdD10aGlzLl9zb3J0P1d0KHRoaXMuX3NvcnQuc29ydENoYW5nZSx0aGlzLl9zb3J0LmluaXRpYWxpemVkKTpaKG51bGwpLG49dGhpcy5fcGFnaW5hdG9yP1d0KHRoaXMuX3BhZ2luYXRvci5wYWdlLHRoaXMuX2ludGVybmFsUGFnZUNoYW5nZXMsdGhpcy5fcGFnaW5hdG9yLmluaXRpYWxpemVkKTpaKG51bGwpLGU9RXQoW3RoaXMuX2RhdGEsdGhpcy5fZmlsdGVyXSkucGlwZShmdCgoKFt0XSk9PnRoaXMuX2ZpbHRlckRhdGEodCkpKSksYT1FdChbZSx0XSkucGlwZShmdCgoKFt0XSk9PnRoaXMuX29yZGVyRGF0YSh0KSkpKSxvPUV0KFthLG5dKS5waXBlKGZ0KCgoW3RdKT0+dGhpcy5fcGFnZURhdGEodCkpKSk7dGhpcy5fcmVuZGVyQ2hhbmdlc1N1YnNjcmlwdGlvbi51bnN1YnNjcmliZSgpLHRoaXMuX3JlbmRlckNoYW5nZXNTdWJzY3JpcHRpb249by5zdWJzY3JpYmUoKHQ9PnRoaXMuX3JlbmRlckRhdGEubmV4dCh0KSkpfV9maWx0ZXJEYXRhKHQpe3JldHVybiB0aGlzLmZpbHRlcmVkRGF0YT10aGlzLmZpbHRlcj90LmZpbHRlcigodD0+dGhpcy5maWx0ZXJQcmVkaWNhdGUodCx0aGlzLmZpbHRlcikpKTp0LHRoaXMucGFnaW5hdG9yJiZ0aGlzLl91cGRhdGVQYWdpbmF0b3IodGhpcy5maWx0ZXJlZERhdGEubGVuZ3RoKSx0aGlzLmZpbHRlcmVkRGF0YX1fb3JkZXJEYXRhKHQpe3JldHVybiB0aGlzLnNvcnQ/dGhpcy5zb3J0RGF0YSh0LnNsaWNlKCksdGhpcy5zb3J0KTp0fV9wYWdlRGF0YSh0KXtpZighdGhpcy5wYWdpbmF0b3IpcmV0dXJuIHQ7Y29uc3Qgbj10aGlzLnBhZ2luYXRvci5wYWdlSW5kZXgqdGhpcy5wYWdpbmF0b3IucGFnZVNpemU7cmV0dXJuIHQuc2xpY2UobixuK3RoaXMucGFnaW5hdG9yLnBhZ2VTaXplKX1fdXBkYXRlUGFnaW5hdG9yKHQpe1Byb21pc2UucmVzb2x2ZSgpLnRoZW4oKCgpPT57Y29uc3Qgbj10aGlzLnBhZ2luYXRvcjtpZihuJiYobi5sZW5ndGg9dCxuLnBhZ2VJbmRleD4wKSl7Y29uc3QgdD1NYXRoLmNlaWwobi5sZW5ndGgvbi5wYWdlU2l6ZSktMXx8MCxlPU1hdGgubWluKG4ucGFnZUluZGV4LHQpO2UhPT1uLnBhZ2VJbmRleCYmKG4ucGFnZUluZGV4PWUsdGhpcy5faW50ZXJuYWxQYWdlQ2hhbmdlcy5uZXh0KCkpfX0pKX1jb25uZWN0KCl7cmV0dXJuIHRoaXMuX3JlbmRlckRhdGF9ZGlzY29ubmVjdCgpe319Y29uc3QgdEo9WyJkaWFsb2dQb3B1cCJdLG5KPVsiaHVlU2xpZGVyIl0sZUo9WyJhbHBoYVNsaWRlciJdO2Z1bmN0aW9uIGFKKHQsbil7aWYoMSZ0JiZ0cCgwLCJkaXYiKSwyJnQpe2NvbnN0IHQ9Z3AoKTtuYigiYXJyb3cgYXJyb3ctIix0LmNwVXNlUG9zaXRpb24sIiIpLFRwKCJ0b3AiLHQuYXJyb3dUb3AsInB4Iil9fWZ1bmN0aW9uIG9KKHQsbil7aWYoMSZ0KXtjb25zdCB0PW9wKCk7S2coMCwiZGl2IiwyNiksY3AoIm5ld1ZhbHVlIiwoZnVuY3Rpb24gbihlKXtyZXR1cm4ganIodCksZ3AoKS5vbkNvbG9yQ2hhbmdlKGUpfSkpKCJkcmFnU3RhcnQiLChmdW5jdGlvbiBuKCl7cmV0dXJuIGpyKHQpLGdwKCkub25EcmFnU3RhcnQoInNhdHVyYXRpb24tbGlnaHRuZXNzIil9KSkoImRyYWdFbmQiLChmdW5jdGlvbiBuKCl7cmV0dXJuIGpyKHQpLGdwKCkub25EcmFnRW5kKCJzYXR1cmF0aW9uLWxpZ2h0bmVzcyIpfSkpLHRwKDEsImRpdiIsMTMpLCRnKCl9aWYoMiZ0KXtjb25zdCB0PWdwKCk7VHAoImJhY2tncm91bmQtY29sb3IiLHQuaHVlU2xpZGVyQ29sb3IpLEpnKCJyZ1giLDEpKCJyZ1kiLDEpLHdzKDEpLFRwKCJ0b3AiLG51bGw9PXQuc2xpZGVyP251bGw6dC5zbGlkZXIudiwicHgiKSgibGVmdCIsbnVsbD09dC5zbGlkZXI/bnVsbDp0LnNsaWRlci5zLCJweCIpfX1mdW5jdGlvbiBySih0LG4pe2lmKDEmdCl7Y29uc3QgdD1vcCgpO0tnKDAsImJ1dHRvbiIsMjcpLGNwKCJjbGljayIsKGZ1bmN0aW9uIG4oZSl7anIodCk7Y29uc3QgYT1ncCgpO3JldHVybiBhLm9uQWRkUHJlc2V0Q29sb3IoZSxhLnNlbGVjdGVkQ29sb3IpfSkpLEpwKDEpLCRnKCl9aWYoMiZ0KXtjb25zdCB0PWdwKCk7RnAodC5jcEFkZENvbG9yQnV0dG9uQ2xhc3MpLEpnKCJkaXNhYmxlZCIsdC5jcFByZXNldENvbG9ycyYmdC5jcFByZXNldENvbG9ycy5sZW5ndGg+PXQuY3BNYXhQcmVzZXRDb2xvcnNMZW5ndGgpLHdzKDEpLEtwKCIgIix0LmNwQWRkQ29sb3JCdXR0b25UZXh0LCIgIil9fWZ1bmN0aW9uIGlKKHQsbil7MSZ0JiZ0cCgwLCJkaXYiLDI4KX1mdW5jdGlvbiBjSih0LG4pe2lmKDEmdCl7Y29uc3QgdD1vcCgpO0tnKDAsImlucHV0IiwzNCksY3AoImtleXVwLmVudGVyIiwoZnVuY3Rpb24gbihlKXtyZXR1cm4ganIodCksZ3AoMikub25BY2NlcHRDb2xvcihlKX0pKSgibmV3VmFsdWUiLChmdW5jdGlvbiBuKGUpe3JldHVybiBqcih0KSxncCgyKS5vbkFscGhhSW5wdXQoZSl9KSksJGcoKX1pZigyJnQpe2NvbnN0IHQ9Z3AoMik7SmcoInJnIiwxKSgidmFsdWUiLG51bGw9PXQuY215a1RleHQ/bnVsbDp0LmNteWtUZXh0LmEpfX1mdW5jdGlvbiBzSih0LG4pezEmdCYmKEtnKDAsImRpdiIpLEpwKDEsIkEiKSwkZygpKX1mdW5jdGlvbiBsSih0LG4pe2lmKDEmdCl7Y29uc3QgdD1vcCgpO0tnKDAsImRpdiIsMjkpLEtnKDEsImRpdiIsMzApLEtnKDIsImlucHV0IiwzMSksY3AoImtleXVwLmVudGVyIiwoZnVuY3Rpb24gbihlKXtyZXR1cm4ganIodCksZ3AoKS5vbkFjY2VwdENvbG9yKGUpfSkpKCJuZXdWYWx1ZSIsKGZ1bmN0aW9uIG4oZSl7cmV0dXJuIGpyKHQpLGdwKCkub25DeWFuSW5wdXQoZSl9KSksJGcoKSxLZygzLCJpbnB1dCIsMzEpLGNwKCJrZXl1cC5lbnRlciIsKGZ1bmN0aW9uIG4oZSl7cmV0dXJuIGpyKHQpLGdwKCkub25BY2NlcHRDb2xvcihlKX0pKSgibmV3VmFsdWUiLChmdW5jdGlvbiBuKGUpe3JldHVybiBqcih0KSxncCgpLm9uTWFnZW50YUlucHV0KGUpfSkpLCRnKCksS2coNCwiaW5wdXQiLDMxKSxjcCgia2V5dXAuZW50ZXIiLChmdW5jdGlvbiBuKGUpe3JldHVybiBqcih0KSxncCgpLm9uQWNjZXB0Q29sb3IoZSl9KSkoIm5ld1ZhbHVlIiwoZnVuY3Rpb24gbihlKXtyZXR1cm4ganIodCksZ3AoKS5vblllbGxvd0lucHV0KGUpfSkpLCRnKCksS2coNSwiaW5wdXQiLDMxKSxjcCgia2V5dXAuZW50ZXIiLChmdW5jdGlvbiBuKGUpe3JldHVybiBqcih0KSxncCgpLm9uQWNjZXB0Q29sb3IoZSl9KSkoIm5ld1ZhbHVlIiwoZnVuY3Rpb24gbihlKXtyZXR1cm4ganIodCksZ3AoKS5vbkJsYWNrSW5wdXQoZSl9KSksJGcoKSxZZyg2LGNKLDEsMiwiaW5wdXQiLDMyKSwkZygpLEtnKDcsImRpdiIsMzApLEtnKDgsImRpdiIpLEpwKDksIkMiKSwkZygpLEtnKDEwLCJkaXYiKSxKcCgxMSwiTSIpLCRnKCksS2coMTIsImRpdiIpLEpwKDEzLCJZIiksJGcoKSxLZygxNCwiZGl2IiksSnAoMTUsIksiKSwkZygpLFlnKDE2LHNKLDIsMCwiZGl2IiwzMyksJGcoKSwkZygpfWlmKDImdCl7Y29uc3QgdD1ncCgpO1RwKCJkaXNwbGF5IiwzIT09dC5mb3JtYXQ/Im5vbmUiOiJibG9jayIpLHdzKDIpLEpnKCJyZyIsMTAwKSgidmFsdWUiLG51bGw9PXQuY215a1RleHQ/bnVsbDp0LmNteWtUZXh0LmMpLHdzKDEpLEpnKCJyZyIsMTAwKSgidmFsdWUiLG51bGw9PXQuY215a1RleHQ/bnVsbDp0LmNteWtUZXh0Lm0pLHdzKDEpLEpnKCJyZyIsMTAwKSgidmFsdWUiLG51bGw9PXQuY215a1RleHQ/bnVsbDp0LmNteWtUZXh0LnkpLHdzKDEpLEpnKCJyZyIsMTAwKSgidmFsdWUiLG51bGw9PXQuY215a1RleHQ/bnVsbDp0LmNteWtUZXh0LmspLHdzKDEpLEpnKCJuZ0lmIiwiZGlzYWJsZWQiIT09dC5jcEFscGhhQ2hhbm5lbCksd3MoMTApLEpnKCJuZ0lmIiwiZGlzYWJsZWQiIT09dC5jcEFscGhhQ2hhbm5lbCl9fWZ1bmN0aW9uIG1KKHQsbil7aWYoMSZ0KXtjb25zdCB0PW9wKCk7S2coMCwiaW5wdXQiLDM0KSxjcCgia2V5dXAuZW50ZXIiLChmdW5jdGlvbiBuKGUpe3JldHVybiBqcih0KSxncCgyKS5vbkFjY2VwdENvbG9yKGUpfSkpKCJuZXdWYWx1ZSIsKGZ1bmN0aW9uIG4oZSl7cmV0dXJuIGpyKHQpLGdwKDIpLm9uQWxwaGFJbnB1dChlKX0pKSwkZygpfWlmKDImdCl7Y29uc3QgdD1ncCgyKTtKZygicmciLDEpKCJ2YWx1ZSIsbnVsbD09dC5oc2xhVGV4dD9udWxsOnQuaHNsYVRleHQuYSl9fWZ1bmN0aW9uIGRKKHQsbil7MSZ0JiYoS2coMCwiZGl2IiksSnAoMSwiQSIpLCRnKCkpfWZ1bmN0aW9uIGdKKHQsbil7aWYoMSZ0KXtjb25zdCB0PW9wKCk7S2coMCwiZGl2IiwzNSksS2coMSwiZGl2IiwzMCksS2coMiwiaW5wdXQiLDM2KSxjcCgia2V5dXAuZW50ZXIiLChmdW5jdGlvbiBuKGUpe3JldHVybiBqcih0KSxncCgpLm9uQWNjZXB0Q29sb3IoZSl9KSkoIm5ld1ZhbHVlIiwoZnVuY3Rpb24gbihlKXtyZXR1cm4ganIodCksZ3AoKS5vbkh1ZUlucHV0KGUpfSkpLCRnKCksS2coMywiaW5wdXQiLDMxKSxjcCgia2V5dXAuZW50ZXIiLChmdW5jdGlvbiBuKGUpe3JldHVybiBqcih0KSxncCgpLm9uQWNjZXB0Q29sb3IoZSl9KSkoIm5ld1ZhbHVlIiwoZnVuY3Rpb24gbihlKXtyZXR1cm4ganIodCksZ3AoKS5vblNhdHVyYXRpb25JbnB1dChlKX0pKSwkZygpLEtnKDQsImlucHV0IiwzMSksY3AoImtleXVwLmVudGVyIiwoZnVuY3Rpb24gbihlKXtyZXR1cm4ganIodCksZ3AoKS5vbkFjY2VwdENvbG9yKGUpfSkpKCJuZXdWYWx1ZSIsKGZ1bmN0aW9uIG4oZSl7cmV0dXJuIGpyKHQpLGdwKCkub25MaWdodG5lc3NJbnB1dChlKX0pKSwkZygpLFlnKDUsbUosMSwyLCJpbnB1dCIsMzIpLCRnKCksS2coNiwiZGl2IiwzMCksS2coNywiZGl2IiksSnAoOCwiSCIpLCRnKCksS2coOSwiZGl2IiksSnAoMTAsIlMiKSwkZygpLEtnKDExLCJkaXYiKSxKcCgxMiwiTCIpLCRnKCksWWcoMTMsZEosMiwwLCJkaXYiLDMzKSwkZygpLCRnKCl9aWYoMiZ0KXtjb25zdCB0PWdwKCk7VHAoImRpc3BsYXkiLDIhPT10LmZvcm1hdD8ibm9uZSI6ImJsb2NrIiksd3MoMiksSmcoInJnIiwzNjApKCJ2YWx1ZSIsbnVsbD09dC5oc2xhVGV4dD9udWxsOnQuaHNsYVRleHQuaCksd3MoMSksSmcoInJnIiwxMDApKCJ2YWx1ZSIsbnVsbD09dC5oc2xhVGV4dD9udWxsOnQuaHNsYVRleHQucyksd3MoMSksSmcoInJnIiwxMDApKCJ2YWx1ZSIsbnVsbD09dC5oc2xhVGV4dD9udWxsOnQuaHNsYVRleHQubCksd3MoMSksSmcoIm5nSWYiLCJkaXNhYmxlZCIhPT10LmNwQWxwaGFDaGFubmVsKSx3cyg4KSxKZygibmdJZiIsImRpc2FibGVkIiE9PXQuY3BBbHBoYUNoYW5uZWwpfX1mdW5jdGlvbiBwSih0LG4pe2lmKDEmdCl7Y29uc3QgdD1vcCgpO0tnKDAsImlucHV0IiwzNCksY3AoImtleXVwLmVudGVyIiwoZnVuY3Rpb24gbihlKXtyZXR1cm4ganIodCksZ3AoMikub25BY2NlcHRDb2xvcihlKX0pKSgibmV3VmFsdWUiLChmdW5jdGlvbiBuKGUpe3JldHVybiBqcih0KSxncCgyKS5vbkFscGhhSW5wdXQoZSl9KSksJGcoKX1pZigyJnQpe2NvbnN0IHQ9Z3AoMik7SmcoInJnIiwxKSgidmFsdWUiLG51bGw9PXQucmdiYVRleHQ/bnVsbDp0LnJnYmFUZXh0LmEpfX1mdW5jdGlvbiBiSih0LG4pezEmdCYmKEtnKDAsImRpdiIpLEpwKDEsIkEiKSwkZygpKX1mdW5jdGlvbiB1Sih0LG4pe2lmKDEmdCl7Y29uc3QgdD1vcCgpO0tnKDAsImRpdiIsMzcpLEtnKDEsImRpdiIsMzApLEtnKDIsImlucHV0IiwzOCksY3AoImtleXVwLmVudGVyIiwoZnVuY3Rpb24gbihlKXtyZXR1cm4ganIodCksZ3AoKS5vbkFjY2VwdENvbG9yKGUpfSkpKCJuZXdWYWx1ZSIsKGZ1bmN0aW9uIG4oZSl7cmV0dXJuIGpyKHQpLGdwKCkub25SZWRJbnB1dChlKX0pKSwkZygpLEtnKDMsImlucHV0IiwzOCksY3AoImtleXVwLmVudGVyIiwoZnVuY3Rpb24gbihlKXtyZXR1cm4ganIodCksZ3AoKS5vbkFjY2VwdENvbG9yKGUpfSkpKCJuZXdWYWx1ZSIsKGZ1bmN0aW9uIG4oZSl7cmV0dXJuIGpyKHQpLGdwKCkub25HcmVlbklucHV0KGUpfSkpLCRnKCksS2coNCwiaW5wdXQiLDM4KSxjcCgia2V5dXAuZW50ZXIiLChmdW5jdGlvbiBuKGUpe3JldHVybiBqcih0KSxncCgpLm9uQWNjZXB0Q29sb3IoZSl9KSkoIm5ld1ZhbHVlIiwoZnVuY3Rpb24gbihlKXtyZXR1cm4ganIodCksZ3AoKS5vbkJsdWVJbnB1dChlKX0pKSwkZygpLFlnKDUscEosMSwyLCJpbnB1dCIsMzIpLCRnKCksS2coNiwiZGl2IiwzMCksS2coNywiZGl2IiksSnAoOCwiUiIpLCRnKCksS2coOSwiZGl2IiksSnAoMTAsIkciKSwkZygpLEtnKDExLCJkaXYiKSxKcCgxMiwiQiIpLCRnKCksWWcoMTMsYkosMiwwLCJkaXYiLDMzKSwkZygpLCRnKCl9aWYoMiZ0KXtjb25zdCB0PWdwKCk7VHAoImRpc3BsYXkiLDEhPT10LmZvcm1hdD8ibm9uZSI6ImJsb2NrIiksd3MoMiksSmcoInJnIiwyNTUpKCJ2YWx1ZSIsbnVsbD09dC5yZ2JhVGV4dD9udWxsOnQucmdiYVRleHQuciksd3MoMSksSmcoInJnIiwyNTUpKCJ2YWx1ZSIsbnVsbD09dC5yZ2JhVGV4dD9udWxsOnQucmdiYVRleHQuZyksd3MoMSksSmcoInJnIiwyNTUpKCJ2YWx1ZSIsbnVsbD09dC5yZ2JhVGV4dD9udWxsOnQucmdiYVRleHQuYiksd3MoMSksSmcoIm5nSWYiLCJkaXNhYmxlZCIhPT10LmNwQWxwaGFDaGFubmVsKSx3cyg4KSxKZygibmdJZiIsImRpc2FibGVkIiE9PXQuY3BBbHBoYUNoYW5uZWwpfX1mdW5jdGlvbiBmSih0LG4pe2lmKDEmdCl7Y29uc3QgdD1vcCgpO0tnKDAsImlucHV0IiwzNCksY3AoImtleXVwLmVudGVyIiwoZnVuY3Rpb24gbihlKXtyZXR1cm4ganIodCksZ3AoMikub25BY2NlcHRDb2xvcihlKX0pKSgibmV3VmFsdWUiLChmdW5jdGlvbiBuKGUpe3JldHVybiBqcih0KSxncCgyKS5vbkFscGhhSW5wdXQoZSl9KSksJGcoKX1pZigyJnQpe2NvbnN0IHQ9Z3AoMik7SmcoInJnIiwxKSgidmFsdWUiLHQuaGV4QWxwaGEpfX1mdW5jdGlvbiBoSih0LG4pezEmdCYmKEtnKDAsImRpdiIpLEpwKDEsIkEiKSwkZygpKX1mdW5jdGlvbiBfSih0LG4pe2lmKDEmdCl7Y29uc3QgdD1vcCgpO0tnKDAsImRpdiIsMzkpLEtnKDEsImRpdiIsMzApLEtnKDIsImlucHV0Iiw0MCksY3AoImJsdXIiLChmdW5jdGlvbiBuKCl7cmV0dXJuIGpyKHQpLGdwKCkub25IZXhJbnB1dChudWxsKX0pKSgia2V5dXAuZW50ZXIiLChmdW5jdGlvbiBuKGUpe3JldHVybiBqcih0KSxncCgpLm9uQWNjZXB0Q29sb3IoZSl9KSkoIm5ld1ZhbHVlIiwoZnVuY3Rpb24gbihlKXtyZXR1cm4ganIodCksZ3AoKS5vbkhleElucHV0KGUpfSkpLCRnKCksWWcoMyxmSiwxLDIsImlucHV0IiwzMiksJGcoKSxLZyg0LCJkaXYiLDMwKSxLZyg1LCJkaXYiKSxKcCg2LCJIZXgiKSwkZygpLFlnKDcsaEosMiwwLCJkaXYiLDMzKSwkZygpLCRnKCl9aWYoMiZ0KXtjb25zdCB0PWdwKCk7VHAoImRpc3BsYXkiLDAhPT10LmZvcm1hdD8ibm9uZSI6ImJsb2NrIiksRHAoImhleC1hbHBoYSIsImZvcmNlZCI9PT10LmNwQWxwaGFDaGFubmVsKSx3cygyKSxKZygidmFsdWUiLHQuaGV4VGV4dCksd3MoMSksSmcoIm5nSWYiLCJmb3JjZWQiPT09dC5jcEFscGhhQ2hhbm5lbCksd3MoNCksSmcoIm5nSWYiLCJmb3JjZWQiPT09dC5jcEFscGhhQ2hhbm5lbCl9fWZ1bmN0aW9uIENKKHQsbil7aWYoMSZ0KXtjb25zdCB0PW9wKCk7S2coMCwiaW5wdXQiLDM0KSxjcCgia2V5dXAuZW50ZXIiLChmdW5jdGlvbiBuKGUpe3JldHVybiBqcih0KSxncCgyKS5vbkFjY2VwdENvbG9yKGUpfSkpKCJuZXdWYWx1ZSIsKGZ1bmN0aW9uIG4oZSl7cmV0dXJuIGpyKHQpLGdwKDIpLm9uQWxwaGFJbnB1dChlKX0pKSwkZygpfWlmKDImdCl7Y29uc3QgdD1ncCgyKTtKZygicmciLDEpKCJ2YWx1ZSIsbnVsbD09dC5oc2xhVGV4dD9udWxsOnQuaHNsYVRleHQuYSl9fWZ1bmN0aW9uIE1KKHQsbil7aWYoMSZ0KXtjb25zdCB0PW9wKCk7S2coMCwiZGl2Iiw0MSksS2coMSwiZGl2IiwzMCksS2coMiwiaW5wdXQiLDMxKSxjcCgia2V5dXAuZW50ZXIiLChmdW5jdGlvbiBuKGUpe3JldHVybiBqcih0KSxncCgpLm9uQWNjZXB0Q29sb3IoZSl9KSkoIm5ld1ZhbHVlIiwoZnVuY3Rpb24gbihlKXtyZXR1cm4ganIodCksZ3AoKS5vblZhbHVlSW5wdXQoZSl9KSksJGcoKSxZZygzLENKLDEsMiwiaW5wdXQiLDMyKSwkZygpLEtnKDQsImRpdiIsMzApLEtnKDUsImRpdiIpLEpwKDYsIlYiKSwkZygpLEtnKDcsImRpdiIpLEpwKDgsIkEiKSwkZygpLCRnKCksJGcoKX1pZigyJnQpe2NvbnN0IHQ9Z3AoKTt3cygyKSxKZygicmciLDEwMCkoInZhbHVlIixudWxsPT10LmhzbGFUZXh0P251bGw6dC5oc2xhVGV4dC5sKSx3cygxKSxKZygibmdJZiIsImRpc2FibGVkIiE9PXQuY3BBbHBoYUNoYW5uZWwpfX1mdW5jdGlvbiBPSih0LG4pe2lmKDEmdCl7Y29uc3QgdD1vcCgpO0tnKDAsImRpdiIsNDIpLEtnKDEsInNwYW4iLDQzKSxjcCgiY2xpY2siLChmdW5jdGlvbiBuKCl7cmV0dXJuIGpyKHQpLGdwKCkub25Gb3JtYXRUb2dnbGUoLTEpfSkpLCRnKCksS2coMiwic3BhbiIsNDMpLGNwKCJjbGljayIsKGZ1bmN0aW9uIG4oKXtyZXR1cm4ganIodCksZ3AoKS5vbkZvcm1hdFRvZ2dsZSgxKX0pKSwkZygpLCRnKCl9fWZ1bmN0aW9uIFBKKHQsbil7aWYoMSZ0KXtjb25zdCB0PW9wKCk7S2coMCwic3BhbiIsNTApLGNwKCJjbGljayIsKGZ1bmN0aW9uIG4oZSl7anIodCk7Y29uc3QgYT1ncCgpLiRpbXBsaWNpdDtyZXR1cm4gZ3AoMykub25SZW1vdmVQcmVzZXRDb2xvcihlLGEpfSkpLCRnKCl9MiZ0JiZGcChncCg0KS5jcFJlbW92ZUNvbG9yQnV0dG9uQ2xhc3MpfWZ1bmN0aW9uIHhKKHQsbil7aWYoMSZ0KXtjb25zdCB0PW9wKCk7S2coMCwiZGl2Iiw0OCksY3AoImNsaWNrIiwoZnVuY3Rpb24gZSgpe2pyKHQpO2NvbnN0IGE9bi4kaW1wbGljaXQ7cmV0dXJuIGdwKDMpLnNldENvbG9yRnJvbVN0cmluZyhhKX0pKSxZZygxLFBKLDEsMywic3BhbiIsNDkpLCRnKCl9aWYoMiZ0KXtjb25zdCB0PW4uJGltcGxpY2l0LGU9Z3AoMyk7VHAoImJhY2tncm91bmQtY29sb3IiLHQpLHdzKDEpLEpnKCJuZ0lmIixlLmNwQWRkQ29sb3JCdXR0b24pfX1mdW5jdGlvbiB5Sih0LG4pe2lmKDEmdCYmKEtnKDAsImRpdiIpLFlnKDEseEosMiwzLCJkaXYiLDQ3KSwkZygpKSwyJnQpe2NvbnN0IHQ9Z3AoMik7RnAodC5jcFByZXNldENvbG9yc0NsYXNzKSx3cygxKSxKZygibmdGb3JPZiIsdC5jcFByZXNldENvbG9ycyl9fWZ1bmN0aW9uIGtKKHQsbil7aWYoMSZ0JiYoS2coMCwiZGl2IiksSnAoMSksJGcoKSksMiZ0KXtjb25zdCB0PWdwKDIpO0ZwKHQuY3BQcmVzZXRFbXB0eU1lc3NhZ2VDbGFzcyksd3MoMSksUXAodC5jcFByZXNldEVtcHR5TWVzc2FnZSl9fWZ1bmN0aW9uIHZKKHQsbil7aWYoMSZ0JiYoS2coMCwiZGl2Iiw0NCksdHAoMSwiaHIiKSxLZygyLCJkaXYiLDQ1KSxKcCgzKSwkZygpLFlnKDQseUosMiw0LCJkaXYiLDQ2KSxZZyg1LGtKLDIsNCwiZGl2Iiw0NiksJGcoKSksMiZ0KXtjb25zdCB0PWdwKCk7d3MoMyksUXAodC5jcFByZXNldExhYmVsKSx3cygxKSxKZygibmdJZiIsbnVsbD09dC5jcFByZXNldENvbG9ycz9udWxsOnQuY3BQcmVzZXRDb2xvcnMubGVuZ3RoKSx3cygxKSxKZygibmdJZiIsIShudWxsIT10LmNwUHJlc2V0Q29sb3JzJiZ0LmNwUHJlc2V0Q29sb3JzLmxlbmd0aCkmJnQuY3BBZGRDb2xvckJ1dHRvbil9fWZ1bmN0aW9uIHdKKHQsbil7aWYoMSZ0KXtjb25zdCB0PW9wKCk7S2coMCwiYnV0dG9uIiw1MyksY3AoImNsaWNrIiwoZnVuY3Rpb24gbihlKXtyZXR1cm4ganIodCksZ3AoMikub25DYW5jZWxDb2xvcihlKX0pKSxKcCgxKSwkZygpfWlmKDImdCl7Y29uc3QgdD1ncCgyKTtGcCh0LmNwQ2FuY2VsQnV0dG9uQ2xhc3MpLHdzKDEpLFFwKHQuY3BDYW5jZWxCdXR0b25UZXh0KX19ZnVuY3Rpb24gU0oodCxuKXtpZigxJnQpe2NvbnN0IHQ9b3AoKTtLZygwLCJidXR0b24iLDUzKSxjcCgiY2xpY2siLChmdW5jdGlvbiBuKGUpe3JldHVybiBqcih0KSxncCgyKS5vbkFjY2VwdENvbG9yKGUpfSkpLEpwKDEpLCRnKCl9aWYoMiZ0KXtjb25zdCB0PWdwKDIpO0ZwKHQuY3BPS0J1dHRvbkNsYXNzKSx3cygxKSxRcCh0LmNwT0tCdXR0b25UZXh0KX19ZnVuY3Rpb24gRUoodCxuKXtpZigxJnQmJihLZygwLCJkaXYiLDUxKSxZZygxLHdKLDIsNCwiYnV0dG9uIiw1MiksWWcoMixTSiwyLDQsImJ1dHRvbiIsNTIpLCRnKCkpLDImdCl7Y29uc3QgdD1ncCgpO3dzKDEpLEpnKCJuZ0lmIix0LmNwQ2FuY2VsQnV0dG9uKSx3cygxKSxKZygibmdJZiIsdC5jcE9LQnV0dG9uKX19dmFyIEFKOyEoZnVuY3Rpb24odCl7dFt0LkhFWD0wXT0iSEVYIix0W3QuUkdCQT0xXT0iUkdCQSIsdFt0LkhTTEE9Ml09IkhTTEEiLHRbdC5DTVlLPTNdPSJDTVlLIn0pKEFKfHwoQUo9e30pKTtjbGFzcyB6Sntjb25zdHJ1Y3Rvcih0LG4sZSxhKXt0aGlzLnI9dCx0aGlzLmc9bix0aGlzLmI9ZSx0aGlzLmE9YX19Y2xhc3MgUkp7Y29uc3RydWN0b3IodCxuLGUsYSl7dGhpcy5oPXQsdGhpcy5zPW4sdGhpcy52PWUsdGhpcy5hPWF9fWNsYXNzIFRKe2NvbnN0cnVjdG9yKHQsbixlLGEpe3RoaXMuaD10LHRoaXMucz1uLHRoaXMubD1lLHRoaXMuYT1hfX1jbGFzcyBESntjb25zdHJ1Y3Rvcih0LG4sZSxhLG89MSl7dGhpcy5jPXQsdGhpcy5tPW4sdGhpcy55PWUsdGhpcy5rPWEsdGhpcy5hPW99fWNsYXNzIElKe2NvbnN0cnVjdG9yKCl7dGhpcy5uZXdWYWx1ZT1uZXcgRWZ9aW5wdXRDaGFuZ2UodCl7Y29uc3Qgbj10LnRhcmdldC52YWx1ZTtpZih2b2lkIDA9PT10aGlzLnJnKXRoaXMubmV3VmFsdWUuZW1pdChuKTtlbHNle2NvbnN0IHQ9cGFyc2VGbG9hdChuKTt0aGlzLm5ld1ZhbHVlLmVtaXQoe3Y6dCxyZzp0aGlzLnJnfSl9fX1JSi7JtWZhYz1mdW5jdGlvbiB0KG4pe3JldHVybiBuZXcobnx8SUopfSxJSi7JtWRpcj12byh7dHlwZTpJSixzZWxlY3RvcnM6W1siIiwidGV4dCIsIiJdXSxob3N0QmluZGluZ3M6ZnVuY3Rpb24gdChuLGUpezEmbiYmY3AoImlucHV0IiwoZnVuY3Rpb24gdChuKXtyZXR1cm4gZS5pbnB1dENoYW5nZShuKX0pKX0saW5wdXRzOntyZzoicmciLHRleHQ6InRleHQifSxvdXRwdXRzOntuZXdWYWx1ZToibmV3VmFsdWUifX0pLElKLnByb3BEZWNvcmF0b3JzPXtyZzpbe3R5cGU6Zl99XSx0ZXh0Olt7dHlwZTpmX31dLG5ld1ZhbHVlOlt7dHlwZTpoX31dLGlucHV0Q2hhbmdlOlt7dHlwZTpfXyxhcmdzOlsiaW5wdXQiLFsiJGV2ZW50Il1dfV19O2NsYXNzIE5Ke2NvbnN0cnVjdG9yKHQpe3RoaXMuZWxSZWY9dCx0aGlzLmRyYWdFbmQ9bmV3IEVmLHRoaXMuZHJhZ1N0YXJ0PW5ldyBFZix0aGlzLm5ld1ZhbHVlPW5ldyBFZix0aGlzLmxpc3RlbmVyTW92ZT10PT50aGlzLm1vdmUodCksdGhpcy5saXN0ZW5lclN0b3A9KCk9PnRoaXMuc3RvcCgpfW1vdXNlRG93bih0KXt0aGlzLnN0YXJ0KHQpfXRvdWNoU3RhcnQodCl7dGhpcy5zdGFydCh0KX1tb3ZlKHQpe3QucHJldmVudERlZmF1bHQoKSx0aGlzLnNldEN1cnNvcih0KX1zdGFydCh0KXt0aGlzLnNldEN1cnNvcih0KSx0LnN0b3BQcm9wYWdhdGlvbigpLGRvY3VtZW50LmFkZEV2ZW50TGlzdGVuZXIoIm1vdXNldXAiLHRoaXMubGlzdGVuZXJTdG9wKSxkb2N1bWVudC5hZGRFdmVudExpc3RlbmVyKCJ0b3VjaGVuZCIsdGhpcy5saXN0ZW5lclN0b3ApLGRvY3VtZW50LmFkZEV2ZW50TGlzdGVuZXIoIm1vdXNlbW92ZSIsdGhpcy5saXN0ZW5lck1vdmUpLGRvY3VtZW50LmFkZEV2ZW50TGlzdGVuZXIoInRvdWNobW92ZSIsdGhpcy5saXN0ZW5lck1vdmUpLHRoaXMuZHJhZ1N0YXJ0LmVtaXQoKX1zdG9wKCl7ZG9jdW1lbnQucmVtb3ZlRXZlbnRMaXN0ZW5lcigibW91c2V1cCIsdGhpcy5saXN0ZW5lclN0b3ApLGRvY3VtZW50LnJlbW92ZUV2ZW50TGlzdGVuZXIoInRvdWNoZW5kIix0aGlzLmxpc3RlbmVyU3RvcCksZG9jdW1lbnQucmVtb3ZlRXZlbnRMaXN0ZW5lcigibW91c2Vtb3ZlIix0aGlzLmxpc3RlbmVyTW92ZSksZG9jdW1lbnQucmVtb3ZlRXZlbnRMaXN0ZW5lcigidG91Y2htb3ZlIix0aGlzLmxpc3RlbmVyTW92ZSksdGhpcy5kcmFnRW5kLmVtaXQoKX1nZXRYKHQpe2NvbnN0IG49dGhpcy5lbFJlZi5uYXRpdmVFbGVtZW50LmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpO3JldHVybih2b2lkIDAhPT10LnBhZ2VYP3QucGFnZVg6dC50b3VjaGVzWzBdLnBhZ2VYKS1uLmxlZnQtd2luZG93LnBhZ2VYT2Zmc2V0fWdldFkodCl7Y29uc3Qgbj10aGlzLmVsUmVmLm5hdGl2ZUVsZW1lbnQuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCk7cmV0dXJuKHZvaWQgMCE9PXQucGFnZVk/dC5wYWdlWTp0LnRvdWNoZXNbMF0ucGFnZVkpLW4udG9wLXdpbmRvdy5wYWdlWU9mZnNldH1zZXRDdXJzb3IodCl7Y29uc3Qgbj10aGlzLmVsUmVmLm5hdGl2ZUVsZW1lbnQub2Zmc2V0V2lkdGgsZT10aGlzLmVsUmVmLm5hdGl2ZUVsZW1lbnQub2Zmc2V0SGVpZ2h0LGE9TWF0aC5tYXgoMCxNYXRoLm1pbih0aGlzLmdldFgodCksbikpLG89TWF0aC5tYXgoMCxNYXRoLm1pbih0aGlzLmdldFkodCksZSkpO3ZvaWQgMCE9PXRoaXMucmdYJiZ2b2lkIDAhPT10aGlzLnJnWT90aGlzLm5ld1ZhbHVlLmVtaXQoe3M6YS9uLHY6MS1vL2UscmdYOnRoaXMucmdYLHJnWTp0aGlzLnJnWX0pOnZvaWQgMD09PXRoaXMucmdYJiZ2b2lkIDAhPT10aGlzLnJnWT90aGlzLm5ld1ZhbHVlLmVtaXQoe3Y6by9lLHJnWTp0aGlzLnJnWX0pOnZvaWQgMCE9PXRoaXMucmdYJiZ2b2lkIDA9PT10aGlzLnJnWSYmdGhpcy5uZXdWYWx1ZS5lbWl0KHt2OmEvbixyZ1g6dGhpcy5yZ1h9KX19TkouybVmYWM9ZnVuY3Rpb24gdChuKXtyZXR1cm4gbmV3KG58fE5KKShaZyh4dSkpfSxOSi7JtWRpcj12byh7dHlwZTpOSixzZWxlY3RvcnM6W1siIiwic2xpZGVyIiwiIl1dLGhvc3RCaW5kaW5nczpmdW5jdGlvbiB0KG4sZSl7MSZuJiZjcCgibW91c2Vkb3duIiwoZnVuY3Rpb24gdChuKXtyZXR1cm4gZS5tb3VzZURvd24obil9KSkoInRvdWNoc3RhcnQiLChmdW5jdGlvbiB0KG4pe3JldHVybiBlLnRvdWNoU3RhcnQobil9KSl9LGlucHV0czp7cmdYOiJyZ1giLHJnWToicmdZIixzbGlkZXI6InNsaWRlciJ9LG91dHB1dHM6e2RyYWdFbmQ6ImRyYWdFbmQiLGRyYWdTdGFydDoiZHJhZ1N0YXJ0IixuZXdWYWx1ZToibmV3VmFsdWUifX0pLE5KLmN0b3JQYXJhbWV0ZXJzPSgpPT5be3R5cGU6eHV9XSxOSi5wcm9wRGVjb3JhdG9ycz17cmdYOlt7dHlwZTpmX31dLHJnWTpbe3R5cGU6Zl99XSxzbGlkZXI6W3t0eXBlOmZffV0sZHJhZ0VuZDpbe3R5cGU6aF99XSxkcmFnU3RhcnQ6W3t0eXBlOmhffV0sbmV3VmFsdWU6W3t0eXBlOmhffV0sbW91c2VEb3duOlt7dHlwZTpfXyxhcmdzOlsibW91c2Vkb3duIixbIiRldmVudCJdXX1dLHRvdWNoU3RhcnQ6W3t0eXBlOl9fLGFyZ3M6WyJ0b3VjaHN0YXJ0IixbIiRldmVudCJdXX1dfTtjbGFzcyBGSntjb25zdHJ1Y3Rvcih0LG4sZSxhKXt0aGlzLmg9dCx0aGlzLnM9bix0aGlzLnY9ZSx0aGlzLmE9YX19Y2xhc3MgTEp7Y29uc3RydWN0b3IodCxuLGUsYSl7dGhpcy5oPXQsdGhpcy5zPW4sdGhpcy52PWUsdGhpcy5hPWF9fWNsYXNzIEhKe2NvbnN0cnVjdG9yKCl7dGhpcy5hY3RpdmU9bnVsbH1zZXRBY3RpdmUodCl7dGhpcy5hY3RpdmUmJnRoaXMuYWN0aXZlIT09dCYmImlubGluZSIhPT10aGlzLmFjdGl2ZS5jcERpYWxvZ0Rpc3BsYXkmJnRoaXMuYWN0aXZlLmNsb3NlRGlhbG9nKCksdGhpcy5hY3RpdmU9dH1oc3ZhMmhzbGEodCl7Y29uc3Qgbj10LmgsZT10LnMsYT10LnYsbz10LmE7aWYoMD09PWEpcmV0dXJuIG5ldyBUSihuLDAsMCxvKTtpZigwPT09ZSYmMT09PWEpcmV0dXJuIG5ldyBUSihuLDEsMSxvKTt7Y29uc3QgdD1hKigyLWUpLzI7cmV0dXJuIG5ldyBUSihuLGEqZS8oMS1NYXRoLmFicygyKnQtMSkpLHQsbyl9fWhzbGEyaHN2YSh0KXtjb25zdCBuPU1hdGgubWluKHQuaCwxKSxlPU1hdGgubWluKHQucywxKSxhPU1hdGgubWluKHQubCwxKSxvPU1hdGgubWluKHQuYSwxKTtpZigwPT09YSlyZXR1cm4gbmV3IFJKKG4sMCwwLG8pO3tjb25zdCB0PWErZSooMS1NYXRoLmFicygyKmEtMSkpLzI7cmV0dXJuIG5ldyBSSihuLDIqKHQtYSkvdCx0LG8pfX1oc3ZhVG9SZ2JhKHQpe2xldCBuLGUsYTtjb25zdCBvPXQuaCxyPXQucyxpPXQudixjPXQuYSxzPU1hdGguZmxvb3IoNipvKSxsPTYqby1zLG09aSooMS1yKSxkPWkqKDEtbCpyKSxnPWkqKDEtKDEtbCkqcik7c3dpdGNoKHMlNil7Y2FzZSAwOm49aSxlPWcsYT1tO2JyZWFrO2Nhc2UgMTpuPWQsZT1pLGE9bTticmVhaztjYXNlIDI6bj1tLGU9aSxhPWc7YnJlYWs7Y2FzZSAzOm49bSxlPWQsYT1pO2JyZWFrO2Nhc2UgNDpuPWcsZT1tLGE9aTticmVhaztjYXNlIDU6bj1pLGU9bSxhPWQ7YnJlYWs7ZGVmYXVsdDpuPTAsZT0wLGE9MH1yZXR1cm4gbmV3IHpKKG4sZSxhLGMpfWNteWtUb1JnYih0KXtyZXR1cm4gbmV3IHpKKCgxLXQuYykqKDEtdC5rKSwoMS10Lm0pKigxLXQuayksKDEtdC55KSooMS10LmspLHQuYSl9cmdiYVRvQ215ayh0KXtjb25zdCBuPTEtTWF0aC5tYXgodC5yLHQuZyx0LmIpO3JldHVybiAxPT09bj9uZXcgREooMCwwLDAsMSx0LmEpOm5ldyBESigoMS10LnItbikvKDEtbiksKDEtdC5nLW4pLygxLW4pLCgxLXQuYi1uKS8oMS1uKSxuLHQuYSl9cmdiYVRvSHN2YSh0KXtsZXQgbixlO2NvbnN0IGE9TWF0aC5taW4odC5yLDEpLG89TWF0aC5taW4odC5nLDEpLHI9TWF0aC5taW4odC5iLDEpLGk9TWF0aC5taW4odC5hLDEpLGM9TWF0aC5tYXgoYSxvLHIpLHM9TWF0aC5taW4oYSxvLHIpLGw9YyxtPWMtcztpZihlPTA9PT1jPzA6bS9jLGM9PT1zKW49MDtlbHNle3N3aXRjaChjKXtjYXNlIGE6bj0oby1yKS9tKyhvPHI/NjowKTticmVhaztjYXNlIG86bj0oci1hKS9tKzI7YnJlYWs7Y2FzZSByOm49KGEtbykvbSs0O2JyZWFrO2RlZmF1bHQ6bj0wfW4vPTZ9cmV0dXJuIG5ldyBSSihuLGUsbCxpKX1yZ2JhVG9IZXgodCxuKXtsZXQgZT0iIyIrKDE8PDI0fHQucjw8MTZ8dC5nPDw4fHQuYikudG9TdHJpbmcoMTYpLnN1YnN0cigxKTtyZXR1cm4gbiYmKGUrPSgyNTZ8TWF0aC5yb3VuZCgyNTUqdC5hKSkudG9TdHJpbmcoMTYpLnN1YnN0cigxKSksZX1ub3JtYWxpemVDTVlLKHQpe3JldHVybiBuZXcgREoodC5jLzEwMCx0Lm0vMTAwLHQueS8xMDAsdC5rLzEwMCx0LmEpfWRlbm9ybWFsaXplQ01ZSyh0KXtyZXR1cm4gbmV3IERKKE1hdGguZmxvb3IoMTAwKnQuYyksTWF0aC5mbG9vcigxMDAqdC5tKSxNYXRoLmZsb29yKDEwMCp0LnkpLE1hdGguZmxvb3IoMTAwKnQuayksdC5hKX1kZW5vcm1hbGl6ZVJHQkEodCl7cmV0dXJuIG5ldyB6SihNYXRoLnJvdW5kKDI1NSp0LnIpLE1hdGgucm91bmQoMjU1KnQuZyksTWF0aC5yb3VuZCgyNTUqdC5iKSx0LmEpfXN0cmluZ1RvSHN2YSh0PSIiLG49ITEpe2xldCBlPW51bGw7dD0odHx8IiIpLnRvTG93ZXJDYXNlKCk7Y29uc3QgYT1be3JlOi8ocmdiKWE/XChccyooXGR7MSwzfSlccyosXHMqKFxkezEsM30pXHMqJT8sXHMqKFxkezEsM30pXHMqJT8oPzosXHMqKFxkKyg/OlwuXGQrKT8pXHMqKT9cKS8scGFyc2U6ZnVuY3Rpb24odCl7cmV0dXJuIG5ldyB6SihwYXJzZUludCh0WzJdLDEwKS8yNTUscGFyc2VJbnQodFszXSwxMCkvMjU1LHBhcnNlSW50KHRbNF0sMTApLzI1NSxpc05hTihwYXJzZUZsb2F0KHRbNV0pKT8xOnBhcnNlRmxvYXQodFs1XSkpfX0se3JlOi8oaHNsKWE/XChccyooXGR7MSwzfSlccyosXHMqKFxkezEsM30pJVxzKixccyooXGR7MSwzfSklXHMqKD86LFxzKihcZCsoPzpcLlxkKyk/KVxzKik/XCkvLHBhcnNlOmZ1bmN0aW9uKHQpe3JldHVybiBuZXcgVEoocGFyc2VJbnQodFsyXSwxMCkvMzYwLHBhcnNlSW50KHRbM10sMTApLzEwMCxwYXJzZUludCh0WzRdLDEwKS8xMDAsaXNOYU4ocGFyc2VGbG9hdCh0WzVdKSk/MTpwYXJzZUZsb2F0KHRbNV0pKX19XTthLnB1c2gobj97cmU6LyMoW2EtZkEtRjAtOV17Mn0pKFthLWZBLUYwLTldezJ9KShbYS1mQS1GMC05XXsyfSkoW2EtZkEtRjAtOV17Mn0pPyQvLHBhcnNlOmZ1bmN0aW9uKHQpe3JldHVybiBuZXcgekoocGFyc2VJbnQodFsxXSwxNikvMjU1LHBhcnNlSW50KHRbMl0sMTYpLzI1NSxwYXJzZUludCh0WzNdLDE2KS8yNTUscGFyc2VJbnQodFs0XXx8IkZGIiwxNikvMjU1KX19OntyZTovIyhbYS1mQS1GMC05XXsyfSkoW2EtZkEtRjAtOV17Mn0pKFthLWZBLUYwLTldezJ9KSQvLHBhcnNlOmZ1bmN0aW9uKHQpe3JldHVybiBuZXcgekoocGFyc2VJbnQodFsxXSwxNikvMjU1LHBhcnNlSW50KHRbMl0sMTYpLzI1NSxwYXJzZUludCh0WzNdLDE2KS8yNTUsMSl9fSksYS5wdXNoKHtyZTovIyhbYS1mQS1GMC05XSkoW2EtZkEtRjAtOV0pKFthLWZBLUYwLTldKSQvLHBhcnNlOmZ1bmN0aW9uKHQpe3JldHVybiBuZXcgekoocGFyc2VJbnQodFsxXSt0WzFdLDE2KS8yNTUscGFyc2VJbnQodFsyXSt0WzJdLDE2KS8yNTUscGFyc2VJbnQodFszXSt0WzNdLDE2KS8yNTUsMSl9fSk7Zm9yKGNvbnN0IG4gaW4gYSlpZihhLmhhc093blByb3BlcnR5KG4pKXtjb25zdCBvPWFbbl0scj1vLnJlLmV4ZWModCksaT1yJiZvLnBhcnNlKHIpO2lmKGkpcmV0dXJuIGkgaW5zdGFuY2VvZiB6Sj9lPXRoaXMucmdiYVRvSHN2YShpKTppIGluc3RhbmNlb2YgVEomJihlPXRoaXMuaHNsYTJoc3ZhKGkpKSxlfXJldHVybiBlfW91dHB1dEZvcm1hdCh0LG4sZSl7c3dpdGNoKCJhdXRvIj09PW4mJihuPXQuYTwxPyJyZ2JhIjoiaGV4Iiksbil7Y2FzZSJoc2xhIjpjb25zdCBuPXRoaXMuaHN2YTJoc2xhKHQpLGE9bmV3IFRKKE1hdGgucm91bmQoMzYwKm4uaCksTWF0aC5yb3VuZCgxMDAqbi5zKSxNYXRoLnJvdW5kKDEwMCpuLmwpLE1hdGgucm91bmQoMTAwKm4uYSkvMTAwKTtyZXR1cm4gdC5hPDF8fCJhbHdheXMiPT09ZT8iaHNsYSgiK2EuaCsiLCIrYS5zKyIlLCIrYS5sKyIlLCIrYS5hKyIpIjoiaHNsKCIrYS5oKyIsIithLnMrIiUsIithLmwrIiUpIjtjYXNlInJnYmEiOmNvbnN0IG89dGhpcy5kZW5vcm1hbGl6ZVJHQkEodGhpcy5oc3ZhVG9SZ2JhKHQpKTtyZXR1cm4gdC5hPDF8fCJhbHdheXMiPT09ZT8icmdiYSgiK28ucisiLCIrby5nKyIsIitvLmIrIiwiK01hdGgucm91bmQoMTAwKm8uYSkvMTAwKyIpIjoicmdiKCIrby5yKyIsIitvLmcrIiwiK28uYisiKSI7ZGVmYXVsdDpjb25zdCByPSJhbHdheXMiPT09ZXx8ImZvcmNlZCI9PT1lO3JldHVybiB0aGlzLnJnYmFUb0hleCh0aGlzLmRlbm9ybWFsaXplUkdCQSh0aGlzLmhzdmFUb1JnYmEodCkpLHIpfX19SEouybVmYWM9ZnVuY3Rpb24gdChuKXtyZXR1cm4gbmV3KG58fEhKKX0sSEouybVwcm92PVdlKHt0b2tlbjpISixmYWN0b3J5OkhKLsm1ZmFjfSksSEouY3RvclBhcmFtZXRlcnM9KCk9PltdO2NsYXNzIEJKe2NvbnN0cnVjdG9yKHQsbixlKXt0aGlzLmVsUmVmPXQsdGhpcy5jZFJlZj1uLHRoaXMuc2VydmljZT1lLHRoaXMuaXNJRTEwPSExLHRoaXMuZGlhbG9nQXJyb3dTaXplPTEwLHRoaXMuZGlhbG9nQXJyb3dPZmZzZXQ9MTUsdGhpcy5kaWFsb2dJbnB1dEZpZWxkcz1bQUouSEVYLEFKLlJHQkEsQUouSFNMQSxBSi5DTVlLXSx0aGlzLnVzZVJvb3RWaWV3Q29udGFpbmVyPSExfWhhbmRsZUVzYyh0KXt0aGlzLnNob3cmJiJwb3B1cCI9PT10aGlzLmNwRGlhbG9nRGlzcGxheSYmdGhpcy5vbkNhbmNlbENvbG9yKHQpfWhhbmRsZUVudGVyKHQpe3RoaXMuc2hvdyYmInBvcHVwIj09PXRoaXMuY3BEaWFsb2dEaXNwbGF5JiZ0aGlzLm9uQWNjZXB0Q29sb3IodCl9bmdPbkluaXQoKXt0aGlzLnNsaWRlcj1uZXcgRkooMCwwLDAsMCksdGhpcy5zbGlkZXJEaW1NYXg9bmV3IExKKHRoaXMuaHVlU2xpZGVyLm5hdGl2ZUVsZW1lbnQub2Zmc2V0V2lkdGh8fDE0MCx0aGlzLmNwV2lkdGgsMTMwLHRoaXMuYWxwaGFTbGlkZXIubmF0aXZlRWxlbWVudC5vZmZzZXRXaWR0aHx8MTQwKSx0aGlzLmZvcm1hdD10aGlzLmNwQ215a0VuYWJsZWQ/QUouQ01ZSzoicmdiYSI9PT10aGlzLmNwT3V0cHV0Rm9ybWF0P0FKLlJHQkE6ImhzbGEiPT09dGhpcy5jcE91dHB1dEZvcm1hdD9BSi5IU0xBOkFKLkhFWCx0aGlzLmxpc3RlbmVyTW91c2VEb3duPXQ9Pnt0aGlzLm9uTW91c2VEb3duKHQpfSx0aGlzLmxpc3RlbmVyUmVzaXplPSgpPT57dGhpcy5vblJlc2l6ZSgpfSx0aGlzLm9wZW5EaWFsb2codGhpcy5pbml0aWFsQ29sb3IsITEpfW5nT25EZXN0cm95KCl7dGhpcy5jbG9zZURpYWxvZygpfW5nQWZ0ZXJWaWV3SW5pdCgpezIzMD09PXRoaXMuY3BXaWR0aCYmImlubGluZSIhPT10aGlzLmNwRGlhbG9nRGlzcGxheXx8KHRoaXMuc2xpZGVyRGltTWF4PW5ldyBMSih0aGlzLmh1ZVNsaWRlci5uYXRpdmVFbGVtZW50Lm9mZnNldFdpZHRofHwxNDAsdGhpcy5jcFdpZHRoLDEzMCx0aGlzLmFscGhhU2xpZGVyLm5hdGl2ZUVsZW1lbnQub2Zmc2V0V2lkdGh8fDE0MCksdGhpcy51cGRhdGVDb2xvclBpY2tlcighMSksdGhpcy5jZFJlZi5kZXRlY3RDaGFuZ2VzKCkpfW9wZW5EaWFsb2codCxuPSEwKXt0aGlzLnNlcnZpY2Uuc2V0QWN0aXZlKHRoaXMpLHRoaXMud2lkdGh8fCh0aGlzLmNwV2lkdGg9dGhpcy5kaXJlY3RpdmVFbGVtZW50UmVmLm5hdGl2ZUVsZW1lbnQub2Zmc2V0V2lkdGgpLHRoaXMuaGVpZ2h0fHwodGhpcy5oZWlnaHQ9MzIwKSx0aGlzLnNldEluaXRpYWxDb2xvcih0KSx0aGlzLnNldENvbG9yRnJvbVN0cmluZyh0LG4pLHRoaXMub3BlbkNvbG9yUGlja2VyKCl9Y2xvc2VEaWFsb2coKXt0aGlzLmNsb3NlQ29sb3JQaWNrZXIoKX1zZXR1cERpYWxvZyh0LG4sZSxhLG8scixpLGMscyxsLG0sZCxnLHAsYix1LGYsaCxfLEMsTSxPLFAseCx5LGssdix3LFMsRSxBLHosUixULEQpe3RoaXMuc2V0SW5pdGlhbENvbG9yKGUpLHRoaXMuc2V0Q29sb3JNb2RlKGMpLHRoaXMuaXNJRTEwPTEwPT09KGZ1bmN0aW9uIEkoKXtsZXQgdD0iIjsidW5kZWZpbmVkIiE9dHlwZW9mIG5hdmlnYXRvciYmKHQ9bmF2aWdhdG9yLnVzZXJBZ2VudC50b0xvd2VyQ2FzZSgpKTtjb25zdCBuPXQuaW5kZXhPZigibXNpZSAiKTtyZXR1cm4gbj4wJiZwYXJzZUludCh0LnN1YnN0cmluZyhuKzUsdC5pbmRleE9mKCIuIixuKSksMTApfSkoKSx0aGlzLmRpcmVjdGl2ZUluc3RhbmNlPXQsdGhpcy5kaXJlY3RpdmVFbGVtZW50UmVmPW4sdGhpcy5jcERpc2FibGVJbnB1dD1kLHRoaXMuY3BDbXlrRW5hYmxlZD1zLHRoaXMuY3BBbHBoYUNoYW5uZWw9bCx0aGlzLmNwT3V0cHV0Rm9ybWF0PW0sdGhpcy5jcERpYWxvZ0Rpc3BsYXk9cix0aGlzLmNwSWdub3JlZEVsZW1lbnRzPWcsdGhpcy5jcFNhdmVDbGlja091dHNpZGU9cCx0aGlzLmNwQ2xvc2VDbGlja091dHNpZGU9Yix0aGlzLnVzZVJvb3RWaWV3Q29udGFpbmVyPXUsdGhpcy53aWR0aD10aGlzLmNwV2lkdGg9cGFyc2VJbnQoYSwxMCksdGhpcy5oZWlnaHQ9dGhpcy5jcEhlaWdodD1wYXJzZUludChvLDEwKSx0aGlzLmNwUG9zaXRpb249Zix0aGlzLmNwUG9zaXRpb25PZmZzZXQ9cGFyc2VJbnQoaCwxMCksdGhpcy5jcE9LQnV0dG9uPWssdGhpcy5jcE9LQnV0dG9uVGV4dD13LHRoaXMuY3BPS0J1dHRvbkNsYXNzPXYsdGhpcy5jcENhbmNlbEJ1dHRvbj1TLHRoaXMuY3BDYW5jZWxCdXR0b25UZXh0PUEsdGhpcy5jcENhbmNlbEJ1dHRvbkNsYXNzPUUsdGhpcy5mYWxsYmFja0NvbG9yPWl8fCIjZmZmIix0aGlzLnNldFByZXNldENvbmZpZyhDLE0pLHRoaXMuY3BQcmVzZXRDb2xvcnNDbGFzcz1PLHRoaXMuY3BNYXhQcmVzZXRDb2xvcnNMZW5ndGg9UCx0aGlzLmNwUHJlc2V0RW1wdHlNZXNzYWdlPXgsdGhpcy5jcFByZXNldEVtcHR5TWVzc2FnZUNsYXNzPXksdGhpcy5jcEFkZENvbG9yQnV0dG9uPXosdGhpcy5jcEFkZENvbG9yQnV0dG9uVGV4dD1ULHRoaXMuY3BBZGRDb2xvckJ1dHRvbkNsYXNzPVIsdGhpcy5jcFJlbW92ZUNvbG9yQnV0dG9uQ2xhc3M9RCxffHwodGhpcy5kaWFsb2dBcnJvd09mZnNldD0wKSwiaW5saW5lIj09PXImJih0aGlzLmRpYWxvZ0Fycm93U2l6ZT0wLHRoaXMuZGlhbG9nQXJyb3dPZmZzZXQ9MCksImhleCI9PT1tJiYiYWx3YXlzIiE9PWwmJiJmb3JjZWQiIT09bCYmKHRoaXMuY3BBbHBoYUNoYW5uZWw9ImRpc2FibGVkIil9c2V0Q29sb3JNb2RlKHQpe3N3aXRjaCh0LnRvU3RyaW5nKCkudG9VcHBlckNhc2UoKSl7Y2FzZSIxIjpjYXNlIkMiOmNhc2UiQ09MT1IiOnRoaXMuY3BDb2xvck1vZGU9MTticmVhaztjYXNlIjIiOmNhc2UiRyI6Y2FzZSJHUkFZU0NBTEUiOnRoaXMuY3BDb2xvck1vZGU9MjticmVhaztjYXNlIjMiOmNhc2UiUCI6Y2FzZSJQUkVTRVRTIjp0aGlzLmNwQ29sb3JNb2RlPTM7YnJlYWs7ZGVmYXVsdDp0aGlzLmNwQ29sb3JNb2RlPTF9fXNldEluaXRpYWxDb2xvcih0KXt0aGlzLmluaXRpYWxDb2xvcj10fXNldFByZXNldENvbmZpZyh0LG4pe3RoaXMuY3BQcmVzZXRMYWJlbD10LHRoaXMuY3BQcmVzZXRDb2xvcnM9bn1zZXRDb2xvckZyb21TdHJpbmcodCxuPSEwLGU9ITApe2xldCBhOyJhbHdheXMiPT09dGhpcy5jcEFscGhhQ2hhbm5lbHx8ImZvcmNlZCI9PT10aGlzLmNwQWxwaGFDaGFubmVsPyhhPXRoaXMuc2VydmljZS5zdHJpbmdUb0hzdmEodCwhMCksYXx8dGhpcy5oc3ZhfHwoYT10aGlzLnNlcnZpY2Uuc3RyaW5nVG9Ic3ZhKHQsITEpKSk6YT10aGlzLnNlcnZpY2Uuc3RyaW5nVG9Ic3ZhKHQsITEpLGF8fHRoaXMuaHN2YXx8KGE9dGhpcy5zZXJ2aWNlLnN0cmluZ1RvSHN2YSh0aGlzLmZhbGxiYWNrQ29sb3IsITEpKSxhJiYodGhpcy5oc3ZhPWEsdGhpcy5zbGlkZXJIPXRoaXMuaHN2YS5oLCJoZXgiPT09dGhpcy5jcE91dHB1dEZvcm1hdCYmImRpc2FibGVkIj09PXRoaXMuY3BBbHBoYUNoYW5uZWwmJih0aGlzLmhzdmEuYT0xKSx0aGlzLnVwZGF0ZUNvbG9yUGlja2VyKG4sZSkpfW9uUmVzaXplKCl7ImZpeGVkIj09PXRoaXMucG9zaXRpb24/dGhpcy5zZXREaWFsb2dQb3NpdGlvbigpOiJpbmxpbmUiIT09dGhpcy5jcERpYWxvZ0Rpc3BsYXkmJnRoaXMuY2xvc2VDb2xvclBpY2tlcigpfW9uRHJhZ0VuZCh0KXt0aGlzLmRpcmVjdGl2ZUluc3RhbmNlLnNsaWRlckRyYWdFbmQoe3NsaWRlcjp0LGNvbG9yOnRoaXMub3V0cHV0Q29sb3J9KX1vbkRyYWdTdGFydCh0KXt0aGlzLmRpcmVjdGl2ZUluc3RhbmNlLnNsaWRlckRyYWdTdGFydCh7c2xpZGVyOnQsY29sb3I6dGhpcy5vdXRwdXRDb2xvcn0pfW9uTW91c2VEb3duKHQpeyF0aGlzLnNob3d8fHRoaXMuaXNJRTEwfHwicG9wdXAiIT09dGhpcy5jcERpYWxvZ0Rpc3BsYXl8fHQudGFyZ2V0PT09dGhpcy5kaXJlY3RpdmVFbGVtZW50UmVmLm5hdGl2ZUVsZW1lbnR8fHRoaXMuaXNEZXNjZW5kYW50KHRoaXMuZWxSZWYubmF0aXZlRWxlbWVudCx0LnRhcmdldCl8fHRoaXMuaXNEZXNjZW5kYW50KHRoaXMuZGlyZWN0aXZlRWxlbWVudFJlZi5uYXRpdmVFbGVtZW50LHQudGFyZ2V0KXx8MCE9PXRoaXMuY3BJZ25vcmVkRWxlbWVudHMuZmlsdGVyKChuPT5uPT09dC50YXJnZXQpKS5sZW5ndGh8fCh0aGlzLmNwU2F2ZUNsaWNrT3V0c2lkZT90aGlzLmRpcmVjdGl2ZUluc3RhbmNlLmNvbG9yU2VsZWN0ZWQodGhpcy5vdXRwdXRDb2xvcik6KHRoaXMuaHN2YT1udWxsLHRoaXMuc2V0Q29sb3JGcm9tU3RyaW5nKHRoaXMuaW5pdGlhbENvbG9yLCExKSx0aGlzLmNwQ215a0VuYWJsZWQmJnRoaXMuZGlyZWN0aXZlSW5zdGFuY2UuY215a0NoYW5nZWQodGhpcy5jbXlrQ29sb3IpLHRoaXMuZGlyZWN0aXZlSW5zdGFuY2UuY29sb3JDaGFuZ2VkKHRoaXMuaW5pdGlhbENvbG9yKSx0aGlzLmRpcmVjdGl2ZUluc3RhbmNlLmNvbG9yQ2FuY2VsZWQoKSksdGhpcy5jcENsb3NlQ2xpY2tPdXRzaWRlJiZ0aGlzLmNsb3NlQ29sb3JQaWNrZXIoKSl9b25BY2NlcHRDb2xvcih0KXt0LnN0b3BQcm9wYWdhdGlvbigpLHRoaXMub3V0cHV0Q29sb3ImJnRoaXMuZGlyZWN0aXZlSW5zdGFuY2UuY29sb3JTZWxlY3RlZCh0aGlzLm91dHB1dENvbG9yKSwicG9wdXAiPT09dGhpcy5jcERpYWxvZ0Rpc3BsYXkmJnRoaXMuY2xvc2VDb2xvclBpY2tlcigpfW9uQ2FuY2VsQ29sb3IodCl7dGhpcy5oc3ZhPW51bGwsdC5zdG9wUHJvcGFnYXRpb24oKSx0aGlzLmRpcmVjdGl2ZUluc3RhbmNlLmNvbG9yQ2FuY2VsZWQoKSx0aGlzLnNldENvbG9yRnJvbVN0cmluZyh0aGlzLmluaXRpYWxDb2xvciwhMCksInBvcHVwIj09PXRoaXMuY3BEaWFsb2dEaXNwbGF5JiYodGhpcy5jcENteWtFbmFibGVkJiZ0aGlzLmRpcmVjdGl2ZUluc3RhbmNlLmNteWtDaGFuZ2VkKHRoaXMuY215a0NvbG9yKSx0aGlzLmRpcmVjdGl2ZUluc3RhbmNlLmNvbG9yQ2hhbmdlZCh0aGlzLmluaXRpYWxDb2xvciwhMCksdGhpcy5jbG9zZUNvbG9yUGlja2VyKCkpfW9uRm9ybWF0VG9nZ2xlKHQpe2NvbnN0IG49dGhpcy5kaWFsb2dJbnB1dEZpZWxkcy5sZW5ndGgtKHRoaXMuY3BDbXlrRW5hYmxlZD8wOjEpLGU9KCh0aGlzLmRpYWxvZ0lucHV0RmllbGRzLmluZGV4T2YodGhpcy5mb3JtYXQpK3QpJW4rbiklbjt0aGlzLmZvcm1hdD10aGlzLmRpYWxvZ0lucHV0RmllbGRzW2VdfW9uQ29sb3JDaGFuZ2UodCl7dGhpcy5oc3ZhLnM9dC5zL3QucmdYLHRoaXMuaHN2YS52PXQudi90LnJnWSx0aGlzLnVwZGF0ZUNvbG9yUGlja2VyKCksdGhpcy5kaXJlY3RpdmVJbnN0YW5jZS5zbGlkZXJDaGFuZ2VkKHtzbGlkZXI6ImxpZ2h0bmVzcyIsdmFsdWU6dGhpcy5oc3ZhLnYsY29sb3I6dGhpcy5vdXRwdXRDb2xvcn0pLHRoaXMuZGlyZWN0aXZlSW5zdGFuY2Uuc2xpZGVyQ2hhbmdlZCh7c2xpZGVyOiJzYXR1cmF0aW9uIix2YWx1ZTp0aGlzLmhzdmEucyxjb2xvcjp0aGlzLm91dHB1dENvbG9yfSl9b25IdWVDaGFuZ2UodCl7dGhpcy5oc3ZhLmg9dC52L3QucmdYLHRoaXMuc2xpZGVySD10aGlzLmhzdmEuaCx0aGlzLnVwZGF0ZUNvbG9yUGlja2VyKCksdGhpcy5kaXJlY3RpdmVJbnN0YW5jZS5zbGlkZXJDaGFuZ2VkKHtzbGlkZXI6Imh1ZSIsdmFsdWU6dGhpcy5oc3ZhLmgsY29sb3I6dGhpcy5vdXRwdXRDb2xvcn0pfW9uVmFsdWVDaGFuZ2UodCl7dGhpcy5oc3ZhLnY9dC52L3QucmdYLHRoaXMudXBkYXRlQ29sb3JQaWNrZXIoKSx0aGlzLmRpcmVjdGl2ZUluc3RhbmNlLnNsaWRlckNoYW5nZWQoe3NsaWRlcjoidmFsdWUiLHZhbHVlOnRoaXMuaHN2YS52LGNvbG9yOnRoaXMub3V0cHV0Q29sb3J9KX1vbkFscGhhQ2hhbmdlKHQpe3RoaXMuaHN2YS5hPXQudi90LnJnWCx0aGlzLnVwZGF0ZUNvbG9yUGlja2VyKCksdGhpcy5kaXJlY3RpdmVJbnN0YW5jZS5zbGlkZXJDaGFuZ2VkKHtzbGlkZXI6ImFscGhhIix2YWx1ZTp0aGlzLmhzdmEuYSxjb2xvcjp0aGlzLm91dHB1dENvbG9yfSl9b25IZXhJbnB1dCh0KXtpZihudWxsPT09dCl0aGlzLnVwZGF0ZUNvbG9yUGlja2VyKCk7ZWxzZXt0JiYiIyIhPT10WzBdJiYodD0iIyIrdCk7bGV0IG49L14jKFthLWYwLTldezN9fFthLWYwLTldezZ9KSQvZ2k7ImFsd2F5cyI9PT10aGlzLmNwQWxwaGFDaGFubmVsJiYobj0vXiMoW2EtZjAtOV17M318W2EtZjAtOV17Nn18W2EtZjAtOV17OH0pJC9naSk7Y29uc3QgZT1uLnRlc3QodCk7ZSYmKHQubGVuZ3RoPDUmJih0PSIjIit0LnN1YnN0cmluZygxKS5zcGxpdCgiIikubWFwKCh0PT50K3QpKS5qb2luKCIiKSksImZvcmNlZCI9PT10aGlzLmNwQWxwaGFDaGFubmVsJiYodCs9TWF0aC5yb3VuZCgyNTUqdGhpcy5oc3ZhLmEpLnRvU3RyaW5nKDE2KSksdGhpcy5zZXRDb2xvckZyb21TdHJpbmcodCwhMCwhMSkpLHRoaXMuZGlyZWN0aXZlSW5zdGFuY2UuaW5wdXRDaGFuZ2VkKHtpbnB1dDoiaGV4Iix2YWxpZDplLHZhbHVlOnQsY29sb3I6dGhpcy5vdXRwdXRDb2xvcn0pfX1vblJlZElucHV0KHQpe2NvbnN0IG49dGhpcy5zZXJ2aWNlLmhzdmFUb1JnYmEodGhpcy5oc3ZhKSxlPSFpc05hTih0LnYpJiZ0LnY+PTAmJnQudjw9dC5yZztlJiYobi5yPXQudi90LnJnLHRoaXMuaHN2YT10aGlzLnNlcnZpY2UucmdiYVRvSHN2YShuKSx0aGlzLnNsaWRlckg9dGhpcy5oc3ZhLmgsdGhpcy51cGRhdGVDb2xvclBpY2tlcigpKSx0aGlzLmRpcmVjdGl2ZUluc3RhbmNlLmlucHV0Q2hhbmdlZCh7aW5wdXQ6InJlZCIsdmFsaWQ6ZSx2YWx1ZTpuLnIsY29sb3I6dGhpcy5vdXRwdXRDb2xvcn0pfW9uQmx1ZUlucHV0KHQpe2NvbnN0IG49dGhpcy5zZXJ2aWNlLmhzdmFUb1JnYmEodGhpcy5oc3ZhKSxlPSFpc05hTih0LnYpJiZ0LnY+PTAmJnQudjw9dC5yZztlJiYobi5iPXQudi90LnJnLHRoaXMuaHN2YT10aGlzLnNlcnZpY2UucmdiYVRvSHN2YShuKSx0aGlzLnNsaWRlckg9dGhpcy5oc3ZhLmgsdGhpcy51cGRhdGVDb2xvclBpY2tlcigpKSx0aGlzLmRpcmVjdGl2ZUluc3RhbmNlLmlucHV0Q2hhbmdlZCh7aW5wdXQ6ImJsdWUiLHZhbGlkOmUsdmFsdWU6bi5iLGNvbG9yOnRoaXMub3V0cHV0Q29sb3J9KX1vbkdyZWVuSW5wdXQodCl7Y29uc3Qgbj10aGlzLnNlcnZpY2UuaHN2YVRvUmdiYSh0aGlzLmhzdmEpLGU9IWlzTmFOKHQudikmJnQudj49MCYmdC52PD10LnJnO2UmJihuLmc9dC52L3QucmcsdGhpcy5oc3ZhPXRoaXMuc2VydmljZS5yZ2JhVG9Ic3ZhKG4pLHRoaXMuc2xpZGVySD10aGlzLmhzdmEuaCx0aGlzLnVwZGF0ZUNvbG9yUGlja2VyKCkpLHRoaXMuZGlyZWN0aXZlSW5zdGFuY2UuaW5wdXRDaGFuZ2VkKHtpbnB1dDoiZ3JlZW4iLHZhbGlkOmUsdmFsdWU6bi5nLGNvbG9yOnRoaXMub3V0cHV0Q29sb3J9KX1vbkh1ZUlucHV0KHQpe2NvbnN0IG49IWlzTmFOKHQudikmJnQudj49MCYmdC52PD10LnJnO24mJih0aGlzLmhzdmEuaD10LnYvdC5yZyx0aGlzLnNsaWRlckg9dGhpcy5oc3ZhLmgsdGhpcy51cGRhdGVDb2xvclBpY2tlcigpKSx0aGlzLmRpcmVjdGl2ZUluc3RhbmNlLmlucHV0Q2hhbmdlZCh7aW5wdXQ6Imh1ZSIsdmFsaWQ6bix2YWx1ZTp0aGlzLmhzdmEuaCxjb2xvcjp0aGlzLm91dHB1dENvbG9yfSl9b25WYWx1ZUlucHV0KHQpe2NvbnN0IG49IWlzTmFOKHQudikmJnQudj49MCYmdC52PD10LnJnO24mJih0aGlzLmhzdmEudj10LnYvdC5yZyx0aGlzLnVwZGF0ZUNvbG9yUGlja2VyKCkpLHRoaXMuZGlyZWN0aXZlSW5zdGFuY2UuaW5wdXRDaGFuZ2VkKHtpbnB1dDoidmFsdWUiLHZhbGlkOm4sdmFsdWU6dGhpcy5oc3ZhLnYsY29sb3I6dGhpcy5vdXRwdXRDb2xvcn0pfW9uQWxwaGFJbnB1dCh0KXtjb25zdCBuPSFpc05hTih0LnYpJiZ0LnY+PTAmJnQudjw9dC5yZztuJiYodGhpcy5oc3ZhLmE9dC52L3QucmcsdGhpcy51cGRhdGVDb2xvclBpY2tlcigpKSx0aGlzLmRpcmVjdGl2ZUluc3RhbmNlLmlucHV0Q2hhbmdlZCh7aW5wdXQ6ImFscGhhIix2YWxpZDpuLHZhbHVlOnRoaXMuaHN2YS5hLGNvbG9yOnRoaXMub3V0cHV0Q29sb3J9KX1vbkxpZ2h0bmVzc0lucHV0KHQpe2NvbnN0IG49dGhpcy5zZXJ2aWNlLmhzdmEyaHNsYSh0aGlzLmhzdmEpLGU9IWlzTmFOKHQudikmJnQudj49MCYmdC52PD10LnJnO2UmJihuLmw9dC52L3QucmcsdGhpcy5oc3ZhPXRoaXMuc2VydmljZS5oc2xhMmhzdmEobiksdGhpcy5zbGlkZXJIPXRoaXMuaHN2YS5oLHRoaXMudXBkYXRlQ29sb3JQaWNrZXIoKSksdGhpcy5kaXJlY3RpdmVJbnN0YW5jZS5pbnB1dENoYW5nZWQoe2lucHV0OiJsaWdodG5lc3MiLHZhbGlkOmUsdmFsdWU6bi5sLGNvbG9yOnRoaXMub3V0cHV0Q29sb3J9KX1vblNhdHVyYXRpb25JbnB1dCh0KXtjb25zdCBuPXRoaXMuc2VydmljZS5oc3ZhMmhzbGEodGhpcy5oc3ZhKSxlPSFpc05hTih0LnYpJiZ0LnY+PTAmJnQudjw9dC5yZztlJiYobi5zPXQudi90LnJnLHRoaXMuaHN2YT10aGlzLnNlcnZpY2UuaHNsYTJoc3ZhKG4pLHRoaXMuc2xpZGVySD10aGlzLmhzdmEuaCx0aGlzLnVwZGF0ZUNvbG9yUGlja2VyKCkpLHRoaXMuZGlyZWN0aXZlSW5zdGFuY2UuaW5wdXRDaGFuZ2VkKHtpbnB1dDoic2F0dXJhdGlvbiIsdmFsaWQ6ZSx2YWx1ZTpuLnMsY29sb3I6dGhpcy5vdXRwdXRDb2xvcn0pfW9uQ3lhbklucHV0KHQpeyFpc05hTih0LnYpJiZ0LnY+PTAmJnQudjw9dC5yZyYmKHRoaXMuY215ay5jPXQudix0aGlzLnVwZGF0ZUNvbG9yUGlja2VyKCExLCEwLCEwKSksdGhpcy5kaXJlY3RpdmVJbnN0YW5jZS5pbnB1dENoYW5nZWQoe2lucHV0OiJjeWFuIix2YWxpZDohMCx2YWx1ZTp0aGlzLmNteWsuYyxjb2xvcjp0aGlzLm91dHB1dENvbG9yfSl9b25NYWdlbnRhSW5wdXQodCl7IWlzTmFOKHQudikmJnQudj49MCYmdC52PD10LnJnJiYodGhpcy5jbXlrLm09dC52LHRoaXMudXBkYXRlQ29sb3JQaWNrZXIoITEsITAsITApKSx0aGlzLmRpcmVjdGl2ZUluc3RhbmNlLmlucHV0Q2hhbmdlZCh7aW5wdXQ6Im1hZ2VudGEiLHZhbGlkOiEwLHZhbHVlOnRoaXMuY215ay5tLGNvbG9yOnRoaXMub3V0cHV0Q29sb3J9KX1vblllbGxvd0lucHV0KHQpeyFpc05hTih0LnYpJiZ0LnY+PTAmJnQudjw9dC5yZyYmKHRoaXMuY215ay55PXQudix0aGlzLnVwZGF0ZUNvbG9yUGlja2VyKCExLCEwLCEwKSksdGhpcy5kaXJlY3RpdmVJbnN0YW5jZS5pbnB1dENoYW5nZWQoe2lucHV0OiJ5ZWxsb3ciLHZhbGlkOiEwLHZhbHVlOnRoaXMuY215ay55LGNvbG9yOnRoaXMub3V0cHV0Q29sb3J9KX1vbkJsYWNrSW5wdXQodCl7IWlzTmFOKHQudikmJnQudj49MCYmdC52PD10LnJnJiYodGhpcy5jbXlrLms9dC52LHRoaXMudXBkYXRlQ29sb3JQaWNrZXIoITEsITAsITApKSx0aGlzLmRpcmVjdGl2ZUluc3RhbmNlLmlucHV0Q2hhbmdlZCh7aW5wdXQ6ImJsYWNrIix2YWxpZDohMCx2YWx1ZTp0aGlzLmNteWsuayxjb2xvcjp0aGlzLm91dHB1dENvbG9yfSl9b25BZGRQcmVzZXRDb2xvcih0LG4pe3Quc3RvcFByb3BhZ2F0aW9uKCksdGhpcy5jcFByZXNldENvbG9ycy5maWx0ZXIoKHQ9PnQ9PT1uKSkubGVuZ3RofHwodGhpcy5jcFByZXNldENvbG9ycz10aGlzLmNwUHJlc2V0Q29sb3JzLmNvbmNhdChuKSx0aGlzLmRpcmVjdGl2ZUluc3RhbmNlLnByZXNldENvbG9yc0NoYW5nZWQodGhpcy5jcFByZXNldENvbG9ycykpfW9uUmVtb3ZlUHJlc2V0Q29sb3IodCxuKXt0LnN0b3BQcm9wYWdhdGlvbigpLHRoaXMuY3BQcmVzZXRDb2xvcnM9dGhpcy5jcFByZXNldENvbG9ycy5maWx0ZXIoKHQ9PnQhPT1uKSksdGhpcy5kaXJlY3RpdmVJbnN0YW5jZS5wcmVzZXRDb2xvcnNDaGFuZ2VkKHRoaXMuY3BQcmVzZXRDb2xvcnMpfW9wZW5Db2xvclBpY2tlcigpe3RoaXMuc2hvd3x8KHRoaXMuc2hvdz0hMCx0aGlzLmhpZGRlbj0hMCxzZXRUaW1lb3V0KCgoKT0+e3RoaXMuaGlkZGVuPSExLHRoaXMuc2V0RGlhbG9nUG9zaXRpb24oKSx0aGlzLmNkUmVmLmRldGVjdENoYW5nZXMoKX0pLDApLHRoaXMuZGlyZWN0aXZlSW5zdGFuY2Uuc3RhdGVDaGFuZ2VkKCEwKSx0aGlzLmlzSUUxMHx8KGRvY3VtZW50LmFkZEV2ZW50TGlzdGVuZXIoIm1vdXNlZG93biIsdGhpcy5saXN0ZW5lck1vdXNlRG93biksZG9jdW1lbnQuYWRkRXZlbnRMaXN0ZW5lcigidG91Y2hzdGFydCIsdGhpcy5saXN0ZW5lck1vdXNlRG93bikpLHdpbmRvdy5hZGRFdmVudExpc3RlbmVyKCJyZXNpemUiLHRoaXMubGlzdGVuZXJSZXNpemUpKX1jbG9zZUNvbG9yUGlja2VyKCl7dGhpcy5zaG93JiYodGhpcy5zaG93PSExLHRoaXMuZGlyZWN0aXZlSW5zdGFuY2Uuc3RhdGVDaGFuZ2VkKCExKSx0aGlzLmlzSUUxMHx8KGRvY3VtZW50LnJlbW92ZUV2ZW50TGlzdGVuZXIoIm1vdXNlZG93biIsdGhpcy5saXN0ZW5lck1vdXNlRG93biksZG9jdW1lbnQucmVtb3ZlRXZlbnRMaXN0ZW5lcigidG91Y2hzdGFydCIsdGhpcy5saXN0ZW5lck1vdXNlRG93bikpLHdpbmRvdy5yZW1vdmVFdmVudExpc3RlbmVyKCJyZXNpemUiLHRoaXMubGlzdGVuZXJSZXNpemUpLHRoaXMuY2RSZWYuZGVzdHJveWVkfHx0aGlzLmNkUmVmLmRldGVjdENoYW5nZXMoKSl9dXBkYXRlQ29sb3JQaWNrZXIodD0hMCxuPSEwLGU9ITEpe2lmKHRoaXMuc2xpZGVyRGltTWF4KXtsZXQgYSxvLHI7Mj09PXRoaXMuY3BDb2xvck1vZGUmJih0aGlzLmhzdmEucz0wKTtjb25zdCBpPXRoaXMub3V0cHV0Q29sb3I7aWYobz10aGlzLnNlcnZpY2UuaHN2YTJoc2xhKHRoaXMuaHN2YSksdGhpcy5jcENteWtFbmFibGVkPyhlPyhyPXRoaXMuc2VydmljZS5jbXlrVG9SZ2IodGhpcy5zZXJ2aWNlLm5vcm1hbGl6ZUNNWUsodGhpcy5jbXlrKSksdGhpcy5oc3ZhPXRoaXMuc2VydmljZS5yZ2JhVG9Ic3ZhKHIpKToocj10aGlzLnNlcnZpY2UuaHN2YVRvUmdiYSh0aGlzLmhzdmEpLHRoaXMuY215az10aGlzLnNlcnZpY2UuZGVub3JtYWxpemVDTVlLKHRoaXMuc2VydmljZS5yZ2JhVG9DbXlrKHIpKSkscj10aGlzLnNlcnZpY2UuZGVub3JtYWxpemVSR0JBKHIpLHRoaXMuc2xpZGVySD10aGlzLmhzdmEuaCk6cj10aGlzLnNlcnZpY2UuZGVub3JtYWxpemVSR0JBKHRoaXMuc2VydmljZS5oc3ZhVG9SZ2JhKHRoaXMuaHN2YSkpLGE9dGhpcy5zZXJ2aWNlLmRlbm9ybWFsaXplUkdCQSh0aGlzLnNlcnZpY2UuaHN2YVRvUmdiYShuZXcgUkoodGhpcy5zbGlkZXJIfHx0aGlzLmhzdmEuaCwxLDEsMSkpKSxuJiYodGhpcy5oc2xhVGV4dD1uZXcgVEooTWF0aC5yb3VuZCgzNjAqby5oKSxNYXRoLnJvdW5kKDEwMCpvLnMpLE1hdGgucm91bmQoMTAwKm8ubCksTWF0aC5yb3VuZCgxMDAqby5hKS8xMDApLHRoaXMucmdiYVRleHQ9bmV3IHpKKHIucixyLmcsci5iLE1hdGgucm91bmQoMTAwKnIuYSkvMTAwKSx0aGlzLmNwQ215a0VuYWJsZWQmJih0aGlzLmNteWtUZXh0PW5ldyBESih0aGlzLmNteWsuYyx0aGlzLmNteWsubSx0aGlzLmNteWsueSx0aGlzLmNteWsuayxNYXRoLnJvdW5kKDEwMCp0aGlzLmNteWsuYSkvMTAwKSksdGhpcy5oZXhUZXh0PXRoaXMuc2VydmljZS5yZ2JhVG9IZXgociwiYWx3YXlzIj09PXRoaXMuY3BBbHBoYUNoYW5uZWwpLHRoaXMuaGV4QWxwaGE9dGhpcy5yZ2JhVGV4dC5hKSwiYXV0byI9PT10aGlzLmNwT3V0cHV0Rm9ybWF0JiZ0aGlzLmZvcm1hdCE9PUFKLlJHQkEmJnRoaXMuZm9ybWF0IT09QUouQ01ZSyYmdGhpcy5oc3ZhLmE8MSYmKHRoaXMuZm9ybWF0PXRoaXMuaHN2YS5hPDE/QUouUkdCQTpBSi5IRVgpLHRoaXMuaHVlU2xpZGVyQ29sb3I9InJnYigiK2EucisiLCIrYS5nKyIsIithLmIrIikiLHRoaXMuYWxwaGFTbGlkZXJDb2xvcj0icmdiKCIrci5yKyIsIityLmcrIiwiK3IuYisiKSIsdGhpcy5vdXRwdXRDb2xvcj10aGlzLnNlcnZpY2Uub3V0cHV0Rm9ybWF0KHRoaXMuaHN2YSx0aGlzLmNwT3V0cHV0Rm9ybWF0LHRoaXMuY3BBbHBoYUNoYW5uZWwpLHRoaXMuc2VsZWN0ZWRDb2xvcj10aGlzLnNlcnZpY2Uub3V0cHV0Rm9ybWF0KHRoaXMuaHN2YSwicmdiYSIsbnVsbCksdGhpcy5mb3JtYXQhPT1BSi5DTVlLKXRoaXMuY215a0NvbG9yPSIiO2Vsc2UgaWYoImFsd2F5cyI9PT10aGlzLmNwQWxwaGFDaGFubmVsfHwiZW5hYmxlZCI9PT10aGlzLmNwQWxwaGFDaGFubmVsfHwiZm9yY2VkIj09PXRoaXMuY3BBbHBoYUNoYW5uZWwpe2NvbnN0IHQ9TWF0aC5yb3VuZCgxMDAqdGhpcy5jbXlrLmEpLzEwMDt0aGlzLmNteWtDb2xvcj1gY215a2EoJHt0aGlzLmNteWsuY30sJHt0aGlzLmNteWsubX0sJHt0aGlzLmNteWsueX0sJHt0aGlzLmNteWsua30sJHt0fSlgfWVsc2UgdGhpcy5jbXlrQ29sb3I9YGNteWsoJHt0aGlzLmNteWsuY30sJHt0aGlzLmNteWsubX0sJHt0aGlzLmNteWsueX0sJHt0aGlzLmNteWsua30pYDt0aGlzLnNsaWRlcj1uZXcgRkooKHRoaXMuc2xpZGVySHx8dGhpcy5oc3ZhLmgpKnRoaXMuc2xpZGVyRGltTWF4LmgtOCx0aGlzLmhzdmEucyp0aGlzLnNsaWRlckRpbU1heC5zLTgsKDEtdGhpcy5oc3ZhLnYpKnRoaXMuc2xpZGVyRGltTWF4LnYtOCx0aGlzLmhzdmEuYSp0aGlzLnNsaWRlckRpbU1heC5hLTgpLHQmJmkhPT10aGlzLm91dHB1dENvbG9yJiYodGhpcy5jcENteWtFbmFibGVkJiZ0aGlzLmRpcmVjdGl2ZUluc3RhbmNlLmNteWtDaGFuZ2VkKHRoaXMuY215a0NvbG9yKSx0aGlzLmRpcmVjdGl2ZUluc3RhbmNlLmNvbG9yQ2hhbmdlZCh0aGlzLm91dHB1dENvbG9yKSl9fXNldERpYWxvZ1Bvc2l0aW9uKCl7aWYoImlubGluZSI9PT10aGlzLmNwRGlhbG9nRGlzcGxheSl0aGlzLnBvc2l0aW9uPSJyZWxhdGl2ZSI7ZWxzZXtsZXQgdCxuPSJzdGF0aWMiLGU9IiIsYT1udWxsLG89bnVsbCxyPXRoaXMuZGlyZWN0aXZlRWxlbWVudFJlZi5uYXRpdmVFbGVtZW50LnBhcmVudE5vZGU7Y29uc3QgaT10aGlzLmRpYWxvZ0VsZW1lbnQubmF0aXZlRWxlbWVudC5vZmZzZXRIZWlnaHQ7Zm9yKDtudWxsIT09ciYmIkhUTUwiIT09ci50YWdOYW1lOyl7aWYodD13aW5kb3cuZ2V0Q29tcHV0ZWRTdHlsZShyKSxuPXQuZ2V0UHJvcGVydHlWYWx1ZSgicG9zaXRpb24iKSxlPXQuZ2V0UHJvcGVydHlWYWx1ZSgidHJhbnNmb3JtIiksInN0YXRpYyIhPT1uJiZudWxsPT09YSYmKGE9ciksZSYmIm5vbmUiIT09ZSYmbnVsbD09PW8mJihvPXIpLCJmaXhlZCI9PT1uKXthPW87YnJlYWt9cj1yLnBhcmVudE5vZGV9Y29uc3QgYz10aGlzLmNyZWF0ZURpYWxvZ0JveCh0aGlzLmRpcmVjdGl2ZUVsZW1lbnRSZWYubmF0aXZlRWxlbWVudCwiZml4ZWQiIT09bik7aWYodGhpcy51c2VSb290Vmlld0NvbnRhaW5lcnx8ImZpeGVkIj09PW4mJighYXx8YSBpbnN0YW5jZW9mIEhUTUxVbmtub3duRWxlbWVudCkpdGhpcy50b3A9Yy50b3AsdGhpcy5sZWZ0PWMubGVmdDtlbHNle251bGw9PT1hJiYoYT1yKTtjb25zdCB0PXRoaXMuY3JlYXRlRGlhbG9nQm94KGEsImZpeGVkIiE9PW4pO3RoaXMudG9wPWMudG9wLXQudG9wLHRoaXMubGVmdD1jLmxlZnQtdC5sZWZ0fSJmaXhlZCI9PT1uJiYodGhpcy5wb3NpdGlvbj0iZml4ZWQiKTtsZXQgcz10aGlzLmNwUG9zaXRpb247ImF1dG8iPT09dGhpcy5jcFBvc2l0aW9uJiYocz0oZnVuY3Rpb24gdChuKXtsZXQgZT0icmlnaHQiLGE9ImJvdHRvbSI7Y29uc3R7aGVpZ2h0Om8sd2lkdGg6cix0b3A6aSxib3R0b206YyxsZWZ0OnMscmlnaHQ6bH09bixtPWktbzwwLGQ9YytvPih3aW5kb3cuaW5uZXJIZWlnaHR8fGRvY3VtZW50LmRvY3VtZW50RWxlbWVudC5jbGllbnRIZWlnaHQpLGc9cy1yPDAscD1sK3I+KHdpbmRvdy5pbm5lcldpZHRofHxkb2N1bWVudC5kb2N1bWVudEVsZW1lbnQuY2xpZW50V2lkdGgpO3JldHVybiBkJiYoYT0idG9wIiksbSYmKGE9ImJvdHRvbSIpLGcmJihlPSJyaWdodCIpLHAmJihlPSJsZWZ0IiksbSYmZCYmZyYmcD9bImxlZnQiLCJyaWdodCIsInRvcCIsImJvdHRvbSJdLnJlZHVjZSgoKHQsZSk9Pm5bdF0+bltlXT90OmUpKTpnJiZwP20/ImJvdHRvbSI6ZHx8aT5jPyJ0b3AiOiJib3R0b20iOm0mJmQ/Zz8icmlnaHQiOnB8fHM+bD8ibGVmdCI6InJpZ2h0IjpgJHthfS0ke2V9YH0pKHRoaXMuZGlhbG9nRWxlbWVudC5uYXRpdmVFbGVtZW50LmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpKSksInRvcCI9PT1zPyh0aGlzLmFycm93VG9wPWktMSx0aGlzLnRvcC09aSt0aGlzLmRpYWxvZ0Fycm93U2l6ZSx0aGlzLmxlZnQrPXRoaXMuY3BQb3NpdGlvbk9mZnNldC8xMDAqYy53aWR0aC10aGlzLmRpYWxvZ0Fycm93T2Zmc2V0KToiYm90dG9tIj09PXM/KHRoaXMudG9wKz1jLmhlaWdodCt0aGlzLmRpYWxvZ0Fycm93U2l6ZSx0aGlzLmxlZnQrPXRoaXMuY3BQb3NpdGlvbk9mZnNldC8xMDAqYy53aWR0aC10aGlzLmRpYWxvZ0Fycm93T2Zmc2V0KToidG9wLWxlZnQiPT09c3x8ImxlZnQtdG9wIj09PXM/KHRoaXMudG9wLT1pLWMuaGVpZ2h0K2MuaGVpZ2h0KnRoaXMuY3BQb3NpdGlvbk9mZnNldC8xMDAsdGhpcy5sZWZ0LT10aGlzLmNwV2lkdGgrdGhpcy5kaWFsb2dBcnJvd1NpemUtMi10aGlzLmRpYWxvZ0Fycm93T2Zmc2V0KToidG9wLXJpZ2h0Ij09PXN8fCJyaWdodC10b3AiPT09cz8odGhpcy50b3AtPWktYy5oZWlnaHQrYy5oZWlnaHQqdGhpcy5jcFBvc2l0aW9uT2Zmc2V0LzEwMCx0aGlzLmxlZnQrPWMud2lkdGgrdGhpcy5kaWFsb2dBcnJvd1NpemUtMi10aGlzLmRpYWxvZ0Fycm93T2Zmc2V0KToibGVmdCI9PT1zfHwiYm90dG9tLWxlZnQiPT09c3x8ImxlZnQtYm90dG9tIj09PXM/KHRoaXMudG9wKz1jLmhlaWdodCp0aGlzLmNwUG9zaXRpb25PZmZzZXQvMTAwLXRoaXMuZGlhbG9nQXJyb3dPZmZzZXQsdGhpcy5sZWZ0LT10aGlzLmNwV2lkdGgrdGhpcy5kaWFsb2dBcnJvd1NpemUtMik6KHRoaXMudG9wKz1jLmhlaWdodCp0aGlzLmNwUG9zaXRpb25PZmZzZXQvMTAwLXRoaXMuZGlhbG9nQXJyb3dPZmZzZXQsdGhpcy5sZWZ0Kz1jLndpZHRoK3RoaXMuZGlhbG9nQXJyb3dTaXplLTIpfX1pc0Rlc2NlbmRhbnQodCxuKXtsZXQgZT1uLnBhcmVudE5vZGU7Zm9yKDtudWxsIT09ZTspe2lmKGU9PT10KXJldHVybiEwO2U9ZS5wYXJlbnROb2RlfXJldHVybiExfWNyZWF0ZURpYWxvZ0JveCh0LG4pe3JldHVybnt0b3A6dC5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKS50b3ArKG4/d2luZG93LnBhZ2VZT2Zmc2V0OjApLGxlZnQ6dC5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKS5sZWZ0KyhuP3dpbmRvdy5wYWdlWE9mZnNldDowKSx3aWR0aDp0Lm9mZnNldFdpZHRoLGhlaWdodDp0Lm9mZnNldEhlaWdodH19fUJKLsm1ZmFjPWZ1bmN0aW9uIHQobil7cmV0dXJuIG5ldyhufHxCSikoWmcoeHUpLFpnKFZtKSxaZyhISikpfSxCSi7JtWNtcD1fbyh7dHlwZTpCSixzZWxlY3RvcnM6W1siY29sb3ItcGlja2VyIl1dLHZpZXdRdWVyeTpmdW5jdGlvbiB0KG4sZSl7dmFyIGE7MSZuJiYoamYodEosITApLGpmKG5KLCEwKSxqZihlSiwhMCkpLDImbiYmKFZmKGE9WmYoKSkmJihlLmRpYWxvZ0VsZW1lbnQ9YS5maXJzdCksVmYoYT1aZigpKSYmKGUuaHVlU2xpZGVyPWEuZmlyc3QpLFZmKGE9WmYoKSkmJihlLmFscGhhU2xpZGVyPWEuZmlyc3QpKX0saG9zdEJpbmRpbmdzOmZ1bmN0aW9uIHQobixlKXsxJm4mJmNwKCJrZXl1cC5lc2MiLChmdW5jdGlvbiB0KG4pe3JldHVybiBlLmhhbmRsZUVzYyhuKX0pLCExLGFyKSgia2V5dXAuZW50ZXIiLChmdW5jdGlvbiB0KG4pe3JldHVybiBlLmhhbmRsZUVudGVyKG4pfSksITEsYXIpfSxkZWNsczoyOCx2YXJzOjQ3LGNvbnN0czpbWzEsImNvbG9yLXBpY2tlciIsMywiY2xpY2siXSxbImRpYWxvZ1BvcHVwIiwiIl0sWzMsImNsYXNzIiwidG9wIiw0LCJuZ0lmIl0sWyJjbGFzcyIsInNhdHVyYXRpb24tbGlnaHRuZXNzIiwzLCJzbGlkZXIiLCJyZ1giLCJyZ1kiLCJiYWNrZ3JvdW5kLWNvbG9yIiwibmV3VmFsdWUiLCJkcmFnU3RhcnQiLCJkcmFnRW5kIiw0LCJuZ0lmIl0sWzEsImh1ZS1hbHBoYSIsImJveCJdLFsxLCJsZWZ0Il0sWzEsInNlbGVjdGVkLWNvbG9yLWJhY2tncm91bmQiXSxbMSwic2VsZWN0ZWQtY29sb3IiXSxbInR5cGUiLCJidXR0b24iLDMsImNsYXNzIiwiZGlzYWJsZWQiLCJjbGljayIsNCwibmdJZiJdLFsxLCJyaWdodCJdLFsic3R5bGUiLCJoZWlnaHQ6IDE2cHg7Iiw0LCJuZ0lmIl0sWzEsImh1ZSIsMywic2xpZGVyIiwicmdYIiwibmV3VmFsdWUiLCJkcmFnU3RhcnQiLCJkcmFnRW5kIl0sWyJodWVTbGlkZXIiLCIiXSxbMSwiY3Vyc29yIl0sWzEsInZhbHVlIiwzLCJzbGlkZXIiLCJyZ1giLCJuZXdWYWx1ZSIsImRyYWdTdGFydCIsImRyYWdFbmQiXSxbInZhbHVlU2xpZGVyIiwiIl0sWzEsImFscGhhIiwzLCJzbGlkZXIiLCJyZ1giLCJuZXdWYWx1ZSIsImRyYWdTdGFydCIsImRyYWdFbmQiXSxbImFscGhhU2xpZGVyIiwiIl0sWyJjbGFzcyIsImNteWstdGV4dCIsMywiZGlzcGxheSIsNCwibmdJZiJdLFsiY2xhc3MiLCJoc2xhLXRleHQiLDMsImRpc3BsYXkiLDQsIm5nSWYiXSxbImNsYXNzIiwicmdiYS10ZXh0IiwzLCJkaXNwbGF5Iiw0LCJuZ0lmIl0sWyJjbGFzcyIsImhleC10ZXh0IiwzLCJoZXgtYWxwaGEiLCJkaXNwbGF5Iiw0LCJuZ0lmIl0sWyJjbGFzcyIsInZhbHVlLXRleHQiLDQsIm5nSWYiXSxbImNsYXNzIiwidHlwZS1wb2xpY3kiLDQsIm5nSWYiXSxbImNsYXNzIiwicHJlc2V0LWFyZWEiLDQsIm5nSWYiXSxbImNsYXNzIiwiYnV0dG9uLWFyZWEiLDQsIm5nSWYiXSxbMSwic2F0dXJhdGlvbi1saWdodG5lc3MiLDMsInNsaWRlciIsInJnWCIsInJnWSIsIm5ld1ZhbHVlIiwiZHJhZ1N0YXJ0IiwiZHJhZ0VuZCJdLFsidHlwZSIsImJ1dHRvbiIsMywiZGlzYWJsZWQiLCJjbGljayJdLFsyLCJoZWlnaHQiLCIxNnB4Il0sWzEsImNteWstdGV4dCJdLFsxLCJib3giXSxbInR5cGUiLCJudW1iZXIiLCJwYXR0ZXJuIiwiWzAtOV0qIiwibWluIiwiMCIsIm1heCIsIjEwMCIsMywidGV4dCIsInJnIiwidmFsdWUiLCJrZXl1cC5lbnRlciIsIm5ld1ZhbHVlIl0sWyJ0eXBlIiwibnVtYmVyIiwicGF0dGVybiIsIlswLTldKyhbXFwuLF1bMC05XXsxLDJ9KT8iLCJtaW4iLCIwIiwibWF4IiwiMSIsInN0ZXAiLCIwLjEiLDMsInRleHQiLCJyZyIsInZhbHVlIiwia2V5dXAuZW50ZXIiLCJuZXdWYWx1ZSIsNCwibmdJZiJdLFs0LCJuZ0lmIl0sWyJ0eXBlIiwibnVtYmVyIiwicGF0dGVybiIsIlswLTldKyhbXFwuLF1bMC05XXsxLDJ9KT8iLCJtaW4iLCIwIiwibWF4IiwiMSIsInN0ZXAiLCIwLjEiLDMsInRleHQiLCJyZyIsInZhbHVlIiwia2V5dXAuZW50ZXIiLCJuZXdWYWx1ZSJdLFsxLCJoc2xhLXRleHQiXSxbInR5cGUiLCJudW1iZXIiLCJwYXR0ZXJuIiwiWzAtOV0qIiwibWluIiwiMCIsIm1heCIsIjM2MCIsMywidGV4dCIsInJnIiwidmFsdWUiLCJrZXl1cC5lbnRlciIsIm5ld1ZhbHVlIl0sWzEsInJnYmEtdGV4dCJdLFsidHlwZSIsIm51bWJlciIsInBhdHRlcm4iLCJbMC05XSoiLCJtaW4iLCIwIiwibWF4IiwiMjU1IiwzLCJ0ZXh0IiwicmciLCJ2YWx1ZSIsImtleXVwLmVudGVyIiwibmV3VmFsdWUiXSxbMSwiaGV4LXRleHQiXSxbMywidGV4dCIsInZhbHVlIiwiYmx1ciIsImtleXVwLmVudGVyIiwibmV3VmFsdWUiXSxbMSwidmFsdWUtdGV4dCJdLFsxLCJ0eXBlLXBvbGljeSJdLFsxLCJ0eXBlLXBvbGljeS1hcnJvdyIsMywiY2xpY2siXSxbMSwicHJlc2V0LWFyZWEiXSxbMSwicHJlc2V0LWxhYmVsIl0sWzMsImNsYXNzIiw0LCJuZ0lmIl0sWyJjbGFzcyIsInByZXNldC1jb2xvciIsMywiYmFja2dyb3VuZENvbG9yIiwiY2xpY2siLDQsIm5nRm9yIiwibmdGb3JPZiJdLFsxLCJwcmVzZXQtY29sb3IiLDMsImNsaWNrIl0sWzMsImNsYXNzIiwiY2xpY2siLDQsIm5nSWYiXSxbMywiY2xpY2siXSxbMSwiYnV0dG9uLWFyZWEiXSxbInR5cGUiLCJidXR0b24iLDMsImNsYXNzIiwiY2xpY2siLDQsIm5nSWYiXSxbInR5cGUiLCJidXR0b24iLDMsImNsaWNrIl1dLHRlbXBsYXRlOmZ1bmN0aW9uIHQobixlKXsxJm4mJihLZygwLCJkaXYiLDAsMSksY3AoImNsaWNrIiwoZnVuY3Rpb24gdChuKXtyZXR1cm4gbi5zdG9wUHJvcGFnYXRpb24oKX0pKSxZZygyLGFKLDEsNSwiZGl2IiwyKSxZZygzLG9KLDIsOCwiZGl2IiwzKSxLZyg0LCJkaXYiLDQpLEtnKDUsImRpdiIsNSksdHAoNiwiZGl2Iiw2KSx0cCg3LCJkaXYiLDcpLFlnKDgsckosMiw1LCJidXR0b24iLDgpLCRnKCksS2coOSwiZGl2Iiw5KSxZZygxMCxpSiwxLDAsImRpdiIsMTApLEtnKDExLCJkaXYiLDExLDEyKSxjcCgibmV3VmFsdWUiLChmdW5jdGlvbiB0KG4pe3JldHVybiBlLm9uSHVlQ2hhbmdlKG4pfSkpKCJkcmFnU3RhcnQiLChmdW5jdGlvbiB0KCl7cmV0dXJuIGUub25EcmFnU3RhcnQoImh1ZSIpfSkpKCJkcmFnRW5kIiwoZnVuY3Rpb24gdCgpe3JldHVybiBlLm9uRHJhZ0VuZCgiaHVlIil9KSksdHAoMTMsImRpdiIsMTMpLCRnKCksS2coMTQsImRpdiIsMTQsMTUpLGNwKCJuZXdWYWx1ZSIsKGZ1bmN0aW9uIHQobil7cmV0dXJuIGUub25WYWx1ZUNoYW5nZShuKX0pKSgiZHJhZ1N0YXJ0IiwoZnVuY3Rpb24gdCgpe3JldHVybiBlLm9uRHJhZ1N0YXJ0KCJ2YWx1ZSIpfSkpKCJkcmFnRW5kIiwoZnVuY3Rpb24gdCgpe3JldHVybiBlLm9uRHJhZ0VuZCgidmFsdWUiKX0pKSx0cCgxNiwiZGl2IiwxMyksJGcoKSxLZygxNywiZGl2IiwxNiwxNyksY3AoIm5ld1ZhbHVlIiwoZnVuY3Rpb24gdChuKXtyZXR1cm4gZS5vbkFscGhhQ2hhbmdlKG4pfSkpKCJkcmFnU3RhcnQiLChmdW5jdGlvbiB0KCl7cmV0dXJuIGUub25EcmFnU3RhcnQoImFscGhhIil9KSkoImRyYWdFbmQiLChmdW5jdGlvbiB0KCl7cmV0dXJuIGUub25EcmFnRW5kKCJhbHBoYSIpfSkpLHRwKDE5LCJkaXYiLDEzKSwkZygpLCRnKCksJGcoKSxZZygyMCxsSiwxNywxMiwiZGl2IiwxOCksWWcoMjEsZ0osMTQsMTAsImRpdiIsMTkpLFlnKDIyLHVKLDE0LDEwLCJkaXYiLDIwKSxZZygyMyxfSiw4LDcsImRpdiIsMjEpLFlnKDI0LE1KLDksMywiZGl2IiwyMiksWWcoMjUsT0osMywwLCJkaXYiLDIzKSxZZygyNix2Siw2LDMsImRpdiIsMjQpLFlnKDI3LEVKLDMsMiwiZGl2IiwyNSksJGcoKSksMiZuJiYoVHAoImRpc3BsYXkiLGUuc2hvdz8iYmxvY2siOiJub25lIikoInZpc2liaWxpdHkiLGUuaGlkZGVuPyJoaWRkZW4iOiJ2aXNpYmxlIikoInRvcCIsZS50b3AsInB4IikoImxlZnQiLGUubGVmdCwicHgiKSgicG9zaXRpb24iLGUucG9zaXRpb24pKCJoZWlnaHQiLGUuY3BIZWlnaHQsInB4IikoIndpZHRoIixlLmNwV2lkdGgsInB4IiksRHAoIm9wZW4iLGUuc2hvdyksd3MoMiksSmcoIm5nSWYiLCJwb3B1cCI9PWUuY3BEaWFsb2dEaXNwbGF5KSx3cygxKSxKZygibmdJZiIsMT09PShlLmNwQ29sb3JNb2RlfHwxKSksd3MoNCksVHAoImJhY2tncm91bmQtY29sb3IiLGUuc2VsZWN0ZWRDb2xvciksd3MoMSksSmcoIm5nSWYiLGUuY3BBZGRDb2xvckJ1dHRvbiksd3MoMiksSmcoIm5nSWYiLCJkaXNhYmxlZCI9PT1lLmNwQWxwaGFDaGFubmVsKSx3cygxKSxUcCgiZGlzcGxheSIsMT09PShlLmNwQ29sb3JNb2RlfHwxKT8iYmxvY2siOiJub25lIiksSmcoInJnWCIsMSksd3MoMiksVHAoImxlZnQiLG51bGw9PWUuc2xpZGVyP251bGw6ZS5zbGlkZXIuaCwicHgiKSx3cygxKSxUcCgiZGlzcGxheSIsMj09PShlLmNwQ29sb3JNb2RlfHwxKT8iYmxvY2siOiJub25lIiksSmcoInJnWCIsMSksd3MoMiksVHAoInJpZ2h0IixudWxsPT1lLnNsaWRlcj9udWxsOmUuc2xpZGVyLnYsInB4Iiksd3MoMSksVHAoImRpc3BsYXkiLCJkaXNhYmxlZCI9PT1lLmNwQWxwaGFDaGFubmVsPyJub25lIjoiYmxvY2siKSgiYmFja2dyb3VuZC1jb2xvciIsZS5hbHBoYVNsaWRlckNvbG9yKSxKZygicmdYIiwxKSx3cygyKSxUcCgibGVmdCIsbnVsbD09ZS5zbGlkZXI/bnVsbDplLnNsaWRlci5hLCJweCIpLHdzKDEpLEpnKCJuZ0lmIiwhZS5jcERpc2FibGVJbnB1dCYmMT09PShlLmNwQ29sb3JNb2RlfHwxKSksd3MoMSksSmcoIm5nSWYiLCFlLmNwRGlzYWJsZUlucHV0JiYxPT09KGUuY3BDb2xvck1vZGV8fDEpKSx3cygxKSxKZygibmdJZiIsIWUuY3BEaXNhYmxlSW5wdXQmJjE9PT0oZS5jcENvbG9yTW9kZXx8MSkpLHdzKDEpLEpnKCJuZ0lmIiwhZS5jcERpc2FibGVJbnB1dCYmMT09PShlLmNwQ29sb3JNb2RlfHwxKSksd3MoMSksSmcoIm5nSWYiLCFlLmNwRGlzYWJsZUlucHV0JiYyPT09KGUuY3BDb2xvck1vZGV8fDEpKSx3cygxKSxKZygibmdJZiIsIWUuY3BEaXNhYmxlSW5wdXQmJjE9PT0oZS5jcENvbG9yTW9kZXx8MSkpLHdzKDEpLEpnKCJuZ0lmIiwobnVsbD09ZS5jcFByZXNldENvbG9ycz9udWxsOmUuY3BQcmVzZXRDb2xvcnMubGVuZ3RoKXx8ZS5jcEFkZENvbG9yQnV0dG9uKSx3cygxKSxKZygibmdJZiIsZS5jcE9LQnV0dG9ufHxlLmNwQ2FuY2VsQnV0dG9uKSl9LGRpcmVjdGl2ZXM6W1dNLE5KLElKLGpNXSxzdHlsZXM6WycuY29sb3ItcGlja2Vyey1tb3otdXNlci1zZWxlY3Q6bm9uZTstbXMtdXNlci1zZWxlY3Q6bm9uZTstd2Via2l0LXVzZXItc2VsZWN0Om5vbmU7YmFja2dyb3VuZC1jb2xvcjojZmZmO2JvcmRlcjoxcHggc29saWQgIzc3NztjdXJzb3I6ZGVmYXVsdDtoZWlnaHQ6YXV0bztwb3NpdGlvbjphYnNvbHV0ZTt1c2VyLXNlbGVjdDpub25lO3dpZHRoOjIzMHB4O3otaW5kZXg6MTAwMH0uY29sb3ItcGlja2VyICp7Ym94LXNpemluZzpib3JkZXItYm94O2ZvbnQtc2l6ZToxMXB4O21hcmdpbjowfS5jb2xvci1waWNrZXIgaW5wdXR7Y29sb3I6IzAwMDtmb250LXNpemU6MTNweDtoZWlnaHQ6MjZweDttaW4td2lkdGg6MDt0ZXh0LWFsaWduOmNlbnRlcjt3aWR0aDowfS5jb2xvci1waWNrZXIgaW5wdXQ6LW1vei1zdWJtaXQtaW52YWxpZCwuY29sb3ItcGlja2VyIGlucHV0Oi1tb3otdWktaW52YWxpZCwuY29sb3ItcGlja2VyIGlucHV0OmludmFsaWR7Ym94LXNoYWRvdzpub25lfS5jb2xvci1waWNrZXIgaW5wdXQ6Oi13ZWJraXQtaW5uZXItc3Bpbi1idXR0b24sLmNvbG9yLXBpY2tlciBpbnB1dDo6LXdlYmtpdC1vdXRlci1zcGluLWJ1dHRvbnstd2Via2l0LWFwcGVhcmFuY2U6bm9uZTttYXJnaW46MH0uY29sb3ItcGlja2VyIC5hcnJvd3tib3JkZXItc3R5bGU6c29saWQ7aGVpZ2h0OjA7cG9zaXRpb246YWJzb2x1dGU7d2lkdGg6MDt6LWluZGV4Ojk5OTk5OX0uY29sb3ItcGlja2VyIC5hcnJvdy5hcnJvdy10b3B7Ym9yZGVyLWNvbG9yOiM3NzcgdHJhbnNwYXJlbnQgdHJhbnNwYXJlbnQ7Ym9yZGVyLXdpZHRoOjEwcHggNXB4O2xlZnQ6OHB4fS5jb2xvci1waWNrZXIgLmFycm93LmFycm93LWJvdHRvbXtib3JkZXItY29sb3I6dHJhbnNwYXJlbnQgdHJhbnNwYXJlbnQgIzc3Nztib3JkZXItd2lkdGg6MTBweCA1cHg7bGVmdDo4cHg7dG9wOi0yMHB4fS5jb2xvci1waWNrZXIgLmFycm93LmFycm93LWxlZnQtdG9wLC5jb2xvci1waWNrZXIgLmFycm93LmFycm93LXRvcC1sZWZ0e2JvcmRlci1jb2xvcjp0cmFuc3BhcmVudCB0cmFuc3BhcmVudCB0cmFuc3BhcmVudCAjNzc3O2JvcmRlci13aWR0aDo1cHggMTBweDtib3R0b206OHB4O3JpZ2h0Oi0yMXB4fS5jb2xvci1waWNrZXIgLmFycm93LmFycm93LXJpZ2h0LXRvcCwuY29sb3ItcGlja2VyIC5hcnJvdy5hcnJvdy10b3AtcmlnaHR7Ym9yZGVyLWNvbG9yOnRyYW5zcGFyZW50ICM3NzcgdHJhbnNwYXJlbnQgdHJhbnNwYXJlbnQ7Ym9yZGVyLXdpZHRoOjVweCAxMHB4O2JvdHRvbTo4cHg7bGVmdDotMjBweH0uY29sb3ItcGlja2VyIC5hcnJvdy5hcnJvdy1ib3R0b20tbGVmdCwuY29sb3ItcGlja2VyIC5hcnJvdy5hcnJvdy1sZWZ0LC5jb2xvci1waWNrZXIgLmFycm93LmFycm93LWxlZnQtYm90dG9te2JvcmRlci1jb2xvcjp0cmFuc3BhcmVudCB0cmFuc3BhcmVudCB0cmFuc3BhcmVudCAjNzc3O2JvcmRlci13aWR0aDo1cHggMTBweDtyaWdodDotMjFweDt0b3A6OHB4fS5jb2xvci1waWNrZXIgLmFycm93LmFycm93LWJvdHRvbS1yaWdodCwuY29sb3ItcGlja2VyIC5hcnJvdy5hcnJvdy1yaWdodCwuY29sb3ItcGlja2VyIC5hcnJvdy5hcnJvdy1yaWdodC1ib3R0b217Ym9yZGVyLWNvbG9yOnRyYW5zcGFyZW50ICM3NzcgdHJhbnNwYXJlbnQgdHJhbnNwYXJlbnQ7Ym9yZGVyLXdpZHRoOjVweCAxMHB4O2xlZnQ6LTIwcHg7dG9wOjhweH0uY29sb3ItcGlja2VyIC5jdXJzb3J7Ym9yZGVyOjJweCBzb2xpZCAjMjIyO2JvcmRlci1yYWRpdXM6NTAlO2N1cnNvcjpkZWZhdWx0O2hlaWdodDoxNnB4O3Bvc2l0aW9uOnJlbGF0aXZlO3dpZHRoOjE2cHh9LmNvbG9yLXBpY2tlciAuYm94e2Rpc3BsYXk6ZmxleDtwYWRkaW5nOjRweCA4cHh9LmNvbG9yLXBpY2tlciAubGVmdHtwYWRkaW5nOjE2cHggOHB4O3Bvc2l0aW9uOnJlbGF0aXZlfS5jb2xvci1waWNrZXIgLnJpZ2h0e2ZsZXg6MSAxIGF1dG87cGFkZGluZzoxMnB4IDhweH0uY29sb3ItcGlja2VyIC5idXR0b24tYXJlYXtwYWRkaW5nOjAgMTZweCAxNnB4O3RleHQtYWxpZ246cmlnaHR9LmNvbG9yLXBpY2tlciAuYnV0dG9uLWFyZWEgYnV0dG9ue21hcmdpbi1sZWZ0OjhweH0uY29sb3ItcGlja2VyIC5wcmVzZXQtYXJlYXtwYWRkaW5nOjRweCAxNXB4fS5jb2xvci1waWNrZXIgLnByZXNldC1hcmVhIC5wcmVzZXQtbGFiZWx7Y29sb3I6IzU1NTtmb250LXNpemU6MTFweDtvdmVyZmxvdzpoaWRkZW47cGFkZGluZzo0cHg7dGV4dC1hbGlnbjpsZWZ0O3RleHQtb3ZlcmZsb3c6ZWxsaXBzaXM7d2hpdGUtc3BhY2U6bm93cmFwO3dpZHRoOjEwMCV9LmNvbG9yLXBpY2tlciAucHJlc2V0LWFyZWEgLnByZXNldC1jb2xvcntib3JkZXI6MXB4IHNvbGlkICNhOWE5YTk7Ym9yZGVyLXJhZGl1czoyNSU7Y3Vyc29yOnBvaW50ZXI7ZGlzcGxheTppbmxpbmUtYmxvY2s7aGVpZ2h0OjE4cHg7bWFyZ2luOjRweCA2cHggOHB4O3Bvc2l0aW9uOnJlbGF0aXZlO3dpZHRoOjE4cHh9LmNvbG9yLXBpY2tlciAucHJlc2V0LWFyZWEgLnByZXNldC1lbXB0eS1tZXNzYWdle2ZvbnQtc3R5bGU6aXRhbGljO21hcmdpbi1ib3R0b206OHB4O21hcmdpbi10b3A6NHB4O21pbi1oZWlnaHQ6MThweDt0ZXh0LWFsaWduOmNlbnRlcn0uY29sb3ItcGlja2VyIC5oZXgtdGV4dHtmb250LXNpemU6MTFweDtwYWRkaW5nOjRweCA4cHg7d2lkdGg6MTAwJX0uY29sb3ItcGlja2VyIC5oZXgtdGV4dCAuYm94e3BhZGRpbmc6MCAyNHB4IDhweCA4cHh9LmNvbG9yLXBpY2tlciAuaGV4LXRleHQgLmJveCBkaXZ7Y2xlYXI6bGVmdDtjb2xvcjojNTU1O2ZsZXg6MSAxIGF1dG87ZmxvYXQ6bGVmdDt0ZXh0LWFsaWduOmNlbnRlcn0uY29sb3ItcGlja2VyIC5oZXgtdGV4dCAuYm94IGlucHV0e2JvcmRlcjoxcHggc29saWQgI2E5YTlhOTtmbGV4OjEgMSBhdXRvO3BhZGRpbmc6MXB4fS5jb2xvci1waWNrZXIgLmhleC1hbHBoYSAuYm94IGRpdjpmaXJzdC1jaGlsZCwuY29sb3ItcGlja2VyIC5oZXgtYWxwaGEgLmJveCBpbnB1dDpmaXJzdC1jaGlsZHtmbGV4LWdyb3c6MzttYXJnaW4tcmlnaHQ6OHB4fS5jb2xvci1waWNrZXIgLmNteWstdGV4dCwuY29sb3ItcGlja2VyIC5oc2xhLXRleHQsLmNvbG9yLXBpY2tlciAucmdiYS10ZXh0LC5jb2xvci1waWNrZXIgLnZhbHVlLXRleHR7Zm9udC1zaXplOjExcHg7cGFkZGluZzo0cHggOHB4O3dpZHRoOjEwMCV9LmNvbG9yLXBpY2tlciAuY215ay10ZXh0IC5ib3gsLmNvbG9yLXBpY2tlciAuaHNsYS10ZXh0IC5ib3gsLmNvbG9yLXBpY2tlciAucmdiYS10ZXh0IC5ib3h7cGFkZGluZzowIDI0cHggOHB4IDhweH0uY29sb3ItcGlja2VyIC52YWx1ZS10ZXh0IC5ib3h7cGFkZGluZzowIDhweCA4cHh9LmNvbG9yLXBpY2tlciAuY215ay10ZXh0IC5ib3ggZGl2LC5jb2xvci1waWNrZXIgLmhzbGEtdGV4dCAuYm94IGRpdiwuY29sb3ItcGlja2VyIC5yZ2JhLXRleHQgLmJveCBkaXYsLmNvbG9yLXBpY2tlciAudmFsdWUtdGV4dCAuYm94IGRpdntjb2xvcjojNTU1O2ZsZXg6MSAxIGF1dG87bWFyZ2luLXJpZ2h0OjhweDt0ZXh0LWFsaWduOmNlbnRlcn0uY29sb3ItcGlja2VyIC5jbXlrLXRleHQgLmJveCBkaXY6bGFzdC1jaGlsZCwuY29sb3ItcGlja2VyIC5oc2xhLXRleHQgLmJveCBkaXY6bGFzdC1jaGlsZCwuY29sb3ItcGlja2VyIC5yZ2JhLXRleHQgLmJveCBkaXY6bGFzdC1jaGlsZCwuY29sb3ItcGlja2VyIC52YWx1ZS10ZXh0IC5ib3ggZGl2Omxhc3QtY2hpbGR7bWFyZ2luLXJpZ2h0OjB9LmNvbG9yLXBpY2tlciAuY215ay10ZXh0IC5ib3ggaW5wdXQsLmNvbG9yLXBpY2tlciAuaHNsYS10ZXh0IC5ib3ggaW5wdXQsLmNvbG9yLXBpY2tlciAucmdiYS10ZXh0IC5ib3ggaW5wdXQsLmNvbG9yLXBpY2tlciAudmFsdWUtdGV4dCAuYm94IGlucHV0e2JvcmRlcjoxcHggc29saWQgI2E5YTlhOTtmbGV4OjE7ZmxvYXQ6bGVmdDttYXJnaW46MCA4cHggMCAwO3BhZGRpbmc6MXB4fS5jb2xvci1waWNrZXIgLmNteWstdGV4dCAuYm94IGlucHV0Omxhc3QtY2hpbGQsLmNvbG9yLXBpY2tlciAuaHNsYS10ZXh0IC5ib3ggaW5wdXQ6bGFzdC1jaGlsZCwuY29sb3ItcGlja2VyIC5yZ2JhLXRleHQgLmJveCBpbnB1dDpsYXN0LWNoaWxkLC5jb2xvci1waWNrZXIgLnZhbHVlLXRleHQgLmJveCBpbnB1dDpsYXN0LWNoaWxke21hcmdpbi1yaWdodDowfS5jb2xvci1waWNrZXIgLmh1ZS1hbHBoYXthbGlnbi1pdGVtczpjZW50ZXI7bWFyZ2luLWJvdHRvbTozcHh9LmNvbG9yLXBpY2tlciAuaHVle2JhY2tncm91bmQtaW1hZ2U6dXJsKCJkYXRhOmltYWdlL3BuZztiYXNlNjQsaVZCT1J3MEtHZ29BQUFBTlNVaEVVZ0FBQUpZQUFBQVFDQVlBQUFEMDZJWW5BQUFBQm1KTFIwUUEvd0QvQVArZ3ZhZVRBQUFBQ1hCSVdYTUFBQXNUQUFBTEV3RUFtcHdZQUFBQUIzUkpUVVVINEFJV0R3a1VGV2JDQ0FBQUFGeEpSRUZVYU43dDBrRUtnMEFRQU1FMng4My9uMnF1NXFDZ0QxaURoQ29ZZHBuYlFDOWJiWTFxVk8vanZjNmszYWQ5MXM3LzdGMS9jc2dQcnVqdVExN0JEWVNGc0JBV3dnSmhJU3lFQmNKQ1dBZ0xoSVd3RUJZSWkyZjdBci8xVENnRkgyWDlBQUFBQUVsRlRrU3VRbUNDIik7ZGlyZWN0aW9uOmx0cn0uY29sb3ItcGlja2VyIC5odWUsLmNvbG9yLXBpY2tlciAudmFsdWV7YmFja2dyb3VuZC1zaXplOjEwMCUgMTAwJTtib3JkZXI6bm9uZTtjdXJzb3I6cG9pbnRlcjtoZWlnaHQ6MTZweDttYXJnaW4tYm90dG9tOjE2cHg7d2lkdGg6MTAwJX0uY29sb3ItcGlja2VyIC52YWx1ZXtiYWNrZ3JvdW5kLWltYWdlOnVybCgiZGF0YTppbWFnZS9wbmc7YmFzZTY0LGlWQk9SdzBLR2dvQUFBQU5TVWhFVWdBQUFKWUFBQUFRQ0FZQUFBRDA2SVluQUFBQ1RrbEVRVlI0MnUzU1lVY3JBQmhBNFUyU2ttUkpNbVdTSmtsS0ppV1pacEtVSkpza0tVbWFURkltS1pPVXpNeVNwR1JtbGlSTkppbEpTcEtTSkV0bVNwSXBtV21TZE83MzYvNkQreDdPUDNnVUNvV0N2MWNxbFNRbEpaR2NuRXhLU2dxcHFhbWtwYVdSbnA1T1JrWUdtWm1acUZRcXNyS3l5TTdPSmljbmg5emNYTlJxTlhsNWVlVG41NlBSYUNnb0tLQ3dzSkNpb2lLMFdpM0Z4Y1dVbEpSUVdscEtXVmtaNWVYbFZGUlVVRmxaaVU2bm82cXFpdXJxYW1wcWFxaXRyYVd1cmc2OVhrOTlmVDBHZ3dHajBVaERRd09OalkwME5UWFIzTnhNUzBzTHJhMnR0TFcxMGQ3ZWpzbGt3bXcyMDlIUlFXZG5KMTFkWFhSM2Q5UFQwME52Ynk5OWZYMzA5L2N6TUREQTRPQWdGb3VGb2FFaHJGWXJ3OFBEakl5TU1EbzZ5dGpZR0RhYmpmSHhjU1ltSnBpY25HUnFhZ3E3M2M3MDlEUXpNelBNenM0eU56ZkgvUHc4RG9jRHA5T0p5K1hDN1hhenNMREE0dUlpUzB0TExDOHZzN0t5d3VycUttdHJhM2c4SHJ4ZUx6NmZENy9mei9yNk9oc2JHMnh1YnJLMXRjWDI5amFCUUlDZG5SMkN3U0M3dTd2czdlMnh2Ny9Qd2NFQmg0ZUhIQjBkY1h4OHpNbkpDYWVucDV5ZG5YRitmczdGeFFXWGw1ZGNYVjF4ZlgzTnpjME50N2UzM04zZEVRcUZ1TCsvNStIaGdYQTRUQ1FTNGZIeGthZW5KNTZmbjNsNWVlSDE5WlZvTk1yYjJ4dnY3Kzk4Zkh3UWk4V0l4K044Zm42U1NDVDQrdnJpKy91Ym41OGZmbjkvK1ZjS2dTV3dCSmJBRWxnQ1MyQUpMSUVsc0FTV3dCSllBa3RnQ1N5QkpiQUVsc0FTV0FKTFlBa3NnU1d3QkpiQUVsZ0NTMkFKTElFbHNQNC9XSDhBbUo1WjZqSFM0aDhBQUFBQVNVVk9SSzVDWUlJPSIpO2RpcmVjdGlvbjpydGx9LmNvbG9yLXBpY2tlciAuYWxwaGF7YmFja2dyb3VuZC1pbWFnZTp1cmwoImRhdGE6aW1hZ2UvcG5nO2Jhc2U2NCxpVkJPUncwS0dnb0FBQUFOU1VoRVVnQUFBSllBQUFBUUNBWUFBQUQwNklZbkFBQUFCbUpMUjBRQS93RC9BUCtndmFlVEFBQUFDWEJJV1hNQUFBc1RBQUFMRXdFQW1wd1lBQUFBQjNSSlRVVUg0QUlXRHdZUWxaTWEzZ0FBQVdWSlJFRlVhTjd0bUVHTzZqQVFSQ3NPQXJIZ0JweUFKWUdqY0dvY3hBbTRBMklIcG1vV0UwZUJIK2V6bUZsTnZVMDZzaEozVzZWRWVsV01VUUFJSUY5ZjZxWnBpbXNBMUxZdFMydUY1MS91MjdZVkFGWlZSVWtFb0dIZFBWL3NJY2JJRUlJa1VkSS85WGE3bmV5djYxK1NXRlVWQVZDU2N0MDBUV24yZnY2dTMrRWNmZDN0WHp5LzArbkVVdStTUGpvL2txenJtaVFwU2NONnY5OFhld2ZBOC9sTWtpTEoyV3hHU1VvcGNUNmZNNlUwTlg5L2ZyZmJqZXYxV3RmcmxaZkxoWWZEUVFIRy9BSU9sbkd3aklObEhDeGpIQ3pqWUptL1RKV2RDd3F1SlhzZUZGekd3RE5OZWlLTU9KVE84eFFkRFFhZUIyOStLOWVmZUxhQm85Sjd2ZHZ0SmoxUmpGRmpmaXY3cXY5NXRqeC83bGVTUWdoOTNlMWZmTWVJcDZPK1lRamhvL043OTF0MVhWT1NTSTdOLy9LKzQvR294V0xCeCtQQjUvT3A1WExKKy8zT2xKSldxeFUzbTgzb3Z2NWlHZjhLallObEhDeGpIQ3pqWUJrSHk1Z2Y1Z3VzdlFVN1UzN2pUQUFBQUFCSlJVNUVya0pnZ2c9PSIpO2JhY2tncm91bmQtc2l6ZToxMDAlIDEwMCU7Ym9yZGVyOm5vbmU7Y3Vyc29yOnBvaW50ZXI7ZGlyZWN0aW9uOmx0cjtoZWlnaHQ6MTZweDt3aWR0aDoxMDAlfS5jb2xvci1waWNrZXIgLnR5cGUtcG9saWN5e2JhY2tncm91bmQtaW1hZ2U6dXJsKCJkYXRhOmltYWdlL3BuZztiYXNlNjQsaVZCT1J3MEtHZ29BQUFBTlNVaEVVZ0FBQUJJQUFBQWdDQVlBQUFBZmZDanhBQUFBQkhOQ1NWUUlDQWdJZkFoa2lBQUFBQWx3U0ZsekFBQUNld0FBQW5zQjAxQ08zQUFBQUJsMFJWaDBVMjltZEhkaGNtVUFkM2QzTG1sdWEzTmpZWEJsTG05eVo1dnVQQm9BQUFJQVNVUkJWRWlKN1pZOWF4UlJGSWFmc3hNU3RyTFFKcEFncEJGaGkrQzl3MVlTbzAwSTZSWi9nOXZacEJmL1FPcjRHeVJna1NLTlNyQWFkc1pxUUd3Q2t1QVd5UlpKc3lTd3ZoWjdOL3ZoenJnYkxIM0xkODU5N2pseno1MHpKb2t5eFhIOERxRFZhcjBxaTZ2OEJiSXRxU0dwRWNmeGRsbXNGV1hrdlg4QWZBVldnM1VLUEVuVDlHS3VqTXpzQUZnWnNWYUNOMVZUUWQ3N1hVbnJnRTFrdis2OTM1MjY4V1JwenJuSFp2WVJXQzdZdkMzcFJaWmwzd296cXRWcWl5SDlJZ2pBc3BrZDFHcTF4VUpRdFZyZEI5WktJQU90aGRnL1FjNjVMVWs3d05JTW9DVkpPODY1cllGaGtxalg2L2Q3dlY0R1BKd0JNcW9mVVJTNUpFazZGWUJlci9lZVliL01vOVd3Rm5QT3ZRYmVBdmZ1QUFLNEJONHNBSnRBRy9nSklFbG1OdWlKeWJhM0VHTm1aaVBlWnVFVm1WZWxsL1kvNk4rQ3pEbjNBWGhFT09vN0h2LzNCZUF6OEl6UWtNUG5KYnVQeDF3Qyt5WUo3LzBuWUlQNVMvMEZIS2RwK3J3Q0VFWFJTL3JmNUhsMUd0YjJNMGlTcENPcENaelBBVG1YMUV5U3BITUxBc2l5N01qTURvSHJHU0RYWm5hWVpkblJ3Qmg3SjkxdXR3bWN6QUE2Q2JHM0dnUGxlWDRqcVVIL2ExQ2t0cVJHbnVjM2hTQ0FNQjMyZ0tzcGtDdGdiM0tDUU1ta2plUDRXTkpUaHJOTlp2YWwxV3B0VElzdjdKdFE0dG1JZFJhOHFTb0VwV2w2WVdaTm9BTjB6S3haTlBlaHBMU0JadjJ0K1EwQ0o5bExuQVJRTEFBQUFBQkpSVTVFcmtKZ2dnPT0iKTtiYWNrZ3JvdW5kLXBvc2l0aW9uOjUwJTtiYWNrZ3JvdW5kLXJlcGVhdDpuby1yZXBlYXQ7YmFja2dyb3VuZC1zaXplOjhweCAxNnB4O2hlaWdodDoyNHB4O3Bvc2l0aW9uOmFic29sdXRlO3JpZ2h0OjEycHg7dG9wOjIxOHB4O3dpZHRoOjE2cHh9LmNvbG9yLXBpY2tlciAudHlwZS1wb2xpY3kgLnR5cGUtcG9saWN5LWFycm93e2Rpc3BsYXk6YmxvY2s7aGVpZ2h0OjUwJTt3aWR0aDoxMDAlfS5jb2xvci1waWNrZXIgLnNlbGVjdGVkLWNvbG9ye2JvcmRlcjoxcHggc29saWQgI2E5YTlhOTtib3JkZXItcmFkaXVzOjUwJTtoZWlnaHQ6NDBweDtsZWZ0OjhweDtwb3NpdGlvbjphYnNvbHV0ZTt0b3A6MTZweDt3aWR0aDo0MHB4fS5jb2xvci1waWNrZXIgLnNlbGVjdGVkLWNvbG9yLWJhY2tncm91bmR7YmFja2dyb3VuZC1pbWFnZTp1cmwoImRhdGE6aW1hZ2UvcG5nO2Jhc2U2NCxpVkJPUncwS0dnb0FBQUFOU1VoRVVnQUFBQ2dBQUFBb0NBWUFBQUNNL3JodEFBQUFoMGxFUVZSWVIrMlcwUWxBTVFnRDYwemRmd09kcWE4VG1JL3dRTXI1SzBJNWJaTEl6TE9hMm50MzdWVlZiZCtkRHg1b2JnQ0MzS0JMd0oyZmY0UG5WaWRrZit1Y0lodzgwSFFhQ0xvM0RNSDNDUkszaUZzbUFXVmw2aFBORHd0OEV2TkU1cStZdUVYY01na29uVk02U2R5Q29FdkFuWjh2MUhqeDgxN01pbG14U1VCNXJkTEpEeWNaZ1VBWlVjaC9BQUFBQUVsRlRrU3VRbUNDIik7Ym9yZGVyLXJhZGl1czo1MCU7aGVpZ2h0OjQwcHg7d2lkdGg6NDBweH0uY29sb3ItcGlja2VyIC5zYXR1cmF0aW9uLWxpZ2h0bmVzc3tiYWNrZ3JvdW5kLWltYWdlOnVybCgiZGF0YTppbWFnZS9wbmc7YmFzZTY0LGlWQk9SdzBLR2dvQUFBQU5TVWhFVWdBQUFPWUFBQUNDQ0FZQUFBQlNEN1QzQUFBQUJtSkxSMFFBL3dEL0FQK2d2YWVUQUFBQUNYQklXWE1BQUFzVEFBQUxFd0VBbXB3WUFBQUFCM1JKVFVVSDRBSVdEd2tzUFdSNmxnQUFJQUJKUkVGVWVOcnRuVnVUNDdnUnJBSE4rUC8vT3IvNjFZNXdPTlo3bVoxdTNYQWVMTWpKWkdaVmdkS3NmYzV4UjNTMFJJSVVXK0NIekNwYzJNY1lvN1hHdjNleDdVaVpkNTdyanl6enYrdiszM1gvUi8rM3IvZjd2UjM4NlkrVHZLTmNmL3dkaFRMUGN2OXFVMndaZDc0dXRoMHQxODIxamtJWkxQY3NJLzZuV2E0WHZ1dHF1VTBaODVtbng4MFMvWnpncG5Mbk90SE50Ny9vZngxVEtYY1NOek4vN3FiTVEzanU3ck5RbU1ZWWQvNHMyajlhYStQK2dHYU1jWnJiMU0vdGRydmY3L2Qydjk5UDkvdDkzTy8zY2J2ZHh1MTJHOWZyZFZ3dWwzRStuOGMvLy9uUCsyKy8vWGI2NmFlZnhsLy8rdGZ4NXovLzJZSzVBbDJyZ3ZmNFVzYnBkR3JCNTJiQXZBclhwdXpqbWlxQVZTR3o1ZURtR1lYemhiQVptQ3JubXpkZHBVVSs4WTFkQU9ZZVhDdERVd1Z3VjdZQ0dINnVBbXlNY1o5bDV2a1VhQlBHTVVaNy9KNXcvNzkyL2Z2djlYcTkzMjYzZHIvZlR4UEVDZU1FOG5LNWpNL1B6L0hUVHovZHYzMzdkdnJsbDEvR1AvN3hqL0czdi8xdC9PVXZmd2tWc3dvbmdqZE9wOVB6SDNVM0Qzem1XR25aVlhuNGpDcXM3d0MyQktQNC84dEF6a1pzb1d4NlhycWVIWnltdnA0QUJDQkpoVFF3S2ZEVDhnenJaQ0lxaTVBaGlBQ2pCZkVCMnJQOC9YNjNNTTdmNi9WNnY5L3Y3WGE3YllDODNXN2pjcmxzVkhJcTVmZnYzMCsvL2ZiYitPV1hYOFpQUC8wMC92NzN2NCtmZi83NUpTdmJldStiTDJXTU1hRmJBbHBCTk04NVFYK2N0NnFvU3FrUEF3dVFsQlZLcUdORlNVT0FBM0JtdTdnQzVoTk9kMTVuU3d2QU9VVzdDNGdpVUNWOFNnbjVMOWhORklxVHNwMEd4STB5c2lveWpBamtZL3RHSlZFcHorZnorT1dYWCs3ZnYzOC8vZjc3NytQYnQyL2oxMTkvSFQvLy9QUDQ5ZGRmeDhmSFJ3cm1UalY3NzlFWHUycHgyeGhqd3RkSlpRY0FXUUlQTFBJU3NNSmFTd2lEOGd6SUtyd1N5QVRFNWo1bkFiUjVjMWRCVXdCbHNFV1cwaDZMcWlZc3FGUEFReEN5Ulozd09TQVJ4bWxYTVg1azY0cFFmdnYyN2Y3NStkaytQajVPSHg4ZjQvdjM3K1BidDIvanQ5OStHOSsrZlJzZkh4L2pjcm1VRkxPMzFnWURXYmx4UklzL1RxZlQ3b3VzeEpzQXhYQTJHYzdUQTlYZGdmZG9IYkZzajc2WDIrMVdBcmdJMWFnZUd3QTNxdXBxb0hzbWNiSTZGdTkzcXVnZ0ZhOWQ3TGVEdGdLZkFGSEJKK05FQnlJa2NKNUtlcnZkVG1oaEdjZ0pKU1o1dm4vL2ZqK2Z6KzE4UHA4K1B6L0g1K2ZubUdEKy92dnY0L3YzNytQajQyTjhmbjZPMisxV3M3SmpqUDZ3cmFNSTVFNFJaOHgydlY1VFN3a3F1b3RWNy9kN1R6NkhGV3NEL3FOY2R3MENRM3EvMzIxYzY4NlR3RFZJZGJ1eTczek5sZGhTSGI4STJrbFp6bm0rSW5CUzRVNm4wMzAyYUJGc0xoSERBS0pWSlZnbGZJOWpodnU1M1c1M3NMQU5ZTnhBaURBNk1DZVVIeDhmOSt2MTJpNlhTN3RjTHFjWlc1N1A1eWVZOC9mejgzT2N6K2Zuc1NtWVV5a25XRUc4NVdCc3Q5c3R6U0x5TWRmcjlRaTA4aVkxNVVaMExsREdMaFIzbzV6SzJqN09QVVREMEUrblUzdGs3WGIvMTZORmJobG9BTXVZMXpqTFVPTzNCS2VJRGUrWjhzMy9KNGdGbzRUTTVqUG11UmcyOGZvVUtLVlN3bzE2VGdBNW5weXdjV0xIZ1lsL1B6OC83My82MDUvYWI3LzkxbTYzVzd0Y0xpZTBzWmo0bWFvNWdUeWZ6ODhFMGYxK2o4RWNZendUUEVHMmNxanlmSE5GME04ZnVxRWlhT1ZuUnpaWlFOaDVmd1F5SGcvSERHZkpvODlRMXpiL3F1dTVYQzY3NzNJMlhLZlRxZC92OStkM3d1cVd2YS9ZVGRVZEVWM2ZoSXYvVml5cHM2WUUzeDNyNDNLNWJKUVM2NnpheFZHRnN2ZCsvL2o0YUYrL2ZtM2Z2Mzl2dDl1dGZmMzZ0ZjMrKysvdGRydWR2bjM3WnVOTEJhYUNNZ1V6QytyWlJpRm93eFV1Skk4WU1xY0NwOU9wcTV2YWdhWVU2bEdKQTFYUXFlamNodzZDajBHdzVuWUJyR3cwMUEyTzIwNm4wNEJHb3VOTnlUZnAvRndFbGhVZXk2blhySUt3N1FRV2RkeHVOMmxkTDVmTDgzOWdTUEY4YWh1L0p2Qk80OENQU3VxTWY4VnA5L1A1M0w1OCtkTHU5M3M3bjgvdGZyOC8zOS92OS9iNStUa2hQSjNQNTZtUTQzNi9qKy9mdisvaVNnYnplcjArQVp4LzUrODhidjZPTWRhNlM1ejZrZDIxZllDOWR4djdjSUpKMmQ5QU9TMzBmUE16eUhpVE04QjRERjZYVWxZSHA0S1FXM1crMXQ3N01OQjF2R0h4V3E3WGE3dmY3OCt5NS9ONUErSDFldDI5eHVQNWRiWXR5YVJ1NEFrc2JQcTY5MzZmalJ6WFJ4QmJQci9iK2IxOCtmS2xqVEhhQkJCZm44L24wLzErSDErK2ZCbm44em0wc0I4Zkg1dTRjcjVHdUJoTVZrMEVFbjlSc2N0Z1ZoTStpeGxKdE1BMjNSOEI2eXlzQXN0Qk9nRlhJS0tDTUlnVG9NcU5FdTJmWU1IN3p0YzczMmRRS2tDajF5dEFadFkwS3g4cElyOEdHSitBVDNWKzJIaXJobCsrZkJtWHkyV3o3M3crYjE3UDhwK2ZuOC90VXdHVmxlVmtUeVViNjhEa2ZheVdZNHp4TlJpaFU0RXBMSlBaVnJLK3U3SjQvbWdmS3FlTFc5WDJSRVdsSXRMMWRpeW5iRERiMytqWGdZalFxbjBycnhXYytOa0lMUDdGN3hJYk12eDd2VjUzeDQweG5sYldKRjEyWlNhZy9OMHBXNnQrWnptT016SGphakt3RGZvbmQ3OHpZVGRmcTE4dXA5N3pyMnE4djNJaW9CcHJSdEJsMEVaOW9nNVdCUkdPZE9IaklqWEY3VW90RmJnT1duWHpJSnl6WXZqRzVJWWdzbU1PeEhrejhPc01TclZOV2VxNVQ4RGFPY2JFdjFPZDVyYnM5YU83WXZNZXQ2M0VrRisrZk1FeHErTVJsNC9MNWJMWk4vK2V6K2ZuWjZLYXp1TXFYU1FWTzVzcEpYZmxIQUl6ZXMveEpzZWNrUkppRE1vZzlkNlZmUnJxWE1yNktwVlYyN2pSd0phY0dvdk9BTTF6TWRRTW53SzFBdWJLNjNrZENDaHZJMUM3ZzB6OW5mL0QrWHplMlZqOEg3R3g0UDlkdVFsc1lDcnF5TjhYcUczSG0vMTBPajNqdy9uK2NybHN0dU0ralBtbXhUMmRUdVB6ODNQenQycG4xWHNFSFgvYm5QYVZxVm1oMHh3T3QwbzZYTExBSGVQVVUyMDN3SGZjcnNwQ3dtVjNUcnlCNXMwTXNlZWc5N3gvQnd6Q2pCbGJCK3BSQVBsYTBCVlF1VDZWNlFIZEJsajNkMEtHMTQ3YitEcXhRZVV5bURPNDNXNGRRYXIrVElqd21BZDB6OC9oNjV2ZjAveUx2M1BiNVhMcHJ1L3lkRG85czdFVDBJK1BqNmRLSzlWVUVJZUtXUVdQQU9ySjhMS2Q0dkUrdDkxWTNlN1VGbFdhdGcyVndKbmIrSFBtdHZtL3NmSzU5L09hV0YzeC9lUDFVUEh2QTVERFlEcFlYZmIwZHJ2MVYyRGtCa3h0dy90RVdWVmxYV2RDOXBGWXM1L2pmaDlkUy8xNnZXN3M2bFRHK1RmcXN4U0pIeGtYWHEvWGRyMWV1NExzZkQ2UDN2c1QzTjc3RGtMK3pQbTVqU2RLTDR6UjNBeFFkNnJIa0xrWWxTb3dzcnE3em56dTZ3U3dkc01KT1htQTVmQmNqeHRnTUdCWUhscjV6b2todHNNQ1RnWExRT1c0WEM2ZEV5RU1wckw4bUFRelhSZ2R1aXgyeVp6b3J4a1lzRG4zaEIxVmVNTEdzWHNWdGdsMnBXOFMzc3ZrMHZ3N1I0aE5hSHZ2NGNBQ2w1SEZ6d0lIMEtjNnp1NFhqRFBSL2pwQVZ4V3pPMVhrMkREYjN2VGN4ZUdVMWlXWkhrbUlEV3ppV0t2aXJDSjREcmF2czZJSi9HRzZjVHFXZFhEeStmQXJRRFZWa0xxa1ZqQW9aSUlUZG1tSXFYd3FhOTVOMytNR1lvWlFkUlZOTzUzWTF4UmtoTzE2dlk3ZXU1MDdDYTlsSm5iR3B4T2VtUWhTdy9BUXNtbXA1elU5QmlVOEc2d3ZYNzZNNi9VNlBqNCtkbzBCejRDcGdpa25UVWVEcXdsS0JtZzN1NE9WanJaMUErckFjZ2FlaldxNmVKQ3ZDWUZET05Td09nSFg0RVFSdzhseGJ6RE9kRUs2Z1ozSGsxYis4ZzJvMUpGdEtYeXYvZkVkVFh1V2pXWGRBWmlCcDZBRGVEckNGaWltN0I2WkZuZWVJN0d2bS9QTWtVRFg2N1c3eEk4YjBENy92OGRBOXFmTjVvYUNmNzRXWmpIMG1mMWNtZlkxWTBKVUZtVnJUV3U4dXprTmNMdEVqN3U1RlhCVGtmQzZHT0E1cThZTXhPOEtWdkY2c0FWR2RjclVic0tPRGNRS2tMTU9NZG1seHVtNjQyWXJQbTI2QWxoWlcxWUIxUityckdzd0U4VGFZQVdlVU14ZGYrV2p3U3ZaMkVmM3l0T3lmbjUrUHBWUEFhcU9uNDNNdE5CcXZtamp4YmpNNGxaalpZNGdxTk1JNWt0YVcvc1lLTndTKzlsRlF6R2lobU1DS1BhNytaMFY2RWIwR1Jtb2J0cFg4SmxqV3U1Rk1MTjVqYTZoRzlrd1FnWnFmNSsxTkg1VXh6a0ZSZUNkV2hKOFhkbEdVa3hPN0hSbFlSbTRtVk80M1c3dGVyMTJUUEpFdy9ybUVOM0w1U0tISVdaZzlteitwVW9LT1lxNWJKVEpkWDJnbWUxVWN4TVpRRmFFUUlsSGN0MzJNK1kxQnpHa0d1emZpeUFOOXordWdwbFoxc3ltQ3JEQ1lZa0d4RFRwSTlSekJ5MHJIeWVEVUMxbldhZVVhRDluNHhrTnlZTUJEWnR6WjNCKytmSmxZMjFYRkRPY0FSSmxhYk95aVMzdUNwTEk5anJaakNEa2FWdmNDQ2p3b2duS1NoV2R6WFpXbFpNdlZUZ0Q4THBxbENMcnFnYmNCK3FZd3JnS1lwVDBjY0NxYkt5Q1ZhbGtFYWJuL0Z5bm9nQ3JQS2ZxZjUxeEo3c0dCMlpYY1pteG9TT3p0angzMDBEWmk3YTAvMkFJUjBVbEJhZzlTdUR3NktjQXpsYUI3dkhadldwaks5MGR5cnE2Ykt5RFVaUWJSMEIwNWJpTFFrSEljU1VtZ0lLK1N3dXFnSENub2lvMlJRVTF5aitCbkJ5OXBwaFZLTEd5QzdaekZLMXB4V0srRThJaFZDV0xOL3VMdG5VVTRheW9ZTG9hQU56OEZkdGFTdlk0cFYwQkVXMmxzNjFjenFsbEJLcFR5S2dNQWhyWjFjZGMxUlJPdFBtdldOa2RjS1o3Wkt4YVdqaVBMSk1wcDdPWkt4QStycUcvb0pManhmMHBuSmxxTG9EWm8zZ3lVMG1LR3lzMnRhS2Vjai9kMUMrckpTcGxCcWxUeUFxZ1IrRDhLaktsbVJMMmd0VWNBZEN0c0wraWpDTlQxb3FxcWtIMk9IRWJHNXNERm5VZzVBYSt5TG91MlZVMXB0ajFTMlpRcXYxT1JaTjlJV3pSZmdhUkJ4S29CRThVV3lxbEpGdHJJYzBBeE5qU2plZDk5Q1RZL1hEZlN6Q3o1TTBJWm9WRXNXblBGTlRzbDhvb1ZDMVR6YkdncUZaTkRTZ1Z3S0srMXNHRE1LcXhaQ1dHVk1EeXNpRXIxalZTUUpVWXdqNWlIT2xUaGRIdDQ0U1FnOUNOK25sOEQ5ME5NSWdBZGdyNDZKcVJpUjlJOHZSZEZ2YnIxN20veXhVTUtqTkxNaVZVQUR3dTJDV0doaGkrRjU1VFdNOU05Y29nem1zMWRuTTR1T0YvTEFFWVdkY3FuTTd5Rm15cTNJZndtT1JPZDdZMWlGV3RPam9ZOFRvNDFtVFY1SXlzZ0ZGdVJ6c2JXRkdiTklJSkNEdjFkT280bFpHN2pXQndSRnRWVEt1V3llQ0J5SktPYW44b1ozZXA5WGRkTmwwdER1YXl3THo5Y1hQWWVEQUEwU3BrQk85c2JWY1RPVldsZFB2NHV5ekVrenhIdGp2b25Ib1NrRkVXTm9vMWQ4RGhjUXB1dGQycHBOb240QnpvQWlKMWhCRlFnMGRWdGRiR0hIRFFXdXNobU5FUXVrTE0yUU8xRzJZOGJnVFhxRmhjQkpqN0VqUGdjUHRzOFVTOHFQcFBCL2RYem5PaDVaNDM4dHpINWVjNlFnck9LclJSZktteXNCbVVEQitQaFlhYk1sVlBFUitHQ1NJVFR6cjdhbTJ0QXJIM2JnY0V6UEptK2NyNWpKNE5uSE5GRFZyRlhjSTVMZTlrNUpudytiZWRiVitGZlJ6WklIYU9PYU9zTFkwLzdVR3M1OERqckd3S01JTUZJR3pPRVcxL2pHc2RBdENONmhFQUk0aEJlOVlYZVJST0JTVlBBVlBBcXZJTTVieDVoVktXQU1QNnpCUnkzaWVzY3JpZFZkRkJpbkJ4WERuRzJHUlkyWGJDdnAxbGh2R3RPOUJ4dTVoOTA4WFF1NDJsblNBck1GZGl6TWltOHV3UkN4UEdubk9TOGx3cG5iT2lEcVRBanNyUk4vUGNvQVNjQ2JhQUNxVk00MHlsbmpqVEJzK2J3V2xBRzIzL1VLYmRraXdLV0lRUEd6V2FjenBvU2x4UEVqODIyY05Xa3BTN0Z5enNEcnFwZmdwRzNqYWh3MnZnYmFTUUF4dUxXWll0N0p6eU5lOEpvWnBOQWN2REZPZHcwd3FZVDlBSzFyWnovRGRiU2xMUHAwcnlJeGdRSmxLOUFabEVxN0lPWHBvaGc5UElockNuZzg4SnNPeGlWNFpXQVlmZzRzaWt4LzhreTJaOWw4NjJ1cXdyZnNjSUg4K3VnVG1WR3lpZGRlVllVZ0VNbjRHWnpnMTRFd0lzaDlzeDJjS0tpV1hSZXVPRTVnekdPUWdkbFJLVlZkbGV2cWIyNzlYcTBRbnN0czJWRGFCTzBjb2V6c3J1V3RIQXB1NnNLRzRJQmhOMGFHVTJrTHJNS0dSVE4zSG1iQ0R3S1YxNHp2a01FREc0UWZaVnNwVmxhTlUybWhjNVRFWjNOMWgvenFUaGV1THBXMDVaV1RHVmpiM2Ribk5teEtaQm5OOEpxaWRhVkxLQU95QVJOTFMrTUI1NFoyK1ZhcW9NTEtyb1ZCbG5nZWZuVFBBY29ITldDU3ZsZkE4Q0kwSEVtQk5CbkJsWHlNcnpVN0E3V1ZtOTRQUHFRMmdtcUt4K1dER3NudmlsbWNTT0JKcU9LMW5ZeUFJenVBeWVzcTNVZFNLM0tmV2NZS0Q5NUhtZllPVTNxc2VyMkN0WUVVQStGcGZxZE52Z1BCWlVCaERyR09OUlZsUXNoOHJMY2FVQ3lrSEcwT09Vd1RsTEJyc2g1c29FTUdlemkxRTRIUlZ0MWljcDV3WkVGWGRpYkNrRzhZOHZYNzVzYk80RTBpb205eitoalNpT2Z5M0RocFhJdHBWaEUrVUdRZHZvV2p0Q2htckdIZjRZQXpLZ0JObkd0dUp4RkNlR2RoVUFmUUxMSzhrQllBUDZndkZKWmFqTUczWGt5Y3k4S3VDMHE0RXl5bXd0d2R4ZHYyTTBtSUJ0SzBMS25mNjQwajAwQXVxNGdVa2RXR2xoczIycUpjNmRaQ3NMMTlveG5sVEpHNFNZVlJJR3BEOFRQRkJ1TTZPRWxiUzFwbGRpZDRtR0F5TjZaSXVwYkM1YlhKTjlmZHBiVGhTeExVYUk4SUcxWElZQnhXM1RqczZLUW9zS2N4ZnhjUW1kbndSR00xMEduRmNDeTJYWXVuTE15QWtkZ2s0bWVQaWN6c0x5Z3RoY0J1dDZnb09xUzdZVkZYQURMamFvc0I2czZvZmNaV0FaU0lSWXFTVWtpell3dHRZYWIzdlVPUTl3MkhSeElJZzhXd1JWZUU2OHhpNFV0TDN6UnBoeHBsend1WnJjcVlDcTFJM2pQSTVkbkpJeWdFb2hNYlBxVkpTenJ3enhCSlRzNXpOK1JlVVNneGlrUFFWRjNKVkJlTlF4YkhFTnJFTU52RWRGWlZWOWxIOStPUkdFc05aUXB5VE5jNEMzQUc3WEY0bmd6cStEck8yemJ1YWFPWGdkYUZjZGtFb3RvU0ZCVlgycUowQzhPV1plRzRLR2xwZ2hBMFhmVE9QQ3FWMnFxd1EyNlFXZkYyUE1MaEkydzFsVkFhMmFQc1lkMHphMjVNUVJ3Z2NaTjZ1UURDaStaeGlENFhFTTJrWnhPVDQxRm5abmFSbGNwWm91emxScXFkYlFWV29wUW9TQjU4UlY1MGxCTnJIaS9Bd1hTNUxyd0RWbHBZM0ZjM0J5aVlHYzUyVHJpc3Q2a09YZHdJbkFRdEpwcDVRY2h5YXF1WU9WN1N1K2Z4Vk1hVjNkYzBSRTJTNm1VWTBnTHQycE1jWXFyS0lROXcybDFncFFVTXRRWWNtbWJ0NURUTnhkaG5VQ2pRcXRiSzlTVVN6dnJDMG1taGhFMWUyRlMyK294eXB5L1pBU3V0a210angzdmNCQzI0UFg2NW5icWtCQ1JoZmpTOWtJWVBuZWU4Y01hZ1ZPaEkvM1QxZkFtZHRBV1pzQ3N3VEpDa1FWTmEwcVdLU0tQT3BIQVVoRDlEcmJWY3lvWWt3cWh2aDE3dllBYXlYTFF5S0dZZHhsVURGcDQ5NHJCWFJqWWdPMTdERFlldE5JVWovZXpwNlMwbG5scEV3c1dtSk1rT3dzS1hlWktFQWpJSG4wRVFKSVNhUkJjTzZVTUlOejdwL2JFampudzRmdCt4bUR2a3N4WDRHMnJJcmlzN3FhZUt3QUZNUDJPaTduNGNyaXVad3RwU1V3cGZMeFNuT1JTcklxdXNjNVpGYVh5c3FSV2ppWjJEeUFXRUlMMzV0VlNvUUVsRkFDak9lR0dTRTdBSEVRZ2RvL0xTdkNPZ0dCdmt4c21EYnZsUzNGcDV2aGFCMlRBR3FSS3JLS01yaExWcGFHekVWalowT1F4RGhhQ1RBK1F5UlIxZDE1YVF6ckpudEwzUmlic2lwakc2amxnTDR5cWJTMHNOWWcxZTg0dmhiQlZyRWxLNjRDVWNXWVhEZkt4aHBJdXhpVkpaVXhzYk15L3VSQktUTlJRNGtRM0xkUllMUzBySmpSUGxUUHFZNmdkSnNFRGMrYVFYQW4rSGdzTlVDYlJ1RjBPajB6d25BN2JXRGtiaE81RW5zMDBxZVFoUzFsYUJNbDVNL2NBYXhzTEY4ckt5cWwrVGY3RUxMRUd1L2l4aWltZEN2bzBUamZwakt3YWdnZW40ZWg1djdMb2tMS2JMdXl2SGhjWkc4ZGhHckVEeDdIZzkzWnBwSkY3cUJxTzNpVnZlWEVEUU5Jbnplb2U4WXE2ZVBhWkJaMkp2aU0zVzJVQUdvdGVrUkNBR3E0RWtGMVgzRE9uUjExeVJzQkwxdFJhMFBWY1ppTkZYWjJjMzRGc2t2b21JblFRNmx6cEpvWmJKeGs0M053S0pGQnF1SlNzckJ5SHlkeEtPblR4UUFTQm1TM2orSk1uc0hTbGEzRWM2SzlWV29KVm45emZqd09NN2hxWUFBcUpRd0UyYTNuQTQ4SjJRR2VnUmtwWk5pdlNZK3lzM0VrS2Q0b0pJd3N2SUhsM2NXZ0x0NWs0Tkg2T210TFdkcHVyT2t3RU11cFljN2VNdERSaE9jSTJ1aTVKaFZJelh6THl0by9HQVB1Wm95bzh3a29kdVZnSmdsQ3Q3T2hHYmdJRDRNcTRzaSs2M3pVUzFGdUZGWEZscXlhajJlbUhsTE1jQnFZdTBGTXVSMjhCYkI3bE94Uk1TaUNRWEZoQ0t1d2toWitwWURpR1NnYnNLS1Y4TWlTUnN1SFNJV005cmtsUmlJbFpadXFYanNRSzhvb1lKTWdxM0pLV1ZraEhiaHNWeEZVenRoT1dQa1lpamNieDU0SUtzU2RUK3VMcjNjckdLeW9ZZ0ZpR1I5aUJrNGtmbG9VWCtKSWxRUlFxYWJtcGduaHF0cFFwYjZSVlExV0g1RG5yUzRoRW9HWnFhZXJRMmRoRmJ6OFhlUHhTaG1EYm83MGVJU2pvb3JPMnZLOFNKWEk0U1VtRVU0eldLRHpVRHRXVFl3N3hYbGJTVEVqNEZSZzd6S25Lb0dSQUx2MEdzOVRnYzFCcEN5d0daUlFBdHFWejJ4ckJjQU16RXBmWndGU2EyRzVXMFFCRmpTTWFwV0FFRmEzSGNHTjdDeER6RUN5SWtKOTdxd3JxV05UV1ZvODc2UFBzalBrajJ3dmdyb001bExaS01FVEtWcWwvQ3ZuV1ZGaUZhL1N6SlVRd2tvWnNyNjdZNnZsU1JWMy8ydG1OVE9ZM3ZuYXhZd011b1BLcWR6UjF3N0lxSHltbFB4YUFUaGZVN0tvMlpYWWo0QVlKSEwra05kS3dSUVlFU1RSYTVmc1VaL3JWQzFUTVR5V1Z5WW9xTnR1emFIc015djJ0dm9hcnhkZnF3WWdVMWF4Rm8vY25xbDFGR3NxSyt1QVJPVjhCWDRHVThXY1pUQVRpMnE3UWN5aTBPMFYrR2hXQk1OUlVrbjhIMVNzV1ZFNUJ5M0dpMEVDcVVlSm9CZkF0RGE0YW1rZFhHMzdBR1A1R2dlYjg0cDdVYXpwb0tSemRGemVROEhrb0hHeHByS3kvSHBtNXQxMnA0N0o2eFRZREV6N3VJTkVYU3V4WVh2RnNrWUFjK3lTeEg5c2Y1ZnRLelU2SWJ3VkJjVUdnNWU1Rk1DRVhTRXJaUjB3R2F5VjE5d29NOWd1UGpUcUpkVlRxUjR1RTRuSm5MbGRXVmtFQ0NaTGQyVkxGK3h0YW1leDdJcGlyaVNEVXB2cnBuOWxyd0dNQ0h5cHBNSCtwczZMSUxzdUZHVWoxWEVPWGlxYnFTSFBVS25DbHBXVjY4a3F0VVJWTkRZNFROYW9jeWtvWWVUVTVuZ0dFUWEvUzFEbm5FNEFlWE1jS2pIUEFtRlZqQ0JFTmFleUxWTkhmcjNweDh4VXN0Sjk0aElwZkg0SEtFL2VEYUFySzZsU3lWVkZiZHQxZ3hUSVZrM3BwcFZsRlhpNHBFaFZCVE9icXVvaFU4NU1MWG4xaWFodlVrSEpqU0NNYzAxdExGdmVWVkJ4MERvZE02amZ0Q3U3RE90SXpZeHJjMHFwMUpHUDJheVlGejJHYjZIdk1yTzhjbkd0VjZHam0zdUltU2ZEMkdwV0s2dW93YlpHTXhGS1FDbzFwT010Y01YRnBSc3QraFhHb0FvbUYzc1NUQkdnVGdsYkJLV3dzUTN0WnFhWVNwMFoxQ2ltUkRXRmNDSlVQWUowMEJJNUZrS1lOb2lmdVF4bU44OFNXVlhXTE1hVXFxcWdDMEJtUUpSNnNrM3U5TkNmNmpZTFh4QWZxc1lFZ1ZMQWhSWTJBdGd0ZmxaTkZtRnloeGRyTGtBZFdsazREODhNMml4SHllcElkaE1IckcvaVIxWkd0cTBNR3BiRGJSUFlPWGVTWTFNNk55NFpzdHZHU2t0SytYYkZQQVRqMkQzNzFzYVBFc0FNWGhYcnNaMGttL1hTdGtoaE15QmZzYTZ1WEZaZTJWQ2UrWU1yMStHS2d3clF5TllxMVZSckIrRWl6QW93Nk5zZE5LY3lWRWtZZU03M3lzNnE0a0FIcDZCaUZrbFRrSXJWQzVvWVY3dXp3T0dDejRVSjBTdHEybFdNSnk0d3RiK1JldEw2dFpGaWNuSm1CdzVVakN2WFhNWlZKWDJNUWtiZitYTjVFV2Q3OFZ6OC9KRXNNWlRCaUtOenNtMWluTFJVUTc0SDROaWRhcUk2OGo1c0FGZ3hjUnZlQzdpZUxKWGZRWXhqWloyQ3NpV0Zld1pYSm1CSWxaMXRkdHJYNGhTdWF0ZUtzby9SWk90T0tXMm5tcTFvVHplSzZkUldBV3UyTlJWYjRocTBTWG0xR3Z0dWdIcmJyNUlYcW1Ta3RnNUN1REUyTVNsUHdzWTVrTkUyV3AzQXFpWmJXVkxBeGlCRisyaUJaYnVOajZNQjZyc01MQzdGeWFzYVlEeW83S2tvUHlFdHczcEVNWGZQdnhBSmkyakFRUWdqcnowckxJWlNXWmxJb05od2Q1eEs0QVI5bVlOaldBYUxybnVJbUplQlZOOXpCT1JPYlZ2YnIrbVRUZkZTRUpMU1JuSG83aEVKb0lpOE1GcWp4bXZnbUY1VVJaejR6TEZnWlo4Q3R1Mlg3Z2dWY2NLbTlnVnhJc09IcXhYZ05NS25GV1pZbmYxZEJuT2hheVhxMTdRd0ZsV1cwOWVOS3lWSkZtWHFhT05HQTVhQ2VnTWJKM1VVa0dZMWljM25LV2dqcThxZlZZR1FHMWdSdDZyczYyYTZIaXFxVU9xZGVzSzVObVg0bkdvZkpvaUUxZDBkRjlsVlZrdlQxL2tFRWFhQ29ZT3dGcGNWY29MTSs3NjY5UHhDOXJXcWt0SDBzV1VZbGQwVkNwdUJaL3N0VlJjR2d5OVdYMitVMVF0aGk5U3pBcVN4elpzeStPaUZ6QllueVNHVjZHa3U0NHJEOEJDT1pCVjNCdkQ1K0FLUkhOd01Fc0I2RXpIbkpwa1RBZWlVbEVHa2NFQ2VCNkdEWlRwNVlFSlRsdmRya254WWpUbGxNa2ZOdFh3RGpNN3VWaks1SlhVVW40M3JycXBLMmp5dGF4SFcwTTVHOERDOHJ0SE1ZczdLU2dkdVZRTUdUWUZxRnZWUzZya0Qzc0RKNDZhZmRZRndvcTExQU9LQ0JMaHZ3b1VnYzhJR0FOeWNSNmtuWnJkSlBkc3V4bnlqZmQzRm92VGxSTWRFZHRPbDVDTVY1RUhzWFFCaXM3VE93dklEWmFHajJWbnBiaDdjcEs2M1Z3WUVNTHdxYmp6eWw2OTlzYXdGRmtGMXlxalVVMzFIZkM2c1cxWkZWRnVYVlhWZ3o5a2VFYXcweXMxbFdmbSthelFBUVNXQStoS1lWZnNaalBuY0FjVUI5b0lheXkvVVpYUk5ja0RHamk3N0dzV2J2Qm82dFByV1BxT3lWa0JVcStJTmVxcHpOZFlzL3UwaWZoNXFtcHFJVyszM0pWU1Vjd1k3MEtMNFU5bFlkVTZsanRTbHM3bG1maTlnM1l6ZVFmVmthR0ZhVjNPRENuYUQyTjh3c0VERmtsRTNSek0zWmdoZFlrV0hzc3pxNzBGSWVjbktrVmt0OGV6TXpScTlia0d1S29qUkxCVlNvZDNZMXlQcUtnWVc3SlJRVFBWeXk1eElZTGpPZ3hnVDUyUktKVVkxZE9ySWlSZDRmdXRReC9BNUFjU21FanowdkZXcmtMenZiV0F1OUhPV2JHZ3hGazFWTlRwbkJLazZUZ3dpc0kvSGN4WVhQMXVBV083MlVMRmxCVHErYVN1MlZUVXM2aHJ4TTJDRitoRW9yMVZJQTlabUZVYWFiMWxTU2dac1ZzNHN4ekhsVkxvSkhyOUg0RGhPTlRrSTFYQzAvd2lZMk5vV0FHNVJsbkhGbnE2b0xjY3BRZGRNdUovTzE3SlZBNU9ITGkwQnFDenRxN1kxKyt1Y0NkOThxTEk4TUlIQlYvY0tqeFFUbWUzaEZCUzNNeUNxbkRzdXltMm84MEhqdkZGVHRyVVJtTmFHSnNtVmFoSW1qVHNVWEt0UVpUQVZzN012djgvK2Z6VXJaQVhjTEo2TTRrb2U2WFAwYjZTbVdXTkR6eVVwUThibCtMdFd4NHR1cVozNmNSWVYzeXVWeFBOd3ZJaXFpUUNTbXU3c3JnVHpSNm5reWhwQ2FyWHdGeTF2R2Q1aVAyY1kwNmxGcjVOamhoZzFZNitOQjI4ZnRiSzgzczhyZjdrTEpiS3dERlBiTGcyNWEwQWRaSkVpcXI1cGhpeEtNRGxSVXRjc3NxMWhyaUxxR29IK3plTmdWbTlPZW1qc0VUVjhKZEYwTkhua0lGeFdZMU9CNFlycDdydFdKN05nQUFBUFhrbEVRVlEzb05zNW5wbHlWZjh1MkZvTHUxSnJIdmVhWldRanFBa3NodEZhMmd6c1NHM1pwa2J2ZzNIYWZGOXNsUFBsbGRqRmxLODBHeXNtOE1yNE1QaG5lTldFTlBHakFJcG1pbFRQQVRkVFJUWGxDQllIWUFRdVB3QTM2eElwV3RHTjRxM1kyTWhpR3NVcHVTU25sRUpSRDhQb3JDN0NGWVZ3K0Y1MXFUaGdhYnhzVHhXekNHWTBaU3NiM2xmcUF5ME9QTmpOeTh4aVFRS3NIWUZRMkhCWlZ2VmJCdXEzbTFvV0thanFhb25zTTZ1WlVyNkNqWFdOWjBsNUUzaDNqVVJtYTZrUDNNSklpeTFMbStrYWhRcTQxTjJpWmphNXNqdGxMWU5aSFpySDZxVUdtNHZNYkRwNlJ3MkNGbXZ1eUZrckJjQ3lNdEZxQmFFQ21zSG9LOUJaMkxBL2xKY1JxU2FEcW5hV2JyWmRHYXozRExnSXZCbG40d29HenRieUpHcXNsd3hraGhIclRqVFlGWEN0T29LUzh1TGRvZlZkQWJPeWxHVTZubFlwWFdadHM0blhCcTZXeEppdE1Ob2tIVUpuYm5KcGxRbSthR3BZMmE1R01WMlFEMWhSdWJCUEZLZHVtZjVPSGtMSHowRjlsdUU1a2pCalJhMG5GRTVDVUdxSHczMk1talo2eGtnSU5WblNuWjFWWlN0SzJxS2xSYUxsUWdLN3VUcTdKRlhKd00rM1NPRUt5aFpOSSt0SjBJNXFNWXk5azJxSkQ3ZFZXZHFLWGEwQ0tOUjBDY2pnK0IySVl1MmZjQlpKWmtNRmdNMTFyMFg5MndpbGdoRkdnelZuZXhscUI3eEw5bVMyOVNpWVVWWTJuWE9aak5CUnN5RHNRUFJXVzVoclo0WGNkQzRIVldSYmpnSnI0c0ZvZks1U3pqUTdyaEkxVWViZFBkRWJqNnNxSXZUWlFaNXZhMDhyQUJzQVcwVXhlV3l0QWs3QTJLSjlacHh6Q2lvQjI0WEZ0WUFlWFl4cjZhblNxaExncHBFcVdiR3dMdW5UZ3JWK0lqV2xMMjlsamFBbDRFUU1Hc0VycDRhcGVaaXF1d1JYTFhBcU9DZXJ1MzJtbXlkYzZvV1RTV3BGQUdkemVUQjhSVEhWTUV0bE05MENiYlFDWWhQanEzZWdZcjFGR2RZSVFqaXVER1o1elovQXpvYktHT3lMeHRpNmM0Und0djJhbnlXbExJQ25sTGh4SlJYdDZBNWViREJXRk5PTmJ4V1oyZDAybW51NFM5WUVDcGVwcFYxelNXUkJXeEhZelZJdjFDWFNvdXdxcVgzakJCQkRaZFlRYnBUUVc0WlFsUzhyNWtINHN1U1JtZzIrKzNKTjEweDFQYUFtRWttdFlsRWRlR3BKRU02a091Q3FDUjIyb1N1amo1SVYySGRUMHpqNXByTEtUalhGQVBqZFFseXE3eElCeEFRUDV5TWN6RzRWeEFLdzBuNmlsWjJRQmNlMnBMdWxrdXh4cW5vSXpGZmdxeXFqaWw5UzFWTndCckZtZXllb3BzOHlPalpVeWJaZGZTOEN1YVRJSnVtenM1dE9EYU50THBGRFEvUGNKR3dlTGhtZUwxbkIwS3FpVURTY3NpVVZEODlEaTNIdHJLdFNVTHczUkxpeWdaRCs3c0Y4SlRPYmdZc3JHdkROVUZSR2wxaXkwTGwxWWtVYzJhSllNb2c5MjBJOHFXNllEQ2cxTXFrMEpISkZLWGtiZ2JScmVJK3FwWU5PWkhyVmNEVWJhN3Bqc3BoU0pOdEs2dXBnUk5BVm9PUzBtdWdCZU40YklaZ0hodVBaL3MxRU5hWDZLc1ZyK1lOcmgxTmI3aXBSMFBFNXpiTlJlZ0NickhSVXc2WWYwN2RMQkpsMWY4S0I5YXMyVjFuTnFBc2w2MkxCQmhlaHdhbGVya0htQjFKRklFWktTRXVzZGw1SlFqMW5KbEhYU0NGMzQyZ0o5Q1lHclhlbGtuSklYcVZQOHNEK3F0cGxDUjNYSDJxZktxMHlnTXArS25Wa0t4TmxaOG0yWWtJbFZNaUNuWFV3bDdxem5CS1N2UXozbTNQdDZvUWJYTzViNUZpeENoL2ZIeFVRVy9BRWNLNnpDTnFLUW5MOXN5d3FtS3V3dnFTWXpUL2FQVk5OcFZ5aHZSVzIxYXFjaUNzamRXdkJ3SUxVdmg1VnlDemJXb0MxcEpqSjY4MENXc2wrdWRLQjZUNVJ3RzFtbG9obmxwYmc0N2l6NVU5aGEwRkd0bVJMRllCdE85OXk5N0FwMHorWkRUQW9nNmtTTFpzTUhnL0lGa2tncDZDcHZVMlUwY1lWU2RubWtqd0JkT21YYnhUV05XenVJYmlwTWlvVnhFY2taRW9haFNPaXkyTTNLMGpjQzFMaFZEd2FxRzBadmtjV3FDbnJHNEdJeHlrcnFsYldkdzZMUXlCYVpSOEhtTFJJaFFXc0hzd0Q0MlpYVkxOa2Y5bCtGbFcwSFZRMmx3RnNDL1oxRmR6bFFSMEthUGZvK0ZkZnUrL2R3VlJJQ3UxQ0dSN0FFSWlBaGMrQVpVRjBrT0JhUHhtVXFnNGk2NHZRblU0bkZEWUo5TnorMWZWWHZlSDlxbXIra1BJTHg4b0tjUlYvQkZieGJFMEpNVDBrU0Q0dzZML2xOWThvY3NxYWdWZFUzQTNNanhoeGNHdXF6c1BINGlycGFvdzFxNk95clZqdnA5TnBjNTlFOTFMbGRib1lWekpXZGltV2ZBVzJTTkVLY0RhWDJGbUJMTEEvdUt4bG1oaDYxM0lzMVVSUUFwYktmdHR3eEwwMnE2T254NXBReFNiUG9qQWcrdjVoQW5ONkxIVlJEWElzdkt0UmppUzBxSlV5WlRBWFZiQUs4MkVsRkpXYVFkVm9xVUMxVW50N0JWYVRRdWRNNlN1cWV4alFKTjQrMGljYXh2L3V0Ykt2ODNFVGJUOEg4Z2pjT0t4T0ptYlVhNk9PVlhodDNkRlk2ckh2OVhvTnpGTGNlRUExbzgrcEttMExBSFBIWjJyWUtqRnEwaGZaRml4c3FISmdEM2VENW4rVTBrYjFtRmpYa24ybHZNU1NPc05FL0NkSUFLRjBTeXRxNnVyT0hVTjVnd2c0R1pvc2dibWdnTTV1Y3JhMnFyUzJJZzFjYmlCQmN4WXpnelVETkxDdkw4R2JaWE5wNk9SeTNMbVMrS2s4M3pSSUFLNkExaW9LYTJJOU5hcEl1aVVGZGZDOTc2NlBGWlV0cVVyNktiV2srelpVMWEvWnJJWEV6dHJqVE9mejdod0t6aUNlWElhcmFIdGJaSU16KzJwR2dhekNtdzRxV0FGdkVkaG9kWXAwWHEwcFY3RzFZV1lXYk80cWhHcTQyK1o4Qll0ckxXdmx1TlBwWkFlYUZGUzF2dWJQZ2JneHNxY3BuQWFzekJvdkthRm9EUThCR3RqZlVPbDROQUcybm1RVjA0ZmVKZ3VtdlgyZnNyUUVXWmdoTDBKblZkWWtuM0RPWkllUk44NlJxUFdDbXN2R1ZxRU1Sbnd4UUF4d1M4RU1ZbzNJem1ZMitCQ2NMcDRNS2l1eXVoSW1hbWxiWkZjTm9ObDd0cCtSSGQxOFpqUUlSS3lYZEZSaE45OC9oeUtxd1hXTm83TzF3aWFYb0hOMTA4UkVaWldFcTZncm5JZmp6ZWc4amRSZjFYRUw0a2tYYTViQmpLeG9LYWxqQmplSGxWeFE0R2F5Y3BXNGxET0FLdG5UeEhBdE9mek90WndIQU03c3FWWGtWNnl1NmthcDFuSGtYS3FXRi80WEhxamVuTktxQmpwUjNsMWNoM0VqZzErRXNnZFFoc2RHMEI0Rk05c1dBVldwdUF5aXdUUGxlWnh0OVZ5WlZTMnFYZlJlV3FUQWlscHI5QXBvV1RqeHltaXQ3TndWNEpUcmlaeU9BOUIwazdIRmZVTG91cm1LWUhWblJRdnFHTDVITUhkcUZjUjJxV3BtY0s2ZVR3eDJkaXBXcnZpRGlscitmS1dxM09XUldkSEt3QTRldTh3amNoYmVSekZpbHFqalpOM3VmQ3Bma0owL3NjVnBuWWs2TDBQSTc3bHhkV0NaODdXaVdtN0IvQUdxdVFTbnVqR0tzQjhDSm1pSnE4cTFwS0lWV3lxT2lUSzY2cjE4Qk44cjc0L0FFNzFmZEMzeVBTMk14ZE9wbkUxdGxWeEQ5Sm1WT29nZ04rcjRQakFYVkZQYTNFZzVqVkpHRlZVR05vbEgyMEdWclVCN0JPeVNXcTZXcVlRZFdSOTJwY0ZNWU13Y2tiU2dDS0NxRDY3RGlpV3UxZzhNUUM5QnlmY0ZxVzFMK2pMNzE0cU5DdXpub1N4dDBkYTJndFdOMUc4RjBCSzBOTjBudWltZWxVRjlkSWRBZmpPNDRVVDNDalFMb1VlTEhKRlRPM2dtcFJ1SUlPdndCUUNicU5lbzNxdFo5aUY2eFZLMTNHUmxvNHpxaW1xK0NHZFRpUjF1Ulk4b3FnRTAyaFpCYTc5a1pYUE1xdXhSSEtsYTJzYVpXTjRtUnFaVWowdkxDS2hraktucU9RSE51U1pWSm9LdkFxUzF3cEVxdXZXREMxQjJ5cHdyQ1BzUk1FUFZUT0RNTEpNRHY2cWVLWHdpMkpZVjVTcTRxS3l2Z0dzSENMaXVqMmpSNTlWOGdNcVNKMkZKWlJYRUhWUkhqM3NGUHJjdDZPcHFsVzFHcGF0UWR0MEd2d2ZNNm42M0luc0dWRmhKR2FCcWdxcUlWNklzWGxsWmd5U1BxNFIzYm50M3dpNWN2K2NOMnlxUUxXMVQ5NUtZVnNXV3RLazRjQjlXNTNXUVFmbFFZUjZXbDRIYUpaanZWRTBENXl2cStSS2daQ3M1cWRCRVA1c0Q5NGNBdlFMbFNnTmFTTUF0SHg4OEJ1TlE0MXpkRnNYMzB6S2JjczBNTEQvaWhrcFF6bDB3aVRxS0xUZmJLbUNteVlJQ25LMEliYWllQzRDRzlpU3lMUTdjSU1HUXdhdTZUS29xNjBBcGwzV040MExacGNhMUNLS0s5VlF5eUlFbjh3MEY4RjZDTDJoOG8zaXhHd0M3czdFV3pDT3FtY0FwWXhZRDRqc0F6VlMwc2wydDk4cEE3dnJLb3BoQ1ZTb25iWXBnSDZtdlNuMjRwVEJWNHNkdFYzQnRNcTVrODJ5K0lBRHZVSjB1QWxrQ1ZUeElhUG0rVU51L3FrVjRGMVR6SFhDR3JYSUFxSXRCS3lwcUs5OVZ0QU9WczY0TzRPYlg3cEhMVkNwWUhjUm13dkxSN1R2WUFLQkJONThMR1Z6RHVGeitoUWJXZ25jUXlDWkFrK1Zic1BTb3VmOTMyNjFpWmdtZkNwd1JiQXZxbVNxcmlVMlB3aGphb095WXF0SWVnVlhWaVRzbXl0YTZiR3lTcFkzZ3lScnBJeUFlYVdERHh0cHNYd0t5YWxNREtOUDdZQlhNcUVza1VzaTJ1QzhGTkFQeEFLVFZmVDFvNlZ6TTBFMGpGKzFyV2NVdUh2ZHlnN3Znb0ZwbFg4SHB2SHBNQ09NUlVQSHpaa0luc3FsRktOWC9FSU81MkUwU3hTek93b2IyVm1STFc1RDFYSVUwcmJnTTFBeldneUM3ZmU4Rzd4VUFLL3RhRUJhdDdsdXF0eVA3RW1zYUpRT2o1Rittcm5aZkN1WUNmQlVBV3dTaHlkNnBNWS92QUhHMVVxT1lwYkkvZ3k1VDBDTUttK1VPM2dGdUM4NWRnZkRWZWd1UERmSVRySUJMc0xyY2dkaDNDRmdGWmphS0o0SXYzRjhBTkVxdnV4UjF0VktPZ0xvQ2Exanhib0JBa2o2djdqL2ljRmJBN2Y0cmZSblFETFJWaUcxM2kwdnFCUXJZVnFCYkFEWlQwWnBpSG9TenZRcG9wS0lGUzNzRTFIZkJXbEhYZDBIN0xuQXJxdm91Z010bGpIQmdabmgzRW96L0JLakxNTDRaMkFxMCtoRUpyOWphVlVCYnZOekNJVWlyb0M3QVdtbUZ3NG81QUszTXRCNVZ5cFpNU0ZnczA1SnlHVndsd0Jxc0VHQUFhMlpVMUNqVWV4WEdzRTRyS3JpaWxCdkZ6T0tLbzNBdUFyb0U2UUZRVTN1OFlwTlh3UzVrKzFUWnQ1VXJ3b3VONEtpVUV3K2szWldEcDFSWEhOUnFYYjIxVHMzOTk0NXlaU2czVm5aRk5ROUNGM1hlWnlyNURnQlhLaXdDTWEyTXhlVERZWGdQMUZzZjlRTktaYzBrODFSSmszcjZFUTNyQ21CVnlMTDc1RWpaMXBJVkRIb0Z0aU9BSG9CMEJkVFZ5bHFCc0tLS1MrQWVCWEpWTFkrQ1hBU3VHdk8vQXVxN0d1RWpEZkdLZzFvS2Exei9kbW1pOUk5U1VHTmhsMEF0ZnVsSEFhd29Zcm5Ta21OWEFWdUdFaHJFVlh2VUYrQTVDdDJQcU5PakRldHluYTRDbWVVb2xtZVhMTjRBcTdDNVNqMTBRN3lqZ2wrdDZDTnhTUkhtSTVYK0Nwd3JlWUIzUWZkcW5hNHEyMUtkQnVjNEdvWnNuNDlaT09pVmlud0hxSzlXemp2Z2V3ZUVoMkFVNSt2dHhaOUNkOVdxa2g0OVYxOEU1b2o2dlZ5bjBSU3RBeUdJTzVlZFhSS2Q1QjBWR1ZYcTJ5cjN4WXArNVV0K0M0UUo0UDFOMzM5cFFNalJlamo0dmIvRGNyNnJRYzNPLzByam10WnBlWUNCaUNIZkNlbVJiTmhiSy9wTlVQYzN3Zkt5NWYyRDdPbEwzL3VQaHZlL29VNFQwRjhmK1ZOTTJ2eW9pdjBqSytLSFFmZEhxKzBibmN6NG96NzMvK1k2TGJLdzFvLzVCN2VPZjFSbC8wZHU5Qjl0bi85YnZyZi9qK3YwaDZ0dG4ydHAvci80ODE5eTQvenY1MzkxdXZ6emZ3RGlmejZwaFQxTVBnQUFBQUJKUlU1RXJrSmdnZz09Iik7YmFja2dyb3VuZC1zaXplOjEwMCUgMTAwJTtib3JkZXI6bm9uZTtjdXJzb3I6cG9pbnRlcjtkaXJlY3Rpb246bHRyO2hlaWdodDoxMzBweDt0b3VjaC1hY3Rpb246bWFuaXB1bGF0aW9uO3dpZHRoOjEwMCV9LmNvbG9yLXBpY2tlciAuY3AtYWRkLWNvbG9yLWJ1dHRvbi1jbGFzc3tiYWNrZ3JvdW5kOnRyYW5zcGFyZW50O2JvcmRlcjowO2N1cnNvcjpwb2ludGVyO2Rpc3BsYXk6aW5saW5lO21hcmdpbjozcHggLTNweDtwYWRkaW5nOjA7cG9zaXRpb246YWJzb2x1dGV9LmNvbG9yLXBpY2tlciAuY3AtYWRkLWNvbG9yLWJ1dHRvbi1jbGFzczpob3Zlcnt0ZXh0LWRlY29yYXRpb246dW5kZXJsaW5lfS5jb2xvci1waWNrZXIgLmNwLWFkZC1jb2xvci1idXR0b24tY2xhc3M6ZGlzYWJsZWR7Y29sb3I6Izk5OTtjdXJzb3I6bm90LWFsbG93ZWR9LmNvbG9yLXBpY2tlciAuY3AtYWRkLWNvbG9yLWJ1dHRvbi1jbGFzczpkaXNhYmxlZDpob3Zlcnt0ZXh0LWRlY29yYXRpb246bm9uZX0uY29sb3ItcGlja2VyIC5jcC1yZW1vdmUtY29sb3ItYnV0dG9uLWNsYXNze2JhY2tncm91bmQ6I2ZmZjtib3JkZXItcmFkaXVzOjUwJTtib3gtc2hhZG93OjFweCAxcHggNXB4ICMzMzM7Y3Vyc29yOnBvaW50ZXI7ZGlzcGxheTpibG9jaztoZWlnaHQ6MTBweDtwb3NpdGlvbjphYnNvbHV0ZTtyaWdodDotNXB4O3RleHQtYWxpZ246Y2VudGVyO3RvcDotNXB4O3dpZHRoOjEwcHh9LmNvbG9yLXBpY2tlciAuY3AtcmVtb3ZlLWNvbG9yLWJ1dHRvbi1jbGFzczpiZWZvcmV7Ym90dG9tOjMuNXB4O2NvbnRlbnQ6IngiO2Rpc3BsYXk6aW5saW5lLWJsb2NrO2ZvbnQtc2l6ZToxMHB4O3Bvc2l0aW9uOnJlbGF0aXZlfSddLGVuY2Fwc3VsYXRpb246Mn0pLEJKLmN0b3JQYXJhbWV0ZXJzPSgpPT5be3R5cGU6eHV9LHt0eXBlOlZtfSx7dHlwZTpISn1dLEJKLnByb3BEZWNvcmF0b3JzPXtkaWFsb2dFbGVtZW50Olt7dHlwZTpYZCxhcmdzOlsiZGlhbG9nUG9wdXAiLHtzdGF0aWM6ITB9XX1dLGh1ZVNsaWRlcjpbe3R5cGU6WGQsYXJnczpbImh1ZVNsaWRlciIse3N0YXRpYzohMH1dfV0sYWxwaGFTbGlkZXI6W3t0eXBlOlhkLGFyZ3M6WyJhbHBoYVNsaWRlciIse3N0YXRpYzohMH1dfV0saGFuZGxlRXNjOlt7dHlwZTpfXyxhcmdzOlsiZG9jdW1lbnQ6a2V5dXAuZXNjIixbIiRldmVudCJdXX1dLGhhbmRsZUVudGVyOlt7dHlwZTpfXyxhcmdzOlsiZG9jdW1lbnQ6a2V5dXAuZW50ZXIiLFsiJGV2ZW50Il1dfV19O2NsYXNzIFZKe2NvbnN0cnVjdG9yKHQsbixlLGEsbyxyKXt0aGlzLmluamVjdG9yPXQsdGhpcy5jZnI9bix0aGlzLmFwcFJlZj1lLHRoaXMudmNSZWY9YSx0aGlzLmVsUmVmPW8sdGhpcy5fc2VydmljZT1yLHRoaXMuZGlhbG9nQ3JlYXRlZD0hMSx0aGlzLmlnbm9yZUNoYW5nZXM9ITEsdGhpcy52aWV3QXR0YWNoZWRUb0FwcFJlZj0hMSx0aGlzLmNwV2lkdGg9IjIzMHB4Iix0aGlzLmNwSGVpZ2h0PSJhdXRvIix0aGlzLmNwVG9nZ2xlPSExLHRoaXMuY3BEaXNhYmxlZD0hMSx0aGlzLmNwSWdub3JlZEVsZW1lbnRzPVtdLHRoaXMuY3BGYWxsYmFja0NvbG9yPSIiLHRoaXMuY3BDb2xvck1vZGU9ImNvbG9yIix0aGlzLmNwQ215a0VuYWJsZWQ9ITEsdGhpcy5jcE91dHB1dEZvcm1hdD0iYXV0byIsdGhpcy5jcEFscGhhQ2hhbm5lbD0iZW5hYmxlZCIsdGhpcy5jcERpc2FibGVJbnB1dD0hMSx0aGlzLmNwRGlhbG9nRGlzcGxheT0icG9wdXAiLHRoaXMuY3BTYXZlQ2xpY2tPdXRzaWRlPSEwLHRoaXMuY3BDbG9zZUNsaWNrT3V0c2lkZT0hMCx0aGlzLmNwVXNlUm9vdFZpZXdDb250YWluZXI9ITEsdGhpcy5jcFBvc2l0aW9uPSJhdXRvIix0aGlzLmNwUG9zaXRpb25PZmZzZXQ9IjAlIix0aGlzLmNwUG9zaXRpb25SZWxhdGl2ZVRvQXJyb3c9ITEsdGhpcy5jcE9LQnV0dG9uPSExLHRoaXMuY3BPS0J1dHRvblRleHQ9Ik9LIix0aGlzLmNwT0tCdXR0b25DbGFzcz0iY3Atb2stYnV0dG9uLWNsYXNzIix0aGlzLmNwQ2FuY2VsQnV0dG9uPSExLHRoaXMuY3BDYW5jZWxCdXR0b25UZXh0PSJDYW5jZWwiLHRoaXMuY3BDYW5jZWxCdXR0b25DbGFzcz0iY3AtY2FuY2VsLWJ1dHRvbi1jbGFzcyIsdGhpcy5jcFByZXNldExhYmVsPSJQcmVzZXQgY29sb3JzIix0aGlzLmNwUHJlc2V0Q29sb3JzQ2xhc3M9ImNwLXByZXNldC1jb2xvcnMtY2xhc3MiLHRoaXMuY3BNYXhQcmVzZXRDb2xvcnNMZW5ndGg9Nix0aGlzLmNwUHJlc2V0RW1wdHlNZXNzYWdlPSJObyBjb2xvcnMgYWRkZWQiLHRoaXMuY3BQcmVzZXRFbXB0eU1lc3NhZ2VDbGFzcz0icHJlc2V0LWVtcHR5LW1lc3NhZ2UiLHRoaXMuY3BBZGRDb2xvckJ1dHRvbj0hMSx0aGlzLmNwQWRkQ29sb3JCdXR0b25UZXh0PSJBZGQgY29sb3IiLHRoaXMuY3BBZGRDb2xvckJ1dHRvbkNsYXNzPSJjcC1hZGQtY29sb3ItYnV0dG9uLWNsYXNzIix0aGlzLmNwUmVtb3ZlQ29sb3JCdXR0b25DbGFzcz0iY3AtcmVtb3ZlLWNvbG9yLWJ1dHRvbi1jbGFzcyIsdGhpcy5jcElucHV0Q2hhbmdlPW5ldyBFZighMCksdGhpcy5jcFRvZ2dsZUNoYW5nZT1uZXcgRWYoITApLHRoaXMuY3BTbGlkZXJDaGFuZ2U9bmV3IEVmKCEwKSx0aGlzLmNwU2xpZGVyRHJhZ0VuZD1uZXcgRWYoITApLHRoaXMuY3BTbGlkZXJEcmFnU3RhcnQ9bmV3IEVmKCEwKSx0aGlzLmNvbG9yUGlja2VyT3Blbj1uZXcgRWYoITApLHRoaXMuY29sb3JQaWNrZXJDbG9zZT1uZXcgRWYoITApLHRoaXMuY29sb3JQaWNrZXJDYW5jZWw9bmV3IEVmKCEwKSx0aGlzLmNvbG9yUGlja2VyU2VsZWN0PW5ldyBFZighMCksdGhpcy5jb2xvclBpY2tlckNoYW5nZT1uZXcgRWYoITEpLHRoaXMuY3BDbXlrQ29sb3JDaGFuZ2U9bmV3IEVmKCEwKSx0aGlzLmNwUHJlc2V0Q29sb3JzQ2hhbmdlPW5ldyBFZighMCl9aGFuZGxlQ2xpY2soKXt0aGlzLmlucHV0Rm9jdXMoKX1oYW5kbGVGb2N1cygpe3RoaXMuaW5wdXRGb2N1cygpfWhhbmRsZUlucHV0KHQpe3RoaXMuaW5wdXRDaGFuZ2UodCl9bmdPbkRlc3Ryb3koKXtudWxsIT10aGlzLmNtcFJlZiYmKHRoaXMudmlld0F0dGFjaGVkVG9BcHBSZWYmJnRoaXMuYXBwUmVmLmRldGFjaFZpZXcodGhpcy5jbXBSZWYuaG9zdFZpZXcpLHRoaXMuY21wUmVmLmRlc3Ryb3koKSx0aGlzLmNtcFJlZj1udWxsLHRoaXMuZGlhbG9nPW51bGwpfW5nT25DaGFuZ2VzKHQpe3QuY3BUb2dnbGUmJiF0aGlzLmNwRGlzYWJsZWQmJih0LmNwVG9nZ2xlLmN1cnJlbnRWYWx1ZT90aGlzLm9wZW5EaWFsb2coKTp0LmNwVG9nZ2xlLmN1cnJlbnRWYWx1ZXx8dGhpcy5jbG9zZURpYWxvZygpKSx0LmNvbG9yUGlja2VyJiYodGhpcy5kaWFsb2cmJiF0aGlzLmlnbm9yZUNoYW5nZXMmJigiaW5saW5lIj09PXRoaXMuY3BEaWFsb2dEaXNwbGF5JiZ0aGlzLmRpYWxvZy5zZXRJbml0aWFsQ29sb3IodC5jb2xvclBpY2tlci5jdXJyZW50VmFsdWUpLHRoaXMuZGlhbG9nLnNldENvbG9yRnJvbVN0cmluZyh0LmNvbG9yUGlja2VyLmN1cnJlbnRWYWx1ZSwhMSksdGhpcy5jcFVzZVJvb3RWaWV3Q29udGFpbmVyJiYiaW5saW5lIiE9PXRoaXMuY3BEaWFsb2dEaXNwbGF5JiZ0aGlzLmNtcFJlZi5jaGFuZ2VEZXRlY3RvclJlZi5kZXRlY3RDaGFuZ2VzKCkpLHRoaXMuaWdub3JlQ2hhbmdlcz0hMSksKHQuY3BQcmVzZXRMYWJlbHx8dC5jcFByZXNldENvbG9ycykmJnRoaXMuZGlhbG9nJiZ0aGlzLmRpYWxvZy5zZXRQcmVzZXRDb25maWcodGhpcy5jcFByZXNldExhYmVsLHRoaXMuY3BQcmVzZXRDb2xvcnMpfW9wZW5EaWFsb2coKXtpZih0aGlzLmRpYWxvZ0NyZWF0ZWQpdGhpcy5kaWFsb2cmJnRoaXMuZGlhbG9nLm9wZW5EaWFsb2codGhpcy5jb2xvclBpY2tlcik7ZWxzZXtsZXQgdD10aGlzLnZjUmVmO2lmKHRoaXMuZGlhbG9nQ3JlYXRlZD0hMCx0aGlzLnZpZXdBdHRhY2hlZFRvQXBwUmVmPSExLHRoaXMuY3BVc2VSb290Vmlld0NvbnRhaW5lciYmImlubGluZSIhPT10aGlzLmNwRGlhbG9nRGlzcGxheSl7Y29uc3Qgbj10aGlzLmluamVjdG9yLmdldCh0aGlzLmFwcFJlZi5jb21wb25lbnRUeXBlc1swXSx5ZC5OVUxMKTtuIT09eWQuTlVMTD8odD1uLnZjUmVmfHxuLnZpZXdDb250YWluZXJSZWZ8fHRoaXMudmNSZWYsdD09PXRoaXMudmNSZWYmJmNvbnNvbGUud2FybigiWW91IGFyZSB1c2luZyBjcFVzZVJvb3RWaWV3Q29udGFpbmVyLCBidXQgdGhlIHJvb3QgY29tcG9uZW50IGlzIG5vdCBleHBvc2luZyB2aWV3Q29udGFpbmVyUmVmIVBsZWFzZSBleHBvc2UgaXQgYnkgYWRkaW5nICdwdWJsaWMgdmNSZWY6IFZpZXdDb250YWluZXJSZWYnIHRvIHRoZSBjb25zdHJ1Y3Rvci4iKSk6dGhpcy52aWV3QXR0YWNoZWRUb0FwcFJlZj0hMH1jb25zdCBuPXRoaXMuY2ZyLnJlc29sdmVDb21wb25lbnRGYWN0b3J5KEJKKTtpZih0aGlzLnZpZXdBdHRhY2hlZFRvQXBwUmVmKXRoaXMuY21wUmVmPW4uY3JlYXRlKHRoaXMuaW5qZWN0b3IpLHRoaXMuYXBwUmVmLmF0dGFjaFZpZXcodGhpcy5jbXBSZWYuaG9zdFZpZXcpLGRvY3VtZW50LmJvZHkuYXBwZW5kQ2hpbGQodGhpcy5jbXBSZWYuaG9zdFZpZXcucm9vdE5vZGVzWzBdKTtlbHNle2NvbnN0IGU9V2QuZnJvbVJlc29sdmVkUHJvdmlkZXJzKFtdLHQucGFyZW50SW5qZWN0b3IpO3RoaXMuY21wUmVmPXQuY3JlYXRlQ29tcG9uZW50KG4sMCxlLFtdKX10aGlzLmNtcFJlZi5pbnN0YW5jZS5zZXR1cERpYWxvZyh0aGlzLHRoaXMuZWxSZWYsdGhpcy5jb2xvclBpY2tlcix0aGlzLmNwV2lkdGgsdGhpcy5jcEhlaWdodCx0aGlzLmNwRGlhbG9nRGlzcGxheSx0aGlzLmNwRmFsbGJhY2tDb2xvcix0aGlzLmNwQ29sb3JNb2RlLHRoaXMuY3BDbXlrRW5hYmxlZCx0aGlzLmNwQWxwaGFDaGFubmVsLHRoaXMuY3BPdXRwdXRGb3JtYXQsdGhpcy5jcERpc2FibGVJbnB1dCx0aGlzLmNwSWdub3JlZEVsZW1lbnRzLHRoaXMuY3BTYXZlQ2xpY2tPdXRzaWRlLHRoaXMuY3BDbG9zZUNsaWNrT3V0c2lkZSx0aGlzLmNwVXNlUm9vdFZpZXdDb250YWluZXIsdGhpcy5jcFBvc2l0aW9uLHRoaXMuY3BQb3NpdGlvbk9mZnNldCx0aGlzLmNwUG9zaXRpb25SZWxhdGl2ZVRvQXJyb3csdGhpcy5jcFByZXNldExhYmVsLHRoaXMuY3BQcmVzZXRDb2xvcnMsdGhpcy5jcFByZXNldENvbG9yc0NsYXNzLHRoaXMuY3BNYXhQcmVzZXRDb2xvcnNMZW5ndGgsdGhpcy5jcFByZXNldEVtcHR5TWVzc2FnZSx0aGlzLmNwUHJlc2V0RW1wdHlNZXNzYWdlQ2xhc3MsdGhpcy5jcE9LQnV0dG9uLHRoaXMuY3BPS0J1dHRvbkNsYXNzLHRoaXMuY3BPS0J1dHRvblRleHQsdGhpcy5jcENhbmNlbEJ1dHRvbix0aGlzLmNwQ2FuY2VsQnV0dG9uQ2xhc3MsdGhpcy5jcENhbmNlbEJ1dHRvblRleHQsdGhpcy5jcEFkZENvbG9yQnV0dG9uLHRoaXMuY3BBZGRDb2xvckJ1dHRvbkNsYXNzLHRoaXMuY3BBZGRDb2xvckJ1dHRvblRleHQsdGhpcy5jcFJlbW92ZUNvbG9yQnV0dG9uQ2xhc3MpLHRoaXMuZGlhbG9nPXRoaXMuY21wUmVmLmluc3RhbmNlLHRoaXMudmNSZWYhPT10JiZ0aGlzLmNtcFJlZi5jaGFuZ2VEZXRlY3RvclJlZi5kZXRlY3RDaGFuZ2VzKCl9fWNsb3NlRGlhbG9nKCl7dGhpcy5kaWFsb2cmJiJwb3B1cCI9PT10aGlzLmNwRGlhbG9nRGlzcGxheSYmdGhpcy5kaWFsb2cuY2xvc2VEaWFsb2coKX1jbXlrQ2hhbmdlZCh0KXt0aGlzLmNwQ215a0NvbG9yQ2hhbmdlLmVtaXQodCl9c3RhdGVDaGFuZ2VkKHQpe3RoaXMuY3BUb2dnbGVDaGFuZ2UuZW1pdCh0KSx0P3RoaXMuY29sb3JQaWNrZXJPcGVuLmVtaXQodGhpcy5jb2xvclBpY2tlcik6dGhpcy5jb2xvclBpY2tlckNsb3NlLmVtaXQodGhpcy5jb2xvclBpY2tlcil9Y29sb3JDaGFuZ2VkKHQsbj0hMCl7dGhpcy5pZ25vcmVDaGFuZ2VzPW4sdGhpcy5jb2xvclBpY2tlckNoYW5nZS5lbWl0KHQpfWNvbG9yU2VsZWN0ZWQodCl7dGhpcy5jb2xvclBpY2tlclNlbGVjdC5lbWl0KHQpfWNvbG9yQ2FuY2VsZWQoKXt0aGlzLmNvbG9yUGlja2VyQ2FuY2VsLmVtaXQoKX1pbnB1dEZvY3VzKCl7Y29uc3QgdD10aGlzLmVsUmVmLm5hdGl2ZUVsZW1lbnQsbj10aGlzLmNwSWdub3JlZEVsZW1lbnRzLmZpbHRlcigobj0+bj09PXQpKTt0aGlzLmNwRGlzYWJsZWR8fG4ubGVuZ3RofHwoInVuZGVmaW5lZCIhPXR5cGVvZiBkb2N1bWVudCYmdD09PWRvY3VtZW50LmFjdGl2ZUVsZW1lbnQ/dGhpcy5vcGVuRGlhbG9nKCk6dGhpcy5kaWFsb2cmJnRoaXMuZGlhbG9nLnNob3c/dGhpcy5jbG9zZURpYWxvZygpOnRoaXMub3BlbkRpYWxvZygpKX1pbnB1dENoYW5nZSh0KXt0aGlzLmRpYWxvZz90aGlzLmRpYWxvZy5zZXRDb2xvckZyb21TdHJpbmcodC50YXJnZXQudmFsdWUsITApOih0aGlzLmNvbG9yUGlja2VyPXQudGFyZ2V0LnZhbHVlLHRoaXMuY29sb3JQaWNrZXJDaGFuZ2UuZW1pdCh0aGlzLmNvbG9yUGlja2VyKSl9aW5wdXRDaGFuZ2VkKHQpe3RoaXMuY3BJbnB1dENoYW5nZS5lbWl0KHQpfXNsaWRlckNoYW5nZWQodCl7dGhpcy5jcFNsaWRlckNoYW5nZS5lbWl0KHQpfXNsaWRlckRyYWdFbmQodCl7dGhpcy5jcFNsaWRlckRyYWdFbmQuZW1pdCh0KX1zbGlkZXJEcmFnU3RhcnQodCl7dGhpcy5jcFNsaWRlckRyYWdTdGFydC5lbWl0KHQpfXByZXNldENvbG9yc0NoYW5nZWQodCl7dGhpcy5jcFByZXNldENvbG9yc0NoYW5nZS5lbWl0KHQpfX1WSi7JtWZhYz1mdW5jdGlvbiB0KG4pe3JldHVybiBuZXcobnx8VkopKFpnKHlkKSxaZyhQdSksWmcocEMpLFpnKCR1KSxaZyh4dSksWmcoSEopKX0sVkouybVkaXI9dm8oe3R5cGU6Vkosc2VsZWN0b3JzOltbIiIsImNvbG9yUGlja2VyIiwiIl1dLGhvc3RCaW5kaW5nczpmdW5jdGlvbiB0KG4sZSl7MSZuJiZjcCgiY2xpY2siLChmdW5jdGlvbiB0KCl7cmV0dXJuIGUuaGFuZGxlQ2xpY2soKX0pKSgiZm9jdXMiLChmdW5jdGlvbiB0KCl7cmV0dXJuIGUuaGFuZGxlRm9jdXMoKX0pKSgiaW5wdXQiLChmdW5jdGlvbiB0KG4pe3JldHVybiBlLmhhbmRsZUlucHV0KG4pfSkpfSxpbnB1dHM6e2NwV2lkdGg6ImNwV2lkdGgiLGNwSGVpZ2h0OiJjcEhlaWdodCIsY3BUb2dnbGU6ImNwVG9nZ2xlIixjcERpc2FibGVkOiJjcERpc2FibGVkIixjcElnbm9yZWRFbGVtZW50czoiY3BJZ25vcmVkRWxlbWVudHMiLGNwRmFsbGJhY2tDb2xvcjoiY3BGYWxsYmFja0NvbG9yIixjcENvbG9yTW9kZToiY3BDb2xvck1vZGUiLGNwQ215a0VuYWJsZWQ6ImNwQ215a0VuYWJsZWQiLGNwT3V0cHV0Rm9ybWF0OiJjcE91dHB1dEZvcm1hdCIsY3BBbHBoYUNoYW5uZWw6ImNwQWxwaGFDaGFubmVsIixjcERpc2FibGVJbnB1dDoiY3BEaXNhYmxlSW5wdXQiLGNwRGlhbG9nRGlzcGxheToiY3BEaWFsb2dEaXNwbGF5IixjcFNhdmVDbGlja091dHNpZGU6ImNwU2F2ZUNsaWNrT3V0c2lkZSIsY3BDbG9zZUNsaWNrT3V0c2lkZToiY3BDbG9zZUNsaWNrT3V0c2lkZSIsY3BVc2VSb290Vmlld0NvbnRhaW5lcjoiY3BVc2VSb290Vmlld0NvbnRhaW5lciIsY3BQb3NpdGlvbjoiY3BQb3NpdGlvbiIsY3BQb3NpdGlvbk9mZnNldDoiY3BQb3NpdGlvbk9mZnNldCIsY3BQb3NpdGlvblJlbGF0aXZlVG9BcnJvdzoiY3BQb3NpdGlvblJlbGF0aXZlVG9BcnJvdyIsY3BPS0J1dHRvbjoiY3BPS0J1dHRvbiIsY3BPS0J1dHRvblRleHQ6ImNwT0tCdXR0b25UZXh0IixjcE9LQnV0dG9uQ2xhc3M6ImNwT0tCdXR0b25DbGFzcyIsY3BDYW5jZWxCdXR0b246ImNwQ2FuY2VsQnV0dG9uIixjcENhbmNlbEJ1dHRvblRleHQ6ImNwQ2FuY2VsQnV0dG9uVGV4dCIsY3BDYW5jZWxCdXR0b25DbGFzczoiY3BDYW5jZWxCdXR0b25DbGFzcyIsY3BQcmVzZXRMYWJlbDoiY3BQcmVzZXRMYWJlbCIsY3BQcmVzZXRDb2xvcnNDbGFzczoiY3BQcmVzZXRDb2xvcnNDbGFzcyIsY3BNYXhQcmVzZXRDb2xvcnNMZW5ndGg6ImNwTWF4UHJlc2V0Q29sb3JzTGVuZ3RoIixjcFByZXNldEVtcHR5TWVzc2FnZToiY3BQcmVzZXRFbXB0eU1lc3NhZ2UiLGNwUHJlc2V0RW1wdHlNZXNzYWdlQ2xhc3M6ImNwUHJlc2V0RW1wdHlNZXNzYWdlQ2xhc3MiLGNwQWRkQ29sb3JCdXR0b246ImNwQWRkQ29sb3JCdXR0b24iLGNwQWRkQ29sb3JCdXR0b25UZXh0OiJjcEFkZENvbG9yQnV0dG9uVGV4dCIsY3BBZGRDb2xvckJ1dHRvbkNsYXNzOiJjcEFkZENvbG9yQnV0dG9uQ2xhc3MiLGNwUmVtb3ZlQ29sb3JCdXR0b25DbGFzczoiY3BSZW1vdmVDb2xvckJ1dHRvbkNsYXNzIixjb2xvclBpY2tlcjoiY29sb3JQaWNrZXIiLGNwUHJlc2V0Q29sb3JzOiJjcFByZXNldENvbG9ycyJ9LG91dHB1dHM6e2NwSW5wdXRDaGFuZ2U6ImNwSW5wdXRDaGFuZ2UiLGNwVG9nZ2xlQ2hhbmdlOiJjcFRvZ2dsZUNoYW5nZSIsY3BTbGlkZXJDaGFuZ2U6ImNwU2xpZGVyQ2hhbmdlIixjcFNsaWRlckRyYWdFbmQ6ImNwU2xpZGVyRHJhZ0VuZCIsY3BTbGlkZXJEcmFnU3RhcnQ6ImNwU2xpZGVyRHJhZ1N0YXJ0Iixjb2xvclBpY2tlck9wZW46ImNvbG9yUGlja2VyT3BlbiIsY29sb3JQaWNrZXJDbG9zZToiY29sb3JQaWNrZXJDbG9zZSIsY29sb3JQaWNrZXJDYW5jZWw6ImNvbG9yUGlja2VyQ2FuY2VsIixjb2xvclBpY2tlclNlbGVjdDoiY29sb3JQaWNrZXJTZWxlY3QiLGNvbG9yUGlja2VyQ2hhbmdlOiJjb2xvclBpY2tlckNoYW5nZSIsY3BDbXlrQ29sb3JDaGFuZ2U6ImNwQ215a0NvbG9yQ2hhbmdlIixjcFByZXNldENvbG9yc0NoYW5nZToiY3BQcmVzZXRDb2xvcnNDaGFuZ2UifSxleHBvcnRBczpbIm5neENvbG9yUGlja2VyIl0sZmVhdHVyZXM6W3ByXX0pLFZKLmN0b3JQYXJhbWV0ZXJzPSgpPT5be3R5cGU6eWR9LHt0eXBlOlB1fSx7dHlwZTpwQ30se3R5cGU6JHV9LHt0eXBlOnh1fSx7dHlwZTpISn1dLFZKLnByb3BEZWNvcmF0b3JzPXtjb2xvclBpY2tlcjpbe3R5cGU6Zl99XSxjcFdpZHRoOlt7dHlwZTpmX31dLGNwSGVpZ2h0Olt7dHlwZTpmX31dLGNwVG9nZ2xlOlt7dHlwZTpmX31dLGNwRGlzYWJsZWQ6W3t0eXBlOmZffV0sY3BJZ25vcmVkRWxlbWVudHM6W3t0eXBlOmZffV0sY3BGYWxsYmFja0NvbG9yOlt7dHlwZTpmX31dLGNwQ29sb3JNb2RlOlt7dHlwZTpmX31dLGNwQ215a0VuYWJsZWQ6W3t0eXBlOmZffV0sY3BPdXRwdXRGb3JtYXQ6W3t0eXBlOmZffV0sY3BBbHBoYUNoYW5uZWw6W3t0eXBlOmZffV0sY3BEaXNhYmxlSW5wdXQ6W3t0eXBlOmZffV0sY3BEaWFsb2dEaXNwbGF5Olt7dHlwZTpmX31dLGNwU2F2ZUNsaWNrT3V0c2lkZTpbe3R5cGU6Zl99XSxjcENsb3NlQ2xpY2tPdXRzaWRlOlt7dHlwZTpmX31dLGNwVXNlUm9vdFZpZXdDb250YWluZXI6W3t0eXBlOmZffV0sY3BQb3NpdGlvbjpbe3R5cGU6Zl99XSxjcFBvc2l0aW9uT2Zmc2V0Olt7dHlwZTpmX31dLGNwUG9zaXRpb25SZWxhdGl2ZVRvQXJyb3c6W3t0eXBlOmZffV0sY3BPS0J1dHRvbjpbe3R5cGU6Zl99XSxjcE9LQnV0dG9uVGV4dDpbe3R5cGU6Zl99XSxjcE9LQnV0dG9uQ2xhc3M6W3t0eXBlOmZffV0sY3BDYW5jZWxCdXR0b246W3t0eXBlOmZffV0sY3BDYW5jZWxCdXR0b25UZXh0Olt7dHlwZTpmX31dLGNwQ2FuY2VsQnV0dG9uQ2xhc3M6W3t0eXBlOmZffV0sY3BQcmVzZXRMYWJlbDpbe3R5cGU6Zl99XSxjcFByZXNldENvbG9yczpbe3R5cGU6Zl99XSxjcFByZXNldENvbG9yc0NsYXNzOlt7dHlwZTpmX31dLGNwTWF4UHJlc2V0Q29sb3JzTGVuZ3RoOlt7dHlwZTpmX31dLGNwUHJlc2V0RW1wdHlNZXNzYWdlOlt7dHlwZTpmX31dLGNwUHJlc2V0RW1wdHlNZXNzYWdlQ2xhc3M6W3t0eXBlOmZffV0sY3BBZGRDb2xvckJ1dHRvbjpbe3R5cGU6Zl99XSxjcEFkZENvbG9yQnV0dG9uVGV4dDpbe3R5cGU6Zl99XSxjcEFkZENvbG9yQnV0dG9uQ2xhc3M6W3t0eXBlOmZffV0sY3BSZW1vdmVDb2xvckJ1dHRvbkNsYXNzOlt7dHlwZTpmX31dLGNwSW5wdXRDaGFuZ2U6W3t0eXBlOmhffV0sY3BUb2dnbGVDaGFuZ2U6W3t0eXBlOmhffV0sY3BTbGlkZXJDaGFuZ2U6W3t0eXBlOmhffV0sY3BTbGlkZXJEcmFnRW5kOlt7dHlwZTpoX31dLGNwU2xpZGVyRHJhZ1N0YXJ0Olt7dHlwZTpoX31dLGNvbG9yUGlja2VyT3Blbjpbe3R5cGU6aF99XSxjb2xvclBpY2tlckNsb3NlOlt7dHlwZTpoX31dLGNvbG9yUGlja2VyQ2FuY2VsOlt7dHlwZTpoX31dLGNvbG9yUGlja2VyU2VsZWN0Olt7dHlwZTpoX31dLGNvbG9yUGlja2VyQ2hhbmdlOlt7dHlwZTpoX31dLGNwQ215a0NvbG9yQ2hhbmdlOlt7dHlwZTpoX31dLGNwUHJlc2V0Q29sb3JzQ2hhbmdlOlt7dHlwZTpoX31dLGhhbmRsZUNsaWNrOlt7dHlwZTpfXyxhcmdzOlsiY2xpY2siXX1dLGhhbmRsZUZvY3VzOlt7dHlwZTpfXyxhcmdzOlsiZm9jdXMiXX1dLGhhbmRsZUlucHV0Olt7dHlwZTpfXyxhcmdzOlsiaW5wdXQiLFsiJGV2ZW50Il1dfV19O2NsYXNzIGpKe31qSi7JtW1vZD14byh7dHlwZTpqSn0pLGpKLsm1aW5qPUdlKHtmYWN0b3J5OmZ1bmN0aW9uIHQobil7cmV0dXJuIG5ldyhufHxqSil9LHByb3ZpZGVyczpbSEpdLGltcG9ydHM6W1tQT11dfSksKCJ1bmRlZmluZWQiPT10eXBlb2YgbmdKaXRNb2RlfHxuZ0ppdE1vZGUpJiZ5byhqSix7ZGVjbGFyYXRpb25zOmZ1bmN0aW9uKCl7cmV0dXJuW0JKLFZKLElKLE5KXX0saW1wb3J0czpmdW5jdGlvbigpe3JldHVybltQT119LGV4cG9ydHM6ZnVuY3Rpb24oKXtyZXR1cm5bVkpdfX0pO2NvbnN0IFVKPVsiY29udGFpbmVyIl07dmFyIFdKLEdKLFlKLHFKLFpKOyEoZnVuY3Rpb24odCl7dFt0Lk5PTkU9MF09Ik5PTkUiLHRbdC5MRUZUPTFdPSJMRUZUIix0W3QuUklHSFQ9Ml09IlJJR0hUIn0pKFdKfHwoV0o9e30pKTtjbGFzcyBYSntjb25zdHJ1Y3Rvcih0KXt0aGlzLmNoYW5nZURldGVjdG9yPXQsdGhpcy50aWNrQ291bnQ9MjAsdGhpcy52YWx1ZT1uZXcgRWYsdGhpcy5Qb3NpdGlvbj1XSix0aGlzLmFjdGl2ZVRodW1iPVdKLk5PTkUsdGhpcy5vZmZzZXRYRnJvbU9yaWdpbk9mQWN0aXZlVGh1bWI9MCx0aGlzLm5nVW5zdWJzY3JpYmU9bmV3IHh9Z2V0VGh1bWJQb3NpdGlvbih0KXtjb25zdCBuPXRoaXMuZ2V0Q2xpcHBlZFZhbHVlKHQpLGU9dGhpcy5tYXgtdGhpcy5taW47cmV0dXJuIGU8PTA/IjUwJSI6KG4tdGhpcy5taW4pL2UqMTAwKyIlIn1nZXRUcmFja1dpZHRoKCl7Y29uc3QgdD10aGlzLm1heC10aGlzLm1pbjtyZXR1cm4gdDw9MD8iMCUiOih0aGlzLmdldENsaXBwZWRWYWx1ZSh0aGlzLnVwcGVyVmFsdWUpLXRoaXMuZ2V0Q2xpcHBlZFZhbHVlKHRoaXMubG93ZXJWYWx1ZSkpL3QqMTAwKyIlIn1nZXRDbGlwcGVkVmFsdWUodCl7cmV0dXJuIE1hdGgubWluKE1hdGgubWF4KHQsdGhpcy5taW4pLHRoaXMubWF4KX1uZ09uRGVzdHJveSgpe3RoaXMubmdVbnN1YnNjcmliZS5uZXh0KCksdGhpcy5uZ1Vuc3Vic2NyaWJlLmNvbXBsZXRlKCl9bmdPbkluaXQoKXtWdChkb2N1bWVudCwibW91c2Vtb3ZlIix7cGFzc2l2ZTohMH0pLnBpcGUoZGUodGhpcy5uZ1Vuc3Vic2NyaWJlKSkuc3Vic2NyaWJlKCh0PT57dGhpcy5oYW5kbGVNb3VzZU1vdmUodCl9KSksVnQoZG9jdW1lbnQsIm1vdXNldXAiLHtwYXNzaXZlOiEwfSkucGlwZShkZSh0aGlzLm5nVW5zdWJzY3JpYmUpKS5zdWJzY3JpYmUoKHQ9Pnt0aGlzLmhhbmRsZU1vdXNlT3V0KHQpfSkpfWhhbmRsZU1vdXNlRG93bih0LG4pe3RoaXMuYWN0aXZlVGh1bWI9bix0aGlzLm9mZnNldFhGcm9tT3JpZ2luT2ZBY3RpdmVUaHVtYj02LXQub2Zmc2V0WH1jYWxjdWxhdGVWYWx1ZUZyb21Nb3VzZUV2ZW50KHQpe2NvbnN0e2xlZnQ6bixyaWdodDplfT10aGlzLmNvbnRhaW5lci5uYXRpdmVFbGVtZW50LmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpLGE9dC5jbGllbnRYLW4rdGhpcy5vZmZzZXRYRnJvbU9yaWdpbk9mQWN0aXZlVGh1bWI7bGV0IG87aWYobnVsbCE9PXRoaXMudGlja0NvdW50JiZ0aGlzLnRpY2tDb3VudD4wKXtjb25zdCB0PShlLW4pL3RoaXMudGlja0NvdW50O289TWF0aC5yb3VuZChhL3QpKnQvKGUtbil9ZWxzZSBvPWEvKGUtbik7cmV0dXJuIHRoaXMuZ2V0Q2xpcHBlZFZhbHVlKHRoaXMubWluKyh0aGlzLm1heC10aGlzLm1pbikqbyl9aGFuZGxlTW91c2VNb3ZlKHQpe2lmKHRoaXMuYWN0aXZlVGh1bWI9PT1XSi5OT05FKXJldHVybjtjb25zdCBuPXRoaXMuY2FsY3VsYXRlVmFsdWVGcm9tTW91c2VFdmVudCh0KTtsZXQgZT1bdGhpcy5sb3dlclZhbHVlLHRoaXMudXBwZXJWYWx1ZV07dGhpcy5hY3RpdmVUaHVtYj09PVdKLkxFRlQ/KG4+dGhpcy51cHBlclZhbHVlJiYodGhpcy5hY3RpdmVUaHVtYj1XSi5SSUdIVCksZT1bbix0aGlzLnVwcGVyVmFsdWVdKToobjx0aGlzLmxvd2VyVmFsdWUmJih0aGlzLmFjdGl2ZVRodW1iPVdKLkxFRlQpLGU9W3RoaXMubG93ZXJWYWx1ZSxuXSksdGhpcy5tYXliZU5vdGlmeU5leHRWYWx1ZShlKSx0aGlzLmNoYW5nZURldGVjdG9yLm1hcmtGb3JDaGVjaygpfW1heWJlTm90aWZ5TmV4dFZhbHVlKHQpe2NvbnN0W24sZV09dC5zb3J0KCgodCxuKT0+dC1uKSk7dGhpcy5sb3dlclZhbHVlPT09biYmdGhpcy51cHBlclZhbHVlPT09ZXx8dGhpcy52YWx1ZS5lbWl0KHtsb3dlclZhbHVlOm4sdXBwZXJWYWx1ZTplfSl9aGFuZGxlTW91c2VPdXQodCl7dGhpcy5hY3RpdmVUaHVtYiE9PVdKLk5PTkUmJih0aGlzLmFjdGl2ZVRodW1iPVdKLk5PTkUsdGhpcy5jaGFuZ2VEZXRlY3Rvci5tYXJrRm9yQ2hlY2soKSl9aGFuZGxlSW5wdXRDaGFuZ2UodCxuKXtjb25zdCBlPXRoaXMuZ2V0Q2xpcHBlZFZhbHVlKE51bWJlcih0LnRhcmdldC52YWx1ZSkpO2lmKGlzTmFOKGUpKXJldHVybjtsZXQgYT1bdGhpcy5sb3dlclZhbHVlLHRoaXMudXBwZXJWYWx1ZV07YT1uPT09V0ouTEVGVD9bZSx0aGlzLnVwcGVyVmFsdWVdOlt0aGlzLmxvd2VyVmFsdWUsZV0sdGhpcy5tYXliZU5vdGlmeU5leHRWYWx1ZShhKX1pc1RodW1iQWN0aXZlKHQpe3JldHVybiB0aGlzLmFjdGl2ZVRodW1iPT09dH19WEouybVmYWM9ZnVuY3Rpb24gdChuKXtyZXR1cm4gbmV3KG58fFhKKShaZyhWbSkpfSxYSi7JtWNtcD1fbyh7dHlwZTpYSixzZWxlY3RvcnM6W1sidGItcmFuZ2UtaW5wdXQiXV0sdmlld1F1ZXJ5OmZ1bmN0aW9uIHQobixlKXt2YXIgYTsxJm4mJmpmKFVKLCEwLHh1KSwyJm4mJlZmKGE9WmYoKSkmJihlLmNvbnRhaW5lcj1hLmZpcnN0KX0saW5wdXRzOnttaW46Im1pbiIsbWF4OiJtYXgiLGxvd2VyVmFsdWU6Imxvd2VyVmFsdWUiLHVwcGVyVmFsdWU6InVwcGVyVmFsdWUiLHRpY2tDb3VudDoidGlja0NvdW50In0sb3V0cHV0czp7dmFsdWU6InZhbHVlIn0sZGVjbHM6OCx2YXJzOjE0LGNvbnN0czpbWyJ0eXBlIiwibnVtYmVyIiwxLCJsb3dlci1pbnB1dCIsMywidmFsdWUiLCJjaGFuZ2UiXSxbInR5cGUiLCJudW1iZXIiLDEsInVwcGVyLWlucHV0IiwzLCJ2YWx1ZSIsImNoYW5nZSJdLFsxLCJjb250YWluZXIiXSxbImNvbnRhaW5lciIsIiJdLFsxLCJzbGlkZXItdHJhY2siXSxbMSwic2xpZGVyLXRyYWNrLWZpbGwiXSxbMSwidGh1bWIiLDMsIm1vdXNlZG93biJdXSx0ZW1wbGF0ZTpmdW5jdGlvbiB0KG4sZSl7MSZuJiYoS2coMCwiaW5wdXQiLDApLGNwKCJjaGFuZ2UiLChmdW5jdGlvbiB0KG4pe3JldHVybiBlLmhhbmRsZUlucHV0Q2hhbmdlKG4sZS5Qb3NpdGlvbi5MRUZUKX0pKSwkZygpLEtnKDEsImlucHV0IiwxKSxjcCgiY2hhbmdlIiwoZnVuY3Rpb24gdChuKXtyZXR1cm4gZS5oYW5kbGVJbnB1dENoYW5nZShuLGUuUG9zaXRpb24uUklHSFQpfSkpLCRnKCksS2coMiwic3BhbiIsMiwzKSx0cCg0LCJzcGFuIiw0KSx0cCg1LCJzcGFuIiw1KSxLZyg2LCJzcGFuIiw2KSxjcCgibW91c2Vkb3duIiwoZnVuY3Rpb24gdChuKXtyZXR1cm4gZS5oYW5kbGVNb3VzZURvd24obixlLlBvc2l0aW9uLkxFRlQpfSkpLCRnKCksS2coNywic3BhbiIsNiksY3AoIm1vdXNlZG93biIsKGZ1bmN0aW9uIHQobil7cmV0dXJuIGUuaGFuZGxlTW91c2VEb3duKG4sZS5Qb3NpdGlvbi5SSUdIVCl9KSksJGcoKSwkZygpKSwyJm4mJihKZygidmFsdWUiLGUubG93ZXJWYWx1ZSksd3MoMSksSmcoInZhbHVlIixlLnVwcGVyVmFsdWUpLHdzKDQpLFRwKCJsZWZ0IixlLmdldFRodW1iUG9zaXRpb24oZS5sb3dlclZhbHVlKSkoIndpZHRoIixlLmdldFRyYWNrV2lkdGgoKSksd3MoMSksVHAoImxlZnQiLGUuZ2V0VGh1bWJQb3NpdGlvbihlLmxvd2VyVmFsdWUpKSxEcCgiYWN0aXZlIixlLmlzVGh1bWJBY3RpdmUoZS5Qb3NpdGlvbi5MRUZUKSksd3MoMSksVHAoImxlZnQiLGUuZ2V0VGh1bWJQb3NpdGlvbihlLnVwcGVyVmFsdWUpKSxEcCgiYWN0aXZlIixlLmlzVGh1bWJBY3RpdmUoZS5Qb3NpdGlvbi5SSUdIVCkpKX0sc3R5bGVzOlsnLm1hdC1iYWRnZS1jb250ZW50W19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXdlaWdodDo2MDA7Zm9udC1zaXplOjEycHg7Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmfS5tYXQtYmFkZ2Utc21hbGxbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1iYWRnZS1jb250ZW50W19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6OXB4fS5tYXQtYmFkZ2UtbGFyZ2VbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1iYWRnZS1jb250ZW50W19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MjRweH0ubWF0LWgxW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1oZWFkbGluZVtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdHlwb2dyYXBoeVtfbmdjb250ZW50LSVDT01QJV0gICBoMVtfbmdjb250ZW50LSVDT01QJV17Zm9udDo0MDAgMjRweC8zMnB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtsZXR0ZXItc3BhY2luZzpub3JtYWw7bWFyZ2luOjAgMCAxNnB4fS5tYXQtaDJbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXRpdGxlW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10eXBvZ3JhcGh5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIGgyW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250OjUwMCAyMHB4LzMycHggUm9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2xldHRlci1zcGFjaW5nOm5vcm1hbDttYXJnaW46MCAwIDE2cHh9Lm1hdC1oM1tfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtc3ViaGVhZGluZy0yW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10eXBvZ3JhcGh5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIGgzW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250OjQwMCAxNnB4LzI4cHggUm9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2xldHRlci1zcGFjaW5nOm5vcm1hbDttYXJnaW46MCAwIDE2cHh9Lm1hdC1oNFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtc3ViaGVhZGluZy0xW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10eXBvZ3JhcGh5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIGg0W19uZ2NvbnRlbnQtJUNPTVAlXXtmb250OjQwMCAxNXB4LzI0cHggUm9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2xldHRlci1zcGFjaW5nOm5vcm1hbDttYXJnaW46MCAwIDE2cHh9Lm1hdC1oNVtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdHlwb2dyYXBoeVtfbmdjb250ZW50LSVDT01QJV0gICBoNVtfbmdjb250ZW50LSVDT01QJV17Zm9udDo0MDAgY2FsYygxNHB4ICogMC44MykvMjBweCBSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7bWFyZ2luOjAgMCAxMnB4fS5tYXQtaDZbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXR5cG9ncmFwaHlbX25nY29udGVudC0lQ09NUCVdICAgaDZbX25nY29udGVudC0lQ09NUCVde2ZvbnQ6NDAwIGNhbGMoMTRweCAqIDAuNjcpLzIwcHggUm9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO21hcmdpbjowIDAgMTJweH0ubWF0LWJvZHktc3Ryb25nW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1ib2R5LTJbX25nY29udGVudC0lQ09NUCVde2ZvbnQ6NTAwIDE0cHgvMjRweCBSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7bGV0dGVyLXNwYWNpbmc6bm9ybWFsfS5tYXQtYm9keVtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtYm9keS0xW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10eXBvZ3JhcGh5W19uZ2NvbnRlbnQtJUNPTVAlXXtmb250OjQwMCAxNHB4LzIwcHggUm9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2xldHRlci1zcGFjaW5nOm5vcm1hbH0ubWF0LWJvZHlbX25nY29udGVudC0lQ09NUCVdICAgcFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtYm9keS0xW19uZ2NvbnRlbnQtJUNPTVAlXSAgIHBbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXR5cG9ncmFwaHlbX25nY29udGVudC0lQ09NUCVdICAgcFtfbmdjb250ZW50LSVDT01QJV17bWFyZ2luOjAgMCAxMnB4fS5tYXQtc21hbGxbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWNhcHRpb25bX25nY29udGVudC0lQ09NUCVde2ZvbnQ6NDAwIDEycHgvMjBweCBSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7bGV0dGVyLXNwYWNpbmc6bm9ybWFsfS5tYXQtZGlzcGxheS00W19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10eXBvZ3JhcGh5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZGlzcGxheS00W19uZ2NvbnRlbnQtJUNPTVAlXXtmb250OjMwMCAxMTJweC8xMTJweCBSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7bGV0dGVyLXNwYWNpbmc6LTAuMDVlbTttYXJnaW46MCAwIDU2cHh9Lm1hdC1kaXNwbGF5LTNbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXR5cG9ncmFwaHlbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1kaXNwbGF5LTNbX25nY29udGVudC0lQ09NUCVde2ZvbnQ6NDAwIDU2cHgvNTZweCBSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7bGV0dGVyLXNwYWNpbmc6LTAuMDJlbTttYXJnaW46MCAwIDY0cHh9Lm1hdC1kaXNwbGF5LTJbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXR5cG9ncmFwaHlbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1kaXNwbGF5LTJbX25nY29udGVudC0lQ09NUCVde2ZvbnQ6NDAwIDQ1cHgvNDhweCBSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7bGV0dGVyLXNwYWNpbmc6LTAuMDA1ZW07bWFyZ2luOjAgMCA2NHB4fS5tYXQtZGlzcGxheS0xW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10eXBvZ3JhcGh5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZGlzcGxheS0xW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250OjQwMCAzNHB4LzQwcHggUm9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2xldHRlci1zcGFjaW5nOm5vcm1hbDttYXJnaW46MCAwIDY0cHh9Lm1hdC1ib3R0b20tc2hlZXQtY29udGFpbmVyW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250OjQwMCAxNHB4LzIwcHggUm9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2xldHRlci1zcGFjaW5nOm5vcm1hbH0ubWF0LWJ1dHRvbltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtcmFpc2VkLWJ1dHRvbltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtaWNvbi1idXR0b25bX25nY29udGVudC0lQ09NUCVdLCAubWF0LXN0cm9rZWQtYnV0dG9uW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1mbGF0LWJ1dHRvbltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtZmFiW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1taW5pLWZhYltfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2ZvbnQtc2l6ZToxNHB4O2ZvbnQtd2VpZ2h0OjUwMH0ubWF0LWJ1dHRvbi10b2dnbGVbX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZn0ubWF0LWNhcmRbX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZn0ubWF0LWNhcmQtdGl0bGVbX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToyNHB4O2ZvbnQtd2VpZ2h0OjUwMH0ubWF0LWNhcmQtaGVhZGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtY2FyZC10aXRsZVtfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjIwcHh9Lm1hdC1jYXJkLXN1YnRpdGxlW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1jYXJkLWNvbnRlbnRbX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToxNHB4fS5tYXQtY2hlY2tib3hbX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZn0ubWF0LWNoZWNrYm94LWxheW91dFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWNoZWNrYm94LWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXtsaW5lLWhlaWdodDoyNHB4fS5tYXQtY2hpcFtfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjE0cHg7Zm9udC13ZWlnaHQ6NTAwfS5tYXQtY2hpcFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWNoaXAtdHJhaWxpbmctaWNvbi5tYXQtaWNvbltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtY2hpcFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWNoaXAtcmVtb3ZlLm1hdC1pY29uW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MThweH0ubWF0LXRhYmxlW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWZ9Lm1hdC1oZWFkZXItY2VsbFtfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjEycHg7Zm9udC13ZWlnaHQ6NTAwfS5tYXQtY2VsbFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtZm9vdGVyLWNlbGxbX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToxNHB4fS5tYXQtY2FsZW5kYXJbX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZn0ubWF0LWNhbGVuZGFyLWJvZHlbX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToxM3B4fS5tYXQtY2FsZW5kYXItYm9keS1sYWJlbFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtY2FsZW5kYXItcGVyaW9kLWJ1dHRvbltfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjE0cHg7Zm9udC13ZWlnaHQ6NTAwfS5tYXQtY2FsZW5kYXItdGFibGUtaGVhZGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIHRoW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MTFweDtmb250LXdlaWdodDo0MDB9Lm1hdC1kaWFsb2ctdGl0bGVbX25nY29udGVudC0lQ09NUCVde2ZvbnQ6NTAwIDIwcHgvMzJweCBSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7bGV0dGVyLXNwYWNpbmc6bm9ybWFsfS5tYXQtZXhwYW5zaW9uLXBhbmVsLWhlYWRlcltfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2ZvbnQtc2l6ZToxNXB4O2ZvbnQtd2VpZ2h0OjQwMH0ubWF0LWV4cGFuc2lvbi1wYW5lbC1jb250ZW50W19uZ2NvbnRlbnQtJUNPTVAlXXtmb250OjQwMCAxNHB4LzIwcHggUm9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2xldHRlci1zcGFjaW5nOm5vcm1hbH0ubWF0LWZvcm0tZmllbGRbX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZTppbmhlcml0O2ZvbnQtd2VpZ2h0OjQwMDtsaW5lLWhlaWdodDoxLjEyNTtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7bGV0dGVyLXNwYWNpbmc6bm9ybWFsfS5tYXQtZm9ybS1maWVsZC13cmFwcGVyW19uZ2NvbnRlbnQtJUNPTVAlXXtwYWRkaW5nLWJvdHRvbToxLjM0Mzc1ZW19Lm1hdC1mb3JtLWZpZWxkLXByZWZpeFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWljb25bX25nY29udGVudC0lQ09NUCVdLCAubWF0LWZvcm0tZmllbGQtc3VmZml4W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaWNvbltfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjE1MCU7bGluZS1oZWlnaHQ6MS4xMjV9Lm1hdC1mb3JtLWZpZWxkLXByZWZpeFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWljb24tYnV0dG9uW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1mb3JtLWZpZWxkLXN1ZmZpeFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWljb24tYnV0dG9uW19uZ2NvbnRlbnQtJUNPTVAlXXtoZWlnaHQ6MS41ZW07d2lkdGg6MS41ZW19Lm1hdC1mb3JtLWZpZWxkLXByZWZpeFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWljb24tYnV0dG9uW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaWNvbltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtZm9ybS1maWVsZC1zdWZmaXhbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pY29uLWJ1dHRvbltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWljb25bX25nY29udGVudC0lQ09NUCVde2hlaWdodDoxLjEyNWVtO2xpbmUtaGVpZ2h0OjEuMTI1fS5tYXQtZm9ybS1maWVsZC1pbmZpeFtfbmdjb250ZW50LSVDT01QJV17cGFkZGluZzouNWVtIDA7Ym9yZGVyLXRvcDouODQzNzVlbSBzb2xpZCB0cmFuc3BhcmVudH0ubWF0LWZvcm0tZmllbGQtY2FuLWZsb2F0Lm1hdC1mb3JtLWZpZWxkLXNob3VsZC1mbG9hdFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWZvcm0tZmllbGQtY2FuLWZsb2F0W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaW5wdXQtc2VydmVyW19uZ2NvbnRlbnQtJUNPTVAlXTpmb2N1cyArIC5tYXQtZm9ybS1maWVsZC1sYWJlbC13cmFwcGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17dHJhbnNmb3JtOnRyYW5zbGF0ZVkoLTEuMzQzNzVlbSkgc2NhbGUoMC43NSk7d2lkdGg6MTMzLjMzMzMzMzMzMzMlfS5tYXQtZm9ybS1maWVsZC1jYW4tZmxvYXRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pbnB1dC1zZXJ2ZXJbbGFiZWxdW19uZ2NvbnRlbnQtJUNPTVAlXTpub3QoOmxhYmVsLXNob3duKSArIC5tYXQtZm9ybS1maWVsZC1sYWJlbC13cmFwcGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17dHJhbnNmb3JtOnRyYW5zbGF0ZVkoLTEuMzQzNzRlbSkgc2NhbGUoMC43NSk7d2lkdGg6MTMzLjMzMzM0MzMzMzMlfS5tYXQtZm9ybS1maWVsZC1sYWJlbC13cmFwcGVyW19uZ2NvbnRlbnQtJUNPTVAlXXt0b3A6LTAuODQzNzVlbTtwYWRkaW5nLXRvcDouODQzNzVlbX0ubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVde3RvcDoxLjM0Mzc1ZW19Lm1hdC1mb3JtLWZpZWxkLXVuZGVybGluZVtfbmdjb250ZW50LSVDT01QJV17Ym90dG9tOjEuMzQzNzVlbX0ubWF0LWZvcm0tZmllbGQtc3Vic2NyaXB0LXdyYXBwZXJbX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZTo3NSU7bWFyZ2luLXRvcDouNjY2NjY2NjY2N2VtO3RvcDpjYWxjKDEwMCUgLSAxLjc5MTY2NjY2NjdlbSl9Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtbGVnYWN5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC13cmFwcGVyW19uZ2NvbnRlbnQtJUNPTVAlXXtwYWRkaW5nLWJvdHRvbToxLjI1ZW19Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtbGVnYWN5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1pbmZpeFtfbmdjb250ZW50LSVDT01QJV17cGFkZGluZzouNDM3NWVtIDB9Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtbGVnYWN5Lm1hdC1mb3JtLWZpZWxkLWNhbi1mbG9hdC5tYXQtZm9ybS1maWVsZC1zaG91bGQtZmxvYXRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtbGVnYWN5Lm1hdC1mb3JtLWZpZWxkLWNhbi1mbG9hdFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWlucHV0LXNlcnZlcltfbmdjb250ZW50LSVDT01QJV06Zm9jdXMgKyAubWF0LWZvcm0tZmllbGQtbGFiZWwtd3JhcHBlcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVde3RyYW5zZm9ybTp0cmFuc2xhdGVZKC0xLjI4MTI1ZW0pIHNjYWxlKDAuNzUpIHBlcnNwZWN0aXZlKDEwMHB4KSB0cmFuc2xhdGVaKDAuMDAxcHgpOy1tcy10cmFuc2Zvcm06dHJhbnNsYXRlWSgtMS4yODEyNWVtKSBzY2FsZSgwLjc1KTt3aWR0aDoxMzMuMzMzMzMzMzMzMyV9Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtbGVnYWN5Lm1hdC1mb3JtLWZpZWxkLWNhbi1mbG9hdFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtYXV0b2ZpbGwtY29udHJvbFtfbmdjb250ZW50LSVDT01QJV06LXdlYmtpdC1hdXRvZmlsbCArIC5tYXQtZm9ybS1maWVsZC1sYWJlbC13cmFwcGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17dHJhbnNmb3JtOnRyYW5zbGF0ZVkoLTEuMjgxMjVlbSkgc2NhbGUoMC43NSkgcGVyc3BlY3RpdmUoMTAwcHgpIHRyYW5zbGF0ZVooMC4wMDEwMXB4KTstbXMtdHJhbnNmb3JtOnRyYW5zbGF0ZVkoLTEuMjgxMjRlbSkgc2NhbGUoMC43NSk7d2lkdGg6MTMzLjMzMzM0MzMzMzMlfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWxlZ2FjeS5tYXQtZm9ybS1maWVsZC1jYW4tZmxvYXRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pbnB1dC1zZXJ2ZXJbbGFiZWxdW19uZ2NvbnRlbnQtJUNPTVAlXTpub3QoOmxhYmVsLXNob3duKSArIC5tYXQtZm9ybS1maWVsZC1sYWJlbC13cmFwcGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17dHJhbnNmb3JtOnRyYW5zbGF0ZVkoLTEuMjgxMjVlbSkgc2NhbGUoMC43NSkgcGVyc3BlY3RpdmUoMTAwcHgpIHRyYW5zbGF0ZVooMC4wMDEwMnB4KTstbXMtdHJhbnNmb3JtOnRyYW5zbGF0ZVkoLTEuMjgxMjNlbSkgc2NhbGUoMC43NSk7d2lkdGg6MTMzLjMzMzM1MzMzMzMlfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWxlZ2FjeVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVde3RvcDoxLjI4MTI1ZW19Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtbGVnYWN5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC11bmRlcmxpbmVbX25nY29udGVudC0lQ09NUCVde2JvdHRvbToxLjI1ZW19Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtbGVnYWN5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1zdWJzY3JpcHQtd3JhcHBlcltfbmdjb250ZW50LSVDT01QJV17bWFyZ2luLXRvcDouNTQxNjY2NjY2N2VtO3RvcDpjYWxjKDEwMCUgLSAxLjY2NjY2NjY2NjdlbSl9QG1lZGlhIHByaW50ey5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWxlZ2FjeS5tYXQtZm9ybS1maWVsZC1jYW4tZmxvYXQubWF0LWZvcm0tZmllbGQtc2hvdWxkLWZsb2F0W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWxlZ2FjeS5tYXQtZm9ybS1maWVsZC1jYW4tZmxvYXRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pbnB1dC1zZXJ2ZXJbX25nY29udGVudC0lQ09NUCVdOmZvY3VzICsgLm1hdC1mb3JtLWZpZWxkLWxhYmVsLXdyYXBwZXJbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXt0cmFuc2Zvcm06dHJhbnNsYXRlWSgtMS4yODEyMmVtKSBzY2FsZSgwLjc1KX0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1sZWdhY3kubWF0LWZvcm0tZmllbGQtY2FuLWZsb2F0W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1hdXRvZmlsbC1jb250cm9sW19uZ2NvbnRlbnQtJUNPTVAlXTotd2Via2l0LWF1dG9maWxsICsgLm1hdC1mb3JtLWZpZWxkLWxhYmVsLXdyYXBwZXJbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXt0cmFuc2Zvcm06dHJhbnNsYXRlWSgtMS4yODEyMWVtKSBzY2FsZSgwLjc1KX0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1sZWdhY3kubWF0LWZvcm0tZmllbGQtY2FuLWZsb2F0W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaW5wdXQtc2VydmVyW2xhYmVsXVtfbmdjb250ZW50LSVDT01QJV06bm90KDpsYWJlbC1zaG93bikgKyAubWF0LWZvcm0tZmllbGQtbGFiZWwtd3JhcHBlcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVde3RyYW5zZm9ybTp0cmFuc2xhdGVZKC0xLjI4MTJlbSkgc2NhbGUoMC43NSl9fS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWZpbGxbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWluZml4W19uZ2NvbnRlbnQtJUNPTVAlXXtwYWRkaW5nOi4yNWVtIDAgLjc1ZW0gMH0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1maWxsW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17dG9wOjEuMDkzNzVlbTttYXJnaW4tdG9wOi0wLjVlbX0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1maWxsLm1hdC1mb3JtLWZpZWxkLWNhbi1mbG9hdC5tYXQtZm9ybS1maWVsZC1zaG91bGQtZmxvYXRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtZmlsbC5tYXQtZm9ybS1maWVsZC1jYW4tZmxvYXRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pbnB1dC1zZXJ2ZXJbX25nY29udGVudC0lQ09NUCVdOmZvY3VzICsgLm1hdC1mb3JtLWZpZWxkLWxhYmVsLXdyYXBwZXJbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXt0cmFuc2Zvcm06dHJhbnNsYXRlWSgtMC41OTM3NWVtKSBzY2FsZSgwLjc1KTt3aWR0aDoxMzMuMzMzMzMzMzMzMyV9Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtZmlsbC5tYXQtZm9ybS1maWVsZC1jYW4tZmxvYXRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pbnB1dC1zZXJ2ZXJbbGFiZWxdW19uZ2NvbnRlbnQtJUNPTVAlXTpub3QoOmxhYmVsLXNob3duKSArIC5tYXQtZm9ybS1maWVsZC1sYWJlbC13cmFwcGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17dHJhbnNmb3JtOnRyYW5zbGF0ZVkoLTAuNTkzNzRlbSkgc2NhbGUoMC43NSk7d2lkdGg6MTMzLjMzMzM0MzMzMzMlfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLW91dGxpbmVbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWluZml4W19uZ2NvbnRlbnQtJUNPTVAlXXtwYWRkaW5nOjFlbSAwIDFlbSAwfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLW91dGxpbmVbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXt0b3A6MS44NDM3NWVtO21hcmdpbi10b3A6LTAuMjVlbX0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1vdXRsaW5lLm1hdC1mb3JtLWZpZWxkLWNhbi1mbG9hdC5tYXQtZm9ybS1maWVsZC1zaG91bGQtZmxvYXRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2Utb3V0bGluZS5tYXQtZm9ybS1maWVsZC1jYW4tZmxvYXRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pbnB1dC1zZXJ2ZXJbX25nY29udGVudC0lQ09NUCVdOmZvY3VzICsgLm1hdC1mb3JtLWZpZWxkLWxhYmVsLXdyYXBwZXJbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXt0cmFuc2Zvcm06dHJhbnNsYXRlWSgtMS41OTM3NWVtKSBzY2FsZSgwLjc1KTt3aWR0aDoxMzMuMzMzMzMzMzMzMyV9Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2Utb3V0bGluZS5tYXQtZm9ybS1maWVsZC1jYW4tZmxvYXRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pbnB1dC1zZXJ2ZXJbbGFiZWxdW19uZ2NvbnRlbnQtJUNPTVAlXTpub3QoOmxhYmVsLXNob3duKSArIC5tYXQtZm9ybS1maWVsZC1sYWJlbC13cmFwcGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17dHJhbnNmb3JtOnRyYW5zbGF0ZVkoLTEuNTkzNzRlbSkgc2NhbGUoMC43NSk7d2lkdGg6MTMzLjMzMzM0MzMzMzMlfS5tYXQtZ3JpZC10aWxlLWhlYWRlcltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtZ3JpZC10aWxlLWZvb3Rlcltfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjE0cHh9Lm1hdC1ncmlkLXRpbGUtaGVhZGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGluZVtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtZ3JpZC10aWxlLWZvb3Rlcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpbmVbX25nY29udGVudC0lQ09NUCVde3doaXRlLXNwYWNlOm5vd3JhcDtvdmVyZmxvdzpoaWRkZW47dGV4dC1vdmVyZmxvdzplbGxpcHNpcztkaXNwbGF5OmJsb2NrO2JveC1zaXppbmc6Ym9yZGVyLWJveH0ubWF0LWdyaWQtdGlsZS1oZWFkZXJbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saW5lW19uZ2NvbnRlbnQtJUNPTVAlXTpudGgtY2hpbGQobisyKSwgLm1hdC1ncmlkLXRpbGUtZm9vdGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGluZVtfbmdjb250ZW50LSVDT01QJV06bnRoLWNoaWxkKG4rMil7Zm9udC1zaXplOjEycHh9aW5wdXQubWF0LWlucHV0LWVsZW1lbnRbX25nY29udGVudC0lQ09NUCVde21hcmdpbi10b3A6LTAuMDYyNWVtfS5tYXQtbWVudS1pdGVtW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7Zm9udC1zaXplOjE0cHg7Zm9udC13ZWlnaHQ6NDAwfS5tYXQtcGFnaW5hdG9yW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1wYWdpbmF0b3ItcGFnZS1zaXplW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtc2VsZWN0LXRyaWdnZXJbX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtmb250LXNpemU6MTJweH0ubWF0LXJhZGlvLWJ1dHRvbltfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmfS5tYXQtc2VsZWN0W19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWZ9Lm1hdC1zZWxlY3QtdHJpZ2dlcltfbmdjb250ZW50LSVDT01QJV17aGVpZ2h0OjEuMTI1ZW19Lm1hdC1zbGlkZS10b2dnbGUtY29udGVudFtfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmfS5tYXQtc2xpZGVyLXRodW1iLWxhYmVsLXRleHRbX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtmb250LXNpemU6MTJweDtmb250LXdlaWdodDo1MDB9Lm1hdC1zdGVwcGVyLXZlcnRpY2FsW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1zdGVwcGVyLWhvcml6b250YWxbX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZn0ubWF0LXN0ZXAtbGFiZWxbX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToxNHB4O2ZvbnQtd2VpZ2h0OjQwMH0ubWF0LXN0ZXAtc3ViLWxhYmVsLWVycm9yW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXdlaWdodDpub3JtYWx9Lm1hdC1zdGVwLWxhYmVsLWVycm9yW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MTRweH0ubWF0LXN0ZXAtbGFiZWwtc2VsZWN0ZWRbX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToxNHB4O2ZvbnQtd2VpZ2h0OjUwMH0ubWF0LXRhYi1ncm91cFtfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmfS5tYXQtdGFiLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10YWItbGlua1tfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2ZvbnQtc2l6ZToxNHB4O2ZvbnQtd2VpZ2h0OjUwMH0ubWF0LXRvb2xiYXJbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXRvb2xiYXJbX25nY29udGVudC0lQ09NUCVdICAgaDFbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXRvb2xiYXJbX25nY29udGVudC0lQ09NUCVdICAgaDJbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXRvb2xiYXJbX25nY29udGVudC0lQ09NUCVdICAgaDNbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXRvb2xiYXJbX25nY29udGVudC0lQ09NUCVdICAgaDRbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXRvb2xiYXJbX25nY29udGVudC0lQ09NUCVdICAgaDVbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXRvb2xiYXJbX25nY29udGVudC0lQ09NUCVdICAgaDZbX25nY29udGVudC0lQ09NUCVde2ZvbnQ6NTAwIDIwcHgvMzJweCBSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7bGV0dGVyLXNwYWNpbmc6bm9ybWFsO21hcmdpbjowfS5tYXQtdG9vbHRpcFtfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2ZvbnQtc2l6ZToxMHB4O3BhZGRpbmctdG9wOjZweDtwYWRkaW5nLWJvdHRvbTo2cHh9Lm1hdC10b29sdGlwLWhhbmRzZXRbX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToxNHB4O3BhZGRpbmctdG9wOjhweDtwYWRkaW5nLWJvdHRvbTo4cHh9Lm1hdC1saXN0LWl0ZW1bX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZn0ubWF0LWxpc3Qtb3B0aW9uW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWZ9Lm1hdC1saXN0LWJhc2VbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saXN0LWl0ZW1bX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToxNnB4fS5tYXQtbGlzdC1iYXNlW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGlzdC1pdGVtW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGluZVtfbmdjb250ZW50LSVDT01QJV17d2hpdGUtc3BhY2U6bm93cmFwO292ZXJmbG93OmhpZGRlbjt0ZXh0LW92ZXJmbG93OmVsbGlwc2lzO2Rpc3BsYXk6YmxvY2s7Ym94LXNpemluZzpib3JkZXItYm94fS5tYXQtbGlzdC1iYXNlW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGlzdC1pdGVtW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGluZVtfbmdjb250ZW50LSVDT01QJV06bnRoLWNoaWxkKG4rMil7Zm9udC1zaXplOjE0cHh9Lm1hdC1saXN0LWJhc2VbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saXN0LW9wdGlvbltfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjE2cHh9Lm1hdC1saXN0LWJhc2VbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saXN0LW9wdGlvbltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpbmVbX25nY29udGVudC0lQ09NUCVde3doaXRlLXNwYWNlOm5vd3JhcDtvdmVyZmxvdzpoaWRkZW47dGV4dC1vdmVyZmxvdzplbGxpcHNpcztkaXNwbGF5OmJsb2NrO2JveC1zaXppbmc6Ym9yZGVyLWJveH0ubWF0LWxpc3QtYmFzZVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpc3Qtb3B0aW9uW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGluZVtfbmdjb250ZW50LSVDT01QJV06bnRoLWNoaWxkKG4rMil7Zm9udC1zaXplOjE0cHh9Lm1hdC1saXN0LWJhc2VbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1zdWJoZWFkZXJbX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtmb250LXNpemU6MTRweDtmb250LXdlaWdodDo1MDB9Lm1hdC1saXN0LWJhc2VbZGVuc2VdW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGlzdC1pdGVtW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MTJweH0ubWF0LWxpc3QtYmFzZVtkZW5zZV1bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saXN0LWl0ZW1bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saW5lW19uZ2NvbnRlbnQtJUNPTVAlXXt3aGl0ZS1zcGFjZTpub3dyYXA7b3ZlcmZsb3c6aGlkZGVuO3RleHQtb3ZlcmZsb3c6ZWxsaXBzaXM7ZGlzcGxheTpibG9jaztib3gtc2l6aW5nOmJvcmRlci1ib3h9Lm1hdC1saXN0LWJhc2VbZGVuc2VdW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGlzdC1pdGVtW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGluZVtfbmdjb250ZW50LSVDT01QJV06bnRoLWNoaWxkKG4rMil7Zm9udC1zaXplOjEycHh9Lm1hdC1saXN0LWJhc2VbZGVuc2VdW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGlzdC1vcHRpb25bX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToxMnB4fS5tYXQtbGlzdC1iYXNlW2RlbnNlXVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpc3Qtb3B0aW9uW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGluZVtfbmdjb250ZW50LSVDT01QJV17d2hpdGUtc3BhY2U6bm93cmFwO292ZXJmbG93OmhpZGRlbjt0ZXh0LW92ZXJmbG93OmVsbGlwc2lzO2Rpc3BsYXk6YmxvY2s7Ym94LXNpemluZzpib3JkZXItYm94fS5tYXQtbGlzdC1iYXNlW2RlbnNlXVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpc3Qtb3B0aW9uW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGluZVtfbmdjb250ZW50LSVDT01QJV06bnRoLWNoaWxkKG4rMil7Zm9udC1zaXplOjEycHh9Lm1hdC1saXN0LWJhc2VbZGVuc2VdW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtc3ViaGVhZGVyW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7Zm9udC1zaXplOjEycHg7Zm9udC13ZWlnaHQ6NTAwfS5tYXQtb3B0aW9uW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7Zm9udC1zaXplOjE2cHh9Lm1hdC1vcHRncm91cC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17Zm9udDo1MDAgMTRweC8yNHB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtsZXR0ZXItc3BhY2luZzpub3JtYWx9Lm1hdC1zaW1wbGUtc25hY2tiYXJbX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtmb250LXNpemU6MTRweH0ubWF0LXNpbXBsZS1zbmFja2Jhci1hY3Rpb25bX25nY29udGVudC0lQ09NUCVde2xpbmUtaGVpZ2h0OjE7Zm9udC1mYW1pbHk6aW5oZXJpdDtmb250LXNpemU6aW5oZXJpdDtmb250LXdlaWdodDo1MDB9Lm1hdC10cmVlW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWZ9Lm1hdC10cmVlLW5vZGVbX25nY29udGVudC0lQ09NUCVdLCAubWF0LW5lc3RlZC10cmVlLW5vZGVbX25nY29udGVudC0lQ09NUCVde2ZvbnQtd2VpZ2h0OjQwMDtmb250LXNpemU6MTRweH0ubWF0LXJpcHBsZVtfbmdjb250ZW50LSVDT01QJV17b3ZlcmZsb3c6aGlkZGVuO3Bvc2l0aW9uOnJlbGF0aXZlfS5tYXQtcmlwcGxlW19uZ2NvbnRlbnQtJUNPTVAlXTpub3QoOmVtcHR5KXt0cmFuc2Zvcm06dHJhbnNsYXRlWigwKX0ubWF0LXJpcHBsZS5tYXQtcmlwcGxlLXVuYm91bmRlZFtfbmdjb250ZW50LSVDT01QJV17b3ZlcmZsb3c6dmlzaWJsZX0ubWF0LXJpcHBsZS1lbGVtZW50W19uZ2NvbnRlbnQtJUNPTVAlXXtwb3NpdGlvbjphYnNvbHV0ZTtib3JkZXItcmFkaXVzOjUwJTtwb2ludGVyLWV2ZW50czpub25lO3RyYW5zaXRpb246b3BhY2l0eSx0cmFuc2Zvcm0gMG1zIGN1YmljLWJlemllcigwLCAwLCAwLjIsIDEpO3RyYW5zZm9ybTpzY2FsZSgwKX0uY2RrLWhpZ2gtY29udHJhc3QtYWN0aXZlW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtcmlwcGxlLWVsZW1lbnRbX25nY29udGVudC0lQ09NUCVde2Rpc3BsYXk6bm9uZX0uY2RrLXZpc3VhbGx5LWhpZGRlbltfbmdjb250ZW50LSVDT01QJV17Ym9yZGVyOjA7Y2xpcDpyZWN0KDAgMCAwIDApO2hlaWdodDoxcHg7bWFyZ2luOi0xcHg7b3ZlcmZsb3c6aGlkZGVuO3BhZGRpbmc6MDtwb3NpdGlvbjphYnNvbHV0ZTt3aWR0aDoxcHg7b3V0bGluZTowOy13ZWJraXQtYXBwZWFyYW5jZTpub25lOy1tb3otYXBwZWFyYW5jZTpub25lfS5jZGstb3ZlcmxheS1jb250YWluZXJbX25nY29udGVudC0lQ09NUCVdLCAuY2RrLWdsb2JhbC1vdmVybGF5LXdyYXBwZXJbX25nY29udGVudC0lQ09NUCVde3BvaW50ZXItZXZlbnRzOm5vbmU7dG9wOjA7bGVmdDowO2hlaWdodDoxMDAlO3dpZHRoOjEwMCV9LmNkay1vdmVybGF5LWNvbnRhaW5lcltfbmdjb250ZW50LSVDT01QJV17cG9zaXRpb246Zml4ZWQ7ei1pbmRleDoxMDAwfS5jZGstb3ZlcmxheS1jb250YWluZXJbX25nY29udGVudC0lQ09NUCVdOmVtcHR5e2Rpc3BsYXk6bm9uZX0uY2RrLWdsb2JhbC1vdmVybGF5LXdyYXBwZXJbX25nY29udGVudC0lQ09NUCVde2Rpc3BsYXk6ZmxleDtwb3NpdGlvbjphYnNvbHV0ZTt6LWluZGV4OjEwMDB9LmNkay1vdmVybGF5LXBhbmVbX25nY29udGVudC0lQ09NUCVde3Bvc2l0aW9uOmFic29sdXRlO3BvaW50ZXItZXZlbnRzOmF1dG87Ym94LXNpemluZzpib3JkZXItYm94O3otaW5kZXg6MTAwMDtkaXNwbGF5OmZsZXg7bWF4LXdpZHRoOjEwMCU7bWF4LWhlaWdodDoxMDAlfS5jZGstb3ZlcmxheS1iYWNrZHJvcFtfbmdjb250ZW50LSVDT01QJV17cG9zaXRpb246YWJzb2x1dGU7dG9wOjA7Ym90dG9tOjA7bGVmdDowO3JpZ2h0OjA7ei1pbmRleDoxMDAwO3BvaW50ZXItZXZlbnRzOmF1dG87LXdlYmtpdC10YXAtaGlnaGxpZ2h0LWNvbG9yOnRyYW5zcGFyZW50O3RyYW5zaXRpb246b3BhY2l0eSA0MDBtcyBjdWJpYy1iZXppZXIoMC4yNSwgMC44LCAwLjI1LCAxKTtvcGFjaXR5OjB9LmNkay1vdmVybGF5LWJhY2tkcm9wLmNkay1vdmVybGF5LWJhY2tkcm9wLXNob3dpbmdbX25nY29udGVudC0lQ09NUCVde29wYWNpdHk6MX1AbWVkaWEgc2NyZWVuIGFuZCAoLW1zLWhpZ2gtY29udHJhc3Q6IGFjdGl2ZSl7LmNkay1vdmVybGF5LWJhY2tkcm9wLmNkay1vdmVybGF5LWJhY2tkcm9wLXNob3dpbmdbX25nY29udGVudC0lQ09NUCVde29wYWNpdHk6LjZ9fS5jZGstb3ZlcmxheS1kYXJrLWJhY2tkcm9wW19uZ2NvbnRlbnQtJUNPTVAlXXtiYWNrZ3JvdW5kOnJnYmEoMCwwLDAsLjMyKX0uY2RrLW92ZXJsYXktdHJhbnNwYXJlbnQtYmFja2Ryb3BbX25nY29udGVudC0lQ09NUCVdLCAuY2RrLW92ZXJsYXktdHJhbnNwYXJlbnQtYmFja2Ryb3AuY2RrLW92ZXJsYXktYmFja2Ryb3Atc2hvd2luZ1tfbmdjb250ZW50LSVDT01QJV17b3BhY2l0eTowfS5jZGstb3ZlcmxheS1jb25uZWN0ZWQtcG9zaXRpb24tYm91bmRpbmctYm94W19uZ2NvbnRlbnQtJUNPTVAlXXtwb3NpdGlvbjphYnNvbHV0ZTt6LWluZGV4OjEwMDA7ZGlzcGxheTpmbGV4O2ZsZXgtZGlyZWN0aW9uOmNvbHVtbjttaW4td2lkdGg6MXB4O21pbi1oZWlnaHQ6MXB4fS5jZGstZ2xvYmFsLXNjcm9sbGJsb2NrW19uZ2NvbnRlbnQtJUNPTVAlXXtwb3NpdGlvbjpmaXhlZDt3aWR0aDoxMDAlO292ZXJmbG93LXk6c2Nyb2xsfUBrZXlmcmFtZXMgY2RrLXRleHQtZmllbGQtYXV0b2ZpbGwtc3RhcnR7fUBrZXlmcmFtZXMgY2RrLXRleHQtZmllbGQtYXV0b2ZpbGwtZW5ke30uY2RrLXRleHQtZmllbGQtYXV0b2ZpbGwtbW9uaXRvcmVkW19uZ2NvbnRlbnQtJUNPTVAlXTotd2Via2l0LWF1dG9maWxse2FuaW1hdGlvbjpjZGstdGV4dC1maWVsZC1hdXRvZmlsbC1zdGFydCAwcyAxbXN9LmNkay10ZXh0LWZpZWxkLWF1dG9maWxsLW1vbml0b3JlZFtfbmdjb250ZW50LSVDT01QJV06bm90KDotd2Via2l0LWF1dG9maWxsKXthbmltYXRpb246Y2RrLXRleHQtZmllbGQtYXV0b2ZpbGwtZW5kIDBzIDFtc310ZXh0YXJlYS5jZGstdGV4dGFyZWEtYXV0b3NpemVbX25nY29udGVudC0lQ09NUCVde3Jlc2l6ZTpub25lfXRleHRhcmVhLmNkay10ZXh0YXJlYS1hdXRvc2l6ZS1tZWFzdXJpbmdbX25nY29udGVudC0lQ09NUCVde3BhZGRpbmc6MnB4IDAgIWltcG9ydGFudDtib3gtc2l6aW5nOmNvbnRlbnQtYm94ICFpbXBvcnRhbnQ7aGVpZ2h0OmF1dG8gIWltcG9ydGFudDtvdmVyZmxvdzpoaWRkZW4gIWltcG9ydGFudH10ZXh0YXJlYS5jZGstdGV4dGFyZWEtYXV0b3NpemUtbWVhc3VyaW5nLWZpcmVmb3hbX25nY29udGVudC0lQ09NUCVde3BhZGRpbmc6MnB4IDAgIWltcG9ydGFudDtib3gtc2l6aW5nOmNvbnRlbnQtYm94ICFpbXBvcnRhbnQ7aGVpZ2h0OjAgIWltcG9ydGFudH0ubWF0LWZvY3VzLWluZGljYXRvcltfbmdjb250ZW50LSVDT01QJV17cG9zaXRpb246cmVsYXRpdmV9Lm1hdC1tZGMtZm9jdXMtaW5kaWNhdG9yW19uZ2NvbnRlbnQtJUNPTVAlXXtwb3NpdGlvbjpyZWxhdGl2ZX0ubWF0LXJpcHBsZS1lbGVtZW50W19uZ2NvbnRlbnQtJUNPTVAlXXtiYWNrZ3JvdW5kLWNvbG9yOnJnYmEoMCwwLDAsLjEpfS5tYXQtb3B0aW9uW19uZ2NvbnRlbnQtJUNPTVAlXXtjb2xvcjojMjEyMTIxfS5tYXQtb3B0aW9uW19uZ2NvbnRlbnQtJUNPTVAlXTpob3Zlcjpub3QoLm1hdC1vcHRpb24tZGlzYWJsZWQpLCAubWF0LW9wdGlvbltfbmdjb250ZW50LSVDT01QJV06Zm9jdXM6bm90KC5tYXQtb3B0aW9uLWRpc2FibGVkKXtiYWNrZ3JvdW5kOnJnYmEoMCwwLDAsLjA0KX0ubWF0LW9wdGlvbi5tYXQtc2VsZWN0ZWRbX25nY29udGVudC0lQ09NUCVdOm5vdCgubWF0LW9wdGlvbi1tdWx0aXBsZSk6bm90KC5tYXQtb3B0aW9uLWRpc2FibGVkKXtiYWNrZ3JvdW5kOnJnYmEoMCwwLDAsLjA0KX0ubWF0LW9wdGlvbi5tYXQtYWN0aXZlW19uZ2NvbnRlbnQtJUNPTVAlXXtiYWNrZ3JvdW5kOnJnYmEoMCwwLDAsLjA0KTtjb2xvcjojMjEyMTIxfS5tYXQtb3B0aW9uLm1hdC1vcHRpb24tZGlzYWJsZWRbX25nY29udGVudC0lQ09NUCVde2NvbG9yOnJnYmEoMCwwLDAsLjM4KX0ubWF0LXByaW1hcnlbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1vcHRpb24ubWF0LXNlbGVjdGVkW19uZ2NvbnRlbnQtJUNPTVAlXTpub3QoLm1hdC1vcHRpb24tZGlzYWJsZWQpe2NvbG9yOiNmNTdjMDB9Lm1hdC1hY2NlbnRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1vcHRpb24ubWF0LXNlbGVjdGVkW19uZ2NvbnRlbnQtJUNPTVAlXTpub3QoLm1hdC1vcHRpb24tZGlzYWJsZWQpe2NvbG9yOiNmZjk4MDB9Lm1hdC13YXJuW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtb3B0aW9uLm1hdC1zZWxlY3RlZFtfbmdjb250ZW50LSVDT01QJV06bm90KC5tYXQtb3B0aW9uLWRpc2FibGVkKXtjb2xvcjojZjQ0MzM2fS5tYXQtb3B0Z3JvdXAtbGFiZWxbX25nY29udGVudC0lQ09NUCVde2NvbG9yOiM2MTYxNjF9Lm1hdC1vcHRncm91cC1kaXNhYmxlZFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LW9wdGdyb3VwLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXtjb2xvcjpyZ2JhKDAsMCwwLC4zOCl9Lm1hdC1wc2V1ZG8tY2hlY2tib3hbX25nY29udGVudC0lQ09NUCVde2NvbG9yOiM2MTYxNjF9Lm1hdC1wc2V1ZG8tY2hlY2tib3hbX25nY29udGVudC0lQ09NUCVdOjphZnRlcntjb2xvcjojZmFmYWZhfS5tYXQtcHNldWRvLWNoZWNrYm94LWRpc2FibGVkW19uZ2NvbnRlbnQtJUNPTVAlXXtjb2xvcjojYjBiMGIwfS5tYXQtcHJpbWFyeVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXBzZXVkby1jaGVja2JveC1jaGVja2VkW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1wcmltYXJ5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtcHNldWRvLWNoZWNrYm94LWluZGV0ZXJtaW5hdGVbX25nY29udGVudC0lQ09NUCVde2JhY2tncm91bmQ6I2Y1N2MwMH0ubWF0LXBzZXVkby1jaGVja2JveC1jaGVja2VkW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1wc2V1ZG8tY2hlY2tib3gtaW5kZXRlcm1pbmF0ZVtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtYWNjZW50W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtcHNldWRvLWNoZWNrYm94LWNoZWNrZWRbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWFjY2VudFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXBzZXVkby1jaGVja2JveC1pbmRldGVybWluYXRlW19uZ2NvbnRlbnQtJUNPTVAlXXtiYWNrZ3JvdW5kOiNmZjk4MDB9Lm1hdC13YXJuW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtcHNldWRvLWNoZWNrYm94LWNoZWNrZWRbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXdhcm5bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1wc2V1ZG8tY2hlY2tib3gtaW5kZXRlcm1pbmF0ZVtfbmdjb250ZW50LSVDT01QJV17YmFja2dyb3VuZDojZjQ0MzM2fS5tYXQtcHNldWRvLWNoZWNrYm94LWNoZWNrZWQubWF0LXBzZXVkby1jaGVja2JveC1kaXNhYmxlZFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtcHNldWRvLWNoZWNrYm94LWluZGV0ZXJtaW5hdGUubWF0LXBzZXVkby1jaGVja2JveC1kaXNhYmxlZFtfbmdjb250ZW50LSVDT01QJV17YmFja2dyb3VuZDojYjBiMGIwfS5tYXQtYXBwLWJhY2tncm91bmRbX25nY29udGVudC0lQ09NUCVde2JhY2tncm91bmQtY29sb3I6I2ZhZmFmYTtjb2xvcjojMjEyMTIxfS5tYXQtZWxldmF0aW9uLXowW19uZ2NvbnRlbnQtJUNPTVAlXXtib3gtc2hhZG93OjBweCAwcHggMHB4IDBweCByZ2JhKDAsIDAsIDAsIDAuMiksMHB4IDBweCAwcHggMHB4IHJnYmEoMCwgMCwgMCwgMC4xNCksMHB4IDBweCAwcHggMHB4IHJnYmEoMCwgMCwgMCwgMC4xMil9Lm1hdC1lbGV2YXRpb24tejFbX25nY29udGVudC0lQ09NUCVde2JveC1zaGFkb3c6MHB4IDJweCAxcHggLTFweCByZ2JhKDAsIDAsIDAsIDAuMiksMHB4IDFweCAxcHggMHB4IHJnYmEoMCwgMCwgMCwgMC4xNCksMHB4IDFweCAzcHggMHB4IHJnYmEoMCwgMCwgMCwgMC4xMil9Lm1hdC1lbGV2YXRpb24tejJbX25nY29udGVudC0lQ09NUCVde2JveC1zaGFkb3c6MHB4IDNweCAxcHggLTJweCByZ2JhKDAsIDAsIDAsIDAuMiksMHB4IDJweCAycHggMHB4IHJnYmEoMCwgMCwgMCwgMC4xNCksMHB4IDFweCA1cHggMHB4IHJnYmEoMCwgMCwgMCwgMC4xMil9Lm1hdC1lbGV2YXRpb24tejNbX25nY29udGVudC0lQ09NUCVde2JveC1zaGFkb3c6MHB4IDNweCAzcHggLTJweCByZ2JhKDAsIDAsIDAsIDAuMiksMHB4IDNweCA0cHggMHB4IHJnYmEoMCwgMCwgMCwgMC4xNCksMHB4IDFweCA4cHggMHB4IHJnYmEoMCwgMCwgMCwgMC4xMil9Lm1hdC1lbGV2YXRpb24tejRbX25nY29udGVudC0lQ09NUCVde2JveC1zaGFkb3c6MHB4IDJweCA0cHggLTFweCByZ2JhKDAsIDAsIDAsIDAuMiksMHB4IDRweCA1cHggMHB4IHJnYmEoMCwgMCwgMCwgMC4xNCksMHB4IDFweCAxMHB4IDBweCByZ2JhKDAsIDAsIDAsIDAuMTIpfS5tYXQtZWxldmF0aW9uLXo1W19uZ2NvbnRlbnQtJUNPTVAlXXtib3gtc2hhZG93OjBweCAzcHggNXB4IC0xcHggcmdiYSgwLCAwLCAwLCAwLjIpLDBweCA1cHggOHB4IDBweCByZ2JhKDAsIDAsIDAsIDAuMTQpLDBweCAxcHggMTRweCAwcHggcmdiYSgwLCAwLCAwLCAwLjEyKX0ubWF0LWVsZXZhdGlvbi16Nltfbmdjb250ZW50LSVDT01QJV17Ym94LXNoYWRvdzowcHggM3B4IDVweCAtMXB4IHJnYmEoMCwgMCwgMCwgMC4yKSwwcHggNnB4IDEwcHggMHB4IHJnYmEoMCwgMCwgMCwgMC4xNCksMHB4IDFweCAxOHB4IDBweCByZ2JhKDAsIDAsIDAsIDAuMTIpfS5tYXQtZWxldmF0aW9uLXo3W19uZ2NvbnRlbnQtJUNPTVAlXXtib3gtc2hhZG93OjBweCA0cHggNXB4IC0ycHggcmdiYSgwLCAwLCAwLCAwLjIpLDBweCA3cHggMTBweCAxcHggcmdiYSgwLCAwLCAwLCAwLjE0KSwwcHggMnB4IDE2cHggMXB4IHJnYmEoMCwgMCwgMCwgMC4xMil9Lm1hdC1lbGV2YXRpb24tejhbX25nY29udGVudC0lQ09NUCVde2JveC1zaGFkb3c6MHB4IDVweCA1cHggLTNweCByZ2JhKDAsIDAsIDAsIDAuMiksMHB4IDhweCAxMHB4IDFweCByZ2JhKDAsIDAsIDAsIDAuMTQpLDBweCAzcHggMTRweCAycHggcmdiYSgwLCAwLCAwLCAwLjEyKX0ubWF0LWVsZXZhdGlvbi16OVtfbmdjb250ZW50LSVDT01QJV17Ym94LXNoYWRvdzowcHggNXB4IDZweCAtM3B4IHJnYmEoMCwgMCwgMCwgMC4yKSwwcHggOXB4IDEycHggMXB4IHJnYmEoMCwgMCwgMCwgMC4xNCksMHB4IDNweCAxNnB4IDJweCByZ2JhKDAsIDAsIDAsIDAuMTIpfS5tYXQtZWxldmF0aW9uLXoxMFtfbmdjb250ZW50LSVDT01QJV17Ym94LXNoYWRvdzowcHggNnB4IDZweCAtM3B4IHJnYmEoMCwgMCwgMCwgMC4yKSwwcHggMTBweCAxNHB4IDFweCByZ2JhKDAsIDAsIDAsIDAuMTQpLDBweCA0cHggMThweCAzcHggcmdiYSgwLCAwLCAwLCAwLjEyKX0ubWF0LWVsZXZhdGlvbi16MTFbX25nY29udGVudC0lQ09NUCVde2JveC1zaGFkb3c6MHB4IDZweCA3cHggLTRweCByZ2JhKDAsIDAsIDAsIDAuMiksMHB4IDExcHggMTVweCAxcHggcmdiYSgwLCAwLCAwLCAwLjE0KSwwcHggNHB4IDIwcHggM3B4IHJnYmEoMCwgMCwgMCwgMC4xMil9Lm1hdC1lbGV2YXRpb24tejEyW19uZ2NvbnRlbnQtJUNPTVAlXXtib3gtc2hhZG93OjBweCA3cHggOHB4IC00cHggcmdiYSgwLCAwLCAwLCAwLjIpLDBweCAxMnB4IDE3cHggMnB4IHJnYmEoMCwgMCwgMCwgMC4xNCksMHB4IDVweCAyMnB4IDRweCByZ2JhKDAsIDAsIDAsIDAuMTIpfS5tYXQtZWxldmF0aW9uLXoxM1tfbmdjb250ZW50LSVDT01QJV17Ym94LXNoYWRvdzowcHggN3B4IDhweCAtNHB4IHJnYmEoMCwgMCwgMCwgMC4yKSwwcHggMTNweCAxOXB4IDJweCByZ2JhKDAsIDAsIDAsIDAuMTQpLDBweCA1cHggMjRweCA0cHggcmdiYSgwLCAwLCAwLCAwLjEyKX0ubWF0LWVsZXZhdGlvbi16MTRbX25nY29udGVudC0lQ09NUCVde2JveC1zaGFkb3c6MHB4IDdweCA5cHggLTRweCByZ2JhKDAsIDAsIDAsIDAuMiksMHB4IDE0cHggMjFweCAycHggcmdiYSgwLCAwLCAwLCAwLjE0KSwwcHggNXB4IDI2cHggNHB4IHJnYmEoMCwgMCwgMCwgMC4xMil9Lm1hdC1lbGV2YXRpb24tejE1W19uZ2NvbnRlbnQtJUNPTVAlXXtib3gtc2hhZG93OjBweCA4cHggOXB4IC01cHggcmdiYSgwLCAwLCAwLCAwLjIpLDBweCAxNXB4IDIycHggMnB4IHJnYmEoMCwgMCwgMCwgMC4xNCksMHB4IDZweCAyOHB4IDVweCByZ2JhKDAsIDAsIDAsIDAuMTIpfS5tYXQtZWxldmF0aW9uLXoxNltfbmdjb250ZW50LSVDT01QJV17Ym94LXNoYWRvdzowcHggOHB4IDEwcHggLTVweCByZ2JhKDAsIDAsIDAsIDAuMiksMHB4IDE2cHggMjRweCAycHggcmdiYSgwLCAwLCAwLCAwLjE0KSwwcHggNnB4IDMwcHggNXB4IHJnYmEoMCwgMCwgMCwgMC4xMil9Lm1hdC1lbGV2YXRpb24tejE3W19uZ2NvbnRlbnQtJUNPTVAlXXtib3gtc2hhZG93OjBweCA4cHggMTFweCAtNXB4IHJnYmEoMCwgMCwgMCwgMC4yKSwwcHggMTdweCAyNnB4IDJweCByZ2JhKDAsIDAsIDAsIDAuMTQpLDBweCA2cHggMzJweCA1cHggcmdiYSgwLCAwLCAwLCAwLjEyKX0ubWF0LWVsZXZhdGlvbi16MThbX25nY29udGVudC0lQ09NUCVde2JveC1zaGFkb3c6MHB4IDlweCAxMXB4IC01cHggcmdiYSgwLCAwLCAwLCAwLjIpLDBweCAxOHB4IDI4cHggMnB4IHJnYmEoMCwgMCwgMCwgMC4xNCksMHB4IDdweCAzNHB4IDZweCByZ2JhKDAsIDAsIDAsIDAuMTIpfS5tYXQtZWxldmF0aW9uLXoxOVtfbmdjb250ZW50LSVDT01QJV17Ym94LXNoYWRvdzowcHggOXB4IDEycHggLTZweCByZ2JhKDAsIDAsIDAsIDAuMiksMHB4IDE5cHggMjlweCAycHggcmdiYSgwLCAwLCAwLCAwLjE0KSwwcHggN3B4IDM2cHggNnB4IHJnYmEoMCwgMCwgMCwgMC4xMil9Lm1hdC1lbGV2YXRpb24tejIwW19uZ2NvbnRlbnQtJUNPTVAlXXtib3gtc2hhZG93OjBweCAxMHB4IDEzcHggLTZweCByZ2JhKDAsIDAsIDAsIDAuMiksMHB4IDIwcHggMzFweCAzcHggcmdiYSgwLCAwLCAwLCAwLjE0KSwwcHggOHB4IDM4cHggN3B4IHJnYmEoMCwgMCwgMCwgMC4xMil9Lm1hdC1lbGV2YXRpb24tejIxW19uZ2NvbnRlbnQtJUNPTVAlXXtib3gtc2hhZG93OjBweCAxMHB4IDEzcHggLTZweCByZ2JhKDAsIDAsIDAsIDAuMiksMHB4IDIxcHggMzNweCAzcHggcmdiYSgwLCAwLCAwLCAwLjE0KSwwcHggOHB4IDQwcHggN3B4IHJnYmEoMCwgMCwgMCwgMC4xMil9Lm1hdC1lbGV2YXRpb24tejIyW19uZ2NvbnRlbnQtJUNPTVAlXXtib3gtc2hhZG93OjBweCAxMHB4IDE0cHggLTZweCByZ2JhKDAsIDAsIDAsIDAuMiksMHB4IDIycHggMzVweCAzcHggcmdiYSgwLCAwLCAwLCAwLjE0KSwwcHggOHB4IDQycHggN3B4IHJnYmEoMCwgMCwgMCwgMC4xMil9Lm1hdC1lbGV2YXRpb24tejIzW19uZ2NvbnRlbnQtJUNPTVAlXXtib3gtc2hhZG93OjBweCAxMXB4IDE0cHggLTdweCByZ2JhKDAsIDAsIDAsIDAuMiksMHB4IDIzcHggMzZweCAzcHggcmdiYSgwLCAwLCAwLCAwLjE0KSwwcHggOXB4IDQ0cHggOHB4IHJnYmEoMCwgMCwgMCwgMC4xMil9Lm1hdC1lbGV2YXRpb24tejI0W19uZ2NvbnRlbnQtJUNPTVAlXXtib3gtc2hhZG93OjBweCAxMXB4IDE1cHggLTdweCByZ2JhKDAsIDAsIDAsIDAuMiksMHB4IDI0cHggMzhweCAzcHggcmdiYSgwLCAwLCAwLCAwLjE0KSwwcHggOXB4IDQ2cHggOHB4IHJnYmEoMCwgMCwgMCwgMC4xMil9Lm1hdC10aGVtZS1sb2FkZWQtbWFya2VyW19uZ2NvbnRlbnQtJUNPTVAlXXtkaXNwbGF5Om5vbmV9Lm1hdC1hdXRvY29tcGxldGUtcGFuZWxbX25nY29udGVudC0lQ09NUCVde2JhY2tncm91bmQ6I2ZmZjtjb2xvcjojMjEyMTIxfS5tYXQtYXV0b2NvbXBsZXRlLXBhbmVsW19uZ2NvbnRlbnQtJUNPTVAlXTpub3QoW2NsYXNzKj1tYXQtZWxldmF0aW9uLXpdKXtib3gtc2hhZG93OjBweCAycHggNHB4IC0xcHggcmdiYSgwLCAwLCAwLCAwLjIpLDBweCA0cHggNXB4IDBweCByZ2JhKDAsIDAsIDAsIDAuMTQpLDBweCAxcHggMTBweCAwcHggcmdiYSgwLCAwLCAwLCAwLjEyKX0ubWF0LWF1dG9jb21wbGV0ZS1wYW5lbFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LW9wdGlvbi5tYXQtc2VsZWN0ZWRbX25nY29udGVudC0lQ09NUCVdOm5vdCgubWF0LWFjdGl2ZSk6bm90KDpob3Zlcil7YmFja2dyb3VuZDojZmZmfS5tYXQtYXV0b2NvbXBsZXRlLXBhbmVsW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtb3B0aW9uLm1hdC1zZWxlY3RlZFtfbmdjb250ZW50LSVDT01QJV06bm90KC5tYXQtYWN0aXZlKTpub3QoOmhvdmVyKTpub3QoLm1hdC1vcHRpb24tZGlzYWJsZWQpe2NvbG9yOiMyMTIxMjF9Lm1hdC1iYWRnZS1jb250ZW50W19uZ2NvbnRlbnQtJUNPTVAlXXtjb2xvcjojZmZmO2JhY2tncm91bmQ6I2Y1N2MwMH0uY2RrLWhpZ2gtY29udHJhc3QtYWN0aXZlW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtYmFkZ2UtY29udGVudFtfbmdjb250ZW50LSVDT01QJV17b3V0bGluZTpzb2xpZCAxcHg7Ym9yZGVyLXJhZGl1czowfS5tYXQtYmFkZ2UtYWNjZW50W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtYmFkZ2UtY29udGVudFtfbmdjb250ZW50LSVDT01QJV17YmFja2dyb3VuZDojZmY5ODAwO2NvbG9yOiNmZmZ9Lm1hdC1iYWRnZS13YXJuW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtYmFkZ2UtY29udGVudFtfbmdjb250ZW50LSVDT01QJV17Y29sb3I6I2ZmZjtiYWNrZ3JvdW5kOiNmNDQzMzZ9Lm1hdC1iYWRnZVtfbmdjb250ZW50LSVDT01QJV17cG9zaXRpb246cmVsYXRpdmV9Lm1hdC1iYWRnZS1oaWRkZW5bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1iYWRnZS1jb250ZW50W19uZ2NvbnRlbnQtJUNPTVAlXXtkaXNwbGF5Om5vbmV9Lm1hdC1iYWRnZS1kaXNhYmxlZFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWJhZGdlLWNvbnRlbnRbX25nY29udGVudC0lQ09NUCVde2JhY2tncm91bmQ6I2I5YjliOTtjb2xvcjojNzU3NTc1fS5tYXQtYmFkZ2UtY29udGVudFtfbmdjb250ZW50LSVDT01QJV17cG9zaXRpb246YWJzb2x1dGU7dGV4dC1hbGlnbjpjZW50ZXI7ZGlzcGxheTppbmxpbmUtYmxvY2s7Ym9yZGVyLXJhZGl1czo1MCU7dHJhbnNpdGlvbjp0cmFuc2Zvcm0gMjAwbXMgZWFzZS1pbi1vdXQ7dHJhbnNmb3JtOnNjYWxlKDAuNik7b3ZlcmZsb3c6aGlkZGVuO3doaXRlLXNwYWNlOm5vd3JhcDt0ZXh0LW92ZXJmbG93OmVsbGlwc2lzO3BvaW50ZXItZXZlbnRzOm5vbmV9Lm5nLWFuaW1hdGUtZGlzYWJsZWRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1iYWRnZS1jb250ZW50W19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1iYWRnZS1jb250ZW50Ll9tYXQtYW5pbWF0aW9uLW5vb3BhYmxlW19uZ2NvbnRlbnQtJUNPTVAlXXt0cmFuc2l0aW9uOm5vbmV9Lm1hdC1iYWRnZS1jb250ZW50Lm1hdC1iYWRnZS1hY3RpdmVbX25nY29udGVudC0lQ09NUCVde3RyYW5zZm9ybTpub25lfS5tYXQtYmFkZ2Utc21hbGxbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1iYWRnZS1jb250ZW50W19uZ2NvbnRlbnQtJUNPTVAlXXt3aWR0aDoxNnB4O2hlaWdodDoxNnB4O2xpbmUtaGVpZ2h0OjE2cHh9Lm1hdC1iYWRnZS1zbWFsbC5tYXQtYmFkZ2UtYWJvdmVbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1iYWRnZS1jb250ZW50W19uZ2NvbnRlbnQtJUNPTVAlXXt0b3A6LThweH0ubWF0LWJhZGdlLXNtYWxsLm1hdC1iYWRnZS1iZWxvd1tfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWJhZGdlLWNvbnRlbnRbX25nY29udGVudC0lQ09NUCVde2JvdHRvbTotOHB4fS5tYXQtYmFkZ2Utc21hbGwubWF0LWJhZGdlLWJlZm9yZVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWJhZGdlLWNvbnRlbnRbX25nY29udGVudC0lQ09NUCVde2xlZnQ6LTE2cHh9W2Rpcj1ydGxdW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtYmFkZ2Utc21hbGwubWF0LWJhZGdlLWJlZm9yZVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWJhZGdlLWNvbnRlbnRbX25nY29udGVudC0lQ09NUCVde2xlZnQ6YXV0bztyaWdodDotMTZweH0ubWF0LWJhZGdlLXNtYWxsLm1hdC1iYWRnZS1hZnRlcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWJhZGdlLWNvbnRlbnRbX25nY29udGVudC0lQ09NUCVde3JpZ2h0Oi0xNnB4fVtkaXI9cnRsXVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWJhZGdlLXNtYWxsLm1hdC1iYWRnZS1hZnRlcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWJhZGdlLWNvbnRlbnRbX25nY29udGVudC0lQ09NUCVde3JpZ2h0OmF1dG87bGVmdDotMTZweH0ubWF0LWJhZGdlLXNtYWxsLm1hdC1iYWRnZS1vdmVybGFwLm1hdC1iYWRnZS1iZWZvcmVbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1iYWRnZS1jb250ZW50W19uZ2NvbnRlbnQtJUNPTVAlXXtsZWZ0Oi04cHh9W2Rpcj1ydGxdW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtYmFkZ2Utc21hbGwubWF0LWJhZGdlLW92ZXJsYXAubWF0LWJhZGdlLWJlZm9yZVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWJhZGdlLWNvbnRlbnRbX25nY29udGVudC0lQ09NUCVde2xlZnQ6YXV0bztyaWdodDotOHB4fS5tYXQtYmFkZ2Utc21hbGwubWF0LWJhZGdlLW92ZXJsYXAubWF0LWJhZGdlLWFmdGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtYmFkZ2UtY29udGVudFtfbmdjb250ZW50LSVDT01QJV17cmlnaHQ6LThweH1bZGlyPXJ0bF1bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1iYWRnZS1zbWFsbC5tYXQtYmFkZ2Utb3ZlcmxhcC5tYXQtYmFkZ2UtYWZ0ZXJbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1iYWRnZS1jb250ZW50W19uZ2NvbnRlbnQtJUNPTVAlXXtyaWdodDphdXRvO2xlZnQ6LThweH0ubWF0LWJhZGdlLW1lZGl1bVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWJhZGdlLWNvbnRlbnRbX25nY29udGVudC0lQ09NUCVde3dpZHRoOjIycHg7aGVpZ2h0OjIycHg7bGluZS1oZWlnaHQ6MjJweH0ubWF0LWJhZGdlLW1lZGl1bS5tYXQtYmFkZ2UtYWJvdmVbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1iYWRnZS1jb250ZW50W19uZ2NvbnRlbnQtJUNPTVAlXXt0b3A6LTExcHh9Lm1hdC1iYWRnZS1tZWRpdW0ubWF0LWJhZGdlLWJlbG93W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtYmFkZ2UtY29udGVudFtfbmdjb250ZW50LSVDT01QJV17Ym90dG9tOi0xMXB4fS5tYXQtYmFkZ2UtbWVkaXVtLm1hdC1iYWRnZS1iZWZvcmVbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1iYWRnZS1jb250ZW50W19uZ2NvbnRlbnQtJUNPTVAlXXtsZWZ0Oi0yMnB4fVtkaXI9cnRsXVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWJhZGdlLW1lZGl1bS5tYXQtYmFkZ2UtYmVmb3JlW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtYmFkZ2UtY29udGVudFtfbmdjb250ZW50LSVDT01QJV17bGVmdDphdXRvO3JpZ2h0Oi0yMnB4fS5tYXQtYmFkZ2UtbWVkaXVtLm1hdC1iYWRnZS1hZnRlcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWJhZGdlLWNvbnRlbnRbX25nY29udGVudC0lQ09NUCVde3JpZ2h0Oi0yMnB4fVtkaXI9cnRsXVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWJhZGdlLW1lZGl1bS5tYXQtYmFkZ2UtYWZ0ZXJbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1iYWRnZS1jb250ZW50W19uZ2NvbnRlbnQtJUNPTVAlXXtyaWdodDphdXRvO2xlZnQ6LTIycHh9Lm1hdC1iYWRnZS1tZWRpdW0ubWF0LWJhZGdlLW92ZXJsYXAubWF0LWJhZGdlLWJlZm9yZVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWJhZGdlLWNvbnRlbnRbX25nY29udGVudC0lQ09NUCVde2xlZnQ6LTExcHh9W2Rpcj1ydGxdW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtYmFkZ2UtbWVkaXVtLm1hdC1iYWRnZS1vdmVybGFwLm1hdC1iYWRnZS1iZWZvcmVbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1iYWRnZS1jb250ZW50W19uZ2NvbnRlbnQtJUNPTVAlXXtsZWZ0OmF1dG87cmlnaHQ6LTExcHh9Lm1hdC1iYWRnZS1tZWRpdW0ubWF0LWJhZGdlLW92ZXJsYXAubWF0LWJhZGdlLWFmdGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtYmFkZ2UtY29udGVudFtfbmdjb250ZW50LSVDT01QJV17cmlnaHQ6LTExcHh9W2Rpcj1ydGxdW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtYmFkZ2UtbWVkaXVtLm1hdC1iYWRnZS1vdmVybGFwLm1hdC1iYWRnZS1hZnRlcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWJhZGdlLWNvbnRlbnRbX25nY29udGVudC0lQ09NUCVde3JpZ2h0OmF1dG87bGVmdDotMTFweH0ubWF0LWJhZGdlLWxhcmdlW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtYmFkZ2UtY29udGVudFtfbmdjb250ZW50LSVDT01QJV17d2lkdGg6MjhweDtoZWlnaHQ6MjhweDtsaW5lLWhlaWdodDoyOHB4fS5tYXQtYmFkZ2UtbGFyZ2UubWF0LWJhZGdlLWFib3ZlW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtYmFkZ2UtY29udGVudFtfbmdjb250ZW50LSVDT01QJV17dG9wOi0xNHB4fS5tYXQtYmFkZ2UtbGFyZ2UubWF0LWJhZGdlLWJlbG93W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtYmFkZ2UtY29udGVudFtfbmdjb250ZW50LSVDT01QJV17Ym90dG9tOi0xNHB4fS5tYXQtYmFkZ2UtbGFyZ2UubWF0LWJhZGdlLWJlZm9yZVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWJhZGdlLWNvbnRlbnRbX25nY29udGVudC0lQ09NUCVde2xlZnQ6LTI4cHh9W2Rpcj1ydGxdW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtYmFkZ2UtbGFyZ2UubWF0LWJhZGdlLWJlZm9yZVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWJhZGdlLWNvbnRlbnRbX25nY29udGVudC0lQ09NUCVde2xlZnQ6YXV0bztyaWdodDotMjhweH0ubWF0LWJhZGdlLWxhcmdlLm1hdC1iYWRnZS1hZnRlcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWJhZGdlLWNvbnRlbnRbX25nY29udGVudC0lQ09NUCVde3JpZ2h0Oi0yOHB4fVtkaXI9cnRsXVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWJhZGdlLWxhcmdlLm1hdC1iYWRnZS1hZnRlcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWJhZGdlLWNvbnRlbnRbX25nY29udGVudC0lQ09NUCVde3JpZ2h0OmF1dG87bGVmdDotMjhweH0ubWF0LWJhZGdlLWxhcmdlLm1hdC1iYWRnZS1vdmVybGFwLm1hdC1iYWRnZS1iZWZvcmVbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1iYWRnZS1jb250ZW50W19uZ2NvbnRlbnQtJUNPTVAlXXtsZWZ0Oi0xNHB4fVtkaXI9cnRsXVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWJhZGdlLWxhcmdlLm1hdC1iYWRnZS1vdmVybGFwLm1hdC1iYWRnZS1iZWZvcmVbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1iYWRnZS1jb250ZW50W19uZ2NvbnRlbnQtJUNPTVAlXXtsZWZ0OmF1dG87cmlnaHQ6LTE0cHh9Lm1hdC1iYWRnZS1sYXJnZS5tYXQtYmFkZ2Utb3ZlcmxhcC5tYXQtYmFkZ2UtYWZ0ZXJbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1iYWRnZS1jb250ZW50W19uZ2NvbnRlbnQtJUNPTVAlXXtyaWdodDotMTRweH1bZGlyPXJ0bF1bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1iYWRnZS1sYXJnZS5tYXQtYmFkZ2Utb3ZlcmxhcC5tYXQtYmFkZ2UtYWZ0ZXJbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1iYWRnZS1jb250ZW50W19uZ2NvbnRlbnQtJUNPTVAlXXtyaWdodDphdXRvO2xlZnQ6LTE0cHh9Lm1hdC1ib3R0b20tc2hlZXQtY29udGFpbmVyW19uZ2NvbnRlbnQtJUNPTVAlXXtib3gtc2hhZG93OjBweCA4cHggMTBweCAtNXB4IHJnYmEoMCwgMCwgMCwgMC4yKSwwcHggMTZweCAyNHB4IDJweCByZ2JhKDAsIDAsIDAsIDAuMTQpLDBweCA2cHggMzBweCA1cHggcmdiYSgwLCAwLCAwLCAwLjEyKTtiYWNrZ3JvdW5kOiNmZmY7Y29sb3I6IzIxMjEyMX0ubWF0LWJ1dHRvbltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtaWNvbi1idXR0b25bX25nY29udGVudC0lQ09NUCVdLCAubWF0LXN0cm9rZWQtYnV0dG9uW19uZ2NvbnRlbnQtJUNPTVAlXXtjb2xvcjppbmhlcml0O2JhY2tncm91bmQ6dHJhbnNwYXJlbnR9Lm1hdC1idXR0b24ubWF0LXByaW1hcnlbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWljb24tYnV0dG9uLm1hdC1wcmltYXJ5W19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1zdHJva2VkLWJ1dHRvbi5tYXQtcHJpbWFyeVtfbmdjb250ZW50LSVDT01QJV17Y29sb3I6I2Y1N2MwMH0ubWF0LWJ1dHRvbi5tYXQtYWNjZW50W19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1pY29uLWJ1dHRvbi5tYXQtYWNjZW50W19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1zdHJva2VkLWJ1dHRvbi5tYXQtYWNjZW50W19uZ2NvbnRlbnQtJUNPTVAlXXtjb2xvcjojZmY5ODAwfS5tYXQtYnV0dG9uLm1hdC13YXJuW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1pY29uLWJ1dHRvbi5tYXQtd2Fybltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtc3Ryb2tlZC1idXR0b24ubWF0LXdhcm5bX25nY29udGVudC0lQ09NUCVde2NvbG9yOiNmNDQzMzZ9Lm1hdC1idXR0b24ubWF0LXByaW1hcnkubWF0LWJ1dHRvbi1kaXNhYmxlZFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtYnV0dG9uLm1hdC1hY2NlbnQubWF0LWJ1dHRvbi1kaXNhYmxlZFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtYnV0dG9uLm1hdC13YXJuLm1hdC1idXR0b24tZGlzYWJsZWRbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWJ1dHRvbi5tYXQtYnV0dG9uLWRpc2FibGVkLm1hdC1idXR0b24tZGlzYWJsZWRbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWljb24tYnV0dG9uLm1hdC1wcmltYXJ5Lm1hdC1idXR0b24tZGlzYWJsZWRbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWljb24tYnV0dG9uLm1hdC1hY2NlbnQubWF0LWJ1dHRvbi1kaXNhYmxlZFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtaWNvbi1idXR0b24ubWF0LXdhcm4ubWF0LWJ1dHRvbi1kaXNhYmxlZFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtaWNvbi1idXR0b24ubWF0LWJ1dHRvbi1kaXNhYmxlZC5tYXQtYnV0dG9uLWRpc2FibGVkW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1zdHJva2VkLWJ1dHRvbi5tYXQtcHJpbWFyeS5tYXQtYnV0dG9uLWRpc2FibGVkW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1zdHJva2VkLWJ1dHRvbi5tYXQtYWNjZW50Lm1hdC1idXR0b24tZGlzYWJsZWRbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXN0cm9rZWQtYnV0dG9uLm1hdC13YXJuLm1hdC1idXR0b24tZGlzYWJsZWRbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXN0cm9rZWQtYnV0dG9uLm1hdC1idXR0b24tZGlzYWJsZWQubWF0LWJ1dHRvbi1kaXNhYmxlZFtfbmdjb250ZW50LSVDT01QJV17Y29sb3I6cmdiYSgwLDAsMCwuMjYpfS5tYXQtYnV0dG9uLm1hdC1wcmltYXJ5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtYnV0dG9uLWZvY3VzLW92ZXJsYXlbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWljb24tYnV0dG9uLm1hdC1wcmltYXJ5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtYnV0dG9uLWZvY3VzLW92ZXJsYXlbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXN0cm9rZWQtYnV0dG9uLm1hdC1wcmltYXJ5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtYnV0dG9uLWZvY3VzLW92ZXJsYXlbX25nY29udGVudC0lQ09NUCVde2JhY2tncm91bmQtY29sb3I6I2Y1N2MwMH0ubWF0LWJ1dHRvbi5tYXQtYWNjZW50W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtYnV0dG9uLWZvY3VzLW92ZXJsYXlbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWljb24tYnV0dG9uLm1hdC1hY2NlbnRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1idXR0b24tZm9jdXMtb3ZlcmxheVtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtc3Ryb2tlZC1idXR0b24ubWF0LWFjY2VudFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWJ1dHRvbi1mb2N1cy1vdmVybGF5W19uZ2NvbnRlbnQtJUNPTVAlXXtiYWNrZ3JvdW5kLWNvbG9yOiNmZjk4MDB9Lm1hdC1idXR0b24ubWF0LXdhcm5bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1idXR0b24tZm9jdXMtb3ZlcmxheVtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtaWNvbi1idXR0b24ubWF0LXdhcm5bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1idXR0b24tZm9jdXMtb3ZlcmxheVtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtc3Ryb2tlZC1idXR0b24ubWF0LXdhcm5bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1idXR0b24tZm9jdXMtb3ZlcmxheVtfbmdjb250ZW50LSVDT01QJV17YmFja2dyb3VuZC1jb2xvcjojZjQ0MzM2fS5tYXQtYnV0dG9uLm1hdC1idXR0b24tZGlzYWJsZWRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1idXR0b24tZm9jdXMtb3ZlcmxheVtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtaWNvbi1idXR0b24ubWF0LWJ1dHRvbi1kaXNhYmxlZFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWJ1dHRvbi1mb2N1cy1vdmVybGF5W19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1zdHJva2VkLWJ1dHRvbi5tYXQtYnV0dG9uLWRpc2FibGVkW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtYnV0dG9uLWZvY3VzLW92ZXJsYXlbX25nY29udGVudC0lQ09NUCVde2JhY2tncm91bmQtY29sb3I6dHJhbnNwYXJlbnR9Lm1hdC1idXR0b25bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1yaXBwbGUtZWxlbWVudFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtaWNvbi1idXR0b25bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1yaXBwbGUtZWxlbWVudFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtc3Ryb2tlZC1idXR0b25bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1yaXBwbGUtZWxlbWVudFtfbmdjb250ZW50LSVDT01QJV17b3BhY2l0eTouMTtiYWNrZ3JvdW5kLWNvbG9yOmN1cnJlbnRDb2xvcn0ubWF0LWJ1dHRvbi1mb2N1cy1vdmVybGF5W19uZ2NvbnRlbnQtJUNPTVAlXXtiYWNrZ3JvdW5kOiMwMDB9Lm1hdC1zdHJva2VkLWJ1dHRvbltfbmdjb250ZW50LSVDT01QJV06bm90KC5tYXQtYnV0dG9uLWRpc2FibGVkKXtib3JkZXItY29sb3I6cmdiYSgwLDAsMCwuMTIpfS5tYXQtZmxhdC1idXR0b25bX25nY29udGVudC0lQ09NUCVdLCAubWF0LXJhaXNlZC1idXR0b25bX25nY29udGVudC0lQ09NUCVdLCAubWF0LWZhYltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtbWluaS1mYWJbX25nY29udGVudC0lQ09NUCVde2NvbG9yOiMyMTIxMjE7YmFja2dyb3VuZC1jb2xvcjojZmZmfS5tYXQtZmxhdC1idXR0b24ubWF0LXByaW1hcnlbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXJhaXNlZC1idXR0b24ubWF0LXByaW1hcnlbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWZhYi5tYXQtcHJpbWFyeVtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtbWluaS1mYWIubWF0LXByaW1hcnlbX25nY29udGVudC0lQ09NUCVde2NvbG9yOiNmZmZ9Lm1hdC1mbGF0LWJ1dHRvbi5tYXQtYWNjZW50W19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1yYWlzZWQtYnV0dG9uLm1hdC1hY2NlbnRbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWZhYi5tYXQtYWNjZW50W19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1taW5pLWZhYi5tYXQtYWNjZW50W19uZ2NvbnRlbnQtJUNPTVAlXXtjb2xvcjojZmZmfS5tYXQtZmxhdC1idXR0b24ubWF0LXdhcm5bX25nY29udGVudC0lQ09NUCVdLCAubWF0LXJhaXNlZC1idXR0b24ubWF0LXdhcm5bX25nY29udGVudC0lQ09NUCVdLCAubWF0LWZhYi5tYXQtd2Fybltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtbWluaS1mYWIubWF0LXdhcm5bX25nY29udGVudC0lQ09NUCVde2NvbG9yOiNmZmZ9Lm1hdC1mbGF0LWJ1dHRvbi5tYXQtcHJpbWFyeS5tYXQtYnV0dG9uLWRpc2FibGVkW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1mbGF0LWJ1dHRvbi5tYXQtYWNjZW50Lm1hdC1idXR0b24tZGlzYWJsZWRbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWZsYXQtYnV0dG9uLm1hdC13YXJuLm1hdC1idXR0b24tZGlzYWJsZWRbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWZsYXQtYnV0dG9uLm1hdC1idXR0b24tZGlzYWJsZWQubWF0LWJ1dHRvbi1kaXNhYmxlZFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtcmFpc2VkLWJ1dHRvbi5tYXQtcHJpbWFyeS5tYXQtYnV0dG9uLWRpc2FibGVkW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1yYWlzZWQtYnV0dG9uLm1hdC1hY2NlbnQubWF0LWJ1dHRvbi1kaXNhYmxlZFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtcmFpc2VkLWJ1dHRvbi5tYXQtd2Fybi5tYXQtYnV0dG9uLWRpc2FibGVkW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1yYWlzZWQtYnV0dG9uLm1hdC1idXR0b24tZGlzYWJsZWQubWF0LWJ1dHRvbi1kaXNhYmxlZFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtZmFiLm1hdC1wcmltYXJ5Lm1hdC1idXR0b24tZGlzYWJsZWRbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWZhYi5tYXQtYWNjZW50Lm1hdC1idXR0b24tZGlzYWJsZWRbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWZhYi5tYXQtd2Fybi5tYXQtYnV0dG9uLWRpc2FibGVkW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1mYWIubWF0LWJ1dHRvbi1kaXNhYmxlZC5tYXQtYnV0dG9uLWRpc2FibGVkW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1taW5pLWZhYi5tYXQtcHJpbWFyeS5tYXQtYnV0dG9uLWRpc2FibGVkW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1taW5pLWZhYi5tYXQtYWNjZW50Lm1hdC1idXR0b24tZGlzYWJsZWRbX25nY29udGVudC0lQ09NUCVdLCAubWF0LW1pbmktZmFiLm1hdC13YXJuLm1hdC1idXR0b24tZGlzYWJsZWRbX25nY29udGVudC0lQ09NUCVdLCAubWF0LW1pbmktZmFiLm1hdC1idXR0b24tZGlzYWJsZWQubWF0LWJ1dHRvbi1kaXNhYmxlZFtfbmdjb250ZW50LSVDT01QJV17Y29sb3I6cmdiYSgwLDAsMCwuMjYpfS5tYXQtZmxhdC1idXR0b24ubWF0LXByaW1hcnlbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXJhaXNlZC1idXR0b24ubWF0LXByaW1hcnlbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWZhYi5tYXQtcHJpbWFyeVtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtbWluaS1mYWIubWF0LXByaW1hcnlbX25nY29udGVudC0lQ09NUCVde2JhY2tncm91bmQtY29sb3I6I2Y1N2MwMH0ubWF0LWZsYXQtYnV0dG9uLm1hdC1hY2NlbnRbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXJhaXNlZC1idXR0b24ubWF0LWFjY2VudFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtZmFiLm1hdC1hY2NlbnRbX25nY29udGVudC0lQ09NUCVdLCAubWF0LW1pbmktZmFiLm1hdC1hY2NlbnRbX25nY29udGVudC0lQ09NUCVde2JhY2tncm91bmQtY29sb3I6I2ZmOTgwMH0ubWF0LWZsYXQtYnV0dG9uLm1hdC13YXJuW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1yYWlzZWQtYnV0dG9uLm1hdC13YXJuW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1mYWIubWF0LXdhcm5bX25nY29udGVudC0lQ09NUCVdLCAubWF0LW1pbmktZmFiLm1hdC13YXJuW19uZ2NvbnRlbnQtJUNPTVAlXXtiYWNrZ3JvdW5kLWNvbG9yOiNmNDQzMzZ9Lm1hdC1mbGF0LWJ1dHRvbi5tYXQtcHJpbWFyeS5tYXQtYnV0dG9uLWRpc2FibGVkW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1mbGF0LWJ1dHRvbi5tYXQtYWNjZW50Lm1hdC1idXR0b24tZGlzYWJsZWRbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWZsYXQtYnV0dG9uLm1hdC13YXJuLm1hdC1idXR0b24tZGlzYWJsZWRbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWZsYXQtYnV0dG9uLm1hdC1idXR0b24tZGlzYWJsZWQubWF0LWJ1dHRvbi1kaXNhYmxlZFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtcmFpc2VkLWJ1dHRvbi5tYXQtcHJpbWFyeS5tYXQtYnV0dG9uLWRpc2FibGVkW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1yYWlzZWQtYnV0dG9uLm1hdC1hY2NlbnQubWF0LWJ1dHRvbi1kaXNhYmxlZFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtcmFpc2VkLWJ1dHRvbi5tYXQtd2Fybi5tYXQtYnV0dG9uLWRpc2FibGVkW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1yYWlzZWQtYnV0dG9uLm1hdC1idXR0b24tZGlzYWJsZWQubWF0LWJ1dHRvbi1kaXNhYmxlZFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtZmFiLm1hdC1wcmltYXJ5Lm1hdC1idXR0b24tZGlzYWJsZWRbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWZhYi5tYXQtYWNjZW50Lm1hdC1idXR0b24tZGlzYWJsZWRbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWZhYi5tYXQtd2Fybi5tYXQtYnV0dG9uLWRpc2FibGVkW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1mYWIubWF0LWJ1dHRvbi1kaXNhYmxlZC5tYXQtYnV0dG9uLWRpc2FibGVkW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1taW5pLWZhYi5tYXQtcHJpbWFyeS5tYXQtYnV0dG9uLWRpc2FibGVkW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1taW5pLWZhYi5tYXQtYWNjZW50Lm1hdC1idXR0b24tZGlzYWJsZWRbX25nY29udGVudC0lQ09NUCVdLCAubWF0LW1pbmktZmFiLm1hdC13YXJuLm1hdC1idXR0b24tZGlzYWJsZWRbX25nY29udGVudC0lQ09NUCVdLCAubWF0LW1pbmktZmFiLm1hdC1idXR0b24tZGlzYWJsZWQubWF0LWJ1dHRvbi1kaXNhYmxlZFtfbmdjb250ZW50LSVDT01QJV17YmFja2dyb3VuZC1jb2xvcjpyZ2JhKDAsMCwwLC4xMil9Lm1hdC1mbGF0LWJ1dHRvbi5tYXQtcHJpbWFyeVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXJpcHBsZS1lbGVtZW50W19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1yYWlzZWQtYnV0dG9uLm1hdC1wcmltYXJ5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtcmlwcGxlLWVsZW1lbnRbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWZhYi5tYXQtcHJpbWFyeVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXJpcHBsZS1lbGVtZW50W19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1taW5pLWZhYi5tYXQtcHJpbWFyeVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXJpcHBsZS1lbGVtZW50W19uZ2NvbnRlbnQtJUNPTVAlXXtiYWNrZ3JvdW5kLWNvbG9yOnJnYmEoMjU1LDI1NSwyNTUsLjEpfS5tYXQtZmxhdC1idXR0b24ubWF0LWFjY2VudFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXJpcHBsZS1lbGVtZW50W19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1yYWlzZWQtYnV0dG9uLm1hdC1hY2NlbnRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1yaXBwbGUtZWxlbWVudFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtZmFiLm1hdC1hY2NlbnRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1yaXBwbGUtZWxlbWVudFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtbWluaS1mYWIubWF0LWFjY2VudFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXJpcHBsZS1lbGVtZW50W19uZ2NvbnRlbnQtJUNPTVAlXXtiYWNrZ3JvdW5kLWNvbG9yOnJnYmEoMjU1LDI1NSwyNTUsLjEpfS5tYXQtZmxhdC1idXR0b24ubWF0LXdhcm5bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1yaXBwbGUtZWxlbWVudFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtcmFpc2VkLWJ1dHRvbi5tYXQtd2Fybltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXJpcHBsZS1lbGVtZW50W19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1mYWIubWF0LXdhcm5bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1yaXBwbGUtZWxlbWVudFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtbWluaS1mYWIubWF0LXdhcm5bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1yaXBwbGUtZWxlbWVudFtfbmdjb250ZW50LSVDT01QJV17YmFja2dyb3VuZC1jb2xvcjpyZ2JhKDI1NSwyNTUsMjU1LC4xKX0ubWF0LXN0cm9rZWQtYnV0dG9uW19uZ2NvbnRlbnQtJUNPTVAlXTpub3QoW2NsYXNzKj1tYXQtZWxldmF0aW9uLXpdKSwgLm1hdC1mbGF0LWJ1dHRvbltfbmdjb250ZW50LSVDT01QJV06bm90KFtjbGFzcyo9bWF0LWVsZXZhdGlvbi16XSl7Ym94LXNoYWRvdzowcHggMHB4IDBweCAwcHggcmdiYSgwLCAwLCAwLCAwLjIpLDBweCAwcHggMHB4IDBweCByZ2JhKDAsIDAsIDAsIDAuMTQpLDBweCAwcHggMHB4IDBweCByZ2JhKDAsIDAsIDAsIDAuMTIpfS5tYXQtcmFpc2VkLWJ1dHRvbltfbmdjb250ZW50LSVDT01QJV06bm90KFtjbGFzcyo9bWF0LWVsZXZhdGlvbi16XSl7Ym94LXNoYWRvdzowcHggM3B4IDFweCAtMnB4IHJnYmEoMCwgMCwgMCwgMC4yKSwwcHggMnB4IDJweCAwcHggcmdiYSgwLCAwLCAwLCAwLjE0KSwwcHggMXB4IDVweCAwcHggcmdiYSgwLCAwLCAwLCAwLjEyKX0ubWF0LXJhaXNlZC1idXR0b25bX25nY29udGVudC0lQ09NUCVdOm5vdCgubWF0LWJ1dHRvbi1kaXNhYmxlZCk6YWN0aXZlOm5vdChbY2xhc3MqPW1hdC1lbGV2YXRpb24tel0pe2JveC1zaGFkb3c6MHB4IDVweCA1cHggLTNweCByZ2JhKDAsIDAsIDAsIDAuMiksMHB4IDhweCAxMHB4IDFweCByZ2JhKDAsIDAsIDAsIDAuMTQpLDBweCAzcHggMTRweCAycHggcmdiYSgwLCAwLCAwLCAwLjEyKX0ubWF0LXJhaXNlZC1idXR0b24ubWF0LWJ1dHRvbi1kaXNhYmxlZFtfbmdjb250ZW50LSVDT01QJV06bm90KFtjbGFzcyo9bWF0LWVsZXZhdGlvbi16XSl7Ym94LXNoYWRvdzowcHggMHB4IDBweCAwcHggcmdiYSgwLCAwLCAwLCAwLjIpLDBweCAwcHggMHB4IDBweCByZ2JhKDAsIDAsIDAsIDAuMTQpLDBweCAwcHggMHB4IDBweCByZ2JhKDAsIDAsIDAsIDAuMTIpfS5tYXQtZmFiW19uZ2NvbnRlbnQtJUNPTVAlXTpub3QoW2NsYXNzKj1tYXQtZWxldmF0aW9uLXpdKSwgLm1hdC1taW5pLWZhYltfbmdjb250ZW50LSVDT01QJV06bm90KFtjbGFzcyo9bWF0LWVsZXZhdGlvbi16XSl7Ym94LXNoYWRvdzowcHggM3B4IDVweCAtMXB4IHJnYmEoMCwgMCwgMCwgMC4yKSwwcHggNnB4IDEwcHggMHB4IHJnYmEoMCwgMCwgMCwgMC4xNCksMHB4IDFweCAxOHB4IDBweCByZ2JhKDAsIDAsIDAsIDAuMTIpfS5tYXQtZmFiW19uZ2NvbnRlbnQtJUNPTVAlXTpub3QoLm1hdC1idXR0b24tZGlzYWJsZWQpOmFjdGl2ZTpub3QoW2NsYXNzKj1tYXQtZWxldmF0aW9uLXpdKSwgLm1hdC1taW5pLWZhYltfbmdjb250ZW50LSVDT01QJV06bm90KC5tYXQtYnV0dG9uLWRpc2FibGVkKTphY3RpdmU6bm90KFtjbGFzcyo9bWF0LWVsZXZhdGlvbi16XSl7Ym94LXNoYWRvdzowcHggN3B4IDhweCAtNHB4IHJnYmEoMCwgMCwgMCwgMC4yKSwwcHggMTJweCAxN3B4IDJweCByZ2JhKDAsIDAsIDAsIDAuMTQpLDBweCA1cHggMjJweCA0cHggcmdiYSgwLCAwLCAwLCAwLjEyKX0ubWF0LWZhYi5tYXQtYnV0dG9uLWRpc2FibGVkW19uZ2NvbnRlbnQtJUNPTVAlXTpub3QoW2NsYXNzKj1tYXQtZWxldmF0aW9uLXpdKSwgLm1hdC1taW5pLWZhYi5tYXQtYnV0dG9uLWRpc2FibGVkW19uZ2NvbnRlbnQtJUNPTVAlXTpub3QoW2NsYXNzKj1tYXQtZWxldmF0aW9uLXpdKXtib3gtc2hhZG93OjBweCAwcHggMHB4IDBweCByZ2JhKDAsIDAsIDAsIDAuMiksMHB4IDBweCAwcHggMHB4IHJnYmEoMCwgMCwgMCwgMC4xNCksMHB4IDBweCAwcHggMHB4IHJnYmEoMCwgMCwgMCwgMC4xMil9Lm1hdC1idXR0b24tdG9nZ2xlLXN0YW5kYWxvbmVbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWJ1dHRvbi10b2dnbGUtZ3JvdXBbX25nY29udGVudC0lQ09NUCVde2JveC1zaGFkb3c6MHB4IDNweCAxcHggLTJweCByZ2JhKDAsIDAsIDAsIDAuMiksMHB4IDJweCAycHggMHB4IHJnYmEoMCwgMCwgMCwgMC4xNCksMHB4IDFweCA1cHggMHB4IHJnYmEoMCwgMCwgMCwgMC4xMil9Lm1hdC1idXR0b24tdG9nZ2xlLXN0YW5kYWxvbmUubWF0LWJ1dHRvbi10b2dnbGUtYXBwZWFyYW5jZS1zdGFuZGFyZFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtYnV0dG9uLXRvZ2dsZS1ncm91cC1hcHBlYXJhbmNlLXN0YW5kYXJkW19uZ2NvbnRlbnQtJUNPTVAlXXtib3gtc2hhZG93Om5vbmV9Lm1hdC1idXR0b24tdG9nZ2xlW19uZ2NvbnRlbnQtJUNPTVAlXXtjb2xvcjpyZ2JhKDAsMCwwLC4zOCl9Lm1hdC1idXR0b24tdG9nZ2xlW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtYnV0dG9uLXRvZ2dsZS1mb2N1cy1vdmVybGF5W19uZ2NvbnRlbnQtJUNPTVAlXXtiYWNrZ3JvdW5kLWNvbG9yOnJnYmEoMCwwLDAsLjEyKX0ubWF0LWJ1dHRvbi10b2dnbGUtYXBwZWFyYW5jZS1zdGFuZGFyZFtfbmdjb250ZW50LSVDT01QJV17Y29sb3I6IzIxMjEyMTtiYWNrZ3JvdW5kOiNmZmZ9Lm1hdC1idXR0b24tdG9nZ2xlLWFwcGVhcmFuY2Utc3RhbmRhcmRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1idXR0b24tdG9nZ2xlLWZvY3VzLW92ZXJsYXlbX25nY29udGVudC0lQ09NUCVde2JhY2tncm91bmQtY29sb3I6IzAwMH0ubWF0LWJ1dHRvbi10b2dnbGUtZ3JvdXAtYXBwZWFyYW5jZS1zdGFuZGFyZFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWJ1dHRvbi10b2dnbGVbX25nY29udGVudC0lQ09NUCVdICsgLm1hdC1idXR0b24tdG9nZ2xlW19uZ2NvbnRlbnQtJUNPTVAlXXtib3JkZXItbGVmdDpzb2xpZCAxcHggcmdiYSgwLDAsMCwuMTIpfVtkaXI9cnRsXVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWJ1dHRvbi10b2dnbGUtZ3JvdXAtYXBwZWFyYW5jZS1zdGFuZGFyZFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWJ1dHRvbi10b2dnbGVbX25nY29udGVudC0lQ09NUCVdICsgLm1hdC1idXR0b24tdG9nZ2xlW19uZ2NvbnRlbnQtJUNPTVAlXXtib3JkZXItbGVmdDpub25lO2JvcmRlci1yaWdodDpzb2xpZCAxcHggcmdiYSgwLDAsMCwuMTIpfS5tYXQtYnV0dG9uLXRvZ2dsZS1ncm91cC1hcHBlYXJhbmNlLXN0YW5kYXJkLm1hdC1idXR0b24tdG9nZ2xlLXZlcnRpY2FsW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtYnV0dG9uLXRvZ2dsZVtfbmdjb250ZW50LSVDT01QJV0gKyAubWF0LWJ1dHRvbi10b2dnbGVbX25nY29udGVudC0lQ09NUCVde2JvcmRlci1sZWZ0Om5vbmU7Ym9yZGVyLXJpZ2h0Om5vbmU7Ym9yZGVyLXRvcDpzb2xpZCAxcHggcmdiYSgwLDAsMCwuMTIpfS5tYXQtYnV0dG9uLXRvZ2dsZS1jaGVja2VkW19uZ2NvbnRlbnQtJUNPTVAlXXtiYWNrZ3JvdW5kLWNvbG9yOiNlMGUwZTA7Y29sb3I6IzYxNjE2MX0ubWF0LWJ1dHRvbi10b2dnbGUtY2hlY2tlZC5tYXQtYnV0dG9uLXRvZ2dsZS1hcHBlYXJhbmNlLXN0YW5kYXJkW19uZ2NvbnRlbnQtJUNPTVAlXXtjb2xvcjojMjEyMTIxfS5tYXQtYnV0dG9uLXRvZ2dsZS1kaXNhYmxlZFtfbmdjb250ZW50LSVDT01QJV17Y29sb3I6cmdiYSgwLDAsMCwuMjYpO2JhY2tncm91bmQtY29sb3I6I2VlZX0ubWF0LWJ1dHRvbi10b2dnbGUtZGlzYWJsZWQubWF0LWJ1dHRvbi10b2dnbGUtYXBwZWFyYW5jZS1zdGFuZGFyZFtfbmdjb250ZW50LSVDT01QJV17YmFja2dyb3VuZDojZmZmfS5tYXQtYnV0dG9uLXRvZ2dsZS1kaXNhYmxlZC5tYXQtYnV0dG9uLXRvZ2dsZS1jaGVja2VkW19uZ2NvbnRlbnQtJUNPTVAlXXtiYWNrZ3JvdW5kLWNvbG9yOiNiZGJkYmR9Lm1hdC1idXR0b24tdG9nZ2xlLXN0YW5kYWxvbmUubWF0LWJ1dHRvbi10b2dnbGUtYXBwZWFyYW5jZS1zdGFuZGFyZFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtYnV0dG9uLXRvZ2dsZS1ncm91cC1hcHBlYXJhbmNlLXN0YW5kYXJkW19uZ2NvbnRlbnQtJUNPTVAlXXtib3JkZXI6c29saWQgMXB4IHJnYmEoMCwwLDAsLjEyKX0ubWF0LWJ1dHRvbi10b2dnbGUtYXBwZWFyYW5jZS1zdGFuZGFyZFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWJ1dHRvbi10b2dnbGUtbGFiZWwtY29udGVudFtfbmdjb250ZW50LSVDT01QJV17bGluZS1oZWlnaHQ6NDhweH0ubWF0LWNhcmRbX25nY29udGVudC0lQ09NUCVde2JhY2tncm91bmQ6I2ZmZjtjb2xvcjojMjEyMTIxfS5tYXQtY2FyZFtfbmdjb250ZW50LSVDT01QJV06bm90KFtjbGFzcyo9bWF0LWVsZXZhdGlvbi16XSl7Ym94LXNoYWRvdzowcHggMnB4IDFweCAtMXB4IHJnYmEoMCwgMCwgMCwgMC4yKSwwcHggMXB4IDFweCAwcHggcmdiYSgwLCAwLCAwLCAwLjE0KSwwcHggMXB4IDNweCAwcHggcmdiYSgwLCAwLCAwLCAwLjEyKX0ubWF0LWNhcmQubWF0LWNhcmQtZmxhdFtfbmdjb250ZW50LSVDT01QJV06bm90KFtjbGFzcyo9bWF0LWVsZXZhdGlvbi16XSl7Ym94LXNoYWRvdzowcHggMHB4IDBweCAwcHggcmdiYSgwLCAwLCAwLCAwLjIpLDBweCAwcHggMHB4IDBweCByZ2JhKDAsIDAsIDAsIDAuMTQpLDBweCAwcHggMHB4IDBweCByZ2JhKDAsIDAsIDAsIDAuMTIpfS5tYXQtY2FyZC1zdWJ0aXRsZVtfbmdjb250ZW50LSVDT01QJV17Y29sb3I6IzYxNjE2MX0ubWF0LWNoZWNrYm94LWZyYW1lW19uZ2NvbnRlbnQtJUNPTVAlXXtib3JkZXItY29sb3I6IzYxNjE2MX0ubWF0LWNoZWNrYm94LWNoZWNrbWFya1tfbmdjb250ZW50LSVDT01QJV17ZmlsbDojZmFmYWZhfS5tYXQtY2hlY2tib3gtY2hlY2ttYXJrLXBhdGhbX25nY29udGVudC0lQ09NUCVde3N0cm9rZTojZmFmYWZhICFpbXBvcnRhbnR9Lm1hdC1jaGVja2JveC1taXhlZG1hcmtbX25nY29udGVudC0lQ09NUCVde2JhY2tncm91bmQtY29sb3I6I2ZhZmFmYX0ubWF0LWNoZWNrYm94LWluZGV0ZXJtaW5hdGUubWF0LXByaW1hcnlbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1jaGVja2JveC1iYWNrZ3JvdW5kW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1jaGVja2JveC1jaGVja2VkLm1hdC1wcmltYXJ5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtY2hlY2tib3gtYmFja2dyb3VuZFtfbmdjb250ZW50LSVDT01QJV17YmFja2dyb3VuZC1jb2xvcjojZjU3YzAwfS5tYXQtY2hlY2tib3gtaW5kZXRlcm1pbmF0ZS5tYXQtYWNjZW50W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtY2hlY2tib3gtYmFja2dyb3VuZFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtY2hlY2tib3gtY2hlY2tlZC5tYXQtYWNjZW50W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtY2hlY2tib3gtYmFja2dyb3VuZFtfbmdjb250ZW50LSVDT01QJV17YmFja2dyb3VuZC1jb2xvcjojZmY5ODAwfS5tYXQtY2hlY2tib3gtaW5kZXRlcm1pbmF0ZS5tYXQtd2Fybltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWNoZWNrYm94LWJhY2tncm91bmRbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWNoZWNrYm94LWNoZWNrZWQubWF0LXdhcm5bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1jaGVja2JveC1iYWNrZ3JvdW5kW19uZ2NvbnRlbnQtJUNPTVAlXXtiYWNrZ3JvdW5kLWNvbG9yOiNmNDQzMzZ9Lm1hdC1jaGVja2JveC1kaXNhYmxlZC5tYXQtY2hlY2tib3gtY2hlY2tlZFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWNoZWNrYm94LWJhY2tncm91bmRbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWNoZWNrYm94LWRpc2FibGVkLm1hdC1jaGVja2JveC1pbmRldGVybWluYXRlW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtY2hlY2tib3gtYmFja2dyb3VuZFtfbmdjb250ZW50LSVDT01QJV17YmFja2dyb3VuZC1jb2xvcjojYjBiMGIwfS5tYXQtY2hlY2tib3gtZGlzYWJsZWRbX25nY29udGVudC0lQ09NUCVdOm5vdCgubWF0LWNoZWNrYm94LWNoZWNrZWQpICAgLm1hdC1jaGVja2JveC1mcmFtZVtfbmdjb250ZW50LSVDT01QJV17Ym9yZGVyLWNvbG9yOiNiMGIwYjB9Lm1hdC1jaGVja2JveC1kaXNhYmxlZFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWNoZWNrYm94LWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXtjb2xvcjojNjE2MTYxfS5tYXQtY2hlY2tib3hbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1yaXBwbGUtZWxlbWVudFtfbmdjb250ZW50LSVDT01QJV17YmFja2dyb3VuZC1jb2xvcjojMDAwfS5tYXQtY2hlY2tib3gtY2hlY2tlZFtfbmdjb250ZW50LSVDT01QJV06bm90KC5tYXQtY2hlY2tib3gtZGlzYWJsZWQpLm1hdC1wcmltYXJ5ICAgLm1hdC1yaXBwbGUtZWxlbWVudFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtY2hlY2tib3hbX25nY29udGVudC0lQ09NUCVdOmFjdGl2ZTpub3QoLm1hdC1jaGVja2JveC1kaXNhYmxlZCkubWF0LXByaW1hcnkgICAubWF0LXJpcHBsZS1lbGVtZW50W19uZ2NvbnRlbnQtJUNPTVAlXXtiYWNrZ3JvdW5kOiNmNTdjMDB9Lm1hdC1jaGVja2JveC1jaGVja2VkW19uZ2NvbnRlbnQtJUNPTVAlXTpub3QoLm1hdC1jaGVja2JveC1kaXNhYmxlZCkubWF0LWFjY2VudCAgIC5tYXQtcmlwcGxlLWVsZW1lbnRbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWNoZWNrYm94W19uZ2NvbnRlbnQtJUNPTVAlXTphY3RpdmU6bm90KC5tYXQtY2hlY2tib3gtZGlzYWJsZWQpLm1hdC1hY2NlbnQgICAubWF0LXJpcHBsZS1lbGVtZW50W19uZ2NvbnRlbnQtJUNPTVAlXXtiYWNrZ3JvdW5kOiNmZjk4MDB9Lm1hdC1jaGVja2JveC1jaGVja2VkW19uZ2NvbnRlbnQtJUNPTVAlXTpub3QoLm1hdC1jaGVja2JveC1kaXNhYmxlZCkubWF0LXdhcm4gICAubWF0LXJpcHBsZS1lbGVtZW50W19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1jaGVja2JveFtfbmdjb250ZW50LSVDT01QJV06YWN0aXZlOm5vdCgubWF0LWNoZWNrYm94LWRpc2FibGVkKS5tYXQtd2FybiAgIC5tYXQtcmlwcGxlLWVsZW1lbnRbX25nY29udGVudC0lQ09NUCVde2JhY2tncm91bmQ6I2Y0NDMzNn0ubWF0LWNoaXAubWF0LXN0YW5kYXJkLWNoaXBbX25nY29udGVudC0lQ09NUCVde2JhY2tncm91bmQtY29sb3I6I2UwZTBlMDtjb2xvcjojMjEyMTIxfS5tYXQtY2hpcC5tYXQtc3RhbmRhcmQtY2hpcFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWNoaXAtcmVtb3ZlW19uZ2NvbnRlbnQtJUNPTVAlXXtjb2xvcjojMjEyMTIxO29wYWNpdHk6LjR9Lm1hdC1jaGlwLm1hdC1zdGFuZGFyZC1jaGlwW19uZ2NvbnRlbnQtJUNPTVAlXTpub3QoLm1hdC1jaGlwLWRpc2FibGVkKTphY3RpdmV7Ym94LXNoYWRvdzowcHggM3B4IDNweCAtMnB4IHJnYmEoMCwgMCwgMCwgMC4yKSwwcHggM3B4IDRweCAwcHggcmdiYSgwLCAwLCAwLCAwLjE0KSwwcHggMXB4IDhweCAwcHggcmdiYSgwLCAwLCAwLCAwLjEyKX0ubWF0LWNoaXAubWF0LXN0YW5kYXJkLWNoaXBbX25nY29udGVudC0lQ09NUCVdOm5vdCgubWF0LWNoaXAtZGlzYWJsZWQpICAgLm1hdC1jaGlwLXJlbW92ZVtfbmdjb250ZW50LSVDT01QJV06aG92ZXJ7b3BhY2l0eTouNTR9Lm1hdC1jaGlwLm1hdC1zdGFuZGFyZC1jaGlwLm1hdC1jaGlwLWRpc2FibGVkW19uZ2NvbnRlbnQtJUNPTVAlXXtvcGFjaXR5Oi40fS5tYXQtY2hpcC5tYXQtc3RhbmRhcmQtY2hpcFtfbmdjb250ZW50LSVDT01QJV06OmFmdGVye2JhY2tncm91bmQ6IzAwMH0ubWF0LWNoaXAubWF0LXN0YW5kYXJkLWNoaXAubWF0LWNoaXAtc2VsZWN0ZWQubWF0LXByaW1hcnlbX25nY29udGVudC0lQ09NUCVde2JhY2tncm91bmQtY29sb3I6I2Y1N2MwMDtjb2xvcjojZmZmfS5tYXQtY2hpcC5tYXQtc3RhbmRhcmQtY2hpcC5tYXQtY2hpcC1zZWxlY3RlZC5tYXQtcHJpbWFyeVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWNoaXAtcmVtb3ZlW19uZ2NvbnRlbnQtJUNPTVAlXXtjb2xvcjojZmZmO29wYWNpdHk6LjR9Lm1hdC1jaGlwLm1hdC1zdGFuZGFyZC1jaGlwLm1hdC1jaGlwLXNlbGVjdGVkLm1hdC1wcmltYXJ5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtcmlwcGxlLWVsZW1lbnRbX25nY29udGVudC0lQ09NUCVde2JhY2tncm91bmQtY29sb3I6cmdiYSgyNTUsMjU1LDI1NSwuMSl9Lm1hdC1jaGlwLm1hdC1zdGFuZGFyZC1jaGlwLm1hdC1jaGlwLXNlbGVjdGVkLm1hdC13YXJuW19uZ2NvbnRlbnQtJUNPTVAlXXtiYWNrZ3JvdW5kLWNvbG9yOiNmNDQzMzY7Y29sb3I6I2ZmZn0ubWF0LWNoaXAubWF0LXN0YW5kYXJkLWNoaXAubWF0LWNoaXAtc2VsZWN0ZWQubWF0LXdhcm5bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1jaGlwLXJlbW92ZVtfbmdjb250ZW50LSVDT01QJV17Y29sb3I6I2ZmZjtvcGFjaXR5Oi40fS5tYXQtY2hpcC5tYXQtc3RhbmRhcmQtY2hpcC5tYXQtY2hpcC1zZWxlY3RlZC5tYXQtd2Fybltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXJpcHBsZS1lbGVtZW50W19uZ2NvbnRlbnQtJUNPTVAlXXtiYWNrZ3JvdW5kLWNvbG9yOnJnYmEoMjU1LDI1NSwyNTUsLjEpfS5tYXQtY2hpcC5tYXQtc3RhbmRhcmQtY2hpcC5tYXQtY2hpcC1zZWxlY3RlZC5tYXQtYWNjZW50W19uZ2NvbnRlbnQtJUNPTVAlXXtiYWNrZ3JvdW5kLWNvbG9yOiNmZjk4MDA7Y29sb3I6I2ZmZn0ubWF0LWNoaXAubWF0LXN0YW5kYXJkLWNoaXAubWF0LWNoaXAtc2VsZWN0ZWQubWF0LWFjY2VudFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWNoaXAtcmVtb3ZlW19uZ2NvbnRlbnQtJUNPTVAlXXtjb2xvcjojZmZmO29wYWNpdHk6LjR9Lm1hdC1jaGlwLm1hdC1zdGFuZGFyZC1jaGlwLm1hdC1jaGlwLXNlbGVjdGVkLm1hdC1hY2NlbnRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1yaXBwbGUtZWxlbWVudFtfbmdjb250ZW50LSVDT01QJV17YmFja2dyb3VuZC1jb2xvcjpyZ2JhKDI1NSwyNTUsMjU1LC4xKX0ubWF0LXRhYmxlW19uZ2NvbnRlbnQtJUNPTVAlXXtiYWNrZ3JvdW5kOiNmZmZ9Lm1hdC10YWJsZVtfbmdjb250ZW50LSVDT01QJV0gICB0aGVhZFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdGFibGVbX25nY29udGVudC0lQ09NUCVdICAgdGJvZHlbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXRhYmxlW19uZ2NvbnRlbnQtJUNPTVAlXSAgIHRmb290W19uZ2NvbnRlbnQtJUNPTVAlXSwgbWF0LWhlYWRlci1yb3dbX25nY29udGVudC0lQ09NUCVdLCBtYXQtcm93W19uZ2NvbnRlbnQtJUNPTVAlXSwgbWF0LWZvb3Rlci1yb3dbX25nY29udGVudC0lQ09NUCVdLCBbbWF0LWhlYWRlci1yb3ddW19uZ2NvbnRlbnQtJUNPTVAlXSwgW21hdC1yb3ddW19uZ2NvbnRlbnQtJUNPTVAlXSwgW21hdC1mb290ZXItcm93XVtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdGFibGUtc3RpY2t5W19uZ2NvbnRlbnQtJUNPTVAlXXtiYWNrZ3JvdW5kOmluaGVyaXR9bWF0LXJvd1tfbmdjb250ZW50LSVDT01QJV0sIG1hdC1oZWFkZXItcm93W19uZ2NvbnRlbnQtJUNPTVAlXSwgbWF0LWZvb3Rlci1yb3dbX25nY29udGVudC0lQ09NUCVdLCB0aC5tYXQtaGVhZGVyLWNlbGxbX25nY29udGVudC0lQ09NUCVdLCB0ZC5tYXQtY2VsbFtfbmdjb250ZW50LSVDT01QJV0sIHRkLm1hdC1mb290ZXItY2VsbFtfbmdjb250ZW50LSVDT01QJV17Ym9yZGVyLWJvdHRvbS1jb2xvcjpyZ2JhKDAsMCwwLC4xMil9Lm1hdC1oZWFkZXItY2VsbFtfbmdjb250ZW50LSVDT01QJV17Y29sb3I6IzYxNjE2MX0ubWF0LWNlbGxbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWZvb3Rlci1jZWxsW19uZ2NvbnRlbnQtJUNPTVAlXXtjb2xvcjojMjEyMTIxfS5tYXQtY2FsZW5kYXItYXJyb3dbX25nY29udGVudC0lQ09NUCVde2JvcmRlci10b3AtY29sb3I6cmdiYSgwLDAsMCwuNTQpfS5tYXQtZGF0ZXBpY2tlci10b2dnbGVbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWRhdGVwaWNrZXItY29udGVudFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWNhbGVuZGFyLW5leHQtYnV0dG9uW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1kYXRlcGlja2VyLWNvbnRlbnRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1jYWxlbmRhci1wcmV2aW91cy1idXR0b25bX25nY29udGVudC0lQ09NUCVde2NvbG9yOnJnYmEoMCwwLDAsLjU0KX0ubWF0LWNhbGVuZGFyLXRhYmxlLWhlYWRlcltfbmdjb250ZW50LSVDT01QJV17Y29sb3I6cmdiYSgwLDAsMCwuMzgpfS5tYXQtY2FsZW5kYXItdGFibGUtaGVhZGVyLWRpdmlkZXJbX25nY29udGVudC0lQ09NUCVdOjphZnRlcntiYWNrZ3JvdW5kOnJnYmEoMCwwLDAsLjEyKX0ubWF0LWNhbGVuZGFyLWJvZHktbGFiZWxbX25nY29udGVudC0lQ09NUCVde2NvbG9yOiM2MTYxNjF9Lm1hdC1jYWxlbmRhci1ib2R5LWNlbGwtY29udGVudFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtZGF0ZS1yYW5nZS1pbnB1dC1zZXBhcmF0b3JbX25nY29udGVudC0lQ09NUCVde2NvbG9yOiMyMTIxMjE7Ym9yZGVyLWNvbG9yOnRyYW5zcGFyZW50fS5tYXQtY2FsZW5kYXItYm9keS1kaXNhYmxlZFtfbmdjb250ZW50LSVDT01QJV0gPiAubWF0LWNhbGVuZGFyLWJvZHktY2VsbC1jb250ZW50W19uZ2NvbnRlbnQtJUNPTVAlXTpub3QoLm1hdC1jYWxlbmRhci1ib2R5LXNlbGVjdGVkKTpub3QoLm1hdC1jYWxlbmRhci1ib2R5LWNvbXBhcmlzb24taWRlbnRpY2FsKXtjb2xvcjojNzU3NTc1fS5tYXQtZm9ybS1maWVsZC1kaXNhYmxlZFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWRhdGUtcmFuZ2UtaW5wdXQtc2VwYXJhdG9yW19uZ2NvbnRlbnQtJUNPTVAlXXtjb2xvcjojNzU3NTc1fS5tYXQtY2FsZW5kYXItYm9keS1jZWxsW19uZ2NvbnRlbnQtJUNPTVAlXTpub3QoLm1hdC1jYWxlbmRhci1ib2R5LWRpc2FibGVkKTpob3ZlciA+IC5tYXQtY2FsZW5kYXItYm9keS1jZWxsLWNvbnRlbnRbX25nY29udGVudC0lQ09NUCVdOm5vdCgubWF0LWNhbGVuZGFyLWJvZHktc2VsZWN0ZWQpOm5vdCgubWF0LWNhbGVuZGFyLWJvZHktY29tcGFyaXNvbi1pZGVudGljYWwpLCAuY2RrLWtleWJvYXJkLWZvY3VzZWRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1jYWxlbmRhci1ib2R5LWFjdGl2ZVtfbmdjb250ZW50LSVDT01QJV0gPiAubWF0LWNhbGVuZGFyLWJvZHktY2VsbC1jb250ZW50W19uZ2NvbnRlbnQtJUNPTVAlXTpub3QoLm1hdC1jYWxlbmRhci1ib2R5LXNlbGVjdGVkKTpub3QoLm1hdC1jYWxlbmRhci1ib2R5LWNvbXBhcmlzb24taWRlbnRpY2FsKSwgLmNkay1wcm9ncmFtLWZvY3VzZWRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1jYWxlbmRhci1ib2R5LWFjdGl2ZVtfbmdjb250ZW50LSVDT01QJV0gPiAubWF0LWNhbGVuZGFyLWJvZHktY2VsbC1jb250ZW50W19uZ2NvbnRlbnQtJUNPTVAlXTpub3QoLm1hdC1jYWxlbmRhci1ib2R5LXNlbGVjdGVkKTpub3QoLm1hdC1jYWxlbmRhci1ib2R5LWNvbXBhcmlzb24taWRlbnRpY2FsKXtiYWNrZ3JvdW5kLWNvbG9yOnJnYmEoMCwwLDAsLjA0KX0ubWF0LWNhbGVuZGFyLWJvZHktaW4tcHJldmlld1tfbmdjb250ZW50LSVDT01QJV17Y29sb3I6cmdiYSgwLDAsMCwuMjQpfS5tYXQtY2FsZW5kYXItYm9keS10b2RheVtfbmdjb250ZW50LSVDT01QJV06bm90KC5tYXQtY2FsZW5kYXItYm9keS1zZWxlY3RlZCk6bm90KC5tYXQtY2FsZW5kYXItYm9keS1jb21wYXJpc29uLWlkZW50aWNhbCl7Ym9yZGVyLWNvbG9yOnJnYmEoMCwwLDAsLjM4KX0ubWF0LWNhbGVuZGFyLWJvZHktZGlzYWJsZWRbX25nY29udGVudC0lQ09NUCVdID4gLm1hdC1jYWxlbmRhci1ib2R5LXRvZGF5W19uZ2NvbnRlbnQtJUNPTVAlXTpub3QoLm1hdC1jYWxlbmRhci1ib2R5LXNlbGVjdGVkKTpub3QoLm1hdC1jYWxlbmRhci1ib2R5LWNvbXBhcmlzb24taWRlbnRpY2FsKXtib3JkZXItY29sb3I6cmdiYSgwLDAsMCwuMTgpfS5tYXQtY2FsZW5kYXItYm9keS1pbi1yYW5nZVtfbmdjb250ZW50LSVDT01QJV06OmJlZm9yZXtiYWNrZ3JvdW5kOnJnYmEoMjQ1LDEyNCwwLC4yKX0ubWF0LWNhbGVuZGFyLWJvZHktY29tcGFyaXNvbi1pZGVudGljYWxbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWNhbGVuZGFyLWJvZHktaW4tY29tcGFyaXNvbi1yYW5nZVtfbmdjb250ZW50LSVDT01QJV06OmJlZm9yZXtiYWNrZ3JvdW5kOnJnYmEoMjQ5LDE3MSwwLC4yKX0ubWF0LWNhbGVuZGFyLWJvZHktY29tcGFyaXNvbi1icmlkZ2Utc3RhcnRbX25nY29udGVudC0lQ09NUCVdOjpiZWZvcmUsIFtkaXI9cnRsXVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWNhbGVuZGFyLWJvZHktY29tcGFyaXNvbi1icmlkZ2UtZW5kW19uZ2NvbnRlbnQtJUNPTVAlXTo6YmVmb3Jle2JhY2tncm91bmQ6bGluZWFyLWdyYWRpZW50KHRvIHJpZ2h0LCByZ2JhKDI0NSwgMTI0LCAwLCAwLjIpIDUwJSwgcmdiYSgyNDksIDE3MSwgMCwgMC4yKSA1MCUpfS5tYXQtY2FsZW5kYXItYm9keS1jb21wYXJpc29uLWJyaWRnZS1lbmRbX25nY29udGVudC0lQ09NUCVdOjpiZWZvcmUsIFtkaXI9cnRsXVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWNhbGVuZGFyLWJvZHktY29tcGFyaXNvbi1icmlkZ2Utc3RhcnRbX25nY29udGVudC0lQ09NUCVdOjpiZWZvcmV7YmFja2dyb3VuZDpsaW5lYXItZ3JhZGllbnQodG8gbGVmdCwgcmdiYSgyNDUsIDEyNCwgMCwgMC4yKSA1MCUsIHJnYmEoMjQ5LCAxNzEsIDAsIDAuMikgNTAlKX0ubWF0LWNhbGVuZGFyLWJvZHktaW4tcmFuZ2VbX25nY29udGVudC0lQ09NUCVdID4gLm1hdC1jYWxlbmRhci1ib2R5LWNvbXBhcmlzb24taWRlbnRpY2FsW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1jYWxlbmRhci1ib2R5LWluLWNvbXBhcmlzb24tcmFuZ2UubWF0LWNhbGVuZGFyLWJvZHktaW4tcmFuZ2VbX25nY29udGVudC0lQ09NUCVdOjphZnRlcntiYWNrZ3JvdW5kOiNhOGRhYjV9Lm1hdC1jYWxlbmRhci1ib2R5LWNvbXBhcmlzb24taWRlbnRpY2FsLm1hdC1jYWxlbmRhci1ib2R5LXNlbGVjdGVkW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1jYWxlbmRhci1ib2R5LWluLWNvbXBhcmlzb24tcmFuZ2VbX25nY29udGVudC0lQ09NUCVdID4gLm1hdC1jYWxlbmRhci1ib2R5LXNlbGVjdGVkW19uZ2NvbnRlbnQtJUNPTVAlXXtiYWNrZ3JvdW5kOiM0NmEzNWV9Lm1hdC1jYWxlbmRhci1ib2R5LXNlbGVjdGVkW19uZ2NvbnRlbnQtJUNPTVAlXXtiYWNrZ3JvdW5kLWNvbG9yOiNmNTdjMDA7Y29sb3I6I2ZmZn0ubWF0LWNhbGVuZGFyLWJvZHktZGlzYWJsZWRbX25nY29udGVudC0lQ09NUCVdID4gLm1hdC1jYWxlbmRhci1ib2R5LXNlbGVjdGVkW19uZ2NvbnRlbnQtJUNPTVAlXXtiYWNrZ3JvdW5kLWNvbG9yOnJnYmEoMjQ1LDEyNCwwLC40KX0ubWF0LWNhbGVuZGFyLWJvZHktdG9kYXkubWF0LWNhbGVuZGFyLWJvZHktc2VsZWN0ZWRbX25nY29udGVudC0lQ09NUCVde2JveC1zaGFkb3c6aW5zZXQgMCAwIDAgMXB4ICNmZmZ9Lm1hdC1kYXRlcGlja2VyLWNvbnRlbnRbX25nY29udGVudC0lQ09NUCVde2JveC1zaGFkb3c6MHB4IDJweCA0cHggLTFweCByZ2JhKDAsIDAsIDAsIDAuMiksMHB4IDRweCA1cHggMHB4IHJnYmEoMCwgMCwgMCwgMC4xNCksMHB4IDFweCAxMHB4IDBweCByZ2JhKDAsIDAsIDAsIDAuMTIpO2JhY2tncm91bmQtY29sb3I6I2ZmZjtjb2xvcjojMjEyMTIxfS5tYXQtZGF0ZXBpY2tlci1jb250ZW50Lm1hdC1hY2NlbnRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1jYWxlbmRhci1ib2R5LWluLXJhbmdlW19uZ2NvbnRlbnQtJUNPTVAlXTo6YmVmb3Jle2JhY2tncm91bmQ6cmdiYSgyNTUsMTUyLDAsLjIpfS5tYXQtZGF0ZXBpY2tlci1jb250ZW50Lm1hdC1hY2NlbnRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1jYWxlbmRhci1ib2R5LWNvbXBhcmlzb24taWRlbnRpY2FsW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1kYXRlcGlja2VyLWNvbnRlbnQubWF0LWFjY2VudFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWNhbGVuZGFyLWJvZHktaW4tY29tcGFyaXNvbi1yYW5nZVtfbmdjb250ZW50LSVDT01QJV06OmJlZm9yZXtiYWNrZ3JvdW5kOnJnYmEoMjQ5LDE3MSwwLC4yKX0ubWF0LWRhdGVwaWNrZXItY29udGVudC5tYXQtYWNjZW50W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtY2FsZW5kYXItYm9keS1jb21wYXJpc29uLWJyaWRnZS1zdGFydFtfbmdjb250ZW50LSVDT01QJV06OmJlZm9yZSwgLm1hdC1kYXRlcGlja2VyLWNvbnRlbnQubWF0LWFjY2VudFtfbmdjb250ZW50LSVDT01QJV0gICBbZGlyPXJ0bF1bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1jYWxlbmRhci1ib2R5LWNvbXBhcmlzb24tYnJpZGdlLWVuZFtfbmdjb250ZW50LSVDT01QJV06OmJlZm9yZXtiYWNrZ3JvdW5kOmxpbmVhci1ncmFkaWVudCh0byByaWdodCwgcmdiYSgyNTUsIDE1MiwgMCwgMC4yKSA1MCUsIHJnYmEoMjQ5LCAxNzEsIDAsIDAuMikgNTAlKX0ubWF0LWRhdGVwaWNrZXItY29udGVudC5tYXQtYWNjZW50W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtY2FsZW5kYXItYm9keS1jb21wYXJpc29uLWJyaWRnZS1lbmRbX25nY29udGVudC0lQ09NUCVdOjpiZWZvcmUsIC5tYXQtZGF0ZXBpY2tlci1jb250ZW50Lm1hdC1hY2NlbnRbX25nY29udGVudC0lQ09NUCVdICAgW2Rpcj1ydGxdW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtY2FsZW5kYXItYm9keS1jb21wYXJpc29uLWJyaWRnZS1zdGFydFtfbmdjb250ZW50LSVDT01QJV06OmJlZm9yZXtiYWNrZ3JvdW5kOmxpbmVhci1ncmFkaWVudCh0byBsZWZ0LCByZ2JhKDI1NSwgMTUyLCAwLCAwLjIpIDUwJSwgcmdiYSgyNDksIDE3MSwgMCwgMC4yKSA1MCUpfS5tYXQtZGF0ZXBpY2tlci1jb250ZW50Lm1hdC1hY2NlbnRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1jYWxlbmRhci1ib2R5LWluLXJhbmdlW19uZ2NvbnRlbnQtJUNPTVAlXSA+IC5tYXQtY2FsZW5kYXItYm9keS1jb21wYXJpc29uLWlkZW50aWNhbFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtZGF0ZXBpY2tlci1jb250ZW50Lm1hdC1hY2NlbnRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1jYWxlbmRhci1ib2R5LWluLWNvbXBhcmlzb24tcmFuZ2UubWF0LWNhbGVuZGFyLWJvZHktaW4tcmFuZ2VbX25nY29udGVudC0lQ09NUCVdOjphZnRlcntiYWNrZ3JvdW5kOiNhOGRhYjV9Lm1hdC1kYXRlcGlja2VyLWNvbnRlbnQubWF0LWFjY2VudFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWNhbGVuZGFyLWJvZHktY29tcGFyaXNvbi1pZGVudGljYWwubWF0LWNhbGVuZGFyLWJvZHktc2VsZWN0ZWRbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWRhdGVwaWNrZXItY29udGVudC5tYXQtYWNjZW50W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtY2FsZW5kYXItYm9keS1pbi1jb21wYXJpc29uLXJhbmdlW19uZ2NvbnRlbnQtJUNPTVAlXSA+IC5tYXQtY2FsZW5kYXItYm9keS1zZWxlY3RlZFtfbmdjb250ZW50LSVDT01QJV17YmFja2dyb3VuZDojNDZhMzVlfS5tYXQtZGF0ZXBpY2tlci1jb250ZW50Lm1hdC1hY2NlbnRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1jYWxlbmRhci1ib2R5LXNlbGVjdGVkW19uZ2NvbnRlbnQtJUNPTVAlXXtiYWNrZ3JvdW5kLWNvbG9yOiNmZjk4MDA7Y29sb3I6I2ZmZn0ubWF0LWRhdGVwaWNrZXItY29udGVudC5tYXQtYWNjZW50W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtY2FsZW5kYXItYm9keS1kaXNhYmxlZFtfbmdjb250ZW50LSVDT01QJV0gPiAubWF0LWNhbGVuZGFyLWJvZHktc2VsZWN0ZWRbX25nY29udGVudC0lQ09NUCVde2JhY2tncm91bmQtY29sb3I6cmdiYSgyNTUsMTUyLDAsLjQpfS5tYXQtZGF0ZXBpY2tlci1jb250ZW50Lm1hdC1hY2NlbnRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1jYWxlbmRhci1ib2R5LXRvZGF5Lm1hdC1jYWxlbmRhci1ib2R5LXNlbGVjdGVkW19uZ2NvbnRlbnQtJUNPTVAlXXtib3gtc2hhZG93Omluc2V0IDAgMCAwIDFweCAjZmZmfS5tYXQtZGF0ZXBpY2tlci1jb250ZW50Lm1hdC13YXJuW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtY2FsZW5kYXItYm9keS1pbi1yYW5nZVtfbmdjb250ZW50LSVDT01QJV06OmJlZm9yZXtiYWNrZ3JvdW5kOnJnYmEoMjQ0LDY3LDU0LC4yKX0ubWF0LWRhdGVwaWNrZXItY29udGVudC5tYXQtd2Fybltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWNhbGVuZGFyLWJvZHktY29tcGFyaXNvbi1pZGVudGljYWxbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWRhdGVwaWNrZXItY29udGVudC5tYXQtd2Fybltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWNhbGVuZGFyLWJvZHktaW4tY29tcGFyaXNvbi1yYW5nZVtfbmdjb250ZW50LSVDT01QJV06OmJlZm9yZXtiYWNrZ3JvdW5kOnJnYmEoMjQ5LDE3MSwwLC4yKX0ubWF0LWRhdGVwaWNrZXItY29udGVudC5tYXQtd2Fybltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWNhbGVuZGFyLWJvZHktY29tcGFyaXNvbi1icmlkZ2Utc3RhcnRbX25nY29udGVudC0lQ09NUCVdOjpiZWZvcmUsIC5tYXQtZGF0ZXBpY2tlci1jb250ZW50Lm1hdC13YXJuW19uZ2NvbnRlbnQtJUNPTVAlXSAgIFtkaXI9cnRsXVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWNhbGVuZGFyLWJvZHktY29tcGFyaXNvbi1icmlkZ2UtZW5kW19uZ2NvbnRlbnQtJUNPTVAlXTo6YmVmb3Jle2JhY2tncm91bmQ6bGluZWFyLWdyYWRpZW50KHRvIHJpZ2h0LCByZ2JhKDI0NCwgNjcsIDU0LCAwLjIpIDUwJSwgcmdiYSgyNDksIDE3MSwgMCwgMC4yKSA1MCUpfS5tYXQtZGF0ZXBpY2tlci1jb250ZW50Lm1hdC13YXJuW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtY2FsZW5kYXItYm9keS1jb21wYXJpc29uLWJyaWRnZS1lbmRbX25nY29udGVudC0lQ09NUCVdOjpiZWZvcmUsIC5tYXQtZGF0ZXBpY2tlci1jb250ZW50Lm1hdC13YXJuW19uZ2NvbnRlbnQtJUNPTVAlXSAgIFtkaXI9cnRsXVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWNhbGVuZGFyLWJvZHktY29tcGFyaXNvbi1icmlkZ2Utc3RhcnRbX25nY29udGVudC0lQ09NUCVdOjpiZWZvcmV7YmFja2dyb3VuZDpsaW5lYXItZ3JhZGllbnQodG8gbGVmdCwgcmdiYSgyNDQsIDY3LCA1NCwgMC4yKSA1MCUsIHJnYmEoMjQ5LCAxNzEsIDAsIDAuMikgNTAlKX0ubWF0LWRhdGVwaWNrZXItY29udGVudC5tYXQtd2Fybltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWNhbGVuZGFyLWJvZHktaW4tcmFuZ2VbX25nY29udGVudC0lQ09NUCVdID4gLm1hdC1jYWxlbmRhci1ib2R5LWNvbXBhcmlzb24taWRlbnRpY2FsW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1kYXRlcGlja2VyLWNvbnRlbnQubWF0LXdhcm5bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1jYWxlbmRhci1ib2R5LWluLWNvbXBhcmlzb24tcmFuZ2UubWF0LWNhbGVuZGFyLWJvZHktaW4tcmFuZ2VbX25nY29udGVudC0lQ09NUCVdOjphZnRlcntiYWNrZ3JvdW5kOiNhOGRhYjV9Lm1hdC1kYXRlcGlja2VyLWNvbnRlbnQubWF0LXdhcm5bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1jYWxlbmRhci1ib2R5LWNvbXBhcmlzb24taWRlbnRpY2FsLm1hdC1jYWxlbmRhci1ib2R5LXNlbGVjdGVkW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1kYXRlcGlja2VyLWNvbnRlbnQubWF0LXdhcm5bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1jYWxlbmRhci1ib2R5LWluLWNvbXBhcmlzb24tcmFuZ2VbX25nY29udGVudC0lQ09NUCVdID4gLm1hdC1jYWxlbmRhci1ib2R5LXNlbGVjdGVkW19uZ2NvbnRlbnQtJUNPTVAlXXtiYWNrZ3JvdW5kOiM0NmEzNWV9Lm1hdC1kYXRlcGlja2VyLWNvbnRlbnQubWF0LXdhcm5bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1jYWxlbmRhci1ib2R5LXNlbGVjdGVkW19uZ2NvbnRlbnQtJUNPTVAlXXtiYWNrZ3JvdW5kLWNvbG9yOiNmNDQzMzY7Y29sb3I6I2ZmZn0ubWF0LWRhdGVwaWNrZXItY29udGVudC5tYXQtd2Fybltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWNhbGVuZGFyLWJvZHktZGlzYWJsZWRbX25nY29udGVudC0lQ09NUCVdID4gLm1hdC1jYWxlbmRhci1ib2R5LXNlbGVjdGVkW19uZ2NvbnRlbnQtJUNPTVAlXXtiYWNrZ3JvdW5kLWNvbG9yOnJnYmEoMjQ0LDY3LDU0LC40KX0ubWF0LWRhdGVwaWNrZXItY29udGVudC5tYXQtd2Fybltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWNhbGVuZGFyLWJvZHktdG9kYXkubWF0LWNhbGVuZGFyLWJvZHktc2VsZWN0ZWRbX25nY29udGVudC0lQ09NUCVde2JveC1zaGFkb3c6aW5zZXQgMCAwIDAgMXB4ICNmZmZ9Lm1hdC1kYXRlcGlja2VyLWNvbnRlbnQtdG91Y2hbX25nY29udGVudC0lQ09NUCVde2JveC1zaGFkb3c6MHB4IDBweCAwcHggMHB4IHJnYmEoMCwgMCwgMCwgMC4yKSwwcHggMHB4IDBweCAwcHggcmdiYSgwLCAwLCAwLCAwLjE0KSwwcHggMHB4IDBweCAwcHggcmdiYSgwLCAwLCAwLCAwLjEyKX0ubWF0LWRhdGVwaWNrZXItdG9nZ2xlLWFjdGl2ZVtfbmdjb250ZW50LSVDT01QJV17Y29sb3I6I2Y1N2MwMH0ubWF0LWRhdGVwaWNrZXItdG9nZ2xlLWFjdGl2ZS5tYXQtYWNjZW50W19uZ2NvbnRlbnQtJUNPTVAlXXtjb2xvcjojZmY5ODAwfS5tYXQtZGF0ZXBpY2tlci10b2dnbGUtYWN0aXZlLm1hdC13YXJuW19uZ2NvbnRlbnQtJUNPTVAlXXtjb2xvcjojZjQ0MzM2fS5tYXQtZGF0ZS1yYW5nZS1pbnB1dC1pbm5lcltkaXNhYmxlZF1bX25nY29udGVudC0lQ09NUCVde2NvbG9yOiM3NTc1NzV9Lm1hdC1kaWFsb2ctY29udGFpbmVyW19uZ2NvbnRlbnQtJUNPTVAlXXtib3gtc2hhZG93OjBweCAxMXB4IDE1cHggLTdweCByZ2JhKDAsIDAsIDAsIDAuMiksMHB4IDI0cHggMzhweCAzcHggcmdiYSgwLCAwLCAwLCAwLjE0KSwwcHggOXB4IDQ2cHggOHB4IHJnYmEoMCwgMCwgMCwgMC4xMik7YmFja2dyb3VuZDojZmZmO2NvbG9yOiMyMTIxMjF9Lm1hdC1kaXZpZGVyW19uZ2NvbnRlbnQtJUNPTVAlXXtib3JkZXItdG9wLWNvbG9yOnJnYmEoMCwwLDAsLjEyKX0ubWF0LWRpdmlkZXItdmVydGljYWxbX25nY29udGVudC0lQ09NUCVde2JvcmRlci1yaWdodC1jb2xvcjpyZ2JhKDAsMCwwLC4xMil9Lm1hdC1leHBhbnNpb24tcGFuZWxbX25nY29udGVudC0lQ09NUCVde2JhY2tncm91bmQ6I2ZmZjtjb2xvcjojMjEyMTIxfS5tYXQtZXhwYW5zaW9uLXBhbmVsW19uZ2NvbnRlbnQtJUNPTVAlXTpub3QoW2NsYXNzKj1tYXQtZWxldmF0aW9uLXpdKXtib3gtc2hhZG93OjBweCAzcHggMXB4IC0ycHggcmdiYSgwLCAwLCAwLCAwLjIpLDBweCAycHggMnB4IDBweCByZ2JhKDAsIDAsIDAsIDAuMTQpLDBweCAxcHggNXB4IDBweCByZ2JhKDAsIDAsIDAsIDAuMTIpfS5tYXQtYWN0aW9uLXJvd1tfbmdjb250ZW50LSVDT01QJV17Ym9yZGVyLXRvcC1jb2xvcjpyZ2JhKDAsMCwwLC4xMil9Lm1hdC1leHBhbnNpb24tcGFuZWxbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1leHBhbnNpb24tcGFuZWwtaGVhZGVyLmNkay1rZXlib2FyZC1mb2N1c2VkW19uZ2NvbnRlbnQtJUNPTVAlXTpub3QoW2FyaWEtZGlzYWJsZWQ9dHJ1ZV0pLCAubWF0LWV4cGFuc2lvbi1wYW5lbFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWV4cGFuc2lvbi1wYW5lbC1oZWFkZXIuY2RrLXByb2dyYW0tZm9jdXNlZFtfbmdjb250ZW50LSVDT01QJV06bm90KFthcmlhLWRpc2FibGVkPXRydWVdKSwgLm1hdC1leHBhbnNpb24tcGFuZWxbX25nY29udGVudC0lQ09NUCVdOm5vdCgubWF0LWV4cGFuZGVkKSAgIC5tYXQtZXhwYW5zaW9uLXBhbmVsLWhlYWRlcltfbmdjb250ZW50LSVDT01QJV06aG92ZXI6bm90KFthcmlhLWRpc2FibGVkPXRydWVdKXtiYWNrZ3JvdW5kOnJnYmEoMCwwLDAsLjA0KX1AbWVkaWEoaG92ZXI6IG5vbmUpey5tYXQtZXhwYW5zaW9uLXBhbmVsW19uZ2NvbnRlbnQtJUNPTVAlXTpub3QoLm1hdC1leHBhbmRlZCk6bm90KFthcmlhLWRpc2FibGVkPXRydWVdKSAgIC5tYXQtZXhwYW5zaW9uLXBhbmVsLWhlYWRlcltfbmdjb250ZW50LSVDT01QJV06aG92ZXJ7YmFja2dyb3VuZDojZmZmfX0ubWF0LWV4cGFuc2lvbi1wYW5lbC1oZWFkZXItdGl0bGVbX25nY29udGVudC0lQ09NUCVde2NvbG9yOiMyMTIxMjF9Lm1hdC1leHBhbnNpb24tcGFuZWwtaGVhZGVyLWRlc2NyaXB0aW9uW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1leHBhbnNpb24taW5kaWNhdG9yW19uZ2NvbnRlbnQtJUNPTVAlXTo6YWZ0ZXJ7Y29sb3I6IzYxNjE2MX0ubWF0LWV4cGFuc2lvbi1wYW5lbC1oZWFkZXJbYXJpYS1kaXNhYmxlZD10cnVlXVtfbmdjb250ZW50LSVDT01QJV17Y29sb3I6cmdiYSgwLDAsMCwuMjYpfS5tYXQtZXhwYW5zaW9uLXBhbmVsLWhlYWRlclthcmlhLWRpc2FibGVkPXRydWVdW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZXhwYW5zaW9uLXBhbmVsLWhlYWRlci10aXRsZVtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtZXhwYW5zaW9uLXBhbmVsLWhlYWRlclthcmlhLWRpc2FibGVkPXRydWVdW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZXhwYW5zaW9uLXBhbmVsLWhlYWRlci1kZXNjcmlwdGlvbltfbmdjb250ZW50LSVDT01QJV17Y29sb3I6aW5oZXJpdH0ubWF0LWV4cGFuc2lvbi1wYW5lbC1oZWFkZXJbX25nY29udGVudC0lQ09NUCVde2hlaWdodDo0OHB4fS5tYXQtZXhwYW5zaW9uLXBhbmVsLWhlYWRlci5tYXQtZXhwYW5kZWRbX25nY29udGVudC0lQ09NUCVde2hlaWdodDo2NHB4fS5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17Y29sb3I6cmdiYSg5Nyw5Nyw5NywuNil9Lm1hdC1oaW50W19uZ2NvbnRlbnQtJUNPTVAlXXtjb2xvcjpyZ2JhKDk3LDk3LDk3LC42KX0ubWF0LWZvcm0tZmllbGQubWF0LWZvY3VzZWRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXtjb2xvcjojZjU3YzAwfS5tYXQtZm9ybS1maWVsZC5tYXQtZm9jdXNlZFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWwubWF0LWFjY2VudFtfbmdjb250ZW50LSVDT01QJV17Y29sb3I6I2ZmOTgwMH0ubWF0LWZvcm0tZmllbGQubWF0LWZvY3VzZWRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsLm1hdC13YXJuW19uZ2NvbnRlbnQtJUNPTVAlXXtjb2xvcjojZjQ0MzM2fS5tYXQtZm9jdXNlZFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtcmVxdWlyZWQtbWFya2VyW19uZ2NvbnRlbnQtJUNPTVAlXXtjb2xvcjojZmY5ODAwfS5tYXQtZm9ybS1maWVsZC1yaXBwbGVbX25nY29udGVudC0lQ09NUCVde2JhY2tncm91bmQtY29sb3I6cmdiYSgwLDAsMCwuODcpfS5tYXQtZm9ybS1maWVsZC5tYXQtZm9jdXNlZFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtcmlwcGxlW19uZ2NvbnRlbnQtJUNPTVAlXXtiYWNrZ3JvdW5kLWNvbG9yOiNmNTdjMDB9Lm1hdC1mb3JtLWZpZWxkLm1hdC1mb2N1c2VkW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1yaXBwbGUubWF0LWFjY2VudFtfbmdjb250ZW50LSVDT01QJV17YmFja2dyb3VuZC1jb2xvcjojZmY5ODAwfS5tYXQtZm9ybS1maWVsZC5tYXQtZm9jdXNlZFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtcmlwcGxlLm1hdC13YXJuW19uZ2NvbnRlbnQtJUNPTVAlXXtiYWNrZ3JvdW5kLWNvbG9yOiNmNDQzMzZ9Lm1hdC1mb3JtLWZpZWxkLXR5cGUtbWF0LW5hdGl2ZS1zZWxlY3QubWF0LWZvY3VzZWRbX25nY29udGVudC0lQ09NUCVdOm5vdCgubWF0LWZvcm0tZmllbGQtaW52YWxpZCkgICAubWF0LWZvcm0tZmllbGQtaW5maXhbX25nY29udGVudC0lQ09NUCVdOjphZnRlcntjb2xvcjojZjU3YzAwfS5tYXQtZm9ybS1maWVsZC10eXBlLW1hdC1uYXRpdmUtc2VsZWN0Lm1hdC1mb2N1c2VkW19uZ2NvbnRlbnQtJUNPTVAlXTpub3QoLm1hdC1mb3JtLWZpZWxkLWludmFsaWQpLm1hdC1hY2NlbnQgICAubWF0LWZvcm0tZmllbGQtaW5maXhbX25nY29udGVudC0lQ09NUCVdOjphZnRlcntjb2xvcjojZmY5ODAwfS5tYXQtZm9ybS1maWVsZC10eXBlLW1hdC1uYXRpdmUtc2VsZWN0Lm1hdC1mb2N1c2VkW19uZ2NvbnRlbnQtJUNPTVAlXTpub3QoLm1hdC1mb3JtLWZpZWxkLWludmFsaWQpLm1hdC13YXJuICAgLm1hdC1mb3JtLWZpZWxkLWluZml4W19uZ2NvbnRlbnQtJUNPTVAlXTo6YWZ0ZXJ7Y29sb3I6I2Y0NDMzNn0ubWF0LWZvcm0tZmllbGQubWF0LWZvcm0tZmllbGQtaW52YWxpZFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVde2NvbG9yOiNmNDQzMzZ9Lm1hdC1mb3JtLWZpZWxkLm1hdC1mb3JtLWZpZWxkLWludmFsaWRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsLm1hdC1hY2NlbnRbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWZvcm0tZmllbGQubWF0LWZvcm0tZmllbGQtaW52YWxpZFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLXJlcXVpcmVkLW1hcmtlcltfbmdjb250ZW50LSVDT01QJV17Y29sb3I6I2Y0NDMzNn0ubWF0LWZvcm0tZmllbGQubWF0LWZvcm0tZmllbGQtaW52YWxpZFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtcmlwcGxlW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1mb3JtLWZpZWxkLm1hdC1mb3JtLWZpZWxkLWludmFsaWRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLXJpcHBsZS5tYXQtYWNjZW50W19uZ2NvbnRlbnQtJUNPTVAlXXtiYWNrZ3JvdW5kLWNvbG9yOiNmNDQzMzZ9Lm1hdC1lcnJvcltfbmdjb250ZW50LSVDT01QJV17Y29sb3I6I2Y0NDMzNn0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1sZWdhY3lbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXtjb2xvcjojNjE2MTYxfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWxlZ2FjeVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWhpbnRbX25nY29udGVudC0lQ09NUCVde2NvbG9yOiM2MTYxNjF9Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtbGVnYWN5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC11bmRlcmxpbmVbX25nY29udGVudC0lQ09NUCVde2JhY2tncm91bmQtY29sb3I6cmdiYSgwLDAsMCwuNDIpfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWxlZ2FjeS5tYXQtZm9ybS1maWVsZC1kaXNhYmxlZFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtdW5kZXJsaW5lW19uZ2NvbnRlbnQtJUNPTVAlXXtiYWNrZ3JvdW5kLWltYWdlOmxpbmVhci1ncmFkaWVudCh0byByaWdodCwgcmdiYSgwLCAwLCAwLCAwLjQyKSAwJSwgcmdiYSgwLCAwLCAwLCAwLjQyKSAzMyUsIHRyYW5zcGFyZW50IDAlKTtiYWNrZ3JvdW5kLXNpemU6NHB4IDEwMCU7YmFja2dyb3VuZC1yZXBlYXQ6cmVwZWF0LXh9Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2Utc3RhbmRhcmRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLXVuZGVybGluZVtfbmdjb250ZW50LSVDT01QJV17YmFja2dyb3VuZC1jb2xvcjpyZ2JhKDAsMCwwLC40Mil9Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2Utc3RhbmRhcmQubWF0LWZvcm0tZmllbGQtZGlzYWJsZWRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLXVuZGVybGluZVtfbmdjb250ZW50LSVDT01QJV17YmFja2dyb3VuZC1pbWFnZTpsaW5lYXItZ3JhZGllbnQodG8gcmlnaHQsIHJnYmEoMCwgMCwgMCwgMC40MikgMCUsIHJnYmEoMCwgMCwgMCwgMC40MikgMzMlLCB0cmFuc3BhcmVudCAwJSk7YmFja2dyb3VuZC1zaXplOjRweCAxMDAlO2JhY2tncm91bmQtcmVwZWF0OnJlcGVhdC14fS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWZpbGxbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWZsZXhbX25nY29udGVudC0lQ09NUCVde2JhY2tncm91bmQtY29sb3I6cmdiYSgwLDAsMCwuMDQpfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWZpbGwubWF0LWZvcm0tZmllbGQtZGlzYWJsZWRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWZsZXhbX25nY29udGVudC0lQ09NUCVde2JhY2tncm91bmQtY29sb3I6cmdiYSgwLDAsMCwuMDIpfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWZpbGxbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLXVuZGVybGluZVtfbmdjb250ZW50LSVDT01QJV06OmJlZm9yZXtiYWNrZ3JvdW5kLWNvbG9yOnJnYmEoMCwwLDAsLjQyKX0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1maWxsLm1hdC1mb3JtLWZpZWxkLWRpc2FibGVkW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17Y29sb3I6Izc1NzU3NX0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1maWxsLm1hdC1mb3JtLWZpZWxkLWRpc2FibGVkW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC11bmRlcmxpbmVbX25nY29udGVudC0lQ09NUCVdOjpiZWZvcmV7YmFja2dyb3VuZC1jb2xvcjp0cmFuc3BhcmVudH0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1vdXRsaW5lW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1vdXRsaW5lW19uZ2NvbnRlbnQtJUNPTVAlXXtjb2xvcjpyZ2JhKDAsMCwwLC4xMil9Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2Utb3V0bGluZVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtb3V0bGluZS10aGlja1tfbmdjb250ZW50LSVDT01QJV17Y29sb3I6cmdiYSgwLDAsMCwuODcpfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLW91dGxpbmUubWF0LWZvY3VzZWRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLW91dGxpbmUtdGhpY2tbX25nY29udGVudC0lQ09NUCVde2NvbG9yOiNmNTdjMDB9Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2Utb3V0bGluZS5tYXQtZm9jdXNlZC5tYXQtYWNjZW50W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1vdXRsaW5lLXRoaWNrW19uZ2NvbnRlbnQtJUNPTVAlXXtjb2xvcjojZmY5ODAwfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLW91dGxpbmUubWF0LWZvY3VzZWQubWF0LXdhcm5bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLW91dGxpbmUtdGhpY2tbX25nY29udGVudC0lQ09NUCVde2NvbG9yOiNmNDQzMzZ9Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2Utb3V0bGluZS5tYXQtZm9ybS1maWVsZC1pbnZhbGlkLm1hdC1mb3JtLWZpZWxkLWludmFsaWRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLW91dGxpbmUtdGhpY2tbX25nY29udGVudC0lQ09NUCVde2NvbG9yOiNmNDQzMzZ9Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2Utb3V0bGluZS5tYXQtZm9ybS1maWVsZC1kaXNhYmxlZFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVde2NvbG9yOiM3NTc1NzV9Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2Utb3V0bGluZS5tYXQtZm9ybS1maWVsZC1kaXNhYmxlZFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtb3V0bGluZVtfbmdjb250ZW50LSVDT01QJV17Y29sb3I6cmdiYSgwLDAsMCwuMDYpfS5tYXQtaWNvbi5tYXQtcHJpbWFyeVtfbmdjb250ZW50LSVDT01QJV17Y29sb3I6I2Y1N2MwMH0ubWF0LWljb24ubWF0LWFjY2VudFtfbmdjb250ZW50LSVDT01QJV17Y29sb3I6I2ZmOTgwMH0ubWF0LWljb24ubWF0LXdhcm5bX25nY29udGVudC0lQ09NUCVde2NvbG9yOiNmNDQzMzZ9Lm1hdC1mb3JtLWZpZWxkLXR5cGUtbWF0LW5hdGl2ZS1zZWxlY3RbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWluZml4W19uZ2NvbnRlbnQtJUNPTVAlXTo6YWZ0ZXJ7Y29sb3I6IzYxNjE2MX0ubWF0LWlucHV0LWVsZW1lbnRbX25nY29udGVudC0lQ09NUCVdOmRpc2FibGVkLCAubWF0LWZvcm0tZmllbGQtdHlwZS1tYXQtbmF0aXZlLXNlbGVjdC5tYXQtZm9ybS1maWVsZC1kaXNhYmxlZFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtaW5maXhbX25nY29udGVudC0lQ09NUCVdOjphZnRlcntjb2xvcjojNzU3NTc1fS5tYXQtaW5wdXQtZWxlbWVudFtfbmdjb250ZW50LSVDT01QJV17Y2FyZXQtY29sb3I6I2Y1N2MwMH0ubWF0LWlucHV0LWVsZW1lbnRbX25nY29udGVudC0lQ09NUCVdOjpwbGFjZWhvbGRlcntjb2xvcjpyZ2JhKDk3LDk3LDk3LC40Mil9Lm1hdC1pbnB1dC1lbGVtZW50W19uZ2NvbnRlbnQtJUNPTVAlXTo6LW1vei1wbGFjZWhvbGRlcntjb2xvcjpyZ2JhKDk3LDk3LDk3LC40Mil9Lm1hdC1pbnB1dC1lbGVtZW50W19uZ2NvbnRlbnQtJUNPTVAlXTo6LXdlYmtpdC1pbnB1dC1wbGFjZWhvbGRlcntjb2xvcjpyZ2JhKDk3LDk3LDk3LC40Mil9Lm1hdC1pbnB1dC1lbGVtZW50W19uZ2NvbnRlbnQtJUNPTVAlXTotbXMtaW5wdXQtcGxhY2Vob2xkZXJ7Y29sb3I6cmdiYSg5Nyw5Nyw5NywuNDIpfS5tYXQtZm9ybS1maWVsZC5tYXQtYWNjZW50W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaW5wdXQtZWxlbWVudFtfbmdjb250ZW50LSVDT01QJV17Y2FyZXQtY29sb3I6I2ZmOTgwMH0ubWF0LWZvcm0tZmllbGQubWF0LXdhcm5bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pbnB1dC1lbGVtZW50W19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1mb3JtLWZpZWxkLWludmFsaWRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pbnB1dC1lbGVtZW50W19uZ2NvbnRlbnQtJUNPTVAlXXtjYXJldC1jb2xvcjojZjQ0MzM2fS5tYXQtZm9ybS1maWVsZC10eXBlLW1hdC1uYXRpdmUtc2VsZWN0Lm1hdC1mb3JtLWZpZWxkLWludmFsaWRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWluZml4W19uZ2NvbnRlbnQtJUNPTVAlXTo6YWZ0ZXJ7Y29sb3I6I2Y0NDMzNn0ubWF0LWxpc3QtYmFzZVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpc3QtaXRlbVtfbmdjb250ZW50LSVDT01QJV17Y29sb3I6IzIxMjEyMX0ubWF0LWxpc3QtYmFzZVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpc3Qtb3B0aW9uW19uZ2NvbnRlbnQtJUNPTVAlXXtjb2xvcjojMjEyMTIxfS5tYXQtbGlzdC1iYXNlW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtc3ViaGVhZGVyW19uZ2NvbnRlbnQtJUNPTVAlXXtjb2xvcjojNjE2MTYxfS5tYXQtbGlzdC1pdGVtLWRpc2FibGVkW19uZ2NvbnRlbnQtJUNPTVAlXXtiYWNrZ3JvdW5kLWNvbG9yOiNlZWV9Lm1hdC1saXN0LW9wdGlvbltfbmdjb250ZW50LSVDT01QJV06aG92ZXIsIC5tYXQtbGlzdC1vcHRpb25bX25nY29udGVudC0lQ09NUCVdOmZvY3VzLCAubWF0LW5hdi1saXN0W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGlzdC1pdGVtW19uZ2NvbnRlbnQtJUNPTVAlXTpob3ZlciwgLm1hdC1uYXYtbGlzdFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpc3QtaXRlbVtfbmdjb250ZW50LSVDT01QJV06Zm9jdXMsIC5tYXQtYWN0aW9uLWxpc3RbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saXN0LWl0ZW1bX25nY29udGVudC0lQ09NUCVdOmhvdmVyLCAubWF0LWFjdGlvbi1saXN0W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGlzdC1pdGVtW19uZ2NvbnRlbnQtJUNPTVAlXTpmb2N1c3tiYWNrZ3JvdW5kOnJnYmEoMCwwLDAsLjA0KX0ubWF0LWxpc3Qtc2luZ2xlLXNlbGVjdGVkLW9wdGlvbltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtbGlzdC1zaW5nbGUtc2VsZWN0ZWQtb3B0aW9uW19uZ2NvbnRlbnQtJUNPTVAlXTpob3ZlciwgLm1hdC1saXN0LXNpbmdsZS1zZWxlY3RlZC1vcHRpb25bX25nY29udGVudC0lQ09NUCVdOmZvY3Vze2JhY2tncm91bmQ6cmdiYSgwLDAsMCwuMTIpfS5tYXQtbWVudS1wYW5lbFtfbmdjb250ZW50LSVDT01QJV17YmFja2dyb3VuZDojZmZmfS5tYXQtbWVudS1wYW5lbFtfbmdjb250ZW50LSVDT01QJV06bm90KFtjbGFzcyo9bWF0LWVsZXZhdGlvbi16XSl7Ym94LXNoYWRvdzowcHggMnB4IDRweCAtMXB4IHJnYmEoMCwgMCwgMCwgMC4yKSwwcHggNHB4IDVweCAwcHggcmdiYSgwLCAwLCAwLCAwLjE0KSwwcHggMXB4IDEwcHggMHB4IHJnYmEoMCwgMCwgMCwgMC4xMil9Lm1hdC1tZW51LWl0ZW1bX25nY29udGVudC0lQ09NUCVde2JhY2tncm91bmQ6dHJhbnNwYXJlbnQ7Y29sb3I6IzIxMjEyMX0ubWF0LW1lbnUtaXRlbVtkaXNhYmxlZF1bX25nY29udGVudC0lQ09NUCVdLCAubWF0LW1lbnUtaXRlbVtkaXNhYmxlZF1bX25nY29udGVudC0lQ09NUCVdOjphZnRlcntjb2xvcjpyZ2JhKDAsMCwwLC4zOCl9Lm1hdC1tZW51LWl0ZW1bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pY29uLW5vLWNvbG9yW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1tZW51LWl0ZW0tc3VibWVudS10cmlnZ2VyW19uZ2NvbnRlbnQtJUNPTVAlXTo6YWZ0ZXJ7Y29sb3I6cmdiYSgwLDAsMCwuNTQpfS5tYXQtbWVudS1pdGVtW19uZ2NvbnRlbnQtJUNPTVAlXTpob3Zlcjpub3QoW2Rpc2FibGVkXSksIC5tYXQtbWVudS1pdGVtLmNkay1wcm9ncmFtLWZvY3VzZWRbX25nY29udGVudC0lQ09NUCVdOm5vdChbZGlzYWJsZWRdKSwgLm1hdC1tZW51LWl0ZW0uY2RrLWtleWJvYXJkLWZvY3VzZWRbX25nY29udGVudC0lQ09NUCVdOm5vdChbZGlzYWJsZWRdKSwgLm1hdC1tZW51LWl0ZW0taGlnaGxpZ2h0ZWRbX25nY29udGVudC0lQ09NUCVdOm5vdChbZGlzYWJsZWRdKXtiYWNrZ3JvdW5kOnJnYmEoMCwwLDAsLjA0KX0ubWF0LXBhZ2luYXRvcltfbmdjb250ZW50LSVDT01QJV17YmFja2dyb3VuZDojZmZmfS5tYXQtcGFnaW5hdG9yW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1wYWdpbmF0b3ItcGFnZS1zaXplW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtc2VsZWN0LXRyaWdnZXJbX25nY29udGVudC0lQ09NUCVde2NvbG9yOiM2MTYxNjF9Lm1hdC1wYWdpbmF0b3ItZGVjcmVtZW50W19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1wYWdpbmF0b3ItaW5jcmVtZW50W19uZ2NvbnRlbnQtJUNPTVAlXXtib3JkZXItdG9wOjJweCBzb2xpZCByZ2JhKDAsMCwwLC41NCk7Ym9yZGVyLXJpZ2h0OjJweCBzb2xpZCByZ2JhKDAsMCwwLC41NCl9Lm1hdC1wYWdpbmF0b3ItZmlyc3RbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXBhZ2luYXRvci1sYXN0W19uZ2NvbnRlbnQtJUNPTVAlXXtib3JkZXItdG9wOjJweCBzb2xpZCByZ2JhKDAsMCwwLC41NCl9Lm1hdC1pY29uLWJ1dHRvbltkaXNhYmxlZF1bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1wYWdpbmF0b3ItZGVjcmVtZW50W19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1pY29uLWJ1dHRvbltkaXNhYmxlZF1bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1wYWdpbmF0b3ItaW5jcmVtZW50W19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1pY29uLWJ1dHRvbltkaXNhYmxlZF1bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1wYWdpbmF0b3ItZmlyc3RbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWljb24tYnV0dG9uW2Rpc2FibGVkXVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXBhZ2luYXRvci1sYXN0W19uZ2NvbnRlbnQtJUNPTVAlXXtib3JkZXItY29sb3I6cmdiYSgwLDAsMCwuMzgpfS5tYXQtcGFnaW5hdG9yLWNvbnRhaW5lcltfbmdjb250ZW50LSVDT01QJV17bWluLWhlaWdodDo1NnB4fS5tYXQtcHJvZ3Jlc3MtYmFyLWJhY2tncm91bmRbX25nY29udGVudC0lQ09NUCVde2ZpbGw6I2ZmOTgwMH0ubWF0LXByb2dyZXNzLWJhci1idWZmZXJbX25nY29udGVudC0lQ09NUCVde2JhY2tncm91bmQtY29sb3I6I2ZmOTgwMH0ubWF0LXByb2dyZXNzLWJhci1maWxsW19uZ2NvbnRlbnQtJUNPTVAlXTo6YWZ0ZXJ7YmFja2dyb3VuZC1jb2xvcjojZjU3YzAwfS5tYXQtcHJvZ3Jlc3MtYmFyLm1hdC1hY2NlbnRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1wcm9ncmVzcy1iYXItYmFja2dyb3VuZFtfbmdjb250ZW50LSVDT01QJV17ZmlsbDojZmY5ODAwfS5tYXQtcHJvZ3Jlc3MtYmFyLm1hdC1hY2NlbnRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1wcm9ncmVzcy1iYXItYnVmZmVyW19uZ2NvbnRlbnQtJUNPTVAlXXtiYWNrZ3JvdW5kLWNvbG9yOiNmZjk4MDB9Lm1hdC1wcm9ncmVzcy1iYXIubWF0LWFjY2VudFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXByb2dyZXNzLWJhci1maWxsW19uZ2NvbnRlbnQtJUNPTVAlXTo6YWZ0ZXJ7YmFja2dyb3VuZC1jb2xvcjojZmY5ODAwfS5tYXQtcHJvZ3Jlc3MtYmFyLm1hdC13YXJuW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtcHJvZ3Jlc3MtYmFyLWJhY2tncm91bmRbX25nY29udGVudC0lQ09NUCVde2ZpbGw6I2ZmY2RkMn0ubWF0LXByb2dyZXNzLWJhci5tYXQtd2Fybltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXByb2dyZXNzLWJhci1idWZmZXJbX25nY29udGVudC0lQ09NUCVde2JhY2tncm91bmQtY29sb3I6I2ZmY2RkMn0ubWF0LXByb2dyZXNzLWJhci5tYXQtd2Fybltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXByb2dyZXNzLWJhci1maWxsW19uZ2NvbnRlbnQtJUNPTVAlXTo6YWZ0ZXJ7YmFja2dyb3VuZC1jb2xvcjojZjQ0MzM2fS5tYXQtcHJvZ3Jlc3Mtc3Bpbm5lcltfbmdjb250ZW50LSVDT01QJV0gICBjaXJjbGVbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXNwaW5uZXJbX25nY29udGVudC0lQ09NUCVdICAgY2lyY2xlW19uZ2NvbnRlbnQtJUNPTVAlXXtzdHJva2U6I2Y1N2MwMH0ubWF0LXByb2dyZXNzLXNwaW5uZXIubWF0LWFjY2VudFtfbmdjb250ZW50LSVDT01QJV0gICBjaXJjbGVbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXNwaW5uZXIubWF0LWFjY2VudFtfbmdjb250ZW50LSVDT01QJV0gICBjaXJjbGVbX25nY29udGVudC0lQ09NUCVde3N0cm9rZTojZmY5ODAwfS5tYXQtcHJvZ3Jlc3Mtc3Bpbm5lci5tYXQtd2Fybltfbmdjb250ZW50LSVDT01QJV0gICBjaXJjbGVbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXNwaW5uZXIubWF0LXdhcm5bX25nY29udGVudC0lQ09NUCVdICAgY2lyY2xlW19uZ2NvbnRlbnQtJUNPTVAlXXtzdHJva2U6I2Y0NDMzNn0ubWF0LXJhZGlvLW91dGVyLWNpcmNsZVtfbmdjb250ZW50LSVDT01QJV17Ym9yZGVyLWNvbG9yOiM2MTYxNjF9Lm1hdC1yYWRpby1idXR0b24ubWF0LXByaW1hcnkubWF0LXJhZGlvLWNoZWNrZWRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1yYWRpby1vdXRlci1jaXJjbGVbX25nY29udGVudC0lQ09NUCVde2JvcmRlci1jb2xvcjojZjU3YzAwfS5tYXQtcmFkaW8tYnV0dG9uLm1hdC1wcmltYXJ5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtcmFkaW8taW5uZXItY2lyY2xlW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1yYWRpby1idXR0b24ubWF0LXByaW1hcnlbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1yYWRpby1yaXBwbGVbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1yaXBwbGUtZWxlbWVudFtfbmdjb250ZW50LSVDT01QJV06bm90KC5tYXQtcmFkaW8tcGVyc2lzdGVudC1yaXBwbGUpLCAubWF0LXJhZGlvLWJ1dHRvbi5tYXQtcHJpbWFyeS5tYXQtcmFkaW8tY2hlY2tlZFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXJhZGlvLXBlcnNpc3RlbnQtcmlwcGxlW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1yYWRpby1idXR0b24ubWF0LXByaW1hcnlbX25nY29udGVudC0lQ09NUCVdOmFjdGl2ZSAgIC5tYXQtcmFkaW8tcGVyc2lzdGVudC1yaXBwbGVbX25nY29udGVudC0lQ09NUCVde2JhY2tncm91bmQtY29sb3I6I2Y1N2MwMH0ubWF0LXJhZGlvLWJ1dHRvbi5tYXQtYWNjZW50Lm1hdC1yYWRpby1jaGVja2VkW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtcmFkaW8tb3V0ZXItY2lyY2xlW19uZ2NvbnRlbnQtJUNPTVAlXXtib3JkZXItY29sb3I6I2ZmOTgwMH0ubWF0LXJhZGlvLWJ1dHRvbi5tYXQtYWNjZW50W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtcmFkaW8taW5uZXItY2lyY2xlW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1yYWRpby1idXR0b24ubWF0LWFjY2VudFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXJhZGlvLXJpcHBsZVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXJpcHBsZS1lbGVtZW50W19uZ2NvbnRlbnQtJUNPTVAlXTpub3QoLm1hdC1yYWRpby1wZXJzaXN0ZW50LXJpcHBsZSksIC5tYXQtcmFkaW8tYnV0dG9uLm1hdC1hY2NlbnQubWF0LXJhZGlvLWNoZWNrZWRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1yYWRpby1wZXJzaXN0ZW50LXJpcHBsZVtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtcmFkaW8tYnV0dG9uLm1hdC1hY2NlbnRbX25nY29udGVudC0lQ09NUCVdOmFjdGl2ZSAgIC5tYXQtcmFkaW8tcGVyc2lzdGVudC1yaXBwbGVbX25nY29udGVudC0lQ09NUCVde2JhY2tncm91bmQtY29sb3I6I2ZmOTgwMH0ubWF0LXJhZGlvLWJ1dHRvbi5tYXQtd2Fybi5tYXQtcmFkaW8tY2hlY2tlZFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXJhZGlvLW91dGVyLWNpcmNsZVtfbmdjb250ZW50LSVDT01QJV17Ym9yZGVyLWNvbG9yOiNmNDQzMzZ9Lm1hdC1yYWRpby1idXR0b24ubWF0LXdhcm5bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1yYWRpby1pbm5lci1jaXJjbGVbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXJhZGlvLWJ1dHRvbi5tYXQtd2Fybltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXJhZGlvLXJpcHBsZVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXJpcHBsZS1lbGVtZW50W19uZ2NvbnRlbnQtJUNPTVAlXTpub3QoLm1hdC1yYWRpby1wZXJzaXN0ZW50LXJpcHBsZSksIC5tYXQtcmFkaW8tYnV0dG9uLm1hdC13YXJuLm1hdC1yYWRpby1jaGVja2VkW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtcmFkaW8tcGVyc2lzdGVudC1yaXBwbGVbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXJhZGlvLWJ1dHRvbi5tYXQtd2Fybltfbmdjb250ZW50LSVDT01QJV06YWN0aXZlICAgLm1hdC1yYWRpby1wZXJzaXN0ZW50LXJpcHBsZVtfbmdjb250ZW50LSVDT01QJV17YmFja2dyb3VuZC1jb2xvcjojZjQ0MzM2fS5tYXQtcmFkaW8tYnV0dG9uLm1hdC1yYWRpby1kaXNhYmxlZC5tYXQtcmFkaW8tY2hlY2tlZFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXJhZGlvLW91dGVyLWNpcmNsZVtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtcmFkaW8tYnV0dG9uLm1hdC1yYWRpby1kaXNhYmxlZFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXJhZGlvLW91dGVyLWNpcmNsZVtfbmdjb250ZW50LSVDT01QJV17Ym9yZGVyLWNvbG9yOnJnYmEoMCwwLDAsLjM4KX0ubWF0LXJhZGlvLWJ1dHRvbi5tYXQtcmFkaW8tZGlzYWJsZWRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1yYWRpby1yaXBwbGVbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1yaXBwbGUtZWxlbWVudFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtcmFkaW8tYnV0dG9uLm1hdC1yYWRpby1kaXNhYmxlZFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXJhZGlvLWlubmVyLWNpcmNsZVtfbmdjb250ZW50LSVDT01QJV17YmFja2dyb3VuZC1jb2xvcjpyZ2JhKDAsMCwwLC4zOCl9Lm1hdC1yYWRpby1idXR0b24ubWF0LXJhZGlvLWRpc2FibGVkW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtcmFkaW8tbGFiZWwtY29udGVudFtfbmdjb250ZW50LSVDT01QJV17Y29sb3I6cmdiYSgwLDAsMCwuMzgpfS5tYXQtcmFkaW8tYnV0dG9uW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtcmlwcGxlLWVsZW1lbnRbX25nY29udGVudC0lQ09NUCVde2JhY2tncm91bmQtY29sb3I6IzAwMH0ubWF0LXNlbGVjdC12YWx1ZVtfbmdjb250ZW50LSVDT01QJV17Y29sb3I6IzIxMjEyMX0ubWF0LXNlbGVjdC1wbGFjZWhvbGRlcltfbmdjb250ZW50LSVDT01QJV17Y29sb3I6cmdiYSg5Nyw5Nyw5NywuNDIpfS5tYXQtc2VsZWN0LWRpc2FibGVkW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtc2VsZWN0LXZhbHVlW19uZ2NvbnRlbnQtJUNPTVAlXXtjb2xvcjojNzU3NTc1fS5tYXQtc2VsZWN0LWFycm93W19uZ2NvbnRlbnQtJUNPTVAlXXtjb2xvcjojNjE2MTYxfS5tYXQtc2VsZWN0LXBhbmVsW19uZ2NvbnRlbnQtJUNPTVAlXXtiYWNrZ3JvdW5kOiNmZmZ9Lm1hdC1zZWxlY3QtcGFuZWxbX25nY29udGVudC0lQ09NUCVdOm5vdChbY2xhc3MqPW1hdC1lbGV2YXRpb24tel0pe2JveC1zaGFkb3c6MHB4IDJweCA0cHggLTFweCByZ2JhKDAsIDAsIDAsIDAuMiksMHB4IDRweCA1cHggMHB4IHJnYmEoMCwgMCwgMCwgMC4xNCksMHB4IDFweCAxMHB4IDBweCByZ2JhKDAsIDAsIDAsIDAuMTIpfS5tYXQtc2VsZWN0LXBhbmVsW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtb3B0aW9uLm1hdC1zZWxlY3RlZFtfbmdjb250ZW50LSVDT01QJV06bm90KC5tYXQtb3B0aW9uLW11bHRpcGxlKXtiYWNrZ3JvdW5kOnJnYmEoMCwwLDAsLjEyKX0ubWF0LWZvcm0tZmllbGQubWF0LWZvY3VzZWQubWF0LXByaW1hcnlbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1zZWxlY3QtYXJyb3dbX25nY29udGVudC0lQ09NUCVde2NvbG9yOiNmNTdjMDB9Lm1hdC1mb3JtLWZpZWxkLm1hdC1mb2N1c2VkLm1hdC1hY2NlbnRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1zZWxlY3QtYXJyb3dbX25nY29udGVudC0lQ09NUCVde2NvbG9yOiNmZjk4MDB9Lm1hdC1mb3JtLWZpZWxkLm1hdC1mb2N1c2VkLm1hdC13YXJuW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtc2VsZWN0LWFycm93W19uZ2NvbnRlbnQtJUNPTVAlXXtjb2xvcjojZjQ0MzM2fS5tYXQtZm9ybS1maWVsZFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXNlbGVjdC5tYXQtc2VsZWN0LWludmFsaWRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1zZWxlY3QtYXJyb3dbX25nY29udGVudC0lQ09NUCVde2NvbG9yOiNmNDQzMzZ9Lm1hdC1mb3JtLWZpZWxkW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtc2VsZWN0Lm1hdC1zZWxlY3QtZGlzYWJsZWRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1zZWxlY3QtYXJyb3dbX25nY29udGVudC0lQ09NUCVde2NvbG9yOiM3NTc1NzV9Lm1hdC1kcmF3ZXItY29udGFpbmVyW19uZ2NvbnRlbnQtJUNPTVAlXXtiYWNrZ3JvdW5kLWNvbG9yOiNmYWZhZmE7Y29sb3I6IzIxMjEyMX0ubWF0LWRyYXdlcltfbmdjb250ZW50LSVDT01QJV17YmFja2dyb3VuZC1jb2xvcjojZmZmO2NvbG9yOiMyMTIxMjF9Lm1hdC1kcmF3ZXIubWF0LWRyYXdlci1wdXNoW19uZ2NvbnRlbnQtJUNPTVAlXXtiYWNrZ3JvdW5kLWNvbG9yOiNmZmZ9Lm1hdC1kcmF3ZXJbX25nY29udGVudC0lQ09NUCVdOm5vdCgubWF0LWRyYXdlci1zaWRlKXtib3gtc2hhZG93OjBweCA4cHggMTBweCAtNXB4IHJnYmEoMCwgMCwgMCwgMC4yKSwwcHggMTZweCAyNHB4IDJweCByZ2JhKDAsIDAsIDAsIDAuMTQpLDBweCA2cHggMzBweCA1cHggcmdiYSgwLCAwLCAwLCAwLjEyKX0ubWF0LWRyYXdlci1zaWRlW19uZ2NvbnRlbnQtJUNPTVAlXXtib3JkZXItcmlnaHQ6c29saWQgMXB4IHJnYmEoMCwwLDAsLjEyKX0ubWF0LWRyYXdlci1zaWRlLm1hdC1kcmF3ZXItZW5kW19uZ2NvbnRlbnQtJUNPTVAlXXtib3JkZXItbGVmdDpzb2xpZCAxcHggcmdiYSgwLDAsMCwuMTIpO2JvcmRlci1yaWdodDpub25lfVtkaXI9cnRsXVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWRyYXdlci1zaWRlW19uZ2NvbnRlbnQtJUNPTVAlXXtib3JkZXItbGVmdDpzb2xpZCAxcHggcmdiYSgwLDAsMCwuMTIpO2JvcmRlci1yaWdodDpub25lfVtkaXI9cnRsXVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWRyYXdlci1zaWRlLm1hdC1kcmF3ZXItZW5kW19uZ2NvbnRlbnQtJUNPTVAlXXtib3JkZXItbGVmdDpub25lO2JvcmRlci1yaWdodDpzb2xpZCAxcHggcmdiYSgwLDAsMCwuMTIpfS5tYXQtZHJhd2VyLWJhY2tkcm9wLm1hdC1kcmF3ZXItc2hvd25bX25nY29udGVudC0lQ09NUCVde2JhY2tncm91bmQtY29sb3I6cmdiYSgwLDAsMCwuNil9Lm1hdC1zbGlkZS10b2dnbGUubWF0LWNoZWNrZWRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1zbGlkZS10b2dnbGUtdGh1bWJbX25nY29udGVudC0lQ09NUCVde2JhY2tncm91bmQtY29sb3I6I2ZmOTgwMH0ubWF0LXNsaWRlLXRvZ2dsZS5tYXQtY2hlY2tlZFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXNsaWRlLXRvZ2dsZS1iYXJbX25nY29udGVudC0lQ09NUCVde2JhY2tncm91bmQtY29sb3I6cmdiYSgyNTUsMTUyLDAsLjU0KX0ubWF0LXNsaWRlLXRvZ2dsZS5tYXQtY2hlY2tlZFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXJpcHBsZS1lbGVtZW50W19uZ2NvbnRlbnQtJUNPTVAlXXtiYWNrZ3JvdW5kLWNvbG9yOiNmZjk4MDB9Lm1hdC1zbGlkZS10b2dnbGUubWF0LXByaW1hcnkubWF0LWNoZWNrZWRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1zbGlkZS10b2dnbGUtdGh1bWJbX25nY29udGVudC0lQ09NUCVde2JhY2tncm91bmQtY29sb3I6I2Y1N2MwMH0ubWF0LXNsaWRlLXRvZ2dsZS5tYXQtcHJpbWFyeS5tYXQtY2hlY2tlZFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXNsaWRlLXRvZ2dsZS1iYXJbX25nY29udGVudC0lQ09NUCVde2JhY2tncm91bmQtY29sb3I6cmdiYSgyNDUsMTI0LDAsLjU0KX0ubWF0LXNsaWRlLXRvZ2dsZS5tYXQtcHJpbWFyeS5tYXQtY2hlY2tlZFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXJpcHBsZS1lbGVtZW50W19uZ2NvbnRlbnQtJUNPTVAlXXtiYWNrZ3JvdW5kLWNvbG9yOiNmNTdjMDB9Lm1hdC1zbGlkZS10b2dnbGUubWF0LXdhcm4ubWF0LWNoZWNrZWRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1zbGlkZS10b2dnbGUtdGh1bWJbX25nY29udGVudC0lQ09NUCVde2JhY2tncm91bmQtY29sb3I6I2Y0NDMzNn0ubWF0LXNsaWRlLXRvZ2dsZS5tYXQtd2Fybi5tYXQtY2hlY2tlZFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXNsaWRlLXRvZ2dsZS1iYXJbX25nY29udGVudC0lQ09NUCVde2JhY2tncm91bmQtY29sb3I6cmdiYSgyNDQsNjcsNTQsLjU0KX0ubWF0LXNsaWRlLXRvZ2dsZS5tYXQtd2Fybi5tYXQtY2hlY2tlZFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXJpcHBsZS1lbGVtZW50W19uZ2NvbnRlbnQtJUNPTVAlXXtiYWNrZ3JvdW5kLWNvbG9yOiNmNDQzMzZ9Lm1hdC1zbGlkZS10b2dnbGVbX25nY29udGVudC0lQ09NUCVdOm5vdCgubWF0LWNoZWNrZWQpICAgLm1hdC1yaXBwbGUtZWxlbWVudFtfbmdjb250ZW50LSVDT01QJV17YmFja2dyb3VuZC1jb2xvcjojMDAwfS5tYXQtc2xpZGUtdG9nZ2xlLXRodW1iW19uZ2NvbnRlbnQtJUNPTVAlXXtib3gtc2hhZG93OjBweCAycHggMXB4IC0xcHggcmdiYSgwLCAwLCAwLCAwLjIpLDBweCAxcHggMXB4IDBweCByZ2JhKDAsIDAsIDAsIDAuMTQpLDBweCAxcHggM3B4IDBweCByZ2JhKDAsIDAsIDAsIDAuMTIpO2JhY2tncm91bmQtY29sb3I6I2ZhZmFmYX0ubWF0LXNsaWRlLXRvZ2dsZS1iYXJbX25nY29udGVudC0lQ09NUCVde2JhY2tncm91bmQtY29sb3I6cmdiYSgwLDAsMCwuMzgpfS5tYXQtc2xpZGVyLXRyYWNrLWJhY2tncm91bmRbX25nY29udGVudC0lQ09NUCVde2JhY2tncm91bmQtY29sb3I6cmdiYSgwLDAsMCwuMjYpfS5tYXQtcHJpbWFyeVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXNsaWRlci10cmFjay1maWxsW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1wcmltYXJ5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtc2xpZGVyLXRodW1iW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1wcmltYXJ5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtc2xpZGVyLXRodW1iLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXtiYWNrZ3JvdW5kLWNvbG9yOiNmNTdjMDB9Lm1hdC1wcmltYXJ5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtc2xpZGVyLXRodW1iLWxhYmVsLXRleHRbX25nY29udGVudC0lQ09NUCVde2NvbG9yOiNmZmZ9Lm1hdC1wcmltYXJ5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtc2xpZGVyLWZvY3VzLXJpbmdbX25nY29udGVudC0lQ09NUCVde2JhY2tncm91bmQtY29sb3I6cmdiYSgyNDUsMTI0LDAsLjIpfS5tYXQtYWNjZW50W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtc2xpZGVyLXRyYWNrLWZpbGxbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWFjY2VudFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXNsaWRlci10aHVtYltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtYWNjZW50W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtc2xpZGVyLXRodW1iLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXtiYWNrZ3JvdW5kLWNvbG9yOiNmZjk4MDB9Lm1hdC1hY2NlbnRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1zbGlkZXItdGh1bWItbGFiZWwtdGV4dFtfbmdjb250ZW50LSVDT01QJV17Y29sb3I6I2ZmZn0ubWF0LWFjY2VudFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXNsaWRlci1mb2N1cy1yaW5nW19uZ2NvbnRlbnQtJUNPTVAlXXtiYWNrZ3JvdW5kLWNvbG9yOnJnYmEoMjU1LDE1MiwwLC4yKX0ubWF0LXdhcm5bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1zbGlkZXItdHJhY2stZmlsbFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtd2Fybltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXNsaWRlci10aHVtYltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtd2Fybltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXNsaWRlci10aHVtYi1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17YmFja2dyb3VuZC1jb2xvcjojZjQ0MzM2fS5tYXQtd2Fybltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXNsaWRlci10aHVtYi1sYWJlbC10ZXh0W19uZ2NvbnRlbnQtJUNPTVAlXXtjb2xvcjojZmZmfS5tYXQtd2Fybltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXNsaWRlci1mb2N1cy1yaW5nW19uZ2NvbnRlbnQtJUNPTVAlXXtiYWNrZ3JvdW5kLWNvbG9yOnJnYmEoMjQ0LDY3LDU0LC4yKX0ubWF0LXNsaWRlcltfbmdjb250ZW50LSVDT01QJV06aG92ZXIgICAubWF0LXNsaWRlci10cmFjay1iYWNrZ3JvdW5kW19uZ2NvbnRlbnQtJUNPTVAlXSwgLmNkay1mb2N1c2VkW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtc2xpZGVyLXRyYWNrLWJhY2tncm91bmRbX25nY29udGVudC0lQ09NUCVde2JhY2tncm91bmQtY29sb3I6cmdiYSgwLDAsMCwuMzgpfS5tYXQtc2xpZGVyLWRpc2FibGVkW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtc2xpZGVyLXRyYWNrLWJhY2tncm91bmRbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXNsaWRlci1kaXNhYmxlZFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXNsaWRlci10cmFjay1maWxsW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1zbGlkZXItZGlzYWJsZWRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1zbGlkZXItdGh1bWJbX25nY29udGVudC0lQ09NUCVde2JhY2tncm91bmQtY29sb3I6cmdiYSgwLDAsMCwuMjYpfS5tYXQtc2xpZGVyLWRpc2FibGVkW19uZ2NvbnRlbnQtJUNPTVAlXTpob3ZlciAgIC5tYXQtc2xpZGVyLXRyYWNrLWJhY2tncm91bmRbX25nY29udGVudC0lQ09NUCVde2JhY2tncm91bmQtY29sb3I6cmdiYSgwLDAsMCwuMjYpfS5tYXQtc2xpZGVyLW1pbi12YWx1ZVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXNsaWRlci1mb2N1cy1yaW5nW19uZ2NvbnRlbnQtJUNPTVAlXXtiYWNrZ3JvdW5kLWNvbG9yOnJnYmEoMCwwLDAsLjEyKX0ubWF0LXNsaWRlci1taW4tdmFsdWUubWF0LXNsaWRlci10aHVtYi1sYWJlbC1zaG93aW5nW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtc2xpZGVyLXRodW1iW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1zbGlkZXItbWluLXZhbHVlLm1hdC1zbGlkZXItdGh1bWItbGFiZWwtc2hvd2luZ1tfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXNsaWRlci10aHVtYi1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17YmFja2dyb3VuZC1jb2xvcjpyZ2JhKDAsMCwwLC44Nyl9Lm1hdC1zbGlkZXItbWluLXZhbHVlLm1hdC1zbGlkZXItdGh1bWItbGFiZWwtc2hvd2luZy5jZGstZm9jdXNlZFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXNsaWRlci10aHVtYltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtc2xpZGVyLW1pbi12YWx1ZS5tYXQtc2xpZGVyLXRodW1iLWxhYmVsLXNob3dpbmcuY2RrLWZvY3VzZWRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1zbGlkZXItdGh1bWItbGFiZWxbX25nY29udGVudC0lQ09NUCVde2JhY2tncm91bmQtY29sb3I6cmdiYSgwLDAsMCwuMjYpfS5tYXQtc2xpZGVyLW1pbi12YWx1ZVtfbmdjb250ZW50LSVDT01QJV06bm90KC5tYXQtc2xpZGVyLXRodW1iLWxhYmVsLXNob3dpbmcpICAgLm1hdC1zbGlkZXItdGh1bWJbX25nY29udGVudC0lQ09NUCVde2JvcmRlci1jb2xvcjpyZ2JhKDAsMCwwLC4yNik7YmFja2dyb3VuZC1jb2xvcjp0cmFuc3BhcmVudH0ubWF0LXNsaWRlci1taW4tdmFsdWVbX25nY29udGVudC0lQ09NUCVdOm5vdCgubWF0LXNsaWRlci10aHVtYi1sYWJlbC1zaG93aW5nKTpob3ZlciAgIC5tYXQtc2xpZGVyLXRodW1iW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1zbGlkZXItbWluLXZhbHVlW19uZ2NvbnRlbnQtJUNPTVAlXTpub3QoLm1hdC1zbGlkZXItdGh1bWItbGFiZWwtc2hvd2luZykuY2RrLWZvY3VzZWQgICAubWF0LXNsaWRlci10aHVtYltfbmdjb250ZW50LSVDT01QJV17Ym9yZGVyLWNvbG9yOnJnYmEoMCwwLDAsLjM4KX0ubWF0LXNsaWRlci1taW4tdmFsdWVbX25nY29udGVudC0lQ09NUCVdOm5vdCgubWF0LXNsaWRlci10aHVtYi1sYWJlbC1zaG93aW5nKTpob3Zlci5tYXQtc2xpZGVyLWRpc2FibGVkICAgLm1hdC1zbGlkZXItdGh1bWJbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXNsaWRlci1taW4tdmFsdWVbX25nY29udGVudC0lQ09NUCVdOm5vdCgubWF0LXNsaWRlci10aHVtYi1sYWJlbC1zaG93aW5nKS5jZGstZm9jdXNlZC5tYXQtc2xpZGVyLWRpc2FibGVkICAgLm1hdC1zbGlkZXItdGh1bWJbX25nY29udGVudC0lQ09NUCVde2JvcmRlci1jb2xvcjpyZ2JhKDAsMCwwLC4yNil9Lm1hdC1zbGlkZXItaGFzLXRpY2tzW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtc2xpZGVyLXdyYXBwZXJbX25nY29udGVudC0lQ09NUCVdOjphZnRlcntib3JkZXItY29sb3I6cmdiYSgwLDAsMCwuNyl9Lm1hdC1zbGlkZXItaG9yaXpvbnRhbFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXNsaWRlci10aWNrc1tfbmdjb250ZW50LSVDT01QJV17YmFja2dyb3VuZC1pbWFnZTpyZXBlYXRpbmctbGluZWFyLWdyYWRpZW50KHRvIHJpZ2h0LCByZ2JhKDAsIDAsIDAsIDAuNyksIHJnYmEoMCwgMCwgMCwgMC43KSAycHgsIHRyYW5zcGFyZW50IDAsIHRyYW5zcGFyZW50KTtiYWNrZ3JvdW5kLWltYWdlOi1tb3otcmVwZWF0aW5nLWxpbmVhci1ncmFkaWVudCgwLjAwMDFkZWcsIHJnYmEoMCwgMCwgMCwgMC43KSwgcmdiYSgwLCAwLCAwLCAwLjcpIDJweCwgdHJhbnNwYXJlbnQgMCwgdHJhbnNwYXJlbnQpfS5tYXQtc2xpZGVyLXZlcnRpY2FsW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtc2xpZGVyLXRpY2tzW19uZ2NvbnRlbnQtJUNPTVAlXXtiYWNrZ3JvdW5kLWltYWdlOnJlcGVhdGluZy1saW5lYXItZ3JhZGllbnQodG8gYm90dG9tLCByZ2JhKDAsIDAsIDAsIDAuNyksIHJnYmEoMCwgMCwgMCwgMC43KSAycHgsIHRyYW5zcGFyZW50IDAsIHRyYW5zcGFyZW50KX0ubWF0LXN0ZXAtaGVhZGVyLmNkay1rZXlib2FyZC1mb2N1c2VkW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1zdGVwLWhlYWRlci5jZGstcHJvZ3JhbS1mb2N1c2VkW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1zdGVwLWhlYWRlcltfbmdjb250ZW50LSVDT01QJV06aG92ZXJ7YmFja2dyb3VuZC1jb2xvcjpyZ2JhKDAsMCwwLC4wNCl9QG1lZGlhKGhvdmVyOiBub25lKXsubWF0LXN0ZXAtaGVhZGVyW19uZ2NvbnRlbnQtJUNPTVAlXTpob3ZlcntiYWNrZ3JvdW5kOm5vbmV9fS5tYXQtc3RlcC1oZWFkZXJbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1zdGVwLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1zdGVwLWhlYWRlcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXN0ZXAtb3B0aW9uYWxbX25nY29udGVudC0lQ09NUCVde2NvbG9yOiM2MTYxNjF9Lm1hdC1zdGVwLWhlYWRlcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXN0ZXAtaWNvbltfbmdjb250ZW50LSVDT01QJV17YmFja2dyb3VuZC1jb2xvcjojNjE2MTYxO2NvbG9yOiNmZmZ9Lm1hdC1zdGVwLWhlYWRlcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXN0ZXAtaWNvbi1zZWxlY3RlZFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtc3RlcC1oZWFkZXJbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1zdGVwLWljb24tc3RhdGUtZG9uZVtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtc3RlcC1oZWFkZXJbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1zdGVwLWljb24tc3RhdGUtZWRpdFtfbmdjb250ZW50LSVDT01QJV17YmFja2dyb3VuZC1jb2xvcjojZjU3YzAwO2NvbG9yOiNmZmZ9Lm1hdC1zdGVwLWhlYWRlcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXN0ZXAtaWNvbi1zdGF0ZS1lcnJvcltfbmdjb250ZW50LSVDT01QJV17YmFja2dyb3VuZC1jb2xvcjp0cmFuc3BhcmVudDtjb2xvcjojZjQ0MzM2fS5tYXQtc3RlcC1oZWFkZXJbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1zdGVwLWxhYmVsLm1hdC1zdGVwLWxhYmVsLWFjdGl2ZVtfbmdjb250ZW50LSVDT01QJV17Y29sb3I6IzIxMjEyMX0ubWF0LXN0ZXAtaGVhZGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtc3RlcC1sYWJlbC5tYXQtc3RlcC1sYWJlbC1lcnJvcltfbmdjb250ZW50LSVDT01QJV17Y29sb3I6I2Y0NDMzNn0ubWF0LXN0ZXBwZXItaG9yaXpvbnRhbFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtc3RlcHBlci12ZXJ0aWNhbFtfbmdjb250ZW50LSVDT01QJV17YmFja2dyb3VuZC1jb2xvcjojZmZmfS5tYXQtc3RlcHBlci12ZXJ0aWNhbC1saW5lW19uZ2NvbnRlbnQtJUNPTVAlXTo6YmVmb3Jle2JvcmRlci1sZWZ0LWNvbG9yOnJnYmEoMCwwLDAsLjEyKX0ubWF0LWhvcml6b250YWwtc3RlcHBlci1oZWFkZXJbX25nY29udGVudC0lQ09NUCVdOjpiZWZvcmUsIC5tYXQtaG9yaXpvbnRhbC1zdGVwcGVyLWhlYWRlcltfbmdjb250ZW50LSVDT01QJV06OmFmdGVyLCAubWF0LXN0ZXBwZXItaG9yaXpvbnRhbC1saW5lW19uZ2NvbnRlbnQtJUNPTVAlXXtib3JkZXItdG9wLWNvbG9yOnJnYmEoMCwwLDAsLjEyKX0ubWF0LWhvcml6b250YWwtc3RlcHBlci1oZWFkZXJbX25nY29udGVudC0lQ09NUCVde2hlaWdodDo3MnB4fS5tYXQtc3RlcHBlci1sYWJlbC1wb3NpdGlvbi1ib3R0b21bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1ob3Jpem9udGFsLXN0ZXBwZXItaGVhZGVyW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC12ZXJ0aWNhbC1zdGVwcGVyLWhlYWRlcltfbmdjb250ZW50LSVDT01QJV17cGFkZGluZzoyNHB4IDI0cHh9Lm1hdC1zdGVwcGVyLXZlcnRpY2FsLWxpbmVbX25nY29udGVudC0lQ09NUCVdOjpiZWZvcmV7dG9wOi0xNnB4O2JvdHRvbTotMTZweH0ubWF0LXN0ZXBwZXItbGFiZWwtcG9zaXRpb24tYm90dG9tW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaG9yaXpvbnRhbC1zdGVwcGVyLWhlYWRlcltfbmdjb250ZW50LSVDT01QJV06OmFmdGVyLCAubWF0LXN0ZXBwZXItbGFiZWwtcG9zaXRpb24tYm90dG9tW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaG9yaXpvbnRhbC1zdGVwcGVyLWhlYWRlcltfbmdjb250ZW50LSVDT01QJV06OmJlZm9yZXt0b3A6MzZweH0ubWF0LXN0ZXBwZXItbGFiZWwtcG9zaXRpb24tYm90dG9tW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtc3RlcHBlci1ob3Jpem9udGFsLWxpbmVbX25nY29udGVudC0lQ09NUCVde3RvcDozNnB4fS5tYXQtc29ydC1oZWFkZXItYXJyb3dbX25nY29udGVudC0lQ09NUCVde2NvbG9yOiM2MTYxNjF9Lm1hdC10YWItbmF2LWJhcltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdGFiLWhlYWRlcltfbmdjb250ZW50LSVDT01QJV17Ym9yZGVyLWJvdHRvbToxcHggc29saWQgcmdiYSgwLDAsMCwuMTIpfS5tYXQtdGFiLWdyb3VwLWludmVydGVkLWhlYWRlcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXRhYi1uYXYtYmFyW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10YWItZ3JvdXAtaW52ZXJ0ZWQtaGVhZGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtdGFiLWhlYWRlcltfbmdjb250ZW50LSVDT01QJV17Ym9yZGVyLXRvcDoxcHggc29saWQgcmdiYSgwLDAsMCwuMTIpO2JvcmRlci1ib3R0b206bm9uZX0ubWF0LXRhYi1sYWJlbFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdGFiLWxpbmtbX25nY29udGVudC0lQ09NUCVde2NvbG9yOiMyMTIxMjF9Lm1hdC10YWItbGFiZWwubWF0LXRhYi1kaXNhYmxlZFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdGFiLWxpbmsubWF0LXRhYi1kaXNhYmxlZFtfbmdjb250ZW50LSVDT01QJV17Y29sb3I6Izc1NzU3NX0ubWF0LXRhYi1oZWFkZXItcGFnaW5hdGlvbi1jaGV2cm9uW19uZ2NvbnRlbnQtJUNPTVAlXXtib3JkZXItY29sb3I6IzIxMjEyMX0ubWF0LXRhYi1oZWFkZXItcGFnaW5hdGlvbi1kaXNhYmxlZFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXRhYi1oZWFkZXItcGFnaW5hdGlvbi1jaGV2cm9uW19uZ2NvbnRlbnQtJUNPTVAlXXtib3JkZXItY29sb3I6Izc1NzU3NX0ubWF0LXRhYi1ncm91cFtjbGFzcyo9bWF0LWJhY2tncm91bmQtXVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXRhYi1oZWFkZXJbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXRhYi1uYXYtYmFyW2NsYXNzKj1tYXQtYmFja2dyb3VuZC1dW19uZ2NvbnRlbnQtJUNPTVAlXXtib3JkZXItYm90dG9tOm5vbmU7Ym9yZGVyLXRvcDpub25lfS5tYXQtdGFiLWdyb3VwLm1hdC1wcmltYXJ5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtdGFiLWxhYmVsLmNkay1rZXlib2FyZC1mb2N1c2VkW19uZ2NvbnRlbnQtJUNPTVAlXTpub3QoLm1hdC10YWItZGlzYWJsZWQpLCAubWF0LXRhYi1ncm91cC5tYXQtcHJpbWFyeVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXRhYi1sYWJlbC5jZGstcHJvZ3JhbS1mb2N1c2VkW19uZ2NvbnRlbnQtJUNPTVAlXTpub3QoLm1hdC10YWItZGlzYWJsZWQpLCAubWF0LXRhYi1ncm91cC5tYXQtcHJpbWFyeVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXRhYi1saW5rLmNkay1rZXlib2FyZC1mb2N1c2VkW19uZ2NvbnRlbnQtJUNPTVAlXTpub3QoLm1hdC10YWItZGlzYWJsZWQpLCAubWF0LXRhYi1ncm91cC5tYXQtcHJpbWFyeVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXRhYi1saW5rLmNkay1wcm9ncmFtLWZvY3VzZWRbX25nY29udGVudC0lQ09NUCVdOm5vdCgubWF0LXRhYi1kaXNhYmxlZCksIC5tYXQtdGFiLW5hdi1iYXIubWF0LXByaW1hcnlbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC10YWItbGFiZWwuY2RrLWtleWJvYXJkLWZvY3VzZWRbX25nY29udGVudC0lQ09NUCVdOm5vdCgubWF0LXRhYi1kaXNhYmxlZCksIC5tYXQtdGFiLW5hdi1iYXIubWF0LXByaW1hcnlbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC10YWItbGFiZWwuY2RrLXByb2dyYW0tZm9jdXNlZFtfbmdjb250ZW50LSVDT01QJV06bm90KC5tYXQtdGFiLWRpc2FibGVkKSwgLm1hdC10YWItbmF2LWJhci5tYXQtcHJpbWFyeVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXRhYi1saW5rLmNkay1rZXlib2FyZC1mb2N1c2VkW19uZ2NvbnRlbnQtJUNPTVAlXTpub3QoLm1hdC10YWItZGlzYWJsZWQpLCAubWF0LXRhYi1uYXYtYmFyLm1hdC1wcmltYXJ5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtdGFiLWxpbmsuY2RrLXByb2dyYW0tZm9jdXNlZFtfbmdjb250ZW50LSVDT01QJV06bm90KC5tYXQtdGFiLWRpc2FibGVkKXtiYWNrZ3JvdW5kLWNvbG9yOnJnYmEoMjU1LDE1MiwwLC4zKX0ubWF0LXRhYi1ncm91cC5tYXQtcHJpbWFyeVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWluay1iYXJbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXRhYi1uYXYtYmFyLm1hdC1wcmltYXJ5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaW5rLWJhcltfbmdjb250ZW50LSVDT01QJV17YmFja2dyb3VuZC1jb2xvcjojZjU3YzAwfS5tYXQtdGFiLWdyb3VwLm1hdC1wcmltYXJ5Lm1hdC1iYWNrZ3JvdW5kLXByaW1hcnlbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pbmstYmFyW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10YWItbmF2LWJhci5tYXQtcHJpbWFyeS5tYXQtYmFja2dyb3VuZC1wcmltYXJ5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaW5rLWJhcltfbmdjb250ZW50LSVDT01QJV17YmFja2dyb3VuZC1jb2xvcjojZmZmfS5tYXQtdGFiLWdyb3VwLm1hdC1hY2NlbnRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC10YWItbGFiZWwuY2RrLWtleWJvYXJkLWZvY3VzZWRbX25nY29udGVudC0lQ09NUCVdOm5vdCgubWF0LXRhYi1kaXNhYmxlZCksIC5tYXQtdGFiLWdyb3VwLm1hdC1hY2NlbnRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC10YWItbGFiZWwuY2RrLXByb2dyYW0tZm9jdXNlZFtfbmdjb250ZW50LSVDT01QJV06bm90KC5tYXQtdGFiLWRpc2FibGVkKSwgLm1hdC10YWItZ3JvdXAubWF0LWFjY2VudFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXRhYi1saW5rLmNkay1rZXlib2FyZC1mb2N1c2VkW19uZ2NvbnRlbnQtJUNPTVAlXTpub3QoLm1hdC10YWItZGlzYWJsZWQpLCAubWF0LXRhYi1ncm91cC5tYXQtYWNjZW50W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtdGFiLWxpbmsuY2RrLXByb2dyYW0tZm9jdXNlZFtfbmdjb250ZW50LSVDT01QJV06bm90KC5tYXQtdGFiLWRpc2FibGVkKSwgLm1hdC10YWItbmF2LWJhci5tYXQtYWNjZW50W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtdGFiLWxhYmVsLmNkay1rZXlib2FyZC1mb2N1c2VkW19uZ2NvbnRlbnQtJUNPTVAlXTpub3QoLm1hdC10YWItZGlzYWJsZWQpLCAubWF0LXRhYi1uYXYtYmFyLm1hdC1hY2NlbnRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC10YWItbGFiZWwuY2RrLXByb2dyYW0tZm9jdXNlZFtfbmdjb250ZW50LSVDT01QJV06bm90KC5tYXQtdGFiLWRpc2FibGVkKSwgLm1hdC10YWItbmF2LWJhci5tYXQtYWNjZW50W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtdGFiLWxpbmsuY2RrLWtleWJvYXJkLWZvY3VzZWRbX25nY29udGVudC0lQ09NUCVdOm5vdCgubWF0LXRhYi1kaXNhYmxlZCksIC5tYXQtdGFiLW5hdi1iYXIubWF0LWFjY2VudFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXRhYi1saW5rLmNkay1wcm9ncmFtLWZvY3VzZWRbX25nY29udGVudC0lQ09NUCVdOm5vdCgubWF0LXRhYi1kaXNhYmxlZCl7YmFja2dyb3VuZC1jb2xvcjpyZ2JhKDI1NSwxNTIsMCwuMyl9Lm1hdC10YWItZ3JvdXAubWF0LWFjY2VudFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWluay1iYXJbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXRhYi1uYXYtYmFyLm1hdC1hY2NlbnRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pbmstYmFyW19uZ2NvbnRlbnQtJUNPTVAlXXtiYWNrZ3JvdW5kLWNvbG9yOiNmZjk4MDB9Lm1hdC10YWItZ3JvdXAubWF0LWFjY2VudC5tYXQtYmFja2dyb3VuZC1hY2NlbnRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pbmstYmFyW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10YWItbmF2LWJhci5tYXQtYWNjZW50Lm1hdC1iYWNrZ3JvdW5kLWFjY2VudFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWluay1iYXJbX25nY29udGVudC0lQ09NUCVde2JhY2tncm91bmQtY29sb3I6I2ZmZn0ubWF0LXRhYi1ncm91cC5tYXQtd2Fybltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXRhYi1sYWJlbC5jZGsta2V5Ym9hcmQtZm9jdXNlZFtfbmdjb250ZW50LSVDT01QJV06bm90KC5tYXQtdGFiLWRpc2FibGVkKSwgLm1hdC10YWItZ3JvdXAubWF0LXdhcm5bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC10YWItbGFiZWwuY2RrLXByb2dyYW0tZm9jdXNlZFtfbmdjb250ZW50LSVDT01QJV06bm90KC5tYXQtdGFiLWRpc2FibGVkKSwgLm1hdC10YWItZ3JvdXAubWF0LXdhcm5bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC10YWItbGluay5jZGsta2V5Ym9hcmQtZm9jdXNlZFtfbmdjb250ZW50LSVDT01QJV06bm90KC5tYXQtdGFiLWRpc2FibGVkKSwgLm1hdC10YWItZ3JvdXAubWF0LXdhcm5bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC10YWItbGluay5jZGstcHJvZ3JhbS1mb2N1c2VkW19uZ2NvbnRlbnQtJUNPTVAlXTpub3QoLm1hdC10YWItZGlzYWJsZWQpLCAubWF0LXRhYi1uYXYtYmFyLm1hdC13YXJuW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtdGFiLWxhYmVsLmNkay1rZXlib2FyZC1mb2N1c2VkW19uZ2NvbnRlbnQtJUNPTVAlXTpub3QoLm1hdC10YWItZGlzYWJsZWQpLCAubWF0LXRhYi1uYXYtYmFyLm1hdC13YXJuW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtdGFiLWxhYmVsLmNkay1wcm9ncmFtLWZvY3VzZWRbX25nY29udGVudC0lQ09NUCVdOm5vdCgubWF0LXRhYi1kaXNhYmxlZCksIC5tYXQtdGFiLW5hdi1iYXIubWF0LXdhcm5bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC10YWItbGluay5jZGsta2V5Ym9hcmQtZm9jdXNlZFtfbmdjb250ZW50LSVDT01QJV06bm90KC5tYXQtdGFiLWRpc2FibGVkKSwgLm1hdC10YWItbmF2LWJhci5tYXQtd2Fybltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXRhYi1saW5rLmNkay1wcm9ncmFtLWZvY3VzZWRbX25nY29udGVudC0lQ09NUCVdOm5vdCgubWF0LXRhYi1kaXNhYmxlZCl7YmFja2dyb3VuZC1jb2xvcjpyZ2JhKDI1NSwyMDUsMjEwLC4zKX0ubWF0LXRhYi1ncm91cC5tYXQtd2Fybltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWluay1iYXJbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXRhYi1uYXYtYmFyLm1hdC13YXJuW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaW5rLWJhcltfbmdjb250ZW50LSVDT01QJV17YmFja2dyb3VuZC1jb2xvcjojZjQ0MzM2fS5tYXQtdGFiLWdyb3VwLm1hdC13YXJuLm1hdC1iYWNrZ3JvdW5kLXdhcm5bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pbmstYmFyW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10YWItbmF2LWJhci5tYXQtd2Fybi5tYXQtYmFja2dyb3VuZC13YXJuW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaW5rLWJhcltfbmdjb250ZW50LSVDT01QJV17YmFja2dyb3VuZC1jb2xvcjojZmZmfS5tYXQtdGFiLWdyb3VwLm1hdC1iYWNrZ3JvdW5kLXByaW1hcnlbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC10YWItbGFiZWwuY2RrLWtleWJvYXJkLWZvY3VzZWRbX25nY29udGVudC0lQ09NUCVdOm5vdCgubWF0LXRhYi1kaXNhYmxlZCksIC5tYXQtdGFiLWdyb3VwLm1hdC1iYWNrZ3JvdW5kLXByaW1hcnlbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC10YWItbGFiZWwuY2RrLXByb2dyYW0tZm9jdXNlZFtfbmdjb250ZW50LSVDT01QJV06bm90KC5tYXQtdGFiLWRpc2FibGVkKSwgLm1hdC10YWItZ3JvdXAubWF0LWJhY2tncm91bmQtcHJpbWFyeVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXRhYi1saW5rLmNkay1rZXlib2FyZC1mb2N1c2VkW19uZ2NvbnRlbnQtJUNPTVAlXTpub3QoLm1hdC10YWItZGlzYWJsZWQpLCAubWF0LXRhYi1ncm91cC5tYXQtYmFja2dyb3VuZC1wcmltYXJ5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtdGFiLWxpbmsuY2RrLXByb2dyYW0tZm9jdXNlZFtfbmdjb250ZW50LSVDT01QJV06bm90KC5tYXQtdGFiLWRpc2FibGVkKSwgLm1hdC10YWItbmF2LWJhci5tYXQtYmFja2dyb3VuZC1wcmltYXJ5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtdGFiLWxhYmVsLmNkay1rZXlib2FyZC1mb2N1c2VkW19uZ2NvbnRlbnQtJUNPTVAlXTpub3QoLm1hdC10YWItZGlzYWJsZWQpLCAubWF0LXRhYi1uYXYtYmFyLm1hdC1iYWNrZ3JvdW5kLXByaW1hcnlbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC10YWItbGFiZWwuY2RrLXByb2dyYW0tZm9jdXNlZFtfbmdjb250ZW50LSVDT01QJV06bm90KC5tYXQtdGFiLWRpc2FibGVkKSwgLm1hdC10YWItbmF2LWJhci5tYXQtYmFja2dyb3VuZC1wcmltYXJ5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtdGFiLWxpbmsuY2RrLWtleWJvYXJkLWZvY3VzZWRbX25nY29udGVudC0lQ09NUCVdOm5vdCgubWF0LXRhYi1kaXNhYmxlZCksIC5tYXQtdGFiLW5hdi1iYXIubWF0LWJhY2tncm91bmQtcHJpbWFyeVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXRhYi1saW5rLmNkay1wcm9ncmFtLWZvY3VzZWRbX25nY29udGVudC0lQ09NUCVdOm5vdCgubWF0LXRhYi1kaXNhYmxlZCl7YmFja2dyb3VuZC1jb2xvcjpyZ2JhKDI1NSwxNTIsMCwuMyl9Lm1hdC10YWItZ3JvdXAubWF0LWJhY2tncm91bmQtcHJpbWFyeVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXRhYi1oZWFkZXJbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXRhYi1ncm91cC5tYXQtYmFja2dyb3VuZC1wcmltYXJ5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtdGFiLWxpbmtzW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10YWItZ3JvdXAubWF0LWJhY2tncm91bmQtcHJpbWFyeVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXRhYi1oZWFkZXItcGFnaW5hdGlvbltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdGFiLW5hdi1iYXIubWF0LWJhY2tncm91bmQtcHJpbWFyeVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXRhYi1oZWFkZXJbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXRhYi1uYXYtYmFyLm1hdC1iYWNrZ3JvdW5kLXByaW1hcnlbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC10YWItbGlua3NbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXRhYi1uYXYtYmFyLm1hdC1iYWNrZ3JvdW5kLXByaW1hcnlbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC10YWItaGVhZGVyLXBhZ2luYXRpb25bX25nY29udGVudC0lQ09NUCVde2JhY2tncm91bmQtY29sb3I6I2Y1N2MwMH0ubWF0LXRhYi1ncm91cC5tYXQtYmFja2dyb3VuZC1wcmltYXJ5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtdGFiLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10YWItZ3JvdXAubWF0LWJhY2tncm91bmQtcHJpbWFyeVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXRhYi1saW5rW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10YWItbmF2LWJhci5tYXQtYmFja2dyb3VuZC1wcmltYXJ5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtdGFiLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10YWItbmF2LWJhci5tYXQtYmFja2dyb3VuZC1wcmltYXJ5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtdGFiLWxpbmtbX25nY29udGVudC0lQ09NUCVde2NvbG9yOiNmZmZ9Lm1hdC10YWItZ3JvdXAubWF0LWJhY2tncm91bmQtcHJpbWFyeVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXRhYi1sYWJlbC5tYXQtdGFiLWRpc2FibGVkW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10YWItZ3JvdXAubWF0LWJhY2tncm91bmQtcHJpbWFyeVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXRhYi1saW5rLm1hdC10YWItZGlzYWJsZWRbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXRhYi1uYXYtYmFyLm1hdC1iYWNrZ3JvdW5kLXByaW1hcnlbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC10YWItbGFiZWwubWF0LXRhYi1kaXNhYmxlZFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdGFiLW5hdi1iYXIubWF0LWJhY2tncm91bmQtcHJpbWFyeVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXRhYi1saW5rLm1hdC10YWItZGlzYWJsZWRbX25nY29udGVudC0lQ09NUCVde2NvbG9yOnJnYmEoMjU1LDI1NSwyNTUsLjQpfS5tYXQtdGFiLWdyb3VwLm1hdC1iYWNrZ3JvdW5kLXByaW1hcnlbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC10YWItaGVhZGVyLXBhZ2luYXRpb24tY2hldnJvbltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdGFiLW5hdi1iYXIubWF0LWJhY2tncm91bmQtcHJpbWFyeVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXRhYi1oZWFkZXItcGFnaW5hdGlvbi1jaGV2cm9uW19uZ2NvbnRlbnQtJUNPTVAlXXtib3JkZXItY29sb3I6I2ZmZn0ubWF0LXRhYi1ncm91cC5tYXQtYmFja2dyb3VuZC1wcmltYXJ5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtdGFiLWhlYWRlci1wYWdpbmF0aW9uLWRpc2FibGVkW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtdGFiLWhlYWRlci1wYWdpbmF0aW9uLWNoZXZyb25bX25nY29udGVudC0lQ09NUCVdLCAubWF0LXRhYi1uYXYtYmFyLm1hdC1iYWNrZ3JvdW5kLXByaW1hcnlbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC10YWItaGVhZGVyLXBhZ2luYXRpb24tZGlzYWJsZWRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC10YWItaGVhZGVyLXBhZ2luYXRpb24tY2hldnJvbltfbmdjb250ZW50LSVDT01QJV17Ym9yZGVyLWNvbG9yOnJnYmEoMjU1LDI1NSwyNTUsLjQpfS5tYXQtdGFiLWdyb3VwLm1hdC1iYWNrZ3JvdW5kLXByaW1hcnlbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1yaXBwbGUtZWxlbWVudFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdGFiLW5hdi1iYXIubWF0LWJhY2tncm91bmQtcHJpbWFyeVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXJpcHBsZS1lbGVtZW50W19uZ2NvbnRlbnQtJUNPTVAlXXtiYWNrZ3JvdW5kLWNvbG9yOnJnYmEoMjU1LDI1NSwyNTUsLjEyKX0ubWF0LXRhYi1ncm91cC5tYXQtYmFja2dyb3VuZC1hY2NlbnRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC10YWItbGFiZWwuY2RrLWtleWJvYXJkLWZvY3VzZWRbX25nY29udGVudC0lQ09NUCVdOm5vdCgubWF0LXRhYi1kaXNhYmxlZCksIC5tYXQtdGFiLWdyb3VwLm1hdC1iYWNrZ3JvdW5kLWFjY2VudFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXRhYi1sYWJlbC5jZGstcHJvZ3JhbS1mb2N1c2VkW19uZ2NvbnRlbnQtJUNPTVAlXTpub3QoLm1hdC10YWItZGlzYWJsZWQpLCAubWF0LXRhYi1ncm91cC5tYXQtYmFja2dyb3VuZC1hY2NlbnRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC10YWItbGluay5jZGsta2V5Ym9hcmQtZm9jdXNlZFtfbmdjb250ZW50LSVDT01QJV06bm90KC5tYXQtdGFiLWRpc2FibGVkKSwgLm1hdC10YWItZ3JvdXAubWF0LWJhY2tncm91bmQtYWNjZW50W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtdGFiLWxpbmsuY2RrLXByb2dyYW0tZm9jdXNlZFtfbmdjb250ZW50LSVDT01QJV06bm90KC5tYXQtdGFiLWRpc2FibGVkKSwgLm1hdC10YWItbmF2LWJhci5tYXQtYmFja2dyb3VuZC1hY2NlbnRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC10YWItbGFiZWwuY2RrLWtleWJvYXJkLWZvY3VzZWRbX25nY29udGVudC0lQ09NUCVdOm5vdCgubWF0LXRhYi1kaXNhYmxlZCksIC5tYXQtdGFiLW5hdi1iYXIubWF0LWJhY2tncm91bmQtYWNjZW50W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtdGFiLWxhYmVsLmNkay1wcm9ncmFtLWZvY3VzZWRbX25nY29udGVudC0lQ09NUCVdOm5vdCgubWF0LXRhYi1kaXNhYmxlZCksIC5tYXQtdGFiLW5hdi1iYXIubWF0LWJhY2tncm91bmQtYWNjZW50W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtdGFiLWxpbmsuY2RrLWtleWJvYXJkLWZvY3VzZWRbX25nY29udGVudC0lQ09NUCVdOm5vdCgubWF0LXRhYi1kaXNhYmxlZCksIC5tYXQtdGFiLW5hdi1iYXIubWF0LWJhY2tncm91bmQtYWNjZW50W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtdGFiLWxpbmsuY2RrLXByb2dyYW0tZm9jdXNlZFtfbmdjb250ZW50LSVDT01QJV06bm90KC5tYXQtdGFiLWRpc2FibGVkKXtiYWNrZ3JvdW5kLWNvbG9yOnJnYmEoMjU1LDE1MiwwLC4zKX0ubWF0LXRhYi1ncm91cC5tYXQtYmFja2dyb3VuZC1hY2NlbnRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC10YWItaGVhZGVyW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10YWItZ3JvdXAubWF0LWJhY2tncm91bmQtYWNjZW50W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtdGFiLWxpbmtzW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10YWItZ3JvdXAubWF0LWJhY2tncm91bmQtYWNjZW50W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtdGFiLWhlYWRlci1wYWdpbmF0aW9uW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10YWItbmF2LWJhci5tYXQtYmFja2dyb3VuZC1hY2NlbnRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC10YWItaGVhZGVyW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10YWItbmF2LWJhci5tYXQtYmFja2dyb3VuZC1hY2NlbnRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC10YWItbGlua3NbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXRhYi1uYXYtYmFyLm1hdC1iYWNrZ3JvdW5kLWFjY2VudFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXRhYi1oZWFkZXItcGFnaW5hdGlvbltfbmdjb250ZW50LSVDT01QJV17YmFja2dyb3VuZC1jb2xvcjojZmY5ODAwfS5tYXQtdGFiLWdyb3VwLm1hdC1iYWNrZ3JvdW5kLWFjY2VudFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXRhYi1sYWJlbFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdGFiLWdyb3VwLm1hdC1iYWNrZ3JvdW5kLWFjY2VudFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXRhYi1saW5rW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10YWItbmF2LWJhci5tYXQtYmFja2dyb3VuZC1hY2NlbnRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC10YWItbGFiZWxbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXRhYi1uYXYtYmFyLm1hdC1iYWNrZ3JvdW5kLWFjY2VudFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXRhYi1saW5rW19uZ2NvbnRlbnQtJUNPTVAlXXtjb2xvcjojZmZmfS5tYXQtdGFiLWdyb3VwLm1hdC1iYWNrZ3JvdW5kLWFjY2VudFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXRhYi1sYWJlbC5tYXQtdGFiLWRpc2FibGVkW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10YWItZ3JvdXAubWF0LWJhY2tncm91bmQtYWNjZW50W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtdGFiLWxpbmsubWF0LXRhYi1kaXNhYmxlZFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdGFiLW5hdi1iYXIubWF0LWJhY2tncm91bmQtYWNjZW50W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtdGFiLWxhYmVsLm1hdC10YWItZGlzYWJsZWRbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXRhYi1uYXYtYmFyLm1hdC1iYWNrZ3JvdW5kLWFjY2VudFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXRhYi1saW5rLm1hdC10YWItZGlzYWJsZWRbX25nY29udGVudC0lQ09NUCVde2NvbG9yOnJnYmEoMjU1LDI1NSwyNTUsLjQpfS5tYXQtdGFiLWdyb3VwLm1hdC1iYWNrZ3JvdW5kLWFjY2VudFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXRhYi1oZWFkZXItcGFnaW5hdGlvbi1jaGV2cm9uW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10YWItbmF2LWJhci5tYXQtYmFja2dyb3VuZC1hY2NlbnRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC10YWItaGVhZGVyLXBhZ2luYXRpb24tY2hldnJvbltfbmdjb250ZW50LSVDT01QJV17Ym9yZGVyLWNvbG9yOiNmZmZ9Lm1hdC10YWItZ3JvdXAubWF0LWJhY2tncm91bmQtYWNjZW50W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtdGFiLWhlYWRlci1wYWdpbmF0aW9uLWRpc2FibGVkW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtdGFiLWhlYWRlci1wYWdpbmF0aW9uLWNoZXZyb25bX25nY29udGVudC0lQ09NUCVdLCAubWF0LXRhYi1uYXYtYmFyLm1hdC1iYWNrZ3JvdW5kLWFjY2VudFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXRhYi1oZWFkZXItcGFnaW5hdGlvbi1kaXNhYmxlZFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXRhYi1oZWFkZXItcGFnaW5hdGlvbi1jaGV2cm9uW19uZ2NvbnRlbnQtJUNPTVAlXXtib3JkZXItY29sb3I6cmdiYSgyNTUsMjU1LDI1NSwuNCl9Lm1hdC10YWItZ3JvdXAubWF0LWJhY2tncm91bmQtYWNjZW50W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtcmlwcGxlLWVsZW1lbnRbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXRhYi1uYXYtYmFyLm1hdC1iYWNrZ3JvdW5kLWFjY2VudFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXJpcHBsZS1lbGVtZW50W19uZ2NvbnRlbnQtJUNPTVAlXXtiYWNrZ3JvdW5kLWNvbG9yOnJnYmEoMjU1LDI1NSwyNTUsLjEyKX0ubWF0LXRhYi1ncm91cC5tYXQtYmFja2dyb3VuZC13YXJuW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtdGFiLWxhYmVsLmNkay1rZXlib2FyZC1mb2N1c2VkW19uZ2NvbnRlbnQtJUNPTVAlXTpub3QoLm1hdC10YWItZGlzYWJsZWQpLCAubWF0LXRhYi1ncm91cC5tYXQtYmFja2dyb3VuZC13YXJuW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtdGFiLWxhYmVsLmNkay1wcm9ncmFtLWZvY3VzZWRbX25nY29udGVudC0lQ09NUCVdOm5vdCgubWF0LXRhYi1kaXNhYmxlZCksIC5tYXQtdGFiLWdyb3VwLm1hdC1iYWNrZ3JvdW5kLXdhcm5bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC10YWItbGluay5jZGsta2V5Ym9hcmQtZm9jdXNlZFtfbmdjb250ZW50LSVDT01QJV06bm90KC5tYXQtdGFiLWRpc2FibGVkKSwgLm1hdC10YWItZ3JvdXAubWF0LWJhY2tncm91bmQtd2Fybltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXRhYi1saW5rLmNkay1wcm9ncmFtLWZvY3VzZWRbX25nY29udGVudC0lQ09NUCVdOm5vdCgubWF0LXRhYi1kaXNhYmxlZCksIC5tYXQtdGFiLW5hdi1iYXIubWF0LWJhY2tncm91bmQtd2Fybltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXRhYi1sYWJlbC5jZGsta2V5Ym9hcmQtZm9jdXNlZFtfbmdjb250ZW50LSVDT01QJV06bm90KC5tYXQtdGFiLWRpc2FibGVkKSwgLm1hdC10YWItbmF2LWJhci5tYXQtYmFja2dyb3VuZC13YXJuW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtdGFiLWxhYmVsLmNkay1wcm9ncmFtLWZvY3VzZWRbX25nY29udGVudC0lQ09NUCVdOm5vdCgubWF0LXRhYi1kaXNhYmxlZCksIC5tYXQtdGFiLW5hdi1iYXIubWF0LWJhY2tncm91bmQtd2Fybltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXRhYi1saW5rLmNkay1rZXlib2FyZC1mb2N1c2VkW19uZ2NvbnRlbnQtJUNPTVAlXTpub3QoLm1hdC10YWItZGlzYWJsZWQpLCAubWF0LXRhYi1uYXYtYmFyLm1hdC1iYWNrZ3JvdW5kLXdhcm5bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC10YWItbGluay5jZGstcHJvZ3JhbS1mb2N1c2VkW19uZ2NvbnRlbnQtJUNPTVAlXTpub3QoLm1hdC10YWItZGlzYWJsZWQpe2JhY2tncm91bmQtY29sb3I6cmdiYSgyNTUsMjA1LDIxMCwuMyl9Lm1hdC10YWItZ3JvdXAubWF0LWJhY2tncm91bmQtd2Fybltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXRhYi1oZWFkZXJbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXRhYi1ncm91cC5tYXQtYmFja2dyb3VuZC13YXJuW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtdGFiLWxpbmtzW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10YWItZ3JvdXAubWF0LWJhY2tncm91bmQtd2Fybltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXRhYi1oZWFkZXItcGFnaW5hdGlvbltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdGFiLW5hdi1iYXIubWF0LWJhY2tncm91bmQtd2Fybltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXRhYi1oZWFkZXJbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXRhYi1uYXYtYmFyLm1hdC1iYWNrZ3JvdW5kLXdhcm5bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC10YWItbGlua3NbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXRhYi1uYXYtYmFyLm1hdC1iYWNrZ3JvdW5kLXdhcm5bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC10YWItaGVhZGVyLXBhZ2luYXRpb25bX25nY29udGVudC0lQ09NUCVde2JhY2tncm91bmQtY29sb3I6I2Y0NDMzNn0ubWF0LXRhYi1ncm91cC5tYXQtYmFja2dyb3VuZC13YXJuW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtdGFiLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10YWItZ3JvdXAubWF0LWJhY2tncm91bmQtd2Fybltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXRhYi1saW5rW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10YWItbmF2LWJhci5tYXQtYmFja2dyb3VuZC13YXJuW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtdGFiLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10YWItbmF2LWJhci5tYXQtYmFja2dyb3VuZC13YXJuW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtdGFiLWxpbmtbX25nY29udGVudC0lQ09NUCVde2NvbG9yOiNmZmZ9Lm1hdC10YWItZ3JvdXAubWF0LWJhY2tncm91bmQtd2Fybltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXRhYi1sYWJlbC5tYXQtdGFiLWRpc2FibGVkW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10YWItZ3JvdXAubWF0LWJhY2tncm91bmQtd2Fybltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXRhYi1saW5rLm1hdC10YWItZGlzYWJsZWRbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXRhYi1uYXYtYmFyLm1hdC1iYWNrZ3JvdW5kLXdhcm5bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC10YWItbGFiZWwubWF0LXRhYi1kaXNhYmxlZFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdGFiLW5hdi1iYXIubWF0LWJhY2tncm91bmQtd2Fybltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXRhYi1saW5rLm1hdC10YWItZGlzYWJsZWRbX25nY29udGVudC0lQ09NUCVde2NvbG9yOnJnYmEoMjU1LDI1NSwyNTUsLjQpfS5tYXQtdGFiLWdyb3VwLm1hdC1iYWNrZ3JvdW5kLXdhcm5bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC10YWItaGVhZGVyLXBhZ2luYXRpb24tY2hldnJvbltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdGFiLW5hdi1iYXIubWF0LWJhY2tncm91bmQtd2Fybltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXRhYi1oZWFkZXItcGFnaW5hdGlvbi1jaGV2cm9uW19uZ2NvbnRlbnQtJUNPTVAlXXtib3JkZXItY29sb3I6I2ZmZn0ubWF0LXRhYi1ncm91cC5tYXQtYmFja2dyb3VuZC13YXJuW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtdGFiLWhlYWRlci1wYWdpbmF0aW9uLWRpc2FibGVkW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtdGFiLWhlYWRlci1wYWdpbmF0aW9uLWNoZXZyb25bX25nY29udGVudC0lQ09NUCVdLCAubWF0LXRhYi1uYXYtYmFyLm1hdC1iYWNrZ3JvdW5kLXdhcm5bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC10YWItaGVhZGVyLXBhZ2luYXRpb24tZGlzYWJsZWRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC10YWItaGVhZGVyLXBhZ2luYXRpb24tY2hldnJvbltfbmdjb250ZW50LSVDT01QJV17Ym9yZGVyLWNvbG9yOnJnYmEoMjU1LDI1NSwyNTUsLjQpfS5tYXQtdGFiLWdyb3VwLm1hdC1iYWNrZ3JvdW5kLXdhcm5bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1yaXBwbGUtZWxlbWVudFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdGFiLW5hdi1iYXIubWF0LWJhY2tncm91bmQtd2Fybltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXJpcHBsZS1lbGVtZW50W19uZ2NvbnRlbnQtJUNPTVAlXXtiYWNrZ3JvdW5kLWNvbG9yOnJnYmEoMjU1LDI1NSwyNTUsLjEyKX0ubWF0LXRvb2xiYXJbX25nY29udGVudC0lQ09NUCVde2JhY2tncm91bmQ6I2Y1ZjVmNTtjb2xvcjojMjEyMTIxfS5tYXQtdG9vbGJhci5tYXQtcHJpbWFyeVtfbmdjb250ZW50LSVDT01QJV17YmFja2dyb3VuZDojZjU3YzAwO2NvbG9yOiNmZmZ9Lm1hdC10b29sYmFyLm1hdC1hY2NlbnRbX25nY29udGVudC0lQ09NUCVde2JhY2tncm91bmQ6I2ZmOTgwMDtjb2xvcjojZmZmfS5tYXQtdG9vbGJhci5tYXQtd2Fybltfbmdjb250ZW50LSVDT01QJV17YmFja2dyb3VuZDojZjQ0MzM2O2NvbG9yOiNmZmZ9Lm1hdC10b29sYmFyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC11bmRlcmxpbmVbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXRvb2xiYXJbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLXJpcHBsZVtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdG9vbGJhcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvY3VzZWRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLXJpcHBsZVtfbmdjb250ZW50LSVDT01QJV17YmFja2dyb3VuZC1jb2xvcjpjdXJyZW50Q29sb3J9Lm1hdC10b29sYmFyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdG9vbGJhcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvY3VzZWRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10b29sYmFyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtc2VsZWN0LXZhbHVlW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10b29sYmFyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtc2VsZWN0LWFycm93W19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10b29sYmFyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC5tYXQtZm9jdXNlZFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXNlbGVjdC1hcnJvd1tfbmdjb250ZW50LSVDT01QJV17Y29sb3I6aW5oZXJpdH0ubWF0LXRvb2xiYXJbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pbnB1dC1lbGVtZW50W19uZ2NvbnRlbnQtJUNPTVAlXXtjYXJldC1jb2xvcjpjdXJyZW50Q29sb3J9Lm1hdC10b29sYmFyLW11bHRpcGxlLXJvd3NbX25nY29udGVudC0lQ09NUCVde21pbi1oZWlnaHQ6NjRweH0ubWF0LXRvb2xiYXItcm93W19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10b29sYmFyLXNpbmdsZS1yb3dbX25nY29udGVudC0lQ09NUCVde2hlaWdodDo2NHB4fUBtZWRpYShtYXgtd2lkdGg6IDU5OXB4KXsubWF0LXRvb2xiYXItbXVsdGlwbGUtcm93c1tfbmdjb250ZW50LSVDT01QJV17bWluLWhlaWdodDo1NnB4fS5tYXQtdG9vbGJhci1yb3dbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXRvb2xiYXItc2luZ2xlLXJvd1tfbmdjb250ZW50LSVDT01QJV17aGVpZ2h0OjU2cHh9fS5tYXQtdG9vbHRpcFtfbmdjb250ZW50LSVDT01QJV17YmFja2dyb3VuZDpyZ2JhKDk3LDk3LDk3LC45KX0ubWF0LXRyZWVbX25nY29udGVudC0lQ09NUCVde2JhY2tncm91bmQ6I2ZmZn0ubWF0LXRyZWUtbm9kZVtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtbmVzdGVkLXRyZWUtbm9kZVtfbmdjb250ZW50LSVDT01QJV17Y29sb3I6IzIxMjEyMX0ubWF0LXRyZWUtbm9kZVtfbmdjb250ZW50LSVDT01QJV17bWluLWhlaWdodDo0OHB4fS5tYXQtc25hY2stYmFyLWNvbnRhaW5lcltfbmdjb250ZW50LSVDT01QJV17Y29sb3I6cmdiYSgyNTUsMjU1LDI1NSwuNyk7YmFja2dyb3VuZDojMzIzMjMyO2JveC1zaGFkb3c6MHB4IDNweCA1cHggLTFweCByZ2JhKDAsIDAsIDAsIDAuMiksMHB4IDZweCAxMHB4IDBweCByZ2JhKDAsIDAsIDAsIDAuMTQpLDBweCAxcHggMThweCAwcHggcmdiYSgwLCAwLCAwLCAwLjEyKX0ubWF0LXNpbXBsZS1zbmFja2Jhci1hY3Rpb25bX25nY29udGVudC0lQ09NUCVde2NvbG9yOiNmZjk4MDB9W19uZ2hvc3QtJUNPTVAlXXtib3gtc2l6aW5nOmJvcmRlci1ib3g7ZGlzcGxheTppbmxpbmUtZ3JpZDtncmlkLWdhcDoxMHB4O2dyaWQtdGVtcGxhdGUtYXJlYXM6Imxvd2VyLWlucHV0IHVwcGVyLWlucHV0IiAic2xpZGVyIHNsaWRlciI7Zm9udC1zaXplOjA7bG93ZXItd2lkdGg6MTAwcHg7cGFkZGluZzo2cHh9aW5wdXRbX25nY29udGVudC0lQ09NUCVde2JveC1zaXppbmc6Ym9yZGVyLWJveDtvdmVyZmxvdzpoaWRkZW47d2lkdGg6MTAwJX0ubG93ZXItaW5wdXRbX25nY29udGVudC0lQ09NUCVde2dyaWQtYXJlYTpsb3dlci1pbnB1dH0udXBwZXItaW5wdXRbX25nY29udGVudC0lQ09NUCVde2dyaWQtYXJlYTp1cHBlci1pbnB1dDtqdXN0aWZ5LXNlbGY6ZmxleC1lbmR9LmNvbnRhaW5lcltfbmdjb250ZW50LSVDT01QJV17Z3JpZC1hcmVhOnNsaWRlcjthbGlnbi1pdGVtczpjZW50ZXI7Ym94LXNpemluZzpib3JkZXItYm94O2Rpc3BsYXk6aW5saW5lLWZsZXg7aGVpZ2h0OjEycHg7anVzdGlmeS1jb250ZW50OmNlbnRlcjtwb3NpdGlvbjpyZWxhdGl2ZTt3aWR0aDoxMDAlfS5zbGlkZXItdHJhY2tbX25nY29udGVudC0lQ09NUCVde2JhY2tncm91bmQ6cmdiYSgwLDAsMCwuMjYpO2hlaWdodDoycHg7d2lkdGg6MTAwJX0uc2xpZGVyLXRyYWNrLWZpbGxbX25nY29udGVudC0lQ09NUCVde2JhY2tncm91bmQ6I2Y1N2MwMDtwb3NpdGlvbjphYnNvbHV0ZTtoZWlnaHQ6MnB4fS50aHVtYltfbmdjb250ZW50LSVDT01QJV17YmFja2dyb3VuZDojZjU3YzAwO2JvcmRlci1yYWRpdXM6MTAwJTtkaXNwbGF5OmlubGluZS1ibG9jaztoZWlnaHQ6MTJweDttYXJnaW4tbGVmdDotNnB4O3Bvc2l0aW9uOmFic29sdXRlO3RvcDowO3RyYW5zZm9ybS1vcmlnaW46Y2VudGVyO3RyYW5zaXRpb246dHJhbnNmb3JtIC4zcyBlYXNlO2JveC1zaGFkb3c6MCAwIDAgMXB4IHJnYmEoMCwwLDAsLjI2KTt3aWR0aDoxMnB4O3dpbGwtY2hhbmdlOnRyYW5zZm9ybX0udGh1bWIuYWN0aXZlW19uZ2NvbnRlbnQtJUNPTVAlXXt0cmFuc2Zvcm06c2NhbGUoMS4yKX0nXSxjaGFuZ2VEZXRlY3Rpb246MH0pO2NsYXNzIEpKe31KSi7JtW1vZD14byh7dHlwZTpKSn0pLEpKLsm1aW5qPUdlKHtmYWN0b3J5OmZ1bmN0aW9uIHQobil7cmV0dXJuIG5ldyhufHxKSil9LGltcG9ydHM6W1tQT11dfSksKCJ1bmRlZmluZWQiPT10eXBlb2YgbmdKaXRNb2RlfHxuZ0ppdE1vZGUpJiZ5byhKSix7ZGVjbGFyYXRpb25zOltYSl0saW1wb3J0czpbUE9dLGV4cG9ydHM6W1hKXX0pLChmdW5jdGlvbih0KXt0LkFTQz0iYXNjIix0LkRFU0M9ImRlc2MiLHQuVU5TRVQ9IiJ9KShHSnx8KEdKPXt9KSksKGZ1bmN0aW9uKHQpe3QuVVNFUj0idXNlciIsdC5CRUZPUkU9ImJlZm9yZSIsdC5BRlRFUj0iYWZ0ZXIiLHQuUkVHRVg9InJlZ2V4In0pKFlKfHwoWUo9e30pKSwoZnVuY3Rpb24odCl7dFt0LkVYUEVSSU1FTlRfTkFNRT0wXT0iRVhQRVJJTUVOVF9OQU1FIix0W3QuSFBBUkFNPTFdPSJIUEFSQU0iLHRbdC5NRVRSSUM9Ml09Ik1FVFJJQyIsdFt0LlJVTl9OQU1FPTNdPSJSVU5fTkFNRSJ9KShxSnx8KHFKPXt9KSksKGZ1bmN0aW9uKHQpe3QuQ0hFQ0tCT1g9ImNoZWNrYm94Iix0LlJVTl9OQU1FPSJydW5fbmFtZSIsdC5FWFBFUklNRU5UX05BTUU9ImV4cGVyaW1lbnRfbmFtZSIsdC5SVU5fQ09MT1I9InJ1bl9jb2xvciJ9KShaSnx8KFpKPXt9KSk7Y29uc3QgUUo9WyJmaWx0ZXIiXTtmdW5jdGlvbiBLSih0LG4pezEmdCYmYXAoMCl9ZnVuY3Rpb24gJEoodCxuKXsxJnQmJmFwKDApfWZ1bmN0aW9uIHRRKHQsbil7MSZ0JiZhcCgwKX1jb25zdCBuUT1mdW5jdGlvbih0KXtyZXR1cm57aXRlbTp0fX07ZnVuY3Rpb24gZVEodCxuKXtpZigxJnQmJihucCgwKSxZZygxLHRRLDEsMCwibmctY29udGFpbmVyIiwxNiksZXAoKSksMiZ0KXtjb25zdCB0PW4uJGltcGxpY2l0O2dwKCk7Y29uc3QgZT1xZygyMCk7d3MoMSksSmcoIm5nVGVtcGxhdGVPdXRsZXQiLGUpKCJuZ1RlbXBsYXRlT3V0bGV0Q29udGV4dCIsdWYoMixuUSx0KSl9fWZ1bmN0aW9uIGFRKHQsbil7MSZ0JiYoS2coMCwiZGl2IiwxNyksdHAoMSwibWF0LXNwaW5uZXIiLDE4KSwkZygpKX1mdW5jdGlvbiBvUSh0LG4pezEmdCYmKEtnKDAsImRpdiIsMTkpLEpwKDEsIk5vIFJ1bnMiKSwkZygpKX1mdW5jdGlvbiByUSh0LG4pe2lmKDEmdCYmKEtnKDAsImRpdiIsMTkpLEtnKDEsInNwYW4iKSxKcCgyLCdObyBydW5zIG1hdGNoICInKSxLZygzLCJjb2RlIiksSnAoNCksJGcoKSxKcCg1LCciJyksJGcoKSwkZygpKSwyJnQpe2NvbnN0IHQ9Z3AoKTt3cyg0KSxRcCh0LnJlZ2V4RmlsdGVyKX19Y29uc3QgaVE9ZnVuY3Rpb24oKXtyZXR1cm5bNSwxMCwyMF19O2Z1bmN0aW9uIGNRKHQsbil7aWYoMSZ0KXtjb25zdCB0PW9wKCk7S2coMCwibWF0LXBhZ2luYXRvciIsMjApLGNwKCJwYWdlIiwoZnVuY3Rpb24gbihlKXtyZXR1cm4ganIodCksZ3AoKS5vblBhZ2luYXRpb25DaGFuZ2UuZW1pdChlKX0pKSwkZygpfWlmKDImdCl7Y29uc3QgdD1ncCgpO0pnKCJwYWdlU2l6ZU9wdGlvbnMiLGJmKDQsaVEpKSgicGFnZUluZGV4Iix0LnBhZ2luYXRpb25PcHRpb24ucGFnZUluZGV4KSgicGFnZVNpemUiLHQucGFnaW5hdGlvbk9wdGlvbi5wYWdlU2l6ZSkoImxlbmd0aCIsdC5maWx0ZXJlZEl0ZW1zTGVuZ3RoKX19ZnVuY3Rpb24gc1EodCxuKXtpZigxJnQpe2NvbnN0IHQ9b3AoKTtLZygwLCJkaXYiLDIyKSxLZygxLCJzcGFuIiwyMyksSnAoMiksJGcoKSxLZygzLCJidXR0b24iLDI0KSxjcCgiY2xpY2siLChmdW5jdGlvbiBuKCl7cmV0dXJuIGpyKHQpLGdwKDIpLm9uU2VsZWN0QWxsUGFnZXMuZW1pdCgpfSkpLEpwKDQsIiBTZWxlY3QgYWxsIHJ1bnMgIiksJGcoKSwkZygpfWlmKDImdCl7Y29uc3QgdD1ncCgyKTt3cygyKSwkcCgiQWxsIHJ1bnMgaW4gdGhpcyBwYWdlIGFyZSBzZWxlY3RlZCBidXQgbm90IGFsbCBydW5zICgiLHQubnVtU2VsZWN0ZWRJdGVtcywiIG9mICIsdC5hbGxJdGVtc0xlbmd0aCwiKSBhcmUgc2VsZWN0ZWQuIil9fWZ1bmN0aW9uIGxRKHQsbil7aWYoMSZ0JiZZZygwLHNRLDUsMiwiZGl2IiwyMSksMiZ0KXtjb25zdCB0PWdwKCk7SmcoIm5nSWYiLHQuYWxsUGFnZUl0ZW1zU2VsZWN0ZWQoKSYmdC5udW1TZWxlY3RlZEl0ZW1zIT09dC5hbGxJdGVtc0xlbmd0aCl9fWZ1bmN0aW9uIG1RKHQsbil7aWYoMSZ0KXtjb25zdCB0PW9wKCk7S2coMCwibWF0LWNoZWNrYm94IiwzNCksY3AoImNoYW5nZSIsKGZ1bmN0aW9uIG4oKXtyZXR1cm4ganIodCksZ3AoMykuaGFuZGxlUGFnZVRvZ2dsZSgpfSkpLCRnKCl9aWYoMiZ0KXtjb25zdCB0PWdwKDMpO0pnKCJjaGVja2VkIix0LmFsbFBhZ2VJdGVtc1NlbGVjdGVkKCkpKCJpbmRldGVybWluYXRlIiwhdC5hbGxQYWdlSXRlbXNTZWxlY3RlZCgpJiZ0LnNvbWVQYWdlSXRlbXNTZWxlY3RlZCgpKX19Y29uc3QgZFE9ZnVuY3Rpb24odCl7cmV0dXJue3R5cGU6dH19O2Z1bmN0aW9uIGdRKHQsbil7aWYoMSZ0JiYoS2coMCwic3BhbiIsMzUpLEpwKDEsIkV4cGVyaW1lbnQiKSwkZygpKSwyJnQpe2NvbnN0IHQ9Z3AoMyk7SmcoIm1hdC1zb3J0LWhlYWRlciIsdWYoMSxkUSx0LlNvcnRUeXBlLkVYUEVSSU1FTlRfTkFNRSkpfX1mdW5jdGlvbiBwUSh0LG4pe2lmKDEmdCYmKEtnKDAsInNwYW4iLDM1KSxKcCgxLCJSdW4iKSwkZygpKSwyJnQpe2NvbnN0IHQ9Z3AoMyk7SmcoIm1hdC1zb3J0LWhlYWRlciIsdWYoMSxkUSx0LlNvcnRUeXBlLlJVTl9OQU1FKSl9fWZ1bmN0aW9uIGJRKHQsbil7MSZ0JiZ0cCgwLCJzcGFuIil9Y29uc3QgdVE9ZnVuY3Rpb24odCl7cmV0dXJuWyJjb2x1bW4iLHRdfTtmdW5jdGlvbiBmUSh0LG4pe2lmKDEmdCYmKEtnKDAsInNwYW4iLDI5KSxucCgxLDMwKSxZZygyLG1RLDEsMiwibWF0LWNoZWNrYm94IiwzMSksWWcoMyxnUSwyLDMsInNwYW4iLDMyKSxZZyg0LHBRLDIsMywic3BhbiIsMzIpLFlnKDUsYlEsMSwwLCJzcGFuIiwzMyksZXAoKSwkZygpKSwyJnQpe2NvbnN0IHQ9bi4kaW1wbGljaXQsZT1ncCgyKTtKZygibmdDbGFzcyIsdWYoNix1USwidGItY29sdW1uLSIrdCkpLHdzKDEpLEpnKCJuZ1N3aXRjaCIsdCksd3MoMSksSmcoIm5nU3dpdGNoQ2FzZSIsZS5SdW5zVGFibGVDb2x1bW4uQ0hFQ0tCT1gpLHdzKDEpLEpnKCJuZ1N3aXRjaENhc2UiLGUuUnVuc1RhYmxlQ29sdW1uLkVYUEVSSU1FTlRfTkFNRSksd3MoMSksSmcoIm5nU3dpdGNoQ2FzZSIsZS5SdW5zVGFibGVDb2x1bW4uUlVOX05BTUUpLHdzKDEpLEpnKCJuZ1N3aXRjaENhc2UiLGUuUnVuc1RhYmxlQ29sdW1uLlJVTl9DT0xPUil9fWZ1bmN0aW9uIGhRKHQsbil7aWYoMSZ0KXtjb25zdCB0PW9wKCk7bnAoMCksS2coMSwiZGl2Iiw0NCksY3AoImNsaWNrIiwoZnVuY3Rpb24gbihlKXtyZXR1cm4ganIodCksZS5zdG9wUHJvcGFnYXRpb24oKX0pKSxLZygyLCJ0Yi1yYW5nZS1pbnB1dCIsNDUpLGNwKCJ2YWx1ZSIsKGZ1bmN0aW9uIG4oZSl7anIodCk7Y29uc3QgYT1ncCgyKS4kaW1wbGljaXQ7cmV0dXJuIGdwKDIpLmhhbmRsZUhwYXJhbUludGVydmFsQ2hhbmdlZChhLGUpfSkpLCRnKCksJGcoKSxlcCgpfWlmKDImdCl7Y29uc3QgdD1ncCgyKS4kaW1wbGljaXQ7d3MoMiksSmcoIm1pbiIsdC5maWx0ZXIubWluVmFsdWUpKCJtYXgiLHQuZmlsdGVyLm1heFZhbHVlKSgibG93ZXJWYWx1ZSIsdC5maWx0ZXIuZmlsdGVyTG93ZXJWYWx1ZSkoInVwcGVyVmFsdWUiLHQuZmlsdGVyLmZpbHRlclVwcGVyVmFsdWUpfX1mdW5jdGlvbiBfUSh0LG4pe2lmKDEmdCl7Y29uc3QgdD1vcCgpO0tnKDAsImRpdiIsNDcpLGNwKCJjbGljayIsKGZ1bmN0aW9uIG4oZSl7cmV0dXJuIGpyKHQpLGUuc3RvcFByb3BhZ2F0aW9uKCl9KSksS2coMSwibWF0LWNoZWNrYm94Iiw0MyksY3AoImNoYW5nZSIsKGZ1bmN0aW9uIGUoKXtqcih0KTtjb25zdCBhPW4uJGltcGxpY2l0LG89Z3AoMykuJGltcGxpY2l0O3JldHVybiBncCgyKS5oYW5kbGVIcGFyYW1EaXNjcmV0ZUNoYW5nZWQobyxhKX0pKSxLZygyLCJzcGFuIiksSnAoMyksJGcoKSwkZygpLCRnKCl9aWYoMiZ0KXtjb25zdCB0PW4uJGltcGxpY2l0LGU9Z3AoMykuJGltcGxpY2l0O3dzKDEpLEpnKCJjaGVja2VkIixlLmZpbHRlci5maWx0ZXJWYWx1ZXMuaW5jbHVkZXModCkpLHdzKDIpLFFwKHQpfX1mdW5jdGlvbiBDUSh0LG4pe2lmKDEmdCYmKG5wKDApLFlnKDEsX1EsNCwyLCJkaXYiLDQ2KSxlcCgpKSwyJnQpe2NvbnN0IHQ9Z3AoMikuJGltcGxpY2l0O3dzKDEpLEpnKCJuZ0Zvck9mIix0LmZpbHRlci5wb3NzaWJsZVZhbHVlcyl9fWZ1bmN0aW9uIE1RKHQsbil7aWYoMSZ0KXtjb25zdCB0PW9wKCk7bnAoMCksS2coMSwiYnV0dG9uIiwzOSksdHAoMiwibWF0LWljb24iLDQwKSwkZygpLEtnKDMsIm1hdC1tZW51IixudWxsLDQxKSxLZyg1LCJkaXYiLDQyKSxjcCgiY2xpY2siLChmdW5jdGlvbiBuKGUpe3JldHVybiBqcih0KSxlLnN0b3BQcm9wYWdhdGlvbigpfSkpLEtnKDYsIm1hdC1jaGVja2JveCIsNDMpLGNwKCJjaGFuZ2UiLChmdW5jdGlvbiBuKCl7anIodCk7Y29uc3QgZT1ncCgpLiRpbXBsaWNpdDtyZXR1cm4gZ3AoMikuaGFuZGxlSHBhcmFtSW5jbHVkZVVuZGVmaW5lZFRvZ2dsZWQoZSl9KSksS2coNywic3BhbiIpLEpwKDgsIihzaG93IGVtcHR5IHZhbHVlKSIpLCRnKCksJGcoKSwkZygpLFlnKDksaFEsMyw0LCJuZy1jb250YWluZXIiLDM4KSxZZygxMCxDUSwyLDEsIm5nLWNvbnRhaW5lciIsMzgpLCRnKCksZXAoKX1pZigyJnQpe2NvbnN0IHQ9cWcoNCksbj1ncCgpLiRpbXBsaWNpdCxlPWdwKDIpO3dzKDEpLEpnKCJtYXRNZW51VHJpZ2dlckZvciIsdCksTmcoImFyaWEtbGFiZWwiLCJGaWx0ZXIgaHBhcmFtICIrKG4uZGlzcGxheU5hbWV8fG4ubmFtZSkpLHdzKDUpLEpnKCJjaGVja2VkIixuLmZpbHRlci5pbmNsdWRlVW5kZWZpbmVkKSx3cygzKSxKZygibmdJZiIsbi5maWx0ZXIudHlwZT09PWUuRG9tYWluVHlwZS5JTlRFUlZBTCksd3MoMSksSmcoIm5nSWYiLG4uZmlsdGVyLnR5cGU9PT1lLkRvbWFpblR5cGUuRElTQ1JFVEUpfX1jb25zdCBPUT1mdW5jdGlvbih0LG4pe3JldHVybnt0eXBlOnQsbmFtZTpufX07ZnVuY3Rpb24gUFEodCxuKXtpZigxJnQmJihLZygwLCJzcGFuIiwzNiksS2coMSwic3BhbiIsMzcpLEpwKDIpLCRnKCksWWcoMyxNUSwxMSw1LCJuZy1jb250YWluZXIiLDM4KSwkZygpKSwyJnQpe2NvbnN0IHQ9bi4kaW1wbGljaXQsZT1ncCgyKTtKZygibWF0LXNvcnQtaGVhZGVyIixmZigzLE9RLGUuU29ydFR5cGUuSFBBUkFNLHQubmFtZSkpLHdzKDIpLFFwKHQuZGlzcGxheU5hbWV8fHQubmFtZSksd3MoMSksSmcoIm5nSWYiLHQuZmlsdGVyKX19ZnVuY3Rpb24geFEodCxuKXtpZigxJnQpe2NvbnN0IHQ9b3AoKTtucCgwKSxLZygxLCJidXR0b24iLDM5KSx0cCgyLCJtYXQtaWNvbiIsNDApLCRnKCksS2coMywibWF0LW1lbnUiLG51bGwsNDEpLEtnKDUsImRpdiIsNDIpLGNwKCJjbGljayIsKGZ1bmN0aW9uIG4oZSl7cmV0dXJuIGpyKHQpLGUuc3RvcFByb3BhZ2F0aW9uKCl9KSksS2coNiwibWF0LWNoZWNrYm94Iiw0MyksY3AoImNoYW5nZSIsKGZ1bmN0aW9uIG4oKXtqcih0KTtjb25zdCBlPWdwKCkuJGltcGxpY2l0O3JldHVybiBncCgyKS5oYW5kbGVNZXRyaWNJbmNsdWRlVW5kZWZpbmVkQ2hhbmdlZChlKX0pKSxLZyg3LCJzcGFuIiksSnAoOCwiKHNob3cgZW1wdHkgdmFsdWUpIiksJGcoKSwkZygpLCRnKCksS2coOSwiZGl2Iiw0NCksY3AoImNsaWNrIiwoZnVuY3Rpb24gbihlKXtyZXR1cm4ganIodCksZS5zdG9wUHJvcGFnYXRpb24oKX0pKSxLZygxMCwidGItcmFuZ2UtaW5wdXQiLDQ1KSxjcCgidmFsdWUiLChmdW5jdGlvbiBuKGUpe2pyKHQpO2NvbnN0IGE9Z3AoKS4kaW1wbGljaXQ7cmV0dXJuIGdwKDIpLmhhbmRsZU1ldHJpY0ZpbHRlckNoYW5nZWQoYSxlKX0pKSwkZygpLCRnKCksJGcoKSxlcCgpfWlmKDImdCl7Y29uc3QgdD1xZyg0KSxuPWdwKCkuJGltcGxpY2l0O3dzKDEpLEpnKCJtYXRNZW51VHJpZ2dlckZvciIsdCksTmcoImFyaWEtbGFiZWwiLCJGaWx0ZXIgbWV0cmljICIrKG4uZGlzcGxheU5hbWV8fG4udGFnKSksd3MoNSksSmcoImNoZWNrZWQiLG4uZmlsdGVyLmluY2x1ZGVVbmRlZmluZWQpLHdzKDQpLEpnKCJtaW4iLG4uZmlsdGVyLm1pblZhbHVlKSgibWF4IixuLmZpbHRlci5tYXhWYWx1ZSkoImxvd2VyVmFsdWUiLG4uZmlsdGVyLmZpbHRlckxvd2VyVmFsdWUpKCJ1cHBlclZhbHVlIixuLmZpbHRlci5maWx0ZXJVcHBlclZhbHVlKX19Y29uc3QgeVE9ZnVuY3Rpb24odCxuKXtyZXR1cm57dHlwZTp0LHRhZzpufX07ZnVuY3Rpb24ga1EodCxuKXtpZigxJnQmJihLZygwLCJzcGFuIiwzNiksS2coMSwic3BhbiIsMzcpLEpwKDIpLCRnKCksWWcoMyx4USwxMSw3LCJuZy1jb250YWluZXIiLDM4KSwkZygpKSwyJnQpe2NvbnN0IHQ9bi4kaW1wbGljaXQsZT1ncCgyKTtKZygibWF0LXNvcnQtaGVhZGVyIixmZigzLHlRLGUuU29ydFR5cGUuTUVUUklDLHQudGFnKSksd3MoMiksUXAodC5kaXNwbGF5TmFtZXx8dC50YWcpLHdzKDEpLEpnKCJuZ0lmIix0LmZpbHRlcil9fWZ1bmN0aW9uIHZRKHQsbil7aWYoMSZ0KXtjb25zdCB0PW9wKCk7S2coMCwiZGl2IiwyNSksS2coMSwiZGl2IiwyNiksY3AoIm1hdFNvcnRDaGFuZ2UiLChmdW5jdGlvbiBuKGUpe3JldHVybiBqcih0KSxncCgpLmhhbmRsZVNvcnRDaGFuZ2UoZSl9KSksWWcoMixmUSw2LDgsInNwYW4iLDI3KSxZZygzLFBRLDQsNiwic3BhbiIsMjgpLFlnKDQsa1EsNCw2LCJzcGFuIiwyOCksJGcoKSwkZygpfWlmKDImdCl7Y29uc3QgdD1ncCgpO3dzKDEpLEpnKCJtYXRTb3J0QWN0aXZlIix0LnNvcnRPcHRpb24uY29sdW1uKSx3cygxKSxKZygibmdGb3JPZiIsdC5jb2x1bW5zKSx3cygxKSxKZygibmdGb3JPZiIsdC5ocGFyYW1Db2x1bW5zKSgibmdGb3JUcmFja0J5Iix0LnRyYWNrQnlIcGFyYW1Db2x1bW4pLHdzKDEpLEpnKCJuZ0Zvck9mIix0Lm1ldHJpY0NvbHVtbnMpKCJuZ0ZvclRyYWNrQnkiLHQudHJhY2tCeU1ldHJpY0NvbHVtbil9fWZ1bmN0aW9uIHdRKHQsbil7aWYoMSZ0KXtjb25zdCB0PW9wKCk7S2coMCwic3BhbiIpLEtnKDEsIm1hdC1jaGVja2JveCIsNDMpLGNwKCJjaGFuZ2UiLChmdW5jdGlvbiBuKCl7anIodCk7Y29uc3QgZT1ncCgyKS5pdGVtO3JldHVybiBncCgpLm9uU2VsZWN0aW9uVG9nZ2xlLmVtaXQoZSl9KSksJGcoKSwkZygpfWlmKDImdCl7Y29uc3QgdD1ncCgyKS5pdGVtO3dzKDEpLEpnKCJjaGVja2VkIix0LnNlbGVjdGVkKX19ZnVuY3Rpb24gU1EodCxuKXtpZigxJnQmJihLZygwLCJzcGFuIiwzNyksSnAoMSksJGcoKSksMiZ0KXtjb25zdCB0PWdwKDIpLml0ZW07TmcoInRpdGxlIix0LmV4cGVyaW1lbnROYW1lKSx3cygxKSxRcCh0LmV4cGVyaW1lbnRBbGlhcyl9fWZ1bmN0aW9uIEVRKHQsbil7aWYoMSZ0JiYoS2coMCwic3BhbiIsMzcpLEpwKDEpLCRnKCkpLDImdCl7Y29uc3QgdD1ncCgyKS5pdGVtO3dzKDEpLFFwKHQucnVuLm5hbWUpfX1jb25zdCBBUT1mdW5jdGlvbih0KXtyZXR1cm57InJ1bi1jb2xvci1zd2F0Y2giOiEwLCJuby1jb2xvciI6dH19O2Z1bmN0aW9uIHpRKHQsbil7aWYoMSZ0KXtjb25zdCB0PW9wKCk7S2coMCwic3BhbiIpLEtnKDEsImJ1dHRvbiIsNTMpLGNwKCJjb2xvclBpY2tlckNoYW5nZSIsKGZ1bmN0aW9uIG4oZSl7anIodCk7Y29uc3QgYT1ncCgyKS5pdGVtO3JldHVybiBncCgpLm9uUnVuQ29sb3JDaGFuZ2UuZW1pdCh7cnVuSWQ6YS5ydW4uaWQsbmV3Q29sb3I6ZX0pfSkpLCRnKCksJGcoKX1pZigyJnQpe2NvbnN0IHQ9Z3AoMikuaXRlbTt3cygxKSxUcCgiYmFja2dyb3VuZCIsdC5ydW5Db2xvciksSmcoIm5nQ2xhc3MiLHVmKDksQVEsIXQucnVuQ29sb3IpKSgiY29sb3JQaWNrZXIiLHQucnVuQ29sb3IpKCJjcERpYWxvZ0Rpc3BsYXkiLCJwb3B1cCIpKCJjcFBvc2l0aW9uIiwiYm90dG9tLXJpZ2h0IikoImNwUG9zaXRpb25PZmZzZXQiLC0yMCkoImNwVXNlUm9vdFZpZXdDb250YWluZXIiLCEwKSgiY3BPdXRwdXRGb3JtYXQiLCJoZXgiKX19ZnVuY3Rpb24gUlEodCxuKXtpZigxJnQmJihLZygwLCJzcGFuIiw1MSksbnAoMSwzMCksWWcoMix3USwyLDEsInNwYW4iLDMzKSxZZygzLFNRLDIsMiwic3BhbiIsNTIpLFlnKDQsRVEsMiwxLCJzcGFuIiw1MiksWWcoNSx6USwyLDExLCJzcGFuIiwzMyksZXAoKSwkZygpKSwyJnQpe2NvbnN0IHQ9bi4kaW1wbGljaXQsZT1ncCgyKTtKZygibmdDbGFzcyIsdWYoNix1USwidGItY29sdW1uLSIrdCkpLHdzKDEpLEpnKCJuZ1N3aXRjaCIsdCksd3MoMSksSmcoIm5nU3dpdGNoQ2FzZSIsZS5SdW5zVGFibGVDb2x1bW4uQ0hFQ0tCT1gpLHdzKDEpLEpnKCJuZ1N3aXRjaENhc2UiLGUuUnVuc1RhYmxlQ29sdW1uLkVYUEVSSU1FTlRfTkFNRSksd3MoMSksSmcoIm5nU3dpdGNoQ2FzZSIsZS5SdW5zVGFibGVDb2x1bW4uUlVOX05BTUUpLHdzKDEpLEpnKCJuZ1N3aXRjaENhc2UiLGUuUnVuc1RhYmxlQ29sdW1uLlJVTl9DT0xPUil9fWZ1bmN0aW9uIFRRKHQsbil7aWYoMSZ0JiYoS2coMCwic3BhbiIsNTQpLEpwKDEpLCRnKCkpLDImdCl7Y29uc3QgdD1uLiRpbXBsaWNpdCxlPWdwKCkuaXRlbTt3cygxKSxRcChlLmhwYXJhbXMuZ2V0KHQubmFtZSkpfX1mdW5jdGlvbiBEUSh0LG4pe2lmKDEmdCYmKEtnKDAsInNwYW4iLDU0KSxKcCgxKSwkZygpKSwyJnQpe2NvbnN0IHQ9bi4kaW1wbGljaXQsZT1ncCgpLml0ZW07d3MoMSksUXAoZS5tZXRyaWNzLmdldCh0LnRhZykpfX1mdW5jdGlvbiBJUSh0LG4pe2lmKDEmdCYmKEtnKDAsImRpdiIsNDgpLFlnKDEsUlEsNiw4LCJzcGFuIiw0OSksWWcoMixUUSwyLDEsInNwYW4iLDUwKSxZZygzLERRLDIsMSwic3BhbiIsNTApLCRnKCkpLDImdCl7Y29uc3QgdD1uLml0ZW0sZT1ncCgpO05nKCJkYXRhLWlkIix0LnJ1bi5pZCksd3MoMSksSmcoIm5nRm9yT2YiLGUuY29sdW1ucyksd3MoMSksSmcoIm5nRm9yT2YiLGUuaHBhcmFtQ29sdW1ucyksd3MoMSksSmcoIm5nRm9yT2YiLGUubWV0cmljQ29sdW1ucyl9fWNsYXNzIE5RIGV4dGVuZHMgblp7Y29uc3RydWN0b3IoKXtzdXBlciguLi5hcmd1bWVudHMpLHRoaXMuaXRlbXNQZXJQYWdlTGFiZWw9IlNob3cgcnVuczoifX1OUS7JtWZhYz1mdW5jdGlvbiB0KG4pe3JldHVybiBGUShufHxOUSl9LE5RLsm1cHJvdj1XZSh7dG9rZW46TlEsZmFjdG9yeTpOUS7JtWZhY30pO2NvbnN0IEZRPXRjKE5RKTtjbGFzcyBMUXtjb25zdHJ1Y3Rvcigpe3RoaXMuZGF0YVNvdXJjZT1uZXcgJFgsdGhpcy5Eb21haW5UeXBlPXdELHRoaXMuUnVuc1RhYmxlQ29sdW1uPVpKLHRoaXMuU29ydFR5cGU9cUosdGhpcy5vblJlZ2V4RmlsdGVyQ2hhbmdlPW5ldyBFZix0aGlzLm9uU2VsZWN0aW9uVG9nZ2xlPW5ldyBFZix0aGlzLm9uUGFnZVNlbGVjdGlvblRvZ2dsZT1uZXcgRWYsdGhpcy5vblNlbGVjdEFsbFBhZ2VzPW5ldyBFZix0aGlzLm9uUGFnaW5hdGlvbkNoYW5nZT1uZXcgRWYsdGhpcy5vblNvcnRDaGFuZ2U9bmV3IEVmLHRoaXMub25SdW5Db2xvckNoYW5nZT1uZXcgRWYsdGhpcy5vbkhwYXJhbURpc2NyZXRlRmlsdGVyQ2hhbmdlZD1uZXcgRWYsdGhpcy5vbkhwYXJhbUludGVydmFsRmlsdGVyQ2hhbmdlZD1uZXcgRWYsdGhpcy5vbk1ldHJpY0ZpbHRlckNoYW5nZWQ9bmV3IEVmfW5nT25DaGFuZ2VzKCl7dGhpcy5kYXRhU291cmNlLmRhdGE9dGhpcy5wYWdlSXRlbXN9Z2V0SHBhcmFtQ29sdW1uSWQodCl7cmV0dXJuYGg6JHt0Lm5hbWV9YH1nZXRNZXRyaWNDb2x1bW5JZCh0KXtyZXR1cm5gbToke3QudGFnfWB9Z2V0Q29sdW1uSWRzKCl7cmV0dXJuWy4uLnRoaXMuY29sdW1ucywuLi50aGlzLmhwYXJhbUNvbHVtbnMubWFwKHRoaXMuZ2V0SHBhcmFtQ29sdW1uSWQpLC4uLnRoaXMubWV0cmljQ29sdW1ucy5tYXAodGhpcy5nZXRNZXRyaWNDb2x1bW5JZCldfWFsbFBhZ2VJdGVtc1NlbGVjdGVkKCl7cmV0dXJuIEJvb2xlYW4odGhpcy5wYWdlSXRlbXMubGVuZ3RoKSYmdGhpcy5wYWdlSXRlbXMuZXZlcnkoKHQ9PnQuc2VsZWN0ZWQpKX1zb21lUGFnZUl0ZW1zU2VsZWN0ZWQoKXtyZXR1cm4gdGhpcy5wYWdlSXRlbXMuc29tZSgodD0+dC5zZWxlY3RlZCkpfWhhbmRsZVBhZ2VUb2dnbGUoKXt0aGlzLm9uUGFnZVNlbGVjdGlvblRvZ2dsZS5lbWl0KHtpdGVtczp0aGlzLnBhZ2VJdGVtc30pfWhhbmRsZVNvcnRDaGFuZ2UodCl7bGV0IG47c3dpdGNoKHQuZGlyZWN0aW9uKXtjYXNlImFzYyI6bj1HSi5BU0M7YnJlYWs7Y2FzZSJkZXNjIjpuPUdKLkRFU0M7YnJlYWs7ZGVmYXVsdDpuPUdKLlVOU0VUfXRoaXMub25Tb3J0Q2hhbmdlLmVtaXQoe2tleTp0LmFjdGl2ZSxkaXJlY3Rpb246bn0pfW9uRmlsdGVyS2V5VXAodCl7dGhpcy5vblJlZ2V4RmlsdGVyQ2hhbmdlLmVtaXQodC50YXJnZXQudmFsdWUpfXRhYmxlVHJhY2tCeSh0LG4pe3JldHVybiBuLnJ1bi5pZH1oYW5kbGVIcGFyYW1JbmNsdWRlVW5kZWZpbmVkVG9nZ2xlZCh0KXtjb25zdHtuYW1lOm4sZmlsdGVyOmV9PXQ7aWYoIWUpdGhyb3cgbmV3IFJhbmdlRXJyb3IoIkludmFyaWFudCBlcnJvcjogcmVxdWlyZSBmaWx0ZXIgdG8gZXhpc3QgZm9yIGl0IHRvIGNoYW5nZSIpO2UudHlwZT09PXdELkRJU0NSRVRFP3RoaXMub25IcGFyYW1EaXNjcmV0ZUZpbHRlckNoYW5nZWQuZW1pdCh7aHBhcmFtTmFtZTpuLGluY2x1ZGVVbmRlZmluZWQ6IWUuaW5jbHVkZVVuZGVmaW5lZCxmaWx0ZXJWYWx1ZXM6ZS5maWx0ZXJWYWx1ZXN9KTp0aGlzLm9uSHBhcmFtSW50ZXJ2YWxGaWx0ZXJDaGFuZ2VkLmVtaXQoe25hbWU6bixpbmNsdWRlVW5kZWZpbmVkOiFlLmluY2x1ZGVVbmRlZmluZWQsZmlsdGVyTG93ZXJWYWx1ZTplLmZpbHRlckxvd2VyVmFsdWUsZmlsdGVyVXBwZXJWYWx1ZTplLmZpbHRlclVwcGVyVmFsdWV9KX1oYW5kbGVIcGFyYW1JbnRlcnZhbENoYW5nZWQodCxuKXtjb25zdHtuYW1lOmUsZmlsdGVyOmF9PXQ7aWYoIWEpdGhyb3cgbmV3IFJhbmdlRXJyb3IoIkludmFyaWFudCBlcnJvcjogcmVxdWlyZSBmaWx0ZXIgdG8gZXhpc3QgZm9yIGl0IHRvIGNoYW5nZSIpO3RoaXMub25IcGFyYW1JbnRlcnZhbEZpbHRlckNoYW5nZWQuZW1pdCh7bmFtZTplLGluY2x1ZGVVbmRlZmluZWQ6YS5pbmNsdWRlVW5kZWZpbmVkLGZpbHRlckxvd2VyVmFsdWU6bi5sb3dlclZhbHVlLGZpbHRlclVwcGVyVmFsdWU6bi51cHBlclZhbHVlfSl9aGFuZGxlSHBhcmFtRGlzY3JldGVDaGFuZ2VkKHQsbil7Y29uc3R7bmFtZTplLGZpbHRlcjphfT10O2lmKCFhKXRocm93IG5ldyBSYW5nZUVycm9yKCJJbnZhcmlhbnQgZXJyb3I6IHJlcXVpcmUgZmlsdGVyIHRvIGV4aXN0IGZvciBpdCB0byBjaGFuZ2UiKTtpZihhLnR5cGUhPT13RC5ESVNDUkVURSl0aHJvdyBuZXcgUmFuZ2VFcnJvcihgSW52YXJpYW50IGVycm9yOiBleHBlY3RlZCBkaXNjcmV0ZSBkb21haW4gZm9yICR7ZX1gKTtjb25zdCBvPW5ldyBTZXQoWy4uLmEuZmlsdGVyVmFsdWVzXSk7by5oYXMobik/by5kZWxldGUobik6by5hZGQobiksdGhpcy5vbkhwYXJhbURpc2NyZXRlRmlsdGVyQ2hhbmdlZC5lbWl0KHtocGFyYW1OYW1lOmUsaW5jbHVkZVVuZGVmaW5lZDphLmluY2x1ZGVVbmRlZmluZWQsZmlsdGVyVmFsdWVzOlsuLi5vXX0pfWhhbmRsZU1ldHJpY0luY2x1ZGVVbmRlZmluZWRDaGFuZ2VkKHQpe2lmKCF0LmZpbHRlcil0aHJvdyBuZXcgUmFuZ2VFcnJvcigiSW52YXJpYW50IGVycm9yOiByZXF1aXJlIGZpbHRlciB0byBleGlzdCBmb3IgaXQgdG8gY2hhbmdlIik7dGhpcy5vbk1ldHJpY0ZpbHRlckNoYW5nZWQuZW1pdCh7bmFtZTp0LnRhZyxpbmNsdWRlVW5kZWZpbmVkOiF0LmZpbHRlci5pbmNsdWRlVW5kZWZpbmVkLGZpbHRlckxvd2VyVmFsdWU6dC5maWx0ZXIuZmlsdGVyTG93ZXJWYWx1ZSxmaWx0ZXJVcHBlclZhbHVlOnQuZmlsdGVyLmZpbHRlclVwcGVyVmFsdWV9KX1oYW5kbGVNZXRyaWNGaWx0ZXJDaGFuZ2VkKHQsbil7aWYoIXQuZmlsdGVyKXRocm93IG5ldyBSYW5nZUVycm9yKCJJbnZhcmlhbnQgZXJyb3I6IHJlcXVpcmUgZmlsdGVyIHRvIGV4aXN0IGZvciBpdCB0byBjaGFuZ2UiKTt0aGlzLm9uTWV0cmljRmlsdGVyQ2hhbmdlZC5lbWl0KHtuYW1lOnQudGFnLGluY2x1ZGVVbmRlZmluZWQ6dC5maWx0ZXIuaW5jbHVkZVVuZGVmaW5lZCxmaWx0ZXJMb3dlclZhbHVlOm4ubG93ZXJWYWx1ZSxmaWx0ZXJVcHBlclZhbHVlOm4udXBwZXJWYWx1ZX0pfXRyYWNrQnlIcGFyYW1Db2x1bW4odCl7cmV0dXJuIHQubmFtZX10cmFja0J5TWV0cmljQ29sdW1uKHQpe3JldHVybiB0LnRhZ319TFEuybVmYWM9ZnVuY3Rpb24gdChuKXtyZXR1cm4gbmV3KG58fExRKX0sTFEuybVjbXA9X28oe3R5cGU6TFEsc2VsZWN0b3JzOltbInJ1bnMtdGFibGUtY29tcG9uZW50Il1dLHZpZXdRdWVyeTpmdW5jdGlvbiB0KG4sZSl7dmFyIGE7MSZuJiYoamYoUUosITAseHUpLGpmKGlaLCEwKSxqZihPWiwhMCkpLDImbiYmKFZmKGE9WmYoKSkmJihlLmZpbHRlcj1hLmZpcnN0KSxWZihhPVpmKCkpJiYoZS5wYWdpbmF0b3I9YS5maXJzdCksVmYoYT1aZigpKSYmKGUuc29ydD1hLmZpcnN0KSl9LGhvc3RWYXJzOjIsaG9zdEJpbmRpbmdzOmZ1bmN0aW9uIHQobixlKXsyJm4mJkRwKCJmbGV4LWxheW91dCIsZS51c2VGbGV4aWJsZUxheW91dCl9LGlucHV0czp7c2hvd0V4cGVyaW1lbnROYW1lOiJzaG93RXhwZXJpbWVudE5hbWUiLGNvbHVtbnM6ImNvbHVtbnMiLGhwYXJhbUNvbHVtbnM6ImhwYXJhbUNvbHVtbnMiLG1ldHJpY0NvbHVtbnM6Im1ldHJpY0NvbHVtbnMiLGFsbEl0ZW1zTGVuZ3RoOiJhbGxJdGVtc0xlbmd0aCIsZmlsdGVyZWRJdGVtc0xlbmd0aDoiZmlsdGVyZWRJdGVtc0xlbmd0aCIsdXNlRmxleGlibGVMYXlvdXQ6InVzZUZsZXhpYmxlTGF5b3V0Iix1c2VQYWdpbmF0aW9uOiJ1c2VQYWdpbmF0aW9uIixwYWdlSXRlbXM6InBhZ2VJdGVtcyIsbG9hZGluZzoibG9hZGluZyIsbnVtU2VsZWN0ZWRJdGVtczoibnVtU2VsZWN0ZWRJdGVtcyIsc29ydE9wdGlvbjoic29ydE9wdGlvbiIscGFnaW5hdGlvbk9wdGlvbjoicGFnaW5hdGlvbk9wdGlvbiIscmVnZXhGaWx0ZXI6InJlZ2V4RmlsdGVyIn0sb3V0cHV0czp7b25SZWdleEZpbHRlckNoYW5nZToib25SZWdleEZpbHRlckNoYW5nZSIsb25TZWxlY3Rpb25Ub2dnbGU6Im9uU2VsZWN0aW9uVG9nZ2xlIixvblBhZ2VTZWxlY3Rpb25Ub2dnbGU6Im9uUGFnZVNlbGVjdGlvblRvZ2dsZSIsb25TZWxlY3RBbGxQYWdlczoib25TZWxlY3RBbGxQYWdlcyIsb25QYWdpbmF0aW9uQ2hhbmdlOiJvblBhZ2luYXRpb25DaGFuZ2UiLG9uU29ydENoYW5nZToib25Tb3J0Q2hhbmdlIixvblJ1bkNvbG9yQ2hhbmdlOiJvblJ1bkNvbG9yQ2hhbmdlIixvbkhwYXJhbURpc2NyZXRlRmlsdGVyQ2hhbmdlZDoib25IcGFyYW1EaXNjcmV0ZUZpbHRlckNoYW5nZWQiLG9uSHBhcmFtSW50ZXJ2YWxGaWx0ZXJDaGFuZ2VkOiJvbkhwYXJhbUludGVydmFsRmlsdGVyQ2hhbmdlZCIsb25NZXRyaWNGaWx0ZXJDaGFuZ2VkOiJvbk1ldHJpY0ZpbHRlckNoYW5nZWQifSxmZWF0dXJlczpbTXUoW3twcm92aWRlOm5aLHVzZUNsYXNzOk5RfV0pLHByXSxkZWNsczoyMSx2YXJzOjgsY29uc3RzOltbMSwiZmlsdGVyLXJvdyJdLFsxLCJydW4tZmlsdGVyIl0sWyJzdmdJY29uIiwic2VhcmNoXzI0cHgiXSxbIm1hdElucHV0IiwiIiwiYXV0b2NvbXBsZXRlIiwib2ZmIiwicGxhY2Vob2xkZXIiLCJGaWx0ZXIgcnVucyAocmVnZXgpIiwzLCJrZXl1cCJdLFsiZmlsdGVyIiwiIl0sWzEsInRhYmxlLWNvbnRhaW5lciJdLFsicm9sZSIsInRhYmxlIl0sWzQsIm5nVGVtcGxhdGVPdXRsZXQiXSxbInJvbGUiLCJyb3dncm91cCIsMSwicm93cyJdLFs0LCJuZ0ZvciIsIm5nRm9yT2YiLCJuZ0ZvclRyYWNrQnkiXSxbImNsYXNzIiwibG9hZGluZyIsNCwibmdJZiJdLFsiY2xhc3MiLCJuby1ydW5zIiw0LCJuZ0lmIl0sWyJzaG93Rmlyc3RMYXN0QnV0dG9ucyIsIiIsMywicGFnZVNpemVPcHRpb25zIiwicGFnZUluZGV4IiwicGFnZVNpemUiLCJsZW5ndGgiLCJwYWdlIiw0LCJuZ0lmIl0sWyJzZWxlY3RBbGwiLCIiXSxbImhlYWRlciIsIiJdLFsicm93IiwiIl0sWzQsIm5nVGVtcGxhdGVPdXRsZXQiLCJuZ1RlbXBsYXRlT3V0bGV0Q29udGV4dCJdLFsxLCJsb2FkaW5nIl0sWyJtb2RlIiwiaW5kZXRlcm1pbmF0ZSIsImRpYW1ldGVyIiwiMjgiXSxbMSwibm8tcnVucyJdLFsic2hvd0ZpcnN0TGFzdEJ1dHRvbnMiLCIiLDMsInBhZ2VTaXplT3B0aW9ucyIsInBhZ2VJbmRleCIsInBhZ2VTaXplIiwibGVuZ3RoIiwicGFnZSJdLFsiY2xhc3MiLCJzZWxlY3QtYWxsIiwicm9sZSIsInJvdyIsNCwibmdJZiJdLFsicm9sZSIsInJvdyIsMSwic2VsZWN0LWFsbCJdLFsicm9sZSIsImNvbHVtbmhlYWRlciJdLFsibWF0LWJ1dHRvbiIsIiIsMywiY2xpY2siXSxbInJvbGUiLCJyb3dncm91cCIsMSwiaGVhZGVyIl0sWyJtYXRTb3J0IiwiIiwicm9sZSIsInJvdyIsMywibWF0U29ydEFjdGl2ZSIsIm1hdFNvcnRDaGFuZ2UiXSxbInJvbGUiLCJjb2x1bW5oZWFkZXIiLDMsIm5nQ2xhc3MiLDQsIm5nRm9yIiwibmdGb3JPZiJdLFsicm9sZSIsImNvbHVtbmhlYWRlciIsImNsYXNzIiwiY29sdW1uIiwzLCJtYXQtc29ydC1oZWFkZXIiLDQsIm5nRm9yIiwibmdGb3JPZiIsIm5nRm9yVHJhY2tCeSJdLFsicm9sZSIsImNvbHVtbmhlYWRlciIsMywibmdDbGFzcyJdLFszLCJuZ1N3aXRjaCJdLFszLCJjaGVja2VkIiwiaW5kZXRlcm1pbmF0ZSIsImNoYW5nZSIsNCwibmdTd2l0Y2hDYXNlIl0sWzMsIm1hdC1zb3J0LWhlYWRlciIsNCwibmdTd2l0Y2hDYXNlIl0sWzQsIm5nU3dpdGNoQ2FzZSJdLFszLCJjaGVja2VkIiwiaW5kZXRlcm1pbmF0ZSIsImNoYW5nZSJdLFszLCJtYXQtc29ydC1oZWFkZXIiXSxbInJvbGUiLCJjb2x1bW5oZWFkZXIiLDEsImNvbHVtbiIsMywibWF0LXNvcnQtaGVhZGVyIl0sWzEsIm5hbWUiXSxbNCwibmdJZiJdLFsibWF0LWljb24tYnV0dG9uIiwiIiwzLCJtYXRNZW51VHJpZ2dlckZvciJdLFsic3ZnSWNvbiIsImZpbHRlcl9hbHRfMjRweCJdLFsiZmlsdGVyTWVudSIsIm1hdE1lbnUiXSxbIm1hdC1tZW51LWl0ZW0iLCIiLCJyb2xlIiwibWVudWl0ZW1jaGVja2JveCIsImRpc2FibGVSaXBwbGUiLCIiLDEsImZpbHRlci1tZW51LWNoZWNrYm94LXJvdyIsMywiY2xpY2siXSxbMywiY2hlY2tlZCIsImNoYW5nZSJdLFsiZGlzYWJsZVJpcHBsZSIsIiIsIm1hdC1tZW51LWl0ZW0iLCIiLDEsInJhbmdlLWlucHV0LWNvbnRhaW5lciIsMywiY2xpY2siXSxbMywibWluIiwibWF4IiwibG93ZXJWYWx1ZSIsInVwcGVyVmFsdWUiLCJ2YWx1ZSJdLFsibWF0LW1lbnUtaXRlbSIsIiIsImNsYXNzIiwiZmlsdGVyLW1lbnUtY2hlY2tib3gtcm93Iiwicm9sZSIsIm1lbnVpdGVtY2hlY2tib3giLDMsImNsaWNrIiw0LCJuZ0ZvciIsIm5nRm9yT2YiXSxbIm1hdC1tZW51LWl0ZW0iLCIiLCJyb2xlIiwibWVudWl0ZW1jaGVja2JveCIsMSwiZmlsdGVyLW1lbnUtY2hlY2tib3gtcm93IiwzLCJjbGljayJdLFsicm9sZSIsInJvdyJdLFsicm9sZSIsImNlbGwiLDMsIm5nQ2xhc3MiLDQsIm5nRm9yIiwibmdGb3JPZiJdLFsicm9sZSIsImNlbGwiLCJjbGFzcyIsImNvbHVtbiIsNCwibmdGb3IiLCJuZ0Zvck9mIl0sWyJyb2xlIiwiY2VsbCIsMywibmdDbGFzcyJdLFsiY2xhc3MiLCJuYW1lIiw0LCJuZ1N3aXRjaENhc2UiXSxbMywibmdDbGFzcyIsImNvbG9yUGlja2VyIiwiY3BEaWFsb2dEaXNwbGF5IiwiY3BQb3NpdGlvbiIsImNwUG9zaXRpb25PZmZzZXQiLCJjcFVzZVJvb3RWaWV3Q29udGFpbmVyIiwiY3BPdXRwdXRGb3JtYXQiLCJjb2xvclBpY2tlckNoYW5nZSJdLFsicm9sZSIsImNlbGwiLDEsImNvbHVtbiJdXSx0ZW1wbGF0ZTpmdW5jdGlvbiB0KG4sZSl7aWYoMSZuJiYoS2coMCwiZGl2IiwwKSxLZygxLCJkaXYiLDEpLHRwKDIsIm1hdC1pY29uIiwyKSxLZygzLCJpbnB1dCIsMyw0KSxjcCgia2V5dXAiLChmdW5jdGlvbiB0KG4pe3JldHVybiBlLm9uRmlsdGVyS2V5VXAobil9KSksJGcoKSwkZygpLCRnKCksS2coNSwiZGl2Iiw1KSxLZyg2LCJkaXYiLDYpLFlnKDcsS0osMSwwLCJuZy1jb250YWluZXIiLDcpLFlnKDgsJEosMSwwLCJuZy1jb250YWluZXIiLDcpLEtnKDksImRpdiIsOCksWWcoMTAsZVEsMiw0LCJuZy1jb250YWluZXIiLDkpLCRnKCksJGcoKSxZZygxMSxhUSwyLDAsImRpdiIsMTApLFlnKDEyLG9RLDIsMCwiZGl2IiwxMSksWWcoMTMsclEsNiwxLCJkaXYiLDExKSwkZygpLFlnKDE0LGNRLDEsNSwibWF0LXBhZ2luYXRvciIsMTIpLFlnKDE1LGxRLDEsMSwibmctdGVtcGxhdGUiLG51bGwsMTMsS2YpLFlnKDE3LHZRLDUsNiwibmctdGVtcGxhdGUiLG51bGwsMTQsS2YpLFlnKDE5LElRLDQsNCwibmctdGVtcGxhdGUiLG51bGwsMTUsS2YpKSwyJm4pe2NvbnN0IHQ9cWcoMTYpLG49cWcoMTgpO3dzKDcpLEpnKCJuZ1RlbXBsYXRlT3V0bGV0IixuKSx3cygxKSxKZygibmdUZW1wbGF0ZU91dGxldCIsdCksd3MoMiksSmcoIm5nRm9yT2YiLGUucGFnZUl0ZW1zKSgibmdGb3JUcmFja0J5IixlLnRhYmxlVHJhY2tCeSksd3MoMSksSmcoIm5nSWYiLGUubG9hZGluZyksd3MoMSksSmcoIm5nSWYiLCFlLmxvYWRpbmcmJjA9PT1lLmFsbEl0ZW1zTGVuZ3RoKSx3cygxKSxKZygibmdJZiIsIWUubG9hZGluZyYmZS5hbGxJdGVtc0xlbmd0aD4wJiYwPT09ZS5maWx0ZXJlZEl0ZW1zTGVuZ3RoKSx3cygxKSxKZygibmdJZiIsZS51c2VQYWdpbmF0aW9uKX19LGRpcmVjdGl2ZXM6W0JCLFBWLHRPLGpNLFdNLGhaLGlaLGVBLE9aLEhNLFpNLFhNLHJWLEVaLElxLEFxLHhxLFhKLFZKXSxzdHlsZXM6WycubWF0LWJhZGdlLWNvbnRlbnRbX25nY29udGVudC0lQ09NUCVde2ZvbnQtd2VpZ2h0OjYwMDtmb250LXNpemU6MTJweDtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWZ9Lm1hdC1iYWRnZS1zbWFsbFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWJhZGdlLWNvbnRlbnRbX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZTo5cHh9Lm1hdC1iYWRnZS1sYXJnZVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWJhZGdlLWNvbnRlbnRbX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToyNHB4fS5tYXQtaDFbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWhlYWRsaW5lW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10eXBvZ3JhcGh5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIGgxW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250OjQwMCAyNHB4LzMycHggUm9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2xldHRlci1zcGFjaW5nOm5vcm1hbDttYXJnaW46MCAwIDE2cHh9Lm1hdC1oMltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdGl0bGVbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXR5cG9ncmFwaHlbX25nY29udGVudC0lQ09NUCVdICAgaDJbX25nY29udGVudC0lQ09NUCVde2ZvbnQ6NTAwIDIwcHgvMzJweCBSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7bGV0dGVyLXNwYWNpbmc6bm9ybWFsO21hcmdpbjowIDAgMTZweH0ubWF0LWgzW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1zdWJoZWFkaW5nLTJbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXR5cG9ncmFwaHlbX25nY29udGVudC0lQ09NUCVdICAgaDNbX25nY29udGVudC0lQ09NUCVde2ZvbnQ6NDAwIDE2cHgvMjhweCBSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7bGV0dGVyLXNwYWNpbmc6bm9ybWFsO21hcmdpbjowIDAgMTZweH0ubWF0LWg0W19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1zdWJoZWFkaW5nLTFbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXR5cG9ncmFwaHlbX25nY29udGVudC0lQ09NUCVdICAgaDRbX25nY29udGVudC0lQ09NUCVde2ZvbnQ6NDAwIDE1cHgvMjRweCBSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7bGV0dGVyLXNwYWNpbmc6bm9ybWFsO21hcmdpbjowIDAgMTZweH0ubWF0LWg1W19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10eXBvZ3JhcGh5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIGg1W19uZ2NvbnRlbnQtJUNPTVAlXXtmb250OjQwMCBjYWxjKDE0cHggKiAwLjgzKS8yMHB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjttYXJnaW46MCAwIDEycHh9Lm1hdC1oNltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdHlwb2dyYXBoeVtfbmdjb250ZW50LSVDT01QJV0gICBoNltfbmdjb250ZW50LSVDT01QJV17Zm9udDo0MDAgY2FsYygxNHB4ICogMC42NykvMjBweCBSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7bWFyZ2luOjAgMCAxMnB4fS5tYXQtYm9keS1zdHJvbmdbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWJvZHktMltfbmdjb250ZW50LSVDT01QJV17Zm9udDo1MDAgMTRweC8yNHB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtsZXR0ZXItc3BhY2luZzpub3JtYWx9Lm1hdC1ib2R5W19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1ib2R5LTFbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXR5cG9ncmFwaHlbX25nY29udGVudC0lQ09NUCVde2ZvbnQ6NDAwIDE0cHgvMjBweCBSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7bGV0dGVyLXNwYWNpbmc6bm9ybWFsfS5tYXQtYm9keVtfbmdjb250ZW50LSVDT01QJV0gICBwW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1ib2R5LTFbX25nY29udGVudC0lQ09NUCVdICAgcFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdHlwb2dyYXBoeVtfbmdjb250ZW50LSVDT01QJV0gICBwW19uZ2NvbnRlbnQtJUNPTVAlXXttYXJnaW46MCAwIDEycHh9Lm1hdC1zbWFsbFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtY2FwdGlvbltfbmdjb250ZW50LSVDT01QJV17Zm9udDo0MDAgMTJweC8yMHB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtsZXR0ZXItc3BhY2luZzpub3JtYWx9Lm1hdC1kaXNwbGF5LTRbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXR5cG9ncmFwaHlbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1kaXNwbGF5LTRbX25nY29udGVudC0lQ09NUCVde2ZvbnQ6MzAwIDExMnB4LzExMnB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtsZXR0ZXItc3BhY2luZzotMC4wNWVtO21hcmdpbjowIDAgNTZweH0ubWF0LWRpc3BsYXktM1tfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdHlwb2dyYXBoeVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWRpc3BsYXktM1tfbmdjb250ZW50LSVDT01QJV17Zm9udDo0MDAgNTZweC81NnB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtsZXR0ZXItc3BhY2luZzotMC4wMmVtO21hcmdpbjowIDAgNjRweH0ubWF0LWRpc3BsYXktMltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdHlwb2dyYXBoeVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWRpc3BsYXktMltfbmdjb250ZW50LSVDT01QJV17Zm9udDo0MDAgNDVweC80OHB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtsZXR0ZXItc3BhY2luZzotMC4wMDVlbTttYXJnaW46MCAwIDY0cHh9Lm1hdC1kaXNwbGF5LTFbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXR5cG9ncmFwaHlbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1kaXNwbGF5LTFbX25nY29udGVudC0lQ09NUCVde2ZvbnQ6NDAwIDM0cHgvNDBweCBSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7bGV0dGVyLXNwYWNpbmc6bm9ybWFsO21hcmdpbjowIDAgNjRweH0ubWF0LWJvdHRvbS1zaGVldC1jb250YWluZXJbX25nY29udGVudC0lQ09NUCVde2ZvbnQ6NDAwIDE0cHgvMjBweCBSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7bGV0dGVyLXNwYWNpbmc6bm9ybWFsfS5tYXQtYnV0dG9uW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1yYWlzZWQtYnV0dG9uW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1pY29uLWJ1dHRvbltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtc3Ryb2tlZC1idXR0b25bX25nY29udGVudC0lQ09NUCVdLCAubWF0LWZsYXQtYnV0dG9uW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1mYWJbX25nY29udGVudC0lQ09NUCVdLCAubWF0LW1pbmktZmFiW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7Zm9udC1zaXplOjE0cHg7Zm9udC13ZWlnaHQ6NTAwfS5tYXQtYnV0dG9uLXRvZ2dsZVtfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmfS5tYXQtY2FyZFtfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmfS5tYXQtY2FyZC10aXRsZVtfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjI0cHg7Zm9udC13ZWlnaHQ6NTAwfS5tYXQtY2FyZC1oZWFkZXJbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1jYXJkLXRpdGxlW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MjBweH0ubWF0LWNhcmQtc3VidGl0bGVbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWNhcmQtY29udGVudFtfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjE0cHh9Lm1hdC1jaGVja2JveFtfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmfS5tYXQtY2hlY2tib3gtbGF5b3V0W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtY2hlY2tib3gtbGFiZWxbX25nY29udGVudC0lQ09NUCVde2xpbmUtaGVpZ2h0OjI0cHh9Lm1hdC1jaGlwW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MTRweDtmb250LXdlaWdodDo1MDB9Lm1hdC1jaGlwW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtY2hpcC10cmFpbGluZy1pY29uLm1hdC1pY29uW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1jaGlwW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtY2hpcC1yZW1vdmUubWF0LWljb25bX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToxOHB4fS5tYXQtdGFibGVbX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZn0ubWF0LWhlYWRlci1jZWxsW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MTJweDtmb250LXdlaWdodDo1MDB9Lm1hdC1jZWxsW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1mb290ZXItY2VsbFtfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjE0cHh9Lm1hdC1jYWxlbmRhcltfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmfS5tYXQtY2FsZW5kYXItYm9keVtfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjEzcHh9Lm1hdC1jYWxlbmRhci1ib2R5LWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1jYWxlbmRhci1wZXJpb2QtYnV0dG9uW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MTRweDtmb250LXdlaWdodDo1MDB9Lm1hdC1jYWxlbmRhci10YWJsZS1oZWFkZXJbX25nY29udGVudC0lQ09NUCVdICAgdGhbX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToxMXB4O2ZvbnQtd2VpZ2h0OjQwMH0ubWF0LWRpYWxvZy10aXRsZVtfbmdjb250ZW50LSVDT01QJV17Zm9udDo1MDAgMjBweC8zMnB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtsZXR0ZXItc3BhY2luZzpub3JtYWx9Lm1hdC1leHBhbnNpb24tcGFuZWwtaGVhZGVyW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7Zm9udC1zaXplOjE1cHg7Zm9udC13ZWlnaHQ6NDAwfS5tYXQtZXhwYW5zaW9uLXBhbmVsLWNvbnRlbnRbX25nY29udGVudC0lQ09NUCVde2ZvbnQ6NDAwIDE0cHgvMjBweCBSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7bGV0dGVyLXNwYWNpbmc6bm9ybWFsfS5tYXQtZm9ybS1maWVsZFtfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOmluaGVyaXQ7Zm9udC13ZWlnaHQ6NDAwO2xpbmUtaGVpZ2h0OjEuMTI1O2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtsZXR0ZXItc3BhY2luZzpub3JtYWx9Lm1hdC1mb3JtLWZpZWxkLXdyYXBwZXJbX25nY29udGVudC0lQ09NUCVde3BhZGRpbmctYm90dG9tOjEuMzQzNzVlbX0ubWF0LWZvcm0tZmllbGQtcHJlZml4W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaWNvbltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtZm9ybS1maWVsZC1zdWZmaXhbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pY29uW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MTUwJTtsaW5lLWhlaWdodDoxLjEyNX0ubWF0LWZvcm0tZmllbGQtcHJlZml4W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaWNvbi1idXR0b25bX25nY29udGVudC0lQ09NUCVdLCAubWF0LWZvcm0tZmllbGQtc3VmZml4W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaWNvbi1idXR0b25bX25nY29udGVudC0lQ09NUCVde2hlaWdodDoxLjVlbTt3aWR0aDoxLjVlbX0ubWF0LWZvcm0tZmllbGQtcHJlZml4W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaWNvbi1idXR0b25bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pY29uW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1mb3JtLWZpZWxkLXN1ZmZpeFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWljb24tYnV0dG9uW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaWNvbltfbmdjb250ZW50LSVDT01QJV17aGVpZ2h0OjEuMTI1ZW07bGluZS1oZWlnaHQ6MS4xMjV9Lm1hdC1mb3JtLWZpZWxkLWluZml4W19uZ2NvbnRlbnQtJUNPTVAlXXtwYWRkaW5nOi41ZW0gMDtib3JkZXItdG9wOi44NDM3NWVtIHNvbGlkIHRyYW5zcGFyZW50fS5tYXQtZm9ybS1maWVsZC1jYW4tZmxvYXQubWF0LWZvcm0tZmllbGQtc2hvdWxkLWZsb2F0W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtZm9ybS1maWVsZC1jYW4tZmxvYXRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pbnB1dC1zZXJ2ZXJbX25nY29udGVudC0lQ09NUCVdOmZvY3VzICsgLm1hdC1mb3JtLWZpZWxkLWxhYmVsLXdyYXBwZXJbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXt0cmFuc2Zvcm06dHJhbnNsYXRlWSgtMS4zNDM3NWVtKSBzY2FsZSgwLjc1KTt3aWR0aDoxMzMuMzMzMzMzMzMzMyV9Lm1hdC1mb3JtLWZpZWxkLWNhbi1mbG9hdFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWlucHV0LXNlcnZlcltsYWJlbF1bX25nY29udGVudC0lQ09NUCVdOm5vdCg6bGFiZWwtc2hvd24pICsgLm1hdC1mb3JtLWZpZWxkLWxhYmVsLXdyYXBwZXJbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXt0cmFuc2Zvcm06dHJhbnNsYXRlWSgtMS4zNDM3NGVtKSBzY2FsZSgwLjc1KTt3aWR0aDoxMzMuMzMzMzQzMzMzMyV9Lm1hdC1mb3JtLWZpZWxkLWxhYmVsLXdyYXBwZXJbX25nY29udGVudC0lQ09NUCVde3RvcDotMC44NDM3NWVtO3BhZGRpbmctdG9wOi44NDM3NWVtfS5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17dG9wOjEuMzQzNzVlbX0ubWF0LWZvcm0tZmllbGQtdW5kZXJsaW5lW19uZ2NvbnRlbnQtJUNPTVAlXXtib3R0b206MS4zNDM3NWVtfS5tYXQtZm9ybS1maWVsZC1zdWJzY3JpcHQtd3JhcHBlcltfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjc1JTttYXJnaW4tdG9wOi42NjY2NjY2NjY3ZW07dG9wOmNhbGMoMTAwJSAtIDEuNzkxNjY2NjY2N2VtKX0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1sZWdhY3lbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLXdyYXBwZXJbX25nY29udGVudC0lQ09NUCVde3BhZGRpbmctYm90dG9tOjEuMjVlbX0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1sZWdhY3lbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWluZml4W19uZ2NvbnRlbnQtJUNPTVAlXXtwYWRkaW5nOi40Mzc1ZW0gMH0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1sZWdhY3kubWF0LWZvcm0tZmllbGQtY2FuLWZsb2F0Lm1hdC1mb3JtLWZpZWxkLXNob3VsZC1mbG9hdFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1sZWdhY3kubWF0LWZvcm0tZmllbGQtY2FuLWZsb2F0W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaW5wdXQtc2VydmVyW19uZ2NvbnRlbnQtJUNPTVAlXTpmb2N1cyArIC5tYXQtZm9ybS1maWVsZC1sYWJlbC13cmFwcGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17dHJhbnNmb3JtOnRyYW5zbGF0ZVkoLTEuMjgxMjVlbSkgc2NhbGUoMC43NSkgcGVyc3BlY3RpdmUoMTAwcHgpIHRyYW5zbGF0ZVooMC4wMDFweCk7LW1zLXRyYW5zZm9ybTp0cmFuc2xhdGVZKC0xLjI4MTI1ZW0pIHNjYWxlKDAuNzUpO3dpZHRoOjEzMy4zMzMzMzMzMzMzJX0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1sZWdhY3kubWF0LWZvcm0tZmllbGQtY2FuLWZsb2F0W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1hdXRvZmlsbC1jb250cm9sW19uZ2NvbnRlbnQtJUNPTVAlXTotd2Via2l0LWF1dG9maWxsICsgLm1hdC1mb3JtLWZpZWxkLWxhYmVsLXdyYXBwZXJbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXt0cmFuc2Zvcm06dHJhbnNsYXRlWSgtMS4yODEyNWVtKSBzY2FsZSgwLjc1KSBwZXJzcGVjdGl2ZSgxMDBweCkgdHJhbnNsYXRlWigwLjAwMTAxcHgpOy1tcy10cmFuc2Zvcm06dHJhbnNsYXRlWSgtMS4yODEyNGVtKSBzY2FsZSgwLjc1KTt3aWR0aDoxMzMuMzMzMzQzMzMzMyV9Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtbGVnYWN5Lm1hdC1mb3JtLWZpZWxkLWNhbi1mbG9hdFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWlucHV0LXNlcnZlcltsYWJlbF1bX25nY29udGVudC0lQ09NUCVdOm5vdCg6bGFiZWwtc2hvd24pICsgLm1hdC1mb3JtLWZpZWxkLWxhYmVsLXdyYXBwZXJbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXt0cmFuc2Zvcm06dHJhbnNsYXRlWSgtMS4yODEyNWVtKSBzY2FsZSgwLjc1KSBwZXJzcGVjdGl2ZSgxMDBweCkgdHJhbnNsYXRlWigwLjAwMTAycHgpOy1tcy10cmFuc2Zvcm06dHJhbnNsYXRlWSgtMS4yODEyM2VtKSBzY2FsZSgwLjc1KTt3aWR0aDoxMzMuMzMzMzUzMzMzMyV9Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtbGVnYWN5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17dG9wOjEuMjgxMjVlbX0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1sZWdhY3lbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLXVuZGVybGluZVtfbmdjb250ZW50LSVDT01QJV17Ym90dG9tOjEuMjVlbX0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1sZWdhY3lbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLXN1YnNjcmlwdC13cmFwcGVyW19uZ2NvbnRlbnQtJUNPTVAlXXttYXJnaW4tdG9wOi41NDE2NjY2NjY3ZW07dG9wOmNhbGMoMTAwJSAtIDEuNjY2NjY2NjY2N2VtKX1AbWVkaWEgcHJpbnR7Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtbGVnYWN5Lm1hdC1mb3JtLWZpZWxkLWNhbi1mbG9hdC5tYXQtZm9ybS1maWVsZC1zaG91bGQtZmxvYXRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtbGVnYWN5Lm1hdC1mb3JtLWZpZWxkLWNhbi1mbG9hdFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWlucHV0LXNlcnZlcltfbmdjb250ZW50LSVDT01QJV06Zm9jdXMgKyAubWF0LWZvcm0tZmllbGQtbGFiZWwtd3JhcHBlcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVde3RyYW5zZm9ybTp0cmFuc2xhdGVZKC0xLjI4MTIyZW0pIHNjYWxlKDAuNzUpfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWxlZ2FjeS5tYXQtZm9ybS1maWVsZC1jYW4tZmxvYXRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWF1dG9maWxsLWNvbnRyb2xbX25nY29udGVudC0lQ09NUCVdOi13ZWJraXQtYXV0b2ZpbGwgKyAubWF0LWZvcm0tZmllbGQtbGFiZWwtd3JhcHBlcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVde3RyYW5zZm9ybTp0cmFuc2xhdGVZKC0xLjI4MTIxZW0pIHNjYWxlKDAuNzUpfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWxlZ2FjeS5tYXQtZm9ybS1maWVsZC1jYW4tZmxvYXRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pbnB1dC1zZXJ2ZXJbbGFiZWxdW19uZ2NvbnRlbnQtJUNPTVAlXTpub3QoOmxhYmVsLXNob3duKSArIC5tYXQtZm9ybS1maWVsZC1sYWJlbC13cmFwcGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17dHJhbnNmb3JtOnRyYW5zbGF0ZVkoLTEuMjgxMmVtKSBzY2FsZSgwLjc1KX19Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtZmlsbFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtaW5maXhbX25nY29udGVudC0lQ09NUCVde3BhZGRpbmc6LjI1ZW0gMCAuNzVlbSAwfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWZpbGxbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXt0b3A6MS4wOTM3NWVtO21hcmdpbi10b3A6LTAuNWVtfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWZpbGwubWF0LWZvcm0tZmllbGQtY2FuLWZsb2F0Lm1hdC1mb3JtLWZpZWxkLXNob3VsZC1mbG9hdFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1maWxsLm1hdC1mb3JtLWZpZWxkLWNhbi1mbG9hdFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWlucHV0LXNlcnZlcltfbmdjb250ZW50LSVDT01QJV06Zm9jdXMgKyAubWF0LWZvcm0tZmllbGQtbGFiZWwtd3JhcHBlcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVde3RyYW5zZm9ybTp0cmFuc2xhdGVZKC0wLjU5Mzc1ZW0pIHNjYWxlKDAuNzUpO3dpZHRoOjEzMy4zMzMzMzMzMzMzJX0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1maWxsLm1hdC1mb3JtLWZpZWxkLWNhbi1mbG9hdFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWlucHV0LXNlcnZlcltsYWJlbF1bX25nY29udGVudC0lQ09NUCVdOm5vdCg6bGFiZWwtc2hvd24pICsgLm1hdC1mb3JtLWZpZWxkLWxhYmVsLXdyYXBwZXJbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXt0cmFuc2Zvcm06dHJhbnNsYXRlWSgtMC41OTM3NGVtKSBzY2FsZSgwLjc1KTt3aWR0aDoxMzMuMzMzMzQzMzMzMyV9Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2Utb3V0bGluZVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtaW5maXhbX25nY29udGVudC0lQ09NUCVde3BhZGRpbmc6MWVtIDAgMWVtIDB9Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2Utb3V0bGluZVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVde3RvcDoxLjg0Mzc1ZW07bWFyZ2luLXRvcDotMC4yNWVtfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLW91dGxpbmUubWF0LWZvcm0tZmllbGQtY2FuLWZsb2F0Lm1hdC1mb3JtLWZpZWxkLXNob3VsZC1mbG9hdFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1vdXRsaW5lLm1hdC1mb3JtLWZpZWxkLWNhbi1mbG9hdFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWlucHV0LXNlcnZlcltfbmdjb250ZW50LSVDT01QJV06Zm9jdXMgKyAubWF0LWZvcm0tZmllbGQtbGFiZWwtd3JhcHBlcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVde3RyYW5zZm9ybTp0cmFuc2xhdGVZKC0xLjU5Mzc1ZW0pIHNjYWxlKDAuNzUpO3dpZHRoOjEzMy4zMzMzMzMzMzMzJX0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1vdXRsaW5lLm1hdC1mb3JtLWZpZWxkLWNhbi1mbG9hdFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWlucHV0LXNlcnZlcltsYWJlbF1bX25nY29udGVudC0lQ09NUCVdOm5vdCg6bGFiZWwtc2hvd24pICsgLm1hdC1mb3JtLWZpZWxkLWxhYmVsLXdyYXBwZXJbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXt0cmFuc2Zvcm06dHJhbnNsYXRlWSgtMS41OTM3NGVtKSBzY2FsZSgwLjc1KTt3aWR0aDoxMzMuMzMzMzQzMzMzMyV9Lm1hdC1ncmlkLXRpbGUtaGVhZGVyW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1ncmlkLXRpbGUtZm9vdGVyW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MTRweH0ubWF0LWdyaWQtdGlsZS1oZWFkZXJbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saW5lW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1ncmlkLXRpbGUtZm9vdGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGluZVtfbmdjb250ZW50LSVDT01QJV17d2hpdGUtc3BhY2U6bm93cmFwO292ZXJmbG93OmhpZGRlbjt0ZXh0LW92ZXJmbG93OmVsbGlwc2lzO2Rpc3BsYXk6YmxvY2s7Ym94LXNpemluZzpib3JkZXItYm94fS5tYXQtZ3JpZC10aWxlLWhlYWRlcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpbmVbX25nY29udGVudC0lQ09NUCVdOm50aC1jaGlsZChuKzIpLCAubWF0LWdyaWQtdGlsZS1mb290ZXJbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saW5lW19uZ2NvbnRlbnQtJUNPTVAlXTpudGgtY2hpbGQobisyKXtmb250LXNpemU6MTJweH1pbnB1dC5tYXQtaW5wdXQtZWxlbWVudFtfbmdjb250ZW50LSVDT01QJV17bWFyZ2luLXRvcDotMC4wNjI1ZW19Lm1hdC1tZW51LWl0ZW1bX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtmb250LXNpemU6MTRweDtmb250LXdlaWdodDo0MDB9Lm1hdC1wYWdpbmF0b3JbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXBhZ2luYXRvci1wYWdlLXNpemVbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1zZWxlY3QtdHJpZ2dlcltfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2ZvbnQtc2l6ZToxMnB4fS5tYXQtcmFkaW8tYnV0dG9uW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWZ9Lm1hdC1zZWxlY3RbX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZn0ubWF0LXNlbGVjdC10cmlnZ2VyW19uZ2NvbnRlbnQtJUNPTVAlXXtoZWlnaHQ6MS4xMjVlbX0ubWF0LXNsaWRlLXRvZ2dsZS1jb250ZW50W19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWZ9Lm1hdC1zbGlkZXItdGh1bWItbGFiZWwtdGV4dFtfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2ZvbnQtc2l6ZToxMnB4O2ZvbnQtd2VpZ2h0OjUwMH0ubWF0LXN0ZXBwZXItdmVydGljYWxbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXN0ZXBwZXItaG9yaXpvbnRhbFtfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmfS5tYXQtc3RlcC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjE0cHg7Zm9udC13ZWlnaHQ6NDAwfS5tYXQtc3RlcC1zdWItbGFiZWwtZXJyb3JbX25nY29udGVudC0lQ09NUCVde2ZvbnQtd2VpZ2h0Om5vcm1hbH0ubWF0LXN0ZXAtbGFiZWwtZXJyb3JbX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToxNHB4fS5tYXQtc3RlcC1sYWJlbC1zZWxlY3RlZFtfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjE0cHg7Zm9udC13ZWlnaHQ6NTAwfS5tYXQtdGFiLWdyb3VwW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWZ9Lm1hdC10YWItbGFiZWxbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXRhYi1saW5rW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7Zm9udC1zaXplOjE0cHg7Zm9udC13ZWlnaHQ6NTAwfS5tYXQtdG9vbGJhcltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdG9vbGJhcltfbmdjb250ZW50LSVDT01QJV0gICBoMVtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdG9vbGJhcltfbmdjb250ZW50LSVDT01QJV0gICBoMltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdG9vbGJhcltfbmdjb250ZW50LSVDT01QJV0gICBoM1tfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdG9vbGJhcltfbmdjb250ZW50LSVDT01QJV0gICBoNFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdG9vbGJhcltfbmdjb250ZW50LSVDT01QJV0gICBoNVtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdG9vbGJhcltfbmdjb250ZW50LSVDT01QJV0gICBoNltfbmdjb250ZW50LSVDT01QJV17Zm9udDo1MDAgMjBweC8zMnB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtsZXR0ZXItc3BhY2luZzpub3JtYWw7bWFyZ2luOjB9Lm1hdC10b29sdGlwW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7Zm9udC1zaXplOjEwcHg7cGFkZGluZy10b3A6NnB4O3BhZGRpbmctYm90dG9tOjZweH0ubWF0LXRvb2x0aXAtaGFuZHNldFtfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjE0cHg7cGFkZGluZy10b3A6OHB4O3BhZGRpbmctYm90dG9tOjhweH0ubWF0LWxpc3QtaXRlbVtfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmfS5tYXQtbGlzdC1vcHRpb25bX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZn0ubWF0LWxpc3QtYmFzZVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpc3QtaXRlbVtfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjE2cHh9Lm1hdC1saXN0LWJhc2VbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saXN0LWl0ZW1bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saW5lW19uZ2NvbnRlbnQtJUNPTVAlXXt3aGl0ZS1zcGFjZTpub3dyYXA7b3ZlcmZsb3c6aGlkZGVuO3RleHQtb3ZlcmZsb3c6ZWxsaXBzaXM7ZGlzcGxheTpibG9jaztib3gtc2l6aW5nOmJvcmRlci1ib3h9Lm1hdC1saXN0LWJhc2VbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saXN0LWl0ZW1bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saW5lW19uZ2NvbnRlbnQtJUNPTVAlXTpudGgtY2hpbGQobisyKXtmb250LXNpemU6MTRweH0ubWF0LWxpc3QtYmFzZVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpc3Qtb3B0aW9uW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MTZweH0ubWF0LWxpc3QtYmFzZVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpc3Qtb3B0aW9uW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGluZVtfbmdjb250ZW50LSVDT01QJV17d2hpdGUtc3BhY2U6bm93cmFwO292ZXJmbG93OmhpZGRlbjt0ZXh0LW92ZXJmbG93OmVsbGlwc2lzO2Rpc3BsYXk6YmxvY2s7Ym94LXNpemluZzpib3JkZXItYm94fS5tYXQtbGlzdC1iYXNlW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGlzdC1vcHRpb25bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saW5lW19uZ2NvbnRlbnQtJUNPTVAlXTpudGgtY2hpbGQobisyKXtmb250LXNpemU6MTRweH0ubWF0LWxpc3QtYmFzZVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXN1YmhlYWRlcltfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2ZvbnQtc2l6ZToxNHB4O2ZvbnQtd2VpZ2h0OjUwMH0ubWF0LWxpc3QtYmFzZVtkZW5zZV1bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saXN0LWl0ZW1bX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToxMnB4fS5tYXQtbGlzdC1iYXNlW2RlbnNlXVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpc3QtaXRlbVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpbmVbX25nY29udGVudC0lQ09NUCVde3doaXRlLXNwYWNlOm5vd3JhcDtvdmVyZmxvdzpoaWRkZW47dGV4dC1vdmVyZmxvdzplbGxpcHNpcztkaXNwbGF5OmJsb2NrO2JveC1zaXppbmc6Ym9yZGVyLWJveH0ubWF0LWxpc3QtYmFzZVtkZW5zZV1bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saXN0LWl0ZW1bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saW5lW19uZ2NvbnRlbnQtJUNPTVAlXTpudGgtY2hpbGQobisyKXtmb250LXNpemU6MTJweH0ubWF0LWxpc3QtYmFzZVtkZW5zZV1bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saXN0LW9wdGlvbltfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjEycHh9Lm1hdC1saXN0LWJhc2VbZGVuc2VdW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGlzdC1vcHRpb25bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saW5lW19uZ2NvbnRlbnQtJUNPTVAlXXt3aGl0ZS1zcGFjZTpub3dyYXA7b3ZlcmZsb3c6aGlkZGVuO3RleHQtb3ZlcmZsb3c6ZWxsaXBzaXM7ZGlzcGxheTpibG9jaztib3gtc2l6aW5nOmJvcmRlci1ib3h9Lm1hdC1saXN0LWJhc2VbZGVuc2VdW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGlzdC1vcHRpb25bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saW5lW19uZ2NvbnRlbnQtJUNPTVAlXTpudGgtY2hpbGQobisyKXtmb250LXNpemU6MTJweH0ubWF0LWxpc3QtYmFzZVtkZW5zZV1bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1zdWJoZWFkZXJbX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtmb250LXNpemU6MTJweDtmb250LXdlaWdodDo1MDB9Lm1hdC1vcHRpb25bX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtmb250LXNpemU6MTZweH0ubWF0LW9wdGdyb3VwLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250OjUwMCAxNHB4LzI0cHggUm9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2xldHRlci1zcGFjaW5nOm5vcm1hbH0ubWF0LXNpbXBsZS1zbmFja2Jhcltfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2ZvbnQtc2l6ZToxNHB4fS5tYXQtc2ltcGxlLXNuYWNrYmFyLWFjdGlvbltfbmdjb250ZW50LSVDT01QJV17bGluZS1oZWlnaHQ6MTtmb250LWZhbWlseTppbmhlcml0O2ZvbnQtc2l6ZTppbmhlcml0O2ZvbnQtd2VpZ2h0OjUwMH0ubWF0LXRyZWVbX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZn0ubWF0LXRyZWUtbm9kZVtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtbmVzdGVkLXRyZWUtbm9kZVtfbmdjb250ZW50LSVDT01QJV17Zm9udC13ZWlnaHQ6NDAwO2ZvbnQtc2l6ZToxNHB4fS5tYXQtcmlwcGxlW19uZ2NvbnRlbnQtJUNPTVAlXXtvdmVyZmxvdzpoaWRkZW47cG9zaXRpb246cmVsYXRpdmV9Lm1hdC1yaXBwbGVbX25nY29udGVudC0lQ09NUCVdOm5vdCg6ZW1wdHkpe3RyYW5zZm9ybTp0cmFuc2xhdGVaKDApfS5tYXQtcmlwcGxlLm1hdC1yaXBwbGUtdW5ib3VuZGVkW19uZ2NvbnRlbnQtJUNPTVAlXXtvdmVyZmxvdzp2aXNpYmxlfS5tYXQtcmlwcGxlLWVsZW1lbnRbX25nY29udGVudC0lQ09NUCVde3Bvc2l0aW9uOmFic29sdXRlO2JvcmRlci1yYWRpdXM6NTAlO3BvaW50ZXItZXZlbnRzOm5vbmU7dHJhbnNpdGlvbjpvcGFjaXR5LHRyYW5zZm9ybSAwbXMgY3ViaWMtYmV6aWVyKDAsIDAsIDAuMiwgMSk7dHJhbnNmb3JtOnNjYWxlKDApfS5jZGstaGlnaC1jb250cmFzdC1hY3RpdmVbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1yaXBwbGUtZWxlbWVudFtfbmdjb250ZW50LSVDT01QJV17ZGlzcGxheTpub25lfS5jZGstdmlzdWFsbHktaGlkZGVuW19uZ2NvbnRlbnQtJUNPTVAlXXtib3JkZXI6MDtjbGlwOnJlY3QoMCAwIDAgMCk7aGVpZ2h0OjFweDttYXJnaW46LTFweDtvdmVyZmxvdzpoaWRkZW47cGFkZGluZzowO3Bvc2l0aW9uOmFic29sdXRlO3dpZHRoOjFweDtvdXRsaW5lOjA7LXdlYmtpdC1hcHBlYXJhbmNlOm5vbmU7LW1vei1hcHBlYXJhbmNlOm5vbmV9LmNkay1vdmVybGF5LWNvbnRhaW5lcltfbmdjb250ZW50LSVDT01QJV0sIC5jZGstZ2xvYmFsLW92ZXJsYXktd3JhcHBlcltfbmdjb250ZW50LSVDT01QJV17cG9pbnRlci1ldmVudHM6bm9uZTt0b3A6MDtsZWZ0OjA7aGVpZ2h0OjEwMCU7d2lkdGg6MTAwJX0uY2RrLW92ZXJsYXktY29udGFpbmVyW19uZ2NvbnRlbnQtJUNPTVAlXXtwb3NpdGlvbjpmaXhlZDt6LWluZGV4OjEwMDB9LmNkay1vdmVybGF5LWNvbnRhaW5lcltfbmdjb250ZW50LSVDT01QJV06ZW1wdHl7ZGlzcGxheTpub25lfS5jZGstZ2xvYmFsLW92ZXJsYXktd3JhcHBlcltfbmdjb250ZW50LSVDT01QJV17ZGlzcGxheTpmbGV4O3Bvc2l0aW9uOmFic29sdXRlO3otaW5kZXg6MTAwMH0uY2RrLW92ZXJsYXktcGFuZVtfbmdjb250ZW50LSVDT01QJV17cG9zaXRpb246YWJzb2x1dGU7cG9pbnRlci1ldmVudHM6YXV0bztib3gtc2l6aW5nOmJvcmRlci1ib3g7ei1pbmRleDoxMDAwO2Rpc3BsYXk6ZmxleDttYXgtd2lkdGg6MTAwJTttYXgtaGVpZ2h0OjEwMCV9LmNkay1vdmVybGF5LWJhY2tkcm9wW19uZ2NvbnRlbnQtJUNPTVAlXXtwb3NpdGlvbjphYnNvbHV0ZTt0b3A6MDtib3R0b206MDtsZWZ0OjA7cmlnaHQ6MDt6LWluZGV4OjEwMDA7cG9pbnRlci1ldmVudHM6YXV0bzstd2Via2l0LXRhcC1oaWdobGlnaHQtY29sb3I6dHJhbnNwYXJlbnQ7dHJhbnNpdGlvbjpvcGFjaXR5IDQwMG1zIGN1YmljLWJlemllcigwLjI1LCAwLjgsIDAuMjUsIDEpO29wYWNpdHk6MH0uY2RrLW92ZXJsYXktYmFja2Ryb3AuY2RrLW92ZXJsYXktYmFja2Ryb3Atc2hvd2luZ1tfbmdjb250ZW50LSVDT01QJV17b3BhY2l0eToxfUBtZWRpYSBzY3JlZW4gYW5kICgtbXMtaGlnaC1jb250cmFzdDogYWN0aXZlKXsuY2RrLW92ZXJsYXktYmFja2Ryb3AuY2RrLW92ZXJsYXktYmFja2Ryb3Atc2hvd2luZ1tfbmdjb250ZW50LSVDT01QJV17b3BhY2l0eTouNn19LmNkay1vdmVybGF5LWRhcmstYmFja2Ryb3BbX25nY29udGVudC0lQ09NUCVde2JhY2tncm91bmQ6cmdiYSgwLDAsMCwuMzIpfS5jZGstb3ZlcmxheS10cmFuc3BhcmVudC1iYWNrZHJvcFtfbmdjb250ZW50LSVDT01QJV0sIC5jZGstb3ZlcmxheS10cmFuc3BhcmVudC1iYWNrZHJvcC5jZGstb3ZlcmxheS1iYWNrZHJvcC1zaG93aW5nW19uZ2NvbnRlbnQtJUNPTVAlXXtvcGFjaXR5OjB9LmNkay1vdmVybGF5LWNvbm5lY3RlZC1wb3NpdGlvbi1ib3VuZGluZy1ib3hbX25nY29udGVudC0lQ09NUCVde3Bvc2l0aW9uOmFic29sdXRlO3otaW5kZXg6MTAwMDtkaXNwbGF5OmZsZXg7ZmxleC1kaXJlY3Rpb246Y29sdW1uO21pbi13aWR0aDoxcHg7bWluLWhlaWdodDoxcHh9LmNkay1nbG9iYWwtc2Nyb2xsYmxvY2tbX25nY29udGVudC0lQ09NUCVde3Bvc2l0aW9uOmZpeGVkO3dpZHRoOjEwMCU7b3ZlcmZsb3cteTpzY3JvbGx9QGtleWZyYW1lcyBjZGstdGV4dC1maWVsZC1hdXRvZmlsbC1zdGFydHt9QGtleWZyYW1lcyBjZGstdGV4dC1maWVsZC1hdXRvZmlsbC1lbmR7fS5jZGstdGV4dC1maWVsZC1hdXRvZmlsbC1tb25pdG9yZWRbX25nY29udGVudC0lQ09NUCVdOi13ZWJraXQtYXV0b2ZpbGx7YW5pbWF0aW9uOmNkay10ZXh0LWZpZWxkLWF1dG9maWxsLXN0YXJ0IDBzIDFtc30uY2RrLXRleHQtZmllbGQtYXV0b2ZpbGwtbW9uaXRvcmVkW19uZ2NvbnRlbnQtJUNPTVAlXTpub3QoOi13ZWJraXQtYXV0b2ZpbGwpe2FuaW1hdGlvbjpjZGstdGV4dC1maWVsZC1hdXRvZmlsbC1lbmQgMHMgMW1zfXRleHRhcmVhLmNkay10ZXh0YXJlYS1hdXRvc2l6ZVtfbmdjb250ZW50LSVDT01QJV17cmVzaXplOm5vbmV9dGV4dGFyZWEuY2RrLXRleHRhcmVhLWF1dG9zaXplLW1lYXN1cmluZ1tfbmdjb250ZW50LSVDT01QJV17cGFkZGluZzoycHggMCAhaW1wb3J0YW50O2JveC1zaXppbmc6Y29udGVudC1ib3ggIWltcG9ydGFudDtoZWlnaHQ6YXV0byAhaW1wb3J0YW50O292ZXJmbG93OmhpZGRlbiAhaW1wb3J0YW50fXRleHRhcmVhLmNkay10ZXh0YXJlYS1hdXRvc2l6ZS1tZWFzdXJpbmctZmlyZWZveFtfbmdjb250ZW50LSVDT01QJV17cGFkZGluZzoycHggMCAhaW1wb3J0YW50O2JveC1zaXppbmc6Y29udGVudC1ib3ggIWltcG9ydGFudDtoZWlnaHQ6MCAhaW1wb3J0YW50fS5tYXQtZm9jdXMtaW5kaWNhdG9yW19uZ2NvbnRlbnQtJUNPTVAlXXtwb3NpdGlvbjpyZWxhdGl2ZX0ubWF0LW1kYy1mb2N1cy1pbmRpY2F0b3JbX25nY29udGVudC0lQ09NUCVde3Bvc2l0aW9uOnJlbGF0aXZlfS5tYXQtcmlwcGxlLWVsZW1lbnRbX25nY29udGVudC0lQ09NUCVde2JhY2tncm91bmQtY29sb3I6cmdiYSgwLDAsMCwuMSl9Lm1hdC1vcHRpb25bX25nY29udGVudC0lQ09NUCVde2NvbG9yOiMyMTIxMjF9Lm1hdC1vcHRpb25bX25nY29udGVudC0lQ09NUCVdOmhvdmVyOm5vdCgubWF0LW9wdGlvbi1kaXNhYmxlZCksIC5tYXQtb3B0aW9uW19uZ2NvbnRlbnQtJUNPTVAlXTpmb2N1czpub3QoLm1hdC1vcHRpb24tZGlzYWJsZWQpe2JhY2tncm91bmQ6cmdiYSgwLDAsMCwuMDQpfS5tYXQtb3B0aW9uLm1hdC1zZWxlY3RlZFtfbmdjb250ZW50LSVDT01QJV06bm90KC5tYXQtb3B0aW9uLW11bHRpcGxlKTpub3QoLm1hdC1vcHRpb24tZGlzYWJsZWQpe2JhY2tncm91bmQ6cmdiYSgwLDAsMCwuMDQpfS5tYXQtb3B0aW9uLm1hdC1hY3RpdmVbX25nY29udGVudC0lQ09NUCVde2JhY2tncm91bmQ6cmdiYSgwLDAsMCwuMDQpO2NvbG9yOiMyMTIxMjF9Lm1hdC1vcHRpb24ubWF0LW9wdGlvbi1kaXNhYmxlZFtfbmdjb250ZW50LSVDT01QJV17Y29sb3I6cmdiYSgwLDAsMCwuMzgpfS5tYXQtcHJpbWFyeVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LW9wdGlvbi5tYXQtc2VsZWN0ZWRbX25nY29udGVudC0lQ09NUCVdOm5vdCgubWF0LW9wdGlvbi1kaXNhYmxlZCl7Y29sb3I6I2Y1N2MwMH0ubWF0LWFjY2VudFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LW9wdGlvbi5tYXQtc2VsZWN0ZWRbX25nY29udGVudC0lQ09NUCVdOm5vdCgubWF0LW9wdGlvbi1kaXNhYmxlZCl7Y29sb3I6I2ZmOTgwMH0ubWF0LXdhcm5bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1vcHRpb24ubWF0LXNlbGVjdGVkW19uZ2NvbnRlbnQtJUNPTVAlXTpub3QoLm1hdC1vcHRpb24tZGlzYWJsZWQpe2NvbG9yOiNmNDQzMzZ9Lm1hdC1vcHRncm91cC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17Y29sb3I6IzYxNjE2MX0ubWF0LW9wdGdyb3VwLWRpc2FibGVkW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtb3B0Z3JvdXAtbGFiZWxbX25nY29udGVudC0lQ09NUCVde2NvbG9yOnJnYmEoMCwwLDAsLjM4KX0ubWF0LXBzZXVkby1jaGVja2JveFtfbmdjb250ZW50LSVDT01QJV17Y29sb3I6IzYxNjE2MX0ubWF0LXBzZXVkby1jaGVja2JveFtfbmdjb250ZW50LSVDT01QJV06OmFmdGVye2NvbG9yOiNmYWZhZmF9Lm1hdC1wc2V1ZG8tY2hlY2tib3gtZGlzYWJsZWRbX25nY29udGVudC0lQ09NUCVde2NvbG9yOiNiMGIwYjB9Lm1hdC1wcmltYXJ5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtcHNldWRvLWNoZWNrYm94LWNoZWNrZWRbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXByaW1hcnlbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1wc2V1ZG8tY2hlY2tib3gtaW5kZXRlcm1pbmF0ZVtfbmdjb250ZW50LSVDT01QJV17YmFja2dyb3VuZDojZjU3YzAwfS5tYXQtcHNldWRvLWNoZWNrYm94LWNoZWNrZWRbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXBzZXVkby1jaGVja2JveC1pbmRldGVybWluYXRlW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1hY2NlbnRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1wc2V1ZG8tY2hlY2tib3gtY2hlY2tlZFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtYWNjZW50W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtcHNldWRvLWNoZWNrYm94LWluZGV0ZXJtaW5hdGVbX25nY29udGVudC0lQ09NUCVde2JhY2tncm91bmQ6I2ZmOTgwMH0ubWF0LXdhcm5bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1wc2V1ZG8tY2hlY2tib3gtY2hlY2tlZFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtd2Fybltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXBzZXVkby1jaGVja2JveC1pbmRldGVybWluYXRlW19uZ2NvbnRlbnQtJUNPTVAlXXtiYWNrZ3JvdW5kOiNmNDQzMzZ9Lm1hdC1wc2V1ZG8tY2hlY2tib3gtY2hlY2tlZC5tYXQtcHNldWRvLWNoZWNrYm94LWRpc2FibGVkW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1wc2V1ZG8tY2hlY2tib3gtaW5kZXRlcm1pbmF0ZS5tYXQtcHNldWRvLWNoZWNrYm94LWRpc2FibGVkW19uZ2NvbnRlbnQtJUNPTVAlXXtiYWNrZ3JvdW5kOiNiMGIwYjB9Lm1hdC1hcHAtYmFja2dyb3VuZFtfbmdjb250ZW50LSVDT01QJV17YmFja2dyb3VuZC1jb2xvcjojZmFmYWZhO2NvbG9yOiMyMTIxMjF9Lm1hdC1lbGV2YXRpb24tejBbX25nY29udGVudC0lQ09NUCVde2JveC1zaGFkb3c6MHB4IDBweCAwcHggMHB4IHJnYmEoMCwgMCwgMCwgMC4yKSwwcHggMHB4IDBweCAwcHggcmdiYSgwLCAwLCAwLCAwLjE0KSwwcHggMHB4IDBweCAwcHggcmdiYSgwLCAwLCAwLCAwLjEyKX0ubWF0LWVsZXZhdGlvbi16MVtfbmdjb250ZW50LSVDT01QJV17Ym94LXNoYWRvdzowcHggMnB4IDFweCAtMXB4IHJnYmEoMCwgMCwgMCwgMC4yKSwwcHggMXB4IDFweCAwcHggcmdiYSgwLCAwLCAwLCAwLjE0KSwwcHggMXB4IDNweCAwcHggcmdiYSgwLCAwLCAwLCAwLjEyKX0ubWF0LWVsZXZhdGlvbi16Mltfbmdjb250ZW50LSVDT01QJV17Ym94LXNoYWRvdzowcHggM3B4IDFweCAtMnB4IHJnYmEoMCwgMCwgMCwgMC4yKSwwcHggMnB4IDJweCAwcHggcmdiYSgwLCAwLCAwLCAwLjE0KSwwcHggMXB4IDVweCAwcHggcmdiYSgwLCAwLCAwLCAwLjEyKX0ubWF0LWVsZXZhdGlvbi16M1tfbmdjb250ZW50LSVDT01QJV17Ym94LXNoYWRvdzowcHggM3B4IDNweCAtMnB4IHJnYmEoMCwgMCwgMCwgMC4yKSwwcHggM3B4IDRweCAwcHggcmdiYSgwLCAwLCAwLCAwLjE0KSwwcHggMXB4IDhweCAwcHggcmdiYSgwLCAwLCAwLCAwLjEyKX0ubWF0LWVsZXZhdGlvbi16NFtfbmdjb250ZW50LSVDT01QJV17Ym94LXNoYWRvdzowcHggMnB4IDRweCAtMXB4IHJnYmEoMCwgMCwgMCwgMC4yKSwwcHggNHB4IDVweCAwcHggcmdiYSgwLCAwLCAwLCAwLjE0KSwwcHggMXB4IDEwcHggMHB4IHJnYmEoMCwgMCwgMCwgMC4xMil9Lm1hdC1lbGV2YXRpb24tejVbX25nY29udGVudC0lQ09NUCVde2JveC1zaGFkb3c6MHB4IDNweCA1cHggLTFweCByZ2JhKDAsIDAsIDAsIDAuMiksMHB4IDVweCA4cHggMHB4IHJnYmEoMCwgMCwgMCwgMC4xNCksMHB4IDFweCAxNHB4IDBweCByZ2JhKDAsIDAsIDAsIDAuMTIpfS5tYXQtZWxldmF0aW9uLXo2W19uZ2NvbnRlbnQtJUNPTVAlXXtib3gtc2hhZG93OjBweCAzcHggNXB4IC0xcHggcmdiYSgwLCAwLCAwLCAwLjIpLDBweCA2cHggMTBweCAwcHggcmdiYSgwLCAwLCAwLCAwLjE0KSwwcHggMXB4IDE4cHggMHB4IHJnYmEoMCwgMCwgMCwgMC4xMil9Lm1hdC1lbGV2YXRpb24tejdbX25nY29udGVudC0lQ09NUCVde2JveC1zaGFkb3c6MHB4IDRweCA1cHggLTJweCByZ2JhKDAsIDAsIDAsIDAuMiksMHB4IDdweCAxMHB4IDFweCByZ2JhKDAsIDAsIDAsIDAuMTQpLDBweCAycHggMTZweCAxcHggcmdiYSgwLCAwLCAwLCAwLjEyKX0ubWF0LWVsZXZhdGlvbi16OFtfbmdjb250ZW50LSVDT01QJV17Ym94LXNoYWRvdzowcHggNXB4IDVweCAtM3B4IHJnYmEoMCwgMCwgMCwgMC4yKSwwcHggOHB4IDEwcHggMXB4IHJnYmEoMCwgMCwgMCwgMC4xNCksMHB4IDNweCAxNHB4IDJweCByZ2JhKDAsIDAsIDAsIDAuMTIpfS5tYXQtZWxldmF0aW9uLXo5W19uZ2NvbnRlbnQtJUNPTVAlXXtib3gtc2hhZG93OjBweCA1cHggNnB4IC0zcHggcmdiYSgwLCAwLCAwLCAwLjIpLDBweCA5cHggMTJweCAxcHggcmdiYSgwLCAwLCAwLCAwLjE0KSwwcHggM3B4IDE2cHggMnB4IHJnYmEoMCwgMCwgMCwgMC4xMil9Lm1hdC1lbGV2YXRpb24tejEwW19uZ2NvbnRlbnQtJUNPTVAlXXtib3gtc2hhZG93OjBweCA2cHggNnB4IC0zcHggcmdiYSgwLCAwLCAwLCAwLjIpLDBweCAxMHB4IDE0cHggMXB4IHJnYmEoMCwgMCwgMCwgMC4xNCksMHB4IDRweCAxOHB4IDNweCByZ2JhKDAsIDAsIDAsIDAuMTIpfS5tYXQtZWxldmF0aW9uLXoxMVtfbmdjb250ZW50LSVDT01QJV17Ym94LXNoYWRvdzowcHggNnB4IDdweCAtNHB4IHJnYmEoMCwgMCwgMCwgMC4yKSwwcHggMTFweCAxNXB4IDFweCByZ2JhKDAsIDAsIDAsIDAuMTQpLDBweCA0cHggMjBweCAzcHggcmdiYSgwLCAwLCAwLCAwLjEyKX0ubWF0LWVsZXZhdGlvbi16MTJbX25nY29udGVudC0lQ09NUCVde2JveC1zaGFkb3c6MHB4IDdweCA4cHggLTRweCByZ2JhKDAsIDAsIDAsIDAuMiksMHB4IDEycHggMTdweCAycHggcmdiYSgwLCAwLCAwLCAwLjE0KSwwcHggNXB4IDIycHggNHB4IHJnYmEoMCwgMCwgMCwgMC4xMil9Lm1hdC1lbGV2YXRpb24tejEzW19uZ2NvbnRlbnQtJUNPTVAlXXtib3gtc2hhZG93OjBweCA3cHggOHB4IC00cHggcmdiYSgwLCAwLCAwLCAwLjIpLDBweCAxM3B4IDE5cHggMnB4IHJnYmEoMCwgMCwgMCwgMC4xNCksMHB4IDVweCAyNHB4IDRweCByZ2JhKDAsIDAsIDAsIDAuMTIpfS5tYXQtZWxldmF0aW9uLXoxNFtfbmdjb250ZW50LSVDT01QJV17Ym94LXNoYWRvdzowcHggN3B4IDlweCAtNHB4IHJnYmEoMCwgMCwgMCwgMC4yKSwwcHggMTRweCAyMXB4IDJweCByZ2JhKDAsIDAsIDAsIDAuMTQpLDBweCA1cHggMjZweCA0cHggcmdiYSgwLCAwLCAwLCAwLjEyKX0ubWF0LWVsZXZhdGlvbi16MTVbX25nY29udGVudC0lQ09NUCVde2JveC1zaGFkb3c6MHB4IDhweCA5cHggLTVweCByZ2JhKDAsIDAsIDAsIDAuMiksMHB4IDE1cHggMjJweCAycHggcmdiYSgwLCAwLCAwLCAwLjE0KSwwcHggNnB4IDI4cHggNXB4IHJnYmEoMCwgMCwgMCwgMC4xMil9Lm1hdC1lbGV2YXRpb24tejE2W19uZ2NvbnRlbnQtJUNPTVAlXXtib3gtc2hhZG93OjBweCA4cHggMTBweCAtNXB4IHJnYmEoMCwgMCwgMCwgMC4yKSwwcHggMTZweCAyNHB4IDJweCByZ2JhKDAsIDAsIDAsIDAuMTQpLDBweCA2cHggMzBweCA1cHggcmdiYSgwLCAwLCAwLCAwLjEyKX0ubWF0LWVsZXZhdGlvbi16MTdbX25nY29udGVudC0lQ09NUCVde2JveC1zaGFkb3c6MHB4IDhweCAxMXB4IC01cHggcmdiYSgwLCAwLCAwLCAwLjIpLDBweCAxN3B4IDI2cHggMnB4IHJnYmEoMCwgMCwgMCwgMC4xNCksMHB4IDZweCAzMnB4IDVweCByZ2JhKDAsIDAsIDAsIDAuMTIpfS5tYXQtZWxldmF0aW9uLXoxOFtfbmdjb250ZW50LSVDT01QJV17Ym94LXNoYWRvdzowcHggOXB4IDExcHggLTVweCByZ2JhKDAsIDAsIDAsIDAuMiksMHB4IDE4cHggMjhweCAycHggcmdiYSgwLCAwLCAwLCAwLjE0KSwwcHggN3B4IDM0cHggNnB4IHJnYmEoMCwgMCwgMCwgMC4xMil9Lm1hdC1lbGV2YXRpb24tejE5W19uZ2NvbnRlbnQtJUNPTVAlXXtib3gtc2hhZG93OjBweCA5cHggMTJweCAtNnB4IHJnYmEoMCwgMCwgMCwgMC4yKSwwcHggMTlweCAyOXB4IDJweCByZ2JhKDAsIDAsIDAsIDAuMTQpLDBweCA3cHggMzZweCA2cHggcmdiYSgwLCAwLCAwLCAwLjEyKX0ubWF0LWVsZXZhdGlvbi16MjBbX25nY29udGVudC0lQ09NUCVde2JveC1zaGFkb3c6MHB4IDEwcHggMTNweCAtNnB4IHJnYmEoMCwgMCwgMCwgMC4yKSwwcHggMjBweCAzMXB4IDNweCByZ2JhKDAsIDAsIDAsIDAuMTQpLDBweCA4cHggMzhweCA3cHggcmdiYSgwLCAwLCAwLCAwLjEyKX0ubWF0LWVsZXZhdGlvbi16MjFbX25nY29udGVudC0lQ09NUCVde2JveC1zaGFkb3c6MHB4IDEwcHggMTNweCAtNnB4IHJnYmEoMCwgMCwgMCwgMC4yKSwwcHggMjFweCAzM3B4IDNweCByZ2JhKDAsIDAsIDAsIDAuMTQpLDBweCA4cHggNDBweCA3cHggcmdiYSgwLCAwLCAwLCAwLjEyKX0ubWF0LWVsZXZhdGlvbi16MjJbX25nY29udGVudC0lQ09NUCVde2JveC1zaGFkb3c6MHB4IDEwcHggMTRweCAtNnB4IHJnYmEoMCwgMCwgMCwgMC4yKSwwcHggMjJweCAzNXB4IDNweCByZ2JhKDAsIDAsIDAsIDAuMTQpLDBweCA4cHggNDJweCA3cHggcmdiYSgwLCAwLCAwLCAwLjEyKX0ubWF0LWVsZXZhdGlvbi16MjNbX25nY29udGVudC0lQ09NUCVde2JveC1zaGFkb3c6MHB4IDExcHggMTRweCAtN3B4IHJnYmEoMCwgMCwgMCwgMC4yKSwwcHggMjNweCAzNnB4IDNweCByZ2JhKDAsIDAsIDAsIDAuMTQpLDBweCA5cHggNDRweCA4cHggcmdiYSgwLCAwLCAwLCAwLjEyKX0ubWF0LWVsZXZhdGlvbi16MjRbX25nY29udGVudC0lQ09NUCVde2JveC1zaGFkb3c6MHB4IDExcHggMTVweCAtN3B4IHJnYmEoMCwgMCwgMCwgMC4yKSwwcHggMjRweCAzOHB4IDNweCByZ2JhKDAsIDAsIDAsIDAuMTQpLDBweCA5cHggNDZweCA4cHggcmdiYSgwLCAwLCAwLCAwLjEyKX0ubWF0LXRoZW1lLWxvYWRlZC1tYXJrZXJbX25nY29udGVudC0lQ09NUCVde2Rpc3BsYXk6bm9uZX0ubWF0LWF1dG9jb21wbGV0ZS1wYW5lbFtfbmdjb250ZW50LSVDT01QJV17YmFja2dyb3VuZDojZmZmO2NvbG9yOiMyMTIxMjF9Lm1hdC1hdXRvY29tcGxldGUtcGFuZWxbX25nY29udGVudC0lQ09NUCVdOm5vdChbY2xhc3MqPW1hdC1lbGV2YXRpb24tel0pe2JveC1zaGFkb3c6MHB4IDJweCA0cHggLTFweCByZ2JhKDAsIDAsIDAsIDAuMiksMHB4IDRweCA1cHggMHB4IHJnYmEoMCwgMCwgMCwgMC4xNCksMHB4IDFweCAxMHB4IDBweCByZ2JhKDAsIDAsIDAsIDAuMTIpfS5tYXQtYXV0b2NvbXBsZXRlLXBhbmVsW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtb3B0aW9uLm1hdC1zZWxlY3RlZFtfbmdjb250ZW50LSVDT01QJV06bm90KC5tYXQtYWN0aXZlKTpub3QoOmhvdmVyKXtiYWNrZ3JvdW5kOiNmZmZ9Lm1hdC1hdXRvY29tcGxldGUtcGFuZWxbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1vcHRpb24ubWF0LXNlbGVjdGVkW19uZ2NvbnRlbnQtJUNPTVAlXTpub3QoLm1hdC1hY3RpdmUpOm5vdCg6aG92ZXIpOm5vdCgubWF0LW9wdGlvbi1kaXNhYmxlZCl7Y29sb3I6IzIxMjEyMX0ubWF0LWJhZGdlLWNvbnRlbnRbX25nY29udGVudC0lQ09NUCVde2NvbG9yOiNmZmY7YmFja2dyb3VuZDojZjU3YzAwfS5jZGstaGlnaC1jb250cmFzdC1hY3RpdmVbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1iYWRnZS1jb250ZW50W19uZ2NvbnRlbnQtJUNPTVAlXXtvdXRsaW5lOnNvbGlkIDFweDtib3JkZXItcmFkaXVzOjB9Lm1hdC1iYWRnZS1hY2NlbnRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1iYWRnZS1jb250ZW50W19uZ2NvbnRlbnQtJUNPTVAlXXtiYWNrZ3JvdW5kOiNmZjk4MDA7Y29sb3I6I2ZmZn0ubWF0LWJhZGdlLXdhcm5bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1iYWRnZS1jb250ZW50W19uZ2NvbnRlbnQtJUNPTVAlXXtjb2xvcjojZmZmO2JhY2tncm91bmQ6I2Y0NDMzNn0ubWF0LWJhZGdlW19uZ2NvbnRlbnQtJUNPTVAlXXtwb3NpdGlvbjpyZWxhdGl2ZX0ubWF0LWJhZGdlLWhpZGRlbltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWJhZGdlLWNvbnRlbnRbX25nY29udGVudC0lQ09NUCVde2Rpc3BsYXk6bm9uZX0ubWF0LWJhZGdlLWRpc2FibGVkW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtYmFkZ2UtY29udGVudFtfbmdjb250ZW50LSVDT01QJV17YmFja2dyb3VuZDojYjliOWI5O2NvbG9yOiM3NTc1NzV9Lm1hdC1iYWRnZS1jb250ZW50W19uZ2NvbnRlbnQtJUNPTVAlXXtwb3NpdGlvbjphYnNvbHV0ZTt0ZXh0LWFsaWduOmNlbnRlcjtkaXNwbGF5OmlubGluZS1ibG9jaztib3JkZXItcmFkaXVzOjUwJTt0cmFuc2l0aW9uOnRyYW5zZm9ybSAyMDBtcyBlYXNlLWluLW91dDt0cmFuc2Zvcm06c2NhbGUoMC42KTtvdmVyZmxvdzpoaWRkZW47d2hpdGUtc3BhY2U6bm93cmFwO3RleHQtb3ZlcmZsb3c6ZWxsaXBzaXM7cG9pbnRlci1ldmVudHM6bm9uZX0ubmctYW5pbWF0ZS1kaXNhYmxlZFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWJhZGdlLWNvbnRlbnRbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWJhZGdlLWNvbnRlbnQuX21hdC1hbmltYXRpb24tbm9vcGFibGVbX25nY29udGVudC0lQ09NUCVde3RyYW5zaXRpb246bm9uZX0ubWF0LWJhZGdlLWNvbnRlbnQubWF0LWJhZGdlLWFjdGl2ZVtfbmdjb250ZW50LSVDT01QJV17dHJhbnNmb3JtOm5vbmV9Lm1hdC1iYWRnZS1zbWFsbFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWJhZGdlLWNvbnRlbnRbX25nY29udGVudC0lQ09NUCVde3dpZHRoOjE2cHg7aGVpZ2h0OjE2cHg7bGluZS1oZWlnaHQ6MTZweH0ubWF0LWJhZGdlLXNtYWxsLm1hdC1iYWRnZS1hYm92ZVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWJhZGdlLWNvbnRlbnRbX25nY29udGVudC0lQ09NUCVde3RvcDotOHB4fS5tYXQtYmFkZ2Utc21hbGwubWF0LWJhZGdlLWJlbG93W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtYmFkZ2UtY29udGVudFtfbmdjb250ZW50LSVDT01QJV17Ym90dG9tOi04cHh9Lm1hdC1iYWRnZS1zbWFsbC5tYXQtYmFkZ2UtYmVmb3JlW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtYmFkZ2UtY29udGVudFtfbmdjb250ZW50LSVDT01QJV17bGVmdDotMTZweH1bZGlyPXJ0bF1bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1iYWRnZS1zbWFsbC5tYXQtYmFkZ2UtYmVmb3JlW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtYmFkZ2UtY29udGVudFtfbmdjb250ZW50LSVDT01QJV17bGVmdDphdXRvO3JpZ2h0Oi0xNnB4fS5tYXQtYmFkZ2Utc21hbGwubWF0LWJhZGdlLWFmdGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtYmFkZ2UtY29udGVudFtfbmdjb250ZW50LSVDT01QJV17cmlnaHQ6LTE2cHh9W2Rpcj1ydGxdW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtYmFkZ2Utc21hbGwubWF0LWJhZGdlLWFmdGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtYmFkZ2UtY29udGVudFtfbmdjb250ZW50LSVDT01QJV17cmlnaHQ6YXV0bztsZWZ0Oi0xNnB4fS5tYXQtYmFkZ2Utc21hbGwubWF0LWJhZGdlLW92ZXJsYXAubWF0LWJhZGdlLWJlZm9yZVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWJhZGdlLWNvbnRlbnRbX25nY29udGVudC0lQ09NUCVde2xlZnQ6LThweH1bZGlyPXJ0bF1bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1iYWRnZS1zbWFsbC5tYXQtYmFkZ2Utb3ZlcmxhcC5tYXQtYmFkZ2UtYmVmb3JlW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtYmFkZ2UtY29udGVudFtfbmdjb250ZW50LSVDT01QJV17bGVmdDphdXRvO3JpZ2h0Oi04cHh9Lm1hdC1iYWRnZS1zbWFsbC5tYXQtYmFkZ2Utb3ZlcmxhcC5tYXQtYmFkZ2UtYWZ0ZXJbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1iYWRnZS1jb250ZW50W19uZ2NvbnRlbnQtJUNPTVAlXXtyaWdodDotOHB4fVtkaXI9cnRsXVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWJhZGdlLXNtYWxsLm1hdC1iYWRnZS1vdmVybGFwLm1hdC1iYWRnZS1hZnRlcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWJhZGdlLWNvbnRlbnRbX25nY29udGVudC0lQ09NUCVde3JpZ2h0OmF1dG87bGVmdDotOHB4fS5tYXQtYmFkZ2UtbWVkaXVtW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtYmFkZ2UtY29udGVudFtfbmdjb250ZW50LSVDT01QJV17d2lkdGg6MjJweDtoZWlnaHQ6MjJweDtsaW5lLWhlaWdodDoyMnB4fS5tYXQtYmFkZ2UtbWVkaXVtLm1hdC1iYWRnZS1hYm92ZVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWJhZGdlLWNvbnRlbnRbX25nY29udGVudC0lQ09NUCVde3RvcDotMTFweH0ubWF0LWJhZGdlLW1lZGl1bS5tYXQtYmFkZ2UtYmVsb3dbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1iYWRnZS1jb250ZW50W19uZ2NvbnRlbnQtJUNPTVAlXXtib3R0b206LTExcHh9Lm1hdC1iYWRnZS1tZWRpdW0ubWF0LWJhZGdlLWJlZm9yZVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWJhZGdlLWNvbnRlbnRbX25nY29udGVudC0lQ09NUCVde2xlZnQ6LTIycHh9W2Rpcj1ydGxdW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtYmFkZ2UtbWVkaXVtLm1hdC1iYWRnZS1iZWZvcmVbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1iYWRnZS1jb250ZW50W19uZ2NvbnRlbnQtJUNPTVAlXXtsZWZ0OmF1dG87cmlnaHQ6LTIycHh9Lm1hdC1iYWRnZS1tZWRpdW0ubWF0LWJhZGdlLWFmdGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtYmFkZ2UtY29udGVudFtfbmdjb250ZW50LSVDT01QJV17cmlnaHQ6LTIycHh9W2Rpcj1ydGxdW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtYmFkZ2UtbWVkaXVtLm1hdC1iYWRnZS1hZnRlcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWJhZGdlLWNvbnRlbnRbX25nY29udGVudC0lQ09NUCVde3JpZ2h0OmF1dG87bGVmdDotMjJweH0ubWF0LWJhZGdlLW1lZGl1bS5tYXQtYmFkZ2Utb3ZlcmxhcC5tYXQtYmFkZ2UtYmVmb3JlW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtYmFkZ2UtY29udGVudFtfbmdjb250ZW50LSVDT01QJV17bGVmdDotMTFweH1bZGlyPXJ0bF1bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1iYWRnZS1tZWRpdW0ubWF0LWJhZGdlLW92ZXJsYXAubWF0LWJhZGdlLWJlZm9yZVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWJhZGdlLWNvbnRlbnRbX25nY29udGVudC0lQ09NUCVde2xlZnQ6YXV0bztyaWdodDotMTFweH0ubWF0LWJhZGdlLW1lZGl1bS5tYXQtYmFkZ2Utb3ZlcmxhcC5tYXQtYmFkZ2UtYWZ0ZXJbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1iYWRnZS1jb250ZW50W19uZ2NvbnRlbnQtJUNPTVAlXXtyaWdodDotMTFweH1bZGlyPXJ0bF1bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1iYWRnZS1tZWRpdW0ubWF0LWJhZGdlLW92ZXJsYXAubWF0LWJhZGdlLWFmdGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtYmFkZ2UtY29udGVudFtfbmdjb250ZW50LSVDT01QJV17cmlnaHQ6YXV0bztsZWZ0Oi0xMXB4fS5tYXQtYmFkZ2UtbGFyZ2VbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1iYWRnZS1jb250ZW50W19uZ2NvbnRlbnQtJUNPTVAlXXt3aWR0aDoyOHB4O2hlaWdodDoyOHB4O2xpbmUtaGVpZ2h0OjI4cHh9Lm1hdC1iYWRnZS1sYXJnZS5tYXQtYmFkZ2UtYWJvdmVbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1iYWRnZS1jb250ZW50W19uZ2NvbnRlbnQtJUNPTVAlXXt0b3A6LTE0cHh9Lm1hdC1iYWRnZS1sYXJnZS5tYXQtYmFkZ2UtYmVsb3dbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1iYWRnZS1jb250ZW50W19uZ2NvbnRlbnQtJUNPTVAlXXtib3R0b206LTE0cHh9Lm1hdC1iYWRnZS1sYXJnZS5tYXQtYmFkZ2UtYmVmb3JlW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtYmFkZ2UtY29udGVudFtfbmdjb250ZW50LSVDT01QJV17bGVmdDotMjhweH1bZGlyPXJ0bF1bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1iYWRnZS1sYXJnZS5tYXQtYmFkZ2UtYmVmb3JlW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtYmFkZ2UtY29udGVudFtfbmdjb250ZW50LSVDT01QJV17bGVmdDphdXRvO3JpZ2h0Oi0yOHB4fS5tYXQtYmFkZ2UtbGFyZ2UubWF0LWJhZGdlLWFmdGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtYmFkZ2UtY29udGVudFtfbmdjb250ZW50LSVDT01QJV17cmlnaHQ6LTI4cHh9W2Rpcj1ydGxdW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtYmFkZ2UtbGFyZ2UubWF0LWJhZGdlLWFmdGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtYmFkZ2UtY29udGVudFtfbmdjb250ZW50LSVDT01QJV17cmlnaHQ6YXV0bztsZWZ0Oi0yOHB4fS5tYXQtYmFkZ2UtbGFyZ2UubWF0LWJhZGdlLW92ZXJsYXAubWF0LWJhZGdlLWJlZm9yZVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWJhZGdlLWNvbnRlbnRbX25nY29udGVudC0lQ09NUCVde2xlZnQ6LTE0cHh9W2Rpcj1ydGxdW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtYmFkZ2UtbGFyZ2UubWF0LWJhZGdlLW92ZXJsYXAubWF0LWJhZGdlLWJlZm9yZVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWJhZGdlLWNvbnRlbnRbX25nY29udGVudC0lQ09NUCVde2xlZnQ6YXV0bztyaWdodDotMTRweH0ubWF0LWJhZGdlLWxhcmdlLm1hdC1iYWRnZS1vdmVybGFwLm1hdC1iYWRnZS1hZnRlcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWJhZGdlLWNvbnRlbnRbX25nY29udGVudC0lQ09NUCVde3JpZ2h0Oi0xNHB4fVtkaXI9cnRsXVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWJhZGdlLWxhcmdlLm1hdC1iYWRnZS1vdmVybGFwLm1hdC1iYWRnZS1hZnRlcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWJhZGdlLWNvbnRlbnRbX25nY29udGVudC0lQ09NUCVde3JpZ2h0OmF1dG87bGVmdDotMTRweH0ubWF0LWJvdHRvbS1zaGVldC1jb250YWluZXJbX25nY29udGVudC0lQ09NUCVde2JveC1zaGFkb3c6MHB4IDhweCAxMHB4IC01cHggcmdiYSgwLCAwLCAwLCAwLjIpLDBweCAxNnB4IDI0cHggMnB4IHJnYmEoMCwgMCwgMCwgMC4xNCksMHB4IDZweCAzMHB4IDVweCByZ2JhKDAsIDAsIDAsIDAuMTIpO2JhY2tncm91bmQ6I2ZmZjtjb2xvcjojMjEyMTIxfS5tYXQtYnV0dG9uW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1pY29uLWJ1dHRvbltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtc3Ryb2tlZC1idXR0b25bX25nY29udGVudC0lQ09NUCVde2NvbG9yOmluaGVyaXQ7YmFja2dyb3VuZDp0cmFuc3BhcmVudH0ubWF0LWJ1dHRvbi5tYXQtcHJpbWFyeVtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtaWNvbi1idXR0b24ubWF0LXByaW1hcnlbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXN0cm9rZWQtYnV0dG9uLm1hdC1wcmltYXJ5W19uZ2NvbnRlbnQtJUNPTVAlXXtjb2xvcjojZjU3YzAwfS5tYXQtYnV0dG9uLm1hdC1hY2NlbnRbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWljb24tYnV0dG9uLm1hdC1hY2NlbnRbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXN0cm9rZWQtYnV0dG9uLm1hdC1hY2NlbnRbX25nY29udGVudC0lQ09NUCVde2NvbG9yOiNmZjk4MDB9Lm1hdC1idXR0b24ubWF0LXdhcm5bX25nY29udGVudC0lQ09NUCVdLCAubWF0LWljb24tYnV0dG9uLm1hdC13YXJuW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1zdHJva2VkLWJ1dHRvbi5tYXQtd2Fybltfbmdjb250ZW50LSVDT01QJV17Y29sb3I6I2Y0NDMzNn0ubWF0LWJ1dHRvbi5tYXQtcHJpbWFyeS5tYXQtYnV0dG9uLWRpc2FibGVkW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1idXR0b24ubWF0LWFjY2VudC5tYXQtYnV0dG9uLWRpc2FibGVkW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1idXR0b24ubWF0LXdhcm4ubWF0LWJ1dHRvbi1kaXNhYmxlZFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtYnV0dG9uLm1hdC1idXR0b24tZGlzYWJsZWQubWF0LWJ1dHRvbi1kaXNhYmxlZFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtaWNvbi1idXR0b24ubWF0LXByaW1hcnkubWF0LWJ1dHRvbi1kaXNhYmxlZFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtaWNvbi1idXR0b24ubWF0LWFjY2VudC5tYXQtYnV0dG9uLWRpc2FibGVkW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1pY29uLWJ1dHRvbi5tYXQtd2Fybi5tYXQtYnV0dG9uLWRpc2FibGVkW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1pY29uLWJ1dHRvbi5tYXQtYnV0dG9uLWRpc2FibGVkLm1hdC1idXR0b24tZGlzYWJsZWRbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXN0cm9rZWQtYnV0dG9uLm1hdC1wcmltYXJ5Lm1hdC1idXR0b24tZGlzYWJsZWRbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXN0cm9rZWQtYnV0dG9uLm1hdC1hY2NlbnQubWF0LWJ1dHRvbi1kaXNhYmxlZFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtc3Ryb2tlZC1idXR0b24ubWF0LXdhcm4ubWF0LWJ1dHRvbi1kaXNhYmxlZFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtc3Ryb2tlZC1idXR0b24ubWF0LWJ1dHRvbi1kaXNhYmxlZC5tYXQtYnV0dG9uLWRpc2FibGVkW19uZ2NvbnRlbnQtJUNPTVAlXXtjb2xvcjpyZ2JhKDAsMCwwLC4yNil9Lm1hdC1idXR0b24ubWF0LXByaW1hcnlbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1idXR0b24tZm9jdXMtb3ZlcmxheVtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtaWNvbi1idXR0b24ubWF0LXByaW1hcnlbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1idXR0b24tZm9jdXMtb3ZlcmxheVtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtc3Ryb2tlZC1idXR0b24ubWF0LXByaW1hcnlbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1idXR0b24tZm9jdXMtb3ZlcmxheVtfbmdjb250ZW50LSVDT01QJV17YmFja2dyb3VuZC1jb2xvcjojZjU3YzAwfS5tYXQtYnV0dG9uLm1hdC1hY2NlbnRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1idXR0b24tZm9jdXMtb3ZlcmxheVtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtaWNvbi1idXR0b24ubWF0LWFjY2VudFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWJ1dHRvbi1mb2N1cy1vdmVybGF5W19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1zdHJva2VkLWJ1dHRvbi5tYXQtYWNjZW50W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtYnV0dG9uLWZvY3VzLW92ZXJsYXlbX25nY29udGVudC0lQ09NUCVde2JhY2tncm91bmQtY29sb3I6I2ZmOTgwMH0ubWF0LWJ1dHRvbi5tYXQtd2Fybltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWJ1dHRvbi1mb2N1cy1vdmVybGF5W19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1pY29uLWJ1dHRvbi5tYXQtd2Fybltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWJ1dHRvbi1mb2N1cy1vdmVybGF5W19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1zdHJva2VkLWJ1dHRvbi5tYXQtd2Fybltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWJ1dHRvbi1mb2N1cy1vdmVybGF5W19uZ2NvbnRlbnQtJUNPTVAlXXtiYWNrZ3JvdW5kLWNvbG9yOiNmNDQzMzZ9Lm1hdC1idXR0b24ubWF0LWJ1dHRvbi1kaXNhYmxlZFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWJ1dHRvbi1mb2N1cy1vdmVybGF5W19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1pY29uLWJ1dHRvbi5tYXQtYnV0dG9uLWRpc2FibGVkW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtYnV0dG9uLWZvY3VzLW92ZXJsYXlbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXN0cm9rZWQtYnV0dG9uLm1hdC1idXR0b24tZGlzYWJsZWRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1idXR0b24tZm9jdXMtb3ZlcmxheVtfbmdjb250ZW50LSVDT01QJV17YmFja2dyb3VuZC1jb2xvcjp0cmFuc3BhcmVudH0ubWF0LWJ1dHRvbltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXJpcHBsZS1lbGVtZW50W19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1pY29uLWJ1dHRvbltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXJpcHBsZS1lbGVtZW50W19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1zdHJva2VkLWJ1dHRvbltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXJpcHBsZS1lbGVtZW50W19uZ2NvbnRlbnQtJUNPTVAlXXtvcGFjaXR5Oi4xO2JhY2tncm91bmQtY29sb3I6Y3VycmVudENvbG9yfS5tYXQtYnV0dG9uLWZvY3VzLW92ZXJsYXlbX25nY29udGVudC0lQ09NUCVde2JhY2tncm91bmQ6IzAwMH0ubWF0LXN0cm9rZWQtYnV0dG9uW19uZ2NvbnRlbnQtJUNPTVAlXTpub3QoLm1hdC1idXR0b24tZGlzYWJsZWQpe2JvcmRlci1jb2xvcjpyZ2JhKDAsMCwwLC4xMil9Lm1hdC1mbGF0LWJ1dHRvbltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtcmFpc2VkLWJ1dHRvbltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtZmFiW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1taW5pLWZhYltfbmdjb250ZW50LSVDT01QJV17Y29sb3I6IzIxMjEyMTtiYWNrZ3JvdW5kLWNvbG9yOiNmZmZ9Lm1hdC1mbGF0LWJ1dHRvbi5tYXQtcHJpbWFyeVtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtcmFpc2VkLWJ1dHRvbi5tYXQtcHJpbWFyeVtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtZmFiLm1hdC1wcmltYXJ5W19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1taW5pLWZhYi5tYXQtcHJpbWFyeVtfbmdjb250ZW50LSVDT01QJV17Y29sb3I6I2ZmZn0ubWF0LWZsYXQtYnV0dG9uLm1hdC1hY2NlbnRbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXJhaXNlZC1idXR0b24ubWF0LWFjY2VudFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtZmFiLm1hdC1hY2NlbnRbX25nY29udGVudC0lQ09NUCVdLCAubWF0LW1pbmktZmFiLm1hdC1hY2NlbnRbX25nY29udGVudC0lQ09NUCVde2NvbG9yOiNmZmZ9Lm1hdC1mbGF0LWJ1dHRvbi5tYXQtd2Fybltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtcmFpc2VkLWJ1dHRvbi5tYXQtd2Fybltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtZmFiLm1hdC13YXJuW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1taW5pLWZhYi5tYXQtd2Fybltfbmdjb250ZW50LSVDT01QJV17Y29sb3I6I2ZmZn0ubWF0LWZsYXQtYnV0dG9uLm1hdC1wcmltYXJ5Lm1hdC1idXR0b24tZGlzYWJsZWRbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWZsYXQtYnV0dG9uLm1hdC1hY2NlbnQubWF0LWJ1dHRvbi1kaXNhYmxlZFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtZmxhdC1idXR0b24ubWF0LXdhcm4ubWF0LWJ1dHRvbi1kaXNhYmxlZFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtZmxhdC1idXR0b24ubWF0LWJ1dHRvbi1kaXNhYmxlZC5tYXQtYnV0dG9uLWRpc2FibGVkW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1yYWlzZWQtYnV0dG9uLm1hdC1wcmltYXJ5Lm1hdC1idXR0b24tZGlzYWJsZWRbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXJhaXNlZC1idXR0b24ubWF0LWFjY2VudC5tYXQtYnV0dG9uLWRpc2FibGVkW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1yYWlzZWQtYnV0dG9uLm1hdC13YXJuLm1hdC1idXR0b24tZGlzYWJsZWRbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXJhaXNlZC1idXR0b24ubWF0LWJ1dHRvbi1kaXNhYmxlZC5tYXQtYnV0dG9uLWRpc2FibGVkW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1mYWIubWF0LXByaW1hcnkubWF0LWJ1dHRvbi1kaXNhYmxlZFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtZmFiLm1hdC1hY2NlbnQubWF0LWJ1dHRvbi1kaXNhYmxlZFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtZmFiLm1hdC13YXJuLm1hdC1idXR0b24tZGlzYWJsZWRbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWZhYi5tYXQtYnV0dG9uLWRpc2FibGVkLm1hdC1idXR0b24tZGlzYWJsZWRbX25nY29udGVudC0lQ09NUCVdLCAubWF0LW1pbmktZmFiLm1hdC1wcmltYXJ5Lm1hdC1idXR0b24tZGlzYWJsZWRbX25nY29udGVudC0lQ09NUCVdLCAubWF0LW1pbmktZmFiLm1hdC1hY2NlbnQubWF0LWJ1dHRvbi1kaXNhYmxlZFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtbWluaS1mYWIubWF0LXdhcm4ubWF0LWJ1dHRvbi1kaXNhYmxlZFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtbWluaS1mYWIubWF0LWJ1dHRvbi1kaXNhYmxlZC5tYXQtYnV0dG9uLWRpc2FibGVkW19uZ2NvbnRlbnQtJUNPTVAlXXtjb2xvcjpyZ2JhKDAsMCwwLC4yNil9Lm1hdC1mbGF0LWJ1dHRvbi5tYXQtcHJpbWFyeVtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtcmFpc2VkLWJ1dHRvbi5tYXQtcHJpbWFyeVtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtZmFiLm1hdC1wcmltYXJ5W19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1taW5pLWZhYi5tYXQtcHJpbWFyeVtfbmdjb250ZW50LSVDT01QJV17YmFja2dyb3VuZC1jb2xvcjojZjU3YzAwfS5tYXQtZmxhdC1idXR0b24ubWF0LWFjY2VudFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtcmFpc2VkLWJ1dHRvbi5tYXQtYWNjZW50W19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1mYWIubWF0LWFjY2VudFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtbWluaS1mYWIubWF0LWFjY2VudFtfbmdjb250ZW50LSVDT01QJV17YmFja2dyb3VuZC1jb2xvcjojZmY5ODAwfS5tYXQtZmxhdC1idXR0b24ubWF0LXdhcm5bX25nY29udGVudC0lQ09NUCVdLCAubWF0LXJhaXNlZC1idXR0b24ubWF0LXdhcm5bX25nY29udGVudC0lQ09NUCVdLCAubWF0LWZhYi5tYXQtd2Fybltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtbWluaS1mYWIubWF0LXdhcm5bX25nY29udGVudC0lQ09NUCVde2JhY2tncm91bmQtY29sb3I6I2Y0NDMzNn0ubWF0LWZsYXQtYnV0dG9uLm1hdC1wcmltYXJ5Lm1hdC1idXR0b24tZGlzYWJsZWRbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWZsYXQtYnV0dG9uLm1hdC1hY2NlbnQubWF0LWJ1dHRvbi1kaXNhYmxlZFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtZmxhdC1idXR0b24ubWF0LXdhcm4ubWF0LWJ1dHRvbi1kaXNhYmxlZFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtZmxhdC1idXR0b24ubWF0LWJ1dHRvbi1kaXNhYmxlZC5tYXQtYnV0dG9uLWRpc2FibGVkW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1yYWlzZWQtYnV0dG9uLm1hdC1wcmltYXJ5Lm1hdC1idXR0b24tZGlzYWJsZWRbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXJhaXNlZC1idXR0b24ubWF0LWFjY2VudC5tYXQtYnV0dG9uLWRpc2FibGVkW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1yYWlzZWQtYnV0dG9uLm1hdC13YXJuLm1hdC1idXR0b24tZGlzYWJsZWRbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXJhaXNlZC1idXR0b24ubWF0LWJ1dHRvbi1kaXNhYmxlZC5tYXQtYnV0dG9uLWRpc2FibGVkW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1mYWIubWF0LXByaW1hcnkubWF0LWJ1dHRvbi1kaXNhYmxlZFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtZmFiLm1hdC1hY2NlbnQubWF0LWJ1dHRvbi1kaXNhYmxlZFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtZmFiLm1hdC13YXJuLm1hdC1idXR0b24tZGlzYWJsZWRbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWZhYi5tYXQtYnV0dG9uLWRpc2FibGVkLm1hdC1idXR0b24tZGlzYWJsZWRbX25nY29udGVudC0lQ09NUCVdLCAubWF0LW1pbmktZmFiLm1hdC1wcmltYXJ5Lm1hdC1idXR0b24tZGlzYWJsZWRbX25nY29udGVudC0lQ09NUCVdLCAubWF0LW1pbmktZmFiLm1hdC1hY2NlbnQubWF0LWJ1dHRvbi1kaXNhYmxlZFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtbWluaS1mYWIubWF0LXdhcm4ubWF0LWJ1dHRvbi1kaXNhYmxlZFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtbWluaS1mYWIubWF0LWJ1dHRvbi1kaXNhYmxlZC5tYXQtYnV0dG9uLWRpc2FibGVkW19uZ2NvbnRlbnQtJUNPTVAlXXtiYWNrZ3JvdW5kLWNvbG9yOnJnYmEoMCwwLDAsLjEyKX0ubWF0LWZsYXQtYnV0dG9uLm1hdC1wcmltYXJ5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtcmlwcGxlLWVsZW1lbnRbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXJhaXNlZC1idXR0b24ubWF0LXByaW1hcnlbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1yaXBwbGUtZWxlbWVudFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtZmFiLm1hdC1wcmltYXJ5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtcmlwcGxlLWVsZW1lbnRbX25nY29udGVudC0lQ09NUCVdLCAubWF0LW1pbmktZmFiLm1hdC1wcmltYXJ5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtcmlwcGxlLWVsZW1lbnRbX25nY29udGVudC0lQ09NUCVde2JhY2tncm91bmQtY29sb3I6cmdiYSgyNTUsMjU1LDI1NSwuMSl9Lm1hdC1mbGF0LWJ1dHRvbi5tYXQtYWNjZW50W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtcmlwcGxlLWVsZW1lbnRbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXJhaXNlZC1idXR0b24ubWF0LWFjY2VudFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXJpcHBsZS1lbGVtZW50W19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1mYWIubWF0LWFjY2VudFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXJpcHBsZS1lbGVtZW50W19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1taW5pLWZhYi5tYXQtYWNjZW50W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtcmlwcGxlLWVsZW1lbnRbX25nY29udGVudC0lQ09NUCVde2JhY2tncm91bmQtY29sb3I6cmdiYSgyNTUsMjU1LDI1NSwuMSl9Lm1hdC1mbGF0LWJ1dHRvbi5tYXQtd2Fybltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXJpcHBsZS1lbGVtZW50W19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1yYWlzZWQtYnV0dG9uLm1hdC13YXJuW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtcmlwcGxlLWVsZW1lbnRbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWZhYi5tYXQtd2Fybltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXJpcHBsZS1lbGVtZW50W19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1taW5pLWZhYi5tYXQtd2Fybltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXJpcHBsZS1lbGVtZW50W19uZ2NvbnRlbnQtJUNPTVAlXXtiYWNrZ3JvdW5kLWNvbG9yOnJnYmEoMjU1LDI1NSwyNTUsLjEpfS5tYXQtc3Ryb2tlZC1idXR0b25bX25nY29udGVudC0lQ09NUCVdOm5vdChbY2xhc3MqPW1hdC1lbGV2YXRpb24tel0pLCAubWF0LWZsYXQtYnV0dG9uW19uZ2NvbnRlbnQtJUNPTVAlXTpub3QoW2NsYXNzKj1tYXQtZWxldmF0aW9uLXpdKXtib3gtc2hhZG93OjBweCAwcHggMHB4IDBweCByZ2JhKDAsIDAsIDAsIDAuMiksMHB4IDBweCAwcHggMHB4IHJnYmEoMCwgMCwgMCwgMC4xNCksMHB4IDBweCAwcHggMHB4IHJnYmEoMCwgMCwgMCwgMC4xMil9Lm1hdC1yYWlzZWQtYnV0dG9uW19uZ2NvbnRlbnQtJUNPTVAlXTpub3QoW2NsYXNzKj1tYXQtZWxldmF0aW9uLXpdKXtib3gtc2hhZG93OjBweCAzcHggMXB4IC0ycHggcmdiYSgwLCAwLCAwLCAwLjIpLDBweCAycHggMnB4IDBweCByZ2JhKDAsIDAsIDAsIDAuMTQpLDBweCAxcHggNXB4IDBweCByZ2JhKDAsIDAsIDAsIDAuMTIpfS5tYXQtcmFpc2VkLWJ1dHRvbltfbmdjb250ZW50LSVDT01QJV06bm90KC5tYXQtYnV0dG9uLWRpc2FibGVkKTphY3RpdmU6bm90KFtjbGFzcyo9bWF0LWVsZXZhdGlvbi16XSl7Ym94LXNoYWRvdzowcHggNXB4IDVweCAtM3B4IHJnYmEoMCwgMCwgMCwgMC4yKSwwcHggOHB4IDEwcHggMXB4IHJnYmEoMCwgMCwgMCwgMC4xNCksMHB4IDNweCAxNHB4IDJweCByZ2JhKDAsIDAsIDAsIDAuMTIpfS5tYXQtcmFpc2VkLWJ1dHRvbi5tYXQtYnV0dG9uLWRpc2FibGVkW19uZ2NvbnRlbnQtJUNPTVAlXTpub3QoW2NsYXNzKj1tYXQtZWxldmF0aW9uLXpdKXtib3gtc2hhZG93OjBweCAwcHggMHB4IDBweCByZ2JhKDAsIDAsIDAsIDAuMiksMHB4IDBweCAwcHggMHB4IHJnYmEoMCwgMCwgMCwgMC4xNCksMHB4IDBweCAwcHggMHB4IHJnYmEoMCwgMCwgMCwgMC4xMil9Lm1hdC1mYWJbX25nY29udGVudC0lQ09NUCVdOm5vdChbY2xhc3MqPW1hdC1lbGV2YXRpb24tel0pLCAubWF0LW1pbmktZmFiW19uZ2NvbnRlbnQtJUNPTVAlXTpub3QoW2NsYXNzKj1tYXQtZWxldmF0aW9uLXpdKXtib3gtc2hhZG93OjBweCAzcHggNXB4IC0xcHggcmdiYSgwLCAwLCAwLCAwLjIpLDBweCA2cHggMTBweCAwcHggcmdiYSgwLCAwLCAwLCAwLjE0KSwwcHggMXB4IDE4cHggMHB4IHJnYmEoMCwgMCwgMCwgMC4xMil9Lm1hdC1mYWJbX25nY29udGVudC0lQ09NUCVdOm5vdCgubWF0LWJ1dHRvbi1kaXNhYmxlZCk6YWN0aXZlOm5vdChbY2xhc3MqPW1hdC1lbGV2YXRpb24tel0pLCAubWF0LW1pbmktZmFiW19uZ2NvbnRlbnQtJUNPTVAlXTpub3QoLm1hdC1idXR0b24tZGlzYWJsZWQpOmFjdGl2ZTpub3QoW2NsYXNzKj1tYXQtZWxldmF0aW9uLXpdKXtib3gtc2hhZG93OjBweCA3cHggOHB4IC00cHggcmdiYSgwLCAwLCAwLCAwLjIpLDBweCAxMnB4IDE3cHggMnB4IHJnYmEoMCwgMCwgMCwgMC4xNCksMHB4IDVweCAyMnB4IDRweCByZ2JhKDAsIDAsIDAsIDAuMTIpfS5tYXQtZmFiLm1hdC1idXR0b24tZGlzYWJsZWRbX25nY29udGVudC0lQ09NUCVdOm5vdChbY2xhc3MqPW1hdC1lbGV2YXRpb24tel0pLCAubWF0LW1pbmktZmFiLm1hdC1idXR0b24tZGlzYWJsZWRbX25nY29udGVudC0lQ09NUCVdOm5vdChbY2xhc3MqPW1hdC1lbGV2YXRpb24tel0pe2JveC1zaGFkb3c6MHB4IDBweCAwcHggMHB4IHJnYmEoMCwgMCwgMCwgMC4yKSwwcHggMHB4IDBweCAwcHggcmdiYSgwLCAwLCAwLCAwLjE0KSwwcHggMHB4IDBweCAwcHggcmdiYSgwLCAwLCAwLCAwLjEyKX0ubWF0LWJ1dHRvbi10b2dnbGUtc3RhbmRhbG9uZVtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtYnV0dG9uLXRvZ2dsZS1ncm91cFtfbmdjb250ZW50LSVDT01QJV17Ym94LXNoYWRvdzowcHggM3B4IDFweCAtMnB4IHJnYmEoMCwgMCwgMCwgMC4yKSwwcHggMnB4IDJweCAwcHggcmdiYSgwLCAwLCAwLCAwLjE0KSwwcHggMXB4IDVweCAwcHggcmdiYSgwLCAwLCAwLCAwLjEyKX0ubWF0LWJ1dHRvbi10b2dnbGUtc3RhbmRhbG9uZS5tYXQtYnV0dG9uLXRvZ2dsZS1hcHBlYXJhbmNlLXN0YW5kYXJkW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1idXR0b24tdG9nZ2xlLWdyb3VwLWFwcGVhcmFuY2Utc3RhbmRhcmRbX25nY29udGVudC0lQ09NUCVde2JveC1zaGFkb3c6bm9uZX0ubWF0LWJ1dHRvbi10b2dnbGVbX25nY29udGVudC0lQ09NUCVde2NvbG9yOnJnYmEoMCwwLDAsLjM4KX0ubWF0LWJ1dHRvbi10b2dnbGVbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1idXR0b24tdG9nZ2xlLWZvY3VzLW92ZXJsYXlbX25nY29udGVudC0lQ09NUCVde2JhY2tncm91bmQtY29sb3I6cmdiYSgwLDAsMCwuMTIpfS5tYXQtYnV0dG9uLXRvZ2dsZS1hcHBlYXJhbmNlLXN0YW5kYXJkW19uZ2NvbnRlbnQtJUNPTVAlXXtjb2xvcjojMjEyMTIxO2JhY2tncm91bmQ6I2ZmZn0ubWF0LWJ1dHRvbi10b2dnbGUtYXBwZWFyYW5jZS1zdGFuZGFyZFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWJ1dHRvbi10b2dnbGUtZm9jdXMtb3ZlcmxheVtfbmdjb250ZW50LSVDT01QJV17YmFja2dyb3VuZC1jb2xvcjojMDAwfS5tYXQtYnV0dG9uLXRvZ2dsZS1ncm91cC1hcHBlYXJhbmNlLXN0YW5kYXJkW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtYnV0dG9uLXRvZ2dsZVtfbmdjb250ZW50LSVDT01QJV0gKyAubWF0LWJ1dHRvbi10b2dnbGVbX25nY29udGVudC0lQ09NUCVde2JvcmRlci1sZWZ0OnNvbGlkIDFweCByZ2JhKDAsMCwwLC4xMil9W2Rpcj1ydGxdW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtYnV0dG9uLXRvZ2dsZS1ncm91cC1hcHBlYXJhbmNlLXN0YW5kYXJkW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtYnV0dG9uLXRvZ2dsZVtfbmdjb250ZW50LSVDT01QJV0gKyAubWF0LWJ1dHRvbi10b2dnbGVbX25nY29udGVudC0lQ09NUCVde2JvcmRlci1sZWZ0Om5vbmU7Ym9yZGVyLXJpZ2h0OnNvbGlkIDFweCByZ2JhKDAsMCwwLC4xMil9Lm1hdC1idXR0b24tdG9nZ2xlLWdyb3VwLWFwcGVhcmFuY2Utc3RhbmRhcmQubWF0LWJ1dHRvbi10b2dnbGUtdmVydGljYWxbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1idXR0b24tdG9nZ2xlW19uZ2NvbnRlbnQtJUNPTVAlXSArIC5tYXQtYnV0dG9uLXRvZ2dsZVtfbmdjb250ZW50LSVDT01QJV17Ym9yZGVyLWxlZnQ6bm9uZTtib3JkZXItcmlnaHQ6bm9uZTtib3JkZXItdG9wOnNvbGlkIDFweCByZ2JhKDAsMCwwLC4xMil9Lm1hdC1idXR0b24tdG9nZ2xlLWNoZWNrZWRbX25nY29udGVudC0lQ09NUCVde2JhY2tncm91bmQtY29sb3I6I2UwZTBlMDtjb2xvcjojNjE2MTYxfS5tYXQtYnV0dG9uLXRvZ2dsZS1jaGVja2VkLm1hdC1idXR0b24tdG9nZ2xlLWFwcGVhcmFuY2Utc3RhbmRhcmRbX25nY29udGVudC0lQ09NUCVde2NvbG9yOiMyMTIxMjF9Lm1hdC1idXR0b24tdG9nZ2xlLWRpc2FibGVkW19uZ2NvbnRlbnQtJUNPTVAlXXtjb2xvcjpyZ2JhKDAsMCwwLC4yNik7YmFja2dyb3VuZC1jb2xvcjojZWVlfS5tYXQtYnV0dG9uLXRvZ2dsZS1kaXNhYmxlZC5tYXQtYnV0dG9uLXRvZ2dsZS1hcHBlYXJhbmNlLXN0YW5kYXJkW19uZ2NvbnRlbnQtJUNPTVAlXXtiYWNrZ3JvdW5kOiNmZmZ9Lm1hdC1idXR0b24tdG9nZ2xlLWRpc2FibGVkLm1hdC1idXR0b24tdG9nZ2xlLWNoZWNrZWRbX25nY29udGVudC0lQ09NUCVde2JhY2tncm91bmQtY29sb3I6I2JkYmRiZH0ubWF0LWJ1dHRvbi10b2dnbGUtc3RhbmRhbG9uZS5tYXQtYnV0dG9uLXRvZ2dsZS1hcHBlYXJhbmNlLXN0YW5kYXJkW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1idXR0b24tdG9nZ2xlLWdyb3VwLWFwcGVhcmFuY2Utc3RhbmRhcmRbX25nY29udGVudC0lQ09NUCVde2JvcmRlcjpzb2xpZCAxcHggcmdiYSgwLDAsMCwuMTIpfS5tYXQtYnV0dG9uLXRvZ2dsZS1hcHBlYXJhbmNlLXN0YW5kYXJkW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtYnV0dG9uLXRvZ2dsZS1sYWJlbC1jb250ZW50W19uZ2NvbnRlbnQtJUNPTVAlXXtsaW5lLWhlaWdodDo0OHB4fS5tYXQtY2FyZFtfbmdjb250ZW50LSVDT01QJV17YmFja2dyb3VuZDojZmZmO2NvbG9yOiMyMTIxMjF9Lm1hdC1jYXJkW19uZ2NvbnRlbnQtJUNPTVAlXTpub3QoW2NsYXNzKj1tYXQtZWxldmF0aW9uLXpdKXtib3gtc2hhZG93OjBweCAycHggMXB4IC0xcHggcmdiYSgwLCAwLCAwLCAwLjIpLDBweCAxcHggMXB4IDBweCByZ2JhKDAsIDAsIDAsIDAuMTQpLDBweCAxcHggM3B4IDBweCByZ2JhKDAsIDAsIDAsIDAuMTIpfS5tYXQtY2FyZC5tYXQtY2FyZC1mbGF0W19uZ2NvbnRlbnQtJUNPTVAlXTpub3QoW2NsYXNzKj1tYXQtZWxldmF0aW9uLXpdKXtib3gtc2hhZG93OjBweCAwcHggMHB4IDBweCByZ2JhKDAsIDAsIDAsIDAuMiksMHB4IDBweCAwcHggMHB4IHJnYmEoMCwgMCwgMCwgMC4xNCksMHB4IDBweCAwcHggMHB4IHJnYmEoMCwgMCwgMCwgMC4xMil9Lm1hdC1jYXJkLXN1YnRpdGxlW19uZ2NvbnRlbnQtJUNPTVAlXXtjb2xvcjojNjE2MTYxfS5tYXQtY2hlY2tib3gtZnJhbWVbX25nY29udGVudC0lQ09NUCVde2JvcmRlci1jb2xvcjojNjE2MTYxfS5tYXQtY2hlY2tib3gtY2hlY2ttYXJrW19uZ2NvbnRlbnQtJUNPTVAlXXtmaWxsOiNmYWZhZmF9Lm1hdC1jaGVja2JveC1jaGVja21hcmstcGF0aFtfbmdjb250ZW50LSVDT01QJV17c3Ryb2tlOiNmYWZhZmEgIWltcG9ydGFudH0ubWF0LWNoZWNrYm94LW1peGVkbWFya1tfbmdjb250ZW50LSVDT01QJV17YmFja2dyb3VuZC1jb2xvcjojZmFmYWZhfS5tYXQtY2hlY2tib3gtaW5kZXRlcm1pbmF0ZS5tYXQtcHJpbWFyeVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWNoZWNrYm94LWJhY2tncm91bmRbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWNoZWNrYm94LWNoZWNrZWQubWF0LXByaW1hcnlbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1jaGVja2JveC1iYWNrZ3JvdW5kW19uZ2NvbnRlbnQtJUNPTVAlXXtiYWNrZ3JvdW5kLWNvbG9yOiNmNTdjMDB9Lm1hdC1jaGVja2JveC1pbmRldGVybWluYXRlLm1hdC1hY2NlbnRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1jaGVja2JveC1iYWNrZ3JvdW5kW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1jaGVja2JveC1jaGVja2VkLm1hdC1hY2NlbnRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1jaGVja2JveC1iYWNrZ3JvdW5kW19uZ2NvbnRlbnQtJUNPTVAlXXtiYWNrZ3JvdW5kLWNvbG9yOiNmZjk4MDB9Lm1hdC1jaGVja2JveC1pbmRldGVybWluYXRlLm1hdC13YXJuW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtY2hlY2tib3gtYmFja2dyb3VuZFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtY2hlY2tib3gtY2hlY2tlZC5tYXQtd2Fybltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWNoZWNrYm94LWJhY2tncm91bmRbX25nY29udGVudC0lQ09NUCVde2JhY2tncm91bmQtY29sb3I6I2Y0NDMzNn0ubWF0LWNoZWNrYm94LWRpc2FibGVkLm1hdC1jaGVja2JveC1jaGVja2VkW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtY2hlY2tib3gtYmFja2dyb3VuZFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtY2hlY2tib3gtZGlzYWJsZWQubWF0LWNoZWNrYm94LWluZGV0ZXJtaW5hdGVbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1jaGVja2JveC1iYWNrZ3JvdW5kW19uZ2NvbnRlbnQtJUNPTVAlXXtiYWNrZ3JvdW5kLWNvbG9yOiNiMGIwYjB9Lm1hdC1jaGVja2JveC1kaXNhYmxlZFtfbmdjb250ZW50LSVDT01QJV06bm90KC5tYXQtY2hlY2tib3gtY2hlY2tlZCkgICAubWF0LWNoZWNrYm94LWZyYW1lW19uZ2NvbnRlbnQtJUNPTVAlXXtib3JkZXItY29sb3I6I2IwYjBiMH0ubWF0LWNoZWNrYm94LWRpc2FibGVkW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtY2hlY2tib3gtbGFiZWxbX25nY29udGVudC0lQ09NUCVde2NvbG9yOiM2MTYxNjF9Lm1hdC1jaGVja2JveFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXJpcHBsZS1lbGVtZW50W19uZ2NvbnRlbnQtJUNPTVAlXXtiYWNrZ3JvdW5kLWNvbG9yOiMwMDB9Lm1hdC1jaGVja2JveC1jaGVja2VkW19uZ2NvbnRlbnQtJUNPTVAlXTpub3QoLm1hdC1jaGVja2JveC1kaXNhYmxlZCkubWF0LXByaW1hcnkgICAubWF0LXJpcHBsZS1lbGVtZW50W19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1jaGVja2JveFtfbmdjb250ZW50LSVDT01QJV06YWN0aXZlOm5vdCgubWF0LWNoZWNrYm94LWRpc2FibGVkKS5tYXQtcHJpbWFyeSAgIC5tYXQtcmlwcGxlLWVsZW1lbnRbX25nY29udGVudC0lQ09NUCVde2JhY2tncm91bmQ6I2Y1N2MwMH0ubWF0LWNoZWNrYm94LWNoZWNrZWRbX25nY29udGVudC0lQ09NUCVdOm5vdCgubWF0LWNoZWNrYm94LWRpc2FibGVkKS5tYXQtYWNjZW50ICAgLm1hdC1yaXBwbGUtZWxlbWVudFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtY2hlY2tib3hbX25nY29udGVudC0lQ09NUCVdOmFjdGl2ZTpub3QoLm1hdC1jaGVja2JveC1kaXNhYmxlZCkubWF0LWFjY2VudCAgIC5tYXQtcmlwcGxlLWVsZW1lbnRbX25nY29udGVudC0lQ09NUCVde2JhY2tncm91bmQ6I2ZmOTgwMH0ubWF0LWNoZWNrYm94LWNoZWNrZWRbX25nY29udGVudC0lQ09NUCVdOm5vdCgubWF0LWNoZWNrYm94LWRpc2FibGVkKS5tYXQtd2FybiAgIC5tYXQtcmlwcGxlLWVsZW1lbnRbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWNoZWNrYm94W19uZ2NvbnRlbnQtJUNPTVAlXTphY3RpdmU6bm90KC5tYXQtY2hlY2tib3gtZGlzYWJsZWQpLm1hdC13YXJuICAgLm1hdC1yaXBwbGUtZWxlbWVudFtfbmdjb250ZW50LSVDT01QJV17YmFja2dyb3VuZDojZjQ0MzM2fS5tYXQtY2hpcC5tYXQtc3RhbmRhcmQtY2hpcFtfbmdjb250ZW50LSVDT01QJV17YmFja2dyb3VuZC1jb2xvcjojZTBlMGUwO2NvbG9yOiMyMTIxMjF9Lm1hdC1jaGlwLm1hdC1zdGFuZGFyZC1jaGlwW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtY2hpcC1yZW1vdmVbX25nY29udGVudC0lQ09NUCVde2NvbG9yOiMyMTIxMjE7b3BhY2l0eTouNH0ubWF0LWNoaXAubWF0LXN0YW5kYXJkLWNoaXBbX25nY29udGVudC0lQ09NUCVdOm5vdCgubWF0LWNoaXAtZGlzYWJsZWQpOmFjdGl2ZXtib3gtc2hhZG93OjBweCAzcHggM3B4IC0ycHggcmdiYSgwLCAwLCAwLCAwLjIpLDBweCAzcHggNHB4IDBweCByZ2JhKDAsIDAsIDAsIDAuMTQpLDBweCAxcHggOHB4IDBweCByZ2JhKDAsIDAsIDAsIDAuMTIpfS5tYXQtY2hpcC5tYXQtc3RhbmRhcmQtY2hpcFtfbmdjb250ZW50LSVDT01QJV06bm90KC5tYXQtY2hpcC1kaXNhYmxlZCkgICAubWF0LWNoaXAtcmVtb3ZlW19uZ2NvbnRlbnQtJUNPTVAlXTpob3ZlcntvcGFjaXR5Oi41NH0ubWF0LWNoaXAubWF0LXN0YW5kYXJkLWNoaXAubWF0LWNoaXAtZGlzYWJsZWRbX25nY29udGVudC0lQ09NUCVde29wYWNpdHk6LjR9Lm1hdC1jaGlwLm1hdC1zdGFuZGFyZC1jaGlwW19uZ2NvbnRlbnQtJUNPTVAlXTo6YWZ0ZXJ7YmFja2dyb3VuZDojMDAwfS5tYXQtY2hpcC5tYXQtc3RhbmRhcmQtY2hpcC5tYXQtY2hpcC1zZWxlY3RlZC5tYXQtcHJpbWFyeVtfbmdjb250ZW50LSVDT01QJV17YmFja2dyb3VuZC1jb2xvcjojZjU3YzAwO2NvbG9yOiNmZmZ9Lm1hdC1jaGlwLm1hdC1zdGFuZGFyZC1jaGlwLm1hdC1jaGlwLXNlbGVjdGVkLm1hdC1wcmltYXJ5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtY2hpcC1yZW1vdmVbX25nY29udGVudC0lQ09NUCVde2NvbG9yOiNmZmY7b3BhY2l0eTouNH0ubWF0LWNoaXAubWF0LXN0YW5kYXJkLWNoaXAubWF0LWNoaXAtc2VsZWN0ZWQubWF0LXByaW1hcnlbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1yaXBwbGUtZWxlbWVudFtfbmdjb250ZW50LSVDT01QJV17YmFja2dyb3VuZC1jb2xvcjpyZ2JhKDI1NSwyNTUsMjU1LC4xKX0ubWF0LWNoaXAubWF0LXN0YW5kYXJkLWNoaXAubWF0LWNoaXAtc2VsZWN0ZWQubWF0LXdhcm5bX25nY29udGVudC0lQ09NUCVde2JhY2tncm91bmQtY29sb3I6I2Y0NDMzNjtjb2xvcjojZmZmfS5tYXQtY2hpcC5tYXQtc3RhbmRhcmQtY2hpcC5tYXQtY2hpcC1zZWxlY3RlZC5tYXQtd2Fybltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWNoaXAtcmVtb3ZlW19uZ2NvbnRlbnQtJUNPTVAlXXtjb2xvcjojZmZmO29wYWNpdHk6LjR9Lm1hdC1jaGlwLm1hdC1zdGFuZGFyZC1jaGlwLm1hdC1jaGlwLXNlbGVjdGVkLm1hdC13YXJuW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtcmlwcGxlLWVsZW1lbnRbX25nY29udGVudC0lQ09NUCVde2JhY2tncm91bmQtY29sb3I6cmdiYSgyNTUsMjU1LDI1NSwuMSl9Lm1hdC1jaGlwLm1hdC1zdGFuZGFyZC1jaGlwLm1hdC1jaGlwLXNlbGVjdGVkLm1hdC1hY2NlbnRbX25nY29udGVudC0lQ09NUCVde2JhY2tncm91bmQtY29sb3I6I2ZmOTgwMDtjb2xvcjojZmZmfS5tYXQtY2hpcC5tYXQtc3RhbmRhcmQtY2hpcC5tYXQtY2hpcC1zZWxlY3RlZC5tYXQtYWNjZW50W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtY2hpcC1yZW1vdmVbX25nY29udGVudC0lQ09NUCVde2NvbG9yOiNmZmY7b3BhY2l0eTouNH0ubWF0LWNoaXAubWF0LXN0YW5kYXJkLWNoaXAubWF0LWNoaXAtc2VsZWN0ZWQubWF0LWFjY2VudFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXJpcHBsZS1lbGVtZW50W19uZ2NvbnRlbnQtJUNPTVAlXXtiYWNrZ3JvdW5kLWNvbG9yOnJnYmEoMjU1LDI1NSwyNTUsLjEpfS5tYXQtdGFibGVbX25nY29udGVudC0lQ09NUCVde2JhY2tncm91bmQ6I2ZmZn0ubWF0LXRhYmxlW19uZ2NvbnRlbnQtJUNPTVAlXSAgIHRoZWFkW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10YWJsZVtfbmdjb250ZW50LSVDT01QJV0gICB0Ym9keVtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdGFibGVbX25nY29udGVudC0lQ09NUCVdICAgdGZvb3RbX25nY29udGVudC0lQ09NUCVdLCBtYXQtaGVhZGVyLXJvd1tfbmdjb250ZW50LSVDT01QJV0sIG1hdC1yb3dbX25nY29udGVudC0lQ09NUCVdLCBtYXQtZm9vdGVyLXJvd1tfbmdjb250ZW50LSVDT01QJV0sIFttYXQtaGVhZGVyLXJvd11bX25nY29udGVudC0lQ09NUCVdLCBbbWF0LXJvd11bX25nY29udGVudC0lQ09NUCVdLCBbbWF0LWZvb3Rlci1yb3ddW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10YWJsZS1zdGlja3lbX25nY29udGVudC0lQ09NUCVde2JhY2tncm91bmQ6aW5oZXJpdH1tYXQtcm93W19uZ2NvbnRlbnQtJUNPTVAlXSwgbWF0LWhlYWRlci1yb3dbX25nY29udGVudC0lQ09NUCVdLCBtYXQtZm9vdGVyLXJvd1tfbmdjb250ZW50LSVDT01QJV0sIHRoLm1hdC1oZWFkZXItY2VsbFtfbmdjb250ZW50LSVDT01QJV0sIHRkLm1hdC1jZWxsW19uZ2NvbnRlbnQtJUNPTVAlXSwgdGQubWF0LWZvb3Rlci1jZWxsW19uZ2NvbnRlbnQtJUNPTVAlXXtib3JkZXItYm90dG9tLWNvbG9yOnJnYmEoMCwwLDAsLjEyKX0ubWF0LWhlYWRlci1jZWxsW19uZ2NvbnRlbnQtJUNPTVAlXXtjb2xvcjojNjE2MTYxfS5tYXQtY2VsbFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtZm9vdGVyLWNlbGxbX25nY29udGVudC0lQ09NUCVde2NvbG9yOiMyMTIxMjF9Lm1hdC1jYWxlbmRhci1hcnJvd1tfbmdjb250ZW50LSVDT01QJV17Ym9yZGVyLXRvcC1jb2xvcjpyZ2JhKDAsMCwwLC41NCl9Lm1hdC1kYXRlcGlja2VyLXRvZ2dsZVtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtZGF0ZXBpY2tlci1jb250ZW50W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtY2FsZW5kYXItbmV4dC1idXR0b25bX25nY29udGVudC0lQ09NUCVdLCAubWF0LWRhdGVwaWNrZXItY29udGVudFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWNhbGVuZGFyLXByZXZpb3VzLWJ1dHRvbltfbmdjb250ZW50LSVDT01QJV17Y29sb3I6cmdiYSgwLDAsMCwuNTQpfS5tYXQtY2FsZW5kYXItdGFibGUtaGVhZGVyW19uZ2NvbnRlbnQtJUNPTVAlXXtjb2xvcjpyZ2JhKDAsMCwwLC4zOCl9Lm1hdC1jYWxlbmRhci10YWJsZS1oZWFkZXItZGl2aWRlcltfbmdjb250ZW50LSVDT01QJV06OmFmdGVye2JhY2tncm91bmQ6cmdiYSgwLDAsMCwuMTIpfS5tYXQtY2FsZW5kYXItYm9keS1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17Y29sb3I6IzYxNjE2MX0ubWF0LWNhbGVuZGFyLWJvZHktY2VsbC1jb250ZW50W19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1kYXRlLXJhbmdlLWlucHV0LXNlcGFyYXRvcltfbmdjb250ZW50LSVDT01QJV17Y29sb3I6IzIxMjEyMTtib3JkZXItY29sb3I6dHJhbnNwYXJlbnR9Lm1hdC1jYWxlbmRhci1ib2R5LWRpc2FibGVkW19uZ2NvbnRlbnQtJUNPTVAlXSA+IC5tYXQtY2FsZW5kYXItYm9keS1jZWxsLWNvbnRlbnRbX25nY29udGVudC0lQ09NUCVdOm5vdCgubWF0LWNhbGVuZGFyLWJvZHktc2VsZWN0ZWQpOm5vdCgubWF0LWNhbGVuZGFyLWJvZHktY29tcGFyaXNvbi1pZGVudGljYWwpe2NvbG9yOiM3NTc1NzV9Lm1hdC1mb3JtLWZpZWxkLWRpc2FibGVkW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZGF0ZS1yYW5nZS1pbnB1dC1zZXBhcmF0b3JbX25nY29udGVudC0lQ09NUCVde2NvbG9yOiM3NTc1NzV9Lm1hdC1jYWxlbmRhci1ib2R5LWNlbGxbX25nY29udGVudC0lQ09NUCVdOm5vdCgubWF0LWNhbGVuZGFyLWJvZHktZGlzYWJsZWQpOmhvdmVyID4gLm1hdC1jYWxlbmRhci1ib2R5LWNlbGwtY29udGVudFtfbmdjb250ZW50LSVDT01QJV06bm90KC5tYXQtY2FsZW5kYXItYm9keS1zZWxlY3RlZCk6bm90KC5tYXQtY2FsZW5kYXItYm9keS1jb21wYXJpc29uLWlkZW50aWNhbCksIC5jZGsta2V5Ym9hcmQtZm9jdXNlZFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWNhbGVuZGFyLWJvZHktYWN0aXZlW19uZ2NvbnRlbnQtJUNPTVAlXSA+IC5tYXQtY2FsZW5kYXItYm9keS1jZWxsLWNvbnRlbnRbX25nY29udGVudC0lQ09NUCVdOm5vdCgubWF0LWNhbGVuZGFyLWJvZHktc2VsZWN0ZWQpOm5vdCgubWF0LWNhbGVuZGFyLWJvZHktY29tcGFyaXNvbi1pZGVudGljYWwpLCAuY2RrLXByb2dyYW0tZm9jdXNlZFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWNhbGVuZGFyLWJvZHktYWN0aXZlW19uZ2NvbnRlbnQtJUNPTVAlXSA+IC5tYXQtY2FsZW5kYXItYm9keS1jZWxsLWNvbnRlbnRbX25nY29udGVudC0lQ09NUCVdOm5vdCgubWF0LWNhbGVuZGFyLWJvZHktc2VsZWN0ZWQpOm5vdCgubWF0LWNhbGVuZGFyLWJvZHktY29tcGFyaXNvbi1pZGVudGljYWwpe2JhY2tncm91bmQtY29sb3I6cmdiYSgwLDAsMCwuMDQpfS5tYXQtY2FsZW5kYXItYm9keS1pbi1wcmV2aWV3W19uZ2NvbnRlbnQtJUNPTVAlXXtjb2xvcjpyZ2JhKDAsMCwwLC4yNCl9Lm1hdC1jYWxlbmRhci1ib2R5LXRvZGF5W19uZ2NvbnRlbnQtJUNPTVAlXTpub3QoLm1hdC1jYWxlbmRhci1ib2R5LXNlbGVjdGVkKTpub3QoLm1hdC1jYWxlbmRhci1ib2R5LWNvbXBhcmlzb24taWRlbnRpY2FsKXtib3JkZXItY29sb3I6cmdiYSgwLDAsMCwuMzgpfS5tYXQtY2FsZW5kYXItYm9keS1kaXNhYmxlZFtfbmdjb250ZW50LSVDT01QJV0gPiAubWF0LWNhbGVuZGFyLWJvZHktdG9kYXlbX25nY29udGVudC0lQ09NUCVdOm5vdCgubWF0LWNhbGVuZGFyLWJvZHktc2VsZWN0ZWQpOm5vdCgubWF0LWNhbGVuZGFyLWJvZHktY29tcGFyaXNvbi1pZGVudGljYWwpe2JvcmRlci1jb2xvcjpyZ2JhKDAsMCwwLC4xOCl9Lm1hdC1jYWxlbmRhci1ib2R5LWluLXJhbmdlW19uZ2NvbnRlbnQtJUNPTVAlXTo6YmVmb3Jle2JhY2tncm91bmQ6cmdiYSgyNDUsMTI0LDAsLjIpfS5tYXQtY2FsZW5kYXItYm9keS1jb21wYXJpc29uLWlkZW50aWNhbFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtY2FsZW5kYXItYm9keS1pbi1jb21wYXJpc29uLXJhbmdlW19uZ2NvbnRlbnQtJUNPTVAlXTo6YmVmb3Jle2JhY2tncm91bmQ6cmdiYSgyNDksMTcxLDAsLjIpfS5tYXQtY2FsZW5kYXItYm9keS1jb21wYXJpc29uLWJyaWRnZS1zdGFydFtfbmdjb250ZW50LSVDT01QJV06OmJlZm9yZSwgW2Rpcj1ydGxdW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtY2FsZW5kYXItYm9keS1jb21wYXJpc29uLWJyaWRnZS1lbmRbX25nY29udGVudC0lQ09NUCVdOjpiZWZvcmV7YmFja2dyb3VuZDpsaW5lYXItZ3JhZGllbnQodG8gcmlnaHQsIHJnYmEoMjQ1LCAxMjQsIDAsIDAuMikgNTAlLCByZ2JhKDI0OSwgMTcxLCAwLCAwLjIpIDUwJSl9Lm1hdC1jYWxlbmRhci1ib2R5LWNvbXBhcmlzb24tYnJpZGdlLWVuZFtfbmdjb250ZW50LSVDT01QJV06OmJlZm9yZSwgW2Rpcj1ydGxdW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtY2FsZW5kYXItYm9keS1jb21wYXJpc29uLWJyaWRnZS1zdGFydFtfbmdjb250ZW50LSVDT01QJV06OmJlZm9yZXtiYWNrZ3JvdW5kOmxpbmVhci1ncmFkaWVudCh0byBsZWZ0LCByZ2JhKDI0NSwgMTI0LCAwLCAwLjIpIDUwJSwgcmdiYSgyNDksIDE3MSwgMCwgMC4yKSA1MCUpfS5tYXQtY2FsZW5kYXItYm9keS1pbi1yYW5nZVtfbmdjb250ZW50LSVDT01QJV0gPiAubWF0LWNhbGVuZGFyLWJvZHktY29tcGFyaXNvbi1pZGVudGljYWxbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWNhbGVuZGFyLWJvZHktaW4tY29tcGFyaXNvbi1yYW5nZS5tYXQtY2FsZW5kYXItYm9keS1pbi1yYW5nZVtfbmdjb250ZW50LSVDT01QJV06OmFmdGVye2JhY2tncm91bmQ6I2E4ZGFiNX0ubWF0LWNhbGVuZGFyLWJvZHktY29tcGFyaXNvbi1pZGVudGljYWwubWF0LWNhbGVuZGFyLWJvZHktc2VsZWN0ZWRbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWNhbGVuZGFyLWJvZHktaW4tY29tcGFyaXNvbi1yYW5nZVtfbmdjb250ZW50LSVDT01QJV0gPiAubWF0LWNhbGVuZGFyLWJvZHktc2VsZWN0ZWRbX25nY29udGVudC0lQ09NUCVde2JhY2tncm91bmQ6IzQ2YTM1ZX0ubWF0LWNhbGVuZGFyLWJvZHktc2VsZWN0ZWRbX25nY29udGVudC0lQ09NUCVde2JhY2tncm91bmQtY29sb3I6I2Y1N2MwMDtjb2xvcjojZmZmfS5tYXQtY2FsZW5kYXItYm9keS1kaXNhYmxlZFtfbmdjb250ZW50LSVDT01QJV0gPiAubWF0LWNhbGVuZGFyLWJvZHktc2VsZWN0ZWRbX25nY29udGVudC0lQ09NUCVde2JhY2tncm91bmQtY29sb3I6cmdiYSgyNDUsMTI0LDAsLjQpfS5tYXQtY2FsZW5kYXItYm9keS10b2RheS5tYXQtY2FsZW5kYXItYm9keS1zZWxlY3RlZFtfbmdjb250ZW50LSVDT01QJV17Ym94LXNoYWRvdzppbnNldCAwIDAgMCAxcHggI2ZmZn0ubWF0LWRhdGVwaWNrZXItY29udGVudFtfbmdjb250ZW50LSVDT01QJV17Ym94LXNoYWRvdzowcHggMnB4IDRweCAtMXB4IHJnYmEoMCwgMCwgMCwgMC4yKSwwcHggNHB4IDVweCAwcHggcmdiYSgwLCAwLCAwLCAwLjE0KSwwcHggMXB4IDEwcHggMHB4IHJnYmEoMCwgMCwgMCwgMC4xMik7YmFja2dyb3VuZC1jb2xvcjojZmZmO2NvbG9yOiMyMTIxMjF9Lm1hdC1kYXRlcGlja2VyLWNvbnRlbnQubWF0LWFjY2VudFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWNhbGVuZGFyLWJvZHktaW4tcmFuZ2VbX25nY29udGVudC0lQ09NUCVdOjpiZWZvcmV7YmFja2dyb3VuZDpyZ2JhKDI1NSwxNTIsMCwuMil9Lm1hdC1kYXRlcGlja2VyLWNvbnRlbnQubWF0LWFjY2VudFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWNhbGVuZGFyLWJvZHktY29tcGFyaXNvbi1pZGVudGljYWxbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWRhdGVwaWNrZXItY29udGVudC5tYXQtYWNjZW50W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtY2FsZW5kYXItYm9keS1pbi1jb21wYXJpc29uLXJhbmdlW19uZ2NvbnRlbnQtJUNPTVAlXTo6YmVmb3Jle2JhY2tncm91bmQ6cmdiYSgyNDksMTcxLDAsLjIpfS5tYXQtZGF0ZXBpY2tlci1jb250ZW50Lm1hdC1hY2NlbnRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1jYWxlbmRhci1ib2R5LWNvbXBhcmlzb24tYnJpZGdlLXN0YXJ0W19uZ2NvbnRlbnQtJUNPTVAlXTo6YmVmb3JlLCAubWF0LWRhdGVwaWNrZXItY29udGVudC5tYXQtYWNjZW50W19uZ2NvbnRlbnQtJUNPTVAlXSAgIFtkaXI9cnRsXVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWNhbGVuZGFyLWJvZHktY29tcGFyaXNvbi1icmlkZ2UtZW5kW19uZ2NvbnRlbnQtJUNPTVAlXTo6YmVmb3Jle2JhY2tncm91bmQ6bGluZWFyLWdyYWRpZW50KHRvIHJpZ2h0LCByZ2JhKDI1NSwgMTUyLCAwLCAwLjIpIDUwJSwgcmdiYSgyNDksIDE3MSwgMCwgMC4yKSA1MCUpfS5tYXQtZGF0ZXBpY2tlci1jb250ZW50Lm1hdC1hY2NlbnRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1jYWxlbmRhci1ib2R5LWNvbXBhcmlzb24tYnJpZGdlLWVuZFtfbmdjb250ZW50LSVDT01QJV06OmJlZm9yZSwgLm1hdC1kYXRlcGlja2VyLWNvbnRlbnQubWF0LWFjY2VudFtfbmdjb250ZW50LSVDT01QJV0gICBbZGlyPXJ0bF1bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1jYWxlbmRhci1ib2R5LWNvbXBhcmlzb24tYnJpZGdlLXN0YXJ0W19uZ2NvbnRlbnQtJUNPTVAlXTo6YmVmb3Jle2JhY2tncm91bmQ6bGluZWFyLWdyYWRpZW50KHRvIGxlZnQsIHJnYmEoMjU1LCAxNTIsIDAsIDAuMikgNTAlLCByZ2JhKDI0OSwgMTcxLCAwLCAwLjIpIDUwJSl9Lm1hdC1kYXRlcGlja2VyLWNvbnRlbnQubWF0LWFjY2VudFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWNhbGVuZGFyLWJvZHktaW4tcmFuZ2VbX25nY29udGVudC0lQ09NUCVdID4gLm1hdC1jYWxlbmRhci1ib2R5LWNvbXBhcmlzb24taWRlbnRpY2FsW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1kYXRlcGlja2VyLWNvbnRlbnQubWF0LWFjY2VudFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWNhbGVuZGFyLWJvZHktaW4tY29tcGFyaXNvbi1yYW5nZS5tYXQtY2FsZW5kYXItYm9keS1pbi1yYW5nZVtfbmdjb250ZW50LSVDT01QJV06OmFmdGVye2JhY2tncm91bmQ6I2E4ZGFiNX0ubWF0LWRhdGVwaWNrZXItY29udGVudC5tYXQtYWNjZW50W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtY2FsZW5kYXItYm9keS1jb21wYXJpc29uLWlkZW50aWNhbC5tYXQtY2FsZW5kYXItYm9keS1zZWxlY3RlZFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtZGF0ZXBpY2tlci1jb250ZW50Lm1hdC1hY2NlbnRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1jYWxlbmRhci1ib2R5LWluLWNvbXBhcmlzb24tcmFuZ2VbX25nY29udGVudC0lQ09NUCVdID4gLm1hdC1jYWxlbmRhci1ib2R5LXNlbGVjdGVkW19uZ2NvbnRlbnQtJUNPTVAlXXtiYWNrZ3JvdW5kOiM0NmEzNWV9Lm1hdC1kYXRlcGlja2VyLWNvbnRlbnQubWF0LWFjY2VudFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWNhbGVuZGFyLWJvZHktc2VsZWN0ZWRbX25nY29udGVudC0lQ09NUCVde2JhY2tncm91bmQtY29sb3I6I2ZmOTgwMDtjb2xvcjojZmZmfS5tYXQtZGF0ZXBpY2tlci1jb250ZW50Lm1hdC1hY2NlbnRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1jYWxlbmRhci1ib2R5LWRpc2FibGVkW19uZ2NvbnRlbnQtJUNPTVAlXSA+IC5tYXQtY2FsZW5kYXItYm9keS1zZWxlY3RlZFtfbmdjb250ZW50LSVDT01QJV17YmFja2dyb3VuZC1jb2xvcjpyZ2JhKDI1NSwxNTIsMCwuNCl9Lm1hdC1kYXRlcGlja2VyLWNvbnRlbnQubWF0LWFjY2VudFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWNhbGVuZGFyLWJvZHktdG9kYXkubWF0LWNhbGVuZGFyLWJvZHktc2VsZWN0ZWRbX25nY29udGVudC0lQ09NUCVde2JveC1zaGFkb3c6aW5zZXQgMCAwIDAgMXB4ICNmZmZ9Lm1hdC1kYXRlcGlja2VyLWNvbnRlbnQubWF0LXdhcm5bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1jYWxlbmRhci1ib2R5LWluLXJhbmdlW19uZ2NvbnRlbnQtJUNPTVAlXTo6YmVmb3Jle2JhY2tncm91bmQ6cmdiYSgyNDQsNjcsNTQsLjIpfS5tYXQtZGF0ZXBpY2tlci1jb250ZW50Lm1hdC13YXJuW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtY2FsZW5kYXItYm9keS1jb21wYXJpc29uLWlkZW50aWNhbFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtZGF0ZXBpY2tlci1jb250ZW50Lm1hdC13YXJuW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtY2FsZW5kYXItYm9keS1pbi1jb21wYXJpc29uLXJhbmdlW19uZ2NvbnRlbnQtJUNPTVAlXTo6YmVmb3Jle2JhY2tncm91bmQ6cmdiYSgyNDksMTcxLDAsLjIpfS5tYXQtZGF0ZXBpY2tlci1jb250ZW50Lm1hdC13YXJuW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtY2FsZW5kYXItYm9keS1jb21wYXJpc29uLWJyaWRnZS1zdGFydFtfbmdjb250ZW50LSVDT01QJV06OmJlZm9yZSwgLm1hdC1kYXRlcGlja2VyLWNvbnRlbnQubWF0LXdhcm5bX25nY29udGVudC0lQ09NUCVdICAgW2Rpcj1ydGxdW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtY2FsZW5kYXItYm9keS1jb21wYXJpc29uLWJyaWRnZS1lbmRbX25nY29udGVudC0lQ09NUCVdOjpiZWZvcmV7YmFja2dyb3VuZDpsaW5lYXItZ3JhZGllbnQodG8gcmlnaHQsIHJnYmEoMjQ0LCA2NywgNTQsIDAuMikgNTAlLCByZ2JhKDI0OSwgMTcxLCAwLCAwLjIpIDUwJSl9Lm1hdC1kYXRlcGlja2VyLWNvbnRlbnQubWF0LXdhcm5bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1jYWxlbmRhci1ib2R5LWNvbXBhcmlzb24tYnJpZGdlLWVuZFtfbmdjb250ZW50LSVDT01QJV06OmJlZm9yZSwgLm1hdC1kYXRlcGlja2VyLWNvbnRlbnQubWF0LXdhcm5bX25nY29udGVudC0lQ09NUCVdICAgW2Rpcj1ydGxdW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtY2FsZW5kYXItYm9keS1jb21wYXJpc29uLWJyaWRnZS1zdGFydFtfbmdjb250ZW50LSVDT01QJV06OmJlZm9yZXtiYWNrZ3JvdW5kOmxpbmVhci1ncmFkaWVudCh0byBsZWZ0LCByZ2JhKDI0NCwgNjcsIDU0LCAwLjIpIDUwJSwgcmdiYSgyNDksIDE3MSwgMCwgMC4yKSA1MCUpfS5tYXQtZGF0ZXBpY2tlci1jb250ZW50Lm1hdC13YXJuW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtY2FsZW5kYXItYm9keS1pbi1yYW5nZVtfbmdjb250ZW50LSVDT01QJV0gPiAubWF0LWNhbGVuZGFyLWJvZHktY29tcGFyaXNvbi1pZGVudGljYWxbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWRhdGVwaWNrZXItY29udGVudC5tYXQtd2Fybltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWNhbGVuZGFyLWJvZHktaW4tY29tcGFyaXNvbi1yYW5nZS5tYXQtY2FsZW5kYXItYm9keS1pbi1yYW5nZVtfbmdjb250ZW50LSVDT01QJV06OmFmdGVye2JhY2tncm91bmQ6I2E4ZGFiNX0ubWF0LWRhdGVwaWNrZXItY29udGVudC5tYXQtd2Fybltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWNhbGVuZGFyLWJvZHktY29tcGFyaXNvbi1pZGVudGljYWwubWF0LWNhbGVuZGFyLWJvZHktc2VsZWN0ZWRbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWRhdGVwaWNrZXItY29udGVudC5tYXQtd2Fybltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWNhbGVuZGFyLWJvZHktaW4tY29tcGFyaXNvbi1yYW5nZVtfbmdjb250ZW50LSVDT01QJV0gPiAubWF0LWNhbGVuZGFyLWJvZHktc2VsZWN0ZWRbX25nY29udGVudC0lQ09NUCVde2JhY2tncm91bmQ6IzQ2YTM1ZX0ubWF0LWRhdGVwaWNrZXItY29udGVudC5tYXQtd2Fybltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWNhbGVuZGFyLWJvZHktc2VsZWN0ZWRbX25nY29udGVudC0lQ09NUCVde2JhY2tncm91bmQtY29sb3I6I2Y0NDMzNjtjb2xvcjojZmZmfS5tYXQtZGF0ZXBpY2tlci1jb250ZW50Lm1hdC13YXJuW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtY2FsZW5kYXItYm9keS1kaXNhYmxlZFtfbmdjb250ZW50LSVDT01QJV0gPiAubWF0LWNhbGVuZGFyLWJvZHktc2VsZWN0ZWRbX25nY29udGVudC0lQ09NUCVde2JhY2tncm91bmQtY29sb3I6cmdiYSgyNDQsNjcsNTQsLjQpfS5tYXQtZGF0ZXBpY2tlci1jb250ZW50Lm1hdC13YXJuW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtY2FsZW5kYXItYm9keS10b2RheS5tYXQtY2FsZW5kYXItYm9keS1zZWxlY3RlZFtfbmdjb250ZW50LSVDT01QJV17Ym94LXNoYWRvdzppbnNldCAwIDAgMCAxcHggI2ZmZn0ubWF0LWRhdGVwaWNrZXItY29udGVudC10b3VjaFtfbmdjb250ZW50LSVDT01QJV17Ym94LXNoYWRvdzowcHggMHB4IDBweCAwcHggcmdiYSgwLCAwLCAwLCAwLjIpLDBweCAwcHggMHB4IDBweCByZ2JhKDAsIDAsIDAsIDAuMTQpLDBweCAwcHggMHB4IDBweCByZ2JhKDAsIDAsIDAsIDAuMTIpfS5tYXQtZGF0ZXBpY2tlci10b2dnbGUtYWN0aXZlW19uZ2NvbnRlbnQtJUNPTVAlXXtjb2xvcjojZjU3YzAwfS5tYXQtZGF0ZXBpY2tlci10b2dnbGUtYWN0aXZlLm1hdC1hY2NlbnRbX25nY29udGVudC0lQ09NUCVde2NvbG9yOiNmZjk4MDB9Lm1hdC1kYXRlcGlja2VyLXRvZ2dsZS1hY3RpdmUubWF0LXdhcm5bX25nY29udGVudC0lQ09NUCVde2NvbG9yOiNmNDQzMzZ9Lm1hdC1kYXRlLXJhbmdlLWlucHV0LWlubmVyW2Rpc2FibGVkXVtfbmdjb250ZW50LSVDT01QJV17Y29sb3I6Izc1NzU3NX0ubWF0LWRpYWxvZy1jb250YWluZXJbX25nY29udGVudC0lQ09NUCVde2JveC1zaGFkb3c6MHB4IDExcHggMTVweCAtN3B4IHJnYmEoMCwgMCwgMCwgMC4yKSwwcHggMjRweCAzOHB4IDNweCByZ2JhKDAsIDAsIDAsIDAuMTQpLDBweCA5cHggNDZweCA4cHggcmdiYSgwLCAwLCAwLCAwLjEyKTtiYWNrZ3JvdW5kOiNmZmY7Y29sb3I6IzIxMjEyMX0ubWF0LWRpdmlkZXJbX25nY29udGVudC0lQ09NUCVde2JvcmRlci10b3AtY29sb3I6cmdiYSgwLDAsMCwuMTIpfS5tYXQtZGl2aWRlci12ZXJ0aWNhbFtfbmdjb250ZW50LSVDT01QJV17Ym9yZGVyLXJpZ2h0LWNvbG9yOnJnYmEoMCwwLDAsLjEyKX0ubWF0LWV4cGFuc2lvbi1wYW5lbFtfbmdjb250ZW50LSVDT01QJV17YmFja2dyb3VuZDojZmZmO2NvbG9yOiMyMTIxMjF9Lm1hdC1leHBhbnNpb24tcGFuZWxbX25nY29udGVudC0lQ09NUCVdOm5vdChbY2xhc3MqPW1hdC1lbGV2YXRpb24tel0pe2JveC1zaGFkb3c6MHB4IDNweCAxcHggLTJweCByZ2JhKDAsIDAsIDAsIDAuMiksMHB4IDJweCAycHggMHB4IHJnYmEoMCwgMCwgMCwgMC4xNCksMHB4IDFweCA1cHggMHB4IHJnYmEoMCwgMCwgMCwgMC4xMil9Lm1hdC1hY3Rpb24tcm93W19uZ2NvbnRlbnQtJUNPTVAlXXtib3JkZXItdG9wLWNvbG9yOnJnYmEoMCwwLDAsLjEyKX0ubWF0LWV4cGFuc2lvbi1wYW5lbFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWV4cGFuc2lvbi1wYW5lbC1oZWFkZXIuY2RrLWtleWJvYXJkLWZvY3VzZWRbX25nY29udGVudC0lQ09NUCVdOm5vdChbYXJpYS1kaXNhYmxlZD10cnVlXSksIC5tYXQtZXhwYW5zaW9uLXBhbmVsW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZXhwYW5zaW9uLXBhbmVsLWhlYWRlci5jZGstcHJvZ3JhbS1mb2N1c2VkW19uZ2NvbnRlbnQtJUNPTVAlXTpub3QoW2FyaWEtZGlzYWJsZWQ9dHJ1ZV0pLCAubWF0LWV4cGFuc2lvbi1wYW5lbFtfbmdjb250ZW50LSVDT01QJV06bm90KC5tYXQtZXhwYW5kZWQpICAgLm1hdC1leHBhbnNpb24tcGFuZWwtaGVhZGVyW19uZ2NvbnRlbnQtJUNPTVAlXTpob3Zlcjpub3QoW2FyaWEtZGlzYWJsZWQ9dHJ1ZV0pe2JhY2tncm91bmQ6cmdiYSgwLDAsMCwuMDQpfUBtZWRpYShob3Zlcjogbm9uZSl7Lm1hdC1leHBhbnNpb24tcGFuZWxbX25nY29udGVudC0lQ09NUCVdOm5vdCgubWF0LWV4cGFuZGVkKTpub3QoW2FyaWEtZGlzYWJsZWQ9dHJ1ZV0pICAgLm1hdC1leHBhbnNpb24tcGFuZWwtaGVhZGVyW19uZ2NvbnRlbnQtJUNPTVAlXTpob3ZlcntiYWNrZ3JvdW5kOiNmZmZ9fS5tYXQtZXhwYW5zaW9uLXBhbmVsLWhlYWRlci10aXRsZVtfbmdjb250ZW50LSVDT01QJV17Y29sb3I6IzIxMjEyMX0ubWF0LWV4cGFuc2lvbi1wYW5lbC1oZWFkZXItZGVzY3JpcHRpb25bX25nY29udGVudC0lQ09NUCVdLCAubWF0LWV4cGFuc2lvbi1pbmRpY2F0b3JbX25nY29udGVudC0lQ09NUCVdOjphZnRlcntjb2xvcjojNjE2MTYxfS5tYXQtZXhwYW5zaW9uLXBhbmVsLWhlYWRlclthcmlhLWRpc2FibGVkPXRydWVdW19uZ2NvbnRlbnQtJUNPTVAlXXtjb2xvcjpyZ2JhKDAsMCwwLC4yNil9Lm1hdC1leHBhbnNpb24tcGFuZWwtaGVhZGVyW2FyaWEtZGlzYWJsZWQ9dHJ1ZV1bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1leHBhbnNpb24tcGFuZWwtaGVhZGVyLXRpdGxlW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1leHBhbnNpb24tcGFuZWwtaGVhZGVyW2FyaWEtZGlzYWJsZWQ9dHJ1ZV1bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1leHBhbnNpb24tcGFuZWwtaGVhZGVyLWRlc2NyaXB0aW9uW19uZ2NvbnRlbnQtJUNPTVAlXXtjb2xvcjppbmhlcml0fS5tYXQtZXhwYW5zaW9uLXBhbmVsLWhlYWRlcltfbmdjb250ZW50LSVDT01QJV17aGVpZ2h0OjQ4cHh9Lm1hdC1leHBhbnNpb24tcGFuZWwtaGVhZGVyLm1hdC1leHBhbmRlZFtfbmdjb250ZW50LSVDT01QJV17aGVpZ2h0OjY0cHh9Lm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXtjb2xvcjpyZ2JhKDk3LDk3LDk3LC42KX0ubWF0LWhpbnRbX25nY29udGVudC0lQ09NUCVde2NvbG9yOnJnYmEoOTcsOTcsOTcsLjYpfS5tYXQtZm9ybS1maWVsZC5tYXQtZm9jdXNlZFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVde2NvbG9yOiNmNTdjMDB9Lm1hdC1mb3JtLWZpZWxkLm1hdC1mb2N1c2VkW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbC5tYXQtYWNjZW50W19uZ2NvbnRlbnQtJUNPTVAlXXtjb2xvcjojZmY5ODAwfS5tYXQtZm9ybS1maWVsZC5tYXQtZm9jdXNlZFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWwubWF0LXdhcm5bX25nY29udGVudC0lQ09NUCVde2NvbG9yOiNmNDQzMzZ9Lm1hdC1mb2N1c2VkW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1yZXF1aXJlZC1tYXJrZXJbX25nY29udGVudC0lQ09NUCVde2NvbG9yOiNmZjk4MDB9Lm1hdC1mb3JtLWZpZWxkLXJpcHBsZVtfbmdjb250ZW50LSVDT01QJV17YmFja2dyb3VuZC1jb2xvcjpyZ2JhKDAsMCwwLC44Nyl9Lm1hdC1mb3JtLWZpZWxkLm1hdC1mb2N1c2VkW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1yaXBwbGVbX25nY29udGVudC0lQ09NUCVde2JhY2tncm91bmQtY29sb3I6I2Y1N2MwMH0ubWF0LWZvcm0tZmllbGQubWF0LWZvY3VzZWRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLXJpcHBsZS5tYXQtYWNjZW50W19uZ2NvbnRlbnQtJUNPTVAlXXtiYWNrZ3JvdW5kLWNvbG9yOiNmZjk4MDB9Lm1hdC1mb3JtLWZpZWxkLm1hdC1mb2N1c2VkW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1yaXBwbGUubWF0LXdhcm5bX25nY29udGVudC0lQ09NUCVde2JhY2tncm91bmQtY29sb3I6I2Y0NDMzNn0ubWF0LWZvcm0tZmllbGQtdHlwZS1tYXQtbmF0aXZlLXNlbGVjdC5tYXQtZm9jdXNlZFtfbmdjb250ZW50LSVDT01QJV06bm90KC5tYXQtZm9ybS1maWVsZC1pbnZhbGlkKSAgIC5tYXQtZm9ybS1maWVsZC1pbmZpeFtfbmdjb250ZW50LSVDT01QJV06OmFmdGVye2NvbG9yOiNmNTdjMDB9Lm1hdC1mb3JtLWZpZWxkLXR5cGUtbWF0LW5hdGl2ZS1zZWxlY3QubWF0LWZvY3VzZWRbX25nY29udGVudC0lQ09NUCVdOm5vdCgubWF0LWZvcm0tZmllbGQtaW52YWxpZCkubWF0LWFjY2VudCAgIC5tYXQtZm9ybS1maWVsZC1pbmZpeFtfbmdjb250ZW50LSVDT01QJV06OmFmdGVye2NvbG9yOiNmZjk4MDB9Lm1hdC1mb3JtLWZpZWxkLXR5cGUtbWF0LW5hdGl2ZS1zZWxlY3QubWF0LWZvY3VzZWRbX25nY29udGVudC0lQ09NUCVdOm5vdCgubWF0LWZvcm0tZmllbGQtaW52YWxpZCkubWF0LXdhcm4gICAubWF0LWZvcm0tZmllbGQtaW5maXhbX25nY29udGVudC0lQ09NUCVdOjphZnRlcntjb2xvcjojZjQ0MzM2fS5tYXQtZm9ybS1maWVsZC5tYXQtZm9ybS1maWVsZC1pbnZhbGlkW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17Y29sb3I6I2Y0NDMzNn0ubWF0LWZvcm0tZmllbGQubWF0LWZvcm0tZmllbGQtaW52YWxpZFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWwubWF0LWFjY2VudFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtZm9ybS1maWVsZC5tYXQtZm9ybS1maWVsZC1pbnZhbGlkW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtcmVxdWlyZWQtbWFya2VyW19uZ2NvbnRlbnQtJUNPTVAlXXtjb2xvcjojZjQ0MzM2fS5tYXQtZm9ybS1maWVsZC5tYXQtZm9ybS1maWVsZC1pbnZhbGlkW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1yaXBwbGVbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWZvcm0tZmllbGQubWF0LWZvcm0tZmllbGQtaW52YWxpZFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtcmlwcGxlLm1hdC1hY2NlbnRbX25nY29udGVudC0lQ09NUCVde2JhY2tncm91bmQtY29sb3I6I2Y0NDMzNn0ubWF0LWVycm9yW19uZ2NvbnRlbnQtJUNPTVAlXXtjb2xvcjojZjQ0MzM2fS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWxlZ2FjeVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVde2NvbG9yOiM2MTYxNjF9Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtbGVnYWN5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaGludFtfbmdjb250ZW50LSVDT01QJV17Y29sb3I6IzYxNjE2MX0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1sZWdhY3lbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLXVuZGVybGluZVtfbmdjb250ZW50LSVDT01QJV17YmFja2dyb3VuZC1jb2xvcjpyZ2JhKDAsMCwwLC40Mil9Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtbGVnYWN5Lm1hdC1mb3JtLWZpZWxkLWRpc2FibGVkW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC11bmRlcmxpbmVbX25nY29udGVudC0lQ09NUCVde2JhY2tncm91bmQtaW1hZ2U6bGluZWFyLWdyYWRpZW50KHRvIHJpZ2h0LCByZ2JhKDAsIDAsIDAsIDAuNDIpIDAlLCByZ2JhKDAsIDAsIDAsIDAuNDIpIDMzJSwgdHJhbnNwYXJlbnQgMCUpO2JhY2tncm91bmQtc2l6ZTo0cHggMTAwJTtiYWNrZ3JvdW5kLXJlcGVhdDpyZXBlYXQteH0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1zdGFuZGFyZFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtdW5kZXJsaW5lW19uZ2NvbnRlbnQtJUNPTVAlXXtiYWNrZ3JvdW5kLWNvbG9yOnJnYmEoMCwwLDAsLjQyKX0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1zdGFuZGFyZC5tYXQtZm9ybS1maWVsZC1kaXNhYmxlZFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtdW5kZXJsaW5lW19uZ2NvbnRlbnQtJUNPTVAlXXtiYWNrZ3JvdW5kLWltYWdlOmxpbmVhci1ncmFkaWVudCh0byByaWdodCwgcmdiYSgwLCAwLCAwLCAwLjQyKSAwJSwgcmdiYSgwLCAwLCAwLCAwLjQyKSAzMyUsIHRyYW5zcGFyZW50IDAlKTtiYWNrZ3JvdW5kLXNpemU6NHB4IDEwMCU7YmFja2dyb3VuZC1yZXBlYXQ6cmVwZWF0LXh9Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtZmlsbFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtZmxleFtfbmdjb250ZW50LSVDT01QJV17YmFja2dyb3VuZC1jb2xvcjpyZ2JhKDAsMCwwLC4wNCl9Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtZmlsbC5tYXQtZm9ybS1maWVsZC1kaXNhYmxlZFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtZmxleFtfbmdjb250ZW50LSVDT01QJV17YmFja2dyb3VuZC1jb2xvcjpyZ2JhKDAsMCwwLC4wMil9Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtZmlsbFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtdW5kZXJsaW5lW19uZ2NvbnRlbnQtJUNPTVAlXTo6YmVmb3Jle2JhY2tncm91bmQtY29sb3I6cmdiYSgwLDAsMCwuNDIpfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWZpbGwubWF0LWZvcm0tZmllbGQtZGlzYWJsZWRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXtjb2xvcjojNzU3NTc1fS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWZpbGwubWF0LWZvcm0tZmllbGQtZGlzYWJsZWRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLXVuZGVybGluZVtfbmdjb250ZW50LSVDT01QJV06OmJlZm9yZXtiYWNrZ3JvdW5kLWNvbG9yOnRyYW5zcGFyZW50fS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLW91dGxpbmVbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLW91dGxpbmVbX25nY29udGVudC0lQ09NUCVde2NvbG9yOnJnYmEoMCwwLDAsLjEyKX0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1vdXRsaW5lW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1vdXRsaW5lLXRoaWNrW19uZ2NvbnRlbnQtJUNPTVAlXXtjb2xvcjpyZ2JhKDAsMCwwLC44Nyl9Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2Utb3V0bGluZS5tYXQtZm9jdXNlZFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtb3V0bGluZS10aGlja1tfbmdjb250ZW50LSVDT01QJV17Y29sb3I6I2Y1N2MwMH0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1vdXRsaW5lLm1hdC1mb2N1c2VkLm1hdC1hY2NlbnRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLW91dGxpbmUtdGhpY2tbX25nY29udGVudC0lQ09NUCVde2NvbG9yOiNmZjk4MDB9Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2Utb3V0bGluZS5tYXQtZm9jdXNlZC5tYXQtd2Fybltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtb3V0bGluZS10aGlja1tfbmdjb250ZW50LSVDT01QJV17Y29sb3I6I2Y0NDMzNn0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1vdXRsaW5lLm1hdC1mb3JtLWZpZWxkLWludmFsaWQubWF0LWZvcm0tZmllbGQtaW52YWxpZFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtb3V0bGluZS10aGlja1tfbmdjb250ZW50LSVDT01QJV17Y29sb3I6I2Y0NDMzNn0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1vdXRsaW5lLm1hdC1mb3JtLWZpZWxkLWRpc2FibGVkW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17Y29sb3I6Izc1NzU3NX0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1vdXRsaW5lLm1hdC1mb3JtLWZpZWxkLWRpc2FibGVkW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1vdXRsaW5lW19uZ2NvbnRlbnQtJUNPTVAlXXtjb2xvcjpyZ2JhKDAsMCwwLC4wNil9Lm1hdC1pY29uLm1hdC1wcmltYXJ5W19uZ2NvbnRlbnQtJUNPTVAlXXtjb2xvcjojZjU3YzAwfS5tYXQtaWNvbi5tYXQtYWNjZW50W19uZ2NvbnRlbnQtJUNPTVAlXXtjb2xvcjojZmY5ODAwfS5tYXQtaWNvbi5tYXQtd2Fybltfbmdjb250ZW50LSVDT01QJV17Y29sb3I6I2Y0NDMzNn0ubWF0LWZvcm0tZmllbGQtdHlwZS1tYXQtbmF0aXZlLXNlbGVjdFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtaW5maXhbX25nY29udGVudC0lQ09NUCVdOjphZnRlcntjb2xvcjojNjE2MTYxfS5tYXQtaW5wdXQtZWxlbWVudFtfbmdjb250ZW50LSVDT01QJV06ZGlzYWJsZWQsIC5tYXQtZm9ybS1maWVsZC10eXBlLW1hdC1uYXRpdmUtc2VsZWN0Lm1hdC1mb3JtLWZpZWxkLWRpc2FibGVkW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1pbmZpeFtfbmdjb250ZW50LSVDT01QJV06OmFmdGVye2NvbG9yOiM3NTc1NzV9Lm1hdC1pbnB1dC1lbGVtZW50W19uZ2NvbnRlbnQtJUNPTVAlXXtjYXJldC1jb2xvcjojZjU3YzAwfS5tYXQtaW5wdXQtZWxlbWVudFtfbmdjb250ZW50LSVDT01QJV06OnBsYWNlaG9sZGVye2NvbG9yOnJnYmEoOTcsOTcsOTcsLjQyKX0ubWF0LWlucHV0LWVsZW1lbnRbX25nY29udGVudC0lQ09NUCVdOjotbW96LXBsYWNlaG9sZGVye2NvbG9yOnJnYmEoOTcsOTcsOTcsLjQyKX0ubWF0LWlucHV0LWVsZW1lbnRbX25nY29udGVudC0lQ09NUCVdOjotd2Via2l0LWlucHV0LXBsYWNlaG9sZGVye2NvbG9yOnJnYmEoOTcsOTcsOTcsLjQyKX0ubWF0LWlucHV0LWVsZW1lbnRbX25nY29udGVudC0lQ09NUCVdOi1tcy1pbnB1dC1wbGFjZWhvbGRlcntjb2xvcjpyZ2JhKDk3LDk3LDk3LC40Mil9Lm1hdC1mb3JtLWZpZWxkLm1hdC1hY2NlbnRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pbnB1dC1lbGVtZW50W19uZ2NvbnRlbnQtJUNPTVAlXXtjYXJldC1jb2xvcjojZmY5ODAwfS5tYXQtZm9ybS1maWVsZC5tYXQtd2Fybltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWlucHV0LWVsZW1lbnRbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWZvcm0tZmllbGQtaW52YWxpZFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWlucHV0LWVsZW1lbnRbX25nY29udGVudC0lQ09NUCVde2NhcmV0LWNvbG9yOiNmNDQzMzZ9Lm1hdC1mb3JtLWZpZWxkLXR5cGUtbWF0LW5hdGl2ZS1zZWxlY3QubWF0LWZvcm0tZmllbGQtaW52YWxpZFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtaW5maXhbX25nY29udGVudC0lQ09NUCVdOjphZnRlcntjb2xvcjojZjQ0MzM2fS5tYXQtbGlzdC1iYXNlW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGlzdC1pdGVtW19uZ2NvbnRlbnQtJUNPTVAlXXtjb2xvcjojMjEyMTIxfS5tYXQtbGlzdC1iYXNlW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGlzdC1vcHRpb25bX25nY29udGVudC0lQ09NUCVde2NvbG9yOiMyMTIxMjF9Lm1hdC1saXN0LWJhc2VbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1zdWJoZWFkZXJbX25nY29udGVudC0lQ09NUCVde2NvbG9yOiM2MTYxNjF9Lm1hdC1saXN0LWl0ZW0tZGlzYWJsZWRbX25nY29udGVudC0lQ09NUCVde2JhY2tncm91bmQtY29sb3I6I2VlZX0ubWF0LWxpc3Qtb3B0aW9uW19uZ2NvbnRlbnQtJUNPTVAlXTpob3ZlciwgLm1hdC1saXN0LW9wdGlvbltfbmdjb250ZW50LSVDT01QJV06Zm9jdXMsIC5tYXQtbmF2LWxpc3RbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saXN0LWl0ZW1bX25nY29udGVudC0lQ09NUCVdOmhvdmVyLCAubWF0LW5hdi1saXN0W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGlzdC1pdGVtW19uZ2NvbnRlbnQtJUNPTVAlXTpmb2N1cywgLm1hdC1hY3Rpb24tbGlzdFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpc3QtaXRlbVtfbmdjb250ZW50LSVDT01QJV06aG92ZXIsIC5tYXQtYWN0aW9uLWxpc3RbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saXN0LWl0ZW1bX25nY29udGVudC0lQ09NUCVdOmZvY3Vze2JhY2tncm91bmQ6cmdiYSgwLDAsMCwuMDQpfS5tYXQtbGlzdC1zaW5nbGUtc2VsZWN0ZWQtb3B0aW9uW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1saXN0LXNpbmdsZS1zZWxlY3RlZC1vcHRpb25bX25nY29udGVudC0lQ09NUCVdOmhvdmVyLCAubWF0LWxpc3Qtc2luZ2xlLXNlbGVjdGVkLW9wdGlvbltfbmdjb250ZW50LSVDT01QJV06Zm9jdXN7YmFja2dyb3VuZDpyZ2JhKDAsMCwwLC4xMil9Lm1hdC1tZW51LXBhbmVsW19uZ2NvbnRlbnQtJUNPTVAlXXtiYWNrZ3JvdW5kOiNmZmZ9Lm1hdC1tZW51LXBhbmVsW19uZ2NvbnRlbnQtJUNPTVAlXTpub3QoW2NsYXNzKj1tYXQtZWxldmF0aW9uLXpdKXtib3gtc2hhZG93OjBweCAycHggNHB4IC0xcHggcmdiYSgwLCAwLCAwLCAwLjIpLDBweCA0cHggNXB4IDBweCByZ2JhKDAsIDAsIDAsIDAuMTQpLDBweCAxcHggMTBweCAwcHggcmdiYSgwLCAwLCAwLCAwLjEyKX0ubWF0LW1lbnUtaXRlbVtfbmdjb250ZW50LSVDT01QJV17YmFja2dyb3VuZDp0cmFuc3BhcmVudDtjb2xvcjojMjEyMTIxfS5tYXQtbWVudS1pdGVtW2Rpc2FibGVkXVtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtbWVudS1pdGVtW2Rpc2FibGVkXVtfbmdjb250ZW50LSVDT01QJV06OmFmdGVye2NvbG9yOnJnYmEoMCwwLDAsLjM4KX0ubWF0LW1lbnUtaXRlbVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWljb24tbm8tY29sb3JbX25nY29udGVudC0lQ09NUCVdLCAubWF0LW1lbnUtaXRlbS1zdWJtZW51LXRyaWdnZXJbX25nY29udGVudC0lQ09NUCVdOjphZnRlcntjb2xvcjpyZ2JhKDAsMCwwLC41NCl9Lm1hdC1tZW51LWl0ZW1bX25nY29udGVudC0lQ09NUCVdOmhvdmVyOm5vdChbZGlzYWJsZWRdKSwgLm1hdC1tZW51LWl0ZW0uY2RrLXByb2dyYW0tZm9jdXNlZFtfbmdjb250ZW50LSVDT01QJV06bm90KFtkaXNhYmxlZF0pLCAubWF0LW1lbnUtaXRlbS5jZGsta2V5Ym9hcmQtZm9jdXNlZFtfbmdjb250ZW50LSVDT01QJV06bm90KFtkaXNhYmxlZF0pLCAubWF0LW1lbnUtaXRlbS1oaWdobGlnaHRlZFtfbmdjb250ZW50LSVDT01QJV06bm90KFtkaXNhYmxlZF0pe2JhY2tncm91bmQ6cmdiYSgwLDAsMCwuMDQpfS5tYXQtcGFnaW5hdG9yW19uZ2NvbnRlbnQtJUNPTVAlXXtiYWNrZ3JvdW5kOiNmZmZ9Lm1hdC1wYWdpbmF0b3JbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXBhZ2luYXRvci1wYWdlLXNpemVbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1zZWxlY3QtdHJpZ2dlcltfbmdjb250ZW50LSVDT01QJV17Y29sb3I6IzYxNjE2MX0ubWF0LXBhZ2luYXRvci1kZWNyZW1lbnRbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXBhZ2luYXRvci1pbmNyZW1lbnRbX25nY29udGVudC0lQ09NUCVde2JvcmRlci10b3A6MnB4IHNvbGlkIHJnYmEoMCwwLDAsLjU0KTtib3JkZXItcmlnaHQ6MnB4IHNvbGlkIHJnYmEoMCwwLDAsLjU0KX0ubWF0LXBhZ2luYXRvci1maXJzdFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtcGFnaW5hdG9yLWxhc3RbX25nY29udGVudC0lQ09NUCVde2JvcmRlci10b3A6MnB4IHNvbGlkIHJnYmEoMCwwLDAsLjU0KX0ubWF0LWljb24tYnV0dG9uW2Rpc2FibGVkXVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXBhZ2luYXRvci1kZWNyZW1lbnRbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWljb24tYnV0dG9uW2Rpc2FibGVkXVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXBhZ2luYXRvci1pbmNyZW1lbnRbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWljb24tYnV0dG9uW2Rpc2FibGVkXVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXBhZ2luYXRvci1maXJzdFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtaWNvbi1idXR0b25bZGlzYWJsZWRdW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtcGFnaW5hdG9yLWxhc3RbX25nY29udGVudC0lQ09NUCVde2JvcmRlci1jb2xvcjpyZ2JhKDAsMCwwLC4zOCl9Lm1hdC1wYWdpbmF0b3ItY29udGFpbmVyW19uZ2NvbnRlbnQtJUNPTVAlXXttaW4taGVpZ2h0OjU2cHh9Lm1hdC1wcm9ncmVzcy1iYXItYmFja2dyb3VuZFtfbmdjb250ZW50LSVDT01QJV17ZmlsbDojZmY5ODAwfS5tYXQtcHJvZ3Jlc3MtYmFyLWJ1ZmZlcltfbmdjb250ZW50LSVDT01QJV17YmFja2dyb3VuZC1jb2xvcjojZmY5ODAwfS5tYXQtcHJvZ3Jlc3MtYmFyLWZpbGxbX25nY29udGVudC0lQ09NUCVdOjphZnRlcntiYWNrZ3JvdW5kLWNvbG9yOiNmNTdjMDB9Lm1hdC1wcm9ncmVzcy1iYXIubWF0LWFjY2VudFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXByb2dyZXNzLWJhci1iYWNrZ3JvdW5kW19uZ2NvbnRlbnQtJUNPTVAlXXtmaWxsOiNmZjk4MDB9Lm1hdC1wcm9ncmVzcy1iYXIubWF0LWFjY2VudFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXByb2dyZXNzLWJhci1idWZmZXJbX25nY29udGVudC0lQ09NUCVde2JhY2tncm91bmQtY29sb3I6I2ZmOTgwMH0ubWF0LXByb2dyZXNzLWJhci5tYXQtYWNjZW50W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtcHJvZ3Jlc3MtYmFyLWZpbGxbX25nY29udGVudC0lQ09NUCVdOjphZnRlcntiYWNrZ3JvdW5kLWNvbG9yOiNmZjk4MDB9Lm1hdC1wcm9ncmVzcy1iYXIubWF0LXdhcm5bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1wcm9ncmVzcy1iYXItYmFja2dyb3VuZFtfbmdjb250ZW50LSVDT01QJV17ZmlsbDojZmZjZGQyfS5tYXQtcHJvZ3Jlc3MtYmFyLm1hdC13YXJuW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtcHJvZ3Jlc3MtYmFyLWJ1ZmZlcltfbmdjb250ZW50LSVDT01QJV17YmFja2dyb3VuZC1jb2xvcjojZmZjZGQyfS5tYXQtcHJvZ3Jlc3MtYmFyLm1hdC13YXJuW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtcHJvZ3Jlc3MtYmFyLWZpbGxbX25nY29udGVudC0lQ09NUCVdOjphZnRlcntiYWNrZ3JvdW5kLWNvbG9yOiNmNDQzMzZ9Lm1hdC1wcm9ncmVzcy1zcGlubmVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIGNpcmNsZVtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtc3Bpbm5lcltfbmdjb250ZW50LSVDT01QJV0gICBjaXJjbGVbX25nY29udGVudC0lQ09NUCVde3N0cm9rZTojZjU3YzAwfS5tYXQtcHJvZ3Jlc3Mtc3Bpbm5lci5tYXQtYWNjZW50W19uZ2NvbnRlbnQtJUNPTVAlXSAgIGNpcmNsZVtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtc3Bpbm5lci5tYXQtYWNjZW50W19uZ2NvbnRlbnQtJUNPTVAlXSAgIGNpcmNsZVtfbmdjb250ZW50LSVDT01QJV17c3Ryb2tlOiNmZjk4MDB9Lm1hdC1wcm9ncmVzcy1zcGlubmVyLm1hdC13YXJuW19uZ2NvbnRlbnQtJUNPTVAlXSAgIGNpcmNsZVtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtc3Bpbm5lci5tYXQtd2Fybltfbmdjb250ZW50LSVDT01QJV0gICBjaXJjbGVbX25nY29udGVudC0lQ09NUCVde3N0cm9rZTojZjQ0MzM2fS5tYXQtcmFkaW8tb3V0ZXItY2lyY2xlW19uZ2NvbnRlbnQtJUNPTVAlXXtib3JkZXItY29sb3I6IzYxNjE2MX0ubWF0LXJhZGlvLWJ1dHRvbi5tYXQtcHJpbWFyeS5tYXQtcmFkaW8tY2hlY2tlZFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXJhZGlvLW91dGVyLWNpcmNsZVtfbmdjb250ZW50LSVDT01QJV17Ym9yZGVyLWNvbG9yOiNmNTdjMDB9Lm1hdC1yYWRpby1idXR0b24ubWF0LXByaW1hcnlbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1yYWRpby1pbm5lci1jaXJjbGVbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXJhZGlvLWJ1dHRvbi5tYXQtcHJpbWFyeVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXJhZGlvLXJpcHBsZVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXJpcHBsZS1lbGVtZW50W19uZ2NvbnRlbnQtJUNPTVAlXTpub3QoLm1hdC1yYWRpby1wZXJzaXN0ZW50LXJpcHBsZSksIC5tYXQtcmFkaW8tYnV0dG9uLm1hdC1wcmltYXJ5Lm1hdC1yYWRpby1jaGVja2VkW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtcmFkaW8tcGVyc2lzdGVudC1yaXBwbGVbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXJhZGlvLWJ1dHRvbi5tYXQtcHJpbWFyeVtfbmdjb250ZW50LSVDT01QJV06YWN0aXZlICAgLm1hdC1yYWRpby1wZXJzaXN0ZW50LXJpcHBsZVtfbmdjb250ZW50LSVDT01QJV17YmFja2dyb3VuZC1jb2xvcjojZjU3YzAwfS5tYXQtcmFkaW8tYnV0dG9uLm1hdC1hY2NlbnQubWF0LXJhZGlvLWNoZWNrZWRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1yYWRpby1vdXRlci1jaXJjbGVbX25nY29udGVudC0lQ09NUCVde2JvcmRlci1jb2xvcjojZmY5ODAwfS5tYXQtcmFkaW8tYnV0dG9uLm1hdC1hY2NlbnRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1yYWRpby1pbm5lci1jaXJjbGVbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXJhZGlvLWJ1dHRvbi5tYXQtYWNjZW50W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtcmFkaW8tcmlwcGxlW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtcmlwcGxlLWVsZW1lbnRbX25nY29udGVudC0lQ09NUCVdOm5vdCgubWF0LXJhZGlvLXBlcnNpc3RlbnQtcmlwcGxlKSwgLm1hdC1yYWRpby1idXR0b24ubWF0LWFjY2VudC5tYXQtcmFkaW8tY2hlY2tlZFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXJhZGlvLXBlcnNpc3RlbnQtcmlwcGxlW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1yYWRpby1idXR0b24ubWF0LWFjY2VudFtfbmdjb250ZW50LSVDT01QJV06YWN0aXZlICAgLm1hdC1yYWRpby1wZXJzaXN0ZW50LXJpcHBsZVtfbmdjb250ZW50LSVDT01QJV17YmFja2dyb3VuZC1jb2xvcjojZmY5ODAwfS5tYXQtcmFkaW8tYnV0dG9uLm1hdC13YXJuLm1hdC1yYWRpby1jaGVja2VkW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtcmFkaW8tb3V0ZXItY2lyY2xlW19uZ2NvbnRlbnQtJUNPTVAlXXtib3JkZXItY29sb3I6I2Y0NDMzNn0ubWF0LXJhZGlvLWJ1dHRvbi5tYXQtd2Fybltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXJhZGlvLWlubmVyLWNpcmNsZVtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtcmFkaW8tYnV0dG9uLm1hdC13YXJuW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtcmFkaW8tcmlwcGxlW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtcmlwcGxlLWVsZW1lbnRbX25nY29udGVudC0lQ09NUCVdOm5vdCgubWF0LXJhZGlvLXBlcnNpc3RlbnQtcmlwcGxlKSwgLm1hdC1yYWRpby1idXR0b24ubWF0LXdhcm4ubWF0LXJhZGlvLWNoZWNrZWRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1yYWRpby1wZXJzaXN0ZW50LXJpcHBsZVtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtcmFkaW8tYnV0dG9uLm1hdC13YXJuW19uZ2NvbnRlbnQtJUNPTVAlXTphY3RpdmUgICAubWF0LXJhZGlvLXBlcnNpc3RlbnQtcmlwcGxlW19uZ2NvbnRlbnQtJUNPTVAlXXtiYWNrZ3JvdW5kLWNvbG9yOiNmNDQzMzZ9Lm1hdC1yYWRpby1idXR0b24ubWF0LXJhZGlvLWRpc2FibGVkLm1hdC1yYWRpby1jaGVja2VkW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtcmFkaW8tb3V0ZXItY2lyY2xlW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1yYWRpby1idXR0b24ubWF0LXJhZGlvLWRpc2FibGVkW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtcmFkaW8tb3V0ZXItY2lyY2xlW19uZ2NvbnRlbnQtJUNPTVAlXXtib3JkZXItY29sb3I6cmdiYSgwLDAsMCwuMzgpfS5tYXQtcmFkaW8tYnV0dG9uLm1hdC1yYWRpby1kaXNhYmxlZFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXJhZGlvLXJpcHBsZVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXJpcHBsZS1lbGVtZW50W19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1yYWRpby1idXR0b24ubWF0LXJhZGlvLWRpc2FibGVkW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtcmFkaW8taW5uZXItY2lyY2xlW19uZ2NvbnRlbnQtJUNPTVAlXXtiYWNrZ3JvdW5kLWNvbG9yOnJnYmEoMCwwLDAsLjM4KX0ubWF0LXJhZGlvLWJ1dHRvbi5tYXQtcmFkaW8tZGlzYWJsZWRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1yYWRpby1sYWJlbC1jb250ZW50W19uZ2NvbnRlbnQtJUNPTVAlXXtjb2xvcjpyZ2JhKDAsMCwwLC4zOCl9Lm1hdC1yYWRpby1idXR0b25bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1yaXBwbGUtZWxlbWVudFtfbmdjb250ZW50LSVDT01QJV17YmFja2dyb3VuZC1jb2xvcjojMDAwfS5tYXQtc2VsZWN0LXZhbHVlW19uZ2NvbnRlbnQtJUNPTVAlXXtjb2xvcjojMjEyMTIxfS5tYXQtc2VsZWN0LXBsYWNlaG9sZGVyW19uZ2NvbnRlbnQtJUNPTVAlXXtjb2xvcjpyZ2JhKDk3LDk3LDk3LC40Mil9Lm1hdC1zZWxlY3QtZGlzYWJsZWRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1zZWxlY3QtdmFsdWVbX25nY29udGVudC0lQ09NUCVde2NvbG9yOiM3NTc1NzV9Lm1hdC1zZWxlY3QtYXJyb3dbX25nY29udGVudC0lQ09NUCVde2NvbG9yOiM2MTYxNjF9Lm1hdC1zZWxlY3QtcGFuZWxbX25nY29udGVudC0lQ09NUCVde2JhY2tncm91bmQ6I2ZmZn0ubWF0LXNlbGVjdC1wYW5lbFtfbmdjb250ZW50LSVDT01QJV06bm90KFtjbGFzcyo9bWF0LWVsZXZhdGlvbi16XSl7Ym94LXNoYWRvdzowcHggMnB4IDRweCAtMXB4IHJnYmEoMCwgMCwgMCwgMC4yKSwwcHggNHB4IDVweCAwcHggcmdiYSgwLCAwLCAwLCAwLjE0KSwwcHggMXB4IDEwcHggMHB4IHJnYmEoMCwgMCwgMCwgMC4xMil9Lm1hdC1zZWxlY3QtcGFuZWxbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1vcHRpb24ubWF0LXNlbGVjdGVkW19uZ2NvbnRlbnQtJUNPTVAlXTpub3QoLm1hdC1vcHRpb24tbXVsdGlwbGUpe2JhY2tncm91bmQ6cmdiYSgwLDAsMCwuMTIpfS5tYXQtZm9ybS1maWVsZC5tYXQtZm9jdXNlZC5tYXQtcHJpbWFyeVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXNlbGVjdC1hcnJvd1tfbmdjb250ZW50LSVDT01QJV17Y29sb3I6I2Y1N2MwMH0ubWF0LWZvcm0tZmllbGQubWF0LWZvY3VzZWQubWF0LWFjY2VudFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXNlbGVjdC1hcnJvd1tfbmdjb250ZW50LSVDT01QJV17Y29sb3I6I2ZmOTgwMH0ubWF0LWZvcm0tZmllbGQubWF0LWZvY3VzZWQubWF0LXdhcm5bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1zZWxlY3QtYXJyb3dbX25nY29udGVudC0lQ09NUCVde2NvbG9yOiNmNDQzMzZ9Lm1hdC1mb3JtLWZpZWxkW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtc2VsZWN0Lm1hdC1zZWxlY3QtaW52YWxpZFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXNlbGVjdC1hcnJvd1tfbmdjb250ZW50LSVDT01QJV17Y29sb3I6I2Y0NDMzNn0ubWF0LWZvcm0tZmllbGRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1zZWxlY3QubWF0LXNlbGVjdC1kaXNhYmxlZFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXNlbGVjdC1hcnJvd1tfbmdjb250ZW50LSVDT01QJV17Y29sb3I6Izc1NzU3NX0ubWF0LWRyYXdlci1jb250YWluZXJbX25nY29udGVudC0lQ09NUCVde2JhY2tncm91bmQtY29sb3I6I2ZhZmFmYTtjb2xvcjojMjEyMTIxfS5tYXQtZHJhd2VyW19uZ2NvbnRlbnQtJUNPTVAlXXtiYWNrZ3JvdW5kLWNvbG9yOiNmZmY7Y29sb3I6IzIxMjEyMX0ubWF0LWRyYXdlci5tYXQtZHJhd2VyLXB1c2hbX25nY29udGVudC0lQ09NUCVde2JhY2tncm91bmQtY29sb3I6I2ZmZn0ubWF0LWRyYXdlcltfbmdjb250ZW50LSVDT01QJV06bm90KC5tYXQtZHJhd2VyLXNpZGUpe2JveC1zaGFkb3c6MHB4IDhweCAxMHB4IC01cHggcmdiYSgwLCAwLCAwLCAwLjIpLDBweCAxNnB4IDI0cHggMnB4IHJnYmEoMCwgMCwgMCwgMC4xNCksMHB4IDZweCAzMHB4IDVweCByZ2JhKDAsIDAsIDAsIDAuMTIpfS5tYXQtZHJhd2VyLXNpZGVbX25nY29udGVudC0lQ09NUCVde2JvcmRlci1yaWdodDpzb2xpZCAxcHggcmdiYSgwLDAsMCwuMTIpfS5tYXQtZHJhd2VyLXNpZGUubWF0LWRyYXdlci1lbmRbX25nY29udGVudC0lQ09NUCVde2JvcmRlci1sZWZ0OnNvbGlkIDFweCByZ2JhKDAsMCwwLC4xMik7Ym9yZGVyLXJpZ2h0Om5vbmV9W2Rpcj1ydGxdW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZHJhd2VyLXNpZGVbX25nY29udGVudC0lQ09NUCVde2JvcmRlci1sZWZ0OnNvbGlkIDFweCByZ2JhKDAsMCwwLC4xMik7Ym9yZGVyLXJpZ2h0Om5vbmV9W2Rpcj1ydGxdW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZHJhd2VyLXNpZGUubWF0LWRyYXdlci1lbmRbX25nY29udGVudC0lQ09NUCVde2JvcmRlci1sZWZ0Om5vbmU7Ym9yZGVyLXJpZ2h0OnNvbGlkIDFweCByZ2JhKDAsMCwwLC4xMil9Lm1hdC1kcmF3ZXItYmFja2Ryb3AubWF0LWRyYXdlci1zaG93bltfbmdjb250ZW50LSVDT01QJV17YmFja2dyb3VuZC1jb2xvcjpyZ2JhKDAsMCwwLC42KX0ubWF0LXNsaWRlLXRvZ2dsZS5tYXQtY2hlY2tlZFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXNsaWRlLXRvZ2dsZS10aHVtYltfbmdjb250ZW50LSVDT01QJV17YmFja2dyb3VuZC1jb2xvcjojZmY5ODAwfS5tYXQtc2xpZGUtdG9nZ2xlLm1hdC1jaGVja2VkW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtc2xpZGUtdG9nZ2xlLWJhcltfbmdjb250ZW50LSVDT01QJV17YmFja2dyb3VuZC1jb2xvcjpyZ2JhKDI1NSwxNTIsMCwuNTQpfS5tYXQtc2xpZGUtdG9nZ2xlLm1hdC1jaGVja2VkW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtcmlwcGxlLWVsZW1lbnRbX25nY29udGVudC0lQ09NUCVde2JhY2tncm91bmQtY29sb3I6I2ZmOTgwMH0ubWF0LXNsaWRlLXRvZ2dsZS5tYXQtcHJpbWFyeS5tYXQtY2hlY2tlZFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXNsaWRlLXRvZ2dsZS10aHVtYltfbmdjb250ZW50LSVDT01QJV17YmFja2dyb3VuZC1jb2xvcjojZjU3YzAwfS5tYXQtc2xpZGUtdG9nZ2xlLm1hdC1wcmltYXJ5Lm1hdC1jaGVja2VkW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtc2xpZGUtdG9nZ2xlLWJhcltfbmdjb250ZW50LSVDT01QJV17YmFja2dyb3VuZC1jb2xvcjpyZ2JhKDI0NSwxMjQsMCwuNTQpfS5tYXQtc2xpZGUtdG9nZ2xlLm1hdC1wcmltYXJ5Lm1hdC1jaGVja2VkW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtcmlwcGxlLWVsZW1lbnRbX25nY29udGVudC0lQ09NUCVde2JhY2tncm91bmQtY29sb3I6I2Y1N2MwMH0ubWF0LXNsaWRlLXRvZ2dsZS5tYXQtd2Fybi5tYXQtY2hlY2tlZFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXNsaWRlLXRvZ2dsZS10aHVtYltfbmdjb250ZW50LSVDT01QJV17YmFja2dyb3VuZC1jb2xvcjojZjQ0MzM2fS5tYXQtc2xpZGUtdG9nZ2xlLm1hdC13YXJuLm1hdC1jaGVja2VkW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtc2xpZGUtdG9nZ2xlLWJhcltfbmdjb250ZW50LSVDT01QJV17YmFja2dyb3VuZC1jb2xvcjpyZ2JhKDI0NCw2Nyw1NCwuNTQpfS5tYXQtc2xpZGUtdG9nZ2xlLm1hdC13YXJuLm1hdC1jaGVja2VkW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtcmlwcGxlLWVsZW1lbnRbX25nY29udGVudC0lQ09NUCVde2JhY2tncm91bmQtY29sb3I6I2Y0NDMzNn0ubWF0LXNsaWRlLXRvZ2dsZVtfbmdjb250ZW50LSVDT01QJV06bm90KC5tYXQtY2hlY2tlZCkgICAubWF0LXJpcHBsZS1lbGVtZW50W19uZ2NvbnRlbnQtJUNPTVAlXXtiYWNrZ3JvdW5kLWNvbG9yOiMwMDB9Lm1hdC1zbGlkZS10b2dnbGUtdGh1bWJbX25nY29udGVudC0lQ09NUCVde2JveC1zaGFkb3c6MHB4IDJweCAxcHggLTFweCByZ2JhKDAsIDAsIDAsIDAuMiksMHB4IDFweCAxcHggMHB4IHJnYmEoMCwgMCwgMCwgMC4xNCksMHB4IDFweCAzcHggMHB4IHJnYmEoMCwgMCwgMCwgMC4xMik7YmFja2dyb3VuZC1jb2xvcjojZmFmYWZhfS5tYXQtc2xpZGUtdG9nZ2xlLWJhcltfbmdjb250ZW50LSVDT01QJV17YmFja2dyb3VuZC1jb2xvcjpyZ2JhKDAsMCwwLC4zOCl9Lm1hdC1zbGlkZXItdHJhY2stYmFja2dyb3VuZFtfbmdjb250ZW50LSVDT01QJV17YmFja2dyb3VuZC1jb2xvcjpyZ2JhKDAsMCwwLC4yNil9Lm1hdC1wcmltYXJ5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtc2xpZGVyLXRyYWNrLWZpbGxbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXByaW1hcnlbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1zbGlkZXItdGh1bWJbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXByaW1hcnlbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1zbGlkZXItdGh1bWItbGFiZWxbX25nY29udGVudC0lQ09NUCVde2JhY2tncm91bmQtY29sb3I6I2Y1N2MwMH0ubWF0LXByaW1hcnlbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1zbGlkZXItdGh1bWItbGFiZWwtdGV4dFtfbmdjb250ZW50LSVDT01QJV17Y29sb3I6I2ZmZn0ubWF0LXByaW1hcnlbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1zbGlkZXItZm9jdXMtcmluZ1tfbmdjb250ZW50LSVDT01QJV17YmFja2dyb3VuZC1jb2xvcjpyZ2JhKDI0NSwxMjQsMCwuMil9Lm1hdC1hY2NlbnRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1zbGlkZXItdHJhY2stZmlsbFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtYWNjZW50W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtc2xpZGVyLXRodW1iW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1hY2NlbnRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1zbGlkZXItdGh1bWItbGFiZWxbX25nY29udGVudC0lQ09NUCVde2JhY2tncm91bmQtY29sb3I6I2ZmOTgwMH0ubWF0LWFjY2VudFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXNsaWRlci10aHVtYi1sYWJlbC10ZXh0W19uZ2NvbnRlbnQtJUNPTVAlXXtjb2xvcjojZmZmfS5tYXQtYWNjZW50W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtc2xpZGVyLWZvY3VzLXJpbmdbX25nY29udGVudC0lQ09NUCVde2JhY2tncm91bmQtY29sb3I6cmdiYSgyNTUsMTUyLDAsLjIpfS5tYXQtd2Fybltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXNsaWRlci10cmFjay1maWxsW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC13YXJuW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtc2xpZGVyLXRodW1iW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC13YXJuW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtc2xpZGVyLXRodW1iLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXtiYWNrZ3JvdW5kLWNvbG9yOiNmNDQzMzZ9Lm1hdC13YXJuW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtc2xpZGVyLXRodW1iLWxhYmVsLXRleHRbX25nY29udGVudC0lQ09NUCVde2NvbG9yOiNmZmZ9Lm1hdC13YXJuW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtc2xpZGVyLWZvY3VzLXJpbmdbX25nY29udGVudC0lQ09NUCVde2JhY2tncm91bmQtY29sb3I6cmdiYSgyNDQsNjcsNTQsLjIpfS5tYXQtc2xpZGVyW19uZ2NvbnRlbnQtJUNPTVAlXTpob3ZlciAgIC5tYXQtc2xpZGVyLXRyYWNrLWJhY2tncm91bmRbX25nY29udGVudC0lQ09NUCVdLCAuY2RrLWZvY3VzZWRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1zbGlkZXItdHJhY2stYmFja2dyb3VuZFtfbmdjb250ZW50LSVDT01QJV17YmFja2dyb3VuZC1jb2xvcjpyZ2JhKDAsMCwwLC4zOCl9Lm1hdC1zbGlkZXItZGlzYWJsZWRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1zbGlkZXItdHJhY2stYmFja2dyb3VuZFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtc2xpZGVyLWRpc2FibGVkW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtc2xpZGVyLXRyYWNrLWZpbGxbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXNsaWRlci1kaXNhYmxlZFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXNsaWRlci10aHVtYltfbmdjb250ZW50LSVDT01QJV17YmFja2dyb3VuZC1jb2xvcjpyZ2JhKDAsMCwwLC4yNil9Lm1hdC1zbGlkZXItZGlzYWJsZWRbX25nY29udGVudC0lQ09NUCVdOmhvdmVyICAgLm1hdC1zbGlkZXItdHJhY2stYmFja2dyb3VuZFtfbmdjb250ZW50LSVDT01QJV17YmFja2dyb3VuZC1jb2xvcjpyZ2JhKDAsMCwwLC4yNil9Lm1hdC1zbGlkZXItbWluLXZhbHVlW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtc2xpZGVyLWZvY3VzLXJpbmdbX25nY29udGVudC0lQ09NUCVde2JhY2tncm91bmQtY29sb3I6cmdiYSgwLDAsMCwuMTIpfS5tYXQtc2xpZGVyLW1pbi12YWx1ZS5tYXQtc2xpZGVyLXRodW1iLWxhYmVsLXNob3dpbmdbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1zbGlkZXItdGh1bWJbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXNsaWRlci1taW4tdmFsdWUubWF0LXNsaWRlci10aHVtYi1sYWJlbC1zaG93aW5nW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtc2xpZGVyLXRodW1iLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXtiYWNrZ3JvdW5kLWNvbG9yOnJnYmEoMCwwLDAsLjg3KX0ubWF0LXNsaWRlci1taW4tdmFsdWUubWF0LXNsaWRlci10aHVtYi1sYWJlbC1zaG93aW5nLmNkay1mb2N1c2VkW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtc2xpZGVyLXRodW1iW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1zbGlkZXItbWluLXZhbHVlLm1hdC1zbGlkZXItdGh1bWItbGFiZWwtc2hvd2luZy5jZGstZm9jdXNlZFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXNsaWRlci10aHVtYi1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17YmFja2dyb3VuZC1jb2xvcjpyZ2JhKDAsMCwwLC4yNil9Lm1hdC1zbGlkZXItbWluLXZhbHVlW19uZ2NvbnRlbnQtJUNPTVAlXTpub3QoLm1hdC1zbGlkZXItdGh1bWItbGFiZWwtc2hvd2luZykgICAubWF0LXNsaWRlci10aHVtYltfbmdjb250ZW50LSVDT01QJV17Ym9yZGVyLWNvbG9yOnJnYmEoMCwwLDAsLjI2KTtiYWNrZ3JvdW5kLWNvbG9yOnRyYW5zcGFyZW50fS5tYXQtc2xpZGVyLW1pbi12YWx1ZVtfbmdjb250ZW50LSVDT01QJV06bm90KC5tYXQtc2xpZGVyLXRodW1iLWxhYmVsLXNob3dpbmcpOmhvdmVyICAgLm1hdC1zbGlkZXItdGh1bWJbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXNsaWRlci1taW4tdmFsdWVbX25nY29udGVudC0lQ09NUCVdOm5vdCgubWF0LXNsaWRlci10aHVtYi1sYWJlbC1zaG93aW5nKS5jZGstZm9jdXNlZCAgIC5tYXQtc2xpZGVyLXRodW1iW19uZ2NvbnRlbnQtJUNPTVAlXXtib3JkZXItY29sb3I6cmdiYSgwLDAsMCwuMzgpfS5tYXQtc2xpZGVyLW1pbi12YWx1ZVtfbmdjb250ZW50LSVDT01QJV06bm90KC5tYXQtc2xpZGVyLXRodW1iLWxhYmVsLXNob3dpbmcpOmhvdmVyLm1hdC1zbGlkZXItZGlzYWJsZWQgICAubWF0LXNsaWRlci10aHVtYltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtc2xpZGVyLW1pbi12YWx1ZVtfbmdjb250ZW50LSVDT01QJV06bm90KC5tYXQtc2xpZGVyLXRodW1iLWxhYmVsLXNob3dpbmcpLmNkay1mb2N1c2VkLm1hdC1zbGlkZXItZGlzYWJsZWQgICAubWF0LXNsaWRlci10aHVtYltfbmdjb250ZW50LSVDT01QJV17Ym9yZGVyLWNvbG9yOnJnYmEoMCwwLDAsLjI2KX0ubWF0LXNsaWRlci1oYXMtdGlja3NbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1zbGlkZXItd3JhcHBlcltfbmdjb250ZW50LSVDT01QJV06OmFmdGVye2JvcmRlci1jb2xvcjpyZ2JhKDAsMCwwLC43KX0ubWF0LXNsaWRlci1ob3Jpem9udGFsW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtc2xpZGVyLXRpY2tzW19uZ2NvbnRlbnQtJUNPTVAlXXtiYWNrZ3JvdW5kLWltYWdlOnJlcGVhdGluZy1saW5lYXItZ3JhZGllbnQodG8gcmlnaHQsIHJnYmEoMCwgMCwgMCwgMC43KSwgcmdiYSgwLCAwLCAwLCAwLjcpIDJweCwgdHJhbnNwYXJlbnQgMCwgdHJhbnNwYXJlbnQpO2JhY2tncm91bmQtaW1hZ2U6LW1vei1yZXBlYXRpbmctbGluZWFyLWdyYWRpZW50KDAuMDAwMWRlZywgcmdiYSgwLCAwLCAwLCAwLjcpLCByZ2JhKDAsIDAsIDAsIDAuNykgMnB4LCB0cmFuc3BhcmVudCAwLCB0cmFuc3BhcmVudCl9Lm1hdC1zbGlkZXItdmVydGljYWxbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1zbGlkZXItdGlja3NbX25nY29udGVudC0lQ09NUCVde2JhY2tncm91bmQtaW1hZ2U6cmVwZWF0aW5nLWxpbmVhci1ncmFkaWVudCh0byBib3R0b20sIHJnYmEoMCwgMCwgMCwgMC43KSwgcmdiYSgwLCAwLCAwLCAwLjcpIDJweCwgdHJhbnNwYXJlbnQgMCwgdHJhbnNwYXJlbnQpfS5tYXQtc3RlcC1oZWFkZXIuY2RrLWtleWJvYXJkLWZvY3VzZWRbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXN0ZXAtaGVhZGVyLmNkay1wcm9ncmFtLWZvY3VzZWRbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXN0ZXAtaGVhZGVyW19uZ2NvbnRlbnQtJUNPTVAlXTpob3ZlcntiYWNrZ3JvdW5kLWNvbG9yOnJnYmEoMCwwLDAsLjA0KX1AbWVkaWEoaG92ZXI6IG5vbmUpey5tYXQtc3RlcC1oZWFkZXJbX25nY29udGVudC0lQ09NUCVdOmhvdmVye2JhY2tncm91bmQ6bm9uZX19Lm1hdC1zdGVwLWhlYWRlcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXN0ZXAtbGFiZWxbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXN0ZXAtaGVhZGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtc3RlcC1vcHRpb25hbFtfbmdjb250ZW50LSVDT01QJV17Y29sb3I6IzYxNjE2MX0ubWF0LXN0ZXAtaGVhZGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtc3RlcC1pY29uW19uZ2NvbnRlbnQtJUNPTVAlXXtiYWNrZ3JvdW5kLWNvbG9yOiM2MTYxNjE7Y29sb3I6I2ZmZn0ubWF0LXN0ZXAtaGVhZGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtc3RlcC1pY29uLXNlbGVjdGVkW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1zdGVwLWhlYWRlcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXN0ZXAtaWNvbi1zdGF0ZS1kb25lW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1zdGVwLWhlYWRlcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXN0ZXAtaWNvbi1zdGF0ZS1lZGl0W19uZ2NvbnRlbnQtJUNPTVAlXXtiYWNrZ3JvdW5kLWNvbG9yOiNmNTdjMDA7Y29sb3I6I2ZmZn0ubWF0LXN0ZXAtaGVhZGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtc3RlcC1pY29uLXN0YXRlLWVycm9yW19uZ2NvbnRlbnQtJUNPTVAlXXtiYWNrZ3JvdW5kLWNvbG9yOnRyYW5zcGFyZW50O2NvbG9yOiNmNDQzMzZ9Lm1hdC1zdGVwLWhlYWRlcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXN0ZXAtbGFiZWwubWF0LXN0ZXAtbGFiZWwtYWN0aXZlW19uZ2NvbnRlbnQtJUNPTVAlXXtjb2xvcjojMjEyMTIxfS5tYXQtc3RlcC1oZWFkZXJbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1zdGVwLWxhYmVsLm1hdC1zdGVwLWxhYmVsLWVycm9yW19uZ2NvbnRlbnQtJUNPTVAlXXtjb2xvcjojZjQ0MzM2fS5tYXQtc3RlcHBlci1ob3Jpem9udGFsW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1zdGVwcGVyLXZlcnRpY2FsW19uZ2NvbnRlbnQtJUNPTVAlXXtiYWNrZ3JvdW5kLWNvbG9yOiNmZmZ9Lm1hdC1zdGVwcGVyLXZlcnRpY2FsLWxpbmVbX25nY29udGVudC0lQ09NUCVdOjpiZWZvcmV7Ym9yZGVyLWxlZnQtY29sb3I6cmdiYSgwLDAsMCwuMTIpfS5tYXQtaG9yaXpvbnRhbC1zdGVwcGVyLWhlYWRlcltfbmdjb250ZW50LSVDT01QJV06OmJlZm9yZSwgLm1hdC1ob3Jpem9udGFsLXN0ZXBwZXItaGVhZGVyW19uZ2NvbnRlbnQtJUNPTVAlXTo6YWZ0ZXIsIC5tYXQtc3RlcHBlci1ob3Jpem9udGFsLWxpbmVbX25nY29udGVudC0lQ09NUCVde2JvcmRlci10b3AtY29sb3I6cmdiYSgwLDAsMCwuMTIpfS5tYXQtaG9yaXpvbnRhbC1zdGVwcGVyLWhlYWRlcltfbmdjb250ZW50LSVDT01QJV17aGVpZ2h0OjcycHh9Lm1hdC1zdGVwcGVyLWxhYmVsLXBvc2l0aW9uLWJvdHRvbVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWhvcml6b250YWwtc3RlcHBlci1oZWFkZXJbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXZlcnRpY2FsLXN0ZXBwZXItaGVhZGVyW19uZ2NvbnRlbnQtJUNPTVAlXXtwYWRkaW5nOjI0cHggMjRweH0ubWF0LXN0ZXBwZXItdmVydGljYWwtbGluZVtfbmdjb250ZW50LSVDT01QJV06OmJlZm9yZXt0b3A6LTE2cHg7Ym90dG9tOi0xNnB4fS5tYXQtc3RlcHBlci1sYWJlbC1wb3NpdGlvbi1ib3R0b21bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1ob3Jpem9udGFsLXN0ZXBwZXItaGVhZGVyW19uZ2NvbnRlbnQtJUNPTVAlXTo6YWZ0ZXIsIC5tYXQtc3RlcHBlci1sYWJlbC1wb3NpdGlvbi1ib3R0b21bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1ob3Jpem9udGFsLXN0ZXBwZXItaGVhZGVyW19uZ2NvbnRlbnQtJUNPTVAlXTo6YmVmb3Jle3RvcDozNnB4fS5tYXQtc3RlcHBlci1sYWJlbC1wb3NpdGlvbi1ib3R0b21bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1zdGVwcGVyLWhvcml6b250YWwtbGluZVtfbmdjb250ZW50LSVDT01QJV17dG9wOjM2cHh9Lm1hdC1zb3J0LWhlYWRlci1hcnJvd1tfbmdjb250ZW50LSVDT01QJV17Y29sb3I6IzYxNjE2MX0ubWF0LXRhYi1uYXYtYmFyW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10YWItaGVhZGVyW19uZ2NvbnRlbnQtJUNPTVAlXXtib3JkZXItYm90dG9tOjFweCBzb2xpZCByZ2JhKDAsMCwwLC4xMil9Lm1hdC10YWItZ3JvdXAtaW52ZXJ0ZWQtaGVhZGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtdGFiLW5hdi1iYXJbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXRhYi1ncm91cC1pbnZlcnRlZC1oZWFkZXJbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC10YWItaGVhZGVyW19uZ2NvbnRlbnQtJUNPTVAlXXtib3JkZXItdG9wOjFweCBzb2xpZCByZ2JhKDAsMCwwLC4xMik7Ym9yZGVyLWJvdHRvbTpub25lfS5tYXQtdGFiLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10YWItbGlua1tfbmdjb250ZW50LSVDT01QJV17Y29sb3I6IzIxMjEyMX0ubWF0LXRhYi1sYWJlbC5tYXQtdGFiLWRpc2FibGVkW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10YWItbGluay5tYXQtdGFiLWRpc2FibGVkW19uZ2NvbnRlbnQtJUNPTVAlXXtjb2xvcjojNzU3NTc1fS5tYXQtdGFiLWhlYWRlci1wYWdpbmF0aW9uLWNoZXZyb25bX25nY29udGVudC0lQ09NUCVde2JvcmRlci1jb2xvcjojMjEyMTIxfS5tYXQtdGFiLWhlYWRlci1wYWdpbmF0aW9uLWRpc2FibGVkW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtdGFiLWhlYWRlci1wYWdpbmF0aW9uLWNoZXZyb25bX25nY29udGVudC0lQ09NUCVde2JvcmRlci1jb2xvcjojNzU3NTc1fS5tYXQtdGFiLWdyb3VwW2NsYXNzKj1tYXQtYmFja2dyb3VuZC1dW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtdGFiLWhlYWRlcltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdGFiLW5hdi1iYXJbY2xhc3MqPW1hdC1iYWNrZ3JvdW5kLV1bX25nY29udGVudC0lQ09NUCVde2JvcmRlci1ib3R0b206bm9uZTtib3JkZXItdG9wOm5vbmV9Lm1hdC10YWItZ3JvdXAubWF0LXByaW1hcnlbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC10YWItbGFiZWwuY2RrLWtleWJvYXJkLWZvY3VzZWRbX25nY29udGVudC0lQ09NUCVdOm5vdCgubWF0LXRhYi1kaXNhYmxlZCksIC5tYXQtdGFiLWdyb3VwLm1hdC1wcmltYXJ5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtdGFiLWxhYmVsLmNkay1wcm9ncmFtLWZvY3VzZWRbX25nY29udGVudC0lQ09NUCVdOm5vdCgubWF0LXRhYi1kaXNhYmxlZCksIC5tYXQtdGFiLWdyb3VwLm1hdC1wcmltYXJ5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtdGFiLWxpbmsuY2RrLWtleWJvYXJkLWZvY3VzZWRbX25nY29udGVudC0lQ09NUCVdOm5vdCgubWF0LXRhYi1kaXNhYmxlZCksIC5tYXQtdGFiLWdyb3VwLm1hdC1wcmltYXJ5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtdGFiLWxpbmsuY2RrLXByb2dyYW0tZm9jdXNlZFtfbmdjb250ZW50LSVDT01QJV06bm90KC5tYXQtdGFiLWRpc2FibGVkKSwgLm1hdC10YWItbmF2LWJhci5tYXQtcHJpbWFyeVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXRhYi1sYWJlbC5jZGsta2V5Ym9hcmQtZm9jdXNlZFtfbmdjb250ZW50LSVDT01QJV06bm90KC5tYXQtdGFiLWRpc2FibGVkKSwgLm1hdC10YWItbmF2LWJhci5tYXQtcHJpbWFyeVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXRhYi1sYWJlbC5jZGstcHJvZ3JhbS1mb2N1c2VkW19uZ2NvbnRlbnQtJUNPTVAlXTpub3QoLm1hdC10YWItZGlzYWJsZWQpLCAubWF0LXRhYi1uYXYtYmFyLm1hdC1wcmltYXJ5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtdGFiLWxpbmsuY2RrLWtleWJvYXJkLWZvY3VzZWRbX25nY29udGVudC0lQ09NUCVdOm5vdCgubWF0LXRhYi1kaXNhYmxlZCksIC5tYXQtdGFiLW5hdi1iYXIubWF0LXByaW1hcnlbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC10YWItbGluay5jZGstcHJvZ3JhbS1mb2N1c2VkW19uZ2NvbnRlbnQtJUNPTVAlXTpub3QoLm1hdC10YWItZGlzYWJsZWQpe2JhY2tncm91bmQtY29sb3I6cmdiYSgyNTUsMTUyLDAsLjMpfS5tYXQtdGFiLWdyb3VwLm1hdC1wcmltYXJ5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaW5rLWJhcltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdGFiLW5hdi1iYXIubWF0LXByaW1hcnlbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pbmstYmFyW19uZ2NvbnRlbnQtJUNPTVAlXXtiYWNrZ3JvdW5kLWNvbG9yOiNmNTdjMDB9Lm1hdC10YWItZ3JvdXAubWF0LXByaW1hcnkubWF0LWJhY2tncm91bmQtcHJpbWFyeVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWluay1iYXJbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXRhYi1uYXYtYmFyLm1hdC1wcmltYXJ5Lm1hdC1iYWNrZ3JvdW5kLXByaW1hcnlbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pbmstYmFyW19uZ2NvbnRlbnQtJUNPTVAlXXtiYWNrZ3JvdW5kLWNvbG9yOiNmZmZ9Lm1hdC10YWItZ3JvdXAubWF0LWFjY2VudFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXRhYi1sYWJlbC5jZGsta2V5Ym9hcmQtZm9jdXNlZFtfbmdjb250ZW50LSVDT01QJV06bm90KC5tYXQtdGFiLWRpc2FibGVkKSwgLm1hdC10YWItZ3JvdXAubWF0LWFjY2VudFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXRhYi1sYWJlbC5jZGstcHJvZ3JhbS1mb2N1c2VkW19uZ2NvbnRlbnQtJUNPTVAlXTpub3QoLm1hdC10YWItZGlzYWJsZWQpLCAubWF0LXRhYi1ncm91cC5tYXQtYWNjZW50W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtdGFiLWxpbmsuY2RrLWtleWJvYXJkLWZvY3VzZWRbX25nY29udGVudC0lQ09NUCVdOm5vdCgubWF0LXRhYi1kaXNhYmxlZCksIC5tYXQtdGFiLWdyb3VwLm1hdC1hY2NlbnRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC10YWItbGluay5jZGstcHJvZ3JhbS1mb2N1c2VkW19uZ2NvbnRlbnQtJUNPTVAlXTpub3QoLm1hdC10YWItZGlzYWJsZWQpLCAubWF0LXRhYi1uYXYtYmFyLm1hdC1hY2NlbnRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC10YWItbGFiZWwuY2RrLWtleWJvYXJkLWZvY3VzZWRbX25nY29udGVudC0lQ09NUCVdOm5vdCgubWF0LXRhYi1kaXNhYmxlZCksIC5tYXQtdGFiLW5hdi1iYXIubWF0LWFjY2VudFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXRhYi1sYWJlbC5jZGstcHJvZ3JhbS1mb2N1c2VkW19uZ2NvbnRlbnQtJUNPTVAlXTpub3QoLm1hdC10YWItZGlzYWJsZWQpLCAubWF0LXRhYi1uYXYtYmFyLm1hdC1hY2NlbnRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC10YWItbGluay5jZGsta2V5Ym9hcmQtZm9jdXNlZFtfbmdjb250ZW50LSVDT01QJV06bm90KC5tYXQtdGFiLWRpc2FibGVkKSwgLm1hdC10YWItbmF2LWJhci5tYXQtYWNjZW50W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtdGFiLWxpbmsuY2RrLXByb2dyYW0tZm9jdXNlZFtfbmdjb250ZW50LSVDT01QJV06bm90KC5tYXQtdGFiLWRpc2FibGVkKXtiYWNrZ3JvdW5kLWNvbG9yOnJnYmEoMjU1LDE1MiwwLC4zKX0ubWF0LXRhYi1ncm91cC5tYXQtYWNjZW50W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaW5rLWJhcltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdGFiLW5hdi1iYXIubWF0LWFjY2VudFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWluay1iYXJbX25nY29udGVudC0lQ09NUCVde2JhY2tncm91bmQtY29sb3I6I2ZmOTgwMH0ubWF0LXRhYi1ncm91cC5tYXQtYWNjZW50Lm1hdC1iYWNrZ3JvdW5kLWFjY2VudFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWluay1iYXJbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXRhYi1uYXYtYmFyLm1hdC1hY2NlbnQubWF0LWJhY2tncm91bmQtYWNjZW50W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaW5rLWJhcltfbmdjb250ZW50LSVDT01QJV17YmFja2dyb3VuZC1jb2xvcjojZmZmfS5tYXQtdGFiLWdyb3VwLm1hdC13YXJuW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtdGFiLWxhYmVsLmNkay1rZXlib2FyZC1mb2N1c2VkW19uZ2NvbnRlbnQtJUNPTVAlXTpub3QoLm1hdC10YWItZGlzYWJsZWQpLCAubWF0LXRhYi1ncm91cC5tYXQtd2Fybltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXRhYi1sYWJlbC5jZGstcHJvZ3JhbS1mb2N1c2VkW19uZ2NvbnRlbnQtJUNPTVAlXTpub3QoLm1hdC10YWItZGlzYWJsZWQpLCAubWF0LXRhYi1ncm91cC5tYXQtd2Fybltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXRhYi1saW5rLmNkay1rZXlib2FyZC1mb2N1c2VkW19uZ2NvbnRlbnQtJUNPTVAlXTpub3QoLm1hdC10YWItZGlzYWJsZWQpLCAubWF0LXRhYi1ncm91cC5tYXQtd2Fybltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXRhYi1saW5rLmNkay1wcm9ncmFtLWZvY3VzZWRbX25nY29udGVudC0lQ09NUCVdOm5vdCgubWF0LXRhYi1kaXNhYmxlZCksIC5tYXQtdGFiLW5hdi1iYXIubWF0LXdhcm5bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC10YWItbGFiZWwuY2RrLWtleWJvYXJkLWZvY3VzZWRbX25nY29udGVudC0lQ09NUCVdOm5vdCgubWF0LXRhYi1kaXNhYmxlZCksIC5tYXQtdGFiLW5hdi1iYXIubWF0LXdhcm5bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC10YWItbGFiZWwuY2RrLXByb2dyYW0tZm9jdXNlZFtfbmdjb250ZW50LSVDT01QJV06bm90KC5tYXQtdGFiLWRpc2FibGVkKSwgLm1hdC10YWItbmF2LWJhci5tYXQtd2Fybltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXRhYi1saW5rLmNkay1rZXlib2FyZC1mb2N1c2VkW19uZ2NvbnRlbnQtJUNPTVAlXTpub3QoLm1hdC10YWItZGlzYWJsZWQpLCAubWF0LXRhYi1uYXYtYmFyLm1hdC13YXJuW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtdGFiLWxpbmsuY2RrLXByb2dyYW0tZm9jdXNlZFtfbmdjb250ZW50LSVDT01QJV06bm90KC5tYXQtdGFiLWRpc2FibGVkKXtiYWNrZ3JvdW5kLWNvbG9yOnJnYmEoMjU1LDIwNSwyMTAsLjMpfS5tYXQtdGFiLWdyb3VwLm1hdC13YXJuW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaW5rLWJhcltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdGFiLW5hdi1iYXIubWF0LXdhcm5bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pbmstYmFyW19uZ2NvbnRlbnQtJUNPTVAlXXtiYWNrZ3JvdW5kLWNvbG9yOiNmNDQzMzZ9Lm1hdC10YWItZ3JvdXAubWF0LXdhcm4ubWF0LWJhY2tncm91bmQtd2Fybltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWluay1iYXJbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXRhYi1uYXYtYmFyLm1hdC13YXJuLm1hdC1iYWNrZ3JvdW5kLXdhcm5bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pbmstYmFyW19uZ2NvbnRlbnQtJUNPTVAlXXtiYWNrZ3JvdW5kLWNvbG9yOiNmZmZ9Lm1hdC10YWItZ3JvdXAubWF0LWJhY2tncm91bmQtcHJpbWFyeVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXRhYi1sYWJlbC5jZGsta2V5Ym9hcmQtZm9jdXNlZFtfbmdjb250ZW50LSVDT01QJV06bm90KC5tYXQtdGFiLWRpc2FibGVkKSwgLm1hdC10YWItZ3JvdXAubWF0LWJhY2tncm91bmQtcHJpbWFyeVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXRhYi1sYWJlbC5jZGstcHJvZ3JhbS1mb2N1c2VkW19uZ2NvbnRlbnQtJUNPTVAlXTpub3QoLm1hdC10YWItZGlzYWJsZWQpLCAubWF0LXRhYi1ncm91cC5tYXQtYmFja2dyb3VuZC1wcmltYXJ5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtdGFiLWxpbmsuY2RrLWtleWJvYXJkLWZvY3VzZWRbX25nY29udGVudC0lQ09NUCVdOm5vdCgubWF0LXRhYi1kaXNhYmxlZCksIC5tYXQtdGFiLWdyb3VwLm1hdC1iYWNrZ3JvdW5kLXByaW1hcnlbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC10YWItbGluay5jZGstcHJvZ3JhbS1mb2N1c2VkW19uZ2NvbnRlbnQtJUNPTVAlXTpub3QoLm1hdC10YWItZGlzYWJsZWQpLCAubWF0LXRhYi1uYXYtYmFyLm1hdC1iYWNrZ3JvdW5kLXByaW1hcnlbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC10YWItbGFiZWwuY2RrLWtleWJvYXJkLWZvY3VzZWRbX25nY29udGVudC0lQ09NUCVdOm5vdCgubWF0LXRhYi1kaXNhYmxlZCksIC5tYXQtdGFiLW5hdi1iYXIubWF0LWJhY2tncm91bmQtcHJpbWFyeVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXRhYi1sYWJlbC5jZGstcHJvZ3JhbS1mb2N1c2VkW19uZ2NvbnRlbnQtJUNPTVAlXTpub3QoLm1hdC10YWItZGlzYWJsZWQpLCAubWF0LXRhYi1uYXYtYmFyLm1hdC1iYWNrZ3JvdW5kLXByaW1hcnlbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC10YWItbGluay5jZGsta2V5Ym9hcmQtZm9jdXNlZFtfbmdjb250ZW50LSVDT01QJV06bm90KC5tYXQtdGFiLWRpc2FibGVkKSwgLm1hdC10YWItbmF2LWJhci5tYXQtYmFja2dyb3VuZC1wcmltYXJ5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtdGFiLWxpbmsuY2RrLXByb2dyYW0tZm9jdXNlZFtfbmdjb250ZW50LSVDT01QJV06bm90KC5tYXQtdGFiLWRpc2FibGVkKXtiYWNrZ3JvdW5kLWNvbG9yOnJnYmEoMjU1LDE1MiwwLC4zKX0ubWF0LXRhYi1ncm91cC5tYXQtYmFja2dyb3VuZC1wcmltYXJ5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtdGFiLWhlYWRlcltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdGFiLWdyb3VwLm1hdC1iYWNrZ3JvdW5kLXByaW1hcnlbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC10YWItbGlua3NbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXRhYi1ncm91cC5tYXQtYmFja2dyb3VuZC1wcmltYXJ5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtdGFiLWhlYWRlci1wYWdpbmF0aW9uW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10YWItbmF2LWJhci5tYXQtYmFja2dyb3VuZC1wcmltYXJ5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtdGFiLWhlYWRlcltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdGFiLW5hdi1iYXIubWF0LWJhY2tncm91bmQtcHJpbWFyeVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXRhYi1saW5rc1tfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdGFiLW5hdi1iYXIubWF0LWJhY2tncm91bmQtcHJpbWFyeVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXRhYi1oZWFkZXItcGFnaW5hdGlvbltfbmdjb250ZW50LSVDT01QJV17YmFja2dyb3VuZC1jb2xvcjojZjU3YzAwfS5tYXQtdGFiLWdyb3VwLm1hdC1iYWNrZ3JvdW5kLXByaW1hcnlbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC10YWItbGFiZWxbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXRhYi1ncm91cC5tYXQtYmFja2dyb3VuZC1wcmltYXJ5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtdGFiLWxpbmtbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXRhYi1uYXYtYmFyLm1hdC1iYWNrZ3JvdW5kLXByaW1hcnlbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC10YWItbGFiZWxbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXRhYi1uYXYtYmFyLm1hdC1iYWNrZ3JvdW5kLXByaW1hcnlbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC10YWItbGlua1tfbmdjb250ZW50LSVDT01QJV17Y29sb3I6I2ZmZn0ubWF0LXRhYi1ncm91cC5tYXQtYmFja2dyb3VuZC1wcmltYXJ5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtdGFiLWxhYmVsLm1hdC10YWItZGlzYWJsZWRbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXRhYi1ncm91cC5tYXQtYmFja2dyb3VuZC1wcmltYXJ5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtdGFiLWxpbmsubWF0LXRhYi1kaXNhYmxlZFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdGFiLW5hdi1iYXIubWF0LWJhY2tncm91bmQtcHJpbWFyeVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXRhYi1sYWJlbC5tYXQtdGFiLWRpc2FibGVkW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10YWItbmF2LWJhci5tYXQtYmFja2dyb3VuZC1wcmltYXJ5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtdGFiLWxpbmsubWF0LXRhYi1kaXNhYmxlZFtfbmdjb250ZW50LSVDT01QJV17Y29sb3I6cmdiYSgyNTUsMjU1LDI1NSwuNCl9Lm1hdC10YWItZ3JvdXAubWF0LWJhY2tncm91bmQtcHJpbWFyeVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXRhYi1oZWFkZXItcGFnaW5hdGlvbi1jaGV2cm9uW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10YWItbmF2LWJhci5tYXQtYmFja2dyb3VuZC1wcmltYXJ5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtdGFiLWhlYWRlci1wYWdpbmF0aW9uLWNoZXZyb25bX25nY29udGVudC0lQ09NUCVde2JvcmRlci1jb2xvcjojZmZmfS5tYXQtdGFiLWdyb3VwLm1hdC1iYWNrZ3JvdW5kLXByaW1hcnlbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC10YWItaGVhZGVyLXBhZ2luYXRpb24tZGlzYWJsZWRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC10YWItaGVhZGVyLXBhZ2luYXRpb24tY2hldnJvbltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdGFiLW5hdi1iYXIubWF0LWJhY2tncm91bmQtcHJpbWFyeVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXRhYi1oZWFkZXItcGFnaW5hdGlvbi1kaXNhYmxlZFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXRhYi1oZWFkZXItcGFnaW5hdGlvbi1jaGV2cm9uW19uZ2NvbnRlbnQtJUNPTVAlXXtib3JkZXItY29sb3I6cmdiYSgyNTUsMjU1LDI1NSwuNCl9Lm1hdC10YWItZ3JvdXAubWF0LWJhY2tncm91bmQtcHJpbWFyeVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXJpcHBsZS1lbGVtZW50W19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10YWItbmF2LWJhci5tYXQtYmFja2dyb3VuZC1wcmltYXJ5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtcmlwcGxlLWVsZW1lbnRbX25nY29udGVudC0lQ09NUCVde2JhY2tncm91bmQtY29sb3I6cmdiYSgyNTUsMjU1LDI1NSwuMTIpfS5tYXQtdGFiLWdyb3VwLm1hdC1iYWNrZ3JvdW5kLWFjY2VudFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXRhYi1sYWJlbC5jZGsta2V5Ym9hcmQtZm9jdXNlZFtfbmdjb250ZW50LSVDT01QJV06bm90KC5tYXQtdGFiLWRpc2FibGVkKSwgLm1hdC10YWItZ3JvdXAubWF0LWJhY2tncm91bmQtYWNjZW50W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtdGFiLWxhYmVsLmNkay1wcm9ncmFtLWZvY3VzZWRbX25nY29udGVudC0lQ09NUCVdOm5vdCgubWF0LXRhYi1kaXNhYmxlZCksIC5tYXQtdGFiLWdyb3VwLm1hdC1iYWNrZ3JvdW5kLWFjY2VudFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXRhYi1saW5rLmNkay1rZXlib2FyZC1mb2N1c2VkW19uZ2NvbnRlbnQtJUNPTVAlXTpub3QoLm1hdC10YWItZGlzYWJsZWQpLCAubWF0LXRhYi1ncm91cC5tYXQtYmFja2dyb3VuZC1hY2NlbnRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC10YWItbGluay5jZGstcHJvZ3JhbS1mb2N1c2VkW19uZ2NvbnRlbnQtJUNPTVAlXTpub3QoLm1hdC10YWItZGlzYWJsZWQpLCAubWF0LXRhYi1uYXYtYmFyLm1hdC1iYWNrZ3JvdW5kLWFjY2VudFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXRhYi1sYWJlbC5jZGsta2V5Ym9hcmQtZm9jdXNlZFtfbmdjb250ZW50LSVDT01QJV06bm90KC5tYXQtdGFiLWRpc2FibGVkKSwgLm1hdC10YWItbmF2LWJhci5tYXQtYmFja2dyb3VuZC1hY2NlbnRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC10YWItbGFiZWwuY2RrLXByb2dyYW0tZm9jdXNlZFtfbmdjb250ZW50LSVDT01QJV06bm90KC5tYXQtdGFiLWRpc2FibGVkKSwgLm1hdC10YWItbmF2LWJhci5tYXQtYmFja2dyb3VuZC1hY2NlbnRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC10YWItbGluay5jZGsta2V5Ym9hcmQtZm9jdXNlZFtfbmdjb250ZW50LSVDT01QJV06bm90KC5tYXQtdGFiLWRpc2FibGVkKSwgLm1hdC10YWItbmF2LWJhci5tYXQtYmFja2dyb3VuZC1hY2NlbnRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC10YWItbGluay5jZGstcHJvZ3JhbS1mb2N1c2VkW19uZ2NvbnRlbnQtJUNPTVAlXTpub3QoLm1hdC10YWItZGlzYWJsZWQpe2JhY2tncm91bmQtY29sb3I6cmdiYSgyNTUsMTUyLDAsLjMpfS5tYXQtdGFiLWdyb3VwLm1hdC1iYWNrZ3JvdW5kLWFjY2VudFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXRhYi1oZWFkZXJbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXRhYi1ncm91cC5tYXQtYmFja2dyb3VuZC1hY2NlbnRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC10YWItbGlua3NbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXRhYi1ncm91cC5tYXQtYmFja2dyb3VuZC1hY2NlbnRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC10YWItaGVhZGVyLXBhZ2luYXRpb25bX25nY29udGVudC0lQ09NUCVdLCAubWF0LXRhYi1uYXYtYmFyLm1hdC1iYWNrZ3JvdW5kLWFjY2VudFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXRhYi1oZWFkZXJbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXRhYi1uYXYtYmFyLm1hdC1iYWNrZ3JvdW5kLWFjY2VudFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXRhYi1saW5rc1tfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdGFiLW5hdi1iYXIubWF0LWJhY2tncm91bmQtYWNjZW50W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtdGFiLWhlYWRlci1wYWdpbmF0aW9uW19uZ2NvbnRlbnQtJUNPTVAlXXtiYWNrZ3JvdW5kLWNvbG9yOiNmZjk4MDB9Lm1hdC10YWItZ3JvdXAubWF0LWJhY2tncm91bmQtYWNjZW50W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtdGFiLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10YWItZ3JvdXAubWF0LWJhY2tncm91bmQtYWNjZW50W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtdGFiLWxpbmtbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXRhYi1uYXYtYmFyLm1hdC1iYWNrZ3JvdW5kLWFjY2VudFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXRhYi1sYWJlbFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdGFiLW5hdi1iYXIubWF0LWJhY2tncm91bmQtYWNjZW50W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtdGFiLWxpbmtbX25nY29udGVudC0lQ09NUCVde2NvbG9yOiNmZmZ9Lm1hdC10YWItZ3JvdXAubWF0LWJhY2tncm91bmQtYWNjZW50W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtdGFiLWxhYmVsLm1hdC10YWItZGlzYWJsZWRbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXRhYi1ncm91cC5tYXQtYmFja2dyb3VuZC1hY2NlbnRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC10YWItbGluay5tYXQtdGFiLWRpc2FibGVkW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10YWItbmF2LWJhci5tYXQtYmFja2dyb3VuZC1hY2NlbnRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC10YWItbGFiZWwubWF0LXRhYi1kaXNhYmxlZFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdGFiLW5hdi1iYXIubWF0LWJhY2tncm91bmQtYWNjZW50W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtdGFiLWxpbmsubWF0LXRhYi1kaXNhYmxlZFtfbmdjb250ZW50LSVDT01QJV17Y29sb3I6cmdiYSgyNTUsMjU1LDI1NSwuNCl9Lm1hdC10YWItZ3JvdXAubWF0LWJhY2tncm91bmQtYWNjZW50W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtdGFiLWhlYWRlci1wYWdpbmF0aW9uLWNoZXZyb25bX25nY29udGVudC0lQ09NUCVdLCAubWF0LXRhYi1uYXYtYmFyLm1hdC1iYWNrZ3JvdW5kLWFjY2VudFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXRhYi1oZWFkZXItcGFnaW5hdGlvbi1jaGV2cm9uW19uZ2NvbnRlbnQtJUNPTVAlXXtib3JkZXItY29sb3I6I2ZmZn0ubWF0LXRhYi1ncm91cC5tYXQtYmFja2dyb3VuZC1hY2NlbnRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC10YWItaGVhZGVyLXBhZ2luYXRpb24tZGlzYWJsZWRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC10YWItaGVhZGVyLXBhZ2luYXRpb24tY2hldnJvbltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdGFiLW5hdi1iYXIubWF0LWJhY2tncm91bmQtYWNjZW50W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtdGFiLWhlYWRlci1wYWdpbmF0aW9uLWRpc2FibGVkW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtdGFiLWhlYWRlci1wYWdpbmF0aW9uLWNoZXZyb25bX25nY29udGVudC0lQ09NUCVde2JvcmRlci1jb2xvcjpyZ2JhKDI1NSwyNTUsMjU1LC40KX0ubWF0LXRhYi1ncm91cC5tYXQtYmFja2dyb3VuZC1hY2NlbnRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1yaXBwbGUtZWxlbWVudFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdGFiLW5hdi1iYXIubWF0LWJhY2tncm91bmQtYWNjZW50W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtcmlwcGxlLWVsZW1lbnRbX25nY29udGVudC0lQ09NUCVde2JhY2tncm91bmQtY29sb3I6cmdiYSgyNTUsMjU1LDI1NSwuMTIpfS5tYXQtdGFiLWdyb3VwLm1hdC1iYWNrZ3JvdW5kLXdhcm5bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC10YWItbGFiZWwuY2RrLWtleWJvYXJkLWZvY3VzZWRbX25nY29udGVudC0lQ09NUCVdOm5vdCgubWF0LXRhYi1kaXNhYmxlZCksIC5tYXQtdGFiLWdyb3VwLm1hdC1iYWNrZ3JvdW5kLXdhcm5bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC10YWItbGFiZWwuY2RrLXByb2dyYW0tZm9jdXNlZFtfbmdjb250ZW50LSVDT01QJV06bm90KC5tYXQtdGFiLWRpc2FibGVkKSwgLm1hdC10YWItZ3JvdXAubWF0LWJhY2tncm91bmQtd2Fybltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXRhYi1saW5rLmNkay1rZXlib2FyZC1mb2N1c2VkW19uZ2NvbnRlbnQtJUNPTVAlXTpub3QoLm1hdC10YWItZGlzYWJsZWQpLCAubWF0LXRhYi1ncm91cC5tYXQtYmFja2dyb3VuZC13YXJuW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtdGFiLWxpbmsuY2RrLXByb2dyYW0tZm9jdXNlZFtfbmdjb250ZW50LSVDT01QJV06bm90KC5tYXQtdGFiLWRpc2FibGVkKSwgLm1hdC10YWItbmF2LWJhci5tYXQtYmFja2dyb3VuZC13YXJuW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtdGFiLWxhYmVsLmNkay1rZXlib2FyZC1mb2N1c2VkW19uZ2NvbnRlbnQtJUNPTVAlXTpub3QoLm1hdC10YWItZGlzYWJsZWQpLCAubWF0LXRhYi1uYXYtYmFyLm1hdC1iYWNrZ3JvdW5kLXdhcm5bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC10YWItbGFiZWwuY2RrLXByb2dyYW0tZm9jdXNlZFtfbmdjb250ZW50LSVDT01QJV06bm90KC5tYXQtdGFiLWRpc2FibGVkKSwgLm1hdC10YWItbmF2LWJhci5tYXQtYmFja2dyb3VuZC13YXJuW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtdGFiLWxpbmsuY2RrLWtleWJvYXJkLWZvY3VzZWRbX25nY29udGVudC0lQ09NUCVdOm5vdCgubWF0LXRhYi1kaXNhYmxlZCksIC5tYXQtdGFiLW5hdi1iYXIubWF0LWJhY2tncm91bmQtd2Fybltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXRhYi1saW5rLmNkay1wcm9ncmFtLWZvY3VzZWRbX25nY29udGVudC0lQ09NUCVdOm5vdCgubWF0LXRhYi1kaXNhYmxlZCl7YmFja2dyb3VuZC1jb2xvcjpyZ2JhKDI1NSwyMDUsMjEwLC4zKX0ubWF0LXRhYi1ncm91cC5tYXQtYmFja2dyb3VuZC13YXJuW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtdGFiLWhlYWRlcltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdGFiLWdyb3VwLm1hdC1iYWNrZ3JvdW5kLXdhcm5bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC10YWItbGlua3NbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXRhYi1ncm91cC5tYXQtYmFja2dyb3VuZC13YXJuW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtdGFiLWhlYWRlci1wYWdpbmF0aW9uW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10YWItbmF2LWJhci5tYXQtYmFja2dyb3VuZC13YXJuW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtdGFiLWhlYWRlcltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdGFiLW5hdi1iYXIubWF0LWJhY2tncm91bmQtd2Fybltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXRhYi1saW5rc1tfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdGFiLW5hdi1iYXIubWF0LWJhY2tncm91bmQtd2Fybltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXRhYi1oZWFkZXItcGFnaW5hdGlvbltfbmdjb250ZW50LSVDT01QJV17YmFja2dyb3VuZC1jb2xvcjojZjQ0MzM2fS5tYXQtdGFiLWdyb3VwLm1hdC1iYWNrZ3JvdW5kLXdhcm5bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC10YWItbGFiZWxbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXRhYi1ncm91cC5tYXQtYmFja2dyb3VuZC13YXJuW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtdGFiLWxpbmtbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXRhYi1uYXYtYmFyLm1hdC1iYWNrZ3JvdW5kLXdhcm5bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC10YWItbGFiZWxbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXRhYi1uYXYtYmFyLm1hdC1iYWNrZ3JvdW5kLXdhcm5bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC10YWItbGlua1tfbmdjb250ZW50LSVDT01QJV17Y29sb3I6I2ZmZn0ubWF0LXRhYi1ncm91cC5tYXQtYmFja2dyb3VuZC13YXJuW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtdGFiLWxhYmVsLm1hdC10YWItZGlzYWJsZWRbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXRhYi1ncm91cC5tYXQtYmFja2dyb3VuZC13YXJuW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtdGFiLWxpbmsubWF0LXRhYi1kaXNhYmxlZFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdGFiLW5hdi1iYXIubWF0LWJhY2tncm91bmQtd2Fybltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXRhYi1sYWJlbC5tYXQtdGFiLWRpc2FibGVkW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10YWItbmF2LWJhci5tYXQtYmFja2dyb3VuZC13YXJuW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtdGFiLWxpbmsubWF0LXRhYi1kaXNhYmxlZFtfbmdjb250ZW50LSVDT01QJV17Y29sb3I6cmdiYSgyNTUsMjU1LDI1NSwuNCl9Lm1hdC10YWItZ3JvdXAubWF0LWJhY2tncm91bmQtd2Fybltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXRhYi1oZWFkZXItcGFnaW5hdGlvbi1jaGV2cm9uW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10YWItbmF2LWJhci5tYXQtYmFja2dyb3VuZC13YXJuW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtdGFiLWhlYWRlci1wYWdpbmF0aW9uLWNoZXZyb25bX25nY29udGVudC0lQ09NUCVde2JvcmRlci1jb2xvcjojZmZmfS5tYXQtdGFiLWdyb3VwLm1hdC1iYWNrZ3JvdW5kLXdhcm5bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC10YWItaGVhZGVyLXBhZ2luYXRpb24tZGlzYWJsZWRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC10YWItaGVhZGVyLXBhZ2luYXRpb24tY2hldnJvbltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdGFiLW5hdi1iYXIubWF0LWJhY2tncm91bmQtd2Fybltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXRhYi1oZWFkZXItcGFnaW5hdGlvbi1kaXNhYmxlZFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXRhYi1oZWFkZXItcGFnaW5hdGlvbi1jaGV2cm9uW19uZ2NvbnRlbnQtJUNPTVAlXXtib3JkZXItY29sb3I6cmdiYSgyNTUsMjU1LDI1NSwuNCl9Lm1hdC10YWItZ3JvdXAubWF0LWJhY2tncm91bmQtd2Fybltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXJpcHBsZS1lbGVtZW50W19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10YWItbmF2LWJhci5tYXQtYmFja2dyb3VuZC13YXJuW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtcmlwcGxlLWVsZW1lbnRbX25nY29udGVudC0lQ09NUCVde2JhY2tncm91bmQtY29sb3I6cmdiYSgyNTUsMjU1LDI1NSwuMTIpfS5tYXQtdG9vbGJhcltfbmdjb250ZW50LSVDT01QJV17YmFja2dyb3VuZDojZjVmNWY1O2NvbG9yOiMyMTIxMjF9Lm1hdC10b29sYmFyLm1hdC1wcmltYXJ5W19uZ2NvbnRlbnQtJUNPTVAlXXtiYWNrZ3JvdW5kOiNmNTdjMDA7Y29sb3I6I2ZmZn0ubWF0LXRvb2xiYXIubWF0LWFjY2VudFtfbmdjb250ZW50LSVDT01QJV17YmFja2dyb3VuZDojZmY5ODAwO2NvbG9yOiNmZmZ9Lm1hdC10b29sYmFyLm1hdC13YXJuW19uZ2NvbnRlbnQtJUNPTVAlXXtiYWNrZ3JvdW5kOiNmNDQzMzY7Y29sb3I6I2ZmZn0ubWF0LXRvb2xiYXJbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLXVuZGVybGluZVtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdG9vbGJhcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtcmlwcGxlW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10b29sYmFyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9jdXNlZFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtcmlwcGxlW19uZ2NvbnRlbnQtJUNPTVAlXXtiYWNrZ3JvdW5kLWNvbG9yOmN1cnJlbnRDb2xvcn0ubWF0LXRvb2xiYXJbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10b29sYmFyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9jdXNlZFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXRvb2xiYXJbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1zZWxlY3QtdmFsdWVbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXRvb2xiYXJbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1zZWxlY3QtYXJyb3dbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXRvb2xiYXJbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLm1hdC1mb2N1c2VkW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtc2VsZWN0LWFycm93W19uZ2NvbnRlbnQtJUNPTVAlXXtjb2xvcjppbmhlcml0fS5tYXQtdG9vbGJhcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWlucHV0LWVsZW1lbnRbX25nY29udGVudC0lQ09NUCVde2NhcmV0LWNvbG9yOmN1cnJlbnRDb2xvcn0ubWF0LXRvb2xiYXItbXVsdGlwbGUtcm93c1tfbmdjb250ZW50LSVDT01QJV17bWluLWhlaWdodDo2NHB4fS5tYXQtdG9vbGJhci1yb3dbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXRvb2xiYXItc2luZ2xlLXJvd1tfbmdjb250ZW50LSVDT01QJV17aGVpZ2h0OjY0cHh9QG1lZGlhKG1heC13aWR0aDogNTk5cHgpey5tYXQtdG9vbGJhci1tdWx0aXBsZS1yb3dzW19uZ2NvbnRlbnQtJUNPTVAlXXttaW4taGVpZ2h0OjU2cHh9Lm1hdC10b29sYmFyLXJvd1tfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdG9vbGJhci1zaW5nbGUtcm93W19uZ2NvbnRlbnQtJUNPTVAlXXtoZWlnaHQ6NTZweH19Lm1hdC10b29sdGlwW19uZ2NvbnRlbnQtJUNPTVAlXXtiYWNrZ3JvdW5kOnJnYmEoOTcsOTcsOTcsLjkpfS5tYXQtdHJlZVtfbmdjb250ZW50LSVDT01QJV17YmFja2dyb3VuZDojZmZmfS5tYXQtdHJlZS1ub2RlW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1uZXN0ZWQtdHJlZS1ub2RlW19uZ2NvbnRlbnQtJUNPTVAlXXtjb2xvcjojMjEyMTIxfS5tYXQtdHJlZS1ub2RlW19uZ2NvbnRlbnQtJUNPTVAlXXttaW4taGVpZ2h0OjQ4cHh9Lm1hdC1zbmFjay1iYXItY29udGFpbmVyW19uZ2NvbnRlbnQtJUNPTVAlXXtjb2xvcjpyZ2JhKDI1NSwyNTUsMjU1LC43KTtiYWNrZ3JvdW5kOiMzMjMyMzI7Ym94LXNoYWRvdzowcHggM3B4IDVweCAtMXB4IHJnYmEoMCwgMCwgMCwgMC4yKSwwcHggNnB4IDEwcHggMHB4IHJnYmEoMCwgMCwgMCwgMC4xNCksMHB4IDFweCAxOHB4IDBweCByZ2JhKDAsIDAsIDAsIDAuMTIpfS5tYXQtc2ltcGxlLXNuYWNrYmFyLWFjdGlvbltfbmdjb250ZW50LSVDT01QJV17Y29sb3I6I2ZmOTgwMH1bX25naG9zdC0lQ09NUCVde2JhY2tncm91bmQtY29sb3I6I2ZmZjtkaXNwbGF5OmJsb2NrO2ZvbnQtc2l6ZToxM3B4O292ZXJmbG93OmhpZGRlbn0udGFibGUtY29udGFpbmVyW19uZ2NvbnRlbnQtJUNPTVAlXXtjb250YWluOmxheW91dCBwYWludDtoZWlnaHQ6MTAwJTttYXgtd2lkdGg6MTAwJTtvdmVyZmxvdy14OmF1dG87b3ZlcmZsb3cteTphdXRvO3dpbGwtY2hhbmdlOnNjcm9sbC1wb3NpdGlvbn0uZmxleC1sYXlvdXRbX25naG9zdC0lQ09NUCVdICAgLm5hbWVbX25nY29udGVudC0lQ09NUCVde3dvcmQtYnJlYWs6YnJlYWstd29yZDtvdmVyZmxvdy13cmFwOmJyZWFrLXdvcmR9LmZsZXgtbGF5b3V0W19uZ2hvc3QtJUNPTVAlXSAgIG1hdC1wYWdpbmF0b3JbX25nY29udGVudC0lQ09NUCVde2JvcmRlci10b3A6MXB4IHNvbGlkICNlYmViZWI7cGFkZGluZy1ib3R0b206MTJweH1bcm9sZT10YWJsZV1bX25nY29udGVudC0lQ09NUCVde2Rpc3BsYXk6dGFibGU7d2lkdGg6MTAwJX1bcm9sZT10YWJsZV1bX25nY29udGVudC0lQ09NUCVdICAgLmhlYWRlcltfbmdjb250ZW50LSVDT01QJV17Y29sb3I6IzIxMjEyMTt3aGl0ZS1zcGFjZTpub3dyYXB9W3JvbGU9dGFibGVdW19uZ2NvbnRlbnQtJUNPTVAlXSAgIFtyb2xlPXJvd11bX25nY29udGVudC0lQ09NUCVde2NvbnRhaW46c3RyaWN0O2Rpc3BsYXk6dGFibGUtcm93O2hlaWdodDo0M3B4fVtyb2xlPXRhYmxlXVtfbmdjb250ZW50LSVDT01QJV0gICBbcm9sZT1yb3ddW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5jb2x1bW5bX25nY29udGVudC0lQ09NUCVde2JvcmRlci1ib3R0b206MXB4IHNvbGlkICMwMDAwMDAxZjtkaXNwbGF5OnRhYmxlLWNlbGw7cGFkZGluZzo1cHg7dmVydGljYWwtYWxpZ246bWlkZGxlfVtyb2xlPXRhYmxlXVtfbmdjb250ZW50LSVDT01QJV0gICBbcm9sZT1yb3ddW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5jb2x1bW5bX25nY29udGVudC0lQ09NUCVdOmZpcnN0LWNoaWxke3BhZGRpbmctbGVmdDoyNHB4fVtyb2xlPXRhYmxlXVtfbmdjb250ZW50LSVDT01QJV0gICBbcm9sZT1yb3ddW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5jb2x1bW5bX25nY29udGVudC0lQ09NUCVdOmxhc3QtY2hpbGR7cGFkZGluZy1yaWdodDoyNHB4fVtyb2xlPXJvd2dyb3VwXVtfbmdjb250ZW50LSVDT01QJV17ZGlzcGxheTp0YWJsZS1yb3ctZ3JvdXB9W3JvbGU9cm93Z3JvdXBdLmhlYWRlcltfbmdjb250ZW50LSVDT01QJV17ZGlzcGxheTp0YWJsZS1oZWFkZXItZ3JvdXB9LmxvYWRpbmdbX25nY29udGVudC0lQ09NUCVdLCAubm8tcnVuc1tfbmdjb250ZW50LSVDT01QJV17YWxpZ24taXRlbXM6Y2VudGVyO2JvcmRlcjowO2JvcmRlci1ib3R0b20td2lkdGg6MXB4O2JvcmRlci1jb2xvcjojMDAwMDAwMWY7Ym9yZGVyLXN0eWxlOnNvbGlkO2Rpc3BsYXk6ZmxleDtoZWlnaHQ6NDhweDtwYWRkaW5nOjAgMjRweH0ubG9hZGluZ1tfbmdjb250ZW50LSVDT01QJV17anVzdGlmeS1jb250ZW50OmNlbnRlcn0uc2VsZWN0LWFsbFtfbmdjb250ZW50LSVDT01QJV0gICB0aFtfbmdjb250ZW50LSVDT01QJV17cGFkZGluZy1ib3R0b206MTJweDtwYWRkaW5nLXRvcDoxMnB4fS5zZWxlY3QtYWxsLWNvbnRlbnRbX25nY29udGVudC0lQ09NUCVdLCAuc2VsZWN0LWFsbC1jb250ZW50W19uZ2NvbnRlbnQtJUNPTVAlXSAgIGJ1dHRvbltfbmdjb250ZW50LSVDT01QJV17Zm9udC13ZWlnaHQ6NDAwO2xpbmUtaGVpZ2h0OjEuNjt0ZXh0LWFsaWduOmxlZnR9LnNlbGVjdC1hbGwtY29udGVudFtfbmdjb250ZW50LSVDT01QJV0gICBidXR0b25bX25nY29udGVudC0lQ09NUCVde2ZvbnQtd2VpZ2h0OjUwMDtwYWRkaW5nOjAgNHB4fS5maWx0ZXItcm93W19uZ2NvbnRlbnQtJUNPTVAlXXtkaXNwbGF5OmZsZXg7YWxpZ24taXRlbXM6Y2VudGVyO2hlaWdodDo0OHB4O3BhZGRpbmc6MCAxNnB4O2JvcmRlci1ib3R0b206MXB4IHNvbGlkICNlYmViZWJ9LnJ1bi1maWx0ZXJbX25nY29udGVudC0lQ09NUCVde2Rpc3BsYXk6ZmxleDtjb2xvcjojMjEyMTIxO2ZsZXg6MX0ucnVuLWZpbHRlcltfbmdjb250ZW50LSVDT01QJV0gICBtYXQtaWNvbltfbmdjb250ZW50LSVDT01QJV17Y29sb3I6IzYxNjE2MTtmbGV4Om5vbmU7bWFyZ2luLWxlZnQ6NXB4O21hcmdpbi1yaWdodDo1cHh9LnRiLWNvbHVtbi1jaGVja2JveFtfbmdjb250ZW50LSVDT01QJV0sIC50Yi1jb2x1bW4tcnVuX2NvbG9yW19uZ2NvbnRlbnQtJUNPTVAlXXt3aWR0aDoyMHB4fS5ydW4tY29sb3Itc3dhdGNoW19uZ2NvbnRlbnQtJUNPTVAlXXtib3JkZXItcmFkaXVzOjEwMCU7Ym9yZGVyOjFweCBzb2xpZCAjZWJlYmViO2hlaWdodDoyMHB4O3dpZHRoOjIwcHg7b3V0bGluZTpub25lfS5ydW4tY29sb3Itc3dhdGNoLm5vLWNvbG9yW19uZ2NvbnRlbnQtJUNPTVAlXXtib3JkZXItY29sb3I6I2M2Y2FkMTtib3JkZXItd2lkdGg6MnB4fS5yYW5nZS1pbnB1dC1jb250YWluZXJbX25nY29udGVudC0lQ09NUCVde2hlaWdodDphdXRvfVtfbmdob3N0LSVDT01QJV0gICAgIG1hdC1wYWdpbmF0b3IgbWF0LWZvcm0tZmllbGR7bWFyZ2luOjB9LmZpbHRlci1tZW51LWNoZWNrYm94LXJvd1tfbmdjb250ZW50LSVDT01QJV0gICBtYXQtY2hlY2tib3hbX25nY29udGVudC0lQ09NUCVdICAgICBsYWJlbHtkaXNwbGF5OmZsZXg7aGVpZ2h0OjEwMCU7YWxpZ24taXRlbXM6Y2VudGVyfS5maWx0ZXItbWVudS1jaGVja2JveC1yb3dbX25nY29udGVudC0lQ09NUCVdICAgbWF0LWNoZWNrYm94W19uZ2NvbnRlbnQtJUNPTVAlXSAgICAgbGFiZWwgLm1hdC1jaGVja2JveC1pbm5lci1jb250YWluZXJ7bWFyZ2luLWxlZnQ6MH0uZmlsdGVyLW1lbnUtY2hlY2tib3gtcm93W19uZ2NvbnRlbnQtJUNPTVAlXSAgIG1hdC1jaGVja2JveFtfbmdjb250ZW50LSVDT01QJV0gICAgIGxhYmVsIC5tYXQtY2hlY2tib3gtbGFiZWx7b3ZlcmZsb3c6aGlkZGVuO3RleHQtb3ZlcmZsb3c6ZWxsaXBzaXN9J10sY2hhbmdlRGV0ZWN0aW9uOjB9KTtjb25zdCBIUT1PaygiW1J1bnNdIEZldGNoIFJ1bnMgUmVxdWVzdGVkIix7X2FzOiJwcm9wcyIsX3A6dm9pZCAwfSksQlE9T2soIltSdW5zXSBGZXRjaCBSdW5zIFN1Y2NlZWRlZCIse19hczoicHJvcHMiLF9wOnZvaWQgMH0pLFZRPU9rKCJbUnVuc10gRmV0Y2ggUnVucyBGYWlsZWQiLHtfYXM6InByb3BzIixfcDp2b2lkIDB9KSxqUT1PaygiW1J1bnNdIFJ1biBTZWxlY3Rpb24gVG9nZ2xlZCIse19hczoicHJvcHMiLF9wOnZvaWQgMH0pLFVRPU9rKCJbUnVuc10gUnVuIFBhZ2UgU2VsZWN0aW9uIFRvZ2dsZWQiLHtfYXM6InByb3BzIixfcDp2b2lkIDB9KSxXUT1PaygiW1J1bnNdIFJ1bnMgU2VsZWN0IEFsbCIse19hczoicHJvcHMiLF9wOnZvaWQgMH0pLEdRPU9rKCJbUnVuc10gUnVuIFNlbGVjdG9yIFBhZ2luYXRpb24gT3B0aW9uIENoYW5nZWQiLHtfYXM6InByb3BzIixfcDp2b2lkIDB9KSxZUT1PaygiW1J1bnNdIFJ1biBTZWxlY3RvciBTb3J0IENoYW5nZWQiLHtfYXM6InByb3BzIixfcDp2b2lkIDB9KSxxUT1PaygiW1J1bnNdIFJ1biBTZWxlY3RvciBSZWdleCBGaWx0ZXIgQ2hhbmdlZCIse19hczoicHJvcHMiLF9wOnZvaWQgMH0pLFpRPU9rKCJbUnVuc10gUnVuIENvbG9yIENoYW5nZWQiLHtfYXM6InByb3BzIixfcDp2b2lkIDB9KSxYUT1PaygiW1J1bnNdIFJ1biBUYWJsZSBTaG93biIse19hczoicHJvcHMiLF9wOnZvaWQgMH0pLEpRPU9rKCJbUnVuc10gUnVuIERpc2NyZXRlIEhwYXJhbSBGaWx0ZXIgQ2hhbmdlZCIse19hczoicHJvcHMiLF9wOnZvaWQgMH0pLFFRPU9rKCJbUnVuc10gUnVuIEludGVydmFsIEhwYXJhbSBGaWx0ZXIgQ2hhbmdlZCIse19hczoicHJvcHMiLF9wOnZvaWQgMH0pLEtRPU9rKCJbUnVuc10gUnVuIE1ldHJpYyBGaWx0ZXIgQ2hhbmdlZCIse19hczoicHJvcHMiLF9wOnZvaWQgMH0pLCRRPXB2KEZELCh0PT50LnN0YXRlPT09ZlIuTE9BRElORykpO2Z1bmN0aW9uIHRLKHQsbil7c3dpdGNoKG4udHlwZSl7Y2FzZSBxSi5FWFBFUklNRU5UX05BTUU6cmV0dXJuW3QuZXhwZXJpbWVudEFsaWFzLHQucnVuLm5hbWUsdC5ydW4uaWRdO2Nhc2UgcUouUlVOX05BTUU6cmV0dXJuW3QucnVuLm5hbWUsdC5leHBlcmltZW50QWxpYXMsdC5ydW4uaWRdO2Nhc2UgcUouSFBBUkFNOnJldHVyblt0LmhwYXJhbXMuZ2V0KG4ubmFtZSksdC5ydW4ubmFtZSx0LmV4cGVyaW1lbnRBbGlhcyx0LnJ1bi5pZF07Y2FzZSBxSi5NRVRSSUM6cmV0dXJuW3QubWV0cmljcy5nZXQobi50YWcpLHQucnVuLm5hbWUsdC5leHBlcmltZW50QWxpYXMsdC5ydW4uaWRdO2RlZmF1bHQ6dGhyb3cgbmV3IEVycm9yKGBOb3QgeWV0IGltcGxlbWVudGVkOiAke259YCl9fWZ1bmN0aW9uIG5LKHQsbil7cmV0dXJuIHZvaWQgMD09PW4/dC5pbmNsdWRlVW5kZWZpbmVkOnQudHlwZT09PXdELkRJU0NSRVRFP3QuZmlsdGVyVmFsdWVzLmluY2x1ZGVzKG4pOnQudHlwZT09PXdELklOVEVSVkFMJiZ0LmZpbHRlckxvd2VyVmFsdWU8PW4mJm48PXQuZmlsdGVyVXBwZXJWYWx1ZX1jbGFzcyBlS3tjb25zdHJ1Y3Rvcih0KXt0aGlzLnN0b3JlPXQsdGhpcy5sb2FkaW5nJD1udWxsLHRoaXMuaHBhcmFtQ29sdW1ucyQ9WihbXSksdGhpcy5tZXRyaWNDb2x1bW5zJD1aKFtdKSx0aGlzLnVzZUZsZXhpYmxlTGF5b3V0PSExLHRoaXMudXNlUGFnaW5hdGlvbj0hMSx0aGlzLmNvbHVtbnM9W1pKLlJVTl9OQU1FXSx0aGlzLnNob3dIcGFyYW1zQW5kTWV0cmljcz0hMSx0aGlzLnNvcnRPcHRpb24kPXRoaXMuc3RvcmUuc2VsZWN0KFdEKSx0aGlzLnBhZ2luYXRpb25PcHRpb24kPXRoaXMuc3RvcmUuc2VsZWN0KGpEKSx0aGlzLnJlZ2V4RmlsdGVyJD10aGlzLnN0b3JlLnNlbGVjdChVRCl9aXNFeHBlcmltZW50TmFtZVZpc2libGUoKXtyZXR1cm4gdGhpcy5jb2x1bW5zLnNvbWUoKHQ9PnQ9PT1aSi5FWFBFUklNRU5UX05BTUUpKX1uZ09uSW5pdCgpe2NvbnN0IHQ9dGhpcy5leHBlcmltZW50SWRzLm1hcCgodD0+dGhpcy5nZXRSdW5UYWJsZUl0ZW1zRm9yRXhwZXJpbWVudCh0KSkpO3RoaXMuYWxsVW5zb3J0ZWRSdW5UYWJsZUl0ZW1zJD1FdCh0KS5waXBlKGZ0KCh0PT5bXS5jb25jYXQoLi4udCkpKSxhZSgxKSksdGhpcy5hbGxJdGVtc0xlbmd0aCQ9dGhpcy5hbGxVbnNvcnRlZFJ1blRhYmxlSXRlbXMkLnBpcGUoZnQoKHQ9PnQubGVuZ3RoKSkpO2NvbnN0IG49dGhpcy5nZXRGaWx0ZXJlZEl0ZW1zJCh0aGlzLmFsbFVuc29ydGVkUnVuVGFibGVJdGVtcyQpLnBpcGUoYWUoMSkpO3RoaXMuZmlsdGVyZWRJdGVtc0xlbmd0aCQ9bi5waXBlKGZ0KCh0PT50Lmxlbmd0aCkpKSx0aGlzLnBhZ2VJdGVtcyQ9dGhpcy5zb3J0ZWRBbmRTbGljZWRJdGVtcyQobiksdGhpcy5udW1TZWxlY3RlZEl0ZW1zJD10aGlzLmFsbFVuc29ydGVkUnVuVGFibGVJdGVtcyQucGlwZShmdCgodD0+dC5yZWR1Y2UoKCh0LG4pPT50K051bWJlcihuLnNlbGVjdGVkKSksMCkpKSk7Y29uc3QgZT10aGlzLmV4cGVyaW1lbnRJZHMubWFwKCh0PT50aGlzLnN0b3JlLnNlbGVjdCgkUSx7ZXhwZXJpbWVudElkOnR9KSkpO2lmKHRoaXMubG9hZGluZyQ9RXQoZSkucGlwZShmdCgodD0+dC5zb21lKCh0PT50KSkpKSksdGhpcy5zaG93SHBhcmFtc0FuZE1ldHJpY3Mpe2NvbnN0IHQ9dGhpcy5zdG9yZS5zZWxlY3QoSEQse2V4cGVyaW1lbnRJZHM6dGhpcy5leHBlcmltZW50SWRzfSk7dGhpcy5ocGFyYW1Db2x1bW5zJD1FdChbdGhpcy5zdG9yZS5zZWxlY3QoSkQpLHRdKS5waXBlKGZ0KCgoW3Qse2hwYXJhbXM6bn1dKT0+bi5tYXAoKCh7bmFtZTpuLGRpc3BsYXlOYW1lOmV9KT0+e2NvbnN0IGE9dC5nZXQobik7aWYoIWEpdGhyb3cgbmV3IFJhbmdlRXJyb3IoYEludmFyaWFudCBlcnJvcjogYSBmaWx0ZXIgZm9yICR7bn0gbXVzdCBleGlzdCB3aGVuIHRoZSBocGFyYW0gZXhpc3RzYCk7cmV0dXJue2Rpc3BsYXlOYW1lOmUsbmFtZTpuLGZpbHRlcjphfX0pKSkpKSx0aGlzLm1ldHJpY0NvbHVtbnMkPUV0KFt0aGlzLnN0b3JlLnNlbGVjdChRRCksdF0pLnBpcGUoZnQoKChbdCx7bWV0cmljczpufV0pPT5uLm1hcCgoKHt0YWc6bixkaXNwbGF5TmFtZTplfSk9Pntjb25zdCBhPXQuZ2V0KG4pO2lmKCFhKXRocm93IG5ldyBSYW5nZUVycm9yKGBJbnZhcmlhbnQgZXJyb3I6IGEgZmlsdGVyIGZvciAke259IG11c3QgZXhpc3Qgd2hlbiB0aGUgbWV0cmljIGV4aXN0c2ApO3JldHVybntkaXNwbGF5TmFtZTplLHRhZzpuLGZpbHRlcjphfX0pKSkpKX10aGlzLnN0b3JlLmRpc3BhdGNoKFhRKHtleHBlcmltZW50SWRzOnRoaXMuZXhwZXJpbWVudElkc30pKX1nZXRGaWx0ZXJlZEl0ZW1zJCh0KXtyZXR1cm4gRXQoW3QsdGhpcy5zdG9yZS5zZWxlY3QoVUQpXSkucGlwZShmdCgoKFt0LG5dKT0+e2lmKCFuKXJldHVybiB0O2xldCBlPW51bGw7dHJ5e2U9bj9uZXcgUmVnRXhwKG4pOm51bGx9Y2F0Y2godCl7fWlmKCFlKXJldHVybltdO2NvbnN0IGE9dGhpcy5jb2x1bW5zLmluY2x1ZGVzKFpKLkVYUEVSSU1FTlRfTkFNRSk7cmV0dXJuIHQuZmlsdGVyKCh0PT5hP2UudGVzdCh0LnJ1bi5uYW1lKXx8ZS50ZXN0KHQuZXhwZXJpbWVudEFsaWFzKTplLnRlc3QodC5ydW4ubmFtZSkpKX0pKSxzbih0aGlzLnN0b3JlLnNlbGVjdChKRCksdGhpcy5zdG9yZS5zZWxlY3QoUUQpKSxmdCgoKFt0LG4sZV0pPT50aGlzLnNob3dIcGFyYW1zQW5kTWV0cmljcz90LmZpbHRlcigoKHtocGFyYW1zOnQsbWV0cmljczphfSk9PlsuLi5uLmVudHJpZXMoKV0uZXZlcnkoKChbbixlXSk9Pm5LKGUsdC5nZXQobikpKSkmJlsuLi5lLmVudHJpZXMoKV0uZXZlcnkoKChbdCxuXSk9Pm5LKG4sYS5nZXQodCkpKSkpKTp0KSkpfXNvcnRlZEFuZFNsaWNlZEl0ZW1zJCh0KXtjb25zdCBuPUV0KFt0LHRoaXMuc3RvcmUuc2VsZWN0KFdEKV0pLnBpcGUoZnQoKChbdCxuXSk9PihmdW5jdGlvbiBlKHQsbil7Y29uc3QgZT1uLmtleSxhPVsuLi50XTtyZXR1cm4gbnVsbD09PWV8fG4uZGlyZWN0aW9uPT09R0ouVU5TRVR8fGEuc29ydCgoKHQsYSk9Pntjb25zdCBvPXRLKHQsZSkscj10SyhhLGUpO2lmKG8ubGVuZ3RoIT09ci5sZW5ndGgpdGhyb3cgbmV3IEVycm9yKGBJbnZhcmlhbnQgZXJyb3I6IGEgZ2l2ZW4gc29ydCBzaG91bGQgcmVzdWx0IGluIHNhbWUgbnVtYmVyIG9mIGl0ZW1zOiAke259YCk7Zm9yKGxldCB0PTA7dDxvLmxlbmd0aDt0Kyspe2NvbnN0IGU9b1t0XSxhPXJbdF07aWYoZSE9PWEpe2lmKHZvaWQgMD09PWV8fHZvaWQgMD09PWEpcmV0dXJuIHZvaWQgMD09PWE/LTE6MTtpZih0eXBlb2YgZSE9dHlwZW9mIGEpdGhyb3cgbmV3IEVycm9yKGBDYW5ub3QgY29tcGFyZSB2YWx1ZXMgb2YgZGlmZmVyZW50IHR5cGVzOiAke3R5cGVvZiBlfSB2cy4gJHt0eXBlb2YgYX1gKTtyZXR1cm4gZTxhPT0obi5kaXJlY3Rpb249PT1HSi5BU0MpPy0xOjF9fXJldHVybiAwfSkpLGF9KSh0LG4pKSkpO3JldHVybiBFdChbbix0aGlzLnN0b3JlLnNlbGVjdChqRCldKS5waXBlKGZ0KCgoW3Qsbl0pPT57aWYoIXRoaXMudXNlUGFnaW5hdGlvbilyZXR1cm4gdC5zbGljZSgpO2NvbnN0e3BhZ2VTaXplOmUscGFnZUluZGV4OmF9PW47cmV0dXJuIHQuc2xpY2UoYSplLChhKzEpKmUpfSkpLGNlKFtdKSl9Z2V0UnVuVGFibGVJdGVtc0ZvckV4cGVyaW1lbnQodCl7cmV0dXJuIEV0KFt0aGlzLnN0b3JlLnNlbGVjdChJRCx7ZXhwZXJpbWVudElkOnR9KSx0aGlzLnN0b3JlLnNlbGVjdChjUix7ZXhwZXJpbWVudElkOnR9KSx0aGlzLnN0b3JlLnNlbGVjdChLRCksdGhpcy5zdG9yZS5zZWxlY3QoR0QpLHRoaXMuc3RvcmUuc2VsZWN0KG9SKV0pLnBpcGUoZnQoKChbbixlLGEsbyxyXSk9Pm4ubWFwKChuPT57Y29uc3QgaT1uZXcgTWFwOyhuLmhwYXJhbXN8fFtdKS5mb3JFYWNoKCh0PT57aS5zZXQodC5uYW1lLHQudmFsdWUpfSkpO2NvbnN0IGM9bmV3IE1hcDtyZXR1cm4obi5tZXRyaWNzfHxbXSkuZm9yRWFjaCgodD0+e2Muc2V0KHQudGFnLHQudmFsdWUpfSkpLHtydW46bixleHBlcmltZW50TmFtZToobnVsbD09ZT92b2lkIDA6ZS5uYW1lKXx8IiIsZXhwZXJpbWVudEFsaWFzOnJbdF0sc2VsZWN0ZWQ6Qm9vbGVhbihhJiZhLmdldChuLmlkKSkscnVuQ29sb3I6b1tuLmlkXSxocGFyYW1zOmksbWV0cmljczpjfX0pKSkpKX1vblJ1blNlbGVjdGlvblRvZ2dsZSh0KXt0aGlzLnN0b3JlLmRpc3BhdGNoKGpRKHtleHBlcmltZW50SWRzOnRoaXMuZXhwZXJpbWVudElkcyxydW5JZDp0LnJ1bi5pZH0pKX1vblBhZ2VTZWxlY3Rpb25Ub2dnbGUodCl7Y29uc3R7aXRlbXM6bn09dCxlPW4ubWFwKCgoe3J1bjp0fSk9PnQuaWQpKTt0aGlzLnN0b3JlLmRpc3BhdGNoKFVRKHtleHBlcmltZW50SWRzOnRoaXMuZXhwZXJpbWVudElkcyxydW5JZHM6ZX0pKX1vblNlbGVjdEFsbFBhZ2VzKCl7aWYoIXRoaXMudXNlUGFnaW5hdGlvbil0aHJvdyBuZXcgRXJyb3IoIlNlbGVjdCBhbGwgZXZlbnRzIGNhbm5vdCBiZSBkaXNwYXRjaGVkIHdoZW4gcGFnaW5hdGlvbiBpcyBkaXNhYmxlZCIpO3RoaXMuc3RvcmUuZGlzcGF0Y2goV1Eoe2V4cGVyaW1lbnRJZHM6dGhpcy5leHBlcmltZW50SWRzfSkpfW9uUGFnaW5hdGlvbkNoYW5nZSh0KXtpZighdGhpcy51c2VQYWdpbmF0aW9uKXRocm93IG5ldyBFcnJvcigiUGFnaW5hdGlvbiBldmVudHMgY2Fubm90IGJlIGRpc3BhdGNoZWQgd2hlbiBwYWdpbmF0aW9uIGlzIGRpc2FibGVkIik7Y29uc3R7cGFnZUluZGV4Om4scGFnZVNpemU6ZX09dDt0aGlzLnN0b3JlLmRpc3BhdGNoKEdRKHtwYWdlSW5kZXg6bixwYWdlU2l6ZTplfSkpfW9uU29ydENoYW5nZSh0KXt0aGlzLnN0b3JlLmRpc3BhdGNoKFlRKHQpKX1vblJlZ2V4RmlsdGVyQ2hhbmdlKHQpe3RoaXMuc3RvcmUuZGlzcGF0Y2gocVEoe3JlZ2V4U3RyaW5nOnR9KSl9b25SdW5Db2xvckNoYW5nZSh7cnVuSWQ6dCxuZXdDb2xvcjpufSl7dGhpcy5zdG9yZS5kaXNwYXRjaChaUSh7cnVuSWQ6dCxuZXdDb2xvcjpufSkpfW9uSHBhcmFtRGlzY3JldGVGaWx0ZXJDaGFuZ2VkKHQpe2NvbnN0e2hwYXJhbU5hbWU6bixmaWx0ZXJWYWx1ZXM6ZSxpbmNsdWRlVW5kZWZpbmVkOmF9PXQ7dGhpcy5zdG9yZS5kaXNwYXRjaChKUSh7aHBhcmFtTmFtZTpuLGZpbHRlclZhbHVlczplLGluY2x1ZGVVbmRlZmluZWQ6YX0pKX1vbkhwYXJhbUludGVydmFsRmlsdGVyQ2hhbmdlZCh0KXtjb25zdHtuYW1lOm4sZmlsdGVyTG93ZXJWYWx1ZTplLGZpbHRlclVwcGVyVmFsdWU6YSxpbmNsdWRlVW5kZWZpbmVkOm99PXQ7dGhpcy5zdG9yZS5kaXNwYXRjaChRUSh7aHBhcmFtTmFtZTpuLGZpbHRlckxvd2VyVmFsdWU6ZSxmaWx0ZXJVcHBlclZhbHVlOmEsaW5jbHVkZVVuZGVmaW5lZDpvfSkpfW9uTWV0cmljRmlsdGVyQ2hhbmdlZCh0KXtjb25zdHtuYW1lOm4saW5jbHVkZVVuZGVmaW5lZDplLGZpbHRlckxvd2VyVmFsdWU6YSxmaWx0ZXJVcHBlclZhbHVlOm99PXQ7dGhpcy5zdG9yZS5kaXNwYXRjaChLUSh7bWV0cmljVGFnOm4saW5jbHVkZVVuZGVmaW5lZDplLGZpbHRlckxvd2VyVmFsdWU6YSxmaWx0ZXJVcHBlclZhbHVlOm99KSl9fWVLLsm1ZmFjPWZ1bmN0aW9uIHQobil7cmV0dXJuIG5ldyhufHxlSykoWmcoY3YpKX0sZUsuybVjbXA9X28oe3R5cGU6ZUssc2VsZWN0b3JzOltbInJ1bnMtdGFibGUiXV0saG9zdFZhcnM6Mixob3N0QmluZGluZ3M6ZnVuY3Rpb24gdChuLGUpezImbiYmRHAoImZsZXgtbGF5b3V0IixlLnVzZUZsZXhpYmxlTGF5b3V0KX0saW5wdXRzOnt1c2VGbGV4aWJsZUxheW91dDoidXNlRmxleGlibGVMYXlvdXQiLHVzZVBhZ2luYXRpb246InVzZVBhZ2luYXRpb24iLGNvbHVtbnM6ImNvbHVtbnMiLGV4cGVyaW1lbnRJZHM6ImV4cGVyaW1lbnRJZHMiLHNob3dIcGFyYW1zQW5kTWV0cmljczoic2hvd0hwYXJhbXNBbmRNZXRyaWNzIn0sZGVjbHM6MTEsdmFyczozNCxjb25zdHM6W1szLCJ1c2VGbGV4aWJsZUxheW91dCIsIm51bVNlbGVjdGVkSXRlbXMiLCJjb2x1bW5zIiwiaHBhcmFtQ29sdW1ucyIsIm1ldHJpY0NvbHVtbnMiLCJzaG93RXhwZXJpbWVudE5hbWUiLCJwYWdlSXRlbXMiLCJmaWx0ZXJlZEl0ZW1zTGVuZ3RoIiwiYWxsSXRlbXNMZW5ndGgiLCJsb2FkaW5nIiwicGFnaW5hdGlvbk9wdGlvbiIsInJlZ2V4RmlsdGVyIiwic29ydE9wdGlvbiIsInVzZVBhZ2luYXRpb24iLCJvblNlbGVjdGlvblRvZ2dsZSIsIm9uUGFnZVNlbGVjdGlvblRvZ2dsZSIsIm9uU2VsZWN0QWxsUGFnZXMiLCJvblBhZ2luYXRpb25DaGFuZ2UiLCJvblJlZ2V4RmlsdGVyQ2hhbmdlIiwib25Tb3J0Q2hhbmdlIiwib25SdW5Db2xvckNoYW5nZSIsIm9uSHBhcmFtSW50ZXJ2YWxGaWx0ZXJDaGFuZ2VkIiwib25IcGFyYW1EaXNjcmV0ZUZpbHRlckNoYW5nZWQiLCJvbk1ldHJpY0ZpbHRlckNoYW5nZWQiXV0sdGVtcGxhdGU6ZnVuY3Rpb24gdChuLGUpezEmbiYmKEtnKDAsInJ1bnMtdGFibGUtY29tcG9uZW50IiwwKSxjcCgib25TZWxlY3Rpb25Ub2dnbGUiLChmdW5jdGlvbiB0KG4pe3JldHVybiBlLm9uUnVuU2VsZWN0aW9uVG9nZ2xlKG4pfSkpKCJvblBhZ2VTZWxlY3Rpb25Ub2dnbGUiLChmdW5jdGlvbiB0KG4pe3JldHVybiBlLm9uUGFnZVNlbGVjdGlvblRvZ2dsZShuKX0pKSgib25TZWxlY3RBbGxQYWdlcyIsKGZ1bmN0aW9uIHQoKXtyZXR1cm4gZS5vblNlbGVjdEFsbFBhZ2VzKCl9KSkoIm9uUGFnaW5hdGlvbkNoYW5nZSIsKGZ1bmN0aW9uIHQobil7cmV0dXJuIGUub25QYWdpbmF0aW9uQ2hhbmdlKG4pfSkpKCJvblJlZ2V4RmlsdGVyQ2hhbmdlIiwoZnVuY3Rpb24gdChuKXtyZXR1cm4gZS5vblJlZ2V4RmlsdGVyQ2hhbmdlKG4pfSkpKCJvblNvcnRDaGFuZ2UiLChmdW5jdGlvbiB0KG4pe3JldHVybiBlLm9uU29ydENoYW5nZShuKX0pKSgib25SdW5Db2xvckNoYW5nZSIsKGZ1bmN0aW9uIHQobil7cmV0dXJuIGUub25SdW5Db2xvckNoYW5nZShuKX0pKSgib25IcGFyYW1JbnRlcnZhbEZpbHRlckNoYW5nZWQiLChmdW5jdGlvbiB0KG4pe3JldHVybiBlLm9uSHBhcmFtSW50ZXJ2YWxGaWx0ZXJDaGFuZ2VkKG4pfSkpKCJvbkhwYXJhbURpc2NyZXRlRmlsdGVyQ2hhbmdlZCIsKGZ1bmN0aW9uIHQobil7cmV0dXJuIGUub25IcGFyYW1EaXNjcmV0ZUZpbHRlckNoYW5nZWQobil9KSkoIm9uTWV0cmljRmlsdGVyQ2hhbmdlZCIsKGZ1bmN0aW9uIHQobil7cmV0dXJuIGUub25NZXRyaWNGaWx0ZXJDaGFuZ2VkKG4pfSkpLHlmKDEsImFzeW5jIikseWYoMiwiYXN5bmMiKSx5ZigzLCJhc3luYyIpLHlmKDQsImFzeW5jIikseWYoNSwiYXN5bmMiKSx5Zig2LCJhc3luYyIpLHlmKDcsImFzeW5jIikseWYoOCwiYXN5bmMiKSx5Zig5LCJhc3luYyIpLHlmKDEwLCJhc3luYyIpLCRnKCkpLDImbiYmSmcoInVzZUZsZXhpYmxlTGF5b3V0IixlLnVzZUZsZXhpYmxlTGF5b3V0KSgibnVtU2VsZWN0ZWRJdGVtcyIsa2YoMSwxNCxlLm51bVNlbGVjdGVkSXRlbXMkKSkoImNvbHVtbnMiLGUuY29sdW1ucykoImhwYXJhbUNvbHVtbnMiLGtmKDIsMTYsZS5ocGFyYW1Db2x1bW5zJCkpKCJtZXRyaWNDb2x1bW5zIixrZigzLDE4LGUubWV0cmljQ29sdW1ucyQpKSgic2hvd0V4cGVyaW1lbnROYW1lIixlLmlzRXhwZXJpbWVudE5hbWVWaXNpYmxlKCkpKCJwYWdlSXRlbXMiLGtmKDQsMjAsZS5wYWdlSXRlbXMkKSkoImZpbHRlcmVkSXRlbXNMZW5ndGgiLGtmKDUsMjIsZS5maWx0ZXJlZEl0ZW1zTGVuZ3RoJCkpKCJhbGxJdGVtc0xlbmd0aCIsa2YoNiwyNCxlLmFsbEl0ZW1zTGVuZ3RoJCkpKCJsb2FkaW5nIixrZig3LDI2LGUubG9hZGluZyQpKSgicGFnaW5hdGlvbk9wdGlvbiIsa2YoOCwyOCxlLnBhZ2luYXRpb25PcHRpb24kKSkoInJlZ2V4RmlsdGVyIixrZig5LDMwLGUucmVnZXhGaWx0ZXIkKSkoInNvcnRPcHRpb24iLGtmKDEwLDMyLGUuc29ydE9wdGlvbiQpKSgidXNlUGFnaW5hdGlvbiIsZS51c2VQYWdpbmF0aW9uKX0sZGlyZWN0aXZlczpbTFFdLHBpcGVzOltvT10sc3R5bGVzOlsiLmZsZXgtbGF5b3V0W19uZ2hvc3QtJUNPTVAlXSB7XG4gICAgICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgICB9XG5cbiAgICAgIC5mbGV4LWxheW91dFtfbmdob3N0LSVDT01QJV0gICAgPiBydW5zLXRhYmxlLWNvbXBvbmVudFtfbmdjb250ZW50LSVDT01QJV0ge1xuICAgICAgICB3aWR0aDogMTAwJTtcbiAgICAgIH0iXSxjaGFuZ2VEZXRlY3Rpb246MH0pO2NsYXNzIGFLe31hSy7JtW1vZD14byh7dHlwZTphS30pLGFLLsm1aW5qPUdlKHtmYWN0b3J5OmZ1bmN0aW9uIHQobil7cmV0dXJuIG5ldyhufHxhSyl9LGltcG9ydHM6W1tqSixQTyxvQSxtVixWQix4VixGcSxjWixfWixBWixLWCxKSl1dfSksKCJ1bmRlZmluZWQiPT10eXBlb2YgbmdKaXRNb2RlfHxuZ0ppdE1vZGUpJiZ5byhhSyx7ZGVjbGFyYXRpb25zOltlSyxMUV0saW1wb3J0czpbakosUE8sb0EsbVYsVkIseFYsRnEsY1osX1osQVosS1gsSkpdLGV4cG9ydHM6W2VLXX0pO2NsYXNzIG9Le31vSy7JtWZhYz1mdW5jdGlvbiB0KG4pe3JldHVybiBuZXcobnx8b0spfSxvSy7JtWNtcD1fbyh7dHlwZTpvSyxzZWxlY3RvcnM6W1sicnVucy1zZWxlY3Rvci1jb21wb25lbnQiXV0saW5wdXRzOntleHBlcmltZW50SWRzOiJleHBlcmltZW50SWRzIixzaG93SHBhcmFtc0FuZE1ldHJpY3M6InNob3dIcGFyYW1zQW5kTWV0cmljcyIsY29sdW1uczoiY29sdW1ucyIsaHBhcmFtQW5kTWV0cmljU3BlY3M6ImhwYXJhbUFuZE1ldHJpY1NwZWNzIn0sZGVjbHM6MSx2YXJzOjQsY29uc3RzOltbMywidXNlRmxleGlibGVMYXlvdXQiLCJjb2x1bW5zIiwiZXhwZXJpbWVudElkcyIsInNob3dIcGFyYW1zQW5kTWV0cmljcyJdXSx0ZW1wbGF0ZTpmdW5jdGlvbiB0KG4sZSl7MSZuJiZ0cCgwLCJydW5zLXRhYmxlIiwwKSwyJm4mJkpnKCJ1c2VGbGV4aWJsZUxheW91dCIsITApKCJjb2x1bW5zIixlLmNvbHVtbnMpKCJleHBlcmltZW50SWRzIixlLmV4cGVyaW1lbnRJZHMpKCJzaG93SHBhcmFtc0FuZE1ldHJpY3MiLGUuc2hvd0hwYXJhbXNBbmRNZXRyaWNzKX0sZGlyZWN0aXZlczpbZUtdLHN0eWxlczpbInJ1bnMtdGFibGVbX25nY29udGVudC0lQ09NUCVdIHtcbiAgICAgICAgaGVpZ2h0OiAxMDAlO1xuICAgICAgfSJdLGNoYW5nZURldGVjdGlvbjowfSk7Y2xhc3Mgckt7Y29uc3RydWN0b3IodCl7dGhpcy5zdG9yZT10LHRoaXMuZXhwZXJpbWVudElkcyQ9dGhpcy5zdG9yZS5zZWxlY3QoZVIpLnBpcGUoZnQoKHQ9Pm51bGwhPXQ/dDpbXSkpKSx0aGlzLmNvbHVtbnMkPXRoaXMuc3RvcmUuc2VsZWN0KGVSKS5waXBlKGZ0KCh0PT5bWkouQ0hFQ0tCT1gsWkouUlVOX05BTUUsdCYmdC5sZW5ndGg+MT9aSi5FWFBFUklNRU5UX05BTUU6bnVsbCxaSi5SVU5fQ09MT1JdLmZpbHRlcigodD0+bnVsbCE9PXQpKSkpKX19cksuybVmYWM9ZnVuY3Rpb24gdChuKXtyZXR1cm4gbmV3KG58fHJLKShaZyhjdikpfSxySy7JtWNtcD1fbyh7dHlwZTpySyxzZWxlY3RvcnM6W1sicnVucy1zZWxlY3RvciJdXSxpbnB1dHM6e3Nob3dIcGFyYW1zQW5kTWV0cmljczoic2hvd0hwYXJhbXNBbmRNZXRyaWNzIn0sZGVjbHM6Myx2YXJzOjcsY29uc3RzOltbMywiZXhwZXJpbWVudElkcyIsImNvbHVtbnMiLCJzaG93SHBhcmFtc0FuZE1ldHJpY3MiXV0sdGVtcGxhdGU6ZnVuY3Rpb24gdChuLGUpezEmbiYmKHRwKDAsInJ1bnMtc2VsZWN0b3ItY29tcG9uZW50IiwwKSx5ZigxLCJhc3luYyIpLHlmKDIsImFzeW5jIikpLDImbiYmSmcoImV4cGVyaW1lbnRJZHMiLGtmKDEsMyxlLmV4cGVyaW1lbnRJZHMkKSkoImNvbHVtbnMiLGtmKDIsNSxlLmNvbHVtbnMkKSkoInNob3dIcGFyYW1zQW5kTWV0cmljcyIsZS5zaG93SHBhcmFtc0FuZE1ldHJpY3MpfSxkaXJlY3RpdmVzOltvS10scGlwZXM6W29PXSxlbmNhcHN1bGF0aW9uOjIsY2hhbmdlRGV0ZWN0aW9uOjB9KTtjbGFzcyBpS3t9aUsuybVtb2Q9eG8oe3R5cGU6aUt9KSxpSy7JtWluaj1HZSh7ZmFjdG9yeTpmdW5jdGlvbiB0KG4pe3JldHVybiBuZXcobnx8aUspfSxpbXBvcnRzOltbUE8sYUtdXX0pLCgidW5kZWZpbmVkIj09dHlwZW9mIG5nSml0TW9kZXx8bmdKaXRNb2RlKSYmeW8oaUsse2RlY2xhcmF0aW9uczpbb0sscktdLGltcG9ydHM6W1BPLGFLXSxleHBvcnRzOltyS119KTtjb25zdCBjSz1PaygiW01ldHJpY3NdIE1ldHJpY3MgVGFnIE1ldGFkYXRhIFJlcXVlc3RlZCIpLHNLPU9rKCJbTWV0cmljc10gTWV0cmljcyBUYWcgTWV0YWRhdGEgTG9hZGVkIix7X2FzOiJwcm9wcyIsX3A6dm9pZCAwfSksbEs9T2soIltNZXRyaWNzXSBNZXRyaWNzIFRhZyBNZXRhZGF0YSBGYWlsZWQiKSxtSz1PaygiW01ldHJpY3NdIE1ldHJpY3MgU2V0dGluZ3MgQ2hhbmdlIFRvb2x0aXAiLHtfYXM6InByb3BzIixfcDp2b2lkIDB9KTtPaygiW01ldHJpY3NdIE1ldHJpY3MgU2V0dGluZ3MgVG9nZ2xlIFNob3cgRGF0YSBEb3dubG9hZCIpO2NvbnN0IGRLPU9rKCJbTWV0cmljc10gTWV0cmljcyBTZXR0aW5nIFRvZ2dsZSBJZ25vcmUgT3V0bGllciIpLGdLPU9rKCJbTWV0cmljc10gTWV0cmljcyBTZXR0aW5nIENoYW5nZSBYIEF4aXMgVHlwZSIse19hczoicHJvcHMiLF9wOnZvaWQgMH0pLHBLPU9rKCJbTWV0cmljc10gTWV0cmljcyBTZXR0aW5nIENoYW5nZSBTY2FsYXIgU21vb3RoaW5nIix7X2FzOiJwcm9wcyIsX3A6dm9pZCAwfSksYks9T2soIltNZXRyaWNzXSBNZXRyaWNzIFNldHRpbmcgUGFydGl0aW9uIE5vbiBNb25vdG9uaWMgWCBUb2dnbGVkIiksdUs9T2soIltNZXRyaWNzXSBNZXRyaWNzIFNldHRpbmcgQ2hhbmdlIEltYWdlIEJyaWdodG5lc3MiLHtfYXM6InByb3BzIixfcDp2b2lkIDB9KSxmSz1PaygiW01ldHJpY3NdIE1ldHJpY3MgU2V0dGluZyBDaGFuZ2UgSW1hZ2UgQ29udHJhc3QiLHtfYXM6InByb3BzIixfcDp2b2lkIDB9KSxoSz1PaygiW01ldHJpY3NdIEltYWdlIEJyaWdodG5lc3MgU2V0dGluZyBSZXNldCIpLF9LPU9rKCJbTWV0cmljc10gSW1hZ2UgQ29udHJhc3QgU2V0dGluZyBSZXNldCIpLENLPU9rKCJbTWV0cmljc10gTWV0cmljcyBTZXR0aW5nIFRvZ2dsZSBJbWFnZSBTaG93IEFjdHVhbCBTaXplIiksTUs9T2soIltNZXRyaWNzXSBNZXRyaWNzIFNldHRpbmcgQ2hhbmdlIEhpc3RvZ3JhbSBNb2RlIix7X2FzOiJwcm9wcyIsX3A6dm9pZCAwfSksT0s9T2soIltNZXRyaWNzXSBNdWx0aXBsZSBUaW1lIFNlcmllcyBSZXF1ZXN0ZWQiLHtfYXM6InByb3BzIixfcDp2b2lkIDB9KSxQSz1PaygiW01ldHJpY3NdIEZldGNoIFRpbWUgU2VyaWVzIFJlcXVlc3QgRmFpbGVkIix7X2FzOiJwcm9wcyIsX3A6dm9pZCAwfSkseEs9T2soIltNZXRyaWNzXSBGZXRjaCBUaW1lIFNlcmllcyBSZXNwb25zZSBMb2FkZWQiLHtfYXM6InByb3BzIixfcDp2b2lkIDB9KSx5Sz1PaygiW01ldHJpY3NdIENhcmQgVmlzaWJpbGl0eSBDaGFuZ2VkIix7X2FzOiJwcm9wcyIsX3A6dm9pZCAwfSksa0s9T2soIltNZXRyaWNzXSBDYXJkIFN0ZXAgU2xpZGVyIENoYW5nZWQiLHtfYXM6InByb3BzIixfcDp2b2lkIDB9KSx2Sz1PaygiW01ldHJpY3NdIFRhZyBGaWx0ZXIgQ2hhbmdlZCIse19hczoicHJvcHMiLF9wOnZvaWQgMH0pLHdLPU9rKCJbTWV0cmljc10gTWV0cmljcyBUYWcgR3JvdXAgRXhwYW5zaW9uIENoYW5nZWQiLHtfYXM6InByb3BzIixfcDp2b2lkIDB9KSxTSz1PaygiW01ldHJpY3NdIENhcmQgUGluIFN0YXRlIFRvZ2dsZWQiLHtfYXM6InByb3BzIixfcDp2b2lkIDB9KTtmdW5jdGlvbiBFSyh0LG4sZSl7Y29uc3QgYT1PYmplY3Qua2V5cyh0KTtyZXR1cm57aW5pdGlhbFN0YXRlOk9iamVjdC5hc3NpZ24oT2JqZWN0LmFzc2lnbihPYmplY3QuYXNzaWduKHt9LHQpLG4pLHtwcml2YXRlUm91dGVDb250ZXh0ZWRTdGF0ZTp7fX0pLHJlZHVjZXJzOlV2KHt9LGp2KEtWLCgobix7YmVmb3JlOm8sYWZ0ZXI6cn0pPT57Y29uc3QgaT1YeihyLnJvdXRlS2luZCxyLnBhcmFtcyksYz1vP1h6KG8ucm91dGVLaW5kLG8ucGFyYW1zKTpudWxsO2lmKGM9PT1pKXJldHVybiBuO2xldCBzPU9iamVjdC5hc3NpZ24oe30sbi5wcml2YXRlUm91dGVDb250ZXh0ZWRTdGF0ZSk7aWYoYyl7Y29uc3QgdD17fTtmb3IoY29uc3QgZSBvZiBhKXRbZV09bltlXTtzPU9iamVjdC5hc3NpZ24oT2JqZWN0LmFzc2lnbih7fSxzKSx7W2NdOnR9KX1sZXQgbD1uLnByaXZhdGVSb3V0ZUNvbnRleHRlZFN0YXRlJiZuLnByaXZhdGVSb3V0ZUNvbnRleHRlZFN0YXRlW2ldP24ucHJpdmF0ZVJvdXRlQ29udGV4dGVkU3RhdGVbaV06bnVsbDtjJiZudWxsPT09bCYmKGw9dCk7bGV0IG09T2JqZWN0LmFzc2lnbihPYmplY3QuYXNzaWduKE9iamVjdC5hc3NpZ24oe30sbiksbCkse3ByaXZhdGVSb3V0ZUNvbnRleHRlZFN0YXRlOnN9KTtyZXR1cm4gZT9lKG0pOm19KSkpfX1mdW5jdGlvbiBBSyh0LG4pe2NvbnN0IGU9e307Zm9yKGNvbnN0IGEgb2YgT2JqZWN0LmtleXModCkpZVthXT1uKHRbYV0sYSk7cmV0dXJuIGV9ZnVuY3Rpb24geksoLi4udCl7cmV0dXJuKG4sZSk9PntsZXQgYT1uO2Zvcihjb25zdCBuIG9mIHQpYT1uKGEsZSk7cmV0dXJuIGF9fWZ1bmN0aW9uIFJLKHQsbixlKXtjb25zdHtwbHVnaW46YSx0YWc6byxydW5JZDpyLHNhbXBsZTppfT1uW3RdLGM9QVQoZSxhLG8saSk7aWYoYyl7aWYobnVsbCE9PXImJmMucnVuVG9TZXJpZXMuaGFzT3duUHJvcGVydHkocikpe2NvbnN0IHQ9Yy5ydW5Ub1Nlcmllc1tyXS5sZW5ndGg7cmV0dXJuIHQ+MD90LTE6bnVsbH1jb25zdCB0PU9iamVjdC52YWx1ZXMoYy5ydW5Ub1NlcmllcykubWFwKCh0PT50Lmxlbmd0aCkpO2lmKHQubGVuZ3RoKXJldHVybiBNYXRoLm1heCguLi50KS0xfXJldHVybiBudWxsfWZ1bmN0aW9uIFRLKHQsbixlLGEpe2NvbnN0IG89T2JqZWN0LmFzc2lnbih7fSxuKTtmb3IoY29uc3QgciBpbiB0KXtpZighdC5oYXNPd25Qcm9wZXJ0eShyKSljb250aW51ZTtjb25zdCBpPVJLKHIsdCxlKTtpZihudWxsPT09aSl7bi5oYXNPd25Qcm9wZXJ0eShyKSYmKG9bcl09bnVsbCk7Y29udGludWV9Y29uc3QgYz1uLmhhc093blByb3BlcnR5KHIpP25bcl06bnVsbCxzPVJLKHIsdCxhKSxsPW51bGwhPT1jJiZjPT09cyxtPW51bGw9PT1jfHxsOyhudWxsIT09YyYmYz5pfHxtKSYmKG9bcl09aSl9cmV0dXJuIG99ZnVuY3Rpb24gREsodCl7Y29uc3Qgbj1BSyh0LnJ1blRvTG9hZFN0YXRlLCh0PT50PT09ZlIuTE9BRElORz9mUi5MT0FESU5HOmZSLk5PVF9MT0FERUQpKTtyZXR1cm4gT2JqZWN0LmFzc2lnbihPYmplY3QuYXNzaWduKHt9LHQpLHtydW5Ub0xvYWRTdGF0ZTpufSl9ZnVuY3Rpb24gSUsodCxuLGUsYSl7cmV0dXJuIEpTT04uc3RyaW5naWZ5KFt0LG4sZXx8IiIsYV0pfWNvbnN0e2luaXRpYWxTdGF0ZTpOSyxyZWR1Y2VyczpGS309RUsoe3RhZ01ldGFkYXRhTG9hZGVkOmZSLk5PVF9MT0FERUQsdGFnTWV0YWRhdGE6e3NjYWxhcnM6e3RhZ0Rlc2NyaXB0aW9uczp7fSx0YWdUb1J1bnM6e319LGhpc3RvZ3JhbXM6e3RhZ0Rlc2NyaXB0aW9uczp7fSx0YWdUb1J1bnM6e319LGltYWdlczp7dGFnRGVzY3JpcHRpb25zOnt9LHRhZ1J1blNhbXBsZWRJbmZvOnt9fX0sY2FyZExpc3Q6W10sY2FyZFRvUGlubmVkQ29weTpuZXcgTWFwLHBpbm5lZENhcmRUb09yaWdpbmFsOm5ldyBNYXAsdW5yZXNvbHZlZEltcG9ydGVkUGlubmVkQ2FyZHM6W10sY2FyZE1ldGFkYXRhTWFwOnt9LGNhcmRTdGVwSW5kZXg6e30sdGFnRmlsdGVyOiIiLHRhZ0dyb3VwRXhwYW5kZWQ6bmV3IE1hcH0se3RpbWVTZXJpZXNEYXRhOntzY2FsYXJzOnt9LGhpc3RvZ3JhbXM6e30saW1hZ2VzOnt9fSxzZXR0aW5nczpZVCx2aXNpYmxlQ2FyZHM6bmV3IFNldH0sKHQ9Pk9iamVjdC5hc3NpZ24oT2JqZWN0LmFzc2lnbih7fSx0KSx7dmlzaWJsZUNhcmRzOm5ldyBTZXR9KSkpLExLPU5LLEhLPVV2KE5LLGp2KFhWLCgodCx7cm91dGVLaW5kOm4scGFydGlhbFN0YXRlOmV9KT0+e2lmKG4hPT1Zei5FWFBFUklNRU5UJiZuIT09WXouQ09NUEFSRV9FWFBFUklNRU5UKXJldHVybiB0O2NvbnN0IGE9bmV3IFNldDtmb3IoY29uc3QgbiBvZiB0LnBpbm5lZENhcmRUb09yaWdpbmFsLmtleXMoKSl7Y29uc3R7cGx1Z2luOmUsdGFnOm8scnVuSWQ6cixzYW1wbGU6aX09dC5jYXJkTWV0YWRhdGFNYXBbbl07YS5hZGQoSUsoZSxvLHIsaSkpfWNvbnN0IG89ZSxyPVtdO2Zvcihjb25zdCBuIG9mWy4uLnQudW5yZXNvbHZlZEltcG9ydGVkUGlubmVkQ2FyZHMsLi4uby5tZXRyaWNzLnBpbm5lZENhcmRzXSl7Y29uc3QgdD1JSyhuLnBsdWdpbixuLnRhZyxuLnJ1bklkLG4uc2FtcGxlKTthLmhhcyh0KXx8KGEuYWRkKHQpLHIucHVzaChuKSl9Y29uc3QgaT1JVChyLHQuY2FyZExpc3QsdC5jYXJkTWV0YWRhdGFNYXAsdC5jYXJkVG9QaW5uZWRDb3B5LHQucGlubmVkQ2FyZFRvT3JpZ2luYWwsdC5jYXJkU3RlcEluZGV4KSxjPW8ubWV0cmljcy5zbW9vdGhpbmc7bGV0IHM9dC5zZXR0aW5ncztpZihOdW1iZXIuaXNGaW5pdGUoYykmJm51bGwhPT1jKXtjb25zdCBuPU1hdGgubWF4KDAsTWF0aC5taW4oLjk5OSxOdW1iZXIoYy50b1ByZWNpc2lvbigzKSkpKTtzPU9iamVjdC5hc3NpZ24oT2JqZWN0LmFzc2lnbih7fSx0LnNldHRpbmdzKSx7c2NhbGFyU21vb3RoaW5nOm59KX1yZXR1cm4gT2JqZWN0LmFzc2lnbihPYmplY3QuYXNzaWduKE9iamVjdC5hc3NpZ24oe30sdCksaSkse3NldHRpbmdzOnN9KX0pKSxqdihmSSx1SSwodD0+e2NvbnN0IG49dC50YWdNZXRhZGF0YUxvYWRlZD09PWZSLkxPQURJTkc/ZlIuTE9BRElORzpmUi5OT1RfTE9BREVELGU9QUsodC50aW1lU2VyaWVzRGF0YSwoKHQsbik9PkFLKHQsKHQ9PmJUKG4pP0FLKHQsKHQ9PkRLKHQpKSk6REsodCkpKSkpO3JldHVybiBPYmplY3QuYXNzaWduKE9iamVjdC5hc3NpZ24oe30sdCkse3RhZ01ldGFkYXRhTG9hZGVkOm4sdGltZVNlcmllc0RhdGE6ZX0pfSkpLGp2KGNLLCh0PT5PYmplY3QuYXNzaWduKE9iamVjdC5hc3NpZ24oe30sdCkse3RhZ01ldGFkYXRhTG9hZGVkOmZSLkxPQURJTkd9KSkpLGp2KGxLLCh0PT5PYmplY3QuYXNzaWduKE9iamVjdC5hc3NpZ24oe30sdCkse3RhZ01ldGFkYXRhTG9hZGVkOmZSLkZBSUxFRH0pKSksanYoc0ssKCh0LHt0YWdNZXRhZGF0YTpufSk9Pntjb25zdCBlPXtzY2FsYXJzOkJLKG4sZ1QuU0NBTEFSUyksaGlzdG9ncmFtczpCSyhuLGdULkhJU1RPR1JBTVMpLGltYWdlczpuW2dULklNQUdFU119LGE9T2JqZWN0LmFzc2lnbih7fSx0LmNhcmRNZXRhZGF0YU1hcCksbz0oZnVuY3Rpb24gcih0KXtjb25zdCBuPVtdO2ZvcihsZXQgZSBvZiBPYmplY3Qua2V5cyh0KSl7Y29uc3QgYT1lO2xldCBvO2lmKGJUKGEpKXtpZighZlQoYSkpdGhyb3cgbmV3IEVycm9yKCJNdWx0aS1ydW4sIHNhbXBsZWQgcGx1Z2luIHN1cHBvcnQgbm90IHlldCBpbXBsZW1lbnRlZCIpO3tjb25zdCBlPXRbYV0udGFnUnVuU2FtcGxlZEluZm87Zm9yKGNvbnN0IHQgb2YgT2JqZWN0LmtleXMoZSkpZm9yKGNvbnN0IG8gb2YgT2JqZWN0LmtleXMoZVt0XSkpe2NvbnN0e21heFNhbXBsZXNQZXJTdGVwOnJ9PWVbdF1bb107Zm9yKGxldCBlPTA7ZTxyO2UrKyluLnB1c2goe3BsdWdpbjphLHRhZzp0LHJ1bklkOm8sc2FtcGxlOmV9KX19fWVsc2UgaWYoZlQoYSkpe289dFthXS50YWdUb1J1bnM7Zm9yKGNvbnN0IHQgb2YgT2JqZWN0LmtleXMobykpZm9yKGNvbnN0IGUgb2Ygb1t0XSluLnB1c2goe3BsdWdpbjphLHRhZzp0LHJ1bklkOmV9KX1lbHNle289dFthXS50YWdUb1J1bnM7Zm9yKGNvbnN0IHQgb2YgT2JqZWN0LmtleXMobykpbi5wdXNoKHtwbHVnaW46YSx0YWc6dCxydW5JZDpudWxsfSl9fXJldHVybiBufSkoZSksaT1bXTtmb3IoY29uc3QgbiBvZiBvKXtjb25zdCBlPVJUKG4pO3QuY2FyZE1ldGFkYXRhTWFwLmhhc093blByb3BlcnR5KGUpfHwoYVtlXT1uLGkucHVzaChlKSl9Y29uc3QgYz1bLi4udC5jYXJkTGlzdCwuLi5pXSxzPUlUKHQudW5yZXNvbHZlZEltcG9ydGVkUGlubmVkQ2FyZHMsaSxhLHQuY2FyZFRvUGlubmVkQ29weSx0LnBpbm5lZENhcmRUb09yaWdpbmFsLHQuY2FyZFN0ZXBJbmRleCk7cmV0dXJuIE9iamVjdC5hc3NpZ24oT2JqZWN0LmFzc2lnbihPYmplY3QuYXNzaWduKHt9LHQpLHMpLHt0YWdNZXRhZGF0YUxvYWRlZDpmUi5MT0FERUQsdGFnTWV0YWRhdGE6ZSxjYXJkTGlzdDpjfSl9KSksanYodkssKCh0LHt0YWdGaWx0ZXI6bn0pPT5PYmplY3QuYXNzaWduKE9iamVjdC5hc3NpZ24oe30sdCkse3RhZ0ZpbHRlcjpufSkpKSxqdihtSywoKHQse3NvcnQ6bn0pPT5PYmplY3QuYXNzaWduKE9iamVjdC5hc3NpZ24oe30sdCkse3NldHRpbmdzOk9iamVjdC5hc3NpZ24oT2JqZWN0LmFzc2lnbih7fSx0LnNldHRpbmdzKSx7dG9vbHRpcFNvcnQ6bn0pfSkpKSxqdihkSywodD0+T2JqZWN0LmFzc2lnbihPYmplY3QuYXNzaWduKHt9LHQpLHtzZXR0aW5nczpPYmplY3QuYXNzaWduKE9iamVjdC5hc3NpZ24oe30sdC5zZXR0aW5ncykse2lnbm9yZU91dGxpZXJzOiF0LnNldHRpbmdzLmlnbm9yZU91dGxpZXJzfSl9KSkpLGp2KGdLLCgodCx7eEF4aXNUeXBlOm59KT0+T2JqZWN0LmFzc2lnbihPYmplY3QuYXNzaWduKHt9LHQpLHtzZXR0aW5nczpPYmplY3QuYXNzaWduKE9iamVjdC5hc3NpZ24oe30sdC5zZXR0aW5ncykse3hBeGlzVHlwZTpufSl9KSkpLGp2KHBLLCgodCx7c21vb3RoaW5nOm59KT0+T2JqZWN0LmFzc2lnbihPYmplY3QuYXNzaWduKHt9LHQpLHtzZXR0aW5nczpPYmplY3QuYXNzaWduKE9iamVjdC5hc3NpZ24oe30sdC5zZXR0aW5ncykse3NjYWxhclNtb290aGluZzpufSl9KSkpLGp2KGJLLCh0PT5PYmplY3QuYXNzaWduKE9iamVjdC5hc3NpZ24oe30sdCkse3NldHRpbmdzOk9iamVjdC5hc3NpZ24oT2JqZWN0LmFzc2lnbih7fSx0LnNldHRpbmdzKSx7c2NhbGFyUGFydGl0aW9uTm9uTW9ub3RvbmljWDohdC5zZXR0aW5ncy5zY2FsYXJQYXJ0aXRpb25Ob25Nb25vdG9uaWNYfSl9KSkpLGp2KHVLLCgodCx7YnJpZ2h0bmVzc0luTWlsbGk6bn0pPT5PYmplY3QuYXNzaWduKE9iamVjdC5hc3NpZ24oe30sdCkse3NldHRpbmdzOk9iamVjdC5hc3NpZ24oT2JqZWN0LmFzc2lnbih7fSx0LnNldHRpbmdzKSx7aW1hZ2VCcmlnaHRuZXNzSW5NaWxsaTpufSl9KSkpLGp2KGZLLCgodCx7Y29udHJhc3RJbk1pbGxpOm59KT0+T2JqZWN0LmFzc2lnbihPYmplY3QuYXNzaWduKHt9LHQpLHtzZXR0aW5nczpPYmplY3QuYXNzaWduKE9iamVjdC5hc3NpZ24oe30sdC5zZXR0aW5ncykse2ltYWdlQ29udHJhc3RJbk1pbGxpOm59KX0pKSksanYoaEssKHQ9Pk9iamVjdC5hc3NpZ24oT2JqZWN0LmFzc2lnbih7fSx0KSx7c2V0dGluZ3M6T2JqZWN0LmFzc2lnbihPYmplY3QuYXNzaWduKHt9LHQuc2V0dGluZ3MpLHtpbWFnZUJyaWdodG5lc3NJbk1pbGxpOk5LLnNldHRpbmdzLmltYWdlQnJpZ2h0bmVzc0luTWlsbGl9KX0pKSksanYoX0ssKHQ9Pk9iamVjdC5hc3NpZ24oT2JqZWN0LmFzc2lnbih7fSx0KSx7c2V0dGluZ3M6T2JqZWN0LmFzc2lnbihPYmplY3QuYXNzaWduKHt9LHQuc2V0dGluZ3MpLHtpbWFnZUNvbnRyYXN0SW5NaWxsaTpOSy5zZXR0aW5ncy5pbWFnZUNvbnRyYXN0SW5NaWxsaX0pfSkpKSxqdihDSywodD0+T2JqZWN0LmFzc2lnbihPYmplY3QuYXNzaWduKHt9LHQpLHtzZXR0aW5nczpPYmplY3QuYXNzaWduKE9iamVjdC5hc3NpZ24oe30sdC5zZXR0aW5ncykse2ltYWdlU2hvd0FjdHVhbFNpemU6IXQuc2V0dGluZ3MuaW1hZ2VTaG93QWN0dWFsU2l6ZX0pfSkpKSxqdihNSywoKHQse2hpc3RvZ3JhbU1vZGU6bn0pPT5PYmplY3QuYXNzaWduKE9iamVjdC5hc3NpZ24oe30sdCkse3NldHRpbmdzOk9iamVjdC5hc3NpZ24oT2JqZWN0LmFzc2lnbih7fSx0LnNldHRpbmdzKSx7aGlzdG9ncmFtTW9kZTpufSl9KSkpLGp2KE9LLCgodCx7cmVxdWVzdHM6bn0pPT57aWYoIW4ubGVuZ3RoKXJldHVybiB0O2NvbnN0IGU9T2JqZWN0LmFzc2lnbih7fSx0LnRpbWVTZXJpZXNEYXRhKTtmb3IoY29uc3QgYSBvZiBuKXtjb25zdHtwbHVnaW46bix0YWc6byxzYW1wbGU6cn09YTtlW25dPXpUKGUsbixvLHIpO2NvbnN0IGk9QVQoZSxuLG8sciksYz1oVChhKT9bYS5ydW5JZF06RFQodC50YWdNZXRhZGF0YSxuLG8scik7aS5ydW5Ub0xvYWRTdGF0ZT1UVChmUi5MT0FESU5HLGMsaS5ydW5Ub0xvYWRTdGF0ZSl9cmV0dXJuIE9iamVjdC5hc3NpZ24oT2JqZWN0LmFzc2lnbih7fSx0KSx7dGltZVNlcmllc0RhdGE6ZX0pfSkpLGp2KFBLLCgodCx7cmVxdWVzdDpufSk9Pntjb25zdCBlPU9iamVjdC5hc3NpZ24oe30sdC50aW1lU2VyaWVzRGF0YSkse3BsdWdpbjphLHRhZzpvLHNhbXBsZTpyfT1uO2VbYV09elQoZSxhLG8scik7Y29uc3QgaT1BVChlLGEsbyxyKSxjPWhUKG4pP1tuLnJ1bklkXTpEVCh0LnRhZ01ldGFkYXRhLGEsbyxyKTtyZXR1cm4gaS5ydW5Ub0xvYWRTdGF0ZT1UVChmUi5GQUlMRUQsYyxpLnJ1blRvTG9hZFN0YXRlKSxPYmplY3QuYXNzaWduKE9iamVjdC5hc3NpZ24oe30sdCkse3RpbWVTZXJpZXNEYXRhOmV9KX0pKSxqdih4SywoKHQse3Jlc3BvbnNlOm59KT0+e2NvbnN0IGU9T2JqZWN0LmFzc2lnbih7fSx0LnRpbWVTZXJpZXNEYXRhKSx7cGx1Z2luOmEsdGFnOm8scnVuSWQ6cixzYW1wbGU6aX09bjtlW2FdPXpUKGUsYSxvLGkpO2NvbnN0IGM9QVQoZSxhLG8saSk7aWYoQ1Qobikpe2NvbnN0IG49cj9bcl06RFQodC50YWdNZXRhZGF0YSxhLG8saSk7Yy5ydW5Ub0xvYWRTdGF0ZT1UVChmUi5GQUlMRUQsbixjLnJ1blRvTG9hZFN0YXRlKX1lbHNle2NvbnN0IHQ9bi5ydW5Ub1NlcmllcztjLnJ1blRvU2VyaWVzPU9iamVjdC5hc3NpZ24oe30sYy5ydW5Ub1NlcmllcyksYy5ydW5Ub0xvYWRTdGF0ZT1PYmplY3QuYXNzaWduKHt9LGMucnVuVG9Mb2FkU3RhdGUpO2Zvcihjb25zdCBuIGluIHQpdC5oYXNPd25Qcm9wZXJ0eShuKSYmKGMucnVuVG9TZXJpZXNbbl09dFtuXSxjLnJ1blRvTG9hZFN0YXRlW25dPWZSLkxPQURFRCl9cmV0dXJuIE9iamVjdC5hc3NpZ24oT2JqZWN0LmFzc2lnbih7fSx0KSx7dGltZVNlcmllc0RhdGE6ZSxjYXJkU3RlcEluZGV4OlRLKHQuY2FyZE1ldGFkYXRhTWFwLHQuY2FyZFN0ZXBJbmRleCxlLHQudGltZVNlcmllc0RhdGEpfSl9KSksanYoa0ssKCh0LHtjYXJkSWQ6bixzdGVwSW5kZXg6ZX0pPT57Y29uc3QgYT1SSyhuLHQuY2FyZE1ldGFkYXRhTWFwLHQudGltZVNlcmllc0RhdGEpO2xldCBvPWU7cmV0dXJuIG51bGw9PT1hP289bnVsbDplPmEmJihvPWEpLE9iamVjdC5hc3NpZ24oT2JqZWN0LmFzc2lnbih7fSx0KSx7Y2FyZFN0ZXBJbmRleDpPYmplY3QuYXNzaWduKE9iamVjdC5hc3NpZ24oe30sdC5jYXJkU3RlcEluZGV4KSx7W25dOm99KX0pfSkpLGp2KHdLLCgodCx7dGFnR3JvdXA6bn0pPT57Y29uc3QgZT1uZXcgTWFwKHQudGFnR3JvdXBFeHBhbmRlZCk7cmV0dXJuIGUuc2V0KG4sIWUuZ2V0KG4pKSxPYmplY3QuYXNzaWduKE9iamVjdC5hc3NpZ24oe30sdCkse3RhZ0dyb3VwRXhwYW5kZWQ6ZX0pfSkpLGp2KHlLLCgodCx7ZW50ZXJlZENhcmRzOm4sZXhpdGVkQ2FyZHM6ZX0pPT57aWYoMD09PW4uc2l6ZSYmMD09PWUuc2l6ZSlyZXR1cm4gdDtjb25zdCBhPW5ldyBTZXQodC52aXNpYmxlQ2FyZHMpO3JldHVybiBuLmZvckVhY2goKHQ9PnthLmFkZCh0KX0pKSxlLmZvckVhY2goKHQ9PntpZihhLmRlbGV0ZSh0KSxuLmhhcyh0KSl0aHJvdyBuZXcgRXJyb3IoIkEgJ2NhcmRWaXNpYmlsaXR5Q2hhbmdlZCcgd2l0aCBhbiBpbnZhbGlkIHBheWxvYWQgY29udGFpbnMgb3ZlcmxhcHBpbmcgc2V0cyIpfSkpLE9iamVjdC5hc3NpZ24oT2JqZWN0LmFzc2lnbih7fSx0KSx7dmlzaWJsZUNhcmRzOmF9KX0pKSxqdihTSywoKHQse2NhcmRJZDpufSk9Pntjb25zdCBlPXQucGlubmVkQ2FyZFRvT3JpZ2luYWwuaGFzKG4pLGE9IWUmJiF0LmNhcmRUb1Bpbm5lZENvcHkuaGFzKG4pO2lmKGEmJiFGVCh0KSlyZXR1cm4gdDtsZXQgbz1uZXcgTWFwKHQuY2FyZFRvUGlubmVkQ29weSkscj1uZXcgTWFwKHQucGlubmVkQ2FyZFRvT3JpZ2luYWwpLGk9T2JqZWN0LmFzc2lnbih7fSx0LmNhcmRNZXRhZGF0YU1hcCksYz1PYmplY3QuYXNzaWduKHt9LHQuY2FyZFN0ZXBJbmRleCk7aWYoZSl7Y29uc3QgZT10LnBpbm5lZENhcmRUb09yaWdpbmFsLmdldChuKTtvLmRlbGV0ZShlKSxyLmRlbGV0ZShuKSxkZWxldGUgaVtuXSxkZWxldGUgY1tuXX1lbHNlIGlmKGEpe2NvbnN0IHQ9TlQobixvLHIsYyxpKTtvPXQuY2FyZFRvUGlubmVkQ29weSxyPXQucGlubmVkQ2FyZFRvT3JpZ2luYWwsaT10LmNhcmRNZXRhZGF0YU1hcCxjPXQuY2FyZFN0ZXBJbmRleH1lbHNle2NvbnN0IGU9dC5jYXJkVG9QaW5uZWRDb3B5LmdldChuKTtvLmRlbGV0ZShuKSxyLmRlbGV0ZShlKSxkZWxldGUgaVtlXSxkZWxldGUgY1tlXX1yZXR1cm4gT2JqZWN0LmFzc2lnbihPYmplY3QuYXNzaWduKHt9LHQpLHtjYXJkTWV0YWRhdGFNYXA6aSxjYXJkU3RlcEluZGV4OmMsY2FyZFRvUGlubmVkQ29weTpvLHBpbm5lZENhcmRUb09yaWdpbmFsOnJ9KX0pKSk7ZnVuY3Rpb24gQksodCxuKXtyZXR1cm57dGFnRGVzY3JpcHRpb25zOnRbbl0udGFnRGVzY3JpcHRpb25zLHRhZ1RvUnVuczpWSyh0W25dLnJ1blRhZ0luZm8pfX1mdW5jdGlvbiBWSyh0KXtjb25zdCBuPXt9O2Zvcihjb25zdCBlIGluIHQpZm9yKGNvbnN0IGEgb2YgdFtlXSluW2FdPVsuLi5uW2FdfHxbXSxlXTtyZXR1cm4gbn1jb25zdCBqSz1wdihKVCwkVCwoKHQsbixlKT0+bj9PYmplY3QuYXNzaWduKE9iamVjdC5hc3NpZ24oe30sbikse2xvYWRTdGF0ZTp0LGlkOmV9KTpudWxsKSksVUs9T2soIltNZXRyaWNzIEVmZmVjdHNdIEluaXQiKTtjbGFzcyBXS3tjb25zdHJ1Y3Rvcih0LG4sZSl7dGhpcy5hY3Rpb25zJD10LHRoaXMuc3RvcmU9bix0aGlzLmRhdGFTb3VyY2U9ZSx0aGlzLmRhc2hib2FyZFNob3duV2l0aG91dERhdGEkPXRoaXMuYWN0aW9ucyQucGlwZSh0dyhVSyxnSSxLVikseWUodGhpcy5zdG9yZS5zZWxlY3QoTkkpLHRoaXMuc3RvcmUuc2VsZWN0KFpUKSksR3QoKChbLHQsbl0pPT50PT09ZFQmJm49PT1mUi5OT1RfTE9BREVEKSkpLHRoaXMucmVsb2FkUmVxdWVzdGVkV2hpbGVTaG93biQ9dGhpcy5hY3Rpb25zJC5waXBlKHR3KGZJLHVJKSx5ZSh0aGlzLnN0b3JlLnNlbGVjdChOSSkpLEd0KCgoWyx0XSk9PnQ9PT1kVCkpKSx0aGlzLmxvYWRUYWdNZXRhZGF0YSQ9V3QodGhpcy5kYXNoYm9hcmRTaG93bldpdGhvdXREYXRhJCx0aGlzLnJlbG9hZFJlcXVlc3RlZFdoaWxlU2hvd24kKS5waXBlKHllKHRoaXMuc3RvcmUuc2VsZWN0KFpUKSx0aGlzLnN0b3JlLnNlbGVjdChlUikpLEd0KCgoWyx0LG5dKT0+dCE9PWZSLkxPQURJTkcmJm51bGwhPT1uKSksaGUoKCgpPT57dGhpcy5zdG9yZS5kaXNwYXRjaChjSygpKX0pKSxzZSgoKFssLHRdKT0+dGhpcy5kYXRhU291cmNlLmZldGNoVGFnTWV0YWRhdGEodCkucGlwZShoZSgodD0+e3RoaXMuc3RvcmUuZGlzcGF0Y2goc0soe3RhZ01ldGFkYXRhOnR9KSl9KSksb24oKCgpPT4odGhpcy5zdG9yZS5kaXNwYXRjaChsSygpKSxaKG51bGwpKSkpKSkpKSx0aGlzLnZpc2libGVDYXJkc1dpdGhvdXREYXRhQ2hhbmdlZCQ9dGhpcy5hY3Rpb25zJC5waXBlKHR3KHlLKSxzZSgoKCk9PnRoaXMuZ2V0VmlzaWJsZUNhcmRGZXRjaEluZm9zKCkucGlwZShUbigxKSkpKSxmdCgodD0+dC5maWx0ZXIoKHQ9PnQubG9hZFN0YXRlPT09ZlIuTk9UX0xPQURFRCkpKSkpLHRoaXMudmlzaWJsZUNhcmRzUmVsb2FkZWQkPXRoaXMucmVsb2FkUmVxdWVzdGVkV2hpbGVTaG93biQucGlwZShzZSgoKCk9PnRoaXMuZ2V0VmlzaWJsZUNhcmRGZXRjaEluZm9zKCkucGlwZShUbigxKSkpKSxmdCgodD0+dC5maWx0ZXIoKHQ9PnQubG9hZFN0YXRlIT09ZlIuTE9BRElORykpKSkpLHRoaXMubG9hZFRpbWVTZXJpZXMkPVd0KHRoaXMudmlzaWJsZUNhcmRzV2l0aG91dERhdGFDaGFuZ2VkJCx0aGlzLnZpc2libGVDYXJkc1JlbG9hZGVkJCkucGlwZShHdCgodD0+dC5sZW5ndGg+MCkpLHllKHRoaXMuc3RvcmUuc2VsZWN0KGVSKS5waXBlKEd0KCh0PT5udWxsIT09dCkpKSksVHQoKChbdCxuXSk9PnRoaXMuZmV0Y2hUaW1lU2VyaWVzRm9yQ2FyZHModCxuKSkpKSx0aGlzLmFsbEVmZmVjdHMkPVl2KCgoKT0+V3QodGhpcy5sb2FkVGFnTWV0YWRhdGEkLHRoaXMubG9hZFRpbWVTZXJpZXMkKSkse2Rpc3BhdGNoOiExfSl9bmdyeE9uSW5pdEVmZmVjdHMoKXtyZXR1cm4gVUsoKX1nZXRWaXNpYmxlQ2FyZEZldGNoSW5mb3MoKXtyZXR1cm4gdGhpcy5zdG9yZS5zZWxlY3QobkQpLnBpcGUoc2UoKHQ9PnQuc2l6ZT9IdChbLi4udF0ubWFwKCh0PT50aGlzLnN0b3JlLnNlbGVjdChqSyx0KS5waXBlKFRuKDEpKSkpKTpaKFtdKSkpLGZ0KCh0PT50LmZpbHRlcihCb29sZWFuKSkpKX1mZXRjaFRpbWVTZXJpZXModCl7cmV0dXJuIHRoaXMuZGF0YVNvdXJjZS5mZXRjaFRpbWVTZXJpZXMoW3RdKS5waXBlKGhlKCh0PT57Y29uc3Qgbj10LmZpbHRlcihDVCk7bi5sZW5ndGgmJmNvbnNvbGUuZXJyb3IoIlRpbWUgc2VyaWVzIHJlc3BvbnNlIGNvbnRhaW5lZCBlcnJvcnM6IixuKSx0aGlzLnN0b3JlLmRpc3BhdGNoKHhLKHtyZXNwb25zZTp0WzBdfSkpfSkpLG9uKCgoKT0+KHRoaXMuc3RvcmUuZGlzcGF0Y2goUEsoe3JlcXVlc3Q6dH0pKSxaKG51bGwpKSkpKX1mZXRjaFRpbWVTZXJpZXNGb3JDYXJkcyh0LG4pe3JldHVybiBaKHQubWFwKCh0PT57Y29uc3R7cGx1Z2luOmUsdGFnOmEscnVuSWQ6byxzYW1wbGU6cn09dDtyZXR1cm4gZlQoZSk/e3BsdWdpbjplLHRhZzphLHNhbXBsZTpyLHJ1bklkOm99OntwbHVnaW46ZSx0YWc6YSxzYW1wbGU6cixleHBlcmltZW50SWRzOm59fSkpKS5waXBlKGhlKCh0PT57dGhpcy5zdG9yZS5kaXNwYXRjaChPSyh7cmVxdWVzdHM6dH0pKX0pKSxUdCgodD0+V3QoLi4udC5tYXAoKHQ9PnRoaXMuZmV0Y2hUaW1lU2VyaWVzKHQpKSkpKSkpfX1XSy7JtWZhYz1mdW5jdGlvbiB0KG4pe3JldHVybiBuZXcobnx8V0spKFphKCR2KSxaYShjdiksWmEoX1QpKX0sV0suybVwcm92PVdlKHt0b2tlbjpXSyxmYWN0b3J5OldLLsm1ZmFjfSk7Y29uc3QgR0s9bmV3IEZhKCJNZXRyaWNzIFN0b3JlIENvbmZpZyIpLFlLPW5ldyBGYSgiTWV0cmljcyBJbml0aWFsIFNldHRpbmdzIENvbmZpZyIpLHFLPW5ldyBXZWFrTWFwO2NsYXNzIFpLe2NvbnN0cnVjdG9yKHQsbil7dGhpcy5yb290PXQsdGhpcy5idWZmZXI9bix0aGlzLmRlc3Ryb3llZFRhcmdldHM9bmV3IFNldH1pbml0aWFsaXplKHQpe3RoaXMuaW50ZXJzZWN0aW9uT2JzZXJ2ZXJ8fCh0aGlzLmludGVyc2VjdGlvbkNhbGxiYWNrPXQsdGhpcy5pbnRlcnNlY3Rpb25PYnNlcnZlcj1uZXcgSW50ZXJzZWN0aW9uT2JzZXJ2ZXIodGhpcy5vbkNhcmRJbnRlcnNlY3Rpb24uYmluZCh0aGlzKSx7dGhyZXNob2xkOjAscm9vdDp0aGlzLnJvb3Qscm9vdE1hcmdpbjp0aGlzLmJ1ZmZlcn0pKX1hZGQodCl7dGhpcy5lbnN1cmVJbml0aWFsaXplZCgpJiZ0aGlzLmludGVyc2VjdGlvbk9ic2VydmVyLm9ic2VydmUodCl9d2lsbERlc3Ryb3kodCl7dGhpcy5lbnN1cmVJbml0aWFsaXplZCgpJiZ0aGlzLmRlc3Ryb3llZFRhcmdldHMuYWRkKHQpfWVuc3VyZUluaXRpYWxpemVkKCl7aWYoIXRoaXMuaW50ZXJzZWN0aW9uT2JzZXJ2ZXIpdGhyb3cgbmV3IEVycm9yKCJDYXJkT2JzZXJ2ZXIgbXVzdCBiZSBpbml0aWFsaXplZCBiZWZvcmUgdXNlIik7cmV0dXJuITB9b25DYXJkSW50ZXJzZWN0aW9uKHQpe3Quc29ydCgoKHQsbik9PnQudGltZS1uLnRpbWUpKTtjb25zdCBuPW5ldyBTZXQsZT1uZXcgU2V0O2Zvcihjb25zdCBhIG9mIHQpe2NvbnN0IHQ9YS50YXJnZXQsbz1xSy5nZXQodCk7aWYoIW8pdGhyb3cgbmV3IEVycm9yKCJBIENhcmRPYnNlcnZlciBlbGVtZW50IG11c3QgYmUgYXNzb2NpYXRlZCB3aXRoIGEgQ2FyZElkIik7YS5pc0ludGVyc2VjdGluZz8obi5hZGQobyksZS5kZWxldGUobykpOihuLmRlbGV0ZShvKSxlLmFkZChvKSksdGhpcy5kZXN0cm95ZWRUYXJnZXRzLmhhcyh0KSYmIWEuaXNJbnRlcnNlY3RpbmcmJih0aGlzLmRlc3Ryb3llZFRhcmdldHMuZGVsZXRlKHQpLHRoaXMuaW50ZXJzZWN0aW9uT2JzZXJ2ZXIudW5vYnNlcnZlKHQpKX10aGlzLmludGVyc2VjdGlvbkNhbGxiYWNrKG4sZSl9b25DYXJkSW50ZXJzZWN0aW9uRm9yVGVzdCh0KXt0aGlzLm9uQ2FyZEludGVyc2VjdGlvbih0KX19Y2xhc3MgWEt7Y29uc3RydWN0b3IodCxuKXt0aGlzLmhvc3Q9dCx0aGlzLnN0b3JlPW59b25DYXJkSW50ZXJzZWN0aW9uKHQsbil7dGhpcy5zdG9yZS5kaXNwYXRjaCh5Syh7ZW50ZXJlZENhcmRzOnQsZXhpdGVkQ2FyZHM6bn0pKX1uZ09uSW5pdCgpe3FLLnNldCh0aGlzLmhvc3QubmF0aXZlRWxlbWVudCx0aGlzLmNhcmRJZCksdGhpcy5jYXJkT2JzZXJ2ZXJ8fCh0aGlzLmNhcmRPYnNlcnZlcj1uZXcgWkspLHRoaXMuY2FyZE9ic2VydmVyLmluaXRpYWxpemUodGhpcy5vbkNhcmRJbnRlcnNlY3Rpb24uYmluZCh0aGlzKSksdGhpcy5jYXJkT2JzZXJ2ZXIuYWRkKHRoaXMuaG9zdC5uYXRpdmVFbGVtZW50KX1uZ09uRGVzdHJveSgpe3RoaXMuY2FyZE9ic2VydmVyJiZ0aGlzLmNhcmRPYnNlcnZlci53aWxsRGVzdHJveSh0aGlzLmhvc3QubmF0aXZlRWxlbWVudCl9aG9zdEZvclRlc3QoKXtyZXR1cm4gdGhpcy5ob3N0fX1YSy7JtWZhYz1mdW5jdGlvbiB0KG4pe3JldHVybiBuZXcobnx8WEspKFpnKHh1KSxaZyhjdikpfSxYSy7JtWRpcj12byh7dHlwZTpYSyxzZWxlY3RvcnM6W1siIiwiY2FyZExhenlMb2FkZXIiLCIiXV0saW5wdXRzOntjYXJkSWQ6WyJjYXJkTGF6eUxvYWRlciIsImNhcmRJZCJdLGNhcmRPYnNlcnZlcjoiY2FyZE9ic2VydmVyIn19KTtjb25zdCBKSz0iL3NjYWxhcl9zdW1tYXJ5IjtmdW5jdGlvbiBRSyh0LG4pe2xldCBlPXQ7cmV0dXJuIG4mJnQuc3RhcnRzV2l0aChuKyIvIikmJihlPXQuc2xpY2Uobi5sZW5ndGgrMSkpLGUuZW5kc1dpdGgoSkspJiYoZT1lLnNsaWNlKDAsLUpLLmxlbmd0aCkpLGV8fHR9ZnVuY3Rpb24gS0sodCxuKXtsZXQgZT0wLGE9MDtmb3IoOzspe2lmKGU9PT10Lmxlbmd0aClyZXR1cm4gYT09PW4ubGVuZ3RoPzA6LTE7aWYoYT09PW4ubGVuZ3RoKXJldHVybiAxO2lmKHQkKHRbZV0pJiZ0JChuW2FdKSl7Y29uc3Qgbz1lLHI9YTtlPSRLKHQsZSsxKSxhPSRLKG4sYSsxKTtjb25zdCBpPU51bWJlcih0LnNsaWNlKG8sZSkpLGM9TnVtYmVyKG4uc2xpY2UocixhKSk7aWYoaTxjKXJldHVybi0xO2lmKGk+YylyZXR1cm4gMX1lbHNle2lmKG4kKHRbZV0pKXtpZighbiQoblthXSkpcmV0dXJuLTF9ZWxzZXtpZihuJChuW2FdKSlyZXR1cm4gMTtpZih0W2VdPG5bYV0pcmV0dXJuLTE7aWYodFtlXT5uW2FdKXJldHVybiAxfWUrKyxhKyt9fX1mdW5jdGlvbiAkSyh0LG4pe2xldCBlOyEoZnVuY3Rpb24odCl7dFt0Lk5BVFVSQUw9MF09Ik5BVFVSQUwiLHRbdC5SRUFMPTFdPSJSRUFMIix0W3QuRVhQT05FTlRfU0lHTj0yXT0iRVhQT05FTlRfU0lHTiIsdFt0LkVYUE9ORU5UPTNdPSJFWFBPTkVOVCJ9KShlfHwoZT17fSkpO2xldCBhPWUuTkFUVVJBTCxvPW47Zm9yKDtvPHQubGVuZ3RoO28rKylpZihhPT09ZS5OQVRVUkFMKXtpZigiLiI9PT10W29dKWE9ZS5SRUFMO2Vsc2UgaWYoImUiPT09dFtvXXx8IkUiPT09dFtvXSlhPWUuRVhQT05FTlRfU0lHTjtlbHNlIGlmKCF0JCh0W29dKSlicmVha31lbHNlIGlmKGE9PT1lLlJFQUwpe2lmKCJlIj09PXRbb118fCJFIj09PXRbb10pYT1lLkVYUE9ORU5UX1NJR047ZWxzZSBpZighdCQodFtvXSkpYnJlYWt9ZWxzZSBpZihhPT09ZS5FWFBPTkVOVF9TSUdOKXtpZighdCQodFtvXSkmJiIrIiE9PXRbb10mJiItIiE9PXRbb10pYnJlYWs7YT1lLkVYUE9ORU5UfWVsc2UgaWYoYT09PWUuRVhQT05FTlQmJiF0JCh0W29dKSlicmVhaztyZXR1cm4gb31mdW5jdGlvbiB0JCh0KXtyZXR1cm4iMCI8PXQmJnQ8PSI5In1mdW5jdGlvbiBuJCh0KXtyZXR1cm4iLyI9PT10fHx0JCh0KX1jb25zdCBlJD1bInBhbmVsIl07ZnVuY3Rpb24gYSQodCxuKXtpZigxJnQmJihLZygwLCJkaXYiLDAsMSksaHAoMiksJGcoKSksMiZ0KXtjb25zdCB0PWdwKCk7SmcoImlkIix0LmlkKSgibmdDbGFzcyIsdC5fY2xhc3NMaXN0KX19bGV0IG8kPTA7Y2xhc3MgciR7Y29uc3RydWN0b3IodCxuKXt0aGlzLnNvdXJjZT10LHRoaXMub3B0aW9uPW59fWNvbnN0IGkkPWFFKGNsYXNze30pLGMkPW5ldyBGYSgibWF0LWF1dG9jb21wbGV0ZS1kZWZhdWx0LW9wdGlvbnMiLHtwcm92aWRlZEluOiJyb290IixmYWN0b3J5OmZ1bmN0aW9uIHMkKCl7cmV0dXJue2F1dG9BY3RpdmVGaXJzdE9wdGlvbjohMX19fSk7Y2xhc3MgbCQgZXh0ZW5kcyBpJHtjb25zdHJ1Y3Rvcih0LG4sZSl7c3VwZXIoKSx0aGlzLl9jaGFuZ2VEZXRlY3RvclJlZj10LHRoaXMuX2VsZW1lbnRSZWY9bix0aGlzLl9hY3RpdmVPcHRpb25DaGFuZ2VzPXMuRU1QVFksdGhpcy5zaG93UGFuZWw9ITEsdGhpcy5faXNPcGVuPSExLHRoaXMuZGlzcGxheVdpdGg9bnVsbCx0aGlzLm9wdGlvblNlbGVjdGVkPW5ldyBFZix0aGlzLm9wZW5lZD1uZXcgRWYsdGhpcy5jbG9zZWQ9bmV3IEVmLHRoaXMub3B0aW9uQWN0aXZhdGVkPW5ldyBFZix0aGlzLl9jbGFzc0xpc3Q9e30sdGhpcy5pZD0ibWF0LWF1dG9jb21wbGV0ZS0iK28kKyssdGhpcy5fYXV0b0FjdGl2ZUZpcnN0T3B0aW9uPSEhZS5hdXRvQWN0aXZlRmlyc3RPcHRpb259Z2V0IGlzT3Blbigpe3JldHVybiB0aGlzLl9pc09wZW4mJnRoaXMuc2hvd1BhbmVsfWdldCBhdXRvQWN0aXZlRmlyc3RPcHRpb24oKXtyZXR1cm4gdGhpcy5fYXV0b0FjdGl2ZUZpcnN0T3B0aW9ufXNldCBhdXRvQWN0aXZlRmlyc3RPcHRpb24odCl7dGhpcy5fYXV0b0FjdGl2ZUZpcnN0T3B0aW9uPUd3KHQpfXNldCBjbGFzc0xpc3QodCl7dGhpcy5fY2xhc3NMaXN0PXQmJnQubGVuZ3RoP3Quc3BsaXQoIiAiKS5yZWR1Y2UoKCh0LG4pPT4odFtuLnRyaW0oKV09ITAsdCkpLHt9KTp7fSx0aGlzLl9zZXRWaXNpYmlsaXR5Q2xhc3Nlcyh0aGlzLl9jbGFzc0xpc3QpLHRoaXMuX2VsZW1lbnRSZWYubmF0aXZlRWxlbWVudC5jbGFzc05hbWU9IiJ9bmdBZnRlckNvbnRlbnRJbml0KCl7dGhpcy5fa2V5TWFuYWdlcj1uZXcgbFModGhpcy5vcHRpb25zKS53aXRoV3JhcCgpLHRoaXMuX2FjdGl2ZU9wdGlvbkNoYW5nZXM9dGhpcy5fa2V5TWFuYWdlci5jaGFuZ2Uuc3Vic2NyaWJlKCh0PT57dGhpcy5vcHRpb25BY3RpdmF0ZWQuZW1pdCh7c291cmNlOnRoaXMsb3B0aW9uOnRoaXMub3B0aW9ucy50b0FycmF5KClbdF18fG51bGx9KX0pKSx0aGlzLl9zZXRWaXNpYmlsaXR5KCl9bmdPbkRlc3Ryb3koKXt0aGlzLl9hY3RpdmVPcHRpb25DaGFuZ2VzLnVuc3Vic2NyaWJlKCl9X3NldFNjcm9sbFRvcCh0KXt0aGlzLnBhbmVsJiYodGhpcy5wYW5lbC5uYXRpdmVFbGVtZW50LnNjcm9sbFRvcD10KX1fZ2V0U2Nyb2xsVG9wKCl7cmV0dXJuIHRoaXMucGFuZWw/dGhpcy5wYW5lbC5uYXRpdmVFbGVtZW50LnNjcm9sbFRvcDowfV9zZXRWaXNpYmlsaXR5KCl7dGhpcy5zaG93UGFuZWw9ISF0aGlzLm9wdGlvbnMubGVuZ3RoLHRoaXMuX3NldFZpc2liaWxpdHlDbGFzc2VzKHRoaXMuX2NsYXNzTGlzdCksdGhpcy5fY2hhbmdlRGV0ZWN0b3JSZWYubWFya0ZvckNoZWNrKCl9X2VtaXRTZWxlY3RFdmVudCh0KXtjb25zdCBuPW5ldyByJCh0aGlzLHQpO3RoaXMub3B0aW9uU2VsZWN0ZWQuZW1pdChuKX1fc2V0VmlzaWJpbGl0eUNsYXNzZXModCl7dFt0aGlzLl92aXNpYmxlQ2xhc3NdPXRoaXMuc2hvd1BhbmVsLHRbdGhpcy5faGlkZGVuQ2xhc3NdPSF0aGlzLnNob3dQYW5lbH19bCQuybVmYWM9ZnVuY3Rpb24gdChuKXtyZXR1cm4gbmV3KG58fGwkKShaZyhWbSksWmcoeHUpLFpnKGMkKSl9LGwkLsm1ZGlyPXZvKHt0eXBlOmwkLHZpZXdRdWVyeTpmdW5jdGlvbiB0KG4sZSl7dmFyIGE7MSZuJiYoamYoSnUsITApLFVmKGUkLCEwKSksMiZuJiYoVmYoYT1aZigpKSYmKGUudGVtcGxhdGU9YS5maXJzdCksVmYoYT1aZigpKSYmKGUucGFuZWw9YS5maXJzdCkpfSxpbnB1dHM6e2Rpc3BsYXlXaXRoOiJkaXNwbGF5V2l0aCIsYXV0b0FjdGl2ZUZpcnN0T3B0aW9uOiJhdXRvQWN0aXZlRmlyc3RPcHRpb24iLGNsYXNzTGlzdDpbImNsYXNzIiwiY2xhc3NMaXN0Il0scGFuZWxXaWR0aDoicGFuZWxXaWR0aCJ9LG91dHB1dHM6e29wdGlvblNlbGVjdGVkOiJvcHRpb25TZWxlY3RlZCIsb3BlbmVkOiJvcGVuZWQiLGNsb3NlZDoiY2xvc2VkIixvcHRpb25BY3RpdmF0ZWQ6Im9wdGlvbkFjdGl2YXRlZCJ9LGZlYXR1cmVzOltoZ119KSxsJC5jdG9yUGFyYW1ldGVycz0oKT0+W3t0eXBlOlZtfSx7dHlwZTp4dX0se3R5cGU6dm9pZCAwLGRlY29yYXRvcnM6W3t0eXBlOkllLGFyZ3M6W2MkXX1dfV0sbCQucHJvcERlY29yYXRvcnM9e3RlbXBsYXRlOlt7dHlwZTpYZCxhcmdzOltKdSx7c3RhdGljOiEwfV19XSxwYW5lbDpbe3R5cGU6WGQsYXJnczpbInBhbmVsIl19XSxkaXNwbGF5V2l0aDpbe3R5cGU6Zl99XSxhdXRvQWN0aXZlRmlyc3RPcHRpb246W3t0eXBlOmZffV0scGFuZWxXaWR0aDpbe3R5cGU6Zl99XSxvcHRpb25TZWxlY3RlZDpbe3R5cGU6aF99XSxvcGVuZWQ6W3t0eXBlOmhffV0sY2xvc2VkOlt7dHlwZTpoX31dLG9wdGlvbkFjdGl2YXRlZDpbe3R5cGU6aF99XSxjbGFzc0xpc3Q6W3t0eXBlOmZfLGFyZ3M6WyJjbGFzcyJdfV19O2NsYXNzIG0kIGV4dGVuZHMgbCR7Y29uc3RydWN0b3IoKXtzdXBlciguLi5hcmd1bWVudHMpLHRoaXMuX3Zpc2libGVDbGFzcz0ibWF0LWF1dG9jb21wbGV0ZS12aXNpYmxlIix0aGlzLl9oaWRkZW5DbGFzcz0ibWF0LWF1dG9jb21wbGV0ZS1oaWRkZW4ifX1tJC7JtWZhYz1mdW5jdGlvbiB0KG4pe3JldHVybiBkJChufHxtJCl9LG0kLsm1Y21wPV9vKHt0eXBlOm0kLHNlbGVjdG9yczpbWyJtYXQtYXV0b2NvbXBsZXRlIl1dLGNvbnRlbnRRdWVyaWVzOmZ1bmN0aW9uIHQobixlLGEpe3ZhciBvOzEmbiYmKEdmKGEsSEUsITApLEdmKGEsWUUsITApKSwyJm4mJihWZihvPVpmKCkpJiYoZS5vcHRpb25Hcm91cHM9byksVmYobz1aZigpKSYmKGUub3B0aW9ucz1vKSl9LGhvc3RBdHRyczpbMSwibWF0LWF1dG9jb21wbGV0ZSJdLGlucHV0czp7ZGlzYWJsZVJpcHBsZToiZGlzYWJsZVJpcHBsZSJ9LGV4cG9ydEFzOlsibWF0QXV0b2NvbXBsZXRlIl0sZmVhdHVyZXM6W011KFt7cHJvdmlkZTpXRSx1c2VFeGlzdGluZzptJH1dKSxoZ10sbmdDb250ZW50U2VsZWN0b3JzOlsiKiJdLGRlY2xzOjEsdmFyczowLGNvbnN0czpbWyJyb2xlIiwibGlzdGJveCIsMSwibWF0LWF1dG9jb21wbGV0ZS1wYW5lbCIsMywiaWQiLCJuZ0NsYXNzIl0sWyJwYW5lbCIsIiJdXSx0ZW1wbGF0ZTpmdW5jdGlvbiB0KG4sZSl7MSZuJiYoYnAoKSxZZygwLGEkLDMsMiwibmctdGVtcGxhdGUiKSl9LGRpcmVjdGl2ZXM6W0hNXSxzdHlsZXM6WyIubWF0LWF1dG9jb21wbGV0ZS1wYW5lbHttaW4td2lkdGg6MTEycHg7bWF4LXdpZHRoOjI4MHB4O292ZXJmbG93OmF1dG87LXdlYmtpdC1vdmVyZmxvdy1zY3JvbGxpbmc6dG91Y2g7dmlzaWJpbGl0eTpoaWRkZW47bWF4LXdpZHRoOm5vbmU7bWF4LWhlaWdodDoyNTZweDtwb3NpdGlvbjpyZWxhdGl2ZTt3aWR0aDoxMDAlO2JvcmRlci1ib3R0b20tbGVmdC1yYWRpdXM6NHB4O2JvcmRlci1ib3R0b20tcmlnaHQtcmFkaXVzOjRweH0ubWF0LWF1dG9jb21wbGV0ZS1wYW5lbC5tYXQtYXV0b2NvbXBsZXRlLXZpc2libGV7dmlzaWJpbGl0eTp2aXNpYmxlfS5tYXQtYXV0b2NvbXBsZXRlLXBhbmVsLm1hdC1hdXRvY29tcGxldGUtaGlkZGVue3Zpc2liaWxpdHk6aGlkZGVufS5tYXQtYXV0b2NvbXBsZXRlLXBhbmVsLWFib3ZlIC5tYXQtYXV0b2NvbXBsZXRlLXBhbmVse2JvcmRlci1yYWRpdXM6MDtib3JkZXItdG9wLWxlZnQtcmFkaXVzOjRweDtib3JkZXItdG9wLXJpZ2h0LXJhZGl1czo0cHh9Lm1hdC1hdXRvY29tcGxldGUtcGFuZWwgLm1hdC1kaXZpZGVyLWhvcml6b250YWx7bWFyZ2luLXRvcDotMXB4fS5jZGstaGlnaC1jb250cmFzdC1hY3RpdmUgLm1hdC1hdXRvY29tcGxldGUtcGFuZWx7b3V0bGluZTpzb2xpZCAxcHh9XG4iXSxlbmNhcHN1bGF0aW9uOjIsY2hhbmdlRGV0ZWN0aW9uOjB9KSxtJC5wcm9wRGVjb3JhdG9ycz17b3B0aW9uR3JvdXBzOlt7dHlwZTpxZCxhcmdzOltIRSx7ZGVzY2VuZGFudHM6ITB9XX1dLG9wdGlvbnM6W3t0eXBlOnFkLGFyZ3M6W1lFLHtkZXNjZW5kYW50czohMH1dfV19O2NvbnN0IGQkPXRjKG0kKTsKLyoqCiAgICAgKiBAbGljZW5zZQogICAgICogQ29weXJpZ2h0IEdvb2dsZSBMTEMgQWxsIFJpZ2h0cyBSZXNlcnZlZC4KICAgICAqCiAgICAgKiBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhbiBNSVQtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQogICAgICogZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZSBhdCBodHRwczovL2FuZ3VsYXIuaW8vbGljZW5zZQogICAgICovY2xhc3MgZyR7Y29uc3RydWN0b3IodCl7dGhpcy5lbGVtZW50UmVmPXR9fWckLsm1ZmFjPWZ1bmN0aW9uIHQobil7cmV0dXJuIG5ldyhufHxnJCkoWmcoeHUpKX0sZyQuybVkaXI9dm8oe3R5cGU6ZyR9KSxnJC5jdG9yUGFyYW1ldGVycz0oKT0+W3t0eXBlOnh1fV07Y2xhc3MgcCQgZXh0ZW5kcyBnJHt9cCQuybVmYWM9ZnVuY3Rpb24gdChuKXtyZXR1cm4gYiQobnx8cCQpfSxwJC7JtWRpcj12byh7dHlwZTpwJCxzZWxlY3RvcnM6W1siIiwibWF0QXV0b2NvbXBsZXRlT3JpZ2luIiwiIl1dLGV4cG9ydEFzOlsibWF0QXV0b2NvbXBsZXRlT3JpZ2luIl0sZmVhdHVyZXM6W2hnXX0pO2NvbnN0IGIkPXRjKHAkKSx1JD1uZXcgRmEoIm1hdC1hdXRvY29tcGxldGUtc2Nyb2xsLXN0cmF0ZWd5IiksZiQ9e3Byb3ZpZGU6dSQsZGVwczpbaHpdLHVzZUZhY3Rvcnk6ZnVuY3Rpb24gaCQodCl7cmV0dXJuKCk9PnQuc2Nyb2xsU3RyYXRlZ2llcy5yZXBvc2l0aW9uKCl9fSxfJD17cHJvdmlkZTpNRix1c2VFeGlzdGluZzphYSgoKCk9Pk0kKSksbXVsdGk6ITB9O2NsYXNzIEMke2NvbnN0cnVjdG9yKHQsbixlLGEsbyxyLGksYyxsLG0pe3RoaXMuX2VsZW1lbnQ9dCx0aGlzLl9vdmVybGF5PW4sdGhpcy5fdmlld0NvbnRhaW5lclJlZj1lLHRoaXMuX3pvbmU9YSx0aGlzLl9jaGFuZ2VEZXRlY3RvclJlZj1vLHRoaXMuX2Rpcj1pLHRoaXMuX2Zvcm1GaWVsZD1jLHRoaXMuX2RvY3VtZW50PWwsdGhpcy5fdmlld3BvcnRSdWxlcj1tLHRoaXMuX2NvbXBvbmVudERlc3Ryb3llZD0hMSx0aGlzLl9hdXRvY29tcGxldGVEaXNhYmxlZD0hMSx0aGlzLl9tYW51YWxseUZsb2F0aW5nTGFiZWw9ITEsdGhpcy5fdmlld3BvcnRTdWJzY3JpcHRpb249cy5FTVBUWSx0aGlzLl9jYW5PcGVuT25OZXh0Rm9jdXM9ITAsdGhpcy5fY2xvc2VLZXlFdmVudFN0cmVhbT1uZXcgeCx0aGlzLl93aW5kb3dCbHVySGFuZGxlcj0oKT0+e3RoaXMuX2Nhbk9wZW5Pbk5leHRGb2N1cz10aGlzLl9kb2N1bWVudC5hY3RpdmVFbGVtZW50IT09dGhpcy5fZWxlbWVudC5uYXRpdmVFbGVtZW50fHx0aGlzLnBhbmVsT3Blbn0sdGhpcy5fb25DaGFuZ2U9KCk9Pnt9LHRoaXMuX29uVG91Y2hlZD0oKT0+e30sdGhpcy5wb3NpdGlvbj0iYXV0byIsdGhpcy5hdXRvY29tcGxldGVBdHRyaWJ1dGU9Im9mZiIsdGhpcy5fb3ZlcmxheUF0dGFjaGVkPSExLHRoaXMub3B0aW9uU2VsZWN0aW9ucz1MdCgoKCk9PnRoaXMuYXV0b2NvbXBsZXRlJiZ0aGlzLmF1dG9jb21wbGV0ZS5vcHRpb25zP1d0KC4uLnRoaXMuYXV0b2NvbXBsZXRlLm9wdGlvbnMubWFwKCh0PT50Lm9uU2VsZWN0aW9uQ2hhbmdlKSkpOnRoaXMuX3pvbmUub25TdGFibGUucGlwZShUbigxKSxzZSgoKCk9PnRoaXMub3B0aW9uU2VsZWN0aW9ucykpKSkpLHRoaXMuX3Njcm9sbFN0cmF0ZWd5PXJ9Z2V0IGF1dG9jb21wbGV0ZURpc2FibGVkKCl7cmV0dXJuIHRoaXMuX2F1dG9jb21wbGV0ZURpc2FibGVkfXNldCBhdXRvY29tcGxldGVEaXNhYmxlZCh0KXt0aGlzLl9hdXRvY29tcGxldGVEaXNhYmxlZD1Hdyh0KX1uZ0FmdGVyVmlld0luaXQoKXtjb25zdCB0PXRoaXMuX2dldFdpbmRvdygpO3ZvaWQgMCE9PXQmJnRoaXMuX3pvbmUucnVuT3V0c2lkZUFuZ3VsYXIoKCgpPT50LmFkZEV2ZW50TGlzdGVuZXIoImJsdXIiLHRoaXMuX3dpbmRvd0JsdXJIYW5kbGVyKSkpfW5nT25DaGFuZ2VzKHQpe3QucG9zaXRpb24mJnRoaXMuX3Bvc2l0aW9uU3RyYXRlZ3kmJih0aGlzLl9zZXRTdHJhdGVneVBvc2l0aW9ucyh0aGlzLl9wb3NpdGlvblN0cmF0ZWd5KSx0aGlzLnBhbmVsT3BlbiYmdGhpcy5fb3ZlcmxheVJlZi51cGRhdGVQb3NpdGlvbigpKX1uZ09uRGVzdHJveSgpe2NvbnN0IHQ9dGhpcy5fZ2V0V2luZG93KCk7dm9pZCAwIT09dCYmdC5yZW1vdmVFdmVudExpc3RlbmVyKCJibHVyIix0aGlzLl93aW5kb3dCbHVySGFuZGxlciksdGhpcy5fdmlld3BvcnRTdWJzY3JpcHRpb24udW5zdWJzY3JpYmUoKSx0aGlzLl9jb21wb25lbnREZXN0cm95ZWQ9ITAsdGhpcy5fZGVzdHJveVBhbmVsKCksdGhpcy5fY2xvc2VLZXlFdmVudFN0cmVhbS5jb21wbGV0ZSgpfWdldCBwYW5lbE9wZW4oKXtyZXR1cm4gdGhpcy5fb3ZlcmxheUF0dGFjaGVkJiZ0aGlzLmF1dG9jb21wbGV0ZS5zaG93UGFuZWx9b3BlblBhbmVsKCl7dGhpcy5fYXR0YWNoT3ZlcmxheSgpLHRoaXMuX2Zsb2F0TGFiZWwoKX1jbG9zZVBhbmVsKCl7dGhpcy5fcmVzZXRMYWJlbCgpLHRoaXMuX292ZXJsYXlBdHRhY2hlZCYmKHRoaXMucGFuZWxPcGVuJiZ0aGlzLmF1dG9jb21wbGV0ZS5jbG9zZWQuZW1pdCgpLHRoaXMuYXV0b2NvbXBsZXRlLl9pc09wZW49dGhpcy5fb3ZlcmxheUF0dGFjaGVkPSExLHRoaXMuX292ZXJsYXlSZWYmJnRoaXMuX292ZXJsYXlSZWYuaGFzQXR0YWNoZWQoKSYmKHRoaXMuX292ZXJsYXlSZWYuZGV0YWNoKCksdGhpcy5fY2xvc2luZ0FjdGlvbnNTdWJzY3JpcHRpb24udW5zdWJzY3JpYmUoKSksdGhpcy5fY29tcG9uZW50RGVzdHJveWVkfHx0aGlzLl9jaGFuZ2VEZXRlY3RvclJlZi5kZXRlY3RDaGFuZ2VzKCkpfXVwZGF0ZVBvc2l0aW9uKCl7dGhpcy5fb3ZlcmxheUF0dGFjaGVkJiZ0aGlzLl9vdmVybGF5UmVmLnVwZGF0ZVBvc2l0aW9uKCl9Z2V0IHBhbmVsQ2xvc2luZ0FjdGlvbnMoKXtyZXR1cm4gV3QodGhpcy5vcHRpb25TZWxlY3Rpb25zLHRoaXMuYXV0b2NvbXBsZXRlLl9rZXlNYW5hZ2VyLnRhYk91dC5waXBlKEd0KCgoKT0+dGhpcy5fb3ZlcmxheUF0dGFjaGVkKSkpLHRoaXMuX2Nsb3NlS2V5RXZlbnRTdHJlYW0sdGhpcy5fZ2V0T3V0c2lkZUNsaWNrU3RyZWFtKCksdGhpcy5fb3ZlcmxheVJlZj90aGlzLl9vdmVybGF5UmVmLmRldGFjaG1lbnRzKCkucGlwZShHdCgoKCk9PnRoaXMuX292ZXJsYXlBdHRhY2hlZCkpKTpaKCkpLnBpcGUoZnQoKHQ9PnQgaW5zdGFuY2VvZiBVRT90Om51bGwpKSl9Z2V0IGFjdGl2ZU9wdGlvbigpe3JldHVybiB0aGlzLmF1dG9jb21wbGV0ZSYmdGhpcy5hdXRvY29tcGxldGUuX2tleU1hbmFnZXI/dGhpcy5hdXRvY29tcGxldGUuX2tleU1hbmFnZXIuYWN0aXZlSXRlbTpudWxsfV9nZXRPdXRzaWRlQ2xpY2tTdHJlYW0oKXtyZXR1cm4gV3QoVnQodGhpcy5fZG9jdW1lbnQsImNsaWNrIiksVnQodGhpcy5fZG9jdW1lbnQsInRvdWNoZW5kIikpLnBpcGUoR3QoKHQ9Pntjb25zdCBuPXRoaXMuX2lzSW5zaWRlU2hhZG93Um9vdCYmdC5jb21wb3NlZFBhdGg/dC5jb21wb3NlZFBhdGgoKVswXTp0LnRhcmdldCxlPXRoaXMuX2Zvcm1GaWVsZD90aGlzLl9mb3JtRmllbGQuX2VsZW1lbnRSZWYubmF0aXZlRWxlbWVudDpudWxsLGE9dGhpcy5jb25uZWN0ZWRUbz90aGlzLmNvbm5lY3RlZFRvLmVsZW1lbnRSZWYubmF0aXZlRWxlbWVudDpudWxsO3JldHVybiB0aGlzLl9vdmVybGF5QXR0YWNoZWQmJm4hPT10aGlzLl9lbGVtZW50Lm5hdGl2ZUVsZW1lbnQmJighZXx8IWUuY29udGFpbnMobikpJiYoIWF8fCFhLmNvbnRhaW5zKG4pKSYmISF0aGlzLl9vdmVybGF5UmVmJiYhdGhpcy5fb3ZlcmxheVJlZi5vdmVybGF5RWxlbWVudC5jb250YWlucyhuKX0pKSl9d3JpdGVWYWx1ZSh0KXtQcm9taXNlLnJlc29sdmUobnVsbCkudGhlbigoKCk9PnRoaXMuX3NldFRyaWdnZXJWYWx1ZSh0KSkpfXJlZ2lzdGVyT25DaGFuZ2UodCl7dGhpcy5fb25DaGFuZ2U9dH1yZWdpc3Rlck9uVG91Y2hlZCh0KXt0aGlzLl9vblRvdWNoZWQ9dH1zZXREaXNhYmxlZFN0YXRlKHQpe3RoaXMuX2VsZW1lbnQubmF0aXZlRWxlbWVudC5kaXNhYmxlZD10fV9oYW5kbGVLZXlkb3duKHQpe2NvbnN0IG49dC5rZXlDb2RlO2lmKG4hPT1Cd3x8V3codCl8fHQucHJldmVudERlZmF1bHQoKSx0aGlzLmFjdGl2ZU9wdGlvbiYmbj09PUh3JiZ0aGlzLnBhbmVsT3Blbil0aGlzLmFjdGl2ZU9wdGlvbi5fc2VsZWN0VmlhSW50ZXJhY3Rpb24oKSx0aGlzLl9yZXNldEFjdGl2ZUl0ZW0oKSx0LnByZXZlbnREZWZhdWx0KCk7ZWxzZSBpZih0aGlzLmF1dG9jb21wbGV0ZSl7Y29uc3QgZT10aGlzLmF1dG9jb21wbGV0ZS5fa2V5TWFuYWdlci5hY3RpdmVJdGVtLGE9bj09PWp3fHxuPT09VXc7dGhpcy5wYW5lbE9wZW58fDk9PT1uP3RoaXMuYXV0b2NvbXBsZXRlLl9rZXlNYW5hZ2VyLm9uS2V5ZG93bih0KTphJiZ0aGlzLl9jYW5PcGVuKCkmJnRoaXMub3BlblBhbmVsKCksKGF8fHRoaXMuYXV0b2NvbXBsZXRlLl9rZXlNYW5hZ2VyLmFjdGl2ZUl0ZW0hPT1lKSYmdGhpcy5fc2Nyb2xsVG9PcHRpb24odGhpcy5hdXRvY29tcGxldGUuX2tleU1hbmFnZXIuYWN0aXZlSXRlbUluZGV4fHwwKX19X2hhbmRsZUlucHV0KHQpe2xldCBuPXQudGFyZ2V0LGU9bi52YWx1ZTsibnVtYmVyIj09PW4udHlwZSYmKGU9IiI9PWU/bnVsbDpwYXJzZUZsb2F0KGUpKSx0aGlzLl9wcmV2aW91c1ZhbHVlIT09ZSYmKHRoaXMuX3ByZXZpb3VzVmFsdWU9ZSx0aGlzLl9vbkNoYW5nZShlKSx0aGlzLl9jYW5PcGVuKCkmJnRoaXMuX2RvY3VtZW50LmFjdGl2ZUVsZW1lbnQ9PT10LnRhcmdldCYmdGhpcy5vcGVuUGFuZWwoKSl9X2hhbmRsZUZvY3VzKCl7dGhpcy5fY2FuT3Blbk9uTmV4dEZvY3VzP3RoaXMuX2Nhbk9wZW4oKSYmKHRoaXMuX3ByZXZpb3VzVmFsdWU9dGhpcy5fZWxlbWVudC5uYXRpdmVFbGVtZW50LnZhbHVlLHRoaXMuX2F0dGFjaE92ZXJsYXkoKSx0aGlzLl9mbG9hdExhYmVsKCEwKSk6dGhpcy5fY2FuT3Blbk9uTmV4dEZvY3VzPSEwfV9mbG9hdExhYmVsKHQ9ITEpe3RoaXMuX2Zvcm1GaWVsZCYmImF1dG8iPT09dGhpcy5fZm9ybUZpZWxkLmZsb2F0TGFiZWwmJih0P3RoaXMuX2Zvcm1GaWVsZC5fYW5pbWF0ZUFuZExvY2tMYWJlbCgpOnRoaXMuX2Zvcm1GaWVsZC5mbG9hdExhYmVsPSJhbHdheXMiLHRoaXMuX21hbnVhbGx5RmxvYXRpbmdMYWJlbD0hMCl9X3Jlc2V0TGFiZWwoKXt0aGlzLl9tYW51YWxseUZsb2F0aW5nTGFiZWwmJih0aGlzLl9mb3JtRmllbGQuZmxvYXRMYWJlbD0iYXV0byIsdGhpcy5fbWFudWFsbHlGbG9hdGluZ0xhYmVsPSExKX1fc3Vic2NyaWJlVG9DbG9zaW5nQWN0aW9ucygpe3JldHVybiBXdCh0aGlzLl96b25lLm9uU3RhYmxlLnBpcGUoVG4oMSkpLHRoaXMuYXV0b2NvbXBsZXRlLm9wdGlvbnMuY2hhbmdlcy5waXBlKGhlKCgoKT0+dGhpcy5fcG9zaXRpb25TdHJhdGVneS5yZWFwcGx5TGFzdFBvc2l0aW9uKCkpKSxmbigwKSkpLnBpcGUoc2UoKCgpPT57Y29uc3QgdD10aGlzLnBhbmVsT3BlbjtyZXR1cm4gdGhpcy5fcmVzZXRBY3RpdmVJdGVtKCksdGhpcy5hdXRvY29tcGxldGUuX3NldFZpc2liaWxpdHkoKSx0aGlzLnBhbmVsT3BlbiYmKHRoaXMuX292ZXJsYXlSZWYudXBkYXRlUG9zaXRpb24oKSx0IT09dGhpcy5wYW5lbE9wZW4mJnRoaXMuYXV0b2NvbXBsZXRlLm9wZW5lZC5lbWl0KCkpLHRoaXMucGFuZWxDbG9zaW5nQWN0aW9uc30pKSxUbigxKSkuc3Vic2NyaWJlKCh0PT50aGlzLl9zZXRWYWx1ZUFuZENsb3NlKHQpKSl9X2Rlc3Ryb3lQYW5lbCgpe3RoaXMuX292ZXJsYXlSZWYmJih0aGlzLmNsb3NlUGFuZWwoKSx0aGlzLl9vdmVybGF5UmVmLmRpc3Bvc2UoKSx0aGlzLl9vdmVybGF5UmVmPW51bGwpfV9zZXRUcmlnZ2VyVmFsdWUodCl7Y29uc3Qgbj10aGlzLmF1dG9jb21wbGV0ZSYmdGhpcy5hdXRvY29tcGxldGUuZGlzcGxheVdpdGg/dGhpcy5hdXRvY29tcGxldGUuZGlzcGxheVdpdGgodCk6dCxlPW51bGwhPW4/bjoiIjt0aGlzLl9mb3JtRmllbGQ/dGhpcy5fZm9ybUZpZWxkLl9jb250cm9sLnZhbHVlPWU6dGhpcy5fZWxlbWVudC5uYXRpdmVFbGVtZW50LnZhbHVlPWUsdGhpcy5fcHJldmlvdXNWYWx1ZT1lfV9zZXRWYWx1ZUFuZENsb3NlKHQpe3QmJnQuc291cmNlJiYodGhpcy5fY2xlYXJQcmV2aW91c1NlbGVjdGVkT3B0aW9uKHQuc291cmNlKSx0aGlzLl9zZXRUcmlnZ2VyVmFsdWUodC5zb3VyY2UudmFsdWUpLHRoaXMuX29uQ2hhbmdlKHQuc291cmNlLnZhbHVlKSx0aGlzLl9lbGVtZW50Lm5hdGl2ZUVsZW1lbnQuZm9jdXMoKSx0aGlzLmF1dG9jb21wbGV0ZS5fZW1pdFNlbGVjdEV2ZW50KHQuc291cmNlKSksdGhpcy5jbG9zZVBhbmVsKCl9X2NsZWFyUHJldmlvdXNTZWxlY3RlZE9wdGlvbih0KXt0aGlzLmF1dG9jb21wbGV0ZS5vcHRpb25zLmZvckVhY2goKG49PntuIT09dCYmbi5zZWxlY3RlZCYmbi5kZXNlbGVjdCgpfSkpfV9hdHRhY2hPdmVybGF5KCl7aWYoIXRoaXMuYXV0b2NvbXBsZXRlJiYoInVuZGVmaW5lZCI9PXR5cGVvZiBuZ0Rldk1vZGV8fG5nRGV2TW9kZSkpdGhyb3coZnVuY3Rpb24gdCgpe3JldHVybiBFcnJvcigiQXR0ZW1wdGluZyB0byBvcGVuIGFuIHVuZGVmaW5lZCBpbnN0YW5jZSBvZiBgbWF0LWF1dG9jb21wbGV0ZWAuIE1ha2Ugc3VyZSB0aGF0IHRoZSBpZCBwYXNzZWQgdG8gdGhlIGBtYXRBdXRvY29tcGxldGVgIGlzIGNvcnJlY3QgYW5kIHRoYXQgeW91J3JlIGF0dGVtcHRpbmcgdG8gb3BlbiBpdCBhZnRlciB0aGUgbmdBZnRlckNvbnRlbnRJbml0IGhvb2suIil9KSgpO251bGw9PXRoaXMuX2lzSW5zaWRlU2hhZG93Um9vdCYmKHRoaXMuX2lzSW5zaWRlU2hhZG93Um9vdD0hIUx3KHRoaXMuX2VsZW1lbnQubmF0aXZlRWxlbWVudCkpO2xldCBuPXRoaXMuX292ZXJsYXlSZWY7bj8odGhpcy5fcG9zaXRpb25TdHJhdGVneS5zZXRPcmlnaW4odGhpcy5fZ2V0Q29ubmVjdGVkRWxlbWVudCgpKSxuLnVwZGF0ZVNpemUoe3dpZHRoOnRoaXMuX2dldFBhbmVsV2lkdGgoKX0pKToodGhpcy5fcG9ydGFsPW5ldyBBQSh0aGlzLmF1dG9jb21wbGV0ZS50ZW1wbGF0ZSx0aGlzLl92aWV3Q29udGFpbmVyUmVmKSxuPXRoaXMuX292ZXJsYXkuY3JlYXRlKHRoaXMuX2dldE92ZXJsYXlDb25maWcoKSksdGhpcy5fb3ZlcmxheVJlZj1uLG4ua2V5ZG93bkV2ZW50cygpLnN1YnNjcmliZSgodD0+eyh0LmtleUNvZGU9PT1CdyYmIVd3KHQpfHx0LmtleUNvZGU9PT1qdyYmV3codCwiYWx0S2V5IikpJiYodGhpcy5fcmVzZXRBY3RpdmVJdGVtKCksdGhpcy5fY2xvc2VLZXlFdmVudFN0cmVhbS5uZXh0KCksdC5zdG9wUHJvcGFnYXRpb24oKSx0LnByZXZlbnREZWZhdWx0KCkpfSkpLHRoaXMuX3ZpZXdwb3J0U3Vic2NyaXB0aW9uPXRoaXMuX3ZpZXdwb3J0UnVsZXIuY2hhbmdlKCkuc3Vic2NyaWJlKCgoKT0+e3RoaXMucGFuZWxPcGVuJiZuJiZuLnVwZGF0ZVNpemUoe3dpZHRoOnRoaXMuX2dldFBhbmVsV2lkdGgoKX0pfSkpKSxuJiYhbi5oYXNBdHRhY2hlZCgpJiYobi5hdHRhY2godGhpcy5fcG9ydGFsKSx0aGlzLl9jbG9zaW5nQWN0aW9uc1N1YnNjcmlwdGlvbj10aGlzLl9zdWJzY3JpYmVUb0Nsb3NpbmdBY3Rpb25zKCkpO2NvbnN0IGU9dGhpcy5wYW5lbE9wZW47dGhpcy5hdXRvY29tcGxldGUuX3NldFZpc2liaWxpdHkoKSx0aGlzLmF1dG9jb21wbGV0ZS5faXNPcGVuPXRoaXMuX292ZXJsYXlBdHRhY2hlZD0hMCx0aGlzLnBhbmVsT3BlbiYmZSE9PXRoaXMucGFuZWxPcGVuJiZ0aGlzLmF1dG9jb21wbGV0ZS5vcGVuZWQuZW1pdCgpfV9nZXRPdmVybGF5Q29uZmlnKCl7cmV0dXJuIG5ldyBYQSh7cG9zaXRpb25TdHJhdGVneTp0aGlzLl9nZXRPdmVybGF5UG9zaXRpb24oKSxzY3JvbGxTdHJhdGVneTp0aGlzLl9zY3JvbGxTdHJhdGVneSgpLHdpZHRoOnRoaXMuX2dldFBhbmVsV2lkdGgoKSxkaXJlY3Rpb246dGhpcy5fZGlyfSl9X2dldE92ZXJsYXlQb3NpdGlvbigpe2NvbnN0IHQ9dGhpcy5fb3ZlcmxheS5wb3NpdGlvbigpLmZsZXhpYmxlQ29ubmVjdGVkVG8odGhpcy5fZ2V0Q29ubmVjdGVkRWxlbWVudCgpKS53aXRoRmxleGlibGVEaW1lbnNpb25zKCExKS53aXRoUHVzaCghMSk7cmV0dXJuIHRoaXMuX3NldFN0cmF0ZWd5UG9zaXRpb25zKHQpLHRoaXMuX3Bvc2l0aW9uU3RyYXRlZ3k9dCx0fV9zZXRTdHJhdGVneVBvc2l0aW9ucyh0KXtjb25zdCBuPVt7b3JpZ2luWDoic3RhcnQiLG9yaWdpblk6ImJvdHRvbSIsb3ZlcmxheVg6InN0YXJ0IixvdmVybGF5WToidG9wIn0se29yaWdpblg6ImVuZCIsb3JpZ2luWToiYm90dG9tIixvdmVybGF5WDoiZW5kIixvdmVybGF5WToidG9wIn1dLGU9dGhpcy5fYWJvdmVDbGFzcyxhPVt7b3JpZ2luWDoic3RhcnQiLG9yaWdpblk6InRvcCIsb3ZlcmxheVg6InN0YXJ0IixvdmVybGF5WToiYm90dG9tIixwYW5lbENsYXNzOmV9LHtvcmlnaW5YOiJlbmQiLG9yaWdpblk6InRvcCIsb3ZlcmxheVg6ImVuZCIsb3ZlcmxheVk6ImJvdHRvbSIscGFuZWxDbGFzczplfV07bGV0IG87bz0iYWJvdmUiPT09dGhpcy5wb3NpdGlvbj9hOiJiZWxvdyI9PT10aGlzLnBvc2l0aW9uP246Wy4uLm4sLi4uYV0sdC53aXRoUG9zaXRpb25zKG8pfV9nZXRDb25uZWN0ZWRFbGVtZW50KCl7cmV0dXJuIHRoaXMuY29ubmVjdGVkVG8/dGhpcy5jb25uZWN0ZWRUby5lbGVtZW50UmVmOnRoaXMuX2Zvcm1GaWVsZD90aGlzLl9mb3JtRmllbGQuZ2V0Q29ubmVjdGVkT3ZlcmxheU9yaWdpbigpOnRoaXMuX2VsZW1lbnR9X2dldFBhbmVsV2lkdGgoKXtyZXR1cm4gdGhpcy5hdXRvY29tcGxldGUucGFuZWxXaWR0aHx8dGhpcy5fZ2V0SG9zdFdpZHRoKCl9X2dldEhvc3RXaWR0aCgpe3JldHVybiB0aGlzLl9nZXRDb25uZWN0ZWRFbGVtZW50KCkubmF0aXZlRWxlbWVudC5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKS53aWR0aH1fcmVzZXRBY3RpdmVJdGVtKCl7dGhpcy5hdXRvY29tcGxldGUuX2tleU1hbmFnZXIuc2V0QWN0aXZlSXRlbSh0aGlzLmF1dG9jb21wbGV0ZS5hdXRvQWN0aXZlRmlyc3RPcHRpb24/MDotMSl9X2Nhbk9wZW4oKXtjb25zdCB0PXRoaXMuX2VsZW1lbnQubmF0aXZlRWxlbWVudDtyZXR1cm4hdC5yZWFkT25seSYmIXQuZGlzYWJsZWQmJiF0aGlzLl9hdXRvY29tcGxldGVEaXNhYmxlZH1fZ2V0V2luZG93KCl7dmFyIHQ7cmV0dXJuKG51bGw9PT0odD10aGlzLl9kb2N1bWVudCl8fHZvaWQgMD09PXQ/dm9pZCAwOnQuZGVmYXVsdFZpZXcpfHx3aW5kb3d9X3Njcm9sbFRvT3B0aW9uKHQpe2NvbnN0IG49dGhpcy5hdXRvY29tcGxldGUsZT1xRSh0LG4ub3B0aW9ucyxuLm9wdGlvbkdyb3Vwcyk7aWYoMD09PXQmJjE9PT1lKW4uX3NldFNjcm9sbFRvcCgwKTtlbHNle2NvbnN0IGU9bi5vcHRpb25zLnRvQXJyYXkoKVt0XTtpZihlKXtjb25zdCB0PWUuX2dldEhvc3RFbGVtZW50KCksYT1aRSh0Lm9mZnNldFRvcCx0Lm9mZnNldEhlaWdodCxuLl9nZXRTY3JvbGxUb3AoKSxuLnBhbmVsLm5hdGl2ZUVsZW1lbnQub2Zmc2V0SGVpZ2h0KTtuLl9zZXRTY3JvbGxUb3AoYSl9fX19QyQuybVmYWM9ZnVuY3Rpb24gdChuKXtyZXR1cm4gbmV3KG58fEMkKShaZyh4dSksWmcoaHopLFpnKCR1KSxaZyhKXyksWmcoVm0pLFpnKHUkKSxaZyhVUyw4KSxaZyhoRiw5KSxaZyh6Qyw4KSxaZyhNQSkpfSxDJC7JtWRpcj12byh7dHlwZTpDJCxpbnB1dHM6e3Bvc2l0aW9uOlsibWF0QXV0b2NvbXBsZXRlUG9zaXRpb24iLCJwb3NpdGlvbiJdLGF1dG9jb21wbGV0ZUF0dHJpYnV0ZTpbImF1dG9jb21wbGV0ZSIsImF1dG9jb21wbGV0ZUF0dHJpYnV0ZSJdLGF1dG9jb21wbGV0ZURpc2FibGVkOlsibWF0QXV0b2NvbXBsZXRlRGlzYWJsZWQiLCJhdXRvY29tcGxldGVEaXNhYmxlZCJdLGF1dG9jb21wbGV0ZTpbIm1hdEF1dG9jb21wbGV0ZSIsImF1dG9jb21wbGV0ZSJdLGNvbm5lY3RlZFRvOlsibWF0QXV0b2NvbXBsZXRlQ29ubmVjdGVkVG8iLCJjb25uZWN0ZWRUbyJdfSxmZWF0dXJlczpbcHJdfSksQyQuY3RvclBhcmFtZXRlcnM9KCk9Plt7dHlwZTp4dX0se3R5cGU6aHp9LHt0eXBlOiR1fSx7dHlwZTpKX30se3R5cGU6Vm19LHt0eXBlOnZvaWQgMCxkZWNvcmF0b3JzOlt7dHlwZTpJZSxhcmdzOlt1JF19XX0se3R5cGU6VVMsZGVjb3JhdG9yczpbe3R5cGU6TmV9XX0se3R5cGU6X0YsZGVjb3JhdG9yczpbe3R5cGU6TmV9LHt0eXBlOkllLGFyZ3M6W2hGXX0se3R5cGU6SGV9XX0se3R5cGU6dm9pZCAwLGRlY29yYXRvcnM6W3t0eXBlOk5lfSx7dHlwZTpJZSxhcmdzOlt6Q119XX0se3R5cGU6TUF9XSxDJC5wcm9wRGVjb3JhdG9ycz17YXV0b2NvbXBsZXRlOlt7dHlwZTpmXyxhcmdzOlsibWF0QXV0b2NvbXBsZXRlIl19XSxwb3NpdGlvbjpbe3R5cGU6Zl8sYXJnczpbIm1hdEF1dG9jb21wbGV0ZVBvc2l0aW9uIl19XSxjb25uZWN0ZWRUbzpbe3R5cGU6Zl8sYXJnczpbIm1hdEF1dG9jb21wbGV0ZUNvbm5lY3RlZFRvIl19XSxhdXRvY29tcGxldGVBdHRyaWJ1dGU6W3t0eXBlOmZfLGFyZ3M6WyJhdXRvY29tcGxldGUiXX1dLGF1dG9jb21wbGV0ZURpc2FibGVkOlt7dHlwZTpmXyxhcmdzOlsibWF0QXV0b2NvbXBsZXRlRGlzYWJsZWQiXX1dfTtjbGFzcyBNJCBleHRlbmRzIEMke2NvbnN0cnVjdG9yKCl7c3VwZXIoLi4uYXJndW1lbnRzKSx0aGlzLl9hYm92ZUNsYXNzPSJtYXQtYXV0b2NvbXBsZXRlLXBhbmVsLWFib3ZlIn19TSQuybVmYWM9ZnVuY3Rpb24gdChuKXtyZXR1cm4gTyQobnx8TSQpfSxNJC7JtWRpcj12byh7dHlwZTpNJCxzZWxlY3RvcnM6W1siaW5wdXQiLCJtYXRBdXRvY29tcGxldGUiLCIiXSxbInRleHRhcmVhIiwibWF0QXV0b2NvbXBsZXRlIiwiIl1dLGhvc3RBdHRyczpbMSwibWF0LWF1dG9jb21wbGV0ZS10cmlnZ2VyIl0saG9zdFZhcnM6Nyxob3N0QmluZGluZ3M6ZnVuY3Rpb24gdChuLGUpezEmbiYmY3AoImZvY3VzaW4iLChmdW5jdGlvbiB0KCl7cmV0dXJuIGUuX2hhbmRsZUZvY3VzKCl9KSkoImJsdXIiLChmdW5jdGlvbiB0KCl7cmV0dXJuIGUuX29uVG91Y2hlZCgpfSkpKCJpbnB1dCIsKGZ1bmN0aW9uIHQobil7cmV0dXJuIGUuX2hhbmRsZUlucHV0KG4pfSkpKCJrZXlkb3duIiwoZnVuY3Rpb24gdChuKXtyZXR1cm4gZS5faGFuZGxlS2V5ZG93bihuKX0pKSwyJm4mJk5nKCJhdXRvY29tcGxldGUiLGUuYXV0b2NvbXBsZXRlQXR0cmlidXRlKSgicm9sZSIsZS5hdXRvY29tcGxldGVEaXNhYmxlZD9udWxsOiJjb21ib2JveCIpKCJhcmlhLWF1dG9jb21wbGV0ZSIsZS5hdXRvY29tcGxldGVEaXNhYmxlZD9udWxsOiJsaXN0IikoImFyaWEtYWN0aXZlZGVzY2VuZGFudCIsZS5wYW5lbE9wZW4mJmUuYWN0aXZlT3B0aW9uP2UuYWN0aXZlT3B0aW9uLmlkOm51bGwpKCJhcmlhLWV4cGFuZGVkIixlLmF1dG9jb21wbGV0ZURpc2FibGVkP251bGw6ZS5wYW5lbE9wZW4udG9TdHJpbmcoKSkoImFyaWEtb3ducyIsZS5hdXRvY29tcGxldGVEaXNhYmxlZHx8IWUucGFuZWxPcGVufHxudWxsPT1lLmF1dG9jb21wbGV0ZT9udWxsOmUuYXV0b2NvbXBsZXRlLmlkKSgiYXJpYS1oYXNwb3B1cCIsIWUuYXV0b2NvbXBsZXRlRGlzYWJsZWQpfSxleHBvcnRBczpbIm1hdEF1dG9jb21wbGV0ZVRyaWdnZXIiXSxmZWF0dXJlczpbTXUoW18kXSksaGddfSk7Y29uc3QgTyQ9dGMoTSQpOwovKioKICAgICAqIEBsaWNlbnNlCiAgICAgKiBDb3B5cmlnaHQgR29vZ2xlIExMQyBBbGwgUmlnaHRzIFJlc2VydmVkLgogICAgICoKICAgICAqIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGFuIE1JVC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCiAgICAgKiBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlIGF0IGh0dHBzOi8vYW5ndWxhci5pby9saWNlbnNlCiAgICAgKi9jbGFzcyBQJHt9ZnVuY3Rpb24geCQodCxuKXsxJnQmJnRwKDAsIm1hdC1pY29uIiw3KX1mdW5jdGlvbiB5JCh0LG4pe2lmKDEmdCYmKEtnKDAsIm1hdC1vcHRpb24iLDgpLEpwKDEpLCRnKCkpLDImdCl7Y29uc3QgdD1uLiRpbXBsaWNpdDtKZygidmFsdWUiLHQpLHdzKDEpLFFwKHQpfX1QJC7JtW1vZD14byh7dHlwZTpQJH0pLFAkLsm1aW5qPUdlKHtmYWN0b3J5OmZ1bmN0aW9uIHQobil7cmV0dXJuIG5ldyhufHxQJCl9LHByb3ZpZGVyczpbZiRdLGltcG9ydHM6W1t5eixYRSx0RSxQT10sa0EsWEUsdEVdfSksKCJ1bmRlZmluZWQiPT10eXBlb2YgbmdKaXRNb2RlfHxuZ0ppdE1vZGUpJiZ5byhQJCx7ZGVjbGFyYXRpb25zOmZ1bmN0aW9uKCl7cmV0dXJuW20kLE0kLHAkXX0saW1wb3J0czpmdW5jdGlvbigpe3JldHVyblt5eixYRSx0RSxQT119LGV4cG9ydHM6ZnVuY3Rpb24oKXtyZXR1cm5bbSQsTSQscCQsa0EsWEUsdEVdfX0pO2NsYXNzIGske2NvbnN0cnVjdG9yKCl7dGhpcy5vblJlZ2V4RmlsdGVyVmFsdWVDaGFuZ2U9bmV3IEVmfW9uRmlsdGVyS2V5VXAodCl7IkVudGVyIj09PXQua2V5JiZ0aGlzLmF1dG9jb21wbGV0ZVRyaWdnZXIuY2xvc2VQYW5lbCgpfW9uQ29tcGxldGlvbkFjY2VwdGVkKHQpe3RoaXMub25SZWdleEZpbHRlclZhbHVlQ2hhbmdlLmVtaXQoKGZ1bmN0aW9uIG4odCl7cmV0dXJuIHQucmVwbGFjZSgkRCwiXFwkJiIpfSkodCkpfX1rJC7JtWZhYz1mdW5jdGlvbiB0KG4pe3JldHVybiBuZXcobnx8ayQpfSxrJC7JtWNtcD1fbyh7dHlwZTprJCxzZWxlY3RvcnM6W1sibWV0cmljcy10YWctZmlsdGVyLWNvbXBvbmVudCJdXSx2aWV3UXVlcnk6ZnVuY3Rpb24gdChuLGUpe3ZhciBhOzEmbiYmamYoTSQsITApLDImbiYmVmYoYT1aZigpKSYmKGUuYXV0b2NvbXBsZXRlVHJpZ2dlcj1hLmZpcnN0KX0saG9zdFZhcnM6Mixob3N0QmluZGluZ3M6ZnVuY3Rpb24gdChuLGUpezImbiYmRHAoInZhbGlkIixlLmlzUmVnZXhGaWx0ZXJWYWxpZCl9LGlucHV0czp7cmVnZXhGaWx0ZXJWYWx1ZToicmVnZXhGaWx0ZXJWYWx1ZSIsaXNSZWdleEZpbHRlclZhbGlkOiJpc1JlZ2V4RmlsdGVyVmFsaWQiLGNvbXBsZXRpb25zOiJjb21wbGV0aW9ucyJ9LG91dHB1dHM6e29uUmVnZXhGaWx0ZXJWYWx1ZUNoYW5nZToib25SZWdleEZpbHRlclZhbHVlQ2hhbmdlIn0sZGVjbHM6Nyx2YXJzOjQsY29uc3RzOltbMSwidGFnLWZpbHRlciJdLFsic3ZnSWNvbiIsInNlYXJjaF8yNHB4Il0sWyJtYXRJbnB1dCIsIiIsImF1dG9jb21wbGV0ZSIsIm9mZiIsInBsYWNlaG9sZGVyIiwiRmlsdGVyIHRhZ3MgKHJlZ2V4KSIsMywidmFsdWUiLCJtYXRBdXRvY29tcGxldGUiLCJpbnB1dCIsImtleXVwIl0sWyJzdmdJY29uIiwiZXJyb3JfMjRweCIsImNsYXNzIiwiZXJyb3ItaWNvbiIsInRpdGxlIiwiSW52YWxpZCByZWdleCBmaWx0ZXIuIFRoZSByZXN1bHQgbWF5IGJlIHN0YWxlLiIsNCwibmdJZiJdLFszLCJvcHRpb25TZWxlY3RlZCJdLFsiZmlsdGVyTWF0Y2hlcyIsIm1hdEF1dG9jb21wbGV0ZSJdLFszLCJ2YWx1ZSIsNCwibmdGb3IiLCJuZ0Zvck9mIl0sWyJzdmdJY29uIiwiZXJyb3JfMjRweCIsInRpdGxlIiwiSW52YWxpZCByZWdleCBmaWx0ZXIuIFRoZSByZXN1bHQgbWF5IGJlIHN0YWxlLiIsMSwiZXJyb3ItaWNvbiJdLFszLCJ2YWx1ZSJdXSx0ZW1wbGF0ZTpmdW5jdGlvbiB0KG4sZSl7aWYoMSZuJiYoS2coMCwiZGl2IiwwKSx0cCgxLCJtYXQtaWNvbiIsMSksS2coMiwiaW5wdXQiLDIpLGNwKCJpbnB1dCIsKGZ1bmN0aW9uIHQobil7cmV0dXJuIGUub25SZWdleEZpbHRlclZhbHVlQ2hhbmdlLmVtaXQobi50YXJnZXQudmFsdWUpfSkpKCJrZXl1cCIsKGZ1bmN0aW9uIHQobil7cmV0dXJuIGUub25GaWx0ZXJLZXlVcChuKX0pKSwkZygpLFlnKDMseCQsMSwwLCJtYXQtaWNvbiIsMyksJGcoKSxLZyg0LCJtYXQtYXV0b2NvbXBsZXRlIiw0LDUpLGNwKCJvcHRpb25TZWxlY3RlZCIsKGZ1bmN0aW9uIHQobil7cmV0dXJuIGUub25Db21wbGV0aW9uQWNjZXB0ZWQobi5vcHRpb24udmFsdWUpfSkpLFlnKDYseSQsMiwyLCJtYXQtb3B0aW9uIiw2KSwkZygpKSwyJm4pe2NvbnN0IHQ9cWcoNSk7d3MoMiksSmcoInZhbHVlIixlLnJlZ2V4RmlsdGVyVmFsdWUpKCJtYXRBdXRvY29tcGxldGUiLHQpLHdzKDEpLEpnKCJuZ0lmIiwhZS5pc1JlZ2V4RmlsdGVyVmFsaWQpLHdzKDMpLEpnKCJuZ0Zvck9mIixlLmNvbXBsZXRpb25zKX19LGRpcmVjdGl2ZXM6W0JCLFBWLE0kLFdNLG0kLGpNLFlFXSxzdHlsZXM6WycubWF0LWJhZGdlLWNvbnRlbnRbX25nY29udGVudC0lQ09NUCVde2ZvbnQtd2VpZ2h0OjYwMDtmb250LXNpemU6MTJweDtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWZ9Lm1hdC1iYWRnZS1zbWFsbFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWJhZGdlLWNvbnRlbnRbX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZTo5cHh9Lm1hdC1iYWRnZS1sYXJnZVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWJhZGdlLWNvbnRlbnRbX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToyNHB4fS5tYXQtaDFbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWhlYWRsaW5lW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10eXBvZ3JhcGh5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIGgxW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250OjQwMCAyNHB4LzMycHggUm9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2xldHRlci1zcGFjaW5nOm5vcm1hbDttYXJnaW46MCAwIDE2cHh9Lm1hdC1oMltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdGl0bGVbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXR5cG9ncmFwaHlbX25nY29udGVudC0lQ09NUCVdICAgaDJbX25nY29udGVudC0lQ09NUCVde2ZvbnQ6NTAwIDIwcHgvMzJweCBSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7bGV0dGVyLXNwYWNpbmc6bm9ybWFsO21hcmdpbjowIDAgMTZweH0ubWF0LWgzW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1zdWJoZWFkaW5nLTJbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXR5cG9ncmFwaHlbX25nY29udGVudC0lQ09NUCVdICAgaDNbX25nY29udGVudC0lQ09NUCVde2ZvbnQ6NDAwIDE2cHgvMjhweCBSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7bGV0dGVyLXNwYWNpbmc6bm9ybWFsO21hcmdpbjowIDAgMTZweH0ubWF0LWg0W19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1zdWJoZWFkaW5nLTFbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXR5cG9ncmFwaHlbX25nY29udGVudC0lQ09NUCVdICAgaDRbX25nY29udGVudC0lQ09NUCVde2ZvbnQ6NDAwIDE1cHgvMjRweCBSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7bGV0dGVyLXNwYWNpbmc6bm9ybWFsO21hcmdpbjowIDAgMTZweH0ubWF0LWg1W19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10eXBvZ3JhcGh5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIGg1W19uZ2NvbnRlbnQtJUNPTVAlXXtmb250OjQwMCBjYWxjKDE0cHggKiAwLjgzKS8yMHB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjttYXJnaW46MCAwIDEycHh9Lm1hdC1oNltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdHlwb2dyYXBoeVtfbmdjb250ZW50LSVDT01QJV0gICBoNltfbmdjb250ZW50LSVDT01QJV17Zm9udDo0MDAgY2FsYygxNHB4ICogMC42NykvMjBweCBSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7bWFyZ2luOjAgMCAxMnB4fS5tYXQtYm9keS1zdHJvbmdbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWJvZHktMltfbmdjb250ZW50LSVDT01QJV17Zm9udDo1MDAgMTRweC8yNHB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtsZXR0ZXItc3BhY2luZzpub3JtYWx9Lm1hdC1ib2R5W19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1ib2R5LTFbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXR5cG9ncmFwaHlbX25nY29udGVudC0lQ09NUCVde2ZvbnQ6NDAwIDE0cHgvMjBweCBSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7bGV0dGVyLXNwYWNpbmc6bm9ybWFsfS5tYXQtYm9keVtfbmdjb250ZW50LSVDT01QJV0gICBwW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1ib2R5LTFbX25nY29udGVudC0lQ09NUCVdICAgcFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdHlwb2dyYXBoeVtfbmdjb250ZW50LSVDT01QJV0gICBwW19uZ2NvbnRlbnQtJUNPTVAlXXttYXJnaW46MCAwIDEycHh9Lm1hdC1zbWFsbFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtY2FwdGlvbltfbmdjb250ZW50LSVDT01QJV17Zm9udDo0MDAgMTJweC8yMHB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtsZXR0ZXItc3BhY2luZzpub3JtYWx9Lm1hdC1kaXNwbGF5LTRbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXR5cG9ncmFwaHlbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1kaXNwbGF5LTRbX25nY29udGVudC0lQ09NUCVde2ZvbnQ6MzAwIDExMnB4LzExMnB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtsZXR0ZXItc3BhY2luZzotMC4wNWVtO21hcmdpbjowIDAgNTZweH0ubWF0LWRpc3BsYXktM1tfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdHlwb2dyYXBoeVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWRpc3BsYXktM1tfbmdjb250ZW50LSVDT01QJV17Zm9udDo0MDAgNTZweC81NnB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtsZXR0ZXItc3BhY2luZzotMC4wMmVtO21hcmdpbjowIDAgNjRweH0ubWF0LWRpc3BsYXktMltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdHlwb2dyYXBoeVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWRpc3BsYXktMltfbmdjb250ZW50LSVDT01QJV17Zm9udDo0MDAgNDVweC80OHB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtsZXR0ZXItc3BhY2luZzotMC4wMDVlbTttYXJnaW46MCAwIDY0cHh9Lm1hdC1kaXNwbGF5LTFbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXR5cG9ncmFwaHlbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1kaXNwbGF5LTFbX25nY29udGVudC0lQ09NUCVde2ZvbnQ6NDAwIDM0cHgvNDBweCBSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7bGV0dGVyLXNwYWNpbmc6bm9ybWFsO21hcmdpbjowIDAgNjRweH0ubWF0LWJvdHRvbS1zaGVldC1jb250YWluZXJbX25nY29udGVudC0lQ09NUCVde2ZvbnQ6NDAwIDE0cHgvMjBweCBSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7bGV0dGVyLXNwYWNpbmc6bm9ybWFsfS5tYXQtYnV0dG9uW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1yYWlzZWQtYnV0dG9uW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1pY29uLWJ1dHRvbltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtc3Ryb2tlZC1idXR0b25bX25nY29udGVudC0lQ09NUCVdLCAubWF0LWZsYXQtYnV0dG9uW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1mYWJbX25nY29udGVudC0lQ09NUCVdLCAubWF0LW1pbmktZmFiW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7Zm9udC1zaXplOjE0cHg7Zm9udC13ZWlnaHQ6NTAwfS5tYXQtYnV0dG9uLXRvZ2dsZVtfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmfS5tYXQtY2FyZFtfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmfS5tYXQtY2FyZC10aXRsZVtfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjI0cHg7Zm9udC13ZWlnaHQ6NTAwfS5tYXQtY2FyZC1oZWFkZXJbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1jYXJkLXRpdGxlW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MjBweH0ubWF0LWNhcmQtc3VidGl0bGVbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWNhcmQtY29udGVudFtfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjE0cHh9Lm1hdC1jaGVja2JveFtfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmfS5tYXQtY2hlY2tib3gtbGF5b3V0W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtY2hlY2tib3gtbGFiZWxbX25nY29udGVudC0lQ09NUCVde2xpbmUtaGVpZ2h0OjI0cHh9Lm1hdC1jaGlwW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MTRweDtmb250LXdlaWdodDo1MDB9Lm1hdC1jaGlwW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtY2hpcC10cmFpbGluZy1pY29uLm1hdC1pY29uW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1jaGlwW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtY2hpcC1yZW1vdmUubWF0LWljb25bX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToxOHB4fS5tYXQtdGFibGVbX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZn0ubWF0LWhlYWRlci1jZWxsW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MTJweDtmb250LXdlaWdodDo1MDB9Lm1hdC1jZWxsW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1mb290ZXItY2VsbFtfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjE0cHh9Lm1hdC1jYWxlbmRhcltfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmfS5tYXQtY2FsZW5kYXItYm9keVtfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjEzcHh9Lm1hdC1jYWxlbmRhci1ib2R5LWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1jYWxlbmRhci1wZXJpb2QtYnV0dG9uW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MTRweDtmb250LXdlaWdodDo1MDB9Lm1hdC1jYWxlbmRhci10YWJsZS1oZWFkZXJbX25nY29udGVudC0lQ09NUCVdICAgdGhbX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToxMXB4O2ZvbnQtd2VpZ2h0OjQwMH0ubWF0LWRpYWxvZy10aXRsZVtfbmdjb250ZW50LSVDT01QJV17Zm9udDo1MDAgMjBweC8zMnB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtsZXR0ZXItc3BhY2luZzpub3JtYWx9Lm1hdC1leHBhbnNpb24tcGFuZWwtaGVhZGVyW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7Zm9udC1zaXplOjE1cHg7Zm9udC13ZWlnaHQ6NDAwfS5tYXQtZXhwYW5zaW9uLXBhbmVsLWNvbnRlbnRbX25nY29udGVudC0lQ09NUCVde2ZvbnQ6NDAwIDE0cHgvMjBweCBSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7bGV0dGVyLXNwYWNpbmc6bm9ybWFsfS5tYXQtZm9ybS1maWVsZFtfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOmluaGVyaXQ7Zm9udC13ZWlnaHQ6NDAwO2xpbmUtaGVpZ2h0OjEuMTI1O2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtsZXR0ZXItc3BhY2luZzpub3JtYWx9Lm1hdC1mb3JtLWZpZWxkLXdyYXBwZXJbX25nY29udGVudC0lQ09NUCVde3BhZGRpbmctYm90dG9tOjEuMzQzNzVlbX0ubWF0LWZvcm0tZmllbGQtcHJlZml4W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaWNvbltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtZm9ybS1maWVsZC1zdWZmaXhbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pY29uW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MTUwJTtsaW5lLWhlaWdodDoxLjEyNX0ubWF0LWZvcm0tZmllbGQtcHJlZml4W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaWNvbi1idXR0b25bX25nY29udGVudC0lQ09NUCVdLCAubWF0LWZvcm0tZmllbGQtc3VmZml4W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaWNvbi1idXR0b25bX25nY29udGVudC0lQ09NUCVde2hlaWdodDoxLjVlbTt3aWR0aDoxLjVlbX0ubWF0LWZvcm0tZmllbGQtcHJlZml4W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaWNvbi1idXR0b25bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pY29uW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1mb3JtLWZpZWxkLXN1ZmZpeFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWljb24tYnV0dG9uW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaWNvbltfbmdjb250ZW50LSVDT01QJV17aGVpZ2h0OjEuMTI1ZW07bGluZS1oZWlnaHQ6MS4xMjV9Lm1hdC1mb3JtLWZpZWxkLWluZml4W19uZ2NvbnRlbnQtJUNPTVAlXXtwYWRkaW5nOi41ZW0gMDtib3JkZXItdG9wOi44NDM3NWVtIHNvbGlkIHRyYW5zcGFyZW50fS5tYXQtZm9ybS1maWVsZC1jYW4tZmxvYXQubWF0LWZvcm0tZmllbGQtc2hvdWxkLWZsb2F0W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtZm9ybS1maWVsZC1jYW4tZmxvYXRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pbnB1dC1zZXJ2ZXJbX25nY29udGVudC0lQ09NUCVdOmZvY3VzICsgLm1hdC1mb3JtLWZpZWxkLWxhYmVsLXdyYXBwZXJbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXt0cmFuc2Zvcm06dHJhbnNsYXRlWSgtMS4zNDM3NWVtKSBzY2FsZSgwLjc1KTt3aWR0aDoxMzMuMzMzMzMzMzMzMyV9Lm1hdC1mb3JtLWZpZWxkLWNhbi1mbG9hdFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWlucHV0LXNlcnZlcltsYWJlbF1bX25nY29udGVudC0lQ09NUCVdOm5vdCg6bGFiZWwtc2hvd24pICsgLm1hdC1mb3JtLWZpZWxkLWxhYmVsLXdyYXBwZXJbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXt0cmFuc2Zvcm06dHJhbnNsYXRlWSgtMS4zNDM3NGVtKSBzY2FsZSgwLjc1KTt3aWR0aDoxMzMuMzMzMzQzMzMzMyV9Lm1hdC1mb3JtLWZpZWxkLWxhYmVsLXdyYXBwZXJbX25nY29udGVudC0lQ09NUCVde3RvcDotMC44NDM3NWVtO3BhZGRpbmctdG9wOi44NDM3NWVtfS5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17dG9wOjEuMzQzNzVlbX0ubWF0LWZvcm0tZmllbGQtdW5kZXJsaW5lW19uZ2NvbnRlbnQtJUNPTVAlXXtib3R0b206MS4zNDM3NWVtfS5tYXQtZm9ybS1maWVsZC1zdWJzY3JpcHQtd3JhcHBlcltfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjc1JTttYXJnaW4tdG9wOi42NjY2NjY2NjY3ZW07dG9wOmNhbGMoMTAwJSAtIDEuNzkxNjY2NjY2N2VtKX0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1sZWdhY3lbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLXdyYXBwZXJbX25nY29udGVudC0lQ09NUCVde3BhZGRpbmctYm90dG9tOjEuMjVlbX0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1sZWdhY3lbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWluZml4W19uZ2NvbnRlbnQtJUNPTVAlXXtwYWRkaW5nOi40Mzc1ZW0gMH0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1sZWdhY3kubWF0LWZvcm0tZmllbGQtY2FuLWZsb2F0Lm1hdC1mb3JtLWZpZWxkLXNob3VsZC1mbG9hdFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1sZWdhY3kubWF0LWZvcm0tZmllbGQtY2FuLWZsb2F0W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaW5wdXQtc2VydmVyW19uZ2NvbnRlbnQtJUNPTVAlXTpmb2N1cyArIC5tYXQtZm9ybS1maWVsZC1sYWJlbC13cmFwcGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17dHJhbnNmb3JtOnRyYW5zbGF0ZVkoLTEuMjgxMjVlbSkgc2NhbGUoMC43NSkgcGVyc3BlY3RpdmUoMTAwcHgpIHRyYW5zbGF0ZVooMC4wMDFweCk7LW1zLXRyYW5zZm9ybTp0cmFuc2xhdGVZKC0xLjI4MTI1ZW0pIHNjYWxlKDAuNzUpO3dpZHRoOjEzMy4zMzMzMzMzMzMzJX0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1sZWdhY3kubWF0LWZvcm0tZmllbGQtY2FuLWZsb2F0W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1hdXRvZmlsbC1jb250cm9sW19uZ2NvbnRlbnQtJUNPTVAlXTotd2Via2l0LWF1dG9maWxsICsgLm1hdC1mb3JtLWZpZWxkLWxhYmVsLXdyYXBwZXJbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXt0cmFuc2Zvcm06dHJhbnNsYXRlWSgtMS4yODEyNWVtKSBzY2FsZSgwLjc1KSBwZXJzcGVjdGl2ZSgxMDBweCkgdHJhbnNsYXRlWigwLjAwMTAxcHgpOy1tcy10cmFuc2Zvcm06dHJhbnNsYXRlWSgtMS4yODEyNGVtKSBzY2FsZSgwLjc1KTt3aWR0aDoxMzMuMzMzMzQzMzMzMyV9Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtbGVnYWN5Lm1hdC1mb3JtLWZpZWxkLWNhbi1mbG9hdFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWlucHV0LXNlcnZlcltsYWJlbF1bX25nY29udGVudC0lQ09NUCVdOm5vdCg6bGFiZWwtc2hvd24pICsgLm1hdC1mb3JtLWZpZWxkLWxhYmVsLXdyYXBwZXJbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXt0cmFuc2Zvcm06dHJhbnNsYXRlWSgtMS4yODEyNWVtKSBzY2FsZSgwLjc1KSBwZXJzcGVjdGl2ZSgxMDBweCkgdHJhbnNsYXRlWigwLjAwMTAycHgpOy1tcy10cmFuc2Zvcm06dHJhbnNsYXRlWSgtMS4yODEyM2VtKSBzY2FsZSgwLjc1KTt3aWR0aDoxMzMuMzMzMzUzMzMzMyV9Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtbGVnYWN5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17dG9wOjEuMjgxMjVlbX0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1sZWdhY3lbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLXVuZGVybGluZVtfbmdjb250ZW50LSVDT01QJV17Ym90dG9tOjEuMjVlbX0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1sZWdhY3lbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLXN1YnNjcmlwdC13cmFwcGVyW19uZ2NvbnRlbnQtJUNPTVAlXXttYXJnaW4tdG9wOi41NDE2NjY2NjY3ZW07dG9wOmNhbGMoMTAwJSAtIDEuNjY2NjY2NjY2N2VtKX1AbWVkaWEgcHJpbnR7Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtbGVnYWN5Lm1hdC1mb3JtLWZpZWxkLWNhbi1mbG9hdC5tYXQtZm9ybS1maWVsZC1zaG91bGQtZmxvYXRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtbGVnYWN5Lm1hdC1mb3JtLWZpZWxkLWNhbi1mbG9hdFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWlucHV0LXNlcnZlcltfbmdjb250ZW50LSVDT01QJV06Zm9jdXMgKyAubWF0LWZvcm0tZmllbGQtbGFiZWwtd3JhcHBlcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVde3RyYW5zZm9ybTp0cmFuc2xhdGVZKC0xLjI4MTIyZW0pIHNjYWxlKDAuNzUpfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWxlZ2FjeS5tYXQtZm9ybS1maWVsZC1jYW4tZmxvYXRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWF1dG9maWxsLWNvbnRyb2xbX25nY29udGVudC0lQ09NUCVdOi13ZWJraXQtYXV0b2ZpbGwgKyAubWF0LWZvcm0tZmllbGQtbGFiZWwtd3JhcHBlcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVde3RyYW5zZm9ybTp0cmFuc2xhdGVZKC0xLjI4MTIxZW0pIHNjYWxlKDAuNzUpfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWxlZ2FjeS5tYXQtZm9ybS1maWVsZC1jYW4tZmxvYXRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pbnB1dC1zZXJ2ZXJbbGFiZWxdW19uZ2NvbnRlbnQtJUNPTVAlXTpub3QoOmxhYmVsLXNob3duKSArIC5tYXQtZm9ybS1maWVsZC1sYWJlbC13cmFwcGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17dHJhbnNmb3JtOnRyYW5zbGF0ZVkoLTEuMjgxMmVtKSBzY2FsZSgwLjc1KX19Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtZmlsbFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtaW5maXhbX25nY29udGVudC0lQ09NUCVde3BhZGRpbmc6LjI1ZW0gMCAuNzVlbSAwfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWZpbGxbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXt0b3A6MS4wOTM3NWVtO21hcmdpbi10b3A6LTAuNWVtfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWZpbGwubWF0LWZvcm0tZmllbGQtY2FuLWZsb2F0Lm1hdC1mb3JtLWZpZWxkLXNob3VsZC1mbG9hdFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1maWxsLm1hdC1mb3JtLWZpZWxkLWNhbi1mbG9hdFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWlucHV0LXNlcnZlcltfbmdjb250ZW50LSVDT01QJV06Zm9jdXMgKyAubWF0LWZvcm0tZmllbGQtbGFiZWwtd3JhcHBlcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVde3RyYW5zZm9ybTp0cmFuc2xhdGVZKC0wLjU5Mzc1ZW0pIHNjYWxlKDAuNzUpO3dpZHRoOjEzMy4zMzMzMzMzMzMzJX0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1maWxsLm1hdC1mb3JtLWZpZWxkLWNhbi1mbG9hdFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWlucHV0LXNlcnZlcltsYWJlbF1bX25nY29udGVudC0lQ09NUCVdOm5vdCg6bGFiZWwtc2hvd24pICsgLm1hdC1mb3JtLWZpZWxkLWxhYmVsLXdyYXBwZXJbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXt0cmFuc2Zvcm06dHJhbnNsYXRlWSgtMC41OTM3NGVtKSBzY2FsZSgwLjc1KTt3aWR0aDoxMzMuMzMzMzQzMzMzMyV9Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2Utb3V0bGluZVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtaW5maXhbX25nY29udGVudC0lQ09NUCVde3BhZGRpbmc6MWVtIDAgMWVtIDB9Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2Utb3V0bGluZVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVde3RvcDoxLjg0Mzc1ZW07bWFyZ2luLXRvcDotMC4yNWVtfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLW91dGxpbmUubWF0LWZvcm0tZmllbGQtY2FuLWZsb2F0Lm1hdC1mb3JtLWZpZWxkLXNob3VsZC1mbG9hdFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1vdXRsaW5lLm1hdC1mb3JtLWZpZWxkLWNhbi1mbG9hdFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWlucHV0LXNlcnZlcltfbmdjb250ZW50LSVDT01QJV06Zm9jdXMgKyAubWF0LWZvcm0tZmllbGQtbGFiZWwtd3JhcHBlcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVde3RyYW5zZm9ybTp0cmFuc2xhdGVZKC0xLjU5Mzc1ZW0pIHNjYWxlKDAuNzUpO3dpZHRoOjEzMy4zMzMzMzMzMzMzJX0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1vdXRsaW5lLm1hdC1mb3JtLWZpZWxkLWNhbi1mbG9hdFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWlucHV0LXNlcnZlcltsYWJlbF1bX25nY29udGVudC0lQ09NUCVdOm5vdCg6bGFiZWwtc2hvd24pICsgLm1hdC1mb3JtLWZpZWxkLWxhYmVsLXdyYXBwZXJbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXt0cmFuc2Zvcm06dHJhbnNsYXRlWSgtMS41OTM3NGVtKSBzY2FsZSgwLjc1KTt3aWR0aDoxMzMuMzMzMzQzMzMzMyV9Lm1hdC1ncmlkLXRpbGUtaGVhZGVyW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1ncmlkLXRpbGUtZm9vdGVyW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MTRweH0ubWF0LWdyaWQtdGlsZS1oZWFkZXJbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saW5lW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1ncmlkLXRpbGUtZm9vdGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGluZVtfbmdjb250ZW50LSVDT01QJV17d2hpdGUtc3BhY2U6bm93cmFwO292ZXJmbG93OmhpZGRlbjt0ZXh0LW92ZXJmbG93OmVsbGlwc2lzO2Rpc3BsYXk6YmxvY2s7Ym94LXNpemluZzpib3JkZXItYm94fS5tYXQtZ3JpZC10aWxlLWhlYWRlcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpbmVbX25nY29udGVudC0lQ09NUCVdOm50aC1jaGlsZChuKzIpLCAubWF0LWdyaWQtdGlsZS1mb290ZXJbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saW5lW19uZ2NvbnRlbnQtJUNPTVAlXTpudGgtY2hpbGQobisyKXtmb250LXNpemU6MTJweH1pbnB1dC5tYXQtaW5wdXQtZWxlbWVudFtfbmdjb250ZW50LSVDT01QJV17bWFyZ2luLXRvcDotMC4wNjI1ZW19Lm1hdC1tZW51LWl0ZW1bX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtmb250LXNpemU6MTRweDtmb250LXdlaWdodDo0MDB9Lm1hdC1wYWdpbmF0b3JbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXBhZ2luYXRvci1wYWdlLXNpemVbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1zZWxlY3QtdHJpZ2dlcltfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2ZvbnQtc2l6ZToxMnB4fS5tYXQtcmFkaW8tYnV0dG9uW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWZ9Lm1hdC1zZWxlY3RbX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZn0ubWF0LXNlbGVjdC10cmlnZ2VyW19uZ2NvbnRlbnQtJUNPTVAlXXtoZWlnaHQ6MS4xMjVlbX0ubWF0LXNsaWRlLXRvZ2dsZS1jb250ZW50W19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWZ9Lm1hdC1zbGlkZXItdGh1bWItbGFiZWwtdGV4dFtfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2ZvbnQtc2l6ZToxMnB4O2ZvbnQtd2VpZ2h0OjUwMH0ubWF0LXN0ZXBwZXItdmVydGljYWxbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXN0ZXBwZXItaG9yaXpvbnRhbFtfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmfS5tYXQtc3RlcC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjE0cHg7Zm9udC13ZWlnaHQ6NDAwfS5tYXQtc3RlcC1zdWItbGFiZWwtZXJyb3JbX25nY29udGVudC0lQ09NUCVde2ZvbnQtd2VpZ2h0Om5vcm1hbH0ubWF0LXN0ZXAtbGFiZWwtZXJyb3JbX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToxNHB4fS5tYXQtc3RlcC1sYWJlbC1zZWxlY3RlZFtfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjE0cHg7Zm9udC13ZWlnaHQ6NTAwfS5tYXQtdGFiLWdyb3VwW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWZ9Lm1hdC10YWItbGFiZWxbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXRhYi1saW5rW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7Zm9udC1zaXplOjE0cHg7Zm9udC13ZWlnaHQ6NTAwfS5tYXQtdG9vbGJhcltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdG9vbGJhcltfbmdjb250ZW50LSVDT01QJV0gICBoMVtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdG9vbGJhcltfbmdjb250ZW50LSVDT01QJV0gICBoMltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdG9vbGJhcltfbmdjb250ZW50LSVDT01QJV0gICBoM1tfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdG9vbGJhcltfbmdjb250ZW50LSVDT01QJV0gICBoNFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdG9vbGJhcltfbmdjb250ZW50LSVDT01QJV0gICBoNVtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdG9vbGJhcltfbmdjb250ZW50LSVDT01QJV0gICBoNltfbmdjb250ZW50LSVDT01QJV17Zm9udDo1MDAgMjBweC8zMnB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtsZXR0ZXItc3BhY2luZzpub3JtYWw7bWFyZ2luOjB9Lm1hdC10b29sdGlwW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7Zm9udC1zaXplOjEwcHg7cGFkZGluZy10b3A6NnB4O3BhZGRpbmctYm90dG9tOjZweH0ubWF0LXRvb2x0aXAtaGFuZHNldFtfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjE0cHg7cGFkZGluZy10b3A6OHB4O3BhZGRpbmctYm90dG9tOjhweH0ubWF0LWxpc3QtaXRlbVtfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmfS5tYXQtbGlzdC1vcHRpb25bX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZn0ubWF0LWxpc3QtYmFzZVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpc3QtaXRlbVtfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjE2cHh9Lm1hdC1saXN0LWJhc2VbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saXN0LWl0ZW1bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saW5lW19uZ2NvbnRlbnQtJUNPTVAlXXt3aGl0ZS1zcGFjZTpub3dyYXA7b3ZlcmZsb3c6aGlkZGVuO3RleHQtb3ZlcmZsb3c6ZWxsaXBzaXM7ZGlzcGxheTpibG9jaztib3gtc2l6aW5nOmJvcmRlci1ib3h9Lm1hdC1saXN0LWJhc2VbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saXN0LWl0ZW1bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saW5lW19uZ2NvbnRlbnQtJUNPTVAlXTpudGgtY2hpbGQobisyKXtmb250LXNpemU6MTRweH0ubWF0LWxpc3QtYmFzZVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpc3Qtb3B0aW9uW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MTZweH0ubWF0LWxpc3QtYmFzZVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpc3Qtb3B0aW9uW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGluZVtfbmdjb250ZW50LSVDT01QJV17d2hpdGUtc3BhY2U6bm93cmFwO292ZXJmbG93OmhpZGRlbjt0ZXh0LW92ZXJmbG93OmVsbGlwc2lzO2Rpc3BsYXk6YmxvY2s7Ym94LXNpemluZzpib3JkZXItYm94fS5tYXQtbGlzdC1iYXNlW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGlzdC1vcHRpb25bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saW5lW19uZ2NvbnRlbnQtJUNPTVAlXTpudGgtY2hpbGQobisyKXtmb250LXNpemU6MTRweH0ubWF0LWxpc3QtYmFzZVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXN1YmhlYWRlcltfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2ZvbnQtc2l6ZToxNHB4O2ZvbnQtd2VpZ2h0OjUwMH0ubWF0LWxpc3QtYmFzZVtkZW5zZV1bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saXN0LWl0ZW1bX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToxMnB4fS5tYXQtbGlzdC1iYXNlW2RlbnNlXVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpc3QtaXRlbVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpbmVbX25nY29udGVudC0lQ09NUCVde3doaXRlLXNwYWNlOm5vd3JhcDtvdmVyZmxvdzpoaWRkZW47dGV4dC1vdmVyZmxvdzplbGxpcHNpcztkaXNwbGF5OmJsb2NrO2JveC1zaXppbmc6Ym9yZGVyLWJveH0ubWF0LWxpc3QtYmFzZVtkZW5zZV1bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saXN0LWl0ZW1bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saW5lW19uZ2NvbnRlbnQtJUNPTVAlXTpudGgtY2hpbGQobisyKXtmb250LXNpemU6MTJweH0ubWF0LWxpc3QtYmFzZVtkZW5zZV1bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saXN0LW9wdGlvbltfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjEycHh9Lm1hdC1saXN0LWJhc2VbZGVuc2VdW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGlzdC1vcHRpb25bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saW5lW19uZ2NvbnRlbnQtJUNPTVAlXXt3aGl0ZS1zcGFjZTpub3dyYXA7b3ZlcmZsb3c6aGlkZGVuO3RleHQtb3ZlcmZsb3c6ZWxsaXBzaXM7ZGlzcGxheTpibG9jaztib3gtc2l6aW5nOmJvcmRlci1ib3h9Lm1hdC1saXN0LWJhc2VbZGVuc2VdW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGlzdC1vcHRpb25bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saW5lW19uZ2NvbnRlbnQtJUNPTVAlXTpudGgtY2hpbGQobisyKXtmb250LXNpemU6MTJweH0ubWF0LWxpc3QtYmFzZVtkZW5zZV1bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1zdWJoZWFkZXJbX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtmb250LXNpemU6MTJweDtmb250LXdlaWdodDo1MDB9Lm1hdC1vcHRpb25bX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtmb250LXNpemU6MTZweH0ubWF0LW9wdGdyb3VwLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250OjUwMCAxNHB4LzI0cHggUm9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2xldHRlci1zcGFjaW5nOm5vcm1hbH0ubWF0LXNpbXBsZS1zbmFja2Jhcltfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2ZvbnQtc2l6ZToxNHB4fS5tYXQtc2ltcGxlLXNuYWNrYmFyLWFjdGlvbltfbmdjb250ZW50LSVDT01QJV17bGluZS1oZWlnaHQ6MTtmb250LWZhbWlseTppbmhlcml0O2ZvbnQtc2l6ZTppbmhlcml0O2ZvbnQtd2VpZ2h0OjUwMH0ubWF0LXRyZWVbX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZn0ubWF0LXRyZWUtbm9kZVtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtbmVzdGVkLXRyZWUtbm9kZVtfbmdjb250ZW50LSVDT01QJV17Zm9udC13ZWlnaHQ6NDAwO2ZvbnQtc2l6ZToxNHB4fS5tYXQtcmlwcGxlW19uZ2NvbnRlbnQtJUNPTVAlXXtvdmVyZmxvdzpoaWRkZW47cG9zaXRpb246cmVsYXRpdmV9Lm1hdC1yaXBwbGVbX25nY29udGVudC0lQ09NUCVdOm5vdCg6ZW1wdHkpe3RyYW5zZm9ybTp0cmFuc2xhdGVaKDApfS5tYXQtcmlwcGxlLm1hdC1yaXBwbGUtdW5ib3VuZGVkW19uZ2NvbnRlbnQtJUNPTVAlXXtvdmVyZmxvdzp2aXNpYmxlfS5tYXQtcmlwcGxlLWVsZW1lbnRbX25nY29udGVudC0lQ09NUCVde3Bvc2l0aW9uOmFic29sdXRlO2JvcmRlci1yYWRpdXM6NTAlO3BvaW50ZXItZXZlbnRzOm5vbmU7dHJhbnNpdGlvbjpvcGFjaXR5LHRyYW5zZm9ybSAwbXMgY3ViaWMtYmV6aWVyKDAsIDAsIDAuMiwgMSk7dHJhbnNmb3JtOnNjYWxlKDApfS5jZGstaGlnaC1jb250cmFzdC1hY3RpdmVbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1yaXBwbGUtZWxlbWVudFtfbmdjb250ZW50LSVDT01QJV17ZGlzcGxheTpub25lfS5jZGstdmlzdWFsbHktaGlkZGVuW19uZ2NvbnRlbnQtJUNPTVAlXXtib3JkZXI6MDtjbGlwOnJlY3QoMCAwIDAgMCk7aGVpZ2h0OjFweDttYXJnaW46LTFweDtvdmVyZmxvdzpoaWRkZW47cGFkZGluZzowO3Bvc2l0aW9uOmFic29sdXRlO3dpZHRoOjFweDtvdXRsaW5lOjA7LXdlYmtpdC1hcHBlYXJhbmNlOm5vbmU7LW1vei1hcHBlYXJhbmNlOm5vbmV9LmNkay1vdmVybGF5LWNvbnRhaW5lcltfbmdjb250ZW50LSVDT01QJV0sIC5jZGstZ2xvYmFsLW92ZXJsYXktd3JhcHBlcltfbmdjb250ZW50LSVDT01QJV17cG9pbnRlci1ldmVudHM6bm9uZTt0b3A6MDtsZWZ0OjA7aGVpZ2h0OjEwMCU7d2lkdGg6MTAwJX0uY2RrLW92ZXJsYXktY29udGFpbmVyW19uZ2NvbnRlbnQtJUNPTVAlXXtwb3NpdGlvbjpmaXhlZDt6LWluZGV4OjEwMDB9LmNkay1vdmVybGF5LWNvbnRhaW5lcltfbmdjb250ZW50LSVDT01QJV06ZW1wdHl7ZGlzcGxheTpub25lfS5jZGstZ2xvYmFsLW92ZXJsYXktd3JhcHBlcltfbmdjb250ZW50LSVDT01QJV17ZGlzcGxheTpmbGV4O3Bvc2l0aW9uOmFic29sdXRlO3otaW5kZXg6MTAwMH0uY2RrLW92ZXJsYXktcGFuZVtfbmdjb250ZW50LSVDT01QJV17cG9zaXRpb246YWJzb2x1dGU7cG9pbnRlci1ldmVudHM6YXV0bztib3gtc2l6aW5nOmJvcmRlci1ib3g7ei1pbmRleDoxMDAwO2Rpc3BsYXk6ZmxleDttYXgtd2lkdGg6MTAwJTttYXgtaGVpZ2h0OjEwMCV9LmNkay1vdmVybGF5LWJhY2tkcm9wW19uZ2NvbnRlbnQtJUNPTVAlXXtwb3NpdGlvbjphYnNvbHV0ZTt0b3A6MDtib3R0b206MDtsZWZ0OjA7cmlnaHQ6MDt6LWluZGV4OjEwMDA7cG9pbnRlci1ldmVudHM6YXV0bzstd2Via2l0LXRhcC1oaWdobGlnaHQtY29sb3I6dHJhbnNwYXJlbnQ7dHJhbnNpdGlvbjpvcGFjaXR5IDQwMG1zIGN1YmljLWJlemllcigwLjI1LCAwLjgsIDAuMjUsIDEpO29wYWNpdHk6MH0uY2RrLW92ZXJsYXktYmFja2Ryb3AuY2RrLW92ZXJsYXktYmFja2Ryb3Atc2hvd2luZ1tfbmdjb250ZW50LSVDT01QJV17b3BhY2l0eToxfUBtZWRpYSBzY3JlZW4gYW5kICgtbXMtaGlnaC1jb250cmFzdDogYWN0aXZlKXsuY2RrLW92ZXJsYXktYmFja2Ryb3AuY2RrLW92ZXJsYXktYmFja2Ryb3Atc2hvd2luZ1tfbmdjb250ZW50LSVDT01QJV17b3BhY2l0eTouNn19LmNkay1vdmVybGF5LWRhcmstYmFja2Ryb3BbX25nY29udGVudC0lQ09NUCVde2JhY2tncm91bmQ6cmdiYSgwLDAsMCwuMzIpfS5jZGstb3ZlcmxheS10cmFuc3BhcmVudC1iYWNrZHJvcFtfbmdjb250ZW50LSVDT01QJV0sIC5jZGstb3ZlcmxheS10cmFuc3BhcmVudC1iYWNrZHJvcC5jZGstb3ZlcmxheS1iYWNrZHJvcC1zaG93aW5nW19uZ2NvbnRlbnQtJUNPTVAlXXtvcGFjaXR5OjB9LmNkay1vdmVybGF5LWNvbm5lY3RlZC1wb3NpdGlvbi1ib3VuZGluZy1ib3hbX25nY29udGVudC0lQ09NUCVde3Bvc2l0aW9uOmFic29sdXRlO3otaW5kZXg6MTAwMDtkaXNwbGF5OmZsZXg7ZmxleC1kaXJlY3Rpb246Y29sdW1uO21pbi13aWR0aDoxcHg7bWluLWhlaWdodDoxcHh9LmNkay1nbG9iYWwtc2Nyb2xsYmxvY2tbX25nY29udGVudC0lQ09NUCVde3Bvc2l0aW9uOmZpeGVkO3dpZHRoOjEwMCU7b3ZlcmZsb3cteTpzY3JvbGx9QGtleWZyYW1lcyBjZGstdGV4dC1maWVsZC1hdXRvZmlsbC1zdGFydHt9QGtleWZyYW1lcyBjZGstdGV4dC1maWVsZC1hdXRvZmlsbC1lbmR7fS5jZGstdGV4dC1maWVsZC1hdXRvZmlsbC1tb25pdG9yZWRbX25nY29udGVudC0lQ09NUCVdOi13ZWJraXQtYXV0b2ZpbGx7YW5pbWF0aW9uOmNkay10ZXh0LWZpZWxkLWF1dG9maWxsLXN0YXJ0IDBzIDFtc30uY2RrLXRleHQtZmllbGQtYXV0b2ZpbGwtbW9uaXRvcmVkW19uZ2NvbnRlbnQtJUNPTVAlXTpub3QoOi13ZWJraXQtYXV0b2ZpbGwpe2FuaW1hdGlvbjpjZGstdGV4dC1maWVsZC1hdXRvZmlsbC1lbmQgMHMgMW1zfXRleHRhcmVhLmNkay10ZXh0YXJlYS1hdXRvc2l6ZVtfbmdjb250ZW50LSVDT01QJV17cmVzaXplOm5vbmV9dGV4dGFyZWEuY2RrLXRleHRhcmVhLWF1dG9zaXplLW1lYXN1cmluZ1tfbmdjb250ZW50LSVDT01QJV17cGFkZGluZzoycHggMCAhaW1wb3J0YW50O2JveC1zaXppbmc6Y29udGVudC1ib3ggIWltcG9ydGFudDtoZWlnaHQ6YXV0byAhaW1wb3J0YW50O292ZXJmbG93OmhpZGRlbiAhaW1wb3J0YW50fXRleHRhcmVhLmNkay10ZXh0YXJlYS1hdXRvc2l6ZS1tZWFzdXJpbmctZmlyZWZveFtfbmdjb250ZW50LSVDT01QJV17cGFkZGluZzoycHggMCAhaW1wb3J0YW50O2JveC1zaXppbmc6Y29udGVudC1ib3ggIWltcG9ydGFudDtoZWlnaHQ6MCAhaW1wb3J0YW50fS5tYXQtZm9jdXMtaW5kaWNhdG9yW19uZ2NvbnRlbnQtJUNPTVAlXXtwb3NpdGlvbjpyZWxhdGl2ZX0ubWF0LW1kYy1mb2N1cy1pbmRpY2F0b3JbX25nY29udGVudC0lQ09NUCVde3Bvc2l0aW9uOnJlbGF0aXZlfS5tYXQtcmlwcGxlLWVsZW1lbnRbX25nY29udGVudC0lQ09NUCVde2JhY2tncm91bmQtY29sb3I6cmdiYSgwLDAsMCwuMSl9Lm1hdC1vcHRpb25bX25nY29udGVudC0lQ09NUCVde2NvbG9yOiMyMTIxMjF9Lm1hdC1vcHRpb25bX25nY29udGVudC0lQ09NUCVdOmhvdmVyOm5vdCgubWF0LW9wdGlvbi1kaXNhYmxlZCksIC5tYXQtb3B0aW9uW19uZ2NvbnRlbnQtJUNPTVAlXTpmb2N1czpub3QoLm1hdC1vcHRpb24tZGlzYWJsZWQpe2JhY2tncm91bmQ6cmdiYSgwLDAsMCwuMDQpfS5tYXQtb3B0aW9uLm1hdC1zZWxlY3RlZFtfbmdjb250ZW50LSVDT01QJV06bm90KC5tYXQtb3B0aW9uLW11bHRpcGxlKTpub3QoLm1hdC1vcHRpb24tZGlzYWJsZWQpe2JhY2tncm91bmQ6cmdiYSgwLDAsMCwuMDQpfS5tYXQtb3B0aW9uLm1hdC1hY3RpdmVbX25nY29udGVudC0lQ09NUCVde2JhY2tncm91bmQ6cmdiYSgwLDAsMCwuMDQpO2NvbG9yOiMyMTIxMjF9Lm1hdC1vcHRpb24ubWF0LW9wdGlvbi1kaXNhYmxlZFtfbmdjb250ZW50LSVDT01QJV17Y29sb3I6cmdiYSgwLDAsMCwuMzgpfS5tYXQtcHJpbWFyeVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LW9wdGlvbi5tYXQtc2VsZWN0ZWRbX25nY29udGVudC0lQ09NUCVdOm5vdCgubWF0LW9wdGlvbi1kaXNhYmxlZCl7Y29sb3I6I2Y1N2MwMH0ubWF0LWFjY2VudFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LW9wdGlvbi5tYXQtc2VsZWN0ZWRbX25nY29udGVudC0lQ09NUCVdOm5vdCgubWF0LW9wdGlvbi1kaXNhYmxlZCl7Y29sb3I6I2ZmOTgwMH0ubWF0LXdhcm5bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1vcHRpb24ubWF0LXNlbGVjdGVkW19uZ2NvbnRlbnQtJUNPTVAlXTpub3QoLm1hdC1vcHRpb24tZGlzYWJsZWQpe2NvbG9yOiNmNDQzMzZ9Lm1hdC1vcHRncm91cC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17Y29sb3I6IzYxNjE2MX0ubWF0LW9wdGdyb3VwLWRpc2FibGVkW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtb3B0Z3JvdXAtbGFiZWxbX25nY29udGVudC0lQ09NUCVde2NvbG9yOnJnYmEoMCwwLDAsLjM4KX0ubWF0LXBzZXVkby1jaGVja2JveFtfbmdjb250ZW50LSVDT01QJV17Y29sb3I6IzYxNjE2MX0ubWF0LXBzZXVkby1jaGVja2JveFtfbmdjb250ZW50LSVDT01QJV06OmFmdGVye2NvbG9yOiNmYWZhZmF9Lm1hdC1wc2V1ZG8tY2hlY2tib3gtZGlzYWJsZWRbX25nY29udGVudC0lQ09NUCVde2NvbG9yOiNiMGIwYjB9Lm1hdC1wcmltYXJ5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtcHNldWRvLWNoZWNrYm94LWNoZWNrZWRbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXByaW1hcnlbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1wc2V1ZG8tY2hlY2tib3gtaW5kZXRlcm1pbmF0ZVtfbmdjb250ZW50LSVDT01QJV17YmFja2dyb3VuZDojZjU3YzAwfS5tYXQtcHNldWRvLWNoZWNrYm94LWNoZWNrZWRbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXBzZXVkby1jaGVja2JveC1pbmRldGVybWluYXRlW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1hY2NlbnRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1wc2V1ZG8tY2hlY2tib3gtY2hlY2tlZFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtYWNjZW50W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtcHNldWRvLWNoZWNrYm94LWluZGV0ZXJtaW5hdGVbX25nY29udGVudC0lQ09NUCVde2JhY2tncm91bmQ6I2ZmOTgwMH0ubWF0LXdhcm5bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1wc2V1ZG8tY2hlY2tib3gtY2hlY2tlZFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtd2Fybltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXBzZXVkby1jaGVja2JveC1pbmRldGVybWluYXRlW19uZ2NvbnRlbnQtJUNPTVAlXXtiYWNrZ3JvdW5kOiNmNDQzMzZ9Lm1hdC1wc2V1ZG8tY2hlY2tib3gtY2hlY2tlZC5tYXQtcHNldWRvLWNoZWNrYm94LWRpc2FibGVkW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1wc2V1ZG8tY2hlY2tib3gtaW5kZXRlcm1pbmF0ZS5tYXQtcHNldWRvLWNoZWNrYm94LWRpc2FibGVkW19uZ2NvbnRlbnQtJUNPTVAlXXtiYWNrZ3JvdW5kOiNiMGIwYjB9Lm1hdC1hcHAtYmFja2dyb3VuZFtfbmdjb250ZW50LSVDT01QJV17YmFja2dyb3VuZC1jb2xvcjojZmFmYWZhO2NvbG9yOiMyMTIxMjF9Lm1hdC1lbGV2YXRpb24tejBbX25nY29udGVudC0lQ09NUCVde2JveC1zaGFkb3c6MHB4IDBweCAwcHggMHB4IHJnYmEoMCwgMCwgMCwgMC4yKSwwcHggMHB4IDBweCAwcHggcmdiYSgwLCAwLCAwLCAwLjE0KSwwcHggMHB4IDBweCAwcHggcmdiYSgwLCAwLCAwLCAwLjEyKX0ubWF0LWVsZXZhdGlvbi16MVtfbmdjb250ZW50LSVDT01QJV17Ym94LXNoYWRvdzowcHggMnB4IDFweCAtMXB4IHJnYmEoMCwgMCwgMCwgMC4yKSwwcHggMXB4IDFweCAwcHggcmdiYSgwLCAwLCAwLCAwLjE0KSwwcHggMXB4IDNweCAwcHggcmdiYSgwLCAwLCAwLCAwLjEyKX0ubWF0LWVsZXZhdGlvbi16Mltfbmdjb250ZW50LSVDT01QJV17Ym94LXNoYWRvdzowcHggM3B4IDFweCAtMnB4IHJnYmEoMCwgMCwgMCwgMC4yKSwwcHggMnB4IDJweCAwcHggcmdiYSgwLCAwLCAwLCAwLjE0KSwwcHggMXB4IDVweCAwcHggcmdiYSgwLCAwLCAwLCAwLjEyKX0ubWF0LWVsZXZhdGlvbi16M1tfbmdjb250ZW50LSVDT01QJV17Ym94LXNoYWRvdzowcHggM3B4IDNweCAtMnB4IHJnYmEoMCwgMCwgMCwgMC4yKSwwcHggM3B4IDRweCAwcHggcmdiYSgwLCAwLCAwLCAwLjE0KSwwcHggMXB4IDhweCAwcHggcmdiYSgwLCAwLCAwLCAwLjEyKX0ubWF0LWVsZXZhdGlvbi16NFtfbmdjb250ZW50LSVDT01QJV17Ym94LXNoYWRvdzowcHggMnB4IDRweCAtMXB4IHJnYmEoMCwgMCwgMCwgMC4yKSwwcHggNHB4IDVweCAwcHggcmdiYSgwLCAwLCAwLCAwLjE0KSwwcHggMXB4IDEwcHggMHB4IHJnYmEoMCwgMCwgMCwgMC4xMil9Lm1hdC1lbGV2YXRpb24tejVbX25nY29udGVudC0lQ09NUCVde2JveC1zaGFkb3c6MHB4IDNweCA1cHggLTFweCByZ2JhKDAsIDAsIDAsIDAuMiksMHB4IDVweCA4cHggMHB4IHJnYmEoMCwgMCwgMCwgMC4xNCksMHB4IDFweCAxNHB4IDBweCByZ2JhKDAsIDAsIDAsIDAuMTIpfS5tYXQtZWxldmF0aW9uLXo2W19uZ2NvbnRlbnQtJUNPTVAlXXtib3gtc2hhZG93OjBweCAzcHggNXB4IC0xcHggcmdiYSgwLCAwLCAwLCAwLjIpLDBweCA2cHggMTBweCAwcHggcmdiYSgwLCAwLCAwLCAwLjE0KSwwcHggMXB4IDE4cHggMHB4IHJnYmEoMCwgMCwgMCwgMC4xMil9Lm1hdC1lbGV2YXRpb24tejdbX25nY29udGVudC0lQ09NUCVde2JveC1zaGFkb3c6MHB4IDRweCA1cHggLTJweCByZ2JhKDAsIDAsIDAsIDAuMiksMHB4IDdweCAxMHB4IDFweCByZ2JhKDAsIDAsIDAsIDAuMTQpLDBweCAycHggMTZweCAxcHggcmdiYSgwLCAwLCAwLCAwLjEyKX0ubWF0LWVsZXZhdGlvbi16OFtfbmdjb250ZW50LSVDT01QJV17Ym94LXNoYWRvdzowcHggNXB4IDVweCAtM3B4IHJnYmEoMCwgMCwgMCwgMC4yKSwwcHggOHB4IDEwcHggMXB4IHJnYmEoMCwgMCwgMCwgMC4xNCksMHB4IDNweCAxNHB4IDJweCByZ2JhKDAsIDAsIDAsIDAuMTIpfS5tYXQtZWxldmF0aW9uLXo5W19uZ2NvbnRlbnQtJUNPTVAlXXtib3gtc2hhZG93OjBweCA1cHggNnB4IC0zcHggcmdiYSgwLCAwLCAwLCAwLjIpLDBweCA5cHggMTJweCAxcHggcmdiYSgwLCAwLCAwLCAwLjE0KSwwcHggM3B4IDE2cHggMnB4IHJnYmEoMCwgMCwgMCwgMC4xMil9Lm1hdC1lbGV2YXRpb24tejEwW19uZ2NvbnRlbnQtJUNPTVAlXXtib3gtc2hhZG93OjBweCA2cHggNnB4IC0zcHggcmdiYSgwLCAwLCAwLCAwLjIpLDBweCAxMHB4IDE0cHggMXB4IHJnYmEoMCwgMCwgMCwgMC4xNCksMHB4IDRweCAxOHB4IDNweCByZ2JhKDAsIDAsIDAsIDAuMTIpfS5tYXQtZWxldmF0aW9uLXoxMVtfbmdjb250ZW50LSVDT01QJV17Ym94LXNoYWRvdzowcHggNnB4IDdweCAtNHB4IHJnYmEoMCwgMCwgMCwgMC4yKSwwcHggMTFweCAxNXB4IDFweCByZ2JhKDAsIDAsIDAsIDAuMTQpLDBweCA0cHggMjBweCAzcHggcmdiYSgwLCAwLCAwLCAwLjEyKX0ubWF0LWVsZXZhdGlvbi16MTJbX25nY29udGVudC0lQ09NUCVde2JveC1zaGFkb3c6MHB4IDdweCA4cHggLTRweCByZ2JhKDAsIDAsIDAsIDAuMiksMHB4IDEycHggMTdweCAycHggcmdiYSgwLCAwLCAwLCAwLjE0KSwwcHggNXB4IDIycHggNHB4IHJnYmEoMCwgMCwgMCwgMC4xMil9Lm1hdC1lbGV2YXRpb24tejEzW19uZ2NvbnRlbnQtJUNPTVAlXXtib3gtc2hhZG93OjBweCA3cHggOHB4IC00cHggcmdiYSgwLCAwLCAwLCAwLjIpLDBweCAxM3B4IDE5cHggMnB4IHJnYmEoMCwgMCwgMCwgMC4xNCksMHB4IDVweCAyNHB4IDRweCByZ2JhKDAsIDAsIDAsIDAuMTIpfS5tYXQtZWxldmF0aW9uLXoxNFtfbmdjb250ZW50LSVDT01QJV17Ym94LXNoYWRvdzowcHggN3B4IDlweCAtNHB4IHJnYmEoMCwgMCwgMCwgMC4yKSwwcHggMTRweCAyMXB4IDJweCByZ2JhKDAsIDAsIDAsIDAuMTQpLDBweCA1cHggMjZweCA0cHggcmdiYSgwLCAwLCAwLCAwLjEyKX0ubWF0LWVsZXZhdGlvbi16MTVbX25nY29udGVudC0lQ09NUCVde2JveC1zaGFkb3c6MHB4IDhweCA5cHggLTVweCByZ2JhKDAsIDAsIDAsIDAuMiksMHB4IDE1cHggMjJweCAycHggcmdiYSgwLCAwLCAwLCAwLjE0KSwwcHggNnB4IDI4cHggNXB4IHJnYmEoMCwgMCwgMCwgMC4xMil9Lm1hdC1lbGV2YXRpb24tejE2W19uZ2NvbnRlbnQtJUNPTVAlXXtib3gtc2hhZG93OjBweCA4cHggMTBweCAtNXB4IHJnYmEoMCwgMCwgMCwgMC4yKSwwcHggMTZweCAyNHB4IDJweCByZ2JhKDAsIDAsIDAsIDAuMTQpLDBweCA2cHggMzBweCA1cHggcmdiYSgwLCAwLCAwLCAwLjEyKX0ubWF0LWVsZXZhdGlvbi16MTdbX25nY29udGVudC0lQ09NUCVde2JveC1zaGFkb3c6MHB4IDhweCAxMXB4IC01cHggcmdiYSgwLCAwLCAwLCAwLjIpLDBweCAxN3B4IDI2cHggMnB4IHJnYmEoMCwgMCwgMCwgMC4xNCksMHB4IDZweCAzMnB4IDVweCByZ2JhKDAsIDAsIDAsIDAuMTIpfS5tYXQtZWxldmF0aW9uLXoxOFtfbmdjb250ZW50LSVDT01QJV17Ym94LXNoYWRvdzowcHggOXB4IDExcHggLTVweCByZ2JhKDAsIDAsIDAsIDAuMiksMHB4IDE4cHggMjhweCAycHggcmdiYSgwLCAwLCAwLCAwLjE0KSwwcHggN3B4IDM0cHggNnB4IHJnYmEoMCwgMCwgMCwgMC4xMil9Lm1hdC1lbGV2YXRpb24tejE5W19uZ2NvbnRlbnQtJUNPTVAlXXtib3gtc2hhZG93OjBweCA5cHggMTJweCAtNnB4IHJnYmEoMCwgMCwgMCwgMC4yKSwwcHggMTlweCAyOXB4IDJweCByZ2JhKDAsIDAsIDAsIDAuMTQpLDBweCA3cHggMzZweCA2cHggcmdiYSgwLCAwLCAwLCAwLjEyKX0ubWF0LWVsZXZhdGlvbi16MjBbX25nY29udGVudC0lQ09NUCVde2JveC1zaGFkb3c6MHB4IDEwcHggMTNweCAtNnB4IHJnYmEoMCwgMCwgMCwgMC4yKSwwcHggMjBweCAzMXB4IDNweCByZ2JhKDAsIDAsIDAsIDAuMTQpLDBweCA4cHggMzhweCA3cHggcmdiYSgwLCAwLCAwLCAwLjEyKX0ubWF0LWVsZXZhdGlvbi16MjFbX25nY29udGVudC0lQ09NUCVde2JveC1zaGFkb3c6MHB4IDEwcHggMTNweCAtNnB4IHJnYmEoMCwgMCwgMCwgMC4yKSwwcHggMjFweCAzM3B4IDNweCByZ2JhKDAsIDAsIDAsIDAuMTQpLDBweCA4cHggNDBweCA3cHggcmdiYSgwLCAwLCAwLCAwLjEyKX0ubWF0LWVsZXZhdGlvbi16MjJbX25nY29udGVudC0lQ09NUCVde2JveC1zaGFkb3c6MHB4IDEwcHggMTRweCAtNnB4IHJnYmEoMCwgMCwgMCwgMC4yKSwwcHggMjJweCAzNXB4IDNweCByZ2JhKDAsIDAsIDAsIDAuMTQpLDBweCA4cHggNDJweCA3cHggcmdiYSgwLCAwLCAwLCAwLjEyKX0ubWF0LWVsZXZhdGlvbi16MjNbX25nY29udGVudC0lQ09NUCVde2JveC1zaGFkb3c6MHB4IDExcHggMTRweCAtN3B4IHJnYmEoMCwgMCwgMCwgMC4yKSwwcHggMjNweCAzNnB4IDNweCByZ2JhKDAsIDAsIDAsIDAuMTQpLDBweCA5cHggNDRweCA4cHggcmdiYSgwLCAwLCAwLCAwLjEyKX0ubWF0LWVsZXZhdGlvbi16MjRbX25nY29udGVudC0lQ09NUCVde2JveC1zaGFkb3c6MHB4IDExcHggMTVweCAtN3B4IHJnYmEoMCwgMCwgMCwgMC4yKSwwcHggMjRweCAzOHB4IDNweCByZ2JhKDAsIDAsIDAsIDAuMTQpLDBweCA5cHggNDZweCA4cHggcmdiYSgwLCAwLCAwLCAwLjEyKX0ubWF0LXRoZW1lLWxvYWRlZC1tYXJrZXJbX25nY29udGVudC0lQ09NUCVde2Rpc3BsYXk6bm9uZX0ubWF0LWF1dG9jb21wbGV0ZS1wYW5lbFtfbmdjb250ZW50LSVDT01QJV17YmFja2dyb3VuZDojZmZmO2NvbG9yOiMyMTIxMjF9Lm1hdC1hdXRvY29tcGxldGUtcGFuZWxbX25nY29udGVudC0lQ09NUCVdOm5vdChbY2xhc3MqPW1hdC1lbGV2YXRpb24tel0pe2JveC1zaGFkb3c6MHB4IDJweCA0cHggLTFweCByZ2JhKDAsIDAsIDAsIDAuMiksMHB4IDRweCA1cHggMHB4IHJnYmEoMCwgMCwgMCwgMC4xNCksMHB4IDFweCAxMHB4IDBweCByZ2JhKDAsIDAsIDAsIDAuMTIpfS5tYXQtYXV0b2NvbXBsZXRlLXBhbmVsW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtb3B0aW9uLm1hdC1zZWxlY3RlZFtfbmdjb250ZW50LSVDT01QJV06bm90KC5tYXQtYWN0aXZlKTpub3QoOmhvdmVyKXtiYWNrZ3JvdW5kOiNmZmZ9Lm1hdC1hdXRvY29tcGxldGUtcGFuZWxbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1vcHRpb24ubWF0LXNlbGVjdGVkW19uZ2NvbnRlbnQtJUNPTVAlXTpub3QoLm1hdC1hY3RpdmUpOm5vdCg6aG92ZXIpOm5vdCgubWF0LW9wdGlvbi1kaXNhYmxlZCl7Y29sb3I6IzIxMjEyMX0ubWF0LWJhZGdlLWNvbnRlbnRbX25nY29udGVudC0lQ09NUCVde2NvbG9yOiNmZmY7YmFja2dyb3VuZDojZjU3YzAwfS5jZGstaGlnaC1jb250cmFzdC1hY3RpdmVbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1iYWRnZS1jb250ZW50W19uZ2NvbnRlbnQtJUNPTVAlXXtvdXRsaW5lOnNvbGlkIDFweDtib3JkZXItcmFkaXVzOjB9Lm1hdC1iYWRnZS1hY2NlbnRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1iYWRnZS1jb250ZW50W19uZ2NvbnRlbnQtJUNPTVAlXXtiYWNrZ3JvdW5kOiNmZjk4MDA7Y29sb3I6I2ZmZn0ubWF0LWJhZGdlLXdhcm5bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1iYWRnZS1jb250ZW50W19uZ2NvbnRlbnQtJUNPTVAlXXtjb2xvcjojZmZmO2JhY2tncm91bmQ6I2Y0NDMzNn0ubWF0LWJhZGdlW19uZ2NvbnRlbnQtJUNPTVAlXXtwb3NpdGlvbjpyZWxhdGl2ZX0ubWF0LWJhZGdlLWhpZGRlbltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWJhZGdlLWNvbnRlbnRbX25nY29udGVudC0lQ09NUCVde2Rpc3BsYXk6bm9uZX0ubWF0LWJhZGdlLWRpc2FibGVkW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtYmFkZ2UtY29udGVudFtfbmdjb250ZW50LSVDT01QJV17YmFja2dyb3VuZDojYjliOWI5O2NvbG9yOiM3NTc1NzV9Lm1hdC1iYWRnZS1jb250ZW50W19uZ2NvbnRlbnQtJUNPTVAlXXtwb3NpdGlvbjphYnNvbHV0ZTt0ZXh0LWFsaWduOmNlbnRlcjtkaXNwbGF5OmlubGluZS1ibG9jaztib3JkZXItcmFkaXVzOjUwJTt0cmFuc2l0aW9uOnRyYW5zZm9ybSAyMDBtcyBlYXNlLWluLW91dDt0cmFuc2Zvcm06c2NhbGUoMC42KTtvdmVyZmxvdzpoaWRkZW47d2hpdGUtc3BhY2U6bm93cmFwO3RleHQtb3ZlcmZsb3c6ZWxsaXBzaXM7cG9pbnRlci1ldmVudHM6bm9uZX0ubmctYW5pbWF0ZS1kaXNhYmxlZFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWJhZGdlLWNvbnRlbnRbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWJhZGdlLWNvbnRlbnQuX21hdC1hbmltYXRpb24tbm9vcGFibGVbX25nY29udGVudC0lQ09NUCVde3RyYW5zaXRpb246bm9uZX0ubWF0LWJhZGdlLWNvbnRlbnQubWF0LWJhZGdlLWFjdGl2ZVtfbmdjb250ZW50LSVDT01QJV17dHJhbnNmb3JtOm5vbmV9Lm1hdC1iYWRnZS1zbWFsbFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWJhZGdlLWNvbnRlbnRbX25nY29udGVudC0lQ09NUCVde3dpZHRoOjE2cHg7aGVpZ2h0OjE2cHg7bGluZS1oZWlnaHQ6MTZweH0ubWF0LWJhZGdlLXNtYWxsLm1hdC1iYWRnZS1hYm92ZVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWJhZGdlLWNvbnRlbnRbX25nY29udGVudC0lQ09NUCVde3RvcDotOHB4fS5tYXQtYmFkZ2Utc21hbGwubWF0LWJhZGdlLWJlbG93W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtYmFkZ2UtY29udGVudFtfbmdjb250ZW50LSVDT01QJV17Ym90dG9tOi04cHh9Lm1hdC1iYWRnZS1zbWFsbC5tYXQtYmFkZ2UtYmVmb3JlW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtYmFkZ2UtY29udGVudFtfbmdjb250ZW50LSVDT01QJV17bGVmdDotMTZweH1bZGlyPXJ0bF1bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1iYWRnZS1zbWFsbC5tYXQtYmFkZ2UtYmVmb3JlW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtYmFkZ2UtY29udGVudFtfbmdjb250ZW50LSVDT01QJV17bGVmdDphdXRvO3JpZ2h0Oi0xNnB4fS5tYXQtYmFkZ2Utc21hbGwubWF0LWJhZGdlLWFmdGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtYmFkZ2UtY29udGVudFtfbmdjb250ZW50LSVDT01QJV17cmlnaHQ6LTE2cHh9W2Rpcj1ydGxdW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtYmFkZ2Utc21hbGwubWF0LWJhZGdlLWFmdGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtYmFkZ2UtY29udGVudFtfbmdjb250ZW50LSVDT01QJV17cmlnaHQ6YXV0bztsZWZ0Oi0xNnB4fS5tYXQtYmFkZ2Utc21hbGwubWF0LWJhZGdlLW92ZXJsYXAubWF0LWJhZGdlLWJlZm9yZVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWJhZGdlLWNvbnRlbnRbX25nY29udGVudC0lQ09NUCVde2xlZnQ6LThweH1bZGlyPXJ0bF1bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1iYWRnZS1zbWFsbC5tYXQtYmFkZ2Utb3ZlcmxhcC5tYXQtYmFkZ2UtYmVmb3JlW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtYmFkZ2UtY29udGVudFtfbmdjb250ZW50LSVDT01QJV17bGVmdDphdXRvO3JpZ2h0Oi04cHh9Lm1hdC1iYWRnZS1zbWFsbC5tYXQtYmFkZ2Utb3ZlcmxhcC5tYXQtYmFkZ2UtYWZ0ZXJbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1iYWRnZS1jb250ZW50W19uZ2NvbnRlbnQtJUNPTVAlXXtyaWdodDotOHB4fVtkaXI9cnRsXVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWJhZGdlLXNtYWxsLm1hdC1iYWRnZS1vdmVybGFwLm1hdC1iYWRnZS1hZnRlcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWJhZGdlLWNvbnRlbnRbX25nY29udGVudC0lQ09NUCVde3JpZ2h0OmF1dG87bGVmdDotOHB4fS5tYXQtYmFkZ2UtbWVkaXVtW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtYmFkZ2UtY29udGVudFtfbmdjb250ZW50LSVDT01QJV17d2lkdGg6MjJweDtoZWlnaHQ6MjJweDtsaW5lLWhlaWdodDoyMnB4fS5tYXQtYmFkZ2UtbWVkaXVtLm1hdC1iYWRnZS1hYm92ZVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWJhZGdlLWNvbnRlbnRbX25nY29udGVudC0lQ09NUCVde3RvcDotMTFweH0ubWF0LWJhZGdlLW1lZGl1bS5tYXQtYmFkZ2UtYmVsb3dbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1iYWRnZS1jb250ZW50W19uZ2NvbnRlbnQtJUNPTVAlXXtib3R0b206LTExcHh9Lm1hdC1iYWRnZS1tZWRpdW0ubWF0LWJhZGdlLWJlZm9yZVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWJhZGdlLWNvbnRlbnRbX25nY29udGVudC0lQ09NUCVde2xlZnQ6LTIycHh9W2Rpcj1ydGxdW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtYmFkZ2UtbWVkaXVtLm1hdC1iYWRnZS1iZWZvcmVbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1iYWRnZS1jb250ZW50W19uZ2NvbnRlbnQtJUNPTVAlXXtsZWZ0OmF1dG87cmlnaHQ6LTIycHh9Lm1hdC1iYWRnZS1tZWRpdW0ubWF0LWJhZGdlLWFmdGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtYmFkZ2UtY29udGVudFtfbmdjb250ZW50LSVDT01QJV17cmlnaHQ6LTIycHh9W2Rpcj1ydGxdW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtYmFkZ2UtbWVkaXVtLm1hdC1iYWRnZS1hZnRlcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWJhZGdlLWNvbnRlbnRbX25nY29udGVudC0lQ09NUCVde3JpZ2h0OmF1dG87bGVmdDotMjJweH0ubWF0LWJhZGdlLW1lZGl1bS5tYXQtYmFkZ2Utb3ZlcmxhcC5tYXQtYmFkZ2UtYmVmb3JlW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtYmFkZ2UtY29udGVudFtfbmdjb250ZW50LSVDT01QJV17bGVmdDotMTFweH1bZGlyPXJ0bF1bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1iYWRnZS1tZWRpdW0ubWF0LWJhZGdlLW92ZXJsYXAubWF0LWJhZGdlLWJlZm9yZVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWJhZGdlLWNvbnRlbnRbX25nY29udGVudC0lQ09NUCVde2xlZnQ6YXV0bztyaWdodDotMTFweH0ubWF0LWJhZGdlLW1lZGl1bS5tYXQtYmFkZ2Utb3ZlcmxhcC5tYXQtYmFkZ2UtYWZ0ZXJbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1iYWRnZS1jb250ZW50W19uZ2NvbnRlbnQtJUNPTVAlXXtyaWdodDotMTFweH1bZGlyPXJ0bF1bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1iYWRnZS1tZWRpdW0ubWF0LWJhZGdlLW92ZXJsYXAubWF0LWJhZGdlLWFmdGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtYmFkZ2UtY29udGVudFtfbmdjb250ZW50LSVDT01QJV17cmlnaHQ6YXV0bztsZWZ0Oi0xMXB4fS5tYXQtYmFkZ2UtbGFyZ2VbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1iYWRnZS1jb250ZW50W19uZ2NvbnRlbnQtJUNPTVAlXXt3aWR0aDoyOHB4O2hlaWdodDoyOHB4O2xpbmUtaGVpZ2h0OjI4cHh9Lm1hdC1iYWRnZS1sYXJnZS5tYXQtYmFkZ2UtYWJvdmVbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1iYWRnZS1jb250ZW50W19uZ2NvbnRlbnQtJUNPTVAlXXt0b3A6LTE0cHh9Lm1hdC1iYWRnZS1sYXJnZS5tYXQtYmFkZ2UtYmVsb3dbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1iYWRnZS1jb250ZW50W19uZ2NvbnRlbnQtJUNPTVAlXXtib3R0b206LTE0cHh9Lm1hdC1iYWRnZS1sYXJnZS5tYXQtYmFkZ2UtYmVmb3JlW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtYmFkZ2UtY29udGVudFtfbmdjb250ZW50LSVDT01QJV17bGVmdDotMjhweH1bZGlyPXJ0bF1bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1iYWRnZS1sYXJnZS5tYXQtYmFkZ2UtYmVmb3JlW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtYmFkZ2UtY29udGVudFtfbmdjb250ZW50LSVDT01QJV17bGVmdDphdXRvO3JpZ2h0Oi0yOHB4fS5tYXQtYmFkZ2UtbGFyZ2UubWF0LWJhZGdlLWFmdGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtYmFkZ2UtY29udGVudFtfbmdjb250ZW50LSVDT01QJV17cmlnaHQ6LTI4cHh9W2Rpcj1ydGxdW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtYmFkZ2UtbGFyZ2UubWF0LWJhZGdlLWFmdGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtYmFkZ2UtY29udGVudFtfbmdjb250ZW50LSVDT01QJV17cmlnaHQ6YXV0bztsZWZ0Oi0yOHB4fS5tYXQtYmFkZ2UtbGFyZ2UubWF0LWJhZGdlLW92ZXJsYXAubWF0LWJhZGdlLWJlZm9yZVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWJhZGdlLWNvbnRlbnRbX25nY29udGVudC0lQ09NUCVde2xlZnQ6LTE0cHh9W2Rpcj1ydGxdW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtYmFkZ2UtbGFyZ2UubWF0LWJhZGdlLW92ZXJsYXAubWF0LWJhZGdlLWJlZm9yZVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWJhZGdlLWNvbnRlbnRbX25nY29udGVudC0lQ09NUCVde2xlZnQ6YXV0bztyaWdodDotMTRweH0ubWF0LWJhZGdlLWxhcmdlLm1hdC1iYWRnZS1vdmVybGFwLm1hdC1iYWRnZS1hZnRlcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWJhZGdlLWNvbnRlbnRbX25nY29udGVudC0lQ09NUCVde3JpZ2h0Oi0xNHB4fVtkaXI9cnRsXVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWJhZGdlLWxhcmdlLm1hdC1iYWRnZS1vdmVybGFwLm1hdC1iYWRnZS1hZnRlcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWJhZGdlLWNvbnRlbnRbX25nY29udGVudC0lQ09NUCVde3JpZ2h0OmF1dG87bGVmdDotMTRweH0ubWF0LWJvdHRvbS1zaGVldC1jb250YWluZXJbX25nY29udGVudC0lQ09NUCVde2JveC1zaGFkb3c6MHB4IDhweCAxMHB4IC01cHggcmdiYSgwLCAwLCAwLCAwLjIpLDBweCAxNnB4IDI0cHggMnB4IHJnYmEoMCwgMCwgMCwgMC4xNCksMHB4IDZweCAzMHB4IDVweCByZ2JhKDAsIDAsIDAsIDAuMTIpO2JhY2tncm91bmQ6I2ZmZjtjb2xvcjojMjEyMTIxfS5tYXQtYnV0dG9uW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1pY29uLWJ1dHRvbltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtc3Ryb2tlZC1idXR0b25bX25nY29udGVudC0lQ09NUCVde2NvbG9yOmluaGVyaXQ7YmFja2dyb3VuZDp0cmFuc3BhcmVudH0ubWF0LWJ1dHRvbi5tYXQtcHJpbWFyeVtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtaWNvbi1idXR0b24ubWF0LXByaW1hcnlbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXN0cm9rZWQtYnV0dG9uLm1hdC1wcmltYXJ5W19uZ2NvbnRlbnQtJUNPTVAlXXtjb2xvcjojZjU3YzAwfS5tYXQtYnV0dG9uLm1hdC1hY2NlbnRbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWljb24tYnV0dG9uLm1hdC1hY2NlbnRbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXN0cm9rZWQtYnV0dG9uLm1hdC1hY2NlbnRbX25nY29udGVudC0lQ09NUCVde2NvbG9yOiNmZjk4MDB9Lm1hdC1idXR0b24ubWF0LXdhcm5bX25nY29udGVudC0lQ09NUCVdLCAubWF0LWljb24tYnV0dG9uLm1hdC13YXJuW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1zdHJva2VkLWJ1dHRvbi5tYXQtd2Fybltfbmdjb250ZW50LSVDT01QJV17Y29sb3I6I2Y0NDMzNn0ubWF0LWJ1dHRvbi5tYXQtcHJpbWFyeS5tYXQtYnV0dG9uLWRpc2FibGVkW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1idXR0b24ubWF0LWFjY2VudC5tYXQtYnV0dG9uLWRpc2FibGVkW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1idXR0b24ubWF0LXdhcm4ubWF0LWJ1dHRvbi1kaXNhYmxlZFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtYnV0dG9uLm1hdC1idXR0b24tZGlzYWJsZWQubWF0LWJ1dHRvbi1kaXNhYmxlZFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtaWNvbi1idXR0b24ubWF0LXByaW1hcnkubWF0LWJ1dHRvbi1kaXNhYmxlZFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtaWNvbi1idXR0b24ubWF0LWFjY2VudC5tYXQtYnV0dG9uLWRpc2FibGVkW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1pY29uLWJ1dHRvbi5tYXQtd2Fybi5tYXQtYnV0dG9uLWRpc2FibGVkW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1pY29uLWJ1dHRvbi5tYXQtYnV0dG9uLWRpc2FibGVkLm1hdC1idXR0b24tZGlzYWJsZWRbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXN0cm9rZWQtYnV0dG9uLm1hdC1wcmltYXJ5Lm1hdC1idXR0b24tZGlzYWJsZWRbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXN0cm9rZWQtYnV0dG9uLm1hdC1hY2NlbnQubWF0LWJ1dHRvbi1kaXNhYmxlZFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtc3Ryb2tlZC1idXR0b24ubWF0LXdhcm4ubWF0LWJ1dHRvbi1kaXNhYmxlZFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtc3Ryb2tlZC1idXR0b24ubWF0LWJ1dHRvbi1kaXNhYmxlZC5tYXQtYnV0dG9uLWRpc2FibGVkW19uZ2NvbnRlbnQtJUNPTVAlXXtjb2xvcjpyZ2JhKDAsMCwwLC4yNil9Lm1hdC1idXR0b24ubWF0LXByaW1hcnlbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1idXR0b24tZm9jdXMtb3ZlcmxheVtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtaWNvbi1idXR0b24ubWF0LXByaW1hcnlbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1idXR0b24tZm9jdXMtb3ZlcmxheVtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtc3Ryb2tlZC1idXR0b24ubWF0LXByaW1hcnlbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1idXR0b24tZm9jdXMtb3ZlcmxheVtfbmdjb250ZW50LSVDT01QJV17YmFja2dyb3VuZC1jb2xvcjojZjU3YzAwfS5tYXQtYnV0dG9uLm1hdC1hY2NlbnRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1idXR0b24tZm9jdXMtb3ZlcmxheVtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtaWNvbi1idXR0b24ubWF0LWFjY2VudFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWJ1dHRvbi1mb2N1cy1vdmVybGF5W19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1zdHJva2VkLWJ1dHRvbi5tYXQtYWNjZW50W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtYnV0dG9uLWZvY3VzLW92ZXJsYXlbX25nY29udGVudC0lQ09NUCVde2JhY2tncm91bmQtY29sb3I6I2ZmOTgwMH0ubWF0LWJ1dHRvbi5tYXQtd2Fybltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWJ1dHRvbi1mb2N1cy1vdmVybGF5W19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1pY29uLWJ1dHRvbi5tYXQtd2Fybltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWJ1dHRvbi1mb2N1cy1vdmVybGF5W19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1zdHJva2VkLWJ1dHRvbi5tYXQtd2Fybltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWJ1dHRvbi1mb2N1cy1vdmVybGF5W19uZ2NvbnRlbnQtJUNPTVAlXXtiYWNrZ3JvdW5kLWNvbG9yOiNmNDQzMzZ9Lm1hdC1idXR0b24ubWF0LWJ1dHRvbi1kaXNhYmxlZFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWJ1dHRvbi1mb2N1cy1vdmVybGF5W19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1pY29uLWJ1dHRvbi5tYXQtYnV0dG9uLWRpc2FibGVkW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtYnV0dG9uLWZvY3VzLW92ZXJsYXlbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXN0cm9rZWQtYnV0dG9uLm1hdC1idXR0b24tZGlzYWJsZWRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1idXR0b24tZm9jdXMtb3ZlcmxheVtfbmdjb250ZW50LSVDT01QJV17YmFja2dyb3VuZC1jb2xvcjp0cmFuc3BhcmVudH0ubWF0LWJ1dHRvbltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXJpcHBsZS1lbGVtZW50W19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1pY29uLWJ1dHRvbltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXJpcHBsZS1lbGVtZW50W19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1zdHJva2VkLWJ1dHRvbltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXJpcHBsZS1lbGVtZW50W19uZ2NvbnRlbnQtJUNPTVAlXXtvcGFjaXR5Oi4xO2JhY2tncm91bmQtY29sb3I6Y3VycmVudENvbG9yfS5tYXQtYnV0dG9uLWZvY3VzLW92ZXJsYXlbX25nY29udGVudC0lQ09NUCVde2JhY2tncm91bmQ6IzAwMH0ubWF0LXN0cm9rZWQtYnV0dG9uW19uZ2NvbnRlbnQtJUNPTVAlXTpub3QoLm1hdC1idXR0b24tZGlzYWJsZWQpe2JvcmRlci1jb2xvcjpyZ2JhKDAsMCwwLC4xMil9Lm1hdC1mbGF0LWJ1dHRvbltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtcmFpc2VkLWJ1dHRvbltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtZmFiW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1taW5pLWZhYltfbmdjb250ZW50LSVDT01QJV17Y29sb3I6IzIxMjEyMTtiYWNrZ3JvdW5kLWNvbG9yOiNmZmZ9Lm1hdC1mbGF0LWJ1dHRvbi5tYXQtcHJpbWFyeVtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtcmFpc2VkLWJ1dHRvbi5tYXQtcHJpbWFyeVtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtZmFiLm1hdC1wcmltYXJ5W19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1taW5pLWZhYi5tYXQtcHJpbWFyeVtfbmdjb250ZW50LSVDT01QJV17Y29sb3I6I2ZmZn0ubWF0LWZsYXQtYnV0dG9uLm1hdC1hY2NlbnRbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXJhaXNlZC1idXR0b24ubWF0LWFjY2VudFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtZmFiLm1hdC1hY2NlbnRbX25nY29udGVudC0lQ09NUCVdLCAubWF0LW1pbmktZmFiLm1hdC1hY2NlbnRbX25nY29udGVudC0lQ09NUCVde2NvbG9yOiNmZmZ9Lm1hdC1mbGF0LWJ1dHRvbi5tYXQtd2Fybltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtcmFpc2VkLWJ1dHRvbi5tYXQtd2Fybltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtZmFiLm1hdC13YXJuW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1taW5pLWZhYi5tYXQtd2Fybltfbmdjb250ZW50LSVDT01QJV17Y29sb3I6I2ZmZn0ubWF0LWZsYXQtYnV0dG9uLm1hdC1wcmltYXJ5Lm1hdC1idXR0b24tZGlzYWJsZWRbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWZsYXQtYnV0dG9uLm1hdC1hY2NlbnQubWF0LWJ1dHRvbi1kaXNhYmxlZFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtZmxhdC1idXR0b24ubWF0LXdhcm4ubWF0LWJ1dHRvbi1kaXNhYmxlZFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtZmxhdC1idXR0b24ubWF0LWJ1dHRvbi1kaXNhYmxlZC5tYXQtYnV0dG9uLWRpc2FibGVkW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1yYWlzZWQtYnV0dG9uLm1hdC1wcmltYXJ5Lm1hdC1idXR0b24tZGlzYWJsZWRbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXJhaXNlZC1idXR0b24ubWF0LWFjY2VudC5tYXQtYnV0dG9uLWRpc2FibGVkW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1yYWlzZWQtYnV0dG9uLm1hdC13YXJuLm1hdC1idXR0b24tZGlzYWJsZWRbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXJhaXNlZC1idXR0b24ubWF0LWJ1dHRvbi1kaXNhYmxlZC5tYXQtYnV0dG9uLWRpc2FibGVkW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1mYWIubWF0LXByaW1hcnkubWF0LWJ1dHRvbi1kaXNhYmxlZFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtZmFiLm1hdC1hY2NlbnQubWF0LWJ1dHRvbi1kaXNhYmxlZFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtZmFiLm1hdC13YXJuLm1hdC1idXR0b24tZGlzYWJsZWRbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWZhYi5tYXQtYnV0dG9uLWRpc2FibGVkLm1hdC1idXR0b24tZGlzYWJsZWRbX25nY29udGVudC0lQ09NUCVdLCAubWF0LW1pbmktZmFiLm1hdC1wcmltYXJ5Lm1hdC1idXR0b24tZGlzYWJsZWRbX25nY29udGVudC0lQ09NUCVdLCAubWF0LW1pbmktZmFiLm1hdC1hY2NlbnQubWF0LWJ1dHRvbi1kaXNhYmxlZFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtbWluaS1mYWIubWF0LXdhcm4ubWF0LWJ1dHRvbi1kaXNhYmxlZFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtbWluaS1mYWIubWF0LWJ1dHRvbi1kaXNhYmxlZC5tYXQtYnV0dG9uLWRpc2FibGVkW19uZ2NvbnRlbnQtJUNPTVAlXXtjb2xvcjpyZ2JhKDAsMCwwLC4yNil9Lm1hdC1mbGF0LWJ1dHRvbi5tYXQtcHJpbWFyeVtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtcmFpc2VkLWJ1dHRvbi5tYXQtcHJpbWFyeVtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtZmFiLm1hdC1wcmltYXJ5W19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1taW5pLWZhYi5tYXQtcHJpbWFyeVtfbmdjb250ZW50LSVDT01QJV17YmFja2dyb3VuZC1jb2xvcjojZjU3YzAwfS5tYXQtZmxhdC1idXR0b24ubWF0LWFjY2VudFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtcmFpc2VkLWJ1dHRvbi5tYXQtYWNjZW50W19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1mYWIubWF0LWFjY2VudFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtbWluaS1mYWIubWF0LWFjY2VudFtfbmdjb250ZW50LSVDT01QJV17YmFja2dyb3VuZC1jb2xvcjojZmY5ODAwfS5tYXQtZmxhdC1idXR0b24ubWF0LXdhcm5bX25nY29udGVudC0lQ09NUCVdLCAubWF0LXJhaXNlZC1idXR0b24ubWF0LXdhcm5bX25nY29udGVudC0lQ09NUCVdLCAubWF0LWZhYi5tYXQtd2Fybltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtbWluaS1mYWIubWF0LXdhcm5bX25nY29udGVudC0lQ09NUCVde2JhY2tncm91bmQtY29sb3I6I2Y0NDMzNn0ubWF0LWZsYXQtYnV0dG9uLm1hdC1wcmltYXJ5Lm1hdC1idXR0b24tZGlzYWJsZWRbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWZsYXQtYnV0dG9uLm1hdC1hY2NlbnQubWF0LWJ1dHRvbi1kaXNhYmxlZFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtZmxhdC1idXR0b24ubWF0LXdhcm4ubWF0LWJ1dHRvbi1kaXNhYmxlZFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtZmxhdC1idXR0b24ubWF0LWJ1dHRvbi1kaXNhYmxlZC5tYXQtYnV0dG9uLWRpc2FibGVkW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1yYWlzZWQtYnV0dG9uLm1hdC1wcmltYXJ5Lm1hdC1idXR0b24tZGlzYWJsZWRbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXJhaXNlZC1idXR0b24ubWF0LWFjY2VudC5tYXQtYnV0dG9uLWRpc2FibGVkW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1yYWlzZWQtYnV0dG9uLm1hdC13YXJuLm1hdC1idXR0b24tZGlzYWJsZWRbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXJhaXNlZC1idXR0b24ubWF0LWJ1dHRvbi1kaXNhYmxlZC5tYXQtYnV0dG9uLWRpc2FibGVkW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1mYWIubWF0LXByaW1hcnkubWF0LWJ1dHRvbi1kaXNhYmxlZFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtZmFiLm1hdC1hY2NlbnQubWF0LWJ1dHRvbi1kaXNhYmxlZFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtZmFiLm1hdC13YXJuLm1hdC1idXR0b24tZGlzYWJsZWRbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWZhYi5tYXQtYnV0dG9uLWRpc2FibGVkLm1hdC1idXR0b24tZGlzYWJsZWRbX25nY29udGVudC0lQ09NUCVdLCAubWF0LW1pbmktZmFiLm1hdC1wcmltYXJ5Lm1hdC1idXR0b24tZGlzYWJsZWRbX25nY29udGVudC0lQ09NUCVdLCAubWF0LW1pbmktZmFiLm1hdC1hY2NlbnQubWF0LWJ1dHRvbi1kaXNhYmxlZFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtbWluaS1mYWIubWF0LXdhcm4ubWF0LWJ1dHRvbi1kaXNhYmxlZFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtbWluaS1mYWIubWF0LWJ1dHRvbi1kaXNhYmxlZC5tYXQtYnV0dG9uLWRpc2FibGVkW19uZ2NvbnRlbnQtJUNPTVAlXXtiYWNrZ3JvdW5kLWNvbG9yOnJnYmEoMCwwLDAsLjEyKX0ubWF0LWZsYXQtYnV0dG9uLm1hdC1wcmltYXJ5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtcmlwcGxlLWVsZW1lbnRbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXJhaXNlZC1idXR0b24ubWF0LXByaW1hcnlbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1yaXBwbGUtZWxlbWVudFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtZmFiLm1hdC1wcmltYXJ5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtcmlwcGxlLWVsZW1lbnRbX25nY29udGVudC0lQ09NUCVdLCAubWF0LW1pbmktZmFiLm1hdC1wcmltYXJ5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtcmlwcGxlLWVsZW1lbnRbX25nY29udGVudC0lQ09NUCVde2JhY2tncm91bmQtY29sb3I6cmdiYSgyNTUsMjU1LDI1NSwuMSl9Lm1hdC1mbGF0LWJ1dHRvbi5tYXQtYWNjZW50W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtcmlwcGxlLWVsZW1lbnRbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXJhaXNlZC1idXR0b24ubWF0LWFjY2VudFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXJpcHBsZS1lbGVtZW50W19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1mYWIubWF0LWFjY2VudFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXJpcHBsZS1lbGVtZW50W19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1taW5pLWZhYi5tYXQtYWNjZW50W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtcmlwcGxlLWVsZW1lbnRbX25nY29udGVudC0lQ09NUCVde2JhY2tncm91bmQtY29sb3I6cmdiYSgyNTUsMjU1LDI1NSwuMSl9Lm1hdC1mbGF0LWJ1dHRvbi5tYXQtd2Fybltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXJpcHBsZS1lbGVtZW50W19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1yYWlzZWQtYnV0dG9uLm1hdC13YXJuW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtcmlwcGxlLWVsZW1lbnRbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWZhYi5tYXQtd2Fybltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXJpcHBsZS1lbGVtZW50W19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1taW5pLWZhYi5tYXQtd2Fybltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXJpcHBsZS1lbGVtZW50W19uZ2NvbnRlbnQtJUNPTVAlXXtiYWNrZ3JvdW5kLWNvbG9yOnJnYmEoMjU1LDI1NSwyNTUsLjEpfS5tYXQtc3Ryb2tlZC1idXR0b25bX25nY29udGVudC0lQ09NUCVdOm5vdChbY2xhc3MqPW1hdC1lbGV2YXRpb24tel0pLCAubWF0LWZsYXQtYnV0dG9uW19uZ2NvbnRlbnQtJUNPTVAlXTpub3QoW2NsYXNzKj1tYXQtZWxldmF0aW9uLXpdKXtib3gtc2hhZG93OjBweCAwcHggMHB4IDBweCByZ2JhKDAsIDAsIDAsIDAuMiksMHB4IDBweCAwcHggMHB4IHJnYmEoMCwgMCwgMCwgMC4xNCksMHB4IDBweCAwcHggMHB4IHJnYmEoMCwgMCwgMCwgMC4xMil9Lm1hdC1yYWlzZWQtYnV0dG9uW19uZ2NvbnRlbnQtJUNPTVAlXTpub3QoW2NsYXNzKj1tYXQtZWxldmF0aW9uLXpdKXtib3gtc2hhZG93OjBweCAzcHggMXB4IC0ycHggcmdiYSgwLCAwLCAwLCAwLjIpLDBweCAycHggMnB4IDBweCByZ2JhKDAsIDAsIDAsIDAuMTQpLDBweCAxcHggNXB4IDBweCByZ2JhKDAsIDAsIDAsIDAuMTIpfS5tYXQtcmFpc2VkLWJ1dHRvbltfbmdjb250ZW50LSVDT01QJV06bm90KC5tYXQtYnV0dG9uLWRpc2FibGVkKTphY3RpdmU6bm90KFtjbGFzcyo9bWF0LWVsZXZhdGlvbi16XSl7Ym94LXNoYWRvdzowcHggNXB4IDVweCAtM3B4IHJnYmEoMCwgMCwgMCwgMC4yKSwwcHggOHB4IDEwcHggMXB4IHJnYmEoMCwgMCwgMCwgMC4xNCksMHB4IDNweCAxNHB4IDJweCByZ2JhKDAsIDAsIDAsIDAuMTIpfS5tYXQtcmFpc2VkLWJ1dHRvbi5tYXQtYnV0dG9uLWRpc2FibGVkW19uZ2NvbnRlbnQtJUNPTVAlXTpub3QoW2NsYXNzKj1tYXQtZWxldmF0aW9uLXpdKXtib3gtc2hhZG93OjBweCAwcHggMHB4IDBweCByZ2JhKDAsIDAsIDAsIDAuMiksMHB4IDBweCAwcHggMHB4IHJnYmEoMCwgMCwgMCwgMC4xNCksMHB4IDBweCAwcHggMHB4IHJnYmEoMCwgMCwgMCwgMC4xMil9Lm1hdC1mYWJbX25nY29udGVudC0lQ09NUCVdOm5vdChbY2xhc3MqPW1hdC1lbGV2YXRpb24tel0pLCAubWF0LW1pbmktZmFiW19uZ2NvbnRlbnQtJUNPTVAlXTpub3QoW2NsYXNzKj1tYXQtZWxldmF0aW9uLXpdKXtib3gtc2hhZG93OjBweCAzcHggNXB4IC0xcHggcmdiYSgwLCAwLCAwLCAwLjIpLDBweCA2cHggMTBweCAwcHggcmdiYSgwLCAwLCAwLCAwLjE0KSwwcHggMXB4IDE4cHggMHB4IHJnYmEoMCwgMCwgMCwgMC4xMil9Lm1hdC1mYWJbX25nY29udGVudC0lQ09NUCVdOm5vdCgubWF0LWJ1dHRvbi1kaXNhYmxlZCk6YWN0aXZlOm5vdChbY2xhc3MqPW1hdC1lbGV2YXRpb24tel0pLCAubWF0LW1pbmktZmFiW19uZ2NvbnRlbnQtJUNPTVAlXTpub3QoLm1hdC1idXR0b24tZGlzYWJsZWQpOmFjdGl2ZTpub3QoW2NsYXNzKj1tYXQtZWxldmF0aW9uLXpdKXtib3gtc2hhZG93OjBweCA3cHggOHB4IC00cHggcmdiYSgwLCAwLCAwLCAwLjIpLDBweCAxMnB4IDE3cHggMnB4IHJnYmEoMCwgMCwgMCwgMC4xNCksMHB4IDVweCAyMnB4IDRweCByZ2JhKDAsIDAsIDAsIDAuMTIpfS5tYXQtZmFiLm1hdC1idXR0b24tZGlzYWJsZWRbX25nY29udGVudC0lQ09NUCVdOm5vdChbY2xhc3MqPW1hdC1lbGV2YXRpb24tel0pLCAubWF0LW1pbmktZmFiLm1hdC1idXR0b24tZGlzYWJsZWRbX25nY29udGVudC0lQ09NUCVdOm5vdChbY2xhc3MqPW1hdC1lbGV2YXRpb24tel0pe2JveC1zaGFkb3c6MHB4IDBweCAwcHggMHB4IHJnYmEoMCwgMCwgMCwgMC4yKSwwcHggMHB4IDBweCAwcHggcmdiYSgwLCAwLCAwLCAwLjE0KSwwcHggMHB4IDBweCAwcHggcmdiYSgwLCAwLCAwLCAwLjEyKX0ubWF0LWJ1dHRvbi10b2dnbGUtc3RhbmRhbG9uZVtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtYnV0dG9uLXRvZ2dsZS1ncm91cFtfbmdjb250ZW50LSVDT01QJV17Ym94LXNoYWRvdzowcHggM3B4IDFweCAtMnB4IHJnYmEoMCwgMCwgMCwgMC4yKSwwcHggMnB4IDJweCAwcHggcmdiYSgwLCAwLCAwLCAwLjE0KSwwcHggMXB4IDVweCAwcHggcmdiYSgwLCAwLCAwLCAwLjEyKX0ubWF0LWJ1dHRvbi10b2dnbGUtc3RhbmRhbG9uZS5tYXQtYnV0dG9uLXRvZ2dsZS1hcHBlYXJhbmNlLXN0YW5kYXJkW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1idXR0b24tdG9nZ2xlLWdyb3VwLWFwcGVhcmFuY2Utc3RhbmRhcmRbX25nY29udGVudC0lQ09NUCVde2JveC1zaGFkb3c6bm9uZX0ubWF0LWJ1dHRvbi10b2dnbGVbX25nY29udGVudC0lQ09NUCVde2NvbG9yOnJnYmEoMCwwLDAsLjM4KX0ubWF0LWJ1dHRvbi10b2dnbGVbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1idXR0b24tdG9nZ2xlLWZvY3VzLW92ZXJsYXlbX25nY29udGVudC0lQ09NUCVde2JhY2tncm91bmQtY29sb3I6cmdiYSgwLDAsMCwuMTIpfS5tYXQtYnV0dG9uLXRvZ2dsZS1hcHBlYXJhbmNlLXN0YW5kYXJkW19uZ2NvbnRlbnQtJUNPTVAlXXtjb2xvcjojMjEyMTIxO2JhY2tncm91bmQ6I2ZmZn0ubWF0LWJ1dHRvbi10b2dnbGUtYXBwZWFyYW5jZS1zdGFuZGFyZFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWJ1dHRvbi10b2dnbGUtZm9jdXMtb3ZlcmxheVtfbmdjb250ZW50LSVDT01QJV17YmFja2dyb3VuZC1jb2xvcjojMDAwfS5tYXQtYnV0dG9uLXRvZ2dsZS1ncm91cC1hcHBlYXJhbmNlLXN0YW5kYXJkW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtYnV0dG9uLXRvZ2dsZVtfbmdjb250ZW50LSVDT01QJV0gKyAubWF0LWJ1dHRvbi10b2dnbGVbX25nY29udGVudC0lQ09NUCVde2JvcmRlci1sZWZ0OnNvbGlkIDFweCByZ2JhKDAsMCwwLC4xMil9W2Rpcj1ydGxdW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtYnV0dG9uLXRvZ2dsZS1ncm91cC1hcHBlYXJhbmNlLXN0YW5kYXJkW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtYnV0dG9uLXRvZ2dsZVtfbmdjb250ZW50LSVDT01QJV0gKyAubWF0LWJ1dHRvbi10b2dnbGVbX25nY29udGVudC0lQ09NUCVde2JvcmRlci1sZWZ0Om5vbmU7Ym9yZGVyLXJpZ2h0OnNvbGlkIDFweCByZ2JhKDAsMCwwLC4xMil9Lm1hdC1idXR0b24tdG9nZ2xlLWdyb3VwLWFwcGVhcmFuY2Utc3RhbmRhcmQubWF0LWJ1dHRvbi10b2dnbGUtdmVydGljYWxbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1idXR0b24tdG9nZ2xlW19uZ2NvbnRlbnQtJUNPTVAlXSArIC5tYXQtYnV0dG9uLXRvZ2dsZVtfbmdjb250ZW50LSVDT01QJV17Ym9yZGVyLWxlZnQ6bm9uZTtib3JkZXItcmlnaHQ6bm9uZTtib3JkZXItdG9wOnNvbGlkIDFweCByZ2JhKDAsMCwwLC4xMil9Lm1hdC1idXR0b24tdG9nZ2xlLWNoZWNrZWRbX25nY29udGVudC0lQ09NUCVde2JhY2tncm91bmQtY29sb3I6I2UwZTBlMDtjb2xvcjojNjE2MTYxfS5tYXQtYnV0dG9uLXRvZ2dsZS1jaGVja2VkLm1hdC1idXR0b24tdG9nZ2xlLWFwcGVhcmFuY2Utc3RhbmRhcmRbX25nY29udGVudC0lQ09NUCVde2NvbG9yOiMyMTIxMjF9Lm1hdC1idXR0b24tdG9nZ2xlLWRpc2FibGVkW19uZ2NvbnRlbnQtJUNPTVAlXXtjb2xvcjpyZ2JhKDAsMCwwLC4yNik7YmFja2dyb3VuZC1jb2xvcjojZWVlfS5tYXQtYnV0dG9uLXRvZ2dsZS1kaXNhYmxlZC5tYXQtYnV0dG9uLXRvZ2dsZS1hcHBlYXJhbmNlLXN0YW5kYXJkW19uZ2NvbnRlbnQtJUNPTVAlXXtiYWNrZ3JvdW5kOiNmZmZ9Lm1hdC1idXR0b24tdG9nZ2xlLWRpc2FibGVkLm1hdC1idXR0b24tdG9nZ2xlLWNoZWNrZWRbX25nY29udGVudC0lQ09NUCVde2JhY2tncm91bmQtY29sb3I6I2JkYmRiZH0ubWF0LWJ1dHRvbi10b2dnbGUtc3RhbmRhbG9uZS5tYXQtYnV0dG9uLXRvZ2dsZS1hcHBlYXJhbmNlLXN0YW5kYXJkW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1idXR0b24tdG9nZ2xlLWdyb3VwLWFwcGVhcmFuY2Utc3RhbmRhcmRbX25nY29udGVudC0lQ09NUCVde2JvcmRlcjpzb2xpZCAxcHggcmdiYSgwLDAsMCwuMTIpfS5tYXQtYnV0dG9uLXRvZ2dsZS1hcHBlYXJhbmNlLXN0YW5kYXJkW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtYnV0dG9uLXRvZ2dsZS1sYWJlbC1jb250ZW50W19uZ2NvbnRlbnQtJUNPTVAlXXtsaW5lLWhlaWdodDo0OHB4fS5tYXQtY2FyZFtfbmdjb250ZW50LSVDT01QJV17YmFja2dyb3VuZDojZmZmO2NvbG9yOiMyMTIxMjF9Lm1hdC1jYXJkW19uZ2NvbnRlbnQtJUNPTVAlXTpub3QoW2NsYXNzKj1tYXQtZWxldmF0aW9uLXpdKXtib3gtc2hhZG93OjBweCAycHggMXB4IC0xcHggcmdiYSgwLCAwLCAwLCAwLjIpLDBweCAxcHggMXB4IDBweCByZ2JhKDAsIDAsIDAsIDAuMTQpLDBweCAxcHggM3B4IDBweCByZ2JhKDAsIDAsIDAsIDAuMTIpfS5tYXQtY2FyZC5tYXQtY2FyZC1mbGF0W19uZ2NvbnRlbnQtJUNPTVAlXTpub3QoW2NsYXNzKj1tYXQtZWxldmF0aW9uLXpdKXtib3gtc2hhZG93OjBweCAwcHggMHB4IDBweCByZ2JhKDAsIDAsIDAsIDAuMiksMHB4IDBweCAwcHggMHB4IHJnYmEoMCwgMCwgMCwgMC4xNCksMHB4IDBweCAwcHggMHB4IHJnYmEoMCwgMCwgMCwgMC4xMil9Lm1hdC1jYXJkLXN1YnRpdGxlW19uZ2NvbnRlbnQtJUNPTVAlXXtjb2xvcjojNjE2MTYxfS5tYXQtY2hlY2tib3gtZnJhbWVbX25nY29udGVudC0lQ09NUCVde2JvcmRlci1jb2xvcjojNjE2MTYxfS5tYXQtY2hlY2tib3gtY2hlY2ttYXJrW19uZ2NvbnRlbnQtJUNPTVAlXXtmaWxsOiNmYWZhZmF9Lm1hdC1jaGVja2JveC1jaGVja21hcmstcGF0aFtfbmdjb250ZW50LSVDT01QJV17c3Ryb2tlOiNmYWZhZmEgIWltcG9ydGFudH0ubWF0LWNoZWNrYm94LW1peGVkbWFya1tfbmdjb250ZW50LSVDT01QJV17YmFja2dyb3VuZC1jb2xvcjojZmFmYWZhfS5tYXQtY2hlY2tib3gtaW5kZXRlcm1pbmF0ZS5tYXQtcHJpbWFyeVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWNoZWNrYm94LWJhY2tncm91bmRbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWNoZWNrYm94LWNoZWNrZWQubWF0LXByaW1hcnlbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1jaGVja2JveC1iYWNrZ3JvdW5kW19uZ2NvbnRlbnQtJUNPTVAlXXtiYWNrZ3JvdW5kLWNvbG9yOiNmNTdjMDB9Lm1hdC1jaGVja2JveC1pbmRldGVybWluYXRlLm1hdC1hY2NlbnRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1jaGVja2JveC1iYWNrZ3JvdW5kW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1jaGVja2JveC1jaGVja2VkLm1hdC1hY2NlbnRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1jaGVja2JveC1iYWNrZ3JvdW5kW19uZ2NvbnRlbnQtJUNPTVAlXXtiYWNrZ3JvdW5kLWNvbG9yOiNmZjk4MDB9Lm1hdC1jaGVja2JveC1pbmRldGVybWluYXRlLm1hdC13YXJuW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtY2hlY2tib3gtYmFja2dyb3VuZFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtY2hlY2tib3gtY2hlY2tlZC5tYXQtd2Fybltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWNoZWNrYm94LWJhY2tncm91bmRbX25nY29udGVudC0lQ09NUCVde2JhY2tncm91bmQtY29sb3I6I2Y0NDMzNn0ubWF0LWNoZWNrYm94LWRpc2FibGVkLm1hdC1jaGVja2JveC1jaGVja2VkW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtY2hlY2tib3gtYmFja2dyb3VuZFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtY2hlY2tib3gtZGlzYWJsZWQubWF0LWNoZWNrYm94LWluZGV0ZXJtaW5hdGVbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1jaGVja2JveC1iYWNrZ3JvdW5kW19uZ2NvbnRlbnQtJUNPTVAlXXtiYWNrZ3JvdW5kLWNvbG9yOiNiMGIwYjB9Lm1hdC1jaGVja2JveC1kaXNhYmxlZFtfbmdjb250ZW50LSVDT01QJV06bm90KC5tYXQtY2hlY2tib3gtY2hlY2tlZCkgICAubWF0LWNoZWNrYm94LWZyYW1lW19uZ2NvbnRlbnQtJUNPTVAlXXtib3JkZXItY29sb3I6I2IwYjBiMH0ubWF0LWNoZWNrYm94LWRpc2FibGVkW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtY2hlY2tib3gtbGFiZWxbX25nY29udGVudC0lQ09NUCVde2NvbG9yOiM2MTYxNjF9Lm1hdC1jaGVja2JveFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXJpcHBsZS1lbGVtZW50W19uZ2NvbnRlbnQtJUNPTVAlXXtiYWNrZ3JvdW5kLWNvbG9yOiMwMDB9Lm1hdC1jaGVja2JveC1jaGVja2VkW19uZ2NvbnRlbnQtJUNPTVAlXTpub3QoLm1hdC1jaGVja2JveC1kaXNhYmxlZCkubWF0LXByaW1hcnkgICAubWF0LXJpcHBsZS1lbGVtZW50W19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1jaGVja2JveFtfbmdjb250ZW50LSVDT01QJV06YWN0aXZlOm5vdCgubWF0LWNoZWNrYm94LWRpc2FibGVkKS5tYXQtcHJpbWFyeSAgIC5tYXQtcmlwcGxlLWVsZW1lbnRbX25nY29udGVudC0lQ09NUCVde2JhY2tncm91bmQ6I2Y1N2MwMH0ubWF0LWNoZWNrYm94LWNoZWNrZWRbX25nY29udGVudC0lQ09NUCVdOm5vdCgubWF0LWNoZWNrYm94LWRpc2FibGVkKS5tYXQtYWNjZW50ICAgLm1hdC1yaXBwbGUtZWxlbWVudFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtY2hlY2tib3hbX25nY29udGVudC0lQ09NUCVdOmFjdGl2ZTpub3QoLm1hdC1jaGVja2JveC1kaXNhYmxlZCkubWF0LWFjY2VudCAgIC5tYXQtcmlwcGxlLWVsZW1lbnRbX25nY29udGVudC0lQ09NUCVde2JhY2tncm91bmQ6I2ZmOTgwMH0ubWF0LWNoZWNrYm94LWNoZWNrZWRbX25nY29udGVudC0lQ09NUCVdOm5vdCgubWF0LWNoZWNrYm94LWRpc2FibGVkKS5tYXQtd2FybiAgIC5tYXQtcmlwcGxlLWVsZW1lbnRbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWNoZWNrYm94W19uZ2NvbnRlbnQtJUNPTVAlXTphY3RpdmU6bm90KC5tYXQtY2hlY2tib3gtZGlzYWJsZWQpLm1hdC13YXJuICAgLm1hdC1yaXBwbGUtZWxlbWVudFtfbmdjb250ZW50LSVDT01QJV17YmFja2dyb3VuZDojZjQ0MzM2fS5tYXQtY2hpcC5tYXQtc3RhbmRhcmQtY2hpcFtfbmdjb250ZW50LSVDT01QJV17YmFja2dyb3VuZC1jb2xvcjojZTBlMGUwO2NvbG9yOiMyMTIxMjF9Lm1hdC1jaGlwLm1hdC1zdGFuZGFyZC1jaGlwW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtY2hpcC1yZW1vdmVbX25nY29udGVudC0lQ09NUCVde2NvbG9yOiMyMTIxMjE7b3BhY2l0eTouNH0ubWF0LWNoaXAubWF0LXN0YW5kYXJkLWNoaXBbX25nY29udGVudC0lQ09NUCVdOm5vdCgubWF0LWNoaXAtZGlzYWJsZWQpOmFjdGl2ZXtib3gtc2hhZG93OjBweCAzcHggM3B4IC0ycHggcmdiYSgwLCAwLCAwLCAwLjIpLDBweCAzcHggNHB4IDBweCByZ2JhKDAsIDAsIDAsIDAuMTQpLDBweCAxcHggOHB4IDBweCByZ2JhKDAsIDAsIDAsIDAuMTIpfS5tYXQtY2hpcC5tYXQtc3RhbmRhcmQtY2hpcFtfbmdjb250ZW50LSVDT01QJV06bm90KC5tYXQtY2hpcC1kaXNhYmxlZCkgICAubWF0LWNoaXAtcmVtb3ZlW19uZ2NvbnRlbnQtJUNPTVAlXTpob3ZlcntvcGFjaXR5Oi41NH0ubWF0LWNoaXAubWF0LXN0YW5kYXJkLWNoaXAubWF0LWNoaXAtZGlzYWJsZWRbX25nY29udGVudC0lQ09NUCVde29wYWNpdHk6LjR9Lm1hdC1jaGlwLm1hdC1zdGFuZGFyZC1jaGlwW19uZ2NvbnRlbnQtJUNPTVAlXTo6YWZ0ZXJ7YmFja2dyb3VuZDojMDAwfS5tYXQtY2hpcC5tYXQtc3RhbmRhcmQtY2hpcC5tYXQtY2hpcC1zZWxlY3RlZC5tYXQtcHJpbWFyeVtfbmdjb250ZW50LSVDT01QJV17YmFja2dyb3VuZC1jb2xvcjojZjU3YzAwO2NvbG9yOiNmZmZ9Lm1hdC1jaGlwLm1hdC1zdGFuZGFyZC1jaGlwLm1hdC1jaGlwLXNlbGVjdGVkLm1hdC1wcmltYXJ5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtY2hpcC1yZW1vdmVbX25nY29udGVudC0lQ09NUCVde2NvbG9yOiNmZmY7b3BhY2l0eTouNH0ubWF0LWNoaXAubWF0LXN0YW5kYXJkLWNoaXAubWF0LWNoaXAtc2VsZWN0ZWQubWF0LXByaW1hcnlbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1yaXBwbGUtZWxlbWVudFtfbmdjb250ZW50LSVDT01QJV17YmFja2dyb3VuZC1jb2xvcjpyZ2JhKDI1NSwyNTUsMjU1LC4xKX0ubWF0LWNoaXAubWF0LXN0YW5kYXJkLWNoaXAubWF0LWNoaXAtc2VsZWN0ZWQubWF0LXdhcm5bX25nY29udGVudC0lQ09NUCVde2JhY2tncm91bmQtY29sb3I6I2Y0NDMzNjtjb2xvcjojZmZmfS5tYXQtY2hpcC5tYXQtc3RhbmRhcmQtY2hpcC5tYXQtY2hpcC1zZWxlY3RlZC5tYXQtd2Fybltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWNoaXAtcmVtb3ZlW19uZ2NvbnRlbnQtJUNPTVAlXXtjb2xvcjojZmZmO29wYWNpdHk6LjR9Lm1hdC1jaGlwLm1hdC1zdGFuZGFyZC1jaGlwLm1hdC1jaGlwLXNlbGVjdGVkLm1hdC13YXJuW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtcmlwcGxlLWVsZW1lbnRbX25nY29udGVudC0lQ09NUCVde2JhY2tncm91bmQtY29sb3I6cmdiYSgyNTUsMjU1LDI1NSwuMSl9Lm1hdC1jaGlwLm1hdC1zdGFuZGFyZC1jaGlwLm1hdC1jaGlwLXNlbGVjdGVkLm1hdC1hY2NlbnRbX25nY29udGVudC0lQ09NUCVde2JhY2tncm91bmQtY29sb3I6I2ZmOTgwMDtjb2xvcjojZmZmfS5tYXQtY2hpcC5tYXQtc3RhbmRhcmQtY2hpcC5tYXQtY2hpcC1zZWxlY3RlZC5tYXQtYWNjZW50W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtY2hpcC1yZW1vdmVbX25nY29udGVudC0lQ09NUCVde2NvbG9yOiNmZmY7b3BhY2l0eTouNH0ubWF0LWNoaXAubWF0LXN0YW5kYXJkLWNoaXAubWF0LWNoaXAtc2VsZWN0ZWQubWF0LWFjY2VudFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXJpcHBsZS1lbGVtZW50W19uZ2NvbnRlbnQtJUNPTVAlXXtiYWNrZ3JvdW5kLWNvbG9yOnJnYmEoMjU1LDI1NSwyNTUsLjEpfS5tYXQtdGFibGVbX25nY29udGVudC0lQ09NUCVde2JhY2tncm91bmQ6I2ZmZn0ubWF0LXRhYmxlW19uZ2NvbnRlbnQtJUNPTVAlXSAgIHRoZWFkW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10YWJsZVtfbmdjb250ZW50LSVDT01QJV0gICB0Ym9keVtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdGFibGVbX25nY29udGVudC0lQ09NUCVdICAgdGZvb3RbX25nY29udGVudC0lQ09NUCVdLCBtYXQtaGVhZGVyLXJvd1tfbmdjb250ZW50LSVDT01QJV0sIG1hdC1yb3dbX25nY29udGVudC0lQ09NUCVdLCBtYXQtZm9vdGVyLXJvd1tfbmdjb250ZW50LSVDT01QJV0sIFttYXQtaGVhZGVyLXJvd11bX25nY29udGVudC0lQ09NUCVdLCBbbWF0LXJvd11bX25nY29udGVudC0lQ09NUCVdLCBbbWF0LWZvb3Rlci1yb3ddW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10YWJsZS1zdGlja3lbX25nY29udGVudC0lQ09NUCVde2JhY2tncm91bmQ6aW5oZXJpdH1tYXQtcm93W19uZ2NvbnRlbnQtJUNPTVAlXSwgbWF0LWhlYWRlci1yb3dbX25nY29udGVudC0lQ09NUCVdLCBtYXQtZm9vdGVyLXJvd1tfbmdjb250ZW50LSVDT01QJV0sIHRoLm1hdC1oZWFkZXItY2VsbFtfbmdjb250ZW50LSVDT01QJV0sIHRkLm1hdC1jZWxsW19uZ2NvbnRlbnQtJUNPTVAlXSwgdGQubWF0LWZvb3Rlci1jZWxsW19uZ2NvbnRlbnQtJUNPTVAlXXtib3JkZXItYm90dG9tLWNvbG9yOnJnYmEoMCwwLDAsLjEyKX0ubWF0LWhlYWRlci1jZWxsW19uZ2NvbnRlbnQtJUNPTVAlXXtjb2xvcjojNjE2MTYxfS5tYXQtY2VsbFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtZm9vdGVyLWNlbGxbX25nY29udGVudC0lQ09NUCVde2NvbG9yOiMyMTIxMjF9Lm1hdC1jYWxlbmRhci1hcnJvd1tfbmdjb250ZW50LSVDT01QJV17Ym9yZGVyLXRvcC1jb2xvcjpyZ2JhKDAsMCwwLC41NCl9Lm1hdC1kYXRlcGlja2VyLXRvZ2dsZVtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtZGF0ZXBpY2tlci1jb250ZW50W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtY2FsZW5kYXItbmV4dC1idXR0b25bX25nY29udGVudC0lQ09NUCVdLCAubWF0LWRhdGVwaWNrZXItY29udGVudFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWNhbGVuZGFyLXByZXZpb3VzLWJ1dHRvbltfbmdjb250ZW50LSVDT01QJV17Y29sb3I6cmdiYSgwLDAsMCwuNTQpfS5tYXQtY2FsZW5kYXItdGFibGUtaGVhZGVyW19uZ2NvbnRlbnQtJUNPTVAlXXtjb2xvcjpyZ2JhKDAsMCwwLC4zOCl9Lm1hdC1jYWxlbmRhci10YWJsZS1oZWFkZXItZGl2aWRlcltfbmdjb250ZW50LSVDT01QJV06OmFmdGVye2JhY2tncm91bmQ6cmdiYSgwLDAsMCwuMTIpfS5tYXQtY2FsZW5kYXItYm9keS1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17Y29sb3I6IzYxNjE2MX0ubWF0LWNhbGVuZGFyLWJvZHktY2VsbC1jb250ZW50W19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1kYXRlLXJhbmdlLWlucHV0LXNlcGFyYXRvcltfbmdjb250ZW50LSVDT01QJV17Y29sb3I6IzIxMjEyMTtib3JkZXItY29sb3I6dHJhbnNwYXJlbnR9Lm1hdC1jYWxlbmRhci1ib2R5LWRpc2FibGVkW19uZ2NvbnRlbnQtJUNPTVAlXSA+IC5tYXQtY2FsZW5kYXItYm9keS1jZWxsLWNvbnRlbnRbX25nY29udGVudC0lQ09NUCVdOm5vdCgubWF0LWNhbGVuZGFyLWJvZHktc2VsZWN0ZWQpOm5vdCgubWF0LWNhbGVuZGFyLWJvZHktY29tcGFyaXNvbi1pZGVudGljYWwpe2NvbG9yOiM3NTc1NzV9Lm1hdC1mb3JtLWZpZWxkLWRpc2FibGVkW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZGF0ZS1yYW5nZS1pbnB1dC1zZXBhcmF0b3JbX25nY29udGVudC0lQ09NUCVde2NvbG9yOiM3NTc1NzV9Lm1hdC1jYWxlbmRhci1ib2R5LWNlbGxbX25nY29udGVudC0lQ09NUCVdOm5vdCgubWF0LWNhbGVuZGFyLWJvZHktZGlzYWJsZWQpOmhvdmVyID4gLm1hdC1jYWxlbmRhci1ib2R5LWNlbGwtY29udGVudFtfbmdjb250ZW50LSVDT01QJV06bm90KC5tYXQtY2FsZW5kYXItYm9keS1zZWxlY3RlZCk6bm90KC5tYXQtY2FsZW5kYXItYm9keS1jb21wYXJpc29uLWlkZW50aWNhbCksIC5jZGsta2V5Ym9hcmQtZm9jdXNlZFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWNhbGVuZGFyLWJvZHktYWN0aXZlW19uZ2NvbnRlbnQtJUNPTVAlXSA+IC5tYXQtY2FsZW5kYXItYm9keS1jZWxsLWNvbnRlbnRbX25nY29udGVudC0lQ09NUCVdOm5vdCgubWF0LWNhbGVuZGFyLWJvZHktc2VsZWN0ZWQpOm5vdCgubWF0LWNhbGVuZGFyLWJvZHktY29tcGFyaXNvbi1pZGVudGljYWwpLCAuY2RrLXByb2dyYW0tZm9jdXNlZFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWNhbGVuZGFyLWJvZHktYWN0aXZlW19uZ2NvbnRlbnQtJUNPTVAlXSA+IC5tYXQtY2FsZW5kYXItYm9keS1jZWxsLWNvbnRlbnRbX25nY29udGVudC0lQ09NUCVdOm5vdCgubWF0LWNhbGVuZGFyLWJvZHktc2VsZWN0ZWQpOm5vdCgubWF0LWNhbGVuZGFyLWJvZHktY29tcGFyaXNvbi1pZGVudGljYWwpe2JhY2tncm91bmQtY29sb3I6cmdiYSgwLDAsMCwuMDQpfS5tYXQtY2FsZW5kYXItYm9keS1pbi1wcmV2aWV3W19uZ2NvbnRlbnQtJUNPTVAlXXtjb2xvcjpyZ2JhKDAsMCwwLC4yNCl9Lm1hdC1jYWxlbmRhci1ib2R5LXRvZGF5W19uZ2NvbnRlbnQtJUNPTVAlXTpub3QoLm1hdC1jYWxlbmRhci1ib2R5LXNlbGVjdGVkKTpub3QoLm1hdC1jYWxlbmRhci1ib2R5LWNvbXBhcmlzb24taWRlbnRpY2FsKXtib3JkZXItY29sb3I6cmdiYSgwLDAsMCwuMzgpfS5tYXQtY2FsZW5kYXItYm9keS1kaXNhYmxlZFtfbmdjb250ZW50LSVDT01QJV0gPiAubWF0LWNhbGVuZGFyLWJvZHktdG9kYXlbX25nY29udGVudC0lQ09NUCVdOm5vdCgubWF0LWNhbGVuZGFyLWJvZHktc2VsZWN0ZWQpOm5vdCgubWF0LWNhbGVuZGFyLWJvZHktY29tcGFyaXNvbi1pZGVudGljYWwpe2JvcmRlci1jb2xvcjpyZ2JhKDAsMCwwLC4xOCl9Lm1hdC1jYWxlbmRhci1ib2R5LWluLXJhbmdlW19uZ2NvbnRlbnQtJUNPTVAlXTo6YmVmb3Jle2JhY2tncm91bmQ6cmdiYSgyNDUsMTI0LDAsLjIpfS5tYXQtY2FsZW5kYXItYm9keS1jb21wYXJpc29uLWlkZW50aWNhbFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtY2FsZW5kYXItYm9keS1pbi1jb21wYXJpc29uLXJhbmdlW19uZ2NvbnRlbnQtJUNPTVAlXTo6YmVmb3Jle2JhY2tncm91bmQ6cmdiYSgyNDksMTcxLDAsLjIpfS5tYXQtY2FsZW5kYXItYm9keS1jb21wYXJpc29uLWJyaWRnZS1zdGFydFtfbmdjb250ZW50LSVDT01QJV06OmJlZm9yZSwgW2Rpcj1ydGxdW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtY2FsZW5kYXItYm9keS1jb21wYXJpc29uLWJyaWRnZS1lbmRbX25nY29udGVudC0lQ09NUCVdOjpiZWZvcmV7YmFja2dyb3VuZDpsaW5lYXItZ3JhZGllbnQodG8gcmlnaHQsIHJnYmEoMjQ1LCAxMjQsIDAsIDAuMikgNTAlLCByZ2JhKDI0OSwgMTcxLCAwLCAwLjIpIDUwJSl9Lm1hdC1jYWxlbmRhci1ib2R5LWNvbXBhcmlzb24tYnJpZGdlLWVuZFtfbmdjb250ZW50LSVDT01QJV06OmJlZm9yZSwgW2Rpcj1ydGxdW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtY2FsZW5kYXItYm9keS1jb21wYXJpc29uLWJyaWRnZS1zdGFydFtfbmdjb250ZW50LSVDT01QJV06OmJlZm9yZXtiYWNrZ3JvdW5kOmxpbmVhci1ncmFkaWVudCh0byBsZWZ0LCByZ2JhKDI0NSwgMTI0LCAwLCAwLjIpIDUwJSwgcmdiYSgyNDksIDE3MSwgMCwgMC4yKSA1MCUpfS5tYXQtY2FsZW5kYXItYm9keS1pbi1yYW5nZVtfbmdjb250ZW50LSVDT01QJV0gPiAubWF0LWNhbGVuZGFyLWJvZHktY29tcGFyaXNvbi1pZGVudGljYWxbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWNhbGVuZGFyLWJvZHktaW4tY29tcGFyaXNvbi1yYW5nZS5tYXQtY2FsZW5kYXItYm9keS1pbi1yYW5nZVtfbmdjb250ZW50LSVDT01QJV06OmFmdGVye2JhY2tncm91bmQ6I2E4ZGFiNX0ubWF0LWNhbGVuZGFyLWJvZHktY29tcGFyaXNvbi1pZGVudGljYWwubWF0LWNhbGVuZGFyLWJvZHktc2VsZWN0ZWRbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWNhbGVuZGFyLWJvZHktaW4tY29tcGFyaXNvbi1yYW5nZVtfbmdjb250ZW50LSVDT01QJV0gPiAubWF0LWNhbGVuZGFyLWJvZHktc2VsZWN0ZWRbX25nY29udGVudC0lQ09NUCVde2JhY2tncm91bmQ6IzQ2YTM1ZX0ubWF0LWNhbGVuZGFyLWJvZHktc2VsZWN0ZWRbX25nY29udGVudC0lQ09NUCVde2JhY2tncm91bmQtY29sb3I6I2Y1N2MwMDtjb2xvcjojZmZmfS5tYXQtY2FsZW5kYXItYm9keS1kaXNhYmxlZFtfbmdjb250ZW50LSVDT01QJV0gPiAubWF0LWNhbGVuZGFyLWJvZHktc2VsZWN0ZWRbX25nY29udGVudC0lQ09NUCVde2JhY2tncm91bmQtY29sb3I6cmdiYSgyNDUsMTI0LDAsLjQpfS5tYXQtY2FsZW5kYXItYm9keS10b2RheS5tYXQtY2FsZW5kYXItYm9keS1zZWxlY3RlZFtfbmdjb250ZW50LSVDT01QJV17Ym94LXNoYWRvdzppbnNldCAwIDAgMCAxcHggI2ZmZn0ubWF0LWRhdGVwaWNrZXItY29udGVudFtfbmdjb250ZW50LSVDT01QJV17Ym94LXNoYWRvdzowcHggMnB4IDRweCAtMXB4IHJnYmEoMCwgMCwgMCwgMC4yKSwwcHggNHB4IDVweCAwcHggcmdiYSgwLCAwLCAwLCAwLjE0KSwwcHggMXB4IDEwcHggMHB4IHJnYmEoMCwgMCwgMCwgMC4xMik7YmFja2dyb3VuZC1jb2xvcjojZmZmO2NvbG9yOiMyMTIxMjF9Lm1hdC1kYXRlcGlja2VyLWNvbnRlbnQubWF0LWFjY2VudFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWNhbGVuZGFyLWJvZHktaW4tcmFuZ2VbX25nY29udGVudC0lQ09NUCVdOjpiZWZvcmV7YmFja2dyb3VuZDpyZ2JhKDI1NSwxNTIsMCwuMil9Lm1hdC1kYXRlcGlja2VyLWNvbnRlbnQubWF0LWFjY2VudFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWNhbGVuZGFyLWJvZHktY29tcGFyaXNvbi1pZGVudGljYWxbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWRhdGVwaWNrZXItY29udGVudC5tYXQtYWNjZW50W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtY2FsZW5kYXItYm9keS1pbi1jb21wYXJpc29uLXJhbmdlW19uZ2NvbnRlbnQtJUNPTVAlXTo6YmVmb3Jle2JhY2tncm91bmQ6cmdiYSgyNDksMTcxLDAsLjIpfS5tYXQtZGF0ZXBpY2tlci1jb250ZW50Lm1hdC1hY2NlbnRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1jYWxlbmRhci1ib2R5LWNvbXBhcmlzb24tYnJpZGdlLXN0YXJ0W19uZ2NvbnRlbnQtJUNPTVAlXTo6YmVmb3JlLCAubWF0LWRhdGVwaWNrZXItY29udGVudC5tYXQtYWNjZW50W19uZ2NvbnRlbnQtJUNPTVAlXSAgIFtkaXI9cnRsXVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWNhbGVuZGFyLWJvZHktY29tcGFyaXNvbi1icmlkZ2UtZW5kW19uZ2NvbnRlbnQtJUNPTVAlXTo6YmVmb3Jle2JhY2tncm91bmQ6bGluZWFyLWdyYWRpZW50KHRvIHJpZ2h0LCByZ2JhKDI1NSwgMTUyLCAwLCAwLjIpIDUwJSwgcmdiYSgyNDksIDE3MSwgMCwgMC4yKSA1MCUpfS5tYXQtZGF0ZXBpY2tlci1jb250ZW50Lm1hdC1hY2NlbnRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1jYWxlbmRhci1ib2R5LWNvbXBhcmlzb24tYnJpZGdlLWVuZFtfbmdjb250ZW50LSVDT01QJV06OmJlZm9yZSwgLm1hdC1kYXRlcGlja2VyLWNvbnRlbnQubWF0LWFjY2VudFtfbmdjb250ZW50LSVDT01QJV0gICBbZGlyPXJ0bF1bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1jYWxlbmRhci1ib2R5LWNvbXBhcmlzb24tYnJpZGdlLXN0YXJ0W19uZ2NvbnRlbnQtJUNPTVAlXTo6YmVmb3Jle2JhY2tncm91bmQ6bGluZWFyLWdyYWRpZW50KHRvIGxlZnQsIHJnYmEoMjU1LCAxNTIsIDAsIDAuMikgNTAlLCByZ2JhKDI0OSwgMTcxLCAwLCAwLjIpIDUwJSl9Lm1hdC1kYXRlcGlja2VyLWNvbnRlbnQubWF0LWFjY2VudFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWNhbGVuZGFyLWJvZHktaW4tcmFuZ2VbX25nY29udGVudC0lQ09NUCVdID4gLm1hdC1jYWxlbmRhci1ib2R5LWNvbXBhcmlzb24taWRlbnRpY2FsW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1kYXRlcGlja2VyLWNvbnRlbnQubWF0LWFjY2VudFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWNhbGVuZGFyLWJvZHktaW4tY29tcGFyaXNvbi1yYW5nZS5tYXQtY2FsZW5kYXItYm9keS1pbi1yYW5nZVtfbmdjb250ZW50LSVDT01QJV06OmFmdGVye2JhY2tncm91bmQ6I2E4ZGFiNX0ubWF0LWRhdGVwaWNrZXItY29udGVudC5tYXQtYWNjZW50W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtY2FsZW5kYXItYm9keS1jb21wYXJpc29uLWlkZW50aWNhbC5tYXQtY2FsZW5kYXItYm9keS1zZWxlY3RlZFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtZGF0ZXBpY2tlci1jb250ZW50Lm1hdC1hY2NlbnRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1jYWxlbmRhci1ib2R5LWluLWNvbXBhcmlzb24tcmFuZ2VbX25nY29udGVudC0lQ09NUCVdID4gLm1hdC1jYWxlbmRhci1ib2R5LXNlbGVjdGVkW19uZ2NvbnRlbnQtJUNPTVAlXXtiYWNrZ3JvdW5kOiM0NmEzNWV9Lm1hdC1kYXRlcGlja2VyLWNvbnRlbnQubWF0LWFjY2VudFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWNhbGVuZGFyLWJvZHktc2VsZWN0ZWRbX25nY29udGVudC0lQ09NUCVde2JhY2tncm91bmQtY29sb3I6I2ZmOTgwMDtjb2xvcjojZmZmfS5tYXQtZGF0ZXBpY2tlci1jb250ZW50Lm1hdC1hY2NlbnRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1jYWxlbmRhci1ib2R5LWRpc2FibGVkW19uZ2NvbnRlbnQtJUNPTVAlXSA+IC5tYXQtY2FsZW5kYXItYm9keS1zZWxlY3RlZFtfbmdjb250ZW50LSVDT01QJV17YmFja2dyb3VuZC1jb2xvcjpyZ2JhKDI1NSwxNTIsMCwuNCl9Lm1hdC1kYXRlcGlja2VyLWNvbnRlbnQubWF0LWFjY2VudFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWNhbGVuZGFyLWJvZHktdG9kYXkubWF0LWNhbGVuZGFyLWJvZHktc2VsZWN0ZWRbX25nY29udGVudC0lQ09NUCVde2JveC1zaGFkb3c6aW5zZXQgMCAwIDAgMXB4ICNmZmZ9Lm1hdC1kYXRlcGlja2VyLWNvbnRlbnQubWF0LXdhcm5bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1jYWxlbmRhci1ib2R5LWluLXJhbmdlW19uZ2NvbnRlbnQtJUNPTVAlXTo6YmVmb3Jle2JhY2tncm91bmQ6cmdiYSgyNDQsNjcsNTQsLjIpfS5tYXQtZGF0ZXBpY2tlci1jb250ZW50Lm1hdC13YXJuW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtY2FsZW5kYXItYm9keS1jb21wYXJpc29uLWlkZW50aWNhbFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtZGF0ZXBpY2tlci1jb250ZW50Lm1hdC13YXJuW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtY2FsZW5kYXItYm9keS1pbi1jb21wYXJpc29uLXJhbmdlW19uZ2NvbnRlbnQtJUNPTVAlXTo6YmVmb3Jle2JhY2tncm91bmQ6cmdiYSgyNDksMTcxLDAsLjIpfS5tYXQtZGF0ZXBpY2tlci1jb250ZW50Lm1hdC13YXJuW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtY2FsZW5kYXItYm9keS1jb21wYXJpc29uLWJyaWRnZS1zdGFydFtfbmdjb250ZW50LSVDT01QJV06OmJlZm9yZSwgLm1hdC1kYXRlcGlja2VyLWNvbnRlbnQubWF0LXdhcm5bX25nY29udGVudC0lQ09NUCVdICAgW2Rpcj1ydGxdW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtY2FsZW5kYXItYm9keS1jb21wYXJpc29uLWJyaWRnZS1lbmRbX25nY29udGVudC0lQ09NUCVdOjpiZWZvcmV7YmFja2dyb3VuZDpsaW5lYXItZ3JhZGllbnQodG8gcmlnaHQsIHJnYmEoMjQ0LCA2NywgNTQsIDAuMikgNTAlLCByZ2JhKDI0OSwgMTcxLCAwLCAwLjIpIDUwJSl9Lm1hdC1kYXRlcGlja2VyLWNvbnRlbnQubWF0LXdhcm5bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1jYWxlbmRhci1ib2R5LWNvbXBhcmlzb24tYnJpZGdlLWVuZFtfbmdjb250ZW50LSVDT01QJV06OmJlZm9yZSwgLm1hdC1kYXRlcGlja2VyLWNvbnRlbnQubWF0LXdhcm5bX25nY29udGVudC0lQ09NUCVdICAgW2Rpcj1ydGxdW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtY2FsZW5kYXItYm9keS1jb21wYXJpc29uLWJyaWRnZS1zdGFydFtfbmdjb250ZW50LSVDT01QJV06OmJlZm9yZXtiYWNrZ3JvdW5kOmxpbmVhci1ncmFkaWVudCh0byBsZWZ0LCByZ2JhKDI0NCwgNjcsIDU0LCAwLjIpIDUwJSwgcmdiYSgyNDksIDE3MSwgMCwgMC4yKSA1MCUpfS5tYXQtZGF0ZXBpY2tlci1jb250ZW50Lm1hdC13YXJuW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtY2FsZW5kYXItYm9keS1pbi1yYW5nZVtfbmdjb250ZW50LSVDT01QJV0gPiAubWF0LWNhbGVuZGFyLWJvZHktY29tcGFyaXNvbi1pZGVudGljYWxbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWRhdGVwaWNrZXItY29udGVudC5tYXQtd2Fybltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWNhbGVuZGFyLWJvZHktaW4tY29tcGFyaXNvbi1yYW5nZS5tYXQtY2FsZW5kYXItYm9keS1pbi1yYW5nZVtfbmdjb250ZW50LSVDT01QJV06OmFmdGVye2JhY2tncm91bmQ6I2E4ZGFiNX0ubWF0LWRhdGVwaWNrZXItY29udGVudC5tYXQtd2Fybltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWNhbGVuZGFyLWJvZHktY29tcGFyaXNvbi1pZGVudGljYWwubWF0LWNhbGVuZGFyLWJvZHktc2VsZWN0ZWRbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWRhdGVwaWNrZXItY29udGVudC5tYXQtd2Fybltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWNhbGVuZGFyLWJvZHktaW4tY29tcGFyaXNvbi1yYW5nZVtfbmdjb250ZW50LSVDT01QJV0gPiAubWF0LWNhbGVuZGFyLWJvZHktc2VsZWN0ZWRbX25nY29udGVudC0lQ09NUCVde2JhY2tncm91bmQ6IzQ2YTM1ZX0ubWF0LWRhdGVwaWNrZXItY29udGVudC5tYXQtd2Fybltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWNhbGVuZGFyLWJvZHktc2VsZWN0ZWRbX25nY29udGVudC0lQ09NUCVde2JhY2tncm91bmQtY29sb3I6I2Y0NDMzNjtjb2xvcjojZmZmfS5tYXQtZGF0ZXBpY2tlci1jb250ZW50Lm1hdC13YXJuW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtY2FsZW5kYXItYm9keS1kaXNhYmxlZFtfbmdjb250ZW50LSVDT01QJV0gPiAubWF0LWNhbGVuZGFyLWJvZHktc2VsZWN0ZWRbX25nY29udGVudC0lQ09NUCVde2JhY2tncm91bmQtY29sb3I6cmdiYSgyNDQsNjcsNTQsLjQpfS5tYXQtZGF0ZXBpY2tlci1jb250ZW50Lm1hdC13YXJuW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtY2FsZW5kYXItYm9keS10b2RheS5tYXQtY2FsZW5kYXItYm9keS1zZWxlY3RlZFtfbmdjb250ZW50LSVDT01QJV17Ym94LXNoYWRvdzppbnNldCAwIDAgMCAxcHggI2ZmZn0ubWF0LWRhdGVwaWNrZXItY29udGVudC10b3VjaFtfbmdjb250ZW50LSVDT01QJV17Ym94LXNoYWRvdzowcHggMHB4IDBweCAwcHggcmdiYSgwLCAwLCAwLCAwLjIpLDBweCAwcHggMHB4IDBweCByZ2JhKDAsIDAsIDAsIDAuMTQpLDBweCAwcHggMHB4IDBweCByZ2JhKDAsIDAsIDAsIDAuMTIpfS5tYXQtZGF0ZXBpY2tlci10b2dnbGUtYWN0aXZlW19uZ2NvbnRlbnQtJUNPTVAlXXtjb2xvcjojZjU3YzAwfS5tYXQtZGF0ZXBpY2tlci10b2dnbGUtYWN0aXZlLm1hdC1hY2NlbnRbX25nY29udGVudC0lQ09NUCVde2NvbG9yOiNmZjk4MDB9Lm1hdC1kYXRlcGlja2VyLXRvZ2dsZS1hY3RpdmUubWF0LXdhcm5bX25nY29udGVudC0lQ09NUCVde2NvbG9yOiNmNDQzMzZ9Lm1hdC1kYXRlLXJhbmdlLWlucHV0LWlubmVyW2Rpc2FibGVkXVtfbmdjb250ZW50LSVDT01QJV17Y29sb3I6Izc1NzU3NX0ubWF0LWRpYWxvZy1jb250YWluZXJbX25nY29udGVudC0lQ09NUCVde2JveC1zaGFkb3c6MHB4IDExcHggMTVweCAtN3B4IHJnYmEoMCwgMCwgMCwgMC4yKSwwcHggMjRweCAzOHB4IDNweCByZ2JhKDAsIDAsIDAsIDAuMTQpLDBweCA5cHggNDZweCA4cHggcmdiYSgwLCAwLCAwLCAwLjEyKTtiYWNrZ3JvdW5kOiNmZmY7Y29sb3I6IzIxMjEyMX0ubWF0LWRpdmlkZXJbX25nY29udGVudC0lQ09NUCVde2JvcmRlci10b3AtY29sb3I6cmdiYSgwLDAsMCwuMTIpfS5tYXQtZGl2aWRlci12ZXJ0aWNhbFtfbmdjb250ZW50LSVDT01QJV17Ym9yZGVyLXJpZ2h0LWNvbG9yOnJnYmEoMCwwLDAsLjEyKX0ubWF0LWV4cGFuc2lvbi1wYW5lbFtfbmdjb250ZW50LSVDT01QJV17YmFja2dyb3VuZDojZmZmO2NvbG9yOiMyMTIxMjF9Lm1hdC1leHBhbnNpb24tcGFuZWxbX25nY29udGVudC0lQ09NUCVdOm5vdChbY2xhc3MqPW1hdC1lbGV2YXRpb24tel0pe2JveC1zaGFkb3c6MHB4IDNweCAxcHggLTJweCByZ2JhKDAsIDAsIDAsIDAuMiksMHB4IDJweCAycHggMHB4IHJnYmEoMCwgMCwgMCwgMC4xNCksMHB4IDFweCA1cHggMHB4IHJnYmEoMCwgMCwgMCwgMC4xMil9Lm1hdC1hY3Rpb24tcm93W19uZ2NvbnRlbnQtJUNPTVAlXXtib3JkZXItdG9wLWNvbG9yOnJnYmEoMCwwLDAsLjEyKX0ubWF0LWV4cGFuc2lvbi1wYW5lbFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWV4cGFuc2lvbi1wYW5lbC1oZWFkZXIuY2RrLWtleWJvYXJkLWZvY3VzZWRbX25nY29udGVudC0lQ09NUCVdOm5vdChbYXJpYS1kaXNhYmxlZD10cnVlXSksIC5tYXQtZXhwYW5zaW9uLXBhbmVsW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZXhwYW5zaW9uLXBhbmVsLWhlYWRlci5jZGstcHJvZ3JhbS1mb2N1c2VkW19uZ2NvbnRlbnQtJUNPTVAlXTpub3QoW2FyaWEtZGlzYWJsZWQ9dHJ1ZV0pLCAubWF0LWV4cGFuc2lvbi1wYW5lbFtfbmdjb250ZW50LSVDT01QJV06bm90KC5tYXQtZXhwYW5kZWQpICAgLm1hdC1leHBhbnNpb24tcGFuZWwtaGVhZGVyW19uZ2NvbnRlbnQtJUNPTVAlXTpob3Zlcjpub3QoW2FyaWEtZGlzYWJsZWQ9dHJ1ZV0pe2JhY2tncm91bmQ6cmdiYSgwLDAsMCwuMDQpfUBtZWRpYShob3Zlcjogbm9uZSl7Lm1hdC1leHBhbnNpb24tcGFuZWxbX25nY29udGVudC0lQ09NUCVdOm5vdCgubWF0LWV4cGFuZGVkKTpub3QoW2FyaWEtZGlzYWJsZWQ9dHJ1ZV0pICAgLm1hdC1leHBhbnNpb24tcGFuZWwtaGVhZGVyW19uZ2NvbnRlbnQtJUNPTVAlXTpob3ZlcntiYWNrZ3JvdW5kOiNmZmZ9fS5tYXQtZXhwYW5zaW9uLXBhbmVsLWhlYWRlci10aXRsZVtfbmdjb250ZW50LSVDT01QJV17Y29sb3I6IzIxMjEyMX0ubWF0LWV4cGFuc2lvbi1wYW5lbC1oZWFkZXItZGVzY3JpcHRpb25bX25nY29udGVudC0lQ09NUCVdLCAubWF0LWV4cGFuc2lvbi1pbmRpY2F0b3JbX25nY29udGVudC0lQ09NUCVdOjphZnRlcntjb2xvcjojNjE2MTYxfS5tYXQtZXhwYW5zaW9uLXBhbmVsLWhlYWRlclthcmlhLWRpc2FibGVkPXRydWVdW19uZ2NvbnRlbnQtJUNPTVAlXXtjb2xvcjpyZ2JhKDAsMCwwLC4yNil9Lm1hdC1leHBhbnNpb24tcGFuZWwtaGVhZGVyW2FyaWEtZGlzYWJsZWQ9dHJ1ZV1bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1leHBhbnNpb24tcGFuZWwtaGVhZGVyLXRpdGxlW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1leHBhbnNpb24tcGFuZWwtaGVhZGVyW2FyaWEtZGlzYWJsZWQ9dHJ1ZV1bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1leHBhbnNpb24tcGFuZWwtaGVhZGVyLWRlc2NyaXB0aW9uW19uZ2NvbnRlbnQtJUNPTVAlXXtjb2xvcjppbmhlcml0fS5tYXQtZXhwYW5zaW9uLXBhbmVsLWhlYWRlcltfbmdjb250ZW50LSVDT01QJV17aGVpZ2h0OjQ4cHh9Lm1hdC1leHBhbnNpb24tcGFuZWwtaGVhZGVyLm1hdC1leHBhbmRlZFtfbmdjb250ZW50LSVDT01QJV17aGVpZ2h0OjY0cHh9Lm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXtjb2xvcjpyZ2JhKDk3LDk3LDk3LC42KX0ubWF0LWhpbnRbX25nY29udGVudC0lQ09NUCVde2NvbG9yOnJnYmEoOTcsOTcsOTcsLjYpfS5tYXQtZm9ybS1maWVsZC5tYXQtZm9jdXNlZFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVde2NvbG9yOiNmNTdjMDB9Lm1hdC1mb3JtLWZpZWxkLm1hdC1mb2N1c2VkW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbC5tYXQtYWNjZW50W19uZ2NvbnRlbnQtJUNPTVAlXXtjb2xvcjojZmY5ODAwfS5tYXQtZm9ybS1maWVsZC5tYXQtZm9jdXNlZFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWwubWF0LXdhcm5bX25nY29udGVudC0lQ09NUCVde2NvbG9yOiNmNDQzMzZ9Lm1hdC1mb2N1c2VkW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1yZXF1aXJlZC1tYXJrZXJbX25nY29udGVudC0lQ09NUCVde2NvbG9yOiNmZjk4MDB9Lm1hdC1mb3JtLWZpZWxkLXJpcHBsZVtfbmdjb250ZW50LSVDT01QJV17YmFja2dyb3VuZC1jb2xvcjpyZ2JhKDAsMCwwLC44Nyl9Lm1hdC1mb3JtLWZpZWxkLm1hdC1mb2N1c2VkW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1yaXBwbGVbX25nY29udGVudC0lQ09NUCVde2JhY2tncm91bmQtY29sb3I6I2Y1N2MwMH0ubWF0LWZvcm0tZmllbGQubWF0LWZvY3VzZWRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLXJpcHBsZS5tYXQtYWNjZW50W19uZ2NvbnRlbnQtJUNPTVAlXXtiYWNrZ3JvdW5kLWNvbG9yOiNmZjk4MDB9Lm1hdC1mb3JtLWZpZWxkLm1hdC1mb2N1c2VkW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1yaXBwbGUubWF0LXdhcm5bX25nY29udGVudC0lQ09NUCVde2JhY2tncm91bmQtY29sb3I6I2Y0NDMzNn0ubWF0LWZvcm0tZmllbGQtdHlwZS1tYXQtbmF0aXZlLXNlbGVjdC5tYXQtZm9jdXNlZFtfbmdjb250ZW50LSVDT01QJV06bm90KC5tYXQtZm9ybS1maWVsZC1pbnZhbGlkKSAgIC5tYXQtZm9ybS1maWVsZC1pbmZpeFtfbmdjb250ZW50LSVDT01QJV06OmFmdGVye2NvbG9yOiNmNTdjMDB9Lm1hdC1mb3JtLWZpZWxkLXR5cGUtbWF0LW5hdGl2ZS1zZWxlY3QubWF0LWZvY3VzZWRbX25nY29udGVudC0lQ09NUCVdOm5vdCgubWF0LWZvcm0tZmllbGQtaW52YWxpZCkubWF0LWFjY2VudCAgIC5tYXQtZm9ybS1maWVsZC1pbmZpeFtfbmdjb250ZW50LSVDT01QJV06OmFmdGVye2NvbG9yOiNmZjk4MDB9Lm1hdC1mb3JtLWZpZWxkLXR5cGUtbWF0LW5hdGl2ZS1zZWxlY3QubWF0LWZvY3VzZWRbX25nY29udGVudC0lQ09NUCVdOm5vdCgubWF0LWZvcm0tZmllbGQtaW52YWxpZCkubWF0LXdhcm4gICAubWF0LWZvcm0tZmllbGQtaW5maXhbX25nY29udGVudC0lQ09NUCVdOjphZnRlcntjb2xvcjojZjQ0MzM2fS5tYXQtZm9ybS1maWVsZC5tYXQtZm9ybS1maWVsZC1pbnZhbGlkW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17Y29sb3I6I2Y0NDMzNn0ubWF0LWZvcm0tZmllbGQubWF0LWZvcm0tZmllbGQtaW52YWxpZFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWwubWF0LWFjY2VudFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtZm9ybS1maWVsZC5tYXQtZm9ybS1maWVsZC1pbnZhbGlkW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtcmVxdWlyZWQtbWFya2VyW19uZ2NvbnRlbnQtJUNPTVAlXXtjb2xvcjojZjQ0MzM2fS5tYXQtZm9ybS1maWVsZC5tYXQtZm9ybS1maWVsZC1pbnZhbGlkW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1yaXBwbGVbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWZvcm0tZmllbGQubWF0LWZvcm0tZmllbGQtaW52YWxpZFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtcmlwcGxlLm1hdC1hY2NlbnRbX25nY29udGVudC0lQ09NUCVde2JhY2tncm91bmQtY29sb3I6I2Y0NDMzNn0ubWF0LWVycm9yW19uZ2NvbnRlbnQtJUNPTVAlXXtjb2xvcjojZjQ0MzM2fS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWxlZ2FjeVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVde2NvbG9yOiM2MTYxNjF9Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtbGVnYWN5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaGludFtfbmdjb250ZW50LSVDT01QJV17Y29sb3I6IzYxNjE2MX0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1sZWdhY3lbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLXVuZGVybGluZVtfbmdjb250ZW50LSVDT01QJV17YmFja2dyb3VuZC1jb2xvcjpyZ2JhKDAsMCwwLC40Mil9Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtbGVnYWN5Lm1hdC1mb3JtLWZpZWxkLWRpc2FibGVkW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC11bmRlcmxpbmVbX25nY29udGVudC0lQ09NUCVde2JhY2tncm91bmQtaW1hZ2U6bGluZWFyLWdyYWRpZW50KHRvIHJpZ2h0LCByZ2JhKDAsIDAsIDAsIDAuNDIpIDAlLCByZ2JhKDAsIDAsIDAsIDAuNDIpIDMzJSwgdHJhbnNwYXJlbnQgMCUpO2JhY2tncm91bmQtc2l6ZTo0cHggMTAwJTtiYWNrZ3JvdW5kLXJlcGVhdDpyZXBlYXQteH0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1zdGFuZGFyZFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtdW5kZXJsaW5lW19uZ2NvbnRlbnQtJUNPTVAlXXtiYWNrZ3JvdW5kLWNvbG9yOnJnYmEoMCwwLDAsLjQyKX0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1zdGFuZGFyZC5tYXQtZm9ybS1maWVsZC1kaXNhYmxlZFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtdW5kZXJsaW5lW19uZ2NvbnRlbnQtJUNPTVAlXXtiYWNrZ3JvdW5kLWltYWdlOmxpbmVhci1ncmFkaWVudCh0byByaWdodCwgcmdiYSgwLCAwLCAwLCAwLjQyKSAwJSwgcmdiYSgwLCAwLCAwLCAwLjQyKSAzMyUsIHRyYW5zcGFyZW50IDAlKTtiYWNrZ3JvdW5kLXNpemU6NHB4IDEwMCU7YmFja2dyb3VuZC1yZXBlYXQ6cmVwZWF0LXh9Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtZmlsbFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtZmxleFtfbmdjb250ZW50LSVDT01QJV17YmFja2dyb3VuZC1jb2xvcjpyZ2JhKDAsMCwwLC4wNCl9Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtZmlsbC5tYXQtZm9ybS1maWVsZC1kaXNhYmxlZFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtZmxleFtfbmdjb250ZW50LSVDT01QJV17YmFja2dyb3VuZC1jb2xvcjpyZ2JhKDAsMCwwLC4wMil9Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtZmlsbFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtdW5kZXJsaW5lW19uZ2NvbnRlbnQtJUNPTVAlXTo6YmVmb3Jle2JhY2tncm91bmQtY29sb3I6cmdiYSgwLDAsMCwuNDIpfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWZpbGwubWF0LWZvcm0tZmllbGQtZGlzYWJsZWRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXtjb2xvcjojNzU3NTc1fS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWZpbGwubWF0LWZvcm0tZmllbGQtZGlzYWJsZWRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLXVuZGVybGluZVtfbmdjb250ZW50LSVDT01QJV06OmJlZm9yZXtiYWNrZ3JvdW5kLWNvbG9yOnRyYW5zcGFyZW50fS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLW91dGxpbmVbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLW91dGxpbmVbX25nY29udGVudC0lQ09NUCVde2NvbG9yOnJnYmEoMCwwLDAsLjEyKX0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1vdXRsaW5lW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1vdXRsaW5lLXRoaWNrW19uZ2NvbnRlbnQtJUNPTVAlXXtjb2xvcjpyZ2JhKDAsMCwwLC44Nyl9Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2Utb3V0bGluZS5tYXQtZm9jdXNlZFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtb3V0bGluZS10aGlja1tfbmdjb250ZW50LSVDT01QJV17Y29sb3I6I2Y1N2MwMH0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1vdXRsaW5lLm1hdC1mb2N1c2VkLm1hdC1hY2NlbnRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLW91dGxpbmUtdGhpY2tbX25nY29udGVudC0lQ09NUCVde2NvbG9yOiNmZjk4MDB9Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2Utb3V0bGluZS5tYXQtZm9jdXNlZC5tYXQtd2Fybltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtb3V0bGluZS10aGlja1tfbmdjb250ZW50LSVDT01QJV17Y29sb3I6I2Y0NDMzNn0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1vdXRsaW5lLm1hdC1mb3JtLWZpZWxkLWludmFsaWQubWF0LWZvcm0tZmllbGQtaW52YWxpZFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtb3V0bGluZS10aGlja1tfbmdjb250ZW50LSVDT01QJV17Y29sb3I6I2Y0NDMzNn0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1vdXRsaW5lLm1hdC1mb3JtLWZpZWxkLWRpc2FibGVkW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17Y29sb3I6Izc1NzU3NX0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1vdXRsaW5lLm1hdC1mb3JtLWZpZWxkLWRpc2FibGVkW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1vdXRsaW5lW19uZ2NvbnRlbnQtJUNPTVAlXXtjb2xvcjpyZ2JhKDAsMCwwLC4wNil9Lm1hdC1pY29uLm1hdC1wcmltYXJ5W19uZ2NvbnRlbnQtJUNPTVAlXXtjb2xvcjojZjU3YzAwfS5tYXQtaWNvbi5tYXQtYWNjZW50W19uZ2NvbnRlbnQtJUNPTVAlXXtjb2xvcjojZmY5ODAwfS5tYXQtaWNvbi5tYXQtd2Fybltfbmdjb250ZW50LSVDT01QJV17Y29sb3I6I2Y0NDMzNn0ubWF0LWZvcm0tZmllbGQtdHlwZS1tYXQtbmF0aXZlLXNlbGVjdFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtaW5maXhbX25nY29udGVudC0lQ09NUCVdOjphZnRlcntjb2xvcjojNjE2MTYxfS5tYXQtaW5wdXQtZWxlbWVudFtfbmdjb250ZW50LSVDT01QJV06ZGlzYWJsZWQsIC5tYXQtZm9ybS1maWVsZC10eXBlLW1hdC1uYXRpdmUtc2VsZWN0Lm1hdC1mb3JtLWZpZWxkLWRpc2FibGVkW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1pbmZpeFtfbmdjb250ZW50LSVDT01QJV06OmFmdGVye2NvbG9yOiM3NTc1NzV9Lm1hdC1pbnB1dC1lbGVtZW50W19uZ2NvbnRlbnQtJUNPTVAlXXtjYXJldC1jb2xvcjojZjU3YzAwfS5tYXQtaW5wdXQtZWxlbWVudFtfbmdjb250ZW50LSVDT01QJV06OnBsYWNlaG9sZGVye2NvbG9yOnJnYmEoOTcsOTcsOTcsLjQyKX0ubWF0LWlucHV0LWVsZW1lbnRbX25nY29udGVudC0lQ09NUCVdOjotbW96LXBsYWNlaG9sZGVye2NvbG9yOnJnYmEoOTcsOTcsOTcsLjQyKX0ubWF0LWlucHV0LWVsZW1lbnRbX25nY29udGVudC0lQ09NUCVdOjotd2Via2l0LWlucHV0LXBsYWNlaG9sZGVye2NvbG9yOnJnYmEoOTcsOTcsOTcsLjQyKX0ubWF0LWlucHV0LWVsZW1lbnRbX25nY29udGVudC0lQ09NUCVdOi1tcy1pbnB1dC1wbGFjZWhvbGRlcntjb2xvcjpyZ2JhKDk3LDk3LDk3LC40Mil9Lm1hdC1mb3JtLWZpZWxkLm1hdC1hY2NlbnRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pbnB1dC1lbGVtZW50W19uZ2NvbnRlbnQtJUNPTVAlXXtjYXJldC1jb2xvcjojZmY5ODAwfS5tYXQtZm9ybS1maWVsZC5tYXQtd2Fybltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWlucHV0LWVsZW1lbnRbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWZvcm0tZmllbGQtaW52YWxpZFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWlucHV0LWVsZW1lbnRbX25nY29udGVudC0lQ09NUCVde2NhcmV0LWNvbG9yOiNmNDQzMzZ9Lm1hdC1mb3JtLWZpZWxkLXR5cGUtbWF0LW5hdGl2ZS1zZWxlY3QubWF0LWZvcm0tZmllbGQtaW52YWxpZFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtaW5maXhbX25nY29udGVudC0lQ09NUCVdOjphZnRlcntjb2xvcjojZjQ0MzM2fS5tYXQtbGlzdC1iYXNlW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGlzdC1pdGVtW19uZ2NvbnRlbnQtJUNPTVAlXXtjb2xvcjojMjEyMTIxfS5tYXQtbGlzdC1iYXNlW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGlzdC1vcHRpb25bX25nY29udGVudC0lQ09NUCVde2NvbG9yOiMyMTIxMjF9Lm1hdC1saXN0LWJhc2VbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1zdWJoZWFkZXJbX25nY29udGVudC0lQ09NUCVde2NvbG9yOiM2MTYxNjF9Lm1hdC1saXN0LWl0ZW0tZGlzYWJsZWRbX25nY29udGVudC0lQ09NUCVde2JhY2tncm91bmQtY29sb3I6I2VlZX0ubWF0LWxpc3Qtb3B0aW9uW19uZ2NvbnRlbnQtJUNPTVAlXTpob3ZlciwgLm1hdC1saXN0LW9wdGlvbltfbmdjb250ZW50LSVDT01QJV06Zm9jdXMsIC5tYXQtbmF2LWxpc3RbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saXN0LWl0ZW1bX25nY29udGVudC0lQ09NUCVdOmhvdmVyLCAubWF0LW5hdi1saXN0W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGlzdC1pdGVtW19uZ2NvbnRlbnQtJUNPTVAlXTpmb2N1cywgLm1hdC1hY3Rpb24tbGlzdFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpc3QtaXRlbVtfbmdjb250ZW50LSVDT01QJV06aG92ZXIsIC5tYXQtYWN0aW9uLWxpc3RbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saXN0LWl0ZW1bX25nY29udGVudC0lQ09NUCVdOmZvY3Vze2JhY2tncm91bmQ6cmdiYSgwLDAsMCwuMDQpfS5tYXQtbGlzdC1zaW5nbGUtc2VsZWN0ZWQtb3B0aW9uW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1saXN0LXNpbmdsZS1zZWxlY3RlZC1vcHRpb25bX25nY29udGVudC0lQ09NUCVdOmhvdmVyLCAubWF0LWxpc3Qtc2luZ2xlLXNlbGVjdGVkLW9wdGlvbltfbmdjb250ZW50LSVDT01QJV06Zm9jdXN7YmFja2dyb3VuZDpyZ2JhKDAsMCwwLC4xMil9Lm1hdC1tZW51LXBhbmVsW19uZ2NvbnRlbnQtJUNPTVAlXXtiYWNrZ3JvdW5kOiNmZmZ9Lm1hdC1tZW51LXBhbmVsW19uZ2NvbnRlbnQtJUNPTVAlXTpub3QoW2NsYXNzKj1tYXQtZWxldmF0aW9uLXpdKXtib3gtc2hhZG93OjBweCAycHggNHB4IC0xcHggcmdiYSgwLCAwLCAwLCAwLjIpLDBweCA0cHggNXB4IDBweCByZ2JhKDAsIDAsIDAsIDAuMTQpLDBweCAxcHggMTBweCAwcHggcmdiYSgwLCAwLCAwLCAwLjEyKX0ubWF0LW1lbnUtaXRlbVtfbmdjb250ZW50LSVDT01QJV17YmFja2dyb3VuZDp0cmFuc3BhcmVudDtjb2xvcjojMjEyMTIxfS5tYXQtbWVudS1pdGVtW2Rpc2FibGVkXVtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtbWVudS1pdGVtW2Rpc2FibGVkXVtfbmdjb250ZW50LSVDT01QJV06OmFmdGVye2NvbG9yOnJnYmEoMCwwLDAsLjM4KX0ubWF0LW1lbnUtaXRlbVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWljb24tbm8tY29sb3JbX25nY29udGVudC0lQ09NUCVdLCAubWF0LW1lbnUtaXRlbS1zdWJtZW51LXRyaWdnZXJbX25nY29udGVudC0lQ09NUCVdOjphZnRlcntjb2xvcjpyZ2JhKDAsMCwwLC41NCl9Lm1hdC1tZW51LWl0ZW1bX25nY29udGVudC0lQ09NUCVdOmhvdmVyOm5vdChbZGlzYWJsZWRdKSwgLm1hdC1tZW51LWl0ZW0uY2RrLXByb2dyYW0tZm9jdXNlZFtfbmdjb250ZW50LSVDT01QJV06bm90KFtkaXNhYmxlZF0pLCAubWF0LW1lbnUtaXRlbS5jZGsta2V5Ym9hcmQtZm9jdXNlZFtfbmdjb250ZW50LSVDT01QJV06bm90KFtkaXNhYmxlZF0pLCAubWF0LW1lbnUtaXRlbS1oaWdobGlnaHRlZFtfbmdjb250ZW50LSVDT01QJV06bm90KFtkaXNhYmxlZF0pe2JhY2tncm91bmQ6cmdiYSgwLDAsMCwuMDQpfS5tYXQtcGFnaW5hdG9yW19uZ2NvbnRlbnQtJUNPTVAlXXtiYWNrZ3JvdW5kOiNmZmZ9Lm1hdC1wYWdpbmF0b3JbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXBhZ2luYXRvci1wYWdlLXNpemVbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1zZWxlY3QtdHJpZ2dlcltfbmdjb250ZW50LSVDT01QJV17Y29sb3I6IzYxNjE2MX0ubWF0LXBhZ2luYXRvci1kZWNyZW1lbnRbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXBhZ2luYXRvci1pbmNyZW1lbnRbX25nY29udGVudC0lQ09NUCVde2JvcmRlci10b3A6MnB4IHNvbGlkIHJnYmEoMCwwLDAsLjU0KTtib3JkZXItcmlnaHQ6MnB4IHNvbGlkIHJnYmEoMCwwLDAsLjU0KX0ubWF0LXBhZ2luYXRvci1maXJzdFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtcGFnaW5hdG9yLWxhc3RbX25nY29udGVudC0lQ09NUCVde2JvcmRlci10b3A6MnB4IHNvbGlkIHJnYmEoMCwwLDAsLjU0KX0ubWF0LWljb24tYnV0dG9uW2Rpc2FibGVkXVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXBhZ2luYXRvci1kZWNyZW1lbnRbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWljb24tYnV0dG9uW2Rpc2FibGVkXVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXBhZ2luYXRvci1pbmNyZW1lbnRbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWljb24tYnV0dG9uW2Rpc2FibGVkXVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXBhZ2luYXRvci1maXJzdFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtaWNvbi1idXR0b25bZGlzYWJsZWRdW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtcGFnaW5hdG9yLWxhc3RbX25nY29udGVudC0lQ09NUCVde2JvcmRlci1jb2xvcjpyZ2JhKDAsMCwwLC4zOCl9Lm1hdC1wYWdpbmF0b3ItY29udGFpbmVyW19uZ2NvbnRlbnQtJUNPTVAlXXttaW4taGVpZ2h0OjU2cHh9Lm1hdC1wcm9ncmVzcy1iYXItYmFja2dyb3VuZFtfbmdjb250ZW50LSVDT01QJV17ZmlsbDojZmY5ODAwfS5tYXQtcHJvZ3Jlc3MtYmFyLWJ1ZmZlcltfbmdjb250ZW50LSVDT01QJV17YmFja2dyb3VuZC1jb2xvcjojZmY5ODAwfS5tYXQtcHJvZ3Jlc3MtYmFyLWZpbGxbX25nY29udGVudC0lQ09NUCVdOjphZnRlcntiYWNrZ3JvdW5kLWNvbG9yOiNmNTdjMDB9Lm1hdC1wcm9ncmVzcy1iYXIubWF0LWFjY2VudFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXByb2dyZXNzLWJhci1iYWNrZ3JvdW5kW19uZ2NvbnRlbnQtJUNPTVAlXXtmaWxsOiNmZjk4MDB9Lm1hdC1wcm9ncmVzcy1iYXIubWF0LWFjY2VudFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXByb2dyZXNzLWJhci1idWZmZXJbX25nY29udGVudC0lQ09NUCVde2JhY2tncm91bmQtY29sb3I6I2ZmOTgwMH0ubWF0LXByb2dyZXNzLWJhci5tYXQtYWNjZW50W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtcHJvZ3Jlc3MtYmFyLWZpbGxbX25nY29udGVudC0lQ09NUCVdOjphZnRlcntiYWNrZ3JvdW5kLWNvbG9yOiNmZjk4MDB9Lm1hdC1wcm9ncmVzcy1iYXIubWF0LXdhcm5bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1wcm9ncmVzcy1iYXItYmFja2dyb3VuZFtfbmdjb250ZW50LSVDT01QJV17ZmlsbDojZmZjZGQyfS5tYXQtcHJvZ3Jlc3MtYmFyLm1hdC13YXJuW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtcHJvZ3Jlc3MtYmFyLWJ1ZmZlcltfbmdjb250ZW50LSVDT01QJV17YmFja2dyb3VuZC1jb2xvcjojZmZjZGQyfS5tYXQtcHJvZ3Jlc3MtYmFyLm1hdC13YXJuW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtcHJvZ3Jlc3MtYmFyLWZpbGxbX25nY29udGVudC0lQ09NUCVdOjphZnRlcntiYWNrZ3JvdW5kLWNvbG9yOiNmNDQzMzZ9Lm1hdC1wcm9ncmVzcy1zcGlubmVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIGNpcmNsZVtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtc3Bpbm5lcltfbmdjb250ZW50LSVDT01QJV0gICBjaXJjbGVbX25nY29udGVudC0lQ09NUCVde3N0cm9rZTojZjU3YzAwfS5tYXQtcHJvZ3Jlc3Mtc3Bpbm5lci5tYXQtYWNjZW50W19uZ2NvbnRlbnQtJUNPTVAlXSAgIGNpcmNsZVtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtc3Bpbm5lci5tYXQtYWNjZW50W19uZ2NvbnRlbnQtJUNPTVAlXSAgIGNpcmNsZVtfbmdjb250ZW50LSVDT01QJV17c3Ryb2tlOiNmZjk4MDB9Lm1hdC1wcm9ncmVzcy1zcGlubmVyLm1hdC13YXJuW19uZ2NvbnRlbnQtJUNPTVAlXSAgIGNpcmNsZVtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtc3Bpbm5lci5tYXQtd2Fybltfbmdjb250ZW50LSVDT01QJV0gICBjaXJjbGVbX25nY29udGVudC0lQ09NUCVde3N0cm9rZTojZjQ0MzM2fS5tYXQtcmFkaW8tb3V0ZXItY2lyY2xlW19uZ2NvbnRlbnQtJUNPTVAlXXtib3JkZXItY29sb3I6IzYxNjE2MX0ubWF0LXJhZGlvLWJ1dHRvbi5tYXQtcHJpbWFyeS5tYXQtcmFkaW8tY2hlY2tlZFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXJhZGlvLW91dGVyLWNpcmNsZVtfbmdjb250ZW50LSVDT01QJV17Ym9yZGVyLWNvbG9yOiNmNTdjMDB9Lm1hdC1yYWRpby1idXR0b24ubWF0LXByaW1hcnlbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1yYWRpby1pbm5lci1jaXJjbGVbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXJhZGlvLWJ1dHRvbi5tYXQtcHJpbWFyeVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXJhZGlvLXJpcHBsZVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXJpcHBsZS1lbGVtZW50W19uZ2NvbnRlbnQtJUNPTVAlXTpub3QoLm1hdC1yYWRpby1wZXJzaXN0ZW50LXJpcHBsZSksIC5tYXQtcmFkaW8tYnV0dG9uLm1hdC1wcmltYXJ5Lm1hdC1yYWRpby1jaGVja2VkW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtcmFkaW8tcGVyc2lzdGVudC1yaXBwbGVbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXJhZGlvLWJ1dHRvbi5tYXQtcHJpbWFyeVtfbmdjb250ZW50LSVDT01QJV06YWN0aXZlICAgLm1hdC1yYWRpby1wZXJzaXN0ZW50LXJpcHBsZVtfbmdjb250ZW50LSVDT01QJV17YmFja2dyb3VuZC1jb2xvcjojZjU3YzAwfS5tYXQtcmFkaW8tYnV0dG9uLm1hdC1hY2NlbnQubWF0LXJhZGlvLWNoZWNrZWRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1yYWRpby1vdXRlci1jaXJjbGVbX25nY29udGVudC0lQ09NUCVde2JvcmRlci1jb2xvcjojZmY5ODAwfS5tYXQtcmFkaW8tYnV0dG9uLm1hdC1hY2NlbnRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1yYWRpby1pbm5lci1jaXJjbGVbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXJhZGlvLWJ1dHRvbi5tYXQtYWNjZW50W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtcmFkaW8tcmlwcGxlW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtcmlwcGxlLWVsZW1lbnRbX25nY29udGVudC0lQ09NUCVdOm5vdCgubWF0LXJhZGlvLXBlcnNpc3RlbnQtcmlwcGxlKSwgLm1hdC1yYWRpby1idXR0b24ubWF0LWFjY2VudC5tYXQtcmFkaW8tY2hlY2tlZFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXJhZGlvLXBlcnNpc3RlbnQtcmlwcGxlW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1yYWRpby1idXR0b24ubWF0LWFjY2VudFtfbmdjb250ZW50LSVDT01QJV06YWN0aXZlICAgLm1hdC1yYWRpby1wZXJzaXN0ZW50LXJpcHBsZVtfbmdjb250ZW50LSVDT01QJV17YmFja2dyb3VuZC1jb2xvcjojZmY5ODAwfS5tYXQtcmFkaW8tYnV0dG9uLm1hdC13YXJuLm1hdC1yYWRpby1jaGVja2VkW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtcmFkaW8tb3V0ZXItY2lyY2xlW19uZ2NvbnRlbnQtJUNPTVAlXXtib3JkZXItY29sb3I6I2Y0NDMzNn0ubWF0LXJhZGlvLWJ1dHRvbi5tYXQtd2Fybltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXJhZGlvLWlubmVyLWNpcmNsZVtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtcmFkaW8tYnV0dG9uLm1hdC13YXJuW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtcmFkaW8tcmlwcGxlW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtcmlwcGxlLWVsZW1lbnRbX25nY29udGVudC0lQ09NUCVdOm5vdCgubWF0LXJhZGlvLXBlcnNpc3RlbnQtcmlwcGxlKSwgLm1hdC1yYWRpby1idXR0b24ubWF0LXdhcm4ubWF0LXJhZGlvLWNoZWNrZWRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1yYWRpby1wZXJzaXN0ZW50LXJpcHBsZVtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtcmFkaW8tYnV0dG9uLm1hdC13YXJuW19uZ2NvbnRlbnQtJUNPTVAlXTphY3RpdmUgICAubWF0LXJhZGlvLXBlcnNpc3RlbnQtcmlwcGxlW19uZ2NvbnRlbnQtJUNPTVAlXXtiYWNrZ3JvdW5kLWNvbG9yOiNmNDQzMzZ9Lm1hdC1yYWRpby1idXR0b24ubWF0LXJhZGlvLWRpc2FibGVkLm1hdC1yYWRpby1jaGVja2VkW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtcmFkaW8tb3V0ZXItY2lyY2xlW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1yYWRpby1idXR0b24ubWF0LXJhZGlvLWRpc2FibGVkW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtcmFkaW8tb3V0ZXItY2lyY2xlW19uZ2NvbnRlbnQtJUNPTVAlXXtib3JkZXItY29sb3I6cmdiYSgwLDAsMCwuMzgpfS5tYXQtcmFkaW8tYnV0dG9uLm1hdC1yYWRpby1kaXNhYmxlZFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXJhZGlvLXJpcHBsZVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXJpcHBsZS1lbGVtZW50W19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1yYWRpby1idXR0b24ubWF0LXJhZGlvLWRpc2FibGVkW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtcmFkaW8taW5uZXItY2lyY2xlW19uZ2NvbnRlbnQtJUNPTVAlXXtiYWNrZ3JvdW5kLWNvbG9yOnJnYmEoMCwwLDAsLjM4KX0ubWF0LXJhZGlvLWJ1dHRvbi5tYXQtcmFkaW8tZGlzYWJsZWRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1yYWRpby1sYWJlbC1jb250ZW50W19uZ2NvbnRlbnQtJUNPTVAlXXtjb2xvcjpyZ2JhKDAsMCwwLC4zOCl9Lm1hdC1yYWRpby1idXR0b25bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1yaXBwbGUtZWxlbWVudFtfbmdjb250ZW50LSVDT01QJV17YmFja2dyb3VuZC1jb2xvcjojMDAwfS5tYXQtc2VsZWN0LXZhbHVlW19uZ2NvbnRlbnQtJUNPTVAlXXtjb2xvcjojMjEyMTIxfS5tYXQtc2VsZWN0LXBsYWNlaG9sZGVyW19uZ2NvbnRlbnQtJUNPTVAlXXtjb2xvcjpyZ2JhKDk3LDk3LDk3LC40Mil9Lm1hdC1zZWxlY3QtZGlzYWJsZWRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1zZWxlY3QtdmFsdWVbX25nY29udGVudC0lQ09NUCVde2NvbG9yOiM3NTc1NzV9Lm1hdC1zZWxlY3QtYXJyb3dbX25nY29udGVudC0lQ09NUCVde2NvbG9yOiM2MTYxNjF9Lm1hdC1zZWxlY3QtcGFuZWxbX25nY29udGVudC0lQ09NUCVde2JhY2tncm91bmQ6I2ZmZn0ubWF0LXNlbGVjdC1wYW5lbFtfbmdjb250ZW50LSVDT01QJV06bm90KFtjbGFzcyo9bWF0LWVsZXZhdGlvbi16XSl7Ym94LXNoYWRvdzowcHggMnB4IDRweCAtMXB4IHJnYmEoMCwgMCwgMCwgMC4yKSwwcHggNHB4IDVweCAwcHggcmdiYSgwLCAwLCAwLCAwLjE0KSwwcHggMXB4IDEwcHggMHB4IHJnYmEoMCwgMCwgMCwgMC4xMil9Lm1hdC1zZWxlY3QtcGFuZWxbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1vcHRpb24ubWF0LXNlbGVjdGVkW19uZ2NvbnRlbnQtJUNPTVAlXTpub3QoLm1hdC1vcHRpb24tbXVsdGlwbGUpe2JhY2tncm91bmQ6cmdiYSgwLDAsMCwuMTIpfS5tYXQtZm9ybS1maWVsZC5tYXQtZm9jdXNlZC5tYXQtcHJpbWFyeVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXNlbGVjdC1hcnJvd1tfbmdjb250ZW50LSVDT01QJV17Y29sb3I6I2Y1N2MwMH0ubWF0LWZvcm0tZmllbGQubWF0LWZvY3VzZWQubWF0LWFjY2VudFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXNlbGVjdC1hcnJvd1tfbmdjb250ZW50LSVDT01QJV17Y29sb3I6I2ZmOTgwMH0ubWF0LWZvcm0tZmllbGQubWF0LWZvY3VzZWQubWF0LXdhcm5bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1zZWxlY3QtYXJyb3dbX25nY29udGVudC0lQ09NUCVde2NvbG9yOiNmNDQzMzZ9Lm1hdC1mb3JtLWZpZWxkW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtc2VsZWN0Lm1hdC1zZWxlY3QtaW52YWxpZFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXNlbGVjdC1hcnJvd1tfbmdjb250ZW50LSVDT01QJV17Y29sb3I6I2Y0NDMzNn0ubWF0LWZvcm0tZmllbGRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1zZWxlY3QubWF0LXNlbGVjdC1kaXNhYmxlZFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXNlbGVjdC1hcnJvd1tfbmdjb250ZW50LSVDT01QJV17Y29sb3I6Izc1NzU3NX0ubWF0LWRyYXdlci1jb250YWluZXJbX25nY29udGVudC0lQ09NUCVde2JhY2tncm91bmQtY29sb3I6I2ZhZmFmYTtjb2xvcjojMjEyMTIxfS5tYXQtZHJhd2VyW19uZ2NvbnRlbnQtJUNPTVAlXXtiYWNrZ3JvdW5kLWNvbG9yOiNmZmY7Y29sb3I6IzIxMjEyMX0ubWF0LWRyYXdlci5tYXQtZHJhd2VyLXB1c2hbX25nY29udGVudC0lQ09NUCVde2JhY2tncm91bmQtY29sb3I6I2ZmZn0ubWF0LWRyYXdlcltfbmdjb250ZW50LSVDT01QJV06bm90KC5tYXQtZHJhd2VyLXNpZGUpe2JveC1zaGFkb3c6MHB4IDhweCAxMHB4IC01cHggcmdiYSgwLCAwLCAwLCAwLjIpLDBweCAxNnB4IDI0cHggMnB4IHJnYmEoMCwgMCwgMCwgMC4xNCksMHB4IDZweCAzMHB4IDVweCByZ2JhKDAsIDAsIDAsIDAuMTIpfS5tYXQtZHJhd2VyLXNpZGVbX25nY29udGVudC0lQ09NUCVde2JvcmRlci1yaWdodDpzb2xpZCAxcHggcmdiYSgwLDAsMCwuMTIpfS5tYXQtZHJhd2VyLXNpZGUubWF0LWRyYXdlci1lbmRbX25nY29udGVudC0lQ09NUCVde2JvcmRlci1sZWZ0OnNvbGlkIDFweCByZ2JhKDAsMCwwLC4xMik7Ym9yZGVyLXJpZ2h0Om5vbmV9W2Rpcj1ydGxdW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZHJhd2VyLXNpZGVbX25nY29udGVudC0lQ09NUCVde2JvcmRlci1sZWZ0OnNvbGlkIDFweCByZ2JhKDAsMCwwLC4xMik7Ym9yZGVyLXJpZ2h0Om5vbmV9W2Rpcj1ydGxdW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZHJhd2VyLXNpZGUubWF0LWRyYXdlci1lbmRbX25nY29udGVudC0lQ09NUCVde2JvcmRlci1sZWZ0Om5vbmU7Ym9yZGVyLXJpZ2h0OnNvbGlkIDFweCByZ2JhKDAsMCwwLC4xMil9Lm1hdC1kcmF3ZXItYmFja2Ryb3AubWF0LWRyYXdlci1zaG93bltfbmdjb250ZW50LSVDT01QJV17YmFja2dyb3VuZC1jb2xvcjpyZ2JhKDAsMCwwLC42KX0ubWF0LXNsaWRlLXRvZ2dsZS5tYXQtY2hlY2tlZFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXNsaWRlLXRvZ2dsZS10aHVtYltfbmdjb250ZW50LSVDT01QJV17YmFja2dyb3VuZC1jb2xvcjojZmY5ODAwfS5tYXQtc2xpZGUtdG9nZ2xlLm1hdC1jaGVja2VkW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtc2xpZGUtdG9nZ2xlLWJhcltfbmdjb250ZW50LSVDT01QJV17YmFja2dyb3VuZC1jb2xvcjpyZ2JhKDI1NSwxNTIsMCwuNTQpfS5tYXQtc2xpZGUtdG9nZ2xlLm1hdC1jaGVja2VkW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtcmlwcGxlLWVsZW1lbnRbX25nY29udGVudC0lQ09NUCVde2JhY2tncm91bmQtY29sb3I6I2ZmOTgwMH0ubWF0LXNsaWRlLXRvZ2dsZS5tYXQtcHJpbWFyeS5tYXQtY2hlY2tlZFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXNsaWRlLXRvZ2dsZS10aHVtYltfbmdjb250ZW50LSVDT01QJV17YmFja2dyb3VuZC1jb2xvcjojZjU3YzAwfS5tYXQtc2xpZGUtdG9nZ2xlLm1hdC1wcmltYXJ5Lm1hdC1jaGVja2VkW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtc2xpZGUtdG9nZ2xlLWJhcltfbmdjb250ZW50LSVDT01QJV17YmFja2dyb3VuZC1jb2xvcjpyZ2JhKDI0NSwxMjQsMCwuNTQpfS5tYXQtc2xpZGUtdG9nZ2xlLm1hdC1wcmltYXJ5Lm1hdC1jaGVja2VkW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtcmlwcGxlLWVsZW1lbnRbX25nY29udGVudC0lQ09NUCVde2JhY2tncm91bmQtY29sb3I6I2Y1N2MwMH0ubWF0LXNsaWRlLXRvZ2dsZS5tYXQtd2Fybi5tYXQtY2hlY2tlZFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXNsaWRlLXRvZ2dsZS10aHVtYltfbmdjb250ZW50LSVDT01QJV17YmFja2dyb3VuZC1jb2xvcjojZjQ0MzM2fS5tYXQtc2xpZGUtdG9nZ2xlLm1hdC13YXJuLm1hdC1jaGVja2VkW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtc2xpZGUtdG9nZ2xlLWJhcltfbmdjb250ZW50LSVDT01QJV17YmFja2dyb3VuZC1jb2xvcjpyZ2JhKDI0NCw2Nyw1NCwuNTQpfS5tYXQtc2xpZGUtdG9nZ2xlLm1hdC13YXJuLm1hdC1jaGVja2VkW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtcmlwcGxlLWVsZW1lbnRbX25nY29udGVudC0lQ09NUCVde2JhY2tncm91bmQtY29sb3I6I2Y0NDMzNn0ubWF0LXNsaWRlLXRvZ2dsZVtfbmdjb250ZW50LSVDT01QJV06bm90KC5tYXQtY2hlY2tlZCkgICAubWF0LXJpcHBsZS1lbGVtZW50W19uZ2NvbnRlbnQtJUNPTVAlXXtiYWNrZ3JvdW5kLWNvbG9yOiMwMDB9Lm1hdC1zbGlkZS10b2dnbGUtdGh1bWJbX25nY29udGVudC0lQ09NUCVde2JveC1zaGFkb3c6MHB4IDJweCAxcHggLTFweCByZ2JhKDAsIDAsIDAsIDAuMiksMHB4IDFweCAxcHggMHB4IHJnYmEoMCwgMCwgMCwgMC4xNCksMHB4IDFweCAzcHggMHB4IHJnYmEoMCwgMCwgMCwgMC4xMik7YmFja2dyb3VuZC1jb2xvcjojZmFmYWZhfS5tYXQtc2xpZGUtdG9nZ2xlLWJhcltfbmdjb250ZW50LSVDT01QJV17YmFja2dyb3VuZC1jb2xvcjpyZ2JhKDAsMCwwLC4zOCl9Lm1hdC1zbGlkZXItdHJhY2stYmFja2dyb3VuZFtfbmdjb250ZW50LSVDT01QJV17YmFja2dyb3VuZC1jb2xvcjpyZ2JhKDAsMCwwLC4yNil9Lm1hdC1wcmltYXJ5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtc2xpZGVyLXRyYWNrLWZpbGxbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXByaW1hcnlbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1zbGlkZXItdGh1bWJbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXByaW1hcnlbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1zbGlkZXItdGh1bWItbGFiZWxbX25nY29udGVudC0lQ09NUCVde2JhY2tncm91bmQtY29sb3I6I2Y1N2MwMH0ubWF0LXByaW1hcnlbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1zbGlkZXItdGh1bWItbGFiZWwtdGV4dFtfbmdjb250ZW50LSVDT01QJV17Y29sb3I6I2ZmZn0ubWF0LXByaW1hcnlbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1zbGlkZXItZm9jdXMtcmluZ1tfbmdjb250ZW50LSVDT01QJV17YmFja2dyb3VuZC1jb2xvcjpyZ2JhKDI0NSwxMjQsMCwuMil9Lm1hdC1hY2NlbnRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1zbGlkZXItdHJhY2stZmlsbFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtYWNjZW50W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtc2xpZGVyLXRodW1iW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1hY2NlbnRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1zbGlkZXItdGh1bWItbGFiZWxbX25nY29udGVudC0lQ09NUCVde2JhY2tncm91bmQtY29sb3I6I2ZmOTgwMH0ubWF0LWFjY2VudFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXNsaWRlci10aHVtYi1sYWJlbC10ZXh0W19uZ2NvbnRlbnQtJUNPTVAlXXtjb2xvcjojZmZmfS5tYXQtYWNjZW50W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtc2xpZGVyLWZvY3VzLXJpbmdbX25nY29udGVudC0lQ09NUCVde2JhY2tncm91bmQtY29sb3I6cmdiYSgyNTUsMTUyLDAsLjIpfS5tYXQtd2Fybltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXNsaWRlci10cmFjay1maWxsW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC13YXJuW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtc2xpZGVyLXRodW1iW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC13YXJuW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtc2xpZGVyLXRodW1iLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXtiYWNrZ3JvdW5kLWNvbG9yOiNmNDQzMzZ9Lm1hdC13YXJuW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtc2xpZGVyLXRodW1iLWxhYmVsLXRleHRbX25nY29udGVudC0lQ09NUCVde2NvbG9yOiNmZmZ9Lm1hdC13YXJuW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtc2xpZGVyLWZvY3VzLXJpbmdbX25nY29udGVudC0lQ09NUCVde2JhY2tncm91bmQtY29sb3I6cmdiYSgyNDQsNjcsNTQsLjIpfS5tYXQtc2xpZGVyW19uZ2NvbnRlbnQtJUNPTVAlXTpob3ZlciAgIC5tYXQtc2xpZGVyLXRyYWNrLWJhY2tncm91bmRbX25nY29udGVudC0lQ09NUCVdLCAuY2RrLWZvY3VzZWRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1zbGlkZXItdHJhY2stYmFja2dyb3VuZFtfbmdjb250ZW50LSVDT01QJV17YmFja2dyb3VuZC1jb2xvcjpyZ2JhKDAsMCwwLC4zOCl9Lm1hdC1zbGlkZXItZGlzYWJsZWRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1zbGlkZXItdHJhY2stYmFja2dyb3VuZFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtc2xpZGVyLWRpc2FibGVkW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtc2xpZGVyLXRyYWNrLWZpbGxbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXNsaWRlci1kaXNhYmxlZFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXNsaWRlci10aHVtYltfbmdjb250ZW50LSVDT01QJV17YmFja2dyb3VuZC1jb2xvcjpyZ2JhKDAsMCwwLC4yNil9Lm1hdC1zbGlkZXItZGlzYWJsZWRbX25nY29udGVudC0lQ09NUCVdOmhvdmVyICAgLm1hdC1zbGlkZXItdHJhY2stYmFja2dyb3VuZFtfbmdjb250ZW50LSVDT01QJV17YmFja2dyb3VuZC1jb2xvcjpyZ2JhKDAsMCwwLC4yNil9Lm1hdC1zbGlkZXItbWluLXZhbHVlW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtc2xpZGVyLWZvY3VzLXJpbmdbX25nY29udGVudC0lQ09NUCVde2JhY2tncm91bmQtY29sb3I6cmdiYSgwLDAsMCwuMTIpfS5tYXQtc2xpZGVyLW1pbi12YWx1ZS5tYXQtc2xpZGVyLXRodW1iLWxhYmVsLXNob3dpbmdbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1zbGlkZXItdGh1bWJbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXNsaWRlci1taW4tdmFsdWUubWF0LXNsaWRlci10aHVtYi1sYWJlbC1zaG93aW5nW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtc2xpZGVyLXRodW1iLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXtiYWNrZ3JvdW5kLWNvbG9yOnJnYmEoMCwwLDAsLjg3KX0ubWF0LXNsaWRlci1taW4tdmFsdWUubWF0LXNsaWRlci10aHVtYi1sYWJlbC1zaG93aW5nLmNkay1mb2N1c2VkW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtc2xpZGVyLXRodW1iW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1zbGlkZXItbWluLXZhbHVlLm1hdC1zbGlkZXItdGh1bWItbGFiZWwtc2hvd2luZy5jZGstZm9jdXNlZFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXNsaWRlci10aHVtYi1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17YmFja2dyb3VuZC1jb2xvcjpyZ2JhKDAsMCwwLC4yNil9Lm1hdC1zbGlkZXItbWluLXZhbHVlW19uZ2NvbnRlbnQtJUNPTVAlXTpub3QoLm1hdC1zbGlkZXItdGh1bWItbGFiZWwtc2hvd2luZykgICAubWF0LXNsaWRlci10aHVtYltfbmdjb250ZW50LSVDT01QJV17Ym9yZGVyLWNvbG9yOnJnYmEoMCwwLDAsLjI2KTtiYWNrZ3JvdW5kLWNvbG9yOnRyYW5zcGFyZW50fS5tYXQtc2xpZGVyLW1pbi12YWx1ZVtfbmdjb250ZW50LSVDT01QJV06bm90KC5tYXQtc2xpZGVyLXRodW1iLWxhYmVsLXNob3dpbmcpOmhvdmVyICAgLm1hdC1zbGlkZXItdGh1bWJbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXNsaWRlci1taW4tdmFsdWVbX25nY29udGVudC0lQ09NUCVdOm5vdCgubWF0LXNsaWRlci10aHVtYi1sYWJlbC1zaG93aW5nKS5jZGstZm9jdXNlZCAgIC5tYXQtc2xpZGVyLXRodW1iW19uZ2NvbnRlbnQtJUNPTVAlXXtib3JkZXItY29sb3I6cmdiYSgwLDAsMCwuMzgpfS5tYXQtc2xpZGVyLW1pbi12YWx1ZVtfbmdjb250ZW50LSVDT01QJV06bm90KC5tYXQtc2xpZGVyLXRodW1iLWxhYmVsLXNob3dpbmcpOmhvdmVyLm1hdC1zbGlkZXItZGlzYWJsZWQgICAubWF0LXNsaWRlci10aHVtYltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtc2xpZGVyLW1pbi12YWx1ZVtfbmdjb250ZW50LSVDT01QJV06bm90KC5tYXQtc2xpZGVyLXRodW1iLWxhYmVsLXNob3dpbmcpLmNkay1mb2N1c2VkLm1hdC1zbGlkZXItZGlzYWJsZWQgICAubWF0LXNsaWRlci10aHVtYltfbmdjb250ZW50LSVDT01QJV17Ym9yZGVyLWNvbG9yOnJnYmEoMCwwLDAsLjI2KX0ubWF0LXNsaWRlci1oYXMtdGlja3NbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1zbGlkZXItd3JhcHBlcltfbmdjb250ZW50LSVDT01QJV06OmFmdGVye2JvcmRlci1jb2xvcjpyZ2JhKDAsMCwwLC43KX0ubWF0LXNsaWRlci1ob3Jpem9udGFsW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtc2xpZGVyLXRpY2tzW19uZ2NvbnRlbnQtJUNPTVAlXXtiYWNrZ3JvdW5kLWltYWdlOnJlcGVhdGluZy1saW5lYXItZ3JhZGllbnQodG8gcmlnaHQsIHJnYmEoMCwgMCwgMCwgMC43KSwgcmdiYSgwLCAwLCAwLCAwLjcpIDJweCwgdHJhbnNwYXJlbnQgMCwgdHJhbnNwYXJlbnQpO2JhY2tncm91bmQtaW1hZ2U6LW1vei1yZXBlYXRpbmctbGluZWFyLWdyYWRpZW50KDAuMDAwMWRlZywgcmdiYSgwLCAwLCAwLCAwLjcpLCByZ2JhKDAsIDAsIDAsIDAuNykgMnB4LCB0cmFuc3BhcmVudCAwLCB0cmFuc3BhcmVudCl9Lm1hdC1zbGlkZXItdmVydGljYWxbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1zbGlkZXItdGlja3NbX25nY29udGVudC0lQ09NUCVde2JhY2tncm91bmQtaW1hZ2U6cmVwZWF0aW5nLWxpbmVhci1ncmFkaWVudCh0byBib3R0b20sIHJnYmEoMCwgMCwgMCwgMC43KSwgcmdiYSgwLCAwLCAwLCAwLjcpIDJweCwgdHJhbnNwYXJlbnQgMCwgdHJhbnNwYXJlbnQpfS5tYXQtc3RlcC1oZWFkZXIuY2RrLWtleWJvYXJkLWZvY3VzZWRbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXN0ZXAtaGVhZGVyLmNkay1wcm9ncmFtLWZvY3VzZWRbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXN0ZXAtaGVhZGVyW19uZ2NvbnRlbnQtJUNPTVAlXTpob3ZlcntiYWNrZ3JvdW5kLWNvbG9yOnJnYmEoMCwwLDAsLjA0KX1AbWVkaWEoaG92ZXI6IG5vbmUpey5tYXQtc3RlcC1oZWFkZXJbX25nY29udGVudC0lQ09NUCVdOmhvdmVye2JhY2tncm91bmQ6bm9uZX19Lm1hdC1zdGVwLWhlYWRlcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXN0ZXAtbGFiZWxbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXN0ZXAtaGVhZGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtc3RlcC1vcHRpb25hbFtfbmdjb250ZW50LSVDT01QJV17Y29sb3I6IzYxNjE2MX0ubWF0LXN0ZXAtaGVhZGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtc3RlcC1pY29uW19uZ2NvbnRlbnQtJUNPTVAlXXtiYWNrZ3JvdW5kLWNvbG9yOiM2MTYxNjE7Y29sb3I6I2ZmZn0ubWF0LXN0ZXAtaGVhZGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtc3RlcC1pY29uLXNlbGVjdGVkW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1zdGVwLWhlYWRlcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXN0ZXAtaWNvbi1zdGF0ZS1kb25lW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1zdGVwLWhlYWRlcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXN0ZXAtaWNvbi1zdGF0ZS1lZGl0W19uZ2NvbnRlbnQtJUNPTVAlXXtiYWNrZ3JvdW5kLWNvbG9yOiNmNTdjMDA7Y29sb3I6I2ZmZn0ubWF0LXN0ZXAtaGVhZGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtc3RlcC1pY29uLXN0YXRlLWVycm9yW19uZ2NvbnRlbnQtJUNPTVAlXXtiYWNrZ3JvdW5kLWNvbG9yOnRyYW5zcGFyZW50O2NvbG9yOiNmNDQzMzZ9Lm1hdC1zdGVwLWhlYWRlcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXN0ZXAtbGFiZWwubWF0LXN0ZXAtbGFiZWwtYWN0aXZlW19uZ2NvbnRlbnQtJUNPTVAlXXtjb2xvcjojMjEyMTIxfS5tYXQtc3RlcC1oZWFkZXJbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1zdGVwLWxhYmVsLm1hdC1zdGVwLWxhYmVsLWVycm9yW19uZ2NvbnRlbnQtJUNPTVAlXXtjb2xvcjojZjQ0MzM2fS5tYXQtc3RlcHBlci1ob3Jpem9udGFsW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1zdGVwcGVyLXZlcnRpY2FsW19uZ2NvbnRlbnQtJUNPTVAlXXtiYWNrZ3JvdW5kLWNvbG9yOiNmZmZ9Lm1hdC1zdGVwcGVyLXZlcnRpY2FsLWxpbmVbX25nY29udGVudC0lQ09NUCVdOjpiZWZvcmV7Ym9yZGVyLWxlZnQtY29sb3I6cmdiYSgwLDAsMCwuMTIpfS5tYXQtaG9yaXpvbnRhbC1zdGVwcGVyLWhlYWRlcltfbmdjb250ZW50LSVDT01QJV06OmJlZm9yZSwgLm1hdC1ob3Jpem9udGFsLXN0ZXBwZXItaGVhZGVyW19uZ2NvbnRlbnQtJUNPTVAlXTo6YWZ0ZXIsIC5tYXQtc3RlcHBlci1ob3Jpem9udGFsLWxpbmVbX25nY29udGVudC0lQ09NUCVde2JvcmRlci10b3AtY29sb3I6cmdiYSgwLDAsMCwuMTIpfS5tYXQtaG9yaXpvbnRhbC1zdGVwcGVyLWhlYWRlcltfbmdjb250ZW50LSVDT01QJV17aGVpZ2h0OjcycHh9Lm1hdC1zdGVwcGVyLWxhYmVsLXBvc2l0aW9uLWJvdHRvbVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWhvcml6b250YWwtc3RlcHBlci1oZWFkZXJbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXZlcnRpY2FsLXN0ZXBwZXItaGVhZGVyW19uZ2NvbnRlbnQtJUNPTVAlXXtwYWRkaW5nOjI0cHggMjRweH0ubWF0LXN0ZXBwZXItdmVydGljYWwtbGluZVtfbmdjb250ZW50LSVDT01QJV06OmJlZm9yZXt0b3A6LTE2cHg7Ym90dG9tOi0xNnB4fS5tYXQtc3RlcHBlci1sYWJlbC1wb3NpdGlvbi1ib3R0b21bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1ob3Jpem9udGFsLXN0ZXBwZXItaGVhZGVyW19uZ2NvbnRlbnQtJUNPTVAlXTo6YWZ0ZXIsIC5tYXQtc3RlcHBlci1sYWJlbC1wb3NpdGlvbi1ib3R0b21bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1ob3Jpem9udGFsLXN0ZXBwZXItaGVhZGVyW19uZ2NvbnRlbnQtJUNPTVAlXTo6YmVmb3Jle3RvcDozNnB4fS5tYXQtc3RlcHBlci1sYWJlbC1wb3NpdGlvbi1ib3R0b21bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1zdGVwcGVyLWhvcml6b250YWwtbGluZVtfbmdjb250ZW50LSVDT01QJV17dG9wOjM2cHh9Lm1hdC1zb3J0LWhlYWRlci1hcnJvd1tfbmdjb250ZW50LSVDT01QJV17Y29sb3I6IzYxNjE2MX0ubWF0LXRhYi1uYXYtYmFyW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10YWItaGVhZGVyW19uZ2NvbnRlbnQtJUNPTVAlXXtib3JkZXItYm90dG9tOjFweCBzb2xpZCByZ2JhKDAsMCwwLC4xMil9Lm1hdC10YWItZ3JvdXAtaW52ZXJ0ZWQtaGVhZGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtdGFiLW5hdi1iYXJbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXRhYi1ncm91cC1pbnZlcnRlZC1oZWFkZXJbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC10YWItaGVhZGVyW19uZ2NvbnRlbnQtJUNPTVAlXXtib3JkZXItdG9wOjFweCBzb2xpZCByZ2JhKDAsMCwwLC4xMik7Ym9yZGVyLWJvdHRvbTpub25lfS5tYXQtdGFiLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10YWItbGlua1tfbmdjb250ZW50LSVDT01QJV17Y29sb3I6IzIxMjEyMX0ubWF0LXRhYi1sYWJlbC5tYXQtdGFiLWRpc2FibGVkW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10YWItbGluay5tYXQtdGFiLWRpc2FibGVkW19uZ2NvbnRlbnQtJUNPTVAlXXtjb2xvcjojNzU3NTc1fS5tYXQtdGFiLWhlYWRlci1wYWdpbmF0aW9uLWNoZXZyb25bX25nY29udGVudC0lQ09NUCVde2JvcmRlci1jb2xvcjojMjEyMTIxfS5tYXQtdGFiLWhlYWRlci1wYWdpbmF0aW9uLWRpc2FibGVkW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtdGFiLWhlYWRlci1wYWdpbmF0aW9uLWNoZXZyb25bX25nY29udGVudC0lQ09NUCVde2JvcmRlci1jb2xvcjojNzU3NTc1fS5tYXQtdGFiLWdyb3VwW2NsYXNzKj1tYXQtYmFja2dyb3VuZC1dW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtdGFiLWhlYWRlcltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdGFiLW5hdi1iYXJbY2xhc3MqPW1hdC1iYWNrZ3JvdW5kLV1bX25nY29udGVudC0lQ09NUCVde2JvcmRlci1ib3R0b206bm9uZTtib3JkZXItdG9wOm5vbmV9Lm1hdC10YWItZ3JvdXAubWF0LXByaW1hcnlbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC10YWItbGFiZWwuY2RrLWtleWJvYXJkLWZvY3VzZWRbX25nY29udGVudC0lQ09NUCVdOm5vdCgubWF0LXRhYi1kaXNhYmxlZCksIC5tYXQtdGFiLWdyb3VwLm1hdC1wcmltYXJ5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtdGFiLWxhYmVsLmNkay1wcm9ncmFtLWZvY3VzZWRbX25nY29udGVudC0lQ09NUCVdOm5vdCgubWF0LXRhYi1kaXNhYmxlZCksIC5tYXQtdGFiLWdyb3VwLm1hdC1wcmltYXJ5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtdGFiLWxpbmsuY2RrLWtleWJvYXJkLWZvY3VzZWRbX25nY29udGVudC0lQ09NUCVdOm5vdCgubWF0LXRhYi1kaXNhYmxlZCksIC5tYXQtdGFiLWdyb3VwLm1hdC1wcmltYXJ5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtdGFiLWxpbmsuY2RrLXByb2dyYW0tZm9jdXNlZFtfbmdjb250ZW50LSVDT01QJV06bm90KC5tYXQtdGFiLWRpc2FibGVkKSwgLm1hdC10YWItbmF2LWJhci5tYXQtcHJpbWFyeVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXRhYi1sYWJlbC5jZGsta2V5Ym9hcmQtZm9jdXNlZFtfbmdjb250ZW50LSVDT01QJV06bm90KC5tYXQtdGFiLWRpc2FibGVkKSwgLm1hdC10YWItbmF2LWJhci5tYXQtcHJpbWFyeVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXRhYi1sYWJlbC5jZGstcHJvZ3JhbS1mb2N1c2VkW19uZ2NvbnRlbnQtJUNPTVAlXTpub3QoLm1hdC10YWItZGlzYWJsZWQpLCAubWF0LXRhYi1uYXYtYmFyLm1hdC1wcmltYXJ5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtdGFiLWxpbmsuY2RrLWtleWJvYXJkLWZvY3VzZWRbX25nY29udGVudC0lQ09NUCVdOm5vdCgubWF0LXRhYi1kaXNhYmxlZCksIC5tYXQtdGFiLW5hdi1iYXIubWF0LXByaW1hcnlbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC10YWItbGluay5jZGstcHJvZ3JhbS1mb2N1c2VkW19uZ2NvbnRlbnQtJUNPTVAlXTpub3QoLm1hdC10YWItZGlzYWJsZWQpe2JhY2tncm91bmQtY29sb3I6cmdiYSgyNTUsMTUyLDAsLjMpfS5tYXQtdGFiLWdyb3VwLm1hdC1wcmltYXJ5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaW5rLWJhcltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdGFiLW5hdi1iYXIubWF0LXByaW1hcnlbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pbmstYmFyW19uZ2NvbnRlbnQtJUNPTVAlXXtiYWNrZ3JvdW5kLWNvbG9yOiNmNTdjMDB9Lm1hdC10YWItZ3JvdXAubWF0LXByaW1hcnkubWF0LWJhY2tncm91bmQtcHJpbWFyeVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWluay1iYXJbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXRhYi1uYXYtYmFyLm1hdC1wcmltYXJ5Lm1hdC1iYWNrZ3JvdW5kLXByaW1hcnlbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pbmstYmFyW19uZ2NvbnRlbnQtJUNPTVAlXXtiYWNrZ3JvdW5kLWNvbG9yOiNmZmZ9Lm1hdC10YWItZ3JvdXAubWF0LWFjY2VudFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXRhYi1sYWJlbC5jZGsta2V5Ym9hcmQtZm9jdXNlZFtfbmdjb250ZW50LSVDT01QJV06bm90KC5tYXQtdGFiLWRpc2FibGVkKSwgLm1hdC10YWItZ3JvdXAubWF0LWFjY2VudFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXRhYi1sYWJlbC5jZGstcHJvZ3JhbS1mb2N1c2VkW19uZ2NvbnRlbnQtJUNPTVAlXTpub3QoLm1hdC10YWItZGlzYWJsZWQpLCAubWF0LXRhYi1ncm91cC5tYXQtYWNjZW50W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtdGFiLWxpbmsuY2RrLWtleWJvYXJkLWZvY3VzZWRbX25nY29udGVudC0lQ09NUCVdOm5vdCgubWF0LXRhYi1kaXNhYmxlZCksIC5tYXQtdGFiLWdyb3VwLm1hdC1hY2NlbnRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC10YWItbGluay5jZGstcHJvZ3JhbS1mb2N1c2VkW19uZ2NvbnRlbnQtJUNPTVAlXTpub3QoLm1hdC10YWItZGlzYWJsZWQpLCAubWF0LXRhYi1uYXYtYmFyLm1hdC1hY2NlbnRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC10YWItbGFiZWwuY2RrLWtleWJvYXJkLWZvY3VzZWRbX25nY29udGVudC0lQ09NUCVdOm5vdCgubWF0LXRhYi1kaXNhYmxlZCksIC5tYXQtdGFiLW5hdi1iYXIubWF0LWFjY2VudFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXRhYi1sYWJlbC5jZGstcHJvZ3JhbS1mb2N1c2VkW19uZ2NvbnRlbnQtJUNPTVAlXTpub3QoLm1hdC10YWItZGlzYWJsZWQpLCAubWF0LXRhYi1uYXYtYmFyLm1hdC1hY2NlbnRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC10YWItbGluay5jZGsta2V5Ym9hcmQtZm9jdXNlZFtfbmdjb250ZW50LSVDT01QJV06bm90KC5tYXQtdGFiLWRpc2FibGVkKSwgLm1hdC10YWItbmF2LWJhci5tYXQtYWNjZW50W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtdGFiLWxpbmsuY2RrLXByb2dyYW0tZm9jdXNlZFtfbmdjb250ZW50LSVDT01QJV06bm90KC5tYXQtdGFiLWRpc2FibGVkKXtiYWNrZ3JvdW5kLWNvbG9yOnJnYmEoMjU1LDE1MiwwLC4zKX0ubWF0LXRhYi1ncm91cC5tYXQtYWNjZW50W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaW5rLWJhcltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdGFiLW5hdi1iYXIubWF0LWFjY2VudFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWluay1iYXJbX25nY29udGVudC0lQ09NUCVde2JhY2tncm91bmQtY29sb3I6I2ZmOTgwMH0ubWF0LXRhYi1ncm91cC5tYXQtYWNjZW50Lm1hdC1iYWNrZ3JvdW5kLWFjY2VudFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWluay1iYXJbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXRhYi1uYXYtYmFyLm1hdC1hY2NlbnQubWF0LWJhY2tncm91bmQtYWNjZW50W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaW5rLWJhcltfbmdjb250ZW50LSVDT01QJV17YmFja2dyb3VuZC1jb2xvcjojZmZmfS5tYXQtdGFiLWdyb3VwLm1hdC13YXJuW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtdGFiLWxhYmVsLmNkay1rZXlib2FyZC1mb2N1c2VkW19uZ2NvbnRlbnQtJUNPTVAlXTpub3QoLm1hdC10YWItZGlzYWJsZWQpLCAubWF0LXRhYi1ncm91cC5tYXQtd2Fybltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXRhYi1sYWJlbC5jZGstcHJvZ3JhbS1mb2N1c2VkW19uZ2NvbnRlbnQtJUNPTVAlXTpub3QoLm1hdC10YWItZGlzYWJsZWQpLCAubWF0LXRhYi1ncm91cC5tYXQtd2Fybltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXRhYi1saW5rLmNkay1rZXlib2FyZC1mb2N1c2VkW19uZ2NvbnRlbnQtJUNPTVAlXTpub3QoLm1hdC10YWItZGlzYWJsZWQpLCAubWF0LXRhYi1ncm91cC5tYXQtd2Fybltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXRhYi1saW5rLmNkay1wcm9ncmFtLWZvY3VzZWRbX25nY29udGVudC0lQ09NUCVdOm5vdCgubWF0LXRhYi1kaXNhYmxlZCksIC5tYXQtdGFiLW5hdi1iYXIubWF0LXdhcm5bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC10YWItbGFiZWwuY2RrLWtleWJvYXJkLWZvY3VzZWRbX25nY29udGVudC0lQ09NUCVdOm5vdCgubWF0LXRhYi1kaXNhYmxlZCksIC5tYXQtdGFiLW5hdi1iYXIubWF0LXdhcm5bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC10YWItbGFiZWwuY2RrLXByb2dyYW0tZm9jdXNlZFtfbmdjb250ZW50LSVDT01QJV06bm90KC5tYXQtdGFiLWRpc2FibGVkKSwgLm1hdC10YWItbmF2LWJhci5tYXQtd2Fybltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXRhYi1saW5rLmNkay1rZXlib2FyZC1mb2N1c2VkW19uZ2NvbnRlbnQtJUNPTVAlXTpub3QoLm1hdC10YWItZGlzYWJsZWQpLCAubWF0LXRhYi1uYXYtYmFyLm1hdC13YXJuW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtdGFiLWxpbmsuY2RrLXByb2dyYW0tZm9jdXNlZFtfbmdjb250ZW50LSVDT01QJV06bm90KC5tYXQtdGFiLWRpc2FibGVkKXtiYWNrZ3JvdW5kLWNvbG9yOnJnYmEoMjU1LDIwNSwyMTAsLjMpfS5tYXQtdGFiLWdyb3VwLm1hdC13YXJuW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaW5rLWJhcltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdGFiLW5hdi1iYXIubWF0LXdhcm5bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pbmstYmFyW19uZ2NvbnRlbnQtJUNPTVAlXXtiYWNrZ3JvdW5kLWNvbG9yOiNmNDQzMzZ9Lm1hdC10YWItZ3JvdXAubWF0LXdhcm4ubWF0LWJhY2tncm91bmQtd2Fybltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWluay1iYXJbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXRhYi1uYXYtYmFyLm1hdC13YXJuLm1hdC1iYWNrZ3JvdW5kLXdhcm5bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pbmstYmFyW19uZ2NvbnRlbnQtJUNPTVAlXXtiYWNrZ3JvdW5kLWNvbG9yOiNmZmZ9Lm1hdC10YWItZ3JvdXAubWF0LWJhY2tncm91bmQtcHJpbWFyeVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXRhYi1sYWJlbC5jZGsta2V5Ym9hcmQtZm9jdXNlZFtfbmdjb250ZW50LSVDT01QJV06bm90KC5tYXQtdGFiLWRpc2FibGVkKSwgLm1hdC10YWItZ3JvdXAubWF0LWJhY2tncm91bmQtcHJpbWFyeVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXRhYi1sYWJlbC5jZGstcHJvZ3JhbS1mb2N1c2VkW19uZ2NvbnRlbnQtJUNPTVAlXTpub3QoLm1hdC10YWItZGlzYWJsZWQpLCAubWF0LXRhYi1ncm91cC5tYXQtYmFja2dyb3VuZC1wcmltYXJ5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtdGFiLWxpbmsuY2RrLWtleWJvYXJkLWZvY3VzZWRbX25nY29udGVudC0lQ09NUCVdOm5vdCgubWF0LXRhYi1kaXNhYmxlZCksIC5tYXQtdGFiLWdyb3VwLm1hdC1iYWNrZ3JvdW5kLXByaW1hcnlbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC10YWItbGluay5jZGstcHJvZ3JhbS1mb2N1c2VkW19uZ2NvbnRlbnQtJUNPTVAlXTpub3QoLm1hdC10YWItZGlzYWJsZWQpLCAubWF0LXRhYi1uYXYtYmFyLm1hdC1iYWNrZ3JvdW5kLXByaW1hcnlbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC10YWItbGFiZWwuY2RrLWtleWJvYXJkLWZvY3VzZWRbX25nY29udGVudC0lQ09NUCVdOm5vdCgubWF0LXRhYi1kaXNhYmxlZCksIC5tYXQtdGFiLW5hdi1iYXIubWF0LWJhY2tncm91bmQtcHJpbWFyeVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXRhYi1sYWJlbC5jZGstcHJvZ3JhbS1mb2N1c2VkW19uZ2NvbnRlbnQtJUNPTVAlXTpub3QoLm1hdC10YWItZGlzYWJsZWQpLCAubWF0LXRhYi1uYXYtYmFyLm1hdC1iYWNrZ3JvdW5kLXByaW1hcnlbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC10YWItbGluay5jZGsta2V5Ym9hcmQtZm9jdXNlZFtfbmdjb250ZW50LSVDT01QJV06bm90KC5tYXQtdGFiLWRpc2FibGVkKSwgLm1hdC10YWItbmF2LWJhci5tYXQtYmFja2dyb3VuZC1wcmltYXJ5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtdGFiLWxpbmsuY2RrLXByb2dyYW0tZm9jdXNlZFtfbmdjb250ZW50LSVDT01QJV06bm90KC5tYXQtdGFiLWRpc2FibGVkKXtiYWNrZ3JvdW5kLWNvbG9yOnJnYmEoMjU1LDE1MiwwLC4zKX0ubWF0LXRhYi1ncm91cC5tYXQtYmFja2dyb3VuZC1wcmltYXJ5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtdGFiLWhlYWRlcltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdGFiLWdyb3VwLm1hdC1iYWNrZ3JvdW5kLXByaW1hcnlbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC10YWItbGlua3NbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXRhYi1ncm91cC5tYXQtYmFja2dyb3VuZC1wcmltYXJ5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtdGFiLWhlYWRlci1wYWdpbmF0aW9uW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10YWItbmF2LWJhci5tYXQtYmFja2dyb3VuZC1wcmltYXJ5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtdGFiLWhlYWRlcltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdGFiLW5hdi1iYXIubWF0LWJhY2tncm91bmQtcHJpbWFyeVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXRhYi1saW5rc1tfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdGFiLW5hdi1iYXIubWF0LWJhY2tncm91bmQtcHJpbWFyeVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXRhYi1oZWFkZXItcGFnaW5hdGlvbltfbmdjb250ZW50LSVDT01QJV17YmFja2dyb3VuZC1jb2xvcjojZjU3YzAwfS5tYXQtdGFiLWdyb3VwLm1hdC1iYWNrZ3JvdW5kLXByaW1hcnlbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC10YWItbGFiZWxbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXRhYi1ncm91cC5tYXQtYmFja2dyb3VuZC1wcmltYXJ5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtdGFiLWxpbmtbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXRhYi1uYXYtYmFyLm1hdC1iYWNrZ3JvdW5kLXByaW1hcnlbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC10YWItbGFiZWxbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXRhYi1uYXYtYmFyLm1hdC1iYWNrZ3JvdW5kLXByaW1hcnlbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC10YWItbGlua1tfbmdjb250ZW50LSVDT01QJV17Y29sb3I6I2ZmZn0ubWF0LXRhYi1ncm91cC5tYXQtYmFja2dyb3VuZC1wcmltYXJ5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtdGFiLWxhYmVsLm1hdC10YWItZGlzYWJsZWRbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXRhYi1ncm91cC5tYXQtYmFja2dyb3VuZC1wcmltYXJ5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtdGFiLWxpbmsubWF0LXRhYi1kaXNhYmxlZFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdGFiLW5hdi1iYXIubWF0LWJhY2tncm91bmQtcHJpbWFyeVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXRhYi1sYWJlbC5tYXQtdGFiLWRpc2FibGVkW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10YWItbmF2LWJhci5tYXQtYmFja2dyb3VuZC1wcmltYXJ5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtdGFiLWxpbmsubWF0LXRhYi1kaXNhYmxlZFtfbmdjb250ZW50LSVDT01QJV17Y29sb3I6cmdiYSgyNTUsMjU1LDI1NSwuNCl9Lm1hdC10YWItZ3JvdXAubWF0LWJhY2tncm91bmQtcHJpbWFyeVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXRhYi1oZWFkZXItcGFnaW5hdGlvbi1jaGV2cm9uW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10YWItbmF2LWJhci5tYXQtYmFja2dyb3VuZC1wcmltYXJ5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtdGFiLWhlYWRlci1wYWdpbmF0aW9uLWNoZXZyb25bX25nY29udGVudC0lQ09NUCVde2JvcmRlci1jb2xvcjojZmZmfS5tYXQtdGFiLWdyb3VwLm1hdC1iYWNrZ3JvdW5kLXByaW1hcnlbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC10YWItaGVhZGVyLXBhZ2luYXRpb24tZGlzYWJsZWRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC10YWItaGVhZGVyLXBhZ2luYXRpb24tY2hldnJvbltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdGFiLW5hdi1iYXIubWF0LWJhY2tncm91bmQtcHJpbWFyeVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXRhYi1oZWFkZXItcGFnaW5hdGlvbi1kaXNhYmxlZFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXRhYi1oZWFkZXItcGFnaW5hdGlvbi1jaGV2cm9uW19uZ2NvbnRlbnQtJUNPTVAlXXtib3JkZXItY29sb3I6cmdiYSgyNTUsMjU1LDI1NSwuNCl9Lm1hdC10YWItZ3JvdXAubWF0LWJhY2tncm91bmQtcHJpbWFyeVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXJpcHBsZS1lbGVtZW50W19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10YWItbmF2LWJhci5tYXQtYmFja2dyb3VuZC1wcmltYXJ5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtcmlwcGxlLWVsZW1lbnRbX25nY29udGVudC0lQ09NUCVde2JhY2tncm91bmQtY29sb3I6cmdiYSgyNTUsMjU1LDI1NSwuMTIpfS5tYXQtdGFiLWdyb3VwLm1hdC1iYWNrZ3JvdW5kLWFjY2VudFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXRhYi1sYWJlbC5jZGsta2V5Ym9hcmQtZm9jdXNlZFtfbmdjb250ZW50LSVDT01QJV06bm90KC5tYXQtdGFiLWRpc2FibGVkKSwgLm1hdC10YWItZ3JvdXAubWF0LWJhY2tncm91bmQtYWNjZW50W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtdGFiLWxhYmVsLmNkay1wcm9ncmFtLWZvY3VzZWRbX25nY29udGVudC0lQ09NUCVdOm5vdCgubWF0LXRhYi1kaXNhYmxlZCksIC5tYXQtdGFiLWdyb3VwLm1hdC1iYWNrZ3JvdW5kLWFjY2VudFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXRhYi1saW5rLmNkay1rZXlib2FyZC1mb2N1c2VkW19uZ2NvbnRlbnQtJUNPTVAlXTpub3QoLm1hdC10YWItZGlzYWJsZWQpLCAubWF0LXRhYi1ncm91cC5tYXQtYmFja2dyb3VuZC1hY2NlbnRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC10YWItbGluay5jZGstcHJvZ3JhbS1mb2N1c2VkW19uZ2NvbnRlbnQtJUNPTVAlXTpub3QoLm1hdC10YWItZGlzYWJsZWQpLCAubWF0LXRhYi1uYXYtYmFyLm1hdC1iYWNrZ3JvdW5kLWFjY2VudFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXRhYi1sYWJlbC5jZGsta2V5Ym9hcmQtZm9jdXNlZFtfbmdjb250ZW50LSVDT01QJV06bm90KC5tYXQtdGFiLWRpc2FibGVkKSwgLm1hdC10YWItbmF2LWJhci5tYXQtYmFja2dyb3VuZC1hY2NlbnRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC10YWItbGFiZWwuY2RrLXByb2dyYW0tZm9jdXNlZFtfbmdjb250ZW50LSVDT01QJV06bm90KC5tYXQtdGFiLWRpc2FibGVkKSwgLm1hdC10YWItbmF2LWJhci5tYXQtYmFja2dyb3VuZC1hY2NlbnRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC10YWItbGluay5jZGsta2V5Ym9hcmQtZm9jdXNlZFtfbmdjb250ZW50LSVDT01QJV06bm90KC5tYXQtdGFiLWRpc2FibGVkKSwgLm1hdC10YWItbmF2LWJhci5tYXQtYmFja2dyb3VuZC1hY2NlbnRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC10YWItbGluay5jZGstcHJvZ3JhbS1mb2N1c2VkW19uZ2NvbnRlbnQtJUNPTVAlXTpub3QoLm1hdC10YWItZGlzYWJsZWQpe2JhY2tncm91bmQtY29sb3I6cmdiYSgyNTUsMTUyLDAsLjMpfS5tYXQtdGFiLWdyb3VwLm1hdC1iYWNrZ3JvdW5kLWFjY2VudFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXRhYi1oZWFkZXJbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXRhYi1ncm91cC5tYXQtYmFja2dyb3VuZC1hY2NlbnRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC10YWItbGlua3NbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXRhYi1ncm91cC5tYXQtYmFja2dyb3VuZC1hY2NlbnRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC10YWItaGVhZGVyLXBhZ2luYXRpb25bX25nY29udGVudC0lQ09NUCVdLCAubWF0LXRhYi1uYXYtYmFyLm1hdC1iYWNrZ3JvdW5kLWFjY2VudFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXRhYi1oZWFkZXJbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXRhYi1uYXYtYmFyLm1hdC1iYWNrZ3JvdW5kLWFjY2VudFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXRhYi1saW5rc1tfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdGFiLW5hdi1iYXIubWF0LWJhY2tncm91bmQtYWNjZW50W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtdGFiLWhlYWRlci1wYWdpbmF0aW9uW19uZ2NvbnRlbnQtJUNPTVAlXXtiYWNrZ3JvdW5kLWNvbG9yOiNmZjk4MDB9Lm1hdC10YWItZ3JvdXAubWF0LWJhY2tncm91bmQtYWNjZW50W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtdGFiLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10YWItZ3JvdXAubWF0LWJhY2tncm91bmQtYWNjZW50W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtdGFiLWxpbmtbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXRhYi1uYXYtYmFyLm1hdC1iYWNrZ3JvdW5kLWFjY2VudFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXRhYi1sYWJlbFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdGFiLW5hdi1iYXIubWF0LWJhY2tncm91bmQtYWNjZW50W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtdGFiLWxpbmtbX25nY29udGVudC0lQ09NUCVde2NvbG9yOiNmZmZ9Lm1hdC10YWItZ3JvdXAubWF0LWJhY2tncm91bmQtYWNjZW50W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtdGFiLWxhYmVsLm1hdC10YWItZGlzYWJsZWRbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXRhYi1ncm91cC5tYXQtYmFja2dyb3VuZC1hY2NlbnRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC10YWItbGluay5tYXQtdGFiLWRpc2FibGVkW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10YWItbmF2LWJhci5tYXQtYmFja2dyb3VuZC1hY2NlbnRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC10YWItbGFiZWwubWF0LXRhYi1kaXNhYmxlZFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdGFiLW5hdi1iYXIubWF0LWJhY2tncm91bmQtYWNjZW50W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtdGFiLWxpbmsubWF0LXRhYi1kaXNhYmxlZFtfbmdjb250ZW50LSVDT01QJV17Y29sb3I6cmdiYSgyNTUsMjU1LDI1NSwuNCl9Lm1hdC10YWItZ3JvdXAubWF0LWJhY2tncm91bmQtYWNjZW50W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtdGFiLWhlYWRlci1wYWdpbmF0aW9uLWNoZXZyb25bX25nY29udGVudC0lQ09NUCVdLCAubWF0LXRhYi1uYXYtYmFyLm1hdC1iYWNrZ3JvdW5kLWFjY2VudFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXRhYi1oZWFkZXItcGFnaW5hdGlvbi1jaGV2cm9uW19uZ2NvbnRlbnQtJUNPTVAlXXtib3JkZXItY29sb3I6I2ZmZn0ubWF0LXRhYi1ncm91cC5tYXQtYmFja2dyb3VuZC1hY2NlbnRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC10YWItaGVhZGVyLXBhZ2luYXRpb24tZGlzYWJsZWRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC10YWItaGVhZGVyLXBhZ2luYXRpb24tY2hldnJvbltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdGFiLW5hdi1iYXIubWF0LWJhY2tncm91bmQtYWNjZW50W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtdGFiLWhlYWRlci1wYWdpbmF0aW9uLWRpc2FibGVkW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtdGFiLWhlYWRlci1wYWdpbmF0aW9uLWNoZXZyb25bX25nY29udGVudC0lQ09NUCVde2JvcmRlci1jb2xvcjpyZ2JhKDI1NSwyNTUsMjU1LC40KX0ubWF0LXRhYi1ncm91cC5tYXQtYmFja2dyb3VuZC1hY2NlbnRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1yaXBwbGUtZWxlbWVudFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdGFiLW5hdi1iYXIubWF0LWJhY2tncm91bmQtYWNjZW50W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtcmlwcGxlLWVsZW1lbnRbX25nY29udGVudC0lQ09NUCVde2JhY2tncm91bmQtY29sb3I6cmdiYSgyNTUsMjU1LDI1NSwuMTIpfS5tYXQtdGFiLWdyb3VwLm1hdC1iYWNrZ3JvdW5kLXdhcm5bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC10YWItbGFiZWwuY2RrLWtleWJvYXJkLWZvY3VzZWRbX25nY29udGVudC0lQ09NUCVdOm5vdCgubWF0LXRhYi1kaXNhYmxlZCksIC5tYXQtdGFiLWdyb3VwLm1hdC1iYWNrZ3JvdW5kLXdhcm5bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC10YWItbGFiZWwuY2RrLXByb2dyYW0tZm9jdXNlZFtfbmdjb250ZW50LSVDT01QJV06bm90KC5tYXQtdGFiLWRpc2FibGVkKSwgLm1hdC10YWItZ3JvdXAubWF0LWJhY2tncm91bmQtd2Fybltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXRhYi1saW5rLmNkay1rZXlib2FyZC1mb2N1c2VkW19uZ2NvbnRlbnQtJUNPTVAlXTpub3QoLm1hdC10YWItZGlzYWJsZWQpLCAubWF0LXRhYi1ncm91cC5tYXQtYmFja2dyb3VuZC13YXJuW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtdGFiLWxpbmsuY2RrLXByb2dyYW0tZm9jdXNlZFtfbmdjb250ZW50LSVDT01QJV06bm90KC5tYXQtdGFiLWRpc2FibGVkKSwgLm1hdC10YWItbmF2LWJhci5tYXQtYmFja2dyb3VuZC13YXJuW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtdGFiLWxhYmVsLmNkay1rZXlib2FyZC1mb2N1c2VkW19uZ2NvbnRlbnQtJUNPTVAlXTpub3QoLm1hdC10YWItZGlzYWJsZWQpLCAubWF0LXRhYi1uYXYtYmFyLm1hdC1iYWNrZ3JvdW5kLXdhcm5bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC10YWItbGFiZWwuY2RrLXByb2dyYW0tZm9jdXNlZFtfbmdjb250ZW50LSVDT01QJV06bm90KC5tYXQtdGFiLWRpc2FibGVkKSwgLm1hdC10YWItbmF2LWJhci5tYXQtYmFja2dyb3VuZC13YXJuW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtdGFiLWxpbmsuY2RrLWtleWJvYXJkLWZvY3VzZWRbX25nY29udGVudC0lQ09NUCVdOm5vdCgubWF0LXRhYi1kaXNhYmxlZCksIC5tYXQtdGFiLW5hdi1iYXIubWF0LWJhY2tncm91bmQtd2Fybltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXRhYi1saW5rLmNkay1wcm9ncmFtLWZvY3VzZWRbX25nY29udGVudC0lQ09NUCVdOm5vdCgubWF0LXRhYi1kaXNhYmxlZCl7YmFja2dyb3VuZC1jb2xvcjpyZ2JhKDI1NSwyMDUsMjEwLC4zKX0ubWF0LXRhYi1ncm91cC5tYXQtYmFja2dyb3VuZC13YXJuW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtdGFiLWhlYWRlcltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdGFiLWdyb3VwLm1hdC1iYWNrZ3JvdW5kLXdhcm5bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC10YWItbGlua3NbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXRhYi1ncm91cC5tYXQtYmFja2dyb3VuZC13YXJuW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtdGFiLWhlYWRlci1wYWdpbmF0aW9uW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10YWItbmF2LWJhci5tYXQtYmFja2dyb3VuZC13YXJuW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtdGFiLWhlYWRlcltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdGFiLW5hdi1iYXIubWF0LWJhY2tncm91bmQtd2Fybltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXRhYi1saW5rc1tfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdGFiLW5hdi1iYXIubWF0LWJhY2tncm91bmQtd2Fybltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXRhYi1oZWFkZXItcGFnaW5hdGlvbltfbmdjb250ZW50LSVDT01QJV17YmFja2dyb3VuZC1jb2xvcjojZjQ0MzM2fS5tYXQtdGFiLWdyb3VwLm1hdC1iYWNrZ3JvdW5kLXdhcm5bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC10YWItbGFiZWxbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXRhYi1ncm91cC5tYXQtYmFja2dyb3VuZC13YXJuW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtdGFiLWxpbmtbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXRhYi1uYXYtYmFyLm1hdC1iYWNrZ3JvdW5kLXdhcm5bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC10YWItbGFiZWxbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXRhYi1uYXYtYmFyLm1hdC1iYWNrZ3JvdW5kLXdhcm5bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC10YWItbGlua1tfbmdjb250ZW50LSVDT01QJV17Y29sb3I6I2ZmZn0ubWF0LXRhYi1ncm91cC5tYXQtYmFja2dyb3VuZC13YXJuW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtdGFiLWxhYmVsLm1hdC10YWItZGlzYWJsZWRbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXRhYi1ncm91cC5tYXQtYmFja2dyb3VuZC13YXJuW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtdGFiLWxpbmsubWF0LXRhYi1kaXNhYmxlZFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdGFiLW5hdi1iYXIubWF0LWJhY2tncm91bmQtd2Fybltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXRhYi1sYWJlbC5tYXQtdGFiLWRpc2FibGVkW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10YWItbmF2LWJhci5tYXQtYmFja2dyb3VuZC13YXJuW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtdGFiLWxpbmsubWF0LXRhYi1kaXNhYmxlZFtfbmdjb250ZW50LSVDT01QJV17Y29sb3I6cmdiYSgyNTUsMjU1LDI1NSwuNCl9Lm1hdC10YWItZ3JvdXAubWF0LWJhY2tncm91bmQtd2Fybltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXRhYi1oZWFkZXItcGFnaW5hdGlvbi1jaGV2cm9uW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10YWItbmF2LWJhci5tYXQtYmFja2dyb3VuZC13YXJuW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtdGFiLWhlYWRlci1wYWdpbmF0aW9uLWNoZXZyb25bX25nY29udGVudC0lQ09NUCVde2JvcmRlci1jb2xvcjojZmZmfS5tYXQtdGFiLWdyb3VwLm1hdC1iYWNrZ3JvdW5kLXdhcm5bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC10YWItaGVhZGVyLXBhZ2luYXRpb24tZGlzYWJsZWRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC10YWItaGVhZGVyLXBhZ2luYXRpb24tY2hldnJvbltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdGFiLW5hdi1iYXIubWF0LWJhY2tncm91bmQtd2Fybltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXRhYi1oZWFkZXItcGFnaW5hdGlvbi1kaXNhYmxlZFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXRhYi1oZWFkZXItcGFnaW5hdGlvbi1jaGV2cm9uW19uZ2NvbnRlbnQtJUNPTVAlXXtib3JkZXItY29sb3I6cmdiYSgyNTUsMjU1LDI1NSwuNCl9Lm1hdC10YWItZ3JvdXAubWF0LWJhY2tncm91bmQtd2Fybltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXJpcHBsZS1lbGVtZW50W19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10YWItbmF2LWJhci5tYXQtYmFja2dyb3VuZC13YXJuW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtcmlwcGxlLWVsZW1lbnRbX25nY29udGVudC0lQ09NUCVde2JhY2tncm91bmQtY29sb3I6cmdiYSgyNTUsMjU1LDI1NSwuMTIpfS5tYXQtdG9vbGJhcltfbmdjb250ZW50LSVDT01QJV17YmFja2dyb3VuZDojZjVmNWY1O2NvbG9yOiMyMTIxMjF9Lm1hdC10b29sYmFyLm1hdC1wcmltYXJ5W19uZ2NvbnRlbnQtJUNPTVAlXXtiYWNrZ3JvdW5kOiNmNTdjMDA7Y29sb3I6I2ZmZn0ubWF0LXRvb2xiYXIubWF0LWFjY2VudFtfbmdjb250ZW50LSVDT01QJV17YmFja2dyb3VuZDojZmY5ODAwO2NvbG9yOiNmZmZ9Lm1hdC10b29sYmFyLm1hdC13YXJuW19uZ2NvbnRlbnQtJUNPTVAlXXtiYWNrZ3JvdW5kOiNmNDQzMzY7Y29sb3I6I2ZmZn0ubWF0LXRvb2xiYXJbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLXVuZGVybGluZVtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdG9vbGJhcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtcmlwcGxlW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10b29sYmFyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9jdXNlZFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtcmlwcGxlW19uZ2NvbnRlbnQtJUNPTVAlXXtiYWNrZ3JvdW5kLWNvbG9yOmN1cnJlbnRDb2xvcn0ubWF0LXRvb2xiYXJbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10b29sYmFyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9jdXNlZFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXRvb2xiYXJbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1zZWxlY3QtdmFsdWVbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXRvb2xiYXJbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1zZWxlY3QtYXJyb3dbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXRvb2xiYXJbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLm1hdC1mb2N1c2VkW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtc2VsZWN0LWFycm93W19uZ2NvbnRlbnQtJUNPTVAlXXtjb2xvcjppbmhlcml0fS5tYXQtdG9vbGJhcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWlucHV0LWVsZW1lbnRbX25nY29udGVudC0lQ09NUCVde2NhcmV0LWNvbG9yOmN1cnJlbnRDb2xvcn0ubWF0LXRvb2xiYXItbXVsdGlwbGUtcm93c1tfbmdjb250ZW50LSVDT01QJV17bWluLWhlaWdodDo2NHB4fS5tYXQtdG9vbGJhci1yb3dbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXRvb2xiYXItc2luZ2xlLXJvd1tfbmdjb250ZW50LSVDT01QJV17aGVpZ2h0OjY0cHh9QG1lZGlhKG1heC13aWR0aDogNTk5cHgpey5tYXQtdG9vbGJhci1tdWx0aXBsZS1yb3dzW19uZ2NvbnRlbnQtJUNPTVAlXXttaW4taGVpZ2h0OjU2cHh9Lm1hdC10b29sYmFyLXJvd1tfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdG9vbGJhci1zaW5nbGUtcm93W19uZ2NvbnRlbnQtJUNPTVAlXXtoZWlnaHQ6NTZweH19Lm1hdC10b29sdGlwW19uZ2NvbnRlbnQtJUNPTVAlXXtiYWNrZ3JvdW5kOnJnYmEoOTcsOTcsOTcsLjkpfS5tYXQtdHJlZVtfbmdjb250ZW50LSVDT01QJV17YmFja2dyb3VuZDojZmZmfS5tYXQtdHJlZS1ub2RlW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1uZXN0ZWQtdHJlZS1ub2RlW19uZ2NvbnRlbnQtJUNPTVAlXXtjb2xvcjojMjEyMTIxfS5tYXQtdHJlZS1ub2RlW19uZ2NvbnRlbnQtJUNPTVAlXXttaW4taGVpZ2h0OjQ4cHh9Lm1hdC1zbmFjay1iYXItY29udGFpbmVyW19uZ2NvbnRlbnQtJUNPTVAlXXtjb2xvcjpyZ2JhKDI1NSwyNTUsMjU1LC43KTtiYWNrZ3JvdW5kOiMzMjMyMzI7Ym94LXNoYWRvdzowcHggM3B4IDVweCAtMXB4IHJnYmEoMCwgMCwgMCwgMC4yKSwwcHggNnB4IDEwcHggMHB4IHJnYmEoMCwgMCwgMCwgMC4xNCksMHB4IDFweCAxOHB4IDBweCByZ2JhKDAsIDAsIDAsIDAuMTIpfS5tYXQtc2ltcGxlLXNuYWNrYmFyLWFjdGlvbltfbmdjb250ZW50LSVDT01QJV17Y29sb3I6I2ZmOTgwMH0udGFnLWZpbHRlcltfbmdjb250ZW50LSVDT01QJV17ZGlzcGxheTpmbGV4O3Bvc2l0aW9uOnJlbGF0aXZlfW1hdC1pY29uW19uZ2NvbnRlbnQtJUNPTVAlXXtjb2xvcjojNjE2MTYxO2ZsZXg6bm9uZTttYXJnaW4tcmlnaHQ6NXB4fVtfbmdob3N0LSVDT01QJV17Y29sb3I6IzIxMjEyMTtmb250LXNpemU6MTNweH1bX25naG9zdC0lQ09NUCVdOm5vdCgudmFsaWQpe2NvbG9yOiNjNjI4Mjh9W19uZ2hvc3QtJUNPTVAlXTpub3QoLnZhbGlkKSAgIGlucHV0W19uZ2NvbnRlbnQtJUNPTVAlXXtjYXJldC1jb2xvcjpjdXJyZW50Q29sb3J9W19uZ2hvc3QtJUNPTVAlXTpub3QoLnZhbGlkKSAgIC5lcnJvci1pY29uW19uZ2NvbnRlbnQtJUNPTVAlXXtjb2xvcjojYzYyODI4O3Bvc2l0aW9uOmFic29sdXRlO3JpZ2h0OjB9J10sY2hhbmdlRGV0ZWN0aW9uOjB9KTtjbGFzcyB2JHtjb25zdHJ1Y3Rvcih0KXt0aGlzLnN0b3JlPXQsdGhpcy50YWdGaWx0ZXIkPXRoaXMuc3RvcmUuc2VsZWN0KE1EKSx0aGlzLmlzVGFnRmlsdGVyUmVnZXhWYWxpZCQ9dGhpcy50YWdGaWx0ZXIkLnBpcGUoZnQoKHQ9Pnt0cnl7cmV0dXJuIG5ldyBSZWdFeHAodCksITB9Y2F0Y2godCl7cmV0dXJuITF9fSkpKSx0aGlzLmNvbXBsZXRpb25zJD10aGlzLnN0b3JlLnNlbGVjdChlRCkucGlwZShmdCgodD0+dC5tYXAoKCh7dGFnOnR9KT0+dCkpKSksc2UoKHQ9PkV0KFtaKHQpLHRoaXMuc3RvcmUuc2VsZWN0KE1EKV0pKSksZnQoKChbdCxuXSk9Pnt0cnl7cmV0dXJuW3QsbmV3IFJlZ0V4cChuKV19Y2F0Y2gobil7cmV0dXJuW3QsbnVsbF19fSkpLEd0KCgoWyx0XSk9Pm51bGwhPT10KSksZnQoKChbdCxuXSk9PnQuZmlsdGVyKCh0PT5uLnRlc3QodCkpKS5zb3J0KEtLKSkpKX1vblRhZ0ZpbHRlckNoYW5nZSh0KXt0aGlzLnN0b3JlLmRpc3BhdGNoKHZLKHt0YWdGaWx0ZXI6dH0pKX19ZnVuY3Rpb24gdyQodCxuKXtpZigxJnQmJihLZygwLCJzcGFuIiwyKSxKcCgxKSwkZygpKSwyJnQpe2NvbnN0IHQ9Z3AoKTt3cygxKSxRcCh0LmZpcnN0VGV4dFBhcnQoKSl9fXYkLsm1ZmFjPWZ1bmN0aW9uIHQobil7cmV0dXJuIG5ldyhufHx2JCkoWmcoY3YpKX0sdiQuybVjbXA9X28oe3R5cGU6diQsc2VsZWN0b3JzOltbIm1ldHJpY3MtdGFnLWZpbHRlciJdXSxkZWNsczo0LHZhcnM6OSxjb25zdHM6W1szLCJyZWdleEZpbHRlclZhbHVlIiwiaXNSZWdleEZpbHRlclZhbGlkIiwiY29tcGxldGlvbnMiLCJvblJlZ2V4RmlsdGVyVmFsdWVDaGFuZ2UiXV0sdGVtcGxhdGU6ZnVuY3Rpb24gdChuLGUpezEmbiYmKEtnKDAsIm1ldHJpY3MtdGFnLWZpbHRlci1jb21wb25lbnQiLDApLGNwKCJvblJlZ2V4RmlsdGVyVmFsdWVDaGFuZ2UiLChmdW5jdGlvbiB0KG4pe3JldHVybiBlLm9uVGFnRmlsdGVyQ2hhbmdlKG4pfSkpLHlmKDEsImFzeW5jIikseWYoMiwiYXN5bmMiKSx5ZigzLCJhc3luYyIpLCRnKCkpLDImbiYmSmcoInJlZ2V4RmlsdGVyVmFsdWUiLGtmKDEsMyxlLnRhZ0ZpbHRlciQpKSgiaXNSZWdleEZpbHRlclZhbGlkIixrZigyLDUsZS5pc1RhZ0ZpbHRlclJlZ2V4VmFsaWQkKSkoImNvbXBsZXRpb25zIixrZigzLDcsZS5jb21wbGV0aW9ucyQpKX0sZGlyZWN0aXZlczpbayRdLHBpcGVzOltvT10sZW5jYXBzdWxhdGlvbjoyLGNoYW5nZURldGVjdGlvbjowfSk7Y2xhc3MgUyR7cGFyc2VWYWx1ZSgpe2NvbnN0IHQ9dGhpcy52YWx1ZS5sYXN0SW5kZXhPZigiLyIpO3JldHVybi0xPT09dD97Zmlyc3Q6IiIsc2Vjb25kOnRoaXMudmFsdWV9OntmaXJzdDp0aGlzLnZhbHVlLnNsaWNlKDAsdCksc2Vjb25kOnRoaXMudmFsdWUuc2xpY2UodCl9fWZpcnN0VGV4dFBhcnQoKXtyZXR1cm4gdGhpcy5wYXJzZVZhbHVlKCkuZmlyc3R9c2Vjb25kVGV4dFBhcnQoKXtyZXR1cm4gdGhpcy5wYXJzZVZhbHVlKCkuc2Vjb25kfX1mdW5jdGlvbiBFJCh0LG4sZSl7cmV0dXJuIG58fGU/W2Usbj9uLm5hbWU6Ii4uLiJdLmZpbHRlcihCb29sZWFuKS5qb2luKCIvIik6dH1TJC7JtWZhYz1mdW5jdGlvbiB0KG4pe3JldHVybiBuZXcobnx8UyQpfSxTJC7JtWNtcD1fbyh7dHlwZTpTJCxzZWxlY3RvcnM6W1sidGItdHJ1bmNhdGVkLXBhdGgiXV0saW5wdXRzOnt2YWx1ZToidmFsdWUifSxkZWNsczozLHZhcnM6Mixjb25zdHM6W1siY2xhc3MiLCJmaXJzdC10ZXh0LXBhcnQiLDQsIm5nSWYiXSxbMSwic2Vjb25kLXRleHQtcGFydCJdLFsxLCJmaXJzdC10ZXh0LXBhcnQiXV0sdGVtcGxhdGU6ZnVuY3Rpb24gdChuLGUpezEmbiYmKFlnKDAsdyQsMiwxLCJzcGFuIiwwKSxLZygxLCJzcGFuIiwxKSxKcCgyKSwkZygpKSwyJm4mJihKZygibmdJZiIsZS5maXJzdFRleHRQYXJ0KCkubGVuZ3RoPjApLHdzKDIpLFFwKGUuc2Vjb25kVGV4dFBhcnQoKSkpfSxkaXJlY3RpdmVzOltXTV0sc3R5bGVzOlsiW19uZ2hvc3QtJUNPTVAlXXtkaXNwbGF5OmlubGluZS1mbGV4O3doaXRlLXNwYWNlOm5vd3JhcH0uZmlyc3QtdGV4dC1wYXJ0W19uZ2NvbnRlbnQtJUNPTVAlXXtmbGV4OjEgMSA0Y2g7bWF4LXdpZHRoOm1heC1jb250ZW50fS5maXJzdC10ZXh0LXBhcnRbX25nY29udGVudC0lQ09NUCVdLCAuc2Vjb25kLXRleHQtcGFydFtfbmdjb250ZW50LSVDT01QJV17b3ZlcmZsb3c6aGlkZGVuO3RleHQtb3ZlcmZsb3c6ZWxsaXBzaXN9Il19KTtjbGFzcyBBJHt9QSQuybVmYWM9ZnVuY3Rpb24gdChuKXtyZXR1cm4gbmV3KG58fEEkKX0sQSQuybVjbXA9X28oe3R5cGU6QSQsc2VsZWN0b3JzOltbImNhcmQtcnVuLW5hbWUtY29tcG9uZW50Il1dLGlucHV0czp7bmFtZToibmFtZSJ9LGRlY2xzOjEsdmFyczoxLHRlbXBsYXRlOmZ1bmN0aW9uIHQobixlKXsxJm4mJkpwKDApLDImbiYmUXAoZS5uYW1lKX0sZW5jYXBzdWxhdGlvbjoyLGNoYW5nZURldGVjdGlvbjowfSk7Y2xhc3MgeiR7Y29uc3RydWN0b3IodCl7dGhpcy5zdG9yZT10fW5nT25Jbml0KCl7dGhpcy5uYW1lJD1FdChbdGhpcy5zdG9yZS5zZWxlY3QoREQse3J1bklkOnRoaXMucnVuSWR9KSx0aGlzLnN0b3JlLnNlbGVjdChURCx7cnVuSWQ6dGhpcy5ydW5JZH0pLHRoaXMuc3RvcmUuc2VsZWN0KG9SKV0pLnBpcGUoZnQoKChbdCxuLGVdKT0+RSQodGhpcy5ydW5JZCx0LG4/ZVtuXTpudWxsKSkpKX19ZnVuY3Rpb24gUiQodCxuKXsxJnQmJnRwKDAsIm1hdC1zcGlubmVyIiwxNyl9ZnVuY3Rpb24gVCQodCxuKXtpZigxJnQmJihLZygwLCJkaXYiLDE1KSxKcCgxKSxZZygyLFIkLDEsMCwibWF0LXNwaW5uZXIiLDE2KSwkZygpKSwyJnQpe2NvbnN0IHQ9Z3AoKTt3cygxKSxLcCgiIFN0ZXAgIix0LnN0ZXBWYWx1ZXNbdC5zdGVwSW5kZXhdLCIgIiksd3MoMSksSmcoIm5nSWYiLHQubG9hZFN0YXRlPT09dC5EYXRhTG9hZFN0YXRlLkxPQURJTkcpfX16JC7JtWZhYz1mdW5jdGlvbiB0KG4pe3JldHVybiBuZXcobnx8eiQpKFpnKGN2KSl9LHokLsm1Y21wPV9vKHt0eXBlOnokLHNlbGVjdG9yczpbWyJjYXJkLXJ1bi1uYW1lIl1dLGlucHV0czp7cnVuSWQ6InJ1bklkIn0sZGVjbHM6Myx2YXJzOjYsY29uc3RzOltbMywibmFtZSJdXSx0ZW1wbGF0ZTpmdW5jdGlvbiB0KG4sZSl7MSZuJiYodHAoMCwiY2FyZC1ydW4tbmFtZS1jb21wb25lbnQiLDApLHlmKDEsImFzeW5jIikseWYoMiwiYXN5bmMiKSksMiZuJiYoSmcoIm5hbWUiLGtmKDEsMixlLm5hbWUkKSksTmcoInRpdGxlIixrZigyLDQsZS5uYW1lJCkpKX0sZGlyZWN0aXZlczpbQSRdLHBpcGVzOltvT10sZW5jYXBzdWxhdGlvbjoyLGNoYW5nZURldGVjdGlvbjowfSk7Y29uc3QgRCQ9ZnVuY3Rpb24odCl7cmV0dXJue2ZpbHRlcjp0fX07ZnVuY3Rpb24gSSQodCxuKXtpZigxJnQpe2NvbnN0IHQ9b3AoKTtucCgwKSxLZygxLCJkaXYiLDE4KSxLZygyLCJtYXQtc2xpZGVyIiwxOSksY3AoImlucHV0IiwoZnVuY3Rpb24gbihlKXtyZXR1cm4ganIodCksZ3AoKS5vblNsaWRlcklucHV0KGUpfSkpLCRnKCksJGcoKSxLZygzLCJkaXYiLDIwKSx0cCg0LCJpbWciLDIxKSwkZygpLGVwKCl9aWYoMiZ0KXtjb25zdCB0PWdwKCk7d3MoMiksSmcoImRpc2FibGVkIix0LnN0ZXBWYWx1ZXMubGVuZ3RoPD0xKSgibWluIiwwKSgibWF4Iix0LnN0ZXBWYWx1ZXMubGVuZ3RoLTEpKCJzdGVwIiwxKSgidGlja0ludGVydmFsIiwxKSgidmFsdWUiLHQuc3RlcEluZGV4KSx3cygyKSxDcCgiYWx0IiwiSW1hZ2UgYXQgc3RlcCAiLHQuc3RlcFZhbHVlc1t0LnN0ZXBJbmRleF0sIiIpLF9wKCJzcmMiLHQuaW1hZ2VVcmwsWGMpLEpnKCJuZ1N0eWxlIix1Zig5LEQkLHQuY3NzRmlsdGVyKCkpKX19ZnVuY3Rpb24gTiQodCxuKXsxJnQmJihLZygwLCJkaXYiLDIzKSxKcCgxLCIgRGF0YSBmYWlsZWQgdG8gbG9hZC4gIiksJGcoKSl9ZnVuY3Rpb24gRiQodCxuKXtpZigxJnQmJllnKDAsTiQsMiwwLCJkaXYiLDIyKSwyJnQpe2NvbnN0IHQ9Z3AoKTtKZygibmdJZiIsdC5sb2FkU3RhdGU9PT10LkRhdGFMb2FkU3RhdGUuRkFJTEVEKX19Y29uc3QgTCQ9ZnVuY3Rpb24odCl7cmV0dXJue2JhY2tncm91bmRDb2xvcjp0fX07Y2xhc3MgSCR7Y29uc3RydWN0b3IoKXt0aGlzLkRhdGFMb2FkU3RhdGU9ZlIsdGhpcy5vbkFjdHVhbFNpemVUb2dnbGU9bmV3IEVmLHRoaXMuc3RlcEluZGV4Q2hhbmdlPW5ldyBFZix0aGlzLm9uUGluQ2xpY2tlZD1uZXcgRWZ9Y3NzRmlsdGVyKCl7cmV0dXJuYGNvbnRyYXN0KCR7dGhpcy5jb250cmFzdEluTWlsbGkvMTB9JSkgYnJpZ2h0bmVzcygke3RoaXMuYnJpZ2h0bmVzc0luTWlsbGkvMWUzfSlgfW9uU2xpZGVySW5wdXQodCl7dGhpcy5zdGVwSW5kZXhDaGFuZ2UuZW1pdCh0LnZhbHVlKX19SCQuybVmYWM9ZnVuY3Rpb24gdChuKXtyZXR1cm4gbmV3KG58fEgkKX0sSCQuybVjbXA9X28oe3R5cGU6SCQsc2VsZWN0b3JzOltbImltYWdlLWNhcmQtY29tcG9uZW50Il1dLGhvc3RWYXJzOjIsaG9zdEJpbmRpbmdzOmZ1bmN0aW9uIHQobixlKXsyJm4mJkRwKCJhY3R1YWwtc2l6ZSIsZS5zaG93QWN0dWFsU2l6ZSl9LGlucHV0czp7bG9hZFN0YXRlOiJsb2FkU3RhdGUiLHRpdGxlOiJ0aXRsZSIsdGFnOiJ0YWciLHJ1bklkOiJydW5JZCIsc2FtcGxlOiJzYW1wbGUiLGltYWdlVXJsOiJpbWFnZVVybCIsc3RlcEluZGV4OiJzdGVwSW5kZXgiLHN0ZXBWYWx1ZXM6InN0ZXBWYWx1ZXMiLGJyaWdodG5lc3NJbk1pbGxpOiJicmlnaHRuZXNzSW5NaWxsaSIsY29udHJhc3RJbk1pbGxpOiJjb250cmFzdEluTWlsbGkiLHNob3dBY3R1YWxTaXplOiJzaG93QWN0dWFsU2l6ZSIscnVuQ29sb3JTY2FsZToicnVuQ29sb3JTY2FsZSIsYWxsb3dUb2dnbGVBY3R1YWxTaXplOiJhbGxvd1RvZ2dsZUFjdHVhbFNpemUiLGlzUGlubmVkOiJpc1Bpbm5lZCJ9LG91dHB1dHM6e29uQWN0dWFsU2l6ZVRvZ2dsZToib25BY3R1YWxTaXplVG9nZ2xlIixzdGVwSW5kZXhDaGFuZ2U6InN0ZXBJbmRleENoYW5nZSIsb25QaW5DbGlja2VkOiJvblBpbkNsaWNrZWQifSxkZWNsczoxNix2YXJzOjEyLGNvbnN0czpmdW5jdGlvbigpe3JldHVybltbMSwiaGVhZGluZyJdLFsxLCJ0YWciLDMsInRpdGxlIiwidmFsdWUiXSxbMSwicnVuIl0sWzEsImRvdCIsMywibmdTdHlsZSJdLFsxLCJydW4tdGV4dCIsMywicnVuSWQiXSxbImNsYXNzIiwic3RlcCIsNCwibmdJZiJdLFsxLCJjb250cm9scyJdLFsibWF0LWljb24tYnV0dG9uIiwiIiwxLCJwaW4tYnV0dG9uIiwzLCJjbGljayIsNiwiYXJpYS1sYWJlbCJdLFsiYXJpYS1sYWJlbCIsInVuZGVmaW5lZCIhPXR5cGVvZiBuZ0kxOG5DbG9zdXJlTW9kZSYmbmdJMThuQ2xvc3VyZU1vZGU/Z29vZy5nZXRNc2coIlBpbiBjYXJkIik6JGxvY2FsaXplYDpBIGJ1dHRvbiB0byBwaW4gYSBjYXJkLuKQn2U2NjVkYzcxMmJkNWYxOGQ0ZGZhM2EyOWUxMjVkNTY1Y2M1MWUyZjbikJ83Mjg0NjA2NDI2MjM0Mzc1MzQ0OlBpbiBjYXJkYF0sWzMsInN2Z0ljb24iXSxbIm1hdC1pY29uLWJ1dHRvbiIsIiIsInRpdGxlIiwiVG9nZ2xlIGFjdHVhbCBpbWFnZSBzaXplIiwzLCJkaXNhYmxlZCIsImNsaWNrIiw2LCJhcmlhLWxhYmVsIl0sWyJhcmlhLWxhYmVsIiwidW5kZWZpbmVkIiE9dHlwZW9mIG5nSTE4bkNsb3N1cmVNb2RlJiZuZ0kxOG5DbG9zdXJlTW9kZT9nb29nLmdldE1zZygiVG9nZ2xlIGFjdHVhbCBpbWFnZSBzaXplIik6JGxvY2FsaXplYDpBIGJ1dHRvbiBvbiBhbiBpbWFnZSBjYXJkIHRoYXQgdG9nZ2xlcyBhY3R1YWwgaW1hZ2Ugc2l6ZS7ikJ8zY2EwNWVmM2E2ZTNhMzcwNjVmNWUwZjY5YzVkNWEyMTc4ZDkwNzkx4pCfNzYzNTEwMTkzNjY2NDc4OTE0MDpUb2dnbGUgYWN0dWFsIGltYWdlIHNpemVgXSxbInN2Z0ljb24iLCJpbWFnZV9zZWFyY2hfMjRweCJdLFs0LCJuZ0lmIiwibmdJZkVsc2UiXSxbIm5vSW1hZ2VEYXRhIiwiIl0sWzEsInN0ZXAiXSxbImRpYW1ldGVyIiwiMTgiLDQsIm5nSWYiXSxbImRpYW1ldGVyIiwiMTgiXSxbMSwic2xpZGVyLXJvdyJdLFsiY29sb3IiLCJwcmltYXJ5IiwxLCJzdGVwLXNsaWRlciIsMywiZGlzYWJsZWQiLCJtaW4iLCJtYXgiLCJzdGVwIiwidGlja0ludGVydmFsIiwidmFsdWUiLCJpbnB1dCJdLFsxLCJpbWctY29udGFpbmVyIl0sWzMsImFsdCIsInNyYyIsIm5nU3R5bGUiXSxbImNsYXNzIiwiZW1wdHktbWVzc2FnZSIsNCwibmdJZiJdLFsxLCJlbXB0eS1tZXNzYWdlIl1dfSx0ZW1wbGF0ZTpmdW5jdGlvbiB0KG4sZSl7aWYoMSZuJiYoS2coMCwiZGl2IiwwKSx0cCgxLCJ0Yi10cnVuY2F0ZWQtcGF0aCIsMSksS2coMiwiZGl2IiwyKSx0cCgzLCJzcGFuIiwzKSx0cCg0LCJjYXJkLXJ1bi1uYW1lIiw0KSwkZygpLFlnKDUsVCQsMywyLCJkaXYiLDUpLEtnKDYsInNwYW4iLDYpLEtnKDcsImJ1dHRvbiIsNyksbHUoOCw4KSxjcCgiY2xpY2siLChmdW5jdGlvbiB0KCl7cmV0dXJuIGUub25QaW5DbGlja2VkLmVtaXQoIWUuaXNQaW5uZWQpfSkpLHRwKDksIm1hdC1pY29uIiw5KSwkZygpLEtnKDEwLCJidXR0b24iLDEwKSxsdSgxMSwxMSksY3AoImNsaWNrIiwoZnVuY3Rpb24gdCgpe3JldHVybiBlLm9uQWN0dWFsU2l6ZVRvZ2dsZS5lbWl0KCl9KSksdHAoMTIsIm1hdC1pY29uIiwxMiksJGcoKSwkZygpLCRnKCksWWcoMTMsSSQsNSwxMSwibmctY29udGFpbmVyIiwxMyksWWcoMTQsRiQsMSwxLCJuZy10ZW1wbGF0ZSIsbnVsbCwxNCxLZikpLDImbil7Y29uc3QgdD1xZygxNSk7d3MoMSksX3AoInRpdGxlIixlLnRhZyksX3AoInZhbHVlIixlLnRpdGxlKSx3cygyKSxKZygibmdTdHlsZSIsdWYoMTAsTCQsZS5ydW5Db2xvclNjYWxlKGUucnVuSWQpKSksd3MoMSksSmcoInJ1bklkIixlLnJ1bklkKSx3cygxKSxKZygibmdJZiIsbnVsbCE9PWUuc3RlcEluZGV4JiZlLnN0ZXBJbmRleDxlLnN0ZXBWYWx1ZXMubGVuZ3RoKSx3cygyKSxOZygidGl0bGUiLGUuaXNQaW5uZWQ/IlVucGluIGNhcmQiOiJQaW4gY2FyZCIpLHdzKDIpLEpnKCJzdmdJY29uIixlLmlzUGlubmVkPyJrZWVwXzI0cHgiOiJrZWVwX291dGxpbmVfMjRweCIpLHdzKDEpLEpnKCJkaXNhYmxlZCIsIWUuYWxsb3dUb2dnbGVBY3R1YWxTaXplKSx3cygzKSxKZygibmdJZiIsbnVsbCE9PWUuc3RlcEluZGV4JiZlLnN0ZXBJbmRleDxlLnN0ZXBWYWx1ZXMubGVuZ3RoKSgibmdJZkVsc2UiLHQpfX0sZGlyZWN0aXZlczpbUyQsJE0seiQsV00sZUEsQkIsaFosWFddLHN0eWxlczpbJy5tYXQtYmFkZ2UtY29udGVudFtfbmdjb250ZW50LSVDT01QJV17Zm9udC13ZWlnaHQ6NjAwO2ZvbnQtc2l6ZToxMnB4O2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZn0ubWF0LWJhZGdlLXNtYWxsW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtYmFkZ2UtY29udGVudFtfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjlweH0ubWF0LWJhZGdlLWxhcmdlW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtYmFkZ2UtY29udGVudFtfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjI0cHh9Lm1hdC1oMVtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtaGVhZGxpbmVbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXR5cG9ncmFwaHlbX25nY29udGVudC0lQ09NUCVdICAgaDFbX25nY29udGVudC0lQ09NUCVde2ZvbnQ6NDAwIDI0cHgvMzJweCBSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7bGV0dGVyLXNwYWNpbmc6bm9ybWFsO21hcmdpbjowIDAgMTZweH0ubWF0LWgyW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10aXRsZVtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdHlwb2dyYXBoeVtfbmdjb250ZW50LSVDT01QJV0gICBoMltfbmdjb250ZW50LSVDT01QJV17Zm9udDo1MDAgMjBweC8zMnB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtsZXR0ZXItc3BhY2luZzpub3JtYWw7bWFyZ2luOjAgMCAxNnB4fS5tYXQtaDNbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXN1YmhlYWRpbmctMltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdHlwb2dyYXBoeVtfbmdjb250ZW50LSVDT01QJV0gICBoM1tfbmdjb250ZW50LSVDT01QJV17Zm9udDo0MDAgMTZweC8yOHB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtsZXR0ZXItc3BhY2luZzpub3JtYWw7bWFyZ2luOjAgMCAxNnB4fS5tYXQtaDRbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXN1YmhlYWRpbmctMVtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdHlwb2dyYXBoeVtfbmdjb250ZW50LSVDT01QJV0gICBoNFtfbmdjb250ZW50LSVDT01QJV17Zm9udDo0MDAgMTVweC8yNHB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtsZXR0ZXItc3BhY2luZzpub3JtYWw7bWFyZ2luOjAgMCAxNnB4fS5tYXQtaDVbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXR5cG9ncmFwaHlbX25nY29udGVudC0lQ09NUCVdICAgaDVbX25nY29udGVudC0lQ09NUCVde2ZvbnQ6NDAwIGNhbGMoMTRweCAqIDAuODMpLzIwcHggUm9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO21hcmdpbjowIDAgMTJweH0ubWF0LWg2W19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10eXBvZ3JhcGh5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIGg2W19uZ2NvbnRlbnQtJUNPTVAlXXtmb250OjQwMCBjYWxjKDE0cHggKiAwLjY3KS8yMHB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjttYXJnaW46MCAwIDEycHh9Lm1hdC1ib2R5LXN0cm9uZ1tfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtYm9keS0yW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250OjUwMCAxNHB4LzI0cHggUm9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2xldHRlci1zcGFjaW5nOm5vcm1hbH0ubWF0LWJvZHlbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWJvZHktMVtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdHlwb2dyYXBoeVtfbmdjb250ZW50LSVDT01QJV17Zm9udDo0MDAgMTRweC8yMHB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtsZXR0ZXItc3BhY2luZzpub3JtYWx9Lm1hdC1ib2R5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIHBbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWJvZHktMVtfbmdjb250ZW50LSVDT01QJV0gICBwW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10eXBvZ3JhcGh5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIHBbX25nY29udGVudC0lQ09NUCVde21hcmdpbjowIDAgMTJweH0ubWF0LXNtYWxsW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1jYXB0aW9uW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250OjQwMCAxMnB4LzIwcHggUm9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2xldHRlci1zcGFjaW5nOm5vcm1hbH0ubWF0LWRpc3BsYXktNFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdHlwb2dyYXBoeVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWRpc3BsYXktNFtfbmdjb250ZW50LSVDT01QJV17Zm9udDozMDAgMTEycHgvMTEycHggUm9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2xldHRlci1zcGFjaW5nOi0wLjA1ZW07bWFyZ2luOjAgMCA1NnB4fS5tYXQtZGlzcGxheS0zW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10eXBvZ3JhcGh5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZGlzcGxheS0zW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250OjQwMCA1NnB4LzU2cHggUm9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2xldHRlci1zcGFjaW5nOi0wLjAyZW07bWFyZ2luOjAgMCA2NHB4fS5tYXQtZGlzcGxheS0yW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10eXBvZ3JhcGh5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZGlzcGxheS0yW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250OjQwMCA0NXB4LzQ4cHggUm9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2xldHRlci1zcGFjaW5nOi0wLjAwNWVtO21hcmdpbjowIDAgNjRweH0ubWF0LWRpc3BsYXktMVtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdHlwb2dyYXBoeVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWRpc3BsYXktMVtfbmdjb250ZW50LSVDT01QJV17Zm9udDo0MDAgMzRweC80MHB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtsZXR0ZXItc3BhY2luZzpub3JtYWw7bWFyZ2luOjAgMCA2NHB4fS5tYXQtYm90dG9tLXNoZWV0LWNvbnRhaW5lcltfbmdjb250ZW50LSVDT01QJV17Zm9udDo0MDAgMTRweC8yMHB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtsZXR0ZXItc3BhY2luZzpub3JtYWx9Lm1hdC1idXR0b25bX25nY29udGVudC0lQ09NUCVdLCAubWF0LXJhaXNlZC1idXR0b25bX25nY29udGVudC0lQ09NUCVdLCAubWF0LWljb24tYnV0dG9uW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1zdHJva2VkLWJ1dHRvbltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtZmxhdC1idXR0b25bX25nY29udGVudC0lQ09NUCVdLCAubWF0LWZhYltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtbWluaS1mYWJbX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtmb250LXNpemU6MTRweDtmb250LXdlaWdodDo1MDB9Lm1hdC1idXR0b24tdG9nZ2xlW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWZ9Lm1hdC1jYXJkW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWZ9Lm1hdC1jYXJkLXRpdGxlW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MjRweDtmb250LXdlaWdodDo1MDB9Lm1hdC1jYXJkLWhlYWRlcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWNhcmQtdGl0bGVbX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToyMHB4fS5tYXQtY2FyZC1zdWJ0aXRsZVtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtY2FyZC1jb250ZW50W19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MTRweH0ubWF0LWNoZWNrYm94W19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWZ9Lm1hdC1jaGVja2JveC1sYXlvdXRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1jaGVja2JveC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17bGluZS1oZWlnaHQ6MjRweH0ubWF0LWNoaXBbX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToxNHB4O2ZvbnQtd2VpZ2h0OjUwMH0ubWF0LWNoaXBbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1jaGlwLXRyYWlsaW5nLWljb24ubWF0LWljb25bX25nY29udGVudC0lQ09NUCVdLCAubWF0LWNoaXBbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1jaGlwLXJlbW92ZS5tYXQtaWNvbltfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjE4cHh9Lm1hdC10YWJsZVtfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmfS5tYXQtaGVhZGVyLWNlbGxbX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToxMnB4O2ZvbnQtd2VpZ2h0OjUwMH0ubWF0LWNlbGxbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWZvb3Rlci1jZWxsW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MTRweH0ubWF0LWNhbGVuZGFyW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWZ9Lm1hdC1jYWxlbmRhci1ib2R5W19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MTNweH0ubWF0LWNhbGVuZGFyLWJvZHktbGFiZWxbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWNhbGVuZGFyLXBlcmlvZC1idXR0b25bX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToxNHB4O2ZvbnQtd2VpZ2h0OjUwMH0ubWF0LWNhbGVuZGFyLXRhYmxlLWhlYWRlcltfbmdjb250ZW50LSVDT01QJV0gICB0aFtfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjExcHg7Zm9udC13ZWlnaHQ6NDAwfS5tYXQtZGlhbG9nLXRpdGxlW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250OjUwMCAyMHB4LzMycHggUm9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2xldHRlci1zcGFjaW5nOm5vcm1hbH0ubWF0LWV4cGFuc2lvbi1wYW5lbC1oZWFkZXJbX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtmb250LXNpemU6MTVweDtmb250LXdlaWdodDo0MDB9Lm1hdC1leHBhbnNpb24tcGFuZWwtY29udGVudFtfbmdjb250ZW50LSVDT01QJV17Zm9udDo0MDAgMTRweC8yMHB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtsZXR0ZXItc3BhY2luZzpub3JtYWx9Lm1hdC1mb3JtLWZpZWxkW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6aW5oZXJpdDtmb250LXdlaWdodDo0MDA7bGluZS1oZWlnaHQ6MS4xMjU7Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2xldHRlci1zcGFjaW5nOm5vcm1hbH0ubWF0LWZvcm0tZmllbGQtd3JhcHBlcltfbmdjb250ZW50LSVDT01QJV17cGFkZGluZy1ib3R0b206MS4zNDM3NWVtfS5tYXQtZm9ybS1maWVsZC1wcmVmaXhbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pY29uW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1mb3JtLWZpZWxkLXN1ZmZpeFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWljb25bX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToxNTAlO2xpbmUtaGVpZ2h0OjEuMTI1fS5tYXQtZm9ybS1maWVsZC1wcmVmaXhbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pY29uLWJ1dHRvbltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtZm9ybS1maWVsZC1zdWZmaXhbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pY29uLWJ1dHRvbltfbmdjb250ZW50LSVDT01QJV17aGVpZ2h0OjEuNWVtO3dpZHRoOjEuNWVtfS5tYXQtZm9ybS1maWVsZC1wcmVmaXhbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pY29uLWJ1dHRvbltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWljb25bX25nY29udGVudC0lQ09NUCVdLCAubWF0LWZvcm0tZmllbGQtc3VmZml4W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaWNvbi1idXR0b25bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pY29uW19uZ2NvbnRlbnQtJUNPTVAlXXtoZWlnaHQ6MS4xMjVlbTtsaW5lLWhlaWdodDoxLjEyNX0ubWF0LWZvcm0tZmllbGQtaW5maXhbX25nY29udGVudC0lQ09NUCVde3BhZGRpbmc6LjVlbSAwO2JvcmRlci10b3A6Ljg0Mzc1ZW0gc29saWQgdHJhbnNwYXJlbnR9Lm1hdC1mb3JtLWZpZWxkLWNhbi1mbG9hdC5tYXQtZm9ybS1maWVsZC1zaG91bGQtZmxvYXRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1mb3JtLWZpZWxkLWNhbi1mbG9hdFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWlucHV0LXNlcnZlcltfbmdjb250ZW50LSVDT01QJV06Zm9jdXMgKyAubWF0LWZvcm0tZmllbGQtbGFiZWwtd3JhcHBlcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVde3RyYW5zZm9ybTp0cmFuc2xhdGVZKC0xLjM0Mzc1ZW0pIHNjYWxlKDAuNzUpO3dpZHRoOjEzMy4zMzMzMzMzMzMzJX0ubWF0LWZvcm0tZmllbGQtY2FuLWZsb2F0W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaW5wdXQtc2VydmVyW2xhYmVsXVtfbmdjb250ZW50LSVDT01QJV06bm90KDpsYWJlbC1zaG93bikgKyAubWF0LWZvcm0tZmllbGQtbGFiZWwtd3JhcHBlcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVde3RyYW5zZm9ybTp0cmFuc2xhdGVZKC0xLjM0Mzc0ZW0pIHNjYWxlKDAuNzUpO3dpZHRoOjEzMy4zMzMzNDMzMzMzJX0ubWF0LWZvcm0tZmllbGQtbGFiZWwtd3JhcHBlcltfbmdjb250ZW50LSVDT01QJV17dG9wOi0wLjg0Mzc1ZW07cGFkZGluZy10b3A6Ljg0Mzc1ZW19Lm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXt0b3A6MS4zNDM3NWVtfS5tYXQtZm9ybS1maWVsZC11bmRlcmxpbmVbX25nY29udGVudC0lQ09NUCVde2JvdHRvbToxLjM0Mzc1ZW19Lm1hdC1mb3JtLWZpZWxkLXN1YnNjcmlwdC13cmFwcGVyW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6NzUlO21hcmdpbi10b3A6LjY2NjY2NjY2NjdlbTt0b3A6Y2FsYygxMDAlIC0gMS43OTE2NjY2NjY3ZW0pfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWxlZ2FjeVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtd3JhcHBlcltfbmdjb250ZW50LSVDT01QJV17cGFkZGluZy1ib3R0b206MS4yNWVtfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWxlZ2FjeVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtaW5maXhbX25nY29udGVudC0lQ09NUCVde3BhZGRpbmc6LjQzNzVlbSAwfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWxlZ2FjeS5tYXQtZm9ybS1maWVsZC1jYW4tZmxvYXQubWF0LWZvcm0tZmllbGQtc2hvdWxkLWZsb2F0W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWxlZ2FjeS5tYXQtZm9ybS1maWVsZC1jYW4tZmxvYXRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pbnB1dC1zZXJ2ZXJbX25nY29udGVudC0lQ09NUCVdOmZvY3VzICsgLm1hdC1mb3JtLWZpZWxkLWxhYmVsLXdyYXBwZXJbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXt0cmFuc2Zvcm06dHJhbnNsYXRlWSgtMS4yODEyNWVtKSBzY2FsZSgwLjc1KSBwZXJzcGVjdGl2ZSgxMDBweCkgdHJhbnNsYXRlWigwLjAwMXB4KTstbXMtdHJhbnNmb3JtOnRyYW5zbGF0ZVkoLTEuMjgxMjVlbSkgc2NhbGUoMC43NSk7d2lkdGg6MTMzLjMzMzMzMzMzMzMlfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWxlZ2FjeS5tYXQtZm9ybS1maWVsZC1jYW4tZmxvYXRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWF1dG9maWxsLWNvbnRyb2xbX25nY29udGVudC0lQ09NUCVdOi13ZWJraXQtYXV0b2ZpbGwgKyAubWF0LWZvcm0tZmllbGQtbGFiZWwtd3JhcHBlcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVde3RyYW5zZm9ybTp0cmFuc2xhdGVZKC0xLjI4MTI1ZW0pIHNjYWxlKDAuNzUpIHBlcnNwZWN0aXZlKDEwMHB4KSB0cmFuc2xhdGVaKDAuMDAxMDFweCk7LW1zLXRyYW5zZm9ybTp0cmFuc2xhdGVZKC0xLjI4MTI0ZW0pIHNjYWxlKDAuNzUpO3dpZHRoOjEzMy4zMzMzNDMzMzMzJX0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1sZWdhY3kubWF0LWZvcm0tZmllbGQtY2FuLWZsb2F0W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaW5wdXQtc2VydmVyW2xhYmVsXVtfbmdjb250ZW50LSVDT01QJV06bm90KDpsYWJlbC1zaG93bikgKyAubWF0LWZvcm0tZmllbGQtbGFiZWwtd3JhcHBlcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVde3RyYW5zZm9ybTp0cmFuc2xhdGVZKC0xLjI4MTI1ZW0pIHNjYWxlKDAuNzUpIHBlcnNwZWN0aXZlKDEwMHB4KSB0cmFuc2xhdGVaKDAuMDAxMDJweCk7LW1zLXRyYW5zZm9ybTp0cmFuc2xhdGVZKC0xLjI4MTIzZW0pIHNjYWxlKDAuNzUpO3dpZHRoOjEzMy4zMzMzNTMzMzMzJX0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1sZWdhY3lbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXt0b3A6MS4yODEyNWVtfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWxlZ2FjeVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtdW5kZXJsaW5lW19uZ2NvbnRlbnQtJUNPTVAlXXtib3R0b206MS4yNWVtfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWxlZ2FjeVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtc3Vic2NyaXB0LXdyYXBwZXJbX25nY29udGVudC0lQ09NUCVde21hcmdpbi10b3A6LjU0MTY2NjY2NjdlbTt0b3A6Y2FsYygxMDAlIC0gMS42NjY2NjY2NjY3ZW0pfUBtZWRpYSBwcmludHsubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1sZWdhY3kubWF0LWZvcm0tZmllbGQtY2FuLWZsb2F0Lm1hdC1mb3JtLWZpZWxkLXNob3VsZC1mbG9hdFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1sZWdhY3kubWF0LWZvcm0tZmllbGQtY2FuLWZsb2F0W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaW5wdXQtc2VydmVyW19uZ2NvbnRlbnQtJUNPTVAlXTpmb2N1cyArIC5tYXQtZm9ybS1maWVsZC1sYWJlbC13cmFwcGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17dHJhbnNmb3JtOnRyYW5zbGF0ZVkoLTEuMjgxMjJlbSkgc2NhbGUoMC43NSl9Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtbGVnYWN5Lm1hdC1mb3JtLWZpZWxkLWNhbi1mbG9hdFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtYXV0b2ZpbGwtY29udHJvbFtfbmdjb250ZW50LSVDT01QJV06LXdlYmtpdC1hdXRvZmlsbCArIC5tYXQtZm9ybS1maWVsZC1sYWJlbC13cmFwcGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17dHJhbnNmb3JtOnRyYW5zbGF0ZVkoLTEuMjgxMjFlbSkgc2NhbGUoMC43NSl9Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtbGVnYWN5Lm1hdC1mb3JtLWZpZWxkLWNhbi1mbG9hdFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWlucHV0LXNlcnZlcltsYWJlbF1bX25nY29udGVudC0lQ09NUCVdOm5vdCg6bGFiZWwtc2hvd24pICsgLm1hdC1mb3JtLWZpZWxkLWxhYmVsLXdyYXBwZXJbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXt0cmFuc2Zvcm06dHJhbnNsYXRlWSgtMS4yODEyZW0pIHNjYWxlKDAuNzUpfX0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1maWxsW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1pbmZpeFtfbmdjb250ZW50LSVDT01QJV17cGFkZGluZzouMjVlbSAwIC43NWVtIDB9Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtZmlsbFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVde3RvcDoxLjA5Mzc1ZW07bWFyZ2luLXRvcDotMC41ZW19Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtZmlsbC5tYXQtZm9ybS1maWVsZC1jYW4tZmxvYXQubWF0LWZvcm0tZmllbGQtc2hvdWxkLWZsb2F0W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWZpbGwubWF0LWZvcm0tZmllbGQtY2FuLWZsb2F0W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaW5wdXQtc2VydmVyW19uZ2NvbnRlbnQtJUNPTVAlXTpmb2N1cyArIC5tYXQtZm9ybS1maWVsZC1sYWJlbC13cmFwcGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17dHJhbnNmb3JtOnRyYW5zbGF0ZVkoLTAuNTkzNzVlbSkgc2NhbGUoMC43NSk7d2lkdGg6MTMzLjMzMzMzMzMzMzMlfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWZpbGwubWF0LWZvcm0tZmllbGQtY2FuLWZsb2F0W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaW5wdXQtc2VydmVyW2xhYmVsXVtfbmdjb250ZW50LSVDT01QJV06bm90KDpsYWJlbC1zaG93bikgKyAubWF0LWZvcm0tZmllbGQtbGFiZWwtd3JhcHBlcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVde3RyYW5zZm9ybTp0cmFuc2xhdGVZKC0wLjU5Mzc0ZW0pIHNjYWxlKDAuNzUpO3dpZHRoOjEzMy4zMzMzNDMzMzMzJX0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1vdXRsaW5lW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1pbmZpeFtfbmdjb250ZW50LSVDT01QJV17cGFkZGluZzoxZW0gMCAxZW0gMH0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1vdXRsaW5lW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17dG9wOjEuODQzNzVlbTttYXJnaW4tdG9wOi0wLjI1ZW19Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2Utb3V0bGluZS5tYXQtZm9ybS1maWVsZC1jYW4tZmxvYXQubWF0LWZvcm0tZmllbGQtc2hvdWxkLWZsb2F0W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLW91dGxpbmUubWF0LWZvcm0tZmllbGQtY2FuLWZsb2F0W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaW5wdXQtc2VydmVyW19uZ2NvbnRlbnQtJUNPTVAlXTpmb2N1cyArIC5tYXQtZm9ybS1maWVsZC1sYWJlbC13cmFwcGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17dHJhbnNmb3JtOnRyYW5zbGF0ZVkoLTEuNTkzNzVlbSkgc2NhbGUoMC43NSk7d2lkdGg6MTMzLjMzMzMzMzMzMzMlfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLW91dGxpbmUubWF0LWZvcm0tZmllbGQtY2FuLWZsb2F0W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaW5wdXQtc2VydmVyW2xhYmVsXVtfbmdjb250ZW50LSVDT01QJV06bm90KDpsYWJlbC1zaG93bikgKyAubWF0LWZvcm0tZmllbGQtbGFiZWwtd3JhcHBlcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVde3RyYW5zZm9ybTp0cmFuc2xhdGVZKC0xLjU5Mzc0ZW0pIHNjYWxlKDAuNzUpO3dpZHRoOjEzMy4zMzMzNDMzMzMzJX0ubWF0LWdyaWQtdGlsZS1oZWFkZXJbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWdyaWQtdGlsZS1mb290ZXJbX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToxNHB4fS5tYXQtZ3JpZC10aWxlLWhlYWRlcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpbmVbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWdyaWQtdGlsZS1mb290ZXJbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saW5lW19uZ2NvbnRlbnQtJUNPTVAlXXt3aGl0ZS1zcGFjZTpub3dyYXA7b3ZlcmZsb3c6aGlkZGVuO3RleHQtb3ZlcmZsb3c6ZWxsaXBzaXM7ZGlzcGxheTpibG9jaztib3gtc2l6aW5nOmJvcmRlci1ib3h9Lm1hdC1ncmlkLXRpbGUtaGVhZGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGluZVtfbmdjb250ZW50LSVDT01QJV06bnRoLWNoaWxkKG4rMiksIC5tYXQtZ3JpZC10aWxlLWZvb3Rlcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpbmVbX25nY29udGVudC0lQ09NUCVdOm50aC1jaGlsZChuKzIpe2ZvbnQtc2l6ZToxMnB4fWlucHV0Lm1hdC1pbnB1dC1lbGVtZW50W19uZ2NvbnRlbnQtJUNPTVAlXXttYXJnaW4tdG9wOi0wLjA2MjVlbX0ubWF0LW1lbnUtaXRlbVtfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2ZvbnQtc2l6ZToxNHB4O2ZvbnQtd2VpZ2h0OjQwMH0ubWF0LXBhZ2luYXRvcltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtcGFnaW5hdG9yLXBhZ2Utc2l6ZVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXNlbGVjdC10cmlnZ2VyW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7Zm9udC1zaXplOjEycHh9Lm1hdC1yYWRpby1idXR0b25bX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZn0ubWF0LXNlbGVjdFtfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmfS5tYXQtc2VsZWN0LXRyaWdnZXJbX25nY29udGVudC0lQ09NUCVde2hlaWdodDoxLjEyNWVtfS5tYXQtc2xpZGUtdG9nZ2xlLWNvbnRlbnRbX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZn0ubWF0LXNsaWRlci10aHVtYi1sYWJlbC10ZXh0W19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7Zm9udC1zaXplOjEycHg7Zm9udC13ZWlnaHQ6NTAwfS5tYXQtc3RlcHBlci12ZXJ0aWNhbFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtc3RlcHBlci1ob3Jpem9udGFsW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWZ9Lm1hdC1zdGVwLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MTRweDtmb250LXdlaWdodDo0MDB9Lm1hdC1zdGVwLXN1Yi1sYWJlbC1lcnJvcltfbmdjb250ZW50LSVDT01QJV17Zm9udC13ZWlnaHQ6bm9ybWFsfS5tYXQtc3RlcC1sYWJlbC1lcnJvcltfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjE0cHh9Lm1hdC1zdGVwLWxhYmVsLXNlbGVjdGVkW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MTRweDtmb250LXdlaWdodDo1MDB9Lm1hdC10YWItZ3JvdXBbX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZn0ubWF0LXRhYi1sYWJlbFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdGFiLWxpbmtbX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtmb250LXNpemU6MTRweDtmb250LXdlaWdodDo1MDB9Lm1hdC10b29sYmFyW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10b29sYmFyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIGgxW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10b29sYmFyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIGgyW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10b29sYmFyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIGgzW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10b29sYmFyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIGg0W19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10b29sYmFyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIGg1W19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10b29sYmFyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIGg2W19uZ2NvbnRlbnQtJUNPTVAlXXtmb250OjUwMCAyMHB4LzMycHggUm9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2xldHRlci1zcGFjaW5nOm5vcm1hbDttYXJnaW46MH0ubWF0LXRvb2x0aXBbX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtmb250LXNpemU6MTBweDtwYWRkaW5nLXRvcDo2cHg7cGFkZGluZy1ib3R0b206NnB4fS5tYXQtdG9vbHRpcC1oYW5kc2V0W19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MTRweDtwYWRkaW5nLXRvcDo4cHg7cGFkZGluZy1ib3R0b206OHB4fS5tYXQtbGlzdC1pdGVtW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWZ9Lm1hdC1saXN0LW9wdGlvbltfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmfS5tYXQtbGlzdC1iYXNlW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGlzdC1pdGVtW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MTZweH0ubWF0LWxpc3QtYmFzZVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpc3QtaXRlbVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpbmVbX25nY29udGVudC0lQ09NUCVde3doaXRlLXNwYWNlOm5vd3JhcDtvdmVyZmxvdzpoaWRkZW47dGV4dC1vdmVyZmxvdzplbGxpcHNpcztkaXNwbGF5OmJsb2NrO2JveC1zaXppbmc6Ym9yZGVyLWJveH0ubWF0LWxpc3QtYmFzZVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpc3QtaXRlbVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpbmVbX25nY29udGVudC0lQ09NUCVdOm50aC1jaGlsZChuKzIpe2ZvbnQtc2l6ZToxNHB4fS5tYXQtbGlzdC1iYXNlW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGlzdC1vcHRpb25bX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToxNnB4fS5tYXQtbGlzdC1iYXNlW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGlzdC1vcHRpb25bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saW5lW19uZ2NvbnRlbnQtJUNPTVAlXXt3aGl0ZS1zcGFjZTpub3dyYXA7b3ZlcmZsb3c6aGlkZGVuO3RleHQtb3ZlcmZsb3c6ZWxsaXBzaXM7ZGlzcGxheTpibG9jaztib3gtc2l6aW5nOmJvcmRlci1ib3h9Lm1hdC1saXN0LWJhc2VbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saXN0LW9wdGlvbltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpbmVbX25nY29udGVudC0lQ09NUCVdOm50aC1jaGlsZChuKzIpe2ZvbnQtc2l6ZToxNHB4fS5tYXQtbGlzdC1iYXNlW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtc3ViaGVhZGVyW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7Zm9udC1zaXplOjE0cHg7Zm9udC13ZWlnaHQ6NTAwfS5tYXQtbGlzdC1iYXNlW2RlbnNlXVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpc3QtaXRlbVtfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjEycHh9Lm1hdC1saXN0LWJhc2VbZGVuc2VdW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGlzdC1pdGVtW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGluZVtfbmdjb250ZW50LSVDT01QJV17d2hpdGUtc3BhY2U6bm93cmFwO292ZXJmbG93OmhpZGRlbjt0ZXh0LW92ZXJmbG93OmVsbGlwc2lzO2Rpc3BsYXk6YmxvY2s7Ym94LXNpemluZzpib3JkZXItYm94fS5tYXQtbGlzdC1iYXNlW2RlbnNlXVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpc3QtaXRlbVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpbmVbX25nY29udGVudC0lQ09NUCVdOm50aC1jaGlsZChuKzIpe2ZvbnQtc2l6ZToxMnB4fS5tYXQtbGlzdC1iYXNlW2RlbnNlXVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpc3Qtb3B0aW9uW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MTJweH0ubWF0LWxpc3QtYmFzZVtkZW5zZV1bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saXN0LW9wdGlvbltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpbmVbX25nY29udGVudC0lQ09NUCVde3doaXRlLXNwYWNlOm5vd3JhcDtvdmVyZmxvdzpoaWRkZW47dGV4dC1vdmVyZmxvdzplbGxpcHNpcztkaXNwbGF5OmJsb2NrO2JveC1zaXppbmc6Ym9yZGVyLWJveH0ubWF0LWxpc3QtYmFzZVtkZW5zZV1bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saXN0LW9wdGlvbltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpbmVbX25nY29udGVudC0lQ09NUCVdOm50aC1jaGlsZChuKzIpe2ZvbnQtc2l6ZToxMnB4fS5tYXQtbGlzdC1iYXNlW2RlbnNlXVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXN1YmhlYWRlcltfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2ZvbnQtc2l6ZToxMnB4O2ZvbnQtd2VpZ2h0OjUwMH0ubWF0LW9wdGlvbltfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2ZvbnQtc2l6ZToxNnB4fS5tYXQtb3B0Z3JvdXAtbGFiZWxbX25nY29udGVudC0lQ09NUCVde2ZvbnQ6NTAwIDE0cHgvMjRweCBSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7bGV0dGVyLXNwYWNpbmc6bm9ybWFsfS5tYXQtc2ltcGxlLXNuYWNrYmFyW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7Zm9udC1zaXplOjE0cHh9Lm1hdC1zaW1wbGUtc25hY2tiYXItYWN0aW9uW19uZ2NvbnRlbnQtJUNPTVAlXXtsaW5lLWhlaWdodDoxO2ZvbnQtZmFtaWx5OmluaGVyaXQ7Zm9udC1zaXplOmluaGVyaXQ7Zm9udC13ZWlnaHQ6NTAwfS5tYXQtdHJlZVtfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmfS5tYXQtdHJlZS1ub2RlW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1uZXN0ZWQtdHJlZS1ub2RlW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXdlaWdodDo0MDA7Zm9udC1zaXplOjE0cHh9Lm1hdC1yaXBwbGVbX25nY29udGVudC0lQ09NUCVde292ZXJmbG93OmhpZGRlbjtwb3NpdGlvbjpyZWxhdGl2ZX0ubWF0LXJpcHBsZVtfbmdjb250ZW50LSVDT01QJV06bm90KDplbXB0eSl7dHJhbnNmb3JtOnRyYW5zbGF0ZVooMCl9Lm1hdC1yaXBwbGUubWF0LXJpcHBsZS11bmJvdW5kZWRbX25nY29udGVudC0lQ09NUCVde292ZXJmbG93OnZpc2libGV9Lm1hdC1yaXBwbGUtZWxlbWVudFtfbmdjb250ZW50LSVDT01QJV17cG9zaXRpb246YWJzb2x1dGU7Ym9yZGVyLXJhZGl1czo1MCU7cG9pbnRlci1ldmVudHM6bm9uZTt0cmFuc2l0aW9uOm9wYWNpdHksdHJhbnNmb3JtIDBtcyBjdWJpYy1iZXppZXIoMCwgMCwgMC4yLCAxKTt0cmFuc2Zvcm06c2NhbGUoMCl9LmNkay1oaWdoLWNvbnRyYXN0LWFjdGl2ZVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXJpcHBsZS1lbGVtZW50W19uZ2NvbnRlbnQtJUNPTVAlXXtkaXNwbGF5Om5vbmV9LmNkay12aXN1YWxseS1oaWRkZW5bX25nY29udGVudC0lQ09NUCVde2JvcmRlcjowO2NsaXA6cmVjdCgwIDAgMCAwKTtoZWlnaHQ6MXB4O21hcmdpbjotMXB4O292ZXJmbG93OmhpZGRlbjtwYWRkaW5nOjA7cG9zaXRpb246YWJzb2x1dGU7d2lkdGg6MXB4O291dGxpbmU6MDstd2Via2l0LWFwcGVhcmFuY2U6bm9uZTstbW96LWFwcGVhcmFuY2U6bm9uZX0uY2RrLW92ZXJsYXktY29udGFpbmVyW19uZ2NvbnRlbnQtJUNPTVAlXSwgLmNkay1nbG9iYWwtb3ZlcmxheS13cmFwcGVyW19uZ2NvbnRlbnQtJUNPTVAlXXtwb2ludGVyLWV2ZW50czpub25lO3RvcDowO2xlZnQ6MDtoZWlnaHQ6MTAwJTt3aWR0aDoxMDAlfS5jZGstb3ZlcmxheS1jb250YWluZXJbX25nY29udGVudC0lQ09NUCVde3Bvc2l0aW9uOmZpeGVkO3otaW5kZXg6MTAwMH0uY2RrLW92ZXJsYXktY29udGFpbmVyW19uZ2NvbnRlbnQtJUNPTVAlXTplbXB0eXtkaXNwbGF5Om5vbmV9LmNkay1nbG9iYWwtb3ZlcmxheS13cmFwcGVyW19uZ2NvbnRlbnQtJUNPTVAlXXtkaXNwbGF5OmZsZXg7cG9zaXRpb246YWJzb2x1dGU7ei1pbmRleDoxMDAwfS5jZGstb3ZlcmxheS1wYW5lW19uZ2NvbnRlbnQtJUNPTVAlXXtwb3NpdGlvbjphYnNvbHV0ZTtwb2ludGVyLWV2ZW50czphdXRvO2JveC1zaXppbmc6Ym9yZGVyLWJveDt6LWluZGV4OjEwMDA7ZGlzcGxheTpmbGV4O21heC13aWR0aDoxMDAlO21heC1oZWlnaHQ6MTAwJX0uY2RrLW92ZXJsYXktYmFja2Ryb3BbX25nY29udGVudC0lQ09NUCVde3Bvc2l0aW9uOmFic29sdXRlO3RvcDowO2JvdHRvbTowO2xlZnQ6MDtyaWdodDowO3otaW5kZXg6MTAwMDtwb2ludGVyLWV2ZW50czphdXRvOy13ZWJraXQtdGFwLWhpZ2hsaWdodC1jb2xvcjp0cmFuc3BhcmVudDt0cmFuc2l0aW9uOm9wYWNpdHkgNDAwbXMgY3ViaWMtYmV6aWVyKDAuMjUsIDAuOCwgMC4yNSwgMSk7b3BhY2l0eTowfS5jZGstb3ZlcmxheS1iYWNrZHJvcC5jZGstb3ZlcmxheS1iYWNrZHJvcC1zaG93aW5nW19uZ2NvbnRlbnQtJUNPTVAlXXtvcGFjaXR5OjF9QG1lZGlhIHNjcmVlbiBhbmQgKC1tcy1oaWdoLWNvbnRyYXN0OiBhY3RpdmUpey5jZGstb3ZlcmxheS1iYWNrZHJvcC5jZGstb3ZlcmxheS1iYWNrZHJvcC1zaG93aW5nW19uZ2NvbnRlbnQtJUNPTVAlXXtvcGFjaXR5Oi42fX0uY2RrLW92ZXJsYXktZGFyay1iYWNrZHJvcFtfbmdjb250ZW50LSVDT01QJV17YmFja2dyb3VuZDpyZ2JhKDAsMCwwLC4zMil9LmNkay1vdmVybGF5LXRyYW5zcGFyZW50LWJhY2tkcm9wW19uZ2NvbnRlbnQtJUNPTVAlXSwgLmNkay1vdmVybGF5LXRyYW5zcGFyZW50LWJhY2tkcm9wLmNkay1vdmVybGF5LWJhY2tkcm9wLXNob3dpbmdbX25nY29udGVudC0lQ09NUCVde29wYWNpdHk6MH0uY2RrLW92ZXJsYXktY29ubmVjdGVkLXBvc2l0aW9uLWJvdW5kaW5nLWJveFtfbmdjb250ZW50LSVDT01QJV17cG9zaXRpb246YWJzb2x1dGU7ei1pbmRleDoxMDAwO2Rpc3BsYXk6ZmxleDtmbGV4LWRpcmVjdGlvbjpjb2x1bW47bWluLXdpZHRoOjFweDttaW4taGVpZ2h0OjFweH0uY2RrLWdsb2JhbC1zY3JvbGxibG9ja1tfbmdjb250ZW50LSVDT01QJV17cG9zaXRpb246Zml4ZWQ7d2lkdGg6MTAwJTtvdmVyZmxvdy15OnNjcm9sbH1Aa2V5ZnJhbWVzIGNkay10ZXh0LWZpZWxkLWF1dG9maWxsLXN0YXJ0e31Aa2V5ZnJhbWVzIGNkay10ZXh0LWZpZWxkLWF1dG9maWxsLWVuZHt9LmNkay10ZXh0LWZpZWxkLWF1dG9maWxsLW1vbml0b3JlZFtfbmdjb250ZW50LSVDT01QJV06LXdlYmtpdC1hdXRvZmlsbHthbmltYXRpb246Y2RrLXRleHQtZmllbGQtYXV0b2ZpbGwtc3RhcnQgMHMgMW1zfS5jZGstdGV4dC1maWVsZC1hdXRvZmlsbC1tb25pdG9yZWRbX25nY29udGVudC0lQ09NUCVdOm5vdCg6LXdlYmtpdC1hdXRvZmlsbCl7YW5pbWF0aW9uOmNkay10ZXh0LWZpZWxkLWF1dG9maWxsLWVuZCAwcyAxbXN9dGV4dGFyZWEuY2RrLXRleHRhcmVhLWF1dG9zaXplW19uZ2NvbnRlbnQtJUNPTVAlXXtyZXNpemU6bm9uZX10ZXh0YXJlYS5jZGstdGV4dGFyZWEtYXV0b3NpemUtbWVhc3VyaW5nW19uZ2NvbnRlbnQtJUNPTVAlXXtwYWRkaW5nOjJweCAwICFpbXBvcnRhbnQ7Ym94LXNpemluZzpjb250ZW50LWJveCAhaW1wb3J0YW50O2hlaWdodDphdXRvICFpbXBvcnRhbnQ7b3ZlcmZsb3c6aGlkZGVuICFpbXBvcnRhbnR9dGV4dGFyZWEuY2RrLXRleHRhcmVhLWF1dG9zaXplLW1lYXN1cmluZy1maXJlZm94W19uZ2NvbnRlbnQtJUNPTVAlXXtwYWRkaW5nOjJweCAwICFpbXBvcnRhbnQ7Ym94LXNpemluZzpjb250ZW50LWJveCAhaW1wb3J0YW50O2hlaWdodDowICFpbXBvcnRhbnR9Lm1hdC1mb2N1cy1pbmRpY2F0b3JbX25nY29udGVudC0lQ09NUCVde3Bvc2l0aW9uOnJlbGF0aXZlfS5tYXQtbWRjLWZvY3VzLWluZGljYXRvcltfbmdjb250ZW50LSVDT01QJV17cG9zaXRpb246cmVsYXRpdmV9Lm1hdC1yaXBwbGUtZWxlbWVudFtfbmdjb250ZW50LSVDT01QJV17YmFja2dyb3VuZC1jb2xvcjpyZ2JhKDAsMCwwLC4xKX0ubWF0LW9wdGlvbltfbmdjb250ZW50LSVDT01QJV17Y29sb3I6IzIxMjEyMX0ubWF0LW9wdGlvbltfbmdjb250ZW50LSVDT01QJV06aG92ZXI6bm90KC5tYXQtb3B0aW9uLWRpc2FibGVkKSwgLm1hdC1vcHRpb25bX25nY29udGVudC0lQ09NUCVdOmZvY3VzOm5vdCgubWF0LW9wdGlvbi1kaXNhYmxlZCl7YmFja2dyb3VuZDpyZ2JhKDAsMCwwLC4wNCl9Lm1hdC1vcHRpb24ubWF0LXNlbGVjdGVkW19uZ2NvbnRlbnQtJUNPTVAlXTpub3QoLm1hdC1vcHRpb24tbXVsdGlwbGUpOm5vdCgubWF0LW9wdGlvbi1kaXNhYmxlZCl7YmFja2dyb3VuZDpyZ2JhKDAsMCwwLC4wNCl9Lm1hdC1vcHRpb24ubWF0LWFjdGl2ZVtfbmdjb250ZW50LSVDT01QJV17YmFja2dyb3VuZDpyZ2JhKDAsMCwwLC4wNCk7Y29sb3I6IzIxMjEyMX0ubWF0LW9wdGlvbi5tYXQtb3B0aW9uLWRpc2FibGVkW19uZ2NvbnRlbnQtJUNPTVAlXXtjb2xvcjpyZ2JhKDAsMCwwLC4zOCl9Lm1hdC1wcmltYXJ5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtb3B0aW9uLm1hdC1zZWxlY3RlZFtfbmdjb250ZW50LSVDT01QJV06bm90KC5tYXQtb3B0aW9uLWRpc2FibGVkKXtjb2xvcjojZjU3YzAwfS5tYXQtYWNjZW50W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtb3B0aW9uLm1hdC1zZWxlY3RlZFtfbmdjb250ZW50LSVDT01QJV06bm90KC5tYXQtb3B0aW9uLWRpc2FibGVkKXtjb2xvcjojZmY5ODAwfS5tYXQtd2Fybltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LW9wdGlvbi5tYXQtc2VsZWN0ZWRbX25nY29udGVudC0lQ09NUCVdOm5vdCgubWF0LW9wdGlvbi1kaXNhYmxlZCl7Y29sb3I6I2Y0NDMzNn0ubWF0LW9wdGdyb3VwLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXtjb2xvcjojNjE2MTYxfS5tYXQtb3B0Z3JvdXAtZGlzYWJsZWRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1vcHRncm91cC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17Y29sb3I6cmdiYSgwLDAsMCwuMzgpfS5tYXQtcHNldWRvLWNoZWNrYm94W19uZ2NvbnRlbnQtJUNPTVAlXXtjb2xvcjojNjE2MTYxfS5tYXQtcHNldWRvLWNoZWNrYm94W19uZ2NvbnRlbnQtJUNPTVAlXTo6YWZ0ZXJ7Y29sb3I6I2ZhZmFmYX0ubWF0LXBzZXVkby1jaGVja2JveC1kaXNhYmxlZFtfbmdjb250ZW50LSVDT01QJV17Y29sb3I6I2IwYjBiMH0ubWF0LXByaW1hcnlbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1wc2V1ZG8tY2hlY2tib3gtY2hlY2tlZFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtcHJpbWFyeVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXBzZXVkby1jaGVja2JveC1pbmRldGVybWluYXRlW19uZ2NvbnRlbnQtJUNPTVAlXXtiYWNrZ3JvdW5kOiNmNTdjMDB9Lm1hdC1wc2V1ZG8tY2hlY2tib3gtY2hlY2tlZFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtcHNldWRvLWNoZWNrYm94LWluZGV0ZXJtaW5hdGVbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWFjY2VudFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXBzZXVkby1jaGVja2JveC1jaGVja2VkW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1hY2NlbnRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1wc2V1ZG8tY2hlY2tib3gtaW5kZXRlcm1pbmF0ZVtfbmdjb250ZW50LSVDT01QJV17YmFja2dyb3VuZDojZmY5ODAwfS5tYXQtd2Fybltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXBzZXVkby1jaGVja2JveC1jaGVja2VkW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC13YXJuW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtcHNldWRvLWNoZWNrYm94LWluZGV0ZXJtaW5hdGVbX25nY29udGVudC0lQ09NUCVde2JhY2tncm91bmQ6I2Y0NDMzNn0ubWF0LXBzZXVkby1jaGVja2JveC1jaGVja2VkLm1hdC1wc2V1ZG8tY2hlY2tib3gtZGlzYWJsZWRbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXBzZXVkby1jaGVja2JveC1pbmRldGVybWluYXRlLm1hdC1wc2V1ZG8tY2hlY2tib3gtZGlzYWJsZWRbX25nY29udGVudC0lQ09NUCVde2JhY2tncm91bmQ6I2IwYjBiMH0ubWF0LWFwcC1iYWNrZ3JvdW5kW19uZ2NvbnRlbnQtJUNPTVAlXXtiYWNrZ3JvdW5kLWNvbG9yOiNmYWZhZmE7Y29sb3I6IzIxMjEyMX0ubWF0LWVsZXZhdGlvbi16MFtfbmdjb250ZW50LSVDT01QJV17Ym94LXNoYWRvdzowcHggMHB4IDBweCAwcHggcmdiYSgwLCAwLCAwLCAwLjIpLDBweCAwcHggMHB4IDBweCByZ2JhKDAsIDAsIDAsIDAuMTQpLDBweCAwcHggMHB4IDBweCByZ2JhKDAsIDAsIDAsIDAuMTIpfS5tYXQtZWxldmF0aW9uLXoxW19uZ2NvbnRlbnQtJUNPTVAlXXtib3gtc2hhZG93OjBweCAycHggMXB4IC0xcHggcmdiYSgwLCAwLCAwLCAwLjIpLDBweCAxcHggMXB4IDBweCByZ2JhKDAsIDAsIDAsIDAuMTQpLDBweCAxcHggM3B4IDBweCByZ2JhKDAsIDAsIDAsIDAuMTIpfS5tYXQtZWxldmF0aW9uLXoyW19uZ2NvbnRlbnQtJUNPTVAlXXtib3gtc2hhZG93OjBweCAzcHggMXB4IC0ycHggcmdiYSgwLCAwLCAwLCAwLjIpLDBweCAycHggMnB4IDBweCByZ2JhKDAsIDAsIDAsIDAuMTQpLDBweCAxcHggNXB4IDBweCByZ2JhKDAsIDAsIDAsIDAuMTIpfS5tYXQtZWxldmF0aW9uLXozW19uZ2NvbnRlbnQtJUNPTVAlXXtib3gtc2hhZG93OjBweCAzcHggM3B4IC0ycHggcmdiYSgwLCAwLCAwLCAwLjIpLDBweCAzcHggNHB4IDBweCByZ2JhKDAsIDAsIDAsIDAuMTQpLDBweCAxcHggOHB4IDBweCByZ2JhKDAsIDAsIDAsIDAuMTIpfS5tYXQtZWxldmF0aW9uLXo0W19uZ2NvbnRlbnQtJUNPTVAlXXtib3gtc2hhZG93OjBweCAycHggNHB4IC0xcHggcmdiYSgwLCAwLCAwLCAwLjIpLDBweCA0cHggNXB4IDBweCByZ2JhKDAsIDAsIDAsIDAuMTQpLDBweCAxcHggMTBweCAwcHggcmdiYSgwLCAwLCAwLCAwLjEyKX0ubWF0LWVsZXZhdGlvbi16NVtfbmdjb250ZW50LSVDT01QJV17Ym94LXNoYWRvdzowcHggM3B4IDVweCAtMXB4IHJnYmEoMCwgMCwgMCwgMC4yKSwwcHggNXB4IDhweCAwcHggcmdiYSgwLCAwLCAwLCAwLjE0KSwwcHggMXB4IDE0cHggMHB4IHJnYmEoMCwgMCwgMCwgMC4xMil9Lm1hdC1lbGV2YXRpb24tejZbX25nY29udGVudC0lQ09NUCVde2JveC1zaGFkb3c6MHB4IDNweCA1cHggLTFweCByZ2JhKDAsIDAsIDAsIDAuMiksMHB4IDZweCAxMHB4IDBweCByZ2JhKDAsIDAsIDAsIDAuMTQpLDBweCAxcHggMThweCAwcHggcmdiYSgwLCAwLCAwLCAwLjEyKX0ubWF0LWVsZXZhdGlvbi16N1tfbmdjb250ZW50LSVDT01QJV17Ym94LXNoYWRvdzowcHggNHB4IDVweCAtMnB4IHJnYmEoMCwgMCwgMCwgMC4yKSwwcHggN3B4IDEwcHggMXB4IHJnYmEoMCwgMCwgMCwgMC4xNCksMHB4IDJweCAxNnB4IDFweCByZ2JhKDAsIDAsIDAsIDAuMTIpfS5tYXQtZWxldmF0aW9uLXo4W19uZ2NvbnRlbnQtJUNPTVAlXXtib3gtc2hhZG93OjBweCA1cHggNXB4IC0zcHggcmdiYSgwLCAwLCAwLCAwLjIpLDBweCA4cHggMTBweCAxcHggcmdiYSgwLCAwLCAwLCAwLjE0KSwwcHggM3B4IDE0cHggMnB4IHJnYmEoMCwgMCwgMCwgMC4xMil9Lm1hdC1lbGV2YXRpb24tejlbX25nY29udGVudC0lQ09NUCVde2JveC1zaGFkb3c6MHB4IDVweCA2cHggLTNweCByZ2JhKDAsIDAsIDAsIDAuMiksMHB4IDlweCAxMnB4IDFweCByZ2JhKDAsIDAsIDAsIDAuMTQpLDBweCAzcHggMTZweCAycHggcmdiYSgwLCAwLCAwLCAwLjEyKX0ubWF0LWVsZXZhdGlvbi16MTBbX25nY29udGVudC0lQ09NUCVde2JveC1zaGFkb3c6MHB4IDZweCA2cHggLTNweCByZ2JhKDAsIDAsIDAsIDAuMiksMHB4IDEwcHggMTRweCAxcHggcmdiYSgwLCAwLCAwLCAwLjE0KSwwcHggNHB4IDE4cHggM3B4IHJnYmEoMCwgMCwgMCwgMC4xMil9Lm1hdC1lbGV2YXRpb24tejExW19uZ2NvbnRlbnQtJUNPTVAlXXtib3gtc2hhZG93OjBweCA2cHggN3B4IC00cHggcmdiYSgwLCAwLCAwLCAwLjIpLDBweCAxMXB4IDE1cHggMXB4IHJnYmEoMCwgMCwgMCwgMC4xNCksMHB4IDRweCAyMHB4IDNweCByZ2JhKDAsIDAsIDAsIDAuMTIpfS5tYXQtZWxldmF0aW9uLXoxMltfbmdjb250ZW50LSVDT01QJV17Ym94LXNoYWRvdzowcHggN3B4IDhweCAtNHB4IHJnYmEoMCwgMCwgMCwgMC4yKSwwcHggMTJweCAxN3B4IDJweCByZ2JhKDAsIDAsIDAsIDAuMTQpLDBweCA1cHggMjJweCA0cHggcmdiYSgwLCAwLCAwLCAwLjEyKX0ubWF0LWVsZXZhdGlvbi16MTNbX25nY29udGVudC0lQ09NUCVde2JveC1zaGFkb3c6MHB4IDdweCA4cHggLTRweCByZ2JhKDAsIDAsIDAsIDAuMiksMHB4IDEzcHggMTlweCAycHggcmdiYSgwLCAwLCAwLCAwLjE0KSwwcHggNXB4IDI0cHggNHB4IHJnYmEoMCwgMCwgMCwgMC4xMil9Lm1hdC1lbGV2YXRpb24tejE0W19uZ2NvbnRlbnQtJUNPTVAlXXtib3gtc2hhZG93OjBweCA3cHggOXB4IC00cHggcmdiYSgwLCAwLCAwLCAwLjIpLDBweCAxNHB4IDIxcHggMnB4IHJnYmEoMCwgMCwgMCwgMC4xNCksMHB4IDVweCAyNnB4IDRweCByZ2JhKDAsIDAsIDAsIDAuMTIpfS5tYXQtZWxldmF0aW9uLXoxNVtfbmdjb250ZW50LSVDT01QJV17Ym94LXNoYWRvdzowcHggOHB4IDlweCAtNXB4IHJnYmEoMCwgMCwgMCwgMC4yKSwwcHggMTVweCAyMnB4IDJweCByZ2JhKDAsIDAsIDAsIDAuMTQpLDBweCA2cHggMjhweCA1cHggcmdiYSgwLCAwLCAwLCAwLjEyKX0ubWF0LWVsZXZhdGlvbi16MTZbX25nY29udGVudC0lQ09NUCVde2JveC1zaGFkb3c6MHB4IDhweCAxMHB4IC01cHggcmdiYSgwLCAwLCAwLCAwLjIpLDBweCAxNnB4IDI0cHggMnB4IHJnYmEoMCwgMCwgMCwgMC4xNCksMHB4IDZweCAzMHB4IDVweCByZ2JhKDAsIDAsIDAsIDAuMTIpfS5tYXQtZWxldmF0aW9uLXoxN1tfbmdjb250ZW50LSVDT01QJV17Ym94LXNoYWRvdzowcHggOHB4IDExcHggLTVweCByZ2JhKDAsIDAsIDAsIDAuMiksMHB4IDE3cHggMjZweCAycHggcmdiYSgwLCAwLCAwLCAwLjE0KSwwcHggNnB4IDMycHggNXB4IHJnYmEoMCwgMCwgMCwgMC4xMil9Lm1hdC1lbGV2YXRpb24tejE4W19uZ2NvbnRlbnQtJUNPTVAlXXtib3gtc2hhZG93OjBweCA5cHggMTFweCAtNXB4IHJnYmEoMCwgMCwgMCwgMC4yKSwwcHggMThweCAyOHB4IDJweCByZ2JhKDAsIDAsIDAsIDAuMTQpLDBweCA3cHggMzRweCA2cHggcmdiYSgwLCAwLCAwLCAwLjEyKX0ubWF0LWVsZXZhdGlvbi16MTlbX25nY29udGVudC0lQ09NUCVde2JveC1zaGFkb3c6MHB4IDlweCAxMnB4IC02cHggcmdiYSgwLCAwLCAwLCAwLjIpLDBweCAxOXB4IDI5cHggMnB4IHJnYmEoMCwgMCwgMCwgMC4xNCksMHB4IDdweCAzNnB4IDZweCByZ2JhKDAsIDAsIDAsIDAuMTIpfS5tYXQtZWxldmF0aW9uLXoyMFtfbmdjb250ZW50LSVDT01QJV17Ym94LXNoYWRvdzowcHggMTBweCAxM3B4IC02cHggcmdiYSgwLCAwLCAwLCAwLjIpLDBweCAyMHB4IDMxcHggM3B4IHJnYmEoMCwgMCwgMCwgMC4xNCksMHB4IDhweCAzOHB4IDdweCByZ2JhKDAsIDAsIDAsIDAuMTIpfS5tYXQtZWxldmF0aW9uLXoyMVtfbmdjb250ZW50LSVDT01QJV17Ym94LXNoYWRvdzowcHggMTBweCAxM3B4IC02cHggcmdiYSgwLCAwLCAwLCAwLjIpLDBweCAyMXB4IDMzcHggM3B4IHJnYmEoMCwgMCwgMCwgMC4xNCksMHB4IDhweCA0MHB4IDdweCByZ2JhKDAsIDAsIDAsIDAuMTIpfS5tYXQtZWxldmF0aW9uLXoyMltfbmdjb250ZW50LSVDT01QJV17Ym94LXNoYWRvdzowcHggMTBweCAxNHB4IC02cHggcmdiYSgwLCAwLCAwLCAwLjIpLDBweCAyMnB4IDM1cHggM3B4IHJnYmEoMCwgMCwgMCwgMC4xNCksMHB4IDhweCA0MnB4IDdweCByZ2JhKDAsIDAsIDAsIDAuMTIpfS5tYXQtZWxldmF0aW9uLXoyM1tfbmdjb250ZW50LSVDT01QJV17Ym94LXNoYWRvdzowcHggMTFweCAxNHB4IC03cHggcmdiYSgwLCAwLCAwLCAwLjIpLDBweCAyM3B4IDM2cHggM3B4IHJnYmEoMCwgMCwgMCwgMC4xNCksMHB4IDlweCA0NHB4IDhweCByZ2JhKDAsIDAsIDAsIDAuMTIpfS5tYXQtZWxldmF0aW9uLXoyNFtfbmdjb250ZW50LSVDT01QJV17Ym94LXNoYWRvdzowcHggMTFweCAxNXB4IC03cHggcmdiYSgwLCAwLCAwLCAwLjIpLDBweCAyNHB4IDM4cHggM3B4IHJnYmEoMCwgMCwgMCwgMC4xNCksMHB4IDlweCA0NnB4IDhweCByZ2JhKDAsIDAsIDAsIDAuMTIpfS5tYXQtdGhlbWUtbG9hZGVkLW1hcmtlcltfbmdjb250ZW50LSVDT01QJV17ZGlzcGxheTpub25lfS5tYXQtYXV0b2NvbXBsZXRlLXBhbmVsW19uZ2NvbnRlbnQtJUNPTVAlXXtiYWNrZ3JvdW5kOiNmZmY7Y29sb3I6IzIxMjEyMX0ubWF0LWF1dG9jb21wbGV0ZS1wYW5lbFtfbmdjb250ZW50LSVDT01QJV06bm90KFtjbGFzcyo9bWF0LWVsZXZhdGlvbi16XSl7Ym94LXNoYWRvdzowcHggMnB4IDRweCAtMXB4IHJnYmEoMCwgMCwgMCwgMC4yKSwwcHggNHB4IDVweCAwcHggcmdiYSgwLCAwLCAwLCAwLjE0KSwwcHggMXB4IDEwcHggMHB4IHJnYmEoMCwgMCwgMCwgMC4xMil9Lm1hdC1hdXRvY29tcGxldGUtcGFuZWxbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1vcHRpb24ubWF0LXNlbGVjdGVkW19uZ2NvbnRlbnQtJUNPTVAlXTpub3QoLm1hdC1hY3RpdmUpOm5vdCg6aG92ZXIpe2JhY2tncm91bmQ6I2ZmZn0ubWF0LWF1dG9jb21wbGV0ZS1wYW5lbFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LW9wdGlvbi5tYXQtc2VsZWN0ZWRbX25nY29udGVudC0lQ09NUCVdOm5vdCgubWF0LWFjdGl2ZSk6bm90KDpob3Zlcik6bm90KC5tYXQtb3B0aW9uLWRpc2FibGVkKXtjb2xvcjojMjEyMTIxfS5tYXQtYmFkZ2UtY29udGVudFtfbmdjb250ZW50LSVDT01QJV17Y29sb3I6I2ZmZjtiYWNrZ3JvdW5kOiNmNTdjMDB9LmNkay1oaWdoLWNvbnRyYXN0LWFjdGl2ZVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWJhZGdlLWNvbnRlbnRbX25nY29udGVudC0lQ09NUCVde291dGxpbmU6c29saWQgMXB4O2JvcmRlci1yYWRpdXM6MH0ubWF0LWJhZGdlLWFjY2VudFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWJhZGdlLWNvbnRlbnRbX25nY29udGVudC0lQ09NUCVde2JhY2tncm91bmQ6I2ZmOTgwMDtjb2xvcjojZmZmfS5tYXQtYmFkZ2Utd2Fybltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWJhZGdlLWNvbnRlbnRbX25nY29udGVudC0lQ09NUCVde2NvbG9yOiNmZmY7YmFja2dyb3VuZDojZjQ0MzM2fS5tYXQtYmFkZ2VbX25nY29udGVudC0lQ09NUCVde3Bvc2l0aW9uOnJlbGF0aXZlfS5tYXQtYmFkZ2UtaGlkZGVuW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtYmFkZ2UtY29udGVudFtfbmdjb250ZW50LSVDT01QJV17ZGlzcGxheTpub25lfS5tYXQtYmFkZ2UtZGlzYWJsZWRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1iYWRnZS1jb250ZW50W19uZ2NvbnRlbnQtJUNPTVAlXXtiYWNrZ3JvdW5kOiNiOWI5Yjk7Y29sb3I6Izc1NzU3NX0ubWF0LWJhZGdlLWNvbnRlbnRbX25nY29udGVudC0lQ09NUCVde3Bvc2l0aW9uOmFic29sdXRlO3RleHQtYWxpZ246Y2VudGVyO2Rpc3BsYXk6aW5saW5lLWJsb2NrO2JvcmRlci1yYWRpdXM6NTAlO3RyYW5zaXRpb246dHJhbnNmb3JtIDIwMG1zIGVhc2UtaW4tb3V0O3RyYW5zZm9ybTpzY2FsZSgwLjYpO292ZXJmbG93OmhpZGRlbjt3aGl0ZS1zcGFjZTpub3dyYXA7dGV4dC1vdmVyZmxvdzplbGxpcHNpcztwb2ludGVyLWV2ZW50czpub25lfS5uZy1hbmltYXRlLWRpc2FibGVkW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtYmFkZ2UtY29udGVudFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtYmFkZ2UtY29udGVudC5fbWF0LWFuaW1hdGlvbi1ub29wYWJsZVtfbmdjb250ZW50LSVDT01QJV17dHJhbnNpdGlvbjpub25lfS5tYXQtYmFkZ2UtY29udGVudC5tYXQtYmFkZ2UtYWN0aXZlW19uZ2NvbnRlbnQtJUNPTVAlXXt0cmFuc2Zvcm06bm9uZX0ubWF0LWJhZGdlLXNtYWxsW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtYmFkZ2UtY29udGVudFtfbmdjb250ZW50LSVDT01QJV17d2lkdGg6MTZweDtoZWlnaHQ6MTZweDtsaW5lLWhlaWdodDoxNnB4fS5tYXQtYmFkZ2Utc21hbGwubWF0LWJhZGdlLWFib3ZlW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtYmFkZ2UtY29udGVudFtfbmdjb250ZW50LSVDT01QJV17dG9wOi04cHh9Lm1hdC1iYWRnZS1zbWFsbC5tYXQtYmFkZ2UtYmVsb3dbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1iYWRnZS1jb250ZW50W19uZ2NvbnRlbnQtJUNPTVAlXXtib3R0b206LThweH0ubWF0LWJhZGdlLXNtYWxsLm1hdC1iYWRnZS1iZWZvcmVbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1iYWRnZS1jb250ZW50W19uZ2NvbnRlbnQtJUNPTVAlXXtsZWZ0Oi0xNnB4fVtkaXI9cnRsXVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWJhZGdlLXNtYWxsLm1hdC1iYWRnZS1iZWZvcmVbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1iYWRnZS1jb250ZW50W19uZ2NvbnRlbnQtJUNPTVAlXXtsZWZ0OmF1dG87cmlnaHQ6LTE2cHh9Lm1hdC1iYWRnZS1zbWFsbC5tYXQtYmFkZ2UtYWZ0ZXJbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1iYWRnZS1jb250ZW50W19uZ2NvbnRlbnQtJUNPTVAlXXtyaWdodDotMTZweH1bZGlyPXJ0bF1bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1iYWRnZS1zbWFsbC5tYXQtYmFkZ2UtYWZ0ZXJbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1iYWRnZS1jb250ZW50W19uZ2NvbnRlbnQtJUNPTVAlXXtyaWdodDphdXRvO2xlZnQ6LTE2cHh9Lm1hdC1iYWRnZS1zbWFsbC5tYXQtYmFkZ2Utb3ZlcmxhcC5tYXQtYmFkZ2UtYmVmb3JlW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtYmFkZ2UtY29udGVudFtfbmdjb250ZW50LSVDT01QJV17bGVmdDotOHB4fVtkaXI9cnRsXVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWJhZGdlLXNtYWxsLm1hdC1iYWRnZS1vdmVybGFwLm1hdC1iYWRnZS1iZWZvcmVbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1iYWRnZS1jb250ZW50W19uZ2NvbnRlbnQtJUNPTVAlXXtsZWZ0OmF1dG87cmlnaHQ6LThweH0ubWF0LWJhZGdlLXNtYWxsLm1hdC1iYWRnZS1vdmVybGFwLm1hdC1iYWRnZS1hZnRlcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWJhZGdlLWNvbnRlbnRbX25nY29udGVudC0lQ09NUCVde3JpZ2h0Oi04cHh9W2Rpcj1ydGxdW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtYmFkZ2Utc21hbGwubWF0LWJhZGdlLW92ZXJsYXAubWF0LWJhZGdlLWFmdGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtYmFkZ2UtY29udGVudFtfbmdjb250ZW50LSVDT01QJV17cmlnaHQ6YXV0bztsZWZ0Oi04cHh9Lm1hdC1iYWRnZS1tZWRpdW1bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1iYWRnZS1jb250ZW50W19uZ2NvbnRlbnQtJUNPTVAlXXt3aWR0aDoyMnB4O2hlaWdodDoyMnB4O2xpbmUtaGVpZ2h0OjIycHh9Lm1hdC1iYWRnZS1tZWRpdW0ubWF0LWJhZGdlLWFib3ZlW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtYmFkZ2UtY29udGVudFtfbmdjb250ZW50LSVDT01QJV17dG9wOi0xMXB4fS5tYXQtYmFkZ2UtbWVkaXVtLm1hdC1iYWRnZS1iZWxvd1tfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWJhZGdlLWNvbnRlbnRbX25nY29udGVudC0lQ09NUCVde2JvdHRvbTotMTFweH0ubWF0LWJhZGdlLW1lZGl1bS5tYXQtYmFkZ2UtYmVmb3JlW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtYmFkZ2UtY29udGVudFtfbmdjb250ZW50LSVDT01QJV17bGVmdDotMjJweH1bZGlyPXJ0bF1bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1iYWRnZS1tZWRpdW0ubWF0LWJhZGdlLWJlZm9yZVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWJhZGdlLWNvbnRlbnRbX25nY29udGVudC0lQ09NUCVde2xlZnQ6YXV0bztyaWdodDotMjJweH0ubWF0LWJhZGdlLW1lZGl1bS5tYXQtYmFkZ2UtYWZ0ZXJbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1iYWRnZS1jb250ZW50W19uZ2NvbnRlbnQtJUNPTVAlXXtyaWdodDotMjJweH1bZGlyPXJ0bF1bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1iYWRnZS1tZWRpdW0ubWF0LWJhZGdlLWFmdGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtYmFkZ2UtY29udGVudFtfbmdjb250ZW50LSVDT01QJV17cmlnaHQ6YXV0bztsZWZ0Oi0yMnB4fS5tYXQtYmFkZ2UtbWVkaXVtLm1hdC1iYWRnZS1vdmVybGFwLm1hdC1iYWRnZS1iZWZvcmVbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1iYWRnZS1jb250ZW50W19uZ2NvbnRlbnQtJUNPTVAlXXtsZWZ0Oi0xMXB4fVtkaXI9cnRsXVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWJhZGdlLW1lZGl1bS5tYXQtYmFkZ2Utb3ZlcmxhcC5tYXQtYmFkZ2UtYmVmb3JlW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtYmFkZ2UtY29udGVudFtfbmdjb250ZW50LSVDT01QJV17bGVmdDphdXRvO3JpZ2h0Oi0xMXB4fS5tYXQtYmFkZ2UtbWVkaXVtLm1hdC1iYWRnZS1vdmVybGFwLm1hdC1iYWRnZS1hZnRlcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWJhZGdlLWNvbnRlbnRbX25nY29udGVudC0lQ09NUCVde3JpZ2h0Oi0xMXB4fVtkaXI9cnRsXVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWJhZGdlLW1lZGl1bS5tYXQtYmFkZ2Utb3ZlcmxhcC5tYXQtYmFkZ2UtYWZ0ZXJbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1iYWRnZS1jb250ZW50W19uZ2NvbnRlbnQtJUNPTVAlXXtyaWdodDphdXRvO2xlZnQ6LTExcHh9Lm1hdC1iYWRnZS1sYXJnZVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWJhZGdlLWNvbnRlbnRbX25nY29udGVudC0lQ09NUCVde3dpZHRoOjI4cHg7aGVpZ2h0OjI4cHg7bGluZS1oZWlnaHQ6MjhweH0ubWF0LWJhZGdlLWxhcmdlLm1hdC1iYWRnZS1hYm92ZVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWJhZGdlLWNvbnRlbnRbX25nY29udGVudC0lQ09NUCVde3RvcDotMTRweH0ubWF0LWJhZGdlLWxhcmdlLm1hdC1iYWRnZS1iZWxvd1tfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWJhZGdlLWNvbnRlbnRbX25nY29udGVudC0lQ09NUCVde2JvdHRvbTotMTRweH0ubWF0LWJhZGdlLWxhcmdlLm1hdC1iYWRnZS1iZWZvcmVbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1iYWRnZS1jb250ZW50W19uZ2NvbnRlbnQtJUNPTVAlXXtsZWZ0Oi0yOHB4fVtkaXI9cnRsXVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWJhZGdlLWxhcmdlLm1hdC1iYWRnZS1iZWZvcmVbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1iYWRnZS1jb250ZW50W19uZ2NvbnRlbnQtJUNPTVAlXXtsZWZ0OmF1dG87cmlnaHQ6LTI4cHh9Lm1hdC1iYWRnZS1sYXJnZS5tYXQtYmFkZ2UtYWZ0ZXJbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1iYWRnZS1jb250ZW50W19uZ2NvbnRlbnQtJUNPTVAlXXtyaWdodDotMjhweH1bZGlyPXJ0bF1bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1iYWRnZS1sYXJnZS5tYXQtYmFkZ2UtYWZ0ZXJbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1iYWRnZS1jb250ZW50W19uZ2NvbnRlbnQtJUNPTVAlXXtyaWdodDphdXRvO2xlZnQ6LTI4cHh9Lm1hdC1iYWRnZS1sYXJnZS5tYXQtYmFkZ2Utb3ZlcmxhcC5tYXQtYmFkZ2UtYmVmb3JlW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtYmFkZ2UtY29udGVudFtfbmdjb250ZW50LSVDT01QJV17bGVmdDotMTRweH1bZGlyPXJ0bF1bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1iYWRnZS1sYXJnZS5tYXQtYmFkZ2Utb3ZlcmxhcC5tYXQtYmFkZ2UtYmVmb3JlW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtYmFkZ2UtY29udGVudFtfbmdjb250ZW50LSVDT01QJV17bGVmdDphdXRvO3JpZ2h0Oi0xNHB4fS5tYXQtYmFkZ2UtbGFyZ2UubWF0LWJhZGdlLW92ZXJsYXAubWF0LWJhZGdlLWFmdGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtYmFkZ2UtY29udGVudFtfbmdjb250ZW50LSVDT01QJV17cmlnaHQ6LTE0cHh9W2Rpcj1ydGxdW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtYmFkZ2UtbGFyZ2UubWF0LWJhZGdlLW92ZXJsYXAubWF0LWJhZGdlLWFmdGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtYmFkZ2UtY29udGVudFtfbmdjb250ZW50LSVDT01QJV17cmlnaHQ6YXV0bztsZWZ0Oi0xNHB4fS5tYXQtYm90dG9tLXNoZWV0LWNvbnRhaW5lcltfbmdjb250ZW50LSVDT01QJV17Ym94LXNoYWRvdzowcHggOHB4IDEwcHggLTVweCByZ2JhKDAsIDAsIDAsIDAuMiksMHB4IDE2cHggMjRweCAycHggcmdiYSgwLCAwLCAwLCAwLjE0KSwwcHggNnB4IDMwcHggNXB4IHJnYmEoMCwgMCwgMCwgMC4xMik7YmFja2dyb3VuZDojZmZmO2NvbG9yOiMyMTIxMjF9Lm1hdC1idXR0b25bX25nY29udGVudC0lQ09NUCVdLCAubWF0LWljb24tYnV0dG9uW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1zdHJva2VkLWJ1dHRvbltfbmdjb250ZW50LSVDT01QJV17Y29sb3I6aW5oZXJpdDtiYWNrZ3JvdW5kOnRyYW5zcGFyZW50fS5tYXQtYnV0dG9uLm1hdC1wcmltYXJ5W19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1pY29uLWJ1dHRvbi5tYXQtcHJpbWFyeVtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtc3Ryb2tlZC1idXR0b24ubWF0LXByaW1hcnlbX25nY29udGVudC0lQ09NUCVde2NvbG9yOiNmNTdjMDB9Lm1hdC1idXR0b24ubWF0LWFjY2VudFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtaWNvbi1idXR0b24ubWF0LWFjY2VudFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtc3Ryb2tlZC1idXR0b24ubWF0LWFjY2VudFtfbmdjb250ZW50LSVDT01QJV17Y29sb3I6I2ZmOTgwMH0ubWF0LWJ1dHRvbi5tYXQtd2Fybltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtaWNvbi1idXR0b24ubWF0LXdhcm5bX25nY29udGVudC0lQ09NUCVdLCAubWF0LXN0cm9rZWQtYnV0dG9uLm1hdC13YXJuW19uZ2NvbnRlbnQtJUNPTVAlXXtjb2xvcjojZjQ0MzM2fS5tYXQtYnV0dG9uLm1hdC1wcmltYXJ5Lm1hdC1idXR0b24tZGlzYWJsZWRbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWJ1dHRvbi5tYXQtYWNjZW50Lm1hdC1idXR0b24tZGlzYWJsZWRbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWJ1dHRvbi5tYXQtd2Fybi5tYXQtYnV0dG9uLWRpc2FibGVkW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1idXR0b24ubWF0LWJ1dHRvbi1kaXNhYmxlZC5tYXQtYnV0dG9uLWRpc2FibGVkW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1pY29uLWJ1dHRvbi5tYXQtcHJpbWFyeS5tYXQtYnV0dG9uLWRpc2FibGVkW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1pY29uLWJ1dHRvbi5tYXQtYWNjZW50Lm1hdC1idXR0b24tZGlzYWJsZWRbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWljb24tYnV0dG9uLm1hdC13YXJuLm1hdC1idXR0b24tZGlzYWJsZWRbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWljb24tYnV0dG9uLm1hdC1idXR0b24tZGlzYWJsZWQubWF0LWJ1dHRvbi1kaXNhYmxlZFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtc3Ryb2tlZC1idXR0b24ubWF0LXByaW1hcnkubWF0LWJ1dHRvbi1kaXNhYmxlZFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtc3Ryb2tlZC1idXR0b24ubWF0LWFjY2VudC5tYXQtYnV0dG9uLWRpc2FibGVkW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1zdHJva2VkLWJ1dHRvbi5tYXQtd2Fybi5tYXQtYnV0dG9uLWRpc2FibGVkW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1zdHJva2VkLWJ1dHRvbi5tYXQtYnV0dG9uLWRpc2FibGVkLm1hdC1idXR0b24tZGlzYWJsZWRbX25nY29udGVudC0lQ09NUCVde2NvbG9yOnJnYmEoMCwwLDAsLjI2KX0ubWF0LWJ1dHRvbi5tYXQtcHJpbWFyeVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWJ1dHRvbi1mb2N1cy1vdmVybGF5W19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1pY29uLWJ1dHRvbi5tYXQtcHJpbWFyeVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWJ1dHRvbi1mb2N1cy1vdmVybGF5W19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1zdHJva2VkLWJ1dHRvbi5tYXQtcHJpbWFyeVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWJ1dHRvbi1mb2N1cy1vdmVybGF5W19uZ2NvbnRlbnQtJUNPTVAlXXtiYWNrZ3JvdW5kLWNvbG9yOiNmNTdjMDB9Lm1hdC1idXR0b24ubWF0LWFjY2VudFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWJ1dHRvbi1mb2N1cy1vdmVybGF5W19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1pY29uLWJ1dHRvbi5tYXQtYWNjZW50W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtYnV0dG9uLWZvY3VzLW92ZXJsYXlbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXN0cm9rZWQtYnV0dG9uLm1hdC1hY2NlbnRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1idXR0b24tZm9jdXMtb3ZlcmxheVtfbmdjb250ZW50LSVDT01QJV17YmFja2dyb3VuZC1jb2xvcjojZmY5ODAwfS5tYXQtYnV0dG9uLm1hdC13YXJuW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtYnV0dG9uLWZvY3VzLW92ZXJsYXlbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWljb24tYnV0dG9uLm1hdC13YXJuW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtYnV0dG9uLWZvY3VzLW92ZXJsYXlbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXN0cm9rZWQtYnV0dG9uLm1hdC13YXJuW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtYnV0dG9uLWZvY3VzLW92ZXJsYXlbX25nY29udGVudC0lQ09NUCVde2JhY2tncm91bmQtY29sb3I6I2Y0NDMzNn0ubWF0LWJ1dHRvbi5tYXQtYnV0dG9uLWRpc2FibGVkW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtYnV0dG9uLWZvY3VzLW92ZXJsYXlbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWljb24tYnV0dG9uLm1hdC1idXR0b24tZGlzYWJsZWRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1idXR0b24tZm9jdXMtb3ZlcmxheVtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtc3Ryb2tlZC1idXR0b24ubWF0LWJ1dHRvbi1kaXNhYmxlZFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWJ1dHRvbi1mb2N1cy1vdmVybGF5W19uZ2NvbnRlbnQtJUNPTVAlXXtiYWNrZ3JvdW5kLWNvbG9yOnRyYW5zcGFyZW50fS5tYXQtYnV0dG9uW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtcmlwcGxlLWVsZW1lbnRbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWljb24tYnV0dG9uW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtcmlwcGxlLWVsZW1lbnRbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXN0cm9rZWQtYnV0dG9uW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtcmlwcGxlLWVsZW1lbnRbX25nY29udGVudC0lQ09NUCVde29wYWNpdHk6LjE7YmFja2dyb3VuZC1jb2xvcjpjdXJyZW50Q29sb3J9Lm1hdC1idXR0b24tZm9jdXMtb3ZlcmxheVtfbmdjb250ZW50LSVDT01QJV17YmFja2dyb3VuZDojMDAwfS5tYXQtc3Ryb2tlZC1idXR0b25bX25nY29udGVudC0lQ09NUCVdOm5vdCgubWF0LWJ1dHRvbi1kaXNhYmxlZCl7Ym9yZGVyLWNvbG9yOnJnYmEoMCwwLDAsLjEyKX0ubWF0LWZsYXQtYnV0dG9uW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1yYWlzZWQtYnV0dG9uW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1mYWJbX25nY29udGVudC0lQ09NUCVdLCAubWF0LW1pbmktZmFiW19uZ2NvbnRlbnQtJUNPTVAlXXtjb2xvcjojMjEyMTIxO2JhY2tncm91bmQtY29sb3I6I2ZmZn0ubWF0LWZsYXQtYnV0dG9uLm1hdC1wcmltYXJ5W19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1yYWlzZWQtYnV0dG9uLm1hdC1wcmltYXJ5W19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1mYWIubWF0LXByaW1hcnlbX25nY29udGVudC0lQ09NUCVdLCAubWF0LW1pbmktZmFiLm1hdC1wcmltYXJ5W19uZ2NvbnRlbnQtJUNPTVAlXXtjb2xvcjojZmZmfS5tYXQtZmxhdC1idXR0b24ubWF0LWFjY2VudFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtcmFpc2VkLWJ1dHRvbi5tYXQtYWNjZW50W19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1mYWIubWF0LWFjY2VudFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtbWluaS1mYWIubWF0LWFjY2VudFtfbmdjb250ZW50LSVDT01QJV17Y29sb3I6I2ZmZn0ubWF0LWZsYXQtYnV0dG9uLm1hdC13YXJuW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1yYWlzZWQtYnV0dG9uLm1hdC13YXJuW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1mYWIubWF0LXdhcm5bX25nY29udGVudC0lQ09NUCVdLCAubWF0LW1pbmktZmFiLm1hdC13YXJuW19uZ2NvbnRlbnQtJUNPTVAlXXtjb2xvcjojZmZmfS5tYXQtZmxhdC1idXR0b24ubWF0LXByaW1hcnkubWF0LWJ1dHRvbi1kaXNhYmxlZFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtZmxhdC1idXR0b24ubWF0LWFjY2VudC5tYXQtYnV0dG9uLWRpc2FibGVkW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1mbGF0LWJ1dHRvbi5tYXQtd2Fybi5tYXQtYnV0dG9uLWRpc2FibGVkW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1mbGF0LWJ1dHRvbi5tYXQtYnV0dG9uLWRpc2FibGVkLm1hdC1idXR0b24tZGlzYWJsZWRbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXJhaXNlZC1idXR0b24ubWF0LXByaW1hcnkubWF0LWJ1dHRvbi1kaXNhYmxlZFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtcmFpc2VkLWJ1dHRvbi5tYXQtYWNjZW50Lm1hdC1idXR0b24tZGlzYWJsZWRbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXJhaXNlZC1idXR0b24ubWF0LXdhcm4ubWF0LWJ1dHRvbi1kaXNhYmxlZFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtcmFpc2VkLWJ1dHRvbi5tYXQtYnV0dG9uLWRpc2FibGVkLm1hdC1idXR0b24tZGlzYWJsZWRbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWZhYi5tYXQtcHJpbWFyeS5tYXQtYnV0dG9uLWRpc2FibGVkW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1mYWIubWF0LWFjY2VudC5tYXQtYnV0dG9uLWRpc2FibGVkW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1mYWIubWF0LXdhcm4ubWF0LWJ1dHRvbi1kaXNhYmxlZFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtZmFiLm1hdC1idXR0b24tZGlzYWJsZWQubWF0LWJ1dHRvbi1kaXNhYmxlZFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtbWluaS1mYWIubWF0LXByaW1hcnkubWF0LWJ1dHRvbi1kaXNhYmxlZFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtbWluaS1mYWIubWF0LWFjY2VudC5tYXQtYnV0dG9uLWRpc2FibGVkW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1taW5pLWZhYi5tYXQtd2Fybi5tYXQtYnV0dG9uLWRpc2FibGVkW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1taW5pLWZhYi5tYXQtYnV0dG9uLWRpc2FibGVkLm1hdC1idXR0b24tZGlzYWJsZWRbX25nY29udGVudC0lQ09NUCVde2NvbG9yOnJnYmEoMCwwLDAsLjI2KX0ubWF0LWZsYXQtYnV0dG9uLm1hdC1wcmltYXJ5W19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1yYWlzZWQtYnV0dG9uLm1hdC1wcmltYXJ5W19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1mYWIubWF0LXByaW1hcnlbX25nY29udGVudC0lQ09NUCVdLCAubWF0LW1pbmktZmFiLm1hdC1wcmltYXJ5W19uZ2NvbnRlbnQtJUNPTVAlXXtiYWNrZ3JvdW5kLWNvbG9yOiNmNTdjMDB9Lm1hdC1mbGF0LWJ1dHRvbi5tYXQtYWNjZW50W19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1yYWlzZWQtYnV0dG9uLm1hdC1hY2NlbnRbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWZhYi5tYXQtYWNjZW50W19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1taW5pLWZhYi5tYXQtYWNjZW50W19uZ2NvbnRlbnQtJUNPTVAlXXtiYWNrZ3JvdW5kLWNvbG9yOiNmZjk4MDB9Lm1hdC1mbGF0LWJ1dHRvbi5tYXQtd2Fybltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtcmFpc2VkLWJ1dHRvbi5tYXQtd2Fybltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtZmFiLm1hdC13YXJuW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1taW5pLWZhYi5tYXQtd2Fybltfbmdjb250ZW50LSVDT01QJV17YmFja2dyb3VuZC1jb2xvcjojZjQ0MzM2fS5tYXQtZmxhdC1idXR0b24ubWF0LXByaW1hcnkubWF0LWJ1dHRvbi1kaXNhYmxlZFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtZmxhdC1idXR0b24ubWF0LWFjY2VudC5tYXQtYnV0dG9uLWRpc2FibGVkW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1mbGF0LWJ1dHRvbi5tYXQtd2Fybi5tYXQtYnV0dG9uLWRpc2FibGVkW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1mbGF0LWJ1dHRvbi5tYXQtYnV0dG9uLWRpc2FibGVkLm1hdC1idXR0b24tZGlzYWJsZWRbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXJhaXNlZC1idXR0b24ubWF0LXByaW1hcnkubWF0LWJ1dHRvbi1kaXNhYmxlZFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtcmFpc2VkLWJ1dHRvbi5tYXQtYWNjZW50Lm1hdC1idXR0b24tZGlzYWJsZWRbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXJhaXNlZC1idXR0b24ubWF0LXdhcm4ubWF0LWJ1dHRvbi1kaXNhYmxlZFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtcmFpc2VkLWJ1dHRvbi5tYXQtYnV0dG9uLWRpc2FibGVkLm1hdC1idXR0b24tZGlzYWJsZWRbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWZhYi5tYXQtcHJpbWFyeS5tYXQtYnV0dG9uLWRpc2FibGVkW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1mYWIubWF0LWFjY2VudC5tYXQtYnV0dG9uLWRpc2FibGVkW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1mYWIubWF0LXdhcm4ubWF0LWJ1dHRvbi1kaXNhYmxlZFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtZmFiLm1hdC1idXR0b24tZGlzYWJsZWQubWF0LWJ1dHRvbi1kaXNhYmxlZFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtbWluaS1mYWIubWF0LXByaW1hcnkubWF0LWJ1dHRvbi1kaXNhYmxlZFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtbWluaS1mYWIubWF0LWFjY2VudC5tYXQtYnV0dG9uLWRpc2FibGVkW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1taW5pLWZhYi5tYXQtd2Fybi5tYXQtYnV0dG9uLWRpc2FibGVkW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1taW5pLWZhYi5tYXQtYnV0dG9uLWRpc2FibGVkLm1hdC1idXR0b24tZGlzYWJsZWRbX25nY29udGVudC0lQ09NUCVde2JhY2tncm91bmQtY29sb3I6cmdiYSgwLDAsMCwuMTIpfS5tYXQtZmxhdC1idXR0b24ubWF0LXByaW1hcnlbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1yaXBwbGUtZWxlbWVudFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtcmFpc2VkLWJ1dHRvbi5tYXQtcHJpbWFyeVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXJpcHBsZS1lbGVtZW50W19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1mYWIubWF0LXByaW1hcnlbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1yaXBwbGUtZWxlbWVudFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtbWluaS1mYWIubWF0LXByaW1hcnlbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1yaXBwbGUtZWxlbWVudFtfbmdjb250ZW50LSVDT01QJV17YmFja2dyb3VuZC1jb2xvcjpyZ2JhKDI1NSwyNTUsMjU1LC4xKX0ubWF0LWZsYXQtYnV0dG9uLm1hdC1hY2NlbnRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1yaXBwbGUtZWxlbWVudFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtcmFpc2VkLWJ1dHRvbi5tYXQtYWNjZW50W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtcmlwcGxlLWVsZW1lbnRbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWZhYi5tYXQtYWNjZW50W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtcmlwcGxlLWVsZW1lbnRbX25nY29udGVudC0lQ09NUCVdLCAubWF0LW1pbmktZmFiLm1hdC1hY2NlbnRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1yaXBwbGUtZWxlbWVudFtfbmdjb250ZW50LSVDT01QJV17YmFja2dyb3VuZC1jb2xvcjpyZ2JhKDI1NSwyNTUsMjU1LC4xKX0ubWF0LWZsYXQtYnV0dG9uLm1hdC13YXJuW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtcmlwcGxlLWVsZW1lbnRbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXJhaXNlZC1idXR0b24ubWF0LXdhcm5bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1yaXBwbGUtZWxlbWVudFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtZmFiLm1hdC13YXJuW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtcmlwcGxlLWVsZW1lbnRbX25nY29udGVudC0lQ09NUCVdLCAubWF0LW1pbmktZmFiLm1hdC13YXJuW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtcmlwcGxlLWVsZW1lbnRbX25nY29udGVudC0lQ09NUCVde2JhY2tncm91bmQtY29sb3I6cmdiYSgyNTUsMjU1LDI1NSwuMSl9Lm1hdC1zdHJva2VkLWJ1dHRvbltfbmdjb250ZW50LSVDT01QJV06bm90KFtjbGFzcyo9bWF0LWVsZXZhdGlvbi16XSksIC5tYXQtZmxhdC1idXR0b25bX25nY29udGVudC0lQ09NUCVdOm5vdChbY2xhc3MqPW1hdC1lbGV2YXRpb24tel0pe2JveC1zaGFkb3c6MHB4IDBweCAwcHggMHB4IHJnYmEoMCwgMCwgMCwgMC4yKSwwcHggMHB4IDBweCAwcHggcmdiYSgwLCAwLCAwLCAwLjE0KSwwcHggMHB4IDBweCAwcHggcmdiYSgwLCAwLCAwLCAwLjEyKX0ubWF0LXJhaXNlZC1idXR0b25bX25nY29udGVudC0lQ09NUCVdOm5vdChbY2xhc3MqPW1hdC1lbGV2YXRpb24tel0pe2JveC1zaGFkb3c6MHB4IDNweCAxcHggLTJweCByZ2JhKDAsIDAsIDAsIDAuMiksMHB4IDJweCAycHggMHB4IHJnYmEoMCwgMCwgMCwgMC4xNCksMHB4IDFweCA1cHggMHB4IHJnYmEoMCwgMCwgMCwgMC4xMil9Lm1hdC1yYWlzZWQtYnV0dG9uW19uZ2NvbnRlbnQtJUNPTVAlXTpub3QoLm1hdC1idXR0b24tZGlzYWJsZWQpOmFjdGl2ZTpub3QoW2NsYXNzKj1tYXQtZWxldmF0aW9uLXpdKXtib3gtc2hhZG93OjBweCA1cHggNXB4IC0zcHggcmdiYSgwLCAwLCAwLCAwLjIpLDBweCA4cHggMTBweCAxcHggcmdiYSgwLCAwLCAwLCAwLjE0KSwwcHggM3B4IDE0cHggMnB4IHJnYmEoMCwgMCwgMCwgMC4xMil9Lm1hdC1yYWlzZWQtYnV0dG9uLm1hdC1idXR0b24tZGlzYWJsZWRbX25nY29udGVudC0lQ09NUCVdOm5vdChbY2xhc3MqPW1hdC1lbGV2YXRpb24tel0pe2JveC1zaGFkb3c6MHB4IDBweCAwcHggMHB4IHJnYmEoMCwgMCwgMCwgMC4yKSwwcHggMHB4IDBweCAwcHggcmdiYSgwLCAwLCAwLCAwLjE0KSwwcHggMHB4IDBweCAwcHggcmdiYSgwLCAwLCAwLCAwLjEyKX0ubWF0LWZhYltfbmdjb250ZW50LSVDT01QJV06bm90KFtjbGFzcyo9bWF0LWVsZXZhdGlvbi16XSksIC5tYXQtbWluaS1mYWJbX25nY29udGVudC0lQ09NUCVdOm5vdChbY2xhc3MqPW1hdC1lbGV2YXRpb24tel0pe2JveC1zaGFkb3c6MHB4IDNweCA1cHggLTFweCByZ2JhKDAsIDAsIDAsIDAuMiksMHB4IDZweCAxMHB4IDBweCByZ2JhKDAsIDAsIDAsIDAuMTQpLDBweCAxcHggMThweCAwcHggcmdiYSgwLCAwLCAwLCAwLjEyKX0ubWF0LWZhYltfbmdjb250ZW50LSVDT01QJV06bm90KC5tYXQtYnV0dG9uLWRpc2FibGVkKTphY3RpdmU6bm90KFtjbGFzcyo9bWF0LWVsZXZhdGlvbi16XSksIC5tYXQtbWluaS1mYWJbX25nY29udGVudC0lQ09NUCVdOm5vdCgubWF0LWJ1dHRvbi1kaXNhYmxlZCk6YWN0aXZlOm5vdChbY2xhc3MqPW1hdC1lbGV2YXRpb24tel0pe2JveC1zaGFkb3c6MHB4IDdweCA4cHggLTRweCByZ2JhKDAsIDAsIDAsIDAuMiksMHB4IDEycHggMTdweCAycHggcmdiYSgwLCAwLCAwLCAwLjE0KSwwcHggNXB4IDIycHggNHB4IHJnYmEoMCwgMCwgMCwgMC4xMil9Lm1hdC1mYWIubWF0LWJ1dHRvbi1kaXNhYmxlZFtfbmdjb250ZW50LSVDT01QJV06bm90KFtjbGFzcyo9bWF0LWVsZXZhdGlvbi16XSksIC5tYXQtbWluaS1mYWIubWF0LWJ1dHRvbi1kaXNhYmxlZFtfbmdjb250ZW50LSVDT01QJV06bm90KFtjbGFzcyo9bWF0LWVsZXZhdGlvbi16XSl7Ym94LXNoYWRvdzowcHggMHB4IDBweCAwcHggcmdiYSgwLCAwLCAwLCAwLjIpLDBweCAwcHggMHB4IDBweCByZ2JhKDAsIDAsIDAsIDAuMTQpLDBweCAwcHggMHB4IDBweCByZ2JhKDAsIDAsIDAsIDAuMTIpfS5tYXQtYnV0dG9uLXRvZ2dsZS1zdGFuZGFsb25lW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1idXR0b24tdG9nZ2xlLWdyb3VwW19uZ2NvbnRlbnQtJUNPTVAlXXtib3gtc2hhZG93OjBweCAzcHggMXB4IC0ycHggcmdiYSgwLCAwLCAwLCAwLjIpLDBweCAycHggMnB4IDBweCByZ2JhKDAsIDAsIDAsIDAuMTQpLDBweCAxcHggNXB4IDBweCByZ2JhKDAsIDAsIDAsIDAuMTIpfS5tYXQtYnV0dG9uLXRvZ2dsZS1zdGFuZGFsb25lLm1hdC1idXR0b24tdG9nZ2xlLWFwcGVhcmFuY2Utc3RhbmRhcmRbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWJ1dHRvbi10b2dnbGUtZ3JvdXAtYXBwZWFyYW5jZS1zdGFuZGFyZFtfbmdjb250ZW50LSVDT01QJV17Ym94LXNoYWRvdzpub25lfS5tYXQtYnV0dG9uLXRvZ2dsZVtfbmdjb250ZW50LSVDT01QJV17Y29sb3I6cmdiYSgwLDAsMCwuMzgpfS5tYXQtYnV0dG9uLXRvZ2dsZVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWJ1dHRvbi10b2dnbGUtZm9jdXMtb3ZlcmxheVtfbmdjb250ZW50LSVDT01QJV17YmFja2dyb3VuZC1jb2xvcjpyZ2JhKDAsMCwwLC4xMil9Lm1hdC1idXR0b24tdG9nZ2xlLWFwcGVhcmFuY2Utc3RhbmRhcmRbX25nY29udGVudC0lQ09NUCVde2NvbG9yOiMyMTIxMjE7YmFja2dyb3VuZDojZmZmfS5tYXQtYnV0dG9uLXRvZ2dsZS1hcHBlYXJhbmNlLXN0YW5kYXJkW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtYnV0dG9uLXRvZ2dsZS1mb2N1cy1vdmVybGF5W19uZ2NvbnRlbnQtJUNPTVAlXXtiYWNrZ3JvdW5kLWNvbG9yOiMwMDB9Lm1hdC1idXR0b24tdG9nZ2xlLWdyb3VwLWFwcGVhcmFuY2Utc3RhbmRhcmRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1idXR0b24tdG9nZ2xlW19uZ2NvbnRlbnQtJUNPTVAlXSArIC5tYXQtYnV0dG9uLXRvZ2dsZVtfbmdjb250ZW50LSVDT01QJV17Ym9yZGVyLWxlZnQ6c29saWQgMXB4IHJnYmEoMCwwLDAsLjEyKX1bZGlyPXJ0bF1bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1idXR0b24tdG9nZ2xlLWdyb3VwLWFwcGVhcmFuY2Utc3RhbmRhcmRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1idXR0b24tdG9nZ2xlW19uZ2NvbnRlbnQtJUNPTVAlXSArIC5tYXQtYnV0dG9uLXRvZ2dsZVtfbmdjb250ZW50LSVDT01QJV17Ym9yZGVyLWxlZnQ6bm9uZTtib3JkZXItcmlnaHQ6c29saWQgMXB4IHJnYmEoMCwwLDAsLjEyKX0ubWF0LWJ1dHRvbi10b2dnbGUtZ3JvdXAtYXBwZWFyYW5jZS1zdGFuZGFyZC5tYXQtYnV0dG9uLXRvZ2dsZS12ZXJ0aWNhbFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWJ1dHRvbi10b2dnbGVbX25nY29udGVudC0lQ09NUCVdICsgLm1hdC1idXR0b24tdG9nZ2xlW19uZ2NvbnRlbnQtJUNPTVAlXXtib3JkZXItbGVmdDpub25lO2JvcmRlci1yaWdodDpub25lO2JvcmRlci10b3A6c29saWQgMXB4IHJnYmEoMCwwLDAsLjEyKX0ubWF0LWJ1dHRvbi10b2dnbGUtY2hlY2tlZFtfbmdjb250ZW50LSVDT01QJV17YmFja2dyb3VuZC1jb2xvcjojZTBlMGUwO2NvbG9yOiM2MTYxNjF9Lm1hdC1idXR0b24tdG9nZ2xlLWNoZWNrZWQubWF0LWJ1dHRvbi10b2dnbGUtYXBwZWFyYW5jZS1zdGFuZGFyZFtfbmdjb250ZW50LSVDT01QJV17Y29sb3I6IzIxMjEyMX0ubWF0LWJ1dHRvbi10b2dnbGUtZGlzYWJsZWRbX25nY29udGVudC0lQ09NUCVde2NvbG9yOnJnYmEoMCwwLDAsLjI2KTtiYWNrZ3JvdW5kLWNvbG9yOiNlZWV9Lm1hdC1idXR0b24tdG9nZ2xlLWRpc2FibGVkLm1hdC1idXR0b24tdG9nZ2xlLWFwcGVhcmFuY2Utc3RhbmRhcmRbX25nY29udGVudC0lQ09NUCVde2JhY2tncm91bmQ6I2ZmZn0ubWF0LWJ1dHRvbi10b2dnbGUtZGlzYWJsZWQubWF0LWJ1dHRvbi10b2dnbGUtY2hlY2tlZFtfbmdjb250ZW50LSVDT01QJV17YmFja2dyb3VuZC1jb2xvcjojYmRiZGJkfS5tYXQtYnV0dG9uLXRvZ2dsZS1zdGFuZGFsb25lLm1hdC1idXR0b24tdG9nZ2xlLWFwcGVhcmFuY2Utc3RhbmRhcmRbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWJ1dHRvbi10b2dnbGUtZ3JvdXAtYXBwZWFyYW5jZS1zdGFuZGFyZFtfbmdjb250ZW50LSVDT01QJV17Ym9yZGVyOnNvbGlkIDFweCByZ2JhKDAsMCwwLC4xMil9Lm1hdC1idXR0b24tdG9nZ2xlLWFwcGVhcmFuY2Utc3RhbmRhcmRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1idXR0b24tdG9nZ2xlLWxhYmVsLWNvbnRlbnRbX25nY29udGVudC0lQ09NUCVde2xpbmUtaGVpZ2h0OjQ4cHh9Lm1hdC1jYXJkW19uZ2NvbnRlbnQtJUNPTVAlXXtiYWNrZ3JvdW5kOiNmZmY7Y29sb3I6IzIxMjEyMX0ubWF0LWNhcmRbX25nY29udGVudC0lQ09NUCVdOm5vdChbY2xhc3MqPW1hdC1lbGV2YXRpb24tel0pe2JveC1zaGFkb3c6MHB4IDJweCAxcHggLTFweCByZ2JhKDAsIDAsIDAsIDAuMiksMHB4IDFweCAxcHggMHB4IHJnYmEoMCwgMCwgMCwgMC4xNCksMHB4IDFweCAzcHggMHB4IHJnYmEoMCwgMCwgMCwgMC4xMil9Lm1hdC1jYXJkLm1hdC1jYXJkLWZsYXRbX25nY29udGVudC0lQ09NUCVdOm5vdChbY2xhc3MqPW1hdC1lbGV2YXRpb24tel0pe2JveC1zaGFkb3c6MHB4IDBweCAwcHggMHB4IHJnYmEoMCwgMCwgMCwgMC4yKSwwcHggMHB4IDBweCAwcHggcmdiYSgwLCAwLCAwLCAwLjE0KSwwcHggMHB4IDBweCAwcHggcmdiYSgwLCAwLCAwLCAwLjEyKX0ubWF0LWNhcmQtc3VidGl0bGVbX25nY29udGVudC0lQ09NUCVde2NvbG9yOiM2MTYxNjF9Lm1hdC1jaGVja2JveC1mcmFtZVtfbmdjb250ZW50LSVDT01QJV17Ym9yZGVyLWNvbG9yOiM2MTYxNjF9Lm1hdC1jaGVja2JveC1jaGVja21hcmtbX25nY29udGVudC0lQ09NUCVde2ZpbGw6I2ZhZmFmYX0ubWF0LWNoZWNrYm94LWNoZWNrbWFyay1wYXRoW19uZ2NvbnRlbnQtJUNPTVAlXXtzdHJva2U6I2ZhZmFmYSAhaW1wb3J0YW50fS5tYXQtY2hlY2tib3gtbWl4ZWRtYXJrW19uZ2NvbnRlbnQtJUNPTVAlXXtiYWNrZ3JvdW5kLWNvbG9yOiNmYWZhZmF9Lm1hdC1jaGVja2JveC1pbmRldGVybWluYXRlLm1hdC1wcmltYXJ5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtY2hlY2tib3gtYmFja2dyb3VuZFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtY2hlY2tib3gtY2hlY2tlZC5tYXQtcHJpbWFyeVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWNoZWNrYm94LWJhY2tncm91bmRbX25nY29udGVudC0lQ09NUCVde2JhY2tncm91bmQtY29sb3I6I2Y1N2MwMH0ubWF0LWNoZWNrYm94LWluZGV0ZXJtaW5hdGUubWF0LWFjY2VudFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWNoZWNrYm94LWJhY2tncm91bmRbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWNoZWNrYm94LWNoZWNrZWQubWF0LWFjY2VudFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWNoZWNrYm94LWJhY2tncm91bmRbX25nY29udGVudC0lQ09NUCVde2JhY2tncm91bmQtY29sb3I6I2ZmOTgwMH0ubWF0LWNoZWNrYm94LWluZGV0ZXJtaW5hdGUubWF0LXdhcm5bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1jaGVja2JveC1iYWNrZ3JvdW5kW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1jaGVja2JveC1jaGVja2VkLm1hdC13YXJuW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtY2hlY2tib3gtYmFja2dyb3VuZFtfbmdjb250ZW50LSVDT01QJV17YmFja2dyb3VuZC1jb2xvcjojZjQ0MzM2fS5tYXQtY2hlY2tib3gtZGlzYWJsZWQubWF0LWNoZWNrYm94LWNoZWNrZWRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1jaGVja2JveC1iYWNrZ3JvdW5kW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1jaGVja2JveC1kaXNhYmxlZC5tYXQtY2hlY2tib3gtaW5kZXRlcm1pbmF0ZVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWNoZWNrYm94LWJhY2tncm91bmRbX25nY29udGVudC0lQ09NUCVde2JhY2tncm91bmQtY29sb3I6I2IwYjBiMH0ubWF0LWNoZWNrYm94LWRpc2FibGVkW19uZ2NvbnRlbnQtJUNPTVAlXTpub3QoLm1hdC1jaGVja2JveC1jaGVja2VkKSAgIC5tYXQtY2hlY2tib3gtZnJhbWVbX25nY29udGVudC0lQ09NUCVde2JvcmRlci1jb2xvcjojYjBiMGIwfS5tYXQtY2hlY2tib3gtZGlzYWJsZWRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1jaGVja2JveC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17Y29sb3I6IzYxNjE2MX0ubWF0LWNoZWNrYm94W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtcmlwcGxlLWVsZW1lbnRbX25nY29udGVudC0lQ09NUCVde2JhY2tncm91bmQtY29sb3I6IzAwMH0ubWF0LWNoZWNrYm94LWNoZWNrZWRbX25nY29udGVudC0lQ09NUCVdOm5vdCgubWF0LWNoZWNrYm94LWRpc2FibGVkKS5tYXQtcHJpbWFyeSAgIC5tYXQtcmlwcGxlLWVsZW1lbnRbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWNoZWNrYm94W19uZ2NvbnRlbnQtJUNPTVAlXTphY3RpdmU6bm90KC5tYXQtY2hlY2tib3gtZGlzYWJsZWQpLm1hdC1wcmltYXJ5ICAgLm1hdC1yaXBwbGUtZWxlbWVudFtfbmdjb250ZW50LSVDT01QJV17YmFja2dyb3VuZDojZjU3YzAwfS5tYXQtY2hlY2tib3gtY2hlY2tlZFtfbmdjb250ZW50LSVDT01QJV06bm90KC5tYXQtY2hlY2tib3gtZGlzYWJsZWQpLm1hdC1hY2NlbnQgICAubWF0LXJpcHBsZS1lbGVtZW50W19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1jaGVja2JveFtfbmdjb250ZW50LSVDT01QJV06YWN0aXZlOm5vdCgubWF0LWNoZWNrYm94LWRpc2FibGVkKS5tYXQtYWNjZW50ICAgLm1hdC1yaXBwbGUtZWxlbWVudFtfbmdjb250ZW50LSVDT01QJV17YmFja2dyb3VuZDojZmY5ODAwfS5tYXQtY2hlY2tib3gtY2hlY2tlZFtfbmdjb250ZW50LSVDT01QJV06bm90KC5tYXQtY2hlY2tib3gtZGlzYWJsZWQpLm1hdC13YXJuICAgLm1hdC1yaXBwbGUtZWxlbWVudFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtY2hlY2tib3hbX25nY29udGVudC0lQ09NUCVdOmFjdGl2ZTpub3QoLm1hdC1jaGVja2JveC1kaXNhYmxlZCkubWF0LXdhcm4gICAubWF0LXJpcHBsZS1lbGVtZW50W19uZ2NvbnRlbnQtJUNPTVAlXXtiYWNrZ3JvdW5kOiNmNDQzMzZ9Lm1hdC1jaGlwLm1hdC1zdGFuZGFyZC1jaGlwW19uZ2NvbnRlbnQtJUNPTVAlXXtiYWNrZ3JvdW5kLWNvbG9yOiNlMGUwZTA7Y29sb3I6IzIxMjEyMX0ubWF0LWNoaXAubWF0LXN0YW5kYXJkLWNoaXBbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1jaGlwLXJlbW92ZVtfbmdjb250ZW50LSVDT01QJV17Y29sb3I6IzIxMjEyMTtvcGFjaXR5Oi40fS5tYXQtY2hpcC5tYXQtc3RhbmRhcmQtY2hpcFtfbmdjb250ZW50LSVDT01QJV06bm90KC5tYXQtY2hpcC1kaXNhYmxlZCk6YWN0aXZle2JveC1zaGFkb3c6MHB4IDNweCAzcHggLTJweCByZ2JhKDAsIDAsIDAsIDAuMiksMHB4IDNweCA0cHggMHB4IHJnYmEoMCwgMCwgMCwgMC4xNCksMHB4IDFweCA4cHggMHB4IHJnYmEoMCwgMCwgMCwgMC4xMil9Lm1hdC1jaGlwLm1hdC1zdGFuZGFyZC1jaGlwW19uZ2NvbnRlbnQtJUNPTVAlXTpub3QoLm1hdC1jaGlwLWRpc2FibGVkKSAgIC5tYXQtY2hpcC1yZW1vdmVbX25nY29udGVudC0lQ09NUCVdOmhvdmVye29wYWNpdHk6LjU0fS5tYXQtY2hpcC5tYXQtc3RhbmRhcmQtY2hpcC5tYXQtY2hpcC1kaXNhYmxlZFtfbmdjb250ZW50LSVDT01QJV17b3BhY2l0eTouNH0ubWF0LWNoaXAubWF0LXN0YW5kYXJkLWNoaXBbX25nY29udGVudC0lQ09NUCVdOjphZnRlcntiYWNrZ3JvdW5kOiMwMDB9Lm1hdC1jaGlwLm1hdC1zdGFuZGFyZC1jaGlwLm1hdC1jaGlwLXNlbGVjdGVkLm1hdC1wcmltYXJ5W19uZ2NvbnRlbnQtJUNPTVAlXXtiYWNrZ3JvdW5kLWNvbG9yOiNmNTdjMDA7Y29sb3I6I2ZmZn0ubWF0LWNoaXAubWF0LXN0YW5kYXJkLWNoaXAubWF0LWNoaXAtc2VsZWN0ZWQubWF0LXByaW1hcnlbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1jaGlwLXJlbW92ZVtfbmdjb250ZW50LSVDT01QJV17Y29sb3I6I2ZmZjtvcGFjaXR5Oi40fS5tYXQtY2hpcC5tYXQtc3RhbmRhcmQtY2hpcC5tYXQtY2hpcC1zZWxlY3RlZC5tYXQtcHJpbWFyeVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXJpcHBsZS1lbGVtZW50W19uZ2NvbnRlbnQtJUNPTVAlXXtiYWNrZ3JvdW5kLWNvbG9yOnJnYmEoMjU1LDI1NSwyNTUsLjEpfS5tYXQtY2hpcC5tYXQtc3RhbmRhcmQtY2hpcC5tYXQtY2hpcC1zZWxlY3RlZC5tYXQtd2Fybltfbmdjb250ZW50LSVDT01QJV17YmFja2dyb3VuZC1jb2xvcjojZjQ0MzM2O2NvbG9yOiNmZmZ9Lm1hdC1jaGlwLm1hdC1zdGFuZGFyZC1jaGlwLm1hdC1jaGlwLXNlbGVjdGVkLm1hdC13YXJuW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtY2hpcC1yZW1vdmVbX25nY29udGVudC0lQ09NUCVde2NvbG9yOiNmZmY7b3BhY2l0eTouNH0ubWF0LWNoaXAubWF0LXN0YW5kYXJkLWNoaXAubWF0LWNoaXAtc2VsZWN0ZWQubWF0LXdhcm5bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1yaXBwbGUtZWxlbWVudFtfbmdjb250ZW50LSVDT01QJV17YmFja2dyb3VuZC1jb2xvcjpyZ2JhKDI1NSwyNTUsMjU1LC4xKX0ubWF0LWNoaXAubWF0LXN0YW5kYXJkLWNoaXAubWF0LWNoaXAtc2VsZWN0ZWQubWF0LWFjY2VudFtfbmdjb250ZW50LSVDT01QJV17YmFja2dyb3VuZC1jb2xvcjojZmY5ODAwO2NvbG9yOiNmZmZ9Lm1hdC1jaGlwLm1hdC1zdGFuZGFyZC1jaGlwLm1hdC1jaGlwLXNlbGVjdGVkLm1hdC1hY2NlbnRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1jaGlwLXJlbW92ZVtfbmdjb250ZW50LSVDT01QJV17Y29sb3I6I2ZmZjtvcGFjaXR5Oi40fS5tYXQtY2hpcC5tYXQtc3RhbmRhcmQtY2hpcC5tYXQtY2hpcC1zZWxlY3RlZC5tYXQtYWNjZW50W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtcmlwcGxlLWVsZW1lbnRbX25nY29udGVudC0lQ09NUCVde2JhY2tncm91bmQtY29sb3I6cmdiYSgyNTUsMjU1LDI1NSwuMSl9Lm1hdC10YWJsZVtfbmdjb250ZW50LSVDT01QJV17YmFja2dyb3VuZDojZmZmfS5tYXQtdGFibGVbX25nY29udGVudC0lQ09NUCVdICAgdGhlYWRbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXRhYmxlW19uZ2NvbnRlbnQtJUNPTVAlXSAgIHRib2R5W19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10YWJsZVtfbmdjb250ZW50LSVDT01QJV0gICB0Zm9vdFtfbmdjb250ZW50LSVDT01QJV0sIG1hdC1oZWFkZXItcm93W19uZ2NvbnRlbnQtJUNPTVAlXSwgbWF0LXJvd1tfbmdjb250ZW50LSVDT01QJV0sIG1hdC1mb290ZXItcm93W19uZ2NvbnRlbnQtJUNPTVAlXSwgW21hdC1oZWFkZXItcm93XVtfbmdjb250ZW50LSVDT01QJV0sIFttYXQtcm93XVtfbmdjb250ZW50LSVDT01QJV0sIFttYXQtZm9vdGVyLXJvd11bX25nY29udGVudC0lQ09NUCVdLCAubWF0LXRhYmxlLXN0aWNreVtfbmdjb250ZW50LSVDT01QJV17YmFja2dyb3VuZDppbmhlcml0fW1hdC1yb3dbX25nY29udGVudC0lQ09NUCVdLCBtYXQtaGVhZGVyLXJvd1tfbmdjb250ZW50LSVDT01QJV0sIG1hdC1mb290ZXItcm93W19uZ2NvbnRlbnQtJUNPTVAlXSwgdGgubWF0LWhlYWRlci1jZWxsW19uZ2NvbnRlbnQtJUNPTVAlXSwgdGQubWF0LWNlbGxbX25nY29udGVudC0lQ09NUCVdLCB0ZC5tYXQtZm9vdGVyLWNlbGxbX25nY29udGVudC0lQ09NUCVde2JvcmRlci1ib3R0b20tY29sb3I6cmdiYSgwLDAsMCwuMTIpfS5tYXQtaGVhZGVyLWNlbGxbX25nY29udGVudC0lQ09NUCVde2NvbG9yOiM2MTYxNjF9Lm1hdC1jZWxsW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1mb290ZXItY2VsbFtfbmdjb250ZW50LSVDT01QJV17Y29sb3I6IzIxMjEyMX0ubWF0LWNhbGVuZGFyLWFycm93W19uZ2NvbnRlbnQtJUNPTVAlXXtib3JkZXItdG9wLWNvbG9yOnJnYmEoMCwwLDAsLjU0KX0ubWF0LWRhdGVwaWNrZXItdG9nZ2xlW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1kYXRlcGlja2VyLWNvbnRlbnRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1jYWxlbmRhci1uZXh0LWJ1dHRvbltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtZGF0ZXBpY2tlci1jb250ZW50W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtY2FsZW5kYXItcHJldmlvdXMtYnV0dG9uW19uZ2NvbnRlbnQtJUNPTVAlXXtjb2xvcjpyZ2JhKDAsMCwwLC41NCl9Lm1hdC1jYWxlbmRhci10YWJsZS1oZWFkZXJbX25nY29udGVudC0lQ09NUCVde2NvbG9yOnJnYmEoMCwwLDAsLjM4KX0ubWF0LWNhbGVuZGFyLXRhYmxlLWhlYWRlci1kaXZpZGVyW19uZ2NvbnRlbnQtJUNPTVAlXTo6YWZ0ZXJ7YmFja2dyb3VuZDpyZ2JhKDAsMCwwLC4xMil9Lm1hdC1jYWxlbmRhci1ib2R5LWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXtjb2xvcjojNjE2MTYxfS5tYXQtY2FsZW5kYXItYm9keS1jZWxsLWNvbnRlbnRbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWRhdGUtcmFuZ2UtaW5wdXQtc2VwYXJhdG9yW19uZ2NvbnRlbnQtJUNPTVAlXXtjb2xvcjojMjEyMTIxO2JvcmRlci1jb2xvcjp0cmFuc3BhcmVudH0ubWF0LWNhbGVuZGFyLWJvZHktZGlzYWJsZWRbX25nY29udGVudC0lQ09NUCVdID4gLm1hdC1jYWxlbmRhci1ib2R5LWNlbGwtY29udGVudFtfbmdjb250ZW50LSVDT01QJV06bm90KC5tYXQtY2FsZW5kYXItYm9keS1zZWxlY3RlZCk6bm90KC5tYXQtY2FsZW5kYXItYm9keS1jb21wYXJpc29uLWlkZW50aWNhbCl7Y29sb3I6Izc1NzU3NX0ubWF0LWZvcm0tZmllbGQtZGlzYWJsZWRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1kYXRlLXJhbmdlLWlucHV0LXNlcGFyYXRvcltfbmdjb250ZW50LSVDT01QJV17Y29sb3I6Izc1NzU3NX0ubWF0LWNhbGVuZGFyLWJvZHktY2VsbFtfbmdjb250ZW50LSVDT01QJV06bm90KC5tYXQtY2FsZW5kYXItYm9keS1kaXNhYmxlZCk6aG92ZXIgPiAubWF0LWNhbGVuZGFyLWJvZHktY2VsbC1jb250ZW50W19uZ2NvbnRlbnQtJUNPTVAlXTpub3QoLm1hdC1jYWxlbmRhci1ib2R5LXNlbGVjdGVkKTpub3QoLm1hdC1jYWxlbmRhci1ib2R5LWNvbXBhcmlzb24taWRlbnRpY2FsKSwgLmNkay1rZXlib2FyZC1mb2N1c2VkW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtY2FsZW5kYXItYm9keS1hY3RpdmVbX25nY29udGVudC0lQ09NUCVdID4gLm1hdC1jYWxlbmRhci1ib2R5LWNlbGwtY29udGVudFtfbmdjb250ZW50LSVDT01QJV06bm90KC5tYXQtY2FsZW5kYXItYm9keS1zZWxlY3RlZCk6bm90KC5tYXQtY2FsZW5kYXItYm9keS1jb21wYXJpc29uLWlkZW50aWNhbCksIC5jZGstcHJvZ3JhbS1mb2N1c2VkW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtY2FsZW5kYXItYm9keS1hY3RpdmVbX25nY29udGVudC0lQ09NUCVdID4gLm1hdC1jYWxlbmRhci1ib2R5LWNlbGwtY29udGVudFtfbmdjb250ZW50LSVDT01QJV06bm90KC5tYXQtY2FsZW5kYXItYm9keS1zZWxlY3RlZCk6bm90KC5tYXQtY2FsZW5kYXItYm9keS1jb21wYXJpc29uLWlkZW50aWNhbCl7YmFja2dyb3VuZC1jb2xvcjpyZ2JhKDAsMCwwLC4wNCl9Lm1hdC1jYWxlbmRhci1ib2R5LWluLXByZXZpZXdbX25nY29udGVudC0lQ09NUCVde2NvbG9yOnJnYmEoMCwwLDAsLjI0KX0ubWF0LWNhbGVuZGFyLWJvZHktdG9kYXlbX25nY29udGVudC0lQ09NUCVdOm5vdCgubWF0LWNhbGVuZGFyLWJvZHktc2VsZWN0ZWQpOm5vdCgubWF0LWNhbGVuZGFyLWJvZHktY29tcGFyaXNvbi1pZGVudGljYWwpe2JvcmRlci1jb2xvcjpyZ2JhKDAsMCwwLC4zOCl9Lm1hdC1jYWxlbmRhci1ib2R5LWRpc2FibGVkW19uZ2NvbnRlbnQtJUNPTVAlXSA+IC5tYXQtY2FsZW5kYXItYm9keS10b2RheVtfbmdjb250ZW50LSVDT01QJV06bm90KC5tYXQtY2FsZW5kYXItYm9keS1zZWxlY3RlZCk6bm90KC5tYXQtY2FsZW5kYXItYm9keS1jb21wYXJpc29uLWlkZW50aWNhbCl7Ym9yZGVyLWNvbG9yOnJnYmEoMCwwLDAsLjE4KX0ubWF0LWNhbGVuZGFyLWJvZHktaW4tcmFuZ2VbX25nY29udGVudC0lQ09NUCVdOjpiZWZvcmV7YmFja2dyb3VuZDpyZ2JhKDI0NSwxMjQsMCwuMil9Lm1hdC1jYWxlbmRhci1ib2R5LWNvbXBhcmlzb24taWRlbnRpY2FsW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1jYWxlbmRhci1ib2R5LWluLWNvbXBhcmlzb24tcmFuZ2VbX25nY29udGVudC0lQ09NUCVdOjpiZWZvcmV7YmFja2dyb3VuZDpyZ2JhKDI0OSwxNzEsMCwuMil9Lm1hdC1jYWxlbmRhci1ib2R5LWNvbXBhcmlzb24tYnJpZGdlLXN0YXJ0W19uZ2NvbnRlbnQtJUNPTVAlXTo6YmVmb3JlLCBbZGlyPXJ0bF1bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1jYWxlbmRhci1ib2R5LWNvbXBhcmlzb24tYnJpZGdlLWVuZFtfbmdjb250ZW50LSVDT01QJV06OmJlZm9yZXtiYWNrZ3JvdW5kOmxpbmVhci1ncmFkaWVudCh0byByaWdodCwgcmdiYSgyNDUsIDEyNCwgMCwgMC4yKSA1MCUsIHJnYmEoMjQ5LCAxNzEsIDAsIDAuMikgNTAlKX0ubWF0LWNhbGVuZGFyLWJvZHktY29tcGFyaXNvbi1icmlkZ2UtZW5kW19uZ2NvbnRlbnQtJUNPTVAlXTo6YmVmb3JlLCBbZGlyPXJ0bF1bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1jYWxlbmRhci1ib2R5LWNvbXBhcmlzb24tYnJpZGdlLXN0YXJ0W19uZ2NvbnRlbnQtJUNPTVAlXTo6YmVmb3Jle2JhY2tncm91bmQ6bGluZWFyLWdyYWRpZW50KHRvIGxlZnQsIHJnYmEoMjQ1LCAxMjQsIDAsIDAuMikgNTAlLCByZ2JhKDI0OSwgMTcxLCAwLCAwLjIpIDUwJSl9Lm1hdC1jYWxlbmRhci1ib2R5LWluLXJhbmdlW19uZ2NvbnRlbnQtJUNPTVAlXSA+IC5tYXQtY2FsZW5kYXItYm9keS1jb21wYXJpc29uLWlkZW50aWNhbFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtY2FsZW5kYXItYm9keS1pbi1jb21wYXJpc29uLXJhbmdlLm1hdC1jYWxlbmRhci1ib2R5LWluLXJhbmdlW19uZ2NvbnRlbnQtJUNPTVAlXTo6YWZ0ZXJ7YmFja2dyb3VuZDojYThkYWI1fS5tYXQtY2FsZW5kYXItYm9keS1jb21wYXJpc29uLWlkZW50aWNhbC5tYXQtY2FsZW5kYXItYm9keS1zZWxlY3RlZFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtY2FsZW5kYXItYm9keS1pbi1jb21wYXJpc29uLXJhbmdlW19uZ2NvbnRlbnQtJUNPTVAlXSA+IC5tYXQtY2FsZW5kYXItYm9keS1zZWxlY3RlZFtfbmdjb250ZW50LSVDT01QJV17YmFja2dyb3VuZDojNDZhMzVlfS5tYXQtY2FsZW5kYXItYm9keS1zZWxlY3RlZFtfbmdjb250ZW50LSVDT01QJV17YmFja2dyb3VuZC1jb2xvcjojZjU3YzAwO2NvbG9yOiNmZmZ9Lm1hdC1jYWxlbmRhci1ib2R5LWRpc2FibGVkW19uZ2NvbnRlbnQtJUNPTVAlXSA+IC5tYXQtY2FsZW5kYXItYm9keS1zZWxlY3RlZFtfbmdjb250ZW50LSVDT01QJV17YmFja2dyb3VuZC1jb2xvcjpyZ2JhKDI0NSwxMjQsMCwuNCl9Lm1hdC1jYWxlbmRhci1ib2R5LXRvZGF5Lm1hdC1jYWxlbmRhci1ib2R5LXNlbGVjdGVkW19uZ2NvbnRlbnQtJUNPTVAlXXtib3gtc2hhZG93Omluc2V0IDAgMCAwIDFweCAjZmZmfS5tYXQtZGF0ZXBpY2tlci1jb250ZW50W19uZ2NvbnRlbnQtJUNPTVAlXXtib3gtc2hhZG93OjBweCAycHggNHB4IC0xcHggcmdiYSgwLCAwLCAwLCAwLjIpLDBweCA0cHggNXB4IDBweCByZ2JhKDAsIDAsIDAsIDAuMTQpLDBweCAxcHggMTBweCAwcHggcmdiYSgwLCAwLCAwLCAwLjEyKTtiYWNrZ3JvdW5kLWNvbG9yOiNmZmY7Y29sb3I6IzIxMjEyMX0ubWF0LWRhdGVwaWNrZXItY29udGVudC5tYXQtYWNjZW50W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtY2FsZW5kYXItYm9keS1pbi1yYW5nZVtfbmdjb250ZW50LSVDT01QJV06OmJlZm9yZXtiYWNrZ3JvdW5kOnJnYmEoMjU1LDE1MiwwLC4yKX0ubWF0LWRhdGVwaWNrZXItY29udGVudC5tYXQtYWNjZW50W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtY2FsZW5kYXItYm9keS1jb21wYXJpc29uLWlkZW50aWNhbFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtZGF0ZXBpY2tlci1jb250ZW50Lm1hdC1hY2NlbnRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1jYWxlbmRhci1ib2R5LWluLWNvbXBhcmlzb24tcmFuZ2VbX25nY29udGVudC0lQ09NUCVdOjpiZWZvcmV7YmFja2dyb3VuZDpyZ2JhKDI0OSwxNzEsMCwuMil9Lm1hdC1kYXRlcGlja2VyLWNvbnRlbnQubWF0LWFjY2VudFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWNhbGVuZGFyLWJvZHktY29tcGFyaXNvbi1icmlkZ2Utc3RhcnRbX25nY29udGVudC0lQ09NUCVdOjpiZWZvcmUsIC5tYXQtZGF0ZXBpY2tlci1jb250ZW50Lm1hdC1hY2NlbnRbX25nY29udGVudC0lQ09NUCVdICAgW2Rpcj1ydGxdW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtY2FsZW5kYXItYm9keS1jb21wYXJpc29uLWJyaWRnZS1lbmRbX25nY29udGVudC0lQ09NUCVdOjpiZWZvcmV7YmFja2dyb3VuZDpsaW5lYXItZ3JhZGllbnQodG8gcmlnaHQsIHJnYmEoMjU1LCAxNTIsIDAsIDAuMikgNTAlLCByZ2JhKDI0OSwgMTcxLCAwLCAwLjIpIDUwJSl9Lm1hdC1kYXRlcGlja2VyLWNvbnRlbnQubWF0LWFjY2VudFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWNhbGVuZGFyLWJvZHktY29tcGFyaXNvbi1icmlkZ2UtZW5kW19uZ2NvbnRlbnQtJUNPTVAlXTo6YmVmb3JlLCAubWF0LWRhdGVwaWNrZXItY29udGVudC5tYXQtYWNjZW50W19uZ2NvbnRlbnQtJUNPTVAlXSAgIFtkaXI9cnRsXVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWNhbGVuZGFyLWJvZHktY29tcGFyaXNvbi1icmlkZ2Utc3RhcnRbX25nY29udGVudC0lQ09NUCVdOjpiZWZvcmV7YmFja2dyb3VuZDpsaW5lYXItZ3JhZGllbnQodG8gbGVmdCwgcmdiYSgyNTUsIDE1MiwgMCwgMC4yKSA1MCUsIHJnYmEoMjQ5LCAxNzEsIDAsIDAuMikgNTAlKX0ubWF0LWRhdGVwaWNrZXItY29udGVudC5tYXQtYWNjZW50W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtY2FsZW5kYXItYm9keS1pbi1yYW5nZVtfbmdjb250ZW50LSVDT01QJV0gPiAubWF0LWNhbGVuZGFyLWJvZHktY29tcGFyaXNvbi1pZGVudGljYWxbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWRhdGVwaWNrZXItY29udGVudC5tYXQtYWNjZW50W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtY2FsZW5kYXItYm9keS1pbi1jb21wYXJpc29uLXJhbmdlLm1hdC1jYWxlbmRhci1ib2R5LWluLXJhbmdlW19uZ2NvbnRlbnQtJUNPTVAlXTo6YWZ0ZXJ7YmFja2dyb3VuZDojYThkYWI1fS5tYXQtZGF0ZXBpY2tlci1jb250ZW50Lm1hdC1hY2NlbnRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1jYWxlbmRhci1ib2R5LWNvbXBhcmlzb24taWRlbnRpY2FsLm1hdC1jYWxlbmRhci1ib2R5LXNlbGVjdGVkW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1kYXRlcGlja2VyLWNvbnRlbnQubWF0LWFjY2VudFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWNhbGVuZGFyLWJvZHktaW4tY29tcGFyaXNvbi1yYW5nZVtfbmdjb250ZW50LSVDT01QJV0gPiAubWF0LWNhbGVuZGFyLWJvZHktc2VsZWN0ZWRbX25nY29udGVudC0lQ09NUCVde2JhY2tncm91bmQ6IzQ2YTM1ZX0ubWF0LWRhdGVwaWNrZXItY29udGVudC5tYXQtYWNjZW50W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtY2FsZW5kYXItYm9keS1zZWxlY3RlZFtfbmdjb250ZW50LSVDT01QJV17YmFja2dyb3VuZC1jb2xvcjojZmY5ODAwO2NvbG9yOiNmZmZ9Lm1hdC1kYXRlcGlja2VyLWNvbnRlbnQubWF0LWFjY2VudFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWNhbGVuZGFyLWJvZHktZGlzYWJsZWRbX25nY29udGVudC0lQ09NUCVdID4gLm1hdC1jYWxlbmRhci1ib2R5LXNlbGVjdGVkW19uZ2NvbnRlbnQtJUNPTVAlXXtiYWNrZ3JvdW5kLWNvbG9yOnJnYmEoMjU1LDE1MiwwLC40KX0ubWF0LWRhdGVwaWNrZXItY29udGVudC5tYXQtYWNjZW50W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtY2FsZW5kYXItYm9keS10b2RheS5tYXQtY2FsZW5kYXItYm9keS1zZWxlY3RlZFtfbmdjb250ZW50LSVDT01QJV17Ym94LXNoYWRvdzppbnNldCAwIDAgMCAxcHggI2ZmZn0ubWF0LWRhdGVwaWNrZXItY29udGVudC5tYXQtd2Fybltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWNhbGVuZGFyLWJvZHktaW4tcmFuZ2VbX25nY29udGVudC0lQ09NUCVdOjpiZWZvcmV7YmFja2dyb3VuZDpyZ2JhKDI0NCw2Nyw1NCwuMil9Lm1hdC1kYXRlcGlja2VyLWNvbnRlbnQubWF0LXdhcm5bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1jYWxlbmRhci1ib2R5LWNvbXBhcmlzb24taWRlbnRpY2FsW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1kYXRlcGlja2VyLWNvbnRlbnQubWF0LXdhcm5bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1jYWxlbmRhci1ib2R5LWluLWNvbXBhcmlzb24tcmFuZ2VbX25nY29udGVudC0lQ09NUCVdOjpiZWZvcmV7YmFja2dyb3VuZDpyZ2JhKDI0OSwxNzEsMCwuMil9Lm1hdC1kYXRlcGlja2VyLWNvbnRlbnQubWF0LXdhcm5bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1jYWxlbmRhci1ib2R5LWNvbXBhcmlzb24tYnJpZGdlLXN0YXJ0W19uZ2NvbnRlbnQtJUNPTVAlXTo6YmVmb3JlLCAubWF0LWRhdGVwaWNrZXItY29udGVudC5tYXQtd2Fybltfbmdjb250ZW50LSVDT01QJV0gICBbZGlyPXJ0bF1bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1jYWxlbmRhci1ib2R5LWNvbXBhcmlzb24tYnJpZGdlLWVuZFtfbmdjb250ZW50LSVDT01QJV06OmJlZm9yZXtiYWNrZ3JvdW5kOmxpbmVhci1ncmFkaWVudCh0byByaWdodCwgcmdiYSgyNDQsIDY3LCA1NCwgMC4yKSA1MCUsIHJnYmEoMjQ5LCAxNzEsIDAsIDAuMikgNTAlKX0ubWF0LWRhdGVwaWNrZXItY29udGVudC5tYXQtd2Fybltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWNhbGVuZGFyLWJvZHktY29tcGFyaXNvbi1icmlkZ2UtZW5kW19uZ2NvbnRlbnQtJUNPTVAlXTo6YmVmb3JlLCAubWF0LWRhdGVwaWNrZXItY29udGVudC5tYXQtd2Fybltfbmdjb250ZW50LSVDT01QJV0gICBbZGlyPXJ0bF1bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1jYWxlbmRhci1ib2R5LWNvbXBhcmlzb24tYnJpZGdlLXN0YXJ0W19uZ2NvbnRlbnQtJUNPTVAlXTo6YmVmb3Jle2JhY2tncm91bmQ6bGluZWFyLWdyYWRpZW50KHRvIGxlZnQsIHJnYmEoMjQ0LCA2NywgNTQsIDAuMikgNTAlLCByZ2JhKDI0OSwgMTcxLCAwLCAwLjIpIDUwJSl9Lm1hdC1kYXRlcGlja2VyLWNvbnRlbnQubWF0LXdhcm5bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1jYWxlbmRhci1ib2R5LWluLXJhbmdlW19uZ2NvbnRlbnQtJUNPTVAlXSA+IC5tYXQtY2FsZW5kYXItYm9keS1jb21wYXJpc29uLWlkZW50aWNhbFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtZGF0ZXBpY2tlci1jb250ZW50Lm1hdC13YXJuW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtY2FsZW5kYXItYm9keS1pbi1jb21wYXJpc29uLXJhbmdlLm1hdC1jYWxlbmRhci1ib2R5LWluLXJhbmdlW19uZ2NvbnRlbnQtJUNPTVAlXTo6YWZ0ZXJ7YmFja2dyb3VuZDojYThkYWI1fS5tYXQtZGF0ZXBpY2tlci1jb250ZW50Lm1hdC13YXJuW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtY2FsZW5kYXItYm9keS1jb21wYXJpc29uLWlkZW50aWNhbC5tYXQtY2FsZW5kYXItYm9keS1zZWxlY3RlZFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtZGF0ZXBpY2tlci1jb250ZW50Lm1hdC13YXJuW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtY2FsZW5kYXItYm9keS1pbi1jb21wYXJpc29uLXJhbmdlW19uZ2NvbnRlbnQtJUNPTVAlXSA+IC5tYXQtY2FsZW5kYXItYm9keS1zZWxlY3RlZFtfbmdjb250ZW50LSVDT01QJV17YmFja2dyb3VuZDojNDZhMzVlfS5tYXQtZGF0ZXBpY2tlci1jb250ZW50Lm1hdC13YXJuW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtY2FsZW5kYXItYm9keS1zZWxlY3RlZFtfbmdjb250ZW50LSVDT01QJV17YmFja2dyb3VuZC1jb2xvcjojZjQ0MzM2O2NvbG9yOiNmZmZ9Lm1hdC1kYXRlcGlja2VyLWNvbnRlbnQubWF0LXdhcm5bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1jYWxlbmRhci1ib2R5LWRpc2FibGVkW19uZ2NvbnRlbnQtJUNPTVAlXSA+IC5tYXQtY2FsZW5kYXItYm9keS1zZWxlY3RlZFtfbmdjb250ZW50LSVDT01QJV17YmFja2dyb3VuZC1jb2xvcjpyZ2JhKDI0NCw2Nyw1NCwuNCl9Lm1hdC1kYXRlcGlja2VyLWNvbnRlbnQubWF0LXdhcm5bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1jYWxlbmRhci1ib2R5LXRvZGF5Lm1hdC1jYWxlbmRhci1ib2R5LXNlbGVjdGVkW19uZ2NvbnRlbnQtJUNPTVAlXXtib3gtc2hhZG93Omluc2V0IDAgMCAwIDFweCAjZmZmfS5tYXQtZGF0ZXBpY2tlci1jb250ZW50LXRvdWNoW19uZ2NvbnRlbnQtJUNPTVAlXXtib3gtc2hhZG93OjBweCAwcHggMHB4IDBweCByZ2JhKDAsIDAsIDAsIDAuMiksMHB4IDBweCAwcHggMHB4IHJnYmEoMCwgMCwgMCwgMC4xNCksMHB4IDBweCAwcHggMHB4IHJnYmEoMCwgMCwgMCwgMC4xMil9Lm1hdC1kYXRlcGlja2VyLXRvZ2dsZS1hY3RpdmVbX25nY29udGVudC0lQ09NUCVde2NvbG9yOiNmNTdjMDB9Lm1hdC1kYXRlcGlja2VyLXRvZ2dsZS1hY3RpdmUubWF0LWFjY2VudFtfbmdjb250ZW50LSVDT01QJV17Y29sb3I6I2ZmOTgwMH0ubWF0LWRhdGVwaWNrZXItdG9nZ2xlLWFjdGl2ZS5tYXQtd2Fybltfbmdjb250ZW50LSVDT01QJV17Y29sb3I6I2Y0NDMzNn0ubWF0LWRhdGUtcmFuZ2UtaW5wdXQtaW5uZXJbZGlzYWJsZWRdW19uZ2NvbnRlbnQtJUNPTVAlXXtjb2xvcjojNzU3NTc1fS5tYXQtZGlhbG9nLWNvbnRhaW5lcltfbmdjb250ZW50LSVDT01QJV17Ym94LXNoYWRvdzowcHggMTFweCAxNXB4IC03cHggcmdiYSgwLCAwLCAwLCAwLjIpLDBweCAyNHB4IDM4cHggM3B4IHJnYmEoMCwgMCwgMCwgMC4xNCksMHB4IDlweCA0NnB4IDhweCByZ2JhKDAsIDAsIDAsIDAuMTIpO2JhY2tncm91bmQ6I2ZmZjtjb2xvcjojMjEyMTIxfS5tYXQtZGl2aWRlcltfbmdjb250ZW50LSVDT01QJV17Ym9yZGVyLXRvcC1jb2xvcjpyZ2JhKDAsMCwwLC4xMil9Lm1hdC1kaXZpZGVyLXZlcnRpY2FsW19uZ2NvbnRlbnQtJUNPTVAlXXtib3JkZXItcmlnaHQtY29sb3I6cmdiYSgwLDAsMCwuMTIpfS5tYXQtZXhwYW5zaW9uLXBhbmVsW19uZ2NvbnRlbnQtJUNPTVAlXXtiYWNrZ3JvdW5kOiNmZmY7Y29sb3I6IzIxMjEyMX0ubWF0LWV4cGFuc2lvbi1wYW5lbFtfbmdjb250ZW50LSVDT01QJV06bm90KFtjbGFzcyo9bWF0LWVsZXZhdGlvbi16XSl7Ym94LXNoYWRvdzowcHggM3B4IDFweCAtMnB4IHJnYmEoMCwgMCwgMCwgMC4yKSwwcHggMnB4IDJweCAwcHggcmdiYSgwLCAwLCAwLCAwLjE0KSwwcHggMXB4IDVweCAwcHggcmdiYSgwLCAwLCAwLCAwLjEyKX0ubWF0LWFjdGlvbi1yb3dbX25nY29udGVudC0lQ09NUCVde2JvcmRlci10b3AtY29sb3I6cmdiYSgwLDAsMCwuMTIpfS5tYXQtZXhwYW5zaW9uLXBhbmVsW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZXhwYW5zaW9uLXBhbmVsLWhlYWRlci5jZGsta2V5Ym9hcmQtZm9jdXNlZFtfbmdjb250ZW50LSVDT01QJV06bm90KFthcmlhLWRpc2FibGVkPXRydWVdKSwgLm1hdC1leHBhbnNpb24tcGFuZWxbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1leHBhbnNpb24tcGFuZWwtaGVhZGVyLmNkay1wcm9ncmFtLWZvY3VzZWRbX25nY29udGVudC0lQ09NUCVdOm5vdChbYXJpYS1kaXNhYmxlZD10cnVlXSksIC5tYXQtZXhwYW5zaW9uLXBhbmVsW19uZ2NvbnRlbnQtJUNPTVAlXTpub3QoLm1hdC1leHBhbmRlZCkgICAubWF0LWV4cGFuc2lvbi1wYW5lbC1oZWFkZXJbX25nY29udGVudC0lQ09NUCVdOmhvdmVyOm5vdChbYXJpYS1kaXNhYmxlZD10cnVlXSl7YmFja2dyb3VuZDpyZ2JhKDAsMCwwLC4wNCl9QG1lZGlhKGhvdmVyOiBub25lKXsubWF0LWV4cGFuc2lvbi1wYW5lbFtfbmdjb250ZW50LSVDT01QJV06bm90KC5tYXQtZXhwYW5kZWQpOm5vdChbYXJpYS1kaXNhYmxlZD10cnVlXSkgICAubWF0LWV4cGFuc2lvbi1wYW5lbC1oZWFkZXJbX25nY29udGVudC0lQ09NUCVdOmhvdmVye2JhY2tncm91bmQ6I2ZmZn19Lm1hdC1leHBhbnNpb24tcGFuZWwtaGVhZGVyLXRpdGxlW19uZ2NvbnRlbnQtJUNPTVAlXXtjb2xvcjojMjEyMTIxfS5tYXQtZXhwYW5zaW9uLXBhbmVsLWhlYWRlci1kZXNjcmlwdGlvbltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtZXhwYW5zaW9uLWluZGljYXRvcltfbmdjb250ZW50LSVDT01QJV06OmFmdGVye2NvbG9yOiM2MTYxNjF9Lm1hdC1leHBhbnNpb24tcGFuZWwtaGVhZGVyW2FyaWEtZGlzYWJsZWQ9dHJ1ZV1bX25nY29udGVudC0lQ09NUCVde2NvbG9yOnJnYmEoMCwwLDAsLjI2KX0ubWF0LWV4cGFuc2lvbi1wYW5lbC1oZWFkZXJbYXJpYS1kaXNhYmxlZD10cnVlXVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWV4cGFuc2lvbi1wYW5lbC1oZWFkZXItdGl0bGVbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWV4cGFuc2lvbi1wYW5lbC1oZWFkZXJbYXJpYS1kaXNhYmxlZD10cnVlXVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWV4cGFuc2lvbi1wYW5lbC1oZWFkZXItZGVzY3JpcHRpb25bX25nY29udGVudC0lQ09NUCVde2NvbG9yOmluaGVyaXR9Lm1hdC1leHBhbnNpb24tcGFuZWwtaGVhZGVyW19uZ2NvbnRlbnQtJUNPTVAlXXtoZWlnaHQ6NDhweH0ubWF0LWV4cGFuc2lvbi1wYW5lbC1oZWFkZXIubWF0LWV4cGFuZGVkW19uZ2NvbnRlbnQtJUNPTVAlXXtoZWlnaHQ6NjRweH0ubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVde2NvbG9yOnJnYmEoOTcsOTcsOTcsLjYpfS5tYXQtaGludFtfbmdjb250ZW50LSVDT01QJV17Y29sb3I6cmdiYSg5Nyw5Nyw5NywuNil9Lm1hdC1mb3JtLWZpZWxkLm1hdC1mb2N1c2VkW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17Y29sb3I6I2Y1N2MwMH0ubWF0LWZvcm0tZmllbGQubWF0LWZvY3VzZWRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsLm1hdC1hY2NlbnRbX25nY29udGVudC0lQ09NUCVde2NvbG9yOiNmZjk4MDB9Lm1hdC1mb3JtLWZpZWxkLm1hdC1mb2N1c2VkW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbC5tYXQtd2Fybltfbmdjb250ZW50LSVDT01QJV17Y29sb3I6I2Y0NDMzNn0ubWF0LWZvY3VzZWRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLXJlcXVpcmVkLW1hcmtlcltfbmdjb250ZW50LSVDT01QJV17Y29sb3I6I2ZmOTgwMH0ubWF0LWZvcm0tZmllbGQtcmlwcGxlW19uZ2NvbnRlbnQtJUNPTVAlXXtiYWNrZ3JvdW5kLWNvbG9yOnJnYmEoMCwwLDAsLjg3KX0ubWF0LWZvcm0tZmllbGQubWF0LWZvY3VzZWRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLXJpcHBsZVtfbmdjb250ZW50LSVDT01QJV17YmFja2dyb3VuZC1jb2xvcjojZjU3YzAwfS5tYXQtZm9ybS1maWVsZC5tYXQtZm9jdXNlZFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtcmlwcGxlLm1hdC1hY2NlbnRbX25nY29udGVudC0lQ09NUCVde2JhY2tncm91bmQtY29sb3I6I2ZmOTgwMH0ubWF0LWZvcm0tZmllbGQubWF0LWZvY3VzZWRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLXJpcHBsZS5tYXQtd2Fybltfbmdjb250ZW50LSVDT01QJV17YmFja2dyb3VuZC1jb2xvcjojZjQ0MzM2fS5tYXQtZm9ybS1maWVsZC10eXBlLW1hdC1uYXRpdmUtc2VsZWN0Lm1hdC1mb2N1c2VkW19uZ2NvbnRlbnQtJUNPTVAlXTpub3QoLm1hdC1mb3JtLWZpZWxkLWludmFsaWQpICAgLm1hdC1mb3JtLWZpZWxkLWluZml4W19uZ2NvbnRlbnQtJUNPTVAlXTo6YWZ0ZXJ7Y29sb3I6I2Y1N2MwMH0ubWF0LWZvcm0tZmllbGQtdHlwZS1tYXQtbmF0aXZlLXNlbGVjdC5tYXQtZm9jdXNlZFtfbmdjb250ZW50LSVDT01QJV06bm90KC5tYXQtZm9ybS1maWVsZC1pbnZhbGlkKS5tYXQtYWNjZW50ICAgLm1hdC1mb3JtLWZpZWxkLWluZml4W19uZ2NvbnRlbnQtJUNPTVAlXTo6YWZ0ZXJ7Y29sb3I6I2ZmOTgwMH0ubWF0LWZvcm0tZmllbGQtdHlwZS1tYXQtbmF0aXZlLXNlbGVjdC5tYXQtZm9jdXNlZFtfbmdjb250ZW50LSVDT01QJV06bm90KC5tYXQtZm9ybS1maWVsZC1pbnZhbGlkKS5tYXQtd2FybiAgIC5tYXQtZm9ybS1maWVsZC1pbmZpeFtfbmdjb250ZW50LSVDT01QJV06OmFmdGVye2NvbG9yOiNmNDQzMzZ9Lm1hdC1mb3JtLWZpZWxkLm1hdC1mb3JtLWZpZWxkLWludmFsaWRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXtjb2xvcjojZjQ0MzM2fS5tYXQtZm9ybS1maWVsZC5tYXQtZm9ybS1maWVsZC1pbnZhbGlkW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbC5tYXQtYWNjZW50W19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1mb3JtLWZpZWxkLm1hdC1mb3JtLWZpZWxkLWludmFsaWRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1yZXF1aXJlZC1tYXJrZXJbX25nY29udGVudC0lQ09NUCVde2NvbG9yOiNmNDQzMzZ9Lm1hdC1mb3JtLWZpZWxkLm1hdC1mb3JtLWZpZWxkLWludmFsaWRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLXJpcHBsZVtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtZm9ybS1maWVsZC5tYXQtZm9ybS1maWVsZC1pbnZhbGlkW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1yaXBwbGUubWF0LWFjY2VudFtfbmdjb250ZW50LSVDT01QJV17YmFja2dyb3VuZC1jb2xvcjojZjQ0MzM2fS5tYXQtZXJyb3JbX25nY29udGVudC0lQ09NUCVde2NvbG9yOiNmNDQzMzZ9Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtbGVnYWN5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17Y29sb3I6IzYxNjE2MX0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1sZWdhY3lbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1oaW50W19uZ2NvbnRlbnQtJUNPTVAlXXtjb2xvcjojNjE2MTYxfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWxlZ2FjeVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtdW5kZXJsaW5lW19uZ2NvbnRlbnQtJUNPTVAlXXtiYWNrZ3JvdW5kLWNvbG9yOnJnYmEoMCwwLDAsLjQyKX0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1sZWdhY3kubWF0LWZvcm0tZmllbGQtZGlzYWJsZWRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLXVuZGVybGluZVtfbmdjb250ZW50LSVDT01QJV17YmFja2dyb3VuZC1pbWFnZTpsaW5lYXItZ3JhZGllbnQodG8gcmlnaHQsIHJnYmEoMCwgMCwgMCwgMC40MikgMCUsIHJnYmEoMCwgMCwgMCwgMC40MikgMzMlLCB0cmFuc3BhcmVudCAwJSk7YmFja2dyb3VuZC1zaXplOjRweCAxMDAlO2JhY2tncm91bmQtcmVwZWF0OnJlcGVhdC14fS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLXN0YW5kYXJkW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC11bmRlcmxpbmVbX25nY29udGVudC0lQ09NUCVde2JhY2tncm91bmQtY29sb3I6cmdiYSgwLDAsMCwuNDIpfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLXN0YW5kYXJkLm1hdC1mb3JtLWZpZWxkLWRpc2FibGVkW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC11bmRlcmxpbmVbX25nY29udGVudC0lQ09NUCVde2JhY2tncm91bmQtaW1hZ2U6bGluZWFyLWdyYWRpZW50KHRvIHJpZ2h0LCByZ2JhKDAsIDAsIDAsIDAuNDIpIDAlLCByZ2JhKDAsIDAsIDAsIDAuNDIpIDMzJSwgdHJhbnNwYXJlbnQgMCUpO2JhY2tncm91bmQtc2l6ZTo0cHggMTAwJTtiYWNrZ3JvdW5kLXJlcGVhdDpyZXBlYXQteH0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1maWxsW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1mbGV4W19uZ2NvbnRlbnQtJUNPTVAlXXtiYWNrZ3JvdW5kLWNvbG9yOnJnYmEoMCwwLDAsLjA0KX0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1maWxsLm1hdC1mb3JtLWZpZWxkLWRpc2FibGVkW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1mbGV4W19uZ2NvbnRlbnQtJUNPTVAlXXtiYWNrZ3JvdW5kLWNvbG9yOnJnYmEoMCwwLDAsLjAyKX0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1maWxsW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC11bmRlcmxpbmVbX25nY29udGVudC0lQ09NUCVdOjpiZWZvcmV7YmFja2dyb3VuZC1jb2xvcjpyZ2JhKDAsMCwwLC40Mil9Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtZmlsbC5tYXQtZm9ybS1maWVsZC1kaXNhYmxlZFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVde2NvbG9yOiM3NTc1NzV9Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtZmlsbC5tYXQtZm9ybS1maWVsZC1kaXNhYmxlZFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtdW5kZXJsaW5lW19uZ2NvbnRlbnQtJUNPTVAlXTo6YmVmb3Jle2JhY2tncm91bmQtY29sb3I6dHJhbnNwYXJlbnR9Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2Utb3V0bGluZVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtb3V0bGluZVtfbmdjb250ZW50LSVDT01QJV17Y29sb3I6cmdiYSgwLDAsMCwuMTIpfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLW91dGxpbmVbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLW91dGxpbmUtdGhpY2tbX25nY29udGVudC0lQ09NUCVde2NvbG9yOnJnYmEoMCwwLDAsLjg3KX0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1vdXRsaW5lLm1hdC1mb2N1c2VkW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1vdXRsaW5lLXRoaWNrW19uZ2NvbnRlbnQtJUNPTVAlXXtjb2xvcjojZjU3YzAwfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLW91dGxpbmUubWF0LWZvY3VzZWQubWF0LWFjY2VudFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtb3V0bGluZS10aGlja1tfbmdjb250ZW50LSVDT01QJV17Y29sb3I6I2ZmOTgwMH0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1vdXRsaW5lLm1hdC1mb2N1c2VkLm1hdC13YXJuW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1vdXRsaW5lLXRoaWNrW19uZ2NvbnRlbnQtJUNPTVAlXXtjb2xvcjojZjQ0MzM2fS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLW91dGxpbmUubWF0LWZvcm0tZmllbGQtaW52YWxpZC5tYXQtZm9ybS1maWVsZC1pbnZhbGlkW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1vdXRsaW5lLXRoaWNrW19uZ2NvbnRlbnQtJUNPTVAlXXtjb2xvcjojZjQ0MzM2fS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLW91dGxpbmUubWF0LWZvcm0tZmllbGQtZGlzYWJsZWRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXtjb2xvcjojNzU3NTc1fS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLW91dGxpbmUubWF0LWZvcm0tZmllbGQtZGlzYWJsZWRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLW91dGxpbmVbX25nY29udGVudC0lQ09NUCVde2NvbG9yOnJnYmEoMCwwLDAsLjA2KX0ubWF0LWljb24ubWF0LXByaW1hcnlbX25nY29udGVudC0lQ09NUCVde2NvbG9yOiNmNTdjMDB9Lm1hdC1pY29uLm1hdC1hY2NlbnRbX25nY29udGVudC0lQ09NUCVde2NvbG9yOiNmZjk4MDB9Lm1hdC1pY29uLm1hdC13YXJuW19uZ2NvbnRlbnQtJUNPTVAlXXtjb2xvcjojZjQ0MzM2fS5tYXQtZm9ybS1maWVsZC10eXBlLW1hdC1uYXRpdmUtc2VsZWN0W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1pbmZpeFtfbmdjb250ZW50LSVDT01QJV06OmFmdGVye2NvbG9yOiM2MTYxNjF9Lm1hdC1pbnB1dC1lbGVtZW50W19uZ2NvbnRlbnQtJUNPTVAlXTpkaXNhYmxlZCwgLm1hdC1mb3JtLWZpZWxkLXR5cGUtbWF0LW5hdGl2ZS1zZWxlY3QubWF0LWZvcm0tZmllbGQtZGlzYWJsZWRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWluZml4W19uZ2NvbnRlbnQtJUNPTVAlXTo6YWZ0ZXJ7Y29sb3I6Izc1NzU3NX0ubWF0LWlucHV0LWVsZW1lbnRbX25nY29udGVudC0lQ09NUCVde2NhcmV0LWNvbG9yOiNmNTdjMDB9Lm1hdC1pbnB1dC1lbGVtZW50W19uZ2NvbnRlbnQtJUNPTVAlXTo6cGxhY2Vob2xkZXJ7Y29sb3I6cmdiYSg5Nyw5Nyw5NywuNDIpfS5tYXQtaW5wdXQtZWxlbWVudFtfbmdjb250ZW50LSVDT01QJV06Oi1tb3otcGxhY2Vob2xkZXJ7Y29sb3I6cmdiYSg5Nyw5Nyw5NywuNDIpfS5tYXQtaW5wdXQtZWxlbWVudFtfbmdjb250ZW50LSVDT01QJV06Oi13ZWJraXQtaW5wdXQtcGxhY2Vob2xkZXJ7Y29sb3I6cmdiYSg5Nyw5Nyw5NywuNDIpfS5tYXQtaW5wdXQtZWxlbWVudFtfbmdjb250ZW50LSVDT01QJV06LW1zLWlucHV0LXBsYWNlaG9sZGVye2NvbG9yOnJnYmEoOTcsOTcsOTcsLjQyKX0ubWF0LWZvcm0tZmllbGQubWF0LWFjY2VudFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWlucHV0LWVsZW1lbnRbX25nY29udGVudC0lQ09NUCVde2NhcmV0LWNvbG9yOiNmZjk4MDB9Lm1hdC1mb3JtLWZpZWxkLm1hdC13YXJuW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaW5wdXQtZWxlbWVudFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtZm9ybS1maWVsZC1pbnZhbGlkW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaW5wdXQtZWxlbWVudFtfbmdjb250ZW50LSVDT01QJV17Y2FyZXQtY29sb3I6I2Y0NDMzNn0ubWF0LWZvcm0tZmllbGQtdHlwZS1tYXQtbmF0aXZlLXNlbGVjdC5tYXQtZm9ybS1maWVsZC1pbnZhbGlkW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1pbmZpeFtfbmdjb250ZW50LSVDT01QJV06OmFmdGVye2NvbG9yOiNmNDQzMzZ9Lm1hdC1saXN0LWJhc2VbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saXN0LWl0ZW1bX25nY29udGVudC0lQ09NUCVde2NvbG9yOiMyMTIxMjF9Lm1hdC1saXN0LWJhc2VbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saXN0LW9wdGlvbltfbmdjb250ZW50LSVDT01QJV17Y29sb3I6IzIxMjEyMX0ubWF0LWxpc3QtYmFzZVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXN1YmhlYWRlcltfbmdjb250ZW50LSVDT01QJV17Y29sb3I6IzYxNjE2MX0ubWF0LWxpc3QtaXRlbS1kaXNhYmxlZFtfbmdjb250ZW50LSVDT01QJV17YmFja2dyb3VuZC1jb2xvcjojZWVlfS5tYXQtbGlzdC1vcHRpb25bX25nY29udGVudC0lQ09NUCVdOmhvdmVyLCAubWF0LWxpc3Qtb3B0aW9uW19uZ2NvbnRlbnQtJUNPTVAlXTpmb2N1cywgLm1hdC1uYXYtbGlzdFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpc3QtaXRlbVtfbmdjb250ZW50LSVDT01QJV06aG92ZXIsIC5tYXQtbmF2LWxpc3RbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saXN0LWl0ZW1bX25nY29udGVudC0lQ09NUCVdOmZvY3VzLCAubWF0LWFjdGlvbi1saXN0W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGlzdC1pdGVtW19uZ2NvbnRlbnQtJUNPTVAlXTpob3ZlciwgLm1hdC1hY3Rpb24tbGlzdFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpc3QtaXRlbVtfbmdjb250ZW50LSVDT01QJV06Zm9jdXN7YmFja2dyb3VuZDpyZ2JhKDAsMCwwLC4wNCl9Lm1hdC1saXN0LXNpbmdsZS1zZWxlY3RlZC1vcHRpb25bX25nY29udGVudC0lQ09NUCVdLCAubWF0LWxpc3Qtc2luZ2xlLXNlbGVjdGVkLW9wdGlvbltfbmdjb250ZW50LSVDT01QJV06aG92ZXIsIC5tYXQtbGlzdC1zaW5nbGUtc2VsZWN0ZWQtb3B0aW9uW19uZ2NvbnRlbnQtJUNPTVAlXTpmb2N1c3tiYWNrZ3JvdW5kOnJnYmEoMCwwLDAsLjEyKX0ubWF0LW1lbnUtcGFuZWxbX25nY29udGVudC0lQ09NUCVde2JhY2tncm91bmQ6I2ZmZn0ubWF0LW1lbnUtcGFuZWxbX25nY29udGVudC0lQ09NUCVdOm5vdChbY2xhc3MqPW1hdC1lbGV2YXRpb24tel0pe2JveC1zaGFkb3c6MHB4IDJweCA0cHggLTFweCByZ2JhKDAsIDAsIDAsIDAuMiksMHB4IDRweCA1cHggMHB4IHJnYmEoMCwgMCwgMCwgMC4xNCksMHB4IDFweCAxMHB4IDBweCByZ2JhKDAsIDAsIDAsIDAuMTIpfS5tYXQtbWVudS1pdGVtW19uZ2NvbnRlbnQtJUNPTVAlXXtiYWNrZ3JvdW5kOnRyYW5zcGFyZW50O2NvbG9yOiMyMTIxMjF9Lm1hdC1tZW51LWl0ZW1bZGlzYWJsZWRdW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1tZW51LWl0ZW1bZGlzYWJsZWRdW19uZ2NvbnRlbnQtJUNPTVAlXTo6YWZ0ZXJ7Y29sb3I6cmdiYSgwLDAsMCwuMzgpfS5tYXQtbWVudS1pdGVtW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaWNvbi1uby1jb2xvcltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtbWVudS1pdGVtLXN1Ym1lbnUtdHJpZ2dlcltfbmdjb250ZW50LSVDT01QJV06OmFmdGVye2NvbG9yOnJnYmEoMCwwLDAsLjU0KX0ubWF0LW1lbnUtaXRlbVtfbmdjb250ZW50LSVDT01QJV06aG92ZXI6bm90KFtkaXNhYmxlZF0pLCAubWF0LW1lbnUtaXRlbS5jZGstcHJvZ3JhbS1mb2N1c2VkW19uZ2NvbnRlbnQtJUNPTVAlXTpub3QoW2Rpc2FibGVkXSksIC5tYXQtbWVudS1pdGVtLmNkay1rZXlib2FyZC1mb2N1c2VkW19uZ2NvbnRlbnQtJUNPTVAlXTpub3QoW2Rpc2FibGVkXSksIC5tYXQtbWVudS1pdGVtLWhpZ2hsaWdodGVkW19uZ2NvbnRlbnQtJUNPTVAlXTpub3QoW2Rpc2FibGVkXSl7YmFja2dyb3VuZDpyZ2JhKDAsMCwwLC4wNCl9Lm1hdC1wYWdpbmF0b3JbX25nY29udGVudC0lQ09NUCVde2JhY2tncm91bmQ6I2ZmZn0ubWF0LXBhZ2luYXRvcltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtcGFnaW5hdG9yLXBhZ2Utc2l6ZVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXNlbGVjdC10cmlnZ2VyW19uZ2NvbnRlbnQtJUNPTVAlXXtjb2xvcjojNjE2MTYxfS5tYXQtcGFnaW5hdG9yLWRlY3JlbWVudFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtcGFnaW5hdG9yLWluY3JlbWVudFtfbmdjb250ZW50LSVDT01QJV17Ym9yZGVyLXRvcDoycHggc29saWQgcmdiYSgwLDAsMCwuNTQpO2JvcmRlci1yaWdodDoycHggc29saWQgcmdiYSgwLDAsMCwuNTQpfS5tYXQtcGFnaW5hdG9yLWZpcnN0W19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1wYWdpbmF0b3ItbGFzdFtfbmdjb250ZW50LSVDT01QJV17Ym9yZGVyLXRvcDoycHggc29saWQgcmdiYSgwLDAsMCwuNTQpfS5tYXQtaWNvbi1idXR0b25bZGlzYWJsZWRdW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtcGFnaW5hdG9yLWRlY3JlbWVudFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtaWNvbi1idXR0b25bZGlzYWJsZWRdW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtcGFnaW5hdG9yLWluY3JlbWVudFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtaWNvbi1idXR0b25bZGlzYWJsZWRdW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtcGFnaW5hdG9yLWZpcnN0W19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1pY29uLWJ1dHRvbltkaXNhYmxlZF1bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1wYWdpbmF0b3ItbGFzdFtfbmdjb250ZW50LSVDT01QJV17Ym9yZGVyLWNvbG9yOnJnYmEoMCwwLDAsLjM4KX0ubWF0LXBhZ2luYXRvci1jb250YWluZXJbX25nY29udGVudC0lQ09NUCVde21pbi1oZWlnaHQ6NTZweH0ubWF0LXByb2dyZXNzLWJhci1iYWNrZ3JvdW5kW19uZ2NvbnRlbnQtJUNPTVAlXXtmaWxsOiNmZjk4MDB9Lm1hdC1wcm9ncmVzcy1iYXItYnVmZmVyW19uZ2NvbnRlbnQtJUNPTVAlXXtiYWNrZ3JvdW5kLWNvbG9yOiNmZjk4MDB9Lm1hdC1wcm9ncmVzcy1iYXItZmlsbFtfbmdjb250ZW50LSVDT01QJV06OmFmdGVye2JhY2tncm91bmQtY29sb3I6I2Y1N2MwMH0ubWF0LXByb2dyZXNzLWJhci5tYXQtYWNjZW50W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtcHJvZ3Jlc3MtYmFyLWJhY2tncm91bmRbX25nY29udGVudC0lQ09NUCVde2ZpbGw6I2ZmOTgwMH0ubWF0LXByb2dyZXNzLWJhci5tYXQtYWNjZW50W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtcHJvZ3Jlc3MtYmFyLWJ1ZmZlcltfbmdjb250ZW50LSVDT01QJV17YmFja2dyb3VuZC1jb2xvcjojZmY5ODAwfS5tYXQtcHJvZ3Jlc3MtYmFyLm1hdC1hY2NlbnRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1wcm9ncmVzcy1iYXItZmlsbFtfbmdjb250ZW50LSVDT01QJV06OmFmdGVye2JhY2tncm91bmQtY29sb3I6I2ZmOTgwMH0ubWF0LXByb2dyZXNzLWJhci5tYXQtd2Fybltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXByb2dyZXNzLWJhci1iYWNrZ3JvdW5kW19uZ2NvbnRlbnQtJUNPTVAlXXtmaWxsOiNmZmNkZDJ9Lm1hdC1wcm9ncmVzcy1iYXIubWF0LXdhcm5bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1wcm9ncmVzcy1iYXItYnVmZmVyW19uZ2NvbnRlbnQtJUNPTVAlXXtiYWNrZ3JvdW5kLWNvbG9yOiNmZmNkZDJ9Lm1hdC1wcm9ncmVzcy1iYXIubWF0LXdhcm5bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1wcm9ncmVzcy1iYXItZmlsbFtfbmdjb250ZW50LSVDT01QJV06OmFmdGVye2JhY2tncm91bmQtY29sb3I6I2Y0NDMzNn0ubWF0LXByb2dyZXNzLXNwaW5uZXJbX25nY29udGVudC0lQ09NUCVdICAgY2lyY2xlW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1zcGlubmVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIGNpcmNsZVtfbmdjb250ZW50LSVDT01QJV17c3Ryb2tlOiNmNTdjMDB9Lm1hdC1wcm9ncmVzcy1zcGlubmVyLm1hdC1hY2NlbnRbX25nY29udGVudC0lQ09NUCVdICAgY2lyY2xlW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1zcGlubmVyLm1hdC1hY2NlbnRbX25nY29udGVudC0lQ09NUCVdICAgY2lyY2xlW19uZ2NvbnRlbnQtJUNPTVAlXXtzdHJva2U6I2ZmOTgwMH0ubWF0LXByb2dyZXNzLXNwaW5uZXIubWF0LXdhcm5bX25nY29udGVudC0lQ09NUCVdICAgY2lyY2xlW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1zcGlubmVyLm1hdC13YXJuW19uZ2NvbnRlbnQtJUNPTVAlXSAgIGNpcmNsZVtfbmdjb250ZW50LSVDT01QJV17c3Ryb2tlOiNmNDQzMzZ9Lm1hdC1yYWRpby1vdXRlci1jaXJjbGVbX25nY29udGVudC0lQ09NUCVde2JvcmRlci1jb2xvcjojNjE2MTYxfS5tYXQtcmFkaW8tYnV0dG9uLm1hdC1wcmltYXJ5Lm1hdC1yYWRpby1jaGVja2VkW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtcmFkaW8tb3V0ZXItY2lyY2xlW19uZ2NvbnRlbnQtJUNPTVAlXXtib3JkZXItY29sb3I6I2Y1N2MwMH0ubWF0LXJhZGlvLWJ1dHRvbi5tYXQtcHJpbWFyeVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXJhZGlvLWlubmVyLWNpcmNsZVtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtcmFkaW8tYnV0dG9uLm1hdC1wcmltYXJ5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtcmFkaW8tcmlwcGxlW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtcmlwcGxlLWVsZW1lbnRbX25nY29udGVudC0lQ09NUCVdOm5vdCgubWF0LXJhZGlvLXBlcnNpc3RlbnQtcmlwcGxlKSwgLm1hdC1yYWRpby1idXR0b24ubWF0LXByaW1hcnkubWF0LXJhZGlvLWNoZWNrZWRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1yYWRpby1wZXJzaXN0ZW50LXJpcHBsZVtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtcmFkaW8tYnV0dG9uLm1hdC1wcmltYXJ5W19uZ2NvbnRlbnQtJUNPTVAlXTphY3RpdmUgICAubWF0LXJhZGlvLXBlcnNpc3RlbnQtcmlwcGxlW19uZ2NvbnRlbnQtJUNPTVAlXXtiYWNrZ3JvdW5kLWNvbG9yOiNmNTdjMDB9Lm1hdC1yYWRpby1idXR0b24ubWF0LWFjY2VudC5tYXQtcmFkaW8tY2hlY2tlZFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXJhZGlvLW91dGVyLWNpcmNsZVtfbmdjb250ZW50LSVDT01QJV17Ym9yZGVyLWNvbG9yOiNmZjk4MDB9Lm1hdC1yYWRpby1idXR0b24ubWF0LWFjY2VudFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXJhZGlvLWlubmVyLWNpcmNsZVtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtcmFkaW8tYnV0dG9uLm1hdC1hY2NlbnRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1yYWRpby1yaXBwbGVbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1yaXBwbGUtZWxlbWVudFtfbmdjb250ZW50LSVDT01QJV06bm90KC5tYXQtcmFkaW8tcGVyc2lzdGVudC1yaXBwbGUpLCAubWF0LXJhZGlvLWJ1dHRvbi5tYXQtYWNjZW50Lm1hdC1yYWRpby1jaGVja2VkW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtcmFkaW8tcGVyc2lzdGVudC1yaXBwbGVbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXJhZGlvLWJ1dHRvbi5tYXQtYWNjZW50W19uZ2NvbnRlbnQtJUNPTVAlXTphY3RpdmUgICAubWF0LXJhZGlvLXBlcnNpc3RlbnQtcmlwcGxlW19uZ2NvbnRlbnQtJUNPTVAlXXtiYWNrZ3JvdW5kLWNvbG9yOiNmZjk4MDB9Lm1hdC1yYWRpby1idXR0b24ubWF0LXdhcm4ubWF0LXJhZGlvLWNoZWNrZWRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1yYWRpby1vdXRlci1jaXJjbGVbX25nY29udGVudC0lQ09NUCVde2JvcmRlci1jb2xvcjojZjQ0MzM2fS5tYXQtcmFkaW8tYnV0dG9uLm1hdC13YXJuW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtcmFkaW8taW5uZXItY2lyY2xlW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1yYWRpby1idXR0b24ubWF0LXdhcm5bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1yYWRpby1yaXBwbGVbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1yaXBwbGUtZWxlbWVudFtfbmdjb250ZW50LSVDT01QJV06bm90KC5tYXQtcmFkaW8tcGVyc2lzdGVudC1yaXBwbGUpLCAubWF0LXJhZGlvLWJ1dHRvbi5tYXQtd2Fybi5tYXQtcmFkaW8tY2hlY2tlZFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXJhZGlvLXBlcnNpc3RlbnQtcmlwcGxlW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1yYWRpby1idXR0b24ubWF0LXdhcm5bX25nY29udGVudC0lQ09NUCVdOmFjdGl2ZSAgIC5tYXQtcmFkaW8tcGVyc2lzdGVudC1yaXBwbGVbX25nY29udGVudC0lQ09NUCVde2JhY2tncm91bmQtY29sb3I6I2Y0NDMzNn0ubWF0LXJhZGlvLWJ1dHRvbi5tYXQtcmFkaW8tZGlzYWJsZWQubWF0LXJhZGlvLWNoZWNrZWRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1yYWRpby1vdXRlci1jaXJjbGVbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXJhZGlvLWJ1dHRvbi5tYXQtcmFkaW8tZGlzYWJsZWRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1yYWRpby1vdXRlci1jaXJjbGVbX25nY29udGVudC0lQ09NUCVde2JvcmRlci1jb2xvcjpyZ2JhKDAsMCwwLC4zOCl9Lm1hdC1yYWRpby1idXR0b24ubWF0LXJhZGlvLWRpc2FibGVkW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtcmFkaW8tcmlwcGxlW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtcmlwcGxlLWVsZW1lbnRbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXJhZGlvLWJ1dHRvbi5tYXQtcmFkaW8tZGlzYWJsZWRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1yYWRpby1pbm5lci1jaXJjbGVbX25nY29udGVudC0lQ09NUCVde2JhY2tncm91bmQtY29sb3I6cmdiYSgwLDAsMCwuMzgpfS5tYXQtcmFkaW8tYnV0dG9uLm1hdC1yYWRpby1kaXNhYmxlZFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXJhZGlvLWxhYmVsLWNvbnRlbnRbX25nY29udGVudC0lQ09NUCVde2NvbG9yOnJnYmEoMCwwLDAsLjM4KX0ubWF0LXJhZGlvLWJ1dHRvbltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXJpcHBsZS1lbGVtZW50W19uZ2NvbnRlbnQtJUNPTVAlXXtiYWNrZ3JvdW5kLWNvbG9yOiMwMDB9Lm1hdC1zZWxlY3QtdmFsdWVbX25nY29udGVudC0lQ09NUCVde2NvbG9yOiMyMTIxMjF9Lm1hdC1zZWxlY3QtcGxhY2Vob2xkZXJbX25nY29udGVudC0lQ09NUCVde2NvbG9yOnJnYmEoOTcsOTcsOTcsLjQyKX0ubWF0LXNlbGVjdC1kaXNhYmxlZFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXNlbGVjdC12YWx1ZVtfbmdjb250ZW50LSVDT01QJV17Y29sb3I6Izc1NzU3NX0ubWF0LXNlbGVjdC1hcnJvd1tfbmdjb250ZW50LSVDT01QJV17Y29sb3I6IzYxNjE2MX0ubWF0LXNlbGVjdC1wYW5lbFtfbmdjb250ZW50LSVDT01QJV17YmFja2dyb3VuZDojZmZmfS5tYXQtc2VsZWN0LXBhbmVsW19uZ2NvbnRlbnQtJUNPTVAlXTpub3QoW2NsYXNzKj1tYXQtZWxldmF0aW9uLXpdKXtib3gtc2hhZG93OjBweCAycHggNHB4IC0xcHggcmdiYSgwLCAwLCAwLCAwLjIpLDBweCA0cHggNXB4IDBweCByZ2JhKDAsIDAsIDAsIDAuMTQpLDBweCAxcHggMTBweCAwcHggcmdiYSgwLCAwLCAwLCAwLjEyKX0ubWF0LXNlbGVjdC1wYW5lbFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LW9wdGlvbi5tYXQtc2VsZWN0ZWRbX25nY29udGVudC0lQ09NUCVdOm5vdCgubWF0LW9wdGlvbi1tdWx0aXBsZSl7YmFja2dyb3VuZDpyZ2JhKDAsMCwwLC4xMil9Lm1hdC1mb3JtLWZpZWxkLm1hdC1mb2N1c2VkLm1hdC1wcmltYXJ5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtc2VsZWN0LWFycm93W19uZ2NvbnRlbnQtJUNPTVAlXXtjb2xvcjojZjU3YzAwfS5tYXQtZm9ybS1maWVsZC5tYXQtZm9jdXNlZC5tYXQtYWNjZW50W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtc2VsZWN0LWFycm93W19uZ2NvbnRlbnQtJUNPTVAlXXtjb2xvcjojZmY5ODAwfS5tYXQtZm9ybS1maWVsZC5tYXQtZm9jdXNlZC5tYXQtd2Fybltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXNlbGVjdC1hcnJvd1tfbmdjb250ZW50LSVDT01QJV17Y29sb3I6I2Y0NDMzNn0ubWF0LWZvcm0tZmllbGRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1zZWxlY3QubWF0LXNlbGVjdC1pbnZhbGlkW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtc2VsZWN0LWFycm93W19uZ2NvbnRlbnQtJUNPTVAlXXtjb2xvcjojZjQ0MzM2fS5tYXQtZm9ybS1maWVsZFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXNlbGVjdC5tYXQtc2VsZWN0LWRpc2FibGVkW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtc2VsZWN0LWFycm93W19uZ2NvbnRlbnQtJUNPTVAlXXtjb2xvcjojNzU3NTc1fS5tYXQtZHJhd2VyLWNvbnRhaW5lcltfbmdjb250ZW50LSVDT01QJV17YmFja2dyb3VuZC1jb2xvcjojZmFmYWZhO2NvbG9yOiMyMTIxMjF9Lm1hdC1kcmF3ZXJbX25nY29udGVudC0lQ09NUCVde2JhY2tncm91bmQtY29sb3I6I2ZmZjtjb2xvcjojMjEyMTIxfS5tYXQtZHJhd2VyLm1hdC1kcmF3ZXItcHVzaFtfbmdjb250ZW50LSVDT01QJV17YmFja2dyb3VuZC1jb2xvcjojZmZmfS5tYXQtZHJhd2VyW19uZ2NvbnRlbnQtJUNPTVAlXTpub3QoLm1hdC1kcmF3ZXItc2lkZSl7Ym94LXNoYWRvdzowcHggOHB4IDEwcHggLTVweCByZ2JhKDAsIDAsIDAsIDAuMiksMHB4IDE2cHggMjRweCAycHggcmdiYSgwLCAwLCAwLCAwLjE0KSwwcHggNnB4IDMwcHggNXB4IHJnYmEoMCwgMCwgMCwgMC4xMil9Lm1hdC1kcmF3ZXItc2lkZVtfbmdjb250ZW50LSVDT01QJV17Ym9yZGVyLXJpZ2h0OnNvbGlkIDFweCByZ2JhKDAsMCwwLC4xMil9Lm1hdC1kcmF3ZXItc2lkZS5tYXQtZHJhd2VyLWVuZFtfbmdjb250ZW50LSVDT01QJV17Ym9yZGVyLWxlZnQ6c29saWQgMXB4IHJnYmEoMCwwLDAsLjEyKTtib3JkZXItcmlnaHQ6bm9uZX1bZGlyPXJ0bF1bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1kcmF3ZXItc2lkZVtfbmdjb250ZW50LSVDT01QJV17Ym9yZGVyLWxlZnQ6c29saWQgMXB4IHJnYmEoMCwwLDAsLjEyKTtib3JkZXItcmlnaHQ6bm9uZX1bZGlyPXJ0bF1bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1kcmF3ZXItc2lkZS5tYXQtZHJhd2VyLWVuZFtfbmdjb250ZW50LSVDT01QJV17Ym9yZGVyLWxlZnQ6bm9uZTtib3JkZXItcmlnaHQ6c29saWQgMXB4IHJnYmEoMCwwLDAsLjEyKX0ubWF0LWRyYXdlci1iYWNrZHJvcC5tYXQtZHJhd2VyLXNob3duW19uZ2NvbnRlbnQtJUNPTVAlXXtiYWNrZ3JvdW5kLWNvbG9yOnJnYmEoMCwwLDAsLjYpfS5tYXQtc2xpZGUtdG9nZ2xlLm1hdC1jaGVja2VkW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtc2xpZGUtdG9nZ2xlLXRodW1iW19uZ2NvbnRlbnQtJUNPTVAlXXtiYWNrZ3JvdW5kLWNvbG9yOiNmZjk4MDB9Lm1hdC1zbGlkZS10b2dnbGUubWF0LWNoZWNrZWRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1zbGlkZS10b2dnbGUtYmFyW19uZ2NvbnRlbnQtJUNPTVAlXXtiYWNrZ3JvdW5kLWNvbG9yOnJnYmEoMjU1LDE1MiwwLC41NCl9Lm1hdC1zbGlkZS10b2dnbGUubWF0LWNoZWNrZWRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1yaXBwbGUtZWxlbWVudFtfbmdjb250ZW50LSVDT01QJV17YmFja2dyb3VuZC1jb2xvcjojZmY5ODAwfS5tYXQtc2xpZGUtdG9nZ2xlLm1hdC1wcmltYXJ5Lm1hdC1jaGVja2VkW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtc2xpZGUtdG9nZ2xlLXRodW1iW19uZ2NvbnRlbnQtJUNPTVAlXXtiYWNrZ3JvdW5kLWNvbG9yOiNmNTdjMDB9Lm1hdC1zbGlkZS10b2dnbGUubWF0LXByaW1hcnkubWF0LWNoZWNrZWRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1zbGlkZS10b2dnbGUtYmFyW19uZ2NvbnRlbnQtJUNPTVAlXXtiYWNrZ3JvdW5kLWNvbG9yOnJnYmEoMjQ1LDEyNCwwLC41NCl9Lm1hdC1zbGlkZS10b2dnbGUubWF0LXByaW1hcnkubWF0LWNoZWNrZWRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1yaXBwbGUtZWxlbWVudFtfbmdjb250ZW50LSVDT01QJV17YmFja2dyb3VuZC1jb2xvcjojZjU3YzAwfS5tYXQtc2xpZGUtdG9nZ2xlLm1hdC13YXJuLm1hdC1jaGVja2VkW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtc2xpZGUtdG9nZ2xlLXRodW1iW19uZ2NvbnRlbnQtJUNPTVAlXXtiYWNrZ3JvdW5kLWNvbG9yOiNmNDQzMzZ9Lm1hdC1zbGlkZS10b2dnbGUubWF0LXdhcm4ubWF0LWNoZWNrZWRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1zbGlkZS10b2dnbGUtYmFyW19uZ2NvbnRlbnQtJUNPTVAlXXtiYWNrZ3JvdW5kLWNvbG9yOnJnYmEoMjQ0LDY3LDU0LC41NCl9Lm1hdC1zbGlkZS10b2dnbGUubWF0LXdhcm4ubWF0LWNoZWNrZWRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1yaXBwbGUtZWxlbWVudFtfbmdjb250ZW50LSVDT01QJV17YmFja2dyb3VuZC1jb2xvcjojZjQ0MzM2fS5tYXQtc2xpZGUtdG9nZ2xlW19uZ2NvbnRlbnQtJUNPTVAlXTpub3QoLm1hdC1jaGVja2VkKSAgIC5tYXQtcmlwcGxlLWVsZW1lbnRbX25nY29udGVudC0lQ09NUCVde2JhY2tncm91bmQtY29sb3I6IzAwMH0ubWF0LXNsaWRlLXRvZ2dsZS10aHVtYltfbmdjb250ZW50LSVDT01QJV17Ym94LXNoYWRvdzowcHggMnB4IDFweCAtMXB4IHJnYmEoMCwgMCwgMCwgMC4yKSwwcHggMXB4IDFweCAwcHggcmdiYSgwLCAwLCAwLCAwLjE0KSwwcHggMXB4IDNweCAwcHggcmdiYSgwLCAwLCAwLCAwLjEyKTtiYWNrZ3JvdW5kLWNvbG9yOiNmYWZhZmF9Lm1hdC1zbGlkZS10b2dnbGUtYmFyW19uZ2NvbnRlbnQtJUNPTVAlXXtiYWNrZ3JvdW5kLWNvbG9yOnJnYmEoMCwwLDAsLjM4KX0ubWF0LXNsaWRlci10cmFjay1iYWNrZ3JvdW5kW19uZ2NvbnRlbnQtJUNPTVAlXXtiYWNrZ3JvdW5kLWNvbG9yOnJnYmEoMCwwLDAsLjI2KX0ubWF0LXByaW1hcnlbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1zbGlkZXItdHJhY2stZmlsbFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtcHJpbWFyeVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXNsaWRlci10aHVtYltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtcHJpbWFyeVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXNsaWRlci10aHVtYi1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17YmFja2dyb3VuZC1jb2xvcjojZjU3YzAwfS5tYXQtcHJpbWFyeVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXNsaWRlci10aHVtYi1sYWJlbC10ZXh0W19uZ2NvbnRlbnQtJUNPTVAlXXtjb2xvcjojZmZmfS5tYXQtcHJpbWFyeVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXNsaWRlci1mb2N1cy1yaW5nW19uZ2NvbnRlbnQtJUNPTVAlXXtiYWNrZ3JvdW5kLWNvbG9yOnJnYmEoMjQ1LDEyNCwwLC4yKX0ubWF0LWFjY2VudFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXNsaWRlci10cmFjay1maWxsW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1hY2NlbnRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1zbGlkZXItdGh1bWJbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWFjY2VudFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXNsaWRlci10aHVtYi1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17YmFja2dyb3VuZC1jb2xvcjojZmY5ODAwfS5tYXQtYWNjZW50W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtc2xpZGVyLXRodW1iLWxhYmVsLXRleHRbX25nY29udGVudC0lQ09NUCVde2NvbG9yOiNmZmZ9Lm1hdC1hY2NlbnRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1zbGlkZXItZm9jdXMtcmluZ1tfbmdjb250ZW50LSVDT01QJV17YmFja2dyb3VuZC1jb2xvcjpyZ2JhKDI1NSwxNTIsMCwuMil9Lm1hdC13YXJuW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtc2xpZGVyLXRyYWNrLWZpbGxbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXdhcm5bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1zbGlkZXItdGh1bWJbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXdhcm5bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1zbGlkZXItdGh1bWItbGFiZWxbX25nY29udGVudC0lQ09NUCVde2JhY2tncm91bmQtY29sb3I6I2Y0NDMzNn0ubWF0LXdhcm5bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1zbGlkZXItdGh1bWItbGFiZWwtdGV4dFtfbmdjb250ZW50LSVDT01QJV17Y29sb3I6I2ZmZn0ubWF0LXdhcm5bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1zbGlkZXItZm9jdXMtcmluZ1tfbmdjb250ZW50LSVDT01QJV17YmFja2dyb3VuZC1jb2xvcjpyZ2JhKDI0NCw2Nyw1NCwuMil9Lm1hdC1zbGlkZXJbX25nY29udGVudC0lQ09NUCVdOmhvdmVyICAgLm1hdC1zbGlkZXItdHJhY2stYmFja2dyb3VuZFtfbmdjb250ZW50LSVDT01QJV0sIC5jZGstZm9jdXNlZFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXNsaWRlci10cmFjay1iYWNrZ3JvdW5kW19uZ2NvbnRlbnQtJUNPTVAlXXtiYWNrZ3JvdW5kLWNvbG9yOnJnYmEoMCwwLDAsLjM4KX0ubWF0LXNsaWRlci1kaXNhYmxlZFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXNsaWRlci10cmFjay1iYWNrZ3JvdW5kW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1zbGlkZXItZGlzYWJsZWRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1zbGlkZXItdHJhY2stZmlsbFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtc2xpZGVyLWRpc2FibGVkW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtc2xpZGVyLXRodW1iW19uZ2NvbnRlbnQtJUNPTVAlXXtiYWNrZ3JvdW5kLWNvbG9yOnJnYmEoMCwwLDAsLjI2KX0ubWF0LXNsaWRlci1kaXNhYmxlZFtfbmdjb250ZW50LSVDT01QJV06aG92ZXIgICAubWF0LXNsaWRlci10cmFjay1iYWNrZ3JvdW5kW19uZ2NvbnRlbnQtJUNPTVAlXXtiYWNrZ3JvdW5kLWNvbG9yOnJnYmEoMCwwLDAsLjI2KX0ubWF0LXNsaWRlci1taW4tdmFsdWVbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1zbGlkZXItZm9jdXMtcmluZ1tfbmdjb250ZW50LSVDT01QJV17YmFja2dyb3VuZC1jb2xvcjpyZ2JhKDAsMCwwLC4xMil9Lm1hdC1zbGlkZXItbWluLXZhbHVlLm1hdC1zbGlkZXItdGh1bWItbGFiZWwtc2hvd2luZ1tfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXNsaWRlci10aHVtYltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtc2xpZGVyLW1pbi12YWx1ZS5tYXQtc2xpZGVyLXRodW1iLWxhYmVsLXNob3dpbmdbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1zbGlkZXItdGh1bWItbGFiZWxbX25nY29udGVudC0lQ09NUCVde2JhY2tncm91bmQtY29sb3I6cmdiYSgwLDAsMCwuODcpfS5tYXQtc2xpZGVyLW1pbi12YWx1ZS5tYXQtc2xpZGVyLXRodW1iLWxhYmVsLXNob3dpbmcuY2RrLWZvY3VzZWRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1zbGlkZXItdGh1bWJbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXNsaWRlci1taW4tdmFsdWUubWF0LXNsaWRlci10aHVtYi1sYWJlbC1zaG93aW5nLmNkay1mb2N1c2VkW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtc2xpZGVyLXRodW1iLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXtiYWNrZ3JvdW5kLWNvbG9yOnJnYmEoMCwwLDAsLjI2KX0ubWF0LXNsaWRlci1taW4tdmFsdWVbX25nY29udGVudC0lQ09NUCVdOm5vdCgubWF0LXNsaWRlci10aHVtYi1sYWJlbC1zaG93aW5nKSAgIC5tYXQtc2xpZGVyLXRodW1iW19uZ2NvbnRlbnQtJUNPTVAlXXtib3JkZXItY29sb3I6cmdiYSgwLDAsMCwuMjYpO2JhY2tncm91bmQtY29sb3I6dHJhbnNwYXJlbnR9Lm1hdC1zbGlkZXItbWluLXZhbHVlW19uZ2NvbnRlbnQtJUNPTVAlXTpub3QoLm1hdC1zbGlkZXItdGh1bWItbGFiZWwtc2hvd2luZyk6aG92ZXIgICAubWF0LXNsaWRlci10aHVtYltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtc2xpZGVyLW1pbi12YWx1ZVtfbmdjb250ZW50LSVDT01QJV06bm90KC5tYXQtc2xpZGVyLXRodW1iLWxhYmVsLXNob3dpbmcpLmNkay1mb2N1c2VkICAgLm1hdC1zbGlkZXItdGh1bWJbX25nY29udGVudC0lQ09NUCVde2JvcmRlci1jb2xvcjpyZ2JhKDAsMCwwLC4zOCl9Lm1hdC1zbGlkZXItbWluLXZhbHVlW19uZ2NvbnRlbnQtJUNPTVAlXTpub3QoLm1hdC1zbGlkZXItdGh1bWItbGFiZWwtc2hvd2luZyk6aG92ZXIubWF0LXNsaWRlci1kaXNhYmxlZCAgIC5tYXQtc2xpZGVyLXRodW1iW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1zbGlkZXItbWluLXZhbHVlW19uZ2NvbnRlbnQtJUNPTVAlXTpub3QoLm1hdC1zbGlkZXItdGh1bWItbGFiZWwtc2hvd2luZykuY2RrLWZvY3VzZWQubWF0LXNsaWRlci1kaXNhYmxlZCAgIC5tYXQtc2xpZGVyLXRodW1iW19uZ2NvbnRlbnQtJUNPTVAlXXtib3JkZXItY29sb3I6cmdiYSgwLDAsMCwuMjYpfS5tYXQtc2xpZGVyLWhhcy10aWNrc1tfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXNsaWRlci13cmFwcGVyW19uZ2NvbnRlbnQtJUNPTVAlXTo6YWZ0ZXJ7Ym9yZGVyLWNvbG9yOnJnYmEoMCwwLDAsLjcpfS5tYXQtc2xpZGVyLWhvcml6b250YWxbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1zbGlkZXItdGlja3NbX25nY29udGVudC0lQ09NUCVde2JhY2tncm91bmQtaW1hZ2U6cmVwZWF0aW5nLWxpbmVhci1ncmFkaWVudCh0byByaWdodCwgcmdiYSgwLCAwLCAwLCAwLjcpLCByZ2JhKDAsIDAsIDAsIDAuNykgMnB4LCB0cmFuc3BhcmVudCAwLCB0cmFuc3BhcmVudCk7YmFja2dyb3VuZC1pbWFnZTotbW96LXJlcGVhdGluZy1saW5lYXItZ3JhZGllbnQoMC4wMDAxZGVnLCByZ2JhKDAsIDAsIDAsIDAuNyksIHJnYmEoMCwgMCwgMCwgMC43KSAycHgsIHRyYW5zcGFyZW50IDAsIHRyYW5zcGFyZW50KX0ubWF0LXNsaWRlci12ZXJ0aWNhbFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXNsaWRlci10aWNrc1tfbmdjb250ZW50LSVDT01QJV17YmFja2dyb3VuZC1pbWFnZTpyZXBlYXRpbmctbGluZWFyLWdyYWRpZW50KHRvIGJvdHRvbSwgcmdiYSgwLCAwLCAwLCAwLjcpLCByZ2JhKDAsIDAsIDAsIDAuNykgMnB4LCB0cmFuc3BhcmVudCAwLCB0cmFuc3BhcmVudCl9Lm1hdC1zdGVwLWhlYWRlci5jZGsta2V5Ym9hcmQtZm9jdXNlZFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtc3RlcC1oZWFkZXIuY2RrLXByb2dyYW0tZm9jdXNlZFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtc3RlcC1oZWFkZXJbX25nY29udGVudC0lQ09NUCVdOmhvdmVye2JhY2tncm91bmQtY29sb3I6cmdiYSgwLDAsMCwuMDQpfUBtZWRpYShob3Zlcjogbm9uZSl7Lm1hdC1zdGVwLWhlYWRlcltfbmdjb250ZW50LSVDT01QJV06aG92ZXJ7YmFja2dyb3VuZDpub25lfX0ubWF0LXN0ZXAtaGVhZGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtc3RlcC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtc3RlcC1oZWFkZXJbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1zdGVwLW9wdGlvbmFsW19uZ2NvbnRlbnQtJUNPTVAlXXtjb2xvcjojNjE2MTYxfS5tYXQtc3RlcC1oZWFkZXJbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1zdGVwLWljb25bX25nY29udGVudC0lQ09NUCVde2JhY2tncm91bmQtY29sb3I6IzYxNjE2MTtjb2xvcjojZmZmfS5tYXQtc3RlcC1oZWFkZXJbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1zdGVwLWljb24tc2VsZWN0ZWRbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXN0ZXAtaGVhZGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtc3RlcC1pY29uLXN0YXRlLWRvbmVbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXN0ZXAtaGVhZGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtc3RlcC1pY29uLXN0YXRlLWVkaXRbX25nY29udGVudC0lQ09NUCVde2JhY2tncm91bmQtY29sb3I6I2Y1N2MwMDtjb2xvcjojZmZmfS5tYXQtc3RlcC1oZWFkZXJbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1zdGVwLWljb24tc3RhdGUtZXJyb3JbX25nY29udGVudC0lQ09NUCVde2JhY2tncm91bmQtY29sb3I6dHJhbnNwYXJlbnQ7Y29sb3I6I2Y0NDMzNn0ubWF0LXN0ZXAtaGVhZGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtc3RlcC1sYWJlbC5tYXQtc3RlcC1sYWJlbC1hY3RpdmVbX25nY29udGVudC0lQ09NUCVde2NvbG9yOiMyMTIxMjF9Lm1hdC1zdGVwLWhlYWRlcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXN0ZXAtbGFiZWwubWF0LXN0ZXAtbGFiZWwtZXJyb3JbX25nY29udGVudC0lQ09NUCVde2NvbG9yOiNmNDQzMzZ9Lm1hdC1zdGVwcGVyLWhvcml6b250YWxbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXN0ZXBwZXItdmVydGljYWxbX25nY29udGVudC0lQ09NUCVde2JhY2tncm91bmQtY29sb3I6I2ZmZn0ubWF0LXN0ZXBwZXItdmVydGljYWwtbGluZVtfbmdjb250ZW50LSVDT01QJV06OmJlZm9yZXtib3JkZXItbGVmdC1jb2xvcjpyZ2JhKDAsMCwwLC4xMil9Lm1hdC1ob3Jpem9udGFsLXN0ZXBwZXItaGVhZGVyW19uZ2NvbnRlbnQtJUNPTVAlXTo6YmVmb3JlLCAubWF0LWhvcml6b250YWwtc3RlcHBlci1oZWFkZXJbX25nY29udGVudC0lQ09NUCVdOjphZnRlciwgLm1hdC1zdGVwcGVyLWhvcml6b250YWwtbGluZVtfbmdjb250ZW50LSVDT01QJV17Ym9yZGVyLXRvcC1jb2xvcjpyZ2JhKDAsMCwwLC4xMil9Lm1hdC1ob3Jpem9udGFsLXN0ZXBwZXItaGVhZGVyW19uZ2NvbnRlbnQtJUNPTVAlXXtoZWlnaHQ6NzJweH0ubWF0LXN0ZXBwZXItbGFiZWwtcG9zaXRpb24tYm90dG9tW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaG9yaXpvbnRhbC1zdGVwcGVyLWhlYWRlcltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdmVydGljYWwtc3RlcHBlci1oZWFkZXJbX25nY29udGVudC0lQ09NUCVde3BhZGRpbmc6MjRweCAyNHB4fS5tYXQtc3RlcHBlci12ZXJ0aWNhbC1saW5lW19uZ2NvbnRlbnQtJUNPTVAlXTo6YmVmb3Jle3RvcDotMTZweDtib3R0b206LTE2cHh9Lm1hdC1zdGVwcGVyLWxhYmVsLXBvc2l0aW9uLWJvdHRvbVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWhvcml6b250YWwtc3RlcHBlci1oZWFkZXJbX25nY29udGVudC0lQ09NUCVdOjphZnRlciwgLm1hdC1zdGVwcGVyLWxhYmVsLXBvc2l0aW9uLWJvdHRvbVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWhvcml6b250YWwtc3RlcHBlci1oZWFkZXJbX25nY29udGVudC0lQ09NUCVdOjpiZWZvcmV7dG9wOjM2cHh9Lm1hdC1zdGVwcGVyLWxhYmVsLXBvc2l0aW9uLWJvdHRvbVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXN0ZXBwZXItaG9yaXpvbnRhbC1saW5lW19uZ2NvbnRlbnQtJUNPTVAlXXt0b3A6MzZweH0ubWF0LXNvcnQtaGVhZGVyLWFycm93W19uZ2NvbnRlbnQtJUNPTVAlXXtjb2xvcjojNjE2MTYxfS5tYXQtdGFiLW5hdi1iYXJbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXRhYi1oZWFkZXJbX25nY29udGVudC0lQ09NUCVde2JvcmRlci1ib3R0b206MXB4IHNvbGlkIHJnYmEoMCwwLDAsLjEyKX0ubWF0LXRhYi1ncm91cC1pbnZlcnRlZC1oZWFkZXJbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC10YWItbmF2LWJhcltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdGFiLWdyb3VwLWludmVydGVkLWhlYWRlcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXRhYi1oZWFkZXJbX25nY29udGVudC0lQ09NUCVde2JvcmRlci10b3A6MXB4IHNvbGlkIHJnYmEoMCwwLDAsLjEyKTtib3JkZXItYm90dG9tOm5vbmV9Lm1hdC10YWItbGFiZWxbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXRhYi1saW5rW19uZ2NvbnRlbnQtJUNPTVAlXXtjb2xvcjojMjEyMTIxfS5tYXQtdGFiLWxhYmVsLm1hdC10YWItZGlzYWJsZWRbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXRhYi1saW5rLm1hdC10YWItZGlzYWJsZWRbX25nY29udGVudC0lQ09NUCVde2NvbG9yOiM3NTc1NzV9Lm1hdC10YWItaGVhZGVyLXBhZ2luYXRpb24tY2hldnJvbltfbmdjb250ZW50LSVDT01QJV17Ym9yZGVyLWNvbG9yOiMyMTIxMjF9Lm1hdC10YWItaGVhZGVyLXBhZ2luYXRpb24tZGlzYWJsZWRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC10YWItaGVhZGVyLXBhZ2luYXRpb24tY2hldnJvbltfbmdjb250ZW50LSVDT01QJV17Ym9yZGVyLWNvbG9yOiM3NTc1NzV9Lm1hdC10YWItZ3JvdXBbY2xhc3MqPW1hdC1iYWNrZ3JvdW5kLV1bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC10YWItaGVhZGVyW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10YWItbmF2LWJhcltjbGFzcyo9bWF0LWJhY2tncm91bmQtXVtfbmdjb250ZW50LSVDT01QJV17Ym9yZGVyLWJvdHRvbTpub25lO2JvcmRlci10b3A6bm9uZX0ubWF0LXRhYi1ncm91cC5tYXQtcHJpbWFyeVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXRhYi1sYWJlbC5jZGsta2V5Ym9hcmQtZm9jdXNlZFtfbmdjb250ZW50LSVDT01QJV06bm90KC5tYXQtdGFiLWRpc2FibGVkKSwgLm1hdC10YWItZ3JvdXAubWF0LXByaW1hcnlbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC10YWItbGFiZWwuY2RrLXByb2dyYW0tZm9jdXNlZFtfbmdjb250ZW50LSVDT01QJV06bm90KC5tYXQtdGFiLWRpc2FibGVkKSwgLm1hdC10YWItZ3JvdXAubWF0LXByaW1hcnlbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC10YWItbGluay5jZGsta2V5Ym9hcmQtZm9jdXNlZFtfbmdjb250ZW50LSVDT01QJV06bm90KC5tYXQtdGFiLWRpc2FibGVkKSwgLm1hdC10YWItZ3JvdXAubWF0LXByaW1hcnlbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC10YWItbGluay5jZGstcHJvZ3JhbS1mb2N1c2VkW19uZ2NvbnRlbnQtJUNPTVAlXTpub3QoLm1hdC10YWItZGlzYWJsZWQpLCAubWF0LXRhYi1uYXYtYmFyLm1hdC1wcmltYXJ5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtdGFiLWxhYmVsLmNkay1rZXlib2FyZC1mb2N1c2VkW19uZ2NvbnRlbnQtJUNPTVAlXTpub3QoLm1hdC10YWItZGlzYWJsZWQpLCAubWF0LXRhYi1uYXYtYmFyLm1hdC1wcmltYXJ5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtdGFiLWxhYmVsLmNkay1wcm9ncmFtLWZvY3VzZWRbX25nY29udGVudC0lQ09NUCVdOm5vdCgubWF0LXRhYi1kaXNhYmxlZCksIC5tYXQtdGFiLW5hdi1iYXIubWF0LXByaW1hcnlbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC10YWItbGluay5jZGsta2V5Ym9hcmQtZm9jdXNlZFtfbmdjb250ZW50LSVDT01QJV06bm90KC5tYXQtdGFiLWRpc2FibGVkKSwgLm1hdC10YWItbmF2LWJhci5tYXQtcHJpbWFyeVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXRhYi1saW5rLmNkay1wcm9ncmFtLWZvY3VzZWRbX25nY29udGVudC0lQ09NUCVdOm5vdCgubWF0LXRhYi1kaXNhYmxlZCl7YmFja2dyb3VuZC1jb2xvcjpyZ2JhKDI1NSwxNTIsMCwuMyl9Lm1hdC10YWItZ3JvdXAubWF0LXByaW1hcnlbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pbmstYmFyW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10YWItbmF2LWJhci5tYXQtcHJpbWFyeVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWluay1iYXJbX25nY29udGVudC0lQ09NUCVde2JhY2tncm91bmQtY29sb3I6I2Y1N2MwMH0ubWF0LXRhYi1ncm91cC5tYXQtcHJpbWFyeS5tYXQtYmFja2dyb3VuZC1wcmltYXJ5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaW5rLWJhcltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdGFiLW5hdi1iYXIubWF0LXByaW1hcnkubWF0LWJhY2tncm91bmQtcHJpbWFyeVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWluay1iYXJbX25nY29udGVudC0lQ09NUCVde2JhY2tncm91bmQtY29sb3I6I2ZmZn0ubWF0LXRhYi1ncm91cC5tYXQtYWNjZW50W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtdGFiLWxhYmVsLmNkay1rZXlib2FyZC1mb2N1c2VkW19uZ2NvbnRlbnQtJUNPTVAlXTpub3QoLm1hdC10YWItZGlzYWJsZWQpLCAubWF0LXRhYi1ncm91cC5tYXQtYWNjZW50W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtdGFiLWxhYmVsLmNkay1wcm9ncmFtLWZvY3VzZWRbX25nY29udGVudC0lQ09NUCVdOm5vdCgubWF0LXRhYi1kaXNhYmxlZCksIC5tYXQtdGFiLWdyb3VwLm1hdC1hY2NlbnRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC10YWItbGluay5jZGsta2V5Ym9hcmQtZm9jdXNlZFtfbmdjb250ZW50LSVDT01QJV06bm90KC5tYXQtdGFiLWRpc2FibGVkKSwgLm1hdC10YWItZ3JvdXAubWF0LWFjY2VudFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXRhYi1saW5rLmNkay1wcm9ncmFtLWZvY3VzZWRbX25nY29udGVudC0lQ09NUCVdOm5vdCgubWF0LXRhYi1kaXNhYmxlZCksIC5tYXQtdGFiLW5hdi1iYXIubWF0LWFjY2VudFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXRhYi1sYWJlbC5jZGsta2V5Ym9hcmQtZm9jdXNlZFtfbmdjb250ZW50LSVDT01QJV06bm90KC5tYXQtdGFiLWRpc2FibGVkKSwgLm1hdC10YWItbmF2LWJhci5tYXQtYWNjZW50W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtdGFiLWxhYmVsLmNkay1wcm9ncmFtLWZvY3VzZWRbX25nY29udGVudC0lQ09NUCVdOm5vdCgubWF0LXRhYi1kaXNhYmxlZCksIC5tYXQtdGFiLW5hdi1iYXIubWF0LWFjY2VudFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXRhYi1saW5rLmNkay1rZXlib2FyZC1mb2N1c2VkW19uZ2NvbnRlbnQtJUNPTVAlXTpub3QoLm1hdC10YWItZGlzYWJsZWQpLCAubWF0LXRhYi1uYXYtYmFyLm1hdC1hY2NlbnRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC10YWItbGluay5jZGstcHJvZ3JhbS1mb2N1c2VkW19uZ2NvbnRlbnQtJUNPTVAlXTpub3QoLm1hdC10YWItZGlzYWJsZWQpe2JhY2tncm91bmQtY29sb3I6cmdiYSgyNTUsMTUyLDAsLjMpfS5tYXQtdGFiLWdyb3VwLm1hdC1hY2NlbnRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pbmstYmFyW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10YWItbmF2LWJhci5tYXQtYWNjZW50W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaW5rLWJhcltfbmdjb250ZW50LSVDT01QJV17YmFja2dyb3VuZC1jb2xvcjojZmY5ODAwfS5tYXQtdGFiLWdyb3VwLm1hdC1hY2NlbnQubWF0LWJhY2tncm91bmQtYWNjZW50W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaW5rLWJhcltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdGFiLW5hdi1iYXIubWF0LWFjY2VudC5tYXQtYmFja2dyb3VuZC1hY2NlbnRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pbmstYmFyW19uZ2NvbnRlbnQtJUNPTVAlXXtiYWNrZ3JvdW5kLWNvbG9yOiNmZmZ9Lm1hdC10YWItZ3JvdXAubWF0LXdhcm5bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC10YWItbGFiZWwuY2RrLWtleWJvYXJkLWZvY3VzZWRbX25nY29udGVudC0lQ09NUCVdOm5vdCgubWF0LXRhYi1kaXNhYmxlZCksIC5tYXQtdGFiLWdyb3VwLm1hdC13YXJuW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtdGFiLWxhYmVsLmNkay1wcm9ncmFtLWZvY3VzZWRbX25nY29udGVudC0lQ09NUCVdOm5vdCgubWF0LXRhYi1kaXNhYmxlZCksIC5tYXQtdGFiLWdyb3VwLm1hdC13YXJuW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtdGFiLWxpbmsuY2RrLWtleWJvYXJkLWZvY3VzZWRbX25nY29udGVudC0lQ09NUCVdOm5vdCgubWF0LXRhYi1kaXNhYmxlZCksIC5tYXQtdGFiLWdyb3VwLm1hdC13YXJuW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtdGFiLWxpbmsuY2RrLXByb2dyYW0tZm9jdXNlZFtfbmdjb250ZW50LSVDT01QJV06bm90KC5tYXQtdGFiLWRpc2FibGVkKSwgLm1hdC10YWItbmF2LWJhci5tYXQtd2Fybltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXRhYi1sYWJlbC5jZGsta2V5Ym9hcmQtZm9jdXNlZFtfbmdjb250ZW50LSVDT01QJV06bm90KC5tYXQtdGFiLWRpc2FibGVkKSwgLm1hdC10YWItbmF2LWJhci5tYXQtd2Fybltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXRhYi1sYWJlbC5jZGstcHJvZ3JhbS1mb2N1c2VkW19uZ2NvbnRlbnQtJUNPTVAlXTpub3QoLm1hdC10YWItZGlzYWJsZWQpLCAubWF0LXRhYi1uYXYtYmFyLm1hdC13YXJuW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtdGFiLWxpbmsuY2RrLWtleWJvYXJkLWZvY3VzZWRbX25nY29udGVudC0lQ09NUCVdOm5vdCgubWF0LXRhYi1kaXNhYmxlZCksIC5tYXQtdGFiLW5hdi1iYXIubWF0LXdhcm5bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC10YWItbGluay5jZGstcHJvZ3JhbS1mb2N1c2VkW19uZ2NvbnRlbnQtJUNPTVAlXTpub3QoLm1hdC10YWItZGlzYWJsZWQpe2JhY2tncm91bmQtY29sb3I6cmdiYSgyNTUsMjA1LDIxMCwuMyl9Lm1hdC10YWItZ3JvdXAubWF0LXdhcm5bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pbmstYmFyW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10YWItbmF2LWJhci5tYXQtd2Fybltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWluay1iYXJbX25nY29udGVudC0lQ09NUCVde2JhY2tncm91bmQtY29sb3I6I2Y0NDMzNn0ubWF0LXRhYi1ncm91cC5tYXQtd2Fybi5tYXQtYmFja2dyb3VuZC13YXJuW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaW5rLWJhcltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdGFiLW5hdi1iYXIubWF0LXdhcm4ubWF0LWJhY2tncm91bmQtd2Fybltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWluay1iYXJbX25nY29udGVudC0lQ09NUCVde2JhY2tncm91bmQtY29sb3I6I2ZmZn0ubWF0LXRhYi1ncm91cC5tYXQtYmFja2dyb3VuZC1wcmltYXJ5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtdGFiLWxhYmVsLmNkay1rZXlib2FyZC1mb2N1c2VkW19uZ2NvbnRlbnQtJUNPTVAlXTpub3QoLm1hdC10YWItZGlzYWJsZWQpLCAubWF0LXRhYi1ncm91cC5tYXQtYmFja2dyb3VuZC1wcmltYXJ5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtdGFiLWxhYmVsLmNkay1wcm9ncmFtLWZvY3VzZWRbX25nY29udGVudC0lQ09NUCVdOm5vdCgubWF0LXRhYi1kaXNhYmxlZCksIC5tYXQtdGFiLWdyb3VwLm1hdC1iYWNrZ3JvdW5kLXByaW1hcnlbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC10YWItbGluay5jZGsta2V5Ym9hcmQtZm9jdXNlZFtfbmdjb250ZW50LSVDT01QJV06bm90KC5tYXQtdGFiLWRpc2FibGVkKSwgLm1hdC10YWItZ3JvdXAubWF0LWJhY2tncm91bmQtcHJpbWFyeVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXRhYi1saW5rLmNkay1wcm9ncmFtLWZvY3VzZWRbX25nY29udGVudC0lQ09NUCVdOm5vdCgubWF0LXRhYi1kaXNhYmxlZCksIC5tYXQtdGFiLW5hdi1iYXIubWF0LWJhY2tncm91bmQtcHJpbWFyeVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXRhYi1sYWJlbC5jZGsta2V5Ym9hcmQtZm9jdXNlZFtfbmdjb250ZW50LSVDT01QJV06bm90KC5tYXQtdGFiLWRpc2FibGVkKSwgLm1hdC10YWItbmF2LWJhci5tYXQtYmFja2dyb3VuZC1wcmltYXJ5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtdGFiLWxhYmVsLmNkay1wcm9ncmFtLWZvY3VzZWRbX25nY29udGVudC0lQ09NUCVdOm5vdCgubWF0LXRhYi1kaXNhYmxlZCksIC5tYXQtdGFiLW5hdi1iYXIubWF0LWJhY2tncm91bmQtcHJpbWFyeVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXRhYi1saW5rLmNkay1rZXlib2FyZC1mb2N1c2VkW19uZ2NvbnRlbnQtJUNPTVAlXTpub3QoLm1hdC10YWItZGlzYWJsZWQpLCAubWF0LXRhYi1uYXYtYmFyLm1hdC1iYWNrZ3JvdW5kLXByaW1hcnlbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC10YWItbGluay5jZGstcHJvZ3JhbS1mb2N1c2VkW19uZ2NvbnRlbnQtJUNPTVAlXTpub3QoLm1hdC10YWItZGlzYWJsZWQpe2JhY2tncm91bmQtY29sb3I6cmdiYSgyNTUsMTUyLDAsLjMpfS5tYXQtdGFiLWdyb3VwLm1hdC1iYWNrZ3JvdW5kLXByaW1hcnlbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC10YWItaGVhZGVyW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10YWItZ3JvdXAubWF0LWJhY2tncm91bmQtcHJpbWFyeVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXRhYi1saW5rc1tfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdGFiLWdyb3VwLm1hdC1iYWNrZ3JvdW5kLXByaW1hcnlbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC10YWItaGVhZGVyLXBhZ2luYXRpb25bX25nY29udGVudC0lQ09NUCVdLCAubWF0LXRhYi1uYXYtYmFyLm1hdC1iYWNrZ3JvdW5kLXByaW1hcnlbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC10YWItaGVhZGVyW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10YWItbmF2LWJhci5tYXQtYmFja2dyb3VuZC1wcmltYXJ5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtdGFiLWxpbmtzW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10YWItbmF2LWJhci5tYXQtYmFja2dyb3VuZC1wcmltYXJ5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtdGFiLWhlYWRlci1wYWdpbmF0aW9uW19uZ2NvbnRlbnQtJUNPTVAlXXtiYWNrZ3JvdW5kLWNvbG9yOiNmNTdjMDB9Lm1hdC10YWItZ3JvdXAubWF0LWJhY2tncm91bmQtcHJpbWFyeVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXRhYi1sYWJlbFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdGFiLWdyb3VwLm1hdC1iYWNrZ3JvdW5kLXByaW1hcnlbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC10YWItbGlua1tfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdGFiLW5hdi1iYXIubWF0LWJhY2tncm91bmQtcHJpbWFyeVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXRhYi1sYWJlbFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdGFiLW5hdi1iYXIubWF0LWJhY2tncm91bmQtcHJpbWFyeVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXRhYi1saW5rW19uZ2NvbnRlbnQtJUNPTVAlXXtjb2xvcjojZmZmfS5tYXQtdGFiLWdyb3VwLm1hdC1iYWNrZ3JvdW5kLXByaW1hcnlbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC10YWItbGFiZWwubWF0LXRhYi1kaXNhYmxlZFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdGFiLWdyb3VwLm1hdC1iYWNrZ3JvdW5kLXByaW1hcnlbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC10YWItbGluay5tYXQtdGFiLWRpc2FibGVkW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10YWItbmF2LWJhci5tYXQtYmFja2dyb3VuZC1wcmltYXJ5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtdGFiLWxhYmVsLm1hdC10YWItZGlzYWJsZWRbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXRhYi1uYXYtYmFyLm1hdC1iYWNrZ3JvdW5kLXByaW1hcnlbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC10YWItbGluay5tYXQtdGFiLWRpc2FibGVkW19uZ2NvbnRlbnQtJUNPTVAlXXtjb2xvcjpyZ2JhKDI1NSwyNTUsMjU1LC40KX0ubWF0LXRhYi1ncm91cC5tYXQtYmFja2dyb3VuZC1wcmltYXJ5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtdGFiLWhlYWRlci1wYWdpbmF0aW9uLWNoZXZyb25bX25nY29udGVudC0lQ09NUCVdLCAubWF0LXRhYi1uYXYtYmFyLm1hdC1iYWNrZ3JvdW5kLXByaW1hcnlbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC10YWItaGVhZGVyLXBhZ2luYXRpb24tY2hldnJvbltfbmdjb250ZW50LSVDT01QJV17Ym9yZGVyLWNvbG9yOiNmZmZ9Lm1hdC10YWItZ3JvdXAubWF0LWJhY2tncm91bmQtcHJpbWFyeVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXRhYi1oZWFkZXItcGFnaW5hdGlvbi1kaXNhYmxlZFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXRhYi1oZWFkZXItcGFnaW5hdGlvbi1jaGV2cm9uW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10YWItbmF2LWJhci5tYXQtYmFja2dyb3VuZC1wcmltYXJ5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtdGFiLWhlYWRlci1wYWdpbmF0aW9uLWRpc2FibGVkW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtdGFiLWhlYWRlci1wYWdpbmF0aW9uLWNoZXZyb25bX25nY29udGVudC0lQ09NUCVde2JvcmRlci1jb2xvcjpyZ2JhKDI1NSwyNTUsMjU1LC40KX0ubWF0LXRhYi1ncm91cC5tYXQtYmFja2dyb3VuZC1wcmltYXJ5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtcmlwcGxlLWVsZW1lbnRbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXRhYi1uYXYtYmFyLm1hdC1iYWNrZ3JvdW5kLXByaW1hcnlbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1yaXBwbGUtZWxlbWVudFtfbmdjb250ZW50LSVDT01QJV17YmFja2dyb3VuZC1jb2xvcjpyZ2JhKDI1NSwyNTUsMjU1LC4xMil9Lm1hdC10YWItZ3JvdXAubWF0LWJhY2tncm91bmQtYWNjZW50W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtdGFiLWxhYmVsLmNkay1rZXlib2FyZC1mb2N1c2VkW19uZ2NvbnRlbnQtJUNPTVAlXTpub3QoLm1hdC10YWItZGlzYWJsZWQpLCAubWF0LXRhYi1ncm91cC5tYXQtYmFja2dyb3VuZC1hY2NlbnRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC10YWItbGFiZWwuY2RrLXByb2dyYW0tZm9jdXNlZFtfbmdjb250ZW50LSVDT01QJV06bm90KC5tYXQtdGFiLWRpc2FibGVkKSwgLm1hdC10YWItZ3JvdXAubWF0LWJhY2tncm91bmQtYWNjZW50W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtdGFiLWxpbmsuY2RrLWtleWJvYXJkLWZvY3VzZWRbX25nY29udGVudC0lQ09NUCVdOm5vdCgubWF0LXRhYi1kaXNhYmxlZCksIC5tYXQtdGFiLWdyb3VwLm1hdC1iYWNrZ3JvdW5kLWFjY2VudFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXRhYi1saW5rLmNkay1wcm9ncmFtLWZvY3VzZWRbX25nY29udGVudC0lQ09NUCVdOm5vdCgubWF0LXRhYi1kaXNhYmxlZCksIC5tYXQtdGFiLW5hdi1iYXIubWF0LWJhY2tncm91bmQtYWNjZW50W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtdGFiLWxhYmVsLmNkay1rZXlib2FyZC1mb2N1c2VkW19uZ2NvbnRlbnQtJUNPTVAlXTpub3QoLm1hdC10YWItZGlzYWJsZWQpLCAubWF0LXRhYi1uYXYtYmFyLm1hdC1iYWNrZ3JvdW5kLWFjY2VudFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXRhYi1sYWJlbC5jZGstcHJvZ3JhbS1mb2N1c2VkW19uZ2NvbnRlbnQtJUNPTVAlXTpub3QoLm1hdC10YWItZGlzYWJsZWQpLCAubWF0LXRhYi1uYXYtYmFyLm1hdC1iYWNrZ3JvdW5kLWFjY2VudFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXRhYi1saW5rLmNkay1rZXlib2FyZC1mb2N1c2VkW19uZ2NvbnRlbnQtJUNPTVAlXTpub3QoLm1hdC10YWItZGlzYWJsZWQpLCAubWF0LXRhYi1uYXYtYmFyLm1hdC1iYWNrZ3JvdW5kLWFjY2VudFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXRhYi1saW5rLmNkay1wcm9ncmFtLWZvY3VzZWRbX25nY29udGVudC0lQ09NUCVdOm5vdCgubWF0LXRhYi1kaXNhYmxlZCl7YmFja2dyb3VuZC1jb2xvcjpyZ2JhKDI1NSwxNTIsMCwuMyl9Lm1hdC10YWItZ3JvdXAubWF0LWJhY2tncm91bmQtYWNjZW50W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtdGFiLWhlYWRlcltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdGFiLWdyb3VwLm1hdC1iYWNrZ3JvdW5kLWFjY2VudFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXRhYi1saW5rc1tfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdGFiLWdyb3VwLm1hdC1iYWNrZ3JvdW5kLWFjY2VudFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXRhYi1oZWFkZXItcGFnaW5hdGlvbltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdGFiLW5hdi1iYXIubWF0LWJhY2tncm91bmQtYWNjZW50W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtdGFiLWhlYWRlcltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdGFiLW5hdi1iYXIubWF0LWJhY2tncm91bmQtYWNjZW50W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtdGFiLWxpbmtzW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10YWItbmF2LWJhci5tYXQtYmFja2dyb3VuZC1hY2NlbnRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC10YWItaGVhZGVyLXBhZ2luYXRpb25bX25nY29udGVudC0lQ09NUCVde2JhY2tncm91bmQtY29sb3I6I2ZmOTgwMH0ubWF0LXRhYi1ncm91cC5tYXQtYmFja2dyb3VuZC1hY2NlbnRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC10YWItbGFiZWxbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXRhYi1ncm91cC5tYXQtYmFja2dyb3VuZC1hY2NlbnRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC10YWItbGlua1tfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdGFiLW5hdi1iYXIubWF0LWJhY2tncm91bmQtYWNjZW50W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtdGFiLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10YWItbmF2LWJhci5tYXQtYmFja2dyb3VuZC1hY2NlbnRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC10YWItbGlua1tfbmdjb250ZW50LSVDT01QJV17Y29sb3I6I2ZmZn0ubWF0LXRhYi1ncm91cC5tYXQtYmFja2dyb3VuZC1hY2NlbnRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC10YWItbGFiZWwubWF0LXRhYi1kaXNhYmxlZFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdGFiLWdyb3VwLm1hdC1iYWNrZ3JvdW5kLWFjY2VudFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXRhYi1saW5rLm1hdC10YWItZGlzYWJsZWRbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXRhYi1uYXYtYmFyLm1hdC1iYWNrZ3JvdW5kLWFjY2VudFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXRhYi1sYWJlbC5tYXQtdGFiLWRpc2FibGVkW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10YWItbmF2LWJhci5tYXQtYmFja2dyb3VuZC1hY2NlbnRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC10YWItbGluay5tYXQtdGFiLWRpc2FibGVkW19uZ2NvbnRlbnQtJUNPTVAlXXtjb2xvcjpyZ2JhKDI1NSwyNTUsMjU1LC40KX0ubWF0LXRhYi1ncm91cC5tYXQtYmFja2dyb3VuZC1hY2NlbnRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC10YWItaGVhZGVyLXBhZ2luYXRpb24tY2hldnJvbltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdGFiLW5hdi1iYXIubWF0LWJhY2tncm91bmQtYWNjZW50W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtdGFiLWhlYWRlci1wYWdpbmF0aW9uLWNoZXZyb25bX25nY29udGVudC0lQ09NUCVde2JvcmRlci1jb2xvcjojZmZmfS5tYXQtdGFiLWdyb3VwLm1hdC1iYWNrZ3JvdW5kLWFjY2VudFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXRhYi1oZWFkZXItcGFnaW5hdGlvbi1kaXNhYmxlZFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXRhYi1oZWFkZXItcGFnaW5hdGlvbi1jaGV2cm9uW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10YWItbmF2LWJhci5tYXQtYmFja2dyb3VuZC1hY2NlbnRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC10YWItaGVhZGVyLXBhZ2luYXRpb24tZGlzYWJsZWRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC10YWItaGVhZGVyLXBhZ2luYXRpb24tY2hldnJvbltfbmdjb250ZW50LSVDT01QJV17Ym9yZGVyLWNvbG9yOnJnYmEoMjU1LDI1NSwyNTUsLjQpfS5tYXQtdGFiLWdyb3VwLm1hdC1iYWNrZ3JvdW5kLWFjY2VudFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXJpcHBsZS1lbGVtZW50W19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10YWItbmF2LWJhci5tYXQtYmFja2dyb3VuZC1hY2NlbnRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1yaXBwbGUtZWxlbWVudFtfbmdjb250ZW50LSVDT01QJV17YmFja2dyb3VuZC1jb2xvcjpyZ2JhKDI1NSwyNTUsMjU1LC4xMil9Lm1hdC10YWItZ3JvdXAubWF0LWJhY2tncm91bmQtd2Fybltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXRhYi1sYWJlbC5jZGsta2V5Ym9hcmQtZm9jdXNlZFtfbmdjb250ZW50LSVDT01QJV06bm90KC5tYXQtdGFiLWRpc2FibGVkKSwgLm1hdC10YWItZ3JvdXAubWF0LWJhY2tncm91bmQtd2Fybltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXRhYi1sYWJlbC5jZGstcHJvZ3JhbS1mb2N1c2VkW19uZ2NvbnRlbnQtJUNPTVAlXTpub3QoLm1hdC10YWItZGlzYWJsZWQpLCAubWF0LXRhYi1ncm91cC5tYXQtYmFja2dyb3VuZC13YXJuW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtdGFiLWxpbmsuY2RrLWtleWJvYXJkLWZvY3VzZWRbX25nY29udGVudC0lQ09NUCVdOm5vdCgubWF0LXRhYi1kaXNhYmxlZCksIC5tYXQtdGFiLWdyb3VwLm1hdC1iYWNrZ3JvdW5kLXdhcm5bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC10YWItbGluay5jZGstcHJvZ3JhbS1mb2N1c2VkW19uZ2NvbnRlbnQtJUNPTVAlXTpub3QoLm1hdC10YWItZGlzYWJsZWQpLCAubWF0LXRhYi1uYXYtYmFyLm1hdC1iYWNrZ3JvdW5kLXdhcm5bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC10YWItbGFiZWwuY2RrLWtleWJvYXJkLWZvY3VzZWRbX25nY29udGVudC0lQ09NUCVdOm5vdCgubWF0LXRhYi1kaXNhYmxlZCksIC5tYXQtdGFiLW5hdi1iYXIubWF0LWJhY2tncm91bmQtd2Fybltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXRhYi1sYWJlbC5jZGstcHJvZ3JhbS1mb2N1c2VkW19uZ2NvbnRlbnQtJUNPTVAlXTpub3QoLm1hdC10YWItZGlzYWJsZWQpLCAubWF0LXRhYi1uYXYtYmFyLm1hdC1iYWNrZ3JvdW5kLXdhcm5bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC10YWItbGluay5jZGsta2V5Ym9hcmQtZm9jdXNlZFtfbmdjb250ZW50LSVDT01QJV06bm90KC5tYXQtdGFiLWRpc2FibGVkKSwgLm1hdC10YWItbmF2LWJhci5tYXQtYmFja2dyb3VuZC13YXJuW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtdGFiLWxpbmsuY2RrLXByb2dyYW0tZm9jdXNlZFtfbmdjb250ZW50LSVDT01QJV06bm90KC5tYXQtdGFiLWRpc2FibGVkKXtiYWNrZ3JvdW5kLWNvbG9yOnJnYmEoMjU1LDIwNSwyMTAsLjMpfS5tYXQtdGFiLWdyb3VwLm1hdC1iYWNrZ3JvdW5kLXdhcm5bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC10YWItaGVhZGVyW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10YWItZ3JvdXAubWF0LWJhY2tncm91bmQtd2Fybltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXRhYi1saW5rc1tfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdGFiLWdyb3VwLm1hdC1iYWNrZ3JvdW5kLXdhcm5bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC10YWItaGVhZGVyLXBhZ2luYXRpb25bX25nY29udGVudC0lQ09NUCVdLCAubWF0LXRhYi1uYXYtYmFyLm1hdC1iYWNrZ3JvdW5kLXdhcm5bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC10YWItaGVhZGVyW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10YWItbmF2LWJhci5tYXQtYmFja2dyb3VuZC13YXJuW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtdGFiLWxpbmtzW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10YWItbmF2LWJhci5tYXQtYmFja2dyb3VuZC13YXJuW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtdGFiLWhlYWRlci1wYWdpbmF0aW9uW19uZ2NvbnRlbnQtJUNPTVAlXXtiYWNrZ3JvdW5kLWNvbG9yOiNmNDQzMzZ9Lm1hdC10YWItZ3JvdXAubWF0LWJhY2tncm91bmQtd2Fybltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXRhYi1sYWJlbFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdGFiLWdyb3VwLm1hdC1iYWNrZ3JvdW5kLXdhcm5bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC10YWItbGlua1tfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdGFiLW5hdi1iYXIubWF0LWJhY2tncm91bmQtd2Fybltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXRhYi1sYWJlbFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdGFiLW5hdi1iYXIubWF0LWJhY2tncm91bmQtd2Fybltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXRhYi1saW5rW19uZ2NvbnRlbnQtJUNPTVAlXXtjb2xvcjojZmZmfS5tYXQtdGFiLWdyb3VwLm1hdC1iYWNrZ3JvdW5kLXdhcm5bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC10YWItbGFiZWwubWF0LXRhYi1kaXNhYmxlZFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdGFiLWdyb3VwLm1hdC1iYWNrZ3JvdW5kLXdhcm5bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC10YWItbGluay5tYXQtdGFiLWRpc2FibGVkW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10YWItbmF2LWJhci5tYXQtYmFja2dyb3VuZC13YXJuW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtdGFiLWxhYmVsLm1hdC10YWItZGlzYWJsZWRbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXRhYi1uYXYtYmFyLm1hdC1iYWNrZ3JvdW5kLXdhcm5bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC10YWItbGluay5tYXQtdGFiLWRpc2FibGVkW19uZ2NvbnRlbnQtJUNPTVAlXXtjb2xvcjpyZ2JhKDI1NSwyNTUsMjU1LC40KX0ubWF0LXRhYi1ncm91cC5tYXQtYmFja2dyb3VuZC13YXJuW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtdGFiLWhlYWRlci1wYWdpbmF0aW9uLWNoZXZyb25bX25nY29udGVudC0lQ09NUCVdLCAubWF0LXRhYi1uYXYtYmFyLm1hdC1iYWNrZ3JvdW5kLXdhcm5bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC10YWItaGVhZGVyLXBhZ2luYXRpb24tY2hldnJvbltfbmdjb250ZW50LSVDT01QJV17Ym9yZGVyLWNvbG9yOiNmZmZ9Lm1hdC10YWItZ3JvdXAubWF0LWJhY2tncm91bmQtd2Fybltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXRhYi1oZWFkZXItcGFnaW5hdGlvbi1kaXNhYmxlZFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXRhYi1oZWFkZXItcGFnaW5hdGlvbi1jaGV2cm9uW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10YWItbmF2LWJhci5tYXQtYmFja2dyb3VuZC13YXJuW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtdGFiLWhlYWRlci1wYWdpbmF0aW9uLWRpc2FibGVkW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtdGFiLWhlYWRlci1wYWdpbmF0aW9uLWNoZXZyb25bX25nY29udGVudC0lQ09NUCVde2JvcmRlci1jb2xvcjpyZ2JhKDI1NSwyNTUsMjU1LC40KX0ubWF0LXRhYi1ncm91cC5tYXQtYmFja2dyb3VuZC13YXJuW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtcmlwcGxlLWVsZW1lbnRbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXRhYi1uYXYtYmFyLm1hdC1iYWNrZ3JvdW5kLXdhcm5bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1yaXBwbGUtZWxlbWVudFtfbmdjb250ZW50LSVDT01QJV17YmFja2dyb3VuZC1jb2xvcjpyZ2JhKDI1NSwyNTUsMjU1LC4xMil9Lm1hdC10b29sYmFyW19uZ2NvbnRlbnQtJUNPTVAlXXtiYWNrZ3JvdW5kOiNmNWY1ZjU7Y29sb3I6IzIxMjEyMX0ubWF0LXRvb2xiYXIubWF0LXByaW1hcnlbX25nY29udGVudC0lQ09NUCVde2JhY2tncm91bmQ6I2Y1N2MwMDtjb2xvcjojZmZmfS5tYXQtdG9vbGJhci5tYXQtYWNjZW50W19uZ2NvbnRlbnQtJUNPTVAlXXtiYWNrZ3JvdW5kOiNmZjk4MDA7Y29sb3I6I2ZmZn0ubWF0LXRvb2xiYXIubWF0LXdhcm5bX25nY29udGVudC0lQ09NUCVde2JhY2tncm91bmQ6I2Y0NDMzNjtjb2xvcjojZmZmfS5tYXQtdG9vbGJhcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtdW5kZXJsaW5lW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10b29sYmFyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1yaXBwbGVbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXRvb2xiYXJbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb2N1c2VkW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1yaXBwbGVbX25nY29udGVudC0lQ09NUCVde2JhY2tncm91bmQtY29sb3I6Y3VycmVudENvbG9yfS5tYXQtdG9vbGJhcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXRvb2xiYXJbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb2N1c2VkW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdG9vbGJhcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXNlbGVjdC12YWx1ZVtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdG9vbGJhcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXNlbGVjdC1hcnJvd1tfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdG9vbGJhcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQubWF0LWZvY3VzZWRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1zZWxlY3QtYXJyb3dbX25nY29udGVudC0lQ09NUCVde2NvbG9yOmluaGVyaXR9Lm1hdC10b29sYmFyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaW5wdXQtZWxlbWVudFtfbmdjb250ZW50LSVDT01QJV17Y2FyZXQtY29sb3I6Y3VycmVudENvbG9yfS5tYXQtdG9vbGJhci1tdWx0aXBsZS1yb3dzW19uZ2NvbnRlbnQtJUNPTVAlXXttaW4taGVpZ2h0OjY0cHh9Lm1hdC10b29sYmFyLXJvd1tfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdG9vbGJhci1zaW5nbGUtcm93W19uZ2NvbnRlbnQtJUNPTVAlXXtoZWlnaHQ6NjRweH1AbWVkaWEobWF4LXdpZHRoOiA1OTlweCl7Lm1hdC10b29sYmFyLW11bHRpcGxlLXJvd3NbX25nY29udGVudC0lQ09NUCVde21pbi1oZWlnaHQ6NTZweH0ubWF0LXRvb2xiYXItcm93W19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10b29sYmFyLXNpbmdsZS1yb3dbX25nY29udGVudC0lQ09NUCVde2hlaWdodDo1NnB4fX0ubWF0LXRvb2x0aXBbX25nY29udGVudC0lQ09NUCVde2JhY2tncm91bmQ6cmdiYSg5Nyw5Nyw5NywuOSl9Lm1hdC10cmVlW19uZ2NvbnRlbnQtJUNPTVAlXXtiYWNrZ3JvdW5kOiNmZmZ9Lm1hdC10cmVlLW5vZGVbX25nY29udGVudC0lQ09NUCVdLCAubWF0LW5lc3RlZC10cmVlLW5vZGVbX25nY29udGVudC0lQ09NUCVde2NvbG9yOiMyMTIxMjF9Lm1hdC10cmVlLW5vZGVbX25nY29udGVudC0lQ09NUCVde21pbi1oZWlnaHQ6NDhweH0ubWF0LXNuYWNrLWJhci1jb250YWluZXJbX25nY29udGVudC0lQ09NUCVde2NvbG9yOnJnYmEoMjU1LDI1NSwyNTUsLjcpO2JhY2tncm91bmQ6IzMyMzIzMjtib3gtc2hhZG93OjBweCAzcHggNXB4IC0xcHggcmdiYSgwLCAwLCAwLCAwLjIpLDBweCA2cHggMTBweCAwcHggcmdiYSgwLCAwLCAwLCAwLjE0KSwwcHggMXB4IDE4cHggMHB4IHJnYmEoMCwgMCwgMCwgMC4xMil9Lm1hdC1zaW1wbGUtc25hY2tiYXItYWN0aW9uW19uZ2NvbnRlbnQtJUNPTVAlXXtjb2xvcjojZmY5ODAwfVtfbmdob3N0LSVDT01QJV17ZGlzcGxheTpmbGV4O2ZsZXgtZGlyZWN0aW9uOmNvbHVtbjtib3gtc2l6aW5nOmJvcmRlci1ib3g7aGVpZ2h0OjEwMCU7b3ZlcmZsb3c6YXV0bztwYWRkaW5nOjE2cHg7cGFkZGluZy10b3A6NHB4fS5hY3R1YWwtc2l6ZVtfbmdob3N0LSVDT01QJV17aGVpZ2h0OmF1dG99LmhlYWRpbmdbX25nY29udGVudC0lQ09NUCVde2FsaWduLWl0ZW1zOmNlbnRlcjtkaXNwbGF5OmdyaWQ7Z3JpZC10ZW1wbGF0ZS1hcmVhczoidGFnIGNvbnRyb2xzIiAicnVuIHN0ZXAiO2dyaWQtdGVtcGxhdGUtY29sdW1uczoxZnIgYXV0bztmb250LXNpemU6MTRweDttYXJnaW4tYm90dG9tOjRweDtwb3NpdGlvbjpyZWxhdGl2ZX0udGFnW19uZ2NvbnRlbnQtJUNPTVAlXXtncmlkLWFyZWE6dGFnO292ZXJmbG93OmhpZGRlbn0ucGluLWJ1dHRvbltfbmdjb250ZW50LSVDT01QJV0gICBtYXQtaWNvbltfbmdjb250ZW50LSVDT01QJV17aGVpZ2h0OjE4cHh9LnJ1bltfbmdjb250ZW50LSVDT01QJV17Z3JpZC1hcmVhOnJ1bjtkaXNwbGF5OmZsZXg7d2hpdGUtc3BhY2U6bm93cmFwfS5ydW5bX25nY29udGVudC0lQ09NUCVdICAgLmRvdFtfbmdjb250ZW50LSVDT01QJV17ZmxleDpub25lO2Rpc3BsYXk6aW5saW5lLWJsb2NrO3dpZHRoOjEzcHg7aGVpZ2h0OjEzcHg7Ym9yZGVyLXJhZGl1czo1MCU7bWFyZ2luLXJpZ2h0OjRweH0ucnVuW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5ydW4tdGV4dFtfbmdjb250ZW50LSVDT01QJV17b3ZlcmZsb3c6aGlkZGVuO3RleHQtb3ZlcmZsb3c6ZWxsaXBzaXM7bWF4LXdpZHRoOjEyMHB4fS5zdGVwW19uZ2NvbnRlbnQtJUNPTVAlXXtncmlkLWFyZWE6c3RlcDtkaXNwbGF5OmZsZXh9LnN0ZXBbX25nY29udGVudC0lQ09NUCVdICAgbWF0LXNwaW5uZXJbX25nY29udGVudC0lQ09NUCVde21hcmdpbi1sZWZ0OjRweDttYXJnaW4tcmlnaHQ6MH0ucnVuW19uZ2NvbnRlbnQtJUNPTVAlXSwgLnN0ZXBbX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToxM3B4O2NvbG9yOiM2MTYxNjE7aGVpZ2h0OjE1cHh9LmNvbnRyb2xzW19uZ2NvbnRlbnQtJUNPTVAlXXtjb2xvcjojNjE2MTYxO2dyaWQtYXJlYTpjb250cm9scztqdXN0aWZ5LXNlbGY6ZmxleC1lbmQ7ZmxleC1zaHJpbms6MDttYXJnaW4tcmlnaHQ6LTEycHg7d2hpdGUtc3BhY2U6bm93cmFwfS5pbWctY29udGFpbmVyW19uZ2NvbnRlbnQtJUNPTVAlXXtmbGV4OjEgMSAwO292ZXJmbG93LXk6YXV0bztwb3NpdGlvbjpyZWxhdGl2ZX0uaW1nLWNvbnRhaW5lcltfbmdjb250ZW50LSVDT01QJV0gICBpbWdbX25nY29udGVudC0lQ09NUCVde2ltYWdlLXJlbmRlcmluZzotbW96LWNyaXNwLWVkZ2VzO2ltYWdlLXJlbmRlcmluZzpwaXhlbGF0ZWR9LmFjdHVhbC1zaXplW19uZ2hvc3QtJUNPTVAlXSAgIC5pbWctY29udGFpbmVyW19uZ2NvbnRlbnQtJUNPTVAlXXtvdmVyZmxvdzphdXRvO2ZsZXg6bm9uZX1bX25naG9zdC0lQ09NUCVdOm5vdCguYWN0dWFsLXNpemUpICAgaW1nW19uZ2NvbnRlbnQtJUNPTVAlXXtwb3NpdGlvbjphYnNvbHV0ZTttYXgtaGVpZ2h0OjEwMCU7bWF4LXdpZHRoOjEwMCU7d2lkdGg6YXV0bztoZWlnaHQ6MTAwJTtvYmplY3QtZml0OmNvbnRhaW59LnNsaWRlci1yb3dbX25nY29udGVudC0lQ09NUCVde2Rpc3BsYXk6ZmxleDthbGlnbi1pdGVtczpjZW50ZXI7aGVpZ2h0OjI0cHh9LnN0ZXAtc2xpZGVyW19uZ2NvbnRlbnQtJUNPTVAlXXtmbGV4OjF9W19uZ2hvc3QtJUNPTVAlXSAgICAgLm1hdC1zbGlkZXItbWluLXZhbHVlIC5tYXQtc2xpZGVyLXRodW1ie2JhY2tncm91bmQtY29sb3I6I2Y1N2MwMH0uZW1wdHktbWVzc2FnZVtfbmdjb250ZW50LSVDT01QJV17bWFyZ2luLXRvcDoxZW07Zm9udC1zaXplOjEzcHh9J10sY2hhbmdlRGV0ZWN0aW9uOjB9KTtjbGFzcyBCJHtjb25zdHJ1Y3Rvcih0LG4pe3RoaXMuc3RvcmU9dCx0aGlzLmRhdGFTb3VyY2U9bix0aGlzLmZ1bGxXaWR0aENoYW5nZWQ9bmV3IEVmLHRoaXMucGluU3RhdGVDaGFuZ2VkPW5ldyBFZix0aGlzLmJyaWdodG5lc3NJbk1pbGxpJD10aGlzLnN0b3JlLnNlbGVjdChoRCksdGhpcy5jb250cmFzdEluTWlsbGkkPXRoaXMuc3RvcmUuc2VsZWN0KF9EKSx0aGlzLmFjdHVhbFNpemVHbG9iYWxTZXR0aW5nJD10aGlzLnN0b3JlLnNlbGVjdChDRCksdGhpcy5zaG93QWN0dWFsU2l6ZT0hMSx0aGlzLmFjdHVhbFNpemVVaVRvZ2dsZWQ9ITEsdGhpcy5hY3R1YWxTaXplVWlUb2dnbGVTdWJqZWN0PW5ldyBGKHRoaXMuYWN0dWFsU2l6ZVVpVG9nZ2xlZCksdGhpcy5uZ1Vuc3Vic2NyaWJlPW5ldyB4fW9uU3RlcEluZGV4Q2hhbmdlZCh0KXt0aGlzLnN0b3JlLmRpc3BhdGNoKGtLKHtjYXJkSWQ6dGhpcy5jYXJkSWQsc3RlcEluZGV4OnR9KSl9aXNJbWFnZUNhcmRNZXRhZGF0YSh0KXtjb25zdHtwbHVnaW46bn09dDtyZXR1cm4gbj09PWdULklNQUdFU31vbkFjdHVhbFNpemVUb2dnbGUoKXt0aGlzLmFjdHVhbFNpemVVaVRvZ2dsZWQ9IXRoaXMuYWN0dWFsU2l6ZVVpVG9nZ2xlZCx0aGlzLmFjdHVhbFNpemVVaVRvZ2dsZVN1YmplY3QubmV4dCh0aGlzLmFjdHVhbFNpemVVaVRvZ2dsZWQpfW5nT25Jbml0KCl7RXQoW3RoaXMuYWN0dWFsU2l6ZUdsb2JhbFNldHRpbmckLHRoaXMuYWN0dWFsU2l6ZVVpVG9nZ2xlU3ViamVjdF0pLnBpcGUoZGUodGhpcy5uZ1Vuc3Vic2NyaWJlKSxoZSgoKFt0LG5dKT0+e3RoaXMuc2hvd0FjdHVhbFNpemU9dHx8bix0aGlzLmZ1bGxXaWR0aENoYW5nZWQuZW1pdCh0aGlzLnNob3dBY3R1YWxTaXplKX0pKSkuc3Vic2NyaWJlKCgoKT0+e30pKTtjb25zdCB0PXRoaXMuc3RvcmUuc2VsZWN0KCRULHRoaXMuY2FyZElkKS5waXBlKEd0KCh0PT4hIXQmJnRoaXMuaXNJbWFnZUNhcmRNZXRhZGF0YSh0KSkpLGZ0KCh0PT50KSksYWUoMSkpLG49RXQoW3QsdGhpcy5zdG9yZS5zZWxlY3QoUVQsdGhpcy5jYXJkSWQpXSkucGlwZShmdCgoKFt0LG5dKT0+e2NvbnN0IGU9dC5ydW5JZDtyZXR1cm4gbiYmbi5oYXNPd25Qcm9wZXJ0eShlKT9uW2VdOltdfSkpLHZuKCgodCxuKT0+dC5sZW5ndGg9PT1uLmxlbmd0aCYmMD09PXQubGVuZ3RofHx0PT09bikpLGFlKDEpKTt0aGlzLnN0ZXBJbmRleCQ9dGhpcy5zdG9yZS5zZWxlY3QoYUQsdGhpcy5jYXJkSWQpLHRoaXMubG9hZFN0YXRlJD10aGlzLnN0b3JlLnNlbGVjdChKVCx0aGlzLmNhcmRJZCk7Y29uc3QgZT1FdChbbix0aGlzLnN0ZXBJbmRleCRdKS5waXBlKGZ0KCgoW3Qsbl0pPT5udWxsIT09biYmdFtuXT90W25dOm51bGwpKSk7dGhpcy50YWckPXQucGlwZShmdCgodD0+dC50YWcpKSksdGhpcy50aXRsZSQ9dGhpcy50YWckLnBpcGUoZnQoKHQ9PlFLKHQsdGhpcy5ncm91cE5hbWUpKSkpLHRoaXMucnVuSWQkPXQucGlwZShmdCgodD0+dC5ydW5JZCkpKSx0aGlzLnNhbXBsZSQ9dC5waXBlKGZ0KCh0PT50LnNhbXBsZSkpKSx0aGlzLmltYWdlVXJsJD1lLnBpcGUoZnQoKHQ9PnQ/dGhpcy5kYXRhU291cmNlLmltYWdlVXJsKHQuaW1hZ2VJZCk6bnVsbCkpKSx0aGlzLnN0ZXBWYWx1ZXMkPW4ucGlwZShmdCgodD0+dC5tYXAoKHQ9PnQuc3RlcCkpKSkpLHRoaXMuaXNQaW5uZWQkPXRoaXMuc3RvcmUuc2VsZWN0KGNELHRoaXMuY2FyZElkKX1uZ09uRGVzdHJveSgpe3RoaXMubmdVbnN1YnNjcmliZS5uZXh0KCksdGhpcy5uZ1Vuc3Vic2NyaWJlLmNvbXBsZXRlKCl9fXZhciBWJCxqJCxVJDtmdW5jdGlvbiBXJCh0LG4pezEmdCYmKEtnKDAsInNwYW4iKSxKcCgxLCJzY2FsYXIiKSwkZygpKX1mdW5jdGlvbiBHJCh0LG4pezEmdCYmKEtnKDAsInNwYW4iKSxKcCgxLCJoaXN0b2dyYW0iKSwkZygpKX1mdW5jdGlvbiBZJCh0LG4pezEmdCYmKEtnKDAsInNwYW4iKSxKcCgxLCJ1bmtub3duIiksJGcoKSl9ZnVuY3Rpb24gcSQodCxuKXtpZigxJnQmJihucCgwLDEzKSxZZygxLFckLDIsMCwic3BhbiIsMTQpLFlnKDIsRyQsMiwwLCJzcGFuIiwxNCksWWcoMyxZJCwyLDAsInNwYW4iLDE1KSxlcCgpKSwyJnQpe2NvbnN0IHQ9Z3AoMik7SmcoIm5nU3dpdGNoIix0LmNhcmRNZXRhZGF0YS5wbHVnaW4pLHdzKDEpLEpnKCJuZ1N3aXRjaENhc2UiLHQuUGx1Z2luVHlwZS5TQ0FMQVJTKSx3cygxKSxKZygibmdTd2l0Y2hDYXNlIix0LlBsdWdpblR5cGUuSElTVE9HUkFNUyl9fWZ1bmN0aW9uIFokKHQsbil7MSZ0JiZhcCgwKX1mdW5jdGlvbiBYJCh0LG4pe2lmKDEmdCYmKEtnKDAsIm9wdGlvbiIsMTYpLEpwKDEpLCRnKCkpLDImdCl7Y29uc3QgdD1uLiRpbXBsaWNpdDtKZygidmFsdWUiLHQuaWQpLHdzKDEpLFFwKHQubmFtZSl9fWZ1bmN0aW9uIEokKHQsbil7aWYoMSZ0KXtjb25zdCB0PW9wKCk7bnAoMCksS2coMSwiaDIiKSxZZygyLHEkLDQsMywibmctdGVtcGxhdGUiLG51bGwsMixLZiksS2coNCwic3BhbiIpLEpwKDUsIkRvd25sb2FkwqAiKSwkZygpLFlnKDYsWiQsMSwwLCJuZy1jb250YWluZXIiLDMpLEtnKDcsInNwYW4iKSxKcCg4LCLCoGRhdGEgZm9ywqAiKSwkZygpLEtnKDksImNvZGUiLDQpLEpwKDEwKSwkZygpLCRnKCksS2coMTEsIm1hdC1kaWFsb2ctY29udGVudCIpLEtnKDEyLCJtYXQtZm9ybS1maWVsZCIsNSksS2coMTMsIm1hdC1sYWJlbCIpLEpwKDE0LCJTZWxlY3QgYSBydW4gdG8gZG93bmxvYWQgYSBkYXRhIGZvciBhIHNlcmllcyIpLCRnKCksS2coMTUsInNlbGVjdCIsNiksY3AoImNoYW5nZSIsKGZ1bmN0aW9uIG4oZSl7cmV0dXJuIGpyKHQpLGdwKCkucnVuU2VsZWN0ZWQuZW1pdChlLnRhcmdldC52YWx1ZSl9KSksS2coMTYsIm9wdGlvbiIsNyksSnAoMTcsIi0iKSwkZygpLFlnKDE4LFgkLDIsMiwib3B0aW9uIiw4KSwkZygpLCRnKCksS2coMTksImRpdiIsOSksS2coMjAsInNwYW4iKSxKcCgyMSwiRG93bmxvYWQgYXPigKYiKSwkZygpLEpwKDIyLCLCoCIpLEtnKDIzLCJhIiwxMCksSnAoMjQsIkpTT04iKSwkZygpLEtnKDI1LCJhIiwxMCksSnAoMjYsIkNTViIpLCRnKCksJGcoKSwkZygpLEtnKDI3LCJtYXQtZGlhbG9nLWFjdGlvbnMiLDExKSxLZygyOCwiYnV0dG9uIiwxMiksSnAoMjksIkNsb3NlIiksJGcoKSwkZygpLGVwKCl9aWYoMiZ0KXtjb25zdCB0PXFnKDMpLG49Z3AoKTt3cyg2KSxKZygibmdUZW1wbGF0ZU91dGxldCIsdCksd3MoMyksSmcoInRpdGxlIixuLmNhcmRNZXRhZGF0YS50YWcpLHdzKDEpLFFwKG4uY2FyZE1ldGFkYXRhLnRhZyksd3MoNSksSmcoInZhbHVlIixuLnNlbGVjdGVkUnVuSWR8fCIiKSx3cygxKSxKZygidmFsdWUiLCIiKSx3cygyKSxKZygibmdGb3JPZiIsbi5ydW5zKSx3cyg1KSxKZygiZGlzYWJsZWQiLCFuLmRvd25sb2FkVXJsSnNvbikoImRvd25sb2FkIixuLmdldERvd25sb2FkTmFtZSgianNvbiIpKSxOZygiaHJlZiIsbi5kb3dubG9hZFVybEpzb24sWGMpLHdzKDIpLEpnKCJkaXNhYmxlZCIsIW4uZG93bmxvYWRVcmxDc3YpKCJkb3dubG9hZCIsbi5nZXREb3dubG9hZE5hbWUoImNzdiIpKSxOZygiaHJlZiIsbi5kb3dubG9hZFVybENzdixYYyl9fWZ1bmN0aW9uIFEkKHQsbil7MSZ0JiZKcCgwLCJMb2FkaW5nLi4uIil9QiQuybVmYWM9ZnVuY3Rpb24gdChuKXtyZXR1cm4gbmV3KG58fEIkKShaZyhjdiksWmcoX1QpKX0sQiQuybVjbXA9X28oe3R5cGU6QiQsc2VsZWN0b3JzOltbImltYWdlLWNhcmQiXV0saW5wdXRzOntjYXJkSWQ6ImNhcmRJZCIsZ3JvdXBOYW1lOiJncm91cE5hbWUiLHJ1bkNvbG9yU2NhbGU6InJ1bkNvbG9yU2NhbGUifSxvdXRwdXRzOntmdWxsV2lkdGhDaGFuZ2VkOiJmdWxsV2lkdGhDaGFuZ2VkIixwaW5TdGF0ZUNoYW5nZWQ6InBpblN0YXRlQ2hhbmdlZCJ9LGRlY2xzOjEzLHZhcnM6MzgsY29uc3RzOltbMywibG9hZFN0YXRlIiwidGl0bGUiLCJ0YWciLCJydW5JZCIsInNhbXBsZSIsImltYWdlVXJsIiwic3RlcEluZGV4Iiwic3RlcFZhbHVlcyIsImJyaWdodG5lc3NJbk1pbGxpIiwiY29udHJhc3RJbk1pbGxpIiwicnVuQ29sb3JTY2FsZSIsInNob3dBY3R1YWxTaXplIiwiYWxsb3dUb2dnbGVBY3R1YWxTaXplIiwiaXNQaW5uZWQiLCJzdGVwSW5kZXhDaGFuZ2UiLCJvbkFjdHVhbFNpemVUb2dnbGUiLCJvblBpbkNsaWNrZWQiXV0sdGVtcGxhdGU6ZnVuY3Rpb24gdChuLGUpezEmbiYmKEtnKDAsImltYWdlLWNhcmQtY29tcG9uZW50IiwwKSxjcCgic3RlcEluZGV4Q2hhbmdlIiwoZnVuY3Rpb24gdChuKXtyZXR1cm4gZS5vblN0ZXBJbmRleENoYW5nZWQobil9KSkoIm9uQWN0dWFsU2l6ZVRvZ2dsZSIsKGZ1bmN0aW9uIHQoKXtyZXR1cm4gZS5vbkFjdHVhbFNpemVUb2dnbGUoKX0pKSgib25QaW5DbGlja2VkIiwoZnVuY3Rpb24gdChuKXtyZXR1cm4gZS5waW5TdGF0ZUNoYW5nZWQuZW1pdChuKX0pKSx5ZigxLCJhc3luYyIpLHlmKDIsImFzeW5jIikseWYoMywiYXN5bmMiKSx5Zig0LCJhc3luYyIpLHlmKDUsImFzeW5jIikseWYoNiwiYXN5bmMiKSx5Zig3LCJhc3luYyIpLHlmKDgsImFzeW5jIikseWYoOSwiYXN5bmMiKSx5ZigxMCwiYXN5bmMiKSx5ZigxMSwiYXN5bmMiKSx5ZigxMiwiYXN5bmMiKSwkZygpKSwyJm4mJkpnKCJsb2FkU3RhdGUiLGtmKDEsMTQsZS5sb2FkU3RhdGUkKSkoInRpdGxlIixrZigyLDE2LGUudGl0bGUkKSkoInRhZyIsa2YoMywxOCxlLnRhZyQpKSgicnVuSWQiLGtmKDQsMjAsZS5ydW5JZCQpKSgic2FtcGxlIixrZig1LDIyLGUuc2FtcGxlJCkpKCJpbWFnZVVybCIsa2YoNiwyNCxlLmltYWdlVXJsJCkpKCJzdGVwSW5kZXgiLGtmKDcsMjYsZS5zdGVwSW5kZXgkKSkoInN0ZXBWYWx1ZXMiLGtmKDgsMjgsZS5zdGVwVmFsdWVzJCkpKCJicmlnaHRuZXNzSW5NaWxsaSIsa2YoOSwzMCxlLmJyaWdodG5lc3NJbk1pbGxpJCkpKCJjb250cmFzdEluTWlsbGkiLGtmKDEwLDMyLGUuY29udHJhc3RJbk1pbGxpJCkpKCJydW5Db2xvclNjYWxlIixlLnJ1bkNvbG9yU2NhbGUpKCJzaG93QWN0dWFsU2l6ZSIsZS5zaG93QWN0dWFsU2l6ZSkoImFsbG93VG9nZ2xlQWN0dWFsU2l6ZSIsITE9PT1rZigxMSwzNCxlLmFjdHVhbFNpemVHbG9iYWxTZXR0aW5nJCkpKCJpc1Bpbm5lZCIsa2YoMTIsMzYsZS5pc1Bpbm5lZCQpKX0sZGlyZWN0aXZlczpbSCRdLHBpcGVzOltvT10sZW5jYXBzdWxhdGlvbjoyLGNoYW5nZURldGVjdGlvbjowfSksKGZ1bmN0aW9uKHQpe3RbdC5TVkc9MF09IlNWRyIsdFt0LldFQkdMPTFdPSJXRUJHTCJ9KShWJHx8KFYkPXt9KSksKGZ1bmN0aW9uKHQpe3RbdC5MSU5FQVI9MF09IkxJTkVBUiIsdFt0LkxPRzEwPTFdPSJMT0cxMCIsdFt0LlRJTUU9Ml09IlRJTUUifSkoaiR8fChqJD17fSkpO2NsYXNzIEske2NvbnN0cnVjdG9yKCl7dGhpcy5ydW5TZWxlY3RlZD1uZXcgRWYsdGhpcy5QbHVnaW5UeXBlPWdUfWdldERvd25sb2FkTmFtZSh0KXtjb25zdCBuPXRoaXMucnVucy5maW5kKCh0PT50LmlkPT09dGhpcy5zZWxlY3RlZFJ1bklkKSk7cmV0dXJuIG4/YCR7bi5uYW1lfS4ke3R9YDoiIn19SyQuybVmYWM9ZnVuY3Rpb24gdChuKXtyZXR1cm4gbmV3KG58fEskKX0sSyQuybVjbXA9X28oe3R5cGU6SyQsc2VsZWN0b3JzOltbImRhdGFfZG93bmxvYWRfZGlhbG9nX2NvbXBvbmVudCJdXSxpbnB1dHM6e2NhcmRNZXRhZGF0YToiY2FyZE1ldGFkYXRhIixydW5zOiJydW5zIixzZWxlY3RlZFJ1bklkOiJzZWxlY3RlZFJ1bklkIixkb3dubG9hZFVybENzdjoiZG93bmxvYWRVcmxDc3YiLGRvd25sb2FkVXJsSnNvbjoiZG93bmxvYWRVcmxKc29uIn0sb3V0cHV0czp7cnVuU2VsZWN0ZWQ6InJ1blNlbGVjdGVkIn0sZGVjbHM6Myx2YXJzOjIsY29uc3RzOltbNCwibmdJZiIsIm5nSWZFbHNlIl0sWyJub0NhcmRNZXRhZGF0YSIsIiJdLFsiZGF0YU5hbWUiLCIiXSxbNCwibmdUZW1wbGF0ZU91dGxldCJdLFsxLCJ0YWctbmFtZSIsMywidGl0bGUiXSxbImFwcGVhcmFuY2UiLCJmaWxsIiwxLCJydW4tc2VsZWN0b3IiXSxbIm1hdE5hdGl2ZUNvbnRyb2wiLCIiLCJuYW1lIiwicnVuIiwiY2RrRm9jdXNJbml0aWFsIiwiIiwicmVxdWlyZWQiLCIiLDMsInZhbHVlIiwiY2hhbmdlIl0sWyJzZWxlY3RlZCIsIiIsMywidmFsdWUiXSxbMywidmFsdWUiLDQsIm5nRm9yIiwibmdGb3JPZiJdLFsxLCJkb3dubG9hZC1jb250cm9scyJdLFsibWF0LXN0cm9rZWQtYnV0dG9uIiwiIiwzLCJkaXNhYmxlZCIsImRvd25sb2FkIl0sWyJhbGlnbiIsImVuZCJdLFsibWF0LWJ1dHRvbiIsIiIsIm1hdC1kaWFsb2ctY2xvc2UiLCIiXSxbMywibmdTd2l0Y2giXSxbNCwibmdTd2l0Y2hDYXNlIl0sWzQsIk5nU3dpdGNoRGVmYXVsdCJdLFszLCJ2YWx1ZSJdXSx0ZW1wbGF0ZTpmdW5jdGlvbiB0KG4sZSl7aWYoMSZuJiYoWWcoMCxKJCwzMCwxMiwibmctY29udGFpbmVyIiwwKSxZZygxLFEkLDEsMCwibmctdGVtcGxhdGUiLG51bGwsMSxLZikpLDImbil7Y29uc3QgdD1xZygyKTtKZygibmdJZiIsZS5jYXJkTWV0YWRhdGEpKCJuZ0lmRWxzZSIsdCl9fSxkaXJlY3RpdmVzOltXTSx0TyxfQixfRixzRixQVixyTCxsTCxqTSxhQSxDQixlQSxmQixaTSxYTV0sc3R5bGVzOlsnLm1hdC1iYWRnZS1jb250ZW50W19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXdlaWdodDo2MDA7Zm9udC1zaXplOjEycHg7Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmfS5tYXQtYmFkZ2Utc21hbGxbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1iYWRnZS1jb250ZW50W19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6OXB4fS5tYXQtYmFkZ2UtbGFyZ2VbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1iYWRnZS1jb250ZW50W19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MjRweH0ubWF0LWgxW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1oZWFkbGluZVtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdHlwb2dyYXBoeVtfbmdjb250ZW50LSVDT01QJV0gICBoMVtfbmdjb250ZW50LSVDT01QJV17Zm9udDo0MDAgMjRweC8zMnB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtsZXR0ZXItc3BhY2luZzpub3JtYWw7bWFyZ2luOjAgMCAxNnB4fS5tYXQtaDJbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXRpdGxlW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10eXBvZ3JhcGh5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIGgyW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250OjUwMCAyMHB4LzMycHggUm9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2xldHRlci1zcGFjaW5nOm5vcm1hbDttYXJnaW46MCAwIDE2cHh9Lm1hdC1oM1tfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtc3ViaGVhZGluZy0yW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10eXBvZ3JhcGh5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIGgzW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250OjQwMCAxNnB4LzI4cHggUm9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2xldHRlci1zcGFjaW5nOm5vcm1hbDttYXJnaW46MCAwIDE2cHh9Lm1hdC1oNFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtc3ViaGVhZGluZy0xW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10eXBvZ3JhcGh5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIGg0W19uZ2NvbnRlbnQtJUNPTVAlXXtmb250OjQwMCAxNXB4LzI0cHggUm9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2xldHRlci1zcGFjaW5nOm5vcm1hbDttYXJnaW46MCAwIDE2cHh9Lm1hdC1oNVtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdHlwb2dyYXBoeVtfbmdjb250ZW50LSVDT01QJV0gICBoNVtfbmdjb250ZW50LSVDT01QJV17Zm9udDo0MDAgY2FsYygxNHB4ICogMC44MykvMjBweCBSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7bWFyZ2luOjAgMCAxMnB4fS5tYXQtaDZbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXR5cG9ncmFwaHlbX25nY29udGVudC0lQ09NUCVdICAgaDZbX25nY29udGVudC0lQ09NUCVde2ZvbnQ6NDAwIGNhbGMoMTRweCAqIDAuNjcpLzIwcHggUm9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO21hcmdpbjowIDAgMTJweH0ubWF0LWJvZHktc3Ryb25nW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1ib2R5LTJbX25nY29udGVudC0lQ09NUCVde2ZvbnQ6NTAwIDE0cHgvMjRweCBSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7bGV0dGVyLXNwYWNpbmc6bm9ybWFsfS5tYXQtYm9keVtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtYm9keS0xW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10eXBvZ3JhcGh5W19uZ2NvbnRlbnQtJUNPTVAlXXtmb250OjQwMCAxNHB4LzIwcHggUm9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2xldHRlci1zcGFjaW5nOm5vcm1hbH0ubWF0LWJvZHlbX25nY29udGVudC0lQ09NUCVdICAgcFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtYm9keS0xW19uZ2NvbnRlbnQtJUNPTVAlXSAgIHBbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXR5cG9ncmFwaHlbX25nY29udGVudC0lQ09NUCVdICAgcFtfbmdjb250ZW50LSVDT01QJV17bWFyZ2luOjAgMCAxMnB4fS5tYXQtc21hbGxbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWNhcHRpb25bX25nY29udGVudC0lQ09NUCVde2ZvbnQ6NDAwIDEycHgvMjBweCBSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7bGV0dGVyLXNwYWNpbmc6bm9ybWFsfS5tYXQtZGlzcGxheS00W19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10eXBvZ3JhcGh5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZGlzcGxheS00W19uZ2NvbnRlbnQtJUNPTVAlXXtmb250OjMwMCAxMTJweC8xMTJweCBSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7bGV0dGVyLXNwYWNpbmc6LTAuMDVlbTttYXJnaW46MCAwIDU2cHh9Lm1hdC1kaXNwbGF5LTNbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXR5cG9ncmFwaHlbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1kaXNwbGF5LTNbX25nY29udGVudC0lQ09NUCVde2ZvbnQ6NDAwIDU2cHgvNTZweCBSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7bGV0dGVyLXNwYWNpbmc6LTAuMDJlbTttYXJnaW46MCAwIDY0cHh9Lm1hdC1kaXNwbGF5LTJbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXR5cG9ncmFwaHlbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1kaXNwbGF5LTJbX25nY29udGVudC0lQ09NUCVde2ZvbnQ6NDAwIDQ1cHgvNDhweCBSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7bGV0dGVyLXNwYWNpbmc6LTAuMDA1ZW07bWFyZ2luOjAgMCA2NHB4fS5tYXQtZGlzcGxheS0xW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10eXBvZ3JhcGh5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZGlzcGxheS0xW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250OjQwMCAzNHB4LzQwcHggUm9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2xldHRlci1zcGFjaW5nOm5vcm1hbDttYXJnaW46MCAwIDY0cHh9Lm1hdC1ib3R0b20tc2hlZXQtY29udGFpbmVyW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250OjQwMCAxNHB4LzIwcHggUm9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2xldHRlci1zcGFjaW5nOm5vcm1hbH0ubWF0LWJ1dHRvbltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtcmFpc2VkLWJ1dHRvbltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtaWNvbi1idXR0b25bX25nY29udGVudC0lQ09NUCVdLCAubWF0LXN0cm9rZWQtYnV0dG9uW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1mbGF0LWJ1dHRvbltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtZmFiW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1taW5pLWZhYltfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2ZvbnQtc2l6ZToxNHB4O2ZvbnQtd2VpZ2h0OjUwMH0ubWF0LWJ1dHRvbi10b2dnbGVbX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZn0ubWF0LWNhcmRbX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZn0ubWF0LWNhcmQtdGl0bGVbX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToyNHB4O2ZvbnQtd2VpZ2h0OjUwMH0ubWF0LWNhcmQtaGVhZGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtY2FyZC10aXRsZVtfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjIwcHh9Lm1hdC1jYXJkLXN1YnRpdGxlW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1jYXJkLWNvbnRlbnRbX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToxNHB4fS5tYXQtY2hlY2tib3hbX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZn0ubWF0LWNoZWNrYm94LWxheW91dFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWNoZWNrYm94LWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXtsaW5lLWhlaWdodDoyNHB4fS5tYXQtY2hpcFtfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjE0cHg7Zm9udC13ZWlnaHQ6NTAwfS5tYXQtY2hpcFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWNoaXAtdHJhaWxpbmctaWNvbi5tYXQtaWNvbltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtY2hpcFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWNoaXAtcmVtb3ZlLm1hdC1pY29uW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MThweH0ubWF0LXRhYmxlW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWZ9Lm1hdC1oZWFkZXItY2VsbFtfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjEycHg7Zm9udC13ZWlnaHQ6NTAwfS5tYXQtY2VsbFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtZm9vdGVyLWNlbGxbX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToxNHB4fS5tYXQtY2FsZW5kYXJbX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZn0ubWF0LWNhbGVuZGFyLWJvZHlbX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToxM3B4fS5tYXQtY2FsZW5kYXItYm9keS1sYWJlbFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtY2FsZW5kYXItcGVyaW9kLWJ1dHRvbltfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjE0cHg7Zm9udC13ZWlnaHQ6NTAwfS5tYXQtY2FsZW5kYXItdGFibGUtaGVhZGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIHRoW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MTFweDtmb250LXdlaWdodDo0MDB9Lm1hdC1kaWFsb2ctdGl0bGVbX25nY29udGVudC0lQ09NUCVde2ZvbnQ6NTAwIDIwcHgvMzJweCBSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7bGV0dGVyLXNwYWNpbmc6bm9ybWFsfS5tYXQtZXhwYW5zaW9uLXBhbmVsLWhlYWRlcltfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2ZvbnQtc2l6ZToxNXB4O2ZvbnQtd2VpZ2h0OjQwMH0ubWF0LWV4cGFuc2lvbi1wYW5lbC1jb250ZW50W19uZ2NvbnRlbnQtJUNPTVAlXXtmb250OjQwMCAxNHB4LzIwcHggUm9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2xldHRlci1zcGFjaW5nOm5vcm1hbH0ubWF0LWZvcm0tZmllbGRbX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZTppbmhlcml0O2ZvbnQtd2VpZ2h0OjQwMDtsaW5lLWhlaWdodDoxLjEyNTtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7bGV0dGVyLXNwYWNpbmc6bm9ybWFsfS5tYXQtZm9ybS1maWVsZC13cmFwcGVyW19uZ2NvbnRlbnQtJUNPTVAlXXtwYWRkaW5nLWJvdHRvbToxLjM0Mzc1ZW19Lm1hdC1mb3JtLWZpZWxkLXByZWZpeFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWljb25bX25nY29udGVudC0lQ09NUCVdLCAubWF0LWZvcm0tZmllbGQtc3VmZml4W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaWNvbltfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjE1MCU7bGluZS1oZWlnaHQ6MS4xMjV9Lm1hdC1mb3JtLWZpZWxkLXByZWZpeFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWljb24tYnV0dG9uW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1mb3JtLWZpZWxkLXN1ZmZpeFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWljb24tYnV0dG9uW19uZ2NvbnRlbnQtJUNPTVAlXXtoZWlnaHQ6MS41ZW07d2lkdGg6MS41ZW19Lm1hdC1mb3JtLWZpZWxkLXByZWZpeFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWljb24tYnV0dG9uW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaWNvbltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtZm9ybS1maWVsZC1zdWZmaXhbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pY29uLWJ1dHRvbltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWljb25bX25nY29udGVudC0lQ09NUCVde2hlaWdodDoxLjEyNWVtO2xpbmUtaGVpZ2h0OjEuMTI1fS5tYXQtZm9ybS1maWVsZC1pbmZpeFtfbmdjb250ZW50LSVDT01QJV17cGFkZGluZzouNWVtIDA7Ym9yZGVyLXRvcDouODQzNzVlbSBzb2xpZCB0cmFuc3BhcmVudH0ubWF0LWZvcm0tZmllbGQtY2FuLWZsb2F0Lm1hdC1mb3JtLWZpZWxkLXNob3VsZC1mbG9hdFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWZvcm0tZmllbGQtY2FuLWZsb2F0W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaW5wdXQtc2VydmVyW19uZ2NvbnRlbnQtJUNPTVAlXTpmb2N1cyArIC5tYXQtZm9ybS1maWVsZC1sYWJlbC13cmFwcGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17dHJhbnNmb3JtOnRyYW5zbGF0ZVkoLTEuMzQzNzVlbSkgc2NhbGUoMC43NSk7d2lkdGg6MTMzLjMzMzMzMzMzMzMlfS5tYXQtZm9ybS1maWVsZC1jYW4tZmxvYXRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pbnB1dC1zZXJ2ZXJbbGFiZWxdW19uZ2NvbnRlbnQtJUNPTVAlXTpub3QoOmxhYmVsLXNob3duKSArIC5tYXQtZm9ybS1maWVsZC1sYWJlbC13cmFwcGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17dHJhbnNmb3JtOnRyYW5zbGF0ZVkoLTEuMzQzNzRlbSkgc2NhbGUoMC43NSk7d2lkdGg6MTMzLjMzMzM0MzMzMzMlfS5tYXQtZm9ybS1maWVsZC1sYWJlbC13cmFwcGVyW19uZ2NvbnRlbnQtJUNPTVAlXXt0b3A6LTAuODQzNzVlbTtwYWRkaW5nLXRvcDouODQzNzVlbX0ubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVde3RvcDoxLjM0Mzc1ZW19Lm1hdC1mb3JtLWZpZWxkLXVuZGVybGluZVtfbmdjb250ZW50LSVDT01QJV17Ym90dG9tOjEuMzQzNzVlbX0ubWF0LWZvcm0tZmllbGQtc3Vic2NyaXB0LXdyYXBwZXJbX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZTo3NSU7bWFyZ2luLXRvcDouNjY2NjY2NjY2N2VtO3RvcDpjYWxjKDEwMCUgLSAxLjc5MTY2NjY2NjdlbSl9Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtbGVnYWN5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC13cmFwcGVyW19uZ2NvbnRlbnQtJUNPTVAlXXtwYWRkaW5nLWJvdHRvbToxLjI1ZW19Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtbGVnYWN5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1pbmZpeFtfbmdjb250ZW50LSVDT01QJV17cGFkZGluZzouNDM3NWVtIDB9Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtbGVnYWN5Lm1hdC1mb3JtLWZpZWxkLWNhbi1mbG9hdC5tYXQtZm9ybS1maWVsZC1zaG91bGQtZmxvYXRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtbGVnYWN5Lm1hdC1mb3JtLWZpZWxkLWNhbi1mbG9hdFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWlucHV0LXNlcnZlcltfbmdjb250ZW50LSVDT01QJV06Zm9jdXMgKyAubWF0LWZvcm0tZmllbGQtbGFiZWwtd3JhcHBlcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVde3RyYW5zZm9ybTp0cmFuc2xhdGVZKC0xLjI4MTI1ZW0pIHNjYWxlKDAuNzUpIHBlcnNwZWN0aXZlKDEwMHB4KSB0cmFuc2xhdGVaKDAuMDAxcHgpOy1tcy10cmFuc2Zvcm06dHJhbnNsYXRlWSgtMS4yODEyNWVtKSBzY2FsZSgwLjc1KTt3aWR0aDoxMzMuMzMzMzMzMzMzMyV9Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtbGVnYWN5Lm1hdC1mb3JtLWZpZWxkLWNhbi1mbG9hdFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtYXV0b2ZpbGwtY29udHJvbFtfbmdjb250ZW50LSVDT01QJV06LXdlYmtpdC1hdXRvZmlsbCArIC5tYXQtZm9ybS1maWVsZC1sYWJlbC13cmFwcGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17dHJhbnNmb3JtOnRyYW5zbGF0ZVkoLTEuMjgxMjVlbSkgc2NhbGUoMC43NSkgcGVyc3BlY3RpdmUoMTAwcHgpIHRyYW5zbGF0ZVooMC4wMDEwMXB4KTstbXMtdHJhbnNmb3JtOnRyYW5zbGF0ZVkoLTEuMjgxMjRlbSkgc2NhbGUoMC43NSk7d2lkdGg6MTMzLjMzMzM0MzMzMzMlfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWxlZ2FjeS5tYXQtZm9ybS1maWVsZC1jYW4tZmxvYXRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pbnB1dC1zZXJ2ZXJbbGFiZWxdW19uZ2NvbnRlbnQtJUNPTVAlXTpub3QoOmxhYmVsLXNob3duKSArIC5tYXQtZm9ybS1maWVsZC1sYWJlbC13cmFwcGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17dHJhbnNmb3JtOnRyYW5zbGF0ZVkoLTEuMjgxMjVlbSkgc2NhbGUoMC43NSkgcGVyc3BlY3RpdmUoMTAwcHgpIHRyYW5zbGF0ZVooMC4wMDEwMnB4KTstbXMtdHJhbnNmb3JtOnRyYW5zbGF0ZVkoLTEuMjgxMjNlbSkgc2NhbGUoMC43NSk7d2lkdGg6MTMzLjMzMzM1MzMzMzMlfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWxlZ2FjeVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVde3RvcDoxLjI4MTI1ZW19Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtbGVnYWN5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC11bmRlcmxpbmVbX25nY29udGVudC0lQ09NUCVde2JvdHRvbToxLjI1ZW19Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtbGVnYWN5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1zdWJzY3JpcHQtd3JhcHBlcltfbmdjb250ZW50LSVDT01QJV17bWFyZ2luLXRvcDouNTQxNjY2NjY2N2VtO3RvcDpjYWxjKDEwMCUgLSAxLjY2NjY2NjY2NjdlbSl9QG1lZGlhIHByaW50ey5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWxlZ2FjeS5tYXQtZm9ybS1maWVsZC1jYW4tZmxvYXQubWF0LWZvcm0tZmllbGQtc2hvdWxkLWZsb2F0W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWxlZ2FjeS5tYXQtZm9ybS1maWVsZC1jYW4tZmxvYXRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pbnB1dC1zZXJ2ZXJbX25nY29udGVudC0lQ09NUCVdOmZvY3VzICsgLm1hdC1mb3JtLWZpZWxkLWxhYmVsLXdyYXBwZXJbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXt0cmFuc2Zvcm06dHJhbnNsYXRlWSgtMS4yODEyMmVtKSBzY2FsZSgwLjc1KX0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1sZWdhY3kubWF0LWZvcm0tZmllbGQtY2FuLWZsb2F0W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1hdXRvZmlsbC1jb250cm9sW19uZ2NvbnRlbnQtJUNPTVAlXTotd2Via2l0LWF1dG9maWxsICsgLm1hdC1mb3JtLWZpZWxkLWxhYmVsLXdyYXBwZXJbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXt0cmFuc2Zvcm06dHJhbnNsYXRlWSgtMS4yODEyMWVtKSBzY2FsZSgwLjc1KX0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1sZWdhY3kubWF0LWZvcm0tZmllbGQtY2FuLWZsb2F0W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaW5wdXQtc2VydmVyW2xhYmVsXVtfbmdjb250ZW50LSVDT01QJV06bm90KDpsYWJlbC1zaG93bikgKyAubWF0LWZvcm0tZmllbGQtbGFiZWwtd3JhcHBlcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVde3RyYW5zZm9ybTp0cmFuc2xhdGVZKC0xLjI4MTJlbSkgc2NhbGUoMC43NSl9fS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWZpbGxbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWluZml4W19uZ2NvbnRlbnQtJUNPTVAlXXtwYWRkaW5nOi4yNWVtIDAgLjc1ZW0gMH0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1maWxsW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17dG9wOjEuMDkzNzVlbTttYXJnaW4tdG9wOi0wLjVlbX0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1maWxsLm1hdC1mb3JtLWZpZWxkLWNhbi1mbG9hdC5tYXQtZm9ybS1maWVsZC1zaG91bGQtZmxvYXRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtZmlsbC5tYXQtZm9ybS1maWVsZC1jYW4tZmxvYXRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pbnB1dC1zZXJ2ZXJbX25nY29udGVudC0lQ09NUCVdOmZvY3VzICsgLm1hdC1mb3JtLWZpZWxkLWxhYmVsLXdyYXBwZXJbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXt0cmFuc2Zvcm06dHJhbnNsYXRlWSgtMC41OTM3NWVtKSBzY2FsZSgwLjc1KTt3aWR0aDoxMzMuMzMzMzMzMzMzMyV9Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtZmlsbC5tYXQtZm9ybS1maWVsZC1jYW4tZmxvYXRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pbnB1dC1zZXJ2ZXJbbGFiZWxdW19uZ2NvbnRlbnQtJUNPTVAlXTpub3QoOmxhYmVsLXNob3duKSArIC5tYXQtZm9ybS1maWVsZC1sYWJlbC13cmFwcGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17dHJhbnNmb3JtOnRyYW5zbGF0ZVkoLTAuNTkzNzRlbSkgc2NhbGUoMC43NSk7d2lkdGg6MTMzLjMzMzM0MzMzMzMlfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLW91dGxpbmVbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWluZml4W19uZ2NvbnRlbnQtJUNPTVAlXXtwYWRkaW5nOjFlbSAwIDFlbSAwfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLW91dGxpbmVbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXt0b3A6MS44NDM3NWVtO21hcmdpbi10b3A6LTAuMjVlbX0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1vdXRsaW5lLm1hdC1mb3JtLWZpZWxkLWNhbi1mbG9hdC5tYXQtZm9ybS1maWVsZC1zaG91bGQtZmxvYXRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2Utb3V0bGluZS5tYXQtZm9ybS1maWVsZC1jYW4tZmxvYXRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pbnB1dC1zZXJ2ZXJbX25nY29udGVudC0lQ09NUCVdOmZvY3VzICsgLm1hdC1mb3JtLWZpZWxkLWxhYmVsLXdyYXBwZXJbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXt0cmFuc2Zvcm06dHJhbnNsYXRlWSgtMS41OTM3NWVtKSBzY2FsZSgwLjc1KTt3aWR0aDoxMzMuMzMzMzMzMzMzMyV9Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2Utb3V0bGluZS5tYXQtZm9ybS1maWVsZC1jYW4tZmxvYXRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pbnB1dC1zZXJ2ZXJbbGFiZWxdW19uZ2NvbnRlbnQtJUNPTVAlXTpub3QoOmxhYmVsLXNob3duKSArIC5tYXQtZm9ybS1maWVsZC1sYWJlbC13cmFwcGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17dHJhbnNmb3JtOnRyYW5zbGF0ZVkoLTEuNTkzNzRlbSkgc2NhbGUoMC43NSk7d2lkdGg6MTMzLjMzMzM0MzMzMzMlfS5tYXQtZ3JpZC10aWxlLWhlYWRlcltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtZ3JpZC10aWxlLWZvb3Rlcltfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjE0cHh9Lm1hdC1ncmlkLXRpbGUtaGVhZGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGluZVtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtZ3JpZC10aWxlLWZvb3Rlcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpbmVbX25nY29udGVudC0lQ09NUCVde3doaXRlLXNwYWNlOm5vd3JhcDtvdmVyZmxvdzpoaWRkZW47dGV4dC1vdmVyZmxvdzplbGxpcHNpcztkaXNwbGF5OmJsb2NrO2JveC1zaXppbmc6Ym9yZGVyLWJveH0ubWF0LWdyaWQtdGlsZS1oZWFkZXJbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saW5lW19uZ2NvbnRlbnQtJUNPTVAlXTpudGgtY2hpbGQobisyKSwgLm1hdC1ncmlkLXRpbGUtZm9vdGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGluZVtfbmdjb250ZW50LSVDT01QJV06bnRoLWNoaWxkKG4rMil7Zm9udC1zaXplOjEycHh9aW5wdXQubWF0LWlucHV0LWVsZW1lbnRbX25nY29udGVudC0lQ09NUCVde21hcmdpbi10b3A6LTAuMDYyNWVtfS5tYXQtbWVudS1pdGVtW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7Zm9udC1zaXplOjE0cHg7Zm9udC13ZWlnaHQ6NDAwfS5tYXQtcGFnaW5hdG9yW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1wYWdpbmF0b3ItcGFnZS1zaXplW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtc2VsZWN0LXRyaWdnZXJbX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtmb250LXNpemU6MTJweH0ubWF0LXJhZGlvLWJ1dHRvbltfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmfS5tYXQtc2VsZWN0W19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWZ9Lm1hdC1zZWxlY3QtdHJpZ2dlcltfbmdjb250ZW50LSVDT01QJV17aGVpZ2h0OjEuMTI1ZW19Lm1hdC1zbGlkZS10b2dnbGUtY29udGVudFtfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmfS5tYXQtc2xpZGVyLXRodW1iLWxhYmVsLXRleHRbX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtmb250LXNpemU6MTJweDtmb250LXdlaWdodDo1MDB9Lm1hdC1zdGVwcGVyLXZlcnRpY2FsW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1zdGVwcGVyLWhvcml6b250YWxbX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZn0ubWF0LXN0ZXAtbGFiZWxbX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToxNHB4O2ZvbnQtd2VpZ2h0OjQwMH0ubWF0LXN0ZXAtc3ViLWxhYmVsLWVycm9yW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXdlaWdodDpub3JtYWx9Lm1hdC1zdGVwLWxhYmVsLWVycm9yW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MTRweH0ubWF0LXN0ZXAtbGFiZWwtc2VsZWN0ZWRbX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToxNHB4O2ZvbnQtd2VpZ2h0OjUwMH0ubWF0LXRhYi1ncm91cFtfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmfS5tYXQtdGFiLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10YWItbGlua1tfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2ZvbnQtc2l6ZToxNHB4O2ZvbnQtd2VpZ2h0OjUwMH0ubWF0LXRvb2xiYXJbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXRvb2xiYXJbX25nY29udGVudC0lQ09NUCVdICAgaDFbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXRvb2xiYXJbX25nY29udGVudC0lQ09NUCVdICAgaDJbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXRvb2xiYXJbX25nY29udGVudC0lQ09NUCVdICAgaDNbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXRvb2xiYXJbX25nY29udGVudC0lQ09NUCVdICAgaDRbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXRvb2xiYXJbX25nY29udGVudC0lQ09NUCVdICAgaDVbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXRvb2xiYXJbX25nY29udGVudC0lQ09NUCVdICAgaDZbX25nY29udGVudC0lQ09NUCVde2ZvbnQ6NTAwIDIwcHgvMzJweCBSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7bGV0dGVyLXNwYWNpbmc6bm9ybWFsO21hcmdpbjowfS5tYXQtdG9vbHRpcFtfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2ZvbnQtc2l6ZToxMHB4O3BhZGRpbmctdG9wOjZweDtwYWRkaW5nLWJvdHRvbTo2cHh9Lm1hdC10b29sdGlwLWhhbmRzZXRbX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToxNHB4O3BhZGRpbmctdG9wOjhweDtwYWRkaW5nLWJvdHRvbTo4cHh9Lm1hdC1saXN0LWl0ZW1bX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZn0ubWF0LWxpc3Qtb3B0aW9uW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWZ9Lm1hdC1saXN0LWJhc2VbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saXN0LWl0ZW1bX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToxNnB4fS5tYXQtbGlzdC1iYXNlW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGlzdC1pdGVtW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGluZVtfbmdjb250ZW50LSVDT01QJV17d2hpdGUtc3BhY2U6bm93cmFwO292ZXJmbG93OmhpZGRlbjt0ZXh0LW92ZXJmbG93OmVsbGlwc2lzO2Rpc3BsYXk6YmxvY2s7Ym94LXNpemluZzpib3JkZXItYm94fS5tYXQtbGlzdC1iYXNlW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGlzdC1pdGVtW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGluZVtfbmdjb250ZW50LSVDT01QJV06bnRoLWNoaWxkKG4rMil7Zm9udC1zaXplOjE0cHh9Lm1hdC1saXN0LWJhc2VbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saXN0LW9wdGlvbltfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjE2cHh9Lm1hdC1saXN0LWJhc2VbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saXN0LW9wdGlvbltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpbmVbX25nY29udGVudC0lQ09NUCVde3doaXRlLXNwYWNlOm5vd3JhcDtvdmVyZmxvdzpoaWRkZW47dGV4dC1vdmVyZmxvdzplbGxpcHNpcztkaXNwbGF5OmJsb2NrO2JveC1zaXppbmc6Ym9yZGVyLWJveH0ubWF0LWxpc3QtYmFzZVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpc3Qtb3B0aW9uW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGluZVtfbmdjb250ZW50LSVDT01QJV06bnRoLWNoaWxkKG4rMil7Zm9udC1zaXplOjE0cHh9Lm1hdC1saXN0LWJhc2VbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1zdWJoZWFkZXJbX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtmb250LXNpemU6MTRweDtmb250LXdlaWdodDo1MDB9Lm1hdC1saXN0LWJhc2VbZGVuc2VdW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGlzdC1pdGVtW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MTJweH0ubWF0LWxpc3QtYmFzZVtkZW5zZV1bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saXN0LWl0ZW1bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saW5lW19uZ2NvbnRlbnQtJUNPTVAlXXt3aGl0ZS1zcGFjZTpub3dyYXA7b3ZlcmZsb3c6aGlkZGVuO3RleHQtb3ZlcmZsb3c6ZWxsaXBzaXM7ZGlzcGxheTpibG9jaztib3gtc2l6aW5nOmJvcmRlci1ib3h9Lm1hdC1saXN0LWJhc2VbZGVuc2VdW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGlzdC1pdGVtW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGluZVtfbmdjb250ZW50LSVDT01QJV06bnRoLWNoaWxkKG4rMil7Zm9udC1zaXplOjEycHh9Lm1hdC1saXN0LWJhc2VbZGVuc2VdW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGlzdC1vcHRpb25bX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToxMnB4fS5tYXQtbGlzdC1iYXNlW2RlbnNlXVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpc3Qtb3B0aW9uW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGluZVtfbmdjb250ZW50LSVDT01QJV17d2hpdGUtc3BhY2U6bm93cmFwO292ZXJmbG93OmhpZGRlbjt0ZXh0LW92ZXJmbG93OmVsbGlwc2lzO2Rpc3BsYXk6YmxvY2s7Ym94LXNpemluZzpib3JkZXItYm94fS5tYXQtbGlzdC1iYXNlW2RlbnNlXVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpc3Qtb3B0aW9uW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGluZVtfbmdjb250ZW50LSVDT01QJV06bnRoLWNoaWxkKG4rMil7Zm9udC1zaXplOjEycHh9Lm1hdC1saXN0LWJhc2VbZGVuc2VdW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtc3ViaGVhZGVyW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7Zm9udC1zaXplOjEycHg7Zm9udC13ZWlnaHQ6NTAwfS5tYXQtb3B0aW9uW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7Zm9udC1zaXplOjE2cHh9Lm1hdC1vcHRncm91cC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17Zm9udDo1MDAgMTRweC8yNHB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtsZXR0ZXItc3BhY2luZzpub3JtYWx9Lm1hdC1zaW1wbGUtc25hY2tiYXJbX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtmb250LXNpemU6MTRweH0ubWF0LXNpbXBsZS1zbmFja2Jhci1hY3Rpb25bX25nY29udGVudC0lQ09NUCVde2xpbmUtaGVpZ2h0OjE7Zm9udC1mYW1pbHk6aW5oZXJpdDtmb250LXNpemU6aW5oZXJpdDtmb250LXdlaWdodDo1MDB9Lm1hdC10cmVlW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWZ9Lm1hdC10cmVlLW5vZGVbX25nY29udGVudC0lQ09NUCVdLCAubWF0LW5lc3RlZC10cmVlLW5vZGVbX25nY29udGVudC0lQ09NUCVde2ZvbnQtd2VpZ2h0OjQwMDtmb250LXNpemU6MTRweH0ubWF0LXJpcHBsZVtfbmdjb250ZW50LSVDT01QJV17b3ZlcmZsb3c6aGlkZGVuO3Bvc2l0aW9uOnJlbGF0aXZlfS5tYXQtcmlwcGxlW19uZ2NvbnRlbnQtJUNPTVAlXTpub3QoOmVtcHR5KXt0cmFuc2Zvcm06dHJhbnNsYXRlWigwKX0ubWF0LXJpcHBsZS5tYXQtcmlwcGxlLXVuYm91bmRlZFtfbmdjb250ZW50LSVDT01QJV17b3ZlcmZsb3c6dmlzaWJsZX0ubWF0LXJpcHBsZS1lbGVtZW50W19uZ2NvbnRlbnQtJUNPTVAlXXtwb3NpdGlvbjphYnNvbHV0ZTtib3JkZXItcmFkaXVzOjUwJTtwb2ludGVyLWV2ZW50czpub25lO3RyYW5zaXRpb246b3BhY2l0eSx0cmFuc2Zvcm0gMG1zIGN1YmljLWJlemllcigwLCAwLCAwLjIsIDEpO3RyYW5zZm9ybTpzY2FsZSgwKX0uY2RrLWhpZ2gtY29udHJhc3QtYWN0aXZlW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtcmlwcGxlLWVsZW1lbnRbX25nY29udGVudC0lQ09NUCVde2Rpc3BsYXk6bm9uZX0uY2RrLXZpc3VhbGx5LWhpZGRlbltfbmdjb250ZW50LSVDT01QJV17Ym9yZGVyOjA7Y2xpcDpyZWN0KDAgMCAwIDApO2hlaWdodDoxcHg7bWFyZ2luOi0xcHg7b3ZlcmZsb3c6aGlkZGVuO3BhZGRpbmc6MDtwb3NpdGlvbjphYnNvbHV0ZTt3aWR0aDoxcHg7b3V0bGluZTowOy13ZWJraXQtYXBwZWFyYW5jZTpub25lOy1tb3otYXBwZWFyYW5jZTpub25lfS5jZGstb3ZlcmxheS1jb250YWluZXJbX25nY29udGVudC0lQ09NUCVdLCAuY2RrLWdsb2JhbC1vdmVybGF5LXdyYXBwZXJbX25nY29udGVudC0lQ09NUCVde3BvaW50ZXItZXZlbnRzOm5vbmU7dG9wOjA7bGVmdDowO2hlaWdodDoxMDAlO3dpZHRoOjEwMCV9LmNkay1vdmVybGF5LWNvbnRhaW5lcltfbmdjb250ZW50LSVDT01QJV17cG9zaXRpb246Zml4ZWQ7ei1pbmRleDoxMDAwfS5jZGstb3ZlcmxheS1jb250YWluZXJbX25nY29udGVudC0lQ09NUCVdOmVtcHR5e2Rpc3BsYXk6bm9uZX0uY2RrLWdsb2JhbC1vdmVybGF5LXdyYXBwZXJbX25nY29udGVudC0lQ09NUCVde2Rpc3BsYXk6ZmxleDtwb3NpdGlvbjphYnNvbHV0ZTt6LWluZGV4OjEwMDB9LmNkay1vdmVybGF5LXBhbmVbX25nY29udGVudC0lQ09NUCVde3Bvc2l0aW9uOmFic29sdXRlO3BvaW50ZXItZXZlbnRzOmF1dG87Ym94LXNpemluZzpib3JkZXItYm94O3otaW5kZXg6MTAwMDtkaXNwbGF5OmZsZXg7bWF4LXdpZHRoOjEwMCU7bWF4LWhlaWdodDoxMDAlfS5jZGstb3ZlcmxheS1iYWNrZHJvcFtfbmdjb250ZW50LSVDT01QJV17cG9zaXRpb246YWJzb2x1dGU7dG9wOjA7Ym90dG9tOjA7bGVmdDowO3JpZ2h0OjA7ei1pbmRleDoxMDAwO3BvaW50ZXItZXZlbnRzOmF1dG87LXdlYmtpdC10YXAtaGlnaGxpZ2h0LWNvbG9yOnRyYW5zcGFyZW50O3RyYW5zaXRpb246b3BhY2l0eSA0MDBtcyBjdWJpYy1iZXppZXIoMC4yNSwgMC44LCAwLjI1LCAxKTtvcGFjaXR5OjB9LmNkay1vdmVybGF5LWJhY2tkcm9wLmNkay1vdmVybGF5LWJhY2tkcm9wLXNob3dpbmdbX25nY29udGVudC0lQ09NUCVde29wYWNpdHk6MX1AbWVkaWEgc2NyZWVuIGFuZCAoLW1zLWhpZ2gtY29udHJhc3Q6IGFjdGl2ZSl7LmNkay1vdmVybGF5LWJhY2tkcm9wLmNkay1vdmVybGF5LWJhY2tkcm9wLXNob3dpbmdbX25nY29udGVudC0lQ09NUCVde29wYWNpdHk6LjZ9fS5jZGstb3ZlcmxheS1kYXJrLWJhY2tkcm9wW19uZ2NvbnRlbnQtJUNPTVAlXXtiYWNrZ3JvdW5kOnJnYmEoMCwwLDAsLjMyKX0uY2RrLW92ZXJsYXktdHJhbnNwYXJlbnQtYmFja2Ryb3BbX25nY29udGVudC0lQ09NUCVdLCAuY2RrLW92ZXJsYXktdHJhbnNwYXJlbnQtYmFja2Ryb3AuY2RrLW92ZXJsYXktYmFja2Ryb3Atc2hvd2luZ1tfbmdjb250ZW50LSVDT01QJV17b3BhY2l0eTowfS5jZGstb3ZlcmxheS1jb25uZWN0ZWQtcG9zaXRpb24tYm91bmRpbmctYm94W19uZ2NvbnRlbnQtJUNPTVAlXXtwb3NpdGlvbjphYnNvbHV0ZTt6LWluZGV4OjEwMDA7ZGlzcGxheTpmbGV4O2ZsZXgtZGlyZWN0aW9uOmNvbHVtbjttaW4td2lkdGg6MXB4O21pbi1oZWlnaHQ6MXB4fS5jZGstZ2xvYmFsLXNjcm9sbGJsb2NrW19uZ2NvbnRlbnQtJUNPTVAlXXtwb3NpdGlvbjpmaXhlZDt3aWR0aDoxMDAlO292ZXJmbG93LXk6c2Nyb2xsfUBrZXlmcmFtZXMgY2RrLXRleHQtZmllbGQtYXV0b2ZpbGwtc3RhcnR7fUBrZXlmcmFtZXMgY2RrLXRleHQtZmllbGQtYXV0b2ZpbGwtZW5ke30uY2RrLXRleHQtZmllbGQtYXV0b2ZpbGwtbW9uaXRvcmVkW19uZ2NvbnRlbnQtJUNPTVAlXTotd2Via2l0LWF1dG9maWxse2FuaW1hdGlvbjpjZGstdGV4dC1maWVsZC1hdXRvZmlsbC1zdGFydCAwcyAxbXN9LmNkay10ZXh0LWZpZWxkLWF1dG9maWxsLW1vbml0b3JlZFtfbmdjb250ZW50LSVDT01QJV06bm90KDotd2Via2l0LWF1dG9maWxsKXthbmltYXRpb246Y2RrLXRleHQtZmllbGQtYXV0b2ZpbGwtZW5kIDBzIDFtc310ZXh0YXJlYS5jZGstdGV4dGFyZWEtYXV0b3NpemVbX25nY29udGVudC0lQ09NUCVde3Jlc2l6ZTpub25lfXRleHRhcmVhLmNkay10ZXh0YXJlYS1hdXRvc2l6ZS1tZWFzdXJpbmdbX25nY29udGVudC0lQ09NUCVde3BhZGRpbmc6MnB4IDAgIWltcG9ydGFudDtib3gtc2l6aW5nOmNvbnRlbnQtYm94ICFpbXBvcnRhbnQ7aGVpZ2h0OmF1dG8gIWltcG9ydGFudDtvdmVyZmxvdzpoaWRkZW4gIWltcG9ydGFudH10ZXh0YXJlYS5jZGstdGV4dGFyZWEtYXV0b3NpemUtbWVhc3VyaW5nLWZpcmVmb3hbX25nY29udGVudC0lQ09NUCVde3BhZGRpbmc6MnB4IDAgIWltcG9ydGFudDtib3gtc2l6aW5nOmNvbnRlbnQtYm94ICFpbXBvcnRhbnQ7aGVpZ2h0OjAgIWltcG9ydGFudH0ubWF0LWZvY3VzLWluZGljYXRvcltfbmdjb250ZW50LSVDT01QJV17cG9zaXRpb246cmVsYXRpdmV9Lm1hdC1tZGMtZm9jdXMtaW5kaWNhdG9yW19uZ2NvbnRlbnQtJUNPTVAlXXtwb3NpdGlvbjpyZWxhdGl2ZX0ubWF0LXJpcHBsZS1lbGVtZW50W19uZ2NvbnRlbnQtJUNPTVAlXXtiYWNrZ3JvdW5kLWNvbG9yOnJnYmEoMCwwLDAsLjEpfS5tYXQtb3B0aW9uW19uZ2NvbnRlbnQtJUNPTVAlXXtjb2xvcjojMjEyMTIxfS5tYXQtb3B0aW9uW19uZ2NvbnRlbnQtJUNPTVAlXTpob3Zlcjpub3QoLm1hdC1vcHRpb24tZGlzYWJsZWQpLCAubWF0LW9wdGlvbltfbmdjb250ZW50LSVDT01QJV06Zm9jdXM6bm90KC5tYXQtb3B0aW9uLWRpc2FibGVkKXtiYWNrZ3JvdW5kOnJnYmEoMCwwLDAsLjA0KX0ubWF0LW9wdGlvbi5tYXQtc2VsZWN0ZWRbX25nY29udGVudC0lQ09NUCVdOm5vdCgubWF0LW9wdGlvbi1tdWx0aXBsZSk6bm90KC5tYXQtb3B0aW9uLWRpc2FibGVkKXtiYWNrZ3JvdW5kOnJnYmEoMCwwLDAsLjA0KX0ubWF0LW9wdGlvbi5tYXQtYWN0aXZlW19uZ2NvbnRlbnQtJUNPTVAlXXtiYWNrZ3JvdW5kOnJnYmEoMCwwLDAsLjA0KTtjb2xvcjojMjEyMTIxfS5tYXQtb3B0aW9uLm1hdC1vcHRpb24tZGlzYWJsZWRbX25nY29udGVudC0lQ09NUCVde2NvbG9yOnJnYmEoMCwwLDAsLjM4KX0ubWF0LXByaW1hcnlbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1vcHRpb24ubWF0LXNlbGVjdGVkW19uZ2NvbnRlbnQtJUNPTVAlXTpub3QoLm1hdC1vcHRpb24tZGlzYWJsZWQpe2NvbG9yOiNmNTdjMDB9Lm1hdC1hY2NlbnRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1vcHRpb24ubWF0LXNlbGVjdGVkW19uZ2NvbnRlbnQtJUNPTVAlXTpub3QoLm1hdC1vcHRpb24tZGlzYWJsZWQpe2NvbG9yOiNmZjk4MDB9Lm1hdC13YXJuW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtb3B0aW9uLm1hdC1zZWxlY3RlZFtfbmdjb250ZW50LSVDT01QJV06bm90KC5tYXQtb3B0aW9uLWRpc2FibGVkKXtjb2xvcjojZjQ0MzM2fS5tYXQtb3B0Z3JvdXAtbGFiZWxbX25nY29udGVudC0lQ09NUCVde2NvbG9yOiM2MTYxNjF9Lm1hdC1vcHRncm91cC1kaXNhYmxlZFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LW9wdGdyb3VwLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXtjb2xvcjpyZ2JhKDAsMCwwLC4zOCl9Lm1hdC1wc2V1ZG8tY2hlY2tib3hbX25nY29udGVudC0lQ09NUCVde2NvbG9yOiM2MTYxNjF9Lm1hdC1wc2V1ZG8tY2hlY2tib3hbX25nY29udGVudC0lQ09NUCVdOjphZnRlcntjb2xvcjojZmFmYWZhfS5tYXQtcHNldWRvLWNoZWNrYm94LWRpc2FibGVkW19uZ2NvbnRlbnQtJUNPTVAlXXtjb2xvcjojYjBiMGIwfS5tYXQtcHJpbWFyeVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXBzZXVkby1jaGVja2JveC1jaGVja2VkW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1wcmltYXJ5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtcHNldWRvLWNoZWNrYm94LWluZGV0ZXJtaW5hdGVbX25nY29udGVudC0lQ09NUCVde2JhY2tncm91bmQ6I2Y1N2MwMH0ubWF0LXBzZXVkby1jaGVja2JveC1jaGVja2VkW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1wc2V1ZG8tY2hlY2tib3gtaW5kZXRlcm1pbmF0ZVtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtYWNjZW50W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtcHNldWRvLWNoZWNrYm94LWNoZWNrZWRbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWFjY2VudFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXBzZXVkby1jaGVja2JveC1pbmRldGVybWluYXRlW19uZ2NvbnRlbnQtJUNPTVAlXXtiYWNrZ3JvdW5kOiNmZjk4MDB9Lm1hdC13YXJuW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtcHNldWRvLWNoZWNrYm94LWNoZWNrZWRbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXdhcm5bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1wc2V1ZG8tY2hlY2tib3gtaW5kZXRlcm1pbmF0ZVtfbmdjb250ZW50LSVDT01QJV17YmFja2dyb3VuZDojZjQ0MzM2fS5tYXQtcHNldWRvLWNoZWNrYm94LWNoZWNrZWQubWF0LXBzZXVkby1jaGVja2JveC1kaXNhYmxlZFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtcHNldWRvLWNoZWNrYm94LWluZGV0ZXJtaW5hdGUubWF0LXBzZXVkby1jaGVja2JveC1kaXNhYmxlZFtfbmdjb250ZW50LSVDT01QJV17YmFja2dyb3VuZDojYjBiMGIwfS5tYXQtYXBwLWJhY2tncm91bmRbX25nY29udGVudC0lQ09NUCVde2JhY2tncm91bmQtY29sb3I6I2ZhZmFmYTtjb2xvcjojMjEyMTIxfS5tYXQtZWxldmF0aW9uLXowW19uZ2NvbnRlbnQtJUNPTVAlXXtib3gtc2hhZG93OjBweCAwcHggMHB4IDBweCByZ2JhKDAsIDAsIDAsIDAuMiksMHB4IDBweCAwcHggMHB4IHJnYmEoMCwgMCwgMCwgMC4xNCksMHB4IDBweCAwcHggMHB4IHJnYmEoMCwgMCwgMCwgMC4xMil9Lm1hdC1lbGV2YXRpb24tejFbX25nY29udGVudC0lQ09NUCVde2JveC1zaGFkb3c6MHB4IDJweCAxcHggLTFweCByZ2JhKDAsIDAsIDAsIDAuMiksMHB4IDFweCAxcHggMHB4IHJnYmEoMCwgMCwgMCwgMC4xNCksMHB4IDFweCAzcHggMHB4IHJnYmEoMCwgMCwgMCwgMC4xMil9Lm1hdC1lbGV2YXRpb24tejJbX25nY29udGVudC0lQ09NUCVde2JveC1zaGFkb3c6MHB4IDNweCAxcHggLTJweCByZ2JhKDAsIDAsIDAsIDAuMiksMHB4IDJweCAycHggMHB4IHJnYmEoMCwgMCwgMCwgMC4xNCksMHB4IDFweCA1cHggMHB4IHJnYmEoMCwgMCwgMCwgMC4xMil9Lm1hdC1lbGV2YXRpb24tejNbX25nY29udGVudC0lQ09NUCVde2JveC1zaGFkb3c6MHB4IDNweCAzcHggLTJweCByZ2JhKDAsIDAsIDAsIDAuMiksMHB4IDNweCA0cHggMHB4IHJnYmEoMCwgMCwgMCwgMC4xNCksMHB4IDFweCA4cHggMHB4IHJnYmEoMCwgMCwgMCwgMC4xMil9Lm1hdC1lbGV2YXRpb24tejRbX25nY29udGVudC0lQ09NUCVde2JveC1zaGFkb3c6MHB4IDJweCA0cHggLTFweCByZ2JhKDAsIDAsIDAsIDAuMiksMHB4IDRweCA1cHggMHB4IHJnYmEoMCwgMCwgMCwgMC4xNCksMHB4IDFweCAxMHB4IDBweCByZ2JhKDAsIDAsIDAsIDAuMTIpfS5tYXQtZWxldmF0aW9uLXo1W19uZ2NvbnRlbnQtJUNPTVAlXXtib3gtc2hhZG93OjBweCAzcHggNXB4IC0xcHggcmdiYSgwLCAwLCAwLCAwLjIpLDBweCA1cHggOHB4IDBweCByZ2JhKDAsIDAsIDAsIDAuMTQpLDBweCAxcHggMTRweCAwcHggcmdiYSgwLCAwLCAwLCAwLjEyKX0ubWF0LWVsZXZhdGlvbi16Nltfbmdjb250ZW50LSVDT01QJV17Ym94LXNoYWRvdzowcHggM3B4IDVweCAtMXB4IHJnYmEoMCwgMCwgMCwgMC4yKSwwcHggNnB4IDEwcHggMHB4IHJnYmEoMCwgMCwgMCwgMC4xNCksMHB4IDFweCAxOHB4IDBweCByZ2JhKDAsIDAsIDAsIDAuMTIpfS5tYXQtZWxldmF0aW9uLXo3W19uZ2NvbnRlbnQtJUNPTVAlXXtib3gtc2hhZG93OjBweCA0cHggNXB4IC0ycHggcmdiYSgwLCAwLCAwLCAwLjIpLDBweCA3cHggMTBweCAxcHggcmdiYSgwLCAwLCAwLCAwLjE0KSwwcHggMnB4IDE2cHggMXB4IHJnYmEoMCwgMCwgMCwgMC4xMil9Lm1hdC1lbGV2YXRpb24tejhbX25nY29udGVudC0lQ09NUCVde2JveC1zaGFkb3c6MHB4IDVweCA1cHggLTNweCByZ2JhKDAsIDAsIDAsIDAuMiksMHB4IDhweCAxMHB4IDFweCByZ2JhKDAsIDAsIDAsIDAuMTQpLDBweCAzcHggMTRweCAycHggcmdiYSgwLCAwLCAwLCAwLjEyKX0ubWF0LWVsZXZhdGlvbi16OVtfbmdjb250ZW50LSVDT01QJV17Ym94LXNoYWRvdzowcHggNXB4IDZweCAtM3B4IHJnYmEoMCwgMCwgMCwgMC4yKSwwcHggOXB4IDEycHggMXB4IHJnYmEoMCwgMCwgMCwgMC4xNCksMHB4IDNweCAxNnB4IDJweCByZ2JhKDAsIDAsIDAsIDAuMTIpfS5tYXQtZWxldmF0aW9uLXoxMFtfbmdjb250ZW50LSVDT01QJV17Ym94LXNoYWRvdzowcHggNnB4IDZweCAtM3B4IHJnYmEoMCwgMCwgMCwgMC4yKSwwcHggMTBweCAxNHB4IDFweCByZ2JhKDAsIDAsIDAsIDAuMTQpLDBweCA0cHggMThweCAzcHggcmdiYSgwLCAwLCAwLCAwLjEyKX0ubWF0LWVsZXZhdGlvbi16MTFbX25nY29udGVudC0lQ09NUCVde2JveC1zaGFkb3c6MHB4IDZweCA3cHggLTRweCByZ2JhKDAsIDAsIDAsIDAuMiksMHB4IDExcHggMTVweCAxcHggcmdiYSgwLCAwLCAwLCAwLjE0KSwwcHggNHB4IDIwcHggM3B4IHJnYmEoMCwgMCwgMCwgMC4xMil9Lm1hdC1lbGV2YXRpb24tejEyW19uZ2NvbnRlbnQtJUNPTVAlXXtib3gtc2hhZG93OjBweCA3cHggOHB4IC00cHggcmdiYSgwLCAwLCAwLCAwLjIpLDBweCAxMnB4IDE3cHggMnB4IHJnYmEoMCwgMCwgMCwgMC4xNCksMHB4IDVweCAyMnB4IDRweCByZ2JhKDAsIDAsIDAsIDAuMTIpfS5tYXQtZWxldmF0aW9uLXoxM1tfbmdjb250ZW50LSVDT01QJV17Ym94LXNoYWRvdzowcHggN3B4IDhweCAtNHB4IHJnYmEoMCwgMCwgMCwgMC4yKSwwcHggMTNweCAxOXB4IDJweCByZ2JhKDAsIDAsIDAsIDAuMTQpLDBweCA1cHggMjRweCA0cHggcmdiYSgwLCAwLCAwLCAwLjEyKX0ubWF0LWVsZXZhdGlvbi16MTRbX25nY29udGVudC0lQ09NUCVde2JveC1zaGFkb3c6MHB4IDdweCA5cHggLTRweCByZ2JhKDAsIDAsIDAsIDAuMiksMHB4IDE0cHggMjFweCAycHggcmdiYSgwLCAwLCAwLCAwLjE0KSwwcHggNXB4IDI2cHggNHB4IHJnYmEoMCwgMCwgMCwgMC4xMil9Lm1hdC1lbGV2YXRpb24tejE1W19uZ2NvbnRlbnQtJUNPTVAlXXtib3gtc2hhZG93OjBweCA4cHggOXB4IC01cHggcmdiYSgwLCAwLCAwLCAwLjIpLDBweCAxNXB4IDIycHggMnB4IHJnYmEoMCwgMCwgMCwgMC4xNCksMHB4IDZweCAyOHB4IDVweCByZ2JhKDAsIDAsIDAsIDAuMTIpfS5tYXQtZWxldmF0aW9uLXoxNltfbmdjb250ZW50LSVDT01QJV17Ym94LXNoYWRvdzowcHggOHB4IDEwcHggLTVweCByZ2JhKDAsIDAsIDAsIDAuMiksMHB4IDE2cHggMjRweCAycHggcmdiYSgwLCAwLCAwLCAwLjE0KSwwcHggNnB4IDMwcHggNXB4IHJnYmEoMCwgMCwgMCwgMC4xMil9Lm1hdC1lbGV2YXRpb24tejE3W19uZ2NvbnRlbnQtJUNPTVAlXXtib3gtc2hhZG93OjBweCA4cHggMTFweCAtNXB4IHJnYmEoMCwgMCwgMCwgMC4yKSwwcHggMTdweCAyNnB4IDJweCByZ2JhKDAsIDAsIDAsIDAuMTQpLDBweCA2cHggMzJweCA1cHggcmdiYSgwLCAwLCAwLCAwLjEyKX0ubWF0LWVsZXZhdGlvbi16MThbX25nY29udGVudC0lQ09NUCVde2JveC1zaGFkb3c6MHB4IDlweCAxMXB4IC01cHggcmdiYSgwLCAwLCAwLCAwLjIpLDBweCAxOHB4IDI4cHggMnB4IHJnYmEoMCwgMCwgMCwgMC4xNCksMHB4IDdweCAzNHB4IDZweCByZ2JhKDAsIDAsIDAsIDAuMTIpfS5tYXQtZWxldmF0aW9uLXoxOVtfbmdjb250ZW50LSVDT01QJV17Ym94LXNoYWRvdzowcHggOXB4IDEycHggLTZweCByZ2JhKDAsIDAsIDAsIDAuMiksMHB4IDE5cHggMjlweCAycHggcmdiYSgwLCAwLCAwLCAwLjE0KSwwcHggN3B4IDM2cHggNnB4IHJnYmEoMCwgMCwgMCwgMC4xMil9Lm1hdC1lbGV2YXRpb24tejIwW19uZ2NvbnRlbnQtJUNPTVAlXXtib3gtc2hhZG93OjBweCAxMHB4IDEzcHggLTZweCByZ2JhKDAsIDAsIDAsIDAuMiksMHB4IDIwcHggMzFweCAzcHggcmdiYSgwLCAwLCAwLCAwLjE0KSwwcHggOHB4IDM4cHggN3B4IHJnYmEoMCwgMCwgMCwgMC4xMil9Lm1hdC1lbGV2YXRpb24tejIxW19uZ2NvbnRlbnQtJUNPTVAlXXtib3gtc2hhZG93OjBweCAxMHB4IDEzcHggLTZweCByZ2JhKDAsIDAsIDAsIDAuMiksMHB4IDIxcHggMzNweCAzcHggcmdiYSgwLCAwLCAwLCAwLjE0KSwwcHggOHB4IDQwcHggN3B4IHJnYmEoMCwgMCwgMCwgMC4xMil9Lm1hdC1lbGV2YXRpb24tejIyW19uZ2NvbnRlbnQtJUNPTVAlXXtib3gtc2hhZG93OjBweCAxMHB4IDE0cHggLTZweCByZ2JhKDAsIDAsIDAsIDAuMiksMHB4IDIycHggMzVweCAzcHggcmdiYSgwLCAwLCAwLCAwLjE0KSwwcHggOHB4IDQycHggN3B4IHJnYmEoMCwgMCwgMCwgMC4xMil9Lm1hdC1lbGV2YXRpb24tejIzW19uZ2NvbnRlbnQtJUNPTVAlXXtib3gtc2hhZG93OjBweCAxMXB4IDE0cHggLTdweCByZ2JhKDAsIDAsIDAsIDAuMiksMHB4IDIzcHggMzZweCAzcHggcmdiYSgwLCAwLCAwLCAwLjE0KSwwcHggOXB4IDQ0cHggOHB4IHJnYmEoMCwgMCwgMCwgMC4xMil9Lm1hdC1lbGV2YXRpb24tejI0W19uZ2NvbnRlbnQtJUNPTVAlXXtib3gtc2hhZG93OjBweCAxMXB4IDE1cHggLTdweCByZ2JhKDAsIDAsIDAsIDAuMiksMHB4IDI0cHggMzhweCAzcHggcmdiYSgwLCAwLCAwLCAwLjE0KSwwcHggOXB4IDQ2cHggOHB4IHJnYmEoMCwgMCwgMCwgMC4xMil9Lm1hdC10aGVtZS1sb2FkZWQtbWFya2VyW19uZ2NvbnRlbnQtJUNPTVAlXXtkaXNwbGF5Om5vbmV9Lm1hdC1hdXRvY29tcGxldGUtcGFuZWxbX25nY29udGVudC0lQ09NUCVde2JhY2tncm91bmQ6I2ZmZjtjb2xvcjojMjEyMTIxfS5tYXQtYXV0b2NvbXBsZXRlLXBhbmVsW19uZ2NvbnRlbnQtJUNPTVAlXTpub3QoW2NsYXNzKj1tYXQtZWxldmF0aW9uLXpdKXtib3gtc2hhZG93OjBweCAycHggNHB4IC0xcHggcmdiYSgwLCAwLCAwLCAwLjIpLDBweCA0cHggNXB4IDBweCByZ2JhKDAsIDAsIDAsIDAuMTQpLDBweCAxcHggMTBweCAwcHggcmdiYSgwLCAwLCAwLCAwLjEyKX0ubWF0LWF1dG9jb21wbGV0ZS1wYW5lbFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LW9wdGlvbi5tYXQtc2VsZWN0ZWRbX25nY29udGVudC0lQ09NUCVdOm5vdCgubWF0LWFjdGl2ZSk6bm90KDpob3Zlcil7YmFja2dyb3VuZDojZmZmfS5tYXQtYXV0b2NvbXBsZXRlLXBhbmVsW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtb3B0aW9uLm1hdC1zZWxlY3RlZFtfbmdjb250ZW50LSVDT01QJV06bm90KC5tYXQtYWN0aXZlKTpub3QoOmhvdmVyKTpub3QoLm1hdC1vcHRpb24tZGlzYWJsZWQpe2NvbG9yOiMyMTIxMjF9Lm1hdC1iYWRnZS1jb250ZW50W19uZ2NvbnRlbnQtJUNPTVAlXXtjb2xvcjojZmZmO2JhY2tncm91bmQ6I2Y1N2MwMH0uY2RrLWhpZ2gtY29udHJhc3QtYWN0aXZlW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtYmFkZ2UtY29udGVudFtfbmdjb250ZW50LSVDT01QJV17b3V0bGluZTpzb2xpZCAxcHg7Ym9yZGVyLXJhZGl1czowfS5tYXQtYmFkZ2UtYWNjZW50W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtYmFkZ2UtY29udGVudFtfbmdjb250ZW50LSVDT01QJV17YmFja2dyb3VuZDojZmY5ODAwO2NvbG9yOiNmZmZ9Lm1hdC1iYWRnZS13YXJuW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtYmFkZ2UtY29udGVudFtfbmdjb250ZW50LSVDT01QJV17Y29sb3I6I2ZmZjtiYWNrZ3JvdW5kOiNmNDQzMzZ9Lm1hdC1iYWRnZVtfbmdjb250ZW50LSVDT01QJV17cG9zaXRpb246cmVsYXRpdmV9Lm1hdC1iYWRnZS1oaWRkZW5bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1iYWRnZS1jb250ZW50W19uZ2NvbnRlbnQtJUNPTVAlXXtkaXNwbGF5Om5vbmV9Lm1hdC1iYWRnZS1kaXNhYmxlZFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWJhZGdlLWNvbnRlbnRbX25nY29udGVudC0lQ09NUCVde2JhY2tncm91bmQ6I2I5YjliOTtjb2xvcjojNzU3NTc1fS5tYXQtYmFkZ2UtY29udGVudFtfbmdjb250ZW50LSVDT01QJV17cG9zaXRpb246YWJzb2x1dGU7dGV4dC1hbGlnbjpjZW50ZXI7ZGlzcGxheTppbmxpbmUtYmxvY2s7Ym9yZGVyLXJhZGl1czo1MCU7dHJhbnNpdGlvbjp0cmFuc2Zvcm0gMjAwbXMgZWFzZS1pbi1vdXQ7dHJhbnNmb3JtOnNjYWxlKDAuNik7b3ZlcmZsb3c6aGlkZGVuO3doaXRlLXNwYWNlOm5vd3JhcDt0ZXh0LW92ZXJmbG93OmVsbGlwc2lzO3BvaW50ZXItZXZlbnRzOm5vbmV9Lm5nLWFuaW1hdGUtZGlzYWJsZWRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1iYWRnZS1jb250ZW50W19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1iYWRnZS1jb250ZW50Ll9tYXQtYW5pbWF0aW9uLW5vb3BhYmxlW19uZ2NvbnRlbnQtJUNPTVAlXXt0cmFuc2l0aW9uOm5vbmV9Lm1hdC1iYWRnZS1jb250ZW50Lm1hdC1iYWRnZS1hY3RpdmVbX25nY29udGVudC0lQ09NUCVde3RyYW5zZm9ybTpub25lfS5tYXQtYmFkZ2Utc21hbGxbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1iYWRnZS1jb250ZW50W19uZ2NvbnRlbnQtJUNPTVAlXXt3aWR0aDoxNnB4O2hlaWdodDoxNnB4O2xpbmUtaGVpZ2h0OjE2cHh9Lm1hdC1iYWRnZS1zbWFsbC5tYXQtYmFkZ2UtYWJvdmVbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1iYWRnZS1jb250ZW50W19uZ2NvbnRlbnQtJUNPTVAlXXt0b3A6LThweH0ubWF0LWJhZGdlLXNtYWxsLm1hdC1iYWRnZS1iZWxvd1tfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWJhZGdlLWNvbnRlbnRbX25nY29udGVudC0lQ09NUCVde2JvdHRvbTotOHB4fS5tYXQtYmFkZ2Utc21hbGwubWF0LWJhZGdlLWJlZm9yZVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWJhZGdlLWNvbnRlbnRbX25nY29udGVudC0lQ09NUCVde2xlZnQ6LTE2cHh9W2Rpcj1ydGxdW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtYmFkZ2Utc21hbGwubWF0LWJhZGdlLWJlZm9yZVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWJhZGdlLWNvbnRlbnRbX25nY29udGVudC0lQ09NUCVde2xlZnQ6YXV0bztyaWdodDotMTZweH0ubWF0LWJhZGdlLXNtYWxsLm1hdC1iYWRnZS1hZnRlcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWJhZGdlLWNvbnRlbnRbX25nY29udGVudC0lQ09NUCVde3JpZ2h0Oi0xNnB4fVtkaXI9cnRsXVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWJhZGdlLXNtYWxsLm1hdC1iYWRnZS1hZnRlcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWJhZGdlLWNvbnRlbnRbX25nY29udGVudC0lQ09NUCVde3JpZ2h0OmF1dG87bGVmdDotMTZweH0ubWF0LWJhZGdlLXNtYWxsLm1hdC1iYWRnZS1vdmVybGFwLm1hdC1iYWRnZS1iZWZvcmVbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1iYWRnZS1jb250ZW50W19uZ2NvbnRlbnQtJUNPTVAlXXtsZWZ0Oi04cHh9W2Rpcj1ydGxdW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtYmFkZ2Utc21hbGwubWF0LWJhZGdlLW92ZXJsYXAubWF0LWJhZGdlLWJlZm9yZVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWJhZGdlLWNvbnRlbnRbX25nY29udGVudC0lQ09NUCVde2xlZnQ6YXV0bztyaWdodDotOHB4fS5tYXQtYmFkZ2Utc21hbGwubWF0LWJhZGdlLW92ZXJsYXAubWF0LWJhZGdlLWFmdGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtYmFkZ2UtY29udGVudFtfbmdjb250ZW50LSVDT01QJV17cmlnaHQ6LThweH1bZGlyPXJ0bF1bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1iYWRnZS1zbWFsbC5tYXQtYmFkZ2Utb3ZlcmxhcC5tYXQtYmFkZ2UtYWZ0ZXJbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1iYWRnZS1jb250ZW50W19uZ2NvbnRlbnQtJUNPTVAlXXtyaWdodDphdXRvO2xlZnQ6LThweH0ubWF0LWJhZGdlLW1lZGl1bVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWJhZGdlLWNvbnRlbnRbX25nY29udGVudC0lQ09NUCVde3dpZHRoOjIycHg7aGVpZ2h0OjIycHg7bGluZS1oZWlnaHQ6MjJweH0ubWF0LWJhZGdlLW1lZGl1bS5tYXQtYmFkZ2UtYWJvdmVbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1iYWRnZS1jb250ZW50W19uZ2NvbnRlbnQtJUNPTVAlXXt0b3A6LTExcHh9Lm1hdC1iYWRnZS1tZWRpdW0ubWF0LWJhZGdlLWJlbG93W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtYmFkZ2UtY29udGVudFtfbmdjb250ZW50LSVDT01QJV17Ym90dG9tOi0xMXB4fS5tYXQtYmFkZ2UtbWVkaXVtLm1hdC1iYWRnZS1iZWZvcmVbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1iYWRnZS1jb250ZW50W19uZ2NvbnRlbnQtJUNPTVAlXXtsZWZ0Oi0yMnB4fVtkaXI9cnRsXVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWJhZGdlLW1lZGl1bS5tYXQtYmFkZ2UtYmVmb3JlW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtYmFkZ2UtY29udGVudFtfbmdjb250ZW50LSVDT01QJV17bGVmdDphdXRvO3JpZ2h0Oi0yMnB4fS5tYXQtYmFkZ2UtbWVkaXVtLm1hdC1iYWRnZS1hZnRlcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWJhZGdlLWNvbnRlbnRbX25nY29udGVudC0lQ09NUCVde3JpZ2h0Oi0yMnB4fVtkaXI9cnRsXVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWJhZGdlLW1lZGl1bS5tYXQtYmFkZ2UtYWZ0ZXJbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1iYWRnZS1jb250ZW50W19uZ2NvbnRlbnQtJUNPTVAlXXtyaWdodDphdXRvO2xlZnQ6LTIycHh9Lm1hdC1iYWRnZS1tZWRpdW0ubWF0LWJhZGdlLW92ZXJsYXAubWF0LWJhZGdlLWJlZm9yZVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWJhZGdlLWNvbnRlbnRbX25nY29udGVudC0lQ09NUCVde2xlZnQ6LTExcHh9W2Rpcj1ydGxdW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtYmFkZ2UtbWVkaXVtLm1hdC1iYWRnZS1vdmVybGFwLm1hdC1iYWRnZS1iZWZvcmVbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1iYWRnZS1jb250ZW50W19uZ2NvbnRlbnQtJUNPTVAlXXtsZWZ0OmF1dG87cmlnaHQ6LTExcHh9Lm1hdC1iYWRnZS1tZWRpdW0ubWF0LWJhZGdlLW92ZXJsYXAubWF0LWJhZGdlLWFmdGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtYmFkZ2UtY29udGVudFtfbmdjb250ZW50LSVDT01QJV17cmlnaHQ6LTExcHh9W2Rpcj1ydGxdW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtYmFkZ2UtbWVkaXVtLm1hdC1iYWRnZS1vdmVybGFwLm1hdC1iYWRnZS1hZnRlcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWJhZGdlLWNvbnRlbnRbX25nY29udGVudC0lQ09NUCVde3JpZ2h0OmF1dG87bGVmdDotMTFweH0ubWF0LWJhZGdlLWxhcmdlW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtYmFkZ2UtY29udGVudFtfbmdjb250ZW50LSVDT01QJV17d2lkdGg6MjhweDtoZWlnaHQ6MjhweDtsaW5lLWhlaWdodDoyOHB4fS5tYXQtYmFkZ2UtbGFyZ2UubWF0LWJhZGdlLWFib3ZlW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtYmFkZ2UtY29udGVudFtfbmdjb250ZW50LSVDT01QJV17dG9wOi0xNHB4fS5tYXQtYmFkZ2UtbGFyZ2UubWF0LWJhZGdlLWJlbG93W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtYmFkZ2UtY29udGVudFtfbmdjb250ZW50LSVDT01QJV17Ym90dG9tOi0xNHB4fS5tYXQtYmFkZ2UtbGFyZ2UubWF0LWJhZGdlLWJlZm9yZVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWJhZGdlLWNvbnRlbnRbX25nY29udGVudC0lQ09NUCVde2xlZnQ6LTI4cHh9W2Rpcj1ydGxdW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtYmFkZ2UtbGFyZ2UubWF0LWJhZGdlLWJlZm9yZVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWJhZGdlLWNvbnRlbnRbX25nY29udGVudC0lQ09NUCVde2xlZnQ6YXV0bztyaWdodDotMjhweH0ubWF0LWJhZGdlLWxhcmdlLm1hdC1iYWRnZS1hZnRlcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWJhZGdlLWNvbnRlbnRbX25nY29udGVudC0lQ09NUCVde3JpZ2h0Oi0yOHB4fVtkaXI9cnRsXVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWJhZGdlLWxhcmdlLm1hdC1iYWRnZS1hZnRlcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWJhZGdlLWNvbnRlbnRbX25nY29udGVudC0lQ09NUCVde3JpZ2h0OmF1dG87bGVmdDotMjhweH0ubWF0LWJhZGdlLWxhcmdlLm1hdC1iYWRnZS1vdmVybGFwLm1hdC1iYWRnZS1iZWZvcmVbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1iYWRnZS1jb250ZW50W19uZ2NvbnRlbnQtJUNPTVAlXXtsZWZ0Oi0xNHB4fVtkaXI9cnRsXVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWJhZGdlLWxhcmdlLm1hdC1iYWRnZS1vdmVybGFwLm1hdC1iYWRnZS1iZWZvcmVbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1iYWRnZS1jb250ZW50W19uZ2NvbnRlbnQtJUNPTVAlXXtsZWZ0OmF1dG87cmlnaHQ6LTE0cHh9Lm1hdC1iYWRnZS1sYXJnZS5tYXQtYmFkZ2Utb3ZlcmxhcC5tYXQtYmFkZ2UtYWZ0ZXJbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1iYWRnZS1jb250ZW50W19uZ2NvbnRlbnQtJUNPTVAlXXtyaWdodDotMTRweH1bZGlyPXJ0bF1bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1iYWRnZS1sYXJnZS5tYXQtYmFkZ2Utb3ZlcmxhcC5tYXQtYmFkZ2UtYWZ0ZXJbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1iYWRnZS1jb250ZW50W19uZ2NvbnRlbnQtJUNPTVAlXXtyaWdodDphdXRvO2xlZnQ6LTE0cHh9Lm1hdC1ib3R0b20tc2hlZXQtY29udGFpbmVyW19uZ2NvbnRlbnQtJUNPTVAlXXtib3gtc2hhZG93OjBweCA4cHggMTBweCAtNXB4IHJnYmEoMCwgMCwgMCwgMC4yKSwwcHggMTZweCAyNHB4IDJweCByZ2JhKDAsIDAsIDAsIDAuMTQpLDBweCA2cHggMzBweCA1cHggcmdiYSgwLCAwLCAwLCAwLjEyKTtiYWNrZ3JvdW5kOiNmZmY7Y29sb3I6IzIxMjEyMX0ubWF0LWJ1dHRvbltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtaWNvbi1idXR0b25bX25nY29udGVudC0lQ09NUCVdLCAubWF0LXN0cm9rZWQtYnV0dG9uW19uZ2NvbnRlbnQtJUNPTVAlXXtjb2xvcjppbmhlcml0O2JhY2tncm91bmQ6dHJhbnNwYXJlbnR9Lm1hdC1idXR0b24ubWF0LXByaW1hcnlbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWljb24tYnV0dG9uLm1hdC1wcmltYXJ5W19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1zdHJva2VkLWJ1dHRvbi5tYXQtcHJpbWFyeVtfbmdjb250ZW50LSVDT01QJV17Y29sb3I6I2Y1N2MwMH0ubWF0LWJ1dHRvbi5tYXQtYWNjZW50W19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1pY29uLWJ1dHRvbi5tYXQtYWNjZW50W19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1zdHJva2VkLWJ1dHRvbi5tYXQtYWNjZW50W19uZ2NvbnRlbnQtJUNPTVAlXXtjb2xvcjojZmY5ODAwfS5tYXQtYnV0dG9uLm1hdC13YXJuW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1pY29uLWJ1dHRvbi5tYXQtd2Fybltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtc3Ryb2tlZC1idXR0b24ubWF0LXdhcm5bX25nY29udGVudC0lQ09NUCVde2NvbG9yOiNmNDQzMzZ9Lm1hdC1idXR0b24ubWF0LXByaW1hcnkubWF0LWJ1dHRvbi1kaXNhYmxlZFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtYnV0dG9uLm1hdC1hY2NlbnQubWF0LWJ1dHRvbi1kaXNhYmxlZFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtYnV0dG9uLm1hdC13YXJuLm1hdC1idXR0b24tZGlzYWJsZWRbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWJ1dHRvbi5tYXQtYnV0dG9uLWRpc2FibGVkLm1hdC1idXR0b24tZGlzYWJsZWRbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWljb24tYnV0dG9uLm1hdC1wcmltYXJ5Lm1hdC1idXR0b24tZGlzYWJsZWRbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWljb24tYnV0dG9uLm1hdC1hY2NlbnQubWF0LWJ1dHRvbi1kaXNhYmxlZFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtaWNvbi1idXR0b24ubWF0LXdhcm4ubWF0LWJ1dHRvbi1kaXNhYmxlZFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtaWNvbi1idXR0b24ubWF0LWJ1dHRvbi1kaXNhYmxlZC5tYXQtYnV0dG9uLWRpc2FibGVkW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1zdHJva2VkLWJ1dHRvbi5tYXQtcHJpbWFyeS5tYXQtYnV0dG9uLWRpc2FibGVkW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1zdHJva2VkLWJ1dHRvbi5tYXQtYWNjZW50Lm1hdC1idXR0b24tZGlzYWJsZWRbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXN0cm9rZWQtYnV0dG9uLm1hdC13YXJuLm1hdC1idXR0b24tZGlzYWJsZWRbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXN0cm9rZWQtYnV0dG9uLm1hdC1idXR0b24tZGlzYWJsZWQubWF0LWJ1dHRvbi1kaXNhYmxlZFtfbmdjb250ZW50LSVDT01QJV17Y29sb3I6cmdiYSgwLDAsMCwuMjYpfS5tYXQtYnV0dG9uLm1hdC1wcmltYXJ5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtYnV0dG9uLWZvY3VzLW92ZXJsYXlbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWljb24tYnV0dG9uLm1hdC1wcmltYXJ5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtYnV0dG9uLWZvY3VzLW92ZXJsYXlbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXN0cm9rZWQtYnV0dG9uLm1hdC1wcmltYXJ5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtYnV0dG9uLWZvY3VzLW92ZXJsYXlbX25nY29udGVudC0lQ09NUCVde2JhY2tncm91bmQtY29sb3I6I2Y1N2MwMH0ubWF0LWJ1dHRvbi5tYXQtYWNjZW50W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtYnV0dG9uLWZvY3VzLW92ZXJsYXlbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWljb24tYnV0dG9uLm1hdC1hY2NlbnRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1idXR0b24tZm9jdXMtb3ZlcmxheVtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtc3Ryb2tlZC1idXR0b24ubWF0LWFjY2VudFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWJ1dHRvbi1mb2N1cy1vdmVybGF5W19uZ2NvbnRlbnQtJUNPTVAlXXtiYWNrZ3JvdW5kLWNvbG9yOiNmZjk4MDB9Lm1hdC1idXR0b24ubWF0LXdhcm5bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1idXR0b24tZm9jdXMtb3ZlcmxheVtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtaWNvbi1idXR0b24ubWF0LXdhcm5bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1idXR0b24tZm9jdXMtb3ZlcmxheVtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtc3Ryb2tlZC1idXR0b24ubWF0LXdhcm5bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1idXR0b24tZm9jdXMtb3ZlcmxheVtfbmdjb250ZW50LSVDT01QJV17YmFja2dyb3VuZC1jb2xvcjojZjQ0MzM2fS5tYXQtYnV0dG9uLm1hdC1idXR0b24tZGlzYWJsZWRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1idXR0b24tZm9jdXMtb3ZlcmxheVtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtaWNvbi1idXR0b24ubWF0LWJ1dHRvbi1kaXNhYmxlZFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWJ1dHRvbi1mb2N1cy1vdmVybGF5W19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1zdHJva2VkLWJ1dHRvbi5tYXQtYnV0dG9uLWRpc2FibGVkW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtYnV0dG9uLWZvY3VzLW92ZXJsYXlbX25nY29udGVudC0lQ09NUCVde2JhY2tncm91bmQtY29sb3I6dHJhbnNwYXJlbnR9Lm1hdC1idXR0b25bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1yaXBwbGUtZWxlbWVudFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtaWNvbi1idXR0b25bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1yaXBwbGUtZWxlbWVudFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtc3Ryb2tlZC1idXR0b25bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1yaXBwbGUtZWxlbWVudFtfbmdjb250ZW50LSVDT01QJV17b3BhY2l0eTouMTtiYWNrZ3JvdW5kLWNvbG9yOmN1cnJlbnRDb2xvcn0ubWF0LWJ1dHRvbi1mb2N1cy1vdmVybGF5W19uZ2NvbnRlbnQtJUNPTVAlXXtiYWNrZ3JvdW5kOiMwMDB9Lm1hdC1zdHJva2VkLWJ1dHRvbltfbmdjb250ZW50LSVDT01QJV06bm90KC5tYXQtYnV0dG9uLWRpc2FibGVkKXtib3JkZXItY29sb3I6cmdiYSgwLDAsMCwuMTIpfS5tYXQtZmxhdC1idXR0b25bX25nY29udGVudC0lQ09NUCVdLCAubWF0LXJhaXNlZC1idXR0b25bX25nY29udGVudC0lQ09NUCVdLCAubWF0LWZhYltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtbWluaS1mYWJbX25nY29udGVudC0lQ09NUCVde2NvbG9yOiMyMTIxMjE7YmFja2dyb3VuZC1jb2xvcjojZmZmfS5tYXQtZmxhdC1idXR0b24ubWF0LXByaW1hcnlbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXJhaXNlZC1idXR0b24ubWF0LXByaW1hcnlbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWZhYi5tYXQtcHJpbWFyeVtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtbWluaS1mYWIubWF0LXByaW1hcnlbX25nY29udGVudC0lQ09NUCVde2NvbG9yOiNmZmZ9Lm1hdC1mbGF0LWJ1dHRvbi5tYXQtYWNjZW50W19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1yYWlzZWQtYnV0dG9uLm1hdC1hY2NlbnRbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWZhYi5tYXQtYWNjZW50W19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1taW5pLWZhYi5tYXQtYWNjZW50W19uZ2NvbnRlbnQtJUNPTVAlXXtjb2xvcjojZmZmfS5tYXQtZmxhdC1idXR0b24ubWF0LXdhcm5bX25nY29udGVudC0lQ09NUCVdLCAubWF0LXJhaXNlZC1idXR0b24ubWF0LXdhcm5bX25nY29udGVudC0lQ09NUCVdLCAubWF0LWZhYi5tYXQtd2Fybltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtbWluaS1mYWIubWF0LXdhcm5bX25nY29udGVudC0lQ09NUCVde2NvbG9yOiNmZmZ9Lm1hdC1mbGF0LWJ1dHRvbi5tYXQtcHJpbWFyeS5tYXQtYnV0dG9uLWRpc2FibGVkW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1mbGF0LWJ1dHRvbi5tYXQtYWNjZW50Lm1hdC1idXR0b24tZGlzYWJsZWRbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWZsYXQtYnV0dG9uLm1hdC13YXJuLm1hdC1idXR0b24tZGlzYWJsZWRbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWZsYXQtYnV0dG9uLm1hdC1idXR0b24tZGlzYWJsZWQubWF0LWJ1dHRvbi1kaXNhYmxlZFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtcmFpc2VkLWJ1dHRvbi5tYXQtcHJpbWFyeS5tYXQtYnV0dG9uLWRpc2FibGVkW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1yYWlzZWQtYnV0dG9uLm1hdC1hY2NlbnQubWF0LWJ1dHRvbi1kaXNhYmxlZFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtcmFpc2VkLWJ1dHRvbi5tYXQtd2Fybi5tYXQtYnV0dG9uLWRpc2FibGVkW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1yYWlzZWQtYnV0dG9uLm1hdC1idXR0b24tZGlzYWJsZWQubWF0LWJ1dHRvbi1kaXNhYmxlZFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtZmFiLm1hdC1wcmltYXJ5Lm1hdC1idXR0b24tZGlzYWJsZWRbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWZhYi5tYXQtYWNjZW50Lm1hdC1idXR0b24tZGlzYWJsZWRbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWZhYi5tYXQtd2Fybi5tYXQtYnV0dG9uLWRpc2FibGVkW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1mYWIubWF0LWJ1dHRvbi1kaXNhYmxlZC5tYXQtYnV0dG9uLWRpc2FibGVkW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1taW5pLWZhYi5tYXQtcHJpbWFyeS5tYXQtYnV0dG9uLWRpc2FibGVkW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1taW5pLWZhYi5tYXQtYWNjZW50Lm1hdC1idXR0b24tZGlzYWJsZWRbX25nY29udGVudC0lQ09NUCVdLCAubWF0LW1pbmktZmFiLm1hdC13YXJuLm1hdC1idXR0b24tZGlzYWJsZWRbX25nY29udGVudC0lQ09NUCVdLCAubWF0LW1pbmktZmFiLm1hdC1idXR0b24tZGlzYWJsZWQubWF0LWJ1dHRvbi1kaXNhYmxlZFtfbmdjb250ZW50LSVDT01QJV17Y29sb3I6cmdiYSgwLDAsMCwuMjYpfS5tYXQtZmxhdC1idXR0b24ubWF0LXByaW1hcnlbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXJhaXNlZC1idXR0b24ubWF0LXByaW1hcnlbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWZhYi5tYXQtcHJpbWFyeVtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtbWluaS1mYWIubWF0LXByaW1hcnlbX25nY29udGVudC0lQ09NUCVde2JhY2tncm91bmQtY29sb3I6I2Y1N2MwMH0ubWF0LWZsYXQtYnV0dG9uLm1hdC1hY2NlbnRbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXJhaXNlZC1idXR0b24ubWF0LWFjY2VudFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtZmFiLm1hdC1hY2NlbnRbX25nY29udGVudC0lQ09NUCVdLCAubWF0LW1pbmktZmFiLm1hdC1hY2NlbnRbX25nY29udGVudC0lQ09NUCVde2JhY2tncm91bmQtY29sb3I6I2ZmOTgwMH0ubWF0LWZsYXQtYnV0dG9uLm1hdC13YXJuW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1yYWlzZWQtYnV0dG9uLm1hdC13YXJuW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1mYWIubWF0LXdhcm5bX25nY29udGVudC0lQ09NUCVdLCAubWF0LW1pbmktZmFiLm1hdC13YXJuW19uZ2NvbnRlbnQtJUNPTVAlXXtiYWNrZ3JvdW5kLWNvbG9yOiNmNDQzMzZ9Lm1hdC1mbGF0LWJ1dHRvbi5tYXQtcHJpbWFyeS5tYXQtYnV0dG9uLWRpc2FibGVkW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1mbGF0LWJ1dHRvbi5tYXQtYWNjZW50Lm1hdC1idXR0b24tZGlzYWJsZWRbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWZsYXQtYnV0dG9uLm1hdC13YXJuLm1hdC1idXR0b24tZGlzYWJsZWRbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWZsYXQtYnV0dG9uLm1hdC1idXR0b24tZGlzYWJsZWQubWF0LWJ1dHRvbi1kaXNhYmxlZFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtcmFpc2VkLWJ1dHRvbi5tYXQtcHJpbWFyeS5tYXQtYnV0dG9uLWRpc2FibGVkW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1yYWlzZWQtYnV0dG9uLm1hdC1hY2NlbnQubWF0LWJ1dHRvbi1kaXNhYmxlZFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtcmFpc2VkLWJ1dHRvbi5tYXQtd2Fybi5tYXQtYnV0dG9uLWRpc2FibGVkW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1yYWlzZWQtYnV0dG9uLm1hdC1idXR0b24tZGlzYWJsZWQubWF0LWJ1dHRvbi1kaXNhYmxlZFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtZmFiLm1hdC1wcmltYXJ5Lm1hdC1idXR0b24tZGlzYWJsZWRbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWZhYi5tYXQtYWNjZW50Lm1hdC1idXR0b24tZGlzYWJsZWRbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWZhYi5tYXQtd2Fybi5tYXQtYnV0dG9uLWRpc2FibGVkW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1mYWIubWF0LWJ1dHRvbi1kaXNhYmxlZC5tYXQtYnV0dG9uLWRpc2FibGVkW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1taW5pLWZhYi5tYXQtcHJpbWFyeS5tYXQtYnV0dG9uLWRpc2FibGVkW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1taW5pLWZhYi5tYXQtYWNjZW50Lm1hdC1idXR0b24tZGlzYWJsZWRbX25nY29udGVudC0lQ09NUCVdLCAubWF0LW1pbmktZmFiLm1hdC13YXJuLm1hdC1idXR0b24tZGlzYWJsZWRbX25nY29udGVudC0lQ09NUCVdLCAubWF0LW1pbmktZmFiLm1hdC1idXR0b24tZGlzYWJsZWQubWF0LWJ1dHRvbi1kaXNhYmxlZFtfbmdjb250ZW50LSVDT01QJV17YmFja2dyb3VuZC1jb2xvcjpyZ2JhKDAsMCwwLC4xMil9Lm1hdC1mbGF0LWJ1dHRvbi5tYXQtcHJpbWFyeVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXJpcHBsZS1lbGVtZW50W19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1yYWlzZWQtYnV0dG9uLm1hdC1wcmltYXJ5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtcmlwcGxlLWVsZW1lbnRbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWZhYi5tYXQtcHJpbWFyeVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXJpcHBsZS1lbGVtZW50W19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1taW5pLWZhYi5tYXQtcHJpbWFyeVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXJpcHBsZS1lbGVtZW50W19uZ2NvbnRlbnQtJUNPTVAlXXtiYWNrZ3JvdW5kLWNvbG9yOnJnYmEoMjU1LDI1NSwyNTUsLjEpfS5tYXQtZmxhdC1idXR0b24ubWF0LWFjY2VudFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXJpcHBsZS1lbGVtZW50W19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1yYWlzZWQtYnV0dG9uLm1hdC1hY2NlbnRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1yaXBwbGUtZWxlbWVudFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtZmFiLm1hdC1hY2NlbnRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1yaXBwbGUtZWxlbWVudFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtbWluaS1mYWIubWF0LWFjY2VudFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXJpcHBsZS1lbGVtZW50W19uZ2NvbnRlbnQtJUNPTVAlXXtiYWNrZ3JvdW5kLWNvbG9yOnJnYmEoMjU1LDI1NSwyNTUsLjEpfS5tYXQtZmxhdC1idXR0b24ubWF0LXdhcm5bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1yaXBwbGUtZWxlbWVudFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtcmFpc2VkLWJ1dHRvbi5tYXQtd2Fybltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXJpcHBsZS1lbGVtZW50W19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1mYWIubWF0LXdhcm5bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1yaXBwbGUtZWxlbWVudFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtbWluaS1mYWIubWF0LXdhcm5bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1yaXBwbGUtZWxlbWVudFtfbmdjb250ZW50LSVDT01QJV17YmFja2dyb3VuZC1jb2xvcjpyZ2JhKDI1NSwyNTUsMjU1LC4xKX0ubWF0LXN0cm9rZWQtYnV0dG9uW19uZ2NvbnRlbnQtJUNPTVAlXTpub3QoW2NsYXNzKj1tYXQtZWxldmF0aW9uLXpdKSwgLm1hdC1mbGF0LWJ1dHRvbltfbmdjb250ZW50LSVDT01QJV06bm90KFtjbGFzcyo9bWF0LWVsZXZhdGlvbi16XSl7Ym94LXNoYWRvdzowcHggMHB4IDBweCAwcHggcmdiYSgwLCAwLCAwLCAwLjIpLDBweCAwcHggMHB4IDBweCByZ2JhKDAsIDAsIDAsIDAuMTQpLDBweCAwcHggMHB4IDBweCByZ2JhKDAsIDAsIDAsIDAuMTIpfS5tYXQtcmFpc2VkLWJ1dHRvbltfbmdjb250ZW50LSVDT01QJV06bm90KFtjbGFzcyo9bWF0LWVsZXZhdGlvbi16XSl7Ym94LXNoYWRvdzowcHggM3B4IDFweCAtMnB4IHJnYmEoMCwgMCwgMCwgMC4yKSwwcHggMnB4IDJweCAwcHggcmdiYSgwLCAwLCAwLCAwLjE0KSwwcHggMXB4IDVweCAwcHggcmdiYSgwLCAwLCAwLCAwLjEyKX0ubWF0LXJhaXNlZC1idXR0b25bX25nY29udGVudC0lQ09NUCVdOm5vdCgubWF0LWJ1dHRvbi1kaXNhYmxlZCk6YWN0aXZlOm5vdChbY2xhc3MqPW1hdC1lbGV2YXRpb24tel0pe2JveC1zaGFkb3c6MHB4IDVweCA1cHggLTNweCByZ2JhKDAsIDAsIDAsIDAuMiksMHB4IDhweCAxMHB4IDFweCByZ2JhKDAsIDAsIDAsIDAuMTQpLDBweCAzcHggMTRweCAycHggcmdiYSgwLCAwLCAwLCAwLjEyKX0ubWF0LXJhaXNlZC1idXR0b24ubWF0LWJ1dHRvbi1kaXNhYmxlZFtfbmdjb250ZW50LSVDT01QJV06bm90KFtjbGFzcyo9bWF0LWVsZXZhdGlvbi16XSl7Ym94LXNoYWRvdzowcHggMHB4IDBweCAwcHggcmdiYSgwLCAwLCAwLCAwLjIpLDBweCAwcHggMHB4IDBweCByZ2JhKDAsIDAsIDAsIDAuMTQpLDBweCAwcHggMHB4IDBweCByZ2JhKDAsIDAsIDAsIDAuMTIpfS5tYXQtZmFiW19uZ2NvbnRlbnQtJUNPTVAlXTpub3QoW2NsYXNzKj1tYXQtZWxldmF0aW9uLXpdKSwgLm1hdC1taW5pLWZhYltfbmdjb250ZW50LSVDT01QJV06bm90KFtjbGFzcyo9bWF0LWVsZXZhdGlvbi16XSl7Ym94LXNoYWRvdzowcHggM3B4IDVweCAtMXB4IHJnYmEoMCwgMCwgMCwgMC4yKSwwcHggNnB4IDEwcHggMHB4IHJnYmEoMCwgMCwgMCwgMC4xNCksMHB4IDFweCAxOHB4IDBweCByZ2JhKDAsIDAsIDAsIDAuMTIpfS5tYXQtZmFiW19uZ2NvbnRlbnQtJUNPTVAlXTpub3QoLm1hdC1idXR0b24tZGlzYWJsZWQpOmFjdGl2ZTpub3QoW2NsYXNzKj1tYXQtZWxldmF0aW9uLXpdKSwgLm1hdC1taW5pLWZhYltfbmdjb250ZW50LSVDT01QJV06bm90KC5tYXQtYnV0dG9uLWRpc2FibGVkKTphY3RpdmU6bm90KFtjbGFzcyo9bWF0LWVsZXZhdGlvbi16XSl7Ym94LXNoYWRvdzowcHggN3B4IDhweCAtNHB4IHJnYmEoMCwgMCwgMCwgMC4yKSwwcHggMTJweCAxN3B4IDJweCByZ2JhKDAsIDAsIDAsIDAuMTQpLDBweCA1cHggMjJweCA0cHggcmdiYSgwLCAwLCAwLCAwLjEyKX0ubWF0LWZhYi5tYXQtYnV0dG9uLWRpc2FibGVkW19uZ2NvbnRlbnQtJUNPTVAlXTpub3QoW2NsYXNzKj1tYXQtZWxldmF0aW9uLXpdKSwgLm1hdC1taW5pLWZhYi5tYXQtYnV0dG9uLWRpc2FibGVkW19uZ2NvbnRlbnQtJUNPTVAlXTpub3QoW2NsYXNzKj1tYXQtZWxldmF0aW9uLXpdKXtib3gtc2hhZG93OjBweCAwcHggMHB4IDBweCByZ2JhKDAsIDAsIDAsIDAuMiksMHB4IDBweCAwcHggMHB4IHJnYmEoMCwgMCwgMCwgMC4xNCksMHB4IDBweCAwcHggMHB4IHJnYmEoMCwgMCwgMCwgMC4xMil9Lm1hdC1idXR0b24tdG9nZ2xlLXN0YW5kYWxvbmVbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWJ1dHRvbi10b2dnbGUtZ3JvdXBbX25nY29udGVudC0lQ09NUCVde2JveC1zaGFkb3c6MHB4IDNweCAxcHggLTJweCByZ2JhKDAsIDAsIDAsIDAuMiksMHB4IDJweCAycHggMHB4IHJnYmEoMCwgMCwgMCwgMC4xNCksMHB4IDFweCA1cHggMHB4IHJnYmEoMCwgMCwgMCwgMC4xMil9Lm1hdC1idXR0b24tdG9nZ2xlLXN0YW5kYWxvbmUubWF0LWJ1dHRvbi10b2dnbGUtYXBwZWFyYW5jZS1zdGFuZGFyZFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtYnV0dG9uLXRvZ2dsZS1ncm91cC1hcHBlYXJhbmNlLXN0YW5kYXJkW19uZ2NvbnRlbnQtJUNPTVAlXXtib3gtc2hhZG93Om5vbmV9Lm1hdC1idXR0b24tdG9nZ2xlW19uZ2NvbnRlbnQtJUNPTVAlXXtjb2xvcjpyZ2JhKDAsMCwwLC4zOCl9Lm1hdC1idXR0b24tdG9nZ2xlW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtYnV0dG9uLXRvZ2dsZS1mb2N1cy1vdmVybGF5W19uZ2NvbnRlbnQtJUNPTVAlXXtiYWNrZ3JvdW5kLWNvbG9yOnJnYmEoMCwwLDAsLjEyKX0ubWF0LWJ1dHRvbi10b2dnbGUtYXBwZWFyYW5jZS1zdGFuZGFyZFtfbmdjb250ZW50LSVDT01QJV17Y29sb3I6IzIxMjEyMTtiYWNrZ3JvdW5kOiNmZmZ9Lm1hdC1idXR0b24tdG9nZ2xlLWFwcGVhcmFuY2Utc3RhbmRhcmRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1idXR0b24tdG9nZ2xlLWZvY3VzLW92ZXJsYXlbX25nY29udGVudC0lQ09NUCVde2JhY2tncm91bmQtY29sb3I6IzAwMH0ubWF0LWJ1dHRvbi10b2dnbGUtZ3JvdXAtYXBwZWFyYW5jZS1zdGFuZGFyZFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWJ1dHRvbi10b2dnbGVbX25nY29udGVudC0lQ09NUCVdICsgLm1hdC1idXR0b24tdG9nZ2xlW19uZ2NvbnRlbnQtJUNPTVAlXXtib3JkZXItbGVmdDpzb2xpZCAxcHggcmdiYSgwLDAsMCwuMTIpfVtkaXI9cnRsXVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWJ1dHRvbi10b2dnbGUtZ3JvdXAtYXBwZWFyYW5jZS1zdGFuZGFyZFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWJ1dHRvbi10b2dnbGVbX25nY29udGVudC0lQ09NUCVdICsgLm1hdC1idXR0b24tdG9nZ2xlW19uZ2NvbnRlbnQtJUNPTVAlXXtib3JkZXItbGVmdDpub25lO2JvcmRlci1yaWdodDpzb2xpZCAxcHggcmdiYSgwLDAsMCwuMTIpfS5tYXQtYnV0dG9uLXRvZ2dsZS1ncm91cC1hcHBlYXJhbmNlLXN0YW5kYXJkLm1hdC1idXR0b24tdG9nZ2xlLXZlcnRpY2FsW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtYnV0dG9uLXRvZ2dsZVtfbmdjb250ZW50LSVDT01QJV0gKyAubWF0LWJ1dHRvbi10b2dnbGVbX25nY29udGVudC0lQ09NUCVde2JvcmRlci1sZWZ0Om5vbmU7Ym9yZGVyLXJpZ2h0Om5vbmU7Ym9yZGVyLXRvcDpzb2xpZCAxcHggcmdiYSgwLDAsMCwuMTIpfS5tYXQtYnV0dG9uLXRvZ2dsZS1jaGVja2VkW19uZ2NvbnRlbnQtJUNPTVAlXXtiYWNrZ3JvdW5kLWNvbG9yOiNlMGUwZTA7Y29sb3I6IzYxNjE2MX0ubWF0LWJ1dHRvbi10b2dnbGUtY2hlY2tlZC5tYXQtYnV0dG9uLXRvZ2dsZS1hcHBlYXJhbmNlLXN0YW5kYXJkW19uZ2NvbnRlbnQtJUNPTVAlXXtjb2xvcjojMjEyMTIxfS5tYXQtYnV0dG9uLXRvZ2dsZS1kaXNhYmxlZFtfbmdjb250ZW50LSVDT01QJV17Y29sb3I6cmdiYSgwLDAsMCwuMjYpO2JhY2tncm91bmQtY29sb3I6I2VlZX0ubWF0LWJ1dHRvbi10b2dnbGUtZGlzYWJsZWQubWF0LWJ1dHRvbi10b2dnbGUtYXBwZWFyYW5jZS1zdGFuZGFyZFtfbmdjb250ZW50LSVDT01QJV17YmFja2dyb3VuZDojZmZmfS5tYXQtYnV0dG9uLXRvZ2dsZS1kaXNhYmxlZC5tYXQtYnV0dG9uLXRvZ2dsZS1jaGVja2VkW19uZ2NvbnRlbnQtJUNPTVAlXXtiYWNrZ3JvdW5kLWNvbG9yOiNiZGJkYmR9Lm1hdC1idXR0b24tdG9nZ2xlLXN0YW5kYWxvbmUubWF0LWJ1dHRvbi10b2dnbGUtYXBwZWFyYW5jZS1zdGFuZGFyZFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtYnV0dG9uLXRvZ2dsZS1ncm91cC1hcHBlYXJhbmNlLXN0YW5kYXJkW19uZ2NvbnRlbnQtJUNPTVAlXXtib3JkZXI6c29saWQgMXB4IHJnYmEoMCwwLDAsLjEyKX0ubWF0LWJ1dHRvbi10b2dnbGUtYXBwZWFyYW5jZS1zdGFuZGFyZFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWJ1dHRvbi10b2dnbGUtbGFiZWwtY29udGVudFtfbmdjb250ZW50LSVDT01QJV17bGluZS1oZWlnaHQ6NDhweH0ubWF0LWNhcmRbX25nY29udGVudC0lQ09NUCVde2JhY2tncm91bmQ6I2ZmZjtjb2xvcjojMjEyMTIxfS5tYXQtY2FyZFtfbmdjb250ZW50LSVDT01QJV06bm90KFtjbGFzcyo9bWF0LWVsZXZhdGlvbi16XSl7Ym94LXNoYWRvdzowcHggMnB4IDFweCAtMXB4IHJnYmEoMCwgMCwgMCwgMC4yKSwwcHggMXB4IDFweCAwcHggcmdiYSgwLCAwLCAwLCAwLjE0KSwwcHggMXB4IDNweCAwcHggcmdiYSgwLCAwLCAwLCAwLjEyKX0ubWF0LWNhcmQubWF0LWNhcmQtZmxhdFtfbmdjb250ZW50LSVDT01QJV06bm90KFtjbGFzcyo9bWF0LWVsZXZhdGlvbi16XSl7Ym94LXNoYWRvdzowcHggMHB4IDBweCAwcHggcmdiYSgwLCAwLCAwLCAwLjIpLDBweCAwcHggMHB4IDBweCByZ2JhKDAsIDAsIDAsIDAuMTQpLDBweCAwcHggMHB4IDBweCByZ2JhKDAsIDAsIDAsIDAuMTIpfS5tYXQtY2FyZC1zdWJ0aXRsZVtfbmdjb250ZW50LSVDT01QJV17Y29sb3I6IzYxNjE2MX0ubWF0LWNoZWNrYm94LWZyYW1lW19uZ2NvbnRlbnQtJUNPTVAlXXtib3JkZXItY29sb3I6IzYxNjE2MX0ubWF0LWNoZWNrYm94LWNoZWNrbWFya1tfbmdjb250ZW50LSVDT01QJV17ZmlsbDojZmFmYWZhfS5tYXQtY2hlY2tib3gtY2hlY2ttYXJrLXBhdGhbX25nY29udGVudC0lQ09NUCVde3N0cm9rZTojZmFmYWZhICFpbXBvcnRhbnR9Lm1hdC1jaGVja2JveC1taXhlZG1hcmtbX25nY29udGVudC0lQ09NUCVde2JhY2tncm91bmQtY29sb3I6I2ZhZmFmYX0ubWF0LWNoZWNrYm94LWluZGV0ZXJtaW5hdGUubWF0LXByaW1hcnlbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1jaGVja2JveC1iYWNrZ3JvdW5kW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1jaGVja2JveC1jaGVja2VkLm1hdC1wcmltYXJ5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtY2hlY2tib3gtYmFja2dyb3VuZFtfbmdjb250ZW50LSVDT01QJV17YmFja2dyb3VuZC1jb2xvcjojZjU3YzAwfS5tYXQtY2hlY2tib3gtaW5kZXRlcm1pbmF0ZS5tYXQtYWNjZW50W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtY2hlY2tib3gtYmFja2dyb3VuZFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtY2hlY2tib3gtY2hlY2tlZC5tYXQtYWNjZW50W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtY2hlY2tib3gtYmFja2dyb3VuZFtfbmdjb250ZW50LSVDT01QJV17YmFja2dyb3VuZC1jb2xvcjojZmY5ODAwfS5tYXQtY2hlY2tib3gtaW5kZXRlcm1pbmF0ZS5tYXQtd2Fybltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWNoZWNrYm94LWJhY2tncm91bmRbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWNoZWNrYm94LWNoZWNrZWQubWF0LXdhcm5bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1jaGVja2JveC1iYWNrZ3JvdW5kW19uZ2NvbnRlbnQtJUNPTVAlXXtiYWNrZ3JvdW5kLWNvbG9yOiNmNDQzMzZ9Lm1hdC1jaGVja2JveC1kaXNhYmxlZC5tYXQtY2hlY2tib3gtY2hlY2tlZFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWNoZWNrYm94LWJhY2tncm91bmRbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWNoZWNrYm94LWRpc2FibGVkLm1hdC1jaGVja2JveC1pbmRldGVybWluYXRlW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtY2hlY2tib3gtYmFja2dyb3VuZFtfbmdjb250ZW50LSVDT01QJV17YmFja2dyb3VuZC1jb2xvcjojYjBiMGIwfS5tYXQtY2hlY2tib3gtZGlzYWJsZWRbX25nY29udGVudC0lQ09NUCVdOm5vdCgubWF0LWNoZWNrYm94LWNoZWNrZWQpICAgLm1hdC1jaGVja2JveC1mcmFtZVtfbmdjb250ZW50LSVDT01QJV17Ym9yZGVyLWNvbG9yOiNiMGIwYjB9Lm1hdC1jaGVja2JveC1kaXNhYmxlZFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWNoZWNrYm94LWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXtjb2xvcjojNjE2MTYxfS5tYXQtY2hlY2tib3hbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1yaXBwbGUtZWxlbWVudFtfbmdjb250ZW50LSVDT01QJV17YmFja2dyb3VuZC1jb2xvcjojMDAwfS5tYXQtY2hlY2tib3gtY2hlY2tlZFtfbmdjb250ZW50LSVDT01QJV06bm90KC5tYXQtY2hlY2tib3gtZGlzYWJsZWQpLm1hdC1wcmltYXJ5ICAgLm1hdC1yaXBwbGUtZWxlbWVudFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtY2hlY2tib3hbX25nY29udGVudC0lQ09NUCVdOmFjdGl2ZTpub3QoLm1hdC1jaGVja2JveC1kaXNhYmxlZCkubWF0LXByaW1hcnkgICAubWF0LXJpcHBsZS1lbGVtZW50W19uZ2NvbnRlbnQtJUNPTVAlXXtiYWNrZ3JvdW5kOiNmNTdjMDB9Lm1hdC1jaGVja2JveC1jaGVja2VkW19uZ2NvbnRlbnQtJUNPTVAlXTpub3QoLm1hdC1jaGVja2JveC1kaXNhYmxlZCkubWF0LWFjY2VudCAgIC5tYXQtcmlwcGxlLWVsZW1lbnRbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWNoZWNrYm94W19uZ2NvbnRlbnQtJUNPTVAlXTphY3RpdmU6bm90KC5tYXQtY2hlY2tib3gtZGlzYWJsZWQpLm1hdC1hY2NlbnQgICAubWF0LXJpcHBsZS1lbGVtZW50W19uZ2NvbnRlbnQtJUNPTVAlXXtiYWNrZ3JvdW5kOiNmZjk4MDB9Lm1hdC1jaGVja2JveC1jaGVja2VkW19uZ2NvbnRlbnQtJUNPTVAlXTpub3QoLm1hdC1jaGVja2JveC1kaXNhYmxlZCkubWF0LXdhcm4gICAubWF0LXJpcHBsZS1lbGVtZW50W19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1jaGVja2JveFtfbmdjb250ZW50LSVDT01QJV06YWN0aXZlOm5vdCgubWF0LWNoZWNrYm94LWRpc2FibGVkKS5tYXQtd2FybiAgIC5tYXQtcmlwcGxlLWVsZW1lbnRbX25nY29udGVudC0lQ09NUCVde2JhY2tncm91bmQ6I2Y0NDMzNn0ubWF0LWNoaXAubWF0LXN0YW5kYXJkLWNoaXBbX25nY29udGVudC0lQ09NUCVde2JhY2tncm91bmQtY29sb3I6I2UwZTBlMDtjb2xvcjojMjEyMTIxfS5tYXQtY2hpcC5tYXQtc3RhbmRhcmQtY2hpcFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWNoaXAtcmVtb3ZlW19uZ2NvbnRlbnQtJUNPTVAlXXtjb2xvcjojMjEyMTIxO29wYWNpdHk6LjR9Lm1hdC1jaGlwLm1hdC1zdGFuZGFyZC1jaGlwW19uZ2NvbnRlbnQtJUNPTVAlXTpub3QoLm1hdC1jaGlwLWRpc2FibGVkKTphY3RpdmV7Ym94LXNoYWRvdzowcHggM3B4IDNweCAtMnB4IHJnYmEoMCwgMCwgMCwgMC4yKSwwcHggM3B4IDRweCAwcHggcmdiYSgwLCAwLCAwLCAwLjE0KSwwcHggMXB4IDhweCAwcHggcmdiYSgwLCAwLCAwLCAwLjEyKX0ubWF0LWNoaXAubWF0LXN0YW5kYXJkLWNoaXBbX25nY29udGVudC0lQ09NUCVdOm5vdCgubWF0LWNoaXAtZGlzYWJsZWQpICAgLm1hdC1jaGlwLXJlbW92ZVtfbmdjb250ZW50LSVDT01QJV06aG92ZXJ7b3BhY2l0eTouNTR9Lm1hdC1jaGlwLm1hdC1zdGFuZGFyZC1jaGlwLm1hdC1jaGlwLWRpc2FibGVkW19uZ2NvbnRlbnQtJUNPTVAlXXtvcGFjaXR5Oi40fS5tYXQtY2hpcC5tYXQtc3RhbmRhcmQtY2hpcFtfbmdjb250ZW50LSVDT01QJV06OmFmdGVye2JhY2tncm91bmQ6IzAwMH0ubWF0LWNoaXAubWF0LXN0YW5kYXJkLWNoaXAubWF0LWNoaXAtc2VsZWN0ZWQubWF0LXByaW1hcnlbX25nY29udGVudC0lQ09NUCVde2JhY2tncm91bmQtY29sb3I6I2Y1N2MwMDtjb2xvcjojZmZmfS5tYXQtY2hpcC5tYXQtc3RhbmRhcmQtY2hpcC5tYXQtY2hpcC1zZWxlY3RlZC5tYXQtcHJpbWFyeVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWNoaXAtcmVtb3ZlW19uZ2NvbnRlbnQtJUNPTVAlXXtjb2xvcjojZmZmO29wYWNpdHk6LjR9Lm1hdC1jaGlwLm1hdC1zdGFuZGFyZC1jaGlwLm1hdC1jaGlwLXNlbGVjdGVkLm1hdC1wcmltYXJ5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtcmlwcGxlLWVsZW1lbnRbX25nY29udGVudC0lQ09NUCVde2JhY2tncm91bmQtY29sb3I6cmdiYSgyNTUsMjU1LDI1NSwuMSl9Lm1hdC1jaGlwLm1hdC1zdGFuZGFyZC1jaGlwLm1hdC1jaGlwLXNlbGVjdGVkLm1hdC13YXJuW19uZ2NvbnRlbnQtJUNPTVAlXXtiYWNrZ3JvdW5kLWNvbG9yOiNmNDQzMzY7Y29sb3I6I2ZmZn0ubWF0LWNoaXAubWF0LXN0YW5kYXJkLWNoaXAubWF0LWNoaXAtc2VsZWN0ZWQubWF0LXdhcm5bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1jaGlwLXJlbW92ZVtfbmdjb250ZW50LSVDT01QJV17Y29sb3I6I2ZmZjtvcGFjaXR5Oi40fS5tYXQtY2hpcC5tYXQtc3RhbmRhcmQtY2hpcC5tYXQtY2hpcC1zZWxlY3RlZC5tYXQtd2Fybltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXJpcHBsZS1lbGVtZW50W19uZ2NvbnRlbnQtJUNPTVAlXXtiYWNrZ3JvdW5kLWNvbG9yOnJnYmEoMjU1LDI1NSwyNTUsLjEpfS5tYXQtY2hpcC5tYXQtc3RhbmRhcmQtY2hpcC5tYXQtY2hpcC1zZWxlY3RlZC5tYXQtYWNjZW50W19uZ2NvbnRlbnQtJUNPTVAlXXtiYWNrZ3JvdW5kLWNvbG9yOiNmZjk4MDA7Y29sb3I6I2ZmZn0ubWF0LWNoaXAubWF0LXN0YW5kYXJkLWNoaXAubWF0LWNoaXAtc2VsZWN0ZWQubWF0LWFjY2VudFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWNoaXAtcmVtb3ZlW19uZ2NvbnRlbnQtJUNPTVAlXXtjb2xvcjojZmZmO29wYWNpdHk6LjR9Lm1hdC1jaGlwLm1hdC1zdGFuZGFyZC1jaGlwLm1hdC1jaGlwLXNlbGVjdGVkLm1hdC1hY2NlbnRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1yaXBwbGUtZWxlbWVudFtfbmdjb250ZW50LSVDT01QJV17YmFja2dyb3VuZC1jb2xvcjpyZ2JhKDI1NSwyNTUsMjU1LC4xKX0ubWF0LXRhYmxlW19uZ2NvbnRlbnQtJUNPTVAlXXtiYWNrZ3JvdW5kOiNmZmZ9Lm1hdC10YWJsZVtfbmdjb250ZW50LSVDT01QJV0gICB0aGVhZFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdGFibGVbX25nY29udGVudC0lQ09NUCVdICAgdGJvZHlbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXRhYmxlW19uZ2NvbnRlbnQtJUNPTVAlXSAgIHRmb290W19uZ2NvbnRlbnQtJUNPTVAlXSwgbWF0LWhlYWRlci1yb3dbX25nY29udGVudC0lQ09NUCVdLCBtYXQtcm93W19uZ2NvbnRlbnQtJUNPTVAlXSwgbWF0LWZvb3Rlci1yb3dbX25nY29udGVudC0lQ09NUCVdLCBbbWF0LWhlYWRlci1yb3ddW19uZ2NvbnRlbnQtJUNPTVAlXSwgW21hdC1yb3ddW19uZ2NvbnRlbnQtJUNPTVAlXSwgW21hdC1mb290ZXItcm93XVtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdGFibGUtc3RpY2t5W19uZ2NvbnRlbnQtJUNPTVAlXXtiYWNrZ3JvdW5kOmluaGVyaXR9bWF0LXJvd1tfbmdjb250ZW50LSVDT01QJV0sIG1hdC1oZWFkZXItcm93W19uZ2NvbnRlbnQtJUNPTVAlXSwgbWF0LWZvb3Rlci1yb3dbX25nY29udGVudC0lQ09NUCVdLCB0aC5tYXQtaGVhZGVyLWNlbGxbX25nY29udGVudC0lQ09NUCVdLCB0ZC5tYXQtY2VsbFtfbmdjb250ZW50LSVDT01QJV0sIHRkLm1hdC1mb290ZXItY2VsbFtfbmdjb250ZW50LSVDT01QJV17Ym9yZGVyLWJvdHRvbS1jb2xvcjpyZ2JhKDAsMCwwLC4xMil9Lm1hdC1oZWFkZXItY2VsbFtfbmdjb250ZW50LSVDT01QJV17Y29sb3I6IzYxNjE2MX0ubWF0LWNlbGxbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWZvb3Rlci1jZWxsW19uZ2NvbnRlbnQtJUNPTVAlXXtjb2xvcjojMjEyMTIxfS5tYXQtY2FsZW5kYXItYXJyb3dbX25nY29udGVudC0lQ09NUCVde2JvcmRlci10b3AtY29sb3I6cmdiYSgwLDAsMCwuNTQpfS5tYXQtZGF0ZXBpY2tlci10b2dnbGVbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWRhdGVwaWNrZXItY29udGVudFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWNhbGVuZGFyLW5leHQtYnV0dG9uW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1kYXRlcGlja2VyLWNvbnRlbnRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1jYWxlbmRhci1wcmV2aW91cy1idXR0b25bX25nY29udGVudC0lQ09NUCVde2NvbG9yOnJnYmEoMCwwLDAsLjU0KX0ubWF0LWNhbGVuZGFyLXRhYmxlLWhlYWRlcltfbmdjb250ZW50LSVDT01QJV17Y29sb3I6cmdiYSgwLDAsMCwuMzgpfS5tYXQtY2FsZW5kYXItdGFibGUtaGVhZGVyLWRpdmlkZXJbX25nY29udGVudC0lQ09NUCVdOjphZnRlcntiYWNrZ3JvdW5kOnJnYmEoMCwwLDAsLjEyKX0ubWF0LWNhbGVuZGFyLWJvZHktbGFiZWxbX25nY29udGVudC0lQ09NUCVde2NvbG9yOiM2MTYxNjF9Lm1hdC1jYWxlbmRhci1ib2R5LWNlbGwtY29udGVudFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtZGF0ZS1yYW5nZS1pbnB1dC1zZXBhcmF0b3JbX25nY29udGVudC0lQ09NUCVde2NvbG9yOiMyMTIxMjE7Ym9yZGVyLWNvbG9yOnRyYW5zcGFyZW50fS5tYXQtY2FsZW5kYXItYm9keS1kaXNhYmxlZFtfbmdjb250ZW50LSVDT01QJV0gPiAubWF0LWNhbGVuZGFyLWJvZHktY2VsbC1jb250ZW50W19uZ2NvbnRlbnQtJUNPTVAlXTpub3QoLm1hdC1jYWxlbmRhci1ib2R5LXNlbGVjdGVkKTpub3QoLm1hdC1jYWxlbmRhci1ib2R5LWNvbXBhcmlzb24taWRlbnRpY2FsKXtjb2xvcjojNzU3NTc1fS5tYXQtZm9ybS1maWVsZC1kaXNhYmxlZFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWRhdGUtcmFuZ2UtaW5wdXQtc2VwYXJhdG9yW19uZ2NvbnRlbnQtJUNPTVAlXXtjb2xvcjojNzU3NTc1fS5tYXQtY2FsZW5kYXItYm9keS1jZWxsW19uZ2NvbnRlbnQtJUNPTVAlXTpub3QoLm1hdC1jYWxlbmRhci1ib2R5LWRpc2FibGVkKTpob3ZlciA+IC5tYXQtY2FsZW5kYXItYm9keS1jZWxsLWNvbnRlbnRbX25nY29udGVudC0lQ09NUCVdOm5vdCgubWF0LWNhbGVuZGFyLWJvZHktc2VsZWN0ZWQpOm5vdCgubWF0LWNhbGVuZGFyLWJvZHktY29tcGFyaXNvbi1pZGVudGljYWwpLCAuY2RrLWtleWJvYXJkLWZvY3VzZWRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1jYWxlbmRhci1ib2R5LWFjdGl2ZVtfbmdjb250ZW50LSVDT01QJV0gPiAubWF0LWNhbGVuZGFyLWJvZHktY2VsbC1jb250ZW50W19uZ2NvbnRlbnQtJUNPTVAlXTpub3QoLm1hdC1jYWxlbmRhci1ib2R5LXNlbGVjdGVkKTpub3QoLm1hdC1jYWxlbmRhci1ib2R5LWNvbXBhcmlzb24taWRlbnRpY2FsKSwgLmNkay1wcm9ncmFtLWZvY3VzZWRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1jYWxlbmRhci1ib2R5LWFjdGl2ZVtfbmdjb250ZW50LSVDT01QJV0gPiAubWF0LWNhbGVuZGFyLWJvZHktY2VsbC1jb250ZW50W19uZ2NvbnRlbnQtJUNPTVAlXTpub3QoLm1hdC1jYWxlbmRhci1ib2R5LXNlbGVjdGVkKTpub3QoLm1hdC1jYWxlbmRhci1ib2R5LWNvbXBhcmlzb24taWRlbnRpY2FsKXtiYWNrZ3JvdW5kLWNvbG9yOnJnYmEoMCwwLDAsLjA0KX0ubWF0LWNhbGVuZGFyLWJvZHktaW4tcHJldmlld1tfbmdjb250ZW50LSVDT01QJV17Y29sb3I6cmdiYSgwLDAsMCwuMjQpfS5tYXQtY2FsZW5kYXItYm9keS10b2RheVtfbmdjb250ZW50LSVDT01QJV06bm90KC5tYXQtY2FsZW5kYXItYm9keS1zZWxlY3RlZCk6bm90KC5tYXQtY2FsZW5kYXItYm9keS1jb21wYXJpc29uLWlkZW50aWNhbCl7Ym9yZGVyLWNvbG9yOnJnYmEoMCwwLDAsLjM4KX0ubWF0LWNhbGVuZGFyLWJvZHktZGlzYWJsZWRbX25nY29udGVudC0lQ09NUCVdID4gLm1hdC1jYWxlbmRhci1ib2R5LXRvZGF5W19uZ2NvbnRlbnQtJUNPTVAlXTpub3QoLm1hdC1jYWxlbmRhci1ib2R5LXNlbGVjdGVkKTpub3QoLm1hdC1jYWxlbmRhci1ib2R5LWNvbXBhcmlzb24taWRlbnRpY2FsKXtib3JkZXItY29sb3I6cmdiYSgwLDAsMCwuMTgpfS5tYXQtY2FsZW5kYXItYm9keS1pbi1yYW5nZVtfbmdjb250ZW50LSVDT01QJV06OmJlZm9yZXtiYWNrZ3JvdW5kOnJnYmEoMjQ1LDEyNCwwLC4yKX0ubWF0LWNhbGVuZGFyLWJvZHktY29tcGFyaXNvbi1pZGVudGljYWxbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWNhbGVuZGFyLWJvZHktaW4tY29tcGFyaXNvbi1yYW5nZVtfbmdjb250ZW50LSVDT01QJV06OmJlZm9yZXtiYWNrZ3JvdW5kOnJnYmEoMjQ5LDE3MSwwLC4yKX0ubWF0LWNhbGVuZGFyLWJvZHktY29tcGFyaXNvbi1icmlkZ2Utc3RhcnRbX25nY29udGVudC0lQ09NUCVdOjpiZWZvcmUsIFtkaXI9cnRsXVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWNhbGVuZGFyLWJvZHktY29tcGFyaXNvbi1icmlkZ2UtZW5kW19uZ2NvbnRlbnQtJUNPTVAlXTo6YmVmb3Jle2JhY2tncm91bmQ6bGluZWFyLWdyYWRpZW50KHRvIHJpZ2h0LCByZ2JhKDI0NSwgMTI0LCAwLCAwLjIpIDUwJSwgcmdiYSgyNDksIDE3MSwgMCwgMC4yKSA1MCUpfS5tYXQtY2FsZW5kYXItYm9keS1jb21wYXJpc29uLWJyaWRnZS1lbmRbX25nY29udGVudC0lQ09NUCVdOjpiZWZvcmUsIFtkaXI9cnRsXVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWNhbGVuZGFyLWJvZHktY29tcGFyaXNvbi1icmlkZ2Utc3RhcnRbX25nY29udGVudC0lQ09NUCVdOjpiZWZvcmV7YmFja2dyb3VuZDpsaW5lYXItZ3JhZGllbnQodG8gbGVmdCwgcmdiYSgyNDUsIDEyNCwgMCwgMC4yKSA1MCUsIHJnYmEoMjQ5LCAxNzEsIDAsIDAuMikgNTAlKX0ubWF0LWNhbGVuZGFyLWJvZHktaW4tcmFuZ2VbX25nY29udGVudC0lQ09NUCVdID4gLm1hdC1jYWxlbmRhci1ib2R5LWNvbXBhcmlzb24taWRlbnRpY2FsW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1jYWxlbmRhci1ib2R5LWluLWNvbXBhcmlzb24tcmFuZ2UubWF0LWNhbGVuZGFyLWJvZHktaW4tcmFuZ2VbX25nY29udGVudC0lQ09NUCVdOjphZnRlcntiYWNrZ3JvdW5kOiNhOGRhYjV9Lm1hdC1jYWxlbmRhci1ib2R5LWNvbXBhcmlzb24taWRlbnRpY2FsLm1hdC1jYWxlbmRhci1ib2R5LXNlbGVjdGVkW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1jYWxlbmRhci1ib2R5LWluLWNvbXBhcmlzb24tcmFuZ2VbX25nY29udGVudC0lQ09NUCVdID4gLm1hdC1jYWxlbmRhci1ib2R5LXNlbGVjdGVkW19uZ2NvbnRlbnQtJUNPTVAlXXtiYWNrZ3JvdW5kOiM0NmEzNWV9Lm1hdC1jYWxlbmRhci1ib2R5LXNlbGVjdGVkW19uZ2NvbnRlbnQtJUNPTVAlXXtiYWNrZ3JvdW5kLWNvbG9yOiNmNTdjMDA7Y29sb3I6I2ZmZn0ubWF0LWNhbGVuZGFyLWJvZHktZGlzYWJsZWRbX25nY29udGVudC0lQ09NUCVdID4gLm1hdC1jYWxlbmRhci1ib2R5LXNlbGVjdGVkW19uZ2NvbnRlbnQtJUNPTVAlXXtiYWNrZ3JvdW5kLWNvbG9yOnJnYmEoMjQ1LDEyNCwwLC40KX0ubWF0LWNhbGVuZGFyLWJvZHktdG9kYXkubWF0LWNhbGVuZGFyLWJvZHktc2VsZWN0ZWRbX25nY29udGVudC0lQ09NUCVde2JveC1zaGFkb3c6aW5zZXQgMCAwIDAgMXB4ICNmZmZ9Lm1hdC1kYXRlcGlja2VyLWNvbnRlbnRbX25nY29udGVudC0lQ09NUCVde2JveC1zaGFkb3c6MHB4IDJweCA0cHggLTFweCByZ2JhKDAsIDAsIDAsIDAuMiksMHB4IDRweCA1cHggMHB4IHJnYmEoMCwgMCwgMCwgMC4xNCksMHB4IDFweCAxMHB4IDBweCByZ2JhKDAsIDAsIDAsIDAuMTIpO2JhY2tncm91bmQtY29sb3I6I2ZmZjtjb2xvcjojMjEyMTIxfS5tYXQtZGF0ZXBpY2tlci1jb250ZW50Lm1hdC1hY2NlbnRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1jYWxlbmRhci1ib2R5LWluLXJhbmdlW19uZ2NvbnRlbnQtJUNPTVAlXTo6YmVmb3Jle2JhY2tncm91bmQ6cmdiYSgyNTUsMTUyLDAsLjIpfS5tYXQtZGF0ZXBpY2tlci1jb250ZW50Lm1hdC1hY2NlbnRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1jYWxlbmRhci1ib2R5LWNvbXBhcmlzb24taWRlbnRpY2FsW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1kYXRlcGlja2VyLWNvbnRlbnQubWF0LWFjY2VudFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWNhbGVuZGFyLWJvZHktaW4tY29tcGFyaXNvbi1yYW5nZVtfbmdjb250ZW50LSVDT01QJV06OmJlZm9yZXtiYWNrZ3JvdW5kOnJnYmEoMjQ5LDE3MSwwLC4yKX0ubWF0LWRhdGVwaWNrZXItY29udGVudC5tYXQtYWNjZW50W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtY2FsZW5kYXItYm9keS1jb21wYXJpc29uLWJyaWRnZS1zdGFydFtfbmdjb250ZW50LSVDT01QJV06OmJlZm9yZSwgLm1hdC1kYXRlcGlja2VyLWNvbnRlbnQubWF0LWFjY2VudFtfbmdjb250ZW50LSVDT01QJV0gICBbZGlyPXJ0bF1bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1jYWxlbmRhci1ib2R5LWNvbXBhcmlzb24tYnJpZGdlLWVuZFtfbmdjb250ZW50LSVDT01QJV06OmJlZm9yZXtiYWNrZ3JvdW5kOmxpbmVhci1ncmFkaWVudCh0byByaWdodCwgcmdiYSgyNTUsIDE1MiwgMCwgMC4yKSA1MCUsIHJnYmEoMjQ5LCAxNzEsIDAsIDAuMikgNTAlKX0ubWF0LWRhdGVwaWNrZXItY29udGVudC5tYXQtYWNjZW50W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtY2FsZW5kYXItYm9keS1jb21wYXJpc29uLWJyaWRnZS1lbmRbX25nY29udGVudC0lQ09NUCVdOjpiZWZvcmUsIC5tYXQtZGF0ZXBpY2tlci1jb250ZW50Lm1hdC1hY2NlbnRbX25nY29udGVudC0lQ09NUCVdICAgW2Rpcj1ydGxdW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtY2FsZW5kYXItYm9keS1jb21wYXJpc29uLWJyaWRnZS1zdGFydFtfbmdjb250ZW50LSVDT01QJV06OmJlZm9yZXtiYWNrZ3JvdW5kOmxpbmVhci1ncmFkaWVudCh0byBsZWZ0LCByZ2JhKDI1NSwgMTUyLCAwLCAwLjIpIDUwJSwgcmdiYSgyNDksIDE3MSwgMCwgMC4yKSA1MCUpfS5tYXQtZGF0ZXBpY2tlci1jb250ZW50Lm1hdC1hY2NlbnRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1jYWxlbmRhci1ib2R5LWluLXJhbmdlW19uZ2NvbnRlbnQtJUNPTVAlXSA+IC5tYXQtY2FsZW5kYXItYm9keS1jb21wYXJpc29uLWlkZW50aWNhbFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtZGF0ZXBpY2tlci1jb250ZW50Lm1hdC1hY2NlbnRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1jYWxlbmRhci1ib2R5LWluLWNvbXBhcmlzb24tcmFuZ2UubWF0LWNhbGVuZGFyLWJvZHktaW4tcmFuZ2VbX25nY29udGVudC0lQ09NUCVdOjphZnRlcntiYWNrZ3JvdW5kOiNhOGRhYjV9Lm1hdC1kYXRlcGlja2VyLWNvbnRlbnQubWF0LWFjY2VudFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWNhbGVuZGFyLWJvZHktY29tcGFyaXNvbi1pZGVudGljYWwubWF0LWNhbGVuZGFyLWJvZHktc2VsZWN0ZWRbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWRhdGVwaWNrZXItY29udGVudC5tYXQtYWNjZW50W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtY2FsZW5kYXItYm9keS1pbi1jb21wYXJpc29uLXJhbmdlW19uZ2NvbnRlbnQtJUNPTVAlXSA+IC5tYXQtY2FsZW5kYXItYm9keS1zZWxlY3RlZFtfbmdjb250ZW50LSVDT01QJV17YmFja2dyb3VuZDojNDZhMzVlfS5tYXQtZGF0ZXBpY2tlci1jb250ZW50Lm1hdC1hY2NlbnRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1jYWxlbmRhci1ib2R5LXNlbGVjdGVkW19uZ2NvbnRlbnQtJUNPTVAlXXtiYWNrZ3JvdW5kLWNvbG9yOiNmZjk4MDA7Y29sb3I6I2ZmZn0ubWF0LWRhdGVwaWNrZXItY29udGVudC5tYXQtYWNjZW50W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtY2FsZW5kYXItYm9keS1kaXNhYmxlZFtfbmdjb250ZW50LSVDT01QJV0gPiAubWF0LWNhbGVuZGFyLWJvZHktc2VsZWN0ZWRbX25nY29udGVudC0lQ09NUCVde2JhY2tncm91bmQtY29sb3I6cmdiYSgyNTUsMTUyLDAsLjQpfS5tYXQtZGF0ZXBpY2tlci1jb250ZW50Lm1hdC1hY2NlbnRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1jYWxlbmRhci1ib2R5LXRvZGF5Lm1hdC1jYWxlbmRhci1ib2R5LXNlbGVjdGVkW19uZ2NvbnRlbnQtJUNPTVAlXXtib3gtc2hhZG93Omluc2V0IDAgMCAwIDFweCAjZmZmfS5tYXQtZGF0ZXBpY2tlci1jb250ZW50Lm1hdC13YXJuW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtY2FsZW5kYXItYm9keS1pbi1yYW5nZVtfbmdjb250ZW50LSVDT01QJV06OmJlZm9yZXtiYWNrZ3JvdW5kOnJnYmEoMjQ0LDY3LDU0LC4yKX0ubWF0LWRhdGVwaWNrZXItY29udGVudC5tYXQtd2Fybltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWNhbGVuZGFyLWJvZHktY29tcGFyaXNvbi1pZGVudGljYWxbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWRhdGVwaWNrZXItY29udGVudC5tYXQtd2Fybltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWNhbGVuZGFyLWJvZHktaW4tY29tcGFyaXNvbi1yYW5nZVtfbmdjb250ZW50LSVDT01QJV06OmJlZm9yZXtiYWNrZ3JvdW5kOnJnYmEoMjQ5LDE3MSwwLC4yKX0ubWF0LWRhdGVwaWNrZXItY29udGVudC5tYXQtd2Fybltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWNhbGVuZGFyLWJvZHktY29tcGFyaXNvbi1icmlkZ2Utc3RhcnRbX25nY29udGVudC0lQ09NUCVdOjpiZWZvcmUsIC5tYXQtZGF0ZXBpY2tlci1jb250ZW50Lm1hdC13YXJuW19uZ2NvbnRlbnQtJUNPTVAlXSAgIFtkaXI9cnRsXVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWNhbGVuZGFyLWJvZHktY29tcGFyaXNvbi1icmlkZ2UtZW5kW19uZ2NvbnRlbnQtJUNPTVAlXTo6YmVmb3Jle2JhY2tncm91bmQ6bGluZWFyLWdyYWRpZW50KHRvIHJpZ2h0LCByZ2JhKDI0NCwgNjcsIDU0LCAwLjIpIDUwJSwgcmdiYSgyNDksIDE3MSwgMCwgMC4yKSA1MCUpfS5tYXQtZGF0ZXBpY2tlci1jb250ZW50Lm1hdC13YXJuW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtY2FsZW5kYXItYm9keS1jb21wYXJpc29uLWJyaWRnZS1lbmRbX25nY29udGVudC0lQ09NUCVdOjpiZWZvcmUsIC5tYXQtZGF0ZXBpY2tlci1jb250ZW50Lm1hdC13YXJuW19uZ2NvbnRlbnQtJUNPTVAlXSAgIFtkaXI9cnRsXVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWNhbGVuZGFyLWJvZHktY29tcGFyaXNvbi1icmlkZ2Utc3RhcnRbX25nY29udGVudC0lQ09NUCVdOjpiZWZvcmV7YmFja2dyb3VuZDpsaW5lYXItZ3JhZGllbnQodG8gbGVmdCwgcmdiYSgyNDQsIDY3LCA1NCwgMC4yKSA1MCUsIHJnYmEoMjQ5LCAxNzEsIDAsIDAuMikgNTAlKX0ubWF0LWRhdGVwaWNrZXItY29udGVudC5tYXQtd2Fybltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWNhbGVuZGFyLWJvZHktaW4tcmFuZ2VbX25nY29udGVudC0lQ09NUCVdID4gLm1hdC1jYWxlbmRhci1ib2R5LWNvbXBhcmlzb24taWRlbnRpY2FsW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1kYXRlcGlja2VyLWNvbnRlbnQubWF0LXdhcm5bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1jYWxlbmRhci1ib2R5LWluLWNvbXBhcmlzb24tcmFuZ2UubWF0LWNhbGVuZGFyLWJvZHktaW4tcmFuZ2VbX25nY29udGVudC0lQ09NUCVdOjphZnRlcntiYWNrZ3JvdW5kOiNhOGRhYjV9Lm1hdC1kYXRlcGlja2VyLWNvbnRlbnQubWF0LXdhcm5bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1jYWxlbmRhci1ib2R5LWNvbXBhcmlzb24taWRlbnRpY2FsLm1hdC1jYWxlbmRhci1ib2R5LXNlbGVjdGVkW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1kYXRlcGlja2VyLWNvbnRlbnQubWF0LXdhcm5bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1jYWxlbmRhci1ib2R5LWluLWNvbXBhcmlzb24tcmFuZ2VbX25nY29udGVudC0lQ09NUCVdID4gLm1hdC1jYWxlbmRhci1ib2R5LXNlbGVjdGVkW19uZ2NvbnRlbnQtJUNPTVAlXXtiYWNrZ3JvdW5kOiM0NmEzNWV9Lm1hdC1kYXRlcGlja2VyLWNvbnRlbnQubWF0LXdhcm5bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1jYWxlbmRhci1ib2R5LXNlbGVjdGVkW19uZ2NvbnRlbnQtJUNPTVAlXXtiYWNrZ3JvdW5kLWNvbG9yOiNmNDQzMzY7Y29sb3I6I2ZmZn0ubWF0LWRhdGVwaWNrZXItY29udGVudC5tYXQtd2Fybltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWNhbGVuZGFyLWJvZHktZGlzYWJsZWRbX25nY29udGVudC0lQ09NUCVdID4gLm1hdC1jYWxlbmRhci1ib2R5LXNlbGVjdGVkW19uZ2NvbnRlbnQtJUNPTVAlXXtiYWNrZ3JvdW5kLWNvbG9yOnJnYmEoMjQ0LDY3LDU0LC40KX0ubWF0LWRhdGVwaWNrZXItY29udGVudC5tYXQtd2Fybltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWNhbGVuZGFyLWJvZHktdG9kYXkubWF0LWNhbGVuZGFyLWJvZHktc2VsZWN0ZWRbX25nY29udGVudC0lQ09NUCVde2JveC1zaGFkb3c6aW5zZXQgMCAwIDAgMXB4ICNmZmZ9Lm1hdC1kYXRlcGlja2VyLWNvbnRlbnQtdG91Y2hbX25nY29udGVudC0lQ09NUCVde2JveC1zaGFkb3c6MHB4IDBweCAwcHggMHB4IHJnYmEoMCwgMCwgMCwgMC4yKSwwcHggMHB4IDBweCAwcHggcmdiYSgwLCAwLCAwLCAwLjE0KSwwcHggMHB4IDBweCAwcHggcmdiYSgwLCAwLCAwLCAwLjEyKX0ubWF0LWRhdGVwaWNrZXItdG9nZ2xlLWFjdGl2ZVtfbmdjb250ZW50LSVDT01QJV17Y29sb3I6I2Y1N2MwMH0ubWF0LWRhdGVwaWNrZXItdG9nZ2xlLWFjdGl2ZS5tYXQtYWNjZW50W19uZ2NvbnRlbnQtJUNPTVAlXXtjb2xvcjojZmY5ODAwfS5tYXQtZGF0ZXBpY2tlci10b2dnbGUtYWN0aXZlLm1hdC13YXJuW19uZ2NvbnRlbnQtJUNPTVAlXXtjb2xvcjojZjQ0MzM2fS5tYXQtZGF0ZS1yYW5nZS1pbnB1dC1pbm5lcltkaXNhYmxlZF1bX25nY29udGVudC0lQ09NUCVde2NvbG9yOiM3NTc1NzV9Lm1hdC1kaWFsb2ctY29udGFpbmVyW19uZ2NvbnRlbnQtJUNPTVAlXXtib3gtc2hhZG93OjBweCAxMXB4IDE1cHggLTdweCByZ2JhKDAsIDAsIDAsIDAuMiksMHB4IDI0cHggMzhweCAzcHggcmdiYSgwLCAwLCAwLCAwLjE0KSwwcHggOXB4IDQ2cHggOHB4IHJnYmEoMCwgMCwgMCwgMC4xMik7YmFja2dyb3VuZDojZmZmO2NvbG9yOiMyMTIxMjF9Lm1hdC1kaXZpZGVyW19uZ2NvbnRlbnQtJUNPTVAlXXtib3JkZXItdG9wLWNvbG9yOnJnYmEoMCwwLDAsLjEyKX0ubWF0LWRpdmlkZXItdmVydGljYWxbX25nY29udGVudC0lQ09NUCVde2JvcmRlci1yaWdodC1jb2xvcjpyZ2JhKDAsMCwwLC4xMil9Lm1hdC1leHBhbnNpb24tcGFuZWxbX25nY29udGVudC0lQ09NUCVde2JhY2tncm91bmQ6I2ZmZjtjb2xvcjojMjEyMTIxfS5tYXQtZXhwYW5zaW9uLXBhbmVsW19uZ2NvbnRlbnQtJUNPTVAlXTpub3QoW2NsYXNzKj1tYXQtZWxldmF0aW9uLXpdKXtib3gtc2hhZG93OjBweCAzcHggMXB4IC0ycHggcmdiYSgwLCAwLCAwLCAwLjIpLDBweCAycHggMnB4IDBweCByZ2JhKDAsIDAsIDAsIDAuMTQpLDBweCAxcHggNXB4IDBweCByZ2JhKDAsIDAsIDAsIDAuMTIpfS5tYXQtYWN0aW9uLXJvd1tfbmdjb250ZW50LSVDT01QJV17Ym9yZGVyLXRvcC1jb2xvcjpyZ2JhKDAsMCwwLC4xMil9Lm1hdC1leHBhbnNpb24tcGFuZWxbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1leHBhbnNpb24tcGFuZWwtaGVhZGVyLmNkay1rZXlib2FyZC1mb2N1c2VkW19uZ2NvbnRlbnQtJUNPTVAlXTpub3QoW2FyaWEtZGlzYWJsZWQ9dHJ1ZV0pLCAubWF0LWV4cGFuc2lvbi1wYW5lbFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWV4cGFuc2lvbi1wYW5lbC1oZWFkZXIuY2RrLXByb2dyYW0tZm9jdXNlZFtfbmdjb250ZW50LSVDT01QJV06bm90KFthcmlhLWRpc2FibGVkPXRydWVdKSwgLm1hdC1leHBhbnNpb24tcGFuZWxbX25nY29udGVudC0lQ09NUCVdOm5vdCgubWF0LWV4cGFuZGVkKSAgIC5tYXQtZXhwYW5zaW9uLXBhbmVsLWhlYWRlcltfbmdjb250ZW50LSVDT01QJV06aG92ZXI6bm90KFthcmlhLWRpc2FibGVkPXRydWVdKXtiYWNrZ3JvdW5kOnJnYmEoMCwwLDAsLjA0KX1AbWVkaWEoaG92ZXI6IG5vbmUpey5tYXQtZXhwYW5zaW9uLXBhbmVsW19uZ2NvbnRlbnQtJUNPTVAlXTpub3QoLm1hdC1leHBhbmRlZCk6bm90KFthcmlhLWRpc2FibGVkPXRydWVdKSAgIC5tYXQtZXhwYW5zaW9uLXBhbmVsLWhlYWRlcltfbmdjb250ZW50LSVDT01QJV06aG92ZXJ7YmFja2dyb3VuZDojZmZmfX0ubWF0LWV4cGFuc2lvbi1wYW5lbC1oZWFkZXItdGl0bGVbX25nY29udGVudC0lQ09NUCVde2NvbG9yOiMyMTIxMjF9Lm1hdC1leHBhbnNpb24tcGFuZWwtaGVhZGVyLWRlc2NyaXB0aW9uW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1leHBhbnNpb24taW5kaWNhdG9yW19uZ2NvbnRlbnQtJUNPTVAlXTo6YWZ0ZXJ7Y29sb3I6IzYxNjE2MX0ubWF0LWV4cGFuc2lvbi1wYW5lbC1oZWFkZXJbYXJpYS1kaXNhYmxlZD10cnVlXVtfbmdjb250ZW50LSVDT01QJV17Y29sb3I6cmdiYSgwLDAsMCwuMjYpfS5tYXQtZXhwYW5zaW9uLXBhbmVsLWhlYWRlclthcmlhLWRpc2FibGVkPXRydWVdW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZXhwYW5zaW9uLXBhbmVsLWhlYWRlci10aXRsZVtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtZXhwYW5zaW9uLXBhbmVsLWhlYWRlclthcmlhLWRpc2FibGVkPXRydWVdW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZXhwYW5zaW9uLXBhbmVsLWhlYWRlci1kZXNjcmlwdGlvbltfbmdjb250ZW50LSVDT01QJV17Y29sb3I6aW5oZXJpdH0ubWF0LWV4cGFuc2lvbi1wYW5lbC1oZWFkZXJbX25nY29udGVudC0lQ09NUCVde2hlaWdodDo0OHB4fS5tYXQtZXhwYW5zaW9uLXBhbmVsLWhlYWRlci5tYXQtZXhwYW5kZWRbX25nY29udGVudC0lQ09NUCVde2hlaWdodDo2NHB4fS5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17Y29sb3I6cmdiYSg5Nyw5Nyw5NywuNil9Lm1hdC1oaW50W19uZ2NvbnRlbnQtJUNPTVAlXXtjb2xvcjpyZ2JhKDk3LDk3LDk3LC42KX0ubWF0LWZvcm0tZmllbGQubWF0LWZvY3VzZWRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXtjb2xvcjojZjU3YzAwfS5tYXQtZm9ybS1maWVsZC5tYXQtZm9jdXNlZFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWwubWF0LWFjY2VudFtfbmdjb250ZW50LSVDT01QJV17Y29sb3I6I2ZmOTgwMH0ubWF0LWZvcm0tZmllbGQubWF0LWZvY3VzZWRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsLm1hdC13YXJuW19uZ2NvbnRlbnQtJUNPTVAlXXtjb2xvcjojZjQ0MzM2fS5tYXQtZm9jdXNlZFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtcmVxdWlyZWQtbWFya2VyW19uZ2NvbnRlbnQtJUNPTVAlXXtjb2xvcjojZmY5ODAwfS5tYXQtZm9ybS1maWVsZC1yaXBwbGVbX25nY29udGVudC0lQ09NUCVde2JhY2tncm91bmQtY29sb3I6cmdiYSgwLDAsMCwuODcpfS5tYXQtZm9ybS1maWVsZC5tYXQtZm9jdXNlZFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtcmlwcGxlW19uZ2NvbnRlbnQtJUNPTVAlXXtiYWNrZ3JvdW5kLWNvbG9yOiNmNTdjMDB9Lm1hdC1mb3JtLWZpZWxkLm1hdC1mb2N1c2VkW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1yaXBwbGUubWF0LWFjY2VudFtfbmdjb250ZW50LSVDT01QJV17YmFja2dyb3VuZC1jb2xvcjojZmY5ODAwfS5tYXQtZm9ybS1maWVsZC5tYXQtZm9jdXNlZFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtcmlwcGxlLm1hdC13YXJuW19uZ2NvbnRlbnQtJUNPTVAlXXtiYWNrZ3JvdW5kLWNvbG9yOiNmNDQzMzZ9Lm1hdC1mb3JtLWZpZWxkLXR5cGUtbWF0LW5hdGl2ZS1zZWxlY3QubWF0LWZvY3VzZWRbX25nY29udGVudC0lQ09NUCVdOm5vdCgubWF0LWZvcm0tZmllbGQtaW52YWxpZCkgICAubWF0LWZvcm0tZmllbGQtaW5maXhbX25nY29udGVudC0lQ09NUCVdOjphZnRlcntjb2xvcjojZjU3YzAwfS5tYXQtZm9ybS1maWVsZC10eXBlLW1hdC1uYXRpdmUtc2VsZWN0Lm1hdC1mb2N1c2VkW19uZ2NvbnRlbnQtJUNPTVAlXTpub3QoLm1hdC1mb3JtLWZpZWxkLWludmFsaWQpLm1hdC1hY2NlbnQgICAubWF0LWZvcm0tZmllbGQtaW5maXhbX25nY29udGVudC0lQ09NUCVdOjphZnRlcntjb2xvcjojZmY5ODAwfS5tYXQtZm9ybS1maWVsZC10eXBlLW1hdC1uYXRpdmUtc2VsZWN0Lm1hdC1mb2N1c2VkW19uZ2NvbnRlbnQtJUNPTVAlXTpub3QoLm1hdC1mb3JtLWZpZWxkLWludmFsaWQpLm1hdC13YXJuICAgLm1hdC1mb3JtLWZpZWxkLWluZml4W19uZ2NvbnRlbnQtJUNPTVAlXTo6YWZ0ZXJ7Y29sb3I6I2Y0NDMzNn0ubWF0LWZvcm0tZmllbGQubWF0LWZvcm0tZmllbGQtaW52YWxpZFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVde2NvbG9yOiNmNDQzMzZ9Lm1hdC1mb3JtLWZpZWxkLm1hdC1mb3JtLWZpZWxkLWludmFsaWRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsLm1hdC1hY2NlbnRbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWZvcm0tZmllbGQubWF0LWZvcm0tZmllbGQtaW52YWxpZFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLXJlcXVpcmVkLW1hcmtlcltfbmdjb250ZW50LSVDT01QJV17Y29sb3I6I2Y0NDMzNn0ubWF0LWZvcm0tZmllbGQubWF0LWZvcm0tZmllbGQtaW52YWxpZFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtcmlwcGxlW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1mb3JtLWZpZWxkLm1hdC1mb3JtLWZpZWxkLWludmFsaWRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLXJpcHBsZS5tYXQtYWNjZW50W19uZ2NvbnRlbnQtJUNPTVAlXXtiYWNrZ3JvdW5kLWNvbG9yOiNmNDQzMzZ9Lm1hdC1lcnJvcltfbmdjb250ZW50LSVDT01QJV17Y29sb3I6I2Y0NDMzNn0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1sZWdhY3lbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXtjb2xvcjojNjE2MTYxfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWxlZ2FjeVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWhpbnRbX25nY29udGVudC0lQ09NUCVde2NvbG9yOiM2MTYxNjF9Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtbGVnYWN5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC11bmRlcmxpbmVbX25nY29udGVudC0lQ09NUCVde2JhY2tncm91bmQtY29sb3I6cmdiYSgwLDAsMCwuNDIpfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWxlZ2FjeS5tYXQtZm9ybS1maWVsZC1kaXNhYmxlZFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtdW5kZXJsaW5lW19uZ2NvbnRlbnQtJUNPTVAlXXtiYWNrZ3JvdW5kLWltYWdlOmxpbmVhci1ncmFkaWVudCh0byByaWdodCwgcmdiYSgwLCAwLCAwLCAwLjQyKSAwJSwgcmdiYSgwLCAwLCAwLCAwLjQyKSAzMyUsIHRyYW5zcGFyZW50IDAlKTtiYWNrZ3JvdW5kLXNpemU6NHB4IDEwMCU7YmFja2dyb3VuZC1yZXBlYXQ6cmVwZWF0LXh9Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2Utc3RhbmRhcmRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLXVuZGVybGluZVtfbmdjb250ZW50LSVDT01QJV17YmFja2dyb3VuZC1jb2xvcjpyZ2JhKDAsMCwwLC40Mil9Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2Utc3RhbmRhcmQubWF0LWZvcm0tZmllbGQtZGlzYWJsZWRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLXVuZGVybGluZVtfbmdjb250ZW50LSVDT01QJV17YmFja2dyb3VuZC1pbWFnZTpsaW5lYXItZ3JhZGllbnQodG8gcmlnaHQsIHJnYmEoMCwgMCwgMCwgMC40MikgMCUsIHJnYmEoMCwgMCwgMCwgMC40MikgMzMlLCB0cmFuc3BhcmVudCAwJSk7YmFja2dyb3VuZC1zaXplOjRweCAxMDAlO2JhY2tncm91bmQtcmVwZWF0OnJlcGVhdC14fS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWZpbGxbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWZsZXhbX25nY29udGVudC0lQ09NUCVde2JhY2tncm91bmQtY29sb3I6cmdiYSgwLDAsMCwuMDQpfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWZpbGwubWF0LWZvcm0tZmllbGQtZGlzYWJsZWRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWZsZXhbX25nY29udGVudC0lQ09NUCVde2JhY2tncm91bmQtY29sb3I6cmdiYSgwLDAsMCwuMDIpfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWZpbGxbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLXVuZGVybGluZVtfbmdjb250ZW50LSVDT01QJV06OmJlZm9yZXtiYWNrZ3JvdW5kLWNvbG9yOnJnYmEoMCwwLDAsLjQyKX0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1maWxsLm1hdC1mb3JtLWZpZWxkLWRpc2FibGVkW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17Y29sb3I6Izc1NzU3NX0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1maWxsLm1hdC1mb3JtLWZpZWxkLWRpc2FibGVkW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC11bmRlcmxpbmVbX25nY29udGVudC0lQ09NUCVdOjpiZWZvcmV7YmFja2dyb3VuZC1jb2xvcjp0cmFuc3BhcmVudH0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1vdXRsaW5lW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1vdXRsaW5lW19uZ2NvbnRlbnQtJUNPTVAlXXtjb2xvcjpyZ2JhKDAsMCwwLC4xMil9Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2Utb3V0bGluZVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtb3V0bGluZS10aGlja1tfbmdjb250ZW50LSVDT01QJV17Y29sb3I6cmdiYSgwLDAsMCwuODcpfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLW91dGxpbmUubWF0LWZvY3VzZWRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLW91dGxpbmUtdGhpY2tbX25nY29udGVudC0lQ09NUCVde2NvbG9yOiNmNTdjMDB9Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2Utb3V0bGluZS5tYXQtZm9jdXNlZC5tYXQtYWNjZW50W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1vdXRsaW5lLXRoaWNrW19uZ2NvbnRlbnQtJUNPTVAlXXtjb2xvcjojZmY5ODAwfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLW91dGxpbmUubWF0LWZvY3VzZWQubWF0LXdhcm5bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLW91dGxpbmUtdGhpY2tbX25nY29udGVudC0lQ09NUCVde2NvbG9yOiNmNDQzMzZ9Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2Utb3V0bGluZS5tYXQtZm9ybS1maWVsZC1pbnZhbGlkLm1hdC1mb3JtLWZpZWxkLWludmFsaWRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLW91dGxpbmUtdGhpY2tbX25nY29udGVudC0lQ09NUCVde2NvbG9yOiNmNDQzMzZ9Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2Utb3V0bGluZS5tYXQtZm9ybS1maWVsZC1kaXNhYmxlZFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVde2NvbG9yOiM3NTc1NzV9Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2Utb3V0bGluZS5tYXQtZm9ybS1maWVsZC1kaXNhYmxlZFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtb3V0bGluZVtfbmdjb250ZW50LSVDT01QJV17Y29sb3I6cmdiYSgwLDAsMCwuMDYpfS5tYXQtaWNvbi5tYXQtcHJpbWFyeVtfbmdjb250ZW50LSVDT01QJV17Y29sb3I6I2Y1N2MwMH0ubWF0LWljb24ubWF0LWFjY2VudFtfbmdjb250ZW50LSVDT01QJV17Y29sb3I6I2ZmOTgwMH0ubWF0LWljb24ubWF0LXdhcm5bX25nY29udGVudC0lQ09NUCVde2NvbG9yOiNmNDQzMzZ9Lm1hdC1mb3JtLWZpZWxkLXR5cGUtbWF0LW5hdGl2ZS1zZWxlY3RbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWluZml4W19uZ2NvbnRlbnQtJUNPTVAlXTo6YWZ0ZXJ7Y29sb3I6IzYxNjE2MX0ubWF0LWlucHV0LWVsZW1lbnRbX25nY29udGVudC0lQ09NUCVdOmRpc2FibGVkLCAubWF0LWZvcm0tZmllbGQtdHlwZS1tYXQtbmF0aXZlLXNlbGVjdC5tYXQtZm9ybS1maWVsZC1kaXNhYmxlZFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtaW5maXhbX25nY29udGVudC0lQ09NUCVdOjphZnRlcntjb2xvcjojNzU3NTc1fS5tYXQtaW5wdXQtZWxlbWVudFtfbmdjb250ZW50LSVDT01QJV17Y2FyZXQtY29sb3I6I2Y1N2MwMH0ubWF0LWlucHV0LWVsZW1lbnRbX25nY29udGVudC0lQ09NUCVdOjpwbGFjZWhvbGRlcntjb2xvcjpyZ2JhKDk3LDk3LDk3LC40Mil9Lm1hdC1pbnB1dC1lbGVtZW50W19uZ2NvbnRlbnQtJUNPTVAlXTo6LW1vei1wbGFjZWhvbGRlcntjb2xvcjpyZ2JhKDk3LDk3LDk3LC40Mil9Lm1hdC1pbnB1dC1lbGVtZW50W19uZ2NvbnRlbnQtJUNPTVAlXTo6LXdlYmtpdC1pbnB1dC1wbGFjZWhvbGRlcntjb2xvcjpyZ2JhKDk3LDk3LDk3LC40Mil9Lm1hdC1pbnB1dC1lbGVtZW50W19uZ2NvbnRlbnQtJUNPTVAlXTotbXMtaW5wdXQtcGxhY2Vob2xkZXJ7Y29sb3I6cmdiYSg5Nyw5Nyw5NywuNDIpfS5tYXQtZm9ybS1maWVsZC5tYXQtYWNjZW50W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaW5wdXQtZWxlbWVudFtfbmdjb250ZW50LSVDT01QJV17Y2FyZXQtY29sb3I6I2ZmOTgwMH0ubWF0LWZvcm0tZmllbGQubWF0LXdhcm5bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pbnB1dC1lbGVtZW50W19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1mb3JtLWZpZWxkLWludmFsaWRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pbnB1dC1lbGVtZW50W19uZ2NvbnRlbnQtJUNPTVAlXXtjYXJldC1jb2xvcjojZjQ0MzM2fS5tYXQtZm9ybS1maWVsZC10eXBlLW1hdC1uYXRpdmUtc2VsZWN0Lm1hdC1mb3JtLWZpZWxkLWludmFsaWRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWluZml4W19uZ2NvbnRlbnQtJUNPTVAlXTo6YWZ0ZXJ7Y29sb3I6I2Y0NDMzNn0ubWF0LWxpc3QtYmFzZVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpc3QtaXRlbVtfbmdjb250ZW50LSVDT01QJV17Y29sb3I6IzIxMjEyMX0ubWF0LWxpc3QtYmFzZVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpc3Qtb3B0aW9uW19uZ2NvbnRlbnQtJUNPTVAlXXtjb2xvcjojMjEyMTIxfS5tYXQtbGlzdC1iYXNlW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtc3ViaGVhZGVyW19uZ2NvbnRlbnQtJUNPTVAlXXtjb2xvcjojNjE2MTYxfS5tYXQtbGlzdC1pdGVtLWRpc2FibGVkW19uZ2NvbnRlbnQtJUNPTVAlXXtiYWNrZ3JvdW5kLWNvbG9yOiNlZWV9Lm1hdC1saXN0LW9wdGlvbltfbmdjb250ZW50LSVDT01QJV06aG92ZXIsIC5tYXQtbGlzdC1vcHRpb25bX25nY29udGVudC0lQ09NUCVdOmZvY3VzLCAubWF0LW5hdi1saXN0W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGlzdC1pdGVtW19uZ2NvbnRlbnQtJUNPTVAlXTpob3ZlciwgLm1hdC1uYXYtbGlzdFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpc3QtaXRlbVtfbmdjb250ZW50LSVDT01QJV06Zm9jdXMsIC5tYXQtYWN0aW9uLWxpc3RbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saXN0LWl0ZW1bX25nY29udGVudC0lQ09NUCVdOmhvdmVyLCAubWF0LWFjdGlvbi1saXN0W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGlzdC1pdGVtW19uZ2NvbnRlbnQtJUNPTVAlXTpmb2N1c3tiYWNrZ3JvdW5kOnJnYmEoMCwwLDAsLjA0KX0ubWF0LWxpc3Qtc2luZ2xlLXNlbGVjdGVkLW9wdGlvbltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtbGlzdC1zaW5nbGUtc2VsZWN0ZWQtb3B0aW9uW19uZ2NvbnRlbnQtJUNPTVAlXTpob3ZlciwgLm1hdC1saXN0LXNpbmdsZS1zZWxlY3RlZC1vcHRpb25bX25nY29udGVudC0lQ09NUCVdOmZvY3Vze2JhY2tncm91bmQ6cmdiYSgwLDAsMCwuMTIpfS5tYXQtbWVudS1wYW5lbFtfbmdjb250ZW50LSVDT01QJV17YmFja2dyb3VuZDojZmZmfS5tYXQtbWVudS1wYW5lbFtfbmdjb250ZW50LSVDT01QJV06bm90KFtjbGFzcyo9bWF0LWVsZXZhdGlvbi16XSl7Ym94LXNoYWRvdzowcHggMnB4IDRweCAtMXB4IHJnYmEoMCwgMCwgMCwgMC4yKSwwcHggNHB4IDVweCAwcHggcmdiYSgwLCAwLCAwLCAwLjE0KSwwcHggMXB4IDEwcHggMHB4IHJnYmEoMCwgMCwgMCwgMC4xMil9Lm1hdC1tZW51LWl0ZW1bX25nY29udGVudC0lQ09NUCVde2JhY2tncm91bmQ6dHJhbnNwYXJlbnQ7Y29sb3I6IzIxMjEyMX0ubWF0LW1lbnUtaXRlbVtkaXNhYmxlZF1bX25nY29udGVudC0lQ09NUCVdLCAubWF0LW1lbnUtaXRlbVtkaXNhYmxlZF1bX25nY29udGVudC0lQ09NUCVdOjphZnRlcntjb2xvcjpyZ2JhKDAsMCwwLC4zOCl9Lm1hdC1tZW51LWl0ZW1bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pY29uLW5vLWNvbG9yW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1tZW51LWl0ZW0tc3VibWVudS10cmlnZ2VyW19uZ2NvbnRlbnQtJUNPTVAlXTo6YWZ0ZXJ7Y29sb3I6cmdiYSgwLDAsMCwuNTQpfS5tYXQtbWVudS1pdGVtW19uZ2NvbnRlbnQtJUNPTVAlXTpob3Zlcjpub3QoW2Rpc2FibGVkXSksIC5tYXQtbWVudS1pdGVtLmNkay1wcm9ncmFtLWZvY3VzZWRbX25nY29udGVudC0lQ09NUCVdOm5vdChbZGlzYWJsZWRdKSwgLm1hdC1tZW51LWl0ZW0uY2RrLWtleWJvYXJkLWZvY3VzZWRbX25nY29udGVudC0lQ09NUCVdOm5vdChbZGlzYWJsZWRdKSwgLm1hdC1tZW51LWl0ZW0taGlnaGxpZ2h0ZWRbX25nY29udGVudC0lQ09NUCVdOm5vdChbZGlzYWJsZWRdKXtiYWNrZ3JvdW5kOnJnYmEoMCwwLDAsLjA0KX0ubWF0LXBhZ2luYXRvcltfbmdjb250ZW50LSVDT01QJV17YmFja2dyb3VuZDojZmZmfS5tYXQtcGFnaW5hdG9yW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1wYWdpbmF0b3ItcGFnZS1zaXplW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtc2VsZWN0LXRyaWdnZXJbX25nY29udGVudC0lQ09NUCVde2NvbG9yOiM2MTYxNjF9Lm1hdC1wYWdpbmF0b3ItZGVjcmVtZW50W19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1wYWdpbmF0b3ItaW5jcmVtZW50W19uZ2NvbnRlbnQtJUNPTVAlXXtib3JkZXItdG9wOjJweCBzb2xpZCByZ2JhKDAsMCwwLC41NCk7Ym9yZGVyLXJpZ2h0OjJweCBzb2xpZCByZ2JhKDAsMCwwLC41NCl9Lm1hdC1wYWdpbmF0b3ItZmlyc3RbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXBhZ2luYXRvci1sYXN0W19uZ2NvbnRlbnQtJUNPTVAlXXtib3JkZXItdG9wOjJweCBzb2xpZCByZ2JhKDAsMCwwLC41NCl9Lm1hdC1pY29uLWJ1dHRvbltkaXNhYmxlZF1bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1wYWdpbmF0b3ItZGVjcmVtZW50W19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1pY29uLWJ1dHRvbltkaXNhYmxlZF1bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1wYWdpbmF0b3ItaW5jcmVtZW50W19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1pY29uLWJ1dHRvbltkaXNhYmxlZF1bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1wYWdpbmF0b3ItZmlyc3RbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWljb24tYnV0dG9uW2Rpc2FibGVkXVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXBhZ2luYXRvci1sYXN0W19uZ2NvbnRlbnQtJUNPTVAlXXtib3JkZXItY29sb3I6cmdiYSgwLDAsMCwuMzgpfS5tYXQtcGFnaW5hdG9yLWNvbnRhaW5lcltfbmdjb250ZW50LSVDT01QJV17bWluLWhlaWdodDo1NnB4fS5tYXQtcHJvZ3Jlc3MtYmFyLWJhY2tncm91bmRbX25nY29udGVudC0lQ09NUCVde2ZpbGw6I2ZmOTgwMH0ubWF0LXByb2dyZXNzLWJhci1idWZmZXJbX25nY29udGVudC0lQ09NUCVde2JhY2tncm91bmQtY29sb3I6I2ZmOTgwMH0ubWF0LXByb2dyZXNzLWJhci1maWxsW19uZ2NvbnRlbnQtJUNPTVAlXTo6YWZ0ZXJ7YmFja2dyb3VuZC1jb2xvcjojZjU3YzAwfS5tYXQtcHJvZ3Jlc3MtYmFyLm1hdC1hY2NlbnRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1wcm9ncmVzcy1iYXItYmFja2dyb3VuZFtfbmdjb250ZW50LSVDT01QJV17ZmlsbDojZmY5ODAwfS5tYXQtcHJvZ3Jlc3MtYmFyLm1hdC1hY2NlbnRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1wcm9ncmVzcy1iYXItYnVmZmVyW19uZ2NvbnRlbnQtJUNPTVAlXXtiYWNrZ3JvdW5kLWNvbG9yOiNmZjk4MDB9Lm1hdC1wcm9ncmVzcy1iYXIubWF0LWFjY2VudFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXByb2dyZXNzLWJhci1maWxsW19uZ2NvbnRlbnQtJUNPTVAlXTo6YWZ0ZXJ7YmFja2dyb3VuZC1jb2xvcjojZmY5ODAwfS5tYXQtcHJvZ3Jlc3MtYmFyLm1hdC13YXJuW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtcHJvZ3Jlc3MtYmFyLWJhY2tncm91bmRbX25nY29udGVudC0lQ09NUCVde2ZpbGw6I2ZmY2RkMn0ubWF0LXByb2dyZXNzLWJhci5tYXQtd2Fybltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXByb2dyZXNzLWJhci1idWZmZXJbX25nY29udGVudC0lQ09NUCVde2JhY2tncm91bmQtY29sb3I6I2ZmY2RkMn0ubWF0LXByb2dyZXNzLWJhci5tYXQtd2Fybltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXByb2dyZXNzLWJhci1maWxsW19uZ2NvbnRlbnQtJUNPTVAlXTo6YWZ0ZXJ7YmFja2dyb3VuZC1jb2xvcjojZjQ0MzM2fS5tYXQtcHJvZ3Jlc3Mtc3Bpbm5lcltfbmdjb250ZW50LSVDT01QJV0gICBjaXJjbGVbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXNwaW5uZXJbX25nY29udGVudC0lQ09NUCVdICAgY2lyY2xlW19uZ2NvbnRlbnQtJUNPTVAlXXtzdHJva2U6I2Y1N2MwMH0ubWF0LXByb2dyZXNzLXNwaW5uZXIubWF0LWFjY2VudFtfbmdjb250ZW50LSVDT01QJV0gICBjaXJjbGVbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXNwaW5uZXIubWF0LWFjY2VudFtfbmdjb250ZW50LSVDT01QJV0gICBjaXJjbGVbX25nY29udGVudC0lQ09NUCVde3N0cm9rZTojZmY5ODAwfS5tYXQtcHJvZ3Jlc3Mtc3Bpbm5lci5tYXQtd2Fybltfbmdjb250ZW50LSVDT01QJV0gICBjaXJjbGVbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXNwaW5uZXIubWF0LXdhcm5bX25nY29udGVudC0lQ09NUCVdICAgY2lyY2xlW19uZ2NvbnRlbnQtJUNPTVAlXXtzdHJva2U6I2Y0NDMzNn0ubWF0LXJhZGlvLW91dGVyLWNpcmNsZVtfbmdjb250ZW50LSVDT01QJV17Ym9yZGVyLWNvbG9yOiM2MTYxNjF9Lm1hdC1yYWRpby1idXR0b24ubWF0LXByaW1hcnkubWF0LXJhZGlvLWNoZWNrZWRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1yYWRpby1vdXRlci1jaXJjbGVbX25nY29udGVudC0lQ09NUCVde2JvcmRlci1jb2xvcjojZjU3YzAwfS5tYXQtcmFkaW8tYnV0dG9uLm1hdC1wcmltYXJ5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtcmFkaW8taW5uZXItY2lyY2xlW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1yYWRpby1idXR0b24ubWF0LXByaW1hcnlbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1yYWRpby1yaXBwbGVbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1yaXBwbGUtZWxlbWVudFtfbmdjb250ZW50LSVDT01QJV06bm90KC5tYXQtcmFkaW8tcGVyc2lzdGVudC1yaXBwbGUpLCAubWF0LXJhZGlvLWJ1dHRvbi5tYXQtcHJpbWFyeS5tYXQtcmFkaW8tY2hlY2tlZFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXJhZGlvLXBlcnNpc3RlbnQtcmlwcGxlW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1yYWRpby1idXR0b24ubWF0LXByaW1hcnlbX25nY29udGVudC0lQ09NUCVdOmFjdGl2ZSAgIC5tYXQtcmFkaW8tcGVyc2lzdGVudC1yaXBwbGVbX25nY29udGVudC0lQ09NUCVde2JhY2tncm91bmQtY29sb3I6I2Y1N2MwMH0ubWF0LXJhZGlvLWJ1dHRvbi5tYXQtYWNjZW50Lm1hdC1yYWRpby1jaGVja2VkW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtcmFkaW8tb3V0ZXItY2lyY2xlW19uZ2NvbnRlbnQtJUNPTVAlXXtib3JkZXItY29sb3I6I2ZmOTgwMH0ubWF0LXJhZGlvLWJ1dHRvbi5tYXQtYWNjZW50W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtcmFkaW8taW5uZXItY2lyY2xlW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1yYWRpby1idXR0b24ubWF0LWFjY2VudFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXJhZGlvLXJpcHBsZVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXJpcHBsZS1lbGVtZW50W19uZ2NvbnRlbnQtJUNPTVAlXTpub3QoLm1hdC1yYWRpby1wZXJzaXN0ZW50LXJpcHBsZSksIC5tYXQtcmFkaW8tYnV0dG9uLm1hdC1hY2NlbnQubWF0LXJhZGlvLWNoZWNrZWRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1yYWRpby1wZXJzaXN0ZW50LXJpcHBsZVtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtcmFkaW8tYnV0dG9uLm1hdC1hY2NlbnRbX25nY29udGVudC0lQ09NUCVdOmFjdGl2ZSAgIC5tYXQtcmFkaW8tcGVyc2lzdGVudC1yaXBwbGVbX25nY29udGVudC0lQ09NUCVde2JhY2tncm91bmQtY29sb3I6I2ZmOTgwMH0ubWF0LXJhZGlvLWJ1dHRvbi5tYXQtd2Fybi5tYXQtcmFkaW8tY2hlY2tlZFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXJhZGlvLW91dGVyLWNpcmNsZVtfbmdjb250ZW50LSVDT01QJV17Ym9yZGVyLWNvbG9yOiNmNDQzMzZ9Lm1hdC1yYWRpby1idXR0b24ubWF0LXdhcm5bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1yYWRpby1pbm5lci1jaXJjbGVbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXJhZGlvLWJ1dHRvbi5tYXQtd2Fybltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXJhZGlvLXJpcHBsZVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXJpcHBsZS1lbGVtZW50W19uZ2NvbnRlbnQtJUNPTVAlXTpub3QoLm1hdC1yYWRpby1wZXJzaXN0ZW50LXJpcHBsZSksIC5tYXQtcmFkaW8tYnV0dG9uLm1hdC13YXJuLm1hdC1yYWRpby1jaGVja2VkW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtcmFkaW8tcGVyc2lzdGVudC1yaXBwbGVbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXJhZGlvLWJ1dHRvbi5tYXQtd2Fybltfbmdjb250ZW50LSVDT01QJV06YWN0aXZlICAgLm1hdC1yYWRpby1wZXJzaXN0ZW50LXJpcHBsZVtfbmdjb250ZW50LSVDT01QJV17YmFja2dyb3VuZC1jb2xvcjojZjQ0MzM2fS5tYXQtcmFkaW8tYnV0dG9uLm1hdC1yYWRpby1kaXNhYmxlZC5tYXQtcmFkaW8tY2hlY2tlZFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXJhZGlvLW91dGVyLWNpcmNsZVtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtcmFkaW8tYnV0dG9uLm1hdC1yYWRpby1kaXNhYmxlZFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXJhZGlvLW91dGVyLWNpcmNsZVtfbmdjb250ZW50LSVDT01QJV17Ym9yZGVyLWNvbG9yOnJnYmEoMCwwLDAsLjM4KX0ubWF0LXJhZGlvLWJ1dHRvbi5tYXQtcmFkaW8tZGlzYWJsZWRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1yYWRpby1yaXBwbGVbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1yaXBwbGUtZWxlbWVudFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtcmFkaW8tYnV0dG9uLm1hdC1yYWRpby1kaXNhYmxlZFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXJhZGlvLWlubmVyLWNpcmNsZVtfbmdjb250ZW50LSVDT01QJV17YmFja2dyb3VuZC1jb2xvcjpyZ2JhKDAsMCwwLC4zOCl9Lm1hdC1yYWRpby1idXR0b24ubWF0LXJhZGlvLWRpc2FibGVkW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtcmFkaW8tbGFiZWwtY29udGVudFtfbmdjb250ZW50LSVDT01QJV17Y29sb3I6cmdiYSgwLDAsMCwuMzgpfS5tYXQtcmFkaW8tYnV0dG9uW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtcmlwcGxlLWVsZW1lbnRbX25nY29udGVudC0lQ09NUCVde2JhY2tncm91bmQtY29sb3I6IzAwMH0ubWF0LXNlbGVjdC12YWx1ZVtfbmdjb250ZW50LSVDT01QJV17Y29sb3I6IzIxMjEyMX0ubWF0LXNlbGVjdC1wbGFjZWhvbGRlcltfbmdjb250ZW50LSVDT01QJV17Y29sb3I6cmdiYSg5Nyw5Nyw5NywuNDIpfS5tYXQtc2VsZWN0LWRpc2FibGVkW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtc2VsZWN0LXZhbHVlW19uZ2NvbnRlbnQtJUNPTVAlXXtjb2xvcjojNzU3NTc1fS5tYXQtc2VsZWN0LWFycm93W19uZ2NvbnRlbnQtJUNPTVAlXXtjb2xvcjojNjE2MTYxfS5tYXQtc2VsZWN0LXBhbmVsW19uZ2NvbnRlbnQtJUNPTVAlXXtiYWNrZ3JvdW5kOiNmZmZ9Lm1hdC1zZWxlY3QtcGFuZWxbX25nY29udGVudC0lQ09NUCVdOm5vdChbY2xhc3MqPW1hdC1lbGV2YXRpb24tel0pe2JveC1zaGFkb3c6MHB4IDJweCA0cHggLTFweCByZ2JhKDAsIDAsIDAsIDAuMiksMHB4IDRweCA1cHggMHB4IHJnYmEoMCwgMCwgMCwgMC4xNCksMHB4IDFweCAxMHB4IDBweCByZ2JhKDAsIDAsIDAsIDAuMTIpfS5tYXQtc2VsZWN0LXBhbmVsW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtb3B0aW9uLm1hdC1zZWxlY3RlZFtfbmdjb250ZW50LSVDT01QJV06bm90KC5tYXQtb3B0aW9uLW11bHRpcGxlKXtiYWNrZ3JvdW5kOnJnYmEoMCwwLDAsLjEyKX0ubWF0LWZvcm0tZmllbGQubWF0LWZvY3VzZWQubWF0LXByaW1hcnlbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1zZWxlY3QtYXJyb3dbX25nY29udGVudC0lQ09NUCVde2NvbG9yOiNmNTdjMDB9Lm1hdC1mb3JtLWZpZWxkLm1hdC1mb2N1c2VkLm1hdC1hY2NlbnRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1zZWxlY3QtYXJyb3dbX25nY29udGVudC0lQ09NUCVde2NvbG9yOiNmZjk4MDB9Lm1hdC1mb3JtLWZpZWxkLm1hdC1mb2N1c2VkLm1hdC13YXJuW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtc2VsZWN0LWFycm93W19uZ2NvbnRlbnQtJUNPTVAlXXtjb2xvcjojZjQ0MzM2fS5tYXQtZm9ybS1maWVsZFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXNlbGVjdC5tYXQtc2VsZWN0LWludmFsaWRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1zZWxlY3QtYXJyb3dbX25nY29udGVudC0lQ09NUCVde2NvbG9yOiNmNDQzMzZ9Lm1hdC1mb3JtLWZpZWxkW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtc2VsZWN0Lm1hdC1zZWxlY3QtZGlzYWJsZWRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1zZWxlY3QtYXJyb3dbX25nY29udGVudC0lQ09NUCVde2NvbG9yOiM3NTc1NzV9Lm1hdC1kcmF3ZXItY29udGFpbmVyW19uZ2NvbnRlbnQtJUNPTVAlXXtiYWNrZ3JvdW5kLWNvbG9yOiNmYWZhZmE7Y29sb3I6IzIxMjEyMX0ubWF0LWRyYXdlcltfbmdjb250ZW50LSVDT01QJV17YmFja2dyb3VuZC1jb2xvcjojZmZmO2NvbG9yOiMyMTIxMjF9Lm1hdC1kcmF3ZXIubWF0LWRyYXdlci1wdXNoW19uZ2NvbnRlbnQtJUNPTVAlXXtiYWNrZ3JvdW5kLWNvbG9yOiNmZmZ9Lm1hdC1kcmF3ZXJbX25nY29udGVudC0lQ09NUCVdOm5vdCgubWF0LWRyYXdlci1zaWRlKXtib3gtc2hhZG93OjBweCA4cHggMTBweCAtNXB4IHJnYmEoMCwgMCwgMCwgMC4yKSwwcHggMTZweCAyNHB4IDJweCByZ2JhKDAsIDAsIDAsIDAuMTQpLDBweCA2cHggMzBweCA1cHggcmdiYSgwLCAwLCAwLCAwLjEyKX0ubWF0LWRyYXdlci1zaWRlW19uZ2NvbnRlbnQtJUNPTVAlXXtib3JkZXItcmlnaHQ6c29saWQgMXB4IHJnYmEoMCwwLDAsLjEyKX0ubWF0LWRyYXdlci1zaWRlLm1hdC1kcmF3ZXItZW5kW19uZ2NvbnRlbnQtJUNPTVAlXXtib3JkZXItbGVmdDpzb2xpZCAxcHggcmdiYSgwLDAsMCwuMTIpO2JvcmRlci1yaWdodDpub25lfVtkaXI9cnRsXVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWRyYXdlci1zaWRlW19uZ2NvbnRlbnQtJUNPTVAlXXtib3JkZXItbGVmdDpzb2xpZCAxcHggcmdiYSgwLDAsMCwuMTIpO2JvcmRlci1yaWdodDpub25lfVtkaXI9cnRsXVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWRyYXdlci1zaWRlLm1hdC1kcmF3ZXItZW5kW19uZ2NvbnRlbnQtJUNPTVAlXXtib3JkZXItbGVmdDpub25lO2JvcmRlci1yaWdodDpzb2xpZCAxcHggcmdiYSgwLDAsMCwuMTIpfS5tYXQtZHJhd2VyLWJhY2tkcm9wLm1hdC1kcmF3ZXItc2hvd25bX25nY29udGVudC0lQ09NUCVde2JhY2tncm91bmQtY29sb3I6cmdiYSgwLDAsMCwuNil9Lm1hdC1zbGlkZS10b2dnbGUubWF0LWNoZWNrZWRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1zbGlkZS10b2dnbGUtdGh1bWJbX25nY29udGVudC0lQ09NUCVde2JhY2tncm91bmQtY29sb3I6I2ZmOTgwMH0ubWF0LXNsaWRlLXRvZ2dsZS5tYXQtY2hlY2tlZFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXNsaWRlLXRvZ2dsZS1iYXJbX25nY29udGVudC0lQ09NUCVde2JhY2tncm91bmQtY29sb3I6cmdiYSgyNTUsMTUyLDAsLjU0KX0ubWF0LXNsaWRlLXRvZ2dsZS5tYXQtY2hlY2tlZFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXJpcHBsZS1lbGVtZW50W19uZ2NvbnRlbnQtJUNPTVAlXXtiYWNrZ3JvdW5kLWNvbG9yOiNmZjk4MDB9Lm1hdC1zbGlkZS10b2dnbGUubWF0LXByaW1hcnkubWF0LWNoZWNrZWRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1zbGlkZS10b2dnbGUtdGh1bWJbX25nY29udGVudC0lQ09NUCVde2JhY2tncm91bmQtY29sb3I6I2Y1N2MwMH0ubWF0LXNsaWRlLXRvZ2dsZS5tYXQtcHJpbWFyeS5tYXQtY2hlY2tlZFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXNsaWRlLXRvZ2dsZS1iYXJbX25nY29udGVudC0lQ09NUCVde2JhY2tncm91bmQtY29sb3I6cmdiYSgyNDUsMTI0LDAsLjU0KX0ubWF0LXNsaWRlLXRvZ2dsZS5tYXQtcHJpbWFyeS5tYXQtY2hlY2tlZFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXJpcHBsZS1lbGVtZW50W19uZ2NvbnRlbnQtJUNPTVAlXXtiYWNrZ3JvdW5kLWNvbG9yOiNmNTdjMDB9Lm1hdC1zbGlkZS10b2dnbGUubWF0LXdhcm4ubWF0LWNoZWNrZWRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1zbGlkZS10b2dnbGUtdGh1bWJbX25nY29udGVudC0lQ09NUCVde2JhY2tncm91bmQtY29sb3I6I2Y0NDMzNn0ubWF0LXNsaWRlLXRvZ2dsZS5tYXQtd2Fybi5tYXQtY2hlY2tlZFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXNsaWRlLXRvZ2dsZS1iYXJbX25nY29udGVudC0lQ09NUCVde2JhY2tncm91bmQtY29sb3I6cmdiYSgyNDQsNjcsNTQsLjU0KX0ubWF0LXNsaWRlLXRvZ2dsZS5tYXQtd2Fybi5tYXQtY2hlY2tlZFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXJpcHBsZS1lbGVtZW50W19uZ2NvbnRlbnQtJUNPTVAlXXtiYWNrZ3JvdW5kLWNvbG9yOiNmNDQzMzZ9Lm1hdC1zbGlkZS10b2dnbGVbX25nY29udGVudC0lQ09NUCVdOm5vdCgubWF0LWNoZWNrZWQpICAgLm1hdC1yaXBwbGUtZWxlbWVudFtfbmdjb250ZW50LSVDT01QJV17YmFja2dyb3VuZC1jb2xvcjojMDAwfS5tYXQtc2xpZGUtdG9nZ2xlLXRodW1iW19uZ2NvbnRlbnQtJUNPTVAlXXtib3gtc2hhZG93OjBweCAycHggMXB4IC0xcHggcmdiYSgwLCAwLCAwLCAwLjIpLDBweCAxcHggMXB4IDBweCByZ2JhKDAsIDAsIDAsIDAuMTQpLDBweCAxcHggM3B4IDBweCByZ2JhKDAsIDAsIDAsIDAuMTIpO2JhY2tncm91bmQtY29sb3I6I2ZhZmFmYX0ubWF0LXNsaWRlLXRvZ2dsZS1iYXJbX25nY29udGVudC0lQ09NUCVde2JhY2tncm91bmQtY29sb3I6cmdiYSgwLDAsMCwuMzgpfS5tYXQtc2xpZGVyLXRyYWNrLWJhY2tncm91bmRbX25nY29udGVudC0lQ09NUCVde2JhY2tncm91bmQtY29sb3I6cmdiYSgwLDAsMCwuMjYpfS5tYXQtcHJpbWFyeVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXNsaWRlci10cmFjay1maWxsW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1wcmltYXJ5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtc2xpZGVyLXRodW1iW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1wcmltYXJ5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtc2xpZGVyLXRodW1iLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXtiYWNrZ3JvdW5kLWNvbG9yOiNmNTdjMDB9Lm1hdC1wcmltYXJ5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtc2xpZGVyLXRodW1iLWxhYmVsLXRleHRbX25nY29udGVudC0lQ09NUCVde2NvbG9yOiNmZmZ9Lm1hdC1wcmltYXJ5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtc2xpZGVyLWZvY3VzLXJpbmdbX25nY29udGVudC0lQ09NUCVde2JhY2tncm91bmQtY29sb3I6cmdiYSgyNDUsMTI0LDAsLjIpfS5tYXQtYWNjZW50W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtc2xpZGVyLXRyYWNrLWZpbGxbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWFjY2VudFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXNsaWRlci10aHVtYltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtYWNjZW50W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtc2xpZGVyLXRodW1iLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXtiYWNrZ3JvdW5kLWNvbG9yOiNmZjk4MDB9Lm1hdC1hY2NlbnRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1zbGlkZXItdGh1bWItbGFiZWwtdGV4dFtfbmdjb250ZW50LSVDT01QJV17Y29sb3I6I2ZmZn0ubWF0LWFjY2VudFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXNsaWRlci1mb2N1cy1yaW5nW19uZ2NvbnRlbnQtJUNPTVAlXXtiYWNrZ3JvdW5kLWNvbG9yOnJnYmEoMjU1LDE1MiwwLC4yKX0ubWF0LXdhcm5bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1zbGlkZXItdHJhY2stZmlsbFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtd2Fybltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXNsaWRlci10aHVtYltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtd2Fybltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXNsaWRlci10aHVtYi1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17YmFja2dyb3VuZC1jb2xvcjojZjQ0MzM2fS5tYXQtd2Fybltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXNsaWRlci10aHVtYi1sYWJlbC10ZXh0W19uZ2NvbnRlbnQtJUNPTVAlXXtjb2xvcjojZmZmfS5tYXQtd2Fybltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXNsaWRlci1mb2N1cy1yaW5nW19uZ2NvbnRlbnQtJUNPTVAlXXtiYWNrZ3JvdW5kLWNvbG9yOnJnYmEoMjQ0LDY3LDU0LC4yKX0ubWF0LXNsaWRlcltfbmdjb250ZW50LSVDT01QJV06aG92ZXIgICAubWF0LXNsaWRlci10cmFjay1iYWNrZ3JvdW5kW19uZ2NvbnRlbnQtJUNPTVAlXSwgLmNkay1mb2N1c2VkW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtc2xpZGVyLXRyYWNrLWJhY2tncm91bmRbX25nY29udGVudC0lQ09NUCVde2JhY2tncm91bmQtY29sb3I6cmdiYSgwLDAsMCwuMzgpfS5tYXQtc2xpZGVyLWRpc2FibGVkW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtc2xpZGVyLXRyYWNrLWJhY2tncm91bmRbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXNsaWRlci1kaXNhYmxlZFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXNsaWRlci10cmFjay1maWxsW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1zbGlkZXItZGlzYWJsZWRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1zbGlkZXItdGh1bWJbX25nY29udGVudC0lQ09NUCVde2JhY2tncm91bmQtY29sb3I6cmdiYSgwLDAsMCwuMjYpfS5tYXQtc2xpZGVyLWRpc2FibGVkW19uZ2NvbnRlbnQtJUNPTVAlXTpob3ZlciAgIC5tYXQtc2xpZGVyLXRyYWNrLWJhY2tncm91bmRbX25nY29udGVudC0lQ09NUCVde2JhY2tncm91bmQtY29sb3I6cmdiYSgwLDAsMCwuMjYpfS5tYXQtc2xpZGVyLW1pbi12YWx1ZVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXNsaWRlci1mb2N1cy1yaW5nW19uZ2NvbnRlbnQtJUNPTVAlXXtiYWNrZ3JvdW5kLWNvbG9yOnJnYmEoMCwwLDAsLjEyKX0ubWF0LXNsaWRlci1taW4tdmFsdWUubWF0LXNsaWRlci10aHVtYi1sYWJlbC1zaG93aW5nW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtc2xpZGVyLXRodW1iW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1zbGlkZXItbWluLXZhbHVlLm1hdC1zbGlkZXItdGh1bWItbGFiZWwtc2hvd2luZ1tfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXNsaWRlci10aHVtYi1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17YmFja2dyb3VuZC1jb2xvcjpyZ2JhKDAsMCwwLC44Nyl9Lm1hdC1zbGlkZXItbWluLXZhbHVlLm1hdC1zbGlkZXItdGh1bWItbGFiZWwtc2hvd2luZy5jZGstZm9jdXNlZFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXNsaWRlci10aHVtYltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtc2xpZGVyLW1pbi12YWx1ZS5tYXQtc2xpZGVyLXRodW1iLWxhYmVsLXNob3dpbmcuY2RrLWZvY3VzZWRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1zbGlkZXItdGh1bWItbGFiZWxbX25nY29udGVudC0lQ09NUCVde2JhY2tncm91bmQtY29sb3I6cmdiYSgwLDAsMCwuMjYpfS5tYXQtc2xpZGVyLW1pbi12YWx1ZVtfbmdjb250ZW50LSVDT01QJV06bm90KC5tYXQtc2xpZGVyLXRodW1iLWxhYmVsLXNob3dpbmcpICAgLm1hdC1zbGlkZXItdGh1bWJbX25nY29udGVudC0lQ09NUCVde2JvcmRlci1jb2xvcjpyZ2JhKDAsMCwwLC4yNik7YmFja2dyb3VuZC1jb2xvcjp0cmFuc3BhcmVudH0ubWF0LXNsaWRlci1taW4tdmFsdWVbX25nY29udGVudC0lQ09NUCVdOm5vdCgubWF0LXNsaWRlci10aHVtYi1sYWJlbC1zaG93aW5nKTpob3ZlciAgIC5tYXQtc2xpZGVyLXRodW1iW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1zbGlkZXItbWluLXZhbHVlW19uZ2NvbnRlbnQtJUNPTVAlXTpub3QoLm1hdC1zbGlkZXItdGh1bWItbGFiZWwtc2hvd2luZykuY2RrLWZvY3VzZWQgICAubWF0LXNsaWRlci10aHVtYltfbmdjb250ZW50LSVDT01QJV17Ym9yZGVyLWNvbG9yOnJnYmEoMCwwLDAsLjM4KX0ubWF0LXNsaWRlci1taW4tdmFsdWVbX25nY29udGVudC0lQ09NUCVdOm5vdCgubWF0LXNsaWRlci10aHVtYi1sYWJlbC1zaG93aW5nKTpob3Zlci5tYXQtc2xpZGVyLWRpc2FibGVkICAgLm1hdC1zbGlkZXItdGh1bWJbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXNsaWRlci1taW4tdmFsdWVbX25nY29udGVudC0lQ09NUCVdOm5vdCgubWF0LXNsaWRlci10aHVtYi1sYWJlbC1zaG93aW5nKS5jZGstZm9jdXNlZC5tYXQtc2xpZGVyLWRpc2FibGVkICAgLm1hdC1zbGlkZXItdGh1bWJbX25nY29udGVudC0lQ09NUCVde2JvcmRlci1jb2xvcjpyZ2JhKDAsMCwwLC4yNil9Lm1hdC1zbGlkZXItaGFzLXRpY2tzW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtc2xpZGVyLXdyYXBwZXJbX25nY29udGVudC0lQ09NUCVdOjphZnRlcntib3JkZXItY29sb3I6cmdiYSgwLDAsMCwuNyl9Lm1hdC1zbGlkZXItaG9yaXpvbnRhbFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXNsaWRlci10aWNrc1tfbmdjb250ZW50LSVDT01QJV17YmFja2dyb3VuZC1pbWFnZTpyZXBlYXRpbmctbGluZWFyLWdyYWRpZW50KHRvIHJpZ2h0LCByZ2JhKDAsIDAsIDAsIDAuNyksIHJnYmEoMCwgMCwgMCwgMC43KSAycHgsIHRyYW5zcGFyZW50IDAsIHRyYW5zcGFyZW50KTtiYWNrZ3JvdW5kLWltYWdlOi1tb3otcmVwZWF0aW5nLWxpbmVhci1ncmFkaWVudCgwLjAwMDFkZWcsIHJnYmEoMCwgMCwgMCwgMC43KSwgcmdiYSgwLCAwLCAwLCAwLjcpIDJweCwgdHJhbnNwYXJlbnQgMCwgdHJhbnNwYXJlbnQpfS5tYXQtc2xpZGVyLXZlcnRpY2FsW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtc2xpZGVyLXRpY2tzW19uZ2NvbnRlbnQtJUNPTVAlXXtiYWNrZ3JvdW5kLWltYWdlOnJlcGVhdGluZy1saW5lYXItZ3JhZGllbnQodG8gYm90dG9tLCByZ2JhKDAsIDAsIDAsIDAuNyksIHJnYmEoMCwgMCwgMCwgMC43KSAycHgsIHRyYW5zcGFyZW50IDAsIHRyYW5zcGFyZW50KX0ubWF0LXN0ZXAtaGVhZGVyLmNkay1rZXlib2FyZC1mb2N1c2VkW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1zdGVwLWhlYWRlci5jZGstcHJvZ3JhbS1mb2N1c2VkW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1zdGVwLWhlYWRlcltfbmdjb250ZW50LSVDT01QJV06aG92ZXJ7YmFja2dyb3VuZC1jb2xvcjpyZ2JhKDAsMCwwLC4wNCl9QG1lZGlhKGhvdmVyOiBub25lKXsubWF0LXN0ZXAtaGVhZGVyW19uZ2NvbnRlbnQtJUNPTVAlXTpob3ZlcntiYWNrZ3JvdW5kOm5vbmV9fS5tYXQtc3RlcC1oZWFkZXJbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1zdGVwLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1zdGVwLWhlYWRlcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXN0ZXAtb3B0aW9uYWxbX25nY29udGVudC0lQ09NUCVde2NvbG9yOiM2MTYxNjF9Lm1hdC1zdGVwLWhlYWRlcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXN0ZXAtaWNvbltfbmdjb250ZW50LSVDT01QJV17YmFja2dyb3VuZC1jb2xvcjojNjE2MTYxO2NvbG9yOiNmZmZ9Lm1hdC1zdGVwLWhlYWRlcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXN0ZXAtaWNvbi1zZWxlY3RlZFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtc3RlcC1oZWFkZXJbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1zdGVwLWljb24tc3RhdGUtZG9uZVtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtc3RlcC1oZWFkZXJbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1zdGVwLWljb24tc3RhdGUtZWRpdFtfbmdjb250ZW50LSVDT01QJV17YmFja2dyb3VuZC1jb2xvcjojZjU3YzAwO2NvbG9yOiNmZmZ9Lm1hdC1zdGVwLWhlYWRlcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXN0ZXAtaWNvbi1zdGF0ZS1lcnJvcltfbmdjb250ZW50LSVDT01QJV17YmFja2dyb3VuZC1jb2xvcjp0cmFuc3BhcmVudDtjb2xvcjojZjQ0MzM2fS5tYXQtc3RlcC1oZWFkZXJbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1zdGVwLWxhYmVsLm1hdC1zdGVwLWxhYmVsLWFjdGl2ZVtfbmdjb250ZW50LSVDT01QJV17Y29sb3I6IzIxMjEyMX0ubWF0LXN0ZXAtaGVhZGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtc3RlcC1sYWJlbC5tYXQtc3RlcC1sYWJlbC1lcnJvcltfbmdjb250ZW50LSVDT01QJV17Y29sb3I6I2Y0NDMzNn0ubWF0LXN0ZXBwZXItaG9yaXpvbnRhbFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtc3RlcHBlci12ZXJ0aWNhbFtfbmdjb250ZW50LSVDT01QJV17YmFja2dyb3VuZC1jb2xvcjojZmZmfS5tYXQtc3RlcHBlci12ZXJ0aWNhbC1saW5lW19uZ2NvbnRlbnQtJUNPTVAlXTo6YmVmb3Jle2JvcmRlci1sZWZ0LWNvbG9yOnJnYmEoMCwwLDAsLjEyKX0ubWF0LWhvcml6b250YWwtc3RlcHBlci1oZWFkZXJbX25nY29udGVudC0lQ09NUCVdOjpiZWZvcmUsIC5tYXQtaG9yaXpvbnRhbC1zdGVwcGVyLWhlYWRlcltfbmdjb250ZW50LSVDT01QJV06OmFmdGVyLCAubWF0LXN0ZXBwZXItaG9yaXpvbnRhbC1saW5lW19uZ2NvbnRlbnQtJUNPTVAlXXtib3JkZXItdG9wLWNvbG9yOnJnYmEoMCwwLDAsLjEyKX0ubWF0LWhvcml6b250YWwtc3RlcHBlci1oZWFkZXJbX25nY29udGVudC0lQ09NUCVde2hlaWdodDo3MnB4fS5tYXQtc3RlcHBlci1sYWJlbC1wb3NpdGlvbi1ib3R0b21bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1ob3Jpem9udGFsLXN0ZXBwZXItaGVhZGVyW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC12ZXJ0aWNhbC1zdGVwcGVyLWhlYWRlcltfbmdjb250ZW50LSVDT01QJV17cGFkZGluZzoyNHB4IDI0cHh9Lm1hdC1zdGVwcGVyLXZlcnRpY2FsLWxpbmVbX25nY29udGVudC0lQ09NUCVdOjpiZWZvcmV7dG9wOi0xNnB4O2JvdHRvbTotMTZweH0ubWF0LXN0ZXBwZXItbGFiZWwtcG9zaXRpb24tYm90dG9tW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaG9yaXpvbnRhbC1zdGVwcGVyLWhlYWRlcltfbmdjb250ZW50LSVDT01QJV06OmFmdGVyLCAubWF0LXN0ZXBwZXItbGFiZWwtcG9zaXRpb24tYm90dG9tW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaG9yaXpvbnRhbC1zdGVwcGVyLWhlYWRlcltfbmdjb250ZW50LSVDT01QJV06OmJlZm9yZXt0b3A6MzZweH0ubWF0LXN0ZXBwZXItbGFiZWwtcG9zaXRpb24tYm90dG9tW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtc3RlcHBlci1ob3Jpem9udGFsLWxpbmVbX25nY29udGVudC0lQ09NUCVde3RvcDozNnB4fS5tYXQtc29ydC1oZWFkZXItYXJyb3dbX25nY29udGVudC0lQ09NUCVde2NvbG9yOiM2MTYxNjF9Lm1hdC10YWItbmF2LWJhcltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdGFiLWhlYWRlcltfbmdjb250ZW50LSVDT01QJV17Ym9yZGVyLWJvdHRvbToxcHggc29saWQgcmdiYSgwLDAsMCwuMTIpfS5tYXQtdGFiLWdyb3VwLWludmVydGVkLWhlYWRlcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXRhYi1uYXYtYmFyW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10YWItZ3JvdXAtaW52ZXJ0ZWQtaGVhZGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtdGFiLWhlYWRlcltfbmdjb250ZW50LSVDT01QJV17Ym9yZGVyLXRvcDoxcHggc29saWQgcmdiYSgwLDAsMCwuMTIpO2JvcmRlci1ib3R0b206bm9uZX0ubWF0LXRhYi1sYWJlbFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdGFiLWxpbmtbX25nY29udGVudC0lQ09NUCVde2NvbG9yOiMyMTIxMjF9Lm1hdC10YWItbGFiZWwubWF0LXRhYi1kaXNhYmxlZFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdGFiLWxpbmsubWF0LXRhYi1kaXNhYmxlZFtfbmdjb250ZW50LSVDT01QJV17Y29sb3I6Izc1NzU3NX0ubWF0LXRhYi1oZWFkZXItcGFnaW5hdGlvbi1jaGV2cm9uW19uZ2NvbnRlbnQtJUNPTVAlXXtib3JkZXItY29sb3I6IzIxMjEyMX0ubWF0LXRhYi1oZWFkZXItcGFnaW5hdGlvbi1kaXNhYmxlZFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXRhYi1oZWFkZXItcGFnaW5hdGlvbi1jaGV2cm9uW19uZ2NvbnRlbnQtJUNPTVAlXXtib3JkZXItY29sb3I6Izc1NzU3NX0ubWF0LXRhYi1ncm91cFtjbGFzcyo9bWF0LWJhY2tncm91bmQtXVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXRhYi1oZWFkZXJbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXRhYi1uYXYtYmFyW2NsYXNzKj1tYXQtYmFja2dyb3VuZC1dW19uZ2NvbnRlbnQtJUNPTVAlXXtib3JkZXItYm90dG9tOm5vbmU7Ym9yZGVyLXRvcDpub25lfS5tYXQtdGFiLWdyb3VwLm1hdC1wcmltYXJ5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtdGFiLWxhYmVsLmNkay1rZXlib2FyZC1mb2N1c2VkW19uZ2NvbnRlbnQtJUNPTVAlXTpub3QoLm1hdC10YWItZGlzYWJsZWQpLCAubWF0LXRhYi1ncm91cC5tYXQtcHJpbWFyeVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXRhYi1sYWJlbC5jZGstcHJvZ3JhbS1mb2N1c2VkW19uZ2NvbnRlbnQtJUNPTVAlXTpub3QoLm1hdC10YWItZGlzYWJsZWQpLCAubWF0LXRhYi1ncm91cC5tYXQtcHJpbWFyeVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXRhYi1saW5rLmNkay1rZXlib2FyZC1mb2N1c2VkW19uZ2NvbnRlbnQtJUNPTVAlXTpub3QoLm1hdC10YWItZGlzYWJsZWQpLCAubWF0LXRhYi1ncm91cC5tYXQtcHJpbWFyeVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXRhYi1saW5rLmNkay1wcm9ncmFtLWZvY3VzZWRbX25nY29udGVudC0lQ09NUCVdOm5vdCgubWF0LXRhYi1kaXNhYmxlZCksIC5tYXQtdGFiLW5hdi1iYXIubWF0LXByaW1hcnlbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC10YWItbGFiZWwuY2RrLWtleWJvYXJkLWZvY3VzZWRbX25nY29udGVudC0lQ09NUCVdOm5vdCgubWF0LXRhYi1kaXNhYmxlZCksIC5tYXQtdGFiLW5hdi1iYXIubWF0LXByaW1hcnlbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC10YWItbGFiZWwuY2RrLXByb2dyYW0tZm9jdXNlZFtfbmdjb250ZW50LSVDT01QJV06bm90KC5tYXQtdGFiLWRpc2FibGVkKSwgLm1hdC10YWItbmF2LWJhci5tYXQtcHJpbWFyeVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXRhYi1saW5rLmNkay1rZXlib2FyZC1mb2N1c2VkW19uZ2NvbnRlbnQtJUNPTVAlXTpub3QoLm1hdC10YWItZGlzYWJsZWQpLCAubWF0LXRhYi1uYXYtYmFyLm1hdC1wcmltYXJ5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtdGFiLWxpbmsuY2RrLXByb2dyYW0tZm9jdXNlZFtfbmdjb250ZW50LSVDT01QJV06bm90KC5tYXQtdGFiLWRpc2FibGVkKXtiYWNrZ3JvdW5kLWNvbG9yOnJnYmEoMjU1LDE1MiwwLC4zKX0ubWF0LXRhYi1ncm91cC5tYXQtcHJpbWFyeVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWluay1iYXJbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXRhYi1uYXYtYmFyLm1hdC1wcmltYXJ5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaW5rLWJhcltfbmdjb250ZW50LSVDT01QJV17YmFja2dyb3VuZC1jb2xvcjojZjU3YzAwfS5tYXQtdGFiLWdyb3VwLm1hdC1wcmltYXJ5Lm1hdC1iYWNrZ3JvdW5kLXByaW1hcnlbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pbmstYmFyW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10YWItbmF2LWJhci5tYXQtcHJpbWFyeS5tYXQtYmFja2dyb3VuZC1wcmltYXJ5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaW5rLWJhcltfbmdjb250ZW50LSVDT01QJV17YmFja2dyb3VuZC1jb2xvcjojZmZmfS5tYXQtdGFiLWdyb3VwLm1hdC1hY2NlbnRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC10YWItbGFiZWwuY2RrLWtleWJvYXJkLWZvY3VzZWRbX25nY29udGVudC0lQ09NUCVdOm5vdCgubWF0LXRhYi1kaXNhYmxlZCksIC5tYXQtdGFiLWdyb3VwLm1hdC1hY2NlbnRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC10YWItbGFiZWwuY2RrLXByb2dyYW0tZm9jdXNlZFtfbmdjb250ZW50LSVDT01QJV06bm90KC5tYXQtdGFiLWRpc2FibGVkKSwgLm1hdC10YWItZ3JvdXAubWF0LWFjY2VudFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXRhYi1saW5rLmNkay1rZXlib2FyZC1mb2N1c2VkW19uZ2NvbnRlbnQtJUNPTVAlXTpub3QoLm1hdC10YWItZGlzYWJsZWQpLCAubWF0LXRhYi1ncm91cC5tYXQtYWNjZW50W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtdGFiLWxpbmsuY2RrLXByb2dyYW0tZm9jdXNlZFtfbmdjb250ZW50LSVDT01QJV06bm90KC5tYXQtdGFiLWRpc2FibGVkKSwgLm1hdC10YWItbmF2LWJhci5tYXQtYWNjZW50W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtdGFiLWxhYmVsLmNkay1rZXlib2FyZC1mb2N1c2VkW19uZ2NvbnRlbnQtJUNPTVAlXTpub3QoLm1hdC10YWItZGlzYWJsZWQpLCAubWF0LXRhYi1uYXYtYmFyLm1hdC1hY2NlbnRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC10YWItbGFiZWwuY2RrLXByb2dyYW0tZm9jdXNlZFtfbmdjb250ZW50LSVDT01QJV06bm90KC5tYXQtdGFiLWRpc2FibGVkKSwgLm1hdC10YWItbmF2LWJhci5tYXQtYWNjZW50W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtdGFiLWxpbmsuY2RrLWtleWJvYXJkLWZvY3VzZWRbX25nY29udGVudC0lQ09NUCVdOm5vdCgubWF0LXRhYi1kaXNhYmxlZCksIC5tYXQtdGFiLW5hdi1iYXIubWF0LWFjY2VudFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXRhYi1saW5rLmNkay1wcm9ncmFtLWZvY3VzZWRbX25nY29udGVudC0lQ09NUCVdOm5vdCgubWF0LXRhYi1kaXNhYmxlZCl7YmFja2dyb3VuZC1jb2xvcjpyZ2JhKDI1NSwxNTIsMCwuMyl9Lm1hdC10YWItZ3JvdXAubWF0LWFjY2VudFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWluay1iYXJbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXRhYi1uYXYtYmFyLm1hdC1hY2NlbnRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pbmstYmFyW19uZ2NvbnRlbnQtJUNPTVAlXXtiYWNrZ3JvdW5kLWNvbG9yOiNmZjk4MDB9Lm1hdC10YWItZ3JvdXAubWF0LWFjY2VudC5tYXQtYmFja2dyb3VuZC1hY2NlbnRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pbmstYmFyW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10YWItbmF2LWJhci5tYXQtYWNjZW50Lm1hdC1iYWNrZ3JvdW5kLWFjY2VudFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWluay1iYXJbX25nY29udGVudC0lQ09NUCVde2JhY2tncm91bmQtY29sb3I6I2ZmZn0ubWF0LXRhYi1ncm91cC5tYXQtd2Fybltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXRhYi1sYWJlbC5jZGsta2V5Ym9hcmQtZm9jdXNlZFtfbmdjb250ZW50LSVDT01QJV06bm90KC5tYXQtdGFiLWRpc2FibGVkKSwgLm1hdC10YWItZ3JvdXAubWF0LXdhcm5bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC10YWItbGFiZWwuY2RrLXByb2dyYW0tZm9jdXNlZFtfbmdjb250ZW50LSVDT01QJV06bm90KC5tYXQtdGFiLWRpc2FibGVkKSwgLm1hdC10YWItZ3JvdXAubWF0LXdhcm5bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC10YWItbGluay5jZGsta2V5Ym9hcmQtZm9jdXNlZFtfbmdjb250ZW50LSVDT01QJV06bm90KC5tYXQtdGFiLWRpc2FibGVkKSwgLm1hdC10YWItZ3JvdXAubWF0LXdhcm5bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC10YWItbGluay5jZGstcHJvZ3JhbS1mb2N1c2VkW19uZ2NvbnRlbnQtJUNPTVAlXTpub3QoLm1hdC10YWItZGlzYWJsZWQpLCAubWF0LXRhYi1uYXYtYmFyLm1hdC13YXJuW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtdGFiLWxhYmVsLmNkay1rZXlib2FyZC1mb2N1c2VkW19uZ2NvbnRlbnQtJUNPTVAlXTpub3QoLm1hdC10YWItZGlzYWJsZWQpLCAubWF0LXRhYi1uYXYtYmFyLm1hdC13YXJuW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtdGFiLWxhYmVsLmNkay1wcm9ncmFtLWZvY3VzZWRbX25nY29udGVudC0lQ09NUCVdOm5vdCgubWF0LXRhYi1kaXNhYmxlZCksIC5tYXQtdGFiLW5hdi1iYXIubWF0LXdhcm5bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC10YWItbGluay5jZGsta2V5Ym9hcmQtZm9jdXNlZFtfbmdjb250ZW50LSVDT01QJV06bm90KC5tYXQtdGFiLWRpc2FibGVkKSwgLm1hdC10YWItbmF2LWJhci5tYXQtd2Fybltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXRhYi1saW5rLmNkay1wcm9ncmFtLWZvY3VzZWRbX25nY29udGVudC0lQ09NUCVdOm5vdCgubWF0LXRhYi1kaXNhYmxlZCl7YmFja2dyb3VuZC1jb2xvcjpyZ2JhKDI1NSwyMDUsMjEwLC4zKX0ubWF0LXRhYi1ncm91cC5tYXQtd2Fybltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWluay1iYXJbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXRhYi1uYXYtYmFyLm1hdC13YXJuW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaW5rLWJhcltfbmdjb250ZW50LSVDT01QJV17YmFja2dyb3VuZC1jb2xvcjojZjQ0MzM2fS5tYXQtdGFiLWdyb3VwLm1hdC13YXJuLm1hdC1iYWNrZ3JvdW5kLXdhcm5bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pbmstYmFyW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10YWItbmF2LWJhci5tYXQtd2Fybi5tYXQtYmFja2dyb3VuZC13YXJuW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaW5rLWJhcltfbmdjb250ZW50LSVDT01QJV17YmFja2dyb3VuZC1jb2xvcjojZmZmfS5tYXQtdGFiLWdyb3VwLm1hdC1iYWNrZ3JvdW5kLXByaW1hcnlbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC10YWItbGFiZWwuY2RrLWtleWJvYXJkLWZvY3VzZWRbX25nY29udGVudC0lQ09NUCVdOm5vdCgubWF0LXRhYi1kaXNhYmxlZCksIC5tYXQtdGFiLWdyb3VwLm1hdC1iYWNrZ3JvdW5kLXByaW1hcnlbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC10YWItbGFiZWwuY2RrLXByb2dyYW0tZm9jdXNlZFtfbmdjb250ZW50LSVDT01QJV06bm90KC5tYXQtdGFiLWRpc2FibGVkKSwgLm1hdC10YWItZ3JvdXAubWF0LWJhY2tncm91bmQtcHJpbWFyeVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXRhYi1saW5rLmNkay1rZXlib2FyZC1mb2N1c2VkW19uZ2NvbnRlbnQtJUNPTVAlXTpub3QoLm1hdC10YWItZGlzYWJsZWQpLCAubWF0LXRhYi1ncm91cC5tYXQtYmFja2dyb3VuZC1wcmltYXJ5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtdGFiLWxpbmsuY2RrLXByb2dyYW0tZm9jdXNlZFtfbmdjb250ZW50LSVDT01QJV06bm90KC5tYXQtdGFiLWRpc2FibGVkKSwgLm1hdC10YWItbmF2LWJhci5tYXQtYmFja2dyb3VuZC1wcmltYXJ5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtdGFiLWxhYmVsLmNkay1rZXlib2FyZC1mb2N1c2VkW19uZ2NvbnRlbnQtJUNPTVAlXTpub3QoLm1hdC10YWItZGlzYWJsZWQpLCAubWF0LXRhYi1uYXYtYmFyLm1hdC1iYWNrZ3JvdW5kLXByaW1hcnlbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC10YWItbGFiZWwuY2RrLXByb2dyYW0tZm9jdXNlZFtfbmdjb250ZW50LSVDT01QJV06bm90KC5tYXQtdGFiLWRpc2FibGVkKSwgLm1hdC10YWItbmF2LWJhci5tYXQtYmFja2dyb3VuZC1wcmltYXJ5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtdGFiLWxpbmsuY2RrLWtleWJvYXJkLWZvY3VzZWRbX25nY29udGVudC0lQ09NUCVdOm5vdCgubWF0LXRhYi1kaXNhYmxlZCksIC5tYXQtdGFiLW5hdi1iYXIubWF0LWJhY2tncm91bmQtcHJpbWFyeVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXRhYi1saW5rLmNkay1wcm9ncmFtLWZvY3VzZWRbX25nY29udGVudC0lQ09NUCVdOm5vdCgubWF0LXRhYi1kaXNhYmxlZCl7YmFja2dyb3VuZC1jb2xvcjpyZ2JhKDI1NSwxNTIsMCwuMyl9Lm1hdC10YWItZ3JvdXAubWF0LWJhY2tncm91bmQtcHJpbWFyeVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXRhYi1oZWFkZXJbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXRhYi1ncm91cC5tYXQtYmFja2dyb3VuZC1wcmltYXJ5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtdGFiLWxpbmtzW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10YWItZ3JvdXAubWF0LWJhY2tncm91bmQtcHJpbWFyeVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXRhYi1oZWFkZXItcGFnaW5hdGlvbltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdGFiLW5hdi1iYXIubWF0LWJhY2tncm91bmQtcHJpbWFyeVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXRhYi1oZWFkZXJbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXRhYi1uYXYtYmFyLm1hdC1iYWNrZ3JvdW5kLXByaW1hcnlbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC10YWItbGlua3NbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXRhYi1uYXYtYmFyLm1hdC1iYWNrZ3JvdW5kLXByaW1hcnlbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC10YWItaGVhZGVyLXBhZ2luYXRpb25bX25nY29udGVudC0lQ09NUCVde2JhY2tncm91bmQtY29sb3I6I2Y1N2MwMH0ubWF0LXRhYi1ncm91cC5tYXQtYmFja2dyb3VuZC1wcmltYXJ5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtdGFiLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10YWItZ3JvdXAubWF0LWJhY2tncm91bmQtcHJpbWFyeVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXRhYi1saW5rW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10YWItbmF2LWJhci5tYXQtYmFja2dyb3VuZC1wcmltYXJ5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtdGFiLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10YWItbmF2LWJhci5tYXQtYmFja2dyb3VuZC1wcmltYXJ5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtdGFiLWxpbmtbX25nY29udGVudC0lQ09NUCVde2NvbG9yOiNmZmZ9Lm1hdC10YWItZ3JvdXAubWF0LWJhY2tncm91bmQtcHJpbWFyeVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXRhYi1sYWJlbC5tYXQtdGFiLWRpc2FibGVkW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10YWItZ3JvdXAubWF0LWJhY2tncm91bmQtcHJpbWFyeVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXRhYi1saW5rLm1hdC10YWItZGlzYWJsZWRbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXRhYi1uYXYtYmFyLm1hdC1iYWNrZ3JvdW5kLXByaW1hcnlbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC10YWItbGFiZWwubWF0LXRhYi1kaXNhYmxlZFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdGFiLW5hdi1iYXIubWF0LWJhY2tncm91bmQtcHJpbWFyeVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXRhYi1saW5rLm1hdC10YWItZGlzYWJsZWRbX25nY29udGVudC0lQ09NUCVde2NvbG9yOnJnYmEoMjU1LDI1NSwyNTUsLjQpfS5tYXQtdGFiLWdyb3VwLm1hdC1iYWNrZ3JvdW5kLXByaW1hcnlbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC10YWItaGVhZGVyLXBhZ2luYXRpb24tY2hldnJvbltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdGFiLW5hdi1iYXIubWF0LWJhY2tncm91bmQtcHJpbWFyeVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXRhYi1oZWFkZXItcGFnaW5hdGlvbi1jaGV2cm9uW19uZ2NvbnRlbnQtJUNPTVAlXXtib3JkZXItY29sb3I6I2ZmZn0ubWF0LXRhYi1ncm91cC5tYXQtYmFja2dyb3VuZC1wcmltYXJ5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtdGFiLWhlYWRlci1wYWdpbmF0aW9uLWRpc2FibGVkW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtdGFiLWhlYWRlci1wYWdpbmF0aW9uLWNoZXZyb25bX25nY29udGVudC0lQ09NUCVdLCAubWF0LXRhYi1uYXYtYmFyLm1hdC1iYWNrZ3JvdW5kLXByaW1hcnlbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC10YWItaGVhZGVyLXBhZ2luYXRpb24tZGlzYWJsZWRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC10YWItaGVhZGVyLXBhZ2luYXRpb24tY2hldnJvbltfbmdjb250ZW50LSVDT01QJV17Ym9yZGVyLWNvbG9yOnJnYmEoMjU1LDI1NSwyNTUsLjQpfS5tYXQtdGFiLWdyb3VwLm1hdC1iYWNrZ3JvdW5kLXByaW1hcnlbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1yaXBwbGUtZWxlbWVudFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdGFiLW5hdi1iYXIubWF0LWJhY2tncm91bmQtcHJpbWFyeVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXJpcHBsZS1lbGVtZW50W19uZ2NvbnRlbnQtJUNPTVAlXXtiYWNrZ3JvdW5kLWNvbG9yOnJnYmEoMjU1LDI1NSwyNTUsLjEyKX0ubWF0LXRhYi1ncm91cC5tYXQtYmFja2dyb3VuZC1hY2NlbnRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC10YWItbGFiZWwuY2RrLWtleWJvYXJkLWZvY3VzZWRbX25nY29udGVudC0lQ09NUCVdOm5vdCgubWF0LXRhYi1kaXNhYmxlZCksIC5tYXQtdGFiLWdyb3VwLm1hdC1iYWNrZ3JvdW5kLWFjY2VudFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXRhYi1sYWJlbC5jZGstcHJvZ3JhbS1mb2N1c2VkW19uZ2NvbnRlbnQtJUNPTVAlXTpub3QoLm1hdC10YWItZGlzYWJsZWQpLCAubWF0LXRhYi1ncm91cC5tYXQtYmFja2dyb3VuZC1hY2NlbnRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC10YWItbGluay5jZGsta2V5Ym9hcmQtZm9jdXNlZFtfbmdjb250ZW50LSVDT01QJV06bm90KC5tYXQtdGFiLWRpc2FibGVkKSwgLm1hdC10YWItZ3JvdXAubWF0LWJhY2tncm91bmQtYWNjZW50W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtdGFiLWxpbmsuY2RrLXByb2dyYW0tZm9jdXNlZFtfbmdjb250ZW50LSVDT01QJV06bm90KC5tYXQtdGFiLWRpc2FibGVkKSwgLm1hdC10YWItbmF2LWJhci5tYXQtYmFja2dyb3VuZC1hY2NlbnRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC10YWItbGFiZWwuY2RrLWtleWJvYXJkLWZvY3VzZWRbX25nY29udGVudC0lQ09NUCVdOm5vdCgubWF0LXRhYi1kaXNhYmxlZCksIC5tYXQtdGFiLW5hdi1iYXIubWF0LWJhY2tncm91bmQtYWNjZW50W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtdGFiLWxhYmVsLmNkay1wcm9ncmFtLWZvY3VzZWRbX25nY29udGVudC0lQ09NUCVdOm5vdCgubWF0LXRhYi1kaXNhYmxlZCksIC5tYXQtdGFiLW5hdi1iYXIubWF0LWJhY2tncm91bmQtYWNjZW50W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtdGFiLWxpbmsuY2RrLWtleWJvYXJkLWZvY3VzZWRbX25nY29udGVudC0lQ09NUCVdOm5vdCgubWF0LXRhYi1kaXNhYmxlZCksIC5tYXQtdGFiLW5hdi1iYXIubWF0LWJhY2tncm91bmQtYWNjZW50W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtdGFiLWxpbmsuY2RrLXByb2dyYW0tZm9jdXNlZFtfbmdjb250ZW50LSVDT01QJV06bm90KC5tYXQtdGFiLWRpc2FibGVkKXtiYWNrZ3JvdW5kLWNvbG9yOnJnYmEoMjU1LDE1MiwwLC4zKX0ubWF0LXRhYi1ncm91cC5tYXQtYmFja2dyb3VuZC1hY2NlbnRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC10YWItaGVhZGVyW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10YWItZ3JvdXAubWF0LWJhY2tncm91bmQtYWNjZW50W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtdGFiLWxpbmtzW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10YWItZ3JvdXAubWF0LWJhY2tncm91bmQtYWNjZW50W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtdGFiLWhlYWRlci1wYWdpbmF0aW9uW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10YWItbmF2LWJhci5tYXQtYmFja2dyb3VuZC1hY2NlbnRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC10YWItaGVhZGVyW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10YWItbmF2LWJhci5tYXQtYmFja2dyb3VuZC1hY2NlbnRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC10YWItbGlua3NbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXRhYi1uYXYtYmFyLm1hdC1iYWNrZ3JvdW5kLWFjY2VudFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXRhYi1oZWFkZXItcGFnaW5hdGlvbltfbmdjb250ZW50LSVDT01QJV17YmFja2dyb3VuZC1jb2xvcjojZmY5ODAwfS5tYXQtdGFiLWdyb3VwLm1hdC1iYWNrZ3JvdW5kLWFjY2VudFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXRhYi1sYWJlbFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdGFiLWdyb3VwLm1hdC1iYWNrZ3JvdW5kLWFjY2VudFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXRhYi1saW5rW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10YWItbmF2LWJhci5tYXQtYmFja2dyb3VuZC1hY2NlbnRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC10YWItbGFiZWxbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXRhYi1uYXYtYmFyLm1hdC1iYWNrZ3JvdW5kLWFjY2VudFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXRhYi1saW5rW19uZ2NvbnRlbnQtJUNPTVAlXXtjb2xvcjojZmZmfS5tYXQtdGFiLWdyb3VwLm1hdC1iYWNrZ3JvdW5kLWFjY2VudFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXRhYi1sYWJlbC5tYXQtdGFiLWRpc2FibGVkW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10YWItZ3JvdXAubWF0LWJhY2tncm91bmQtYWNjZW50W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtdGFiLWxpbmsubWF0LXRhYi1kaXNhYmxlZFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdGFiLW5hdi1iYXIubWF0LWJhY2tncm91bmQtYWNjZW50W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtdGFiLWxhYmVsLm1hdC10YWItZGlzYWJsZWRbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXRhYi1uYXYtYmFyLm1hdC1iYWNrZ3JvdW5kLWFjY2VudFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXRhYi1saW5rLm1hdC10YWItZGlzYWJsZWRbX25nY29udGVudC0lQ09NUCVde2NvbG9yOnJnYmEoMjU1LDI1NSwyNTUsLjQpfS5tYXQtdGFiLWdyb3VwLm1hdC1iYWNrZ3JvdW5kLWFjY2VudFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXRhYi1oZWFkZXItcGFnaW5hdGlvbi1jaGV2cm9uW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10YWItbmF2LWJhci5tYXQtYmFja2dyb3VuZC1hY2NlbnRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC10YWItaGVhZGVyLXBhZ2luYXRpb24tY2hldnJvbltfbmdjb250ZW50LSVDT01QJV17Ym9yZGVyLWNvbG9yOiNmZmZ9Lm1hdC10YWItZ3JvdXAubWF0LWJhY2tncm91bmQtYWNjZW50W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtdGFiLWhlYWRlci1wYWdpbmF0aW9uLWRpc2FibGVkW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtdGFiLWhlYWRlci1wYWdpbmF0aW9uLWNoZXZyb25bX25nY29udGVudC0lQ09NUCVdLCAubWF0LXRhYi1uYXYtYmFyLm1hdC1iYWNrZ3JvdW5kLWFjY2VudFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXRhYi1oZWFkZXItcGFnaW5hdGlvbi1kaXNhYmxlZFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXRhYi1oZWFkZXItcGFnaW5hdGlvbi1jaGV2cm9uW19uZ2NvbnRlbnQtJUNPTVAlXXtib3JkZXItY29sb3I6cmdiYSgyNTUsMjU1LDI1NSwuNCl9Lm1hdC10YWItZ3JvdXAubWF0LWJhY2tncm91bmQtYWNjZW50W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtcmlwcGxlLWVsZW1lbnRbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXRhYi1uYXYtYmFyLm1hdC1iYWNrZ3JvdW5kLWFjY2VudFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXJpcHBsZS1lbGVtZW50W19uZ2NvbnRlbnQtJUNPTVAlXXtiYWNrZ3JvdW5kLWNvbG9yOnJnYmEoMjU1LDI1NSwyNTUsLjEyKX0ubWF0LXRhYi1ncm91cC5tYXQtYmFja2dyb3VuZC13YXJuW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtdGFiLWxhYmVsLmNkay1rZXlib2FyZC1mb2N1c2VkW19uZ2NvbnRlbnQtJUNPTVAlXTpub3QoLm1hdC10YWItZGlzYWJsZWQpLCAubWF0LXRhYi1ncm91cC5tYXQtYmFja2dyb3VuZC13YXJuW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtdGFiLWxhYmVsLmNkay1wcm9ncmFtLWZvY3VzZWRbX25nY29udGVudC0lQ09NUCVdOm5vdCgubWF0LXRhYi1kaXNhYmxlZCksIC5tYXQtdGFiLWdyb3VwLm1hdC1iYWNrZ3JvdW5kLXdhcm5bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC10YWItbGluay5jZGsta2V5Ym9hcmQtZm9jdXNlZFtfbmdjb250ZW50LSVDT01QJV06bm90KC5tYXQtdGFiLWRpc2FibGVkKSwgLm1hdC10YWItZ3JvdXAubWF0LWJhY2tncm91bmQtd2Fybltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXRhYi1saW5rLmNkay1wcm9ncmFtLWZvY3VzZWRbX25nY29udGVudC0lQ09NUCVdOm5vdCgubWF0LXRhYi1kaXNhYmxlZCksIC5tYXQtdGFiLW5hdi1iYXIubWF0LWJhY2tncm91bmQtd2Fybltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXRhYi1sYWJlbC5jZGsta2V5Ym9hcmQtZm9jdXNlZFtfbmdjb250ZW50LSVDT01QJV06bm90KC5tYXQtdGFiLWRpc2FibGVkKSwgLm1hdC10YWItbmF2LWJhci5tYXQtYmFja2dyb3VuZC13YXJuW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtdGFiLWxhYmVsLmNkay1wcm9ncmFtLWZvY3VzZWRbX25nY29udGVudC0lQ09NUCVdOm5vdCgubWF0LXRhYi1kaXNhYmxlZCksIC5tYXQtdGFiLW5hdi1iYXIubWF0LWJhY2tncm91bmQtd2Fybltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXRhYi1saW5rLmNkay1rZXlib2FyZC1mb2N1c2VkW19uZ2NvbnRlbnQtJUNPTVAlXTpub3QoLm1hdC10YWItZGlzYWJsZWQpLCAubWF0LXRhYi1uYXYtYmFyLm1hdC1iYWNrZ3JvdW5kLXdhcm5bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC10YWItbGluay5jZGstcHJvZ3JhbS1mb2N1c2VkW19uZ2NvbnRlbnQtJUNPTVAlXTpub3QoLm1hdC10YWItZGlzYWJsZWQpe2JhY2tncm91bmQtY29sb3I6cmdiYSgyNTUsMjA1LDIxMCwuMyl9Lm1hdC10YWItZ3JvdXAubWF0LWJhY2tncm91bmQtd2Fybltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXRhYi1oZWFkZXJbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXRhYi1ncm91cC5tYXQtYmFja2dyb3VuZC13YXJuW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtdGFiLWxpbmtzW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10YWItZ3JvdXAubWF0LWJhY2tncm91bmQtd2Fybltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXRhYi1oZWFkZXItcGFnaW5hdGlvbltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdGFiLW5hdi1iYXIubWF0LWJhY2tncm91bmQtd2Fybltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXRhYi1oZWFkZXJbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXRhYi1uYXYtYmFyLm1hdC1iYWNrZ3JvdW5kLXdhcm5bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC10YWItbGlua3NbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXRhYi1uYXYtYmFyLm1hdC1iYWNrZ3JvdW5kLXdhcm5bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC10YWItaGVhZGVyLXBhZ2luYXRpb25bX25nY29udGVudC0lQ09NUCVde2JhY2tncm91bmQtY29sb3I6I2Y0NDMzNn0ubWF0LXRhYi1ncm91cC5tYXQtYmFja2dyb3VuZC13YXJuW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtdGFiLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10YWItZ3JvdXAubWF0LWJhY2tncm91bmQtd2Fybltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXRhYi1saW5rW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10YWItbmF2LWJhci5tYXQtYmFja2dyb3VuZC13YXJuW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtdGFiLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10YWItbmF2LWJhci5tYXQtYmFja2dyb3VuZC13YXJuW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtdGFiLWxpbmtbX25nY29udGVudC0lQ09NUCVde2NvbG9yOiNmZmZ9Lm1hdC10YWItZ3JvdXAubWF0LWJhY2tncm91bmQtd2Fybltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXRhYi1sYWJlbC5tYXQtdGFiLWRpc2FibGVkW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10YWItZ3JvdXAubWF0LWJhY2tncm91bmQtd2Fybltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXRhYi1saW5rLm1hdC10YWItZGlzYWJsZWRbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXRhYi1uYXYtYmFyLm1hdC1iYWNrZ3JvdW5kLXdhcm5bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC10YWItbGFiZWwubWF0LXRhYi1kaXNhYmxlZFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdGFiLW5hdi1iYXIubWF0LWJhY2tncm91bmQtd2Fybltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXRhYi1saW5rLm1hdC10YWItZGlzYWJsZWRbX25nY29udGVudC0lQ09NUCVde2NvbG9yOnJnYmEoMjU1LDI1NSwyNTUsLjQpfS5tYXQtdGFiLWdyb3VwLm1hdC1iYWNrZ3JvdW5kLXdhcm5bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC10YWItaGVhZGVyLXBhZ2luYXRpb24tY2hldnJvbltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdGFiLW5hdi1iYXIubWF0LWJhY2tncm91bmQtd2Fybltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXRhYi1oZWFkZXItcGFnaW5hdGlvbi1jaGV2cm9uW19uZ2NvbnRlbnQtJUNPTVAlXXtib3JkZXItY29sb3I6I2ZmZn0ubWF0LXRhYi1ncm91cC5tYXQtYmFja2dyb3VuZC13YXJuW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtdGFiLWhlYWRlci1wYWdpbmF0aW9uLWRpc2FibGVkW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtdGFiLWhlYWRlci1wYWdpbmF0aW9uLWNoZXZyb25bX25nY29udGVudC0lQ09NUCVdLCAubWF0LXRhYi1uYXYtYmFyLm1hdC1iYWNrZ3JvdW5kLXdhcm5bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC10YWItaGVhZGVyLXBhZ2luYXRpb24tZGlzYWJsZWRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC10YWItaGVhZGVyLXBhZ2luYXRpb24tY2hldnJvbltfbmdjb250ZW50LSVDT01QJV17Ym9yZGVyLWNvbG9yOnJnYmEoMjU1LDI1NSwyNTUsLjQpfS5tYXQtdGFiLWdyb3VwLm1hdC1iYWNrZ3JvdW5kLXdhcm5bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1yaXBwbGUtZWxlbWVudFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdGFiLW5hdi1iYXIubWF0LWJhY2tncm91bmQtd2Fybltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXJpcHBsZS1lbGVtZW50W19uZ2NvbnRlbnQtJUNPTVAlXXtiYWNrZ3JvdW5kLWNvbG9yOnJnYmEoMjU1LDI1NSwyNTUsLjEyKX0ubWF0LXRvb2xiYXJbX25nY29udGVudC0lQ09NUCVde2JhY2tncm91bmQ6I2Y1ZjVmNTtjb2xvcjojMjEyMTIxfS5tYXQtdG9vbGJhci5tYXQtcHJpbWFyeVtfbmdjb250ZW50LSVDT01QJV17YmFja2dyb3VuZDojZjU3YzAwO2NvbG9yOiNmZmZ9Lm1hdC10b29sYmFyLm1hdC1hY2NlbnRbX25nY29udGVudC0lQ09NUCVde2JhY2tncm91bmQ6I2ZmOTgwMDtjb2xvcjojZmZmfS5tYXQtdG9vbGJhci5tYXQtd2Fybltfbmdjb250ZW50LSVDT01QJV17YmFja2dyb3VuZDojZjQ0MzM2O2NvbG9yOiNmZmZ9Lm1hdC10b29sYmFyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC11bmRlcmxpbmVbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXRvb2xiYXJbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLXJpcHBsZVtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdG9vbGJhcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvY3VzZWRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLXJpcHBsZVtfbmdjb250ZW50LSVDT01QJV17YmFja2dyb3VuZC1jb2xvcjpjdXJyZW50Q29sb3J9Lm1hdC10b29sYmFyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdG9vbGJhcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvY3VzZWRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10b29sYmFyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtc2VsZWN0LXZhbHVlW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10b29sYmFyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtc2VsZWN0LWFycm93W19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10b29sYmFyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC5tYXQtZm9jdXNlZFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXNlbGVjdC1hcnJvd1tfbmdjb250ZW50LSVDT01QJV17Y29sb3I6aW5oZXJpdH0ubWF0LXRvb2xiYXJbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pbnB1dC1lbGVtZW50W19uZ2NvbnRlbnQtJUNPTVAlXXtjYXJldC1jb2xvcjpjdXJyZW50Q29sb3J9Lm1hdC10b29sYmFyLW11bHRpcGxlLXJvd3NbX25nY29udGVudC0lQ09NUCVde21pbi1oZWlnaHQ6NjRweH0ubWF0LXRvb2xiYXItcm93W19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10b29sYmFyLXNpbmdsZS1yb3dbX25nY29udGVudC0lQ09NUCVde2hlaWdodDo2NHB4fUBtZWRpYShtYXgtd2lkdGg6IDU5OXB4KXsubWF0LXRvb2xiYXItbXVsdGlwbGUtcm93c1tfbmdjb250ZW50LSVDT01QJV17bWluLWhlaWdodDo1NnB4fS5tYXQtdG9vbGJhci1yb3dbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXRvb2xiYXItc2luZ2xlLXJvd1tfbmdjb250ZW50LSVDT01QJV17aGVpZ2h0OjU2cHh9fS5tYXQtdG9vbHRpcFtfbmdjb250ZW50LSVDT01QJV17YmFja2dyb3VuZDpyZ2JhKDk3LDk3LDk3LC45KX0ubWF0LXRyZWVbX25nY29udGVudC0lQ09NUCVde2JhY2tncm91bmQ6I2ZmZn0ubWF0LXRyZWUtbm9kZVtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtbmVzdGVkLXRyZWUtbm9kZVtfbmdjb250ZW50LSVDT01QJV17Y29sb3I6IzIxMjEyMX0ubWF0LXRyZWUtbm9kZVtfbmdjb250ZW50LSVDT01QJV17bWluLWhlaWdodDo0OHB4fS5tYXQtc25hY2stYmFyLWNvbnRhaW5lcltfbmdjb250ZW50LSVDT01QJV17Y29sb3I6cmdiYSgyNTUsMjU1LDI1NSwuNyk7YmFja2dyb3VuZDojMzIzMjMyO2JveC1zaGFkb3c6MHB4IDNweCA1cHggLTFweCByZ2JhKDAsIDAsIDAsIDAuMiksMHB4IDZweCAxMHB4IDBweCByZ2JhKDAsIDAsIDAsIDAuMTQpLDBweCAxcHggMThweCAwcHggcmdiYSgwLCAwLCAwLCAwLjEyKX0ubWF0LXNpbXBsZS1zbmFja2Jhci1hY3Rpb25bX25nY29udGVudC0lQ09NUCVde2NvbG9yOiNmZjk4MDB9aDJbX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToxLjI1ZW07b3ZlcmZsb3ctd3JhcDpicmVhay13b3JkfS5ydW4tc2VsZWN0b3JbX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZTouOWVtO3dpZHRoOjEwMCV9LmRvd25sb2FkLWNvbnRyb2xzW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6LjllbX0uZG93bmxvYWQtY29udHJvbHNbX25nY29udGVudC0lQ09NUCVdICAgYVtfbmdjb250ZW50LSVDT01QJV17bWFyZ2luOjNweCAxMHB4IDNweCAwfSddLGNoYW5nZURldGVjdGlvbjowfSk7Y2xhc3MgJCR7Y29uc3RydWN0b3IodCxuLGUpe3RoaXMuc2VsZWN0ZWRSdW5JZCQ9bmV3IEYobnVsbCksdGhpcy5jYXJkTWV0YWRhdGEkPXQuc2VsZWN0KCRULGUuY2FyZElkKS5waXBlKEd0KCh0PT5Cb29sZWFuKHQpKSkpLHRoaXMuZG93bmxvYWRVcmxDc3YkPUV0KFt0LnNlbGVjdCgkVCxlLmNhcmRJZCksdGhpcy5zZWxlY3RlZFJ1bklkJF0pLnBpcGUoZnQoKChbdCxlXSk9PnQmJmU/bi5kb3dubG9hZFVybCh0LnBsdWdpbix0LnRhZyxlLCJjc3YiKTpudWxsKSksY2UobnVsbCkpLHRoaXMuZG93bmxvYWRVcmxKc29uJD1FdChbdC5zZWxlY3QoJFQsZS5jYXJkSWQpLHRoaXMuc2VsZWN0ZWRSdW5JZCRdKS5waXBlKGZ0KCgoW3QsZV0pPT50JiZlP24uZG93bmxvYWRVcmwodC5wbHVnaW4sdC50YWcsZSwianNvbiIpOm51bGwpKSxjZShudWxsKSksdGhpcy5ydW5zJD1FdChbdC5zZWxlY3QoTkQpLHQuc2VsZWN0KFFULGUuY2FyZElkKV0pLnBpcGUoZnQoKChbdCxuXSk9Pm4/T2JqZWN0LmtleXMobikubWFwKChuPT50LmdldChuKSkpLmZpbHRlcihCb29sZWFuKTpbXSkpKX19JCQuybVmYWM9ZnVuY3Rpb24gdChuKXtyZXR1cm4gbmV3KG58fCQkKShaZyhjdiksWmcoX1QpLFpnKHNCKSl9LCQkLsm1Y21wPV9vKHt0eXBlOiQkLHNlbGVjdG9yczpbWyJkYXRhX2Rvd25sb2FkX2RpYWxvZyJdXSxkZWNsczo2LHZhcnM6MTUsY29uc3RzOltbMywiY2FyZE1ldGFkYXRhIiwicnVucyIsInNlbGVjdGVkUnVuSWQiLCJkb3dubG9hZFVybENzdiIsImRvd25sb2FkVXJsSnNvbiIsInJ1blNlbGVjdGVkIl1dLHRlbXBsYXRlOmZ1bmN0aW9uIHQobixlKXsxJm4mJihLZygwLCJkYXRhX2Rvd25sb2FkX2RpYWxvZ19jb21wb25lbnQiLDApLGNwKCJydW5TZWxlY3RlZCIsKGZ1bmN0aW9uIHQobil7cmV0dXJuIGUuc2VsZWN0ZWRSdW5JZCQubmV4dChuKX0pKSx5ZigxLCJhc3luYyIpLHlmKDIsImFzeW5jIikseWYoMywiYXN5bmMiKSx5Zig0LCJhc3luYyIpLHlmKDUsImFzeW5jIiksJGcoKSksMiZuJiZKZygiY2FyZE1ldGFkYXRhIixrZigxLDUsZS5jYXJkTWV0YWRhdGEkKSkoInJ1bnMiLGtmKDIsNyxlLnJ1bnMkKSkoInNlbGVjdGVkUnVuSWQiLGtmKDMsOSxlLnNlbGVjdGVkUnVuSWQkKSkoImRvd25sb2FkVXJsQ3N2IixrZig0LDExLGUuZG93bmxvYWRVcmxDc3YkKSkoImRvd25sb2FkVXJsSnNvbiIsa2YoNSwxMyxlLmRvd25sb2FkVXJsSnNvbiQpKX0sZGlyZWN0aXZlczpbSyRdLHBpcGVzOltvT10sZW5jYXBzdWxhdGlvbjoyLGNoYW5nZURldGVjdGlvbjowfSksKGZ1bmN0aW9uKHQpe3RbdC5PUklHSU5BTD0wXT0iT1JJR0lOQUwiLHRbdC5ERVJJVkVEPTFdPSJERVJJVkVEIn0pKFUkfHwoVSQ9e30pKTtjb25zdCB0MD1NYXRoLnBvdygxMCw0KTtjbGFzcyBuMHtjb25zdHJ1Y3Rvcih0KXt0aGlzLmhvc3Q9dCx0aGlzLmlnbm9yZVlPdXRsaWVycz0hMSx0aGlzLnNtb290aGluZ0VuYWJsZWQ9ITEsdGhpcy5zbW9vdGhpbmdXZWlnaHQ9LjYsdGhpcy50b29sdGlwQ29sdW1ucz1bXSx0aGlzLnRvb2x0aXBQb3NpdGlvbj1CVC5BVVRPLHRoaXMudG9vbHRpcFNvcnRpbmdNZXRob2Q9VlQuREVGQVVMVCx0aGlzLnNlcmllc0RhdGFMaXN0PVtdLHRoaXMueEF4aXNUeXBlPWpULlNURVAsdGhpcy55QXhpc1R5cGU9VVQuTElORUFSLHRoaXMuZWxlbWVudD1kb2N1bWVudC5jcmVhdGVFbGVtZW50KCJ2ei1saW5lLWNoYXJ0MiIpLHRoaXMuZWxlbWVudC55VmFsdWVBY2Nlc3Nvcj10PT50LnksdGhpcy5lbGVtZW50Lmlnbm9yZVlPdXRsaWVycz10aGlzLmlnbm9yZVlPdXRsaWVycyx0aGlzLmVsZW1lbnQuc21vb3RoaW5nRW5hYmxlZD10aGlzLnNtb290aGluZ0VuYWJsZWQsdGhpcy5lbGVtZW50LnNtb290aGluZ1dlaWdodD10aGlzLnNtb290aGluZ1dlaWdodCx0aGlzLmVsZW1lbnQudG9vbHRpcENvbHVtbnM9dGhpcy50b29sdGlwQ29sdW1ucyx0aGlzLmVsZW1lbnQudG9vbHRpcFBvc2l0aW9uPXRoaXMudG9vbHRpcFBvc2l0aW9uLHRoaXMuZWxlbWVudC50b29sdGlwU29ydGluZ01ldGhvZD10aGlzLnRvb2x0aXBTb3J0aW5nTWV0aG9kLHRoaXMuZWxlbWVudC54VHlwZT10aGlzLnhBeGlzVHlwZSx0aGlzLmVsZW1lbnQueVNjYWxlVHlwZT10aGlzLnlBeGlzVHlwZX1uZ09uSW5pdCgpe3RoaXMuaG9zdC5uYXRpdmVFbGVtZW50LmFwcGVuZENoaWxkKHRoaXMuZWxlbWVudCl9bmdPbkNoYW5nZXModCl7Y29uc3Qgbj10aGlzLmVsZW1lbnQuaXNEYXRhRml0VG9Eb21haW4oKTt0LmNvbG9yU2NhbGUmJnRoaXMuY29sb3JTY2FsZSYmKHRoaXMuZWxlbWVudC5jb2xvclNjYWxlPXtzY2FsZTp0aGlzLmNvbG9yU2NhbGV9KSx0LmRlZmF1bHRYUmFuZ2UmJih0aGlzLmVsZW1lbnQuZGVmYXVsdFhSYW5nZT10aGlzLmRlZmF1bHRYUmFuZ2UpLHQuZGVmYXVsdFlSYW5nZSYmKHRoaXMuZWxlbWVudC5kZWZhdWx0WVJhbmdlPXRoaXMuZGVmYXVsdFlSYW5nZSksdC5pZ25vcmVZT3V0bGllcnMmJih0aGlzLmVsZW1lbnQuaWdub3JlWU91dGxpZXJzPXRoaXMuaWdub3JlWU91dGxpZXJzKSx0LnNtb290aGluZ0VuYWJsZWQmJih0aGlzLmVsZW1lbnQuc21vb3RoaW5nRW5hYmxlZD10aGlzLnNtb290aGluZ0VuYWJsZWQpLHQuc21vb3RoaW5nV2VpZ2h0JiYodGhpcy5lbGVtZW50LnNtb290aGluZ1dlaWdodD10aGlzLnNtb290aGluZ1dlaWdodCksdC50b29sdGlwQ29sdW1ucyYmKHRoaXMuZWxlbWVudC50b29sdGlwQ29sdW1ucz10aGlzLnRvb2x0aXBDb2x1bW5zKSx0LnRvb2x0aXBQb3NpdGlvbiYmKHRoaXMuZWxlbWVudC50b29sdGlwUG9zaXRpb249dGhpcy50b29sdGlwUG9zaXRpb24pLHQudG9vbHRpcFNvcnRpbmdNZXRob2QmJih0aGlzLmVsZW1lbnQudG9vbHRpcFNvcnRpbmdNZXRob2Q9dGhpcy50b29sdGlwU29ydGluZ01ldGhvZCksdC54QXhpc1R5cGUmJih0aGlzLmVsZW1lbnQueFR5cGU9dGhpcy54QXhpc1R5cGUpLHQueUF4aXNUeXBlJiYodGhpcy5lbGVtZW50LnlTY2FsZVR5cGU9dGhpcy55QXhpc1R5cGUpLHRoaXMuc2hvdWxkVXBkYXRlU2VyaWVzRGF0YSh0KSYmdGhpcy51cGRhdGVTZXJpZXNEYXRhKCksbiYmKHQuc2VyaWVzRGF0YUxpc3R8fHQuc21vb3RoaW5nRW5hYmxlZHx8dC5zbW9vdGhpbmdXZWlnaHQmJnRoaXMuc21vb3RoaW5nRW5hYmxlZCkmJnRoaXMuZWxlbWVudC5yZXNldERvbWFpbigpLHRoaXMuZWxlbWVudC5yZWRyYXcoKX1zaG91bGRVcGRhdGVTZXJpZXNEYXRhKHQpe2lmKHQuc2VyaWVzRGF0YUxpc3QpcmV0dXJuITA7Y29uc3Qgbj10LnhBeGlzVHlwZT90LnhBeGlzVHlwZS5wcmV2aW91c1ZhbHVlOm51bGw7cmV0dXJuISghbnx8dGhpcy5pc1dhbGxUaW1lQmFzZWQobik9PT10aGlzLmlzV2FsbFRpbWVCYXNlZCh0aGlzLnhBeGlzVHlwZSkpfXVwZGF0ZVNlcmllc0RhdGEoKXtmb3IoY29uc3QgdCBvZiB0aGlzLnNlcmllc0RhdGFMaXN0KXtjb25zdHtzZXJpZXNJZDpuLG1ldGFkYXRhOmUscG9pbnRzOmF9PXQsbz10aGlzLmZvcm1hdEJ5WEF4aXNUeXBlKGEpO3RoaXMuZWxlbWVudC5zZXRTZXJpZXNEYXRhKG4sbyksdGhpcy5lbGVtZW50LnNldFNlcmllc01ldGFkYXRhKG4sZSl9Y29uc3QgdD10aGlzLnNlcmllc0RhdGFMaXN0LmZpbHRlcigodD0+dC52aXNpYmxlKSkubWFwKCgoe3Nlcmllc0lkOnR9KT0+dCkpO3RoaXMuZWxlbWVudC5zZXRWaXNpYmxlU2VyaWVzKHQpLHRoaXMuZWxlbWVudC5jb21taXRDaGFuZ2VzKCl9aXNXYWxsVGltZUJhc2VkKHQpe3JldHVybiB0PT09alQuV0FMTF9USU1FfHx0PT09alQuUkVMQVRJVkV9Zm9ybWF0QnlYQXhpc1R5cGUodCl7cmV0dXJuIHQubWFwKCh0PT50aGlzLmlzV2FsbFRpbWVCYXNlZCh0aGlzLnhBeGlzVHlwZSk/T2JqZWN0LmFzc2lnbihPYmplY3QuYXNzaWduKHt9LHQpLHt3YWxsX3RpbWU6bmV3IERhdGUoMWUzKnQueCl9KTpPYmplY3QuYXNzaWduKE9iamVjdC5hc3NpZ24oe30sdCkse3N0ZXA6dC54fSkpKX1yZXNldERvbWFpbigpe3RoaXMuZWxlbWVudC5yZXNldERvbWFpbigpfXJlZHJhdygpe3RoaXMuZWxlbWVudC5yZWRyYXcoKX19ZnVuY3Rpb24gZTAodCxuKXtyZXR1cm4gdDxuPy0xOnQ+bj8xOnQ+PW4/MDpOYU59ZnVuY3Rpb24gYTAodCl7cmV0dXJuIDE9PT10Lmxlbmd0aCYmKHQ9KGZ1bmN0aW9uIG4odCl7cmV0dXJuIGZ1bmN0aW9uKG4sZSl7cmV0dXJuIGUwKHQobiksZSl9fSkodCkpLHtsZWZ0OmZ1bmN0aW9uKG4sZSxhLG8pe2ZvcihudWxsPT1hJiYoYT0wKSxudWxsPT1vJiYobz1uLmxlbmd0aCk7YTxvOyl7dmFyIHI9YStvPj4+MTt0KG5bcl0sZSk8MD9hPXIrMTpvPXJ9cmV0dXJuIGF9LHJpZ2h0OmZ1bmN0aW9uKG4sZSxhLG8pe2ZvcihudWxsPT1hJiYoYT0wKSxudWxsPT1vJiYobz1uLmxlbmd0aCk7YTxvOyl7dmFyIHI9YStvPj4+MTt0KG5bcl0sZSk+MD9vPXI6YT1yKzF9cmV0dXJuIGF9fX1uMC7JtWZhYz1mdW5jdGlvbiB0KG4pe3JldHVybiBuZXcobnx8bjApKFpnKHh1KSl9LG4wLsm1Y21wPV9vKHt0eXBlOm4wLHNlbGVjdG9yczpbWyJ0Yi1saW5lLWNoYXJ0Il1dLGlucHV0czp7Y29sb3JTY2FsZToiY29sb3JTY2FsZSIsZGVmYXVsdFhSYW5nZToiZGVmYXVsdFhSYW5nZSIsZGVmYXVsdFlSYW5nZToiZGVmYXVsdFlSYW5nZSIsaWdub3JlWU91dGxpZXJzOiJpZ25vcmVZT3V0bGllcnMiLHNtb290aGluZ0VuYWJsZWQ6InNtb290aGluZ0VuYWJsZWQiLHNtb290aGluZ1dlaWdodDoic21vb3RoaW5nV2VpZ2h0Iix0b29sdGlwQ29sdW1uczoidG9vbHRpcENvbHVtbnMiLHRvb2x0aXBQb3NpdGlvbjoidG9vbHRpcFBvc2l0aW9uIix0b29sdGlwU29ydGluZ01ldGhvZDoidG9vbHRpcFNvcnRpbmdNZXRob2QiLHNlcmllc0RhdGFMaXN0OiJzZXJpZXNEYXRhTGlzdCIseEF4aXNUeXBlOiJ4QXhpc1R5cGUiLHlBeGlzVHlwZToieUF4aXNUeXBlIn0sZmVhdHVyZXM6W3ByXSxkZWNsczowLHZhcnM6MCx0ZW1wbGF0ZTpmdW5jdGlvbiB0KG4sZSl7fSxzdHlsZXM6WyJcbiAgICAgIHRiLWxpbmUtY2hhcnQgPiB2ei1saW5lLWNoYXJ0MiB7XG4gICAgICAgIGhlaWdodDogMTAwJTtcbiAgICAgIH1cbiAgICAiXSxlbmNhcHN1bGF0aW9uOjJ9KTt2YXIgbzA9YTAoZTApLnJpZ2h0O2Z1bmN0aW9uIHIwKHQsbil7dmFyIGUsYSxvLHI9dC5sZW5ndGgsaT0tMTtpZihudWxsPT1uKXtmb3IoOysraTxyOylpZihudWxsIT0oZT10W2ldKSYmZT49ZSlmb3IoYT1vPWU7KytpPHI7KW51bGwhPShlPXRbaV0pJiYoYT5lJiYoYT1lKSxvPGUmJihvPWUpKX1lbHNlIGZvcig7KytpPHI7KWlmKG51bGwhPShlPW4odFtpXSxpLHQpKSYmZT49ZSlmb3IoYT1vPWU7KytpPHI7KW51bGwhPShlPW4odFtpXSxpLHQpKSYmKGE+ZSYmKGE9ZSksbzxlJiYobz1lKSk7cmV0dXJuW2Esb119dmFyIGkwPUFycmF5LnByb3RvdHlwZS5zbGljZTtmdW5jdGlvbiBjMCh0KXtyZXR1cm4gZnVuY3Rpb24oKXtyZXR1cm4gdH19ZnVuY3Rpb24gczAodCl7cmV0dXJuIHR9ZnVuY3Rpb24gbDAodCxuLGUpe3Q9K3Qsbj0rbixlPShvPWFyZ3VtZW50cy5sZW5ndGgpPDI/KG49dCx0PTAsMSk6bzwzPzE6K2U7Zm9yKHZhciBhPS0xLG89MHxNYXRoLm1heCgwLE1hdGguY2VpbCgobi10KS9lKSkscj1uZXcgQXJyYXkobyk7KythPG87KXJbYV09dCthKmU7cmV0dXJuIHJ9dmFyIG0wPU1hdGguc3FydCg1MCksZDA9TWF0aC5zcXJ0KDEwKSxnMD1NYXRoLnNxcnQoMik7ZnVuY3Rpb24gcDAodCxuLGUpe3ZhciBhLG8scixpLGM9LTE7aWYoZT0rZSwodD0rdCk9PShuPStuKSYmZT4wKXJldHVyblt0XTtpZigoYT1uPHQpJiYobz10LHQ9bixuPW8pLDA9PT0oaT1iMCh0LG4sZSkpfHwhaXNGaW5pdGUoaSkpcmV0dXJuW107aWYoaT4wKWZvcih0PU1hdGguY2VpbCh0L2kpLG49TWF0aC5mbG9vcihuL2kpLHI9bmV3IEFycmF5KG89TWF0aC5jZWlsKG4tdCsxKSk7KytjPG87KXJbY109KHQrYykqaTtlbHNlIGZvcih0PU1hdGguZmxvb3IodCppKSxuPU1hdGguY2VpbChuKmkpLHI9bmV3IEFycmF5KG89TWF0aC5jZWlsKHQtbisxKSk7KytjPG87KXJbY109KHQtYykvaTtyZXR1cm4gYSYmci5yZXZlcnNlKCkscn1mdW5jdGlvbiBiMCh0LG4sZSl7dmFyIGE9KG4tdCkvTWF0aC5tYXgoMCxlKSxvPU1hdGguZmxvb3IoTWF0aC5sb2coYSkvTWF0aC5MTjEwKSxyPWEvTWF0aC5wb3coMTAsbyk7cmV0dXJuIG8+PTA/KHI+PW0wPzEwOnI+PWQwPzU6cj49ZzA/MjoxKSpNYXRoLnBvdygxMCxvKTotTWF0aC5wb3coMTAsLW8pLyhyPj1tMD8xMDpyPj1kMD81OnI+PWcwPzI6MSl9ZnVuY3Rpb24gdTAodCxuLGUpe3ZhciBhPU1hdGguYWJzKG4tdCkvTWF0aC5tYXgoMCxlKSxvPU1hdGgucG93KDEwLE1hdGguZmxvb3IoTWF0aC5sb2coYSkvTWF0aC5MTjEwKSkscj1hL287cmV0dXJuIHI+PW0wP28qPTEwOnI+PWQwP28qPTU6cj49ZzAmJihvKj0yKSxuPHQ/LW86b31mdW5jdGlvbiBmMCh0KXtyZXR1cm4gTWF0aC5jZWlsKE1hdGgubG9nKHQubGVuZ3RoKS9NYXRoLkxOMikrMX1mdW5jdGlvbiBoMCgpe3ZhciB0PXMwLG49cjAsZT1mMDtmdW5jdGlvbiBhKGEpe3ZhciBvLHIsaT1hLmxlbmd0aCxjPW5ldyBBcnJheShpKTtmb3Iobz0wO288aTsrK28pY1tvXT10KGFbb10sbyxhKTt2YXIgcz1uKGMpLGw9c1swXSxtPXNbMV0sZD1lKGMsbCxtKTtBcnJheS5pc0FycmF5KGQpfHwoZD11MChsLG0sZCksZD1sMChNYXRoLmNlaWwobC9kKSpkLG0sZCkpO2Zvcih2YXIgZz1kLmxlbmd0aDtkWzBdPD1sOylkLnNoaWZ0KCksLS1nO2Zvcig7ZFtnLTFdPm07KWQucG9wKCksLS1nO3ZhciBwLGI9bmV3IEFycmF5KGcrMSk7Zm9yKG89MDtvPD1nOysrbykocD1iW29dPVtdKS54MD1vPjA/ZFtvLTFdOmwscC54MT1vPGc/ZFtvXTptO2ZvcihvPTA7bzxpOysrbylsPD0ocj1jW29dKSYmcjw9bSYmYltvMChkLHIsMCxnKV0ucHVzaChhW29dKTtyZXR1cm4gYn1yZXR1cm4gYS52YWx1ZT1mdW5jdGlvbihuKXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8odD0iZnVuY3Rpb24iPT10eXBlb2Ygbj9uOmMwKG4pLGEpOnR9LGEuZG9tYWluPWZ1bmN0aW9uKHQpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyhuPSJmdW5jdGlvbiI9PXR5cGVvZiB0P3Q6YzAoW3RbMF0sdFsxXV0pLGEpOm59LGEudGhyZXNob2xkcz1mdW5jdGlvbih0KXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8oZT0iZnVuY3Rpb24iPT10eXBlb2YgdD90OkFycmF5LmlzQXJyYXkodCk/YzAoaTAuY2FsbCh0KSk6YzAodCksYSk6ZX0sYX12YXIgXzA9QXJyYXkucHJvdG90eXBlLnNsaWNlO2Z1bmN0aW9uIEMwKHQpe3JldHVybiB0fXZhciBNMD0xZS02O2Z1bmN0aW9uIE8wKHQpe3JldHVybiJ0cmFuc2xhdGUoIisodCsuNSkrIiwwKSJ9ZnVuY3Rpb24gUDAodCl7cmV0dXJuInRyYW5zbGF0ZSgwLCIrKHQrLjUpKyIpIn1mdW5jdGlvbiB4MCh0KXtyZXR1cm4gZnVuY3Rpb24obil7cmV0dXJuK3Qobil9fWZ1bmN0aW9uIHkwKHQpe3ZhciBuPU1hdGgubWF4KDAsdC5iYW5kd2lkdGgoKS0xKS8yO3JldHVybiB0LnJvdW5kKCkmJihuPU1hdGgucm91bmQobikpLGZ1bmN0aW9uKGUpe3JldHVybit0KGUpK259fWZ1bmN0aW9uIGswKCl7cmV0dXJuIXRoaXMuX19heGlzfWZ1bmN0aW9uIHYwKHQsbil7dmFyIGU9W10sYT1udWxsLG89bnVsbCxyPTYsaT02LGM9MyxzPTE9PT10fHw0PT09dD8tMToxLGw9ND09PXR8fDI9PT10PyJ4IjoieSIsbT0xPT09dHx8Mz09PXQ/TzA6UDA7ZnVuY3Rpb24gZChkKXt2YXIgZz1udWxsPT1hP24udGlja3M/bi50aWNrcy5hcHBseShuLGUpOm4uZG9tYWluKCk6YSxwPW51bGw9PW8/bi50aWNrRm9ybWF0P24udGlja0Zvcm1hdC5hcHBseShuLGUpOkMwOm8sYj1NYXRoLm1heChyLDApK2MsdT1uLnJhbmdlKCksZj0rdVswXSsuNSxoPSt1W3UubGVuZ3RoLTFdKy41LF89KG4uYmFuZHdpZHRoP3kwOngwKShuLmNvcHkoKSksQz1kLnNlbGVjdGlvbj9kLnNlbGVjdGlvbigpOmQsTT1DLnNlbGVjdEFsbCgiLmRvbWFpbiIpLmRhdGEoW251bGxdKSxPPUMuc2VsZWN0QWxsKCIudGljayIpLmRhdGEoZyxuKS5vcmRlcigpLFA9Ty5leGl0KCkseD1PLmVudGVyKCkuYXBwZW5kKCJnIikuYXR0cigiY2xhc3MiLCJ0aWNrIikseT1PLnNlbGVjdCgibGluZSIpLGs9Ty5zZWxlY3QoInRleHQiKTtNPU0ubWVyZ2UoTS5lbnRlcigpLmluc2VydCgicGF0aCIsIi50aWNrIikuYXR0cigiY2xhc3MiLCJkb21haW4iKS5hdHRyKCJzdHJva2UiLCJjdXJyZW50Q29sb3IiKSksTz1PLm1lcmdlKHgpLHk9eS5tZXJnZSh4LmFwcGVuZCgibGluZSIpLmF0dHIoInN0cm9rZSIsImN1cnJlbnRDb2xvciIpLmF0dHIobCsiMiIscypyKSksaz1rLm1lcmdlKHguYXBwZW5kKCJ0ZXh0IikuYXR0cigiZmlsbCIsImN1cnJlbnRDb2xvciIpLmF0dHIobCxzKmIpLmF0dHIoImR5IiwxPT09dD8iMGVtIjozPT09dD8iMC43MWVtIjoiMC4zMmVtIikpLGQhPT1DJiYoTT1NLnRyYW5zaXRpb24oZCksTz1PLnRyYW5zaXRpb24oZCkseT15LnRyYW5zaXRpb24oZCksaz1rLnRyYW5zaXRpb24oZCksUD1QLnRyYW5zaXRpb24oZCkuYXR0cigib3BhY2l0eSIsTTApLmF0dHIoInRyYW5zZm9ybSIsKGZ1bmN0aW9uKHQpe3JldHVybiBpc0Zpbml0ZSh0PV8odCkpP20odCk6dGhpcy5nZXRBdHRyaWJ1dGUoInRyYW5zZm9ybSIpfSkpLHguYXR0cigib3BhY2l0eSIsTTApLmF0dHIoInRyYW5zZm9ybSIsKGZ1bmN0aW9uKHQpe3ZhciBuPXRoaXMucGFyZW50Tm9kZS5fX2F4aXM7cmV0dXJuIG0obiYmaXNGaW5pdGUobj1uKHQpKT9uOl8odCkpfSkpKSxQLnJlbW92ZSgpLE0uYXR0cigiZCIsND09PXR8fDI9PXQ/aT8iTSIrcyppKyIsIitmKyJIMC41ViIraCsiSCIrcyppOiJNMC41LCIrZisiViIraDppPyJNIitmKyIsIitzKmkrIlYwLjVIIitoKyJWIitzKmk6Ik0iK2YrIiwwLjVIIitoKSxPLmF0dHIoIm9wYWNpdHkiLDEpLmF0dHIoInRyYW5zZm9ybSIsKGZ1bmN0aW9uKHQpe3JldHVybiBtKF8odCkpfSkpLHkuYXR0cihsKyIyIixzKnIpLGsuYXR0cihsLHMqYikudGV4dChwKSxDLmZpbHRlcihrMCkuYXR0cigiZmlsbCIsIm5vbmUiKS5hdHRyKCJmb250LXNpemUiLDEwKS5hdHRyKCJmb250LWZhbWlseSIsInNhbnMtc2VyaWYiKS5hdHRyKCJ0ZXh0LWFuY2hvciIsMj09PXQ/InN0YXJ0Ijo0PT09dD8iZW5kIjoibWlkZGxlIiksQy5lYWNoKChmdW5jdGlvbigpe3RoaXMuX19heGlzPV99KSl9cmV0dXJuIGQuc2NhbGU9ZnVuY3Rpb24odCl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KG49dCxkKTpufSxkLnRpY2tzPWZ1bmN0aW9uKCl7cmV0dXJuIGU9XzAuY2FsbChhcmd1bWVudHMpLGR9LGQudGlja0FyZ3VtZW50cz1mdW5jdGlvbih0KXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8oZT1udWxsPT10P1tdOl8wLmNhbGwodCksZCk6ZS5zbGljZSgpfSxkLnRpY2tWYWx1ZXM9ZnVuY3Rpb24odCl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KGE9bnVsbD09dD9udWxsOl8wLmNhbGwodCksZCk6YSYmYS5zbGljZSgpfSxkLnRpY2tGb3JtYXQ9ZnVuY3Rpb24odCl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KG89dCxkKTpvfSxkLnRpY2tTaXplPWZ1bmN0aW9uKHQpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyhyPWk9K3QsZCk6cn0sZC50aWNrU2l6ZUlubmVyPWZ1bmN0aW9uKHQpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyhyPSt0LGQpOnJ9LGQudGlja1NpemVPdXRlcj1mdW5jdGlvbih0KXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8oaT0rdCxkKTppfSxkLnRpY2tQYWRkaW5nPWZ1bmN0aW9uKHQpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyhjPSt0LGQpOmN9LGR9dmFyIHcwPXt2YWx1ZTpmdW5jdGlvbigpe319O2Z1bmN0aW9uIFMwKCl7Zm9yKHZhciB0LG49MCxlPWFyZ3VtZW50cy5sZW5ndGgsYT17fTtuPGU7KytuKXtpZighKHQ9YXJndW1lbnRzW25dKyIiKXx8dCBpbiBhfHwvW1xzLl0vLnRlc3QodCkpdGhyb3cgbmV3IEVycm9yKCJpbGxlZ2FsIHR5cGU6ICIrdCk7YVt0XT1bXX1yZXR1cm4gbmV3IEUwKGEpfWZ1bmN0aW9uIEUwKHQpe3RoaXMuXz10fWZ1bmN0aW9uIEEwKHQsbil7cmV0dXJuIHQudHJpbSgpLnNwbGl0KC9efFxzKy8pLm1hcCgoZnVuY3Rpb24odCl7dmFyIGU9IiIsYT10LmluZGV4T2YoIi4iKTtpZihhPj0wJiYoZT10LnNsaWNlKGErMSksdD10LnNsaWNlKDAsYSkpLHQmJiFuLmhhc093blByb3BlcnR5KHQpKXRocm93IG5ldyBFcnJvcigidW5rbm93biB0eXBlOiAiK3QpO3JldHVybnt0eXBlOnQsbmFtZTplfX0pKX1mdW5jdGlvbiB6MCh0LG4pe2Zvcih2YXIgZSxhPTAsbz10Lmxlbmd0aDthPG87KythKWlmKChlPXRbYV0pLm5hbWU9PT1uKXJldHVybiBlLnZhbHVlfWZ1bmN0aW9uIFIwKHQsbixlKXtmb3IodmFyIGE9MCxvPXQubGVuZ3RoO2E8bzsrK2EpaWYodFthXS5uYW1lPT09bil7dFthXT13MCx0PXQuc2xpY2UoMCxhKS5jb25jYXQodC5zbGljZShhKzEpKTticmVha31yZXR1cm4gbnVsbCE9ZSYmdC5wdXNoKHtuYW1lOm4sdmFsdWU6ZX0pLHR9RTAucHJvdG90eXBlPVMwLnByb3RvdHlwZT17Y29uc3RydWN0b3I6RTAsb246ZnVuY3Rpb24odCxuKXt2YXIgZSxhPXRoaXMuXyxvPUEwKHQrIiIsYSkscj0tMSxpPW8ubGVuZ3RoO2lmKCEoYXJndW1lbnRzLmxlbmd0aDwyKSl7aWYobnVsbCE9biYmImZ1bmN0aW9uIiE9dHlwZW9mIG4pdGhyb3cgbmV3IEVycm9yKCJpbnZhbGlkIGNhbGxiYWNrOiAiK24pO2Zvcig7KytyPGk7KWlmKGU9KHQ9b1tyXSkudHlwZSlhW2VdPVIwKGFbZV0sdC5uYW1lLG4pO2Vsc2UgaWYobnVsbD09bilmb3IoZSBpbiBhKWFbZV09UjAoYVtlXSx0Lm5hbWUsbnVsbCk7cmV0dXJuIHRoaXN9Zm9yKDsrK3I8aTspaWYoKGU9KHQ9b1tyXSkudHlwZSkmJihlPXowKGFbZV0sdC5uYW1lKSkpcmV0dXJuIGV9LGNvcHk6ZnVuY3Rpb24oKXt2YXIgdD17fSxuPXRoaXMuXztmb3IodmFyIGUgaW4gbil0W2VdPW5bZV0uc2xpY2UoKTtyZXR1cm4gbmV3IEUwKHQpfSxjYWxsOmZ1bmN0aW9uKHQsbil7aWYoKGU9YXJndW1lbnRzLmxlbmd0aC0yKT4wKWZvcih2YXIgZSxhLG89bmV3IEFycmF5KGUpLHI9MDtyPGU7KytyKW9bcl09YXJndW1lbnRzW3IrMl07aWYoIXRoaXMuXy5oYXNPd25Qcm9wZXJ0eSh0KSl0aHJvdyBuZXcgRXJyb3IoInVua25vd24gdHlwZTogIit0KTtmb3Iocj0wLGU9KGE9dGhpcy5fW3RdKS5sZW5ndGg7cjxlOysrcilhW3JdLnZhbHVlLmFwcGx5KG4sbyl9LGFwcGx5OmZ1bmN0aW9uKHQsbixlKXtpZighdGhpcy5fLmhhc093blByb3BlcnR5KHQpKXRocm93IG5ldyBFcnJvcigidW5rbm93biB0eXBlOiAiK3QpO2Zvcih2YXIgYT10aGlzLl9bdF0sbz0wLHI9YS5sZW5ndGg7bzxyOysrbylhW29dLnZhbHVlLmFwcGx5KG4sZSl9fTt2YXIgVDA9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGh0bWwiLEQwPXtzdmc6Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIix4aHRtbDpUMCx4bGluazoiaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayIseG1sOiJodHRwOi8vd3d3LnczLm9yZy9YTUwvMTk5OC9uYW1lc3BhY2UiLHhtbG5zOiJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3htbG5zLyJ9O2Z1bmN0aW9uIEkwKHQpe3ZhciBuPXQrPSIiLGU9bi5pbmRleE9mKCI6Iik7cmV0dXJuIGU+PTAmJiJ4bWxucyIhPT0obj10LnNsaWNlKDAsZSkpJiYodD10LnNsaWNlKGUrMSkpLEQwLmhhc093blByb3BlcnR5KG4pP3tzcGFjZTpEMFtuXSxsb2NhbDp0fTp0fWZ1bmN0aW9uIE4wKHQpe3JldHVybiBmdW5jdGlvbigpe3ZhciBuPXRoaXMub3duZXJEb2N1bWVudCxlPXRoaXMubmFtZXNwYWNlVVJJO3JldHVybiBlPT09VDAmJm4uZG9jdW1lbnRFbGVtZW50Lm5hbWVzcGFjZVVSST09PVQwP24uY3JlYXRlRWxlbWVudCh0KTpuLmNyZWF0ZUVsZW1lbnROUyhlLHQpfX1mdW5jdGlvbiBGMCh0KXtyZXR1cm4gZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5vd25lckRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUyh0LnNwYWNlLHQubG9jYWwpfX1mdW5jdGlvbiBMMCh0KXt2YXIgbj1JMCh0KTtyZXR1cm4obi5sb2NhbD9GMDpOMCkobil9ZnVuY3Rpb24gSDAoKXt9ZnVuY3Rpb24gQjAodCl7cmV0dXJuIG51bGw9PXQ/SDA6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5xdWVyeVNlbGVjdG9yKHQpfX1mdW5jdGlvbiBWMCgpe3JldHVybltdfWZ1bmN0aW9uIGowKHQpe3JldHVybiBudWxsPT10P1YwOmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMucXVlcnlTZWxlY3RvckFsbCh0KX19ZnVuY3Rpb24gVTAodCl7cmV0dXJuIGZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMubWF0Y2hlcyh0KX19ZnVuY3Rpb24gVzAodCl7cmV0dXJuIG5ldyBBcnJheSh0Lmxlbmd0aCl9ZnVuY3Rpb24gRzAodCxuKXt0aGlzLm93bmVyRG9jdW1lbnQ9dC5vd25lckRvY3VtZW50LHRoaXMubmFtZXNwYWNlVVJJPXQubmFtZXNwYWNlVVJJLHRoaXMuX25leHQ9bnVsbCx0aGlzLl9wYXJlbnQ9dCx0aGlzLl9fZGF0YV9fPW59ZnVuY3Rpb24gWTAodCxuLGUsYSxvLHIpe2Zvcih2YXIgaSxjPTAscz1uLmxlbmd0aCxsPXIubGVuZ3RoO2M8bDsrK2MpKGk9bltjXSk/KGkuX19kYXRhX189cltjXSxhW2NdPWkpOmVbY109bmV3IEcwKHQscltjXSk7Zm9yKDtjPHM7KytjKShpPW5bY10pJiYob1tjXT1pKX1mdW5jdGlvbiBxMCh0LG4sZSxhLG8scixpKXt2YXIgYyxzLGwsbT17fSxkPW4ubGVuZ3RoLGc9ci5sZW5ndGgscD1uZXcgQXJyYXkoZCk7Zm9yKGM9MDtjPGQ7KytjKShzPW5bY10pJiYocFtjXT1sPSIkIitpLmNhbGwocyxzLl9fZGF0YV9fLGMsbiksbCBpbiBtP29bY109czptW2xdPXMpO2ZvcihjPTA7YzxnOysrYykocz1tW2w9IiQiK2kuY2FsbCh0LHJbY10sYyxyKV0pPyhhW2NdPXMscy5fX2RhdGFfXz1yW2NdLG1bbF09bnVsbCk6ZVtjXT1uZXcgRzAodCxyW2NdKTtmb3IoYz0wO2M8ZDsrK2MpKHM9bltjXSkmJm1bcFtjXV09PT1zJiYob1tjXT1zKX1mdW5jdGlvbiBaMCh0LG4pe3JldHVybiB0PG4/LTE6dD5uPzE6dD49bj8wOk5hTn1mdW5jdGlvbiBYMCh0KXtyZXR1cm4gZnVuY3Rpb24oKXt0aGlzLnJlbW92ZUF0dHJpYnV0ZSh0KX19ZnVuY3Rpb24gSjAodCl7cmV0dXJuIGZ1bmN0aW9uKCl7dGhpcy5yZW1vdmVBdHRyaWJ1dGVOUyh0LnNwYWNlLHQubG9jYWwpfX1mdW5jdGlvbiBRMCh0LG4pe3JldHVybiBmdW5jdGlvbigpe3RoaXMuc2V0QXR0cmlidXRlKHQsbil9fWZ1bmN0aW9uIEswKHQsbil7cmV0dXJuIGZ1bmN0aW9uKCl7dGhpcy5zZXRBdHRyaWJ1dGVOUyh0LnNwYWNlLHQubG9jYWwsbil9fWZ1bmN0aW9uICQwKHQsbil7cmV0dXJuIGZ1bmN0aW9uKCl7dmFyIGU9bi5hcHBseSh0aGlzLGFyZ3VtZW50cyk7bnVsbD09ZT90aGlzLnJlbW92ZUF0dHJpYnV0ZSh0KTp0aGlzLnNldEF0dHJpYnV0ZSh0LGUpfX1mdW5jdGlvbiB0MSh0LG4pe3JldHVybiBmdW5jdGlvbigpe3ZhciBlPW4uYXBwbHkodGhpcyxhcmd1bWVudHMpO251bGw9PWU/dGhpcy5yZW1vdmVBdHRyaWJ1dGVOUyh0LnNwYWNlLHQubG9jYWwpOnRoaXMuc2V0QXR0cmlidXRlTlModC5zcGFjZSx0LmxvY2FsLGUpfX1mdW5jdGlvbiBuMSh0KXtyZXR1cm4gdC5vd25lckRvY3VtZW50JiZ0Lm93bmVyRG9jdW1lbnQuZGVmYXVsdFZpZXd8fHQuZG9jdW1lbnQmJnR8fHQuZGVmYXVsdFZpZXd9ZnVuY3Rpb24gZTEodCl7cmV0dXJuIGZ1bmN0aW9uKCl7dGhpcy5zdHlsZS5yZW1vdmVQcm9wZXJ0eSh0KX19ZnVuY3Rpb24gYTEodCxuLGUpe3JldHVybiBmdW5jdGlvbigpe3RoaXMuc3R5bGUuc2V0UHJvcGVydHkodCxuLGUpfX1mdW5jdGlvbiBvMSh0LG4sZSl7cmV0dXJuIGZ1bmN0aW9uKCl7dmFyIGE9bi5hcHBseSh0aGlzLGFyZ3VtZW50cyk7bnVsbD09YT90aGlzLnN0eWxlLnJlbW92ZVByb3BlcnR5KHQpOnRoaXMuc3R5bGUuc2V0UHJvcGVydHkodCxhLGUpfX1mdW5jdGlvbiByMSh0LG4pe3JldHVybiB0LnN0eWxlLmdldFByb3BlcnR5VmFsdWUobil8fG4xKHQpLmdldENvbXB1dGVkU3R5bGUodCxudWxsKS5nZXRQcm9wZXJ0eVZhbHVlKG4pfWZ1bmN0aW9uIGkxKHQpe3JldHVybiBmdW5jdGlvbigpe2RlbGV0ZSB0aGlzW3RdfX1mdW5jdGlvbiBjMSh0LG4pe3JldHVybiBmdW5jdGlvbigpe3RoaXNbdF09bn19ZnVuY3Rpb24gczEodCxuKXtyZXR1cm4gZnVuY3Rpb24oKXt2YXIgZT1uLmFwcGx5KHRoaXMsYXJndW1lbnRzKTtudWxsPT1lP2RlbGV0ZSB0aGlzW3RdOnRoaXNbdF09ZX19ZnVuY3Rpb24gbDEodCl7cmV0dXJuIHQudHJpbSgpLnNwbGl0KC9efFxzKy8pfWZ1bmN0aW9uIG0xKHQpe3JldHVybiB0LmNsYXNzTGlzdHx8bmV3IGQxKHQpfWZ1bmN0aW9uIGQxKHQpe3RoaXMuX25vZGU9dCx0aGlzLl9uYW1lcz1sMSh0LmdldEF0dHJpYnV0ZSgiY2xhc3MiKXx8IiIpfWZ1bmN0aW9uIGcxKHQsbil7Zm9yKHZhciBlPW0xKHQpLGE9LTEsbz1uLmxlbmd0aDsrK2E8bzspZS5hZGQoblthXSl9ZnVuY3Rpb24gcDEodCxuKXtmb3IodmFyIGU9bTEodCksYT0tMSxvPW4ubGVuZ3RoOysrYTxvOyllLnJlbW92ZShuW2FdKX1mdW5jdGlvbiBiMSh0KXtyZXR1cm4gZnVuY3Rpb24oKXtnMSh0aGlzLHQpfX1mdW5jdGlvbiB1MSh0KXtyZXR1cm4gZnVuY3Rpb24oKXtwMSh0aGlzLHQpfX1mdW5jdGlvbiBmMSh0LG4pe3JldHVybiBmdW5jdGlvbigpeyhuLmFwcGx5KHRoaXMsYXJndW1lbnRzKT9nMTpwMSkodGhpcyx0KX19ZnVuY3Rpb24gaDEoKXt0aGlzLnRleHRDb250ZW50PSIifWZ1bmN0aW9uIF8xKHQpe3JldHVybiBmdW5jdGlvbigpe3RoaXMudGV4dENvbnRlbnQ9dH19ZnVuY3Rpb24gQzEodCl7cmV0dXJuIGZ1bmN0aW9uKCl7dmFyIG49dC5hcHBseSh0aGlzLGFyZ3VtZW50cyk7dGhpcy50ZXh0Q29udGVudD1udWxsPT1uPyIiOm59fWZ1bmN0aW9uIE0xKCl7dGhpcy5pbm5lckhUTUw9IiJ9ZnVuY3Rpb24gTzEodCl7cmV0dXJuIGZ1bmN0aW9uKCl7dGhpcy5pbm5lckhUTUw9dH19ZnVuY3Rpb24gUDEodCl7cmV0dXJuIGZ1bmN0aW9uKCl7dmFyIG49dC5hcHBseSh0aGlzLGFyZ3VtZW50cyk7dGhpcy5pbm5lckhUTUw9bnVsbD09bj8iIjpufX1mdW5jdGlvbiB4MSgpe3RoaXMubmV4dFNpYmxpbmcmJnRoaXMucGFyZW50Tm9kZS5hcHBlbmRDaGlsZCh0aGlzKX1mdW5jdGlvbiB5MSgpe3RoaXMucHJldmlvdXNTaWJsaW5nJiZ0aGlzLnBhcmVudE5vZGUuaW5zZXJ0QmVmb3JlKHRoaXMsdGhpcy5wYXJlbnROb2RlLmZpcnN0Q2hpbGQpfWZ1bmN0aW9uIGsxKCl7cmV0dXJuIG51bGx9ZnVuY3Rpb24gdjEoKXt2YXIgdD10aGlzLnBhcmVudE5vZGU7dCYmdC5yZW1vdmVDaGlsZCh0aGlzKX1mdW5jdGlvbiB3MSgpe3ZhciB0PXRoaXMuY2xvbmVOb2RlKCExKSxuPXRoaXMucGFyZW50Tm9kZTtyZXR1cm4gbj9uLmluc2VydEJlZm9yZSh0LHRoaXMubmV4dFNpYmxpbmcpOnR9ZnVuY3Rpb24gUzEoKXt2YXIgdD10aGlzLmNsb25lTm9kZSghMCksbj10aGlzLnBhcmVudE5vZGU7cmV0dXJuIG4/bi5pbnNlcnRCZWZvcmUodCx0aGlzLm5leHRTaWJsaW5nKTp0fUcwLnByb3RvdHlwZT17Y29uc3RydWN0b3I6RzAsYXBwZW5kQ2hpbGQ6ZnVuY3Rpb24odCl7cmV0dXJuIHRoaXMuX3BhcmVudC5pbnNlcnRCZWZvcmUodCx0aGlzLl9uZXh0KX0saW5zZXJ0QmVmb3JlOmZ1bmN0aW9uKHQsbil7cmV0dXJuIHRoaXMuX3BhcmVudC5pbnNlcnRCZWZvcmUodCxuKX0scXVlcnlTZWxlY3RvcjpmdW5jdGlvbih0KXtyZXR1cm4gdGhpcy5fcGFyZW50LnF1ZXJ5U2VsZWN0b3IodCl9LHF1ZXJ5U2VsZWN0b3JBbGw6ZnVuY3Rpb24odCl7cmV0dXJuIHRoaXMuX3BhcmVudC5xdWVyeVNlbGVjdG9yQWxsKHQpfX0sZDEucHJvdG90eXBlPXthZGQ6ZnVuY3Rpb24odCl7dGhpcy5fbmFtZXMuaW5kZXhPZih0KTwwJiYodGhpcy5fbmFtZXMucHVzaCh0KSx0aGlzLl9ub2RlLnNldEF0dHJpYnV0ZSgiY2xhc3MiLHRoaXMuX25hbWVzLmpvaW4oIiAiKSkpfSxyZW1vdmU6ZnVuY3Rpb24odCl7dmFyIG49dGhpcy5fbmFtZXMuaW5kZXhPZih0KTtuPj0wJiYodGhpcy5fbmFtZXMuc3BsaWNlKG4sMSksdGhpcy5fbm9kZS5zZXRBdHRyaWJ1dGUoImNsYXNzIix0aGlzLl9uYW1lcy5qb2luKCIgIikpKX0sY29udGFpbnM6ZnVuY3Rpb24odCl7cmV0dXJuIHRoaXMuX25hbWVzLmluZGV4T2YodCk+PTB9fTt2YXIgRTE9e30sQTE9bnVsbDtmdW5jdGlvbiB6MSh0LG4sZSl7cmV0dXJuIHQ9UjEodCxuLGUpLGZ1bmN0aW9uKG4pe3ZhciBlPW4ucmVsYXRlZFRhcmdldDtlJiYoZT09PXRoaXN8fDgmZS5jb21wYXJlRG9jdW1lbnRQb3NpdGlvbih0aGlzKSl8fHQuY2FsbCh0aGlzLG4pfX1mdW5jdGlvbiBSMSh0LG4sZSl7cmV0dXJuIGZ1bmN0aW9uKGEpe3ZhciBvPUExO0ExPWE7dHJ5e3QuY2FsbCh0aGlzLHRoaXMuX19kYXRhX18sbixlKX1maW5hbGx5e0ExPW99fX1mdW5jdGlvbiBUMSh0KXtyZXR1cm4gdC50cmltKCkuc3BsaXQoL158XHMrLykubWFwKChmdW5jdGlvbih0KXt2YXIgbj0iIixlPXQuaW5kZXhPZigiLiIpO3JldHVybiBlPj0wJiYobj10LnNsaWNlKGUrMSksdD10LnNsaWNlKDAsZSkpLHt0eXBlOnQsbmFtZTpufX0pKX1mdW5jdGlvbiBEMSh0KXtyZXR1cm4gZnVuY3Rpb24oKXt2YXIgbj10aGlzLl9fb247aWYobil7Zm9yKHZhciBlLGE9MCxvPS0xLHI9bi5sZW5ndGg7YTxyOysrYSllPW5bYV0sdC50eXBlJiZlLnR5cGUhPT10LnR5cGV8fGUubmFtZSE9PXQubmFtZT9uWysrb109ZTp0aGlzLnJlbW92ZUV2ZW50TGlzdGVuZXIoZS50eXBlLGUubGlzdGVuZXIsZS5jYXB0dXJlKTsrK28/bi5sZW5ndGg9bzpkZWxldGUgdGhpcy5fX29ufX19ZnVuY3Rpb24gSTEodCxuLGUpe3ZhciBhPUUxLmhhc093blByb3BlcnR5KHQudHlwZSk/ejE6UjE7cmV0dXJuIGZ1bmN0aW9uKG8scixpKXt2YXIgYyxzPXRoaXMuX19vbixsPWEobixyLGkpO2lmKHMpZm9yKHZhciBtPTAsZD1zLmxlbmd0aDttPGQ7KyttKWlmKChjPXNbbV0pLnR5cGU9PT10LnR5cGUmJmMubmFtZT09PXQubmFtZSlyZXR1cm4gdGhpcy5yZW1vdmVFdmVudExpc3RlbmVyKGMudHlwZSxjLmxpc3RlbmVyLGMuY2FwdHVyZSksdGhpcy5hZGRFdmVudExpc3RlbmVyKGMudHlwZSxjLmxpc3RlbmVyPWwsYy5jYXB0dXJlPWUpLHZvaWQoYy52YWx1ZT1uKTt0aGlzLmFkZEV2ZW50TGlzdGVuZXIodC50eXBlLGwsZSksYz17dHlwZTp0LnR5cGUsbmFtZTp0Lm5hbWUsdmFsdWU6bixsaXN0ZW5lcjpsLGNhcHR1cmU6ZX0scz9zLnB1c2goYyk6dGhpcy5fX29uPVtjXX19ZnVuY3Rpb24gTjEodCxuLGUpe3ZhciBhPW4xKHQpLG89YS5DdXN0b21FdmVudDsiZnVuY3Rpb24iPT10eXBlb2Ygbz9vPW5ldyBvKG4sZSk6KG89YS5kb2N1bWVudC5jcmVhdGVFdmVudCgiRXZlbnQiKSxlPyhvLmluaXRFdmVudChuLGUuYnViYmxlcyxlLmNhbmNlbGFibGUpLG8uZGV0YWlsPWUuZGV0YWlsKTpvLmluaXRFdmVudChuLCExLCExKSksdC5kaXNwYXRjaEV2ZW50KG8pfWZ1bmN0aW9uIEYxKHQsbil7cmV0dXJuIGZ1bmN0aW9uKCl7cmV0dXJuIE4xKHRoaXMsdCxuKX19ZnVuY3Rpb24gTDEodCxuKXtyZXR1cm4gZnVuY3Rpb24oKXtyZXR1cm4gTjEodGhpcyx0LG4uYXBwbHkodGhpcyxhcmd1bWVudHMpKX19InVuZGVmaW5lZCIhPXR5cGVvZiBkb2N1bWVudCYmKCJvbm1vdXNlZW50ZXIiaW4gZG9jdW1lbnQuZG9jdW1lbnRFbGVtZW50fHwoRTE9e21vdXNlZW50ZXI6Im1vdXNlb3ZlciIsbW91c2VsZWF2ZToibW91c2VvdXQifSkpO3ZhciBIMT1bbnVsbF07ZnVuY3Rpb24gQjEodCxuKXt0aGlzLl9ncm91cHM9dCx0aGlzLl9wYXJlbnRzPW59ZnVuY3Rpb24gVjEoKXtyZXR1cm4gbmV3IEIxKFtbZG9jdW1lbnQuZG9jdW1lbnRFbGVtZW50XV0sSDEpfWZ1bmN0aW9uIGoxKHQpe3JldHVybiJzdHJpbmciPT10eXBlb2YgdD9uZXcgQjEoW1tkb2N1bWVudC5xdWVyeVNlbGVjdG9yKHQpXV0sW2RvY3VtZW50LmRvY3VtZW50RWxlbWVudF0pOm5ldyBCMShbW3RdXSxIMSl9ZnVuY3Rpb24gVTEoKXtmb3IodmFyIHQsbj1BMTt0PW4uc291cmNlRXZlbnQ7KW49dDtyZXR1cm4gbn1mdW5jdGlvbiBXMSh0LG4pe3ZhciBlPXQub3duZXJTVkdFbGVtZW50fHx0O2lmKGUuY3JlYXRlU1ZHUG9pbnQpe3ZhciBhPWUuY3JlYXRlU1ZHUG9pbnQoKTtyZXR1cm4gYS54PW4uY2xpZW50WCxhLnk9bi5jbGllbnRZLFsoYT1hLm1hdHJpeFRyYW5zZm9ybSh0LmdldFNjcmVlbkNUTSgpLmludmVyc2UoKSkpLngsYS55XX12YXIgbz10LmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpO3JldHVybltuLmNsaWVudFgtby5sZWZ0LXQuY2xpZW50TGVmdCxuLmNsaWVudFktby50b3AtdC5jbGllbnRUb3BdfWZ1bmN0aW9uIEcxKHQpe3ZhciBuPVUxKCk7cmV0dXJuIG4uY2hhbmdlZFRvdWNoZXMmJihuPW4uY2hhbmdlZFRvdWNoZXNbMF0pLFcxKHQsbil9ZnVuY3Rpb24gWTEoKXtBMS5wcmV2ZW50RGVmYXVsdCgpLEExLnN0b3BJbW1lZGlhdGVQcm9wYWdhdGlvbigpfWZ1bmN0aW9uIHExKHQpe3ZhciBuPXQuZG9jdW1lbnQuZG9jdW1lbnRFbGVtZW50LGU9ajEodCkub24oImRyYWdzdGFydC5kcmFnIixZMSwhMCk7Im9uc2VsZWN0c3RhcnQiaW4gbj9lLm9uKCJzZWxlY3RzdGFydC5kcmFnIixZMSwhMCk6KG4uX19ub3NlbGVjdD1uLnN0eWxlLk1velVzZXJTZWxlY3Qsbi5zdHlsZS5Nb3pVc2VyU2VsZWN0PSJub25lIil9ZnVuY3Rpb24gWjEodCxuKXt2YXIgZT10LmRvY3VtZW50LmRvY3VtZW50RWxlbWVudCxhPWoxKHQpLm9uKCJkcmFnc3RhcnQuZHJhZyIsbnVsbCk7biYmKGEub24oImNsaWNrLmRyYWciLFkxLCEwKSxzZXRUaW1lb3V0KChmdW5jdGlvbigpe2Eub24oImNsaWNrLmRyYWciLG51bGwpfSksMCkpLCJvbnNlbGVjdHN0YXJ0ImluIGU/YS5vbigic2VsZWN0c3RhcnQuZHJhZyIsbnVsbCk6KGUuc3R5bGUuTW96VXNlclNlbGVjdD1lLl9fbm9zZWxlY3QsZGVsZXRlIGUuX19ub3NlbGVjdCl9ZnVuY3Rpb24gWDEodCxuLGUpe3QucHJvdG90eXBlPW4ucHJvdG90eXBlPWUsZS5jb25zdHJ1Y3Rvcj10fWZ1bmN0aW9uIEoxKHQsbil7dmFyIGU9T2JqZWN0LmNyZWF0ZSh0LnByb3RvdHlwZSk7Zm9yKHZhciBhIGluIG4pZVthXT1uW2FdO3JldHVybiBlfWZ1bmN0aW9uIFExKCl7fUIxLnByb3RvdHlwZT1WMS5wcm90b3R5cGU9e2NvbnN0cnVjdG9yOkIxLHNlbGVjdDpmdW5jdGlvbiBLMSh0KXsiZnVuY3Rpb24iIT10eXBlb2YgdCYmKHQ9QjAodCkpO2Zvcih2YXIgbj10aGlzLl9ncm91cHMsZT1uLmxlbmd0aCxhPW5ldyBBcnJheShlKSxvPTA7bzxlOysrbylmb3IodmFyIHIsaSxjPW5bb10scz1jLmxlbmd0aCxsPWFbb109bmV3IEFycmF5KHMpLG09MDttPHM7KyttKShyPWNbbV0pJiYoaT10LmNhbGwocixyLl9fZGF0YV9fLG0sYykpJiYoIl9fZGF0YV9fImluIHImJihpLl9fZGF0YV9fPXIuX19kYXRhX18pLGxbbV09aSk7cmV0dXJuIG5ldyBCMShhLHRoaXMuX3BhcmVudHMpfSxzZWxlY3RBbGw6ZnVuY3Rpb24gJDEodCl7ImZ1bmN0aW9uIiE9dHlwZW9mIHQmJih0PWowKHQpKTtmb3IodmFyIG49dGhpcy5fZ3JvdXBzLGU9bi5sZW5ndGgsYT1bXSxvPVtdLHI9MDtyPGU7KytyKWZvcih2YXIgaSxjPW5bcl0scz1jLmxlbmd0aCxsPTA7bDxzOysrbCkoaT1jW2xdKSYmKGEucHVzaCh0LmNhbGwoaSxpLl9fZGF0YV9fLGwsYykpLG8ucHVzaChpKSk7cmV0dXJuIG5ldyBCMShhLG8pfSxmaWx0ZXI6ZnVuY3Rpb24gdDIodCl7ImZ1bmN0aW9uIiE9dHlwZW9mIHQmJih0PVUwKHQpKTtmb3IodmFyIG49dGhpcy5fZ3JvdXBzLGU9bi5sZW5ndGgsYT1uZXcgQXJyYXkoZSksbz0wO288ZTsrK28pZm9yKHZhciByLGk9bltvXSxjPWkubGVuZ3RoLHM9YVtvXT1bXSxsPTA7bDxjOysrbCkocj1pW2xdKSYmdC5jYWxsKHIsci5fX2RhdGFfXyxsLGkpJiZzLnB1c2gocik7cmV0dXJuIG5ldyBCMShhLHRoaXMuX3BhcmVudHMpfSxkYXRhOmZ1bmN0aW9uIG4yKHQsbil7aWYoIXQpcmV0dXJuIGI9bmV3IEFycmF5KHRoaXMuc2l6ZSgpKSxtPS0xLHRoaXMuZWFjaCgoZnVuY3Rpb24odCl7YlsrK21dPXR9KSksYjt2YXIgZT1uP3EwOlkwLGE9dGhpcy5fcGFyZW50cyxvPXRoaXMuX2dyb3VwczsiZnVuY3Rpb24iIT10eXBlb2YgdCYmKHQ9KGZ1bmN0aW9uIHIodCl7cmV0dXJuIGZ1bmN0aW9uKCl7cmV0dXJuIHR9fSkodCkpO2Zvcih2YXIgaT1vLmxlbmd0aCxjPW5ldyBBcnJheShpKSxzPW5ldyBBcnJheShpKSxsPW5ldyBBcnJheShpKSxtPTA7bTxpOysrbSl7dmFyIGQ9YVttXSxnPW9bbV0scD1nLmxlbmd0aCxiPXQuY2FsbChkLGQmJmQuX19kYXRhX18sbSxhKSx1PWIubGVuZ3RoLGY9c1ttXT1uZXcgQXJyYXkodSksaD1jW21dPW5ldyBBcnJheSh1KTtlKGQsZyxmLGgsbFttXT1uZXcgQXJyYXkocCksYixuKTtmb3IodmFyIF8sQyxNPTAsTz0wO008dTsrK00paWYoXz1mW01dKXtmb3IoTT49TyYmKE89TSsxKTshKEM9aFtPXSkmJisrTzx1Oyk7Xy5fbmV4dD1DfHxudWxsfX1yZXR1cm4oYz1uZXcgQjEoYyxhKSkuX2VudGVyPXMsYy5fZXhpdD1sLGN9LGVudGVyOmZ1bmN0aW9uIGUyKCl7cmV0dXJuIG5ldyBCMSh0aGlzLl9lbnRlcnx8dGhpcy5fZ3JvdXBzLm1hcChXMCksdGhpcy5fcGFyZW50cyl9LGV4aXQ6ZnVuY3Rpb24gYTIoKXtyZXR1cm4gbmV3IEIxKHRoaXMuX2V4aXR8fHRoaXMuX2dyb3Vwcy5tYXAoVzApLHRoaXMuX3BhcmVudHMpfSxqb2luOmZ1bmN0aW9uIG8yKHQsbixlKXt2YXIgYT10aGlzLmVudGVyKCksbz10aGlzLHI9dGhpcy5leGl0KCk7cmV0dXJuIGE9ImZ1bmN0aW9uIj09dHlwZW9mIHQ/dChhKTphLmFwcGVuZCh0KyIiKSxudWxsIT1uJiYobz1uKG8pKSxudWxsPT1lP3IucmVtb3ZlKCk6ZShyKSxhJiZvP2EubWVyZ2Uobykub3JkZXIoKTpvfSxtZXJnZTpmdW5jdGlvbiByMih0KXtmb3IodmFyIG49dGhpcy5fZ3JvdXBzLGU9dC5fZ3JvdXBzLGE9bi5sZW5ndGgsbz1NYXRoLm1pbihhLGUubGVuZ3RoKSxyPW5ldyBBcnJheShhKSxpPTA7aTxvOysraSlmb3IodmFyIGMscz1uW2ldLGw9ZVtpXSxtPXMubGVuZ3RoLGQ9cltpXT1uZXcgQXJyYXkobSksZz0wO2c8bTsrK2cpKGM9c1tnXXx8bFtnXSkmJihkW2ddPWMpO2Zvcig7aTxhOysraSlyW2ldPW5baV07cmV0dXJuIG5ldyBCMShyLHRoaXMuX3BhcmVudHMpfSxvcmRlcjpmdW5jdGlvbiBpMigpe2Zvcih2YXIgdD10aGlzLl9ncm91cHMsbj0tMSxlPXQubGVuZ3RoOysrbjxlOylmb3IodmFyIGEsbz10W25dLHI9by5sZW5ndGgtMSxpPW9bcl07LS1yPj0wOykoYT1vW3JdKSYmKGkmJjReYS5jb21wYXJlRG9jdW1lbnRQb3NpdGlvbihpKSYmaS5wYXJlbnROb2RlLmluc2VydEJlZm9yZShhLGkpLGk9YSk7cmV0dXJuIHRoaXN9LHNvcnQ6ZnVuY3Rpb24gYzIodCl7ZnVuY3Rpb24gbihuLGUpe3JldHVybiBuJiZlP3Qobi5fX2RhdGFfXyxlLl9fZGF0YV9fKTohbi0hZX10fHwodD1aMCk7Zm9yKHZhciBlPXRoaXMuX2dyb3VwcyxhPWUubGVuZ3RoLG89bmV3IEFycmF5KGEpLHI9MDtyPGE7KytyKXtmb3IodmFyIGksYz1lW3JdLHM9Yy5sZW5ndGgsbD1vW3JdPW5ldyBBcnJheShzKSxtPTA7bTxzOysrbSkoaT1jW21dKSYmKGxbbV09aSk7bC5zb3J0KG4pfXJldHVybiBuZXcgQjEobyx0aGlzLl9wYXJlbnRzKS5vcmRlcigpfSxjYWxsOmZ1bmN0aW9uIHMyKCl7dmFyIHQ9YXJndW1lbnRzWzBdO3JldHVybiBhcmd1bWVudHNbMF09dGhpcyx0LmFwcGx5KG51bGwsYXJndW1lbnRzKSx0aGlzfSxub2RlczpmdW5jdGlvbiBsMigpe3ZhciB0PW5ldyBBcnJheSh0aGlzLnNpemUoKSksbj0tMTtyZXR1cm4gdGhpcy5lYWNoKChmdW5jdGlvbigpe3RbKytuXT10aGlzfSkpLHR9LG5vZGU6ZnVuY3Rpb24gbTIoKXtmb3IodmFyIHQ9dGhpcy5fZ3JvdXBzLG49MCxlPXQubGVuZ3RoO248ZTsrK24pZm9yKHZhciBhPXRbbl0sbz0wLHI9YS5sZW5ndGg7bzxyOysrbyl7dmFyIGk9YVtvXTtpZihpKXJldHVybiBpfXJldHVybiBudWxsfSxzaXplOmZ1bmN0aW9uIGQyKCl7dmFyIHQ9MDtyZXR1cm4gdGhpcy5lYWNoKChmdW5jdGlvbigpeysrdH0pKSx0fSxlbXB0eTpmdW5jdGlvbiBnMigpe3JldHVybiF0aGlzLm5vZGUoKX0sZWFjaDpmdW5jdGlvbiBwMih0KXtmb3IodmFyIG49dGhpcy5fZ3JvdXBzLGU9MCxhPW4ubGVuZ3RoO2U8YTsrK2UpZm9yKHZhciBvLHI9bltlXSxpPTAsYz1yLmxlbmd0aDtpPGM7KytpKShvPXJbaV0pJiZ0LmNhbGwobyxvLl9fZGF0YV9fLGkscik7cmV0dXJuIHRoaXN9LGF0dHI6ZnVuY3Rpb24gYjIodCxuKXt2YXIgZT1JMCh0KTtpZihhcmd1bWVudHMubGVuZ3RoPDIpe3ZhciBhPXRoaXMubm9kZSgpO3JldHVybiBlLmxvY2FsP2EuZ2V0QXR0cmlidXRlTlMoZS5zcGFjZSxlLmxvY2FsKTphLmdldEF0dHJpYnV0ZShlKX1yZXR1cm4gdGhpcy5lYWNoKChudWxsPT1uP2UubG9jYWw/SjA6WDA6ImZ1bmN0aW9uIj09dHlwZW9mIG4/ZS5sb2NhbD90MTokMDplLmxvY2FsP0swOlEwKShlLG4pKX0sc3R5bGU6ZnVuY3Rpb24gdTIodCxuLGUpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPjE/dGhpcy5lYWNoKChudWxsPT1uP2UxOiJmdW5jdGlvbiI9PXR5cGVvZiBuP28xOmExKSh0LG4sbnVsbD09ZT8iIjplKSk6cjEodGhpcy5ub2RlKCksdCl9LHByb3BlcnR5OmZ1bmN0aW9uIGYyKHQsbil7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg+MT90aGlzLmVhY2goKG51bGw9PW4/aTE6ImZ1bmN0aW9uIj09dHlwZW9mIG4/czE6YzEpKHQsbikpOnRoaXMubm9kZSgpW3RdfSxjbGFzc2VkOmZ1bmN0aW9uIGgyKHQsbil7dmFyIGU9bDEodCsiIik7aWYoYXJndW1lbnRzLmxlbmd0aDwyKXtmb3IodmFyIGE9bTEodGhpcy5ub2RlKCkpLG89LTEscj1lLmxlbmd0aDsrK288cjspaWYoIWEuY29udGFpbnMoZVtvXSkpcmV0dXJuITE7cmV0dXJuITB9cmV0dXJuIHRoaXMuZWFjaCgoImZ1bmN0aW9uIj09dHlwZW9mIG4/ZjE6bj9iMTp1MSkoZSxuKSl9LHRleHQ6ZnVuY3Rpb24gXzIodCl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/dGhpcy5lYWNoKG51bGw9PXQ/aDE6KCJmdW5jdGlvbiI9PXR5cGVvZiB0P0MxOl8xKSh0KSk6dGhpcy5ub2RlKCkudGV4dENvbnRlbnR9LGh0bWw6ZnVuY3Rpb24gQzIodCl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/dGhpcy5lYWNoKG51bGw9PXQ/TTE6KCJmdW5jdGlvbiI9PXR5cGVvZiB0P1AxOk8xKSh0KSk6dGhpcy5ub2RlKCkuaW5uZXJIVE1MfSxyYWlzZTpmdW5jdGlvbiBNMigpe3JldHVybiB0aGlzLmVhY2goeDEpfSxsb3dlcjpmdW5jdGlvbiBPMigpe3JldHVybiB0aGlzLmVhY2goeTEpfSxhcHBlbmQ6ZnVuY3Rpb24gUDIodCl7dmFyIG49ImZ1bmN0aW9uIj09dHlwZW9mIHQ/dDpMMCh0KTtyZXR1cm4gdGhpcy5zZWxlY3QoKGZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuYXBwZW5kQ2hpbGQobi5hcHBseSh0aGlzLGFyZ3VtZW50cykpfSkpfSxpbnNlcnQ6ZnVuY3Rpb24geDIodCxuKXt2YXIgZT0iZnVuY3Rpb24iPT10eXBlb2YgdD90OkwwKHQpLGE9bnVsbD09bj9rMToiZnVuY3Rpb24iPT10eXBlb2Ygbj9uOkIwKG4pO3JldHVybiB0aGlzLnNlbGVjdCgoZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5pbnNlcnRCZWZvcmUoZS5hcHBseSh0aGlzLGFyZ3VtZW50cyksYS5hcHBseSh0aGlzLGFyZ3VtZW50cyl8fG51bGwpfSkpfSxyZW1vdmU6ZnVuY3Rpb24geTIoKXtyZXR1cm4gdGhpcy5lYWNoKHYxKX0sY2xvbmU6ZnVuY3Rpb24gazIodCl7cmV0dXJuIHRoaXMuc2VsZWN0KHQ/UzE6dzEpfSxkYXR1bTpmdW5jdGlvbiB2Mih0KXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD90aGlzLnByb3BlcnR5KCJfX2RhdGFfXyIsdCk6dGhpcy5ub2RlKCkuX19kYXRhX199LG9uOmZ1bmN0aW9uIHcyKHQsbixlKXt2YXIgYSxvLHI9VDEodCsiIiksaT1yLmxlbmd0aDtpZighKGFyZ3VtZW50cy5sZW5ndGg8Mikpe2ZvcihjPW4/STE6RDEsbnVsbD09ZSYmKGU9ITEpLGE9MDthPGk7KythKXRoaXMuZWFjaChjKHJbYV0sbixlKSk7cmV0dXJuIHRoaXN9dmFyIGM9dGhpcy5ub2RlKCkuX19vbjtpZihjKWZvcih2YXIgcyxsPTAsbT1jLmxlbmd0aDtsPG07KytsKWZvcihhPTAscz1jW2xdO2E8aTsrK2EpaWYoKG89clthXSkudHlwZT09PXMudHlwZSYmby5uYW1lPT09cy5uYW1lKXJldHVybiBzLnZhbHVlfSxkaXNwYXRjaDpmdW5jdGlvbiBTMih0LG4pe3JldHVybiB0aGlzLmVhY2goKCJmdW5jdGlvbiI9PXR5cGVvZiBuP0wxOkYxKSh0LG4pKX19O3ZhciBFMj0uNyxBMj0xL0UyLHoyPSJcXHMqKFsrLV0/XFxkKylcXHMqIixSMj0iXFxzKihbKy1dP1xcZCpcXC4/XFxkKyg/OltlRV1bKy1dP1xcZCspPylcXHMqIixUMj0iXFxzKihbKy1dP1xcZCpcXC4/XFxkKyg/OltlRV1bKy1dP1xcZCspPyklXFxzKiIsRDI9L14jKFswLTlhLWZdezMsOH0pJC8sSTI9bmV3IFJlZ0V4cCgiXnJnYlxcKCIrW3oyLHoyLHoyXSsiXFwpJCIpLE4yPW5ldyBSZWdFeHAoIl5yZ2JcXCgiK1tUMixUMixUMl0rIlxcKSQiKSxGMj1uZXcgUmVnRXhwKCJecmdiYVxcKCIrW3oyLHoyLHoyLFIyXSsiXFwpJCIpLEwyPW5ldyBSZWdFeHAoIl5yZ2JhXFwoIitbVDIsVDIsVDIsUjJdKyJcXCkkIiksSDI9bmV3IFJlZ0V4cCgiXmhzbFxcKCIrW1IyLFQyLFQyXSsiXFwpJCIpLEIyPW5ldyBSZWdFeHAoIl5oc2xhXFwoIitbUjIsVDIsVDIsUjJdKyJcXCkkIiksVjI9e2FsaWNlYmx1ZToxNTc5MjM4MyxhbnRpcXVld2hpdGU6MTY0NDQzNzUsYXF1YTo2NTUzNSxhcXVhbWFyaW5lOjgzODg1NjQsYXp1cmU6MTU3OTQxNzUsYmVpZ2U6MTYxMTkyNjAsYmlzcXVlOjE2NzcwMjQ0LGJsYWNrOjAsYmxhbmNoZWRhbG1vbmQ6MTY3NzIwNDUsYmx1ZToyNTUsYmx1ZXZpb2xldDo5MDU1MjAyLGJyb3duOjEwODI0MjM0LGJ1cmx5d29vZDoxNDU5NjIzMSxjYWRldGJsdWU6NjI2NjUyOCxjaGFydHJldXNlOjgzODgzNTIsY2hvY29sYXRlOjEzNzg5NDcwLGNvcmFsOjE2NzQ0MjcyLGNvcm5mbG93ZXJibHVlOjY1OTE5ODEsY29ybnNpbGs6MTY3NzUzODgsY3JpbXNvbjoxNDQyMzEwMCxjeWFuOjY1NTM1LGRhcmtibHVlOjEzOSxkYXJrY3lhbjozNTcyMyxkYXJrZ29sZGVucm9kOjEyMDkyOTM5LGRhcmtncmF5OjExMTE5MDE3LGRhcmtncmVlbjoyNTYwMCxkYXJrZ3JleToxMTExOTAxNyxkYXJra2hha2k6MTI0MzMyNTksZGFya21hZ2VudGE6OTEwOTY0MyxkYXJrb2xpdmVncmVlbjo1NTk3OTk5LGRhcmtvcmFuZ2U6MTY3NDc1MjAsZGFya29yY2hpZDoxMDA0MDAxMixkYXJrcmVkOjkxMDk1MDQsZGFya3NhbG1vbjoxNTMwODQxMCxkYXJrc2VhZ3JlZW46OTQxOTkxOSxkYXJrc2xhdGVibHVlOjQ3MzQzNDcsZGFya3NsYXRlZ3JheTozMTAwNDk1LGRhcmtzbGF0ZWdyZXk6MzEwMDQ5NSxkYXJrdHVycXVvaXNlOjUyOTQ1LGRhcmt2aW9sZXQ6OTY5OTUzOSxkZWVwcGluazoxNjcxNjk0NyxkZWVwc2t5Ymx1ZTo0OTE1MSxkaW1ncmF5OjY5MDgyNjUsZGltZ3JleTo2OTA4MjY1LGRvZGdlcmJsdWU6MjAwMzE5OSxmaXJlYnJpY2s6MTE2NzQxNDYsZmxvcmFsd2hpdGU6MTY3NzU5MjAsZm9yZXN0Z3JlZW46MjI2Mzg0MixmdWNoc2lhOjE2NzExOTM1LGdhaW5zYm9ybzoxNDQ3NDQ2MCxnaG9zdHdoaXRlOjE2MzE2NjcxLGdvbGQ6MTY3NjY3MjAsZ29sZGVucm9kOjE0MzI5MTIwLGdyYXk6ODQyMTUwNCxncmVlbjozMjc2OCxncmVlbnllbGxvdzoxMTQwMzA1NSxncmV5Ojg0MjE1MDQsaG9uZXlkZXc6MTU3OTQxNjAsaG90cGluazoxNjczODc0MCxpbmRpYW5yZWQ6MTM0NTg1MjQsaW5kaWdvOjQ5MTUzMzAsaXZvcnk6MTY3NzcyMDAsa2hha2k6MTU3ODc2NjAsbGF2ZW5kZXI6MTUxMzI0MTAsbGF2ZW5kZXJibHVzaDoxNjc3MzM2NSxsYXduZ3JlZW46ODE5MDk3NixsZW1vbmNoaWZmb246MTY3NzU4ODUsbGlnaHRibHVlOjExMzkzMjU0LGxpZ2h0Y29yYWw6MTU3NjE1MzYsbGlnaHRjeWFuOjE0NzQ1NTk5LGxpZ2h0Z29sZGVucm9keWVsbG93OjE2NDQ4MjEwLGxpZ2h0Z3JheToxMzg4MjMyMyxsaWdodGdyZWVuOjk0OTgyNTYsbGlnaHRncmV5OjEzODgyMzIzLGxpZ2h0cGluazoxNjc1ODQ2NSxsaWdodHNhbG1vbjoxNjc1Mjc2MixsaWdodHNlYWdyZWVuOjIxNDI4OTAsbGlnaHRza3libHVlOjg5MDAzNDYsbGlnaHRzbGF0ZWdyYXk6NzgzMzc1MyxsaWdodHNsYXRlZ3JleTo3ODMzNzUzLGxpZ2h0c3RlZWxibHVlOjExNTg0NzM0LGxpZ2h0eWVsbG93OjE2Nzc3MTg0LGxpbWU6NjUyODAsbGltZWdyZWVuOjMzMjkzMzAsbGluZW46MTY0NDU2NzAsbWFnZW50YToxNjcxMTkzNSxtYXJvb246ODM4ODYwOCxtZWRpdW1hcXVhbWFyaW5lOjY3MzczMjIsbWVkaXVtYmx1ZToyMDUsbWVkaXVtb3JjaGlkOjEyMjExNjY3LG1lZGl1bXB1cnBsZTo5NjYyNjgzLG1lZGl1bXNlYWdyZWVuOjM5NzgwOTcsbWVkaXVtc2xhdGVibHVlOjgwODc3OTAsbWVkaXVtc3ByaW5nZ3JlZW46NjQxNTQsbWVkaXVtdHVycXVvaXNlOjQ3NzIzMDAsbWVkaXVtdmlvbGV0cmVkOjEzMDQ3MTczLG1pZG5pZ2h0Ymx1ZToxNjQ0OTEyLG1pbnRjcmVhbToxNjEyMTg1MCxtaXN0eXJvc2U6MTY3NzAyNzMsbW9jY2FzaW46MTY3NzAyMjksbmF2YWpvd2hpdGU6MTY3Njg2ODUsbmF2eToxMjgsb2xkbGFjZToxNjY0MzU1OCxvbGl2ZTo4NDIxMzc2LG9saXZlZHJhYjo3MDQ4NzM5LG9yYW5nZToxNjc1MzkyMCxvcmFuZ2VyZWQ6MTY3MjkzNDQsb3JjaGlkOjE0MzE1NzM0LHBhbGVnb2xkZW5yb2Q6MTU2NTcxMzAscGFsZWdyZWVuOjEwMDI1ODgwLHBhbGV0dXJxdW9pc2U6MTE1Mjk5NjYscGFsZXZpb2xldHJlZDoxNDM4MTIwMyxwYXBheWF3aGlwOjE2NzczMDc3LHBlYWNocHVmZjoxNjc2NzY3MyxwZXJ1OjEzNDY4OTkxLHBpbms6MTY3NjEwMzUscGx1bToxNDUyNDYzNyxwb3dkZXJibHVlOjExNTkxOTEwLHB1cnBsZTo4Mzg4NzM2LHJlYmVjY2FwdXJwbGU6NjY5Nzg4MSxyZWQ6MTY3MTE2ODAscm9zeWJyb3duOjEyMzU3NTE5LHJveWFsYmx1ZTo0Mjg2OTQ1LHNhZGRsZWJyb3duOjkxMjcxODcsc2FsbW9uOjE2NDE2ODgyLHNhbmR5YnJvd246MTYwMzI4NjQsc2VhZ3JlZW46MzA1MDMyNyxzZWFzaGVsbDoxNjc3NDYzOCxzaWVubmE6MTA1MDY3OTcsc2lsdmVyOjEyNjMyMjU2LHNreWJsdWU6ODkwMDMzMSxzbGF0ZWJsdWU6Njk3MDA2MSxzbGF0ZWdyYXk6NzM3Mjk0NCxzbGF0ZWdyZXk6NzM3Mjk0NCxzbm93OjE2Nzc1OTMwLHNwcmluZ2dyZWVuOjY1NDA3LHN0ZWVsYmx1ZTo0NjIwOTgwLHRhbjoxMzgwODc4MCx0ZWFsOjMyODk2LHRoaXN0bGU6MTQyMDQ4ODgsdG9tYXRvOjE2NzM3MDk1LHR1cnF1b2lzZTo0MjUxODU2LHZpb2xldDoxNTYzMTA4Nix3aGVhdDoxNjExMzMzMSx3aGl0ZToxNjc3NzIxNSx3aGl0ZXNtb2tlOjE2MTE5Mjg1LHllbGxvdzoxNjc3Njk2MCx5ZWxsb3dncmVlbjoxMDE0NTA3NH07ZnVuY3Rpb24gajIoKXtyZXR1cm4gdGhpcy5yZ2IoKS5mb3JtYXRIZXgoKX1mdW5jdGlvbiBVMigpe3JldHVybiB0aGlzLnJnYigpLmZvcm1hdFJnYigpfWZ1bmN0aW9uIFcyKHQpe3ZhciBuLGU7cmV0dXJuIHQ9KHQrIiIpLnRyaW0oKS50b0xvd2VyQ2FzZSgpLChuPUQyLmV4ZWModCkpPyhlPW5bMV0ubGVuZ3RoLG49cGFyc2VJbnQoblsxXSwxNiksNj09PWU/RzIobik6Mz09PWU/bmV3IFgyKG4+PjgmMTV8bj4+NCYyNDAsbj4+NCYxNXwyNDAmbiwoMTUmbik8PDR8MTUmbiwxKTo4PT09ZT9ZMihuPj4yNCYyNTUsbj4+MTYmMjU1LG4+PjgmMjU1LCgyNTUmbikvMjU1KTo0PT09ZT9ZMihuPj4xMiYxNXxuPj44JjI0MCxuPj44JjE1fG4+PjQmMjQwLG4+PjQmMTV8MjQwJm4sKCgxNSZuKTw8NHwxNSZuKS8yNTUpOm51bGwpOihuPUkyLmV4ZWModCkpP25ldyBYMihuWzFdLG5bMl0sblszXSwxKToobj1OMi5leGVjKHQpKT9uZXcgWDIoMjU1Km5bMV0vMTAwLDI1NSpuWzJdLzEwMCwyNTUqblszXS8xMDAsMSk6KG49RjIuZXhlYyh0KSk/WTIoblsxXSxuWzJdLG5bM10sbls0XSk6KG49TDIuZXhlYyh0KSk/WTIoMjU1Km5bMV0vMTAwLDI1NSpuWzJdLzEwMCwyNTUqblszXS8xMDAsbls0XSk6KG49SDIuZXhlYyh0KSk/JDIoblsxXSxuWzJdLzEwMCxuWzNdLzEwMCwxKToobj1CMi5leGVjKHQpKT8kMihuWzFdLG5bMl0vMTAwLG5bM10vMTAwLG5bNF0pOlYyLmhhc093blByb3BlcnR5KHQpP0cyKFYyW3RdKToidHJhbnNwYXJlbnQiPT09dD9uZXcgWDIoTmFOLE5hTixOYU4sMCk6bnVsbH1mdW5jdGlvbiBHMih0KXtyZXR1cm4gbmV3IFgyKHQ+PjE2JjI1NSx0Pj44JjI1NSwyNTUmdCwxKX1mdW5jdGlvbiBZMih0LG4sZSxhKXtyZXR1cm4gYTw9MCYmKHQ9bj1lPU5hTiksbmV3IFgyKHQsbixlLGEpfWZ1bmN0aW9uIHEyKHQpe3JldHVybiB0IGluc3RhbmNlb2YgUTF8fCh0PVcyKHQpKSx0P25ldyBYMigodD10LnJnYigpKS5yLHQuZyx0LmIsdC5vcGFjaXR5KTpuZXcgWDJ9ZnVuY3Rpb24gWjIodCxuLGUsYSl7cmV0dXJuIDE9PT1hcmd1bWVudHMubGVuZ3RoP3EyKHQpOm5ldyBYMih0LG4sZSxudWxsPT1hPzE6YSl9ZnVuY3Rpb24gWDIodCxuLGUsYSl7dGhpcy5yPSt0LHRoaXMuZz0rbix0aGlzLmI9K2UsdGhpcy5vcGFjaXR5PSthfWZ1bmN0aW9uIEoyKCl7cmV0dXJuIiMiK0syKHRoaXMucikrSzIodGhpcy5nKStLMih0aGlzLmIpfWZ1bmN0aW9uIFEyKCl7dmFyIHQ9dGhpcy5vcGFjaXR5O3JldHVybigxPT09KHQ9aXNOYU4odCk/MTpNYXRoLm1heCgwLE1hdGgubWluKDEsdCkpKT8icmdiKCI6InJnYmEoIikrTWF0aC5tYXgoMCxNYXRoLm1pbigyNTUsTWF0aC5yb3VuZCh0aGlzLnIpfHwwKSkrIiwgIitNYXRoLm1heCgwLE1hdGgubWluKDI1NSxNYXRoLnJvdW5kKHRoaXMuZyl8fDApKSsiLCAiK01hdGgubWF4KDAsTWF0aC5taW4oMjU1LE1hdGgucm91bmQodGhpcy5iKXx8MCkpKygxPT09dD8iKSI6IiwgIit0KyIpIil9ZnVuY3Rpb24gSzIodCl7cmV0dXJuKCh0PU1hdGgubWF4KDAsTWF0aC5taW4oMjU1LE1hdGgucm91bmQodCl8fDApKSk8MTY/IjAiOiIiKSt0LnRvU3RyaW5nKDE2KX1mdW5jdGlvbiAkMih0LG4sZSxhKXtyZXR1cm4gYTw9MD90PW49ZT1OYU46ZTw9MHx8ZT49MT90PW49TmFOOm48PTAmJih0PU5hTiksbmV3IGU1KHQsbixlLGEpfWZ1bmN0aW9uIHQ1KHQpe2lmKHQgaW5zdGFuY2VvZiBlNSlyZXR1cm4gbmV3IGU1KHQuaCx0LnMsdC5sLHQub3BhY2l0eSk7aWYodCBpbnN0YW5jZW9mIFExfHwodD1XMih0KSksIXQpcmV0dXJuIG5ldyBlNTtpZih0IGluc3RhbmNlb2YgZTUpcmV0dXJuIHQ7dmFyIG49KHQ9dC5yZ2IoKSkuci8yNTUsZT10LmcvMjU1LGE9dC5iLzI1NSxvPU1hdGgubWluKG4sZSxhKSxyPU1hdGgubWF4KG4sZSxhKSxpPU5hTixjPXItbyxzPShyK28pLzI7cmV0dXJuIGM/KGk9bj09PXI/KGUtYSkvYys2KihlPGEpOmU9PT1yPyhhLW4pL2MrMjoobi1lKS9jKzQsYy89czwuNT9yK286Mi1yLW8saSo9NjApOmM9cz4wJiZzPDE/MDppLG5ldyBlNShpLGMscyx0Lm9wYWNpdHkpfWZ1bmN0aW9uIG41KHQsbixlLGEpe3JldHVybiAxPT09YXJndW1lbnRzLmxlbmd0aD90NSh0KTpuZXcgZTUodCxuLGUsbnVsbD09YT8xOmEpfWZ1bmN0aW9uIGU1KHQsbixlLGEpe3RoaXMuaD0rdCx0aGlzLnM9K24sdGhpcy5sPStlLHRoaXMub3BhY2l0eT0rYX1mdW5jdGlvbiBhNSh0LG4sZSl7cmV0dXJuIDI1NSoodDw2MD9uKyhlLW4pKnQvNjA6dDwxODA/ZTp0PDI0MD9uKyhlLW4pKigyNDAtdCkvNjA6bil9ZnVuY3Rpb24gbzUodCl7cmV0dXJuIGZ1bmN0aW9uKCl7cmV0dXJuIHR9fWZ1bmN0aW9uIHI1KHQsbil7cmV0dXJuIGZ1bmN0aW9uKGUpe3JldHVybiB0K2Uqbn19ZnVuY3Rpb24gaTUodCxuKXt2YXIgZT1uLXQ7cmV0dXJuIGU/cjUodCxlKTpvNShpc05hTih0KT9uOnQpfVgxKFExLFcyLHtjb3B5OmZ1bmN0aW9uKHQpe3JldHVybiBPYmplY3QuYXNzaWduKG5ldyB0aGlzLmNvbnN0cnVjdG9yLHRoaXMsdCl9LGRpc3BsYXlhYmxlOmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMucmdiKCkuZGlzcGxheWFibGUoKX0saGV4OmoyLGZvcm1hdEhleDpqMixmb3JtYXRIc2w6ZnVuY3Rpb24gYzUoKXtyZXR1cm4gdDUodGhpcykuZm9ybWF0SHNsKCl9LGZvcm1hdFJnYjpVMix0b1N0cmluZzpVMn0pLFgxKFgyLFoyLEoxKFExLHticmlnaHRlcjpmdW5jdGlvbih0KXtyZXR1cm4gdD1udWxsPT10P0EyOk1hdGgucG93KEEyLHQpLG5ldyBYMih0aGlzLnIqdCx0aGlzLmcqdCx0aGlzLmIqdCx0aGlzLm9wYWNpdHkpfSxkYXJrZXI6ZnVuY3Rpb24odCl7cmV0dXJuIHQ9bnVsbD09dD9FMjpNYXRoLnBvdyhFMix0KSxuZXcgWDIodGhpcy5yKnQsdGhpcy5nKnQsdGhpcy5iKnQsdGhpcy5vcGFjaXR5KX0scmdiOmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXN9LGRpc3BsYXlhYmxlOmZ1bmN0aW9uKCl7cmV0dXJuLS41PD10aGlzLnImJnRoaXMucjwyNTUuNSYmLS41PD10aGlzLmcmJnRoaXMuZzwyNTUuNSYmLS41PD10aGlzLmImJnRoaXMuYjwyNTUuNSYmMDw9dGhpcy5vcGFjaXR5JiZ0aGlzLm9wYWNpdHk8PTF9LGhleDpKMixmb3JtYXRIZXg6SjIsZm9ybWF0UmdiOlEyLHRvU3RyaW5nOlEyfSkpLFgxKGU1LG41LEoxKFExLHticmlnaHRlcjpmdW5jdGlvbih0KXtyZXR1cm4gdD1udWxsPT10P0EyOk1hdGgucG93KEEyLHQpLG5ldyBlNSh0aGlzLmgsdGhpcy5zLHRoaXMubCp0LHRoaXMub3BhY2l0eSl9LGRhcmtlcjpmdW5jdGlvbih0KXtyZXR1cm4gdD1udWxsPT10P0UyOk1hdGgucG93KEUyLHQpLG5ldyBlNSh0aGlzLmgsdGhpcy5zLHRoaXMubCp0LHRoaXMub3BhY2l0eSl9LHJnYjpmdW5jdGlvbigpe3ZhciB0PXRoaXMuaCUzNjArMzYwKih0aGlzLmg8MCksbj1pc05hTih0KXx8aXNOYU4odGhpcy5zKT8wOnRoaXMucyxlPXRoaXMubCxhPWUrKGU8LjU/ZToxLWUpKm4sbz0yKmUtYTtyZXR1cm4gbmV3IFgyKGE1KHQ+PTI0MD90LTI0MDp0KzEyMCxvLGEpLGE1KHQsbyxhKSxhNSh0PDEyMD90KzI0MDp0LTEyMCxvLGEpLHRoaXMub3BhY2l0eSl9LGRpc3BsYXlhYmxlOmZ1bmN0aW9uKCl7cmV0dXJuKDA8PXRoaXMucyYmdGhpcy5zPD0xfHxpc05hTih0aGlzLnMpKSYmMDw9dGhpcy5sJiZ0aGlzLmw8PTEmJjA8PXRoaXMub3BhY2l0eSYmdGhpcy5vcGFjaXR5PD0xfSxmb3JtYXRIc2w6ZnVuY3Rpb24oKXt2YXIgdD10aGlzLm9wYWNpdHk7cmV0dXJuKDE9PT0odD1pc05hTih0KT8xOk1hdGgubWF4KDAsTWF0aC5taW4oMSx0KSkpPyJoc2woIjoiaHNsYSgiKSsodGhpcy5ofHwwKSsiLCAiKzEwMCoodGhpcy5zfHwwKSsiJSwgIisxMDAqKHRoaXMubHx8MCkrIiUiKygxPT09dD8iKSI6IiwgIit0KyIpIil9fSkpO3ZhciBzNT0oZnVuY3Rpb24gdChuKXt2YXIgZT0oZnVuY3Rpb24gYSh0KXtyZXR1cm4gMT09KHQ9K3QpP2k1OmZ1bmN0aW9uKG4sZSl7cmV0dXJuIGUtbj8oZnVuY3Rpb24gYSh0LG4sZSl7cmV0dXJuIHQ9TWF0aC5wb3codCxlKSxuPU1hdGgucG93KG4sZSktdCxlPTEvZSxmdW5jdGlvbihhKXtyZXR1cm4gTWF0aC5wb3codCthKm4sZSl9fSkobixlLHQpOm81KGlzTmFOKG4pP2U6bil9fSkobik7ZnVuY3Rpb24gbyh0LG4pe3ZhciBhPWUoKHQ9WjIodCkpLnIsKG49WjIobikpLnIpLG89ZSh0Lmcsbi5nKSxyPWUodC5iLG4uYiksaT1pNSh0Lm9wYWNpdHksbi5vcGFjaXR5KTtyZXR1cm4gZnVuY3Rpb24obil7cmV0dXJuIHQucj1hKG4pLHQuZz1vKG4pLHQuYj1yKG4pLHQub3BhY2l0eT1pKG4pLHQrIiJ9fXJldHVybiBvLmdhbW1hPXQsb30pKDEpLGw1PShmdW5jdGlvbiBkNSh0KXtyZXR1cm4gZnVuY3Rpb24obil7dmFyIGUsYSxvPW4ubGVuZ3RoLHI9bmV3IEFycmF5KG8pLGk9bmV3IEFycmF5KG8pLGM9bmV3IEFycmF5KG8pO2ZvcihlPTA7ZTxvOysrZSlhPVoyKG5bZV0pLHJbZV09YS5yfHwwLGlbZV09YS5nfHwwLGNbZV09YS5ifHwwO3JldHVybiByPXQociksaT10KGkpLGM9dChjKSxhLm9wYWNpdHk9MSxmdW5jdGlvbih0KXtyZXR1cm4gYS5yPXIodCksYS5nPWkodCksYS5iPWModCksYSsiIn19fSkoKGZ1bmN0aW9uIG01KHQpe3ZhciBuPXQubGVuZ3RoLTE7cmV0dXJuIGZ1bmN0aW9uKGUpe3ZhciBhPWU8PTA/ZT0wOmU+PTE/KGU9MSxuLTEpOk1hdGguZmxvb3IoZSpuKSxvPXRbYV0scj10W2ErMV07cmV0dXJuKGZ1bmN0aW9uIGkodCxuLGUsYSxvKXt2YXIgcj10KnQsaT1yKnQ7cmV0dXJuKCgxLTMqdCszKnItaSkqbisoNC02KnIrMyppKSplKygxKzMqdCszKnItMyppKSphK2kqbykvNn0pKChlLWEvbikqbixhPjA/dFthLTFdOjIqby1yLG8scixhPG4tMT90W2ErMl06MipyLW8pfX0pKTtmdW5jdGlvbiBnNSh0LG4pe258fChuPVtdKTt2YXIgZSxhPXQ/TWF0aC5taW4obi5sZW5ndGgsdC5sZW5ndGgpOjAsbz1uLnNsaWNlKCk7cmV0dXJuIGZ1bmN0aW9uKHIpe2ZvcihlPTA7ZTxhOysrZSlvW2VdPXRbZV0qKDEtcikrbltlXSpyO3JldHVybiBvfX1mdW5jdGlvbiBwNSh0LG4pe3ZhciBlLGE9bj9uLmxlbmd0aDowLG89dD9NYXRoLm1pbihhLHQubGVuZ3RoKTowLHI9bmV3IEFycmF5KG8pLGk9bmV3IEFycmF5KGEpO2ZvcihlPTA7ZTxvOysrZSlyW2VdPU01KHRbZV0sbltlXSk7Zm9yKDtlPGE7KytlKWlbZV09bltlXTtyZXR1cm4gZnVuY3Rpb24odCl7Zm9yKGU9MDtlPG87KytlKWlbZV09cltlXSh0KTtyZXR1cm4gaX19ZnVuY3Rpb24gYjUodCxuKXt2YXIgZT1uZXcgRGF0ZTtyZXR1cm4gdD0rdCxuPStuLGZ1bmN0aW9uKGEpe3JldHVybiBlLnNldFRpbWUodCooMS1hKStuKmEpLGV9fWZ1bmN0aW9uIHU1KHQsbil7cmV0dXJuIHQ9K3Qsbj0rbixmdW5jdGlvbihlKXtyZXR1cm4gdCooMS1lKStuKmV9fWZ1bmN0aW9uIGY1KHQsbil7dmFyIGUsYT17fSxvPXt9O2ZvcihlIGluIG51bGwhPT10JiYib2JqZWN0Ij09dHlwZW9mIHR8fCh0PXt9KSxudWxsIT09biYmIm9iamVjdCI9PXR5cGVvZiBufHwobj17fSksbillIGluIHQ/YVtlXT1NNSh0W2VdLG5bZV0pOm9bZV09bltlXTtyZXR1cm4gZnVuY3Rpb24odCl7Zm9yKGUgaW4gYSlvW2VdPWFbZV0odCk7cmV0dXJuIG99fXZhciBoNT0vWy0rXT8oPzpcZCtcLj9cZCp8XC4/XGQrKSg/OltlRV1bLStdP1xkKyk/L2csXzU9bmV3IFJlZ0V4cChoNS5zb3VyY2UsImciKTtmdW5jdGlvbiBDNSh0LG4pe3ZhciBlLGEsbyxyPWg1Lmxhc3RJbmRleD1fNS5sYXN0SW5kZXg9MCxpPS0xLGM9W10scz1bXTtmb3IodCs9IiIsbis9IiI7KGU9aDUuZXhlYyh0KSkmJihhPV81LmV4ZWMobikpOykobz1hLmluZGV4KT5yJiYobz1uLnNsaWNlKHIsbyksY1tpXT9jW2ldKz1vOmNbKytpXT1vKSwoZT1lWzBdKT09PShhPWFbMF0pP2NbaV0/Y1tpXSs9YTpjWysraV09YTooY1srK2ldPW51bGwscy5wdXNoKHtpOmkseDp1NShlLGEpfSkpLHI9XzUubGFzdEluZGV4O3JldHVybiByPG4ubGVuZ3RoJiYobz1uLnNsaWNlKHIpLGNbaV0/Y1tpXSs9bzpjWysraV09byksYy5sZW5ndGg8Mj9zWzBdPyhmdW5jdGlvbiBsKHQpe3JldHVybiBmdW5jdGlvbihuKXtyZXR1cm4gdChuKSsiIn19KShzWzBdLngpOihmdW5jdGlvbiBtKHQpe3JldHVybiBmdW5jdGlvbigpe3JldHVybiB0fX0pKG4pOihuPXMubGVuZ3RoLGZ1bmN0aW9uKHQpe2Zvcih2YXIgZSxhPTA7YTxuOysrYSljWyhlPXNbYV0pLmldPWUueCh0KTtyZXR1cm4gYy5qb2luKCIiKX0pfWZ1bmN0aW9uIE01KHQsbil7dmFyIGUsYT10eXBlb2YgbjtyZXR1cm4gbnVsbD09bnx8ImJvb2xlYW4iPT09YT9vNShuKTooIm51bWJlciI9PT1hP3U1OiJzdHJpbmciPT09YT8oZT1XMihuKSk/KG49ZSxzNSk6QzU6biBpbnN0YW5jZW9mIFcyP3M1Om4gaW5zdGFuY2VvZiBEYXRlP2I1OihmdW5jdGlvbiBvKHQpe3JldHVybiBBcnJheUJ1ZmZlci5pc1ZpZXcodCkmJiEodCBpbnN0YW5jZW9mIERhdGFWaWV3KX0pKG4pP2c1OkFycmF5LmlzQXJyYXkobik/cDU6ImZ1bmN0aW9uIiE9dHlwZW9mIG4udmFsdWVPZiYmImZ1bmN0aW9uIiE9dHlwZW9mIG4udG9TdHJpbmd8fGlzTmFOKG4pP2Y1OnU1KSh0LG4pfWZ1bmN0aW9uIE81KHQsbil7cmV0dXJuIHQ9K3Qsbj0rbixmdW5jdGlvbihlKXtyZXR1cm4gTWF0aC5yb3VuZCh0KigxLWUpK24qZSl9fXZhciBQNSx4NSx5NSxrNSx2NT0xODAvTWF0aC5QSSx3NT17dHJhbnNsYXRlWDowLHRyYW5zbGF0ZVk6MCxyb3RhdGU6MCxza2V3WDowLHNjYWxlWDoxLHNjYWxlWToxfTtmdW5jdGlvbiBTNSh0LG4sZSxhLG8scil7dmFyIGksYyxzO3JldHVybihpPU1hdGguc3FydCh0KnQrbipuKSkmJih0Lz1pLG4vPWkpLChzPXQqZStuKmEpJiYoZS09dCpzLGEtPW4qcyksKGM9TWF0aC5zcXJ0KGUqZSthKmEpKSYmKGUvPWMsYS89YyxzLz1jKSx0KmE8biplJiYodD0tdCxuPS1uLHM9LXMsaT0taSkse3RyYW5zbGF0ZVg6byx0cmFuc2xhdGVZOnIscm90YXRlOk1hdGguYXRhbjIobix0KSp2NSxza2V3WDpNYXRoLmF0YW4ocykqdjUsc2NhbGVYOmksc2NhbGVZOmN9fWZ1bmN0aW9uIEU1KHQsbixlLGEpe2Z1bmN0aW9uIG8odCl7cmV0dXJuIHQubGVuZ3RoP3QucG9wKCkrIiAiOiIifXJldHVybiBmdW5jdGlvbihyLGkpe3ZhciBjPVtdLHM9W107cmV0dXJuIHI9dChyKSxpPXQoaSksKGZ1bmN0aW9uIGwodCxhLG8scixpLGMpe2lmKHQhPT1vfHxhIT09cil7dmFyIHM9aS5wdXNoKCJ0cmFuc2xhdGUoIixudWxsLG4sbnVsbCxlKTtjLnB1c2goe2k6cy00LHg6dTUodCxvKX0se2k6cy0yLHg6dTUoYSxyKX0pfWVsc2Uob3x8cikmJmkucHVzaCgidHJhbnNsYXRlKCIrbytuK3IrZSl9KShyLnRyYW5zbGF0ZVgsci50cmFuc2xhdGVZLGkudHJhbnNsYXRlWCxpLnRyYW5zbGF0ZVksYyxzKSwoZnVuY3Rpb24gbSh0LG4sZSxyKXt0IT09bj8odC1uPjE4MD9uKz0zNjA6bi10PjE4MCYmKHQrPTM2MCksci5wdXNoKHtpOmUucHVzaChvKGUpKyJyb3RhdGUoIixudWxsLGEpLTIseDp1NSh0LG4pfSkpOm4mJmUucHVzaChvKGUpKyJyb3RhdGUoIituK2EpfSkoci5yb3RhdGUsaS5yb3RhdGUsYyxzKSwoZnVuY3Rpb24gZCh0LG4sZSxyKXt0IT09bj9yLnB1c2goe2k6ZS5wdXNoKG8oZSkrInNrZXdYKCIsbnVsbCxhKS0yLHg6dTUodCxuKX0pOm4mJmUucHVzaChvKGUpKyJza2V3WCgiK24rYSl9KShyLnNrZXdYLGkuc2tld1gsYyxzKSwoZnVuY3Rpb24gZyh0LG4sZSxhLHIsaSl7aWYodCE9PWV8fG4hPT1hKXt2YXIgYz1yLnB1c2gobyhyKSsic2NhbGUoIixudWxsLCIsIixudWxsLCIpIik7aS5wdXNoKHtpOmMtNCx4OnU1KHQsZSl9LHtpOmMtMix4OnU1KG4sYSl9KX1lbHNlIDE9PT1lJiYxPT09YXx8ci5wdXNoKG8ocikrInNjYWxlKCIrZSsiLCIrYSsiKSIpfSkoci5zY2FsZVgsci5zY2FsZVksaS5zY2FsZVgsaS5zY2FsZVksYyxzKSxyPWk9bnVsbCxmdW5jdGlvbih0KXtmb3IodmFyIG4sZT0tMSxhPXMubGVuZ3RoOysrZTxhOyljWyhuPXNbZV0pLmldPW4ueCh0KTtyZXR1cm4gYy5qb2luKCIiKX19fXZhciBBNSx6NSxSNT1FNSgoZnVuY3Rpb24gVDUodCl7cmV0dXJuIm5vbmUiPT09dD93NTooUDV8fChQNT1kb2N1bWVudC5jcmVhdGVFbGVtZW50KCJESVYiKSx4NT1kb2N1bWVudC5kb2N1bWVudEVsZW1lbnQseTU9ZG9jdW1lbnQuZGVmYXVsdFZpZXcpLFA1LnN0eWxlLnRyYW5zZm9ybT10LHQ9eTUuZ2V0Q29tcHV0ZWRTdHlsZSh4NS5hcHBlbmRDaGlsZChQNSksbnVsbCkuZ2V0UHJvcGVydHlWYWx1ZSgidHJhbnNmb3JtIikseDUucmVtb3ZlQ2hpbGQoUDUpLFM1KCsodD10LnNsaWNlKDcsLTEpLnNwbGl0KCIsIikpWzBdLCt0WzFdLCt0WzJdLCt0WzNdLCt0WzRdLCt0WzVdKSl9KSwicHgsICIsInB4KSIsImRlZykiKSxENT1FNSgoZnVuY3Rpb24gSTUodCl7cmV0dXJuIG51bGw9PXQ/dzU6KGs1fHwoazU9ZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIsImciKSksazUuc2V0QXR0cmlidXRlKCJ0cmFuc2Zvcm0iLHQpLCh0PWs1LnRyYW5zZm9ybS5iYXNlVmFsLmNvbnNvbGlkYXRlKCkpP1M1KCh0PXQubWF0cml4KS5hLHQuYix0LmMsdC5kLHQuZSx0LmYpOnc1KX0pLCIsICIsIikiLCIpIiksTjU9KGZ1bmN0aW9uIEw1KHQpe3JldHVybiBmdW5jdGlvbihuLGUpe3ZhciBhPXQoKG49bjUobikpLmgsKGU9bjUoZSkpLmgpLG89aTUobi5zLGUucykscj1pNShuLmwsZS5sKSxpPWk1KG4ub3BhY2l0eSxlLm9wYWNpdHkpO3JldHVybiBmdW5jdGlvbih0KXtyZXR1cm4gbi5oPWEodCksbi5zPW8odCksbi5sPXIodCksbi5vcGFjaXR5PWkodCksbisiIn19fSkoKGZ1bmN0aW9uIEY1KHQsbil7dmFyIGU9bi10O3JldHVybiBlP3I1KHQsZT4xODB8fGU8LTE4MD9lLTM2MCpNYXRoLnJvdW5kKGUvMzYwKTplKTpvNShpc05hTih0KT9uOnQpfSkpLEg1PTAsQjU9MCxWNT0wLGo1PTAsVTU9MCxXNT0wLEc1PSJvYmplY3QiPT10eXBlb2YgcGVyZm9ybWFuY2UmJnBlcmZvcm1hbmNlLm5vdz9wZXJmb3JtYW5jZTpEYXRlLFk1PSJvYmplY3QiPT10eXBlb2Ygd2luZG93JiZ3aW5kb3cucmVxdWVzdEFuaW1hdGlvbkZyYW1lP3dpbmRvdy5yZXF1ZXN0QW5pbWF0aW9uRnJhbWUuYmluZCh3aW5kb3cpOmZ1bmN0aW9uKHQpe3NldFRpbWVvdXQodCwxNyl9O2Z1bmN0aW9uIHE1KCl7cmV0dXJuIFU1fHwoWTUoWjUpLFU1PUc1Lm5vdygpK1c1KX1mdW5jdGlvbiBaNSgpe1U1PTB9ZnVuY3Rpb24gWDUoKXt0aGlzLl9jYWxsPXRoaXMuX3RpbWU9dGhpcy5fbmV4dD1udWxsfWZ1bmN0aW9uIEo1KHQsbixlKXt2YXIgYT1uZXcgWDU7cmV0dXJuIGEucmVzdGFydCh0LG4sZSksYX1mdW5jdGlvbiBRNSgpe1U1PShqNT1HNS5ub3coKSkrVzUsSDU9QjU9MDt0cnl7IShmdW5jdGlvbiB0KCl7cTUoKSwrK0g1O2Zvcih2YXIgdCxuPUE1O247KSh0PVU1LW4uX3RpbWUpPj0wJiZuLl9jYWxsLmNhbGwobnVsbCx0KSxuPW4uX25leHQ7LS1INX0pKCl9ZmluYWxseXtINT0wLChmdW5jdGlvbiBuKCl7Zm9yKHZhciB0LG4sZT1BNSxhPTEvMDtlOyllLl9jYWxsPyhhPmUuX3RpbWUmJihhPWUuX3RpbWUpLHQ9ZSxlPWUuX25leHQpOihuPWUuX25leHQsZS5fbmV4dD1udWxsLGU9dD90Ll9uZXh0PW46QTU9bik7ejU9dCwkNShhKX0pKCksVTU9MH19ZnVuY3Rpb24gSzUoKXt2YXIgdD1HNS5ub3coKSxuPXQtajU7bj4xZTMmJihXNS09bixqNT10KX1mdW5jdGlvbiAkNSh0KXtINXx8KEI1JiYoQjU9Y2xlYXJUaW1lb3V0KEI1KSksdC1VNT4yND8odDwxLzAmJihCNT1zZXRUaW1lb3V0KFE1LHQtRzUubm93KCktVzUpKSxWNSYmKFY1PWNsZWFySW50ZXJ2YWwoVjUpKSk6KFY1fHwoajU9RzUubm93KCksVjU9c2V0SW50ZXJ2YWwoSzUsMWUzKSksSDU9MSxZNShRNSkpKX1mdW5jdGlvbiB0NCh0LG4sZSl7dmFyIGE9bmV3IFg1O3JldHVybiBhLnJlc3RhcnQoKGZ1bmN0aW9uKGUpe2Euc3RvcCgpLHQoZStuKX0pLG49bnVsbD09bj8wOituLGUpLGF9WDUucHJvdG90eXBlPUo1LnByb3RvdHlwZT17Y29uc3RydWN0b3I6WDUscmVzdGFydDpmdW5jdGlvbih0LG4sZSl7aWYoImZ1bmN0aW9uIiE9dHlwZW9mIHQpdGhyb3cgbmV3IFR5cGVFcnJvcigiY2FsbGJhY2sgaXMgbm90IGEgZnVuY3Rpb24iKTtlPShudWxsPT1lP3E1KCk6K2UpKyhudWxsPT1uPzA6K24pLHRoaXMuX25leHR8fHo1PT09dGhpc3x8KHo1P3o1Ll9uZXh0PXRoaXM6QTU9dGhpcyx6NT10aGlzKSx0aGlzLl9jYWxsPXQsdGhpcy5fdGltZT1lLCQ1KCl9LHN0b3A6ZnVuY3Rpb24oKXt0aGlzLl9jYWxsJiYodGhpcy5fY2FsbD1udWxsLHRoaXMuX3RpbWU9MS8wLCQ1KCkpfX07dmFyIG40PVMwKCJzdGFydCIsImVuZCIsImNhbmNlbCIsImludGVycnVwdCIpLGU0PVtdO2Z1bmN0aW9uIGE0KHQsbixlLGEsbyxyKXt2YXIgaT10Ll9fdHJhbnNpdGlvbjtpZihpKXtpZihlIGluIGkpcmV0dXJufWVsc2UgdC5fX3RyYW5zaXRpb249e307IShmdW5jdGlvbiBjKHQsbixlKXt2YXIgYSxvPXQuX190cmFuc2l0aW9uO2Z1bmN0aW9uIHIocyl7dmFyIGwsbSxkLGc7aWYoMSE9PWUuc3RhdGUpcmV0dXJuIGMoKTtmb3IobCBpbiBvKWlmKChnPW9bbF0pLm5hbWU9PT1lLm5hbWUpe2lmKDM9PT1nLnN0YXRlKXJldHVybiB0NChyKTs0PT09Zy5zdGF0ZT8oZy5zdGF0ZT02LGcudGltZXIuc3RvcCgpLGcub24uY2FsbCgiaW50ZXJydXB0Iix0LHQuX19kYXRhX18sZy5pbmRleCxnLmdyb3VwKSxkZWxldGUgb1tsXSk6K2w8biYmKGcuc3RhdGU9NixnLnRpbWVyLnN0b3AoKSxnLm9uLmNhbGwoImNhbmNlbCIsdCx0Ll9fZGF0YV9fLGcuaW5kZXgsZy5ncm91cCksZGVsZXRlIG9bbF0pfWlmKHQ0KChmdW5jdGlvbigpezM9PT1lLnN0YXRlJiYoZS5zdGF0ZT00LGUudGltZXIucmVzdGFydChpLGUuZGVsYXksZS50aW1lKSxpKHMpKX0pKSxlLnN0YXRlPTIsZS5vbi5jYWxsKCJzdGFydCIsdCx0Ll9fZGF0YV9fLGUuaW5kZXgsZS5ncm91cCksMj09PWUuc3RhdGUpe2ZvcihlLnN0YXRlPTMsYT1uZXcgQXJyYXkoZD1lLnR3ZWVuLmxlbmd0aCksbD0wLG09LTE7bDxkOysrbCkoZz1lLnR3ZWVuW2xdLnZhbHVlLmNhbGwodCx0Ll9fZGF0YV9fLGUuaW5kZXgsZS5ncm91cCkpJiYoYVsrK21dPWcpO2EubGVuZ3RoPW0rMX19ZnVuY3Rpb24gaShuKXtmb3IodmFyIG89bjxlLmR1cmF0aW9uP2UuZWFzZS5jYWxsKG51bGwsbi9lLmR1cmF0aW9uKTooZS50aW1lci5yZXN0YXJ0KGMpLGUuc3RhdGU9NSwxKSxyPS0xLGk9YS5sZW5ndGg7KytyPGk7KWFbcl0uY2FsbCh0LG8pOzU9PT1lLnN0YXRlJiYoZS5vbi5jYWxsKCJlbmQiLHQsdC5fX2RhdGFfXyxlLmluZGV4LGUuZ3JvdXApLGMoKSl9ZnVuY3Rpb24gYygpe2Zvcih2YXIgYSBpbiBlLnN0YXRlPTYsZS50aW1lci5zdG9wKCksZGVsZXRlIG9bbl0sbylyZXR1cm47ZGVsZXRlIHQuX190cmFuc2l0aW9ufW9bbl09ZSxlLnRpbWVyPUo1KChmdW5jdGlvbiBzKHQpe2Uuc3RhdGU9MSxlLnRpbWVyLnJlc3RhcnQocixlLmRlbGF5LGUudGltZSksZS5kZWxheTw9dCYmcih0LWUuZGVsYXkpfSksMCxlLnRpbWUpfSkodCxlLHtuYW1lOm4saW5kZXg6YSxncm91cDpvLG9uOm40LHR3ZWVuOmU0LHRpbWU6ci50aW1lLGRlbGF5OnIuZGVsYXksZHVyYXRpb246ci5kdXJhdGlvbixlYXNlOnIuZWFzZSx0aW1lcjpudWxsLHN0YXRlOjB9KX1mdW5jdGlvbiBvNCh0LG4pe3ZhciBlPWk0KHQsbik7aWYoZS5zdGF0ZT4wKXRocm93IG5ldyBFcnJvcigidG9vIGxhdGU7IGFscmVhZHkgc2NoZWR1bGVkIik7cmV0dXJuIGV9ZnVuY3Rpb24gcjQodCxuKXt2YXIgZT1pNCh0LG4pO2lmKGUuc3RhdGU+Myl0aHJvdyBuZXcgRXJyb3IoInRvbyBsYXRlOyBhbHJlYWR5IHJ1bm5pbmciKTtyZXR1cm4gZX1mdW5jdGlvbiBpNCh0LG4pe3ZhciBlPXQuX190cmFuc2l0aW9uO2lmKCFlfHwhKGU9ZVtuXSkpdGhyb3cgbmV3IEVycm9yKCJ0cmFuc2l0aW9uIG5vdCBmb3VuZCIpO3JldHVybiBlfWZ1bmN0aW9uIGM0KHQsbil7dmFyIGUsYSxvLHI9dC5fX3RyYW5zaXRpb24saT0hMDtpZihyKXtmb3IobyBpbiBuPW51bGw9PW4/bnVsbDpuKyIiLHIpKGU9cltvXSkubmFtZT09PW4/KGE9ZS5zdGF0ZT4yJiZlLnN0YXRlPDUsZS5zdGF0ZT02LGUudGltZXIuc3RvcCgpLGUub24uY2FsbChhPyJpbnRlcnJ1cHQiOiJjYW5jZWwiLHQsdC5fX2RhdGFfXyxlLmluZGV4LGUuZ3JvdXApLGRlbGV0ZSByW29dKTppPSExO2kmJmRlbGV0ZSB0Ll9fdHJhbnNpdGlvbn19ZnVuY3Rpb24gczQodCxuKXt2YXIgZSxhO3JldHVybiBmdW5jdGlvbigpe3ZhciBvPXI0KHRoaXMsdCkscj1vLnR3ZWVuO2lmKHIhPT1lKWZvcih2YXIgaT0wLGM9KGE9ZT1yKS5sZW5ndGg7aTxjOysraSlpZihhW2ldLm5hbWU9PT1uKXsoYT1hLnNsaWNlKCkpLnNwbGljZShpLDEpO2JyZWFrfW8udHdlZW49YX19ZnVuY3Rpb24gbDQodCxuLGUpe3ZhciBhLG87aWYoImZ1bmN0aW9uIiE9dHlwZW9mIGUpdGhyb3cgbmV3IEVycm9yO3JldHVybiBmdW5jdGlvbigpe3ZhciByPXI0KHRoaXMsdCksaT1yLnR3ZWVuO2lmKGkhPT1hKXtvPShhPWkpLnNsaWNlKCk7Zm9yKHZhciBjPXtuYW1lOm4sdmFsdWU6ZX0scz0wLGw9by5sZW5ndGg7czxsOysrcylpZihvW3NdLm5hbWU9PT1uKXtvW3NdPWM7YnJlYWt9cz09PWwmJm8ucHVzaChjKX1yLnR3ZWVuPW99fWZ1bmN0aW9uIG00KHQsbixlKXt2YXIgYT10Ll9pZDtyZXR1cm4gdC5lYWNoKChmdW5jdGlvbigpe3ZhciB0PXI0KHRoaXMsYSk7KHQudmFsdWV8fCh0LnZhbHVlPXt9KSlbbl09ZS5hcHBseSh0aGlzLGFyZ3VtZW50cyl9KSksZnVuY3Rpb24odCl7cmV0dXJuIGk0KHQsYSkudmFsdWVbbl19fWZ1bmN0aW9uIGQ0KHQsbil7dmFyIGU7cmV0dXJuKCJudW1iZXIiPT10eXBlb2Ygbj91NTpuIGluc3RhbmNlb2YgVzI/czU6KGU9VzIobikpPyhuPWUsczUpOkM1KSh0LG4pfWZ1bmN0aW9uIGc0KHQpe3JldHVybiBmdW5jdGlvbigpe3RoaXMucmVtb3ZlQXR0cmlidXRlKHQpfX1mdW5jdGlvbiBwNCh0KXtyZXR1cm4gZnVuY3Rpb24oKXt0aGlzLnJlbW92ZUF0dHJpYnV0ZU5TKHQuc3BhY2UsdC5sb2NhbCl9fWZ1bmN0aW9uIGI0KHQsbixlKXt2YXIgYSxvLHI9ZSsiIjtyZXR1cm4gZnVuY3Rpb24oKXt2YXIgaT10aGlzLmdldEF0dHJpYnV0ZSh0KTtyZXR1cm4gaT09PXI/bnVsbDppPT09YT9vOm89bihhPWksZSl9fWZ1bmN0aW9uIHU0KHQsbixlKXt2YXIgYSxvLHI9ZSsiIjtyZXR1cm4gZnVuY3Rpb24oKXt2YXIgaT10aGlzLmdldEF0dHJpYnV0ZU5TKHQuc3BhY2UsdC5sb2NhbCk7cmV0dXJuIGk9PT1yP251bGw6aT09PWE/bzpvPW4oYT1pLGUpfX1mdW5jdGlvbiBmNCh0LG4sZSl7dmFyIGEsbyxyO3JldHVybiBmdW5jdGlvbigpe3ZhciBpLGMscz1lKHRoaXMpO2lmKG51bGwhPXMpcmV0dXJuKGk9dGhpcy5nZXRBdHRyaWJ1dGUodCkpPT09KGM9cysiIik/bnVsbDppPT09YSYmYz09PW8/cjoobz1jLHI9bihhPWkscykpO3RoaXMucmVtb3ZlQXR0cmlidXRlKHQpfX1mdW5jdGlvbiBoNCh0LG4sZSl7dmFyIGEsbyxyO3JldHVybiBmdW5jdGlvbigpe3ZhciBpLGMscz1lKHRoaXMpO2lmKG51bGwhPXMpcmV0dXJuKGk9dGhpcy5nZXRBdHRyaWJ1dGVOUyh0LnNwYWNlLHQubG9jYWwpKT09PShjPXMrIiIpP251bGw6aT09PWEmJmM9PT1vP3I6KG89YyxyPW4oYT1pLHMpKTt0aGlzLnJlbW92ZUF0dHJpYnV0ZU5TKHQuc3BhY2UsdC5sb2NhbCl9fWZ1bmN0aW9uIF80KHQsbil7cmV0dXJuIGZ1bmN0aW9uKGUpe3RoaXMuc2V0QXR0cmlidXRlKHQsbi5jYWxsKHRoaXMsZSkpfX1mdW5jdGlvbiBDNCh0LG4pe3JldHVybiBmdW5jdGlvbihlKXt0aGlzLnNldEF0dHJpYnV0ZU5TKHQuc3BhY2UsdC5sb2NhbCxuLmNhbGwodGhpcyxlKSl9fWZ1bmN0aW9uIE00KHQsbil7dmFyIGUsYTtmdW5jdGlvbiBvKCl7dmFyIG89bi5hcHBseSh0aGlzLGFyZ3VtZW50cyk7cmV0dXJuIG8hPT1hJiYoZT0oYT1vKSYmQzQodCxvKSksZX1yZXR1cm4gby5fdmFsdWU9bixvfWZ1bmN0aW9uIE80KHQsbil7dmFyIGUsYTtmdW5jdGlvbiBvKCl7dmFyIG89bi5hcHBseSh0aGlzLGFyZ3VtZW50cyk7cmV0dXJuIG8hPT1hJiYoZT0oYT1vKSYmXzQodCxvKSksZX1yZXR1cm4gby5fdmFsdWU9bixvfWZ1bmN0aW9uIFA0KHQsbil7cmV0dXJuIGZ1bmN0aW9uKCl7bzQodGhpcyx0KS5kZWxheT0rbi5hcHBseSh0aGlzLGFyZ3VtZW50cyl9fWZ1bmN0aW9uIHg0KHQsbil7cmV0dXJuIG49K24sZnVuY3Rpb24oKXtvNCh0aGlzLHQpLmRlbGF5PW59fWZ1bmN0aW9uIHk0KHQsbil7cmV0dXJuIGZ1bmN0aW9uKCl7cjQodGhpcyx0KS5kdXJhdGlvbj0rbi5hcHBseSh0aGlzLGFyZ3VtZW50cyl9fWZ1bmN0aW9uIGs0KHQsbil7cmV0dXJuIG49K24sZnVuY3Rpb24oKXtyNCh0aGlzLHQpLmR1cmF0aW9uPW59fWZ1bmN0aW9uIHY0KHQsbil7aWYoImZ1bmN0aW9uIiE9dHlwZW9mIG4pdGhyb3cgbmV3IEVycm9yO3JldHVybiBmdW5jdGlvbigpe3I0KHRoaXMsdCkuZWFzZT1ufX1mdW5jdGlvbiB3NCh0LG4sZSl7dmFyIGEsbyxyPShmdW5jdGlvbiBpKHQpe3JldHVybih0KyIiKS50cmltKCkuc3BsaXQoL158XHMrLykuZXZlcnkoKGZ1bmN0aW9uKHQpe3ZhciBuPXQuaW5kZXhPZigiLiIpO3JldHVybiBuPj0wJiYodD10LnNsaWNlKDAsbikpLCF0fHwic3RhcnQiPT09dH0pKX0pKG4pP280OnI0O3JldHVybiBmdW5jdGlvbigpe3ZhciBpPXIodGhpcyx0KSxjPWkub247YyE9PWEmJihvPShhPWMpLmNvcHkoKSkub24obixlKSxpLm9uPW99fXZhciBTND1WMS5wcm90b3R5cGUuY29uc3RydWN0b3I7ZnVuY3Rpb24gRTQodCl7cmV0dXJuIGZ1bmN0aW9uKCl7dGhpcy5zdHlsZS5yZW1vdmVQcm9wZXJ0eSh0KX19ZnVuY3Rpb24gQTQodCxuLGUpe3JldHVybiBmdW5jdGlvbihhKXt0aGlzLnN0eWxlLnNldFByb3BlcnR5KHQsbi5jYWxsKHRoaXMsYSksZSl9fWZ1bmN0aW9uIHo0KHQsbixlKXt2YXIgYSxvO2Z1bmN0aW9uIHIoKXt2YXIgcj1uLmFwcGx5KHRoaXMsYXJndW1lbnRzKTtyZXR1cm4gciE9PW8mJihhPShvPXIpJiZBNCh0LHIsZSkpLGF9cmV0dXJuIHIuX3ZhbHVlPW4scn1mdW5jdGlvbiBSNCh0KXtyZXR1cm4gZnVuY3Rpb24obil7dGhpcy50ZXh0Q29udGVudD10LmNhbGwodGhpcyxuKX19ZnVuY3Rpb24gVDQodCl7dmFyIG4sZTtmdW5jdGlvbiBhKCl7dmFyIGE9dC5hcHBseSh0aGlzLGFyZ3VtZW50cyk7cmV0dXJuIGEhPT1lJiYobj0oZT1hKSYmUjQoYSkpLG59cmV0dXJuIGEuX3ZhbHVlPXQsYX12YXIgRDQ9MDtmdW5jdGlvbiBJNCh0LG4sZSxhKXt0aGlzLl9ncm91cHM9dCx0aGlzLl9wYXJlbnRzPW4sdGhpcy5fbmFtZT1lLHRoaXMuX2lkPWF9ZnVuY3Rpb24gTjQoKXtyZXR1cm4rK0Q0fXZhciBGND1WMS5wcm90b3R5cGU7STQucHJvdG90eXBlPXtjb25zdHJ1Y3RvcjpJNCxzZWxlY3Q6ZnVuY3Rpb24gTDQodCl7dmFyIG49dGhpcy5fbmFtZSxlPXRoaXMuX2lkOyJmdW5jdGlvbiIhPXR5cGVvZiB0JiYodD1CMCh0KSk7Zm9yKHZhciBhPXRoaXMuX2dyb3VwcyxvPWEubGVuZ3RoLHI9bmV3IEFycmF5KG8pLGk9MDtpPG87KytpKWZvcih2YXIgYyxzLGw9YVtpXSxtPWwubGVuZ3RoLGQ9cltpXT1uZXcgQXJyYXkobSksZz0wO2c8bTsrK2cpKGM9bFtnXSkmJihzPXQuY2FsbChjLGMuX19kYXRhX18sZyxsKSkmJigiX19kYXRhX18iaW4gYyYmKHMuX19kYXRhX189Yy5fX2RhdGFfXyksZFtnXT1zLGE0KGRbZ10sbixlLGcsZCxpNChjLGUpKSk7cmV0dXJuIG5ldyBJNChyLHRoaXMuX3BhcmVudHMsbixlKX0sc2VsZWN0QWxsOmZ1bmN0aW9uIEg0KHQpe3ZhciBuPXRoaXMuX25hbWUsZT10aGlzLl9pZDsiZnVuY3Rpb24iIT10eXBlb2YgdCYmKHQ9ajAodCkpO2Zvcih2YXIgYT10aGlzLl9ncm91cHMsbz1hLmxlbmd0aCxyPVtdLGk9W10sYz0wO2M8bzsrK2MpZm9yKHZhciBzLGw9YVtjXSxtPWwubGVuZ3RoLGQ9MDtkPG07KytkKWlmKHM9bFtkXSl7Zm9yKHZhciBnLHA9dC5jYWxsKHMscy5fX2RhdGFfXyxkLGwpLGI9aTQocyxlKSx1PTAsZj1wLmxlbmd0aDt1PGY7Kyt1KShnPXBbdV0pJiZhNChnLG4sZSx1LHAsYik7ci5wdXNoKHApLGkucHVzaChzKX1yZXR1cm4gbmV3IEk0KHIsaSxuLGUpfSxmaWx0ZXI6ZnVuY3Rpb24gQjQodCl7ImZ1bmN0aW9uIiE9dHlwZW9mIHQmJih0PVUwKHQpKTtmb3IodmFyIG49dGhpcy5fZ3JvdXBzLGU9bi5sZW5ndGgsYT1uZXcgQXJyYXkoZSksbz0wO288ZTsrK28pZm9yKHZhciByLGk9bltvXSxjPWkubGVuZ3RoLHM9YVtvXT1bXSxsPTA7bDxjOysrbCkocj1pW2xdKSYmdC5jYWxsKHIsci5fX2RhdGFfXyxsLGkpJiZzLnB1c2gocik7cmV0dXJuIG5ldyBJNChhLHRoaXMuX3BhcmVudHMsdGhpcy5fbmFtZSx0aGlzLl9pZCl9LG1lcmdlOmZ1bmN0aW9uIFY0KHQpe2lmKHQuX2lkIT09dGhpcy5faWQpdGhyb3cgbmV3IEVycm9yO2Zvcih2YXIgbj10aGlzLl9ncm91cHMsZT10Ll9ncm91cHMsYT1uLmxlbmd0aCxvPU1hdGgubWluKGEsZS5sZW5ndGgpLHI9bmV3IEFycmF5KGEpLGk9MDtpPG87KytpKWZvcih2YXIgYyxzPW5baV0sbD1lW2ldLG09cy5sZW5ndGgsZD1yW2ldPW5ldyBBcnJheShtKSxnPTA7ZzxtOysrZykoYz1zW2ddfHxsW2ddKSYmKGRbZ109Yyk7Zm9yKDtpPGE7KytpKXJbaV09bltpXTtyZXR1cm4gbmV3IEk0KHIsdGhpcy5fcGFyZW50cyx0aGlzLl9uYW1lLHRoaXMuX2lkKX0sc2VsZWN0aW9uOmZ1bmN0aW9uIGo0KCl7cmV0dXJuIG5ldyBTNCh0aGlzLl9ncm91cHMsdGhpcy5fcGFyZW50cyl9LHRyYW5zaXRpb246ZnVuY3Rpb24gVTQoKXtmb3IodmFyIHQ9dGhpcy5fbmFtZSxuPXRoaXMuX2lkLGU9TjQoKSxhPXRoaXMuX2dyb3VwcyxvPWEubGVuZ3RoLHI9MDtyPG87KytyKWZvcih2YXIgaSxjPWFbcl0scz1jLmxlbmd0aCxsPTA7bDxzOysrbClpZihpPWNbbF0pe3ZhciBtPWk0KGksbik7YTQoaSx0LGUsbCxjLHt0aW1lOm0udGltZSttLmRlbGF5K20uZHVyYXRpb24sZGVsYXk6MCxkdXJhdGlvbjptLmR1cmF0aW9uLGVhc2U6bS5lYXNlfSl9cmV0dXJuIG5ldyBJNChhLHRoaXMuX3BhcmVudHMsdCxlKX0sY2FsbDpGNC5jYWxsLG5vZGVzOkY0Lm5vZGVzLG5vZGU6RjQubm9kZSxzaXplOkY0LnNpemUsZW1wdHk6RjQuZW1wdHksZWFjaDpGNC5lYWNoLG9uOmZ1bmN0aW9uIFc0KHQsbil7dmFyIGU9dGhpcy5faWQ7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg8Mj9pNCh0aGlzLm5vZGUoKSxlKS5vbi5vbih0KTp0aGlzLmVhY2godzQoZSx0LG4pKX0sYXR0cjpmdW5jdGlvbiBHNCh0LG4pe3ZhciBlPUkwKHQpLGE9InRyYW5zZm9ybSI9PT1lP0Q1OmQ0O3JldHVybiB0aGlzLmF0dHJUd2Vlbih0LCJmdW5jdGlvbiI9PXR5cGVvZiBuPyhlLmxvY2FsP2g0OmY0KShlLGEsbTQodGhpcywiYXR0ci4iK3QsbikpOm51bGw9PW4/KGUubG9jYWw/cDQ6ZzQpKGUpOihlLmxvY2FsP3U0OmI0KShlLGEsbikpfSxhdHRyVHdlZW46ZnVuY3Rpb24gWTQodCxuKXt2YXIgZT0iYXR0ci4iK3Q7aWYoYXJndW1lbnRzLmxlbmd0aDwyKXJldHVybihlPXRoaXMudHdlZW4oZSkpJiZlLl92YWx1ZTtpZihudWxsPT1uKXJldHVybiB0aGlzLnR3ZWVuKGUsbnVsbCk7aWYoImZ1bmN0aW9uIiE9dHlwZW9mIG4pdGhyb3cgbmV3IEVycm9yO3ZhciBhPUkwKHQpO3JldHVybiB0aGlzLnR3ZWVuKGUsKGEubG9jYWw/TTQ6TzQpKGEsbikpfSxzdHlsZTpmdW5jdGlvbiBxNCh0LG4sZSl7dmFyIGE9InRyYW5zZm9ybSI9PSh0Kz0iIik/UjU6ZDQ7cmV0dXJuIG51bGw9PW4/dGhpcy5zdHlsZVR3ZWVuKHQsKGZ1bmN0aW9uIG8odCxuKXt2YXIgZSxhLG87cmV0dXJuIGZ1bmN0aW9uKCl7dmFyIHI9cjEodGhpcyx0KSxpPSh0aGlzLnN0eWxlLnJlbW92ZVByb3BlcnR5KHQpLHIxKHRoaXMsdCkpO3JldHVybiByPT09aT9udWxsOnI9PT1lJiZpPT09YT9vOm89bihlPXIsYT1pKX19KSh0LGEpKS5vbigiZW5kLnN0eWxlLiIrdCxFNCh0KSk6ImZ1bmN0aW9uIj09dHlwZW9mIG4/dGhpcy5zdHlsZVR3ZWVuKHQsKGZ1bmN0aW9uIGkodCxuLGUpe3ZhciBhLG8scjtyZXR1cm4gZnVuY3Rpb24oKXt2YXIgaT1yMSh0aGlzLHQpLGM9ZSh0aGlzKSxzPWMrIiI7cmV0dXJuIG51bGw9PWMmJih0aGlzLnN0eWxlLnJlbW92ZVByb3BlcnR5KHQpLHM9Yz1yMSh0aGlzLHQpKSxpPT09cz9udWxsOmk9PT1hJiZzPT09bz9yOihvPXMscj1uKGE9aSxjKSl9fSkodCxhLG00KHRoaXMsInN0eWxlLiIrdCxuKSkpLmVhY2goKGZ1bmN0aW9uIHIodCxuKXt2YXIgZSxhLG8scixpPSJzdHlsZS4iK24sYz0iZW5kLiIraTtyZXR1cm4gZnVuY3Rpb24oKXt2YXIgcz1yNCh0aGlzLHQpLGw9cy5vbixtPW51bGw9PXMudmFsdWVbaV0/cnx8KHI9RTQobikpOnZvaWQgMDtsPT09ZSYmbz09PW18fChhPShlPWwpLmNvcHkoKSkub24oYyxvPW0pLHMub249YX19KSh0aGlzLl9pZCx0KSk6dGhpcy5zdHlsZVR3ZWVuKHQsKGZ1bmN0aW9uIGModCxuLGUpe3ZhciBhLG8scj1lKyIiO3JldHVybiBmdW5jdGlvbigpe3ZhciBpPXIxKHRoaXMsdCk7cmV0dXJuIGk9PT1yP251bGw6aT09PWE/bzpvPW4oYT1pLGUpfX0pKHQsYSxuKSxlKS5vbigiZW5kLnN0eWxlLiIrdCxudWxsKX0sc3R5bGVUd2VlbjpmdW5jdGlvbiBaNCh0LG4sZSl7dmFyIGE9InN0eWxlLiIrKHQrPSIiKTtpZihhcmd1bWVudHMubGVuZ3RoPDIpcmV0dXJuKGE9dGhpcy50d2VlbihhKSkmJmEuX3ZhbHVlO2lmKG51bGw9PW4pcmV0dXJuIHRoaXMudHdlZW4oYSxudWxsKTtpZigiZnVuY3Rpb24iIT10eXBlb2Ygbil0aHJvdyBuZXcgRXJyb3I7cmV0dXJuIHRoaXMudHdlZW4oYSx6NCh0LG4sbnVsbD09ZT8iIjplKSl9LHRleHQ6ZnVuY3Rpb24gWDQodCl7cmV0dXJuIHRoaXMudHdlZW4oInRleHQiLCJmdW5jdGlvbiI9PXR5cGVvZiB0PyhmdW5jdGlvbiBuKHQpe3JldHVybiBmdW5jdGlvbigpe3ZhciBuPXQodGhpcyk7dGhpcy50ZXh0Q29udGVudD1udWxsPT1uPyIiOm59fSkobTQodGhpcywidGV4dCIsdCkpOihmdW5jdGlvbiBlKHQpe3JldHVybiBmdW5jdGlvbigpe3RoaXMudGV4dENvbnRlbnQ9dH19KShudWxsPT10PyIiOnQrIiIpKX0sdGV4dFR3ZWVuOmZ1bmN0aW9uIEo0KHQpe3ZhciBuPSJ0ZXh0IjtpZihhcmd1bWVudHMubGVuZ3RoPDEpcmV0dXJuKG49dGhpcy50d2VlbihuKSkmJm4uX3ZhbHVlO2lmKG51bGw9PXQpcmV0dXJuIHRoaXMudHdlZW4obixudWxsKTtpZigiZnVuY3Rpb24iIT10eXBlb2YgdCl0aHJvdyBuZXcgRXJyb3I7cmV0dXJuIHRoaXMudHdlZW4obixUNCh0KSl9LHJlbW92ZTpmdW5jdGlvbiBRNCgpe3JldHVybiB0aGlzLm9uKCJlbmQucmVtb3ZlIiwoZnVuY3Rpb24gdChuKXtyZXR1cm4gZnVuY3Rpb24oKXt2YXIgdD10aGlzLnBhcmVudE5vZGU7Zm9yKHZhciBlIGluIHRoaXMuX190cmFuc2l0aW9uKWlmKCtlIT09bilyZXR1cm47dCYmdC5yZW1vdmVDaGlsZCh0aGlzKX19KSh0aGlzLl9pZCkpfSx0d2VlbjpmdW5jdGlvbiBLNCh0LG4pe3ZhciBlPXRoaXMuX2lkO2lmKHQrPSIiLGFyZ3VtZW50cy5sZW5ndGg8Mil7Zm9yKHZhciBhLG89aTQodGhpcy5ub2RlKCksZSkudHdlZW4scj0wLGk9by5sZW5ndGg7cjxpOysrcilpZigoYT1vW3JdKS5uYW1lPT09dClyZXR1cm4gYS52YWx1ZTtyZXR1cm4gbnVsbH1yZXR1cm4gdGhpcy5lYWNoKChudWxsPT1uP3M0Omw0KShlLHQsbikpfSxkZWxheTpmdW5jdGlvbiAkNCh0KXt2YXIgbj10aGlzLl9pZDtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD90aGlzLmVhY2goKCJmdW5jdGlvbiI9PXR5cGVvZiB0P1A0Ong0KShuLHQpKTppNCh0aGlzLm5vZGUoKSxuKS5kZWxheX0sZHVyYXRpb246ZnVuY3Rpb24gdDModCl7dmFyIG49dGhpcy5faWQ7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/dGhpcy5lYWNoKCgiZnVuY3Rpb24iPT10eXBlb2YgdD95NDprNCkobix0KSk6aTQodGhpcy5ub2RlKCksbikuZHVyYXRpb259LGVhc2U6ZnVuY3Rpb24gbjModCl7dmFyIG49dGhpcy5faWQ7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/dGhpcy5lYWNoKHY0KG4sdCkpOmk0KHRoaXMubm9kZSgpLG4pLmVhc2V9LGVuZDpmdW5jdGlvbiBlMygpe3ZhciB0LG4sZT10aGlzLGE9ZS5faWQsbz1lLnNpemUoKTtyZXR1cm4gbmV3IFByb21pc2UoKGZ1bmN0aW9uKHIsaSl7dmFyIGM9e3ZhbHVlOml9LHM9e3ZhbHVlOmZ1bmN0aW9uKCl7MD09LS1vJiZyKCl9fTtlLmVhY2goKGZ1bmN0aW9uKCl7dmFyIGU9cjQodGhpcyxhKSxvPWUub247byE9PXQmJigobj0odD1vKS5jb3B5KCkpLl8uY2FuY2VsLnB1c2goYyksbi5fLmludGVycnVwdC5wdXNoKGMpLG4uXy5lbmQucHVzaChzKSksZS5vbj1ufSkpfSkpfX07dmFyIGEzPXt0aW1lOm51bGwsZGVsYXk6MCxkdXJhdGlvbjoyNTAsZWFzZTpmdW5jdGlvbiBvMyh0KXtyZXR1cm4oKHQqPTIpPD0xP3QqdCp0Oih0LT0yKSp0KnQrMikvMn19O2Z1bmN0aW9uIHIzKHQsbil7Zm9yKHZhciBlOyEoZT10Ll9fdHJhbnNpdGlvbil8fCEoZT1lW25dKTspaWYoISh0PXQucGFyZW50Tm9kZSkpcmV0dXJuIGEzLnRpbWU9cTUoKSxhMztyZXR1cm4gZX1mdW5jdGlvbiBpMyh0KXtyZXR1cm4gZnVuY3Rpb24oKXtyZXR1cm4gdH19ZnVuY3Rpb24gYzModCxuLGUpe3RoaXMudGFyZ2V0PXQsdGhpcy50eXBlPW4sdGhpcy5zZWxlY3Rpb249ZX1mdW5jdGlvbiBzMygpe0ExLnN0b3BJbW1lZGlhdGVQcm9wYWdhdGlvbigpfWZ1bmN0aW9uIGwzKCl7QTEucHJldmVudERlZmF1bHQoKSxBMS5zdG9wSW1tZWRpYXRlUHJvcGFnYXRpb24oKX1WMS5wcm90b3R5cGUuaW50ZXJydXB0PWZ1bmN0aW9uIG0zKHQpe3JldHVybiB0aGlzLmVhY2goKGZ1bmN0aW9uKCl7YzQodGhpcyx0KX0pKX0sVjEucHJvdG90eXBlLnRyYW5zaXRpb249ZnVuY3Rpb24gZDModCl7dmFyIG4sZTt0IGluc3RhbmNlb2YgSTQ/KG49dC5faWQsdD10Ll9uYW1lKToobj1ONCgpLChlPWEzKS50aW1lPXE1KCksdD1udWxsPT10P251bGw6dCsiIik7Zm9yKHZhciBhPXRoaXMuX2dyb3VwcyxvPWEubGVuZ3RoLHI9MDtyPG87KytyKWZvcih2YXIgaSxjPWFbcl0scz1jLmxlbmd0aCxsPTA7bDxzOysrbCkoaT1jW2xdKSYmYTQoaSx0LG4sbCxjLGV8fHIzKGksbikpO3JldHVybiBuZXcgSTQoYSx0aGlzLl9wYXJlbnRzLHQsbil9O3ZhciBnMz17bmFtZToiZHJhZyJ9LHAzPXtuYW1lOiJzcGFjZSJ9LGIzPXtuYW1lOiJoYW5kbGUifSx1Mz17bmFtZToiY2VudGVyIn07ZnVuY3Rpb24gZjModCl7cmV0dXJuWyt0WzBdLCt0WzFdXX1mdW5jdGlvbiBoMyh0KXtyZXR1cm5bZjModFswXSksZjModFsxXSldfWZ1bmN0aW9uIF8zKHQpe3JldHVybiBmdW5jdGlvbihuKXtyZXR1cm4oZnVuY3Rpb24gZSh0LG4sYSl7YXJndW1lbnRzLmxlbmd0aDwzJiYoYT1uLG49VTEoKS5jaGFuZ2VkVG91Y2hlcyk7Zm9yKHZhciBvLHI9MCxpPW4/bi5sZW5ndGg6MDtyPGk7KytyKWlmKChvPW5bcl0pLmlkZW50aWZpZXI9PT1hKXJldHVybiBXMSh0LG8pO3JldHVybiBudWxsfSkobixBMS50b3VjaGVzLHQpfX12YXIgQzM9e25hbWU6IngiLGhhbmRsZXM6WyJ3IiwiZSJdLm1hcCh2MyksaW5wdXQ6ZnVuY3Rpb24odCxuKXtyZXR1cm4gbnVsbD09dD9udWxsOltbK3RbMF0sblswXVsxXV0sWyt0WzFdLG5bMV1bMV1dXX0sb3V0cHV0OmZ1bmN0aW9uKHQpe3JldHVybiB0JiZbdFswXVswXSx0WzFdWzBdXX19LE0zPXtuYW1lOiJ5IixoYW5kbGVzOlsibiIsInMiXS5tYXAodjMpLGlucHV0OmZ1bmN0aW9uKHQsbil7cmV0dXJuIG51bGw9PXQ/bnVsbDpbW25bMF1bMF0sK3RbMF1dLFtuWzFdWzBdLCt0WzFdXV19LG91dHB1dDpmdW5jdGlvbih0KXtyZXR1cm4gdCYmW3RbMF1bMV0sdFsxXVsxXV19fSxPMz17b3ZlcmxheToiY3Jvc3NoYWlyIixzZWxlY3Rpb246Im1vdmUiLG46Im5zLXJlc2l6ZSIsZToiZXctcmVzaXplIixzOiJucy1yZXNpemUiLHc6ImV3LXJlc2l6ZSIsbnc6Im53c2UtcmVzaXplIixuZToibmVzdy1yZXNpemUiLHNlOiJud3NlLXJlc2l6ZSIsc3c6Im5lc3ctcmVzaXplIn0sUDM9e2U6InciLHc6ImUiLG53OiJuZSIsbmU6Im53IixzZToic3ciLHN3OiJzZSJ9LHgzPXtuOiJzIixzOiJuIixudzoic3ciLG5lOiJzZSIsc2U6Im5lIixzdzoibncifSx5Mz17b3ZlcmxheToxLHNlbGVjdGlvbjoxLG46bnVsbCxlOjEsczpudWxsLHc6LTEsbnc6LTEsbmU6MSxzZToxLHN3Oi0xfSxrMz17b3ZlcmxheToxLHNlbGVjdGlvbjoxLG46LTEsZTpudWxsLHM6MSx3Om51bGwsbnc6LTEsbmU6LTEsc2U6MSxzdzoxfTtmdW5jdGlvbiB2Myh0KXtyZXR1cm57dHlwZTp0fX1mdW5jdGlvbiB3Mygpe3JldHVybiFBMS5jdHJsS2V5JiYhQTEuYnV0dG9ufWZ1bmN0aW9uIFMzKCl7dmFyIHQ9dGhpcy5vd25lclNWR0VsZW1lbnR8fHRoaXM7cmV0dXJuIHQuaGFzQXR0cmlidXRlKCJ2aWV3Qm94Iik/W1sodD10LnZpZXdCb3guYmFzZVZhbCkueCx0LnldLFt0LngrdC53aWR0aCx0LnkrdC5oZWlnaHRdXTpbWzAsMF0sW3Qud2lkdGguYmFzZVZhbC52YWx1ZSx0LmhlaWdodC5iYXNlVmFsLnZhbHVlXV19ZnVuY3Rpb24gRTMoKXtyZXR1cm4gbmF2aWdhdG9yLm1heFRvdWNoUG9pbnRzfHwib250b3VjaHN0YXJ0ImluIHRoaXN9ZnVuY3Rpb24gQTModCl7Zm9yKDshdC5fX2JydXNoOylpZighKHQ9dC5wYXJlbnROb2RlKSlyZXR1cm47cmV0dXJuIHQuX19icnVzaH1mdW5jdGlvbiB6Myh0KXtyZXR1cm4gdFswXVswXT09PXRbMV1bMF18fHRbMF1bMV09PT10WzFdWzFdfXZhciBSMz1NYXRoLlBJLFQzPTIqUjMsRDM9MWUtNixJMz1UMy1EMztmdW5jdGlvbiBOMygpe3RoaXMuX3gwPXRoaXMuX3kwPXRoaXMuX3gxPXRoaXMuX3kxPW51bGwsdGhpcy5fPSIifWZ1bmN0aW9uIEYzKCl7cmV0dXJuIG5ldyBOM31OMy5wcm90b3R5cGU9RjMucHJvdG90eXBlPXtjb25zdHJ1Y3RvcjpOMyxtb3ZlVG86ZnVuY3Rpb24odCxuKXt0aGlzLl8rPSJNIisodGhpcy5feDA9dGhpcy5feDE9K3QpKyIsIisodGhpcy5feTA9dGhpcy5feTE9K24pfSxjbG9zZVBhdGg6ZnVuY3Rpb24oKXtudWxsIT09dGhpcy5feDEmJih0aGlzLl94MT10aGlzLl94MCx0aGlzLl95MT10aGlzLl95MCx0aGlzLl8rPSJaIil9LGxpbmVUbzpmdW5jdGlvbih0LG4pe3RoaXMuXys9IkwiKyh0aGlzLl94MT0rdCkrIiwiKyh0aGlzLl95MT0rbil9LHF1YWRyYXRpY0N1cnZlVG86ZnVuY3Rpb24odCxuLGUsYSl7dGhpcy5fKz0iUSIrICt0KyIsIisgK24rIiwiKyh0aGlzLl94MT0rZSkrIiwiKyh0aGlzLl95MT0rYSl9LGJlemllckN1cnZlVG86ZnVuY3Rpb24odCxuLGUsYSxvLHIpe3RoaXMuXys9IkMiKyArdCsiLCIrICtuKyIsIisgK2UrIiwiKyArYSsiLCIrKHRoaXMuX3gxPStvKSsiLCIrKHRoaXMuX3kxPStyKX0sYXJjVG86ZnVuY3Rpb24odCxuLGUsYSxvKXt2YXIgcj10aGlzLl94MSxpPXRoaXMuX3kxLGM9KGU9K2UpLSh0PSt0KSxzPShhPSthKS0obj0rbiksbD1yLXQsbT1pLW4sZD1sKmwrbSptO2lmKChvPStvKTwwKXRocm93IG5ldyBFcnJvcigibmVnYXRpdmUgcmFkaXVzOiAiK28pO2lmKG51bGw9PT10aGlzLl94MSl0aGlzLl8rPSJNIisodGhpcy5feDE9dCkrIiwiKyh0aGlzLl95MT1uKTtlbHNlIGlmKGQ+RDMpaWYoTWF0aC5hYnMobSpjLXMqbCk+RDMmJm8pe3ZhciBnPWUtcixwPWEtaSxiPWMqYytzKnMsdT1nKmcrcCpwLGY9TWF0aC5zcXJ0KGIpLGg9TWF0aC5zcXJ0KGQpLF89bypNYXRoLnRhbigoUjMtTWF0aC5hY29zKChiK2QtdSkvKDIqZipoKSkpLzIpLEM9Xy9oLE09Xy9mO01hdGguYWJzKEMtMSk+RDMmJih0aGlzLl8rPSJMIisodCtDKmwpKyIsIisobitDKm0pKSx0aGlzLl8rPSJBIitvKyIsIitvKyIsMCwwLCIrICsobSpnPmwqcCkrIiwiKyh0aGlzLl94MT10K00qYykrIiwiKyh0aGlzLl95MT1uK00qcyl9ZWxzZSB0aGlzLl8rPSJMIisodGhpcy5feDE9dCkrIiwiKyh0aGlzLl95MT1uKX0sYXJjOmZ1bmN0aW9uKHQsbixlLGEsbyxyKXt0PSt0LG49K24scj0hIXI7dmFyIGk9KGU9K2UpKk1hdGguY29zKGEpLGM9ZSpNYXRoLnNpbihhKSxzPXQraSxsPW4rYyxtPTFecixkPXI/YS1vOm8tYTtpZihlPDApdGhyb3cgbmV3IEVycm9yKCJuZWdhdGl2ZSByYWRpdXM6ICIrZSk7bnVsbD09PXRoaXMuX3gxP3RoaXMuXys9Ik0iK3MrIiwiK2w6KE1hdGguYWJzKHRoaXMuX3gxLXMpPkQzfHxNYXRoLmFicyh0aGlzLl95MS1sKT5EMykmJih0aGlzLl8rPSJMIitzKyIsIitsKSxlJiYoZDwwJiYoZD1kJVQzK1QzKSxkPkkzP3RoaXMuXys9IkEiK2UrIiwiK2UrIiwwLDEsIittKyIsIisodC1pKSsiLCIrKG4tYykrIkEiK2UrIiwiK2UrIiwwLDEsIittKyIsIisodGhpcy5feDE9cykrIiwiKyh0aGlzLl95MT1sKTpkPkQzJiYodGhpcy5fKz0iQSIrZSsiLCIrZSsiLDAsIisgKyhkPj1SMykrIiwiK20rIiwiKyh0aGlzLl94MT10K2UqTWF0aC5jb3MobykpKyIsIisodGhpcy5feTE9bitlKk1hdGguc2luKG8pKSkpfSxyZWN0OmZ1bmN0aW9uKHQsbixlLGEpe3RoaXMuXys9Ik0iKyh0aGlzLl94MD10aGlzLl94MT0rdCkrIiwiKyh0aGlzLl95MD10aGlzLl95MT0rbikrImgiKyArZSsidiIrICthKyJoIistZSsiWiJ9LHRvU3RyaW5nOmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuX319O3ZhciBMMz0iJCI7ZnVuY3Rpb24gSDMoKXt9ZnVuY3Rpb24gQjModCxuKXt2YXIgZT1uZXcgSDM7aWYodCBpbnN0YW5jZW9mIEgzKXQuZWFjaCgoZnVuY3Rpb24odCxuKXtlLnNldChuLHQpfSkpO2Vsc2UgaWYoQXJyYXkuaXNBcnJheSh0KSl7dmFyIGEsbz0tMSxyPXQubGVuZ3RoO2lmKG51bGw9PW4pZm9yKDsrK288cjspZS5zZXQobyx0W29dKTtlbHNlIGZvcig7KytvPHI7KWUuc2V0KG4oYT10W29dLG8sdCksYSl9ZWxzZSBpZih0KWZvcih2YXIgaSBpbiB0KWUuc2V0KGksdFtpXSk7cmV0dXJuIGV9ZnVuY3Rpb24gVjMoKXt9SDMucHJvdG90eXBlPUIzLnByb3RvdHlwZT17Y29uc3RydWN0b3I6SDMsaGFzOmZ1bmN0aW9uKHQpe3JldHVybiBMMyt0IGluIHRoaXN9LGdldDpmdW5jdGlvbih0KXtyZXR1cm4gdGhpc1tMMyt0XX0sc2V0OmZ1bmN0aW9uKHQsbil7cmV0dXJuIHRoaXNbTDMrdF09bix0aGlzfSxyZW1vdmU6ZnVuY3Rpb24odCl7dmFyIG49TDMrdDtyZXR1cm4gbiBpbiB0aGlzJiZkZWxldGUgdGhpc1tuXX0sY2xlYXI6ZnVuY3Rpb24oKXtmb3IodmFyIHQgaW4gdGhpcyl0WzBdPT09TDMmJmRlbGV0ZSB0aGlzW3RdfSxrZXlzOmZ1bmN0aW9uKCl7dmFyIHQ9W107Zm9yKHZhciBuIGluIHRoaXMpblswXT09PUwzJiZ0LnB1c2gobi5zbGljZSgxKSk7cmV0dXJuIHR9LHZhbHVlczpmdW5jdGlvbigpe3ZhciB0PVtdO2Zvcih2YXIgbiBpbiB0aGlzKW5bMF09PT1MMyYmdC5wdXNoKHRoaXNbbl0pO3JldHVybiB0fSxlbnRyaWVzOmZ1bmN0aW9uKCl7dmFyIHQ9W107Zm9yKHZhciBuIGluIHRoaXMpblswXT09PUwzJiZ0LnB1c2goe2tleTpuLnNsaWNlKDEpLHZhbHVlOnRoaXNbbl19KTtyZXR1cm4gdH0sc2l6ZTpmdW5jdGlvbigpe3ZhciB0PTA7Zm9yKHZhciBuIGluIHRoaXMpblswXT09PUwzJiYrK3Q7cmV0dXJuIHR9LGVtcHR5OmZ1bmN0aW9uKCl7Zm9yKHZhciB0IGluIHRoaXMpaWYodFswXT09PUwzKXJldHVybiExO3JldHVybiEwfSxlYWNoOmZ1bmN0aW9uKHQpe2Zvcih2YXIgbiBpbiB0aGlzKW5bMF09PT1MMyYmdCh0aGlzW25dLG4uc2xpY2UoMSksdGhpcyl9fTt2YXIgajM9QjMucHJvdG90eXBlO2Z1bmN0aW9uIFUzKHQsbil7aWYoKGU9KHQ9bj90LnRvRXhwb25lbnRpYWwobi0xKTp0LnRvRXhwb25lbnRpYWwoKSkuaW5kZXhPZigiZSIpKTwwKXJldHVybiBudWxsO3ZhciBlLGE9dC5zbGljZSgwLGUpO3JldHVyblthLmxlbmd0aD4xP2FbMF0rYS5zbGljZSgyKTphLCt0LnNsaWNlKGUrMSldfWZ1bmN0aW9uIFczKHQpe3JldHVybih0PVUzKE1hdGguYWJzKHQpKSk/dFsxXTpOYU59VjMucHJvdG90eXBlPXtjb25zdHJ1Y3RvcjpWMyxoYXM6ajMuaGFzLGFkZDpmdW5jdGlvbih0KXtyZXR1cm4gdGhpc1tMMysodCs9IiIpXT10LHRoaXN9LHJlbW92ZTpqMy5yZW1vdmUsY2xlYXI6ajMuY2xlYXIsdmFsdWVzOmozLmtleXMsc2l6ZTpqMy5zaXplLGVtcHR5OmozLmVtcHR5LGVhY2g6ajMuZWFjaH07dmFyIEczLFkzPS9eKD86KC4pPyhbPD49Xl0pKT8oWytcLSggXSk/KFskI10pPygwKT8oXGQrKT8oLCk/KFwuXGQrKT8ofik/KFthLXolXSk/JC9pO2Z1bmN0aW9uIHEzKHQpe2lmKCEobj1ZMy5leGVjKHQpKSl0aHJvdyBuZXcgRXJyb3IoImludmFsaWQgZm9ybWF0OiAiK3QpO3ZhciBuO3JldHVybiBuZXcgWjMoe2ZpbGw6blsxXSxhbGlnbjpuWzJdLHNpZ246blszXSxzeW1ib2w6bls0XSx6ZXJvOm5bNV0sd2lkdGg6bls2XSxjb21tYTpuWzddLHByZWNpc2lvbjpuWzhdJiZuWzhdLnNsaWNlKDEpLHRyaW06bls5XSx0eXBlOm5bMTBdfSl9ZnVuY3Rpb24gWjModCl7dGhpcy5maWxsPXZvaWQgMD09PXQuZmlsbD8iICI6dC5maWxsKyIiLHRoaXMuYWxpZ249dm9pZCAwPT09dC5hbGlnbj8iPiI6dC5hbGlnbisiIix0aGlzLnNpZ249dm9pZCAwPT09dC5zaWduPyItIjp0LnNpZ24rIiIsdGhpcy5zeW1ib2w9dm9pZCAwPT09dC5zeW1ib2w/IiI6dC5zeW1ib2wrIiIsdGhpcy56ZXJvPSEhdC56ZXJvLHRoaXMud2lkdGg9dm9pZCAwPT09dC53aWR0aD92b2lkIDA6K3Qud2lkdGgsdGhpcy5jb21tYT0hIXQuY29tbWEsdGhpcy5wcmVjaXNpb249dm9pZCAwPT09dC5wcmVjaXNpb24/dm9pZCAwOit0LnByZWNpc2lvbix0aGlzLnRyaW09ISF0LnRyaW0sdGhpcy50eXBlPXZvaWQgMD09PXQudHlwZT8iIjp0LnR5cGUrIiJ9ZnVuY3Rpb24gWDModCxuKXt2YXIgZT1VMyh0LG4pO2lmKCFlKXJldHVybiB0KyIiO3ZhciBhPWVbMF0sbz1lWzFdO3JldHVybiBvPDA/IjAuIituZXcgQXJyYXkoLW8pLmpvaW4oIjAiKSthOmEubGVuZ3RoPm8rMT9hLnNsaWNlKDAsbysxKSsiLiIrYS5zbGljZShvKzEpOmErbmV3IEFycmF5KG8tYS5sZW5ndGgrMikuam9pbigiMCIpfXEzLnByb3RvdHlwZT1aMy5wcm90b3R5cGUsWjMucHJvdG90eXBlLnRvU3RyaW5nPWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuZmlsbCt0aGlzLmFsaWduK3RoaXMuc2lnbit0aGlzLnN5bWJvbCsodGhpcy56ZXJvPyIwIjoiIikrKHZvaWQgMD09PXRoaXMud2lkdGg/IiI6TWF0aC5tYXgoMSwwfHRoaXMud2lkdGgpKSsodGhpcy5jb21tYT8iLCI6IiIpKyh2b2lkIDA9PT10aGlzLnByZWNpc2lvbj8iIjoiLiIrTWF0aC5tYXgoMCwwfHRoaXMucHJlY2lzaW9uKSkrKHRoaXMudHJpbT8ifiI6IiIpK3RoaXMudHlwZX07dmFyIEozPXsiJSI6ZnVuY3Rpb24odCxuKXtyZXR1cm4oMTAwKnQpLnRvRml4ZWQobil9LGI6ZnVuY3Rpb24odCl7cmV0dXJuIE1hdGgucm91bmQodCkudG9TdHJpbmcoMil9LGM6ZnVuY3Rpb24odCl7cmV0dXJuIHQrIiJ9LGQ6ZnVuY3Rpb24odCl7cmV0dXJuIE1hdGgucm91bmQodCkudG9TdHJpbmcoMTApfSxlOmZ1bmN0aW9uKHQsbil7cmV0dXJuIHQudG9FeHBvbmVudGlhbChuKX0sZjpmdW5jdGlvbih0LG4pe3JldHVybiB0LnRvRml4ZWQobil9LGc6ZnVuY3Rpb24odCxuKXtyZXR1cm4gdC50b1ByZWNpc2lvbihuKX0sbzpmdW5jdGlvbih0KXtyZXR1cm4gTWF0aC5yb3VuZCh0KS50b1N0cmluZyg4KX0scDpmdW5jdGlvbih0LG4pe3JldHVybiBYMygxMDAqdCxuKX0scjpYMyxzOmZ1bmN0aW9uIFEzKHQsbil7dmFyIGU9VTModCxuKTtpZighZSlyZXR1cm4gdCsiIjt2YXIgYT1lWzBdLG89ZVsxXSxyPW8tKEczPTMqTWF0aC5tYXgoLTgsTWF0aC5taW4oOCxNYXRoLmZsb29yKG8vMykpKSkrMSxpPWEubGVuZ3RoO3JldHVybiByPT09aT9hOnI+aT9hK25ldyBBcnJheShyLWkrMSkuam9pbigiMCIpOnI+MD9hLnNsaWNlKDAscikrIi4iK2Euc2xpY2Uocik6IjAuIituZXcgQXJyYXkoMS1yKS5qb2luKCIwIikrVTModCxNYXRoLm1heCgwLG4rci0xKSlbMF19LFg6ZnVuY3Rpb24odCl7cmV0dXJuIE1hdGgucm91bmQodCkudG9TdHJpbmcoMTYpLnRvVXBwZXJDYXNlKCl9LHg6ZnVuY3Rpb24odCl7cmV0dXJuIE1hdGgucm91bmQodCkudG9TdHJpbmcoMTYpfX07ZnVuY3Rpb24gSzModCl7cmV0dXJuIHR9dmFyICQzLHQ2LG42LGU2PUFycmF5LnByb3RvdHlwZS5tYXAsYTY9WyJ5IiwieiIsImEiLCJmIiwicCIsIm4iLCLCtSIsIm0iLCIiLCJrIiwiTSIsIkciLCJUIiwiUCIsIkUiLCJaIiwiWSJdO2Z1bmN0aW9uIG82KHQsbil7c3dpdGNoKGFyZ3VtZW50cy5sZW5ndGgpe2Nhc2UgMDpicmVhaztjYXNlIDE6dGhpcy5yYW5nZSh0KTticmVhaztkZWZhdWx0OnRoaXMucmFuZ2UobikuZG9tYWluKHQpfXJldHVybiB0aGlzfSEoZnVuY3Rpb24gcjYodCl7JDM9KGZ1bmN0aW9uIG4odCl7dmFyIG49dm9pZCAwPT09dC5ncm91cGluZ3x8dm9pZCAwPT09dC50aG91c2FuZHM/SzM6KGZ1bmN0aW9uIGUodCxuKXtyZXR1cm4gZnVuY3Rpb24oZSxhKXtmb3IodmFyIG89ZS5sZW5ndGgscj1bXSxpPTAsYz10WzBdLHM9MDtvPjAmJmM+MCYmKHMrYysxPmEmJihjPU1hdGgubWF4KDEsYS1zKSksci5wdXNoKGUuc3Vic3RyaW5nKG8tPWMsbytjKSksISgocys9YysxKT5hKSk7KWM9dFtpPShpKzEpJXQubGVuZ3RoXTtyZXR1cm4gci5yZXZlcnNlKCkuam9pbihuKX19KShlNi5jYWxsKHQuZ3JvdXBpbmcsTnVtYmVyKSx0LnRob3VzYW5kcysiIiksYT12b2lkIDA9PT10LmN1cnJlbmN5PyIiOnQuY3VycmVuY3lbMF0rIiIsbz12b2lkIDA9PT10LmN1cnJlbmN5PyIiOnQuY3VycmVuY3lbMV0rIiIscj12b2lkIDA9PT10LmRlY2ltYWw/Ii4iOnQuZGVjaW1hbCsiIixpPXZvaWQgMD09PXQubnVtZXJhbHM/SzM6KGZ1bmN0aW9uIGModCl7cmV0dXJuIGZ1bmN0aW9uKG4pe3JldHVybiBuLnJlcGxhY2UoL1swLTldL2csKGZ1bmN0aW9uKG4pe3JldHVybiB0WytuXX0pKX19KShlNi5jYWxsKHQubnVtZXJhbHMsU3RyaW5nKSkscz12b2lkIDA9PT10LnBlcmNlbnQ/IiUiOnQucGVyY2VudCsiIixsPXZvaWQgMD09PXQubWludXM/Ii0iOnQubWludXMrIiIsbT12b2lkIDA9PT10Lm5hbj8iTmFOIjp0Lm5hbisiIjtmdW5jdGlvbiBkKHQpe3ZhciBlPSh0PXEzKHQpKS5maWxsLGM9dC5hbGlnbixkPXQuc2lnbixnPXQuc3ltYm9sLHA9dC56ZXJvLGI9dC53aWR0aCx1PXQuY29tbWEsZj10LnByZWNpc2lvbixoPXQudHJpbSxfPXQudHlwZTsibiI9PT1fPyh1PSEwLF89ImciKTpKM1tfXXx8KHZvaWQgMD09PWYmJihmPTEyKSxoPSEwLF89ImciKSwocHx8IjAiPT09ZSYmIj0iPT09YykmJihwPSEwLGU9IjAiLGM9Ij0iKTt2YXIgQz0iJCI9PT1nP2E6IiMiPT09ZyYmL1tib3hYXS8udGVzdChfKT8iMCIrXy50b0xvd2VyQ2FzZSgpOiIiLE09IiQiPT09Zz9vOi9bJXBdLy50ZXN0KF8pP3M6IiIsTz1KM1tfXSxQPS9bZGVmZ3BycyVdLy50ZXN0KF8pO2Z1bmN0aW9uIHgodCl7dmFyIGEsbyxzLGc9Qyx4PU07aWYoImMiPT09Xyl4PU8odCkreCx0PSIiO2Vsc2V7dmFyIHk9KHQ9K3QpPDB8fDEvdDwwO2lmKHQ9aXNOYU4odCk/bTpPKE1hdGguYWJzKHQpLGYpLGgmJih0PShmdW5jdGlvbiBrKHQpe3Q6Zm9yKHZhciBuLGU9dC5sZW5ndGgsYT0xLG89LTE7YTxlOysrYSlzd2l0Y2godFthXSl7Y2FzZSIuIjpvPW49YTticmVhaztjYXNlIjAiOjA9PT1vJiYobz1hKSxuPWE7YnJlYWs7ZGVmYXVsdDppZighK3RbYV0pYnJlYWsgdDtvPjAmJihvPTApfXJldHVybiBvPjA/dC5zbGljZSgwLG8pK3Quc2xpY2UobisxKTp0fSkodCkpLHkmJjA9PSt0JiYiKyIhPT1kJiYoeT0hMSksZz0oeT8iKCI9PT1kP2Q6bDoiLSI9PT1kfHwiKCI9PT1kPyIiOmQpK2cseD0oInMiPT09Xz9hNls4K0czLzNdOiIiKSt4Kyh5JiYiKCI9PT1kPyIpIjoiIiksUClmb3IoYT0tMSxvPXQubGVuZ3RoOysrYTxvOylpZig0OD4ocz10LmNoYXJDb2RlQXQoYSkpfHxzPjU3KXt4PSg0Nj09PXM/cit0LnNsaWNlKGErMSk6dC5zbGljZShhKSkreCx0PXQuc2xpY2UoMCxhKTticmVha319dSYmIXAmJih0PW4odCwxLzApKTt2YXIgdj1nLmxlbmd0aCt0Lmxlbmd0aCt4Lmxlbmd0aCx3PXY8Yj9uZXcgQXJyYXkoYi12KzEpLmpvaW4oZSk6IiI7c3dpdGNoKHUmJnAmJih0PW4odyt0LHcubGVuZ3RoP2IteC5sZW5ndGg6MS8wKSx3PSIiKSxjKXtjYXNlIjwiOnQ9Zyt0K3grdzticmVhaztjYXNlIj0iOnQ9Zyt3K3QreDticmVhaztjYXNlIl4iOnQ9dy5zbGljZSgwLHY9dy5sZW5ndGg+PjEpK2crdCt4K3cuc2xpY2Uodik7YnJlYWs7ZGVmYXVsdDp0PXcrZyt0K3h9cmV0dXJuIGkodCl9cmV0dXJuIGY9dm9pZCAwPT09Zj82Oi9bZ3Byc10vLnRlc3QoXyk/TWF0aC5tYXgoMSxNYXRoLm1pbigyMSxmKSk6TWF0aC5tYXgoMCxNYXRoLm1pbigyMCxmKSkseC50b1N0cmluZz1mdW5jdGlvbigpe3JldHVybiB0KyIifSx4fXJldHVybntmb3JtYXQ6ZCxmb3JtYXRQcmVmaXg6ZnVuY3Rpb24gZyh0LG4pe3ZhciBlPWQoKCh0PXEzKHQpKS50eXBlPSJmIix0KSksYT0zKk1hdGgubWF4KC04LE1hdGgubWluKDgsTWF0aC5mbG9vcihXMyhuKS8zKSkpLG89TWF0aC5wb3coMTAsLWEpLHI9YTZbOCthLzNdO3JldHVybiBmdW5jdGlvbih0KXtyZXR1cm4gZShvKnQpK3J9fX19KSh0KSx0Nj0kMy5mb3JtYXQsbjY9JDMuZm9ybWF0UHJlZml4fSkoe2RlY2ltYWw6Ii4iLHRob3VzYW5kczoiLCIsZ3JvdXBpbmc6WzNdLGN1cnJlbmN5OlsiJCIsIiJdLG1pbnVzOiItIn0pO3ZhciBpNj1BcnJheS5wcm90b3R5cGUsYzY9aTYubWFwLHM2PWk2LnNsaWNlLGw2PXtuYW1lOiJpbXBsaWNpdCJ9O2Z1bmN0aW9uIG02KCl7dmFyIHQ9QjMoKSxuPVtdLGU9W10sYT1sNjtmdW5jdGlvbiBvKG8pe3ZhciByPW8rIiIsaT10LmdldChyKTtpZighaSl7aWYoYSE9PWw2KXJldHVybiBhO3Quc2V0KHIsaT1uLnB1c2gobykpfXJldHVybiBlWyhpLTEpJWUubGVuZ3RoXX1yZXR1cm4gby5kb21haW49ZnVuY3Rpb24oZSl7aWYoIWFyZ3VtZW50cy5sZW5ndGgpcmV0dXJuIG4uc2xpY2UoKTtuPVtdLHQ9QjMoKTtmb3IodmFyIGEscixpPS0xLGM9ZS5sZW5ndGg7KytpPGM7KXQuaGFzKHI9KGE9ZVtpXSkrIiIpfHx0LnNldChyLG4ucHVzaChhKSk7cmV0dXJuIG99LG8ucmFuZ2U9ZnVuY3Rpb24odCl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KGU9czYuY2FsbCh0KSxvKTplLnNsaWNlKCl9LG8udW5rbm93bj1mdW5jdGlvbih0KXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8oYT10LG8pOmF9LG8uY29weT1mdW5jdGlvbigpe3JldHVybiBtNihuLGUpLnVua25vd24oYSl9LG82LmFwcGx5KG8sYXJndW1lbnRzKSxvfWZ1bmN0aW9uIGQ2KCl7dmFyIHQsbixlPW02KCkudW5rbm93bih2b2lkIDApLGE9ZS5kb21haW4sbz1lLnJhbmdlLHI9WzAsMV0saT0hMSxjPTAscz0wLGw9LjU7ZnVuY3Rpb24gbSgpe3ZhciBlPWEoKS5sZW5ndGgsbT1yWzFdPHJbMF0sZD1yW20tMF0sZz1yWzEtbV07dD0oZy1kKS9NYXRoLm1heCgxLGUtYysyKnMpLGkmJih0PU1hdGguZmxvb3IodCkpLGQrPShnLWQtdCooZS1jKSkqbCxuPXQqKDEtYyksaSYmKGQ9TWF0aC5yb3VuZChkKSxuPU1hdGgucm91bmQobikpO3ZhciBwPWwwKGUpLm1hcCgoZnVuY3Rpb24obil7cmV0dXJuIGQrdCpufSkpO3JldHVybiBvKG0/cC5yZXZlcnNlKCk6cCl9cmV0dXJuIGRlbGV0ZSBlLnVua25vd24sZS5kb21haW49ZnVuY3Rpb24odCl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KGEodCksbSgpKTphKCl9LGUucmFuZ2U9ZnVuY3Rpb24odCl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KHI9Wyt0WzBdLCt0WzFdXSxtKCkpOnIuc2xpY2UoKX0sZS5yYW5nZVJvdW5kPWZ1bmN0aW9uKHQpe3JldHVybiByPVsrdFswXSwrdFsxXV0saT0hMCxtKCl9LGUuYmFuZHdpZHRoPWZ1bmN0aW9uKCl7cmV0dXJuIG59LGUuc3RlcD1mdW5jdGlvbigpe3JldHVybiB0fSxlLnJvdW5kPWZ1bmN0aW9uKHQpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyhpPSEhdCxtKCkpOml9LGUucGFkZGluZz1mdW5jdGlvbih0KXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8oYz1NYXRoLm1pbigxLHM9K3QpLG0oKSk6Y30sZS5wYWRkaW5nSW5uZXI9ZnVuY3Rpb24odCl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KGM9TWF0aC5taW4oMSx0KSxtKCkpOmN9LGUucGFkZGluZ091dGVyPWZ1bmN0aW9uKHQpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyhzPSt0LG0oKSk6c30sZS5hbGlnbj1mdW5jdGlvbih0KXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8obD1NYXRoLm1heCgwLE1hdGgubWluKDEsdCkpLG0oKSk6bH0sZS5jb3B5PWZ1bmN0aW9uKCl7cmV0dXJuIGQ2KGEoKSxyKS5yb3VuZChpKS5wYWRkaW5nSW5uZXIoYykucGFkZGluZ091dGVyKHMpLmFsaWduKGwpfSxvNi5hcHBseShtKCksYXJndW1lbnRzKX1mdW5jdGlvbiBnNih0KXt2YXIgbj10LmNvcHk7cmV0dXJuIHQucGFkZGluZz10LnBhZGRpbmdPdXRlcixkZWxldGUgdC5wYWRkaW5nSW5uZXIsZGVsZXRlIHQucGFkZGluZ091dGVyLHQuY29weT1mdW5jdGlvbigpe3JldHVybiBnNihuKCkpfSx0fWZ1bmN0aW9uIHA2KCl7cmV0dXJuIGc2KGQ2LmFwcGx5KG51bGwsYXJndW1lbnRzKS5wYWRkaW5nSW5uZXIoMSkpfWZ1bmN0aW9uIGI2KHQpe3JldHVybit0fXZhciB1Nj1bMCwxXTtmdW5jdGlvbiBmNih0KXtyZXR1cm4gdH1mdW5jdGlvbiBoNih0LG4pe3JldHVybihuLT10PSt0KT9mdW5jdGlvbihlKXtyZXR1cm4oZS10KS9ufTooZnVuY3Rpb24gZSh0KXtyZXR1cm4gZnVuY3Rpb24oKXtyZXR1cm4gdH19KShpc05hTihuKT9OYU46LjUpfWZ1bmN0aW9uIF82KHQpe3ZhciBuLGU9dFswXSxhPXRbdC5sZW5ndGgtMV07cmV0dXJuIGU+YSYmKG49ZSxlPWEsYT1uKSxmdW5jdGlvbih0KXtyZXR1cm4gTWF0aC5tYXgoZSxNYXRoLm1pbihhLHQpKX19ZnVuY3Rpb24gQzYodCxuLGUpe3ZhciBhPXRbMF0sbz10WzFdLHI9blswXSxpPW5bMV07cmV0dXJuIG88YT8oYT1oNihvLGEpLHI9ZShpLHIpKTooYT1oNihhLG8pLHI9ZShyLGkpKSxmdW5jdGlvbih0KXtyZXR1cm4gcihhKHQpKX19ZnVuY3Rpb24gTTYodCxuLGUpe3ZhciBhPU1hdGgubWluKHQubGVuZ3RoLG4ubGVuZ3RoKS0xLG89bmV3IEFycmF5KGEpLHI9bmV3IEFycmF5KGEpLGk9LTE7Zm9yKHRbYV08dFswXSYmKHQ9dC5zbGljZSgpLnJldmVyc2UoKSxuPW4uc2xpY2UoKS5yZXZlcnNlKCkpOysraTxhOylvW2ldPWg2KHRbaV0sdFtpKzFdKSxyW2ldPWUobltpXSxuW2krMV0pO3JldHVybiBmdW5jdGlvbihuKXt2YXIgZT1vMCh0LG4sMSxhKS0xO3JldHVybiByW2VdKG9bZV0obikpfX1mdW5jdGlvbiBPNih0LG4pe3JldHVybiBuLmRvbWFpbih0LmRvbWFpbigpKS5yYW5nZSh0LnJhbmdlKCkpLmludGVycG9sYXRlKHQuaW50ZXJwb2xhdGUoKSkuY2xhbXAodC5jbGFtcCgpKS51bmtub3duKHQudW5rbm93bigpKX1mdW5jdGlvbiBQNigpe3ZhciB0LG4sZSxhLG8scixpPXU2LGM9dTYscz1NNSxsPWY2O2Z1bmN0aW9uIG0oKXtyZXR1cm4gYT1NYXRoLm1pbihpLmxlbmd0aCxjLmxlbmd0aCk+Mj9NNjpDNixvPXI9bnVsbCxkfWZ1bmN0aW9uIGQobil7cmV0dXJuIGlzTmFOKG49K24pP2U6KG98fChvPWEoaS5tYXAodCksYyxzKSkpKHQobChuKSkpfXJldHVybiBkLmludmVydD1mdW5jdGlvbihlKXtyZXR1cm4gbChuKChyfHwocj1hKGMsaS5tYXAodCksdTUpKSkoZSkpKX0sZC5kb21haW49ZnVuY3Rpb24odCl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KGk9YzYuY2FsbCh0LGI2KSxsPT09ZjZ8fChsPV82KGkpKSxtKCkpOmkuc2xpY2UoKX0sZC5yYW5nZT1mdW5jdGlvbih0KXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8oYz1zNi5jYWxsKHQpLG0oKSk6Yy5zbGljZSgpfSxkLnJhbmdlUm91bmQ9ZnVuY3Rpb24odCl7cmV0dXJuIGM9czYuY2FsbCh0KSxzPU81LG0oKX0sZC5jbGFtcD1mdW5jdGlvbih0KXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8obD10P182KGkpOmY2LGQpOmwhPT1mNn0sZC5pbnRlcnBvbGF0ZT1mdW5jdGlvbih0KXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8ocz10LG0oKSk6c30sZC51bmtub3duPWZ1bmN0aW9uKHQpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyhlPXQsZCk6ZX0sZnVuY3Rpb24oZSxhKXtyZXR1cm4gdD1lLG49YSxtKCl9fWZ1bmN0aW9uIHg2KHQsbil7cmV0dXJuIFA2KCkodCxuKX1mdW5jdGlvbiB5Nih0KXt2YXIgbj10LmRvbWFpbjtyZXR1cm4gdC50aWNrcz1mdW5jdGlvbih0KXt2YXIgZT1uKCk7cmV0dXJuIHAwKGVbMF0sZVtlLmxlbmd0aC0xXSxudWxsPT10PzEwOnQpfSx0LnRpY2tGb3JtYXQ9ZnVuY3Rpb24odCxlKXt2YXIgYT1uKCk7cmV0dXJuKGZ1bmN0aW9uIG8odCxuLGUsYSl7dmFyIG8scj11MCh0LG4sZSk7c3dpdGNoKChhPXEzKG51bGw9PWE/IixmIjphKSkudHlwZSl7Y2FzZSJzIjp2YXIgaT1NYXRoLm1heChNYXRoLmFicyh0KSxNYXRoLmFicyhuKSk7cmV0dXJuIG51bGwhPWEucHJlY2lzaW9ufHxpc05hTihvPShmdW5jdGlvbiBjKHQsbil7cmV0dXJuIE1hdGgubWF4KDAsMypNYXRoLm1heCgtOCxNYXRoLm1pbig4LE1hdGguZmxvb3IoVzMobikvMykpKS1XMyhNYXRoLmFicyh0KSkpfSkocixpKSl8fChhLnByZWNpc2lvbj1vKSxuNihhLGkpO2Nhc2UiIjpjYXNlImUiOmNhc2UiZyI6Y2FzZSJwIjpjYXNlInIiOm51bGwhPWEucHJlY2lzaW9ufHxpc05hTihvPShmdW5jdGlvbiBzKHQsbil7cmV0dXJuIHQ9TWF0aC5hYnModCksbj1NYXRoLmFicyhuKS10LE1hdGgubWF4KDAsVzMobiktVzModCkpKzF9KShyLE1hdGgubWF4KE1hdGguYWJzKHQpLE1hdGguYWJzKG4pKSkpfHwoYS5wcmVjaXNpb249by0oImUiPT09YS50eXBlKSk7YnJlYWs7Y2FzZSJmIjpjYXNlIiUiOm51bGwhPWEucHJlY2lzaW9ufHxpc05hTihvPShmdW5jdGlvbiBsKHQpe3JldHVybiBNYXRoLm1heCgwLC1XMyhNYXRoLmFicyh0KSkpfSkocikpfHwoYS5wcmVjaXNpb249by0yKigiJSI9PT1hLnR5cGUpKX1yZXR1cm4gdDYoYSl9KShhWzBdLGFbYS5sZW5ndGgtMV0sbnVsbD09dD8xMDp0LGUpfSx0Lm5pY2U9ZnVuY3Rpb24oZSl7bnVsbD09ZSYmKGU9MTApO3ZhciBhLG89bigpLHI9MCxpPW8ubGVuZ3RoLTEsYz1vW3JdLHM9b1tpXTtyZXR1cm4gczxjJiYoYT1jLGM9cyxzPWEsYT1yLHI9aSxpPWEpLChhPWIwKGMscyxlKSk+MD9hPWIwKGM9TWF0aC5mbG9vcihjL2EpKmEscz1NYXRoLmNlaWwocy9hKSphLGUpOmE8MCYmKGE9YjAoYz1NYXRoLmNlaWwoYyphKS9hLHM9TWF0aC5mbG9vcihzKmEpL2EsZSkpLGE+MD8ob1tyXT1NYXRoLmZsb29yKGMvYSkqYSxvW2ldPU1hdGguY2VpbChzL2EpKmEsbihvKSk6YTwwJiYob1tyXT1NYXRoLmNlaWwoYyphKS9hLG9baV09TWF0aC5mbG9vcihzKmEpL2EsbihvKSksdH0sdH1mdW5jdGlvbiBrNigpe3ZhciB0PXg2KGY2LGY2KTtyZXR1cm4gdC5jb3B5PWZ1bmN0aW9uKCl7cmV0dXJuIE82KHQsazYoKSl9LG82LmFwcGx5KHQsYXJndW1lbnRzKSx5Nih0KX1mdW5jdGlvbiB2Nih0LG4pe3ZhciBlLGE9MCxvPSh0PXQuc2xpY2UoKSkubGVuZ3RoLTEscj10W2FdLGk9dFtvXTtyZXR1cm4gaTxyJiYoZT1hLGE9byxvPWUsZT1yLHI9aSxpPWUpLHRbYV09bi5mbG9vcihyKSx0W29dPW4uY2VpbChpKSx0fWZ1bmN0aW9uIHc2KHQpe3JldHVybiBNYXRoLmxvZyh0KX1mdW5jdGlvbiBTNih0KXtyZXR1cm4gTWF0aC5leHAodCl9ZnVuY3Rpb24gRTYodCl7cmV0dXJuLU1hdGgubG9nKC10KX1mdW5jdGlvbiBBNih0KXtyZXR1cm4tTWF0aC5leHAoLXQpfWZ1bmN0aW9uIHo2KHQpe3JldHVybiBpc0Zpbml0ZSh0KT8rKCIxZSIrdCk6dDwwPzA6dH1mdW5jdGlvbiBSNih0KXtyZXR1cm4gZnVuY3Rpb24obil7cmV0dXJuLXQoLW4pfX1mdW5jdGlvbiBUNih0KXt2YXIgbixlLGE9dCh3NixTNiksbz1hLmRvbWFpbixyPTEwO2Z1bmN0aW9uIGkoKXtyZXR1cm4gbj0oZnVuY3Rpb24gaSh0KXtyZXR1cm4gdD09PU1hdGguRT9NYXRoLmxvZzoxMD09PXQmJk1hdGgubG9nMTB8fDI9PT10JiZNYXRoLmxvZzJ8fCh0PU1hdGgubG9nKHQpLGZ1bmN0aW9uKG4pe3JldHVybiBNYXRoLmxvZyhuKS90fSl9KShyKSxlPShmdW5jdGlvbiBjKHQpe3JldHVybiAxMD09PXQ/ejY6dD09PU1hdGguRT9NYXRoLmV4cDpmdW5jdGlvbihuKXtyZXR1cm4gTWF0aC5wb3codCxuKX19KShyKSxvKClbMF08MD8obj1SNihuKSxlPVI2KGUpLHQoRTYsQTYpKTp0KHc2LFM2KSxhfXJldHVybiBhLmJhc2U9ZnVuY3Rpb24odCl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KHI9K3QsaSgpKTpyfSxhLmRvbWFpbj1mdW5jdGlvbih0KXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8obyh0KSxpKCkpOm8oKX0sYS50aWNrcz1mdW5jdGlvbih0KXt2YXIgYSxpPW8oKSxjPWlbMF0scz1pW2kubGVuZ3RoLTFdOyhhPXM8YykmJihnPWMsYz1zLHM9Zyk7dmFyIGwsbSxkLGc9bihjKSxwPW4ocyksYj1udWxsPT10PzEwOit0LHU9W107aWYoIShyJTEpJiZwLWc8Yil7aWYoZz1NYXRoLnJvdW5kKGcpLTEscD1NYXRoLnJvdW5kKHApKzEsYz4wKXtmb3IoO2c8cDsrK2cpZm9yKG09MSxsPWUoZyk7bTxyOysrbSlpZighKChkPWwqbSk8Yykpe2lmKGQ+cylicmVhazt1LnB1c2goZCl9fWVsc2UgZm9yKDtnPHA7KytnKWZvcihtPXItMSxsPWUoZyk7bT49MTstLW0paWYoISgoZD1sKm0pPGMpKXtpZihkPnMpYnJlYWs7dS5wdXNoKGQpfX1lbHNlIHU9cDAoZyxwLE1hdGgubWluKHAtZyxiKSkubWFwKGUpO3JldHVybiBhP3UucmV2ZXJzZSgpOnV9LGEudGlja0Zvcm1hdD1mdW5jdGlvbih0LG8pe2lmKG51bGw9PW8mJihvPTEwPT09cj8iLjBlIjoiLCIpLCJmdW5jdGlvbiIhPXR5cGVvZiBvJiYobz10NihvKSksdD09PTEvMClyZXR1cm4gbztudWxsPT10JiYodD0xMCk7dmFyIGk9TWF0aC5tYXgoMSxyKnQvYS50aWNrcygpLmxlbmd0aCk7cmV0dXJuIGZ1bmN0aW9uKHQpe3ZhciBhPXQvZShNYXRoLnJvdW5kKG4odCkpKTtyZXR1cm4gYSpyPHItLjUmJihhKj1yKSxhPD1pP28odCk6IiJ9fSxhLm5pY2U9ZnVuY3Rpb24oKXtyZXR1cm4gbyh2NihvKCkse2Zsb29yOmZ1bmN0aW9uKHQpe3JldHVybiBlKE1hdGguZmxvb3Iobih0KSkpfSxjZWlsOmZ1bmN0aW9uKHQpe3JldHVybiBlKE1hdGguY2VpbChuKHQpKSl9fSkpfSxhfWZ1bmN0aW9uIEQ2KCl7dmFyIHQ9VDYoUDYoKSkuZG9tYWluKFsxLDEwXSk7cmV0dXJuIHQuY29weT1mdW5jdGlvbigpe3JldHVybiBPNih0LEQ2KCkpLmJhc2UodC5iYXNlKCkpfSxvNi5hcHBseSh0LGFyZ3VtZW50cyksdH12YXIgSTY9bmV3IERhdGUsTjY9bmV3IERhdGU7ZnVuY3Rpb24gRjYodCxuLGUsYSl7ZnVuY3Rpb24gbyhuKXtyZXR1cm4gdChuPTA9PT1hcmd1bWVudHMubGVuZ3RoP25ldyBEYXRlOm5ldyBEYXRlKCtuKSksbn1yZXR1cm4gby5mbG9vcj1mdW5jdGlvbihuKXtyZXR1cm4gdChuPW5ldyBEYXRlKCtuKSksbn0sby5jZWlsPWZ1bmN0aW9uKGUpe3JldHVybiB0KGU9bmV3IERhdGUoZS0xKSksbihlLDEpLHQoZSksZX0sby5yb3VuZD1mdW5jdGlvbih0KXt2YXIgbj1vKHQpLGU9by5jZWlsKHQpO3JldHVybiB0LW48ZS10P246ZX0sby5vZmZzZXQ9ZnVuY3Rpb24odCxlKXtyZXR1cm4gbih0PW5ldyBEYXRlKCt0KSxudWxsPT1lPzE6TWF0aC5mbG9vcihlKSksdH0sby5yYW5nZT1mdW5jdGlvbihlLGEscil7dmFyIGksYz1bXTtpZihlPW8uY2VpbChlKSxyPW51bGw9PXI/MTpNYXRoLmZsb29yKHIpLCEoZTxhJiZyPjApKXJldHVybiBjO2Rve2MucHVzaChpPW5ldyBEYXRlKCtlKSksbihlLHIpLHQoZSl9d2hpbGUoaTxlJiZlPGEpO3JldHVybiBjfSxvLmZpbHRlcj1mdW5jdGlvbihlKXtyZXR1cm4gRjYoKGZ1bmN0aW9uKG4pe2lmKG4+PW4pZm9yKDt0KG4pLCFlKG4pOyluLnNldFRpbWUobi0xKX0pLChmdW5jdGlvbih0LGEpe2lmKHQ+PXQpaWYoYTwwKWZvcig7KythPD0wOylmb3IoO24odCwtMSksIWUodCk7KTtlbHNlIGZvcig7LS1hPj0wOylmb3IoO24odCwxKSwhZSh0KTspO30pKX0sZSYmKG8uY291bnQ9ZnVuY3Rpb24obixhKXtyZXR1cm4gSTYuc2V0VGltZSgrbiksTjYuc2V0VGltZSgrYSksdChJNiksdChONiksTWF0aC5mbG9vcihlKEk2LE42KSl9LG8uZXZlcnk9ZnVuY3Rpb24odCl7cmV0dXJuIHQ9TWF0aC5mbG9vcih0KSxpc0Zpbml0ZSh0KSYmdD4wP3Q+MT9vLmZpbHRlcihhP2Z1bmN0aW9uKG4pe3JldHVybiBhKG4pJXQ9PTB9OmZ1bmN0aW9uKG4pe3JldHVybiBvLmNvdW50KDAsbikldD09MH0pOm86bnVsbH0pLG99dmFyIEw2PUY2KChmdW5jdGlvbigpe30pLChmdW5jdGlvbih0LG4pe3Quc2V0VGltZSgrdCtuKX0pLChmdW5jdGlvbih0LG4pe3JldHVybiBuLXR9KSk7TDYuZXZlcnk9ZnVuY3Rpb24odCl7cmV0dXJuIHQ9TWF0aC5mbG9vcih0KSxpc0Zpbml0ZSh0KSYmdD4wP3Q+MT9GNigoZnVuY3Rpb24obil7bi5zZXRUaW1lKE1hdGguZmxvb3Iobi90KSp0KX0pLChmdW5jdGlvbihuLGUpe24uc2V0VGltZSgrbitlKnQpfSksKGZ1bmN0aW9uKG4sZSl7cmV0dXJuKGUtbikvdH0pKTpMNjpudWxsfTt2YXIgSDY9MWUzLEI2PTZlNCxWNj0zNmU1LGo2PTg2NGU1LFU2PTYwNDhlNSxXNj1GNigoZnVuY3Rpb24odCl7dC5zZXRUaW1lKHQtdC5nZXRNaWxsaXNlY29uZHMoKSl9KSwoZnVuY3Rpb24odCxuKXt0LnNldFRpbWUoK3QrbipINil9KSwoZnVuY3Rpb24odCxuKXtyZXR1cm4obi10KS9INn0pLChmdW5jdGlvbih0KXtyZXR1cm4gdC5nZXRVVENTZWNvbmRzKCl9KSksRzY9RjYoKGZ1bmN0aW9uKHQpe3Quc2V0VGltZSh0LXQuZ2V0TWlsbGlzZWNvbmRzKCktdC5nZXRTZWNvbmRzKCkqSDYpfSksKGZ1bmN0aW9uKHQsbil7dC5zZXRUaW1lKCt0K24qQjYpfSksKGZ1bmN0aW9uKHQsbil7cmV0dXJuKG4tdCkvQjZ9KSwoZnVuY3Rpb24odCl7cmV0dXJuIHQuZ2V0TWludXRlcygpfSkpLFk2PUY2KChmdW5jdGlvbih0KXt0LnNldFRpbWUodC10LmdldE1pbGxpc2Vjb25kcygpLXQuZ2V0U2Vjb25kcygpKkg2LXQuZ2V0TWludXRlcygpKkI2KX0pLChmdW5jdGlvbih0LG4pe3Quc2V0VGltZSgrdCtuKlY2KX0pLChmdW5jdGlvbih0LG4pe3JldHVybihuLXQpL1Y2fSksKGZ1bmN0aW9uKHQpe3JldHVybiB0LmdldEhvdXJzKCl9KSkscTY9RjYoKGZ1bmN0aW9uKHQpe3Quc2V0SG91cnMoMCwwLDAsMCl9KSwoZnVuY3Rpb24odCxuKXt0LnNldERhdGUodC5nZXREYXRlKCkrbil9KSwoZnVuY3Rpb24odCxuKXtyZXR1cm4obi10LShuLmdldFRpbWV6b25lT2Zmc2V0KCktdC5nZXRUaW1lem9uZU9mZnNldCgpKSpCNikvajZ9KSwoZnVuY3Rpb24odCl7cmV0dXJuIHQuZ2V0RGF0ZSgpLTF9KSk7ZnVuY3Rpb24gWjYodCl7cmV0dXJuIEY2KChmdW5jdGlvbihuKXtuLnNldERhdGUobi5nZXREYXRlKCktKG4uZ2V0RGF5KCkrNy10KSU3KSxuLnNldEhvdXJzKDAsMCwwLDApfSksKGZ1bmN0aW9uKHQsbil7dC5zZXREYXRlKHQuZ2V0RGF0ZSgpKzcqbil9KSwoZnVuY3Rpb24odCxuKXtyZXR1cm4obi10LShuLmdldFRpbWV6b25lT2Zmc2V0KCktdC5nZXRUaW1lem9uZU9mZnNldCgpKSpCNikvVTZ9KSl9dmFyIFg2PVo2KDApLEo2PVo2KDEpO1o2KDIpLFo2KDMpO3ZhciBRNj1aNig0KTtaNig1KSxaNig2KTt2YXIgSzY9RjYoKGZ1bmN0aW9uKHQpe3Quc2V0RGF0ZSgxKSx0LnNldEhvdXJzKDAsMCwwLDApfSksKGZ1bmN0aW9uKHQsbil7dC5zZXRNb250aCh0LmdldE1vbnRoKCkrbil9KSwoZnVuY3Rpb24odCxuKXtyZXR1cm4gbi5nZXRNb250aCgpLXQuZ2V0TW9udGgoKSsxMioobi5nZXRGdWxsWWVhcigpLXQuZ2V0RnVsbFllYXIoKSl9KSwoZnVuY3Rpb24odCl7cmV0dXJuIHQuZ2V0TW9udGgoKX0pKSwkNj1GNigoZnVuY3Rpb24odCl7dC5zZXRNb250aCgwLDEpLHQuc2V0SG91cnMoMCwwLDAsMCl9KSwoZnVuY3Rpb24odCxuKXt0LnNldEZ1bGxZZWFyKHQuZ2V0RnVsbFllYXIoKStuKX0pLChmdW5jdGlvbih0LG4pe3JldHVybiBuLmdldEZ1bGxZZWFyKCktdC5nZXRGdWxsWWVhcigpfSksKGZ1bmN0aW9uKHQpe3JldHVybiB0LmdldEZ1bGxZZWFyKCl9KSk7JDYuZXZlcnk9ZnVuY3Rpb24odCl7cmV0dXJuIGlzRmluaXRlKHQ9TWF0aC5mbG9vcih0KSkmJnQ+MD9GNigoZnVuY3Rpb24obil7bi5zZXRGdWxsWWVhcihNYXRoLmZsb29yKG4uZ2V0RnVsbFllYXIoKS90KSp0KSxuLnNldE1vbnRoKDAsMSksbi5zZXRIb3VycygwLDAsMCwwKX0pLChmdW5jdGlvbihuLGUpe24uc2V0RnVsbFllYXIobi5nZXRGdWxsWWVhcigpK2UqdCl9KSk6bnVsbH07dmFyIHQ3PUY2KChmdW5jdGlvbih0KXt0LnNldFVUQ0hvdXJzKDAsMCwwLDApfSksKGZ1bmN0aW9uKHQsbil7dC5zZXRVVENEYXRlKHQuZ2V0VVRDRGF0ZSgpK24pfSksKGZ1bmN0aW9uKHQsbil7cmV0dXJuKG4tdCkvajZ9KSwoZnVuY3Rpb24odCl7cmV0dXJuIHQuZ2V0VVRDRGF0ZSgpLTF9KSk7ZnVuY3Rpb24gbjcodCl7cmV0dXJuIEY2KChmdW5jdGlvbihuKXtuLnNldFVUQ0RhdGUobi5nZXRVVENEYXRlKCktKG4uZ2V0VVRDRGF5KCkrNy10KSU3KSxuLnNldFVUQ0hvdXJzKDAsMCwwLDApfSksKGZ1bmN0aW9uKHQsbil7dC5zZXRVVENEYXRlKHQuZ2V0VVRDRGF0ZSgpKzcqbil9KSwoZnVuY3Rpb24odCxuKXtyZXR1cm4obi10KS9VNn0pKX12YXIgZTc9bjcoMCksYTc9bjcoMSk7bjcoMiksbjcoMyk7dmFyIG83PW43KDQpO243KDUpLG43KDYpO3ZhciByNz1GNigoZnVuY3Rpb24odCl7dC5zZXRVVENNb250aCgwLDEpLHQuc2V0VVRDSG91cnMoMCwwLDAsMCl9KSwoZnVuY3Rpb24odCxuKXt0LnNldFVUQ0Z1bGxZZWFyKHQuZ2V0VVRDRnVsbFllYXIoKStuKX0pLChmdW5jdGlvbih0LG4pe3JldHVybiBuLmdldFVUQ0Z1bGxZZWFyKCktdC5nZXRVVENGdWxsWWVhcigpfSksKGZ1bmN0aW9uKHQpe3JldHVybiB0LmdldFVUQ0Z1bGxZZWFyKCl9KSk7ZnVuY3Rpb24gaTcodCl7aWYoMDw9dC55JiZ0Lnk8MTAwKXt2YXIgbj1uZXcgRGF0ZSgtMSx0Lm0sdC5kLHQuSCx0Lk0sdC5TLHQuTCk7cmV0dXJuIG4uc2V0RnVsbFllYXIodC55KSxufXJldHVybiBuZXcgRGF0ZSh0LnksdC5tLHQuZCx0LkgsdC5NLHQuUyx0LkwpfWZ1bmN0aW9uIGM3KHQpe2lmKDA8PXQueSYmdC55PDEwMCl7dmFyIG49bmV3IERhdGUoRGF0ZS5VVEMoLTEsdC5tLHQuZCx0LkgsdC5NLHQuUyx0LkwpKTtyZXR1cm4gbi5zZXRVVENGdWxsWWVhcih0LnkpLG59cmV0dXJuIG5ldyBEYXRlKERhdGUuVVRDKHQueSx0Lm0sdC5kLHQuSCx0Lk0sdC5TLHQuTCkpfWZ1bmN0aW9uIHM3KHQsbixlKXtyZXR1cm57eTp0LG06bixkOmUsSDowLE06MCxTOjAsTDowfX1yNy5ldmVyeT1mdW5jdGlvbih0KXtyZXR1cm4gaXNGaW5pdGUodD1NYXRoLmZsb29yKHQpKSYmdD4wP0Y2KChmdW5jdGlvbihuKXtuLnNldFVUQ0Z1bGxZZWFyKE1hdGguZmxvb3Iobi5nZXRVVENGdWxsWWVhcigpL3QpKnQpLG4uc2V0VVRDTW9udGgoMCwxKSxuLnNldFVUQ0hvdXJzKDAsMCwwLDApfSksKGZ1bmN0aW9uKG4sZSl7bi5zZXRVVENGdWxsWWVhcihuLmdldFVUQ0Z1bGxZZWFyKCkrZSp0KX0pKTpudWxsfTt2YXIgbDcsbTcsZDc9eyItIjoiIixfOiIgIiwwOiIwIn0sZzc9L15ccypcZCsvLHA3PS9eJS8sYjc9L1tcXF4kKis/fFtcXSgpLnt9XS9nO2Z1bmN0aW9uIHU3KHQsbixlKXt2YXIgYT10PDA/Ii0iOiIiLG89KGE/LXQ6dCkrIiIscj1vLmxlbmd0aDtyZXR1cm4gYSsocjxlP25ldyBBcnJheShlLXIrMSkuam9pbihuKStvOm8pfWZ1bmN0aW9uIGY3KHQpe3JldHVybiB0LnJlcGxhY2UoYjcsIlxcJCYiKX1mdW5jdGlvbiBoNyh0KXtyZXR1cm4gbmV3IFJlZ0V4cCgiXig/OiIrdC5tYXAoZjcpLmpvaW4oInwiKSsiKSIsImkiKX1mdW5jdGlvbiBfNyh0KXtmb3IodmFyIG49e30sZT0tMSxhPXQubGVuZ3RoOysrZTxhOyluW3RbZV0udG9Mb3dlckNhc2UoKV09ZTtyZXR1cm4gbn1mdW5jdGlvbiBDNyh0LG4sZSl7dmFyIGE9ZzcuZXhlYyhuLnNsaWNlKGUsZSsxKSk7cmV0dXJuIGE/KHQudz0rYVswXSxlK2FbMF0ubGVuZ3RoKTotMX1mdW5jdGlvbiBNNyh0LG4sZSl7dmFyIGE9ZzcuZXhlYyhuLnNsaWNlKGUsZSsxKSk7cmV0dXJuIGE/KHQudT0rYVswXSxlK2FbMF0ubGVuZ3RoKTotMX1mdW5jdGlvbiBPNyh0LG4sZSl7dmFyIGE9ZzcuZXhlYyhuLnNsaWNlKGUsZSsyKSk7cmV0dXJuIGE/KHQuVT0rYVswXSxlK2FbMF0ubGVuZ3RoKTotMX1mdW5jdGlvbiBQNyh0LG4sZSl7dmFyIGE9ZzcuZXhlYyhuLnNsaWNlKGUsZSsyKSk7cmV0dXJuIGE/KHQuVj0rYVswXSxlK2FbMF0ubGVuZ3RoKTotMX1mdW5jdGlvbiB4Nyh0LG4sZSl7dmFyIGE9ZzcuZXhlYyhuLnNsaWNlKGUsZSsyKSk7cmV0dXJuIGE/KHQuVz0rYVswXSxlK2FbMF0ubGVuZ3RoKTotMX1mdW5jdGlvbiB5Nyh0LG4sZSl7dmFyIGE9ZzcuZXhlYyhuLnNsaWNlKGUsZSs0KSk7cmV0dXJuIGE/KHQueT0rYVswXSxlK2FbMF0ubGVuZ3RoKTotMX1mdW5jdGlvbiBrNyh0LG4sZSl7dmFyIGE9ZzcuZXhlYyhuLnNsaWNlKGUsZSsyKSk7cmV0dXJuIGE/KHQueT0rYVswXSsoK2FbMF0+Njg/MTkwMDoyZTMpLGUrYVswXS5sZW5ndGgpOi0xfWZ1bmN0aW9uIHY3KHQsbixlKXt2YXIgYT0vXihaKXwoWystXVxkXGQpKD86Oj8oXGRcZCkpPy8uZXhlYyhuLnNsaWNlKGUsZSs2KSk7cmV0dXJuIGE/KHQuWj1hWzFdPzA6LShhWzJdKyhhWzNdfHwiMDAiKSksZSthWzBdLmxlbmd0aCk6LTF9ZnVuY3Rpb24gdzcodCxuLGUpe3ZhciBhPWc3LmV4ZWMobi5zbGljZShlLGUrMSkpO3JldHVybiBhPyh0LnE9MyphWzBdLTMsZSthWzBdLmxlbmd0aCk6LTF9ZnVuY3Rpb24gUzcodCxuLGUpe3ZhciBhPWc3LmV4ZWMobi5zbGljZShlLGUrMikpO3JldHVybiBhPyh0Lm09YVswXS0xLGUrYVswXS5sZW5ndGgpOi0xfWZ1bmN0aW9uIEU3KHQsbixlKXt2YXIgYT1nNy5leGVjKG4uc2xpY2UoZSxlKzIpKTtyZXR1cm4gYT8odC5kPSthWzBdLGUrYVswXS5sZW5ndGgpOi0xfWZ1bmN0aW9uIEE3KHQsbixlKXt2YXIgYT1nNy5leGVjKG4uc2xpY2UoZSxlKzMpKTtyZXR1cm4gYT8odC5tPTAsdC5kPSthWzBdLGUrYVswXS5sZW5ndGgpOi0xfWZ1bmN0aW9uIHo3KHQsbixlKXt2YXIgYT1nNy5leGVjKG4uc2xpY2UoZSxlKzIpKTtyZXR1cm4gYT8odC5IPSthWzBdLGUrYVswXS5sZW5ndGgpOi0xfWZ1bmN0aW9uIFI3KHQsbixlKXt2YXIgYT1nNy5leGVjKG4uc2xpY2UoZSxlKzIpKTtyZXR1cm4gYT8odC5NPSthWzBdLGUrYVswXS5sZW5ndGgpOi0xfWZ1bmN0aW9uIFQ3KHQsbixlKXt2YXIgYT1nNy5leGVjKG4uc2xpY2UoZSxlKzIpKTtyZXR1cm4gYT8odC5TPSthWzBdLGUrYVswXS5sZW5ndGgpOi0xfWZ1bmN0aW9uIEQ3KHQsbixlKXt2YXIgYT1nNy5leGVjKG4uc2xpY2UoZSxlKzMpKTtyZXR1cm4gYT8odC5MPSthWzBdLGUrYVswXS5sZW5ndGgpOi0xfWZ1bmN0aW9uIEk3KHQsbixlKXt2YXIgYT1nNy5leGVjKG4uc2xpY2UoZSxlKzYpKTtyZXR1cm4gYT8odC5MPU1hdGguZmxvb3IoYVswXS8xZTMpLGUrYVswXS5sZW5ndGgpOi0xfWZ1bmN0aW9uIE43KHQsbixlKXt2YXIgYT1wNy5leGVjKG4uc2xpY2UoZSxlKzEpKTtyZXR1cm4gYT9lK2FbMF0ubGVuZ3RoOi0xfWZ1bmN0aW9uIEY3KHQsbixlKXt2YXIgYT1nNy5leGVjKG4uc2xpY2UoZSkpO3JldHVybiBhPyh0LlE9K2FbMF0sZSthWzBdLmxlbmd0aCk6LTF9ZnVuY3Rpb24gTDcodCxuLGUpe3ZhciBhPWc3LmV4ZWMobi5zbGljZShlKSk7cmV0dXJuIGE/KHQucz0rYVswXSxlK2FbMF0ubGVuZ3RoKTotMX1mdW5jdGlvbiBINyh0LG4pe3JldHVybiB1Nyh0LmdldERhdGUoKSxuLDIpfWZ1bmN0aW9uIEI3KHQsbil7cmV0dXJuIHU3KHQuZ2V0SG91cnMoKSxuLDIpfWZ1bmN0aW9uIFY3KHQsbil7cmV0dXJuIHU3KHQuZ2V0SG91cnMoKSUxMnx8MTIsbiwyKX1mdW5jdGlvbiBqNyh0LG4pe3JldHVybiB1NygxK3E2LmNvdW50KCQ2KHQpLHQpLG4sMyl9ZnVuY3Rpb24gVTcodCxuKXtyZXR1cm4gdTcodC5nZXRNaWxsaXNlY29uZHMoKSxuLDMpfWZ1bmN0aW9uIFc3KHQsbil7cmV0dXJuIFU3KHQsbikrIjAwMCJ9ZnVuY3Rpb24gRzcodCxuKXtyZXR1cm4gdTcodC5nZXRNb250aCgpKzEsbiwyKX1mdW5jdGlvbiBZNyh0LG4pe3JldHVybiB1Nyh0LmdldE1pbnV0ZXMoKSxuLDIpfWZ1bmN0aW9uIHE3KHQsbil7cmV0dXJuIHU3KHQuZ2V0U2Vjb25kcygpLG4sMil9ZnVuY3Rpb24gWjcodCl7dmFyIG49dC5nZXREYXkoKTtyZXR1cm4gMD09PW4/NzpufWZ1bmN0aW9uIFg3KHQsbil7cmV0dXJuIHU3KFg2LmNvdW50KCQ2KHQpLTEsdCksbiwyKX1mdW5jdGlvbiBKNyh0LG4pe3ZhciBlPXQuZ2V0RGF5KCk7cmV0dXJuIHQ9ZT49NHx8MD09PWU/UTYodCk6UTYuY2VpbCh0KSx1NyhRNi5jb3VudCgkNih0KSx0KSsoND09PSQ2KHQpLmdldERheSgpKSxuLDIpfWZ1bmN0aW9uIFE3KHQpe3JldHVybiB0LmdldERheSgpfWZ1bmN0aW9uIEs3KHQsbil7cmV0dXJuIHU3KEo2LmNvdW50KCQ2KHQpLTEsdCksbiwyKX1mdW5jdGlvbiAkNyh0LG4pe3JldHVybiB1Nyh0LmdldEZ1bGxZZWFyKCklMTAwLG4sMil9ZnVuY3Rpb24gdDgodCxuKXtyZXR1cm4gdTcodC5nZXRGdWxsWWVhcigpJTFlNCxuLDQpfWZ1bmN0aW9uIG44KHQpe3ZhciBuPXQuZ2V0VGltZXpvbmVPZmZzZXQoKTtyZXR1cm4obj4wPyItIjoobio9LTEsIisiKSkrdTcobi82MHwwLCIwIiwyKSt1NyhuJTYwLCIwIiwyKX1mdW5jdGlvbiBlOCh0LG4pe3JldHVybiB1Nyh0LmdldFVUQ0RhdGUoKSxuLDIpfWZ1bmN0aW9uIGE4KHQsbil7cmV0dXJuIHU3KHQuZ2V0VVRDSG91cnMoKSxuLDIpfWZ1bmN0aW9uIG84KHQsbil7cmV0dXJuIHU3KHQuZ2V0VVRDSG91cnMoKSUxMnx8MTIsbiwyKX1mdW5jdGlvbiByOCh0LG4pe3JldHVybiB1NygxK3Q3LmNvdW50KHI3KHQpLHQpLG4sMyl9ZnVuY3Rpb24gaTgodCxuKXtyZXR1cm4gdTcodC5nZXRVVENNaWxsaXNlY29uZHMoKSxuLDMpfWZ1bmN0aW9uIGM4KHQsbil7cmV0dXJuIGk4KHQsbikrIjAwMCJ9ZnVuY3Rpb24gczgodCxuKXtyZXR1cm4gdTcodC5nZXRVVENNb250aCgpKzEsbiwyKX1mdW5jdGlvbiBsOCh0LG4pe3JldHVybiB1Nyh0LmdldFVUQ01pbnV0ZXMoKSxuLDIpfWZ1bmN0aW9uIG04KHQsbil7cmV0dXJuIHU3KHQuZ2V0VVRDU2Vjb25kcygpLG4sMil9ZnVuY3Rpb24gZDgodCl7dmFyIG49dC5nZXRVVENEYXkoKTtyZXR1cm4gMD09PW4/NzpufWZ1bmN0aW9uIGc4KHQsbil7cmV0dXJuIHU3KGU3LmNvdW50KHI3KHQpLTEsdCksbiwyKX1mdW5jdGlvbiBwOCh0LG4pe3ZhciBlPXQuZ2V0VVRDRGF5KCk7cmV0dXJuIHQ9ZT49NHx8MD09PWU/bzcodCk6bzcuY2VpbCh0KSx1NyhvNy5jb3VudChyNyh0KSx0KSsoND09PXI3KHQpLmdldFVUQ0RheSgpKSxuLDIpfWZ1bmN0aW9uIGI4KHQpe3JldHVybiB0LmdldFVUQ0RheSgpfWZ1bmN0aW9uIHU4KHQsbil7cmV0dXJuIHU3KGE3LmNvdW50KHI3KHQpLTEsdCksbiwyKX1mdW5jdGlvbiBmOCh0LG4pe3JldHVybiB1Nyh0LmdldFVUQ0Z1bGxZZWFyKCklMTAwLG4sMil9ZnVuY3Rpb24gaDgodCxuKXtyZXR1cm4gdTcodC5nZXRVVENGdWxsWWVhcigpJTFlNCxuLDQpfWZ1bmN0aW9uIF84KCl7cmV0dXJuIiswMDAwIn1mdW5jdGlvbiBDOCgpe3JldHVybiIlIn1mdW5jdGlvbiBNOCh0KXtyZXR1cm4rdH1mdW5jdGlvbiBPOCh0KXtyZXR1cm4gTWF0aC5mbG9vcigrdC8xZTMpfSEoZnVuY3Rpb24gUDgodCl7bDc9KGZ1bmN0aW9uIG4odCl7dmFyIG49dC5kYXRlVGltZSxlPXQuZGF0ZSxhPXQudGltZSxvPXQucGVyaW9kcyxyPXQuZGF5cyxpPXQuc2hvcnREYXlzLGM9dC5tb250aHMscz10LnNob3J0TW9udGhzLGw9aDcobyksbT1fNyhvKSxkPWg3KHIpLGc9XzcocikscD1oNyhpKSxiPV83KGkpLHU9aDcoYyksZj1fNyhjKSxoPWg3KHMpLF89XzcocyksQz17YTpmdW5jdGlvbiBNKHQpe3JldHVybiBpW3QuZ2V0RGF5KCldfSxBOmZ1bmN0aW9uIE8odCl7cmV0dXJuIHJbdC5nZXREYXkoKV19LGI6ZnVuY3Rpb24gUCh0KXtyZXR1cm4gc1t0LmdldE1vbnRoKCldfSxCOmZ1bmN0aW9uIHgodCl7cmV0dXJuIGNbdC5nZXRNb250aCgpXX0sYzpudWxsLGQ6SDcsZTpINyxmOlc3LEg6QjcsSTpWNyxqOmo3LEw6VTcsbTpHNyxNOlk3LHA6ZnVuY3Rpb24geSh0KXtyZXR1cm4gb1srKHQuZ2V0SG91cnMoKT49MTIpXX0scTpmdW5jdGlvbiBrKHQpe3JldHVybiAxK35+KHQuZ2V0TW9udGgoKS8zKX0sUTpNOCxzOk84LFM6cTcsdTpaNyxVOlg3LFY6SjcsdzpRNyxXOks3LHg6bnVsbCxYOm51bGwseTokNyxZOnQ4LFo6bjgsIiUiOkM4fSx2PXthOmZ1bmN0aW9uIHcodCl7cmV0dXJuIGlbdC5nZXRVVENEYXkoKV19LEE6ZnVuY3Rpb24gUyh0KXtyZXR1cm4gclt0LmdldFVUQ0RheSgpXX0sYjpmdW5jdGlvbiBFKHQpe3JldHVybiBzW3QuZ2V0VVRDTW9udGgoKV19LEI6ZnVuY3Rpb24gQSh0KXtyZXR1cm4gY1t0LmdldFVUQ01vbnRoKCldfSxjOm51bGwsZDplOCxlOmU4LGY6YzgsSDphOCxJOm84LGo6cjgsTDppOCxtOnM4LE06bDgscDpmdW5jdGlvbiB6KHQpe3JldHVybiBvWysodC5nZXRVVENIb3VycygpPj0xMildfSxxOmZ1bmN0aW9uIFIodCl7cmV0dXJuIDErfn4odC5nZXRVVENNb250aCgpLzMpfSxROk04LHM6TzgsUzptOCx1OmQ4LFU6ZzgsVjpwOCx3OmI4LFc6dTgseDpudWxsLFg6bnVsbCx5OmY4LFk6aDgsWjpfOCwiJSI6Qzh9LFQ9e2E6ZnVuY3Rpb24gRCh0LG4sZSl7dmFyIGE9cC5leGVjKG4uc2xpY2UoZSkpO3JldHVybiBhPyh0Lnc9YlthWzBdLnRvTG93ZXJDYXNlKCldLGUrYVswXS5sZW5ndGgpOi0xfSxBOmZ1bmN0aW9uIEkodCxuLGUpe3ZhciBhPWQuZXhlYyhuLnNsaWNlKGUpKTtyZXR1cm4gYT8odC53PWdbYVswXS50b0xvd2VyQ2FzZSgpXSxlK2FbMF0ubGVuZ3RoKTotMX0sYjpmdW5jdGlvbiBOKHQsbixlKXt2YXIgYT1oLmV4ZWMobi5zbGljZShlKSk7cmV0dXJuIGE/KHQubT1fW2FbMF0udG9Mb3dlckNhc2UoKV0sZSthWzBdLmxlbmd0aCk6LTF9LEI6ZnVuY3Rpb24gRih0LG4sZSl7dmFyIGE9dS5leGVjKG4uc2xpY2UoZSkpO3JldHVybiBhPyh0Lm09ZlthWzBdLnRvTG93ZXJDYXNlKCldLGUrYVswXS5sZW5ndGgpOi0xfSxjOmZ1bmN0aW9uIEwodCxlLGEpe3JldHVybiBXKHQsbixlLGEpfSxkOkU3LGU6RTcsZjpJNyxIOno3LEk6ejcsajpBNyxMOkQ3LG06UzcsTTpSNyxwOmZ1bmN0aW9uIEgodCxuLGUpe3ZhciBhPWwuZXhlYyhuLnNsaWNlKGUpKTtyZXR1cm4gYT8odC5wPW1bYVswXS50b0xvd2VyQ2FzZSgpXSxlK2FbMF0ubGVuZ3RoKTotMX0scTp3NyxROkY3LHM6TDcsUzpUNyx1Ok03LFU6TzcsVjpQNyx3OkM3LFc6eDcseDpmdW5jdGlvbiBCKHQsbixhKXtyZXR1cm4gVyh0LGUsbixhKX0sWDpmdW5jdGlvbiBWKHQsbixlKXtyZXR1cm4gVyh0LGEsbixlKX0seTprNyxZOnk3LFo6djcsIiUiOk43fTtmdW5jdGlvbiBqKHQsbil7cmV0dXJuIGZ1bmN0aW9uKGUpe3ZhciBhLG8scixpPVtdLGM9LTEscz0wLGw9dC5sZW5ndGg7Zm9yKGUgaW5zdGFuY2VvZiBEYXRlfHwoZT1uZXcgRGF0ZSgrZSkpOysrYzxsOykzNz09PXQuY2hhckNvZGVBdChjKSYmKGkucHVzaCh0LnNsaWNlKHMsYykpLG51bGwhPShvPWQ3W2E9dC5jaGFyQXQoKytjKV0pP2E9dC5jaGFyQXQoKytjKTpvPSJlIj09PWE/IiAiOiIwIiwocj1uW2FdKSYmKGE9cihlLG8pKSxpLnB1c2goYSkscz1jKzEpO3JldHVybiBpLnB1c2godC5zbGljZShzLGMpKSxpLmpvaW4oIiIpfX1mdW5jdGlvbiBVKHQsbil7cmV0dXJuIGZ1bmN0aW9uKGUpe3ZhciBhLG8scj1zNygxOTAwLHZvaWQgMCwxKTtpZihXKHIsdCxlKz0iIiwwKSE9ZS5sZW5ndGgpcmV0dXJuIG51bGw7aWYoIlEiaW4gcilyZXR1cm4gbmV3IERhdGUoci5RKTtpZigicyJpbiByKXJldHVybiBuZXcgRGF0ZSgxZTMqci5zKygiTCJpbiByP3IuTDowKSk7aWYobiYmISgiWiJpbiByKSYmKHIuWj0wKSwicCJpbiByJiYoci5IPXIuSCUxMisxMipyLnApLHZvaWQgMD09PXIubSYmKHIubT0icSJpbiByP3IucTowKSwiViJpbiByKXtpZihyLlY8MXx8ci5WPjUzKXJldHVybiBudWxsOyJ3ImluIHJ8fChyLnc9MSksIloiaW4gcj8obz0oYT1jNyhzNyhyLnksMCwxKSkpLmdldFVUQ0RheSgpLGE9bz40fHwwPT09bz9hNy5jZWlsKGEpOmE3KGEpLGE9dDcub2Zmc2V0KGEsNyooci5WLTEpKSxyLnk9YS5nZXRVVENGdWxsWWVhcigpLHIubT1hLmdldFVUQ01vbnRoKCksci5kPWEuZ2V0VVRDRGF0ZSgpKyhyLncrNiklNyk6KG89KGE9aTcoczcoci55LDAsMSkpKS5nZXREYXkoKSxhPW8+NHx8MD09PW8/SjYuY2VpbChhKTpKNihhKSxhPXE2Lm9mZnNldChhLDcqKHIuVi0xKSksci55PWEuZ2V0RnVsbFllYXIoKSxyLm09YS5nZXRNb250aCgpLHIuZD1hLmdldERhdGUoKSsoci53KzYpJTcpfWVsc2UoIlciaW4gcnx8IlUiaW4gcikmJigidyJpbiByfHwoci53PSJ1ImluIHI/ci51JTc6IlciaW4gcj8xOjApLG89IloiaW4gcj9jNyhzNyhyLnksMCwxKSkuZ2V0VVRDRGF5KCk6aTcoczcoci55LDAsMSkpLmdldERheSgpLHIubT0wLHIuZD0iVyJpbiByPyhyLncrNiklNys3KnIuVy0obys1KSU3OnIudys3KnIuVS0obys2KSU3KTtyZXR1cm4iWiJpbiByPyhyLkgrPXIuWi8xMDB8MCxyLk0rPXIuWiUxMDAsYzcocikpOmk3KHIpfX1mdW5jdGlvbiBXKHQsbixlLGEpe2Zvcih2YXIgbyxyLGk9MCxjPW4ubGVuZ3RoLHM9ZS5sZW5ndGg7aTxjOyl7aWYoYT49cylyZXR1cm4tMTtpZigzNz09PShvPW4uY2hhckNvZGVBdChpKyspKSl7aWYobz1uLmNoYXJBdChpKyspLCEocj1UW28gaW4gZDc/bi5jaGFyQXQoaSsrKTpvXSl8fChhPXIodCxlLGEpKTwwKXJldHVybi0xfWVsc2UgaWYobyE9ZS5jaGFyQ29kZUF0KGErKykpcmV0dXJuLTF9cmV0dXJuIGF9cmV0dXJuIEMueD1qKGUsQyksQy5YPWooYSxDKSxDLmM9aihuLEMpLHYueD1qKGUsdiksdi5YPWooYSx2KSx2LmM9aihuLHYpLHtmb3JtYXQ6ZnVuY3Rpb24odCl7dmFyIG49aih0Kz0iIixDKTtyZXR1cm4gbi50b1N0cmluZz1mdW5jdGlvbigpe3JldHVybiB0fSxufSxwYXJzZTpmdW5jdGlvbih0KXt2YXIgbj1VKHQrPSIiLCExKTtyZXR1cm4gbi50b1N0cmluZz1mdW5jdGlvbigpe3JldHVybiB0fSxufSx1dGNGb3JtYXQ6ZnVuY3Rpb24odCl7dmFyIG49aih0Kz0iIix2KTtyZXR1cm4gbi50b1N0cmluZz1mdW5jdGlvbigpe3JldHVybiB0fSxufSx1dGNQYXJzZTpmdW5jdGlvbih0KXt2YXIgbj1VKHQrPSIiLCEwKTtyZXR1cm4gbi50b1N0cmluZz1mdW5jdGlvbigpe3JldHVybiB0fSxufX19KSh0KSxtNz1sNy5mb3JtYXR9KSh7ZGF0ZVRpbWU6IiV4LCAlWCIsZGF0ZToiJS1tLyUtZC8lWSIsdGltZToiJS1JOiVNOiVTICVwIixwZXJpb2RzOlsiQU0iLCJQTSJdLGRheXM6WyJTdW5kYXkiLCJNb25kYXkiLCJUdWVzZGF5IiwiV2VkbmVzZGF5IiwiVGh1cnNkYXkiLCJGcmlkYXkiLCJTYXR1cmRheSJdLHNob3J0RGF5czpbIlN1biIsIk1vbiIsIlR1ZSIsIldlZCIsIlRodSIsIkZyaSIsIlNhdCJdLG1vbnRoczpbIkphbnVhcnkiLCJGZWJydWFyeSIsIk1hcmNoIiwiQXByaWwiLCJNYXkiLCJKdW5lIiwiSnVseSIsIkF1Z3VzdCIsIlNlcHRlbWJlciIsIk9jdG9iZXIiLCJOb3ZlbWJlciIsIkRlY2VtYmVyIl0sc2hvcnRNb250aHM6WyJKYW4iLCJGZWIiLCJNYXIiLCJBcHIiLCJNYXkiLCJKdW4iLCJKdWwiLCJBdWciLCJTZXAiLCJPY3QiLCJOb3YiLCJEZWMiXX0pO3ZhciB4OD0zMTUzNmU2O2Z1bmN0aW9uIHk4KHQpe3JldHVybiBuZXcgRGF0ZSh0KX1mdW5jdGlvbiBrOCh0KXtyZXR1cm4gdCBpbnN0YW5jZW9mIERhdGU/K3Q6K25ldyBEYXRlKCt0KX1mdW5jdGlvbiB2OCh0LG4sZSxhLG8scixpLGMscyl7dmFyIGw9eDYoZjYsZjYpLG09bC5pbnZlcnQsZD1sLmRvbWFpbixnPXMoIi4lTCIpLHA9cygiOiVTIiksYj1zKCIlSTolTSIpLHU9cygiJUkgJXAiKSxmPXMoIiVhICVkIiksaD1zKCIlYiAlZCIpLF89cygiJUIiKSxDPXMoIiVZIiksTT1bW2ksMSwxZTNdLFtpLDUsNWUzXSxbaSwxNSwxNWUzXSxbaSwzMCwzZTRdLFtyLDEsNmU0XSxbciw1LDNlNV0sW3IsMTUsOWU1XSxbciwzMCwxOGU1XSxbbywxLDM2ZTVdLFtvLDMsMTA4ZTVdLFtvLDYsMjE2ZTVdLFtvLDEyLDQzMmU1XSxbYSwxLDg2NGU1XSxbYSwyLDE3MjhlNV0sW2UsMSw2MDQ4ZTVdLFtuLDEsMjU5MmU2XSxbbiwzLDc3NzZlNl0sW3QsMSx4OF1dO2Z1bmN0aW9uIE8oYyl7cmV0dXJuKGkoYyk8Yz9nOnIoYyk8Yz9wOm8oYyk8Yz9iOmEoYyk8Yz91Om4oYyk8Yz9lKGMpPGM/ZjpoOnQoYyk8Yz9fOkMpKGMpfWZ1bmN0aW9uIFAobixlLGEsbyl7aWYobnVsbD09biYmKG49MTApLCJudW1iZXIiPT10eXBlb2Ygbil7dmFyIHI9TWF0aC5hYnMoYS1lKS9uLGk9YTAoKGZ1bmN0aW9uKHQpe3JldHVybiB0WzJdfSkpLnJpZ2h0KE0scik7aT09PU0ubGVuZ3RoPyhvPXUwKGUveDgsYS94OCxuKSxuPXQpOmk/KG89KGk9TVtyL01baS0xXVsyXTxNW2ldWzJdL3I/aS0xOmldKVsxXSxuPWlbMF0pOihvPU1hdGgubWF4KHUwKGUsYSxuKSwxKSxuPWMpfXJldHVybiBudWxsPT1vP246bi5ldmVyeShvKX1yZXR1cm4gbC5pbnZlcnQ9ZnVuY3Rpb24odCl7cmV0dXJuIG5ldyBEYXRlKG0odCkpfSxsLmRvbWFpbj1mdW5jdGlvbih0KXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD9kKGM2LmNhbGwodCxrOCkpOmQoKS5tYXAoeTgpfSxsLnRpY2tzPWZ1bmN0aW9uKHQsbil7dmFyIGUsYT1kKCksbz1hWzBdLHI9YVthLmxlbmd0aC0xXSxpPXI8bztyZXR1cm4gaSYmKGU9byxvPXIscj1lKSxlPShlPVAodCxvLHIsbikpP2UucmFuZ2UobyxyKzEpOltdLGk/ZS5yZXZlcnNlKCk6ZX0sbC50aWNrRm9ybWF0PWZ1bmN0aW9uKHQsbil7cmV0dXJuIG51bGw9PW4/TzpzKG4pfSxsLm5pY2U9ZnVuY3Rpb24odCxuKXt2YXIgZT1kKCk7cmV0dXJuKHQ9UCh0LGVbMF0sZVtlLmxlbmd0aC0xXSxuKSk/ZCh2NihlLHQpKTpsfSxsLmNvcHk9ZnVuY3Rpb24oKXtyZXR1cm4gTzYobCx2OCh0LG4sZSxhLG8scixpLGMscykpfSxsfWZ1bmN0aW9uIHc4KCl7cmV0dXJuIG82LmFwcGx5KHY4KCQ2LEs2LFg2LHE2LFk2LEc2LFc2LEw2LG03KS5kb21haW4oW25ldyBEYXRlKDJlMywwLDEpLG5ldyBEYXRlKDJlMywwLDIpXSksYXJndW1lbnRzKX1mdW5jdGlvbiBTOCh0KXtmb3IodmFyIG49dC5sZW5ndGgvNnwwLGU9bmV3IEFycmF5KG4pLGE9MDthPG47KWVbYV09IiMiK3Quc2xpY2UoNiphLDYqKythKTtyZXR1cm4gZX1mdW5jdGlvbiBFOCh0KXtyZXR1cm4gbDUodFt0Lmxlbmd0aC0xXSl9dmFyIEE4PUU4KG5ldyBBcnJheSgzKS5jb25jYXQoImRlZWJmNzllY2FlMTMxODJiZCIsImVmZjNmZmJkZDdlNzZiYWVkNjIxNzFiNSIsImVmZjNmZmJkZDdlNzZiYWVkNjMxODJiZDA4NTE5YyIsImVmZjNmZmM2ZGJlZjllY2FlMTZiYWVkNjMxODJiZDA4NTE5YyIsImVmZjNmZmM2ZGJlZjllY2FlMTZiYWVkNjQyOTJjNjIxNzFiNTA4NDU5NCIsImY3ZmJmZmRlZWJmN2M2ZGJlZjllY2FlMTZiYWVkNjQyOTJjNjIxNzFiNTA4NDU5NCIsImY3ZmJmZmRlZWJmN2M2ZGJlZjllY2FlMTZiYWVkNjQyOTJjNjIxNzFiNTA4NTE5YzA4MzA2YiIpLm1hcChTOCkpLHo4PUU4KG5ldyBBcnJheSgzKS5jb25jYXQoImYwZjBmMGJkYmRiZDYzNjM2MyIsImY3ZjdmN2NjY2NjYzk2OTY5NjUyNTI1MiIsImY3ZjdmN2NjY2NjYzk2OTY5NjYzNjM2MzI1MjUyNSIsImY3ZjdmN2Q5ZDlkOWJkYmRiZDk2OTY5NjYzNjM2MzI1MjUyNSIsImY3ZjdmN2Q5ZDlkOWJkYmRiZDk2OTY5NjczNzM3MzUyNTI1MjI1MjUyNSIsImZmZmZmZmYwZjBmMGQ5ZDlkOWJkYmRiZDk2OTY5NjczNzM3MzUyNTI1MjI1MjUyNSIsImZmZmZmZmYwZjBmMGQ5ZDlkOWJkYmRiZDk2OTY5NjczNzM3MzUyNTI1MjI1MjUyNTAwMDAwMCIpLm1hcChTOCkpLFI4PUU4KG5ldyBBcnJheSgzKS5jb25jYXQoImZlZTBkMmZjOTI3MmRlMmQyNiIsImZlZTVkOWZjYWU5MWZiNmE0YWNiMTgxZCIsImZlZTVkOWZjYWU5MWZiNmE0YWRlMmQyNmE1MGYxNSIsImZlZTVkOWZjYmJhMWZjOTI3MmZiNmE0YWRlMmQyNmE1MGYxNSIsImZlZTVkOWZjYmJhMWZjOTI3MmZiNmE0YWVmM2IyY2NiMTgxZDk5MDAwZCIsImZmZjVmMGZlZTBkMmZjYmJhMWZjOTI3MmZiNmE0YWVmM2IyY2NiMTgxZDk5MDAwZCIsImZmZjVmMGZlZTBkMmZjYmJhMWZjOTI3MmZiNmE0YWVmM2IyY2NiMTgxZGE1MGYxNTY3MDAwZCIpLm1hcChTOCkpO2Z1bmN0aW9uIFQ4KHQpe3JldHVybiBmdW5jdGlvbiBuKCl7cmV0dXJuIHR9fWZ1bmN0aW9uIEQ4KHQpe3RoaXMuX2NvbnRleHQ9dH1mdW5jdGlvbiBJOCh0KXtyZXR1cm4gbmV3IEQ4KHQpfWZ1bmN0aW9uIE44KHQpe3JldHVybiB0WzBdfWZ1bmN0aW9uIEY4KHQpe3JldHVybiB0WzFdfWZ1bmN0aW9uIEw4KCl7dmFyIHQ9Tjgsbj1GOCxlPVQ4KCEwKSxhPW51bGwsbz1JOCxyPW51bGw7ZnVuY3Rpb24gaShpKXt2YXIgYyxzLGwsbT1pLmxlbmd0aCxkPSExO2ZvcihudWxsPT1hJiYocj1vKGw9RjMoKSkpLGM9MDtjPD1tOysrYykhKGM8bSYmZShzPWlbY10sYyxpKSk9PT1kJiYoKGQ9IWQpP3IubGluZVN0YXJ0KCk6ci5saW5lRW5kKCkpLGQmJnIucG9pbnQoK3QocyxjLGkpLCtuKHMsYyxpKSk7aWYobClyZXR1cm4gcj1udWxsLGwrIiJ8fG51bGx9cmV0dXJuIGkueD1mdW5jdGlvbihuKXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8odD0iZnVuY3Rpb24iPT10eXBlb2Ygbj9uOlQ4KCtuKSxpKTp0fSxpLnk9ZnVuY3Rpb24odCl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KG49ImZ1bmN0aW9uIj09dHlwZW9mIHQ/dDpUOCgrdCksaSk6bn0saS5kZWZpbmVkPWZ1bmN0aW9uKHQpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyhlPSJmdW5jdGlvbiI9PXR5cGVvZiB0P3Q6VDgoISF0KSxpKTplfSxpLmN1cnZlPWZ1bmN0aW9uKHQpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyhvPXQsbnVsbCE9YSYmKHI9byhhKSksaSk6b30saS5jb250ZXh0PWZ1bmN0aW9uKHQpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyhudWxsPT10P2E9cj1udWxsOnI9byhhPXQpLGkpOmF9LGl9ZnVuY3Rpb24gSDgodCxuLGUpe3QuX2NvbnRleHQuYmV6aWVyQ3VydmVUbyh0Ll94MSt0Ll9rKih0Ll94Mi10Ll94MCksdC5feTErdC5fayoodC5feTItdC5feTApLHQuX3gyK3QuX2sqKHQuX3gxLW4pLHQuX3kyK3QuX2sqKHQuX3kxLWUpLHQuX3gyLHQuX3kyKX1mdW5jdGlvbiBCOCh0LG4pe3RoaXMuX2NvbnRleHQ9dCx0aGlzLl9rPSgxLW4pLzZ9ZnVuY3Rpb24gVjgodCxuKXt0aGlzLl9jb250ZXh0PXQsdGhpcy5fYWxwaGE9bn1EOC5wcm90b3R5cGU9e2FyZWFTdGFydDpmdW5jdGlvbigpe3RoaXMuX2xpbmU9MH0sYXJlYUVuZDpmdW5jdGlvbigpe3RoaXMuX2xpbmU9TmFOfSxsaW5lU3RhcnQ6ZnVuY3Rpb24oKXt0aGlzLl9wb2ludD0wfSxsaW5lRW5kOmZ1bmN0aW9uKCl7KHRoaXMuX2xpbmV8fDAhPT10aGlzLl9saW5lJiYxPT09dGhpcy5fcG9pbnQpJiZ0aGlzLl9jb250ZXh0LmNsb3NlUGF0aCgpLHRoaXMuX2xpbmU9MS10aGlzLl9saW5lfSxwb2ludDpmdW5jdGlvbih0LG4pe3N3aXRjaCh0PSt0LG49K24sdGhpcy5fcG9pbnQpe2Nhc2UgMDp0aGlzLl9wb2ludD0xLHRoaXMuX2xpbmU/dGhpcy5fY29udGV4dC5saW5lVG8odCxuKTp0aGlzLl9jb250ZXh0Lm1vdmVUbyh0LG4pO2JyZWFrO2Nhc2UgMTp0aGlzLl9wb2ludD0yO2RlZmF1bHQ6dGhpcy5fY29udGV4dC5saW5lVG8odCxuKX19fSxCOC5wcm90b3R5cGU9e2FyZWFTdGFydDpmdW5jdGlvbigpe3RoaXMuX2xpbmU9MH0sYXJlYUVuZDpmdW5jdGlvbigpe3RoaXMuX2xpbmU9TmFOfSxsaW5lU3RhcnQ6ZnVuY3Rpb24oKXt0aGlzLl94MD10aGlzLl94MT10aGlzLl94Mj10aGlzLl95MD10aGlzLl95MT10aGlzLl95Mj1OYU4sdGhpcy5fcG9pbnQ9MH0sbGluZUVuZDpmdW5jdGlvbigpe3N3aXRjaCh0aGlzLl9wb2ludCl7Y2FzZSAyOnRoaXMuX2NvbnRleHQubGluZVRvKHRoaXMuX3gyLHRoaXMuX3kyKTticmVhaztjYXNlIDM6SDgodGhpcyx0aGlzLl94MSx0aGlzLl95MSl9KHRoaXMuX2xpbmV8fDAhPT10aGlzLl9saW5lJiYxPT09dGhpcy5fcG9pbnQpJiZ0aGlzLl9jb250ZXh0LmNsb3NlUGF0aCgpLHRoaXMuX2xpbmU9MS10aGlzLl9saW5lfSxwb2ludDpmdW5jdGlvbih0LG4pe3N3aXRjaCh0PSt0LG49K24sdGhpcy5fcG9pbnQpe2Nhc2UgMDp0aGlzLl9wb2ludD0xLHRoaXMuX2xpbmU/dGhpcy5fY29udGV4dC5saW5lVG8odCxuKTp0aGlzLl9jb250ZXh0Lm1vdmVUbyh0LG4pO2JyZWFrO2Nhc2UgMTp0aGlzLl9wb2ludD0yLHRoaXMuX3gxPXQsdGhpcy5feTE9bjticmVhaztjYXNlIDI6dGhpcy5fcG9pbnQ9MztkZWZhdWx0Okg4KHRoaXMsdCxuKX10aGlzLl94MD10aGlzLl94MSx0aGlzLl94MT10aGlzLl94Mix0aGlzLl94Mj10LHRoaXMuX3kwPXRoaXMuX3kxLHRoaXMuX3kxPXRoaXMuX3kyLHRoaXMuX3kyPW59fSxWOC5wcm90b3R5cGU9e2FyZWFTdGFydDpmdW5jdGlvbigpe3RoaXMuX2xpbmU9MH0sYXJlYUVuZDpmdW5jdGlvbigpe3RoaXMuX2xpbmU9TmFOfSxsaW5lU3RhcnQ6ZnVuY3Rpb24oKXt0aGlzLl94MD10aGlzLl94MT10aGlzLl94Mj10aGlzLl95MD10aGlzLl95MT10aGlzLl95Mj1OYU4sdGhpcy5fbDAxX2E9dGhpcy5fbDEyX2E9dGhpcy5fbDIzX2E9dGhpcy5fbDAxXzJhPXRoaXMuX2wxMl8yYT10aGlzLl9sMjNfMmE9dGhpcy5fcG9pbnQ9MH0sbGluZUVuZDpmdW5jdGlvbigpe3N3aXRjaCh0aGlzLl9wb2ludCl7Y2FzZSAyOnRoaXMuX2NvbnRleHQubGluZVRvKHRoaXMuX3gyLHRoaXMuX3kyKTticmVhaztjYXNlIDM6dGhpcy5wb2ludCh0aGlzLl94Mix0aGlzLl95Mil9KHRoaXMuX2xpbmV8fDAhPT10aGlzLl9saW5lJiYxPT09dGhpcy5fcG9pbnQpJiZ0aGlzLl9jb250ZXh0LmNsb3NlUGF0aCgpLHRoaXMuX2xpbmU9MS10aGlzLl9saW5lfSxwb2ludDpmdW5jdGlvbih0LG4pe2lmKHQ9K3Qsbj0rbix0aGlzLl9wb2ludCl7dmFyIGU9dGhpcy5feDItdCxhPXRoaXMuX3kyLW47dGhpcy5fbDIzX2E9TWF0aC5zcXJ0KHRoaXMuX2wyM18yYT1NYXRoLnBvdyhlKmUrYSphLHRoaXMuX2FscGhhKSl9c3dpdGNoKHRoaXMuX3BvaW50KXtjYXNlIDA6dGhpcy5fcG9pbnQ9MSx0aGlzLl9saW5lP3RoaXMuX2NvbnRleHQubGluZVRvKHQsbik6dGhpcy5fY29udGV4dC5tb3ZlVG8odCxuKTticmVhaztjYXNlIDE6dGhpcy5fcG9pbnQ9MjticmVhaztjYXNlIDI6dGhpcy5fcG9pbnQ9MztkZWZhdWx0OiEoZnVuY3Rpb24gbyh0LG4sZSl7dmFyIGE9dC5feDEsbz10Ll95MSxyPXQuX3gyLGk9dC5feTI7aWYodC5fbDAxX2E+MWUtMTIpe3ZhciBjPTIqdC5fbDAxXzJhKzMqdC5fbDAxX2EqdC5fbDEyX2ErdC5fbDEyXzJhLHM9Myp0Ll9sMDFfYSoodC5fbDAxX2ErdC5fbDEyX2EpO2E9KGEqYy10Ll94MCp0Ll9sMTJfMmErdC5feDIqdC5fbDAxXzJhKS9zLG89KG8qYy10Ll95MCp0Ll9sMTJfMmErdC5feTIqdC5fbDAxXzJhKS9zfWlmKHQuX2wyM19hPjFlLTEyKXt2YXIgbD0yKnQuX2wyM18yYSszKnQuX2wyM19hKnQuX2wxMl9hK3QuX2wxMl8yYSxtPTMqdC5fbDIzX2EqKHQuX2wyM19hK3QuX2wxMl9hKTtyPShyKmwrdC5feDEqdC5fbDIzXzJhLW4qdC5fbDEyXzJhKS9tLGk9KGkqbCt0Ll95MSp0Ll9sMjNfMmEtZSp0Ll9sMTJfMmEpL219dC5fY29udGV4dC5iZXppZXJDdXJ2ZVRvKGEsbyxyLGksdC5feDIsdC5feTIpfSkodGhpcyx0LG4pfXRoaXMuX2wwMV9hPXRoaXMuX2wxMl9hLHRoaXMuX2wxMl9hPXRoaXMuX2wyM19hLHRoaXMuX2wwMV8yYT10aGlzLl9sMTJfMmEsdGhpcy5fbDEyXzJhPXRoaXMuX2wyM18yYSx0aGlzLl94MD10aGlzLl94MSx0aGlzLl94MT10aGlzLl94Mix0aGlzLl94Mj10LHRoaXMuX3kwPXRoaXMuX3kxLHRoaXMuX3kxPXRoaXMuX3kyLHRoaXMuX3kyPW59fTt2YXIgajg9KGZ1bmN0aW9uIHQobil7ZnVuY3Rpb24gZSh0KXtyZXR1cm4gbj9uZXcgVjgodCxuKTpuZXcgQjgodCwwKX1yZXR1cm4gZS5hbHBoYT1mdW5jdGlvbihuKXtyZXR1cm4gdCgrbil9LGV9KSguNSk7Y29uc3QgVTg9dDYoIi4yfmUiKSxXOD10NigifiIpLEc4PXQ2KCIsfiIpO2Z1bmN0aW9uIFk4KHQpe2lmKDA9PT10KXJldHVybiIwIjtjb25zdCBuPU1hdGguYWJzKHQpO3JldHVybiBuPj0xZTV8fG48LjAwMT9VOCh0KTpXOCh0KX1jb25zdCBxOD17Zm9ybWF0VGljazpZOCxmb3JtYXRTaG9ydDpZOCxmb3JtYXRSZWFkYWJsZTp0PT5HOCh0KX0sWjg9MzZlNSxYOD04NjRlNSxKOD0zMTUzNmU2LFE4PXQ2KCIuNH4iKTtmdW5jdGlvbiBLOCh0KXtpZigwPT09dClyZXR1cm4iMCI7bGV0IG49TWF0aC5zaWduKHQpPjA/IiI6Ii0iO2NvbnN0IGU9TWF0aC5hYnModCk7cmV0dXJuIG4rPWU8MWUzP2Ake1E4KGUpfSBtc2A6ZTw2ZTQ/YCR7UTgoZS8xZTMpfSBzZWNgOmU8Wjg/YCR7UTgoZS82ZTQpfSBtaW5gOmU8WDg/YCR7UTgoZS9aOCl9IGhyYDplPEo4P2Ake1E4KGUvWDgpfSBkYXlgOmAke1E4KGUvSjgpfSB5cmAsbn1jb25zdCAkOD17Zm9ybWF0VGljazpLOCxmb3JtYXRTaG9ydDpLOCxmb3JtYXRSZWFkYWJsZTpLOH0sdDk9dzgoKS50aWNrRm9ybWF0KCk7bGV0IG45O2NvbnN0IGU5PXtmb3JtYXRUaWNrOnQ9PnQ5KG5ldyBEYXRlKHQpKSxmb3JtYXRTaG9ydDp0PT5uZXcgRGF0ZSh0KS50b0xvY2FsZVN0cmluZyhuOSx7eWVhcjoibnVtZXJpYyIsbW9udGg6InNob3J0IixkYXk6Im51bWVyaWMiLGhvdXI6Im51bWVyaWMiLG1pbnV0ZToibnVtZXJpYyIsc2Vjb25kOiJudW1lcmljIn0pLGZvcm1hdFJlYWRhYmxlOnQ9Pm5ldyBEYXRlKHQpLnRvTG9jYWxlU3RyaW5nKG45LHt5ZWFyOiJudW1lcmljIixtb250aDoic2hvcnQiLGRheToibnVtZXJpYyIsaG91cjoibnVtZXJpYyIsbWludXRlOiJudW1lcmljIixzZWNvbmQ6Im51bWVyaWMiLHRpbWVab25lTmFtZToic2hvcnQiLGZyYWN0aW9uYWxTZWNvbmREaWdpdHM6M30pfTtmdW5jdGlvbiBhOSh0KXtzd2l0Y2godCl7Y2FzZSBqJC5MSU5FQVI6cmV0dXJuIG5ldyBvOTtjYXNlIGokLkxPRzEwOnJldHVybiBuZXcgcjk7Y2FzZSBqJC5USU1FOnJldHVybiBuZXcgaTk7ZGVmYXVsdDp0aHJvdyBuZXcgUmFuZ2VFcnJvcihgU2NhbGVUeXBlICR7dH0gbm90IHN1cHBvcnRlZC5gKX19Y2xhc3Mgbzl7Y29uc3RydWN0b3IoKXt0aGlzLmRlZmF1bHRGb3JtYXR0ZXI9cTh9dHJhbnNmb3JtKHQsbixlKXtjb25zdFthLG9dPXQscj1vLWEsW2ksY109bjtyZXR1cm4gMD09PXI/aTooYy1pKS9yKihlLWEpK2l9Zm9yd2FyZCh0LG4sZSl7cmV0dXJuIHRoaXMudHJhbnNmb3JtKHQsbixlKX1yZXZlcnNlKHQsbixlKXtyZXR1cm4gdGhpcy50cmFuc2Zvcm0obix0LGUpfW5pY2VEb21haW4odCl7bGV0W24sZV09dDtpZihlPG4pdGhyb3cgbmV3IEVycm9yKCJVbmV4cGVjdGVkIGlucHV0OiBtaW4gaXMgbGFyZ2VyIHRoYW4gbWF4Iik7aWYoZT09PW4pcmV0dXJuIDA9PT1uP1stMSwxXTpuPDA/WzIqbiwwXTpbMCwyKm5dO2NvbnN0IGE9azYoKSxvPS4wNSooZS1uK051bWJlci5FUFNJTE9OKSxbcixpXT1hLmRvbWFpbihbbi1vLGUrb10pLm5pY2UoKS5kb21haW4oKTtyZXR1cm5bcixpXX10aWNrcyh0LG4pe3JldHVybiBrNigpLmRvbWFpbih0KS50aWNrcyhuKX1pc1NhZmVOdW1iZXIodCl7cmV0dXJuIE51bWJlci5pc0Zpbml0ZSh0KX19Y2xhc3Mgcjl7Y29uc3RydWN0b3IoKXt0aGlzLmRlZmF1bHRGb3JtYXR0ZXI9cTh9dHJhbnNmb3JtKHQpe3JldHVybiBNYXRoLmxvZzEwKHQ+MD90Ok51bWJlci5NSU5fVkFMVUUpfXVudHJhbnNmb3JtKHQpe3JldHVybiBNYXRoLmV4cCh0L01hdGguTE9HMTBFKX1mb3J3YXJkKHQsbixlKXtpZihlPD0wKXJldHVybiBuWzBdO2NvbnN0W2Esb109dCxbcixpXT1uLGM9dGhpcy50cmFuc2Zvcm0oYSkscz10aGlzLnRyYW5zZm9ybShvKS1jLGw9aS1yO3JldHVybiBlPXRoaXMudHJhbnNmb3JtKGUpLGwvKHMrTnVtYmVyLkVQU0lMT04pKihlLWMpK3J9cmV2ZXJzZSh0LG4sZSl7Y29uc3RbYSxvXT10LFtyLGldPW4sYz10aGlzLnRyYW5zZm9ybShhKSxzPXRoaXMudHJhbnNmb3JtKG8pO3JldHVybiB0aGlzLnVudHJhbnNmb3JtKChzLWMpLyhpLXIrTnVtYmVyLkVQU0lMT04pKihlLXIpK2MpfW5pY2VEb21haW4odCl7Y29uc3RbbixlXT10O2lmKG4+ZSl0aHJvdyBuZXcgRXJyb3IoIlVuZXhwZWN0ZWQgaW5wdXQ6IG1pbiBpcyBsYXJnZXIgdGhhbiBtYXgiKTtjb25zdCBhPU1hdGgubWF4KG4sTnVtYmVyLk1JTl9WQUxVRSksbz1NYXRoLm1heChlLE51bWJlci5NSU5fVkFMVUUpO3JldHVybiBlPD0wP1tOdW1iZXIuTUlOX1ZBTFVFLDFdOltNYXRoLm1heChOdW1iZXIuTUlOX1ZBTFVFLC41KmEpLDIqb119dGlja3ModCxuKXtjb25zdCBlPXRbMF08PTA/TnVtYmVyLk1JTl9WQUxVRTp0WzBdLGE9dFsxXTw9MD9OdW1iZXIuTUlOX1ZBTFVFOnRbMV0sbz1ENigpLmRvbWFpbihbZSxhXSkudGlja3Mobik7cmV0dXJuIG8ubGVuZ3RoP286dH1pc1NhZmVOdW1iZXIodCl7cmV0dXJuIE51bWJlci5pc0Zpbml0ZSh0KSYmdD4wfX1jbGFzcyBpOXtjb25zdHJ1Y3Rvcigpe3RoaXMuc2NhbGU9dzgoKSx0aGlzLmRlZmF1bHRGb3JtYXR0ZXI9ZTl9Zm9yd2FyZCh0LG4sZSl7cmV0dXJuIHRoaXMuc2NhbGUuZG9tYWluKHQpLnJhbmdlKG4pKGUpfXJldmVyc2UodCxuLGUpe3JldHVybiB0aGlzLnNjYWxlLmRvbWFpbih0KS5yYW5nZShuKS5pbnZlcnQoZSkuZ2V0VGltZSgpfW5pY2VEb21haW4odCl7Y29uc3RbbixlXT10aGlzLnNjYWxlLmRvbWFpbih0KS5uaWNlKCkuZG9tYWluKCk7cmV0dXJuW24uZ2V0VGltZSgpLGUuZ2V0VGltZSgpXX10aWNrcyh0LG4pe3JldHVybiB0aGlzLnNjYWxlLmRvbWFpbih0KS50aWNrcyhuKS5tYXAoKHQ9PnQuZ2V0VGltZSgpKSl9aXNTYWZlTnVtYmVyKHQpe3JldHVybiBOdW1iZXIuaXNGaW5pdGUodCl9fWNvbnN0IGM5PUJvb2xlYW4oc2VsZi5oYXNPd25Qcm9wZXJ0eSgiZG9jdW1lbnQiKSYmZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgiY2FudmFzIikuZ2V0Q29udGV4dCgid2ViZ2wyIikpO2Z1bmN0aW9uIHM5KCl7cmV0dXJuIHNlbGYuaGFzT3duUHJvcGVydHkoIk9mZnNjcmVlbkNhbnZhcyIpfWZ1bmN0aW9uIGw5KHQsbil7aWYodC5sZW5ndGghPT1uLmxlbmd0aClyZXR1cm4hMTtmb3IobGV0IGU9MDtlPHQubGVuZ3RoO2UrKylpZih0W2VdIT09bltlXSlyZXR1cm4hMTtyZXR1cm4hMH1jbGFzcyBtOXtjb25zdHJ1Y3Rvcigpe3RoaXMueFNjYWxlPWE5KGokLkxJTkVBUiksdGhpcy55U2NhbGU9YTkoaiQuTElORUFSKSx0aGlzLmRvbUNvbnRhaW5lclJlY3Q9e3g6MCx3aWR0aDoxLHk6MCxoZWlnaHQ6MX0sdGhpcy5sYXN0VXBkYXRlZD0wLHRoaXMuY3VycmVudFZpZXdCb3hSZWN0PXt4OjAsd2lkdGg6MSx5OjAsaGVpZ2h0OjF9fWdldFVwZGF0ZUlkZW50aWZpZXIoKXtyZXR1cm4gdGhpcy5sYXN0VXBkYXRlZH11cGRhdGVJZGVudGlmaWVyKCl7dGhpcy5sYXN0VXBkYXRlZCsrfWlzWUF4aXNQb2ludGVkRG93bigpe3JldHVybiEwfXNldFhTY2FsZSh0KXt0aGlzLnhTY2FsZT10LHRoaXMudXBkYXRlSWRlbnRpZmllcigpfXNldFlTY2FsZSh0KXt0aGlzLnlTY2FsZT10LHRoaXMudXBkYXRlSWRlbnRpZmllcigpfWdldEN1cnJlbnRWaWV3Qm94UmVjdCgpe3JldHVybiB0aGlzLmN1cnJlbnRWaWV3Qm94UmVjdH1zZXRWaWV3Qm94UmVjdCh0KXt0aGlzLmN1cnJlbnRWaWV3Qm94UmVjdD10LHRoaXMudXBkYXRlSWRlbnRpZmllcigpfXNldERvbUNvbnRhaW5lclJlY3QodCl7dGhpcy5kb21Db250YWluZXJSZWN0PXQsdGhpcy51cGRhdGVJZGVudGlmaWVyKCl9dHJhbnNmb3JtRGF0YVRvVWlDb29yZCh0LG4pe2NvbnN0IGU9dCxhPShmdW5jdGlvbiBvKHQpe3JldHVybnt4Olt0LngsdC54K3Qud2lkdGhdLHk6W3QueSx0LnkrdC5oZWlnaHRdfX0pKHRoaXMuY3VycmVudFZpZXdCb3hSZWN0KTtyZXR1cm5bdGhpcy54U2NhbGUuZm9yd2FyZChhLngsW2UueCxlLngrZS53aWR0aF0sblswXSksdGhpcy55U2NhbGUuZm9yd2FyZChhLnksdGhpcy5pc1lBeGlzUG9pbnRlZERvd24oKT9bZS55K2UuaGVpZ2h0LGUueV06W2UueSxlLnkrZS5oZWlnaHRdLG5bMV0pXX19ZnVuY3Rpb24gZDkodCxuLGUsYSl7Y29uc3R7Y29sb3I6byx2aXNpYmxlOnIsb3BhY2l0eTppfT1hO2xldCBjPXQ7aWYoYyl7aWYoIXIpcmV0dXJuIGMuc3R5bGUuZGlzcGxheT0ibm9uZSIsY31lbHNle2lmKCFyKXJldHVybiBudWxsO2M9bigpfXJldHVybiBjPWUoYyksYy5zdHlsZS5kaXNwbGF5PSIiLGMuc3R5bGUuc3Ryb2tlPW8sYy5zdHlsZS5vcGFjaXR5PVN0cmluZyhudWxsIT1pP2k6MSksY31jbGFzcyBnOXtjb25zdHJ1Y3Rvcih0KXt0aGlzLnN2Zz10fWZsdXNoKCl7fW9uUmVzaXplKHQpe31kZXN0cm95T2JqZWN0KHQpe3RoaXMuc3ZnLnJlbW92ZUNoaWxkKHQuZG9tKX1jcmVhdGVQYXRoRFN0cmluZyh0KXtpZighdC5sZW5ndGgpcmV0dXJuIiI7Y29uc3Qgbj1uZXcgQXJyYXkodC5sZW5ndGgvMik7blswXT1gTSR7dFswXX0sJHt0WzFdfWA7Zm9yKGxldCBlPTE7ZTx0Lmxlbmd0aC8yO2UrKyluW2VdPWBMJHt0WzIqZV19LCR7dFsyKmUrMV19YDtyZXR1cm4gbi5qb2luKCIiKX1jcmVhdGVPclVwZGF0ZUxpbmVPYmplY3QodCxuLGUpe2NvbnN0IGE9ZDkobnVsbD09dD92b2lkIDA6dC5kb20sKCgpPT57Y29uc3QgdD1kb2N1bWVudC5jcmVhdGVFbGVtZW50TlMoImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiwicGF0aCIpO3Quc3R5bGUuZmlsbD0ibm9uZSI7Y29uc3QgZT10aGlzLmNyZWF0ZVBhdGhEU3RyaW5nKG4pO3JldHVybiB0LnNldEF0dHJpYnV0ZSgiZCIsZSksdGhpcy5zdmcuYXBwZW5kQ2hpbGQodCksdH0pLChlPT57aWYoIShudWxsPT10P3ZvaWQgMDp0LmRhdGEpfHwhbDkobixudWxsPT10P3ZvaWQgMDp0LmRhdGEpKXtjb25zdCB0PXRoaXMuY3JlYXRlUGF0aERTdHJpbmcobik7ZS5zZXRBdHRyaWJ1dGUoImQiLHQpfXJldHVybiBlfSksZSk7cmV0dXJuIG51bGw9PT1hP251bGw6KGEuc3R5bGUuc3Ryb2tlV2lkdGg9U3RyaW5nKGUud2lkdGgpLHtkb206YSxkYXRhOm59KX1jcmVhdGVPclVwZGF0ZVRyaWFuZ2xlT2JqZWN0KHQsbixlKXtjb25zdHtzaXplOmEsY29sb3I6b309ZSxyPWEqTWF0aC5zcXJ0KDMpLzIsaT1uZXcgRmxvYXQzMkFycmF5KFtuLngtYS8yLG4ueStyLzMsbi54K2EvMixuLnkrci8zLG4ueCxuLnktMipyLzNdKSxjPWQ5KG51bGw9PXQ/dm9pZCAwOnQuZG9tLCgoKT0+e2NvbnN0IHQ9ZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIsInBhdGgiKTt0LmNsYXNzTGlzdC5hZGQoInRyaWFuZ2xlIiksdC5zdHlsZS5maWxsPSJub25lIjtjb25zdCBuPXRoaXMuY3JlYXRlUGF0aERTdHJpbmcoaSk7cmV0dXJuIHQuc2V0QXR0cmlidXRlKCJkIixuKyJaIiksdGhpcy5zdmcuYXBwZW5kQ2hpbGQodCksdH0pLCh0PT57Y29uc3Qgbj10aGlzLmNyZWF0ZVBhdGhEU3RyaW5nKGkpO3JldHVybiB0LnNldEF0dHJpYnV0ZSgiZCIsbisiWiIpLHR9KSxlKTtyZXR1cm4gbnVsbD09PWM/bnVsbDooYy5zdHlsZS5maWxsPW8se2RvbTpjLGRhdGE6aX0pfWNyZWF0ZU9yVXBkYXRlQ2lyY2xlT2JqZWN0KHQsbixlKXtjb25zdHtjb2xvcjphLHJhZGl1czpvfT1lLHI9ZDkobnVsbD09dD92b2lkIDA6dC5kb20sKCgpPT57Y29uc3QgdD1kb2N1bWVudC5jcmVhdGVFbGVtZW50TlMoImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiwiY2lyY2xlIik7cmV0dXJuIHQuc3R5bGUuZmlsbD1hLHQuc2V0QXR0cmlidXRlKCJjeCIsU3RyaW5nKG4ueCkpLHQuc2V0QXR0cmlidXRlKCJjeSIsU3RyaW5nKG4ueSkpLHQuc2V0QXR0cmlidXRlKCJyIixTdHJpbmcobykpLHRoaXMuc3ZnLmFwcGVuZENoaWxkKHQpLHR9KSwodD0+KHQuc3R5bGUuZmlsbD1hLHQuc2V0QXR0cmlidXRlKCJjeCIsU3RyaW5nKG4ueCkpLHQuc2V0QXR0cmlidXRlKCJjeSIsU3RyaW5nKG4ueSkpLHQuc2V0QXR0cmlidXRlKCJyIixTdHJpbmcobykpLHQpKSxlKTtyZXR1cm4gbnVsbD09PXI/bnVsbDp7ZG9tOnIsZGF0YTpufX1jcmVhdGVPclVwZGF0ZVRyYXBlem9pZE9iamVjdCh0LG4sZSxhKXtpZihuLnkhPT1lLnkpdGhyb3cgbmV3IFJhbmdlRXJyb3IoIklucHV0IGVycm9yOiBzdGFydC55ICE9IGVuZC55LiIpO2NvbnN0e2FsdGl0dWRlOm8sY29sb3I6cn09YSxpPTIvTWF0aC5zcXJ0KDMpKm8sYz1uZXcgRmxvYXQzMkFycmF5KFtuLngtaS8yLG4ueStvLzIsbi54LG4ueS1vLzIsZS54LGUueS1vLzIsZS54K2kvMixlLnkrby8yXSkscz1kOShudWxsPT10P3ZvaWQgMDp0LmRvbSwoKCk9Pntjb25zdCB0PWRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciLCJwYXRoIik7dC5jbGFzc0xpc3QuYWRkKCJ0cmFwZXpvaWQiKSx0LnN0eWxlLmZpbGw9Im5vbmUiO2NvbnN0IG49dGhpcy5jcmVhdGVQYXRoRFN0cmluZyhjKTtyZXR1cm4gdC5zZXRBdHRyaWJ1dGUoImQiLG4rIloiKSx0aGlzLnN2Zy5hcHBlbmRDaGlsZCh0KSx0fSksKHQ9Pntjb25zdCBuPXRoaXMuY3JlYXRlUGF0aERTdHJpbmcoYyk7cmV0dXJuIHQuc2V0QXR0cmlidXRlKCJkIixuKyJaIiksdH0pLGEpO3JldHVybiBudWxsPT09cz9udWxsOihzLnN0eWxlLmZpbGw9cix7ZG9tOnMsZGF0YTpjfSl9fWNvbnN0IHA5PTEwMCxiOT0xZTMsdTk9MTAwMSxmOT0xMDAyLGg5PTEwMDMsXzk9MTAwNixDOT0xMDA4LE05PTEwMTIsTzk9MTAxNCxQOT0xMDE1LHg5PTEwMTYseTk9MTAyMCxrOT0xMDIyLHY5PTEwMjMsdzk9MTAyNixTOT0xMDI3LEU5PTIzMDAsQTk9MjMwMSx6OT0yMzAyLFI5PTI0MDAsVDk9MjQwMSxEOT0yNDAyLEk5PTNlMyxOOT03NjgwLEY5PTM1MDQ0LEw5PTM1MDQ4LEg5PSIzMDAgZXMiO2Z1bmN0aW9uIEI5KCl7fU9iamVjdC5hc3NpZ24oQjkucHJvdG90eXBlLHthZGRFdmVudExpc3RlbmVyOmZ1bmN0aW9uKHQsbil7dm9pZCAwPT09dGhpcy5fbGlzdGVuZXJzJiYodGhpcy5fbGlzdGVuZXJzPXt9KTtjb25zdCBlPXRoaXMuX2xpc3RlbmVyczt2b2lkIDA9PT1lW3RdJiYoZVt0XT1bXSksLTE9PT1lW3RdLmluZGV4T2YobikmJmVbdF0ucHVzaChuKX0saGFzRXZlbnRMaXN0ZW5lcjpmdW5jdGlvbih0LG4pe2lmKHZvaWQgMD09PXRoaXMuX2xpc3RlbmVycylyZXR1cm4hMTtjb25zdCBlPXRoaXMuX2xpc3RlbmVycztyZXR1cm4gdm9pZCAwIT09ZVt0XSYmLTEhPT1lW3RdLmluZGV4T2Yobil9LHJlbW92ZUV2ZW50TGlzdGVuZXI6ZnVuY3Rpb24odCxuKXtpZih2b2lkIDA9PT10aGlzLl9saXN0ZW5lcnMpcmV0dXJuO2NvbnN0IGU9dGhpcy5fbGlzdGVuZXJzW3RdO2lmKHZvaWQgMCE9PWUpe2NvbnN0IHQ9ZS5pbmRleE9mKG4pOy0xIT09dCYmZS5zcGxpY2UodCwxKX19LGRpc3BhdGNoRXZlbnQ6ZnVuY3Rpb24odCl7aWYodm9pZCAwPT09dGhpcy5fbGlzdGVuZXJzKXJldHVybjtjb25zdCBuPXRoaXMuX2xpc3RlbmVyc1t0LnR5cGVdO2lmKHZvaWQgMCE9PW4pe3QudGFyZ2V0PXRoaXM7Y29uc3QgZT1uLnNsaWNlKDApO2ZvcihsZXQgbj0wLGE9ZS5sZW5ndGg7bjxhO24rKyllW25dLmNhbGwodGhpcyx0KX19fSk7Y29uc3QgVjk9W107Zm9yKGxldCB0PTA7dDwyNTY7dCsrKVY5W3RdPSh0PDE2PyIwIjoiIikrdC50b1N0cmluZygxNik7bGV0IGo5PTEyMzQ1Njc7Y29uc3QgVTk9e0RFRzJSQUQ6TWF0aC5QSS8xODAsUkFEMkRFRzoxODAvTWF0aC5QSSxnZW5lcmF0ZVVVSUQ6ZnVuY3Rpb24oKXtjb25zdCB0PTQyOTQ5NjcyOTUqTWF0aC5yYW5kb20oKXwwLG49NDI5NDk2NzI5NSpNYXRoLnJhbmRvbSgpfDAsZT00Mjk0OTY3Mjk1Kk1hdGgucmFuZG9tKCl8MCxhPTQyOTQ5NjcyOTUqTWF0aC5yYW5kb20oKXwwO3JldHVybihWOVsyNTUmdF0rVjlbdD4+OCYyNTVdK1Y5W3Q+PjE2JjI1NV0rVjlbdD4+MjQmMjU1XSsiLSIrVjlbMjU1Jm5dK1Y5W24+PjgmMjU1XSsiLSIrVjlbbj4+MTYmMTV8NjRdK1Y5W24+PjI0JjI1NV0rIi0iK1Y5WzYzJmV8MTI4XStWOVtlPj44JjI1NV0rIi0iK1Y5W2U+PjE2JjI1NV0rVjlbZT4+MjQmMjU1XStWOVsyNTUmYV0rVjlbYT4+OCYyNTVdK1Y5W2E+PjE2JjI1NV0rVjlbYT4+MjQmMjU1XSkudG9VcHBlckNhc2UoKX0sY2xhbXA6ZnVuY3Rpb24odCxuLGUpe3JldHVybiBNYXRoLm1heChuLE1hdGgubWluKGUsdCkpfSxldWNsaWRlYW5Nb2R1bG86ZnVuY3Rpb24odCxuKXtyZXR1cm4odCVuK24pJW59LG1hcExpbmVhcjpmdW5jdGlvbih0LG4sZSxhLG8pe3JldHVybiBhKyh0LW4pKihvLWEpLyhlLW4pfSxsZXJwOmZ1bmN0aW9uKHQsbixlKXtyZXR1cm4oMS1lKSp0K2Uqbn0sZGFtcDpmdW5jdGlvbih0LG4sZSxhKXtyZXR1cm4gVTkubGVycCh0LG4sMS1NYXRoLmV4cCgtZSphKSl9LHBpbmdwb25nOmZ1bmN0aW9uKHQsbj0xKXtyZXR1cm4gbi1NYXRoLmFicyhVOS5ldWNsaWRlYW5Nb2R1bG8odCwyKm4pLW4pfSxzbW9vdGhzdGVwOmZ1bmN0aW9uKHQsbixlKXtyZXR1cm4gdDw9bj8wOnQ+PWU/MToodD0odC1uKS8oZS1uKSkqdCooMy0yKnQpfSxzbW9vdGhlcnN0ZXA6ZnVuY3Rpb24odCxuLGUpe3JldHVybiB0PD1uPzA6dD49ZT8xOih0PSh0LW4pLyhlLW4pKSp0KnQqKHQqKDYqdC0xNSkrMTApfSxyYW5kSW50OmZ1bmN0aW9uKHQsbil7cmV0dXJuIHQrTWF0aC5mbG9vcihNYXRoLnJhbmRvbSgpKihuLXQrMSkpfSxyYW5kRmxvYXQ6ZnVuY3Rpb24odCxuKXtyZXR1cm4gdCtNYXRoLnJhbmRvbSgpKihuLXQpfSxyYW5kRmxvYXRTcHJlYWQ6ZnVuY3Rpb24odCl7cmV0dXJuIHQqKC41LU1hdGgucmFuZG9tKCkpfSxzZWVkZWRSYW5kb206ZnVuY3Rpb24odCl7cmV0dXJuIHZvaWQgMCE9PXQmJihqOT10JTIxNDc0ODM2NDcpLGo5PTE2ODA3Kmo5JTIxNDc0ODM2NDcsKGo5LTEpLzIxNDc0ODM2NDZ9LGRlZ1RvUmFkOmZ1bmN0aW9uKHQpe3JldHVybiB0KlU5LkRFRzJSQUR9LHJhZFRvRGVnOmZ1bmN0aW9uKHQpe3JldHVybiB0KlU5LlJBRDJERUd9LGlzUG93ZXJPZlR3bzpmdW5jdGlvbih0KXtyZXR1cm4gMD09KHQmdC0xKSYmMCE9PXR9LGNlaWxQb3dlck9mVHdvOmZ1bmN0aW9uKHQpe3JldHVybiBNYXRoLnBvdygyLE1hdGguY2VpbChNYXRoLmxvZyh0KS9NYXRoLkxOMikpfSxmbG9vclBvd2VyT2ZUd286ZnVuY3Rpb24odCl7cmV0dXJuIE1hdGgucG93KDIsTWF0aC5mbG9vcihNYXRoLmxvZyh0KS9NYXRoLkxOMikpfSxzZXRRdWF0ZXJuaW9uRnJvbVByb3BlckV1bGVyOmZ1bmN0aW9uKHQsbixlLGEsbyl7Y29uc3Qgcj1NYXRoLmNvcyxpPU1hdGguc2luLGM9cihlLzIpLHM9aShlLzIpLGw9cigobithKS8yKSxtPWkoKG4rYSkvMiksZD1yKChuLWEpLzIpLGc9aSgobi1hKS8yKSxwPXIoKGEtbikvMiksYj1pKChhLW4pLzIpO3N3aXRjaChvKXtjYXNlIlhZWCI6dC5zZXQoYyptLHMqZCxzKmcsYypsKTticmVhaztjYXNlIllaWSI6dC5zZXQocypnLGMqbSxzKmQsYypsKTticmVhaztjYXNlIlpYWiI6dC5zZXQocypkLHMqZyxjKm0sYypsKTticmVhaztjYXNlIlhaWCI6dC5zZXQoYyptLHMqYixzKnAsYypsKTticmVhaztjYXNlIllYWSI6dC5zZXQocypwLGMqbSxzKmIsYypsKTticmVhaztjYXNlIlpZWiI6dC5zZXQocypiLHMqcCxjKm0sYypsKTticmVhaztkZWZhdWx0OmNvbnNvbGUud2FybigiVEhSRUUuTWF0aFV0aWxzOiAuc2V0UXVhdGVybmlvbkZyb21Qcm9wZXJFdWxlcigpIGVuY291bnRlcmVkIGFuIHVua25vd24gb3JkZXI6ICIrbyl9fX07Y2xhc3MgVzl7Y29uc3RydWN0b3IodD0wLG49MCl7T2JqZWN0LmRlZmluZVByb3BlcnR5KHRoaXMsImlzVmVjdG9yMiIse3ZhbHVlOiEwfSksdGhpcy54PXQsdGhpcy55PW59Z2V0IHdpZHRoKCl7cmV0dXJuIHRoaXMueH1zZXQgd2lkdGgodCl7dGhpcy54PXR9Z2V0IGhlaWdodCgpe3JldHVybiB0aGlzLnl9c2V0IGhlaWdodCh0KXt0aGlzLnk9dH1zZXQodCxuKXtyZXR1cm4gdGhpcy54PXQsdGhpcy55PW4sdGhpc31zZXRTY2FsYXIodCl7cmV0dXJuIHRoaXMueD10LHRoaXMueT10LHRoaXN9c2V0WCh0KXtyZXR1cm4gdGhpcy54PXQsdGhpc31zZXRZKHQpe3JldHVybiB0aGlzLnk9dCx0aGlzfXNldENvbXBvbmVudCh0LG4pe3N3aXRjaCh0KXtjYXNlIDA6dGhpcy54PW47YnJlYWs7Y2FzZSAxOnRoaXMueT1uO2JyZWFrO2RlZmF1bHQ6dGhyb3cgbmV3IEVycm9yKCJpbmRleCBpcyBvdXQgb2YgcmFuZ2U6ICIrdCl9cmV0dXJuIHRoaXN9Z2V0Q29tcG9uZW50KHQpe3N3aXRjaCh0KXtjYXNlIDA6cmV0dXJuIHRoaXMueDtjYXNlIDE6cmV0dXJuIHRoaXMueTtkZWZhdWx0OnRocm93IG5ldyBFcnJvcigiaW5kZXggaXMgb3V0IG9mIHJhbmdlOiAiK3QpfX1jbG9uZSgpe3JldHVybiBuZXcgdGhpcy5jb25zdHJ1Y3Rvcih0aGlzLngsdGhpcy55KX1jb3B5KHQpe3JldHVybiB0aGlzLng9dC54LHRoaXMueT10LnksdGhpc31hZGQodCxuKXtyZXR1cm4gdm9pZCAwIT09bj8oY29uc29sZS53YXJuKCJUSFJFRS5WZWN0b3IyOiAuYWRkKCkgbm93IG9ubHkgYWNjZXB0cyBvbmUgYXJndW1lbnQuIFVzZSAuYWRkVmVjdG9ycyggYSwgYiApIGluc3RlYWQuIiksdGhpcy5hZGRWZWN0b3JzKHQsbikpOih0aGlzLngrPXQueCx0aGlzLnkrPXQueSx0aGlzKX1hZGRTY2FsYXIodCl7cmV0dXJuIHRoaXMueCs9dCx0aGlzLnkrPXQsdGhpc31hZGRWZWN0b3JzKHQsbil7cmV0dXJuIHRoaXMueD10Lngrbi54LHRoaXMueT10Lnkrbi55LHRoaXN9YWRkU2NhbGVkVmVjdG9yKHQsbil7cmV0dXJuIHRoaXMueCs9dC54Km4sdGhpcy55Kz10Lnkqbix0aGlzfXN1Yih0LG4pe3JldHVybiB2b2lkIDAhPT1uPyhjb25zb2xlLndhcm4oIlRIUkVFLlZlY3RvcjI6IC5zdWIoKSBub3cgb25seSBhY2NlcHRzIG9uZSBhcmd1bWVudC4gVXNlIC5zdWJWZWN0b3JzKCBhLCBiICkgaW5zdGVhZC4iKSx0aGlzLnN1YlZlY3RvcnModCxuKSk6KHRoaXMueC09dC54LHRoaXMueS09dC55LHRoaXMpfXN1YlNjYWxhcih0KXtyZXR1cm4gdGhpcy54LT10LHRoaXMueS09dCx0aGlzfXN1YlZlY3RvcnModCxuKXtyZXR1cm4gdGhpcy54PXQueC1uLngsdGhpcy55PXQueS1uLnksdGhpc31tdWx0aXBseSh0KXtyZXR1cm4gdGhpcy54Kj10LngsdGhpcy55Kj10LnksdGhpc31tdWx0aXBseVNjYWxhcih0KXtyZXR1cm4gdGhpcy54Kj10LHRoaXMueSo9dCx0aGlzfWRpdmlkZSh0KXtyZXR1cm4gdGhpcy54Lz10LngsdGhpcy55Lz10LnksdGhpc31kaXZpZGVTY2FsYXIodCl7cmV0dXJuIHRoaXMubXVsdGlwbHlTY2FsYXIoMS90KX1hcHBseU1hdHJpeDModCl7Y29uc3Qgbj10aGlzLngsZT10aGlzLnksYT10LmVsZW1lbnRzO3JldHVybiB0aGlzLng9YVswXSpuK2FbM10qZSthWzZdLHRoaXMueT1hWzFdKm4rYVs0XSplK2FbN10sdGhpc31taW4odCl7cmV0dXJuIHRoaXMueD1NYXRoLm1pbih0aGlzLngsdC54KSx0aGlzLnk9TWF0aC5taW4odGhpcy55LHQueSksdGhpc31tYXgodCl7cmV0dXJuIHRoaXMueD1NYXRoLm1heCh0aGlzLngsdC54KSx0aGlzLnk9TWF0aC5tYXgodGhpcy55LHQueSksdGhpc31jbGFtcCh0LG4pe3JldHVybiB0aGlzLng9TWF0aC5tYXgodC54LE1hdGgubWluKG4ueCx0aGlzLngpKSx0aGlzLnk9TWF0aC5tYXgodC55LE1hdGgubWluKG4ueSx0aGlzLnkpKSx0aGlzfWNsYW1wU2NhbGFyKHQsbil7cmV0dXJuIHRoaXMueD1NYXRoLm1heCh0LE1hdGgubWluKG4sdGhpcy54KSksdGhpcy55PU1hdGgubWF4KHQsTWF0aC5taW4obix0aGlzLnkpKSx0aGlzfWNsYW1wTGVuZ3RoKHQsbil7Y29uc3QgZT10aGlzLmxlbmd0aCgpO3JldHVybiB0aGlzLmRpdmlkZVNjYWxhcihlfHwxKS5tdWx0aXBseVNjYWxhcihNYXRoLm1heCh0LE1hdGgubWluKG4sZSkpKX1mbG9vcigpe3JldHVybiB0aGlzLng9TWF0aC5mbG9vcih0aGlzLngpLHRoaXMueT1NYXRoLmZsb29yKHRoaXMueSksdGhpc31jZWlsKCl7cmV0dXJuIHRoaXMueD1NYXRoLmNlaWwodGhpcy54KSx0aGlzLnk9TWF0aC5jZWlsKHRoaXMueSksdGhpc31yb3VuZCgpe3JldHVybiB0aGlzLng9TWF0aC5yb3VuZCh0aGlzLngpLHRoaXMueT1NYXRoLnJvdW5kKHRoaXMueSksdGhpc31yb3VuZFRvWmVybygpe3JldHVybiB0aGlzLng9dGhpcy54PDA/TWF0aC5jZWlsKHRoaXMueCk6TWF0aC5mbG9vcih0aGlzLngpLHRoaXMueT10aGlzLnk8MD9NYXRoLmNlaWwodGhpcy55KTpNYXRoLmZsb29yKHRoaXMueSksdGhpc31uZWdhdGUoKXtyZXR1cm4gdGhpcy54PS10aGlzLngsdGhpcy55PS10aGlzLnksdGhpc31kb3QodCl7cmV0dXJuIHRoaXMueCp0LngrdGhpcy55KnQueX1jcm9zcyh0KXtyZXR1cm4gdGhpcy54KnQueS10aGlzLnkqdC54fWxlbmd0aFNxKCl7cmV0dXJuIHRoaXMueCp0aGlzLngrdGhpcy55KnRoaXMueX1sZW5ndGgoKXtyZXR1cm4gTWF0aC5zcXJ0KHRoaXMueCp0aGlzLngrdGhpcy55KnRoaXMueSl9bWFuaGF0dGFuTGVuZ3RoKCl7cmV0dXJuIE1hdGguYWJzKHRoaXMueCkrTWF0aC5hYnModGhpcy55KX1ub3JtYWxpemUoKXtyZXR1cm4gdGhpcy5kaXZpZGVTY2FsYXIodGhpcy5sZW5ndGgoKXx8MSl9YW5nbGUoKXtyZXR1cm4gTWF0aC5hdGFuMigtdGhpcy55LC10aGlzLngpK01hdGguUEl9ZGlzdGFuY2VUbyh0KXtyZXR1cm4gTWF0aC5zcXJ0KHRoaXMuZGlzdGFuY2VUb1NxdWFyZWQodCkpfWRpc3RhbmNlVG9TcXVhcmVkKHQpe2NvbnN0IG49dGhpcy54LXQueCxlPXRoaXMueS10Lnk7cmV0dXJuIG4qbitlKmV9bWFuaGF0dGFuRGlzdGFuY2VUbyh0KXtyZXR1cm4gTWF0aC5hYnModGhpcy54LXQueCkrTWF0aC5hYnModGhpcy55LXQueSl9c2V0TGVuZ3RoKHQpe3JldHVybiB0aGlzLm5vcm1hbGl6ZSgpLm11bHRpcGx5U2NhbGFyKHQpfWxlcnAodCxuKXtyZXR1cm4gdGhpcy54Kz0odC54LXRoaXMueCkqbix0aGlzLnkrPSh0LnktdGhpcy55KSpuLHRoaXN9bGVycFZlY3RvcnModCxuLGUpe3JldHVybiB0aGlzLng9dC54KyhuLngtdC54KSplLHRoaXMueT10LnkrKG4ueS10LnkpKmUsdGhpc31lcXVhbHModCl7cmV0dXJuIHQueD09PXRoaXMueCYmdC55PT09dGhpcy55fWZyb21BcnJheSh0LG49MCl7cmV0dXJuIHRoaXMueD10W25dLHRoaXMueT10W24rMV0sdGhpc310b0FycmF5KHQ9W10sbj0wKXtyZXR1cm4gdFtuXT10aGlzLngsdFtuKzFdPXRoaXMueSx0fWZyb21CdWZmZXJBdHRyaWJ1dGUodCxuLGUpe3JldHVybiB2b2lkIDAhPT1lJiZjb25zb2xlLndhcm4oIlRIUkVFLlZlY3RvcjI6IG9mZnNldCBoYXMgYmVlbiByZW1vdmVkIGZyb20gLmZyb21CdWZmZXJBdHRyaWJ1dGUoKS4iKSx0aGlzLng9dC5nZXRYKG4pLHRoaXMueT10LmdldFkobiksdGhpc31yb3RhdGVBcm91bmQodCxuKXtjb25zdCBlPU1hdGguY29zKG4pLGE9TWF0aC5zaW4obiksbz10aGlzLngtdC54LHI9dGhpcy55LXQueTtyZXR1cm4gdGhpcy54PW8qZS1yKmErdC54LHRoaXMueT1vKmErciplK3QueSx0aGlzfXJhbmRvbSgpe3JldHVybiB0aGlzLng9TWF0aC5yYW5kb20oKSx0aGlzLnk9TWF0aC5yYW5kb20oKSx0aGlzfX1jbGFzcyBHOXtjb25zdHJ1Y3Rvcigpe09iamVjdC5kZWZpbmVQcm9wZXJ0eSh0aGlzLCJpc01hdHJpeDMiLHt2YWx1ZTohMH0pLHRoaXMuZWxlbWVudHM9WzEsMCwwLDAsMSwwLDAsMCwxXSxhcmd1bWVudHMubGVuZ3RoPjAmJmNvbnNvbGUuZXJyb3IoIlRIUkVFLk1hdHJpeDM6IHRoZSBjb25zdHJ1Y3RvciBubyBsb25nZXIgcmVhZHMgYXJndW1lbnRzLiB1c2UgLnNldCgpIGluc3RlYWQuIil9c2V0KHQsbixlLGEsbyxyLGksYyxzKXtjb25zdCBsPXRoaXMuZWxlbWVudHM7cmV0dXJuIGxbMF09dCxsWzFdPWEsbFsyXT1pLGxbM109bixsWzRdPW8sbFs1XT1jLGxbNl09ZSxsWzddPXIsbFs4XT1zLHRoaXN9aWRlbnRpdHkoKXtyZXR1cm4gdGhpcy5zZXQoMSwwLDAsMCwxLDAsMCwwLDEpLHRoaXN9Y2xvbmUoKXtyZXR1cm4obmV3IHRoaXMuY29uc3RydWN0b3IpLmZyb21BcnJheSh0aGlzLmVsZW1lbnRzKX1jb3B5KHQpe2NvbnN0IG49dGhpcy5lbGVtZW50cyxlPXQuZWxlbWVudHM7cmV0dXJuIG5bMF09ZVswXSxuWzFdPWVbMV0sblsyXT1lWzJdLG5bM109ZVszXSxuWzRdPWVbNF0sbls1XT1lWzVdLG5bNl09ZVs2XSxuWzddPWVbN10sbls4XT1lWzhdLHRoaXN9ZXh0cmFjdEJhc2lzKHQsbixlKXtyZXR1cm4gdC5zZXRGcm9tTWF0cml4M0NvbHVtbih0aGlzLDApLG4uc2V0RnJvbU1hdHJpeDNDb2x1bW4odGhpcywxKSxlLnNldEZyb21NYXRyaXgzQ29sdW1uKHRoaXMsMiksdGhpc31zZXRGcm9tTWF0cml4NCh0KXtjb25zdCBuPXQuZWxlbWVudHM7cmV0dXJuIHRoaXMuc2V0KG5bMF0sbls0XSxuWzhdLG5bMV0sbls1XSxuWzldLG5bMl0sbls2XSxuWzEwXSksdGhpc31tdWx0aXBseSh0KXtyZXR1cm4gdGhpcy5tdWx0aXBseU1hdHJpY2VzKHRoaXMsdCl9cHJlbXVsdGlwbHkodCl7cmV0dXJuIHRoaXMubXVsdGlwbHlNYXRyaWNlcyh0LHRoaXMpfW11bHRpcGx5TWF0cmljZXModCxuKXtjb25zdCBlPXQuZWxlbWVudHMsYT1uLmVsZW1lbnRzLG89dGhpcy5lbGVtZW50cyxyPWVbMF0saT1lWzNdLGM9ZVs2XSxzPWVbMV0sbD1lWzRdLG09ZVs3XSxkPWVbMl0sZz1lWzVdLHA9ZVs4XSxiPWFbMF0sdT1hWzNdLGY9YVs2XSxoPWFbMV0sXz1hWzRdLEM9YVs3XSxNPWFbMl0sTz1hWzVdLFA9YVs4XTtyZXR1cm4gb1swXT1yKmIraSpoK2MqTSxvWzNdPXIqdStpKl8rYypPLG9bNl09cipmK2kqQytjKlAsb1sxXT1zKmIrbCpoK20qTSxvWzRdPXMqdStsKl8rbSpPLG9bN109cypmK2wqQyttKlAsb1syXT1kKmIrZypoK3AqTSxvWzVdPWQqdStnKl8rcCpPLG9bOF09ZCpmK2cqQytwKlAsdGhpc31tdWx0aXBseVNjYWxhcih0KXtjb25zdCBuPXRoaXMuZWxlbWVudHM7cmV0dXJuIG5bMF0qPXQsblszXSo9dCxuWzZdKj10LG5bMV0qPXQsbls0XSo9dCxuWzddKj10LG5bMl0qPXQsbls1XSo9dCxuWzhdKj10LHRoaXN9ZGV0ZXJtaW5hbnQoKXtjb25zdCB0PXRoaXMuZWxlbWVudHMsbj10WzBdLGU9dFsxXSxhPXRbMl0sbz10WzNdLHI9dFs0XSxpPXRbNV0sYz10WzZdLHM9dFs3XSxsPXRbOF07cmV0dXJuIG4qcipsLW4qaSpzLWUqbypsK2UqaSpjK2EqbypzLWEqcipjfWludmVydCgpe2NvbnN0IHQ9dGhpcy5lbGVtZW50cyxuPXRbMF0sZT10WzFdLGE9dFsyXSxvPXRbM10scj10WzRdLGk9dFs1XSxjPXRbNl0scz10WzddLGw9dFs4XSxtPWwqci1pKnMsZD1pKmMtbCpvLGc9cypvLXIqYyxwPW4qbStlKmQrYSpnO2lmKDA9PT1wKXJldHVybiB0aGlzLnNldCgwLDAsMCwwLDAsMCwwLDAsMCk7Y29uc3QgYj0xL3A7cmV0dXJuIHRbMF09bSpiLHRbMV09KGEqcy1sKmUpKmIsdFsyXT0oaSplLWEqcikqYix0WzNdPWQqYix0WzRdPShsKm4tYSpjKSpiLHRbNV09KGEqby1pKm4pKmIsdFs2XT1nKmIsdFs3XT0oZSpjLXMqbikqYix0WzhdPShyKm4tZSpvKSpiLHRoaXN9dHJhbnNwb3NlKCl7bGV0IHQ7Y29uc3Qgbj10aGlzLmVsZW1lbnRzO3JldHVybiB0PW5bMV0sblsxXT1uWzNdLG5bM109dCx0PW5bMl0sblsyXT1uWzZdLG5bNl09dCx0PW5bNV0sbls1XT1uWzddLG5bN109dCx0aGlzfWdldE5vcm1hbE1hdHJpeCh0KXtyZXR1cm4gdGhpcy5zZXRGcm9tTWF0cml4NCh0KS5jb3B5KHRoaXMpLmludmVydCgpLnRyYW5zcG9zZSgpfXRyYW5zcG9zZUludG9BcnJheSh0KXtjb25zdCBuPXRoaXMuZWxlbWVudHM7cmV0dXJuIHRbMF09blswXSx0WzFdPW5bM10sdFsyXT1uWzZdLHRbM109blsxXSx0WzRdPW5bNF0sdFs1XT1uWzddLHRbNl09blsyXSx0WzddPW5bNV0sdFs4XT1uWzhdLHRoaXN9c2V0VXZUcmFuc2Zvcm0odCxuLGUsYSxvLHIsaSl7Y29uc3QgYz1NYXRoLmNvcyhvKSxzPU1hdGguc2luKG8pO3JldHVybiB0aGlzLnNldChlKmMsZSpzLC1lKihjKnIrcyppKStyK3QsLWEqcyxhKmMsLWEqKC1zKnIrYyppKStpK24sMCwwLDEpLHRoaXN9c2NhbGUodCxuKXtjb25zdCBlPXRoaXMuZWxlbWVudHM7cmV0dXJuIGVbMF0qPXQsZVszXSo9dCxlWzZdKj10LGVbMV0qPW4sZVs0XSo9bixlWzddKj1uLHRoaXN9cm90YXRlKHQpe2NvbnN0IG49TWF0aC5jb3ModCksZT1NYXRoLnNpbih0KSxhPXRoaXMuZWxlbWVudHMsbz1hWzBdLHI9YVszXSxpPWFbNl0sYz1hWzFdLHM9YVs0XSxsPWFbN107cmV0dXJuIGFbMF09bipvK2UqYyxhWzNdPW4qcitlKnMsYVs2XT1uKmkrZSpsLGFbMV09LWUqbytuKmMsYVs0XT0tZSpyK24qcyxhWzddPS1lKmkrbipsLHRoaXN9dHJhbnNsYXRlKHQsbil7Y29uc3QgZT10aGlzLmVsZW1lbnRzO3JldHVybiBlWzBdKz10KmVbMl0sZVszXSs9dCplWzVdLGVbNl0rPXQqZVs4XSxlWzFdKz1uKmVbMl0sZVs0XSs9biplWzVdLGVbN10rPW4qZVs4XSx0aGlzfWVxdWFscyh0KXtjb25zdCBuPXRoaXMuZWxlbWVudHMsZT10LmVsZW1lbnRzO2ZvcihsZXQgdD0wO3Q8OTt0KyspaWYoblt0XSE9PWVbdF0pcmV0dXJuITE7cmV0dXJuITB9ZnJvbUFycmF5KHQsbj0wKXtmb3IobGV0IGU9MDtlPDk7ZSsrKXRoaXMuZWxlbWVudHNbZV09dFtlK25dO3JldHVybiB0aGlzfXRvQXJyYXkodD1bXSxuPTApe2NvbnN0IGU9dGhpcy5lbGVtZW50cztyZXR1cm4gdFtuXT1lWzBdLHRbbisxXT1lWzFdLHRbbisyXT1lWzJdLHRbbiszXT1lWzNdLHRbbis0XT1lWzRdLHRbbis1XT1lWzVdLHRbbis2XT1lWzZdLHRbbis3XT1lWzddLHRbbis4XT1lWzhdLHR9fWxldCBZOTtjb25zdCBxOT17Z2V0RGF0YVVSTDpmdW5jdGlvbih0KXtpZigvXmRhdGE6L2kudGVzdCh0LnNyYykpcmV0dXJuIHQuc3JjO2lmKCJ1bmRlZmluZWQiPT10eXBlb2YgSFRNTENhbnZhc0VsZW1lbnQpcmV0dXJuIHQuc3JjO2xldCBuO2lmKHQgaW5zdGFuY2VvZiBIVE1MQ2FudmFzRWxlbWVudCluPXQ7ZWxzZXt2b2lkIDA9PT1ZOSYmKFk5PWRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3dy53My5vcmcvMTk5OS94aHRtbCIsImNhbnZhcyIpKSxZOS53aWR0aD10LndpZHRoLFk5LmhlaWdodD10LmhlaWdodDtjb25zdCBlPVk5LmdldENvbnRleHQoIjJkIik7dCBpbnN0YW5jZW9mIEltYWdlRGF0YT9lLnB1dEltYWdlRGF0YSh0LDAsMCk6ZS5kcmF3SW1hZ2UodCwwLDAsdC53aWR0aCx0LmhlaWdodCksbj1ZOX1yZXR1cm4gbi53aWR0aD4yMDQ4fHxuLmhlaWdodD4yMDQ4P24udG9EYXRhVVJMKCJpbWFnZS9qcGVnIiwuNik6bi50b0RhdGFVUkwoImltYWdlL3BuZyIpfX07bGV0IFo5PTA7ZnVuY3Rpb24gWDkodD1YOS5ERUZBVUxUX0lNQUdFLG49WDkuREVGQVVMVF9NQVBQSU5HLGU9MTAwMSxhPTEwMDEsbz0xMDA2LHI9MTAwOCxpPTEwMjMsYz0xMDA5LHM9MSxsPTNlMyl7T2JqZWN0LmRlZmluZVByb3BlcnR5KHRoaXMsImlkIix7dmFsdWU6WjkrK30pLHRoaXMudXVpZD1VOS5nZW5lcmF0ZVVVSUQoKSx0aGlzLm5hbWU9IiIsdGhpcy5pbWFnZT10LHRoaXMubWlwbWFwcz1bXSx0aGlzLm1hcHBpbmc9bix0aGlzLndyYXBTPWUsdGhpcy53cmFwVD1hLHRoaXMubWFnRmlsdGVyPW8sdGhpcy5taW5GaWx0ZXI9cix0aGlzLmFuaXNvdHJvcHk9cyx0aGlzLmZvcm1hdD1pLHRoaXMuaW50ZXJuYWxGb3JtYXQ9bnVsbCx0aGlzLnR5cGU9Yyx0aGlzLm9mZnNldD1uZXcgVzkoMCwwKSx0aGlzLnJlcGVhdD1uZXcgVzkoMSwxKSx0aGlzLmNlbnRlcj1uZXcgVzkoMCwwKSx0aGlzLnJvdGF0aW9uPTAsdGhpcy5tYXRyaXhBdXRvVXBkYXRlPSEwLHRoaXMubWF0cml4PW5ldyBHOSx0aGlzLmdlbmVyYXRlTWlwbWFwcz0hMCx0aGlzLnByZW11bHRpcGx5QWxwaGE9ITEsdGhpcy5mbGlwWT0hMCx0aGlzLnVucGFja0FsaWdubWVudD00LHRoaXMuZW5jb2Rpbmc9bCx0aGlzLnZlcnNpb249MCx0aGlzLm9uVXBkYXRlPW51bGx9ZnVuY3Rpb24gSjkodCl7cmV0dXJuInVuZGVmaW5lZCIhPXR5cGVvZiBIVE1MSW1hZ2VFbGVtZW50JiZ0IGluc3RhbmNlb2YgSFRNTEltYWdlRWxlbWVudHx8InVuZGVmaW5lZCIhPXR5cGVvZiBIVE1MQ2FudmFzRWxlbWVudCYmdCBpbnN0YW5jZW9mIEhUTUxDYW52YXNFbGVtZW50fHwidW5kZWZpbmVkIiE9dHlwZW9mIEltYWdlQml0bWFwJiZ0IGluc3RhbmNlb2YgSW1hZ2VCaXRtYXA/cTkuZ2V0RGF0YVVSTCh0KTp0LmRhdGE/e2RhdGE6QXJyYXkucHJvdG90eXBlLnNsaWNlLmNhbGwodC5kYXRhKSx3aWR0aDp0LndpZHRoLGhlaWdodDp0LmhlaWdodCx0eXBlOnQuZGF0YS5jb25zdHJ1Y3Rvci5uYW1lfTooY29uc29sZS53YXJuKCJUSFJFRS5UZXh0dXJlOiBVbmFibGUgdG8gc2VyaWFsaXplIFRleHR1cmUuIikse30pfVg5LkRFRkFVTFRfSU1BR0U9dm9pZCAwLFg5LkRFRkFVTFRfTUFQUElORz0zMDAsWDkucHJvdG90eXBlPU9iamVjdC5hc3NpZ24oT2JqZWN0LmNyZWF0ZShCOS5wcm90b3R5cGUpLHtjb25zdHJ1Y3RvcjpYOSxpc1RleHR1cmU6ITAsdXBkYXRlTWF0cml4OmZ1bmN0aW9uKCl7dGhpcy5tYXRyaXguc2V0VXZUcmFuc2Zvcm0odGhpcy5vZmZzZXQueCx0aGlzLm9mZnNldC55LHRoaXMucmVwZWF0LngsdGhpcy5yZXBlYXQueSx0aGlzLnJvdGF0aW9uLHRoaXMuY2VudGVyLngsdGhpcy5jZW50ZXIueSl9LGNsb25lOmZ1bmN0aW9uKCl7cmV0dXJuKG5ldyB0aGlzLmNvbnN0cnVjdG9yKS5jb3B5KHRoaXMpfSxjb3B5OmZ1bmN0aW9uKHQpe3JldHVybiB0aGlzLm5hbWU9dC5uYW1lLHRoaXMuaW1hZ2U9dC5pbWFnZSx0aGlzLm1pcG1hcHM9dC5taXBtYXBzLnNsaWNlKDApLHRoaXMubWFwcGluZz10Lm1hcHBpbmcsdGhpcy53cmFwUz10LndyYXBTLHRoaXMud3JhcFQ9dC53cmFwVCx0aGlzLm1hZ0ZpbHRlcj10Lm1hZ0ZpbHRlcix0aGlzLm1pbkZpbHRlcj10Lm1pbkZpbHRlcix0aGlzLmFuaXNvdHJvcHk9dC5hbmlzb3Ryb3B5LHRoaXMuZm9ybWF0PXQuZm9ybWF0LHRoaXMuaW50ZXJuYWxGb3JtYXQ9dC5pbnRlcm5hbEZvcm1hdCx0aGlzLnR5cGU9dC50eXBlLHRoaXMub2Zmc2V0LmNvcHkodC5vZmZzZXQpLHRoaXMucmVwZWF0LmNvcHkodC5yZXBlYXQpLHRoaXMuY2VudGVyLmNvcHkodC5jZW50ZXIpLHRoaXMucm90YXRpb249dC5yb3RhdGlvbix0aGlzLm1hdHJpeEF1dG9VcGRhdGU9dC5tYXRyaXhBdXRvVXBkYXRlLHRoaXMubWF0cml4LmNvcHkodC5tYXRyaXgpLHRoaXMuZ2VuZXJhdGVNaXBtYXBzPXQuZ2VuZXJhdGVNaXBtYXBzLHRoaXMucHJlbXVsdGlwbHlBbHBoYT10LnByZW11bHRpcGx5QWxwaGEsdGhpcy5mbGlwWT10LmZsaXBZLHRoaXMudW5wYWNrQWxpZ25tZW50PXQudW5wYWNrQWxpZ25tZW50LHRoaXMuZW5jb2Rpbmc9dC5lbmNvZGluZyx0aGlzfSx0b0pTT046ZnVuY3Rpb24odCl7Y29uc3Qgbj12b2lkIDA9PT10fHwic3RyaW5nIj09dHlwZW9mIHQ7aWYoIW4mJnZvaWQgMCE9PXQudGV4dHVyZXNbdGhpcy51dWlkXSlyZXR1cm4gdC50ZXh0dXJlc1t0aGlzLnV1aWRdO2NvbnN0IGU9e21ldGFkYXRhOnt2ZXJzaW9uOjQuNSx0eXBlOiJUZXh0dXJlIixnZW5lcmF0b3I6IlRleHR1cmUudG9KU09OIn0sdXVpZDp0aGlzLnV1aWQsbmFtZTp0aGlzLm5hbWUsbWFwcGluZzp0aGlzLm1hcHBpbmcscmVwZWF0Olt0aGlzLnJlcGVhdC54LHRoaXMucmVwZWF0LnldLG9mZnNldDpbdGhpcy5vZmZzZXQueCx0aGlzLm9mZnNldC55XSxjZW50ZXI6W3RoaXMuY2VudGVyLngsdGhpcy5jZW50ZXIueV0scm90YXRpb246dGhpcy5yb3RhdGlvbix3cmFwOlt0aGlzLndyYXBTLHRoaXMud3JhcFRdLGZvcm1hdDp0aGlzLmZvcm1hdCx0eXBlOnRoaXMudHlwZSxlbmNvZGluZzp0aGlzLmVuY29kaW5nLG1pbkZpbHRlcjp0aGlzLm1pbkZpbHRlcixtYWdGaWx0ZXI6dGhpcy5tYWdGaWx0ZXIsYW5pc290cm9weTp0aGlzLmFuaXNvdHJvcHksZmxpcFk6dGhpcy5mbGlwWSxwcmVtdWx0aXBseUFscGhhOnRoaXMucHJlbXVsdGlwbHlBbHBoYSx1bnBhY2tBbGlnbm1lbnQ6dGhpcy51bnBhY2tBbGlnbm1lbnR9O2lmKHZvaWQgMCE9PXRoaXMuaW1hZ2Upe2NvbnN0IGE9dGhpcy5pbWFnZTtpZih2b2lkIDA9PT1hLnV1aWQmJihhLnV1aWQ9VTkuZ2VuZXJhdGVVVUlEKCkpLCFuJiZ2b2lkIDA9PT10LmltYWdlc1thLnV1aWRdKXtsZXQgbjtpZihBcnJheS5pc0FycmF5KGEpKXtuPVtdO2ZvcihsZXQgdD0wLGU9YS5sZW5ndGg7dDxlO3QrKyluLnB1c2goSjkoYVt0XS5pc0RhdGFUZXh0dXJlP2FbdF0uaW1hZ2U6YVt0XSkpfWVsc2Ugbj1KOShhKTt0LmltYWdlc1thLnV1aWRdPXt1dWlkOmEudXVpZCx1cmw6bn19ZS5pbWFnZT1hLnV1aWR9cmV0dXJuIG58fCh0LnRleHR1cmVzW3RoaXMudXVpZF09ZSksZX0sZGlzcG9zZTpmdW5jdGlvbigpe3RoaXMuZGlzcGF0Y2hFdmVudCh7dHlwZToiZGlzcG9zZSJ9KX0sdHJhbnNmb3JtVXY6ZnVuY3Rpb24odCl7aWYoMzAwIT09dGhpcy5tYXBwaW5nKXJldHVybiB0O2lmKHQuYXBwbHlNYXRyaXgzKHRoaXMubWF0cml4KSx0Lng8MHx8dC54PjEpc3dpdGNoKHRoaXMud3JhcFMpe2Nhc2UgYjk6dC54PXQueC1NYXRoLmZsb29yKHQueCk7YnJlYWs7Y2FzZSB1OTp0Lng9dC54PDA/MDoxO2JyZWFrO2Nhc2UgZjk6dC54PTE9PT1NYXRoLmFicyhNYXRoLmZsb29yKHQueCklMik/TWF0aC5jZWlsKHQueCktdC54OnQueC1NYXRoLmZsb29yKHQueCl9aWYodC55PDB8fHQueT4xKXN3aXRjaCh0aGlzLndyYXBUKXtjYXNlIGI5OnQueT10LnktTWF0aC5mbG9vcih0LnkpO2JyZWFrO2Nhc2UgdTk6dC55PXQueTwwPzA6MTticmVhaztjYXNlIGY5OnQueT0xPT09TWF0aC5hYnMoTWF0aC5mbG9vcih0LnkpJTIpP01hdGguY2VpbCh0LnkpLXQueTp0LnktTWF0aC5mbG9vcih0LnkpfXJldHVybiB0aGlzLmZsaXBZJiYodC55PTEtdC55KSx0fX0pLE9iamVjdC5kZWZpbmVQcm9wZXJ0eShYOS5wcm90b3R5cGUsIm5lZWRzVXBkYXRlIix7c2V0OmZ1bmN0aW9uKHQpeyEwPT09dCYmdGhpcy52ZXJzaW9uKyt9fSk7Y2xhc3MgUTl7Y29uc3RydWN0b3IodD0wLG49MCxlPTAsYT0xKXtPYmplY3QuZGVmaW5lUHJvcGVydHkodGhpcywiaXNWZWN0b3I0Iix7dmFsdWU6ITB9KSx0aGlzLng9dCx0aGlzLnk9bix0aGlzLno9ZSx0aGlzLnc9YX1nZXQgd2lkdGgoKXtyZXR1cm4gdGhpcy56fXNldCB3aWR0aCh0KXt0aGlzLno9dH1nZXQgaGVpZ2h0KCl7cmV0dXJuIHRoaXMud31zZXQgaGVpZ2h0KHQpe3RoaXMudz10fXNldCh0LG4sZSxhKXtyZXR1cm4gdGhpcy54PXQsdGhpcy55PW4sdGhpcy56PWUsdGhpcy53PWEsdGhpc31zZXRTY2FsYXIodCl7cmV0dXJuIHRoaXMueD10LHRoaXMueT10LHRoaXMuej10LHRoaXMudz10LHRoaXN9c2V0WCh0KXtyZXR1cm4gdGhpcy54PXQsdGhpc31zZXRZKHQpe3JldHVybiB0aGlzLnk9dCx0aGlzfXNldFoodCl7cmV0dXJuIHRoaXMuej10LHRoaXN9c2V0Vyh0KXtyZXR1cm4gdGhpcy53PXQsdGhpc31zZXRDb21wb25lbnQodCxuKXtzd2l0Y2godCl7Y2FzZSAwOnRoaXMueD1uO2JyZWFrO2Nhc2UgMTp0aGlzLnk9bjticmVhaztjYXNlIDI6dGhpcy56PW47YnJlYWs7Y2FzZSAzOnRoaXMudz1uO2JyZWFrO2RlZmF1bHQ6dGhyb3cgbmV3IEVycm9yKCJpbmRleCBpcyBvdXQgb2YgcmFuZ2U6ICIrdCl9cmV0dXJuIHRoaXN9Z2V0Q29tcG9uZW50KHQpe3N3aXRjaCh0KXtjYXNlIDA6cmV0dXJuIHRoaXMueDtjYXNlIDE6cmV0dXJuIHRoaXMueTtjYXNlIDI6cmV0dXJuIHRoaXMuejtjYXNlIDM6cmV0dXJuIHRoaXMudztkZWZhdWx0OnRocm93IG5ldyBFcnJvcigiaW5kZXggaXMgb3V0IG9mIHJhbmdlOiAiK3QpfX1jbG9uZSgpe3JldHVybiBuZXcgdGhpcy5jb25zdHJ1Y3Rvcih0aGlzLngsdGhpcy55LHRoaXMueix0aGlzLncpfWNvcHkodCl7cmV0dXJuIHRoaXMueD10LngsdGhpcy55PXQueSx0aGlzLno9dC56LHRoaXMudz12b2lkIDAhPT10Lnc/dC53OjEsdGhpc31hZGQodCxuKXtyZXR1cm4gdm9pZCAwIT09bj8oY29uc29sZS53YXJuKCJUSFJFRS5WZWN0b3I0OiAuYWRkKCkgbm93IG9ubHkgYWNjZXB0cyBvbmUgYXJndW1lbnQuIFVzZSAuYWRkVmVjdG9ycyggYSwgYiApIGluc3RlYWQuIiksdGhpcy5hZGRWZWN0b3JzKHQsbikpOih0aGlzLngrPXQueCx0aGlzLnkrPXQueSx0aGlzLnorPXQueix0aGlzLncrPXQudyx0aGlzKX1hZGRTY2FsYXIodCl7cmV0dXJuIHRoaXMueCs9dCx0aGlzLnkrPXQsdGhpcy56Kz10LHRoaXMudys9dCx0aGlzfWFkZFZlY3RvcnModCxuKXtyZXR1cm4gdGhpcy54PXQueCtuLngsdGhpcy55PXQueStuLnksdGhpcy56PXQueituLnosdGhpcy53PXQudytuLncsdGhpc31hZGRTY2FsZWRWZWN0b3IodCxuKXtyZXR1cm4gdGhpcy54Kz10Lngqbix0aGlzLnkrPXQueSpuLHRoaXMueis9dC56Km4sdGhpcy53Kz10Lncqbix0aGlzfXN1Yih0LG4pe3JldHVybiB2b2lkIDAhPT1uPyhjb25zb2xlLndhcm4oIlRIUkVFLlZlY3RvcjQ6IC5zdWIoKSBub3cgb25seSBhY2NlcHRzIG9uZSBhcmd1bWVudC4gVXNlIC5zdWJWZWN0b3JzKCBhLCBiICkgaW5zdGVhZC4iKSx0aGlzLnN1YlZlY3RvcnModCxuKSk6KHRoaXMueC09dC54LHRoaXMueS09dC55LHRoaXMuei09dC56LHRoaXMudy09dC53LHRoaXMpfXN1YlNjYWxhcih0KXtyZXR1cm4gdGhpcy54LT10LHRoaXMueS09dCx0aGlzLnotPXQsdGhpcy53LT10LHRoaXN9c3ViVmVjdG9ycyh0LG4pe3JldHVybiB0aGlzLng9dC54LW4ueCx0aGlzLnk9dC55LW4ueSx0aGlzLno9dC56LW4ueix0aGlzLnc9dC53LW4udyx0aGlzfW11bHRpcGx5KHQpe3JldHVybiB0aGlzLngqPXQueCx0aGlzLnkqPXQueSx0aGlzLnoqPXQueix0aGlzLncqPXQudyx0aGlzfW11bHRpcGx5U2NhbGFyKHQpe3JldHVybiB0aGlzLngqPXQsdGhpcy55Kj10LHRoaXMueio9dCx0aGlzLncqPXQsdGhpc31hcHBseU1hdHJpeDQodCl7Y29uc3Qgbj10aGlzLngsZT10aGlzLnksYT10aGlzLnosbz10aGlzLncscj10LmVsZW1lbnRzO3JldHVybiB0aGlzLng9clswXSpuK3JbNF0qZStyWzhdKmErclsxMl0qbyx0aGlzLnk9clsxXSpuK3JbNV0qZStyWzldKmErclsxM10qbyx0aGlzLno9clsyXSpuK3JbNl0qZStyWzEwXSphK3JbMTRdKm8sdGhpcy53PXJbM10qbityWzddKmUrclsxMV0qYStyWzE1XSpvLHRoaXN9ZGl2aWRlU2NhbGFyKHQpe3JldHVybiB0aGlzLm11bHRpcGx5U2NhbGFyKDEvdCl9c2V0QXhpc0FuZ2xlRnJvbVF1YXRlcm5pb24odCl7dGhpcy53PTIqTWF0aC5hY29zKHQudyk7Y29uc3Qgbj1NYXRoLnNxcnQoMS10LncqdC53KTtyZXR1cm4gbjwxZS00Pyh0aGlzLng9MSx0aGlzLnk9MCx0aGlzLno9MCk6KHRoaXMueD10Lngvbix0aGlzLnk9dC55L24sdGhpcy56PXQuei9uKSx0aGlzfXNldEF4aXNBbmdsZUZyb21Sb3RhdGlvbk1hdHJpeCh0KXtsZXQgbixlLGEsbztjb25zdCByPS4wMSxpPS4xLGM9dC5lbGVtZW50cyxzPWNbMF0sbD1jWzRdLG09Y1s4XSxkPWNbMV0sZz1jWzVdLHA9Y1s5XSxiPWNbMl0sdT1jWzZdLGY9Y1sxMF07aWYoTWF0aC5hYnMobC1kKTxyJiZNYXRoLmFicyhtLWIpPHImJk1hdGguYWJzKHAtdSk8cil7aWYoTWF0aC5hYnMobCtkKTxpJiZNYXRoLmFicyhtK2IpPGkmJk1hdGguYWJzKHArdSk8aSYmTWF0aC5hYnMocytnK2YtMyk8aSlyZXR1cm4gdGhpcy5zZXQoMSwwLDAsMCksdGhpcztuPU1hdGguUEk7Y29uc3QgdD0ocysxKS8yLGM9KGcrMSkvMixoPShmKzEpLzIsXz0obCtkKS80LEM9KG0rYikvNCxNPShwK3UpLzQ7cmV0dXJuIHQ+YyYmdD5oP3Q8cj8oZT0wLGE9LjcwNzEwNjc4MSxvPS43MDcxMDY3ODEpOihlPU1hdGguc3FydCh0KSxhPV8vZSxvPUMvZSk6Yz5oP2M8cj8oZT0uNzA3MTA2NzgxLGE9MCxvPS43MDcxMDY3ODEpOihhPU1hdGguc3FydChjKSxlPV8vYSxvPU0vYSk6aDxyPyhlPS43MDcxMDY3ODEsYT0uNzA3MTA2NzgxLG89MCk6KG89TWF0aC5zcXJ0KGgpLGU9Qy9vLGE9TS9vKSx0aGlzLnNldChlLGEsbyxuKSx0aGlzfWxldCBoPU1hdGguc3FydCgodS1wKSoodS1wKSsobS1iKSoobS1iKSsoZC1sKSooZC1sKSk7cmV0dXJuIE1hdGguYWJzKGgpPC4wMDEmJihoPTEpLHRoaXMueD0odS1wKS9oLHRoaXMueT0obS1iKS9oLHRoaXMuej0oZC1sKS9oLHRoaXMudz1NYXRoLmFjb3MoKHMrZytmLTEpLzIpLHRoaXN9bWluKHQpe3JldHVybiB0aGlzLng9TWF0aC5taW4odGhpcy54LHQueCksdGhpcy55PU1hdGgubWluKHRoaXMueSx0LnkpLHRoaXMuej1NYXRoLm1pbih0aGlzLnosdC56KSx0aGlzLnc9TWF0aC5taW4odGhpcy53LHQudyksdGhpc31tYXgodCl7cmV0dXJuIHRoaXMueD1NYXRoLm1heCh0aGlzLngsdC54KSx0aGlzLnk9TWF0aC5tYXgodGhpcy55LHQueSksdGhpcy56PU1hdGgubWF4KHRoaXMueix0LnopLHRoaXMudz1NYXRoLm1heCh0aGlzLncsdC53KSx0aGlzfWNsYW1wKHQsbil7cmV0dXJuIHRoaXMueD1NYXRoLm1heCh0LngsTWF0aC5taW4obi54LHRoaXMueCkpLHRoaXMueT1NYXRoLm1heCh0LnksTWF0aC5taW4obi55LHRoaXMueSkpLHRoaXMuej1NYXRoLm1heCh0LnosTWF0aC5taW4obi56LHRoaXMueikpLHRoaXMudz1NYXRoLm1heCh0LncsTWF0aC5taW4obi53LHRoaXMudykpLHRoaXN9Y2xhbXBTY2FsYXIodCxuKXtyZXR1cm4gdGhpcy54PU1hdGgubWF4KHQsTWF0aC5taW4obix0aGlzLngpKSx0aGlzLnk9TWF0aC5tYXgodCxNYXRoLm1pbihuLHRoaXMueSkpLHRoaXMuej1NYXRoLm1heCh0LE1hdGgubWluKG4sdGhpcy56KSksdGhpcy53PU1hdGgubWF4KHQsTWF0aC5taW4obix0aGlzLncpKSx0aGlzfWNsYW1wTGVuZ3RoKHQsbil7Y29uc3QgZT10aGlzLmxlbmd0aCgpO3JldHVybiB0aGlzLmRpdmlkZVNjYWxhcihlfHwxKS5tdWx0aXBseVNjYWxhcihNYXRoLm1heCh0LE1hdGgubWluKG4sZSkpKX1mbG9vcigpe3JldHVybiB0aGlzLng9TWF0aC5mbG9vcih0aGlzLngpLHRoaXMueT1NYXRoLmZsb29yKHRoaXMueSksdGhpcy56PU1hdGguZmxvb3IodGhpcy56KSx0aGlzLnc9TWF0aC5mbG9vcih0aGlzLncpLHRoaXN9Y2VpbCgpe3JldHVybiB0aGlzLng9TWF0aC5jZWlsKHRoaXMueCksdGhpcy55PU1hdGguY2VpbCh0aGlzLnkpLHRoaXMuej1NYXRoLmNlaWwodGhpcy56KSx0aGlzLnc9TWF0aC5jZWlsKHRoaXMudyksdGhpc31yb3VuZCgpe3JldHVybiB0aGlzLng9TWF0aC5yb3VuZCh0aGlzLngpLHRoaXMueT1NYXRoLnJvdW5kKHRoaXMueSksdGhpcy56PU1hdGgucm91bmQodGhpcy56KSx0aGlzLnc9TWF0aC5yb3VuZCh0aGlzLncpLHRoaXN9cm91bmRUb1plcm8oKXtyZXR1cm4gdGhpcy54PXRoaXMueDwwP01hdGguY2VpbCh0aGlzLngpOk1hdGguZmxvb3IodGhpcy54KSx0aGlzLnk9dGhpcy55PDA/TWF0aC5jZWlsKHRoaXMueSk6TWF0aC5mbG9vcih0aGlzLnkpLHRoaXMuej10aGlzLno8MD9NYXRoLmNlaWwodGhpcy56KTpNYXRoLmZsb29yKHRoaXMueiksdGhpcy53PXRoaXMudzwwP01hdGguY2VpbCh0aGlzLncpOk1hdGguZmxvb3IodGhpcy53KSx0aGlzfW5lZ2F0ZSgpe3JldHVybiB0aGlzLng9LXRoaXMueCx0aGlzLnk9LXRoaXMueSx0aGlzLno9LXRoaXMueix0aGlzLnc9LXRoaXMudyx0aGlzfWRvdCh0KXtyZXR1cm4gdGhpcy54KnQueCt0aGlzLnkqdC55K3RoaXMueip0LnordGhpcy53KnQud31sZW5ndGhTcSgpe3JldHVybiB0aGlzLngqdGhpcy54K3RoaXMueSp0aGlzLnkrdGhpcy56KnRoaXMueit0aGlzLncqdGhpcy53fWxlbmd0aCgpe3JldHVybiBNYXRoLnNxcnQodGhpcy54KnRoaXMueCt0aGlzLnkqdGhpcy55K3RoaXMueip0aGlzLnordGhpcy53KnRoaXMudyl9bWFuaGF0dGFuTGVuZ3RoKCl7cmV0dXJuIE1hdGguYWJzKHRoaXMueCkrTWF0aC5hYnModGhpcy55KStNYXRoLmFicyh0aGlzLnopK01hdGguYWJzKHRoaXMudyl9bm9ybWFsaXplKCl7cmV0dXJuIHRoaXMuZGl2aWRlU2NhbGFyKHRoaXMubGVuZ3RoKCl8fDEpfXNldExlbmd0aCh0KXtyZXR1cm4gdGhpcy5ub3JtYWxpemUoKS5tdWx0aXBseVNjYWxhcih0KX1sZXJwKHQsbil7cmV0dXJuIHRoaXMueCs9KHQueC10aGlzLngpKm4sdGhpcy55Kz0odC55LXRoaXMueSkqbix0aGlzLnorPSh0LnotdGhpcy56KSpuLHRoaXMudys9KHQudy10aGlzLncpKm4sdGhpc31sZXJwVmVjdG9ycyh0LG4sZSl7cmV0dXJuIHRoaXMueD10LngrKG4ueC10LngpKmUsdGhpcy55PXQueSsobi55LXQueSkqZSx0aGlzLno9dC56KyhuLnotdC56KSplLHRoaXMudz10LncrKG4udy10LncpKmUsdGhpc31lcXVhbHModCl7cmV0dXJuIHQueD09PXRoaXMueCYmdC55PT09dGhpcy55JiZ0Lno9PT10aGlzLnomJnQudz09PXRoaXMud31mcm9tQXJyYXkodCxuPTApe3JldHVybiB0aGlzLng9dFtuXSx0aGlzLnk9dFtuKzFdLHRoaXMuej10W24rMl0sdGhpcy53PXRbbiszXSx0aGlzfXRvQXJyYXkodD1bXSxuPTApe3JldHVybiB0W25dPXRoaXMueCx0W24rMV09dGhpcy55LHRbbisyXT10aGlzLnosdFtuKzNdPXRoaXMudyx0fWZyb21CdWZmZXJBdHRyaWJ1dGUodCxuLGUpe3JldHVybiB2b2lkIDAhPT1lJiZjb25zb2xlLndhcm4oIlRIUkVFLlZlY3RvcjQ6IG9mZnNldCBoYXMgYmVlbiByZW1vdmVkIGZyb20gLmZyb21CdWZmZXJBdHRyaWJ1dGUoKS4iKSx0aGlzLng9dC5nZXRYKG4pLHRoaXMueT10LmdldFkobiksdGhpcy56PXQuZ2V0WihuKSx0aGlzLnc9dC5nZXRXKG4pLHRoaXN9cmFuZG9tKCl7cmV0dXJuIHRoaXMueD1NYXRoLnJhbmRvbSgpLHRoaXMueT1NYXRoLnJhbmRvbSgpLHRoaXMuej1NYXRoLnJhbmRvbSgpLHRoaXMudz1NYXRoLnJhbmRvbSgpLHRoaXN9fWNsYXNzIEs5IGV4dGVuZHMgQjl7Y29uc3RydWN0b3IodCxuLGUpe3N1cGVyKCksT2JqZWN0LmRlZmluZVByb3BlcnR5KHRoaXMsImlzV2ViR0xSZW5kZXJUYXJnZXQiLHt2YWx1ZTohMH0pLHRoaXMud2lkdGg9dCx0aGlzLmhlaWdodD1uLHRoaXMuc2Npc3Nvcj1uZXcgUTkoMCwwLHQsbiksdGhpcy5zY2lzc29yVGVzdD0hMSx0aGlzLnZpZXdwb3J0PW5ldyBROSgwLDAsdCxuKSx0aGlzLnRleHR1cmU9bmV3IFg5KHZvaWQgMCwoZT1lfHx7fSkubWFwcGluZyxlLndyYXBTLGUud3JhcFQsZS5tYWdGaWx0ZXIsZS5taW5GaWx0ZXIsZS5mb3JtYXQsZS50eXBlLGUuYW5pc290cm9weSxlLmVuY29kaW5nKSx0aGlzLnRleHR1cmUuaW1hZ2U9e30sdGhpcy50ZXh0dXJlLmltYWdlLndpZHRoPXQsdGhpcy50ZXh0dXJlLmltYWdlLmhlaWdodD1uLHRoaXMudGV4dHVyZS5nZW5lcmF0ZU1pcG1hcHM9dm9pZCAwIT09ZS5nZW5lcmF0ZU1pcG1hcHMmJmUuZ2VuZXJhdGVNaXBtYXBzLHRoaXMudGV4dHVyZS5taW5GaWx0ZXI9dm9pZCAwIT09ZS5taW5GaWx0ZXI/ZS5taW5GaWx0ZXI6XzksdGhpcy5kZXB0aEJ1ZmZlcj12b2lkIDA9PT1lLmRlcHRoQnVmZmVyfHxlLmRlcHRoQnVmZmVyLHRoaXMuc3RlbmNpbEJ1ZmZlcj12b2lkIDAhPT1lLnN0ZW5jaWxCdWZmZXImJmUuc3RlbmNpbEJ1ZmZlcix0aGlzLmRlcHRoVGV4dHVyZT12b2lkIDAhPT1lLmRlcHRoVGV4dHVyZT9lLmRlcHRoVGV4dHVyZTpudWxsfXNldFNpemUodCxuKXt0aGlzLndpZHRoPT09dCYmdGhpcy5oZWlnaHQ9PT1ufHwodGhpcy53aWR0aD10LHRoaXMuaGVpZ2h0PW4sdGhpcy50ZXh0dXJlLmltYWdlLndpZHRoPXQsdGhpcy50ZXh0dXJlLmltYWdlLmhlaWdodD1uLHRoaXMuZGlzcG9zZSgpKSx0aGlzLnZpZXdwb3J0LnNldCgwLDAsdCxuKSx0aGlzLnNjaXNzb3Iuc2V0KDAsMCx0LG4pfWNsb25lKCl7cmV0dXJuKG5ldyB0aGlzLmNvbnN0cnVjdG9yKS5jb3B5KHRoaXMpfWNvcHkodCl7cmV0dXJuIHRoaXMud2lkdGg9dC53aWR0aCx0aGlzLmhlaWdodD10LmhlaWdodCx0aGlzLnZpZXdwb3J0LmNvcHkodC52aWV3cG9ydCksdGhpcy50ZXh0dXJlPXQudGV4dHVyZS5jbG9uZSgpLHRoaXMuZGVwdGhCdWZmZXI9dC5kZXB0aEJ1ZmZlcix0aGlzLnN0ZW5jaWxCdWZmZXI9dC5zdGVuY2lsQnVmZmVyLHRoaXMuZGVwdGhUZXh0dXJlPXQuZGVwdGhUZXh0dXJlLHRoaXN9ZGlzcG9zZSgpe3RoaXMuZGlzcGF0Y2hFdmVudCh7dHlwZToiZGlzcG9zZSJ9KX19Y2xhc3MgJDl7Y29uc3RydWN0b3IodD0wLG49MCxlPTAsYT0xKXtPYmplY3QuZGVmaW5lUHJvcGVydHkodGhpcywiaXNRdWF0ZXJuaW9uIix7dmFsdWU6ITB9KSx0aGlzLl94PXQsdGhpcy5feT1uLHRoaXMuX3o9ZSx0aGlzLl93PWF9c3RhdGljIHNsZXJwKHQsbixlLGEpe3JldHVybiBlLmNvcHkodCkuc2xlcnAobixhKX1zdGF0aWMgc2xlcnBGbGF0KHQsbixlLGEsbyxyLGkpe2xldCBjPWVbYSswXSxzPWVbYSsxXSxsPWVbYSsyXSxtPWVbYSszXTtjb25zdCBkPW9bciswXSxnPW9bcisxXSxwPW9bcisyXSxiPW9bciszXTtpZihtIT09Ynx8YyE9PWR8fHMhPT1nfHxsIT09cCl7bGV0IHQ9MS1pO2NvbnN0IG49YypkK3MqZytsKnArbSpiLGU9bj49MD8xOi0xLGE9MS1uKm47aWYoYT5OdW1iZXIuRVBTSUxPTil7Y29uc3Qgbz1NYXRoLnNxcnQoYSkscj1NYXRoLmF0YW4yKG8sbiplKTt0PU1hdGguc2luKHQqcikvbyxpPU1hdGguc2luKGkqcikvb31jb25zdCBvPWkqZTtpZihjPWMqdCtkKm8scz1zKnQrZypvLGw9bCp0K3AqbyxtPW0qdCtiKm8sdD09PTEtaSl7Y29uc3QgdD0xL01hdGguc3FydChjKmMrcypzK2wqbCttKm0pO2MqPXQscyo9dCxsKj10LG0qPXR9fXRbbl09Yyx0W24rMV09cyx0W24rMl09bCx0W24rM109bX1zdGF0aWMgbXVsdGlwbHlRdWF0ZXJuaW9uc0ZsYXQodCxuLGUsYSxvLHIpe2NvbnN0IGk9ZVthXSxjPWVbYSsxXSxzPWVbYSsyXSxsPWVbYSszXSxtPW9bcl0sZD1vW3IrMV0sZz1vW3IrMl0scD1vW3IrM107cmV0dXJuIHRbbl09aSpwK2wqbStjKmctcypkLHRbbisxXT1jKnArbCpkK3MqbS1pKmcsdFtuKzJdPXMqcCtsKmcraSpkLWMqbSx0W24rM109bCpwLWkqbS1jKmQtcypnLHR9Z2V0IHgoKXtyZXR1cm4gdGhpcy5feH1zZXQgeCh0KXt0aGlzLl94PXQsdGhpcy5fb25DaGFuZ2VDYWxsYmFjaygpfWdldCB5KCl7cmV0dXJuIHRoaXMuX3l9c2V0IHkodCl7dGhpcy5feT10LHRoaXMuX29uQ2hhbmdlQ2FsbGJhY2soKX1nZXQgeigpe3JldHVybiB0aGlzLl96fXNldCB6KHQpe3RoaXMuX3o9dCx0aGlzLl9vbkNoYW5nZUNhbGxiYWNrKCl9Z2V0IHcoKXtyZXR1cm4gdGhpcy5fd31zZXQgdyh0KXt0aGlzLl93PXQsdGhpcy5fb25DaGFuZ2VDYWxsYmFjaygpfXNldCh0LG4sZSxhKXtyZXR1cm4gdGhpcy5feD10LHRoaXMuX3k9bix0aGlzLl96PWUsdGhpcy5fdz1hLHRoaXMuX29uQ2hhbmdlQ2FsbGJhY2soKSx0aGlzfWNsb25lKCl7cmV0dXJuIG5ldyB0aGlzLmNvbnN0cnVjdG9yKHRoaXMuX3gsdGhpcy5feSx0aGlzLl96LHRoaXMuX3cpfWNvcHkodCl7cmV0dXJuIHRoaXMuX3g9dC54LHRoaXMuX3k9dC55LHRoaXMuX3o9dC56LHRoaXMuX3c9dC53LHRoaXMuX29uQ2hhbmdlQ2FsbGJhY2soKSx0aGlzfXNldEZyb21FdWxlcih0LG4pe2lmKCF0fHwhdC5pc0V1bGVyKXRocm93IG5ldyBFcnJvcigiVEhSRUUuUXVhdGVybmlvbjogLnNldEZyb21FdWxlcigpIG5vdyBleHBlY3RzIGFuIEV1bGVyIHJvdGF0aW9uIHJhdGhlciB0aGFuIGEgVmVjdG9yMyBhbmQgb3JkZXIuIik7Y29uc3QgZT10Ll94LGE9dC5feSxvPXQuX3oscj10Ll9vcmRlcixpPU1hdGguY29zLGM9TWF0aC5zaW4scz1pKGUvMiksbD1pKGEvMiksbT1pKG8vMiksZD1jKGUvMiksZz1jKGEvMikscD1jKG8vMik7c3dpdGNoKHIpe2Nhc2UiWFlaIjp0aGlzLl94PWQqbCptK3MqZypwLHRoaXMuX3k9cypnKm0tZCpsKnAsdGhpcy5fej1zKmwqcCtkKmcqbSx0aGlzLl93PXMqbCptLWQqZypwO2JyZWFrO2Nhc2UiWVhaIjp0aGlzLl94PWQqbCptK3MqZypwLHRoaXMuX3k9cypnKm0tZCpsKnAsdGhpcy5fej1zKmwqcC1kKmcqbSx0aGlzLl93PXMqbCptK2QqZypwO2JyZWFrO2Nhc2UiWlhZIjp0aGlzLl94PWQqbCptLXMqZypwLHRoaXMuX3k9cypnKm0rZCpsKnAsdGhpcy5fej1zKmwqcCtkKmcqbSx0aGlzLl93PXMqbCptLWQqZypwO2JyZWFrO2Nhc2UiWllYIjp0aGlzLl94PWQqbCptLXMqZypwLHRoaXMuX3k9cypnKm0rZCpsKnAsdGhpcy5fej1zKmwqcC1kKmcqbSx0aGlzLl93PXMqbCptK2QqZypwO2JyZWFrO2Nhc2UiWVpYIjp0aGlzLl94PWQqbCptK3MqZypwLHRoaXMuX3k9cypnKm0rZCpsKnAsdGhpcy5fej1zKmwqcC1kKmcqbSx0aGlzLl93PXMqbCptLWQqZypwO2JyZWFrO2Nhc2UiWFpZIjp0aGlzLl94PWQqbCptLXMqZypwLHRoaXMuX3k9cypnKm0tZCpsKnAsdGhpcy5fej1zKmwqcCtkKmcqbSx0aGlzLl93PXMqbCptK2QqZypwO2JyZWFrO2RlZmF1bHQ6Y29uc29sZS53YXJuKCJUSFJFRS5RdWF0ZXJuaW9uOiAuc2V0RnJvbUV1bGVyKCkgZW5jb3VudGVyZWQgYW4gdW5rbm93biBvcmRlcjogIityKX1yZXR1cm4hMSE9PW4mJnRoaXMuX29uQ2hhbmdlQ2FsbGJhY2soKSx0aGlzfXNldEZyb21BeGlzQW5nbGUodCxuKXtjb25zdCBlPW4vMixhPU1hdGguc2luKGUpO3JldHVybiB0aGlzLl94PXQueCphLHRoaXMuX3k9dC55KmEsdGhpcy5fej10LnoqYSx0aGlzLl93PU1hdGguY29zKGUpLHRoaXMuX29uQ2hhbmdlQ2FsbGJhY2soKSx0aGlzfXNldEZyb21Sb3RhdGlvbk1hdHJpeCh0KXtjb25zdCBuPXQuZWxlbWVudHMsZT1uWzBdLGE9bls0XSxvPW5bOF0scj1uWzFdLGk9bls1XSxjPW5bOV0scz1uWzJdLGw9bls2XSxtPW5bMTBdLGQ9ZStpK207aWYoZD4wKXtjb25zdCB0PS41L01hdGguc3FydChkKzEpO3RoaXMuX3c9LjI1L3QsdGhpcy5feD0obC1jKSp0LHRoaXMuX3k9KG8tcykqdCx0aGlzLl96PShyLWEpKnR9ZWxzZSBpZihlPmkmJmU+bSl7Y29uc3QgdD0yKk1hdGguc3FydCgxK2UtaS1tKTt0aGlzLl93PShsLWMpL3QsdGhpcy5feD0uMjUqdCx0aGlzLl95PShhK3IpL3QsdGhpcy5fej0obytzKS90fWVsc2UgaWYoaT5tKXtjb25zdCB0PTIqTWF0aC5zcXJ0KDEraS1lLW0pO3RoaXMuX3c9KG8tcykvdCx0aGlzLl94PShhK3IpL3QsdGhpcy5feT0uMjUqdCx0aGlzLl96PShjK2wpL3R9ZWxzZXtjb25zdCB0PTIqTWF0aC5zcXJ0KDErbS1lLWkpO3RoaXMuX3c9KHItYSkvdCx0aGlzLl94PShvK3MpL3QsdGhpcy5feT0oYytsKS90LHRoaXMuX3o9LjI1KnR9cmV0dXJuIHRoaXMuX29uQ2hhbmdlQ2FsbGJhY2soKSx0aGlzfXNldEZyb21Vbml0VmVjdG9ycyh0LG4pe2xldCBlPXQuZG90KG4pKzE7cmV0dXJuIGU8MWUtNj8oZT0wLE1hdGguYWJzKHQueCk+TWF0aC5hYnModC56KT8odGhpcy5feD0tdC55LHRoaXMuX3k9dC54LHRoaXMuX3o9MCx0aGlzLl93PWUpOih0aGlzLl94PTAsdGhpcy5feT0tdC56LHRoaXMuX3o9dC55LHRoaXMuX3c9ZSkpOih0aGlzLl94PXQueSpuLnotdC56Km4ueSx0aGlzLl95PXQueipuLngtdC54Km4ueix0aGlzLl96PXQueCpuLnktdC55Km4ueCx0aGlzLl93PWUpLHRoaXMubm9ybWFsaXplKCl9YW5nbGVUbyh0KXtyZXR1cm4gMipNYXRoLmFjb3MoTWF0aC5hYnMoVTkuY2xhbXAodGhpcy5kb3QodCksLTEsMSkpKX1yb3RhdGVUb3dhcmRzKHQsbil7Y29uc3QgZT10aGlzLmFuZ2xlVG8odCk7aWYoMD09PWUpcmV0dXJuIHRoaXM7Y29uc3QgYT1NYXRoLm1pbigxLG4vZSk7cmV0dXJuIHRoaXMuc2xlcnAodCxhKSx0aGlzfWlkZW50aXR5KCl7cmV0dXJuIHRoaXMuc2V0KDAsMCwwLDEpfWludmVydCgpe3JldHVybiB0aGlzLmNvbmp1Z2F0ZSgpfWNvbmp1Z2F0ZSgpe3JldHVybiB0aGlzLl94Kj0tMSx0aGlzLl95Kj0tMSx0aGlzLl96Kj0tMSx0aGlzLl9vbkNoYW5nZUNhbGxiYWNrKCksdGhpc31kb3QodCl7cmV0dXJuIHRoaXMuX3gqdC5feCt0aGlzLl95KnQuX3krdGhpcy5feip0Ll96K3RoaXMuX3cqdC5fd31sZW5ndGhTcSgpe3JldHVybiB0aGlzLl94KnRoaXMuX3grdGhpcy5feSp0aGlzLl95K3RoaXMuX3oqdGhpcy5feit0aGlzLl93KnRoaXMuX3d9bGVuZ3RoKCl7cmV0dXJuIE1hdGguc3FydCh0aGlzLl94KnRoaXMuX3grdGhpcy5feSp0aGlzLl95K3RoaXMuX3oqdGhpcy5feit0aGlzLl93KnRoaXMuX3cpfW5vcm1hbGl6ZSgpe2xldCB0PXRoaXMubGVuZ3RoKCk7cmV0dXJuIDA9PT10Pyh0aGlzLl94PTAsdGhpcy5feT0wLHRoaXMuX3o9MCx0aGlzLl93PTEpOih0PTEvdCx0aGlzLl94PXRoaXMuX3gqdCx0aGlzLl95PXRoaXMuX3kqdCx0aGlzLl96PXRoaXMuX3oqdCx0aGlzLl93PXRoaXMuX3cqdCksdGhpcy5fb25DaGFuZ2VDYWxsYmFjaygpLHRoaXN9bXVsdGlwbHkodCxuKXtyZXR1cm4gdm9pZCAwIT09bj8oY29uc29sZS53YXJuKCJUSFJFRS5RdWF0ZXJuaW9uOiAubXVsdGlwbHkoKSBub3cgb25seSBhY2NlcHRzIG9uZSBhcmd1bWVudC4gVXNlIC5tdWx0aXBseVF1YXRlcm5pb25zKCBhLCBiICkgaW5zdGVhZC4iKSx0aGlzLm11bHRpcGx5UXVhdGVybmlvbnModCxuKSk6dGhpcy5tdWx0aXBseVF1YXRlcm5pb25zKHRoaXMsdCl9cHJlbXVsdGlwbHkodCl7cmV0dXJuIHRoaXMubXVsdGlwbHlRdWF0ZXJuaW9ucyh0LHRoaXMpfW11bHRpcGx5UXVhdGVybmlvbnModCxuKXtjb25zdCBlPXQuX3gsYT10Ll95LG89dC5feixyPXQuX3csaT1uLl94LGM9bi5feSxzPW4uX3osbD1uLl93O3JldHVybiB0aGlzLl94PWUqbCtyKmkrYSpzLW8qYyx0aGlzLl95PWEqbCtyKmMrbyppLWUqcyx0aGlzLl96PW8qbCtyKnMrZSpjLWEqaSx0aGlzLl93PXIqbC1lKmktYSpjLW8qcyx0aGlzLl9vbkNoYW5nZUNhbGxiYWNrKCksdGhpc31zbGVycCh0LG4pe2lmKDA9PT1uKXJldHVybiB0aGlzO2lmKDE9PT1uKXJldHVybiB0aGlzLmNvcHkodCk7Y29uc3QgZT10aGlzLl94LGE9dGhpcy5feSxvPXRoaXMuX3oscj10aGlzLl93O2xldCBpPXIqdC5fdytlKnQuX3grYSp0Ll95K28qdC5fejtpZihpPDA/KHRoaXMuX3c9LXQuX3csdGhpcy5feD0tdC5feCx0aGlzLl95PS10Ll95LHRoaXMuX3o9LXQuX3osaT0taSk6dGhpcy5jb3B5KHQpLGk+PTEpcmV0dXJuIHRoaXMuX3c9cix0aGlzLl94PWUsdGhpcy5feT1hLHRoaXMuX3o9byx0aGlzO2NvbnN0IGM9MS1pKmk7aWYoYzw9TnVtYmVyLkVQU0lMT04pe2NvbnN0IHQ9MS1uO3JldHVybiB0aGlzLl93PXQqcituKnRoaXMuX3csdGhpcy5feD10KmUrbip0aGlzLl94LHRoaXMuX3k9dCphK24qdGhpcy5feSx0aGlzLl96PXQqbytuKnRoaXMuX3osdGhpcy5ub3JtYWxpemUoKSx0aGlzLl9vbkNoYW5nZUNhbGxiYWNrKCksdGhpc31jb25zdCBzPU1hdGguc3FydChjKSxsPU1hdGguYXRhbjIocyxpKSxtPU1hdGguc2luKCgxLW4pKmwpL3MsZD1NYXRoLnNpbihuKmwpL3M7cmV0dXJuIHRoaXMuX3c9ciptK3RoaXMuX3cqZCx0aGlzLl94PWUqbSt0aGlzLl94KmQsdGhpcy5feT1hKm0rdGhpcy5feSpkLHRoaXMuX3o9byptK3RoaXMuX3oqZCx0aGlzLl9vbkNoYW5nZUNhbGxiYWNrKCksdGhpc31lcXVhbHModCl7cmV0dXJuIHQuX3g9PT10aGlzLl94JiZ0Ll95PT09dGhpcy5feSYmdC5fej09PXRoaXMuX3omJnQuX3c9PT10aGlzLl93fWZyb21BcnJheSh0LG49MCl7cmV0dXJuIHRoaXMuX3g9dFtuXSx0aGlzLl95PXRbbisxXSx0aGlzLl96PXRbbisyXSx0aGlzLl93PXRbbiszXSx0aGlzLl9vbkNoYW5nZUNhbGxiYWNrKCksdGhpc310b0FycmF5KHQ9W10sbj0wKXtyZXR1cm4gdFtuXT10aGlzLl94LHRbbisxXT10aGlzLl95LHRbbisyXT10aGlzLl96LHRbbiszXT10aGlzLl93LHR9ZnJvbUJ1ZmZlckF0dHJpYnV0ZSh0LG4pe3JldHVybiB0aGlzLl94PXQuZ2V0WChuKSx0aGlzLl95PXQuZ2V0WShuKSx0aGlzLl96PXQuZ2V0WihuKSx0aGlzLl93PXQuZ2V0VyhuKSx0aGlzfV9vbkNoYW5nZSh0KXtyZXR1cm4gdGhpcy5fb25DaGFuZ2VDYWxsYmFjaz10LHRoaXN9X29uQ2hhbmdlQ2FsbGJhY2soKXt9fWNsYXNzIHR0dHtjb25zdHJ1Y3Rvcih0PTAsbj0wLGU9MCl7T2JqZWN0LmRlZmluZVByb3BlcnR5KHRoaXMsImlzVmVjdG9yMyIse3ZhbHVlOiEwfSksdGhpcy54PXQsdGhpcy55PW4sdGhpcy56PWV9c2V0KHQsbixlKXtyZXR1cm4gdm9pZCAwPT09ZSYmKGU9dGhpcy56KSx0aGlzLng9dCx0aGlzLnk9bix0aGlzLno9ZSx0aGlzfXNldFNjYWxhcih0KXtyZXR1cm4gdGhpcy54PXQsdGhpcy55PXQsdGhpcy56PXQsdGhpc31zZXRYKHQpe3JldHVybiB0aGlzLng9dCx0aGlzfXNldFkodCl7cmV0dXJuIHRoaXMueT10LHRoaXN9c2V0Wih0KXtyZXR1cm4gdGhpcy56PXQsdGhpc31zZXRDb21wb25lbnQodCxuKXtzd2l0Y2godCl7Y2FzZSAwOnRoaXMueD1uO2JyZWFrO2Nhc2UgMTp0aGlzLnk9bjticmVhaztjYXNlIDI6dGhpcy56PW47YnJlYWs7ZGVmYXVsdDp0aHJvdyBuZXcgRXJyb3IoImluZGV4IGlzIG91dCBvZiByYW5nZTogIit0KX1yZXR1cm4gdGhpc31nZXRDb21wb25lbnQodCl7c3dpdGNoKHQpe2Nhc2UgMDpyZXR1cm4gdGhpcy54O2Nhc2UgMTpyZXR1cm4gdGhpcy55O2Nhc2UgMjpyZXR1cm4gdGhpcy56O2RlZmF1bHQ6dGhyb3cgbmV3IEVycm9yKCJpbmRleCBpcyBvdXQgb2YgcmFuZ2U6ICIrdCl9fWNsb25lKCl7cmV0dXJuIG5ldyB0aGlzLmNvbnN0cnVjdG9yKHRoaXMueCx0aGlzLnksdGhpcy56KX1jb3B5KHQpe3JldHVybiB0aGlzLng9dC54LHRoaXMueT10LnksdGhpcy56PXQueix0aGlzfWFkZCh0LG4pe3JldHVybiB2b2lkIDAhPT1uPyhjb25zb2xlLndhcm4oIlRIUkVFLlZlY3RvcjM6IC5hZGQoKSBub3cgb25seSBhY2NlcHRzIG9uZSBhcmd1bWVudC4gVXNlIC5hZGRWZWN0b3JzKCBhLCBiICkgaW5zdGVhZC4iKSx0aGlzLmFkZFZlY3RvcnModCxuKSk6KHRoaXMueCs9dC54LHRoaXMueSs9dC55LHRoaXMueis9dC56LHRoaXMpfWFkZFNjYWxhcih0KXtyZXR1cm4gdGhpcy54Kz10LHRoaXMueSs9dCx0aGlzLnorPXQsdGhpc31hZGRWZWN0b3JzKHQsbil7cmV0dXJuIHRoaXMueD10Lngrbi54LHRoaXMueT10Lnkrbi55LHRoaXMuej10Lnorbi56LHRoaXN9YWRkU2NhbGVkVmVjdG9yKHQsbil7cmV0dXJuIHRoaXMueCs9dC54Km4sdGhpcy55Kz10Lnkqbix0aGlzLnorPXQueipuLHRoaXN9c3ViKHQsbil7cmV0dXJuIHZvaWQgMCE9PW4/KGNvbnNvbGUud2FybigiVEhSRUUuVmVjdG9yMzogLnN1YigpIG5vdyBvbmx5IGFjY2VwdHMgb25lIGFyZ3VtZW50LiBVc2UgLnN1YlZlY3RvcnMoIGEsIGIgKSBpbnN0ZWFkLiIpLHRoaXMuc3ViVmVjdG9ycyh0LG4pKToodGhpcy54LT10LngsdGhpcy55LT10LnksdGhpcy56LT10LnosdGhpcyl9c3ViU2NhbGFyKHQpe3JldHVybiB0aGlzLngtPXQsdGhpcy55LT10LHRoaXMuei09dCx0aGlzfXN1YlZlY3RvcnModCxuKXtyZXR1cm4gdGhpcy54PXQueC1uLngsdGhpcy55PXQueS1uLnksdGhpcy56PXQuei1uLnosdGhpc31tdWx0aXBseSh0LG4pe3JldHVybiB2b2lkIDAhPT1uPyhjb25zb2xlLndhcm4oIlRIUkVFLlZlY3RvcjM6IC5tdWx0aXBseSgpIG5vdyBvbmx5IGFjY2VwdHMgb25lIGFyZ3VtZW50LiBVc2UgLm11bHRpcGx5VmVjdG9ycyggYSwgYiApIGluc3RlYWQuIiksdGhpcy5tdWx0aXBseVZlY3RvcnModCxuKSk6KHRoaXMueCo9dC54LHRoaXMueSo9dC55LHRoaXMueio9dC56LHRoaXMpfW11bHRpcGx5U2NhbGFyKHQpe3JldHVybiB0aGlzLngqPXQsdGhpcy55Kj10LHRoaXMueio9dCx0aGlzfW11bHRpcGx5VmVjdG9ycyh0LG4pe3JldHVybiB0aGlzLng9dC54Km4ueCx0aGlzLnk9dC55Km4ueSx0aGlzLno9dC56Km4ueix0aGlzfWFwcGx5RXVsZXIodCl7cmV0dXJuIHQmJnQuaXNFdWxlcnx8Y29uc29sZS5lcnJvcigiVEhSRUUuVmVjdG9yMzogLmFwcGx5RXVsZXIoKSBub3cgZXhwZWN0cyBhbiBFdWxlciByb3RhdGlvbiByYXRoZXIgdGhhbiBhIFZlY3RvcjMgYW5kIG9yZGVyLiIpLHRoaXMuYXBwbHlRdWF0ZXJuaW9uKGV0dC5zZXRGcm9tRXVsZXIodCkpfWFwcGx5QXhpc0FuZ2xlKHQsbil7cmV0dXJuIHRoaXMuYXBwbHlRdWF0ZXJuaW9uKGV0dC5zZXRGcm9tQXhpc0FuZ2xlKHQsbikpfWFwcGx5TWF0cml4Myh0KXtjb25zdCBuPXRoaXMueCxlPXRoaXMueSxhPXRoaXMueixvPXQuZWxlbWVudHM7cmV0dXJuIHRoaXMueD1vWzBdKm4rb1szXSplK29bNl0qYSx0aGlzLnk9b1sxXSpuK29bNF0qZStvWzddKmEsdGhpcy56PW9bMl0qbitvWzVdKmUrb1s4XSphLHRoaXN9YXBwbHlOb3JtYWxNYXRyaXgodCl7cmV0dXJuIHRoaXMuYXBwbHlNYXRyaXgzKHQpLm5vcm1hbGl6ZSgpfWFwcGx5TWF0cml4NCh0KXtjb25zdCBuPXRoaXMueCxlPXRoaXMueSxhPXRoaXMueixvPXQuZWxlbWVudHMscj0xLyhvWzNdKm4rb1s3XSplK29bMTFdKmErb1sxNV0pO3JldHVybiB0aGlzLng9KG9bMF0qbitvWzRdKmUrb1s4XSphK29bMTJdKSpyLHRoaXMueT0ob1sxXSpuK29bNV0qZStvWzldKmErb1sxM10pKnIsdGhpcy56PShvWzJdKm4rb1s2XSplK29bMTBdKmErb1sxNF0pKnIsdGhpc31hcHBseVF1YXRlcm5pb24odCl7Y29uc3Qgbj10aGlzLngsZT10aGlzLnksYT10aGlzLnosbz10Lngscj10LnksaT10LnosYz10Lncscz1jKm4rciphLWkqZSxsPWMqZStpKm4tbyphLG09YyphK28qZS1yKm4sZD0tbypuLXIqZS1pKmE7cmV0dXJuIHRoaXMueD1zKmMrZCotbytsKi1pLW0qLXIsdGhpcy55PWwqYytkKi1yK20qLW8tcyotaSx0aGlzLno9bSpjK2QqLWkrcyotci1sKi1vLHRoaXN9cHJvamVjdCh0KXtyZXR1cm4gdGhpcy5hcHBseU1hdHJpeDQodC5tYXRyaXhXb3JsZEludmVyc2UpLmFwcGx5TWF0cml4NCh0LnByb2plY3Rpb25NYXRyaXgpfXVucHJvamVjdCh0KXtyZXR1cm4gdGhpcy5hcHBseU1hdHJpeDQodC5wcm9qZWN0aW9uTWF0cml4SW52ZXJzZSkuYXBwbHlNYXRyaXg0KHQubWF0cml4V29ybGQpfXRyYW5zZm9ybURpcmVjdGlvbih0KXtjb25zdCBuPXRoaXMueCxlPXRoaXMueSxhPXRoaXMueixvPXQuZWxlbWVudHM7cmV0dXJuIHRoaXMueD1vWzBdKm4rb1s0XSplK29bOF0qYSx0aGlzLnk9b1sxXSpuK29bNV0qZStvWzldKmEsdGhpcy56PW9bMl0qbitvWzZdKmUrb1sxMF0qYSx0aGlzLm5vcm1hbGl6ZSgpfWRpdmlkZSh0KXtyZXR1cm4gdGhpcy54Lz10LngsdGhpcy55Lz10LnksdGhpcy56Lz10LnosdGhpc31kaXZpZGVTY2FsYXIodCl7cmV0dXJuIHRoaXMubXVsdGlwbHlTY2FsYXIoMS90KX1taW4odCl7cmV0dXJuIHRoaXMueD1NYXRoLm1pbih0aGlzLngsdC54KSx0aGlzLnk9TWF0aC5taW4odGhpcy55LHQueSksdGhpcy56PU1hdGgubWluKHRoaXMueix0LnopLHRoaXN9bWF4KHQpe3JldHVybiB0aGlzLng9TWF0aC5tYXgodGhpcy54LHQueCksdGhpcy55PU1hdGgubWF4KHRoaXMueSx0LnkpLHRoaXMuej1NYXRoLm1heCh0aGlzLnosdC56KSx0aGlzfWNsYW1wKHQsbil7cmV0dXJuIHRoaXMueD1NYXRoLm1heCh0LngsTWF0aC5taW4obi54LHRoaXMueCkpLHRoaXMueT1NYXRoLm1heCh0LnksTWF0aC5taW4obi55LHRoaXMueSkpLHRoaXMuej1NYXRoLm1heCh0LnosTWF0aC5taW4obi56LHRoaXMueikpLHRoaXN9Y2xhbXBTY2FsYXIodCxuKXtyZXR1cm4gdGhpcy54PU1hdGgubWF4KHQsTWF0aC5taW4obix0aGlzLngpKSx0aGlzLnk9TWF0aC5tYXgodCxNYXRoLm1pbihuLHRoaXMueSkpLHRoaXMuej1NYXRoLm1heCh0LE1hdGgubWluKG4sdGhpcy56KSksdGhpc31jbGFtcExlbmd0aCh0LG4pe2NvbnN0IGU9dGhpcy5sZW5ndGgoKTtyZXR1cm4gdGhpcy5kaXZpZGVTY2FsYXIoZXx8MSkubXVsdGlwbHlTY2FsYXIoTWF0aC5tYXgodCxNYXRoLm1pbihuLGUpKSl9Zmxvb3IoKXtyZXR1cm4gdGhpcy54PU1hdGguZmxvb3IodGhpcy54KSx0aGlzLnk9TWF0aC5mbG9vcih0aGlzLnkpLHRoaXMuej1NYXRoLmZsb29yKHRoaXMueiksdGhpc31jZWlsKCl7cmV0dXJuIHRoaXMueD1NYXRoLmNlaWwodGhpcy54KSx0aGlzLnk9TWF0aC5jZWlsKHRoaXMueSksdGhpcy56PU1hdGguY2VpbCh0aGlzLnopLHRoaXN9cm91bmQoKXtyZXR1cm4gdGhpcy54PU1hdGgucm91bmQodGhpcy54KSx0aGlzLnk9TWF0aC5yb3VuZCh0aGlzLnkpLHRoaXMuej1NYXRoLnJvdW5kKHRoaXMueiksdGhpc31yb3VuZFRvWmVybygpe3JldHVybiB0aGlzLng9dGhpcy54PDA/TWF0aC5jZWlsKHRoaXMueCk6TWF0aC5mbG9vcih0aGlzLngpLHRoaXMueT10aGlzLnk8MD9NYXRoLmNlaWwodGhpcy55KTpNYXRoLmZsb29yKHRoaXMueSksdGhpcy56PXRoaXMuejwwP01hdGguY2VpbCh0aGlzLnopOk1hdGguZmxvb3IodGhpcy56KSx0aGlzfW5lZ2F0ZSgpe3JldHVybiB0aGlzLng9LXRoaXMueCx0aGlzLnk9LXRoaXMueSx0aGlzLno9LXRoaXMueix0aGlzfWRvdCh0KXtyZXR1cm4gdGhpcy54KnQueCt0aGlzLnkqdC55K3RoaXMueip0Lnp9bGVuZ3RoU3EoKXtyZXR1cm4gdGhpcy54KnRoaXMueCt0aGlzLnkqdGhpcy55K3RoaXMueip0aGlzLnp9bGVuZ3RoKCl7cmV0dXJuIE1hdGguc3FydCh0aGlzLngqdGhpcy54K3RoaXMueSp0aGlzLnkrdGhpcy56KnRoaXMueil9bWFuaGF0dGFuTGVuZ3RoKCl7cmV0dXJuIE1hdGguYWJzKHRoaXMueCkrTWF0aC5hYnModGhpcy55KStNYXRoLmFicyh0aGlzLnopfW5vcm1hbGl6ZSgpe3JldHVybiB0aGlzLmRpdmlkZVNjYWxhcih0aGlzLmxlbmd0aCgpfHwxKX1zZXRMZW5ndGgodCl7cmV0dXJuIHRoaXMubm9ybWFsaXplKCkubXVsdGlwbHlTY2FsYXIodCl9bGVycCh0LG4pe3JldHVybiB0aGlzLngrPSh0LngtdGhpcy54KSpuLHRoaXMueSs9KHQueS10aGlzLnkpKm4sdGhpcy56Kz0odC56LXRoaXMueikqbix0aGlzfWxlcnBWZWN0b3JzKHQsbixlKXtyZXR1cm4gdGhpcy54PXQueCsobi54LXQueCkqZSx0aGlzLnk9dC55KyhuLnktdC55KSplLHRoaXMuej10LnorKG4uei10LnopKmUsdGhpc31jcm9zcyh0LG4pe3JldHVybiB2b2lkIDAhPT1uPyhjb25zb2xlLndhcm4oIlRIUkVFLlZlY3RvcjM6IC5jcm9zcygpIG5vdyBvbmx5IGFjY2VwdHMgb25lIGFyZ3VtZW50LiBVc2UgLmNyb3NzVmVjdG9ycyggYSwgYiApIGluc3RlYWQuIiksdGhpcy5jcm9zc1ZlY3RvcnModCxuKSk6dGhpcy5jcm9zc1ZlY3RvcnModGhpcyx0KX1jcm9zc1ZlY3RvcnModCxuKXtjb25zdCBlPXQueCxhPXQueSxvPXQueixyPW4ueCxpPW4ueSxjPW4uejtyZXR1cm4gdGhpcy54PWEqYy1vKmksdGhpcy55PW8qci1lKmMsdGhpcy56PWUqaS1hKnIsdGhpc31wcm9qZWN0T25WZWN0b3IodCl7Y29uc3Qgbj10Lmxlbmd0aFNxKCk7aWYoMD09PW4pcmV0dXJuIHRoaXMuc2V0KDAsMCwwKTtjb25zdCBlPXQuZG90KHRoaXMpL247cmV0dXJuIHRoaXMuY29weSh0KS5tdWx0aXBseVNjYWxhcihlKX1wcm9qZWN0T25QbGFuZSh0KXtyZXR1cm4gbnR0LmNvcHkodGhpcykucHJvamVjdE9uVmVjdG9yKHQpLHRoaXMuc3ViKG50dCl9cmVmbGVjdCh0KXtyZXR1cm4gdGhpcy5zdWIobnR0LmNvcHkodCkubXVsdGlwbHlTY2FsYXIoMip0aGlzLmRvdCh0KSkpfWFuZ2xlVG8odCl7Y29uc3Qgbj1NYXRoLnNxcnQodGhpcy5sZW5ndGhTcSgpKnQubGVuZ3RoU3EoKSk7aWYoMD09PW4pcmV0dXJuIE1hdGguUEkvMjtjb25zdCBlPXRoaXMuZG90KHQpL247cmV0dXJuIE1hdGguYWNvcyhVOS5jbGFtcChlLC0xLDEpKX1kaXN0YW5jZVRvKHQpe3JldHVybiBNYXRoLnNxcnQodGhpcy5kaXN0YW5jZVRvU3F1YXJlZCh0KSl9ZGlzdGFuY2VUb1NxdWFyZWQodCl7Y29uc3Qgbj10aGlzLngtdC54LGU9dGhpcy55LXQueSxhPXRoaXMuei10Lno7cmV0dXJuIG4qbitlKmUrYSphfW1hbmhhdHRhbkRpc3RhbmNlVG8odCl7cmV0dXJuIE1hdGguYWJzKHRoaXMueC10LngpK01hdGguYWJzKHRoaXMueS10LnkpK01hdGguYWJzKHRoaXMuei10LnopfXNldEZyb21TcGhlcmljYWwodCl7cmV0dXJuIHRoaXMuc2V0RnJvbVNwaGVyaWNhbENvb3Jkcyh0LnJhZGl1cyx0LnBoaSx0LnRoZXRhKX1zZXRGcm9tU3BoZXJpY2FsQ29vcmRzKHQsbixlKXtjb25zdCBhPU1hdGguc2luKG4pKnQ7cmV0dXJuIHRoaXMueD1hKk1hdGguc2luKGUpLHRoaXMueT1NYXRoLmNvcyhuKSp0LHRoaXMuej1hKk1hdGguY29zKGUpLHRoaXN9c2V0RnJvbUN5bGluZHJpY2FsKHQpe3JldHVybiB0aGlzLnNldEZyb21DeWxpbmRyaWNhbENvb3Jkcyh0LnJhZGl1cyx0LnRoZXRhLHQueSl9c2V0RnJvbUN5bGluZHJpY2FsQ29vcmRzKHQsbixlKXtyZXR1cm4gdGhpcy54PXQqTWF0aC5zaW4obiksdGhpcy55PWUsdGhpcy56PXQqTWF0aC5jb3MobiksdGhpc31zZXRGcm9tTWF0cml4UG9zaXRpb24odCl7Y29uc3Qgbj10LmVsZW1lbnRzO3JldHVybiB0aGlzLng9blsxMl0sdGhpcy55PW5bMTNdLHRoaXMuej1uWzE0XSx0aGlzfXNldEZyb21NYXRyaXhTY2FsZSh0KXtjb25zdCBuPXRoaXMuc2V0RnJvbU1hdHJpeENvbHVtbih0LDApLmxlbmd0aCgpLGU9dGhpcy5zZXRGcm9tTWF0cml4Q29sdW1uKHQsMSkubGVuZ3RoKCksYT10aGlzLnNldEZyb21NYXRyaXhDb2x1bW4odCwyKS5sZW5ndGgoKTtyZXR1cm4gdGhpcy54PW4sdGhpcy55PWUsdGhpcy56PWEsdGhpc31zZXRGcm9tTWF0cml4Q29sdW1uKHQsbil7cmV0dXJuIHRoaXMuZnJvbUFycmF5KHQuZWxlbWVudHMsNCpuKX1zZXRGcm9tTWF0cml4M0NvbHVtbih0LG4pe3JldHVybiB0aGlzLmZyb21BcnJheSh0LmVsZW1lbnRzLDMqbil9ZXF1YWxzKHQpe3JldHVybiB0Lng9PT10aGlzLngmJnQueT09PXRoaXMueSYmdC56PT09dGhpcy56fWZyb21BcnJheSh0LG49MCl7cmV0dXJuIHRoaXMueD10W25dLHRoaXMueT10W24rMV0sdGhpcy56PXRbbisyXSx0aGlzfXRvQXJyYXkodD1bXSxuPTApe3JldHVybiB0W25dPXRoaXMueCx0W24rMV09dGhpcy55LHRbbisyXT10aGlzLnosdH1mcm9tQnVmZmVyQXR0cmlidXRlKHQsbixlKXtyZXR1cm4gdm9pZCAwIT09ZSYmY29uc29sZS53YXJuKCJUSFJFRS5WZWN0b3IzOiBvZmZzZXQgaGFzIGJlZW4gcmVtb3ZlZCBmcm9tIC5mcm9tQnVmZmVyQXR0cmlidXRlKCkuIiksdGhpcy54PXQuZ2V0WChuKSx0aGlzLnk9dC5nZXRZKG4pLHRoaXMuej10LmdldFoobiksdGhpc31yYW5kb20oKXtyZXR1cm4gdGhpcy54PU1hdGgucmFuZG9tKCksdGhpcy55PU1hdGgucmFuZG9tKCksdGhpcy56PU1hdGgucmFuZG9tKCksdGhpc319Y29uc3QgbnR0PW5ldyB0dHQsZXR0PW5ldyAkOTtjbGFzcyBhdHR7Y29uc3RydWN0b3IodCxuKXtPYmplY3QuZGVmaW5lUHJvcGVydHkodGhpcywiaXNCb3gzIix7dmFsdWU6ITB9KSx0aGlzLm1pbj12b2lkIDAhPT10P3Q6bmV3IHR0dCgxLzAsMS8wLDEvMCksdGhpcy5tYXg9dm9pZCAwIT09bj9uOm5ldyB0dHQoLTEvMCwtMS8wLC0xLzApfXNldCh0LG4pe3JldHVybiB0aGlzLm1pbi5jb3B5KHQpLHRoaXMubWF4LmNvcHkobiksdGhpc31zZXRGcm9tQXJyYXkodCl7bGV0IG49MS8wLGU9MS8wLGE9MS8wLG89LTEvMCxyPS0xLzAsaT0tMS8wO2ZvcihsZXQgYz0wLHM9dC5sZW5ndGg7YzxzO2MrPTMpe2NvbnN0IHM9dFtjXSxsPXRbYysxXSxtPXRbYysyXTtzPG4mJihuPXMpLGw8ZSYmKGU9bCksbTxhJiYoYT1tKSxzPm8mJihvPXMpLGw+ciYmKHI9bCksbT5pJiYoaT1tKX1yZXR1cm4gdGhpcy5taW4uc2V0KG4sZSxhKSx0aGlzLm1heC5zZXQobyxyLGkpLHRoaXN9c2V0RnJvbUJ1ZmZlckF0dHJpYnV0ZSh0KXtsZXQgbj0xLzAsZT0xLzAsYT0xLzAsbz0tMS8wLHI9LTEvMCxpPS0xLzA7Zm9yKGxldCBjPTAscz10LmNvdW50O2M8cztjKyspe2NvbnN0IHM9dC5nZXRYKGMpLGw9dC5nZXRZKGMpLG09dC5nZXRaKGMpO3M8biYmKG49cyksbDxlJiYoZT1sKSxtPGEmJihhPW0pLHM+byYmKG89cyksbD5yJiYocj1sKSxtPmkmJihpPW0pfXJldHVybiB0aGlzLm1pbi5zZXQobixlLGEpLHRoaXMubWF4LnNldChvLHIsaSksdGhpc31zZXRGcm9tUG9pbnRzKHQpe3RoaXMubWFrZUVtcHR5KCk7Zm9yKGxldCBuPTAsZT10Lmxlbmd0aDtuPGU7bisrKXRoaXMuZXhwYW5kQnlQb2ludCh0W25dKTtyZXR1cm4gdGhpc31zZXRGcm9tQ2VudGVyQW5kU2l6ZSh0LG4pe2NvbnN0IGU9aXR0LmNvcHkobikubXVsdGlwbHlTY2FsYXIoLjUpO3JldHVybiB0aGlzLm1pbi5jb3B5KHQpLnN1YihlKSx0aGlzLm1heC5jb3B5KHQpLmFkZChlKSx0aGlzfXNldEZyb21PYmplY3QodCl7cmV0dXJuIHRoaXMubWFrZUVtcHR5KCksdGhpcy5leHBhbmRCeU9iamVjdCh0KX1jbG9uZSgpe3JldHVybihuZXcgdGhpcy5jb25zdHJ1Y3RvcikuY29weSh0aGlzKX1jb3B5KHQpe3JldHVybiB0aGlzLm1pbi5jb3B5KHQubWluKSx0aGlzLm1heC5jb3B5KHQubWF4KSx0aGlzfW1ha2VFbXB0eSgpe3JldHVybiB0aGlzLm1pbi54PXRoaXMubWluLnk9dGhpcy5taW4uej0xLzAsdGhpcy5tYXgueD10aGlzLm1heC55PXRoaXMubWF4Lno9LTEvMCx0aGlzfWlzRW1wdHkoKXtyZXR1cm4gdGhpcy5tYXgueDx0aGlzLm1pbi54fHx0aGlzLm1heC55PHRoaXMubWluLnl8fHRoaXMubWF4Lno8dGhpcy5taW4uen1nZXRDZW50ZXIodCl7cmV0dXJuIHZvaWQgMD09PXQmJihjb25zb2xlLndhcm4oIlRIUkVFLkJveDM6IC5nZXRDZW50ZXIoKSB0YXJnZXQgaXMgbm93IHJlcXVpcmVkIiksdD1uZXcgdHR0KSx0aGlzLmlzRW1wdHkoKT90LnNldCgwLDAsMCk6dC5hZGRWZWN0b3JzKHRoaXMubWluLHRoaXMubWF4KS5tdWx0aXBseVNjYWxhciguNSl9Z2V0U2l6ZSh0KXtyZXR1cm4gdm9pZCAwPT09dCYmKGNvbnNvbGUud2FybigiVEhSRUUuQm94MzogLmdldFNpemUoKSB0YXJnZXQgaXMgbm93IHJlcXVpcmVkIiksdD1uZXcgdHR0KSx0aGlzLmlzRW1wdHkoKT90LnNldCgwLDAsMCk6dC5zdWJWZWN0b3JzKHRoaXMubWF4LHRoaXMubWluKX1leHBhbmRCeVBvaW50KHQpe3JldHVybiB0aGlzLm1pbi5taW4odCksdGhpcy5tYXgubWF4KHQpLHRoaXN9ZXhwYW5kQnlWZWN0b3IodCl7cmV0dXJuIHRoaXMubWluLnN1Yih0KSx0aGlzLm1heC5hZGQodCksdGhpc31leHBhbmRCeVNjYWxhcih0KXtyZXR1cm4gdGhpcy5taW4uYWRkU2NhbGFyKC10KSx0aGlzLm1heC5hZGRTY2FsYXIodCksdGhpc31leHBhbmRCeU9iamVjdCh0KXt0LnVwZGF0ZVdvcmxkTWF0cml4KCExLCExKTtjb25zdCBuPXQuZ2VvbWV0cnk7dm9pZCAwIT09biYmKG51bGw9PT1uLmJvdW5kaW5nQm94JiZuLmNvbXB1dGVCb3VuZGluZ0JveCgpLGN0dC5jb3B5KG4uYm91bmRpbmdCb3gpLGN0dC5hcHBseU1hdHJpeDQodC5tYXRyaXhXb3JsZCksdGhpcy51bmlvbihjdHQpKTtjb25zdCBlPXQuY2hpbGRyZW47Zm9yKGxldCB0PTAsbj1lLmxlbmd0aDt0PG47dCsrKXRoaXMuZXhwYW5kQnlPYmplY3QoZVt0XSk7cmV0dXJuIHRoaXN9Y29udGFpbnNQb2ludCh0KXtyZXR1cm4hKHQueDx0aGlzLm1pbi54fHx0Lng+dGhpcy5tYXgueHx8dC55PHRoaXMubWluLnl8fHQueT50aGlzLm1heC55fHx0Lno8dGhpcy5taW4uenx8dC56PnRoaXMubWF4LnopfWNvbnRhaW5zQm94KHQpe3JldHVybiB0aGlzLm1pbi54PD10Lm1pbi54JiZ0Lm1heC54PD10aGlzLm1heC54JiZ0aGlzLm1pbi55PD10Lm1pbi55JiZ0Lm1heC55PD10aGlzLm1heC55JiZ0aGlzLm1pbi56PD10Lm1pbi56JiZ0Lm1heC56PD10aGlzLm1heC56fWdldFBhcmFtZXRlcih0LG4pe3JldHVybiB2b2lkIDA9PT1uJiYoY29uc29sZS53YXJuKCJUSFJFRS5Cb3gzOiAuZ2V0UGFyYW1ldGVyKCkgdGFyZ2V0IGlzIG5vdyByZXF1aXJlZCIpLG49bmV3IHR0dCksbi5zZXQoKHQueC10aGlzLm1pbi54KS8odGhpcy5tYXgueC10aGlzLm1pbi54KSwodC55LXRoaXMubWluLnkpLyh0aGlzLm1heC55LXRoaXMubWluLnkpLCh0LnotdGhpcy5taW4ueikvKHRoaXMubWF4LnotdGhpcy5taW4ueikpfWludGVyc2VjdHNCb3godCl7cmV0dXJuISh0Lm1heC54PHRoaXMubWluLnh8fHQubWluLng+dGhpcy5tYXgueHx8dC5tYXgueTx0aGlzLm1pbi55fHx0Lm1pbi55PnRoaXMubWF4Lnl8fHQubWF4Lno8dGhpcy5taW4uenx8dC5taW4uej50aGlzLm1heC56KX1pbnRlcnNlY3RzU3BoZXJlKHQpe3JldHVybiB0aGlzLmNsYW1wUG9pbnQodC5jZW50ZXIsaXR0KSxpdHQuZGlzdGFuY2VUb1NxdWFyZWQodC5jZW50ZXIpPD10LnJhZGl1cyp0LnJhZGl1c31pbnRlcnNlY3RzUGxhbmUodCl7bGV0IG4sZTtyZXR1cm4gdC5ub3JtYWwueD4wPyhuPXQubm9ybWFsLngqdGhpcy5taW4ueCxlPXQubm9ybWFsLngqdGhpcy5tYXgueCk6KG49dC5ub3JtYWwueCp0aGlzLm1heC54LGU9dC5ub3JtYWwueCp0aGlzLm1pbi54KSx0Lm5vcm1hbC55PjA/KG4rPXQubm9ybWFsLnkqdGhpcy5taW4ueSxlKz10Lm5vcm1hbC55KnRoaXMubWF4LnkpOihuKz10Lm5vcm1hbC55KnRoaXMubWF4LnksZSs9dC5ub3JtYWwueSp0aGlzLm1pbi55KSx0Lm5vcm1hbC56PjA/KG4rPXQubm9ybWFsLnoqdGhpcy5taW4ueixlKz10Lm5vcm1hbC56KnRoaXMubWF4LnopOihuKz10Lm5vcm1hbC56KnRoaXMubWF4LnosZSs9dC5ub3JtYWwueip0aGlzLm1pbi56KSxuPD0tdC5jb25zdGFudCYmZT49LXQuY29uc3RhbnR9aW50ZXJzZWN0c1RyaWFuZ2xlKHQpe2lmKHRoaXMuaXNFbXB0eSgpKXJldHVybiExO3RoaXMuZ2V0Q2VudGVyKGJ0dCksdXR0LnN1YlZlY3RvcnModGhpcy5tYXgsYnR0KSxzdHQuc3ViVmVjdG9ycyh0LmEsYnR0KSxsdHQuc3ViVmVjdG9ycyh0LmIsYnR0KSxtdHQuc3ViVmVjdG9ycyh0LmMsYnR0KSxkdHQuc3ViVmVjdG9ycyhsdHQsc3R0KSxndHQuc3ViVmVjdG9ycyhtdHQsbHR0KSxwdHQuc3ViVmVjdG9ycyhzdHQsbXR0KTtsZXQgbj1bMCwtZHR0LnosZHR0LnksMCwtZ3R0LnosZ3R0LnksMCwtcHR0LnoscHR0LnksZHR0LnosMCwtZHR0LngsZ3R0LnosMCwtZ3R0LngscHR0LnosMCwtcHR0LngsLWR0dC55LGR0dC54LDAsLWd0dC55LGd0dC54LDAsLXB0dC55LHB0dC54LDBdO3JldHVybiEhb3R0KG4sc3R0LGx0dCxtdHQsdXR0KSYmKG49WzEsMCwwLDAsMSwwLDAsMCwxXSwhIW90dChuLHN0dCxsdHQsbXR0LHV0dCkmJihmdHQuY3Jvc3NWZWN0b3JzKGR0dCxndHQpLG49W2Z0dC54LGZ0dC55LGZ0dC56XSxvdHQobixzdHQsbHR0LG10dCx1dHQpKSl9Y2xhbXBQb2ludCh0LG4pe3JldHVybiB2b2lkIDA9PT1uJiYoY29uc29sZS53YXJuKCJUSFJFRS5Cb3gzOiAuY2xhbXBQb2ludCgpIHRhcmdldCBpcyBub3cgcmVxdWlyZWQiKSxuPW5ldyB0dHQpLG4uY29weSh0KS5jbGFtcCh0aGlzLm1pbix0aGlzLm1heCl9ZGlzdGFuY2VUb1BvaW50KHQpe3JldHVybiBpdHQuY29weSh0KS5jbGFtcCh0aGlzLm1pbix0aGlzLm1heCkuc3ViKHQpLmxlbmd0aCgpfWdldEJvdW5kaW5nU3BoZXJlKHQpe3JldHVybiB2b2lkIDA9PT10JiZjb25zb2xlLmVycm9yKCJUSFJFRS5Cb3gzOiAuZ2V0Qm91bmRpbmdTcGhlcmUoKSB0YXJnZXQgaXMgbm93IHJlcXVpcmVkIiksdGhpcy5nZXRDZW50ZXIodC5jZW50ZXIpLHQucmFkaXVzPS41KnRoaXMuZ2V0U2l6ZShpdHQpLmxlbmd0aCgpLHR9aW50ZXJzZWN0KHQpe3JldHVybiB0aGlzLm1pbi5tYXgodC5taW4pLHRoaXMubWF4Lm1pbih0Lm1heCksdGhpcy5pc0VtcHR5KCkmJnRoaXMubWFrZUVtcHR5KCksdGhpc311bmlvbih0KXtyZXR1cm4gdGhpcy5taW4ubWluKHQubWluKSx0aGlzLm1heC5tYXgodC5tYXgpLHRoaXN9YXBwbHlNYXRyaXg0KHQpe3JldHVybiB0aGlzLmlzRW1wdHkoKXx8KHJ0dFswXS5zZXQodGhpcy5taW4ueCx0aGlzLm1pbi55LHRoaXMubWluLnopLmFwcGx5TWF0cml4NCh0KSxydHRbMV0uc2V0KHRoaXMubWluLngsdGhpcy5taW4ueSx0aGlzLm1heC56KS5hcHBseU1hdHJpeDQodCkscnR0WzJdLnNldCh0aGlzLm1pbi54LHRoaXMubWF4LnksdGhpcy5taW4ueikuYXBwbHlNYXRyaXg0KHQpLHJ0dFszXS5zZXQodGhpcy5taW4ueCx0aGlzLm1heC55LHRoaXMubWF4LnopLmFwcGx5TWF0cml4NCh0KSxydHRbNF0uc2V0KHRoaXMubWF4LngsdGhpcy5taW4ueSx0aGlzLm1pbi56KS5hcHBseU1hdHJpeDQodCkscnR0WzVdLnNldCh0aGlzLm1heC54LHRoaXMubWluLnksdGhpcy5tYXgueikuYXBwbHlNYXRyaXg0KHQpLHJ0dFs2XS5zZXQodGhpcy5tYXgueCx0aGlzLm1heC55LHRoaXMubWluLnopLmFwcGx5TWF0cml4NCh0KSxydHRbN10uc2V0KHRoaXMubWF4LngsdGhpcy5tYXgueSx0aGlzLm1heC56KS5hcHBseU1hdHJpeDQodCksdGhpcy5zZXRGcm9tUG9pbnRzKHJ0dCkpLHRoaXN9dHJhbnNsYXRlKHQpe3JldHVybiB0aGlzLm1pbi5hZGQodCksdGhpcy5tYXguYWRkKHQpLHRoaXN9ZXF1YWxzKHQpe3JldHVybiB0Lm1pbi5lcXVhbHModGhpcy5taW4pJiZ0Lm1heC5lcXVhbHModGhpcy5tYXgpfX1mdW5jdGlvbiBvdHQodCxuLGUsYSxvKXtmb3IobGV0IHI9MCxpPXQubGVuZ3RoLTM7cjw9aTtyKz0zKXtodHQuZnJvbUFycmF5KHQscik7Y29uc3QgaT1vLngqTWF0aC5hYnMoaHR0LngpK28ueSpNYXRoLmFicyhodHQueSkrby56Kk1hdGguYWJzKGh0dC56KSxjPW4uZG90KGh0dCkscz1lLmRvdChodHQpLGw9YS5kb3QoaHR0KTtpZihNYXRoLm1heCgtTWF0aC5tYXgoYyxzLGwpLE1hdGgubWluKGMscyxsKSk+aSlyZXR1cm4hMX1yZXR1cm4hMH1jb25zdCBydHQ9W25ldyB0dHQsbmV3IHR0dCxuZXcgdHR0LG5ldyB0dHQsbmV3IHR0dCxuZXcgdHR0LG5ldyB0dHQsbmV3IHR0dF0saXR0PW5ldyB0dHQsY3R0PW5ldyBhdHQsc3R0PW5ldyB0dHQsbHR0PW5ldyB0dHQsbXR0PW5ldyB0dHQsZHR0PW5ldyB0dHQsZ3R0PW5ldyB0dHQscHR0PW5ldyB0dHQsYnR0PW5ldyB0dHQsdXR0PW5ldyB0dHQsZnR0PW5ldyB0dHQsaHR0PW5ldyB0dHQsX3R0PW5ldyBhdHQ7Y2xhc3MgQ3R0e2NvbnN0cnVjdG9yKHQsbil7dGhpcy5jZW50ZXI9dm9pZCAwIT09dD90Om5ldyB0dHQsdGhpcy5yYWRpdXM9dm9pZCAwIT09bj9uOi0xfXNldCh0LG4pe3JldHVybiB0aGlzLmNlbnRlci5jb3B5KHQpLHRoaXMucmFkaXVzPW4sdGhpc31zZXRGcm9tUG9pbnRzKHQsbil7Y29uc3QgZT10aGlzLmNlbnRlcjt2b2lkIDAhPT1uP2UuY29weShuKTpfdHQuc2V0RnJvbVBvaW50cyh0KS5nZXRDZW50ZXIoZSk7bGV0IGE9MDtmb3IobGV0IG49MCxvPXQubGVuZ3RoO248bztuKyspYT1NYXRoLm1heChhLGUuZGlzdGFuY2VUb1NxdWFyZWQodFtuXSkpO3JldHVybiB0aGlzLnJhZGl1cz1NYXRoLnNxcnQoYSksdGhpc31jbG9uZSgpe3JldHVybihuZXcgdGhpcy5jb25zdHJ1Y3RvcikuY29weSh0aGlzKX1jb3B5KHQpe3JldHVybiB0aGlzLmNlbnRlci5jb3B5KHQuY2VudGVyKSx0aGlzLnJhZGl1cz10LnJhZGl1cyx0aGlzfWlzRW1wdHkoKXtyZXR1cm4gdGhpcy5yYWRpdXM8MH1tYWtlRW1wdHkoKXtyZXR1cm4gdGhpcy5jZW50ZXIuc2V0KDAsMCwwKSx0aGlzLnJhZGl1cz0tMSx0aGlzfWNvbnRhaW5zUG9pbnQodCl7cmV0dXJuIHQuZGlzdGFuY2VUb1NxdWFyZWQodGhpcy5jZW50ZXIpPD10aGlzLnJhZGl1cyp0aGlzLnJhZGl1c31kaXN0YW5jZVRvUG9pbnQodCl7cmV0dXJuIHQuZGlzdGFuY2VUbyh0aGlzLmNlbnRlciktdGhpcy5yYWRpdXN9aW50ZXJzZWN0c1NwaGVyZSh0KXtjb25zdCBuPXRoaXMucmFkaXVzK3QucmFkaXVzO3JldHVybiB0LmNlbnRlci5kaXN0YW5jZVRvU3F1YXJlZCh0aGlzLmNlbnRlcik8PW4qbn1pbnRlcnNlY3RzQm94KHQpe3JldHVybiB0LmludGVyc2VjdHNTcGhlcmUodGhpcyl9aW50ZXJzZWN0c1BsYW5lKHQpe3JldHVybiBNYXRoLmFicyh0LmRpc3RhbmNlVG9Qb2ludCh0aGlzLmNlbnRlcikpPD10aGlzLnJhZGl1c31jbGFtcFBvaW50KHQsbil7Y29uc3QgZT10aGlzLmNlbnRlci5kaXN0YW5jZVRvU3F1YXJlZCh0KTtyZXR1cm4gdm9pZCAwPT09biYmKGNvbnNvbGUud2FybigiVEhSRUUuU3BoZXJlOiAuY2xhbXBQb2ludCgpIHRhcmdldCBpcyBub3cgcmVxdWlyZWQiKSxuPW5ldyB0dHQpLG4uY29weSh0KSxlPnRoaXMucmFkaXVzKnRoaXMucmFkaXVzJiYobi5zdWIodGhpcy5jZW50ZXIpLm5vcm1hbGl6ZSgpLG4ubXVsdGlwbHlTY2FsYXIodGhpcy5yYWRpdXMpLmFkZCh0aGlzLmNlbnRlcikpLG59Z2V0Qm91bmRpbmdCb3godCl7cmV0dXJuIHZvaWQgMD09PXQmJihjb25zb2xlLndhcm4oIlRIUkVFLlNwaGVyZTogLmdldEJvdW5kaW5nQm94KCkgdGFyZ2V0IGlzIG5vdyByZXF1aXJlZCIpLHQ9bmV3IGF0dCksdGhpcy5pc0VtcHR5KCk/KHQubWFrZUVtcHR5KCksdCk6KHQuc2V0KHRoaXMuY2VudGVyLHRoaXMuY2VudGVyKSx0LmV4cGFuZEJ5U2NhbGFyKHRoaXMucmFkaXVzKSx0KX1hcHBseU1hdHJpeDQodCl7cmV0dXJuIHRoaXMuY2VudGVyLmFwcGx5TWF0cml4NCh0KSx0aGlzLnJhZGl1cz10aGlzLnJhZGl1cyp0LmdldE1heFNjYWxlT25BeGlzKCksdGhpc310cmFuc2xhdGUodCl7cmV0dXJuIHRoaXMuY2VudGVyLmFkZCh0KSx0aGlzfWVxdWFscyh0KXtyZXR1cm4gdC5jZW50ZXIuZXF1YWxzKHRoaXMuY2VudGVyKSYmdC5yYWRpdXM9PT10aGlzLnJhZGl1c319Y29uc3QgTXR0PW5ldyB0dHQsT3R0PW5ldyB0dHQsUHR0PW5ldyB0dHQseHR0PW5ldyB0dHQseXR0PW5ldyB0dHQsa3R0PW5ldyB0dHQsdnR0PW5ldyB0dHQ7Y2xhc3Mgd3R0e2NvbnN0cnVjdG9yKHQsbil7dGhpcy5vcmlnaW49dm9pZCAwIT09dD90Om5ldyB0dHQsdGhpcy5kaXJlY3Rpb249dm9pZCAwIT09bj9uOm5ldyB0dHQoMCwwLC0xKX1zZXQodCxuKXtyZXR1cm4gdGhpcy5vcmlnaW4uY29weSh0KSx0aGlzLmRpcmVjdGlvbi5jb3B5KG4pLHRoaXN9Y2xvbmUoKXtyZXR1cm4obmV3IHRoaXMuY29uc3RydWN0b3IpLmNvcHkodGhpcyl9Y29weSh0KXtyZXR1cm4gdGhpcy5vcmlnaW4uY29weSh0Lm9yaWdpbiksdGhpcy5kaXJlY3Rpb24uY29weSh0LmRpcmVjdGlvbiksdGhpc31hdCh0LG4pe3JldHVybiB2b2lkIDA9PT1uJiYoY29uc29sZS53YXJuKCJUSFJFRS5SYXk6IC5hdCgpIHRhcmdldCBpcyBub3cgcmVxdWlyZWQiKSxuPW5ldyB0dHQpLG4uY29weSh0aGlzLmRpcmVjdGlvbikubXVsdGlwbHlTY2FsYXIodCkuYWRkKHRoaXMub3JpZ2luKX1sb29rQXQodCl7cmV0dXJuIHRoaXMuZGlyZWN0aW9uLmNvcHkodCkuc3ViKHRoaXMub3JpZ2luKS5ub3JtYWxpemUoKSx0aGlzfXJlY2FzdCh0KXtyZXR1cm4gdGhpcy5vcmlnaW4uY29weSh0aGlzLmF0KHQsTXR0KSksdGhpc31jbG9zZXN0UG9pbnRUb1BvaW50KHQsbil7dm9pZCAwPT09biYmKGNvbnNvbGUud2FybigiVEhSRUUuUmF5OiAuY2xvc2VzdFBvaW50VG9Qb2ludCgpIHRhcmdldCBpcyBub3cgcmVxdWlyZWQiKSxuPW5ldyB0dHQpLG4uc3ViVmVjdG9ycyh0LHRoaXMub3JpZ2luKTtjb25zdCBlPW4uZG90KHRoaXMuZGlyZWN0aW9uKTtyZXR1cm4gZTwwP24uY29weSh0aGlzLm9yaWdpbik6bi5jb3B5KHRoaXMuZGlyZWN0aW9uKS5tdWx0aXBseVNjYWxhcihlKS5hZGQodGhpcy5vcmlnaW4pfWRpc3RhbmNlVG9Qb2ludCh0KXtyZXR1cm4gTWF0aC5zcXJ0KHRoaXMuZGlzdGFuY2VTcVRvUG9pbnQodCkpfWRpc3RhbmNlU3FUb1BvaW50KHQpe2NvbnN0IG49TXR0LnN1YlZlY3RvcnModCx0aGlzLm9yaWdpbikuZG90KHRoaXMuZGlyZWN0aW9uKTtyZXR1cm4gbjwwP3RoaXMub3JpZ2luLmRpc3RhbmNlVG9TcXVhcmVkKHQpOihNdHQuY29weSh0aGlzLmRpcmVjdGlvbikubXVsdGlwbHlTY2FsYXIobikuYWRkKHRoaXMub3JpZ2luKSxNdHQuZGlzdGFuY2VUb1NxdWFyZWQodCkpfWRpc3RhbmNlU3FUb1NlZ21lbnQodCxuLGUsYSl7T3R0LmNvcHkodCkuYWRkKG4pLm11bHRpcGx5U2NhbGFyKC41KSxQdHQuY29weShuKS5zdWIodCkubm9ybWFsaXplKCkseHR0LmNvcHkodGhpcy5vcmlnaW4pLnN1YihPdHQpO2NvbnN0IG89LjUqdC5kaXN0YW5jZVRvKG4pLHI9LXRoaXMuZGlyZWN0aW9uLmRvdChQdHQpLGk9eHR0LmRvdCh0aGlzLmRpcmVjdGlvbiksYz0teHR0LmRvdChQdHQpLHM9eHR0Lmxlbmd0aFNxKCksbD1NYXRoLmFicygxLXIqcik7bGV0IG0sZCxnLHA7aWYobD4wKWlmKG09cipjLWksZD1yKmktYyxwPW8qbCxtPj0wKWlmKGQ+PS1wKWlmKGQ8PXApe2NvbnN0IHQ9MS9sO20qPXQsZCo9dCxnPW0qKG0rcipkKzIqaSkrZCoociptK2QrMipjKStzfWVsc2UgZD1vLG09TWF0aC5tYXgoMCwtKHIqZCtpKSksZz0tbSptK2QqKGQrMipjKStzO2Vsc2UgZD0tbyxtPU1hdGgubWF4KDAsLShyKmQraSkpLGc9LW0qbStkKihkKzIqYykrcztlbHNlIGQ8PS1wPyhtPU1hdGgubWF4KDAsLSgtcipvK2kpKSxkPW0+MD8tbzpNYXRoLm1pbihNYXRoLm1heCgtbywtYyksbyksZz0tbSptK2QqKGQrMipjKStzKTpkPD1wPyhtPTAsZD1NYXRoLm1pbihNYXRoLm1heCgtbywtYyksbyksZz1kKihkKzIqYykrcyk6KG09TWF0aC5tYXgoMCwtKHIqbytpKSksZD1tPjA/bzpNYXRoLm1pbihNYXRoLm1heCgtbywtYyksbyksZz0tbSptK2QqKGQrMipjKStzKTtlbHNlIGQ9cj4wPy1vOm8sbT1NYXRoLm1heCgwLC0ocipkK2kpKSxnPS1tKm0rZCooZCsyKmMpK3M7cmV0dXJuIGUmJmUuY29weSh0aGlzLmRpcmVjdGlvbikubXVsdGlwbHlTY2FsYXIobSkuYWRkKHRoaXMub3JpZ2luKSxhJiZhLmNvcHkoUHR0KS5tdWx0aXBseVNjYWxhcihkKS5hZGQoT3R0KSxnfWludGVyc2VjdFNwaGVyZSh0LG4pe010dC5zdWJWZWN0b3JzKHQuY2VudGVyLHRoaXMub3JpZ2luKTtjb25zdCBlPU10dC5kb3QodGhpcy5kaXJlY3Rpb24pLGE9TXR0LmRvdChNdHQpLWUqZSxvPXQucmFkaXVzKnQucmFkaXVzO2lmKGE+bylyZXR1cm4gbnVsbDtjb25zdCByPU1hdGguc3FydChvLWEpLGk9ZS1yLGM9ZStyO3JldHVybiBpPDAmJmM8MD9udWxsOnRoaXMuYXQoaTwwP2M6aSxuKX1pbnRlcnNlY3RzU3BoZXJlKHQpe3JldHVybiB0aGlzLmRpc3RhbmNlU3FUb1BvaW50KHQuY2VudGVyKTw9dC5yYWRpdXMqdC5yYWRpdXN9ZGlzdGFuY2VUb1BsYW5lKHQpe2NvbnN0IG49dC5ub3JtYWwuZG90KHRoaXMuZGlyZWN0aW9uKTtpZigwPT09bilyZXR1cm4gMD09PXQuZGlzdGFuY2VUb1BvaW50KHRoaXMub3JpZ2luKT8wOm51bGw7Y29uc3QgZT0tKHRoaXMub3JpZ2luLmRvdCh0Lm5vcm1hbCkrdC5jb25zdGFudCkvbjtyZXR1cm4gZT49MD9lOm51bGx9aW50ZXJzZWN0UGxhbmUodCxuKXtjb25zdCBlPXRoaXMuZGlzdGFuY2VUb1BsYW5lKHQpO3JldHVybiBudWxsPT09ZT9udWxsOnRoaXMuYXQoZSxuKX1pbnRlcnNlY3RzUGxhbmUodCl7Y29uc3Qgbj10LmRpc3RhbmNlVG9Qb2ludCh0aGlzLm9yaWdpbik7cmV0dXJuIDA9PT1ufHx0Lm5vcm1hbC5kb3QodGhpcy5kaXJlY3Rpb24pKm48MH1pbnRlcnNlY3RCb3godCxuKXtsZXQgZSxhLG8scixpLGM7Y29uc3Qgcz0xL3RoaXMuZGlyZWN0aW9uLngsbD0xL3RoaXMuZGlyZWN0aW9uLnksbT0xL3RoaXMuZGlyZWN0aW9uLnosZD10aGlzLm9yaWdpbjtyZXR1cm4gcz49MD8oZT0odC5taW4ueC1kLngpKnMsYT0odC5tYXgueC1kLngpKnMpOihlPSh0Lm1heC54LWQueCkqcyxhPSh0Lm1pbi54LWQueCkqcyksbD49MD8obz0odC5taW4ueS1kLnkpKmwscj0odC5tYXgueS1kLnkpKmwpOihvPSh0Lm1heC55LWQueSkqbCxyPSh0Lm1pbi55LWQueSkqbCksZT5yfHxvPmE/bnVsbDooKG8+ZXx8ZSE9ZSkmJihlPW8pLChyPGF8fGEhPWEpJiYoYT1yKSxtPj0wPyhpPSh0Lm1pbi56LWQueikqbSxjPSh0Lm1heC56LWQueikqbSk6KGk9KHQubWF4LnotZC56KSptLGM9KHQubWluLnotZC56KSptKSxlPmN8fGk+YT9udWxsOigoaT5lfHxlIT1lKSYmKGU9aSksKGM8YXx8YSE9YSkmJihhPWMpLGE8MD9udWxsOnRoaXMuYXQoZT49MD9lOmEsbikpKX1pbnRlcnNlY3RzQm94KHQpe3JldHVybiBudWxsIT09dGhpcy5pbnRlcnNlY3RCb3godCxNdHQpfWludGVyc2VjdFRyaWFuZ2xlKHQsbixlLGEsbyl7eXR0LnN1YlZlY3RvcnMobix0KSxrdHQuc3ViVmVjdG9ycyhlLHQpLHZ0dC5jcm9zc1ZlY3RvcnMoeXR0LGt0dCk7bGV0IHIsaT10aGlzLmRpcmVjdGlvbi5kb3QodnR0KTtpZihpPjApe2lmKGEpcmV0dXJuIG51bGw7cj0xfWVsc2V7aWYoIShpPDApKXJldHVybiBudWxsO3I9LTEsaT0taX14dHQuc3ViVmVjdG9ycyh0aGlzLm9yaWdpbix0KTtjb25zdCBjPXIqdGhpcy5kaXJlY3Rpb24uZG90KGt0dC5jcm9zc1ZlY3RvcnMoeHR0LGt0dCkpO2lmKGM8MClyZXR1cm4gbnVsbDtjb25zdCBzPXIqdGhpcy5kaXJlY3Rpb24uZG90KHl0dC5jcm9zcyh4dHQpKTtpZihzPDApcmV0dXJuIG51bGw7aWYoYytzPmkpcmV0dXJuIG51bGw7Y29uc3QgbD0tcip4dHQuZG90KHZ0dCk7cmV0dXJuIGw8MD9udWxsOnRoaXMuYXQobC9pLG8pfWFwcGx5TWF0cml4NCh0KXtyZXR1cm4gdGhpcy5vcmlnaW4uYXBwbHlNYXRyaXg0KHQpLHRoaXMuZGlyZWN0aW9uLnRyYW5zZm9ybURpcmVjdGlvbih0KSx0aGlzfWVxdWFscyh0KXtyZXR1cm4gdC5vcmlnaW4uZXF1YWxzKHRoaXMub3JpZ2luKSYmdC5kaXJlY3Rpb24uZXF1YWxzKHRoaXMuZGlyZWN0aW9uKX19Y2xhc3MgU3R0e2NvbnN0cnVjdG9yKCl7T2JqZWN0LmRlZmluZVByb3BlcnR5KHRoaXMsImlzTWF0cml4NCIse3ZhbHVlOiEwfSksdGhpcy5lbGVtZW50cz1bMSwwLDAsMCwwLDEsMCwwLDAsMCwxLDAsMCwwLDAsMV0sYXJndW1lbnRzLmxlbmd0aD4wJiZjb25zb2xlLmVycm9yKCJUSFJFRS5NYXRyaXg0OiB0aGUgY29uc3RydWN0b3Igbm8gbG9uZ2VyIHJlYWRzIGFyZ3VtZW50cy4gdXNlIC5zZXQoKSBpbnN0ZWFkLiIpfXNldCh0LG4sZSxhLG8scixpLGMscyxsLG0sZCxnLHAsYix1KXtjb25zdCBmPXRoaXMuZWxlbWVudHM7cmV0dXJuIGZbMF09dCxmWzRdPW4sZls4XT1lLGZbMTJdPWEsZlsxXT1vLGZbNV09cixmWzldPWksZlsxM109YyxmWzJdPXMsZls2XT1sLGZbMTBdPW0sZlsxNF09ZCxmWzNdPWcsZls3XT1wLGZbMTFdPWIsZlsxNV09dSx0aGlzfWlkZW50aXR5KCl7cmV0dXJuIHRoaXMuc2V0KDEsMCwwLDAsMCwxLDAsMCwwLDAsMSwwLDAsMCwwLDEpLHRoaXN9Y2xvbmUoKXtyZXR1cm4obmV3IFN0dCkuZnJvbUFycmF5KHRoaXMuZWxlbWVudHMpfWNvcHkodCl7Y29uc3Qgbj10aGlzLmVsZW1lbnRzLGU9dC5lbGVtZW50cztyZXR1cm4gblswXT1lWzBdLG5bMV09ZVsxXSxuWzJdPWVbMl0sblszXT1lWzNdLG5bNF09ZVs0XSxuWzVdPWVbNV0sbls2XT1lWzZdLG5bN109ZVs3XSxuWzhdPWVbOF0sbls5XT1lWzldLG5bMTBdPWVbMTBdLG5bMTFdPWVbMTFdLG5bMTJdPWVbMTJdLG5bMTNdPWVbMTNdLG5bMTRdPWVbMTRdLG5bMTVdPWVbMTVdLHRoaXN9Y29weVBvc2l0aW9uKHQpe2NvbnN0IG49dGhpcy5lbGVtZW50cyxlPXQuZWxlbWVudHM7cmV0dXJuIG5bMTJdPWVbMTJdLG5bMTNdPWVbMTNdLG5bMTRdPWVbMTRdLHRoaXN9c2V0RnJvbU1hdHJpeDModCl7Y29uc3Qgbj10LmVsZW1lbnRzO3JldHVybiB0aGlzLnNldChuWzBdLG5bM10sbls2XSwwLG5bMV0sbls0XSxuWzddLDAsblsyXSxuWzVdLG5bOF0sMCwwLDAsMCwxKSx0aGlzfWV4dHJhY3RCYXNpcyh0LG4sZSl7cmV0dXJuIHQuc2V0RnJvbU1hdHJpeENvbHVtbih0aGlzLDApLG4uc2V0RnJvbU1hdHJpeENvbHVtbih0aGlzLDEpLGUuc2V0RnJvbU1hdHJpeENvbHVtbih0aGlzLDIpLHRoaXN9bWFrZUJhc2lzKHQsbixlKXtyZXR1cm4gdGhpcy5zZXQodC54LG4ueCxlLngsMCx0Lnksbi55LGUueSwwLHQueixuLnosZS56LDAsMCwwLDAsMSksdGhpc31leHRyYWN0Um90YXRpb24odCl7Y29uc3Qgbj10aGlzLmVsZW1lbnRzLGU9dC5lbGVtZW50cyxhPTEvRXR0LnNldEZyb21NYXRyaXhDb2x1bW4odCwwKS5sZW5ndGgoKSxvPTEvRXR0LnNldEZyb21NYXRyaXhDb2x1bW4odCwxKS5sZW5ndGgoKSxyPTEvRXR0LnNldEZyb21NYXRyaXhDb2x1bW4odCwyKS5sZW5ndGgoKTtyZXR1cm4gblswXT1lWzBdKmEsblsxXT1lWzFdKmEsblsyXT1lWzJdKmEsblszXT0wLG5bNF09ZVs0XSpvLG5bNV09ZVs1XSpvLG5bNl09ZVs2XSpvLG5bN109MCxuWzhdPWVbOF0qcixuWzldPWVbOV0qcixuWzEwXT1lWzEwXSpyLG5bMTFdPTAsblsxMl09MCxuWzEzXT0wLG5bMTRdPTAsblsxNV09MSx0aGlzfW1ha2VSb3RhdGlvbkZyb21FdWxlcih0KXt0JiZ0LmlzRXVsZXJ8fGNvbnNvbGUuZXJyb3IoIlRIUkVFLk1hdHJpeDQ6IC5tYWtlUm90YXRpb25Gcm9tRXVsZXIoKSBub3cgZXhwZWN0cyBhIEV1bGVyIHJvdGF0aW9uIHJhdGhlciB0aGFuIGEgVmVjdG9yMyBhbmQgb3JkZXIuIik7Y29uc3Qgbj10aGlzLmVsZW1lbnRzLGU9dC54LGE9dC55LG89dC56LHI9TWF0aC5jb3MoZSksaT1NYXRoLnNpbihlKSxjPU1hdGguY29zKGEpLHM9TWF0aC5zaW4oYSksbD1NYXRoLmNvcyhvKSxtPU1hdGguc2luKG8pO2lmKCJYWVoiPT09dC5vcmRlcil7Y29uc3QgdD1yKmwsZT1yKm0sYT1pKmwsbz1pKm07blswXT1jKmwsbls0XT0tYyptLG5bOF09cyxuWzFdPWUrYSpzLG5bNV09dC1vKnMsbls5XT0taSpjLG5bMl09by10KnMsbls2XT1hK2UqcyxuWzEwXT1yKmN9ZWxzZSBpZigiWVhaIj09PXQub3JkZXIpe2NvbnN0IHQ9YypsLGU9YyptLGE9cypsLG89cyptO25bMF09dCtvKmksbls0XT1hKmktZSxuWzhdPXIqcyxuWzFdPXIqbSxuWzVdPXIqbCxuWzldPS1pLG5bMl09ZSppLWEsbls2XT1vK3QqaSxuWzEwXT1yKmN9ZWxzZSBpZigiWlhZIj09PXQub3JkZXIpe2NvbnN0IHQ9YypsLGU9YyptLGE9cypsLG89cyptO25bMF09dC1vKmksbls0XT0tciptLG5bOF09YStlKmksblsxXT1lK2EqaSxuWzVdPXIqbCxuWzldPW8tdCppLG5bMl09LXIqcyxuWzZdPWksblsxMF09cipjfWVsc2UgaWYoIlpZWCI9PT10Lm9yZGVyKXtjb25zdCB0PXIqbCxlPXIqbSxhPWkqbCxvPWkqbTtuWzBdPWMqbCxuWzRdPWEqcy1lLG5bOF09dCpzK28sblsxXT1jKm0sbls1XT1vKnMrdCxuWzldPWUqcy1hLG5bMl09LXMsbls2XT1pKmMsblsxMF09cipjfWVsc2UgaWYoIllaWCI9PT10Lm9yZGVyKXtjb25zdCB0PXIqYyxlPXIqcyxhPWkqYyxvPWkqcztuWzBdPWMqbCxuWzRdPW8tdCptLG5bOF09YSptK2UsblsxXT1tLG5bNV09cipsLG5bOV09LWkqbCxuWzJdPS1zKmwsbls2XT1lKm0rYSxuWzEwXT10LW8qbX1lbHNlIGlmKCJYWlkiPT09dC5vcmRlcil7Y29uc3QgdD1yKmMsZT1yKnMsYT1pKmMsbz1pKnM7blswXT1jKmwsbls0XT0tbSxuWzhdPXMqbCxuWzFdPXQqbStvLG5bNV09cipsLG5bOV09ZSptLWEsblsyXT1hKm0tZSxuWzZdPWkqbCxuWzEwXT1vKm0rdH1yZXR1cm4gblszXT0wLG5bN109MCxuWzExXT0wLG5bMTJdPTAsblsxM109MCxuWzE0XT0wLG5bMTVdPTEsdGhpc31tYWtlUm90YXRpb25Gcm9tUXVhdGVybmlvbih0KXtyZXR1cm4gdGhpcy5jb21wb3NlKHp0dCx0LFJ0dCl9bG9va0F0KHQsbixlKXtjb25zdCBhPXRoaXMuZWxlbWVudHM7cmV0dXJuIEl0dC5zdWJWZWN0b3JzKHQsbiksMD09PUl0dC5sZW5ndGhTcSgpJiYoSXR0Lno9MSksSXR0Lm5vcm1hbGl6ZSgpLFR0dC5jcm9zc1ZlY3RvcnMoZSxJdHQpLDA9PT1UdHQubGVuZ3RoU3EoKSYmKDE9PT1NYXRoLmFicyhlLnopP0l0dC54Kz0xZS00Okl0dC56Kz0xZS00LEl0dC5ub3JtYWxpemUoKSxUdHQuY3Jvc3NWZWN0b3JzKGUsSXR0KSksVHR0Lm5vcm1hbGl6ZSgpLER0dC5jcm9zc1ZlY3RvcnMoSXR0LFR0dCksYVswXT1UdHQueCxhWzRdPUR0dC54LGFbOF09SXR0LngsYVsxXT1UdHQueSxhWzVdPUR0dC55LGFbOV09SXR0LnksYVsyXT1UdHQueixhWzZdPUR0dC56LGFbMTBdPUl0dC56LHRoaXN9bXVsdGlwbHkodCxuKXtyZXR1cm4gdm9pZCAwIT09bj8oY29uc29sZS53YXJuKCJUSFJFRS5NYXRyaXg0OiAubXVsdGlwbHkoKSBub3cgb25seSBhY2NlcHRzIG9uZSBhcmd1bWVudC4gVXNlIC5tdWx0aXBseU1hdHJpY2VzKCBhLCBiICkgaW5zdGVhZC4iKSx0aGlzLm11bHRpcGx5TWF0cmljZXModCxuKSk6dGhpcy5tdWx0aXBseU1hdHJpY2VzKHRoaXMsdCl9cHJlbXVsdGlwbHkodCl7cmV0dXJuIHRoaXMubXVsdGlwbHlNYXRyaWNlcyh0LHRoaXMpfW11bHRpcGx5TWF0cmljZXModCxuKXtjb25zdCBlPXQuZWxlbWVudHMsYT1uLmVsZW1lbnRzLG89dGhpcy5lbGVtZW50cyxyPWVbMF0saT1lWzRdLGM9ZVs4XSxzPWVbMTJdLGw9ZVsxXSxtPWVbNV0sZD1lWzldLGc9ZVsxM10scD1lWzJdLGI9ZVs2XSx1PWVbMTBdLGY9ZVsxNF0saD1lWzNdLF89ZVs3XSxDPWVbMTFdLE09ZVsxNV0sTz1hWzBdLFA9YVs0XSx4PWFbOF0seT1hWzEyXSxrPWFbMV0sdj1hWzVdLHc9YVs5XSxTPWFbMTNdLEU9YVsyXSxBPWFbNl0sej1hWzEwXSxSPWFbMTRdLFQ9YVszXSxEPWFbN10sST1hWzExXSxOPWFbMTVdO3JldHVybiBvWzBdPXIqTytpKmsrYypFK3MqVCxvWzRdPXIqUCtpKnYrYypBK3MqRCxvWzhdPXIqeCtpKncrYyp6K3MqSSxvWzEyXT1yKnkraSpTK2MqUitzKk4sb1sxXT1sKk8rbSprK2QqRStnKlQsb1s1XT1sKlArbSp2K2QqQStnKkQsb1s5XT1sKngrbSp3K2QqeitnKkksb1sxM109bCp5K20qUytkKlIrZypOLG9bMl09cCpPK2Iqayt1KkUrZipULG9bNl09cCpQK2Iqdit1KkErZipELG9bMTBdPXAqeCtiKncrdSp6K2YqSSxvWzE0XT1wKnkrYipTK3UqUitmKk4sb1szXT1oKk8rXyprK0MqRStNKlQsb1s3XT1oKlArXyp2K0MqQStNKkQsb1sxMV09aCp4K18qdytDKnorTSpJLG9bMTVdPWgqeStfKlMrQypSK00qTix0aGlzfW11bHRpcGx5U2NhbGFyKHQpe2NvbnN0IG49dGhpcy5lbGVtZW50cztyZXR1cm4gblswXSo9dCxuWzRdKj10LG5bOF0qPXQsblsxMl0qPXQsblsxXSo9dCxuWzVdKj10LG5bOV0qPXQsblsxM10qPXQsblsyXSo9dCxuWzZdKj10LG5bMTBdKj10LG5bMTRdKj10LG5bM10qPXQsbls3XSo9dCxuWzExXSo9dCxuWzE1XSo9dCx0aGlzfWRldGVybWluYW50KCl7Y29uc3QgdD10aGlzLmVsZW1lbnRzLG49dFswXSxlPXRbNF0sYT10WzhdLG89dFsxMl0scj10WzFdLGk9dFs1XSxjPXRbOV0scz10WzEzXSxsPXRbMl0sbT10WzZdLGQ9dFsxMF0sZz10WzE0XTtyZXR1cm4gdFszXSooK28qYyptLWEqcyptLW8qaSpkK2UqcypkK2EqaSpnLWUqYypnKSt0WzddKigrbipjKmctbipzKmQrbypyKmQtYSpyKmcrYSpzKmwtbypjKmwpK3RbMTFdKigrbipzKm0tbippKmctbypyKm0rZSpyKmcrbyppKmwtZSpzKmwpK3RbMTVdKigtYSppKmwtbipjKm0rbippKmQrYSpyKm0tZSpyKmQrZSpjKmwpfXRyYW5zcG9zZSgpe2NvbnN0IHQ9dGhpcy5lbGVtZW50cztsZXQgbjtyZXR1cm4gbj10WzFdLHRbMV09dFs0XSx0WzRdPW4sbj10WzJdLHRbMl09dFs4XSx0WzhdPW4sbj10WzZdLHRbNl09dFs5XSx0WzldPW4sbj10WzNdLHRbM109dFsxMl0sdFsxMl09bixuPXRbN10sdFs3XT10WzEzXSx0WzEzXT1uLG49dFsxMV0sdFsxMV09dFsxNF0sdFsxNF09bix0aGlzfXNldFBvc2l0aW9uKHQsbixlKXtjb25zdCBhPXRoaXMuZWxlbWVudHM7cmV0dXJuIHQuaXNWZWN0b3IzPyhhWzEyXT10LngsYVsxM109dC55LGFbMTRdPXQueik6KGFbMTJdPXQsYVsxM109bixhWzE0XT1lKSx0aGlzfWludmVydCgpe2NvbnN0IHQ9dGhpcy5lbGVtZW50cyxuPXRbMF0sZT10WzFdLGE9dFsyXSxvPXRbM10scj10WzRdLGk9dFs1XSxjPXRbNl0scz10WzddLGw9dFs4XSxtPXRbOV0sZD10WzEwXSxnPXRbMTFdLHA9dFsxMl0sYj10WzEzXSx1PXRbMTRdLGY9dFsxNV0saD1tKnUqcy1iKmQqcytiKmMqZy1pKnUqZy1tKmMqZitpKmQqZixfPXAqZCpzLWwqdSpzLXAqYypnK3IqdSpnK2wqYypmLXIqZCpmLEM9bCpiKnMtcCptKnMrcCppKmctcipiKmctbCppKmYrciptKmYsTT1wKm0qYy1sKmIqYy1wKmkqZCtyKmIqZCtsKmkqdS1yKm0qdSxPPW4qaCtlKl8rYSpDK28qTTtpZigwPT09TylyZXR1cm4gdGhpcy5zZXQoMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCk7Y29uc3QgUD0xL087cmV0dXJuIHRbMF09aCpQLHRbMV09KGIqZCpvLW0qdSpvLWIqYSpnK2UqdSpnK20qYSpmLWUqZCpmKSpQLHRbMl09KGkqdSpvLWIqYypvK2IqYSpzLWUqdSpzLWkqYSpmK2UqYypmKSpQLHRbM109KG0qYypvLWkqZCpvLW0qYSpzK2UqZCpzK2kqYSpnLWUqYypnKSpQLHRbNF09XypQLHRbNV09KGwqdSpvLXAqZCpvK3AqYSpnLW4qdSpnLWwqYSpmK24qZCpmKSpQLHRbNl09KHAqYypvLXIqdSpvLXAqYSpzK24qdSpzK3IqYSpmLW4qYypmKSpQLHRbN109KHIqZCpvLWwqYypvK2wqYSpzLW4qZCpzLXIqYSpnK24qYypnKSpQLHRbOF09QypQLHRbOV09KHAqbSpvLWwqYipvLXAqZSpnK24qYipnK2wqZSpmLW4qbSpmKSpQLHRbMTBdPShyKmIqby1wKmkqbytwKmUqcy1uKmIqcy1yKmUqZituKmkqZikqUCx0WzExXT0obCppKm8tciptKm8tbCplKnMrbiptKnMrciplKmctbippKmcpKlAsdFsxMl09TSpQLHRbMTNdPShsKmIqYS1wKm0qYStwKmUqZC1uKmIqZC1sKmUqdStuKm0qdSkqUCx0WzE0XT0ocCppKmEtcipiKmEtcCplKmMrbipiKmMrciplKnUtbippKnUpKlAsdFsxNV09KHIqbSphLWwqaSphK2wqZSpjLW4qbSpjLXIqZSpkK24qaSpkKSpQLHRoaXN9c2NhbGUodCl7Y29uc3Qgbj10aGlzLmVsZW1lbnRzLGU9dC54LGE9dC55LG89dC56O3JldHVybiBuWzBdKj1lLG5bNF0qPWEsbls4XSo9byxuWzFdKj1lLG5bNV0qPWEsbls5XSo9byxuWzJdKj1lLG5bNl0qPWEsblsxMF0qPW8sblszXSo9ZSxuWzddKj1hLG5bMTFdKj1vLHRoaXN9Z2V0TWF4U2NhbGVPbkF4aXMoKXtjb25zdCB0PXRoaXMuZWxlbWVudHM7cmV0dXJuIE1hdGguc3FydChNYXRoLm1heCh0WzBdKnRbMF0rdFsxXSp0WzFdK3RbMl0qdFsyXSx0WzRdKnRbNF0rdFs1XSp0WzVdK3RbNl0qdFs2XSx0WzhdKnRbOF0rdFs5XSp0WzldK3RbMTBdKnRbMTBdKSl9bWFrZVRyYW5zbGF0aW9uKHQsbixlKXtyZXR1cm4gdGhpcy5zZXQoMSwwLDAsdCwwLDEsMCxuLDAsMCwxLGUsMCwwLDAsMSksdGhpc31tYWtlUm90YXRpb25YKHQpe2NvbnN0IG49TWF0aC5jb3ModCksZT1NYXRoLnNpbih0KTtyZXR1cm4gdGhpcy5zZXQoMSwwLDAsMCwwLG4sLWUsMCwwLGUsbiwwLDAsMCwwLDEpLHRoaXN9bWFrZVJvdGF0aW9uWSh0KXtjb25zdCBuPU1hdGguY29zKHQpLGU9TWF0aC5zaW4odCk7cmV0dXJuIHRoaXMuc2V0KG4sMCxlLDAsMCwxLDAsMCwtZSwwLG4sMCwwLDAsMCwxKSx0aGlzfW1ha2VSb3RhdGlvbloodCl7Y29uc3Qgbj1NYXRoLmNvcyh0KSxlPU1hdGguc2luKHQpO3JldHVybiB0aGlzLnNldChuLC1lLDAsMCxlLG4sMCwwLDAsMCwxLDAsMCwwLDAsMSksdGhpc31tYWtlUm90YXRpb25BeGlzKHQsbil7Y29uc3QgZT1NYXRoLmNvcyhuKSxhPU1hdGguc2luKG4pLG89MS1lLHI9dC54LGk9dC55LGM9dC56LHM9bypyLGw9byppO3JldHVybiB0aGlzLnNldChzKnIrZSxzKmktYSpjLHMqYythKmksMCxzKmkrYSpjLGwqaStlLGwqYy1hKnIsMCxzKmMtYSppLGwqYythKnIsbypjKmMrZSwwLDAsMCwwLDEpLHRoaXN9bWFrZVNjYWxlKHQsbixlKXtyZXR1cm4gdGhpcy5zZXQodCwwLDAsMCwwLG4sMCwwLDAsMCxlLDAsMCwwLDAsMSksdGhpc31tYWtlU2hlYXIodCxuLGUpe3JldHVybiB0aGlzLnNldCgxLG4sZSwwLHQsMSxlLDAsdCxuLDEsMCwwLDAsMCwxKSx0aGlzfWNvbXBvc2UodCxuLGUpe2NvbnN0IGE9dGhpcy5lbGVtZW50cyxvPW4uX3gscj1uLl95LGk9bi5feixjPW4uX3cscz1vK28sbD1yK3IsbT1pK2ksZD1vKnMsZz1vKmwscD1vKm0sYj1yKmwsdT1yKm0sZj1pKm0saD1jKnMsXz1jKmwsQz1jKm0sTT1lLngsTz1lLnksUD1lLno7cmV0dXJuIGFbMF09KDEtKGIrZikpKk0sYVsxXT0oZytDKSpNLGFbMl09KHAtXykqTSxhWzNdPTAsYVs0XT0oZy1DKSpPLGFbNV09KDEtKGQrZikpKk8sYVs2XT0odStoKSpPLGFbN109MCxhWzhdPShwK18pKlAsYVs5XT0odS1oKSpQLGFbMTBdPSgxLShkK2IpKSpQLGFbMTFdPTAsYVsxMl09dC54LGFbMTNdPXQueSxhWzE0XT10LnosYVsxNV09MSx0aGlzfWRlY29tcG9zZSh0LG4sZSl7Y29uc3QgYT10aGlzLmVsZW1lbnRzO2xldCBvPUV0dC5zZXQoYVswXSxhWzFdLGFbMl0pLmxlbmd0aCgpO2NvbnN0IHI9RXR0LnNldChhWzRdLGFbNV0sYVs2XSkubGVuZ3RoKCksaT1FdHQuc2V0KGFbOF0sYVs5XSxhWzEwXSkubGVuZ3RoKCk7dGhpcy5kZXRlcm1pbmFudCgpPDAmJihvPS1vKSx0Lng9YVsxMl0sdC55PWFbMTNdLHQuej1hWzE0XSxBdHQuY29weSh0aGlzKTtjb25zdCBjPTEvbyxzPTEvcixsPTEvaTtyZXR1cm4gQXR0LmVsZW1lbnRzWzBdKj1jLEF0dC5lbGVtZW50c1sxXSo9YyxBdHQuZWxlbWVudHNbMl0qPWMsQXR0LmVsZW1lbnRzWzRdKj1zLEF0dC5lbGVtZW50c1s1XSo9cyxBdHQuZWxlbWVudHNbNl0qPXMsQXR0LmVsZW1lbnRzWzhdKj1sLEF0dC5lbGVtZW50c1s5XSo9bCxBdHQuZWxlbWVudHNbMTBdKj1sLG4uc2V0RnJvbVJvdGF0aW9uTWF0cml4KEF0dCksZS54PW8sZS55PXIsZS56PWksdGhpc31tYWtlUGVyc3BlY3RpdmUodCxuLGUsYSxvLHIpe3ZvaWQgMD09PXImJmNvbnNvbGUud2FybigiVEhSRUUuTWF0cml4NDogLm1ha2VQZXJzcGVjdGl2ZSgpIGhhcyBiZWVuIHJlZGVmaW5lZCBhbmQgaGFzIGEgbmV3IHNpZ25hdHVyZS4gUGxlYXNlIGNoZWNrIHRoZSBkb2NzLiIpO2NvbnN0IGk9dGhpcy5lbGVtZW50cyxjPTIqby8oZS1hKSxzPShuK3QpLyhuLXQpLGw9KGUrYSkvKGUtYSksbT0tKHIrbykvKHItbyksZD0tMipyKm8vKHItbyk7cmV0dXJuIGlbMF09MipvLyhuLXQpLGlbNF09MCxpWzhdPXMsaVsxMl09MCxpWzFdPTAsaVs1XT1jLGlbOV09bCxpWzEzXT0wLGlbMl09MCxpWzZdPTAsaVsxMF09bSxpWzE0XT1kLGlbM109MCxpWzddPTAsaVsxMV09LTEsaVsxNV09MCx0aGlzfW1ha2VPcnRob2dyYXBoaWModCxuLGUsYSxvLHIpe2NvbnN0IGk9dGhpcy5lbGVtZW50cyxjPTEvKG4tdCkscz0xLyhlLWEpLGw9MS8oci1vKSxtPShuK3QpKmMsZD0oZSthKSpzLGc9KHIrbykqbDtyZXR1cm4gaVswXT0yKmMsaVs0XT0wLGlbOF09MCxpWzEyXT0tbSxpWzFdPTAsaVs1XT0yKnMsaVs5XT0wLGlbMTNdPS1kLGlbMl09MCxpWzZdPTAsaVsxMF09LTIqbCxpWzE0XT0tZyxpWzNdPTAsaVs3XT0wLGlbMTFdPTAsaVsxNV09MSx0aGlzfWVxdWFscyh0KXtjb25zdCBuPXRoaXMuZWxlbWVudHMsZT10LmVsZW1lbnRzO2ZvcihsZXQgdD0wO3Q8MTY7dCsrKWlmKG5bdF0hPT1lW3RdKXJldHVybiExO3JldHVybiEwfWZyb21BcnJheSh0LG49MCl7Zm9yKGxldCBlPTA7ZTwxNjtlKyspdGhpcy5lbGVtZW50c1tlXT10W2Urbl07cmV0dXJuIHRoaXN9dG9BcnJheSh0PVtdLG49MCl7Y29uc3QgZT10aGlzLmVsZW1lbnRzO3JldHVybiB0W25dPWVbMF0sdFtuKzFdPWVbMV0sdFtuKzJdPWVbMl0sdFtuKzNdPWVbM10sdFtuKzRdPWVbNF0sdFtuKzVdPWVbNV0sdFtuKzZdPWVbNl0sdFtuKzddPWVbN10sdFtuKzhdPWVbOF0sdFtuKzldPWVbOV0sdFtuKzEwXT1lWzEwXSx0W24rMTFdPWVbMTFdLHRbbisxMl09ZVsxMl0sdFtuKzEzXT1lWzEzXSx0W24rMTRdPWVbMTRdLHRbbisxNV09ZVsxNV0sdH19Y29uc3QgRXR0PW5ldyB0dHQsQXR0PW5ldyBTdHQsenR0PW5ldyB0dHQoMCwwLDApLFJ0dD1uZXcgdHR0KDEsMSwxKSxUdHQ9bmV3IHR0dCxEdHQ9bmV3IHR0dCxJdHQ9bmV3IHR0dDtjbGFzcyBOdHR7Y29uc3RydWN0b3IodD0wLG49MCxlPTAsYT1OdHQuRGVmYXVsdE9yZGVyKXtPYmplY3QuZGVmaW5lUHJvcGVydHkodGhpcywiaXNFdWxlciIse3ZhbHVlOiEwfSksdGhpcy5feD10LHRoaXMuX3k9bix0aGlzLl96PWUsdGhpcy5fb3JkZXI9YX1nZXQgeCgpe3JldHVybiB0aGlzLl94fXNldCB4KHQpe3RoaXMuX3g9dCx0aGlzLl9vbkNoYW5nZUNhbGxiYWNrKCl9Z2V0IHkoKXtyZXR1cm4gdGhpcy5feX1zZXQgeSh0KXt0aGlzLl95PXQsdGhpcy5fb25DaGFuZ2VDYWxsYmFjaygpfWdldCB6KCl7cmV0dXJuIHRoaXMuX3p9c2V0IHoodCl7dGhpcy5fej10LHRoaXMuX29uQ2hhbmdlQ2FsbGJhY2soKX1nZXQgb3JkZXIoKXtyZXR1cm4gdGhpcy5fb3JkZXJ9c2V0IG9yZGVyKHQpe3RoaXMuX29yZGVyPXQsdGhpcy5fb25DaGFuZ2VDYWxsYmFjaygpfXNldCh0LG4sZSxhKXtyZXR1cm4gdGhpcy5feD10LHRoaXMuX3k9bix0aGlzLl96PWUsdGhpcy5fb3JkZXI9YXx8dGhpcy5fb3JkZXIsdGhpcy5fb25DaGFuZ2VDYWxsYmFjaygpLHRoaXN9Y2xvbmUoKXtyZXR1cm4gbmV3IHRoaXMuY29uc3RydWN0b3IodGhpcy5feCx0aGlzLl95LHRoaXMuX3osdGhpcy5fb3JkZXIpfWNvcHkodCl7cmV0dXJuIHRoaXMuX3g9dC5feCx0aGlzLl95PXQuX3ksdGhpcy5fej10Ll96LHRoaXMuX29yZGVyPXQuX29yZGVyLHRoaXMuX29uQ2hhbmdlQ2FsbGJhY2soKSx0aGlzfXNldEZyb21Sb3RhdGlvbk1hdHJpeCh0LG4sZSl7Y29uc3QgYT1VOS5jbGFtcCxvPXQuZWxlbWVudHMscj1vWzBdLGk9b1s0XSxjPW9bOF0scz1vWzFdLGw9b1s1XSxtPW9bOV0sZD1vWzJdLGc9b1s2XSxwPW9bMTBdO3N3aXRjaChuPW58fHRoaXMuX29yZGVyKXtjYXNlIlhZWiI6dGhpcy5feT1NYXRoLmFzaW4oYShjLC0xLDEpKSxNYXRoLmFicyhjKTwuOTk5OTk5OT8odGhpcy5feD1NYXRoLmF0YW4yKC1tLHApLHRoaXMuX3o9TWF0aC5hdGFuMigtaSxyKSk6KHRoaXMuX3g9TWF0aC5hdGFuMihnLGwpLHRoaXMuX3o9MCk7YnJlYWs7Y2FzZSJZWFoiOnRoaXMuX3g9TWF0aC5hc2luKC1hKG0sLTEsMSkpLE1hdGguYWJzKG0pPC45OTk5OTk5Pyh0aGlzLl95PU1hdGguYXRhbjIoYyxwKSx0aGlzLl96PU1hdGguYXRhbjIocyxsKSk6KHRoaXMuX3k9TWF0aC5hdGFuMigtZCxyKSx0aGlzLl96PTApO2JyZWFrO2Nhc2UiWlhZIjp0aGlzLl94PU1hdGguYXNpbihhKGcsLTEsMSkpLE1hdGguYWJzKGcpPC45OTk5OTk5Pyh0aGlzLl95PU1hdGguYXRhbjIoLWQscCksdGhpcy5fej1NYXRoLmF0YW4yKC1pLGwpKToodGhpcy5feT0wLHRoaXMuX3o9TWF0aC5hdGFuMihzLHIpKTticmVhaztjYXNlIlpZWCI6dGhpcy5feT1NYXRoLmFzaW4oLWEoZCwtMSwxKSksTWF0aC5hYnMoZCk8Ljk5OTk5OTk/KHRoaXMuX3g9TWF0aC5hdGFuMihnLHApLHRoaXMuX3o9TWF0aC5hdGFuMihzLHIpKToodGhpcy5feD0wLHRoaXMuX3o9TWF0aC5hdGFuMigtaSxsKSk7YnJlYWs7Y2FzZSJZWlgiOnRoaXMuX3o9TWF0aC5hc2luKGEocywtMSwxKSksTWF0aC5hYnMocyk8Ljk5OTk5OTk/KHRoaXMuX3g9TWF0aC5hdGFuMigtbSxsKSx0aGlzLl95PU1hdGguYXRhbjIoLWQscikpOih0aGlzLl94PTAsdGhpcy5feT1NYXRoLmF0YW4yKGMscCkpO2JyZWFrO2Nhc2UiWFpZIjp0aGlzLl96PU1hdGguYXNpbigtYShpLC0xLDEpKSxNYXRoLmFicyhpKTwuOTk5OTk5OT8odGhpcy5feD1NYXRoLmF0YW4yKGcsbCksdGhpcy5feT1NYXRoLmF0YW4yKGMscikpOih0aGlzLl94PU1hdGguYXRhbjIoLW0scCksdGhpcy5feT0wKTticmVhaztkZWZhdWx0OmNvbnNvbGUud2FybigiVEhSRUUuRXVsZXI6IC5zZXRGcm9tUm90YXRpb25NYXRyaXgoKSBlbmNvdW50ZXJlZCBhbiB1bmtub3duIG9yZGVyOiAiK24pfXJldHVybiB0aGlzLl9vcmRlcj1uLCExIT09ZSYmdGhpcy5fb25DaGFuZ2VDYWxsYmFjaygpLHRoaXN9c2V0RnJvbVF1YXRlcm5pb24odCxuLGUpe3JldHVybiBGdHQubWFrZVJvdGF0aW9uRnJvbVF1YXRlcm5pb24odCksdGhpcy5zZXRGcm9tUm90YXRpb25NYXRyaXgoRnR0LG4sZSl9c2V0RnJvbVZlY3RvcjModCxuKXtyZXR1cm4gdGhpcy5zZXQodC54LHQueSx0Lnosbnx8dGhpcy5fb3JkZXIpfXJlb3JkZXIodCl7cmV0dXJuIEx0dC5zZXRGcm9tRXVsZXIodGhpcyksdGhpcy5zZXRGcm9tUXVhdGVybmlvbihMdHQsdCl9ZXF1YWxzKHQpe3JldHVybiB0Ll94PT09dGhpcy5feCYmdC5feT09PXRoaXMuX3kmJnQuX3o9PT10aGlzLl96JiZ0Ll9vcmRlcj09PXRoaXMuX29yZGVyfWZyb21BcnJheSh0KXtyZXR1cm4gdGhpcy5feD10WzBdLHRoaXMuX3k9dFsxXSx0aGlzLl96PXRbMl0sdm9pZCAwIT09dFszXSYmKHRoaXMuX29yZGVyPXRbM10pLHRoaXMuX29uQ2hhbmdlQ2FsbGJhY2soKSx0aGlzfXRvQXJyYXkodD1bXSxuPTApe3JldHVybiB0W25dPXRoaXMuX3gsdFtuKzFdPXRoaXMuX3ksdFtuKzJdPXRoaXMuX3osdFtuKzNdPXRoaXMuX29yZGVyLHR9dG9WZWN0b3IzKHQpe3JldHVybiB0P3Quc2V0KHRoaXMuX3gsdGhpcy5feSx0aGlzLl96KTpuZXcgdHR0KHRoaXMuX3gsdGhpcy5feSx0aGlzLl96KX1fb25DaGFuZ2UodCl7cmV0dXJuIHRoaXMuX29uQ2hhbmdlQ2FsbGJhY2s9dCx0aGlzfV9vbkNoYW5nZUNhbGxiYWNrKCl7fX1OdHQuRGVmYXVsdE9yZGVyPSJYWVoiLE50dC5Sb3RhdGlvbk9yZGVycz1bIlhZWiIsIllaWCIsIlpYWSIsIlhaWSIsIllYWiIsIlpZWCJdO2NvbnN0IEZ0dD1uZXcgU3R0LEx0dD1uZXcgJDk7Y2xhc3MgSHR0e2NvbnN0cnVjdG9yKCl7dGhpcy5tYXNrPTF9c2V0KHQpe3RoaXMubWFzaz0xPDx0fDB9ZW5hYmxlKHQpe3RoaXMubWFza3w9MTw8dHwwfWVuYWJsZUFsbCgpe3RoaXMubWFzaz0tMX10b2dnbGUodCl7dGhpcy5tYXNrXj0xPDx0fDB9ZGlzYWJsZSh0KXt0aGlzLm1hc2smPX4oMTw8dHwwKX1kaXNhYmxlQWxsKCl7dGhpcy5tYXNrPTB9dGVzdCh0KXtyZXR1cm4gMCE9KHRoaXMubWFzayZ0Lm1hc2spfX1sZXQgQnR0PTA7Y29uc3QgVnR0PW5ldyB0dHQsanR0PW5ldyAkOSxVdHQ9bmV3IFN0dCxXdHQ9bmV3IHR0dCxHdHQ9bmV3IHR0dCxZdHQ9bmV3IHR0dCxxdHQ9bmV3ICQ5LFp0dD1uZXcgdHR0KDEsMCwwKSxYdHQ9bmV3IHR0dCgwLDEsMCksSnR0PW5ldyB0dHQoMCwwLDEpLFF0dD17dHlwZToiYWRkZWQifSxLdHQ9e3R5cGU6InJlbW92ZWQifTtmdW5jdGlvbiAkdHQoKXtPYmplY3QuZGVmaW5lUHJvcGVydHkodGhpcywiaWQiLHt2YWx1ZTpCdHQrK30pLHRoaXMudXVpZD1VOS5nZW5lcmF0ZVVVSUQoKSx0aGlzLm5hbWU9IiIsdGhpcy50eXBlPSJPYmplY3QzRCIsdGhpcy5wYXJlbnQ9bnVsbCx0aGlzLmNoaWxkcmVuPVtdLHRoaXMudXA9JHR0LkRlZmF1bHRVcC5jbG9uZSgpO2NvbnN0IHQ9bmV3IHR0dCxuPW5ldyBOdHQsZT1uZXcgJDksYT1uZXcgdHR0KDEsMSwxKTtuLl9vbkNoYW5nZSgoZnVuY3Rpb24gbygpe2Uuc2V0RnJvbUV1bGVyKG4sITEpfSkpLGUuX29uQ2hhbmdlKChmdW5jdGlvbiByKCl7bi5zZXRGcm9tUXVhdGVybmlvbihlLHZvaWQgMCwhMSl9KSksT2JqZWN0LmRlZmluZVByb3BlcnRpZXModGhpcyx7cG9zaXRpb246e2NvbmZpZ3VyYWJsZTohMCxlbnVtZXJhYmxlOiEwLHZhbHVlOnR9LHJvdGF0aW9uOntjb25maWd1cmFibGU6ITAsZW51bWVyYWJsZTohMCx2YWx1ZTpufSxxdWF0ZXJuaW9uOntjb25maWd1cmFibGU6ITAsZW51bWVyYWJsZTohMCx2YWx1ZTplfSxzY2FsZTp7Y29uZmlndXJhYmxlOiEwLGVudW1lcmFibGU6ITAsdmFsdWU6YX0sbW9kZWxWaWV3TWF0cml4Ont2YWx1ZTpuZXcgU3R0fSxub3JtYWxNYXRyaXg6e3ZhbHVlOm5ldyBHOX19KSx0aGlzLm1hdHJpeD1uZXcgU3R0LHRoaXMubWF0cml4V29ybGQ9bmV3IFN0dCx0aGlzLm1hdHJpeEF1dG9VcGRhdGU9JHR0LkRlZmF1bHRNYXRyaXhBdXRvVXBkYXRlLHRoaXMubWF0cml4V29ybGROZWVkc1VwZGF0ZT0hMSx0aGlzLmxheWVycz1uZXcgSHR0LHRoaXMudmlzaWJsZT0hMCx0aGlzLmNhc3RTaGFkb3c9ITEsdGhpcy5yZWNlaXZlU2hhZG93PSExLHRoaXMuZnJ1c3R1bUN1bGxlZD0hMCx0aGlzLnJlbmRlck9yZGVyPTAsdGhpcy5hbmltYXRpb25zPVtdLHRoaXMudXNlckRhdGE9e319JHR0LkRlZmF1bHRVcD1uZXcgdHR0KDAsMSwwKSwkdHQuRGVmYXVsdE1hdHJpeEF1dG9VcGRhdGU9ITAsJHR0LnByb3RvdHlwZT1PYmplY3QuYXNzaWduKE9iamVjdC5jcmVhdGUoQjkucHJvdG90eXBlKSx7Y29uc3RydWN0b3I6JHR0LGlzT2JqZWN0M0Q6ITAsb25CZWZvcmVSZW5kZXI6ZnVuY3Rpb24oKXt9LG9uQWZ0ZXJSZW5kZXI6ZnVuY3Rpb24oKXt9LGFwcGx5TWF0cml4NDpmdW5jdGlvbih0KXt0aGlzLm1hdHJpeEF1dG9VcGRhdGUmJnRoaXMudXBkYXRlTWF0cml4KCksdGhpcy5tYXRyaXgucHJlbXVsdGlwbHkodCksdGhpcy5tYXRyaXguZGVjb21wb3NlKHRoaXMucG9zaXRpb24sdGhpcy5xdWF0ZXJuaW9uLHRoaXMuc2NhbGUpfSxhcHBseVF1YXRlcm5pb246ZnVuY3Rpb24odCl7cmV0dXJuIHRoaXMucXVhdGVybmlvbi5wcmVtdWx0aXBseSh0KSx0aGlzfSxzZXRSb3RhdGlvbkZyb21BeGlzQW5nbGU6ZnVuY3Rpb24odCxuKXt0aGlzLnF1YXRlcm5pb24uc2V0RnJvbUF4aXNBbmdsZSh0LG4pfSxzZXRSb3RhdGlvbkZyb21FdWxlcjpmdW5jdGlvbih0KXt0aGlzLnF1YXRlcm5pb24uc2V0RnJvbUV1bGVyKHQsITApfSxzZXRSb3RhdGlvbkZyb21NYXRyaXg6ZnVuY3Rpb24odCl7dGhpcy5xdWF0ZXJuaW9uLnNldEZyb21Sb3RhdGlvbk1hdHJpeCh0KX0sc2V0Um90YXRpb25Gcm9tUXVhdGVybmlvbjpmdW5jdGlvbih0KXt0aGlzLnF1YXRlcm5pb24uY29weSh0KX0scm90YXRlT25BeGlzOmZ1bmN0aW9uKHQsbil7cmV0dXJuIGp0dC5zZXRGcm9tQXhpc0FuZ2xlKHQsbiksdGhpcy5xdWF0ZXJuaW9uLm11bHRpcGx5KGp0dCksdGhpc30scm90YXRlT25Xb3JsZEF4aXM6ZnVuY3Rpb24odCxuKXtyZXR1cm4ganR0LnNldEZyb21BeGlzQW5nbGUodCxuKSx0aGlzLnF1YXRlcm5pb24ucHJlbXVsdGlwbHkoanR0KSx0aGlzfSxyb3RhdGVYOmZ1bmN0aW9uKHQpe3JldHVybiB0aGlzLnJvdGF0ZU9uQXhpcyhadHQsdCl9LHJvdGF0ZVk6ZnVuY3Rpb24odCl7cmV0dXJuIHRoaXMucm90YXRlT25BeGlzKFh0dCx0KX0scm90YXRlWjpmdW5jdGlvbih0KXtyZXR1cm4gdGhpcy5yb3RhdGVPbkF4aXMoSnR0LHQpfSx0cmFuc2xhdGVPbkF4aXM6ZnVuY3Rpb24odCxuKXtyZXR1cm4gVnR0LmNvcHkodCkuYXBwbHlRdWF0ZXJuaW9uKHRoaXMucXVhdGVybmlvbiksdGhpcy5wb3NpdGlvbi5hZGQoVnR0Lm11bHRpcGx5U2NhbGFyKG4pKSx0aGlzfSx0cmFuc2xhdGVYOmZ1bmN0aW9uKHQpe3JldHVybiB0aGlzLnRyYW5zbGF0ZU9uQXhpcyhadHQsdCl9LHRyYW5zbGF0ZVk6ZnVuY3Rpb24odCl7cmV0dXJuIHRoaXMudHJhbnNsYXRlT25BeGlzKFh0dCx0KX0sdHJhbnNsYXRlWjpmdW5jdGlvbih0KXtyZXR1cm4gdGhpcy50cmFuc2xhdGVPbkF4aXMoSnR0LHQpfSxsb2NhbFRvV29ybGQ6ZnVuY3Rpb24odCl7cmV0dXJuIHQuYXBwbHlNYXRyaXg0KHRoaXMubWF0cml4V29ybGQpfSx3b3JsZFRvTG9jYWw6ZnVuY3Rpb24odCl7cmV0dXJuIHQuYXBwbHlNYXRyaXg0KFV0dC5jb3B5KHRoaXMubWF0cml4V29ybGQpLmludmVydCgpKX0sbG9va0F0OmZ1bmN0aW9uKHQsbixlKXt0LmlzVmVjdG9yMz9XdHQuY29weSh0KTpXdHQuc2V0KHQsbixlKTtjb25zdCBhPXRoaXMucGFyZW50O3RoaXMudXBkYXRlV29ybGRNYXRyaXgoITAsITEpLEd0dC5zZXRGcm9tTWF0cml4UG9zaXRpb24odGhpcy5tYXRyaXhXb3JsZCksdGhpcy5pc0NhbWVyYXx8dGhpcy5pc0xpZ2h0P1V0dC5sb29rQXQoR3R0LFd0dCx0aGlzLnVwKTpVdHQubG9va0F0KFd0dCxHdHQsdGhpcy51cCksdGhpcy5xdWF0ZXJuaW9uLnNldEZyb21Sb3RhdGlvbk1hdHJpeChVdHQpLGEmJihVdHQuZXh0cmFjdFJvdGF0aW9uKGEubWF0cml4V29ybGQpLGp0dC5zZXRGcm9tUm90YXRpb25NYXRyaXgoVXR0KSx0aGlzLnF1YXRlcm5pb24ucHJlbXVsdGlwbHkoanR0LmludmVydCgpKSl9LGFkZDpmdW5jdGlvbih0KXtpZihhcmd1bWVudHMubGVuZ3RoPjEpe2ZvcihsZXQgdD0wO3Q8YXJndW1lbnRzLmxlbmd0aDt0KyspdGhpcy5hZGQoYXJndW1lbnRzW3RdKTtyZXR1cm4gdGhpc31yZXR1cm4gdD09PXRoaXM/KGNvbnNvbGUuZXJyb3IoIlRIUkVFLk9iamVjdDNELmFkZDogb2JqZWN0IGNhbid0IGJlIGFkZGVkIGFzIGEgY2hpbGQgb2YgaXRzZWxmLiIsdCksdGhpcyk6KHQmJnQuaXNPYmplY3QzRD8obnVsbCE9PXQucGFyZW50JiZ0LnBhcmVudC5yZW1vdmUodCksdC5wYXJlbnQ9dGhpcyx0aGlzLmNoaWxkcmVuLnB1c2godCksdC5kaXNwYXRjaEV2ZW50KFF0dCkpOmNvbnNvbGUuZXJyb3IoIlRIUkVFLk9iamVjdDNELmFkZDogb2JqZWN0IG5vdCBhbiBpbnN0YW5jZSBvZiBUSFJFRS5PYmplY3QzRC4iLHQpLHRoaXMpfSxyZW1vdmU6ZnVuY3Rpb24odCl7aWYoYXJndW1lbnRzLmxlbmd0aD4xKXtmb3IobGV0IHQ9MDt0PGFyZ3VtZW50cy5sZW5ndGg7dCsrKXRoaXMucmVtb3ZlKGFyZ3VtZW50c1t0XSk7cmV0dXJuIHRoaXN9Y29uc3Qgbj10aGlzLmNoaWxkcmVuLmluZGV4T2YodCk7cmV0dXJuLTEhPT1uJiYodC5wYXJlbnQ9bnVsbCx0aGlzLmNoaWxkcmVuLnNwbGljZShuLDEpLHQuZGlzcGF0Y2hFdmVudChLdHQpKSx0aGlzfSxjbGVhcjpmdW5jdGlvbigpe2ZvcihsZXQgdD0wO3Q8dGhpcy5jaGlsZHJlbi5sZW5ndGg7dCsrKXtjb25zdCBuPXRoaXMuY2hpbGRyZW5bdF07bi5wYXJlbnQ9bnVsbCxuLmRpc3BhdGNoRXZlbnQoS3R0KX1yZXR1cm4gdGhpcy5jaGlsZHJlbi5sZW5ndGg9MCx0aGlzfSxhdHRhY2g6ZnVuY3Rpb24odCl7cmV0dXJuIHRoaXMudXBkYXRlV29ybGRNYXRyaXgoITAsITEpLFV0dC5jb3B5KHRoaXMubWF0cml4V29ybGQpLmludmVydCgpLG51bGwhPT10LnBhcmVudCYmKHQucGFyZW50LnVwZGF0ZVdvcmxkTWF0cml4KCEwLCExKSxVdHQubXVsdGlwbHkodC5wYXJlbnQubWF0cml4V29ybGQpKSx0LmFwcGx5TWF0cml4NChVdHQpLHQudXBkYXRlV29ybGRNYXRyaXgoITEsITEpLHRoaXMuYWRkKHQpLHRoaXN9LGdldE9iamVjdEJ5SWQ6ZnVuY3Rpb24odCl7cmV0dXJuIHRoaXMuZ2V0T2JqZWN0QnlQcm9wZXJ0eSgiaWQiLHQpfSxnZXRPYmplY3RCeU5hbWU6ZnVuY3Rpb24odCl7cmV0dXJuIHRoaXMuZ2V0T2JqZWN0QnlQcm9wZXJ0eSgibmFtZSIsdCl9LGdldE9iamVjdEJ5UHJvcGVydHk6ZnVuY3Rpb24odCxuKXtpZih0aGlzW3RdPT09bilyZXR1cm4gdGhpcztmb3IobGV0IGU9MCxhPXRoaXMuY2hpbGRyZW4ubGVuZ3RoO2U8YTtlKyspe2NvbnN0IGE9dGhpcy5jaGlsZHJlbltlXS5nZXRPYmplY3RCeVByb3BlcnR5KHQsbik7aWYodm9pZCAwIT09YSlyZXR1cm4gYX19LGdldFdvcmxkUG9zaXRpb246ZnVuY3Rpb24odCl7cmV0dXJuIHZvaWQgMD09PXQmJihjb25zb2xlLndhcm4oIlRIUkVFLk9iamVjdDNEOiAuZ2V0V29ybGRQb3NpdGlvbigpIHRhcmdldCBpcyBub3cgcmVxdWlyZWQiKSx0PW5ldyB0dHQpLHRoaXMudXBkYXRlV29ybGRNYXRyaXgoITAsITEpLHQuc2V0RnJvbU1hdHJpeFBvc2l0aW9uKHRoaXMubWF0cml4V29ybGQpfSxnZXRXb3JsZFF1YXRlcm5pb246ZnVuY3Rpb24odCl7cmV0dXJuIHZvaWQgMD09PXQmJihjb25zb2xlLndhcm4oIlRIUkVFLk9iamVjdDNEOiAuZ2V0V29ybGRRdWF0ZXJuaW9uKCkgdGFyZ2V0IGlzIG5vdyByZXF1aXJlZCIpLHQ9bmV3ICQ5KSx0aGlzLnVwZGF0ZVdvcmxkTWF0cml4KCEwLCExKSx0aGlzLm1hdHJpeFdvcmxkLmRlY29tcG9zZShHdHQsdCxZdHQpLHR9LGdldFdvcmxkU2NhbGU6ZnVuY3Rpb24odCl7cmV0dXJuIHZvaWQgMD09PXQmJihjb25zb2xlLndhcm4oIlRIUkVFLk9iamVjdDNEOiAuZ2V0V29ybGRTY2FsZSgpIHRhcmdldCBpcyBub3cgcmVxdWlyZWQiKSx0PW5ldyB0dHQpLHRoaXMudXBkYXRlV29ybGRNYXRyaXgoITAsITEpLHRoaXMubWF0cml4V29ybGQuZGVjb21wb3NlKEd0dCxxdHQsdCksdH0sZ2V0V29ybGREaXJlY3Rpb246ZnVuY3Rpb24odCl7dm9pZCAwPT09dCYmKGNvbnNvbGUud2FybigiVEhSRUUuT2JqZWN0M0Q6IC5nZXRXb3JsZERpcmVjdGlvbigpIHRhcmdldCBpcyBub3cgcmVxdWlyZWQiKSx0PW5ldyB0dHQpLHRoaXMudXBkYXRlV29ybGRNYXRyaXgoITAsITEpO2NvbnN0IG49dGhpcy5tYXRyaXhXb3JsZC5lbGVtZW50cztyZXR1cm4gdC5zZXQobls4XSxuWzldLG5bMTBdKS5ub3JtYWxpemUoKX0scmF5Y2FzdDpmdW5jdGlvbigpe30sdHJhdmVyc2U6ZnVuY3Rpb24odCl7dCh0aGlzKTtjb25zdCBuPXRoaXMuY2hpbGRyZW47Zm9yKGxldCBlPTAsYT1uLmxlbmd0aDtlPGE7ZSsrKW5bZV0udHJhdmVyc2UodCl9LHRyYXZlcnNlVmlzaWJsZTpmdW5jdGlvbih0KXtpZighMT09PXRoaXMudmlzaWJsZSlyZXR1cm47dCh0aGlzKTtjb25zdCBuPXRoaXMuY2hpbGRyZW47Zm9yKGxldCBlPTAsYT1uLmxlbmd0aDtlPGE7ZSsrKW5bZV0udHJhdmVyc2VWaXNpYmxlKHQpfSx0cmF2ZXJzZUFuY2VzdG9yczpmdW5jdGlvbih0KXtjb25zdCBuPXRoaXMucGFyZW50O251bGwhPT1uJiYodChuKSxuLnRyYXZlcnNlQW5jZXN0b3JzKHQpKX0sdXBkYXRlTWF0cml4OmZ1bmN0aW9uKCl7dGhpcy5tYXRyaXguY29tcG9zZSh0aGlzLnBvc2l0aW9uLHRoaXMucXVhdGVybmlvbix0aGlzLnNjYWxlKSx0aGlzLm1hdHJpeFdvcmxkTmVlZHNVcGRhdGU9ITB9LHVwZGF0ZU1hdHJpeFdvcmxkOmZ1bmN0aW9uKHQpe3RoaXMubWF0cml4QXV0b1VwZGF0ZSYmdGhpcy51cGRhdGVNYXRyaXgoKSwodGhpcy5tYXRyaXhXb3JsZE5lZWRzVXBkYXRlfHx0KSYmKG51bGw9PT10aGlzLnBhcmVudD90aGlzLm1hdHJpeFdvcmxkLmNvcHkodGhpcy5tYXRyaXgpOnRoaXMubWF0cml4V29ybGQubXVsdGlwbHlNYXRyaWNlcyh0aGlzLnBhcmVudC5tYXRyaXhXb3JsZCx0aGlzLm1hdHJpeCksdGhpcy5tYXRyaXhXb3JsZE5lZWRzVXBkYXRlPSExLHQ9ITApO2NvbnN0IG49dGhpcy5jaGlsZHJlbjtmb3IobGV0IGU9MCxhPW4ubGVuZ3RoO2U8YTtlKyspbltlXS51cGRhdGVNYXRyaXhXb3JsZCh0KX0sdXBkYXRlV29ybGRNYXRyaXg6ZnVuY3Rpb24odCxuKXtjb25zdCBlPXRoaXMucGFyZW50O2lmKCEwPT09dCYmbnVsbCE9PWUmJmUudXBkYXRlV29ybGRNYXRyaXgoITAsITEpLHRoaXMubWF0cml4QXV0b1VwZGF0ZSYmdGhpcy51cGRhdGVNYXRyaXgoKSxudWxsPT09dGhpcy5wYXJlbnQ/dGhpcy5tYXRyaXhXb3JsZC5jb3B5KHRoaXMubWF0cml4KTp0aGlzLm1hdHJpeFdvcmxkLm11bHRpcGx5TWF0cmljZXModGhpcy5wYXJlbnQubWF0cml4V29ybGQsdGhpcy5tYXRyaXgpLCEwPT09bil7Y29uc3QgdD10aGlzLmNoaWxkcmVuO2ZvcihsZXQgbj0wLGU9dC5sZW5ndGg7bjxlO24rKyl0W25dLnVwZGF0ZVdvcmxkTWF0cml4KCExLCEwKX19LHRvSlNPTjpmdW5jdGlvbih0KXtjb25zdCBuPXZvaWQgMD09PXR8fCJzdHJpbmciPT10eXBlb2YgdCxlPXt9O24mJih0PXtnZW9tZXRyaWVzOnt9LG1hdGVyaWFsczp7fSx0ZXh0dXJlczp7fSxpbWFnZXM6e30sc2hhcGVzOnt9LHNrZWxldG9uczp7fSxhbmltYXRpb25zOnt9fSxlLm1ldGFkYXRhPXt2ZXJzaW9uOjQuNSx0eXBlOiJPYmplY3QiLGdlbmVyYXRvcjoiT2JqZWN0M0QudG9KU09OIn0pO2NvbnN0IGE9e307ZnVuY3Rpb24gbyhuLGUpe3JldHVybiB2b2lkIDA9PT1uW2UudXVpZF0mJihuW2UudXVpZF09ZS50b0pTT04odCkpLGUudXVpZH1pZihhLnV1aWQ9dGhpcy51dWlkLGEudHlwZT10aGlzLnR5cGUsIiIhPT10aGlzLm5hbWUmJihhLm5hbWU9dGhpcy5uYW1lKSwhMD09PXRoaXMuY2FzdFNoYWRvdyYmKGEuY2FzdFNoYWRvdz0hMCksITA9PT10aGlzLnJlY2VpdmVTaGFkb3cmJihhLnJlY2VpdmVTaGFkb3c9ITApLCExPT09dGhpcy52aXNpYmxlJiYoYS52aXNpYmxlPSExKSwhMT09PXRoaXMuZnJ1c3R1bUN1bGxlZCYmKGEuZnJ1c3R1bUN1bGxlZD0hMSksMCE9PXRoaXMucmVuZGVyT3JkZXImJihhLnJlbmRlck9yZGVyPXRoaXMucmVuZGVyT3JkZXIpLCJ7fSIhPT1KU09OLnN0cmluZ2lmeSh0aGlzLnVzZXJEYXRhKSYmKGEudXNlckRhdGE9dGhpcy51c2VyRGF0YSksYS5sYXllcnM9dGhpcy5sYXllcnMubWFzayxhLm1hdHJpeD10aGlzLm1hdHJpeC50b0FycmF5KCksITE9PT10aGlzLm1hdHJpeEF1dG9VcGRhdGUmJihhLm1hdHJpeEF1dG9VcGRhdGU9ITEpLHRoaXMuaXNJbnN0YW5jZWRNZXNoJiYoYS50eXBlPSJJbnN0YW5jZWRNZXNoIixhLmNvdW50PXRoaXMuY291bnQsYS5pbnN0YW5jZU1hdHJpeD10aGlzLmluc3RhbmNlTWF0cml4LnRvSlNPTigpKSx0aGlzLmlzTWVzaHx8dGhpcy5pc0xpbmV8fHRoaXMuaXNQb2ludHMpe2EuZ2VvbWV0cnk9byh0Lmdlb21ldHJpZXMsdGhpcy5nZW9tZXRyeSk7Y29uc3Qgbj10aGlzLmdlb21ldHJ5LnBhcmFtZXRlcnM7aWYodm9pZCAwIT09biYmdm9pZCAwIT09bi5zaGFwZXMpe2NvbnN0IGU9bi5zaGFwZXM7aWYoQXJyYXkuaXNBcnJheShlKSlmb3IobGV0IG49MCxhPWUubGVuZ3RoO248YTtuKyspbyh0LnNoYXBlcyxlW25dKTtlbHNlIG8odC5zaGFwZXMsZSl9fWlmKHRoaXMuaXNTa2lubmVkTWVzaCYmKGEuYmluZE1vZGU9dGhpcy5iaW5kTW9kZSxhLmJpbmRNYXRyaXg9dGhpcy5iaW5kTWF0cml4LnRvQXJyYXkoKSx2b2lkIDAhPT10aGlzLnNrZWxldG9uJiYobyh0LnNrZWxldG9ucyx0aGlzLnNrZWxldG9uKSxhLnNrZWxldG9uPXRoaXMuc2tlbGV0b24udXVpZCkpLHZvaWQgMCE9PXRoaXMubWF0ZXJpYWwpaWYoQXJyYXkuaXNBcnJheSh0aGlzLm1hdGVyaWFsKSl7Y29uc3Qgbj1bXTtmb3IobGV0IGU9MCxhPXRoaXMubWF0ZXJpYWwubGVuZ3RoO2U8YTtlKyspbi5wdXNoKG8odC5tYXRlcmlhbHMsdGhpcy5tYXRlcmlhbFtlXSkpO2EubWF0ZXJpYWw9bn1lbHNlIGEubWF0ZXJpYWw9byh0Lm1hdGVyaWFscyx0aGlzLm1hdGVyaWFsKTtpZih0aGlzLmNoaWxkcmVuLmxlbmd0aD4wKXthLmNoaWxkcmVuPVtdO2ZvcihsZXQgbj0wO248dGhpcy5jaGlsZHJlbi5sZW5ndGg7bisrKWEuY2hpbGRyZW4ucHVzaCh0aGlzLmNoaWxkcmVuW25dLnRvSlNPTih0KS5vYmplY3QpfWlmKHRoaXMuYW5pbWF0aW9ucy5sZW5ndGg+MCl7YS5hbmltYXRpb25zPVtdO2ZvcihsZXQgbj0wO248dGhpcy5hbmltYXRpb25zLmxlbmd0aDtuKyspYS5hbmltYXRpb25zLnB1c2gobyh0LmFuaW1hdGlvbnMsdGhpcy5hbmltYXRpb25zW25dKSl9aWYobil7Y29uc3Qgbj1yKHQuZ2VvbWV0cmllcyksYT1yKHQubWF0ZXJpYWxzKSxvPXIodC50ZXh0dXJlcyksaT1yKHQuaW1hZ2VzKSxjPXIodC5zaGFwZXMpLHM9cih0LnNrZWxldG9ucyksbD1yKHQuYW5pbWF0aW9ucyk7bi5sZW5ndGg+MCYmKGUuZ2VvbWV0cmllcz1uKSxhLmxlbmd0aD4wJiYoZS5tYXRlcmlhbHM9YSksby5sZW5ndGg+MCYmKGUudGV4dHVyZXM9byksaS5sZW5ndGg+MCYmKGUuaW1hZ2VzPWkpLGMubGVuZ3RoPjAmJihlLnNoYXBlcz1jKSxzLmxlbmd0aD4wJiYoZS5za2VsZXRvbnM9cyksbC5sZW5ndGg+MCYmKGUuYW5pbWF0aW9ucz1sKX1yZXR1cm4gZS5vYmplY3Q9YSxlO2Z1bmN0aW9uIHIodCl7Y29uc3Qgbj1bXTtmb3IoY29uc3QgZSBpbiB0KXtjb25zdCBhPXRbZV07ZGVsZXRlIGEubWV0YWRhdGEsbi5wdXNoKGEpfXJldHVybiBufX0sY2xvbmU6ZnVuY3Rpb24odCl7cmV0dXJuKG5ldyB0aGlzLmNvbnN0cnVjdG9yKS5jb3B5KHRoaXMsdCl9LGNvcHk6ZnVuY3Rpb24odCxuPSEwKXtpZih0aGlzLm5hbWU9dC5uYW1lLHRoaXMudXAuY29weSh0LnVwKSx0aGlzLnBvc2l0aW9uLmNvcHkodC5wb3NpdGlvbiksdGhpcy5yb3RhdGlvbi5vcmRlcj10LnJvdGF0aW9uLm9yZGVyLHRoaXMucXVhdGVybmlvbi5jb3B5KHQucXVhdGVybmlvbiksdGhpcy5zY2FsZS5jb3B5KHQuc2NhbGUpLHRoaXMubWF0cml4LmNvcHkodC5tYXRyaXgpLHRoaXMubWF0cml4V29ybGQuY29weSh0Lm1hdHJpeFdvcmxkKSx0aGlzLm1hdHJpeEF1dG9VcGRhdGU9dC5tYXRyaXhBdXRvVXBkYXRlLHRoaXMubWF0cml4V29ybGROZWVkc1VwZGF0ZT10Lm1hdHJpeFdvcmxkTmVlZHNVcGRhdGUsdGhpcy5sYXllcnMubWFzaz10LmxheWVycy5tYXNrLHRoaXMudmlzaWJsZT10LnZpc2libGUsdGhpcy5jYXN0U2hhZG93PXQuY2FzdFNoYWRvdyx0aGlzLnJlY2VpdmVTaGFkb3c9dC5yZWNlaXZlU2hhZG93LHRoaXMuZnJ1c3R1bUN1bGxlZD10LmZydXN0dW1DdWxsZWQsdGhpcy5yZW5kZXJPcmRlcj10LnJlbmRlck9yZGVyLHRoaXMudXNlckRhdGE9SlNPTi5wYXJzZShKU09OLnN0cmluZ2lmeSh0LnVzZXJEYXRhKSksITA9PT1uKWZvcihsZXQgbj0wO248dC5jaGlsZHJlbi5sZW5ndGg7bisrKXRoaXMuYWRkKHQuY2hpbGRyZW5bbl0uY2xvbmUoKSk7cmV0dXJuIHRoaXN9fSk7Y29uc3QgdG50PW5ldyB0dHQsbm50PW5ldyB0dHQsZW50PW5ldyBHOTtjbGFzcyBhbnR7Y29uc3RydWN0b3IodCxuKXtPYmplY3QuZGVmaW5lUHJvcGVydHkodGhpcywiaXNQbGFuZSIse3ZhbHVlOiEwfSksdGhpcy5ub3JtYWw9dm9pZCAwIT09dD90Om5ldyB0dHQoMSwwLDApLHRoaXMuY29uc3RhbnQ9dm9pZCAwIT09bj9uOjB9c2V0KHQsbil7cmV0dXJuIHRoaXMubm9ybWFsLmNvcHkodCksdGhpcy5jb25zdGFudD1uLHRoaXN9c2V0Q29tcG9uZW50cyh0LG4sZSxhKXtyZXR1cm4gdGhpcy5ub3JtYWwuc2V0KHQsbixlKSx0aGlzLmNvbnN0YW50PWEsdGhpc31zZXRGcm9tTm9ybWFsQW5kQ29wbGFuYXJQb2ludCh0LG4pe3JldHVybiB0aGlzLm5vcm1hbC5jb3B5KHQpLHRoaXMuY29uc3RhbnQ9LW4uZG90KHRoaXMubm9ybWFsKSx0aGlzfXNldEZyb21Db3BsYW5hclBvaW50cyh0LG4sZSl7Y29uc3QgYT10bnQuc3ViVmVjdG9ycyhlLG4pLmNyb3NzKG5udC5zdWJWZWN0b3JzKHQsbikpLm5vcm1hbGl6ZSgpO3JldHVybiB0aGlzLnNldEZyb21Ob3JtYWxBbmRDb3BsYW5hclBvaW50KGEsdCksdGhpc31jbG9uZSgpe3JldHVybihuZXcgdGhpcy5jb25zdHJ1Y3RvcikuY29weSh0aGlzKX1jb3B5KHQpe3JldHVybiB0aGlzLm5vcm1hbC5jb3B5KHQubm9ybWFsKSx0aGlzLmNvbnN0YW50PXQuY29uc3RhbnQsdGhpc31ub3JtYWxpemUoKXtjb25zdCB0PTEvdGhpcy5ub3JtYWwubGVuZ3RoKCk7cmV0dXJuIHRoaXMubm9ybWFsLm11bHRpcGx5U2NhbGFyKHQpLHRoaXMuY29uc3RhbnQqPXQsdGhpc31uZWdhdGUoKXtyZXR1cm4gdGhpcy5jb25zdGFudCo9LTEsdGhpcy5ub3JtYWwubmVnYXRlKCksdGhpc31kaXN0YW5jZVRvUG9pbnQodCl7cmV0dXJuIHRoaXMubm9ybWFsLmRvdCh0KSt0aGlzLmNvbnN0YW50fWRpc3RhbmNlVG9TcGhlcmUodCl7cmV0dXJuIHRoaXMuZGlzdGFuY2VUb1BvaW50KHQuY2VudGVyKS10LnJhZGl1c31wcm9qZWN0UG9pbnQodCxuKXtyZXR1cm4gdm9pZCAwPT09biYmKGNvbnNvbGUud2FybigiVEhSRUUuUGxhbmU6IC5wcm9qZWN0UG9pbnQoKSB0YXJnZXQgaXMgbm93IHJlcXVpcmVkIiksbj1uZXcgdHR0KSxuLmNvcHkodGhpcy5ub3JtYWwpLm11bHRpcGx5U2NhbGFyKC10aGlzLmRpc3RhbmNlVG9Qb2ludCh0KSkuYWRkKHQpfWludGVyc2VjdExpbmUodCxuKXt2b2lkIDA9PT1uJiYoY29uc29sZS53YXJuKCJUSFJFRS5QbGFuZTogLmludGVyc2VjdExpbmUoKSB0YXJnZXQgaXMgbm93IHJlcXVpcmVkIiksbj1uZXcgdHR0KTtjb25zdCBlPXQuZGVsdGEodG50KSxhPXRoaXMubm9ybWFsLmRvdChlKTtpZigwPT09YSlyZXR1cm4gMD09PXRoaXMuZGlzdGFuY2VUb1BvaW50KHQuc3RhcnQpP24uY29weSh0LnN0YXJ0KTp2b2lkIDA7Y29uc3Qgbz0tKHQuc3RhcnQuZG90KHRoaXMubm9ybWFsKSt0aGlzLmNvbnN0YW50KS9hO3JldHVybiBvPDB8fG8+MT92b2lkIDA6bi5jb3B5KGUpLm11bHRpcGx5U2NhbGFyKG8pLmFkZCh0LnN0YXJ0KX1pbnRlcnNlY3RzTGluZSh0KXtjb25zdCBuPXRoaXMuZGlzdGFuY2VUb1BvaW50KHQuc3RhcnQpLGU9dGhpcy5kaXN0YW5jZVRvUG9pbnQodC5lbmQpO3JldHVybiBuPDAmJmU+MHx8ZTwwJiZuPjB9aW50ZXJzZWN0c0JveCh0KXtyZXR1cm4gdC5pbnRlcnNlY3RzUGxhbmUodGhpcyl9aW50ZXJzZWN0c1NwaGVyZSh0KXtyZXR1cm4gdC5pbnRlcnNlY3RzUGxhbmUodGhpcyl9Y29wbGFuYXJQb2ludCh0KXtyZXR1cm4gdm9pZCAwPT09dCYmKGNvbnNvbGUud2FybigiVEhSRUUuUGxhbmU6IC5jb3BsYW5hclBvaW50KCkgdGFyZ2V0IGlzIG5vdyByZXF1aXJlZCIpLHQ9bmV3IHR0dCksdC5jb3B5KHRoaXMubm9ybWFsKS5tdWx0aXBseVNjYWxhcigtdGhpcy5jb25zdGFudCl9YXBwbHlNYXRyaXg0KHQsbil7Y29uc3QgZT1ufHxlbnQuZ2V0Tm9ybWFsTWF0cml4KHQpLGE9dGhpcy5jb3BsYW5hclBvaW50KHRudCkuYXBwbHlNYXRyaXg0KHQpLG89dGhpcy5ub3JtYWwuYXBwbHlNYXRyaXgzKGUpLm5vcm1hbGl6ZSgpO3JldHVybiB0aGlzLmNvbnN0YW50PS1hLmRvdChvKSx0aGlzfXRyYW5zbGF0ZSh0KXtyZXR1cm4gdGhpcy5jb25zdGFudC09dC5kb3QodGhpcy5ub3JtYWwpLHRoaXN9ZXF1YWxzKHQpe3JldHVybiB0Lm5vcm1hbC5lcXVhbHModGhpcy5ub3JtYWwpJiZ0LmNvbnN0YW50PT09dGhpcy5jb25zdGFudH19Y29uc3Qgb250PW5ldyB0dHQscm50PW5ldyB0dHQsaW50PW5ldyB0dHQsY250PW5ldyB0dHQsc250PW5ldyB0dHQsbG50PW5ldyB0dHQsbW50PW5ldyB0dHQsZG50PW5ldyB0dHQsZ250PW5ldyB0dHQscG50PW5ldyB0dHQ7Y2xhc3MgYm50e2NvbnN0cnVjdG9yKHQsbixlKXt0aGlzLmE9dm9pZCAwIT09dD90Om5ldyB0dHQsdGhpcy5iPXZvaWQgMCE9PW4/bjpuZXcgdHR0LHRoaXMuYz12b2lkIDAhPT1lP2U6bmV3IHR0dH1zdGF0aWMgZ2V0Tm9ybWFsKHQsbixlLGEpe3ZvaWQgMD09PWEmJihjb25zb2xlLndhcm4oIlRIUkVFLlRyaWFuZ2xlOiAuZ2V0Tm9ybWFsKCkgdGFyZ2V0IGlzIG5vdyByZXF1aXJlZCIpLGE9bmV3IHR0dCksYS5zdWJWZWN0b3JzKGUsbiksb250LnN1YlZlY3RvcnModCxuKSxhLmNyb3NzKG9udCk7Y29uc3Qgbz1hLmxlbmd0aFNxKCk7cmV0dXJuIG8+MD9hLm11bHRpcGx5U2NhbGFyKDEvTWF0aC5zcXJ0KG8pKTphLnNldCgwLDAsMCl9c3RhdGljIGdldEJhcnljb29yZCh0LG4sZSxhLG8pe29udC5zdWJWZWN0b3JzKGEsbikscm50LnN1YlZlY3RvcnMoZSxuKSxpbnQuc3ViVmVjdG9ycyh0LG4pO2NvbnN0IHI9b250LmRvdChvbnQpLGk9b250LmRvdChybnQpLGM9b250LmRvdChpbnQpLHM9cm50LmRvdChybnQpLGw9cm50LmRvdChpbnQpLG09cipzLWkqaTtpZih2b2lkIDA9PT1vJiYoY29uc29sZS53YXJuKCJUSFJFRS5UcmlhbmdsZTogLmdldEJhcnljb29yZCgpIHRhcmdldCBpcyBub3cgcmVxdWlyZWQiKSxvPW5ldyB0dHQpLDA9PT1tKXJldHVybiBvLnNldCgtMiwtMSwtMSk7Y29uc3QgZD0xL20sZz0ocypjLWkqbCkqZCxwPShyKmwtaSpjKSpkO3JldHVybiBvLnNldCgxLWctcCxwLGcpfXN0YXRpYyBjb250YWluc1BvaW50KHQsbixlLGEpe3JldHVybiB0aGlzLmdldEJhcnljb29yZCh0LG4sZSxhLGNudCksY250Lng+PTAmJmNudC55Pj0wJiZjbnQueCtjbnQueTw9MX1zdGF0aWMgZ2V0VVYodCxuLGUsYSxvLHIsaSxjKXtyZXR1cm4gdGhpcy5nZXRCYXJ5Y29vcmQodCxuLGUsYSxjbnQpLGMuc2V0KDAsMCksYy5hZGRTY2FsZWRWZWN0b3IobyxjbnQueCksYy5hZGRTY2FsZWRWZWN0b3IocixjbnQueSksYy5hZGRTY2FsZWRWZWN0b3IoaSxjbnQueiksY31zdGF0aWMgaXNGcm9udEZhY2luZyh0LG4sZSxhKXtyZXR1cm4gb250LnN1YlZlY3RvcnMoZSxuKSxybnQuc3ViVmVjdG9ycyh0LG4pLG9udC5jcm9zcyhybnQpLmRvdChhKTwwfXNldCh0LG4sZSl7cmV0dXJuIHRoaXMuYS5jb3B5KHQpLHRoaXMuYi5jb3B5KG4pLHRoaXMuYy5jb3B5KGUpLHRoaXN9c2V0RnJvbVBvaW50c0FuZEluZGljZXModCxuLGUsYSl7cmV0dXJuIHRoaXMuYS5jb3B5KHRbbl0pLHRoaXMuYi5jb3B5KHRbZV0pLHRoaXMuYy5jb3B5KHRbYV0pLHRoaXN9Y2xvbmUoKXtyZXR1cm4obmV3IHRoaXMuY29uc3RydWN0b3IpLmNvcHkodGhpcyl9Y29weSh0KXtyZXR1cm4gdGhpcy5hLmNvcHkodC5hKSx0aGlzLmIuY29weSh0LmIpLHRoaXMuYy5jb3B5KHQuYyksdGhpc31nZXRBcmVhKCl7cmV0dXJuIG9udC5zdWJWZWN0b3JzKHRoaXMuYyx0aGlzLmIpLHJudC5zdWJWZWN0b3JzKHRoaXMuYSx0aGlzLmIpLC41Km9udC5jcm9zcyhybnQpLmxlbmd0aCgpfWdldE1pZHBvaW50KHQpe3JldHVybiB2b2lkIDA9PT10JiYoY29uc29sZS53YXJuKCJUSFJFRS5UcmlhbmdsZTogLmdldE1pZHBvaW50KCkgdGFyZ2V0IGlzIG5vdyByZXF1aXJlZCIpLHQ9bmV3IHR0dCksdC5hZGRWZWN0b3JzKHRoaXMuYSx0aGlzLmIpLmFkZCh0aGlzLmMpLm11bHRpcGx5U2NhbGFyKDEvMyl9Z2V0Tm9ybWFsKHQpe3JldHVybiBibnQuZ2V0Tm9ybWFsKHRoaXMuYSx0aGlzLmIsdGhpcy5jLHQpfWdldFBsYW5lKHQpe3JldHVybiB2b2lkIDA9PT10JiYoY29uc29sZS53YXJuKCJUSFJFRS5UcmlhbmdsZTogLmdldFBsYW5lKCkgdGFyZ2V0IGlzIG5vdyByZXF1aXJlZCIpLHQ9bmV3IGFudCksdC5zZXRGcm9tQ29wbGFuYXJQb2ludHModGhpcy5hLHRoaXMuYix0aGlzLmMpfWdldEJhcnljb29yZCh0LG4pe3JldHVybiBibnQuZ2V0QmFyeWNvb3JkKHQsdGhpcy5hLHRoaXMuYix0aGlzLmMsbil9Z2V0VVYodCxuLGUsYSxvKXtyZXR1cm4gYm50LmdldFVWKHQsdGhpcy5hLHRoaXMuYix0aGlzLmMsbixlLGEsbyl9Y29udGFpbnNQb2ludCh0KXtyZXR1cm4gYm50LmNvbnRhaW5zUG9pbnQodCx0aGlzLmEsdGhpcy5iLHRoaXMuYyl9aXNGcm9udEZhY2luZyh0KXtyZXR1cm4gYm50LmlzRnJvbnRGYWNpbmcodGhpcy5hLHRoaXMuYix0aGlzLmMsdCl9aW50ZXJzZWN0c0JveCh0KXtyZXR1cm4gdC5pbnRlcnNlY3RzVHJpYW5nbGUodGhpcyl9Y2xvc2VzdFBvaW50VG9Qb2ludCh0LG4pe3ZvaWQgMD09PW4mJihjb25zb2xlLndhcm4oIlRIUkVFLlRyaWFuZ2xlOiAuY2xvc2VzdFBvaW50VG9Qb2ludCgpIHRhcmdldCBpcyBub3cgcmVxdWlyZWQiKSxuPW5ldyB0dHQpO2NvbnN0IGU9dGhpcy5hLGE9dGhpcy5iLG89dGhpcy5jO2xldCByLGk7c250LnN1YlZlY3RvcnMoYSxlKSxsbnQuc3ViVmVjdG9ycyhvLGUpLGRudC5zdWJWZWN0b3JzKHQsZSk7Y29uc3QgYz1zbnQuZG90KGRudCkscz1sbnQuZG90KGRudCk7aWYoYzw9MCYmczw9MClyZXR1cm4gbi5jb3B5KGUpO2dudC5zdWJWZWN0b3JzKHQsYSk7Y29uc3QgbD1zbnQuZG90KGdudCksbT1sbnQuZG90KGdudCk7aWYobD49MCYmbTw9bClyZXR1cm4gbi5jb3B5KGEpO2NvbnN0IGQ9YyptLWwqcztpZihkPD0wJiZjPj0wJiZsPD0wKXJldHVybiByPWMvKGMtbCksbi5jb3B5KGUpLmFkZFNjYWxlZFZlY3RvcihzbnQscik7cG50LnN1YlZlY3RvcnModCxvKTtjb25zdCBnPXNudC5kb3QocG50KSxwPWxudC5kb3QocG50KTtpZihwPj0wJiZnPD1wKXJldHVybiBuLmNvcHkobyk7Y29uc3QgYj1nKnMtYypwO2lmKGI8PTAmJnM+PTAmJnA8PTApcmV0dXJuIGk9cy8ocy1wKSxuLmNvcHkoZSkuYWRkU2NhbGVkVmVjdG9yKGxudCxpKTtjb25zdCB1PWwqcC1nKm07aWYodTw9MCYmbS1sPj0wJiZnLXA+PTApcmV0dXJuIG1udC5zdWJWZWN0b3JzKG8sYSksaT0obS1sKS8obS1sKyhnLXApKSxuLmNvcHkoYSkuYWRkU2NhbGVkVmVjdG9yKG1udCxpKTtjb25zdCBmPTEvKHUrYitkKTtyZXR1cm4gcj1iKmYsaT1kKmYsbi5jb3B5KGUpLmFkZFNjYWxlZFZlY3RvcihzbnQscikuYWRkU2NhbGVkVmVjdG9yKGxudCxpKX1lcXVhbHModCl7cmV0dXJuIHQuYS5lcXVhbHModGhpcy5hKSYmdC5iLmVxdWFscyh0aGlzLmIpJiZ0LmMuZXF1YWxzKHRoaXMuYyl9fWNvbnN0IHVudD17YWxpY2VibHVlOjE1NzkyMzgzLGFudGlxdWV3aGl0ZToxNjQ0NDM3NSxhcXVhOjY1NTM1LGFxdWFtYXJpbmU6ODM4ODU2NCxhenVyZToxNTc5NDE3NSxiZWlnZToxNjExOTI2MCxiaXNxdWU6MTY3NzAyNDQsYmxhY2s6MCxibGFuY2hlZGFsbW9uZDoxNjc3MjA0NSxibHVlOjI1NSxibHVldmlvbGV0OjkwNTUyMDIsYnJvd246MTA4MjQyMzQsYnVybHl3b29kOjE0NTk2MjMxLGNhZGV0Ymx1ZTo2MjY2NTI4LGNoYXJ0cmV1c2U6ODM4ODM1MixjaG9jb2xhdGU6MTM3ODk0NzAsY29yYWw6MTY3NDQyNzIsY29ybmZsb3dlcmJsdWU6NjU5MTk4MSxjb3Juc2lsazoxNjc3NTM4OCxjcmltc29uOjE0NDIzMTAwLGN5YW46NjU1MzUsZGFya2JsdWU6MTM5LGRhcmtjeWFuOjM1NzIzLGRhcmtnb2xkZW5yb2Q6MTIwOTI5MzksZGFya2dyYXk6MTExMTkwMTcsZGFya2dyZWVuOjI1NjAwLGRhcmtncmV5OjExMTE5MDE3LGRhcmtraGFraToxMjQzMzI1OSxkYXJrbWFnZW50YTo5MTA5NjQzLGRhcmtvbGl2ZWdyZWVuOjU1OTc5OTksZGFya29yYW5nZToxNjc0NzUyMCxkYXJrb3JjaGlkOjEwMDQwMDEyLGRhcmtyZWQ6OTEwOTUwNCxkYXJrc2FsbW9uOjE1MzA4NDEwLGRhcmtzZWFncmVlbjo5NDE5OTE5LGRhcmtzbGF0ZWJsdWU6NDczNDM0NyxkYXJrc2xhdGVncmF5OjMxMDA0OTUsZGFya3NsYXRlZ3JleTozMTAwNDk1LGRhcmt0dXJxdW9pc2U6NTI5NDUsZGFya3Zpb2xldDo5Njk5NTM5LGRlZXBwaW5rOjE2NzE2OTQ3LGRlZXBza3libHVlOjQ5MTUxLGRpbWdyYXk6NjkwODI2NSxkaW1ncmV5OjY5MDgyNjUsZG9kZ2VyYmx1ZToyMDAzMTk5LGZpcmVicmljazoxMTY3NDE0NixmbG9yYWx3aGl0ZToxNjc3NTkyMCxmb3Jlc3RncmVlbjoyMjYzODQyLGZ1Y2hzaWE6MTY3MTE5MzUsZ2FpbnNib3JvOjE0NDc0NDYwLGdob3N0d2hpdGU6MTYzMTY2NzEsZ29sZDoxNjc2NjcyMCxnb2xkZW5yb2Q6MTQzMjkxMjAsZ3JheTo4NDIxNTA0LGdyZWVuOjMyNzY4LGdyZWVueWVsbG93OjExNDAzMDU1LGdyZXk6ODQyMTUwNCxob25leWRldzoxNTc5NDE2MCxob3RwaW5rOjE2NzM4NzQwLGluZGlhbnJlZDoxMzQ1ODUyNCxpbmRpZ286NDkxNTMzMCxpdm9yeToxNjc3NzIwMCxraGFraToxNTc4NzY2MCxsYXZlbmRlcjoxNTEzMjQxMCxsYXZlbmRlcmJsdXNoOjE2NzczMzY1LGxhd25ncmVlbjo4MTkwOTc2LGxlbW9uY2hpZmZvbjoxNjc3NTg4NSxsaWdodGJsdWU6MTEzOTMyNTQsbGlnaHRjb3JhbDoxNTc2MTUzNixsaWdodGN5YW46MTQ3NDU1OTksbGlnaHRnb2xkZW5yb2R5ZWxsb3c6MTY0NDgyMTAsbGlnaHRncmF5OjEzODgyMzIzLGxpZ2h0Z3JlZW46OTQ5ODI1NixsaWdodGdyZXk6MTM4ODIzMjMsbGlnaHRwaW5rOjE2NzU4NDY1LGxpZ2h0c2FsbW9uOjE2NzUyNzYyLGxpZ2h0c2VhZ3JlZW46MjE0Mjg5MCxsaWdodHNreWJsdWU6ODkwMDM0NixsaWdodHNsYXRlZ3JheTo3ODMzNzUzLGxpZ2h0c2xhdGVncmV5Ojc4MzM3NTMsbGlnaHRzdGVlbGJsdWU6MTE1ODQ3MzQsbGlnaHR5ZWxsb3c6MTY3NzcxODQsbGltZTo2NTI4MCxsaW1lZ3JlZW46MzMyOTMzMCxsaW5lbjoxNjQ0NTY3MCxtYWdlbnRhOjE2NzExOTM1LG1hcm9vbjo4Mzg4NjA4LG1lZGl1bWFxdWFtYXJpbmU6NjczNzMyMixtZWRpdW1ibHVlOjIwNSxtZWRpdW1vcmNoaWQ6MTIyMTE2NjcsbWVkaXVtcHVycGxlOjk2NjI2ODMsbWVkaXVtc2VhZ3JlZW46Mzk3ODA5NyxtZWRpdW1zbGF0ZWJsdWU6ODA4Nzc5MCxtZWRpdW1zcHJpbmdncmVlbjo2NDE1NCxtZWRpdW10dXJxdW9pc2U6NDc3MjMwMCxtZWRpdW12aW9sZXRyZWQ6MTMwNDcxNzMsbWlkbmlnaHRibHVlOjE2NDQ5MTIsbWludGNyZWFtOjE2MTIxODUwLG1pc3R5cm9zZToxNjc3MDI3Myxtb2NjYXNpbjoxNjc3MDIyOSxuYXZham93aGl0ZToxNjc2ODY4NSxuYXZ5OjEyOCxvbGRsYWNlOjE2NjQzNTU4LG9saXZlOjg0MjEzNzYsb2xpdmVkcmFiOjcwNDg3Mzksb3JhbmdlOjE2NzUzOTIwLG9yYW5nZXJlZDoxNjcyOTM0NCxvcmNoaWQ6MTQzMTU3MzQscGFsZWdvbGRlbnJvZDoxNTY1NzEzMCxwYWxlZ3JlZW46MTAwMjU4ODAscGFsZXR1cnF1b2lzZToxMTUyOTk2NixwYWxldmlvbGV0cmVkOjE0MzgxMjAzLHBhcGF5YXdoaXA6MTY3NzMwNzcscGVhY2hwdWZmOjE2NzY3NjczLHBlcnU6MTM0Njg5OTEscGluazoxNjc2MTAzNSxwbHVtOjE0NTI0NjM3LHBvd2RlcmJsdWU6MTE1OTE5MTAscHVycGxlOjgzODg3MzYscmViZWNjYXB1cnBsZTo2Njk3ODgxLHJlZDoxNjcxMTY4MCxyb3N5YnJvd246MTIzNTc1MTkscm95YWxibHVlOjQyODY5NDUsc2FkZGxlYnJvd246OTEyNzE4NyxzYWxtb246MTY0MTY4ODIsc2FuZHlicm93bjoxNjAzMjg2NCxzZWFncmVlbjozMDUwMzI3LHNlYXNoZWxsOjE2Nzc0NjM4LHNpZW5uYToxMDUwNjc5NyxzaWx2ZXI6MTI2MzIyNTYsc2t5Ymx1ZTo4OTAwMzMxLHNsYXRlYmx1ZTo2OTcwMDYxLHNsYXRlZ3JheTo3MzcyOTQ0LHNsYXRlZ3JleTo3MzcyOTQ0LHNub3c6MTY3NzU5MzAsc3ByaW5nZ3JlZW46NjU0MDcsc3RlZWxibHVlOjQ2MjA5ODAsdGFuOjEzODA4NzgwLHRlYWw6MzI4OTYsdGhpc3RsZToxNDIwNDg4OCx0b21hdG86MTY3MzcwOTUsdHVycXVvaXNlOjQyNTE4NTYsdmlvbGV0OjE1NjMxMDg2LHdoZWF0OjE2MTEzMzMxLHdoaXRlOjE2Nzc3MjE1LHdoaXRlc21va2U6MTYxMTkyODUseWVsbG93OjE2Nzc2OTYwLHllbGxvd2dyZWVuOjEwMTQ1MDc0fSxmbnQ9e2g6MCxzOjAsbDowfSxobnQ9e2g6MCxzOjAsbDowfTtmdW5jdGlvbiBfbnQodCxuLGUpe3JldHVybiBlPDAmJihlKz0xKSxlPjEmJihlLT0xKSxlPDEvNj90KzYqKG4tdCkqZTplPC41P246ZTwyLzM/dCs2KihuLXQpKigyLzMtZSk6dH1mdW5jdGlvbiBDbnQodCl7cmV0dXJuIHQ8LjA0MDQ1Py4wNzczOTkzODA4KnQ6TWF0aC5wb3coLjk0Nzg2NzI5ODYqdCsuMDUyMTMyNzAxNCwyLjQpfWZ1bmN0aW9uIE1udCh0KXtyZXR1cm4gdDwuMDAzMTMwOD8xMi45Mip0OjEuMDU1Kk1hdGgucG93KHQsLjQxNjY2KS0uMDU1fWNsYXNzIE9udHtjb25zdHJ1Y3Rvcih0LG4sZSl7cmV0dXJuIE9iamVjdC5kZWZpbmVQcm9wZXJ0eSh0aGlzLCJpc0NvbG9yIix7dmFsdWU6ITB9KSx2b2lkIDA9PT1uJiZ2b2lkIDA9PT1lP3RoaXMuc2V0KHQpOnRoaXMuc2V0UkdCKHQsbixlKX1zZXQodCl7cmV0dXJuIHQmJnQuaXNDb2xvcj90aGlzLmNvcHkodCk6Im51bWJlciI9PXR5cGVvZiB0P3RoaXMuc2V0SGV4KHQpOiJzdHJpbmciPT10eXBlb2YgdCYmdGhpcy5zZXRTdHlsZSh0KSx0aGlzfXNldFNjYWxhcih0KXtyZXR1cm4gdGhpcy5yPXQsdGhpcy5nPXQsdGhpcy5iPXQsdGhpc31zZXRIZXgodCl7cmV0dXJuIHQ9TWF0aC5mbG9vcih0KSx0aGlzLnI9KHQ+PjE2JjI1NSkvMjU1LHRoaXMuZz0odD4+OCYyNTUpLzI1NSx0aGlzLmI9KDI1NSZ0KS8yNTUsdGhpc31zZXRSR0IodCxuLGUpe3JldHVybiB0aGlzLnI9dCx0aGlzLmc9bix0aGlzLmI9ZSx0aGlzfXNldEhTTCh0LG4sZSl7aWYodD1VOS5ldWNsaWRlYW5Nb2R1bG8odCwxKSxuPVU5LmNsYW1wKG4sMCwxKSxlPVU5LmNsYW1wKGUsMCwxKSwwPT09bil0aGlzLnI9dGhpcy5nPXRoaXMuYj1lO2Vsc2V7Y29uc3QgYT1lPD0uNT9lKigxK24pOmUrbi1lKm4sbz0yKmUtYTt0aGlzLnI9X250KG8sYSx0KzEvMyksdGhpcy5nPV9udChvLGEsdCksdGhpcy5iPV9udChvLGEsdC0xLzMpfXJldHVybiB0aGlzfXNldFN0eWxlKHQpe2Z1bmN0aW9uIG4obil7dm9pZCAwIT09biYmcGFyc2VGbG9hdChuKTwxJiZjb25zb2xlLndhcm4oIlRIUkVFLkNvbG9yOiBBbHBoYSBjb21wb25lbnQgb2YgIit0KyIgd2lsbCBiZSBpZ25vcmVkLiIpfWxldCBlO2lmKGU9L14oKD86cmdifGhzbClhPylcKChbXlwpXSopXCkvLmV4ZWModCkpe2xldCB0O2NvbnN0IGE9ZVsyXTtzd2l0Y2goZVsxXSl7Y2FzZSJyZ2IiOmNhc2UicmdiYSI6aWYodD0vXlxzKihcZCspXHMqLFxzKihcZCspXHMqLFxzKihcZCspXHMqKD86LFxzKihcZCpcLj9cZCspXHMqKT8kLy5leGVjKGEpKXJldHVybiB0aGlzLnI9TWF0aC5taW4oMjU1LHBhcnNlSW50KHRbMV0sMTApKS8yNTUsdGhpcy5nPU1hdGgubWluKDI1NSxwYXJzZUludCh0WzJdLDEwKSkvMjU1LHRoaXMuYj1NYXRoLm1pbigyNTUscGFyc2VJbnQodFszXSwxMCkpLzI1NSxuKHRbNF0pLHRoaXM7aWYodD0vXlxzKihcZCspXCVccyosXHMqKFxkKylcJVxzKixccyooXGQrKVwlXHMqKD86LFxzKihcZCpcLj9cZCspXHMqKT8kLy5leGVjKGEpKXJldHVybiB0aGlzLnI9TWF0aC5taW4oMTAwLHBhcnNlSW50KHRbMV0sMTApKS8xMDAsdGhpcy5nPU1hdGgubWluKDEwMCxwYXJzZUludCh0WzJdLDEwKSkvMTAwLHRoaXMuYj1NYXRoLm1pbigxMDAscGFyc2VJbnQodFszXSwxMCkpLzEwMCxuKHRbNF0pLHRoaXM7YnJlYWs7Y2FzZSJoc2wiOmNhc2UiaHNsYSI6aWYodD0vXlxzKihcZCpcLj9cZCspXHMqLFxzKihcZCspXCVccyosXHMqKFxkKylcJVxzKig/OixccyooXGQqXC4/XGQrKVxzKik/JC8uZXhlYyhhKSl7Y29uc3QgZT1wYXJzZUZsb2F0KHRbMV0pLzM2MCxhPXBhcnNlSW50KHRbMl0sMTApLzEwMCxvPXBhcnNlSW50KHRbM10sMTApLzEwMDtyZXR1cm4gbih0WzRdKSx0aGlzLnNldEhTTChlLGEsbyl9fX1lbHNlIGlmKGU9L15cIyhbQS1GYS1mXGRdKykkLy5leGVjKHQpKXtjb25zdCB0PWVbMV0sbj10Lmxlbmd0aDtpZigzPT09bilyZXR1cm4gdGhpcy5yPXBhcnNlSW50KHQuY2hhckF0KDApK3QuY2hhckF0KDApLDE2KS8yNTUsdGhpcy5nPXBhcnNlSW50KHQuY2hhckF0KDEpK3QuY2hhckF0KDEpLDE2KS8yNTUsdGhpcy5iPXBhcnNlSW50KHQuY2hhckF0KDIpK3QuY2hhckF0KDIpLDE2KS8yNTUsdGhpcztpZig2PT09bilyZXR1cm4gdGhpcy5yPXBhcnNlSW50KHQuY2hhckF0KDApK3QuY2hhckF0KDEpLDE2KS8yNTUsdGhpcy5nPXBhcnNlSW50KHQuY2hhckF0KDIpK3QuY2hhckF0KDMpLDE2KS8yNTUsdGhpcy5iPXBhcnNlSW50KHQuY2hhckF0KDQpK3QuY2hhckF0KDUpLDE2KS8yNTUsdGhpc31yZXR1cm4gdCYmdC5sZW5ndGg+MD90aGlzLnNldENvbG9yTmFtZSh0KTp0aGlzfXNldENvbG9yTmFtZSh0KXtjb25zdCBuPXVudFt0XTtyZXR1cm4gdm9pZCAwIT09bj90aGlzLnNldEhleChuKTpjb25zb2xlLndhcm4oIlRIUkVFLkNvbG9yOiBVbmtub3duIGNvbG9yICIrdCksdGhpc31jbG9uZSgpe3JldHVybiBuZXcgdGhpcy5jb25zdHJ1Y3Rvcih0aGlzLnIsdGhpcy5nLHRoaXMuYil9Y29weSh0KXtyZXR1cm4gdGhpcy5yPXQucix0aGlzLmc9dC5nLHRoaXMuYj10LmIsdGhpc31jb3B5R2FtbWFUb0xpbmVhcih0LG49Mil7cmV0dXJuIHRoaXMucj1NYXRoLnBvdyh0LnIsbiksdGhpcy5nPU1hdGgucG93KHQuZyxuKSx0aGlzLmI9TWF0aC5wb3codC5iLG4pLHRoaXN9Y29weUxpbmVhclRvR2FtbWEodCxuPTIpe2NvbnN0IGU9bj4wPzEvbjoxO3JldHVybiB0aGlzLnI9TWF0aC5wb3codC5yLGUpLHRoaXMuZz1NYXRoLnBvdyh0LmcsZSksdGhpcy5iPU1hdGgucG93KHQuYixlKSx0aGlzfWNvbnZlcnRHYW1tYVRvTGluZWFyKHQpe3JldHVybiB0aGlzLmNvcHlHYW1tYVRvTGluZWFyKHRoaXMsdCksdGhpc31jb252ZXJ0TGluZWFyVG9HYW1tYSh0KXtyZXR1cm4gdGhpcy5jb3B5TGluZWFyVG9HYW1tYSh0aGlzLHQpLHRoaXN9Y29weVNSR0JUb0xpbmVhcih0KXtyZXR1cm4gdGhpcy5yPUNudCh0LnIpLHRoaXMuZz1DbnQodC5nKSx0aGlzLmI9Q250KHQuYiksdGhpc31jb3B5TGluZWFyVG9TUkdCKHQpe3JldHVybiB0aGlzLnI9TW50KHQuciksdGhpcy5nPU1udCh0LmcpLHRoaXMuYj1NbnQodC5iKSx0aGlzfWNvbnZlcnRTUkdCVG9MaW5lYXIoKXtyZXR1cm4gdGhpcy5jb3B5U1JHQlRvTGluZWFyKHRoaXMpLHRoaXN9Y29udmVydExpbmVhclRvU1JHQigpe3JldHVybiB0aGlzLmNvcHlMaW5lYXJUb1NSR0IodGhpcyksdGhpc31nZXRIZXgoKXtyZXR1cm4gMjU1KnRoaXMucjw8MTZeMjU1KnRoaXMuZzw8OF4yNTUqdGhpcy5iPDwwfWdldEhleFN0cmluZygpe3JldHVybigiMDAwMDAwIit0aGlzLmdldEhleCgpLnRvU3RyaW5nKDE2KSkuc2xpY2UoLTYpfWdldEhTTCh0KXt2b2lkIDA9PT10JiYoY29uc29sZS53YXJuKCJUSFJFRS5Db2xvcjogLmdldEhTTCgpIHRhcmdldCBpcyBub3cgcmVxdWlyZWQiKSx0PXtoOjAsczowLGw6MH0pO2NvbnN0IG49dGhpcy5yLGU9dGhpcy5nLGE9dGhpcy5iLG89TWF0aC5tYXgobixlLGEpLHI9TWF0aC5taW4obixlLGEpO2xldCBpLGM7Y29uc3Qgcz0ocitvKS8yO2lmKHI9PT1vKWk9MCxjPTA7ZWxzZXtjb25zdCB0PW8tcjtzd2l0Y2goYz1zPD0uNT90LyhvK3IpOnQvKDItby1yKSxvKXtjYXNlIG46aT0oZS1hKS90KyhlPGE/NjowKTticmVhaztjYXNlIGU6aT0oYS1uKS90KzI7YnJlYWs7Y2FzZSBhOmk9KG4tZSkvdCs0fWkvPTZ9cmV0dXJuIHQuaD1pLHQucz1jLHQubD1zLHR9Z2V0U3R5bGUoKXtyZXR1cm4icmdiKCIrKDI1NSp0aGlzLnJ8MCkrIiwiKygyNTUqdGhpcy5nfDApKyIsIisoMjU1KnRoaXMuYnwwKSsiKSJ9b2Zmc2V0SFNMKHQsbixlKXtyZXR1cm4gdGhpcy5nZXRIU0woZm50KSxmbnQuaCs9dCxmbnQucys9bixmbnQubCs9ZSx0aGlzLnNldEhTTChmbnQuaCxmbnQucyxmbnQubCksdGhpc31hZGQodCl7cmV0dXJuIHRoaXMucis9dC5yLHRoaXMuZys9dC5nLHRoaXMuYis9dC5iLHRoaXN9YWRkQ29sb3JzKHQsbil7cmV0dXJuIHRoaXMucj10LnIrbi5yLHRoaXMuZz10Lmcrbi5nLHRoaXMuYj10LmIrbi5iLHRoaXN9YWRkU2NhbGFyKHQpe3JldHVybiB0aGlzLnIrPXQsdGhpcy5nKz10LHRoaXMuYis9dCx0aGlzfXN1Yih0KXtyZXR1cm4gdGhpcy5yPU1hdGgubWF4KDAsdGhpcy5yLXQuciksdGhpcy5nPU1hdGgubWF4KDAsdGhpcy5nLXQuZyksdGhpcy5iPU1hdGgubWF4KDAsdGhpcy5iLXQuYiksdGhpc31tdWx0aXBseSh0KXtyZXR1cm4gdGhpcy5yKj10LnIsdGhpcy5nKj10LmcsdGhpcy5iKj10LmIsdGhpc31tdWx0aXBseVNjYWxhcih0KXtyZXR1cm4gdGhpcy5yKj10LHRoaXMuZyo9dCx0aGlzLmIqPXQsdGhpc31sZXJwKHQsbil7cmV0dXJuIHRoaXMucis9KHQuci10aGlzLnIpKm4sdGhpcy5nKz0odC5nLXRoaXMuZykqbix0aGlzLmIrPSh0LmItdGhpcy5iKSpuLHRoaXN9bGVycENvbG9ycyh0LG4sZSl7cmV0dXJuIHRoaXMucj10LnIrKG4uci10LnIpKmUsdGhpcy5nPXQuZysobi5nLXQuZykqZSx0aGlzLmI9dC5iKyhuLmItdC5iKSplLHRoaXN9bGVycEhTTCh0LG4pe3RoaXMuZ2V0SFNMKGZudCksdC5nZXRIU0woaG50KTtjb25zdCBlPVU5LmxlcnAoZm50LmgsaG50LmgsbiksYT1VOS5sZXJwKGZudC5zLGhudC5zLG4pLG89VTkubGVycChmbnQubCxobnQubCxuKTtyZXR1cm4gdGhpcy5zZXRIU0woZSxhLG8pLHRoaXN9ZXF1YWxzKHQpe3JldHVybiB0LnI9PT10aGlzLnImJnQuZz09PXRoaXMuZyYmdC5iPT09dGhpcy5ifWZyb21BcnJheSh0LG49MCl7cmV0dXJuIHRoaXMucj10W25dLHRoaXMuZz10W24rMV0sdGhpcy5iPXRbbisyXSx0aGlzfXRvQXJyYXkodD1bXSxuPTApe3JldHVybiB0W25dPXRoaXMucix0W24rMV09dGhpcy5nLHRbbisyXT10aGlzLmIsdH1mcm9tQnVmZmVyQXR0cmlidXRlKHQsbil7cmV0dXJuIHRoaXMucj10LmdldFgobiksdGhpcy5nPXQuZ2V0WShuKSx0aGlzLmI9dC5nZXRaKG4pLCEwPT09dC5ub3JtYWxpemVkJiYodGhpcy5yLz0yNTUsdGhpcy5nLz0yNTUsdGhpcy5iLz0yNTUpLHRoaXN9dG9KU09OKCl7cmV0dXJuIHRoaXMuZ2V0SGV4KCl9fU9udC5OQU1FUz11bnQsT250LnByb3RvdHlwZS5yPTEsT250LnByb3RvdHlwZS5nPTEsT250LnByb3RvdHlwZS5iPTE7Y2xhc3MgUG50e2NvbnN0cnVjdG9yKHQsbixlLGEsbyxyPTApe3RoaXMuYT10LHRoaXMuYj1uLHRoaXMuYz1lLHRoaXMubm9ybWFsPWEmJmEuaXNWZWN0b3IzP2E6bmV3IHR0dCx0aGlzLnZlcnRleE5vcm1hbHM9QXJyYXkuaXNBcnJheShhKT9hOltdLHRoaXMuY29sb3I9byYmby5pc0NvbG9yP286bmV3IE9udCx0aGlzLnZlcnRleENvbG9ycz1BcnJheS5pc0FycmF5KG8pP286W10sdGhpcy5tYXRlcmlhbEluZGV4PXJ9Y2xvbmUoKXtyZXR1cm4obmV3IHRoaXMuY29uc3RydWN0b3IpLmNvcHkodGhpcyl9Y29weSh0KXt0aGlzLmE9dC5hLHRoaXMuYj10LmIsdGhpcy5jPXQuYyx0aGlzLm5vcm1hbC5jb3B5KHQubm9ybWFsKSx0aGlzLmNvbG9yLmNvcHkodC5jb2xvciksdGhpcy5tYXRlcmlhbEluZGV4PXQubWF0ZXJpYWxJbmRleDtmb3IobGV0IG49MCxlPXQudmVydGV4Tm9ybWFscy5sZW5ndGg7bjxlO24rKyl0aGlzLnZlcnRleE5vcm1hbHNbbl09dC52ZXJ0ZXhOb3JtYWxzW25dLmNsb25lKCk7Zm9yKGxldCBuPTAsZT10LnZlcnRleENvbG9ycy5sZW5ndGg7bjxlO24rKyl0aGlzLnZlcnRleENvbG9yc1tuXT10LnZlcnRleENvbG9yc1tuXS5jbG9uZSgpO3JldHVybiB0aGlzfX1sZXQgeG50PTA7ZnVuY3Rpb24geW50KCl7T2JqZWN0LmRlZmluZVByb3BlcnR5KHRoaXMsImlkIix7dmFsdWU6eG50Kyt9KSx0aGlzLnV1aWQ9VTkuZ2VuZXJhdGVVVUlEKCksdGhpcy5uYW1lPSIiLHRoaXMudHlwZT0iTWF0ZXJpYWwiLHRoaXMuZm9nPSEwLHRoaXMuYmxlbmRpbmc9MSx0aGlzLnNpZGU9MCx0aGlzLmZsYXRTaGFkaW5nPSExLHRoaXMudmVydGV4Q29sb3JzPSExLHRoaXMub3BhY2l0eT0xLHRoaXMudHJhbnNwYXJlbnQ9ITEsdGhpcy5ibGVuZFNyYz0yMDQsdGhpcy5ibGVuZERzdD0yMDUsdGhpcy5ibGVuZEVxdWF0aW9uPXA5LHRoaXMuYmxlbmRTcmNBbHBoYT1udWxsLHRoaXMuYmxlbmREc3RBbHBoYT1udWxsLHRoaXMuYmxlbmRFcXVhdGlvbkFscGhhPW51bGwsdGhpcy5kZXB0aEZ1bmM9Myx0aGlzLmRlcHRoVGVzdD0hMCx0aGlzLmRlcHRoV3JpdGU9ITAsdGhpcy5zdGVuY2lsV3JpdGVNYXNrPTI1NSx0aGlzLnN0ZW5jaWxGdW5jPTUxOSx0aGlzLnN0ZW5jaWxSZWY9MCx0aGlzLnN0ZW5jaWxGdW5jTWFzaz0yNTUsdGhpcy5zdGVuY2lsRmFpbD1OOSx0aGlzLnN0ZW5jaWxaRmFpbD1OOSx0aGlzLnN0ZW5jaWxaUGFzcz1OOSx0aGlzLnN0ZW5jaWxXcml0ZT0hMSx0aGlzLmNsaXBwaW5nUGxhbmVzPW51bGwsdGhpcy5jbGlwSW50ZXJzZWN0aW9uPSExLHRoaXMuY2xpcFNoYWRvd3M9ITEsdGhpcy5zaGFkb3dTaWRlPW51bGwsdGhpcy5jb2xvcldyaXRlPSEwLHRoaXMucHJlY2lzaW9uPW51bGwsdGhpcy5wb2x5Z29uT2Zmc2V0PSExLHRoaXMucG9seWdvbk9mZnNldEZhY3Rvcj0wLHRoaXMucG9seWdvbk9mZnNldFVuaXRzPTAsdGhpcy5kaXRoZXJpbmc9ITEsdGhpcy5hbHBoYVRlc3Q9MCx0aGlzLnByZW11bHRpcGxpZWRBbHBoYT0hMSx0aGlzLnZpc2libGU9ITAsdGhpcy50b25lTWFwcGVkPSEwLHRoaXMudXNlckRhdGE9e30sdGhpcy52ZXJzaW9uPTB9ZnVuY3Rpb24ga250KHQpe3ludC5jYWxsKHRoaXMpLHRoaXMudHlwZT0iTWVzaEJhc2ljTWF0ZXJpYWwiLHRoaXMuY29sb3I9bmV3IE9udCgxNjc3NzIxNSksdGhpcy5tYXA9bnVsbCx0aGlzLmxpZ2h0TWFwPW51bGwsdGhpcy5saWdodE1hcEludGVuc2l0eT0xLHRoaXMuYW9NYXA9bnVsbCx0aGlzLmFvTWFwSW50ZW5zaXR5PTEsdGhpcy5zcGVjdWxhck1hcD1udWxsLHRoaXMuYWxwaGFNYXA9bnVsbCx0aGlzLmVudk1hcD1udWxsLHRoaXMuY29tYmluZT0wLHRoaXMucmVmbGVjdGl2aXR5PTEsdGhpcy5yZWZyYWN0aW9uUmF0aW89Ljk4LHRoaXMud2lyZWZyYW1lPSExLHRoaXMud2lyZWZyYW1lTGluZXdpZHRoPTEsdGhpcy53aXJlZnJhbWVMaW5lY2FwPSJyb3VuZCIsdGhpcy53aXJlZnJhbWVMaW5lam9pbj0icm91bmQiLHRoaXMuc2tpbm5pbmc9ITEsdGhpcy5tb3JwaFRhcmdldHM9ITEsdGhpcy5zZXRWYWx1ZXModCl9eW50LnByb3RvdHlwZT1PYmplY3QuYXNzaWduKE9iamVjdC5jcmVhdGUoQjkucHJvdG90eXBlKSx7Y29uc3RydWN0b3I6eW50LGlzTWF0ZXJpYWw6ITAsb25CZWZvcmVDb21waWxlOmZ1bmN0aW9uKCl7fSxjdXN0b21Qcm9ncmFtQ2FjaGVLZXk6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5vbkJlZm9yZUNvbXBpbGUudG9TdHJpbmcoKX0sc2V0VmFsdWVzOmZ1bmN0aW9uKHQpe2lmKHZvaWQgMCE9PXQpZm9yKGNvbnN0IG4gaW4gdCl7Y29uc3QgZT10W25dO2lmKHZvaWQgMD09PWUpe2NvbnNvbGUud2FybigiVEhSRUUuTWF0ZXJpYWw6ICciK24rIicgcGFyYW1ldGVyIGlzIHVuZGVmaW5lZC4iKTtjb250aW51ZX1pZigic2hhZGluZyI9PT1uKXtjb25zb2xlLndhcm4oIlRIUkVFLiIrdGhpcy50eXBlKyI6IC5zaGFkaW5nIGhhcyBiZWVuIHJlbW92ZWQuIFVzZSB0aGUgYm9vbGVhbiAuZmxhdFNoYWRpbmcgaW5zdGVhZC4iKSx0aGlzLmZsYXRTaGFkaW5nPTE9PT1lO2NvbnRpbnVlfWNvbnN0IGE9dGhpc1tuXTt2b2lkIDAhPT1hP2EmJmEuaXNDb2xvcj9hLnNldChlKTphJiZhLmlzVmVjdG9yMyYmZSYmZS5pc1ZlY3RvcjM/YS5jb3B5KGUpOnRoaXNbbl09ZTpjb25zb2xlLndhcm4oIlRIUkVFLiIrdGhpcy50eXBlKyI6ICciK24rIicgaXMgbm90IGEgcHJvcGVydHkgb2YgdGhpcyBtYXRlcmlhbC4iKX19LHRvSlNPTjpmdW5jdGlvbih0KXtjb25zdCBuPXZvaWQgMD09PXR8fCJzdHJpbmciPT10eXBlb2YgdDtuJiYodD17dGV4dHVyZXM6e30saW1hZ2VzOnt9fSk7Y29uc3QgZT17bWV0YWRhdGE6e3ZlcnNpb246NC41LHR5cGU6Ik1hdGVyaWFsIixnZW5lcmF0b3I6Ik1hdGVyaWFsLnRvSlNPTiJ9fTtmdW5jdGlvbiBhKHQpe2NvbnN0IG49W107Zm9yKGNvbnN0IGUgaW4gdCl7Y29uc3QgYT10W2VdO2RlbGV0ZSBhLm1ldGFkYXRhLG4ucHVzaChhKX1yZXR1cm4gbn1pZihlLnV1aWQ9dGhpcy51dWlkLGUudHlwZT10aGlzLnR5cGUsIiIhPT10aGlzLm5hbWUmJihlLm5hbWU9dGhpcy5uYW1lKSx0aGlzLmNvbG9yJiZ0aGlzLmNvbG9yLmlzQ29sb3ImJihlLmNvbG9yPXRoaXMuY29sb3IuZ2V0SGV4KCkpLHZvaWQgMCE9PXRoaXMucm91Z2huZXNzJiYoZS5yb3VnaG5lc3M9dGhpcy5yb3VnaG5lc3MpLHZvaWQgMCE9PXRoaXMubWV0YWxuZXNzJiYoZS5tZXRhbG5lc3M9dGhpcy5tZXRhbG5lc3MpLHRoaXMuc2hlZW4mJnRoaXMuc2hlZW4uaXNDb2xvciYmKGUuc2hlZW49dGhpcy5zaGVlbi5nZXRIZXgoKSksdGhpcy5lbWlzc2l2ZSYmdGhpcy5lbWlzc2l2ZS5pc0NvbG9yJiYoZS5lbWlzc2l2ZT10aGlzLmVtaXNzaXZlLmdldEhleCgpKSx0aGlzLmVtaXNzaXZlSW50ZW5zaXR5JiYxIT09dGhpcy5lbWlzc2l2ZUludGVuc2l0eSYmKGUuZW1pc3NpdmVJbnRlbnNpdHk9dGhpcy5lbWlzc2l2ZUludGVuc2l0eSksdGhpcy5zcGVjdWxhciYmdGhpcy5zcGVjdWxhci5pc0NvbG9yJiYoZS5zcGVjdWxhcj10aGlzLnNwZWN1bGFyLmdldEhleCgpKSx2b2lkIDAhPT10aGlzLnNoaW5pbmVzcyYmKGUuc2hpbmluZXNzPXRoaXMuc2hpbmluZXNzKSx2b2lkIDAhPT10aGlzLmNsZWFyY29hdCYmKGUuY2xlYXJjb2F0PXRoaXMuY2xlYXJjb2F0KSx2b2lkIDAhPT10aGlzLmNsZWFyY29hdFJvdWdobmVzcyYmKGUuY2xlYXJjb2F0Um91Z2huZXNzPXRoaXMuY2xlYXJjb2F0Um91Z2huZXNzKSx0aGlzLmNsZWFyY29hdE1hcCYmdGhpcy5jbGVhcmNvYXRNYXAuaXNUZXh0dXJlJiYoZS5jbGVhcmNvYXRNYXA9dGhpcy5jbGVhcmNvYXRNYXAudG9KU09OKHQpLnV1aWQpLHRoaXMuY2xlYXJjb2F0Um91Z2huZXNzTWFwJiZ0aGlzLmNsZWFyY29hdFJvdWdobmVzc01hcC5pc1RleHR1cmUmJihlLmNsZWFyY29hdFJvdWdobmVzc01hcD10aGlzLmNsZWFyY29hdFJvdWdobmVzc01hcC50b0pTT04odCkudXVpZCksdGhpcy5jbGVhcmNvYXROb3JtYWxNYXAmJnRoaXMuY2xlYXJjb2F0Tm9ybWFsTWFwLmlzVGV4dHVyZSYmKGUuY2xlYXJjb2F0Tm9ybWFsTWFwPXRoaXMuY2xlYXJjb2F0Tm9ybWFsTWFwLnRvSlNPTih0KS51dWlkLGUuY2xlYXJjb2F0Tm9ybWFsU2NhbGU9dGhpcy5jbGVhcmNvYXROb3JtYWxTY2FsZS50b0FycmF5KCkpLHRoaXMubWFwJiZ0aGlzLm1hcC5pc1RleHR1cmUmJihlLm1hcD10aGlzLm1hcC50b0pTT04odCkudXVpZCksdGhpcy5tYXRjYXAmJnRoaXMubWF0Y2FwLmlzVGV4dHVyZSYmKGUubWF0Y2FwPXRoaXMubWF0Y2FwLnRvSlNPTih0KS51dWlkKSx0aGlzLmFscGhhTWFwJiZ0aGlzLmFscGhhTWFwLmlzVGV4dHVyZSYmKGUuYWxwaGFNYXA9dGhpcy5hbHBoYU1hcC50b0pTT04odCkudXVpZCksdGhpcy5saWdodE1hcCYmdGhpcy5saWdodE1hcC5pc1RleHR1cmUmJihlLmxpZ2h0TWFwPXRoaXMubGlnaHRNYXAudG9KU09OKHQpLnV1aWQpLHRoaXMuYW9NYXAmJnRoaXMuYW9NYXAuaXNUZXh0dXJlJiYoZS5hb01hcD10aGlzLmFvTWFwLnRvSlNPTih0KS51dWlkLGUuYW9NYXBJbnRlbnNpdHk9dGhpcy5hb01hcEludGVuc2l0eSksdGhpcy5idW1wTWFwJiZ0aGlzLmJ1bXBNYXAuaXNUZXh0dXJlJiYoZS5idW1wTWFwPXRoaXMuYnVtcE1hcC50b0pTT04odCkudXVpZCxlLmJ1bXBTY2FsZT10aGlzLmJ1bXBTY2FsZSksdGhpcy5ub3JtYWxNYXAmJnRoaXMubm9ybWFsTWFwLmlzVGV4dHVyZSYmKGUubm9ybWFsTWFwPXRoaXMubm9ybWFsTWFwLnRvSlNPTih0KS51dWlkLGUubm9ybWFsTWFwVHlwZT10aGlzLm5vcm1hbE1hcFR5cGUsZS5ub3JtYWxTY2FsZT10aGlzLm5vcm1hbFNjYWxlLnRvQXJyYXkoKSksdGhpcy5kaXNwbGFjZW1lbnRNYXAmJnRoaXMuZGlzcGxhY2VtZW50TWFwLmlzVGV4dHVyZSYmKGUuZGlzcGxhY2VtZW50TWFwPXRoaXMuZGlzcGxhY2VtZW50TWFwLnRvSlNPTih0KS51dWlkLGUuZGlzcGxhY2VtZW50U2NhbGU9dGhpcy5kaXNwbGFjZW1lbnRTY2FsZSxlLmRpc3BsYWNlbWVudEJpYXM9dGhpcy5kaXNwbGFjZW1lbnRCaWFzKSx0aGlzLnJvdWdobmVzc01hcCYmdGhpcy5yb3VnaG5lc3NNYXAuaXNUZXh0dXJlJiYoZS5yb3VnaG5lc3NNYXA9dGhpcy5yb3VnaG5lc3NNYXAudG9KU09OKHQpLnV1aWQpLHRoaXMubWV0YWxuZXNzTWFwJiZ0aGlzLm1ldGFsbmVzc01hcC5pc1RleHR1cmUmJihlLm1ldGFsbmVzc01hcD10aGlzLm1ldGFsbmVzc01hcC50b0pTT04odCkudXVpZCksdGhpcy5lbWlzc2l2ZU1hcCYmdGhpcy5lbWlzc2l2ZU1hcC5pc1RleHR1cmUmJihlLmVtaXNzaXZlTWFwPXRoaXMuZW1pc3NpdmVNYXAudG9KU09OKHQpLnV1aWQpLHRoaXMuc3BlY3VsYXJNYXAmJnRoaXMuc3BlY3VsYXJNYXAuaXNUZXh0dXJlJiYoZS5zcGVjdWxhck1hcD10aGlzLnNwZWN1bGFyTWFwLnRvSlNPTih0KS51dWlkKSx0aGlzLmVudk1hcCYmdGhpcy5lbnZNYXAuaXNUZXh0dXJlJiYoZS5lbnZNYXA9dGhpcy5lbnZNYXAudG9KU09OKHQpLnV1aWQsZS5yZWZsZWN0aXZpdHk9dGhpcy5yZWZsZWN0aXZpdHksZS5yZWZyYWN0aW9uUmF0aW89dGhpcy5yZWZyYWN0aW9uUmF0aW8sdm9pZCAwIT09dGhpcy5jb21iaW5lJiYoZS5jb21iaW5lPXRoaXMuY29tYmluZSksdm9pZCAwIT09dGhpcy5lbnZNYXBJbnRlbnNpdHkmJihlLmVudk1hcEludGVuc2l0eT10aGlzLmVudk1hcEludGVuc2l0eSkpLHRoaXMuZ3JhZGllbnRNYXAmJnRoaXMuZ3JhZGllbnRNYXAuaXNUZXh0dXJlJiYoZS5ncmFkaWVudE1hcD10aGlzLmdyYWRpZW50TWFwLnRvSlNPTih0KS51dWlkKSx2b2lkIDAhPT10aGlzLnNpemUmJihlLnNpemU9dGhpcy5zaXplKSx2b2lkIDAhPT10aGlzLnNpemVBdHRlbnVhdGlvbiYmKGUuc2l6ZUF0dGVudWF0aW9uPXRoaXMuc2l6ZUF0dGVudWF0aW9uKSwxIT09dGhpcy5ibGVuZGluZyYmKGUuYmxlbmRpbmc9dGhpcy5ibGVuZGluZyksITA9PT10aGlzLmZsYXRTaGFkaW5nJiYoZS5mbGF0U2hhZGluZz10aGlzLmZsYXRTaGFkaW5nKSwwIT09dGhpcy5zaWRlJiYoZS5zaWRlPXRoaXMuc2lkZSksdGhpcy52ZXJ0ZXhDb2xvcnMmJihlLnZlcnRleENvbG9ycz0hMCksdGhpcy5vcGFjaXR5PDEmJihlLm9wYWNpdHk9dGhpcy5vcGFjaXR5KSwhMD09PXRoaXMudHJhbnNwYXJlbnQmJihlLnRyYW5zcGFyZW50PXRoaXMudHJhbnNwYXJlbnQpLGUuZGVwdGhGdW5jPXRoaXMuZGVwdGhGdW5jLGUuZGVwdGhUZXN0PXRoaXMuZGVwdGhUZXN0LGUuZGVwdGhXcml0ZT10aGlzLmRlcHRoV3JpdGUsZS5zdGVuY2lsV3JpdGU9dGhpcy5zdGVuY2lsV3JpdGUsZS5zdGVuY2lsV3JpdGVNYXNrPXRoaXMuc3RlbmNpbFdyaXRlTWFzayxlLnN0ZW5jaWxGdW5jPXRoaXMuc3RlbmNpbEZ1bmMsZS5zdGVuY2lsUmVmPXRoaXMuc3RlbmNpbFJlZixlLnN0ZW5jaWxGdW5jTWFzaz10aGlzLnN0ZW5jaWxGdW5jTWFzayxlLnN0ZW5jaWxGYWlsPXRoaXMuc3RlbmNpbEZhaWwsZS5zdGVuY2lsWkZhaWw9dGhpcy5zdGVuY2lsWkZhaWwsZS5zdGVuY2lsWlBhc3M9dGhpcy5zdGVuY2lsWlBhc3MsdGhpcy5yb3RhdGlvbiYmMCE9PXRoaXMucm90YXRpb24mJihlLnJvdGF0aW9uPXRoaXMucm90YXRpb24pLCEwPT09dGhpcy5wb2x5Z29uT2Zmc2V0JiYoZS5wb2x5Z29uT2Zmc2V0PSEwKSwwIT09dGhpcy5wb2x5Z29uT2Zmc2V0RmFjdG9yJiYoZS5wb2x5Z29uT2Zmc2V0RmFjdG9yPXRoaXMucG9seWdvbk9mZnNldEZhY3RvciksMCE9PXRoaXMucG9seWdvbk9mZnNldFVuaXRzJiYoZS5wb2x5Z29uT2Zmc2V0VW5pdHM9dGhpcy5wb2x5Z29uT2Zmc2V0VW5pdHMpLHRoaXMubGluZXdpZHRoJiYxIT09dGhpcy5saW5ld2lkdGgmJihlLmxpbmV3aWR0aD10aGlzLmxpbmV3aWR0aCksdm9pZCAwIT09dGhpcy5kYXNoU2l6ZSYmKGUuZGFzaFNpemU9dGhpcy5kYXNoU2l6ZSksdm9pZCAwIT09dGhpcy5nYXBTaXplJiYoZS5nYXBTaXplPXRoaXMuZ2FwU2l6ZSksdm9pZCAwIT09dGhpcy5zY2FsZSYmKGUuc2NhbGU9dGhpcy5zY2FsZSksITA9PT10aGlzLmRpdGhlcmluZyYmKGUuZGl0aGVyaW5nPSEwKSx0aGlzLmFscGhhVGVzdD4wJiYoZS5hbHBoYVRlc3Q9dGhpcy5hbHBoYVRlc3QpLCEwPT09dGhpcy5wcmVtdWx0aXBsaWVkQWxwaGEmJihlLnByZW11bHRpcGxpZWRBbHBoYT10aGlzLnByZW11bHRpcGxpZWRBbHBoYSksITA9PT10aGlzLndpcmVmcmFtZSYmKGUud2lyZWZyYW1lPXRoaXMud2lyZWZyYW1lKSx0aGlzLndpcmVmcmFtZUxpbmV3aWR0aD4xJiYoZS53aXJlZnJhbWVMaW5ld2lkdGg9dGhpcy53aXJlZnJhbWVMaW5ld2lkdGgpLCJyb3VuZCIhPT10aGlzLndpcmVmcmFtZUxpbmVjYXAmJihlLndpcmVmcmFtZUxpbmVjYXA9dGhpcy53aXJlZnJhbWVMaW5lY2FwKSwicm91bmQiIT09dGhpcy53aXJlZnJhbWVMaW5lam9pbiYmKGUud2lyZWZyYW1lTGluZWpvaW49dGhpcy53aXJlZnJhbWVMaW5lam9pbiksITA9PT10aGlzLm1vcnBoVGFyZ2V0cyYmKGUubW9ycGhUYXJnZXRzPSEwKSwhMD09PXRoaXMubW9ycGhOb3JtYWxzJiYoZS5tb3JwaE5vcm1hbHM9ITApLCEwPT09dGhpcy5za2lubmluZyYmKGUuc2tpbm5pbmc9ITApLCExPT09dGhpcy52aXNpYmxlJiYoZS52aXNpYmxlPSExKSwhMT09PXRoaXMudG9uZU1hcHBlZCYmKGUudG9uZU1hcHBlZD0hMSksInt9IiE9PUpTT04uc3RyaW5naWZ5KHRoaXMudXNlckRhdGEpJiYoZS51c2VyRGF0YT10aGlzLnVzZXJEYXRhKSxuKXtjb25zdCBuPWEodC50ZXh0dXJlcyksbz1hKHQuaW1hZ2VzKTtuLmxlbmd0aD4wJiYoZS50ZXh0dXJlcz1uKSxvLmxlbmd0aD4wJiYoZS5pbWFnZXM9byl9cmV0dXJuIGV9LGNsb25lOmZ1bmN0aW9uKCl7cmV0dXJuKG5ldyB0aGlzLmNvbnN0cnVjdG9yKS5jb3B5KHRoaXMpfSxjb3B5OmZ1bmN0aW9uKHQpe3RoaXMubmFtZT10Lm5hbWUsdGhpcy5mb2c9dC5mb2csdGhpcy5ibGVuZGluZz10LmJsZW5kaW5nLHRoaXMuc2lkZT10LnNpZGUsdGhpcy5mbGF0U2hhZGluZz10LmZsYXRTaGFkaW5nLHRoaXMudmVydGV4Q29sb3JzPXQudmVydGV4Q29sb3JzLHRoaXMub3BhY2l0eT10Lm9wYWNpdHksdGhpcy50cmFuc3BhcmVudD10LnRyYW5zcGFyZW50LHRoaXMuYmxlbmRTcmM9dC5ibGVuZFNyYyx0aGlzLmJsZW5kRHN0PXQuYmxlbmREc3QsdGhpcy5ibGVuZEVxdWF0aW9uPXQuYmxlbmRFcXVhdGlvbix0aGlzLmJsZW5kU3JjQWxwaGE9dC5ibGVuZFNyY0FscGhhLHRoaXMuYmxlbmREc3RBbHBoYT10LmJsZW5kRHN0QWxwaGEsdGhpcy5ibGVuZEVxdWF0aW9uQWxwaGE9dC5ibGVuZEVxdWF0aW9uQWxwaGEsdGhpcy5kZXB0aEZ1bmM9dC5kZXB0aEZ1bmMsdGhpcy5kZXB0aFRlc3Q9dC5kZXB0aFRlc3QsdGhpcy5kZXB0aFdyaXRlPXQuZGVwdGhXcml0ZSx0aGlzLnN0ZW5jaWxXcml0ZU1hc2s9dC5zdGVuY2lsV3JpdGVNYXNrLHRoaXMuc3RlbmNpbEZ1bmM9dC5zdGVuY2lsRnVuYyx0aGlzLnN0ZW5jaWxSZWY9dC5zdGVuY2lsUmVmLHRoaXMuc3RlbmNpbEZ1bmNNYXNrPXQuc3RlbmNpbEZ1bmNNYXNrLHRoaXMuc3RlbmNpbEZhaWw9dC5zdGVuY2lsRmFpbCx0aGlzLnN0ZW5jaWxaRmFpbD10LnN0ZW5jaWxaRmFpbCx0aGlzLnN0ZW5jaWxaUGFzcz10LnN0ZW5jaWxaUGFzcyx0aGlzLnN0ZW5jaWxXcml0ZT10LnN0ZW5jaWxXcml0ZTtjb25zdCBuPXQuY2xpcHBpbmdQbGFuZXM7bGV0IGU9bnVsbDtpZihudWxsIT09bil7Y29uc3QgdD1uLmxlbmd0aDtlPW5ldyBBcnJheSh0KTtmb3IobGV0IGE9MDthIT09dDsrK2EpZVthXT1uW2FdLmNsb25lKCl9cmV0dXJuIHRoaXMuY2xpcHBpbmdQbGFuZXM9ZSx0aGlzLmNsaXBJbnRlcnNlY3Rpb249dC5jbGlwSW50ZXJzZWN0aW9uLHRoaXMuY2xpcFNoYWRvd3M9dC5jbGlwU2hhZG93cyx0aGlzLnNoYWRvd1NpZGU9dC5zaGFkb3dTaWRlLHRoaXMuY29sb3JXcml0ZT10LmNvbG9yV3JpdGUsdGhpcy5wcmVjaXNpb249dC5wcmVjaXNpb24sdGhpcy5wb2x5Z29uT2Zmc2V0PXQucG9seWdvbk9mZnNldCx0aGlzLnBvbHlnb25PZmZzZXRGYWN0b3I9dC5wb2x5Z29uT2Zmc2V0RmFjdG9yLHRoaXMucG9seWdvbk9mZnNldFVuaXRzPXQucG9seWdvbk9mZnNldFVuaXRzLHRoaXMuZGl0aGVyaW5nPXQuZGl0aGVyaW5nLHRoaXMuYWxwaGFUZXN0PXQuYWxwaGFUZXN0LHRoaXMucHJlbXVsdGlwbGllZEFscGhhPXQucHJlbXVsdGlwbGllZEFscGhhLHRoaXMudmlzaWJsZT10LnZpc2libGUsdGhpcy50b25lTWFwcGVkPXQudG9uZU1hcHBlZCx0aGlzLnVzZXJEYXRhPUpTT04ucGFyc2UoSlNPTi5zdHJpbmdpZnkodC51c2VyRGF0YSkpLHRoaXN9LGRpc3Bvc2U6ZnVuY3Rpb24oKXt0aGlzLmRpc3BhdGNoRXZlbnQoe3R5cGU6ImRpc3Bvc2UifSl9fSksT2JqZWN0LmRlZmluZVByb3BlcnR5KHludC5wcm90b3R5cGUsIm5lZWRzVXBkYXRlIix7c2V0OmZ1bmN0aW9uKHQpeyEwPT09dCYmdGhpcy52ZXJzaW9uKyt9fSksKGtudC5wcm90b3R5cGU9T2JqZWN0LmNyZWF0ZSh5bnQucHJvdG90eXBlKSkuY29uc3RydWN0b3I9a250LGtudC5wcm90b3R5cGUuaXNNZXNoQmFzaWNNYXRlcmlhbD0hMCxrbnQucHJvdG90eXBlLmNvcHk9ZnVuY3Rpb24odCl7cmV0dXJuIHludC5wcm90b3R5cGUuY29weS5jYWxsKHRoaXMsdCksdGhpcy5jb2xvci5jb3B5KHQuY29sb3IpLHRoaXMubWFwPXQubWFwLHRoaXMubGlnaHRNYXA9dC5saWdodE1hcCx0aGlzLmxpZ2h0TWFwSW50ZW5zaXR5PXQubGlnaHRNYXBJbnRlbnNpdHksdGhpcy5hb01hcD10LmFvTWFwLHRoaXMuYW9NYXBJbnRlbnNpdHk9dC5hb01hcEludGVuc2l0eSx0aGlzLnNwZWN1bGFyTWFwPXQuc3BlY3VsYXJNYXAsdGhpcy5hbHBoYU1hcD10LmFscGhhTWFwLHRoaXMuZW52TWFwPXQuZW52TWFwLHRoaXMuY29tYmluZT10LmNvbWJpbmUsdGhpcy5yZWZsZWN0aXZpdHk9dC5yZWZsZWN0aXZpdHksdGhpcy5yZWZyYWN0aW9uUmF0aW89dC5yZWZyYWN0aW9uUmF0aW8sdGhpcy53aXJlZnJhbWU9dC53aXJlZnJhbWUsdGhpcy53aXJlZnJhbWVMaW5ld2lkdGg9dC53aXJlZnJhbWVMaW5ld2lkdGgsdGhpcy53aXJlZnJhbWVMaW5lY2FwPXQud2lyZWZyYW1lTGluZWNhcCx0aGlzLndpcmVmcmFtZUxpbmVqb2luPXQud2lyZWZyYW1lTGluZWpvaW4sdGhpcy5za2lubmluZz10LnNraW5uaW5nLHRoaXMubW9ycGhUYXJnZXRzPXQubW9ycGhUYXJnZXRzLHRoaXN9O2NvbnN0IHZudD1uZXcgdHR0LHdudD1uZXcgVzk7ZnVuY3Rpb24gU250KHQsbixlKXtpZihBcnJheS5pc0FycmF5KHQpKXRocm93IG5ldyBUeXBlRXJyb3IoIlRIUkVFLkJ1ZmZlckF0dHJpYnV0ZTogYXJyYXkgc2hvdWxkIGJlIGEgVHlwZWQgQXJyYXkuIik7dGhpcy5uYW1lPSIiLHRoaXMuYXJyYXk9dCx0aGlzLml0ZW1TaXplPW4sdGhpcy5jb3VudD12b2lkIDAhPT10P3QubGVuZ3RoL246MCx0aGlzLm5vcm1hbGl6ZWQ9ITA9PT1lLHRoaXMudXNhZ2U9RjksdGhpcy51cGRhdGVSYW5nZT17b2Zmc2V0OjAsY291bnQ6LTF9LHRoaXMudmVyc2lvbj0wfWZ1bmN0aW9uIEVudCh0LG4sZSl7U250LmNhbGwodGhpcyxuZXcgSW50OEFycmF5KHQpLG4sZSl9ZnVuY3Rpb24gQW50KHQsbixlKXtTbnQuY2FsbCh0aGlzLG5ldyBVaW50OEFycmF5KHQpLG4sZSl9ZnVuY3Rpb24gem50KHQsbixlKXtTbnQuY2FsbCh0aGlzLG5ldyBVaW50OENsYW1wZWRBcnJheSh0KSxuLGUpfWZ1bmN0aW9uIFJudCh0LG4sZSl7U250LmNhbGwodGhpcyxuZXcgSW50MTZBcnJheSh0KSxuLGUpfWZ1bmN0aW9uIFRudCh0LG4sZSl7U250LmNhbGwodGhpcyxuZXcgVWludDE2QXJyYXkodCksbixlKX1mdW5jdGlvbiBEbnQodCxuLGUpe1NudC5jYWxsKHRoaXMsbmV3IEludDMyQXJyYXkodCksbixlKX1mdW5jdGlvbiBJbnQodCxuLGUpe1NudC5jYWxsKHRoaXMsbmV3IFVpbnQzMkFycmF5KHQpLG4sZSl9ZnVuY3Rpb24gTm50KHQsbixlKXtTbnQuY2FsbCh0aGlzLG5ldyBVaW50MTZBcnJheSh0KSxuLGUpfWZ1bmN0aW9uIEZudCh0LG4sZSl7U250LmNhbGwodGhpcyxuZXcgRmxvYXQzMkFycmF5KHQpLG4sZSl9ZnVuY3Rpb24gTG50KHQsbixlKXtTbnQuY2FsbCh0aGlzLG5ldyBGbG9hdDY0QXJyYXkodCksbixlKX1mdW5jdGlvbiBIbnQodCl7aWYoMD09PXQubGVuZ3RoKXJldHVybi0xLzA7bGV0IG49dFswXTtmb3IobGV0IGU9MSxhPXQubGVuZ3RoO2U8YTsrK2UpdFtlXT5uJiYobj10W2VdKTtyZXR1cm4gbn1PYmplY3QuZGVmaW5lUHJvcGVydHkoU250LnByb3RvdHlwZSwibmVlZHNVcGRhdGUiLHtzZXQ6ZnVuY3Rpb24odCl7ITA9PT10JiZ0aGlzLnZlcnNpb24rK319KSxPYmplY3QuYXNzaWduKFNudC5wcm90b3R5cGUse2lzQnVmZmVyQXR0cmlidXRlOiEwLG9uVXBsb2FkQ2FsbGJhY2s6ZnVuY3Rpb24oKXt9LHNldFVzYWdlOmZ1bmN0aW9uKHQpe3JldHVybiB0aGlzLnVzYWdlPXQsdGhpc30sY29weTpmdW5jdGlvbih0KXtyZXR1cm4gdGhpcy5uYW1lPXQubmFtZSx0aGlzLmFycmF5PW5ldyB0LmFycmF5LmNvbnN0cnVjdG9yKHQuYXJyYXkpLHRoaXMuaXRlbVNpemU9dC5pdGVtU2l6ZSx0aGlzLmNvdW50PXQuY291bnQsdGhpcy5ub3JtYWxpemVkPXQubm9ybWFsaXplZCx0aGlzLnVzYWdlPXQudXNhZ2UsdGhpc30sY29weUF0OmZ1bmN0aW9uKHQsbixlKXt0Kj10aGlzLml0ZW1TaXplLGUqPW4uaXRlbVNpemU7Zm9yKGxldCBhPTAsbz10aGlzLml0ZW1TaXplO2E8bzthKyspdGhpcy5hcnJheVt0K2FdPW4uYXJyYXlbZSthXTtyZXR1cm4gdGhpc30sY29weUFycmF5OmZ1bmN0aW9uKHQpe3JldHVybiB0aGlzLmFycmF5LnNldCh0KSx0aGlzfSxjb3B5Q29sb3JzQXJyYXk6ZnVuY3Rpb24odCl7Y29uc3Qgbj10aGlzLmFycmF5O2xldCBlPTA7Zm9yKGxldCBhPTAsbz10Lmxlbmd0aDthPG87YSsrKXtsZXQgbz10W2FdO3ZvaWQgMD09PW8mJihjb25zb2xlLndhcm4oIlRIUkVFLkJ1ZmZlckF0dHJpYnV0ZS5jb3B5Q29sb3JzQXJyYXkoKTogY29sb3IgaXMgdW5kZWZpbmVkIixhKSxvPW5ldyBPbnQpLG5bZSsrXT1vLnIsbltlKytdPW8uZyxuW2UrK109by5ifXJldHVybiB0aGlzfSxjb3B5VmVjdG9yMnNBcnJheTpmdW5jdGlvbih0KXtjb25zdCBuPXRoaXMuYXJyYXk7bGV0IGU9MDtmb3IobGV0IGE9MCxvPXQubGVuZ3RoO2E8bzthKyspe2xldCBvPXRbYV07dm9pZCAwPT09byYmKGNvbnNvbGUud2FybigiVEhSRUUuQnVmZmVyQXR0cmlidXRlLmNvcHlWZWN0b3Iyc0FycmF5KCk6IHZlY3RvciBpcyB1bmRlZmluZWQiLGEpLG89bmV3IFc5KSxuW2UrK109by54LG5bZSsrXT1vLnl9cmV0dXJuIHRoaXN9LGNvcHlWZWN0b3Izc0FycmF5OmZ1bmN0aW9uKHQpe2NvbnN0IG49dGhpcy5hcnJheTtsZXQgZT0wO2ZvcihsZXQgYT0wLG89dC5sZW5ndGg7YTxvO2ErKyl7bGV0IG89dFthXTt2b2lkIDA9PT1vJiYoY29uc29sZS53YXJuKCJUSFJFRS5CdWZmZXJBdHRyaWJ1dGUuY29weVZlY3RvcjNzQXJyYXkoKTogdmVjdG9yIGlzIHVuZGVmaW5lZCIsYSksbz1uZXcgdHR0KSxuW2UrK109by54LG5bZSsrXT1vLnksbltlKytdPW8uen1yZXR1cm4gdGhpc30sY29weVZlY3RvcjRzQXJyYXk6ZnVuY3Rpb24odCl7Y29uc3Qgbj10aGlzLmFycmF5O2xldCBlPTA7Zm9yKGxldCBhPTAsbz10Lmxlbmd0aDthPG87YSsrKXtsZXQgbz10W2FdO3ZvaWQgMD09PW8mJihjb25zb2xlLndhcm4oIlRIUkVFLkJ1ZmZlckF0dHJpYnV0ZS5jb3B5VmVjdG9yNHNBcnJheSgpOiB2ZWN0b3IgaXMgdW5kZWZpbmVkIixhKSxvPW5ldyBROSksbltlKytdPW8ueCxuW2UrK109by55LG5bZSsrXT1vLnosbltlKytdPW8ud31yZXR1cm4gdGhpc30sYXBwbHlNYXRyaXgzOmZ1bmN0aW9uKHQpe2lmKDI9PT10aGlzLml0ZW1TaXplKWZvcihsZXQgbj0wLGU9dGhpcy5jb3VudDtuPGU7bisrKXdudC5mcm9tQnVmZmVyQXR0cmlidXRlKHRoaXMsbiksd250LmFwcGx5TWF0cml4Myh0KSx0aGlzLnNldFhZKG4sd250Lngsd250LnkpO2Vsc2UgaWYoMz09PXRoaXMuaXRlbVNpemUpZm9yKGxldCBuPTAsZT10aGlzLmNvdW50O248ZTtuKyspdm50LmZyb21CdWZmZXJBdHRyaWJ1dGUodGhpcyxuKSx2bnQuYXBwbHlNYXRyaXgzKHQpLHRoaXMuc2V0WFlaKG4sdm50Lngsdm50Lnksdm50LnopO3JldHVybiB0aGlzfSxhcHBseU1hdHJpeDQ6ZnVuY3Rpb24odCl7Zm9yKGxldCBuPTAsZT10aGlzLmNvdW50O248ZTtuKyspdm50Lng9dGhpcy5nZXRYKG4pLHZudC55PXRoaXMuZ2V0WShuKSx2bnQuej10aGlzLmdldFoobiksdm50LmFwcGx5TWF0cml4NCh0KSx0aGlzLnNldFhZWihuLHZudC54LHZudC55LHZudC56KTtyZXR1cm4gdGhpc30sYXBwbHlOb3JtYWxNYXRyaXg6ZnVuY3Rpb24odCl7Zm9yKGxldCBuPTAsZT10aGlzLmNvdW50O248ZTtuKyspdm50Lng9dGhpcy5nZXRYKG4pLHZudC55PXRoaXMuZ2V0WShuKSx2bnQuej10aGlzLmdldFoobiksdm50LmFwcGx5Tm9ybWFsTWF0cml4KHQpLHRoaXMuc2V0WFlaKG4sdm50Lngsdm50Lnksdm50LnopO3JldHVybiB0aGlzfSx0cmFuc2Zvcm1EaXJlY3Rpb246ZnVuY3Rpb24odCl7Zm9yKGxldCBuPTAsZT10aGlzLmNvdW50O248ZTtuKyspdm50Lng9dGhpcy5nZXRYKG4pLHZudC55PXRoaXMuZ2V0WShuKSx2bnQuej10aGlzLmdldFoobiksdm50LnRyYW5zZm9ybURpcmVjdGlvbih0KSx0aGlzLnNldFhZWihuLHZudC54LHZudC55LHZudC56KTtyZXR1cm4gdGhpc30sc2V0OmZ1bmN0aW9uKHQsbj0wKXtyZXR1cm4gdGhpcy5hcnJheS5zZXQodCxuKSx0aGlzfSxnZXRYOmZ1bmN0aW9uKHQpe3JldHVybiB0aGlzLmFycmF5W3QqdGhpcy5pdGVtU2l6ZV19LHNldFg6ZnVuY3Rpb24odCxuKXtyZXR1cm4gdGhpcy5hcnJheVt0KnRoaXMuaXRlbVNpemVdPW4sdGhpc30sZ2V0WTpmdW5jdGlvbih0KXtyZXR1cm4gdGhpcy5hcnJheVt0KnRoaXMuaXRlbVNpemUrMV19LHNldFk6ZnVuY3Rpb24odCxuKXtyZXR1cm4gdGhpcy5hcnJheVt0KnRoaXMuaXRlbVNpemUrMV09bix0aGlzfSxnZXRaOmZ1bmN0aW9uKHQpe3JldHVybiB0aGlzLmFycmF5W3QqdGhpcy5pdGVtU2l6ZSsyXX0sc2V0WjpmdW5jdGlvbih0LG4pe3JldHVybiB0aGlzLmFycmF5W3QqdGhpcy5pdGVtU2l6ZSsyXT1uLHRoaXN9LGdldFc6ZnVuY3Rpb24odCl7cmV0dXJuIHRoaXMuYXJyYXlbdCp0aGlzLml0ZW1TaXplKzNdfSxzZXRXOmZ1bmN0aW9uKHQsbil7cmV0dXJuIHRoaXMuYXJyYXlbdCp0aGlzLml0ZW1TaXplKzNdPW4sdGhpc30sc2V0WFk6ZnVuY3Rpb24odCxuLGUpe3JldHVybiB0aGlzLmFycmF5WzArKHQqPXRoaXMuaXRlbVNpemUpXT1uLHRoaXMuYXJyYXlbdCsxXT1lLHRoaXN9LHNldFhZWjpmdW5jdGlvbih0LG4sZSxhKXtyZXR1cm4gdGhpcy5hcnJheVswKyh0Kj10aGlzLml0ZW1TaXplKV09bix0aGlzLmFycmF5W3QrMV09ZSx0aGlzLmFycmF5W3QrMl09YSx0aGlzfSxzZXRYWVpXOmZ1bmN0aW9uKHQsbixlLGEsbyl7cmV0dXJuIHRoaXMuYXJyYXlbMCsodCo9dGhpcy5pdGVtU2l6ZSldPW4sdGhpcy5hcnJheVt0KzFdPWUsdGhpcy5hcnJheVt0KzJdPWEsdGhpcy5hcnJheVt0KzNdPW8sdGhpc30sb25VcGxvYWQ6ZnVuY3Rpb24odCl7cmV0dXJuIHRoaXMub25VcGxvYWRDYWxsYmFjaz10LHRoaXN9LGNsb25lOmZ1bmN0aW9uKCl7cmV0dXJuIG5ldyB0aGlzLmNvbnN0cnVjdG9yKHRoaXMuYXJyYXksdGhpcy5pdGVtU2l6ZSkuY29weSh0aGlzKX0sdG9KU09OOmZ1bmN0aW9uKCl7cmV0dXJue2l0ZW1TaXplOnRoaXMuaXRlbVNpemUsdHlwZTp0aGlzLmFycmF5LmNvbnN0cnVjdG9yLm5hbWUsYXJyYXk6QXJyYXkucHJvdG90eXBlLnNsaWNlLmNhbGwodGhpcy5hcnJheSksbm9ybWFsaXplZDp0aGlzLm5vcm1hbGl6ZWR9fX0pLChFbnQucHJvdG90eXBlPU9iamVjdC5jcmVhdGUoU250LnByb3RvdHlwZSkpLmNvbnN0cnVjdG9yPUVudCwoQW50LnByb3RvdHlwZT1PYmplY3QuY3JlYXRlKFNudC5wcm90b3R5cGUpKS5jb25zdHJ1Y3Rvcj1BbnQsKHpudC5wcm90b3R5cGU9T2JqZWN0LmNyZWF0ZShTbnQucHJvdG90eXBlKSkuY29uc3RydWN0b3I9em50LChSbnQucHJvdG90eXBlPU9iamVjdC5jcmVhdGUoU250LnByb3RvdHlwZSkpLmNvbnN0cnVjdG9yPVJudCwoVG50LnByb3RvdHlwZT1PYmplY3QuY3JlYXRlKFNudC5wcm90b3R5cGUpKS5jb25zdHJ1Y3Rvcj1UbnQsKERudC5wcm90b3R5cGU9T2JqZWN0LmNyZWF0ZShTbnQucHJvdG90eXBlKSkuY29uc3RydWN0b3I9RG50LChJbnQucHJvdG90eXBlPU9iamVjdC5jcmVhdGUoU250LnByb3RvdHlwZSkpLmNvbnN0cnVjdG9yPUludCwoTm50LnByb3RvdHlwZT1PYmplY3QuY3JlYXRlKFNudC5wcm90b3R5cGUpKS5jb25zdHJ1Y3Rvcj1ObnQsTm50LnByb3RvdHlwZS5pc0Zsb2F0MTZCdWZmZXJBdHRyaWJ1dGU9ITAsKEZudC5wcm90b3R5cGU9T2JqZWN0LmNyZWF0ZShTbnQucHJvdG90eXBlKSkuY29uc3RydWN0b3I9Rm50LChMbnQucHJvdG90eXBlPU9iamVjdC5jcmVhdGUoU250LnByb3RvdHlwZSkpLmNvbnN0cnVjdG9yPUxudDtjb25zdCBCbnQ9e0ludDhBcnJheTpJbnQ4QXJyYXksVWludDhBcnJheTpVaW50OEFycmF5LFVpbnQ4Q2xhbXBlZEFycmF5OiJ1bmRlZmluZWQiIT10eXBlb2YgVWludDhDbGFtcGVkQXJyYXk/VWludDhDbGFtcGVkQXJyYXk6VWludDhBcnJheSxJbnQxNkFycmF5OkludDE2QXJyYXksVWludDE2QXJyYXk6VWludDE2QXJyYXksSW50MzJBcnJheTpJbnQzMkFycmF5LFVpbnQzMkFycmF5OlVpbnQzMkFycmF5LEZsb2F0MzJBcnJheTpGbG9hdDMyQXJyYXksRmxvYXQ2NEFycmF5OkZsb2F0NjRBcnJheX07ZnVuY3Rpb24gVm50KHQsbil7cmV0dXJuIG5ldyBCbnRbdF0obil9bGV0IGpudD0wO2NvbnN0IFVudD1uZXcgU3R0LFdudD1uZXcgJHR0LEdudD1uZXcgdHR0LFludD1uZXcgYXR0LHFudD1uZXcgYXR0LFpudD1uZXcgdHR0O2Z1bmN0aW9uIFhudCgpe09iamVjdC5kZWZpbmVQcm9wZXJ0eSh0aGlzLCJpZCIse3ZhbHVlOmpudCsrfSksdGhpcy51dWlkPVU5LmdlbmVyYXRlVVVJRCgpLHRoaXMubmFtZT0iIix0aGlzLnR5cGU9IkJ1ZmZlckdlb21ldHJ5Iix0aGlzLmluZGV4PW51bGwsdGhpcy5hdHRyaWJ1dGVzPXt9LHRoaXMubW9ycGhBdHRyaWJ1dGVzPXt9LHRoaXMubW9ycGhUYXJnZXRzUmVsYXRpdmU9ITEsdGhpcy5ncm91cHM9W10sdGhpcy5ib3VuZGluZ0JveD1udWxsLHRoaXMuYm91bmRpbmdTcGhlcmU9bnVsbCx0aGlzLmRyYXdSYW5nZT17c3RhcnQ6MCxjb3VudDoxLzB9LHRoaXMudXNlckRhdGE9e319WG50LnByb3RvdHlwZT1PYmplY3QuYXNzaWduKE9iamVjdC5jcmVhdGUoQjkucHJvdG90eXBlKSx7Y29uc3RydWN0b3I6WG50LGlzQnVmZmVyR2VvbWV0cnk6ITAsZ2V0SW5kZXg6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5pbmRleH0sc2V0SW5kZXg6ZnVuY3Rpb24odCl7cmV0dXJuIHRoaXMuaW5kZXg9QXJyYXkuaXNBcnJheSh0KT9uZXcoSG50KHQpPjY1NTM1P0ludDpUbnQpKHQsMSk6dCx0aGlzfSxnZXRBdHRyaWJ1dGU6ZnVuY3Rpb24odCl7cmV0dXJuIHRoaXMuYXR0cmlidXRlc1t0XX0sc2V0QXR0cmlidXRlOmZ1bmN0aW9uKHQsbil7cmV0dXJuIHRoaXMuYXR0cmlidXRlc1t0XT1uLHRoaXN9LGRlbGV0ZUF0dHJpYnV0ZTpmdW5jdGlvbih0KXtyZXR1cm4gZGVsZXRlIHRoaXMuYXR0cmlidXRlc1t0XSx0aGlzfSxoYXNBdHRyaWJ1dGU6ZnVuY3Rpb24odCl7cmV0dXJuIHZvaWQgMCE9PXRoaXMuYXR0cmlidXRlc1t0XX0sYWRkR3JvdXA6ZnVuY3Rpb24odCxuLGU9MCl7dGhpcy5ncm91cHMucHVzaCh7c3RhcnQ6dCxjb3VudDpuLG1hdGVyaWFsSW5kZXg6ZX0pfSxjbGVhckdyb3VwczpmdW5jdGlvbigpe3RoaXMuZ3JvdXBzPVtdfSxzZXREcmF3UmFuZ2U6ZnVuY3Rpb24odCxuKXt0aGlzLmRyYXdSYW5nZS5zdGFydD10LHRoaXMuZHJhd1JhbmdlLmNvdW50PW59LGFwcGx5TWF0cml4NDpmdW5jdGlvbih0KXtjb25zdCBuPXRoaXMuYXR0cmlidXRlcy5wb3NpdGlvbjt2b2lkIDAhPT1uJiYobi5hcHBseU1hdHJpeDQodCksbi5uZWVkc1VwZGF0ZT0hMCk7Y29uc3QgZT10aGlzLmF0dHJpYnV0ZXMubm9ybWFsO2lmKHZvaWQgMCE9PWUpe2NvbnN0IG49KG5ldyBHOSkuZ2V0Tm9ybWFsTWF0cml4KHQpO2UuYXBwbHlOb3JtYWxNYXRyaXgobiksZS5uZWVkc1VwZGF0ZT0hMH1jb25zdCBhPXRoaXMuYXR0cmlidXRlcy50YW5nZW50O3JldHVybiB2b2lkIDAhPT1hJiYoYS50cmFuc2Zvcm1EaXJlY3Rpb24odCksYS5uZWVkc1VwZGF0ZT0hMCksbnVsbCE9PXRoaXMuYm91bmRpbmdCb3gmJnRoaXMuY29tcHV0ZUJvdW5kaW5nQm94KCksbnVsbCE9PXRoaXMuYm91bmRpbmdTcGhlcmUmJnRoaXMuY29tcHV0ZUJvdW5kaW5nU3BoZXJlKCksdGhpc30scm90YXRlWDpmdW5jdGlvbih0KXtyZXR1cm4gVW50Lm1ha2VSb3RhdGlvblgodCksdGhpcy5hcHBseU1hdHJpeDQoVW50KSx0aGlzfSxyb3RhdGVZOmZ1bmN0aW9uKHQpe3JldHVybiBVbnQubWFrZVJvdGF0aW9uWSh0KSx0aGlzLmFwcGx5TWF0cml4NChVbnQpLHRoaXN9LHJvdGF0ZVo6ZnVuY3Rpb24odCl7cmV0dXJuIFVudC5tYWtlUm90YXRpb25aKHQpLHRoaXMuYXBwbHlNYXRyaXg0KFVudCksdGhpc30sdHJhbnNsYXRlOmZ1bmN0aW9uKHQsbixlKXtyZXR1cm4gVW50Lm1ha2VUcmFuc2xhdGlvbih0LG4sZSksdGhpcy5hcHBseU1hdHJpeDQoVW50KSx0aGlzfSxzY2FsZTpmdW5jdGlvbih0LG4sZSl7cmV0dXJuIFVudC5tYWtlU2NhbGUodCxuLGUpLHRoaXMuYXBwbHlNYXRyaXg0KFVudCksdGhpc30sbG9va0F0OmZ1bmN0aW9uKHQpe3JldHVybiBXbnQubG9va0F0KHQpLFdudC51cGRhdGVNYXRyaXgoKSx0aGlzLmFwcGx5TWF0cml4NChXbnQubWF0cml4KSx0aGlzfSxjZW50ZXI6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5jb21wdXRlQm91bmRpbmdCb3goKSx0aGlzLmJvdW5kaW5nQm94LmdldENlbnRlcihHbnQpLm5lZ2F0ZSgpLHRoaXMudHJhbnNsYXRlKEdudC54LEdudC55LEdudC56KSx0aGlzfSxzZXRGcm9tUG9pbnRzOmZ1bmN0aW9uKHQpe2NvbnN0IG49W107Zm9yKGxldCBlPTAsYT10Lmxlbmd0aDtlPGE7ZSsrKXtjb25zdCBhPXRbZV07bi5wdXNoKGEueCxhLnksYS56fHwwKX1yZXR1cm4gdGhpcy5zZXRBdHRyaWJ1dGUoInBvc2l0aW9uIixuZXcgRm50KG4sMykpLHRoaXN9LGNvbXB1dGVCb3VuZGluZ0JveDpmdW5jdGlvbigpe251bGw9PT10aGlzLmJvdW5kaW5nQm94JiYodGhpcy5ib3VuZGluZ0JveD1uZXcgYXR0KTtjb25zdCB0PXRoaXMuYXR0cmlidXRlcy5wb3NpdGlvbixuPXRoaXMubW9ycGhBdHRyaWJ1dGVzLnBvc2l0aW9uO2lmKHQmJnQuaXNHTEJ1ZmZlckF0dHJpYnV0ZSlyZXR1cm4gY29uc29sZS5lcnJvcignVEhSRUUuQnVmZmVyR2VvbWV0cnkuY29tcHV0ZUJvdW5kaW5nQm94KCk6IEdMQnVmZmVyQXR0cmlidXRlIHJlcXVpcmVzIGEgbWFudWFsIGJvdW5kaW5nIGJveC4gQWx0ZXJuYXRpdmVseSBzZXQgIm1lc2guZnJ1c3R1bUN1bGxlZCIgdG8gImZhbHNlIi4nLHRoaXMpLHZvaWQgdGhpcy5ib3VuZGluZ0JveC5zZXQobmV3IHR0dCgtMS8wLC0xLzAsLTEvMCksbmV3IHR0dCgxLzAsMS8wLDEvMCkpO2lmKHZvaWQgMCE9PXQpe2lmKHRoaXMuYm91bmRpbmdCb3guc2V0RnJvbUJ1ZmZlckF0dHJpYnV0ZSh0KSxuKWZvcihsZXQgdD0wLGU9bi5sZW5ndGg7dDxlO3QrKylZbnQuc2V0RnJvbUJ1ZmZlckF0dHJpYnV0ZShuW3RdKSx0aGlzLm1vcnBoVGFyZ2V0c1JlbGF0aXZlPyhabnQuYWRkVmVjdG9ycyh0aGlzLmJvdW5kaW5nQm94Lm1pbixZbnQubWluKSx0aGlzLmJvdW5kaW5nQm94LmV4cGFuZEJ5UG9pbnQoWm50KSxabnQuYWRkVmVjdG9ycyh0aGlzLmJvdW5kaW5nQm94Lm1heCxZbnQubWF4KSx0aGlzLmJvdW5kaW5nQm94LmV4cGFuZEJ5UG9pbnQoWm50KSk6KHRoaXMuYm91bmRpbmdCb3guZXhwYW5kQnlQb2ludChZbnQubWluKSx0aGlzLmJvdW5kaW5nQm94LmV4cGFuZEJ5UG9pbnQoWW50Lm1heCkpfWVsc2UgdGhpcy5ib3VuZGluZ0JveC5tYWtlRW1wdHkoKTsoaXNOYU4odGhpcy5ib3VuZGluZ0JveC5taW4ueCl8fGlzTmFOKHRoaXMuYm91bmRpbmdCb3gubWluLnkpfHxpc05hTih0aGlzLmJvdW5kaW5nQm94Lm1pbi56KSkmJmNvbnNvbGUuZXJyb3IoJ1RIUkVFLkJ1ZmZlckdlb21ldHJ5LmNvbXB1dGVCb3VuZGluZ0JveCgpOiBDb21wdXRlZCBtaW4vbWF4IGhhdmUgTmFOIHZhbHVlcy4gVGhlICJwb3NpdGlvbiIgYXR0cmlidXRlIGlzIGxpa2VseSB0byBoYXZlIE5hTiB2YWx1ZXMuJyx0aGlzKX0sY29tcHV0ZUJvdW5kaW5nU3BoZXJlOmZ1bmN0aW9uKCl7bnVsbD09PXRoaXMuYm91bmRpbmdTcGhlcmUmJih0aGlzLmJvdW5kaW5nU3BoZXJlPW5ldyBDdHQpO2NvbnN0IHQ9dGhpcy5hdHRyaWJ1dGVzLnBvc2l0aW9uLG49dGhpcy5tb3JwaEF0dHJpYnV0ZXMucG9zaXRpb247aWYodCYmdC5pc0dMQnVmZmVyQXR0cmlidXRlKXJldHVybiBjb25zb2xlLmVycm9yKCdUSFJFRS5CdWZmZXJHZW9tZXRyeS5jb21wdXRlQm91bmRpbmdTcGhlcmUoKTogR0xCdWZmZXJBdHRyaWJ1dGUgcmVxdWlyZXMgYSBtYW51YWwgYm91bmRpbmcgc3BoZXJlLiBBbHRlcm5hdGl2ZWx5IHNldCAibWVzaC5mcnVzdHVtQ3VsbGVkIiB0byAiZmFsc2UiLicsdGhpcyksdm9pZCB0aGlzLmJvdW5kaW5nU3BoZXJlLnNldChuZXcgdHR0LDEvMCk7aWYodCl7Y29uc3QgZT10aGlzLmJvdW5kaW5nU3BoZXJlLmNlbnRlcjtpZihZbnQuc2V0RnJvbUJ1ZmZlckF0dHJpYnV0ZSh0KSxuKWZvcihsZXQgdD0wLGU9bi5sZW5ndGg7dDxlO3QrKylxbnQuc2V0RnJvbUJ1ZmZlckF0dHJpYnV0ZShuW3RdKSx0aGlzLm1vcnBoVGFyZ2V0c1JlbGF0aXZlPyhabnQuYWRkVmVjdG9ycyhZbnQubWluLHFudC5taW4pLFludC5leHBhbmRCeVBvaW50KFpudCksWm50LmFkZFZlY3RvcnMoWW50Lm1heCxxbnQubWF4KSxZbnQuZXhwYW5kQnlQb2ludChabnQpKTooWW50LmV4cGFuZEJ5UG9pbnQocW50Lm1pbiksWW50LmV4cGFuZEJ5UG9pbnQocW50Lm1heCkpO1ludC5nZXRDZW50ZXIoZSk7bGV0IGE9MDtmb3IobGV0IG49MCxvPXQuY291bnQ7bjxvO24rKylabnQuZnJvbUJ1ZmZlckF0dHJpYnV0ZSh0LG4pLGE9TWF0aC5tYXgoYSxlLmRpc3RhbmNlVG9TcXVhcmVkKFpudCkpO2lmKG4pZm9yKGxldCBvPTAscj1uLmxlbmd0aDtvPHI7bysrKXtjb25zdCByPW5bb10saT10aGlzLm1vcnBoVGFyZ2V0c1JlbGF0aXZlO2ZvcihsZXQgbj0wLG89ci5jb3VudDtuPG87bisrKVpudC5mcm9tQnVmZmVyQXR0cmlidXRlKHIsbiksaSYmKEdudC5mcm9tQnVmZmVyQXR0cmlidXRlKHQsbiksWm50LmFkZChHbnQpKSxhPU1hdGgubWF4KGEsZS5kaXN0YW5jZVRvU3F1YXJlZChabnQpKX10aGlzLmJvdW5kaW5nU3BoZXJlLnJhZGl1cz1NYXRoLnNxcnQoYSksaXNOYU4odGhpcy5ib3VuZGluZ1NwaGVyZS5yYWRpdXMpJiZjb25zb2xlLmVycm9yKCdUSFJFRS5CdWZmZXJHZW9tZXRyeS5jb21wdXRlQm91bmRpbmdTcGhlcmUoKTogQ29tcHV0ZWQgcmFkaXVzIGlzIE5hTi4gVGhlICJwb3NpdGlvbiIgYXR0cmlidXRlIGlzIGxpa2VseSB0byBoYXZlIE5hTiB2YWx1ZXMuJyx0aGlzKX19LGNvbXB1dGVGYWNlTm9ybWFsczpmdW5jdGlvbigpe30sY29tcHV0ZVRhbmdlbnRzOmZ1bmN0aW9uKCl7Y29uc3QgdD10aGlzLmluZGV4LG49dGhpcy5hdHRyaWJ1dGVzO2lmKG51bGw9PT10fHx2b2lkIDA9PT1uLnBvc2l0aW9ufHx2b2lkIDA9PT1uLm5vcm1hbHx8dm9pZCAwPT09bi51dilyZXR1cm4gdm9pZCBjb25zb2xlLmVycm9yKCJUSFJFRS5CdWZmZXJHZW9tZXRyeTogLmNvbXB1dGVUYW5nZW50cygpIGZhaWxlZC4gTWlzc2luZyByZXF1aXJlZCBhdHRyaWJ1dGVzIChpbmRleCwgcG9zaXRpb24sIG5vcm1hbCBvciB1dikiKTtjb25zdCBlPXQuYXJyYXksYT1uLnBvc2l0aW9uLmFycmF5LG89bi5ub3JtYWwuYXJyYXkscj1uLnV2LmFycmF5LGk9YS5sZW5ndGgvMzt2b2lkIDA9PT1uLnRhbmdlbnQmJnRoaXMuc2V0QXR0cmlidXRlKCJ0YW5nZW50IixuZXcgU250KG5ldyBGbG9hdDMyQXJyYXkoNCppKSw0KSk7Y29uc3QgYz1uLnRhbmdlbnQuYXJyYXkscz1bXSxsPVtdO2ZvcihsZXQgdD0wO3Q8aTt0Kyspc1t0XT1uZXcgdHR0LGxbdF09bmV3IHR0dDtjb25zdCBtPW5ldyB0dHQsZD1uZXcgdHR0LGc9bmV3IHR0dCxwPW5ldyBXOSxiPW5ldyBXOSx1PW5ldyBXOSxmPW5ldyB0dHQsaD1uZXcgdHR0O2Z1bmN0aW9uIF8odCxuLGUpe20uZnJvbUFycmF5KGEsMyp0KSxkLmZyb21BcnJheShhLDMqbiksZy5mcm9tQXJyYXkoYSwzKmUpLHAuZnJvbUFycmF5KHIsMip0KSxiLmZyb21BcnJheShyLDIqbiksdS5mcm9tQXJyYXkociwyKmUpLGQuc3ViKG0pLGcuc3ViKG0pLGIuc3ViKHApLHUuc3ViKHApO2NvbnN0IG89MS8oYi54KnUueS11LngqYi55KTtpc0Zpbml0ZShvKSYmKGYuY29weShkKS5tdWx0aXBseVNjYWxhcih1LnkpLmFkZFNjYWxlZFZlY3RvcihnLC1iLnkpLm11bHRpcGx5U2NhbGFyKG8pLGguY29weShnKS5tdWx0aXBseVNjYWxhcihiLngpLmFkZFNjYWxlZFZlY3RvcihkLC11LngpLm11bHRpcGx5U2NhbGFyKG8pLHNbdF0uYWRkKGYpLHNbbl0uYWRkKGYpLHNbZV0uYWRkKGYpLGxbdF0uYWRkKGgpLGxbbl0uYWRkKGgpLGxbZV0uYWRkKGgpKX1sZXQgQz10aGlzLmdyb3VwczswPT09Qy5sZW5ndGgmJihDPVt7c3RhcnQ6MCxjb3VudDplLmxlbmd0aH1dKTtmb3IobGV0IHQ9MCxuPUMubGVuZ3RoO3Q8bjsrK3Qpe2NvbnN0IG49Q1t0XSxhPW4uc3RhcnQ7Zm9yKGxldCB0PWEsbz1hK24uY291bnQ7dDxvO3QrPTMpXyhlW3QrMF0sZVt0KzFdLGVbdCsyXSl9Y29uc3QgTT1uZXcgdHR0LE89bmV3IHR0dCxQPW5ldyB0dHQseD1uZXcgdHR0O2Z1bmN0aW9uIHkodCl7UC5mcm9tQXJyYXkobywzKnQpLHguY29weShQKTtjb25zdCBuPXNbdF07TS5jb3B5KG4pLE0uc3ViKFAubXVsdGlwbHlTY2FsYXIoUC5kb3QobikpKS5ub3JtYWxpemUoKSxPLmNyb3NzVmVjdG9ycyh4LG4pO2NvbnN0IGU9Ty5kb3QobFt0XSk8MD8tMToxO2NbNCp0XT1NLngsY1s0KnQrMV09TS55LGNbNCp0KzJdPU0ueixjWzQqdCszXT1lfWZvcihsZXQgdD0wLG49Qy5sZW5ndGg7dDxuOysrdCl7Y29uc3Qgbj1DW3RdLGE9bi5zdGFydDtmb3IobGV0IHQ9YSxvPWErbi5jb3VudDt0PG87dCs9Myl5KGVbdCswXSkseShlW3QrMV0pLHkoZVt0KzJdKX19LGNvbXB1dGVWZXJ0ZXhOb3JtYWxzOmZ1bmN0aW9uKCl7Y29uc3QgdD10aGlzLmluZGV4LG49dGhpcy5nZXRBdHRyaWJ1dGUoInBvc2l0aW9uIik7aWYodm9pZCAwIT09bil7bGV0IGU9dGhpcy5nZXRBdHRyaWJ1dGUoIm5vcm1hbCIpO2lmKHZvaWQgMD09PWUpZT1uZXcgU250KG5ldyBGbG9hdDMyQXJyYXkoMypuLmNvdW50KSwzKSx0aGlzLnNldEF0dHJpYnV0ZSgibm9ybWFsIixlKTtlbHNlIGZvcihsZXQgdD0wLG49ZS5jb3VudDt0PG47dCsrKWUuc2V0WFlaKHQsMCwwLDApO2NvbnN0IGE9bmV3IHR0dCxvPW5ldyB0dHQscj1uZXcgdHR0LGk9bmV3IHR0dCxjPW5ldyB0dHQscz1uZXcgdHR0LGw9bmV3IHR0dCxtPW5ldyB0dHQ7aWYodClmb3IobGV0IGQ9MCxnPXQuY291bnQ7ZDxnO2QrPTMpe2NvbnN0IGc9dC5nZXRYKGQrMCkscD10LmdldFgoZCsxKSxiPXQuZ2V0WChkKzIpO2EuZnJvbUJ1ZmZlckF0dHJpYnV0ZShuLGcpLG8uZnJvbUJ1ZmZlckF0dHJpYnV0ZShuLHApLHIuZnJvbUJ1ZmZlckF0dHJpYnV0ZShuLGIpLGwuc3ViVmVjdG9ycyhyLG8pLG0uc3ViVmVjdG9ycyhhLG8pLGwuY3Jvc3MobSksaS5mcm9tQnVmZmVyQXR0cmlidXRlKGUsZyksYy5mcm9tQnVmZmVyQXR0cmlidXRlKGUscCkscy5mcm9tQnVmZmVyQXR0cmlidXRlKGUsYiksaS5hZGQobCksYy5hZGQobCkscy5hZGQobCksZS5zZXRYWVooZyxpLngsaS55LGkueiksZS5zZXRYWVoocCxjLngsYy55LGMueiksZS5zZXRYWVooYixzLngscy55LHMueil9ZWxzZSBmb3IobGV0IHQ9MCxpPW4uY291bnQ7dDxpO3QrPTMpYS5mcm9tQnVmZmVyQXR0cmlidXRlKG4sdCswKSxvLmZyb21CdWZmZXJBdHRyaWJ1dGUobix0KzEpLHIuZnJvbUJ1ZmZlckF0dHJpYnV0ZShuLHQrMiksbC5zdWJWZWN0b3JzKHIsbyksbS5zdWJWZWN0b3JzKGEsbyksbC5jcm9zcyhtKSxlLnNldFhZWih0KzAsbC54LGwueSxsLnopLGUuc2V0WFlaKHQrMSxsLngsbC55LGwueiksZS5zZXRYWVoodCsyLGwueCxsLnksbC56KTt0aGlzLm5vcm1hbGl6ZU5vcm1hbHMoKSxlLm5lZWRzVXBkYXRlPSEwfX0sbWVyZ2U6ZnVuY3Rpb24odCxuKXtpZighdHx8IXQuaXNCdWZmZXJHZW9tZXRyeSlyZXR1cm4gdm9pZCBjb25zb2xlLmVycm9yKCJUSFJFRS5CdWZmZXJHZW9tZXRyeS5tZXJnZSgpOiBnZW9tZXRyeSBub3QgYW4gaW5zdGFuY2Ugb2YgVEhSRUUuQnVmZmVyR2VvbWV0cnkuIix0KTt2b2lkIDA9PT1uJiYobj0wLGNvbnNvbGUud2FybigiVEhSRUUuQnVmZmVyR2VvbWV0cnkubWVyZ2UoKTogT3ZlcndyaXRpbmcgb3JpZ2luYWwgZ2VvbWV0cnksIHN0YXJ0aW5nIGF0IG9mZnNldD0wLiBVc2UgQnVmZmVyR2VvbWV0cnlVdGlscy5tZXJnZUJ1ZmZlckdlb21ldHJpZXMoKSBmb3IgbG9zc2xlc3MgbWVyZ2UuIikpO2NvbnN0IGU9dGhpcy5hdHRyaWJ1dGVzO2Zvcihjb25zdCBhIGluIGUpe2lmKHZvaWQgMD09PXQuYXR0cmlidXRlc1thXSljb250aW51ZTtjb25zdCBvPWVbYV0uYXJyYXkscj10LmF0dHJpYnV0ZXNbYV0saT1yLmFycmF5LGM9ci5pdGVtU2l6ZSpuLHM9TWF0aC5taW4oaS5sZW5ndGgsby5sZW5ndGgtYyk7Zm9yKGxldCB0PTAsbj1jO3Q8czt0KyssbisrKW9bbl09aVt0XX1yZXR1cm4gdGhpc30sbm9ybWFsaXplTm9ybWFsczpmdW5jdGlvbigpe2NvbnN0IHQ9dGhpcy5hdHRyaWJ1dGVzLm5vcm1hbDtmb3IobGV0IG49MCxlPXQuY291bnQ7bjxlO24rKylabnQuZnJvbUJ1ZmZlckF0dHJpYnV0ZSh0LG4pLFpudC5ub3JtYWxpemUoKSx0LnNldFhZWihuLFpudC54LFpudC55LFpudC56KX0sdG9Ob25JbmRleGVkOmZ1bmN0aW9uKCl7ZnVuY3Rpb24gdCh0LG4pe2NvbnN0IGU9dC5hcnJheSxhPXQuaXRlbVNpemUsbz10Lm5vcm1hbGl6ZWQscj1uZXcgZS5jb25zdHJ1Y3RvcihuLmxlbmd0aCphKTtsZXQgaT0wLGM9MDtmb3IobGV0IHQ9MCxvPW4ubGVuZ3RoO3Q8bzt0Kyspe2k9blt0XSphO2ZvcihsZXQgdD0wO3Q8YTt0KyspcltjKytdPWVbaSsrXX1yZXR1cm4gbmV3IFNudChyLGEsbyl9aWYobnVsbD09PXRoaXMuaW5kZXgpcmV0dXJuIGNvbnNvbGUud2FybigiVEhSRUUuQnVmZmVyR2VvbWV0cnkudG9Ob25JbmRleGVkKCk6IEJ1ZmZlckdlb21ldHJ5IGlzIGFscmVhZHkgbm9uLWluZGV4ZWQuIiksdGhpcztjb25zdCBuPW5ldyBYbnQsZT10aGlzLmluZGV4LmFycmF5LGE9dGhpcy5hdHRyaWJ1dGVzO2Zvcihjb25zdCBvIGluIGEpe2NvbnN0IHI9dChhW29dLGUpO24uc2V0QXR0cmlidXRlKG8scil9Y29uc3Qgbz10aGlzLm1vcnBoQXR0cmlidXRlcztmb3IoY29uc3QgYSBpbiBvKXtjb25zdCByPVtdLGk9b1thXTtmb3IobGV0IG49MCxhPWkubGVuZ3RoO248YTtuKyspe2NvbnN0IGE9dChpW25dLGUpO3IucHVzaChhKX1uLm1vcnBoQXR0cmlidXRlc1thXT1yfW4ubW9ycGhUYXJnZXRzUmVsYXRpdmU9dGhpcy5tb3JwaFRhcmdldHNSZWxhdGl2ZTtjb25zdCByPXRoaXMuZ3JvdXBzO2ZvcihsZXQgdD0wLGU9ci5sZW5ndGg7dDxlO3QrKyl7Y29uc3QgZT1yW3RdO24uYWRkR3JvdXAoZS5zdGFydCxlLmNvdW50LGUubWF0ZXJpYWxJbmRleCl9cmV0dXJuIG59LHRvSlNPTjpmdW5jdGlvbigpe2NvbnN0IHQ9e21ldGFkYXRhOnt2ZXJzaW9uOjQuNSx0eXBlOiJCdWZmZXJHZW9tZXRyeSIsZ2VuZXJhdG9yOiJCdWZmZXJHZW9tZXRyeS50b0pTT04ifX07aWYodC51dWlkPXRoaXMudXVpZCx0LnR5cGU9dGhpcy50eXBlLCIiIT09dGhpcy5uYW1lJiYodC5uYW1lPXRoaXMubmFtZSksT2JqZWN0LmtleXModGhpcy51c2VyRGF0YSkubGVuZ3RoPjAmJih0LnVzZXJEYXRhPXRoaXMudXNlckRhdGEpLHZvaWQgMCE9PXRoaXMucGFyYW1ldGVycyl7Y29uc3Qgbj10aGlzLnBhcmFtZXRlcnM7Zm9yKGNvbnN0IGUgaW4gbil2b2lkIDAhPT1uW2VdJiYodFtlXT1uW2VdKTtyZXR1cm4gdH10LmRhdGE9e2F0dHJpYnV0ZXM6e319O2NvbnN0IG49dGhpcy5pbmRleDtudWxsIT09biYmKHQuZGF0YS5pbmRleD17dHlwZTpuLmFycmF5LmNvbnN0cnVjdG9yLm5hbWUsYXJyYXk6QXJyYXkucHJvdG90eXBlLnNsaWNlLmNhbGwobi5hcnJheSl9KTtjb25zdCBlPXRoaXMuYXR0cmlidXRlcztmb3IoY29uc3QgbiBpbiBlKXtjb25zdCBhPWVbbl0sbz1hLnRvSlNPTih0LmRhdGEpOyIiIT09YS5uYW1lJiYoby5uYW1lPWEubmFtZSksdC5kYXRhLmF0dHJpYnV0ZXNbbl09b31jb25zdCBhPXt9O2xldCBvPSExO2Zvcihjb25zdCBuIGluIHRoaXMubW9ycGhBdHRyaWJ1dGVzKXtjb25zdCBlPXRoaXMubW9ycGhBdHRyaWJ1dGVzW25dLHI9W107Zm9yKGxldCBuPTAsYT1lLmxlbmd0aDtuPGE7bisrKXtjb25zdCBhPWVbbl0sbz1hLnRvSlNPTih0LmRhdGEpOyIiIT09YS5uYW1lJiYoby5uYW1lPWEubmFtZSksci5wdXNoKG8pfXIubGVuZ3RoPjAmJihhW25dPXIsbz0hMCl9byYmKHQuZGF0YS5tb3JwaEF0dHJpYnV0ZXM9YSx0LmRhdGEubW9ycGhUYXJnZXRzUmVsYXRpdmU9dGhpcy5tb3JwaFRhcmdldHNSZWxhdGl2ZSk7Y29uc3Qgcj10aGlzLmdyb3VwcztyLmxlbmd0aD4wJiYodC5kYXRhLmdyb3Vwcz1KU09OLnBhcnNlKEpTT04uc3RyaW5naWZ5KHIpKSk7Y29uc3QgaT10aGlzLmJvdW5kaW5nU3BoZXJlO3JldHVybiBudWxsIT09aSYmKHQuZGF0YS5ib3VuZGluZ1NwaGVyZT17Y2VudGVyOmkuY2VudGVyLnRvQXJyYXkoKSxyYWRpdXM6aS5yYWRpdXN9KSx0fSxjbG9uZTpmdW5jdGlvbigpe3JldHVybihuZXcgWG50KS5jb3B5KHRoaXMpfSxjb3B5OmZ1bmN0aW9uKHQpe3RoaXMuaW5kZXg9bnVsbCx0aGlzLmF0dHJpYnV0ZXM9e30sdGhpcy5tb3JwaEF0dHJpYnV0ZXM9e30sdGhpcy5ncm91cHM9W10sdGhpcy5ib3VuZGluZ0JveD1udWxsLHRoaXMuYm91bmRpbmdTcGhlcmU9bnVsbDtjb25zdCBuPXt9O3RoaXMubmFtZT10Lm5hbWU7Y29uc3QgZT10LmluZGV4O251bGwhPT1lJiZ0aGlzLnNldEluZGV4KGUuY2xvbmUobikpO2NvbnN0IGE9dC5hdHRyaWJ1dGVzO2Zvcihjb25zdCB0IGluIGEpdGhpcy5zZXRBdHRyaWJ1dGUodCxhW3RdLmNsb25lKG4pKTtjb25zdCBvPXQubW9ycGhBdHRyaWJ1dGVzO2Zvcihjb25zdCB0IGluIG8pe2NvbnN0IGU9W10sYT1vW3RdO2ZvcihsZXQgdD0wLG89YS5sZW5ndGg7dDxvO3QrKyllLnB1c2goYVt0XS5jbG9uZShuKSk7dGhpcy5tb3JwaEF0dHJpYnV0ZXNbdF09ZX10aGlzLm1vcnBoVGFyZ2V0c1JlbGF0aXZlPXQubW9ycGhUYXJnZXRzUmVsYXRpdmU7Y29uc3Qgcj10Lmdyb3Vwcztmb3IobGV0IHQ9MCxuPXIubGVuZ3RoO3Q8bjt0Kyspe2NvbnN0IG49clt0XTt0aGlzLmFkZEdyb3VwKG4uc3RhcnQsbi5jb3VudCxuLm1hdGVyaWFsSW5kZXgpfWNvbnN0IGk9dC5ib3VuZGluZ0JveDtudWxsIT09aSYmKHRoaXMuYm91bmRpbmdCb3g9aS5jbG9uZSgpKTtjb25zdCBjPXQuYm91bmRpbmdTcGhlcmU7cmV0dXJuIG51bGwhPT1jJiYodGhpcy5ib3VuZGluZ1NwaGVyZT1jLmNsb25lKCkpLHRoaXMuZHJhd1JhbmdlLnN0YXJ0PXQuZHJhd1JhbmdlLnN0YXJ0LHRoaXMuZHJhd1JhbmdlLmNvdW50PXQuZHJhd1JhbmdlLmNvdW50LHRoaXMudXNlckRhdGE9dC51c2VyRGF0YSx0aGlzfSxkaXNwb3NlOmZ1bmN0aW9uKCl7dGhpcy5kaXNwYXRjaEV2ZW50KHt0eXBlOiJkaXNwb3NlIn0pfX0pO2NvbnN0IEpudD1uZXcgU3R0LFFudD1uZXcgd3R0LEtudD1uZXcgQ3R0LCRudD1uZXcgdHR0LHRldD1uZXcgdHR0LG5ldD1uZXcgdHR0LGVldD1uZXcgdHR0LGFldD1uZXcgdHR0LG9ldD1uZXcgdHR0LHJldD1uZXcgdHR0LGlldD1uZXcgdHR0LGNldD1uZXcgdHR0LHNldD1uZXcgVzksbWV0PW5ldyBXOSxkZXQ9bmV3IFc5LGdldD1uZXcgdHR0LHBldD1uZXcgdHR0O2Z1bmN0aW9uIGJldCh0PW5ldyBYbnQsbj1uZXcga250KXskdHQuY2FsbCh0aGlzKSx0aGlzLnR5cGU9Ik1lc2giLHRoaXMuZ2VvbWV0cnk9dCx0aGlzLm1hdGVyaWFsPW4sdGhpcy51cGRhdGVNb3JwaFRhcmdldHMoKX1mdW5jdGlvbiB1ZXQodCxuLGUsYSxvLHIsaSxjLHMsbCxtLGQpeyRudC5mcm9tQnVmZmVyQXR0cmlidXRlKG8sbCksdGV0LmZyb21CdWZmZXJBdHRyaWJ1dGUobyxtKSxuZXQuZnJvbUJ1ZmZlckF0dHJpYnV0ZShvLGQpO2NvbnN0IGc9dC5tb3JwaFRhcmdldEluZmx1ZW5jZXM7aWYobi5tb3JwaFRhcmdldHMmJnImJmcpe3JldC5zZXQoMCwwLDApLGlldC5zZXQoMCwwLDApLGNldC5zZXQoMCwwLDApO2ZvcihsZXQgdD0wLG49ci5sZW5ndGg7dDxuO3QrKyl7Y29uc3Qgbj1nW3RdLGU9clt0XTswIT09biYmKGVldC5mcm9tQnVmZmVyQXR0cmlidXRlKGUsbCksYWV0LmZyb21CdWZmZXJBdHRyaWJ1dGUoZSxtKSxvZXQuZnJvbUJ1ZmZlckF0dHJpYnV0ZShlLGQpLGk/KHJldC5hZGRTY2FsZWRWZWN0b3IoZWV0LG4pLGlldC5hZGRTY2FsZWRWZWN0b3IoYWV0LG4pLGNldC5hZGRTY2FsZWRWZWN0b3Iob2V0LG4pKToocmV0LmFkZFNjYWxlZFZlY3RvcihlZXQuc3ViKCRudCksbiksaWV0LmFkZFNjYWxlZFZlY3RvcihhZXQuc3ViKHRldCksbiksY2V0LmFkZFNjYWxlZFZlY3RvcihvZXQuc3ViKG5ldCksbikpKX0kbnQuYWRkKHJldCksdGV0LmFkZChpZXQpLG5ldC5hZGQoY2V0KX10LmlzU2tpbm5lZE1lc2gmJih0LmJvbmVUcmFuc2Zvcm0obCwkbnQpLHQuYm9uZVRyYW5zZm9ybShtLHRldCksdC5ib25lVHJhbnNmb3JtKGQsbmV0KSk7Y29uc3QgcD0oZnVuY3Rpb24gYih0LG4sZSxhLG8scixpLGMpe2xldCBzO2lmKHM9MT09PW4uc2lkZT9hLmludGVyc2VjdFRyaWFuZ2xlKGkscixvLCEwLGMpOmEuaW50ZXJzZWN0VHJpYW5nbGUobyxyLGksMiE9PW4uc2lkZSxjKSxudWxsPT09cylyZXR1cm4gbnVsbDtwZXQuY29weShjKSxwZXQuYXBwbHlNYXRyaXg0KHQubWF0cml4V29ybGQpO2NvbnN0IGw9ZS5yYXkub3JpZ2luLmRpc3RhbmNlVG8ocGV0KTtyZXR1cm4gbDxlLm5lYXJ8fGw+ZS5mYXI/bnVsbDp7ZGlzdGFuY2U6bCxwb2ludDpwZXQuY2xvbmUoKSxvYmplY3Q6dH19KSh0LG4sZSxhLCRudCx0ZXQsbmV0LGdldCk7aWYocCl7YyYmKHNldC5mcm9tQnVmZmVyQXR0cmlidXRlKGMsbCksbWV0LmZyb21CdWZmZXJBdHRyaWJ1dGUoYyxtKSxkZXQuZnJvbUJ1ZmZlckF0dHJpYnV0ZShjLGQpLHAudXY9Ym50LmdldFVWKGdldCwkbnQsdGV0LG5ldCxzZXQsbWV0LGRldCxuZXcgVzkpKSxzJiYoc2V0LmZyb21CdWZmZXJBdHRyaWJ1dGUocyxsKSxtZXQuZnJvbUJ1ZmZlckF0dHJpYnV0ZShzLG0pLGRldC5mcm9tQnVmZmVyQXR0cmlidXRlKHMsZCkscC51djI9Ym50LmdldFVWKGdldCwkbnQsdGV0LG5ldCxzZXQsbWV0LGRldCxuZXcgVzkpKTtjb25zdCB0PW5ldyBQbnQobCxtLGQpO2JudC5nZXROb3JtYWwoJG50LHRldCxuZXQsdC5ub3JtYWwpLHAuZmFjZT10fXJldHVybiBwfWJldC5wcm90b3R5cGU9T2JqZWN0LmFzc2lnbihPYmplY3QuY3JlYXRlKCR0dC5wcm90b3R5cGUpLHtjb25zdHJ1Y3RvcjpiZXQsaXNNZXNoOiEwLGNvcHk6ZnVuY3Rpb24odCl7cmV0dXJuICR0dC5wcm90b3R5cGUuY29weS5jYWxsKHRoaXMsdCksdm9pZCAwIT09dC5tb3JwaFRhcmdldEluZmx1ZW5jZXMmJih0aGlzLm1vcnBoVGFyZ2V0SW5mbHVlbmNlcz10Lm1vcnBoVGFyZ2V0SW5mbHVlbmNlcy5zbGljZSgpKSx2b2lkIDAhPT10Lm1vcnBoVGFyZ2V0RGljdGlvbmFyeSYmKHRoaXMubW9ycGhUYXJnZXREaWN0aW9uYXJ5PU9iamVjdC5hc3NpZ24oe30sdC5tb3JwaFRhcmdldERpY3Rpb25hcnkpKSx0aGlzLm1hdGVyaWFsPXQubWF0ZXJpYWwsdGhpcy5nZW9tZXRyeT10Lmdlb21ldHJ5LHRoaXN9LHVwZGF0ZU1vcnBoVGFyZ2V0czpmdW5jdGlvbigpe2NvbnN0IHQ9dGhpcy5nZW9tZXRyeTtpZih0LmlzQnVmZmVyR2VvbWV0cnkpe2NvbnN0IG49dC5tb3JwaEF0dHJpYnV0ZXMsZT1PYmplY3Qua2V5cyhuKTtpZihlLmxlbmd0aD4wKXtjb25zdCB0PW5bZVswXV07aWYodm9pZCAwIT09dCl7dGhpcy5tb3JwaFRhcmdldEluZmx1ZW5jZXM9W10sdGhpcy5tb3JwaFRhcmdldERpY3Rpb25hcnk9e307Zm9yKGxldCBuPTAsZT10Lmxlbmd0aDtuPGU7bisrKXtjb25zdCBlPXRbbl0ubmFtZXx8U3RyaW5nKG4pO3RoaXMubW9ycGhUYXJnZXRJbmZsdWVuY2VzLnB1c2goMCksdGhpcy5tb3JwaFRhcmdldERpY3Rpb25hcnlbZV09bn19fX1lbHNle2NvbnN0IG49dC5tb3JwaFRhcmdldHM7dm9pZCAwIT09biYmbi5sZW5ndGg+MCYmY29uc29sZS5lcnJvcigiVEhSRUUuTWVzaC51cGRhdGVNb3JwaFRhcmdldHMoKSBubyBsb25nZXIgc3VwcG9ydHMgVEhSRUUuR2VvbWV0cnkuIFVzZSBUSFJFRS5CdWZmZXJHZW9tZXRyeSBpbnN0ZWFkLiIpfX0scmF5Y2FzdDpmdW5jdGlvbih0LG4pe2NvbnN0IGU9dGhpcy5nZW9tZXRyeSxhPXRoaXMubWF0ZXJpYWwsbz10aGlzLm1hdHJpeFdvcmxkO2lmKHZvaWQgMD09PWEpcmV0dXJuO2lmKG51bGw9PT1lLmJvdW5kaW5nU3BoZXJlJiZlLmNvbXB1dGVCb3VuZGluZ1NwaGVyZSgpLEtudC5jb3B5KGUuYm91bmRpbmdTcGhlcmUpLEtudC5hcHBseU1hdHJpeDQobyksITE9PT10LnJheS5pbnRlcnNlY3RzU3BoZXJlKEtudCkpcmV0dXJuO2lmKEpudC5jb3B5KG8pLmludmVydCgpLFFudC5jb3B5KHQucmF5KS5hcHBseU1hdHJpeDQoSm50KSxudWxsIT09ZS5ib3VuZGluZ0JveCYmITE9PT1RbnQuaW50ZXJzZWN0c0JveChlLmJvdW5kaW5nQm94KSlyZXR1cm47bGV0IHI7aWYoZS5pc0J1ZmZlckdlb21ldHJ5KXtjb25zdCBvPWUuaW5kZXgsaT1lLmF0dHJpYnV0ZXMucG9zaXRpb24sYz1lLm1vcnBoQXR0cmlidXRlcy5wb3NpdGlvbixzPWUubW9ycGhUYXJnZXRzUmVsYXRpdmUsbD1lLmF0dHJpYnV0ZXMudXYsbT1lLmF0dHJpYnV0ZXMudXYyLGQ9ZS5ncm91cHMsZz1lLmRyYXdSYW5nZTtpZihudWxsIT09bylpZihBcnJheS5pc0FycmF5KGEpKWZvcihsZXQgZT0wLHA9ZC5sZW5ndGg7ZTxwO2UrKyl7Y29uc3QgcD1kW2VdLGI9YVtwLm1hdGVyaWFsSW5kZXhdO2ZvcihsZXQgZT1NYXRoLm1heChwLnN0YXJ0LGcuc3RhcnQpLGE9TWF0aC5taW4ocC5zdGFydCtwLmNvdW50LGcuc3RhcnQrZy5jb3VudCk7ZTxhO2UrPTMpe2NvbnN0IGE9by5nZXRYKGUpLGQ9by5nZXRYKGUrMSksZz1vLmdldFgoZSsyKTtyPXVldCh0aGlzLGIsdCxRbnQsaSxjLHMsbCxtLGEsZCxnKSxyJiYoci5mYWNlSW5kZXg9TWF0aC5mbG9vcihlLzMpLHIuZmFjZS5tYXRlcmlhbEluZGV4PXAubWF0ZXJpYWxJbmRleCxuLnB1c2gocikpfX1lbHNlIGZvcihsZXQgZT1NYXRoLm1heCgwLGcuc3RhcnQpLGQ9TWF0aC5taW4oby5jb3VudCxnLnN0YXJ0K2cuY291bnQpO2U8ZDtlKz0zKXtjb25zdCBkPW8uZ2V0WChlKSxnPW8uZ2V0WChlKzEpLHA9by5nZXRYKGUrMik7cj11ZXQodGhpcyxhLHQsUW50LGksYyxzLGwsbSxkLGcscCksciYmKHIuZmFjZUluZGV4PU1hdGguZmxvb3IoZS8zKSxuLnB1c2gocikpfWVsc2UgaWYodm9pZCAwIT09aSlpZihBcnJheS5pc0FycmF5KGEpKWZvcihsZXQgZT0wLG89ZC5sZW5ndGg7ZTxvO2UrKyl7Y29uc3Qgbz1kW2VdLHA9YVtvLm1hdGVyaWFsSW5kZXhdO2ZvcihsZXQgZT1NYXRoLm1heChvLnN0YXJ0LGcuc3RhcnQpLGE9TWF0aC5taW4oby5zdGFydCtvLmNvdW50LGcuc3RhcnQrZy5jb3VudCk7ZTxhO2UrPTMpcj11ZXQodGhpcyxwLHQsUW50LGksYyxzLGwsbSxlLGUrMSxlKzIpLHImJihyLmZhY2VJbmRleD1NYXRoLmZsb29yKGUvMyksci5mYWNlLm1hdGVyaWFsSW5kZXg9by5tYXRlcmlhbEluZGV4LG4ucHVzaChyKSl9ZWxzZSBmb3IobGV0IGU9TWF0aC5tYXgoMCxnLnN0YXJ0KSxvPU1hdGgubWluKGkuY291bnQsZy5zdGFydCtnLmNvdW50KTtlPG87ZSs9MylyPXVldCh0aGlzLGEsdCxRbnQsaSxjLHMsbCxtLGUsZSsxLGUrMiksciYmKHIuZmFjZUluZGV4PU1hdGguZmxvb3IoZS8zKSxuLnB1c2gocikpfWVsc2UgZS5pc0dlb21ldHJ5JiZjb25zb2xlLmVycm9yKCJUSFJFRS5NZXNoLnJheWNhc3QoKSBubyBsb25nZXIgc3VwcG9ydHMgVEhSRUUuR2VvbWV0cnkuIFVzZSBUSFJFRS5CdWZmZXJHZW9tZXRyeSBpbnN0ZWFkLiIpfX0pO2NsYXNzIGZldCBleHRlbmRzIFhudHtjb25zdHJ1Y3Rvcih0PTEsbj0xLGU9MSxhPTEsbz0xLHI9MSl7c3VwZXIoKSx0aGlzLnR5cGU9IkJveEdlb21ldHJ5Iix0aGlzLnBhcmFtZXRlcnM9e3dpZHRoOnQsaGVpZ2h0Om4sZGVwdGg6ZSx3aWR0aFNlZ21lbnRzOmEsaGVpZ2h0U2VnbWVudHM6byxkZXB0aFNlZ21lbnRzOnJ9O2NvbnN0IGk9dGhpczthPU1hdGguZmxvb3IoYSksbz1NYXRoLmZsb29yKG8pLHI9TWF0aC5mbG9vcihyKTtjb25zdCBjPVtdLHM9W10sbD1bXSxtPVtdO2xldCBkPTAsZz0wO2Z1bmN0aW9uIHAodCxuLGUsYSxvLHIscCxiLHUsZixoKXtjb25zdCBfPXIvdSxDPXAvZixNPXIvMixPPXAvMixQPWIvMix4PXUrMSx5PWYrMTtsZXQgaz0wLHY9MDtjb25zdCB3PW5ldyB0dHQ7Zm9yKGxldCByPTA7cjx5O3IrKyl7Y29uc3QgaT1yKkMtTztmb3IobGV0IGM9MDtjPHg7YysrKXdbdF09KGMqXy1NKSphLHdbbl09aSpvLHdbZV09UCxzLnB1c2gody54LHcueSx3LnopLHdbdF09MCx3W25dPTAsd1tlXT1iPjA/MTotMSxsLnB1c2gody54LHcueSx3LnopLG0ucHVzaChjL3UpLG0ucHVzaCgxLXIvZiksays9MX1mb3IobGV0IHQ9MDt0PGY7dCsrKWZvcihsZXQgbj0wO248dTtuKyspe2NvbnN0IGU9ZCtuK3gqKHQrMSksYT1kKyhuKzEpK3gqKHQrMSksbz1kKyhuKzEpK3gqdDtjLnB1c2goZCtuK3gqdCxlLG8pLGMucHVzaChlLGEsbyksdis9Nn1pLmFkZEdyb3VwKGcsdixoKSxnKz12LGQrPWt9cCgieiIsInkiLCJ4IiwtMSwtMSxlLG4sdCxyLG8sMCkscCgieiIsInkiLCJ4IiwxLC0xLGUsbiwtdCxyLG8sMSkscCgieCIsInoiLCJ5IiwxLDEsdCxlLG4sYSxyLDIpLHAoIngiLCJ6IiwieSIsMSwtMSx0LGUsLW4sYSxyLDMpLHAoIngiLCJ5IiwieiIsMSwtMSx0LG4sZSxhLG8sNCkscCgieCIsInkiLCJ6IiwtMSwtMSx0LG4sLWUsYSxvLDUpLHRoaXMuc2V0SW5kZXgoYyksdGhpcy5zZXRBdHRyaWJ1dGUoInBvc2l0aW9uIixuZXcgRm50KHMsMykpLHRoaXMuc2V0QXR0cmlidXRlKCJub3JtYWwiLG5ldyBGbnQobCwzKSksdGhpcy5zZXRBdHRyaWJ1dGUoInV2IixuZXcgRm50KG0sMikpfX1mdW5jdGlvbiBoZXQodCl7Y29uc3Qgbj17fTtmb3IoY29uc3QgZSBpbiB0KXtuW2VdPXt9O2Zvcihjb25zdCBhIGluIHRbZV0pe2NvbnN0IG89dFtlXVthXTtuW2VdW2FdPW8mJihvLmlzQ29sb3J8fG8uaXNNYXRyaXgzfHxvLmlzTWF0cml4NHx8by5pc1ZlY3RvcjJ8fG8uaXNWZWN0b3IzfHxvLmlzVmVjdG9yNHx8by5pc1RleHR1cmUpP28uY2xvbmUoKTpBcnJheS5pc0FycmF5KG8pP28uc2xpY2UoKTpvfX1yZXR1cm4gbn1mdW5jdGlvbiBfZXQodCl7Y29uc3Qgbj17fTtmb3IobGV0IGU9MDtlPHQubGVuZ3RoO2UrKyl7Y29uc3QgYT1oZXQodFtlXSk7Zm9yKGNvbnN0IHQgaW4gYSluW3RdPWFbdF19cmV0dXJuIG59Y29uc3QgQ2V0PXtjbG9uZTpoZXQsbWVyZ2U6X2V0fTtmdW5jdGlvbiBNZXQodCl7eW50LmNhbGwodGhpcyksdGhpcy50eXBlPSJTaGFkZXJNYXRlcmlhbCIsdGhpcy5kZWZpbmVzPXt9LHRoaXMudW5pZm9ybXM9e30sdGhpcy52ZXJ0ZXhTaGFkZXI9InZvaWQgbWFpbigpIHtcblx0Z2xfUG9zaXRpb24gPSBwcm9qZWN0aW9uTWF0cml4ICogbW9kZWxWaWV3TWF0cml4ICogdmVjNCggcG9zaXRpb24sIDEuMCApO1xufSIsdGhpcy5mcmFnbWVudFNoYWRlcj0idm9pZCBtYWluKCkge1xuXHRnbF9GcmFnQ29sb3IgPSB2ZWM0KCAxLjAsIDAuMCwgMC4wLCAxLjAgKTtcbn0iLHRoaXMubGluZXdpZHRoPTEsdGhpcy53aXJlZnJhbWU9ITEsdGhpcy53aXJlZnJhbWVMaW5ld2lkdGg9MSx0aGlzLmZvZz0hMSx0aGlzLmxpZ2h0cz0hMSx0aGlzLmNsaXBwaW5nPSExLHRoaXMuc2tpbm5pbmc9ITEsdGhpcy5tb3JwaFRhcmdldHM9ITEsdGhpcy5tb3JwaE5vcm1hbHM9ITEsdGhpcy5leHRlbnNpb25zPXtkZXJpdmF0aXZlczohMSxmcmFnRGVwdGg6ITEsZHJhd0J1ZmZlcnM6ITEsc2hhZGVyVGV4dHVyZUxPRDohMX0sdGhpcy5kZWZhdWx0QXR0cmlidXRlVmFsdWVzPXtjb2xvcjpbMSwxLDFdLHV2OlswLDBdLHV2MjpbMCwwXX0sdGhpcy5pbmRleDBBdHRyaWJ1dGVOYW1lPXZvaWQgMCx0aGlzLnVuaWZvcm1zTmVlZFVwZGF0ZT0hMSx0aGlzLmdsc2xWZXJzaW9uPW51bGwsdm9pZCAwIT09dCYmKHZvaWQgMCE9PXQuYXR0cmlidXRlcyYmY29uc29sZS5lcnJvcigiVEhSRUUuU2hhZGVyTWF0ZXJpYWw6IGF0dHJpYnV0ZXMgc2hvdWxkIG5vdyBiZSBkZWZpbmVkIGluIFRIUkVFLkJ1ZmZlckdlb21ldHJ5IGluc3RlYWQuIiksdGhpcy5zZXRWYWx1ZXModCkpfWZ1bmN0aW9uIE9ldCgpeyR0dC5jYWxsKHRoaXMpLHRoaXMudHlwZT0iQ2FtZXJhIix0aGlzLm1hdHJpeFdvcmxkSW52ZXJzZT1uZXcgU3R0LHRoaXMucHJvamVjdGlvbk1hdHJpeD1uZXcgU3R0LHRoaXMucHJvamVjdGlvbk1hdHJpeEludmVyc2U9bmV3IFN0dH1mdW5jdGlvbiBQZXQodD01MCxuPTEsZT0uMSxhPTJlMyl7T2V0LmNhbGwodGhpcyksdGhpcy50eXBlPSJQZXJzcGVjdGl2ZUNhbWVyYSIsdGhpcy5mb3Y9dCx0aGlzLnpvb209MSx0aGlzLm5lYXI9ZSx0aGlzLmZhcj1hLHRoaXMuZm9jdXM9MTAsdGhpcy5hc3BlY3Q9bix0aGlzLnZpZXc9bnVsbCx0aGlzLmZpbG1HYXVnZT0zNSx0aGlzLmZpbG1PZmZzZXQ9MCx0aGlzLnVwZGF0ZVByb2plY3Rpb25NYXRyaXgoKX0oTWV0LnByb3RvdHlwZT1PYmplY3QuY3JlYXRlKHludC5wcm90b3R5cGUpKS5jb25zdHJ1Y3Rvcj1NZXQsTWV0LnByb3RvdHlwZS5pc1NoYWRlck1hdGVyaWFsPSEwLE1ldC5wcm90b3R5cGUuY29weT1mdW5jdGlvbih0KXtyZXR1cm4geW50LnByb3RvdHlwZS5jb3B5LmNhbGwodGhpcyx0KSx0aGlzLmZyYWdtZW50U2hhZGVyPXQuZnJhZ21lbnRTaGFkZXIsdGhpcy52ZXJ0ZXhTaGFkZXI9dC52ZXJ0ZXhTaGFkZXIsdGhpcy51bmlmb3Jtcz1oZXQodC51bmlmb3JtcyksdGhpcy5kZWZpbmVzPU9iamVjdC5hc3NpZ24oe30sdC5kZWZpbmVzKSx0aGlzLndpcmVmcmFtZT10LndpcmVmcmFtZSx0aGlzLndpcmVmcmFtZUxpbmV3aWR0aD10LndpcmVmcmFtZUxpbmV3aWR0aCx0aGlzLmxpZ2h0cz10LmxpZ2h0cyx0aGlzLmNsaXBwaW5nPXQuY2xpcHBpbmcsdGhpcy5za2lubmluZz10LnNraW5uaW5nLHRoaXMubW9ycGhUYXJnZXRzPXQubW9ycGhUYXJnZXRzLHRoaXMubW9ycGhOb3JtYWxzPXQubW9ycGhOb3JtYWxzLHRoaXMuZXh0ZW5zaW9ucz1PYmplY3QuYXNzaWduKHt9LHQuZXh0ZW5zaW9ucyksdGhpcy5nbHNsVmVyc2lvbj10Lmdsc2xWZXJzaW9uLHRoaXN9LE1ldC5wcm90b3R5cGUudG9KU09OPWZ1bmN0aW9uKHQpe2NvbnN0IG49eW50LnByb3RvdHlwZS50b0pTT04uY2FsbCh0aGlzLHQpO24uZ2xzbFZlcnNpb249dGhpcy5nbHNsVmVyc2lvbixuLnVuaWZvcm1zPXt9O2Zvcihjb25zdCBlIGluIHRoaXMudW5pZm9ybXMpe2NvbnN0IGE9dGhpcy51bmlmb3Jtc1tlXS52YWx1ZTtuLnVuaWZvcm1zW2VdPWEmJmEuaXNUZXh0dXJlP3t0eXBlOiJ0Iix2YWx1ZTphLnRvSlNPTih0KS51dWlkfTphJiZhLmlzQ29sb3I/e3R5cGU6ImMiLHZhbHVlOmEuZ2V0SGV4KCl9OmEmJmEuaXNWZWN0b3IyP3t0eXBlOiJ2MiIsdmFsdWU6YS50b0FycmF5KCl9OmEmJmEuaXNWZWN0b3IzP3t0eXBlOiJ2MyIsdmFsdWU6YS50b0FycmF5KCl9OmEmJmEuaXNWZWN0b3I0P3t0eXBlOiJ2NCIsdmFsdWU6YS50b0FycmF5KCl9OmEmJmEuaXNNYXRyaXgzP3t0eXBlOiJtMyIsdmFsdWU6YS50b0FycmF5KCl9OmEmJmEuaXNNYXRyaXg0P3t0eXBlOiJtNCIsdmFsdWU6YS50b0FycmF5KCl9Ont2YWx1ZTphfX1PYmplY3Qua2V5cyh0aGlzLmRlZmluZXMpLmxlbmd0aD4wJiYobi5kZWZpbmVzPXRoaXMuZGVmaW5lcyksbi52ZXJ0ZXhTaGFkZXI9dGhpcy52ZXJ0ZXhTaGFkZXIsbi5mcmFnbWVudFNoYWRlcj10aGlzLmZyYWdtZW50U2hhZGVyO2NvbnN0IGU9e307Zm9yKGNvbnN0IHQgaW4gdGhpcy5leHRlbnNpb25zKSEwPT09dGhpcy5leHRlbnNpb25zW3RdJiYoZVt0XT0hMCk7cmV0dXJuIE9iamVjdC5rZXlzKGUpLmxlbmd0aD4wJiYobi5leHRlbnNpb25zPWUpLG59LE9ldC5wcm90b3R5cGU9T2JqZWN0LmFzc2lnbihPYmplY3QuY3JlYXRlKCR0dC5wcm90b3R5cGUpLHtjb25zdHJ1Y3RvcjpPZXQsaXNDYW1lcmE6ITAsY29weTpmdW5jdGlvbih0LG4pe3JldHVybiAkdHQucHJvdG90eXBlLmNvcHkuY2FsbCh0aGlzLHQsbiksdGhpcy5tYXRyaXhXb3JsZEludmVyc2UuY29weSh0Lm1hdHJpeFdvcmxkSW52ZXJzZSksdGhpcy5wcm9qZWN0aW9uTWF0cml4LmNvcHkodC5wcm9qZWN0aW9uTWF0cml4KSx0aGlzLnByb2plY3Rpb25NYXRyaXhJbnZlcnNlLmNvcHkodC5wcm9qZWN0aW9uTWF0cml4SW52ZXJzZSksdGhpc30sZ2V0V29ybGREaXJlY3Rpb246ZnVuY3Rpb24odCl7dm9pZCAwPT09dCYmKGNvbnNvbGUud2FybigiVEhSRUUuQ2FtZXJhOiAuZ2V0V29ybGREaXJlY3Rpb24oKSB0YXJnZXQgaXMgbm93IHJlcXVpcmVkIiksdD1uZXcgdHR0KSx0aGlzLnVwZGF0ZVdvcmxkTWF0cml4KCEwLCExKTtjb25zdCBuPXRoaXMubWF0cml4V29ybGQuZWxlbWVudHM7cmV0dXJuIHQuc2V0KC1uWzhdLC1uWzldLC1uWzEwXSkubm9ybWFsaXplKCl9LHVwZGF0ZU1hdHJpeFdvcmxkOmZ1bmN0aW9uKHQpeyR0dC5wcm90b3R5cGUudXBkYXRlTWF0cml4V29ybGQuY2FsbCh0aGlzLHQpLHRoaXMubWF0cml4V29ybGRJbnZlcnNlLmNvcHkodGhpcy5tYXRyaXhXb3JsZCkuaW52ZXJ0KCl9LHVwZGF0ZVdvcmxkTWF0cml4OmZ1bmN0aW9uKHQsbil7JHR0LnByb3RvdHlwZS51cGRhdGVXb3JsZE1hdHJpeC5jYWxsKHRoaXMsdCxuKSx0aGlzLm1hdHJpeFdvcmxkSW52ZXJzZS5jb3B5KHRoaXMubWF0cml4V29ybGQpLmludmVydCgpfSxjbG9uZTpmdW5jdGlvbigpe3JldHVybihuZXcgdGhpcy5jb25zdHJ1Y3RvcikuY29weSh0aGlzKX19KSxQZXQucHJvdG90eXBlPU9iamVjdC5hc3NpZ24oT2JqZWN0LmNyZWF0ZShPZXQucHJvdG90eXBlKSx7Y29uc3RydWN0b3I6UGV0LGlzUGVyc3BlY3RpdmVDYW1lcmE6ITAsY29weTpmdW5jdGlvbih0LG4pe3JldHVybiBPZXQucHJvdG90eXBlLmNvcHkuY2FsbCh0aGlzLHQsbiksdGhpcy5mb3Y9dC5mb3YsdGhpcy56b29tPXQuem9vbSx0aGlzLm5lYXI9dC5uZWFyLHRoaXMuZmFyPXQuZmFyLHRoaXMuZm9jdXM9dC5mb2N1cyx0aGlzLmFzcGVjdD10LmFzcGVjdCx0aGlzLnZpZXc9bnVsbD09PXQudmlldz9udWxsOk9iamVjdC5hc3NpZ24oe30sdC52aWV3KSx0aGlzLmZpbG1HYXVnZT10LmZpbG1HYXVnZSx0aGlzLmZpbG1PZmZzZXQ9dC5maWxtT2Zmc2V0LHRoaXN9LHNldEZvY2FsTGVuZ3RoOmZ1bmN0aW9uKHQpe2NvbnN0IG49LjUqdGhpcy5nZXRGaWxtSGVpZ2h0KCkvdDt0aGlzLmZvdj0yKlU5LlJBRDJERUcqTWF0aC5hdGFuKG4pLHRoaXMudXBkYXRlUHJvamVjdGlvbk1hdHJpeCgpfSxnZXRGb2NhbExlbmd0aDpmdW5jdGlvbigpe2NvbnN0IHQ9TWF0aC50YW4oLjUqVTkuREVHMlJBRCp0aGlzLmZvdik7cmV0dXJuLjUqdGhpcy5nZXRGaWxtSGVpZ2h0KCkvdH0sZ2V0RWZmZWN0aXZlRk9WOmZ1bmN0aW9uKCl7cmV0dXJuIDIqVTkuUkFEMkRFRypNYXRoLmF0YW4oTWF0aC50YW4oLjUqVTkuREVHMlJBRCp0aGlzLmZvdikvdGhpcy56b29tKX0sZ2V0RmlsbVdpZHRoOmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuZmlsbUdhdWdlKk1hdGgubWluKHRoaXMuYXNwZWN0LDEpfSxnZXRGaWxtSGVpZ2h0OmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuZmlsbUdhdWdlL01hdGgubWF4KHRoaXMuYXNwZWN0LDEpfSxzZXRWaWV3T2Zmc2V0OmZ1bmN0aW9uKHQsbixlLGEsbyxyKXt0aGlzLmFzcGVjdD10L24sbnVsbD09PXRoaXMudmlldyYmKHRoaXMudmlldz17ZW5hYmxlZDohMCxmdWxsV2lkdGg6MSxmdWxsSGVpZ2h0OjEsb2Zmc2V0WDowLG9mZnNldFk6MCx3aWR0aDoxLGhlaWdodDoxfSksdGhpcy52aWV3LmVuYWJsZWQ9ITAsdGhpcy52aWV3LmZ1bGxXaWR0aD10LHRoaXMudmlldy5mdWxsSGVpZ2h0PW4sdGhpcy52aWV3Lm9mZnNldFg9ZSx0aGlzLnZpZXcub2Zmc2V0WT1hLHRoaXMudmlldy53aWR0aD1vLHRoaXMudmlldy5oZWlnaHQ9cix0aGlzLnVwZGF0ZVByb2plY3Rpb25NYXRyaXgoKX0sY2xlYXJWaWV3T2Zmc2V0OmZ1bmN0aW9uKCl7bnVsbCE9PXRoaXMudmlldyYmKHRoaXMudmlldy5lbmFibGVkPSExKSx0aGlzLnVwZGF0ZVByb2plY3Rpb25NYXRyaXgoKX0sdXBkYXRlUHJvamVjdGlvbk1hdHJpeDpmdW5jdGlvbigpe2NvbnN0IHQ9dGhpcy5uZWFyO2xldCBuPXQqTWF0aC50YW4oLjUqVTkuREVHMlJBRCp0aGlzLmZvdikvdGhpcy56b29tLGU9MipuLGE9dGhpcy5hc3BlY3QqZSxvPS0uNSphO2NvbnN0IHI9dGhpcy52aWV3O2lmKG51bGwhPT10aGlzLnZpZXcmJnRoaXMudmlldy5lbmFibGVkKXtjb25zdCB0PXIuZnVsbFdpZHRoLGk9ci5mdWxsSGVpZ2h0O28rPXIub2Zmc2V0WCphL3Qsbi09ci5vZmZzZXRZKmUvaSxhKj1yLndpZHRoL3QsZSo9ci5oZWlnaHQvaX1jb25zdCBpPXRoaXMuZmlsbU9mZnNldDswIT09aSYmKG8rPXQqaS90aGlzLmdldEZpbG1XaWR0aCgpKSx0aGlzLnByb2plY3Rpb25NYXRyaXgubWFrZVBlcnNwZWN0aXZlKG8sbythLG4sbi1lLHQsdGhpcy5mYXIpLHRoaXMucHJvamVjdGlvbk1hdHJpeEludmVyc2UuY29weSh0aGlzLnByb2plY3Rpb25NYXRyaXgpLmludmVydCgpfSx0b0pTT046ZnVuY3Rpb24odCl7Y29uc3Qgbj0kdHQucHJvdG90eXBlLnRvSlNPTi5jYWxsKHRoaXMsdCk7cmV0dXJuIG4ub2JqZWN0LmZvdj10aGlzLmZvdixuLm9iamVjdC56b29tPXRoaXMuem9vbSxuLm9iamVjdC5uZWFyPXRoaXMubmVhcixuLm9iamVjdC5mYXI9dGhpcy5mYXIsbi5vYmplY3QuZm9jdXM9dGhpcy5mb2N1cyxuLm9iamVjdC5hc3BlY3Q9dGhpcy5hc3BlY3QsbnVsbCE9PXRoaXMudmlldyYmKG4ub2JqZWN0LnZpZXc9T2JqZWN0LmFzc2lnbih7fSx0aGlzLnZpZXcpKSxuLm9iamVjdC5maWxtR2F1Z2U9dGhpcy5maWxtR2F1Z2Usbi5vYmplY3QuZmlsbU9mZnNldD10aGlzLmZpbG1PZmZzZXQsbn19KTtjb25zdCB4ZXQ9OTA7ZnVuY3Rpb24geWV0KHQsbixlKXtpZigkdHQuY2FsbCh0aGlzKSx0aGlzLnR5cGU9IkN1YmVDYW1lcmEiLCEwIT09ZS5pc1dlYkdMQ3ViZVJlbmRlclRhcmdldClyZXR1cm4gdm9pZCBjb25zb2xlLmVycm9yKCJUSFJFRS5DdWJlQ2FtZXJhOiBUaGUgY29uc3RydWN0b3Igbm93IGV4cGVjdHMgYW4gaW5zdGFuY2Ugb2YgV2ViR0xDdWJlUmVuZGVyVGFyZ2V0IGFzIHRoaXJkIHBhcmFtZXRlci4iKTt0aGlzLnJlbmRlclRhcmdldD1lO2NvbnN0IGE9bmV3IFBldCh4ZXQsMSx0LG4pO2EubGF5ZXJzPXRoaXMubGF5ZXJzLGEudXAuc2V0KDAsLTEsMCksYS5sb29rQXQobmV3IHR0dCgxLDAsMCkpLHRoaXMuYWRkKGEpO2NvbnN0IG89bmV3IFBldCh4ZXQsMSx0LG4pO28ubGF5ZXJzPXRoaXMubGF5ZXJzLG8udXAuc2V0KDAsLTEsMCksby5sb29rQXQobmV3IHR0dCgtMSwwLDApKSx0aGlzLmFkZChvKTtjb25zdCByPW5ldyBQZXQoeGV0LDEsdCxuKTtyLmxheWVycz10aGlzLmxheWVycyxyLnVwLnNldCgwLDAsMSksci5sb29rQXQobmV3IHR0dCgwLDEsMCkpLHRoaXMuYWRkKHIpO2NvbnN0IGk9bmV3IFBldCh4ZXQsMSx0LG4pO2kubGF5ZXJzPXRoaXMubGF5ZXJzLGkudXAuc2V0KDAsMCwtMSksaS5sb29rQXQobmV3IHR0dCgwLC0xLDApKSx0aGlzLmFkZChpKTtjb25zdCBjPW5ldyBQZXQoeGV0LDEsdCxuKTtjLmxheWVycz10aGlzLmxheWVycyxjLnVwLnNldCgwLC0xLDApLGMubG9va0F0KG5ldyB0dHQoMCwwLDEpKSx0aGlzLmFkZChjKTtjb25zdCBzPW5ldyBQZXQoeGV0LDEsdCxuKTtzLmxheWVycz10aGlzLmxheWVycyxzLnVwLnNldCgwLC0xLDApLHMubG9va0F0KG5ldyB0dHQoMCwwLC0xKSksdGhpcy5hZGQocyksdGhpcy51cGRhdGU9ZnVuY3Rpb24odCxuKXtudWxsPT09dGhpcy5wYXJlbnQmJnRoaXMudXBkYXRlTWF0cml4V29ybGQoKTtjb25zdCBsPXQueHIuZW5hYmxlZCxtPXQuZ2V0UmVuZGVyVGFyZ2V0KCk7dC54ci5lbmFibGVkPSExO2NvbnN0IGQ9ZS50ZXh0dXJlLmdlbmVyYXRlTWlwbWFwcztlLnRleHR1cmUuZ2VuZXJhdGVNaXBtYXBzPSExLHQuc2V0UmVuZGVyVGFyZ2V0KGUsMCksdC5yZW5kZXIobixhKSx0LnNldFJlbmRlclRhcmdldChlLDEpLHQucmVuZGVyKG4sbyksdC5zZXRSZW5kZXJUYXJnZXQoZSwyKSx0LnJlbmRlcihuLHIpLHQuc2V0UmVuZGVyVGFyZ2V0KGUsMyksdC5yZW5kZXIobixpKSx0LnNldFJlbmRlclRhcmdldChlLDQpLHQucmVuZGVyKG4sYyksZS50ZXh0dXJlLmdlbmVyYXRlTWlwbWFwcz1kLHQuc2V0UmVuZGVyVGFyZ2V0KGUsNSksdC5yZW5kZXIobixzKSx0LnNldFJlbmRlclRhcmdldChtKSx0LnhyLmVuYWJsZWQ9bH19ZnVuY3Rpb24ga2V0KHQsbixlLGEsbyxyLGksYyxzLGwpe1g5LmNhbGwodGhpcyx0PXZvaWQgMCE9PXQ/dDpbXSxuPXZvaWQgMCE9PW4/bjozMDEsZSxhLG8scixpPXZvaWQgMCE9PWk/aTprOSxjLHMsbCksdGhpcy5mbGlwWT0hMSx0aGlzLl9uZWVkc0ZsaXBFbnZNYXA9ITB9KHlldC5wcm90b3R5cGU9T2JqZWN0LmNyZWF0ZSgkdHQucHJvdG90eXBlKSkuY29uc3RydWN0b3I9eWV0LChrZXQucHJvdG90eXBlPU9iamVjdC5jcmVhdGUoWDkucHJvdG90eXBlKSkuY29uc3RydWN0b3I9a2V0LGtldC5wcm90b3R5cGUuaXNDdWJlVGV4dHVyZT0hMCxPYmplY3QuZGVmaW5lUHJvcGVydHkoa2V0LnByb3RvdHlwZSwiaW1hZ2VzIix7Z2V0OmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuaW1hZ2V9LHNldDpmdW5jdGlvbih0KXt0aGlzLmltYWdlPXR9fSk7Y2xhc3MgdmV0IGV4dGVuZHMgSzl7Y29uc3RydWN0b3IodCxuLGUpe051bWJlci5pc0ludGVnZXIobikmJihjb25zb2xlLndhcm4oIlRIUkVFLldlYkdMQ3ViZVJlbmRlclRhcmdldDogY29uc3RydWN0b3Igc2lnbmF0dXJlIGlzIG5vdyBXZWJHTEN1YmVSZW5kZXJUYXJnZXQoIHNpemUsIG9wdGlvbnMgKSIpLG49ZSksc3VwZXIodCx0LG4pLE9iamVjdC5kZWZpbmVQcm9wZXJ0eSh0aGlzLCJpc1dlYkdMQ3ViZVJlbmRlclRhcmdldCIse3ZhbHVlOiEwfSksdGhpcy50ZXh0dXJlPW5ldyBrZXQodm9pZCAwLChuPW58fHt9KS5tYXBwaW5nLG4ud3JhcFMsbi53cmFwVCxuLm1hZ0ZpbHRlcixuLm1pbkZpbHRlcixuLmZvcm1hdCxuLnR5cGUsbi5hbmlzb3Ryb3B5LG4uZW5jb2RpbmcpLHRoaXMudGV4dHVyZS5fbmVlZHNGbGlwRW52TWFwPSExfWZyb21FcXVpcmVjdGFuZ3VsYXJUZXh0dXJlKHQsbil7dGhpcy50ZXh0dXJlLnR5cGU9bi50eXBlLHRoaXMudGV4dHVyZS5mb3JtYXQ9djksdGhpcy50ZXh0dXJlLmVuY29kaW5nPW4uZW5jb2RpbmcsdGhpcy50ZXh0dXJlLmdlbmVyYXRlTWlwbWFwcz1uLmdlbmVyYXRlTWlwbWFwcyx0aGlzLnRleHR1cmUubWluRmlsdGVyPW4ubWluRmlsdGVyLHRoaXMudGV4dHVyZS5tYWdGaWx0ZXI9bi5tYWdGaWx0ZXI7Y29uc3QgZT1uZXcgZmV0KDUsNSw1KSxhPW5ldyBNZXQoe25hbWU6IkN1YmVtYXBGcm9tRXF1aXJlY3QiLHVuaWZvcm1zOmhldCh7dEVxdWlyZWN0Ont2YWx1ZTpudWxsfX0pLHZlcnRleFNoYWRlcjoiXG5cblx0XHRcdFx0dmFyeWluZyB2ZWMzIHZXb3JsZERpcmVjdGlvbjtcblxuXHRcdFx0XHR2ZWMzIHRyYW5zZm9ybURpcmVjdGlvbiggaW4gdmVjMyBkaXIsIGluIG1hdDQgbWF0cml4ICkge1xuXG5cdFx0XHRcdFx0cmV0dXJuIG5vcm1hbGl6ZSggKCBtYXRyaXggKiB2ZWM0KCBkaXIsIDAuMCApICkueHl6ICk7XG5cblx0XHRcdFx0fVxuXG5cdFx0XHRcdHZvaWQgbWFpbigpIHtcblxuXHRcdFx0XHRcdHZXb3JsZERpcmVjdGlvbiA9IHRyYW5zZm9ybURpcmVjdGlvbiggcG9zaXRpb24sIG1vZGVsTWF0cml4ICk7XG5cblx0XHRcdFx0XHQjaW5jbHVkZSA8YmVnaW5fdmVydGV4PlxuXHRcdFx0XHRcdCNpbmNsdWRlIDxwcm9qZWN0X3ZlcnRleD5cblxuXHRcdFx0XHR9XG5cdFx0XHQiLGZyYWdtZW50U2hhZGVyOiJcblxuXHRcdFx0XHR1bmlmb3JtIHNhbXBsZXIyRCB0RXF1aXJlY3Q7XG5cblx0XHRcdFx0dmFyeWluZyB2ZWMzIHZXb3JsZERpcmVjdGlvbjtcblxuXHRcdFx0XHQjaW5jbHVkZSA8Y29tbW9uPlxuXG5cdFx0XHRcdHZvaWQgbWFpbigpIHtcblxuXHRcdFx0XHRcdHZlYzMgZGlyZWN0aW9uID0gbm9ybWFsaXplKCB2V29ybGREaXJlY3Rpb24gKTtcblxuXHRcdFx0XHRcdHZlYzIgc2FtcGxlVVYgPSBlcXVpcmVjdFV2KCBkaXJlY3Rpb24gKTtcblxuXHRcdFx0XHRcdGdsX0ZyYWdDb2xvciA9IHRleHR1cmUyRCggdEVxdWlyZWN0LCBzYW1wbGVVViApO1xuXG5cdFx0XHRcdH1cblx0XHRcdCIsc2lkZToxLGJsZW5kaW5nOjB9KTthLnVuaWZvcm1zLnRFcXVpcmVjdC52YWx1ZT1uO2NvbnN0IG89bmV3IGJldChlLGEpLHI9bi5taW5GaWx0ZXI7cmV0dXJuIG4ubWluRmlsdGVyPT09QzkmJihuLm1pbkZpbHRlcj1fOSksbmV3IHlldCgxLDEwLHRoaXMpLnVwZGF0ZSh0LG8pLG4ubWluRmlsdGVyPXIsby5nZW9tZXRyeS5kaXNwb3NlKCksby5tYXRlcmlhbC5kaXNwb3NlKCksdGhpc31jbGVhcih0LG4sZSxhKXtjb25zdCBvPXQuZ2V0UmVuZGVyVGFyZ2V0KCk7Zm9yKGxldCBvPTA7bzw2O28rKyl0LnNldFJlbmRlclRhcmdldCh0aGlzLG8pLHQuY2xlYXIobixlLGEpO3Quc2V0UmVuZGVyVGFyZ2V0KG8pfX1mdW5jdGlvbiB3ZXQodCxuLGUsYSxvLHIsaSxjLHMsbCxtLGQpe1g5LmNhbGwodGhpcyxudWxsLHIsaSxjLHMsbCxhLG8sbSxkKSx0aGlzLmltYWdlPXtkYXRhOnR8fG51bGwsd2lkdGg6bnx8MSxoZWlnaHQ6ZXx8MX0sdGhpcy5tYWdGaWx0ZXI9dm9pZCAwIT09cz9zOmg5LHRoaXMubWluRmlsdGVyPXZvaWQgMCE9PWw/bDpoOSx0aGlzLmdlbmVyYXRlTWlwbWFwcz0hMSx0aGlzLmZsaXBZPSExLHRoaXMudW5wYWNrQWxpZ25tZW50PTEsdGhpcy5uZWVkc1VwZGF0ZT0hMH0od2V0LnByb3RvdHlwZT1PYmplY3QuY3JlYXRlKFg5LnByb3RvdHlwZSkpLmNvbnN0cnVjdG9yPXdldCx3ZXQucHJvdG90eXBlLmlzRGF0YVRleHR1cmU9ITA7Y29uc3QgRWV0PW5ldyBDdHQsQWV0PW5ldyB0dHQ7Y2xhc3MgemV0e2NvbnN0cnVjdG9yKHQsbixlLGEsbyxyKXt0aGlzLnBsYW5lcz1bdm9pZCAwIT09dD90Om5ldyBhbnQsdm9pZCAwIT09bj9uOm5ldyBhbnQsdm9pZCAwIT09ZT9lOm5ldyBhbnQsdm9pZCAwIT09YT9hOm5ldyBhbnQsdm9pZCAwIT09bz9vOm5ldyBhbnQsdm9pZCAwIT09cj9yOm5ldyBhbnRdfXNldCh0LG4sZSxhLG8scil7Y29uc3QgaT10aGlzLnBsYW5lcztyZXR1cm4gaVswXS5jb3B5KHQpLGlbMV0uY29weShuKSxpWzJdLmNvcHkoZSksaVszXS5jb3B5KGEpLGlbNF0uY29weShvKSxpWzVdLmNvcHkociksdGhpc31jbG9uZSgpe3JldHVybihuZXcgdGhpcy5jb25zdHJ1Y3RvcikuY29weSh0aGlzKX1jb3B5KHQpe2NvbnN0IG49dGhpcy5wbGFuZXM7Zm9yKGxldCBlPTA7ZTw2O2UrKyluW2VdLmNvcHkodC5wbGFuZXNbZV0pO3JldHVybiB0aGlzfXNldEZyb21Qcm9qZWN0aW9uTWF0cml4KHQpe2NvbnN0IG49dGhpcy5wbGFuZXMsZT10LmVsZW1lbnRzLGE9ZVswXSxvPWVbMV0scj1lWzJdLGk9ZVszXSxjPWVbNF0scz1lWzVdLGw9ZVs2XSxtPWVbN10sZD1lWzhdLGc9ZVs5XSxwPWVbMTBdLGI9ZVsxMV0sdT1lWzEyXSxmPWVbMTNdLGg9ZVsxNF0sXz1lWzE1XTtyZXR1cm4gblswXS5zZXRDb21wb25lbnRzKGktYSxtLWMsYi1kLF8tdSkubm9ybWFsaXplKCksblsxXS5zZXRDb21wb25lbnRzKGkrYSxtK2MsYitkLF8rdSkubm9ybWFsaXplKCksblsyXS5zZXRDb21wb25lbnRzKGkrbyxtK3MsYitnLF8rZikubm9ybWFsaXplKCksblszXS5zZXRDb21wb25lbnRzKGktbyxtLXMsYi1nLF8tZikubm9ybWFsaXplKCksbls0XS5zZXRDb21wb25lbnRzKGktcixtLWwsYi1wLF8taCkubm9ybWFsaXplKCksbls1XS5zZXRDb21wb25lbnRzKGkrcixtK2wsYitwLF8raCkubm9ybWFsaXplKCksdGhpc31pbnRlcnNlY3RzT2JqZWN0KHQpe2NvbnN0IG49dC5nZW9tZXRyeTtyZXR1cm4gbnVsbD09PW4uYm91bmRpbmdTcGhlcmUmJm4uY29tcHV0ZUJvdW5kaW5nU3BoZXJlKCksRWV0LmNvcHkobi5ib3VuZGluZ1NwaGVyZSkuYXBwbHlNYXRyaXg0KHQubWF0cml4V29ybGQpLHRoaXMuaW50ZXJzZWN0c1NwaGVyZShFZXQpfWludGVyc2VjdHNTcHJpdGUodCl7cmV0dXJuIEVldC5jZW50ZXIuc2V0KDAsMCwwKSxFZXQucmFkaXVzPS43MDcxMDY3ODExODY1NDc2LEVldC5hcHBseU1hdHJpeDQodC5tYXRyaXhXb3JsZCksdGhpcy5pbnRlcnNlY3RzU3BoZXJlKEVldCl9aW50ZXJzZWN0c1NwaGVyZSh0KXtjb25zdCBuPXRoaXMucGxhbmVzLGU9dC5jZW50ZXIsYT0tdC5yYWRpdXM7Zm9yKGxldCB0PTA7dDw2O3QrKylpZihuW3RdLmRpc3RhbmNlVG9Qb2ludChlKTxhKXJldHVybiExO3JldHVybiEwfWludGVyc2VjdHNCb3godCl7Y29uc3Qgbj10aGlzLnBsYW5lcztmb3IobGV0IGU9MDtlPDY7ZSsrKXtjb25zdCBhPW5bZV07aWYoQWV0Lng9YS5ub3JtYWwueD4wP3QubWF4Lng6dC5taW4ueCxBZXQueT1hLm5vcm1hbC55PjA/dC5tYXgueTp0Lm1pbi55LEFldC56PWEubm9ybWFsLno+MD90Lm1heC56OnQubWluLnosYS5kaXN0YW5jZVRvUG9pbnQoQWV0KTwwKXJldHVybiExfXJldHVybiEwfWNvbnRhaW5zUG9pbnQodCl7Y29uc3Qgbj10aGlzLnBsYW5lcztmb3IobGV0IGU9MDtlPDY7ZSsrKWlmKG5bZV0uZGlzdGFuY2VUb1BvaW50KHQpPDApcmV0dXJuITE7cmV0dXJuITB9fWZ1bmN0aW9uIFJldCgpe2xldCB0PW51bGwsbj0hMSxlPW51bGwsYT1udWxsO2Z1bmN0aW9uIG8obixyKXtlKG4sciksYT10LnJlcXVlc3RBbmltYXRpb25GcmFtZShvKX1yZXR1cm57c3RhcnQ6ZnVuY3Rpb24oKXshMCE9PW4mJm51bGwhPT1lJiYoYT10LnJlcXVlc3RBbmltYXRpb25GcmFtZShvKSxuPSEwKX0sc3RvcDpmdW5jdGlvbigpe3QuY2FuY2VsQW5pbWF0aW9uRnJhbWUoYSksbj0hMX0sc2V0QW5pbWF0aW9uTG9vcDpmdW5jdGlvbih0KXtlPXR9LHNldENvbnRleHQ6ZnVuY3Rpb24obil7dD1ufX19ZnVuY3Rpb24gVGV0KHQsbil7Y29uc3QgZT1uLmlzV2ViR0wyLGE9bmV3IFdlYWtNYXA7cmV0dXJue2dldDpmdW5jdGlvbiBvKHQpe3JldHVybiB0LmlzSW50ZXJsZWF2ZWRCdWZmZXJBdHRyaWJ1dGUmJih0PXQuZGF0YSksYS5nZXQodCl9LHJlbW92ZTpmdW5jdGlvbiByKG4pe24uaXNJbnRlcmxlYXZlZEJ1ZmZlckF0dHJpYnV0ZSYmKG49bi5kYXRhKTtjb25zdCBlPWEuZ2V0KG4pO2UmJih0LmRlbGV0ZUJ1ZmZlcihlLmJ1ZmZlciksYS5kZWxldGUobikpfSx1cGRhdGU6ZnVuY3Rpb24gaShuLG8pe2lmKG4uaXNHTEJ1ZmZlckF0dHJpYnV0ZSl7Y29uc3QgdD1hLmdldChuKTtyZXR1cm4gdm9pZCgoIXR8fHQudmVyc2lvbjxuLnZlcnNpb24pJiZhLnNldChuLHtidWZmZXI6bi5idWZmZXIsdHlwZTpuLnR5cGUsYnl0ZXNQZXJFbGVtZW50Om4uZWxlbWVudFNpemUsdmVyc2lvbjpuLnZlcnNpb259KSl9bi5pc0ludGVybGVhdmVkQnVmZmVyQXR0cmlidXRlJiYobj1uLmRhdGEpO2NvbnN0IHI9YS5nZXQobik7dm9pZCAwPT09cj9hLnNldChuLChmdW5jdGlvbiBpKG4sYSl7Y29uc3Qgbz1uLmFycmF5LHI9bi51c2FnZSxpPXQuY3JlYXRlQnVmZmVyKCk7dC5iaW5kQnVmZmVyKGEsaSksdC5idWZmZXJEYXRhKGEsbyxyKSxuLm9uVXBsb2FkQ2FsbGJhY2soKTtsZXQgYz01MTI2O3JldHVybiBvIGluc3RhbmNlb2YgRmxvYXQzMkFycmF5P2M9NTEyNjpvIGluc3RhbmNlb2YgRmxvYXQ2NEFycmF5P2NvbnNvbGUud2FybigiVEhSRUUuV2ViR0xBdHRyaWJ1dGVzOiBVbnN1cHBvcnRlZCBkYXRhIGJ1ZmZlciBmb3JtYXQ6IEZsb2F0NjRBcnJheS4iKTpvIGluc3RhbmNlb2YgVWludDE2QXJyYXk/bi5pc0Zsb2F0MTZCdWZmZXJBdHRyaWJ1dGU/ZT9jPTUxMzE6Y29uc29sZS53YXJuKCJUSFJFRS5XZWJHTEF0dHJpYnV0ZXM6IFVzYWdlIG9mIEZsb2F0MTZCdWZmZXJBdHRyaWJ1dGUgcmVxdWlyZXMgV2ViR0wyLiIpOmM9NTEyMzpvIGluc3RhbmNlb2YgSW50MTZBcnJheT9jPTUxMjI6byBpbnN0YW5jZW9mIFVpbnQzMkFycmF5P2M9NTEyNTpvIGluc3RhbmNlb2YgSW50MzJBcnJheT9jPTUxMjQ6byBpbnN0YW5jZW9mIEludDhBcnJheT9jPTUxMjA6byBpbnN0YW5jZW9mIFVpbnQ4QXJyYXkmJihjPTUxMjEpLHtidWZmZXI6aSx0eXBlOmMsYnl0ZXNQZXJFbGVtZW50Om8uQllURVNfUEVSX0VMRU1FTlQsdmVyc2lvbjpuLnZlcnNpb259fSkobixvKSk6ci52ZXJzaW9uPG4udmVyc2lvbiYmKChmdW5jdGlvbiBjKG4sYSxvKXtjb25zdCByPWEuYXJyYXksaT1hLnVwZGF0ZVJhbmdlO3QuYmluZEJ1ZmZlcihvLG4pLC0xPT09aS5jb3VudD90LmJ1ZmZlclN1YkRhdGEobywwLHIpOihlP3QuYnVmZmVyU3ViRGF0YShvLGkub2Zmc2V0KnIuQllURVNfUEVSX0VMRU1FTlQscixpLm9mZnNldCxpLmNvdW50KTp0LmJ1ZmZlclN1YkRhdGEobyxpLm9mZnNldCpyLkJZVEVTX1BFUl9FTEVNRU5ULHIuc3ViYXJyYXkoaS5vZmZzZXQsaS5vZmZzZXQraS5jb3VudCkpLGkuY291bnQ9LTEpfSkoci5idWZmZXIsbixvKSxyLnZlcnNpb249bi52ZXJzaW9uKX19fWNsYXNzIERldCBleHRlbmRzIFhudHtjb25zdHJ1Y3Rvcih0PTEsbj0xLGU9MSxhPTEpe3N1cGVyKCksdGhpcy50eXBlPSJQbGFuZUdlb21ldHJ5Iix0aGlzLnBhcmFtZXRlcnM9e3dpZHRoOnQsaGVpZ2h0Om4sd2lkdGhTZWdtZW50czplLGhlaWdodFNlZ21lbnRzOmF9O2NvbnN0IG89dC8yLHI9bi8yLGk9TWF0aC5mbG9vcihlKSxjPU1hdGguZmxvb3IoYSkscz1pKzEsbD1jKzEsbT10L2ksZD1uL2MsZz1bXSxwPVtdLGI9W10sdT1bXTtmb3IobGV0IHQ9MDt0PGw7dCsrKXtjb25zdCBuPXQqZC1yO2ZvcihsZXQgZT0wO2U8cztlKyspcC5wdXNoKGUqbS1vLC1uLDApLGIucHVzaCgwLDAsMSksdS5wdXNoKGUvaSksdS5wdXNoKDEtdC9jKX1mb3IobGV0IHQ9MDt0PGM7dCsrKWZvcihsZXQgbj0wO248aTtuKyspe2NvbnN0IGU9bitzKih0KzEpLGE9bisxK3MqKHQrMSksbz1uKzErcyp0O2cucHVzaChuK3MqdCxlLG8pLGcucHVzaChlLGEsbyl9dGhpcy5zZXRJbmRleChnKSx0aGlzLnNldEF0dHJpYnV0ZSgicG9zaXRpb24iLG5ldyBGbnQocCwzKSksdGhpcy5zZXRBdHRyaWJ1dGUoIm5vcm1hbCIsbmV3IEZudChiLDMpKSx0aGlzLnNldEF0dHJpYnV0ZSgidXYiLG5ldyBGbnQodSwyKSl9fWNvbnN0IElldD17YWxwaGFtYXBfZnJhZ21lbnQ6IiNpZmRlZiBVU0VfQUxQSEFNQVBcblx0ZGlmZnVzZUNvbG9yLmEgKj0gdGV4dHVyZTJEKCBhbHBoYU1hcCwgdlV2ICkuZztcbiNlbmRpZiIsYWxwaGFtYXBfcGFyc19mcmFnbWVudDoiI2lmZGVmIFVTRV9BTFBIQU1BUFxuXHR1bmlmb3JtIHNhbXBsZXIyRCBhbHBoYU1hcDtcbiNlbmRpZiIsYWxwaGF0ZXN0X2ZyYWdtZW50OiIjaWZkZWYgQUxQSEFURVNUXG5cdGlmICggZGlmZnVzZUNvbG9yLmEgPCBBTFBIQVRFU1QgKSBkaXNjYXJkO1xuI2VuZGlmIixhb21hcF9mcmFnbWVudDoiI2lmZGVmIFVTRV9BT01BUFxuXHRmbG9hdCBhbWJpZW50T2NjbHVzaW9uID0gKCB0ZXh0dXJlMkQoIGFvTWFwLCB2VXYyICkuciAtIDEuMCApICogYW9NYXBJbnRlbnNpdHkgKyAxLjA7XG5cdHJlZmxlY3RlZExpZ2h0LmluZGlyZWN0RGlmZnVzZSAqPSBhbWJpZW50T2NjbHVzaW9uO1xuXHQjaWYgZGVmaW5lZCggVVNFX0VOVk1BUCApICYmIGRlZmluZWQoIFNUQU5EQVJEIClcblx0XHRmbG9hdCBkb3ROViA9IHNhdHVyYXRlKCBkb3QoIGdlb21ldHJ5Lm5vcm1hbCwgZ2VvbWV0cnkudmlld0RpciApICk7XG5cdFx0cmVmbGVjdGVkTGlnaHQuaW5kaXJlY3RTcGVjdWxhciAqPSBjb21wdXRlU3BlY3VsYXJPY2NsdXNpb24oIGRvdE5WLCBhbWJpZW50T2NjbHVzaW9uLCBtYXRlcmlhbC5zcGVjdWxhclJvdWdobmVzcyApO1xuXHQjZW5kaWZcbiNlbmRpZiIsYW9tYXBfcGFyc19mcmFnbWVudDoiI2lmZGVmIFVTRV9BT01BUFxuXHR1bmlmb3JtIHNhbXBsZXIyRCBhb01hcDtcblx0dW5pZm9ybSBmbG9hdCBhb01hcEludGVuc2l0eTtcbiNlbmRpZiIsYmVnaW5fdmVydGV4OiJ2ZWMzIHRyYW5zZm9ybWVkID0gdmVjMyggcG9zaXRpb24gKTsiLGJlZ2lubm9ybWFsX3ZlcnRleDoidmVjMyBvYmplY3ROb3JtYWwgPSB2ZWMzKCBub3JtYWwgKTtcbiNpZmRlZiBVU0VfVEFOR0VOVFxuXHR2ZWMzIG9iamVjdFRhbmdlbnQgPSB2ZWMzKCB0YW5nZW50Lnh5eiApO1xuI2VuZGlmIixic2RmczoidmVjMiBpbnRlZ3JhdGVTcGVjdWxhckJSREYoIGNvbnN0IGluIGZsb2F0IGRvdE5WLCBjb25zdCBpbiBmbG9hdCByb3VnaG5lc3MgKSB7XG5cdGNvbnN0IHZlYzQgYzAgPSB2ZWM0KCAtIDEsIC0gMC4wMjc1LCAtIDAuNTcyLCAwLjAyMiApO1xuXHRjb25zdCB2ZWM0IGMxID0gdmVjNCggMSwgMC4wNDI1LCAxLjA0LCAtIDAuMDQgKTtcblx0dmVjNCByID0gcm91Z2huZXNzICogYzAgKyBjMTtcblx0ZmxvYXQgYTAwNCA9IG1pbiggci54ICogci54LCBleHAyKCAtIDkuMjggKiBkb3ROViApICkgKiByLnggKyByLnk7XG5cdHJldHVybiB2ZWMyKCAtMS4wNCwgMS4wNCApICogYTAwNCArIHIuenc7XG59XG5mbG9hdCBwdW5jdHVhbExpZ2h0SW50ZW5zaXR5VG9JcnJhZGlhbmNlRmFjdG9yKCBjb25zdCBpbiBmbG9hdCBsaWdodERpc3RhbmNlLCBjb25zdCBpbiBmbG9hdCBjdXRvZmZEaXN0YW5jZSwgY29uc3QgaW4gZmxvYXQgZGVjYXlFeHBvbmVudCApIHtcbiNpZiBkZWZpbmVkICggUEhZU0lDQUxMWV9DT1JSRUNUX0xJR0hUUyApXG5cdGZsb2F0IGRpc3RhbmNlRmFsbG9mZiA9IDEuMCAvIG1heCggcG93KCBsaWdodERpc3RhbmNlLCBkZWNheUV4cG9uZW50ICksIDAuMDEgKTtcblx0aWYoIGN1dG9mZkRpc3RhbmNlID4gMC4wICkge1xuXHRcdGRpc3RhbmNlRmFsbG9mZiAqPSBwb3cyKCBzYXR1cmF0ZSggMS4wIC0gcG93NCggbGlnaHREaXN0YW5jZSAvIGN1dG9mZkRpc3RhbmNlICkgKSApO1xuXHR9XG5cdHJldHVybiBkaXN0YW5jZUZhbGxvZmY7XG4jZWxzZVxuXHRpZiggY3V0b2ZmRGlzdGFuY2UgPiAwLjAgJiYgZGVjYXlFeHBvbmVudCA+IDAuMCApIHtcblx0XHRyZXR1cm4gcG93KCBzYXR1cmF0ZSggLWxpZ2h0RGlzdGFuY2UgLyBjdXRvZmZEaXN0YW5jZSArIDEuMCApLCBkZWNheUV4cG9uZW50ICk7XG5cdH1cblx0cmV0dXJuIDEuMDtcbiNlbmRpZlxufVxudmVjMyBCUkRGX0RpZmZ1c2VfTGFtYmVydCggY29uc3QgaW4gdmVjMyBkaWZmdXNlQ29sb3IgKSB7XG5cdHJldHVybiBSRUNJUFJPQ0FMX1BJICogZGlmZnVzZUNvbG9yO1xufVxudmVjMyBGX1NjaGxpY2soIGNvbnN0IGluIHZlYzMgc3BlY3VsYXJDb2xvciwgY29uc3QgaW4gZmxvYXQgZG90TEggKSB7XG5cdGZsb2F0IGZyZXNuZWwgPSBleHAyKCAoIC01LjU1NDczICogZG90TEggLSA2Ljk4MzE2ICkgKiBkb3RMSCApO1xuXHRyZXR1cm4gKCAxLjAgLSBzcGVjdWxhckNvbG9yICkgKiBmcmVzbmVsICsgc3BlY3VsYXJDb2xvcjtcbn1cbnZlYzMgRl9TY2hsaWNrX1JvdWdobmVzc0RlcGVuZGVudCggY29uc3QgaW4gdmVjMyBGMCwgY29uc3QgaW4gZmxvYXQgZG90TlYsIGNvbnN0IGluIGZsb2F0IHJvdWdobmVzcyApIHtcblx0ZmxvYXQgZnJlc25lbCA9IGV4cDIoICggLTUuNTU0NzMgKiBkb3ROViAtIDYuOTgzMTYgKSAqIGRvdE5WICk7XG5cdHZlYzMgRnIgPSBtYXgoIHZlYzMoIDEuMCAtIHJvdWdobmVzcyApLCBGMCApIC0gRjA7XG5cdHJldHVybiBGciAqIGZyZXNuZWwgKyBGMDtcbn1cbmZsb2F0IEdfR0dYX1NtaXRoKCBjb25zdCBpbiBmbG9hdCBhbHBoYSwgY29uc3QgaW4gZmxvYXQgZG90TkwsIGNvbnN0IGluIGZsb2F0IGRvdE5WICkge1xuXHRmbG9hdCBhMiA9IHBvdzIoIGFscGhhICk7XG5cdGZsb2F0IGdsID0gZG90TkwgKyBzcXJ0KCBhMiArICggMS4wIC0gYTIgKSAqIHBvdzIoIGRvdE5MICkgKTtcblx0ZmxvYXQgZ3YgPSBkb3ROViArIHNxcnQoIGEyICsgKCAxLjAgLSBhMiApICogcG93MiggZG90TlYgKSApO1xuXHRyZXR1cm4gMS4wIC8gKCBnbCAqIGd2ICk7XG59XG5mbG9hdCBHX0dHWF9TbWl0aENvcnJlbGF0ZWQoIGNvbnN0IGluIGZsb2F0IGFscGhhLCBjb25zdCBpbiBmbG9hdCBkb3ROTCwgY29uc3QgaW4gZmxvYXQgZG90TlYgKSB7XG5cdGZsb2F0IGEyID0gcG93MiggYWxwaGEgKTtcblx0ZmxvYXQgZ3YgPSBkb3ROTCAqIHNxcnQoIGEyICsgKCAxLjAgLSBhMiApICogcG93MiggZG90TlYgKSApO1xuXHRmbG9hdCBnbCA9IGRvdE5WICogc3FydCggYTIgKyAoIDEuMCAtIGEyICkgKiBwb3cyKCBkb3ROTCApICk7XG5cdHJldHVybiAwLjUgLyBtYXgoIGd2ICsgZ2wsIEVQU0lMT04gKTtcbn1cbmZsb2F0IERfR0dYKCBjb25zdCBpbiBmbG9hdCBhbHBoYSwgY29uc3QgaW4gZmxvYXQgZG90TkggKSB7XG5cdGZsb2F0IGEyID0gcG93MiggYWxwaGEgKTtcblx0ZmxvYXQgZGVub20gPSBwb3cyKCBkb3ROSCApICogKCBhMiAtIDEuMCApICsgMS4wO1xuXHRyZXR1cm4gUkVDSVBST0NBTF9QSSAqIGEyIC8gcG93MiggZGVub20gKTtcbn1cbnZlYzMgQlJERl9TcGVjdWxhcl9HR1goIGNvbnN0IGluIEluY2lkZW50TGlnaHQgaW5jaWRlbnRMaWdodCwgY29uc3QgaW4gdmVjMyB2aWV3RGlyLCBjb25zdCBpbiB2ZWMzIG5vcm1hbCwgY29uc3QgaW4gdmVjMyBzcGVjdWxhckNvbG9yLCBjb25zdCBpbiBmbG9hdCByb3VnaG5lc3MgKSB7XG5cdGZsb2F0IGFscGhhID0gcG93Miggcm91Z2huZXNzICk7XG5cdHZlYzMgaGFsZkRpciA9IG5vcm1hbGl6ZSggaW5jaWRlbnRMaWdodC5kaXJlY3Rpb24gKyB2aWV3RGlyICk7XG5cdGZsb2F0IGRvdE5MID0gc2F0dXJhdGUoIGRvdCggbm9ybWFsLCBpbmNpZGVudExpZ2h0LmRpcmVjdGlvbiApICk7XG5cdGZsb2F0IGRvdE5WID0gc2F0dXJhdGUoIGRvdCggbm9ybWFsLCB2aWV3RGlyICkgKTtcblx0ZmxvYXQgZG90TkggPSBzYXR1cmF0ZSggZG90KCBub3JtYWwsIGhhbGZEaXIgKSApO1xuXHRmbG9hdCBkb3RMSCA9IHNhdHVyYXRlKCBkb3QoIGluY2lkZW50TGlnaHQuZGlyZWN0aW9uLCBoYWxmRGlyICkgKTtcblx0dmVjMyBGID0gRl9TY2hsaWNrKCBzcGVjdWxhckNvbG9yLCBkb3RMSCApO1xuXHRmbG9hdCBHID0gR19HR1hfU21pdGhDb3JyZWxhdGVkKCBhbHBoYSwgZG90TkwsIGRvdE5WICk7XG5cdGZsb2F0IEQgPSBEX0dHWCggYWxwaGEsIGRvdE5IICk7XG5cdHJldHVybiBGICogKCBHICogRCApO1xufVxudmVjMiBMVENfVXYoIGNvbnN0IGluIHZlYzMgTiwgY29uc3QgaW4gdmVjMyBWLCBjb25zdCBpbiBmbG9hdCByb3VnaG5lc3MgKSB7XG5cdGNvbnN0IGZsb2F0IExVVF9TSVpFID0gNjQuMDtcblx0Y29uc3QgZmxvYXQgTFVUX1NDQUxFID0gKCBMVVRfU0laRSAtIDEuMCApIC8gTFVUX1NJWkU7XG5cdGNvbnN0IGZsb2F0IExVVF9CSUFTID0gMC41IC8gTFVUX1NJWkU7XG5cdGZsb2F0IGRvdE5WID0gc2F0dXJhdGUoIGRvdCggTiwgViApICk7XG5cdHZlYzIgdXYgPSB2ZWMyKCByb3VnaG5lc3MsIHNxcnQoIDEuMCAtIGRvdE5WICkgKTtcblx0dXYgPSB1diAqIExVVF9TQ0FMRSArIExVVF9CSUFTO1xuXHRyZXR1cm4gdXY7XG59XG5mbG9hdCBMVENfQ2xpcHBlZFNwaGVyZUZvcm1GYWN0b3IoIGNvbnN0IGluIHZlYzMgZiApIHtcblx0ZmxvYXQgbCA9IGxlbmd0aCggZiApO1xuXHRyZXR1cm4gbWF4KCAoIGwgKiBsICsgZi56ICkgLyAoIGwgKyAxLjAgKSwgMC4wICk7XG59XG52ZWMzIExUQ19FZGdlVmVjdG9yRm9ybUZhY3RvciggY29uc3QgaW4gdmVjMyB2MSwgY29uc3QgaW4gdmVjMyB2MiApIHtcblx0ZmxvYXQgeCA9IGRvdCggdjEsIHYyICk7XG5cdGZsb2F0IHkgPSBhYnMoIHggKTtcblx0ZmxvYXQgYSA9IDAuODU0Mzk4NSArICggMC40OTY1MTU1ICsgMC4wMTQ1MjA2ICogeSApICogeTtcblx0ZmxvYXQgYiA9IDMuNDE3NTk0MCArICggNC4xNjE2NzI0ICsgeSApICogeTtcblx0ZmxvYXQgdiA9IGEgLyBiO1xuXHRmbG9hdCB0aGV0YV9zaW50aGV0YSA9ICggeCA+IDAuMCApID8gdiA6IDAuNSAqIGludmVyc2VzcXJ0KCBtYXgoIDEuMCAtIHggKiB4LCAxZS03ICkgKSAtIHY7XG5cdHJldHVybiBjcm9zcyggdjEsIHYyICkgKiB0aGV0YV9zaW50aGV0YTtcbn1cbnZlYzMgTFRDX0V2YWx1YXRlKCBjb25zdCBpbiB2ZWMzIE4sIGNvbnN0IGluIHZlYzMgViwgY29uc3QgaW4gdmVjMyBQLCBjb25zdCBpbiBtYXQzIG1JbnYsIGNvbnN0IGluIHZlYzMgcmVjdENvb3Jkc1sgNCBdICkge1xuXHR2ZWMzIHYxID0gcmVjdENvb3Jkc1sgMSBdIC0gcmVjdENvb3Jkc1sgMCBdO1xuXHR2ZWMzIHYyID0gcmVjdENvb3Jkc1sgMyBdIC0gcmVjdENvb3Jkc1sgMCBdO1xuXHR2ZWMzIGxpZ2h0Tm9ybWFsID0gY3Jvc3MoIHYxLCB2MiApO1xuXHRpZiggZG90KCBsaWdodE5vcm1hbCwgUCAtIHJlY3RDb29yZHNbIDAgXSApIDwgMC4wICkgcmV0dXJuIHZlYzMoIDAuMCApO1xuXHR2ZWMzIFQxLCBUMjtcblx0VDEgPSBub3JtYWxpemUoIFYgLSBOICogZG90KCBWLCBOICkgKTtcblx0VDIgPSAtIGNyb3NzKCBOLCBUMSApO1xuXHRtYXQzIG1hdCA9IG1JbnYgKiB0cmFuc3Bvc2VNYXQzKCBtYXQzKCBUMSwgVDIsIE4gKSApO1xuXHR2ZWMzIGNvb3Jkc1sgNCBdO1xuXHRjb29yZHNbIDAgXSA9IG1hdCAqICggcmVjdENvb3Jkc1sgMCBdIC0gUCApO1xuXHRjb29yZHNbIDEgXSA9IG1hdCAqICggcmVjdENvb3Jkc1sgMSBdIC0gUCApO1xuXHRjb29yZHNbIDIgXSA9IG1hdCAqICggcmVjdENvb3Jkc1sgMiBdIC0gUCApO1xuXHRjb29yZHNbIDMgXSA9IG1hdCAqICggcmVjdENvb3Jkc1sgMyBdIC0gUCApO1xuXHRjb29yZHNbIDAgXSA9IG5vcm1hbGl6ZSggY29vcmRzWyAwIF0gKTtcblx0Y29vcmRzWyAxIF0gPSBub3JtYWxpemUoIGNvb3Jkc1sgMSBdICk7XG5cdGNvb3Jkc1sgMiBdID0gbm9ybWFsaXplKCBjb29yZHNbIDIgXSApO1xuXHRjb29yZHNbIDMgXSA9IG5vcm1hbGl6ZSggY29vcmRzWyAzIF0gKTtcblx0dmVjMyB2ZWN0b3JGb3JtRmFjdG9yID0gdmVjMyggMC4wICk7XG5cdHZlY3RvckZvcm1GYWN0b3IgKz0gTFRDX0VkZ2VWZWN0b3JGb3JtRmFjdG9yKCBjb29yZHNbIDAgXSwgY29vcmRzWyAxIF0gKTtcblx0dmVjdG9yRm9ybUZhY3RvciArPSBMVENfRWRnZVZlY3RvckZvcm1GYWN0b3IoIGNvb3Jkc1sgMSBdLCBjb29yZHNbIDIgXSApO1xuXHR2ZWN0b3JGb3JtRmFjdG9yICs9IExUQ19FZGdlVmVjdG9yRm9ybUZhY3RvciggY29vcmRzWyAyIF0sIGNvb3Jkc1sgMyBdICk7XG5cdHZlY3RvckZvcm1GYWN0b3IgKz0gTFRDX0VkZ2VWZWN0b3JGb3JtRmFjdG9yKCBjb29yZHNbIDMgXSwgY29vcmRzWyAwIF0gKTtcblx0ZmxvYXQgcmVzdWx0ID0gTFRDX0NsaXBwZWRTcGhlcmVGb3JtRmFjdG9yKCB2ZWN0b3JGb3JtRmFjdG9yICk7XG5cdHJldHVybiB2ZWMzKCByZXN1bHQgKTtcbn1cbnZlYzMgQlJERl9TcGVjdWxhcl9HR1hfRW52aXJvbm1lbnQoIGNvbnN0IGluIHZlYzMgdmlld0RpciwgY29uc3QgaW4gdmVjMyBub3JtYWwsIGNvbnN0IGluIHZlYzMgc3BlY3VsYXJDb2xvciwgY29uc3QgaW4gZmxvYXQgcm91Z2huZXNzICkge1xuXHRmbG9hdCBkb3ROViA9IHNhdHVyYXRlKCBkb3QoIG5vcm1hbCwgdmlld0RpciApICk7XG5cdHZlYzIgYnJkZiA9IGludGVncmF0ZVNwZWN1bGFyQlJERiggZG90TlYsIHJvdWdobmVzcyApO1xuXHRyZXR1cm4gc3BlY3VsYXJDb2xvciAqIGJyZGYueCArIGJyZGYueTtcbn1cbnZvaWQgQlJERl9TcGVjdWxhcl9NdWx0aXNjYXR0ZXJpbmdfRW52aXJvbm1lbnQoIGNvbnN0IGluIEdlb21ldHJpY0NvbnRleHQgZ2VvbWV0cnksIGNvbnN0IGluIHZlYzMgc3BlY3VsYXJDb2xvciwgY29uc3QgaW4gZmxvYXQgcm91Z2huZXNzLCBpbm91dCB2ZWMzIHNpbmdsZVNjYXR0ZXIsIGlub3V0IHZlYzMgbXVsdGlTY2F0dGVyICkge1xuXHRmbG9hdCBkb3ROViA9IHNhdHVyYXRlKCBkb3QoIGdlb21ldHJ5Lm5vcm1hbCwgZ2VvbWV0cnkudmlld0RpciApICk7XG5cdHZlYzMgRiA9IEZfU2NobGlja19Sb3VnaG5lc3NEZXBlbmRlbnQoIHNwZWN1bGFyQ29sb3IsIGRvdE5WLCByb3VnaG5lc3MgKTtcblx0dmVjMiBicmRmID0gaW50ZWdyYXRlU3BlY3VsYXJCUkRGKCBkb3ROViwgcm91Z2huZXNzICk7XG5cdHZlYzMgRnNzRXNzID0gRiAqIGJyZGYueCArIGJyZGYueTtcblx0ZmxvYXQgRXNzID0gYnJkZi54ICsgYnJkZi55O1xuXHRmbG9hdCBFbXMgPSAxLjAgLSBFc3M7XG5cdHZlYzMgRmF2ZyA9IHNwZWN1bGFyQ29sb3IgKyAoIDEuMCAtIHNwZWN1bGFyQ29sb3IgKSAqIDAuMDQ3NjE5O1x0dmVjMyBGbXMgPSBGc3NFc3MgKiBGYXZnIC8gKCAxLjAgLSBFbXMgKiBGYXZnICk7XG5cdHNpbmdsZVNjYXR0ZXIgKz0gRnNzRXNzO1xuXHRtdWx0aVNjYXR0ZXIgKz0gRm1zICogRW1zO1xufVxuZmxvYXQgR19CbGlublBob25nX0ltcGxpY2l0KCApIHtcblx0cmV0dXJuIDAuMjU7XG59XG5mbG9hdCBEX0JsaW5uUGhvbmcoIGNvbnN0IGluIGZsb2F0IHNoaW5pbmVzcywgY29uc3QgaW4gZmxvYXQgZG90TkggKSB7XG5cdHJldHVybiBSRUNJUFJPQ0FMX1BJICogKCBzaGluaW5lc3MgKiAwLjUgKyAxLjAgKSAqIHBvdyggZG90TkgsIHNoaW5pbmVzcyApO1xufVxudmVjMyBCUkRGX1NwZWN1bGFyX0JsaW5uUGhvbmcoIGNvbnN0IGluIEluY2lkZW50TGlnaHQgaW5jaWRlbnRMaWdodCwgY29uc3QgaW4gR2VvbWV0cmljQ29udGV4dCBnZW9tZXRyeSwgY29uc3QgaW4gdmVjMyBzcGVjdWxhckNvbG9yLCBjb25zdCBpbiBmbG9hdCBzaGluaW5lc3MgKSB7XG5cdHZlYzMgaGFsZkRpciA9IG5vcm1hbGl6ZSggaW5jaWRlbnRMaWdodC5kaXJlY3Rpb24gKyBnZW9tZXRyeS52aWV3RGlyICk7XG5cdGZsb2F0IGRvdE5IID0gc2F0dXJhdGUoIGRvdCggZ2VvbWV0cnkubm9ybWFsLCBoYWxmRGlyICkgKTtcblx0ZmxvYXQgZG90TEggPSBzYXR1cmF0ZSggZG90KCBpbmNpZGVudExpZ2h0LmRpcmVjdGlvbiwgaGFsZkRpciApICk7XG5cdHZlYzMgRiA9IEZfU2NobGljayggc3BlY3VsYXJDb2xvciwgZG90TEggKTtcblx0ZmxvYXQgRyA9IEdfQmxpbm5QaG9uZ19JbXBsaWNpdCggKTtcblx0ZmxvYXQgRCA9IERfQmxpbm5QaG9uZyggc2hpbmluZXNzLCBkb3ROSCApO1xuXHRyZXR1cm4gRiAqICggRyAqIEQgKTtcbn1cbmZsb2F0IEdHWFJvdWdobmVzc1RvQmxpbm5FeHBvbmVudCggY29uc3QgaW4gZmxvYXQgZ2d4Um91Z2huZXNzICkge1xuXHRyZXR1cm4gKCAyLjAgLyBwb3cyKCBnZ3hSb3VnaG5lc3MgKyAwLjAwMDEgKSAtIDIuMCApO1xufVxuZmxvYXQgQmxpbm5FeHBvbmVudFRvR0dYUm91Z2huZXNzKCBjb25zdCBpbiBmbG9hdCBibGlubkV4cG9uZW50ICkge1xuXHRyZXR1cm4gc3FydCggMi4wIC8gKCBibGlubkV4cG9uZW50ICsgMi4wICkgKTtcbn1cbiNpZiBkZWZpbmVkKCBVU0VfU0hFRU4gKVxuZmxvYXQgRF9DaGFybGllKGZsb2F0IHJvdWdobmVzcywgZmxvYXQgTm9IKSB7XG5cdGZsb2F0IGludkFscGhhID0gMS4wIC8gcm91Z2huZXNzO1xuXHRmbG9hdCBjb3MyaCA9IE5vSCAqIE5vSDtcblx0ZmxvYXQgc2luMmggPSBtYXgoMS4wIC0gY29zMmgsIDAuMDA3ODEyNSk7XHRyZXR1cm4gKDIuMCArIGludkFscGhhKSAqIHBvdyhzaW4yaCwgaW52QWxwaGEgKiAwLjUpIC8gKDIuMCAqIFBJKTtcbn1cbmZsb2F0IFZfTmV1YmVsdChmbG9hdCBOb1YsIGZsb2F0IE5vTCkge1xuXHRyZXR1cm4gc2F0dXJhdGUoMS4wIC8gKDQuMCAqIChOb0wgKyBOb1YgLSBOb0wgKiBOb1YpKSk7XG59XG52ZWMzIEJSREZfU3BlY3VsYXJfU2hlZW4oIGNvbnN0IGluIGZsb2F0IHJvdWdobmVzcywgY29uc3QgaW4gdmVjMyBMLCBjb25zdCBpbiBHZW9tZXRyaWNDb250ZXh0IGdlb21ldHJ5LCB2ZWMzIHNwZWN1bGFyQ29sb3IgKSB7XG5cdHZlYzMgTiA9IGdlb21ldHJ5Lm5vcm1hbDtcblx0dmVjMyBWID0gZ2VvbWV0cnkudmlld0Rpcjtcblx0dmVjMyBIID0gbm9ybWFsaXplKCBWICsgTCApO1xuXHRmbG9hdCBkb3ROSCA9IHNhdHVyYXRlKCBkb3QoIE4sIEggKSApO1xuXHRyZXR1cm4gc3BlY3VsYXJDb2xvciAqIERfQ2hhcmxpZSggcm91Z2huZXNzLCBkb3ROSCApICogVl9OZXViZWx0KCBkb3QoTiwgViksIGRvdChOLCBMKSApO1xufVxuI2VuZGlmIixidW1wbWFwX3BhcnNfZnJhZ21lbnQ6IiNpZmRlZiBVU0VfQlVNUE1BUFxuXHR1bmlmb3JtIHNhbXBsZXIyRCBidW1wTWFwO1xuXHR1bmlmb3JtIGZsb2F0IGJ1bXBTY2FsZTtcblx0dmVjMiBkSGR4eV9md2QoKSB7XG5cdFx0dmVjMiBkU1RkeCA9IGRGZHgoIHZVdiApO1xuXHRcdHZlYzIgZFNUZHkgPSBkRmR5KCB2VXYgKTtcblx0XHRmbG9hdCBIbGwgPSBidW1wU2NhbGUgKiB0ZXh0dXJlMkQoIGJ1bXBNYXAsIHZVdiApLng7XG5cdFx0ZmxvYXQgZEJ4ID0gYnVtcFNjYWxlICogdGV4dHVyZTJEKCBidW1wTWFwLCB2VXYgKyBkU1RkeCApLnggLSBIbGw7XG5cdFx0ZmxvYXQgZEJ5ID0gYnVtcFNjYWxlICogdGV4dHVyZTJEKCBidW1wTWFwLCB2VXYgKyBkU1RkeSApLnggLSBIbGw7XG5cdFx0cmV0dXJuIHZlYzIoIGRCeCwgZEJ5ICk7XG5cdH1cblx0dmVjMyBwZXJ0dXJiTm9ybWFsQXJiKCB2ZWMzIHN1cmZfcG9zLCB2ZWMzIHN1cmZfbm9ybSwgdmVjMiBkSGR4eSApIHtcblx0XHR2ZWMzIHZTaWdtYVggPSB2ZWMzKCBkRmR4KCBzdXJmX3Bvcy54ICksIGRGZHgoIHN1cmZfcG9zLnkgKSwgZEZkeCggc3VyZl9wb3MueiApICk7XG5cdFx0dmVjMyB2U2lnbWFZID0gdmVjMyggZEZkeSggc3VyZl9wb3MueCApLCBkRmR5KCBzdXJmX3Bvcy55ICksIGRGZHkoIHN1cmZfcG9zLnogKSApO1xuXHRcdHZlYzMgdk4gPSBzdXJmX25vcm07XG5cdFx0dmVjMyBSMSA9IGNyb3NzKCB2U2lnbWFZLCB2TiApO1xuXHRcdHZlYzMgUjIgPSBjcm9zcyggdk4sIHZTaWdtYVggKTtcblx0XHRmbG9hdCBmRGV0ID0gZG90KCB2U2lnbWFYLCBSMSApO1xuXHRcdGZEZXQgKj0gKCBmbG9hdCggZ2xfRnJvbnRGYWNpbmcgKSAqIDIuMCAtIDEuMCApO1xuXHRcdHZlYzMgdkdyYWQgPSBzaWduKCBmRGV0ICkgKiAoIGRIZHh5LnggKiBSMSArIGRIZHh5LnkgKiBSMiApO1xuXHRcdHJldHVybiBub3JtYWxpemUoIGFicyggZkRldCApICogc3VyZl9ub3JtIC0gdkdyYWQgKTtcblx0fVxuI2VuZGlmIixjbGlwcGluZ19wbGFuZXNfZnJhZ21lbnQ6IiNpZiBOVU1fQ0xJUFBJTkdfUExBTkVTID4gMFxuXHR2ZWM0IHBsYW5lO1xuXHQjcHJhZ21hIHVucm9sbF9sb29wX3N0YXJ0XG5cdGZvciAoIGludCBpID0gMDsgaSA8IFVOSU9OX0NMSVBQSU5HX1BMQU5FUzsgaSArKyApIHtcblx0XHRwbGFuZSA9IGNsaXBwaW5nUGxhbmVzWyBpIF07XG5cdFx0aWYgKCBkb3QoIHZDbGlwUG9zaXRpb24sIHBsYW5lLnh5eiApID4gcGxhbmUudyApIGRpc2NhcmQ7XG5cdH1cblx0I3ByYWdtYSB1bnJvbGxfbG9vcF9lbmRcblx0I2lmIFVOSU9OX0NMSVBQSU5HX1BMQU5FUyA8IE5VTV9DTElQUElOR19QTEFORVNcblx0XHRib29sIGNsaXBwZWQgPSB0cnVlO1xuXHRcdCNwcmFnbWEgdW5yb2xsX2xvb3Bfc3RhcnRcblx0XHRmb3IgKCBpbnQgaSA9IFVOSU9OX0NMSVBQSU5HX1BMQU5FUzsgaSA8IE5VTV9DTElQUElOR19QTEFORVM7IGkgKysgKSB7XG5cdFx0XHRwbGFuZSA9IGNsaXBwaW5nUGxhbmVzWyBpIF07XG5cdFx0XHRjbGlwcGVkID0gKCBkb3QoIHZDbGlwUG9zaXRpb24sIHBsYW5lLnh5eiApID4gcGxhbmUudyApICYmIGNsaXBwZWQ7XG5cdFx0fVxuXHRcdCNwcmFnbWEgdW5yb2xsX2xvb3BfZW5kXG5cdFx0aWYgKCBjbGlwcGVkICkgZGlzY2FyZDtcblx0I2VuZGlmXG4jZW5kaWYiLGNsaXBwaW5nX3BsYW5lc19wYXJzX2ZyYWdtZW50OiIjaWYgTlVNX0NMSVBQSU5HX1BMQU5FUyA+IDBcblx0dmFyeWluZyB2ZWMzIHZDbGlwUG9zaXRpb247XG5cdHVuaWZvcm0gdmVjNCBjbGlwcGluZ1BsYW5lc1sgTlVNX0NMSVBQSU5HX1BMQU5FUyBdO1xuI2VuZGlmIixjbGlwcGluZ19wbGFuZXNfcGFyc192ZXJ0ZXg6IiNpZiBOVU1fQ0xJUFBJTkdfUExBTkVTID4gMFxuXHR2YXJ5aW5nIHZlYzMgdkNsaXBQb3NpdGlvbjtcbiNlbmRpZiIsY2xpcHBpbmdfcGxhbmVzX3ZlcnRleDoiI2lmIE5VTV9DTElQUElOR19QTEFORVMgPiAwXG5cdHZDbGlwUG9zaXRpb24gPSAtIG12UG9zaXRpb24ueHl6O1xuI2VuZGlmIixjb2xvcl9mcmFnbWVudDoiI2lmZGVmIFVTRV9DT0xPUlxuXHRkaWZmdXNlQ29sb3IucmdiICo9IHZDb2xvcjtcbiNlbmRpZiIsY29sb3JfcGFyc19mcmFnbWVudDoiI2lmZGVmIFVTRV9DT0xPUlxuXHR2YXJ5aW5nIHZlYzMgdkNvbG9yO1xuI2VuZGlmIixjb2xvcl9wYXJzX3ZlcnRleDoiI2lmIGRlZmluZWQoIFVTRV9DT0xPUiApIHx8IGRlZmluZWQoIFVTRV9JTlNUQU5DSU5HX0NPTE9SIClcblx0dmFyeWluZyB2ZWMzIHZDb2xvcjtcbiNlbmRpZiIsY29sb3JfdmVydGV4OiIjaWYgZGVmaW5lZCggVVNFX0NPTE9SICkgfHwgZGVmaW5lZCggVVNFX0lOU1RBTkNJTkdfQ09MT1IgKVxuXHR2Q29sb3IgPSB2ZWMzKCAxLjAgKTtcbiNlbmRpZlxuI2lmZGVmIFVTRV9DT0xPUlxuXHR2Q29sb3IueHl6ICo9IGNvbG9yLnh5ejtcbiNlbmRpZlxuI2lmZGVmIFVTRV9JTlNUQU5DSU5HX0NPTE9SXG5cdHZDb2xvci54eXogKj0gaW5zdGFuY2VDb2xvci54eXo7XG4jZW5kaWYiLGNvbW1vbjoiI2RlZmluZSBQSSAzLjE0MTU5MjY1MzU4OTc5M1xuI2RlZmluZSBQSTIgNi4yODMxODUzMDcxNzk1ODZcbiNkZWZpbmUgUElfSEFMRiAxLjU3MDc5NjMyNjc5NDg5NjZcbiNkZWZpbmUgUkVDSVBST0NBTF9QSSAwLjMxODMwOTg4NjE4Mzc5MDdcbiNkZWZpbmUgUkVDSVBST0NBTF9QSTIgMC4xNTkxNTQ5NDMwOTE4OTUzNVxuI2RlZmluZSBFUFNJTE9OIDFlLTZcbiNpZm5kZWYgc2F0dXJhdGVcbiNkZWZpbmUgc2F0dXJhdGUoYSkgY2xhbXAoIGEsIDAuMCwgMS4wIClcbiNlbmRpZlxuI2RlZmluZSB3aGl0ZUNvbXBsZW1lbnQoYSkgKCAxLjAgLSBzYXR1cmF0ZSggYSApIClcbmZsb2F0IHBvdzIoIGNvbnN0IGluIGZsb2F0IHggKSB7IHJldHVybiB4Kng7IH1cbmZsb2F0IHBvdzMoIGNvbnN0IGluIGZsb2F0IHggKSB7IHJldHVybiB4KngqeDsgfVxuZmxvYXQgcG93NCggY29uc3QgaW4gZmxvYXQgeCApIHsgZmxvYXQgeDIgPSB4Kng7IHJldHVybiB4Mip4MjsgfVxuZmxvYXQgYXZlcmFnZSggY29uc3QgaW4gdmVjMyBjb2xvciApIHsgcmV0dXJuIGRvdCggY29sb3IsIHZlYzMoIDAuMzMzMyApICk7IH1cbmhpZ2hwIGZsb2F0IHJhbmQoIGNvbnN0IGluIHZlYzIgdXYgKSB7XG5cdGNvbnN0IGhpZ2hwIGZsb2F0IGEgPSAxMi45ODk4LCBiID0gNzguMjMzLCBjID0gNDM3NTguNTQ1Mztcblx0aGlnaHAgZmxvYXQgZHQgPSBkb3QoIHV2Lnh5LCB2ZWMyKCBhLGIgKSApLCBzbiA9IG1vZCggZHQsIFBJICk7XG5cdHJldHVybiBmcmFjdChzaW4oc24pICogYyk7XG59XG4jaWZkZWYgSElHSF9QUkVDSVNJT05cblx0ZmxvYXQgcHJlY2lzaW9uU2FmZUxlbmd0aCggdmVjMyB2ICkgeyByZXR1cm4gbGVuZ3RoKCB2ICk7IH1cbiNlbHNlXG5cdGZsb2F0IG1heDMoIHZlYzMgdiApIHsgcmV0dXJuIG1heCggbWF4KCB2LngsIHYueSApLCB2LnogKTsgfVxuXHRmbG9hdCBwcmVjaXNpb25TYWZlTGVuZ3RoKCB2ZWMzIHYgKSB7XG5cdFx0ZmxvYXQgbWF4Q29tcG9uZW50ID0gbWF4MyggYWJzKCB2ICkgKTtcblx0XHRyZXR1cm4gbGVuZ3RoKCB2IC8gbWF4Q29tcG9uZW50ICkgKiBtYXhDb21wb25lbnQ7XG5cdH1cbiNlbmRpZlxuc3RydWN0IEluY2lkZW50TGlnaHQge1xuXHR2ZWMzIGNvbG9yO1xuXHR2ZWMzIGRpcmVjdGlvbjtcblx0Ym9vbCB2aXNpYmxlO1xufTtcbnN0cnVjdCBSZWZsZWN0ZWRMaWdodCB7XG5cdHZlYzMgZGlyZWN0RGlmZnVzZTtcblx0dmVjMyBkaXJlY3RTcGVjdWxhcjtcblx0dmVjMyBpbmRpcmVjdERpZmZ1c2U7XG5cdHZlYzMgaW5kaXJlY3RTcGVjdWxhcjtcbn07XG5zdHJ1Y3QgR2VvbWV0cmljQ29udGV4dCB7XG5cdHZlYzMgcG9zaXRpb247XG5cdHZlYzMgbm9ybWFsO1xuXHR2ZWMzIHZpZXdEaXI7XG4jaWZkZWYgQ0xFQVJDT0FUXG5cdHZlYzMgY2xlYXJjb2F0Tm9ybWFsO1xuI2VuZGlmXG59O1xudmVjMyB0cmFuc2Zvcm1EaXJlY3Rpb24oIGluIHZlYzMgZGlyLCBpbiBtYXQ0IG1hdHJpeCApIHtcblx0cmV0dXJuIG5vcm1hbGl6ZSggKCBtYXRyaXggKiB2ZWM0KCBkaXIsIDAuMCApICkueHl6ICk7XG59XG52ZWMzIGludmVyc2VUcmFuc2Zvcm1EaXJlY3Rpb24oIGluIHZlYzMgZGlyLCBpbiBtYXQ0IG1hdHJpeCApIHtcblx0cmV0dXJuIG5vcm1hbGl6ZSggKCB2ZWM0KCBkaXIsIDAuMCApICogbWF0cml4ICkueHl6ICk7XG59XG52ZWMzIHByb2plY3RPblBsYW5lKGluIHZlYzMgcG9pbnQsIGluIHZlYzMgcG9pbnRPblBsYW5lLCBpbiB2ZWMzIHBsYW5lTm9ybWFsICkge1xuXHRmbG9hdCBkaXN0YW5jZSA9IGRvdCggcGxhbmVOb3JtYWwsIHBvaW50IC0gcG9pbnRPblBsYW5lICk7XG5cdHJldHVybiAtIGRpc3RhbmNlICogcGxhbmVOb3JtYWwgKyBwb2ludDtcbn1cbmZsb2F0IHNpZGVPZlBsYW5lKCBpbiB2ZWMzIHBvaW50LCBpbiB2ZWMzIHBvaW50T25QbGFuZSwgaW4gdmVjMyBwbGFuZU5vcm1hbCApIHtcblx0cmV0dXJuIHNpZ24oIGRvdCggcG9pbnQgLSBwb2ludE9uUGxhbmUsIHBsYW5lTm9ybWFsICkgKTtcbn1cbnZlYzMgbGluZVBsYW5lSW50ZXJzZWN0KCBpbiB2ZWMzIHBvaW50T25MaW5lLCBpbiB2ZWMzIGxpbmVEaXJlY3Rpb24sIGluIHZlYzMgcG9pbnRPblBsYW5lLCBpbiB2ZWMzIHBsYW5lTm9ybWFsICkge1xuXHRyZXR1cm4gbGluZURpcmVjdGlvbiAqICggZG90KCBwbGFuZU5vcm1hbCwgcG9pbnRPblBsYW5lIC0gcG9pbnRPbkxpbmUgKSAvIGRvdCggcGxhbmVOb3JtYWwsIGxpbmVEaXJlY3Rpb24gKSApICsgcG9pbnRPbkxpbmU7XG59XG5tYXQzIHRyYW5zcG9zZU1hdDMoIGNvbnN0IGluIG1hdDMgbSApIHtcblx0bWF0MyB0bXA7XG5cdHRtcFsgMCBdID0gdmVjMyggbVsgMCBdLngsIG1bIDEgXS54LCBtWyAyIF0ueCApO1xuXHR0bXBbIDEgXSA9IHZlYzMoIG1bIDAgXS55LCBtWyAxIF0ueSwgbVsgMiBdLnkgKTtcblx0dG1wWyAyIF0gPSB2ZWMzKCBtWyAwIF0ueiwgbVsgMSBdLnosIG1bIDIgXS56ICk7XG5cdHJldHVybiB0bXA7XG59XG5mbG9hdCBsaW5lYXJUb1JlbGF0aXZlTHVtaW5hbmNlKCBjb25zdCBpbiB2ZWMzIGNvbG9yICkge1xuXHR2ZWMzIHdlaWdodHMgPSB2ZWMzKCAwLjIxMjYsIDAuNzE1MiwgMC4wNzIyICk7XG5cdHJldHVybiBkb3QoIHdlaWdodHMsIGNvbG9yLnJnYiApO1xufVxuYm9vbCBpc1BlcnNwZWN0aXZlTWF0cml4KCBtYXQ0IG0gKSB7XG5cdHJldHVybiBtWyAyIF1bIDMgXSA9PSAtIDEuMDtcbn1cbnZlYzIgZXF1aXJlY3RVdiggaW4gdmVjMyBkaXIgKSB7XG5cdGZsb2F0IHUgPSBhdGFuKCBkaXIueiwgZGlyLnggKSAqIFJFQ0lQUk9DQUxfUEkyICsgMC41O1xuXHRmbG9hdCB2ID0gYXNpbiggY2xhbXAoIGRpci55LCAtIDEuMCwgMS4wICkgKSAqIFJFQ0lQUk9DQUxfUEkgKyAwLjU7XG5cdHJldHVybiB2ZWMyKCB1LCB2ICk7XG59IixjdWJlX3V2X3JlZmxlY3Rpb25fZnJhZ21lbnQ6IiNpZmRlZiBFTlZNQVBfVFlQRV9DVUJFX1VWXG5cdCNkZWZpbmUgY3ViZVVWX21heE1pcExldmVsIDguMFxuXHQjZGVmaW5lIGN1YmVVVl9taW5NaXBMZXZlbCA0LjBcblx0I2RlZmluZSBjdWJlVVZfbWF4VGlsZVNpemUgMjU2LjBcblx0I2RlZmluZSBjdWJlVVZfbWluVGlsZVNpemUgMTYuMFxuXHRmbG9hdCBnZXRGYWNlKCB2ZWMzIGRpcmVjdGlvbiApIHtcblx0XHR2ZWMzIGFic0RpcmVjdGlvbiA9IGFicyggZGlyZWN0aW9uICk7XG5cdFx0ZmxvYXQgZmFjZSA9IC0gMS4wO1xuXHRcdGlmICggYWJzRGlyZWN0aW9uLnggPiBhYnNEaXJlY3Rpb24ueiApIHtcblx0XHRcdGlmICggYWJzRGlyZWN0aW9uLnggPiBhYnNEaXJlY3Rpb24ueSApXG5cdFx0XHRcdGZhY2UgPSBkaXJlY3Rpb24ueCA+IDAuMCA/IDAuMCA6IDMuMDtcblx0XHRcdGVsc2Vcblx0XHRcdFx0ZmFjZSA9IGRpcmVjdGlvbi55ID4gMC4wID8gMS4wIDogNC4wO1xuXHRcdH0gZWxzZSB7XG5cdFx0XHRpZiAoIGFic0RpcmVjdGlvbi56ID4gYWJzRGlyZWN0aW9uLnkgKVxuXHRcdFx0XHRmYWNlID0gZGlyZWN0aW9uLnogPiAwLjAgPyAyLjAgOiA1LjA7XG5cdFx0XHRlbHNlXG5cdFx0XHRcdGZhY2UgPSBkaXJlY3Rpb24ueSA+IDAuMCA/IDEuMCA6IDQuMDtcblx0XHR9XG5cdFx0cmV0dXJuIGZhY2U7XG5cdH1cblx0dmVjMiBnZXRVViggdmVjMyBkaXJlY3Rpb24sIGZsb2F0IGZhY2UgKSB7XG5cdFx0dmVjMiB1djtcblx0XHRpZiAoIGZhY2UgPT0gMC4wICkge1xuXHRcdFx0dXYgPSB2ZWMyKCBkaXJlY3Rpb24ueiwgZGlyZWN0aW9uLnkgKSAvIGFicyggZGlyZWN0aW9uLnggKTtcblx0XHR9IGVsc2UgaWYgKCBmYWNlID09IDEuMCApIHtcblx0XHRcdHV2ID0gdmVjMiggLSBkaXJlY3Rpb24ueCwgLSBkaXJlY3Rpb24ueiApIC8gYWJzKCBkaXJlY3Rpb24ueSApO1xuXHRcdH0gZWxzZSBpZiAoIGZhY2UgPT0gMi4wICkge1xuXHRcdFx0dXYgPSB2ZWMyKCAtIGRpcmVjdGlvbi54LCBkaXJlY3Rpb24ueSApIC8gYWJzKCBkaXJlY3Rpb24ueiApO1xuXHRcdH0gZWxzZSBpZiAoIGZhY2UgPT0gMy4wICkge1xuXHRcdFx0dXYgPSB2ZWMyKCAtIGRpcmVjdGlvbi56LCBkaXJlY3Rpb24ueSApIC8gYWJzKCBkaXJlY3Rpb24ueCApO1xuXHRcdH0gZWxzZSBpZiAoIGZhY2UgPT0gNC4wICkge1xuXHRcdFx0dXYgPSB2ZWMyKCAtIGRpcmVjdGlvbi54LCBkaXJlY3Rpb24ueiApIC8gYWJzKCBkaXJlY3Rpb24ueSApO1xuXHRcdH0gZWxzZSB7XG5cdFx0XHR1diA9IHZlYzIoIGRpcmVjdGlvbi54LCBkaXJlY3Rpb24ueSApIC8gYWJzKCBkaXJlY3Rpb24ueiApO1xuXHRcdH1cblx0XHRyZXR1cm4gMC41ICogKCB1diArIDEuMCApO1xuXHR9XG5cdHZlYzMgYmlsaW5lYXJDdWJlVVYoIHNhbXBsZXIyRCBlbnZNYXAsIHZlYzMgZGlyZWN0aW9uLCBmbG9hdCBtaXBJbnQgKSB7XG5cdFx0ZmxvYXQgZmFjZSA9IGdldEZhY2UoIGRpcmVjdGlvbiApO1xuXHRcdGZsb2F0IGZpbHRlckludCA9IG1heCggY3ViZVVWX21pbk1pcExldmVsIC0gbWlwSW50LCAwLjAgKTtcblx0XHRtaXBJbnQgPSBtYXgoIG1pcEludCwgY3ViZVVWX21pbk1pcExldmVsICk7XG5cdFx0ZmxvYXQgZmFjZVNpemUgPSBleHAyKCBtaXBJbnQgKTtcblx0XHRmbG9hdCB0ZXhlbFNpemUgPSAxLjAgLyAoIDMuMCAqIGN1YmVVVl9tYXhUaWxlU2l6ZSApO1xuXHRcdHZlYzIgdXYgPSBnZXRVViggZGlyZWN0aW9uLCBmYWNlICkgKiAoIGZhY2VTaXplIC0gMS4wICk7XG5cdFx0dmVjMiBmID0gZnJhY3QoIHV2ICk7XG5cdFx0dXYgKz0gMC41IC0gZjtcblx0XHRpZiAoIGZhY2UgPiAyLjAgKSB7XG5cdFx0XHR1di55ICs9IGZhY2VTaXplO1xuXHRcdFx0ZmFjZSAtPSAzLjA7XG5cdFx0fVxuXHRcdHV2LnggKz0gZmFjZSAqIGZhY2VTaXplO1xuXHRcdGlmICggbWlwSW50IDwgY3ViZVVWX21heE1pcExldmVsICkge1xuXHRcdFx0dXYueSArPSAyLjAgKiBjdWJlVVZfbWF4VGlsZVNpemU7XG5cdFx0fVxuXHRcdHV2LnkgKz0gZmlsdGVySW50ICogMi4wICogY3ViZVVWX21pblRpbGVTaXplO1xuXHRcdHV2LnggKz0gMy4wICogbWF4KCAwLjAsIGN1YmVVVl9tYXhUaWxlU2l6ZSAtIDIuMCAqIGZhY2VTaXplICk7XG5cdFx0dXYgKj0gdGV4ZWxTaXplO1xuXHRcdHZlYzMgdGwgPSBlbnZNYXBUZXhlbFRvTGluZWFyKCB0ZXh0dXJlMkQoIGVudk1hcCwgdXYgKSApLnJnYjtcblx0XHR1di54ICs9IHRleGVsU2l6ZTtcblx0XHR2ZWMzIHRyID0gZW52TWFwVGV4ZWxUb0xpbmVhciggdGV4dHVyZTJEKCBlbnZNYXAsIHV2ICkgKS5yZ2I7XG5cdFx0dXYueSArPSB0ZXhlbFNpemU7XG5cdFx0dmVjMyBiciA9IGVudk1hcFRleGVsVG9MaW5lYXIoIHRleHR1cmUyRCggZW52TWFwLCB1diApICkucmdiO1xuXHRcdHV2LnggLT0gdGV4ZWxTaXplO1xuXHRcdHZlYzMgYmwgPSBlbnZNYXBUZXhlbFRvTGluZWFyKCB0ZXh0dXJlMkQoIGVudk1hcCwgdXYgKSApLnJnYjtcblx0XHR2ZWMzIHRtID0gbWl4KCB0bCwgdHIsIGYueCApO1xuXHRcdHZlYzMgYm0gPSBtaXgoIGJsLCBiciwgZi54ICk7XG5cdFx0cmV0dXJuIG1peCggdG0sIGJtLCBmLnkgKTtcblx0fVxuXHQjZGVmaW5lIHIwIDEuMFxuXHQjZGVmaW5lIHYwIDAuMzM5XG5cdCNkZWZpbmUgbTAgLSAyLjBcblx0I2RlZmluZSByMSAwLjhcblx0I2RlZmluZSB2MSAwLjI3NlxuXHQjZGVmaW5lIG0xIC0gMS4wXG5cdCNkZWZpbmUgcjQgMC40XG5cdCNkZWZpbmUgdjQgMC4wNDZcblx0I2RlZmluZSBtNCAyLjBcblx0I2RlZmluZSByNSAwLjMwNVxuXHQjZGVmaW5lIHY1IDAuMDE2XG5cdCNkZWZpbmUgbTUgMy4wXG5cdCNkZWZpbmUgcjYgMC4yMVxuXHQjZGVmaW5lIHY2IDAuMDAzOFxuXHQjZGVmaW5lIG02IDQuMFxuXHRmbG9hdCByb3VnaG5lc3NUb01pcCggZmxvYXQgcm91Z2huZXNzICkge1xuXHRcdGZsb2F0IG1pcCA9IDAuMDtcblx0XHRpZiAoIHJvdWdobmVzcyA+PSByMSApIHtcblx0XHRcdG1pcCA9ICggcjAgLSByb3VnaG5lc3MgKSAqICggbTEgLSBtMCApIC8gKCByMCAtIHIxICkgKyBtMDtcblx0XHR9IGVsc2UgaWYgKCByb3VnaG5lc3MgPj0gcjQgKSB7XG5cdFx0XHRtaXAgPSAoIHIxIC0gcm91Z2huZXNzICkgKiAoIG00IC0gbTEgKSAvICggcjEgLSByNCApICsgbTE7XG5cdFx0fSBlbHNlIGlmICggcm91Z2huZXNzID49IHI1ICkge1xuXHRcdFx0bWlwID0gKCByNCAtIHJvdWdobmVzcyApICogKCBtNSAtIG00ICkgLyAoIHI0IC0gcjUgKSArIG00O1xuXHRcdH0gZWxzZSBpZiAoIHJvdWdobmVzcyA+PSByNiApIHtcblx0XHRcdG1pcCA9ICggcjUgLSByb3VnaG5lc3MgKSAqICggbTYgLSBtNSApIC8gKCByNSAtIHI2ICkgKyBtNTtcblx0XHR9IGVsc2Uge1xuXHRcdFx0bWlwID0gLSAyLjAgKiBsb2cyKCAxLjE2ICogcm91Z2huZXNzICk7XHRcdH1cblx0XHRyZXR1cm4gbWlwO1xuXHR9XG5cdHZlYzQgdGV4dHVyZUN1YmVVViggc2FtcGxlcjJEIGVudk1hcCwgdmVjMyBzYW1wbGVEaXIsIGZsb2F0IHJvdWdobmVzcyApIHtcblx0XHRmbG9hdCBtaXAgPSBjbGFtcCggcm91Z2huZXNzVG9NaXAoIHJvdWdobmVzcyApLCBtMCwgY3ViZVVWX21heE1pcExldmVsICk7XG5cdFx0ZmxvYXQgbWlwRiA9IGZyYWN0KCBtaXAgKTtcblx0XHRmbG9hdCBtaXBJbnQgPSBmbG9vciggbWlwICk7XG5cdFx0dmVjMyBjb2xvcjAgPSBiaWxpbmVhckN1YmVVViggZW52TWFwLCBzYW1wbGVEaXIsIG1pcEludCApO1xuXHRcdGlmICggbWlwRiA9PSAwLjAgKSB7XG5cdFx0XHRyZXR1cm4gdmVjNCggY29sb3IwLCAxLjAgKTtcblx0XHR9IGVsc2Uge1xuXHRcdFx0dmVjMyBjb2xvcjEgPSBiaWxpbmVhckN1YmVVViggZW52TWFwLCBzYW1wbGVEaXIsIG1pcEludCArIDEuMCApO1xuXHRcdFx0cmV0dXJuIHZlYzQoIG1peCggY29sb3IwLCBjb2xvcjEsIG1pcEYgKSwgMS4wICk7XG5cdFx0fVxuXHR9XG4jZW5kaWYiLGRlZmF1bHRub3JtYWxfdmVydGV4OiJ2ZWMzIHRyYW5zZm9ybWVkTm9ybWFsID0gb2JqZWN0Tm9ybWFsO1xuI2lmZGVmIFVTRV9JTlNUQU5DSU5HXG5cdG1hdDMgbSA9IG1hdDMoIGluc3RhbmNlTWF0cml4ICk7XG5cdHRyYW5zZm9ybWVkTm9ybWFsIC89IHZlYzMoIGRvdCggbVsgMCBdLCBtWyAwIF0gKSwgZG90KCBtWyAxIF0sIG1bIDEgXSApLCBkb3QoIG1bIDIgXSwgbVsgMiBdICkgKTtcblx0dHJhbnNmb3JtZWROb3JtYWwgPSBtICogdHJhbnNmb3JtZWROb3JtYWw7XG4jZW5kaWZcbnRyYW5zZm9ybWVkTm9ybWFsID0gbm9ybWFsTWF0cml4ICogdHJhbnNmb3JtZWROb3JtYWw7XG4jaWZkZWYgRkxJUF9TSURFRFxuXHR0cmFuc2Zvcm1lZE5vcm1hbCA9IC0gdHJhbnNmb3JtZWROb3JtYWw7XG4jZW5kaWZcbiNpZmRlZiBVU0VfVEFOR0VOVFxuXHR2ZWMzIHRyYW5zZm9ybWVkVGFuZ2VudCA9ICggbW9kZWxWaWV3TWF0cml4ICogdmVjNCggb2JqZWN0VGFuZ2VudCwgMC4wICkgKS54eXo7XG5cdCNpZmRlZiBGTElQX1NJREVEXG5cdFx0dHJhbnNmb3JtZWRUYW5nZW50ID0gLSB0cmFuc2Zvcm1lZFRhbmdlbnQ7XG5cdCNlbmRpZlxuI2VuZGlmIixkaXNwbGFjZW1lbnRtYXBfcGFyc192ZXJ0ZXg6IiNpZmRlZiBVU0VfRElTUExBQ0VNRU5UTUFQXG5cdHVuaWZvcm0gc2FtcGxlcjJEIGRpc3BsYWNlbWVudE1hcDtcblx0dW5pZm9ybSBmbG9hdCBkaXNwbGFjZW1lbnRTY2FsZTtcblx0dW5pZm9ybSBmbG9hdCBkaXNwbGFjZW1lbnRCaWFzO1xuI2VuZGlmIixkaXNwbGFjZW1lbnRtYXBfdmVydGV4OiIjaWZkZWYgVVNFX0RJU1BMQUNFTUVOVE1BUFxuXHR0cmFuc2Zvcm1lZCArPSBub3JtYWxpemUoIG9iamVjdE5vcm1hbCApICogKCB0ZXh0dXJlMkQoIGRpc3BsYWNlbWVudE1hcCwgdlV2ICkueCAqIGRpc3BsYWNlbWVudFNjYWxlICsgZGlzcGxhY2VtZW50QmlhcyApO1xuI2VuZGlmIixlbWlzc2l2ZW1hcF9mcmFnbWVudDoiI2lmZGVmIFVTRV9FTUlTU0lWRU1BUFxuXHR2ZWM0IGVtaXNzaXZlQ29sb3IgPSB0ZXh0dXJlMkQoIGVtaXNzaXZlTWFwLCB2VXYgKTtcblx0ZW1pc3NpdmVDb2xvci5yZ2IgPSBlbWlzc2l2ZU1hcFRleGVsVG9MaW5lYXIoIGVtaXNzaXZlQ29sb3IgKS5yZ2I7XG5cdHRvdGFsRW1pc3NpdmVSYWRpYW5jZSAqPSBlbWlzc2l2ZUNvbG9yLnJnYjtcbiNlbmRpZiIsZW1pc3NpdmVtYXBfcGFyc19mcmFnbWVudDoiI2lmZGVmIFVTRV9FTUlTU0lWRU1BUFxuXHR1bmlmb3JtIHNhbXBsZXIyRCBlbWlzc2l2ZU1hcDtcbiNlbmRpZiIsZW5jb2RpbmdzX2ZyYWdtZW50OiJnbF9GcmFnQ29sb3IgPSBsaW5lYXJUb091dHB1dFRleGVsKCBnbF9GcmFnQ29sb3IgKTsiLGVuY29kaW5nc19wYXJzX2ZyYWdtZW50OiJcbnZlYzQgTGluZWFyVG9MaW5lYXIoIGluIHZlYzQgdmFsdWUgKSB7XG5cdHJldHVybiB2YWx1ZTtcbn1cbnZlYzQgR2FtbWFUb0xpbmVhciggaW4gdmVjNCB2YWx1ZSwgaW4gZmxvYXQgZ2FtbWFGYWN0b3IgKSB7XG5cdHJldHVybiB2ZWM0KCBwb3coIHZhbHVlLnJnYiwgdmVjMyggZ2FtbWFGYWN0b3IgKSApLCB2YWx1ZS5hICk7XG59XG52ZWM0IExpbmVhclRvR2FtbWEoIGluIHZlYzQgdmFsdWUsIGluIGZsb2F0IGdhbW1hRmFjdG9yICkge1xuXHRyZXR1cm4gdmVjNCggcG93KCB2YWx1ZS5yZ2IsIHZlYzMoIDEuMCAvIGdhbW1hRmFjdG9yICkgKSwgdmFsdWUuYSApO1xufVxudmVjNCBzUkdCVG9MaW5lYXIoIGluIHZlYzQgdmFsdWUgKSB7XG5cdHJldHVybiB2ZWM0KCBtaXgoIHBvdyggdmFsdWUucmdiICogMC45NDc4NjcyOTg2ICsgdmVjMyggMC4wNTIxMzI3MDE0ICksIHZlYzMoIDIuNCApICksIHZhbHVlLnJnYiAqIDAuMDc3Mzk5MzgwOCwgdmVjMyggbGVzc1RoYW5FcXVhbCggdmFsdWUucmdiLCB2ZWMzKCAwLjA0MDQ1ICkgKSApICksIHZhbHVlLmEgKTtcbn1cbnZlYzQgTGluZWFyVG9zUkdCKCBpbiB2ZWM0IHZhbHVlICkge1xuXHRyZXR1cm4gdmVjNCggbWl4KCBwb3coIHZhbHVlLnJnYiwgdmVjMyggMC40MTY2NiApICkgKiAxLjA1NSAtIHZlYzMoIDAuMDU1ICksIHZhbHVlLnJnYiAqIDEyLjkyLCB2ZWMzKCBsZXNzVGhhbkVxdWFsKCB2YWx1ZS5yZ2IsIHZlYzMoIDAuMDAzMTMwOCApICkgKSApLCB2YWx1ZS5hICk7XG59XG52ZWM0IFJHQkVUb0xpbmVhciggaW4gdmVjNCB2YWx1ZSApIHtcblx0cmV0dXJuIHZlYzQoIHZhbHVlLnJnYiAqIGV4cDIoIHZhbHVlLmEgKiAyNTUuMCAtIDEyOC4wICksIDEuMCApO1xufVxudmVjNCBMaW5lYXJUb1JHQkUoIGluIHZlYzQgdmFsdWUgKSB7XG5cdGZsb2F0IG1heENvbXBvbmVudCA9IG1heCggbWF4KCB2YWx1ZS5yLCB2YWx1ZS5nICksIHZhbHVlLmIgKTtcblx0ZmxvYXQgZkV4cCA9IGNsYW1wKCBjZWlsKCBsb2cyKCBtYXhDb21wb25lbnQgKSApLCAtMTI4LjAsIDEyNy4wICk7XG5cdHJldHVybiB2ZWM0KCB2YWx1ZS5yZ2IgLyBleHAyKCBmRXhwICksICggZkV4cCArIDEyOC4wICkgLyAyNTUuMCApO1xufVxudmVjNCBSR0JNVG9MaW5lYXIoIGluIHZlYzQgdmFsdWUsIGluIGZsb2F0IG1heFJhbmdlICkge1xuXHRyZXR1cm4gdmVjNCggdmFsdWUucmdiICogdmFsdWUuYSAqIG1heFJhbmdlLCAxLjAgKTtcbn1cbnZlYzQgTGluZWFyVG9SR0JNKCBpbiB2ZWM0IHZhbHVlLCBpbiBmbG9hdCBtYXhSYW5nZSApIHtcblx0ZmxvYXQgbWF4UkdCID0gbWF4KCB2YWx1ZS5yLCBtYXgoIHZhbHVlLmcsIHZhbHVlLmIgKSApO1xuXHRmbG9hdCBNID0gY2xhbXAoIG1heFJHQiAvIG1heFJhbmdlLCAwLjAsIDEuMCApO1xuXHRNID0gY2VpbCggTSAqIDI1NS4wICkgLyAyNTUuMDtcblx0cmV0dXJuIHZlYzQoIHZhbHVlLnJnYiAvICggTSAqIG1heFJhbmdlICksIE0gKTtcbn1cbnZlYzQgUkdCRFRvTGluZWFyKCBpbiB2ZWM0IHZhbHVlLCBpbiBmbG9hdCBtYXhSYW5nZSApIHtcblx0cmV0dXJuIHZlYzQoIHZhbHVlLnJnYiAqICggKCBtYXhSYW5nZSAvIDI1NS4wICkgLyB2YWx1ZS5hICksIDEuMCApO1xufVxudmVjNCBMaW5lYXJUb1JHQkQoIGluIHZlYzQgdmFsdWUsIGluIGZsb2F0IG1heFJhbmdlICkge1xuXHRmbG9hdCBtYXhSR0IgPSBtYXgoIHZhbHVlLnIsIG1heCggdmFsdWUuZywgdmFsdWUuYiApICk7XG5cdGZsb2F0IEQgPSBtYXgoIG1heFJhbmdlIC8gbWF4UkdCLCAxLjAgKTtcblx0RCA9IGNsYW1wKCBmbG9vciggRCApIC8gMjU1LjAsIDAuMCwgMS4wICk7XG5cdHJldHVybiB2ZWM0KCB2YWx1ZS5yZ2IgKiAoIEQgKiAoIDI1NS4wIC8gbWF4UmFuZ2UgKSApLCBEICk7XG59XG5jb25zdCBtYXQzIGNMb2dMdXZNID0gbWF0MyggMC4yMjA5LCAwLjMzOTAsIDAuNDE4NCwgMC4xMTM4LCAwLjY3ODAsIDAuNzMxOSwgMC4wMTAyLCAwLjExMzAsIDAuMjk2OSApO1xudmVjNCBMaW5lYXJUb0xvZ0x1diggaW4gdmVjNCB2YWx1ZSApIHtcblx0dmVjMyBYcF9ZX1hZWnAgPSBjTG9nTHV2TSAqIHZhbHVlLnJnYjtcblx0WHBfWV9YWVpwID0gbWF4KCBYcF9ZX1hZWnAsIHZlYzMoIDFlLTYsIDFlLTYsIDFlLTYgKSApO1xuXHR2ZWM0IHZSZXN1bHQ7XG5cdHZSZXN1bHQueHkgPSBYcF9ZX1hZWnAueHkgLyBYcF9ZX1hZWnAuejtcblx0ZmxvYXQgTGUgPSAyLjAgKiBsb2cyKFhwX1lfWFlacC55KSArIDEyNy4wO1xuXHR2UmVzdWx0LncgPSBmcmFjdCggTGUgKTtcblx0dlJlc3VsdC56ID0gKCBMZSAtICggZmxvb3IoIHZSZXN1bHQudyAqIDI1NS4wICkgKSAvIDI1NS4wICkgLyAyNTUuMDtcblx0cmV0dXJuIHZSZXN1bHQ7XG59XG5jb25zdCBtYXQzIGNMb2dMdXZJbnZlcnNlTSA9IG1hdDMoIDYuMDAxNCwgLTIuNzAwOCwgLTEuNzk5NiwgLTEuMzMyMCwgMy4xMDI5LCAtNS43NzIxLCAwLjMwMDgsIC0xLjA4ODIsIDUuNjI2OCApO1xudmVjNCBMb2dMdXZUb0xpbmVhciggaW4gdmVjNCB2YWx1ZSApIHtcblx0ZmxvYXQgTGUgPSB2YWx1ZS56ICogMjU1LjAgKyB2YWx1ZS53O1xuXHR2ZWMzIFhwX1lfWFlacDtcblx0WHBfWV9YWVpwLnkgPSBleHAyKCAoIExlIC0gMTI3LjAgKSAvIDIuMCApO1xuXHRYcF9ZX1hZWnAueiA9IFhwX1lfWFlacC55IC8gdmFsdWUueTtcblx0WHBfWV9YWVpwLnggPSB2YWx1ZS54ICogWHBfWV9YWVpwLno7XG5cdHZlYzMgdlJHQiA9IGNMb2dMdXZJbnZlcnNlTSAqIFhwX1lfWFlacC5yZ2I7XG5cdHJldHVybiB2ZWM0KCBtYXgoIHZSR0IsIDAuMCApLCAxLjAgKTtcbn0iLGVudm1hcF9mcmFnbWVudDoiI2lmZGVmIFVTRV9FTlZNQVBcblx0I2lmZGVmIEVOVl9XT1JMRFBPU1xuXHRcdHZlYzMgY2FtZXJhVG9GcmFnO1xuXHRcdGlmICggaXNPcnRob2dyYXBoaWMgKSB7XG5cdFx0XHRjYW1lcmFUb0ZyYWcgPSBub3JtYWxpemUoIHZlYzMoIC0gdmlld01hdHJpeFsgMCBdWyAyIF0sIC0gdmlld01hdHJpeFsgMSBdWyAyIF0sIC0gdmlld01hdHJpeFsgMiBdWyAyIF0gKSApO1xuXHRcdH0gZWxzZSB7XG5cdFx0XHRjYW1lcmFUb0ZyYWcgPSBub3JtYWxpemUoIHZXb3JsZFBvc2l0aW9uIC0gY2FtZXJhUG9zaXRpb24gKTtcblx0XHR9XG5cdFx0dmVjMyB3b3JsZE5vcm1hbCA9IGludmVyc2VUcmFuc2Zvcm1EaXJlY3Rpb24oIG5vcm1hbCwgdmlld01hdHJpeCApO1xuXHRcdCNpZmRlZiBFTlZNQVBfTU9ERV9SRUZMRUNUSU9OXG5cdFx0XHR2ZWMzIHJlZmxlY3RWZWMgPSByZWZsZWN0KCBjYW1lcmFUb0ZyYWcsIHdvcmxkTm9ybWFsICk7XG5cdFx0I2Vsc2Vcblx0XHRcdHZlYzMgcmVmbGVjdFZlYyA9IHJlZnJhY3QoIGNhbWVyYVRvRnJhZywgd29ybGROb3JtYWwsIHJlZnJhY3Rpb25SYXRpbyApO1xuXHRcdCNlbmRpZlxuXHQjZWxzZVxuXHRcdHZlYzMgcmVmbGVjdFZlYyA9IHZSZWZsZWN0O1xuXHQjZW5kaWZcblx0I2lmZGVmIEVOVk1BUF9UWVBFX0NVQkVcblx0XHR2ZWM0IGVudkNvbG9yID0gdGV4dHVyZUN1YmUoIGVudk1hcCwgdmVjMyggZmxpcEVudk1hcCAqIHJlZmxlY3RWZWMueCwgcmVmbGVjdFZlYy55eiApICk7XG5cdCNlbGlmIGRlZmluZWQoIEVOVk1BUF9UWVBFX0NVQkVfVVYgKVxuXHRcdHZlYzQgZW52Q29sb3IgPSB0ZXh0dXJlQ3ViZVVWKCBlbnZNYXAsIHJlZmxlY3RWZWMsIDAuMCApO1xuXHQjZWxzZVxuXHRcdHZlYzQgZW52Q29sb3IgPSB2ZWM0KCAwLjAgKTtcblx0I2VuZGlmXG5cdCNpZm5kZWYgRU5WTUFQX1RZUEVfQ1VCRV9VVlxuXHRcdGVudkNvbG9yID0gZW52TWFwVGV4ZWxUb0xpbmVhciggZW52Q29sb3IgKTtcblx0I2VuZGlmXG5cdCNpZmRlZiBFTlZNQVBfQkxFTkRJTkdfTVVMVElQTFlcblx0XHRvdXRnb2luZ0xpZ2h0ID0gbWl4KCBvdXRnb2luZ0xpZ2h0LCBvdXRnb2luZ0xpZ2h0ICogZW52Q29sb3IueHl6LCBzcGVjdWxhclN0cmVuZ3RoICogcmVmbGVjdGl2aXR5ICk7XG5cdCNlbGlmIGRlZmluZWQoIEVOVk1BUF9CTEVORElOR19NSVggKVxuXHRcdG91dGdvaW5nTGlnaHQgPSBtaXgoIG91dGdvaW5nTGlnaHQsIGVudkNvbG9yLnh5eiwgc3BlY3VsYXJTdHJlbmd0aCAqIHJlZmxlY3Rpdml0eSApO1xuXHQjZWxpZiBkZWZpbmVkKCBFTlZNQVBfQkxFTkRJTkdfQUREIClcblx0XHRvdXRnb2luZ0xpZ2h0ICs9IGVudkNvbG9yLnh5eiAqIHNwZWN1bGFyU3RyZW5ndGggKiByZWZsZWN0aXZpdHk7XG5cdCNlbmRpZlxuI2VuZGlmIixlbnZtYXBfY29tbW9uX3BhcnNfZnJhZ21lbnQ6IiNpZmRlZiBVU0VfRU5WTUFQXG5cdHVuaWZvcm0gZmxvYXQgZW52TWFwSW50ZW5zaXR5O1xuXHR1bmlmb3JtIGZsb2F0IGZsaXBFbnZNYXA7XG5cdHVuaWZvcm0gaW50IG1heE1pcExldmVsO1xuXHQjaWZkZWYgRU5WTUFQX1RZUEVfQ1VCRVxuXHRcdHVuaWZvcm0gc2FtcGxlckN1YmUgZW52TWFwO1xuXHQjZWxzZVxuXHRcdHVuaWZvcm0gc2FtcGxlcjJEIGVudk1hcDtcblx0I2VuZGlmXG5cdFxuI2VuZGlmIixlbnZtYXBfcGFyc19mcmFnbWVudDoiI2lmZGVmIFVTRV9FTlZNQVBcblx0dW5pZm9ybSBmbG9hdCByZWZsZWN0aXZpdHk7XG5cdCNpZiBkZWZpbmVkKCBVU0VfQlVNUE1BUCApIHx8IGRlZmluZWQoIFVTRV9OT1JNQUxNQVAgKSB8fCBkZWZpbmVkKCBQSE9ORyApXG5cdFx0I2RlZmluZSBFTlZfV09STERQT1Ncblx0I2VuZGlmXG5cdCNpZmRlZiBFTlZfV09STERQT1Ncblx0XHR2YXJ5aW5nIHZlYzMgdldvcmxkUG9zaXRpb247XG5cdFx0dW5pZm9ybSBmbG9hdCByZWZyYWN0aW9uUmF0aW87XG5cdCNlbHNlXG5cdFx0dmFyeWluZyB2ZWMzIHZSZWZsZWN0O1xuXHQjZW5kaWZcbiNlbmRpZiIsZW52bWFwX3BhcnNfdmVydGV4OiIjaWZkZWYgVVNFX0VOVk1BUFxuXHQjaWYgZGVmaW5lZCggVVNFX0JVTVBNQVAgKSB8fCBkZWZpbmVkKCBVU0VfTk9STUFMTUFQICkgfHxkZWZpbmVkKCBQSE9ORyApXG5cdFx0I2RlZmluZSBFTlZfV09STERQT1Ncblx0I2VuZGlmXG5cdCNpZmRlZiBFTlZfV09STERQT1Ncblx0XHRcblx0XHR2YXJ5aW5nIHZlYzMgdldvcmxkUG9zaXRpb247XG5cdCNlbHNlXG5cdFx0dmFyeWluZyB2ZWMzIHZSZWZsZWN0O1xuXHRcdHVuaWZvcm0gZmxvYXQgcmVmcmFjdGlvblJhdGlvO1xuXHQjZW5kaWZcbiNlbmRpZiIsZW52bWFwX3BoeXNpY2FsX3BhcnNfZnJhZ21lbnQ6IiNpZiBkZWZpbmVkKCBVU0VfRU5WTUFQIClcblx0I2lmZGVmIEVOVk1BUF9NT0RFX1JFRlJBQ1RJT05cblx0XHR1bmlmb3JtIGZsb2F0IHJlZnJhY3Rpb25SYXRpbztcblx0I2VuZGlmXG5cdHZlYzMgZ2V0TGlnaHRQcm9iZUluZGlyZWN0SXJyYWRpYW5jZSggY29uc3QgaW4gR2VvbWV0cmljQ29udGV4dCBnZW9tZXRyeSwgY29uc3QgaW4gaW50IG1heE1JUExldmVsICkge1xuXHRcdHZlYzMgd29ybGROb3JtYWwgPSBpbnZlcnNlVHJhbnNmb3JtRGlyZWN0aW9uKCBnZW9tZXRyeS5ub3JtYWwsIHZpZXdNYXRyaXggKTtcblx0XHQjaWZkZWYgRU5WTUFQX1RZUEVfQ1VCRVxuXHRcdFx0dmVjMyBxdWVyeVZlYyA9IHZlYzMoIGZsaXBFbnZNYXAgKiB3b3JsZE5vcm1hbC54LCB3b3JsZE5vcm1hbC55eiApO1xuXHRcdFx0I2lmZGVmIFRFWFRVUkVfTE9EX0VYVFxuXHRcdFx0XHR2ZWM0IGVudk1hcENvbG9yID0gdGV4dHVyZUN1YmVMb2RFWFQoIGVudk1hcCwgcXVlcnlWZWMsIGZsb2F0KCBtYXhNSVBMZXZlbCApICk7XG5cdFx0XHQjZWxzZVxuXHRcdFx0XHR2ZWM0IGVudk1hcENvbG9yID0gdGV4dHVyZUN1YmUoIGVudk1hcCwgcXVlcnlWZWMsIGZsb2F0KCBtYXhNSVBMZXZlbCApICk7XG5cdFx0XHQjZW5kaWZcblx0XHRcdGVudk1hcENvbG9yLnJnYiA9IGVudk1hcFRleGVsVG9MaW5lYXIoIGVudk1hcENvbG9yICkucmdiO1xuXHRcdCNlbGlmIGRlZmluZWQoIEVOVk1BUF9UWVBFX0NVQkVfVVYgKVxuXHRcdFx0dmVjNCBlbnZNYXBDb2xvciA9IHRleHR1cmVDdWJlVVYoIGVudk1hcCwgd29ybGROb3JtYWwsIDEuMCApO1xuXHRcdCNlbHNlXG5cdFx0XHR2ZWM0IGVudk1hcENvbG9yID0gdmVjNCggMC4wICk7XG5cdFx0I2VuZGlmXG5cdFx0cmV0dXJuIFBJICogZW52TWFwQ29sb3IucmdiICogZW52TWFwSW50ZW5zaXR5O1xuXHR9XG5cdGZsb2F0IGdldFNwZWN1bGFyTUlQTGV2ZWwoIGNvbnN0IGluIGZsb2F0IHJvdWdobmVzcywgY29uc3QgaW4gaW50IG1heE1JUExldmVsICkge1xuXHRcdGZsb2F0IG1heE1JUExldmVsU2NhbGFyID0gZmxvYXQoIG1heE1JUExldmVsICk7XG5cdFx0ZmxvYXQgc2lnbWEgPSBQSSAqIHJvdWdobmVzcyAqIHJvdWdobmVzcyAvICggMS4wICsgcm91Z2huZXNzICk7XG5cdFx0ZmxvYXQgZGVzaXJlZE1JUExldmVsID0gbWF4TUlQTGV2ZWxTY2FsYXIgKyBsb2cyKCBzaWdtYSApO1xuXHRcdHJldHVybiBjbGFtcCggZGVzaXJlZE1JUExldmVsLCAwLjAsIG1heE1JUExldmVsU2NhbGFyICk7XG5cdH1cblx0dmVjMyBnZXRMaWdodFByb2JlSW5kaXJlY3RSYWRpYW5jZSggY29uc3QgaW4gdmVjMyB2aWV3RGlyLCBjb25zdCBpbiB2ZWMzIG5vcm1hbCwgY29uc3QgaW4gZmxvYXQgcm91Z2huZXNzLCBjb25zdCBpbiBpbnQgbWF4TUlQTGV2ZWwgKSB7XG5cdFx0I2lmZGVmIEVOVk1BUF9NT0RFX1JFRkxFQ1RJT05cblx0XHRcdHZlYzMgcmVmbGVjdFZlYyA9IHJlZmxlY3QoIC12aWV3RGlyLCBub3JtYWwgKTtcblx0XHRcdHJlZmxlY3RWZWMgPSBub3JtYWxpemUoIG1peCggcmVmbGVjdFZlYywgbm9ybWFsLCByb3VnaG5lc3MgKiByb3VnaG5lc3MpICk7XG5cdFx0I2Vsc2Vcblx0XHRcdHZlYzMgcmVmbGVjdFZlYyA9IHJlZnJhY3QoIC12aWV3RGlyLCBub3JtYWwsIHJlZnJhY3Rpb25SYXRpbyApO1xuXHRcdCNlbmRpZlxuXHRcdHJlZmxlY3RWZWMgPSBpbnZlcnNlVHJhbnNmb3JtRGlyZWN0aW9uKCByZWZsZWN0VmVjLCB2aWV3TWF0cml4ICk7XG5cdFx0ZmxvYXQgc3BlY3VsYXJNSVBMZXZlbCA9IGdldFNwZWN1bGFyTUlQTGV2ZWwoIHJvdWdobmVzcywgbWF4TUlQTGV2ZWwgKTtcblx0XHQjaWZkZWYgRU5WTUFQX1RZUEVfQ1VCRVxuXHRcdFx0dmVjMyBxdWVyeVJlZmxlY3RWZWMgPSB2ZWMzKCBmbGlwRW52TWFwICogcmVmbGVjdFZlYy54LCByZWZsZWN0VmVjLnl6ICk7XG5cdFx0XHQjaWZkZWYgVEVYVFVSRV9MT0RfRVhUXG5cdFx0XHRcdHZlYzQgZW52TWFwQ29sb3IgPSB0ZXh0dXJlQ3ViZUxvZEVYVCggZW52TWFwLCBxdWVyeVJlZmxlY3RWZWMsIHNwZWN1bGFyTUlQTGV2ZWwgKTtcblx0XHRcdCNlbHNlXG5cdFx0XHRcdHZlYzQgZW52TWFwQ29sb3IgPSB0ZXh0dXJlQ3ViZSggZW52TWFwLCBxdWVyeVJlZmxlY3RWZWMsIHNwZWN1bGFyTUlQTGV2ZWwgKTtcblx0XHRcdCNlbmRpZlxuXHRcdFx0ZW52TWFwQ29sb3IucmdiID0gZW52TWFwVGV4ZWxUb0xpbmVhciggZW52TWFwQ29sb3IgKS5yZ2I7XG5cdFx0I2VsaWYgZGVmaW5lZCggRU5WTUFQX1RZUEVfQ1VCRV9VViApXG5cdFx0XHR2ZWM0IGVudk1hcENvbG9yID0gdGV4dHVyZUN1YmVVViggZW52TWFwLCByZWZsZWN0VmVjLCByb3VnaG5lc3MgKTtcblx0XHQjZW5kaWZcblx0XHRyZXR1cm4gZW52TWFwQ29sb3IucmdiICogZW52TWFwSW50ZW5zaXR5O1xuXHR9XG4jZW5kaWYiLGVudm1hcF92ZXJ0ZXg6IiNpZmRlZiBVU0VfRU5WTUFQXG5cdCNpZmRlZiBFTlZfV09STERQT1Ncblx0XHR2V29ybGRQb3NpdGlvbiA9IHdvcmxkUG9zaXRpb24ueHl6O1xuXHQjZWxzZVxuXHRcdHZlYzMgY2FtZXJhVG9WZXJ0ZXg7XG5cdFx0aWYgKCBpc09ydGhvZ3JhcGhpYyApIHtcblx0XHRcdGNhbWVyYVRvVmVydGV4ID0gbm9ybWFsaXplKCB2ZWMzKCAtIHZpZXdNYXRyaXhbIDAgXVsgMiBdLCAtIHZpZXdNYXRyaXhbIDEgXVsgMiBdLCAtIHZpZXdNYXRyaXhbIDIgXVsgMiBdICkgKTtcblx0XHR9IGVsc2Uge1xuXHRcdFx0Y2FtZXJhVG9WZXJ0ZXggPSBub3JtYWxpemUoIHdvcmxkUG9zaXRpb24ueHl6IC0gY2FtZXJhUG9zaXRpb24gKTtcblx0XHR9XG5cdFx0dmVjMyB3b3JsZE5vcm1hbCA9IGludmVyc2VUcmFuc2Zvcm1EaXJlY3Rpb24oIHRyYW5zZm9ybWVkTm9ybWFsLCB2aWV3TWF0cml4ICk7XG5cdFx0I2lmZGVmIEVOVk1BUF9NT0RFX1JFRkxFQ1RJT05cblx0XHRcdHZSZWZsZWN0ID0gcmVmbGVjdCggY2FtZXJhVG9WZXJ0ZXgsIHdvcmxkTm9ybWFsICk7XG5cdFx0I2Vsc2Vcblx0XHRcdHZSZWZsZWN0ID0gcmVmcmFjdCggY2FtZXJhVG9WZXJ0ZXgsIHdvcmxkTm9ybWFsLCByZWZyYWN0aW9uUmF0aW8gKTtcblx0XHQjZW5kaWZcblx0I2VuZGlmXG4jZW5kaWYiLGZvZ192ZXJ0ZXg6IiNpZmRlZiBVU0VfRk9HXG5cdGZvZ0RlcHRoID0gLSBtdlBvc2l0aW9uLno7XG4jZW5kaWYiLGZvZ19wYXJzX3ZlcnRleDoiI2lmZGVmIFVTRV9GT0dcblx0dmFyeWluZyBmbG9hdCBmb2dEZXB0aDtcbiNlbmRpZiIsZm9nX2ZyYWdtZW50OiIjaWZkZWYgVVNFX0ZPR1xuXHQjaWZkZWYgRk9HX0VYUDJcblx0XHRmbG9hdCBmb2dGYWN0b3IgPSAxLjAgLSBleHAoIC0gZm9nRGVuc2l0eSAqIGZvZ0RlbnNpdHkgKiBmb2dEZXB0aCAqIGZvZ0RlcHRoICk7XG5cdCNlbHNlXG5cdFx0ZmxvYXQgZm9nRmFjdG9yID0gc21vb3Roc3RlcCggZm9nTmVhciwgZm9nRmFyLCBmb2dEZXB0aCApO1xuXHQjZW5kaWZcblx0Z2xfRnJhZ0NvbG9yLnJnYiA9IG1peCggZ2xfRnJhZ0NvbG9yLnJnYiwgZm9nQ29sb3IsIGZvZ0ZhY3RvciApO1xuI2VuZGlmIixmb2dfcGFyc19mcmFnbWVudDoiI2lmZGVmIFVTRV9GT0dcblx0dW5pZm9ybSB2ZWMzIGZvZ0NvbG9yO1xuXHR2YXJ5aW5nIGZsb2F0IGZvZ0RlcHRoO1xuXHQjaWZkZWYgRk9HX0VYUDJcblx0XHR1bmlmb3JtIGZsb2F0IGZvZ0RlbnNpdHk7XG5cdCNlbHNlXG5cdFx0dW5pZm9ybSBmbG9hdCBmb2dOZWFyO1xuXHRcdHVuaWZvcm0gZmxvYXQgZm9nRmFyO1xuXHQjZW5kaWZcbiNlbmRpZiIsZ3JhZGllbnRtYXBfcGFyc19mcmFnbWVudDoiI2lmZGVmIFVTRV9HUkFESUVOVE1BUFxuXHR1bmlmb3JtIHNhbXBsZXIyRCBncmFkaWVudE1hcDtcbiNlbmRpZlxudmVjMyBnZXRHcmFkaWVudElycmFkaWFuY2UoIHZlYzMgbm9ybWFsLCB2ZWMzIGxpZ2h0RGlyZWN0aW9uICkge1xuXHRmbG9hdCBkb3ROTCA9IGRvdCggbm9ybWFsLCBsaWdodERpcmVjdGlvbiApO1xuXHR2ZWMyIGNvb3JkID0gdmVjMiggZG90TkwgKiAwLjUgKyAwLjUsIDAuMCApO1xuXHQjaWZkZWYgVVNFX0dSQURJRU5UTUFQXG5cdFx0cmV0dXJuIHRleHR1cmUyRCggZ3JhZGllbnRNYXAsIGNvb3JkICkucmdiO1xuXHQjZWxzZVxuXHRcdHJldHVybiAoIGNvb3JkLnggPCAwLjcgKSA/IHZlYzMoIDAuNyApIDogdmVjMyggMS4wICk7XG5cdCNlbmRpZlxufSIsbGlnaHRtYXBfZnJhZ21lbnQ6IiNpZmRlZiBVU0VfTElHSFRNQVBcblx0dmVjNCBsaWdodE1hcFRleGVsPSB0ZXh0dXJlMkQoIGxpZ2h0TWFwLCB2VXYyICk7XG5cdHJlZmxlY3RlZExpZ2h0LmluZGlyZWN0RGlmZnVzZSArPSBQSSAqIGxpZ2h0TWFwVGV4ZWxUb0xpbmVhciggbGlnaHRNYXBUZXhlbCApLnJnYiAqIGxpZ2h0TWFwSW50ZW5zaXR5O1xuI2VuZGlmIixsaWdodG1hcF9wYXJzX2ZyYWdtZW50OiIjaWZkZWYgVVNFX0xJR0hUTUFQXG5cdHVuaWZvcm0gc2FtcGxlcjJEIGxpZ2h0TWFwO1xuXHR1bmlmb3JtIGZsb2F0IGxpZ2h0TWFwSW50ZW5zaXR5O1xuI2VuZGlmIixsaWdodHNfbGFtYmVydF92ZXJ0ZXg6InZlYzMgZGlmZnVzZSA9IHZlYzMoIDEuMCApO1xuR2VvbWV0cmljQ29udGV4dCBnZW9tZXRyeTtcbmdlb21ldHJ5LnBvc2l0aW9uID0gbXZQb3NpdGlvbi54eXo7XG5nZW9tZXRyeS5ub3JtYWwgPSBub3JtYWxpemUoIHRyYW5zZm9ybWVkTm9ybWFsICk7XG5nZW9tZXRyeS52aWV3RGlyID0gKCBpc09ydGhvZ3JhcGhpYyApID8gdmVjMyggMCwgMCwgMSApIDogbm9ybWFsaXplKCAtbXZQb3NpdGlvbi54eXogKTtcbkdlb21ldHJpY0NvbnRleHQgYmFja0dlb21ldHJ5O1xuYmFja0dlb21ldHJ5LnBvc2l0aW9uID0gZ2VvbWV0cnkucG9zaXRpb247XG5iYWNrR2VvbWV0cnkubm9ybWFsID0gLWdlb21ldHJ5Lm5vcm1hbDtcbmJhY2tHZW9tZXRyeS52aWV3RGlyID0gZ2VvbWV0cnkudmlld0RpcjtcbnZMaWdodEZyb250ID0gdmVjMyggMC4wICk7XG52SW5kaXJlY3RGcm9udCA9IHZlYzMoIDAuMCApO1xuI2lmZGVmIERPVUJMRV9TSURFRFxuXHR2TGlnaHRCYWNrID0gdmVjMyggMC4wICk7XG5cdHZJbmRpcmVjdEJhY2sgPSB2ZWMzKCAwLjAgKTtcbiNlbmRpZlxuSW5jaWRlbnRMaWdodCBkaXJlY3RMaWdodDtcbmZsb2F0IGRvdE5MO1xudmVjMyBkaXJlY3RMaWdodENvbG9yX0RpZmZ1c2U7XG52SW5kaXJlY3RGcm9udCArPSBnZXRBbWJpZW50TGlnaHRJcnJhZGlhbmNlKCBhbWJpZW50TGlnaHRDb2xvciApO1xudkluZGlyZWN0RnJvbnQgKz0gZ2V0TGlnaHRQcm9iZUlycmFkaWFuY2UoIGxpZ2h0UHJvYmUsIGdlb21ldHJ5ICk7XG4jaWZkZWYgRE9VQkxFX1NJREVEXG5cdHZJbmRpcmVjdEJhY2sgKz0gZ2V0QW1iaWVudExpZ2h0SXJyYWRpYW5jZSggYW1iaWVudExpZ2h0Q29sb3IgKTtcblx0dkluZGlyZWN0QmFjayArPSBnZXRMaWdodFByb2JlSXJyYWRpYW5jZSggbGlnaHRQcm9iZSwgYmFja0dlb21ldHJ5ICk7XG4jZW5kaWZcbiNpZiBOVU1fUE9JTlRfTElHSFRTID4gMFxuXHQjcHJhZ21hIHVucm9sbF9sb29wX3N0YXJ0XG5cdGZvciAoIGludCBpID0gMDsgaSA8IE5VTV9QT0lOVF9MSUdIVFM7IGkgKysgKSB7XG5cdFx0Z2V0UG9pbnREaXJlY3RMaWdodElycmFkaWFuY2UoIHBvaW50TGlnaHRzWyBpIF0sIGdlb21ldHJ5LCBkaXJlY3RMaWdodCApO1xuXHRcdGRvdE5MID0gZG90KCBnZW9tZXRyeS5ub3JtYWwsIGRpcmVjdExpZ2h0LmRpcmVjdGlvbiApO1xuXHRcdGRpcmVjdExpZ2h0Q29sb3JfRGlmZnVzZSA9IFBJICogZGlyZWN0TGlnaHQuY29sb3I7XG5cdFx0dkxpZ2h0RnJvbnQgKz0gc2F0dXJhdGUoIGRvdE5MICkgKiBkaXJlY3RMaWdodENvbG9yX0RpZmZ1c2U7XG5cdFx0I2lmZGVmIERPVUJMRV9TSURFRFxuXHRcdFx0dkxpZ2h0QmFjayArPSBzYXR1cmF0ZSggLWRvdE5MICkgKiBkaXJlY3RMaWdodENvbG9yX0RpZmZ1c2U7XG5cdFx0I2VuZGlmXG5cdH1cblx0I3ByYWdtYSB1bnJvbGxfbG9vcF9lbmRcbiNlbmRpZlxuI2lmIE5VTV9TUE9UX0xJR0hUUyA+IDBcblx0I3ByYWdtYSB1bnJvbGxfbG9vcF9zdGFydFxuXHRmb3IgKCBpbnQgaSA9IDA7IGkgPCBOVU1fU1BPVF9MSUdIVFM7IGkgKysgKSB7XG5cdFx0Z2V0U3BvdERpcmVjdExpZ2h0SXJyYWRpYW5jZSggc3BvdExpZ2h0c1sgaSBdLCBnZW9tZXRyeSwgZGlyZWN0TGlnaHQgKTtcblx0XHRkb3ROTCA9IGRvdCggZ2VvbWV0cnkubm9ybWFsLCBkaXJlY3RMaWdodC5kaXJlY3Rpb24gKTtcblx0XHRkaXJlY3RMaWdodENvbG9yX0RpZmZ1c2UgPSBQSSAqIGRpcmVjdExpZ2h0LmNvbG9yO1xuXHRcdHZMaWdodEZyb250ICs9IHNhdHVyYXRlKCBkb3ROTCApICogZGlyZWN0TGlnaHRDb2xvcl9EaWZmdXNlO1xuXHRcdCNpZmRlZiBET1VCTEVfU0lERURcblx0XHRcdHZMaWdodEJhY2sgKz0gc2F0dXJhdGUoIC1kb3ROTCApICogZGlyZWN0TGlnaHRDb2xvcl9EaWZmdXNlO1xuXHRcdCNlbmRpZlxuXHR9XG5cdCNwcmFnbWEgdW5yb2xsX2xvb3BfZW5kXG4jZW5kaWZcbiNpZiBOVU1fRElSX0xJR0hUUyA+IDBcblx0I3ByYWdtYSB1bnJvbGxfbG9vcF9zdGFydFxuXHRmb3IgKCBpbnQgaSA9IDA7IGkgPCBOVU1fRElSX0xJR0hUUzsgaSArKyApIHtcblx0XHRnZXREaXJlY3Rpb25hbERpcmVjdExpZ2h0SXJyYWRpYW5jZSggZGlyZWN0aW9uYWxMaWdodHNbIGkgXSwgZ2VvbWV0cnksIGRpcmVjdExpZ2h0ICk7XG5cdFx0ZG90TkwgPSBkb3QoIGdlb21ldHJ5Lm5vcm1hbCwgZGlyZWN0TGlnaHQuZGlyZWN0aW9uICk7XG5cdFx0ZGlyZWN0TGlnaHRDb2xvcl9EaWZmdXNlID0gUEkgKiBkaXJlY3RMaWdodC5jb2xvcjtcblx0XHR2TGlnaHRGcm9udCArPSBzYXR1cmF0ZSggZG90TkwgKSAqIGRpcmVjdExpZ2h0Q29sb3JfRGlmZnVzZTtcblx0XHQjaWZkZWYgRE9VQkxFX1NJREVEXG5cdFx0XHR2TGlnaHRCYWNrICs9IHNhdHVyYXRlKCAtZG90TkwgKSAqIGRpcmVjdExpZ2h0Q29sb3JfRGlmZnVzZTtcblx0XHQjZW5kaWZcblx0fVxuXHQjcHJhZ21hIHVucm9sbF9sb29wX2VuZFxuI2VuZGlmXG4jaWYgTlVNX0hFTUlfTElHSFRTID4gMFxuXHQjcHJhZ21hIHVucm9sbF9sb29wX3N0YXJ0XG5cdGZvciAoIGludCBpID0gMDsgaSA8IE5VTV9IRU1JX0xJR0hUUzsgaSArKyApIHtcblx0XHR2SW5kaXJlY3RGcm9udCArPSBnZXRIZW1pc3BoZXJlTGlnaHRJcnJhZGlhbmNlKCBoZW1pc3BoZXJlTGlnaHRzWyBpIF0sIGdlb21ldHJ5ICk7XG5cdFx0I2lmZGVmIERPVUJMRV9TSURFRFxuXHRcdFx0dkluZGlyZWN0QmFjayArPSBnZXRIZW1pc3BoZXJlTGlnaHRJcnJhZGlhbmNlKCBoZW1pc3BoZXJlTGlnaHRzWyBpIF0sIGJhY2tHZW9tZXRyeSApO1xuXHRcdCNlbmRpZlxuXHR9XG5cdCNwcmFnbWEgdW5yb2xsX2xvb3BfZW5kXG4jZW5kaWYiLGxpZ2h0c19wYXJzX2JlZ2luOiJ1bmlmb3JtIGJvb2wgcmVjZWl2ZVNoYWRvdztcbnVuaWZvcm0gdmVjMyBhbWJpZW50TGlnaHRDb2xvcjtcbnVuaWZvcm0gdmVjMyBsaWdodFByb2JlWyA5IF07XG52ZWMzIHNoR2V0SXJyYWRpYW5jZUF0KCBpbiB2ZWMzIG5vcm1hbCwgaW4gdmVjMyBzaENvZWZmaWNpZW50c1sgOSBdICkge1xuXHRmbG9hdCB4ID0gbm9ybWFsLngsIHkgPSBub3JtYWwueSwgeiA9IG5vcm1hbC56O1xuXHR2ZWMzIHJlc3VsdCA9IHNoQ29lZmZpY2llbnRzWyAwIF0gKiAwLjg4NjIyNztcblx0cmVzdWx0ICs9IHNoQ29lZmZpY2llbnRzWyAxIF0gKiAyLjAgKiAwLjUxMTY2NCAqIHk7XG5cdHJlc3VsdCArPSBzaENvZWZmaWNpZW50c1sgMiBdICogMi4wICogMC41MTE2NjQgKiB6O1xuXHRyZXN1bHQgKz0gc2hDb2VmZmljaWVudHNbIDMgXSAqIDIuMCAqIDAuNTExNjY0ICogeDtcblx0cmVzdWx0ICs9IHNoQ29lZmZpY2llbnRzWyA0IF0gKiAyLjAgKiAwLjQyOTA0MyAqIHggKiB5O1xuXHRyZXN1bHQgKz0gc2hDb2VmZmljaWVudHNbIDUgXSAqIDIuMCAqIDAuNDI5MDQzICogeSAqIHo7XG5cdHJlc3VsdCArPSBzaENvZWZmaWNpZW50c1sgNiBdICogKCAwLjc0MzEyNSAqIHogKiB6IC0gMC4yNDc3MDggKTtcblx0cmVzdWx0ICs9IHNoQ29lZmZpY2llbnRzWyA3IF0gKiAyLjAgKiAwLjQyOTA0MyAqIHggKiB6O1xuXHRyZXN1bHQgKz0gc2hDb2VmZmljaWVudHNbIDggXSAqIDAuNDI5MDQzICogKCB4ICogeCAtIHkgKiB5ICk7XG5cdHJldHVybiByZXN1bHQ7XG59XG52ZWMzIGdldExpZ2h0UHJvYmVJcnJhZGlhbmNlKCBjb25zdCBpbiB2ZWMzIGxpZ2h0UHJvYmVbIDkgXSwgY29uc3QgaW4gR2VvbWV0cmljQ29udGV4dCBnZW9tZXRyeSApIHtcblx0dmVjMyB3b3JsZE5vcm1hbCA9IGludmVyc2VUcmFuc2Zvcm1EaXJlY3Rpb24oIGdlb21ldHJ5Lm5vcm1hbCwgdmlld01hdHJpeCApO1xuXHR2ZWMzIGlycmFkaWFuY2UgPSBzaEdldElycmFkaWFuY2VBdCggd29ybGROb3JtYWwsIGxpZ2h0UHJvYmUgKTtcblx0cmV0dXJuIGlycmFkaWFuY2U7XG59XG52ZWMzIGdldEFtYmllbnRMaWdodElycmFkaWFuY2UoIGNvbnN0IGluIHZlYzMgYW1iaWVudExpZ2h0Q29sb3IgKSB7XG5cdHZlYzMgaXJyYWRpYW5jZSA9IGFtYmllbnRMaWdodENvbG9yO1xuXHQjaWZuZGVmIFBIWVNJQ0FMTFlfQ09SUkVDVF9MSUdIVFNcblx0XHRpcnJhZGlhbmNlICo9IFBJO1xuXHQjZW5kaWZcblx0cmV0dXJuIGlycmFkaWFuY2U7XG59XG4jaWYgTlVNX0RJUl9MSUdIVFMgPiAwXG5cdHN0cnVjdCBEaXJlY3Rpb25hbExpZ2h0IHtcblx0XHR2ZWMzIGRpcmVjdGlvbjtcblx0XHR2ZWMzIGNvbG9yO1xuXHR9O1xuXHR1bmlmb3JtIERpcmVjdGlvbmFsTGlnaHQgZGlyZWN0aW9uYWxMaWdodHNbIE5VTV9ESVJfTElHSFRTIF07XG5cdHZvaWQgZ2V0RGlyZWN0aW9uYWxEaXJlY3RMaWdodElycmFkaWFuY2UoIGNvbnN0IGluIERpcmVjdGlvbmFsTGlnaHQgZGlyZWN0aW9uYWxMaWdodCwgY29uc3QgaW4gR2VvbWV0cmljQ29udGV4dCBnZW9tZXRyeSwgb3V0IEluY2lkZW50TGlnaHQgZGlyZWN0TGlnaHQgKSB7XG5cdFx0ZGlyZWN0TGlnaHQuY29sb3IgPSBkaXJlY3Rpb25hbExpZ2h0LmNvbG9yO1xuXHRcdGRpcmVjdExpZ2h0LmRpcmVjdGlvbiA9IGRpcmVjdGlvbmFsTGlnaHQuZGlyZWN0aW9uO1xuXHRcdGRpcmVjdExpZ2h0LnZpc2libGUgPSB0cnVlO1xuXHR9XG4jZW5kaWZcbiNpZiBOVU1fUE9JTlRfTElHSFRTID4gMFxuXHRzdHJ1Y3QgUG9pbnRMaWdodCB7XG5cdFx0dmVjMyBwb3NpdGlvbjtcblx0XHR2ZWMzIGNvbG9yO1xuXHRcdGZsb2F0IGRpc3RhbmNlO1xuXHRcdGZsb2F0IGRlY2F5O1xuXHR9O1xuXHR1bmlmb3JtIFBvaW50TGlnaHQgcG9pbnRMaWdodHNbIE5VTV9QT0lOVF9MSUdIVFMgXTtcblx0dm9pZCBnZXRQb2ludERpcmVjdExpZ2h0SXJyYWRpYW5jZSggY29uc3QgaW4gUG9pbnRMaWdodCBwb2ludExpZ2h0LCBjb25zdCBpbiBHZW9tZXRyaWNDb250ZXh0IGdlb21ldHJ5LCBvdXQgSW5jaWRlbnRMaWdodCBkaXJlY3RMaWdodCApIHtcblx0XHR2ZWMzIGxWZWN0b3IgPSBwb2ludExpZ2h0LnBvc2l0aW9uIC0gZ2VvbWV0cnkucG9zaXRpb247XG5cdFx0ZGlyZWN0TGlnaHQuZGlyZWN0aW9uID0gbm9ybWFsaXplKCBsVmVjdG9yICk7XG5cdFx0ZmxvYXQgbGlnaHREaXN0YW5jZSA9IGxlbmd0aCggbFZlY3RvciApO1xuXHRcdGRpcmVjdExpZ2h0LmNvbG9yID0gcG9pbnRMaWdodC5jb2xvcjtcblx0XHRkaXJlY3RMaWdodC5jb2xvciAqPSBwdW5jdHVhbExpZ2h0SW50ZW5zaXR5VG9JcnJhZGlhbmNlRmFjdG9yKCBsaWdodERpc3RhbmNlLCBwb2ludExpZ2h0LmRpc3RhbmNlLCBwb2ludExpZ2h0LmRlY2F5ICk7XG5cdFx0ZGlyZWN0TGlnaHQudmlzaWJsZSA9ICggZGlyZWN0TGlnaHQuY29sb3IgIT0gdmVjMyggMC4wICkgKTtcblx0fVxuI2VuZGlmXG4jaWYgTlVNX1NQT1RfTElHSFRTID4gMFxuXHRzdHJ1Y3QgU3BvdExpZ2h0IHtcblx0XHR2ZWMzIHBvc2l0aW9uO1xuXHRcdHZlYzMgZGlyZWN0aW9uO1xuXHRcdHZlYzMgY29sb3I7XG5cdFx0ZmxvYXQgZGlzdGFuY2U7XG5cdFx0ZmxvYXQgZGVjYXk7XG5cdFx0ZmxvYXQgY29uZUNvcztcblx0XHRmbG9hdCBwZW51bWJyYUNvcztcblx0fTtcblx0dW5pZm9ybSBTcG90TGlnaHQgc3BvdExpZ2h0c1sgTlVNX1NQT1RfTElHSFRTIF07XG5cdHZvaWQgZ2V0U3BvdERpcmVjdExpZ2h0SXJyYWRpYW5jZSggY29uc3QgaW4gU3BvdExpZ2h0IHNwb3RMaWdodCwgY29uc3QgaW4gR2VvbWV0cmljQ29udGV4dCBnZW9tZXRyeSwgb3V0IEluY2lkZW50TGlnaHQgZGlyZWN0TGlnaHQgKSB7XG5cdFx0dmVjMyBsVmVjdG9yID0gc3BvdExpZ2h0LnBvc2l0aW9uIC0gZ2VvbWV0cnkucG9zaXRpb247XG5cdFx0ZGlyZWN0TGlnaHQuZGlyZWN0aW9uID0gbm9ybWFsaXplKCBsVmVjdG9yICk7XG5cdFx0ZmxvYXQgbGlnaHREaXN0YW5jZSA9IGxlbmd0aCggbFZlY3RvciApO1xuXHRcdGZsb2F0IGFuZ2xlQ29zID0gZG90KCBkaXJlY3RMaWdodC5kaXJlY3Rpb24sIHNwb3RMaWdodC5kaXJlY3Rpb24gKTtcblx0XHRpZiAoIGFuZ2xlQ29zID4gc3BvdExpZ2h0LmNvbmVDb3MgKSB7XG5cdFx0XHRmbG9hdCBzcG90RWZmZWN0ID0gc21vb3Roc3RlcCggc3BvdExpZ2h0LmNvbmVDb3MsIHNwb3RMaWdodC5wZW51bWJyYUNvcywgYW5nbGVDb3MgKTtcblx0XHRcdGRpcmVjdExpZ2h0LmNvbG9yID0gc3BvdExpZ2h0LmNvbG9yO1xuXHRcdFx0ZGlyZWN0TGlnaHQuY29sb3IgKj0gc3BvdEVmZmVjdCAqIHB1bmN0dWFsTGlnaHRJbnRlbnNpdHlUb0lycmFkaWFuY2VGYWN0b3IoIGxpZ2h0RGlzdGFuY2UsIHNwb3RMaWdodC5kaXN0YW5jZSwgc3BvdExpZ2h0LmRlY2F5ICk7XG5cdFx0XHRkaXJlY3RMaWdodC52aXNpYmxlID0gdHJ1ZTtcblx0XHR9IGVsc2Uge1xuXHRcdFx0ZGlyZWN0TGlnaHQuY29sb3IgPSB2ZWMzKCAwLjAgKTtcblx0XHRcdGRpcmVjdExpZ2h0LnZpc2libGUgPSBmYWxzZTtcblx0XHR9XG5cdH1cbiNlbmRpZlxuI2lmIE5VTV9SRUNUX0FSRUFfTElHSFRTID4gMFxuXHRzdHJ1Y3QgUmVjdEFyZWFMaWdodCB7XG5cdFx0dmVjMyBjb2xvcjtcblx0XHR2ZWMzIHBvc2l0aW9uO1xuXHRcdHZlYzMgaGFsZldpZHRoO1xuXHRcdHZlYzMgaGFsZkhlaWdodDtcblx0fTtcblx0dW5pZm9ybSBzYW1wbGVyMkQgbHRjXzE7XHR1bmlmb3JtIHNhbXBsZXIyRCBsdGNfMjtcblx0dW5pZm9ybSBSZWN0QXJlYUxpZ2h0IHJlY3RBcmVhTGlnaHRzWyBOVU1fUkVDVF9BUkVBX0xJR0hUUyBdO1xuI2VuZGlmXG4jaWYgTlVNX0hFTUlfTElHSFRTID4gMFxuXHRzdHJ1Y3QgSGVtaXNwaGVyZUxpZ2h0IHtcblx0XHR2ZWMzIGRpcmVjdGlvbjtcblx0XHR2ZWMzIHNreUNvbG9yO1xuXHRcdHZlYzMgZ3JvdW5kQ29sb3I7XG5cdH07XG5cdHVuaWZvcm0gSGVtaXNwaGVyZUxpZ2h0IGhlbWlzcGhlcmVMaWdodHNbIE5VTV9IRU1JX0xJR0hUUyBdO1xuXHR2ZWMzIGdldEhlbWlzcGhlcmVMaWdodElycmFkaWFuY2UoIGNvbnN0IGluIEhlbWlzcGhlcmVMaWdodCBoZW1pTGlnaHQsIGNvbnN0IGluIEdlb21ldHJpY0NvbnRleHQgZ2VvbWV0cnkgKSB7XG5cdFx0ZmxvYXQgZG90TkwgPSBkb3QoIGdlb21ldHJ5Lm5vcm1hbCwgaGVtaUxpZ2h0LmRpcmVjdGlvbiApO1xuXHRcdGZsb2F0IGhlbWlEaWZmdXNlV2VpZ2h0ID0gMC41ICogZG90TkwgKyAwLjU7XG5cdFx0dmVjMyBpcnJhZGlhbmNlID0gbWl4KCBoZW1pTGlnaHQuZ3JvdW5kQ29sb3IsIGhlbWlMaWdodC5za3lDb2xvciwgaGVtaURpZmZ1c2VXZWlnaHQgKTtcblx0XHQjaWZuZGVmIFBIWVNJQ0FMTFlfQ09SUkVDVF9MSUdIVFNcblx0XHRcdGlycmFkaWFuY2UgKj0gUEk7XG5cdFx0I2VuZGlmXG5cdFx0cmV0dXJuIGlycmFkaWFuY2U7XG5cdH1cbiNlbmRpZiIsbGlnaHRzX3Rvb25fZnJhZ21lbnQ6IlRvb25NYXRlcmlhbCBtYXRlcmlhbDtcbm1hdGVyaWFsLmRpZmZ1c2VDb2xvciA9IGRpZmZ1c2VDb2xvci5yZ2I7IixsaWdodHNfdG9vbl9wYXJzX2ZyYWdtZW50OiJ2YXJ5aW5nIHZlYzMgdlZpZXdQb3NpdGlvbjtcbiNpZm5kZWYgRkxBVF9TSEFERURcblx0dmFyeWluZyB2ZWMzIHZOb3JtYWw7XG4jZW5kaWZcbnN0cnVjdCBUb29uTWF0ZXJpYWwge1xuXHR2ZWMzIGRpZmZ1c2VDb2xvcjtcbn07XG52b2lkIFJFX0RpcmVjdF9Ub29uKCBjb25zdCBpbiBJbmNpZGVudExpZ2h0IGRpcmVjdExpZ2h0LCBjb25zdCBpbiBHZW9tZXRyaWNDb250ZXh0IGdlb21ldHJ5LCBjb25zdCBpbiBUb29uTWF0ZXJpYWwgbWF0ZXJpYWwsIGlub3V0IFJlZmxlY3RlZExpZ2h0IHJlZmxlY3RlZExpZ2h0ICkge1xuXHR2ZWMzIGlycmFkaWFuY2UgPSBnZXRHcmFkaWVudElycmFkaWFuY2UoIGdlb21ldHJ5Lm5vcm1hbCwgZGlyZWN0TGlnaHQuZGlyZWN0aW9uICkgKiBkaXJlY3RMaWdodC5jb2xvcjtcblx0I2lmbmRlZiBQSFlTSUNBTExZX0NPUlJFQ1RfTElHSFRTXG5cdFx0aXJyYWRpYW5jZSAqPSBQSTtcblx0I2VuZGlmXG5cdHJlZmxlY3RlZExpZ2h0LmRpcmVjdERpZmZ1c2UgKz0gaXJyYWRpYW5jZSAqIEJSREZfRGlmZnVzZV9MYW1iZXJ0KCBtYXRlcmlhbC5kaWZmdXNlQ29sb3IgKTtcbn1cbnZvaWQgUkVfSW5kaXJlY3REaWZmdXNlX1Rvb24oIGNvbnN0IGluIHZlYzMgaXJyYWRpYW5jZSwgY29uc3QgaW4gR2VvbWV0cmljQ29udGV4dCBnZW9tZXRyeSwgY29uc3QgaW4gVG9vbk1hdGVyaWFsIG1hdGVyaWFsLCBpbm91dCBSZWZsZWN0ZWRMaWdodCByZWZsZWN0ZWRMaWdodCApIHtcblx0cmVmbGVjdGVkTGlnaHQuaW5kaXJlY3REaWZmdXNlICs9IGlycmFkaWFuY2UgKiBCUkRGX0RpZmZ1c2VfTGFtYmVydCggbWF0ZXJpYWwuZGlmZnVzZUNvbG9yICk7XG59XG4jZGVmaW5lIFJFX0RpcmVjdFx0XHRcdFx0UkVfRGlyZWN0X1Rvb25cbiNkZWZpbmUgUkVfSW5kaXJlY3REaWZmdXNlXHRcdFJFX0luZGlyZWN0RGlmZnVzZV9Ub29uXG4jZGVmaW5lIE1hdGVyaWFsX0xpZ2h0UHJvYmVMT0QoIG1hdGVyaWFsIClcdCgwKSIsbGlnaHRzX3Bob25nX2ZyYWdtZW50OiJCbGlublBob25nTWF0ZXJpYWwgbWF0ZXJpYWw7XG5tYXRlcmlhbC5kaWZmdXNlQ29sb3IgPSBkaWZmdXNlQ29sb3IucmdiO1xubWF0ZXJpYWwuc3BlY3VsYXJDb2xvciA9IHNwZWN1bGFyO1xubWF0ZXJpYWwuc3BlY3VsYXJTaGluaW5lc3MgPSBzaGluaW5lc3M7XG5tYXRlcmlhbC5zcGVjdWxhclN0cmVuZ3RoID0gc3BlY3VsYXJTdHJlbmd0aDsiLGxpZ2h0c19waG9uZ19wYXJzX2ZyYWdtZW50OiJ2YXJ5aW5nIHZlYzMgdlZpZXdQb3NpdGlvbjtcbiNpZm5kZWYgRkxBVF9TSEFERURcblx0dmFyeWluZyB2ZWMzIHZOb3JtYWw7XG4jZW5kaWZcbnN0cnVjdCBCbGlublBob25nTWF0ZXJpYWwge1xuXHR2ZWMzIGRpZmZ1c2VDb2xvcjtcblx0dmVjMyBzcGVjdWxhckNvbG9yO1xuXHRmbG9hdCBzcGVjdWxhclNoaW5pbmVzcztcblx0ZmxvYXQgc3BlY3VsYXJTdHJlbmd0aDtcbn07XG52b2lkIFJFX0RpcmVjdF9CbGlublBob25nKCBjb25zdCBpbiBJbmNpZGVudExpZ2h0IGRpcmVjdExpZ2h0LCBjb25zdCBpbiBHZW9tZXRyaWNDb250ZXh0IGdlb21ldHJ5LCBjb25zdCBpbiBCbGlublBob25nTWF0ZXJpYWwgbWF0ZXJpYWwsIGlub3V0IFJlZmxlY3RlZExpZ2h0IHJlZmxlY3RlZExpZ2h0ICkge1xuXHRmbG9hdCBkb3ROTCA9IHNhdHVyYXRlKCBkb3QoIGdlb21ldHJ5Lm5vcm1hbCwgZGlyZWN0TGlnaHQuZGlyZWN0aW9uICkgKTtcblx0dmVjMyBpcnJhZGlhbmNlID0gZG90TkwgKiBkaXJlY3RMaWdodC5jb2xvcjtcblx0I2lmbmRlZiBQSFlTSUNBTExZX0NPUlJFQ1RfTElHSFRTXG5cdFx0aXJyYWRpYW5jZSAqPSBQSTtcblx0I2VuZGlmXG5cdHJlZmxlY3RlZExpZ2h0LmRpcmVjdERpZmZ1c2UgKz0gaXJyYWRpYW5jZSAqIEJSREZfRGlmZnVzZV9MYW1iZXJ0KCBtYXRlcmlhbC5kaWZmdXNlQ29sb3IgKTtcblx0cmVmbGVjdGVkTGlnaHQuZGlyZWN0U3BlY3VsYXIgKz0gaXJyYWRpYW5jZSAqIEJSREZfU3BlY3VsYXJfQmxpbm5QaG9uZyggZGlyZWN0TGlnaHQsIGdlb21ldHJ5LCBtYXRlcmlhbC5zcGVjdWxhckNvbG9yLCBtYXRlcmlhbC5zcGVjdWxhclNoaW5pbmVzcyApICogbWF0ZXJpYWwuc3BlY3VsYXJTdHJlbmd0aDtcbn1cbnZvaWQgUkVfSW5kaXJlY3REaWZmdXNlX0JsaW5uUGhvbmcoIGNvbnN0IGluIHZlYzMgaXJyYWRpYW5jZSwgY29uc3QgaW4gR2VvbWV0cmljQ29udGV4dCBnZW9tZXRyeSwgY29uc3QgaW4gQmxpbm5QaG9uZ01hdGVyaWFsIG1hdGVyaWFsLCBpbm91dCBSZWZsZWN0ZWRMaWdodCByZWZsZWN0ZWRMaWdodCApIHtcblx0cmVmbGVjdGVkTGlnaHQuaW5kaXJlY3REaWZmdXNlICs9IGlycmFkaWFuY2UgKiBCUkRGX0RpZmZ1c2VfTGFtYmVydCggbWF0ZXJpYWwuZGlmZnVzZUNvbG9yICk7XG59XG4jZGVmaW5lIFJFX0RpcmVjdFx0XHRcdFx0UkVfRGlyZWN0X0JsaW5uUGhvbmdcbiNkZWZpbmUgUkVfSW5kaXJlY3REaWZmdXNlXHRcdFJFX0luZGlyZWN0RGlmZnVzZV9CbGlublBob25nXG4jZGVmaW5lIE1hdGVyaWFsX0xpZ2h0UHJvYmVMT0QoIG1hdGVyaWFsIClcdCgwKSIsbGlnaHRzX3BoeXNpY2FsX2ZyYWdtZW50OiJQaHlzaWNhbE1hdGVyaWFsIG1hdGVyaWFsO1xubWF0ZXJpYWwuZGlmZnVzZUNvbG9yID0gZGlmZnVzZUNvbG9yLnJnYiAqICggMS4wIC0gbWV0YWxuZXNzRmFjdG9yICk7XG52ZWMzIGR4eSA9IG1heCggYWJzKCBkRmR4KCBnZW9tZXRyeU5vcm1hbCApICksIGFicyggZEZkeSggZ2VvbWV0cnlOb3JtYWwgKSApICk7XG5mbG9hdCBnZW9tZXRyeVJvdWdobmVzcyA9IG1heCggbWF4KCBkeHkueCwgZHh5LnkgKSwgZHh5LnogKTtcbm1hdGVyaWFsLnNwZWN1bGFyUm91Z2huZXNzID0gbWF4KCByb3VnaG5lc3NGYWN0b3IsIDAuMDUyNSApO21hdGVyaWFsLnNwZWN1bGFyUm91Z2huZXNzICs9IGdlb21ldHJ5Um91Z2huZXNzO1xubWF0ZXJpYWwuc3BlY3VsYXJSb3VnaG5lc3MgPSBtaW4oIG1hdGVyaWFsLnNwZWN1bGFyUm91Z2huZXNzLCAxLjAgKTtcbiNpZmRlZiBSRUZMRUNUSVZJVFlcblx0bWF0ZXJpYWwuc3BlY3VsYXJDb2xvciA9IG1peCggdmVjMyggTUFYSU1VTV9TUEVDVUxBUl9DT0VGRklDSUVOVCAqIHBvdzIoIHJlZmxlY3Rpdml0eSApICksIGRpZmZ1c2VDb2xvci5yZ2IsIG1ldGFsbmVzc0ZhY3RvciApO1xuI2Vsc2Vcblx0bWF0ZXJpYWwuc3BlY3VsYXJDb2xvciA9IG1peCggdmVjMyggREVGQVVMVF9TUEVDVUxBUl9DT0VGRklDSUVOVCApLCBkaWZmdXNlQ29sb3IucmdiLCBtZXRhbG5lc3NGYWN0b3IgKTtcbiNlbmRpZlxuI2lmZGVmIENMRUFSQ09BVFxuXHRtYXRlcmlhbC5jbGVhcmNvYXQgPSBjbGVhcmNvYXQ7XG5cdG1hdGVyaWFsLmNsZWFyY29hdFJvdWdobmVzcyA9IGNsZWFyY29hdFJvdWdobmVzcztcblx0I2lmZGVmIFVTRV9DTEVBUkNPQVRNQVBcblx0XHRtYXRlcmlhbC5jbGVhcmNvYXQgKj0gdGV4dHVyZTJEKCBjbGVhcmNvYXRNYXAsIHZVdiApLng7XG5cdCNlbmRpZlxuXHQjaWZkZWYgVVNFX0NMRUFSQ09BVF9ST1VHSE5FU1NNQVBcblx0XHRtYXRlcmlhbC5jbGVhcmNvYXRSb3VnaG5lc3MgKj0gdGV4dHVyZTJEKCBjbGVhcmNvYXRSb3VnaG5lc3NNYXAsIHZVdiApLnk7XG5cdCNlbmRpZlxuXHRtYXRlcmlhbC5jbGVhcmNvYXQgPSBzYXR1cmF0ZSggbWF0ZXJpYWwuY2xlYXJjb2F0ICk7XHRtYXRlcmlhbC5jbGVhcmNvYXRSb3VnaG5lc3MgPSBtYXgoIG1hdGVyaWFsLmNsZWFyY29hdFJvdWdobmVzcywgMC4wNTI1ICk7XG5cdG1hdGVyaWFsLmNsZWFyY29hdFJvdWdobmVzcyArPSBnZW9tZXRyeVJvdWdobmVzcztcblx0bWF0ZXJpYWwuY2xlYXJjb2F0Um91Z2huZXNzID0gbWluKCBtYXRlcmlhbC5jbGVhcmNvYXRSb3VnaG5lc3MsIDEuMCApO1xuI2VuZGlmXG4jaWZkZWYgVVNFX1NIRUVOXG5cdG1hdGVyaWFsLnNoZWVuQ29sb3IgPSBzaGVlbjtcbiNlbmRpZiIsbGlnaHRzX3BoeXNpY2FsX3BhcnNfZnJhZ21lbnQ6InN0cnVjdCBQaHlzaWNhbE1hdGVyaWFsIHtcblx0dmVjMyBkaWZmdXNlQ29sb3I7XG5cdGZsb2F0IHNwZWN1bGFyUm91Z2huZXNzO1xuXHR2ZWMzIHNwZWN1bGFyQ29sb3I7XG4jaWZkZWYgQ0xFQVJDT0FUXG5cdGZsb2F0IGNsZWFyY29hdDtcblx0ZmxvYXQgY2xlYXJjb2F0Um91Z2huZXNzO1xuI2VuZGlmXG4jaWZkZWYgVVNFX1NIRUVOXG5cdHZlYzMgc2hlZW5Db2xvcjtcbiNlbmRpZlxufTtcbiNkZWZpbmUgTUFYSU1VTV9TUEVDVUxBUl9DT0VGRklDSUVOVCAwLjE2XG4jZGVmaW5lIERFRkFVTFRfU1BFQ1VMQVJfQ09FRkZJQ0lFTlQgMC4wNFxuZmxvYXQgY2xlYXJjb2F0REhSQXBwcm94KCBjb25zdCBpbiBmbG9hdCByb3VnaG5lc3MsIGNvbnN0IGluIGZsb2F0IGRvdE5MICkge1xuXHRyZXR1cm4gREVGQVVMVF9TUEVDVUxBUl9DT0VGRklDSUVOVCArICggMS4wIC0gREVGQVVMVF9TUEVDVUxBUl9DT0VGRklDSUVOVCApICogKCBwb3coIDEuMCAtIGRvdE5MLCA1LjAgKSAqIHBvdyggMS4wIC0gcm91Z2huZXNzLCAyLjAgKSApO1xufVxuI2lmIE5VTV9SRUNUX0FSRUFfTElHSFRTID4gMFxuXHR2b2lkIFJFX0RpcmVjdF9SZWN0QXJlYV9QaHlzaWNhbCggY29uc3QgaW4gUmVjdEFyZWFMaWdodCByZWN0QXJlYUxpZ2h0LCBjb25zdCBpbiBHZW9tZXRyaWNDb250ZXh0IGdlb21ldHJ5LCBjb25zdCBpbiBQaHlzaWNhbE1hdGVyaWFsIG1hdGVyaWFsLCBpbm91dCBSZWZsZWN0ZWRMaWdodCByZWZsZWN0ZWRMaWdodCApIHtcblx0XHR2ZWMzIG5vcm1hbCA9IGdlb21ldHJ5Lm5vcm1hbDtcblx0XHR2ZWMzIHZpZXdEaXIgPSBnZW9tZXRyeS52aWV3RGlyO1xuXHRcdHZlYzMgcG9zaXRpb24gPSBnZW9tZXRyeS5wb3NpdGlvbjtcblx0XHR2ZWMzIGxpZ2h0UG9zID0gcmVjdEFyZWFMaWdodC5wb3NpdGlvbjtcblx0XHR2ZWMzIGhhbGZXaWR0aCA9IHJlY3RBcmVhTGlnaHQuaGFsZldpZHRoO1xuXHRcdHZlYzMgaGFsZkhlaWdodCA9IHJlY3RBcmVhTGlnaHQuaGFsZkhlaWdodDtcblx0XHR2ZWMzIGxpZ2h0Q29sb3IgPSByZWN0QXJlYUxpZ2h0LmNvbG9yO1xuXHRcdGZsb2F0IHJvdWdobmVzcyA9IG1hdGVyaWFsLnNwZWN1bGFyUm91Z2huZXNzO1xuXHRcdHZlYzMgcmVjdENvb3Jkc1sgNCBdO1xuXHRcdHJlY3RDb29yZHNbIDAgXSA9IGxpZ2h0UG9zICsgaGFsZldpZHRoIC0gaGFsZkhlaWdodDtcdFx0cmVjdENvb3Jkc1sgMSBdID0gbGlnaHRQb3MgLSBoYWxmV2lkdGggLSBoYWxmSGVpZ2h0O1xuXHRcdHJlY3RDb29yZHNbIDIgXSA9IGxpZ2h0UG9zIC0gaGFsZldpZHRoICsgaGFsZkhlaWdodDtcblx0XHRyZWN0Q29vcmRzWyAzIF0gPSBsaWdodFBvcyArIGhhbGZXaWR0aCArIGhhbGZIZWlnaHQ7XG5cdFx0dmVjMiB1diA9IExUQ19Vdiggbm9ybWFsLCB2aWV3RGlyLCByb3VnaG5lc3MgKTtcblx0XHR2ZWM0IHQxID0gdGV4dHVyZTJEKCBsdGNfMSwgdXYgKTtcblx0XHR2ZWM0IHQyID0gdGV4dHVyZTJEKCBsdGNfMiwgdXYgKTtcblx0XHRtYXQzIG1JbnYgPSBtYXQzKFxuXHRcdFx0dmVjMyggdDEueCwgMCwgdDEueSApLFxuXHRcdFx0dmVjMyggICAgMCwgMSwgICAgMCApLFxuXHRcdFx0dmVjMyggdDEueiwgMCwgdDEudyApXG5cdFx0KTtcblx0XHR2ZWMzIGZyZXNuZWwgPSAoIG1hdGVyaWFsLnNwZWN1bGFyQ29sb3IgKiB0Mi54ICsgKCB2ZWMzKCAxLjAgKSAtIG1hdGVyaWFsLnNwZWN1bGFyQ29sb3IgKSAqIHQyLnkgKTtcblx0XHRyZWZsZWN0ZWRMaWdodC5kaXJlY3RTcGVjdWxhciArPSBsaWdodENvbG9yICogZnJlc25lbCAqIExUQ19FdmFsdWF0ZSggbm9ybWFsLCB2aWV3RGlyLCBwb3NpdGlvbiwgbUludiwgcmVjdENvb3JkcyApO1xuXHRcdHJlZmxlY3RlZExpZ2h0LmRpcmVjdERpZmZ1c2UgKz0gbGlnaHRDb2xvciAqIG1hdGVyaWFsLmRpZmZ1c2VDb2xvciAqIExUQ19FdmFsdWF0ZSggbm9ybWFsLCB2aWV3RGlyLCBwb3NpdGlvbiwgbWF0MyggMS4wICksIHJlY3RDb29yZHMgKTtcblx0fVxuI2VuZGlmXG52b2lkIFJFX0RpcmVjdF9QaHlzaWNhbCggY29uc3QgaW4gSW5jaWRlbnRMaWdodCBkaXJlY3RMaWdodCwgY29uc3QgaW4gR2VvbWV0cmljQ29udGV4dCBnZW9tZXRyeSwgY29uc3QgaW4gUGh5c2ljYWxNYXRlcmlhbCBtYXRlcmlhbCwgaW5vdXQgUmVmbGVjdGVkTGlnaHQgcmVmbGVjdGVkTGlnaHQgKSB7XG5cdGZsb2F0IGRvdE5MID0gc2F0dXJhdGUoIGRvdCggZ2VvbWV0cnkubm9ybWFsLCBkaXJlY3RMaWdodC5kaXJlY3Rpb24gKSApO1xuXHR2ZWMzIGlycmFkaWFuY2UgPSBkb3ROTCAqIGRpcmVjdExpZ2h0LmNvbG9yO1xuXHQjaWZuZGVmIFBIWVNJQ0FMTFlfQ09SUkVDVF9MSUdIVFNcblx0XHRpcnJhZGlhbmNlICo9IFBJO1xuXHQjZW5kaWZcblx0I2lmZGVmIENMRUFSQ09BVFxuXHRcdGZsb2F0IGNjRG90TkwgPSBzYXR1cmF0ZSggZG90KCBnZW9tZXRyeS5jbGVhcmNvYXROb3JtYWwsIGRpcmVjdExpZ2h0LmRpcmVjdGlvbiApICk7XG5cdFx0dmVjMyBjY0lycmFkaWFuY2UgPSBjY0RvdE5MICogZGlyZWN0TGlnaHQuY29sb3I7XG5cdFx0I2lmbmRlZiBQSFlTSUNBTExZX0NPUlJFQ1RfTElHSFRTXG5cdFx0XHRjY0lycmFkaWFuY2UgKj0gUEk7XG5cdFx0I2VuZGlmXG5cdFx0ZmxvYXQgY2xlYXJjb2F0REhSID0gbWF0ZXJpYWwuY2xlYXJjb2F0ICogY2xlYXJjb2F0REhSQXBwcm94KCBtYXRlcmlhbC5jbGVhcmNvYXRSb3VnaG5lc3MsIGNjRG90TkwgKTtcblx0XHRyZWZsZWN0ZWRMaWdodC5kaXJlY3RTcGVjdWxhciArPSBjY0lycmFkaWFuY2UgKiBtYXRlcmlhbC5jbGVhcmNvYXQgKiBCUkRGX1NwZWN1bGFyX0dHWCggZGlyZWN0TGlnaHQsIGdlb21ldHJ5LnZpZXdEaXIsIGdlb21ldHJ5LmNsZWFyY29hdE5vcm1hbCwgdmVjMyggREVGQVVMVF9TUEVDVUxBUl9DT0VGRklDSUVOVCApLCBtYXRlcmlhbC5jbGVhcmNvYXRSb3VnaG5lc3MgKTtcblx0I2Vsc2Vcblx0XHRmbG9hdCBjbGVhcmNvYXRESFIgPSAwLjA7XG5cdCNlbmRpZlxuXHQjaWZkZWYgVVNFX1NIRUVOXG5cdFx0cmVmbGVjdGVkTGlnaHQuZGlyZWN0U3BlY3VsYXIgKz0gKCAxLjAgLSBjbGVhcmNvYXRESFIgKSAqIGlycmFkaWFuY2UgKiBCUkRGX1NwZWN1bGFyX1NoZWVuKFxuXHRcdFx0bWF0ZXJpYWwuc3BlY3VsYXJSb3VnaG5lc3MsXG5cdFx0XHRkaXJlY3RMaWdodC5kaXJlY3Rpb24sXG5cdFx0XHRnZW9tZXRyeSxcblx0XHRcdG1hdGVyaWFsLnNoZWVuQ29sb3Jcblx0XHQpO1xuXHQjZWxzZVxuXHRcdHJlZmxlY3RlZExpZ2h0LmRpcmVjdFNwZWN1bGFyICs9ICggMS4wIC0gY2xlYXJjb2F0REhSICkgKiBpcnJhZGlhbmNlICogQlJERl9TcGVjdWxhcl9HR1goIGRpcmVjdExpZ2h0LCBnZW9tZXRyeS52aWV3RGlyLCBnZW9tZXRyeS5ub3JtYWwsIG1hdGVyaWFsLnNwZWN1bGFyQ29sb3IsIG1hdGVyaWFsLnNwZWN1bGFyUm91Z2huZXNzKTtcblx0I2VuZGlmXG5cdHJlZmxlY3RlZExpZ2h0LmRpcmVjdERpZmZ1c2UgKz0gKCAxLjAgLSBjbGVhcmNvYXRESFIgKSAqIGlycmFkaWFuY2UgKiBCUkRGX0RpZmZ1c2VfTGFtYmVydCggbWF0ZXJpYWwuZGlmZnVzZUNvbG9yICk7XG59XG52b2lkIFJFX0luZGlyZWN0RGlmZnVzZV9QaHlzaWNhbCggY29uc3QgaW4gdmVjMyBpcnJhZGlhbmNlLCBjb25zdCBpbiBHZW9tZXRyaWNDb250ZXh0IGdlb21ldHJ5LCBjb25zdCBpbiBQaHlzaWNhbE1hdGVyaWFsIG1hdGVyaWFsLCBpbm91dCBSZWZsZWN0ZWRMaWdodCByZWZsZWN0ZWRMaWdodCApIHtcblx0cmVmbGVjdGVkTGlnaHQuaW5kaXJlY3REaWZmdXNlICs9IGlycmFkaWFuY2UgKiBCUkRGX0RpZmZ1c2VfTGFtYmVydCggbWF0ZXJpYWwuZGlmZnVzZUNvbG9yICk7XG59XG52b2lkIFJFX0luZGlyZWN0U3BlY3VsYXJfUGh5c2ljYWwoIGNvbnN0IGluIHZlYzMgcmFkaWFuY2UsIGNvbnN0IGluIHZlYzMgaXJyYWRpYW5jZSwgY29uc3QgaW4gdmVjMyBjbGVhcmNvYXRSYWRpYW5jZSwgY29uc3QgaW4gR2VvbWV0cmljQ29udGV4dCBnZW9tZXRyeSwgY29uc3QgaW4gUGh5c2ljYWxNYXRlcmlhbCBtYXRlcmlhbCwgaW5vdXQgUmVmbGVjdGVkTGlnaHQgcmVmbGVjdGVkTGlnaHQpIHtcblx0I2lmZGVmIENMRUFSQ09BVFxuXHRcdGZsb2F0IGNjRG90TlYgPSBzYXR1cmF0ZSggZG90KCBnZW9tZXRyeS5jbGVhcmNvYXROb3JtYWwsIGdlb21ldHJ5LnZpZXdEaXIgKSApO1xuXHRcdHJlZmxlY3RlZExpZ2h0LmluZGlyZWN0U3BlY3VsYXIgKz0gY2xlYXJjb2F0UmFkaWFuY2UgKiBtYXRlcmlhbC5jbGVhcmNvYXQgKiBCUkRGX1NwZWN1bGFyX0dHWF9FbnZpcm9ubWVudCggZ2VvbWV0cnkudmlld0RpciwgZ2VvbWV0cnkuY2xlYXJjb2F0Tm9ybWFsLCB2ZWMzKCBERUZBVUxUX1NQRUNVTEFSX0NPRUZGSUNJRU5UICksIG1hdGVyaWFsLmNsZWFyY29hdFJvdWdobmVzcyApO1xuXHRcdGZsb2F0IGNjRG90TkwgPSBjY0RvdE5WO1xuXHRcdGZsb2F0IGNsZWFyY29hdERIUiA9IG1hdGVyaWFsLmNsZWFyY29hdCAqIGNsZWFyY29hdERIUkFwcHJveCggbWF0ZXJpYWwuY2xlYXJjb2F0Um91Z2huZXNzLCBjY0RvdE5MICk7XG5cdCNlbHNlXG5cdFx0ZmxvYXQgY2xlYXJjb2F0REhSID0gMC4wO1xuXHQjZW5kaWZcblx0ZmxvYXQgY2xlYXJjb2F0SW52ID0gMS4wIC0gY2xlYXJjb2F0REhSO1xuXHR2ZWMzIHNpbmdsZVNjYXR0ZXJpbmcgPSB2ZWMzKCAwLjAgKTtcblx0dmVjMyBtdWx0aVNjYXR0ZXJpbmcgPSB2ZWMzKCAwLjAgKTtcblx0dmVjMyBjb3NpbmVXZWlnaHRlZElycmFkaWFuY2UgPSBpcnJhZGlhbmNlICogUkVDSVBST0NBTF9QSTtcblx0QlJERl9TcGVjdWxhcl9NdWx0aXNjYXR0ZXJpbmdfRW52aXJvbm1lbnQoIGdlb21ldHJ5LCBtYXRlcmlhbC5zcGVjdWxhckNvbG9yLCBtYXRlcmlhbC5zcGVjdWxhclJvdWdobmVzcywgc2luZ2xlU2NhdHRlcmluZywgbXVsdGlTY2F0dGVyaW5nICk7XG5cdHZlYzMgZGlmZnVzZSA9IG1hdGVyaWFsLmRpZmZ1c2VDb2xvciAqICggMS4wIC0gKCBzaW5nbGVTY2F0dGVyaW5nICsgbXVsdGlTY2F0dGVyaW5nICkgKTtcblx0cmVmbGVjdGVkTGlnaHQuaW5kaXJlY3RTcGVjdWxhciArPSBjbGVhcmNvYXRJbnYgKiByYWRpYW5jZSAqIHNpbmdsZVNjYXR0ZXJpbmc7XG5cdHJlZmxlY3RlZExpZ2h0LmluZGlyZWN0U3BlY3VsYXIgKz0gbXVsdGlTY2F0dGVyaW5nICogY29zaW5lV2VpZ2h0ZWRJcnJhZGlhbmNlO1xuXHRyZWZsZWN0ZWRMaWdodC5pbmRpcmVjdERpZmZ1c2UgKz0gZGlmZnVzZSAqIGNvc2luZVdlaWdodGVkSXJyYWRpYW5jZTtcbn1cbiNkZWZpbmUgUkVfRGlyZWN0XHRcdFx0XHRSRV9EaXJlY3RfUGh5c2ljYWxcbiNkZWZpbmUgUkVfRGlyZWN0X1JlY3RBcmVhXHRcdFJFX0RpcmVjdF9SZWN0QXJlYV9QaHlzaWNhbFxuI2RlZmluZSBSRV9JbmRpcmVjdERpZmZ1c2VcdFx0UkVfSW5kaXJlY3REaWZmdXNlX1BoeXNpY2FsXG4jZGVmaW5lIFJFX0luZGlyZWN0U3BlY3VsYXJcdFx0UkVfSW5kaXJlY3RTcGVjdWxhcl9QaHlzaWNhbFxuZmxvYXQgY29tcHV0ZVNwZWN1bGFyT2NjbHVzaW9uKCBjb25zdCBpbiBmbG9hdCBkb3ROViwgY29uc3QgaW4gZmxvYXQgYW1iaWVudE9jY2x1c2lvbiwgY29uc3QgaW4gZmxvYXQgcm91Z2huZXNzICkge1xuXHRyZXR1cm4gc2F0dXJhdGUoIHBvdyggZG90TlYgKyBhbWJpZW50T2NjbHVzaW9uLCBleHAyKCAtIDE2LjAgKiByb3VnaG5lc3MgLSAxLjAgKSApIC0gMS4wICsgYW1iaWVudE9jY2x1c2lvbiApO1xufSIsbGlnaHRzX2ZyYWdtZW50X2JlZ2luOiJcbkdlb21ldHJpY0NvbnRleHQgZ2VvbWV0cnk7XG5nZW9tZXRyeS5wb3NpdGlvbiA9IC0gdlZpZXdQb3NpdGlvbjtcbmdlb21ldHJ5Lm5vcm1hbCA9IG5vcm1hbDtcbmdlb21ldHJ5LnZpZXdEaXIgPSAoIGlzT3J0aG9ncmFwaGljICkgPyB2ZWMzKCAwLCAwLCAxICkgOiBub3JtYWxpemUoIHZWaWV3UG9zaXRpb24gKTtcbiNpZmRlZiBDTEVBUkNPQVRcblx0Z2VvbWV0cnkuY2xlYXJjb2F0Tm9ybWFsID0gY2xlYXJjb2F0Tm9ybWFsO1xuI2VuZGlmXG5JbmNpZGVudExpZ2h0IGRpcmVjdExpZ2h0O1xuI2lmICggTlVNX1BPSU5UX0xJR0hUUyA+IDAgKSAmJiBkZWZpbmVkKCBSRV9EaXJlY3QgKVxuXHRQb2ludExpZ2h0IHBvaW50TGlnaHQ7XG5cdCNpZiBkZWZpbmVkKCBVU0VfU0hBRE9XTUFQICkgJiYgTlVNX1BPSU5UX0xJR0hUX1NIQURPV1MgPiAwXG5cdFBvaW50TGlnaHRTaGFkb3cgcG9pbnRMaWdodFNoYWRvdztcblx0I2VuZGlmXG5cdCNwcmFnbWEgdW5yb2xsX2xvb3Bfc3RhcnRcblx0Zm9yICggaW50IGkgPSAwOyBpIDwgTlVNX1BPSU5UX0xJR0hUUzsgaSArKyApIHtcblx0XHRwb2ludExpZ2h0ID0gcG9pbnRMaWdodHNbIGkgXTtcblx0XHRnZXRQb2ludERpcmVjdExpZ2h0SXJyYWRpYW5jZSggcG9pbnRMaWdodCwgZ2VvbWV0cnksIGRpcmVjdExpZ2h0ICk7XG5cdFx0I2lmIGRlZmluZWQoIFVTRV9TSEFET1dNQVAgKSAmJiAoIFVOUk9MTEVEX0xPT1BfSU5ERVggPCBOVU1fUE9JTlRfTElHSFRfU0hBRE9XUyApXG5cdFx0cG9pbnRMaWdodFNoYWRvdyA9IHBvaW50TGlnaHRTaGFkb3dzWyBpIF07XG5cdFx0ZGlyZWN0TGlnaHQuY29sb3IgKj0gYWxsKCBidmVjMiggZGlyZWN0TGlnaHQudmlzaWJsZSwgcmVjZWl2ZVNoYWRvdyApICkgPyBnZXRQb2ludFNoYWRvdyggcG9pbnRTaGFkb3dNYXBbIGkgXSwgcG9pbnRMaWdodFNoYWRvdy5zaGFkb3dNYXBTaXplLCBwb2ludExpZ2h0U2hhZG93LnNoYWRvd0JpYXMsIHBvaW50TGlnaHRTaGFkb3cuc2hhZG93UmFkaXVzLCB2UG9pbnRTaGFkb3dDb29yZFsgaSBdLCBwb2ludExpZ2h0U2hhZG93LnNoYWRvd0NhbWVyYU5lYXIsIHBvaW50TGlnaHRTaGFkb3cuc2hhZG93Q2FtZXJhRmFyICkgOiAxLjA7XG5cdFx0I2VuZGlmXG5cdFx0UkVfRGlyZWN0KCBkaXJlY3RMaWdodCwgZ2VvbWV0cnksIG1hdGVyaWFsLCByZWZsZWN0ZWRMaWdodCApO1xuXHR9XG5cdCNwcmFnbWEgdW5yb2xsX2xvb3BfZW5kXG4jZW5kaWZcbiNpZiAoIE5VTV9TUE9UX0xJR0hUUyA+IDAgKSAmJiBkZWZpbmVkKCBSRV9EaXJlY3QgKVxuXHRTcG90TGlnaHQgc3BvdExpZ2h0O1xuXHQjaWYgZGVmaW5lZCggVVNFX1NIQURPV01BUCApICYmIE5VTV9TUE9UX0xJR0hUX1NIQURPV1MgPiAwXG5cdFNwb3RMaWdodFNoYWRvdyBzcG90TGlnaHRTaGFkb3c7XG5cdCNlbmRpZlxuXHQjcHJhZ21hIHVucm9sbF9sb29wX3N0YXJ0XG5cdGZvciAoIGludCBpID0gMDsgaSA8IE5VTV9TUE9UX0xJR0hUUzsgaSArKyApIHtcblx0XHRzcG90TGlnaHQgPSBzcG90TGlnaHRzWyBpIF07XG5cdFx0Z2V0U3BvdERpcmVjdExpZ2h0SXJyYWRpYW5jZSggc3BvdExpZ2h0LCBnZW9tZXRyeSwgZGlyZWN0TGlnaHQgKTtcblx0XHQjaWYgZGVmaW5lZCggVVNFX1NIQURPV01BUCApICYmICggVU5ST0xMRURfTE9PUF9JTkRFWCA8IE5VTV9TUE9UX0xJR0hUX1NIQURPV1MgKVxuXHRcdHNwb3RMaWdodFNoYWRvdyA9IHNwb3RMaWdodFNoYWRvd3NbIGkgXTtcblx0XHRkaXJlY3RMaWdodC5jb2xvciAqPSBhbGwoIGJ2ZWMyKCBkaXJlY3RMaWdodC52aXNpYmxlLCByZWNlaXZlU2hhZG93ICkgKSA/IGdldFNoYWRvdyggc3BvdFNoYWRvd01hcFsgaSBdLCBzcG90TGlnaHRTaGFkb3cuc2hhZG93TWFwU2l6ZSwgc3BvdExpZ2h0U2hhZG93LnNoYWRvd0JpYXMsIHNwb3RMaWdodFNoYWRvdy5zaGFkb3dSYWRpdXMsIHZTcG90U2hhZG93Q29vcmRbIGkgXSApIDogMS4wO1xuXHRcdCNlbmRpZlxuXHRcdFJFX0RpcmVjdCggZGlyZWN0TGlnaHQsIGdlb21ldHJ5LCBtYXRlcmlhbCwgcmVmbGVjdGVkTGlnaHQgKTtcblx0fVxuXHQjcHJhZ21hIHVucm9sbF9sb29wX2VuZFxuI2VuZGlmXG4jaWYgKCBOVU1fRElSX0xJR0hUUyA+IDAgKSAmJiBkZWZpbmVkKCBSRV9EaXJlY3QgKVxuXHREaXJlY3Rpb25hbExpZ2h0IGRpcmVjdGlvbmFsTGlnaHQ7XG5cdCNpZiBkZWZpbmVkKCBVU0VfU0hBRE9XTUFQICkgJiYgTlVNX0RJUl9MSUdIVF9TSEFET1dTID4gMFxuXHREaXJlY3Rpb25hbExpZ2h0U2hhZG93IGRpcmVjdGlvbmFsTGlnaHRTaGFkb3c7XG5cdCNlbmRpZlxuXHQjcHJhZ21hIHVucm9sbF9sb29wX3N0YXJ0XG5cdGZvciAoIGludCBpID0gMDsgaSA8IE5VTV9ESVJfTElHSFRTOyBpICsrICkge1xuXHRcdGRpcmVjdGlvbmFsTGlnaHQgPSBkaXJlY3Rpb25hbExpZ2h0c1sgaSBdO1xuXHRcdGdldERpcmVjdGlvbmFsRGlyZWN0TGlnaHRJcnJhZGlhbmNlKCBkaXJlY3Rpb25hbExpZ2h0LCBnZW9tZXRyeSwgZGlyZWN0TGlnaHQgKTtcblx0XHQjaWYgZGVmaW5lZCggVVNFX1NIQURPV01BUCApICYmICggVU5ST0xMRURfTE9PUF9JTkRFWCA8IE5VTV9ESVJfTElHSFRfU0hBRE9XUyApXG5cdFx0ZGlyZWN0aW9uYWxMaWdodFNoYWRvdyA9IGRpcmVjdGlvbmFsTGlnaHRTaGFkb3dzWyBpIF07XG5cdFx0ZGlyZWN0TGlnaHQuY29sb3IgKj0gYWxsKCBidmVjMiggZGlyZWN0TGlnaHQudmlzaWJsZSwgcmVjZWl2ZVNoYWRvdyApICkgPyBnZXRTaGFkb3coIGRpcmVjdGlvbmFsU2hhZG93TWFwWyBpIF0sIGRpcmVjdGlvbmFsTGlnaHRTaGFkb3cuc2hhZG93TWFwU2l6ZSwgZGlyZWN0aW9uYWxMaWdodFNoYWRvdy5zaGFkb3dCaWFzLCBkaXJlY3Rpb25hbExpZ2h0U2hhZG93LnNoYWRvd1JhZGl1cywgdkRpcmVjdGlvbmFsU2hhZG93Q29vcmRbIGkgXSApIDogMS4wO1xuXHRcdCNlbmRpZlxuXHRcdFJFX0RpcmVjdCggZGlyZWN0TGlnaHQsIGdlb21ldHJ5LCBtYXRlcmlhbCwgcmVmbGVjdGVkTGlnaHQgKTtcblx0fVxuXHQjcHJhZ21hIHVucm9sbF9sb29wX2VuZFxuI2VuZGlmXG4jaWYgKCBOVU1fUkVDVF9BUkVBX0xJR0hUUyA+IDAgKSAmJiBkZWZpbmVkKCBSRV9EaXJlY3RfUmVjdEFyZWEgKVxuXHRSZWN0QXJlYUxpZ2h0IHJlY3RBcmVhTGlnaHQ7XG5cdCNwcmFnbWEgdW5yb2xsX2xvb3Bfc3RhcnRcblx0Zm9yICggaW50IGkgPSAwOyBpIDwgTlVNX1JFQ1RfQVJFQV9MSUdIVFM7IGkgKysgKSB7XG5cdFx0cmVjdEFyZWFMaWdodCA9IHJlY3RBcmVhTGlnaHRzWyBpIF07XG5cdFx0UkVfRGlyZWN0X1JlY3RBcmVhKCByZWN0QXJlYUxpZ2h0LCBnZW9tZXRyeSwgbWF0ZXJpYWwsIHJlZmxlY3RlZExpZ2h0ICk7XG5cdH1cblx0I3ByYWdtYSB1bnJvbGxfbG9vcF9lbmRcbiNlbmRpZlxuI2lmIGRlZmluZWQoIFJFX0luZGlyZWN0RGlmZnVzZSApXG5cdHZlYzMgaWJsSXJyYWRpYW5jZSA9IHZlYzMoIDAuMCApO1xuXHR2ZWMzIGlycmFkaWFuY2UgPSBnZXRBbWJpZW50TGlnaHRJcnJhZGlhbmNlKCBhbWJpZW50TGlnaHRDb2xvciApO1xuXHRpcnJhZGlhbmNlICs9IGdldExpZ2h0UHJvYmVJcnJhZGlhbmNlKCBsaWdodFByb2JlLCBnZW9tZXRyeSApO1xuXHQjaWYgKCBOVU1fSEVNSV9MSUdIVFMgPiAwIClcblx0XHQjcHJhZ21hIHVucm9sbF9sb29wX3N0YXJ0XG5cdFx0Zm9yICggaW50IGkgPSAwOyBpIDwgTlVNX0hFTUlfTElHSFRTOyBpICsrICkge1xuXHRcdFx0aXJyYWRpYW5jZSArPSBnZXRIZW1pc3BoZXJlTGlnaHRJcnJhZGlhbmNlKCBoZW1pc3BoZXJlTGlnaHRzWyBpIF0sIGdlb21ldHJ5ICk7XG5cdFx0fVxuXHRcdCNwcmFnbWEgdW5yb2xsX2xvb3BfZW5kXG5cdCNlbmRpZlxuI2VuZGlmXG4jaWYgZGVmaW5lZCggUkVfSW5kaXJlY3RTcGVjdWxhciApXG5cdHZlYzMgcmFkaWFuY2UgPSB2ZWMzKCAwLjAgKTtcblx0dmVjMyBjbGVhcmNvYXRSYWRpYW5jZSA9IHZlYzMoIDAuMCApO1xuI2VuZGlmIixsaWdodHNfZnJhZ21lbnRfbWFwczoiI2lmIGRlZmluZWQoIFJFX0luZGlyZWN0RGlmZnVzZSApXG5cdCNpZmRlZiBVU0VfTElHSFRNQVBcblx0XHR2ZWM0IGxpZ2h0TWFwVGV4ZWw9IHRleHR1cmUyRCggbGlnaHRNYXAsIHZVdjIgKTtcblx0XHR2ZWMzIGxpZ2h0TWFwSXJyYWRpYW5jZSA9IGxpZ2h0TWFwVGV4ZWxUb0xpbmVhciggbGlnaHRNYXBUZXhlbCApLnJnYiAqIGxpZ2h0TWFwSW50ZW5zaXR5O1xuXHRcdCNpZm5kZWYgUEhZU0lDQUxMWV9DT1JSRUNUX0xJR0hUU1xuXHRcdFx0bGlnaHRNYXBJcnJhZGlhbmNlICo9IFBJO1xuXHRcdCNlbmRpZlxuXHRcdGlycmFkaWFuY2UgKz0gbGlnaHRNYXBJcnJhZGlhbmNlO1xuXHQjZW5kaWZcblx0I2lmIGRlZmluZWQoIFVTRV9FTlZNQVAgKSAmJiBkZWZpbmVkKCBTVEFOREFSRCApICYmIGRlZmluZWQoIEVOVk1BUF9UWVBFX0NVQkVfVVYgKVxuXHRcdGlibElycmFkaWFuY2UgKz0gZ2V0TGlnaHRQcm9iZUluZGlyZWN0SXJyYWRpYW5jZSggZ2VvbWV0cnksIG1heE1pcExldmVsICk7XG5cdCNlbmRpZlxuI2VuZGlmXG4jaWYgZGVmaW5lZCggVVNFX0VOVk1BUCApICYmIGRlZmluZWQoIFJFX0luZGlyZWN0U3BlY3VsYXIgKVxuXHRyYWRpYW5jZSArPSBnZXRMaWdodFByb2JlSW5kaXJlY3RSYWRpYW5jZSggZ2VvbWV0cnkudmlld0RpciwgZ2VvbWV0cnkubm9ybWFsLCBtYXRlcmlhbC5zcGVjdWxhclJvdWdobmVzcywgbWF4TWlwTGV2ZWwgKTtcblx0I2lmZGVmIENMRUFSQ09BVFxuXHRcdGNsZWFyY29hdFJhZGlhbmNlICs9IGdldExpZ2h0UHJvYmVJbmRpcmVjdFJhZGlhbmNlKCBnZW9tZXRyeS52aWV3RGlyLCBnZW9tZXRyeS5jbGVhcmNvYXROb3JtYWwsIG1hdGVyaWFsLmNsZWFyY29hdFJvdWdobmVzcywgbWF4TWlwTGV2ZWwgKTtcblx0I2VuZGlmXG4jZW5kaWYiLGxpZ2h0c19mcmFnbWVudF9lbmQ6IiNpZiBkZWZpbmVkKCBSRV9JbmRpcmVjdERpZmZ1c2UgKVxuXHRSRV9JbmRpcmVjdERpZmZ1c2UoIGlycmFkaWFuY2UsIGdlb21ldHJ5LCBtYXRlcmlhbCwgcmVmbGVjdGVkTGlnaHQgKTtcbiNlbmRpZlxuI2lmIGRlZmluZWQoIFJFX0luZGlyZWN0U3BlY3VsYXIgKVxuXHRSRV9JbmRpcmVjdFNwZWN1bGFyKCByYWRpYW5jZSwgaWJsSXJyYWRpYW5jZSwgY2xlYXJjb2F0UmFkaWFuY2UsIGdlb21ldHJ5LCBtYXRlcmlhbCwgcmVmbGVjdGVkTGlnaHQgKTtcbiNlbmRpZiIsbG9nZGVwdGhidWZfZnJhZ21lbnQ6IiNpZiBkZWZpbmVkKCBVU0VfTE9HREVQVEhCVUYgKSAmJiBkZWZpbmVkKCBVU0VfTE9HREVQVEhCVUZfRVhUIClcblx0Z2xfRnJhZ0RlcHRoRVhUID0gdklzUGVyc3BlY3RpdmUgPT0gMC4wID8gZ2xfRnJhZ0Nvb3JkLnogOiBsb2cyKCB2RnJhZ0RlcHRoICkgKiBsb2dEZXB0aEJ1ZkZDICogMC41O1xuI2VuZGlmIixsb2dkZXB0aGJ1Zl9wYXJzX2ZyYWdtZW50OiIjaWYgZGVmaW5lZCggVVNFX0xPR0RFUFRIQlVGICkgJiYgZGVmaW5lZCggVVNFX0xPR0RFUFRIQlVGX0VYVCApXG5cdHVuaWZvcm0gZmxvYXQgbG9nRGVwdGhCdWZGQztcblx0dmFyeWluZyBmbG9hdCB2RnJhZ0RlcHRoO1xuXHR2YXJ5aW5nIGZsb2F0IHZJc1BlcnNwZWN0aXZlO1xuI2VuZGlmIixsb2dkZXB0aGJ1Zl9wYXJzX3ZlcnRleDoiI2lmZGVmIFVTRV9MT0dERVBUSEJVRlxuXHQjaWZkZWYgVVNFX0xPR0RFUFRIQlVGX0VYVFxuXHRcdHZhcnlpbmcgZmxvYXQgdkZyYWdEZXB0aDtcblx0XHR2YXJ5aW5nIGZsb2F0IHZJc1BlcnNwZWN0aXZlO1xuXHQjZWxzZVxuXHRcdHVuaWZvcm0gZmxvYXQgbG9nRGVwdGhCdWZGQztcblx0I2VuZGlmXG4jZW5kaWYiLGxvZ2RlcHRoYnVmX3ZlcnRleDoiI2lmZGVmIFVTRV9MT0dERVBUSEJVRlxuXHQjaWZkZWYgVVNFX0xPR0RFUFRIQlVGX0VYVFxuXHRcdHZGcmFnRGVwdGggPSAxLjAgKyBnbF9Qb3NpdGlvbi53O1xuXHRcdHZJc1BlcnNwZWN0aXZlID0gZmxvYXQoIGlzUGVyc3BlY3RpdmVNYXRyaXgoIHByb2plY3Rpb25NYXRyaXggKSApO1xuXHQjZWxzZVxuXHRcdGlmICggaXNQZXJzcGVjdGl2ZU1hdHJpeCggcHJvamVjdGlvbk1hdHJpeCApICkge1xuXHRcdFx0Z2xfUG9zaXRpb24ueiA9IGxvZzIoIG1heCggRVBTSUxPTiwgZ2xfUG9zaXRpb24udyArIDEuMCApICkgKiBsb2dEZXB0aEJ1ZkZDIC0gMS4wO1xuXHRcdFx0Z2xfUG9zaXRpb24ueiAqPSBnbF9Qb3NpdGlvbi53O1xuXHRcdH1cblx0I2VuZGlmXG4jZW5kaWYiLG1hcF9mcmFnbWVudDoiI2lmZGVmIFVTRV9NQVBcblx0dmVjNCB0ZXhlbENvbG9yID0gdGV4dHVyZTJEKCBtYXAsIHZVdiApO1xuXHR0ZXhlbENvbG9yID0gbWFwVGV4ZWxUb0xpbmVhciggdGV4ZWxDb2xvciApO1xuXHRkaWZmdXNlQ29sb3IgKj0gdGV4ZWxDb2xvcjtcbiNlbmRpZiIsbWFwX3BhcnNfZnJhZ21lbnQ6IiNpZmRlZiBVU0VfTUFQXG5cdHVuaWZvcm0gc2FtcGxlcjJEIG1hcDtcbiNlbmRpZiIsbWFwX3BhcnRpY2xlX2ZyYWdtZW50OiIjaWYgZGVmaW5lZCggVVNFX01BUCApIHx8IGRlZmluZWQoIFVTRV9BTFBIQU1BUCApXG5cdHZlYzIgdXYgPSAoIHV2VHJhbnNmb3JtICogdmVjMyggZ2xfUG9pbnRDb29yZC54LCAxLjAgLSBnbF9Qb2ludENvb3JkLnksIDEgKSApLnh5O1xuI2VuZGlmXG4jaWZkZWYgVVNFX01BUFxuXHR2ZWM0IG1hcFRleGVsID0gdGV4dHVyZTJEKCBtYXAsIHV2ICk7XG5cdGRpZmZ1c2VDb2xvciAqPSBtYXBUZXhlbFRvTGluZWFyKCBtYXBUZXhlbCApO1xuI2VuZGlmXG4jaWZkZWYgVVNFX0FMUEhBTUFQXG5cdGRpZmZ1c2VDb2xvci5hICo9IHRleHR1cmUyRCggYWxwaGFNYXAsIHV2ICkuZztcbiNlbmRpZiIsbWFwX3BhcnRpY2xlX3BhcnNfZnJhZ21lbnQ6IiNpZiBkZWZpbmVkKCBVU0VfTUFQICkgfHwgZGVmaW5lZCggVVNFX0FMUEhBTUFQIClcblx0dW5pZm9ybSBtYXQzIHV2VHJhbnNmb3JtO1xuI2VuZGlmXG4jaWZkZWYgVVNFX01BUFxuXHR1bmlmb3JtIHNhbXBsZXIyRCBtYXA7XG4jZW5kaWZcbiNpZmRlZiBVU0VfQUxQSEFNQVBcblx0dW5pZm9ybSBzYW1wbGVyMkQgYWxwaGFNYXA7XG4jZW5kaWYiLG1ldGFsbmVzc21hcF9mcmFnbWVudDoiZmxvYXQgbWV0YWxuZXNzRmFjdG9yID0gbWV0YWxuZXNzO1xuI2lmZGVmIFVTRV9NRVRBTE5FU1NNQVBcblx0dmVjNCB0ZXhlbE1ldGFsbmVzcyA9IHRleHR1cmUyRCggbWV0YWxuZXNzTWFwLCB2VXYgKTtcblx0bWV0YWxuZXNzRmFjdG9yICo9IHRleGVsTWV0YWxuZXNzLmI7XG4jZW5kaWYiLG1ldGFsbmVzc21hcF9wYXJzX2ZyYWdtZW50OiIjaWZkZWYgVVNFX01FVEFMTkVTU01BUFxuXHR1bmlmb3JtIHNhbXBsZXIyRCBtZXRhbG5lc3NNYXA7XG4jZW5kaWYiLG1vcnBobm9ybWFsX3ZlcnRleDoiI2lmZGVmIFVTRV9NT1JQSE5PUk1BTFNcblx0b2JqZWN0Tm9ybWFsICo9IG1vcnBoVGFyZ2V0QmFzZUluZmx1ZW5jZTtcblx0b2JqZWN0Tm9ybWFsICs9IG1vcnBoTm9ybWFsMCAqIG1vcnBoVGFyZ2V0SW5mbHVlbmNlc1sgMCBdO1xuXHRvYmplY3ROb3JtYWwgKz0gbW9ycGhOb3JtYWwxICogbW9ycGhUYXJnZXRJbmZsdWVuY2VzWyAxIF07XG5cdG9iamVjdE5vcm1hbCArPSBtb3JwaE5vcm1hbDIgKiBtb3JwaFRhcmdldEluZmx1ZW5jZXNbIDIgXTtcblx0b2JqZWN0Tm9ybWFsICs9IG1vcnBoTm9ybWFsMyAqIG1vcnBoVGFyZ2V0SW5mbHVlbmNlc1sgMyBdO1xuI2VuZGlmIixtb3JwaHRhcmdldF9wYXJzX3ZlcnRleDoiI2lmZGVmIFVTRV9NT1JQSFRBUkdFVFNcblx0dW5pZm9ybSBmbG9hdCBtb3JwaFRhcmdldEJhc2VJbmZsdWVuY2U7XG5cdCNpZm5kZWYgVVNFX01PUlBITk9STUFMU1xuXHRcdHVuaWZvcm0gZmxvYXQgbW9ycGhUYXJnZXRJbmZsdWVuY2VzWyA4IF07XG5cdCNlbHNlXG5cdFx0dW5pZm9ybSBmbG9hdCBtb3JwaFRhcmdldEluZmx1ZW5jZXNbIDQgXTtcblx0I2VuZGlmXG4jZW5kaWYiLG1vcnBodGFyZ2V0X3ZlcnRleDoiI2lmZGVmIFVTRV9NT1JQSFRBUkdFVFNcblx0dHJhbnNmb3JtZWQgKj0gbW9ycGhUYXJnZXRCYXNlSW5mbHVlbmNlO1xuXHR0cmFuc2Zvcm1lZCArPSBtb3JwaFRhcmdldDAgKiBtb3JwaFRhcmdldEluZmx1ZW5jZXNbIDAgXTtcblx0dHJhbnNmb3JtZWQgKz0gbW9ycGhUYXJnZXQxICogbW9ycGhUYXJnZXRJbmZsdWVuY2VzWyAxIF07XG5cdHRyYW5zZm9ybWVkICs9IG1vcnBoVGFyZ2V0MiAqIG1vcnBoVGFyZ2V0SW5mbHVlbmNlc1sgMiBdO1xuXHR0cmFuc2Zvcm1lZCArPSBtb3JwaFRhcmdldDMgKiBtb3JwaFRhcmdldEluZmx1ZW5jZXNbIDMgXTtcblx0I2lmbmRlZiBVU0VfTU9SUEhOT1JNQUxTXG5cdFx0dHJhbnNmb3JtZWQgKz0gbW9ycGhUYXJnZXQ0ICogbW9ycGhUYXJnZXRJbmZsdWVuY2VzWyA0IF07XG5cdFx0dHJhbnNmb3JtZWQgKz0gbW9ycGhUYXJnZXQ1ICogbW9ycGhUYXJnZXRJbmZsdWVuY2VzWyA1IF07XG5cdFx0dHJhbnNmb3JtZWQgKz0gbW9ycGhUYXJnZXQ2ICogbW9ycGhUYXJnZXRJbmZsdWVuY2VzWyA2IF07XG5cdFx0dHJhbnNmb3JtZWQgKz0gbW9ycGhUYXJnZXQ3ICogbW9ycGhUYXJnZXRJbmZsdWVuY2VzWyA3IF07XG5cdCNlbmRpZlxuI2VuZGlmIixub3JtYWxfZnJhZ21lbnRfYmVnaW46IiNpZmRlZiBGTEFUX1NIQURFRFxuXHR2ZWMzIGZkeCA9IHZlYzMoIGRGZHgoIHZWaWV3UG9zaXRpb24ueCApLCBkRmR4KCB2Vmlld1Bvc2l0aW9uLnkgKSwgZEZkeCggdlZpZXdQb3NpdGlvbi56ICkgKTtcblx0dmVjMyBmZHkgPSB2ZWMzKCBkRmR5KCB2Vmlld1Bvc2l0aW9uLnggKSwgZEZkeSggdlZpZXdQb3NpdGlvbi55ICksIGRGZHkoIHZWaWV3UG9zaXRpb24ueiApICk7XG5cdHZlYzMgbm9ybWFsID0gbm9ybWFsaXplKCBjcm9zcyggZmR4LCBmZHkgKSApO1xuI2Vsc2Vcblx0dmVjMyBub3JtYWwgPSBub3JtYWxpemUoIHZOb3JtYWwgKTtcblx0I2lmZGVmIERPVUJMRV9TSURFRFxuXHRcdG5vcm1hbCA9IG5vcm1hbCAqICggZmxvYXQoIGdsX0Zyb250RmFjaW5nICkgKiAyLjAgLSAxLjAgKTtcblx0I2VuZGlmXG5cdCNpZmRlZiBVU0VfVEFOR0VOVFxuXHRcdHZlYzMgdGFuZ2VudCA9IG5vcm1hbGl6ZSggdlRhbmdlbnQgKTtcblx0XHR2ZWMzIGJpdGFuZ2VudCA9IG5vcm1hbGl6ZSggdkJpdGFuZ2VudCApO1xuXHRcdCNpZmRlZiBET1VCTEVfU0lERURcblx0XHRcdHRhbmdlbnQgPSB0YW5nZW50ICogKCBmbG9hdCggZ2xfRnJvbnRGYWNpbmcgKSAqIDIuMCAtIDEuMCApO1xuXHRcdFx0Yml0YW5nZW50ID0gYml0YW5nZW50ICogKCBmbG9hdCggZ2xfRnJvbnRGYWNpbmcgKSAqIDIuMCAtIDEuMCApO1xuXHRcdCNlbmRpZlxuXHRcdCNpZiBkZWZpbmVkKCBUQU5HRU5UU1BBQ0VfTk9STUFMTUFQICkgfHwgZGVmaW5lZCggVVNFX0NMRUFSQ09BVF9OT1JNQUxNQVAgKVxuXHRcdFx0bWF0MyB2VEJOID0gbWF0MyggdGFuZ2VudCwgYml0YW5nZW50LCBub3JtYWwgKTtcblx0XHQjZW5kaWZcblx0I2VuZGlmXG4jZW5kaWZcbnZlYzMgZ2VvbWV0cnlOb3JtYWwgPSBub3JtYWw7Iixub3JtYWxfZnJhZ21lbnRfbWFwczoiI2lmZGVmIE9CSkVDVFNQQUNFX05PUk1BTE1BUFxuXHRub3JtYWwgPSB0ZXh0dXJlMkQoIG5vcm1hbE1hcCwgdlV2ICkueHl6ICogMi4wIC0gMS4wO1xuXHQjaWZkZWYgRkxJUF9TSURFRFxuXHRcdG5vcm1hbCA9IC0gbm9ybWFsO1xuXHQjZW5kaWZcblx0I2lmZGVmIERPVUJMRV9TSURFRFxuXHRcdG5vcm1hbCA9IG5vcm1hbCAqICggZmxvYXQoIGdsX0Zyb250RmFjaW5nICkgKiAyLjAgLSAxLjAgKTtcblx0I2VuZGlmXG5cdG5vcm1hbCA9IG5vcm1hbGl6ZSggbm9ybWFsTWF0cml4ICogbm9ybWFsICk7XG4jZWxpZiBkZWZpbmVkKCBUQU5HRU5UU1BBQ0VfTk9STUFMTUFQIClcblx0dmVjMyBtYXBOID0gdGV4dHVyZTJEKCBub3JtYWxNYXAsIHZVdiApLnh5eiAqIDIuMCAtIDEuMDtcblx0bWFwTi54eSAqPSBub3JtYWxTY2FsZTtcblx0I2lmZGVmIFVTRV9UQU5HRU5UXG5cdFx0bm9ybWFsID0gbm9ybWFsaXplKCB2VEJOICogbWFwTiApO1xuXHQjZWxzZVxuXHRcdG5vcm1hbCA9IHBlcnR1cmJOb3JtYWwyQXJiKCAtdlZpZXdQb3NpdGlvbiwgbm9ybWFsLCBtYXBOICk7XG5cdCNlbmRpZlxuI2VsaWYgZGVmaW5lZCggVVNFX0JVTVBNQVAgKVxuXHRub3JtYWwgPSBwZXJ0dXJiTm9ybWFsQXJiKCAtdlZpZXdQb3NpdGlvbiwgbm9ybWFsLCBkSGR4eV9md2QoKSApO1xuI2VuZGlmIixub3JtYWxtYXBfcGFyc19mcmFnbWVudDoiI2lmZGVmIFVTRV9OT1JNQUxNQVBcblx0dW5pZm9ybSBzYW1wbGVyMkQgbm9ybWFsTWFwO1xuXHR1bmlmb3JtIHZlYzIgbm9ybWFsU2NhbGU7XG4jZW5kaWZcbiNpZmRlZiBPQkpFQ1RTUEFDRV9OT1JNQUxNQVBcblx0dW5pZm9ybSBtYXQzIG5vcm1hbE1hdHJpeDtcbiNlbmRpZlxuI2lmICEgZGVmaW5lZCAoIFVTRV9UQU5HRU5UICkgJiYgKCBkZWZpbmVkICggVEFOR0VOVFNQQUNFX05PUk1BTE1BUCApIHx8IGRlZmluZWQgKCBVU0VfQ0xFQVJDT0FUX05PUk1BTE1BUCApIClcblx0dmVjMyBwZXJ0dXJiTm9ybWFsMkFyYiggdmVjMyBleWVfcG9zLCB2ZWMzIHN1cmZfbm9ybSwgdmVjMyBtYXBOICkge1xuXHRcdHZlYzMgcTAgPSB2ZWMzKCBkRmR4KCBleWVfcG9zLnggKSwgZEZkeCggZXllX3Bvcy55ICksIGRGZHgoIGV5ZV9wb3MueiApICk7XG5cdFx0dmVjMyBxMSA9IHZlYzMoIGRGZHkoIGV5ZV9wb3MueCApLCBkRmR5KCBleWVfcG9zLnkgKSwgZEZkeSggZXllX3Bvcy56ICkgKTtcblx0XHR2ZWMyIHN0MCA9IGRGZHgoIHZVdi5zdCApO1xuXHRcdHZlYzIgc3QxID0gZEZkeSggdlV2LnN0ICk7XG5cdFx0ZmxvYXQgc2NhbGUgPSBzaWduKCBzdDEudCAqIHN0MC5zIC0gc3QwLnQgKiBzdDEucyApO1xuXHRcdHZlYzMgUyA9IG5vcm1hbGl6ZSggKCBxMCAqIHN0MS50IC0gcTEgKiBzdDAudCApICogc2NhbGUgKTtcblx0XHR2ZWMzIFQgPSBub3JtYWxpemUoICggLSBxMCAqIHN0MS5zICsgcTEgKiBzdDAucyApICogc2NhbGUgKTtcblx0XHR2ZWMzIE4gPSBub3JtYWxpemUoIHN1cmZfbm9ybSApO1xuXHRcdG1hdDMgdHNuID0gbWF0MyggUywgVCwgTiApO1xuXHRcdG1hcE4ueHkgKj0gKCBmbG9hdCggZ2xfRnJvbnRGYWNpbmcgKSAqIDIuMCAtIDEuMCApO1xuXHRcdHJldHVybiBub3JtYWxpemUoIHRzbiAqIG1hcE4gKTtcblx0fVxuI2VuZGlmIixjbGVhcmNvYXRfbm9ybWFsX2ZyYWdtZW50X2JlZ2luOiIjaWZkZWYgQ0xFQVJDT0FUXG5cdHZlYzMgY2xlYXJjb2F0Tm9ybWFsID0gZ2VvbWV0cnlOb3JtYWw7XG4jZW5kaWYiLGNsZWFyY29hdF9ub3JtYWxfZnJhZ21lbnRfbWFwczoiI2lmZGVmIFVTRV9DTEVBUkNPQVRfTk9STUFMTUFQXG5cdHZlYzMgY2xlYXJjb2F0TWFwTiA9IHRleHR1cmUyRCggY2xlYXJjb2F0Tm9ybWFsTWFwLCB2VXYgKS54eXogKiAyLjAgLSAxLjA7XG5cdGNsZWFyY29hdE1hcE4ueHkgKj0gY2xlYXJjb2F0Tm9ybWFsU2NhbGU7XG5cdCNpZmRlZiBVU0VfVEFOR0VOVFxuXHRcdGNsZWFyY29hdE5vcm1hbCA9IG5vcm1hbGl6ZSggdlRCTiAqIGNsZWFyY29hdE1hcE4gKTtcblx0I2Vsc2Vcblx0XHRjbGVhcmNvYXROb3JtYWwgPSBwZXJ0dXJiTm9ybWFsMkFyYiggLSB2Vmlld1Bvc2l0aW9uLCBjbGVhcmNvYXROb3JtYWwsIGNsZWFyY29hdE1hcE4gKTtcblx0I2VuZGlmXG4jZW5kaWYiLGNsZWFyY29hdF9wYXJzX2ZyYWdtZW50OiIjaWZkZWYgVVNFX0NMRUFSQ09BVE1BUFxuXHR1bmlmb3JtIHNhbXBsZXIyRCBjbGVhcmNvYXRNYXA7XG4jZW5kaWZcbiNpZmRlZiBVU0VfQ0xFQVJDT0FUX1JPVUdITkVTU01BUFxuXHR1bmlmb3JtIHNhbXBsZXIyRCBjbGVhcmNvYXRSb3VnaG5lc3NNYXA7XG4jZW5kaWZcbiNpZmRlZiBVU0VfQ0xFQVJDT0FUX05PUk1BTE1BUFxuXHR1bmlmb3JtIHNhbXBsZXIyRCBjbGVhcmNvYXROb3JtYWxNYXA7XG5cdHVuaWZvcm0gdmVjMiBjbGVhcmNvYXROb3JtYWxTY2FsZTtcbiNlbmRpZiIscGFja2luZzoidmVjMyBwYWNrTm9ybWFsVG9SR0IoIGNvbnN0IGluIHZlYzMgbm9ybWFsICkge1xuXHRyZXR1cm4gbm9ybWFsaXplKCBub3JtYWwgKSAqIDAuNSArIDAuNTtcbn1cbnZlYzMgdW5wYWNrUkdCVG9Ob3JtYWwoIGNvbnN0IGluIHZlYzMgcmdiICkge1xuXHRyZXR1cm4gMi4wICogcmdiLnh5eiAtIDEuMDtcbn1cbmNvbnN0IGZsb2F0IFBhY2tVcHNjYWxlID0gMjU2LiAvIDI1NS47Y29uc3QgZmxvYXQgVW5wYWNrRG93bnNjYWxlID0gMjU1LiAvIDI1Ni47XG5jb25zdCB2ZWMzIFBhY2tGYWN0b3JzID0gdmVjMyggMjU2LiAqIDI1Ni4gKiAyNTYuLCAyNTYuICogMjU2LiwgMjU2LiApO1xuY29uc3QgdmVjNCBVbnBhY2tGYWN0b3JzID0gVW5wYWNrRG93bnNjYWxlIC8gdmVjNCggUGFja0ZhY3RvcnMsIDEuICk7XG5jb25zdCBmbG9hdCBTaGlmdFJpZ2h0OCA9IDEuIC8gMjU2LjtcbnZlYzQgcGFja0RlcHRoVG9SR0JBKCBjb25zdCBpbiBmbG9hdCB2ICkge1xuXHR2ZWM0IHIgPSB2ZWM0KCBmcmFjdCggdiAqIFBhY2tGYWN0b3JzICksIHYgKTtcblx0ci55encgLT0gci54eXogKiBTaGlmdFJpZ2h0ODtcdHJldHVybiByICogUGFja1Vwc2NhbGU7XG59XG5mbG9hdCB1bnBhY2tSR0JBVG9EZXB0aCggY29uc3QgaW4gdmVjNCB2ICkge1xuXHRyZXR1cm4gZG90KCB2LCBVbnBhY2tGYWN0b3JzICk7XG59XG52ZWM0IHBhY2sySGFsZlRvUkdCQSggdmVjMiB2ICkge1xuXHR2ZWM0IHIgPSB2ZWM0KCB2LngsIGZyYWN0KCB2LnggKiAyNTUuMCApLCB2LnksIGZyYWN0KCB2LnkgKiAyNTUuMCApKTtcblx0cmV0dXJuIHZlYzQoIHIueCAtIHIueSAvIDI1NS4wLCByLnksIHIueiAtIHIudyAvIDI1NS4wLCByLncpO1xufVxudmVjMiB1bnBhY2tSR0JBVG8ySGFsZiggdmVjNCB2ICkge1xuXHRyZXR1cm4gdmVjMiggdi54ICsgKCB2LnkgLyAyNTUuMCApLCB2LnogKyAoIHYudyAvIDI1NS4wICkgKTtcbn1cbmZsb2F0IHZpZXdaVG9PcnRob2dyYXBoaWNEZXB0aCggY29uc3QgaW4gZmxvYXQgdmlld1osIGNvbnN0IGluIGZsb2F0IG5lYXIsIGNvbnN0IGluIGZsb2F0IGZhciApIHtcblx0cmV0dXJuICggdmlld1ogKyBuZWFyICkgLyAoIG5lYXIgLSBmYXIgKTtcbn1cbmZsb2F0IG9ydGhvZ3JhcGhpY0RlcHRoVG9WaWV3WiggY29uc3QgaW4gZmxvYXQgbGluZWFyQ2xpcFosIGNvbnN0IGluIGZsb2F0IG5lYXIsIGNvbnN0IGluIGZsb2F0IGZhciApIHtcblx0cmV0dXJuIGxpbmVhckNsaXBaICogKCBuZWFyIC0gZmFyICkgLSBuZWFyO1xufVxuZmxvYXQgdmlld1pUb1BlcnNwZWN0aXZlRGVwdGgoIGNvbnN0IGluIGZsb2F0IHZpZXdaLCBjb25zdCBpbiBmbG9hdCBuZWFyLCBjb25zdCBpbiBmbG9hdCBmYXIgKSB7XG5cdHJldHVybiAoKCBuZWFyICsgdmlld1ogKSAqIGZhciApIC8gKCggZmFyIC0gbmVhciApICogdmlld1ogKTtcbn1cbmZsb2F0IHBlcnNwZWN0aXZlRGVwdGhUb1ZpZXdaKCBjb25zdCBpbiBmbG9hdCBpbnZDbGlwWiwgY29uc3QgaW4gZmxvYXQgbmVhciwgY29uc3QgaW4gZmxvYXQgZmFyICkge1xuXHRyZXR1cm4gKCBuZWFyICogZmFyICkgLyAoICggZmFyIC0gbmVhciApICogaW52Q2xpcFogLSBmYXIgKTtcbn0iLHByZW11bHRpcGxpZWRfYWxwaGFfZnJhZ21lbnQ6IiNpZmRlZiBQUkVNVUxUSVBMSUVEX0FMUEhBXG5cdGdsX0ZyYWdDb2xvci5yZ2IgKj0gZ2xfRnJhZ0NvbG9yLmE7XG4jZW5kaWYiLHByb2plY3RfdmVydGV4OiJ2ZWM0IG12UG9zaXRpb24gPSB2ZWM0KCB0cmFuc2Zvcm1lZCwgMS4wICk7XG4jaWZkZWYgVVNFX0lOU1RBTkNJTkdcblx0bXZQb3NpdGlvbiA9IGluc3RhbmNlTWF0cml4ICogbXZQb3NpdGlvbjtcbiNlbmRpZlxubXZQb3NpdGlvbiA9IG1vZGVsVmlld01hdHJpeCAqIG12UG9zaXRpb247XG5nbF9Qb3NpdGlvbiA9IHByb2plY3Rpb25NYXRyaXggKiBtdlBvc2l0aW9uOyIsZGl0aGVyaW5nX2ZyYWdtZW50OiIjaWZkZWYgRElUSEVSSU5HXG5cdGdsX0ZyYWdDb2xvci5yZ2IgPSBkaXRoZXJpbmcoIGdsX0ZyYWdDb2xvci5yZ2IgKTtcbiNlbmRpZiIsZGl0aGVyaW5nX3BhcnNfZnJhZ21lbnQ6IiNpZmRlZiBESVRIRVJJTkdcblx0dmVjMyBkaXRoZXJpbmcoIHZlYzMgY29sb3IgKSB7XG5cdFx0ZmxvYXQgZ3JpZF9wb3NpdGlvbiA9IHJhbmQoIGdsX0ZyYWdDb29yZC54eSApO1xuXHRcdHZlYzMgZGl0aGVyX3NoaWZ0X1JHQiA9IHZlYzMoIDAuMjUgLyAyNTUuMCwgLTAuMjUgLyAyNTUuMCwgMC4yNSAvIDI1NS4wICk7XG5cdFx0ZGl0aGVyX3NoaWZ0X1JHQiA9IG1peCggMi4wICogZGl0aGVyX3NoaWZ0X1JHQiwgLTIuMCAqIGRpdGhlcl9zaGlmdF9SR0IsIGdyaWRfcG9zaXRpb24gKTtcblx0XHRyZXR1cm4gY29sb3IgKyBkaXRoZXJfc2hpZnRfUkdCO1xuXHR9XG4jZW5kaWYiLHJvdWdobmVzc21hcF9mcmFnbWVudDoiZmxvYXQgcm91Z2huZXNzRmFjdG9yID0gcm91Z2huZXNzO1xuI2lmZGVmIFVTRV9ST1VHSE5FU1NNQVBcblx0dmVjNCB0ZXhlbFJvdWdobmVzcyA9IHRleHR1cmUyRCggcm91Z2huZXNzTWFwLCB2VXYgKTtcblx0cm91Z2huZXNzRmFjdG9yICo9IHRleGVsUm91Z2huZXNzLmc7XG4jZW5kaWYiLHJvdWdobmVzc21hcF9wYXJzX2ZyYWdtZW50OiIjaWZkZWYgVVNFX1JPVUdITkVTU01BUFxuXHR1bmlmb3JtIHNhbXBsZXIyRCByb3VnaG5lc3NNYXA7XG4jZW5kaWYiLHNoYWRvd21hcF9wYXJzX2ZyYWdtZW50OiIjaWZkZWYgVVNFX1NIQURPV01BUFxuXHQjaWYgTlVNX0RJUl9MSUdIVF9TSEFET1dTID4gMFxuXHRcdHVuaWZvcm0gc2FtcGxlcjJEIGRpcmVjdGlvbmFsU2hhZG93TWFwWyBOVU1fRElSX0xJR0hUX1NIQURPV1MgXTtcblx0XHR2YXJ5aW5nIHZlYzQgdkRpcmVjdGlvbmFsU2hhZG93Q29vcmRbIE5VTV9ESVJfTElHSFRfU0hBRE9XUyBdO1xuXHRcdHN0cnVjdCBEaXJlY3Rpb25hbExpZ2h0U2hhZG93IHtcblx0XHRcdGZsb2F0IHNoYWRvd0JpYXM7XG5cdFx0XHRmbG9hdCBzaGFkb3dOb3JtYWxCaWFzO1xuXHRcdFx0ZmxvYXQgc2hhZG93UmFkaXVzO1xuXHRcdFx0dmVjMiBzaGFkb3dNYXBTaXplO1xuXHRcdH07XG5cdFx0dW5pZm9ybSBEaXJlY3Rpb25hbExpZ2h0U2hhZG93IGRpcmVjdGlvbmFsTGlnaHRTaGFkb3dzWyBOVU1fRElSX0xJR0hUX1NIQURPV1MgXTtcblx0I2VuZGlmXG5cdCNpZiBOVU1fU1BPVF9MSUdIVF9TSEFET1dTID4gMFxuXHRcdHVuaWZvcm0gc2FtcGxlcjJEIHNwb3RTaGFkb3dNYXBbIE5VTV9TUE9UX0xJR0hUX1NIQURPV1MgXTtcblx0XHR2YXJ5aW5nIHZlYzQgdlNwb3RTaGFkb3dDb29yZFsgTlVNX1NQT1RfTElHSFRfU0hBRE9XUyBdO1xuXHRcdHN0cnVjdCBTcG90TGlnaHRTaGFkb3cge1xuXHRcdFx0ZmxvYXQgc2hhZG93Qmlhcztcblx0XHRcdGZsb2F0IHNoYWRvd05vcm1hbEJpYXM7XG5cdFx0XHRmbG9hdCBzaGFkb3dSYWRpdXM7XG5cdFx0XHR2ZWMyIHNoYWRvd01hcFNpemU7XG5cdFx0fTtcblx0XHR1bmlmb3JtIFNwb3RMaWdodFNoYWRvdyBzcG90TGlnaHRTaGFkb3dzWyBOVU1fU1BPVF9MSUdIVF9TSEFET1dTIF07XG5cdCNlbmRpZlxuXHQjaWYgTlVNX1BPSU5UX0xJR0hUX1NIQURPV1MgPiAwXG5cdFx0dW5pZm9ybSBzYW1wbGVyMkQgcG9pbnRTaGFkb3dNYXBbIE5VTV9QT0lOVF9MSUdIVF9TSEFET1dTIF07XG5cdFx0dmFyeWluZyB2ZWM0IHZQb2ludFNoYWRvd0Nvb3JkWyBOVU1fUE9JTlRfTElHSFRfU0hBRE9XUyBdO1xuXHRcdHN0cnVjdCBQb2ludExpZ2h0U2hhZG93IHtcblx0XHRcdGZsb2F0IHNoYWRvd0JpYXM7XG5cdFx0XHRmbG9hdCBzaGFkb3dOb3JtYWxCaWFzO1xuXHRcdFx0ZmxvYXQgc2hhZG93UmFkaXVzO1xuXHRcdFx0dmVjMiBzaGFkb3dNYXBTaXplO1xuXHRcdFx0ZmxvYXQgc2hhZG93Q2FtZXJhTmVhcjtcblx0XHRcdGZsb2F0IHNoYWRvd0NhbWVyYUZhcjtcblx0XHR9O1xuXHRcdHVuaWZvcm0gUG9pbnRMaWdodFNoYWRvdyBwb2ludExpZ2h0U2hhZG93c1sgTlVNX1BPSU5UX0xJR0hUX1NIQURPV1MgXTtcblx0I2VuZGlmXG5cdGZsb2F0IHRleHR1cmUyRENvbXBhcmUoIHNhbXBsZXIyRCBkZXB0aHMsIHZlYzIgdXYsIGZsb2F0IGNvbXBhcmUgKSB7XG5cdFx0cmV0dXJuIHN0ZXAoIGNvbXBhcmUsIHVucGFja1JHQkFUb0RlcHRoKCB0ZXh0dXJlMkQoIGRlcHRocywgdXYgKSApICk7XG5cdH1cblx0dmVjMiB0ZXh0dXJlMkREaXN0cmlidXRpb24oIHNhbXBsZXIyRCBzaGFkb3csIHZlYzIgdXYgKSB7XG5cdFx0cmV0dXJuIHVucGFja1JHQkFUbzJIYWxmKCB0ZXh0dXJlMkQoIHNoYWRvdywgdXYgKSApO1xuXHR9XG5cdGZsb2F0IFZTTVNoYWRvdyAoc2FtcGxlcjJEIHNoYWRvdywgdmVjMiB1diwgZmxvYXQgY29tcGFyZSApe1xuXHRcdGZsb2F0IG9jY2x1c2lvbiA9IDEuMDtcblx0XHR2ZWMyIGRpc3RyaWJ1dGlvbiA9IHRleHR1cmUyRERpc3RyaWJ1dGlvbiggc2hhZG93LCB1diApO1xuXHRcdGZsb2F0IGhhcmRfc2hhZG93ID0gc3RlcCggY29tcGFyZSAsIGRpc3RyaWJ1dGlvbi54ICk7XG5cdFx0aWYgKGhhcmRfc2hhZG93ICE9IDEuMCApIHtcblx0XHRcdGZsb2F0IGRpc3RhbmNlID0gY29tcGFyZSAtIGRpc3RyaWJ1dGlvbi54IDtcblx0XHRcdGZsb2F0IHZhcmlhbmNlID0gbWF4KCAwLjAwMDAwLCBkaXN0cmlidXRpb24ueSAqIGRpc3RyaWJ1dGlvbi55ICk7XG5cdFx0XHRmbG9hdCBzb2Z0bmVzc19wcm9iYWJpbGl0eSA9IHZhcmlhbmNlIC8gKHZhcmlhbmNlICsgZGlzdGFuY2UgKiBkaXN0YW5jZSApO1x0XHRcdHNvZnRuZXNzX3Byb2JhYmlsaXR5ID0gY2xhbXAoICggc29mdG5lc3NfcHJvYmFiaWxpdHkgLSAwLjMgKSAvICggMC45NSAtIDAuMyApLCAwLjAsIDEuMCApO1x0XHRcdG9jY2x1c2lvbiA9IGNsYW1wKCBtYXgoIGhhcmRfc2hhZG93LCBzb2Z0bmVzc19wcm9iYWJpbGl0eSApLCAwLjAsIDEuMCApO1xuXHRcdH1cblx0XHRyZXR1cm4gb2NjbHVzaW9uO1xuXHR9XG5cdGZsb2F0IGdldFNoYWRvdyggc2FtcGxlcjJEIHNoYWRvd01hcCwgdmVjMiBzaGFkb3dNYXBTaXplLCBmbG9hdCBzaGFkb3dCaWFzLCBmbG9hdCBzaGFkb3dSYWRpdXMsIHZlYzQgc2hhZG93Q29vcmQgKSB7XG5cdFx0ZmxvYXQgc2hhZG93ID0gMS4wO1xuXHRcdHNoYWRvd0Nvb3JkLnh5eiAvPSBzaGFkb3dDb29yZC53O1xuXHRcdHNoYWRvd0Nvb3JkLnogKz0gc2hhZG93Qmlhcztcblx0XHRidmVjNCBpbkZydXN0dW1WZWMgPSBidmVjNCAoIHNoYWRvd0Nvb3JkLnggPj0gMC4wLCBzaGFkb3dDb29yZC54IDw9IDEuMCwgc2hhZG93Q29vcmQueSA+PSAwLjAsIHNoYWRvd0Nvb3JkLnkgPD0gMS4wICk7XG5cdFx0Ym9vbCBpbkZydXN0dW0gPSBhbGwoIGluRnJ1c3R1bVZlYyApO1xuXHRcdGJ2ZWMyIGZydXN0dW1UZXN0VmVjID0gYnZlYzIoIGluRnJ1c3R1bSwgc2hhZG93Q29vcmQueiA8PSAxLjAgKTtcblx0XHRib29sIGZydXN0dW1UZXN0ID0gYWxsKCBmcnVzdHVtVGVzdFZlYyApO1xuXHRcdGlmICggZnJ1c3R1bVRlc3QgKSB7XG5cdFx0I2lmIGRlZmluZWQoIFNIQURPV01BUF9UWVBFX1BDRiApXG5cdFx0XHR2ZWMyIHRleGVsU2l6ZSA9IHZlYzIoIDEuMCApIC8gc2hhZG93TWFwU2l6ZTtcblx0XHRcdGZsb2F0IGR4MCA9IC0gdGV4ZWxTaXplLnggKiBzaGFkb3dSYWRpdXM7XG5cdFx0XHRmbG9hdCBkeTAgPSAtIHRleGVsU2l6ZS55ICogc2hhZG93UmFkaXVzO1xuXHRcdFx0ZmxvYXQgZHgxID0gKyB0ZXhlbFNpemUueCAqIHNoYWRvd1JhZGl1cztcblx0XHRcdGZsb2F0IGR5MSA9ICsgdGV4ZWxTaXplLnkgKiBzaGFkb3dSYWRpdXM7XG5cdFx0XHRmbG9hdCBkeDIgPSBkeDAgLyAyLjA7XG5cdFx0XHRmbG9hdCBkeTIgPSBkeTAgLyAyLjA7XG5cdFx0XHRmbG9hdCBkeDMgPSBkeDEgLyAyLjA7XG5cdFx0XHRmbG9hdCBkeTMgPSBkeTEgLyAyLjA7XG5cdFx0XHRzaGFkb3cgPSAoXG5cdFx0XHRcdHRleHR1cmUyRENvbXBhcmUoIHNoYWRvd01hcCwgc2hhZG93Q29vcmQueHkgKyB2ZWMyKCBkeDAsIGR5MCApLCBzaGFkb3dDb29yZC56ICkgK1xuXHRcdFx0XHR0ZXh0dXJlMkRDb21wYXJlKCBzaGFkb3dNYXAsIHNoYWRvd0Nvb3JkLnh5ICsgdmVjMiggMC4wLCBkeTAgKSwgc2hhZG93Q29vcmQueiApICtcblx0XHRcdFx0dGV4dHVyZTJEQ29tcGFyZSggc2hhZG93TWFwLCBzaGFkb3dDb29yZC54eSArIHZlYzIoIGR4MSwgZHkwICksIHNoYWRvd0Nvb3JkLnogKSArXG5cdFx0XHRcdHRleHR1cmUyRENvbXBhcmUoIHNoYWRvd01hcCwgc2hhZG93Q29vcmQueHkgKyB2ZWMyKCBkeDIsIGR5MiApLCBzaGFkb3dDb29yZC56ICkgK1xuXHRcdFx0XHR0ZXh0dXJlMkRDb21wYXJlKCBzaGFkb3dNYXAsIHNoYWRvd0Nvb3JkLnh5ICsgdmVjMiggMC4wLCBkeTIgKSwgc2hhZG93Q29vcmQueiApICtcblx0XHRcdFx0dGV4dHVyZTJEQ29tcGFyZSggc2hhZG93TWFwLCBzaGFkb3dDb29yZC54eSArIHZlYzIoIGR4MywgZHkyICksIHNoYWRvd0Nvb3JkLnogKSArXG5cdFx0XHRcdHRleHR1cmUyRENvbXBhcmUoIHNoYWRvd01hcCwgc2hhZG93Q29vcmQueHkgKyB2ZWMyKCBkeDAsIDAuMCApLCBzaGFkb3dDb29yZC56ICkgK1xuXHRcdFx0XHR0ZXh0dXJlMkRDb21wYXJlKCBzaGFkb3dNYXAsIHNoYWRvd0Nvb3JkLnh5ICsgdmVjMiggZHgyLCAwLjAgKSwgc2hhZG93Q29vcmQueiApICtcblx0XHRcdFx0dGV4dHVyZTJEQ29tcGFyZSggc2hhZG93TWFwLCBzaGFkb3dDb29yZC54eSwgc2hhZG93Q29vcmQueiApICtcblx0XHRcdFx0dGV4dHVyZTJEQ29tcGFyZSggc2hhZG93TWFwLCBzaGFkb3dDb29yZC54eSArIHZlYzIoIGR4MywgMC4wICksIHNoYWRvd0Nvb3JkLnogKSArXG5cdFx0XHRcdHRleHR1cmUyRENvbXBhcmUoIHNoYWRvd01hcCwgc2hhZG93Q29vcmQueHkgKyB2ZWMyKCBkeDEsIDAuMCApLCBzaGFkb3dDb29yZC56ICkgK1xuXHRcdFx0XHR0ZXh0dXJlMkRDb21wYXJlKCBzaGFkb3dNYXAsIHNoYWRvd0Nvb3JkLnh5ICsgdmVjMiggZHgyLCBkeTMgKSwgc2hhZG93Q29vcmQueiApICtcblx0XHRcdFx0dGV4dHVyZTJEQ29tcGFyZSggc2hhZG93TWFwLCBzaGFkb3dDb29yZC54eSArIHZlYzIoIDAuMCwgZHkzICksIHNoYWRvd0Nvb3JkLnogKSArXG5cdFx0XHRcdHRleHR1cmUyRENvbXBhcmUoIHNoYWRvd01hcCwgc2hhZG93Q29vcmQueHkgKyB2ZWMyKCBkeDMsIGR5MyApLCBzaGFkb3dDb29yZC56ICkgK1xuXHRcdFx0XHR0ZXh0dXJlMkRDb21wYXJlKCBzaGFkb3dNYXAsIHNoYWRvd0Nvb3JkLnh5ICsgdmVjMiggZHgwLCBkeTEgKSwgc2hhZG93Q29vcmQueiApICtcblx0XHRcdFx0dGV4dHVyZTJEQ29tcGFyZSggc2hhZG93TWFwLCBzaGFkb3dDb29yZC54eSArIHZlYzIoIDAuMCwgZHkxICksIHNoYWRvd0Nvb3JkLnogKSArXG5cdFx0XHRcdHRleHR1cmUyRENvbXBhcmUoIHNoYWRvd01hcCwgc2hhZG93Q29vcmQueHkgKyB2ZWMyKCBkeDEsIGR5MSApLCBzaGFkb3dDb29yZC56IClcblx0XHRcdCkgKiAoIDEuMCAvIDE3LjAgKTtcblx0XHQjZWxpZiBkZWZpbmVkKCBTSEFET1dNQVBfVFlQRV9QQ0ZfU09GVCApXG5cdFx0XHR2ZWMyIHRleGVsU2l6ZSA9IHZlYzIoIDEuMCApIC8gc2hhZG93TWFwU2l6ZTtcblx0XHRcdGZsb2F0IGR4ID0gdGV4ZWxTaXplLng7XG5cdFx0XHRmbG9hdCBkeSA9IHRleGVsU2l6ZS55O1xuXHRcdFx0dmVjMiB1diA9IHNoYWRvd0Nvb3JkLnh5O1xuXHRcdFx0dmVjMiBmID0gZnJhY3QoIHV2ICogc2hhZG93TWFwU2l6ZSArIDAuNSApO1xuXHRcdFx0dXYgLT0gZiAqIHRleGVsU2l6ZTtcblx0XHRcdHNoYWRvdyA9IChcblx0XHRcdFx0dGV4dHVyZTJEQ29tcGFyZSggc2hhZG93TWFwLCB1diwgc2hhZG93Q29vcmQueiApICtcblx0XHRcdFx0dGV4dHVyZTJEQ29tcGFyZSggc2hhZG93TWFwLCB1diArIHZlYzIoIGR4LCAwLjAgKSwgc2hhZG93Q29vcmQueiApICtcblx0XHRcdFx0dGV4dHVyZTJEQ29tcGFyZSggc2hhZG93TWFwLCB1diArIHZlYzIoIDAuMCwgZHkgKSwgc2hhZG93Q29vcmQueiApICtcblx0XHRcdFx0dGV4dHVyZTJEQ29tcGFyZSggc2hhZG93TWFwLCB1diArIHRleGVsU2l6ZSwgc2hhZG93Q29vcmQueiApICtcblx0XHRcdFx0bWl4KCB0ZXh0dXJlMkRDb21wYXJlKCBzaGFkb3dNYXAsIHV2ICsgdmVjMiggLWR4LCAwLjAgKSwgc2hhZG93Q29vcmQueiApLCBcblx0XHRcdFx0XHQgdGV4dHVyZTJEQ29tcGFyZSggc2hhZG93TWFwLCB1diArIHZlYzIoIDIuMCAqIGR4LCAwLjAgKSwgc2hhZG93Q29vcmQueiApLFxuXHRcdFx0XHRcdCBmLnggKSArXG5cdFx0XHRcdG1peCggdGV4dHVyZTJEQ29tcGFyZSggc2hhZG93TWFwLCB1diArIHZlYzIoIC1keCwgZHkgKSwgc2hhZG93Q29vcmQueiApLCBcblx0XHRcdFx0XHQgdGV4dHVyZTJEQ29tcGFyZSggc2hhZG93TWFwLCB1diArIHZlYzIoIDIuMCAqIGR4LCBkeSApLCBzaGFkb3dDb29yZC56ICksXG5cdFx0XHRcdFx0IGYueCApICtcblx0XHRcdFx0bWl4KCB0ZXh0dXJlMkRDb21wYXJlKCBzaGFkb3dNYXAsIHV2ICsgdmVjMiggMC4wLCAtZHkgKSwgc2hhZG93Q29vcmQueiApLCBcblx0XHRcdFx0XHQgdGV4dHVyZTJEQ29tcGFyZSggc2hhZG93TWFwLCB1diArIHZlYzIoIDAuMCwgMi4wICogZHkgKSwgc2hhZG93Q29vcmQueiApLFxuXHRcdFx0XHRcdCBmLnkgKSArXG5cdFx0XHRcdG1peCggdGV4dHVyZTJEQ29tcGFyZSggc2hhZG93TWFwLCB1diArIHZlYzIoIGR4LCAtZHkgKSwgc2hhZG93Q29vcmQueiApLCBcblx0XHRcdFx0XHQgdGV4dHVyZTJEQ29tcGFyZSggc2hhZG93TWFwLCB1diArIHZlYzIoIGR4LCAyLjAgKiBkeSApLCBzaGFkb3dDb29yZC56ICksXG5cdFx0XHRcdFx0IGYueSApICtcblx0XHRcdFx0bWl4KCBtaXgoIHRleHR1cmUyRENvbXBhcmUoIHNoYWRvd01hcCwgdXYgKyB2ZWMyKCAtZHgsIC1keSApLCBzaGFkb3dDb29yZC56ICksIFxuXHRcdFx0XHRcdFx0ICB0ZXh0dXJlMkRDb21wYXJlKCBzaGFkb3dNYXAsIHV2ICsgdmVjMiggMi4wICogZHgsIC1keSApLCBzaGFkb3dDb29yZC56ICksXG5cdFx0XHRcdFx0XHQgIGYueCApLFxuXHRcdFx0XHRcdCBtaXgoIHRleHR1cmUyRENvbXBhcmUoIHNoYWRvd01hcCwgdXYgKyB2ZWMyKCAtZHgsIDIuMCAqIGR5ICksIHNoYWRvd0Nvb3JkLnogKSwgXG5cdFx0XHRcdFx0XHQgIHRleHR1cmUyRENvbXBhcmUoIHNoYWRvd01hcCwgdXYgKyB2ZWMyKCAyLjAgKiBkeCwgMi4wICogZHkgKSwgc2hhZG93Q29vcmQueiApLFxuXHRcdFx0XHRcdFx0ICBmLnggKSxcblx0XHRcdFx0XHQgZi55IClcblx0XHRcdCkgKiAoIDEuMCAvIDkuMCApO1xuXHRcdCNlbGlmIGRlZmluZWQoIFNIQURPV01BUF9UWVBFX1ZTTSApXG5cdFx0XHRzaGFkb3cgPSBWU01TaGFkb3coIHNoYWRvd01hcCwgc2hhZG93Q29vcmQueHksIHNoYWRvd0Nvb3JkLnogKTtcblx0XHQjZWxzZVxuXHRcdFx0c2hhZG93ID0gdGV4dHVyZTJEQ29tcGFyZSggc2hhZG93TWFwLCBzaGFkb3dDb29yZC54eSwgc2hhZG93Q29vcmQueiApO1xuXHRcdCNlbmRpZlxuXHRcdH1cblx0XHRyZXR1cm4gc2hhZG93O1xuXHR9XG5cdHZlYzIgY3ViZVRvVVYoIHZlYzMgdiwgZmxvYXQgdGV4ZWxTaXplWSApIHtcblx0XHR2ZWMzIGFic1YgPSBhYnMoIHYgKTtcblx0XHRmbG9hdCBzY2FsZVRvQ3ViZSA9IDEuMCAvIG1heCggYWJzVi54LCBtYXgoIGFic1YueSwgYWJzVi56ICkgKTtcblx0XHRhYnNWICo9IHNjYWxlVG9DdWJlO1xuXHRcdHYgKj0gc2NhbGVUb0N1YmUgKiAoIDEuMCAtIDIuMCAqIHRleGVsU2l6ZVkgKTtcblx0XHR2ZWMyIHBsYW5hciA9IHYueHk7XG5cdFx0ZmxvYXQgYWxtb3N0QVRleGVsID0gMS41ICogdGV4ZWxTaXplWTtcblx0XHRmbG9hdCBhbG1vc3RPbmUgPSAxLjAgLSBhbG1vc3RBVGV4ZWw7XG5cdFx0aWYgKCBhYnNWLnogPj0gYWxtb3N0T25lICkge1xuXHRcdFx0aWYgKCB2LnogPiAwLjAgKVxuXHRcdFx0XHRwbGFuYXIueCA9IDQuMCAtIHYueDtcblx0XHR9IGVsc2UgaWYgKCBhYnNWLnggPj0gYWxtb3N0T25lICkge1xuXHRcdFx0ZmxvYXQgc2lnblggPSBzaWduKCB2LnggKTtcblx0XHRcdHBsYW5hci54ID0gdi56ICogc2lnblggKyAyLjAgKiBzaWduWDtcblx0XHR9IGVsc2UgaWYgKCBhYnNWLnkgPj0gYWxtb3N0T25lICkge1xuXHRcdFx0ZmxvYXQgc2lnblkgPSBzaWduKCB2LnkgKTtcblx0XHRcdHBsYW5hci54ID0gdi54ICsgMi4wICogc2lnblkgKyAyLjA7XG5cdFx0XHRwbGFuYXIueSA9IHYueiAqIHNpZ25ZIC0gMi4wO1xuXHRcdH1cblx0XHRyZXR1cm4gdmVjMiggMC4xMjUsIDAuMjUgKSAqIHBsYW5hciArIHZlYzIoIDAuMzc1LCAwLjc1ICk7XG5cdH1cblx0ZmxvYXQgZ2V0UG9pbnRTaGFkb3coIHNhbXBsZXIyRCBzaGFkb3dNYXAsIHZlYzIgc2hhZG93TWFwU2l6ZSwgZmxvYXQgc2hhZG93QmlhcywgZmxvYXQgc2hhZG93UmFkaXVzLCB2ZWM0IHNoYWRvd0Nvb3JkLCBmbG9hdCBzaGFkb3dDYW1lcmFOZWFyLCBmbG9hdCBzaGFkb3dDYW1lcmFGYXIgKSB7XG5cdFx0dmVjMiB0ZXhlbFNpemUgPSB2ZWMyKCAxLjAgKSAvICggc2hhZG93TWFwU2l6ZSAqIHZlYzIoIDQuMCwgMi4wICkgKTtcblx0XHR2ZWMzIGxpZ2h0VG9Qb3NpdGlvbiA9IHNoYWRvd0Nvb3JkLnh5ejtcblx0XHRmbG9hdCBkcCA9ICggbGVuZ3RoKCBsaWdodFRvUG9zaXRpb24gKSAtIHNoYWRvd0NhbWVyYU5lYXIgKSAvICggc2hhZG93Q2FtZXJhRmFyIC0gc2hhZG93Q2FtZXJhTmVhciApO1x0XHRkcCArPSBzaGFkb3dCaWFzO1xuXHRcdHZlYzMgYmQzRCA9IG5vcm1hbGl6ZSggbGlnaHRUb1Bvc2l0aW9uICk7XG5cdFx0I2lmIGRlZmluZWQoIFNIQURPV01BUF9UWVBFX1BDRiApIHx8IGRlZmluZWQoIFNIQURPV01BUF9UWVBFX1BDRl9TT0ZUICkgfHwgZGVmaW5lZCggU0hBRE9XTUFQX1RZUEVfVlNNIClcblx0XHRcdHZlYzIgb2Zmc2V0ID0gdmVjMiggLSAxLCAxICkgKiBzaGFkb3dSYWRpdXMgKiB0ZXhlbFNpemUueTtcblx0XHRcdHJldHVybiAoXG5cdFx0XHRcdHRleHR1cmUyRENvbXBhcmUoIHNoYWRvd01hcCwgY3ViZVRvVVYoIGJkM0QgKyBvZmZzZXQueHl5LCB0ZXhlbFNpemUueSApLCBkcCApICtcblx0XHRcdFx0dGV4dHVyZTJEQ29tcGFyZSggc2hhZG93TWFwLCBjdWJlVG9VViggYmQzRCArIG9mZnNldC55eXksIHRleGVsU2l6ZS55ICksIGRwICkgK1xuXHRcdFx0XHR0ZXh0dXJlMkRDb21wYXJlKCBzaGFkb3dNYXAsIGN1YmVUb1VWKCBiZDNEICsgb2Zmc2V0Lnh5eCwgdGV4ZWxTaXplLnkgKSwgZHAgKSArXG5cdFx0XHRcdHRleHR1cmUyRENvbXBhcmUoIHNoYWRvd01hcCwgY3ViZVRvVVYoIGJkM0QgKyBvZmZzZXQueXl4LCB0ZXhlbFNpemUueSApLCBkcCApICtcblx0XHRcdFx0dGV4dHVyZTJEQ29tcGFyZSggc2hhZG93TWFwLCBjdWJlVG9VViggYmQzRCwgdGV4ZWxTaXplLnkgKSwgZHAgKSArXG5cdFx0XHRcdHRleHR1cmUyRENvbXBhcmUoIHNoYWRvd01hcCwgY3ViZVRvVVYoIGJkM0QgKyBvZmZzZXQueHh5LCB0ZXhlbFNpemUueSApLCBkcCApICtcblx0XHRcdFx0dGV4dHVyZTJEQ29tcGFyZSggc2hhZG93TWFwLCBjdWJlVG9VViggYmQzRCArIG9mZnNldC55eHksIHRleGVsU2l6ZS55ICksIGRwICkgK1xuXHRcdFx0XHR0ZXh0dXJlMkRDb21wYXJlKCBzaGFkb3dNYXAsIGN1YmVUb1VWKCBiZDNEICsgb2Zmc2V0Lnh4eCwgdGV4ZWxTaXplLnkgKSwgZHAgKSArXG5cdFx0XHRcdHRleHR1cmUyRENvbXBhcmUoIHNoYWRvd01hcCwgY3ViZVRvVVYoIGJkM0QgKyBvZmZzZXQueXh4LCB0ZXhlbFNpemUueSApLCBkcCApXG5cdFx0XHQpICogKCAxLjAgLyA5LjAgKTtcblx0XHQjZWxzZVxuXHRcdFx0cmV0dXJuIHRleHR1cmUyRENvbXBhcmUoIHNoYWRvd01hcCwgY3ViZVRvVVYoIGJkM0QsIHRleGVsU2l6ZS55ICksIGRwICk7XG5cdFx0I2VuZGlmXG5cdH1cbiNlbmRpZiIsc2hhZG93bWFwX3BhcnNfdmVydGV4OiIjaWZkZWYgVVNFX1NIQURPV01BUFxuXHQjaWYgTlVNX0RJUl9MSUdIVF9TSEFET1dTID4gMFxuXHRcdHVuaWZvcm0gbWF0NCBkaXJlY3Rpb25hbFNoYWRvd01hdHJpeFsgTlVNX0RJUl9MSUdIVF9TSEFET1dTIF07XG5cdFx0dmFyeWluZyB2ZWM0IHZEaXJlY3Rpb25hbFNoYWRvd0Nvb3JkWyBOVU1fRElSX0xJR0hUX1NIQURPV1MgXTtcblx0XHRzdHJ1Y3QgRGlyZWN0aW9uYWxMaWdodFNoYWRvdyB7XG5cdFx0XHRmbG9hdCBzaGFkb3dCaWFzO1xuXHRcdFx0ZmxvYXQgc2hhZG93Tm9ybWFsQmlhcztcblx0XHRcdGZsb2F0IHNoYWRvd1JhZGl1cztcblx0XHRcdHZlYzIgc2hhZG93TWFwU2l6ZTtcblx0XHR9O1xuXHRcdHVuaWZvcm0gRGlyZWN0aW9uYWxMaWdodFNoYWRvdyBkaXJlY3Rpb25hbExpZ2h0U2hhZG93c1sgTlVNX0RJUl9MSUdIVF9TSEFET1dTIF07XG5cdCNlbmRpZlxuXHQjaWYgTlVNX1NQT1RfTElHSFRfU0hBRE9XUyA+IDBcblx0XHR1bmlmb3JtIG1hdDQgc3BvdFNoYWRvd01hdHJpeFsgTlVNX1NQT1RfTElHSFRfU0hBRE9XUyBdO1xuXHRcdHZhcnlpbmcgdmVjNCB2U3BvdFNoYWRvd0Nvb3JkWyBOVU1fU1BPVF9MSUdIVF9TSEFET1dTIF07XG5cdFx0c3RydWN0IFNwb3RMaWdodFNoYWRvdyB7XG5cdFx0XHRmbG9hdCBzaGFkb3dCaWFzO1xuXHRcdFx0ZmxvYXQgc2hhZG93Tm9ybWFsQmlhcztcblx0XHRcdGZsb2F0IHNoYWRvd1JhZGl1cztcblx0XHRcdHZlYzIgc2hhZG93TWFwU2l6ZTtcblx0XHR9O1xuXHRcdHVuaWZvcm0gU3BvdExpZ2h0U2hhZG93IHNwb3RMaWdodFNoYWRvd3NbIE5VTV9TUE9UX0xJR0hUX1NIQURPV1MgXTtcblx0I2VuZGlmXG5cdCNpZiBOVU1fUE9JTlRfTElHSFRfU0hBRE9XUyA+IDBcblx0XHR1bmlmb3JtIG1hdDQgcG9pbnRTaGFkb3dNYXRyaXhbIE5VTV9QT0lOVF9MSUdIVF9TSEFET1dTIF07XG5cdFx0dmFyeWluZyB2ZWM0IHZQb2ludFNoYWRvd0Nvb3JkWyBOVU1fUE9JTlRfTElHSFRfU0hBRE9XUyBdO1xuXHRcdHN0cnVjdCBQb2ludExpZ2h0U2hhZG93IHtcblx0XHRcdGZsb2F0IHNoYWRvd0JpYXM7XG5cdFx0XHRmbG9hdCBzaGFkb3dOb3JtYWxCaWFzO1xuXHRcdFx0ZmxvYXQgc2hhZG93UmFkaXVzO1xuXHRcdFx0dmVjMiBzaGFkb3dNYXBTaXplO1xuXHRcdFx0ZmxvYXQgc2hhZG93Q2FtZXJhTmVhcjtcblx0XHRcdGZsb2F0IHNoYWRvd0NhbWVyYUZhcjtcblx0XHR9O1xuXHRcdHVuaWZvcm0gUG9pbnRMaWdodFNoYWRvdyBwb2ludExpZ2h0U2hhZG93c1sgTlVNX1BPSU5UX0xJR0hUX1NIQURPV1MgXTtcblx0I2VuZGlmXG4jZW5kaWYiLHNoYWRvd21hcF92ZXJ0ZXg6IiNpZmRlZiBVU0VfU0hBRE9XTUFQXG5cdCNpZiBOVU1fRElSX0xJR0hUX1NIQURPV1MgPiAwIHx8IE5VTV9TUE9UX0xJR0hUX1NIQURPV1MgPiAwIHx8IE5VTV9QT0lOVF9MSUdIVF9TSEFET1dTID4gMFxuXHRcdHZlYzMgc2hhZG93V29ybGROb3JtYWwgPSBpbnZlcnNlVHJhbnNmb3JtRGlyZWN0aW9uKCB0cmFuc2Zvcm1lZE5vcm1hbCwgdmlld01hdHJpeCApO1xuXHRcdHZlYzQgc2hhZG93V29ybGRQb3NpdGlvbjtcblx0I2VuZGlmXG5cdCNpZiBOVU1fRElSX0xJR0hUX1NIQURPV1MgPiAwXG5cdCNwcmFnbWEgdW5yb2xsX2xvb3Bfc3RhcnRcblx0Zm9yICggaW50IGkgPSAwOyBpIDwgTlVNX0RJUl9MSUdIVF9TSEFET1dTOyBpICsrICkge1xuXHRcdHNoYWRvd1dvcmxkUG9zaXRpb24gPSB3b3JsZFBvc2l0aW9uICsgdmVjNCggc2hhZG93V29ybGROb3JtYWwgKiBkaXJlY3Rpb25hbExpZ2h0U2hhZG93c1sgaSBdLnNoYWRvd05vcm1hbEJpYXMsIDAgKTtcblx0XHR2RGlyZWN0aW9uYWxTaGFkb3dDb29yZFsgaSBdID0gZGlyZWN0aW9uYWxTaGFkb3dNYXRyaXhbIGkgXSAqIHNoYWRvd1dvcmxkUG9zaXRpb247XG5cdH1cblx0I3ByYWdtYSB1bnJvbGxfbG9vcF9lbmRcblx0I2VuZGlmXG5cdCNpZiBOVU1fU1BPVF9MSUdIVF9TSEFET1dTID4gMFxuXHQjcHJhZ21hIHVucm9sbF9sb29wX3N0YXJ0XG5cdGZvciAoIGludCBpID0gMDsgaSA8IE5VTV9TUE9UX0xJR0hUX1NIQURPV1M7IGkgKysgKSB7XG5cdFx0c2hhZG93V29ybGRQb3NpdGlvbiA9IHdvcmxkUG9zaXRpb24gKyB2ZWM0KCBzaGFkb3dXb3JsZE5vcm1hbCAqIHNwb3RMaWdodFNoYWRvd3NbIGkgXS5zaGFkb3dOb3JtYWxCaWFzLCAwICk7XG5cdFx0dlNwb3RTaGFkb3dDb29yZFsgaSBdID0gc3BvdFNoYWRvd01hdHJpeFsgaSBdICogc2hhZG93V29ybGRQb3NpdGlvbjtcblx0fVxuXHQjcHJhZ21hIHVucm9sbF9sb29wX2VuZFxuXHQjZW5kaWZcblx0I2lmIE5VTV9QT0lOVF9MSUdIVF9TSEFET1dTID4gMFxuXHQjcHJhZ21hIHVucm9sbF9sb29wX3N0YXJ0XG5cdGZvciAoIGludCBpID0gMDsgaSA8IE5VTV9QT0lOVF9MSUdIVF9TSEFET1dTOyBpICsrICkge1xuXHRcdHNoYWRvd1dvcmxkUG9zaXRpb24gPSB3b3JsZFBvc2l0aW9uICsgdmVjNCggc2hhZG93V29ybGROb3JtYWwgKiBwb2ludExpZ2h0U2hhZG93c1sgaSBdLnNoYWRvd05vcm1hbEJpYXMsIDAgKTtcblx0XHR2UG9pbnRTaGFkb3dDb29yZFsgaSBdID0gcG9pbnRTaGFkb3dNYXRyaXhbIGkgXSAqIHNoYWRvd1dvcmxkUG9zaXRpb247XG5cdH1cblx0I3ByYWdtYSB1bnJvbGxfbG9vcF9lbmRcblx0I2VuZGlmXG4jZW5kaWYiLHNoYWRvd21hc2tfcGFyc19mcmFnbWVudDoiZmxvYXQgZ2V0U2hhZG93TWFzaygpIHtcblx0ZmxvYXQgc2hhZG93ID0gMS4wO1xuXHQjaWZkZWYgVVNFX1NIQURPV01BUFxuXHQjaWYgTlVNX0RJUl9MSUdIVF9TSEFET1dTID4gMFxuXHREaXJlY3Rpb25hbExpZ2h0U2hhZG93IGRpcmVjdGlvbmFsTGlnaHQ7XG5cdCNwcmFnbWEgdW5yb2xsX2xvb3Bfc3RhcnRcblx0Zm9yICggaW50IGkgPSAwOyBpIDwgTlVNX0RJUl9MSUdIVF9TSEFET1dTOyBpICsrICkge1xuXHRcdGRpcmVjdGlvbmFsTGlnaHQgPSBkaXJlY3Rpb25hbExpZ2h0U2hhZG93c1sgaSBdO1xuXHRcdHNoYWRvdyAqPSByZWNlaXZlU2hhZG93ID8gZ2V0U2hhZG93KCBkaXJlY3Rpb25hbFNoYWRvd01hcFsgaSBdLCBkaXJlY3Rpb25hbExpZ2h0LnNoYWRvd01hcFNpemUsIGRpcmVjdGlvbmFsTGlnaHQuc2hhZG93QmlhcywgZGlyZWN0aW9uYWxMaWdodC5zaGFkb3dSYWRpdXMsIHZEaXJlY3Rpb25hbFNoYWRvd0Nvb3JkWyBpIF0gKSA6IDEuMDtcblx0fVxuXHQjcHJhZ21hIHVucm9sbF9sb29wX2VuZFxuXHQjZW5kaWZcblx0I2lmIE5VTV9TUE9UX0xJR0hUX1NIQURPV1MgPiAwXG5cdFNwb3RMaWdodFNoYWRvdyBzcG90TGlnaHQ7XG5cdCNwcmFnbWEgdW5yb2xsX2xvb3Bfc3RhcnRcblx0Zm9yICggaW50IGkgPSAwOyBpIDwgTlVNX1NQT1RfTElHSFRfU0hBRE9XUzsgaSArKyApIHtcblx0XHRzcG90TGlnaHQgPSBzcG90TGlnaHRTaGFkb3dzWyBpIF07XG5cdFx0c2hhZG93ICo9IHJlY2VpdmVTaGFkb3cgPyBnZXRTaGFkb3coIHNwb3RTaGFkb3dNYXBbIGkgXSwgc3BvdExpZ2h0LnNoYWRvd01hcFNpemUsIHNwb3RMaWdodC5zaGFkb3dCaWFzLCBzcG90TGlnaHQuc2hhZG93UmFkaXVzLCB2U3BvdFNoYWRvd0Nvb3JkWyBpIF0gKSA6IDEuMDtcblx0fVxuXHQjcHJhZ21hIHVucm9sbF9sb29wX2VuZFxuXHQjZW5kaWZcblx0I2lmIE5VTV9QT0lOVF9MSUdIVF9TSEFET1dTID4gMFxuXHRQb2ludExpZ2h0U2hhZG93IHBvaW50TGlnaHQ7XG5cdCNwcmFnbWEgdW5yb2xsX2xvb3Bfc3RhcnRcblx0Zm9yICggaW50IGkgPSAwOyBpIDwgTlVNX1BPSU5UX0xJR0hUX1NIQURPV1M7IGkgKysgKSB7XG5cdFx0cG9pbnRMaWdodCA9IHBvaW50TGlnaHRTaGFkb3dzWyBpIF07XG5cdFx0c2hhZG93ICo9IHJlY2VpdmVTaGFkb3cgPyBnZXRQb2ludFNoYWRvdyggcG9pbnRTaGFkb3dNYXBbIGkgXSwgcG9pbnRMaWdodC5zaGFkb3dNYXBTaXplLCBwb2ludExpZ2h0LnNoYWRvd0JpYXMsIHBvaW50TGlnaHQuc2hhZG93UmFkaXVzLCB2UG9pbnRTaGFkb3dDb29yZFsgaSBdLCBwb2ludExpZ2h0LnNoYWRvd0NhbWVyYU5lYXIsIHBvaW50TGlnaHQuc2hhZG93Q2FtZXJhRmFyICkgOiAxLjA7XG5cdH1cblx0I3ByYWdtYSB1bnJvbGxfbG9vcF9lbmRcblx0I2VuZGlmXG5cdCNlbmRpZlxuXHRyZXR1cm4gc2hhZG93O1xufSIsc2tpbmJhc2VfdmVydGV4OiIjaWZkZWYgVVNFX1NLSU5OSU5HXG5cdG1hdDQgYm9uZU1hdFggPSBnZXRCb25lTWF0cml4KCBza2luSW5kZXgueCApO1xuXHRtYXQ0IGJvbmVNYXRZID0gZ2V0Qm9uZU1hdHJpeCggc2tpbkluZGV4LnkgKTtcblx0bWF0NCBib25lTWF0WiA9IGdldEJvbmVNYXRyaXgoIHNraW5JbmRleC56ICk7XG5cdG1hdDQgYm9uZU1hdFcgPSBnZXRCb25lTWF0cml4KCBza2luSW5kZXgudyApO1xuI2VuZGlmIixza2lubmluZ19wYXJzX3ZlcnRleDoiI2lmZGVmIFVTRV9TS0lOTklOR1xuXHR1bmlmb3JtIG1hdDQgYmluZE1hdHJpeDtcblx0dW5pZm9ybSBtYXQ0IGJpbmRNYXRyaXhJbnZlcnNlO1xuXHQjaWZkZWYgQk9ORV9URVhUVVJFXG5cdFx0dW5pZm9ybSBoaWdocCBzYW1wbGVyMkQgYm9uZVRleHR1cmU7XG5cdFx0dW5pZm9ybSBpbnQgYm9uZVRleHR1cmVTaXplO1xuXHRcdG1hdDQgZ2V0Qm9uZU1hdHJpeCggY29uc3QgaW4gZmxvYXQgaSApIHtcblx0XHRcdGZsb2F0IGogPSBpICogNC4wO1xuXHRcdFx0ZmxvYXQgeCA9IG1vZCggaiwgZmxvYXQoIGJvbmVUZXh0dXJlU2l6ZSApICk7XG5cdFx0XHRmbG9hdCB5ID0gZmxvb3IoIGogLyBmbG9hdCggYm9uZVRleHR1cmVTaXplICkgKTtcblx0XHRcdGZsb2F0IGR4ID0gMS4wIC8gZmxvYXQoIGJvbmVUZXh0dXJlU2l6ZSApO1xuXHRcdFx0ZmxvYXQgZHkgPSAxLjAgLyBmbG9hdCggYm9uZVRleHR1cmVTaXplICk7XG5cdFx0XHR5ID0gZHkgKiAoIHkgKyAwLjUgKTtcblx0XHRcdHZlYzQgdjEgPSB0ZXh0dXJlMkQoIGJvbmVUZXh0dXJlLCB2ZWMyKCBkeCAqICggeCArIDAuNSApLCB5ICkgKTtcblx0XHRcdHZlYzQgdjIgPSB0ZXh0dXJlMkQoIGJvbmVUZXh0dXJlLCB2ZWMyKCBkeCAqICggeCArIDEuNSApLCB5ICkgKTtcblx0XHRcdHZlYzQgdjMgPSB0ZXh0dXJlMkQoIGJvbmVUZXh0dXJlLCB2ZWMyKCBkeCAqICggeCArIDIuNSApLCB5ICkgKTtcblx0XHRcdHZlYzQgdjQgPSB0ZXh0dXJlMkQoIGJvbmVUZXh0dXJlLCB2ZWMyKCBkeCAqICggeCArIDMuNSApLCB5ICkgKTtcblx0XHRcdG1hdDQgYm9uZSA9IG1hdDQoIHYxLCB2MiwgdjMsIHY0ICk7XG5cdFx0XHRyZXR1cm4gYm9uZTtcblx0XHR9XG5cdCNlbHNlXG5cdFx0dW5pZm9ybSBtYXQ0IGJvbmVNYXRyaWNlc1sgTUFYX0JPTkVTIF07XG5cdFx0bWF0NCBnZXRCb25lTWF0cml4KCBjb25zdCBpbiBmbG9hdCBpICkge1xuXHRcdFx0bWF0NCBib25lID0gYm9uZU1hdHJpY2VzWyBpbnQoaSkgXTtcblx0XHRcdHJldHVybiBib25lO1xuXHRcdH1cblx0I2VuZGlmXG4jZW5kaWYiLHNraW5uaW5nX3ZlcnRleDoiI2lmZGVmIFVTRV9TS0lOTklOR1xuXHR2ZWM0IHNraW5WZXJ0ZXggPSBiaW5kTWF0cml4ICogdmVjNCggdHJhbnNmb3JtZWQsIDEuMCApO1xuXHR2ZWM0IHNraW5uZWQgPSB2ZWM0KCAwLjAgKTtcblx0c2tpbm5lZCArPSBib25lTWF0WCAqIHNraW5WZXJ0ZXggKiBza2luV2VpZ2h0Lng7XG5cdHNraW5uZWQgKz0gYm9uZU1hdFkgKiBza2luVmVydGV4ICogc2tpbldlaWdodC55O1xuXHRza2lubmVkICs9IGJvbmVNYXRaICogc2tpblZlcnRleCAqIHNraW5XZWlnaHQuejtcblx0c2tpbm5lZCArPSBib25lTWF0VyAqIHNraW5WZXJ0ZXggKiBza2luV2VpZ2h0Lnc7XG5cdHRyYW5zZm9ybWVkID0gKCBiaW5kTWF0cml4SW52ZXJzZSAqIHNraW5uZWQgKS54eXo7XG4jZW5kaWYiLHNraW5ub3JtYWxfdmVydGV4OiIjaWZkZWYgVVNFX1NLSU5OSU5HXG5cdG1hdDQgc2tpbk1hdHJpeCA9IG1hdDQoIDAuMCApO1xuXHRza2luTWF0cml4ICs9IHNraW5XZWlnaHQueCAqIGJvbmVNYXRYO1xuXHRza2luTWF0cml4ICs9IHNraW5XZWlnaHQueSAqIGJvbmVNYXRZO1xuXHRza2luTWF0cml4ICs9IHNraW5XZWlnaHQueiAqIGJvbmVNYXRaO1xuXHRza2luTWF0cml4ICs9IHNraW5XZWlnaHQudyAqIGJvbmVNYXRXO1xuXHRza2luTWF0cml4ID0gYmluZE1hdHJpeEludmVyc2UgKiBza2luTWF0cml4ICogYmluZE1hdHJpeDtcblx0b2JqZWN0Tm9ybWFsID0gdmVjNCggc2tpbk1hdHJpeCAqIHZlYzQoIG9iamVjdE5vcm1hbCwgMC4wICkgKS54eXo7XG5cdCNpZmRlZiBVU0VfVEFOR0VOVFxuXHRcdG9iamVjdFRhbmdlbnQgPSB2ZWM0KCBza2luTWF0cml4ICogdmVjNCggb2JqZWN0VGFuZ2VudCwgMC4wICkgKS54eXo7XG5cdCNlbmRpZlxuI2VuZGlmIixzcGVjdWxhcm1hcF9mcmFnbWVudDoiZmxvYXQgc3BlY3VsYXJTdHJlbmd0aDtcbiNpZmRlZiBVU0VfU1BFQ1VMQVJNQVBcblx0dmVjNCB0ZXhlbFNwZWN1bGFyID0gdGV4dHVyZTJEKCBzcGVjdWxhck1hcCwgdlV2ICk7XG5cdHNwZWN1bGFyU3RyZW5ndGggPSB0ZXhlbFNwZWN1bGFyLnI7XG4jZWxzZVxuXHRzcGVjdWxhclN0cmVuZ3RoID0gMS4wO1xuI2VuZGlmIixzcGVjdWxhcm1hcF9wYXJzX2ZyYWdtZW50OiIjaWZkZWYgVVNFX1NQRUNVTEFSTUFQXG5cdHVuaWZvcm0gc2FtcGxlcjJEIHNwZWN1bGFyTWFwO1xuI2VuZGlmIix0b25lbWFwcGluZ19mcmFnbWVudDoiI2lmIGRlZmluZWQoIFRPTkVfTUFQUElORyApXG5cdGdsX0ZyYWdDb2xvci5yZ2IgPSB0b25lTWFwcGluZyggZ2xfRnJhZ0NvbG9yLnJnYiApO1xuI2VuZGlmIix0b25lbWFwcGluZ19wYXJzX2ZyYWdtZW50OiIjaWZuZGVmIHNhdHVyYXRlXG4jZGVmaW5lIHNhdHVyYXRlKGEpIGNsYW1wKCBhLCAwLjAsIDEuMCApXG4jZW5kaWZcbnVuaWZvcm0gZmxvYXQgdG9uZU1hcHBpbmdFeHBvc3VyZTtcbnZlYzMgTGluZWFyVG9uZU1hcHBpbmcoIHZlYzMgY29sb3IgKSB7XG5cdHJldHVybiB0b25lTWFwcGluZ0V4cG9zdXJlICogY29sb3I7XG59XG52ZWMzIFJlaW5oYXJkVG9uZU1hcHBpbmcoIHZlYzMgY29sb3IgKSB7XG5cdGNvbG9yICo9IHRvbmVNYXBwaW5nRXhwb3N1cmU7XG5cdHJldHVybiBzYXR1cmF0ZSggY29sb3IgLyAoIHZlYzMoIDEuMCApICsgY29sb3IgKSApO1xufVxudmVjMyBPcHRpbWl6ZWRDaW5lb25Ub25lTWFwcGluZyggdmVjMyBjb2xvciApIHtcblx0Y29sb3IgKj0gdG9uZU1hcHBpbmdFeHBvc3VyZTtcblx0Y29sb3IgPSBtYXgoIHZlYzMoIDAuMCApLCBjb2xvciAtIDAuMDA0ICk7XG5cdHJldHVybiBwb3coICggY29sb3IgKiAoIDYuMiAqIGNvbG9yICsgMC41ICkgKSAvICggY29sb3IgKiAoIDYuMiAqIGNvbG9yICsgMS43ICkgKyAwLjA2ICksIHZlYzMoIDIuMiApICk7XG59XG52ZWMzIFJSVEFuZE9EVEZpdCggdmVjMyB2ICkge1xuXHR2ZWMzIGEgPSB2ICogKCB2ICsgMC4wMjQ1Nzg2ICkgLSAwLjAwMDA5MDUzNztcblx0dmVjMyBiID0gdiAqICggMC45ODM3MjkgKiB2ICsgMC40MzI5NTEwICkgKyAwLjIzODA4MTtcblx0cmV0dXJuIGEgLyBiO1xufVxudmVjMyBBQ0VTRmlsbWljVG9uZU1hcHBpbmcoIHZlYzMgY29sb3IgKSB7XG5cdGNvbnN0IG1hdDMgQUNFU0lucHV0TWF0ID0gbWF0Myhcblx0XHR2ZWMzKCAwLjU5NzE5LCAwLjA3NjAwLCAwLjAyODQwICksXHRcdHZlYzMoIDAuMzU0NTgsIDAuOTA4MzQsIDAuMTMzODMgKSxcblx0XHR2ZWMzKCAwLjA0ODIzLCAwLjAxNTY2LCAwLjgzNzc3IClcblx0KTtcblx0Y29uc3QgbWF0MyBBQ0VTT3V0cHV0TWF0ID0gbWF0Myhcblx0XHR2ZWMzKCAgMS42MDQ3NSwgLTAuMTAyMDgsIC0wLjAwMzI3ICksXHRcdHZlYzMoIC0wLjUzMTA4LCAgMS4xMDgxMywgLTAuMDcyNzYgKSxcblx0XHR2ZWMzKCAtMC4wNzM2NywgLTAuMDA2MDUsICAxLjA3NjAyIClcblx0KTtcblx0Y29sb3IgKj0gdG9uZU1hcHBpbmdFeHBvc3VyZSAvIDAuNjtcblx0Y29sb3IgPSBBQ0VTSW5wdXRNYXQgKiBjb2xvcjtcblx0Y29sb3IgPSBSUlRBbmRPRFRGaXQoIGNvbG9yICk7XG5cdGNvbG9yID0gQUNFU091dHB1dE1hdCAqIGNvbG9yO1xuXHRyZXR1cm4gc2F0dXJhdGUoIGNvbG9yICk7XG59XG52ZWMzIEN1c3RvbVRvbmVNYXBwaW5nKCB2ZWMzIGNvbG9yICkgeyByZXR1cm4gY29sb3I7IH0iLHRyYW5zbWlzc2lvbm1hcF9mcmFnbWVudDoiI2lmZGVmIFVTRV9UUkFOU01JU1NJT05NQVBcblx0dG90YWxUcmFuc21pc3Npb24gKj0gdGV4dHVyZTJEKCB0cmFuc21pc3Npb25NYXAsIHZVdiApLnI7XG4jZW5kaWYiLHRyYW5zbWlzc2lvbm1hcF9wYXJzX2ZyYWdtZW50OiIjaWZkZWYgVVNFX1RSQU5TTUlTU0lPTk1BUFxuXHR1bmlmb3JtIHNhbXBsZXIyRCB0cmFuc21pc3Npb25NYXA7XG4jZW5kaWYiLHV2X3BhcnNfZnJhZ21lbnQ6IiNpZiAoIGRlZmluZWQoIFVTRV9VViApICYmICEgZGVmaW5lZCggVVZTX1ZFUlRFWF9PTkxZICkgKVxuXHR2YXJ5aW5nIHZlYzIgdlV2O1xuI2VuZGlmIix1dl9wYXJzX3ZlcnRleDoiI2lmZGVmIFVTRV9VVlxuXHQjaWZkZWYgVVZTX1ZFUlRFWF9PTkxZXG5cdFx0dmVjMiB2VXY7XG5cdCNlbHNlXG5cdFx0dmFyeWluZyB2ZWMyIHZVdjtcblx0I2VuZGlmXG5cdHVuaWZvcm0gbWF0MyB1dlRyYW5zZm9ybTtcbiNlbmRpZiIsdXZfdmVydGV4OiIjaWZkZWYgVVNFX1VWXG5cdHZVdiA9ICggdXZUcmFuc2Zvcm0gKiB2ZWMzKCB1diwgMSApICkueHk7XG4jZW5kaWYiLHV2Ml9wYXJzX2ZyYWdtZW50OiIjaWYgZGVmaW5lZCggVVNFX0xJR0hUTUFQICkgfHwgZGVmaW5lZCggVVNFX0FPTUFQIClcblx0dmFyeWluZyB2ZWMyIHZVdjI7XG4jZW5kaWYiLHV2Ml9wYXJzX3ZlcnRleDoiI2lmIGRlZmluZWQoIFVTRV9MSUdIVE1BUCApIHx8IGRlZmluZWQoIFVTRV9BT01BUCApXG5cdGF0dHJpYnV0ZSB2ZWMyIHV2Mjtcblx0dmFyeWluZyB2ZWMyIHZVdjI7XG5cdHVuaWZvcm0gbWF0MyB1djJUcmFuc2Zvcm07XG4jZW5kaWYiLHV2Ml92ZXJ0ZXg6IiNpZiBkZWZpbmVkKCBVU0VfTElHSFRNQVAgKSB8fCBkZWZpbmVkKCBVU0VfQU9NQVAgKVxuXHR2VXYyID0gKCB1djJUcmFuc2Zvcm0gKiB2ZWMzKCB1djIsIDEgKSApLnh5O1xuI2VuZGlmIix3b3JsZHBvc192ZXJ0ZXg6IiNpZiBkZWZpbmVkKCBVU0VfRU5WTUFQICkgfHwgZGVmaW5lZCggRElTVEFOQ0UgKSB8fCBkZWZpbmVkICggVVNFX1NIQURPV01BUCApXG5cdHZlYzQgd29ybGRQb3NpdGlvbiA9IHZlYzQoIHRyYW5zZm9ybWVkLCAxLjAgKTtcblx0I2lmZGVmIFVTRV9JTlNUQU5DSU5HXG5cdFx0d29ybGRQb3NpdGlvbiA9IGluc3RhbmNlTWF0cml4ICogd29ybGRQb3NpdGlvbjtcblx0I2VuZGlmXG5cdHdvcmxkUG9zaXRpb24gPSBtb2RlbE1hdHJpeCAqIHdvcmxkUG9zaXRpb247XG4jZW5kaWYiLGJhY2tncm91bmRfZnJhZzoidW5pZm9ybSBzYW1wbGVyMkQgdDJEO1xudmFyeWluZyB2ZWMyIHZVdjtcbnZvaWQgbWFpbigpIHtcblx0dmVjNCB0ZXhDb2xvciA9IHRleHR1cmUyRCggdDJELCB2VXYgKTtcblx0Z2xfRnJhZ0NvbG9yID0gbWFwVGV4ZWxUb0xpbmVhciggdGV4Q29sb3IgKTtcblx0I2luY2x1ZGUgPHRvbmVtYXBwaW5nX2ZyYWdtZW50PlxuXHQjaW5jbHVkZSA8ZW5jb2RpbmdzX2ZyYWdtZW50PlxufSIsYmFja2dyb3VuZF92ZXJ0OiJ2YXJ5aW5nIHZlYzIgdlV2O1xudW5pZm9ybSBtYXQzIHV2VHJhbnNmb3JtO1xudm9pZCBtYWluKCkge1xuXHR2VXYgPSAoIHV2VHJhbnNmb3JtICogdmVjMyggdXYsIDEgKSApLnh5O1xuXHRnbF9Qb3NpdGlvbiA9IHZlYzQoIHBvc2l0aW9uLnh5LCAxLjAsIDEuMCApO1xufSIsY3ViZV9mcmFnOiIjaW5jbHVkZSA8ZW52bWFwX2NvbW1vbl9wYXJzX2ZyYWdtZW50PlxudW5pZm9ybSBmbG9hdCBvcGFjaXR5O1xudmFyeWluZyB2ZWMzIHZXb3JsZERpcmVjdGlvbjtcbiNpbmNsdWRlIDxjdWJlX3V2X3JlZmxlY3Rpb25fZnJhZ21lbnQ+XG52b2lkIG1haW4oKSB7XG5cdHZlYzMgdlJlZmxlY3QgPSB2V29ybGREaXJlY3Rpb247XG5cdCNpbmNsdWRlIDxlbnZtYXBfZnJhZ21lbnQ+XG5cdGdsX0ZyYWdDb2xvciA9IGVudkNvbG9yO1xuXHRnbF9GcmFnQ29sb3IuYSAqPSBvcGFjaXR5O1xuXHQjaW5jbHVkZSA8dG9uZW1hcHBpbmdfZnJhZ21lbnQ+XG5cdCNpbmNsdWRlIDxlbmNvZGluZ3NfZnJhZ21lbnQ+XG59IixjdWJlX3ZlcnQ6InZhcnlpbmcgdmVjMyB2V29ybGREaXJlY3Rpb247XG4jaW5jbHVkZSA8Y29tbW9uPlxudm9pZCBtYWluKCkge1xuXHR2V29ybGREaXJlY3Rpb24gPSB0cmFuc2Zvcm1EaXJlY3Rpb24oIHBvc2l0aW9uLCBtb2RlbE1hdHJpeCApO1xuXHQjaW5jbHVkZSA8YmVnaW5fdmVydGV4PlxuXHQjaW5jbHVkZSA8cHJvamVjdF92ZXJ0ZXg+XG5cdGdsX1Bvc2l0aW9uLnogPSBnbF9Qb3NpdGlvbi53O1xufSIsZGVwdGhfZnJhZzoiI2lmIERFUFRIX1BBQ0tJTkcgPT0gMzIwMFxuXHR1bmlmb3JtIGZsb2F0IG9wYWNpdHk7XG4jZW5kaWZcbiNpbmNsdWRlIDxjb21tb24+XG4jaW5jbHVkZSA8cGFja2luZz5cbiNpbmNsdWRlIDx1dl9wYXJzX2ZyYWdtZW50PlxuI2luY2x1ZGUgPG1hcF9wYXJzX2ZyYWdtZW50PlxuI2luY2x1ZGUgPGFscGhhbWFwX3BhcnNfZnJhZ21lbnQ+XG4jaW5jbHVkZSA8bG9nZGVwdGhidWZfcGFyc19mcmFnbWVudD5cbiNpbmNsdWRlIDxjbGlwcGluZ19wbGFuZXNfcGFyc19mcmFnbWVudD5cbnZhcnlpbmcgdmVjMiB2SGlnaFByZWNpc2lvblpXO1xudm9pZCBtYWluKCkge1xuXHQjaW5jbHVkZSA8Y2xpcHBpbmdfcGxhbmVzX2ZyYWdtZW50PlxuXHR2ZWM0IGRpZmZ1c2VDb2xvciA9IHZlYzQoIDEuMCApO1xuXHQjaWYgREVQVEhfUEFDS0lORyA9PSAzMjAwXG5cdFx0ZGlmZnVzZUNvbG9yLmEgPSBvcGFjaXR5O1xuXHQjZW5kaWZcblx0I2luY2x1ZGUgPG1hcF9mcmFnbWVudD5cblx0I2luY2x1ZGUgPGFscGhhbWFwX2ZyYWdtZW50PlxuXHQjaW5jbHVkZSA8YWxwaGF0ZXN0X2ZyYWdtZW50PlxuXHQjaW5jbHVkZSA8bG9nZGVwdGhidWZfZnJhZ21lbnQ+XG5cdGZsb2F0IGZyYWdDb29yZFogPSAwLjUgKiB2SGlnaFByZWNpc2lvblpXWzBdIC8gdkhpZ2hQcmVjaXNpb25aV1sxXSArIDAuNTtcblx0I2lmIERFUFRIX1BBQ0tJTkcgPT0gMzIwMFxuXHRcdGdsX0ZyYWdDb2xvciA9IHZlYzQoIHZlYzMoIDEuMCAtIGZyYWdDb29yZFogKSwgb3BhY2l0eSApO1xuXHQjZWxpZiBERVBUSF9QQUNLSU5HID09IDMyMDFcblx0XHRnbF9GcmFnQ29sb3IgPSBwYWNrRGVwdGhUb1JHQkEoIGZyYWdDb29yZFogKTtcblx0I2VuZGlmXG59IixkZXB0aF92ZXJ0OiIjaW5jbHVkZSA8Y29tbW9uPlxuI2luY2x1ZGUgPHV2X3BhcnNfdmVydGV4PlxuI2luY2x1ZGUgPGRpc3BsYWNlbWVudG1hcF9wYXJzX3ZlcnRleD5cbiNpbmNsdWRlIDxtb3JwaHRhcmdldF9wYXJzX3ZlcnRleD5cbiNpbmNsdWRlIDxza2lubmluZ19wYXJzX3ZlcnRleD5cbiNpbmNsdWRlIDxsb2dkZXB0aGJ1Zl9wYXJzX3ZlcnRleD5cbiNpbmNsdWRlIDxjbGlwcGluZ19wbGFuZXNfcGFyc192ZXJ0ZXg+XG52YXJ5aW5nIHZlYzIgdkhpZ2hQcmVjaXNpb25aVztcbnZvaWQgbWFpbigpIHtcblx0I2luY2x1ZGUgPHV2X3ZlcnRleD5cblx0I2luY2x1ZGUgPHNraW5iYXNlX3ZlcnRleD5cblx0I2lmZGVmIFVTRV9ESVNQTEFDRU1FTlRNQVBcblx0XHQjaW5jbHVkZSA8YmVnaW5ub3JtYWxfdmVydGV4PlxuXHRcdCNpbmNsdWRlIDxtb3JwaG5vcm1hbF92ZXJ0ZXg+XG5cdFx0I2luY2x1ZGUgPHNraW5ub3JtYWxfdmVydGV4PlxuXHQjZW5kaWZcblx0I2luY2x1ZGUgPGJlZ2luX3ZlcnRleD5cblx0I2luY2x1ZGUgPG1vcnBodGFyZ2V0X3ZlcnRleD5cblx0I2luY2x1ZGUgPHNraW5uaW5nX3ZlcnRleD5cblx0I2luY2x1ZGUgPGRpc3BsYWNlbWVudG1hcF92ZXJ0ZXg+XG5cdCNpbmNsdWRlIDxwcm9qZWN0X3ZlcnRleD5cblx0I2luY2x1ZGUgPGxvZ2RlcHRoYnVmX3ZlcnRleD5cblx0I2luY2x1ZGUgPGNsaXBwaW5nX3BsYW5lc192ZXJ0ZXg+XG5cdHZIaWdoUHJlY2lzaW9uWlcgPSBnbF9Qb3NpdGlvbi56dztcbn0iLGRpc3RhbmNlUkdCQV9mcmFnOiIjZGVmaW5lIERJU1RBTkNFXG51bmlmb3JtIHZlYzMgcmVmZXJlbmNlUG9zaXRpb247XG51bmlmb3JtIGZsb2F0IG5lYXJEaXN0YW5jZTtcbnVuaWZvcm0gZmxvYXQgZmFyRGlzdGFuY2U7XG52YXJ5aW5nIHZlYzMgdldvcmxkUG9zaXRpb247XG4jaW5jbHVkZSA8Y29tbW9uPlxuI2luY2x1ZGUgPHBhY2tpbmc+XG4jaW5jbHVkZSA8dXZfcGFyc19mcmFnbWVudD5cbiNpbmNsdWRlIDxtYXBfcGFyc19mcmFnbWVudD5cbiNpbmNsdWRlIDxhbHBoYW1hcF9wYXJzX2ZyYWdtZW50PlxuI2luY2x1ZGUgPGNsaXBwaW5nX3BsYW5lc19wYXJzX2ZyYWdtZW50Plxudm9pZCBtYWluICgpIHtcblx0I2luY2x1ZGUgPGNsaXBwaW5nX3BsYW5lc19mcmFnbWVudD5cblx0dmVjNCBkaWZmdXNlQ29sb3IgPSB2ZWM0KCAxLjAgKTtcblx0I2luY2x1ZGUgPG1hcF9mcmFnbWVudD5cblx0I2luY2x1ZGUgPGFscGhhbWFwX2ZyYWdtZW50PlxuXHQjaW5jbHVkZSA8YWxwaGF0ZXN0X2ZyYWdtZW50PlxuXHRmbG9hdCBkaXN0ID0gbGVuZ3RoKCB2V29ybGRQb3NpdGlvbiAtIHJlZmVyZW5jZVBvc2l0aW9uICk7XG5cdGRpc3QgPSAoIGRpc3QgLSBuZWFyRGlzdGFuY2UgKSAvICggZmFyRGlzdGFuY2UgLSBuZWFyRGlzdGFuY2UgKTtcblx0ZGlzdCA9IHNhdHVyYXRlKCBkaXN0ICk7XG5cdGdsX0ZyYWdDb2xvciA9IHBhY2tEZXB0aFRvUkdCQSggZGlzdCApO1xufSIsZGlzdGFuY2VSR0JBX3ZlcnQ6IiNkZWZpbmUgRElTVEFOQ0VcbnZhcnlpbmcgdmVjMyB2V29ybGRQb3NpdGlvbjtcbiNpbmNsdWRlIDxjb21tb24+XG4jaW5jbHVkZSA8dXZfcGFyc192ZXJ0ZXg+XG4jaW5jbHVkZSA8ZGlzcGxhY2VtZW50bWFwX3BhcnNfdmVydGV4PlxuI2luY2x1ZGUgPG1vcnBodGFyZ2V0X3BhcnNfdmVydGV4PlxuI2luY2x1ZGUgPHNraW5uaW5nX3BhcnNfdmVydGV4PlxuI2luY2x1ZGUgPGNsaXBwaW5nX3BsYW5lc19wYXJzX3ZlcnRleD5cbnZvaWQgbWFpbigpIHtcblx0I2luY2x1ZGUgPHV2X3ZlcnRleD5cblx0I2luY2x1ZGUgPHNraW5iYXNlX3ZlcnRleD5cblx0I2lmZGVmIFVTRV9ESVNQTEFDRU1FTlRNQVBcblx0XHQjaW5jbHVkZSA8YmVnaW5ub3JtYWxfdmVydGV4PlxuXHRcdCNpbmNsdWRlIDxtb3JwaG5vcm1hbF92ZXJ0ZXg+XG5cdFx0I2luY2x1ZGUgPHNraW5ub3JtYWxfdmVydGV4PlxuXHQjZW5kaWZcblx0I2luY2x1ZGUgPGJlZ2luX3ZlcnRleD5cblx0I2luY2x1ZGUgPG1vcnBodGFyZ2V0X3ZlcnRleD5cblx0I2luY2x1ZGUgPHNraW5uaW5nX3ZlcnRleD5cblx0I2luY2x1ZGUgPGRpc3BsYWNlbWVudG1hcF92ZXJ0ZXg+XG5cdCNpbmNsdWRlIDxwcm9qZWN0X3ZlcnRleD5cblx0I2luY2x1ZGUgPHdvcmxkcG9zX3ZlcnRleD5cblx0I2luY2x1ZGUgPGNsaXBwaW5nX3BsYW5lc192ZXJ0ZXg+XG5cdHZXb3JsZFBvc2l0aW9uID0gd29ybGRQb3NpdGlvbi54eXo7XG59IixlcXVpcmVjdF9mcmFnOiJ1bmlmb3JtIHNhbXBsZXIyRCB0RXF1aXJlY3Q7XG52YXJ5aW5nIHZlYzMgdldvcmxkRGlyZWN0aW9uO1xuI2luY2x1ZGUgPGNvbW1vbj5cbnZvaWQgbWFpbigpIHtcblx0dmVjMyBkaXJlY3Rpb24gPSBub3JtYWxpemUoIHZXb3JsZERpcmVjdGlvbiApO1xuXHR2ZWMyIHNhbXBsZVVWID0gZXF1aXJlY3RVdiggZGlyZWN0aW9uICk7XG5cdHZlYzQgdGV4Q29sb3IgPSB0ZXh0dXJlMkQoIHRFcXVpcmVjdCwgc2FtcGxlVVYgKTtcblx0Z2xfRnJhZ0NvbG9yID0gbWFwVGV4ZWxUb0xpbmVhciggdGV4Q29sb3IgKTtcblx0I2luY2x1ZGUgPHRvbmVtYXBwaW5nX2ZyYWdtZW50PlxuXHQjaW5jbHVkZSA8ZW5jb2RpbmdzX2ZyYWdtZW50PlxufSIsZXF1aXJlY3RfdmVydDoidmFyeWluZyB2ZWMzIHZXb3JsZERpcmVjdGlvbjtcbiNpbmNsdWRlIDxjb21tb24+XG52b2lkIG1haW4oKSB7XG5cdHZXb3JsZERpcmVjdGlvbiA9IHRyYW5zZm9ybURpcmVjdGlvbiggcG9zaXRpb24sIG1vZGVsTWF0cml4ICk7XG5cdCNpbmNsdWRlIDxiZWdpbl92ZXJ0ZXg+XG5cdCNpbmNsdWRlIDxwcm9qZWN0X3ZlcnRleD5cbn0iLGxpbmVkYXNoZWRfZnJhZzoidW5pZm9ybSB2ZWMzIGRpZmZ1c2U7XG51bmlmb3JtIGZsb2F0IG9wYWNpdHk7XG51bmlmb3JtIGZsb2F0IGRhc2hTaXplO1xudW5pZm9ybSBmbG9hdCB0b3RhbFNpemU7XG52YXJ5aW5nIGZsb2F0IHZMaW5lRGlzdGFuY2U7XG4jaW5jbHVkZSA8Y29tbW9uPlxuI2luY2x1ZGUgPGNvbG9yX3BhcnNfZnJhZ21lbnQ+XG4jaW5jbHVkZSA8Zm9nX3BhcnNfZnJhZ21lbnQ+XG4jaW5jbHVkZSA8bG9nZGVwdGhidWZfcGFyc19mcmFnbWVudD5cbiNpbmNsdWRlIDxjbGlwcGluZ19wbGFuZXNfcGFyc19mcmFnbWVudD5cbnZvaWQgbWFpbigpIHtcblx0I2luY2x1ZGUgPGNsaXBwaW5nX3BsYW5lc19mcmFnbWVudD5cblx0aWYgKCBtb2QoIHZMaW5lRGlzdGFuY2UsIHRvdGFsU2l6ZSApID4gZGFzaFNpemUgKSB7XG5cdFx0ZGlzY2FyZDtcblx0fVxuXHR2ZWMzIG91dGdvaW5nTGlnaHQgPSB2ZWMzKCAwLjAgKTtcblx0dmVjNCBkaWZmdXNlQ29sb3IgPSB2ZWM0KCBkaWZmdXNlLCBvcGFjaXR5ICk7XG5cdCNpbmNsdWRlIDxsb2dkZXB0aGJ1Zl9mcmFnbWVudD5cblx0I2luY2x1ZGUgPGNvbG9yX2ZyYWdtZW50PlxuXHRvdXRnb2luZ0xpZ2h0ID0gZGlmZnVzZUNvbG9yLnJnYjtcblx0Z2xfRnJhZ0NvbG9yID0gdmVjNCggb3V0Z29pbmdMaWdodCwgZGlmZnVzZUNvbG9yLmEgKTtcblx0I2luY2x1ZGUgPHRvbmVtYXBwaW5nX2ZyYWdtZW50PlxuXHQjaW5jbHVkZSA8ZW5jb2RpbmdzX2ZyYWdtZW50PlxuXHQjaW5jbHVkZSA8Zm9nX2ZyYWdtZW50PlxuXHQjaW5jbHVkZSA8cHJlbXVsdGlwbGllZF9hbHBoYV9mcmFnbWVudD5cbn0iLGxpbmVkYXNoZWRfdmVydDoidW5pZm9ybSBmbG9hdCBzY2FsZTtcbmF0dHJpYnV0ZSBmbG9hdCBsaW5lRGlzdGFuY2U7XG52YXJ5aW5nIGZsb2F0IHZMaW5lRGlzdGFuY2U7XG4jaW5jbHVkZSA8Y29tbW9uPlxuI2luY2x1ZGUgPGNvbG9yX3BhcnNfdmVydGV4PlxuI2luY2x1ZGUgPGZvZ19wYXJzX3ZlcnRleD5cbiNpbmNsdWRlIDxtb3JwaHRhcmdldF9wYXJzX3ZlcnRleD5cbiNpbmNsdWRlIDxsb2dkZXB0aGJ1Zl9wYXJzX3ZlcnRleD5cbiNpbmNsdWRlIDxjbGlwcGluZ19wbGFuZXNfcGFyc192ZXJ0ZXg+XG52b2lkIG1haW4oKSB7XG5cdHZMaW5lRGlzdGFuY2UgPSBzY2FsZSAqIGxpbmVEaXN0YW5jZTtcblx0I2luY2x1ZGUgPGNvbG9yX3ZlcnRleD5cblx0I2luY2x1ZGUgPGJlZ2luX3ZlcnRleD5cblx0I2luY2x1ZGUgPG1vcnBodGFyZ2V0X3ZlcnRleD5cblx0I2luY2x1ZGUgPHByb2plY3RfdmVydGV4PlxuXHQjaW5jbHVkZSA8bG9nZGVwdGhidWZfdmVydGV4PlxuXHQjaW5jbHVkZSA8Y2xpcHBpbmdfcGxhbmVzX3ZlcnRleD5cblx0I2luY2x1ZGUgPGZvZ192ZXJ0ZXg+XG59IixtZXNoYmFzaWNfZnJhZzoidW5pZm9ybSB2ZWMzIGRpZmZ1c2U7XG51bmlmb3JtIGZsb2F0IG9wYWNpdHk7XG4jaWZuZGVmIEZMQVRfU0hBREVEXG5cdHZhcnlpbmcgdmVjMyB2Tm9ybWFsO1xuI2VuZGlmXG4jaW5jbHVkZSA8Y29tbW9uPlxuI2luY2x1ZGUgPGRpdGhlcmluZ19wYXJzX2ZyYWdtZW50PlxuI2luY2x1ZGUgPGNvbG9yX3BhcnNfZnJhZ21lbnQ+XG4jaW5jbHVkZSA8dXZfcGFyc19mcmFnbWVudD5cbiNpbmNsdWRlIDx1djJfcGFyc19mcmFnbWVudD5cbiNpbmNsdWRlIDxtYXBfcGFyc19mcmFnbWVudD5cbiNpbmNsdWRlIDxhbHBoYW1hcF9wYXJzX2ZyYWdtZW50PlxuI2luY2x1ZGUgPGFvbWFwX3BhcnNfZnJhZ21lbnQ+XG4jaW5jbHVkZSA8bGlnaHRtYXBfcGFyc19mcmFnbWVudD5cbiNpbmNsdWRlIDxlbnZtYXBfY29tbW9uX3BhcnNfZnJhZ21lbnQ+XG4jaW5jbHVkZSA8ZW52bWFwX3BhcnNfZnJhZ21lbnQ+XG4jaW5jbHVkZSA8Y3ViZV91dl9yZWZsZWN0aW9uX2ZyYWdtZW50PlxuI2luY2x1ZGUgPGZvZ19wYXJzX2ZyYWdtZW50PlxuI2luY2x1ZGUgPHNwZWN1bGFybWFwX3BhcnNfZnJhZ21lbnQ+XG4jaW5jbHVkZSA8bG9nZGVwdGhidWZfcGFyc19mcmFnbWVudD5cbiNpbmNsdWRlIDxjbGlwcGluZ19wbGFuZXNfcGFyc19mcmFnbWVudD5cbnZvaWQgbWFpbigpIHtcblx0I2luY2x1ZGUgPGNsaXBwaW5nX3BsYW5lc19mcmFnbWVudD5cblx0dmVjNCBkaWZmdXNlQ29sb3IgPSB2ZWM0KCBkaWZmdXNlLCBvcGFjaXR5ICk7XG5cdCNpbmNsdWRlIDxsb2dkZXB0aGJ1Zl9mcmFnbWVudD5cblx0I2luY2x1ZGUgPG1hcF9mcmFnbWVudD5cblx0I2luY2x1ZGUgPGNvbG9yX2ZyYWdtZW50PlxuXHQjaW5jbHVkZSA8YWxwaGFtYXBfZnJhZ21lbnQ+XG5cdCNpbmNsdWRlIDxhbHBoYXRlc3RfZnJhZ21lbnQ+XG5cdCNpbmNsdWRlIDxzcGVjdWxhcm1hcF9mcmFnbWVudD5cblx0UmVmbGVjdGVkTGlnaHQgcmVmbGVjdGVkTGlnaHQgPSBSZWZsZWN0ZWRMaWdodCggdmVjMyggMC4wICksIHZlYzMoIDAuMCApLCB2ZWMzKCAwLjAgKSwgdmVjMyggMC4wICkgKTtcblx0I2lmZGVmIFVTRV9MSUdIVE1BUFxuXHRcblx0XHR2ZWM0IGxpZ2h0TWFwVGV4ZWw9IHRleHR1cmUyRCggbGlnaHRNYXAsIHZVdjIgKTtcblx0XHRyZWZsZWN0ZWRMaWdodC5pbmRpcmVjdERpZmZ1c2UgKz0gbGlnaHRNYXBUZXhlbFRvTGluZWFyKCBsaWdodE1hcFRleGVsICkucmdiICogbGlnaHRNYXBJbnRlbnNpdHk7XG5cdCNlbHNlXG5cdFx0cmVmbGVjdGVkTGlnaHQuaW5kaXJlY3REaWZmdXNlICs9IHZlYzMoIDEuMCApO1xuXHQjZW5kaWZcblx0I2luY2x1ZGUgPGFvbWFwX2ZyYWdtZW50PlxuXHRyZWZsZWN0ZWRMaWdodC5pbmRpcmVjdERpZmZ1c2UgKj0gZGlmZnVzZUNvbG9yLnJnYjtcblx0dmVjMyBvdXRnb2luZ0xpZ2h0ID0gcmVmbGVjdGVkTGlnaHQuaW5kaXJlY3REaWZmdXNlO1xuXHQjaW5jbHVkZSA8ZW52bWFwX2ZyYWdtZW50PlxuXHRnbF9GcmFnQ29sb3IgPSB2ZWM0KCBvdXRnb2luZ0xpZ2h0LCBkaWZmdXNlQ29sb3IuYSApO1xuXHQjaW5jbHVkZSA8dG9uZW1hcHBpbmdfZnJhZ21lbnQ+XG5cdCNpbmNsdWRlIDxlbmNvZGluZ3NfZnJhZ21lbnQ+XG5cdCNpbmNsdWRlIDxmb2dfZnJhZ21lbnQ+XG5cdCNpbmNsdWRlIDxwcmVtdWx0aXBsaWVkX2FscGhhX2ZyYWdtZW50PlxuXHQjaW5jbHVkZSA8ZGl0aGVyaW5nX2ZyYWdtZW50PlxufSIsbWVzaGJhc2ljX3ZlcnQ6IiNpbmNsdWRlIDxjb21tb24+XG4jaW5jbHVkZSA8dXZfcGFyc192ZXJ0ZXg+XG4jaW5jbHVkZSA8dXYyX3BhcnNfdmVydGV4PlxuI2luY2x1ZGUgPGVudm1hcF9wYXJzX3ZlcnRleD5cbiNpbmNsdWRlIDxjb2xvcl9wYXJzX3ZlcnRleD5cbiNpbmNsdWRlIDxmb2dfcGFyc192ZXJ0ZXg+XG4jaW5jbHVkZSA8bW9ycGh0YXJnZXRfcGFyc192ZXJ0ZXg+XG4jaW5jbHVkZSA8c2tpbm5pbmdfcGFyc192ZXJ0ZXg+XG4jaW5jbHVkZSA8bG9nZGVwdGhidWZfcGFyc192ZXJ0ZXg+XG4jaW5jbHVkZSA8Y2xpcHBpbmdfcGxhbmVzX3BhcnNfdmVydGV4Plxudm9pZCBtYWluKCkge1xuXHQjaW5jbHVkZSA8dXZfdmVydGV4PlxuXHQjaW5jbHVkZSA8dXYyX3ZlcnRleD5cblx0I2luY2x1ZGUgPGNvbG9yX3ZlcnRleD5cblx0I2luY2x1ZGUgPHNraW5iYXNlX3ZlcnRleD5cblx0I2lmZGVmIFVTRV9FTlZNQVBcblx0I2luY2x1ZGUgPGJlZ2lubm9ybWFsX3ZlcnRleD5cblx0I2luY2x1ZGUgPG1vcnBobm9ybWFsX3ZlcnRleD5cblx0I2luY2x1ZGUgPHNraW5ub3JtYWxfdmVydGV4PlxuXHQjaW5jbHVkZSA8ZGVmYXVsdG5vcm1hbF92ZXJ0ZXg+XG5cdCNlbmRpZlxuXHQjaW5jbHVkZSA8YmVnaW5fdmVydGV4PlxuXHQjaW5jbHVkZSA8bW9ycGh0YXJnZXRfdmVydGV4PlxuXHQjaW5jbHVkZSA8c2tpbm5pbmdfdmVydGV4PlxuXHQjaW5jbHVkZSA8cHJvamVjdF92ZXJ0ZXg+XG5cdCNpbmNsdWRlIDxsb2dkZXB0aGJ1Zl92ZXJ0ZXg+XG5cdCNpbmNsdWRlIDx3b3JsZHBvc192ZXJ0ZXg+XG5cdCNpbmNsdWRlIDxjbGlwcGluZ19wbGFuZXNfdmVydGV4PlxuXHQjaW5jbHVkZSA8ZW52bWFwX3ZlcnRleD5cblx0I2luY2x1ZGUgPGZvZ192ZXJ0ZXg+XG59IixtZXNobGFtYmVydF9mcmFnOiJ1bmlmb3JtIHZlYzMgZGlmZnVzZTtcbnVuaWZvcm0gdmVjMyBlbWlzc2l2ZTtcbnVuaWZvcm0gZmxvYXQgb3BhY2l0eTtcbnZhcnlpbmcgdmVjMyB2TGlnaHRGcm9udDtcbnZhcnlpbmcgdmVjMyB2SW5kaXJlY3RGcm9udDtcbiNpZmRlZiBET1VCTEVfU0lERURcblx0dmFyeWluZyB2ZWMzIHZMaWdodEJhY2s7XG5cdHZhcnlpbmcgdmVjMyB2SW5kaXJlY3RCYWNrO1xuI2VuZGlmXG4jaW5jbHVkZSA8Y29tbW9uPlxuI2luY2x1ZGUgPHBhY2tpbmc+XG4jaW5jbHVkZSA8ZGl0aGVyaW5nX3BhcnNfZnJhZ21lbnQ+XG4jaW5jbHVkZSA8Y29sb3JfcGFyc19mcmFnbWVudD5cbiNpbmNsdWRlIDx1dl9wYXJzX2ZyYWdtZW50PlxuI2luY2x1ZGUgPHV2Ml9wYXJzX2ZyYWdtZW50PlxuI2luY2x1ZGUgPG1hcF9wYXJzX2ZyYWdtZW50PlxuI2luY2x1ZGUgPGFscGhhbWFwX3BhcnNfZnJhZ21lbnQ+XG4jaW5jbHVkZSA8YW9tYXBfcGFyc19mcmFnbWVudD5cbiNpbmNsdWRlIDxsaWdodG1hcF9wYXJzX2ZyYWdtZW50PlxuI2luY2x1ZGUgPGVtaXNzaXZlbWFwX3BhcnNfZnJhZ21lbnQ+XG4jaW5jbHVkZSA8ZW52bWFwX2NvbW1vbl9wYXJzX2ZyYWdtZW50PlxuI2luY2x1ZGUgPGVudm1hcF9wYXJzX2ZyYWdtZW50PlxuI2luY2x1ZGUgPGN1YmVfdXZfcmVmbGVjdGlvbl9mcmFnbWVudD5cbiNpbmNsdWRlIDxic2Rmcz5cbiNpbmNsdWRlIDxsaWdodHNfcGFyc19iZWdpbj5cbiNpbmNsdWRlIDxmb2dfcGFyc19mcmFnbWVudD5cbiNpbmNsdWRlIDxzaGFkb3dtYXBfcGFyc19mcmFnbWVudD5cbiNpbmNsdWRlIDxzaGFkb3dtYXNrX3BhcnNfZnJhZ21lbnQ+XG4jaW5jbHVkZSA8c3BlY3VsYXJtYXBfcGFyc19mcmFnbWVudD5cbiNpbmNsdWRlIDxsb2dkZXB0aGJ1Zl9wYXJzX2ZyYWdtZW50PlxuI2luY2x1ZGUgPGNsaXBwaW5nX3BsYW5lc19wYXJzX2ZyYWdtZW50Plxudm9pZCBtYWluKCkge1xuXHQjaW5jbHVkZSA8Y2xpcHBpbmdfcGxhbmVzX2ZyYWdtZW50PlxuXHR2ZWM0IGRpZmZ1c2VDb2xvciA9IHZlYzQoIGRpZmZ1c2UsIG9wYWNpdHkgKTtcblx0UmVmbGVjdGVkTGlnaHQgcmVmbGVjdGVkTGlnaHQgPSBSZWZsZWN0ZWRMaWdodCggdmVjMyggMC4wICksIHZlYzMoIDAuMCApLCB2ZWMzKCAwLjAgKSwgdmVjMyggMC4wICkgKTtcblx0dmVjMyB0b3RhbEVtaXNzaXZlUmFkaWFuY2UgPSBlbWlzc2l2ZTtcblx0I2luY2x1ZGUgPGxvZ2RlcHRoYnVmX2ZyYWdtZW50PlxuXHQjaW5jbHVkZSA8bWFwX2ZyYWdtZW50PlxuXHQjaW5jbHVkZSA8Y29sb3JfZnJhZ21lbnQ+XG5cdCNpbmNsdWRlIDxhbHBoYW1hcF9mcmFnbWVudD5cblx0I2luY2x1ZGUgPGFscGhhdGVzdF9mcmFnbWVudD5cblx0I2luY2x1ZGUgPHNwZWN1bGFybWFwX2ZyYWdtZW50PlxuXHQjaW5jbHVkZSA8ZW1pc3NpdmVtYXBfZnJhZ21lbnQ+XG5cdCNpZmRlZiBET1VCTEVfU0lERURcblx0XHRyZWZsZWN0ZWRMaWdodC5pbmRpcmVjdERpZmZ1c2UgKz0gKCBnbF9Gcm9udEZhY2luZyApID8gdkluZGlyZWN0RnJvbnQgOiB2SW5kaXJlY3RCYWNrO1xuXHQjZWxzZVxuXHRcdHJlZmxlY3RlZExpZ2h0LmluZGlyZWN0RGlmZnVzZSArPSB2SW5kaXJlY3RGcm9udDtcblx0I2VuZGlmXG5cdCNpbmNsdWRlIDxsaWdodG1hcF9mcmFnbWVudD5cblx0cmVmbGVjdGVkTGlnaHQuaW5kaXJlY3REaWZmdXNlICo9IEJSREZfRGlmZnVzZV9MYW1iZXJ0KCBkaWZmdXNlQ29sb3IucmdiICk7XG5cdCNpZmRlZiBET1VCTEVfU0lERURcblx0XHRyZWZsZWN0ZWRMaWdodC5kaXJlY3REaWZmdXNlID0gKCBnbF9Gcm9udEZhY2luZyApID8gdkxpZ2h0RnJvbnQgOiB2TGlnaHRCYWNrO1xuXHQjZWxzZVxuXHRcdHJlZmxlY3RlZExpZ2h0LmRpcmVjdERpZmZ1c2UgPSB2TGlnaHRGcm9udDtcblx0I2VuZGlmXG5cdHJlZmxlY3RlZExpZ2h0LmRpcmVjdERpZmZ1c2UgKj0gQlJERl9EaWZmdXNlX0xhbWJlcnQoIGRpZmZ1c2VDb2xvci5yZ2IgKSAqIGdldFNoYWRvd01hc2soKTtcblx0I2luY2x1ZGUgPGFvbWFwX2ZyYWdtZW50PlxuXHR2ZWMzIG91dGdvaW5nTGlnaHQgPSByZWZsZWN0ZWRMaWdodC5kaXJlY3REaWZmdXNlICsgcmVmbGVjdGVkTGlnaHQuaW5kaXJlY3REaWZmdXNlICsgdG90YWxFbWlzc2l2ZVJhZGlhbmNlO1xuXHQjaW5jbHVkZSA8ZW52bWFwX2ZyYWdtZW50PlxuXHRnbF9GcmFnQ29sb3IgPSB2ZWM0KCBvdXRnb2luZ0xpZ2h0LCBkaWZmdXNlQ29sb3IuYSApO1xuXHQjaW5jbHVkZSA8dG9uZW1hcHBpbmdfZnJhZ21lbnQ+XG5cdCNpbmNsdWRlIDxlbmNvZGluZ3NfZnJhZ21lbnQ+XG5cdCNpbmNsdWRlIDxmb2dfZnJhZ21lbnQ+XG5cdCNpbmNsdWRlIDxwcmVtdWx0aXBsaWVkX2FscGhhX2ZyYWdtZW50PlxuXHQjaW5jbHVkZSA8ZGl0aGVyaW5nX2ZyYWdtZW50PlxufSIsbWVzaGxhbWJlcnRfdmVydDoiI2RlZmluZSBMQU1CRVJUXG52YXJ5aW5nIHZlYzMgdkxpZ2h0RnJvbnQ7XG52YXJ5aW5nIHZlYzMgdkluZGlyZWN0RnJvbnQ7XG4jaWZkZWYgRE9VQkxFX1NJREVEXG5cdHZhcnlpbmcgdmVjMyB2TGlnaHRCYWNrO1xuXHR2YXJ5aW5nIHZlYzMgdkluZGlyZWN0QmFjaztcbiNlbmRpZlxuI2luY2x1ZGUgPGNvbW1vbj5cbiNpbmNsdWRlIDx1dl9wYXJzX3ZlcnRleD5cbiNpbmNsdWRlIDx1djJfcGFyc192ZXJ0ZXg+XG4jaW5jbHVkZSA8ZW52bWFwX3BhcnNfdmVydGV4PlxuI2luY2x1ZGUgPGJzZGZzPlxuI2luY2x1ZGUgPGxpZ2h0c19wYXJzX2JlZ2luPlxuI2luY2x1ZGUgPGNvbG9yX3BhcnNfdmVydGV4PlxuI2luY2x1ZGUgPGZvZ19wYXJzX3ZlcnRleD5cbiNpbmNsdWRlIDxtb3JwaHRhcmdldF9wYXJzX3ZlcnRleD5cbiNpbmNsdWRlIDxza2lubmluZ19wYXJzX3ZlcnRleD5cbiNpbmNsdWRlIDxzaGFkb3dtYXBfcGFyc192ZXJ0ZXg+XG4jaW5jbHVkZSA8bG9nZGVwdGhidWZfcGFyc192ZXJ0ZXg+XG4jaW5jbHVkZSA8Y2xpcHBpbmdfcGxhbmVzX3BhcnNfdmVydGV4Plxudm9pZCBtYWluKCkge1xuXHQjaW5jbHVkZSA8dXZfdmVydGV4PlxuXHQjaW5jbHVkZSA8dXYyX3ZlcnRleD5cblx0I2luY2x1ZGUgPGNvbG9yX3ZlcnRleD5cblx0I2luY2x1ZGUgPGJlZ2lubm9ybWFsX3ZlcnRleD5cblx0I2luY2x1ZGUgPG1vcnBobm9ybWFsX3ZlcnRleD5cblx0I2luY2x1ZGUgPHNraW5iYXNlX3ZlcnRleD5cblx0I2luY2x1ZGUgPHNraW5ub3JtYWxfdmVydGV4PlxuXHQjaW5jbHVkZSA8ZGVmYXVsdG5vcm1hbF92ZXJ0ZXg+XG5cdCNpbmNsdWRlIDxiZWdpbl92ZXJ0ZXg+XG5cdCNpbmNsdWRlIDxtb3JwaHRhcmdldF92ZXJ0ZXg+XG5cdCNpbmNsdWRlIDxza2lubmluZ192ZXJ0ZXg+XG5cdCNpbmNsdWRlIDxwcm9qZWN0X3ZlcnRleD5cblx0I2luY2x1ZGUgPGxvZ2RlcHRoYnVmX3ZlcnRleD5cblx0I2luY2x1ZGUgPGNsaXBwaW5nX3BsYW5lc192ZXJ0ZXg+XG5cdCNpbmNsdWRlIDx3b3JsZHBvc192ZXJ0ZXg+XG5cdCNpbmNsdWRlIDxlbnZtYXBfdmVydGV4PlxuXHQjaW5jbHVkZSA8bGlnaHRzX2xhbWJlcnRfdmVydGV4PlxuXHQjaW5jbHVkZSA8c2hhZG93bWFwX3ZlcnRleD5cblx0I2luY2x1ZGUgPGZvZ192ZXJ0ZXg+XG59IixtZXNobWF0Y2FwX2ZyYWc6IiNkZWZpbmUgTUFUQ0FQXG51bmlmb3JtIHZlYzMgZGlmZnVzZTtcbnVuaWZvcm0gZmxvYXQgb3BhY2l0eTtcbnVuaWZvcm0gc2FtcGxlcjJEIG1hdGNhcDtcbnZhcnlpbmcgdmVjMyB2Vmlld1Bvc2l0aW9uO1xuI2lmbmRlZiBGTEFUX1NIQURFRFxuXHR2YXJ5aW5nIHZlYzMgdk5vcm1hbDtcbiNlbmRpZlxuI2luY2x1ZGUgPGNvbW1vbj5cbiNpbmNsdWRlIDxkaXRoZXJpbmdfcGFyc19mcmFnbWVudD5cbiNpbmNsdWRlIDxjb2xvcl9wYXJzX2ZyYWdtZW50PlxuI2luY2x1ZGUgPHV2X3BhcnNfZnJhZ21lbnQ+XG4jaW5jbHVkZSA8bWFwX3BhcnNfZnJhZ21lbnQ+XG4jaW5jbHVkZSA8YWxwaGFtYXBfcGFyc19mcmFnbWVudD5cbiNpbmNsdWRlIDxmb2dfcGFyc19mcmFnbWVudD5cbiNpbmNsdWRlIDxidW1wbWFwX3BhcnNfZnJhZ21lbnQ+XG4jaW5jbHVkZSA8bm9ybWFsbWFwX3BhcnNfZnJhZ21lbnQ+XG4jaW5jbHVkZSA8bG9nZGVwdGhidWZfcGFyc19mcmFnbWVudD5cbiNpbmNsdWRlIDxjbGlwcGluZ19wbGFuZXNfcGFyc19mcmFnbWVudD5cbnZvaWQgbWFpbigpIHtcblx0I2luY2x1ZGUgPGNsaXBwaW5nX3BsYW5lc19mcmFnbWVudD5cblx0dmVjNCBkaWZmdXNlQ29sb3IgPSB2ZWM0KCBkaWZmdXNlLCBvcGFjaXR5ICk7XG5cdCNpbmNsdWRlIDxsb2dkZXB0aGJ1Zl9mcmFnbWVudD5cblx0I2luY2x1ZGUgPG1hcF9mcmFnbWVudD5cblx0I2luY2x1ZGUgPGNvbG9yX2ZyYWdtZW50PlxuXHQjaW5jbHVkZSA8YWxwaGFtYXBfZnJhZ21lbnQ+XG5cdCNpbmNsdWRlIDxhbHBoYXRlc3RfZnJhZ21lbnQ+XG5cdCNpbmNsdWRlIDxub3JtYWxfZnJhZ21lbnRfYmVnaW4+XG5cdCNpbmNsdWRlIDxub3JtYWxfZnJhZ21lbnRfbWFwcz5cblx0dmVjMyB2aWV3RGlyID0gbm9ybWFsaXplKCB2Vmlld1Bvc2l0aW9uICk7XG5cdHZlYzMgeCA9IG5vcm1hbGl6ZSggdmVjMyggdmlld0Rpci56LCAwLjAsIC0gdmlld0Rpci54ICkgKTtcblx0dmVjMyB5ID0gY3Jvc3MoIHZpZXdEaXIsIHggKTtcblx0dmVjMiB1diA9IHZlYzIoIGRvdCggeCwgbm9ybWFsICksIGRvdCggeSwgbm9ybWFsICkgKSAqIDAuNDk1ICsgMC41O1xuXHQjaWZkZWYgVVNFX01BVENBUFxuXHRcdHZlYzQgbWF0Y2FwQ29sb3IgPSB0ZXh0dXJlMkQoIG1hdGNhcCwgdXYgKTtcblx0XHRtYXRjYXBDb2xvciA9IG1hdGNhcFRleGVsVG9MaW5lYXIoIG1hdGNhcENvbG9yICk7XG5cdCNlbHNlXG5cdFx0dmVjNCBtYXRjYXBDb2xvciA9IHZlYzQoIDEuMCApO1xuXHQjZW5kaWZcblx0dmVjMyBvdXRnb2luZ0xpZ2h0ID0gZGlmZnVzZUNvbG9yLnJnYiAqIG1hdGNhcENvbG9yLnJnYjtcblx0Z2xfRnJhZ0NvbG9yID0gdmVjNCggb3V0Z29pbmdMaWdodCwgZGlmZnVzZUNvbG9yLmEgKTtcblx0I2luY2x1ZGUgPHRvbmVtYXBwaW5nX2ZyYWdtZW50PlxuXHQjaW5jbHVkZSA8ZW5jb2RpbmdzX2ZyYWdtZW50PlxuXHQjaW5jbHVkZSA8Zm9nX2ZyYWdtZW50PlxuXHQjaW5jbHVkZSA8cHJlbXVsdGlwbGllZF9hbHBoYV9mcmFnbWVudD5cblx0I2luY2x1ZGUgPGRpdGhlcmluZ19mcmFnbWVudD5cbn0iLG1lc2htYXRjYXBfdmVydDoiI2RlZmluZSBNQVRDQVBcbnZhcnlpbmcgdmVjMyB2Vmlld1Bvc2l0aW9uO1xuI2lmbmRlZiBGTEFUX1NIQURFRFxuXHR2YXJ5aW5nIHZlYzMgdk5vcm1hbDtcbiNlbmRpZlxuI2luY2x1ZGUgPGNvbW1vbj5cbiNpbmNsdWRlIDx1dl9wYXJzX3ZlcnRleD5cbiNpbmNsdWRlIDxjb2xvcl9wYXJzX3ZlcnRleD5cbiNpbmNsdWRlIDxkaXNwbGFjZW1lbnRtYXBfcGFyc192ZXJ0ZXg+XG4jaW5jbHVkZSA8Zm9nX3BhcnNfdmVydGV4PlxuI2luY2x1ZGUgPG1vcnBodGFyZ2V0X3BhcnNfdmVydGV4PlxuI2luY2x1ZGUgPHNraW5uaW5nX3BhcnNfdmVydGV4PlxuI2luY2x1ZGUgPGxvZ2RlcHRoYnVmX3BhcnNfdmVydGV4PlxuI2luY2x1ZGUgPGNsaXBwaW5nX3BsYW5lc19wYXJzX3ZlcnRleD5cbnZvaWQgbWFpbigpIHtcblx0I2luY2x1ZGUgPHV2X3ZlcnRleD5cblx0I2luY2x1ZGUgPGNvbG9yX3ZlcnRleD5cblx0I2luY2x1ZGUgPGJlZ2lubm9ybWFsX3ZlcnRleD5cblx0I2luY2x1ZGUgPG1vcnBobm9ybWFsX3ZlcnRleD5cblx0I2luY2x1ZGUgPHNraW5iYXNlX3ZlcnRleD5cblx0I2luY2x1ZGUgPHNraW5ub3JtYWxfdmVydGV4PlxuXHQjaW5jbHVkZSA8ZGVmYXVsdG5vcm1hbF92ZXJ0ZXg+XG5cdCNpZm5kZWYgRkxBVF9TSEFERURcblx0XHR2Tm9ybWFsID0gbm9ybWFsaXplKCB0cmFuc2Zvcm1lZE5vcm1hbCApO1xuXHQjZW5kaWZcblx0I2luY2x1ZGUgPGJlZ2luX3ZlcnRleD5cblx0I2luY2x1ZGUgPG1vcnBodGFyZ2V0X3ZlcnRleD5cblx0I2luY2x1ZGUgPHNraW5uaW5nX3ZlcnRleD5cblx0I2luY2x1ZGUgPGRpc3BsYWNlbWVudG1hcF92ZXJ0ZXg+XG5cdCNpbmNsdWRlIDxwcm9qZWN0X3ZlcnRleD5cblx0I2luY2x1ZGUgPGxvZ2RlcHRoYnVmX3ZlcnRleD5cblx0I2luY2x1ZGUgPGNsaXBwaW5nX3BsYW5lc192ZXJ0ZXg+XG5cdCNpbmNsdWRlIDxmb2dfdmVydGV4PlxuXHR2Vmlld1Bvc2l0aW9uID0gLSBtdlBvc2l0aW9uLnh5ejtcbn0iLG1lc2h0b29uX2ZyYWc6IiNkZWZpbmUgVE9PTlxudW5pZm9ybSB2ZWMzIGRpZmZ1c2U7XG51bmlmb3JtIHZlYzMgZW1pc3NpdmU7XG51bmlmb3JtIGZsb2F0IG9wYWNpdHk7XG4jaW5jbHVkZSA8Y29tbW9uPlxuI2luY2x1ZGUgPHBhY2tpbmc+XG4jaW5jbHVkZSA8ZGl0aGVyaW5nX3BhcnNfZnJhZ21lbnQ+XG4jaW5jbHVkZSA8Y29sb3JfcGFyc19mcmFnbWVudD5cbiNpbmNsdWRlIDx1dl9wYXJzX2ZyYWdtZW50PlxuI2luY2x1ZGUgPHV2Ml9wYXJzX2ZyYWdtZW50PlxuI2luY2x1ZGUgPG1hcF9wYXJzX2ZyYWdtZW50PlxuI2luY2x1ZGUgPGFscGhhbWFwX3BhcnNfZnJhZ21lbnQ+XG4jaW5jbHVkZSA8YW9tYXBfcGFyc19mcmFnbWVudD5cbiNpbmNsdWRlIDxsaWdodG1hcF9wYXJzX2ZyYWdtZW50PlxuI2luY2x1ZGUgPGVtaXNzaXZlbWFwX3BhcnNfZnJhZ21lbnQ+XG4jaW5jbHVkZSA8Z3JhZGllbnRtYXBfcGFyc19mcmFnbWVudD5cbiNpbmNsdWRlIDxmb2dfcGFyc19mcmFnbWVudD5cbiNpbmNsdWRlIDxic2Rmcz5cbiNpbmNsdWRlIDxsaWdodHNfcGFyc19iZWdpbj5cbiNpbmNsdWRlIDxsaWdodHNfdG9vbl9wYXJzX2ZyYWdtZW50PlxuI2luY2x1ZGUgPHNoYWRvd21hcF9wYXJzX2ZyYWdtZW50PlxuI2luY2x1ZGUgPGJ1bXBtYXBfcGFyc19mcmFnbWVudD5cbiNpbmNsdWRlIDxub3JtYWxtYXBfcGFyc19mcmFnbWVudD5cbiNpbmNsdWRlIDxsb2dkZXB0aGJ1Zl9wYXJzX2ZyYWdtZW50PlxuI2luY2x1ZGUgPGNsaXBwaW5nX3BsYW5lc19wYXJzX2ZyYWdtZW50Plxudm9pZCBtYWluKCkge1xuXHQjaW5jbHVkZSA8Y2xpcHBpbmdfcGxhbmVzX2ZyYWdtZW50PlxuXHR2ZWM0IGRpZmZ1c2VDb2xvciA9IHZlYzQoIGRpZmZ1c2UsIG9wYWNpdHkgKTtcblx0UmVmbGVjdGVkTGlnaHQgcmVmbGVjdGVkTGlnaHQgPSBSZWZsZWN0ZWRMaWdodCggdmVjMyggMC4wICksIHZlYzMoIDAuMCApLCB2ZWMzKCAwLjAgKSwgdmVjMyggMC4wICkgKTtcblx0dmVjMyB0b3RhbEVtaXNzaXZlUmFkaWFuY2UgPSBlbWlzc2l2ZTtcblx0I2luY2x1ZGUgPGxvZ2RlcHRoYnVmX2ZyYWdtZW50PlxuXHQjaW5jbHVkZSA8bWFwX2ZyYWdtZW50PlxuXHQjaW5jbHVkZSA8Y29sb3JfZnJhZ21lbnQ+XG5cdCNpbmNsdWRlIDxhbHBoYW1hcF9mcmFnbWVudD5cblx0I2luY2x1ZGUgPGFscGhhdGVzdF9mcmFnbWVudD5cblx0I2luY2x1ZGUgPG5vcm1hbF9mcmFnbWVudF9iZWdpbj5cblx0I2luY2x1ZGUgPG5vcm1hbF9mcmFnbWVudF9tYXBzPlxuXHQjaW5jbHVkZSA8ZW1pc3NpdmVtYXBfZnJhZ21lbnQ+XG5cdCNpbmNsdWRlIDxsaWdodHNfdG9vbl9mcmFnbWVudD5cblx0I2luY2x1ZGUgPGxpZ2h0c19mcmFnbWVudF9iZWdpbj5cblx0I2luY2x1ZGUgPGxpZ2h0c19mcmFnbWVudF9tYXBzPlxuXHQjaW5jbHVkZSA8bGlnaHRzX2ZyYWdtZW50X2VuZD5cblx0I2luY2x1ZGUgPGFvbWFwX2ZyYWdtZW50PlxuXHR2ZWMzIG91dGdvaW5nTGlnaHQgPSByZWZsZWN0ZWRMaWdodC5kaXJlY3REaWZmdXNlICsgcmVmbGVjdGVkTGlnaHQuaW5kaXJlY3REaWZmdXNlICsgdG90YWxFbWlzc2l2ZVJhZGlhbmNlO1xuXHRnbF9GcmFnQ29sb3IgPSB2ZWM0KCBvdXRnb2luZ0xpZ2h0LCBkaWZmdXNlQ29sb3IuYSApO1xuXHQjaW5jbHVkZSA8dG9uZW1hcHBpbmdfZnJhZ21lbnQ+XG5cdCNpbmNsdWRlIDxlbmNvZGluZ3NfZnJhZ21lbnQ+XG5cdCNpbmNsdWRlIDxmb2dfZnJhZ21lbnQ+XG5cdCNpbmNsdWRlIDxwcmVtdWx0aXBsaWVkX2FscGhhX2ZyYWdtZW50PlxuXHQjaW5jbHVkZSA8ZGl0aGVyaW5nX2ZyYWdtZW50PlxufSIsbWVzaHRvb25fdmVydDoiI2RlZmluZSBUT09OXG52YXJ5aW5nIHZlYzMgdlZpZXdQb3NpdGlvbjtcbiNpZm5kZWYgRkxBVF9TSEFERURcblx0dmFyeWluZyB2ZWMzIHZOb3JtYWw7XG4jZW5kaWZcbiNpbmNsdWRlIDxjb21tb24+XG4jaW5jbHVkZSA8dXZfcGFyc192ZXJ0ZXg+XG4jaW5jbHVkZSA8dXYyX3BhcnNfdmVydGV4PlxuI2luY2x1ZGUgPGRpc3BsYWNlbWVudG1hcF9wYXJzX3ZlcnRleD5cbiNpbmNsdWRlIDxjb2xvcl9wYXJzX3ZlcnRleD5cbiNpbmNsdWRlIDxmb2dfcGFyc192ZXJ0ZXg+XG4jaW5jbHVkZSA8bW9ycGh0YXJnZXRfcGFyc192ZXJ0ZXg+XG4jaW5jbHVkZSA8c2tpbm5pbmdfcGFyc192ZXJ0ZXg+XG4jaW5jbHVkZSA8c2hhZG93bWFwX3BhcnNfdmVydGV4PlxuI2luY2x1ZGUgPGxvZ2RlcHRoYnVmX3BhcnNfdmVydGV4PlxuI2luY2x1ZGUgPGNsaXBwaW5nX3BsYW5lc19wYXJzX3ZlcnRleD5cbnZvaWQgbWFpbigpIHtcblx0I2luY2x1ZGUgPHV2X3ZlcnRleD5cblx0I2luY2x1ZGUgPHV2Ml92ZXJ0ZXg+XG5cdCNpbmNsdWRlIDxjb2xvcl92ZXJ0ZXg+XG5cdCNpbmNsdWRlIDxiZWdpbm5vcm1hbF92ZXJ0ZXg+XG5cdCNpbmNsdWRlIDxtb3JwaG5vcm1hbF92ZXJ0ZXg+XG5cdCNpbmNsdWRlIDxza2luYmFzZV92ZXJ0ZXg+XG5cdCNpbmNsdWRlIDxza2lubm9ybWFsX3ZlcnRleD5cblx0I2luY2x1ZGUgPGRlZmF1bHRub3JtYWxfdmVydGV4PlxuI2lmbmRlZiBGTEFUX1NIQURFRFxuXHR2Tm9ybWFsID0gbm9ybWFsaXplKCB0cmFuc2Zvcm1lZE5vcm1hbCApO1xuI2VuZGlmXG5cdCNpbmNsdWRlIDxiZWdpbl92ZXJ0ZXg+XG5cdCNpbmNsdWRlIDxtb3JwaHRhcmdldF92ZXJ0ZXg+XG5cdCNpbmNsdWRlIDxza2lubmluZ192ZXJ0ZXg+XG5cdCNpbmNsdWRlIDxkaXNwbGFjZW1lbnRtYXBfdmVydGV4PlxuXHQjaW5jbHVkZSA8cHJvamVjdF92ZXJ0ZXg+XG5cdCNpbmNsdWRlIDxsb2dkZXB0aGJ1Zl92ZXJ0ZXg+XG5cdCNpbmNsdWRlIDxjbGlwcGluZ19wbGFuZXNfdmVydGV4PlxuXHR2Vmlld1Bvc2l0aW9uID0gLSBtdlBvc2l0aW9uLnh5ejtcblx0I2luY2x1ZGUgPHdvcmxkcG9zX3ZlcnRleD5cblx0I2luY2x1ZGUgPHNoYWRvd21hcF92ZXJ0ZXg+XG5cdCNpbmNsdWRlIDxmb2dfdmVydGV4PlxufSIsbWVzaHBob25nX2ZyYWc6IiNkZWZpbmUgUEhPTkdcbnVuaWZvcm0gdmVjMyBkaWZmdXNlO1xudW5pZm9ybSB2ZWMzIGVtaXNzaXZlO1xudW5pZm9ybSB2ZWMzIHNwZWN1bGFyO1xudW5pZm9ybSBmbG9hdCBzaGluaW5lc3M7XG51bmlmb3JtIGZsb2F0IG9wYWNpdHk7XG4jaW5jbHVkZSA8Y29tbW9uPlxuI2luY2x1ZGUgPHBhY2tpbmc+XG4jaW5jbHVkZSA8ZGl0aGVyaW5nX3BhcnNfZnJhZ21lbnQ+XG4jaW5jbHVkZSA8Y29sb3JfcGFyc19mcmFnbWVudD5cbiNpbmNsdWRlIDx1dl9wYXJzX2ZyYWdtZW50PlxuI2luY2x1ZGUgPHV2Ml9wYXJzX2ZyYWdtZW50PlxuI2luY2x1ZGUgPG1hcF9wYXJzX2ZyYWdtZW50PlxuI2luY2x1ZGUgPGFscGhhbWFwX3BhcnNfZnJhZ21lbnQ+XG4jaW5jbHVkZSA8YW9tYXBfcGFyc19mcmFnbWVudD5cbiNpbmNsdWRlIDxsaWdodG1hcF9wYXJzX2ZyYWdtZW50PlxuI2luY2x1ZGUgPGVtaXNzaXZlbWFwX3BhcnNfZnJhZ21lbnQ+XG4jaW5jbHVkZSA8ZW52bWFwX2NvbW1vbl9wYXJzX2ZyYWdtZW50PlxuI2luY2x1ZGUgPGVudm1hcF9wYXJzX2ZyYWdtZW50PlxuI2luY2x1ZGUgPGN1YmVfdXZfcmVmbGVjdGlvbl9mcmFnbWVudD5cbiNpbmNsdWRlIDxmb2dfcGFyc19mcmFnbWVudD5cbiNpbmNsdWRlIDxic2Rmcz5cbiNpbmNsdWRlIDxsaWdodHNfcGFyc19iZWdpbj5cbiNpbmNsdWRlIDxsaWdodHNfcGhvbmdfcGFyc19mcmFnbWVudD5cbiNpbmNsdWRlIDxzaGFkb3dtYXBfcGFyc19mcmFnbWVudD5cbiNpbmNsdWRlIDxidW1wbWFwX3BhcnNfZnJhZ21lbnQ+XG4jaW5jbHVkZSA8bm9ybWFsbWFwX3BhcnNfZnJhZ21lbnQ+XG4jaW5jbHVkZSA8c3BlY3VsYXJtYXBfcGFyc19mcmFnbWVudD5cbiNpbmNsdWRlIDxsb2dkZXB0aGJ1Zl9wYXJzX2ZyYWdtZW50PlxuI2luY2x1ZGUgPGNsaXBwaW5nX3BsYW5lc19wYXJzX2ZyYWdtZW50Plxudm9pZCBtYWluKCkge1xuXHQjaW5jbHVkZSA8Y2xpcHBpbmdfcGxhbmVzX2ZyYWdtZW50PlxuXHR2ZWM0IGRpZmZ1c2VDb2xvciA9IHZlYzQoIGRpZmZ1c2UsIG9wYWNpdHkgKTtcblx0UmVmbGVjdGVkTGlnaHQgcmVmbGVjdGVkTGlnaHQgPSBSZWZsZWN0ZWRMaWdodCggdmVjMyggMC4wICksIHZlYzMoIDAuMCApLCB2ZWMzKCAwLjAgKSwgdmVjMyggMC4wICkgKTtcblx0dmVjMyB0b3RhbEVtaXNzaXZlUmFkaWFuY2UgPSBlbWlzc2l2ZTtcblx0I2luY2x1ZGUgPGxvZ2RlcHRoYnVmX2ZyYWdtZW50PlxuXHQjaW5jbHVkZSA8bWFwX2ZyYWdtZW50PlxuXHQjaW5jbHVkZSA8Y29sb3JfZnJhZ21lbnQ+XG5cdCNpbmNsdWRlIDxhbHBoYW1hcF9mcmFnbWVudD5cblx0I2luY2x1ZGUgPGFscGhhdGVzdF9mcmFnbWVudD5cblx0I2luY2x1ZGUgPHNwZWN1bGFybWFwX2ZyYWdtZW50PlxuXHQjaW5jbHVkZSA8bm9ybWFsX2ZyYWdtZW50X2JlZ2luPlxuXHQjaW5jbHVkZSA8bm9ybWFsX2ZyYWdtZW50X21hcHM+XG5cdCNpbmNsdWRlIDxlbWlzc2l2ZW1hcF9mcmFnbWVudD5cblx0I2luY2x1ZGUgPGxpZ2h0c19waG9uZ19mcmFnbWVudD5cblx0I2luY2x1ZGUgPGxpZ2h0c19mcmFnbWVudF9iZWdpbj5cblx0I2luY2x1ZGUgPGxpZ2h0c19mcmFnbWVudF9tYXBzPlxuXHQjaW5jbHVkZSA8bGlnaHRzX2ZyYWdtZW50X2VuZD5cblx0I2luY2x1ZGUgPGFvbWFwX2ZyYWdtZW50PlxuXHR2ZWMzIG91dGdvaW5nTGlnaHQgPSByZWZsZWN0ZWRMaWdodC5kaXJlY3REaWZmdXNlICsgcmVmbGVjdGVkTGlnaHQuaW5kaXJlY3REaWZmdXNlICsgcmVmbGVjdGVkTGlnaHQuZGlyZWN0U3BlY3VsYXIgKyByZWZsZWN0ZWRMaWdodC5pbmRpcmVjdFNwZWN1bGFyICsgdG90YWxFbWlzc2l2ZVJhZGlhbmNlO1xuXHQjaW5jbHVkZSA8ZW52bWFwX2ZyYWdtZW50PlxuXHRnbF9GcmFnQ29sb3IgPSB2ZWM0KCBvdXRnb2luZ0xpZ2h0LCBkaWZmdXNlQ29sb3IuYSApO1xuXHQjaW5jbHVkZSA8dG9uZW1hcHBpbmdfZnJhZ21lbnQ+XG5cdCNpbmNsdWRlIDxlbmNvZGluZ3NfZnJhZ21lbnQ+XG5cdCNpbmNsdWRlIDxmb2dfZnJhZ21lbnQ+XG5cdCNpbmNsdWRlIDxwcmVtdWx0aXBsaWVkX2FscGhhX2ZyYWdtZW50PlxuXHQjaW5jbHVkZSA8ZGl0aGVyaW5nX2ZyYWdtZW50PlxufSIsbWVzaHBob25nX3ZlcnQ6IiNkZWZpbmUgUEhPTkdcbnZhcnlpbmcgdmVjMyB2Vmlld1Bvc2l0aW9uO1xuI2lmbmRlZiBGTEFUX1NIQURFRFxuXHR2YXJ5aW5nIHZlYzMgdk5vcm1hbDtcbiNlbmRpZlxuI2luY2x1ZGUgPGNvbW1vbj5cbiNpbmNsdWRlIDx1dl9wYXJzX3ZlcnRleD5cbiNpbmNsdWRlIDx1djJfcGFyc192ZXJ0ZXg+XG4jaW5jbHVkZSA8ZGlzcGxhY2VtZW50bWFwX3BhcnNfdmVydGV4PlxuI2luY2x1ZGUgPGVudm1hcF9wYXJzX3ZlcnRleD5cbiNpbmNsdWRlIDxjb2xvcl9wYXJzX3ZlcnRleD5cbiNpbmNsdWRlIDxmb2dfcGFyc192ZXJ0ZXg+XG4jaW5jbHVkZSA8bW9ycGh0YXJnZXRfcGFyc192ZXJ0ZXg+XG4jaW5jbHVkZSA8c2tpbm5pbmdfcGFyc192ZXJ0ZXg+XG4jaW5jbHVkZSA8c2hhZG93bWFwX3BhcnNfdmVydGV4PlxuI2luY2x1ZGUgPGxvZ2RlcHRoYnVmX3BhcnNfdmVydGV4PlxuI2luY2x1ZGUgPGNsaXBwaW5nX3BsYW5lc19wYXJzX3ZlcnRleD5cbnZvaWQgbWFpbigpIHtcblx0I2luY2x1ZGUgPHV2X3ZlcnRleD5cblx0I2luY2x1ZGUgPHV2Ml92ZXJ0ZXg+XG5cdCNpbmNsdWRlIDxjb2xvcl92ZXJ0ZXg+XG5cdCNpbmNsdWRlIDxiZWdpbm5vcm1hbF92ZXJ0ZXg+XG5cdCNpbmNsdWRlIDxtb3JwaG5vcm1hbF92ZXJ0ZXg+XG5cdCNpbmNsdWRlIDxza2luYmFzZV92ZXJ0ZXg+XG5cdCNpbmNsdWRlIDxza2lubm9ybWFsX3ZlcnRleD5cblx0I2luY2x1ZGUgPGRlZmF1bHRub3JtYWxfdmVydGV4PlxuI2lmbmRlZiBGTEFUX1NIQURFRFxuXHR2Tm9ybWFsID0gbm9ybWFsaXplKCB0cmFuc2Zvcm1lZE5vcm1hbCApO1xuI2VuZGlmXG5cdCNpbmNsdWRlIDxiZWdpbl92ZXJ0ZXg+XG5cdCNpbmNsdWRlIDxtb3JwaHRhcmdldF92ZXJ0ZXg+XG5cdCNpbmNsdWRlIDxza2lubmluZ192ZXJ0ZXg+XG5cdCNpbmNsdWRlIDxkaXNwbGFjZW1lbnRtYXBfdmVydGV4PlxuXHQjaW5jbHVkZSA8cHJvamVjdF92ZXJ0ZXg+XG5cdCNpbmNsdWRlIDxsb2dkZXB0aGJ1Zl92ZXJ0ZXg+XG5cdCNpbmNsdWRlIDxjbGlwcGluZ19wbGFuZXNfdmVydGV4PlxuXHR2Vmlld1Bvc2l0aW9uID0gLSBtdlBvc2l0aW9uLnh5ejtcblx0I2luY2x1ZGUgPHdvcmxkcG9zX3ZlcnRleD5cblx0I2luY2x1ZGUgPGVudm1hcF92ZXJ0ZXg+XG5cdCNpbmNsdWRlIDxzaGFkb3dtYXBfdmVydGV4PlxuXHQjaW5jbHVkZSA8Zm9nX3ZlcnRleD5cbn0iLG1lc2hwaHlzaWNhbF9mcmFnOiIjZGVmaW5lIFNUQU5EQVJEXG4jaWZkZWYgUEhZU0lDQUxcblx0I2RlZmluZSBSRUZMRUNUSVZJVFlcblx0I2RlZmluZSBDTEVBUkNPQVRcblx0I2RlZmluZSBUUkFOU01JU1NJT05cbiNlbmRpZlxudW5pZm9ybSB2ZWMzIGRpZmZ1c2U7XG51bmlmb3JtIHZlYzMgZW1pc3NpdmU7XG51bmlmb3JtIGZsb2F0IHJvdWdobmVzcztcbnVuaWZvcm0gZmxvYXQgbWV0YWxuZXNzO1xudW5pZm9ybSBmbG9hdCBvcGFjaXR5O1xuI2lmZGVmIFRSQU5TTUlTU0lPTlxuXHR1bmlmb3JtIGZsb2F0IHRyYW5zbWlzc2lvbjtcbiNlbmRpZlxuI2lmZGVmIFJFRkxFQ1RJVklUWVxuXHR1bmlmb3JtIGZsb2F0IHJlZmxlY3Rpdml0eTtcbiNlbmRpZlxuI2lmZGVmIENMRUFSQ09BVFxuXHR1bmlmb3JtIGZsb2F0IGNsZWFyY29hdDtcblx0dW5pZm9ybSBmbG9hdCBjbGVhcmNvYXRSb3VnaG5lc3M7XG4jZW5kaWZcbiNpZmRlZiBVU0VfU0hFRU5cblx0dW5pZm9ybSB2ZWMzIHNoZWVuO1xuI2VuZGlmXG52YXJ5aW5nIHZlYzMgdlZpZXdQb3NpdGlvbjtcbiNpZm5kZWYgRkxBVF9TSEFERURcblx0dmFyeWluZyB2ZWMzIHZOb3JtYWw7XG5cdCNpZmRlZiBVU0VfVEFOR0VOVFxuXHRcdHZhcnlpbmcgdmVjMyB2VGFuZ2VudDtcblx0XHR2YXJ5aW5nIHZlYzMgdkJpdGFuZ2VudDtcblx0I2VuZGlmXG4jZW5kaWZcbiNpbmNsdWRlIDxjb21tb24+XG4jaW5jbHVkZSA8cGFja2luZz5cbiNpbmNsdWRlIDxkaXRoZXJpbmdfcGFyc19mcmFnbWVudD5cbiNpbmNsdWRlIDxjb2xvcl9wYXJzX2ZyYWdtZW50PlxuI2luY2x1ZGUgPHV2X3BhcnNfZnJhZ21lbnQ+XG4jaW5jbHVkZSA8dXYyX3BhcnNfZnJhZ21lbnQ+XG4jaW5jbHVkZSA8bWFwX3BhcnNfZnJhZ21lbnQ+XG4jaW5jbHVkZSA8YWxwaGFtYXBfcGFyc19mcmFnbWVudD5cbiNpbmNsdWRlIDxhb21hcF9wYXJzX2ZyYWdtZW50PlxuI2luY2x1ZGUgPGxpZ2h0bWFwX3BhcnNfZnJhZ21lbnQ+XG4jaW5jbHVkZSA8ZW1pc3NpdmVtYXBfcGFyc19mcmFnbWVudD5cbiNpbmNsdWRlIDx0cmFuc21pc3Npb25tYXBfcGFyc19mcmFnbWVudD5cbiNpbmNsdWRlIDxic2Rmcz5cbiNpbmNsdWRlIDxjdWJlX3V2X3JlZmxlY3Rpb25fZnJhZ21lbnQ+XG4jaW5jbHVkZSA8ZW52bWFwX2NvbW1vbl9wYXJzX2ZyYWdtZW50PlxuI2luY2x1ZGUgPGVudm1hcF9waHlzaWNhbF9wYXJzX2ZyYWdtZW50PlxuI2luY2x1ZGUgPGZvZ19wYXJzX2ZyYWdtZW50PlxuI2luY2x1ZGUgPGxpZ2h0c19wYXJzX2JlZ2luPlxuI2luY2x1ZGUgPGxpZ2h0c19waHlzaWNhbF9wYXJzX2ZyYWdtZW50PlxuI2luY2x1ZGUgPHNoYWRvd21hcF9wYXJzX2ZyYWdtZW50PlxuI2luY2x1ZGUgPGJ1bXBtYXBfcGFyc19mcmFnbWVudD5cbiNpbmNsdWRlIDxub3JtYWxtYXBfcGFyc19mcmFnbWVudD5cbiNpbmNsdWRlIDxjbGVhcmNvYXRfcGFyc19mcmFnbWVudD5cbiNpbmNsdWRlIDxyb3VnaG5lc3NtYXBfcGFyc19mcmFnbWVudD5cbiNpbmNsdWRlIDxtZXRhbG5lc3NtYXBfcGFyc19mcmFnbWVudD5cbiNpbmNsdWRlIDxsb2dkZXB0aGJ1Zl9wYXJzX2ZyYWdtZW50PlxuI2luY2x1ZGUgPGNsaXBwaW5nX3BsYW5lc19wYXJzX2ZyYWdtZW50Plxudm9pZCBtYWluKCkge1xuXHQjaW5jbHVkZSA8Y2xpcHBpbmdfcGxhbmVzX2ZyYWdtZW50PlxuXHR2ZWM0IGRpZmZ1c2VDb2xvciA9IHZlYzQoIGRpZmZ1c2UsIG9wYWNpdHkgKTtcblx0UmVmbGVjdGVkTGlnaHQgcmVmbGVjdGVkTGlnaHQgPSBSZWZsZWN0ZWRMaWdodCggdmVjMyggMC4wICksIHZlYzMoIDAuMCApLCB2ZWMzKCAwLjAgKSwgdmVjMyggMC4wICkgKTtcblx0dmVjMyB0b3RhbEVtaXNzaXZlUmFkaWFuY2UgPSBlbWlzc2l2ZTtcblx0I2lmZGVmIFRSQU5TTUlTU0lPTlxuXHRcdGZsb2F0IHRvdGFsVHJhbnNtaXNzaW9uID0gdHJhbnNtaXNzaW9uO1xuXHQjZW5kaWZcblx0I2luY2x1ZGUgPGxvZ2RlcHRoYnVmX2ZyYWdtZW50PlxuXHQjaW5jbHVkZSA8bWFwX2ZyYWdtZW50PlxuXHQjaW5jbHVkZSA8Y29sb3JfZnJhZ21lbnQ+XG5cdCNpbmNsdWRlIDxhbHBoYW1hcF9mcmFnbWVudD5cblx0I2luY2x1ZGUgPGFscGhhdGVzdF9mcmFnbWVudD5cblx0I2luY2x1ZGUgPHJvdWdobmVzc21hcF9mcmFnbWVudD5cblx0I2luY2x1ZGUgPG1ldGFsbmVzc21hcF9mcmFnbWVudD5cblx0I2luY2x1ZGUgPG5vcm1hbF9mcmFnbWVudF9iZWdpbj5cblx0I2luY2x1ZGUgPG5vcm1hbF9mcmFnbWVudF9tYXBzPlxuXHQjaW5jbHVkZSA8Y2xlYXJjb2F0X25vcm1hbF9mcmFnbWVudF9iZWdpbj5cblx0I2luY2x1ZGUgPGNsZWFyY29hdF9ub3JtYWxfZnJhZ21lbnRfbWFwcz5cblx0I2luY2x1ZGUgPGVtaXNzaXZlbWFwX2ZyYWdtZW50PlxuXHQjaW5jbHVkZSA8dHJhbnNtaXNzaW9ubWFwX2ZyYWdtZW50PlxuXHQjaW5jbHVkZSA8bGlnaHRzX3BoeXNpY2FsX2ZyYWdtZW50PlxuXHQjaW5jbHVkZSA8bGlnaHRzX2ZyYWdtZW50X2JlZ2luPlxuXHQjaW5jbHVkZSA8bGlnaHRzX2ZyYWdtZW50X21hcHM+XG5cdCNpbmNsdWRlIDxsaWdodHNfZnJhZ21lbnRfZW5kPlxuXHQjaW5jbHVkZSA8YW9tYXBfZnJhZ21lbnQ+XG5cdHZlYzMgb3V0Z29pbmdMaWdodCA9IHJlZmxlY3RlZExpZ2h0LmRpcmVjdERpZmZ1c2UgKyByZWZsZWN0ZWRMaWdodC5pbmRpcmVjdERpZmZ1c2UgKyByZWZsZWN0ZWRMaWdodC5kaXJlY3RTcGVjdWxhciArIHJlZmxlY3RlZExpZ2h0LmluZGlyZWN0U3BlY3VsYXIgKyB0b3RhbEVtaXNzaXZlUmFkaWFuY2U7XG5cdCNpZmRlZiBUUkFOU01JU1NJT05cblx0XHRkaWZmdXNlQ29sb3IuYSAqPSBtaXgoIHNhdHVyYXRlKCAxLiAtIHRvdGFsVHJhbnNtaXNzaW9uICsgbGluZWFyVG9SZWxhdGl2ZUx1bWluYW5jZSggcmVmbGVjdGVkTGlnaHQuZGlyZWN0U3BlY3VsYXIgKyByZWZsZWN0ZWRMaWdodC5pbmRpcmVjdFNwZWN1bGFyICkgKSwgMS4wLCBtZXRhbG5lc3MgKTtcblx0I2VuZGlmXG5cdGdsX0ZyYWdDb2xvciA9IHZlYzQoIG91dGdvaW5nTGlnaHQsIGRpZmZ1c2VDb2xvci5hICk7XG5cdCNpbmNsdWRlIDx0b25lbWFwcGluZ19mcmFnbWVudD5cblx0I2luY2x1ZGUgPGVuY29kaW5nc19mcmFnbWVudD5cblx0I2luY2x1ZGUgPGZvZ19mcmFnbWVudD5cblx0I2luY2x1ZGUgPHByZW11bHRpcGxpZWRfYWxwaGFfZnJhZ21lbnQ+XG5cdCNpbmNsdWRlIDxkaXRoZXJpbmdfZnJhZ21lbnQ+XG59IixtZXNocGh5c2ljYWxfdmVydDoiI2RlZmluZSBTVEFOREFSRFxudmFyeWluZyB2ZWMzIHZWaWV3UG9zaXRpb247XG4jaWZuZGVmIEZMQVRfU0hBREVEXG5cdHZhcnlpbmcgdmVjMyB2Tm9ybWFsO1xuXHQjaWZkZWYgVVNFX1RBTkdFTlRcblx0XHR2YXJ5aW5nIHZlYzMgdlRhbmdlbnQ7XG5cdFx0dmFyeWluZyB2ZWMzIHZCaXRhbmdlbnQ7XG5cdCNlbmRpZlxuI2VuZGlmXG4jaW5jbHVkZSA8Y29tbW9uPlxuI2luY2x1ZGUgPHV2X3BhcnNfdmVydGV4PlxuI2luY2x1ZGUgPHV2Ml9wYXJzX3ZlcnRleD5cbiNpbmNsdWRlIDxkaXNwbGFjZW1lbnRtYXBfcGFyc192ZXJ0ZXg+XG4jaW5jbHVkZSA8Y29sb3JfcGFyc192ZXJ0ZXg+XG4jaW5jbHVkZSA8Zm9nX3BhcnNfdmVydGV4PlxuI2luY2x1ZGUgPG1vcnBodGFyZ2V0X3BhcnNfdmVydGV4PlxuI2luY2x1ZGUgPHNraW5uaW5nX3BhcnNfdmVydGV4PlxuI2luY2x1ZGUgPHNoYWRvd21hcF9wYXJzX3ZlcnRleD5cbiNpbmNsdWRlIDxsb2dkZXB0aGJ1Zl9wYXJzX3ZlcnRleD5cbiNpbmNsdWRlIDxjbGlwcGluZ19wbGFuZXNfcGFyc192ZXJ0ZXg+XG52b2lkIG1haW4oKSB7XG5cdCNpbmNsdWRlIDx1dl92ZXJ0ZXg+XG5cdCNpbmNsdWRlIDx1djJfdmVydGV4PlxuXHQjaW5jbHVkZSA8Y29sb3JfdmVydGV4PlxuXHQjaW5jbHVkZSA8YmVnaW5ub3JtYWxfdmVydGV4PlxuXHQjaW5jbHVkZSA8bW9ycGhub3JtYWxfdmVydGV4PlxuXHQjaW5jbHVkZSA8c2tpbmJhc2VfdmVydGV4PlxuXHQjaW5jbHVkZSA8c2tpbm5vcm1hbF92ZXJ0ZXg+XG5cdCNpbmNsdWRlIDxkZWZhdWx0bm9ybWFsX3ZlcnRleD5cbiNpZm5kZWYgRkxBVF9TSEFERURcblx0dk5vcm1hbCA9IG5vcm1hbGl6ZSggdHJhbnNmb3JtZWROb3JtYWwgKTtcblx0I2lmZGVmIFVTRV9UQU5HRU5UXG5cdFx0dlRhbmdlbnQgPSBub3JtYWxpemUoIHRyYW5zZm9ybWVkVGFuZ2VudCApO1xuXHRcdHZCaXRhbmdlbnQgPSBub3JtYWxpemUoIGNyb3NzKCB2Tm9ybWFsLCB2VGFuZ2VudCApICogdGFuZ2VudC53ICk7XG5cdCNlbmRpZlxuI2VuZGlmXG5cdCNpbmNsdWRlIDxiZWdpbl92ZXJ0ZXg+XG5cdCNpbmNsdWRlIDxtb3JwaHRhcmdldF92ZXJ0ZXg+XG5cdCNpbmNsdWRlIDxza2lubmluZ192ZXJ0ZXg+XG5cdCNpbmNsdWRlIDxkaXNwbGFjZW1lbnRtYXBfdmVydGV4PlxuXHQjaW5jbHVkZSA8cHJvamVjdF92ZXJ0ZXg+XG5cdCNpbmNsdWRlIDxsb2dkZXB0aGJ1Zl92ZXJ0ZXg+XG5cdCNpbmNsdWRlIDxjbGlwcGluZ19wbGFuZXNfdmVydGV4PlxuXHR2Vmlld1Bvc2l0aW9uID0gLSBtdlBvc2l0aW9uLnh5ejtcblx0I2luY2x1ZGUgPHdvcmxkcG9zX3ZlcnRleD5cblx0I2luY2x1ZGUgPHNoYWRvd21hcF92ZXJ0ZXg+XG5cdCNpbmNsdWRlIDxmb2dfdmVydGV4PlxufSIsbm9ybWFsX2ZyYWc6IiNkZWZpbmUgTk9STUFMXG51bmlmb3JtIGZsb2F0IG9wYWNpdHk7XG4jaWYgZGVmaW5lZCggRkxBVF9TSEFERUQgKSB8fCBkZWZpbmVkKCBVU0VfQlVNUE1BUCApIHx8IGRlZmluZWQoIFRBTkdFTlRTUEFDRV9OT1JNQUxNQVAgKVxuXHR2YXJ5aW5nIHZlYzMgdlZpZXdQb3NpdGlvbjtcbiNlbmRpZlxuI2lmbmRlZiBGTEFUX1NIQURFRFxuXHR2YXJ5aW5nIHZlYzMgdk5vcm1hbDtcblx0I2lmZGVmIFVTRV9UQU5HRU5UXG5cdFx0dmFyeWluZyB2ZWMzIHZUYW5nZW50O1xuXHRcdHZhcnlpbmcgdmVjMyB2Qml0YW5nZW50O1xuXHQjZW5kaWZcbiNlbmRpZlxuI2luY2x1ZGUgPHBhY2tpbmc+XG4jaW5jbHVkZSA8dXZfcGFyc19mcmFnbWVudD5cbiNpbmNsdWRlIDxidW1wbWFwX3BhcnNfZnJhZ21lbnQ+XG4jaW5jbHVkZSA8bm9ybWFsbWFwX3BhcnNfZnJhZ21lbnQ+XG4jaW5jbHVkZSA8bG9nZGVwdGhidWZfcGFyc19mcmFnbWVudD5cbiNpbmNsdWRlIDxjbGlwcGluZ19wbGFuZXNfcGFyc19mcmFnbWVudD5cbnZvaWQgbWFpbigpIHtcblx0I2luY2x1ZGUgPGNsaXBwaW5nX3BsYW5lc19mcmFnbWVudD5cblx0I2luY2x1ZGUgPGxvZ2RlcHRoYnVmX2ZyYWdtZW50PlxuXHQjaW5jbHVkZSA8bm9ybWFsX2ZyYWdtZW50X2JlZ2luPlxuXHQjaW5jbHVkZSA8bm9ybWFsX2ZyYWdtZW50X21hcHM+XG5cdGdsX0ZyYWdDb2xvciA9IHZlYzQoIHBhY2tOb3JtYWxUb1JHQiggbm9ybWFsICksIG9wYWNpdHkgKTtcbn0iLG5vcm1hbF92ZXJ0OiIjZGVmaW5lIE5PUk1BTFxuI2lmIGRlZmluZWQoIEZMQVRfU0hBREVEICkgfHwgZGVmaW5lZCggVVNFX0JVTVBNQVAgKSB8fCBkZWZpbmVkKCBUQU5HRU5UU1BBQ0VfTk9STUFMTUFQIClcblx0dmFyeWluZyB2ZWMzIHZWaWV3UG9zaXRpb247XG4jZW5kaWZcbiNpZm5kZWYgRkxBVF9TSEFERURcblx0dmFyeWluZyB2ZWMzIHZOb3JtYWw7XG5cdCNpZmRlZiBVU0VfVEFOR0VOVFxuXHRcdHZhcnlpbmcgdmVjMyB2VGFuZ2VudDtcblx0XHR2YXJ5aW5nIHZlYzMgdkJpdGFuZ2VudDtcblx0I2VuZGlmXG4jZW5kaWZcbiNpbmNsdWRlIDxjb21tb24+XG4jaW5jbHVkZSA8dXZfcGFyc192ZXJ0ZXg+XG4jaW5jbHVkZSA8ZGlzcGxhY2VtZW50bWFwX3BhcnNfdmVydGV4PlxuI2luY2x1ZGUgPG1vcnBodGFyZ2V0X3BhcnNfdmVydGV4PlxuI2luY2x1ZGUgPHNraW5uaW5nX3BhcnNfdmVydGV4PlxuI2luY2x1ZGUgPGxvZ2RlcHRoYnVmX3BhcnNfdmVydGV4PlxuI2luY2x1ZGUgPGNsaXBwaW5nX3BsYW5lc19wYXJzX3ZlcnRleD5cbnZvaWQgbWFpbigpIHtcblx0I2luY2x1ZGUgPHV2X3ZlcnRleD5cblx0I2luY2x1ZGUgPGJlZ2lubm9ybWFsX3ZlcnRleD5cblx0I2luY2x1ZGUgPG1vcnBobm9ybWFsX3ZlcnRleD5cblx0I2luY2x1ZGUgPHNraW5iYXNlX3ZlcnRleD5cblx0I2luY2x1ZGUgPHNraW5ub3JtYWxfdmVydGV4PlxuXHQjaW5jbHVkZSA8ZGVmYXVsdG5vcm1hbF92ZXJ0ZXg+XG4jaWZuZGVmIEZMQVRfU0hBREVEXG5cdHZOb3JtYWwgPSBub3JtYWxpemUoIHRyYW5zZm9ybWVkTm9ybWFsICk7XG5cdCNpZmRlZiBVU0VfVEFOR0VOVFxuXHRcdHZUYW5nZW50ID0gbm9ybWFsaXplKCB0cmFuc2Zvcm1lZFRhbmdlbnQgKTtcblx0XHR2Qml0YW5nZW50ID0gbm9ybWFsaXplKCBjcm9zcyggdk5vcm1hbCwgdlRhbmdlbnQgKSAqIHRhbmdlbnQudyApO1xuXHQjZW5kaWZcbiNlbmRpZlxuXHQjaW5jbHVkZSA8YmVnaW5fdmVydGV4PlxuXHQjaW5jbHVkZSA8bW9ycGh0YXJnZXRfdmVydGV4PlxuXHQjaW5jbHVkZSA8c2tpbm5pbmdfdmVydGV4PlxuXHQjaW5jbHVkZSA8ZGlzcGxhY2VtZW50bWFwX3ZlcnRleD5cblx0I2luY2x1ZGUgPHByb2plY3RfdmVydGV4PlxuXHQjaW5jbHVkZSA8bG9nZGVwdGhidWZfdmVydGV4PlxuXHQjaW5jbHVkZSA8Y2xpcHBpbmdfcGxhbmVzX3ZlcnRleD5cbiNpZiBkZWZpbmVkKCBGTEFUX1NIQURFRCApIHx8IGRlZmluZWQoIFVTRV9CVU1QTUFQICkgfHwgZGVmaW5lZCggVEFOR0VOVFNQQUNFX05PUk1BTE1BUCApXG5cdHZWaWV3UG9zaXRpb24gPSAtIG12UG9zaXRpb24ueHl6O1xuI2VuZGlmXG59Iixwb2ludHNfZnJhZzoidW5pZm9ybSB2ZWMzIGRpZmZ1c2U7XG51bmlmb3JtIGZsb2F0IG9wYWNpdHk7XG4jaW5jbHVkZSA8Y29tbW9uPlxuI2luY2x1ZGUgPGNvbG9yX3BhcnNfZnJhZ21lbnQ+XG4jaW5jbHVkZSA8bWFwX3BhcnRpY2xlX3BhcnNfZnJhZ21lbnQ+XG4jaW5jbHVkZSA8Zm9nX3BhcnNfZnJhZ21lbnQ+XG4jaW5jbHVkZSA8bG9nZGVwdGhidWZfcGFyc19mcmFnbWVudD5cbiNpbmNsdWRlIDxjbGlwcGluZ19wbGFuZXNfcGFyc19mcmFnbWVudD5cbnZvaWQgbWFpbigpIHtcblx0I2luY2x1ZGUgPGNsaXBwaW5nX3BsYW5lc19mcmFnbWVudD5cblx0dmVjMyBvdXRnb2luZ0xpZ2h0ID0gdmVjMyggMC4wICk7XG5cdHZlYzQgZGlmZnVzZUNvbG9yID0gdmVjNCggZGlmZnVzZSwgb3BhY2l0eSApO1xuXHQjaW5jbHVkZSA8bG9nZGVwdGhidWZfZnJhZ21lbnQ+XG5cdCNpbmNsdWRlIDxtYXBfcGFydGljbGVfZnJhZ21lbnQ+XG5cdCNpbmNsdWRlIDxjb2xvcl9mcmFnbWVudD5cblx0I2luY2x1ZGUgPGFscGhhdGVzdF9mcmFnbWVudD5cblx0b3V0Z29pbmdMaWdodCA9IGRpZmZ1c2VDb2xvci5yZ2I7XG5cdGdsX0ZyYWdDb2xvciA9IHZlYzQoIG91dGdvaW5nTGlnaHQsIGRpZmZ1c2VDb2xvci5hICk7XG5cdCNpbmNsdWRlIDx0b25lbWFwcGluZ19mcmFnbWVudD5cblx0I2luY2x1ZGUgPGVuY29kaW5nc19mcmFnbWVudD5cblx0I2luY2x1ZGUgPGZvZ19mcmFnbWVudD5cblx0I2luY2x1ZGUgPHByZW11bHRpcGxpZWRfYWxwaGFfZnJhZ21lbnQ+XG59Iixwb2ludHNfdmVydDoidW5pZm9ybSBmbG9hdCBzaXplO1xudW5pZm9ybSBmbG9hdCBzY2FsZTtcbiNpbmNsdWRlIDxjb21tb24+XG4jaW5jbHVkZSA8Y29sb3JfcGFyc192ZXJ0ZXg+XG4jaW5jbHVkZSA8Zm9nX3BhcnNfdmVydGV4PlxuI2luY2x1ZGUgPG1vcnBodGFyZ2V0X3BhcnNfdmVydGV4PlxuI2luY2x1ZGUgPGxvZ2RlcHRoYnVmX3BhcnNfdmVydGV4PlxuI2luY2x1ZGUgPGNsaXBwaW5nX3BsYW5lc19wYXJzX3ZlcnRleD5cbnZvaWQgbWFpbigpIHtcblx0I2luY2x1ZGUgPGNvbG9yX3ZlcnRleD5cblx0I2luY2x1ZGUgPGJlZ2luX3ZlcnRleD5cblx0I2luY2x1ZGUgPG1vcnBodGFyZ2V0X3ZlcnRleD5cblx0I2luY2x1ZGUgPHByb2plY3RfdmVydGV4PlxuXHRnbF9Qb2ludFNpemUgPSBzaXplO1xuXHQjaWZkZWYgVVNFX1NJWkVBVFRFTlVBVElPTlxuXHRcdGJvb2wgaXNQZXJzcGVjdGl2ZSA9IGlzUGVyc3BlY3RpdmVNYXRyaXgoIHByb2plY3Rpb25NYXRyaXggKTtcblx0XHRpZiAoIGlzUGVyc3BlY3RpdmUgKSBnbF9Qb2ludFNpemUgKj0gKCBzY2FsZSAvIC0gbXZQb3NpdGlvbi56ICk7XG5cdCNlbmRpZlxuXHQjaW5jbHVkZSA8bG9nZGVwdGhidWZfdmVydGV4PlxuXHQjaW5jbHVkZSA8Y2xpcHBpbmdfcGxhbmVzX3ZlcnRleD5cblx0I2luY2x1ZGUgPHdvcmxkcG9zX3ZlcnRleD5cblx0I2luY2x1ZGUgPGZvZ192ZXJ0ZXg+XG59IixzaGFkb3dfZnJhZzoidW5pZm9ybSB2ZWMzIGNvbG9yO1xudW5pZm9ybSBmbG9hdCBvcGFjaXR5O1xuI2luY2x1ZGUgPGNvbW1vbj5cbiNpbmNsdWRlIDxwYWNraW5nPlxuI2luY2x1ZGUgPGZvZ19wYXJzX2ZyYWdtZW50PlxuI2luY2x1ZGUgPGJzZGZzPlxuI2luY2x1ZGUgPGxpZ2h0c19wYXJzX2JlZ2luPlxuI2luY2x1ZGUgPHNoYWRvd21hcF9wYXJzX2ZyYWdtZW50PlxuI2luY2x1ZGUgPHNoYWRvd21hc2tfcGFyc19mcmFnbWVudD5cbnZvaWQgbWFpbigpIHtcblx0Z2xfRnJhZ0NvbG9yID0gdmVjNCggY29sb3IsIG9wYWNpdHkgKiAoIDEuMCAtIGdldFNoYWRvd01hc2soKSApICk7XG5cdCNpbmNsdWRlIDx0b25lbWFwcGluZ19mcmFnbWVudD5cblx0I2luY2x1ZGUgPGVuY29kaW5nc19mcmFnbWVudD5cblx0I2luY2x1ZGUgPGZvZ19mcmFnbWVudD5cbn0iLHNoYWRvd192ZXJ0OiIjaW5jbHVkZSA8Y29tbW9uPlxuI2luY2x1ZGUgPGZvZ19wYXJzX3ZlcnRleD5cbiNpbmNsdWRlIDxzaGFkb3dtYXBfcGFyc192ZXJ0ZXg+XG52b2lkIG1haW4oKSB7XG5cdCNpbmNsdWRlIDxiZWdpbl92ZXJ0ZXg+XG5cdCNpbmNsdWRlIDxwcm9qZWN0X3ZlcnRleD5cblx0I2luY2x1ZGUgPHdvcmxkcG9zX3ZlcnRleD5cblx0I2luY2x1ZGUgPGJlZ2lubm9ybWFsX3ZlcnRleD5cblx0I2luY2x1ZGUgPG1vcnBobm9ybWFsX3ZlcnRleD5cblx0I2luY2x1ZGUgPHNraW5iYXNlX3ZlcnRleD5cblx0I2luY2x1ZGUgPHNraW5ub3JtYWxfdmVydGV4PlxuXHQjaW5jbHVkZSA8ZGVmYXVsdG5vcm1hbF92ZXJ0ZXg+XG5cdCNpbmNsdWRlIDxzaGFkb3dtYXBfdmVydGV4PlxuXHQjaW5jbHVkZSA8Zm9nX3ZlcnRleD5cbn0iLHNwcml0ZV9mcmFnOiJ1bmlmb3JtIHZlYzMgZGlmZnVzZTtcbnVuaWZvcm0gZmxvYXQgb3BhY2l0eTtcbiNpbmNsdWRlIDxjb21tb24+XG4jaW5jbHVkZSA8dXZfcGFyc19mcmFnbWVudD5cbiNpbmNsdWRlIDxtYXBfcGFyc19mcmFnbWVudD5cbiNpbmNsdWRlIDxhbHBoYW1hcF9wYXJzX2ZyYWdtZW50PlxuI2luY2x1ZGUgPGZvZ19wYXJzX2ZyYWdtZW50PlxuI2luY2x1ZGUgPGxvZ2RlcHRoYnVmX3BhcnNfZnJhZ21lbnQ+XG4jaW5jbHVkZSA8Y2xpcHBpbmdfcGxhbmVzX3BhcnNfZnJhZ21lbnQ+XG52b2lkIG1haW4oKSB7XG5cdCNpbmNsdWRlIDxjbGlwcGluZ19wbGFuZXNfZnJhZ21lbnQ+XG5cdHZlYzMgb3V0Z29pbmdMaWdodCA9IHZlYzMoIDAuMCApO1xuXHR2ZWM0IGRpZmZ1c2VDb2xvciA9IHZlYzQoIGRpZmZ1c2UsIG9wYWNpdHkgKTtcblx0I2luY2x1ZGUgPGxvZ2RlcHRoYnVmX2ZyYWdtZW50PlxuXHQjaW5jbHVkZSA8bWFwX2ZyYWdtZW50PlxuXHQjaW5jbHVkZSA8YWxwaGFtYXBfZnJhZ21lbnQ+XG5cdCNpbmNsdWRlIDxhbHBoYXRlc3RfZnJhZ21lbnQ+XG5cdG91dGdvaW5nTGlnaHQgPSBkaWZmdXNlQ29sb3IucmdiO1xuXHRnbF9GcmFnQ29sb3IgPSB2ZWM0KCBvdXRnb2luZ0xpZ2h0LCBkaWZmdXNlQ29sb3IuYSApO1xuXHQjaW5jbHVkZSA8dG9uZW1hcHBpbmdfZnJhZ21lbnQ+XG5cdCNpbmNsdWRlIDxlbmNvZGluZ3NfZnJhZ21lbnQ+XG5cdCNpbmNsdWRlIDxmb2dfZnJhZ21lbnQ+XG59IixzcHJpdGVfdmVydDoidW5pZm9ybSBmbG9hdCByb3RhdGlvbjtcbnVuaWZvcm0gdmVjMiBjZW50ZXI7XG4jaW5jbHVkZSA8Y29tbW9uPlxuI2luY2x1ZGUgPHV2X3BhcnNfdmVydGV4PlxuI2luY2x1ZGUgPGZvZ19wYXJzX3ZlcnRleD5cbiNpbmNsdWRlIDxsb2dkZXB0aGJ1Zl9wYXJzX3ZlcnRleD5cbiNpbmNsdWRlIDxjbGlwcGluZ19wbGFuZXNfcGFyc192ZXJ0ZXg+XG52b2lkIG1haW4oKSB7XG5cdCNpbmNsdWRlIDx1dl92ZXJ0ZXg+XG5cdHZlYzQgbXZQb3NpdGlvbiA9IG1vZGVsVmlld01hdHJpeCAqIHZlYzQoIDAuMCwgMC4wLCAwLjAsIDEuMCApO1xuXHR2ZWMyIHNjYWxlO1xuXHRzY2FsZS54ID0gbGVuZ3RoKCB2ZWMzKCBtb2RlbE1hdHJpeFsgMCBdLngsIG1vZGVsTWF0cml4WyAwIF0ueSwgbW9kZWxNYXRyaXhbIDAgXS56ICkgKTtcblx0c2NhbGUueSA9IGxlbmd0aCggdmVjMyggbW9kZWxNYXRyaXhbIDEgXS54LCBtb2RlbE1hdHJpeFsgMSBdLnksIG1vZGVsTWF0cml4WyAxIF0ueiApICk7XG5cdCNpZm5kZWYgVVNFX1NJWkVBVFRFTlVBVElPTlxuXHRcdGJvb2wgaXNQZXJzcGVjdGl2ZSA9IGlzUGVyc3BlY3RpdmVNYXRyaXgoIHByb2plY3Rpb25NYXRyaXggKTtcblx0XHRpZiAoIGlzUGVyc3BlY3RpdmUgKSBzY2FsZSAqPSAtIG12UG9zaXRpb24uejtcblx0I2VuZGlmXG5cdHZlYzIgYWxpZ25lZFBvc2l0aW9uID0gKCBwb3NpdGlvbi54eSAtICggY2VudGVyIC0gdmVjMiggMC41ICkgKSApICogc2NhbGU7XG5cdHZlYzIgcm90YXRlZFBvc2l0aW9uO1xuXHRyb3RhdGVkUG9zaXRpb24ueCA9IGNvcyggcm90YXRpb24gKSAqIGFsaWduZWRQb3NpdGlvbi54IC0gc2luKCByb3RhdGlvbiApICogYWxpZ25lZFBvc2l0aW9uLnk7XG5cdHJvdGF0ZWRQb3NpdGlvbi55ID0gc2luKCByb3RhdGlvbiApICogYWxpZ25lZFBvc2l0aW9uLnggKyBjb3MoIHJvdGF0aW9uICkgKiBhbGlnbmVkUG9zaXRpb24ueTtcblx0bXZQb3NpdGlvbi54eSArPSByb3RhdGVkUG9zaXRpb247XG5cdGdsX1Bvc2l0aW9uID0gcHJvamVjdGlvbk1hdHJpeCAqIG12UG9zaXRpb247XG5cdCNpbmNsdWRlIDxsb2dkZXB0aGJ1Zl92ZXJ0ZXg+XG5cdCNpbmNsdWRlIDxjbGlwcGluZ19wbGFuZXNfdmVydGV4PlxuXHQjaW5jbHVkZSA8Zm9nX3ZlcnRleD5cbn0ifSxOZXQ9e2NvbW1vbjp7ZGlmZnVzZTp7dmFsdWU6bmV3IE9udCgxNTY1ODczNCl9LG9wYWNpdHk6e3ZhbHVlOjF9LG1hcDp7dmFsdWU6bnVsbH0sdXZUcmFuc2Zvcm06e3ZhbHVlOm5ldyBHOX0sdXYyVHJhbnNmb3JtOnt2YWx1ZTpuZXcgRzl9LGFscGhhTWFwOnt2YWx1ZTpudWxsfX0sc3BlY3VsYXJtYXA6e3NwZWN1bGFyTWFwOnt2YWx1ZTpudWxsfX0sZW52bWFwOntlbnZNYXA6e3ZhbHVlOm51bGx9LGZsaXBFbnZNYXA6e3ZhbHVlOi0xfSxyZWZsZWN0aXZpdHk6e3ZhbHVlOjF9LHJlZnJhY3Rpb25SYXRpbzp7dmFsdWU6Ljk4fSxtYXhNaXBMZXZlbDp7dmFsdWU6MH19LGFvbWFwOnthb01hcDp7dmFsdWU6bnVsbH0sYW9NYXBJbnRlbnNpdHk6e3ZhbHVlOjF9fSxsaWdodG1hcDp7bGlnaHRNYXA6e3ZhbHVlOm51bGx9LGxpZ2h0TWFwSW50ZW5zaXR5Ont2YWx1ZToxfX0sZW1pc3NpdmVtYXA6e2VtaXNzaXZlTWFwOnt2YWx1ZTpudWxsfX0sYnVtcG1hcDp7YnVtcE1hcDp7dmFsdWU6bnVsbH0sYnVtcFNjYWxlOnt2YWx1ZToxfX0sbm9ybWFsbWFwOntub3JtYWxNYXA6e3ZhbHVlOm51bGx9LG5vcm1hbFNjYWxlOnt2YWx1ZTpuZXcgVzkoMSwxKX19LGRpc3BsYWNlbWVudG1hcDp7ZGlzcGxhY2VtZW50TWFwOnt2YWx1ZTpudWxsfSxkaXNwbGFjZW1lbnRTY2FsZTp7dmFsdWU6MX0sZGlzcGxhY2VtZW50Qmlhczp7dmFsdWU6MH19LHJvdWdobmVzc21hcDp7cm91Z2huZXNzTWFwOnt2YWx1ZTpudWxsfX0sbWV0YWxuZXNzbWFwOnttZXRhbG5lc3NNYXA6e3ZhbHVlOm51bGx9fSxncmFkaWVudG1hcDp7Z3JhZGllbnRNYXA6e3ZhbHVlOm51bGx9fSxmb2c6e2ZvZ0RlbnNpdHk6e3ZhbHVlOjI1ZS01fSxmb2dOZWFyOnt2YWx1ZToxfSxmb2dGYXI6e3ZhbHVlOjJlM30sZm9nQ29sb3I6e3ZhbHVlOm5ldyBPbnQoMTY3NzcyMTUpfX0sbGlnaHRzOnthbWJpZW50TGlnaHRDb2xvcjp7dmFsdWU6W119LGxpZ2h0UHJvYmU6e3ZhbHVlOltdfSxkaXJlY3Rpb25hbExpZ2h0czp7dmFsdWU6W10scHJvcGVydGllczp7ZGlyZWN0aW9uOnt9LGNvbG9yOnt9fX0sZGlyZWN0aW9uYWxMaWdodFNoYWRvd3M6e3ZhbHVlOltdLHByb3BlcnRpZXM6e3NoYWRvd0JpYXM6e30sc2hhZG93Tm9ybWFsQmlhczp7fSxzaGFkb3dSYWRpdXM6e30sc2hhZG93TWFwU2l6ZTp7fX19LGRpcmVjdGlvbmFsU2hhZG93TWFwOnt2YWx1ZTpbXX0sZGlyZWN0aW9uYWxTaGFkb3dNYXRyaXg6e3ZhbHVlOltdfSxzcG90TGlnaHRzOnt2YWx1ZTpbXSxwcm9wZXJ0aWVzOntjb2xvcjp7fSxwb3NpdGlvbjp7fSxkaXJlY3Rpb246e30sZGlzdGFuY2U6e30sY29uZUNvczp7fSxwZW51bWJyYUNvczp7fSxkZWNheTp7fX19LHNwb3RMaWdodFNoYWRvd3M6e3ZhbHVlOltdLHByb3BlcnRpZXM6e3NoYWRvd0JpYXM6e30sc2hhZG93Tm9ybWFsQmlhczp7fSxzaGFkb3dSYWRpdXM6e30sc2hhZG93TWFwU2l6ZTp7fX19LHNwb3RTaGFkb3dNYXA6e3ZhbHVlOltdfSxzcG90U2hhZG93TWF0cml4Ont2YWx1ZTpbXX0scG9pbnRMaWdodHM6e3ZhbHVlOltdLHByb3BlcnRpZXM6e2NvbG9yOnt9LHBvc2l0aW9uOnt9LGRlY2F5Ont9LGRpc3RhbmNlOnt9fX0scG9pbnRMaWdodFNoYWRvd3M6e3ZhbHVlOltdLHByb3BlcnRpZXM6e3NoYWRvd0JpYXM6e30sc2hhZG93Tm9ybWFsQmlhczp7fSxzaGFkb3dSYWRpdXM6e30sc2hhZG93TWFwU2l6ZTp7fSxzaGFkb3dDYW1lcmFOZWFyOnt9LHNoYWRvd0NhbWVyYUZhcjp7fX19LHBvaW50U2hhZG93TWFwOnt2YWx1ZTpbXX0scG9pbnRTaGFkb3dNYXRyaXg6e3ZhbHVlOltdfSxoZW1pc3BoZXJlTGlnaHRzOnt2YWx1ZTpbXSxwcm9wZXJ0aWVzOntkaXJlY3Rpb246e30sc2t5Q29sb3I6e30sZ3JvdW5kQ29sb3I6e319fSxyZWN0QXJlYUxpZ2h0czp7dmFsdWU6W10scHJvcGVydGllczp7Y29sb3I6e30scG9zaXRpb246e30sd2lkdGg6e30saGVpZ2h0Ont9fX0sbHRjXzE6e3ZhbHVlOm51bGx9LGx0Y18yOnt2YWx1ZTpudWxsfX0scG9pbnRzOntkaWZmdXNlOnt2YWx1ZTpuZXcgT250KDE1NjU4NzM0KX0sb3BhY2l0eTp7dmFsdWU6MX0sc2l6ZTp7dmFsdWU6MX0sc2NhbGU6e3ZhbHVlOjF9LG1hcDp7dmFsdWU6bnVsbH0sYWxwaGFNYXA6e3ZhbHVlOm51bGx9LHV2VHJhbnNmb3JtOnt2YWx1ZTpuZXcgRzl9fSxzcHJpdGU6e2RpZmZ1c2U6e3ZhbHVlOm5ldyBPbnQoMTU2NTg3MzQpfSxvcGFjaXR5Ont2YWx1ZToxfSxjZW50ZXI6e3ZhbHVlOm5ldyBXOSguNSwuNSl9LHJvdGF0aW9uOnt2YWx1ZTowfSxtYXA6e3ZhbHVlOm51bGx9LGFscGhhTWFwOnt2YWx1ZTpudWxsfSx1dlRyYW5zZm9ybTp7dmFsdWU6bmV3IEc5fX19LEZldD17YmFzaWM6e3VuaWZvcm1zOl9ldChbTmV0LmNvbW1vbixOZXQuc3BlY3VsYXJtYXAsTmV0LmVudm1hcCxOZXQuYW9tYXAsTmV0LmxpZ2h0bWFwLE5ldC5mb2ddKSx2ZXJ0ZXhTaGFkZXI6SWV0Lm1lc2hiYXNpY192ZXJ0LGZyYWdtZW50U2hhZGVyOklldC5tZXNoYmFzaWNfZnJhZ30sbGFtYmVydDp7dW5pZm9ybXM6X2V0KFtOZXQuY29tbW9uLE5ldC5zcGVjdWxhcm1hcCxOZXQuZW52bWFwLE5ldC5hb21hcCxOZXQubGlnaHRtYXAsTmV0LmVtaXNzaXZlbWFwLE5ldC5mb2csTmV0LmxpZ2h0cyx7ZW1pc3NpdmU6e3ZhbHVlOm5ldyBPbnQoMCl9fV0pLHZlcnRleFNoYWRlcjpJZXQubWVzaGxhbWJlcnRfdmVydCxmcmFnbWVudFNoYWRlcjpJZXQubWVzaGxhbWJlcnRfZnJhZ30scGhvbmc6e3VuaWZvcm1zOl9ldChbTmV0LmNvbW1vbixOZXQuc3BlY3VsYXJtYXAsTmV0LmVudm1hcCxOZXQuYW9tYXAsTmV0LmxpZ2h0bWFwLE5ldC5lbWlzc2l2ZW1hcCxOZXQuYnVtcG1hcCxOZXQubm9ybWFsbWFwLE5ldC5kaXNwbGFjZW1lbnRtYXAsTmV0LmZvZyxOZXQubGlnaHRzLHtlbWlzc2l2ZTp7dmFsdWU6bmV3IE9udCgwKX0sc3BlY3VsYXI6e3ZhbHVlOm5ldyBPbnQoMTExODQ4MSl9LHNoaW5pbmVzczp7dmFsdWU6MzB9fV0pLHZlcnRleFNoYWRlcjpJZXQubWVzaHBob25nX3ZlcnQsZnJhZ21lbnRTaGFkZXI6SWV0Lm1lc2hwaG9uZ19mcmFnfSxzdGFuZGFyZDp7dW5pZm9ybXM6X2V0KFtOZXQuY29tbW9uLE5ldC5lbnZtYXAsTmV0LmFvbWFwLE5ldC5saWdodG1hcCxOZXQuZW1pc3NpdmVtYXAsTmV0LmJ1bXBtYXAsTmV0Lm5vcm1hbG1hcCxOZXQuZGlzcGxhY2VtZW50bWFwLE5ldC5yb3VnaG5lc3NtYXAsTmV0Lm1ldGFsbmVzc21hcCxOZXQuZm9nLE5ldC5saWdodHMse2VtaXNzaXZlOnt2YWx1ZTpuZXcgT250KDApfSxyb3VnaG5lc3M6e3ZhbHVlOjF9LG1ldGFsbmVzczp7dmFsdWU6MH0sZW52TWFwSW50ZW5zaXR5Ont2YWx1ZToxfX1dKSx2ZXJ0ZXhTaGFkZXI6SWV0Lm1lc2hwaHlzaWNhbF92ZXJ0LGZyYWdtZW50U2hhZGVyOklldC5tZXNocGh5c2ljYWxfZnJhZ30sdG9vbjp7dW5pZm9ybXM6X2V0KFtOZXQuY29tbW9uLE5ldC5hb21hcCxOZXQubGlnaHRtYXAsTmV0LmVtaXNzaXZlbWFwLE5ldC5idW1wbWFwLE5ldC5ub3JtYWxtYXAsTmV0LmRpc3BsYWNlbWVudG1hcCxOZXQuZ3JhZGllbnRtYXAsTmV0LmZvZyxOZXQubGlnaHRzLHtlbWlzc2l2ZTp7dmFsdWU6bmV3IE9udCgwKX19XSksdmVydGV4U2hhZGVyOklldC5tZXNodG9vbl92ZXJ0LGZyYWdtZW50U2hhZGVyOklldC5tZXNodG9vbl9mcmFnfSxtYXRjYXA6e3VuaWZvcm1zOl9ldChbTmV0LmNvbW1vbixOZXQuYnVtcG1hcCxOZXQubm9ybWFsbWFwLE5ldC5kaXNwbGFjZW1lbnRtYXAsTmV0LmZvZyx7bWF0Y2FwOnt2YWx1ZTpudWxsfX1dKSx2ZXJ0ZXhTaGFkZXI6SWV0Lm1lc2htYXRjYXBfdmVydCxmcmFnbWVudFNoYWRlcjpJZXQubWVzaG1hdGNhcF9mcmFnfSxwb2ludHM6e3VuaWZvcm1zOl9ldChbTmV0LnBvaW50cyxOZXQuZm9nXSksdmVydGV4U2hhZGVyOklldC5wb2ludHNfdmVydCxmcmFnbWVudFNoYWRlcjpJZXQucG9pbnRzX2ZyYWd9LGRhc2hlZDp7dW5pZm9ybXM6X2V0KFtOZXQuY29tbW9uLE5ldC5mb2cse3NjYWxlOnt2YWx1ZToxfSxkYXNoU2l6ZTp7dmFsdWU6MX0sdG90YWxTaXplOnt2YWx1ZToyfX1dKSx2ZXJ0ZXhTaGFkZXI6SWV0LmxpbmVkYXNoZWRfdmVydCxmcmFnbWVudFNoYWRlcjpJZXQubGluZWRhc2hlZF9mcmFnfSxkZXB0aDp7dW5pZm9ybXM6X2V0KFtOZXQuY29tbW9uLE5ldC5kaXNwbGFjZW1lbnRtYXBdKSx2ZXJ0ZXhTaGFkZXI6SWV0LmRlcHRoX3ZlcnQsZnJhZ21lbnRTaGFkZXI6SWV0LmRlcHRoX2ZyYWd9LG5vcm1hbDp7dW5pZm9ybXM6X2V0KFtOZXQuY29tbW9uLE5ldC5idW1wbWFwLE5ldC5ub3JtYWxtYXAsTmV0LmRpc3BsYWNlbWVudG1hcCx7b3BhY2l0eTp7dmFsdWU6MX19XSksdmVydGV4U2hhZGVyOklldC5ub3JtYWxfdmVydCxmcmFnbWVudFNoYWRlcjpJZXQubm9ybWFsX2ZyYWd9LHNwcml0ZTp7dW5pZm9ybXM6X2V0KFtOZXQuc3ByaXRlLE5ldC5mb2ddKSx2ZXJ0ZXhTaGFkZXI6SWV0LnNwcml0ZV92ZXJ0LGZyYWdtZW50U2hhZGVyOklldC5zcHJpdGVfZnJhZ30sYmFja2dyb3VuZDp7dW5pZm9ybXM6e3V2VHJhbnNmb3JtOnt2YWx1ZTpuZXcgRzl9LHQyRDp7dmFsdWU6bnVsbH19LHZlcnRleFNoYWRlcjpJZXQuYmFja2dyb3VuZF92ZXJ0LGZyYWdtZW50U2hhZGVyOklldC5iYWNrZ3JvdW5kX2ZyYWd9LGN1YmU6e3VuaWZvcm1zOl9ldChbTmV0LmVudm1hcCx7b3BhY2l0eTp7dmFsdWU6MX19XSksdmVydGV4U2hhZGVyOklldC5jdWJlX3ZlcnQsZnJhZ21lbnRTaGFkZXI6SWV0LmN1YmVfZnJhZ30sZXF1aXJlY3Q6e3VuaWZvcm1zOnt0RXF1aXJlY3Q6e3ZhbHVlOm51bGx9fSx2ZXJ0ZXhTaGFkZXI6SWV0LmVxdWlyZWN0X3ZlcnQsZnJhZ21lbnRTaGFkZXI6SWV0LmVxdWlyZWN0X2ZyYWd9LGRpc3RhbmNlUkdCQTp7dW5pZm9ybXM6X2V0KFtOZXQuY29tbW9uLE5ldC5kaXNwbGFjZW1lbnRtYXAse3JlZmVyZW5jZVBvc2l0aW9uOnt2YWx1ZTpuZXcgdHR0fSxuZWFyRGlzdGFuY2U6e3ZhbHVlOjF9LGZhckRpc3RhbmNlOnt2YWx1ZToxZTN9fV0pLHZlcnRleFNoYWRlcjpJZXQuZGlzdGFuY2VSR0JBX3ZlcnQsZnJhZ21lbnRTaGFkZXI6SWV0LmRpc3RhbmNlUkdCQV9mcmFnfSxzaGFkb3c6e3VuaWZvcm1zOl9ldChbTmV0LmxpZ2h0cyxOZXQuZm9nLHtjb2xvcjp7dmFsdWU6bmV3IE9udCgwKX0sb3BhY2l0eTp7dmFsdWU6MX19XSksdmVydGV4U2hhZGVyOklldC5zaGFkb3dfdmVydCxmcmFnbWVudFNoYWRlcjpJZXQuc2hhZG93X2ZyYWd9fTtmdW5jdGlvbiBMZXQodCxuLGUsYSxvKXtjb25zdCByPW5ldyBPbnQoMCk7bGV0IGksYyxzPTAsbD1udWxsLG09MCxkPW51bGw7ZnVuY3Rpb24gZyh0LG4pe2UuYnVmZmVycy5jb2xvci5zZXRDbGVhcih0LnIsdC5nLHQuYixuLG8pfXJldHVybntnZXRDbGVhckNvbG9yOmZ1bmN0aW9uKCl7cmV0dXJuIHJ9LHNldENsZWFyQ29sb3I6ZnVuY3Rpb24odCxuPTEpe3Iuc2V0KHQpLHM9bixnKHIscyl9LGdldENsZWFyQWxwaGE6ZnVuY3Rpb24oKXtyZXR1cm4gc30sc2V0Q2xlYXJBbHBoYTpmdW5jdGlvbih0KXtzPXQsZyhyLHMpfSxyZW5kZXI6ZnVuY3Rpb24gcChlLG8sYix1KXtsZXQgZj0hMD09PW8uaXNTY2VuZT9vLmJhY2tncm91bmQ6bnVsbDtmJiZmLmlzVGV4dHVyZSYmKGY9bi5nZXQoZikpO2NvbnN0IGg9dC54cixfPWguZ2V0U2Vzc2lvbiYmaC5nZXRTZXNzaW9uKCk7XyYmImFkZGl0aXZlIj09PV8uZW52aXJvbm1lbnRCbGVuZE1vZGUmJihmPW51bGwpLG51bGw9PT1mP2cocixzKTpmJiZmLmlzQ29sb3ImJihnKGYsMSksdT0hMCksKHQuYXV0b0NsZWFyfHx1KSYmdC5jbGVhcih0LmF1dG9DbGVhckNvbG9yLHQuYXV0b0NsZWFyRGVwdGgsdC5hdXRvQ2xlYXJTdGVuY2lsKSxmJiYoZi5pc0N1YmVUZXh0dXJlfHxmLmlzV2ViR0xDdWJlUmVuZGVyVGFyZ2V0fHwzMDY9PT1mLm1hcHBpbmcpPyh2b2lkIDA9PT1jJiYoYz1uZXcgYmV0KG5ldyBmZXQoMSwxLDEpLG5ldyBNZXQoe25hbWU6IkJhY2tncm91bmRDdWJlTWF0ZXJpYWwiLHVuaWZvcm1zOmhldChGZXQuY3ViZS51bmlmb3JtcyksdmVydGV4U2hhZGVyOkZldC5jdWJlLnZlcnRleFNoYWRlcixmcmFnbWVudFNoYWRlcjpGZXQuY3ViZS5mcmFnbWVudFNoYWRlcixzaWRlOjEsZGVwdGhUZXN0OiExLGRlcHRoV3JpdGU6ITEsZm9nOiExfSkpLGMuZ2VvbWV0cnkuZGVsZXRlQXR0cmlidXRlKCJub3JtYWwiKSxjLmdlb21ldHJ5LmRlbGV0ZUF0dHJpYnV0ZSgidXYiKSxjLm9uQmVmb3JlUmVuZGVyPWZ1bmN0aW9uKHQsbixlKXt0aGlzLm1hdHJpeFdvcmxkLmNvcHlQb3NpdGlvbihlLm1hdHJpeFdvcmxkKX0sT2JqZWN0LmRlZmluZVByb3BlcnR5KGMubWF0ZXJpYWwsImVudk1hcCIse2dldDpmdW5jdGlvbigpe3JldHVybiB0aGlzLnVuaWZvcm1zLmVudk1hcC52YWx1ZX19KSxhLnVwZGF0ZShjKSksZi5pc1dlYkdMQ3ViZVJlbmRlclRhcmdldCYmKGY9Zi50ZXh0dXJlKSxjLm1hdGVyaWFsLnVuaWZvcm1zLmVudk1hcC52YWx1ZT1mLGMubWF0ZXJpYWwudW5pZm9ybXMuZmxpcEVudk1hcC52YWx1ZT1mLmlzQ3ViZVRleHR1cmUmJmYuX25lZWRzRmxpcEVudk1hcD8tMToxLGw9PT1mJiZtPT09Zi52ZXJzaW9uJiZkPT09dC50b25lTWFwcGluZ3x8KGMubWF0ZXJpYWwubmVlZHNVcGRhdGU9ITAsbD1mLG09Zi52ZXJzaW9uLGQ9dC50b25lTWFwcGluZyksZS51bnNoaWZ0KGMsYy5nZW9tZXRyeSxjLm1hdGVyaWFsLDAsMCxudWxsKSk6ZiYmZi5pc1RleHR1cmUmJih2b2lkIDA9PT1pJiYoaT1uZXcgYmV0KG5ldyBEZXQoMiwyKSxuZXcgTWV0KHtuYW1lOiJCYWNrZ3JvdW5kTWF0ZXJpYWwiLHVuaWZvcm1zOmhldChGZXQuYmFja2dyb3VuZC51bmlmb3JtcyksdmVydGV4U2hhZGVyOkZldC5iYWNrZ3JvdW5kLnZlcnRleFNoYWRlcixmcmFnbWVudFNoYWRlcjpGZXQuYmFja2dyb3VuZC5mcmFnbWVudFNoYWRlcixzaWRlOjAsZGVwdGhUZXN0OiExLGRlcHRoV3JpdGU6ITEsZm9nOiExfSkpLGkuZ2VvbWV0cnkuZGVsZXRlQXR0cmlidXRlKCJub3JtYWwiKSxPYmplY3QuZGVmaW5lUHJvcGVydHkoaS5tYXRlcmlhbCwibWFwIix7Z2V0OmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMudW5pZm9ybXMudDJELnZhbHVlfX0pLGEudXBkYXRlKGkpKSxpLm1hdGVyaWFsLnVuaWZvcm1zLnQyRC52YWx1ZT1mLCEwPT09Zi5tYXRyaXhBdXRvVXBkYXRlJiZmLnVwZGF0ZU1hdHJpeCgpLGkubWF0ZXJpYWwudW5pZm9ybXMudXZUcmFuc2Zvcm0udmFsdWUuY29weShmLm1hdHJpeCksbD09PWYmJm09PT1mLnZlcnNpb24mJmQ9PT10LnRvbmVNYXBwaW5nfHwoaS5tYXRlcmlhbC5uZWVkc1VwZGF0ZT0hMCxsPWYsbT1mLnZlcnNpb24sZD10LnRvbmVNYXBwaW5nKSxlLnVuc2hpZnQoaSxpLmdlb21ldHJ5LGkubWF0ZXJpYWwsMCwwLG51bGwpKX19fWZ1bmN0aW9uIEhldCh0LG4sZSxhKXtjb25zdCBvPXQuZ2V0UGFyYW1ldGVyKDM0OTIxKSxyPWEuaXNXZWJHTDI/bnVsbDpuLmdldCgiT0VTX3ZlcnRleF9hcnJheV9vYmplY3QiKSxpPWEuaXNXZWJHTDJ8fG51bGwhPT1yLGM9e30scz1nKG51bGwpO2xldCBsPXM7ZnVuY3Rpb24gbShuKXtyZXR1cm4gYS5pc1dlYkdMMj90LmJpbmRWZXJ0ZXhBcnJheShuKTpyLmJpbmRWZXJ0ZXhBcnJheU9FUyhuKX1mdW5jdGlvbiBkKG4pe3JldHVybiBhLmlzV2ViR0wyP3QuZGVsZXRlVmVydGV4QXJyYXkobik6ci5kZWxldGVWZXJ0ZXhBcnJheU9FUyhuKX1mdW5jdGlvbiBnKHQpe2NvbnN0IG49W10sZT1bXSxhPVtdO2ZvcihsZXQgdD0wO3Q8bzt0Kyspblt0XT0wLGVbdF09MCxhW3RdPTA7cmV0dXJue2dlb21ldHJ5Om51bGwscHJvZ3JhbTpudWxsLHdpcmVmcmFtZTohMSxuZXdBdHRyaWJ1dGVzOm4sZW5hYmxlZEF0dHJpYnV0ZXM6ZSxhdHRyaWJ1dGVEaXZpc29yczphLG9iamVjdDp0LGF0dHJpYnV0ZXM6e30saW5kZXg6bnVsbH19ZnVuY3Rpb24gcCgpe2NvbnN0IHQ9bC5uZXdBdHRyaWJ1dGVzO2ZvcihsZXQgbj0wLGU9dC5sZW5ndGg7bjxlO24rKyl0W25dPTB9ZnVuY3Rpb24gYih0KXt1KHQsMCl9ZnVuY3Rpb24gdShlLG8pe2NvbnN0IHI9bC5lbmFibGVkQXR0cmlidXRlcyxpPWwuYXR0cmlidXRlRGl2aXNvcnM7bC5uZXdBdHRyaWJ1dGVzW2VdPTEsMD09PXJbZV0mJih0LmVuYWJsZVZlcnRleEF0dHJpYkFycmF5KGUpLHJbZV09MSksaVtlXSE9PW8mJigoYS5pc1dlYkdMMj90Om4uZ2V0KCJBTkdMRV9pbnN0YW5jZWRfYXJyYXlzIikpW2EuaXNXZWJHTDI/InZlcnRleEF0dHJpYkRpdmlzb3IiOiJ2ZXJ0ZXhBdHRyaWJEaXZpc29yQU5HTEUiXShlLG8pLGlbZV09byl9ZnVuY3Rpb24gZigpe2NvbnN0IG49bC5uZXdBdHRyaWJ1dGVzLGU9bC5lbmFibGVkQXR0cmlidXRlcztmb3IobGV0IGE9MCxvPWUubGVuZ3RoO2E8bzthKyspZVthXSE9PW5bYV0mJih0LmRpc2FibGVWZXJ0ZXhBdHRyaWJBcnJheShhKSxlW2FdPTApfWZ1bmN0aW9uIGgobixlLG8scixpLGMpeyEwIT09YS5pc1dlYkdMMnx8NTEyNCE9PW8mJjUxMjUhPT1vP3QudmVydGV4QXR0cmliUG9pbnRlcihuLGUsbyxyLGksYyk6dC52ZXJ0ZXhBdHRyaWJJUG9pbnRlcihuLGUsbyxpLGMpfWZ1bmN0aW9uIF8oKXtDKCksbCE9PXMmJihsPXMsbShsLm9iamVjdCkpfWZ1bmN0aW9uIEMoKXtzLmdlb21ldHJ5PW51bGwscy5wcm9ncmFtPW51bGwscy53aXJlZnJhbWU9ITF9cmV0dXJue3NldHVwOmZ1bmN0aW9uIE0obyxzLGQsXyxDKXtsZXQgTT0hMTtpZihpKXtjb25zdCBuPShmdW5jdGlvbiBPKG4sZSxvKXtjb25zdCBpPSEwPT09by53aXJlZnJhbWU7bGV0IHM9Y1tuLmlkXTt2b2lkIDA9PT1zJiYocz17fSxjW24uaWRdPXMpO2xldCBsPXNbZS5pZF07dm9pZCAwPT09bCYmKGw9e30sc1tlLmlkXT1sKTtsZXQgbT1sW2ldO3JldHVybiB2b2lkIDA9PT1tJiYobT1nKChmdW5jdGlvbiBkKCl7cmV0dXJuIGEuaXNXZWJHTDI/dC5jcmVhdGVWZXJ0ZXhBcnJheSgpOnIuY3JlYXRlVmVydGV4QXJyYXlPRVMoKX0pKCkpLGxbaV09bSksbX0pKF8sZCxzKTtsIT09biYmKGw9bixtKGwub2JqZWN0KSksTT0oZnVuY3Rpb24gUCh0LG4pe2NvbnN0IGU9bC5hdHRyaWJ1dGVzLGE9dC5hdHRyaWJ1dGVzO2xldCBvPTA7Zm9yKGNvbnN0IHQgaW4gYSl7Y29uc3Qgbj1lW3RdLHI9YVt0XTtpZih2b2lkIDA9PT1uKXJldHVybiEwO2lmKG4uYXR0cmlidXRlIT09cilyZXR1cm4hMDtpZihuLmRhdGEhPT1yLmRhdGEpcmV0dXJuITA7bysrfXJldHVybiBsLmF0dHJpYnV0ZXNOdW0hPT1vfHxsLmluZGV4IT09bn0pKF8sQyksTSYmKGZ1bmN0aW9uIHgodCxuKXtjb25zdCBlPXt9LGE9dC5hdHRyaWJ1dGVzO2xldCBvPTA7Zm9yKGNvbnN0IHQgaW4gYSl7Y29uc3Qgbj1hW3RdLHI9e307ci5hdHRyaWJ1dGU9bixuLmRhdGEmJihyLmRhdGE9bi5kYXRhKSxlW3RdPXIsbysrfWwuYXR0cmlidXRlcz1lLGwuYXR0cmlidXRlc051bT1vLGwuaW5kZXg9bn0pKF8sQyl9ZWxzZXtjb25zdCB0PSEwPT09cy53aXJlZnJhbWU7bC5nZW9tZXRyeT09PV8uaWQmJmwucHJvZ3JhbT09PWQuaWQmJmwud2lyZWZyYW1lPT09dHx8KGwuZ2VvbWV0cnk9Xy5pZCxsLnByb2dyYW09ZC5pZCxsLndpcmVmcmFtZT10LE09ITApfSEwPT09by5pc0luc3RhbmNlZE1lc2gmJihNPSEwKSxudWxsIT09QyYmZS51cGRhdGUoQywzNDk2MyksTSYmKChmdW5jdGlvbiB5KG8scixpLGMpe2lmKCExPT09YS5pc1dlYkdMMiYmKG8uaXNJbnN0YW5jZWRNZXNofHxjLmlzSW5zdGFuY2VkQnVmZmVyR2VvbWV0cnkpJiZudWxsPT09bi5nZXQoIkFOR0xFX2luc3RhbmNlZF9hcnJheXMiKSlyZXR1cm47cCgpO2NvbnN0IHM9Yy5hdHRyaWJ1dGVzLGw9aS5nZXRBdHRyaWJ1dGVzKCksbT1yLmRlZmF1bHRBdHRyaWJ1dGVWYWx1ZXM7Zm9yKGNvbnN0IG4gaW4gbCl7Y29uc3QgYT1sW25dO2lmKGE+PTApe2NvbnN0IHI9c1tuXTtpZih2b2lkIDAhPT1yKXtjb25zdCBuPXIubm9ybWFsaXplZCxvPXIuaXRlbVNpemUsaT1lLmdldChyKTtpZih2b2lkIDA9PT1pKWNvbnRpbnVlO2NvbnN0IHM9aS5idWZmZXIsbD1pLnR5cGUsbT1pLmJ5dGVzUGVyRWxlbWVudDtpZihyLmlzSW50ZXJsZWF2ZWRCdWZmZXJBdHRyaWJ1dGUpe2NvbnN0IGU9ci5kYXRhLGk9ZS5zdHJpZGUsZD1yLm9mZnNldDtlJiZlLmlzSW5zdGFuY2VkSW50ZXJsZWF2ZWRCdWZmZXI/KHUoYSxlLm1lc2hQZXJBdHRyaWJ1dGUpLHZvaWQgMD09PWMuX21heEluc3RhbmNlQ291bnQmJihjLl9tYXhJbnN0YW5jZUNvdW50PWUubWVzaFBlckF0dHJpYnV0ZSplLmNvdW50KSk6YihhKSx0LmJpbmRCdWZmZXIoMzQ5NjIscyksaChhLG8sbCxuLGkqbSxkKm0pfWVsc2Ugci5pc0luc3RhbmNlZEJ1ZmZlckF0dHJpYnV0ZT8odShhLHIubWVzaFBlckF0dHJpYnV0ZSksdm9pZCAwPT09Yy5fbWF4SW5zdGFuY2VDb3VudCYmKGMuX21heEluc3RhbmNlQ291bnQ9ci5tZXNoUGVyQXR0cmlidXRlKnIuY291bnQpKTpiKGEpLHQuYmluZEJ1ZmZlcigzNDk2MixzKSxoKGEsbyxsLG4sMCwwKX1lbHNlIGlmKCJpbnN0YW5jZU1hdHJpeCI9PT1uKXtjb25zdCBuPWUuZ2V0KG8uaW5zdGFuY2VNYXRyaXgpO2lmKHZvaWQgMD09PW4pY29udGludWU7Y29uc3Qgcj1uLmJ1ZmZlcixpPW4udHlwZTt1KGErMCwxKSx1KGErMSwxKSx1KGErMiwxKSx1KGErMywxKSx0LmJpbmRCdWZmZXIoMzQ5NjIsciksdC52ZXJ0ZXhBdHRyaWJQb2ludGVyKGErMCw0LGksITEsNjQsMCksdC52ZXJ0ZXhBdHRyaWJQb2ludGVyKGErMSw0LGksITEsNjQsMTYpLHQudmVydGV4QXR0cmliUG9pbnRlcihhKzIsNCxpLCExLDY0LDMyKSx0LnZlcnRleEF0dHJpYlBvaW50ZXIoYSszLDQsaSwhMSw2NCw0OCl9ZWxzZSBpZigiaW5zdGFuY2VDb2xvciI9PT1uKXtjb25zdCBuPWUuZ2V0KG8uaW5zdGFuY2VDb2xvcik7aWYodm9pZCAwPT09biljb250aW51ZTtjb25zdCByPW4uYnVmZmVyLGk9bi50eXBlO3UoYSwxKSx0LmJpbmRCdWZmZXIoMzQ5NjIsciksdC52ZXJ0ZXhBdHRyaWJQb2ludGVyKGEsMyxpLCExLDEyLDApfWVsc2UgaWYodm9pZCAwIT09bSl7Y29uc3QgZT1tW25dO2lmKHZvaWQgMCE9PWUpc3dpdGNoKGUubGVuZ3RoKXtjYXNlIDI6dC52ZXJ0ZXhBdHRyaWIyZnYoYSxlKTticmVhaztjYXNlIDM6dC52ZXJ0ZXhBdHRyaWIzZnYoYSxlKTticmVhaztjYXNlIDQ6dC52ZXJ0ZXhBdHRyaWI0ZnYoYSxlKTticmVhaztkZWZhdWx0OnQudmVydGV4QXR0cmliMWZ2KGEsZSl9fX19ZigpfSkobyxzLGQsXyksbnVsbCE9PUMmJnQuYmluZEJ1ZmZlcigzNDk2MyxlLmdldChDKS5idWZmZXIpKX0scmVzZXQ6XyxyZXNldERlZmF1bHRTdGF0ZTpDLGRpc3Bvc2U6ZnVuY3Rpb24gTygpe18oKTtmb3IoY29uc3QgdCBpbiBjKXtjb25zdCBuPWNbdF07Zm9yKGNvbnN0IHQgaW4gbil7Y29uc3QgZT1uW3RdO2Zvcihjb25zdCB0IGluIGUpZChlW3RdLm9iamVjdCksZGVsZXRlIGVbdF07ZGVsZXRlIG5bdF19ZGVsZXRlIGNbdF19fSxyZWxlYXNlU3RhdGVzT2ZHZW9tZXRyeTpmdW5jdGlvbiBQKHQpe2lmKHZvaWQgMD09PWNbdC5pZF0pcmV0dXJuO2NvbnN0IG49Y1t0LmlkXTtmb3IoY29uc3QgdCBpbiBuKXtjb25zdCBlPW5bdF07Zm9yKGNvbnN0IHQgaW4gZSlkKGVbdF0ub2JqZWN0KSxkZWxldGUgZVt0XTtkZWxldGUgblt0XX1kZWxldGUgY1t0LmlkXX0scmVsZWFzZVN0YXRlc09mUHJvZ3JhbTpmdW5jdGlvbiB4KHQpe2Zvcihjb25zdCBuIGluIGMpe2NvbnN0IGU9Y1tuXTtpZih2b2lkIDA9PT1lW3QuaWRdKWNvbnRpbnVlO2NvbnN0IGE9ZVt0LmlkXTtmb3IoY29uc3QgdCBpbiBhKWQoYVt0XS5vYmplY3QpLGRlbGV0ZSBhW3RdO2RlbGV0ZSBlW3QuaWRdfX0saW5pdEF0dHJpYnV0ZXM6cCxlbmFibGVBdHRyaWJ1dGU6YixkaXNhYmxlVW51c2VkQXR0cmlidXRlczpmfX1mdW5jdGlvbiBCZXQodCxuLGUsYSl7Y29uc3Qgbz1hLmlzV2ViR0wyO2xldCByO3RoaXMuc2V0TW9kZT1mdW5jdGlvbiBpKHQpe3I9dH0sdGhpcy5yZW5kZXI9ZnVuY3Rpb24gYyhuLGEpe3QuZHJhd0FycmF5cyhyLG4sYSksZS51cGRhdGUoYSxyLDEpfSx0aGlzLnJlbmRlckluc3RhbmNlcz1mdW5jdGlvbiBzKGEsaSxjKXtpZigwPT09YylyZXR1cm47bGV0IHMsbDtpZihvKXM9dCxsPSJkcmF3QXJyYXlzSW5zdGFuY2VkIjtlbHNlIGlmKHM9bi5nZXQoIkFOR0xFX2luc3RhbmNlZF9hcnJheXMiKSxsPSJkcmF3QXJyYXlzSW5zdGFuY2VkQU5HTEUiLG51bGw9PT1zKXJldHVybiB2b2lkIGNvbnNvbGUuZXJyb3IoIlRIUkVFLldlYkdMQnVmZmVyUmVuZGVyZXI6IHVzaW5nIFRIUkVFLkluc3RhbmNlZEJ1ZmZlckdlb21ldHJ5IGJ1dCBoYXJkd2FyZSBkb2VzIG5vdCBzdXBwb3J0IGV4dGVuc2lvbiBBTkdMRV9pbnN0YW5jZWRfYXJyYXlzLiIpO3NbbF0ocixhLGksYyksZS51cGRhdGUoaSxyLGMpfX1mdW5jdGlvbiBWZXQodCxuLGUpe2xldCBhO2Z1bmN0aW9uIG8obil7aWYoImhpZ2hwIj09PW4pe2lmKHQuZ2V0U2hhZGVyUHJlY2lzaW9uRm9ybWF0KDM1NjMzLDM2MzM4KS5wcmVjaXNpb24+MCYmdC5nZXRTaGFkZXJQcmVjaXNpb25Gb3JtYXQoMzU2MzIsMzYzMzgpLnByZWNpc2lvbj4wKXJldHVybiJoaWdocCI7bj0ibWVkaXVtcCJ9cmV0dXJuIm1lZGl1bXAiPT09biYmdC5nZXRTaGFkZXJQcmVjaXNpb25Gb3JtYXQoMzU2MzMsMzYzMzcpLnByZWNpc2lvbj4wJiZ0LmdldFNoYWRlclByZWNpc2lvbkZvcm1hdCgzNTYzMiwzNjMzNykucHJlY2lzaW9uPjA/Im1lZGl1bXAiOiJsb3dwIn1jb25zdCByPSJ1bmRlZmluZWQiIT10eXBlb2YgV2ViR0wyUmVuZGVyaW5nQ29udGV4dCYmdCBpbnN0YW5jZW9mIFdlYkdMMlJlbmRlcmluZ0NvbnRleHR8fCJ1bmRlZmluZWQiIT10eXBlb2YgV2ViR0wyQ29tcHV0ZVJlbmRlcmluZ0NvbnRleHQmJnQgaW5zdGFuY2VvZiBXZWJHTDJDb21wdXRlUmVuZGVyaW5nQ29udGV4dDtsZXQgaT12b2lkIDAhPT1lLnByZWNpc2lvbj9lLnByZWNpc2lvbjoiaGlnaHAiO2NvbnN0IGM9byhpKTtjIT09aSYmKGNvbnNvbGUud2FybigiVEhSRUUuV2ViR0xSZW5kZXJlcjoiLGksIm5vdCBzdXBwb3J0ZWQsIHVzaW5nIixjLCJpbnN0ZWFkLiIpLGk9Yyk7Y29uc3Qgcz0hMD09PWUubG9nYXJpdGhtaWNEZXB0aEJ1ZmZlcixsPXQuZ2V0UGFyYW1ldGVyKDM0OTMwKSxtPXQuZ2V0UGFyYW1ldGVyKDM1NjYwKSxkPXQuZ2V0UGFyYW1ldGVyKDMzNzkpLGc9dC5nZXRQYXJhbWV0ZXIoMzQwNzYpLHA9dC5nZXRQYXJhbWV0ZXIoMzQ5MjEpLGI9dC5nZXRQYXJhbWV0ZXIoMzYzNDcpLHU9dC5nZXRQYXJhbWV0ZXIoMzYzNDgpLGY9dC5nZXRQYXJhbWV0ZXIoMzYzNDkpLGg9bT4wLF89cnx8ISFuLmdldCgiT0VTX3RleHR1cmVfZmxvYXQiKTtyZXR1cm57aXNXZWJHTDI6cixnZXRNYXhBbmlzb3Ryb3B5OmZ1bmN0aW9uIEMoKXtpZih2b2lkIDAhPT1hKXJldHVybiBhO2NvbnN0IGU9bi5nZXQoIkVYVF90ZXh0dXJlX2ZpbHRlcl9hbmlzb3Ryb3BpYyIpO3JldHVybiBhPW51bGwhPT1lP3QuZ2V0UGFyYW1ldGVyKGUuTUFYX1RFWFRVUkVfTUFYX0FOSVNPVFJPUFlfRVhUKTowLGF9LGdldE1heFByZWNpc2lvbjpvLHByZWNpc2lvbjppLGxvZ2FyaXRobWljRGVwdGhCdWZmZXI6cyxtYXhUZXh0dXJlczpsLG1heFZlcnRleFRleHR1cmVzOm0sbWF4VGV4dHVyZVNpemU6ZCxtYXhDdWJlbWFwU2l6ZTpnLG1heEF0dHJpYnV0ZXM6cCxtYXhWZXJ0ZXhVbmlmb3JtczpiLG1heFZhcnlpbmdzOnUsbWF4RnJhZ21lbnRVbmlmb3JtczpmLHZlcnRleFRleHR1cmVzOmgsZmxvYXRGcmFnbWVudFRleHR1cmVzOl8sZmxvYXRWZXJ0ZXhUZXh0dXJlczpoJiZfLG1heFNhbXBsZXM6cj90LmdldFBhcmFtZXRlcigzNjE4Myk6MH19ZnVuY3Rpb24gamV0KHQpe2NvbnN0IG49dGhpcztsZXQgZT1udWxsLGE9MCxvPSExLHI9ITE7Y29uc3QgaT1uZXcgYW50LGM9bmV3IEc5LHM9e3ZhbHVlOm51bGwsbmVlZHNVcGRhdGU6ITF9O2Z1bmN0aW9uIGwoKXtzLnZhbHVlIT09ZSYmKHMudmFsdWU9ZSxzLm5lZWRzVXBkYXRlPWE+MCksbi5udW1QbGFuZXM9YSxuLm51bUludGVyc2VjdGlvbj0wfWZ1bmN0aW9uIG0odCxlLGEsbyl7Y29uc3Qgcj1udWxsIT09dD90Lmxlbmd0aDowO2xldCBsPW51bGw7aWYoMCE9PXIpe2lmKGw9cy52YWx1ZSwhMCE9PW98fG51bGw9PT1sKXtjb25zdCBuPWErNCpyLG89ZS5tYXRyaXhXb3JsZEludmVyc2U7Yy5nZXROb3JtYWxNYXRyaXgobyksKG51bGw9PT1sfHxsLmxlbmd0aDxuKSYmKGw9bmV3IEZsb2F0MzJBcnJheShuKSk7Zm9yKGxldCBuPTAsZT1hO24hPT1yOysrbixlKz00KWkuY29weSh0W25dKS5hcHBseU1hdHJpeDQobyxjKSxpLm5vcm1hbC50b0FycmF5KGwsZSksbFtlKzNdPWkuY29uc3RhbnR9cy52YWx1ZT1sLHMubmVlZHNVcGRhdGU9ITB9cmV0dXJuIG4ubnVtUGxhbmVzPXIsbi5udW1JbnRlcnNlY3Rpb249MCxsfXRoaXMudW5pZm9ybT1zLHRoaXMubnVtUGxhbmVzPTAsdGhpcy5udW1JbnRlcnNlY3Rpb249MCx0aGlzLmluaXQ9ZnVuY3Rpb24odCxuLHIpe2NvbnN0IGk9MCE9PXQubGVuZ3RofHxufHwwIT09YXx8bztyZXR1cm4gbz1uLGU9bSh0LHIsMCksYT10Lmxlbmd0aCxpfSx0aGlzLmJlZ2luU2hhZG93cz1mdW5jdGlvbigpe3I9ITAsbShudWxsKX0sdGhpcy5lbmRTaGFkb3dzPWZ1bmN0aW9uKCl7cj0hMSxsKCl9LHRoaXMuc2V0U3RhdGU9ZnVuY3Rpb24obixpLGMpe2NvbnN0IGQ9bi5jbGlwcGluZ1BsYW5lcyxnPW4uY2xpcEludGVyc2VjdGlvbixwPW4uY2xpcFNoYWRvd3MsYj10LmdldChuKTtpZighb3x8bnVsbD09PWR8fDA9PT1kLmxlbmd0aHx8ciYmIXApcj9tKG51bGwpOmwoKTtlbHNle2NvbnN0IHQ9cj8wOmEsbj00KnQ7bGV0IG89Yi5jbGlwcGluZ1N0YXRlfHxudWxsO3MudmFsdWU9byxvPW0oZCxpLG4sYyk7Zm9yKGxldCB0PTA7dCE9PW47Kyt0KW9bdF09ZVt0XTtiLmNsaXBwaW5nU3RhdGU9byx0aGlzLm51bUludGVyc2VjdGlvbj1nP3RoaXMubnVtUGxhbmVzOjAsdGhpcy5udW1QbGFuZXMrPXR9fX1mdW5jdGlvbiBVZXQodCl7bGV0IG49bmV3IFdlYWtNYXA7ZnVuY3Rpb24gZSh0LG4pe3JldHVybiAzMDM9PT1uP3QubWFwcGluZz0zMDE6MzA0PT09biYmKHQubWFwcGluZz0zMDIpLHR9ZnVuY3Rpb24gYSh0KXtjb25zdCBlPXQudGFyZ2V0O2UucmVtb3ZlRXZlbnRMaXN0ZW5lcigiZGlzcG9zZSIsYSk7Y29uc3Qgbz1uLmdldChlKTt2b2lkIDAhPT1vJiYobi5kZWxldGUoZSksby5kaXNwb3NlKCkpfXJldHVybntnZXQ6ZnVuY3Rpb24gbyhyKXtpZihyJiZyLmlzVGV4dHVyZSl7Y29uc3Qgbz1yLm1hcHBpbmc7aWYoMzAzPT09b3x8MzA0PT09byl7aWYobi5oYXMocikpcmV0dXJuIGUobi5nZXQocikudGV4dHVyZSxyLm1hcHBpbmcpO3tjb25zdCBvPXIuaW1hZ2U7aWYobyYmby5oZWlnaHQ+MCl7Y29uc3QgaT10LmdldFJlbmRlckxpc3QoKSxjPXQuZ2V0UmVuZGVyVGFyZ2V0KCkscz1uZXcgdmV0KG8uaGVpZ2h0LzIpO3JldHVybiBzLmZyb21FcXVpcmVjdGFuZ3VsYXJUZXh0dXJlKHQsciksbi5zZXQocixzKSx0LnNldFJlbmRlclRhcmdldChjKSx0LnNldFJlbmRlckxpc3QoaSksci5hZGRFdmVudExpc3RlbmVyKCJkaXNwb3NlIixhKSxlKHMudGV4dHVyZSxyLm1hcHBpbmcpfXJldHVybiBudWxsfX19cmV0dXJuIHJ9LGRpc3Bvc2U6ZnVuY3Rpb24gcigpe249bmV3IFdlYWtNYXB9fX1mdW5jdGlvbiBXZXQodCl7Y29uc3Qgbj17fTtmdW5jdGlvbiBlKGUpe2lmKHZvaWQgMCE9PW5bZV0pcmV0dXJuIG5bZV07bGV0IGE7c3dpdGNoKGUpe2Nhc2UiV0VCR0xfZGVwdGhfdGV4dHVyZSI6YT10LmdldEV4dGVuc2lvbigiV0VCR0xfZGVwdGhfdGV4dHVyZSIpfHx0LmdldEV4dGVuc2lvbigiTU9aX1dFQkdMX2RlcHRoX3RleHR1cmUiKXx8dC5nZXRFeHRlbnNpb24oIldFQktJVF9XRUJHTF9kZXB0aF90ZXh0dXJlIik7YnJlYWs7Y2FzZSJFWFRfdGV4dHVyZV9maWx0ZXJfYW5pc290cm9waWMiOmE9dC5nZXRFeHRlbnNpb24oIkVYVF90ZXh0dXJlX2ZpbHRlcl9hbmlzb3Ryb3BpYyIpfHx0LmdldEV4dGVuc2lvbigiTU9aX0VYVF90ZXh0dXJlX2ZpbHRlcl9hbmlzb3Ryb3BpYyIpfHx0LmdldEV4dGVuc2lvbigiV0VCS0lUX0VYVF90ZXh0dXJlX2ZpbHRlcl9hbmlzb3Ryb3BpYyIpO2JyZWFrO2Nhc2UiV0VCR0xfY29tcHJlc3NlZF90ZXh0dXJlX3MzdGMiOmE9dC5nZXRFeHRlbnNpb24oIldFQkdMX2NvbXByZXNzZWRfdGV4dHVyZV9zM3RjIil8fHQuZ2V0RXh0ZW5zaW9uKCJNT1pfV0VCR0xfY29tcHJlc3NlZF90ZXh0dXJlX3MzdGMiKXx8dC5nZXRFeHRlbnNpb24oIldFQktJVF9XRUJHTF9jb21wcmVzc2VkX3RleHR1cmVfczN0YyIpO2JyZWFrO2Nhc2UiV0VCR0xfY29tcHJlc3NlZF90ZXh0dXJlX3B2cnRjIjphPXQuZ2V0RXh0ZW5zaW9uKCJXRUJHTF9jb21wcmVzc2VkX3RleHR1cmVfcHZydGMiKXx8dC5nZXRFeHRlbnNpb24oIldFQktJVF9XRUJHTF9jb21wcmVzc2VkX3RleHR1cmVfcHZydGMiKTticmVhaztkZWZhdWx0OmE9dC5nZXRFeHRlbnNpb24oZSl9cmV0dXJuIG5bZV09YSxhfXJldHVybntoYXM6ZnVuY3Rpb24odCl7cmV0dXJuIG51bGwhPT1lKHQpfSxpbml0OmZ1bmN0aW9uKHQpe3QuaXNXZWJHTDI/ZSgiRVhUX2NvbG9yX2J1ZmZlcl9mbG9hdCIpOihlKCJXRUJHTF9kZXB0aF90ZXh0dXJlIiksZSgiT0VTX3RleHR1cmVfZmxvYXQiKSxlKCJPRVNfdGV4dHVyZV9oYWxmX2Zsb2F0IiksZSgiT0VTX3RleHR1cmVfaGFsZl9mbG9hdF9saW5lYXIiKSxlKCJPRVNfc3RhbmRhcmRfZGVyaXZhdGl2ZXMiKSxlKCJPRVNfZWxlbWVudF9pbmRleF91aW50IiksZSgiT0VTX3ZlcnRleF9hcnJheV9vYmplY3QiKSxlKCJBTkdMRV9pbnN0YW5jZWRfYXJyYXlzIikpLGUoIk9FU190ZXh0dXJlX2Zsb2F0X2xpbmVhciIpLGUoIkVYVF9jb2xvcl9idWZmZXJfaGFsZl9mbG9hdCIpfSxnZXQ6ZnVuY3Rpb24odCl7Y29uc3Qgbj1lKHQpO3JldHVybiBudWxsPT09biYmY29uc29sZS53YXJuKCJUSFJFRS5XZWJHTFJlbmRlcmVyOiAiK3QrIiBleHRlbnNpb24gbm90IHN1cHBvcnRlZC4iKSxufX19ZnVuY3Rpb24gR2V0KHQsbixlLGEpe2NvbnN0IG89e30scj1uZXcgV2Vha01hcDtmdW5jdGlvbiBpKHQpe2NvbnN0IGM9dC50YXJnZXQ7bnVsbCE9PWMuaW5kZXgmJm4ucmVtb3ZlKGMuaW5kZXgpO2Zvcihjb25zdCB0IGluIGMuYXR0cmlidXRlcyluLnJlbW92ZShjLmF0dHJpYnV0ZXNbdF0pO2MucmVtb3ZlRXZlbnRMaXN0ZW5lcigiZGlzcG9zZSIsaSksZGVsZXRlIG9bYy5pZF07Y29uc3Qgcz1yLmdldChjKTtzJiYobi5yZW1vdmUocyksci5kZWxldGUoYykpLGEucmVsZWFzZVN0YXRlc09mR2VvbWV0cnkoYyksITA9PT1jLmlzSW5zdGFuY2VkQnVmZmVyR2VvbWV0cnkmJmRlbGV0ZSBjLl9tYXhJbnN0YW5jZUNvdW50LGUubWVtb3J5Lmdlb21ldHJpZXMtLX1mdW5jdGlvbiBjKHQpe2NvbnN0IGU9W10sYT10LmluZGV4LG89dC5hdHRyaWJ1dGVzLnBvc2l0aW9uO2xldCBpPTA7aWYobnVsbCE9PWEpe2NvbnN0IHQ9YS5hcnJheTtpPWEudmVyc2lvbjtmb3IobGV0IG49MCxhPXQubGVuZ3RoO248YTtuKz0zKXtjb25zdCBhPXRbbiswXSxvPXRbbisxXSxyPXRbbisyXTtlLnB1c2goYSxvLG8scixyLGEpfX1lbHNle2k9by52ZXJzaW9uO2ZvcihsZXQgdD0wLG49by5hcnJheS5sZW5ndGgvMy0xO3Q8bjt0Kz0zKXtjb25zdCBuPXQrMCxhPXQrMSxvPXQrMjtlLnB1c2gobixhLGEsbyxvLG4pfX1jb25zdCBjPW5ldyhIbnQoZSk+NjU1MzU/SW50OlRudCkoZSwxKTtjLnZlcnNpb249aTtjb25zdCBzPXIuZ2V0KHQpO3MmJm4ucmVtb3ZlKHMpLHIuc2V0KHQsYyl9cmV0dXJue2dldDpmdW5jdGlvbiBzKHQsbil7cmV0dXJuITA9PT1vW24uaWRdfHwobi5hZGRFdmVudExpc3RlbmVyKCJkaXNwb3NlIixpKSxvW24uaWRdPSEwLGUubWVtb3J5Lmdlb21ldHJpZXMrKyksbn0sdXBkYXRlOmZ1bmN0aW9uIGwodCl7Y29uc3QgZT10LmF0dHJpYnV0ZXM7Zm9yKGNvbnN0IHQgaW4gZSluLnVwZGF0ZShlW3RdLDM0OTYyKTtjb25zdCBhPXQubW9ycGhBdHRyaWJ1dGVzO2Zvcihjb25zdCB0IGluIGEpe2NvbnN0IGU9YVt0XTtmb3IobGV0IHQ9MCxhPWUubGVuZ3RoO3Q8YTt0Kyspbi51cGRhdGUoZVt0XSwzNDk2Mil9fSxnZXRXaXJlZnJhbWVBdHRyaWJ1dGU6ZnVuY3Rpb24gbSh0KXtjb25zdCBuPXIuZ2V0KHQpO2lmKG4pe2NvbnN0IGU9dC5pbmRleDtudWxsIT09ZSYmbi52ZXJzaW9uPGUudmVyc2lvbiYmYyh0KX1lbHNlIGModCk7cmV0dXJuIHIuZ2V0KHQpfX19ZnVuY3Rpb24gWWV0KHQsbixlLGEpe2NvbnN0IG89YS5pc1dlYkdMMjtsZXQgcixpLGM7dGhpcy5zZXRNb2RlPWZ1bmN0aW9uIHModCl7cj10fSx0aGlzLnNldEluZGV4PWZ1bmN0aW9uIGwodCl7aT10LnR5cGUsYz10LmJ5dGVzUGVyRWxlbWVudH0sdGhpcy5yZW5kZXI9ZnVuY3Rpb24gbShuLGEpe3QuZHJhd0VsZW1lbnRzKHIsYSxpLG4qYyksZS51cGRhdGUoYSxyLDEpfSx0aGlzLnJlbmRlckluc3RhbmNlcz1mdW5jdGlvbiBkKGEscyxsKXtpZigwPT09bClyZXR1cm47bGV0IG0sZDtpZihvKW09dCxkPSJkcmF3RWxlbWVudHNJbnN0YW5jZWQiO2Vsc2UgaWYobT1uLmdldCgiQU5HTEVfaW5zdGFuY2VkX2FycmF5cyIpLGQ9ImRyYXdFbGVtZW50c0luc3RhbmNlZEFOR0xFIixudWxsPT09bSlyZXR1cm4gdm9pZCBjb25zb2xlLmVycm9yKCJUSFJFRS5XZWJHTEluZGV4ZWRCdWZmZXJSZW5kZXJlcjogdXNpbmcgVEhSRUUuSW5zdGFuY2VkQnVmZmVyR2VvbWV0cnkgYnV0IGhhcmR3YXJlIGRvZXMgbm90IHN1cHBvcnQgZXh0ZW5zaW9uIEFOR0xFX2luc3RhbmNlZF9hcnJheXMuIik7bVtkXShyLHMsaSxhKmMsbCksZS51cGRhdGUocyxyLGwpfX1mdW5jdGlvbiBxZXQodCl7Y29uc3Qgbj17ZnJhbWU6MCxjYWxsczowLHRyaWFuZ2xlczowLHBvaW50czowLGxpbmVzOjB9O3JldHVybnttZW1vcnk6e2dlb21ldHJpZXM6MCx0ZXh0dXJlczowfSxyZW5kZXI6bixwcm9ncmFtczpudWxsLGF1dG9SZXNldDohMCxyZXNldDpmdW5jdGlvbiBlKCl7bi5mcmFtZSsrLG4uY2FsbHM9MCxuLnRyaWFuZ2xlcz0wLG4ucG9pbnRzPTAsbi5saW5lcz0wfSx1cGRhdGU6ZnVuY3Rpb24gYSh0LGUsbyl7c3dpdGNoKG4uY2FsbHMrKyxlKXtjYXNlIDQ6bi50cmlhbmdsZXMrPW8qKHQvMyk7YnJlYWs7Y2FzZSAxOm4ubGluZXMrPW8qKHQvMik7YnJlYWs7Y2FzZSAzOm4ubGluZXMrPW8qKHQtMSk7YnJlYWs7Y2FzZSAyOm4ubGluZXMrPW8qdDticmVhaztjYXNlIDA6bi5wb2ludHMrPW8qdDticmVhaztkZWZhdWx0OmNvbnNvbGUuZXJyb3IoIlRIUkVFLldlYkdMSW5mbzogVW5rbm93biBkcmF3IG1vZGU6IixlKX19fX1mdW5jdGlvbiBaZXQodCxuKXtyZXR1cm4gdFswXS1uWzBdfWZ1bmN0aW9uIFhldCh0LG4pe3JldHVybiBNYXRoLmFicyhuWzFdKS1NYXRoLmFicyh0WzFdKX1mdW5jdGlvbiBKZXQodCl7Y29uc3Qgbj17fSxlPW5ldyBGbG9hdDMyQXJyYXkoOCksYT1bXTtmb3IobGV0IHQ9MDt0PDg7dCsrKWFbdF09W3QsMF07cmV0dXJue3VwZGF0ZTpmdW5jdGlvbiBvKHIsaSxjLHMpe2NvbnN0IGw9ci5tb3JwaFRhcmdldEluZmx1ZW5jZXMsbT12b2lkIDA9PT1sPzA6bC5sZW5ndGg7bGV0IGQ9bltpLmlkXTtpZih2b2lkIDA9PT1kKXtkPVtdO2ZvcihsZXQgdD0wO3Q8bTt0KyspZFt0XT1bdCwwXTtuW2kuaWRdPWR9Zm9yKGxldCB0PTA7dDxtO3QrKyl7Y29uc3Qgbj1kW3RdO25bMF09dCxuWzFdPWxbdF19ZC5zb3J0KFhldCk7Zm9yKGxldCB0PTA7dDw4O3QrKyl0PG0mJmRbdF1bMV0/KGFbdF1bMF09ZFt0XVswXSxhW3RdWzFdPWRbdF1bMV0pOihhW3RdWzBdPU51bWJlci5NQVhfU0FGRV9JTlRFR0VSLGFbdF1bMV09MCk7YS5zb3J0KFpldCk7Y29uc3QgZz1jLm1vcnBoVGFyZ2V0cyYmaS5tb3JwaEF0dHJpYnV0ZXMucG9zaXRpb24scD1jLm1vcnBoTm9ybWFscyYmaS5tb3JwaEF0dHJpYnV0ZXMubm9ybWFsO2xldCBiPTA7Zm9yKGxldCB0PTA7dDw4O3QrKyl7Y29uc3Qgbj1hW3RdLG89blswXSxyPW5bMV07byE9PU51bWJlci5NQVhfU0FGRV9JTlRFR0VSJiZyPyhnJiZpLmdldEF0dHJpYnV0ZSgibW9ycGhUYXJnZXQiK3QpIT09Z1tvXSYmaS5zZXRBdHRyaWJ1dGUoIm1vcnBoVGFyZ2V0Iit0LGdbb10pLHAmJmkuZ2V0QXR0cmlidXRlKCJtb3JwaE5vcm1hbCIrdCkhPT1wW29dJiZpLnNldEF0dHJpYnV0ZSgibW9ycGhOb3JtYWwiK3QscFtvXSksZVt0XT1yLGIrPXIpOihnJiYhMD09PWkuaGFzQXR0cmlidXRlKCJtb3JwaFRhcmdldCIrdCkmJmkuZGVsZXRlQXR0cmlidXRlKCJtb3JwaFRhcmdldCIrdCkscCYmITA9PT1pLmhhc0F0dHJpYnV0ZSgibW9ycGhOb3JtYWwiK3QpJiZpLmRlbGV0ZUF0dHJpYnV0ZSgibW9ycGhOb3JtYWwiK3QpLGVbdF09MCl9Y29uc3QgdT1pLm1vcnBoVGFyZ2V0c1JlbGF0aXZlPzE6MS1iO3MuZ2V0VW5pZm9ybXMoKS5zZXRWYWx1ZSh0LCJtb3JwaFRhcmdldEJhc2VJbmZsdWVuY2UiLHUpLHMuZ2V0VW5pZm9ybXMoKS5zZXRWYWx1ZSh0LCJtb3JwaFRhcmdldEluZmx1ZW5jZXMiLGUpfX19ZnVuY3Rpb24gUWV0KHQsbixlLGEpe2xldCBvPW5ldyBXZWFrTWFwO2Z1bmN0aW9uIHIodCl7Y29uc3Qgbj10LnRhcmdldDtuLnJlbW92ZUV2ZW50TGlzdGVuZXIoImRpc3Bvc2UiLHIpLGUucmVtb3ZlKG4uaW5zdGFuY2VNYXRyaXgpLG51bGwhPT1uLmluc3RhbmNlQ29sb3ImJmUucmVtb3ZlKG4uaW5zdGFuY2VDb2xvcil9cmV0dXJue3VwZGF0ZTpmdW5jdGlvbiBpKHQpe2NvbnN0IGk9YS5yZW5kZXIuZnJhbWUsYz1uLmdldCh0LHQuZ2VvbWV0cnkpO3JldHVybiBvLmdldChjKSE9PWkmJihuLnVwZGF0ZShjKSxvLnNldChjLGkpKSx0LmlzSW5zdGFuY2VkTWVzaCYmKCExPT09dC5oYXNFdmVudExpc3RlbmVyKCJkaXNwb3NlIixyKSYmdC5hZGRFdmVudExpc3RlbmVyKCJkaXNwb3NlIixyKSxlLnVwZGF0ZSh0Lmluc3RhbmNlTWF0cml4LDM0OTYyKSxudWxsIT09dC5pbnN0YW5jZUNvbG9yJiZlLnVwZGF0ZSh0Lmluc3RhbmNlQ29sb3IsMzQ5NjIpKSxjfSxkaXNwb3NlOmZ1bmN0aW9uIGMoKXtvPW5ldyBXZWFrTWFwfX19ZnVuY3Rpb24gS2V0KHQ9bnVsbCxuPTEsZT0xLGE9MSl7WDkuY2FsbCh0aGlzLG51bGwpLHRoaXMuaW1hZ2U9e2RhdGE6dCx3aWR0aDpuLGhlaWdodDplLGRlcHRoOmF9LHRoaXMubWFnRmlsdGVyPWg5LHRoaXMubWluRmlsdGVyPWg5LHRoaXMud3JhcFI9dTksdGhpcy5nZW5lcmF0ZU1pcG1hcHM9ITEsdGhpcy5mbGlwWT0hMSx0aGlzLm5lZWRzVXBkYXRlPSEwfWZ1bmN0aW9uICRldCh0PW51bGwsbj0xLGU9MSxhPTEpe1g5LmNhbGwodGhpcyxudWxsKSx0aGlzLmltYWdlPXtkYXRhOnQsd2lkdGg6bixoZWlnaHQ6ZSxkZXB0aDphfSx0aGlzLm1hZ0ZpbHRlcj1oOSx0aGlzLm1pbkZpbHRlcj1oOSx0aGlzLndyYXBSPXU5LHRoaXMuZ2VuZXJhdGVNaXBtYXBzPSExLHRoaXMuZmxpcFk9ITEsdGhpcy5uZWVkc1VwZGF0ZT0hMH1GZXQucGh5c2ljYWw9e3VuaWZvcm1zOl9ldChbRmV0LnN0YW5kYXJkLnVuaWZvcm1zLHtjbGVhcmNvYXQ6e3ZhbHVlOjB9LGNsZWFyY29hdE1hcDp7dmFsdWU6bnVsbH0sY2xlYXJjb2F0Um91Z2huZXNzOnt2YWx1ZTowfSxjbGVhcmNvYXRSb3VnaG5lc3NNYXA6e3ZhbHVlOm51bGx9LGNsZWFyY29hdE5vcm1hbFNjYWxlOnt2YWx1ZTpuZXcgVzkoMSwxKX0sY2xlYXJjb2F0Tm9ybWFsTWFwOnt2YWx1ZTpudWxsfSxzaGVlbjp7dmFsdWU6bmV3IE9udCgwKX0sdHJhbnNtaXNzaW9uOnt2YWx1ZTowfSx0cmFuc21pc3Npb25NYXA6e3ZhbHVlOm51bGx9fV0pLHZlcnRleFNoYWRlcjpJZXQubWVzaHBoeXNpY2FsX3ZlcnQsZnJhZ21lbnRTaGFkZXI6SWV0Lm1lc2hwaHlzaWNhbF9mcmFnfSwoS2V0LnByb3RvdHlwZT1PYmplY3QuY3JlYXRlKFg5LnByb3RvdHlwZSkpLmNvbnN0cnVjdG9yPUtldCxLZXQucHJvdG90eXBlLmlzRGF0YVRleHR1cmUyREFycmF5PSEwLCgkZXQucHJvdG90eXBlPU9iamVjdC5jcmVhdGUoWDkucHJvdG90eXBlKSkuY29uc3RydWN0b3I9JGV0LCRldC5wcm90b3R5cGUuaXNEYXRhVGV4dHVyZTNEPSEwO2NvbnN0IHRhdD1uZXcgWDksbmF0PW5ldyBLZXQsZWF0PW5ldyAkZXQsYWF0PW5ldyBrZXQsb2F0PVtdLHJhdD1bXSxpYXQ9bmV3IEZsb2F0MzJBcnJheSgxNiksY2F0PW5ldyBGbG9hdDMyQXJyYXkoOSksc2F0PW5ldyBGbG9hdDMyQXJyYXkoNCk7ZnVuY3Rpb24gbGF0KHQsbixlKXtjb25zdCBhPXRbMF07aWYoYTw9MHx8YT4wKXJldHVybiB0O2NvbnN0IG89biplO2xldCByPW9hdFtvXTtpZih2b2lkIDA9PT1yJiYocj1uZXcgRmxvYXQzMkFycmF5KG8pLG9hdFtvXT1yKSwwIT09bil7YS50b0FycmF5KHIsMCk7Zm9yKGxldCBhPTEsbz0wO2EhPT1uOysrYSlvKz1lLHRbYV0udG9BcnJheShyLG8pfXJldHVybiByfWZ1bmN0aW9uIG1hdCh0LG4pe2lmKHQubGVuZ3RoIT09bi5sZW5ndGgpcmV0dXJuITE7Zm9yKGxldCBlPTAsYT10Lmxlbmd0aDtlPGE7ZSsrKWlmKHRbZV0hPT1uW2VdKXJldHVybiExO3JldHVybiEwfWZ1bmN0aW9uIGRhdCh0LG4pe2ZvcihsZXQgZT0wLGE9bi5sZW5ndGg7ZTxhO2UrKyl0W2VdPW5bZV19ZnVuY3Rpb24gZ2F0KHQsbil7bGV0IGU9cmF0W25dO3ZvaWQgMD09PWUmJihlPW5ldyBJbnQzMkFycmF5KG4pLHJhdFtuXT1lKTtmb3IobGV0IGE9MDthIT09bjsrK2EpZVthXT10LmFsbG9jYXRlVGV4dHVyZVVuaXQoKTtyZXR1cm4gZX1mdW5jdGlvbiBwYXQodCxuKXtjb25zdCBlPXRoaXMuY2FjaGU7ZVswXSE9PW4mJih0LnVuaWZvcm0xZih0aGlzLmFkZHIsbiksZVswXT1uKX1mdW5jdGlvbiBiYXQodCxuKXtjb25zdCBlPXRoaXMuY2FjaGU7aWYodm9pZCAwIT09bi54KWVbMF09PT1uLngmJmVbMV09PT1uLnl8fCh0LnVuaWZvcm0yZih0aGlzLmFkZHIsbi54LG4ueSksZVswXT1uLngsZVsxXT1uLnkpO2Vsc2V7aWYobWF0KGUsbikpcmV0dXJuO3QudW5pZm9ybTJmdih0aGlzLmFkZHIsbiksZGF0KGUsbil9fWZ1bmN0aW9uIHVhdCh0LG4pe2NvbnN0IGU9dGhpcy5jYWNoZTtpZih2b2lkIDAhPT1uLngpZVswXT09PW4ueCYmZVsxXT09PW4ueSYmZVsyXT09PW4uenx8KHQudW5pZm9ybTNmKHRoaXMuYWRkcixuLngsbi55LG4ueiksZVswXT1uLngsZVsxXT1uLnksZVsyXT1uLnopO2Vsc2UgaWYodm9pZCAwIT09bi5yKWVbMF09PT1uLnImJmVbMV09PT1uLmcmJmVbMl09PT1uLmJ8fCh0LnVuaWZvcm0zZih0aGlzLmFkZHIsbi5yLG4uZyxuLmIpLGVbMF09bi5yLGVbMV09bi5nLGVbMl09bi5iKTtlbHNle2lmKG1hdChlLG4pKXJldHVybjt0LnVuaWZvcm0zZnYodGhpcy5hZGRyLG4pLGRhdChlLG4pfX1mdW5jdGlvbiBmYXQodCxuKXtjb25zdCBlPXRoaXMuY2FjaGU7aWYodm9pZCAwIT09bi54KWVbMF09PT1uLngmJmVbMV09PT1uLnkmJmVbMl09PT1uLnomJmVbM109PT1uLnd8fCh0LnVuaWZvcm00Zih0aGlzLmFkZHIsbi54LG4ueSxuLnosbi53KSxlWzBdPW4ueCxlWzFdPW4ueSxlWzJdPW4ueixlWzNdPW4udyk7ZWxzZXtpZihtYXQoZSxuKSlyZXR1cm47dC51bmlmb3JtNGZ2KHRoaXMuYWRkcixuKSxkYXQoZSxuKX19ZnVuY3Rpb24gaGF0KHQsbil7Y29uc3QgZT10aGlzLmNhY2hlLGE9bi5lbGVtZW50cztpZih2b2lkIDA9PT1hKXtpZihtYXQoZSxuKSlyZXR1cm47dC51bmlmb3JtTWF0cml4MmZ2KHRoaXMuYWRkciwhMSxuKSxkYXQoZSxuKX1lbHNle2lmKG1hdChlLGEpKXJldHVybjtzYXQuc2V0KGEpLHQudW5pZm9ybU1hdHJpeDJmdih0aGlzLmFkZHIsITEsc2F0KSxkYXQoZSxhKX19ZnVuY3Rpb24gX2F0KHQsbil7Y29uc3QgZT10aGlzLmNhY2hlLGE9bi5lbGVtZW50cztpZih2b2lkIDA9PT1hKXtpZihtYXQoZSxuKSlyZXR1cm47dC51bmlmb3JtTWF0cml4M2Z2KHRoaXMuYWRkciwhMSxuKSxkYXQoZSxuKX1lbHNle2lmKG1hdChlLGEpKXJldHVybjtjYXQuc2V0KGEpLHQudW5pZm9ybU1hdHJpeDNmdih0aGlzLmFkZHIsITEsY2F0KSxkYXQoZSxhKX19ZnVuY3Rpb24gQ2F0KHQsbil7Y29uc3QgZT10aGlzLmNhY2hlLGE9bi5lbGVtZW50cztpZih2b2lkIDA9PT1hKXtpZihtYXQoZSxuKSlyZXR1cm47dC51bmlmb3JtTWF0cml4NGZ2KHRoaXMuYWRkciwhMSxuKSxkYXQoZSxuKX1lbHNle2lmKG1hdChlLGEpKXJldHVybjtpYXQuc2V0KGEpLHQudW5pZm9ybU1hdHJpeDRmdih0aGlzLmFkZHIsITEsaWF0KSxkYXQoZSxhKX19ZnVuY3Rpb24gTWF0KHQsbixlKXtjb25zdCBhPXRoaXMuY2FjaGUsbz1lLmFsbG9jYXRlVGV4dHVyZVVuaXQoKTthWzBdIT09byYmKHQudW5pZm9ybTFpKHRoaXMuYWRkcixvKSxhWzBdPW8pLGUuc2FmZVNldFRleHR1cmUyRChufHx0YXQsbyl9ZnVuY3Rpb24gT2F0KHQsbixlKXtjb25zdCBhPXRoaXMuY2FjaGUsbz1lLmFsbG9jYXRlVGV4dHVyZVVuaXQoKTthWzBdIT09byYmKHQudW5pZm9ybTFpKHRoaXMuYWRkcixvKSxhWzBdPW8pLGUuc2V0VGV4dHVyZTJEQXJyYXkobnx8bmF0LG8pfWZ1bmN0aW9uIFBhdCh0LG4sZSl7Y29uc3QgYT10aGlzLmNhY2hlLG89ZS5hbGxvY2F0ZVRleHR1cmVVbml0KCk7YVswXSE9PW8mJih0LnVuaWZvcm0xaSh0aGlzLmFkZHIsbyksYVswXT1vKSxlLnNldFRleHR1cmUzRChufHxlYXQsbyl9ZnVuY3Rpb24geGF0KHQsbixlKXtjb25zdCBhPXRoaXMuY2FjaGUsbz1lLmFsbG9jYXRlVGV4dHVyZVVuaXQoKTthWzBdIT09byYmKHQudW5pZm9ybTFpKHRoaXMuYWRkcixvKSxhWzBdPW8pLGUuc2FmZVNldFRleHR1cmVDdWJlKG58fGFhdCxvKX1mdW5jdGlvbiB5YXQodCxuKXtjb25zdCBlPXRoaXMuY2FjaGU7ZVswXSE9PW4mJih0LnVuaWZvcm0xaSh0aGlzLmFkZHIsbiksZVswXT1uKX1mdW5jdGlvbiBrYXQodCxuKXtjb25zdCBlPXRoaXMuY2FjaGU7bWF0KGUsbil8fCh0LnVuaWZvcm0yaXYodGhpcy5hZGRyLG4pLGRhdChlLG4pKX1mdW5jdGlvbiB2YXQodCxuKXtjb25zdCBlPXRoaXMuY2FjaGU7bWF0KGUsbil8fCh0LnVuaWZvcm0zaXYodGhpcy5hZGRyLG4pLGRhdChlLG4pKX1mdW5jdGlvbiB3YXQodCxuKXtjb25zdCBlPXRoaXMuY2FjaGU7bWF0KGUsbil8fCh0LnVuaWZvcm00aXYodGhpcy5hZGRyLG4pLGRhdChlLG4pKX1mdW5jdGlvbiBTYXQodCxuKXtjb25zdCBlPXRoaXMuY2FjaGU7ZVswXSE9PW4mJih0LnVuaWZvcm0xdWkodGhpcy5hZGRyLG4pLGVbMF09bil9ZnVuY3Rpb24gRWF0KHQsbil7dC51bmlmb3JtMWZ2KHRoaXMuYWRkcixuKX1mdW5jdGlvbiBBYXQodCxuKXt0LnVuaWZvcm0xaXYodGhpcy5hZGRyLG4pfWZ1bmN0aW9uIHphdCh0LG4pe3QudW5pZm9ybTJpdih0aGlzLmFkZHIsbil9ZnVuY3Rpb24gUmF0KHQsbil7dC51bmlmb3JtM2l2KHRoaXMuYWRkcixuKX1mdW5jdGlvbiBUYXQodCxuKXt0LnVuaWZvcm00aXYodGhpcy5hZGRyLG4pfWZ1bmN0aW9uIERhdCh0LG4pe2NvbnN0IGU9bGF0KG4sdGhpcy5zaXplLDIpO3QudW5pZm9ybTJmdih0aGlzLmFkZHIsZSl9ZnVuY3Rpb24gSWF0KHQsbil7Y29uc3QgZT1sYXQobix0aGlzLnNpemUsMyk7dC51bmlmb3JtM2Z2KHRoaXMuYWRkcixlKX1mdW5jdGlvbiBOYXQodCxuKXtjb25zdCBlPWxhdChuLHRoaXMuc2l6ZSw0KTt0LnVuaWZvcm00ZnYodGhpcy5hZGRyLGUpfWZ1bmN0aW9uIEZhdCh0LG4pe2NvbnN0IGU9bGF0KG4sdGhpcy5zaXplLDQpO3QudW5pZm9ybU1hdHJpeDJmdih0aGlzLmFkZHIsITEsZSl9ZnVuY3Rpb24gTGF0KHQsbil7Y29uc3QgZT1sYXQobix0aGlzLnNpemUsOSk7dC51bmlmb3JtTWF0cml4M2Z2KHRoaXMuYWRkciwhMSxlKX1mdW5jdGlvbiBIYXQodCxuKXtjb25zdCBlPWxhdChuLHRoaXMuc2l6ZSwxNik7dC51bmlmb3JtTWF0cml4NGZ2KHRoaXMuYWRkciwhMSxlKX1mdW5jdGlvbiBCYXQodCxuLGUpe2NvbnN0IGE9bi5sZW5ndGgsbz1nYXQoZSxhKTt0LnVuaWZvcm0xaXYodGhpcy5hZGRyLG8pO2ZvcihsZXQgdD0wO3QhPT1hOysrdCllLnNhZmVTZXRUZXh0dXJlMkQoblt0XXx8dGF0LG9bdF0pfWZ1bmN0aW9uIFZhdCh0LG4sZSl7Y29uc3QgYT1uLmxlbmd0aCxvPWdhdChlLGEpO3QudW5pZm9ybTFpdih0aGlzLmFkZHIsbyk7Zm9yKGxldCB0PTA7dCE9PWE7Kyt0KWUuc2FmZVNldFRleHR1cmVDdWJlKG5bdF18fGFhdCxvW3RdKX1mdW5jdGlvbiBqYXQodCxuLGUpe3RoaXMuaWQ9dCx0aGlzLmFkZHI9ZSx0aGlzLmNhY2hlPVtdLHRoaXMuc2V0VmFsdWU9KGZ1bmN0aW9uIGEodCl7c3dpdGNoKHQpe2Nhc2UgNTEyNjpyZXR1cm4gcGF0O2Nhc2UgMzU2NjQ6cmV0dXJuIGJhdDtjYXNlIDM1NjY1OnJldHVybiB1YXQ7Y2FzZSAzNTY2NjpyZXR1cm4gZmF0O2Nhc2UgMzU2NzQ6cmV0dXJuIGhhdDtjYXNlIDM1Njc1OnJldHVybiBfYXQ7Y2FzZSAzNTY3NjpyZXR1cm4gQ2F0O2Nhc2UgNTEyNDpjYXNlIDM1NjcwOnJldHVybiB5YXQ7Y2FzZSAzNTY2NzpjYXNlIDM1NjcxOnJldHVybiBrYXQ7Y2FzZSAzNTY2ODpjYXNlIDM1NjcyOnJldHVybiB2YXQ7Y2FzZSAzNTY2OTpjYXNlIDM1NjczOnJldHVybiB3YXQ7Y2FzZSA1MTI1OnJldHVybiBTYXQ7Y2FzZSAzNTY3ODpjYXNlIDM2MTk4OmNhc2UgMzYyOTg6Y2FzZSAzNjMwNjpjYXNlIDM1NjgyOnJldHVybiBNYXQ7Y2FzZSAzNTY3OTpjYXNlIDM2Mjk5OmNhc2UgMzYzMDc6cmV0dXJuIFBhdDtjYXNlIDM1NjgwOmNhc2UgMzYzMDA6Y2FzZSAzNjMwODpjYXNlIDM2MjkzOnJldHVybiB4YXQ7Y2FzZSAzNjI4OTpjYXNlIDM2MzAzOmNhc2UgMzYzMTE6Y2FzZSAzNjI5MjpyZXR1cm4gT2F0fX0pKG4udHlwZSl9ZnVuY3Rpb24gVWF0KHQsbixlKXt0aGlzLmlkPXQsdGhpcy5hZGRyPWUsdGhpcy5jYWNoZT1bXSx0aGlzLnNpemU9bi5zaXplLHRoaXMuc2V0VmFsdWU9KGZ1bmN0aW9uIGEodCl7c3dpdGNoKHQpe2Nhc2UgNTEyNjpyZXR1cm4gRWF0O2Nhc2UgMzU2NjQ6cmV0dXJuIERhdDtjYXNlIDM1NjY1OnJldHVybiBJYXQ7Y2FzZSAzNTY2NjpyZXR1cm4gTmF0O2Nhc2UgMzU2NzQ6cmV0dXJuIEZhdDtjYXNlIDM1Njc1OnJldHVybiBMYXQ7Y2FzZSAzNTY3NjpyZXR1cm4gSGF0O2Nhc2UgNTEyNDpjYXNlIDM1NjcwOnJldHVybiBBYXQ7Y2FzZSAzNTY2NzpjYXNlIDM1NjcxOnJldHVybiB6YXQ7Y2FzZSAzNTY2ODpjYXNlIDM1NjcyOnJldHVybiBSYXQ7Y2FzZSAzNTY2OTpjYXNlIDM1NjczOnJldHVybiBUYXQ7Y2FzZSAzNTY3ODpjYXNlIDM2MTk4OmNhc2UgMzYyOTg6Y2FzZSAzNjMwNjpjYXNlIDM1NjgyOnJldHVybiBCYXQ7Y2FzZSAzNTY4MDpjYXNlIDM2MzAwOmNhc2UgMzYzMDg6Y2FzZSAzNjI5MzpyZXR1cm4gVmF0fX0pKG4udHlwZSl9ZnVuY3Rpb24gV2F0KHQpe3RoaXMuaWQ9dCx0aGlzLnNlcT1bXSx0aGlzLm1hcD17fX1VYXQucHJvdG90eXBlLnVwZGF0ZUNhY2hlPWZ1bmN0aW9uKHQpe2NvbnN0IG49dGhpcy5jYWNoZTt0IGluc3RhbmNlb2YgRmxvYXQzMkFycmF5JiZuLmxlbmd0aCE9PXQubGVuZ3RoJiYodGhpcy5jYWNoZT1uZXcgRmxvYXQzMkFycmF5KHQubGVuZ3RoKSksZGF0KG4sdCl9LFdhdC5wcm90b3R5cGUuc2V0VmFsdWU9ZnVuY3Rpb24odCxuLGUpe2NvbnN0IGE9dGhpcy5zZXE7Zm9yKGxldCBvPTAscj1hLmxlbmd0aDtvIT09cjsrK28pe2NvbnN0IHI9YVtvXTtyLnNldFZhbHVlKHQsbltyLmlkXSxlKX19O2NvbnN0IEdhdD0vKFx3KykoXF0pPyhcW3xcLik/L2c7ZnVuY3Rpb24gWWF0KHQsbil7dC5zZXEucHVzaChuKSx0Lm1hcFtuLmlkXT1ufWZ1bmN0aW9uIHFhdCh0LG4sZSl7Y29uc3QgYT10Lm5hbWUsbz1hLmxlbmd0aDtmb3IoR2F0Lmxhc3RJbmRleD0wOzspe2NvbnN0IHI9R2F0LmV4ZWMoYSksaT1HYXQubGFzdEluZGV4O2xldCBjPXJbMV07Y29uc3Qgcz1yWzNdO2lmKCJdIj09PXJbMl0mJihjfD0wKSx2b2lkIDA9PT1zfHwiWyI9PT1zJiZpKzI9PT1vKXtZYXQoZSx2b2lkIDA9PT1zP25ldyBqYXQoYyx0LG4pOm5ldyBVYXQoYyx0LG4pKTticmVha317bGV0IHQ9ZS5tYXBbY107dm9pZCAwPT09dCYmKHQ9bmV3IFdhdChjKSxZYXQoZSx0KSksZT10fX19ZnVuY3Rpb24gWmF0KHQsbil7dGhpcy5zZXE9W10sdGhpcy5tYXA9e307Y29uc3QgZT10LmdldFByb2dyYW1QYXJhbWV0ZXIobiwzNTcxOCk7Zm9yKGxldCBhPTA7YTxlOysrYSl7Y29uc3QgZT10LmdldEFjdGl2ZVVuaWZvcm0obixhKTtxYXQoZSx0LmdldFVuaWZvcm1Mb2NhdGlvbihuLGUubmFtZSksdGhpcyl9fWZ1bmN0aW9uIFhhdCh0LG4sZSl7Y29uc3QgYT10LmNyZWF0ZVNoYWRlcihuKTtyZXR1cm4gdC5zaGFkZXJTb3VyY2UoYSxlKSx0LmNvbXBpbGVTaGFkZXIoYSksYX1aYXQucHJvdG90eXBlLnNldFZhbHVlPWZ1bmN0aW9uKHQsbixlLGEpe2NvbnN0IG89dGhpcy5tYXBbbl07dm9pZCAwIT09byYmby5zZXRWYWx1ZSh0LGUsYSl9LFphdC5wcm90b3R5cGUuc2V0T3B0aW9uYWw9ZnVuY3Rpb24odCxuLGUpe2NvbnN0IGE9bltlXTt2b2lkIDAhPT1hJiZ0aGlzLnNldFZhbHVlKHQsZSxhKX0sWmF0LnVwbG9hZD1mdW5jdGlvbih0LG4sZSxhKXtmb3IobGV0IG89MCxyPW4ubGVuZ3RoO28hPT1yOysrbyl7Y29uc3Qgcj1uW29dLGk9ZVtyLmlkXTshMSE9PWkubmVlZHNVcGRhdGUmJnIuc2V0VmFsdWUodCxpLnZhbHVlLGEpfX0sWmF0LnNlcVdpdGhWYWx1ZT1mdW5jdGlvbih0LG4pe2NvbnN0IGU9W107Zm9yKGxldCBhPTAsbz10Lmxlbmd0aDthIT09bzsrK2Epe2NvbnN0IG89dFthXTtvLmlkIGluIG4mJmUucHVzaChvKX1yZXR1cm4gZX07bGV0IEphdD0wO2Z1bmN0aW9uIFFhdCh0KXtzd2l0Y2godCl7Y2FzZSBJOTpyZXR1cm5bIkxpbmVhciIsIiggdmFsdWUgKSJdO2Nhc2UgMzAwMTpyZXR1cm5bInNSR0IiLCIoIHZhbHVlICkiXTtjYXNlIDMwMDI6cmV0dXJuWyJSR0JFIiwiKCB2YWx1ZSApIl07Y2FzZSAzMDA0OnJldHVyblsiUkdCTSIsIiggdmFsdWUsIDcuMCApIl07Y2FzZSAzMDA1OnJldHVyblsiUkdCTSIsIiggdmFsdWUsIDE2LjAgKSJdO2Nhc2UgMzAwNjpyZXR1cm5bIlJHQkQiLCIoIHZhbHVlLCAyNTYuMCApIl07Y2FzZSAzMDA3OnJldHVyblsiR2FtbWEiLCIoIHZhbHVlLCBmbG9hdCggR0FNTUFfRkFDVE9SICkgKSJdO2Nhc2UgMzAwMzpyZXR1cm5bIkxvZ0x1diIsIiggdmFsdWUgKSJdO2RlZmF1bHQ6cmV0dXJuIGNvbnNvbGUud2FybigiVEhSRUUuV2ViR0xQcm9ncmFtOiBVbnN1cHBvcnRlZCBlbmNvZGluZzoiLHQpLFsiTGluZWFyIiwiKCB2YWx1ZSApIl19fWZ1bmN0aW9uIEthdCh0LG4sZSl7Y29uc3QgYT10LmdldFNoYWRlclBhcmFtZXRlcihuLDM1NzEzKSxvPXQuZ2V0U2hhZGVySW5mb0xvZyhuKS50cmltKCk7cmV0dXJuIGEmJiIiPT09bz8iIjoiVEhSRUUuV2ViR0xTaGFkZXI6IGdsLmdldFNoYWRlckluZm9Mb2coKSAiK2UrIlxuIitvKyhmdW5jdGlvbiByKHQpe2NvbnN0IG49dC5zcGxpdCgiXG4iKTtmb3IobGV0IHQ9MDt0PG4ubGVuZ3RoO3QrKyluW3RdPXQrMSsiOiAiK25bdF07cmV0dXJuIG4uam9pbigiXG4iKX0pKHQuZ2V0U2hhZGVyU291cmNlKG4pKX1mdW5jdGlvbiAkYXQodCxuKXtjb25zdCBlPVFhdChuKTtyZXR1cm4idmVjNCAiK3QrIiggdmVjNCB2YWx1ZSApIHsgcmV0dXJuICIrZVswXSsiVG9MaW5lYXIiK2VbMV0rIjsgfSJ9ZnVuY3Rpb24gdG90KHQsbil7Y29uc3QgZT1RYXQobik7cmV0dXJuInZlYzQgIit0KyIoIHZlYzQgdmFsdWUgKSB7IHJldHVybiBMaW5lYXJUbyIrZVswXStlWzFdKyI7IH0ifWZ1bmN0aW9uIG5vdCh0LG4pe2xldCBlO3N3aXRjaChuKXtjYXNlIDE6ZT0iTGluZWFyIjticmVhaztjYXNlIDI6ZT0iUmVpbmhhcmQiO2JyZWFrO2Nhc2UgMzplPSJPcHRpbWl6ZWRDaW5lb24iO2JyZWFrO2Nhc2UgNDplPSJBQ0VTRmlsbWljIjticmVhaztjYXNlIDU6ZT0iQ3VzdG9tIjticmVhaztkZWZhdWx0OmNvbnNvbGUud2FybigiVEhSRUUuV2ViR0xQcm9ncmFtOiBVbnN1cHBvcnRlZCB0b25lTWFwcGluZzoiLG4pLGU9IkxpbmVhciJ9cmV0dXJuInZlYzMgIit0KyIoIHZlYzMgY29sb3IgKSB7IHJldHVybiAiK2UrIlRvbmVNYXBwaW5nKCBjb2xvciApOyB9In1mdW5jdGlvbiBlb3QodCl7cmV0dXJuIiIhPT10fWZ1bmN0aW9uIGFvdCh0LG4pe3JldHVybiB0LnJlcGxhY2UoL05VTV9ESVJfTElHSFRTL2csbi5udW1EaXJMaWdodHMpLnJlcGxhY2UoL05VTV9TUE9UX0xJR0hUUy9nLG4ubnVtU3BvdExpZ2h0cykucmVwbGFjZSgvTlVNX1JFQ1RfQVJFQV9MSUdIVFMvZyxuLm51bVJlY3RBcmVhTGlnaHRzKS5yZXBsYWNlKC9OVU1fUE9JTlRfTElHSFRTL2csbi5udW1Qb2ludExpZ2h0cykucmVwbGFjZSgvTlVNX0hFTUlfTElHSFRTL2csbi5udW1IZW1pTGlnaHRzKS5yZXBsYWNlKC9OVU1fRElSX0xJR0hUX1NIQURPV1MvZyxuLm51bURpckxpZ2h0U2hhZG93cykucmVwbGFjZSgvTlVNX1NQT1RfTElHSFRfU0hBRE9XUy9nLG4ubnVtU3BvdExpZ2h0U2hhZG93cykucmVwbGFjZSgvTlVNX1BPSU5UX0xJR0hUX1NIQURPV1MvZyxuLm51bVBvaW50TGlnaHRTaGFkb3dzKX1mdW5jdGlvbiBvb3QodCxuKXtyZXR1cm4gdC5yZXBsYWNlKC9OVU1fQ0xJUFBJTkdfUExBTkVTL2csbi5udW1DbGlwcGluZ1BsYW5lcykucmVwbGFjZSgvVU5JT05fQ0xJUFBJTkdfUExBTkVTL2csbi5udW1DbGlwcGluZ1BsYW5lcy1uLm51bUNsaXBJbnRlcnNlY3Rpb24pfWNvbnN0IHJvdD0vXlsgXHRdKiNpbmNsdWRlICs8KFtcd1xkLi9dKyk+L2dtO2Z1bmN0aW9uIGlvdCh0KXtyZXR1cm4gdC5yZXBsYWNlKHJvdCxjb3QpfWZ1bmN0aW9uIGNvdCh0LG4pe2NvbnN0IGU9SWV0W25dO2lmKHZvaWQgMD09PWUpdGhyb3cgbmV3IEVycm9yKCJDYW4gbm90IHJlc29sdmUgI2luY2x1ZGUgPCIrbisiPiIpO3JldHVybiBpb3QoZSl9Y29uc3Qgc290PS8jcHJhZ21hIHVucm9sbF9sb29wW1xzXSs/Zm9yIFwoIGludCBpIFw9IChcZCspXDsgaSA8IChcZCspXDsgaSBcK1wrIFwpIFx7KFtcc1xTXSs/KSg/PVx9KVx9L2csbG90PS8jcHJhZ21hIHVucm9sbF9sb29wX3N0YXJ0XHMrZm9yXHMqXChccyppbnRccytpXHMqPVxzKihcZCspXHMqO1xzKmlccyo8XHMqKFxkKylccyo7XHMqaVxzKlwrXCtccypcKVxzKnsoW1xzXFNdKz8pfVxzKyNwcmFnbWEgdW5yb2xsX2xvb3BfZW5kL2c7ZnVuY3Rpb24gbW90KHQpe3JldHVybiB0LnJlcGxhY2UobG90LGdvdCkucmVwbGFjZShzb3QsZG90KX1mdW5jdGlvbiBkb3QodCxuLGUsYSl7cmV0dXJuIGNvbnNvbGUud2FybigiV2ViR0xQcm9ncmFtOiAjcHJhZ21hIHVucm9sbF9sb29wIHNoYWRlciBzeW50YXggaXMgZGVwcmVjYXRlZC4gUGxlYXNlIHVzZSAjcHJhZ21hIHVucm9sbF9sb29wX3N0YXJ0IHN5bnRheCBpbnN0ZWFkLiIpLGdvdCgwLG4sZSxhKX1mdW5jdGlvbiBnb3QodCxuLGUsYSl7bGV0IG89IiI7Zm9yKGxldCB0PXBhcnNlSW50KG4pO3Q8cGFyc2VJbnQoZSk7dCsrKW8rPWEucmVwbGFjZSgvXFtccyppXHMqXF0vZywiWyAiK3QrIiBdIikucmVwbGFjZSgvVU5ST0xMRURfTE9PUF9JTkRFWC9nLHQpO3JldHVybiBvfWZ1bmN0aW9uIHBvdCh0KXtsZXQgbj0icHJlY2lzaW9uICIrdC5wcmVjaXNpb24rIiBmbG9hdDtcbnByZWNpc2lvbiAiK3QucHJlY2lzaW9uKyIgaW50OyI7cmV0dXJuImhpZ2hwIj09PXQucHJlY2lzaW9uP24rPSJcbiNkZWZpbmUgSElHSF9QUkVDSVNJT04iOiJtZWRpdW1wIj09PXQucHJlY2lzaW9uP24rPSJcbiNkZWZpbmUgTUVESVVNX1BSRUNJU0lPTiI6Imxvd3AiPT09dC5wcmVjaXNpb24mJihuKz0iXG4jZGVmaW5lIExPV19QUkVDSVNJT04iKSxufWZ1bmN0aW9uIGJvdCh0LG4sZSxhKXtjb25zdCBvPXQuZ2V0Q29udGV4dCgpLHI9ZS5kZWZpbmVzO2xldCBpPWUudmVydGV4U2hhZGVyLGM9ZS5mcmFnbWVudFNoYWRlcjtjb25zdCBzPShmdW5jdGlvbiBsKHQpe2xldCBuPSJTSEFET1dNQVBfVFlQRV9CQVNJQyI7cmV0dXJuIDE9PT10LnNoYWRvd01hcFR5cGU/bj0iU0hBRE9XTUFQX1RZUEVfUENGIjoyPT09dC5zaGFkb3dNYXBUeXBlP249IlNIQURPV01BUF9UWVBFX1BDRl9TT0ZUIjozPT09dC5zaGFkb3dNYXBUeXBlJiYobj0iU0hBRE9XTUFQX1RZUEVfVlNNIiksbn0pKGUpLG09KGZ1bmN0aW9uIGQodCl7bGV0IG49IkVOVk1BUF9UWVBFX0NVQkUiO2lmKHQuZW52TWFwKXN3aXRjaCh0LmVudk1hcE1vZGUpe2Nhc2UgMzAxOmNhc2UgMzAyOm49IkVOVk1BUF9UWVBFX0NVQkUiO2JyZWFrO2Nhc2UgMzA2OmNhc2UgMzA3Om49IkVOVk1BUF9UWVBFX0NVQkVfVVYifXJldHVybiBufSkoZSksZz0oZnVuY3Rpb24gcCh0KXtsZXQgbj0iRU5WTUFQX01PREVfUkVGTEVDVElPTiI7aWYodC5lbnZNYXApc3dpdGNoKHQuZW52TWFwTW9kZSl7Y2FzZSAzMDI6Y2FzZSAzMDc6bj0iRU5WTUFQX01PREVfUkVGUkFDVElPTiJ9cmV0dXJuIG59KShlKSxiPShmdW5jdGlvbiB1KHQpe2xldCBuPSJFTlZNQVBfQkxFTkRJTkdfTk9ORSI7aWYodC5lbnZNYXApc3dpdGNoKHQuY29tYmluZSl7Y2FzZSAwOm49IkVOVk1BUF9CTEVORElOR19NVUxUSVBMWSI7YnJlYWs7Y2FzZSAxOm49IkVOVk1BUF9CTEVORElOR19NSVgiO2JyZWFrO2Nhc2UgMjpuPSJFTlZNQVBfQkxFTkRJTkdfQUREIn1yZXR1cm4gbn0pKGUpLGY9dC5nYW1tYUZhY3Rvcj4wP3QuZ2FtbWFGYWN0b3I6MSxoPWUuaXNXZWJHTDI/IiI6KGZ1bmN0aW9uIF8odCl7cmV0dXJuW3QuZXh0ZW5zaW9uRGVyaXZhdGl2ZXN8fHQuZW52TWFwQ3ViZVVWfHx0LmJ1bXBNYXB8fHQudGFuZ2VudFNwYWNlTm9ybWFsTWFwfHx0LmNsZWFyY29hdE5vcm1hbE1hcHx8dC5mbGF0U2hhZGluZ3x8InBoeXNpY2FsIj09PXQuc2hhZGVySUQ/IiNleHRlbnNpb24gR0xfT0VTX3N0YW5kYXJkX2Rlcml2YXRpdmVzIDogZW5hYmxlIjoiIiwodC5leHRlbnNpb25GcmFnRGVwdGh8fHQubG9nYXJpdGhtaWNEZXB0aEJ1ZmZlcikmJnQucmVuZGVyZXJFeHRlbnNpb25GcmFnRGVwdGg/IiNleHRlbnNpb24gR0xfRVhUX2ZyYWdfZGVwdGggOiBlbmFibGUiOiIiLHQuZXh0ZW5zaW9uRHJhd0J1ZmZlcnMmJnQucmVuZGVyZXJFeHRlbnNpb25EcmF3QnVmZmVycz8iI2V4dGVuc2lvbiBHTF9FWFRfZHJhd19idWZmZXJzIDogcmVxdWlyZSI6IiIsKHQuZXh0ZW5zaW9uU2hhZGVyVGV4dHVyZUxPRHx8dC5lbnZNYXApJiZ0LnJlbmRlcmVyRXh0ZW5zaW9uU2hhZGVyVGV4dHVyZUxvZD8iI2V4dGVuc2lvbiBHTF9FWFRfc2hhZGVyX3RleHR1cmVfbG9kIDogZW5hYmxlIjoiIl0uZmlsdGVyKGVvdCkuam9pbigiXG4iKX0pKGUpLEM9KGZ1bmN0aW9uIE0odCl7Y29uc3Qgbj1bXTtmb3IoY29uc3QgZSBpbiB0KXtjb25zdCBhPXRbZV07ITEhPT1hJiZuLnB1c2goIiNkZWZpbmUgIitlKyIgIithKX1yZXR1cm4gbi5qb2luKCJcbiIpfSkociksTz1vLmNyZWF0ZVByb2dyYW0oKTtsZXQgUCx4LHk9ZS5nbHNsVmVyc2lvbj8iI3ZlcnNpb24gIitlLmdsc2xWZXJzaW9uKyJcbiI6IiI7ZS5pc1Jhd1NoYWRlck1hdGVyaWFsPyhQPVtDXS5maWx0ZXIoZW90KS5qb2luKCJcbiIpLFAubGVuZ3RoPjAmJihQKz0iXG4iKSx4PVtoLENdLmZpbHRlcihlb3QpLmpvaW4oIlxuIikseC5sZW5ndGg+MCYmKHgrPSJcbiIpKTooUD1bcG90KGUpLCIjZGVmaW5lIFNIQURFUl9OQU1FICIrZS5zaGFkZXJOYW1lLEMsZS5pbnN0YW5jaW5nPyIjZGVmaW5lIFVTRV9JTlNUQU5DSU5HIjoiIixlLmluc3RhbmNpbmdDb2xvcj8iI2RlZmluZSBVU0VfSU5TVEFOQ0lOR19DT0xPUiI6IiIsZS5zdXBwb3J0c1ZlcnRleFRleHR1cmVzPyIjZGVmaW5lIFZFUlRFWF9URVhUVVJFUyI6IiIsIiNkZWZpbmUgR0FNTUFfRkFDVE9SICIrZiwiI2RlZmluZSBNQVhfQk9ORVMgIitlLm1heEJvbmVzLGUudXNlRm9nJiZlLmZvZz8iI2RlZmluZSBVU0VfRk9HIjoiIixlLnVzZUZvZyYmZS5mb2dFeHAyPyIjZGVmaW5lIEZPR19FWFAyIjoiIixlLm1hcD8iI2RlZmluZSBVU0VfTUFQIjoiIixlLmVudk1hcD8iI2RlZmluZSBVU0VfRU5WTUFQIjoiIixlLmVudk1hcD8iI2RlZmluZSAiK2c6IiIsZS5saWdodE1hcD8iI2RlZmluZSBVU0VfTElHSFRNQVAiOiIiLGUuYW9NYXA/IiNkZWZpbmUgVVNFX0FPTUFQIjoiIixlLmVtaXNzaXZlTWFwPyIjZGVmaW5lIFVTRV9FTUlTU0lWRU1BUCI6IiIsZS5idW1wTWFwPyIjZGVmaW5lIFVTRV9CVU1QTUFQIjoiIixlLm5vcm1hbE1hcD8iI2RlZmluZSBVU0VfTk9STUFMTUFQIjoiIixlLm5vcm1hbE1hcCYmZS5vYmplY3RTcGFjZU5vcm1hbE1hcD8iI2RlZmluZSBPQkpFQ1RTUEFDRV9OT1JNQUxNQVAiOiIiLGUubm9ybWFsTWFwJiZlLnRhbmdlbnRTcGFjZU5vcm1hbE1hcD8iI2RlZmluZSBUQU5HRU5UU1BBQ0VfTk9STUFMTUFQIjoiIixlLmNsZWFyY29hdE1hcD8iI2RlZmluZSBVU0VfQ0xFQVJDT0FUTUFQIjoiIixlLmNsZWFyY29hdFJvdWdobmVzc01hcD8iI2RlZmluZSBVU0VfQ0xFQVJDT0FUX1JPVUdITkVTU01BUCI6IiIsZS5jbGVhcmNvYXROb3JtYWxNYXA/IiNkZWZpbmUgVVNFX0NMRUFSQ09BVF9OT1JNQUxNQVAiOiIiLGUuZGlzcGxhY2VtZW50TWFwJiZlLnN1cHBvcnRzVmVydGV4VGV4dHVyZXM/IiNkZWZpbmUgVVNFX0RJU1BMQUNFTUVOVE1BUCI6IiIsZS5zcGVjdWxhck1hcD8iI2RlZmluZSBVU0VfU1BFQ1VMQVJNQVAiOiIiLGUucm91Z2huZXNzTWFwPyIjZGVmaW5lIFVTRV9ST1VHSE5FU1NNQVAiOiIiLGUubWV0YWxuZXNzTWFwPyIjZGVmaW5lIFVTRV9NRVRBTE5FU1NNQVAiOiIiLGUuYWxwaGFNYXA/IiNkZWZpbmUgVVNFX0FMUEhBTUFQIjoiIixlLnRyYW5zbWlzc2lvbk1hcD8iI2RlZmluZSBVU0VfVFJBTlNNSVNTSU9OTUFQIjoiIixlLnZlcnRleFRhbmdlbnRzPyIjZGVmaW5lIFVTRV9UQU5HRU5UIjoiIixlLnZlcnRleENvbG9ycz8iI2RlZmluZSBVU0VfQ09MT1IiOiIiLGUudmVydGV4VXZzPyIjZGVmaW5lIFVTRV9VViI6IiIsZS51dnNWZXJ0ZXhPbmx5PyIjZGVmaW5lIFVWU19WRVJURVhfT05MWSI6IiIsZS5mbGF0U2hhZGluZz8iI2RlZmluZSBGTEFUX1NIQURFRCI6IiIsZS5za2lubmluZz8iI2RlZmluZSBVU0VfU0tJTk5JTkciOiIiLGUudXNlVmVydGV4VGV4dHVyZT8iI2RlZmluZSBCT05FX1RFWFRVUkUiOiIiLGUubW9ycGhUYXJnZXRzPyIjZGVmaW5lIFVTRV9NT1JQSFRBUkdFVFMiOiIiLGUubW9ycGhOb3JtYWxzJiYhMT09PWUuZmxhdFNoYWRpbmc/IiNkZWZpbmUgVVNFX01PUlBITk9STUFMUyI6IiIsZS5kb3VibGVTaWRlZD8iI2RlZmluZSBET1VCTEVfU0lERUQiOiIiLGUuZmxpcFNpZGVkPyIjZGVmaW5lIEZMSVBfU0lERUQiOiIiLGUuc2hhZG93TWFwRW5hYmxlZD8iI2RlZmluZSBVU0VfU0hBRE9XTUFQIjoiIixlLnNoYWRvd01hcEVuYWJsZWQ/IiNkZWZpbmUgIitzOiIiLGUuc2l6ZUF0dGVudWF0aW9uPyIjZGVmaW5lIFVTRV9TSVpFQVRURU5VQVRJT04iOiIiLGUubG9nYXJpdGhtaWNEZXB0aEJ1ZmZlcj8iI2RlZmluZSBVU0VfTE9HREVQVEhCVUYiOiIiLGUubG9nYXJpdGhtaWNEZXB0aEJ1ZmZlciYmZS5yZW5kZXJlckV4dGVuc2lvbkZyYWdEZXB0aD8iI2RlZmluZSBVU0VfTE9HREVQVEhCVUZfRVhUIjoiIiwidW5pZm9ybSBtYXQ0IG1vZGVsTWF0cml4OyIsInVuaWZvcm0gbWF0NCBtb2RlbFZpZXdNYXRyaXg7IiwidW5pZm9ybSBtYXQ0IHByb2plY3Rpb25NYXRyaXg7IiwidW5pZm9ybSBtYXQ0IHZpZXdNYXRyaXg7IiwidW5pZm9ybSBtYXQzIG5vcm1hbE1hdHJpeDsiLCJ1bmlmb3JtIHZlYzMgY2FtZXJhUG9zaXRpb247IiwidW5pZm9ybSBib29sIGlzT3J0aG9ncmFwaGljOyIsIiNpZmRlZiBVU0VfSU5TVEFOQ0lORyIsIlx0YXR0cmlidXRlIG1hdDQgaW5zdGFuY2VNYXRyaXg7IiwiI2VuZGlmIiwiI2lmZGVmIFVTRV9JTlNUQU5DSU5HX0NPTE9SIiwiXHRhdHRyaWJ1dGUgdmVjMyBpbnN0YW5jZUNvbG9yOyIsIiNlbmRpZiIsImF0dHJpYnV0ZSB2ZWMzIHBvc2l0aW9uOyIsImF0dHJpYnV0ZSB2ZWMzIG5vcm1hbDsiLCJhdHRyaWJ1dGUgdmVjMiB1djsiLCIjaWZkZWYgVVNFX1RBTkdFTlQiLCJcdGF0dHJpYnV0ZSB2ZWM0IHRhbmdlbnQ7IiwiI2VuZGlmIiwiI2lmZGVmIFVTRV9DT0xPUiIsIlx0YXR0cmlidXRlIHZlYzMgY29sb3I7IiwiI2VuZGlmIiwiI2lmZGVmIFVTRV9NT1JQSFRBUkdFVFMiLCJcdGF0dHJpYnV0ZSB2ZWMzIG1vcnBoVGFyZ2V0MDsiLCJcdGF0dHJpYnV0ZSB2ZWMzIG1vcnBoVGFyZ2V0MTsiLCJcdGF0dHJpYnV0ZSB2ZWMzIG1vcnBoVGFyZ2V0MjsiLCJcdGF0dHJpYnV0ZSB2ZWMzIG1vcnBoVGFyZ2V0MzsiLCJcdCNpZmRlZiBVU0VfTU9SUEhOT1JNQUxTIiwiXHRcdGF0dHJpYnV0ZSB2ZWMzIG1vcnBoTm9ybWFsMDsiLCJcdFx0YXR0cmlidXRlIHZlYzMgbW9ycGhOb3JtYWwxOyIsIlx0XHRhdHRyaWJ1dGUgdmVjMyBtb3JwaE5vcm1hbDI7IiwiXHRcdGF0dHJpYnV0ZSB2ZWMzIG1vcnBoTm9ybWFsMzsiLCJcdCNlbHNlIiwiXHRcdGF0dHJpYnV0ZSB2ZWMzIG1vcnBoVGFyZ2V0NDsiLCJcdFx0YXR0cmlidXRlIHZlYzMgbW9ycGhUYXJnZXQ1OyIsIlx0XHRhdHRyaWJ1dGUgdmVjMyBtb3JwaFRhcmdldDY7IiwiXHRcdGF0dHJpYnV0ZSB2ZWMzIG1vcnBoVGFyZ2V0NzsiLCJcdCNlbmRpZiIsIiNlbmRpZiIsIiNpZmRlZiBVU0VfU0tJTk5JTkciLCJcdGF0dHJpYnV0ZSB2ZWM0IHNraW5JbmRleDsiLCJcdGF0dHJpYnV0ZSB2ZWM0IHNraW5XZWlnaHQ7IiwiI2VuZGlmIiwiXG4iXS5maWx0ZXIoZW90KS5qb2luKCJcbiIpLHg9W2gscG90KGUpLCIjZGVmaW5lIFNIQURFUl9OQU1FICIrZS5zaGFkZXJOYW1lLEMsZS5hbHBoYVRlc3Q/IiNkZWZpbmUgQUxQSEFURVNUICIrZS5hbHBoYVRlc3QrKGUuYWxwaGFUZXN0JTE/IiI6Ii4wIik6IiIsIiNkZWZpbmUgR0FNTUFfRkFDVE9SICIrZixlLnVzZUZvZyYmZS5mb2c/IiNkZWZpbmUgVVNFX0ZPRyI6IiIsZS51c2VGb2cmJmUuZm9nRXhwMj8iI2RlZmluZSBGT0dfRVhQMiI6IiIsZS5tYXA/IiNkZWZpbmUgVVNFX01BUCI6IiIsZS5tYXRjYXA/IiNkZWZpbmUgVVNFX01BVENBUCI6IiIsZS5lbnZNYXA/IiNkZWZpbmUgVVNFX0VOVk1BUCI6IiIsZS5lbnZNYXA/IiNkZWZpbmUgIittOiIiLGUuZW52TWFwPyIjZGVmaW5lICIrZzoiIixlLmVudk1hcD8iI2RlZmluZSAiK2I6IiIsZS5saWdodE1hcD8iI2RlZmluZSBVU0VfTElHSFRNQVAiOiIiLGUuYW9NYXA/IiNkZWZpbmUgVVNFX0FPTUFQIjoiIixlLmVtaXNzaXZlTWFwPyIjZGVmaW5lIFVTRV9FTUlTU0lWRU1BUCI6IiIsZS5idW1wTWFwPyIjZGVmaW5lIFVTRV9CVU1QTUFQIjoiIixlLm5vcm1hbE1hcD8iI2RlZmluZSBVU0VfTk9STUFMTUFQIjoiIixlLm5vcm1hbE1hcCYmZS5vYmplY3RTcGFjZU5vcm1hbE1hcD8iI2RlZmluZSBPQkpFQ1RTUEFDRV9OT1JNQUxNQVAiOiIiLGUubm9ybWFsTWFwJiZlLnRhbmdlbnRTcGFjZU5vcm1hbE1hcD8iI2RlZmluZSBUQU5HRU5UU1BBQ0VfTk9STUFMTUFQIjoiIixlLmNsZWFyY29hdE1hcD8iI2RlZmluZSBVU0VfQ0xFQVJDT0FUTUFQIjoiIixlLmNsZWFyY29hdFJvdWdobmVzc01hcD8iI2RlZmluZSBVU0VfQ0xFQVJDT0FUX1JPVUdITkVTU01BUCI6IiIsZS5jbGVhcmNvYXROb3JtYWxNYXA/IiNkZWZpbmUgVVNFX0NMRUFSQ09BVF9OT1JNQUxNQVAiOiIiLGUuc3BlY3VsYXJNYXA/IiNkZWZpbmUgVVNFX1NQRUNVTEFSTUFQIjoiIixlLnJvdWdobmVzc01hcD8iI2RlZmluZSBVU0VfUk9VR0hORVNTTUFQIjoiIixlLm1ldGFsbmVzc01hcD8iI2RlZmluZSBVU0VfTUVUQUxORVNTTUFQIjoiIixlLmFscGhhTWFwPyIjZGVmaW5lIFVTRV9BTFBIQU1BUCI6IiIsZS5zaGVlbj8iI2RlZmluZSBVU0VfU0hFRU4iOiIiLGUudHJhbnNtaXNzaW9uTWFwPyIjZGVmaW5lIFVTRV9UUkFOU01JU1NJT05NQVAiOiIiLGUudmVydGV4VGFuZ2VudHM/IiNkZWZpbmUgVVNFX1RBTkdFTlQiOiIiLGUudmVydGV4Q29sb3JzfHxlLmluc3RhbmNpbmdDb2xvcj8iI2RlZmluZSBVU0VfQ09MT1IiOiIiLGUudmVydGV4VXZzPyIjZGVmaW5lIFVTRV9VViI6IiIsZS51dnNWZXJ0ZXhPbmx5PyIjZGVmaW5lIFVWU19WRVJURVhfT05MWSI6IiIsZS5ncmFkaWVudE1hcD8iI2RlZmluZSBVU0VfR1JBRElFTlRNQVAiOiIiLGUuZmxhdFNoYWRpbmc/IiNkZWZpbmUgRkxBVF9TSEFERUQiOiIiLGUuZG91YmxlU2lkZWQ/IiNkZWZpbmUgRE9VQkxFX1NJREVEIjoiIixlLmZsaXBTaWRlZD8iI2RlZmluZSBGTElQX1NJREVEIjoiIixlLnNoYWRvd01hcEVuYWJsZWQ/IiNkZWZpbmUgVVNFX1NIQURPV01BUCI6IiIsZS5zaGFkb3dNYXBFbmFibGVkPyIjZGVmaW5lICIrczoiIixlLnByZW11bHRpcGxpZWRBbHBoYT8iI2RlZmluZSBQUkVNVUxUSVBMSUVEX0FMUEhBIjoiIixlLnBoeXNpY2FsbHlDb3JyZWN0TGlnaHRzPyIjZGVmaW5lIFBIWVNJQ0FMTFlfQ09SUkVDVF9MSUdIVFMiOiIiLGUubG9nYXJpdGhtaWNEZXB0aEJ1ZmZlcj8iI2RlZmluZSBVU0VfTE9HREVQVEhCVUYiOiIiLGUubG9nYXJpdGhtaWNEZXB0aEJ1ZmZlciYmZS5yZW5kZXJlckV4dGVuc2lvbkZyYWdEZXB0aD8iI2RlZmluZSBVU0VfTE9HREVQVEhCVUZfRVhUIjoiIiwoZS5leHRlbnNpb25TaGFkZXJUZXh0dXJlTE9EfHxlLmVudk1hcCkmJmUucmVuZGVyZXJFeHRlbnNpb25TaGFkZXJUZXh0dXJlTG9kPyIjZGVmaW5lIFRFWFRVUkVfTE9EX0VYVCI6IiIsInVuaWZvcm0gbWF0NCB2aWV3TWF0cml4OyIsInVuaWZvcm0gdmVjMyBjYW1lcmFQb3NpdGlvbjsiLCJ1bmlmb3JtIGJvb2wgaXNPcnRob2dyYXBoaWM7IiwwIT09ZS50b25lTWFwcGluZz8iI2RlZmluZSBUT05FX01BUFBJTkciOiIiLDAhPT1lLnRvbmVNYXBwaW5nP0lldC50b25lbWFwcGluZ19wYXJzX2ZyYWdtZW50OiIiLDAhPT1lLnRvbmVNYXBwaW5nP25vdCgidG9uZU1hcHBpbmciLGUudG9uZU1hcHBpbmcpOiIiLGUuZGl0aGVyaW5nPyIjZGVmaW5lIERJVEhFUklORyI6IiIsSWV0LmVuY29kaW5nc19wYXJzX2ZyYWdtZW50LGUubWFwPyRhdCgibWFwVGV4ZWxUb0xpbmVhciIsZS5tYXBFbmNvZGluZyk6IiIsZS5tYXRjYXA/JGF0KCJtYXRjYXBUZXhlbFRvTGluZWFyIixlLm1hdGNhcEVuY29kaW5nKToiIixlLmVudk1hcD8kYXQoImVudk1hcFRleGVsVG9MaW5lYXIiLGUuZW52TWFwRW5jb2RpbmcpOiIiLGUuZW1pc3NpdmVNYXA/JGF0KCJlbWlzc2l2ZU1hcFRleGVsVG9MaW5lYXIiLGUuZW1pc3NpdmVNYXBFbmNvZGluZyk6IiIsZS5saWdodE1hcD8kYXQoImxpZ2h0TWFwVGV4ZWxUb0xpbmVhciIsZS5saWdodE1hcEVuY29kaW5nKToiIix0b3QoImxpbmVhclRvT3V0cHV0VGV4ZWwiLGUub3V0cHV0RW5jb2RpbmcpLGUuZGVwdGhQYWNraW5nPyIjZGVmaW5lIERFUFRIX1BBQ0tJTkcgIitlLmRlcHRoUGFja2luZzoiIiwiXG4iXS5maWx0ZXIoZW90KS5qb2luKCJcbiIpKSxpPWlvdChpKSxpPWFvdChpLGUpLGk9b290KGksZSksYz1pb3QoYyksYz1hb3QoYyxlKSxjPW9vdChjLGUpLGk9bW90KGkpLGM9bW90KGMpLGUuaXNXZWJHTDImJiEwIT09ZS5pc1Jhd1NoYWRlck1hdGVyaWFsJiYoeT0iI3ZlcnNpb24gMzAwIGVzXG4iLFA9WyIjZGVmaW5lIGF0dHJpYnV0ZSBpbiIsIiNkZWZpbmUgdmFyeWluZyBvdXQiLCIjZGVmaW5lIHRleHR1cmUyRCB0ZXh0dXJlIl0uam9pbigiXG4iKSsiXG4iK1AseD1bIiNkZWZpbmUgdmFyeWluZyBpbiIsZS5nbHNsVmVyc2lvbj09PUg5PyIiOiJvdXQgaGlnaHAgdmVjNCBwY19mcmFnQ29sb3I7IixlLmdsc2xWZXJzaW9uPT09SDk/IiI6IiNkZWZpbmUgZ2xfRnJhZ0NvbG9yIHBjX2ZyYWdDb2xvciIsIiNkZWZpbmUgZ2xfRnJhZ0RlcHRoRVhUIGdsX0ZyYWdEZXB0aCIsIiNkZWZpbmUgdGV4dHVyZTJEIHRleHR1cmUiLCIjZGVmaW5lIHRleHR1cmVDdWJlIHRleHR1cmUiLCIjZGVmaW5lIHRleHR1cmUyRFByb2ogdGV4dHVyZVByb2oiLCIjZGVmaW5lIHRleHR1cmUyRExvZEVYVCB0ZXh0dXJlTG9kIiwiI2RlZmluZSB0ZXh0dXJlMkRQcm9qTG9kRVhUIHRleHR1cmVQcm9qTG9kIiwiI2RlZmluZSB0ZXh0dXJlQ3ViZUxvZEVYVCB0ZXh0dXJlTG9kIiwiI2RlZmluZSB0ZXh0dXJlMkRHcmFkRVhUIHRleHR1cmVHcmFkIiwiI2RlZmluZSB0ZXh0dXJlMkRQcm9qR3JhZEVYVCB0ZXh0dXJlUHJvakdyYWQiLCIjZGVmaW5lIHRleHR1cmVDdWJlR3JhZEVYVCB0ZXh0dXJlR3JhZCJdLmpvaW4oIlxuIikrIlxuIit4KTtjb25zdCBrPXkreCtjLHY9WGF0KG8sMzU2MzMseStQK2kpLHc9WGF0KG8sMzU2MzIsayk7aWYoby5hdHRhY2hTaGFkZXIoTyx2KSxvLmF0dGFjaFNoYWRlcihPLHcpLHZvaWQgMCE9PWUuaW5kZXgwQXR0cmlidXRlTmFtZT9vLmJpbmRBdHRyaWJMb2NhdGlvbihPLDAsZS5pbmRleDBBdHRyaWJ1dGVOYW1lKTohMD09PWUubW9ycGhUYXJnZXRzJiZvLmJpbmRBdHRyaWJMb2NhdGlvbihPLDAsInBvc2l0aW9uIiksby5saW5rUHJvZ3JhbShPKSx0LmRlYnVnLmNoZWNrU2hhZGVyRXJyb3JzKXtjb25zdCB0PW8uZ2V0UHJvZ3JhbUluZm9Mb2coTykudHJpbSgpLG49by5nZXRTaGFkZXJJbmZvTG9nKHYpLnRyaW0oKSxlPW8uZ2V0U2hhZGVySW5mb0xvZyh3KS50cmltKCk7bGV0IGE9ITAscj0hMDtpZighMT09PW8uZ2V0UHJvZ3JhbVBhcmFtZXRlcihPLDM1NzE0KSl7YT0hMTtjb25zdCBuPUthdChvLHYsInZlcnRleCIpLGU9S2F0KG8sdywiZnJhZ21lbnQiKTtjb25zb2xlLmVycm9yKCJUSFJFRS5XZWJHTFByb2dyYW06IHNoYWRlciBlcnJvcjogIixvLmdldEVycm9yKCksIjM1NzE1IixvLmdldFByb2dyYW1QYXJhbWV0ZXIoTywzNTcxNSksImdsLmdldFByb2dyYW1JbmZvTG9nIix0LG4sZSl9ZWxzZSIiIT09dD9jb25zb2xlLndhcm4oIlRIUkVFLldlYkdMUHJvZ3JhbTogZ2wuZ2V0UHJvZ3JhbUluZm9Mb2coKSIsdCk6IiIhPT1uJiYiIiE9PWV8fChyPSExKTtyJiYodGhpcy5kaWFnbm9zdGljcz17cnVubmFibGU6YSxwcm9ncmFtTG9nOnQsdmVydGV4U2hhZGVyOntsb2c6bixwcmVmaXg6UH0sZnJhZ21lbnRTaGFkZXI6e2xvZzplLHByZWZpeDp4fX0pfWxldCBTLEU7cmV0dXJuIG8uZGVsZXRlU2hhZGVyKHYpLG8uZGVsZXRlU2hhZGVyKHcpLHRoaXMuZ2V0VW5pZm9ybXM9ZnVuY3Rpb24oKXtyZXR1cm4gdm9pZCAwPT09UyYmKFM9bmV3IFphdChvLE8pKSxTfSx0aGlzLmdldEF0dHJpYnV0ZXM9ZnVuY3Rpb24oKXtyZXR1cm4gdm9pZCAwPT09RSYmKEU9KGZ1bmN0aW9uIHQobixlKXtjb25zdCBhPXt9LG89bi5nZXRQcm9ncmFtUGFyYW1ldGVyKGUsMzU3MjEpO2ZvcihsZXQgdD0wO3Q8bzt0Kyspe2NvbnN0IG89bi5nZXRBY3RpdmVBdHRyaWIoZSx0KS5uYW1lO2Fbb109bi5nZXRBdHRyaWJMb2NhdGlvbihlLG8pfXJldHVybiBhfSkobyxPKSksRX0sdGhpcy5kZXN0cm95PWZ1bmN0aW9uKCl7YS5yZWxlYXNlU3RhdGVzT2ZQcm9ncmFtKHRoaXMpLG8uZGVsZXRlUHJvZ3JhbShPKSx0aGlzLnByb2dyYW09dm9pZCAwfSx0aGlzLm5hbWU9ZS5zaGFkZXJOYW1lLHRoaXMuaWQ9SmF0KyssdGhpcy5jYWNoZUtleT1uLHRoaXMudXNlZFRpbWVzPTEsdGhpcy5wcm9ncmFtPU8sdGhpcy52ZXJ0ZXhTaGFkZXI9dix0aGlzLmZyYWdtZW50U2hhZGVyPXcsdGhpc31mdW5jdGlvbiB1b3QodCxuLGUsYSxvLHIpe2NvbnN0IGk9W10sYz1hLmlzV2ViR0wyLHM9YS5sb2dhcml0aG1pY0RlcHRoQnVmZmVyLGw9YS5mbG9hdFZlcnRleFRleHR1cmVzLG09YS5tYXhWZXJ0ZXhVbmlmb3JtcyxkPWEudmVydGV4VGV4dHVyZXM7bGV0IGc9YS5wcmVjaXNpb247Y29uc3QgcD17TWVzaERlcHRoTWF0ZXJpYWw6ImRlcHRoIixNZXNoRGlzdGFuY2VNYXRlcmlhbDoiZGlzdGFuY2VSR0JBIixNZXNoTm9ybWFsTWF0ZXJpYWw6Im5vcm1hbCIsTWVzaEJhc2ljTWF0ZXJpYWw6ImJhc2ljIixNZXNoTGFtYmVydE1hdGVyaWFsOiJsYW1iZXJ0IixNZXNoUGhvbmdNYXRlcmlhbDoicGhvbmciLE1lc2hUb29uTWF0ZXJpYWw6InRvb24iLE1lc2hTdGFuZGFyZE1hdGVyaWFsOiJwaHlzaWNhbCIsTWVzaFBoeXNpY2FsTWF0ZXJpYWw6InBoeXNpY2FsIixNZXNoTWF0Y2FwTWF0ZXJpYWw6Im1hdGNhcCIsTGluZUJhc2ljTWF0ZXJpYWw6ImJhc2ljIixMaW5lRGFzaGVkTWF0ZXJpYWw6ImRhc2hlZCIsUG9pbnRzTWF0ZXJpYWw6InBvaW50cyIsU2hhZG93TWF0ZXJpYWw6InNoYWRvdyIsU3ByaXRlTWF0ZXJpYWw6InNwcml0ZSJ9LGI9WyJwcmVjaXNpb24iLCJpc1dlYkdMMiIsInN1cHBvcnRzVmVydGV4VGV4dHVyZXMiLCJvdXRwdXRFbmNvZGluZyIsImluc3RhbmNpbmciLCJpbnN0YW5jaW5nQ29sb3IiLCJtYXAiLCJtYXBFbmNvZGluZyIsIm1hdGNhcCIsIm1hdGNhcEVuY29kaW5nIiwiZW52TWFwIiwiZW52TWFwTW9kZSIsImVudk1hcEVuY29kaW5nIiwiZW52TWFwQ3ViZVVWIiwibGlnaHRNYXAiLCJsaWdodE1hcEVuY29kaW5nIiwiYW9NYXAiLCJlbWlzc2l2ZU1hcCIsImVtaXNzaXZlTWFwRW5jb2RpbmciLCJidW1wTWFwIiwibm9ybWFsTWFwIiwib2JqZWN0U3BhY2VOb3JtYWxNYXAiLCJ0YW5nZW50U3BhY2VOb3JtYWxNYXAiLCJjbGVhcmNvYXRNYXAiLCJjbGVhcmNvYXRSb3VnaG5lc3NNYXAiLCJjbGVhcmNvYXROb3JtYWxNYXAiLCJkaXNwbGFjZW1lbnRNYXAiLCJzcGVjdWxhck1hcCIsInJvdWdobmVzc01hcCIsIm1ldGFsbmVzc01hcCIsImdyYWRpZW50TWFwIiwiYWxwaGFNYXAiLCJjb21iaW5lIiwidmVydGV4Q29sb3JzIiwidmVydGV4VGFuZ2VudHMiLCJ2ZXJ0ZXhVdnMiLCJ1dnNWZXJ0ZXhPbmx5IiwiZm9nIiwidXNlRm9nIiwiZm9nRXhwMiIsImZsYXRTaGFkaW5nIiwic2l6ZUF0dGVudWF0aW9uIiwibG9nYXJpdGhtaWNEZXB0aEJ1ZmZlciIsInNraW5uaW5nIiwibWF4Qm9uZXMiLCJ1c2VWZXJ0ZXhUZXh0dXJlIiwibW9ycGhUYXJnZXRzIiwibW9ycGhOb3JtYWxzIiwibWF4TW9ycGhUYXJnZXRzIiwibWF4TW9ycGhOb3JtYWxzIiwicHJlbXVsdGlwbGllZEFscGhhIiwibnVtRGlyTGlnaHRzIiwibnVtUG9pbnRMaWdodHMiLCJudW1TcG90TGlnaHRzIiwibnVtSGVtaUxpZ2h0cyIsIm51bVJlY3RBcmVhTGlnaHRzIiwibnVtRGlyTGlnaHRTaGFkb3dzIiwibnVtUG9pbnRMaWdodFNoYWRvd3MiLCJudW1TcG90TGlnaHRTaGFkb3dzIiwic2hhZG93TWFwRW5hYmxlZCIsInNoYWRvd01hcFR5cGUiLCJ0b25lTWFwcGluZyIsInBoeXNpY2FsbHlDb3JyZWN0TGlnaHRzIiwiYWxwaGFUZXN0IiwiZG91YmxlU2lkZWQiLCJmbGlwU2lkZWQiLCJudW1DbGlwcGluZ1BsYW5lcyIsIm51bUNsaXBJbnRlcnNlY3Rpb24iLCJkZXB0aFBhY2tpbmciLCJkaXRoZXJpbmciLCJzaGVlbiIsInRyYW5zbWlzc2lvbk1hcCJdO2Z1bmN0aW9uIHUodCl7bGV0IG47cmV0dXJuIHQmJnQuaXNUZXh0dXJlP249dC5lbmNvZGluZzp0JiZ0LmlzV2ViR0xSZW5kZXJUYXJnZXQ/KGNvbnNvbGUud2FybigiVEhSRUUuV2ViR0xQcm9ncmFtcy5nZXRUZXh0dXJlRW5jb2RpbmdGcm9tTWFwOiBkb24ndCB1c2UgcmVuZGVyIHRhcmdldHMgYXMgdGV4dHVyZXMuIFVzZSB0aGVpciAudGV4dHVyZSBwcm9wZXJ0eSBpbnN0ZWFkLiIpLG49dC50ZXh0dXJlLmVuY29kaW5nKTpuPUk5LG59cmV0dXJue2dldFBhcmFtZXRlcnM6ZnVuY3Rpb24gZihvLGksYixoLF8pe2NvbnN0IEM9aC5mb2csTT1uLmdldChvLmVudk1hcHx8KG8uaXNNZXNoU3RhbmRhcmRNYXRlcmlhbD9oLmVudmlyb25tZW50Om51bGwpKSxPPXBbby50eXBlXSxQPV8uaXNTa2lubmVkTWVzaD8oZnVuY3Rpb24geCh0KXtjb25zdCBuPXQuc2tlbGV0b24uYm9uZXM7aWYobClyZXR1cm4gMTAyNDt7Y29uc3QgdD1NYXRoLmZsb29yKChtLTIwKS80KSxlPU1hdGgubWluKHQsbi5sZW5ndGgpO3JldHVybiBlPG4ubGVuZ3RoPyhjb25zb2xlLndhcm4oIlRIUkVFLldlYkdMUmVuZGVyZXI6IFNrZWxldG9uIGhhcyAiK24ubGVuZ3RoKyIgYm9uZXMuIFRoaXMgR1BVIHN1cHBvcnRzICIrZSsiLiIpLDApOmV9fSkoXyk6MDtsZXQgeSxrO2lmKG51bGwhPT1vLnByZWNpc2lvbiYmKGc9YS5nZXRNYXhQcmVjaXNpb24oby5wcmVjaXNpb24pLGchPT1vLnByZWNpc2lvbiYmY29uc29sZS53YXJuKCJUSFJFRS5XZWJHTFByb2dyYW0uZ2V0UGFyYW1ldGVyczoiLG8ucHJlY2lzaW9uLCJub3Qgc3VwcG9ydGVkLCB1c2luZyIsZywiaW5zdGVhZC4iKSksTyl7Y29uc3QgdD1GZXRbT107eT10LnZlcnRleFNoYWRlcixrPXQuZnJhZ21lbnRTaGFkZXJ9ZWxzZSB5PW8udmVydGV4U2hhZGVyLGs9by5mcmFnbWVudFNoYWRlcjtjb25zdCB2PXQuZ2V0UmVuZGVyVGFyZ2V0KCk7cmV0dXJue2lzV2ViR0wyOmMsc2hhZGVySUQ6TyxzaGFkZXJOYW1lOm8udHlwZSx2ZXJ0ZXhTaGFkZXI6eSxmcmFnbWVudFNoYWRlcjprLGRlZmluZXM6by5kZWZpbmVzLGlzUmF3U2hhZGVyTWF0ZXJpYWw6ITA9PT1vLmlzUmF3U2hhZGVyTWF0ZXJpYWwsZ2xzbFZlcnNpb246by5nbHNsVmVyc2lvbixwcmVjaXNpb246ZyxpbnN0YW5jaW5nOiEwPT09Xy5pc0luc3RhbmNlZE1lc2gsaW5zdGFuY2luZ0NvbG9yOiEwPT09Xy5pc0luc3RhbmNlZE1lc2gmJm51bGwhPT1fLmluc3RhbmNlQ29sb3Isc3VwcG9ydHNWZXJ0ZXhUZXh0dXJlczpkLG91dHB1dEVuY29kaW5nOm51bGwhPT12P3Uodi50ZXh0dXJlKTp0Lm91dHB1dEVuY29kaW5nLG1hcDohIW8ubWFwLG1hcEVuY29kaW5nOnUoby5tYXApLG1hdGNhcDohIW8ubWF0Y2FwLG1hdGNhcEVuY29kaW5nOnUoby5tYXRjYXApLGVudk1hcDohIU0sZW52TWFwTW9kZTpNJiZNLm1hcHBpbmcsZW52TWFwRW5jb2Rpbmc6dShNKSxlbnZNYXBDdWJlVVY6ISFNJiYoMzA2PT09TS5tYXBwaW5nfHwzMDc9PT1NLm1hcHBpbmcpLGxpZ2h0TWFwOiEhby5saWdodE1hcCxsaWdodE1hcEVuY29kaW5nOnUoby5saWdodE1hcCksYW9NYXA6ISFvLmFvTWFwLGVtaXNzaXZlTWFwOiEhby5lbWlzc2l2ZU1hcCxlbWlzc2l2ZU1hcEVuY29kaW5nOnUoby5lbWlzc2l2ZU1hcCksYnVtcE1hcDohIW8uYnVtcE1hcCxub3JtYWxNYXA6ISFvLm5vcm1hbE1hcCxvYmplY3RTcGFjZU5vcm1hbE1hcDoxPT09by5ub3JtYWxNYXBUeXBlLHRhbmdlbnRTcGFjZU5vcm1hbE1hcDowPT09by5ub3JtYWxNYXBUeXBlLGNsZWFyY29hdE1hcDohIW8uY2xlYXJjb2F0TWFwLGNsZWFyY29hdFJvdWdobmVzc01hcDohIW8uY2xlYXJjb2F0Um91Z2huZXNzTWFwLGNsZWFyY29hdE5vcm1hbE1hcDohIW8uY2xlYXJjb2F0Tm9ybWFsTWFwLGRpc3BsYWNlbWVudE1hcDohIW8uZGlzcGxhY2VtZW50TWFwLHJvdWdobmVzc01hcDohIW8ucm91Z2huZXNzTWFwLG1ldGFsbmVzc01hcDohIW8ubWV0YWxuZXNzTWFwLHNwZWN1bGFyTWFwOiEhby5zcGVjdWxhck1hcCxhbHBoYU1hcDohIW8uYWxwaGFNYXAsZ3JhZGllbnRNYXA6ISFvLmdyYWRpZW50TWFwLHNoZWVuOiEhby5zaGVlbix0cmFuc21pc3Npb25NYXA6ISFvLnRyYW5zbWlzc2lvbk1hcCxjb21iaW5lOm8uY29tYmluZSx2ZXJ0ZXhUYW5nZW50czpvLm5vcm1hbE1hcCYmby52ZXJ0ZXhUYW5nZW50cyx2ZXJ0ZXhDb2xvcnM6by52ZXJ0ZXhDb2xvcnMsdmVydGV4VXZzOiEhKG8ubWFwfHxvLmJ1bXBNYXB8fG8ubm9ybWFsTWFwfHxvLnNwZWN1bGFyTWFwfHxvLmFscGhhTWFwfHxvLmVtaXNzaXZlTWFwfHxvLnJvdWdobmVzc01hcHx8by5tZXRhbG5lc3NNYXB8fG8uY2xlYXJjb2F0TWFwfHxvLmNsZWFyY29hdFJvdWdobmVzc01hcHx8by5jbGVhcmNvYXROb3JtYWxNYXB8fG8uZGlzcGxhY2VtZW50TWFwfHxvLnRyYW5zbWlzc2lvbk1hcCksdXZzVmVydGV4T25seTohKG8ubWFwfHxvLmJ1bXBNYXB8fG8ubm9ybWFsTWFwfHxvLnNwZWN1bGFyTWFwfHxvLmFscGhhTWFwfHxvLmVtaXNzaXZlTWFwfHxvLnJvdWdobmVzc01hcHx8by5tZXRhbG5lc3NNYXB8fG8uY2xlYXJjb2F0Tm9ybWFsTWFwfHxvLnRyYW5zbWlzc2lvbk1hcHx8IW8uZGlzcGxhY2VtZW50TWFwKSxmb2c6ISFDLHVzZUZvZzpvLmZvZyxmb2dFeHAyOkMmJkMuaXNGb2dFeHAyLGZsYXRTaGFkaW5nOm8uZmxhdFNoYWRpbmcsc2l6ZUF0dGVudWF0aW9uOm8uc2l6ZUF0dGVudWF0aW9uLGxvZ2FyaXRobWljRGVwdGhCdWZmZXI6cyxza2lubmluZzpvLnNraW5uaW5nJiZQPjAsbWF4Qm9uZXM6UCx1c2VWZXJ0ZXhUZXh0dXJlOmwsbW9ycGhUYXJnZXRzOm8ubW9ycGhUYXJnZXRzLG1vcnBoTm9ybWFsczpvLm1vcnBoTm9ybWFscyxtYXhNb3JwaFRhcmdldHM6dC5tYXhNb3JwaFRhcmdldHMsbWF4TW9ycGhOb3JtYWxzOnQubWF4TW9ycGhOb3JtYWxzLG51bURpckxpZ2h0czppLmRpcmVjdGlvbmFsLmxlbmd0aCxudW1Qb2ludExpZ2h0czppLnBvaW50Lmxlbmd0aCxudW1TcG90TGlnaHRzOmkuc3BvdC5sZW5ndGgsbnVtUmVjdEFyZWFMaWdodHM6aS5yZWN0QXJlYS5sZW5ndGgsbnVtSGVtaUxpZ2h0czppLmhlbWkubGVuZ3RoLG51bURpckxpZ2h0U2hhZG93czppLmRpcmVjdGlvbmFsU2hhZG93TWFwLmxlbmd0aCxudW1Qb2ludExpZ2h0U2hhZG93czppLnBvaW50U2hhZG93TWFwLmxlbmd0aCxudW1TcG90TGlnaHRTaGFkb3dzOmkuc3BvdFNoYWRvd01hcC5sZW5ndGgsbnVtQ2xpcHBpbmdQbGFuZXM6ci5udW1QbGFuZXMsbnVtQ2xpcEludGVyc2VjdGlvbjpyLm51bUludGVyc2VjdGlvbixkaXRoZXJpbmc6by5kaXRoZXJpbmcsc2hhZG93TWFwRW5hYmxlZDp0LnNoYWRvd01hcC5lbmFibGVkJiZiLmxlbmd0aD4wLHNoYWRvd01hcFR5cGU6dC5zaGFkb3dNYXAudHlwZSx0b25lTWFwcGluZzpvLnRvbmVNYXBwZWQ/dC50b25lTWFwcGluZzowLHBoeXNpY2FsbHlDb3JyZWN0TGlnaHRzOnQucGh5c2ljYWxseUNvcnJlY3RMaWdodHMscHJlbXVsdGlwbGllZEFscGhhOm8ucHJlbXVsdGlwbGllZEFscGhhLGFscGhhVGVzdDpvLmFscGhhVGVzdCxkb3VibGVTaWRlZDoyPT09by5zaWRlLGZsaXBTaWRlZDoxPT09by5zaWRlLGRlcHRoUGFja2luZzp2b2lkIDAhPT1vLmRlcHRoUGFja2luZyYmby5kZXB0aFBhY2tpbmcsaW5kZXgwQXR0cmlidXRlTmFtZTpvLmluZGV4MEF0dHJpYnV0ZU5hbWUsZXh0ZW5zaW9uRGVyaXZhdGl2ZXM6by5leHRlbnNpb25zJiZvLmV4dGVuc2lvbnMuZGVyaXZhdGl2ZXMsZXh0ZW5zaW9uRnJhZ0RlcHRoOm8uZXh0ZW5zaW9ucyYmby5leHRlbnNpb25zLmZyYWdEZXB0aCxleHRlbnNpb25EcmF3QnVmZmVyczpvLmV4dGVuc2lvbnMmJm8uZXh0ZW5zaW9ucy5kcmF3QnVmZmVycyxleHRlbnNpb25TaGFkZXJUZXh0dXJlTE9EOm8uZXh0ZW5zaW9ucyYmby5leHRlbnNpb25zLnNoYWRlclRleHR1cmVMT0QscmVuZGVyZXJFeHRlbnNpb25GcmFnRGVwdGg6Y3x8ZS5oYXMoIkVYVF9mcmFnX2RlcHRoIikscmVuZGVyZXJFeHRlbnNpb25EcmF3QnVmZmVyczpjfHxlLmhhcygiV0VCR0xfZHJhd19idWZmZXJzIikscmVuZGVyZXJFeHRlbnNpb25TaGFkZXJUZXh0dXJlTG9kOmN8fGUuaGFzKCJFWFRfc2hhZGVyX3RleHR1cmVfbG9kIiksY3VzdG9tUHJvZ3JhbUNhY2hlS2V5Om8uY3VzdG9tUHJvZ3JhbUNhY2hlS2V5KCl9fSxnZXRQcm9ncmFtQ2FjaGVLZXk6ZnVuY3Rpb24gaChuKXtjb25zdCBlPVtdO2lmKG4uc2hhZGVySUQ/ZS5wdXNoKG4uc2hhZGVySUQpOihlLnB1c2gobi5mcmFnbWVudFNoYWRlciksZS5wdXNoKG4udmVydGV4U2hhZGVyKSksdm9pZCAwIT09bi5kZWZpbmVzKWZvcihjb25zdCB0IGluIG4uZGVmaW5lcyllLnB1c2godCksZS5wdXNoKG4uZGVmaW5lc1t0XSk7aWYoITE9PT1uLmlzUmF3U2hhZGVyTWF0ZXJpYWwpe2ZvcihsZXQgdD0wO3Q8Yi5sZW5ndGg7dCsrKWUucHVzaChuW2JbdF1dKTtlLnB1c2godC5vdXRwdXRFbmNvZGluZyksZS5wdXNoKHQuZ2FtbWFGYWN0b3IpfXJldHVybiBlLnB1c2gobi5jdXN0b21Qcm9ncmFtQ2FjaGVLZXkpLGUuam9pbigpfSxnZXRVbmlmb3JtczpmdW5jdGlvbiBfKHQpe2NvbnN0IG49cFt0LnR5cGVdO2xldCBlO3JldHVybiBlPW4/Q2V0LmNsb25lKEZldFtuXS51bmlmb3Jtcyk6dC51bmlmb3JtcyxlfSxhY3F1aXJlUHJvZ3JhbTpmdW5jdGlvbiBDKG4sZSl7bGV0IGE7Zm9yKGxldCB0PTAsbj1pLmxlbmd0aDt0PG47dCsrKXtjb25zdCBuPWlbdF07aWYobi5jYWNoZUtleT09PWUpe2E9biwrK2EudXNlZFRpbWVzO2JyZWFrfX1yZXR1cm4gdm9pZCAwPT09YSYmKGE9bmV3IGJvdCh0LGUsbixvKSxpLnB1c2goYSkpLGF9LHJlbGVhc2VQcm9ncmFtOmZ1bmN0aW9uIE0odCl7aWYoMD09LS10LnVzZWRUaW1lcyl7Y29uc3Qgbj1pLmluZGV4T2YodCk7aVtuXT1pW2kubGVuZ3RoLTFdLGkucG9wKCksdC5kZXN0cm95KCl9fSxwcm9ncmFtczppfX1mdW5jdGlvbiBmb3QoKXtsZXQgdD1uZXcgV2Vha01hcDtyZXR1cm57Z2V0OmZ1bmN0aW9uIG4oZSl7bGV0IGE9dC5nZXQoZSk7cmV0dXJuIHZvaWQgMD09PWEmJihhPXt9LHQuc2V0KGUsYSkpLGF9LHJlbW92ZTpmdW5jdGlvbiBlKG4pe3QuZGVsZXRlKG4pfSx1cGRhdGU6ZnVuY3Rpb24gYShuLGUsbyl7dC5nZXQobilbZV09b30sZGlzcG9zZTpmdW5jdGlvbiBvKCl7dD1uZXcgV2Vha01hcH19fWZ1bmN0aW9uIGhvdCh0LG4pe3JldHVybiB0Lmdyb3VwT3JkZXIhPT1uLmdyb3VwT3JkZXI/dC5ncm91cE9yZGVyLW4uZ3JvdXBPcmRlcjp0LnJlbmRlck9yZGVyIT09bi5yZW5kZXJPcmRlcj90LnJlbmRlck9yZGVyLW4ucmVuZGVyT3JkZXI6dC5wcm9ncmFtIT09bi5wcm9ncmFtP3QucHJvZ3JhbS5pZC1uLnByb2dyYW0uaWQ6dC5tYXRlcmlhbC5pZCE9PW4ubWF0ZXJpYWwuaWQ/dC5tYXRlcmlhbC5pZC1uLm1hdGVyaWFsLmlkOnQueiE9PW4uej90Lnotbi56OnQuaWQtbi5pZH1mdW5jdGlvbiBfb3QodCxuKXtyZXR1cm4gdC5ncm91cE9yZGVyIT09bi5ncm91cE9yZGVyP3QuZ3JvdXBPcmRlci1uLmdyb3VwT3JkZXI6dC5yZW5kZXJPcmRlciE9PW4ucmVuZGVyT3JkZXI/dC5yZW5kZXJPcmRlci1uLnJlbmRlck9yZGVyOnQueiE9PW4uej9uLnotdC56OnQuaWQtbi5pZH1mdW5jdGlvbiBDb3QodCl7Y29uc3Qgbj1bXTtsZXQgZT0wO2NvbnN0IGE9W10sbz1bXSxyPXtpZDotMX07ZnVuY3Rpb24gaShhLG8saSxjLHMsbCl7bGV0IG09bltlXTtjb25zdCBkPXQuZ2V0KGkpO3JldHVybiB2b2lkIDA9PT1tPyhtPXtpZDphLmlkLG9iamVjdDphLGdlb21ldHJ5Om8sbWF0ZXJpYWw6aSxwcm9ncmFtOmQucHJvZ3JhbXx8cixncm91cE9yZGVyOmMscmVuZGVyT3JkZXI6YS5yZW5kZXJPcmRlcix6OnMsZ3JvdXA6bH0sbltlXT1tKToobS5pZD1hLmlkLG0ub2JqZWN0PWEsbS5nZW9tZXRyeT1vLG0ubWF0ZXJpYWw9aSxtLnByb2dyYW09ZC5wcm9ncmFtfHxyLG0uZ3JvdXBPcmRlcj1jLG0ucmVuZGVyT3JkZXI9YS5yZW5kZXJPcmRlcixtLno9cyxtLmdyb3VwPWwpLGUrKyxtfXJldHVybntvcGFxdWU6YSx0cmFuc3BhcmVudDpvLGluaXQ6ZnVuY3Rpb24gYygpe2U9MCxhLmxlbmd0aD0wLG8ubGVuZ3RoPTB9LHB1c2g6ZnVuY3Rpb24gcyh0LG4sZSxyLGMsbCl7Y29uc3QgbT1pKHQsbixlLHIsYyxsKTsoITA9PT1lLnRyYW5zcGFyZW50P286YSkucHVzaChtKX0sdW5zaGlmdDpmdW5jdGlvbiBsKHQsbixlLHIsYyxzKXtjb25zdCBsPWkodCxuLGUscixjLHMpOyghMD09PWUudHJhbnNwYXJlbnQ/bzphKS51bnNoaWZ0KGwpfSxmaW5pc2g6ZnVuY3Rpb24gbSgpe2ZvcihsZXQgdD1lLGE9bi5sZW5ndGg7dDxhO3QrKyl7Y29uc3QgZT1uW3RdO2lmKG51bGw9PT1lLmlkKWJyZWFrO2UuaWQ9bnVsbCxlLm9iamVjdD1udWxsLGUuZ2VvbWV0cnk9bnVsbCxlLm1hdGVyaWFsPW51bGwsZS5wcm9ncmFtPW51bGwsZS5ncm91cD1udWxsfX0sc29ydDpmdW5jdGlvbiBkKHQsbil7YS5sZW5ndGg+MSYmYS5zb3J0KHR8fGhvdCksby5sZW5ndGg+MSYmby5zb3J0KG58fF9vdCl9fX1mdW5jdGlvbiBNb3QodCl7bGV0IG49bmV3IFdlYWtNYXA7cmV0dXJue2dldDpmdW5jdGlvbiBlKGEsbyl7Y29uc3Qgcj1uLmdldChhKTtsZXQgaTtyZXR1cm4gdm9pZCAwPT09cj8oaT1uZXcgQ290KHQpLG4uc2V0KGEsbmV3IFdlYWtNYXApLG4uZ2V0KGEpLnNldChvLGkpKTooaT1yLmdldChvKSx2b2lkIDA9PT1pJiYoaT1uZXcgQ290KHQpLHIuc2V0KG8saSkpKSxpfSxkaXNwb3NlOmZ1bmN0aW9uIGEoKXtuPW5ldyBXZWFrTWFwfX19ZnVuY3Rpb24gT290KCl7Y29uc3QgdD17fTtyZXR1cm57Z2V0OmZ1bmN0aW9uKG4pe2lmKHZvaWQgMCE9PXRbbi5pZF0pcmV0dXJuIHRbbi5pZF07bGV0IGU7c3dpdGNoKG4udHlwZSl7Y2FzZSJEaXJlY3Rpb25hbExpZ2h0IjplPXtkaXJlY3Rpb246bmV3IHR0dCxjb2xvcjpuZXcgT250fTticmVhaztjYXNlIlNwb3RMaWdodCI6ZT17cG9zaXRpb246bmV3IHR0dCxkaXJlY3Rpb246bmV3IHR0dCxjb2xvcjpuZXcgT250LGRpc3RhbmNlOjAsY29uZUNvczowLHBlbnVtYnJhQ29zOjAsZGVjYXk6MH07YnJlYWs7Y2FzZSJQb2ludExpZ2h0IjplPXtwb3NpdGlvbjpuZXcgdHR0LGNvbG9yOm5ldyBPbnQsZGlzdGFuY2U6MCxkZWNheTowfTticmVhaztjYXNlIkhlbWlzcGhlcmVMaWdodCI6ZT17ZGlyZWN0aW9uOm5ldyB0dHQsc2t5Q29sb3I6bmV3IE9udCxncm91bmRDb2xvcjpuZXcgT250fTticmVhaztjYXNlIlJlY3RBcmVhTGlnaHQiOmU9e2NvbG9yOm5ldyBPbnQscG9zaXRpb246bmV3IHR0dCxoYWxmV2lkdGg6bmV3IHR0dCxoYWxmSGVpZ2h0Om5ldyB0dHR9fXJldHVybiB0W24uaWRdPWUsZX19fWxldCBQb3Q9MDtmdW5jdGlvbiB4b3QodCxuKXtyZXR1cm4obi5jYXN0U2hhZG93PzE6MCktKHQuY2FzdFNoYWRvdz8xOjApfWZ1bmN0aW9uIHlvdCh0LG4pe2NvbnN0IGU9bmV3IE9vdCxhPShmdW5jdGlvbiBvKCl7Y29uc3QgdD17fTtyZXR1cm57Z2V0OmZ1bmN0aW9uKG4pe2lmKHZvaWQgMCE9PXRbbi5pZF0pcmV0dXJuIHRbbi5pZF07bGV0IGU7c3dpdGNoKG4udHlwZSl7Y2FzZSJEaXJlY3Rpb25hbExpZ2h0IjpjYXNlIlNwb3RMaWdodCI6ZT17c2hhZG93QmlhczowLHNoYWRvd05vcm1hbEJpYXM6MCxzaGFkb3dSYWRpdXM6MSxzaGFkb3dNYXBTaXplOm5ldyBXOX07YnJlYWs7Y2FzZSJQb2ludExpZ2h0IjplPXtzaGFkb3dCaWFzOjAsc2hhZG93Tm9ybWFsQmlhczowLHNoYWRvd1JhZGl1czoxLHNoYWRvd01hcFNpemU6bmV3IFc5LHNoYWRvd0NhbWVyYU5lYXI6MSxzaGFkb3dDYW1lcmFGYXI6MWUzfX1yZXR1cm4gdFtuLmlkXT1lLGV9fX0pKCkscj17dmVyc2lvbjowLGhhc2g6e2RpcmVjdGlvbmFsTGVuZ3RoOi0xLHBvaW50TGVuZ3RoOi0xLHNwb3RMZW5ndGg6LTEscmVjdEFyZWFMZW5ndGg6LTEsaGVtaUxlbmd0aDotMSxudW1EaXJlY3Rpb25hbFNoYWRvd3M6LTEsbnVtUG9pbnRTaGFkb3dzOi0xLG51bVNwb3RTaGFkb3dzOi0xfSxhbWJpZW50OlswLDAsMF0scHJvYmU6W10sZGlyZWN0aW9uYWw6W10sZGlyZWN0aW9uYWxTaGFkb3c6W10sZGlyZWN0aW9uYWxTaGFkb3dNYXA6W10sZGlyZWN0aW9uYWxTaGFkb3dNYXRyaXg6W10sc3BvdDpbXSxzcG90U2hhZG93OltdLHNwb3RTaGFkb3dNYXA6W10sc3BvdFNoYWRvd01hdHJpeDpbXSxyZWN0QXJlYTpbXSxyZWN0QXJlYUxUQzE6bnVsbCxyZWN0QXJlYUxUQzI6bnVsbCxwb2ludDpbXSxwb2ludFNoYWRvdzpbXSxwb2ludFNoYWRvd01hcDpbXSxwb2ludFNoYWRvd01hdHJpeDpbXSxoZW1pOltdfTtmb3IobGV0IHQ9MDt0PDk7dCsrKXIucHJvYmUucHVzaChuZXcgdHR0KTtjb25zdCBpPW5ldyB0dHQsYz1uZXcgU3R0LHM9bmV3IFN0dDtyZXR1cm57c2V0dXA6ZnVuY3Rpb24gbChvKXtsZXQgaT0wLGM9MCxzPTA7Zm9yKGxldCB0PTA7dDw5O3QrKylyLnByb2JlW3RdLnNldCgwLDAsMCk7bGV0IGw9MCxtPTAsZD0wLGc9MCxwPTAsYj0wLHU9MCxmPTA7by5zb3J0KHhvdCk7Zm9yKGxldCB0PTAsbj1vLmxlbmd0aDt0PG47dCsrKXtjb25zdCBuPW9bdF0saD1uLmNvbG9yLF89bi5pbnRlbnNpdHksQz1uLmRpc3RhbmNlLE09bi5zaGFkb3cmJm4uc2hhZG93Lm1hcD9uLnNoYWRvdy5tYXAudGV4dHVyZTpudWxsO2lmKG4uaXNBbWJpZW50TGlnaHQpaSs9aC5yKl8sYys9aC5nKl8scys9aC5iKl87ZWxzZSBpZihuLmlzTGlnaHRQcm9iZSlmb3IobGV0IHQ9MDt0PDk7dCsrKXIucHJvYmVbdF0uYWRkU2NhbGVkVmVjdG9yKG4uc2guY29lZmZpY2llbnRzW3RdLF8pO2Vsc2UgaWYobi5pc0RpcmVjdGlvbmFsTGlnaHQpe2NvbnN0IHQ9ZS5nZXQobik7aWYodC5jb2xvci5jb3B5KG4uY29sb3IpLm11bHRpcGx5U2NhbGFyKG4uaW50ZW5zaXR5KSxuLmNhc3RTaGFkb3cpe2NvbnN0IHQ9bi5zaGFkb3csZT1hLmdldChuKTtlLnNoYWRvd0JpYXM9dC5iaWFzLGUuc2hhZG93Tm9ybWFsQmlhcz10Lm5vcm1hbEJpYXMsZS5zaGFkb3dSYWRpdXM9dC5yYWRpdXMsZS5zaGFkb3dNYXBTaXplPXQubWFwU2l6ZSxyLmRpcmVjdGlvbmFsU2hhZG93W2xdPWUsci5kaXJlY3Rpb25hbFNoYWRvd01hcFtsXT1NLHIuZGlyZWN0aW9uYWxTaGFkb3dNYXRyaXhbbF09bi5zaGFkb3cubWF0cml4LGIrK31yLmRpcmVjdGlvbmFsW2xdPXQsbCsrfWVsc2UgaWYobi5pc1Nwb3RMaWdodCl7Y29uc3QgdD1lLmdldChuKTtpZih0LnBvc2l0aW9uLnNldEZyb21NYXRyaXhQb3NpdGlvbihuLm1hdHJpeFdvcmxkKSx0LmNvbG9yLmNvcHkoaCkubXVsdGlwbHlTY2FsYXIoXyksdC5kaXN0YW5jZT1DLHQuY29uZUNvcz1NYXRoLmNvcyhuLmFuZ2xlKSx0LnBlbnVtYnJhQ29zPU1hdGguY29zKG4uYW5nbGUqKDEtbi5wZW51bWJyYSkpLHQuZGVjYXk9bi5kZWNheSxuLmNhc3RTaGFkb3cpe2NvbnN0IHQ9bi5zaGFkb3csZT1hLmdldChuKTtlLnNoYWRvd0JpYXM9dC5iaWFzLGUuc2hhZG93Tm9ybWFsQmlhcz10Lm5vcm1hbEJpYXMsZS5zaGFkb3dSYWRpdXM9dC5yYWRpdXMsZS5zaGFkb3dNYXBTaXplPXQubWFwU2l6ZSxyLnNwb3RTaGFkb3dbZF09ZSxyLnNwb3RTaGFkb3dNYXBbZF09TSxyLnNwb3RTaGFkb3dNYXRyaXhbZF09bi5zaGFkb3cubWF0cml4LGYrK31yLnNwb3RbZF09dCxkKyt9ZWxzZSBpZihuLmlzUmVjdEFyZWFMaWdodCl7Y29uc3QgdD1lLmdldChuKTt0LmNvbG9yLmNvcHkoaCkubXVsdGlwbHlTY2FsYXIoXyksdC5oYWxmV2lkdGguc2V0KC41Km4ud2lkdGgsMCwwKSx0LmhhbGZIZWlnaHQuc2V0KDAsLjUqbi5oZWlnaHQsMCksci5yZWN0QXJlYVtnXT10LGcrK31lbHNlIGlmKG4uaXNQb2ludExpZ2h0KXtjb25zdCB0PWUuZ2V0KG4pO2lmKHQuY29sb3IuY29weShuLmNvbG9yKS5tdWx0aXBseVNjYWxhcihuLmludGVuc2l0eSksdC5kaXN0YW5jZT1uLmRpc3RhbmNlLHQuZGVjYXk9bi5kZWNheSxuLmNhc3RTaGFkb3cpe2NvbnN0IHQ9bi5zaGFkb3csZT1hLmdldChuKTtlLnNoYWRvd0JpYXM9dC5iaWFzLGUuc2hhZG93Tm9ybWFsQmlhcz10Lm5vcm1hbEJpYXMsZS5zaGFkb3dSYWRpdXM9dC5yYWRpdXMsZS5zaGFkb3dNYXBTaXplPXQubWFwU2l6ZSxlLnNoYWRvd0NhbWVyYU5lYXI9dC5jYW1lcmEubmVhcixlLnNoYWRvd0NhbWVyYUZhcj10LmNhbWVyYS5mYXIsci5wb2ludFNoYWRvd1ttXT1lLHIucG9pbnRTaGFkb3dNYXBbbV09TSxyLnBvaW50U2hhZG93TWF0cml4W21dPW4uc2hhZG93Lm1hdHJpeCx1Kyt9ci5wb2ludFttXT10LG0rK31lbHNlIGlmKG4uaXNIZW1pc3BoZXJlTGlnaHQpe2NvbnN0IHQ9ZS5nZXQobik7dC5za3lDb2xvci5jb3B5KG4uY29sb3IpLm11bHRpcGx5U2NhbGFyKF8pLHQuZ3JvdW5kQ29sb3IuY29weShuLmdyb3VuZENvbG9yKS5tdWx0aXBseVNjYWxhcihfKSxyLmhlbWlbcF09dCxwKyt9fWc+MCYmKG4uaXNXZWJHTDJ8fCEwPT09dC5oYXMoIk9FU190ZXh0dXJlX2Zsb2F0X2xpbmVhciIpPyhyLnJlY3RBcmVhTFRDMT1OZXQuTFRDX0ZMT0FUXzEsci5yZWN0QXJlYUxUQzI9TmV0LkxUQ19GTE9BVF8yKTohMD09PXQuaGFzKCJPRVNfdGV4dHVyZV9oYWxmX2Zsb2F0X2xpbmVhciIpPyhyLnJlY3RBcmVhTFRDMT1OZXQuTFRDX0hBTEZfMSxyLnJlY3RBcmVhTFRDMj1OZXQuTFRDX0hBTEZfMik6Y29uc29sZS5lcnJvcigiVEhSRUUuV2ViR0xSZW5kZXJlcjogVW5hYmxlIHRvIHVzZSBSZWN0QXJlYUxpZ2h0LiBNaXNzaW5nIFdlYkdMIGV4dGVuc2lvbnMuIikpLHIuYW1iaWVudFswXT1pLHIuYW1iaWVudFsxXT1jLHIuYW1iaWVudFsyXT1zO2NvbnN0IGg9ci5oYXNoO2guZGlyZWN0aW9uYWxMZW5ndGg9PT1sJiZoLnBvaW50TGVuZ3RoPT09bSYmaC5zcG90TGVuZ3RoPT09ZCYmaC5yZWN0QXJlYUxlbmd0aD09PWcmJmguaGVtaUxlbmd0aD09PXAmJmgubnVtRGlyZWN0aW9uYWxTaGFkb3dzPT09YiYmaC5udW1Qb2ludFNoYWRvd3M9PT11JiZoLm51bVNwb3RTaGFkb3dzPT09Znx8KHIuZGlyZWN0aW9uYWwubGVuZ3RoPWwsci5zcG90Lmxlbmd0aD1kLHIucmVjdEFyZWEubGVuZ3RoPWcsci5wb2ludC5sZW5ndGg9bSxyLmhlbWkubGVuZ3RoPXAsci5kaXJlY3Rpb25hbFNoYWRvdy5sZW5ndGg9YixyLmRpcmVjdGlvbmFsU2hhZG93TWFwLmxlbmd0aD1iLHIucG9pbnRTaGFkb3cubGVuZ3RoPXUsci5wb2ludFNoYWRvd01hcC5sZW5ndGg9dSxyLnNwb3RTaGFkb3cubGVuZ3RoPWYsci5zcG90U2hhZG93TWFwLmxlbmd0aD1mLHIuZGlyZWN0aW9uYWxTaGFkb3dNYXRyaXgubGVuZ3RoPWIsci5wb2ludFNoYWRvd01hdHJpeC5sZW5ndGg9dSxyLnNwb3RTaGFkb3dNYXRyaXgubGVuZ3RoPWYsaC5kaXJlY3Rpb25hbExlbmd0aD1sLGgucG9pbnRMZW5ndGg9bSxoLnNwb3RMZW5ndGg9ZCxoLnJlY3RBcmVhTGVuZ3RoPWcsaC5oZW1pTGVuZ3RoPXAsaC5udW1EaXJlY3Rpb25hbFNoYWRvd3M9YixoLm51bVBvaW50U2hhZG93cz11LGgubnVtU3BvdFNoYWRvd3M9ZixyLnZlcnNpb249UG90KyspfSxzZXR1cFZpZXc6ZnVuY3Rpb24gbSh0LG4pe2xldCBlPTAsYT0wLG89MCxsPTAsbT0wO2NvbnN0IGQ9bi5tYXRyaXhXb3JsZEludmVyc2U7Zm9yKGxldCBuPTAsZz10Lmxlbmd0aDtuPGc7bisrKXtjb25zdCBnPXRbbl07aWYoZy5pc0RpcmVjdGlvbmFsTGlnaHQpe2NvbnN0IHQ9ci5kaXJlY3Rpb25hbFtlXTt0LmRpcmVjdGlvbi5zZXRGcm9tTWF0cml4UG9zaXRpb24oZy5tYXRyaXhXb3JsZCksaS5zZXRGcm9tTWF0cml4UG9zaXRpb24oZy50YXJnZXQubWF0cml4V29ybGQpLHQuZGlyZWN0aW9uLnN1YihpKSx0LmRpcmVjdGlvbi50cmFuc2Zvcm1EaXJlY3Rpb24oZCksZSsrfWVsc2UgaWYoZy5pc1Nwb3RMaWdodCl7Y29uc3QgdD1yLnNwb3Rbb107dC5wb3NpdGlvbi5zZXRGcm9tTWF0cml4UG9zaXRpb24oZy5tYXRyaXhXb3JsZCksdC5wb3NpdGlvbi5hcHBseU1hdHJpeDQoZCksdC5kaXJlY3Rpb24uc2V0RnJvbU1hdHJpeFBvc2l0aW9uKGcubWF0cml4V29ybGQpLGkuc2V0RnJvbU1hdHJpeFBvc2l0aW9uKGcudGFyZ2V0Lm1hdHJpeFdvcmxkKSx0LmRpcmVjdGlvbi5zdWIoaSksdC5kaXJlY3Rpb24udHJhbnNmb3JtRGlyZWN0aW9uKGQpLG8rK31lbHNlIGlmKGcuaXNSZWN0QXJlYUxpZ2h0KXtjb25zdCB0PXIucmVjdEFyZWFbbF07dC5wb3NpdGlvbi5zZXRGcm9tTWF0cml4UG9zaXRpb24oZy5tYXRyaXhXb3JsZCksdC5wb3NpdGlvbi5hcHBseU1hdHJpeDQoZCkscy5pZGVudGl0eSgpLGMuY29weShnLm1hdHJpeFdvcmxkKSxjLnByZW11bHRpcGx5KGQpLHMuZXh0cmFjdFJvdGF0aW9uKGMpLHQuaGFsZldpZHRoLnNldCguNSpnLndpZHRoLDAsMCksdC5oYWxmSGVpZ2h0LnNldCgwLC41KmcuaGVpZ2h0LDApLHQuaGFsZldpZHRoLmFwcGx5TWF0cml4NChzKSx0LmhhbGZIZWlnaHQuYXBwbHlNYXRyaXg0KHMpLGwrK31lbHNlIGlmKGcuaXNQb2ludExpZ2h0KXtjb25zdCB0PXIucG9pbnRbYV07dC5wb3NpdGlvbi5zZXRGcm9tTWF0cml4UG9zaXRpb24oZy5tYXRyaXhXb3JsZCksdC5wb3NpdGlvbi5hcHBseU1hdHJpeDQoZCksYSsrfWVsc2UgaWYoZy5pc0hlbWlzcGhlcmVMaWdodCl7Y29uc3QgdD1yLmhlbWlbbV07dC5kaXJlY3Rpb24uc2V0RnJvbU1hdHJpeFBvc2l0aW9uKGcubWF0cml4V29ybGQpLHQuZGlyZWN0aW9uLnRyYW5zZm9ybURpcmVjdGlvbihkKSx0LmRpcmVjdGlvbi5ub3JtYWxpemUoKSxtKyt9fX0sc3RhdGU6cn19ZnVuY3Rpb24ga290KHQsbil7Y29uc3QgZT1uZXcgeW90KHQsbiksYT1bXSxvPVtdO3JldHVybntpbml0OmZ1bmN0aW9uIHIoKXthLmxlbmd0aD0wLG8ubGVuZ3RoPTB9LHN0YXRlOntsaWdodHNBcnJheTphLHNoYWRvd3NBcnJheTpvLGxpZ2h0czplfSxzZXR1cExpZ2h0czpmdW5jdGlvbiBpKCl7ZS5zZXR1cChhKX0sc2V0dXBMaWdodHNWaWV3OmZ1bmN0aW9uIGModCl7ZS5zZXR1cFZpZXcoYSx0KX0scHVzaExpZ2h0OmZ1bmN0aW9uIHModCl7YS5wdXNoKHQpfSxwdXNoU2hhZG93OmZ1bmN0aW9uIGwodCl7by5wdXNoKHQpfX19ZnVuY3Rpb24gdm90KHQsbil7bGV0IGU9bmV3IFdlYWtNYXA7cmV0dXJue2dldDpmdW5jdGlvbiBhKG8scj0wKXtsZXQgaTtyZXR1cm4hMT09PWUuaGFzKG8pPyhpPW5ldyBrb3QodCxuKSxlLnNldChvLFtdKSxlLmdldChvKS5wdXNoKGkpKTpyPj1lLmdldChvKS5sZW5ndGg/KGk9bmV3IGtvdCh0LG4pLGUuZ2V0KG8pLnB1c2goaSkpOmk9ZS5nZXQobylbcl0saX0sZGlzcG9zZTpmdW5jdGlvbiBvKCl7ZT1uZXcgV2Vha01hcH19fWZ1bmN0aW9uIHdvdCh0KXt5bnQuY2FsbCh0aGlzKSx0aGlzLnR5cGU9Ik1lc2hEZXB0aE1hdGVyaWFsIix0aGlzLmRlcHRoUGFja2luZz0zMjAwLHRoaXMuc2tpbm5pbmc9ITEsdGhpcy5tb3JwaFRhcmdldHM9ITEsdGhpcy5tYXA9bnVsbCx0aGlzLmFscGhhTWFwPW51bGwsdGhpcy5kaXNwbGFjZW1lbnRNYXA9bnVsbCx0aGlzLmRpc3BsYWNlbWVudFNjYWxlPTEsdGhpcy5kaXNwbGFjZW1lbnRCaWFzPTAsdGhpcy53aXJlZnJhbWU9ITEsdGhpcy53aXJlZnJhbWVMaW5ld2lkdGg9MSx0aGlzLmZvZz0hMSx0aGlzLnNldFZhbHVlcyh0KX1mdW5jdGlvbiBTb3QodCl7eW50LmNhbGwodGhpcyksdGhpcy50eXBlPSJNZXNoRGlzdGFuY2VNYXRlcmlhbCIsdGhpcy5yZWZlcmVuY2VQb3NpdGlvbj1uZXcgdHR0LHRoaXMubmVhckRpc3RhbmNlPTEsdGhpcy5mYXJEaXN0YW5jZT0xZTMsdGhpcy5za2lubmluZz0hMSx0aGlzLm1vcnBoVGFyZ2V0cz0hMSx0aGlzLm1hcD1udWxsLHRoaXMuYWxwaGFNYXA9bnVsbCx0aGlzLmRpc3BsYWNlbWVudE1hcD1udWxsLHRoaXMuZGlzcGxhY2VtZW50U2NhbGU9MSx0aGlzLmRpc3BsYWNlbWVudEJpYXM9MCx0aGlzLmZvZz0hMSx0aGlzLnNldFZhbHVlcyh0KX1mdW5jdGlvbiBFb3QodCxuLGUpe2xldCBhPW5ldyB6ZXQ7Y29uc3Qgbz1uZXcgVzkscj1uZXcgVzksaT1uZXcgUTksYz1bXSxzPVtdLGw9e30sbT17MDoxLDE6MCwyOjJ9LGQ9bmV3IE1ldCh7ZGVmaW5lczp7U0FNUExFX1JBVEU6Mi84LEhBTEZfU0FNUExFX1JBVEU6MS84fSx1bmlmb3Jtczp7c2hhZG93X3Bhc3M6e3ZhbHVlOm51bGx9LHJlc29sdXRpb246e3ZhbHVlOm5ldyBXOX0scmFkaXVzOnt2YWx1ZTo0fX0sdmVydGV4U2hhZGVyOiJ2b2lkIG1haW4oKSB7XG5cdGdsX1Bvc2l0aW9uID0gdmVjNCggcG9zaXRpb24sIDEuMCApO1xufSIsZnJhZ21lbnRTaGFkZXI6InVuaWZvcm0gc2FtcGxlcjJEIHNoYWRvd19wYXNzO1xudW5pZm9ybSB2ZWMyIHJlc29sdXRpb247XG51bmlmb3JtIGZsb2F0IHJhZGl1cztcbiNpbmNsdWRlIDxwYWNraW5nPlxudm9pZCBtYWluKCkge1xuXHRmbG9hdCBtZWFuID0gMC4wO1xuXHRmbG9hdCBzcXVhcmVkX21lYW4gPSAwLjA7XG5cdGZsb2F0IGRlcHRoID0gdW5wYWNrUkdCQVRvRGVwdGgoIHRleHR1cmUyRCggc2hhZG93X3Bhc3MsICggZ2xfRnJhZ0Nvb3JkLnh5ICkgLyByZXNvbHV0aW9uICkgKTtcblx0Zm9yICggZmxvYXQgaSA9IC0xLjA7IGkgPCAxLjAgOyBpICs9IFNBTVBMRV9SQVRFKSB7XG5cdFx0I2lmZGVmIEhPUklaT05UQUxfUEFTU1xuXHRcdFx0dmVjMiBkaXN0cmlidXRpb24gPSB1bnBhY2tSR0JBVG8ySGFsZiggdGV4dHVyZTJEKCBzaGFkb3dfcGFzcywgKCBnbF9GcmFnQ29vcmQueHkgKyB2ZWMyKCBpLCAwLjAgKSAqIHJhZGl1cyApIC8gcmVzb2x1dGlvbiApICk7XG5cdFx0XHRtZWFuICs9IGRpc3RyaWJ1dGlvbi54O1xuXHRcdFx0c3F1YXJlZF9tZWFuICs9IGRpc3RyaWJ1dGlvbi55ICogZGlzdHJpYnV0aW9uLnkgKyBkaXN0cmlidXRpb24ueCAqIGRpc3RyaWJ1dGlvbi54O1xuXHRcdCNlbHNlXG5cdFx0XHRmbG9hdCBkZXB0aCA9IHVucGFja1JHQkFUb0RlcHRoKCB0ZXh0dXJlMkQoIHNoYWRvd19wYXNzLCAoIGdsX0ZyYWdDb29yZC54eSArIHZlYzIoIDAuMCwgaSApICogcmFkaXVzICkgLyByZXNvbHV0aW9uICkgKTtcblx0XHRcdG1lYW4gKz0gZGVwdGg7XG5cdFx0XHRzcXVhcmVkX21lYW4gKz0gZGVwdGggKiBkZXB0aDtcblx0XHQjZW5kaWZcblx0fVxuXHRtZWFuID0gbWVhbiAqIEhBTEZfU0FNUExFX1JBVEU7XG5cdHNxdWFyZWRfbWVhbiA9IHNxdWFyZWRfbWVhbiAqIEhBTEZfU0FNUExFX1JBVEU7XG5cdGZsb2F0IHN0ZF9kZXYgPSBzcXJ0KCBzcXVhcmVkX21lYW4gLSBtZWFuICogbWVhbiApO1xuXHRnbF9GcmFnQ29sb3IgPSBwYWNrMkhhbGZUb1JHQkEoIHZlYzIoIG1lYW4sIHN0ZF9kZXYgKSApO1xufSJ9KSxnPWQuY2xvbmUoKTtnLmRlZmluZXMuSE9SSVpPTlRBTF9QQVNTPTE7Y29uc3QgcD1uZXcgWG50O3Auc2V0QXR0cmlidXRlKCJwb3NpdGlvbiIsbmV3IFNudChuZXcgRmxvYXQzMkFycmF5KFstMSwtMSwuNSwzLC0xLC41LC0xLDMsLjVdKSwzKSk7Y29uc3QgYj1uZXcgYmV0KHAsZCksdT10aGlzO2Z1bmN0aW9uIGYoZSxhKXtjb25zdCBvPW4udXBkYXRlKGIpO2QudW5pZm9ybXMuc2hhZG93X3Bhc3MudmFsdWU9ZS5tYXAudGV4dHVyZSxkLnVuaWZvcm1zLnJlc29sdXRpb24udmFsdWU9ZS5tYXBTaXplLGQudW5pZm9ybXMucmFkaXVzLnZhbHVlPWUucmFkaXVzLHQuc2V0UmVuZGVyVGFyZ2V0KGUubWFwUGFzcyksdC5jbGVhcigpLHQucmVuZGVyQnVmZmVyRGlyZWN0KGEsbnVsbCxvLGQsYixudWxsKSxnLnVuaWZvcm1zLnNoYWRvd19wYXNzLnZhbHVlPWUubWFwUGFzcy50ZXh0dXJlLGcudW5pZm9ybXMucmVzb2x1dGlvbi52YWx1ZT1lLm1hcFNpemUsZy51bmlmb3Jtcy5yYWRpdXMudmFsdWU9ZS5yYWRpdXMsdC5zZXRSZW5kZXJUYXJnZXQoZS5tYXApLHQuY2xlYXIoKSx0LnJlbmRlckJ1ZmZlckRpcmVjdChhLG51bGwsbyxnLGIsbnVsbCl9ZnVuY3Rpb24gaCh0LG4sZSl7Y29uc3QgYT10PDwwfG48PDF8ZTw8MjtsZXQgbz1jW2FdO3JldHVybiB2b2lkIDA9PT1vJiYobz1uZXcgd290KHtkZXB0aFBhY2tpbmc6MzIwMSxtb3JwaFRhcmdldHM6dCxza2lubmluZzpufSksY1thXT1vKSxvfWZ1bmN0aW9uIF8odCxuLGUpe2NvbnN0IGE9dDw8MHxuPDwxfGU8PDI7bGV0IG89c1thXTtyZXR1cm4gdm9pZCAwPT09byYmKG89bmV3IFNvdCh7bW9ycGhUYXJnZXRzOnQsc2tpbm5pbmc6bn0pLHNbYV09byksb31mdW5jdGlvbiBDKG4sZSxhLG8scixpLGMpe2xldCBzPW51bGwsZD1oLGc9bi5jdXN0b21EZXB0aE1hdGVyaWFsO2lmKCEwPT09by5pc1BvaW50TGlnaHQmJihkPV8sZz1uLmN1c3RvbURpc3RhbmNlTWF0ZXJpYWwpLHZvaWQgMD09PWcpe2xldCB0PSExOyEwPT09YS5tb3JwaFRhcmdldHMmJih0PWUubW9ycGhBdHRyaWJ1dGVzJiZlLm1vcnBoQXR0cmlidXRlcy5wb3NpdGlvbiYmZS5tb3JwaEF0dHJpYnV0ZXMucG9zaXRpb24ubGVuZ3RoPjApO2xldCBvPSExOyEwPT09bi5pc1NraW5uZWRNZXNoJiYoITA9PT1hLnNraW5uaW5nP289ITA6Y29uc29sZS53YXJuKCJUSFJFRS5XZWJHTFNoYWRvd01hcDogVEhSRUUuU2tpbm5lZE1lc2ggd2l0aCBtYXRlcmlhbC5za2lubmluZyBzZXQgdG8gZmFsc2U6IixuKSkscz1kKHQsbywhMD09PW4uaXNJbnN0YW5jZWRNZXNoKX1lbHNlIHM9ZztpZih0LmxvY2FsQ2xpcHBpbmdFbmFibGVkJiYhMD09PWEuY2xpcFNoYWRvd3MmJjAhPT1hLmNsaXBwaW5nUGxhbmVzLmxlbmd0aCl7Y29uc3QgdD1zLnV1aWQsbj1hLnV1aWQ7bGV0IGU9bFt0XTt2b2lkIDA9PT1lJiYoZT17fSxsW3RdPWUpO2xldCBvPWVbbl07dm9pZCAwPT09byYmKG89cy5jbG9uZSgpLGVbbl09bykscz1vfXJldHVybiBzLnZpc2libGU9YS52aXNpYmxlLHMud2lyZWZyYW1lPWEud2lyZWZyYW1lLHMuc2lkZT0zPT09Yz9udWxsIT09YS5zaGFkb3dTaWRlP2Euc2hhZG93U2lkZTphLnNpZGU6bnVsbCE9PWEuc2hhZG93U2lkZT9hLnNoYWRvd1NpZGU6bVthLnNpZGVdLHMuY2xpcFNoYWRvd3M9YS5jbGlwU2hhZG93cyxzLmNsaXBwaW5nUGxhbmVzPWEuY2xpcHBpbmdQbGFuZXMscy5jbGlwSW50ZXJzZWN0aW9uPWEuY2xpcEludGVyc2VjdGlvbixzLndpcmVmcmFtZUxpbmV3aWR0aD1hLndpcmVmcmFtZUxpbmV3aWR0aCxzLmxpbmV3aWR0aD1hLmxpbmV3aWR0aCwhMD09PW8uaXNQb2ludExpZ2h0JiYhMD09PXMuaXNNZXNoRGlzdGFuY2VNYXRlcmlhbCYmKHMucmVmZXJlbmNlUG9zaXRpb24uc2V0RnJvbU1hdHJpeFBvc2l0aW9uKG8ubWF0cml4V29ybGQpLHMubmVhckRpc3RhbmNlPXIscy5mYXJEaXN0YW5jZT1pKSxzfWZ1bmN0aW9uIE0oZSxvLHIsaSxjKXtpZighMT09PWUudmlzaWJsZSlyZXR1cm47aWYoZS5sYXllcnMudGVzdChvLmxheWVycykmJihlLmlzTWVzaHx8ZS5pc0xpbmV8fGUuaXNQb2ludHMpJiYoZS5jYXN0U2hhZG93fHxlLnJlY2VpdmVTaGFkb3cmJjM9PT1jKSYmKCFlLmZydXN0dW1DdWxsZWR8fGEuaW50ZXJzZWN0c09iamVjdChlKSkpe2UubW9kZWxWaWV3TWF0cml4Lm11bHRpcGx5TWF0cmljZXMoci5tYXRyaXhXb3JsZEludmVyc2UsZS5tYXRyaXhXb3JsZCk7Y29uc3QgYT1uLnVwZGF0ZShlKSxvPWUubWF0ZXJpYWw7aWYoQXJyYXkuaXNBcnJheShvKSl7Y29uc3Qgbj1hLmdyb3Vwcztmb3IobGV0IHM9MCxsPW4ubGVuZ3RoO3M8bDtzKyspe2NvbnN0IGw9bltzXSxtPW9bbC5tYXRlcmlhbEluZGV4XTtpZihtJiZtLnZpc2libGUpe2NvbnN0IG49QyhlLGEsbSxpLHIubmVhcixyLmZhcixjKTt0LnJlbmRlckJ1ZmZlckRpcmVjdChyLG51bGwsYSxuLGUsbCl9fX1lbHNlIGlmKG8udmlzaWJsZSl7Y29uc3Qgbj1DKGUsYSxvLGksci5uZWFyLHIuZmFyLGMpO3QucmVuZGVyQnVmZmVyRGlyZWN0KHIsbnVsbCxhLG4sZSxudWxsKX19Y29uc3Qgcz1lLmNoaWxkcmVuO2ZvcihsZXQgdD0wLG49cy5sZW5ndGg7dDxuO3QrKylNKHNbdF0sbyxyLGksYyl9dGhpcy5lbmFibGVkPSExLHRoaXMuYXV0b1VwZGF0ZT0hMCx0aGlzLm5lZWRzVXBkYXRlPSExLHRoaXMudHlwZT0xLHRoaXMucmVuZGVyPWZ1bmN0aW9uKG4sYyxzKXtpZighMT09PXUuZW5hYmxlZClyZXR1cm47aWYoITE9PT11LmF1dG9VcGRhdGUmJiExPT09dS5uZWVkc1VwZGF0ZSlyZXR1cm47aWYoMD09PW4ubGVuZ3RoKXJldHVybjtjb25zdCBsPXQuZ2V0UmVuZGVyVGFyZ2V0KCksbT10LmdldEFjdGl2ZUN1YmVGYWNlKCksZD10LmdldEFjdGl2ZU1pcG1hcExldmVsKCksZz10LnN0YXRlO2cuc2V0QmxlbmRpbmcoMCksZy5idWZmZXJzLmNvbG9yLnNldENsZWFyKDEsMSwxLDEpLGcuYnVmZmVycy5kZXB0aC5zZXRUZXN0KCEwKSxnLnNldFNjaXNzb3JUZXN0KCExKTtmb3IobGV0IGw9MCxtPW4ubGVuZ3RoO2w8bTtsKyspe2NvbnN0IG09bltsXSxkPW0uc2hhZG93O2lmKHZvaWQgMD09PWQpe2NvbnNvbGUud2FybigiVEhSRUUuV2ViR0xTaGFkb3dNYXA6IixtLCJoYXMgbm8gc2hhZG93LiIpO2NvbnRpbnVlfWlmKCExPT09ZC5hdXRvVXBkYXRlJiYhMT09PWQubmVlZHNVcGRhdGUpY29udGludWU7by5jb3B5KGQubWFwU2l6ZSk7Y29uc3QgcD1kLmdldEZyYW1lRXh0ZW50cygpO2lmKG8ubXVsdGlwbHkocCksci5jb3B5KGQubWFwU2l6ZSksKG8ueD5lfHxvLnk+ZSkmJihvLng+ZSYmKHIueD1NYXRoLmZsb29yKGUvcC54KSxvLng9ci54KnAueCxkLm1hcFNpemUueD1yLngpLG8ueT5lJiYoci55PU1hdGguZmxvb3IoZS9wLnkpLG8ueT1yLnkqcC55LGQubWFwU2l6ZS55PXIueSkpLG51bGw9PT1kLm1hcCYmIWQuaXNQb2ludExpZ2h0U2hhZG93JiYzPT09dGhpcy50eXBlKXtjb25zdCB0PXttaW5GaWx0ZXI6XzksbWFnRmlsdGVyOl85LGZvcm1hdDp2OX07ZC5tYXA9bmV3IEs5KG8ueCxvLnksdCksZC5tYXAudGV4dHVyZS5uYW1lPW0ubmFtZSsiLnNoYWRvd01hcCIsZC5tYXBQYXNzPW5ldyBLOShvLngsby55LHQpLGQuY2FtZXJhLnVwZGF0ZVByb2plY3Rpb25NYXRyaXgoKX1udWxsPT09ZC5tYXAmJihkLm1hcD1uZXcgSzkoby54LG8ueSx7bWluRmlsdGVyOmg5LG1hZ0ZpbHRlcjpoOSxmb3JtYXQ6djl9KSxkLm1hcC50ZXh0dXJlLm5hbWU9bS5uYW1lKyIuc2hhZG93TWFwIixkLmNhbWVyYS51cGRhdGVQcm9qZWN0aW9uTWF0cml4KCkpLHQuc2V0UmVuZGVyVGFyZ2V0KGQubWFwKSx0LmNsZWFyKCk7Y29uc3QgYj1kLmdldFZpZXdwb3J0Q291bnQoKTtmb3IobGV0IHQ9MDt0PGI7dCsrKXtjb25zdCBuPWQuZ2V0Vmlld3BvcnQodCk7aS5zZXQoci54Km4ueCxyLnkqbi55LHIueCpuLnosci55Km4udyksZy52aWV3cG9ydChpKSxkLnVwZGF0ZU1hdHJpY2VzKG0sdCksYT1kLmdldEZydXN0dW0oKSxNKGMscyxkLmNhbWVyYSxtLHRoaXMudHlwZSl9ZC5pc1BvaW50TGlnaHRTaGFkb3d8fDMhPT10aGlzLnR5cGV8fGYoZCxzKSxkLm5lZWRzVXBkYXRlPSExfXUubmVlZHNVcGRhdGU9ITEsdC5zZXRSZW5kZXJUYXJnZXQobCxtLGQpfX1mdW5jdGlvbiBBb3QodCxuLGUpe2NvbnN0IGE9ZS5pc1dlYkdMMixvPW5ldyhmdW5jdGlvbiByKCl7bGV0IG49ITE7Y29uc3QgZT1uZXcgUTk7bGV0IGE9bnVsbDtjb25zdCBvPW5ldyBROSgwLDAsMCwwKTtyZXR1cm57c2V0TWFzazpmdW5jdGlvbihlKXthPT09ZXx8bnx8KHQuY29sb3JNYXNrKGUsZSxlLGUpLGE9ZSl9LHNldExvY2tlZDpmdW5jdGlvbih0KXtuPXR9LHNldENsZWFyOmZ1bmN0aW9uKG4sYSxyLGksYyl7ITA9PT1jJiYobio9aSxhKj1pLHIqPWkpLGUuc2V0KG4sYSxyLGkpLCExPT09by5lcXVhbHMoZSkmJih0LmNsZWFyQ29sb3IobixhLHIsaSksby5jb3B5KGUpKX0scmVzZXQ6ZnVuY3Rpb24oKXtuPSExLGE9bnVsbCxvLnNldCgtMSwwLDAsMCl9fX0pLGk9bmV3KGZ1bmN0aW9uIGMoKXtsZXQgbj0hMSxlPW51bGwsYT1udWxsLG89bnVsbDtyZXR1cm57c2V0VGVzdDpmdW5jdGlvbih0KXt0P04oMjkyOSk6RigyOTI5KX0sc2V0TWFzazpmdW5jdGlvbihhKXtlPT09YXx8bnx8KHQuZGVwdGhNYXNrKGEpLGU9YSl9LHNldEZ1bmM6ZnVuY3Rpb24obil7aWYoYSE9PW4pe2lmKG4pc3dpdGNoKG4pe2Nhc2UgMDp0LmRlcHRoRnVuYyg1MTIpO2JyZWFrO2Nhc2UgMTp0LmRlcHRoRnVuYyg1MTkpO2JyZWFrO2Nhc2UgMjp0LmRlcHRoRnVuYyg1MTMpO2JyZWFrO2Nhc2UgMzp0LmRlcHRoRnVuYyg1MTUpO2JyZWFrO2Nhc2UgNDp0LmRlcHRoRnVuYyg1MTQpO2JyZWFrO2Nhc2UgNTp0LmRlcHRoRnVuYyg1MTgpO2JyZWFrO2Nhc2UgNjp0LmRlcHRoRnVuYyg1MTYpO2JyZWFrO2Nhc2UgNzp0LmRlcHRoRnVuYyg1MTcpO2JyZWFrO2RlZmF1bHQ6dC5kZXB0aEZ1bmMoNTE1KX1lbHNlIHQuZGVwdGhGdW5jKDUxNSk7YT1ufX0sc2V0TG9ja2VkOmZ1bmN0aW9uKHQpe249dH0sc2V0Q2xlYXI6ZnVuY3Rpb24obil7byE9PW4mJih0LmNsZWFyRGVwdGgobiksbz1uKX0scmVzZXQ6ZnVuY3Rpb24oKXtuPSExLGU9bnVsbCxhPW51bGwsbz1udWxsfX19KSxzPW5ldyhmdW5jdGlvbiBsKCl7bGV0IG49ITEsZT1udWxsLGE9bnVsbCxvPW51bGwscj1udWxsLGk9bnVsbCxjPW51bGwscz1udWxsLGw9bnVsbDtyZXR1cm57c2V0VGVzdDpmdW5jdGlvbih0KXtufHwodD9OKDI5NjApOkYoMjk2MCkpfSxzZXRNYXNrOmZ1bmN0aW9uKGEpe2U9PT1hfHxufHwodC5zdGVuY2lsTWFzayhhKSxlPWEpfSxzZXRGdW5jOmZ1bmN0aW9uKG4sZSxpKXthPT09biYmbz09PWUmJnI9PT1pfHwodC5zdGVuY2lsRnVuYyhuLGUsaSksYT1uLG89ZSxyPWkpfSxzZXRPcDpmdW5jdGlvbihuLGUsYSl7aT09PW4mJmM9PT1lJiZzPT09YXx8KHQuc3RlbmNpbE9wKG4sZSxhKSxpPW4sYz1lLHM9YSl9LHNldExvY2tlZDpmdW5jdGlvbih0KXtuPXR9LHNldENsZWFyOmZ1bmN0aW9uKG4pe2whPT1uJiYodC5jbGVhclN0ZW5jaWwobiksbD1uKX0scmVzZXQ6ZnVuY3Rpb24oKXtuPSExLGU9bnVsbCxhPW51bGwsbz1udWxsLHI9bnVsbCxpPW51bGwsYz1udWxsLHM9bnVsbCxsPW51bGx9fX0pO2xldCBtPXt9LGQ9bnVsbCxnPW51bGwscD1udWxsLGI9bnVsbCx1PW51bGwsZj1udWxsLGg9bnVsbCxfPW51bGwsQz1udWxsLE09ITEsTz1udWxsLFA9bnVsbCx4PW51bGwseT1udWxsLGs9bnVsbDtjb25zdCB2PXQuZ2V0UGFyYW1ldGVyKDM1NjYxKTtsZXQgdz0hMSxTPTA7Y29uc3QgRT10LmdldFBhcmFtZXRlcig3OTM4KTstMSE9PUUuaW5kZXhPZigiV2ViR0wiKT8oUz1wYXJzZUZsb2F0KC9eV2ViR0wgKFxkKS8uZXhlYyhFKVsxXSksdz1TPj0xKTotMSE9PUUuaW5kZXhPZigiT3BlbkdMIEVTIikmJihTPXBhcnNlRmxvYXQoL15PcGVuR0wgRVMgKFxkKS8uZXhlYyhFKVsxXSksdz1TPj0yKTtsZXQgQT1udWxsLHo9e307Y29uc3QgUj1uZXcgUTksVD1uZXcgUTk7ZnVuY3Rpb24gRChuLGUsYSl7Y29uc3Qgbz1uZXcgVWludDhBcnJheSg0KSxyPXQuY3JlYXRlVGV4dHVyZSgpO3QuYmluZFRleHR1cmUobixyKSx0LnRleFBhcmFtZXRlcmkobiwxMDI0MSw5NzI4KSx0LnRleFBhcmFtZXRlcmkobiwxMDI0MCw5NzI4KTtmb3IobGV0IG49MDtuPGE7bisrKXQudGV4SW1hZ2UyRChlK24sMCw2NDA4LDEsMSwwLDY0MDgsNTEyMSxvKTtyZXR1cm4gcn1jb25zdCBJPXt9O2Z1bmN0aW9uIE4obil7ITAhPT1tW25dJiYodC5lbmFibGUobiksbVtuXT0hMCl9ZnVuY3Rpb24gRihuKXshMSE9PW1bbl0mJih0LmRpc2FibGUobiksbVtuXT0hMSl9SVszNTUzXT1EKDM1NTMsMzU1MywxKSxJWzM0MDY3XT1EKDM0MDY3LDM0MDY5LDYpLG8uc2V0Q2xlYXIoMCwwLDAsMSksaS5zZXRDbGVhcigxKSxzLnNldENsZWFyKDApLE4oMjkyOSksaS5zZXRGdW5jKDMpLFYoITEpLGooMSksTigyODg0KSxCKDApO2NvbnN0IEw9e1twOV06MzI3NzQsMTAxOjMyNzc4LDEwMjozMjc3OX07aWYoYSlMWzEwM109MzI3NzUsTFsxMDRdPTMyNzc2O2Vsc2V7Y29uc3QgdD1uLmdldCgiRVhUX2JsZW5kX21pbm1heCIpO251bGwhPT10JiYoTFsxMDNdPXQuTUlOX0VYVCxMWzEwNF09dC5NQVhfRVhUKX1jb25zdCBIPXsyMDA6MCwyMDE6MSwyMDI6NzY4LDIwNDo3NzAsMjEwOjc3NiwyMDg6Nzc0LDIwNjo3NzIsMjAzOjc2OSwyMDU6NzcxLDIwOTo3NzUsMjA3Ojc3M307ZnVuY3Rpb24gQihuLGUsYSxvLHIsaSxjLHMpe2lmKDAhPT1uKXtpZihnfHwoTigzMDQyKSxnPSEwKSw1PT09bilyPXJ8fGUsaT1pfHxhLGM9Y3x8byxlPT09YiYmcj09PWh8fCh0LmJsZW5kRXF1YXRpb25TZXBhcmF0ZShMW2VdLExbcl0pLGI9ZSxoPXIpLGE9PT11JiZvPT09ZiYmaT09PV8mJmM9PT1DfHwodC5ibGVuZEZ1bmNTZXBhcmF0ZShIW2FdLEhbb10sSFtpXSxIW2NdKSx1PWEsZj1vLF89aSxDPWMpLHA9bixNPW51bGw7ZWxzZSBpZihuIT09cHx8cyE9PU0pe2lmKGI9PT1wOSYmaD09PXA5fHwodC5ibGVuZEVxdWF0aW9uKDMyNzc0KSxiPXA5LGg9cDkpLHMpc3dpdGNoKG4pe2Nhc2UgMTp0LmJsZW5kRnVuY1NlcGFyYXRlKDEsNzcxLDEsNzcxKTticmVhaztjYXNlIDI6dC5ibGVuZEZ1bmMoMSwxKTticmVhaztjYXNlIDM6dC5ibGVuZEZ1bmNTZXBhcmF0ZSgwLDAsNzY5LDc3MSk7YnJlYWs7Y2FzZSA0OnQuYmxlbmRGdW5jU2VwYXJhdGUoMCw3NjgsMCw3NzApO2JyZWFrO2RlZmF1bHQ6Y29uc29sZS5lcnJvcigiVEhSRUUuV2ViR0xTdGF0ZTogSW52YWxpZCBibGVuZGluZzogIixuKX1lbHNlIHN3aXRjaChuKXtjYXNlIDE6dC5ibGVuZEZ1bmNTZXBhcmF0ZSg3NzAsNzcxLDEsNzcxKTticmVhaztjYXNlIDI6dC5ibGVuZEZ1bmMoNzcwLDEpO2JyZWFrO2Nhc2UgMzp0LmJsZW5kRnVuYygwLDc2OSk7YnJlYWs7Y2FzZSA0OnQuYmxlbmRGdW5jKDAsNzY4KTticmVhaztkZWZhdWx0OmNvbnNvbGUuZXJyb3IoIlRIUkVFLldlYkdMU3RhdGU6IEludmFsaWQgYmxlbmRpbmc6ICIsbil9dT1udWxsLGY9bnVsbCxfPW51bGwsQz1udWxsLHA9bixNPXN9fWVsc2UgZyYmKEYoMzA0MiksZz0hMSl9ZnVuY3Rpb24gVihuKXtPIT09biYmKHQuZnJvbnRGYWNlKG4/MjMwNDoyMzA1KSxPPW4pfWZ1bmN0aW9uIGoobil7MCE9PW4/KE4oMjg4NCksbiE9PVAmJnQuY3VsbEZhY2UoMT09PW4/MTAyOToyPT09bj8xMDI4OjEwMzIpKTpGKDI4ODQpLFA9bn1mdW5jdGlvbiBVKG4sZSxhKXtuPyhOKDMyODIzKSx5PT09ZSYmaz09PWF8fCh0LnBvbHlnb25PZmZzZXQoZSxhKSx5PWUsaz1hKSk6RigzMjgyMyl9ZnVuY3Rpb24gVyhuKXt2b2lkIDA9PT1uJiYobj0zMzk4NCt2LTEpLEEhPT1uJiYodC5hY3RpdmVUZXh0dXJlKG4pLEE9bil9cmV0dXJue2J1ZmZlcnM6e2NvbG9yOm8sZGVwdGg6aSxzdGVuY2lsOnN9LGVuYWJsZTpOLGRpc2FibGU6Rix1c2VQcm9ncmFtOmZ1bmN0aW9uIEcobil7cmV0dXJuIGQhPT1uJiYodC51c2VQcm9ncmFtKG4pLGQ9biwhMCl9LHNldEJsZW5kaW5nOkIsc2V0TWF0ZXJpYWw6ZnVuY3Rpb24gWSh0LG4pezI9PT10LnNpZGU/RigyODg0KTpOKDI4ODQpO2xldCBlPTE9PT10LnNpZGU7biYmKGU9IWUpLFYoZSksMT09PXQuYmxlbmRpbmcmJiExPT09dC50cmFuc3BhcmVudD9CKDApOkIodC5ibGVuZGluZyx0LmJsZW5kRXF1YXRpb24sdC5ibGVuZFNyYyx0LmJsZW5kRHN0LHQuYmxlbmRFcXVhdGlvbkFscGhhLHQuYmxlbmRTcmNBbHBoYSx0LmJsZW5kRHN0QWxwaGEsdC5wcmVtdWx0aXBsaWVkQWxwaGEpLGkuc2V0RnVuYyh0LmRlcHRoRnVuYyksaS5zZXRUZXN0KHQuZGVwdGhUZXN0KSxpLnNldE1hc2sodC5kZXB0aFdyaXRlKSxvLnNldE1hc2sodC5jb2xvcldyaXRlKTtjb25zdCBhPXQuc3RlbmNpbFdyaXRlO3Muc2V0VGVzdChhKSxhJiYocy5zZXRNYXNrKHQuc3RlbmNpbFdyaXRlTWFzaykscy5zZXRGdW5jKHQuc3RlbmNpbEZ1bmMsdC5zdGVuY2lsUmVmLHQuc3RlbmNpbEZ1bmNNYXNrKSxzLnNldE9wKHQuc3RlbmNpbEZhaWwsdC5zdGVuY2lsWkZhaWwsdC5zdGVuY2lsWlBhc3MpKSxVKHQucG9seWdvbk9mZnNldCx0LnBvbHlnb25PZmZzZXRGYWN0b3IsdC5wb2x5Z29uT2Zmc2V0VW5pdHMpfSxzZXRGbGlwU2lkZWQ6VixzZXRDdWxsRmFjZTpqLHNldExpbmVXaWR0aDpmdW5jdGlvbiBxKG4pe24hPT14JiYodyYmdC5saW5lV2lkdGgobikseD1uKX0sc2V0UG9seWdvbk9mZnNldDpVLHNldFNjaXNzb3JUZXN0OmZ1bmN0aW9uIFoodCl7dD9OKDMwODkpOkYoMzA4OSl9LGFjdGl2ZVRleHR1cmU6VyxiaW5kVGV4dHVyZTpmdW5jdGlvbiBYKG4sZSl7bnVsbD09PUEmJlcoKTtsZXQgYT16W0FdO3ZvaWQgMD09PWEmJihhPXt0eXBlOnZvaWQgMCx0ZXh0dXJlOnZvaWQgMH0seltBXT1hKSxhLnR5cGU9PT1uJiZhLnRleHR1cmU9PT1lfHwodC5iaW5kVGV4dHVyZShuLGV8fElbbl0pLGEudHlwZT1uLGEudGV4dHVyZT1lKX0sdW5iaW5kVGV4dHVyZTpmdW5jdGlvbiBKKCl7Y29uc3Qgbj16W0FdO3ZvaWQgMCE9PW4mJnZvaWQgMCE9PW4udHlwZSYmKHQuYmluZFRleHR1cmUobi50eXBlLG51bGwpLG4udHlwZT12b2lkIDAsbi50ZXh0dXJlPXZvaWQgMCl9LGNvbXByZXNzZWRUZXhJbWFnZTJEOmZ1bmN0aW9uIFEoKXt0cnl7dC5jb21wcmVzc2VkVGV4SW1hZ2UyRC5hcHBseSh0LGFyZ3VtZW50cyl9Y2F0Y2godCl7Y29uc29sZS5lcnJvcigiVEhSRUUuV2ViR0xTdGF0ZToiLHQpfX0sdGV4SW1hZ2UyRDpmdW5jdGlvbiBLKCl7dHJ5e3QudGV4SW1hZ2UyRC5hcHBseSh0LGFyZ3VtZW50cyl9Y2F0Y2godCl7Y29uc29sZS5lcnJvcigiVEhSRUUuV2ViR0xTdGF0ZToiLHQpfX0sdGV4SW1hZ2UzRDpmdW5jdGlvbiAkKCl7dHJ5e3QudGV4SW1hZ2UzRC5hcHBseSh0LGFyZ3VtZW50cyl9Y2F0Y2godCl7Y29uc29sZS5lcnJvcigiVEhSRUUuV2ViR0xTdGF0ZToiLHQpfX0sc2Npc3NvcjpmdW5jdGlvbiB0dChuKXshMT09PVIuZXF1YWxzKG4pJiYodC5zY2lzc29yKG4ueCxuLnksbi56LG4udyksUi5jb3B5KG4pKX0sdmlld3BvcnQ6ZnVuY3Rpb24gbnQobil7ITE9PT1ULmVxdWFscyhuKSYmKHQudmlld3BvcnQobi54LG4ueSxuLnosbi53KSxULmNvcHkobikpfSxyZXNldDpmdW5jdGlvbiBldCgpe209e30sQT1udWxsLHo9e30sZD1udWxsLGc9bnVsbCxwPW51bGwsYj1udWxsLHU9bnVsbCxmPW51bGwsaD1udWxsLF89bnVsbCxDPW51bGwsTT0hMSxPPW51bGwsUD1udWxsLHg9bnVsbCx5PW51bGwsaz1udWxsLG8ucmVzZXQoKSxpLnJlc2V0KCkscy5yZXNldCgpfX19ZnVuY3Rpb24gem90KHQsbixlLGEsbyxyLGkpe2NvbnN0IGM9by5pc1dlYkdMMixzPW8ubWF4VGV4dHVyZXMsbD1vLm1heEN1YmVtYXBTaXplLG09by5tYXhUZXh0dXJlU2l6ZSxkPW8ubWF4U2FtcGxlcyxnPW5ldyBXZWFrTWFwO2xldCBwLGI9ITE7dHJ5e2I9InVuZGVmaW5lZCIhPXR5cGVvZiBPZmZzY3JlZW5DYW52YXMmJm51bGwhPT1uZXcgT2Zmc2NyZWVuQ2FudmFzKDEsMSkuZ2V0Q29udGV4dCgiMmQiKX1jYXRjaCh0KXt9ZnVuY3Rpb24gdSh0LG4pe3JldHVybiBiP25ldyBPZmZzY3JlZW5DYW52YXModCxuKTpkb2N1bWVudC5jcmVhdGVFbGVtZW50TlMoImh0dHA6Ly93d3cudzMub3JnLzE5OTkveGh0bWwiLCJjYW52YXMiKX1mdW5jdGlvbiBmKHQsbixlLGEpe2xldCBvPTE7aWYoKHQud2lkdGg+YXx8dC5oZWlnaHQ+YSkmJihvPWEvTWF0aC5tYXgodC53aWR0aCx0LmhlaWdodCkpLG88MXx8ITA9PT1uKXtpZigidW5kZWZpbmVkIiE9dHlwZW9mIEhUTUxJbWFnZUVsZW1lbnQmJnQgaW5zdGFuY2VvZiBIVE1MSW1hZ2VFbGVtZW50fHwidW5kZWZpbmVkIiE9dHlwZW9mIEhUTUxDYW52YXNFbGVtZW50JiZ0IGluc3RhbmNlb2YgSFRNTENhbnZhc0VsZW1lbnR8fCJ1bmRlZmluZWQiIT10eXBlb2YgSW1hZ2VCaXRtYXAmJnQgaW5zdGFuY2VvZiBJbWFnZUJpdG1hcCl7Y29uc3QgYT1uP1U5LmZsb29yUG93ZXJPZlR3bzpNYXRoLmZsb29yLHI9YShvKnQud2lkdGgpLGk9YShvKnQuaGVpZ2h0KTt2b2lkIDA9PT1wJiYocD11KHIsaSkpO2NvbnN0IGM9ZT91KHIsaSk6cDtyZXR1cm4gYy53aWR0aD1yLGMuaGVpZ2h0PWksYy5nZXRDb250ZXh0KCIyZCIpLmRyYXdJbWFnZSh0LDAsMCxyLGkpLGNvbnNvbGUud2FybigiVEhSRUUuV2ViR0xSZW5kZXJlcjogVGV4dHVyZSBoYXMgYmVlbiByZXNpemVkIGZyb20gKCIrdC53aWR0aCsieCIrdC5oZWlnaHQrIikgdG8gKCIrcisieCIraSsiKS4iKSxjfXJldHVybiJkYXRhImluIHQmJmNvbnNvbGUud2FybigiVEhSRUUuV2ViR0xSZW5kZXJlcjogSW1hZ2UgaW4gRGF0YVRleHR1cmUgaXMgdG9vIGJpZyAoIit0LndpZHRoKyJ4Iit0LmhlaWdodCsiKS4iKSx0fXJldHVybiB0fWZ1bmN0aW9uIGgodCl7cmV0dXJuIFU5LmlzUG93ZXJPZlR3byh0LndpZHRoKSYmVTkuaXNQb3dlck9mVHdvKHQuaGVpZ2h0KX1mdW5jdGlvbiBfKHQsbil7cmV0dXJuIHQuZ2VuZXJhdGVNaXBtYXBzJiZuJiZ0Lm1pbkZpbHRlciE9PWg5JiZ0Lm1pbkZpbHRlciE9PV85fWZ1bmN0aW9uIEMobixlLG8scil7dC5nZW5lcmF0ZU1pcG1hcChuKSxhLmdldChlKS5fX21heE1pcExldmVsPU1hdGgubG9nKE1hdGgubWF4KG8scikpKk1hdGguTE9HMkV9ZnVuY3Rpb24gTShlLGEsbyl7aWYoITE9PT1jKXJldHVybiBhO2lmKG51bGwhPT1lKXtpZih2b2lkIDAhPT10W2VdKXJldHVybiB0W2VdO2NvbnNvbGUud2FybigiVEhSRUUuV2ViR0xSZW5kZXJlcjogQXR0ZW1wdCB0byB1c2Ugbm9uLWV4aXN0aW5nIFdlYkdMIGludGVybmFsIGZvcm1hdCAnIitlKyInIil9bGV0IHI9YTtyZXR1cm4gNjQwMz09PWEmJig1MTI2PT09byYmKHI9MzMzMjYpLDUxMzE9PT1vJiYocj0zMzMyNSksNTEyMT09PW8mJihyPTMzMzIxKSksNjQwNz09PWEmJig1MTI2PT09byYmKHI9MzQ4MzcpLDUxMzE9PT1vJiYocj0zNDg0MyksNTEyMT09PW8mJihyPTMyODQ5KSksNjQwOD09PWEmJig1MTI2PT09byYmKHI9MzQ4MzYpLDUxMzE9PT1vJiYocj0zNDg0MiksNTEyMT09PW8mJihyPTMyODU2KSksMzMzMjUhPT1yJiYzMzMyNiE9PXImJjM0ODQyIT09ciYmMzQ4MzYhPT1yfHxuLmdldCgiRVhUX2NvbG9yX2J1ZmZlcl9mbG9hdCIpLHJ9ZnVuY3Rpb24gTyh0KXtyZXR1cm4gdD09PWg5fHwxMDA0PT09dHx8MTAwNT09PXQ/OTcyODo5NzI5fWZ1bmN0aW9uIFAobil7Y29uc3QgZT1uLnRhcmdldDtlLnJlbW92ZUV2ZW50TGlzdGVuZXIoImRpc3Bvc2UiLFApLChmdW5jdGlvbiBvKG4pe2NvbnN0IGU9YS5nZXQobik7dm9pZCAwIT09ZS5fX3dlYmdsSW5pdCYmKHQuZGVsZXRlVGV4dHVyZShlLl9fd2ViZ2xUZXh0dXJlKSxhLnJlbW92ZShuKSl9KShlKSxlLmlzVmlkZW9UZXh0dXJlJiZnLmRlbGV0ZShlKSxpLm1lbW9yeS50ZXh0dXJlcy0tfWZ1bmN0aW9uIHgobil7Y29uc3QgZT1uLnRhcmdldDtlLnJlbW92ZUV2ZW50TGlzdGVuZXIoImRpc3Bvc2UiLHgpLChmdW5jdGlvbiBvKG4pe2NvbnN0IGU9YS5nZXQobiksbz1hLmdldChuLnRleHR1cmUpO2lmKG4pe2lmKHZvaWQgMCE9PW8uX193ZWJnbFRleHR1cmUmJnQuZGVsZXRlVGV4dHVyZShvLl9fd2ViZ2xUZXh0dXJlKSxuLmRlcHRoVGV4dHVyZSYmbi5kZXB0aFRleHR1cmUuZGlzcG9zZSgpLG4uaXNXZWJHTEN1YmVSZW5kZXJUYXJnZXQpZm9yKGxldCBuPTA7bjw2O24rKyl0LmRlbGV0ZUZyYW1lYnVmZmVyKGUuX193ZWJnbEZyYW1lYnVmZmVyW25dKSxlLl9fd2ViZ2xEZXB0aGJ1ZmZlciYmdC5kZWxldGVSZW5kZXJidWZmZXIoZS5fX3dlYmdsRGVwdGhidWZmZXJbbl0pO2Vsc2UgdC5kZWxldGVGcmFtZWJ1ZmZlcihlLl9fd2ViZ2xGcmFtZWJ1ZmZlciksZS5fX3dlYmdsRGVwdGhidWZmZXImJnQuZGVsZXRlUmVuZGVyYnVmZmVyKGUuX193ZWJnbERlcHRoYnVmZmVyKSxlLl9fd2ViZ2xNdWx0aXNhbXBsZWRGcmFtZWJ1ZmZlciYmdC5kZWxldGVGcmFtZWJ1ZmZlcihlLl9fd2ViZ2xNdWx0aXNhbXBsZWRGcmFtZWJ1ZmZlciksZS5fX3dlYmdsQ29sb3JSZW5kZXJidWZmZXImJnQuZGVsZXRlUmVuZGVyYnVmZmVyKGUuX193ZWJnbENvbG9yUmVuZGVyYnVmZmVyKSxlLl9fd2ViZ2xEZXB0aFJlbmRlcmJ1ZmZlciYmdC5kZWxldGVSZW5kZXJidWZmZXIoZS5fX3dlYmdsRGVwdGhSZW5kZXJidWZmZXIpO2EucmVtb3ZlKG4udGV4dHVyZSksYS5yZW1vdmUobil9fSkoZSksaS5tZW1vcnkudGV4dHVyZXMtLX1sZXQgeT0wO2Z1bmN0aW9uIGsodCxuKXtjb25zdCBvPWEuZ2V0KHQpO2lmKHQuaXNWaWRlb1RleHR1cmUmJihmdW5jdGlvbiByKHQpe2NvbnN0IG49aS5yZW5kZXIuZnJhbWU7Zy5nZXQodCkhPT1uJiYoZy5zZXQodCxuKSx0LnVwZGF0ZSgpKX0pKHQpLHQudmVyc2lvbj4wJiZvLl9fdmVyc2lvbiE9PXQudmVyc2lvbil7Y29uc3QgZT10LmltYWdlO2lmKHZvaWQgMD09PWUpY29uc29sZS53YXJuKCJUSFJFRS5XZWJHTFJlbmRlcmVyOiBUZXh0dXJlIG1hcmtlZCBmb3IgdXBkYXRlIGJ1dCBpbWFnZSBpcyB1bmRlZmluZWQiKTtlbHNle2lmKCExIT09ZS5jb21wbGV0ZSlyZXR1cm4gdm9pZCB6KG8sdCxuKTtjb25zb2xlLndhcm4oIlRIUkVFLldlYkdMUmVuZGVyZXI6IFRleHR1cmUgbWFya2VkIGZvciB1cGRhdGUgYnV0IGltYWdlIGlzIGluY29tcGxldGUiKX19ZS5hY3RpdmVUZXh0dXJlKDMzOTg0K24pLGUuYmluZFRleHR1cmUoMzU1MyxvLl9fd2ViZ2xUZXh0dXJlKX1mdW5jdGlvbiB2KG4sbyl7Y29uc3QgaT1hLmdldChuKTtuLnZlcnNpb24+MCYmaS5fX3ZlcnNpb24hPT1uLnZlcnNpb24/KGZ1bmN0aW9uIHMobixhLG8pe2lmKDYhPT1hLmltYWdlLmxlbmd0aClyZXR1cm47QShuLGEpLGUuYWN0aXZlVGV4dHVyZSgzMzk4NCtvKSxlLmJpbmRUZXh0dXJlKDM0MDY3LG4uX193ZWJnbFRleHR1cmUpLHQucGl4ZWxTdG9yZWkoMzc0NDAsYS5mbGlwWSksdC5waXhlbFN0b3JlaSgzNzQ0MSxhLnByZW11bHRpcGx5QWxwaGEpLHQucGl4ZWxTdG9yZWkoMzMxNyxhLnVucGFja0FsaWdubWVudCk7Y29uc3QgaT1hJiYoYS5pc0NvbXByZXNzZWRUZXh0dXJlfHxhLmltYWdlWzBdLmlzQ29tcHJlc3NlZFRleHR1cmUpLHM9YS5pbWFnZVswXSYmYS5pbWFnZVswXS5pc0RhdGFUZXh0dXJlLG09W107Zm9yKGxldCB0PTA7dDw2O3QrKyltW3RdPWl8fHM/cz9hLmltYWdlW3RdLmltYWdlOmEuaW1hZ2VbdF06ZihhLmltYWdlW3RdLCExLCEwLGwpO2NvbnN0IGQ9bVswXSxnPWgoZCl8fGMscD1yLmNvbnZlcnQoYS5mb3JtYXQpLGI9ci5jb252ZXJ0KGEudHlwZSksdT1NKGEuaW50ZXJuYWxGb3JtYXQscCxiKTtsZXQgTztpZihFKDM0MDY3LGEsZyksaSl7Zm9yKGxldCB0PTA7dDw2O3QrKyl7Tz1tW3RdLm1pcG1hcHM7Zm9yKGxldCBuPTA7bjxPLmxlbmd0aDtuKyspe2NvbnN0IG89T1tuXTthLmZvcm1hdCE9PXY5JiZhLmZvcm1hdCE9PWs5P251bGwhPT1wP2UuY29tcHJlc3NlZFRleEltYWdlMkQoMzQwNjkrdCxuLHUsby53aWR0aCxvLmhlaWdodCwwLG8uZGF0YSk6Y29uc29sZS53YXJuKCJUSFJFRS5XZWJHTFJlbmRlcmVyOiBBdHRlbXB0IHRvIGxvYWQgdW5zdXBwb3J0ZWQgY29tcHJlc3NlZCB0ZXh0dXJlIGZvcm1hdCBpbiAuc2V0VGV4dHVyZUN1YmUoKSIpOmUudGV4SW1hZ2UyRCgzNDA2OSt0LG4sdSxvLndpZHRoLG8uaGVpZ2h0LDAscCxiLG8uZGF0YSl9fW4uX19tYXhNaXBMZXZlbD1PLmxlbmd0aC0xfWVsc2V7Tz1hLm1pcG1hcHM7Zm9yKGxldCB0PTA7dDw2O3QrKylpZihzKXtlLnRleEltYWdlMkQoMzQwNjkrdCwwLHUsbVt0XS53aWR0aCxtW3RdLmhlaWdodCwwLHAsYixtW3RdLmRhdGEpO2ZvcihsZXQgbj0wO248Ty5sZW5ndGg7bisrKXtjb25zdCBhPU9bbl0uaW1hZ2VbdF0uaW1hZ2U7ZS50ZXhJbWFnZTJEKDM0MDY5K3QsbisxLHUsYS53aWR0aCxhLmhlaWdodCwwLHAsYixhLmRhdGEpfX1lbHNle2UudGV4SW1hZ2UyRCgzNDA2OSt0LDAsdSxwLGIsbVt0XSk7Zm9yKGxldCBuPTA7bjxPLmxlbmd0aDtuKyspZS50ZXhJbWFnZTJEKDM0MDY5K3QsbisxLHUscCxiLE9bbl0uaW1hZ2VbdF0pfW4uX19tYXhNaXBMZXZlbD1PLmxlbmd0aH1fKGEsZykmJkMoMzQwNjcsYSxkLndpZHRoLGQuaGVpZ2h0KSxuLl9fdmVyc2lvbj1hLnZlcnNpb24sYS5vblVwZGF0ZSYmYS5vblVwZGF0ZShhKX0pKGksbixvKTooZS5hY3RpdmVUZXh0dXJlKDMzOTg0K28pLGUuYmluZFRleHR1cmUoMzQwNjcsaS5fX3dlYmdsVGV4dHVyZSkpfWNvbnN0IHc9e1tiOV06MTA0OTcsW3U5XTozMzA3MSxbZjldOjMzNjQ4fSxTPXtbaDldOjk3MjgsMTAwNDo5OTg0LDEwMDU6OTk4NixbXzldOjk3MjksMTAwNzo5OTg1LFtDOV06OTk4N307ZnVuY3Rpb24gRShlLHIsaSl7aT8odC50ZXhQYXJhbWV0ZXJpKGUsMTAyNDIsd1tyLndyYXBTXSksdC50ZXhQYXJhbWV0ZXJpKGUsMTAyNDMsd1tyLndyYXBUXSksMzI4NzkhPT1lJiYzNTg2NiE9PWV8fHQudGV4UGFyYW1ldGVyaShlLDMyODgyLHdbci53cmFwUl0pLHQudGV4UGFyYW1ldGVyaShlLDEwMjQwLFNbci5tYWdGaWx0ZXJdKSx0LnRleFBhcmFtZXRlcmkoZSwxMDI0MSxTW3IubWluRmlsdGVyXSkpOih0LnRleFBhcmFtZXRlcmkoZSwxMDI0MiwzMzA3MSksdC50ZXhQYXJhbWV0ZXJpKGUsMTAyNDMsMzMwNzEpLDMyODc5IT09ZSYmMzU4NjYhPT1lfHx0LnRleFBhcmFtZXRlcmkoZSwzMjg4MiwzMzA3MSksci53cmFwUz09PXU5JiZyLndyYXBUPT09dTl8fGNvbnNvbGUud2FybigiVEhSRUUuV2ViR0xSZW5kZXJlcjogVGV4dHVyZSBpcyBub3QgcG93ZXIgb2YgdHdvLiBUZXh0dXJlLndyYXBTIGFuZCBUZXh0dXJlLndyYXBUIHNob3VsZCBiZSBzZXQgdG8gVEhSRUUuQ2xhbXBUb0VkZ2VXcmFwcGluZy4iKSx0LnRleFBhcmFtZXRlcmkoZSwxMDI0MCxPKHIubWFnRmlsdGVyKSksdC50ZXhQYXJhbWV0ZXJpKGUsMTAyNDEsTyhyLm1pbkZpbHRlcikpLHIubWluRmlsdGVyIT09aDkmJnIubWluRmlsdGVyIT09XzkmJmNvbnNvbGUud2FybigiVEhSRUUuV2ViR0xSZW5kZXJlcjogVGV4dHVyZSBpcyBub3QgcG93ZXIgb2YgdHdvLiBUZXh0dXJlLm1pbkZpbHRlciBzaG91bGQgYmUgc2V0IHRvIFRIUkVFLk5lYXJlc3RGaWx0ZXIgb3IgVEhSRUUuTGluZWFyRmlsdGVyLiIpKTtjb25zdCBzPW4uZ2V0KCJFWFRfdGV4dHVyZV9maWx0ZXJfYW5pc290cm9waWMiKTtpZihzKXtpZihyLnR5cGU9PT1QOSYmbnVsbD09PW4uZ2V0KCJPRVNfdGV4dHVyZV9mbG9hdF9saW5lYXIiKSlyZXR1cm47aWYoci50eXBlPT09eDkmJm51bGw9PT0oY3x8bi5nZXQoIk9FU190ZXh0dXJlX2hhbGZfZmxvYXRfbGluZWFyIikpKXJldHVybjsoci5hbmlzb3Ryb3B5PjF8fGEuZ2V0KHIpLl9fY3VycmVudEFuaXNvdHJvcHkpJiYodC50ZXhQYXJhbWV0ZXJmKGUscy5URVhUVVJFX01BWF9BTklTT1RST1BZX0VYVCxNYXRoLm1pbihyLmFuaXNvdHJvcHksby5nZXRNYXhBbmlzb3Ryb3B5KCkpKSxhLmdldChyKS5fX2N1cnJlbnRBbmlzb3Ryb3B5PXIuYW5pc290cm9weSl9fWZ1bmN0aW9uIEEobixlKXt2b2lkIDA9PT1uLl9fd2ViZ2xJbml0JiYobi5fX3dlYmdsSW5pdD0hMCxlLmFkZEV2ZW50TGlzdGVuZXIoImRpc3Bvc2UiLFApLG4uX193ZWJnbFRleHR1cmU9dC5jcmVhdGVUZXh0dXJlKCksaS5tZW1vcnkudGV4dHVyZXMrKyl9ZnVuY3Rpb24geihuLGEsbyl7bGV0IGk9MzU1MzthLmlzRGF0YVRleHR1cmUyREFycmF5JiYoaT0zNTg2NiksYS5pc0RhdGFUZXh0dXJlM0QmJihpPTMyODc5KSxBKG4sYSksZS5hY3RpdmVUZXh0dXJlKDMzOTg0K28pLGUuYmluZFRleHR1cmUoaSxuLl9fd2ViZ2xUZXh0dXJlKSx0LnBpeGVsU3RvcmVpKDM3NDQwLGEuZmxpcFkpLHQucGl4ZWxTdG9yZWkoMzc0NDEsYS5wcmVtdWx0aXBseUFscGhhKSx0LnBpeGVsU3RvcmVpKDMzMTcsYS51bnBhY2tBbGlnbm1lbnQpO2NvbnN0IHM9KGZ1bmN0aW9uIGwodCl7cmV0dXJuIWMmJih0LndyYXBTIT09dTl8fHQud3JhcFQhPT11OXx8dC5taW5GaWx0ZXIhPT1oOSYmdC5taW5GaWx0ZXIhPT1fOSl9KShhKSYmITE9PT1oKGEuaW1hZ2UpLGQ9ZihhLmltYWdlLHMsITEsbSksZz1oKGQpfHxjLHA9ci5jb252ZXJ0KGEuZm9ybWF0KTtsZXQgYix1PXIuY29udmVydChhLnR5cGUpLE89TShhLmludGVybmFsRm9ybWF0LHAsdSk7RShpLGEsZyk7Y29uc3QgUD1hLm1pcG1hcHM7aWYoYS5pc0RlcHRoVGV4dHVyZSlPPTY0MDIsYz9PPWEudHlwZT09PVA5PzM2MDEyOmEudHlwZT09PU85PzMzMTkwOmEudHlwZT09PXk5PzM1MDU2OjMzMTg5OmEudHlwZT09PVA5JiZjb25zb2xlLmVycm9yKCJXZWJHTFJlbmRlcmVyOiBGbG9hdGluZyBwb2ludCBkZXB0aCB0ZXh0dXJlIHJlcXVpcmVzIFdlYkdMMi4iKSxhLmZvcm1hdD09PXc5JiY2NDAyPT09TyYmYS50eXBlIT09TTkmJmEudHlwZSE9PU85JiYoY29uc29sZS53YXJuKCJUSFJFRS5XZWJHTFJlbmRlcmVyOiBVc2UgVW5zaWduZWRTaG9ydFR5cGUgb3IgVW5zaWduZWRJbnRUeXBlIGZvciBEZXB0aEZvcm1hdCBEZXB0aFRleHR1cmUuIiksYS50eXBlPU05LHU9ci5jb252ZXJ0KGEudHlwZSkpLGEuZm9ybWF0PT09UzkmJjY0MDI9PT1PJiYoTz0zNDA0MSxhLnR5cGUhPT15OSYmKGNvbnNvbGUud2FybigiVEhSRUUuV2ViR0xSZW5kZXJlcjogVXNlIFVuc2lnbmVkSW50MjQ4VHlwZSBmb3IgRGVwdGhTdGVuY2lsRm9ybWF0IERlcHRoVGV4dHVyZS4iKSxhLnR5cGU9eTksdT1yLmNvbnZlcnQoYS50eXBlKSkpLGUudGV4SW1hZ2UyRCgzNTUzLDAsTyxkLndpZHRoLGQuaGVpZ2h0LDAscCx1LG51bGwpO2Vsc2UgaWYoYS5pc0RhdGFUZXh0dXJlKWlmKFAubGVuZ3RoPjAmJmcpe2ZvcihsZXQgdD0wLG49UC5sZW5ndGg7dDxuO3QrKyliPVBbdF0sZS50ZXhJbWFnZTJEKDM1NTMsdCxPLGIud2lkdGgsYi5oZWlnaHQsMCxwLHUsYi5kYXRhKTthLmdlbmVyYXRlTWlwbWFwcz0hMSxuLl9fbWF4TWlwTGV2ZWw9UC5sZW5ndGgtMX1lbHNlIGUudGV4SW1hZ2UyRCgzNTUzLDAsTyxkLndpZHRoLGQuaGVpZ2h0LDAscCx1LGQuZGF0YSksbi5fX21heE1pcExldmVsPTA7ZWxzZSBpZihhLmlzQ29tcHJlc3NlZFRleHR1cmUpe2ZvcihsZXQgdD0wLG49UC5sZW5ndGg7dDxuO3QrKyliPVBbdF0sYS5mb3JtYXQhPT12OSYmYS5mb3JtYXQhPT1rOT9udWxsIT09cD9lLmNvbXByZXNzZWRUZXhJbWFnZTJEKDM1NTMsdCxPLGIud2lkdGgsYi5oZWlnaHQsMCxiLmRhdGEpOmNvbnNvbGUud2FybigiVEhSRUUuV2ViR0xSZW5kZXJlcjogQXR0ZW1wdCB0byBsb2FkIHVuc3VwcG9ydGVkIGNvbXByZXNzZWQgdGV4dHVyZSBmb3JtYXQgaW4gLnVwbG9hZFRleHR1cmUoKSIpOmUudGV4SW1hZ2UyRCgzNTUzLHQsTyxiLndpZHRoLGIuaGVpZ2h0LDAscCx1LGIuZGF0YSk7bi5fX21heE1pcExldmVsPVAubGVuZ3RoLTF9ZWxzZSBpZihhLmlzRGF0YVRleHR1cmUyREFycmF5KWUudGV4SW1hZ2UzRCgzNTg2NiwwLE8sZC53aWR0aCxkLmhlaWdodCxkLmRlcHRoLDAscCx1LGQuZGF0YSksbi5fX21heE1pcExldmVsPTA7ZWxzZSBpZihhLmlzRGF0YVRleHR1cmUzRCllLnRleEltYWdlM0QoMzI4NzksMCxPLGQud2lkdGgsZC5oZWlnaHQsZC5kZXB0aCwwLHAsdSxkLmRhdGEpLG4uX19tYXhNaXBMZXZlbD0wO2Vsc2UgaWYoUC5sZW5ndGg+MCYmZyl7Zm9yKGxldCB0PTAsbj1QLmxlbmd0aDt0PG47dCsrKWI9UFt0XSxlLnRleEltYWdlMkQoMzU1Myx0LE8scCx1LGIpO2EuZ2VuZXJhdGVNaXBtYXBzPSExLG4uX19tYXhNaXBMZXZlbD1QLmxlbmd0aC0xfWVsc2UgZS50ZXhJbWFnZTJEKDM1NTMsMCxPLHAsdSxkKSxuLl9fbWF4TWlwTGV2ZWw9MDtfKGEsZykmJkMoaSxhLGQud2lkdGgsZC5oZWlnaHQpLG4uX192ZXJzaW9uPWEudmVyc2lvbixhLm9uVXBkYXRlJiZhLm9uVXBkYXRlKGEpfWZ1bmN0aW9uIFIobixvLGksYyl7Y29uc3Qgcz1yLmNvbnZlcnQoby50ZXh0dXJlLmZvcm1hdCksbD1yLmNvbnZlcnQoby50ZXh0dXJlLnR5cGUpLG09TShvLnRleHR1cmUuaW50ZXJuYWxGb3JtYXQscyxsKTtlLnRleEltYWdlMkQoYywwLG0sby53aWR0aCxvLmhlaWdodCwwLHMsbCxudWxsKSx0LmJpbmRGcmFtZWJ1ZmZlcigzNjE2MCxuKSx0LmZyYW1lYnVmZmVyVGV4dHVyZTJEKDM2MTYwLGksYyxhLmdldChvLnRleHR1cmUpLl9fd2ViZ2xUZXh0dXJlLDApLHQuYmluZEZyYW1lYnVmZmVyKDM2MTYwLG51bGwpfWZ1bmN0aW9uIFQobixlLGEpe2lmKHQuYmluZFJlbmRlcmJ1ZmZlcigzNjE2MSxuKSxlLmRlcHRoQnVmZmVyJiYhZS5zdGVuY2lsQnVmZmVyKXtsZXQgbz0zMzE4OTtpZihhKXtjb25zdCBuPWUuZGVwdGhUZXh0dXJlO24mJm4uaXNEZXB0aFRleHR1cmUmJihuLnR5cGU9PT1QOT9vPTM2MDEyOm4udHlwZT09PU85JiYobz0zMzE5MCkpO2NvbnN0IGE9RChlKTt0LnJlbmRlcmJ1ZmZlclN0b3JhZ2VNdWx0aXNhbXBsZSgzNjE2MSxhLG8sZS53aWR0aCxlLmhlaWdodCl9ZWxzZSB0LnJlbmRlcmJ1ZmZlclN0b3JhZ2UoMzYxNjEsbyxlLndpZHRoLGUuaGVpZ2h0KTt0LmZyYW1lYnVmZmVyUmVuZGVyYnVmZmVyKDM2MTYwLDM2MDk2LDM2MTYxLG4pfWVsc2UgaWYoZS5kZXB0aEJ1ZmZlciYmZS5zdGVuY2lsQnVmZmVyKXtpZihhKXtjb25zdCBuPUQoZSk7dC5yZW5kZXJidWZmZXJTdG9yYWdlTXVsdGlzYW1wbGUoMzYxNjEsbiwzNTA1NixlLndpZHRoLGUuaGVpZ2h0KX1lbHNlIHQucmVuZGVyYnVmZmVyU3RvcmFnZSgzNjE2MSwzNDA0MSxlLndpZHRoLGUuaGVpZ2h0KTt0LmZyYW1lYnVmZmVyUmVuZGVyYnVmZmVyKDM2MTYwLDMzMzA2LDM2MTYxLG4pfWVsc2V7Y29uc3Qgbj1yLmNvbnZlcnQoZS50ZXh0dXJlLmZvcm1hdCksbz1yLmNvbnZlcnQoZS50ZXh0dXJlLnR5cGUpLGk9TShlLnRleHR1cmUuaW50ZXJuYWxGb3JtYXQsbixvKTtpZihhKXtjb25zdCBuPUQoZSk7dC5yZW5kZXJidWZmZXJTdG9yYWdlTXVsdGlzYW1wbGUoMzYxNjEsbixpLGUud2lkdGgsZS5oZWlnaHQpfWVsc2UgdC5yZW5kZXJidWZmZXJTdG9yYWdlKDM2MTYxLGksZS53aWR0aCxlLmhlaWdodCl9dC5iaW5kUmVuZGVyYnVmZmVyKDM2MTYxLG51bGwpfWZ1bmN0aW9uIEQodCl7cmV0dXJuIGMmJnQuaXNXZWJHTE11bHRpc2FtcGxlUmVuZGVyVGFyZ2V0P01hdGgubWluKGQsdC5zYW1wbGVzKTowfWxldCBJPSExLE49ITE7dGhpcy5hbGxvY2F0ZVRleHR1cmVVbml0PWZ1bmN0aW9uIEYoKXtjb25zdCB0PXk7cmV0dXJuIHQ+PXMmJmNvbnNvbGUud2FybigiVEhSRUUuV2ViR0xUZXh0dXJlczogVHJ5aW5nIHRvIHVzZSAiK3QrIiB0ZXh0dXJlIHVuaXRzIHdoaWxlIHRoaXMgR1BVIHN1cHBvcnRzIG9ubHkgIitzKSx5Kz0xLHR9LHRoaXMucmVzZXRUZXh0dXJlVW5pdHM9ZnVuY3Rpb24gTCgpe3k9MH0sdGhpcy5zZXRUZXh0dXJlMkQ9ayx0aGlzLnNldFRleHR1cmUyREFycmF5PWZ1bmN0aW9uIEgodCxuKXtjb25zdCBvPWEuZ2V0KHQpO3QudmVyc2lvbj4wJiZvLl9fdmVyc2lvbiE9PXQudmVyc2lvbj96KG8sdCxuKTooZS5hY3RpdmVUZXh0dXJlKDMzOTg0K24pLGUuYmluZFRleHR1cmUoMzU4NjYsby5fX3dlYmdsVGV4dHVyZSkpfSx0aGlzLnNldFRleHR1cmUzRD1mdW5jdGlvbiBCKHQsbil7Y29uc3Qgbz1hLmdldCh0KTt0LnZlcnNpb24+MCYmby5fX3ZlcnNpb24hPT10LnZlcnNpb24/eihvLHQsbik6KGUuYWN0aXZlVGV4dHVyZSgzMzk4NCtuKSxlLmJpbmRUZXh0dXJlKDMyODc5LG8uX193ZWJnbFRleHR1cmUpKX0sdGhpcy5zZXRUZXh0dXJlQ3ViZT12LHRoaXMuc2V0dXBSZW5kZXJUYXJnZXQ9ZnVuY3Rpb24gVihuKXtjb25zdCBvPWEuZ2V0KG4pLHM9YS5nZXQobi50ZXh0dXJlKTtuLmFkZEV2ZW50TGlzdGVuZXIoImRpc3Bvc2UiLHgpLHMuX193ZWJnbFRleHR1cmU9dC5jcmVhdGVUZXh0dXJlKCksaS5tZW1vcnkudGV4dHVyZXMrKztjb25zdCBsPSEwPT09bi5pc1dlYkdMQ3ViZVJlbmRlclRhcmdldCxtPSEwPT09bi5pc1dlYkdMTXVsdGlzYW1wbGVSZW5kZXJUYXJnZXQsZD1oKG4pfHxjO2lmKCFjfHxuLnRleHR1cmUuZm9ybWF0IT09azl8fG4udGV4dHVyZS50eXBlIT09UDkmJm4udGV4dHVyZS50eXBlIT09eDl8fChuLnRleHR1cmUuZm9ybWF0PXY5LGNvbnNvbGUud2FybigiVEhSRUUuV2ViR0xSZW5kZXJlcjogUmVuZGVyaW5nIHRvIHRleHR1cmVzIHdpdGggUkdCIGZvcm1hdCBpcyBub3Qgc3VwcG9ydGVkLiBVc2luZyBSR0JBIGZvcm1hdCBpbnN0ZWFkLiIpKSxsKXtvLl9fd2ViZ2xGcmFtZWJ1ZmZlcj1bXTtmb3IobGV0IG49MDtuPDY7bisrKW8uX193ZWJnbEZyYW1lYnVmZmVyW25dPXQuY3JlYXRlRnJhbWVidWZmZXIoKX1lbHNlIGlmKG8uX193ZWJnbEZyYW1lYnVmZmVyPXQuY3JlYXRlRnJhbWVidWZmZXIoKSxtKWlmKGMpe28uX193ZWJnbE11bHRpc2FtcGxlZEZyYW1lYnVmZmVyPXQuY3JlYXRlRnJhbWVidWZmZXIoKSxvLl9fd2ViZ2xDb2xvclJlbmRlcmJ1ZmZlcj10LmNyZWF0ZVJlbmRlcmJ1ZmZlcigpLHQuYmluZFJlbmRlcmJ1ZmZlcigzNjE2MSxvLl9fd2ViZ2xDb2xvclJlbmRlcmJ1ZmZlcik7Y29uc3QgZT1yLmNvbnZlcnQobi50ZXh0dXJlLmZvcm1hdCksYT1yLmNvbnZlcnQobi50ZXh0dXJlLnR5cGUpLGk9TShuLnRleHR1cmUuaW50ZXJuYWxGb3JtYXQsZSxhKSxjPUQobik7dC5yZW5kZXJidWZmZXJTdG9yYWdlTXVsdGlzYW1wbGUoMzYxNjEsYyxpLG4ud2lkdGgsbi5oZWlnaHQpLHQuYmluZEZyYW1lYnVmZmVyKDM2MTYwLG8uX193ZWJnbE11bHRpc2FtcGxlZEZyYW1lYnVmZmVyKSx0LmZyYW1lYnVmZmVyUmVuZGVyYnVmZmVyKDM2MTYwLDM2MDY0LDM2MTYxLG8uX193ZWJnbENvbG9yUmVuZGVyYnVmZmVyKSx0LmJpbmRSZW5kZXJidWZmZXIoMzYxNjEsbnVsbCksbi5kZXB0aEJ1ZmZlciYmKG8uX193ZWJnbERlcHRoUmVuZGVyYnVmZmVyPXQuY3JlYXRlUmVuZGVyYnVmZmVyKCksVChvLl9fd2ViZ2xEZXB0aFJlbmRlcmJ1ZmZlcixuLCEwKSksdC5iaW5kRnJhbWVidWZmZXIoMzYxNjAsbnVsbCl9ZWxzZSBjb25zb2xlLndhcm4oIlRIUkVFLldlYkdMUmVuZGVyZXI6IFdlYkdMTXVsdGlzYW1wbGVSZW5kZXJUYXJnZXQgY2FuIG9ubHkgYmUgdXNlZCB3aXRoIFdlYkdMMi4iKTtpZihsKXtlLmJpbmRUZXh0dXJlKDM0MDY3LHMuX193ZWJnbFRleHR1cmUpLEUoMzQwNjcsbi50ZXh0dXJlLGQpO2ZvcihsZXQgdD0wO3Q8Njt0KyspUihvLl9fd2ViZ2xGcmFtZWJ1ZmZlclt0XSxuLDM2MDY0LDM0MDY5K3QpO18obi50ZXh0dXJlLGQpJiZDKDM0MDY3LG4udGV4dHVyZSxuLndpZHRoLG4uaGVpZ2h0KSxlLmJpbmRUZXh0dXJlKDM0MDY3LG51bGwpfWVsc2UgZS5iaW5kVGV4dHVyZSgzNTUzLHMuX193ZWJnbFRleHR1cmUpLEUoMzU1MyxuLnRleHR1cmUsZCksUihvLl9fd2ViZ2xGcmFtZWJ1ZmZlcixuLDM2MDY0LDM1NTMpLF8obi50ZXh0dXJlLGQpJiZDKDM1NTMsbi50ZXh0dXJlLG4ud2lkdGgsbi5oZWlnaHQpLGUuYmluZFRleHR1cmUoMzU1MyxudWxsKTtuLmRlcHRoQnVmZmVyJiYoZnVuY3Rpb24gZyhuKXtjb25zdCBlPWEuZ2V0KG4pLG89ITA9PT1uLmlzV2ViR0xDdWJlUmVuZGVyVGFyZ2V0O2lmKG4uZGVwdGhUZXh0dXJlKXtpZihvKXRocm93IG5ldyBFcnJvcigidGFyZ2V0LmRlcHRoVGV4dHVyZSBub3Qgc3VwcG9ydGVkIGluIEN1YmUgcmVuZGVyIHRhcmdldHMiKTshKGZ1bmN0aW9uIHIobixlKXtpZihlJiZlLmlzV2ViR0xDdWJlUmVuZGVyVGFyZ2V0KXRocm93IG5ldyBFcnJvcigiRGVwdGggVGV4dHVyZSB3aXRoIGN1YmUgcmVuZGVyIHRhcmdldHMgaXMgbm90IHN1cHBvcnRlZCIpO2lmKHQuYmluZEZyYW1lYnVmZmVyKDM2MTYwLG4pLCFlLmRlcHRoVGV4dHVyZXx8IWUuZGVwdGhUZXh0dXJlLmlzRGVwdGhUZXh0dXJlKXRocm93IG5ldyBFcnJvcigicmVuZGVyVGFyZ2V0LmRlcHRoVGV4dHVyZSBtdXN0IGJlIGFuIGluc3RhbmNlIG9mIFRIUkVFLkRlcHRoVGV4dHVyZSIpO2EuZ2V0KGUuZGVwdGhUZXh0dXJlKS5fX3dlYmdsVGV4dHVyZSYmZS5kZXB0aFRleHR1cmUuaW1hZ2Uud2lkdGg9PT1lLndpZHRoJiZlLmRlcHRoVGV4dHVyZS5pbWFnZS5oZWlnaHQ9PT1lLmhlaWdodHx8KGUuZGVwdGhUZXh0dXJlLmltYWdlLndpZHRoPWUud2lkdGgsZS5kZXB0aFRleHR1cmUuaW1hZ2UuaGVpZ2h0PWUuaGVpZ2h0LGUuZGVwdGhUZXh0dXJlLm5lZWRzVXBkYXRlPSEwKSxrKGUuZGVwdGhUZXh0dXJlLDApO2NvbnN0IG89YS5nZXQoZS5kZXB0aFRleHR1cmUpLl9fd2ViZ2xUZXh0dXJlO2lmKGUuZGVwdGhUZXh0dXJlLmZvcm1hdD09PXc5KXQuZnJhbWVidWZmZXJUZXh0dXJlMkQoMzYxNjAsMzYwOTYsMzU1MyxvLDApO2Vsc2V7aWYoZS5kZXB0aFRleHR1cmUuZm9ybWF0IT09UzkpdGhyb3cgbmV3IEVycm9yKCJVbmtub3duIGRlcHRoVGV4dHVyZSBmb3JtYXQiKTt0LmZyYW1lYnVmZmVyVGV4dHVyZTJEKDM2MTYwLDMzMzA2LDM1NTMsbywwKX19KShlLl9fd2ViZ2xGcmFtZWJ1ZmZlcixuKX1lbHNlIGlmKG8pe2UuX193ZWJnbERlcHRoYnVmZmVyPVtdO2ZvcihsZXQgYT0wO2E8NjthKyspdC5iaW5kRnJhbWVidWZmZXIoMzYxNjAsZS5fX3dlYmdsRnJhbWVidWZmZXJbYV0pLGUuX193ZWJnbERlcHRoYnVmZmVyW2FdPXQuY3JlYXRlUmVuZGVyYnVmZmVyKCksVChlLl9fd2ViZ2xEZXB0aGJ1ZmZlclthXSxuLCExKX1lbHNlIHQuYmluZEZyYW1lYnVmZmVyKDM2MTYwLGUuX193ZWJnbEZyYW1lYnVmZmVyKSxlLl9fd2ViZ2xEZXB0aGJ1ZmZlcj10LmNyZWF0ZVJlbmRlcmJ1ZmZlcigpLFQoZS5fX3dlYmdsRGVwdGhidWZmZXIsbiwhMSk7dC5iaW5kRnJhbWVidWZmZXIoMzYxNjAsbnVsbCl9KShuKX0sdGhpcy51cGRhdGVSZW5kZXJUYXJnZXRNaXBtYXA9ZnVuY3Rpb24gaih0KXtjb25zdCBuPXQudGV4dHVyZTtpZihfKG4saCh0KXx8Yykpe2NvbnN0IG89dC5pc1dlYkdMQ3ViZVJlbmRlclRhcmdldD8zNDA2NzozNTUzLHI9YS5nZXQobikuX193ZWJnbFRleHR1cmU7ZS5iaW5kVGV4dHVyZShvLHIpLEMobyxuLHQud2lkdGgsdC5oZWlnaHQpLGUuYmluZFRleHR1cmUobyxudWxsKX19LHRoaXMudXBkYXRlTXVsdGlzYW1wbGVSZW5kZXJUYXJnZXQ9ZnVuY3Rpb24gVShuKXtpZihuLmlzV2ViR0xNdWx0aXNhbXBsZVJlbmRlclRhcmdldClpZihjKXtjb25zdCBlPWEuZ2V0KG4pO3QuYmluZEZyYW1lYnVmZmVyKDM2MDA4LGUuX193ZWJnbE11bHRpc2FtcGxlZEZyYW1lYnVmZmVyKSx0LmJpbmRGcmFtZWJ1ZmZlcigzNjAwOSxlLl9fd2ViZ2xGcmFtZWJ1ZmZlcik7Y29uc3Qgbz1uLndpZHRoLHI9bi5oZWlnaHQ7bGV0IGk9MTYzODQ7bi5kZXB0aEJ1ZmZlciYmKGl8PTI1Niksbi5zdGVuY2lsQnVmZmVyJiYoaXw9MTAyNCksdC5ibGl0RnJhbWVidWZmZXIoMCwwLG8sciwwLDAsbyxyLGksOTcyOCksdC5iaW5kRnJhbWVidWZmZXIoMzYxNjAsZS5fX3dlYmdsTXVsdGlzYW1wbGVkRnJhbWVidWZmZXIpfWVsc2UgY29uc29sZS53YXJuKCJUSFJFRS5XZWJHTFJlbmRlcmVyOiBXZWJHTE11bHRpc2FtcGxlUmVuZGVyVGFyZ2V0IGNhbiBvbmx5IGJlIHVzZWQgd2l0aCBXZWJHTDIuIil9LHRoaXMuc2FmZVNldFRleHR1cmUyRD1mdW5jdGlvbiBXKHQsbil7dCYmdC5pc1dlYkdMUmVuZGVyVGFyZ2V0JiYoITE9PT1JJiYoY29uc29sZS53YXJuKCJUSFJFRS5XZWJHTFRleHR1cmVzLnNhZmVTZXRUZXh0dXJlMkQ6IGRvbid0IHVzZSByZW5kZXIgdGFyZ2V0cyBhcyB0ZXh0dXJlcy4gVXNlIHRoZWlyIC50ZXh0dXJlIHByb3BlcnR5IGluc3RlYWQuIiksST0hMCksdD10LnRleHR1cmUpLGsodCxuKX0sdGhpcy5zYWZlU2V0VGV4dHVyZUN1YmU9ZnVuY3Rpb24gRyh0LG4pe3QmJnQuaXNXZWJHTEN1YmVSZW5kZXJUYXJnZXQmJighMT09PU4mJihjb25zb2xlLndhcm4oIlRIUkVFLldlYkdMVGV4dHVyZXMuc2FmZVNldFRleHR1cmVDdWJlOiBkb24ndCB1c2UgY3ViZSByZW5kZXIgdGFyZ2V0cyBhcyB0ZXh0dXJlcy4gVXNlIHRoZWlyIC50ZXh0dXJlIHByb3BlcnR5IGluc3RlYWQuIiksTj0hMCksdD10LnRleHR1cmUpLHYodCxuKX19ZnVuY3Rpb24gUm90KHQsbixlKXtjb25zdCBhPWUuaXNXZWJHTDI7cmV0dXJue2NvbnZlcnQ6ZnVuY3Rpb24gbyh0KXtsZXQgZTtpZigxMDA5PT09dClyZXR1cm4gNTEyMTtpZigxMDE3PT09dClyZXR1cm4gMzI4MTk7aWYoMTAxOD09PXQpcmV0dXJuIDMyODIwO2lmKDEwMTk9PT10KXJldHVybiAzMzYzNTtpZigxMDEwPT09dClyZXR1cm4gNTEyMDtpZigxMDExPT09dClyZXR1cm4gNTEyMjtpZih0PT09TTkpcmV0dXJuIDUxMjM7aWYoMTAxMz09PXQpcmV0dXJuIDUxMjQ7aWYodD09PU85KXJldHVybiA1MTI1O2lmKHQ9PT1QOSlyZXR1cm4gNTEyNjtpZih0PT09eDkpcmV0dXJuIGE/NTEzMTooZT1uLmdldCgiT0VTX3RleHR1cmVfaGFsZl9mbG9hdCIpLG51bGwhPT1lP2UuSEFMRl9GTE9BVF9PRVM6bnVsbCk7aWYoMTAyMT09PXQpcmV0dXJuIDY0MDY7aWYodD09PWs5KXJldHVybiA2NDA3O2lmKHQ9PT12OSlyZXR1cm4gNjQwODtpZigxMDI0PT09dClyZXR1cm4gNjQwOTtpZigxMDI1PT09dClyZXR1cm4gNjQxMDtpZih0PT09dzkpcmV0dXJuIDY0MDI7aWYodD09PVM5KXJldHVybiAzNDA0MTtpZigxMDI4PT09dClyZXR1cm4gNjQwMztpZigxMDI5PT09dClyZXR1cm4gMzYyNDQ7aWYoMTAzMD09PXQpcmV0dXJuIDMzMzE5O2lmKDEwMzE9PT10KXJldHVybiAzMzMyMDtpZigxMDMyPT09dClyZXR1cm4gMzYyNDg7aWYoMTAzMz09PXQpcmV0dXJuIDM2MjQ5O2lmKDMzNzc2PT09dHx8MzM3Nzc9PT10fHwzMzc3OD09PXR8fDMzNzc5PT09dCl7aWYoZT1uLmdldCgiV0VCR0xfY29tcHJlc3NlZF90ZXh0dXJlX3MzdGMiKSxudWxsPT09ZSlyZXR1cm4gbnVsbDtpZigzMzc3Nj09PXQpcmV0dXJuIGUuQ09NUFJFU1NFRF9SR0JfUzNUQ19EWFQxX0VYVDtpZigzMzc3Nz09PXQpcmV0dXJuIGUuQ09NUFJFU1NFRF9SR0JBX1MzVENfRFhUMV9FWFQ7aWYoMzM3Nzg9PT10KXJldHVybiBlLkNPTVBSRVNTRURfUkdCQV9TM1RDX0RYVDNfRVhUO2lmKDMzNzc5PT09dClyZXR1cm4gZS5DT01QUkVTU0VEX1JHQkFfUzNUQ19EWFQ1X0VYVH1pZigzNTg0MD09PXR8fDM1ODQxPT09dHx8MzU4NDI9PT10fHwzNTg0Mz09PXQpe2lmKGU9bi5nZXQoIldFQkdMX2NvbXByZXNzZWRfdGV4dHVyZV9wdnJ0YyIpLG51bGw9PT1lKXJldHVybiBudWxsO2lmKDM1ODQwPT09dClyZXR1cm4gZS5DT01QUkVTU0VEX1JHQl9QVlJUQ180QlBQVjFfSU1HO2lmKDM1ODQxPT09dClyZXR1cm4gZS5DT01QUkVTU0VEX1JHQl9QVlJUQ18yQlBQVjFfSU1HO2lmKDM1ODQyPT09dClyZXR1cm4gZS5DT01QUkVTU0VEX1JHQkFfUFZSVENfNEJQUFYxX0lNRztpZigzNTg0Mz09PXQpcmV0dXJuIGUuQ09NUFJFU1NFRF9SR0JBX1BWUlRDXzJCUFBWMV9JTUd9aWYoMzYxOTY9PT10KXJldHVybiBlPW4uZ2V0KCJXRUJHTF9jb21wcmVzc2VkX3RleHR1cmVfZXRjMSIpLG51bGwhPT1lP2UuQ09NUFJFU1NFRF9SR0JfRVRDMV9XRUJHTDpudWxsO2lmKCgzNzQ5Mj09PXR8fDM3NDk2PT09dCkmJihlPW4uZ2V0KCJXRUJHTF9jb21wcmVzc2VkX3RleHR1cmVfZXRjIiksbnVsbCE9PWUpKXtpZigzNzQ5Mj09PXQpcmV0dXJuIGUuQ09NUFJFU1NFRF9SR0I4X0VUQzI7aWYoMzc0OTY9PT10KXJldHVybiBlLkNPTVBSRVNTRURfUkdCQThfRVRDMl9FQUN9cmV0dXJuIDM3ODA4PT09dHx8Mzc4MDk9PT10fHwzNzgxMD09PXR8fDM3ODExPT09dHx8Mzc4MTI9PT10fHwzNzgxMz09PXR8fDM3ODE0PT09dHx8Mzc4MTU9PT10fHwzNzgxNj09PXR8fDM3ODE3PT09dHx8Mzc4MTg9PT10fHwzNzgxOT09PXR8fDM3ODIwPT09dHx8Mzc4MjE9PT10fHwzNzg0MD09PXR8fDM3ODQxPT09dHx8Mzc4NDI9PT10fHwzNzg0Mz09PXR8fDM3ODQ0PT09dHx8Mzc4NDU9PT10fHwzNzg0Nj09PXR8fDM3ODQ3PT09dHx8Mzc4NDg9PT10fHwzNzg0OT09PXR8fDM3ODUwPT09dHx8Mzc4NTE9PT10fHwzNzg1Mj09PXR8fDM3ODUzPT09dD8oZT1uLmdldCgiV0VCR0xfY29tcHJlc3NlZF90ZXh0dXJlX2FzdGMiKSxudWxsIT09ZT90Om51bGwpOjM2NDkyPT09dD8oZT1uLmdldCgiRVhUX3RleHR1cmVfY29tcHJlc3Npb25fYnB0YyIpLG51bGwhPT1lP3Q6bnVsbCk6dD09PXk5P2E/MzQwNDI6KGU9bi5nZXQoIldFQkdMX2RlcHRoX3RleHR1cmUiKSxudWxsIT09ZT9lLlVOU0lHTkVEX0lOVF8yNF84X1dFQkdMOm51bGwpOnZvaWQgMH19fWZ1bmN0aW9uIFRvdCh0PVtdKXtQZXQuY2FsbCh0aGlzKSx0aGlzLmNhbWVyYXM9dH1mdW5jdGlvbiBEb3QoKXskdHQuY2FsbCh0aGlzKSx0aGlzLnR5cGU9Ikdyb3VwIn1mdW5jdGlvbiBJb3QoKXt0aGlzLl90YXJnZXRSYXk9bnVsbCx0aGlzLl9ncmlwPW51bGwsdGhpcy5faGFuZD1udWxsfWZ1bmN0aW9uIE5vdCh0LG4pe2NvbnN0IGU9dGhpcztsZXQgYT1udWxsLG89MSxyPW51bGwsaT0ibG9jYWwtZmxvb3IiLGM9bnVsbDtjb25zdCBzPVtdLGw9bmV3IE1hcCxtPW5ldyBQZXQ7bS5sYXllcnMuZW5hYmxlKDEpLG0udmlld3BvcnQ9bmV3IFE5O2NvbnN0IGQ9bmV3IFBldDtkLmxheWVycy5lbmFibGUoMiksZC52aWV3cG9ydD1uZXcgUTk7Y29uc3QgZz1bbSxkXSxwPW5ldyBUb3Q7cC5sYXllcnMuZW5hYmxlKDEpLHAubGF5ZXJzLmVuYWJsZSgyKTtsZXQgYj1udWxsLHU9bnVsbDtmdW5jdGlvbiBmKHQpe2NvbnN0IG49bC5nZXQodC5pbnB1dFNvdXJjZSk7biYmbi5kaXNwYXRjaEV2ZW50KHt0eXBlOnQudHlwZSxkYXRhOnQuaW5wdXRTb3VyY2V9KX1mdW5jdGlvbiBoKCl7bC5mb3JFYWNoKChmdW5jdGlvbih0LG4pe3QuZGlzY29ubmVjdChuKX0pKSxsLmNsZWFyKCksYj1udWxsLHU9bnVsbCx0LnNldEZyYW1lYnVmZmVyKG51bGwpLHQuc2V0UmVuZGVyVGFyZ2V0KHQuZ2V0UmVuZGVyVGFyZ2V0KCkpLHguc3RvcCgpLGUuaXNQcmVzZW50aW5nPSExLGUuZGlzcGF0Y2hFdmVudCh7dHlwZToic2Vzc2lvbmVuZCJ9KX1mdW5jdGlvbiBfKHQpe2NvbnN0IG49YS5pbnB1dFNvdXJjZXM7Zm9yKGxldCB0PTA7dDxzLmxlbmd0aDt0KyspbC5zZXQoblt0XSxzW3RdKTtmb3IobGV0IG49MDtuPHQucmVtb3ZlZC5sZW5ndGg7bisrKXtjb25zdCBlPXQucmVtb3ZlZFtuXSxhPWwuZ2V0KGUpO2EmJihhLmRpc3BhdGNoRXZlbnQoe3R5cGU6ImRpc2Nvbm5lY3RlZCIsZGF0YTplfSksbC5kZWxldGUoZSkpfWZvcihsZXQgbj0wO248dC5hZGRlZC5sZW5ndGg7bisrKXtjb25zdCBlPXQuYWRkZWRbbl0sYT1sLmdldChlKTthJiZhLmRpc3BhdGNoRXZlbnQoe3R5cGU6ImNvbm5lY3RlZCIsZGF0YTplfSl9fXRoaXMuZW5hYmxlZD0hMSx0aGlzLmlzUHJlc2VudGluZz0hMSx0aGlzLmdldENvbnRyb2xsZXI9ZnVuY3Rpb24odCl7bGV0IG49c1t0XTtyZXR1cm4gdm9pZCAwPT09biYmKG49bmV3IElvdCxzW3RdPW4pLG4uZ2V0VGFyZ2V0UmF5U3BhY2UoKX0sdGhpcy5nZXRDb250cm9sbGVyR3JpcD1mdW5jdGlvbih0KXtsZXQgbj1zW3RdO3JldHVybiB2b2lkIDA9PT1uJiYobj1uZXcgSW90LHNbdF09biksbi5nZXRHcmlwU3BhY2UoKX0sdGhpcy5nZXRIYW5kPWZ1bmN0aW9uKHQpe2xldCBuPXNbdF07cmV0dXJuIHZvaWQgMD09PW4mJihuPW5ldyBJb3Qsc1t0XT1uKSxuLmdldEhhbmRTcGFjZSgpfSx0aGlzLnNldEZyYW1lYnVmZmVyU2NhbGVGYWN0b3I9ZnVuY3Rpb24odCl7bz10LCEwPT09ZS5pc1ByZXNlbnRpbmcmJmNvbnNvbGUud2FybigiVEhSRUUuV2ViWFJNYW5hZ2VyOiBDYW5ub3QgY2hhbmdlIGZyYW1lYnVmZmVyIHNjYWxlIHdoaWxlIHByZXNlbnRpbmcuIil9LHRoaXMuc2V0UmVmZXJlbmNlU3BhY2VUeXBlPWZ1bmN0aW9uKHQpe2k9dCwhMD09PWUuaXNQcmVzZW50aW5nJiZjb25zb2xlLndhcm4oIlRIUkVFLldlYlhSTWFuYWdlcjogQ2Fubm90IGNoYW5nZSByZWZlcmVuY2Ugc3BhY2UgdHlwZSB3aGlsZSBwcmVzZW50aW5nLiIpfSx0aGlzLmdldFJlZmVyZW5jZVNwYWNlPWZ1bmN0aW9uKCl7cmV0dXJuIHJ9LHRoaXMuZ2V0U2Vzc2lvbj1mdW5jdGlvbigpe3JldHVybiBhfSx0aGlzLnNldFNlc3Npb249YXN5bmMgZnVuY3Rpb24odCl7aWYoYT10LG51bGwhPT1hKXthLmFkZEV2ZW50TGlzdGVuZXIoInNlbGVjdCIsZiksYS5hZGRFdmVudExpc3RlbmVyKCJzZWxlY3RzdGFydCIsZiksYS5hZGRFdmVudExpc3RlbmVyKCJzZWxlY3RlbmQiLGYpLGEuYWRkRXZlbnRMaXN0ZW5lcigic3F1ZWV6ZSIsZiksYS5hZGRFdmVudExpc3RlbmVyKCJzcXVlZXplc3RhcnQiLGYpLGEuYWRkRXZlbnRMaXN0ZW5lcigic3F1ZWV6ZWVuZCIsZiksYS5hZGRFdmVudExpc3RlbmVyKCJlbmQiLGgpLGEuYWRkRXZlbnRMaXN0ZW5lcigiaW5wdXRzb3VyY2VzY2hhbmdlIixfKTtjb25zdCB0PW4uZ2V0Q29udGV4dEF0dHJpYnV0ZXMoKTshMCE9PXQueHJDb21wYXRpYmxlJiZhd2FpdCBuLm1ha2VYUkNvbXBhdGlibGUoKTtjb25zdCBjPW5ldyBYUldlYkdMTGF5ZXIoYSxuLHthbnRpYWxpYXM6dC5hbnRpYWxpYXMsYWxwaGE6dC5hbHBoYSxkZXB0aDp0LmRlcHRoLHN0ZW5jaWw6dC5zdGVuY2lsLGZyYW1lYnVmZmVyU2NhbGVGYWN0b3I6b30pO2EudXBkYXRlUmVuZGVyU3RhdGUoe2Jhc2VMYXllcjpjfSkscj1hd2FpdCBhLnJlcXVlc3RSZWZlcmVuY2VTcGFjZShpKSx4LnNldENvbnRleHQoYSkseC5zdGFydCgpLGUuaXNQcmVzZW50aW5nPSEwLGUuZGlzcGF0Y2hFdmVudCh7dHlwZToic2Vzc2lvbnN0YXJ0In0pfX07Y29uc3QgQz1uZXcgdHR0LE09bmV3IHR0dDtmdW5jdGlvbiBPKHQsbil7bnVsbD09PW4/dC5tYXRyaXhXb3JsZC5jb3B5KHQubWF0cml4KTp0Lm1hdHJpeFdvcmxkLm11bHRpcGx5TWF0cmljZXMobi5tYXRyaXhXb3JsZCx0Lm1hdHJpeCksdC5tYXRyaXhXb3JsZEludmVyc2UuY29weSh0Lm1hdHJpeFdvcmxkKS5pbnZlcnQoKX10aGlzLmdldENhbWVyYT1mdW5jdGlvbih0KXtwLm5lYXI9ZC5uZWFyPW0ubmVhcj10Lm5lYXIscC5mYXI9ZC5mYXI9bS5mYXI9dC5mYXIsYj09PXAubmVhciYmdT09PXAuZmFyfHwoYS51cGRhdGVSZW5kZXJTdGF0ZSh7ZGVwdGhOZWFyOnAubmVhcixkZXB0aEZhcjpwLmZhcn0pLGI9cC5uZWFyLHU9cC5mYXIpO2NvbnN0IG49dC5wYXJlbnQsZT1wLmNhbWVyYXM7TyhwLG4pO2ZvcihsZXQgdD0wO3Q8ZS5sZW5ndGg7dCsrKU8oZVt0XSxuKTt0Lm1hdHJpeFdvcmxkLmNvcHkocC5tYXRyaXhXb3JsZCksdC5tYXRyaXguY29weShwLm1hdHJpeCksdC5tYXRyaXguZGVjb21wb3NlKHQucG9zaXRpb24sdC5xdWF0ZXJuaW9uLHQuc2NhbGUpO2NvbnN0IG89dC5jaGlsZHJlbjtmb3IobGV0IHQ9MCxuPW8ubGVuZ3RoO3Q8bjt0Kyspb1t0XS51cGRhdGVNYXRyaXhXb3JsZCghMCk7cmV0dXJuIDI9PT1lLmxlbmd0aD8oZnVuY3Rpb24gcih0LG4sZSl7Qy5zZXRGcm9tTWF0cml4UG9zaXRpb24obi5tYXRyaXhXb3JsZCksTS5zZXRGcm9tTWF0cml4UG9zaXRpb24oZS5tYXRyaXhXb3JsZCk7Y29uc3QgYT1DLmRpc3RhbmNlVG8oTSksbz1uLnByb2plY3Rpb25NYXRyaXguZWxlbWVudHMscj1lLnByb2plY3Rpb25NYXRyaXguZWxlbWVudHMsaT1vWzE0XS8ob1sxMF0tMSksYz1vWzE0XS8ob1sxMF0rMSkscz0ob1s5XSsxKS9vWzVdLGw9KG9bOV0tMSkvb1s1XSxtPShvWzhdLTEpL29bMF0sZD0ocls4XSsxKS9yWzBdLGc9aSptLHA9aSpkLGI9YS8oLW0rZCksdT1iKi1tO24ubWF0cml4V29ybGQuZGVjb21wb3NlKHQucG9zaXRpb24sdC5xdWF0ZXJuaW9uLHQuc2NhbGUpLHQudHJhbnNsYXRlWCh1KSx0LnRyYW5zbGF0ZVooYiksdC5tYXRyaXhXb3JsZC5jb21wb3NlKHQucG9zaXRpb24sdC5xdWF0ZXJuaW9uLHQuc2NhbGUpLHQubWF0cml4V29ybGRJbnZlcnNlLmNvcHkodC5tYXRyaXhXb3JsZCkuaW52ZXJ0KCk7Y29uc3QgZj1pK2IsaD1jK2I7dC5wcm9qZWN0aW9uTWF0cml4Lm1ha2VQZXJzcGVjdGl2ZShnLXUscCsoYS11KSxzKmMvaCpmLGwqYy9oKmYsZixoKX0pKHAsbSxkKTpwLnByb2plY3Rpb25NYXRyaXguY29weShtLnByb2plY3Rpb25NYXRyaXgpLHB9O2xldCBQPW51bGw7Y29uc3QgeD1uZXcgUmV0O3guc2V0QW5pbWF0aW9uTG9vcCgoZnVuY3Rpb24geShuLGUpe2lmKGM9ZS5nZXRWaWV3ZXJQb3NlKHIpLG51bGwhPT1jKXtjb25zdCBuPWMudmlld3MsZT1hLnJlbmRlclN0YXRlLmJhc2VMYXllcjt0LnNldEZyYW1lYnVmZmVyKGUuZnJhbWVidWZmZXIpO2xldCBvPSExO24ubGVuZ3RoIT09cC5jYW1lcmFzLmxlbmd0aCYmKHAuY2FtZXJhcy5sZW5ndGg9MCxvPSEwKTtmb3IobGV0IHQ9MDt0PG4ubGVuZ3RoO3QrKyl7Y29uc3QgYT1uW3RdLHI9ZS5nZXRWaWV3cG9ydChhKSxpPWdbdF07aS5tYXRyaXguZnJvbUFycmF5KGEudHJhbnNmb3JtLm1hdHJpeCksaS5wcm9qZWN0aW9uTWF0cml4LmZyb21BcnJheShhLnByb2plY3Rpb25NYXRyaXgpLGkudmlld3BvcnQuc2V0KHIueCxyLnksci53aWR0aCxyLmhlaWdodCksMD09PXQmJnAubWF0cml4LmNvcHkoaS5tYXRyaXgpLCEwPT09byYmcC5jYW1lcmFzLnB1c2goaSl9fWNvbnN0IG89YS5pbnB1dFNvdXJjZXM7Zm9yKGxldCB0PTA7dDxzLmxlbmd0aDt0Kyspc1t0XS51cGRhdGUob1t0XSxlLHIpO1AmJlAobixlKX0pKSx0aGlzLnNldEFuaW1hdGlvbkxvb3A9ZnVuY3Rpb24odCl7UD10fSx0aGlzLmRpc3Bvc2U9ZnVuY3Rpb24oKXt9fWZ1bmN0aW9uIEZvdCh0KXtmdW5jdGlvbiBuKG4sZSl7bi5vcGFjaXR5LnZhbHVlPWUub3BhY2l0eSxlLmNvbG9yJiZuLmRpZmZ1c2UudmFsdWUuY29weShlLmNvbG9yKSxlLmVtaXNzaXZlJiZuLmVtaXNzaXZlLnZhbHVlLmNvcHkoZS5lbWlzc2l2ZSkubXVsdGlwbHlTY2FsYXIoZS5lbWlzc2l2ZUludGVuc2l0eSksZS5tYXAmJihuLm1hcC52YWx1ZT1lLm1hcCksZS5hbHBoYU1hcCYmKG4uYWxwaGFNYXAudmFsdWU9ZS5hbHBoYU1hcCksZS5zcGVjdWxhck1hcCYmKG4uc3BlY3VsYXJNYXAudmFsdWU9ZS5zcGVjdWxhck1hcCk7Y29uc3QgYT10LmdldChlKS5lbnZNYXA7aWYoYSl7bi5lbnZNYXAudmFsdWU9YSxuLmZsaXBFbnZNYXAudmFsdWU9YS5pc0N1YmVUZXh0dXJlJiZhLl9uZWVkc0ZsaXBFbnZNYXA/LTE6MSxuLnJlZmxlY3Rpdml0eS52YWx1ZT1lLnJlZmxlY3Rpdml0eSxuLnJlZnJhY3Rpb25SYXRpby52YWx1ZT1lLnJlZnJhY3Rpb25SYXRpbztjb25zdCBvPXQuZ2V0KGEpLl9fbWF4TWlwTGV2ZWw7dm9pZCAwIT09byYmKG4ubWF4TWlwTGV2ZWwudmFsdWU9byl9bGV0IG8scjtlLmxpZ2h0TWFwJiYobi5saWdodE1hcC52YWx1ZT1lLmxpZ2h0TWFwLG4ubGlnaHRNYXBJbnRlbnNpdHkudmFsdWU9ZS5saWdodE1hcEludGVuc2l0eSksZS5hb01hcCYmKG4uYW9NYXAudmFsdWU9ZS5hb01hcCxuLmFvTWFwSW50ZW5zaXR5LnZhbHVlPWUuYW9NYXBJbnRlbnNpdHkpLGUubWFwP289ZS5tYXA6ZS5zcGVjdWxhck1hcD9vPWUuc3BlY3VsYXJNYXA6ZS5kaXNwbGFjZW1lbnRNYXA/bz1lLmRpc3BsYWNlbWVudE1hcDplLm5vcm1hbE1hcD9vPWUubm9ybWFsTWFwOmUuYnVtcE1hcD9vPWUuYnVtcE1hcDplLnJvdWdobmVzc01hcD9vPWUucm91Z2huZXNzTWFwOmUubWV0YWxuZXNzTWFwP289ZS5tZXRhbG5lc3NNYXA6ZS5hbHBoYU1hcD9vPWUuYWxwaGFNYXA6ZS5lbWlzc2l2ZU1hcD9vPWUuZW1pc3NpdmVNYXA6ZS5jbGVhcmNvYXRNYXA/bz1lLmNsZWFyY29hdE1hcDplLmNsZWFyY29hdE5vcm1hbE1hcD9vPWUuY2xlYXJjb2F0Tm9ybWFsTWFwOmUuY2xlYXJjb2F0Um91Z2huZXNzTWFwJiYobz1lLmNsZWFyY29hdFJvdWdobmVzc01hcCksdm9pZCAwIT09byYmKG8uaXNXZWJHTFJlbmRlclRhcmdldCYmKG89by50ZXh0dXJlKSwhMD09PW8ubWF0cml4QXV0b1VwZGF0ZSYmby51cGRhdGVNYXRyaXgoKSxuLnV2VHJhbnNmb3JtLnZhbHVlLmNvcHkoby5tYXRyaXgpKSxlLmFvTWFwP3I9ZS5hb01hcDplLmxpZ2h0TWFwJiYocj1lLmxpZ2h0TWFwKSx2b2lkIDAhPT1yJiYoci5pc1dlYkdMUmVuZGVyVGFyZ2V0JiYocj1yLnRleHR1cmUpLCEwPT09ci5tYXRyaXhBdXRvVXBkYXRlJiZyLnVwZGF0ZU1hdHJpeCgpLG4udXYyVHJhbnNmb3JtLnZhbHVlLmNvcHkoci5tYXRyaXgpKX1mdW5jdGlvbiBlKG4sZSl7bi5yb3VnaG5lc3MudmFsdWU9ZS5yb3VnaG5lc3Msbi5tZXRhbG5lc3MudmFsdWU9ZS5tZXRhbG5lc3MsZS5yb3VnaG5lc3NNYXAmJihuLnJvdWdobmVzc01hcC52YWx1ZT1lLnJvdWdobmVzc01hcCksZS5tZXRhbG5lc3NNYXAmJihuLm1ldGFsbmVzc01hcC52YWx1ZT1lLm1ldGFsbmVzc01hcCksZS5lbWlzc2l2ZU1hcCYmKG4uZW1pc3NpdmVNYXAudmFsdWU9ZS5lbWlzc2l2ZU1hcCksZS5idW1wTWFwJiYobi5idW1wTWFwLnZhbHVlPWUuYnVtcE1hcCxuLmJ1bXBTY2FsZS52YWx1ZT1lLmJ1bXBTY2FsZSwxPT09ZS5zaWRlJiYobi5idW1wU2NhbGUudmFsdWUqPS0xKSksZS5ub3JtYWxNYXAmJihuLm5vcm1hbE1hcC52YWx1ZT1lLm5vcm1hbE1hcCxuLm5vcm1hbFNjYWxlLnZhbHVlLmNvcHkoZS5ub3JtYWxTY2FsZSksMT09PWUuc2lkZSYmbi5ub3JtYWxTY2FsZS52YWx1ZS5uZWdhdGUoKSksZS5kaXNwbGFjZW1lbnRNYXAmJihuLmRpc3BsYWNlbWVudE1hcC52YWx1ZT1lLmRpc3BsYWNlbWVudE1hcCxuLmRpc3BsYWNlbWVudFNjYWxlLnZhbHVlPWUuZGlzcGxhY2VtZW50U2NhbGUsbi5kaXNwbGFjZW1lbnRCaWFzLnZhbHVlPWUuZGlzcGxhY2VtZW50QmlhcyksdC5nZXQoZSkuZW52TWFwJiYobi5lbnZNYXBJbnRlbnNpdHkudmFsdWU9ZS5lbnZNYXBJbnRlbnNpdHkpfXJldHVybntyZWZyZXNoRm9nVW5pZm9ybXM6ZnVuY3Rpb24gYSh0LG4pe3QuZm9nQ29sb3IudmFsdWUuY29weShuLmNvbG9yKSxuLmlzRm9nPyh0LmZvZ05lYXIudmFsdWU9bi5uZWFyLHQuZm9nRmFyLnZhbHVlPW4uZmFyKTpuLmlzRm9nRXhwMiYmKHQuZm9nRGVuc2l0eS52YWx1ZT1uLmRlbnNpdHkpfSxyZWZyZXNoTWF0ZXJpYWxVbmlmb3JtczpmdW5jdGlvbiBvKHQsYSxyLGkpe2EuaXNNZXNoQmFzaWNNYXRlcmlhbD9uKHQsYSk6YS5pc01lc2hMYW1iZXJ0TWF0ZXJpYWw/KG4odCxhKSwoZnVuY3Rpb24gYyh0LG4pe24uZW1pc3NpdmVNYXAmJih0LmVtaXNzaXZlTWFwLnZhbHVlPW4uZW1pc3NpdmVNYXApfSkodCxhKSk6YS5pc01lc2hUb29uTWF0ZXJpYWw/KG4odCxhKSwoZnVuY3Rpb24gcyh0LG4pe24uZ3JhZGllbnRNYXAmJih0LmdyYWRpZW50TWFwLnZhbHVlPW4uZ3JhZGllbnRNYXApLG4uZW1pc3NpdmVNYXAmJih0LmVtaXNzaXZlTWFwLnZhbHVlPW4uZW1pc3NpdmVNYXApLG4uYnVtcE1hcCYmKHQuYnVtcE1hcC52YWx1ZT1uLmJ1bXBNYXAsdC5idW1wU2NhbGUudmFsdWU9bi5idW1wU2NhbGUsMT09PW4uc2lkZSYmKHQuYnVtcFNjYWxlLnZhbHVlKj0tMSkpLG4ubm9ybWFsTWFwJiYodC5ub3JtYWxNYXAudmFsdWU9bi5ub3JtYWxNYXAsdC5ub3JtYWxTY2FsZS52YWx1ZS5jb3B5KG4ubm9ybWFsU2NhbGUpLDE9PT1uLnNpZGUmJnQubm9ybWFsU2NhbGUudmFsdWUubmVnYXRlKCkpLG4uZGlzcGxhY2VtZW50TWFwJiYodC5kaXNwbGFjZW1lbnRNYXAudmFsdWU9bi5kaXNwbGFjZW1lbnRNYXAsdC5kaXNwbGFjZW1lbnRTY2FsZS52YWx1ZT1uLmRpc3BsYWNlbWVudFNjYWxlLHQuZGlzcGxhY2VtZW50Qmlhcy52YWx1ZT1uLmRpc3BsYWNlbWVudEJpYXMpfSkodCxhKSk6YS5pc01lc2hQaG9uZ01hdGVyaWFsPyhuKHQsYSksKGZ1bmN0aW9uIGwodCxuKXt0LnNwZWN1bGFyLnZhbHVlLmNvcHkobi5zcGVjdWxhciksdC5zaGluaW5lc3MudmFsdWU9TWF0aC5tYXgobi5zaGluaW5lc3MsMWUtNCksbi5lbWlzc2l2ZU1hcCYmKHQuZW1pc3NpdmVNYXAudmFsdWU9bi5lbWlzc2l2ZU1hcCksbi5idW1wTWFwJiYodC5idW1wTWFwLnZhbHVlPW4uYnVtcE1hcCx0LmJ1bXBTY2FsZS52YWx1ZT1uLmJ1bXBTY2FsZSwxPT09bi5zaWRlJiYodC5idW1wU2NhbGUudmFsdWUqPS0xKSksbi5ub3JtYWxNYXAmJih0Lm5vcm1hbE1hcC52YWx1ZT1uLm5vcm1hbE1hcCx0Lm5vcm1hbFNjYWxlLnZhbHVlLmNvcHkobi5ub3JtYWxTY2FsZSksMT09PW4uc2lkZSYmdC5ub3JtYWxTY2FsZS52YWx1ZS5uZWdhdGUoKSksbi5kaXNwbGFjZW1lbnRNYXAmJih0LmRpc3BsYWNlbWVudE1hcC52YWx1ZT1uLmRpc3BsYWNlbWVudE1hcCx0LmRpc3BsYWNlbWVudFNjYWxlLnZhbHVlPW4uZGlzcGxhY2VtZW50U2NhbGUsdC5kaXNwbGFjZW1lbnRCaWFzLnZhbHVlPW4uZGlzcGxhY2VtZW50Qmlhcyl9KSh0LGEpKTphLmlzTWVzaFN0YW5kYXJkTWF0ZXJpYWw/KG4odCxhKSxhLmlzTWVzaFBoeXNpY2FsTWF0ZXJpYWw/KGZ1bmN0aW9uIG0odCxuKXtlKHQsbiksdC5yZWZsZWN0aXZpdHkudmFsdWU9bi5yZWZsZWN0aXZpdHksdC5jbGVhcmNvYXQudmFsdWU9bi5jbGVhcmNvYXQsdC5jbGVhcmNvYXRSb3VnaG5lc3MudmFsdWU9bi5jbGVhcmNvYXRSb3VnaG5lc3Msbi5zaGVlbiYmdC5zaGVlbi52YWx1ZS5jb3B5KG4uc2hlZW4pLG4uY2xlYXJjb2F0TWFwJiYodC5jbGVhcmNvYXRNYXAudmFsdWU9bi5jbGVhcmNvYXRNYXApLG4uY2xlYXJjb2F0Um91Z2huZXNzTWFwJiYodC5jbGVhcmNvYXRSb3VnaG5lc3NNYXAudmFsdWU9bi5jbGVhcmNvYXRSb3VnaG5lc3NNYXApLG4uY2xlYXJjb2F0Tm9ybWFsTWFwJiYodC5jbGVhcmNvYXROb3JtYWxTY2FsZS52YWx1ZS5jb3B5KG4uY2xlYXJjb2F0Tm9ybWFsU2NhbGUpLHQuY2xlYXJjb2F0Tm9ybWFsTWFwLnZhbHVlPW4uY2xlYXJjb2F0Tm9ybWFsTWFwLDE9PT1uLnNpZGUmJnQuY2xlYXJjb2F0Tm9ybWFsU2NhbGUudmFsdWUubmVnYXRlKCkpLHQudHJhbnNtaXNzaW9uLnZhbHVlPW4udHJhbnNtaXNzaW9uLG4udHJhbnNtaXNzaW9uTWFwJiYodC50cmFuc21pc3Npb25NYXAudmFsdWU9bi50cmFuc21pc3Npb25NYXApfSkodCxhKTplKHQsYSkpOmEuaXNNZXNoTWF0Y2FwTWF0ZXJpYWw/KG4odCxhKSwoZnVuY3Rpb24gZCh0LG4pe24ubWF0Y2FwJiYodC5tYXRjYXAudmFsdWU9bi5tYXRjYXApLG4uYnVtcE1hcCYmKHQuYnVtcE1hcC52YWx1ZT1uLmJ1bXBNYXAsdC5idW1wU2NhbGUudmFsdWU9bi5idW1wU2NhbGUsMT09PW4uc2lkZSYmKHQuYnVtcFNjYWxlLnZhbHVlKj0tMSkpLG4ubm9ybWFsTWFwJiYodC5ub3JtYWxNYXAudmFsdWU9bi5ub3JtYWxNYXAsdC5ub3JtYWxTY2FsZS52YWx1ZS5jb3B5KG4ubm9ybWFsU2NhbGUpLDE9PT1uLnNpZGUmJnQubm9ybWFsU2NhbGUudmFsdWUubmVnYXRlKCkpLG4uZGlzcGxhY2VtZW50TWFwJiYodC5kaXNwbGFjZW1lbnRNYXAudmFsdWU9bi5kaXNwbGFjZW1lbnRNYXAsdC5kaXNwbGFjZW1lbnRTY2FsZS52YWx1ZT1uLmRpc3BsYWNlbWVudFNjYWxlLHQuZGlzcGxhY2VtZW50Qmlhcy52YWx1ZT1uLmRpc3BsYWNlbWVudEJpYXMpfSkodCxhKSk6YS5pc01lc2hEZXB0aE1hdGVyaWFsPyhuKHQsYSksKGZ1bmN0aW9uIGcodCxuKXtuLmRpc3BsYWNlbWVudE1hcCYmKHQuZGlzcGxhY2VtZW50TWFwLnZhbHVlPW4uZGlzcGxhY2VtZW50TWFwLHQuZGlzcGxhY2VtZW50U2NhbGUudmFsdWU9bi5kaXNwbGFjZW1lbnRTY2FsZSx0LmRpc3BsYWNlbWVudEJpYXMudmFsdWU9bi5kaXNwbGFjZW1lbnRCaWFzKX0pKHQsYSkpOmEuaXNNZXNoRGlzdGFuY2VNYXRlcmlhbD8obih0LGEpLChmdW5jdGlvbiBwKHQsbil7bi5kaXNwbGFjZW1lbnRNYXAmJih0LmRpc3BsYWNlbWVudE1hcC52YWx1ZT1uLmRpc3BsYWNlbWVudE1hcCx0LmRpc3BsYWNlbWVudFNjYWxlLnZhbHVlPW4uZGlzcGxhY2VtZW50U2NhbGUsdC5kaXNwbGFjZW1lbnRCaWFzLnZhbHVlPW4uZGlzcGxhY2VtZW50QmlhcyksdC5yZWZlcmVuY2VQb3NpdGlvbi52YWx1ZS5jb3B5KG4ucmVmZXJlbmNlUG9zaXRpb24pLHQubmVhckRpc3RhbmNlLnZhbHVlPW4ubmVhckRpc3RhbmNlLHQuZmFyRGlzdGFuY2UudmFsdWU9bi5mYXJEaXN0YW5jZX0pKHQsYSkpOmEuaXNNZXNoTm9ybWFsTWF0ZXJpYWw/KG4odCxhKSwoZnVuY3Rpb24gYih0LG4pe24uYnVtcE1hcCYmKHQuYnVtcE1hcC52YWx1ZT1uLmJ1bXBNYXAsdC5idW1wU2NhbGUudmFsdWU9bi5idW1wU2NhbGUsMT09PW4uc2lkZSYmKHQuYnVtcFNjYWxlLnZhbHVlKj0tMSkpLG4ubm9ybWFsTWFwJiYodC5ub3JtYWxNYXAudmFsdWU9bi5ub3JtYWxNYXAsdC5ub3JtYWxTY2FsZS52YWx1ZS5jb3B5KG4ubm9ybWFsU2NhbGUpLDE9PT1uLnNpZGUmJnQubm9ybWFsU2NhbGUudmFsdWUubmVnYXRlKCkpLG4uZGlzcGxhY2VtZW50TWFwJiYodC5kaXNwbGFjZW1lbnRNYXAudmFsdWU9bi5kaXNwbGFjZW1lbnRNYXAsdC5kaXNwbGFjZW1lbnRTY2FsZS52YWx1ZT1uLmRpc3BsYWNlbWVudFNjYWxlLHQuZGlzcGxhY2VtZW50Qmlhcy52YWx1ZT1uLmRpc3BsYWNlbWVudEJpYXMpfSkodCxhKSk6YS5pc0xpbmVCYXNpY01hdGVyaWFsPygoZnVuY3Rpb24gdSh0LG4pe3QuZGlmZnVzZS52YWx1ZS5jb3B5KG4uY29sb3IpLHQub3BhY2l0eS52YWx1ZT1uLm9wYWNpdHl9KSh0LGEpLGEuaXNMaW5lRGFzaGVkTWF0ZXJpYWwmJihmdW5jdGlvbiBmKHQsbil7dC5kYXNoU2l6ZS52YWx1ZT1uLmRhc2hTaXplLHQudG90YWxTaXplLnZhbHVlPW4uZGFzaFNpemUrbi5nYXBTaXplLHQuc2NhbGUudmFsdWU9bi5zY2FsZX0pKHQsYSkpOmEuaXNQb2ludHNNYXRlcmlhbD8oZnVuY3Rpb24gaCh0LG4sZSxhKXtsZXQgbzt0LmRpZmZ1c2UudmFsdWUuY29weShuLmNvbG9yKSx0Lm9wYWNpdHkudmFsdWU9bi5vcGFjaXR5LHQuc2l6ZS52YWx1ZT1uLnNpemUqZSx0LnNjYWxlLnZhbHVlPS41KmEsbi5tYXAmJih0Lm1hcC52YWx1ZT1uLm1hcCksbi5hbHBoYU1hcCYmKHQuYWxwaGFNYXAudmFsdWU9bi5hbHBoYU1hcCksbi5tYXA/bz1uLm1hcDpuLmFscGhhTWFwJiYobz1uLmFscGhhTWFwKSx2b2lkIDAhPT1vJiYoITA9PT1vLm1hdHJpeEF1dG9VcGRhdGUmJm8udXBkYXRlTWF0cml4KCksdC51dlRyYW5zZm9ybS52YWx1ZS5jb3B5KG8ubWF0cml4KSl9KSh0LGEscixpKTphLmlzU3ByaXRlTWF0ZXJpYWw/KGZ1bmN0aW9uIF8odCxuKXtsZXQgZTt0LmRpZmZ1c2UudmFsdWUuY29weShuLmNvbG9yKSx0Lm9wYWNpdHkudmFsdWU9bi5vcGFjaXR5LHQucm90YXRpb24udmFsdWU9bi5yb3RhdGlvbixuLm1hcCYmKHQubWFwLnZhbHVlPW4ubWFwKSxuLmFscGhhTWFwJiYodC5hbHBoYU1hcC52YWx1ZT1uLmFscGhhTWFwKSxuLm1hcD9lPW4ubWFwOm4uYWxwaGFNYXAmJihlPW4uYWxwaGFNYXApLHZvaWQgMCE9PWUmJighMD09PWUubWF0cml4QXV0b1VwZGF0ZSYmZS51cGRhdGVNYXRyaXgoKSx0LnV2VHJhbnNmb3JtLnZhbHVlLmNvcHkoZS5tYXRyaXgpKX0pKHQsYSk6YS5pc1NoYWRvd01hdGVyaWFsPyh0LmNvbG9yLnZhbHVlLmNvcHkoYS5jb2xvciksdC5vcGFjaXR5LnZhbHVlPWEub3BhY2l0eSk6YS5pc1NoYWRlck1hdGVyaWFsJiYoYS51bmlmb3Jtc05lZWRVcGRhdGU9ITEpfX19ZnVuY3Rpb24gTG90KHQpe2NvbnN0IG49dm9pZCAwIT09KHQ9dHx8e30pLmNhbnZhcz90LmNhbnZhczooZnVuY3Rpb24gZSgpe2NvbnN0IHQ9ZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKCJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hodG1sIiwiY2FudmFzIik7cmV0dXJuIHQuc3R5bGUuZGlzcGxheT0iYmxvY2siLHR9KSgpLGE9dm9pZCAwIT09dC5jb250ZXh0P3QuY29udGV4dDpudWxsLG89dm9pZCAwIT09dC5hbHBoYSYmdC5hbHBoYSxyPXZvaWQgMD09PXQuZGVwdGh8fHQuZGVwdGgsaT12b2lkIDA9PT10LnN0ZW5jaWx8fHQuc3RlbmNpbCxjPXZvaWQgMCE9PXQuYW50aWFsaWFzJiZ0LmFudGlhbGlhcyxzPXZvaWQgMD09PXQucHJlbXVsdGlwbGllZEFscGhhfHx0LnByZW11bHRpcGxpZWRBbHBoYSxsPXZvaWQgMCE9PXQucHJlc2VydmVEcmF3aW5nQnVmZmVyJiZ0LnByZXNlcnZlRHJhd2luZ0J1ZmZlcixtPXZvaWQgMCE9PXQucG93ZXJQcmVmZXJlbmNlP3QucG93ZXJQcmVmZXJlbmNlOiJkZWZhdWx0IixkPXZvaWQgMCE9PXQuZmFpbElmTWFqb3JQZXJmb3JtYW5jZUNhdmVhdCYmdC5mYWlsSWZNYWpvclBlcmZvcm1hbmNlQ2F2ZWF0O2xldCBnPW51bGwscD1udWxsO2NvbnN0IGI9W107dGhpcy5kb21FbGVtZW50PW4sdGhpcy5kZWJ1Zz17Y2hlY2tTaGFkZXJFcnJvcnM6ITB9LHRoaXMuYXV0b0NsZWFyPSEwLHRoaXMuYXV0b0NsZWFyQ29sb3I9ITAsdGhpcy5hdXRvQ2xlYXJEZXB0aD0hMCx0aGlzLmF1dG9DbGVhclN0ZW5jaWw9ITAsdGhpcy5zb3J0T2JqZWN0cz0hMCx0aGlzLmNsaXBwaW5nUGxhbmVzPVtdLHRoaXMubG9jYWxDbGlwcGluZ0VuYWJsZWQ9ITEsdGhpcy5nYW1tYUZhY3Rvcj0yLHRoaXMub3V0cHV0RW5jb2Rpbmc9STksdGhpcy5waHlzaWNhbGx5Q29ycmVjdExpZ2h0cz0hMSx0aGlzLnRvbmVNYXBwaW5nPTAsdGhpcy50b25lTWFwcGluZ0V4cG9zdXJlPTEsdGhpcy5tYXhNb3JwaFRhcmdldHM9OCx0aGlzLm1heE1vcnBoTm9ybWFscz00O2NvbnN0IHU9dGhpcztsZXQgZj0hMSxoPW51bGwsXz0wLEM9MCxNPW51bGwsTz1udWxsLFA9LTEseD1udWxsO2NvbnN0IHk9bmV3IFE5LGs9bmV3IFE5O2xldCB2PW51bGwsdz1uLndpZHRoLFM9bi5oZWlnaHQsRT0xLEE9bnVsbCx6PW51bGw7Y29uc3QgUj1uZXcgUTkoMCwwLHcsUyksVD1uZXcgUTkoMCwwLHcsUyk7bGV0IEQ9ITE7Y29uc3QgST1uZXcgemV0O2xldCBOPSExLEY9ITE7Y29uc3QgTD1uZXcgU3R0LEg9bmV3IHR0dCxCPXtiYWNrZ3JvdW5kOm51bGwsZm9nOm51bGwsZW52aXJvbm1lbnQ6bnVsbCxvdmVycmlkZU1hdGVyaWFsOm51bGwsaXNTY2VuZTohMH07ZnVuY3Rpb24gVigpe3JldHVybiBudWxsPT09TT9FOjF9bGV0IGosVSxXLEcsWSxxLFosWCxKLFEsSywkLHR0LG50LGV0LGF0LG90LHJ0LGl0LGN0LHN0LGx0PWE7ZnVuY3Rpb24gbXQodCxlKXtmb3IobGV0IGE9MDthPHQubGVuZ3RoO2ErKyl7Y29uc3Qgbz1uLmdldENvbnRleHQodFthXSxlKTtpZihudWxsIT09bylyZXR1cm4gb31yZXR1cm4gbnVsbH10cnl7Y29uc3QgdD17YWxwaGE6byxkZXB0aDpyLHN0ZW5jaWw6aSxhbnRpYWxpYXM6YyxwcmVtdWx0aXBsaWVkQWxwaGE6cyxwcmVzZXJ2ZURyYXdpbmdCdWZmZXI6bCxwb3dlclByZWZlcmVuY2U6bSxmYWlsSWZNYWpvclBlcmZvcm1hbmNlQ2F2ZWF0OmR9O2lmKG4uYWRkRXZlbnRMaXN0ZW5lcigid2ViZ2xjb250ZXh0bG9zdCIsYnQsITEpLG4uYWRkRXZlbnRMaXN0ZW5lcigid2ViZ2xjb250ZXh0cmVzdG9yZWQiLHV0LCExKSxudWxsPT09bHQpe2NvbnN0IG49WyJ3ZWJnbDIiLCJ3ZWJnbCIsImV4cGVyaW1lbnRhbC13ZWJnbCJdO2lmKCEwPT09dS5pc1dlYkdMMVJlbmRlcmVyJiZuLnNoaWZ0KCksbHQ9bXQobix0KSxudWxsPT09bHQpdGhyb3cgbXQobik/bmV3IEVycm9yKCJFcnJvciBjcmVhdGluZyBXZWJHTCBjb250ZXh0IHdpdGggeW91ciBzZWxlY3RlZCBhdHRyaWJ1dGVzLiIpOm5ldyBFcnJvcigiRXJyb3IgY3JlYXRpbmcgV2ViR0wgY29udGV4dC4iKX12b2lkIDA9PT1sdC5nZXRTaGFkZXJQcmVjaXNpb25Gb3JtYXQmJihsdC5nZXRTaGFkZXJQcmVjaXNpb25Gb3JtYXQ9ZnVuY3Rpb24oKXtyZXR1cm57cmFuZ2VNaW46MSxyYW5nZU1heDoxLHByZWNpc2lvbjoxfX0pfWNhdGNoKHQpe3Rocm93IGNvbnNvbGUuZXJyb3IoIlRIUkVFLldlYkdMUmVuZGVyZXI6ICIrdC5tZXNzYWdlKSx0fWZ1bmN0aW9uIGR0KCl7aj1uZXcgV2V0KGx0KSxVPW5ldyBWZXQobHQsaix0KSxqLmluaXQoVSksY3Q9bmV3IFJvdChsdCxqLFUpLFc9bmV3IEFvdChsdCxqLFUpLFcuc2Npc3NvcihrLmNvcHkoVCkubXVsdGlwbHlTY2FsYXIoRSkuZmxvb3IoKSksVy52aWV3cG9ydCh5LmNvcHkoUikubXVsdGlwbHlTY2FsYXIoRSkuZmxvb3IoKSksRz1uZXcgcWV0KGx0KSxZPW5ldyBmb3QscT1uZXcgem90KGx0LGosVyxZLFUsY3QsRyksWj1uZXcgVWV0KHUpLFg9bmV3IFRldChsdCxVKSxzdD1uZXcgSGV0KGx0LGosWCxVKSxKPW5ldyBHZXQobHQsWCxHLHN0KSxRPW5ldyBRZXQobHQsSixYLEcpLG90PW5ldyBKZXQobHQpLGV0PW5ldyBqZXQoWSksSz1uZXcgdW90KHUsWixqLFUsc3QsZXQpLCQ9bmV3IEZvdChZKSx0dD1uZXcgTW90KFkpLG50PW5ldyB2b3QoaixVKSxhdD1uZXcgTGV0KHUsWixXLFEscykscnQ9bmV3IEJldChsdCxqLEcsVSksaXQ9bmV3IFlldChsdCxqLEcsVSksRy5wcm9ncmFtcz1LLnByb2dyYW1zLHUuY2FwYWJpbGl0aWVzPVUsdS5leHRlbnNpb25zPWosdS5wcm9wZXJ0aWVzPVksdS5yZW5kZXJMaXN0cz10dCx1LnN0YXRlPVcsdS5pbmZvPUd9ZHQoKTtjb25zdCBndD1uZXcgTm90KHUsbHQpO3RoaXMueHI9Z3Q7Y29uc3QgcHQ9bmV3IEVvdCh1LFEsVS5tYXhUZXh0dXJlU2l6ZSk7ZnVuY3Rpb24gYnQodCl7dC5wcmV2ZW50RGVmYXVsdCgpLGNvbnNvbGUubG9nKCJUSFJFRS5XZWJHTFJlbmRlcmVyOiBDb250ZXh0IExvc3QuIiksZj0hMH1mdW5jdGlvbiB1dCgpe2NvbnNvbGUubG9nKCJUSFJFRS5XZWJHTFJlbmRlcmVyOiBDb250ZXh0IFJlc3RvcmVkLiIpLGY9ITEsZHQoKX1mdW5jdGlvbiBmdCh0KXtjb25zdCBuPXQudGFyZ2V0O24ucmVtb3ZlRXZlbnRMaXN0ZW5lcigiZGlzcG9zZSIsZnQpLChmdW5jdGlvbiBlKHQpe2h0KHQpLFkucmVtb3ZlKHQpfSkobil9ZnVuY3Rpb24gaHQodCl7Y29uc3Qgbj1ZLmdldCh0KS5wcm9ncmFtO3ZvaWQgMCE9PW4mJksucmVsZWFzZVByb2dyYW0obil9dGhpcy5zaGFkb3dNYXA9cHQsdGhpcy5nZXRDb250ZXh0PWZ1bmN0aW9uKCl7cmV0dXJuIGx0fSx0aGlzLmdldENvbnRleHRBdHRyaWJ1dGVzPWZ1bmN0aW9uKCl7cmV0dXJuIGx0LmdldENvbnRleHRBdHRyaWJ1dGVzKCl9LHRoaXMuZm9yY2VDb250ZXh0TG9zcz1mdW5jdGlvbigpe2NvbnN0IHQ9ai5nZXQoIldFQkdMX2xvc2VfY29udGV4dCIpO3QmJnQubG9zZUNvbnRleHQoKX0sdGhpcy5mb3JjZUNvbnRleHRSZXN0b3JlPWZ1bmN0aW9uKCl7Y29uc3QgdD1qLmdldCgiV0VCR0xfbG9zZV9jb250ZXh0Iik7dCYmdC5yZXN0b3JlQ29udGV4dCgpfSx0aGlzLmdldFBpeGVsUmF0aW89ZnVuY3Rpb24oKXtyZXR1cm4gRX0sdGhpcy5zZXRQaXhlbFJhdGlvPWZ1bmN0aW9uKHQpe3ZvaWQgMCE9PXQmJihFPXQsdGhpcy5zZXRTaXplKHcsUywhMSkpfSx0aGlzLmdldFNpemU9ZnVuY3Rpb24odCl7cmV0dXJuIHZvaWQgMD09PXQmJihjb25zb2xlLndhcm4oIldlYkdMUmVuZGVyZXI6IC5nZXRzaXplKCkgbm93IHJlcXVpcmVzIGEgVmVjdG9yMiBhcyBhbiBhcmd1bWVudCIpLHQ9bmV3IFc5KSx0LnNldCh3LFMpfSx0aGlzLnNldFNpemU9ZnVuY3Rpb24odCxlLGEpe2d0LmlzUHJlc2VudGluZz9jb25zb2xlLndhcm4oIlRIUkVFLldlYkdMUmVuZGVyZXI6IENhbid0IGNoYW5nZSBzaXplIHdoaWxlIFZSIGRldmljZSBpcyBwcmVzZW50aW5nLiIpOih3PXQsUz1lLG4ud2lkdGg9TWF0aC5mbG9vcih0KkUpLG4uaGVpZ2h0PU1hdGguZmxvb3IoZSpFKSwhMSE9PWEmJihuLnN0eWxlLndpZHRoPXQrInB4IixuLnN0eWxlLmhlaWdodD1lKyJweCIpLHRoaXMuc2V0Vmlld3BvcnQoMCwwLHQsZSkpfSx0aGlzLmdldERyYXdpbmdCdWZmZXJTaXplPWZ1bmN0aW9uKHQpe3JldHVybiB2b2lkIDA9PT10JiYoY29uc29sZS53YXJuKCJXZWJHTFJlbmRlcmVyOiAuZ2V0ZHJhd2luZ0J1ZmZlclNpemUoKSBub3cgcmVxdWlyZXMgYSBWZWN0b3IyIGFzIGFuIGFyZ3VtZW50IiksdD1uZXcgVzkpLHQuc2V0KHcqRSxTKkUpLmZsb29yKCl9LHRoaXMuc2V0RHJhd2luZ0J1ZmZlclNpemU9ZnVuY3Rpb24odCxlLGEpe3c9dCxTPWUsRT1hLG4ud2lkdGg9TWF0aC5mbG9vcih0KmEpLG4uaGVpZ2h0PU1hdGguZmxvb3IoZSphKSx0aGlzLnNldFZpZXdwb3J0KDAsMCx0LGUpfSx0aGlzLmdldEN1cnJlbnRWaWV3cG9ydD1mdW5jdGlvbih0KXtyZXR1cm4gdm9pZCAwPT09dCYmKGNvbnNvbGUud2FybigiV2ViR0xSZW5kZXJlcjogLmdldEN1cnJlbnRWaWV3cG9ydCgpIG5vdyByZXF1aXJlcyBhIFZlY3RvcjQgYXMgYW4gYXJndW1lbnQiKSx0PW5ldyBROSksdC5jb3B5KHkpfSx0aGlzLmdldFZpZXdwb3J0PWZ1bmN0aW9uKHQpe3JldHVybiB0LmNvcHkoUil9LHRoaXMuc2V0Vmlld3BvcnQ9ZnVuY3Rpb24odCxuLGUsYSl7dC5pc1ZlY3RvcjQ/Ui5zZXQodC54LHQueSx0LnosdC53KTpSLnNldCh0LG4sZSxhKSxXLnZpZXdwb3J0KHkuY29weShSKS5tdWx0aXBseVNjYWxhcihFKS5mbG9vcigpKX0sdGhpcy5nZXRTY2lzc29yPWZ1bmN0aW9uKHQpe3JldHVybiB0LmNvcHkoVCl9LHRoaXMuc2V0U2Npc3Nvcj1mdW5jdGlvbih0LG4sZSxhKXt0LmlzVmVjdG9yND9ULnNldCh0LngsdC55LHQueix0LncpOlQuc2V0KHQsbixlLGEpLFcuc2Npc3NvcihrLmNvcHkoVCkubXVsdGlwbHlTY2FsYXIoRSkuZmxvb3IoKSl9LHRoaXMuZ2V0U2Npc3NvclRlc3Q9ZnVuY3Rpb24oKXtyZXR1cm4gRH0sdGhpcy5zZXRTY2lzc29yVGVzdD1mdW5jdGlvbih0KXtXLnNldFNjaXNzb3JUZXN0KEQ9dCl9LHRoaXMuc2V0T3BhcXVlU29ydD1mdW5jdGlvbih0KXtBPXR9LHRoaXMuc2V0VHJhbnNwYXJlbnRTb3J0PWZ1bmN0aW9uKHQpe3o9dH0sdGhpcy5nZXRDbGVhckNvbG9yPWZ1bmN0aW9uKHQpe3JldHVybiB2b2lkIDA9PT10JiYoY29uc29sZS53YXJuKCJXZWJHTFJlbmRlcmVyOiAuZ2V0Q2xlYXJDb2xvcigpIG5vdyByZXF1aXJlcyBhIENvbG9yIGFzIGFuIGFyZ3VtZW50IiksdD1uZXcgT250KSx0LmNvcHkoYXQuZ2V0Q2xlYXJDb2xvcigpKX0sdGhpcy5zZXRDbGVhckNvbG9yPWZ1bmN0aW9uKCl7YXQuc2V0Q2xlYXJDb2xvci5hcHBseShhdCxhcmd1bWVudHMpfSx0aGlzLmdldENsZWFyQWxwaGE9ZnVuY3Rpb24oKXtyZXR1cm4gYXQuZ2V0Q2xlYXJBbHBoYSgpfSx0aGlzLnNldENsZWFyQWxwaGE9ZnVuY3Rpb24oKXthdC5zZXRDbGVhckFscGhhLmFwcGx5KGF0LGFyZ3VtZW50cyl9LHRoaXMuY2xlYXI9ZnVuY3Rpb24odCxuLGUpe2xldCBhPTA7KHZvaWQgMD09PXR8fHQpJiYoYXw9MTYzODQpLCh2b2lkIDA9PT1ufHxuKSYmKGF8PTI1NiksKHZvaWQgMD09PWV8fGUpJiYoYXw9MTAyNCksbHQuY2xlYXIoYSl9LHRoaXMuY2xlYXJDb2xvcj1mdW5jdGlvbigpe3RoaXMuY2xlYXIoITAsITEsITEpfSx0aGlzLmNsZWFyRGVwdGg9ZnVuY3Rpb24oKXt0aGlzLmNsZWFyKCExLCEwLCExKX0sdGhpcy5jbGVhclN0ZW5jaWw9ZnVuY3Rpb24oKXt0aGlzLmNsZWFyKCExLCExLCEwKX0sdGhpcy5kaXNwb3NlPWZ1bmN0aW9uKCl7bi5yZW1vdmVFdmVudExpc3RlbmVyKCJ3ZWJnbGNvbnRleHRsb3N0IixidCwhMSksbi5yZW1vdmVFdmVudExpc3RlbmVyKCJ3ZWJnbGNvbnRleHRyZXN0b3JlZCIsdXQsITEpLHR0LmRpc3Bvc2UoKSxudC5kaXNwb3NlKCksWS5kaXNwb3NlKCksWi5kaXNwb3NlKCksUS5kaXNwb3NlKCksc3QuZGlzcG9zZSgpLGd0LmRpc3Bvc2UoKSxDdC5zdG9wKCl9LHRoaXMucmVuZGVyQnVmZmVySW1tZWRpYXRlPWZ1bmN0aW9uKHQsbil7c3QuaW5pdEF0dHJpYnV0ZXMoKTtjb25zdCBlPVkuZ2V0KHQpO3QuaGFzUG9zaXRpb25zJiYhZS5wb3NpdGlvbiYmKGUucG9zaXRpb249bHQuY3JlYXRlQnVmZmVyKCkpLHQuaGFzTm9ybWFscyYmIWUubm9ybWFsJiYoZS5ub3JtYWw9bHQuY3JlYXRlQnVmZmVyKCkpLHQuaGFzVXZzJiYhZS51diYmKGUudXY9bHQuY3JlYXRlQnVmZmVyKCkpLHQuaGFzQ29sb3JzJiYhZS5jb2xvciYmKGUuY29sb3I9bHQuY3JlYXRlQnVmZmVyKCkpO2NvbnN0IGE9bi5nZXRBdHRyaWJ1dGVzKCk7dC5oYXNQb3NpdGlvbnMmJihsdC5iaW5kQnVmZmVyKDM0OTYyLGUucG9zaXRpb24pLGx0LmJ1ZmZlckRhdGEoMzQ5NjIsdC5wb3NpdGlvbkFycmF5LDM1MDQ4KSxzdC5lbmFibGVBdHRyaWJ1dGUoYS5wb3NpdGlvbiksbHQudmVydGV4QXR0cmliUG9pbnRlcihhLnBvc2l0aW9uLDMsNTEyNiwhMSwwLDApKSx0Lmhhc05vcm1hbHMmJihsdC5iaW5kQnVmZmVyKDM0OTYyLGUubm9ybWFsKSxsdC5idWZmZXJEYXRhKDM0OTYyLHQubm9ybWFsQXJyYXksMzUwNDgpLHN0LmVuYWJsZUF0dHJpYnV0ZShhLm5vcm1hbCksbHQudmVydGV4QXR0cmliUG9pbnRlcihhLm5vcm1hbCwzLDUxMjYsITEsMCwwKSksdC5oYXNVdnMmJihsdC5iaW5kQnVmZmVyKDM0OTYyLGUudXYpLGx0LmJ1ZmZlckRhdGEoMzQ5NjIsdC51dkFycmF5LDM1MDQ4KSxzdC5lbmFibGVBdHRyaWJ1dGUoYS51diksbHQudmVydGV4QXR0cmliUG9pbnRlcihhLnV2LDIsNTEyNiwhMSwwLDApKSx0Lmhhc0NvbG9ycyYmKGx0LmJpbmRCdWZmZXIoMzQ5NjIsZS5jb2xvciksbHQuYnVmZmVyRGF0YSgzNDk2Mix0LmNvbG9yQXJyYXksMzUwNDgpLHN0LmVuYWJsZUF0dHJpYnV0ZShhLmNvbG9yKSxsdC52ZXJ0ZXhBdHRyaWJQb2ludGVyKGEuY29sb3IsMyw1MTI2LCExLDAsMCkpLHN0LmRpc2FibGVVbnVzZWRBdHRyaWJ1dGVzKCksbHQuZHJhd0FycmF5cyg0LDAsdC5jb3VudCksdC5jb3VudD0wfSx0aGlzLnJlbmRlckJ1ZmZlckRpcmVjdD1mdW5jdGlvbih0LG4sZSxhLG8scil7bnVsbD09PW4mJihuPUIpO2NvbnN0IGk9by5pc01lc2gmJm8ubWF0cml4V29ybGQuZGV0ZXJtaW5hbnQoKTwwLGM9eXQodCxuLGEsbyk7Vy5zZXRNYXRlcmlhbChhLGkpO2xldCBzPWUuaW5kZXg7Y29uc3QgbD1lLmF0dHJpYnV0ZXMucG9zaXRpb247aWYobnVsbD09PXMpe2lmKHZvaWQgMD09PWx8fDA9PT1sLmNvdW50KXJldHVybn1lbHNlIGlmKDA9PT1zLmNvdW50KXJldHVybjtsZXQgbSxkPTE7ITA9PT1hLndpcmVmcmFtZSYmKHM9Si5nZXRXaXJlZnJhbWVBdHRyaWJ1dGUoZSksZD0yKSwoYS5tb3JwaFRhcmdldHN8fGEubW9ycGhOb3JtYWxzKSYmb3QudXBkYXRlKG8sZSxhLGMpLHN0LnNldHVwKG8sYSxjLGUscyk7bGV0IGc9cnQ7bnVsbCE9PXMmJihtPVguZ2V0KHMpLGc9aXQsZy5zZXRJbmRleChtKSk7Y29uc3QgcD1udWxsIT09cz9zLmNvdW50OmwuY291bnQsYj1lLmRyYXdSYW5nZS5zdGFydCpkLHU9ZS5kcmF3UmFuZ2UuY291bnQqZCxmPW51bGwhPT1yP3Iuc3RhcnQqZDowLGg9bnVsbCE9PXI/ci5jb3VudCpkOjEvMCxfPU1hdGgubWF4KGIsZiksQz1NYXRoLm1pbihwLGIrdSxmK2gpLTEsTT1NYXRoLm1heCgwLEMtXysxKTtpZigwIT09TSl7aWYoby5pc01lc2gpITA9PT1hLndpcmVmcmFtZT8oVy5zZXRMaW5lV2lkdGgoYS53aXJlZnJhbWVMaW5ld2lkdGgqVigpKSxnLnNldE1vZGUoMSkpOmcuc2V0TW9kZSg0KTtlbHNlIGlmKG8uaXNMaW5lKXtsZXQgdD1hLmxpbmV3aWR0aDt2b2lkIDA9PT10JiYodD0xKSxXLnNldExpbmVXaWR0aCh0KlYoKSksZy5zZXRNb2RlKG8uaXNMaW5lU2VnbWVudHM/MTpvLmlzTGluZUxvb3A/MjozKX1lbHNlIG8uaXNQb2ludHM/Zy5zZXRNb2RlKDApOm8uaXNTcHJpdGUmJmcuc2V0TW9kZSg0KTtpZihvLmlzSW5zdGFuY2VkTWVzaClnLnJlbmRlckluc3RhbmNlcyhfLE0sby5jb3VudCk7ZWxzZSBpZihlLmlzSW5zdGFuY2VkQnVmZmVyR2VvbWV0cnkpe2NvbnN0IHQ9TWF0aC5taW4oZS5pbnN0YW5jZUNvdW50LGUuX21heEluc3RhbmNlQ291bnQpO2cucmVuZGVySW5zdGFuY2VzKF8sTSx0KX1lbHNlIGcucmVuZGVyKF8sTSl9fSx0aGlzLmNvbXBpbGU9ZnVuY3Rpb24odCxuKXtwPW50LmdldCh0KSxwLmluaXQoKSx0LnRyYXZlcnNlVmlzaWJsZSgoZnVuY3Rpb24odCl7dC5pc0xpZ2h0JiZ0LmxheWVycy50ZXN0KG4ubGF5ZXJzKSYmKHAucHVzaExpZ2h0KHQpLHQuY2FzdFNoYWRvdyYmcC5wdXNoU2hhZG93KHQpKX0pKSxwLnNldHVwTGlnaHRzKCk7Y29uc3QgZT1uZXcgV2Vha01hcDt0LnRyYXZlcnNlKChmdW5jdGlvbihuKXtjb25zdCBhPW4ubWF0ZXJpYWw7aWYoYSlpZihBcnJheS5pc0FycmF5KGEpKWZvcihsZXQgbz0wO288YS5sZW5ndGg7bysrKXtjb25zdCByPWFbb107ITE9PT1lLmhhcyhyKSYmKHh0KHIsdCxuKSxlLnNldChyKSl9ZWxzZSExPT09ZS5oYXMoYSkmJih4dChhLHQsbiksZS5zZXQoYSkpfSkpfTtsZXQgX3Q9bnVsbDtjb25zdCBDdD1uZXcgUmV0O2Z1bmN0aW9uIE10KHQsbixlLGEpe2lmKCExPT09dC52aXNpYmxlKXJldHVybjtpZih0LmxheWVycy50ZXN0KG4ubGF5ZXJzKSlpZih0LmlzR3JvdXApZT10LnJlbmRlck9yZGVyO2Vsc2UgaWYodC5pc0xPRCkhMD09PXQuYXV0b1VwZGF0ZSYmdC51cGRhdGUobik7ZWxzZSBpZih0LmlzTGlnaHQpcC5wdXNoTGlnaHQodCksdC5jYXN0U2hhZG93JiZwLnB1c2hTaGFkb3codCk7ZWxzZSBpZih0LmlzU3ByaXRlKXtpZighdC5mcnVzdHVtQ3VsbGVkfHxJLmludGVyc2VjdHNTcHJpdGUodCkpe2EmJkguc2V0RnJvbU1hdHJpeFBvc2l0aW9uKHQubWF0cml4V29ybGQpLmFwcGx5TWF0cml4NChMKTtjb25zdCBuPVEudXBkYXRlKHQpLG89dC5tYXRlcmlhbDtvLnZpc2libGUmJmcucHVzaCh0LG4sbyxlLEgueixudWxsKX19ZWxzZSBpZih0LmlzSW1tZWRpYXRlUmVuZGVyT2JqZWN0KWEmJkguc2V0RnJvbU1hdHJpeFBvc2l0aW9uKHQubWF0cml4V29ybGQpLmFwcGx5TWF0cml4NChMKSxnLnB1c2godCxudWxsLHQubWF0ZXJpYWwsZSxILnosbnVsbCk7ZWxzZSBpZigodC5pc01lc2h8fHQuaXNMaW5lfHx0LmlzUG9pbnRzKSYmKHQuaXNTa2lubmVkTWVzaCYmdC5za2VsZXRvbi5mcmFtZSE9PUcucmVuZGVyLmZyYW1lJiYodC5za2VsZXRvbi51cGRhdGUoKSx0LnNrZWxldG9uLmZyYW1lPUcucmVuZGVyLmZyYW1lKSwhdC5mcnVzdHVtQ3VsbGVkfHxJLmludGVyc2VjdHNPYmplY3QodCkpKXthJiZILnNldEZyb21NYXRyaXhQb3NpdGlvbih0Lm1hdHJpeFdvcmxkKS5hcHBseU1hdHJpeDQoTCk7Y29uc3Qgbj1RLnVwZGF0ZSh0KSxvPXQubWF0ZXJpYWw7aWYoQXJyYXkuaXNBcnJheShvKSl7Y29uc3QgYT1uLmdyb3Vwcztmb3IobGV0IHI9MCxpPWEubGVuZ3RoO3I8aTtyKyspe2NvbnN0IGk9YVtyXSxjPW9baS5tYXRlcmlhbEluZGV4XTtjJiZjLnZpc2libGUmJmcucHVzaCh0LG4sYyxlLEgueixpKX19ZWxzZSBvLnZpc2libGUmJmcucHVzaCh0LG4sbyxlLEgueixudWxsKX1jb25zdCBvPXQuY2hpbGRyZW47Zm9yKGxldCB0PTAscj1vLmxlbmd0aDt0PHI7dCsrKU10KG9bdF0sbixlLGEpfWZ1bmN0aW9uIE90KHQsbixlKXtjb25zdCBhPSEwPT09bi5pc1NjZW5lP24ub3ZlcnJpZGVNYXRlcmlhbDpudWxsO2ZvcihsZXQgbz0wLHI9dC5sZW5ndGg7bzxyO28rKyl7Y29uc3Qgcj10W29dLGk9ci5vYmplY3QsYz1yLmdlb21ldHJ5LHM9bnVsbD09PWE/ci5tYXRlcmlhbDphLGw9ci5ncm91cDtpZihlLmlzQXJyYXlDYW1lcmEpe2NvbnN0IHQ9ZS5jYW1lcmFzO2ZvcihsZXQgZT0wLGE9dC5sZW5ndGg7ZTxhO2UrKyl7Y29uc3QgYT10W2VdO2kubGF5ZXJzLnRlc3QoYS5sYXllcnMpJiYoVy52aWV3cG9ydCh5LmNvcHkoYS52aWV3cG9ydCkpLHAuc2V0dXBMaWdodHNWaWV3KGEpLFB0KGksbixhLGMscyxsKSl9fWVsc2UgUHQoaSxuLGUsYyxzLGwpfX1mdW5jdGlvbiBQdCh0LG4sZSxhLG8scil7aWYodC5vbkJlZm9yZVJlbmRlcih1LG4sZSxhLG8sciksdC5tb2RlbFZpZXdNYXRyaXgubXVsdGlwbHlNYXRyaWNlcyhlLm1hdHJpeFdvcmxkSW52ZXJzZSx0Lm1hdHJpeFdvcmxkKSx0Lm5vcm1hbE1hdHJpeC5nZXROb3JtYWxNYXRyaXgodC5tb2RlbFZpZXdNYXRyaXgpLHQuaXNJbW1lZGlhdGVSZW5kZXJPYmplY3Qpe2NvbnN0IGE9eXQoZSxuLG8sdCk7Vy5zZXRNYXRlcmlhbChvKSxzdC5yZXNldCgpLChmdW5jdGlvbiBpKHQsbil7dC5yZW5kZXIoKGZ1bmN0aW9uKHQpe3UucmVuZGVyQnVmZmVySW1tZWRpYXRlKHQsbil9KSl9KSh0LGEpfWVsc2UgdS5yZW5kZXJCdWZmZXJEaXJlY3QoZSxuLGEsbyx0LHIpO3Qub25BZnRlclJlbmRlcih1LG4sZSxhLG8scil9ZnVuY3Rpb24geHQodCxuLGUpeyEwIT09bi5pc1NjZW5lJiYobj1CKTtjb25zdCBhPVkuZ2V0KHQpLG89cC5zdGF0ZS5saWdodHMscj1vLnN0YXRlLnZlcnNpb24saT1LLmdldFBhcmFtZXRlcnModCxvLnN0YXRlLHAuc3RhdGUuc2hhZG93c0FycmF5LG4sZSksYz1LLmdldFByb2dyYW1DYWNoZUtleShpKTtsZXQgcz1hLnByb2dyYW0sbD0hMDtpZihhLmVudmlyb25tZW50PXQuaXNNZXNoU3RhbmRhcmRNYXRlcmlhbD9uLmVudmlyb25tZW50Om51bGwsYS5mb2c9bi5mb2csYS5lbnZNYXA9Wi5nZXQodC5lbnZNYXB8fGEuZW52aXJvbm1lbnQpLHZvaWQgMD09PXMpdC5hZGRFdmVudExpc3RlbmVyKCJkaXNwb3NlIixmdCk7ZWxzZSBpZihzLmNhY2hlS2V5IT09YylodCh0KTtlbHNlIGlmKGEubGlnaHRzU3RhdGVWZXJzaW9uIT09cilsPSExO2Vsc2V7aWYodm9pZCAwIT09aS5zaGFkZXJJRClyZXR1cm47bD0hMX1sJiYoaS51bmlmb3Jtcz1LLmdldFVuaWZvcm1zKHQpLHQub25CZWZvcmVDb21waWxlKGksdSkscz1LLmFjcXVpcmVQcm9ncmFtKGksYyksYS5wcm9ncmFtPXMsYS51bmlmb3Jtcz1pLnVuaWZvcm1zLGEub3V0cHV0RW5jb2Rpbmc9aS5vdXRwdXRFbmNvZGluZyk7Y29uc3QgbT1hLnVuaWZvcm1zOyh0LmlzU2hhZGVyTWF0ZXJpYWx8fHQuaXNSYXdTaGFkZXJNYXRlcmlhbCkmJiEwIT09dC5jbGlwcGluZ3x8KGEubnVtQ2xpcHBpbmdQbGFuZXM9ZXQubnVtUGxhbmVzLGEubnVtSW50ZXJzZWN0aW9uPWV0Lm51bUludGVyc2VjdGlvbixtLmNsaXBwaW5nUGxhbmVzPWV0LnVuaWZvcm0pLGEubmVlZHNMaWdodHM9KGZ1bmN0aW9uIGQodCl7cmV0dXJuIHQuaXNNZXNoTGFtYmVydE1hdGVyaWFsfHx0LmlzTWVzaFRvb25NYXRlcmlhbHx8dC5pc01lc2hQaG9uZ01hdGVyaWFsfHx0LmlzTWVzaFN0YW5kYXJkTWF0ZXJpYWx8fHQuaXNTaGFkb3dNYXRlcmlhbHx8dC5pc1NoYWRlck1hdGVyaWFsJiYhMD09PXQubGlnaHRzfSkodCksYS5saWdodHNTdGF0ZVZlcnNpb249cixhLm5lZWRzTGlnaHRzJiYobS5hbWJpZW50TGlnaHRDb2xvci52YWx1ZT1vLnN0YXRlLmFtYmllbnQsbS5saWdodFByb2JlLnZhbHVlPW8uc3RhdGUucHJvYmUsbS5kaXJlY3Rpb25hbExpZ2h0cy52YWx1ZT1vLnN0YXRlLmRpcmVjdGlvbmFsLG0uZGlyZWN0aW9uYWxMaWdodFNoYWRvd3MudmFsdWU9by5zdGF0ZS5kaXJlY3Rpb25hbFNoYWRvdyxtLnNwb3RMaWdodHMudmFsdWU9by5zdGF0ZS5zcG90LG0uc3BvdExpZ2h0U2hhZG93cy52YWx1ZT1vLnN0YXRlLnNwb3RTaGFkb3csbS5yZWN0QXJlYUxpZ2h0cy52YWx1ZT1vLnN0YXRlLnJlY3RBcmVhLG0ubHRjXzEudmFsdWU9by5zdGF0ZS5yZWN0QXJlYUxUQzEsbS5sdGNfMi52YWx1ZT1vLnN0YXRlLnJlY3RBcmVhTFRDMixtLnBvaW50TGlnaHRzLnZhbHVlPW8uc3RhdGUucG9pbnQsbS5wb2ludExpZ2h0U2hhZG93cy52YWx1ZT1vLnN0YXRlLnBvaW50U2hhZG93LG0uaGVtaXNwaGVyZUxpZ2h0cy52YWx1ZT1vLnN0YXRlLmhlbWksbS5kaXJlY3Rpb25hbFNoYWRvd01hcC52YWx1ZT1vLnN0YXRlLmRpcmVjdGlvbmFsU2hhZG93TWFwLG0uZGlyZWN0aW9uYWxTaGFkb3dNYXRyaXgudmFsdWU9by5zdGF0ZS5kaXJlY3Rpb25hbFNoYWRvd01hdHJpeCxtLnNwb3RTaGFkb3dNYXAudmFsdWU9by5zdGF0ZS5zcG90U2hhZG93TWFwLG0uc3BvdFNoYWRvd01hdHJpeC52YWx1ZT1vLnN0YXRlLnNwb3RTaGFkb3dNYXRyaXgsbS5wb2ludFNoYWRvd01hcC52YWx1ZT1vLnN0YXRlLnBvaW50U2hhZG93TWFwLG0ucG9pbnRTaGFkb3dNYXRyaXgudmFsdWU9by5zdGF0ZS5wb2ludFNoYWRvd01hdHJpeCk7Y29uc3QgZz1hLnByb2dyYW0uZ2V0VW5pZm9ybXMoKSxiPVphdC5zZXFXaXRoVmFsdWUoZy5zZXEsbSk7YS51bmlmb3Jtc0xpc3Q9Yn1mdW5jdGlvbiB5dCh0LG4sZSxhKXshMCE9PW4uaXNTY2VuZSYmKG49QikscS5yZXNldFRleHR1cmVVbml0cygpO2NvbnN0IG89bi5mb2cscj1lLmlzTWVzaFN0YW5kYXJkTWF0ZXJpYWw/bi5lbnZpcm9ubWVudDpudWxsLGk9bnVsbD09PU0/dS5vdXRwdXRFbmNvZGluZzpNLnRleHR1cmUuZW5jb2RpbmcsYz1aLmdldChlLmVudk1hcHx8cikscz1ZLmdldChlKSxsPXAuc3RhdGUubGlnaHRzOyEwIT09Tnx8ITAhPT1GJiZ0PT09eHx8ZXQuc2V0U3RhdGUoZSx0LHQ9PT14JiZlLmlkPT09UCksZS52ZXJzaW9uPT09cy5fX3ZlcnNpb24/ZS5mb2cmJnMuZm9nIT09b3x8cy5lbnZpcm9ubWVudCE9PXJ8fHMubmVlZHNMaWdodHMmJnMubGlnaHRzU3RhdGVWZXJzaW9uIT09bC5zdGF0ZS52ZXJzaW9uP3h0KGUsbixhKTp2b2lkIDA9PT1zLm51bUNsaXBwaW5nUGxhbmVzfHxzLm51bUNsaXBwaW5nUGxhbmVzPT09ZXQubnVtUGxhbmVzJiZzLm51bUludGVyc2VjdGlvbj09PWV0Lm51bUludGVyc2VjdGlvbj8ocy5vdXRwdXRFbmNvZGluZyE9PWl8fHMuZW52TWFwIT09YykmJnh0KGUsbixhKTp4dChlLG4sYSk6KHh0KGUsbixhKSxzLl9fdmVyc2lvbj1lLnZlcnNpb24pO2xldCBtPSExLGQ9ITEsZz0hMTtjb25zdCBiPXMucHJvZ3JhbSxmPWIuZ2V0VW5pZm9ybXMoKSxoPXMudW5pZm9ybXM7aWYoVy51c2VQcm9ncmFtKGIucHJvZ3JhbSkmJihtPSEwLGQ9ITAsZz0hMCksZS5pZCE9PVAmJihQPWUuaWQsZD0hMCksbXx8eCE9PXQpe2lmKGYuc2V0VmFsdWUobHQsInByb2plY3Rpb25NYXRyaXgiLHQucHJvamVjdGlvbk1hdHJpeCksVS5sb2dhcml0aG1pY0RlcHRoQnVmZmVyJiZmLnNldFZhbHVlKGx0LCJsb2dEZXB0aEJ1ZkZDIiwyLyhNYXRoLmxvZyh0LmZhcisxKS9NYXRoLkxOMikpLHghPT10JiYoeD10LGQ9ITAsZz0hMCksZS5pc1NoYWRlck1hdGVyaWFsfHxlLmlzTWVzaFBob25nTWF0ZXJpYWx8fGUuaXNNZXNoVG9vbk1hdGVyaWFsfHxlLmlzTWVzaFN0YW5kYXJkTWF0ZXJpYWx8fGUuZW52TWFwKXtjb25zdCBuPWYubWFwLmNhbWVyYVBvc2l0aW9uO3ZvaWQgMCE9PW4mJm4uc2V0VmFsdWUobHQsSC5zZXRGcm9tTWF0cml4UG9zaXRpb24odC5tYXRyaXhXb3JsZCkpfShlLmlzTWVzaFBob25nTWF0ZXJpYWx8fGUuaXNNZXNoVG9vbk1hdGVyaWFsfHxlLmlzTWVzaExhbWJlcnRNYXRlcmlhbHx8ZS5pc01lc2hCYXNpY01hdGVyaWFsfHxlLmlzTWVzaFN0YW5kYXJkTWF0ZXJpYWx8fGUuaXNTaGFkZXJNYXRlcmlhbCkmJmYuc2V0VmFsdWUobHQsImlzT3J0aG9ncmFwaGljIiwhMD09PXQuaXNPcnRob2dyYXBoaWNDYW1lcmEpLChlLmlzTWVzaFBob25nTWF0ZXJpYWx8fGUuaXNNZXNoVG9vbk1hdGVyaWFsfHxlLmlzTWVzaExhbWJlcnRNYXRlcmlhbHx8ZS5pc01lc2hCYXNpY01hdGVyaWFsfHxlLmlzTWVzaFN0YW5kYXJkTWF0ZXJpYWx8fGUuaXNTaGFkZXJNYXRlcmlhbHx8ZS5pc1NoYWRvd01hdGVyaWFsfHxlLnNraW5uaW5nKSYmZi5zZXRWYWx1ZShsdCwidmlld01hdHJpeCIsdC5tYXRyaXhXb3JsZEludmVyc2UpfWlmKGUuc2tpbm5pbmcpe2Yuc2V0T3B0aW9uYWwobHQsYSwiYmluZE1hdHJpeCIpLGYuc2V0T3B0aW9uYWwobHQsYSwiYmluZE1hdHJpeEludmVyc2UiKTtjb25zdCB0PWEuc2tlbGV0b247aWYodCl7Y29uc3Qgbj10LmJvbmVzO2lmKFUuZmxvYXRWZXJ0ZXhUZXh0dXJlcyl7aWYobnVsbD09PXQuYm9uZVRleHR1cmUpe2xldCBlPU1hdGguc3FydCg0Km4ubGVuZ3RoKTtlPVU5LmNlaWxQb3dlck9mVHdvKGUpLGU9TWF0aC5tYXgoZSw0KTtjb25zdCBhPW5ldyBGbG9hdDMyQXJyYXkoZSplKjQpO2Euc2V0KHQuYm9uZU1hdHJpY2VzKTtjb25zdCBvPW5ldyB3ZXQoYSxlLGUsdjksUDkpO3QuYm9uZU1hdHJpY2VzPWEsdC5ib25lVGV4dHVyZT1vLHQuYm9uZVRleHR1cmVTaXplPWV9Zi5zZXRWYWx1ZShsdCwiYm9uZVRleHR1cmUiLHQuYm9uZVRleHR1cmUscSksZi5zZXRWYWx1ZShsdCwiYm9uZVRleHR1cmVTaXplIix0LmJvbmVUZXh0dXJlU2l6ZSl9ZWxzZSBmLnNldE9wdGlvbmFsKGx0LHQsImJvbmVNYXRyaWNlcyIpfX1yZXR1cm4oZHx8cy5yZWNlaXZlU2hhZG93IT09YS5yZWNlaXZlU2hhZG93KSYmKHMucmVjZWl2ZVNoYWRvdz1hLnJlY2VpdmVTaGFkb3csZi5zZXRWYWx1ZShsdCwicmVjZWl2ZVNoYWRvdyIsYS5yZWNlaXZlU2hhZG93KSksZCYmKGYuc2V0VmFsdWUobHQsInRvbmVNYXBwaW5nRXhwb3N1cmUiLHUudG9uZU1hcHBpbmdFeHBvc3VyZSkscy5uZWVkc0xpZ2h0cyYmKGZ1bmN0aW9uIF8odCxuKXt0LmFtYmllbnRMaWdodENvbG9yLm5lZWRzVXBkYXRlPW4sdC5saWdodFByb2JlLm5lZWRzVXBkYXRlPW4sdC5kaXJlY3Rpb25hbExpZ2h0cy5uZWVkc1VwZGF0ZT1uLHQuZGlyZWN0aW9uYWxMaWdodFNoYWRvd3MubmVlZHNVcGRhdGU9bix0LnBvaW50TGlnaHRzLm5lZWRzVXBkYXRlPW4sdC5wb2ludExpZ2h0U2hhZG93cy5uZWVkc1VwZGF0ZT1uLHQuc3BvdExpZ2h0cy5uZWVkc1VwZGF0ZT1uLHQuc3BvdExpZ2h0U2hhZG93cy5uZWVkc1VwZGF0ZT1uLHQucmVjdEFyZWFMaWdodHMubmVlZHNVcGRhdGU9bix0LmhlbWlzcGhlcmVMaWdodHMubmVlZHNVcGRhdGU9bn0pKGgsZyksbyYmZS5mb2cmJiQucmVmcmVzaEZvZ1VuaWZvcm1zKGgsbyksJC5yZWZyZXNoTWF0ZXJpYWxVbmlmb3JtcyhoLGUsRSxTKSxaYXQudXBsb2FkKGx0LHMudW5pZm9ybXNMaXN0LGgscSkpLGUuaXNTaGFkZXJNYXRlcmlhbCYmITA9PT1lLnVuaWZvcm1zTmVlZFVwZGF0ZSYmKFphdC51cGxvYWQobHQscy51bmlmb3Jtc0xpc3QsaCxxKSxlLnVuaWZvcm1zTmVlZFVwZGF0ZT0hMSksZS5pc1Nwcml0ZU1hdGVyaWFsJiZmLnNldFZhbHVlKGx0LCJjZW50ZXIiLGEuY2VudGVyKSxmLnNldFZhbHVlKGx0LCJtb2RlbFZpZXdNYXRyaXgiLGEubW9kZWxWaWV3TWF0cml4KSxmLnNldFZhbHVlKGx0LCJub3JtYWxNYXRyaXgiLGEubm9ybWFsTWF0cml4KSxmLnNldFZhbHVlKGx0LCJtb2RlbE1hdHJpeCIsYS5tYXRyaXhXb3JsZCksYn1DdC5zZXRBbmltYXRpb25Mb29wKChmdW5jdGlvbiBrdCh0KXtndC5pc1ByZXNlbnRpbmd8fF90JiZfdCh0KX0pKSwidW5kZWZpbmVkIiE9dHlwZW9mIHdpbmRvdyYmQ3Quc2V0Q29udGV4dCh3aW5kb3cpLHRoaXMuc2V0QW5pbWF0aW9uTG9vcD1mdW5jdGlvbih0KXtfdD10LGd0LnNldEFuaW1hdGlvbkxvb3AodCksbnVsbD09PXQ/Q3Quc3RvcCgpOkN0LnN0YXJ0KCl9LHRoaXMucmVuZGVyPWZ1bmN0aW9uKHQsbil7bGV0IGUsYTtpZih2b2lkIDAhPT1hcmd1bWVudHNbMl0mJihjb25zb2xlLndhcm4oIlRIUkVFLldlYkdMUmVuZGVyZXIucmVuZGVyKCk6IHRoZSByZW5kZXJUYXJnZXQgYXJndW1lbnQgaGFzIGJlZW4gcmVtb3ZlZC4gVXNlIC5zZXRSZW5kZXJUYXJnZXQoKSBpbnN0ZWFkLiIpLGU9YXJndW1lbnRzWzJdKSx2b2lkIDAhPT1hcmd1bWVudHNbM10mJihjb25zb2xlLndhcm4oIlRIUkVFLldlYkdMUmVuZGVyZXIucmVuZGVyKCk6IHRoZSBmb3JjZUNsZWFyIGFyZ3VtZW50IGhhcyBiZWVuIHJlbW92ZWQuIFVzZSAuY2xlYXIoKSBpbnN0ZWFkLiIpLGE9YXJndW1lbnRzWzNdKSx2b2lkIDAhPT1uJiYhMCE9PW4uaXNDYW1lcmEpcmV0dXJuIHZvaWQgY29uc29sZS5lcnJvcigiVEhSRUUuV2ViR0xSZW5kZXJlci5yZW5kZXI6IGNhbWVyYSBpcyBub3QgYW4gaW5zdGFuY2Ugb2YgVEhSRUUuQ2FtZXJhLiIpO2lmKCEwPT09ZilyZXR1cm47c3QucmVzZXREZWZhdWx0U3RhdGUoKSxQPS0xLHg9bnVsbCwhMD09PXQuYXV0b1VwZGF0ZSYmdC51cGRhdGVNYXRyaXhXb3JsZCgpLG51bGw9PT1uLnBhcmVudCYmbi51cGRhdGVNYXRyaXhXb3JsZCgpLCEwPT09Z3QuZW5hYmxlZCYmITA9PT1ndC5pc1ByZXNlbnRpbmcmJihuPWd0LmdldENhbWVyYShuKSksITA9PT10LmlzU2NlbmUmJnQub25CZWZvcmVSZW5kZXIodSx0LG4sZXx8TSkscD1udC5nZXQodCxiLmxlbmd0aCkscC5pbml0KCksYi5wdXNoKHApLEwubXVsdGlwbHlNYXRyaWNlcyhuLnByb2plY3Rpb25NYXRyaXgsbi5tYXRyaXhXb3JsZEludmVyc2UpLEkuc2V0RnJvbVByb2plY3Rpb25NYXRyaXgoTCksRj10aGlzLmxvY2FsQ2xpcHBpbmdFbmFibGVkLE49ZXQuaW5pdCh0aGlzLmNsaXBwaW5nUGxhbmVzLEYsbiksZz10dC5nZXQodCxuKSxnLmluaXQoKSxNdCh0LG4sMCx1LnNvcnRPYmplY3RzKSxnLmZpbmlzaCgpLCEwPT09dS5zb3J0T2JqZWN0cyYmZy5zb3J0KEEseiksITA9PT1OJiZldC5iZWdpblNoYWRvd3MoKTtjb25zdCBvPXAuc3RhdGUuc2hhZG93c0FycmF5O3B0LnJlbmRlcihvLHQsbikscC5zZXR1cExpZ2h0cygpLHAuc2V0dXBMaWdodHNWaWV3KG4pLCEwPT09TiYmZXQuZW5kU2hhZG93cygpLCEwPT09dGhpcy5pbmZvLmF1dG9SZXNldCYmdGhpcy5pbmZvLnJlc2V0KCksdm9pZCAwIT09ZSYmdGhpcy5zZXRSZW5kZXJUYXJnZXQoZSksYXQucmVuZGVyKGcsdCxuLGEpO2NvbnN0IHI9Zy5vcGFxdWUsaT1nLnRyYW5zcGFyZW50O3IubGVuZ3RoPjAmJk90KHIsdCxuKSxpLmxlbmd0aD4wJiZPdChpLHQsbiksITA9PT10LmlzU2NlbmUmJnQub25BZnRlclJlbmRlcih1LHQsbiksbnVsbCE9PU0mJihxLnVwZGF0ZVJlbmRlclRhcmdldE1pcG1hcChNKSxxLnVwZGF0ZU11bHRpc2FtcGxlUmVuZGVyVGFyZ2V0KE0pKSxXLmJ1ZmZlcnMuZGVwdGguc2V0VGVzdCghMCksVy5idWZmZXJzLmRlcHRoLnNldE1hc2soITApLFcuYnVmZmVycy5jb2xvci5zZXRNYXNrKCEwKSxXLnNldFBvbHlnb25PZmZzZXQoITEpLGIucG9wKCkscD1iLmxlbmd0aD4wP2JbYi5sZW5ndGgtMV06bnVsbCxnPW51bGx9LHRoaXMuc2V0RnJhbWVidWZmZXI9ZnVuY3Rpb24odCl7aCE9PXQmJm51bGw9PT1NJiZsdC5iaW5kRnJhbWVidWZmZXIoMzYxNjAsdCksaD10fSx0aGlzLmdldEFjdGl2ZUN1YmVGYWNlPWZ1bmN0aW9uKCl7cmV0dXJuIF99LHRoaXMuZ2V0QWN0aXZlTWlwbWFwTGV2ZWw9ZnVuY3Rpb24oKXtyZXR1cm4gQ30sdGhpcy5nZXRSZW5kZXJMaXN0PWZ1bmN0aW9uKCl7cmV0dXJuIGd9LHRoaXMuc2V0UmVuZGVyTGlzdD1mdW5jdGlvbih0KXtnPXR9LHRoaXMuZ2V0UmVuZGVyVGFyZ2V0PWZ1bmN0aW9uKCl7cmV0dXJuIE19LHRoaXMuc2V0UmVuZGVyVGFyZ2V0PWZ1bmN0aW9uKHQsbj0wLGU9MCl7TT10LF89bixDPWUsdCYmdm9pZCAwPT09WS5nZXQodCkuX193ZWJnbEZyYW1lYnVmZmVyJiZxLnNldHVwUmVuZGVyVGFyZ2V0KHQpO2xldCBhPWgsbz0hMTtpZih0KXtjb25zdCBlPVkuZ2V0KHQpLl9fd2ViZ2xGcmFtZWJ1ZmZlcjt0LmlzV2ViR0xDdWJlUmVuZGVyVGFyZ2V0PyhhPWVbbl0sbz0hMCk6YT10LmlzV2ViR0xNdWx0aXNhbXBsZVJlbmRlclRhcmdldD9ZLmdldCh0KS5fX3dlYmdsTXVsdGlzYW1wbGVkRnJhbWVidWZmZXI6ZSx5LmNvcHkodC52aWV3cG9ydCksay5jb3B5KHQuc2Npc3Nvciksdj10LnNjaXNzb3JUZXN0fWVsc2UgeS5jb3B5KFIpLm11bHRpcGx5U2NhbGFyKEUpLmZsb29yKCksay5jb3B5KFQpLm11bHRpcGx5U2NhbGFyKEUpLmZsb29yKCksdj1EO2lmKE8hPT1hJiYobHQuYmluZEZyYW1lYnVmZmVyKDM2MTYwLGEpLE89YSksVy52aWV3cG9ydCh5KSxXLnNjaXNzb3IoayksVy5zZXRTY2lzc29yVGVzdCh2KSxvKXtjb25zdCBhPVkuZ2V0KHQudGV4dHVyZSk7bHQuZnJhbWVidWZmZXJUZXh0dXJlMkQoMzYxNjAsMzYwNjQsMzQwNjkrbixhLl9fd2ViZ2xUZXh0dXJlLGUpfX0sdGhpcy5yZWFkUmVuZGVyVGFyZ2V0UGl4ZWxzPWZ1bmN0aW9uKHQsbixlLGEsbyxyLGkpe2lmKCF0fHwhdC5pc1dlYkdMUmVuZGVyVGFyZ2V0KXJldHVybiB2b2lkIGNvbnNvbGUuZXJyb3IoIlRIUkVFLldlYkdMUmVuZGVyZXIucmVhZFJlbmRlclRhcmdldFBpeGVsczogcmVuZGVyVGFyZ2V0IGlzIG5vdCBUSFJFRS5XZWJHTFJlbmRlclRhcmdldC4iKTtsZXQgYz1ZLmdldCh0KS5fX3dlYmdsRnJhbWVidWZmZXI7aWYodC5pc1dlYkdMQ3ViZVJlbmRlclRhcmdldCYmdm9pZCAwIT09aSYmKGM9Y1tpXSksYyl7bGV0IGk9ITE7YyE9PU8mJihsdC5iaW5kRnJhbWVidWZmZXIoMzYxNjAsYyksaT0hMCk7dHJ5e2NvbnN0IGM9dC50ZXh0dXJlLHM9Yy5mb3JtYXQsbD1jLnR5cGU7aWYocyE9PXY5JiZjdC5jb252ZXJ0KHMpIT09bHQuZ2V0UGFyYW1ldGVyKDM1NzM5KSlyZXR1cm4gdm9pZCBjb25zb2xlLmVycm9yKCJUSFJFRS5XZWJHTFJlbmRlcmVyLnJlYWRSZW5kZXJUYXJnZXRQaXhlbHM6IHJlbmRlclRhcmdldCBpcyBub3QgaW4gUkdCQSBvciBpbXBsZW1lbnRhdGlvbiBkZWZpbmVkIGZvcm1hdC4iKTtjb25zdCBtPWw9PT14OSYmKGouaGFzKCJFWFRfY29sb3JfYnVmZmVyX2hhbGZfZmxvYXQiKXx8VS5pc1dlYkdMMiYmai5oYXMoIkVYVF9jb2xvcl9idWZmZXJfZmxvYXQiKSk7aWYoISgxMDA5PT09bHx8Y3QuY29udmVydChsKT09PWx0LmdldFBhcmFtZXRlcigzNTczOCl8fGw9PT1QOSYmKFUuaXNXZWJHTDJ8fGouaGFzKCJPRVNfdGV4dHVyZV9mbG9hdCIpfHxqLmhhcygiV0VCR0xfY29sb3JfYnVmZmVyX2Zsb2F0IikpfHxtKSlyZXR1cm4gdm9pZCBjb25zb2xlLmVycm9yKCJUSFJFRS5XZWJHTFJlbmRlcmVyLnJlYWRSZW5kZXJUYXJnZXRQaXhlbHM6IHJlbmRlclRhcmdldCBpcyBub3QgaW4gVW5zaWduZWRCeXRlVHlwZSBvciBpbXBsZW1lbnRhdGlvbiBkZWZpbmVkIHR5cGUuIik7MzYwNTM9PT1sdC5jaGVja0ZyYW1lYnVmZmVyU3RhdHVzKDM2MTYwKT9uPj0wJiZuPD10LndpZHRoLWEmJmU+PTAmJmU8PXQuaGVpZ2h0LW8mJmx0LnJlYWRQaXhlbHMobixlLGEsbyxjdC5jb252ZXJ0KHMpLGN0LmNvbnZlcnQobCkscik6Y29uc29sZS5lcnJvcigiVEhSRUUuV2ViR0xSZW5kZXJlci5yZWFkUmVuZGVyVGFyZ2V0UGl4ZWxzOiByZWFkUGl4ZWxzIGZyb20gcmVuZGVyVGFyZ2V0IGZhaWxlZC4gRnJhbWVidWZmZXIgbm90IGNvbXBsZXRlLiIpfWZpbmFsbHl7aSYmbHQuYmluZEZyYW1lYnVmZmVyKDM2MTYwLE8pfX19LHRoaXMuY29weUZyYW1lYnVmZmVyVG9UZXh0dXJlPWZ1bmN0aW9uKHQsbixlPTApe2NvbnN0IGE9TWF0aC5wb3coMiwtZSksbz1NYXRoLmZsb29yKG4uaW1hZ2Uud2lkdGgqYSkscj1NYXRoLmZsb29yKG4uaW1hZ2UuaGVpZ2h0KmEpLGk9Y3QuY29udmVydChuLmZvcm1hdCk7cS5zZXRUZXh0dXJlMkQobiwwKSxsdC5jb3B5VGV4SW1hZ2UyRCgzNTUzLGUsaSx0LngsdC55LG8sciwwKSxXLnVuYmluZFRleHR1cmUoKX0sdGhpcy5jb3B5VGV4dHVyZVRvVGV4dHVyZT1mdW5jdGlvbih0LG4sZSxhPTApe2NvbnN0IG89bi5pbWFnZS53aWR0aCxyPW4uaW1hZ2UuaGVpZ2h0LGk9Y3QuY29udmVydChlLmZvcm1hdCksYz1jdC5jb252ZXJ0KGUudHlwZSk7cS5zZXRUZXh0dXJlMkQoZSwwKSxsdC5waXhlbFN0b3JlaSgzNzQ0MCxlLmZsaXBZKSxsdC5waXhlbFN0b3JlaSgzNzQ0MSxlLnByZW11bHRpcGx5QWxwaGEpLGx0LnBpeGVsU3RvcmVpKDMzMTcsZS51bnBhY2tBbGlnbm1lbnQpLG4uaXNEYXRhVGV4dHVyZT9sdC50ZXhTdWJJbWFnZTJEKDM1NTMsYSx0LngsdC55LG8scixpLGMsbi5pbWFnZS5kYXRhKTpuLmlzQ29tcHJlc3NlZFRleHR1cmU/bHQuY29tcHJlc3NlZFRleFN1YkltYWdlMkQoMzU1MyxhLHQueCx0Lnksbi5taXBtYXBzWzBdLndpZHRoLG4ubWlwbWFwc1swXS5oZWlnaHQsaSxuLm1pcG1hcHNbMF0uZGF0YSk6bHQudGV4U3ViSW1hZ2UyRCgzNTUzLGEsdC54LHQueSxpLGMsbi5pbWFnZSksMD09PWEmJmUuZ2VuZXJhdGVNaXBtYXBzJiZsdC5nZW5lcmF0ZU1pcG1hcCgzNTUzKSxXLnVuYmluZFRleHR1cmUoKX0sdGhpcy5pbml0VGV4dHVyZT1mdW5jdGlvbih0KXtxLnNldFRleHR1cmUyRCh0LDApLFcudW5iaW5kVGV4dHVyZSgpfSx0aGlzLnJlc2V0U3RhdGU9ZnVuY3Rpb24oKXtXLnJlc2V0KCksc3QucmVzZXQoKX0sInVuZGVmaW5lZCIhPXR5cGVvZiBfX1RIUkVFX0RFVlRPT0xTX18mJl9fVEhSRUVfREVWVE9PTFNfXy5kaXNwYXRjaEV2ZW50KG5ldyBDdXN0b21FdmVudCgib2JzZXJ2ZSIse2RldGFpbDp0aGlzfSkpfWZ1bmN0aW9uIEhvdCh0KXtMb3QuY2FsbCh0aGlzLHQpfSh3b3QucHJvdG90eXBlPU9iamVjdC5jcmVhdGUoeW50LnByb3RvdHlwZSkpLmNvbnN0cnVjdG9yPXdvdCx3b3QucHJvdG90eXBlLmlzTWVzaERlcHRoTWF0ZXJpYWw9ITAsd290LnByb3RvdHlwZS5jb3B5PWZ1bmN0aW9uKHQpe3JldHVybiB5bnQucHJvdG90eXBlLmNvcHkuY2FsbCh0aGlzLHQpLHRoaXMuZGVwdGhQYWNraW5nPXQuZGVwdGhQYWNraW5nLHRoaXMuc2tpbm5pbmc9dC5za2lubmluZyx0aGlzLm1vcnBoVGFyZ2V0cz10Lm1vcnBoVGFyZ2V0cyx0aGlzLm1hcD10Lm1hcCx0aGlzLmFscGhhTWFwPXQuYWxwaGFNYXAsdGhpcy5kaXNwbGFjZW1lbnRNYXA9dC5kaXNwbGFjZW1lbnRNYXAsdGhpcy5kaXNwbGFjZW1lbnRTY2FsZT10LmRpc3BsYWNlbWVudFNjYWxlLHRoaXMuZGlzcGxhY2VtZW50Qmlhcz10LmRpc3BsYWNlbWVudEJpYXMsdGhpcy53aXJlZnJhbWU9dC53aXJlZnJhbWUsdGhpcy53aXJlZnJhbWVMaW5ld2lkdGg9dC53aXJlZnJhbWVMaW5ld2lkdGgsdGhpc30sKFNvdC5wcm90b3R5cGU9T2JqZWN0LmNyZWF0ZSh5bnQucHJvdG90eXBlKSkuY29uc3RydWN0b3I9U290LFNvdC5wcm90b3R5cGUuaXNNZXNoRGlzdGFuY2VNYXRlcmlhbD0hMCxTb3QucHJvdG90eXBlLmNvcHk9ZnVuY3Rpb24odCl7cmV0dXJuIHludC5wcm90b3R5cGUuY29weS5jYWxsKHRoaXMsdCksdGhpcy5yZWZlcmVuY2VQb3NpdGlvbi5jb3B5KHQucmVmZXJlbmNlUG9zaXRpb24pLHRoaXMubmVhckRpc3RhbmNlPXQubmVhckRpc3RhbmNlLHRoaXMuZmFyRGlzdGFuY2U9dC5mYXJEaXN0YW5jZSx0aGlzLnNraW5uaW5nPXQuc2tpbm5pbmcsdGhpcy5tb3JwaFRhcmdldHM9dC5tb3JwaFRhcmdldHMsdGhpcy5tYXA9dC5tYXAsdGhpcy5hbHBoYU1hcD10LmFscGhhTWFwLHRoaXMuZGlzcGxhY2VtZW50TWFwPXQuZGlzcGxhY2VtZW50TWFwLHRoaXMuZGlzcGxhY2VtZW50U2NhbGU9dC5kaXNwbGFjZW1lbnRTY2FsZSx0aGlzLmRpc3BsYWNlbWVudEJpYXM9dC5kaXNwbGFjZW1lbnRCaWFzLHRoaXN9LFRvdC5wcm90b3R5cGU9T2JqZWN0LmFzc2lnbihPYmplY3QuY3JlYXRlKFBldC5wcm90b3R5cGUpLHtjb25zdHJ1Y3RvcjpUb3QsaXNBcnJheUNhbWVyYTohMH0pLERvdC5wcm90b3R5cGU9T2JqZWN0LmFzc2lnbihPYmplY3QuY3JlYXRlKCR0dC5wcm90b3R5cGUpLHtjb25zdHJ1Y3RvcjpEb3QsaXNHcm91cDohMH0pLE9iamVjdC5hc3NpZ24oSW90LnByb3RvdHlwZSx7Y29uc3RydWN0b3I6SW90LGdldEhhbmRTcGFjZTpmdW5jdGlvbigpe3JldHVybiBudWxsPT09dGhpcy5faGFuZCYmKHRoaXMuX2hhbmQ9bmV3IERvdCx0aGlzLl9oYW5kLm1hdHJpeEF1dG9VcGRhdGU9ITEsdGhpcy5faGFuZC52aXNpYmxlPSExLHRoaXMuX2hhbmQuam9pbnRzPXt9LHRoaXMuX2hhbmQuaW5wdXRTdGF0ZT17cGluY2hpbmc6ITF9KSx0aGlzLl9oYW5kfSxnZXRUYXJnZXRSYXlTcGFjZTpmdW5jdGlvbigpe3JldHVybiBudWxsPT09dGhpcy5fdGFyZ2V0UmF5JiYodGhpcy5fdGFyZ2V0UmF5PW5ldyBEb3QsdGhpcy5fdGFyZ2V0UmF5Lm1hdHJpeEF1dG9VcGRhdGU9ITEsdGhpcy5fdGFyZ2V0UmF5LnZpc2libGU9ITEpLHRoaXMuX3RhcmdldFJheX0sZ2V0R3JpcFNwYWNlOmZ1bmN0aW9uKCl7cmV0dXJuIG51bGw9PT10aGlzLl9ncmlwJiYodGhpcy5fZ3JpcD1uZXcgRG90LHRoaXMuX2dyaXAubWF0cml4QXV0b1VwZGF0ZT0hMSx0aGlzLl9ncmlwLnZpc2libGU9ITEpLHRoaXMuX2dyaXB9LGRpc3BhdGNoRXZlbnQ6ZnVuY3Rpb24odCl7cmV0dXJuIG51bGwhPT10aGlzLl90YXJnZXRSYXkmJnRoaXMuX3RhcmdldFJheS5kaXNwYXRjaEV2ZW50KHQpLG51bGwhPT10aGlzLl9ncmlwJiZ0aGlzLl9ncmlwLmRpc3BhdGNoRXZlbnQodCksbnVsbCE9PXRoaXMuX2hhbmQmJnRoaXMuX2hhbmQuZGlzcGF0Y2hFdmVudCh0KSx0aGlzfSxkaXNjb25uZWN0OmZ1bmN0aW9uKHQpe3JldHVybiB0aGlzLmRpc3BhdGNoRXZlbnQoe3R5cGU6ImRpc2Nvbm5lY3RlZCIsZGF0YTp0fSksbnVsbCE9PXRoaXMuX3RhcmdldFJheSYmKHRoaXMuX3RhcmdldFJheS52aXNpYmxlPSExKSxudWxsIT09dGhpcy5fZ3JpcCYmKHRoaXMuX2dyaXAudmlzaWJsZT0hMSksbnVsbCE9PXRoaXMuX2hhbmQmJih0aGlzLl9oYW5kLnZpc2libGU9ITEpLHRoaXN9LHVwZGF0ZTpmdW5jdGlvbih0LG4sZSl7bGV0IGE9bnVsbCxvPW51bGwscj1udWxsO2NvbnN0IGk9dGhpcy5fdGFyZ2V0UmF5LGM9dGhpcy5fZ3JpcCxzPXRoaXMuX2hhbmQ7aWYodCYmInZpc2libGUtYmx1cnJlZCIhPT1uLnNlc3Npb24udmlzaWJpbGl0eVN0YXRlKWlmKHMmJnQuaGFuZCl7cj0hMDtmb3IoY29uc3QgYSBvZiB0LmhhbmQudmFsdWVzKCkpe2NvbnN0IHQ9bi5nZXRKb2ludFBvc2UoYSxlKTtpZih2b2lkIDA9PT1zLmpvaW50c1thLmpvaW50TmFtZV0pe2NvbnN0IHQ9bmV3IERvdDt0Lm1hdHJpeEF1dG9VcGRhdGU9ITEsdC52aXNpYmxlPSExLHMuam9pbnRzW2Euam9pbnROYW1lXT10LHMuYWRkKHQpfWNvbnN0IG89cy5qb2ludHNbYS5qb2ludE5hbWVdO251bGwhPT10JiYoby5tYXRyaXguZnJvbUFycmF5KHQudHJhbnNmb3JtLm1hdHJpeCksby5tYXRyaXguZGVjb21wb3NlKG8ucG9zaXRpb24sby5yb3RhdGlvbixvLnNjYWxlKSxvLmpvaW50UmFkaXVzPXQucmFkaXVzKSxvLnZpc2libGU9bnVsbCE9PXR9Y29uc3QgYT1zLmpvaW50c1siaW5kZXgtZmluZ2VyLXRpcCJdLnBvc2l0aW9uLmRpc3RhbmNlVG8ocy5qb2ludHNbInRodW1iLXRpcCJdLnBvc2l0aW9uKSxvPS4wMixpPS4wMDU7cy5pbnB1dFN0YXRlLnBpbmNoaW5nJiZhPm8raT8ocy5pbnB1dFN0YXRlLnBpbmNoaW5nPSExLHRoaXMuZGlzcGF0Y2hFdmVudCh7dHlwZToicGluY2hlbmQiLGhhbmRlZG5lc3M6dC5oYW5kZWRuZXNzLHRhcmdldDp0aGlzfSkpOiFzLmlucHV0U3RhdGUucGluY2hpbmcmJmE8PW8taSYmKHMuaW5wdXRTdGF0ZS5waW5jaGluZz0hMCx0aGlzLmRpc3BhdGNoRXZlbnQoe3R5cGU6InBpbmNoc3RhcnQiLGhhbmRlZG5lc3M6dC5oYW5kZWRuZXNzLHRhcmdldDp0aGlzfSkpfWVsc2UgbnVsbCE9PWkmJihhPW4uZ2V0UG9zZSh0LnRhcmdldFJheVNwYWNlLGUpLG51bGwhPT1hJiYoaS5tYXRyaXguZnJvbUFycmF5KGEudHJhbnNmb3JtLm1hdHJpeCksaS5tYXRyaXguZGVjb21wb3NlKGkucG9zaXRpb24saS5yb3RhdGlvbixpLnNjYWxlKSkpLG51bGwhPT1jJiZ0LmdyaXBTcGFjZSYmKG89bi5nZXRQb3NlKHQuZ3JpcFNwYWNlLGUpLG51bGwhPT1vJiYoYy5tYXRyaXguZnJvbUFycmF5KG8udHJhbnNmb3JtLm1hdHJpeCksYy5tYXRyaXguZGVjb21wb3NlKGMucG9zaXRpb24sYy5yb3RhdGlvbixjLnNjYWxlKSkpO3JldHVybiBudWxsIT09aSYmKGkudmlzaWJsZT1udWxsIT09YSksbnVsbCE9PWMmJihjLnZpc2libGU9bnVsbCE9PW8pLG51bGwhPT1zJiYocy52aXNpYmxlPW51bGwhPT1yKSx0aGlzfX0pLE9iamVjdC5hc3NpZ24oTm90LnByb3RvdHlwZSxCOS5wcm90b3R5cGUpLEhvdC5wcm90b3R5cGU9T2JqZWN0LmFzc2lnbihPYmplY3QuY3JlYXRlKExvdC5wcm90b3R5cGUpLHtjb25zdHJ1Y3RvcjpIb3QsaXNXZWJHTDFSZW5kZXJlcjohMH0pO2NsYXNzIEJvdCBleHRlbmRzICR0dHtjb25zdHJ1Y3Rvcigpe3N1cGVyKCksT2JqZWN0LmRlZmluZVByb3BlcnR5KHRoaXMsImlzU2NlbmUiLHt2YWx1ZTohMH0pLHRoaXMudHlwZT0iU2NlbmUiLHRoaXMuYmFja2dyb3VuZD1udWxsLHRoaXMuZW52aXJvbm1lbnQ9bnVsbCx0aGlzLmZvZz1udWxsLHRoaXMub3ZlcnJpZGVNYXRlcmlhbD1udWxsLHRoaXMuYXV0b1VwZGF0ZT0hMCwidW5kZWZpbmVkIiE9dHlwZW9mIF9fVEhSRUVfREVWVE9PTFNfXyYmX19USFJFRV9ERVZUT09MU19fLmRpc3BhdGNoRXZlbnQobmV3IEN1c3RvbUV2ZW50KCJvYnNlcnZlIix7ZGV0YWlsOnRoaXN9KSl9Y29weSh0LG4pe3JldHVybiBzdXBlci5jb3B5KHQsbiksbnVsbCE9PXQuYmFja2dyb3VuZCYmKHRoaXMuYmFja2dyb3VuZD10LmJhY2tncm91bmQuY2xvbmUoKSksbnVsbCE9PXQuZW52aXJvbm1lbnQmJih0aGlzLmVudmlyb25tZW50PXQuZW52aXJvbm1lbnQuY2xvbmUoKSksbnVsbCE9PXQuZm9nJiYodGhpcy5mb2c9dC5mb2cuY2xvbmUoKSksbnVsbCE9PXQub3ZlcnJpZGVNYXRlcmlhbCYmKHRoaXMub3ZlcnJpZGVNYXRlcmlhbD10Lm92ZXJyaWRlTWF0ZXJpYWwuY2xvbmUoKSksdGhpcy5hdXRvVXBkYXRlPXQuYXV0b1VwZGF0ZSx0aGlzLm1hdHJpeEF1dG9VcGRhdGU9dC5tYXRyaXhBdXRvVXBkYXRlLHRoaXN9dG9KU09OKHQpe2NvbnN0IG49c3VwZXIudG9KU09OKHQpO3JldHVybiBudWxsIT09dGhpcy5iYWNrZ3JvdW5kJiYobi5vYmplY3QuYmFja2dyb3VuZD10aGlzLmJhY2tncm91bmQudG9KU09OKHQpKSxudWxsIT09dGhpcy5lbnZpcm9ubWVudCYmKG4ub2JqZWN0LmVudmlyb25tZW50PXRoaXMuZW52aXJvbm1lbnQudG9KU09OKHQpKSxudWxsIT09dGhpcy5mb2cmJihuLm9iamVjdC5mb2c9dGhpcy5mb2cudG9KU09OKCkpLG59fWZ1bmN0aW9uIFZvdCh0LG4pe3RoaXMuYXJyYXk9dCx0aGlzLnN0cmlkZT1uLHRoaXMuY291bnQ9dm9pZCAwIT09dD90Lmxlbmd0aC9uOjAsdGhpcy51c2FnZT1GOSx0aGlzLnVwZGF0ZVJhbmdlPXtvZmZzZXQ6MCxjb3VudDotMX0sdGhpcy52ZXJzaW9uPTAsdGhpcy51dWlkPVU5LmdlbmVyYXRlVVVJRCgpfU9iamVjdC5kZWZpbmVQcm9wZXJ0eShWb3QucHJvdG90eXBlLCJuZWVkc1VwZGF0ZSIse3NldDpmdW5jdGlvbih0KXshMD09PXQmJnRoaXMudmVyc2lvbisrfX0pLE9iamVjdC5hc3NpZ24oVm90LnByb3RvdHlwZSx7aXNJbnRlcmxlYXZlZEJ1ZmZlcjohMCxvblVwbG9hZENhbGxiYWNrOmZ1bmN0aW9uKCl7fSxzZXRVc2FnZTpmdW5jdGlvbih0KXtyZXR1cm4gdGhpcy51c2FnZT10LHRoaXN9LGNvcHk6ZnVuY3Rpb24odCl7cmV0dXJuIHRoaXMuYXJyYXk9bmV3IHQuYXJyYXkuY29uc3RydWN0b3IodC5hcnJheSksdGhpcy5jb3VudD10LmNvdW50LHRoaXMuc3RyaWRlPXQuc3RyaWRlLHRoaXMudXNhZ2U9dC51c2FnZSx0aGlzfSxjb3B5QXQ6ZnVuY3Rpb24odCxuLGUpe3QqPXRoaXMuc3RyaWRlLGUqPW4uc3RyaWRlO2ZvcihsZXQgYT0wLG89dGhpcy5zdHJpZGU7YTxvO2ErKyl0aGlzLmFycmF5W3QrYV09bi5hcnJheVtlK2FdO3JldHVybiB0aGlzfSxzZXQ6ZnVuY3Rpb24odCxuPTApe3JldHVybiB0aGlzLmFycmF5LnNldCh0LG4pLHRoaXN9LGNsb25lOmZ1bmN0aW9uKHQpe3ZvaWQgMD09PXQuYXJyYXlCdWZmZXJzJiYodC5hcnJheUJ1ZmZlcnM9e30pLHZvaWQgMD09PXRoaXMuYXJyYXkuYnVmZmVyLl91dWlkJiYodGhpcy5hcnJheS5idWZmZXIuX3V1aWQ9VTkuZ2VuZXJhdGVVVUlEKCkpLHZvaWQgMD09PXQuYXJyYXlCdWZmZXJzW3RoaXMuYXJyYXkuYnVmZmVyLl91dWlkXSYmKHQuYXJyYXlCdWZmZXJzW3RoaXMuYXJyYXkuYnVmZmVyLl91dWlkXT10aGlzLmFycmF5LnNsaWNlKDApLmJ1ZmZlcik7Y29uc3Qgbj1uZXcgVm90KG5ldyB0aGlzLmFycmF5LmNvbnN0cnVjdG9yKHQuYXJyYXlCdWZmZXJzW3RoaXMuYXJyYXkuYnVmZmVyLl91dWlkXSksdGhpcy5zdHJpZGUpO3JldHVybiBuLnNldFVzYWdlKHRoaXMudXNhZ2UpLG59LG9uVXBsb2FkOmZ1bmN0aW9uKHQpe3JldHVybiB0aGlzLm9uVXBsb2FkQ2FsbGJhY2s9dCx0aGlzfSx0b0pTT046ZnVuY3Rpb24odCl7cmV0dXJuIHZvaWQgMD09PXQuYXJyYXlCdWZmZXJzJiYodC5hcnJheUJ1ZmZlcnM9e30pLHZvaWQgMD09PXRoaXMuYXJyYXkuYnVmZmVyLl91dWlkJiYodGhpcy5hcnJheS5idWZmZXIuX3V1aWQ9VTkuZ2VuZXJhdGVVVUlEKCkpLHZvaWQgMD09PXQuYXJyYXlCdWZmZXJzW3RoaXMuYXJyYXkuYnVmZmVyLl91dWlkXSYmKHQuYXJyYXlCdWZmZXJzW3RoaXMuYXJyYXkuYnVmZmVyLl91dWlkXT1BcnJheS5wcm90b3R5cGUuc2xpY2UuY2FsbChuZXcgVWludDMyQXJyYXkodGhpcy5hcnJheS5idWZmZXIpKSkse3V1aWQ6dGhpcy51dWlkLGJ1ZmZlcjp0aGlzLmFycmF5LmJ1ZmZlci5fdXVpZCx0eXBlOnRoaXMuYXJyYXkuY29uc3RydWN0b3IubmFtZSxzdHJpZGU6dGhpcy5zdHJpZGV9fX0pO2NvbnN0IGpvdD1uZXcgdHR0O2Z1bmN0aW9uIFVvdCh0LG4sZSxhKXt0aGlzLm5hbWU9IiIsdGhpcy5kYXRhPXQsdGhpcy5pdGVtU2l6ZT1uLHRoaXMub2Zmc2V0PWUsdGhpcy5ub3JtYWxpemVkPSEwPT09YX1mdW5jdGlvbiBXb3QodCl7eW50LmNhbGwodGhpcyksdGhpcy50eXBlPSJTcHJpdGVNYXRlcmlhbCIsdGhpcy5jb2xvcj1uZXcgT250KDE2Nzc3MjE1KSx0aGlzLm1hcD1udWxsLHRoaXMuYWxwaGFNYXA9bnVsbCx0aGlzLnJvdGF0aW9uPTAsdGhpcy5zaXplQXR0ZW51YXRpb249ITAsdGhpcy50cmFuc3BhcmVudD0hMCx0aGlzLnNldFZhbHVlcyh0KX1sZXQgR290O09iamVjdC5kZWZpbmVQcm9wZXJ0aWVzKFVvdC5wcm90b3R5cGUse2NvdW50OntnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5kYXRhLmNvdW50fX0sYXJyYXk6e2dldDpmdW5jdGlvbigpe3JldHVybiB0aGlzLmRhdGEuYXJyYXl9fSxuZWVkc1VwZGF0ZTp7c2V0OmZ1bmN0aW9uKHQpe3RoaXMuZGF0YS5uZWVkc1VwZGF0ZT10fX19KSxPYmplY3QuYXNzaWduKFVvdC5wcm90b3R5cGUse2lzSW50ZXJsZWF2ZWRCdWZmZXJBdHRyaWJ1dGU6ITAsYXBwbHlNYXRyaXg0OmZ1bmN0aW9uKHQpe2ZvcihsZXQgbj0wLGU9dGhpcy5kYXRhLmNvdW50O248ZTtuKyspam90Lng9dGhpcy5nZXRYKG4pLGpvdC55PXRoaXMuZ2V0WShuKSxqb3Quej10aGlzLmdldFoobiksam90LmFwcGx5TWF0cml4NCh0KSx0aGlzLnNldFhZWihuLGpvdC54LGpvdC55LGpvdC56KTtyZXR1cm4gdGhpc30sc2V0WDpmdW5jdGlvbih0LG4pe3JldHVybiB0aGlzLmRhdGEuYXJyYXlbdCp0aGlzLmRhdGEuc3RyaWRlK3RoaXMub2Zmc2V0XT1uLHRoaXN9LHNldFk6ZnVuY3Rpb24odCxuKXtyZXR1cm4gdGhpcy5kYXRhLmFycmF5W3QqdGhpcy5kYXRhLnN0cmlkZSt0aGlzLm9mZnNldCsxXT1uLHRoaXN9LHNldFo6ZnVuY3Rpb24odCxuKXtyZXR1cm4gdGhpcy5kYXRhLmFycmF5W3QqdGhpcy5kYXRhLnN0cmlkZSt0aGlzLm9mZnNldCsyXT1uLHRoaXN9LHNldFc6ZnVuY3Rpb24odCxuKXtyZXR1cm4gdGhpcy5kYXRhLmFycmF5W3QqdGhpcy5kYXRhLnN0cmlkZSt0aGlzLm9mZnNldCszXT1uLHRoaXN9LGdldFg6ZnVuY3Rpb24odCl7cmV0dXJuIHRoaXMuZGF0YS5hcnJheVt0KnRoaXMuZGF0YS5zdHJpZGUrdGhpcy5vZmZzZXRdfSxnZXRZOmZ1bmN0aW9uKHQpe3JldHVybiB0aGlzLmRhdGEuYXJyYXlbdCp0aGlzLmRhdGEuc3RyaWRlK3RoaXMub2Zmc2V0KzFdfSxnZXRaOmZ1bmN0aW9uKHQpe3JldHVybiB0aGlzLmRhdGEuYXJyYXlbdCp0aGlzLmRhdGEuc3RyaWRlK3RoaXMub2Zmc2V0KzJdfSxnZXRXOmZ1bmN0aW9uKHQpe3JldHVybiB0aGlzLmRhdGEuYXJyYXlbdCp0aGlzLmRhdGEuc3RyaWRlK3RoaXMub2Zmc2V0KzNdfSxzZXRYWTpmdW5jdGlvbih0LG4sZSl7cmV0dXJuIHRoaXMuZGF0YS5hcnJheVsodD10KnRoaXMuZGF0YS5zdHJpZGUrdGhpcy5vZmZzZXQpKzBdPW4sdGhpcy5kYXRhLmFycmF5W3QrMV09ZSx0aGlzfSxzZXRYWVo6ZnVuY3Rpb24odCxuLGUsYSl7cmV0dXJuIHRoaXMuZGF0YS5hcnJheVsodD10KnRoaXMuZGF0YS5zdHJpZGUrdGhpcy5vZmZzZXQpKzBdPW4sdGhpcy5kYXRhLmFycmF5W3QrMV09ZSx0aGlzLmRhdGEuYXJyYXlbdCsyXT1hLHRoaXN9LHNldFhZWlc6ZnVuY3Rpb24odCxuLGUsYSxvKXtyZXR1cm4gdGhpcy5kYXRhLmFycmF5Wyh0PXQqdGhpcy5kYXRhLnN0cmlkZSt0aGlzLm9mZnNldCkrMF09bix0aGlzLmRhdGEuYXJyYXlbdCsxXT1lLHRoaXMuZGF0YS5hcnJheVt0KzJdPWEsdGhpcy5kYXRhLmFycmF5W3QrM109byx0aGlzfSxjbG9uZTpmdW5jdGlvbih0KXtpZih2b2lkIDA9PT10KXtjb25zb2xlLmxvZygiVEhSRUUuSW50ZXJsZWF2ZWRCdWZmZXJBdHRyaWJ1dGUuY2xvbmUoKTogQ2xvbmluZyBhbiBpbnRlcmxhdmVkIGJ1ZmZlciBhdHRyaWJ1dGUgd2lsbCBkZWludGVybGVhdmUgYnVmZmVyIGRhdGEuIik7Y29uc3QgdD1bXTtmb3IobGV0IG49MDtuPHRoaXMuY291bnQ7bisrKXtjb25zdCBlPW4qdGhpcy5kYXRhLnN0cmlkZSt0aGlzLm9mZnNldDtmb3IobGV0IG49MDtuPHRoaXMuaXRlbVNpemU7bisrKXQucHVzaCh0aGlzLmRhdGEuYXJyYXlbZStuXSl9cmV0dXJuIG5ldyBTbnQobmV3IHRoaXMuYXJyYXkuY29uc3RydWN0b3IodCksdGhpcy5pdGVtU2l6ZSx0aGlzLm5vcm1hbGl6ZWQpfXJldHVybiB2b2lkIDA9PT10LmludGVybGVhdmVkQnVmZmVycyYmKHQuaW50ZXJsZWF2ZWRCdWZmZXJzPXt9KSx2b2lkIDA9PT10LmludGVybGVhdmVkQnVmZmVyc1t0aGlzLmRhdGEudXVpZF0mJih0LmludGVybGVhdmVkQnVmZmVyc1t0aGlzLmRhdGEudXVpZF09dGhpcy5kYXRhLmNsb25lKHQpKSxuZXcgVW90KHQuaW50ZXJsZWF2ZWRCdWZmZXJzW3RoaXMuZGF0YS51dWlkXSx0aGlzLml0ZW1TaXplLHRoaXMub2Zmc2V0LHRoaXMubm9ybWFsaXplZCl9LHRvSlNPTjpmdW5jdGlvbih0KXtpZih2b2lkIDA9PT10KXtjb25zb2xlLmxvZygiVEhSRUUuSW50ZXJsZWF2ZWRCdWZmZXJBdHRyaWJ1dGUudG9KU09OKCk6IFNlcmlhbGl6aW5nIGFuIGludGVybGF2ZWQgYnVmZmVyIGF0dHJpYnV0ZSB3aWxsIGRlaW50ZXJsZWF2ZSBidWZmZXIgZGF0YS4iKTtjb25zdCB0PVtdO2ZvcihsZXQgbj0wO248dGhpcy5jb3VudDtuKyspe2NvbnN0IGU9bip0aGlzLmRhdGEuc3RyaWRlK3RoaXMub2Zmc2V0O2ZvcihsZXQgbj0wO248dGhpcy5pdGVtU2l6ZTtuKyspdC5wdXNoKHRoaXMuZGF0YS5hcnJheVtlK25dKX1yZXR1cm57aXRlbVNpemU6dGhpcy5pdGVtU2l6ZSx0eXBlOnRoaXMuYXJyYXkuY29uc3RydWN0b3IubmFtZSxhcnJheTp0LG5vcm1hbGl6ZWQ6dGhpcy5ub3JtYWxpemVkfX1yZXR1cm4gdm9pZCAwPT09dC5pbnRlcmxlYXZlZEJ1ZmZlcnMmJih0LmludGVybGVhdmVkQnVmZmVycz17fSksdm9pZCAwPT09dC5pbnRlcmxlYXZlZEJ1ZmZlcnNbdGhpcy5kYXRhLnV1aWRdJiYodC5pbnRlcmxlYXZlZEJ1ZmZlcnNbdGhpcy5kYXRhLnV1aWRdPXRoaXMuZGF0YS50b0pTT04odCkpLHtpc0ludGVybGVhdmVkQnVmZmVyQXR0cmlidXRlOiEwLGl0ZW1TaXplOnRoaXMuaXRlbVNpemUsZGF0YTp0aGlzLmRhdGEudXVpZCxvZmZzZXQ6dGhpcy5vZmZzZXQsbm9ybWFsaXplZDp0aGlzLm5vcm1hbGl6ZWR9fX0pLChXb3QucHJvdG90eXBlPU9iamVjdC5jcmVhdGUoeW50LnByb3RvdHlwZSkpLmNvbnN0cnVjdG9yPVdvdCxXb3QucHJvdG90eXBlLmlzU3ByaXRlTWF0ZXJpYWw9ITAsV290LnByb3RvdHlwZS5jb3B5PWZ1bmN0aW9uKHQpe3JldHVybiB5bnQucHJvdG90eXBlLmNvcHkuY2FsbCh0aGlzLHQpLHRoaXMuY29sb3IuY29weSh0LmNvbG9yKSx0aGlzLm1hcD10Lm1hcCx0aGlzLmFscGhhTWFwPXQuYWxwaGFNYXAsdGhpcy5yb3RhdGlvbj10LnJvdGF0aW9uLHRoaXMuc2l6ZUF0dGVudWF0aW9uPXQuc2l6ZUF0dGVudWF0aW9uLHRoaXN9O2NvbnN0IFlvdD1uZXcgdHR0LHFvdD1uZXcgdHR0LFpvdD1uZXcgdHR0LFhvdD1uZXcgVzksSm90PW5ldyBXOSxRb3Q9bmV3IFN0dCxLb3Q9bmV3IHR0dCwkb3Q9bmV3IHR0dCx0cnQ9bmV3IHR0dCxucnQ9bmV3IFc5LGVydD1uZXcgVzksYXJ0PW5ldyBXOTtmdW5jdGlvbiBvcnQodCl7aWYoJHR0LmNhbGwodGhpcyksdGhpcy50eXBlPSJTcHJpdGUiLHZvaWQgMD09PUdvdCl7R290PW5ldyBYbnQ7Y29uc3QgdD1uZXcgVm90KG5ldyBGbG9hdDMyQXJyYXkoWy0uNSwtLjUsMCwwLDAsLjUsLS41LDAsMSwwLC41LC41LDAsMSwxLC0uNSwuNSwwLDAsMV0pLDUpO0dvdC5zZXRJbmRleChbMCwxLDIsMCwyLDNdKSxHb3Quc2V0QXR0cmlidXRlKCJwb3NpdGlvbiIsbmV3IFVvdCh0LDMsMCwhMSkpLEdvdC5zZXRBdHRyaWJ1dGUoInV2IixuZXcgVW90KHQsMiwzLCExKSl9dGhpcy5nZW9tZXRyeT1Hb3QsdGhpcy5tYXRlcmlhbD12b2lkIDAhPT10P3Q6bmV3IFdvdCx0aGlzLmNlbnRlcj1uZXcgVzkoLjUsLjUpfWZ1bmN0aW9uIHJydCh0LG4sZSxhLG8scil7WG90LnN1YlZlY3RvcnModCxlKS5hZGRTY2FsYXIoLjUpLm11bHRpcGx5KGEpLHZvaWQgMCE9PW8/KEpvdC54PXIqWG90LngtbypYb3QueSxKb3QueT1vKlhvdC54K3IqWG90LnkpOkpvdC5jb3B5KFhvdCksdC5jb3B5KG4pLHQueCs9Sm90LngsdC55Kz1Kb3QueSx0LmFwcGx5TWF0cml4NChRb3QpfW9ydC5wcm90b3R5cGU9T2JqZWN0LmFzc2lnbihPYmplY3QuY3JlYXRlKCR0dC5wcm90b3R5cGUpLHtjb25zdHJ1Y3RvcjpvcnQsaXNTcHJpdGU6ITAscmF5Y2FzdDpmdW5jdGlvbih0LG4pe251bGw9PT10LmNhbWVyYSYmY29uc29sZS5lcnJvcignVEhSRUUuU3ByaXRlOiAiUmF5Y2FzdGVyLmNhbWVyYSIgbmVlZHMgdG8gYmUgc2V0IGluIG9yZGVyIHRvIHJheWNhc3QgYWdhaW5zdCBzcHJpdGVzLicpLHFvdC5zZXRGcm9tTWF0cml4U2NhbGUodGhpcy5tYXRyaXhXb3JsZCksUW90LmNvcHkodC5jYW1lcmEubWF0cml4V29ybGQpLHRoaXMubW9kZWxWaWV3TWF0cml4Lm11bHRpcGx5TWF0cmljZXModC5jYW1lcmEubWF0cml4V29ybGRJbnZlcnNlLHRoaXMubWF0cml4V29ybGQpLFpvdC5zZXRGcm9tTWF0cml4UG9zaXRpb24odGhpcy5tb2RlbFZpZXdNYXRyaXgpLHQuY2FtZXJhLmlzUGVyc3BlY3RpdmVDYW1lcmEmJiExPT09dGhpcy5tYXRlcmlhbC5zaXplQXR0ZW51YXRpb24mJnFvdC5tdWx0aXBseVNjYWxhcigtWm90LnopO2NvbnN0IGU9dGhpcy5tYXRlcmlhbC5yb3RhdGlvbjtsZXQgYSxvOzAhPT1lJiYobz1NYXRoLmNvcyhlKSxhPU1hdGguc2luKGUpKTtjb25zdCByPXRoaXMuY2VudGVyO3JydChLb3Quc2V0KC0uNSwtLjUsMCksWm90LHIscW90LGEsbykscnJ0KCRvdC5zZXQoLjUsLS41LDApLFpvdCxyLHFvdCxhLG8pLHJydCh0cnQuc2V0KC41LC41LDApLFpvdCxyLHFvdCxhLG8pLG5ydC5zZXQoMCwwKSxlcnQuc2V0KDEsMCksYXJ0LnNldCgxLDEpO2xldCBpPXQucmF5LmludGVyc2VjdFRyaWFuZ2xlKEtvdCwkb3QsdHJ0LCExLFlvdCk7aWYobnVsbD09PWkmJihycnQoJG90LnNldCgtLjUsLjUsMCksWm90LHIscW90LGEsbyksZXJ0LnNldCgwLDEpLGk9dC5yYXkuaW50ZXJzZWN0VHJpYW5nbGUoS290LHRydCwkb3QsITEsWW90KSxudWxsPT09aSkpcmV0dXJuO2NvbnN0IGM9dC5yYXkub3JpZ2luLmRpc3RhbmNlVG8oWW90KTtjPHQubmVhcnx8Yz50LmZhcnx8bi5wdXNoKHtkaXN0YW5jZTpjLHBvaW50OllvdC5jbG9uZSgpLHV2OmJudC5nZXRVVihZb3QsS290LCRvdCx0cnQsbnJ0LGVydCxhcnQsbmV3IFc5KSxmYWNlOm51bGwsb2JqZWN0OnRoaXN9KX0sY29weTpmdW5jdGlvbih0KXtyZXR1cm4gJHR0LnByb3RvdHlwZS5jb3B5LmNhbGwodGhpcyx0KSx2b2lkIDAhPT10LmNlbnRlciYmdGhpcy5jZW50ZXIuY29weSh0LmNlbnRlciksdGhpcy5tYXRlcmlhbD10Lm1hdGVyaWFsLHRoaXN9fSk7Y29uc3QgaXJ0PW5ldyB0dHQsY3J0PW5ldyB0dHQ7ZnVuY3Rpb24gc3J0KCl7JHR0LmNhbGwodGhpcyksdGhpcy5fY3VycmVudExldmVsPTAsdGhpcy50eXBlPSJMT0QiLE9iamVjdC5kZWZpbmVQcm9wZXJ0aWVzKHRoaXMse2xldmVsczp7ZW51bWVyYWJsZTohMCx2YWx1ZTpbXX19KSx0aGlzLmF1dG9VcGRhdGU9ITB9c3J0LnByb3RvdHlwZT1PYmplY3QuYXNzaWduKE9iamVjdC5jcmVhdGUoJHR0LnByb3RvdHlwZSkse2NvbnN0cnVjdG9yOnNydCxpc0xPRDohMCxjb3B5OmZ1bmN0aW9uKHQpeyR0dC5wcm90b3R5cGUuY29weS5jYWxsKHRoaXMsdCwhMSk7Y29uc3Qgbj10LmxldmVscztmb3IobGV0IHQ9MCxlPW4ubGVuZ3RoO3Q8ZTt0Kyspe2NvbnN0IGU9blt0XTt0aGlzLmFkZExldmVsKGUub2JqZWN0LmNsb25lKCksZS5kaXN0YW5jZSl9cmV0dXJuIHRoaXMuYXV0b1VwZGF0ZT10LmF1dG9VcGRhdGUsdGhpc30sYWRkTGV2ZWw6ZnVuY3Rpb24odCxuPTApe249TWF0aC5hYnMobik7Y29uc3QgZT10aGlzLmxldmVscztsZXQgYTtmb3IoYT0wO2E8ZS5sZW5ndGgmJiEobjxlW2FdLmRpc3RhbmNlKTthKyspO3JldHVybiBlLnNwbGljZShhLDAse2Rpc3RhbmNlOm4sb2JqZWN0OnR9KSx0aGlzLmFkZCh0KSx0aGlzfSxnZXRDdXJyZW50TGV2ZWw6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5fY3VycmVudExldmVsfSxnZXRPYmplY3RGb3JEaXN0YW5jZTpmdW5jdGlvbih0KXtjb25zdCBuPXRoaXMubGV2ZWxzO2lmKG4ubGVuZ3RoPjApe2xldCBlLGE7Zm9yKGU9MSxhPW4ubGVuZ3RoO2U8YSYmISh0PG5bZV0uZGlzdGFuY2UpO2UrKyk7cmV0dXJuIG5bZS0xXS5vYmplY3R9cmV0dXJuIG51bGx9LHJheWNhc3Q6ZnVuY3Rpb24odCxuKXtpZih0aGlzLmxldmVscy5sZW5ndGg+MCl7aXJ0LnNldEZyb21NYXRyaXhQb3NpdGlvbih0aGlzLm1hdHJpeFdvcmxkKTtjb25zdCBlPXQucmF5Lm9yaWdpbi5kaXN0YW5jZVRvKGlydCk7dGhpcy5nZXRPYmplY3RGb3JEaXN0YW5jZShlKS5yYXljYXN0KHQsbil9fSx1cGRhdGU6ZnVuY3Rpb24odCl7Y29uc3Qgbj10aGlzLmxldmVscztpZihuLmxlbmd0aD4xKXtpcnQuc2V0RnJvbU1hdHJpeFBvc2l0aW9uKHQubWF0cml4V29ybGQpLGNydC5zZXRGcm9tTWF0cml4UG9zaXRpb24odGhpcy5tYXRyaXhXb3JsZCk7Y29uc3QgZT1pcnQuZGlzdGFuY2VUbyhjcnQpL3Quem9vbTtsZXQgYSxvO2ZvcihuWzBdLm9iamVjdC52aXNpYmxlPSEwLGE9MSxvPW4ubGVuZ3RoO2E8byYmZT49blthXS5kaXN0YW5jZTthKyspblthLTFdLm9iamVjdC52aXNpYmxlPSExLG5bYV0ub2JqZWN0LnZpc2libGU9ITA7Zm9yKHRoaXMuX2N1cnJlbnRMZXZlbD1hLTE7YTxvO2ErKyluW2FdLm9iamVjdC52aXNpYmxlPSExfX0sdG9KU09OOmZ1bmN0aW9uKHQpe2NvbnN0IG49JHR0LnByb3RvdHlwZS50b0pTT04uY2FsbCh0aGlzLHQpOyExPT09dGhpcy5hdXRvVXBkYXRlJiYobi5vYmplY3QuYXV0b1VwZGF0ZT0hMSksbi5vYmplY3QubGV2ZWxzPVtdO2NvbnN0IGU9dGhpcy5sZXZlbHM7Zm9yKGxldCB0PTAsYT1lLmxlbmd0aDt0PGE7dCsrKXtjb25zdCBhPWVbdF07bi5vYmplY3QubGV2ZWxzLnB1c2goe29iamVjdDphLm9iamVjdC51dWlkLGRpc3RhbmNlOmEuZGlzdGFuY2V9KX1yZXR1cm4gbn19KTtjb25zdCBscnQ9bmV3IHR0dCxtcnQ9bmV3IFE5LGRydD1uZXcgUTksZ3J0PW5ldyB0dHQscHJ0PW5ldyBTdHQ7ZnVuY3Rpb24gYnJ0KHQsbil7dCYmdC5pc0dlb21ldHJ5JiZjb25zb2xlLmVycm9yKCJUSFJFRS5Ta2lubmVkTWVzaCBubyBsb25nZXIgc3VwcG9ydHMgVEhSRUUuR2VvbWV0cnkuIFVzZSBUSFJFRS5CdWZmZXJHZW9tZXRyeSBpbnN0ZWFkLiIpLGJldC5jYWxsKHRoaXMsdCxuKSx0aGlzLnR5cGU9IlNraW5uZWRNZXNoIix0aGlzLmJpbmRNb2RlPSJhdHRhY2hlZCIsdGhpcy5iaW5kTWF0cml4PW5ldyBTdHQsdGhpcy5iaW5kTWF0cml4SW52ZXJzZT1uZXcgU3R0fWZ1bmN0aW9uIHVydCgpeyR0dC5jYWxsKHRoaXMpLHRoaXMudHlwZT0iQm9uZSJ9YnJ0LnByb3RvdHlwZT1PYmplY3QuYXNzaWduKE9iamVjdC5jcmVhdGUoYmV0LnByb3RvdHlwZSkse2NvbnN0cnVjdG9yOmJydCxpc1NraW5uZWRNZXNoOiEwLGNvcHk6ZnVuY3Rpb24odCl7cmV0dXJuIGJldC5wcm90b3R5cGUuY29weS5jYWxsKHRoaXMsdCksdGhpcy5iaW5kTW9kZT10LmJpbmRNb2RlLHRoaXMuYmluZE1hdHJpeC5jb3B5KHQuYmluZE1hdHJpeCksdGhpcy5iaW5kTWF0cml4SW52ZXJzZS5jb3B5KHQuYmluZE1hdHJpeEludmVyc2UpLHRoaXMuc2tlbGV0b249dC5za2VsZXRvbix0aGlzfSxiaW5kOmZ1bmN0aW9uKHQsbil7dGhpcy5za2VsZXRvbj10LHZvaWQgMD09PW4mJih0aGlzLnVwZGF0ZU1hdHJpeFdvcmxkKCEwKSx0aGlzLnNrZWxldG9uLmNhbGN1bGF0ZUludmVyc2VzKCksbj10aGlzLm1hdHJpeFdvcmxkKSx0aGlzLmJpbmRNYXRyaXguY29weShuKSx0aGlzLmJpbmRNYXRyaXhJbnZlcnNlLmNvcHkobikuaW52ZXJ0KCl9LHBvc2U6ZnVuY3Rpb24oKXt0aGlzLnNrZWxldG9uLnBvc2UoKX0sbm9ybWFsaXplU2tpbldlaWdodHM6ZnVuY3Rpb24oKXtjb25zdCB0PW5ldyBROSxuPXRoaXMuZ2VvbWV0cnkuYXR0cmlidXRlcy5za2luV2VpZ2h0O2ZvcihsZXQgZT0wLGE9bi5jb3VudDtlPGE7ZSsrKXt0Lng9bi5nZXRYKGUpLHQueT1uLmdldFkoZSksdC56PW4uZ2V0WihlKSx0Lnc9bi5nZXRXKGUpO2NvbnN0IGE9MS90Lm1hbmhhdHRhbkxlbmd0aCgpO2EhPT0xLzA/dC5tdWx0aXBseVNjYWxhcihhKTp0LnNldCgxLDAsMCwwKSxuLnNldFhZWlcoZSx0LngsdC55LHQueix0LncpfX0sdXBkYXRlTWF0cml4V29ybGQ6ZnVuY3Rpb24odCl7YmV0LnByb3RvdHlwZS51cGRhdGVNYXRyaXhXb3JsZC5jYWxsKHRoaXMsdCksImF0dGFjaGVkIj09PXRoaXMuYmluZE1vZGU/dGhpcy5iaW5kTWF0cml4SW52ZXJzZS5jb3B5KHRoaXMubWF0cml4V29ybGQpLmludmVydCgpOiJkZXRhY2hlZCI9PT10aGlzLmJpbmRNb2RlP3RoaXMuYmluZE1hdHJpeEludmVyc2UuY29weSh0aGlzLmJpbmRNYXRyaXgpLmludmVydCgpOmNvbnNvbGUud2FybigiVEhSRUUuU2tpbm5lZE1lc2g6IFVucmVjb2duaXplZCBiaW5kTW9kZTogIit0aGlzLmJpbmRNb2RlKX0sYm9uZVRyYW5zZm9ybTpmdW5jdGlvbih0LG4pe2NvbnN0IGU9dGhpcy5za2VsZXRvbixhPXRoaXMuZ2VvbWV0cnk7bXJ0LmZyb21CdWZmZXJBdHRyaWJ1dGUoYS5hdHRyaWJ1dGVzLnNraW5JbmRleCx0KSxkcnQuZnJvbUJ1ZmZlckF0dHJpYnV0ZShhLmF0dHJpYnV0ZXMuc2tpbldlaWdodCx0KSxscnQuZnJvbUJ1ZmZlckF0dHJpYnV0ZShhLmF0dHJpYnV0ZXMucG9zaXRpb24sdCkuYXBwbHlNYXRyaXg0KHRoaXMuYmluZE1hdHJpeCksbi5zZXQoMCwwLDApO2ZvcihsZXQgdD0wO3Q8NDt0Kyspe2NvbnN0IGE9ZHJ0LmdldENvbXBvbmVudCh0KTtpZigwIT09YSl7Y29uc3Qgbz1tcnQuZ2V0Q29tcG9uZW50KHQpO3BydC5tdWx0aXBseU1hdHJpY2VzKGUuYm9uZXNbb10ubWF0cml4V29ybGQsZS5ib25lSW52ZXJzZXNbb10pLG4uYWRkU2NhbGVkVmVjdG9yKGdydC5jb3B5KGxydCkuYXBwbHlNYXRyaXg0KHBydCksYSl9fXJldHVybiBuLmFwcGx5TWF0cml4NCh0aGlzLmJpbmRNYXRyaXhJbnZlcnNlKX19KSx1cnQucHJvdG90eXBlPU9iamVjdC5hc3NpZ24oT2JqZWN0LmNyZWF0ZSgkdHQucHJvdG90eXBlKSx7Y29uc3RydWN0b3I6dXJ0LGlzQm9uZTohMH0pO2NvbnN0IGZydD1uZXcgU3R0LGhydD1uZXcgU3R0O2Z1bmN0aW9uIF9ydCh0PVtdLG49W10pe3RoaXMudXVpZD1VOS5nZW5lcmF0ZVVVSUQoKSx0aGlzLmJvbmVzPXQuc2xpY2UoMCksdGhpcy5ib25lSW52ZXJzZXM9bix0aGlzLmJvbmVNYXRyaWNlcz1udWxsLHRoaXMuYm9uZVRleHR1cmU9bnVsbCx0aGlzLmJvbmVUZXh0dXJlU2l6ZT0wLHRoaXMuZnJhbWU9LTEsdGhpcy5pbml0KCl9T2JqZWN0LmFzc2lnbihfcnQucHJvdG90eXBlLHtpbml0OmZ1bmN0aW9uKCl7Y29uc3QgdD10aGlzLmJvbmVzLG49dGhpcy5ib25lSW52ZXJzZXM7aWYodGhpcy5ib25lTWF0cmljZXM9bmV3IEZsb2F0MzJBcnJheSgxNip0Lmxlbmd0aCksMD09PW4ubGVuZ3RoKXRoaXMuY2FsY3VsYXRlSW52ZXJzZXMoKTtlbHNlIGlmKHQubGVuZ3RoIT09bi5sZW5ndGgpe2NvbnNvbGUud2FybigiVEhSRUUuU2tlbGV0b246IE51bWJlciBvZiBpbnZlcnNlIGJvbmUgbWF0cmljZXMgZG9lcyBub3QgbWF0Y2ggYW1vdW50IG9mIGJvbmVzLiIpLHRoaXMuYm9uZUludmVyc2VzPVtdO2ZvcihsZXQgdD0wLG49dGhpcy5ib25lcy5sZW5ndGg7dDxuO3QrKyl0aGlzLmJvbmVJbnZlcnNlcy5wdXNoKG5ldyBTdHQpfX0sY2FsY3VsYXRlSW52ZXJzZXM6ZnVuY3Rpb24oKXt0aGlzLmJvbmVJbnZlcnNlcy5sZW5ndGg9MDtmb3IobGV0IHQ9MCxuPXRoaXMuYm9uZXMubGVuZ3RoO3Q8bjt0Kyspe2NvbnN0IG49bmV3IFN0dDt0aGlzLmJvbmVzW3RdJiZuLmNvcHkodGhpcy5ib25lc1t0XS5tYXRyaXhXb3JsZCkuaW52ZXJ0KCksdGhpcy5ib25lSW52ZXJzZXMucHVzaChuKX19LHBvc2U6ZnVuY3Rpb24oKXtmb3IobGV0IHQ9MCxuPXRoaXMuYm9uZXMubGVuZ3RoO3Q8bjt0Kyspe2NvbnN0IG49dGhpcy5ib25lc1t0XTtuJiZuLm1hdHJpeFdvcmxkLmNvcHkodGhpcy5ib25lSW52ZXJzZXNbdF0pLmludmVydCgpfWZvcihsZXQgdD0wLG49dGhpcy5ib25lcy5sZW5ndGg7dDxuO3QrKyl7Y29uc3Qgbj10aGlzLmJvbmVzW3RdO24mJihuLnBhcmVudCYmbi5wYXJlbnQuaXNCb25lPyhuLm1hdHJpeC5jb3B5KG4ucGFyZW50Lm1hdHJpeFdvcmxkKS5pbnZlcnQoKSxuLm1hdHJpeC5tdWx0aXBseShuLm1hdHJpeFdvcmxkKSk6bi5tYXRyaXguY29weShuLm1hdHJpeFdvcmxkKSxuLm1hdHJpeC5kZWNvbXBvc2Uobi5wb3NpdGlvbixuLnF1YXRlcm5pb24sbi5zY2FsZSkpfX0sdXBkYXRlOmZ1bmN0aW9uKCl7Y29uc3QgdD10aGlzLmJvbmVzLG49dGhpcy5ib25lSW52ZXJzZXMsZT10aGlzLmJvbmVNYXRyaWNlcyxhPXRoaXMuYm9uZVRleHR1cmU7Zm9yKGxldCBhPTAsbz10Lmxlbmd0aDthPG87YSsrKWZydC5tdWx0aXBseU1hdHJpY2VzKHRbYV0/dFthXS5tYXRyaXhXb3JsZDpocnQsblthXSksZnJ0LnRvQXJyYXkoZSwxNiphKTtudWxsIT09YSYmKGEubmVlZHNVcGRhdGU9ITApfSxjbG9uZTpmdW5jdGlvbigpe3JldHVybiBuZXcgX3J0KHRoaXMuYm9uZXMsdGhpcy5ib25lSW52ZXJzZXMpfSxnZXRCb25lQnlOYW1lOmZ1bmN0aW9uKHQpe2ZvcihsZXQgbj0wLGU9dGhpcy5ib25lcy5sZW5ndGg7bjxlO24rKyl7Y29uc3QgZT10aGlzLmJvbmVzW25dO2lmKGUubmFtZT09PXQpcmV0dXJuIGV9fSxkaXNwb3NlOmZ1bmN0aW9uKCl7bnVsbCE9PXRoaXMuYm9uZVRleHR1cmUmJih0aGlzLmJvbmVUZXh0dXJlLmRpc3Bvc2UoKSx0aGlzLmJvbmVUZXh0dXJlPW51bGwpfSxmcm9tSlNPTjpmdW5jdGlvbih0LG4pe3RoaXMudXVpZD10LnV1aWQ7Zm9yKGxldCBlPTAsYT10LmJvbmVzLmxlbmd0aDtlPGE7ZSsrKXtjb25zdCBhPXQuYm9uZXNbZV07bGV0IG89blthXTt2b2lkIDA9PT1vJiYoY29uc29sZS53YXJuKCJUSFJFRS5Ta2VsZXRvbjogTm8gYm9uZSBmb3VuZCB3aXRoIFVVSUQ6IixhKSxvPW5ldyB1cnQpLHRoaXMuYm9uZXMucHVzaChvKSx0aGlzLmJvbmVJbnZlcnNlcy5wdXNoKChuZXcgU3R0KS5mcm9tQXJyYXkodC5ib25lSW52ZXJzZXNbZV0pKX1yZXR1cm4gdGhpcy5pbml0KCksdGhpc30sdG9KU09OOmZ1bmN0aW9uKCl7Y29uc3QgdD17bWV0YWRhdGE6e3ZlcnNpb246NC41LHR5cGU6IlNrZWxldG9uIixnZW5lcmF0b3I6IlNrZWxldG9uLnRvSlNPTiJ9LGJvbmVzOltdLGJvbmVJbnZlcnNlczpbXX07dC51dWlkPXRoaXMudXVpZDtjb25zdCBuPXRoaXMuYm9uZXMsZT10aGlzLmJvbmVJbnZlcnNlcztmb3IobGV0IGE9MCxvPW4ubGVuZ3RoO2E8bzthKyspdC5ib25lcy5wdXNoKG5bYV0udXVpZCksdC5ib25lSW52ZXJzZXMucHVzaChlW2FdLnRvQXJyYXkoKSk7cmV0dXJuIHR9fSk7Y29uc3QgQ3J0PW5ldyBTdHQsTXJ0PW5ldyBTdHQsT3J0PVtdLFBydD1uZXcgYmV0O2Z1bmN0aW9uIHhydCh0LG4sZSl7YmV0LmNhbGwodGhpcyx0LG4pLHRoaXMuaW5zdGFuY2VNYXRyaXg9bmV3IFNudChuZXcgRmxvYXQzMkFycmF5KDE2KmUpLDE2KSx0aGlzLmluc3RhbmNlQ29sb3I9bnVsbCx0aGlzLmNvdW50PWUsdGhpcy5mcnVzdHVtQ3VsbGVkPSExfWZ1bmN0aW9uIHlydCh0KXt5bnQuY2FsbCh0aGlzKSx0aGlzLnR5cGU9IkxpbmVCYXNpY01hdGVyaWFsIix0aGlzLmNvbG9yPW5ldyBPbnQoMTY3NzcyMTUpLHRoaXMubGluZXdpZHRoPTEsdGhpcy5saW5lY2FwPSJyb3VuZCIsdGhpcy5saW5lam9pbj0icm91bmQiLHRoaXMubW9ycGhUYXJnZXRzPSExLHRoaXMuc2V0VmFsdWVzKHQpfXhydC5wcm90b3R5cGU9T2JqZWN0LmFzc2lnbihPYmplY3QuY3JlYXRlKGJldC5wcm90b3R5cGUpLHtjb25zdHJ1Y3Rvcjp4cnQsaXNJbnN0YW5jZWRNZXNoOiEwLGNvcHk6ZnVuY3Rpb24odCl7cmV0dXJuIGJldC5wcm90b3R5cGUuY29weS5jYWxsKHRoaXMsdCksdGhpcy5pbnN0YW5jZU1hdHJpeC5jb3B5KHQuaW5zdGFuY2VNYXRyaXgpLG51bGwhPT10Lmluc3RhbmNlQ29sb3ImJih0aGlzLmluc3RhbmNlQ29sb3I9dC5pbnN0YW5jZUNvbG9yLmNsb25lKCkpLHRoaXMuY291bnQ9dC5jb3VudCx0aGlzfSxnZXRDb2xvckF0OmZ1bmN0aW9uKHQsbil7bi5mcm9tQXJyYXkodGhpcy5pbnN0YW5jZUNvbG9yLmFycmF5LDMqdCl9LGdldE1hdHJpeEF0OmZ1bmN0aW9uKHQsbil7bi5mcm9tQXJyYXkodGhpcy5pbnN0YW5jZU1hdHJpeC5hcnJheSwxNip0KX0scmF5Y2FzdDpmdW5jdGlvbih0LG4pe2NvbnN0IGU9dGhpcy5tYXRyaXhXb3JsZCxhPXRoaXMuY291bnQ7aWYoUHJ0Lmdlb21ldHJ5PXRoaXMuZ2VvbWV0cnksUHJ0Lm1hdGVyaWFsPXRoaXMubWF0ZXJpYWwsdm9pZCAwIT09UHJ0Lm1hdGVyaWFsKWZvcihsZXQgbz0wO288YTtvKyspe3RoaXMuZ2V0TWF0cml4QXQobyxDcnQpLE1ydC5tdWx0aXBseU1hdHJpY2VzKGUsQ3J0KSxQcnQubWF0cml4V29ybGQ9TXJ0LFBydC5yYXljYXN0KHQsT3J0KTtmb3IobGV0IHQ9MCxlPU9ydC5sZW5ndGg7dDxlO3QrKyl7Y29uc3QgZT1PcnRbdF07ZS5pbnN0YW5jZUlkPW8sZS5vYmplY3Q9dGhpcyxuLnB1c2goZSl9T3J0Lmxlbmd0aD0wfX0sc2V0Q29sb3JBdDpmdW5jdGlvbih0LG4pe251bGw9PT10aGlzLmluc3RhbmNlQ29sb3ImJih0aGlzLmluc3RhbmNlQ29sb3I9bmV3IFNudChuZXcgRmxvYXQzMkFycmF5KDMqdGhpcy5jb3VudCksMykpLG4udG9BcnJheSh0aGlzLmluc3RhbmNlQ29sb3IuYXJyYXksMyp0KX0sc2V0TWF0cml4QXQ6ZnVuY3Rpb24odCxuKXtuLnRvQXJyYXkodGhpcy5pbnN0YW5jZU1hdHJpeC5hcnJheSwxNip0KX0sdXBkYXRlTW9ycGhUYXJnZXRzOmZ1bmN0aW9uKCl7fSxkaXNwb3NlOmZ1bmN0aW9uKCl7dGhpcy5kaXNwYXRjaEV2ZW50KHt0eXBlOiJkaXNwb3NlIn0pfX0pLCh5cnQucHJvdG90eXBlPU9iamVjdC5jcmVhdGUoeW50LnByb3RvdHlwZSkpLmNvbnN0cnVjdG9yPXlydCx5cnQucHJvdG90eXBlLmlzTGluZUJhc2ljTWF0ZXJpYWw9ITAseXJ0LnByb3RvdHlwZS5jb3B5PWZ1bmN0aW9uKHQpe3JldHVybiB5bnQucHJvdG90eXBlLmNvcHkuY2FsbCh0aGlzLHQpLHRoaXMuY29sb3IuY29weSh0LmNvbG9yKSx0aGlzLmxpbmV3aWR0aD10LmxpbmV3aWR0aCx0aGlzLmxpbmVjYXA9dC5saW5lY2FwLHRoaXMubGluZWpvaW49dC5saW5lam9pbix0aGlzLm1vcnBoVGFyZ2V0cz10Lm1vcnBoVGFyZ2V0cyx0aGlzfTtjb25zdCBrcnQ9bmV3IHR0dCx2cnQ9bmV3IHR0dCx3cnQ9bmV3IFN0dCxTcnQ9bmV3IHd0dCxFcnQ9bmV3IEN0dDtmdW5jdGlvbiBBcnQodD1uZXcgWG50LG49bmV3IHlydCl7JHR0LmNhbGwodGhpcyksdGhpcy50eXBlPSJMaW5lIix0aGlzLmdlb21ldHJ5PXQsdGhpcy5tYXRlcmlhbD1uLHRoaXMudXBkYXRlTW9ycGhUYXJnZXRzKCl9QXJ0LnByb3RvdHlwZT1PYmplY3QuYXNzaWduKE9iamVjdC5jcmVhdGUoJHR0LnByb3RvdHlwZSkse2NvbnN0cnVjdG9yOkFydCxpc0xpbmU6ITAsY29weTpmdW5jdGlvbih0KXtyZXR1cm4gJHR0LnByb3RvdHlwZS5jb3B5LmNhbGwodGhpcyx0KSx0aGlzLm1hdGVyaWFsPXQubWF0ZXJpYWwsdGhpcy5nZW9tZXRyeT10Lmdlb21ldHJ5LHRoaXN9LGNvbXB1dGVMaW5lRGlzdGFuY2VzOmZ1bmN0aW9uKCl7Y29uc3QgdD10aGlzLmdlb21ldHJ5O2lmKHQuaXNCdWZmZXJHZW9tZXRyeSlpZihudWxsPT09dC5pbmRleCl7Y29uc3Qgbj10LmF0dHJpYnV0ZXMucG9zaXRpb24sZT1bMF07Zm9yKGxldCB0PTEsYT1uLmNvdW50O3Q8YTt0Kyspa3J0LmZyb21CdWZmZXJBdHRyaWJ1dGUobix0LTEpLHZydC5mcm9tQnVmZmVyQXR0cmlidXRlKG4sdCksZVt0XT1lW3QtMV0sZVt0XSs9a3J0LmRpc3RhbmNlVG8odnJ0KTt0LnNldEF0dHJpYnV0ZSgibGluZURpc3RhbmNlIixuZXcgRm50KGUsMSkpfWVsc2UgY29uc29sZS53YXJuKCJUSFJFRS5MaW5lLmNvbXB1dGVMaW5lRGlzdGFuY2VzKCk6IENvbXB1dGF0aW9uIG9ubHkgcG9zc2libGUgd2l0aCBub24taW5kZXhlZCBCdWZmZXJHZW9tZXRyeS4iKTtlbHNlIHQuaXNHZW9tZXRyeSYmY29uc29sZS5lcnJvcigiVEhSRUUuTGluZS5jb21wdXRlTGluZURpc3RhbmNlcygpIG5vIGxvbmdlciBzdXBwb3J0cyBUSFJFRS5HZW9tZXRyeS4gVXNlIFRIUkVFLkJ1ZmZlckdlb21ldHJ5IGluc3RlYWQuIik7cmV0dXJuIHRoaXN9LHJheWNhc3Q6ZnVuY3Rpb24odCxuKXtjb25zdCBlPXRoaXMuZ2VvbWV0cnksYT10aGlzLm1hdHJpeFdvcmxkLG89dC5wYXJhbXMuTGluZS50aHJlc2hvbGQ7aWYobnVsbD09PWUuYm91bmRpbmdTcGhlcmUmJmUuY29tcHV0ZUJvdW5kaW5nU3BoZXJlKCksRXJ0LmNvcHkoZS5ib3VuZGluZ1NwaGVyZSksRXJ0LmFwcGx5TWF0cml4NChhKSxFcnQucmFkaXVzKz1vLCExPT09dC5yYXkuaW50ZXJzZWN0c1NwaGVyZShFcnQpKXJldHVybjt3cnQuY29weShhKS5pbnZlcnQoKSxTcnQuY29weSh0LnJheSkuYXBwbHlNYXRyaXg0KHdydCk7Y29uc3Qgcj1vLygodGhpcy5zY2FsZS54K3RoaXMuc2NhbGUueSt0aGlzLnNjYWxlLnopLzMpLGk9cipyLGM9bmV3IHR0dCxzPW5ldyB0dHQsbD1uZXcgdHR0LG09bmV3IHR0dCxkPXRoaXMuaXNMaW5lU2VnbWVudHM/MjoxO2lmKGUuaXNCdWZmZXJHZW9tZXRyeSl7Y29uc3QgYT1lLmluZGV4LG89ZS5hdHRyaWJ1dGVzLnBvc2l0aW9uO2lmKG51bGwhPT1hKXtjb25zdCBlPWEuYXJyYXk7Zm9yKGxldCBhPTAscj1lLmxlbmd0aC0xO2E8cjthKz1kKXtjb25zdCByPWVbYSsxXTtpZihjLmZyb21CdWZmZXJBdHRyaWJ1dGUobyxlW2FdKSxzLmZyb21CdWZmZXJBdHRyaWJ1dGUobyxyKSxTcnQuZGlzdGFuY2VTcVRvU2VnbWVudChjLHMsbSxsKT5pKWNvbnRpbnVlO20uYXBwbHlNYXRyaXg0KHRoaXMubWF0cml4V29ybGQpO2NvbnN0IGQ9dC5yYXkub3JpZ2luLmRpc3RhbmNlVG8obSk7ZDx0Lm5lYXJ8fGQ+dC5mYXJ8fG4ucHVzaCh7ZGlzdGFuY2U6ZCxwb2ludDpsLmNsb25lKCkuYXBwbHlNYXRyaXg0KHRoaXMubWF0cml4V29ybGQpLGluZGV4OmEsZmFjZTpudWxsLGZhY2VJbmRleDpudWxsLG9iamVjdDp0aGlzfSl9fWVsc2UgZm9yKGxldCBlPTAsYT1vLmNvdW50LTE7ZTxhO2UrPWQpe2lmKGMuZnJvbUJ1ZmZlckF0dHJpYnV0ZShvLGUpLHMuZnJvbUJ1ZmZlckF0dHJpYnV0ZShvLGUrMSksU3J0LmRpc3RhbmNlU3FUb1NlZ21lbnQoYyxzLG0sbCk+aSljb250aW51ZTttLmFwcGx5TWF0cml4NCh0aGlzLm1hdHJpeFdvcmxkKTtjb25zdCBhPXQucmF5Lm9yaWdpbi5kaXN0YW5jZVRvKG0pO2E8dC5uZWFyfHxhPnQuZmFyfHxuLnB1c2goe2Rpc3RhbmNlOmEscG9pbnQ6bC5jbG9uZSgpLmFwcGx5TWF0cml4NCh0aGlzLm1hdHJpeFdvcmxkKSxpbmRleDplLGZhY2U6bnVsbCxmYWNlSW5kZXg6bnVsbCxvYmplY3Q6dGhpc30pfX1lbHNlIGUuaXNHZW9tZXRyeSYmY29uc29sZS5lcnJvcigiVEhSRUUuTGluZS5yYXljYXN0KCkgbm8gbG9uZ2VyIHN1cHBvcnRzIFRIUkVFLkdlb21ldHJ5LiBVc2UgVEhSRUUuQnVmZmVyR2VvbWV0cnkgaW5zdGVhZC4iKX0sdXBkYXRlTW9ycGhUYXJnZXRzOmZ1bmN0aW9uKCl7Y29uc3QgdD10aGlzLmdlb21ldHJ5O2lmKHQuaXNCdWZmZXJHZW9tZXRyeSl7Y29uc3Qgbj10Lm1vcnBoQXR0cmlidXRlcyxlPU9iamVjdC5rZXlzKG4pO2lmKGUubGVuZ3RoPjApe2NvbnN0IHQ9bltlWzBdXTtpZih2b2lkIDAhPT10KXt0aGlzLm1vcnBoVGFyZ2V0SW5mbHVlbmNlcz1bXSx0aGlzLm1vcnBoVGFyZ2V0RGljdGlvbmFyeT17fTtmb3IobGV0IG49MCxlPXQubGVuZ3RoO248ZTtuKyspe2NvbnN0IGU9dFtuXS5uYW1lfHxTdHJpbmcobik7dGhpcy5tb3JwaFRhcmdldEluZmx1ZW5jZXMucHVzaCgwKSx0aGlzLm1vcnBoVGFyZ2V0RGljdGlvbmFyeVtlXT1ufX19fWVsc2V7Y29uc3Qgbj10Lm1vcnBoVGFyZ2V0czt2b2lkIDAhPT1uJiZuLmxlbmd0aD4wJiZjb25zb2xlLmVycm9yKCJUSFJFRS5MaW5lLnVwZGF0ZU1vcnBoVGFyZ2V0cygpIGRvZXMgbm90IHN1cHBvcnQgVEhSRUUuR2VvbWV0cnkuIFVzZSBUSFJFRS5CdWZmZXJHZW9tZXRyeSBpbnN0ZWFkLiIpfX19KTtjb25zdCB6cnQ9bmV3IHR0dCxScnQ9bmV3IHR0dDtmdW5jdGlvbiBUcnQodCxuKXtBcnQuY2FsbCh0aGlzLHQsbiksdGhpcy50eXBlPSJMaW5lU2VnbWVudHMifWZ1bmN0aW9uIERydCh0LG4pe0FydC5jYWxsKHRoaXMsdCxuKSx0aGlzLnR5cGU9IkxpbmVMb29wIn1mdW5jdGlvbiBJcnQodCl7eW50LmNhbGwodGhpcyksdGhpcy50eXBlPSJQb2ludHNNYXRlcmlhbCIsdGhpcy5jb2xvcj1uZXcgT250KDE2Nzc3MjE1KSx0aGlzLm1hcD1udWxsLHRoaXMuYWxwaGFNYXA9bnVsbCx0aGlzLnNpemU9MSx0aGlzLnNpemVBdHRlbnVhdGlvbj0hMCx0aGlzLm1vcnBoVGFyZ2V0cz0hMSx0aGlzLnNldFZhbHVlcyh0KX1UcnQucHJvdG90eXBlPU9iamVjdC5hc3NpZ24oT2JqZWN0LmNyZWF0ZShBcnQucHJvdG90eXBlKSx7Y29uc3RydWN0b3I6VHJ0LGlzTGluZVNlZ21lbnRzOiEwLGNvbXB1dGVMaW5lRGlzdGFuY2VzOmZ1bmN0aW9uKCl7Y29uc3QgdD10aGlzLmdlb21ldHJ5O2lmKHQuaXNCdWZmZXJHZW9tZXRyeSlpZihudWxsPT09dC5pbmRleCl7Y29uc3Qgbj10LmF0dHJpYnV0ZXMucG9zaXRpb24sZT1bXTtmb3IobGV0IHQ9MCxhPW4uY291bnQ7dDxhO3QrPTIpenJ0LmZyb21CdWZmZXJBdHRyaWJ1dGUobix0KSxScnQuZnJvbUJ1ZmZlckF0dHJpYnV0ZShuLHQrMSksZVt0XT0wPT09dD8wOmVbdC0xXSxlW3QrMV09ZVt0XSt6cnQuZGlzdGFuY2VUbyhScnQpO3Quc2V0QXR0cmlidXRlKCJsaW5lRGlzdGFuY2UiLG5ldyBGbnQoZSwxKSl9ZWxzZSBjb25zb2xlLndhcm4oIlRIUkVFLkxpbmVTZWdtZW50cy5jb21wdXRlTGluZURpc3RhbmNlcygpOiBDb21wdXRhdGlvbiBvbmx5IHBvc3NpYmxlIHdpdGggbm9uLWluZGV4ZWQgQnVmZmVyR2VvbWV0cnkuIik7ZWxzZSB0LmlzR2VvbWV0cnkmJmNvbnNvbGUuZXJyb3IoIlRIUkVFLkxpbmVTZWdtZW50cy5jb21wdXRlTGluZURpc3RhbmNlcygpIG5vIGxvbmdlciBzdXBwb3J0cyBUSFJFRS5HZW9tZXRyeS4gVXNlIFRIUkVFLkJ1ZmZlckdlb21ldHJ5IGluc3RlYWQuIik7cmV0dXJuIHRoaXN9fSksRHJ0LnByb3RvdHlwZT1PYmplY3QuYXNzaWduKE9iamVjdC5jcmVhdGUoQXJ0LnByb3RvdHlwZSkse2NvbnN0cnVjdG9yOkRydCxpc0xpbmVMb29wOiEwfSksKElydC5wcm90b3R5cGU9T2JqZWN0LmNyZWF0ZSh5bnQucHJvdG90eXBlKSkuY29uc3RydWN0b3I9SXJ0LElydC5wcm90b3R5cGUuaXNQb2ludHNNYXRlcmlhbD0hMCxJcnQucHJvdG90eXBlLmNvcHk9ZnVuY3Rpb24odCl7cmV0dXJuIHludC5wcm90b3R5cGUuY29weS5jYWxsKHRoaXMsdCksdGhpcy5jb2xvci5jb3B5KHQuY29sb3IpLHRoaXMubWFwPXQubWFwLHRoaXMuYWxwaGFNYXA9dC5hbHBoYU1hcCx0aGlzLnNpemU9dC5zaXplLHRoaXMuc2l6ZUF0dGVudWF0aW9uPXQuc2l6ZUF0dGVudWF0aW9uLHRoaXMubW9ycGhUYXJnZXRzPXQubW9ycGhUYXJnZXRzLHRoaXN9O2NvbnN0IE5ydD1uZXcgU3R0LEZydD1uZXcgd3R0LExydD1uZXcgQ3R0LEhydD1uZXcgdHR0O2Z1bmN0aW9uIEJydCh0PW5ldyBYbnQsbj1uZXcgSXJ0KXskdHQuY2FsbCh0aGlzKSx0aGlzLnR5cGU9IlBvaW50cyIsdGhpcy5nZW9tZXRyeT10LHRoaXMubWF0ZXJpYWw9bix0aGlzLnVwZGF0ZU1vcnBoVGFyZ2V0cygpfWZ1bmN0aW9uIFZydCh0LG4sZSxhLG8scixpKXtjb25zdCBjPUZydC5kaXN0YW5jZVNxVG9Qb2ludCh0KTtpZihjPGUpe2NvbnN0IGU9bmV3IHR0dDtGcnQuY2xvc2VzdFBvaW50VG9Qb2ludCh0LGUpLGUuYXBwbHlNYXRyaXg0KGEpO2NvbnN0IHM9by5yYXkub3JpZ2luLmRpc3RhbmNlVG8oZSk7aWYoczxvLm5lYXJ8fHM+by5mYXIpcmV0dXJuO3IucHVzaCh7ZGlzdGFuY2U6cyxkaXN0YW5jZVRvUmF5Ok1hdGguc3FydChjKSxwb2ludDplLGluZGV4Om4sZmFjZTpudWxsLG9iamVjdDppfSl9fWZ1bmN0aW9uIGpydCh0LG4sZSxhLG8scixpLGMscyl7WDkuY2FsbCh0aGlzLHQsbixlLGEsbyxyLGksYyxzKSx0aGlzLmZvcm1hdD12b2lkIDAhPT1pP2k6azksdGhpcy5taW5GaWx0ZXI9dm9pZCAwIT09cj9yOl85LHRoaXMubWFnRmlsdGVyPXZvaWQgMCE9PW8/bzpfOSx0aGlzLmdlbmVyYXRlTWlwbWFwcz0hMTtjb25zdCBsPXRoaXM7InJlcXVlc3RWaWRlb0ZyYW1lQ2FsbGJhY2siaW4gdCYmdC5yZXF1ZXN0VmlkZW9GcmFtZUNhbGxiYWNrKChmdW5jdGlvbiBuKCl7bC5uZWVkc1VwZGF0ZT0hMCx0LnJlcXVlc3RWaWRlb0ZyYW1lQ2FsbGJhY2sobil9KSl9ZnVuY3Rpb24gVXJ0KHQsbixlLGEsbyxyLGksYyxzLGwsbSxkKXtYOS5jYWxsKHRoaXMsbnVsbCxyLGksYyxzLGwsYSxvLG0sZCksdGhpcy5pbWFnZT17d2lkdGg6bixoZWlnaHQ6ZX0sdGhpcy5taXBtYXBzPXQsdGhpcy5mbGlwWT0hMSx0aGlzLmdlbmVyYXRlTWlwbWFwcz0hMX1mdW5jdGlvbiBXcnQodCxuLGUsYSxvLHIsaSxjLHMpe1g5LmNhbGwodGhpcyx0LG4sZSxhLG8scixpLGMscyksdGhpcy5uZWVkc1VwZGF0ZT0hMH1mdW5jdGlvbiBHcnQodCxuLGUsYSxvLHIsaSxjLHMsbCl7aWYoKGw9dm9pZCAwIT09bD9sOnc5KSE9PXc5JiZsIT09UzkpdGhyb3cgbmV3IEVycm9yKCJEZXB0aFRleHR1cmUgZm9ybWF0IG11c3QgYmUgZWl0aGVyIFRIUkVFLkRlcHRoRm9ybWF0IG9yIFRIUkVFLkRlcHRoU3RlbmNpbEZvcm1hdCIpO3ZvaWQgMD09PWUmJmw9PT13OSYmKGU9TTkpLHZvaWQgMD09PWUmJmw9PT1TOSYmKGU9eTkpLFg5LmNhbGwodGhpcyxudWxsLGEsbyxyLGksYyxsLGUscyksdGhpcy5pbWFnZT17d2lkdGg6dCxoZWlnaHQ6bn0sdGhpcy5tYWdGaWx0ZXI9dm9pZCAwIT09aT9pOmg5LHRoaXMubWluRmlsdGVyPXZvaWQgMCE9PWM/YzpoOSx0aGlzLmZsaXBZPSExLHRoaXMuZ2VuZXJhdGVNaXBtYXBzPSExfUJydC5wcm90b3R5cGU9T2JqZWN0LmFzc2lnbihPYmplY3QuY3JlYXRlKCR0dC5wcm90b3R5cGUpLHtjb25zdHJ1Y3RvcjpCcnQsaXNQb2ludHM6ITAsY29weTpmdW5jdGlvbih0KXtyZXR1cm4gJHR0LnByb3RvdHlwZS5jb3B5LmNhbGwodGhpcyx0KSx0aGlzLm1hdGVyaWFsPXQubWF0ZXJpYWwsdGhpcy5nZW9tZXRyeT10Lmdlb21ldHJ5LHRoaXN9LHJheWNhc3Q6ZnVuY3Rpb24odCxuKXtjb25zdCBlPXRoaXMuZ2VvbWV0cnksYT10aGlzLm1hdHJpeFdvcmxkLG89dC5wYXJhbXMuUG9pbnRzLnRocmVzaG9sZDtpZihudWxsPT09ZS5ib3VuZGluZ1NwaGVyZSYmZS5jb21wdXRlQm91bmRpbmdTcGhlcmUoKSxMcnQuY29weShlLmJvdW5kaW5nU3BoZXJlKSxMcnQuYXBwbHlNYXRyaXg0KGEpLExydC5yYWRpdXMrPW8sITE9PT10LnJheS5pbnRlcnNlY3RzU3BoZXJlKExydCkpcmV0dXJuO05ydC5jb3B5KGEpLmludmVydCgpLEZydC5jb3B5KHQucmF5KS5hcHBseU1hdHJpeDQoTnJ0KTtjb25zdCByPW8vKCh0aGlzLnNjYWxlLngrdGhpcy5zY2FsZS55K3RoaXMuc2NhbGUueikvMyksaT1yKnI7aWYoZS5pc0J1ZmZlckdlb21ldHJ5KXtjb25zdCBvPWUuaW5kZXgscj1lLmF0dHJpYnV0ZXMucG9zaXRpb247aWYobnVsbCE9PW8pe2NvbnN0IGU9by5hcnJheTtmb3IobGV0IG89MCxjPWUubGVuZ3RoO288YztvKyspe2NvbnN0IGM9ZVtvXTtIcnQuZnJvbUJ1ZmZlckF0dHJpYnV0ZShyLGMpLFZydChIcnQsYyxpLGEsdCxuLHRoaXMpfX1lbHNlIGZvcihsZXQgZT0wLG89ci5jb3VudDtlPG87ZSsrKUhydC5mcm9tQnVmZmVyQXR0cmlidXRlKHIsZSksVnJ0KEhydCxlLGksYSx0LG4sdGhpcyl9ZWxzZSBjb25zb2xlLmVycm9yKCJUSFJFRS5Qb2ludHMucmF5Y2FzdCgpIG5vIGxvbmdlciBzdXBwb3J0cyBUSFJFRS5HZW9tZXRyeS4gVXNlIFRIUkVFLkJ1ZmZlckdlb21ldHJ5IGluc3RlYWQuIil9LHVwZGF0ZU1vcnBoVGFyZ2V0czpmdW5jdGlvbigpe2NvbnN0IHQ9dGhpcy5nZW9tZXRyeTtpZih0LmlzQnVmZmVyR2VvbWV0cnkpe2NvbnN0IG49dC5tb3JwaEF0dHJpYnV0ZXMsZT1PYmplY3Qua2V5cyhuKTtpZihlLmxlbmd0aD4wKXtjb25zdCB0PW5bZVswXV07aWYodm9pZCAwIT09dCl7dGhpcy5tb3JwaFRhcmdldEluZmx1ZW5jZXM9W10sdGhpcy5tb3JwaFRhcmdldERpY3Rpb25hcnk9e307Zm9yKGxldCBuPTAsZT10Lmxlbmd0aDtuPGU7bisrKXtjb25zdCBlPXRbbl0ubmFtZXx8U3RyaW5nKG4pO3RoaXMubW9ycGhUYXJnZXRJbmZsdWVuY2VzLnB1c2goMCksdGhpcy5tb3JwaFRhcmdldERpY3Rpb25hcnlbZV09bn19fX1lbHNle2NvbnN0IG49dC5tb3JwaFRhcmdldHM7dm9pZCAwIT09biYmbi5sZW5ndGg+MCYmY29uc29sZS5lcnJvcigiVEhSRUUuUG9pbnRzLnVwZGF0ZU1vcnBoVGFyZ2V0cygpIGRvZXMgbm90IHN1cHBvcnQgVEhSRUUuR2VvbWV0cnkuIFVzZSBUSFJFRS5CdWZmZXJHZW9tZXRyeSBpbnN0ZWFkLiIpfX19KSxqcnQucHJvdG90eXBlPU9iamVjdC5hc3NpZ24oT2JqZWN0LmNyZWF0ZShYOS5wcm90b3R5cGUpLHtjb25zdHJ1Y3RvcjpqcnQsY2xvbmU6ZnVuY3Rpb24oKXtyZXR1cm4gbmV3IHRoaXMuY29uc3RydWN0b3IodGhpcy5pbWFnZSkuY29weSh0aGlzKX0saXNWaWRlb1RleHR1cmU6ITAsdXBkYXRlOmZ1bmN0aW9uKCl7Y29uc3QgdD10aGlzLmltYWdlOzA9PSJyZXF1ZXN0VmlkZW9GcmFtZUNhbGxiYWNrImluIHQmJnQucmVhZHlTdGF0ZT49dC5IQVZFX0NVUlJFTlRfREFUQSYmKHRoaXMubmVlZHNVcGRhdGU9ITApfX0pLChVcnQucHJvdG90eXBlPU9iamVjdC5jcmVhdGUoWDkucHJvdG90eXBlKSkuY29uc3RydWN0b3I9VXJ0LFVydC5wcm90b3R5cGUuaXNDb21wcmVzc2VkVGV4dHVyZT0hMCwoV3J0LnByb3RvdHlwZT1PYmplY3QuY3JlYXRlKFg5LnByb3RvdHlwZSkpLmNvbnN0cnVjdG9yPVdydCxXcnQucHJvdG90eXBlLmlzQ2FudmFzVGV4dHVyZT0hMCwoR3J0LnByb3RvdHlwZT1PYmplY3QuY3JlYXRlKFg5LnByb3RvdHlwZSkpLmNvbnN0cnVjdG9yPUdydCxHcnQucHJvdG90eXBlLmlzRGVwdGhUZXh0dXJlPSEwO2NsYXNzIFlydCBleHRlbmRzIFhudHtjb25zdHJ1Y3Rvcih0PTEsbj04LGU9MCxhPTIqTWF0aC5QSSl7c3VwZXIoKSx0aGlzLnR5cGU9IkNpcmNsZUdlb21ldHJ5Iix0aGlzLnBhcmFtZXRlcnM9e3JhZGl1czp0LHNlZ21lbnRzOm4sdGhldGFTdGFydDplLHRoZXRhTGVuZ3RoOmF9LG49TWF0aC5tYXgoMyxuKTtjb25zdCBvPVtdLHI9W10saT1bXSxjPVtdLHM9bmV3IHR0dCxsPW5ldyBXOTtyLnB1c2goMCwwLDApLGkucHVzaCgwLDAsMSksYy5wdXNoKC41LC41KTtmb3IobGV0IG89MCxtPTM7bzw9bjtvKyssbSs9Myl7Y29uc3QgZD1lK28vbiphO3MueD10Kk1hdGguY29zKGQpLHMueT10Kk1hdGguc2luKGQpLHIucHVzaChzLngscy55LHMueiksaS5wdXNoKDAsMCwxKSxsLng9KHJbbV0vdCsxKS8yLGwueT0oclttKzFdL3QrMSkvMixjLnB1c2gobC54LGwueSl9Zm9yKGxldCB0PTE7dDw9bjt0Kyspby5wdXNoKHQsdCsxLDApO3RoaXMuc2V0SW5kZXgobyksdGhpcy5zZXRBdHRyaWJ1dGUoInBvc2l0aW9uIixuZXcgRm50KHIsMykpLHRoaXMuc2V0QXR0cmlidXRlKCJub3JtYWwiLG5ldyBGbnQoaSwzKSksdGhpcy5zZXRBdHRyaWJ1dGUoInV2IixuZXcgRm50KGMsMikpfX1mdW5jdGlvbiBxcnQodCxuLGUsYSxvKXtsZXQgcixpO2lmKG89PT0oZnVuY3Rpb24gYyh0LG4sZSxhKXtsZXQgbz0wO2ZvcihsZXQgcj1uLGk9ZS1hO3I8ZTtyKz1hKW8rPSh0W2ldLXRbcl0pKih0W3IrMV0rdFtpKzFdKSxpPXI7cmV0dXJuIG99KSh0LG4sZSxhKT4wKWZvcihyPW47cjxlO3IrPWEpaT1iaXQocix0W3JdLHRbcisxXSxpKTtlbHNlIGZvcihyPWUtYTtyPj1uO3ItPWEpaT1iaXQocix0W3JdLHRbcisxXSxpKTtyZXR1cm4gaSYmc2l0KGksaS5uZXh0KSYmKHVpdChpKSxpPWkubmV4dCksaX1mdW5jdGlvbiBacnQodCxuKXtpZighdClyZXR1cm4gdDtufHwobj10KTtsZXQgZSxhPXQ7ZG97aWYoZT0hMSxhLnN0ZWluZXJ8fCFzaXQoYSxhLm5leHQpJiYwIT09Y2l0KGEucHJldixhLGEubmV4dCkpYT1hLm5leHQ7ZWxzZXtpZih1aXQoYSksYT1uPWEucHJldixhPT09YS5uZXh0KWJyZWFrO2U9ITB9fXdoaWxlKGV8fGEhPT1uKTtyZXR1cm4gbn1mdW5jdGlvbiBYcnQodCxuLGUsYSxvLHIsaSl7aWYoIXQpcmV0dXJuOyFpJiZyJiYoZnVuY3Rpb24gYyh0LG4sZSxhKXtsZXQgbz10O2Rve251bGw9PT1vLnomJihvLno9YWl0KG8ueCxvLnksbixlLGEpKSxvLnByZXZaPW8ucHJldixvLm5leHRaPW8ubmV4dCxvPW8ubmV4dH13aGlsZShvIT09dCk7by5wcmV2Wi5uZXh0Wj1udWxsLG8ucHJldlo9bnVsbCwoZnVuY3Rpb24gcih0KXtsZXQgbixlLGEsbyxyLGksYyxzLGw9MTtkb3tmb3IoZT10LHQ9bnVsbCxyPW51bGwsaT0wO2U7KXtmb3IoaSsrLGE9ZSxjPTAsbj0wO248bCYmKGMrKyxhPWEubmV4dFosYSk7bisrKTtmb3Iocz1sO2M+MHx8cz4wJiZhOykwIT09YyYmKDA9PT1zfHwhYXx8ZS56PD1hLnopPyhvPWUsZT1lLm5leHRaLGMtLSk6KG89YSxhPWEubmV4dFoscy0tKSxyP3IubmV4dFo9bzp0PW8sby5wcmV2Wj1yLHI9bztlPWF9ci5uZXh0Wj1udWxsLGwqPTJ9d2hpbGUoaT4xKX0pKG8pfSkodCxhLG8scik7bGV0IHMsbCxtPXQ7Zm9yKDt0LnByZXYhPT10Lm5leHQ7KWlmKHM9dC5wcmV2LGw9dC5uZXh0LHI/UXJ0KHQsYSxvLHIpOkpydCh0KSluLnB1c2gocy5pL2UpLG4ucHVzaCh0LmkvZSksbi5wdXNoKGwuaS9lKSx1aXQodCksdD1sLm5leHQsbT1sLm5leHQ7ZWxzZSBpZigodD1sKT09PW0pe2k/MT09PWk/WHJ0KHQ9S3J0KFpydCh0KSxuLGUpLG4sZSxhLG8sciwyKToyPT09aSYmJHJ0KHQsbixlLGEsbyxyKTpYcnQoWnJ0KHQpLG4sZSxhLG8sciwxKTticmVha319ZnVuY3Rpb24gSnJ0KHQpe2NvbnN0IG49dC5wcmV2LGU9dCxhPXQubmV4dDtpZihjaXQobixlLGEpPj0wKXJldHVybiExO2xldCBvPXQubmV4dC5uZXh0O2Zvcig7byE9PXQucHJldjspe2lmKHJpdChuLngsbi55LGUueCxlLnksYS54LGEueSxvLngsby55KSYmY2l0KG8ucHJldixvLG8ubmV4dCk+PTApcmV0dXJuITE7bz1vLm5leHR9cmV0dXJuITB9ZnVuY3Rpb24gUXJ0KHQsbixlLGEpe2NvbnN0IG89dC5wcmV2LHI9dCxpPXQubmV4dDtpZihjaXQobyxyLGkpPj0wKXJldHVybiExO2NvbnN0IGM9by54PnIueD9vLng+aS54P28ueDppLng6ci54PmkueD9yLng6aS54LHM9by55PnIueT9vLnk+aS55P28ueTppLnk6ci55PmkueT9yLnk6aS55LGw9YWl0KG8ueDxyLng/by54PGkueD9vLng6aS54OnIueDxpLng/ci54OmkueCxvLnk8ci55P28ueTxpLnk/by55OmkueTpyLnk8aS55P3IueTppLnksbixlLGEpLG09YWl0KGMscyxuLGUsYSk7bGV0IGQ9dC5wcmV2WixnPXQubmV4dFo7Zm9yKDtkJiZkLno+PWwmJmcmJmcuejw9bTspe2lmKGQhPT10LnByZXYmJmQhPT10Lm5leHQmJnJpdChvLngsby55LHIueCxyLnksaS54LGkueSxkLngsZC55KSYmY2l0KGQucHJldixkLGQubmV4dCk+PTApcmV0dXJuITE7aWYoZD1kLnByZXZaLGchPT10LnByZXYmJmchPT10Lm5leHQmJnJpdChvLngsby55LHIueCxyLnksaS54LGkueSxnLngsZy55KSYmY2l0KGcucHJldixnLGcubmV4dCk+PTApcmV0dXJuITE7Zz1nLm5leHRafWZvcig7ZCYmZC56Pj1sOyl7aWYoZCE9PXQucHJldiYmZCE9PXQubmV4dCYmcml0KG8ueCxvLnksci54LHIueSxpLngsaS55LGQueCxkLnkpJiZjaXQoZC5wcmV2LGQsZC5uZXh0KT49MClyZXR1cm4hMTtkPWQucHJldlp9Zm9yKDtnJiZnLno8PW07KXtpZihnIT09dC5wcmV2JiZnIT09dC5uZXh0JiZyaXQoby54LG8ueSxyLngsci55LGkueCxpLnksZy54LGcueSkmJmNpdChnLnByZXYsZyxnLm5leHQpPj0wKXJldHVybiExO2c9Zy5uZXh0Wn1yZXR1cm4hMH1mdW5jdGlvbiBLcnQodCxuLGUpe2xldCBhPXQ7ZG97Y29uc3Qgbz1hLnByZXYscj1hLm5leHQubmV4dDshc2l0KG8scikmJmxpdChvLGEsYS5uZXh0LHIpJiZnaXQobyxyKSYmZ2l0KHIsbykmJihuLnB1c2goby5pL2UpLG4ucHVzaChhLmkvZSksbi5wdXNoKHIuaS9lKSx1aXQoYSksdWl0KGEubmV4dCksYT10PXIpLGE9YS5uZXh0fXdoaWxlKGEhPT10KTtyZXR1cm4gWnJ0KGEpfWZ1bmN0aW9uICRydCh0LG4sZSxhLG8scil7bGV0IGk9dDtkb3tsZXQgdD1pLm5leHQubmV4dDtmb3IoO3QhPT1pLnByZXY7KXtpZihpLmkhPT10LmkmJmlpdChpLHQpKXtsZXQgYz1waXQoaSx0KTtyZXR1cm4gaT1acnQoaSxpLm5leHQpLGM9WnJ0KGMsYy5uZXh0KSxYcnQoaSxuLGUsYSxvLHIpLHZvaWQgWHJ0KGMsbixlLGEsbyxyKX10PXQubmV4dH1pPWkubmV4dH13aGlsZShpIT09dCl9ZnVuY3Rpb24gdGl0KHQsbil7cmV0dXJuIHQueC1uLnh9ZnVuY3Rpb24gbml0KHQsbil7aWYobj0oZnVuY3Rpb24gZSh0LG4pe2xldCBlPW47Y29uc3QgYT10Lngsbz10Lnk7bGV0IHIsaT0tMS8wO2Rve2lmKG88PWUueSYmbz49ZS5uZXh0LnkmJmUubmV4dC55IT09ZS55KXtjb25zdCB0PWUueCsoby1lLnkpKihlLm5leHQueC1lLngpLyhlLm5leHQueS1lLnkpO2lmKHQ8PWEmJnQ+aSl7aWYoaT10LHQ9PT1hKXtpZihvPT09ZS55KXJldHVybiBlO2lmKG89PT1lLm5leHQueSlyZXR1cm4gZS5uZXh0fXI9ZS54PGUubmV4dC54P2U6ZS5uZXh0fX1lPWUubmV4dH13aGlsZShlIT09bik7aWYoIXIpcmV0dXJuIG51bGw7aWYoYT09PWkpcmV0dXJuIHI7Y29uc3QgYz1yLHM9ci54LGw9ci55O2xldCBtLGQ9MS8wO2U9cjtkb3thPj1lLngmJmUueD49cyYmYSE9PWUueCYmcml0KG88bD9hOmksbyxzLGwsbzxsP2k6YSxvLGUueCxlLnkpJiYobT1NYXRoLmFicyhvLWUueSkvKGEtZS54KSxnaXQoZSx0KSYmKG08ZHx8bT09PWQmJihlLng+ci54fHxlLng9PT1yLngmJmVpdChyLGUpKSkmJihyPWUsZD1tKSksZT1lLm5leHR9d2hpbGUoZSE9PWMpO3JldHVybiByfSkodCxuKSl7Y29uc3QgZT1waXQobix0KTtacnQobixuLm5leHQpLFpydChlLGUubmV4dCl9fWZ1bmN0aW9uIGVpdCh0LG4pe3JldHVybiBjaXQodC5wcmV2LHQsbi5wcmV2KTwwJiZjaXQobi5uZXh0LHQsdC5uZXh0KTwwfWZ1bmN0aW9uIGFpdCh0LG4sZSxhLG8pe3JldHVybih0PTE0MzE2NTU3NjUmKCh0PTg1ODk5MzQ1OSYoKHQ9MjUyNjQ1MTM1JigodD0xNjcxMTkzNSYoKHQ9MzI3NjcqKHQtZSkqbyl8dDw8OCkpfHQ8PDQpKXx0PDwyKSl8dDw8MSkpfChuPTE0MzE2NTU3NjUmKChuPTg1ODk5MzQ1OSYoKG49MjUyNjQ1MTM1Jigobj0xNjcxMTkzNSYoKG49MzI3NjcqKG4tYSkqbyl8bjw8OCkpfG48PDQpKXxuPDwyKSl8bjw8MSkpPDwxfWZ1bmN0aW9uIG9pdCh0KXtsZXQgbj10LGU9dDtkb3sobi54PGUueHx8bi54PT09ZS54JiZuLnk8ZS55KSYmKGU9biksbj1uLm5leHR9d2hpbGUobiE9PXQpO3JldHVybiBlfWZ1bmN0aW9uIHJpdCh0LG4sZSxhLG8scixpLGMpe3JldHVybihvLWkpKihuLWMpLSh0LWkpKihyLWMpPj0wJiYodC1pKSooYS1jKS0oZS1pKSoobi1jKT49MCYmKGUtaSkqKHItYyktKG8taSkqKGEtYyk+PTB9ZnVuY3Rpb24gaWl0KHQsbil7cmV0dXJuIHQubmV4dC5pIT09bi5pJiZ0LnByZXYuaSE9PW4uaSYmIShmdW5jdGlvbiBlKHQsbil7bGV0IGU9dDtkb3tpZihlLmkhPT10LmkmJmUubmV4dC5pIT09dC5pJiZlLmkhPT1uLmkmJmUubmV4dC5pIT09bi5pJiZsaXQoZSxlLm5leHQsdCxuKSlyZXR1cm4hMDtlPWUubmV4dH13aGlsZShlIT09dCk7cmV0dXJuITF9KSh0LG4pJiYoZ2l0KHQsbikmJmdpdChuLHQpJiYoZnVuY3Rpb24gYSh0LG4pe2xldCBlPXQsYT0hMTtjb25zdCBvPSh0Lngrbi54KS8yLHI9KHQueStuLnkpLzI7ZG97ZS55PnIhPWUubmV4dC55PnImJmUubmV4dC55IT09ZS55JiZvPChlLm5leHQueC1lLngpKihyLWUueSkvKGUubmV4dC55LWUueSkrZS54JiYoYT0hYSksZT1lLm5leHR9d2hpbGUoZSE9PXQpO3JldHVybiBhfSkodCxuKSYmKGNpdCh0LnByZXYsdCxuLnByZXYpfHxjaXQodCxuLnByZXYsbikpfHxzaXQodCxuKSYmY2l0KHQucHJldix0LHQubmV4dCk+MCYmY2l0KG4ucHJldixuLG4ubmV4dCk+MCl9ZnVuY3Rpb24gY2l0KHQsbixlKXtyZXR1cm4obi55LXQueSkqKGUueC1uLngpLShuLngtdC54KSooZS55LW4ueSl9ZnVuY3Rpb24gc2l0KHQsbil7cmV0dXJuIHQueD09PW4ueCYmdC55PT09bi55fWZ1bmN0aW9uIGxpdCh0LG4sZSxhKXtjb25zdCBvPWRpdChjaXQodCxuLGUpKSxyPWRpdChjaXQodCxuLGEpKSxpPWRpdChjaXQoZSxhLHQpKSxjPWRpdChjaXQoZSxhLG4pKTtyZXR1cm4gbyE9PXImJmkhPT1jfHwhKDAhPT1vfHwhbWl0KHQsZSxuKSl8fCEoMCE9PXJ8fCFtaXQodCxhLG4pKXx8ISgwIT09aXx8IW1pdChlLHQsYSkpfHwhKDAhPT1jfHwhbWl0KGUsbixhKSl9ZnVuY3Rpb24gbWl0KHQsbixlKXtyZXR1cm4gbi54PD1NYXRoLm1heCh0LngsZS54KSYmbi54Pj1NYXRoLm1pbih0LngsZS54KSYmbi55PD1NYXRoLm1heCh0LnksZS55KSYmbi55Pj1NYXRoLm1pbih0LnksZS55KX1mdW5jdGlvbiBkaXQodCl7cmV0dXJuIHQ+MD8xOnQ8MD8tMTowfWZ1bmN0aW9uIGdpdCh0LG4pe3JldHVybiBjaXQodC5wcmV2LHQsdC5uZXh0KTwwP2NpdCh0LG4sdC5uZXh0KT49MCYmY2l0KHQsdC5wcmV2LG4pPj0wOmNpdCh0LG4sdC5wcmV2KTwwfHxjaXQodCx0Lm5leHQsbik8MH1mdW5jdGlvbiBwaXQodCxuKXtjb25zdCBlPW5ldyBmaXQodC5pLHQueCx0LnkpLGE9bmV3IGZpdChuLmksbi54LG4ueSksbz10Lm5leHQscj1uLnByZXY7cmV0dXJuIHQubmV4dD1uLG4ucHJldj10LGUubmV4dD1vLG8ucHJldj1lLGEubmV4dD1lLGUucHJldj1hLHIubmV4dD1hLGEucHJldj1yLGF9ZnVuY3Rpb24gYml0KHQsbixlLGEpe2NvbnN0IG89bmV3IGZpdCh0LG4sZSk7cmV0dXJuIGE/KG8ubmV4dD1hLm5leHQsby5wcmV2PWEsYS5uZXh0LnByZXY9byxhLm5leHQ9byk6KG8ucHJldj1vLG8ubmV4dD1vKSxvfWZ1bmN0aW9uIHVpdCh0KXt0Lm5leHQucHJldj10LnByZXYsdC5wcmV2Lm5leHQ9dC5uZXh0LHQucHJldlomJih0LnByZXZaLm5leHRaPXQubmV4dFopLHQubmV4dFomJih0Lm5leHRaLnByZXZaPXQucHJldlopfWZ1bmN0aW9uIGZpdCh0LG4sZSl7dGhpcy5pPXQsdGhpcy54PW4sdGhpcy55PWUsdGhpcy5wcmV2PW51bGwsdGhpcy5uZXh0PW51bGwsdGhpcy56PW51bGwsdGhpcy5wcmV2Wj1udWxsLHRoaXMubmV4dFo9bnVsbCx0aGlzLnN0ZWluZXI9ITF9bmV3IHR0dCxuZXcgdHR0LG5ldyB0dHQsbmV3IGJudDtjb25zdCBoaXQ9e2FyZWE6ZnVuY3Rpb24odCl7Y29uc3Qgbj10Lmxlbmd0aDtsZXQgZT0wO2ZvcihsZXQgYT1uLTEsbz0wO288bjthPW8rKyllKz10W2FdLngqdFtvXS55LXRbb10ueCp0W2FdLnk7cmV0dXJuLjUqZX0saXNDbG9ja1dpc2U6ZnVuY3Rpb24odCl7cmV0dXJuIGhpdC5hcmVhKHQpPDB9LHRyaWFuZ3VsYXRlU2hhcGU6ZnVuY3Rpb24odCxuKXtjb25zdCBlPVtdLGE9W10sbz1bXTtfaXQodCksQ2l0KGUsdCk7bGV0IHI9dC5sZW5ndGg7bi5mb3JFYWNoKF9pdCk7Zm9yKGxldCB0PTA7dDxuLmxlbmd0aDt0KyspYS5wdXNoKHIpLHIrPW5bdF0ubGVuZ3RoLENpdChlLG5bdF0pO2NvbnN0IGk9KGZ1bmN0aW9uKHQsbixlKXtlPWV8fDI7Y29uc3QgYT1uJiZuLmxlbmd0aCxvPWE/blswXSplOnQubGVuZ3RoO2xldCByPXFydCh0LDAsbyxlLCEwKTtjb25zdCBpPVtdO2lmKCFyfHxyLm5leHQ9PT1yLnByZXYpcmV0dXJuIGk7bGV0IGMscyxsLG0sZCxnLHA7aWYoYSYmKHI9KGZ1bmN0aW9uIGIodCxuLGUsYSl7Y29uc3Qgbz1bXTtsZXQgcixpLGMscyxsO2ZvcihyPTAsaT1uLmxlbmd0aDtyPGk7cisrKWM9bltyXSphLHM9cjxpLTE/bltyKzFdKmE6dC5sZW5ndGgsbD1xcnQodCxjLHMsYSwhMSksbD09PWwubmV4dCYmKGwuc3RlaW5lcj0hMCksby5wdXNoKG9pdChsKSk7Zm9yKG8uc29ydCh0aXQpLHI9MDtyPG8ubGVuZ3RoO3IrKyluaXQob1tyXSxlKSxlPVpydChlLGUubmV4dCk7cmV0dXJuIGV9KSh0LG4scixlKSksdC5sZW5ndGg+ODAqZSl7Yz1sPXRbMF0scz1tPXRbMV07Zm9yKGxldCBuPWU7bjxvO24rPWUpZD10W25dLGc9dFtuKzFdLGQ8YyYmKGM9ZCksZzxzJiYocz1nKSxkPmwmJihsPWQpLGc+bSYmKG09Zyk7cD1NYXRoLm1heChsLWMsbS1zKSxwPTAhPT1wPzEvcDowfXJldHVybiBYcnQocixpLGUsYyxzLHApLGl9KShlLGEpO2ZvcihsZXQgdD0wO3Q8aS5sZW5ndGg7dCs9MylvLnB1c2goaS5zbGljZSh0LHQrMykpO3JldHVybiBvfX07ZnVuY3Rpb24gX2l0KHQpe2NvbnN0IG49dC5sZW5ndGg7bj4yJiZ0W24tMV0uZXF1YWxzKHRbMF0pJiZ0LnBvcCgpfWZ1bmN0aW9uIENpdCh0LG4pe2ZvcihsZXQgZT0wO2U8bi5sZW5ndGg7ZSsrKXQucHVzaChuW2VdLngpLHQucHVzaChuW2VdLnkpfWNsYXNzIE1pdCBleHRlbmRzIFhudHtjb25zdHJ1Y3Rvcih0LG4pe3N1cGVyKCksdGhpcy50eXBlPSJFeHRydWRlR2VvbWV0cnkiLHRoaXMucGFyYW1ldGVycz17c2hhcGVzOnQsb3B0aW9uczpufSx0PUFycmF5LmlzQXJyYXkodCk/dDpbdF07Y29uc3QgZT10aGlzLGE9W10sbz1bXTtmb3IobGV0IG49MCxlPXQubGVuZ3RoO248ZTtuKyspcih0W25dKTtmdW5jdGlvbiByKHQpe2NvbnN0IHI9W10saT12b2lkIDAhPT1uLmN1cnZlU2VnbWVudHM/bi5jdXJ2ZVNlZ21lbnRzOjEyLGM9dm9pZCAwIT09bi5zdGVwcz9uLnN0ZXBzOjE7bGV0IHM9dm9pZCAwIT09bi5kZXB0aD9uLmRlcHRoOjEwMCxsPXZvaWQgMD09PW4uYmV2ZWxFbmFibGVkfHxuLmJldmVsRW5hYmxlZCxtPXZvaWQgMCE9PW4uYmV2ZWxUaGlja25lc3M/bi5iZXZlbFRoaWNrbmVzczo2LGQ9dm9pZCAwIT09bi5iZXZlbFNpemU/bi5iZXZlbFNpemU6bS0yLGc9dm9pZCAwIT09bi5iZXZlbE9mZnNldD9uLmJldmVsT2Zmc2V0OjAscD12b2lkIDAhPT1uLmJldmVsU2VnbWVudHM/bi5iZXZlbFNlZ21lbnRzOjM7Y29uc3QgYj1uLmV4dHJ1ZGVQYXRoLHU9dm9pZCAwIT09bi5VVkdlbmVyYXRvcj9uLlVWR2VuZXJhdG9yOk9pdDt2b2lkIDAhPT1uLmFtb3VudCYmKGNvbnNvbGUud2FybigiVEhSRUUuRXh0cnVkZUJ1ZmZlckdlb21ldHJ5OiBhbW91bnQgaGFzIGJlZW4gcmVuYW1lZCB0byBkZXB0aC4iKSxzPW4uYW1vdW50KTtsZXQgZixoLF8sQyxNLE89ITE7YiYmKGY9Yi5nZXRTcGFjZWRQb2ludHMoYyksTz0hMCxsPSExLGg9Yi5jb21wdXRlRnJlbmV0RnJhbWVzKGMsITEpLF89bmV3IHR0dCxDPW5ldyB0dHQsTT1uZXcgdHR0KSxsfHwocD0wLG09MCxkPTAsZz0wKTtjb25zdCBQPXQuZXh0cmFjdFBvaW50cyhpKTtsZXQgeD1QLnNoYXBlO2NvbnN0IHk9UC5ob2xlcztpZighaGl0LmlzQ2xvY2tXaXNlKHgpKXt4PXgucmV2ZXJzZSgpO2ZvcihsZXQgdD0wLG49eS5sZW5ndGg7dDxuO3QrKyl7Y29uc3Qgbj15W3RdO2hpdC5pc0Nsb2NrV2lzZShuKSYmKHlbdF09bi5yZXZlcnNlKCkpfX1jb25zdCBrPWhpdC50cmlhbmd1bGF0ZVNoYXBlKHgseSksdj14O2ZvcihsZXQgdD0wLG49eS5sZW5ndGg7dDxuO3QrKyl4PXguY29uY2F0KHlbdF0pO2Z1bmN0aW9uIHcodCxuLGUpe3JldHVybiBufHxjb25zb2xlLmVycm9yKCJUSFJFRS5FeHRydWRlR2VvbWV0cnk6IHZlYyBkb2VzIG5vdCBleGlzdCIpLG4uY2xvbmUoKS5tdWx0aXBseVNjYWxhcihlKS5hZGQodCl9Y29uc3QgUz14Lmxlbmd0aCxFPWsubGVuZ3RoO2Z1bmN0aW9uIEEodCxuLGUpe2xldCBhLG8scjtjb25zdCBpPXQueC1uLngsYz10Lnktbi55LHM9ZS54LXQueCxsPWUueS10LnksbT1pKmkrYypjO2lmKE1hdGguYWJzKGkqbC1jKnMpPk51bWJlci5FUFNJTE9OKXtjb25zdCBkPU1hdGguc3FydChtKSxnPU1hdGguc3FydChzKnMrbCpsKSxwPW4ueC1jL2QsYj1uLnkraS9kLHU9KChlLngtbC9nLXApKmwtKGUueStzL2ctYikqcykvKGkqbC1jKnMpO2E9cCtpKnUtdC54LG89YitjKnUtdC55O2NvbnN0IGY9YSphK28qbztpZihmPD0yKXJldHVybiBuZXcgVzkoYSxvKTtyPU1hdGguc3FydChmLzIpfWVsc2V7bGV0IHQ9ITE7aT5OdW1iZXIuRVBTSUxPTj9zPk51bWJlci5FUFNJTE9OJiYodD0hMCk6aTwtTnVtYmVyLkVQU0lMT04/czwtTnVtYmVyLkVQU0lMT04mJih0PSEwKTpNYXRoLnNpZ24oYyk9PT1NYXRoLnNpZ24obCkmJih0PSEwKSx0PyhhPS1jLG89aSxyPU1hdGguc3FydChtKSk6KGE9aSxvPWMscj1NYXRoLnNxcnQobS8yKSl9cmV0dXJuIG5ldyBXOShhL3Isby9yKX1jb25zdCB6PVtdO2ZvcihsZXQgdD0wLG49di5sZW5ndGgsZT1uLTEsYT10KzE7dDxuO3QrKyxlKyssYSsrKWU9PT1uJiYoZT0wKSxhPT09biYmKGE9MCkselt0XT1BKHZbdF0sdltlXSx2W2FdKTtjb25zdCBSPVtdO2xldCBULEQ9ei5jb25jYXQoKTtmb3IobGV0IHQ9MCxuPXkubGVuZ3RoO3Q8bjt0Kyspe2NvbnN0IG49eVt0XTtUPVtdO2ZvcihsZXQgdD0wLGU9bi5sZW5ndGgsYT1lLTEsbz10KzE7dDxlO3QrKyxhKyssbysrKWE9PT1lJiYoYT0wKSxvPT09ZSYmKG89MCksVFt0XT1BKG5bdF0sblthXSxuW29dKTtSLnB1c2goVCksRD1ELmNvbmNhdChUKX1mb3IobGV0IHQ9MDt0PHA7dCsrKXtjb25zdCBuPXQvcCxlPW0qTWF0aC5jb3MobipNYXRoLlBJLzIpLGE9ZCpNYXRoLnNpbihuKk1hdGguUEkvMikrZztmb3IobGV0IHQ9MCxuPXYubGVuZ3RoO3Q8bjt0Kyspe2NvbnN0IG49dyh2W3RdLHpbdF0sYSk7RihuLngsbi55LC1lKX1mb3IobGV0IHQ9MCxuPXkubGVuZ3RoO3Q8bjt0Kyspe2NvbnN0IG49eVt0XTtUPVJbdF07Zm9yKGxldCB0PTAsbz1uLmxlbmd0aDt0PG87dCsrKXtjb25zdCBvPXcoblt0XSxUW3RdLGEpO0Yoby54LG8ueSwtZSl9fX1jb25zdCBJPWQrZztmb3IobGV0IHQ9MDt0PFM7dCsrKXtjb25zdCBuPWw/dyh4W3RdLERbdF0sSSk6eFt0XTtPPyhDLmNvcHkoaC5ub3JtYWxzWzBdKS5tdWx0aXBseVNjYWxhcihuLngpLF8uY29weShoLmJpbm9ybWFsc1swXSkubXVsdGlwbHlTY2FsYXIobi55KSxNLmNvcHkoZlswXSkuYWRkKEMpLmFkZChfKSxGKE0ueCxNLnksTS56KSk6RihuLngsbi55LDApfWZvcihsZXQgdD0xO3Q8PWM7dCsrKWZvcihsZXQgbj0wO248UztuKyspe2NvbnN0IGU9bD93KHhbbl0sRFtuXSxJKTp4W25dO08/KEMuY29weShoLm5vcm1hbHNbdF0pLm11bHRpcGx5U2NhbGFyKGUueCksXy5jb3B5KGguYmlub3JtYWxzW3RdKS5tdWx0aXBseVNjYWxhcihlLnkpLE0uY29weShmW3RdKS5hZGQoQykuYWRkKF8pLEYoTS54LE0ueSxNLnopKTpGKGUueCxlLnkscy9jKnQpfWZvcihsZXQgdD1wLTE7dD49MDt0LS0pe2NvbnN0IG49dC9wLGU9bSpNYXRoLmNvcyhuKk1hdGguUEkvMiksYT1kKk1hdGguc2luKG4qTWF0aC5QSS8yKStnO2ZvcihsZXQgdD0wLG49di5sZW5ndGg7dDxuO3QrKyl7Y29uc3Qgbj13KHZbdF0selt0XSxhKTtGKG4ueCxuLnkscytlKX1mb3IobGV0IHQ9MCxuPXkubGVuZ3RoO3Q8bjt0Kyspe2NvbnN0IG49eVt0XTtUPVJbdF07Zm9yKGxldCB0PTAsbz1uLmxlbmd0aDt0PG87dCsrKXtjb25zdCBvPXcoblt0XSxUW3RdLGEpO08/RihvLngsby55K2ZbYy0xXS55LGZbYy0xXS54K2UpOkYoby54LG8ueSxzK2UpfX19ZnVuY3Rpb24gTih0LG4pe2xldCBlPXQubGVuZ3RoO2Zvcig7LS1lPj0wOyl7Y29uc3QgYT1lO2xldCBvPWUtMTtvPDAmJihvPXQubGVuZ3RoLTEpO2ZvcihsZXQgdD0wLGU9YysyKnA7dDxlO3QrKyl7Y29uc3QgZT1TKnQscj1TKih0KzEpO0gobithK2UsbitvK2UsbitvK3IsbithK3IpfX19ZnVuY3Rpb24gRih0LG4sZSl7ci5wdXNoKHQpLHIucHVzaChuKSxyLnB1c2goZSl9ZnVuY3Rpb24gTCh0LG4sbyl7Qih0KSxCKG4pLEIobyk7Y29uc3Qgcj1hLmxlbmd0aC8zLGk9dS5nZW5lcmF0ZVRvcFVWKGUsYSxyLTMsci0yLHItMSk7VihpWzBdKSxWKGlbMV0pLFYoaVsyXSl9ZnVuY3Rpb24gSCh0LG4sbyxyKXtCKHQpLEIobiksQihyKSxCKG4pLEIobyksQihyKTtjb25zdCBpPWEubGVuZ3RoLzMsYz11LmdlbmVyYXRlU2lkZVdhbGxVVihlLGEsaS02LGktMyxpLTIsaS0xKTtWKGNbMF0pLFYoY1sxXSksVihjWzNdKSxWKGNbMV0pLFYoY1syXSksVihjWzNdKX1mdW5jdGlvbiBCKHQpe2EucHVzaChyWzMqdCswXSksYS5wdXNoKHJbMyp0KzFdKSxhLnB1c2goclszKnQrMl0pfWZ1bmN0aW9uIFYodCl7by5wdXNoKHQueCksby5wdXNoKHQueSl9IShmdW5jdGlvbiBqKCl7Y29uc3QgdD1hLmxlbmd0aC8zO2lmKGwpe2xldCB0PTAsbj1TKnQ7Zm9yKGxldCB0PTA7dDxFO3QrKyl7Y29uc3QgZT1rW3RdO0woZVsyXStuLGVbMV0rbixlWzBdK24pfXQ9YysyKnAsbj1TKnQ7Zm9yKGxldCB0PTA7dDxFO3QrKyl7Y29uc3QgZT1rW3RdO0woZVswXStuLGVbMV0rbixlWzJdK24pfX1lbHNle2ZvcihsZXQgdD0wO3Q8RTt0Kyspe2NvbnN0IG49a1t0XTtMKG5bMl0sblsxXSxuWzBdKX1mb3IobGV0IHQ9MDt0PEU7dCsrKXtjb25zdCBuPWtbdF07TChuWzBdK1MqYyxuWzFdK1MqYyxuWzJdK1MqYyl9fWUuYWRkR3JvdXAodCxhLmxlbmd0aC8zLXQsMCl9KSgpLChmdW5jdGlvbiBVKCl7Y29uc3QgdD1hLmxlbmd0aC8zO2xldCBuPTA7Tih2LG4pLG4rPXYubGVuZ3RoO2ZvcihsZXQgdD0wLGU9eS5sZW5ndGg7dDxlO3QrKyl7Y29uc3QgZT15W3RdO04oZSxuKSxuKz1lLmxlbmd0aH1lLmFkZEdyb3VwKHQsYS5sZW5ndGgvMy10LDEpfSkoKX10aGlzLnNldEF0dHJpYnV0ZSgicG9zaXRpb24iLG5ldyBGbnQoYSwzKSksdGhpcy5zZXRBdHRyaWJ1dGUoInV2IixuZXcgRm50KG8sMikpLHRoaXMuY29tcHV0ZVZlcnRleE5vcm1hbHMoKX10b0pTT04oKXtjb25zdCB0PVhudC5wcm90b3R5cGUudG9KU09OLmNhbGwodGhpcyk7cmV0dXJuKGZ1bmN0aW9uIG4odCxlLGEpe2lmKGEuc2hhcGVzPVtdLEFycmF5LmlzQXJyYXkodCkpZm9yKGxldCBuPTAsZT10Lmxlbmd0aDtuPGU7bisrKWEuc2hhcGVzLnB1c2godFtuXS51dWlkKTtlbHNlIGEuc2hhcGVzLnB1c2godC51dWlkKTtyZXR1cm4gdm9pZCAwIT09ZS5leHRydWRlUGF0aCYmKGEub3B0aW9ucy5leHRydWRlUGF0aD1lLmV4dHJ1ZGVQYXRoLnRvSlNPTigpKSxhfSkodGhpcy5wYXJhbWV0ZXJzLnNoYXBlcyx0aGlzLnBhcmFtZXRlcnMub3B0aW9ucyx0KX19Y29uc3QgT2l0PXtnZW5lcmF0ZVRvcFVWOmZ1bmN0aW9uKHQsbixlLGEsbyl7Y29uc3Qgcj1uWzMqYV0saT1uWzMqYSsxXSxjPW5bMypvXSxzPW5bMypvKzFdO3JldHVybltuZXcgVzkoblszKmVdLG5bMyplKzFdKSxuZXcgVzkocixpKSxuZXcgVzkoYyxzKV19LGdlbmVyYXRlU2lkZVdhbGxVVjpmdW5jdGlvbih0LG4sZSxhLG8scil7Y29uc3QgaT1uWzMqZV0sYz1uWzMqZSsxXSxzPW5bMyplKzJdLGw9blszKmFdLG09blszKmErMV0sZD1uWzMqYSsyXSxnPW5bMypvXSxwPW5bMypvKzFdLGI9blszKm8rMl0sdT1uWzMqcl0sZj1uWzMqcisxXSxoPW5bMypyKzJdO3JldHVybiBNYXRoLmFicyhjLW0pPC4wMT9bbmV3IFc5KGksMS1zKSxuZXcgVzkobCwxLWQpLG5ldyBXOShnLDEtYiksbmV3IFc5KHUsMS1oKV06W25ldyBXOShjLDEtcyksbmV3IFc5KG0sMS1kKSxuZXcgVzkocCwxLWIpLG5ldyBXOShmLDEtaCldfX07ZnVuY3Rpb24gUGl0KHQsbixlKXtYbnQuY2FsbCh0aGlzKSx0aGlzLnR5cGU9IlBhcmFtZXRyaWNHZW9tZXRyeSIsdGhpcy5wYXJhbWV0ZXJzPXtmdW5jOnQsc2xpY2VzOm4sc3RhY2tzOmV9O2NvbnN0IGE9W10sbz1bXSxyPVtdLGk9W10sYz0xZS01LHM9bmV3IHR0dCxsPW5ldyB0dHQsbT1uZXcgdHR0LGQ9bmV3IHR0dCxnPW5ldyB0dHQ7dC5sZW5ndGg8MyYmY29uc29sZS5lcnJvcigiVEhSRUUuUGFyYW1ldHJpY0dlb21ldHJ5OiBGdW5jdGlvbiBtdXN0IG5vdyBtb2RpZnkgYSBWZWN0b3IzIGFzIHRoaXJkIHBhcmFtZXRlci4iKTtjb25zdCBwPW4rMTtmb3IobGV0IGE9MDthPD1lO2ErKyl7Y29uc3QgcD1hL2U7Zm9yKGxldCBlPTA7ZTw9bjtlKyspe2NvbnN0IGE9ZS9uO3QoYSxwLGwpLG8ucHVzaChsLngsbC55LGwueiksYS1jPj0wPyh0KGEtYyxwLG0pLGQuc3ViVmVjdG9ycyhsLG0pKToodChhK2MscCxtKSxkLnN1YlZlY3RvcnMobSxsKSkscC1jPj0wPyh0KGEscC1jLG0pLGcuc3ViVmVjdG9ycyhsLG0pKToodChhLHArYyxtKSxnLnN1YlZlY3RvcnMobSxsKSkscy5jcm9zc1ZlY3RvcnMoZCxnKS5ub3JtYWxpemUoKSxyLnB1c2gocy54LHMueSxzLnopLGkucHVzaChhLHApfX1mb3IobGV0IHQ9MDt0PGU7dCsrKWZvcihsZXQgZT0wO2U8bjtlKyspe2NvbnN0IG49dCpwK2UrMSxvPSh0KzEpKnArZSsxLHI9KHQrMSkqcCtlO2EucHVzaCh0KnArZSxuLHIpLGEucHVzaChuLG8scil9dGhpcy5zZXRJbmRleChhKSx0aGlzLnNldEF0dHJpYnV0ZSgicG9zaXRpb24iLG5ldyBGbnQobywzKSksdGhpcy5zZXRBdHRyaWJ1dGUoIm5vcm1hbCIsbmV3IEZudChyLDMpKSx0aGlzLnNldEF0dHJpYnV0ZSgidXYiLG5ldyBGbnQoaSwyKSl9KFBpdC5wcm90b3R5cGU9T2JqZWN0LmNyZWF0ZShYbnQucHJvdG90eXBlKSkuY29uc3RydWN0b3I9UGl0O2NsYXNzIHhpdCBleHRlbmRzIFhudHtjb25zdHJ1Y3Rvcih0LG49MTIpe3N1cGVyKCksdGhpcy50eXBlPSJTaGFwZUdlb21ldHJ5Iix0aGlzLnBhcmFtZXRlcnM9e3NoYXBlczp0LGN1cnZlU2VnbWVudHM6bn07Y29uc3QgZT1bXSxhPVtdLG89W10scj1bXTtsZXQgaT0wLGM9MDtpZighMT09PUFycmF5LmlzQXJyYXkodCkpcyh0KTtlbHNlIGZvcihsZXQgbj0wO248dC5sZW5ndGg7bisrKXModFtuXSksdGhpcy5hZGRHcm91cChpLGMsbiksaSs9YyxjPTA7ZnVuY3Rpb24gcyh0KXtjb25zdCBpPWEubGVuZ3RoLzMscz10LmV4dHJhY3RQb2ludHMobik7bGV0IGw9cy5zaGFwZTtjb25zdCBtPXMuaG9sZXM7ITE9PT1oaXQuaXNDbG9ja1dpc2UobCkmJihsPWwucmV2ZXJzZSgpKTtmb3IobGV0IHQ9MCxuPW0ubGVuZ3RoO3Q8bjt0Kyspe2NvbnN0IG49bVt0XTshMD09PWhpdC5pc0Nsb2NrV2lzZShuKSYmKG1bdF09bi5yZXZlcnNlKCkpfWNvbnN0IGQ9aGl0LnRyaWFuZ3VsYXRlU2hhcGUobCxtKTtmb3IobGV0IHQ9MCxuPW0ubGVuZ3RoO3Q8bjt0KyspbD1sLmNvbmNhdChtW3RdKTtmb3IobGV0IHQ9MCxuPWwubGVuZ3RoO3Q8bjt0Kyspe2NvbnN0IG49bFt0XTthLnB1c2gobi54LG4ueSwwKSxvLnB1c2goMCwwLDEpLHIucHVzaChuLngsbi55KX1mb3IobGV0IHQ9MCxuPWQubGVuZ3RoO3Q8bjt0Kyspe2NvbnN0IG49ZFt0XTtlLnB1c2goblswXStpLG5bMV0raSxuWzJdK2kpLGMrPTN9fXRoaXMuc2V0SW5kZXgoZSksdGhpcy5zZXRBdHRyaWJ1dGUoInBvc2l0aW9uIixuZXcgRm50KGEsMykpLHRoaXMuc2V0QXR0cmlidXRlKCJub3JtYWwiLG5ldyBGbnQobywzKSksdGhpcy5zZXRBdHRyaWJ1dGUoInV2IixuZXcgRm50KHIsMikpfXRvSlNPTigpe2NvbnN0IHQ9WG50LnByb3RvdHlwZS50b0pTT04uY2FsbCh0aGlzKTtyZXR1cm4oZnVuY3Rpb24gbih0LGUpe2lmKGUuc2hhcGVzPVtdLEFycmF5LmlzQXJyYXkodCkpZm9yKGxldCBuPTAsYT10Lmxlbmd0aDtuPGE7bisrKWUuc2hhcGVzLnB1c2godFtuXS51dWlkKTtlbHNlIGUuc2hhcGVzLnB1c2godC51dWlkKTtyZXR1cm4gZX0pKHRoaXMucGFyYW1ldGVycy5zaGFwZXMsdCl9fWZ1bmN0aW9uIHlpdCh0KXt5bnQuY2FsbCh0aGlzKSx0aGlzLnR5cGU9IlNoYWRvd01hdGVyaWFsIix0aGlzLmNvbG9yPW5ldyBPbnQoMCksdGhpcy50cmFuc3BhcmVudD0hMCx0aGlzLnNldFZhbHVlcyh0KX1mdW5jdGlvbiBraXQodCl7TWV0LmNhbGwodGhpcyx0KSx0aGlzLnR5cGU9IlJhd1NoYWRlck1hdGVyaWFsIn1mdW5jdGlvbiB2aXQodCl7eW50LmNhbGwodGhpcyksdGhpcy5kZWZpbmVzPXtTVEFOREFSRDoiIn0sdGhpcy50eXBlPSJNZXNoU3RhbmRhcmRNYXRlcmlhbCIsdGhpcy5jb2xvcj1uZXcgT250KDE2Nzc3MjE1KSx0aGlzLnJvdWdobmVzcz0xLHRoaXMubWV0YWxuZXNzPTAsdGhpcy5tYXA9bnVsbCx0aGlzLmxpZ2h0TWFwPW51bGwsdGhpcy5saWdodE1hcEludGVuc2l0eT0xLHRoaXMuYW9NYXA9bnVsbCx0aGlzLmFvTWFwSW50ZW5zaXR5PTEsdGhpcy5lbWlzc2l2ZT1uZXcgT250KDApLHRoaXMuZW1pc3NpdmVJbnRlbnNpdHk9MSx0aGlzLmVtaXNzaXZlTWFwPW51bGwsdGhpcy5idW1wTWFwPW51bGwsdGhpcy5idW1wU2NhbGU9MSx0aGlzLm5vcm1hbE1hcD1udWxsLHRoaXMubm9ybWFsTWFwVHlwZT0wLHRoaXMubm9ybWFsU2NhbGU9bmV3IFc5KDEsMSksdGhpcy5kaXNwbGFjZW1lbnRNYXA9bnVsbCx0aGlzLmRpc3BsYWNlbWVudFNjYWxlPTEsdGhpcy5kaXNwbGFjZW1lbnRCaWFzPTAsdGhpcy5yb3VnaG5lc3NNYXA9bnVsbCx0aGlzLm1ldGFsbmVzc01hcD1udWxsLHRoaXMuYWxwaGFNYXA9bnVsbCx0aGlzLmVudk1hcD1udWxsLHRoaXMuZW52TWFwSW50ZW5zaXR5PTEsdGhpcy5yZWZyYWN0aW9uUmF0aW89Ljk4LHRoaXMud2lyZWZyYW1lPSExLHRoaXMud2lyZWZyYW1lTGluZXdpZHRoPTEsdGhpcy53aXJlZnJhbWVMaW5lY2FwPSJyb3VuZCIsdGhpcy53aXJlZnJhbWVMaW5lam9pbj0icm91bmQiLHRoaXMuc2tpbm5pbmc9ITEsdGhpcy5tb3JwaFRhcmdldHM9ITEsdGhpcy5tb3JwaE5vcm1hbHM9ITEsdGhpcy52ZXJ0ZXhUYW5nZW50cz0hMSx0aGlzLnNldFZhbHVlcyh0KX1mdW5jdGlvbiB3aXQodCl7dml0LmNhbGwodGhpcyksdGhpcy5kZWZpbmVzPXtTVEFOREFSRDoiIixQSFlTSUNBTDoiIn0sdGhpcy50eXBlPSJNZXNoUGh5c2ljYWxNYXRlcmlhbCIsdGhpcy5jbGVhcmNvYXQ9MCx0aGlzLmNsZWFyY29hdE1hcD1udWxsLHRoaXMuY2xlYXJjb2F0Um91Z2huZXNzPTAsdGhpcy5jbGVhcmNvYXRSb3VnaG5lc3NNYXA9bnVsbCx0aGlzLmNsZWFyY29hdE5vcm1hbFNjYWxlPW5ldyBXOSgxLDEpLHRoaXMuY2xlYXJjb2F0Tm9ybWFsTWFwPW51bGwsdGhpcy5yZWZsZWN0aXZpdHk9LjUsT2JqZWN0LmRlZmluZVByb3BlcnR5KHRoaXMsImlvciIse2dldDpmdW5jdGlvbigpe3JldHVybigxKy40KnRoaXMucmVmbGVjdGl2aXR5KS8oMS0uNCp0aGlzLnJlZmxlY3Rpdml0eSl9LHNldDpmdW5jdGlvbih0KXt0aGlzLnJlZmxlY3Rpdml0eT1VOS5jbGFtcCgyLjUqKHQtMSkvKHQrMSksMCwxKX19KSx0aGlzLnNoZWVuPW51bGwsdGhpcy50cmFuc21pc3Npb249MCx0aGlzLnRyYW5zbWlzc2lvbk1hcD1udWxsLHRoaXMuc2V0VmFsdWVzKHQpfWZ1bmN0aW9uIFNpdCh0KXt5bnQuY2FsbCh0aGlzKSx0aGlzLnR5cGU9Ik1lc2hQaG9uZ01hdGVyaWFsIix0aGlzLmNvbG9yPW5ldyBPbnQoMTY3NzcyMTUpLHRoaXMuc3BlY3VsYXI9bmV3IE9udCgxMTE4NDgxKSx0aGlzLnNoaW5pbmVzcz0zMCx0aGlzLm1hcD1udWxsLHRoaXMubGlnaHRNYXA9bnVsbCx0aGlzLmxpZ2h0TWFwSW50ZW5zaXR5PTEsdGhpcy5hb01hcD1udWxsLHRoaXMuYW9NYXBJbnRlbnNpdHk9MSx0aGlzLmVtaXNzaXZlPW5ldyBPbnQoMCksdGhpcy5lbWlzc2l2ZUludGVuc2l0eT0xLHRoaXMuZW1pc3NpdmVNYXA9bnVsbCx0aGlzLmJ1bXBNYXA9bnVsbCx0aGlzLmJ1bXBTY2FsZT0xLHRoaXMubm9ybWFsTWFwPW51bGwsdGhpcy5ub3JtYWxNYXBUeXBlPTAsdGhpcy5ub3JtYWxTY2FsZT1uZXcgVzkoMSwxKSx0aGlzLmRpc3BsYWNlbWVudE1hcD1udWxsLHRoaXMuZGlzcGxhY2VtZW50U2NhbGU9MSx0aGlzLmRpc3BsYWNlbWVudEJpYXM9MCx0aGlzLnNwZWN1bGFyTWFwPW51bGwsdGhpcy5hbHBoYU1hcD1udWxsLHRoaXMuZW52TWFwPW51bGwsdGhpcy5jb21iaW5lPTAsdGhpcy5yZWZsZWN0aXZpdHk9MSx0aGlzLnJlZnJhY3Rpb25SYXRpbz0uOTgsdGhpcy53aXJlZnJhbWU9ITEsdGhpcy53aXJlZnJhbWVMaW5ld2lkdGg9MSx0aGlzLndpcmVmcmFtZUxpbmVjYXA9InJvdW5kIix0aGlzLndpcmVmcmFtZUxpbmVqb2luPSJyb3VuZCIsdGhpcy5za2lubmluZz0hMSx0aGlzLm1vcnBoVGFyZ2V0cz0hMSx0aGlzLm1vcnBoTm9ybWFscz0hMSx0aGlzLnNldFZhbHVlcyh0KX1mdW5jdGlvbiBFaXQodCl7eW50LmNhbGwodGhpcyksdGhpcy5kZWZpbmVzPXtUT09OOiIifSx0aGlzLnR5cGU9Ik1lc2hUb29uTWF0ZXJpYWwiLHRoaXMuY29sb3I9bmV3IE9udCgxNjc3NzIxNSksdGhpcy5tYXA9bnVsbCx0aGlzLmdyYWRpZW50TWFwPW51bGwsdGhpcy5saWdodE1hcD1udWxsLHRoaXMubGlnaHRNYXBJbnRlbnNpdHk9MSx0aGlzLmFvTWFwPW51bGwsdGhpcy5hb01hcEludGVuc2l0eT0xLHRoaXMuZW1pc3NpdmU9bmV3IE9udCgwKSx0aGlzLmVtaXNzaXZlSW50ZW5zaXR5PTEsdGhpcy5lbWlzc2l2ZU1hcD1udWxsLHRoaXMuYnVtcE1hcD1udWxsLHRoaXMuYnVtcFNjYWxlPTEsdGhpcy5ub3JtYWxNYXA9bnVsbCx0aGlzLm5vcm1hbE1hcFR5cGU9MCx0aGlzLm5vcm1hbFNjYWxlPW5ldyBXOSgxLDEpLHRoaXMuZGlzcGxhY2VtZW50TWFwPW51bGwsdGhpcy5kaXNwbGFjZW1lbnRTY2FsZT0xLHRoaXMuZGlzcGxhY2VtZW50Qmlhcz0wLHRoaXMuYWxwaGFNYXA9bnVsbCx0aGlzLndpcmVmcmFtZT0hMSx0aGlzLndpcmVmcmFtZUxpbmV3aWR0aD0xLHRoaXMud2lyZWZyYW1lTGluZWNhcD0icm91bmQiLHRoaXMud2lyZWZyYW1lTGluZWpvaW49InJvdW5kIix0aGlzLnNraW5uaW5nPSExLHRoaXMubW9ycGhUYXJnZXRzPSExLHRoaXMubW9ycGhOb3JtYWxzPSExLHRoaXMuc2V0VmFsdWVzKHQpfWZ1bmN0aW9uIEFpdCh0KXt5bnQuY2FsbCh0aGlzKSx0aGlzLnR5cGU9Ik1lc2hOb3JtYWxNYXRlcmlhbCIsdGhpcy5idW1wTWFwPW51bGwsdGhpcy5idW1wU2NhbGU9MSx0aGlzLm5vcm1hbE1hcD1udWxsLHRoaXMubm9ybWFsTWFwVHlwZT0wLHRoaXMubm9ybWFsU2NhbGU9bmV3IFc5KDEsMSksdGhpcy5kaXNwbGFjZW1lbnRNYXA9bnVsbCx0aGlzLmRpc3BsYWNlbWVudFNjYWxlPTEsdGhpcy5kaXNwbGFjZW1lbnRCaWFzPTAsdGhpcy53aXJlZnJhbWU9ITEsdGhpcy53aXJlZnJhbWVMaW5ld2lkdGg9MSx0aGlzLmZvZz0hMSx0aGlzLnNraW5uaW5nPSExLHRoaXMubW9ycGhUYXJnZXRzPSExLHRoaXMubW9ycGhOb3JtYWxzPSExLHRoaXMuc2V0VmFsdWVzKHQpfWZ1bmN0aW9uIHppdCh0KXt5bnQuY2FsbCh0aGlzKSx0aGlzLnR5cGU9Ik1lc2hMYW1iZXJ0TWF0ZXJpYWwiLHRoaXMuY29sb3I9bmV3IE9udCgxNjc3NzIxNSksdGhpcy5tYXA9bnVsbCx0aGlzLmxpZ2h0TWFwPW51bGwsdGhpcy5saWdodE1hcEludGVuc2l0eT0xLHRoaXMuYW9NYXA9bnVsbCx0aGlzLmFvTWFwSW50ZW5zaXR5PTEsdGhpcy5lbWlzc2l2ZT1uZXcgT250KDApLHRoaXMuZW1pc3NpdmVJbnRlbnNpdHk9MSx0aGlzLmVtaXNzaXZlTWFwPW51bGwsdGhpcy5zcGVjdWxhck1hcD1udWxsLHRoaXMuYWxwaGFNYXA9bnVsbCx0aGlzLmVudk1hcD1udWxsLHRoaXMuY29tYmluZT0wLHRoaXMucmVmbGVjdGl2aXR5PTEsdGhpcy5yZWZyYWN0aW9uUmF0aW89Ljk4LHRoaXMud2lyZWZyYW1lPSExLHRoaXMud2lyZWZyYW1lTGluZXdpZHRoPTEsdGhpcy53aXJlZnJhbWVMaW5lY2FwPSJyb3VuZCIsdGhpcy53aXJlZnJhbWVMaW5lam9pbj0icm91bmQiLHRoaXMuc2tpbm5pbmc9ITEsdGhpcy5tb3JwaFRhcmdldHM9ITEsdGhpcy5tb3JwaE5vcm1hbHM9ITEsdGhpcy5zZXRWYWx1ZXModCl9ZnVuY3Rpb24gUml0KHQpe3ludC5jYWxsKHRoaXMpLHRoaXMuZGVmaW5lcz17TUFUQ0FQOiIifSx0aGlzLnR5cGU9Ik1lc2hNYXRjYXBNYXRlcmlhbCIsdGhpcy5jb2xvcj1uZXcgT250KDE2Nzc3MjE1KSx0aGlzLm1hdGNhcD1udWxsLHRoaXMubWFwPW51bGwsdGhpcy5idW1wTWFwPW51bGwsdGhpcy5idW1wU2NhbGU9MSx0aGlzLm5vcm1hbE1hcD1udWxsLHRoaXMubm9ybWFsTWFwVHlwZT0wLHRoaXMubm9ybWFsU2NhbGU9bmV3IFc5KDEsMSksdGhpcy5kaXNwbGFjZW1lbnRNYXA9bnVsbCx0aGlzLmRpc3BsYWNlbWVudFNjYWxlPTEsdGhpcy5kaXNwbGFjZW1lbnRCaWFzPTAsdGhpcy5hbHBoYU1hcD1udWxsLHRoaXMuc2tpbm5pbmc9ITEsdGhpcy5tb3JwaFRhcmdldHM9ITEsdGhpcy5tb3JwaE5vcm1hbHM9ITEsdGhpcy5zZXRWYWx1ZXModCl9ZnVuY3Rpb24gVGl0KHQpe3lydC5jYWxsKHRoaXMpLHRoaXMudHlwZT0iTGluZURhc2hlZE1hdGVyaWFsIix0aGlzLnNjYWxlPTEsdGhpcy5kYXNoU2l6ZT0zLHRoaXMuZ2FwU2l6ZT0xLHRoaXMuc2V0VmFsdWVzKHQpfSh5aXQucHJvdG90eXBlPU9iamVjdC5jcmVhdGUoeW50LnByb3RvdHlwZSkpLmNvbnN0cnVjdG9yPXlpdCx5aXQucHJvdG90eXBlLmlzU2hhZG93TWF0ZXJpYWw9ITAseWl0LnByb3RvdHlwZS5jb3B5PWZ1bmN0aW9uKHQpe3JldHVybiB5bnQucHJvdG90eXBlLmNvcHkuY2FsbCh0aGlzLHQpLHRoaXMuY29sb3IuY29weSh0LmNvbG9yKSx0aGlzfSwoa2l0LnByb3RvdHlwZT1PYmplY3QuY3JlYXRlKE1ldC5wcm90b3R5cGUpKS5jb25zdHJ1Y3Rvcj1raXQsa2l0LnByb3RvdHlwZS5pc1Jhd1NoYWRlck1hdGVyaWFsPSEwLCh2aXQucHJvdG90eXBlPU9iamVjdC5jcmVhdGUoeW50LnByb3RvdHlwZSkpLmNvbnN0cnVjdG9yPXZpdCx2aXQucHJvdG90eXBlLmlzTWVzaFN0YW5kYXJkTWF0ZXJpYWw9ITAsdml0LnByb3RvdHlwZS5jb3B5PWZ1bmN0aW9uKHQpe3JldHVybiB5bnQucHJvdG90eXBlLmNvcHkuY2FsbCh0aGlzLHQpLHRoaXMuZGVmaW5lcz17U1RBTkRBUkQ6IiJ9LHRoaXMuY29sb3IuY29weSh0LmNvbG9yKSx0aGlzLnJvdWdobmVzcz10LnJvdWdobmVzcyx0aGlzLm1ldGFsbmVzcz10Lm1ldGFsbmVzcyx0aGlzLm1hcD10Lm1hcCx0aGlzLmxpZ2h0TWFwPXQubGlnaHRNYXAsdGhpcy5saWdodE1hcEludGVuc2l0eT10LmxpZ2h0TWFwSW50ZW5zaXR5LHRoaXMuYW9NYXA9dC5hb01hcCx0aGlzLmFvTWFwSW50ZW5zaXR5PXQuYW9NYXBJbnRlbnNpdHksdGhpcy5lbWlzc2l2ZS5jb3B5KHQuZW1pc3NpdmUpLHRoaXMuZW1pc3NpdmVNYXA9dC5lbWlzc2l2ZU1hcCx0aGlzLmVtaXNzaXZlSW50ZW5zaXR5PXQuZW1pc3NpdmVJbnRlbnNpdHksdGhpcy5idW1wTWFwPXQuYnVtcE1hcCx0aGlzLmJ1bXBTY2FsZT10LmJ1bXBTY2FsZSx0aGlzLm5vcm1hbE1hcD10Lm5vcm1hbE1hcCx0aGlzLm5vcm1hbE1hcFR5cGU9dC5ub3JtYWxNYXBUeXBlLHRoaXMubm9ybWFsU2NhbGUuY29weSh0Lm5vcm1hbFNjYWxlKSx0aGlzLmRpc3BsYWNlbWVudE1hcD10LmRpc3BsYWNlbWVudE1hcCx0aGlzLmRpc3BsYWNlbWVudFNjYWxlPXQuZGlzcGxhY2VtZW50U2NhbGUsdGhpcy5kaXNwbGFjZW1lbnRCaWFzPXQuZGlzcGxhY2VtZW50Qmlhcyx0aGlzLnJvdWdobmVzc01hcD10LnJvdWdobmVzc01hcCx0aGlzLm1ldGFsbmVzc01hcD10Lm1ldGFsbmVzc01hcCx0aGlzLmFscGhhTWFwPXQuYWxwaGFNYXAsdGhpcy5lbnZNYXA9dC5lbnZNYXAsdGhpcy5lbnZNYXBJbnRlbnNpdHk9dC5lbnZNYXBJbnRlbnNpdHksdGhpcy5yZWZyYWN0aW9uUmF0aW89dC5yZWZyYWN0aW9uUmF0aW8sdGhpcy53aXJlZnJhbWU9dC53aXJlZnJhbWUsdGhpcy53aXJlZnJhbWVMaW5ld2lkdGg9dC53aXJlZnJhbWVMaW5ld2lkdGgsdGhpcy53aXJlZnJhbWVMaW5lY2FwPXQud2lyZWZyYW1lTGluZWNhcCx0aGlzLndpcmVmcmFtZUxpbmVqb2luPXQud2lyZWZyYW1lTGluZWpvaW4sdGhpcy5za2lubmluZz10LnNraW5uaW5nLHRoaXMubW9ycGhUYXJnZXRzPXQubW9ycGhUYXJnZXRzLHRoaXMubW9ycGhOb3JtYWxzPXQubW9ycGhOb3JtYWxzLHRoaXMudmVydGV4VGFuZ2VudHM9dC52ZXJ0ZXhUYW5nZW50cyx0aGlzfSwod2l0LnByb3RvdHlwZT1PYmplY3QuY3JlYXRlKHZpdC5wcm90b3R5cGUpKS5jb25zdHJ1Y3Rvcj13aXQsd2l0LnByb3RvdHlwZS5pc01lc2hQaHlzaWNhbE1hdGVyaWFsPSEwLHdpdC5wcm90b3R5cGUuY29weT1mdW5jdGlvbih0KXtyZXR1cm4gdml0LnByb3RvdHlwZS5jb3B5LmNhbGwodGhpcyx0KSx0aGlzLmRlZmluZXM9e1NUQU5EQVJEOiIiLFBIWVNJQ0FMOiIifSx0aGlzLmNsZWFyY29hdD10LmNsZWFyY29hdCx0aGlzLmNsZWFyY29hdE1hcD10LmNsZWFyY29hdE1hcCx0aGlzLmNsZWFyY29hdFJvdWdobmVzcz10LmNsZWFyY29hdFJvdWdobmVzcyx0aGlzLmNsZWFyY29hdFJvdWdobmVzc01hcD10LmNsZWFyY29hdFJvdWdobmVzc01hcCx0aGlzLmNsZWFyY29hdE5vcm1hbE1hcD10LmNsZWFyY29hdE5vcm1hbE1hcCx0aGlzLmNsZWFyY29hdE5vcm1hbFNjYWxlLmNvcHkodC5jbGVhcmNvYXROb3JtYWxTY2FsZSksdGhpcy5yZWZsZWN0aXZpdHk9dC5yZWZsZWN0aXZpdHksdGhpcy5zaGVlbj10LnNoZWVuPyh0aGlzLnNoZWVufHxuZXcgT250KS5jb3B5KHQuc2hlZW4pOm51bGwsdGhpcy50cmFuc21pc3Npb249dC50cmFuc21pc3Npb24sdGhpcy50cmFuc21pc3Npb25NYXA9dC50cmFuc21pc3Npb25NYXAsdGhpc30sKFNpdC5wcm90b3R5cGU9T2JqZWN0LmNyZWF0ZSh5bnQucHJvdG90eXBlKSkuY29uc3RydWN0b3I9U2l0LFNpdC5wcm90b3R5cGUuaXNNZXNoUGhvbmdNYXRlcmlhbD0hMCxTaXQucHJvdG90eXBlLmNvcHk9ZnVuY3Rpb24odCl7cmV0dXJuIHludC5wcm90b3R5cGUuY29weS5jYWxsKHRoaXMsdCksdGhpcy5jb2xvci5jb3B5KHQuY29sb3IpLHRoaXMuc3BlY3VsYXIuY29weSh0LnNwZWN1bGFyKSx0aGlzLnNoaW5pbmVzcz10LnNoaW5pbmVzcyx0aGlzLm1hcD10Lm1hcCx0aGlzLmxpZ2h0TWFwPXQubGlnaHRNYXAsdGhpcy5saWdodE1hcEludGVuc2l0eT10LmxpZ2h0TWFwSW50ZW5zaXR5LHRoaXMuYW9NYXA9dC5hb01hcCx0aGlzLmFvTWFwSW50ZW5zaXR5PXQuYW9NYXBJbnRlbnNpdHksdGhpcy5lbWlzc2l2ZS5jb3B5KHQuZW1pc3NpdmUpLHRoaXMuZW1pc3NpdmVNYXA9dC5lbWlzc2l2ZU1hcCx0aGlzLmVtaXNzaXZlSW50ZW5zaXR5PXQuZW1pc3NpdmVJbnRlbnNpdHksdGhpcy5idW1wTWFwPXQuYnVtcE1hcCx0aGlzLmJ1bXBTY2FsZT10LmJ1bXBTY2FsZSx0aGlzLm5vcm1hbE1hcD10Lm5vcm1hbE1hcCx0aGlzLm5vcm1hbE1hcFR5cGU9dC5ub3JtYWxNYXBUeXBlLHRoaXMubm9ybWFsU2NhbGUuY29weSh0Lm5vcm1hbFNjYWxlKSx0aGlzLmRpc3BsYWNlbWVudE1hcD10LmRpc3BsYWNlbWVudE1hcCx0aGlzLmRpc3BsYWNlbWVudFNjYWxlPXQuZGlzcGxhY2VtZW50U2NhbGUsdGhpcy5kaXNwbGFjZW1lbnRCaWFzPXQuZGlzcGxhY2VtZW50Qmlhcyx0aGlzLnNwZWN1bGFyTWFwPXQuc3BlY3VsYXJNYXAsdGhpcy5hbHBoYU1hcD10LmFscGhhTWFwLHRoaXMuZW52TWFwPXQuZW52TWFwLHRoaXMuY29tYmluZT10LmNvbWJpbmUsdGhpcy5yZWZsZWN0aXZpdHk9dC5yZWZsZWN0aXZpdHksdGhpcy5yZWZyYWN0aW9uUmF0aW89dC5yZWZyYWN0aW9uUmF0aW8sdGhpcy53aXJlZnJhbWU9dC53aXJlZnJhbWUsdGhpcy53aXJlZnJhbWVMaW5ld2lkdGg9dC53aXJlZnJhbWVMaW5ld2lkdGgsdGhpcy53aXJlZnJhbWVMaW5lY2FwPXQud2lyZWZyYW1lTGluZWNhcCx0aGlzLndpcmVmcmFtZUxpbmVqb2luPXQud2lyZWZyYW1lTGluZWpvaW4sdGhpcy5za2lubmluZz10LnNraW5uaW5nLHRoaXMubW9ycGhUYXJnZXRzPXQubW9ycGhUYXJnZXRzLHRoaXMubW9ycGhOb3JtYWxzPXQubW9ycGhOb3JtYWxzLHRoaXN9LChFaXQucHJvdG90eXBlPU9iamVjdC5jcmVhdGUoeW50LnByb3RvdHlwZSkpLmNvbnN0cnVjdG9yPUVpdCxFaXQucHJvdG90eXBlLmlzTWVzaFRvb25NYXRlcmlhbD0hMCxFaXQucHJvdG90eXBlLmNvcHk9ZnVuY3Rpb24odCl7cmV0dXJuIHludC5wcm90b3R5cGUuY29weS5jYWxsKHRoaXMsdCksdGhpcy5jb2xvci5jb3B5KHQuY29sb3IpLHRoaXMubWFwPXQubWFwLHRoaXMuZ3JhZGllbnRNYXA9dC5ncmFkaWVudE1hcCx0aGlzLmxpZ2h0TWFwPXQubGlnaHRNYXAsdGhpcy5saWdodE1hcEludGVuc2l0eT10LmxpZ2h0TWFwSW50ZW5zaXR5LHRoaXMuYW9NYXA9dC5hb01hcCx0aGlzLmFvTWFwSW50ZW5zaXR5PXQuYW9NYXBJbnRlbnNpdHksdGhpcy5lbWlzc2l2ZS5jb3B5KHQuZW1pc3NpdmUpLHRoaXMuZW1pc3NpdmVNYXA9dC5lbWlzc2l2ZU1hcCx0aGlzLmVtaXNzaXZlSW50ZW5zaXR5PXQuZW1pc3NpdmVJbnRlbnNpdHksdGhpcy5idW1wTWFwPXQuYnVtcE1hcCx0aGlzLmJ1bXBTY2FsZT10LmJ1bXBTY2FsZSx0aGlzLm5vcm1hbE1hcD10Lm5vcm1hbE1hcCx0aGlzLm5vcm1hbE1hcFR5cGU9dC5ub3JtYWxNYXBUeXBlLHRoaXMubm9ybWFsU2NhbGUuY29weSh0Lm5vcm1hbFNjYWxlKSx0aGlzLmRpc3BsYWNlbWVudE1hcD10LmRpc3BsYWNlbWVudE1hcCx0aGlzLmRpc3BsYWNlbWVudFNjYWxlPXQuZGlzcGxhY2VtZW50U2NhbGUsdGhpcy5kaXNwbGFjZW1lbnRCaWFzPXQuZGlzcGxhY2VtZW50Qmlhcyx0aGlzLmFscGhhTWFwPXQuYWxwaGFNYXAsdGhpcy53aXJlZnJhbWU9dC53aXJlZnJhbWUsdGhpcy53aXJlZnJhbWVMaW5ld2lkdGg9dC53aXJlZnJhbWVMaW5ld2lkdGgsdGhpcy53aXJlZnJhbWVMaW5lY2FwPXQud2lyZWZyYW1lTGluZWNhcCx0aGlzLndpcmVmcmFtZUxpbmVqb2luPXQud2lyZWZyYW1lTGluZWpvaW4sdGhpcy5za2lubmluZz10LnNraW5uaW5nLHRoaXMubW9ycGhUYXJnZXRzPXQubW9ycGhUYXJnZXRzLHRoaXMubW9ycGhOb3JtYWxzPXQubW9ycGhOb3JtYWxzLHRoaXN9LChBaXQucHJvdG90eXBlPU9iamVjdC5jcmVhdGUoeW50LnByb3RvdHlwZSkpLmNvbnN0cnVjdG9yPUFpdCxBaXQucHJvdG90eXBlLmlzTWVzaE5vcm1hbE1hdGVyaWFsPSEwLEFpdC5wcm90b3R5cGUuY29weT1mdW5jdGlvbih0KXtyZXR1cm4geW50LnByb3RvdHlwZS5jb3B5LmNhbGwodGhpcyx0KSx0aGlzLmJ1bXBNYXA9dC5idW1wTWFwLHRoaXMuYnVtcFNjYWxlPXQuYnVtcFNjYWxlLHRoaXMubm9ybWFsTWFwPXQubm9ybWFsTWFwLHRoaXMubm9ybWFsTWFwVHlwZT10Lm5vcm1hbE1hcFR5cGUsdGhpcy5ub3JtYWxTY2FsZS5jb3B5KHQubm9ybWFsU2NhbGUpLHRoaXMuZGlzcGxhY2VtZW50TWFwPXQuZGlzcGxhY2VtZW50TWFwLHRoaXMuZGlzcGxhY2VtZW50U2NhbGU9dC5kaXNwbGFjZW1lbnRTY2FsZSx0aGlzLmRpc3BsYWNlbWVudEJpYXM9dC5kaXNwbGFjZW1lbnRCaWFzLHRoaXMud2lyZWZyYW1lPXQud2lyZWZyYW1lLHRoaXMud2lyZWZyYW1lTGluZXdpZHRoPXQud2lyZWZyYW1lTGluZXdpZHRoLHRoaXMuc2tpbm5pbmc9dC5za2lubmluZyx0aGlzLm1vcnBoVGFyZ2V0cz10Lm1vcnBoVGFyZ2V0cyx0aGlzLm1vcnBoTm9ybWFscz10Lm1vcnBoTm9ybWFscyx0aGlzfSwoeml0LnByb3RvdHlwZT1PYmplY3QuY3JlYXRlKHludC5wcm90b3R5cGUpKS5jb25zdHJ1Y3Rvcj16aXQseml0LnByb3RvdHlwZS5pc01lc2hMYW1iZXJ0TWF0ZXJpYWw9ITAseml0LnByb3RvdHlwZS5jb3B5PWZ1bmN0aW9uKHQpe3JldHVybiB5bnQucHJvdG90eXBlLmNvcHkuY2FsbCh0aGlzLHQpLHRoaXMuY29sb3IuY29weSh0LmNvbG9yKSx0aGlzLm1hcD10Lm1hcCx0aGlzLmxpZ2h0TWFwPXQubGlnaHRNYXAsdGhpcy5saWdodE1hcEludGVuc2l0eT10LmxpZ2h0TWFwSW50ZW5zaXR5LHRoaXMuYW9NYXA9dC5hb01hcCx0aGlzLmFvTWFwSW50ZW5zaXR5PXQuYW9NYXBJbnRlbnNpdHksdGhpcy5lbWlzc2l2ZS5jb3B5KHQuZW1pc3NpdmUpLHRoaXMuZW1pc3NpdmVNYXA9dC5lbWlzc2l2ZU1hcCx0aGlzLmVtaXNzaXZlSW50ZW5zaXR5PXQuZW1pc3NpdmVJbnRlbnNpdHksdGhpcy5zcGVjdWxhck1hcD10LnNwZWN1bGFyTWFwLHRoaXMuYWxwaGFNYXA9dC5hbHBoYU1hcCx0aGlzLmVudk1hcD10LmVudk1hcCx0aGlzLmNvbWJpbmU9dC5jb21iaW5lLHRoaXMucmVmbGVjdGl2aXR5PXQucmVmbGVjdGl2aXR5LHRoaXMucmVmcmFjdGlvblJhdGlvPXQucmVmcmFjdGlvblJhdGlvLHRoaXMud2lyZWZyYW1lPXQud2lyZWZyYW1lLHRoaXMud2lyZWZyYW1lTGluZXdpZHRoPXQud2lyZWZyYW1lTGluZXdpZHRoLHRoaXMud2lyZWZyYW1lTGluZWNhcD10LndpcmVmcmFtZUxpbmVjYXAsdGhpcy53aXJlZnJhbWVMaW5lam9pbj10LndpcmVmcmFtZUxpbmVqb2luLHRoaXMuc2tpbm5pbmc9dC5za2lubmluZyx0aGlzLm1vcnBoVGFyZ2V0cz10Lm1vcnBoVGFyZ2V0cyx0aGlzLm1vcnBoTm9ybWFscz10Lm1vcnBoTm9ybWFscyx0aGlzfSwoUml0LnByb3RvdHlwZT1PYmplY3QuY3JlYXRlKHludC5wcm90b3R5cGUpKS5jb25zdHJ1Y3Rvcj1SaXQsUml0LnByb3RvdHlwZS5pc01lc2hNYXRjYXBNYXRlcmlhbD0hMCxSaXQucHJvdG90eXBlLmNvcHk9ZnVuY3Rpb24odCl7cmV0dXJuIHludC5wcm90b3R5cGUuY29weS5jYWxsKHRoaXMsdCksdGhpcy5kZWZpbmVzPXtNQVRDQVA6IiJ9LHRoaXMuY29sb3IuY29weSh0LmNvbG9yKSx0aGlzLm1hdGNhcD10Lm1hdGNhcCx0aGlzLm1hcD10Lm1hcCx0aGlzLmJ1bXBNYXA9dC5idW1wTWFwLHRoaXMuYnVtcFNjYWxlPXQuYnVtcFNjYWxlLHRoaXMubm9ybWFsTWFwPXQubm9ybWFsTWFwLHRoaXMubm9ybWFsTWFwVHlwZT10Lm5vcm1hbE1hcFR5cGUsdGhpcy5ub3JtYWxTY2FsZS5jb3B5KHQubm9ybWFsU2NhbGUpLHRoaXMuZGlzcGxhY2VtZW50TWFwPXQuZGlzcGxhY2VtZW50TWFwLHRoaXMuZGlzcGxhY2VtZW50U2NhbGU9dC5kaXNwbGFjZW1lbnRTY2FsZSx0aGlzLmRpc3BsYWNlbWVudEJpYXM9dC5kaXNwbGFjZW1lbnRCaWFzLHRoaXMuYWxwaGFNYXA9dC5hbHBoYU1hcCx0aGlzLnNraW5uaW5nPXQuc2tpbm5pbmcsdGhpcy5tb3JwaFRhcmdldHM9dC5tb3JwaFRhcmdldHMsdGhpcy5tb3JwaE5vcm1hbHM9dC5tb3JwaE5vcm1hbHMsdGhpc30sKFRpdC5wcm90b3R5cGU9T2JqZWN0LmNyZWF0ZSh5cnQucHJvdG90eXBlKSkuY29uc3RydWN0b3I9VGl0LFRpdC5wcm90b3R5cGUuaXNMaW5lRGFzaGVkTWF0ZXJpYWw9ITAsVGl0LnByb3RvdHlwZS5jb3B5PWZ1bmN0aW9uKHQpe3JldHVybiB5cnQucHJvdG90eXBlLmNvcHkuY2FsbCh0aGlzLHQpLHRoaXMuc2NhbGU9dC5zY2FsZSx0aGlzLmRhc2hTaXplPXQuZGFzaFNpemUsdGhpcy5nYXBTaXplPXQuZ2FwU2l6ZSx0aGlzfTt2YXIgRGl0PU9iamVjdC5mcmVlemUoe19fcHJvdG9fXzpudWxsLFNoYWRvd01hdGVyaWFsOnlpdCxTcHJpdGVNYXRlcmlhbDpXb3QsUmF3U2hhZGVyTWF0ZXJpYWw6a2l0LFNoYWRlck1hdGVyaWFsOk1ldCxQb2ludHNNYXRlcmlhbDpJcnQsTWVzaFBoeXNpY2FsTWF0ZXJpYWw6d2l0LE1lc2hTdGFuZGFyZE1hdGVyaWFsOnZpdCxNZXNoUGhvbmdNYXRlcmlhbDpTaXQsTWVzaFRvb25NYXRlcmlhbDpFaXQsTWVzaE5vcm1hbE1hdGVyaWFsOkFpdCxNZXNoTGFtYmVydE1hdGVyaWFsOnppdCxNZXNoRGVwdGhNYXRlcmlhbDp3b3QsTWVzaERpc3RhbmNlTWF0ZXJpYWw6U290LE1lc2hCYXNpY01hdGVyaWFsOmtudCxNZXNoTWF0Y2FwTWF0ZXJpYWw6Uml0LExpbmVEYXNoZWRNYXRlcmlhbDpUaXQsTGluZUJhc2ljTWF0ZXJpYWw6eXJ0LE1hdGVyaWFsOnludH0pO2NvbnN0IElpdD17YXJyYXlTbGljZTpmdW5jdGlvbih0LG4sZSl7cmV0dXJuIElpdC5pc1R5cGVkQXJyYXkodCk/bmV3IHQuY29uc3RydWN0b3IodC5zdWJhcnJheShuLHZvaWQgMCE9PWU/ZTp0Lmxlbmd0aCkpOnQuc2xpY2UobixlKX0sY29udmVydEFycmF5OmZ1bmN0aW9uKHQsbixlKXtyZXR1cm4hdHx8IWUmJnQuY29uc3RydWN0b3I9PT1uP3Q6Im51bWJlciI9PXR5cGVvZiBuLkJZVEVTX1BFUl9FTEVNRU5UP25ldyBuKHQpOkFycmF5LnByb3RvdHlwZS5zbGljZS5jYWxsKHQpfSxpc1R5cGVkQXJyYXk6ZnVuY3Rpb24odCl7cmV0dXJuIEFycmF5QnVmZmVyLmlzVmlldyh0KSYmISh0IGluc3RhbmNlb2YgRGF0YVZpZXcpfSxnZXRLZXlmcmFtZU9yZGVyOmZ1bmN0aW9uKHQpe2NvbnN0IG49dC5sZW5ndGgsZT1uZXcgQXJyYXkobik7Zm9yKGxldCB0PTA7dCE9PW47Kyt0KWVbdF09dDtyZXR1cm4gZS5zb3J0KChmdW5jdGlvbiBhKG4sZSl7cmV0dXJuIHRbbl0tdFtlXX0pKSxlfSxzb3J0ZWRBcnJheTpmdW5jdGlvbih0LG4sZSl7Y29uc3QgYT10Lmxlbmd0aCxvPW5ldyB0LmNvbnN0cnVjdG9yKGEpO2ZvcihsZXQgcj0wLGk9MDtpIT09YTsrK3Ipe2NvbnN0IGE9ZVtyXSpuO2ZvcihsZXQgZT0wO2UhPT1uOysrZSlvW2krK109dFthK2VdfXJldHVybiBvfSxmbGF0dGVuSlNPTjpmdW5jdGlvbih0LG4sZSxhKXtsZXQgbz0xLHI9dFswXTtmb3IoO3ZvaWQgMCE9PXImJnZvaWQgMD09PXJbYV07KXI9dFtvKytdO2lmKHZvaWQgMD09PXIpcmV0dXJuO2xldCBpPXJbYV07aWYodm9pZCAwIT09aSlpZihBcnJheS5pc0FycmF5KGkpKWRve2k9clthXSx2b2lkIDAhPT1pJiYobi5wdXNoKHIudGltZSksZS5wdXNoLmFwcGx5KGUsaSkpLHI9dFtvKytdfXdoaWxlKHZvaWQgMCE9PXIpO2Vsc2UgaWYodm9pZCAwIT09aS50b0FycmF5KWRve2k9clthXSx2b2lkIDAhPT1pJiYobi5wdXNoKHIudGltZSksaS50b0FycmF5KGUsZS5sZW5ndGgpKSxyPXRbbysrXX13aGlsZSh2b2lkIDAhPT1yKTtlbHNlIGRve2k9clthXSx2b2lkIDAhPT1pJiYobi5wdXNoKHIudGltZSksZS5wdXNoKGkpKSxyPXRbbysrXX13aGlsZSh2b2lkIDAhPT1yKX0sc3ViY2xpcDpmdW5jdGlvbih0LG4sZSxhLG89MzApe2NvbnN0IHI9dC5jbG9uZSgpO3IubmFtZT1uO2NvbnN0IGk9W107Zm9yKGxldCB0PTA7dDxyLnRyYWNrcy5sZW5ndGg7Kyt0KXtjb25zdCBuPXIudHJhY2tzW3RdLGM9bi5nZXRWYWx1ZVNpemUoKSxzPVtdLGw9W107Zm9yKGxldCB0PTA7dDxuLnRpbWVzLmxlbmd0aDsrK3Qpe2NvbnN0IHI9bi50aW1lc1t0XSpvO2lmKCEocjxlfHxyPj1hKSl7cy5wdXNoKG4udGltZXNbdF0pO2ZvcihsZXQgZT0wO2U8YzsrK2UpbC5wdXNoKG4udmFsdWVzW3QqYytlXSl9fTAhPT1zLmxlbmd0aCYmKG4udGltZXM9SWl0LmNvbnZlcnRBcnJheShzLG4udGltZXMuY29uc3RydWN0b3IpLG4udmFsdWVzPUlpdC5jb252ZXJ0QXJyYXkobCxuLnZhbHVlcy5jb25zdHJ1Y3RvciksaS5wdXNoKG4pKX1yLnRyYWNrcz1pO2xldCBjPTEvMDtmb3IobGV0IHQ9MDt0PHIudHJhY2tzLmxlbmd0aDsrK3QpYz5yLnRyYWNrc1t0XS50aW1lc1swXSYmKGM9ci50cmFja3NbdF0udGltZXNbMF0pO2ZvcihsZXQgdD0wO3Q8ci50cmFja3MubGVuZ3RoOysrdClyLnRyYWNrc1t0XS5zaGlmdCgtMSpjKTtyZXR1cm4gci5yZXNldER1cmF0aW9uKCkscn0sbWFrZUNsaXBBZGRpdGl2ZTpmdW5jdGlvbih0LG49MCxlPXQsYT0zMCl7YTw9MCYmKGE9MzApO2NvbnN0IG89ZS50cmFja3MubGVuZ3RoLHI9bi9hO2ZvcihsZXQgbj0wO248bzsrK24pe2NvbnN0IGE9ZS50cmFja3Nbbl0sbz1hLlZhbHVlVHlwZU5hbWU7aWYoImJvb2wiPT09b3x8InN0cmluZyI9PT1vKWNvbnRpbnVlO2NvbnN0IGk9dC50cmFja3MuZmluZCgoZnVuY3Rpb24odCl7cmV0dXJuIHQubmFtZT09PWEubmFtZSYmdC5WYWx1ZVR5cGVOYW1lPT09b30pKTtpZih2b2lkIDA9PT1pKWNvbnRpbnVlO2xldCBjPTA7Y29uc3Qgcz1hLmdldFZhbHVlU2l6ZSgpO2EuY3JlYXRlSW50ZXJwb2xhbnQuaXNJbnRlcnBvbGFudEZhY3RvcnlNZXRob2RHTFRGQ3ViaWNTcGxpbmUmJihjPXMvMyk7bGV0IGw9MDtjb25zdCBtPWkuZ2V0VmFsdWVTaXplKCk7aS5jcmVhdGVJbnRlcnBvbGFudC5pc0ludGVycG9sYW50RmFjdG9yeU1ldGhvZEdMVEZDdWJpY1NwbGluZSYmKGw9bS8zKTtjb25zdCBkPWEudGltZXMubGVuZ3RoLTE7bGV0IGc7aWYocjw9YS50aW1lc1swXSlnPUlpdC5hcnJheVNsaWNlKGEudmFsdWVzLGMscy1jKTtlbHNlIGlmKHI+PWEudGltZXNbZF0pe2NvbnN0IHQ9ZCpzK2M7Zz1JaXQuYXJyYXlTbGljZShhLnZhbHVlcyx0LHQrcy1jKX1lbHNle2NvbnN0IHQ9YS5jcmVhdGVJbnRlcnBvbGFudCgpLG49YyxlPXMtYzt0LmV2YWx1YXRlKHIpLGc9SWl0LmFycmF5U2xpY2UodC5yZXN1bHRCdWZmZXIsbixlKX0icXVhdGVybmlvbiI9PT1vJiYobmV3ICQ5KS5mcm9tQXJyYXkoZykubm9ybWFsaXplKCkuY29uanVnYXRlKCkudG9BcnJheShnKTtjb25zdCBwPWkudGltZXMubGVuZ3RoO2ZvcihsZXQgdD0wO3Q8cDsrK3Qpe2NvbnN0IG49dCptK2w7aWYoInF1YXRlcm5pb24iPT09bykkOS5tdWx0aXBseVF1YXRlcm5pb25zRmxhdChpLnZhbHVlcyxuLGcsMCxpLnZhbHVlcyxuKTtlbHNle2NvbnN0IHQ9bS0yKmw7Zm9yKGxldCBlPTA7ZTx0OysrZSlpLnZhbHVlc1tuK2VdLT1nW2VdfX19cmV0dXJuIHQuYmxlbmRNb2RlPTI1MDEsdH19O2Z1bmN0aW9uIE5pdCh0LG4sZSxhKXt0aGlzLnBhcmFtZXRlclBvc2l0aW9ucz10LHRoaXMuX2NhY2hlZEluZGV4PTAsdGhpcy5yZXN1bHRCdWZmZXI9dm9pZCAwIT09YT9hOm5ldyBuLmNvbnN0cnVjdG9yKGUpLHRoaXMuc2FtcGxlVmFsdWVzPW4sdGhpcy52YWx1ZVNpemU9ZX1mdW5jdGlvbiBGaXQodCxuLGUsYSl7Tml0LmNhbGwodGhpcyx0LG4sZSxhKSx0aGlzLl93ZWlnaHRQcmV2PS0wLHRoaXMuX29mZnNldFByZXY9LTAsdGhpcy5fd2VpZ2h0TmV4dD0tMCx0aGlzLl9vZmZzZXROZXh0PS0wfWZ1bmN0aW9uIExpdCh0LG4sZSxhKXtOaXQuY2FsbCh0aGlzLHQsbixlLGEpfWZ1bmN0aW9uIEhpdCh0LG4sZSxhKXtOaXQuY2FsbCh0aGlzLHQsbixlLGEpfWZ1bmN0aW9uIEJpdCh0LG4sZSxhKXtpZih2b2lkIDA9PT10KXRocm93IG5ldyBFcnJvcigiVEhSRUUuS2V5ZnJhbWVUcmFjazogdHJhY2sgbmFtZSBpcyB1bmRlZmluZWQiKTtpZih2b2lkIDA9PT1ufHwwPT09bi5sZW5ndGgpdGhyb3cgbmV3IEVycm9yKCJUSFJFRS5LZXlmcmFtZVRyYWNrOiBubyBrZXlmcmFtZXMgaW4gdHJhY2sgbmFtZWQgIit0KTt0aGlzLm5hbWU9dCx0aGlzLnRpbWVzPUlpdC5jb252ZXJ0QXJyYXkobix0aGlzLlRpbWVCdWZmZXJUeXBlKSx0aGlzLnZhbHVlcz1JaXQuY29udmVydEFycmF5KGUsdGhpcy5WYWx1ZUJ1ZmZlclR5cGUpLHRoaXMuc2V0SW50ZXJwb2xhdGlvbihhfHx0aGlzLkRlZmF1bHRJbnRlcnBvbGF0aW9uKX1mdW5jdGlvbiBWaXQodCxuLGUpe0JpdC5jYWxsKHRoaXMsdCxuLGUpfWZ1bmN0aW9uIGppdCh0LG4sZSxhKXtCaXQuY2FsbCh0aGlzLHQsbixlLGEpfWZ1bmN0aW9uIFVpdCh0LG4sZSxhKXtCaXQuY2FsbCh0aGlzLHQsbixlLGEpfWZ1bmN0aW9uIFdpdCh0LG4sZSxhKXtOaXQuY2FsbCh0aGlzLHQsbixlLGEpfWZ1bmN0aW9uIEdpdCh0LG4sZSxhKXtCaXQuY2FsbCh0aGlzLHQsbixlLGEpfWZ1bmN0aW9uIFlpdCh0LG4sZSxhKXtCaXQuY2FsbCh0aGlzLHQsbixlLGEpfWZ1bmN0aW9uIHFpdCh0LG4sZSxhKXtCaXQuY2FsbCh0aGlzLHQsbixlLGEpfWZ1bmN0aW9uIFppdCh0LG49LTEsZSxhPTI1MDApe3RoaXMubmFtZT10LHRoaXMudHJhY2tzPWUsdGhpcy5kdXJhdGlvbj1uLHRoaXMuYmxlbmRNb2RlPWEsdGhpcy51dWlkPVU5LmdlbmVyYXRlVVVJRCgpLHRoaXMuZHVyYXRpb248MCYmdGhpcy5yZXNldER1cmF0aW9uKCl9ZnVuY3Rpb24gWGl0KHQpe2lmKHZvaWQgMD09PXQudHlwZSl0aHJvdyBuZXcgRXJyb3IoIlRIUkVFLktleWZyYW1lVHJhY2s6IHRyYWNrIHR5cGUgdW5kZWZpbmVkLCBjYW4gbm90IHBhcnNlIik7Y29uc3Qgbj0oZnVuY3Rpb24gZSh0KXtzd2l0Y2godC50b0xvd2VyQ2FzZSgpKXtjYXNlInNjYWxhciI6Y2FzZSJkb3VibGUiOmNhc2UiZmxvYXQiOmNhc2UibnVtYmVyIjpjYXNlImludGVnZXIiOnJldHVybiBVaXQ7Y2FzZSJ2ZWN0b3IiOmNhc2UidmVjdG9yMiI6Y2FzZSJ2ZWN0b3IzIjpjYXNlInZlY3RvcjQiOnJldHVybiBxaXQ7Y2FzZSJjb2xvciI6cmV0dXJuIGppdDtjYXNlInF1YXRlcm5pb24iOnJldHVybiBHaXQ7Y2FzZSJib29sIjpjYXNlImJvb2xlYW4iOnJldHVybiBWaXQ7Y2FzZSJzdHJpbmciOnJldHVybiBZaXR9dGhyb3cgbmV3IEVycm9yKCJUSFJFRS5LZXlmcmFtZVRyYWNrOiBVbnN1cHBvcnRlZCB0eXBlTmFtZTogIit0KX0pKHQudHlwZSk7aWYodm9pZCAwPT09dC50aW1lcyl7Y29uc3Qgbj1bXSxlPVtdO0lpdC5mbGF0dGVuSlNPTih0LmtleXMsbixlLCJ2YWx1ZSIpLHQudGltZXM9bix0LnZhbHVlcz1lfXJldHVybiB2b2lkIDAhPT1uLnBhcnNlP24ucGFyc2UodCk6bmV3IG4odC5uYW1lLHQudGltZXMsdC52YWx1ZXMsdC5pbnRlcnBvbGF0aW9uKX1PYmplY3QuYXNzaWduKE5pdC5wcm90b3R5cGUse2V2YWx1YXRlOmZ1bmN0aW9uKHQpe2NvbnN0IG49dGhpcy5wYXJhbWV0ZXJQb3NpdGlvbnM7bGV0IGU9dGhpcy5fY2FjaGVkSW5kZXgsYT1uW2VdLG89bltlLTFdO3Q6e246e2xldCByO2U6e2E6aWYoISh0PGEpKXtmb3IobGV0IHI9ZSsyOzspe2lmKHZvaWQgMD09PWEpe2lmKHQ8bylicmVhayBhO3JldHVybiBlPW4ubGVuZ3RoLHRoaXMuX2NhY2hlZEluZGV4PWUsdGhpcy5hZnRlckVuZF8oZS0xLHQsbyl9aWYoZT09PXIpYnJlYWs7aWYobz1hLGE9blsrK2VdLHQ8YSlicmVhayBufXI9bi5sZW5ndGg7YnJlYWsgZX1pZih0Pj1vKWJyZWFrIHQ7e2NvbnN0IGk9blsxXTt0PGkmJihlPTIsbz1pKTtmb3IobGV0IHI9ZS0yOzspe2lmKHZvaWQgMD09PW8pcmV0dXJuIHRoaXMuX2NhY2hlZEluZGV4PTAsdGhpcy5iZWZvcmVTdGFydF8oMCx0LGEpO2lmKGU9PT1yKWJyZWFrO2lmKGE9byxvPW5bLS1lLTFdLHQ+PW8pYnJlYWsgbn1yPWUsZT0wfX1mb3IoO2U8cjspe2NvbnN0IGE9ZStyPj4+MTt0PG5bYV0/cj1hOmU9YSsxfWlmKGE9bltlXSxvPW5bZS0xXSx2b2lkIDA9PT1vKXJldHVybiB0aGlzLl9jYWNoZWRJbmRleD0wLHRoaXMuYmVmb3JlU3RhcnRfKDAsdCxhKTtpZih2b2lkIDA9PT1hKXJldHVybiBlPW4ubGVuZ3RoLHRoaXMuX2NhY2hlZEluZGV4PWUsdGhpcy5hZnRlckVuZF8oZS0xLG8sdCl9dGhpcy5fY2FjaGVkSW5kZXg9ZSx0aGlzLmludGVydmFsQ2hhbmdlZF8oZSxvLGEpfXJldHVybiB0aGlzLmludGVycG9sYXRlXyhlLG8sdCxhKX0sc2V0dGluZ3M6bnVsbCxEZWZhdWx0U2V0dGluZ3NfOnt9LGdldFNldHRpbmdzXzpmdW5jdGlvbigpe3JldHVybiB0aGlzLnNldHRpbmdzfHx0aGlzLkRlZmF1bHRTZXR0aW5nc199LGNvcHlTYW1wbGVWYWx1ZV86ZnVuY3Rpb24odCl7Y29uc3Qgbj10aGlzLnJlc3VsdEJ1ZmZlcixlPXRoaXMuc2FtcGxlVmFsdWVzLGE9dGhpcy52YWx1ZVNpemUsbz10KmE7Zm9yKGxldCB0PTA7dCE9PWE7Kyt0KW5bdF09ZVtvK3RdO3JldHVybiBufSxpbnRlcnBvbGF0ZV86ZnVuY3Rpb24oKXt0aHJvdyBuZXcgRXJyb3IoImNhbGwgdG8gYWJzdHJhY3QgbWV0aG9kIil9LGludGVydmFsQ2hhbmdlZF86ZnVuY3Rpb24oKXt9fSksT2JqZWN0LmFzc2lnbihOaXQucHJvdG90eXBlLHtiZWZvcmVTdGFydF86Tml0LnByb3RvdHlwZS5jb3B5U2FtcGxlVmFsdWVfLGFmdGVyRW5kXzpOaXQucHJvdG90eXBlLmNvcHlTYW1wbGVWYWx1ZV99KSxGaXQucHJvdG90eXBlPU9iamVjdC5hc3NpZ24oT2JqZWN0LmNyZWF0ZShOaXQucHJvdG90eXBlKSx7Y29uc3RydWN0b3I6Rml0LERlZmF1bHRTZXR0aW5nc186e2VuZGluZ1N0YXJ0OlI5LGVuZGluZ0VuZDpSOX0saW50ZXJ2YWxDaGFuZ2VkXzpmdW5jdGlvbih0LG4sZSl7Y29uc3QgYT10aGlzLnBhcmFtZXRlclBvc2l0aW9ucztsZXQgbz10LTIscj10KzEsaT1hW29dLGM9YVtyXTtpZih2b2lkIDA9PT1pKXN3aXRjaCh0aGlzLmdldFNldHRpbmdzXygpLmVuZGluZ1N0YXJ0KXtjYXNlIFQ5Om89dCxpPTIqbi1lO2JyZWFrO2Nhc2UgRDk6bz1hLmxlbmd0aC0yLGk9bithW29dLWFbbysxXTticmVhaztkZWZhdWx0Om89dCxpPWV9aWYodm9pZCAwPT09Yylzd2l0Y2godGhpcy5nZXRTZXR0aW5nc18oKS5lbmRpbmdFbmQpe2Nhc2UgVDk6cj10LGM9MiplLW47YnJlYWs7Y2FzZSBEOTpyPTEsYz1lK2FbMV0tYVswXTticmVhaztkZWZhdWx0OnI9dC0xLGM9bn1jb25zdCBzPS41KihlLW4pLGw9dGhpcy52YWx1ZVNpemU7dGhpcy5fd2VpZ2h0UHJldj1zLyhuLWkpLHRoaXMuX3dlaWdodE5leHQ9cy8oYy1lKSx0aGlzLl9vZmZzZXRQcmV2PW8qbCx0aGlzLl9vZmZzZXROZXh0PXIqbH0saW50ZXJwb2xhdGVfOmZ1bmN0aW9uKHQsbixlLGEpe2NvbnN0IG89dGhpcy5yZXN1bHRCdWZmZXIscj10aGlzLnNhbXBsZVZhbHVlcyxpPXRoaXMudmFsdWVTaXplLGM9dCppLHM9Yy1pLGw9dGhpcy5fb2Zmc2V0UHJldixtPXRoaXMuX29mZnNldE5leHQsZD10aGlzLl93ZWlnaHRQcmV2LGc9dGhpcy5fd2VpZ2h0TmV4dCxwPShlLW4pLyhhLW4pLGI9cCpwLHU9YipwLGY9LWQqdSsyKmQqYi1kKnAsaD0oMStkKSp1KygtMS41LTIqZCkqYisoLS41K2QpKnArMSxfPSgtMS1nKSp1KygxLjUrZykqYisuNSpwLEM9Zyp1LWcqYjtmb3IobGV0IHQ9MDt0IT09aTsrK3Qpb1t0XT1mKnJbbCt0XStoKnJbcyt0XStfKnJbYyt0XStDKnJbbSt0XTtyZXR1cm4gb319KSxMaXQucHJvdG90eXBlPU9iamVjdC5hc3NpZ24oT2JqZWN0LmNyZWF0ZShOaXQucHJvdG90eXBlKSx7Y29uc3RydWN0b3I6TGl0LGludGVycG9sYXRlXzpmdW5jdGlvbih0LG4sZSxhKXtjb25zdCBvPXRoaXMucmVzdWx0QnVmZmVyLHI9dGhpcy5zYW1wbGVWYWx1ZXMsaT10aGlzLnZhbHVlU2l6ZSxjPXQqaSxzPWMtaSxsPShlLW4pLyhhLW4pLG09MS1sO2ZvcihsZXQgdD0wO3QhPT1pOysrdClvW3RdPXJbcyt0XSptK3JbYyt0XSpsO3JldHVybiBvfX0pLEhpdC5wcm90b3R5cGU9T2JqZWN0LmFzc2lnbihPYmplY3QuY3JlYXRlKE5pdC5wcm90b3R5cGUpLHtjb25zdHJ1Y3RvcjpIaXQsaW50ZXJwb2xhdGVfOmZ1bmN0aW9uKHQpe3JldHVybiB0aGlzLmNvcHlTYW1wbGVWYWx1ZV8odC0xKX19KSxPYmplY3QuYXNzaWduKEJpdCx7dG9KU09OOmZ1bmN0aW9uKHQpe2NvbnN0IG49dC5jb25zdHJ1Y3RvcjtsZXQgZTtpZih2b2lkIDAhPT1uLnRvSlNPTillPW4udG9KU09OKHQpO2Vsc2V7ZT17bmFtZTp0Lm5hbWUsdGltZXM6SWl0LmNvbnZlcnRBcnJheSh0LnRpbWVzLEFycmF5KSx2YWx1ZXM6SWl0LmNvbnZlcnRBcnJheSh0LnZhbHVlcyxBcnJheSl9O2NvbnN0IG49dC5nZXRJbnRlcnBvbGF0aW9uKCk7biE9PXQuRGVmYXVsdEludGVycG9sYXRpb24mJihlLmludGVycG9sYXRpb249bil9cmV0dXJuIGUudHlwZT10LlZhbHVlVHlwZU5hbWUsZX19KSxPYmplY3QuYXNzaWduKEJpdC5wcm90b3R5cGUse2NvbnN0cnVjdG9yOkJpdCxUaW1lQnVmZmVyVHlwZTpGbG9hdDMyQXJyYXksVmFsdWVCdWZmZXJUeXBlOkZsb2F0MzJBcnJheSxEZWZhdWx0SW50ZXJwb2xhdGlvbjpBOSxJbnRlcnBvbGFudEZhY3RvcnlNZXRob2REaXNjcmV0ZTpmdW5jdGlvbih0KXtyZXR1cm4gbmV3IEhpdCh0aGlzLnRpbWVzLHRoaXMudmFsdWVzLHRoaXMuZ2V0VmFsdWVTaXplKCksdCl9LEludGVycG9sYW50RmFjdG9yeU1ldGhvZExpbmVhcjpmdW5jdGlvbih0KXtyZXR1cm4gbmV3IExpdCh0aGlzLnRpbWVzLHRoaXMudmFsdWVzLHRoaXMuZ2V0VmFsdWVTaXplKCksdCl9LEludGVycG9sYW50RmFjdG9yeU1ldGhvZFNtb290aDpmdW5jdGlvbih0KXtyZXR1cm4gbmV3IEZpdCh0aGlzLnRpbWVzLHRoaXMudmFsdWVzLHRoaXMuZ2V0VmFsdWVTaXplKCksdCl9LHNldEludGVycG9sYXRpb246ZnVuY3Rpb24odCl7bGV0IG47c3dpdGNoKHQpe2Nhc2UgRTk6bj10aGlzLkludGVycG9sYW50RmFjdG9yeU1ldGhvZERpc2NyZXRlO2JyZWFrO2Nhc2UgQTk6bj10aGlzLkludGVycG9sYW50RmFjdG9yeU1ldGhvZExpbmVhcjticmVhaztjYXNlIHo5Om49dGhpcy5JbnRlcnBvbGFudEZhY3RvcnlNZXRob2RTbW9vdGh9aWYodm9pZCAwPT09bil7Y29uc3Qgbj0idW5zdXBwb3J0ZWQgaW50ZXJwb2xhdGlvbiBmb3IgIit0aGlzLlZhbHVlVHlwZU5hbWUrIiBrZXlmcmFtZSB0cmFjayBuYW1lZCAiK3RoaXMubmFtZTtpZih2b2lkIDA9PT10aGlzLmNyZWF0ZUludGVycG9sYW50KXtpZih0PT09dGhpcy5EZWZhdWx0SW50ZXJwb2xhdGlvbil0aHJvdyBuZXcgRXJyb3Iobik7dGhpcy5zZXRJbnRlcnBvbGF0aW9uKHRoaXMuRGVmYXVsdEludGVycG9sYXRpb24pfXJldHVybiBjb25zb2xlLndhcm4oIlRIUkVFLktleWZyYW1lVHJhY2s6IixuKSx0aGlzfXJldHVybiB0aGlzLmNyZWF0ZUludGVycG9sYW50PW4sdGhpc30sZ2V0SW50ZXJwb2xhdGlvbjpmdW5jdGlvbigpe3N3aXRjaCh0aGlzLmNyZWF0ZUludGVycG9sYW50KXtjYXNlIHRoaXMuSW50ZXJwb2xhbnRGYWN0b3J5TWV0aG9kRGlzY3JldGU6cmV0dXJuIEU5O2Nhc2UgdGhpcy5JbnRlcnBvbGFudEZhY3RvcnlNZXRob2RMaW5lYXI6cmV0dXJuIEE5O2Nhc2UgdGhpcy5JbnRlcnBvbGFudEZhY3RvcnlNZXRob2RTbW9vdGg6cmV0dXJuIHo5fX0sZ2V0VmFsdWVTaXplOmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMudmFsdWVzLmxlbmd0aC90aGlzLnRpbWVzLmxlbmd0aH0sc2hpZnQ6ZnVuY3Rpb24odCl7aWYoMCE9PXQpe2NvbnN0IG49dGhpcy50aW1lcztmb3IobGV0IGU9MCxhPW4ubGVuZ3RoO2UhPT1hOysrZSluW2VdKz10fXJldHVybiB0aGlzfSxzY2FsZTpmdW5jdGlvbih0KXtpZigxIT09dCl7Y29uc3Qgbj10aGlzLnRpbWVzO2ZvcihsZXQgZT0wLGE9bi5sZW5ndGg7ZSE9PWE7KytlKW5bZV0qPXR9cmV0dXJuIHRoaXN9LHRyaW06ZnVuY3Rpb24odCxuKXtjb25zdCBlPXRoaXMudGltZXMsYT1lLmxlbmd0aDtsZXQgbz0wLHI9YS0xO2Zvcig7byE9PWEmJmVbb108dDspKytvO2Zvcig7LTEhPT1yJiZlW3JdPm47KS0tcjtpZigrK3IsMCE9PW98fHIhPT1hKXtvPj1yJiYocj1NYXRoLm1heChyLDEpLG89ci0xKTtjb25zdCB0PXRoaXMuZ2V0VmFsdWVTaXplKCk7dGhpcy50aW1lcz1JaXQuYXJyYXlTbGljZShlLG8sciksdGhpcy52YWx1ZXM9SWl0LmFycmF5U2xpY2UodGhpcy52YWx1ZXMsbyp0LHIqdCl9cmV0dXJuIHRoaXN9LHZhbGlkYXRlOmZ1bmN0aW9uKCl7bGV0IHQ9ITA7Y29uc3Qgbj10aGlzLmdldFZhbHVlU2l6ZSgpO24tTWF0aC5mbG9vcihuKSE9MCYmKGNvbnNvbGUuZXJyb3IoIlRIUkVFLktleWZyYW1lVHJhY2s6IEludmFsaWQgdmFsdWUgc2l6ZSBpbiB0cmFjay4iLHRoaXMpLHQ9ITEpO2NvbnN0IGU9dGhpcy50aW1lcyxhPXRoaXMudmFsdWVzLG89ZS5sZW5ndGg7MD09PW8mJihjb25zb2xlLmVycm9yKCJUSFJFRS5LZXlmcmFtZVRyYWNrOiBUcmFjayBpcyBlbXB0eS4iLHRoaXMpLHQ9ITEpO2xldCByPW51bGw7Zm9yKGxldCBuPTA7biE9PW87bisrKXtjb25zdCBhPWVbbl07aWYoIm51bWJlciI9PXR5cGVvZiBhJiZpc05hTihhKSl7Y29uc29sZS5lcnJvcigiVEhSRUUuS2V5ZnJhbWVUcmFjazogVGltZSBpcyBub3QgYSB2YWxpZCBudW1iZXIuIix0aGlzLG4sYSksdD0hMTticmVha31pZihudWxsIT09ciYmcj5hKXtjb25zb2xlLmVycm9yKCJUSFJFRS5LZXlmcmFtZVRyYWNrOiBPdXQgb2Ygb3JkZXIga2V5cy4iLHRoaXMsbixhLHIpLHQ9ITE7YnJlYWt9cj1hfWlmKHZvaWQgMCE9PWEmJklpdC5pc1R5cGVkQXJyYXkoYSkpZm9yKGxldCBuPTAsZT1hLmxlbmd0aDtuIT09ZTsrK24pe2NvbnN0IGU9YVtuXTtpZihpc05hTihlKSl7Y29uc29sZS5lcnJvcigiVEhSRUUuS2V5ZnJhbWVUcmFjazogVmFsdWUgaXMgbm90IGEgdmFsaWQgbnVtYmVyLiIsdGhpcyxuLGUpLHQ9ITE7YnJlYWt9fXJldHVybiB0fSxvcHRpbWl6ZTpmdW5jdGlvbigpe2NvbnN0IHQ9SWl0LmFycmF5U2xpY2UodGhpcy50aW1lcyksbj1JaXQuYXJyYXlTbGljZSh0aGlzLnZhbHVlcyksZT10aGlzLmdldFZhbHVlU2l6ZSgpLGE9dGhpcy5nZXRJbnRlcnBvbGF0aW9uKCk9PT16OSxvPXQubGVuZ3RoLTE7bGV0IHI9MTtmb3IobGV0IGk9MTtpPG87KytpKXtsZXQgbz0hMTtjb25zdCBjPXRbaV07aWYoYyE9PXRbaSsxXSYmKDEhPT1pfHxjIT09dFswXSkpaWYoYSlvPSEwO2Vsc2V7Y29uc3QgdD1pKmUsYT10LWUscj10K2U7Zm9yKGxldCBpPTA7aSE9PWU7KytpKXtjb25zdCBlPW5bdCtpXTtpZihlIT09blthK2ldfHxlIT09bltyK2ldKXtvPSEwO2JyZWFrfX19aWYobyl7aWYoaSE9PXIpe3Rbcl09dFtpXTtjb25zdCBhPWkqZSxvPXIqZTtmb3IobGV0IHQ9MDt0IT09ZTsrK3QpbltvK3RdPW5bYSt0XX0rK3J9fWlmKG8+MCl7dFtyXT10W29dO2ZvcihsZXQgdD1vKmUsYT1yKmUsaT0wO2khPT1lOysraSluW2EraV09blt0K2ldOysrcn1yZXR1cm4gciE9PXQubGVuZ3RoPyh0aGlzLnRpbWVzPUlpdC5hcnJheVNsaWNlKHQsMCxyKSx0aGlzLnZhbHVlcz1JaXQuYXJyYXlTbGljZShuLDAsciplKSk6KHRoaXMudGltZXM9dCx0aGlzLnZhbHVlcz1uKSx0aGlzfSxjbG9uZTpmdW5jdGlvbigpe2NvbnN0IHQ9SWl0LmFycmF5U2xpY2UodGhpcy50aW1lcywwKSxuPUlpdC5hcnJheVNsaWNlKHRoaXMudmFsdWVzLDApLGU9bmV3KDAsdGhpcy5jb25zdHJ1Y3RvcikodGhpcy5uYW1lLHQsbik7cmV0dXJuIGUuY3JlYXRlSW50ZXJwb2xhbnQ9dGhpcy5jcmVhdGVJbnRlcnBvbGFudCxlfX0pLFZpdC5wcm90b3R5cGU9T2JqZWN0LmFzc2lnbihPYmplY3QuY3JlYXRlKEJpdC5wcm90b3R5cGUpLHtjb25zdHJ1Y3RvcjpWaXQsVmFsdWVUeXBlTmFtZToiYm9vbCIsVmFsdWVCdWZmZXJUeXBlOkFycmF5LERlZmF1bHRJbnRlcnBvbGF0aW9uOkU5LEludGVycG9sYW50RmFjdG9yeU1ldGhvZExpbmVhcjp2b2lkIDAsSW50ZXJwb2xhbnRGYWN0b3J5TWV0aG9kU21vb3RoOnZvaWQgMH0pLGppdC5wcm90b3R5cGU9T2JqZWN0LmFzc2lnbihPYmplY3QuY3JlYXRlKEJpdC5wcm90b3R5cGUpLHtjb25zdHJ1Y3RvcjpqaXQsVmFsdWVUeXBlTmFtZToiY29sb3IifSksVWl0LnByb3RvdHlwZT1PYmplY3QuYXNzaWduKE9iamVjdC5jcmVhdGUoQml0LnByb3RvdHlwZSkse2NvbnN0cnVjdG9yOlVpdCxWYWx1ZVR5cGVOYW1lOiJudW1iZXIifSksV2l0LnByb3RvdHlwZT1PYmplY3QuYXNzaWduKE9iamVjdC5jcmVhdGUoTml0LnByb3RvdHlwZSkse2NvbnN0cnVjdG9yOldpdCxpbnRlcnBvbGF0ZV86ZnVuY3Rpb24odCxuLGUsYSl7Y29uc3Qgbz10aGlzLnJlc3VsdEJ1ZmZlcixyPXRoaXMuc2FtcGxlVmFsdWVzLGk9dGhpcy52YWx1ZVNpemUsYz0oZS1uKS8oYS1uKTtsZXQgcz10Kmk7Zm9yKGxldCB0PXMraTtzIT09dDtzKz00KSQ5LnNsZXJwRmxhdChvLDAscixzLWkscixzLGMpO3JldHVybiBvfX0pLEdpdC5wcm90b3R5cGU9T2JqZWN0LmFzc2lnbihPYmplY3QuY3JlYXRlKEJpdC5wcm90b3R5cGUpLHtjb25zdHJ1Y3RvcjpHaXQsVmFsdWVUeXBlTmFtZToicXVhdGVybmlvbiIsRGVmYXVsdEludGVycG9sYXRpb246QTksSW50ZXJwb2xhbnRGYWN0b3J5TWV0aG9kTGluZWFyOmZ1bmN0aW9uKHQpe3JldHVybiBuZXcgV2l0KHRoaXMudGltZXMsdGhpcy52YWx1ZXMsdGhpcy5nZXRWYWx1ZVNpemUoKSx0KX0sSW50ZXJwb2xhbnRGYWN0b3J5TWV0aG9kU21vb3RoOnZvaWQgMH0pLFlpdC5wcm90b3R5cGU9T2JqZWN0LmFzc2lnbihPYmplY3QuY3JlYXRlKEJpdC5wcm90b3R5cGUpLHtjb25zdHJ1Y3RvcjpZaXQsVmFsdWVUeXBlTmFtZToic3RyaW5nIixWYWx1ZUJ1ZmZlclR5cGU6QXJyYXksRGVmYXVsdEludGVycG9sYXRpb246RTksSW50ZXJwb2xhbnRGYWN0b3J5TWV0aG9kTGluZWFyOnZvaWQgMCxJbnRlcnBvbGFudEZhY3RvcnlNZXRob2RTbW9vdGg6dm9pZCAwfSkscWl0LnByb3RvdHlwZT1PYmplY3QuYXNzaWduKE9iamVjdC5jcmVhdGUoQml0LnByb3RvdHlwZSkse2NvbnN0cnVjdG9yOnFpdCxWYWx1ZVR5cGVOYW1lOiJ2ZWN0b3IifSksT2JqZWN0LmFzc2lnbihaaXQse3BhcnNlOmZ1bmN0aW9uKHQpe2NvbnN0IG49W10sZT10LnRyYWNrcyxhPTEvKHQuZnBzfHwxKTtmb3IobGV0IHQ9MCxvPWUubGVuZ3RoO3QhPT1vOysrdCluLnB1c2goWGl0KGVbdF0pLnNjYWxlKGEpKTtjb25zdCBvPW5ldyBaaXQodC5uYW1lLHQuZHVyYXRpb24sbix0LmJsZW5kTW9kZSk7cmV0dXJuIG8udXVpZD10LnV1aWQsb30sdG9KU09OOmZ1bmN0aW9uKHQpe2NvbnN0IG49W10sZT10LnRyYWNrcyxhPXtuYW1lOnQubmFtZSxkdXJhdGlvbjp0LmR1cmF0aW9uLHRyYWNrczpuLHV1aWQ6dC51dWlkLGJsZW5kTW9kZTp0LmJsZW5kTW9kZX07Zm9yKGxldCB0PTAsYT1lLmxlbmd0aDt0IT09YTsrK3Qpbi5wdXNoKEJpdC50b0pTT04oZVt0XSkpO3JldHVybiBhfSxDcmVhdGVGcm9tTW9ycGhUYXJnZXRTZXF1ZW5jZTpmdW5jdGlvbih0LG4sZSxhKXtjb25zdCBvPW4ubGVuZ3RoLHI9W107Zm9yKGxldCB0PTA7dDxvO3QrKyl7bGV0IGk9W10sYz1bXTtpLnB1c2goKHQrby0xKSVvLHQsKHQrMSklbyksYy5wdXNoKDAsMSwwKTtjb25zdCBzPUlpdC5nZXRLZXlmcmFtZU9yZGVyKGkpO2k9SWl0LnNvcnRlZEFycmF5KGksMSxzKSxjPUlpdC5zb3J0ZWRBcnJheShjLDEscyksYXx8MCE9PWlbMF18fChpLnB1c2gobyksYy5wdXNoKGNbMF0pKSxyLnB1c2gobmV3IFVpdCgiLm1vcnBoVGFyZ2V0SW5mbHVlbmNlc1siK25bdF0ubmFtZSsiXSIsaSxjKS5zY2FsZSgxL2UpKX1yZXR1cm4gbmV3IFppdCh0LC0xLHIpfSxmaW5kQnlOYW1lOmZ1bmN0aW9uKHQsbil7bGV0IGU9dDtpZighQXJyYXkuaXNBcnJheSh0KSl7Y29uc3Qgbj10O2U9bi5nZW9tZXRyeSYmbi5nZW9tZXRyeS5hbmltYXRpb25zfHxuLmFuaW1hdGlvbnN9Zm9yKGxldCB0PTA7dDxlLmxlbmd0aDt0KyspaWYoZVt0XS5uYW1lPT09bilyZXR1cm4gZVt0XTtyZXR1cm4gbnVsbH0sQ3JlYXRlQ2xpcHNGcm9tTW9ycGhUYXJnZXRTZXF1ZW5jZXM6ZnVuY3Rpb24odCxuLGUpe2NvbnN0IGE9e30sbz0vXihbXHctXSo/KShbXGRdKykkLztmb3IobGV0IG49MCxlPXQubGVuZ3RoO248ZTtuKyspe2NvbnN0IGU9dFtuXSxyPWUubmFtZS5tYXRjaChvKTtpZihyJiZyLmxlbmd0aD4xKXtjb25zdCB0PXJbMV07bGV0IG49YVt0XTtufHwoYVt0XT1uPVtdKSxuLnB1c2goZSl9fWNvbnN0IHI9W107Zm9yKGNvbnN0IHQgaW4gYSlyLnB1c2goWml0LkNyZWF0ZUZyb21Nb3JwaFRhcmdldFNlcXVlbmNlKHQsYVt0XSxuLGUpKTtyZXR1cm4gcn0scGFyc2VBbmltYXRpb246ZnVuY3Rpb24odCxuKXtpZighdClyZXR1cm4gY29uc29sZS5lcnJvcigiVEhSRUUuQW5pbWF0aW9uQ2xpcDogTm8gYW5pbWF0aW9uIGluIEpTT05Mb2FkZXIgZGF0YS4iKSxudWxsO2NvbnN0IGU9ZnVuY3Rpb24odCxuLGUsYSxvKXtpZigwIT09ZS5sZW5ndGgpe2NvbnN0IHI9W10saT1bXTtJaXQuZmxhdHRlbkpTT04oZSxyLGksYSksMCE9PXIubGVuZ3RoJiZvLnB1c2gobmV3IHQobixyLGkpKX19LGE9W10sbz10Lm5hbWV8fCJkZWZhdWx0IixyPXQuZnBzfHwzMCxpPXQuYmxlbmRNb2RlO2xldCBjPXQubGVuZ3RofHwtMTtjb25zdCBzPXQuaGllcmFyY2h5fHxbXTtmb3IobGV0IHQ9MDt0PHMubGVuZ3RoO3QrKyl7Y29uc3Qgbz1zW3RdLmtleXM7aWYobyYmMCE9PW8ubGVuZ3RoKWlmKG9bMF0ubW9ycGhUYXJnZXRzKXtjb25zdCB0PXt9O2xldCBuO2ZvcihuPTA7bjxvLmxlbmd0aDtuKyspaWYob1tuXS5tb3JwaFRhcmdldHMpZm9yKGxldCBlPTA7ZTxvW25dLm1vcnBoVGFyZ2V0cy5sZW5ndGg7ZSsrKXRbb1tuXS5tb3JwaFRhcmdldHNbZV1dPS0xO2Zvcihjb25zdCBlIGluIHQpe2NvbnN0IHQ9W10scj1bXTtmb3IobGV0IGE9MDthIT09b1tuXS5tb3JwaFRhcmdldHMubGVuZ3RoOysrYSl7Y29uc3QgYT1vW25dO3QucHVzaChhLnRpbWUpLHIucHVzaChhLm1vcnBoVGFyZ2V0PT09ZT8xOjApfWEucHVzaChuZXcgVWl0KCIubW9ycGhUYXJnZXRJbmZsdWVuY2VbIitlKyJdIix0LHIpKX1jPXQubGVuZ3RoKihyfHwxKX1lbHNle2NvbnN0IHI9Ii5ib25lc1siK25bdF0ubmFtZSsiXSI7ZShxaXQscisiLnBvc2l0aW9uIixvLCJwb3MiLGEpLGUoR2l0LHIrIi5xdWF0ZXJuaW9uIixvLCJyb3QiLGEpLGUocWl0LHIrIi5zY2FsZSIsbywic2NsIixhKX19cmV0dXJuIDA9PT1hLmxlbmd0aD9udWxsOm5ldyBaaXQobyxjLGEsaSl9fSksT2JqZWN0LmFzc2lnbihaaXQucHJvdG90eXBlLHtyZXNldER1cmF0aW9uOmZ1bmN0aW9uKCl7bGV0IHQ9MDtmb3IobGV0IG49MCxlPXRoaXMudHJhY2tzLmxlbmd0aDtuIT09ZTsrK24pe2NvbnN0IGU9dGhpcy50cmFja3Nbbl07dD1NYXRoLm1heCh0LGUudGltZXNbZS50aW1lcy5sZW5ndGgtMV0pfXJldHVybiB0aGlzLmR1cmF0aW9uPXQsdGhpc30sdHJpbTpmdW5jdGlvbigpe2ZvcihsZXQgdD0wO3Q8dGhpcy50cmFja3MubGVuZ3RoO3QrKyl0aGlzLnRyYWNrc1t0XS50cmltKDAsdGhpcy5kdXJhdGlvbik7cmV0dXJuIHRoaXN9LHZhbGlkYXRlOmZ1bmN0aW9uKCl7bGV0IHQ9ITA7Zm9yKGxldCBuPTA7bjx0aGlzLnRyYWNrcy5sZW5ndGg7bisrKXQ9dCYmdGhpcy50cmFja3Nbbl0udmFsaWRhdGUoKTtyZXR1cm4gdH0sb3B0aW1pemU6ZnVuY3Rpb24oKXtmb3IobGV0IHQ9MDt0PHRoaXMudHJhY2tzLmxlbmd0aDt0KyspdGhpcy50cmFja3NbdF0ub3B0aW1pemUoKTtyZXR1cm4gdGhpc30sY2xvbmU6ZnVuY3Rpb24oKXtjb25zdCB0PVtdO2ZvcihsZXQgbj0wO248dGhpcy50cmFja3MubGVuZ3RoO24rKyl0LnB1c2godGhpcy50cmFja3Nbbl0uY2xvbmUoKSk7cmV0dXJuIG5ldyBaaXQodGhpcy5uYW1lLHRoaXMuZHVyYXRpb24sdCx0aGlzLmJsZW5kTW9kZSl9LHRvSlNPTjpmdW5jdGlvbigpe3JldHVybiBaaXQudG9KU09OKHRoaXMpfX0pO2NvbnN0IEppdD17ZW5hYmxlZDohMSxmaWxlczp7fSxhZGQ6ZnVuY3Rpb24odCxuKXshMSE9PXRoaXMuZW5hYmxlZCYmKHRoaXMuZmlsZXNbdF09bil9LGdldDpmdW5jdGlvbih0KXtpZighMSE9PXRoaXMuZW5hYmxlZClyZXR1cm4gdGhpcy5maWxlc1t0XX0scmVtb3ZlOmZ1bmN0aW9uKHQpe2RlbGV0ZSB0aGlzLmZpbGVzW3RdfSxjbGVhcjpmdW5jdGlvbigpe3RoaXMuZmlsZXM9e319fSxRaXQ9bmV3KGZ1bmN0aW9uIEtpdCh0LG4sZSl7Y29uc3QgYT10aGlzO2xldCBvLHI9ITEsaT0wLGM9MDtjb25zdCBzPVtdO3RoaXMub25TdGFydD12b2lkIDAsdGhpcy5vbkxvYWQ9dCx0aGlzLm9uUHJvZ3Jlc3M9bix0aGlzLm9uRXJyb3I9ZSx0aGlzLml0ZW1TdGFydD1mdW5jdGlvbih0KXtjKyssITE9PT1yJiZ2b2lkIDAhPT1hLm9uU3RhcnQmJmEub25TdGFydCh0LGksYykscj0hMH0sdGhpcy5pdGVtRW5kPWZ1bmN0aW9uKHQpe2krKyx2b2lkIDAhPT1hLm9uUHJvZ3Jlc3MmJmEub25Qcm9ncmVzcyh0LGksYyksaT09PWMmJihyPSExLHZvaWQgMCE9PWEub25Mb2FkJiZhLm9uTG9hZCgpKX0sdGhpcy5pdGVtRXJyb3I9ZnVuY3Rpb24odCl7dm9pZCAwIT09YS5vbkVycm9yJiZhLm9uRXJyb3IodCl9LHRoaXMucmVzb2x2ZVVSTD1mdW5jdGlvbih0KXtyZXR1cm4gbz9vKHQpOnR9LHRoaXMuc2V0VVJMTW9kaWZpZXI9ZnVuY3Rpb24odCl7cmV0dXJuIG89dCx0aGlzfSx0aGlzLmFkZEhhbmRsZXI9ZnVuY3Rpb24odCxuKXtyZXR1cm4gcy5wdXNoKHQsbiksdGhpc30sdGhpcy5yZW1vdmVIYW5kbGVyPWZ1bmN0aW9uKHQpe2NvbnN0IG49cy5pbmRleE9mKHQpO3JldHVybi0xIT09biYmcy5zcGxpY2UobiwyKSx0aGlzfSx0aGlzLmdldEhhbmRsZXI9ZnVuY3Rpb24odCl7Zm9yKGxldCBuPTAsZT1zLmxlbmd0aDtuPGU7bis9Mil7Y29uc3QgZT1zW25dLGE9c1tuKzFdO2lmKGUuZ2xvYmFsJiYoZS5sYXN0SW5kZXg9MCksZS50ZXN0KHQpKXJldHVybiBhfXJldHVybiBudWxsfX0pO2Z1bmN0aW9uICRpdCh0KXt0aGlzLm1hbmFnZXI9dm9pZCAwIT09dD90OlFpdCx0aGlzLmNyb3NzT3JpZ2luPSJhbm9ueW1vdXMiLHRoaXMud2l0aENyZWRlbnRpYWxzPSExLHRoaXMucGF0aD0iIix0aGlzLnJlc291cmNlUGF0aD0iIix0aGlzLnJlcXVlc3RIZWFkZXI9e319T2JqZWN0LmFzc2lnbigkaXQucHJvdG90eXBlLHtsb2FkOmZ1bmN0aW9uKCl7fSxsb2FkQXN5bmM6ZnVuY3Rpb24odCxuKXtjb25zdCBlPXRoaXM7cmV0dXJuIG5ldyBQcm9taXNlKChmdW5jdGlvbihhLG8pe2UubG9hZCh0LGEsbixvKX0pKX0scGFyc2U6ZnVuY3Rpb24oKXt9LHNldENyb3NzT3JpZ2luOmZ1bmN0aW9uKHQpe3JldHVybiB0aGlzLmNyb3NzT3JpZ2luPXQsdGhpc30sc2V0V2l0aENyZWRlbnRpYWxzOmZ1bmN0aW9uKHQpe3JldHVybiB0aGlzLndpdGhDcmVkZW50aWFscz10LHRoaXN9LHNldFBhdGg6ZnVuY3Rpb24odCl7cmV0dXJuIHRoaXMucGF0aD10LHRoaXN9LHNldFJlc291cmNlUGF0aDpmdW5jdGlvbih0KXtyZXR1cm4gdGhpcy5yZXNvdXJjZVBhdGg9dCx0aGlzfSxzZXRSZXF1ZXN0SGVhZGVyOmZ1bmN0aW9uKHQpe3JldHVybiB0aGlzLnJlcXVlc3RIZWFkZXI9dCx0aGlzfX0pO2NvbnN0IHRjdD17fTtmdW5jdGlvbiBuY3QodCl7JGl0LmNhbGwodGhpcyx0KX1mdW5jdGlvbiBlY3QodCl7JGl0LmNhbGwodGhpcyx0KX1mdW5jdGlvbiBhY3QodCl7JGl0LmNhbGwodGhpcyx0KX1mdW5jdGlvbiBvY3QodCl7JGl0LmNhbGwodGhpcyx0KX1mdW5jdGlvbiByY3QodCl7JGl0LmNhbGwodGhpcyx0KX1mdW5jdGlvbiBpY3QodCl7JGl0LmNhbGwodGhpcyx0KX1mdW5jdGlvbiBjY3QodCl7JGl0LmNhbGwodGhpcyx0KX1mdW5jdGlvbiBzY3QoKXt0aGlzLnR5cGU9IkN1cnZlIix0aGlzLmFyY0xlbmd0aERpdmlzaW9ucz0yMDB9ZnVuY3Rpb24gbGN0KHQsbixlLGEsbyxyLGksYyl7c2N0LmNhbGwodGhpcyksdGhpcy50eXBlPSJFbGxpcHNlQ3VydmUiLHRoaXMuYVg9dHx8MCx0aGlzLmFZPW58fDAsdGhpcy54UmFkaXVzPWV8fDEsdGhpcy55UmFkaXVzPWF8fDEsdGhpcy5hU3RhcnRBbmdsZT1vfHwwLHRoaXMuYUVuZEFuZ2xlPXJ8fDIqTWF0aC5QSSx0aGlzLmFDbG9ja3dpc2U9aXx8ITEsdGhpcy5hUm90YXRpb249Y3x8MH1mdW5jdGlvbiBtY3QodCxuLGUsYSxvLHIpe2xjdC5jYWxsKHRoaXMsdCxuLGUsZSxhLG8sciksdGhpcy50eXBlPSJBcmNDdXJ2ZSJ9ZnVuY3Rpb24gZGN0KCl7bGV0IHQ9MCxuPTAsZT0wLGE9MDtmdW5jdGlvbiBvKG8scixpLGMpe3Q9byxuPWksZT0tMypvKzMqci0yKmktYyxhPTIqby0yKnIraStjfXJldHVybntpbml0Q2F0bXVsbFJvbTpmdW5jdGlvbih0LG4sZSxhLHIpe28obixlLHIqKGUtdCksciooYS1uKSl9LGluaXROb251bmlmb3JtQ2F0bXVsbFJvbTpmdW5jdGlvbih0LG4sZSxhLHIsaSxjKXtsZXQgcz0obi10KS9yLShlLXQpLyhyK2kpKyhlLW4pL2ksbD0oZS1uKS9pLShhLW4pLyhpK2MpKyhhLWUpL2M7cyo9aSxsKj1pLG8obixlLHMsbCl9LGNhbGM6ZnVuY3Rpb24obyl7Y29uc3Qgcj1vKm87cmV0dXJuIHQrbipvK2UqcithKihyKm8pfX19bmN0LnByb3RvdHlwZT1PYmplY3QuYXNzaWduKE9iamVjdC5jcmVhdGUoJGl0LnByb3RvdHlwZSkse2NvbnN0cnVjdG9yOm5jdCxsb2FkOmZ1bmN0aW9uKHQsbixlLGEpe3ZvaWQgMD09PXQmJih0PSIiKSx2b2lkIDAhPT10aGlzLnBhdGgmJih0PXRoaXMucGF0aCt0KSx0PXRoaXMubWFuYWdlci5yZXNvbHZlVVJMKHQpO2NvbnN0IG89dGhpcyxyPUppdC5nZXQodCk7aWYodm9pZCAwIT09cilyZXR1cm4gby5tYW5hZ2VyLml0ZW1TdGFydCh0KSxzZXRUaW1lb3V0KChmdW5jdGlvbigpe24mJm4ociksby5tYW5hZ2VyLml0ZW1FbmQodCl9KSwwKSxyO2lmKHZvaWQgMCE9PXRjdFt0XSlyZXR1cm4gdm9pZCB0Y3RbdF0ucHVzaCh7b25Mb2FkOm4sb25Qcm9ncmVzczplLG9uRXJyb3I6YX0pO2NvbnN0IGk9dC5tYXRjaCgvXmRhdGE6KC4qPykoO2Jhc2U2NCk/LCguKikkLyk7bGV0IGM7aWYoaSl7Y29uc3QgZT1pWzFdLHI9ISFpWzJdO2xldCBjPWlbM107Yz1kZWNvZGVVUklDb21wb25lbnQoYyksciYmKGM9YXRvYihjKSk7dHJ5e2xldCBhO2NvbnN0IHI9KHRoaXMucmVzcG9uc2VUeXBlfHwiIikudG9Mb3dlckNhc2UoKTtzd2l0Y2gocil7Y2FzZSJhcnJheWJ1ZmZlciI6Y2FzZSJibG9iIjpjb25zdCB0PW5ldyBVaW50OEFycmF5KGMubGVuZ3RoKTtmb3IobGV0IG49MDtuPGMubGVuZ3RoO24rKyl0W25dPWMuY2hhckNvZGVBdChuKTthPSJibG9iIj09PXI/bmV3IEJsb2IoW3QuYnVmZmVyXSx7dHlwZTplfSk6dC5idWZmZXI7YnJlYWs7Y2FzZSJkb2N1bWVudCI6Y29uc3Qgbj1uZXcgRE9NUGFyc2VyO2E9bi5wYXJzZUZyb21TdHJpbmcoYyxlKTticmVhaztjYXNlImpzb24iOmE9SlNPTi5wYXJzZShjKTticmVhaztkZWZhdWx0OmE9Y31zZXRUaW1lb3V0KChmdW5jdGlvbigpe24mJm4oYSksby5tYW5hZ2VyLml0ZW1FbmQodCl9KSwwKX1jYXRjaChuKXtzZXRUaW1lb3V0KChmdW5jdGlvbigpe2EmJmEobiksby5tYW5hZ2VyLml0ZW1FcnJvcih0KSxvLm1hbmFnZXIuaXRlbUVuZCh0KX0pLDApfX1lbHNle3RjdFt0XT1bXSx0Y3RbdF0ucHVzaCh7b25Mb2FkOm4sb25Qcm9ncmVzczplLG9uRXJyb3I6YX0pLGM9bmV3IFhNTEh0dHBSZXF1ZXN0LGMub3BlbigiR0VUIix0LCEwKSxjLmFkZEV2ZW50TGlzdGVuZXIoImxvYWQiLChmdW5jdGlvbihuKXtjb25zdCBlPXRoaXMucmVzcG9uc2UsYT10Y3RbdF07aWYoZGVsZXRlIHRjdFt0XSwyMDA9PT10aGlzLnN0YXR1c3x8MD09PXRoaXMuc3RhdHVzKXswPT09dGhpcy5zdGF0dXMmJmNvbnNvbGUud2FybigiVEhSRUUuRmlsZUxvYWRlcjogSFRUUCBTdGF0dXMgMCByZWNlaXZlZC4iKSxKaXQuYWRkKHQsZSk7Zm9yKGxldCB0PTAsbj1hLmxlbmd0aDt0PG47dCsrKXtjb25zdCBuPWFbdF07bi5vbkxvYWQmJm4ub25Mb2FkKGUpfW8ubWFuYWdlci5pdGVtRW5kKHQpfWVsc2V7Zm9yKGxldCB0PTAsZT1hLmxlbmd0aDt0PGU7dCsrKXtjb25zdCBlPWFbdF07ZS5vbkVycm9yJiZlLm9uRXJyb3Iobil9by5tYW5hZ2VyLml0ZW1FcnJvcih0KSxvLm1hbmFnZXIuaXRlbUVuZCh0KX19KSwhMSksYy5hZGRFdmVudExpc3RlbmVyKCJwcm9ncmVzcyIsKGZ1bmN0aW9uKG4pe2NvbnN0IGU9dGN0W3RdO2ZvcihsZXQgdD0wLGE9ZS5sZW5ndGg7dDxhO3QrKyl7Y29uc3QgYT1lW3RdO2Eub25Qcm9ncmVzcyYmYS5vblByb2dyZXNzKG4pfX0pLCExKSxjLmFkZEV2ZW50TGlzdGVuZXIoImVycm9yIiwoZnVuY3Rpb24obil7Y29uc3QgZT10Y3RbdF07ZGVsZXRlIHRjdFt0XTtmb3IobGV0IHQ9MCxhPWUubGVuZ3RoO3Q8YTt0Kyspe2NvbnN0IGE9ZVt0XTthLm9uRXJyb3ImJmEub25FcnJvcihuKX1vLm1hbmFnZXIuaXRlbUVycm9yKHQpLG8ubWFuYWdlci5pdGVtRW5kKHQpfSksITEpLGMuYWRkRXZlbnRMaXN0ZW5lcigiYWJvcnQiLChmdW5jdGlvbihuKXtjb25zdCBlPXRjdFt0XTtkZWxldGUgdGN0W3RdO2ZvcihsZXQgdD0wLGE9ZS5sZW5ndGg7dDxhO3QrKyl7Y29uc3QgYT1lW3RdO2Eub25FcnJvciYmYS5vbkVycm9yKG4pfW8ubWFuYWdlci5pdGVtRXJyb3IodCksby5tYW5hZ2VyLml0ZW1FbmQodCl9KSwhMSksdm9pZCAwIT09dGhpcy5yZXNwb25zZVR5cGUmJihjLnJlc3BvbnNlVHlwZT10aGlzLnJlc3BvbnNlVHlwZSksdm9pZCAwIT09dGhpcy53aXRoQ3JlZGVudGlhbHMmJihjLndpdGhDcmVkZW50aWFscz10aGlzLndpdGhDcmVkZW50aWFscyksYy5vdmVycmlkZU1pbWVUeXBlJiZjLm92ZXJyaWRlTWltZVR5cGUodm9pZCAwIT09dGhpcy5taW1lVHlwZT90aGlzLm1pbWVUeXBlOiJ0ZXh0L3BsYWluIik7Zm9yKGNvbnN0IHQgaW4gdGhpcy5yZXF1ZXN0SGVhZGVyKWMuc2V0UmVxdWVzdEhlYWRlcih0LHRoaXMucmVxdWVzdEhlYWRlclt0XSk7Yy5zZW5kKG51bGwpfXJldHVybiBvLm1hbmFnZXIuaXRlbVN0YXJ0KHQpLGN9LHNldFJlc3BvbnNlVHlwZTpmdW5jdGlvbih0KXtyZXR1cm4gdGhpcy5yZXNwb25zZVR5cGU9dCx0aGlzfSxzZXRNaW1lVHlwZTpmdW5jdGlvbih0KXtyZXR1cm4gdGhpcy5taW1lVHlwZT10LHRoaXN9fSksZWN0LnByb3RvdHlwZT1PYmplY3QuYXNzaWduKE9iamVjdC5jcmVhdGUoJGl0LnByb3RvdHlwZSkse2NvbnN0cnVjdG9yOmVjdCxsb2FkOmZ1bmN0aW9uKHQsbixlLGEpe2NvbnN0IG89dGhpcyxyPW5ldyBuY3Qoby5tYW5hZ2VyKTtyLnNldFBhdGgoby5wYXRoKSxyLnNldFJlcXVlc3RIZWFkZXIoby5yZXF1ZXN0SGVhZGVyKSxyLnNldFdpdGhDcmVkZW50aWFscyhvLndpdGhDcmVkZW50aWFscyksci5sb2FkKHQsKGZ1bmN0aW9uKGUpe3RyeXtuKG8ucGFyc2UoSlNPTi5wYXJzZShlKSkpfWNhdGNoKG4pe2E/YShuKTpjb25zb2xlLmVycm9yKG4pLG8ubWFuYWdlci5pdGVtRXJyb3IodCl9fSksZSxhKX0scGFyc2U6ZnVuY3Rpb24odCl7Y29uc3Qgbj1bXTtmb3IobGV0IGU9MDtlPHQubGVuZ3RoO2UrKyl7Y29uc3QgYT1aaXQucGFyc2UodFtlXSk7bi5wdXNoKGEpfXJldHVybiBufX0pLGFjdC5wcm90b3R5cGU9T2JqZWN0LmFzc2lnbihPYmplY3QuY3JlYXRlKCRpdC5wcm90b3R5cGUpLHtjb25zdHJ1Y3RvcjphY3QsbG9hZDpmdW5jdGlvbih0LG4sZSxhKXtjb25zdCBvPXRoaXMscj1bXSxpPW5ldyBVcnQsYz1uZXcgbmN0KHRoaXMubWFuYWdlcik7Yy5zZXRQYXRoKHRoaXMucGF0aCksYy5zZXRSZXNwb25zZVR5cGUoImFycmF5YnVmZmVyIiksYy5zZXRSZXF1ZXN0SGVhZGVyKHRoaXMucmVxdWVzdEhlYWRlciksYy5zZXRXaXRoQ3JlZGVudGlhbHMoby53aXRoQ3JlZGVudGlhbHMpO2xldCBzPTA7ZnVuY3Rpb24gbChsKXtjLmxvYWQodFtsXSwoZnVuY3Rpb24odCl7Y29uc3QgZT1vLnBhcnNlKHQsITApO3JbbF09e3dpZHRoOmUud2lkdGgsaGVpZ2h0OmUuaGVpZ2h0LGZvcm1hdDplLmZvcm1hdCxtaXBtYXBzOmUubWlwbWFwc30scys9MSw2PT09cyYmKDE9PT1lLm1pcG1hcENvdW50JiYoaS5taW5GaWx0ZXI9XzkpLGkuaW1hZ2U9cixpLmZvcm1hdD1lLmZvcm1hdCxpLm5lZWRzVXBkYXRlPSEwLG4mJm4oaSkpfSksZSxhKX1pZihBcnJheS5pc0FycmF5KHQpKWZvcihsZXQgbj0wLGU9dC5sZW5ndGg7bjxlOysrbilsKG4pO2Vsc2UgYy5sb2FkKHQsKGZ1bmN0aW9uKHQpe2NvbnN0IGU9by5wYXJzZSh0LCEwKTtpZihlLmlzQ3ViZW1hcCl7Y29uc3QgdD1lLm1pcG1hcHMubGVuZ3RoL2UubWlwbWFwQ291bnQ7Zm9yKGxldCBuPTA7bjx0O24rKyl7cltuXT17bWlwbWFwczpbXX07Zm9yKGxldCB0PTA7dDxlLm1pcG1hcENvdW50O3QrKylyW25dLm1pcG1hcHMucHVzaChlLm1pcG1hcHNbbiplLm1pcG1hcENvdW50K3RdKSxyW25dLmZvcm1hdD1lLmZvcm1hdCxyW25dLndpZHRoPWUud2lkdGgscltuXS5oZWlnaHQ9ZS5oZWlnaHR9aS5pbWFnZT1yfWVsc2UgaS5pbWFnZS53aWR0aD1lLndpZHRoLGkuaW1hZ2UuaGVpZ2h0PWUuaGVpZ2h0LGkubWlwbWFwcz1lLm1pcG1hcHM7MT09PWUubWlwbWFwQ291bnQmJihpLm1pbkZpbHRlcj1fOSksaS5mb3JtYXQ9ZS5mb3JtYXQsaS5uZWVkc1VwZGF0ZT0hMCxuJiZuKGkpfSksZSxhKTtyZXR1cm4gaX19KSxvY3QucHJvdG90eXBlPU9iamVjdC5hc3NpZ24oT2JqZWN0LmNyZWF0ZSgkaXQucHJvdG90eXBlKSx7Y29uc3RydWN0b3I6b2N0LGxvYWQ6ZnVuY3Rpb24odCxuLGUsYSl7dm9pZCAwIT09dGhpcy5wYXRoJiYodD10aGlzLnBhdGgrdCksdD10aGlzLm1hbmFnZXIucmVzb2x2ZVVSTCh0KTtjb25zdCBvPXRoaXMscj1KaXQuZ2V0KHQpO2lmKHZvaWQgMCE9PXIpcmV0dXJuIG8ubWFuYWdlci5pdGVtU3RhcnQodCksc2V0VGltZW91dCgoZnVuY3Rpb24oKXtuJiZuKHIpLG8ubWFuYWdlci5pdGVtRW5kKHQpfSksMCkscjtjb25zdCBpPWRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3dy53My5vcmcvMTk5OS94aHRtbCIsImltZyIpO2Z1bmN0aW9uIGMoKXtpLnJlbW92ZUV2ZW50TGlzdGVuZXIoImxvYWQiLGMsITEpLGkucmVtb3ZlRXZlbnRMaXN0ZW5lcigiZXJyb3IiLHMsITEpLEppdC5hZGQodCx0aGlzKSxuJiZuKHRoaXMpLG8ubWFuYWdlci5pdGVtRW5kKHQpfWZ1bmN0aW9uIHMobil7aS5yZW1vdmVFdmVudExpc3RlbmVyKCJsb2FkIixjLCExKSxpLnJlbW92ZUV2ZW50TGlzdGVuZXIoImVycm9yIixzLCExKSxhJiZhKG4pLG8ubWFuYWdlci5pdGVtRXJyb3IodCksby5tYW5hZ2VyLml0ZW1FbmQodCl9cmV0dXJuIGkuYWRkRXZlbnRMaXN0ZW5lcigibG9hZCIsYywhMSksaS5hZGRFdmVudExpc3RlbmVyKCJlcnJvciIscywhMSksImRhdGE6IiE9PXQuc3Vic3RyKDAsNSkmJnZvaWQgMCE9PXRoaXMuY3Jvc3NPcmlnaW4mJihpLmNyb3NzT3JpZ2luPXRoaXMuY3Jvc3NPcmlnaW4pLG8ubWFuYWdlci5pdGVtU3RhcnQodCksaS5zcmM9dCxpfX0pLHJjdC5wcm90b3R5cGU9T2JqZWN0LmFzc2lnbihPYmplY3QuY3JlYXRlKCRpdC5wcm90b3R5cGUpLHtjb25zdHJ1Y3RvcjpyY3QsbG9hZDpmdW5jdGlvbih0LG4sZSxhKXtjb25zdCBvPW5ldyBrZXQscj1uZXcgb2N0KHRoaXMubWFuYWdlcik7ci5zZXRDcm9zc09yaWdpbih0aGlzLmNyb3NzT3JpZ2luKSxyLnNldFBhdGgodGhpcy5wYXRoKTtsZXQgaT0wO2Z1bmN0aW9uIGMoZSl7ci5sb2FkKHRbZV0sKGZ1bmN0aW9uKHQpe28uaW1hZ2VzW2VdPXQsaSsrLDY9PT1pJiYoby5uZWVkc1VwZGF0ZT0hMCxuJiZuKG8pKX0pLHZvaWQgMCxhKX1mb3IobGV0IG49MDtuPHQubGVuZ3RoOysrbiljKG4pO3JldHVybiBvfX0pLGljdC5wcm90b3R5cGU9T2JqZWN0LmFzc2lnbihPYmplY3QuY3JlYXRlKCRpdC5wcm90b3R5cGUpLHtjb25zdHJ1Y3RvcjppY3QsbG9hZDpmdW5jdGlvbih0LG4sZSxhKXtjb25zdCBvPXRoaXMscj1uZXcgd2V0LGk9bmV3IG5jdCh0aGlzLm1hbmFnZXIpO3JldHVybiBpLnNldFJlc3BvbnNlVHlwZSgiYXJyYXlidWZmZXIiKSxpLnNldFJlcXVlc3RIZWFkZXIodGhpcy5yZXF1ZXN0SGVhZGVyKSxpLnNldFBhdGgodGhpcy5wYXRoKSxpLnNldFdpdGhDcmVkZW50aWFscyhvLndpdGhDcmVkZW50aWFscyksaS5sb2FkKHQsKGZ1bmN0aW9uKHQpe2NvbnN0IGU9by5wYXJzZSh0KTtlJiYodm9pZCAwIT09ZS5pbWFnZT9yLmltYWdlPWUuaW1hZ2U6dm9pZCAwIT09ZS5kYXRhJiYoci5pbWFnZS53aWR0aD1lLndpZHRoLHIuaW1hZ2UuaGVpZ2h0PWUuaGVpZ2h0LHIuaW1hZ2UuZGF0YT1lLmRhdGEpLHIud3JhcFM9dm9pZCAwIT09ZS53cmFwUz9lLndyYXBTOnU5LHIud3JhcFQ9dm9pZCAwIT09ZS53cmFwVD9lLndyYXBUOnU5LHIubWFnRmlsdGVyPXZvaWQgMCE9PWUubWFnRmlsdGVyP2UubWFnRmlsdGVyOl85LHIubWluRmlsdGVyPXZvaWQgMCE9PWUubWluRmlsdGVyP2UubWluRmlsdGVyOl85LHIuYW5pc290cm9weT12b2lkIDAhPT1lLmFuaXNvdHJvcHk/ZS5hbmlzb3Ryb3B5OjEsdm9pZCAwIT09ZS5lbmNvZGluZyYmKHIuZW5jb2Rpbmc9ZS5lbmNvZGluZyksdm9pZCAwIT09ZS5mbGlwWSYmKHIuZmxpcFk9ZS5mbGlwWSksdm9pZCAwIT09ZS5mb3JtYXQmJihyLmZvcm1hdD1lLmZvcm1hdCksdm9pZCAwIT09ZS50eXBlJiYoci50eXBlPWUudHlwZSksdm9pZCAwIT09ZS5taXBtYXBzJiYoci5taXBtYXBzPWUubWlwbWFwcyxyLm1pbkZpbHRlcj1DOSksMT09PWUubWlwbWFwQ291bnQmJihyLm1pbkZpbHRlcj1fOSksci5uZWVkc1VwZGF0ZT0hMCxuJiZuKHIsZSkpfSksZSxhKSxyfX0pLGNjdC5wcm90b3R5cGU9T2JqZWN0LmFzc2lnbihPYmplY3QuY3JlYXRlKCRpdC5wcm90b3R5cGUpLHtjb25zdHJ1Y3RvcjpjY3QsbG9hZDpmdW5jdGlvbih0LG4sZSxhKXtjb25zdCBvPW5ldyBYOSxyPW5ldyBvY3QodGhpcy5tYW5hZ2VyKTtyZXR1cm4gci5zZXRDcm9zc09yaWdpbih0aGlzLmNyb3NzT3JpZ2luKSxyLnNldFBhdGgodGhpcy5wYXRoKSxyLmxvYWQodCwoZnVuY3Rpb24oZSl7by5pbWFnZT1lO2NvbnN0IGE9dC5zZWFyY2goL1wuanBlP2coJHxcPykvaSk+MHx8MD09PXQuc2VhcmNoKC9eZGF0YVw6aW1hZ2VcL2pwZWcvKTtvLmZvcm1hdD1hP2s5OnY5LG8ubmVlZHNVcGRhdGU9ITAsdm9pZCAwIT09biYmbihvKX0pLGUsYSksb319KSxPYmplY3QuYXNzaWduKHNjdC5wcm90b3R5cGUse2dldFBvaW50OmZ1bmN0aW9uKCl7cmV0dXJuIGNvbnNvbGUud2FybigiVEhSRUUuQ3VydmU6IC5nZXRQb2ludCgpIG5vdCBpbXBsZW1lbnRlZC4iKSxudWxsfSxnZXRQb2ludEF0OmZ1bmN0aW9uKHQsbil7Y29uc3QgZT10aGlzLmdldFV0b1RtYXBwaW5nKHQpO3JldHVybiB0aGlzLmdldFBvaW50KGUsbil9LGdldFBvaW50czpmdW5jdGlvbih0PTUpe2NvbnN0IG49W107Zm9yKGxldCBlPTA7ZTw9dDtlKyspbi5wdXNoKHRoaXMuZ2V0UG9pbnQoZS90KSk7cmV0dXJuIG59LGdldFNwYWNlZFBvaW50czpmdW5jdGlvbih0PTUpe2NvbnN0IG49W107Zm9yKGxldCBlPTA7ZTw9dDtlKyspbi5wdXNoKHRoaXMuZ2V0UG9pbnRBdChlL3QpKTtyZXR1cm4gbn0sZ2V0TGVuZ3RoOmZ1bmN0aW9uKCl7Y29uc3QgdD10aGlzLmdldExlbmd0aHMoKTtyZXR1cm4gdFt0Lmxlbmd0aC0xXX0sZ2V0TGVuZ3RoczpmdW5jdGlvbih0KXtpZih2b2lkIDA9PT10JiYodD10aGlzLmFyY0xlbmd0aERpdmlzaW9ucyksdGhpcy5jYWNoZUFyY0xlbmd0aHMmJnRoaXMuY2FjaGVBcmNMZW5ndGhzLmxlbmd0aD09PXQrMSYmIXRoaXMubmVlZHNVcGRhdGUpcmV0dXJuIHRoaXMuY2FjaGVBcmNMZW5ndGhzO3RoaXMubmVlZHNVcGRhdGU9ITE7Y29uc3Qgbj1bXTtsZXQgZSxhPXRoaXMuZ2V0UG9pbnQoMCksbz0wO24ucHVzaCgwKTtmb3IobGV0IHI9MTtyPD10O3IrKyllPXRoaXMuZ2V0UG9pbnQoci90KSxvKz1lLmRpc3RhbmNlVG8oYSksbi5wdXNoKG8pLGE9ZTtyZXR1cm4gdGhpcy5jYWNoZUFyY0xlbmd0aHM9bixufSx1cGRhdGVBcmNMZW5ndGhzOmZ1bmN0aW9uKCl7dGhpcy5uZWVkc1VwZGF0ZT0hMCx0aGlzLmdldExlbmd0aHMoKX0sZ2V0VXRvVG1hcHBpbmc6ZnVuY3Rpb24odCxuKXtjb25zdCBlPXRoaXMuZ2V0TGVuZ3RocygpO2xldCBhPTA7Y29uc3Qgbz1lLmxlbmd0aDtsZXQgcjtyPW58fHQqZVtvLTFdO2xldCBpLGM9MCxzPW8tMTtmb3IoO2M8PXM7KWlmKGE9TWF0aC5mbG9vcihjKyhzLWMpLzIpLGk9ZVthXS1yLGk8MCljPWErMTtlbHNle2lmKCEoaT4wKSl7cz1hO2JyZWFrfXM9YS0xfWlmKGE9cyxlW2FdPT09cilyZXR1cm4gYS8oby0xKTtjb25zdCBsPWVbYV07cmV0dXJuKGErKHItbCkvKGVbYSsxXS1sKSkvKG8tMSl9LGdldFRhbmdlbnQ6ZnVuY3Rpb24odCxuKXtjb25zdCBlPTFlLTQ7bGV0IGE9dC1lLG89dCtlO2E8MCYmKGE9MCksbz4xJiYobz0xKTtjb25zdCByPXRoaXMuZ2V0UG9pbnQoYSksaT10aGlzLmdldFBvaW50KG8pLGM9bnx8KHIuaXNWZWN0b3IyP25ldyBXOTpuZXcgdHR0KTtyZXR1cm4gYy5jb3B5KGkpLnN1YihyKS5ub3JtYWxpemUoKSxjfSxnZXRUYW5nZW50QXQ6ZnVuY3Rpb24odCxuKXtjb25zdCBlPXRoaXMuZ2V0VXRvVG1hcHBpbmcodCk7cmV0dXJuIHRoaXMuZ2V0VGFuZ2VudChlLG4pfSxjb21wdXRlRnJlbmV0RnJhbWVzOmZ1bmN0aW9uKHQsbil7Y29uc3QgZT1uZXcgdHR0LGE9W10sbz1bXSxyPVtdLGk9bmV3IHR0dCxjPW5ldyBTdHQ7Zm9yKGxldCBuPTA7bjw9dDtuKyspYVtuXT10aGlzLmdldFRhbmdlbnRBdChuL3QsbmV3IHR0dCksYVtuXS5ub3JtYWxpemUoKTtvWzBdPW5ldyB0dHQsclswXT1uZXcgdHR0O2xldCBzPU51bWJlci5NQVhfVkFMVUU7Y29uc3QgbD1NYXRoLmFicyhhWzBdLngpLG09TWF0aC5hYnMoYVswXS55KSxkPU1hdGguYWJzKGFbMF0ueik7bDw9cyYmKHM9bCxlLnNldCgxLDAsMCkpLG08PXMmJihzPW0sZS5zZXQoMCwxLDApKSxkPD1zJiZlLnNldCgwLDAsMSksaS5jcm9zc1ZlY3RvcnMoYVswXSxlKS5ub3JtYWxpemUoKSxvWzBdLmNyb3NzVmVjdG9ycyhhWzBdLGkpLHJbMF0uY3Jvc3NWZWN0b3JzKGFbMF0sb1swXSk7Zm9yKGxldCBuPTE7bjw9dDtuKyspe2lmKG9bbl09b1tuLTFdLmNsb25lKCkscltuXT1yW24tMV0uY2xvbmUoKSxpLmNyb3NzVmVjdG9ycyhhW24tMV0sYVtuXSksaS5sZW5ndGgoKT5OdW1iZXIuRVBTSUxPTil7aS5ub3JtYWxpemUoKTtjb25zdCB0PU1hdGguYWNvcyhVOS5jbGFtcChhW24tMV0uZG90KGFbbl0pLC0xLDEpKTtvW25dLmFwcGx5TWF0cml4NChjLm1ha2VSb3RhdGlvbkF4aXMoaSx0KSl9cltuXS5jcm9zc1ZlY3RvcnMoYVtuXSxvW25dKX1pZighMD09PW4pe2xldCBuPU1hdGguYWNvcyhVOS5jbGFtcChvWzBdLmRvdChvW3RdKSwtMSwxKSk7bi89dCxhWzBdLmRvdChpLmNyb3NzVmVjdG9ycyhvWzBdLG9bdF0pKT4wJiYobj0tbik7Zm9yKGxldCBlPTE7ZTw9dDtlKyspb1tlXS5hcHBseU1hdHJpeDQoYy5tYWtlUm90YXRpb25BeGlzKGFbZV0sbiplKSkscltlXS5jcm9zc1ZlY3RvcnMoYVtlXSxvW2VdKX1yZXR1cm57dGFuZ2VudHM6YSxub3JtYWxzOm8sYmlub3JtYWxzOnJ9fSxjbG9uZTpmdW5jdGlvbigpe3JldHVybihuZXcgdGhpcy5jb25zdHJ1Y3RvcikuY29weSh0aGlzKX0sY29weTpmdW5jdGlvbih0KXtyZXR1cm4gdGhpcy5hcmNMZW5ndGhEaXZpc2lvbnM9dC5hcmNMZW5ndGhEaXZpc2lvbnMsdGhpc30sdG9KU09OOmZ1bmN0aW9uKCl7Y29uc3QgdD17bWV0YWRhdGE6e3ZlcnNpb246NC41LHR5cGU6IkN1cnZlIixnZW5lcmF0b3I6IkN1cnZlLnRvSlNPTiJ9fTtyZXR1cm4gdC5hcmNMZW5ndGhEaXZpc2lvbnM9dGhpcy5hcmNMZW5ndGhEaXZpc2lvbnMsdC50eXBlPXRoaXMudHlwZSx0fSxmcm9tSlNPTjpmdW5jdGlvbih0KXtyZXR1cm4gdGhpcy5hcmNMZW5ndGhEaXZpc2lvbnM9dC5hcmNMZW5ndGhEaXZpc2lvbnMsdGhpc319KSwobGN0LnByb3RvdHlwZT1PYmplY3QuY3JlYXRlKHNjdC5wcm90b3R5cGUpKS5jb25zdHJ1Y3Rvcj1sY3QsbGN0LnByb3RvdHlwZS5pc0VsbGlwc2VDdXJ2ZT0hMCxsY3QucHJvdG90eXBlLmdldFBvaW50PWZ1bmN0aW9uKHQsbil7Y29uc3QgZT1ufHxuZXcgVzksYT0yKk1hdGguUEk7bGV0IG89dGhpcy5hRW5kQW5nbGUtdGhpcy5hU3RhcnRBbmdsZTtjb25zdCByPU1hdGguYWJzKG8pPE51bWJlci5FUFNJTE9OO2Zvcig7bzwwOylvKz1hO2Zvcig7bz5hOylvLT1hO288TnVtYmVyLkVQU0lMT04mJihvPXI/MDphKSwhMCE9PXRoaXMuYUNsb2Nrd2lzZXx8cnx8KG89PT1hP289LWE6by09YSk7Y29uc3QgaT10aGlzLmFTdGFydEFuZ2xlK3QqbztsZXQgYz10aGlzLmFYK3RoaXMueFJhZGl1cypNYXRoLmNvcyhpKSxzPXRoaXMuYVkrdGhpcy55UmFkaXVzKk1hdGguc2luKGkpO2lmKDAhPT10aGlzLmFSb3RhdGlvbil7Y29uc3QgdD1NYXRoLmNvcyh0aGlzLmFSb3RhdGlvbiksbj1NYXRoLnNpbih0aGlzLmFSb3RhdGlvbiksZT1jLXRoaXMuYVgsYT1zLXRoaXMuYVk7Yz1lKnQtYSpuK3RoaXMuYVgscz1lKm4rYSp0K3RoaXMuYVl9cmV0dXJuIGUuc2V0KGMscyl9LGxjdC5wcm90b3R5cGUuY29weT1mdW5jdGlvbih0KXtyZXR1cm4gc2N0LnByb3RvdHlwZS5jb3B5LmNhbGwodGhpcyx0KSx0aGlzLmFYPXQuYVgsdGhpcy5hWT10LmFZLHRoaXMueFJhZGl1cz10LnhSYWRpdXMsdGhpcy55UmFkaXVzPXQueVJhZGl1cyx0aGlzLmFTdGFydEFuZ2xlPXQuYVN0YXJ0QW5nbGUsdGhpcy5hRW5kQW5nbGU9dC5hRW5kQW5nbGUsdGhpcy5hQ2xvY2t3aXNlPXQuYUNsb2Nrd2lzZSx0aGlzLmFSb3RhdGlvbj10LmFSb3RhdGlvbix0aGlzfSxsY3QucHJvdG90eXBlLnRvSlNPTj1mdW5jdGlvbigpe2NvbnN0IHQ9c2N0LnByb3RvdHlwZS50b0pTT04uY2FsbCh0aGlzKTtyZXR1cm4gdC5hWD10aGlzLmFYLHQuYVk9dGhpcy5hWSx0LnhSYWRpdXM9dGhpcy54UmFkaXVzLHQueVJhZGl1cz10aGlzLnlSYWRpdXMsdC5hU3RhcnRBbmdsZT10aGlzLmFTdGFydEFuZ2xlLHQuYUVuZEFuZ2xlPXRoaXMuYUVuZEFuZ2xlLHQuYUNsb2Nrd2lzZT10aGlzLmFDbG9ja3dpc2UsdC5hUm90YXRpb249dGhpcy5hUm90YXRpb24sdH0sbGN0LnByb3RvdHlwZS5mcm9tSlNPTj1mdW5jdGlvbih0KXtyZXR1cm4gc2N0LnByb3RvdHlwZS5mcm9tSlNPTi5jYWxsKHRoaXMsdCksdGhpcy5hWD10LmFYLHRoaXMuYVk9dC5hWSx0aGlzLnhSYWRpdXM9dC54UmFkaXVzLHRoaXMueVJhZGl1cz10LnlSYWRpdXMsdGhpcy5hU3RhcnRBbmdsZT10LmFTdGFydEFuZ2xlLHRoaXMuYUVuZEFuZ2xlPXQuYUVuZEFuZ2xlLHRoaXMuYUNsb2Nrd2lzZT10LmFDbG9ja3dpc2UsdGhpcy5hUm90YXRpb249dC5hUm90YXRpb24sdGhpc30sKG1jdC5wcm90b3R5cGU9T2JqZWN0LmNyZWF0ZShsY3QucHJvdG90eXBlKSkuY29uc3RydWN0b3I9bWN0LG1jdC5wcm90b3R5cGUuaXNBcmNDdXJ2ZT0hMDtjb25zdCBnY3Q9bmV3IHR0dCxwY3Q9bmV3IGRjdCxiY3Q9bmV3IGRjdCx1Y3Q9bmV3IGRjdDtmdW5jdGlvbiBmY3QodD1bXSxuPSExLGU9ImNlbnRyaXBldGFsIixhPS41KXtzY3QuY2FsbCh0aGlzKSx0aGlzLnR5cGU9IkNhdG11bGxSb21DdXJ2ZTMiLHRoaXMucG9pbnRzPXQsdGhpcy5jbG9zZWQ9bix0aGlzLmN1cnZlVHlwZT1lLHRoaXMudGVuc2lvbj1hfWZ1bmN0aW9uIGhjdCh0LG4sZSxhLG8pe2NvbnN0IHI9LjUqKGEtbiksaT0uNSooby1lKSxjPXQqdDtyZXR1cm4oMiplLTIqYStyK2kpKih0KmMpKygtMyplKzMqYS0yKnItaSkqYytyKnQrZX1mdW5jdGlvbiBfY3QodCxuLGUsYSl7cmV0dXJuKGZ1bmN0aW9uIG8odCxuKXtjb25zdCBlPTEtdDtyZXR1cm4gZSplKm59KSh0LG4pKyhmdW5jdGlvbiByKHQsbil7cmV0dXJuIDIqKDEtdCkqdCpufSkodCxlKSsoZnVuY3Rpb24gaSh0LG4pe3JldHVybiB0KnQqbn0pKHQsYSl9ZnVuY3Rpb24gQ2N0KHQsbixlLGEsbyl7cmV0dXJuKGZ1bmN0aW9uIHIodCxuKXtjb25zdCBlPTEtdDtyZXR1cm4gZSplKmUqbn0pKHQsbikrKGZ1bmN0aW9uIGkodCxuKXtjb25zdCBlPTEtdDtyZXR1cm4gMyplKmUqdCpufSkodCxlKSsoZnVuY3Rpb24gYyh0LG4pe3JldHVybiAzKigxLXQpKnQqdCpufSkodCxhKSsoZnVuY3Rpb24gcyh0LG4pe3JldHVybiB0KnQqdCpufSkodCxvKX1mdW5jdGlvbiBNY3QodD1uZXcgVzksbj1uZXcgVzksZT1uZXcgVzksYT1uZXcgVzkpe3NjdC5jYWxsKHRoaXMpLHRoaXMudHlwZT0iQ3ViaWNCZXppZXJDdXJ2ZSIsdGhpcy52MD10LHRoaXMudjE9bix0aGlzLnYyPWUsdGhpcy52Mz1hfWZ1bmN0aW9uIE9jdCh0PW5ldyB0dHQsbj1uZXcgdHR0LGU9bmV3IHR0dCxhPW5ldyB0dHQpe3NjdC5jYWxsKHRoaXMpLHRoaXMudHlwZT0iQ3ViaWNCZXppZXJDdXJ2ZTMiLHRoaXMudjA9dCx0aGlzLnYxPW4sdGhpcy52Mj1lLHRoaXMudjM9YX1mdW5jdGlvbiBQY3QodD1uZXcgVzksbj1uZXcgVzkpe3NjdC5jYWxsKHRoaXMpLHRoaXMudHlwZT0iTGluZUN1cnZlIix0aGlzLnYxPXQsdGhpcy52Mj1ufWZ1bmN0aW9uIHhjdCh0PW5ldyB0dHQsbj1uZXcgdHR0KXtzY3QuY2FsbCh0aGlzKSx0aGlzLnR5cGU9IkxpbmVDdXJ2ZTMiLHRoaXMudjE9dCx0aGlzLnYyPW59ZnVuY3Rpb24geWN0KHQ9bmV3IFc5LG49bmV3IFc5LGU9bmV3IFc5KXtzY3QuY2FsbCh0aGlzKSx0aGlzLnR5cGU9IlF1YWRyYXRpY0JlemllckN1cnZlIix0aGlzLnYwPXQsdGhpcy52MT1uLHRoaXMudjI9ZX1mdW5jdGlvbiBrY3QodD1uZXcgdHR0LG49bmV3IHR0dCxlPW5ldyB0dHQpe3NjdC5jYWxsKHRoaXMpLHRoaXMudHlwZT0iUXVhZHJhdGljQmV6aWVyQ3VydmUzIix0aGlzLnYwPXQsdGhpcy52MT1uLHRoaXMudjI9ZX1mdW5jdGlvbiB2Y3QodD1bXSl7c2N0LmNhbGwodGhpcyksdGhpcy50eXBlPSJTcGxpbmVDdXJ2ZSIsdGhpcy5wb2ludHM9dH0oZmN0LnByb3RvdHlwZT1PYmplY3QuY3JlYXRlKHNjdC5wcm90b3R5cGUpKS5jb25zdHJ1Y3Rvcj1mY3QsZmN0LnByb3RvdHlwZS5pc0NhdG11bGxSb21DdXJ2ZTM9ITAsZmN0LnByb3RvdHlwZS5nZXRQb2ludD1mdW5jdGlvbih0LG49bmV3IHR0dCl7Y29uc3QgZT1uLGE9dGhpcy5wb2ludHMsbz1hLmxlbmd0aCxyPShvLSh0aGlzLmNsb3NlZD8wOjEpKSp0O2xldCBpLGMscz1NYXRoLmZsb29yKHIpLGw9ci1zO3RoaXMuY2xvc2VkP3MrPXM+MD8wOihNYXRoLmZsb29yKE1hdGguYWJzKHMpL28pKzEpKm86MD09PWwmJnM9PT1vLTEmJihzPW8tMixsPTEpLHRoaXMuY2xvc2VkfHxzPjA/aT1hWyhzLTEpJW9dOihnY3Quc3ViVmVjdG9ycyhhWzBdLGFbMV0pLmFkZChhWzBdKSxpPWdjdCk7Y29uc3QgbT1hW3Mlb10sZD1hWyhzKzEpJW9dO2lmKHRoaXMuY2xvc2VkfHxzKzI8bz9jPWFbKHMrMiklb106KGdjdC5zdWJWZWN0b3JzKGFbby0xXSxhW28tMl0pLmFkZChhW28tMV0pLGM9Z2N0KSwiY2VudHJpcGV0YWwiPT09dGhpcy5jdXJ2ZVR5cGV8fCJjaG9yZGFsIj09PXRoaXMuY3VydmVUeXBlKXtjb25zdCB0PSJjaG9yZGFsIj09PXRoaXMuY3VydmVUeXBlPy41Oi4yNTtsZXQgbj1NYXRoLnBvdyhpLmRpc3RhbmNlVG9TcXVhcmVkKG0pLHQpLGU9TWF0aC5wb3cobS5kaXN0YW5jZVRvU3F1YXJlZChkKSx0KSxhPU1hdGgucG93KGQuZGlzdGFuY2VUb1NxdWFyZWQoYyksdCk7ZTwxZS00JiYoZT0xKSxuPDFlLTQmJihuPWUpLGE8MWUtNCYmKGE9ZSkscGN0LmluaXROb251bmlmb3JtQ2F0bXVsbFJvbShpLngsbS54LGQueCxjLngsbixlLGEpLGJjdC5pbml0Tm9udW5pZm9ybUNhdG11bGxSb20oaS55LG0ueSxkLnksYy55LG4sZSxhKSx1Y3QuaW5pdE5vbnVuaWZvcm1DYXRtdWxsUm9tKGkueixtLnosZC56LGMueixuLGUsYSl9ZWxzZSJjYXRtdWxscm9tIj09PXRoaXMuY3VydmVUeXBlJiYocGN0LmluaXRDYXRtdWxsUm9tKGkueCxtLngsZC54LGMueCx0aGlzLnRlbnNpb24pLGJjdC5pbml0Q2F0bXVsbFJvbShpLnksbS55LGQueSxjLnksdGhpcy50ZW5zaW9uKSx1Y3QuaW5pdENhdG11bGxSb20oaS56LG0ueixkLnosYy56LHRoaXMudGVuc2lvbikpO3JldHVybiBlLnNldChwY3QuY2FsYyhsKSxiY3QuY2FsYyhsKSx1Y3QuY2FsYyhsKSksZX0sZmN0LnByb3RvdHlwZS5jb3B5PWZ1bmN0aW9uKHQpe3NjdC5wcm90b3R5cGUuY29weS5jYWxsKHRoaXMsdCksdGhpcy5wb2ludHM9W107Zm9yKGxldCBuPTAsZT10LnBvaW50cy5sZW5ndGg7bjxlO24rKyl0aGlzLnBvaW50cy5wdXNoKHQucG9pbnRzW25dLmNsb25lKCkpO3JldHVybiB0aGlzLmNsb3NlZD10LmNsb3NlZCx0aGlzLmN1cnZlVHlwZT10LmN1cnZlVHlwZSx0aGlzLnRlbnNpb249dC50ZW5zaW9uLHRoaXN9LGZjdC5wcm90b3R5cGUudG9KU09OPWZ1bmN0aW9uKCl7Y29uc3QgdD1zY3QucHJvdG90eXBlLnRvSlNPTi5jYWxsKHRoaXMpO3QucG9pbnRzPVtdO2ZvcihsZXQgbj0wLGU9dGhpcy5wb2ludHMubGVuZ3RoO248ZTtuKyspdC5wb2ludHMucHVzaCh0aGlzLnBvaW50c1tuXS50b0FycmF5KCkpO3JldHVybiB0LmNsb3NlZD10aGlzLmNsb3NlZCx0LmN1cnZlVHlwZT10aGlzLmN1cnZlVHlwZSx0LnRlbnNpb249dGhpcy50ZW5zaW9uLHR9LGZjdC5wcm90b3R5cGUuZnJvbUpTT049ZnVuY3Rpb24odCl7c2N0LnByb3RvdHlwZS5mcm9tSlNPTi5jYWxsKHRoaXMsdCksdGhpcy5wb2ludHM9W107Zm9yKGxldCBuPTAsZT10LnBvaW50cy5sZW5ndGg7bjxlO24rKyl7Y29uc3QgZT10LnBvaW50c1tuXTt0aGlzLnBvaW50cy5wdXNoKChuZXcgdHR0KS5mcm9tQXJyYXkoZSkpfXJldHVybiB0aGlzLmNsb3NlZD10LmNsb3NlZCx0aGlzLmN1cnZlVHlwZT10LmN1cnZlVHlwZSx0aGlzLnRlbnNpb249dC50ZW5zaW9uLHRoaXN9LChNY3QucHJvdG90eXBlPU9iamVjdC5jcmVhdGUoc2N0LnByb3RvdHlwZSkpLmNvbnN0cnVjdG9yPU1jdCxNY3QucHJvdG90eXBlLmlzQ3ViaWNCZXppZXJDdXJ2ZT0hMCxNY3QucHJvdG90eXBlLmdldFBvaW50PWZ1bmN0aW9uKHQsbj1uZXcgVzkpe2NvbnN0IGU9bixhPXRoaXMudjAsbz10aGlzLnYxLHI9dGhpcy52MixpPXRoaXMudjM7cmV0dXJuIGUuc2V0KENjdCh0LGEueCxvLngsci54LGkueCksQ2N0KHQsYS55LG8ueSxyLnksaS55KSksZX0sTWN0LnByb3RvdHlwZS5jb3B5PWZ1bmN0aW9uKHQpe3JldHVybiBzY3QucHJvdG90eXBlLmNvcHkuY2FsbCh0aGlzLHQpLHRoaXMudjAuY29weSh0LnYwKSx0aGlzLnYxLmNvcHkodC52MSksdGhpcy52Mi5jb3B5KHQudjIpLHRoaXMudjMuY29weSh0LnYzKSx0aGlzfSxNY3QucHJvdG90eXBlLnRvSlNPTj1mdW5jdGlvbigpe2NvbnN0IHQ9c2N0LnByb3RvdHlwZS50b0pTT04uY2FsbCh0aGlzKTtyZXR1cm4gdC52MD10aGlzLnYwLnRvQXJyYXkoKSx0LnYxPXRoaXMudjEudG9BcnJheSgpLHQudjI9dGhpcy52Mi50b0FycmF5KCksdC52Mz10aGlzLnYzLnRvQXJyYXkoKSx0fSxNY3QucHJvdG90eXBlLmZyb21KU09OPWZ1bmN0aW9uKHQpe3JldHVybiBzY3QucHJvdG90eXBlLmZyb21KU09OLmNhbGwodGhpcyx0KSx0aGlzLnYwLmZyb21BcnJheSh0LnYwKSx0aGlzLnYxLmZyb21BcnJheSh0LnYxKSx0aGlzLnYyLmZyb21BcnJheSh0LnYyKSx0aGlzLnYzLmZyb21BcnJheSh0LnYzKSx0aGlzfSwoT2N0LnByb3RvdHlwZT1PYmplY3QuY3JlYXRlKHNjdC5wcm90b3R5cGUpKS5jb25zdHJ1Y3Rvcj1PY3QsT2N0LnByb3RvdHlwZS5pc0N1YmljQmV6aWVyQ3VydmUzPSEwLE9jdC5wcm90b3R5cGUuZ2V0UG9pbnQ9ZnVuY3Rpb24odCxuPW5ldyB0dHQpe2NvbnN0IGU9bixhPXRoaXMudjAsbz10aGlzLnYxLHI9dGhpcy52MixpPXRoaXMudjM7cmV0dXJuIGUuc2V0KENjdCh0LGEueCxvLngsci54LGkueCksQ2N0KHQsYS55LG8ueSxyLnksaS55KSxDY3QodCxhLnosby56LHIueixpLnopKSxlfSxPY3QucHJvdG90eXBlLmNvcHk9ZnVuY3Rpb24odCl7cmV0dXJuIHNjdC5wcm90b3R5cGUuY29weS5jYWxsKHRoaXMsdCksdGhpcy52MC5jb3B5KHQudjApLHRoaXMudjEuY29weSh0LnYxKSx0aGlzLnYyLmNvcHkodC52MiksdGhpcy52My5jb3B5KHQudjMpLHRoaXN9LE9jdC5wcm90b3R5cGUudG9KU09OPWZ1bmN0aW9uKCl7Y29uc3QgdD1zY3QucHJvdG90eXBlLnRvSlNPTi5jYWxsKHRoaXMpO3JldHVybiB0LnYwPXRoaXMudjAudG9BcnJheSgpLHQudjE9dGhpcy52MS50b0FycmF5KCksdC52Mj10aGlzLnYyLnRvQXJyYXkoKSx0LnYzPXRoaXMudjMudG9BcnJheSgpLHR9LE9jdC5wcm90b3R5cGUuZnJvbUpTT049ZnVuY3Rpb24odCl7cmV0dXJuIHNjdC5wcm90b3R5cGUuZnJvbUpTT04uY2FsbCh0aGlzLHQpLHRoaXMudjAuZnJvbUFycmF5KHQudjApLHRoaXMudjEuZnJvbUFycmF5KHQudjEpLHRoaXMudjIuZnJvbUFycmF5KHQudjIpLHRoaXMudjMuZnJvbUFycmF5KHQudjMpLHRoaXN9LChQY3QucHJvdG90eXBlPU9iamVjdC5jcmVhdGUoc2N0LnByb3RvdHlwZSkpLmNvbnN0cnVjdG9yPVBjdCxQY3QucHJvdG90eXBlLmlzTGluZUN1cnZlPSEwLFBjdC5wcm90b3R5cGUuZ2V0UG9pbnQ9ZnVuY3Rpb24odCxuPW5ldyBXOSl7Y29uc3QgZT1uO3JldHVybiAxPT09dD9lLmNvcHkodGhpcy52Mik6KGUuY29weSh0aGlzLnYyKS5zdWIodGhpcy52MSksZS5tdWx0aXBseVNjYWxhcih0KS5hZGQodGhpcy52MSkpLGV9LFBjdC5wcm90b3R5cGUuZ2V0UG9pbnRBdD1mdW5jdGlvbih0LG4pe3JldHVybiB0aGlzLmdldFBvaW50KHQsbil9LFBjdC5wcm90b3R5cGUuZ2V0VGFuZ2VudD1mdW5jdGlvbih0LG4pe2NvbnN0IGU9bnx8bmV3IFc5O3JldHVybiBlLmNvcHkodGhpcy52Mikuc3ViKHRoaXMudjEpLm5vcm1hbGl6ZSgpLGV9LFBjdC5wcm90b3R5cGUuY29weT1mdW5jdGlvbih0KXtyZXR1cm4gc2N0LnByb3RvdHlwZS5jb3B5LmNhbGwodGhpcyx0KSx0aGlzLnYxLmNvcHkodC52MSksdGhpcy52Mi5jb3B5KHQudjIpLHRoaXN9LFBjdC5wcm90b3R5cGUudG9KU09OPWZ1bmN0aW9uKCl7Y29uc3QgdD1zY3QucHJvdG90eXBlLnRvSlNPTi5jYWxsKHRoaXMpO3JldHVybiB0LnYxPXRoaXMudjEudG9BcnJheSgpLHQudjI9dGhpcy52Mi50b0FycmF5KCksdH0sUGN0LnByb3RvdHlwZS5mcm9tSlNPTj1mdW5jdGlvbih0KXtyZXR1cm4gc2N0LnByb3RvdHlwZS5mcm9tSlNPTi5jYWxsKHRoaXMsdCksdGhpcy52MS5mcm9tQXJyYXkodC52MSksdGhpcy52Mi5mcm9tQXJyYXkodC52MiksdGhpc30sKHhjdC5wcm90b3R5cGU9T2JqZWN0LmNyZWF0ZShzY3QucHJvdG90eXBlKSkuY29uc3RydWN0b3I9eGN0LHhjdC5wcm90b3R5cGUuaXNMaW5lQ3VydmUzPSEwLHhjdC5wcm90b3R5cGUuZ2V0UG9pbnQ9ZnVuY3Rpb24odCxuPW5ldyB0dHQpe2NvbnN0IGU9bjtyZXR1cm4gMT09PXQ/ZS5jb3B5KHRoaXMudjIpOihlLmNvcHkodGhpcy52Mikuc3ViKHRoaXMudjEpLGUubXVsdGlwbHlTY2FsYXIodCkuYWRkKHRoaXMudjEpKSxlfSx4Y3QucHJvdG90eXBlLmdldFBvaW50QXQ9ZnVuY3Rpb24odCxuKXtyZXR1cm4gdGhpcy5nZXRQb2ludCh0LG4pfSx4Y3QucHJvdG90eXBlLmNvcHk9ZnVuY3Rpb24odCl7cmV0dXJuIHNjdC5wcm90b3R5cGUuY29weS5jYWxsKHRoaXMsdCksdGhpcy52MS5jb3B5KHQudjEpLHRoaXMudjIuY29weSh0LnYyKSx0aGlzfSx4Y3QucHJvdG90eXBlLnRvSlNPTj1mdW5jdGlvbigpe2NvbnN0IHQ9c2N0LnByb3RvdHlwZS50b0pTT04uY2FsbCh0aGlzKTtyZXR1cm4gdC52MT10aGlzLnYxLnRvQXJyYXkoKSx0LnYyPXRoaXMudjIudG9BcnJheSgpLHR9LHhjdC5wcm90b3R5cGUuZnJvbUpTT049ZnVuY3Rpb24odCl7cmV0dXJuIHNjdC5wcm90b3R5cGUuZnJvbUpTT04uY2FsbCh0aGlzLHQpLHRoaXMudjEuZnJvbUFycmF5KHQudjEpLHRoaXMudjIuZnJvbUFycmF5KHQudjIpLHRoaXN9LCh5Y3QucHJvdG90eXBlPU9iamVjdC5jcmVhdGUoc2N0LnByb3RvdHlwZSkpLmNvbnN0cnVjdG9yPXljdCx5Y3QucHJvdG90eXBlLmlzUXVhZHJhdGljQmV6aWVyQ3VydmU9ITAseWN0LnByb3RvdHlwZS5nZXRQb2ludD1mdW5jdGlvbih0LG49bmV3IFc5KXtjb25zdCBlPW4sYT10aGlzLnYwLG89dGhpcy52MSxyPXRoaXMudjI7cmV0dXJuIGUuc2V0KF9jdCh0LGEueCxvLngsci54KSxfY3QodCxhLnksby55LHIueSkpLGV9LHljdC5wcm90b3R5cGUuY29weT1mdW5jdGlvbih0KXtyZXR1cm4gc2N0LnByb3RvdHlwZS5jb3B5LmNhbGwodGhpcyx0KSx0aGlzLnYwLmNvcHkodC52MCksdGhpcy52MS5jb3B5KHQudjEpLHRoaXMudjIuY29weSh0LnYyKSx0aGlzfSx5Y3QucHJvdG90eXBlLnRvSlNPTj1mdW5jdGlvbigpe2NvbnN0IHQ9c2N0LnByb3RvdHlwZS50b0pTT04uY2FsbCh0aGlzKTtyZXR1cm4gdC52MD10aGlzLnYwLnRvQXJyYXkoKSx0LnYxPXRoaXMudjEudG9BcnJheSgpLHQudjI9dGhpcy52Mi50b0FycmF5KCksdH0seWN0LnByb3RvdHlwZS5mcm9tSlNPTj1mdW5jdGlvbih0KXtyZXR1cm4gc2N0LnByb3RvdHlwZS5mcm9tSlNPTi5jYWxsKHRoaXMsdCksdGhpcy52MC5mcm9tQXJyYXkodC52MCksdGhpcy52MS5mcm9tQXJyYXkodC52MSksdGhpcy52Mi5mcm9tQXJyYXkodC52MiksdGhpc30sKGtjdC5wcm90b3R5cGU9T2JqZWN0LmNyZWF0ZShzY3QucHJvdG90eXBlKSkuY29uc3RydWN0b3I9a2N0LGtjdC5wcm90b3R5cGUuaXNRdWFkcmF0aWNCZXppZXJDdXJ2ZTM9ITAsa2N0LnByb3RvdHlwZS5nZXRQb2ludD1mdW5jdGlvbih0LG49bmV3IHR0dCl7Y29uc3QgZT1uLGE9dGhpcy52MCxvPXRoaXMudjEscj10aGlzLnYyO3JldHVybiBlLnNldChfY3QodCxhLngsby54LHIueCksX2N0KHQsYS55LG8ueSxyLnkpLF9jdCh0LGEueixvLnosci56KSksZX0sa2N0LnByb3RvdHlwZS5jb3B5PWZ1bmN0aW9uKHQpe3JldHVybiBzY3QucHJvdG90eXBlLmNvcHkuY2FsbCh0aGlzLHQpLHRoaXMudjAuY29weSh0LnYwKSx0aGlzLnYxLmNvcHkodC52MSksdGhpcy52Mi5jb3B5KHQudjIpLHRoaXN9LGtjdC5wcm90b3R5cGUudG9KU09OPWZ1bmN0aW9uKCl7Y29uc3QgdD1zY3QucHJvdG90eXBlLnRvSlNPTi5jYWxsKHRoaXMpO3JldHVybiB0LnYwPXRoaXMudjAudG9BcnJheSgpLHQudjE9dGhpcy52MS50b0FycmF5KCksdC52Mj10aGlzLnYyLnRvQXJyYXkoKSx0fSxrY3QucHJvdG90eXBlLmZyb21KU09OPWZ1bmN0aW9uKHQpe3JldHVybiBzY3QucHJvdG90eXBlLmZyb21KU09OLmNhbGwodGhpcyx0KSx0aGlzLnYwLmZyb21BcnJheSh0LnYwKSx0aGlzLnYxLmZyb21BcnJheSh0LnYxKSx0aGlzLnYyLmZyb21BcnJheSh0LnYyKSx0aGlzfSwodmN0LnByb3RvdHlwZT1PYmplY3QuY3JlYXRlKHNjdC5wcm90b3R5cGUpKS5jb25zdHJ1Y3Rvcj12Y3QsdmN0LnByb3RvdHlwZS5pc1NwbGluZUN1cnZlPSEwLHZjdC5wcm90b3R5cGUuZ2V0UG9pbnQ9ZnVuY3Rpb24odCxuPW5ldyBXOSl7Y29uc3QgZT1uLGE9dGhpcy5wb2ludHMsbz0oYS5sZW5ndGgtMSkqdCxyPU1hdGguZmxvb3IobyksaT1vLXIsYz1hWzA9PT1yP3I6ci0xXSxzPWFbcl0sbD1hW3I+YS5sZW5ndGgtMj9hLmxlbmd0aC0xOnIrMV0sbT1hW3I+YS5sZW5ndGgtMz9hLmxlbmd0aC0xOnIrMl07cmV0dXJuIGUuc2V0KGhjdChpLGMueCxzLngsbC54LG0ueCksaGN0KGksYy55LHMueSxsLnksbS55KSksZX0sdmN0LnByb3RvdHlwZS5jb3B5PWZ1bmN0aW9uKHQpe3NjdC5wcm90b3R5cGUuY29weS5jYWxsKHRoaXMsdCksdGhpcy5wb2ludHM9W107Zm9yKGxldCBuPTAsZT10LnBvaW50cy5sZW5ndGg7bjxlO24rKyl0aGlzLnBvaW50cy5wdXNoKHQucG9pbnRzW25dLmNsb25lKCkpO3JldHVybiB0aGlzfSx2Y3QucHJvdG90eXBlLnRvSlNPTj1mdW5jdGlvbigpe2NvbnN0IHQ9c2N0LnByb3RvdHlwZS50b0pTT04uY2FsbCh0aGlzKTt0LnBvaW50cz1bXTtmb3IobGV0IG49MCxlPXRoaXMucG9pbnRzLmxlbmd0aDtuPGU7bisrKXQucG9pbnRzLnB1c2godGhpcy5wb2ludHNbbl0udG9BcnJheSgpKTtyZXR1cm4gdH0sdmN0LnByb3RvdHlwZS5mcm9tSlNPTj1mdW5jdGlvbih0KXtzY3QucHJvdG90eXBlLmZyb21KU09OLmNhbGwodGhpcyx0KSx0aGlzLnBvaW50cz1bXTtmb3IobGV0IG49MCxlPXQucG9pbnRzLmxlbmd0aDtuPGU7bisrKXtjb25zdCBlPXQucG9pbnRzW25dO3RoaXMucG9pbnRzLnB1c2goKG5ldyBXOSkuZnJvbUFycmF5KGUpKX1yZXR1cm4gdGhpc307dmFyIHdjdD1PYmplY3QuZnJlZXplKHtfX3Byb3RvX186bnVsbCxBcmNDdXJ2ZTptY3QsQ2F0bXVsbFJvbUN1cnZlMzpmY3QsQ3ViaWNCZXppZXJDdXJ2ZTpNY3QsQ3ViaWNCZXppZXJDdXJ2ZTM6T2N0LEVsbGlwc2VDdXJ2ZTpsY3QsTGluZUN1cnZlOlBjdCxMaW5lQ3VydmUzOnhjdCxRdWFkcmF0aWNCZXppZXJDdXJ2ZTp5Y3QsUXVhZHJhdGljQmV6aWVyQ3VydmUzOmtjdCxTcGxpbmVDdXJ2ZTp2Y3R9KTtmdW5jdGlvbiBTY3QoKXtzY3QuY2FsbCh0aGlzKSx0aGlzLnR5cGU9IkN1cnZlUGF0aCIsdGhpcy5jdXJ2ZXM9W10sdGhpcy5hdXRvQ2xvc2U9ITF9ZnVuY3Rpb24gRWN0KHQpe1NjdC5jYWxsKHRoaXMpLHRoaXMudHlwZT0iUGF0aCIsdGhpcy5jdXJyZW50UG9pbnQ9bmV3IFc5LHQmJnRoaXMuc2V0RnJvbVBvaW50cyh0KX1mdW5jdGlvbiBBY3QodCl7RWN0LmNhbGwodGhpcyx0KSx0aGlzLnV1aWQ9VTkuZ2VuZXJhdGVVVUlEKCksdGhpcy50eXBlPSJTaGFwZSIsdGhpcy5ob2xlcz1bXX1mdW5jdGlvbiB6Y3QodCxuPTEpeyR0dC5jYWxsKHRoaXMpLHRoaXMudHlwZT0iTGlnaHQiLHRoaXMuY29sb3I9bmV3IE9udCh0KSx0aGlzLmludGVuc2l0eT1ufWZ1bmN0aW9uIFJjdCh0LG4sZSl7emN0LmNhbGwodGhpcyx0LGUpLHRoaXMudHlwZT0iSGVtaXNwaGVyZUxpZ2h0Iix0aGlzLnBvc2l0aW9uLmNvcHkoJHR0LkRlZmF1bHRVcCksdGhpcy51cGRhdGVNYXRyaXgoKSx0aGlzLmdyb3VuZENvbG9yPW5ldyBPbnQobil9ZnVuY3Rpb24gVGN0KHQpe3RoaXMuY2FtZXJhPXQsdGhpcy5iaWFzPTAsdGhpcy5ub3JtYWxCaWFzPTAsdGhpcy5yYWRpdXM9MSx0aGlzLm1hcFNpemU9bmV3IFc5KDUxMiw1MTIpLHRoaXMubWFwPW51bGwsdGhpcy5tYXBQYXNzPW51bGwsdGhpcy5tYXRyaXg9bmV3IFN0dCx0aGlzLmF1dG9VcGRhdGU9ITAsdGhpcy5uZWVkc1VwZGF0ZT0hMSx0aGlzLl9mcnVzdHVtPW5ldyB6ZXQsdGhpcy5fZnJhbWVFeHRlbnRzPW5ldyBXOSgxLDEpLHRoaXMuX3ZpZXdwb3J0Q291bnQ9MSx0aGlzLl92aWV3cG9ydHM9W25ldyBROSgwLDAsMSwxKV19ZnVuY3Rpb24gRGN0KCl7VGN0LmNhbGwodGhpcyxuZXcgUGV0KDUwLDEsLjUsNTAwKSksdGhpcy5mb2N1cz0xfWZ1bmN0aW9uIEljdCh0LG4sZSxhLG8scil7emN0LmNhbGwodGhpcyx0LG4pLHRoaXMudHlwZT0iU3BvdExpZ2h0Iix0aGlzLnBvc2l0aW9uLmNvcHkoJHR0LkRlZmF1bHRVcCksdGhpcy51cGRhdGVNYXRyaXgoKSx0aGlzLnRhcmdldD1uZXcgJHR0LE9iamVjdC5kZWZpbmVQcm9wZXJ0eSh0aGlzLCJwb3dlciIse2dldDpmdW5jdGlvbigpe3JldHVybiB0aGlzLmludGVuc2l0eSpNYXRoLlBJfSxzZXQ6ZnVuY3Rpb24odCl7dGhpcy5pbnRlbnNpdHk9dC9NYXRoLlBJfX0pLHRoaXMuZGlzdGFuY2U9dm9pZCAwIT09ZT9lOjAsdGhpcy5hbmdsZT12b2lkIDAhPT1hP2E6TWF0aC5QSS8zLHRoaXMucGVudW1icmE9dm9pZCAwIT09bz9vOjAsdGhpcy5kZWNheT12b2lkIDAhPT1yP3I6MSx0aGlzLnNoYWRvdz1uZXcgRGN0fWZ1bmN0aW9uIE5jdCgpe1RjdC5jYWxsKHRoaXMsbmV3IFBldCg5MCwxLC41LDUwMCkpLHRoaXMuX2ZyYW1lRXh0ZW50cz1uZXcgVzkoNCwyKSx0aGlzLl92aWV3cG9ydENvdW50PTYsdGhpcy5fdmlld3BvcnRzPVtuZXcgUTkoMiwxLDEsMSksbmV3IFE5KDAsMSwxLDEpLG5ldyBROSgzLDEsMSwxKSxuZXcgUTkoMSwxLDEsMSksbmV3IFE5KDMsMCwxLDEpLG5ldyBROSgxLDAsMSwxKV0sdGhpcy5fY3ViZURpcmVjdGlvbnM9W25ldyB0dHQoMSwwLDApLG5ldyB0dHQoLTEsMCwwKSxuZXcgdHR0KDAsMCwxKSxuZXcgdHR0KDAsMCwtMSksbmV3IHR0dCgwLDEsMCksbmV3IHR0dCgwLC0xLDApXSx0aGlzLl9jdWJlVXBzPVtuZXcgdHR0KDAsMSwwKSxuZXcgdHR0KDAsMSwwKSxuZXcgdHR0KDAsMSwwKSxuZXcgdHR0KDAsMSwwKSxuZXcgdHR0KDAsMCwxKSxuZXcgdHR0KDAsMCwtMSldfWZ1bmN0aW9uIEZjdCh0LG4sZSxhKXt6Y3QuY2FsbCh0aGlzLHQsbiksdGhpcy50eXBlPSJQb2ludExpZ2h0IixPYmplY3QuZGVmaW5lUHJvcGVydHkodGhpcywicG93ZXIiLHtnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gNCp0aGlzLmludGVuc2l0eSpNYXRoLlBJfSxzZXQ6ZnVuY3Rpb24odCl7dGhpcy5pbnRlbnNpdHk9dC8oNCpNYXRoLlBJKX19KSx0aGlzLmRpc3RhbmNlPXZvaWQgMCE9PWU/ZTowLHRoaXMuZGVjYXk9dm9pZCAwIT09YT9hOjEsdGhpcy5zaGFkb3c9bmV3IE5jdH1mdW5jdGlvbiBMY3QodD0tMSxuPTEsZT0xLGE9LTEsbz0uMSxyPTJlMyl7T2V0LmNhbGwodGhpcyksdGhpcy50eXBlPSJPcnRob2dyYXBoaWNDYW1lcmEiLHRoaXMuem9vbT0xLHRoaXMudmlldz1udWxsLHRoaXMubGVmdD10LHRoaXMucmlnaHQ9bix0aGlzLnRvcD1lLHRoaXMuYm90dG9tPWEsdGhpcy5uZWFyPW8sdGhpcy5mYXI9cix0aGlzLnVwZGF0ZVByb2plY3Rpb25NYXRyaXgoKX1mdW5jdGlvbiBIY3QoKXtUY3QuY2FsbCh0aGlzLG5ldyBMY3QoLTUsNSw1LC01LC41LDUwMCkpfWZ1bmN0aW9uIEJjdCh0LG4pe3pjdC5jYWxsKHRoaXMsdCxuKSx0aGlzLnR5cGU9IkRpcmVjdGlvbmFsTGlnaHQiLHRoaXMucG9zaXRpb24uY29weSgkdHQuRGVmYXVsdFVwKSx0aGlzLnVwZGF0ZU1hdHJpeCgpLHRoaXMudGFyZ2V0PW5ldyAkdHQsdGhpcy5zaGFkb3c9bmV3IEhjdH1mdW5jdGlvbiBWY3QodCxuKXt6Y3QuY2FsbCh0aGlzLHQsbiksdGhpcy50eXBlPSJBbWJpZW50TGlnaHQifWZ1bmN0aW9uIGpjdCh0LG4sZSxhKXt6Y3QuY2FsbCh0aGlzLHQsbiksdGhpcy50eXBlPSJSZWN0QXJlYUxpZ2h0Iix0aGlzLndpZHRoPXZvaWQgMCE9PWU/ZToxMCx0aGlzLmhlaWdodD12b2lkIDAhPT1hP2E6MTB9U2N0LnByb3RvdHlwZT1PYmplY3QuYXNzaWduKE9iamVjdC5jcmVhdGUoc2N0LnByb3RvdHlwZSkse2NvbnN0cnVjdG9yOlNjdCxhZGQ6ZnVuY3Rpb24odCl7dGhpcy5jdXJ2ZXMucHVzaCh0KX0sY2xvc2VQYXRoOmZ1bmN0aW9uKCl7Y29uc3QgdD10aGlzLmN1cnZlc1swXS5nZXRQb2ludCgwKSxuPXRoaXMuY3VydmVzW3RoaXMuY3VydmVzLmxlbmd0aC0xXS5nZXRQb2ludCgxKTt0LmVxdWFscyhuKXx8dGhpcy5jdXJ2ZXMucHVzaChuZXcgUGN0KG4sdCkpfSxnZXRQb2ludDpmdW5jdGlvbih0KXtjb25zdCBuPXQqdGhpcy5nZXRMZW5ndGgoKSxlPXRoaXMuZ2V0Q3VydmVMZW5ndGhzKCk7bGV0IGE9MDtmb3IoO2E8ZS5sZW5ndGg7KXtpZihlW2FdPj1uKXtjb25zdCB0PWVbYV0tbixvPXRoaXMuY3VydmVzW2FdLHI9by5nZXRMZW5ndGgoKTtyZXR1cm4gby5nZXRQb2ludEF0KDA9PT1yPzA6MS10L3IpfWErK31yZXR1cm4gbnVsbH0sZ2V0TGVuZ3RoOmZ1bmN0aW9uKCl7Y29uc3QgdD10aGlzLmdldEN1cnZlTGVuZ3RocygpO3JldHVybiB0W3QubGVuZ3RoLTFdfSx1cGRhdGVBcmNMZW5ndGhzOmZ1bmN0aW9uKCl7dGhpcy5uZWVkc1VwZGF0ZT0hMCx0aGlzLmNhY2hlTGVuZ3Rocz1udWxsLHRoaXMuZ2V0Q3VydmVMZW5ndGhzKCl9LGdldEN1cnZlTGVuZ3RoczpmdW5jdGlvbigpe2lmKHRoaXMuY2FjaGVMZW5ndGhzJiZ0aGlzLmNhY2hlTGVuZ3Rocy5sZW5ndGg9PT10aGlzLmN1cnZlcy5sZW5ndGgpcmV0dXJuIHRoaXMuY2FjaGVMZW5ndGhzO2NvbnN0IHQ9W107bGV0IG49MDtmb3IobGV0IGU9MCxhPXRoaXMuY3VydmVzLmxlbmd0aDtlPGE7ZSsrKW4rPXRoaXMuY3VydmVzW2VdLmdldExlbmd0aCgpLHQucHVzaChuKTtyZXR1cm4gdGhpcy5jYWNoZUxlbmd0aHM9dCx0fSxnZXRTcGFjZWRQb2ludHM6ZnVuY3Rpb24odD00MCl7Y29uc3Qgbj1bXTtmb3IobGV0IGU9MDtlPD10O2UrKyluLnB1c2godGhpcy5nZXRQb2ludChlL3QpKTtyZXR1cm4gdGhpcy5hdXRvQ2xvc2UmJm4ucHVzaChuWzBdKSxufSxnZXRQb2ludHM6ZnVuY3Rpb24odD0xMil7Y29uc3Qgbj1bXTtsZXQgZTtmb3IobGV0IGE9MCxvPXRoaXMuY3VydmVzO2E8by5sZW5ndGg7YSsrKXtjb25zdCByPW9bYV0saT1yLmdldFBvaW50cyhyJiZyLmlzRWxsaXBzZUN1cnZlPzIqdDpyJiYoci5pc0xpbmVDdXJ2ZXx8ci5pc0xpbmVDdXJ2ZTMpPzE6ciYmci5pc1NwbGluZUN1cnZlP3Qqci5wb2ludHMubGVuZ3RoOnQpO2ZvcihsZXQgdD0wO3Q8aS5sZW5ndGg7dCsrKXtjb25zdCBhPWlbdF07ZSYmZS5lcXVhbHMoYSl8fChuLnB1c2goYSksZT1hKX19cmV0dXJuIHRoaXMuYXV0b0Nsb3NlJiZuLmxlbmd0aD4xJiYhbltuLmxlbmd0aC0xXS5lcXVhbHMoblswXSkmJm4ucHVzaChuWzBdKSxufSxjb3B5OmZ1bmN0aW9uKHQpe3NjdC5wcm90b3R5cGUuY29weS5jYWxsKHRoaXMsdCksdGhpcy5jdXJ2ZXM9W107Zm9yKGxldCBuPTAsZT10LmN1cnZlcy5sZW5ndGg7bjxlO24rKyl0aGlzLmN1cnZlcy5wdXNoKHQuY3VydmVzW25dLmNsb25lKCkpO3JldHVybiB0aGlzLmF1dG9DbG9zZT10LmF1dG9DbG9zZSx0aGlzfSx0b0pTT046ZnVuY3Rpb24oKXtjb25zdCB0PXNjdC5wcm90b3R5cGUudG9KU09OLmNhbGwodGhpcyk7dC5hdXRvQ2xvc2U9dGhpcy5hdXRvQ2xvc2UsdC5jdXJ2ZXM9W107Zm9yKGxldCBuPTAsZT10aGlzLmN1cnZlcy5sZW5ndGg7bjxlO24rKyl0LmN1cnZlcy5wdXNoKHRoaXMuY3VydmVzW25dLnRvSlNPTigpKTtyZXR1cm4gdH0sZnJvbUpTT046ZnVuY3Rpb24odCl7c2N0LnByb3RvdHlwZS5mcm9tSlNPTi5jYWxsKHRoaXMsdCksdGhpcy5hdXRvQ2xvc2U9dC5hdXRvQ2xvc2UsdGhpcy5jdXJ2ZXM9W107Zm9yKGxldCBuPTAsZT10LmN1cnZlcy5sZW5ndGg7bjxlO24rKyl7Y29uc3QgZT10LmN1cnZlc1tuXTt0aGlzLmN1cnZlcy5wdXNoKChuZXcgd2N0W2UudHlwZV0pLmZyb21KU09OKGUpKX1yZXR1cm4gdGhpc319KSxFY3QucHJvdG90eXBlPU9iamVjdC5hc3NpZ24oT2JqZWN0LmNyZWF0ZShTY3QucHJvdG90eXBlKSx7Y29uc3RydWN0b3I6RWN0LHNldEZyb21Qb2ludHM6ZnVuY3Rpb24odCl7dGhpcy5tb3ZlVG8odFswXS54LHRbMF0ueSk7Zm9yKGxldCBuPTEsZT10Lmxlbmd0aDtuPGU7bisrKXRoaXMubGluZVRvKHRbbl0ueCx0W25dLnkpO3JldHVybiB0aGlzfSxtb3ZlVG86ZnVuY3Rpb24odCxuKXtyZXR1cm4gdGhpcy5jdXJyZW50UG9pbnQuc2V0KHQsbiksdGhpc30sbGluZVRvOmZ1bmN0aW9uKHQsbil7Y29uc3QgZT1uZXcgUGN0KHRoaXMuY3VycmVudFBvaW50LmNsb25lKCksbmV3IFc5KHQsbikpO3JldHVybiB0aGlzLmN1cnZlcy5wdXNoKGUpLHRoaXMuY3VycmVudFBvaW50LnNldCh0LG4pLHRoaXN9LHF1YWRyYXRpY0N1cnZlVG86ZnVuY3Rpb24odCxuLGUsYSl7Y29uc3Qgbz1uZXcgeWN0KHRoaXMuY3VycmVudFBvaW50LmNsb25lKCksbmV3IFc5KHQsbiksbmV3IFc5KGUsYSkpO3JldHVybiB0aGlzLmN1cnZlcy5wdXNoKG8pLHRoaXMuY3VycmVudFBvaW50LnNldChlLGEpLHRoaXN9LGJlemllckN1cnZlVG86ZnVuY3Rpb24odCxuLGUsYSxvLHIpe2NvbnN0IGk9bmV3IE1jdCh0aGlzLmN1cnJlbnRQb2ludC5jbG9uZSgpLG5ldyBXOSh0LG4pLG5ldyBXOShlLGEpLG5ldyBXOShvLHIpKTtyZXR1cm4gdGhpcy5jdXJ2ZXMucHVzaChpKSx0aGlzLmN1cnJlbnRQb2ludC5zZXQobyxyKSx0aGlzfSxzcGxpbmVUaHJ1OmZ1bmN0aW9uKHQpe2NvbnN0IG49bmV3IHZjdChbdGhpcy5jdXJyZW50UG9pbnQuY2xvbmUoKV0uY29uY2F0KHQpKTtyZXR1cm4gdGhpcy5jdXJ2ZXMucHVzaChuKSx0aGlzLmN1cnJlbnRQb2ludC5jb3B5KHRbdC5sZW5ndGgtMV0pLHRoaXN9LGFyYzpmdW5jdGlvbih0LG4sZSxhLG8scil7cmV0dXJuIHRoaXMuYWJzYXJjKHQrdGhpcy5jdXJyZW50UG9pbnQueCxuK3RoaXMuY3VycmVudFBvaW50LnksZSxhLG8sciksdGhpc30sYWJzYXJjOmZ1bmN0aW9uKHQsbixlLGEsbyxyKXtyZXR1cm4gdGhpcy5hYnNlbGxpcHNlKHQsbixlLGUsYSxvLHIpLHRoaXN9LGVsbGlwc2U6ZnVuY3Rpb24odCxuLGUsYSxvLHIsaSxjKXtyZXR1cm4gdGhpcy5hYnNlbGxpcHNlKHQrdGhpcy5jdXJyZW50UG9pbnQueCxuK3RoaXMuY3VycmVudFBvaW50LnksZSxhLG8scixpLGMpLHRoaXN9LGFic2VsbGlwc2U6ZnVuY3Rpb24odCxuLGUsYSxvLHIsaSxjKXtjb25zdCBzPW5ldyBsY3QodCxuLGUsYSxvLHIsaSxjKTtpZih0aGlzLmN1cnZlcy5sZW5ndGg+MCl7Y29uc3QgdD1zLmdldFBvaW50KDApO3QuZXF1YWxzKHRoaXMuY3VycmVudFBvaW50KXx8dGhpcy5saW5lVG8odC54LHQueSl9dGhpcy5jdXJ2ZXMucHVzaChzKTtjb25zdCBsPXMuZ2V0UG9pbnQoMSk7cmV0dXJuIHRoaXMuY3VycmVudFBvaW50LmNvcHkobCksdGhpc30sY29weTpmdW5jdGlvbih0KXtyZXR1cm4gU2N0LnByb3RvdHlwZS5jb3B5LmNhbGwodGhpcyx0KSx0aGlzLmN1cnJlbnRQb2ludC5jb3B5KHQuY3VycmVudFBvaW50KSx0aGlzfSx0b0pTT046ZnVuY3Rpb24oKXtjb25zdCB0PVNjdC5wcm90b3R5cGUudG9KU09OLmNhbGwodGhpcyk7cmV0dXJuIHQuY3VycmVudFBvaW50PXRoaXMuY3VycmVudFBvaW50LnRvQXJyYXkoKSx0fSxmcm9tSlNPTjpmdW5jdGlvbih0KXtyZXR1cm4gU2N0LnByb3RvdHlwZS5mcm9tSlNPTi5jYWxsKHRoaXMsdCksdGhpcy5jdXJyZW50UG9pbnQuZnJvbUFycmF5KHQuY3VycmVudFBvaW50KSx0aGlzfX0pLEFjdC5wcm90b3R5cGU9T2JqZWN0LmFzc2lnbihPYmplY3QuY3JlYXRlKEVjdC5wcm90b3R5cGUpLHtjb25zdHJ1Y3RvcjpBY3QsZ2V0UG9pbnRzSG9sZXM6ZnVuY3Rpb24odCl7Y29uc3Qgbj1bXTtmb3IobGV0IGU9MCxhPXRoaXMuaG9sZXMubGVuZ3RoO2U8YTtlKyspbltlXT10aGlzLmhvbGVzW2VdLmdldFBvaW50cyh0KTtyZXR1cm4gbn0sZXh0cmFjdFBvaW50czpmdW5jdGlvbih0KXtyZXR1cm57c2hhcGU6dGhpcy5nZXRQb2ludHModCksaG9sZXM6dGhpcy5nZXRQb2ludHNIb2xlcyh0KX19LGNvcHk6ZnVuY3Rpb24odCl7RWN0LnByb3RvdHlwZS5jb3B5LmNhbGwodGhpcyx0KSx0aGlzLmhvbGVzPVtdO2ZvcihsZXQgbj0wLGU9dC5ob2xlcy5sZW5ndGg7bjxlO24rKyl0aGlzLmhvbGVzLnB1c2godC5ob2xlc1tuXS5jbG9uZSgpKTtyZXR1cm4gdGhpc30sdG9KU09OOmZ1bmN0aW9uKCl7Y29uc3QgdD1FY3QucHJvdG90eXBlLnRvSlNPTi5jYWxsKHRoaXMpO3QudXVpZD10aGlzLnV1aWQsdC5ob2xlcz1bXTtmb3IobGV0IG49MCxlPXRoaXMuaG9sZXMubGVuZ3RoO248ZTtuKyspdC5ob2xlcy5wdXNoKHRoaXMuaG9sZXNbbl0udG9KU09OKCkpO3JldHVybiB0fSxmcm9tSlNPTjpmdW5jdGlvbih0KXtFY3QucHJvdG90eXBlLmZyb21KU09OLmNhbGwodGhpcyx0KSx0aGlzLnV1aWQ9dC51dWlkLHRoaXMuaG9sZXM9W107Zm9yKGxldCBuPTAsZT10LmhvbGVzLmxlbmd0aDtuPGU7bisrKXtjb25zdCBlPXQuaG9sZXNbbl07dGhpcy5ob2xlcy5wdXNoKChuZXcgRWN0KS5mcm9tSlNPTihlKSl9cmV0dXJuIHRoaXN9fSksemN0LnByb3RvdHlwZT1PYmplY3QuYXNzaWduKE9iamVjdC5jcmVhdGUoJHR0LnByb3RvdHlwZSkse2NvbnN0cnVjdG9yOnpjdCxpc0xpZ2h0OiEwLGNvcHk6ZnVuY3Rpb24odCl7cmV0dXJuICR0dC5wcm90b3R5cGUuY29weS5jYWxsKHRoaXMsdCksdGhpcy5jb2xvci5jb3B5KHQuY29sb3IpLHRoaXMuaW50ZW5zaXR5PXQuaW50ZW5zaXR5LHRoaXN9LHRvSlNPTjpmdW5jdGlvbih0KXtjb25zdCBuPSR0dC5wcm90b3R5cGUudG9KU09OLmNhbGwodGhpcyx0KTtyZXR1cm4gbi5vYmplY3QuY29sb3I9dGhpcy5jb2xvci5nZXRIZXgoKSxuLm9iamVjdC5pbnRlbnNpdHk9dGhpcy5pbnRlbnNpdHksdm9pZCAwIT09dGhpcy5ncm91bmRDb2xvciYmKG4ub2JqZWN0Lmdyb3VuZENvbG9yPXRoaXMuZ3JvdW5kQ29sb3IuZ2V0SGV4KCkpLHZvaWQgMCE9PXRoaXMuZGlzdGFuY2UmJihuLm9iamVjdC5kaXN0YW5jZT10aGlzLmRpc3RhbmNlKSx2b2lkIDAhPT10aGlzLmFuZ2xlJiYobi5vYmplY3QuYW5nbGU9dGhpcy5hbmdsZSksdm9pZCAwIT09dGhpcy5kZWNheSYmKG4ub2JqZWN0LmRlY2F5PXRoaXMuZGVjYXkpLHZvaWQgMCE9PXRoaXMucGVudW1icmEmJihuLm9iamVjdC5wZW51bWJyYT10aGlzLnBlbnVtYnJhKSx2b2lkIDAhPT10aGlzLnNoYWRvdyYmKG4ub2JqZWN0LnNoYWRvdz10aGlzLnNoYWRvdy50b0pTT04oKSksbn19KSxSY3QucHJvdG90eXBlPU9iamVjdC5hc3NpZ24oT2JqZWN0LmNyZWF0ZSh6Y3QucHJvdG90eXBlKSx7Y29uc3RydWN0b3I6UmN0LGlzSGVtaXNwaGVyZUxpZ2h0OiEwLGNvcHk6ZnVuY3Rpb24odCl7cmV0dXJuIHpjdC5wcm90b3R5cGUuY29weS5jYWxsKHRoaXMsdCksdGhpcy5ncm91bmRDb2xvci5jb3B5KHQuZ3JvdW5kQ29sb3IpLHRoaXN9fSksT2JqZWN0LmFzc2lnbihUY3QucHJvdG90eXBlLHtfcHJvalNjcmVlbk1hdHJpeDpuZXcgU3R0LF9saWdodFBvc2l0aW9uV29ybGQ6bmV3IHR0dCxfbG9va1RhcmdldDpuZXcgdHR0LGdldFZpZXdwb3J0Q291bnQ6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5fdmlld3BvcnRDb3VudH0sZ2V0RnJ1c3R1bTpmdW5jdGlvbigpe3JldHVybiB0aGlzLl9mcnVzdHVtfSx1cGRhdGVNYXRyaWNlczpmdW5jdGlvbih0KXtjb25zdCBuPXRoaXMuY2FtZXJhLGU9dGhpcy5tYXRyaXgsYT10aGlzLl9wcm9qU2NyZWVuTWF0cml4LG89dGhpcy5fbG9va1RhcmdldCxyPXRoaXMuX2xpZ2h0UG9zaXRpb25Xb3JsZDtyLnNldEZyb21NYXRyaXhQb3NpdGlvbih0Lm1hdHJpeFdvcmxkKSxuLnBvc2l0aW9uLmNvcHkociksby5zZXRGcm9tTWF0cml4UG9zaXRpb24odC50YXJnZXQubWF0cml4V29ybGQpLG4ubG9va0F0KG8pLG4udXBkYXRlTWF0cml4V29ybGQoKSxhLm11bHRpcGx5TWF0cmljZXMobi5wcm9qZWN0aW9uTWF0cml4LG4ubWF0cml4V29ybGRJbnZlcnNlKSx0aGlzLl9mcnVzdHVtLnNldEZyb21Qcm9qZWN0aW9uTWF0cml4KGEpLGUuc2V0KC41LDAsMCwuNSwwLC41LDAsLjUsMCwwLC41LC41LDAsMCwwLDEpLGUubXVsdGlwbHkobi5wcm9qZWN0aW9uTWF0cml4KSxlLm11bHRpcGx5KG4ubWF0cml4V29ybGRJbnZlcnNlKX0sZ2V0Vmlld3BvcnQ6ZnVuY3Rpb24odCl7cmV0dXJuIHRoaXMuX3ZpZXdwb3J0c1t0XX0sZ2V0RnJhbWVFeHRlbnRzOmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuX2ZyYW1lRXh0ZW50c30sY29weTpmdW5jdGlvbih0KXtyZXR1cm4gdGhpcy5jYW1lcmE9dC5jYW1lcmEuY2xvbmUoKSx0aGlzLmJpYXM9dC5iaWFzLHRoaXMucmFkaXVzPXQucmFkaXVzLHRoaXMubWFwU2l6ZS5jb3B5KHQubWFwU2l6ZSksdGhpc30sY2xvbmU6ZnVuY3Rpb24oKXtyZXR1cm4obmV3IHRoaXMuY29uc3RydWN0b3IpLmNvcHkodGhpcyl9LHRvSlNPTjpmdW5jdGlvbigpe2NvbnN0IHQ9e307cmV0dXJuIDAhPT10aGlzLmJpYXMmJih0LmJpYXM9dGhpcy5iaWFzKSwwIT09dGhpcy5ub3JtYWxCaWFzJiYodC5ub3JtYWxCaWFzPXRoaXMubm9ybWFsQmlhcyksMSE9PXRoaXMucmFkaXVzJiYodC5yYWRpdXM9dGhpcy5yYWRpdXMpLDUxMj09PXRoaXMubWFwU2l6ZS54JiY1MTI9PT10aGlzLm1hcFNpemUueXx8KHQubWFwU2l6ZT10aGlzLm1hcFNpemUudG9BcnJheSgpKSx0LmNhbWVyYT10aGlzLmNhbWVyYS50b0pTT04oITEpLm9iamVjdCxkZWxldGUgdC5jYW1lcmEubWF0cml4LHR9fSksRGN0LnByb3RvdHlwZT1PYmplY3QuYXNzaWduKE9iamVjdC5jcmVhdGUoVGN0LnByb3RvdHlwZSkse2NvbnN0cnVjdG9yOkRjdCxpc1Nwb3RMaWdodFNoYWRvdzohMCx1cGRhdGVNYXRyaWNlczpmdW5jdGlvbih0KXtjb25zdCBuPXRoaXMuY2FtZXJhLGU9MipVOS5SQUQyREVHKnQuYW5nbGUqdGhpcy5mb2N1cyxhPXRoaXMubWFwU2l6ZS53aWR0aC90aGlzLm1hcFNpemUuaGVpZ2h0LG89dC5kaXN0YW5jZXx8bi5mYXI7ZT09PW4uZm92JiZhPT09bi5hc3BlY3QmJm89PT1uLmZhcnx8KG4uZm92PWUsbi5hc3BlY3Q9YSxuLmZhcj1vLG4udXBkYXRlUHJvamVjdGlvbk1hdHJpeCgpKSxUY3QucHJvdG90eXBlLnVwZGF0ZU1hdHJpY2VzLmNhbGwodGhpcyx0KX19KSxJY3QucHJvdG90eXBlPU9iamVjdC5hc3NpZ24oT2JqZWN0LmNyZWF0ZSh6Y3QucHJvdG90eXBlKSx7Y29uc3RydWN0b3I6SWN0LGlzU3BvdExpZ2h0OiEwLGNvcHk6ZnVuY3Rpb24odCl7cmV0dXJuIHpjdC5wcm90b3R5cGUuY29weS5jYWxsKHRoaXMsdCksdGhpcy5kaXN0YW5jZT10LmRpc3RhbmNlLHRoaXMuYW5nbGU9dC5hbmdsZSx0aGlzLnBlbnVtYnJhPXQucGVudW1icmEsdGhpcy5kZWNheT10LmRlY2F5LHRoaXMudGFyZ2V0PXQudGFyZ2V0LmNsb25lKCksdGhpcy5zaGFkb3c9dC5zaGFkb3cuY2xvbmUoKSx0aGlzfX0pLE5jdC5wcm90b3R5cGU9T2JqZWN0LmFzc2lnbihPYmplY3QuY3JlYXRlKFRjdC5wcm90b3R5cGUpLHtjb25zdHJ1Y3RvcjpOY3QsaXNQb2ludExpZ2h0U2hhZG93OiEwLHVwZGF0ZU1hdHJpY2VzOmZ1bmN0aW9uKHQsbj0wKXtjb25zdCBlPXRoaXMuY2FtZXJhLGE9dGhpcy5tYXRyaXgsbz10aGlzLl9saWdodFBvc2l0aW9uV29ybGQscj10aGlzLl9sb29rVGFyZ2V0LGk9dGhpcy5fcHJvalNjcmVlbk1hdHJpeDtvLnNldEZyb21NYXRyaXhQb3NpdGlvbih0Lm1hdHJpeFdvcmxkKSxlLnBvc2l0aW9uLmNvcHkobyksci5jb3B5KGUucG9zaXRpb24pLHIuYWRkKHRoaXMuX2N1YmVEaXJlY3Rpb25zW25dKSxlLnVwLmNvcHkodGhpcy5fY3ViZVVwc1tuXSksZS5sb29rQXQociksZS51cGRhdGVNYXRyaXhXb3JsZCgpLGEubWFrZVRyYW5zbGF0aW9uKC1vLngsLW8ueSwtby56KSxpLm11bHRpcGx5TWF0cmljZXMoZS5wcm9qZWN0aW9uTWF0cml4LGUubWF0cml4V29ybGRJbnZlcnNlKSx0aGlzLl9mcnVzdHVtLnNldEZyb21Qcm9qZWN0aW9uTWF0cml4KGkpfX0pLEZjdC5wcm90b3R5cGU9T2JqZWN0LmFzc2lnbihPYmplY3QuY3JlYXRlKHpjdC5wcm90b3R5cGUpLHtjb25zdHJ1Y3RvcjpGY3QsaXNQb2ludExpZ2h0OiEwLGNvcHk6ZnVuY3Rpb24odCl7cmV0dXJuIHpjdC5wcm90b3R5cGUuY29weS5jYWxsKHRoaXMsdCksdGhpcy5kaXN0YW5jZT10LmRpc3RhbmNlLHRoaXMuZGVjYXk9dC5kZWNheSx0aGlzLnNoYWRvdz10LnNoYWRvdy5jbG9uZSgpLHRoaXN9fSksTGN0LnByb3RvdHlwZT1PYmplY3QuYXNzaWduKE9iamVjdC5jcmVhdGUoT2V0LnByb3RvdHlwZSkse2NvbnN0cnVjdG9yOkxjdCxpc09ydGhvZ3JhcGhpY0NhbWVyYTohMCxjb3B5OmZ1bmN0aW9uKHQsbil7cmV0dXJuIE9ldC5wcm90b3R5cGUuY29weS5jYWxsKHRoaXMsdCxuKSx0aGlzLmxlZnQ9dC5sZWZ0LHRoaXMucmlnaHQ9dC5yaWdodCx0aGlzLnRvcD10LnRvcCx0aGlzLmJvdHRvbT10LmJvdHRvbSx0aGlzLm5lYXI9dC5uZWFyLHRoaXMuZmFyPXQuZmFyLHRoaXMuem9vbT10Lnpvb20sdGhpcy52aWV3PW51bGw9PT10LnZpZXc/bnVsbDpPYmplY3QuYXNzaWduKHt9LHQudmlldyksdGhpc30sc2V0Vmlld09mZnNldDpmdW5jdGlvbih0LG4sZSxhLG8scil7bnVsbD09PXRoaXMudmlldyYmKHRoaXMudmlldz17ZW5hYmxlZDohMCxmdWxsV2lkdGg6MSxmdWxsSGVpZ2h0OjEsb2Zmc2V0WDowLG9mZnNldFk6MCx3aWR0aDoxLGhlaWdodDoxfSksdGhpcy52aWV3LmVuYWJsZWQ9ITAsdGhpcy52aWV3LmZ1bGxXaWR0aD10LHRoaXMudmlldy5mdWxsSGVpZ2h0PW4sdGhpcy52aWV3Lm9mZnNldFg9ZSx0aGlzLnZpZXcub2Zmc2V0WT1hLHRoaXMudmlldy53aWR0aD1vLHRoaXMudmlldy5oZWlnaHQ9cix0aGlzLnVwZGF0ZVByb2plY3Rpb25NYXRyaXgoKX0sY2xlYXJWaWV3T2Zmc2V0OmZ1bmN0aW9uKCl7bnVsbCE9PXRoaXMudmlldyYmKHRoaXMudmlldy5lbmFibGVkPSExKSx0aGlzLnVwZGF0ZVByb2plY3Rpb25NYXRyaXgoKX0sdXBkYXRlUHJvamVjdGlvbk1hdHJpeDpmdW5jdGlvbigpe2NvbnN0IHQ9KHRoaXMucmlnaHQtdGhpcy5sZWZ0KS8oMip0aGlzLnpvb20pLG49KHRoaXMudG9wLXRoaXMuYm90dG9tKS8oMip0aGlzLnpvb20pLGU9KHRoaXMucmlnaHQrdGhpcy5sZWZ0KS8yLGE9KHRoaXMudG9wK3RoaXMuYm90dG9tKS8yO2xldCBvPWUtdCxyPWUrdCxpPWErbixjPWEtbjtpZihudWxsIT09dGhpcy52aWV3JiZ0aGlzLnZpZXcuZW5hYmxlZCl7Y29uc3QgdD0odGhpcy5yaWdodC10aGlzLmxlZnQpL3RoaXMudmlldy5mdWxsV2lkdGgvdGhpcy56b29tLG49KHRoaXMudG9wLXRoaXMuYm90dG9tKS90aGlzLnZpZXcuZnVsbEhlaWdodC90aGlzLnpvb207bys9dCp0aGlzLnZpZXcub2Zmc2V0WCxyPW8rdCp0aGlzLnZpZXcud2lkdGgsaS09bip0aGlzLnZpZXcub2Zmc2V0WSxjPWktbip0aGlzLnZpZXcuaGVpZ2h0fXRoaXMucHJvamVjdGlvbk1hdHJpeC5tYWtlT3J0aG9ncmFwaGljKG8scixpLGMsdGhpcy5uZWFyLHRoaXMuZmFyKSx0aGlzLnByb2plY3Rpb25NYXRyaXhJbnZlcnNlLmNvcHkodGhpcy5wcm9qZWN0aW9uTWF0cml4KS5pbnZlcnQoKX0sdG9KU09OOmZ1bmN0aW9uKHQpe2NvbnN0IG49JHR0LnByb3RvdHlwZS50b0pTT04uY2FsbCh0aGlzLHQpO3JldHVybiBuLm9iamVjdC56b29tPXRoaXMuem9vbSxuLm9iamVjdC5sZWZ0PXRoaXMubGVmdCxuLm9iamVjdC5yaWdodD10aGlzLnJpZ2h0LG4ub2JqZWN0LnRvcD10aGlzLnRvcCxuLm9iamVjdC5ib3R0b209dGhpcy5ib3R0b20sbi5vYmplY3QubmVhcj10aGlzLm5lYXIsbi5vYmplY3QuZmFyPXRoaXMuZmFyLG51bGwhPT10aGlzLnZpZXcmJihuLm9iamVjdC52aWV3PU9iamVjdC5hc3NpZ24oe30sdGhpcy52aWV3KSksbn19KSxIY3QucHJvdG90eXBlPU9iamVjdC5hc3NpZ24oT2JqZWN0LmNyZWF0ZShUY3QucHJvdG90eXBlKSx7Y29uc3RydWN0b3I6SGN0LGlzRGlyZWN0aW9uYWxMaWdodFNoYWRvdzohMCx1cGRhdGVNYXRyaWNlczpmdW5jdGlvbih0KXtUY3QucHJvdG90eXBlLnVwZGF0ZU1hdHJpY2VzLmNhbGwodGhpcyx0KX19KSxCY3QucHJvdG90eXBlPU9iamVjdC5hc3NpZ24oT2JqZWN0LmNyZWF0ZSh6Y3QucHJvdG90eXBlKSx7Y29uc3RydWN0b3I6QmN0LGlzRGlyZWN0aW9uYWxMaWdodDohMCxjb3B5OmZ1bmN0aW9uKHQpe3JldHVybiB6Y3QucHJvdG90eXBlLmNvcHkuY2FsbCh0aGlzLHQpLHRoaXMudGFyZ2V0PXQudGFyZ2V0LmNsb25lKCksdGhpcy5zaGFkb3c9dC5zaGFkb3cuY2xvbmUoKSx0aGlzfX0pLFZjdC5wcm90b3R5cGU9T2JqZWN0LmFzc2lnbihPYmplY3QuY3JlYXRlKHpjdC5wcm90b3R5cGUpLHtjb25zdHJ1Y3RvcjpWY3QsaXNBbWJpZW50TGlnaHQ6ITB9KSxqY3QucHJvdG90eXBlPU9iamVjdC5hc3NpZ24oT2JqZWN0LmNyZWF0ZSh6Y3QucHJvdG90eXBlKSx7Y29uc3RydWN0b3I6amN0LGlzUmVjdEFyZWFMaWdodDohMCxjb3B5OmZ1bmN0aW9uKHQpe3JldHVybiB6Y3QucHJvdG90eXBlLmNvcHkuY2FsbCh0aGlzLHQpLHRoaXMud2lkdGg9dC53aWR0aCx0aGlzLmhlaWdodD10LmhlaWdodCx0aGlzfSx0b0pTT046ZnVuY3Rpb24odCl7Y29uc3Qgbj16Y3QucHJvdG90eXBlLnRvSlNPTi5jYWxsKHRoaXMsdCk7cmV0dXJuIG4ub2JqZWN0LndpZHRoPXRoaXMud2lkdGgsbi5vYmplY3QuaGVpZ2h0PXRoaXMuaGVpZ2h0LG59fSk7Y2xhc3MgVWN0e2NvbnN0cnVjdG9yKCl7T2JqZWN0LmRlZmluZVByb3BlcnR5KHRoaXMsImlzU3BoZXJpY2FsSGFybW9uaWNzMyIse3ZhbHVlOiEwfSksdGhpcy5jb2VmZmljaWVudHM9W107Zm9yKGxldCB0PTA7dDw5O3QrKyl0aGlzLmNvZWZmaWNpZW50cy5wdXNoKG5ldyB0dHQpfXNldCh0KXtmb3IobGV0IG49MDtuPDk7bisrKXRoaXMuY29lZmZpY2llbnRzW25dLmNvcHkodFtuXSk7cmV0dXJuIHRoaXN9emVybygpe2ZvcihsZXQgdD0wO3Q8OTt0KyspdGhpcy5jb2VmZmljaWVudHNbdF0uc2V0KDAsMCwwKTtyZXR1cm4gdGhpc31nZXRBdCh0LG4pe2NvbnN0IGU9dC54LGE9dC55LG89dC56LHI9dGhpcy5jb2VmZmljaWVudHM7cmV0dXJuIG4uY29weShyWzBdKS5tdWx0aXBseVNjYWxhciguMjgyMDk1KSxuLmFkZFNjYWxlZFZlY3RvcihyWzFdLC40ODg2MDMqYSksbi5hZGRTY2FsZWRWZWN0b3IoclsyXSwuNDg4NjAzKm8pLG4uYWRkU2NhbGVkVmVjdG9yKHJbM10sLjQ4ODYwMyplKSxuLmFkZFNjYWxlZFZlY3RvcihyWzRdLGUqYSoxLjA5MjU0OCksbi5hZGRTY2FsZWRWZWN0b3Iocls1XSxhKm8qMS4wOTI1NDgpLG4uYWRkU2NhbGVkVmVjdG9yKHJbNl0sLjMxNTM5MiooMypvKm8tMSkpLG4uYWRkU2NhbGVkVmVjdG9yKHJbN10sZSpvKjEuMDkyNTQ4KSxuLmFkZFNjYWxlZFZlY3RvcihyWzhdLC41NDYyNzQqKGUqZS1hKmEpKSxufWdldElycmFkaWFuY2VBdCh0LG4pe2NvbnN0IGU9dC54LGE9dC55LG89dC56LHI9dGhpcy5jb2VmZmljaWVudHM7cmV0dXJuIG4uY29weShyWzBdKS5tdWx0aXBseVNjYWxhciguODg2MjI3KSxuLmFkZFNjYWxlZFZlY3RvcihyWzFdLDEuMDIzMzI4KmEpLG4uYWRkU2NhbGVkVmVjdG9yKHJbMl0sMS4wMjMzMjgqbyksbi5hZGRTY2FsZWRWZWN0b3IoclszXSwxLjAyMzMyOCplKSxuLmFkZFNjYWxlZFZlY3RvcihyWzRdLC44NTgwODYqZSphKSxuLmFkZFNjYWxlZFZlY3RvcihyWzVdLC44NTgwODYqYSpvKSxuLmFkZFNjYWxlZFZlY3RvcihyWzZdLC43NDMxMjUqbypvLS4yNDc3MDgpLG4uYWRkU2NhbGVkVmVjdG9yKHJbN10sLjg1ODA4NiplKm8pLG4uYWRkU2NhbGVkVmVjdG9yKHJbOF0sLjQyOTA0MyooZSplLWEqYSkpLG59YWRkKHQpe2ZvcihsZXQgbj0wO248OTtuKyspdGhpcy5jb2VmZmljaWVudHNbbl0uYWRkKHQuY29lZmZpY2llbnRzW25dKTtyZXR1cm4gdGhpc31hZGRTY2FsZWRTSCh0LG4pe2ZvcihsZXQgZT0wO2U8OTtlKyspdGhpcy5jb2VmZmljaWVudHNbZV0uYWRkU2NhbGVkVmVjdG9yKHQuY29lZmZpY2llbnRzW2VdLG4pO3JldHVybiB0aGlzfXNjYWxlKHQpe2ZvcihsZXQgbj0wO248OTtuKyspdGhpcy5jb2VmZmljaWVudHNbbl0ubXVsdGlwbHlTY2FsYXIodCk7cmV0dXJuIHRoaXN9bGVycCh0LG4pe2ZvcihsZXQgZT0wO2U8OTtlKyspdGhpcy5jb2VmZmljaWVudHNbZV0ubGVycCh0LmNvZWZmaWNpZW50c1tlXSxuKTtyZXR1cm4gdGhpc31lcXVhbHModCl7Zm9yKGxldCBuPTA7bjw5O24rKylpZighdGhpcy5jb2VmZmljaWVudHNbbl0uZXF1YWxzKHQuY29lZmZpY2llbnRzW25dKSlyZXR1cm4hMTtyZXR1cm4hMH1jb3B5KHQpe3JldHVybiB0aGlzLnNldCh0LmNvZWZmaWNpZW50cyl9Y2xvbmUoKXtyZXR1cm4obmV3IHRoaXMuY29uc3RydWN0b3IpLmNvcHkodGhpcyl9ZnJvbUFycmF5KHQsbj0wKXtjb25zdCBlPXRoaXMuY29lZmZpY2llbnRzO2ZvcihsZXQgYT0wO2E8OTthKyspZVthXS5mcm9tQXJyYXkodCxuKzMqYSk7cmV0dXJuIHRoaXN9dG9BcnJheSh0PVtdLG49MCl7Y29uc3QgZT10aGlzLmNvZWZmaWNpZW50cztmb3IobGV0IGE9MDthPDk7YSsrKWVbYV0udG9BcnJheSh0LG4rMyphKTtyZXR1cm4gdH1zdGF0aWMgZ2V0QmFzaXNBdCh0LG4pe2NvbnN0IGU9dC54LGE9dC55LG89dC56O25bMF09LjI4MjA5NSxuWzFdPS40ODg2MDMqYSxuWzJdPS40ODg2MDMqbyxuWzNdPS40ODg2MDMqZSxuWzRdPTEuMDkyNTQ4KmUqYSxuWzVdPTEuMDkyNTQ4KmEqbyxuWzZdPS4zMTUzOTIqKDMqbypvLTEpLG5bN109MS4wOTI1NDgqZSpvLG5bOF09LjU0NjI3NCooZSplLWEqYSl9fWZ1bmN0aW9uIFdjdCh0LG4pe3pjdC5jYWxsKHRoaXMsdm9pZCAwLG4pLHRoaXMudHlwZT0iTGlnaHRQcm9iZSIsdGhpcy5zaD12b2lkIDAhPT10P3Q6bmV3IFVjdH1mdW5jdGlvbiBHY3QodCl7JGl0LmNhbGwodGhpcyx0KSx0aGlzLnRleHR1cmVzPXt9fWZ1bmN0aW9uIFljdCgpe1hudC5jYWxsKHRoaXMpLHRoaXMudHlwZT0iSW5zdGFuY2VkQnVmZmVyR2VvbWV0cnkiLHRoaXMuaW5zdGFuY2VDb3VudD0xLzB9ZnVuY3Rpb24gcWN0KHQsbixlLGEpeyJudW1iZXIiPT10eXBlb2YgZSYmKGE9ZSxlPSExLGNvbnNvbGUuZXJyb3IoIlRIUkVFLkluc3RhbmNlZEJ1ZmZlckF0dHJpYnV0ZTogVGhlIGNvbnN0cnVjdG9yIG5vdyBleHBlY3RzIG5vcm1hbGl6ZWQgYXMgdGhlIHRoaXJkIGFyZ3VtZW50LiIpKSxTbnQuY2FsbCh0aGlzLHQsbixlKSx0aGlzLm1lc2hQZXJBdHRyaWJ1dGU9YXx8MX1mdW5jdGlvbiBaY3QodCl7JGl0LmNhbGwodGhpcyx0KX1mdW5jdGlvbiBYY3QodCl7InVuZGVmaW5lZCI9PXR5cGVvZiBjcmVhdGVJbWFnZUJpdG1hcCYmY29uc29sZS53YXJuKCJUSFJFRS5JbWFnZUJpdG1hcExvYWRlcjogY3JlYXRlSW1hZ2VCaXRtYXAoKSBub3Qgc3VwcG9ydGVkLiIpLCJ1bmRlZmluZWQiPT10eXBlb2YgZmV0Y2gmJmNvbnNvbGUud2FybigiVEhSRUUuSW1hZ2VCaXRtYXBMb2FkZXI6IGZldGNoKCkgbm90IHN1cHBvcnRlZC4iKSwkaXQuY2FsbCh0aGlzLHQpLHRoaXMub3B0aW9ucz17cHJlbXVsdGlwbHlBbHBoYToibm9uZSJ9fWZ1bmN0aW9uIEpjdCgpe3RoaXMudHlwZT0iU2hhcGVQYXRoIix0aGlzLmNvbG9yPW5ldyBPbnQsdGhpcy5zdWJQYXRocz1bXSx0aGlzLmN1cnJlbnRQYXRoPW51bGx9V2N0LnByb3RvdHlwZT1PYmplY3QuYXNzaWduKE9iamVjdC5jcmVhdGUoemN0LnByb3RvdHlwZSkse2NvbnN0cnVjdG9yOldjdCxpc0xpZ2h0UHJvYmU6ITAsY29weTpmdW5jdGlvbih0KXtyZXR1cm4gemN0LnByb3RvdHlwZS5jb3B5LmNhbGwodGhpcyx0KSx0aGlzLnNoLmNvcHkodC5zaCksdGhpc30sZnJvbUpTT046ZnVuY3Rpb24odCl7cmV0dXJuIHRoaXMuaW50ZW5zaXR5PXQuaW50ZW5zaXR5LHRoaXMuc2guZnJvbUFycmF5KHQuc2gpLHRoaXN9LHRvSlNPTjpmdW5jdGlvbih0KXtjb25zdCBuPXpjdC5wcm90b3R5cGUudG9KU09OLmNhbGwodGhpcyx0KTtyZXR1cm4gbi5vYmplY3Quc2g9dGhpcy5zaC50b0FycmF5KCksbn19KSxHY3QucHJvdG90eXBlPU9iamVjdC5hc3NpZ24oT2JqZWN0LmNyZWF0ZSgkaXQucHJvdG90eXBlKSx7Y29uc3RydWN0b3I6R2N0LGxvYWQ6ZnVuY3Rpb24odCxuLGUsYSl7Y29uc3Qgbz10aGlzLHI9bmV3IG5jdChvLm1hbmFnZXIpO3Iuc2V0UGF0aChvLnBhdGgpLHIuc2V0UmVxdWVzdEhlYWRlcihvLnJlcXVlc3RIZWFkZXIpLHIuc2V0V2l0aENyZWRlbnRpYWxzKG8ud2l0aENyZWRlbnRpYWxzKSxyLmxvYWQodCwoZnVuY3Rpb24oZSl7dHJ5e24oby5wYXJzZShKU09OLnBhcnNlKGUpKSl9Y2F0Y2gobil7YT9hKG4pOmNvbnNvbGUuZXJyb3Iobiksby5tYW5hZ2VyLml0ZW1FcnJvcih0KX19KSxlLGEpfSxwYXJzZTpmdW5jdGlvbih0KXtjb25zdCBuPXRoaXMudGV4dHVyZXM7ZnVuY3Rpb24gZSh0KXtyZXR1cm4gdm9pZCAwPT09blt0XSYmY29uc29sZS53YXJuKCJUSFJFRS5NYXRlcmlhbExvYWRlcjogVW5kZWZpbmVkIHRleHR1cmUiLHQpLG5bdF19Y29uc3QgYT1uZXcgRGl0W3QudHlwZV07aWYodm9pZCAwIT09dC51dWlkJiYoYS51dWlkPXQudXVpZCksdm9pZCAwIT09dC5uYW1lJiYoYS5uYW1lPXQubmFtZSksdm9pZCAwIT09dC5jb2xvciYmdm9pZCAwIT09YS5jb2xvciYmYS5jb2xvci5zZXRIZXgodC5jb2xvciksdm9pZCAwIT09dC5yb3VnaG5lc3MmJihhLnJvdWdobmVzcz10LnJvdWdobmVzcyksdm9pZCAwIT09dC5tZXRhbG5lc3MmJihhLm1ldGFsbmVzcz10Lm1ldGFsbmVzcyksdm9pZCAwIT09dC5zaGVlbiYmKGEuc2hlZW49KG5ldyBPbnQpLnNldEhleCh0LnNoZWVuKSksdm9pZCAwIT09dC5lbWlzc2l2ZSYmdm9pZCAwIT09YS5lbWlzc2l2ZSYmYS5lbWlzc2l2ZS5zZXRIZXgodC5lbWlzc2l2ZSksdm9pZCAwIT09dC5zcGVjdWxhciYmdm9pZCAwIT09YS5zcGVjdWxhciYmYS5zcGVjdWxhci5zZXRIZXgodC5zcGVjdWxhciksdm9pZCAwIT09dC5zaGluaW5lc3MmJihhLnNoaW5pbmVzcz10LnNoaW5pbmVzcyksdm9pZCAwIT09dC5jbGVhcmNvYXQmJihhLmNsZWFyY29hdD10LmNsZWFyY29hdCksdm9pZCAwIT09dC5jbGVhcmNvYXRSb3VnaG5lc3MmJihhLmNsZWFyY29hdFJvdWdobmVzcz10LmNsZWFyY29hdFJvdWdobmVzcyksdm9pZCAwIT09dC5mb2cmJihhLmZvZz10LmZvZyksdm9pZCAwIT09dC5mbGF0U2hhZGluZyYmKGEuZmxhdFNoYWRpbmc9dC5mbGF0U2hhZGluZyksdm9pZCAwIT09dC5ibGVuZGluZyYmKGEuYmxlbmRpbmc9dC5ibGVuZGluZyksdm9pZCAwIT09dC5jb21iaW5lJiYoYS5jb21iaW5lPXQuY29tYmluZSksdm9pZCAwIT09dC5zaWRlJiYoYS5zaWRlPXQuc2lkZSksdm9pZCAwIT09dC5vcGFjaXR5JiYoYS5vcGFjaXR5PXQub3BhY2l0eSksdm9pZCAwIT09dC50cmFuc3BhcmVudCYmKGEudHJhbnNwYXJlbnQ9dC50cmFuc3BhcmVudCksdm9pZCAwIT09dC5hbHBoYVRlc3QmJihhLmFscGhhVGVzdD10LmFscGhhVGVzdCksdm9pZCAwIT09dC5kZXB0aFRlc3QmJihhLmRlcHRoVGVzdD10LmRlcHRoVGVzdCksdm9pZCAwIT09dC5kZXB0aFdyaXRlJiYoYS5kZXB0aFdyaXRlPXQuZGVwdGhXcml0ZSksdm9pZCAwIT09dC5jb2xvcldyaXRlJiYoYS5jb2xvcldyaXRlPXQuY29sb3JXcml0ZSksdm9pZCAwIT09dC5zdGVuY2lsV3JpdGUmJihhLnN0ZW5jaWxXcml0ZT10LnN0ZW5jaWxXcml0ZSksdm9pZCAwIT09dC5zdGVuY2lsV3JpdGVNYXNrJiYoYS5zdGVuY2lsV3JpdGVNYXNrPXQuc3RlbmNpbFdyaXRlTWFzayksdm9pZCAwIT09dC5zdGVuY2lsRnVuYyYmKGEuc3RlbmNpbEZ1bmM9dC5zdGVuY2lsRnVuYyksdm9pZCAwIT09dC5zdGVuY2lsUmVmJiYoYS5zdGVuY2lsUmVmPXQuc3RlbmNpbFJlZiksdm9pZCAwIT09dC5zdGVuY2lsRnVuY01hc2smJihhLnN0ZW5jaWxGdW5jTWFzaz10LnN0ZW5jaWxGdW5jTWFzayksdm9pZCAwIT09dC5zdGVuY2lsRmFpbCYmKGEuc3RlbmNpbEZhaWw9dC5zdGVuY2lsRmFpbCksdm9pZCAwIT09dC5zdGVuY2lsWkZhaWwmJihhLnN0ZW5jaWxaRmFpbD10LnN0ZW5jaWxaRmFpbCksdm9pZCAwIT09dC5zdGVuY2lsWlBhc3MmJihhLnN0ZW5jaWxaUGFzcz10LnN0ZW5jaWxaUGFzcyksdm9pZCAwIT09dC53aXJlZnJhbWUmJihhLndpcmVmcmFtZT10LndpcmVmcmFtZSksdm9pZCAwIT09dC53aXJlZnJhbWVMaW5ld2lkdGgmJihhLndpcmVmcmFtZUxpbmV3aWR0aD10LndpcmVmcmFtZUxpbmV3aWR0aCksdm9pZCAwIT09dC53aXJlZnJhbWVMaW5lY2FwJiYoYS53aXJlZnJhbWVMaW5lY2FwPXQud2lyZWZyYW1lTGluZWNhcCksdm9pZCAwIT09dC53aXJlZnJhbWVMaW5lam9pbiYmKGEud2lyZWZyYW1lTGluZWpvaW49dC53aXJlZnJhbWVMaW5lam9pbiksdm9pZCAwIT09dC5yb3RhdGlvbiYmKGEucm90YXRpb249dC5yb3RhdGlvbiksMSE9PXQubGluZXdpZHRoJiYoYS5saW5ld2lkdGg9dC5saW5ld2lkdGgpLHZvaWQgMCE9PXQuZGFzaFNpemUmJihhLmRhc2hTaXplPXQuZGFzaFNpemUpLHZvaWQgMCE9PXQuZ2FwU2l6ZSYmKGEuZ2FwU2l6ZT10LmdhcFNpemUpLHZvaWQgMCE9PXQuc2NhbGUmJihhLnNjYWxlPXQuc2NhbGUpLHZvaWQgMCE9PXQucG9seWdvbk9mZnNldCYmKGEucG9seWdvbk9mZnNldD10LnBvbHlnb25PZmZzZXQpLHZvaWQgMCE9PXQucG9seWdvbk9mZnNldEZhY3RvciYmKGEucG9seWdvbk9mZnNldEZhY3Rvcj10LnBvbHlnb25PZmZzZXRGYWN0b3IpLHZvaWQgMCE9PXQucG9seWdvbk9mZnNldFVuaXRzJiYoYS5wb2x5Z29uT2Zmc2V0VW5pdHM9dC5wb2x5Z29uT2Zmc2V0VW5pdHMpLHZvaWQgMCE9PXQuc2tpbm5pbmcmJihhLnNraW5uaW5nPXQuc2tpbm5pbmcpLHZvaWQgMCE9PXQubW9ycGhUYXJnZXRzJiYoYS5tb3JwaFRhcmdldHM9dC5tb3JwaFRhcmdldHMpLHZvaWQgMCE9PXQubW9ycGhOb3JtYWxzJiYoYS5tb3JwaE5vcm1hbHM9dC5tb3JwaE5vcm1hbHMpLHZvaWQgMCE9PXQuZGl0aGVyaW5nJiYoYS5kaXRoZXJpbmc9dC5kaXRoZXJpbmcpLHZvaWQgMCE9PXQudmVydGV4VGFuZ2VudHMmJihhLnZlcnRleFRhbmdlbnRzPXQudmVydGV4VGFuZ2VudHMpLHZvaWQgMCE9PXQudmlzaWJsZSYmKGEudmlzaWJsZT10LnZpc2libGUpLHZvaWQgMCE9PXQudG9uZU1hcHBlZCYmKGEudG9uZU1hcHBlZD10LnRvbmVNYXBwZWQpLHZvaWQgMCE9PXQudXNlckRhdGEmJihhLnVzZXJEYXRhPXQudXNlckRhdGEpLHZvaWQgMCE9PXQudmVydGV4Q29sb3JzJiYoYS52ZXJ0ZXhDb2xvcnM9Im51bWJlciI9PXR5cGVvZiB0LnZlcnRleENvbG9ycz90LnZlcnRleENvbG9ycz4wOnQudmVydGV4Q29sb3JzKSx2b2lkIDAhPT10LnVuaWZvcm1zKWZvcihjb25zdCBuIGluIHQudW5pZm9ybXMpe2NvbnN0IG89dC51bmlmb3Jtc1tuXTtzd2l0Y2goYS51bmlmb3Jtc1tuXT17fSxvLnR5cGUpe2Nhc2UidCI6YS51bmlmb3Jtc1tuXS52YWx1ZT1lKG8udmFsdWUpO2JyZWFrO2Nhc2UiYyI6YS51bmlmb3Jtc1tuXS52YWx1ZT0obmV3IE9udCkuc2V0SGV4KG8udmFsdWUpO2JyZWFrO2Nhc2UidjIiOmEudW5pZm9ybXNbbl0udmFsdWU9KG5ldyBXOSkuZnJvbUFycmF5KG8udmFsdWUpO2JyZWFrO2Nhc2UidjMiOmEudW5pZm9ybXNbbl0udmFsdWU9KG5ldyB0dHQpLmZyb21BcnJheShvLnZhbHVlKTticmVhaztjYXNlInY0IjphLnVuaWZvcm1zW25dLnZhbHVlPShuZXcgUTkpLmZyb21BcnJheShvLnZhbHVlKTticmVhaztjYXNlIm0zIjphLnVuaWZvcm1zW25dLnZhbHVlPShuZXcgRzkpLmZyb21BcnJheShvLnZhbHVlKTticmVhaztjYXNlIm00IjphLnVuaWZvcm1zW25dLnZhbHVlPShuZXcgU3R0KS5mcm9tQXJyYXkoby52YWx1ZSk7YnJlYWs7ZGVmYXVsdDphLnVuaWZvcm1zW25dLnZhbHVlPW8udmFsdWV9fWlmKHZvaWQgMCE9PXQuZGVmaW5lcyYmKGEuZGVmaW5lcz10LmRlZmluZXMpLHZvaWQgMCE9PXQudmVydGV4U2hhZGVyJiYoYS52ZXJ0ZXhTaGFkZXI9dC52ZXJ0ZXhTaGFkZXIpLHZvaWQgMCE9PXQuZnJhZ21lbnRTaGFkZXImJihhLmZyYWdtZW50U2hhZGVyPXQuZnJhZ21lbnRTaGFkZXIpLHZvaWQgMCE9PXQuZXh0ZW5zaW9ucylmb3IoY29uc3QgbiBpbiB0LmV4dGVuc2lvbnMpYS5leHRlbnNpb25zW25dPXQuZXh0ZW5zaW9uc1tuXTtpZih2b2lkIDAhPT10LnNoYWRpbmcmJihhLmZsYXRTaGFkaW5nPTE9PT10LnNoYWRpbmcpLHZvaWQgMCE9PXQuc2l6ZSYmKGEuc2l6ZT10LnNpemUpLHZvaWQgMCE9PXQuc2l6ZUF0dGVudWF0aW9uJiYoYS5zaXplQXR0ZW51YXRpb249dC5zaXplQXR0ZW51YXRpb24pLHZvaWQgMCE9PXQubWFwJiYoYS5tYXA9ZSh0Lm1hcCkpLHZvaWQgMCE9PXQubWF0Y2FwJiYoYS5tYXRjYXA9ZSh0Lm1hdGNhcCkpLHZvaWQgMCE9PXQuYWxwaGFNYXAmJihhLmFscGhhTWFwPWUodC5hbHBoYU1hcCkpLHZvaWQgMCE9PXQuYnVtcE1hcCYmKGEuYnVtcE1hcD1lKHQuYnVtcE1hcCkpLHZvaWQgMCE9PXQuYnVtcFNjYWxlJiYoYS5idW1wU2NhbGU9dC5idW1wU2NhbGUpLHZvaWQgMCE9PXQubm9ybWFsTWFwJiYoYS5ub3JtYWxNYXA9ZSh0Lm5vcm1hbE1hcCkpLHZvaWQgMCE9PXQubm9ybWFsTWFwVHlwZSYmKGEubm9ybWFsTWFwVHlwZT10Lm5vcm1hbE1hcFR5cGUpLHZvaWQgMCE9PXQubm9ybWFsU2NhbGUpe2xldCBuPXQubm9ybWFsU2NhbGU7ITE9PT1BcnJheS5pc0FycmF5KG4pJiYobj1bbixuXSksYS5ub3JtYWxTY2FsZT0obmV3IFc5KS5mcm9tQXJyYXkobil9cmV0dXJuIHZvaWQgMCE9PXQuZGlzcGxhY2VtZW50TWFwJiYoYS5kaXNwbGFjZW1lbnRNYXA9ZSh0LmRpc3BsYWNlbWVudE1hcCkpLHZvaWQgMCE9PXQuZGlzcGxhY2VtZW50U2NhbGUmJihhLmRpc3BsYWNlbWVudFNjYWxlPXQuZGlzcGxhY2VtZW50U2NhbGUpLHZvaWQgMCE9PXQuZGlzcGxhY2VtZW50QmlhcyYmKGEuZGlzcGxhY2VtZW50Qmlhcz10LmRpc3BsYWNlbWVudEJpYXMpLHZvaWQgMCE9PXQucm91Z2huZXNzTWFwJiYoYS5yb3VnaG5lc3NNYXA9ZSh0LnJvdWdobmVzc01hcCkpLHZvaWQgMCE9PXQubWV0YWxuZXNzTWFwJiYoYS5tZXRhbG5lc3NNYXA9ZSh0Lm1ldGFsbmVzc01hcCkpLHZvaWQgMCE9PXQuZW1pc3NpdmVNYXAmJihhLmVtaXNzaXZlTWFwPWUodC5lbWlzc2l2ZU1hcCkpLHZvaWQgMCE9PXQuZW1pc3NpdmVJbnRlbnNpdHkmJihhLmVtaXNzaXZlSW50ZW5zaXR5PXQuZW1pc3NpdmVJbnRlbnNpdHkpLHZvaWQgMCE9PXQuc3BlY3VsYXJNYXAmJihhLnNwZWN1bGFyTWFwPWUodC5zcGVjdWxhck1hcCkpLHZvaWQgMCE9PXQuZW52TWFwJiYoYS5lbnZNYXA9ZSh0LmVudk1hcCkpLHZvaWQgMCE9PXQuZW52TWFwSW50ZW5zaXR5JiYoYS5lbnZNYXBJbnRlbnNpdHk9dC5lbnZNYXBJbnRlbnNpdHkpLHZvaWQgMCE9PXQucmVmbGVjdGl2aXR5JiYoYS5yZWZsZWN0aXZpdHk9dC5yZWZsZWN0aXZpdHkpLHZvaWQgMCE9PXQucmVmcmFjdGlvblJhdGlvJiYoYS5yZWZyYWN0aW9uUmF0aW89dC5yZWZyYWN0aW9uUmF0aW8pLHZvaWQgMCE9PXQubGlnaHRNYXAmJihhLmxpZ2h0TWFwPWUodC5saWdodE1hcCkpLHZvaWQgMCE9PXQubGlnaHRNYXBJbnRlbnNpdHkmJihhLmxpZ2h0TWFwSW50ZW5zaXR5PXQubGlnaHRNYXBJbnRlbnNpdHkpLHZvaWQgMCE9PXQuYW9NYXAmJihhLmFvTWFwPWUodC5hb01hcCkpLHZvaWQgMCE9PXQuYW9NYXBJbnRlbnNpdHkmJihhLmFvTWFwSW50ZW5zaXR5PXQuYW9NYXBJbnRlbnNpdHkpLHZvaWQgMCE9PXQuZ3JhZGllbnRNYXAmJihhLmdyYWRpZW50TWFwPWUodC5ncmFkaWVudE1hcCkpLHZvaWQgMCE9PXQuY2xlYXJjb2F0TWFwJiYoYS5jbGVhcmNvYXRNYXA9ZSh0LmNsZWFyY29hdE1hcCkpLHZvaWQgMCE9PXQuY2xlYXJjb2F0Um91Z2huZXNzTWFwJiYoYS5jbGVhcmNvYXRSb3VnaG5lc3NNYXA9ZSh0LmNsZWFyY29hdFJvdWdobmVzc01hcCkpLHZvaWQgMCE9PXQuY2xlYXJjb2F0Tm9ybWFsTWFwJiYoYS5jbGVhcmNvYXROb3JtYWxNYXA9ZSh0LmNsZWFyY29hdE5vcm1hbE1hcCkpLHZvaWQgMCE9PXQuY2xlYXJjb2F0Tm9ybWFsU2NhbGUmJihhLmNsZWFyY29hdE5vcm1hbFNjYWxlPShuZXcgVzkpLmZyb21BcnJheSh0LmNsZWFyY29hdE5vcm1hbFNjYWxlKSksdm9pZCAwIT09dC50cmFuc21pc3Npb24mJihhLnRyYW5zbWlzc2lvbj10LnRyYW5zbWlzc2lvbiksdm9pZCAwIT09dC50cmFuc21pc3Npb25NYXAmJihhLnRyYW5zbWlzc2lvbk1hcD1lKHQudHJhbnNtaXNzaW9uTWFwKSksYX0sc2V0VGV4dHVyZXM6ZnVuY3Rpb24odCl7cmV0dXJuIHRoaXMudGV4dHVyZXM9dCx0aGlzfX0pLFljdC5wcm90b3R5cGU9T2JqZWN0LmFzc2lnbihPYmplY3QuY3JlYXRlKFhudC5wcm90b3R5cGUpLHtjb25zdHJ1Y3RvcjpZY3QsaXNJbnN0YW5jZWRCdWZmZXJHZW9tZXRyeTohMCxjb3B5OmZ1bmN0aW9uKHQpe3JldHVybiBYbnQucHJvdG90eXBlLmNvcHkuY2FsbCh0aGlzLHQpLHRoaXMuaW5zdGFuY2VDb3VudD10Lmluc3RhbmNlQ291bnQsdGhpc30sY2xvbmU6ZnVuY3Rpb24oKXtyZXR1cm4obmV3IHRoaXMuY29uc3RydWN0b3IpLmNvcHkodGhpcyl9LHRvSlNPTjpmdW5jdGlvbigpe2NvbnN0IHQ9WG50LnByb3RvdHlwZS50b0pTT04uY2FsbCh0aGlzKTtyZXR1cm4gdC5pbnN0YW5jZUNvdW50PXRoaXMuaW5zdGFuY2VDb3VudCx0LmlzSW5zdGFuY2VkQnVmZmVyR2VvbWV0cnk9ITAsdH19KSxxY3QucHJvdG90eXBlPU9iamVjdC5hc3NpZ24oT2JqZWN0LmNyZWF0ZShTbnQucHJvdG90eXBlKSx7Y29uc3RydWN0b3I6cWN0LGlzSW5zdGFuY2VkQnVmZmVyQXR0cmlidXRlOiEwLGNvcHk6ZnVuY3Rpb24odCl7cmV0dXJuIFNudC5wcm90b3R5cGUuY29weS5jYWxsKHRoaXMsdCksdGhpcy5tZXNoUGVyQXR0cmlidXRlPXQubWVzaFBlckF0dHJpYnV0ZSx0aGlzfSx0b0pTT046ZnVuY3Rpb24oKXtjb25zdCB0PVNudC5wcm90b3R5cGUudG9KU09OLmNhbGwodGhpcyk7cmV0dXJuIHQubWVzaFBlckF0dHJpYnV0ZT10aGlzLm1lc2hQZXJBdHRyaWJ1dGUsdC5pc0luc3RhbmNlZEJ1ZmZlckF0dHJpYnV0ZT0hMCx0fX0pLFpjdC5wcm90b3R5cGU9T2JqZWN0LmFzc2lnbihPYmplY3QuY3JlYXRlKCRpdC5wcm90b3R5cGUpLHtjb25zdHJ1Y3RvcjpaY3QsbG9hZDpmdW5jdGlvbih0LG4sZSxhKXtjb25zdCBvPXRoaXMscj1uZXcgbmN0KG8ubWFuYWdlcik7ci5zZXRQYXRoKG8ucGF0aCksci5zZXRSZXF1ZXN0SGVhZGVyKG8ucmVxdWVzdEhlYWRlciksci5zZXRXaXRoQ3JlZGVudGlhbHMoby53aXRoQ3JlZGVudGlhbHMpLHIubG9hZCh0LChmdW5jdGlvbihlKXt0cnl7bihvLnBhcnNlKEpTT04ucGFyc2UoZSkpKX1jYXRjaChuKXthP2Eobik6Y29uc29sZS5lcnJvcihuKSxvLm1hbmFnZXIuaXRlbUVycm9yKHQpfX0pLGUsYSl9LHBhcnNlOmZ1bmN0aW9uKHQpe2NvbnN0IG49e30sZT17fTtmdW5jdGlvbiBhKHQsYSl7aWYodm9pZCAwIT09blthXSlyZXR1cm4gblthXTtjb25zdCBvPXQuaW50ZXJsZWF2ZWRCdWZmZXJzW2FdLHI9KGZ1bmN0aW9uIGkodCxuKXtpZih2b2lkIDAhPT1lW25dKXJldHVybiBlW25dO2NvbnN0IGE9bmV3IFVpbnQzMkFycmF5KHQuYXJyYXlCdWZmZXJzW25dKS5idWZmZXI7cmV0dXJuIGVbbl09YSxhfSkodCxvLmJ1ZmZlciksYz1uZXcgVm90KFZudChvLnR5cGUsciksby5zdHJpZGUpO3JldHVybiBjLnV1aWQ9by51dWlkLG5bYV09YyxjfWNvbnN0IG89dC5pc0luc3RhbmNlZEJ1ZmZlckdlb21ldHJ5P25ldyBZY3Q6bmV3IFhudCxyPXQuZGF0YS5pbmRleDtpZih2b2lkIDAhPT1yKXtjb25zdCB0PVZudChyLnR5cGUsci5hcnJheSk7by5zZXRJbmRleChuZXcgU250KHQsMSkpfWNvbnN0IGk9dC5kYXRhLmF0dHJpYnV0ZXM7Zm9yKGNvbnN0IG4gaW4gaSl7Y29uc3QgZT1pW25dO2xldCByO2lmKGUuaXNJbnRlcmxlYXZlZEJ1ZmZlckF0dHJpYnV0ZSlyPW5ldyBVb3QoYSh0LmRhdGEsZS5kYXRhKSxlLml0ZW1TaXplLGUub2Zmc2V0LGUubm9ybWFsaXplZCk7ZWxzZXtjb25zdCB0PVZudChlLnR5cGUsZS5hcnJheSk7cj1uZXcoZS5pc0luc3RhbmNlZEJ1ZmZlckF0dHJpYnV0ZT9xY3Q6U250KSh0LGUuaXRlbVNpemUsZS5ub3JtYWxpemVkKX12b2lkIDAhPT1lLm5hbWUmJihyLm5hbWU9ZS5uYW1lKSxvLnNldEF0dHJpYnV0ZShuLHIpfWNvbnN0IGM9dC5kYXRhLm1vcnBoQXR0cmlidXRlcztpZihjKWZvcihjb25zdCBuIGluIGMpe2NvbnN0IGU9Y1tuXSxyPVtdO2ZvcihsZXQgbj0wLG89ZS5sZW5ndGg7bjxvO24rKyl7Y29uc3Qgbz1lW25dO2xldCBpO2k9by5pc0ludGVybGVhdmVkQnVmZmVyQXR0cmlidXRlP25ldyBVb3QoYSh0LmRhdGEsby5kYXRhKSxvLml0ZW1TaXplLG8ub2Zmc2V0LG8ubm9ybWFsaXplZCk6bmV3IFNudChWbnQoby50eXBlLG8uYXJyYXkpLG8uaXRlbVNpemUsby5ub3JtYWxpemVkKSx2b2lkIDAhPT1vLm5hbWUmJihpLm5hbWU9by5uYW1lKSxyLnB1c2goaSl9by5tb3JwaEF0dHJpYnV0ZXNbbl09cn10LmRhdGEubW9ycGhUYXJnZXRzUmVsYXRpdmUmJihvLm1vcnBoVGFyZ2V0c1JlbGF0aXZlPSEwKTtjb25zdCBzPXQuZGF0YS5ncm91cHN8fHQuZGF0YS5kcmF3Y2FsbHN8fHQuZGF0YS5vZmZzZXRzO2lmKHZvaWQgMCE9PXMpZm9yKGxldCB0PTAsbj1zLmxlbmd0aDt0IT09bjsrK3Qpe2NvbnN0IG49c1t0XTtvLmFkZEdyb3VwKG4uc3RhcnQsbi5jb3VudCxuLm1hdGVyaWFsSW5kZXgpfWNvbnN0IGw9dC5kYXRhLmJvdW5kaW5nU3BoZXJlO2lmKHZvaWQgMCE9PWwpe2NvbnN0IHQ9bmV3IHR0dDt2b2lkIDAhPT1sLmNlbnRlciYmdC5mcm9tQXJyYXkobC5jZW50ZXIpLG8uYm91bmRpbmdTcGhlcmU9bmV3IEN0dCh0LGwucmFkaXVzKX1yZXR1cm4gdC5uYW1lJiYoby5uYW1lPXQubmFtZSksdC51c2VyRGF0YSYmKG8udXNlckRhdGE9dC51c2VyRGF0YSksb319KSxYY3QucHJvdG90eXBlPU9iamVjdC5hc3NpZ24oT2JqZWN0LmNyZWF0ZSgkaXQucHJvdG90eXBlKSx7Y29uc3RydWN0b3I6WGN0LGlzSW1hZ2VCaXRtYXBMb2FkZXI6ITAsc2V0T3B0aW9uczpmdW5jdGlvbiB0KG4pe3JldHVybiB0aGlzLm9wdGlvbnM9bix0aGlzfSxsb2FkOmZ1bmN0aW9uKHQsbixlLGEpe3ZvaWQgMD09PXQmJih0PSIiKSx2b2lkIDAhPT10aGlzLnBhdGgmJih0PXRoaXMucGF0aCt0KSx0PXRoaXMubWFuYWdlci5yZXNvbHZlVVJMKHQpO2NvbnN0IG89dGhpcyxyPUppdC5nZXQodCk7aWYodm9pZCAwIT09cilyZXR1cm4gby5tYW5hZ2VyLml0ZW1TdGFydCh0KSxzZXRUaW1lb3V0KChmdW5jdGlvbigpe24mJm4ociksby5tYW5hZ2VyLml0ZW1FbmQodCl9KSwwKSxyO2NvbnN0IGk9e307aS5jcmVkZW50aWFscz0iYW5vbnltb3VzIj09PXRoaXMuY3Jvc3NPcmlnaW4/InNhbWUtb3JpZ2luIjoiaW5jbHVkZSIsZmV0Y2godCxpKS50aGVuKChmdW5jdGlvbih0KXtyZXR1cm4gdC5ibG9iKCl9KSkudGhlbigoZnVuY3Rpb24odCl7cmV0dXJuIGNyZWF0ZUltYWdlQml0bWFwKHQsby5vcHRpb25zKX0pKS50aGVuKChmdW5jdGlvbihlKXtKaXQuYWRkKHQsZSksbiYmbihlKSxvLm1hbmFnZXIuaXRlbUVuZCh0KX0pKS5jYXRjaCgoZnVuY3Rpb24obil7YSYmYShuKSxvLm1hbmFnZXIuaXRlbUVycm9yKHQpLG8ubWFuYWdlci5pdGVtRW5kKHQpfSkpLG8ubWFuYWdlci5pdGVtU3RhcnQodCl9fSksT2JqZWN0LmFzc2lnbihKY3QucHJvdG90eXBlLHttb3ZlVG86ZnVuY3Rpb24odCxuKXtyZXR1cm4gdGhpcy5jdXJyZW50UGF0aD1uZXcgRWN0LHRoaXMuc3ViUGF0aHMucHVzaCh0aGlzLmN1cnJlbnRQYXRoKSx0aGlzLmN1cnJlbnRQYXRoLm1vdmVUbyh0LG4pLHRoaXN9LGxpbmVUbzpmdW5jdGlvbih0LG4pe3JldHVybiB0aGlzLmN1cnJlbnRQYXRoLmxpbmVUbyh0LG4pLHRoaXN9LHF1YWRyYXRpY0N1cnZlVG86ZnVuY3Rpb24odCxuLGUsYSl7cmV0dXJuIHRoaXMuY3VycmVudFBhdGgucXVhZHJhdGljQ3VydmVUbyh0LG4sZSxhKSx0aGlzfSxiZXppZXJDdXJ2ZVRvOmZ1bmN0aW9uKHQsbixlLGEsbyxyKXtyZXR1cm4gdGhpcy5jdXJyZW50UGF0aC5iZXppZXJDdXJ2ZVRvKHQsbixlLGEsbyxyKSx0aGlzfSxzcGxpbmVUaHJ1OmZ1bmN0aW9uKHQpe3JldHVybiB0aGlzLmN1cnJlbnRQYXRoLnNwbGluZVRocnUodCksdGhpc30sdG9TaGFwZXM6ZnVuY3Rpb24odCxuKXtmdW5jdGlvbiBlKHQpe2NvbnN0IG49W107Zm9yKGxldCBlPTAsYT10Lmxlbmd0aDtlPGE7ZSsrKXtjb25zdCBhPXRbZV0sbz1uZXcgQWN0O28uY3VydmVzPWEuY3VydmVzLG4ucHVzaChvKX1yZXR1cm4gbn1mdW5jdGlvbiBhKHQsbil7Y29uc3QgZT1uLmxlbmd0aDtsZXQgYT0hMTtmb3IobGV0IG89ZS0xLHI9MDtyPGU7bz1yKyspe2xldCBlPW5bb10saT1uW3JdLGM9aS54LWUueCxzPWkueS1lLnk7aWYoTWF0aC5hYnMocyk+TnVtYmVyLkVQU0lMT04pe2lmKHM8MCYmKGU9bltyXSxjPS1jLGk9bltvXSxzPS1zKSx0Lnk8ZS55fHx0Lnk+aS55KWNvbnRpbnVlO2lmKHQueT09PWUueSl7aWYodC54PT09ZS54KXJldHVybiEwfWVsc2V7Y29uc3Qgbj1zKih0LngtZS54KS1jKih0LnktZS55KTtpZigwPT09bilyZXR1cm4hMDtpZihuPDApY29udGludWU7YT0hYX19ZWxzZXtpZih0LnkhPT1lLnkpY29udGludWU7aWYoaS54PD10LngmJnQueDw9ZS54fHxlLng8PXQueCYmdC54PD1pLngpcmV0dXJuITB9fXJldHVybiBhfWNvbnN0IG89aGl0LmlzQ2xvY2tXaXNlLHI9dGhpcy5zdWJQYXRocztpZigwPT09ci5sZW5ndGgpcmV0dXJuW107aWYoITA9PT1uKXJldHVybiBlKHIpO2xldCBpLGMscztjb25zdCBsPVtdO2lmKDE9PT1yLmxlbmd0aClyZXR1cm4gYz1yWzBdLHM9bmV3IEFjdCxzLmN1cnZlcz1jLmN1cnZlcyxsLnB1c2gocyksbDtsZXQgbT0hbyhyWzBdLmdldFBvaW50cygpKTttPXQ/IW06bTtjb25zdCBkPVtdLGc9W107bGV0IHAsYix1PVtdLGY9MDtnW2ZdPXZvaWQgMCx1W2ZdPVtdO2ZvcihsZXQgbj0wLGU9ci5sZW5ndGg7bjxlO24rKyljPXJbbl0scD1jLmdldFBvaW50cygpLGk9byhwKSxpPXQ/IWk6aSxpPyghbSYmZ1tmXSYmZisrLGdbZl09e3M6bmV3IEFjdCxwOnB9LGdbZl0ucy5jdXJ2ZXM9Yy5jdXJ2ZXMsbSYmZisrLHVbZl09W10pOnVbZl0ucHVzaCh7aDpjLHA6cFswXX0pO2lmKCFnWzBdKXJldHVybiBlKHIpO2lmKGcubGVuZ3RoPjEpe2xldCB0PSExO2NvbnN0IG49W107Zm9yKGxldCB0PTAsbj1nLmxlbmd0aDt0PG47dCsrKWRbdF09W107Zm9yKGxldCBlPTAsbz1nLmxlbmd0aDtlPG87ZSsrKXtjb25zdCBvPXVbZV07Zm9yKGxldCByPTA7cjxvLmxlbmd0aDtyKyspe2NvbnN0IGk9b1tyXTtsZXQgYz0hMDtmb3IobGV0IG89MDtvPGcubGVuZ3RoO28rKylhKGkucCxnW29dLnApJiYoZSE9PW8mJm4ucHVzaCh7ZnJvbXM6ZSx0b3M6byxob2xlOnJ9KSxjPyhjPSExLGRbb10ucHVzaChpKSk6dD0hMCk7YyYmZFtlXS5wdXNoKGkpfX1uLmxlbmd0aD4wJiYodHx8KHU9ZCkpfWZvcihsZXQgdD0wLG49Zy5sZW5ndGg7dDxuO3QrKyl7cz1nW3RdLnMsbC5wdXNoKHMpLGI9dVt0XTtmb3IobGV0IHQ9MCxuPWIubGVuZ3RoO3Q8bjt0Kyspcy5ob2xlcy5wdXNoKGJbdF0uaCl9cmV0dXJuIGx9fSk7Y2xhc3MgUWN0e2NvbnN0cnVjdG9yKHQpe09iamVjdC5kZWZpbmVQcm9wZXJ0eSh0aGlzLCJpc0ZvbnQiLHt2YWx1ZTohMH0pLHRoaXMudHlwZT0iRm9udCIsdGhpcy5kYXRhPXR9Z2VuZXJhdGVTaGFwZXModCxuPTEwMCl7Y29uc3QgZT1bXSxhPShmdW5jdGlvbiBvKHQsbixlKXtjb25zdCBhPUFycmF5LmZyb20/QXJyYXkuZnJvbSh0KTpTdHJpbmcodCkuc3BsaXQoIiIpLG89bi9lLnJlc29sdXRpb24scj0oZS5ib3VuZGluZ0JveC55TWF4LWUuYm91bmRpbmdCb3gueU1pbitlLnVuZGVybGluZVRoaWNrbmVzcykqbyxpPVtdO2xldCBjPTAscz0wO2ZvcihsZXQgdD0wO3Q8YS5sZW5ndGg7dCsrKXtjb25zdCBuPWFbdF07aWYoIlxuIj09PW4pYz0wLHMtPXI7ZWxzZXtjb25zdCB0PUtjdChuLG8sYyxzLGUpO2MrPXQub2Zmc2V0WCxpLnB1c2godC5wYXRoKX19cmV0dXJuIGl9KSh0LG4sdGhpcy5kYXRhKTtmb3IobGV0IHQ9MCxuPWEubGVuZ3RoO3Q8bjt0KyspQXJyYXkucHJvdG90eXBlLnB1c2guYXBwbHkoZSxhW3RdLnRvU2hhcGVzKCkpO3JldHVybiBlfX1mdW5jdGlvbiBLY3QodCxuLGUsYSxvKXtjb25zdCByPW8uZ2x5cGhzW3RdfHxvLmdseXBoc1siPyJdO2lmKCFyKXJldHVybiB2b2lkIGNvbnNvbGUuZXJyb3IoJ1RIUkVFLkZvbnQ6IGNoYXJhY3RlciAiJyt0KyciIGRvZXMgbm90IGV4aXN0cyBpbiBmb250IGZhbWlseSAnK28uZmFtaWx5TmFtZSsiLiIpO2NvbnN0IGk9bmV3IEpjdDtsZXQgYyxzLGwsbSxkLGcscCxiO2lmKHIubyl7Y29uc3QgdD1yLl9jYWNoZWRPdXRsaW5lfHwoci5fY2FjaGVkT3V0bGluZT1yLm8uc3BsaXQoIiAiKSk7Zm9yKGxldCBvPTAscj10Lmxlbmd0aDtvPHI7KXN3aXRjaCh0W28rK10pe2Nhc2UibSI6Yz10W28rK10qbitlLHM9dFtvKytdKm4rYSxpLm1vdmVUbyhjLHMpO2JyZWFrO2Nhc2UibCI6Yz10W28rK10qbitlLHM9dFtvKytdKm4rYSxpLmxpbmVUbyhjLHMpO2JyZWFrO2Nhc2UicSI6bD10W28rK10qbitlLG09dFtvKytdKm4rYSxkPXRbbysrXSpuK2UsZz10W28rK10qbithLGkucXVhZHJhdGljQ3VydmVUbyhkLGcsbCxtKTticmVhaztjYXNlImIiOmw9dFtvKytdKm4rZSxtPXRbbysrXSpuK2EsZD10W28rK10qbitlLGc9dFtvKytdKm4rYSxwPXRbbysrXSpuK2UsYj10W28rK10qbithLGkuYmV6aWVyQ3VydmVUbyhkLGcscCxiLGwsbSl9fXJldHVybntvZmZzZXRYOnIuaGEqbixwYXRoOml9fWZ1bmN0aW9uICRjdCh0KXskaXQuY2FsbCh0aGlzLHQpfWxldCB0c3Q7ZnVuY3Rpb24gbnN0KHQpeyRpdC5jYWxsKHRoaXMsdCl9ZnVuY3Rpb24gZXN0KHQsbixlKXtXY3QuY2FsbCh0aGlzLHZvaWQgMCxlKTtjb25zdCBhPShuZXcgT250KS5zZXQodCksbz0obmV3IE9udCkuc2V0KG4pLHI9bmV3IHR0dChhLnIsYS5nLGEuYiksaT1uZXcgdHR0KG8ucixvLmcsby5iKSxjPU1hdGguc3FydChNYXRoLlBJKSxzPWMqTWF0aC5zcXJ0KC43NSk7dGhpcy5zaC5jb2VmZmljaWVudHNbMF0uY29weShyKS5hZGQoaSkubXVsdGlwbHlTY2FsYXIoYyksdGhpcy5zaC5jb2VmZmljaWVudHNbMV0uY29weShyKS5zdWIoaSkubXVsdGlwbHlTY2FsYXIocyl9ZnVuY3Rpb24gYXN0KHQsbil7V2N0LmNhbGwodGhpcyx2b2lkIDAsbik7Y29uc3QgZT0obmV3IE9udCkuc2V0KHQpO3RoaXMuc2guY29lZmZpY2llbnRzWzBdLnNldChlLnIsZS5nLGUuYikubXVsdGlwbHlTY2FsYXIoMipNYXRoLnNxcnQoTWF0aC5QSSkpfSRjdC5wcm90b3R5cGU9T2JqZWN0LmFzc2lnbihPYmplY3QuY3JlYXRlKCRpdC5wcm90b3R5cGUpLHtjb25zdHJ1Y3RvcjokY3QsbG9hZDpmdW5jdGlvbih0LG4sZSxhKXtjb25zdCBvPXRoaXMscj1uZXcgbmN0KHRoaXMubWFuYWdlcik7ci5zZXRQYXRoKHRoaXMucGF0aCksci5zZXRSZXF1ZXN0SGVhZGVyKHRoaXMucmVxdWVzdEhlYWRlciksci5zZXRXaXRoQ3JlZGVudGlhbHMoby53aXRoQ3JlZGVudGlhbHMpLHIubG9hZCh0LChmdW5jdGlvbih0KXtsZXQgZTt0cnl7ZT1KU09OLnBhcnNlKHQpfWNhdGNoKG4pe2NvbnNvbGUud2FybigiVEhSRUUuRm9udExvYWRlcjogdHlwZWZhY2UuanMgc3VwcG9ydCBpcyBiZWluZyBkZXByZWNhdGVkLiBVc2UgdHlwZWZhY2UuanNvbiBpbnN0ZWFkLiIpLGU9SlNPTi5wYXJzZSh0LnN1YnN0cmluZyg2NSx0Lmxlbmd0aC0yKSl9Y29uc3QgYT1vLnBhcnNlKGUpO24mJm4oYSl9KSxlLGEpfSxwYXJzZTpmdW5jdGlvbih0KXtyZXR1cm4gbmV3IFFjdCh0KX19KSxuc3QucHJvdG90eXBlPU9iamVjdC5hc3NpZ24oT2JqZWN0LmNyZWF0ZSgkaXQucHJvdG90eXBlKSx7Y29uc3RydWN0b3I6bnN0LGxvYWQ6ZnVuY3Rpb24odCxuLGUsYSl7Y29uc3Qgbz10aGlzLHI9bmV3IG5jdChvLm1hbmFnZXIpO3Iuc2V0UmVzcG9uc2VUeXBlKCJhcnJheWJ1ZmZlciIpLHIuc2V0UGF0aChvLnBhdGgpLHIuc2V0UmVxdWVzdEhlYWRlcihvLnJlcXVlc3RIZWFkZXIpLHIuc2V0V2l0aENyZWRlbnRpYWxzKG8ud2l0aENyZWRlbnRpYWxzKSxyLmxvYWQodCwoZnVuY3Rpb24oZSl7dHJ5e2NvbnN0IHQ9ZS5zbGljZSgwKTsodm9pZCAwPT09dHN0JiYodHN0PW5ldyh3aW5kb3cuQXVkaW9Db250ZXh0fHx3aW5kb3cud2Via2l0QXVkaW9Db250ZXh0KSksdHN0KS5kZWNvZGVBdWRpb0RhdGEodCwoZnVuY3Rpb24odCl7bih0KX0pKX1jYXRjaChuKXthP2Eobik6Y29uc29sZS5lcnJvcihuKSxvLm1hbmFnZXIuaXRlbUVycm9yKHQpfX0pLGUsYSl9fSksZXN0LnByb3RvdHlwZT1PYmplY3QuYXNzaWduKE9iamVjdC5jcmVhdGUoV2N0LnByb3RvdHlwZSkse2NvbnN0cnVjdG9yOmVzdCxpc0hlbWlzcGhlcmVMaWdodFByb2JlOiEwLGNvcHk6ZnVuY3Rpb24odCl7cmV0dXJuIFdjdC5wcm90b3R5cGUuY29weS5jYWxsKHRoaXMsdCksdGhpc30sdG9KU09OOmZ1bmN0aW9uKHQpe3JldHVybiBXY3QucHJvdG90eXBlLnRvSlNPTi5jYWxsKHRoaXMsdCl9fSksYXN0LnByb3RvdHlwZT1PYmplY3QuYXNzaWduKE9iamVjdC5jcmVhdGUoV2N0LnByb3RvdHlwZSkse2NvbnN0cnVjdG9yOmFzdCxpc0FtYmllbnRMaWdodFByb2JlOiEwLGNvcHk6ZnVuY3Rpb24odCl7cmV0dXJuIFdjdC5wcm90b3R5cGUuY29weS5jYWxsKHRoaXMsdCksdGhpc30sdG9KU09OOmZ1bmN0aW9uKHQpe3JldHVybiBXY3QucHJvdG90eXBlLnRvSlNPTi5jYWxsKHRoaXMsdCl9fSk7Y29uc3Qgb3N0PW5ldyBTdHQscnN0PW5ldyBTdHQ7ZnVuY3Rpb24gaXN0KHQsbixlKXtsZXQgYSxvLHI7c3dpdGNoKHRoaXMuYmluZGluZz10LHRoaXMudmFsdWVTaXplPWUsbil7Y2FzZSJxdWF0ZXJuaW9uIjphPXRoaXMuX3NsZXJwLG89dGhpcy5fc2xlcnBBZGRpdGl2ZSxyPXRoaXMuX3NldEFkZGl0aXZlSWRlbnRpdHlRdWF0ZXJuaW9uLHRoaXMuYnVmZmVyPW5ldyBGbG9hdDY0QXJyYXkoNiplKSx0aGlzLl93b3JrSW5kZXg9NTticmVhaztjYXNlInN0cmluZyI6Y2FzZSJib29sIjphPXRoaXMuX3NlbGVjdCxvPXRoaXMuX3NlbGVjdCxyPXRoaXMuX3NldEFkZGl0aXZlSWRlbnRpdHlPdGhlcix0aGlzLmJ1ZmZlcj1uZXcgQXJyYXkoNSplKTticmVhaztkZWZhdWx0OmE9dGhpcy5fbGVycCxvPXRoaXMuX2xlcnBBZGRpdGl2ZSxyPXRoaXMuX3NldEFkZGl0aXZlSWRlbnRpdHlOdW1lcmljLHRoaXMuYnVmZmVyPW5ldyBGbG9hdDY0QXJyYXkoNSplKX10aGlzLl9taXhCdWZmZXJSZWdpb249YSx0aGlzLl9taXhCdWZmZXJSZWdpb25BZGRpdGl2ZT1vLHRoaXMuX3NldElkZW50aXR5PXIsdGhpcy5fb3JpZ0luZGV4PTMsdGhpcy5fYWRkSW5kZXg9NCx0aGlzLmN1bXVsYXRpdmVXZWlnaHQ9MCx0aGlzLmN1bXVsYXRpdmVXZWlnaHRBZGRpdGl2ZT0wLHRoaXMudXNlQ291bnQ9MCx0aGlzLnJlZmVyZW5jZUNvdW50PTB9T2JqZWN0LmFzc2lnbihmdW5jdGlvbiBjc3QoKXt0aGlzLnR5cGU9IlN0ZXJlb0NhbWVyYSIsdGhpcy5hc3BlY3Q9MSx0aGlzLmV5ZVNlcD0uMDY0LHRoaXMuY2FtZXJhTD1uZXcgUGV0LHRoaXMuY2FtZXJhTC5sYXllcnMuZW5hYmxlKDEpLHRoaXMuY2FtZXJhTC5tYXRyaXhBdXRvVXBkYXRlPSExLHRoaXMuY2FtZXJhUj1uZXcgUGV0LHRoaXMuY2FtZXJhUi5sYXllcnMuZW5hYmxlKDIpLHRoaXMuY2FtZXJhUi5tYXRyaXhBdXRvVXBkYXRlPSExLHRoaXMuX2NhY2hlPXtmb2N1czpudWxsLGZvdjpudWxsLGFzcGVjdDpudWxsLG5lYXI6bnVsbCxmYXI6bnVsbCx6b29tOm51bGwsZXllU2VwOm51bGx9fS5wcm90b3R5cGUse3VwZGF0ZTpmdW5jdGlvbih0KXtjb25zdCBuPXRoaXMuX2NhY2hlO2lmKG4uZm9jdXMhPT10LmZvY3VzfHxuLmZvdiE9PXQuZm92fHxuLmFzcGVjdCE9PXQuYXNwZWN0KnRoaXMuYXNwZWN0fHxuLm5lYXIhPT10Lm5lYXJ8fG4uZmFyIT09dC5mYXJ8fG4uem9vbSE9PXQuem9vbXx8bi5leWVTZXAhPT10aGlzLmV5ZVNlcCl7bi5mb2N1cz10LmZvY3VzLG4uZm92PXQuZm92LG4uYXNwZWN0PXQuYXNwZWN0KnRoaXMuYXNwZWN0LG4ubmVhcj10Lm5lYXIsbi5mYXI9dC5mYXIsbi56b29tPXQuem9vbSxuLmV5ZVNlcD10aGlzLmV5ZVNlcDtjb25zdCBlPXQucHJvamVjdGlvbk1hdHJpeC5jbG9uZSgpLGE9bi5leWVTZXAvMixvPWEqbi5uZWFyL24uZm9jdXMscj1uLm5lYXIqTWF0aC50YW4oVTkuREVHMlJBRCpuLmZvdiouNSkvbi56b29tO2xldCBpLGM7cnN0LmVsZW1lbnRzWzEyXT0tYSxvc3QuZWxlbWVudHNbMTJdPWEsaT0tcipuLmFzcGVjdCtvLGM9cipuLmFzcGVjdCtvLGUuZWxlbWVudHNbMF09MipuLm5lYXIvKGMtaSksZS5lbGVtZW50c1s4XT0oYytpKS8oYy1pKSx0aGlzLmNhbWVyYUwucHJvamVjdGlvbk1hdHJpeC5jb3B5KGUpLGk9LXIqbi5hc3BlY3QtbyxjPXIqbi5hc3BlY3QtbyxlLmVsZW1lbnRzWzBdPTIqbi5uZWFyLyhjLWkpLGUuZWxlbWVudHNbOF09KGMraSkvKGMtaSksdGhpcy5jYW1lcmFSLnByb2plY3Rpb25NYXRyaXguY29weShlKX10aGlzLmNhbWVyYUwubWF0cml4V29ybGQuY29weSh0Lm1hdHJpeFdvcmxkKS5tdWx0aXBseShyc3QpLHRoaXMuY2FtZXJhUi5tYXRyaXhXb3JsZC5jb3B5KHQubWF0cml4V29ybGQpLm11bHRpcGx5KG9zdCl9fSksT2JqZWN0LmFzc2lnbihpc3QucHJvdG90eXBlLHthY2N1bXVsYXRlOmZ1bmN0aW9uKHQsbil7Y29uc3QgZT10aGlzLmJ1ZmZlcixhPXRoaXMudmFsdWVTaXplLG89dCphK2E7bGV0IHI9dGhpcy5jdW11bGF0aXZlV2VpZ2h0O2lmKDA9PT1yKXtmb3IobGV0IHQ9MDt0IT09YTsrK3QpZVtvK3RdPWVbdF07cj1ufWVsc2Ugcis9bix0aGlzLl9taXhCdWZmZXJSZWdpb24oZSxvLDAsbi9yLGEpO3RoaXMuY3VtdWxhdGl2ZVdlaWdodD1yfSxhY2N1bXVsYXRlQWRkaXRpdmU6ZnVuY3Rpb24odCl7Y29uc3Qgbj10aGlzLmJ1ZmZlcixlPXRoaXMudmFsdWVTaXplLGE9ZSp0aGlzLl9hZGRJbmRleDswPT09dGhpcy5jdW11bGF0aXZlV2VpZ2h0QWRkaXRpdmUmJnRoaXMuX3NldElkZW50aXR5KCksdGhpcy5fbWl4QnVmZmVyUmVnaW9uQWRkaXRpdmUobixhLDAsdCxlKSx0aGlzLmN1bXVsYXRpdmVXZWlnaHRBZGRpdGl2ZSs9dH0sYXBwbHk6ZnVuY3Rpb24odCl7Y29uc3Qgbj10aGlzLnZhbHVlU2l6ZSxlPXRoaXMuYnVmZmVyLGE9dCpuK24sbz10aGlzLmN1bXVsYXRpdmVXZWlnaHQscj10aGlzLmN1bXVsYXRpdmVXZWlnaHRBZGRpdGl2ZSxpPXRoaXMuYmluZGluZzt0aGlzLmN1bXVsYXRpdmVXZWlnaHQ9MCx0aGlzLmN1bXVsYXRpdmVXZWlnaHRBZGRpdGl2ZT0wLG88MSYmdGhpcy5fbWl4QnVmZmVyUmVnaW9uKGUsYSxuKnRoaXMuX29yaWdJbmRleCwxLW8sbikscj4wJiZ0aGlzLl9taXhCdWZmZXJSZWdpb25BZGRpdGl2ZShlLGEsdGhpcy5fYWRkSW5kZXgqbiwxLG4pO2ZvcihsZXQgdD1uLG89bituO3QhPT1vOysrdClpZihlW3RdIT09ZVt0K25dKXtpLnNldFZhbHVlKGUsYSk7YnJlYWt9fSxzYXZlT3JpZ2luYWxTdGF0ZTpmdW5jdGlvbigpe2NvbnN0IHQ9dGhpcy5idWZmZXIsbj10aGlzLnZhbHVlU2l6ZSxlPW4qdGhpcy5fb3JpZ0luZGV4O3RoaXMuYmluZGluZy5nZXRWYWx1ZSh0LGUpO2ZvcihsZXQgYT1uLG89ZTthIT09bzsrK2EpdFthXT10W2UrYSVuXTt0aGlzLl9zZXRJZGVudGl0eSgpLHRoaXMuY3VtdWxhdGl2ZVdlaWdodD0wLHRoaXMuY3VtdWxhdGl2ZVdlaWdodEFkZGl0aXZlPTB9LHJlc3RvcmVPcmlnaW5hbFN0YXRlOmZ1bmN0aW9uKCl7dGhpcy5iaW5kaW5nLnNldFZhbHVlKHRoaXMuYnVmZmVyLDMqdGhpcy52YWx1ZVNpemUpfSxfc2V0QWRkaXRpdmVJZGVudGl0eU51bWVyaWM6ZnVuY3Rpb24oKXtjb25zdCB0PXRoaXMuX2FkZEluZGV4KnRoaXMudmFsdWVTaXplLG49dCt0aGlzLnZhbHVlU2l6ZTtmb3IobGV0IGU9dDtlPG47ZSsrKXRoaXMuYnVmZmVyW2VdPTB9LF9zZXRBZGRpdGl2ZUlkZW50aXR5UXVhdGVybmlvbjpmdW5jdGlvbigpe3RoaXMuX3NldEFkZGl0aXZlSWRlbnRpdHlOdW1lcmljKCksdGhpcy5idWZmZXJbdGhpcy5fYWRkSW5kZXgqdGhpcy52YWx1ZVNpemUrM109MX0sX3NldEFkZGl0aXZlSWRlbnRpdHlPdGhlcjpmdW5jdGlvbigpe2NvbnN0IHQ9dGhpcy5fb3JpZ0luZGV4KnRoaXMudmFsdWVTaXplLG49dGhpcy5fYWRkSW5kZXgqdGhpcy52YWx1ZVNpemU7Zm9yKGxldCBlPTA7ZTx0aGlzLnZhbHVlU2l6ZTtlKyspdGhpcy5idWZmZXJbbitlXT10aGlzLmJ1ZmZlclt0K2VdfSxfc2VsZWN0OmZ1bmN0aW9uKHQsbixlLGEsbyl7aWYoYT49LjUpZm9yKGxldCBhPTA7YSE9PW87KythKXRbbithXT10W2UrYV19LF9zbGVycDpmdW5jdGlvbih0LG4sZSxhKXskOS5zbGVycEZsYXQodCxuLHQsbix0LGUsYSl9LF9zbGVycEFkZGl0aXZlOmZ1bmN0aW9uKHQsbixlLGEsbyl7Y29uc3Qgcj10aGlzLl93b3JrSW5kZXgqbzskOS5tdWx0aXBseVF1YXRlcm5pb25zRmxhdCh0LHIsdCxuLHQsZSksJDkuc2xlcnBGbGF0KHQsbix0LG4sdCxyLGEpfSxfbGVycDpmdW5jdGlvbih0LG4sZSxhLG8pe2NvbnN0IHI9MS1hO2ZvcihsZXQgaT0wO2khPT1vOysraSl7Y29uc3Qgbz1uK2k7dFtvXT10W29dKnIrdFtlK2ldKmF9fSxfbGVycEFkZGl0aXZlOmZ1bmN0aW9uKHQsbixlLGEsbyl7Zm9yKGxldCByPTA7ciE9PW87KytyKXtjb25zdCBvPW4rcjt0W29dPXRbb10rdFtlK3JdKmF9fX0pO2NvbnN0IHNzdD1uZXcgUmVnRXhwKCJbXFxbXFxdXFwuOlxcL10iLCJnIiksbHN0PSJbXlxcW1xcXVxcLjpcXC9dIixtc3Q9IlteIisiXFxbXFxdXFwuOlxcLyIucmVwbGFjZSgiXFwuIiwiIikrIl0iLGRzdD0vKCg/OldDK1tcLzpdKSopLy5zb3VyY2UucmVwbGFjZSgiV0MiLGxzdCksZ3N0PS8oV0NPRCspPy8uc291cmNlLnJlcGxhY2UoIldDT0QiLG1zdCkscHN0PS8oPzpcLihXQyspKD86XFsoLispXF0pPyk/Ly5zb3VyY2UucmVwbGFjZSgiV0MiLGxzdCksYnN0PS9cLihXQyspKD86XFsoLispXF0pPy8uc291cmNlLnJlcGxhY2UoIldDIixsc3QpLHVzdD1uZXcgUmVnRXhwKCJeIitkc3QrZ3N0K3BzdCtic3QrIiQiKSxmc3Q9WyJtYXRlcmlhbCIsIm1hdGVyaWFscyIsImJvbmVzIl07ZnVuY3Rpb24gaHN0KHQsbixlKXtjb25zdCBhPWV8fF9zdC5wYXJzZVRyYWNrTmFtZShuKTt0aGlzLl90YXJnZXRHcm91cD10LHRoaXMuX2JpbmRpbmdzPXQuc3Vic2NyaWJlXyhuLGEpfWZ1bmN0aW9uIF9zdCh0LG4sZSl7dGhpcy5wYXRoPW4sdGhpcy5wYXJzZWRQYXRoPWV8fF9zdC5wYXJzZVRyYWNrTmFtZShuKSx0aGlzLm5vZGU9X3N0LmZpbmROb2RlKHQsdGhpcy5wYXJzZWRQYXRoLm5vZGVOYW1lKXx8dCx0aGlzLnJvb3ROb2RlPXR9T2JqZWN0LmFzc2lnbihoc3QucHJvdG90eXBlLHtnZXRWYWx1ZTpmdW5jdGlvbih0LG4pe3RoaXMuYmluZCgpO2NvbnN0IGU9dGhpcy5fYmluZGluZ3NbdGhpcy5fdGFyZ2V0R3JvdXAubkNhY2hlZE9iamVjdHNfXTt2b2lkIDAhPT1lJiZlLmdldFZhbHVlKHQsbil9LHNldFZhbHVlOmZ1bmN0aW9uKHQsbil7Y29uc3QgZT10aGlzLl9iaW5kaW5ncztmb3IobGV0IGE9dGhpcy5fdGFyZ2V0R3JvdXAubkNhY2hlZE9iamVjdHNfLG89ZS5sZW5ndGg7YSE9PW87KythKWVbYV0uc2V0VmFsdWUodCxuKX0sYmluZDpmdW5jdGlvbigpe2NvbnN0IHQ9dGhpcy5fYmluZGluZ3M7Zm9yKGxldCBuPXRoaXMuX3RhcmdldEdyb3VwLm5DYWNoZWRPYmplY3RzXyxlPXQubGVuZ3RoO24hPT1lOysrbil0W25dLmJpbmQoKX0sdW5iaW5kOmZ1bmN0aW9uKCl7Y29uc3QgdD10aGlzLl9iaW5kaW5ncztmb3IobGV0IG49dGhpcy5fdGFyZ2V0R3JvdXAubkNhY2hlZE9iamVjdHNfLGU9dC5sZW5ndGg7biE9PWU7KytuKXRbbl0udW5iaW5kKCl9fSksT2JqZWN0LmFzc2lnbihfc3Qse0NvbXBvc2l0ZTpoc3QsY3JlYXRlOmZ1bmN0aW9uKHQsbixlKXtyZXR1cm4gdCYmdC5pc0FuaW1hdGlvbk9iamVjdEdyb3VwP25ldyBfc3QuQ29tcG9zaXRlKHQsbixlKTpuZXcgX3N0KHQsbixlKX0sc2FuaXRpemVOb2RlTmFtZTpmdW5jdGlvbih0KXtyZXR1cm4gdC5yZXBsYWNlKC9ccy9nLCJfIikucmVwbGFjZShzc3QsIiIpfSxwYXJzZVRyYWNrTmFtZTpmdW5jdGlvbih0KXtjb25zdCBuPXVzdC5leGVjKHQpO2lmKCFuKXRocm93IG5ldyBFcnJvcigiUHJvcGVydHlCaW5kaW5nOiBDYW5ub3QgcGFyc2UgdHJhY2tOYW1lOiAiK3QpO2NvbnN0IGU9e25vZGVOYW1lOm5bMl0sb2JqZWN0TmFtZTpuWzNdLG9iamVjdEluZGV4Om5bNF0scHJvcGVydHlOYW1lOm5bNV0scHJvcGVydHlJbmRleDpuWzZdfSxhPWUubm9kZU5hbWUmJmUubm9kZU5hbWUubGFzdEluZGV4T2YoIi4iKTtpZih2b2lkIDAhPT1hJiYtMSE9PWEpe2NvbnN0IHQ9ZS5ub2RlTmFtZS5zdWJzdHJpbmcoYSsxKTstMSE9PWZzdC5pbmRleE9mKHQpJiYoZS5ub2RlTmFtZT1lLm5vZGVOYW1lLnN1YnN0cmluZygwLGEpLGUub2JqZWN0TmFtZT10KX1pZihudWxsPT09ZS5wcm9wZXJ0eU5hbWV8fDA9PT1lLnByb3BlcnR5TmFtZS5sZW5ndGgpdGhyb3cgbmV3IEVycm9yKCJQcm9wZXJ0eUJpbmRpbmc6IGNhbiBub3QgcGFyc2UgcHJvcGVydHlOYW1lIGZyb20gdHJhY2tOYW1lOiAiK3QpO3JldHVybiBlfSxmaW5kTm9kZTpmdW5jdGlvbih0LG4pe2lmKCFufHwiIj09PW58fCIuIj09PW58fC0xPT09bnx8bj09PXQubmFtZXx8bj09PXQudXVpZClyZXR1cm4gdDtpZih0LnNrZWxldG9uKXtjb25zdCBlPXQuc2tlbGV0b24uZ2V0Qm9uZUJ5TmFtZShuKTtpZih2b2lkIDAhPT1lKXJldHVybiBlfWlmKHQuY2hpbGRyZW4pe2NvbnN0IGU9ZnVuY3Rpb24odCl7Zm9yKGxldCBhPTA7YTx0Lmxlbmd0aDthKyspe2NvbnN0IG89dFthXTtpZihvLm5hbWU9PT1ufHxvLnV1aWQ9PT1uKXJldHVybiBvO2NvbnN0IHI9ZShvLmNoaWxkcmVuKTtpZihyKXJldHVybiByfXJldHVybiBudWxsfSxhPWUodC5jaGlsZHJlbik7aWYoYSlyZXR1cm4gYX1yZXR1cm4gbnVsbH19KSxPYmplY3QuYXNzaWduKF9zdC5wcm90b3R5cGUse19nZXRWYWx1ZV91bmF2YWlsYWJsZTpmdW5jdGlvbigpe30sX3NldFZhbHVlX3VuYXZhaWxhYmxlOmZ1bmN0aW9uKCl7fSxCaW5kaW5nVHlwZTp7RGlyZWN0OjAsRW50aXJlQXJyYXk6MSxBcnJheUVsZW1lbnQ6MixIYXNGcm9tVG9BcnJheTozfSxWZXJzaW9uaW5nOntOb25lOjAsTmVlZHNVcGRhdGU6MSxNYXRyaXhXb3JsZE5lZWRzVXBkYXRlOjJ9LEdldHRlckJ5QmluZGluZ1R5cGU6W2Z1bmN0aW9uIHQobixlKXtuW2VdPXRoaXMubm9kZVt0aGlzLnByb3BlcnR5TmFtZV19LGZ1bmN0aW9uIHQobixlKXtjb25zdCBhPXRoaXMucmVzb2x2ZWRQcm9wZXJ0eTtmb3IobGV0IHQ9MCxvPWEubGVuZ3RoO3QhPT1vOysrdCluW2UrK109YVt0XX0sZnVuY3Rpb24gdChuLGUpe25bZV09dGhpcy5yZXNvbHZlZFByb3BlcnR5W3RoaXMucHJvcGVydHlJbmRleF19LGZ1bmN0aW9uIHQobixlKXt0aGlzLnJlc29sdmVkUHJvcGVydHkudG9BcnJheShuLGUpfV0sU2V0dGVyQnlCaW5kaW5nVHlwZUFuZFZlcnNpb25pbmc6W1tmdW5jdGlvbiB0KG4sZSl7dGhpcy50YXJnZXRPYmplY3RbdGhpcy5wcm9wZXJ0eU5hbWVdPW5bZV19LGZ1bmN0aW9uIHQobixlKXt0aGlzLnRhcmdldE9iamVjdFt0aGlzLnByb3BlcnR5TmFtZV09bltlXSx0aGlzLnRhcmdldE9iamVjdC5uZWVkc1VwZGF0ZT0hMH0sZnVuY3Rpb24gdChuLGUpe3RoaXMudGFyZ2V0T2JqZWN0W3RoaXMucHJvcGVydHlOYW1lXT1uW2VdLHRoaXMudGFyZ2V0T2JqZWN0Lm1hdHJpeFdvcmxkTmVlZHNVcGRhdGU9ITB9XSxbZnVuY3Rpb24gdChuLGUpe2NvbnN0IGE9dGhpcy5yZXNvbHZlZFByb3BlcnR5O2ZvcihsZXQgdD0wLG89YS5sZW5ndGg7dCE9PW87Kyt0KWFbdF09bltlKytdfSxmdW5jdGlvbiB0KG4sZSl7Y29uc3QgYT10aGlzLnJlc29sdmVkUHJvcGVydHk7Zm9yKGxldCB0PTAsbz1hLmxlbmd0aDt0IT09bzsrK3QpYVt0XT1uW2UrK107dGhpcy50YXJnZXRPYmplY3QubmVlZHNVcGRhdGU9ITB9LGZ1bmN0aW9uIHQobixlKXtjb25zdCBhPXRoaXMucmVzb2x2ZWRQcm9wZXJ0eTtmb3IobGV0IHQ9MCxvPWEubGVuZ3RoO3QhPT1vOysrdClhW3RdPW5bZSsrXTt0aGlzLnRhcmdldE9iamVjdC5tYXRyaXhXb3JsZE5lZWRzVXBkYXRlPSEwfV0sW2Z1bmN0aW9uIHQobixlKXt0aGlzLnJlc29sdmVkUHJvcGVydHlbdGhpcy5wcm9wZXJ0eUluZGV4XT1uW2VdfSxmdW5jdGlvbiB0KG4sZSl7dGhpcy5yZXNvbHZlZFByb3BlcnR5W3RoaXMucHJvcGVydHlJbmRleF09bltlXSx0aGlzLnRhcmdldE9iamVjdC5uZWVkc1VwZGF0ZT0hMH0sZnVuY3Rpb24gdChuLGUpe3RoaXMucmVzb2x2ZWRQcm9wZXJ0eVt0aGlzLnByb3BlcnR5SW5kZXhdPW5bZV0sdGhpcy50YXJnZXRPYmplY3QubWF0cml4V29ybGROZWVkc1VwZGF0ZT0hMH1dLFtmdW5jdGlvbiB0KG4sZSl7dGhpcy5yZXNvbHZlZFByb3BlcnR5LmZyb21BcnJheShuLGUpfSxmdW5jdGlvbiB0KG4sZSl7dGhpcy5yZXNvbHZlZFByb3BlcnR5LmZyb21BcnJheShuLGUpLHRoaXMudGFyZ2V0T2JqZWN0Lm5lZWRzVXBkYXRlPSEwfSxmdW5jdGlvbiB0KG4sZSl7dGhpcy5yZXNvbHZlZFByb3BlcnR5LmZyb21BcnJheShuLGUpLHRoaXMudGFyZ2V0T2JqZWN0Lm1hdHJpeFdvcmxkTmVlZHNVcGRhdGU9ITB9XV0sZ2V0VmFsdWU6ZnVuY3Rpb24gdChuLGUpe3RoaXMuYmluZCgpLHRoaXMuZ2V0VmFsdWUobixlKX0sc2V0VmFsdWU6ZnVuY3Rpb24gdChuLGUpe3RoaXMuYmluZCgpLHRoaXMuc2V0VmFsdWUobixlKX0sYmluZDpmdW5jdGlvbigpe2xldCB0PXRoaXMubm9kZTtjb25zdCBuPXRoaXMucGFyc2VkUGF0aCxlPW4ub2JqZWN0TmFtZSxhPW4ucHJvcGVydHlOYW1lO2xldCBvPW4ucHJvcGVydHlJbmRleDtpZih0fHwodD1fc3QuZmluZE5vZGUodGhpcy5yb290Tm9kZSxuLm5vZGVOYW1lKXx8dGhpcy5yb290Tm9kZSx0aGlzLm5vZGU9dCksdGhpcy5nZXRWYWx1ZT10aGlzLl9nZXRWYWx1ZV91bmF2YWlsYWJsZSx0aGlzLnNldFZhbHVlPXRoaXMuX3NldFZhbHVlX3VuYXZhaWxhYmxlLCF0KXJldHVybiB2b2lkIGNvbnNvbGUuZXJyb3IoIlRIUkVFLlByb3BlcnR5QmluZGluZzogVHJ5aW5nIHRvIHVwZGF0ZSBub2RlIGZvciB0cmFjazogIit0aGlzLnBhdGgrIiBidXQgaXQgd2Fzbid0IGZvdW5kLiIpO2lmKGUpe2xldCBhPW4ub2JqZWN0SW5kZXg7c3dpdGNoKGUpe2Nhc2UibWF0ZXJpYWxzIjppZighdC5tYXRlcmlhbClyZXR1cm4gdm9pZCBjb25zb2xlLmVycm9yKCJUSFJFRS5Qcm9wZXJ0eUJpbmRpbmc6IENhbiBub3QgYmluZCB0byBtYXRlcmlhbCBhcyBub2RlIGRvZXMgbm90IGhhdmUgYSBtYXRlcmlhbC4iLHRoaXMpO2lmKCF0Lm1hdGVyaWFsLm1hdGVyaWFscylyZXR1cm4gdm9pZCBjb25zb2xlLmVycm9yKCJUSFJFRS5Qcm9wZXJ0eUJpbmRpbmc6IENhbiBub3QgYmluZCB0byBtYXRlcmlhbC5tYXRlcmlhbHMgYXMgbm9kZS5tYXRlcmlhbCBkb2VzIG5vdCBoYXZlIGEgbWF0ZXJpYWxzIGFycmF5LiIsdGhpcyk7dD10Lm1hdGVyaWFsLm1hdGVyaWFsczticmVhaztjYXNlImJvbmVzIjppZighdC5za2VsZXRvbilyZXR1cm4gdm9pZCBjb25zb2xlLmVycm9yKCJUSFJFRS5Qcm9wZXJ0eUJpbmRpbmc6IENhbiBub3QgYmluZCB0byBib25lcyBhcyBub2RlIGRvZXMgbm90IGhhdmUgYSBza2VsZXRvbi4iLHRoaXMpO3Q9dC5za2VsZXRvbi5ib25lcztmb3IobGV0IG49MDtuPHQubGVuZ3RoO24rKylpZih0W25dLm5hbWU9PT1hKXthPW47YnJlYWt9YnJlYWs7ZGVmYXVsdDppZih2b2lkIDA9PT10W2VdKXJldHVybiB2b2lkIGNvbnNvbGUuZXJyb3IoIlRIUkVFLlByb3BlcnR5QmluZGluZzogQ2FuIG5vdCBiaW5kIHRvIG9iamVjdE5hbWUgb2Ygbm9kZSB1bmRlZmluZWQuIix0aGlzKTt0PXRbZV19aWYodm9pZCAwIT09YSl7aWYodm9pZCAwPT09dFthXSlyZXR1cm4gdm9pZCBjb25zb2xlLmVycm9yKCJUSFJFRS5Qcm9wZXJ0eUJpbmRpbmc6IFRyeWluZyB0byBiaW5kIHRvIG9iamVjdEluZGV4IG9mIG9iamVjdE5hbWUsIGJ1dCBpcyB1bmRlZmluZWQuIix0aGlzLHQpO3Q9dFthXX19Y29uc3Qgcj10W2FdO2lmKHZvaWQgMD09PXIpcmV0dXJuIHZvaWQgY29uc29sZS5lcnJvcigiVEhSRUUuUHJvcGVydHlCaW5kaW5nOiBUcnlpbmcgdG8gdXBkYXRlIHByb3BlcnR5IGZvciB0cmFjazogIituLm5vZGVOYW1lKyIuIithKyIgYnV0IGl0IHdhc24ndCBmb3VuZC4iLHQpO2xldCBpPXRoaXMuVmVyc2lvbmluZy5Ob25lO3RoaXMudGFyZ2V0T2JqZWN0PXQsdm9pZCAwIT09dC5uZWVkc1VwZGF0ZT9pPXRoaXMuVmVyc2lvbmluZy5OZWVkc1VwZGF0ZTp2b2lkIDAhPT10Lm1hdHJpeFdvcmxkTmVlZHNVcGRhdGUmJihpPXRoaXMuVmVyc2lvbmluZy5NYXRyaXhXb3JsZE5lZWRzVXBkYXRlKTtsZXQgYz10aGlzLkJpbmRpbmdUeXBlLkRpcmVjdDtpZih2b2lkIDAhPT1vKXtpZigibW9ycGhUYXJnZXRJbmZsdWVuY2VzIj09PWEpe2lmKCF0Lmdlb21ldHJ5KXJldHVybiB2b2lkIGNvbnNvbGUuZXJyb3IoIlRIUkVFLlByb3BlcnR5QmluZGluZzogQ2FuIG5vdCBiaW5kIHRvIG1vcnBoVGFyZ2V0SW5mbHVlbmNlcyBiZWNhdXNlIG5vZGUgZG9lcyBub3QgaGF2ZSBhIGdlb21ldHJ5LiIsdGhpcyk7aWYoIXQuZ2VvbWV0cnkuaXNCdWZmZXJHZW9tZXRyeSlyZXR1cm4gdm9pZCBjb25zb2xlLmVycm9yKCJUSFJFRS5Qcm9wZXJ0eUJpbmRpbmc6IENhbiBub3QgYmluZCB0byBtb3JwaFRhcmdldEluZmx1ZW5jZXMgb24gVEhSRUUuR2VvbWV0cnkuIFVzZSBUSFJFRS5CdWZmZXJHZW9tZXRyeSBpbnN0ZWFkLiIsdGhpcyk7aWYoIXQuZ2VvbWV0cnkubW9ycGhBdHRyaWJ1dGVzKXJldHVybiB2b2lkIGNvbnNvbGUuZXJyb3IoIlRIUkVFLlByb3BlcnR5QmluZGluZzogQ2FuIG5vdCBiaW5kIHRvIG1vcnBoVGFyZ2V0SW5mbHVlbmNlcyBiZWNhdXNlIG5vZGUgZG9lcyBub3QgaGF2ZSBhIGdlb21ldHJ5Lm1vcnBoQXR0cmlidXRlcy4iLHRoaXMpO3ZvaWQgMCE9PXQubW9ycGhUYXJnZXREaWN0aW9uYXJ5W29dJiYobz10Lm1vcnBoVGFyZ2V0RGljdGlvbmFyeVtvXSl9Yz10aGlzLkJpbmRpbmdUeXBlLkFycmF5RWxlbWVudCx0aGlzLnJlc29sdmVkUHJvcGVydHk9cix0aGlzLnByb3BlcnR5SW5kZXg9b31lbHNlIHZvaWQgMCE9PXIuZnJvbUFycmF5JiZ2b2lkIDAhPT1yLnRvQXJyYXk/KGM9dGhpcy5CaW5kaW5nVHlwZS5IYXNGcm9tVG9BcnJheSx0aGlzLnJlc29sdmVkUHJvcGVydHk9cik6QXJyYXkuaXNBcnJheShyKT8oYz10aGlzLkJpbmRpbmdUeXBlLkVudGlyZUFycmF5LHRoaXMucmVzb2x2ZWRQcm9wZXJ0eT1yKTp0aGlzLnByb3BlcnR5TmFtZT1hO3RoaXMuZ2V0VmFsdWU9dGhpcy5HZXR0ZXJCeUJpbmRpbmdUeXBlW2NdLHRoaXMuc2V0VmFsdWU9dGhpcy5TZXR0ZXJCeUJpbmRpbmdUeXBlQW5kVmVyc2lvbmluZ1tjXVtpXX0sdW5iaW5kOmZ1bmN0aW9uKCl7dGhpcy5ub2RlPW51bGwsdGhpcy5nZXRWYWx1ZT10aGlzLl9nZXRWYWx1ZV91bmJvdW5kLHRoaXMuc2V0VmFsdWU9dGhpcy5fc2V0VmFsdWVfdW5ib3VuZH19KSxPYmplY3QuYXNzaWduKF9zdC5wcm90b3R5cGUse19nZXRWYWx1ZV91bmJvdW5kOl9zdC5wcm90b3R5cGUuZ2V0VmFsdWUsX3NldFZhbHVlX3VuYm91bmQ6X3N0LnByb3RvdHlwZS5zZXRWYWx1ZX0pLE9iamVjdC5hc3NpZ24oZnVuY3Rpb24gQ3N0KCl7dGhpcy51dWlkPVU5LmdlbmVyYXRlVVVJRCgpLHRoaXMuX29iamVjdHM9QXJyYXkucHJvdG90eXBlLnNsaWNlLmNhbGwoYXJndW1lbnRzKSx0aGlzLm5DYWNoZWRPYmplY3RzXz0wO2NvbnN0IHQ9e307dGhpcy5faW5kaWNlc0J5VVVJRD10O2ZvcihsZXQgbj0wLGU9YXJndW1lbnRzLmxlbmd0aDtuIT09ZTsrK24pdFthcmd1bWVudHNbbl0udXVpZF09bjt0aGlzLl9wYXRocz1bXSx0aGlzLl9wYXJzZWRQYXRocz1bXSx0aGlzLl9iaW5kaW5ncz1bXSx0aGlzLl9iaW5kaW5nc0luZGljZXNCeVBhdGg9e307Y29uc3Qgbj10aGlzO3RoaXMuc3RhdHM9e29iamVjdHM6e2dldCB0b3RhbCgpe3JldHVybiBuLl9vYmplY3RzLmxlbmd0aH0sZ2V0IGluVXNlKCl7cmV0dXJuIHRoaXMudG90YWwtbi5uQ2FjaGVkT2JqZWN0c199fSxnZXQgYmluZGluZ3NQZXJPYmplY3QoKXtyZXR1cm4gbi5fYmluZGluZ3MubGVuZ3RofX19LnByb3RvdHlwZSx7aXNBbmltYXRpb25PYmplY3RHcm91cDohMCxhZGQ6ZnVuY3Rpb24oKXtjb25zdCB0PXRoaXMuX29iamVjdHMsbj10aGlzLl9pbmRpY2VzQnlVVUlELGU9dGhpcy5fcGF0aHMsYT10aGlzLl9wYXJzZWRQYXRocyxvPXRoaXMuX2JpbmRpbmdzLHI9by5sZW5ndGg7bGV0IGksYz10Lmxlbmd0aCxzPXRoaXMubkNhY2hlZE9iamVjdHNfO2ZvcihsZXQgbD0wLG09YXJndW1lbnRzLmxlbmd0aDtsIT09bTsrK2wpe2NvbnN0IG09YXJndW1lbnRzW2xdLGQ9bS51dWlkO2xldCBnPW5bZF07aWYodm9pZCAwPT09Zyl7Zz1jKyssbltkXT1nLHQucHVzaChtKTtmb3IobGV0IHQ9MCxuPXI7dCE9PW47Kyt0KW9bdF0ucHVzaChuZXcgX3N0KG0sZVt0XSxhW3RdKSl9ZWxzZSBpZihnPHMpe2k9dFtnXTtjb25zdCBjPS0tcyxsPXRbY107bltsLnV1aWRdPWcsdFtnXT1sLG5bZF09Yyx0W2NdPW07Zm9yKGxldCB0PTAsbj1yO3QhPT1uOysrdCl7Y29uc3Qgbj1vW3RdO2xldCByPW5bZ107bltnXT1uW2NdLHZvaWQgMD09PXImJihyPW5ldyBfc3QobSxlW3RdLGFbdF0pKSxuW2NdPXJ9fWVsc2UgdFtnXSE9PWkmJmNvbnNvbGUuZXJyb3IoIlRIUkVFLkFuaW1hdGlvbk9iamVjdEdyb3VwOiBEaWZmZXJlbnQgb2JqZWN0cyB3aXRoIHRoZSBzYW1lIFVVSUQgZGV0ZWN0ZWQuIENsZWFuIHRoZSBjYWNoZXMgb3IgcmVjcmVhdGUgeW91ciBpbmZyYXN0cnVjdHVyZSB3aGVuIHJlbG9hZGluZyBzY2VuZXMuIil9dGhpcy5uQ2FjaGVkT2JqZWN0c189c30scmVtb3ZlOmZ1bmN0aW9uKCl7Y29uc3QgdD10aGlzLl9vYmplY3RzLG49dGhpcy5faW5kaWNlc0J5VVVJRCxlPXRoaXMuX2JpbmRpbmdzLGE9ZS5sZW5ndGg7bGV0IG89dGhpcy5uQ2FjaGVkT2JqZWN0c187Zm9yKGxldCByPTAsaT1hcmd1bWVudHMubGVuZ3RoO3IhPT1pOysrcil7Y29uc3QgaT1hcmd1bWVudHNbcl0sYz1pLnV1aWQscz1uW2NdO2lmKHZvaWQgMCE9PXMmJnM+PW8pe2NvbnN0IHI9bysrLGw9dFtyXTtuW2wudXVpZF09cyx0W3NdPWwsbltjXT1yLHRbcl09aTtmb3IobGV0IHQ9MCxuPWE7dCE9PW47Kyt0KXtjb25zdCBuPWVbdF0sYT1uW3NdO25bc109bltyXSxuW3JdPWF9fX10aGlzLm5DYWNoZWRPYmplY3RzXz1vfSx1bmNhY2hlOmZ1bmN0aW9uKCl7Y29uc3QgdD10aGlzLl9vYmplY3RzLG49dGhpcy5faW5kaWNlc0J5VVVJRCxlPXRoaXMuX2JpbmRpbmdzLGE9ZS5sZW5ndGg7bGV0IG89dGhpcy5uQ2FjaGVkT2JqZWN0c18scj10Lmxlbmd0aDtmb3IobGV0IGk9MCxjPWFyZ3VtZW50cy5sZW5ndGg7aSE9PWM7KytpKXtjb25zdCBjPWFyZ3VtZW50c1tpXS51dWlkLHM9bltjXTtpZih2b2lkIDAhPT1zKWlmKGRlbGV0ZSBuW2NdLHM8byl7Y29uc3QgaT0tLW8sYz10W2ldLGw9LS1yLG09dFtsXTtuW2MudXVpZF09cyx0W3NdPWMsblttLnV1aWRdPWksdFtpXT1tLHQucG9wKCk7Zm9yKGxldCB0PTAsbj1hO3QhPT1uOysrdCl7Y29uc3Qgbj1lW3RdLGE9bltsXTtuW3NdPW5baV0sbltpXT1hLG4ucG9wKCl9fWVsc2V7Y29uc3Qgbz0tLXIsaT10W29dO28+MCYmKG5baS51dWlkXT1zKSx0W3NdPWksdC5wb3AoKTtmb3IobGV0IHQ9MCxuPWE7dCE9PW47Kyt0KXtjb25zdCBuPWVbdF07bltzXT1uW29dLG4ucG9wKCl9fX10aGlzLm5DYWNoZWRPYmplY3RzXz1vfSxzdWJzY3JpYmVfOmZ1bmN0aW9uKHQsbil7Y29uc3QgZT10aGlzLl9iaW5kaW5nc0luZGljZXNCeVBhdGg7bGV0IGE9ZVt0XTtjb25zdCBvPXRoaXMuX2JpbmRpbmdzO2lmKHZvaWQgMCE9PWEpcmV0dXJuIG9bYV07Y29uc3Qgcj10aGlzLl9wYXRocyxpPXRoaXMuX3BhcnNlZFBhdGhzLGM9dGhpcy5fb2JqZWN0cyxzPXRoaXMubkNhY2hlZE9iamVjdHNfLGw9bmV3IEFycmF5KGMubGVuZ3RoKTthPW8ubGVuZ3RoLGVbdF09YSxyLnB1c2godCksaS5wdXNoKG4pLG8ucHVzaChsKTtmb3IobGV0IGU9cyxhPWMubGVuZ3RoO2UhPT1hOysrZSlsW2VdPW5ldyBfc3QoY1tlXSx0LG4pO3JldHVybiBsfSx1bnN1YnNjcmliZV86ZnVuY3Rpb24odCl7Y29uc3Qgbj10aGlzLl9iaW5kaW5nc0luZGljZXNCeVBhdGgsZT1uW3RdO2lmKHZvaWQgMCE9PWUpe2NvbnN0IGE9dGhpcy5fcGF0aHMsbz10aGlzLl9wYXJzZWRQYXRocyxyPXRoaXMuX2JpbmRpbmdzLGk9ci5sZW5ndGgtMSxjPXJbaV07blt0W2ldXT1lLHJbZV09YyxyLnBvcCgpLG9bZV09b1tpXSxvLnBvcCgpLGFbZV09YVtpXSxhLnBvcCgpfX19KTtjbGFzcyBNc3R7Y29uc3RydWN0b3IodCxuLGU9bnVsbCxhPW4uYmxlbmRNb2RlKXt0aGlzLl9taXhlcj10LHRoaXMuX2NsaXA9bix0aGlzLl9sb2NhbFJvb3Q9ZSx0aGlzLmJsZW5kTW9kZT1hO2NvbnN0IG89bi50cmFja3Mscj1vLmxlbmd0aCxpPW5ldyBBcnJheShyKSxjPXtlbmRpbmdTdGFydDpSOSxlbmRpbmdFbmQ6Ujl9O2ZvcihsZXQgdD0wO3QhPT1yOysrdCl7Y29uc3Qgbj1vW3RdLmNyZWF0ZUludGVycG9sYW50KG51bGwpO2lbdF09bixuLnNldHRpbmdzPWN9dGhpcy5faW50ZXJwb2xhbnRTZXR0aW5ncz1jLHRoaXMuX2ludGVycG9sYW50cz1pLHRoaXMuX3Byb3BlcnR5QmluZGluZ3M9bmV3IEFycmF5KHIpLHRoaXMuX2NhY2hlSW5kZXg9bnVsbCx0aGlzLl9ieUNsaXBDYWNoZUluZGV4PW51bGwsdGhpcy5fdGltZVNjYWxlSW50ZXJwb2xhbnQ9bnVsbCx0aGlzLl93ZWlnaHRJbnRlcnBvbGFudD1udWxsLHRoaXMubG9vcD0yMjAxLHRoaXMuX2xvb3BDb3VudD0tMSx0aGlzLl9zdGFydFRpbWU9bnVsbCx0aGlzLnRpbWU9MCx0aGlzLnRpbWVTY2FsZT0xLHRoaXMuX2VmZmVjdGl2ZVRpbWVTY2FsZT0xLHRoaXMud2VpZ2h0PTEsdGhpcy5fZWZmZWN0aXZlV2VpZ2h0PTEsdGhpcy5yZXBldGl0aW9ucz0xLzAsdGhpcy5wYXVzZWQ9ITEsdGhpcy5lbmFibGVkPSEwLHRoaXMuY2xhbXBXaGVuRmluaXNoZWQ9ITEsdGhpcy56ZXJvU2xvcGVBdFN0YXJ0PSEwLHRoaXMuemVyb1Nsb3BlQXRFbmQ9ITB9cGxheSgpe3JldHVybiB0aGlzLl9taXhlci5fYWN0aXZhdGVBY3Rpb24odGhpcyksdGhpc31zdG9wKCl7cmV0dXJuIHRoaXMuX21peGVyLl9kZWFjdGl2YXRlQWN0aW9uKHRoaXMpLHRoaXMucmVzZXQoKX1yZXNldCgpe3JldHVybiB0aGlzLnBhdXNlZD0hMSx0aGlzLmVuYWJsZWQ9ITAsdGhpcy50aW1lPTAsdGhpcy5fbG9vcENvdW50PS0xLHRoaXMuX3N0YXJ0VGltZT1udWxsLHRoaXMuc3RvcEZhZGluZygpLnN0b3BXYXJwaW5nKCl9aXNSdW5uaW5nKCl7cmV0dXJuIHRoaXMuZW5hYmxlZCYmIXRoaXMucGF1c2VkJiYwIT09dGhpcy50aW1lU2NhbGUmJm51bGw9PT10aGlzLl9zdGFydFRpbWUmJnRoaXMuX21peGVyLl9pc0FjdGl2ZUFjdGlvbih0aGlzKX1pc1NjaGVkdWxlZCgpe3JldHVybiB0aGlzLl9taXhlci5faXNBY3RpdmVBY3Rpb24odGhpcyl9c3RhcnRBdCh0KXtyZXR1cm4gdGhpcy5fc3RhcnRUaW1lPXQsdGhpc31zZXRMb29wKHQsbil7cmV0dXJuIHRoaXMubG9vcD10LHRoaXMucmVwZXRpdGlvbnM9bix0aGlzfXNldEVmZmVjdGl2ZVdlaWdodCh0KXtyZXR1cm4gdGhpcy53ZWlnaHQ9dCx0aGlzLl9lZmZlY3RpdmVXZWlnaHQ9dGhpcy5lbmFibGVkP3Q6MCx0aGlzLnN0b3BGYWRpbmcoKX1nZXRFZmZlY3RpdmVXZWlnaHQoKXtyZXR1cm4gdGhpcy5fZWZmZWN0aXZlV2VpZ2h0fWZhZGVJbih0KXtyZXR1cm4gdGhpcy5fc2NoZWR1bGVGYWRpbmcodCwwLDEpfWZhZGVPdXQodCl7cmV0dXJuIHRoaXMuX3NjaGVkdWxlRmFkaW5nKHQsMSwwKX1jcm9zc0ZhZGVGcm9tKHQsbixlKXtpZih0LmZhZGVPdXQobiksdGhpcy5mYWRlSW4obiksZSl7Y29uc3QgZT10aGlzLl9jbGlwLmR1cmF0aW9uLGE9dC5fY2xpcC5kdXJhdGlvbixvPWUvYTt0LndhcnAoMSxhL2UsbiksdGhpcy53YXJwKG8sMSxuKX1yZXR1cm4gdGhpc31jcm9zc0ZhZGVUbyh0LG4sZSl7cmV0dXJuIHQuY3Jvc3NGYWRlRnJvbSh0aGlzLG4sZSl9c3RvcEZhZGluZygpe2NvbnN0IHQ9dGhpcy5fd2VpZ2h0SW50ZXJwb2xhbnQ7cmV0dXJuIG51bGwhPT10JiYodGhpcy5fd2VpZ2h0SW50ZXJwb2xhbnQ9bnVsbCx0aGlzLl9taXhlci5fdGFrZUJhY2tDb250cm9sSW50ZXJwb2xhbnQodCkpLHRoaXN9c2V0RWZmZWN0aXZlVGltZVNjYWxlKHQpe3JldHVybiB0aGlzLnRpbWVTY2FsZT10LHRoaXMuX2VmZmVjdGl2ZVRpbWVTY2FsZT10aGlzLnBhdXNlZD8wOnQsdGhpcy5zdG9wV2FycGluZygpfWdldEVmZmVjdGl2ZVRpbWVTY2FsZSgpe3JldHVybiB0aGlzLl9lZmZlY3RpdmVUaW1lU2NhbGV9c2V0RHVyYXRpb24odCl7cmV0dXJuIHRoaXMudGltZVNjYWxlPXRoaXMuX2NsaXAuZHVyYXRpb24vdCx0aGlzLnN0b3BXYXJwaW5nKCl9c3luY1dpdGgodCl7cmV0dXJuIHRoaXMudGltZT10LnRpbWUsdGhpcy50aW1lU2NhbGU9dC50aW1lU2NhbGUsdGhpcy5zdG9wV2FycGluZygpfWhhbHQodCl7cmV0dXJuIHRoaXMud2FycCh0aGlzLl9lZmZlY3RpdmVUaW1lU2NhbGUsMCx0KX13YXJwKHQsbixlKXtjb25zdCBhPXRoaXMuX21peGVyLG89YS50aW1lLHI9dGhpcy50aW1lU2NhbGU7bGV0IGk9dGhpcy5fdGltZVNjYWxlSW50ZXJwb2xhbnQ7bnVsbD09PWkmJihpPWEuX2xlbmRDb250cm9sSW50ZXJwb2xhbnQoKSx0aGlzLl90aW1lU2NhbGVJbnRlcnBvbGFudD1pKTtjb25zdCBjPWkucGFyYW1ldGVyUG9zaXRpb25zLHM9aS5zYW1wbGVWYWx1ZXM7cmV0dXJuIGNbMF09byxjWzFdPW8rZSxzWzBdPXQvcixzWzFdPW4vcix0aGlzfXN0b3BXYXJwaW5nKCl7Y29uc3QgdD10aGlzLl90aW1lU2NhbGVJbnRlcnBvbGFudDtyZXR1cm4gbnVsbCE9PXQmJih0aGlzLl90aW1lU2NhbGVJbnRlcnBvbGFudD1udWxsLHRoaXMuX21peGVyLl90YWtlQmFja0NvbnRyb2xJbnRlcnBvbGFudCh0KSksdGhpc31nZXRNaXhlcigpe3JldHVybiB0aGlzLl9taXhlcn1nZXRDbGlwKCl7cmV0dXJuIHRoaXMuX2NsaXB9Z2V0Um9vdCgpe3JldHVybiB0aGlzLl9sb2NhbFJvb3R8fHRoaXMuX21peGVyLl9yb290fV91cGRhdGUodCxuLGUsYSl7aWYoIXRoaXMuZW5hYmxlZClyZXR1cm4gdm9pZCB0aGlzLl91cGRhdGVXZWlnaHQodCk7Y29uc3Qgbz10aGlzLl9zdGFydFRpbWU7aWYobnVsbCE9PW8pe2NvbnN0IGE9KHQtbykqZTtpZihhPDB8fDA9PT1lKXJldHVybjt0aGlzLl9zdGFydFRpbWU9bnVsbCxuPWUqYX1uKj10aGlzLl91cGRhdGVUaW1lU2NhbGUodCk7Y29uc3Qgcj10aGlzLl91cGRhdGVUaW1lKG4pLGk9dGhpcy5fdXBkYXRlV2VpZ2h0KHQpO2lmKGk+MCl7Y29uc3QgdD10aGlzLl9pbnRlcnBvbGFudHMsbj10aGlzLl9wcm9wZXJ0eUJpbmRpbmdzO3N3aXRjaCh0aGlzLmJsZW5kTW9kZSl7Y2FzZSAyNTAxOmZvcihsZXQgZT0wLGE9dC5sZW5ndGg7ZSE9PWE7KytlKXRbZV0uZXZhbHVhdGUociksbltlXS5hY2N1bXVsYXRlQWRkaXRpdmUoaSk7YnJlYWs7Y2FzZSAyNTAwOmRlZmF1bHQ6Zm9yKGxldCBlPTAsbz10Lmxlbmd0aDtlIT09bzsrK2UpdFtlXS5ldmFsdWF0ZShyKSxuW2VdLmFjY3VtdWxhdGUoYSxpKX19fV91cGRhdGVXZWlnaHQodCl7bGV0IG49MDtpZih0aGlzLmVuYWJsZWQpe249dGhpcy53ZWlnaHQ7Y29uc3QgZT10aGlzLl93ZWlnaHRJbnRlcnBvbGFudDtpZihudWxsIT09ZSl7Y29uc3QgYT1lLmV2YWx1YXRlKHQpWzBdO24qPWEsdD5lLnBhcmFtZXRlclBvc2l0aW9uc1sxXSYmKHRoaXMuc3RvcEZhZGluZygpLDA9PT1hJiYodGhpcy5lbmFibGVkPSExKSl9fXJldHVybiB0aGlzLl9lZmZlY3RpdmVXZWlnaHQ9bixufV91cGRhdGVUaW1lU2NhbGUodCl7bGV0IG49MDtpZighdGhpcy5wYXVzZWQpe249dGhpcy50aW1lU2NhbGU7Y29uc3QgZT10aGlzLl90aW1lU2NhbGVJbnRlcnBvbGFudDtudWxsIT09ZSYmKG4qPWUuZXZhbHVhdGUodClbMF0sdD5lLnBhcmFtZXRlclBvc2l0aW9uc1sxXSYmKHRoaXMuc3RvcFdhcnBpbmcoKSwwPT09bj90aGlzLnBhdXNlZD0hMDp0aGlzLnRpbWVTY2FsZT1uKSl9cmV0dXJuIHRoaXMuX2VmZmVjdGl2ZVRpbWVTY2FsZT1uLG59X3VwZGF0ZVRpbWUodCl7Y29uc3Qgbj10aGlzLl9jbGlwLmR1cmF0aW9uLGU9dGhpcy5sb29wO2xldCBhPXRoaXMudGltZSt0LG89dGhpcy5fbG9vcENvdW50O2NvbnN0IHI9MjIwMj09PWU7aWYoMD09PXQpcmV0dXJuLTE9PT1vP2E6ciYmMT09KDEmbyk/bi1hOmE7aWYoMjIwMD09PWUpey0xPT09byYmKHRoaXMuX2xvb3BDb3VudD0wLHRoaXMuX3NldEVuZGluZ3MoITAsITAsITEpKTt0OntpZihhPj1uKWE9bjtlbHNle2lmKCEoYTwwKSl7dGhpcy50aW1lPWE7YnJlYWsgdH1hPTB9dGhpcy5jbGFtcFdoZW5GaW5pc2hlZD90aGlzLnBhdXNlZD0hMDp0aGlzLmVuYWJsZWQ9ITEsdGhpcy50aW1lPWEsdGhpcy5fbWl4ZXIuZGlzcGF0Y2hFdmVudCh7dHlwZToiZmluaXNoZWQiLGFjdGlvbjp0aGlzLGRpcmVjdGlvbjp0PDA/LTE6MX0pfX1lbHNle2lmKC0xPT09byYmKHQ+PTA/KG89MCx0aGlzLl9zZXRFbmRpbmdzKCEwLDA9PT10aGlzLnJlcGV0aXRpb25zLHIpKTp0aGlzLl9zZXRFbmRpbmdzKDA9PT10aGlzLnJlcGV0aXRpb25zLCEwLHIpKSxhPj1ufHxhPDApe2NvbnN0IGU9TWF0aC5mbG9vcihhL24pO2EtPW4qZSxvKz1NYXRoLmFicyhlKTtjb25zdCBpPXRoaXMucmVwZXRpdGlvbnMtbztpZihpPD0wKXRoaXMuY2xhbXBXaGVuRmluaXNoZWQ/dGhpcy5wYXVzZWQ9ITA6dGhpcy5lbmFibGVkPSExLGE9dD4wP246MCx0aGlzLnRpbWU9YSx0aGlzLl9taXhlci5kaXNwYXRjaEV2ZW50KHt0eXBlOiJmaW5pc2hlZCIsYWN0aW9uOnRoaXMsZGlyZWN0aW9uOnQ+MD8xOi0xfSk7ZWxzZXtpZigxPT09aSl7Y29uc3Qgbj10PDA7dGhpcy5fc2V0RW5kaW5ncyhuLCFuLHIpfWVsc2UgdGhpcy5fc2V0RW5kaW5ncyghMSwhMSxyKTt0aGlzLl9sb29wQ291bnQ9byx0aGlzLnRpbWU9YSx0aGlzLl9taXhlci5kaXNwYXRjaEV2ZW50KHt0eXBlOiJsb29wIixhY3Rpb246dGhpcyxsb29wRGVsdGE6ZX0pfX1lbHNlIHRoaXMudGltZT1hO2lmKHImJjE9PSgxJm8pKXJldHVybiBuLWF9cmV0dXJuIGF9X3NldEVuZGluZ3ModCxuLGUpe2NvbnN0IGE9dGhpcy5faW50ZXJwb2xhbnRTZXR0aW5ncztlPyhhLmVuZGluZ1N0YXJ0PVQ5LGEuZW5kaW5nRW5kPVQ5KTooYS5lbmRpbmdTdGFydD10P3RoaXMuemVyb1Nsb3BlQXRTdGFydD9UOTpSOTpEOSxhLmVuZGluZ0VuZD1uP3RoaXMuemVyb1Nsb3BlQXRFbmQ/VDk6Ujk6RDkpfV9zY2hlZHVsZUZhZGluZyh0LG4sZSl7Y29uc3QgYT10aGlzLl9taXhlcixvPWEudGltZTtsZXQgcj10aGlzLl93ZWlnaHRJbnRlcnBvbGFudDtudWxsPT09ciYmKHI9YS5fbGVuZENvbnRyb2xJbnRlcnBvbGFudCgpLHRoaXMuX3dlaWdodEludGVycG9sYW50PXIpO2NvbnN0IGk9ci5wYXJhbWV0ZXJQb3NpdGlvbnMsYz1yLnNhbXBsZVZhbHVlcztyZXR1cm4gaVswXT1vLGNbMF09bixpWzFdPW8rdCxjWzFdPWUsdGhpc319ZnVuY3Rpb24gT3N0KHQpe3RoaXMuX3Jvb3Q9dCx0aGlzLl9pbml0TWVtb3J5TWFuYWdlcigpLHRoaXMuX2FjY3VJbmRleD0wLHRoaXMudGltZT0wLHRoaXMudGltZVNjYWxlPTF9T3N0LnByb3RvdHlwZT1PYmplY3QuYXNzaWduKE9iamVjdC5jcmVhdGUoQjkucHJvdG90eXBlKSx7Y29uc3RydWN0b3I6T3N0LF9iaW5kQWN0aW9uOmZ1bmN0aW9uKHQsbil7Y29uc3QgZT10Ll9sb2NhbFJvb3R8fHRoaXMuX3Jvb3QsYT10Ll9jbGlwLnRyYWNrcyxvPWEubGVuZ3RoLHI9dC5fcHJvcGVydHlCaW5kaW5ncyxpPXQuX2ludGVycG9sYW50cyxjPWUudXVpZCxzPXRoaXMuX2JpbmRpbmdzQnlSb290QW5kTmFtZTtsZXQgbD1zW2NdO3ZvaWQgMD09PWwmJihsPXt9LHNbY109bCk7Zm9yKGxldCB0PTA7dCE9PW87Kyt0KXtjb25zdCBvPWFbdF0scz1vLm5hbWU7bGV0IG09bFtzXTtpZih2b2lkIDAhPT1tKXJbdF09bTtlbHNle2lmKG09clt0XSx2b2lkIDAhPT1tKXtudWxsPT09bS5fY2FjaGVJbmRleCYmKCsrbS5yZWZlcmVuY2VDb3VudCx0aGlzLl9hZGRJbmFjdGl2ZUJpbmRpbmcobSxjLHMpKTtjb250aW51ZX1tPW5ldyBpc3QoX3N0LmNyZWF0ZShlLHMsbiYmbi5fcHJvcGVydHlCaW5kaW5nc1t0XS5iaW5kaW5nLnBhcnNlZFBhdGgpLG8uVmFsdWVUeXBlTmFtZSxvLmdldFZhbHVlU2l6ZSgpKSwrK20ucmVmZXJlbmNlQ291bnQsdGhpcy5fYWRkSW5hY3RpdmVCaW5kaW5nKG0sYyxzKSxyW3RdPW19aVt0XS5yZXN1bHRCdWZmZXI9bS5idWZmZXJ9fSxfYWN0aXZhdGVBY3Rpb246ZnVuY3Rpb24odCl7aWYoIXRoaXMuX2lzQWN0aXZlQWN0aW9uKHQpKXtpZihudWxsPT09dC5fY2FjaGVJbmRleCl7Y29uc3Qgbj0odC5fbG9jYWxSb290fHx0aGlzLl9yb290KS51dWlkLGU9dC5fY2xpcC51dWlkLGE9dGhpcy5fYWN0aW9uc0J5Q2xpcFtlXTt0aGlzLl9iaW5kQWN0aW9uKHQsYSYmYS5rbm93bkFjdGlvbnNbMF0pLHRoaXMuX2FkZEluYWN0aXZlQWN0aW9uKHQsZSxuKX1jb25zdCBuPXQuX3Byb3BlcnR5QmluZGluZ3M7Zm9yKGxldCB0PTAsZT1uLmxlbmd0aDt0IT09ZTsrK3Qpe2NvbnN0IGU9blt0XTswPT1lLnVzZUNvdW50KysmJih0aGlzLl9sZW5kQmluZGluZyhlKSxlLnNhdmVPcmlnaW5hbFN0YXRlKCkpfXRoaXMuX2xlbmRBY3Rpb24odCl9fSxfZGVhY3RpdmF0ZUFjdGlvbjpmdW5jdGlvbih0KXtpZih0aGlzLl9pc0FjdGl2ZUFjdGlvbih0KSl7Y29uc3Qgbj10Ll9wcm9wZXJ0eUJpbmRpbmdzO2ZvcihsZXQgdD0wLGU9bi5sZW5ndGg7dCE9PWU7Kyt0KXtjb25zdCBlPW5bdF07MD09LS1lLnVzZUNvdW50JiYoZS5yZXN0b3JlT3JpZ2luYWxTdGF0ZSgpLHRoaXMuX3Rha2VCYWNrQmluZGluZyhlKSl9dGhpcy5fdGFrZUJhY2tBY3Rpb24odCl9fSxfaW5pdE1lbW9yeU1hbmFnZXI6ZnVuY3Rpb24oKXt0aGlzLl9hY3Rpb25zPVtdLHRoaXMuX25BY3RpdmVBY3Rpb25zPTAsdGhpcy5fYWN0aW9uc0J5Q2xpcD17fSx0aGlzLl9iaW5kaW5ncz1bXSx0aGlzLl9uQWN0aXZlQmluZGluZ3M9MCx0aGlzLl9iaW5kaW5nc0J5Um9vdEFuZE5hbWU9e30sdGhpcy5fY29udHJvbEludGVycG9sYW50cz1bXSx0aGlzLl9uQWN0aXZlQ29udHJvbEludGVycG9sYW50cz0wO2NvbnN0IHQ9dGhpczt0aGlzLnN0YXRzPXthY3Rpb25zOntnZXQgdG90YWwoKXtyZXR1cm4gdC5fYWN0aW9ucy5sZW5ndGh9LGdldCBpblVzZSgpe3JldHVybiB0Ll9uQWN0aXZlQWN0aW9uc319LGJpbmRpbmdzOntnZXQgdG90YWwoKXtyZXR1cm4gdC5fYmluZGluZ3MubGVuZ3RofSxnZXQgaW5Vc2UoKXtyZXR1cm4gdC5fbkFjdGl2ZUJpbmRpbmdzfX0sY29udHJvbEludGVycG9sYW50czp7Z2V0IHRvdGFsKCl7cmV0dXJuIHQuX2NvbnRyb2xJbnRlcnBvbGFudHMubGVuZ3RofSxnZXQgaW5Vc2UoKXtyZXR1cm4gdC5fbkFjdGl2ZUNvbnRyb2xJbnRlcnBvbGFudHN9fX19LF9pc0FjdGl2ZUFjdGlvbjpmdW5jdGlvbih0KXtjb25zdCBuPXQuX2NhY2hlSW5kZXg7cmV0dXJuIG51bGwhPT1uJiZuPHRoaXMuX25BY3RpdmVBY3Rpb25zfSxfYWRkSW5hY3RpdmVBY3Rpb246ZnVuY3Rpb24odCxuLGUpe2NvbnN0IGE9dGhpcy5fYWN0aW9ucyxvPXRoaXMuX2FjdGlvbnNCeUNsaXA7bGV0IHI9b1tuXTtpZih2b2lkIDA9PT1yKXI9e2tub3duQWN0aW9uczpbdF0sYWN0aW9uQnlSb290Ont9fSx0Ll9ieUNsaXBDYWNoZUluZGV4PTAsb1tuXT1yO2Vsc2V7Y29uc3Qgbj1yLmtub3duQWN0aW9uczt0Ll9ieUNsaXBDYWNoZUluZGV4PW4ubGVuZ3RoLG4ucHVzaCh0KX10Ll9jYWNoZUluZGV4PWEubGVuZ3RoLGEucHVzaCh0KSxyLmFjdGlvbkJ5Um9vdFtlXT10fSxfcmVtb3ZlSW5hY3RpdmVBY3Rpb246ZnVuY3Rpb24odCl7Y29uc3Qgbj10aGlzLl9hY3Rpb25zLGU9bltuLmxlbmd0aC0xXSxhPXQuX2NhY2hlSW5kZXg7ZS5fY2FjaGVJbmRleD1hLG5bYV09ZSxuLnBvcCgpLHQuX2NhY2hlSW5kZXg9bnVsbDtjb25zdCBvPXQuX2NsaXAudXVpZCxyPXRoaXMuX2FjdGlvbnNCeUNsaXAsaT1yW29dLGM9aS5rbm93bkFjdGlvbnMscz1jW2MubGVuZ3RoLTFdLGw9dC5fYnlDbGlwQ2FjaGVJbmRleDtzLl9ieUNsaXBDYWNoZUluZGV4PWwsY1tsXT1zLGMucG9wKCksdC5fYnlDbGlwQ2FjaGVJbmRleD1udWxsLGRlbGV0ZSBpLmFjdGlvbkJ5Um9vdFsodC5fbG9jYWxSb290fHx0aGlzLl9yb290KS51dWlkXSwwPT09Yy5sZW5ndGgmJmRlbGV0ZSByW29dLHRoaXMuX3JlbW92ZUluYWN0aXZlQmluZGluZ3NGb3JBY3Rpb24odCl9LF9yZW1vdmVJbmFjdGl2ZUJpbmRpbmdzRm9yQWN0aW9uOmZ1bmN0aW9uKHQpe2NvbnN0IG49dC5fcHJvcGVydHlCaW5kaW5ncztmb3IobGV0IHQ9MCxlPW4ubGVuZ3RoO3QhPT1lOysrdCl7Y29uc3QgZT1uW3RdOzA9PS0tZS5yZWZlcmVuY2VDb3VudCYmdGhpcy5fcmVtb3ZlSW5hY3RpdmVCaW5kaW5nKGUpfX0sX2xlbmRBY3Rpb246ZnVuY3Rpb24odCl7Y29uc3Qgbj10aGlzLl9hY3Rpb25zLGU9dC5fY2FjaGVJbmRleCxhPXRoaXMuX25BY3RpdmVBY3Rpb25zKyssbz1uW2FdO3QuX2NhY2hlSW5kZXg9YSxuW2FdPXQsby5fY2FjaGVJbmRleD1lLG5bZV09b30sX3Rha2VCYWNrQWN0aW9uOmZ1bmN0aW9uKHQpe2NvbnN0IG49dGhpcy5fYWN0aW9ucyxlPXQuX2NhY2hlSW5kZXgsYT0tLXRoaXMuX25BY3RpdmVBY3Rpb25zLG89blthXTt0Ll9jYWNoZUluZGV4PWEsblthXT10LG8uX2NhY2hlSW5kZXg9ZSxuW2VdPW99LF9hZGRJbmFjdGl2ZUJpbmRpbmc6ZnVuY3Rpb24odCxuLGUpe2NvbnN0IGE9dGhpcy5fYmluZGluZ3NCeVJvb3RBbmROYW1lLG89dGhpcy5fYmluZGluZ3M7bGV0IHI9YVtuXTt2b2lkIDA9PT1yJiYocj17fSxhW25dPXIpLHJbZV09dCx0Ll9jYWNoZUluZGV4PW8ubGVuZ3RoLG8ucHVzaCh0KX0sX3JlbW92ZUluYWN0aXZlQmluZGluZzpmdW5jdGlvbih0KXtjb25zdCBuPXRoaXMuX2JpbmRpbmdzLGU9dC5iaW5kaW5nLGE9ZS5yb290Tm9kZS51dWlkLG89ZS5wYXRoLHI9dGhpcy5fYmluZGluZ3NCeVJvb3RBbmROYW1lLGk9clthXSxjPW5bbi5sZW5ndGgtMV0scz10Ll9jYWNoZUluZGV4O2MuX2NhY2hlSW5kZXg9cyxuW3NdPWMsbi5wb3AoKSxkZWxldGUgaVtvXSwwPT09T2JqZWN0LmtleXMoaSkubGVuZ3RoJiZkZWxldGUgclthXX0sX2xlbmRCaW5kaW5nOmZ1bmN0aW9uKHQpe2NvbnN0IG49dGhpcy5fYmluZGluZ3MsZT10Ll9jYWNoZUluZGV4LGE9dGhpcy5fbkFjdGl2ZUJpbmRpbmdzKyssbz1uW2FdO3QuX2NhY2hlSW5kZXg9YSxuW2FdPXQsby5fY2FjaGVJbmRleD1lLG5bZV09b30sX3Rha2VCYWNrQmluZGluZzpmdW5jdGlvbih0KXtjb25zdCBuPXRoaXMuX2JpbmRpbmdzLGU9dC5fY2FjaGVJbmRleCxhPS0tdGhpcy5fbkFjdGl2ZUJpbmRpbmdzLG89blthXTt0Ll9jYWNoZUluZGV4PWEsblthXT10LG8uX2NhY2hlSW5kZXg9ZSxuW2VdPW99LF9sZW5kQ29udHJvbEludGVycG9sYW50OmZ1bmN0aW9uKCl7Y29uc3QgdD10aGlzLl9jb250cm9sSW50ZXJwb2xhbnRzLG49dGhpcy5fbkFjdGl2ZUNvbnRyb2xJbnRlcnBvbGFudHMrKztsZXQgZT10W25dO3JldHVybiB2b2lkIDA9PT1lJiYoZT1uZXcgTGl0KG5ldyBGbG9hdDMyQXJyYXkoMiksbmV3IEZsb2F0MzJBcnJheSgyKSwxLHRoaXMuX2NvbnRyb2xJbnRlcnBvbGFudHNSZXN1bHRCdWZmZXIpLGUuX19jYWNoZUluZGV4PW4sdFtuXT1lKSxlfSxfdGFrZUJhY2tDb250cm9sSW50ZXJwb2xhbnQ6ZnVuY3Rpb24odCl7Y29uc3Qgbj10aGlzLl9jb250cm9sSW50ZXJwb2xhbnRzLGU9dC5fX2NhY2hlSW5kZXgsYT0tLXRoaXMuX25BY3RpdmVDb250cm9sSW50ZXJwb2xhbnRzLG89blthXTt0Ll9fY2FjaGVJbmRleD1hLG5bYV09dCxvLl9fY2FjaGVJbmRleD1lLG5bZV09b30sX2NvbnRyb2xJbnRlcnBvbGFudHNSZXN1bHRCdWZmZXI6bmV3IEZsb2F0MzJBcnJheSgxKSxjbGlwQWN0aW9uOmZ1bmN0aW9uKHQsbixlKXtjb25zdCBhPW58fHRoaXMuX3Jvb3Qsbz1hLnV1aWQ7bGV0IHI9InN0cmluZyI9PXR5cGVvZiB0P1ppdC5maW5kQnlOYW1lKGEsdCk6dDtjb25zdCBpPW51bGwhPT1yP3IudXVpZDp0LGM9dGhpcy5fYWN0aW9uc0J5Q2xpcFtpXTtsZXQgcz1udWxsO2lmKHZvaWQgMD09PWUmJihlPW51bGwhPT1yP3IuYmxlbmRNb2RlOjI1MDApLHZvaWQgMCE9PWMpe2NvbnN0IHQ9Yy5hY3Rpb25CeVJvb3Rbb107aWYodm9pZCAwIT09dCYmdC5ibGVuZE1vZGU9PT1lKXJldHVybiB0O3M9Yy5rbm93bkFjdGlvbnNbMF0sbnVsbD09PXImJihyPXMuX2NsaXApfWlmKG51bGw9PT1yKXJldHVybiBudWxsO2NvbnN0IGw9bmV3IE1zdCh0aGlzLHIsbixlKTtyZXR1cm4gdGhpcy5fYmluZEFjdGlvbihsLHMpLHRoaXMuX2FkZEluYWN0aXZlQWN0aW9uKGwsaSxvKSxsfSxleGlzdGluZ0FjdGlvbjpmdW5jdGlvbih0LG4pe2NvbnN0IGU9bnx8dGhpcy5fcm9vdCxhPWUudXVpZCxvPSJzdHJpbmciPT10eXBlb2YgdD9aaXQuZmluZEJ5TmFtZShlLHQpOnQscj10aGlzLl9hY3Rpb25zQnlDbGlwW28/by51dWlkOnRdO3JldHVybiB2b2lkIDAhPT1yJiZyLmFjdGlvbkJ5Um9vdFthXXx8bnVsbH0sc3RvcEFsbEFjdGlvbjpmdW5jdGlvbigpe2NvbnN0IHQ9dGhpcy5fYWN0aW9ucztmb3IobGV0IG49dGhpcy5fbkFjdGl2ZUFjdGlvbnMtMTtuPj0wOy0tbil0W25dLnN0b3AoKTtyZXR1cm4gdGhpc30sdXBkYXRlOmZ1bmN0aW9uKHQpe2NvbnN0IG49dGhpcy5fYWN0aW9ucyxlPXRoaXMuX25BY3RpdmVBY3Rpb25zLGE9dGhpcy50aW1lKz10Kj10aGlzLnRpbWVTY2FsZSxvPU1hdGguc2lnbih0KSxyPXRoaXMuX2FjY3VJbmRleF49MTtmb3IobGV0IGk9MDtpIT09ZTsrK2kpbltpXS5fdXBkYXRlKGEsdCxvLHIpO2NvbnN0IGk9dGhpcy5fYmluZGluZ3MsYz10aGlzLl9uQWN0aXZlQmluZGluZ3M7Zm9yKGxldCB0PTA7dCE9PWM7Kyt0KWlbdF0uYXBwbHkocik7cmV0dXJuIHRoaXN9LHNldFRpbWU6ZnVuY3Rpb24odCl7dGhpcy50aW1lPTA7Zm9yKGxldCB0PTA7dDx0aGlzLl9hY3Rpb25zLmxlbmd0aDt0KyspdGhpcy5fYWN0aW9uc1t0XS50aW1lPTA7cmV0dXJuIHRoaXMudXBkYXRlKHQpfSxnZXRSb290OmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuX3Jvb3R9LHVuY2FjaGVDbGlwOmZ1bmN0aW9uKHQpe2NvbnN0IG49dGhpcy5fYWN0aW9ucyxlPXQudXVpZCxhPXRoaXMuX2FjdGlvbnNCeUNsaXAsbz1hW2VdO2lmKHZvaWQgMCE9PW8pe2NvbnN0IHQ9by5rbm93bkFjdGlvbnM7Zm9yKGxldCBlPTAsYT10Lmxlbmd0aDtlIT09YTsrK2Upe2NvbnN0IGE9dFtlXTt0aGlzLl9kZWFjdGl2YXRlQWN0aW9uKGEpO2NvbnN0IG89YS5fY2FjaGVJbmRleCxyPW5bbi5sZW5ndGgtMV07YS5fY2FjaGVJbmRleD1udWxsLGEuX2J5Q2xpcENhY2hlSW5kZXg9bnVsbCxyLl9jYWNoZUluZGV4PW8sbltvXT1yLG4ucG9wKCksdGhpcy5fcmVtb3ZlSW5hY3RpdmVCaW5kaW5nc0ZvckFjdGlvbihhKX1kZWxldGUgYVtlXX19LHVuY2FjaGVSb290OmZ1bmN0aW9uKHQpe2NvbnN0IG49dC51dWlkLGU9dGhpcy5fYWN0aW9uc0J5Q2xpcDtmb3IoY29uc3QgdCBpbiBlKXtjb25zdCBhPWVbdF0uYWN0aW9uQnlSb290W25dO3ZvaWQgMCE9PWEmJih0aGlzLl9kZWFjdGl2YXRlQWN0aW9uKGEpLHRoaXMuX3JlbW92ZUluYWN0aXZlQWN0aW9uKGEpKX1jb25zdCBhPXRoaXMuX2JpbmRpbmdzQnlSb290QW5kTmFtZVtuXTtpZih2b2lkIDAhPT1hKWZvcihjb25zdCB0IGluIGEpe2NvbnN0IG49YVt0XTtuLnJlc3RvcmVPcmlnaW5hbFN0YXRlKCksdGhpcy5fcmVtb3ZlSW5hY3RpdmVCaW5kaW5nKG4pfX0sdW5jYWNoZUFjdGlvbjpmdW5jdGlvbih0LG4pe2NvbnN0IGU9dGhpcy5leGlzdGluZ0FjdGlvbih0LG4pO251bGwhPT1lJiYodGhpcy5fZGVhY3RpdmF0ZUFjdGlvbihlKSx0aGlzLl9yZW1vdmVJbmFjdGl2ZUFjdGlvbihlKSl9fSk7Y2xhc3MgUHN0e2NvbnN0cnVjdG9yKHQpeyJzdHJpbmciPT10eXBlb2YgdCYmKGNvbnNvbGUud2FybigiVEhSRUUuVW5pZm9ybTogVHlwZSBwYXJhbWV0ZXIgaXMgbm8gbG9uZ2VyIG5lZWRlZC4iKSx0PWFyZ3VtZW50c1sxXSksdGhpcy52YWx1ZT10fWNsb25lKCl7cmV0dXJuIG5ldyBQc3Qodm9pZCAwPT09dGhpcy52YWx1ZS5jbG9uZT90aGlzLnZhbHVlOnRoaXMudmFsdWUuY2xvbmUoKSl9fWZ1bmN0aW9uIHhzdCh0LG4sZSl7Vm90LmNhbGwodGhpcyx0LG4pLHRoaXMubWVzaFBlckF0dHJpYnV0ZT1lfHwxfWZ1bmN0aW9uIHlzdCh0LG4sZSxhLG8pe3RoaXMuYnVmZmVyPXQsdGhpcy50eXBlPW4sdGhpcy5pdGVtU2l6ZT1lLHRoaXMuZWxlbWVudFNpemU9YSx0aGlzLmNvdW50PW8sdGhpcy52ZXJzaW9uPTB9ZnVuY3Rpb24ga3N0KHQsbixlLGEpe3RoaXMucmF5PW5ldyB3dHQodCxuKSx0aGlzLm5lYXI9ZXx8MCx0aGlzLmZhcj1hfHwxLzAsdGhpcy5jYW1lcmE9bnVsbCx0aGlzLmxheWVycz1uZXcgSHR0LHRoaXMucGFyYW1zPXtNZXNoOnt9LExpbmU6e3RocmVzaG9sZDoxfSxMT0Q6e30sUG9pbnRzOnt0aHJlc2hvbGQ6MX0sU3ByaXRlOnt9fSxPYmplY3QuZGVmaW5lUHJvcGVydGllcyh0aGlzLnBhcmFtcyx7UG9pbnRDbG91ZDp7Z2V0OmZ1bmN0aW9uKCl7cmV0dXJuIGNvbnNvbGUud2FybigiVEhSRUUuUmF5Y2FzdGVyOiBwYXJhbXMuUG9pbnRDbG91ZCBoYXMgYmVlbiByZW5hbWVkIHRvIHBhcmFtcy5Qb2ludHMuIiksdGhpcy5Qb2ludHN9fX0pfWZ1bmN0aW9uIHZzdCh0LG4pe3JldHVybiB0LmRpc3RhbmNlLW4uZGlzdGFuY2V9ZnVuY3Rpb24gd3N0KHQsbixlLGEpe2lmKHQubGF5ZXJzLnRlc3Qobi5sYXllcnMpJiZ0LnJheWNhc3QobixlKSwhMD09PWEpe2NvbnN0IGE9dC5jaGlsZHJlbjtmb3IobGV0IHQ9MCxvPWEubGVuZ3RoO3Q8bzt0Kyspd3N0KGFbdF0sbixlLCEwKX19eHN0LnByb3RvdHlwZT1PYmplY3QuYXNzaWduKE9iamVjdC5jcmVhdGUoVm90LnByb3RvdHlwZSkse2NvbnN0cnVjdG9yOnhzdCxpc0luc3RhbmNlZEludGVybGVhdmVkQnVmZmVyOiEwLGNvcHk6ZnVuY3Rpb24odCl7cmV0dXJuIFZvdC5wcm90b3R5cGUuY29weS5jYWxsKHRoaXMsdCksdGhpcy5tZXNoUGVyQXR0cmlidXRlPXQubWVzaFBlckF0dHJpYnV0ZSx0aGlzfSxjbG9uZTpmdW5jdGlvbih0KXtjb25zdCBuPVZvdC5wcm90b3R5cGUuY2xvbmUuY2FsbCh0aGlzLHQpO3JldHVybiBuLm1lc2hQZXJBdHRyaWJ1dGU9dGhpcy5tZXNoUGVyQXR0cmlidXRlLG59LHRvSlNPTjpmdW5jdGlvbih0KXtjb25zdCBuPVZvdC5wcm90b3R5cGUudG9KU09OLmNhbGwodGhpcyx0KTtyZXR1cm4gbi5pc0luc3RhbmNlZEludGVybGVhdmVkQnVmZmVyPSEwLG4ubWVzaFBlckF0dHJpYnV0ZT10aGlzLm1lc2hQZXJBdHRyaWJ1dGUsbn19KSxPYmplY3QuZGVmaW5lUHJvcGVydHkoeXN0LnByb3RvdHlwZSwibmVlZHNVcGRhdGUiLHtzZXQ6ZnVuY3Rpb24odCl7ITA9PT10JiZ0aGlzLnZlcnNpb24rK319KSxPYmplY3QuYXNzaWduKHlzdC5wcm90b3R5cGUse2lzR0xCdWZmZXJBdHRyaWJ1dGU6ITAsc2V0QnVmZmVyOmZ1bmN0aW9uKHQpe3JldHVybiB0aGlzLmJ1ZmZlcj10LHRoaXN9LHNldFR5cGU6ZnVuY3Rpb24odCxuKXtyZXR1cm4gdGhpcy50eXBlPXQsdGhpcy5lbGVtZW50U2l6ZT1uLHRoaXN9LHNldEl0ZW1TaXplOmZ1bmN0aW9uKHQpe3JldHVybiB0aGlzLml0ZW1TaXplPXQsdGhpc30sc2V0Q291bnQ6ZnVuY3Rpb24odCl7cmV0dXJuIHRoaXMuY291bnQ9dCx0aGlzfX0pLE9iamVjdC5hc3NpZ24oa3N0LnByb3RvdHlwZSx7c2V0OmZ1bmN0aW9uKHQsbil7dGhpcy5yYXkuc2V0KHQsbil9LHNldEZyb21DYW1lcmE6ZnVuY3Rpb24odCxuKXtuJiZuLmlzUGVyc3BlY3RpdmVDYW1lcmE/KHRoaXMucmF5Lm9yaWdpbi5zZXRGcm9tTWF0cml4UG9zaXRpb24obi5tYXRyaXhXb3JsZCksdGhpcy5yYXkuZGlyZWN0aW9uLnNldCh0LngsdC55LC41KS51bnByb2plY3Qobikuc3ViKHRoaXMucmF5Lm9yaWdpbikubm9ybWFsaXplKCksdGhpcy5jYW1lcmE9bik6biYmbi5pc09ydGhvZ3JhcGhpY0NhbWVyYT8odGhpcy5yYXkub3JpZ2luLnNldCh0LngsdC55LChuLm5lYXIrbi5mYXIpLyhuLm5lYXItbi5mYXIpKS51bnByb2plY3QobiksdGhpcy5yYXkuZGlyZWN0aW9uLnNldCgwLDAsLTEpLnRyYW5zZm9ybURpcmVjdGlvbihuLm1hdHJpeFdvcmxkKSx0aGlzLmNhbWVyYT1uKTpjb25zb2xlLmVycm9yKCJUSFJFRS5SYXljYXN0ZXI6IFVuc3VwcG9ydGVkIGNhbWVyYSB0eXBlOiAiK24udHlwZSl9LGludGVyc2VjdE9iamVjdDpmdW5jdGlvbih0LG4sZSl7Y29uc3QgYT1lfHxbXTtyZXR1cm4gd3N0KHQsdGhpcyxhLG4pLGEuc29ydCh2c3QpLGF9LGludGVyc2VjdE9iamVjdHM6ZnVuY3Rpb24odCxuLGUpe2NvbnN0IGE9ZXx8W107aWYoITE9PT1BcnJheS5pc0FycmF5KHQpKXJldHVybiBjb25zb2xlLndhcm4oIlRIUkVFLlJheWNhc3Rlci5pbnRlcnNlY3RPYmplY3RzOiBvYmplY3RzIGlzIG5vdCBhbiBBcnJheS4iKSxhO2ZvcihsZXQgZT0wLG89dC5sZW5ndGg7ZTxvO2UrKyl3c3QodFtlXSx0aGlzLGEsbik7cmV0dXJuIGEuc29ydCh2c3QpLGF9fSk7Y29uc3QgU3N0PW5ldyBXOTtmdW5jdGlvbiBFc3QodCl7JHR0LmNhbGwodGhpcyksdGhpcy5tYXRlcmlhbD10LHRoaXMucmVuZGVyPWZ1bmN0aW9uKCl7fSx0aGlzLmhhc1Bvc2l0aW9ucz0hMSx0aGlzLmhhc05vcm1hbHM9ITEsdGhpcy5oYXNDb2xvcnM9ITEsdGhpcy5oYXNVdnM9ITEsdGhpcy5wb3NpdGlvbkFycmF5PW51bGwsdGhpcy5ub3JtYWxBcnJheT1udWxsLHRoaXMuY29sb3JBcnJheT1udWxsLHRoaXMudXZBcnJheT1udWxsLHRoaXMuY291bnQ9MH0oRXN0LnByb3RvdHlwZT1PYmplY3QuY3JlYXRlKCR0dC5wcm90b3R5cGUpKS5jb25zdHJ1Y3Rvcj1Fc3QsRXN0LnByb3RvdHlwZS5pc0ltbWVkaWF0ZVJlbmRlck9iamVjdD0hMDtjb25zdCBBc3Q9bmV3IGtudCh7c2lkZToxLGRlcHRoV3JpdGU6ITEsZGVwdGhUZXN0OiExfSk7ZnVuY3Rpb24genN0KHQpe2NvbnNvbGUud2FybigiVEhSRUUuU3BsaW5lIGhhcyBiZWVuIHJlbW92ZWQuIFVzZSBUSFJFRS5DYXRtdWxsUm9tQ3VydmUzIGluc3RlYWQuIiksZmN0LmNhbGwodGhpcyx0KSx0aGlzLnR5cGU9ImNhdG11bGxyb20ifWZ1bmN0aW9uIFJzdCh0LG4pe2lmKDE9PT1uKXJldHVybiBuZXcgT250KHQpO2NvbnN0IGU9bjUodCk7aWYoIWUpdGhyb3cgbmV3IEVycm9yKGBkMyBmYWlsZWQgdG8gcmVjb2duaXplIHRoZSBjb2xvcjogJHt0fWApO3JldHVybiBuZXcgT250KE41KGUsIiNmZmYiKSgxLW4pKX12YXIgVHN0LERzdCxJc3QsTnN0LEZzdDtmdW5jdGlvbiBMc3QodCxuKXtjb25zdCBlPW4ubGVuZ3RoLzI7bGV0IGE9dC5hdHRyaWJ1dGVzLnBvc2l0aW9uO2EmJmEuY291bnQ9PT0zKmV8fChhPW5ldyBTbnQobmV3IEZsb2F0MzJBcnJheSgzKmUpLDMpLHQuYWRkQXR0cmlidXRlKCJwb3NpdGlvbiIsYSkpO2NvbnN0IG89YS5hcnJheTtmb3IobGV0IHQ9MDt0PGU7dCsrKW9bMyp0XT1uWzIqdF0sb1szKnQrMV09blsyKnQrMV07YS5uZWVkc1VwZGF0ZT0hMCx0LnNldERyYXdSYW5nZSgwLDMqZSksdC5jb21wdXRlQm91bmRpbmdTcGhlcmUoKX1mdW5jdGlvbiBIc3QodCxuLGUpe2NvbnN0IGE9TWF0aC5tYXgobi5sZW5ndGgvMi0xLDApLG89MiphKjMscj0zKm87bGV0IGk9dC5hdHRyaWJ1dGVzLnBvc2l0aW9uO2kmJmkuY291bnQ9PT1vfHwoaT1uZXcgU250KG5ldyBGbG9hdDMyQXJyYXkociksMyksdC5hZGRBdHRyaWJ1dGUoInBvc2l0aW9uIixpKSk7Y29uc3QgYz1pLmFycmF5O2ZvcihsZXQgdD0wO3Q8YTt0Kyspe2NvbnN0W2EsbyxyLGldPVtuWzIqdF0sblsyKnQrMV0sblsyKnQrMl0sblsyKnQrM11dLHM9bmV3IFc5KGEsbyksbD1uZXcgVzkocixpKSxtPW5ldyBXOShyLWEsaS1vKSxkPW5ldyBXOSgtbS55LG0ueCkuc2V0TGVuZ3RoKGUvMiksZz1zLmNsb25lKCkuYWRkKGQpLHA9cy5jbG9uZSgpLnN1YihkKSxiPWwuY2xvbmUoKS5hZGQoZCksdT1sLmNsb25lKCkuc3ViKGQpLGY9W2cueCxnLnksMCxwLngscC55LDAsYi54LGIueSwwLGIueCxiLnksMCxwLngscC55LDAsdS54LHUueSwwXTtjLnNldChmLHQqZi5sZW5ndGgpfWkubmVlZHNVcGRhdGU9ITAsdC5zZXREcmF3UmFuZ2UoMCxyKSx0LmNvbXB1dGVCb3VuZGluZ1NwaGVyZSgpfWZ1bmN0aW9uIEJzdCh0LG4sZSl7Y29uc3R7dmlzaWJsZTphLGNvbG9yOm8sb3BhY2l0eTpyfT1lO2lmKEFycmF5LmlzQXJyYXkodC5tYXRlcmlhbCkpdGhyb3cgbmV3IEVycm9yKCJJbnZhcmlhbnQgZXJyb3I6IG9ubHkgZXhwZWN0IG9uZSBtYXRlcmlhbCBvbiBhbiBvYmplY3QiKTtjb25zdCBpPXQubWF0ZXJpYWw7aWYoaS52aXNpYmxlIT09YSYmKGkudmlzaWJsZT1hLGkubmVlZHNVcGRhdGU9ITApLCFhKXJldHVybiExO2NvbnN0IGM9UnN0KG8sbnVsbCE9cj9yOjEpLHM9bih0Lmdlb21ldHJ5KTtyZXR1cm4gdC5nZW9tZXRyeSE9PXMmJih0Lmdlb21ldHJ5PXMpLGkuY29sb3IuZXF1YWxzKGMpfHwoaS5jb2xvci5zZXQoYyksaS5uZWVkc1VwZGF0ZT0hMCksITB9bmV3IGJldChuZXcgZmV0LEFzdCksc2N0LmNyZWF0ZT1mdW5jdGlvbih0LG4pe3JldHVybiBjb25zb2xlLmxvZygiVEhSRUUuQ3VydmUuY3JlYXRlKCkgaGFzIGJlZW4gZGVwcmVjYXRlZCIpLHQucHJvdG90eXBlPU9iamVjdC5jcmVhdGUoc2N0LnByb3RvdHlwZSksdC5wcm90b3R5cGUuY29uc3RydWN0b3I9dCx0LnByb3RvdHlwZS5nZXRQb2ludD1uLHR9LE9iamVjdC5hc3NpZ24oRWN0LnByb3RvdHlwZSx7ZnJvbVBvaW50czpmdW5jdGlvbih0KXtyZXR1cm4gY29uc29sZS53YXJuKCJUSFJFRS5QYXRoOiAuZnJvbVBvaW50cygpIGhhcyBiZWVuIHJlbmFtZWQgdG8gLnNldEZyb21Qb2ludHMoKS4iKSx0aGlzLnNldEZyb21Qb2ludHModCl9fSksenN0LnByb3RvdHlwZT1PYmplY3QuY3JlYXRlKGZjdC5wcm90b3R5cGUpLE9iamVjdC5hc3NpZ24oenN0LnByb3RvdHlwZSx7aW5pdEZyb21BcnJheTpmdW5jdGlvbigpe2NvbnNvbGUuZXJyb3IoIlRIUkVFLlNwbGluZTogLmluaXRGcm9tQXJyYXkoKSBoYXMgYmVlbiByZW1vdmVkLiIpfSxnZXRDb250cm9sUG9pbnRzQXJyYXk6ZnVuY3Rpb24oKXtjb25zb2xlLmVycm9yKCJUSFJFRS5TcGxpbmU6IC5nZXRDb250cm9sUG9pbnRzQXJyYXkoKSBoYXMgYmVlbiByZW1vdmVkLiIpfSxyZXBhcmFtZXRyaXplQnlBcmNMZW5ndGg6ZnVuY3Rpb24oKXtjb25zb2xlLmVycm9yKCJUSFJFRS5TcGxpbmU6IC5yZXBhcmFtZXRyaXplQnlBcmNMZW5ndGgoKSBoYXMgYmVlbiByZW1vdmVkLiIpfX0pLE9iamVjdC5hc3NpZ24oJGl0LnByb3RvdHlwZSx7ZXh0cmFjdFVybEJhc2U6ZnVuY3Rpb24odCl7cmV0dXJuIGNvbnNvbGUud2FybigiVEhSRUUuTG9hZGVyOiAuZXh0cmFjdFVybEJhc2UoKSBoYXMgYmVlbiBkZXByZWNhdGVkLiBVc2UgVEhSRUUuTG9hZGVyVXRpbHMuZXh0cmFjdFVybEJhc2UoKSBpbnN0ZWFkLiIpLChmdW5jdGlvbih0KXtjb25zdCBuPXQubGFzdEluZGV4T2YoIi8iKTtyZXR1cm4tMT09PW4/Ii4vIjp0LnN1YnN0cigwLG4rMSl9KSh0KX19KSwkaXQuSGFuZGxlcnM9e2FkZDpmdW5jdGlvbigpe2NvbnNvbGUuZXJyb3IoIlRIUkVFLkxvYWRlcjogSGFuZGxlcnMuYWRkKCkgaGFzIGJlZW4gcmVtb3ZlZC4gVXNlIExvYWRpbmdNYW5hZ2VyLmFkZEhhbmRsZXIoKSBpbnN0ZWFkLiIpfSxnZXQ6ZnVuY3Rpb24oKXtjb25zb2xlLmVycm9yKCJUSFJFRS5Mb2FkZXI6IEhhbmRsZXJzLmdldCgpIGhhcyBiZWVuIHJlbW92ZWQuIFVzZSBMb2FkaW5nTWFuYWdlci5nZXRIYW5kbGVyKCkgaW5zdGVhZC4iKX19LE9iamVjdC5hc3NpZ24oY2xhc3N7Y29uc3RydWN0b3IodCxuKXtPYmplY3QuZGVmaW5lUHJvcGVydHkodGhpcywiaXNCb3gyIix7dmFsdWU6ITB9KSx0aGlzLm1pbj12b2lkIDAhPT10P3Q6bmV3IFc5KDEvMCwxLzApLHRoaXMubWF4PXZvaWQgMCE9PW4/bjpuZXcgVzkoLTEvMCwtMS8wKX1zZXQodCxuKXtyZXR1cm4gdGhpcy5taW4uY29weSh0KSx0aGlzLm1heC5jb3B5KG4pLHRoaXN9c2V0RnJvbVBvaW50cyh0KXt0aGlzLm1ha2VFbXB0eSgpO2ZvcihsZXQgbj0wLGU9dC5sZW5ndGg7bjxlO24rKyl0aGlzLmV4cGFuZEJ5UG9pbnQodFtuXSk7cmV0dXJuIHRoaXN9c2V0RnJvbUNlbnRlckFuZFNpemUodCxuKXtjb25zdCBlPVNzdC5jb3B5KG4pLm11bHRpcGx5U2NhbGFyKC41KTtyZXR1cm4gdGhpcy5taW4uY29weSh0KS5zdWIoZSksdGhpcy5tYXguY29weSh0KS5hZGQoZSksdGhpc31jbG9uZSgpe3JldHVybihuZXcgdGhpcy5jb25zdHJ1Y3RvcikuY29weSh0aGlzKX1jb3B5KHQpe3JldHVybiB0aGlzLm1pbi5jb3B5KHQubWluKSx0aGlzLm1heC5jb3B5KHQubWF4KSx0aGlzfW1ha2VFbXB0eSgpe3JldHVybiB0aGlzLm1pbi54PXRoaXMubWluLnk9MS8wLHRoaXMubWF4Lng9dGhpcy5tYXgueT0tMS8wLHRoaXN9aXNFbXB0eSgpe3JldHVybiB0aGlzLm1heC54PHRoaXMubWluLnh8fHRoaXMubWF4Lnk8dGhpcy5taW4ueX1nZXRDZW50ZXIodCl7cmV0dXJuIHZvaWQgMD09PXQmJihjb25zb2xlLndhcm4oIlRIUkVFLkJveDI6IC5nZXRDZW50ZXIoKSB0YXJnZXQgaXMgbm93IHJlcXVpcmVkIiksdD1uZXcgVzkpLHRoaXMuaXNFbXB0eSgpP3Quc2V0KDAsMCk6dC5hZGRWZWN0b3JzKHRoaXMubWluLHRoaXMubWF4KS5tdWx0aXBseVNjYWxhciguNSl9Z2V0U2l6ZSh0KXtyZXR1cm4gdm9pZCAwPT09dCYmKGNvbnNvbGUud2FybigiVEhSRUUuQm94MjogLmdldFNpemUoKSB0YXJnZXQgaXMgbm93IHJlcXVpcmVkIiksdD1uZXcgVzkpLHRoaXMuaXNFbXB0eSgpP3Quc2V0KDAsMCk6dC5zdWJWZWN0b3JzKHRoaXMubWF4LHRoaXMubWluKX1leHBhbmRCeVBvaW50KHQpe3JldHVybiB0aGlzLm1pbi5taW4odCksdGhpcy5tYXgubWF4KHQpLHRoaXN9ZXhwYW5kQnlWZWN0b3IodCl7cmV0dXJuIHRoaXMubWluLnN1Yih0KSx0aGlzLm1heC5hZGQodCksdGhpc31leHBhbmRCeVNjYWxhcih0KXtyZXR1cm4gdGhpcy5taW4uYWRkU2NhbGFyKC10KSx0aGlzLm1heC5hZGRTY2FsYXIodCksdGhpc31jb250YWluc1BvaW50KHQpe3JldHVybiEodC54PHRoaXMubWluLnh8fHQueD50aGlzLm1heC54fHx0Lnk8dGhpcy5taW4ueXx8dC55PnRoaXMubWF4LnkpfWNvbnRhaW5zQm94KHQpe3JldHVybiB0aGlzLm1pbi54PD10Lm1pbi54JiZ0Lm1heC54PD10aGlzLm1heC54JiZ0aGlzLm1pbi55PD10Lm1pbi55JiZ0Lm1heC55PD10aGlzLm1heC55fWdldFBhcmFtZXRlcih0LG4pe3JldHVybiB2b2lkIDA9PT1uJiYoY29uc29sZS53YXJuKCJUSFJFRS5Cb3gyOiAuZ2V0UGFyYW1ldGVyKCkgdGFyZ2V0IGlzIG5vdyByZXF1aXJlZCIpLG49bmV3IFc5KSxuLnNldCgodC54LXRoaXMubWluLngpLyh0aGlzLm1heC54LXRoaXMubWluLngpLCh0LnktdGhpcy5taW4ueSkvKHRoaXMubWF4LnktdGhpcy5taW4ueSkpfWludGVyc2VjdHNCb3godCl7cmV0dXJuISh0Lm1heC54PHRoaXMubWluLnh8fHQubWluLng+dGhpcy5tYXgueHx8dC5tYXgueTx0aGlzLm1pbi55fHx0Lm1pbi55PnRoaXMubWF4LnkpfWNsYW1wUG9pbnQodCxuKXtyZXR1cm4gdm9pZCAwPT09biYmKGNvbnNvbGUud2FybigiVEhSRUUuQm94MjogLmNsYW1wUG9pbnQoKSB0YXJnZXQgaXMgbm93IHJlcXVpcmVkIiksbj1uZXcgVzkpLG4uY29weSh0KS5jbGFtcCh0aGlzLm1pbix0aGlzLm1heCl9ZGlzdGFuY2VUb1BvaW50KHQpe3JldHVybiBTc3QuY29weSh0KS5jbGFtcCh0aGlzLm1pbix0aGlzLm1heCkuc3ViKHQpLmxlbmd0aCgpfWludGVyc2VjdCh0KXtyZXR1cm4gdGhpcy5taW4ubWF4KHQubWluKSx0aGlzLm1heC5taW4odC5tYXgpLHRoaXN9dW5pb24odCl7cmV0dXJuIHRoaXMubWluLm1pbih0Lm1pbiksdGhpcy5tYXgubWF4KHQubWF4KSx0aGlzfXRyYW5zbGF0ZSh0KXtyZXR1cm4gdGhpcy5taW4uYWRkKHQpLHRoaXMubWF4LmFkZCh0KSx0aGlzfWVxdWFscyh0KXtyZXR1cm4gdC5taW4uZXF1YWxzKHRoaXMubWluKSYmdC5tYXguZXF1YWxzKHRoaXMubWF4KX19LnByb3RvdHlwZSx7Y2VudGVyOmZ1bmN0aW9uKHQpe3JldHVybiBjb25zb2xlLndhcm4oIlRIUkVFLkJveDI6IC5jZW50ZXIoKSBoYXMgYmVlbiByZW5hbWVkIHRvIC5nZXRDZW50ZXIoKS4iKSx0aGlzLmdldENlbnRlcih0KX0sZW1wdHk6ZnVuY3Rpb24oKXtyZXR1cm4gY29uc29sZS53YXJuKCJUSFJFRS5Cb3gyOiAuZW1wdHkoKSBoYXMgYmVlbiByZW5hbWVkIHRvIC5pc0VtcHR5KCkuIiksdGhpcy5pc0VtcHR5KCl9LGlzSW50ZXJzZWN0aW9uQm94OmZ1bmN0aW9uKHQpe3JldHVybiBjb25zb2xlLndhcm4oIlRIUkVFLkJveDI6IC5pc0ludGVyc2VjdGlvbkJveCgpIGhhcyBiZWVuIHJlbmFtZWQgdG8gLmludGVyc2VjdHNCb3goKS4iKSx0aGlzLmludGVyc2VjdHNCb3godCl9LHNpemU6ZnVuY3Rpb24odCl7cmV0dXJuIGNvbnNvbGUud2FybigiVEhSRUUuQm94MjogLnNpemUoKSBoYXMgYmVlbiByZW5hbWVkIHRvIC5nZXRTaXplKCkuIiksdGhpcy5nZXRTaXplKHQpfX0pLE9iamVjdC5hc3NpZ24oYXR0LnByb3RvdHlwZSx7Y2VudGVyOmZ1bmN0aW9uKHQpe3JldHVybiBjb25zb2xlLndhcm4oIlRIUkVFLkJveDM6IC5jZW50ZXIoKSBoYXMgYmVlbiByZW5hbWVkIHRvIC5nZXRDZW50ZXIoKS4iKSx0aGlzLmdldENlbnRlcih0KX0sZW1wdHk6ZnVuY3Rpb24oKXtyZXR1cm4gY29uc29sZS53YXJuKCJUSFJFRS5Cb3gzOiAuZW1wdHkoKSBoYXMgYmVlbiByZW5hbWVkIHRvIC5pc0VtcHR5KCkuIiksdGhpcy5pc0VtcHR5KCl9LGlzSW50ZXJzZWN0aW9uQm94OmZ1bmN0aW9uKHQpe3JldHVybiBjb25zb2xlLndhcm4oIlRIUkVFLkJveDM6IC5pc0ludGVyc2VjdGlvbkJveCgpIGhhcyBiZWVuIHJlbmFtZWQgdG8gLmludGVyc2VjdHNCb3goKS4iKSx0aGlzLmludGVyc2VjdHNCb3godCl9LGlzSW50ZXJzZWN0aW9uU3BoZXJlOmZ1bmN0aW9uKHQpe3JldHVybiBjb25zb2xlLndhcm4oIlRIUkVFLkJveDM6IC5pc0ludGVyc2VjdGlvblNwaGVyZSgpIGhhcyBiZWVuIHJlbmFtZWQgdG8gLmludGVyc2VjdHNTcGhlcmUoKS4iKSx0aGlzLmludGVyc2VjdHNTcGhlcmUodCl9LHNpemU6ZnVuY3Rpb24odCl7cmV0dXJuIGNvbnNvbGUud2FybigiVEhSRUUuQm94MzogLnNpemUoKSBoYXMgYmVlbiByZW5hbWVkIHRvIC5nZXRTaXplKCkuIiksdGhpcy5nZXRTaXplKHQpfX0pLE9iamVjdC5hc3NpZ24oQ3R0LnByb3RvdHlwZSx7ZW1wdHk6ZnVuY3Rpb24oKXtyZXR1cm4gY29uc29sZS53YXJuKCJUSFJFRS5TcGhlcmU6IC5lbXB0eSgpIGhhcyBiZWVuIHJlbmFtZWQgdG8gLmlzRW1wdHkoKS4iKSx0aGlzLmlzRW1wdHkoKX19KSx6ZXQucHJvdG90eXBlLnNldEZyb21NYXRyaXg9ZnVuY3Rpb24odCl7cmV0dXJuIGNvbnNvbGUud2FybigiVEhSRUUuRnJ1c3R1bTogLnNldEZyb21NYXRyaXgoKSBoYXMgYmVlbiByZW5hbWVkIHRvIC5zZXRGcm9tUHJvamVjdGlvbk1hdHJpeCgpLiIpLHRoaXMuc2V0RnJvbVByb2plY3Rpb25NYXRyaXgodCl9LE9iamVjdC5hc3NpZ24oVTkse3JhbmRvbTE2OmZ1bmN0aW9uKCl7cmV0dXJuIGNvbnNvbGUud2FybigiVEhSRUUuTWF0aDogLnJhbmRvbTE2KCkgaGFzIGJlZW4gZGVwcmVjYXRlZC4gVXNlIE1hdGgucmFuZG9tKCkgaW5zdGVhZC4iKSxNYXRoLnJhbmRvbSgpfSxuZWFyZXN0UG93ZXJPZlR3bzpmdW5jdGlvbih0KXtyZXR1cm4gY29uc29sZS53YXJuKCJUSFJFRS5NYXRoOiAubmVhcmVzdFBvd2VyT2ZUd28oKSBoYXMgYmVlbiByZW5hbWVkIHRvIC5mbG9vclBvd2VyT2ZUd28oKS4iKSxVOS5mbG9vclBvd2VyT2ZUd28odCl9LG5leHRQb3dlck9mVHdvOmZ1bmN0aW9uKHQpe3JldHVybiBjb25zb2xlLndhcm4oIlRIUkVFLk1hdGg6IC5uZXh0UG93ZXJPZlR3bygpIGhhcyBiZWVuIHJlbmFtZWQgdG8gLmNlaWxQb3dlck9mVHdvKCkuIiksVTkuY2VpbFBvd2VyT2ZUd28odCl9fSksT2JqZWN0LmFzc2lnbihHOS5wcm90b3R5cGUse2ZsYXR0ZW5Ub0FycmF5T2Zmc2V0OmZ1bmN0aW9uKHQsbil7cmV0dXJuIGNvbnNvbGUud2FybigiVEhSRUUuTWF0cml4MzogLmZsYXR0ZW5Ub0FycmF5T2Zmc2V0KCkgaGFzIGJlZW4gZGVwcmVjYXRlZC4gVXNlIC50b0FycmF5KCkgaW5zdGVhZC4iKSx0aGlzLnRvQXJyYXkodCxuKX0sbXVsdGlwbHlWZWN0b3IzOmZ1bmN0aW9uKHQpe3JldHVybiBjb25zb2xlLndhcm4oIlRIUkVFLk1hdHJpeDM6IC5tdWx0aXBseVZlY3RvcjMoKSBoYXMgYmVlbiByZW1vdmVkLiBVc2UgdmVjdG9yLmFwcGx5TWF0cml4MyggbWF0cml4ICkgaW5zdGVhZC4iKSx0LmFwcGx5TWF0cml4Myh0aGlzKX0sbXVsdGlwbHlWZWN0b3IzQXJyYXk6ZnVuY3Rpb24oKXtjb25zb2xlLmVycm9yKCJUSFJFRS5NYXRyaXgzOiAubXVsdGlwbHlWZWN0b3IzQXJyYXkoKSBoYXMgYmVlbiByZW1vdmVkLiIpfSxhcHBseVRvQnVmZmVyQXR0cmlidXRlOmZ1bmN0aW9uKHQpe3JldHVybiBjb25zb2xlLndhcm4oIlRIUkVFLk1hdHJpeDM6IC5hcHBseVRvQnVmZmVyQXR0cmlidXRlKCkgaGFzIGJlZW4gcmVtb3ZlZC4gVXNlIGF0dHJpYnV0ZS5hcHBseU1hdHJpeDMoIG1hdHJpeCApIGluc3RlYWQuIiksdC5hcHBseU1hdHJpeDModGhpcyl9LGFwcGx5VG9WZWN0b3IzQXJyYXk6ZnVuY3Rpb24oKXtjb25zb2xlLmVycm9yKCJUSFJFRS5NYXRyaXgzOiAuYXBwbHlUb1ZlY3RvcjNBcnJheSgpIGhhcyBiZWVuIHJlbW92ZWQuIil9LGdldEludmVyc2U6ZnVuY3Rpb24odCl7cmV0dXJuIGNvbnNvbGUud2FybigiVEhSRUUuTWF0cml4MzogLmdldEludmVyc2UoKSBoYXMgYmVlbiByZW1vdmVkLiBVc2UgbWF0cml4SW52LmNvcHkoIG1hdHJpeCApLmludmVydCgpOyBpbnN0ZWFkLiIpLHRoaXMuY29weSh0KS5pbnZlcnQoKX19KSxPYmplY3QuYXNzaWduKFN0dC5wcm90b3R5cGUse2V4dHJhY3RQb3NpdGlvbjpmdW5jdGlvbih0KXtyZXR1cm4gY29uc29sZS53YXJuKCJUSFJFRS5NYXRyaXg0OiAuZXh0cmFjdFBvc2l0aW9uKCkgaGFzIGJlZW4gcmVuYW1lZCB0byAuY29weVBvc2l0aW9uKCkuIiksdGhpcy5jb3B5UG9zaXRpb24odCl9LGZsYXR0ZW5Ub0FycmF5T2Zmc2V0OmZ1bmN0aW9uKHQsbil7cmV0dXJuIGNvbnNvbGUud2FybigiVEhSRUUuTWF0cml4NDogLmZsYXR0ZW5Ub0FycmF5T2Zmc2V0KCkgaGFzIGJlZW4gZGVwcmVjYXRlZC4gVXNlIC50b0FycmF5KCkgaW5zdGVhZC4iKSx0aGlzLnRvQXJyYXkodCxuKX0sZ2V0UG9zaXRpb246ZnVuY3Rpb24oKXtyZXR1cm4gY29uc29sZS53YXJuKCJUSFJFRS5NYXRyaXg0OiAuZ2V0UG9zaXRpb24oKSBoYXMgYmVlbiByZW1vdmVkLiBVc2UgVmVjdG9yMy5zZXRGcm9tTWF0cml4UG9zaXRpb24oIG1hdHJpeCApIGluc3RlYWQuIiksKG5ldyB0dHQpLnNldEZyb21NYXRyaXhDb2x1bW4odGhpcywzKX0sc2V0Um90YXRpb25Gcm9tUXVhdGVybmlvbjpmdW5jdGlvbih0KXtyZXR1cm4gY29uc29sZS53YXJuKCJUSFJFRS5NYXRyaXg0OiAuc2V0Um90YXRpb25Gcm9tUXVhdGVybmlvbigpIGhhcyBiZWVuIHJlbmFtZWQgdG8gLm1ha2VSb3RhdGlvbkZyb21RdWF0ZXJuaW9uKCkuIiksdGhpcy5tYWtlUm90YXRpb25Gcm9tUXVhdGVybmlvbih0KX0sbXVsdGlwbHlUb0FycmF5OmZ1bmN0aW9uKCl7Y29uc29sZS53YXJuKCJUSFJFRS5NYXRyaXg0OiAubXVsdGlwbHlUb0FycmF5KCkgaGFzIGJlZW4gcmVtb3ZlZC4iKX0sbXVsdGlwbHlWZWN0b3IzOmZ1bmN0aW9uKHQpe3JldHVybiBjb25zb2xlLndhcm4oIlRIUkVFLk1hdHJpeDQ6IC5tdWx0aXBseVZlY3RvcjMoKSBoYXMgYmVlbiByZW1vdmVkLiBVc2UgdmVjdG9yLmFwcGx5TWF0cml4NCggbWF0cml4ICkgaW5zdGVhZC4iKSx0LmFwcGx5TWF0cml4NCh0aGlzKX0sbXVsdGlwbHlWZWN0b3I0OmZ1bmN0aW9uKHQpe3JldHVybiBjb25zb2xlLndhcm4oIlRIUkVFLk1hdHJpeDQ6IC5tdWx0aXBseVZlY3RvcjQoKSBoYXMgYmVlbiByZW1vdmVkLiBVc2UgdmVjdG9yLmFwcGx5TWF0cml4NCggbWF0cml4ICkgaW5zdGVhZC4iKSx0LmFwcGx5TWF0cml4NCh0aGlzKX0sbXVsdGlwbHlWZWN0b3IzQXJyYXk6ZnVuY3Rpb24oKXtjb25zb2xlLmVycm9yKCJUSFJFRS5NYXRyaXg0OiAubXVsdGlwbHlWZWN0b3IzQXJyYXkoKSBoYXMgYmVlbiByZW1vdmVkLiIpfSxyb3RhdGVBeGlzOmZ1bmN0aW9uKHQpe2NvbnNvbGUud2FybigiVEhSRUUuTWF0cml4NDogLnJvdGF0ZUF4aXMoKSBoYXMgYmVlbiByZW1vdmVkLiBVc2UgVmVjdG9yMy50cmFuc2Zvcm1EaXJlY3Rpb24oIG1hdHJpeCApIGluc3RlYWQuIiksdC50cmFuc2Zvcm1EaXJlY3Rpb24odGhpcyl9LGNyb3NzVmVjdG9yOmZ1bmN0aW9uKHQpe3JldHVybiBjb25zb2xlLndhcm4oIlRIUkVFLk1hdHJpeDQ6IC5jcm9zc1ZlY3RvcigpIGhhcyBiZWVuIHJlbW92ZWQuIFVzZSB2ZWN0b3IuYXBwbHlNYXRyaXg0KCBtYXRyaXggKSBpbnN0ZWFkLiIpLHQuYXBwbHlNYXRyaXg0KHRoaXMpfSx0cmFuc2xhdGU6ZnVuY3Rpb24oKXtjb25zb2xlLmVycm9yKCJUSFJFRS5NYXRyaXg0OiAudHJhbnNsYXRlKCkgaGFzIGJlZW4gcmVtb3ZlZC4iKX0scm90YXRlWDpmdW5jdGlvbigpe2NvbnNvbGUuZXJyb3IoIlRIUkVFLk1hdHJpeDQ6IC5yb3RhdGVYKCkgaGFzIGJlZW4gcmVtb3ZlZC4iKX0scm90YXRlWTpmdW5jdGlvbigpe2NvbnNvbGUuZXJyb3IoIlRIUkVFLk1hdHJpeDQ6IC5yb3RhdGVZKCkgaGFzIGJlZW4gcmVtb3ZlZC4iKX0scm90YXRlWjpmdW5jdGlvbigpe2NvbnNvbGUuZXJyb3IoIlRIUkVFLk1hdHJpeDQ6IC5yb3RhdGVaKCkgaGFzIGJlZW4gcmVtb3ZlZC4iKX0scm90YXRlQnlBeGlzOmZ1bmN0aW9uKCl7Y29uc29sZS5lcnJvcigiVEhSRUUuTWF0cml4NDogLnJvdGF0ZUJ5QXhpcygpIGhhcyBiZWVuIHJlbW92ZWQuIil9LGFwcGx5VG9CdWZmZXJBdHRyaWJ1dGU6ZnVuY3Rpb24odCl7cmV0dXJuIGNvbnNvbGUud2FybigiVEhSRUUuTWF0cml4NDogLmFwcGx5VG9CdWZmZXJBdHRyaWJ1dGUoKSBoYXMgYmVlbiByZW1vdmVkLiBVc2UgYXR0cmlidXRlLmFwcGx5TWF0cml4NCggbWF0cml4ICkgaW5zdGVhZC4iKSx0LmFwcGx5TWF0cml4NCh0aGlzKX0sYXBwbHlUb1ZlY3RvcjNBcnJheTpmdW5jdGlvbigpe2NvbnNvbGUuZXJyb3IoIlRIUkVFLk1hdHJpeDQ6IC5hcHBseVRvVmVjdG9yM0FycmF5KCkgaGFzIGJlZW4gcmVtb3ZlZC4iKX0sbWFrZUZydXN0dW06ZnVuY3Rpb24odCxuLGUsYSxvLHIpe3JldHVybiBjb25zb2xlLndhcm4oIlRIUkVFLk1hdHJpeDQ6IC5tYWtlRnJ1c3R1bSgpIGhhcyBiZWVuIHJlbW92ZWQuIFVzZSAubWFrZVBlcnNwZWN0aXZlKCBsZWZ0LCByaWdodCwgdG9wLCBib3R0b20sIG5lYXIsIGZhciApIGluc3RlYWQuIiksdGhpcy5tYWtlUGVyc3BlY3RpdmUodCxuLGEsZSxvLHIpfSxnZXRJbnZlcnNlOmZ1bmN0aW9uKHQpe3JldHVybiBjb25zb2xlLndhcm4oIlRIUkVFLk1hdHJpeDQ6IC5nZXRJbnZlcnNlKCkgaGFzIGJlZW4gcmVtb3ZlZC4gVXNlIG1hdHJpeEludi5jb3B5KCBtYXRyaXggKS5pbnZlcnQoKTsgaW5zdGVhZC4iKSx0aGlzLmNvcHkodCkuaW52ZXJ0KCl9fSksYW50LnByb3RvdHlwZS5pc0ludGVyc2VjdGlvbkxpbmU9ZnVuY3Rpb24odCl7cmV0dXJuIGNvbnNvbGUud2FybigiVEhSRUUuUGxhbmU6IC5pc0ludGVyc2VjdGlvbkxpbmUoKSBoYXMgYmVlbiByZW5hbWVkIHRvIC5pbnRlcnNlY3RzTGluZSgpLiIpLHRoaXMuaW50ZXJzZWN0c0xpbmUodCl9LE9iamVjdC5hc3NpZ24oJDkucHJvdG90eXBlLHttdWx0aXBseVZlY3RvcjM6ZnVuY3Rpb24odCl7cmV0dXJuIGNvbnNvbGUud2FybigiVEhSRUUuUXVhdGVybmlvbjogLm11bHRpcGx5VmVjdG9yMygpIGhhcyBiZWVuIHJlbW92ZWQuIFVzZSBpcyBub3cgdmVjdG9yLmFwcGx5UXVhdGVybmlvbiggcXVhdGVybmlvbiApIGluc3RlYWQuIiksdC5hcHBseVF1YXRlcm5pb24odGhpcyl9LGludmVyc2U6ZnVuY3Rpb24oKXtyZXR1cm4gY29uc29sZS53YXJuKCJUSFJFRS5RdWF0ZXJuaW9uOiAuaW52ZXJzZSgpIGhhcyBiZWVuIHJlbmFtZWQgdG8gaW52ZXJ0KCkuIiksdGhpcy5pbnZlcnQoKX19KSxPYmplY3QuYXNzaWduKHd0dC5wcm90b3R5cGUse2lzSW50ZXJzZWN0aW9uQm94OmZ1bmN0aW9uKHQpe3JldHVybiBjb25zb2xlLndhcm4oIlRIUkVFLlJheTogLmlzSW50ZXJzZWN0aW9uQm94KCkgaGFzIGJlZW4gcmVuYW1lZCB0byAuaW50ZXJzZWN0c0JveCgpLiIpLHRoaXMuaW50ZXJzZWN0c0JveCh0KX0saXNJbnRlcnNlY3Rpb25QbGFuZTpmdW5jdGlvbih0KXtyZXR1cm4gY29uc29sZS53YXJuKCJUSFJFRS5SYXk6IC5pc0ludGVyc2VjdGlvblBsYW5lKCkgaGFzIGJlZW4gcmVuYW1lZCB0byAuaW50ZXJzZWN0c1BsYW5lKCkuIiksdGhpcy5pbnRlcnNlY3RzUGxhbmUodCl9LGlzSW50ZXJzZWN0aW9uU3BoZXJlOmZ1bmN0aW9uKHQpe3JldHVybiBjb25zb2xlLndhcm4oIlRIUkVFLlJheTogLmlzSW50ZXJzZWN0aW9uU3BoZXJlKCkgaGFzIGJlZW4gcmVuYW1lZCB0byAuaW50ZXJzZWN0c1NwaGVyZSgpLiIpLHRoaXMuaW50ZXJzZWN0c1NwaGVyZSh0KX19KSxPYmplY3QuYXNzaWduKGJudC5wcm90b3R5cGUse2FyZWE6ZnVuY3Rpb24oKXtyZXR1cm4gY29uc29sZS53YXJuKCJUSFJFRS5UcmlhbmdsZTogLmFyZWEoKSBoYXMgYmVlbiByZW5hbWVkIHRvIC5nZXRBcmVhKCkuIiksdGhpcy5nZXRBcmVhKCl9LGJhcnljb29yZEZyb21Qb2ludDpmdW5jdGlvbih0LG4pe3JldHVybiBjb25zb2xlLndhcm4oIlRIUkVFLlRyaWFuZ2xlOiAuYmFyeWNvb3JkRnJvbVBvaW50KCkgaGFzIGJlZW4gcmVuYW1lZCB0byAuZ2V0QmFyeWNvb3JkKCkuIiksdGhpcy5nZXRCYXJ5Y29vcmQodCxuKX0sbWlkcG9pbnQ6ZnVuY3Rpb24odCl7cmV0dXJuIGNvbnNvbGUud2FybigiVEhSRUUuVHJpYW5nbGU6IC5taWRwb2ludCgpIGhhcyBiZWVuIHJlbmFtZWQgdG8gLmdldE1pZHBvaW50KCkuIiksdGhpcy5nZXRNaWRwb2ludCh0KX0sbm9ybWFsOmZ1bmN0aW9uKHQpe3JldHVybiBjb25zb2xlLndhcm4oIlRIUkVFLlRyaWFuZ2xlOiAubm9ybWFsKCkgaGFzIGJlZW4gcmVuYW1lZCB0byAuZ2V0Tm9ybWFsKCkuIiksdGhpcy5nZXROb3JtYWwodCl9LHBsYW5lOmZ1bmN0aW9uKHQpe3JldHVybiBjb25zb2xlLndhcm4oIlRIUkVFLlRyaWFuZ2xlOiAucGxhbmUoKSBoYXMgYmVlbiByZW5hbWVkIHRvIC5nZXRQbGFuZSgpLiIpLHRoaXMuZ2V0UGxhbmUodCl9fSksT2JqZWN0LmFzc2lnbihibnQse2Jhcnljb29yZEZyb21Qb2ludDpmdW5jdGlvbih0LG4sZSxhLG8pe3JldHVybiBjb25zb2xlLndhcm4oIlRIUkVFLlRyaWFuZ2xlOiAuYmFyeWNvb3JkRnJvbVBvaW50KCkgaGFzIGJlZW4gcmVuYW1lZCB0byAuZ2V0QmFyeWNvb3JkKCkuIiksYm50LmdldEJhcnljb29yZCh0LG4sZSxhLG8pfSxub3JtYWw6ZnVuY3Rpb24odCxuLGUsYSl7cmV0dXJuIGNvbnNvbGUud2FybigiVEhSRUUuVHJpYW5nbGU6IC5ub3JtYWwoKSBoYXMgYmVlbiByZW5hbWVkIHRvIC5nZXROb3JtYWwoKS4iKSxibnQuZ2V0Tm9ybWFsKHQsbixlLGEpfX0pLE9iamVjdC5hc3NpZ24oQWN0LnByb3RvdHlwZSx7ZXh0cmFjdEFsbFBvaW50czpmdW5jdGlvbih0KXtyZXR1cm4gY29uc29sZS53YXJuKCJUSFJFRS5TaGFwZTogLmV4dHJhY3RBbGxQb2ludHMoKSBoYXMgYmVlbiByZW1vdmVkLiBVc2UgLmV4dHJhY3RQb2ludHMoKSBpbnN0ZWFkLiIpLHRoaXMuZXh0cmFjdFBvaW50cyh0KX0sZXh0cnVkZTpmdW5jdGlvbih0KXtyZXR1cm4gY29uc29sZS53YXJuKCJUSFJFRS5TaGFwZTogLmV4dHJ1ZGUoKSBoYXMgYmVlbiByZW1vdmVkLiBVc2UgRXh0cnVkZUdlb21ldHJ5KCkgaW5zdGVhZC4iKSxuZXcgTWl0KHRoaXMsdCl9LG1ha2VHZW9tZXRyeTpmdW5jdGlvbih0KXtyZXR1cm4gY29uc29sZS53YXJuKCJUSFJFRS5TaGFwZTogLm1ha2VHZW9tZXRyeSgpIGhhcyBiZWVuIHJlbW92ZWQuIFVzZSBTaGFwZUdlb21ldHJ5KCkgaW5zdGVhZC4iKSxuZXcgeGl0KHRoaXMsdCl9fSksT2JqZWN0LmFzc2lnbihXOS5wcm90b3R5cGUse2Zyb21BdHRyaWJ1dGU6ZnVuY3Rpb24odCxuLGUpe3JldHVybiBjb25zb2xlLndhcm4oIlRIUkVFLlZlY3RvcjI6IC5mcm9tQXR0cmlidXRlKCkgaGFzIGJlZW4gcmVuYW1lZCB0byAuZnJvbUJ1ZmZlckF0dHJpYnV0ZSgpLiIpLHRoaXMuZnJvbUJ1ZmZlckF0dHJpYnV0ZSh0LG4sZSl9LGRpc3RhbmNlVG9NYW5oYXR0YW46ZnVuY3Rpb24odCl7cmV0dXJuIGNvbnNvbGUud2FybigiVEhSRUUuVmVjdG9yMjogLmRpc3RhbmNlVG9NYW5oYXR0YW4oKSBoYXMgYmVlbiByZW5hbWVkIHRvIC5tYW5oYXR0YW5EaXN0YW5jZVRvKCkuIiksdGhpcy5tYW5oYXR0YW5EaXN0YW5jZVRvKHQpfSxsZW5ndGhNYW5oYXR0YW46ZnVuY3Rpb24oKXtyZXR1cm4gY29uc29sZS53YXJuKCJUSFJFRS5WZWN0b3IyOiAubGVuZ3RoTWFuaGF0dGFuKCkgaGFzIGJlZW4gcmVuYW1lZCB0byAubWFuaGF0dGFuTGVuZ3RoKCkuIiksdGhpcy5tYW5oYXR0YW5MZW5ndGgoKX19KSxPYmplY3QuYXNzaWduKHR0dC5wcm90b3R5cGUse3NldEV1bGVyRnJvbVJvdGF0aW9uTWF0cml4OmZ1bmN0aW9uKCl7Y29uc29sZS5lcnJvcigiVEhSRUUuVmVjdG9yMzogLnNldEV1bGVyRnJvbVJvdGF0aW9uTWF0cml4KCkgaGFzIGJlZW4gcmVtb3ZlZC4gVXNlIEV1bGVyLnNldEZyb21Sb3RhdGlvbk1hdHJpeCgpIGluc3RlYWQuIil9LHNldEV1bGVyRnJvbVF1YXRlcm5pb246ZnVuY3Rpb24oKXtjb25zb2xlLmVycm9yKCJUSFJFRS5WZWN0b3IzOiAuc2V0RXVsZXJGcm9tUXVhdGVybmlvbigpIGhhcyBiZWVuIHJlbW92ZWQuIFVzZSBFdWxlci5zZXRGcm9tUXVhdGVybmlvbigpIGluc3RlYWQuIil9LGdldFBvc2l0aW9uRnJvbU1hdHJpeDpmdW5jdGlvbih0KXtyZXR1cm4gY29uc29sZS53YXJuKCJUSFJFRS5WZWN0b3IzOiAuZ2V0UG9zaXRpb25Gcm9tTWF0cml4KCkgaGFzIGJlZW4gcmVuYW1lZCB0byAuc2V0RnJvbU1hdHJpeFBvc2l0aW9uKCkuIiksdGhpcy5zZXRGcm9tTWF0cml4UG9zaXRpb24odCl9LGdldFNjYWxlRnJvbU1hdHJpeDpmdW5jdGlvbih0KXtyZXR1cm4gY29uc29sZS53YXJuKCJUSFJFRS5WZWN0b3IzOiAuZ2V0U2NhbGVGcm9tTWF0cml4KCkgaGFzIGJlZW4gcmVuYW1lZCB0byAuc2V0RnJvbU1hdHJpeFNjYWxlKCkuIiksdGhpcy5zZXRGcm9tTWF0cml4U2NhbGUodCl9LGdldENvbHVtbkZyb21NYXRyaXg6ZnVuY3Rpb24odCxuKXtyZXR1cm4gY29uc29sZS53YXJuKCJUSFJFRS5WZWN0b3IzOiAuZ2V0Q29sdW1uRnJvbU1hdHJpeCgpIGhhcyBiZWVuIHJlbmFtZWQgdG8gLnNldEZyb21NYXRyaXhDb2x1bW4oKS4iKSx0aGlzLnNldEZyb21NYXRyaXhDb2x1bW4obix0KX0sYXBwbHlQcm9qZWN0aW9uOmZ1bmN0aW9uKHQpe3JldHVybiBjb25zb2xlLndhcm4oIlRIUkVFLlZlY3RvcjM6IC5hcHBseVByb2plY3Rpb24oKSBoYXMgYmVlbiByZW1vdmVkLiBVc2UgLmFwcGx5TWF0cml4NCggbSApIGluc3RlYWQuIiksdGhpcy5hcHBseU1hdHJpeDQodCl9LGZyb21BdHRyaWJ1dGU6ZnVuY3Rpb24odCxuLGUpe3JldHVybiBjb25zb2xlLndhcm4oIlRIUkVFLlZlY3RvcjM6IC5mcm9tQXR0cmlidXRlKCkgaGFzIGJlZW4gcmVuYW1lZCB0byAuZnJvbUJ1ZmZlckF0dHJpYnV0ZSgpLiIpLHRoaXMuZnJvbUJ1ZmZlckF0dHJpYnV0ZSh0LG4sZSl9LGRpc3RhbmNlVG9NYW5oYXR0YW46ZnVuY3Rpb24odCl7cmV0dXJuIGNvbnNvbGUud2FybigiVEhSRUUuVmVjdG9yMzogLmRpc3RhbmNlVG9NYW5oYXR0YW4oKSBoYXMgYmVlbiByZW5hbWVkIHRvIC5tYW5oYXR0YW5EaXN0YW5jZVRvKCkuIiksdGhpcy5tYW5oYXR0YW5EaXN0YW5jZVRvKHQpfSxsZW5ndGhNYW5oYXR0YW46ZnVuY3Rpb24oKXtyZXR1cm4gY29uc29sZS53YXJuKCJUSFJFRS5WZWN0b3IzOiAubGVuZ3RoTWFuaGF0dGFuKCkgaGFzIGJlZW4gcmVuYW1lZCB0byAubWFuaGF0dGFuTGVuZ3RoKCkuIiksdGhpcy5tYW5oYXR0YW5MZW5ndGgoKX19KSxPYmplY3QuYXNzaWduKFE5LnByb3RvdHlwZSx7ZnJvbUF0dHJpYnV0ZTpmdW5jdGlvbih0LG4sZSl7cmV0dXJuIGNvbnNvbGUud2FybigiVEhSRUUuVmVjdG9yNDogLmZyb21BdHRyaWJ1dGUoKSBoYXMgYmVlbiByZW5hbWVkIHRvIC5mcm9tQnVmZmVyQXR0cmlidXRlKCkuIiksdGhpcy5mcm9tQnVmZmVyQXR0cmlidXRlKHQsbixlKX0sbGVuZ3RoTWFuaGF0dGFuOmZ1bmN0aW9uKCl7cmV0dXJuIGNvbnNvbGUud2FybigiVEhSRUUuVmVjdG9yNDogLmxlbmd0aE1hbmhhdHRhbigpIGhhcyBiZWVuIHJlbmFtZWQgdG8gLm1hbmhhdHRhbkxlbmd0aCgpLiIpLHRoaXMubWFuaGF0dGFuTGVuZ3RoKCl9fSksT2JqZWN0LmFzc2lnbigkdHQucHJvdG90eXBlLHtnZXRDaGlsZEJ5TmFtZTpmdW5jdGlvbih0KXtyZXR1cm4gY29uc29sZS53YXJuKCJUSFJFRS5PYmplY3QzRDogLmdldENoaWxkQnlOYW1lKCkgaGFzIGJlZW4gcmVuYW1lZCB0byAuZ2V0T2JqZWN0QnlOYW1lKCkuIiksdGhpcy5nZXRPYmplY3RCeU5hbWUodCl9LHJlbmRlckRlcHRoOmZ1bmN0aW9uKCl7Y29uc29sZS53YXJuKCJUSFJFRS5PYmplY3QzRDogLnJlbmRlckRlcHRoIGhhcyBiZWVuIHJlbW92ZWQuIFVzZSAucmVuZGVyT3JkZXIsIGluc3RlYWQuIil9LHRyYW5zbGF0ZTpmdW5jdGlvbih0LG4pe3JldHVybiBjb25zb2xlLndhcm4oIlRIUkVFLk9iamVjdDNEOiAudHJhbnNsYXRlKCkgaGFzIGJlZW4gcmVtb3ZlZC4gVXNlIC50cmFuc2xhdGVPbkF4aXMoIGF4aXMsIGRpc3RhbmNlICkgaW5zdGVhZC4iKSx0aGlzLnRyYW5zbGF0ZU9uQXhpcyhuLHQpfSxnZXRXb3JsZFJvdGF0aW9uOmZ1bmN0aW9uKCl7Y29uc29sZS5lcnJvcigiVEhSRUUuT2JqZWN0M0Q6IC5nZXRXb3JsZFJvdGF0aW9uKCkgaGFzIGJlZW4gcmVtb3ZlZC4gVXNlIFRIUkVFLk9iamVjdDNELmdldFdvcmxkUXVhdGVybmlvbiggdGFyZ2V0ICkgaW5zdGVhZC4iKX0sYXBwbHlNYXRyaXg6ZnVuY3Rpb24odCl7cmV0dXJuIGNvbnNvbGUud2FybigiVEhSRUUuT2JqZWN0M0Q6IC5hcHBseU1hdHJpeCgpIGhhcyBiZWVuIHJlbmFtZWQgdG8gLmFwcGx5TWF0cml4NCgpLiIpLHRoaXMuYXBwbHlNYXRyaXg0KHQpfX0pLE9iamVjdC5kZWZpbmVQcm9wZXJ0aWVzKCR0dC5wcm90b3R5cGUse2V1bGVyT3JkZXI6e2dldDpmdW5jdGlvbigpe3JldHVybiBjb25zb2xlLndhcm4oIlRIUkVFLk9iamVjdDNEOiAuZXVsZXJPcmRlciBpcyBub3cgLnJvdGF0aW9uLm9yZGVyLiIpLHRoaXMucm90YXRpb24ub3JkZXJ9LHNldDpmdW5jdGlvbih0KXtjb25zb2xlLndhcm4oIlRIUkVFLk9iamVjdDNEOiAuZXVsZXJPcmRlciBpcyBub3cgLnJvdGF0aW9uLm9yZGVyLiIpLHRoaXMucm90YXRpb24ub3JkZXI9dH19LHVzZVF1YXRlcm5pb246e2dldDpmdW5jdGlvbigpe2NvbnNvbGUud2FybigiVEhSRUUuT2JqZWN0M0Q6IC51c2VRdWF0ZXJuaW9uIGhhcyBiZWVuIHJlbW92ZWQuIFRoZSBsaWJyYXJ5IG5vdyB1c2VzIHF1YXRlcm5pb25zIGJ5IGRlZmF1bHQuIil9LHNldDpmdW5jdGlvbigpe2NvbnNvbGUud2FybigiVEhSRUUuT2JqZWN0M0Q6IC51c2VRdWF0ZXJuaW9uIGhhcyBiZWVuIHJlbW92ZWQuIFRoZSBsaWJyYXJ5IG5vdyB1c2VzIHF1YXRlcm5pb25zIGJ5IGRlZmF1bHQuIil9fX0pLE9iamVjdC5hc3NpZ24oYmV0LnByb3RvdHlwZSx7c2V0RHJhd01vZGU6ZnVuY3Rpb24oKXtjb25zb2xlLmVycm9yKCJUSFJFRS5NZXNoOiAuc2V0RHJhd01vZGUoKSBoYXMgYmVlbiByZW1vdmVkLiBUaGUgcmVuZGVyZXIgbm93IGFsd2F5cyBhc3N1bWVzIFRIUkVFLlRyaWFuZ2xlc0RyYXdNb2RlLiBUcmFuc2Zvcm0geW91ciBnZW9tZXRyeSB2aWEgQnVmZmVyR2VvbWV0cnlVdGlscy50b1RyaWFuZ2xlc0RyYXdNb2RlKCkgaWYgbmVjZXNzYXJ5LiIpfX0pLE9iamVjdC5kZWZpbmVQcm9wZXJ0aWVzKGJldC5wcm90b3R5cGUse2RyYXdNb2RlOntnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gY29uc29sZS5lcnJvcigiVEhSRUUuTWVzaDogLmRyYXdNb2RlIGhhcyBiZWVuIHJlbW92ZWQuIFRoZSByZW5kZXJlciBub3cgYWx3YXlzIGFzc3VtZXMgVEhSRUUuVHJpYW5nbGVzRHJhd01vZGUuIiksMH0sc2V0OmZ1bmN0aW9uKCl7Y29uc29sZS5lcnJvcigiVEhSRUUuTWVzaDogLmRyYXdNb2RlIGhhcyBiZWVuIHJlbW92ZWQuIFRoZSByZW5kZXJlciBub3cgYWx3YXlzIGFzc3VtZXMgVEhSRUUuVHJpYW5nbGVzRHJhd01vZGUuIFRyYW5zZm9ybSB5b3VyIGdlb21ldHJ5IHZpYSBCdWZmZXJHZW9tZXRyeVV0aWxzLnRvVHJpYW5nbGVzRHJhd01vZGUoKSBpZiBuZWNlc3NhcnkuIil9fX0pLE9iamVjdC5kZWZpbmVQcm9wZXJ0aWVzKHNydC5wcm90b3R5cGUse29iamVjdHM6e2dldDpmdW5jdGlvbigpe3JldHVybiBjb25zb2xlLndhcm4oIlRIUkVFLkxPRDogLm9iamVjdHMgaGFzIGJlZW4gcmVuYW1lZCB0byAubGV2ZWxzLiIpLHRoaXMubGV2ZWxzfX19KSxPYmplY3QuZGVmaW5lUHJvcGVydHkoX3J0LnByb3RvdHlwZSwidXNlVmVydGV4VGV4dHVyZSIse2dldDpmdW5jdGlvbigpe2NvbnNvbGUud2FybigiVEhSRUUuU2tlbGV0b246IHVzZVZlcnRleFRleHR1cmUgaGFzIGJlZW4gcmVtb3ZlZC4iKX0sc2V0OmZ1bmN0aW9uKCl7Y29uc29sZS53YXJuKCJUSFJFRS5Ta2VsZXRvbjogdXNlVmVydGV4VGV4dHVyZSBoYXMgYmVlbiByZW1vdmVkLiIpfX0pLGJydC5wcm90b3R5cGUuaW5pdEJvbmVzPWZ1bmN0aW9uKCl7Y29uc29sZS5lcnJvcigiVEhSRUUuU2tpbm5lZE1lc2g6IGluaXRCb25lcygpIGhhcyBiZWVuIHJlbW92ZWQuIil9LE9iamVjdC5kZWZpbmVQcm9wZXJ0eShzY3QucHJvdG90eXBlLCJfX2FyY0xlbmd0aERpdmlzaW9ucyIse2dldDpmdW5jdGlvbigpe3JldHVybiBjb25zb2xlLndhcm4oIlRIUkVFLkN1cnZlOiAuX19hcmNMZW5ndGhEaXZpc2lvbnMgaXMgbm93IC5hcmNMZW5ndGhEaXZpc2lvbnMuIiksdGhpcy5hcmNMZW5ndGhEaXZpc2lvbnN9LHNldDpmdW5jdGlvbih0KXtjb25zb2xlLndhcm4oIlRIUkVFLkN1cnZlOiAuX19hcmNMZW5ndGhEaXZpc2lvbnMgaXMgbm93IC5hcmNMZW5ndGhEaXZpc2lvbnMuIiksdGhpcy5hcmNMZW5ndGhEaXZpc2lvbnM9dH19KSxQZXQucHJvdG90eXBlLnNldExlbnM9ZnVuY3Rpb24odCxuKXtjb25zb2xlLndhcm4oIlRIUkVFLlBlcnNwZWN0aXZlQ2FtZXJhLnNldExlbnMgaXMgZGVwcmVjYXRlZC4gVXNlIC5zZXRGb2NhbExlbmd0aCBhbmQgLmZpbG1HYXVnZSBmb3IgYSBwaG90b2dyYXBoaWMgc2V0dXAuIiksdm9pZCAwIT09biYmKHRoaXMuZmlsbUdhdWdlPW4pLHRoaXMuc2V0Rm9jYWxMZW5ndGgodCl9LE9iamVjdC5kZWZpbmVQcm9wZXJ0aWVzKHpjdC5wcm90b3R5cGUse29ubHlTaGFkb3c6e3NldDpmdW5jdGlvbigpe2NvbnNvbGUud2FybigiVEhSRUUuTGlnaHQ6IC5vbmx5U2hhZG93IGhhcyBiZWVuIHJlbW92ZWQuIil9fSxzaGFkb3dDYW1lcmFGb3Y6e3NldDpmdW5jdGlvbih0KXtjb25zb2xlLndhcm4oIlRIUkVFLkxpZ2h0OiAuc2hhZG93Q2FtZXJhRm92IGlzIG5vdyAuc2hhZG93LmNhbWVyYS5mb3YuIiksdGhpcy5zaGFkb3cuY2FtZXJhLmZvdj10fX0sc2hhZG93Q2FtZXJhTGVmdDp7c2V0OmZ1bmN0aW9uKHQpe2NvbnNvbGUud2FybigiVEhSRUUuTGlnaHQ6IC5zaGFkb3dDYW1lcmFMZWZ0IGlzIG5vdyAuc2hhZG93LmNhbWVyYS5sZWZ0LiIpLHRoaXMuc2hhZG93LmNhbWVyYS5sZWZ0PXR9fSxzaGFkb3dDYW1lcmFSaWdodDp7c2V0OmZ1bmN0aW9uKHQpe2NvbnNvbGUud2FybigiVEhSRUUuTGlnaHQ6IC5zaGFkb3dDYW1lcmFSaWdodCBpcyBub3cgLnNoYWRvdy5jYW1lcmEucmlnaHQuIiksdGhpcy5zaGFkb3cuY2FtZXJhLnJpZ2h0PXR9fSxzaGFkb3dDYW1lcmFUb3A6e3NldDpmdW5jdGlvbih0KXtjb25zb2xlLndhcm4oIlRIUkVFLkxpZ2h0OiAuc2hhZG93Q2FtZXJhVG9wIGlzIG5vdyAuc2hhZG93LmNhbWVyYS50b3AuIiksdGhpcy5zaGFkb3cuY2FtZXJhLnRvcD10fX0sc2hhZG93Q2FtZXJhQm90dG9tOntzZXQ6ZnVuY3Rpb24odCl7Y29uc29sZS53YXJuKCJUSFJFRS5MaWdodDogLnNoYWRvd0NhbWVyYUJvdHRvbSBpcyBub3cgLnNoYWRvdy5jYW1lcmEuYm90dG9tLiIpLHRoaXMuc2hhZG93LmNhbWVyYS5ib3R0b209dH19LHNoYWRvd0NhbWVyYU5lYXI6e3NldDpmdW5jdGlvbih0KXtjb25zb2xlLndhcm4oIlRIUkVFLkxpZ2h0OiAuc2hhZG93Q2FtZXJhTmVhciBpcyBub3cgLnNoYWRvdy5jYW1lcmEubmVhci4iKSx0aGlzLnNoYWRvdy5jYW1lcmEubmVhcj10fX0sc2hhZG93Q2FtZXJhRmFyOntzZXQ6ZnVuY3Rpb24odCl7Y29uc29sZS53YXJuKCJUSFJFRS5MaWdodDogLnNoYWRvd0NhbWVyYUZhciBpcyBub3cgLnNoYWRvdy5jYW1lcmEuZmFyLiIpLHRoaXMuc2hhZG93LmNhbWVyYS5mYXI9dH19LHNoYWRvd0NhbWVyYVZpc2libGU6e3NldDpmdW5jdGlvbigpe2NvbnNvbGUud2FybigiVEhSRUUuTGlnaHQ6IC5zaGFkb3dDYW1lcmFWaXNpYmxlIGhhcyBiZWVuIHJlbW92ZWQuIFVzZSBuZXcgVEhSRUUuQ2FtZXJhSGVscGVyKCBsaWdodC5zaGFkb3cuY2FtZXJhICkgaW5zdGVhZC4iKX19LHNoYWRvd0JpYXM6e3NldDpmdW5jdGlvbih0KXtjb25zb2xlLndhcm4oIlRIUkVFLkxpZ2h0OiAuc2hhZG93QmlhcyBpcyBub3cgLnNoYWRvdy5iaWFzLiIpLHRoaXMuc2hhZG93LmJpYXM9dH19LHNoYWRvd0RhcmtuZXNzOntzZXQ6ZnVuY3Rpb24oKXtjb25zb2xlLndhcm4oIlRIUkVFLkxpZ2h0OiAuc2hhZG93RGFya25lc3MgaGFzIGJlZW4gcmVtb3ZlZC4iKX19LHNoYWRvd01hcFdpZHRoOntzZXQ6ZnVuY3Rpb24odCl7Y29uc29sZS53YXJuKCJUSFJFRS5MaWdodDogLnNoYWRvd01hcFdpZHRoIGlzIG5vdyAuc2hhZG93Lm1hcFNpemUud2lkdGguIiksdGhpcy5zaGFkb3cubWFwU2l6ZS53aWR0aD10fX0sc2hhZG93TWFwSGVpZ2h0OntzZXQ6ZnVuY3Rpb24odCl7Y29uc29sZS53YXJuKCJUSFJFRS5MaWdodDogLnNoYWRvd01hcEhlaWdodCBpcyBub3cgLnNoYWRvdy5tYXBTaXplLmhlaWdodC4iKSx0aGlzLnNoYWRvdy5tYXBTaXplLmhlaWdodD10fX19KSxPYmplY3QuZGVmaW5lUHJvcGVydGllcyhTbnQucHJvdG90eXBlLHtsZW5ndGg6e2dldDpmdW5jdGlvbigpe3JldHVybiBjb25zb2xlLndhcm4oIlRIUkVFLkJ1ZmZlckF0dHJpYnV0ZTogLmxlbmd0aCBoYXMgYmVlbiBkZXByZWNhdGVkLiBVc2UgLmNvdW50IGluc3RlYWQuIiksdGhpcy5hcnJheS5sZW5ndGh9fSxkeW5hbWljOntnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gY29uc29sZS53YXJuKCJUSFJFRS5CdWZmZXJBdHRyaWJ1dGU6IC5keW5hbWljIGhhcyBiZWVuIGRlcHJlY2F0ZWQuIFVzZSAudXNhZ2UgaW5zdGVhZC4iKSx0aGlzLnVzYWdlPT09TDl9LHNldDpmdW5jdGlvbigpe2NvbnNvbGUud2FybigiVEhSRUUuQnVmZmVyQXR0cmlidXRlOiAuZHluYW1pYyBoYXMgYmVlbiBkZXByZWNhdGVkLiBVc2UgLnVzYWdlIGluc3RlYWQuIiksdGhpcy5zZXRVc2FnZShMOSl9fX0pLE9iamVjdC5hc3NpZ24oU250LnByb3RvdHlwZSx7c2V0RHluYW1pYzpmdW5jdGlvbih0KXtyZXR1cm4gY29uc29sZS53YXJuKCJUSFJFRS5CdWZmZXJBdHRyaWJ1dGU6IC5zZXREeW5hbWljKCkgaGFzIGJlZW4gZGVwcmVjYXRlZC4gVXNlIC5zZXRVc2FnZSgpIGluc3RlYWQuIiksdGhpcy5zZXRVc2FnZSghMD09PXQ/TDk6RjkpLHRoaXN9LGNvcHlJbmRpY2VzQXJyYXk6ZnVuY3Rpb24oKXtjb25zb2xlLmVycm9yKCJUSFJFRS5CdWZmZXJBdHRyaWJ1dGU6IC5jb3B5SW5kaWNlc0FycmF5KCkgaGFzIGJlZW4gcmVtb3ZlZC4iKX0sc2V0QXJyYXk6ZnVuY3Rpb24oKXtjb25zb2xlLmVycm9yKCJUSFJFRS5CdWZmZXJBdHRyaWJ1dGU6IC5zZXRBcnJheSBoYXMgYmVlbiByZW1vdmVkLiBVc2UgQnVmZmVyR2VvbWV0cnkgLnNldEF0dHJpYnV0ZSB0byByZXBsYWNlL3Jlc2l6ZSBhdHRyaWJ1dGUgYnVmZmVycyIpfX0pLE9iamVjdC5hc3NpZ24oWG50LnByb3RvdHlwZSx7YWRkSW5kZXg6ZnVuY3Rpb24odCl7Y29uc29sZS53YXJuKCJUSFJFRS5CdWZmZXJHZW9tZXRyeTogLmFkZEluZGV4KCkgaGFzIGJlZW4gcmVuYW1lZCB0byAuc2V0SW5kZXgoKS4iKSx0aGlzLnNldEluZGV4KHQpfSxhZGRBdHRyaWJ1dGU6ZnVuY3Rpb24odCxuKXtyZXR1cm4gY29uc29sZS53YXJuKCJUSFJFRS5CdWZmZXJHZW9tZXRyeTogLmFkZEF0dHJpYnV0ZSgpIGhhcyBiZWVuIHJlbmFtZWQgdG8gLnNldEF0dHJpYnV0ZSgpLiIpLG4mJm4uaXNCdWZmZXJBdHRyaWJ1dGV8fG4mJm4uaXNJbnRlcmxlYXZlZEJ1ZmZlckF0dHJpYnV0ZT8iaW5kZXgiPT09dD8oY29uc29sZS53YXJuKCJUSFJFRS5CdWZmZXJHZW9tZXRyeS5hZGRBdHRyaWJ1dGU6IFVzZSAuc2V0SW5kZXgoKSBmb3IgaW5kZXggYXR0cmlidXRlLiIpLHRoaXMuc2V0SW5kZXgobiksdGhpcyk6dGhpcy5zZXRBdHRyaWJ1dGUodCxuKTooY29uc29sZS53YXJuKCJUSFJFRS5CdWZmZXJHZW9tZXRyeTogLmFkZEF0dHJpYnV0ZSgpIG5vdyBleHBlY3RzICggbmFtZSwgYXR0cmlidXRlICkuIiksdGhpcy5zZXRBdHRyaWJ1dGUodCxuZXcgU250KGFyZ3VtZW50c1sxXSxhcmd1bWVudHNbMl0pKSl9LGFkZERyYXdDYWxsOmZ1bmN0aW9uKHQsbixlKXt2b2lkIDAhPT1lJiZjb25zb2xlLndhcm4oIlRIUkVFLkJ1ZmZlckdlb21ldHJ5OiAuYWRkRHJhd0NhbGwoKSBubyBsb25nZXIgc3VwcG9ydHMgaW5kZXhPZmZzZXQuIiksY29uc29sZS53YXJuKCJUSFJFRS5CdWZmZXJHZW9tZXRyeTogLmFkZERyYXdDYWxsKCkgaXMgbm93IC5hZGRHcm91cCgpLiIpLHRoaXMuYWRkR3JvdXAodCxuKX0sY2xlYXJEcmF3Q2FsbHM6ZnVuY3Rpb24oKXtjb25zb2xlLndhcm4oIlRIUkVFLkJ1ZmZlckdlb21ldHJ5OiAuY2xlYXJEcmF3Q2FsbHMoKSBpcyBub3cgLmNsZWFyR3JvdXBzKCkuIiksdGhpcy5jbGVhckdyb3VwcygpfSxjb21wdXRlT2Zmc2V0czpmdW5jdGlvbigpe2NvbnNvbGUud2FybigiVEhSRUUuQnVmZmVyR2VvbWV0cnk6IC5jb21wdXRlT2Zmc2V0cygpIGhhcyBiZWVuIHJlbW92ZWQuIil9LHJlbW92ZUF0dHJpYnV0ZTpmdW5jdGlvbih0KXtyZXR1cm4gY29uc29sZS53YXJuKCJUSFJFRS5CdWZmZXJHZW9tZXRyeTogLnJlbW92ZUF0dHJpYnV0ZSgpIGhhcyBiZWVuIHJlbmFtZWQgdG8gLmRlbGV0ZUF0dHJpYnV0ZSgpLiIpLHRoaXMuZGVsZXRlQXR0cmlidXRlKHQpfSxhcHBseU1hdHJpeDpmdW5jdGlvbih0KXtyZXR1cm4gY29uc29sZS53YXJuKCJUSFJFRS5CdWZmZXJHZW9tZXRyeTogLmFwcGx5TWF0cml4KCkgaGFzIGJlZW4gcmVuYW1lZCB0byAuYXBwbHlNYXRyaXg0KCkuIiksdGhpcy5hcHBseU1hdHJpeDQodCl9fSksT2JqZWN0LmRlZmluZVByb3BlcnRpZXMoWG50LnByb3RvdHlwZSx7ZHJhd2NhbGxzOntnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gY29uc29sZS5lcnJvcigiVEhSRUUuQnVmZmVyR2VvbWV0cnk6IC5kcmF3Y2FsbHMgaGFzIGJlZW4gcmVuYW1lZCB0byAuZ3JvdXBzLiIpLHRoaXMuZ3JvdXBzfX0sb2Zmc2V0czp7Z2V0OmZ1bmN0aW9uKCl7cmV0dXJuIGNvbnNvbGUud2FybigiVEhSRUUuQnVmZmVyR2VvbWV0cnk6IC5vZmZzZXRzIGhhcyBiZWVuIHJlbmFtZWQgdG8gLmdyb3Vwcy4iKSx0aGlzLmdyb3Vwc319fSksT2JqZWN0LmRlZmluZVByb3BlcnRpZXMoWWN0LnByb3RvdHlwZSx7bWF4SW5zdGFuY2VkQ291bnQ6e2dldDpmdW5jdGlvbigpe3JldHVybiBjb25zb2xlLndhcm4oIlRIUkVFLkluc3RhbmNlZEJ1ZmZlckdlb21ldHJ5OiAubWF4SW5zdGFuY2VkQ291bnQgaGFzIGJlZW4gcmVuYW1lZCB0byAuaW5zdGFuY2VDb3VudC4iKSx0aGlzLmluc3RhbmNlQ291bnR9LHNldDpmdW5jdGlvbih0KXtjb25zb2xlLndhcm4oIlRIUkVFLkluc3RhbmNlZEJ1ZmZlckdlb21ldHJ5OiAubWF4SW5zdGFuY2VkQ291bnQgaGFzIGJlZW4gcmVuYW1lZCB0byAuaW5zdGFuY2VDb3VudC4iKSx0aGlzLmluc3RhbmNlQ291bnQ9dH19fSksT2JqZWN0LmRlZmluZVByb3BlcnRpZXMoa3N0LnByb3RvdHlwZSx7bGluZVByZWNpc2lvbjp7Z2V0OmZ1bmN0aW9uKCl7cmV0dXJuIGNvbnNvbGUud2FybigiVEhSRUUuUmF5Y2FzdGVyOiAubGluZVByZWNpc2lvbiBoYXMgYmVlbiBkZXByZWNhdGVkLiBVc2UgLnBhcmFtcy5MaW5lLnRocmVzaG9sZCBpbnN0ZWFkLiIpLHRoaXMucGFyYW1zLkxpbmUudGhyZXNob2xkfSxzZXQ6ZnVuY3Rpb24odCl7Y29uc29sZS53YXJuKCJUSFJFRS5SYXljYXN0ZXI6IC5saW5lUHJlY2lzaW9uIGhhcyBiZWVuIGRlcHJlY2F0ZWQuIFVzZSAucGFyYW1zLkxpbmUudGhyZXNob2xkIGluc3RlYWQuIiksdGhpcy5wYXJhbXMuTGluZS50aHJlc2hvbGQ9dH19fSksT2JqZWN0LmRlZmluZVByb3BlcnRpZXMoVm90LnByb3RvdHlwZSx7ZHluYW1pYzp7Z2V0OmZ1bmN0aW9uKCl7cmV0dXJuIGNvbnNvbGUud2FybigiVEhSRUUuSW50ZXJsZWF2ZWRCdWZmZXI6IC5sZW5ndGggaGFzIGJlZW4gZGVwcmVjYXRlZC4gVXNlIC51c2FnZSBpbnN0ZWFkLiIpLHRoaXMudXNhZ2U9PT1MOX0sc2V0OmZ1bmN0aW9uKHQpe2NvbnNvbGUud2FybigiVEhSRUUuSW50ZXJsZWF2ZWRCdWZmZXI6IC5sZW5ndGggaGFzIGJlZW4gZGVwcmVjYXRlZC4gVXNlIC51c2FnZSBpbnN0ZWFkLiIpLHRoaXMuc2V0VXNhZ2UodCl9fX0pLE9iamVjdC5hc3NpZ24oVm90LnByb3RvdHlwZSx7c2V0RHluYW1pYzpmdW5jdGlvbih0KXtyZXR1cm4gY29uc29sZS53YXJuKCJUSFJFRS5JbnRlcmxlYXZlZEJ1ZmZlcjogLnNldER5bmFtaWMoKSBoYXMgYmVlbiBkZXByZWNhdGVkLiBVc2UgLnNldFVzYWdlKCkgaW5zdGVhZC4iKSx0aGlzLnNldFVzYWdlKCEwPT09dD9MOTpGOSksdGhpc30sc2V0QXJyYXk6ZnVuY3Rpb24oKXtjb25zb2xlLmVycm9yKCJUSFJFRS5JbnRlcmxlYXZlZEJ1ZmZlcjogLnNldEFycmF5IGhhcyBiZWVuIHJlbW92ZWQuIFVzZSBCdWZmZXJHZW9tZXRyeSAuc2V0QXR0cmlidXRlIHRvIHJlcGxhY2UvcmVzaXplIGF0dHJpYnV0ZSBidWZmZXJzIil9fSksT2JqZWN0LmFzc2lnbihNaXQucHJvdG90eXBlLHtnZXRBcnJheXM6ZnVuY3Rpb24oKXtjb25zb2xlLmVycm9yKCJUSFJFRS5FeHRydWRlR2VvbWV0cnk6IC5nZXRBcnJheXMoKSBoYXMgYmVlbiByZW1vdmVkLiIpfSxhZGRTaGFwZUxpc3Q6ZnVuY3Rpb24oKXtjb25zb2xlLmVycm9yKCJUSFJFRS5FeHRydWRlR2VvbWV0cnk6IC5hZGRTaGFwZUxpc3QoKSBoYXMgYmVlbiByZW1vdmVkLiIpfSxhZGRTaGFwZTpmdW5jdGlvbigpe2NvbnNvbGUuZXJyb3IoIlRIUkVFLkV4dHJ1ZGVHZW9tZXRyeTogLmFkZFNoYXBlKCkgaGFzIGJlZW4gcmVtb3ZlZC4iKX19KSxPYmplY3QuYXNzaWduKEJvdC5wcm90b3R5cGUse2Rpc3Bvc2U6ZnVuY3Rpb24oKXtjb25zb2xlLmVycm9yKCJUSFJFRS5TY2VuZTogLmRpc3Bvc2UoKSBoYXMgYmVlbiByZW1vdmVkLiIpfX0pLE9iamVjdC5kZWZpbmVQcm9wZXJ0aWVzKFBzdC5wcm90b3R5cGUse2R5bmFtaWM6e3NldDpmdW5jdGlvbigpe2NvbnNvbGUud2FybigiVEhSRUUuVW5pZm9ybTogLmR5bmFtaWMgaGFzIGJlZW4gcmVtb3ZlZC4gVXNlIG9iamVjdC5vbkJlZm9yZVJlbmRlcigpIGluc3RlYWQuIil9fSxvblVwZGF0ZTp7dmFsdWU6ZnVuY3Rpb24oKXtyZXR1cm4gY29uc29sZS53YXJuKCJUSFJFRS5Vbmlmb3JtOiAub25VcGRhdGUoKSBoYXMgYmVlbiByZW1vdmVkLiBVc2Ugb2JqZWN0Lm9uQmVmb3JlUmVuZGVyKCkgaW5zdGVhZC4iKSx0aGlzfX19KSxPYmplY3QuZGVmaW5lUHJvcGVydGllcyh5bnQucHJvdG90eXBlLHt3cmFwQXJvdW5kOntnZXQ6ZnVuY3Rpb24oKXtjb25zb2xlLndhcm4oIlRIUkVFLk1hdGVyaWFsOiAud3JhcEFyb3VuZCBoYXMgYmVlbiByZW1vdmVkLiIpfSxzZXQ6ZnVuY3Rpb24oKXtjb25zb2xlLndhcm4oIlRIUkVFLk1hdGVyaWFsOiAud3JhcEFyb3VuZCBoYXMgYmVlbiByZW1vdmVkLiIpfX0sb3ZlcmRyYXc6e2dldDpmdW5jdGlvbigpe2NvbnNvbGUud2FybigiVEhSRUUuTWF0ZXJpYWw6IC5vdmVyZHJhdyBoYXMgYmVlbiByZW1vdmVkLiIpfSxzZXQ6ZnVuY3Rpb24oKXtjb25zb2xlLndhcm4oIlRIUkVFLk1hdGVyaWFsOiAub3ZlcmRyYXcgaGFzIGJlZW4gcmVtb3ZlZC4iKX19LHdyYXBSR0I6e2dldDpmdW5jdGlvbigpe3JldHVybiBjb25zb2xlLndhcm4oIlRIUkVFLk1hdGVyaWFsOiAud3JhcFJHQiBoYXMgYmVlbiByZW1vdmVkLiIpLG5ldyBPbnR9fSxzaGFkaW5nOntnZXQ6ZnVuY3Rpb24oKXtjb25zb2xlLmVycm9yKCJUSFJFRS4iK3RoaXMudHlwZSsiOiAuc2hhZGluZyBoYXMgYmVlbiByZW1vdmVkLiBVc2UgdGhlIGJvb2xlYW4gLmZsYXRTaGFkaW5nIGluc3RlYWQuIil9LHNldDpmdW5jdGlvbih0KXtjb25zb2xlLndhcm4oIlRIUkVFLiIrdGhpcy50eXBlKyI6IC5zaGFkaW5nIGhhcyBiZWVuIHJlbW92ZWQuIFVzZSB0aGUgYm9vbGVhbiAuZmxhdFNoYWRpbmcgaW5zdGVhZC4iKSx0aGlzLmZsYXRTaGFkaW5nPTE9PT10fX0sc3RlbmNpbE1hc2s6e2dldDpmdW5jdGlvbigpe3JldHVybiBjb25zb2xlLndhcm4oIlRIUkVFLiIrdGhpcy50eXBlKyI6IC5zdGVuY2lsTWFzayBoYXMgYmVlbiByZW1vdmVkLiBVc2UgLnN0ZW5jaWxGdW5jTWFzayBpbnN0ZWFkLiIpLHRoaXMuc3RlbmNpbEZ1bmNNYXNrfSxzZXQ6ZnVuY3Rpb24odCl7Y29uc29sZS53YXJuKCJUSFJFRS4iK3RoaXMudHlwZSsiOiAuc3RlbmNpbE1hc2sgaGFzIGJlZW4gcmVtb3ZlZC4gVXNlIC5zdGVuY2lsRnVuY01hc2sgaW5zdGVhZC4iKSx0aGlzLnN0ZW5jaWxGdW5jTWFzaz10fX19KSxPYmplY3QuZGVmaW5lUHJvcGVydGllcyhTaXQucHJvdG90eXBlLHttZXRhbDp7Z2V0OmZ1bmN0aW9uKCl7cmV0dXJuIGNvbnNvbGUud2FybigiVEhSRUUuTWVzaFBob25nTWF0ZXJpYWw6IC5tZXRhbCBoYXMgYmVlbiByZW1vdmVkLiBVc2UgVEhSRUUuTWVzaFN0YW5kYXJkTWF0ZXJpYWwgaW5zdGVhZC4iKSwhMX0sc2V0OmZ1bmN0aW9uKCl7Y29uc29sZS53YXJuKCJUSFJFRS5NZXNoUGhvbmdNYXRlcmlhbDogLm1ldGFsIGhhcyBiZWVuIHJlbW92ZWQuIFVzZSBUSFJFRS5NZXNoU3RhbmRhcmRNYXRlcmlhbCBpbnN0ZWFkIil9fX0pLE9iamVjdC5kZWZpbmVQcm9wZXJ0aWVzKHdpdC5wcm90b3R5cGUse3RyYW5zcGFyZW5jeTp7Z2V0OmZ1bmN0aW9uKCl7cmV0dXJuIGNvbnNvbGUud2FybigiVEhSRUUuTWVzaFBoeXNpY2FsTWF0ZXJpYWw6IC50cmFuc3BhcmVuY3kgaGFzIGJlZW4gcmVuYW1lZCB0byAudHJhbnNtaXNzaW9uLiIpLHRoaXMudHJhbnNtaXNzaW9ufSxzZXQ6ZnVuY3Rpb24odCl7Y29uc29sZS53YXJuKCJUSFJFRS5NZXNoUGh5c2ljYWxNYXRlcmlhbDogLnRyYW5zcGFyZW5jeSBoYXMgYmVlbiByZW5hbWVkIHRvIC50cmFuc21pc3Npb24uIiksdGhpcy50cmFuc21pc3Npb249dH19fSksT2JqZWN0LmRlZmluZVByb3BlcnRpZXMoTWV0LnByb3RvdHlwZSx7ZGVyaXZhdGl2ZXM6e2dldDpmdW5jdGlvbigpe3JldHVybiBjb25zb2xlLndhcm4oIlRIUkVFLlNoYWRlck1hdGVyaWFsOiAuZGVyaXZhdGl2ZXMgaGFzIGJlZW4gbW92ZWQgdG8gLmV4dGVuc2lvbnMuZGVyaXZhdGl2ZXMuIiksdGhpcy5leHRlbnNpb25zLmRlcml2YXRpdmVzfSxzZXQ6ZnVuY3Rpb24odCl7Y29uc29sZS53YXJuKCJUSFJFRS4gU2hhZGVyTWF0ZXJpYWw6IC5kZXJpdmF0aXZlcyBoYXMgYmVlbiBtb3ZlZCB0byAuZXh0ZW5zaW9ucy5kZXJpdmF0aXZlcy4iKSx0aGlzLmV4dGVuc2lvbnMuZGVyaXZhdGl2ZXM9dH19fSksT2JqZWN0LmFzc2lnbihMb3QucHJvdG90eXBlLHtjbGVhclRhcmdldDpmdW5jdGlvbih0LG4sZSxhKXtjb25zb2xlLndhcm4oIlRIUkVFLldlYkdMUmVuZGVyZXI6IC5jbGVhclRhcmdldCgpIGhhcyBiZWVuIGRlcHJlY2F0ZWQuIFVzZSAuc2V0UmVuZGVyVGFyZ2V0KCkgYW5kIC5jbGVhcigpIGluc3RlYWQuIiksdGhpcy5zZXRSZW5kZXJUYXJnZXQodCksdGhpcy5jbGVhcihuLGUsYSl9LGFuaW1hdGU6ZnVuY3Rpb24odCl7Y29uc29sZS53YXJuKCJUSFJFRS5XZWJHTFJlbmRlcmVyOiAuYW5pbWF0ZSgpIGlzIG5vdyAuc2V0QW5pbWF0aW9uTG9vcCgpLiIpLHRoaXMuc2V0QW5pbWF0aW9uTG9vcCh0KX0sZ2V0Q3VycmVudFJlbmRlclRhcmdldDpmdW5jdGlvbigpe3JldHVybiBjb25zb2xlLndhcm4oIlRIUkVFLldlYkdMUmVuZGVyZXI6IC5nZXRDdXJyZW50UmVuZGVyVGFyZ2V0KCkgaXMgbm93IC5nZXRSZW5kZXJUYXJnZXQoKS4iKSx0aGlzLmdldFJlbmRlclRhcmdldCgpfSxnZXRNYXhBbmlzb3Ryb3B5OmZ1bmN0aW9uKCl7cmV0dXJuIGNvbnNvbGUud2FybigiVEhSRUUuV2ViR0xSZW5kZXJlcjogLmdldE1heEFuaXNvdHJvcHkoKSBpcyBub3cgLmNhcGFiaWxpdGllcy5nZXRNYXhBbmlzb3Ryb3B5KCkuIiksdGhpcy5jYXBhYmlsaXRpZXMuZ2V0TWF4QW5pc290cm9weSgpfSxnZXRQcmVjaXNpb246ZnVuY3Rpb24oKXtyZXR1cm4gY29uc29sZS53YXJuKCJUSFJFRS5XZWJHTFJlbmRlcmVyOiAuZ2V0UHJlY2lzaW9uKCkgaXMgbm93IC5jYXBhYmlsaXRpZXMucHJlY2lzaW9uLiIpLHRoaXMuY2FwYWJpbGl0aWVzLnByZWNpc2lvbn0scmVzZXRHTFN0YXRlOmZ1bmN0aW9uKCl7cmV0dXJuIGNvbnNvbGUud2FybigiVEhSRUUuV2ViR0xSZW5kZXJlcjogLnJlc2V0R0xTdGF0ZSgpIGlzIG5vdyAuc3RhdGUucmVzZXQoKS4iKSx0aGlzLnN0YXRlLnJlc2V0KCl9LHN1cHBvcnRzRmxvYXRUZXh0dXJlczpmdW5jdGlvbigpe3JldHVybiBjb25zb2xlLndhcm4oIlRIUkVFLldlYkdMUmVuZGVyZXI6IC5zdXBwb3J0c0Zsb2F0VGV4dHVyZXMoKSBpcyBub3cgLmV4dGVuc2lvbnMuZ2V0KCAnT0VTX3RleHR1cmVfZmxvYXQnICkuIiksdGhpcy5leHRlbnNpb25zLmdldCgiT0VTX3RleHR1cmVfZmxvYXQiKX0sc3VwcG9ydHNIYWxmRmxvYXRUZXh0dXJlczpmdW5jdGlvbigpe3JldHVybiBjb25zb2xlLndhcm4oIlRIUkVFLldlYkdMUmVuZGVyZXI6IC5zdXBwb3J0c0hhbGZGbG9hdFRleHR1cmVzKCkgaXMgbm93IC5leHRlbnNpb25zLmdldCggJ09FU190ZXh0dXJlX2hhbGZfZmxvYXQnICkuIiksdGhpcy5leHRlbnNpb25zLmdldCgiT0VTX3RleHR1cmVfaGFsZl9mbG9hdCIpfSxzdXBwb3J0c1N0YW5kYXJkRGVyaXZhdGl2ZXM6ZnVuY3Rpb24oKXtyZXR1cm4gY29uc29sZS53YXJuKCJUSFJFRS5XZWJHTFJlbmRlcmVyOiAuc3VwcG9ydHNTdGFuZGFyZERlcml2YXRpdmVzKCkgaXMgbm93IC5leHRlbnNpb25zLmdldCggJ09FU19zdGFuZGFyZF9kZXJpdmF0aXZlcycgKS4iKSx0aGlzLmV4dGVuc2lvbnMuZ2V0KCJPRVNfc3RhbmRhcmRfZGVyaXZhdGl2ZXMiKX0sc3VwcG9ydHNDb21wcmVzc2VkVGV4dHVyZVMzVEM6ZnVuY3Rpb24oKXtyZXR1cm4gY29uc29sZS53YXJuKCJUSFJFRS5XZWJHTFJlbmRlcmVyOiAuc3VwcG9ydHNDb21wcmVzc2VkVGV4dHVyZVMzVEMoKSBpcyBub3cgLmV4dGVuc2lvbnMuZ2V0KCAnV0VCR0xfY29tcHJlc3NlZF90ZXh0dXJlX3MzdGMnICkuIiksdGhpcy5leHRlbnNpb25zLmdldCgiV0VCR0xfY29tcHJlc3NlZF90ZXh0dXJlX3MzdGMiKX0sc3VwcG9ydHNDb21wcmVzc2VkVGV4dHVyZVBWUlRDOmZ1bmN0aW9uKCl7cmV0dXJuIGNvbnNvbGUud2FybigiVEhSRUUuV2ViR0xSZW5kZXJlcjogLnN1cHBvcnRzQ29tcHJlc3NlZFRleHR1cmVQVlJUQygpIGlzIG5vdyAuZXh0ZW5zaW9ucy5nZXQoICdXRUJHTF9jb21wcmVzc2VkX3RleHR1cmVfcHZydGMnICkuIiksdGhpcy5leHRlbnNpb25zLmdldCgiV0VCR0xfY29tcHJlc3NlZF90ZXh0dXJlX3B2cnRjIil9LHN1cHBvcnRzQmxlbmRNaW5NYXg6ZnVuY3Rpb24oKXtyZXR1cm4gY29uc29sZS53YXJuKCJUSFJFRS5XZWJHTFJlbmRlcmVyOiAuc3VwcG9ydHNCbGVuZE1pbk1heCgpIGlzIG5vdyAuZXh0ZW5zaW9ucy5nZXQoICdFWFRfYmxlbmRfbWlubWF4JyApLiIpLHRoaXMuZXh0ZW5zaW9ucy5nZXQoIkVYVF9ibGVuZF9taW5tYXgiKX0sc3VwcG9ydHNWZXJ0ZXhUZXh0dXJlczpmdW5jdGlvbigpe3JldHVybiBjb25zb2xlLndhcm4oIlRIUkVFLldlYkdMUmVuZGVyZXI6IC5zdXBwb3J0c1ZlcnRleFRleHR1cmVzKCkgaXMgbm93IC5jYXBhYmlsaXRpZXMudmVydGV4VGV4dHVyZXMuIiksdGhpcy5jYXBhYmlsaXRpZXMudmVydGV4VGV4dHVyZXN9LHN1cHBvcnRzSW5zdGFuY2VkQXJyYXlzOmZ1bmN0aW9uKCl7cmV0dXJuIGNvbnNvbGUud2FybigiVEhSRUUuV2ViR0xSZW5kZXJlcjogLnN1cHBvcnRzSW5zdGFuY2VkQXJyYXlzKCkgaXMgbm93IC5leHRlbnNpb25zLmdldCggJ0FOR0xFX2luc3RhbmNlZF9hcnJheXMnICkuIiksdGhpcy5leHRlbnNpb25zLmdldCgiQU5HTEVfaW5zdGFuY2VkX2FycmF5cyIpfSxlbmFibGVTY2lzc29yVGVzdDpmdW5jdGlvbih0KXtjb25zb2xlLndhcm4oIlRIUkVFLldlYkdMUmVuZGVyZXI6IC5lbmFibGVTY2lzc29yVGVzdCgpIGlzIG5vdyAuc2V0U2Npc3NvclRlc3QoKS4iKSx0aGlzLnNldFNjaXNzb3JUZXN0KHQpfSxpbml0TWF0ZXJpYWw6ZnVuY3Rpb24oKXtjb25zb2xlLndhcm4oIlRIUkVFLldlYkdMUmVuZGVyZXI6IC5pbml0TWF0ZXJpYWwoKSBoYXMgYmVlbiByZW1vdmVkLiIpfSxhZGRQcmVQbHVnaW46ZnVuY3Rpb24oKXtjb25zb2xlLndhcm4oIlRIUkVFLldlYkdMUmVuZGVyZXI6IC5hZGRQcmVQbHVnaW4oKSBoYXMgYmVlbiByZW1vdmVkLiIpfSxhZGRQb3N0UGx1Z2luOmZ1bmN0aW9uKCl7Y29uc29sZS53YXJuKCJUSFJFRS5XZWJHTFJlbmRlcmVyOiAuYWRkUG9zdFBsdWdpbigpIGhhcyBiZWVuIHJlbW92ZWQuIil9LHVwZGF0ZVNoYWRvd01hcDpmdW5jdGlvbigpe2NvbnNvbGUud2FybigiVEhSRUUuV2ViR0xSZW5kZXJlcjogLnVwZGF0ZVNoYWRvd01hcCgpIGhhcyBiZWVuIHJlbW92ZWQuIil9LHNldEZhY2VDdWxsaW5nOmZ1bmN0aW9uKCl7Y29uc29sZS53YXJuKCJUSFJFRS5XZWJHTFJlbmRlcmVyOiAuc2V0RmFjZUN1bGxpbmcoKSBoYXMgYmVlbiByZW1vdmVkLiIpfSxhbGxvY1RleHR1cmVVbml0OmZ1bmN0aW9uKCl7Y29uc29sZS53YXJuKCJUSFJFRS5XZWJHTFJlbmRlcmVyOiAuYWxsb2NUZXh0dXJlVW5pdCgpIGhhcyBiZWVuIHJlbW92ZWQuIil9LHNldFRleHR1cmU6ZnVuY3Rpb24oKXtjb25zb2xlLndhcm4oIlRIUkVFLldlYkdMUmVuZGVyZXI6IC5zZXRUZXh0dXJlKCkgaGFzIGJlZW4gcmVtb3ZlZC4iKX0sc2V0VGV4dHVyZTJEOmZ1bmN0aW9uKCl7Y29uc29sZS53YXJuKCJUSFJFRS5XZWJHTFJlbmRlcmVyOiAuc2V0VGV4dHVyZTJEKCkgaGFzIGJlZW4gcmVtb3ZlZC4iKX0sc2V0VGV4dHVyZUN1YmU6ZnVuY3Rpb24oKXtjb25zb2xlLndhcm4oIlRIUkVFLldlYkdMUmVuZGVyZXI6IC5zZXRUZXh0dXJlQ3ViZSgpIGhhcyBiZWVuIHJlbW92ZWQuIil9LGdldEFjdGl2ZU1pcE1hcExldmVsOmZ1bmN0aW9uKCl7cmV0dXJuIGNvbnNvbGUud2FybigiVEhSRUUuV2ViR0xSZW5kZXJlcjogLmdldEFjdGl2ZU1pcE1hcExldmVsKCkgaXMgbm93IC5nZXRBY3RpdmVNaXBtYXBMZXZlbCgpLiIpLHRoaXMuZ2V0QWN0aXZlTWlwbWFwTGV2ZWwoKX19KSxPYmplY3QuZGVmaW5lUHJvcGVydGllcyhMb3QucHJvdG90eXBlLHtzaGFkb3dNYXBFbmFibGVkOntnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5zaGFkb3dNYXAuZW5hYmxlZH0sc2V0OmZ1bmN0aW9uKHQpe2NvbnNvbGUud2FybigiVEhSRUUuV2ViR0xSZW5kZXJlcjogLnNoYWRvd01hcEVuYWJsZWQgaXMgbm93IC5zaGFkb3dNYXAuZW5hYmxlZC4iKSx0aGlzLnNoYWRvd01hcC5lbmFibGVkPXR9fSxzaGFkb3dNYXBUeXBlOntnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5zaGFkb3dNYXAudHlwZX0sc2V0OmZ1bmN0aW9uKHQpe2NvbnNvbGUud2FybigiVEhSRUUuV2ViR0xSZW5kZXJlcjogLnNoYWRvd01hcFR5cGUgaXMgbm93IC5zaGFkb3dNYXAudHlwZS4iKSx0aGlzLnNoYWRvd01hcC50eXBlPXR9fSxzaGFkb3dNYXBDdWxsRmFjZTp7Z2V0OmZ1bmN0aW9uKCl7Y29uc29sZS53YXJuKCJUSFJFRS5XZWJHTFJlbmRlcmVyOiAuc2hhZG93TWFwQ3VsbEZhY2UgaGFzIGJlZW4gcmVtb3ZlZC4gU2V0IE1hdGVyaWFsLnNoYWRvd1NpZGUgaW5zdGVhZC4iKX0sc2V0OmZ1bmN0aW9uKCl7Y29uc29sZS53YXJuKCJUSFJFRS5XZWJHTFJlbmRlcmVyOiAuc2hhZG93TWFwQ3VsbEZhY2UgaGFzIGJlZW4gcmVtb3ZlZC4gU2V0IE1hdGVyaWFsLnNoYWRvd1NpZGUgaW5zdGVhZC4iKX19LGNvbnRleHQ6e2dldDpmdW5jdGlvbigpe3JldHVybiBjb25zb2xlLndhcm4oIlRIUkVFLldlYkdMUmVuZGVyZXI6IC5jb250ZXh0IGhhcyBiZWVuIHJlbW92ZWQuIFVzZSAuZ2V0Q29udGV4dCgpIGluc3RlYWQuIiksdGhpcy5nZXRDb250ZXh0KCl9fSx2cjp7Z2V0OmZ1bmN0aW9uKCl7cmV0dXJuIGNvbnNvbGUud2FybigiVEhSRUUuV2ViR0xSZW5kZXJlcjogLnZyIGhhcyBiZWVuIHJlbmFtZWQgdG8gLnhyIiksdGhpcy54cn19LGdhbW1hSW5wdXQ6e2dldDpmdW5jdGlvbigpe3JldHVybiBjb25zb2xlLndhcm4oIlRIUkVFLldlYkdMUmVuZGVyZXI6IC5nYW1tYUlucHV0IGhhcyBiZWVuIHJlbW92ZWQuIFNldCB0aGUgZW5jb2RpbmcgZm9yIHRleHR1cmVzIHZpYSBUZXh0dXJlLmVuY29kaW5nIGluc3RlYWQuIiksITF9LHNldDpmdW5jdGlvbigpe2NvbnNvbGUud2FybigiVEhSRUUuV2ViR0xSZW5kZXJlcjogLmdhbW1hSW5wdXQgaGFzIGJlZW4gcmVtb3ZlZC4gU2V0IHRoZSBlbmNvZGluZyBmb3IgdGV4dHVyZXMgdmlhIFRleHR1cmUuZW5jb2RpbmcgaW5zdGVhZC4iKX19LGdhbW1hT3V0cHV0OntnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gY29uc29sZS53YXJuKCJUSFJFRS5XZWJHTFJlbmRlcmVyOiAuZ2FtbWFPdXRwdXQgaGFzIGJlZW4gcmVtb3ZlZC4gU2V0IFdlYkdMUmVuZGVyZXIub3V0cHV0RW5jb2RpbmcgaW5zdGVhZC4iKSwhMX0sc2V0OmZ1bmN0aW9uKHQpe2NvbnNvbGUud2FybigiVEhSRUUuV2ViR0xSZW5kZXJlcjogLmdhbW1hT3V0cHV0IGhhcyBiZWVuIHJlbW92ZWQuIFNldCBXZWJHTFJlbmRlcmVyLm91dHB1dEVuY29kaW5nIGluc3RlYWQuIiksdGhpcy5vdXRwdXRFbmNvZGluZz0hMD09PXQ/MzAwMTpJOX19LHRvbmVNYXBwaW5nV2hpdGVQb2ludDp7Z2V0OmZ1bmN0aW9uKCl7cmV0dXJuIGNvbnNvbGUud2FybigiVEhSRUUuV2ViR0xSZW5kZXJlcjogLnRvbmVNYXBwaW5nV2hpdGVQb2ludCBoYXMgYmVlbiByZW1vdmVkLiIpLDF9LHNldDpmdW5jdGlvbigpe2NvbnNvbGUud2FybigiVEhSRUUuV2ViR0xSZW5kZXJlcjogLnRvbmVNYXBwaW5nV2hpdGVQb2ludCBoYXMgYmVlbiByZW1vdmVkLiIpfX19KSxPYmplY3QuZGVmaW5lUHJvcGVydGllcyhFb3QucHJvdG90eXBlLHtjdWxsRmFjZTp7Z2V0OmZ1bmN0aW9uKCl7Y29uc29sZS53YXJuKCJUSFJFRS5XZWJHTFJlbmRlcmVyOiAuc2hhZG93TWFwLmN1bGxGYWNlIGhhcyBiZWVuIHJlbW92ZWQuIFNldCBNYXRlcmlhbC5zaGFkb3dTaWRlIGluc3RlYWQuIil9LHNldDpmdW5jdGlvbigpe2NvbnNvbGUud2FybigiVEhSRUUuV2ViR0xSZW5kZXJlcjogLnNoYWRvd01hcC5jdWxsRmFjZSBoYXMgYmVlbiByZW1vdmVkLiBTZXQgTWF0ZXJpYWwuc2hhZG93U2lkZSBpbnN0ZWFkLiIpfX0scmVuZGVyUmV2ZXJzZVNpZGVkOntnZXQ6ZnVuY3Rpb24oKXtjb25zb2xlLndhcm4oIlRIUkVFLldlYkdMUmVuZGVyZXI6IC5zaGFkb3dNYXAucmVuZGVyUmV2ZXJzZVNpZGVkIGhhcyBiZWVuIHJlbW92ZWQuIFNldCBNYXRlcmlhbC5zaGFkb3dTaWRlIGluc3RlYWQuIil9LHNldDpmdW5jdGlvbigpe2NvbnNvbGUud2FybigiVEhSRUUuV2ViR0xSZW5kZXJlcjogLnNoYWRvd01hcC5yZW5kZXJSZXZlcnNlU2lkZWQgaGFzIGJlZW4gcmVtb3ZlZC4gU2V0IE1hdGVyaWFsLnNoYWRvd1NpZGUgaW5zdGVhZC4iKX19LHJlbmRlclNpbmdsZVNpZGVkOntnZXQ6ZnVuY3Rpb24oKXtjb25zb2xlLndhcm4oIlRIUkVFLldlYkdMUmVuZGVyZXI6IC5zaGFkb3dNYXAucmVuZGVyU2luZ2xlU2lkZWQgaGFzIGJlZW4gcmVtb3ZlZC4gU2V0IE1hdGVyaWFsLnNoYWRvd1NpZGUgaW5zdGVhZC4iKX0sc2V0OmZ1bmN0aW9uKCl7Y29uc29sZS53YXJuKCJUSFJFRS5XZWJHTFJlbmRlcmVyOiAuc2hhZG93TWFwLnJlbmRlclNpbmdsZVNpZGVkIGhhcyBiZWVuIHJlbW92ZWQuIFNldCBNYXRlcmlhbC5zaGFkb3dTaWRlIGluc3RlYWQuIil9fX0pLE9iamVjdC5kZWZpbmVQcm9wZXJ0aWVzKEs5LnByb3RvdHlwZSx7d3JhcFM6e2dldDpmdW5jdGlvbigpe3JldHVybiBjb25zb2xlLndhcm4oIlRIUkVFLldlYkdMUmVuZGVyVGFyZ2V0OiAud3JhcFMgaXMgbm93IC50ZXh0dXJlLndyYXBTLiIpLHRoaXMudGV4dHVyZS53cmFwU30sc2V0OmZ1bmN0aW9uKHQpe2NvbnNvbGUud2FybigiVEhSRUUuV2ViR0xSZW5kZXJUYXJnZXQ6IC53cmFwUyBpcyBub3cgLnRleHR1cmUud3JhcFMuIiksdGhpcy50ZXh0dXJlLndyYXBTPXR9fSx3cmFwVDp7Z2V0OmZ1bmN0aW9uKCl7cmV0dXJuIGNvbnNvbGUud2FybigiVEhSRUUuV2ViR0xSZW5kZXJUYXJnZXQ6IC53cmFwVCBpcyBub3cgLnRleHR1cmUud3JhcFQuIiksdGhpcy50ZXh0dXJlLndyYXBUfSxzZXQ6ZnVuY3Rpb24odCl7Y29uc29sZS53YXJuKCJUSFJFRS5XZWJHTFJlbmRlclRhcmdldDogLndyYXBUIGlzIG5vdyAudGV4dHVyZS53cmFwVC4iKSx0aGlzLnRleHR1cmUud3JhcFQ9dH19LG1hZ0ZpbHRlcjp7Z2V0OmZ1bmN0aW9uKCl7cmV0dXJuIGNvbnNvbGUud2FybigiVEhSRUUuV2ViR0xSZW5kZXJUYXJnZXQ6IC5tYWdGaWx0ZXIgaXMgbm93IC50ZXh0dXJlLm1hZ0ZpbHRlci4iKSx0aGlzLnRleHR1cmUubWFnRmlsdGVyfSxzZXQ6ZnVuY3Rpb24odCl7Y29uc29sZS53YXJuKCJUSFJFRS5XZWJHTFJlbmRlclRhcmdldDogLm1hZ0ZpbHRlciBpcyBub3cgLnRleHR1cmUubWFnRmlsdGVyLiIpLHRoaXMudGV4dHVyZS5tYWdGaWx0ZXI9dH19LG1pbkZpbHRlcjp7Z2V0OmZ1bmN0aW9uKCl7cmV0dXJuIGNvbnNvbGUud2FybigiVEhSRUUuV2ViR0xSZW5kZXJUYXJnZXQ6IC5taW5GaWx0ZXIgaXMgbm93IC50ZXh0dXJlLm1pbkZpbHRlci4iKSx0aGlzLnRleHR1cmUubWluRmlsdGVyfSxzZXQ6ZnVuY3Rpb24odCl7Y29uc29sZS53YXJuKCJUSFJFRS5XZWJHTFJlbmRlclRhcmdldDogLm1pbkZpbHRlciBpcyBub3cgLnRleHR1cmUubWluRmlsdGVyLiIpLHRoaXMudGV4dHVyZS5taW5GaWx0ZXI9dH19LGFuaXNvdHJvcHk6e2dldDpmdW5jdGlvbigpe3JldHVybiBjb25zb2xlLndhcm4oIlRIUkVFLldlYkdMUmVuZGVyVGFyZ2V0OiAuYW5pc290cm9weSBpcyBub3cgLnRleHR1cmUuYW5pc290cm9weS4iKSx0aGlzLnRleHR1cmUuYW5pc290cm9weX0sc2V0OmZ1bmN0aW9uKHQpe2NvbnNvbGUud2FybigiVEhSRUUuV2ViR0xSZW5kZXJUYXJnZXQ6IC5hbmlzb3Ryb3B5IGlzIG5vdyAudGV4dHVyZS5hbmlzb3Ryb3B5LiIpLHRoaXMudGV4dHVyZS5hbmlzb3Ryb3B5PXR9fSxvZmZzZXQ6e2dldDpmdW5jdGlvbigpe3JldHVybiBjb25zb2xlLndhcm4oIlRIUkVFLldlYkdMUmVuZGVyVGFyZ2V0OiAub2Zmc2V0IGlzIG5vdyAudGV4dHVyZS5vZmZzZXQuIiksdGhpcy50ZXh0dXJlLm9mZnNldH0sc2V0OmZ1bmN0aW9uKHQpe2NvbnNvbGUud2FybigiVEhSRUUuV2ViR0xSZW5kZXJUYXJnZXQ6IC5vZmZzZXQgaXMgbm93IC50ZXh0dXJlLm9mZnNldC4iKSx0aGlzLnRleHR1cmUub2Zmc2V0PXR9fSxyZXBlYXQ6e2dldDpmdW5jdGlvbigpe3JldHVybiBjb25zb2xlLndhcm4oIlRIUkVFLldlYkdMUmVuZGVyVGFyZ2V0OiAucmVwZWF0IGlzIG5vdyAudGV4dHVyZS5yZXBlYXQuIiksdGhpcy50ZXh0dXJlLnJlcGVhdH0sc2V0OmZ1bmN0aW9uKHQpe2NvbnNvbGUud2FybigiVEhSRUUuV2ViR0xSZW5kZXJUYXJnZXQ6IC5yZXBlYXQgaXMgbm93IC50ZXh0dXJlLnJlcGVhdC4iKSx0aGlzLnRleHR1cmUucmVwZWF0PXR9fSxmb3JtYXQ6e2dldDpmdW5jdGlvbigpe3JldHVybiBjb25zb2xlLndhcm4oIlRIUkVFLldlYkdMUmVuZGVyVGFyZ2V0OiAuZm9ybWF0IGlzIG5vdyAudGV4dHVyZS5mb3JtYXQuIiksdGhpcy50ZXh0dXJlLmZvcm1hdH0sc2V0OmZ1bmN0aW9uKHQpe2NvbnNvbGUud2FybigiVEhSRUUuV2ViR0xSZW5kZXJUYXJnZXQ6IC5mb3JtYXQgaXMgbm93IC50ZXh0dXJlLmZvcm1hdC4iKSx0aGlzLnRleHR1cmUuZm9ybWF0PXR9fSx0eXBlOntnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gY29uc29sZS53YXJuKCJUSFJFRS5XZWJHTFJlbmRlclRhcmdldDogLnR5cGUgaXMgbm93IC50ZXh0dXJlLnR5cGUuIiksdGhpcy50ZXh0dXJlLnR5cGV9LHNldDpmdW5jdGlvbih0KXtjb25zb2xlLndhcm4oIlRIUkVFLldlYkdMUmVuZGVyVGFyZ2V0OiAudHlwZSBpcyBub3cgLnRleHR1cmUudHlwZS4iKSx0aGlzLnRleHR1cmUudHlwZT10fX0sZ2VuZXJhdGVNaXBtYXBzOntnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gY29uc29sZS53YXJuKCJUSFJFRS5XZWJHTFJlbmRlclRhcmdldDogLmdlbmVyYXRlTWlwbWFwcyBpcyBub3cgLnRleHR1cmUuZ2VuZXJhdGVNaXBtYXBzLiIpLHRoaXMudGV4dHVyZS5nZW5lcmF0ZU1pcG1hcHN9LHNldDpmdW5jdGlvbih0KXtjb25zb2xlLndhcm4oIlRIUkVFLldlYkdMUmVuZGVyVGFyZ2V0OiAuZ2VuZXJhdGVNaXBtYXBzIGlzIG5vdyAudGV4dHVyZS5nZW5lcmF0ZU1pcG1hcHMuIiksdGhpcy50ZXh0dXJlLmdlbmVyYXRlTWlwbWFwcz10fX19KSxPYmplY3QuZGVmaW5lUHJvcGVydGllcyhjbGFzcyBleHRlbmRzICR0dHtjb25zdHJ1Y3Rvcih0KXtzdXBlcigpLHRoaXMudHlwZT0iQXVkaW8iLHRoaXMubGlzdGVuZXI9dCx0aGlzLmNvbnRleHQ9dC5jb250ZXh0LHRoaXMuZ2Fpbj10aGlzLmNvbnRleHQuY3JlYXRlR2FpbigpLHRoaXMuZ2Fpbi5jb25uZWN0KHQuZ2V0SW5wdXQoKSksdGhpcy5hdXRvcGxheT0hMSx0aGlzLmJ1ZmZlcj1udWxsLHRoaXMuZGV0dW5lPTAsdGhpcy5sb29wPSExLHRoaXMubG9vcFN0YXJ0PTAsdGhpcy5sb29wRW5kPTAsdGhpcy5vZmZzZXQ9MCx0aGlzLmR1cmF0aW9uPXZvaWQgMCx0aGlzLnBsYXliYWNrUmF0ZT0xLHRoaXMuaXNQbGF5aW5nPSExLHRoaXMuaGFzUGxheWJhY2tDb250cm9sPSEwLHRoaXMuc291cmNlPW51bGwsdGhpcy5zb3VyY2VUeXBlPSJlbXB0eSIsdGhpcy5fc3RhcnRlZEF0PTAsdGhpcy5fcHJvZ3Jlc3M9MCx0aGlzLl9jb25uZWN0ZWQ9ITEsdGhpcy5maWx0ZXJzPVtdfWdldE91dHB1dCgpe3JldHVybiB0aGlzLmdhaW59c2V0Tm9kZVNvdXJjZSh0KXtyZXR1cm4gdGhpcy5oYXNQbGF5YmFja0NvbnRyb2w9ITEsdGhpcy5zb3VyY2VUeXBlPSJhdWRpb05vZGUiLHRoaXMuc291cmNlPXQsdGhpcy5jb25uZWN0KCksdGhpc31zZXRNZWRpYUVsZW1lbnRTb3VyY2UodCl7cmV0dXJuIHRoaXMuaGFzUGxheWJhY2tDb250cm9sPSExLHRoaXMuc291cmNlVHlwZT0ibWVkaWFOb2RlIix0aGlzLnNvdXJjZT10aGlzLmNvbnRleHQuY3JlYXRlTWVkaWFFbGVtZW50U291cmNlKHQpLHRoaXMuY29ubmVjdCgpLHRoaXN9c2V0TWVkaWFTdHJlYW1Tb3VyY2UodCl7cmV0dXJuIHRoaXMuaGFzUGxheWJhY2tDb250cm9sPSExLHRoaXMuc291cmNlVHlwZT0ibWVkaWFTdHJlYW1Ob2RlIix0aGlzLnNvdXJjZT10aGlzLmNvbnRleHQuY3JlYXRlTWVkaWFTdHJlYW1Tb3VyY2UodCksdGhpcy5jb25uZWN0KCksdGhpc31zZXRCdWZmZXIodCl7cmV0dXJuIHRoaXMuYnVmZmVyPXQsdGhpcy5zb3VyY2VUeXBlPSJidWZmZXIiLHRoaXMuYXV0b3BsYXkmJnRoaXMucGxheSgpLHRoaXN9cGxheSh0PTApe2lmKCEwPT09dGhpcy5pc1BsYXlpbmcpcmV0dXJuIHZvaWQgY29uc29sZS53YXJuKCJUSFJFRS5BdWRpbzogQXVkaW8gaXMgYWxyZWFkeSBwbGF5aW5nLiIpO2lmKCExPT09dGhpcy5oYXNQbGF5YmFja0NvbnRyb2wpcmV0dXJuIHZvaWQgY29uc29sZS53YXJuKCJUSFJFRS5BdWRpbzogdGhpcyBBdWRpbyBoYXMgbm8gcGxheWJhY2sgY29udHJvbC4iKTt0aGlzLl9zdGFydGVkQXQ9dGhpcy5jb250ZXh0LmN1cnJlbnRUaW1lK3Q7Y29uc3Qgbj10aGlzLmNvbnRleHQuY3JlYXRlQnVmZmVyU291cmNlKCk7cmV0dXJuIG4uYnVmZmVyPXRoaXMuYnVmZmVyLG4ubG9vcD10aGlzLmxvb3Asbi5sb29wU3RhcnQ9dGhpcy5sb29wU3RhcnQsbi5sb29wRW5kPXRoaXMubG9vcEVuZCxuLm9uZW5kZWQ9dGhpcy5vbkVuZGVkLmJpbmQodGhpcyksbi5zdGFydCh0aGlzLl9zdGFydGVkQXQsdGhpcy5fcHJvZ3Jlc3MrdGhpcy5vZmZzZXQsdGhpcy5kdXJhdGlvbiksdGhpcy5pc1BsYXlpbmc9ITAsdGhpcy5zb3VyY2U9bix0aGlzLnNldERldHVuZSh0aGlzLmRldHVuZSksdGhpcy5zZXRQbGF5YmFja1JhdGUodGhpcy5wbGF5YmFja1JhdGUpLHRoaXMuY29ubmVjdCgpfXBhdXNlKCl7aWYoITEhPT10aGlzLmhhc1BsYXliYWNrQ29udHJvbClyZXR1cm4hMD09PXRoaXMuaXNQbGF5aW5nJiYodGhpcy5fcHJvZ3Jlc3MrPU1hdGgubWF4KHRoaXMuY29udGV4dC5jdXJyZW50VGltZS10aGlzLl9zdGFydGVkQXQsMCkqdGhpcy5wbGF5YmFja1JhdGUsITA9PT10aGlzLmxvb3AmJih0aGlzLl9wcm9ncmVzcz10aGlzLl9wcm9ncmVzcyUodGhpcy5kdXJhdGlvbnx8dGhpcy5idWZmZXIuZHVyYXRpb24pKSx0aGlzLnNvdXJjZS5zdG9wKCksdGhpcy5zb3VyY2Uub25lbmRlZD1udWxsLHRoaXMuaXNQbGF5aW5nPSExKSx0aGlzO2NvbnNvbGUud2FybigiVEhSRUUuQXVkaW86IHRoaXMgQXVkaW8gaGFzIG5vIHBsYXliYWNrIGNvbnRyb2wuIil9c3RvcCgpe2lmKCExIT09dGhpcy5oYXNQbGF5YmFja0NvbnRyb2wpcmV0dXJuIHRoaXMuX3Byb2dyZXNzPTAsdGhpcy5zb3VyY2Uuc3RvcCgpLHRoaXMuc291cmNlLm9uZW5kZWQ9bnVsbCx0aGlzLmlzUGxheWluZz0hMSx0aGlzO2NvbnNvbGUud2FybigiVEhSRUUuQXVkaW86IHRoaXMgQXVkaW8gaGFzIG5vIHBsYXliYWNrIGNvbnRyb2wuIil9Y29ubmVjdCgpe2lmKHRoaXMuZmlsdGVycy5sZW5ndGg+MCl7dGhpcy5zb3VyY2UuY29ubmVjdCh0aGlzLmZpbHRlcnNbMF0pO2ZvcihsZXQgdD0xLG49dGhpcy5maWx0ZXJzLmxlbmd0aDt0PG47dCsrKXRoaXMuZmlsdGVyc1t0LTFdLmNvbm5lY3QodGhpcy5maWx0ZXJzW3RdKTt0aGlzLmZpbHRlcnNbdGhpcy5maWx0ZXJzLmxlbmd0aC0xXS5jb25uZWN0KHRoaXMuZ2V0T3V0cHV0KCkpfWVsc2UgdGhpcy5zb3VyY2UuY29ubmVjdCh0aGlzLmdldE91dHB1dCgpKTtyZXR1cm4gdGhpcy5fY29ubmVjdGVkPSEwLHRoaXN9ZGlzY29ubmVjdCgpe2lmKHRoaXMuZmlsdGVycy5sZW5ndGg+MCl7dGhpcy5zb3VyY2UuZGlzY29ubmVjdCh0aGlzLmZpbHRlcnNbMF0pO2ZvcihsZXQgdD0xLG49dGhpcy5maWx0ZXJzLmxlbmd0aDt0PG47dCsrKXRoaXMuZmlsdGVyc1t0LTFdLmRpc2Nvbm5lY3QodGhpcy5maWx0ZXJzW3RdKTt0aGlzLmZpbHRlcnNbdGhpcy5maWx0ZXJzLmxlbmd0aC0xXS5kaXNjb25uZWN0KHRoaXMuZ2V0T3V0cHV0KCkpfWVsc2UgdGhpcy5zb3VyY2UuZGlzY29ubmVjdCh0aGlzLmdldE91dHB1dCgpKTtyZXR1cm4gdGhpcy5fY29ubmVjdGVkPSExLHRoaXN9Z2V0RmlsdGVycygpe3JldHVybiB0aGlzLmZpbHRlcnN9c2V0RmlsdGVycyh0KXtyZXR1cm4gdHx8KHQ9W10pLCEwPT09dGhpcy5fY29ubmVjdGVkPyh0aGlzLmRpc2Nvbm5lY3QoKSx0aGlzLmZpbHRlcnM9dC5zbGljZSgpLHRoaXMuY29ubmVjdCgpKTp0aGlzLmZpbHRlcnM9dC5zbGljZSgpLHRoaXN9c2V0RGV0dW5lKHQpe2lmKHRoaXMuZGV0dW5lPXQsdm9pZCAwIT09dGhpcy5zb3VyY2UuZGV0dW5lKXJldHVybiEwPT09dGhpcy5pc1BsYXlpbmcmJnRoaXMuc291cmNlLmRldHVuZS5zZXRUYXJnZXRBdFRpbWUodGhpcy5kZXR1bmUsdGhpcy5jb250ZXh0LmN1cnJlbnRUaW1lLC4wMSksdGhpc31nZXREZXR1bmUoKXtyZXR1cm4gdGhpcy5kZXR1bmV9Z2V0RmlsdGVyKCl7cmV0dXJuIHRoaXMuZ2V0RmlsdGVycygpWzBdfXNldEZpbHRlcih0KXtyZXR1cm4gdGhpcy5zZXRGaWx0ZXJzKHQ/W3RdOltdKX1zZXRQbGF5YmFja1JhdGUodCl7aWYoITEhPT10aGlzLmhhc1BsYXliYWNrQ29udHJvbClyZXR1cm4gdGhpcy5wbGF5YmFja1JhdGU9dCwhMD09PXRoaXMuaXNQbGF5aW5nJiZ0aGlzLnNvdXJjZS5wbGF5YmFja1JhdGUuc2V0VGFyZ2V0QXRUaW1lKHRoaXMucGxheWJhY2tSYXRlLHRoaXMuY29udGV4dC5jdXJyZW50VGltZSwuMDEpLHRoaXM7Y29uc29sZS53YXJuKCJUSFJFRS5BdWRpbzogdGhpcyBBdWRpbyBoYXMgbm8gcGxheWJhY2sgY29udHJvbC4iKX1nZXRQbGF5YmFja1JhdGUoKXtyZXR1cm4gdGhpcy5wbGF5YmFja1JhdGV9b25FbmRlZCgpe3RoaXMuaXNQbGF5aW5nPSExfWdldExvb3AoKXtyZXR1cm4hMT09PXRoaXMuaGFzUGxheWJhY2tDb250cm9sPyhjb25zb2xlLndhcm4oIlRIUkVFLkF1ZGlvOiB0aGlzIEF1ZGlvIGhhcyBubyBwbGF5YmFjayBjb250cm9sLiIpLCExKTp0aGlzLmxvb3B9c2V0TG9vcCh0KXtpZighMSE9PXRoaXMuaGFzUGxheWJhY2tDb250cm9sKXJldHVybiB0aGlzLmxvb3A9dCwhMD09PXRoaXMuaXNQbGF5aW5nJiYodGhpcy5zb3VyY2UubG9vcD10aGlzLmxvb3ApLHRoaXM7Y29uc29sZS53YXJuKCJUSFJFRS5BdWRpbzogdGhpcyBBdWRpbyBoYXMgbm8gcGxheWJhY2sgY29udHJvbC4iKX1zZXRMb29wU3RhcnQodCl7cmV0dXJuIHRoaXMubG9vcFN0YXJ0PXQsdGhpc31zZXRMb29wRW5kKHQpe3JldHVybiB0aGlzLmxvb3BFbmQ9dCx0aGlzfWdldFZvbHVtZSgpe3JldHVybiB0aGlzLmdhaW4uZ2Fpbi52YWx1ZX1zZXRWb2x1bWUodCl7cmV0dXJuIHRoaXMuZ2Fpbi5nYWluLnNldFRhcmdldEF0VGltZSh0LHRoaXMuY29udGV4dC5jdXJyZW50VGltZSwuMDEpLHRoaXN9fS5wcm90b3R5cGUse2xvYWQ6e3ZhbHVlOmZ1bmN0aW9uKHQpe2NvbnNvbGUud2FybigiVEhSRUUuQXVkaW86IC5sb2FkIGhhcyBiZWVuIGRlcHJlY2F0ZWQuIFVzZSBUSFJFRS5BdWRpb0xvYWRlciBpbnN0ZWFkLiIpO2NvbnN0IG49dGhpcztyZXR1cm4obmV3IG5zdCkubG9hZCh0LChmdW5jdGlvbih0KXtuLnNldEJ1ZmZlcih0KX0pKSx0aGlzfX0sc3RhcnRUaW1lOntzZXQ6ZnVuY3Rpb24oKXtjb25zb2xlLndhcm4oIlRIUkVFLkF1ZGlvOiAuc3RhcnRUaW1lIGlzIG5vdyAucGxheSggZGVsYXkgKS4iKX19fSkseWV0LnByb3RvdHlwZS51cGRhdGVDdWJlTWFwPWZ1bmN0aW9uKHQsbil7cmV0dXJuIGNvbnNvbGUud2FybigiVEhSRUUuQ3ViZUNhbWVyYTogLnVwZGF0ZUN1YmVNYXAoKSBpcyBub3cgLnVwZGF0ZSgpLiIpLHRoaXMudXBkYXRlKHQsbil9LHlldC5wcm90b3R5cGUuY2xlYXI9ZnVuY3Rpb24odCxuLGUsYSl7cmV0dXJuIGNvbnNvbGUud2FybigiVEhSRUUuQ3ViZUNhbWVyYTogLmNsZWFyKCkgaXMgbm93IC5yZW5kZXJUYXJnZXQuY2xlYXIoKS4iKSx0aGlzLnJlbmRlclRhcmdldC5jbGVhcih0LG4sZSxhKX0scTkuY3Jvc3NPcmlnaW49dm9pZCAwLHE5LmxvYWRUZXh0dXJlPWZ1bmN0aW9uKHQsbixlLGEpe2NvbnNvbGUud2FybigiVEhSRUUuSW1hZ2VVdGlscy5sb2FkVGV4dHVyZSBoYXMgYmVlbiBkZXByZWNhdGVkLiBVc2UgVEhSRUUuVGV4dHVyZUxvYWRlcigpIGluc3RlYWQuIik7Y29uc3Qgbz1uZXcgY2N0O28uc2V0Q3Jvc3NPcmlnaW4odGhpcy5jcm9zc09yaWdpbik7Y29uc3Qgcj1vLmxvYWQodCxlLHZvaWQgMCxhKTtyZXR1cm4gbiYmKHIubWFwcGluZz1uKSxyfSxxOS5sb2FkVGV4dHVyZUN1YmU9ZnVuY3Rpb24odCxuLGUsYSl7Y29uc29sZS53YXJuKCJUSFJFRS5JbWFnZVV0aWxzLmxvYWRUZXh0dXJlQ3ViZSBoYXMgYmVlbiBkZXByZWNhdGVkLiBVc2UgVEhSRUUuQ3ViZVRleHR1cmVMb2FkZXIoKSBpbnN0ZWFkLiIpO2NvbnN0IG89bmV3IHJjdDtvLnNldENyb3NzT3JpZ2luKHRoaXMuY3Jvc3NPcmlnaW4pO2NvbnN0IHI9by5sb2FkKHQsZSx2b2lkIDAsYSk7cmV0dXJuIG4mJihyLm1hcHBpbmc9bikscn0scTkubG9hZENvbXByZXNzZWRUZXh0dXJlPWZ1bmN0aW9uKCl7Y29uc29sZS5lcnJvcigiVEhSRUUuSW1hZ2VVdGlscy5sb2FkQ29tcHJlc3NlZFRleHR1cmUgaGFzIGJlZW4gcmVtb3ZlZC4gVXNlIFRIUkVFLkREU0xvYWRlciBpbnN0ZWFkLiIpfSxxOS5sb2FkQ29tcHJlc3NlZFRleHR1cmVDdWJlPWZ1bmN0aW9uKCl7Y29uc29sZS5lcnJvcigiVEhSRUUuSW1hZ2VVdGlscy5sb2FkQ29tcHJlc3NlZFRleHR1cmVDdWJlIGhhcyBiZWVuIHJlbW92ZWQuIFVzZSBUSFJFRS5ERFNMb2FkZXIgaW5zdGVhZC4iKX0sInVuZGVmaW5lZCIhPXR5cGVvZiBfX1RIUkVFX0RFVlRPT0xTX18mJl9fVEhSRUVfREVWVE9PTFNfXy5kaXNwYXRjaEV2ZW50KG5ldyBDdXN0b21FdmVudCgicmVnaXN0ZXIiLHtkZXRhaWw6e3JldmlzaW9uOiIxMjUifX0pKSwidW5kZWZpbmVkIiE9dHlwZW9mIHdpbmRvdyYmKHdpbmRvdy5fX1RIUkVFX18/Y29uc29sZS53YXJuKCJXQVJOSU5HOiBNdWx0aXBsZSBpbnN0YW5jZXMgb2YgVGhyZWUuanMgYmVpbmcgaW1wb3J0ZWQuIik6d2luZG93Ll9fVEhSRUVfXz0iMTI1IiksKGZ1bmN0aW9uKHQpe3RbdC5DSVJDTEU9MF09IkNJUkNMRSIsdFt0LkxJTkU9MV09IkxJTkUiLHRbdC5UUklBTkdMRT0yXT0iVFJJQU5HTEUiLHRbdC5UUkFQRVpPSUQ9M109IlRSQVBFWk9JRCJ9KShUc3R8fChUc3Q9e30pKTtjbGFzcyBWc3R7Y29uc3RydWN0b3IodCxuLGUpe3RoaXMuY29vcmRpbmF0b3I9bix0aGlzLnNjZW5lPW5ldyBCb3QsczkoKSYmdCBpbnN0YW5jZW9mIE9mZnNjcmVlbkNhbnZhcyYmKHQuc3R5bGU9dC5zdHlsZXx8e30pLHRoaXMucmVuZGVyZXI9bmV3IExvdCh7Y2FudmFzOnQsY29udGV4dDp0LmdldENvbnRleHQoIndlYmdsMiIse2FudGlhbGlhczohMCxwcmVjaXNpb246ImhpZ2hwIixhbHBoYTohMH0pfSksdGhpcy5yZW5kZXJlci5zZXRQaXhlbFJhdGlvKGUpfW9uUmVzaXplKHQpe3RoaXMucmVuZGVyZXIuc2V0U2l6ZSh0LndpZHRoLHQuaGVpZ2h0KX1kZXN0cm95T2JqZWN0KHQpe2NvbnN0IG49dC5vYmozZDtpZih0aGlzLnNjZW5lLnJlbW92ZShuKSxuIGluc3RhbmNlb2YgYmV0KXtuLmdlb21ldHJ5LmRpc3Bvc2UoKTtjb25zdCB0PUFycmF5LmlzQXJyYXkobi5tYXRlcmlhbCk/bi5tYXRlcmlhbDpbbi5tYXRlcmlhbF07Zm9yKGNvbnN0IG4gb2YgdCluLmRpc3Bvc2UoKX19Y3JlYXRlT3JVcGRhdGVMaW5lT2JqZWN0KHQsbixlKXt2YXIgYTtpZighdCYmIWUudmlzaWJsZSlyZXR1cm4gbnVsbDtjb25zdHt2aXNpYmxlOm8sd2lkdGg6cn09ZTtpZighdCl7Y29uc3QgdD1Sc3QoZS5jb2xvcixudWxsIT09KGE9ZS5vcGFjaXR5KSYmdm9pZCAwIT09YT9hOjEpLGk9bmV3IFhudCxjPW5ldyB5cnQoe2NvbG9yOnR9KSxzPW5ldyBiZXQoaSxjKTtyZXR1cm4gYy52aXNpYmxlPW8sSHN0KGksbixyKSx0aGlzLnNjZW5lLmFkZChzKSx7dHlwZTpUc3QuTElORSxkYXRhOm4sb2JqM2Q6cyx3aWR0aDpyfX1jb25zdHtkYXRhOmksb2JqM2Q6Yyx3aWR0aDpzfT10O3JldHVybiBCc3QoYywodD0+KHI9PT1zJiZpJiZsOShpLG4pfHxIc3QodCxuLHIpLHQpKSxlKT97dHlwZTpUc3QuTElORSxkYXRhOm4sb2JqM2Q6Yyx3aWR0aDpyfTp0fWNyZWF0ZU1lc2godCxuKXtpZighbi52aXNpYmxlKXJldHVybiBudWxsO2NvbnN0e3Zpc2libGU6ZSxjb2xvcjphLG9wYWNpdHk6b309bjtyZXR1cm4gbmV3IGJldCh0LG5ldyBrbnQoe2NvbG9yOlJzdChhLG51bGwhPW8/bzoxKSx2aXNpYmxlOmV9KSl9Y3JlYXRlT3JVcGRhdGVUcmlhbmdsZU9iamVjdCh0LG4sZSl7Y29uc3R7c2l6ZTphfT1lLG89YSpNYXRoLnNxcnQoMykvMixyPW5ldyBGbG9hdDMyQXJyYXkoW24ueC1hLzIsbi55LW8vMyxuLngrYS8yLG4ueS1vLzMsbi54LG4ueSsyKm8vM10pO2lmKCF0KXtjb25zdCB0PW5ldyBYbnQ7THN0KHQscik7Y29uc3QgYT10aGlzLmNyZWF0ZU1lc2godCxlKTtyZXR1cm4gbnVsbD09PWE/bnVsbDoodGhpcy5zY2VuZS5hZGQoYSkse3R5cGU6VHN0LlRSSUFOR0xFLGRhdGE6bixvYmozZDphfSl9cmV0dXJuIEJzdCh0Lm9iajNkLCh0PT4oTHN0KHQsciksdCkpLGUpP3t0eXBlOlRzdC5UUklBTkdMRSxkYXRhOm4sb2JqM2Q6dC5vYmozZH06dH1jcmVhdGVPclVwZGF0ZUNpcmNsZU9iamVjdCh0LG4sZSl7Y29uc3R7cmFkaXVzOmF9PWUsbz1uZXcgWXJ0KGUucmFkaXVzKTtpZighdCl7Y29uc3QgdD10aGlzLmNyZWF0ZU1lc2gobyxlKTtyZXR1cm4gbnVsbD09PXQ/bnVsbDoodC5wb3NpdGlvbi5zZXQobi54LG4ueSwwKSx0aGlzLnNjZW5lLmFkZCh0KSx7dHlwZTpUc3QuQ0lSQ0xFLGRhdGE6e2xvYzpuLHJhZGl1czphfSxvYmozZDp0fSl9cmV0dXJuIEJzdCh0Lm9iajNkLCgoKT0+byksZSk/KHQub2JqM2QucG9zaXRpb24uc2V0KG4ueCxuLnksMCkse3R5cGU6VHN0LkNJUkNMRSxkYXRhOntsb2M6bixyYWRpdXM6YX0sb2JqM2Q6dC5vYmozZH0pOnR9Y3JlYXRlT3JVcGRhdGVUcmFwZXpvaWRPYmplY3QodCxuLGUsYSl7aWYobi55IT09ZS55KXRocm93IG5ldyBSYW5nZUVycm9yKCJJbnB1dCBlcnJvcjogc3RhcnQueSAhPSBlbmQueS4iKTtjb25zdHthbHRpdHVkZTpvfT1hLHI9Mi9NYXRoLnNxcnQoMykqbyxpPW5ldyBBY3QoW25ldyBXOShuLngtci8yLG4ueS1vLzIpLG5ldyBXOShuLngsbi55K28vMiksbmV3IFc5KGUueCxlLnkrby8yKSxuZXcgVzkoZS54K3IvMixlLnktby8yKV0pO2kuYXV0b0Nsb3NlPSEwO2NvbnN0IGM9bmV3IHhpdChpKTtpZighdCl7Y29uc3QgdD10aGlzLmNyZWF0ZU1lc2goYyxhKTtyZXR1cm4gbnVsbD09PXQ/bnVsbDoodGhpcy5zY2VuZS5hZGQodCkse3R5cGU6VHN0LlRSQVBFWk9JRCxkYXRhOltuLGVdLG9iajNkOnR9KX1yZXR1cm4gQnN0KHQub2JqM2QsKCgpPT5jKSxhKT97dHlwZTpUc3QuVFJBUEVaT0lELGRhdGE6W24sZV0sb2JqM2Q6dC5vYmozZH06dH1mbHVzaCgpe3RoaXMucmVuZGVyZXIucmVuZGVyKHRoaXMuc2NlbmUsdGhpcy5jb29yZGluYXRvci5nZXRDYW1lcmEoKSl9fWNsYXNzIGpzdHtjb25zdHJ1Y3Rvcih0LG4pe3RoaXMucmVuZGVyQ2FjaGU9dCx0aGlzLnJlbmRlcmVyPW59c2V0TGluZSh0LG4sZSl7Y29uc3QgYT10aGlzLnJlbmRlcmVyLmNyZWF0ZU9yVXBkYXRlTGluZU9iamVjdCh0aGlzLnJlbmRlckNhY2hlLmdldEZyb21QcmV2aW91c0ZyYW1lKHQpLG4sZSk7YSYmdGhpcy5yZW5kZXJDYWNoZS5zZXRUb0N1cnJlbnRGcmFtZSh0LGEpfXNldFRyaWFuZ2xlKHQsbixlKXtjb25zdCBhPXRoaXMucmVuZGVyZXIuY3JlYXRlT3JVcGRhdGVUcmlhbmdsZU9iamVjdCh0aGlzLnJlbmRlckNhY2hlLmdldEZyb21QcmV2aW91c0ZyYW1lKHQpLG4sZSk7YSYmdGhpcy5yZW5kZXJDYWNoZS5zZXRUb0N1cnJlbnRGcmFtZSh0LGEpfXNldENpcmNsZSh0LG4sZSl7Y29uc3QgYT10aGlzLnJlbmRlcmVyLmNyZWF0ZU9yVXBkYXRlQ2lyY2xlT2JqZWN0KHRoaXMucmVuZGVyQ2FjaGUuZ2V0RnJvbVByZXZpb3VzRnJhbWUodCksbixlKTthJiZ0aGlzLnJlbmRlckNhY2hlLnNldFRvQ3VycmVudEZyYW1lKHQsYSl9c2V0VHJhcGV6b2lkKHQsbixlLGEpe2NvbnN0IG89dGhpcy5yZW5kZXJlci5jcmVhdGVPclVwZGF0ZVRyYXBlem9pZE9iamVjdCh0aGlzLnJlbmRlckNhY2hlLmdldEZyb21QcmV2aW91c0ZyYW1lKHQpLG4sZSxhKTtvJiZ0aGlzLnJlbmRlckNhY2hlLnNldFRvQ3VycmVudEZyYW1lKHQsbyl9fWNsYXNzIFVzdHtjb25zdHJ1Y3Rvcigpe3RoaXMucHJldkZyYW1lQ2FjaGU9bmV3IE1hcCx0aGlzLmN1cnJGcmFtZUNhY2hlPW5ldyBNYXB9Z2V0RnJvbVByZXZpb3VzRnJhbWUodCl7Y29uc3Qgbj10aGlzLnByZXZGcmFtZUNhY2hlLmdldCh0KTtyZXR1cm4gbnVsbCE9bj9uOm51bGx9c2V0VG9DdXJyZW50RnJhbWUodCxuKXt0aGlzLmN1cnJGcmFtZUNhY2hlLnNldCh0LG4pfWZpbmFsaXplRnJhbWVBbmRHZXRSZW1vdmVkKCl7Y29uc3QgdD1bXTtmb3IoY29uc3RbbixlXW9mIHRoaXMucHJldkZyYW1lQ2FjaGUuZW50cmllcygpKXRoaXMuY3VyckZyYW1lQ2FjaGUuaGFzKG4pfHx0LnB1c2goZSk7cmV0dXJuIHRoaXMucHJldkZyYW1lQ2FjaGU9dGhpcy5jdXJyRnJhbWVDYWNoZSx0aGlzLmN1cnJGcmFtZUNhY2hlPW5ldyBNYXAsdH19IShmdW5jdGlvbih0KXt0W3QuTlVNQkVSPTBdPSJOVU1CRVIiLHRbdC5OQU49MV09Ik5BTiJ9KShEc3R8fChEc3Q9e30pKTtjbGFzcyBXc3QgZXh0ZW5kcyBjbGFzc3tjb25zdHJ1Y3Rvcih0KXt0aGlzLnJhd1Nlcmllc0RhdGE9W10sdGhpcy5zZXJpZXM9W10sdGhpcy5wYWludERpcnR5PSEwLHRoaXMucmVuZGVyQ2FjaGU9bmV3IFVzdCx0aGlzLmNvb3JkaW5hdGVJZGVudGlmaWVyPW51bGwsdGhpcy5sYXlvdXQ9e3g6MCx3aWR0aDoxLHk6MCxoZWlnaHQ6MX0sdGhpcy5nZXRNZXRhZGF0YU1hcEltcGw9dC5nZXRNZXRhZGF0YU1hcCx0aGlzLmNvb3JkaW5hdG9yPXQuY29vcmRpbmF0b3IsdGhpcy5yZW5kZXJlcj10LnJlbmRlcmVyLHRoaXMucGFpbnRCcnVzaD1uZXcganN0KHRoaXMucmVuZGVyQ2FjaGUsdGhpcy5yZW5kZXJlcil9c2V0TGF5b3V0UmVjdCh0KXt0aGlzLmxheW91dC54PT09dC54JiZ0aGlzLmxheW91dC53aWR0aD09PXQud2lkdGgmJnRoaXMubGF5b3V0Lnk9PT10LnkmJnRoaXMubGF5b3V0LmhlaWdodD09PXQuaGVpZ2h0fHwodGhpcy5wYWludERpcnR5PSEwKSx0aGlzLmxheW91dD10fWdldExheW91dFJlY3QoKXtyZXR1cm4gdGhpcy5sYXlvdXR9Z2V0TWV0YWRhdGFNYXAoKXtyZXR1cm4gdGhpcy5nZXRNZXRhZGF0YU1hcEltcGwoKX1tYXJrQXNQYWludERpcnR5KCl7dGhpcy5wYWludERpcnR5PSEwfXJlbmRlcigpe2lmKHRoaXMudHJhbnNmb3JtQ29vcmRpbmF0ZXNJZlN0YWxlKCksdGhpcy5wYWludERpcnR5KXt0aGlzLnJlZHJhdygpO2Zvcihjb25zdCB0IG9mIHRoaXMucmVuZGVyQ2FjaGUuZmluYWxpemVGcmFtZUFuZEdldFJlbW92ZWQoKSl0aGlzLnJlbmRlcmVyLmRlc3Ryb3lPYmplY3QodCk7dGhpcy5wYWludERpcnR5PSExfX1pc0Nvb3JkaW5hdGVVcGRhdGVkKCl7cmV0dXJuIHRoaXMuY29vcmRpbmF0b3IuZ2V0VXBkYXRlSWRlbnRpZmllcigpIT09dGhpcy5jb29yZGluYXRlSWRlbnRpZmllcn1jbGVhckNvb3JkaW5hdGVJZGVudGlmaWVyKCl7dGhpcy5jb29yZGluYXRlSWRlbnRpZmllcj1udWxsfXNldERhdGEodCl7dGhpcy5jbGVhckNvb3JkaW5hdGVJZGVudGlmaWVyKCksdGhpcy5yYXdTZXJpZXNEYXRhPXR9dHJhbnNmb3JtQ29vcmRpbmF0ZXNJZlN0YWxlKCl7aWYoIXRoaXMuaXNDb29yZGluYXRlVXBkYXRlZCgpKXJldHVybjtjb25zdCB0PXRoaXMuZ2V0TGF5b3V0UmVjdCgpO3RoaXMuc2VyaWVzPW5ldyBBcnJheSh0aGlzLnJhd1Nlcmllc0RhdGEubGVuZ3RoKTtmb3IobGV0IG49MDtuPHRoaXMucmF3U2VyaWVzRGF0YS5sZW5ndGg7bisrKXtjb25zdCBlPXRoaXMucmF3U2VyaWVzRGF0YVtuXTt0aGlzLnNlcmllc1tuXT17aWQ6ZS5pZCxwb2x5bGluZTpuZXcgRmxvYXQzMkFycmF5KDIqZS5wb2ludHMubGVuZ3RoKX07Zm9yKGxldCBhPTA7YTxlLnBvaW50cy5sZW5ndGg7YSsrKXtjb25zdFtvLHJdPXRoaXMuY29vcmRpbmF0b3IudHJhbnNmb3JtRGF0YVRvVWlDb29yZCh0LFtlLnBvaW50c1thXS54LGUucG9pbnRzW2FdLnldKTt0aGlzLnNlcmllc1tuXS5wb2x5bGluZVsyKmFdPW8sdGhpcy5zZXJpZXNbbl0ucG9seWxpbmVbMiphKzFdPXJ9fXRoaXMuY29vcmRpbmF0ZUlkZW50aWZpZXI9dGhpcy5jb29yZGluYXRvci5nZXRVcGRhdGVJZGVudGlmaWVyKCksdGhpcy5tYXJrQXNQYWludERpcnR5KCl9fXtyZWNvcmRQYXJ0aXRpb24odCxuLGUpe3JldHVybiB0P3t0eXBlOkRzdC5OVU1CRVIscG9seWxpbmU6bn06e3R5cGU6RHN0Lk5BTixwb2x5bGluZTpuLm1hcCgoKHQsbik9PmlzTmFOKHQpP24lMj09MD9lLng6ZS55OnQpKX19cGFydGl0aW9uUG9seWxpbmUodCl7Y29uc3Qgbj1bXTtsZXQgZT0wLGE9ITE7Y29uc3Qgbz10aGlzLmNvb3JkaW5hdG9yLnRyYW5zZm9ybURhdGFUb1VpQ29vcmQodGhpcy5nZXRMYXlvdXRSZWN0KCksWzAsMF0pLHI9e3g6b1swXSx5Om9bMV19O2xldCBpPW51bGw7Zm9yKGxldCBvPTA7bzx0Lmxlbmd0aDtvKz0yKXtjb25zdCByPXRbb10sYz10W28rMV0scz1pc05hTihyKXx8aXNOYU4oYyk7cyE9PWEmJmUhPT1vJiYobi5wdXNoKHRoaXMucmVjb3JkUGFydGl0aW9uKCFhLHQuc2xpY2UoZSxvKSxudWxsPT09aT97eDpyLHk6Y306aSkpLGU9byksc3x8KGk9e3g6cix5OmN9KSxhPXN9cmV0dXJuIGUhPT10Lmxlbmd0aC0xJiZuLnB1c2godGhpcy5yZWNvcmRQYXJ0aXRpb24oIWEsdC5zbGljZShlLHQubGVuZ3RoKSxudWxsIT1pP2k6cikpLG59cmVkcmF3KCl7dmFyIHQsbixlO2Zvcihjb25zdCBhIG9mIHRoaXMuc2VyaWVzKXtjb25zdCBvPXRoaXMuZ2V0TWV0YWRhdGFNYXAoKVthLmlkXTtpZighbyljb250aW51ZTtpZihhLnBvbHlsaW5lLmxlbmd0aCUyIT0wKXRocm93IG5ldyBFcnJvcihgQ2Fubm90IGhhdmUgb2RkIGxlbmd0aC1lZCBwb2x5bGluZTogJHthLnBvbHlsaW5lLmxlbmd0aH1gKTtjb25zdCByPXRoaXMucGFydGl0aW9uUG9seWxpbmUoYS5wb2x5bGluZSk7Zm9yKGNvbnN0W2kse3R5cGU6Yyxwb2x5bGluZTpzfV1vZiByLmVudHJpZXMoKSlpZihjPT09RHN0Lk5VTUJFUikyPT09cy5sZW5ndGg/dGhpcy5wYWludEJydXNoLnNldENpcmNsZShKU09OLnN0cmluZ2lmeShbImNpcmNsZSIsYS5pZCxpXSkse3g6c1swXSx5OnNbMV19LHtjb2xvcjpvLmNvbG9yLHZpc2libGU6by52aXNpYmxlLG9wYWNpdHk6bnVsbCE9PSh0PW8ub3BhY2l0eSkmJnZvaWQgMCE9PXQ/dDoxLHJhZGl1czo0fSk6dGhpcy5wYWludEJydXNoLnNldExpbmUoSlNPTi5zdHJpbmdpZnkoWyJsaW5lIixhLmlkLGldKSxzLHtjb2xvcjpvLmNvbG9yLHZpc2libGU6by52aXNpYmxlLG9wYWNpdHk6bnVsbCE9PShuPW8ub3BhY2l0eSkmJnZvaWQgMCE9PW4/bjoxLHdpZHRoOjJ9KTtlbHNlIGlmKCFvLmF1eClmb3IobGV0IHQ9MDt0PHMubGVuZ3RoO3QrPTIpdGhpcy5wYWludEJydXNoLnNldFRyaWFuZ2xlKEpTT04uc3RyaW5naWZ5KFsiTmFOIixhLmlkLHNbdF0sc1t0KzFdXSkse3g6c1t0XSx5OnNbdCsxXX0se2NvbG9yOm8uY29sb3IsdmlzaWJsZTpvLnZpc2libGUsb3BhY2l0eTpudWxsIT09KGU9by5vcGFjaXR5KSYmdm9pZCAwIT09ZT9lOjEsc2l6ZToxMn0pfX19Y2xhc3MgR3N0IGV4dGVuZHMgbTl7Y29uc3RydWN0b3IoKXtzdXBlciguLi5hcmd1bWVudHMpLHRoaXMuY2FtZXJhPW5ldyBMY3QoMCwxZTMsMWUzLDAsMCwxMDApfWlzWUF4aXNQb2ludGVkRG93bigpe3JldHVybiExfXNldERvbUNvbnRhaW5lclJlY3QodCl7c3VwZXIuc2V0RG9tQ29udGFpbmVyUmVjdCh0KSx0aGlzLmNhbWVyYS5sZWZ0PXQueCx0aGlzLmNhbWVyYS5yaWdodD10LngrdC53aWR0aCx0aGlzLmNhbWVyYS50b3A9dC55K3QuaGVpZ2h0LHRoaXMuY2FtZXJhLmJvdHRvbT10LnksdGhpcy5jYW1lcmEudXBkYXRlUHJvamVjdGlvbk1hdHJpeCgpfWdldENhbWVyYSgpe3JldHVybiB0aGlzLmNhbWVyYX19Y2xhc3MgWXN0e2NvbnN0cnVjdG9yKHQpe3N3aXRjaCh0aGlzLm1ldGFkYXRhTWFwPXt9LHRoaXMuc2hvdWxkUmVwYWludD0hMSx0aGlzLmNhbGxiYWNrcz10LmNhbGxiYWNrcyx0LnR5cGUpe2Nhc2UgViQuU1ZHOnRoaXMuY29vcmRpbmF0b3I9bmV3IG05LHRoaXMucmVuZGVyZXI9bmV3IGc5KHQuY29udGFpbmVyKTticmVhaztjYXNlIFYkLldFQkdMOntjb25zdCBuPW5ldyBHc3Q7dGhpcy5jb29yZGluYXRvcj1uLHRoaXMucmVuZGVyZXI9bmV3IFZzdCh0LmNvbnRhaW5lcixuLHQuZGV2aWNlUGl4ZWxSYXRpbyk7YnJlYWt9fXRoaXMuc2VyaWVzTGluZVZpZXc9bmV3IFdzdCh7cmVuZGVyZXI6dGhpcy5yZW5kZXJlcixjb29yZGluYXRvcjp0aGlzLmNvb3JkaW5hdG9yLGdldE1ldGFkYXRhTWFwOigpPT50aGlzLm1ldGFkYXRhTWFwfSksdGhpcy5yZXNpemUodC5kb21EaW1lbnNpb24pfWRpc3Bvc2UoKXt9c2V0WFNjYWxlVHlwZSh0KXt0aGlzLmNvb3JkaW5hdG9yLnNldFhTY2FsZShhOSh0KSksdGhpcy5zY2hlZHVsZVJlcGFpbnQoKX1zZXRZU2NhbGVUeXBlKHQpe3RoaXMuY29vcmRpbmF0b3Iuc2V0WVNjYWxlKGE5KHQpKSx0aGlzLnNjaGVkdWxlUmVwYWludCgpfXJlc2l6ZSh0KXt0aGlzLmNvb3JkaW5hdG9yLnNldERvbUNvbnRhaW5lclJlY3QoT2JqZWN0LmFzc2lnbih7eDowLHk6MH0sdCkpLHRoaXMucmVuZGVyZXIub25SZXNpemUoT2JqZWN0LmFzc2lnbih7eDowLHk6MH0sdCkpLHRoaXMuc2VyaWVzTGluZVZpZXcuc2V0TGF5b3V0UmVjdChPYmplY3QuYXNzaWduKE9iamVjdC5hc3NpZ24oe30sdCkse3g6MCx5OjB9KSksdGhpcy5zY2hlZHVsZVJlcGFpbnQoKX1zZXRNZXRhZGF0YSh0KXtsZXQgbj0hMTtPYmplY3QuZW50cmllcyh0KS5mb3JFYWNoKCgoW3QsZV0pPT57Y29uc3QgYT10aGlzLm1ldGFkYXRhTWFwW3RdO2EmJmUuY29sb3I9PT1hLmNvbG9yJiZlLnZpc2libGU9PT1hLnZpc2libGUmJmUub3BhY2l0eT09PWEub3BhY2l0eXx8KG49ITApLHRoaXMubWV0YWRhdGFNYXBbdF09ZX0pKSxuJiZ0aGlzLnNlcmllc0xpbmVWaWV3Lm1hcmtBc1BhaW50RGlydHkoKSx0aGlzLnNjaGVkdWxlUmVwYWludCgpfXNldFZpZXdCb3godCl7dGhpcy5jb29yZGluYXRvci5zZXRWaWV3Qm94UmVjdCh7eDp0LnhbMF0sd2lkdGg6dC54WzFdLXQueFswXSx5OnQueVswXSxoZWlnaHQ6dC55WzFdLXQueVswXX0pLHRoaXMuc2NoZWR1bGVSZXBhaW50KCl9c2V0RGF0YSh0KXt0aGlzLnNlcmllc0xpbmVWaWV3LnNldERhdGEodCksdGhpcy5zY2hlZHVsZVJlcGFpbnQoKX1zY2hlZHVsZVJlcGFpbnQoKXt0aGlzLnNob3VsZFJlcGFpbnR8fCh0aGlzLnNob3VsZFJlcGFpbnQ9ITAsc2VsZi5yZXF1ZXN0QW5pbWF0aW9uRnJhbWUoKCgpPT57dGhpcy5yZXBhaW50KCksdGhpcy5zaG91bGRSZXBhaW50PSExfSkpKX1yZXBhaW50KCl7dGhpcy5zZXJpZXNMaW5lVmlldy5yZW5kZXIoKSx0aGlzLnJlbmRlcmVyLmZsdXNoKCksdGhpcy5jYWxsYmFja3Mub25EcmF3RW5kKCl9fWZ1bmN0aW9uIHFzdCh0KXtpZih0LmluY2x1ZGVzKCIvIikpdGhyb3cgbmV3IFJhbmdlRXJyb3IoIldvcmtlciBmYWN0b3J5IG9ubHkgYWxsb3dzIGZpbGUgbmFtZSBhbmQgbm8gcmVzb3VyY2UgcGF0aC4iKTtyZXR1cm4gbmV3IFdvcmtlcih0KX0hKGZ1bmN0aW9uKHQpe3RbdC5TRVJJRVNfREFUQV9VUERBVEVEPTBdPSJTRVJJRVNfREFUQV9VUERBVEVEIix0W3QuU0VSSUVTX01FVEFEQVRBX0NIQU5HRUQ9MV09IlNFUklFU19NRVRBREFUQV9DSEFOR0VEIix0W3QuU0NBTEVfVVBEQVRFRD0yXT0iU0NBTEVfVVBEQVRFRCIsdFt0LlZJRVdfQk9YX1VQREFURUQ9M109IlZJRVdfQk9YX1VQREFURUQiLHRbdC5JTklUPTRdPSJJTklUIix0W3QuRE9NX1JFU0laRUQ9NV09IkRPTV9SRVNJWkVEIn0pKElzdHx8KElzdD17fSkpLChmdW5jdGlvbih0KXt0W3QuT05fUkVEUkFXX0VORD0wXT0iT05fUkVEUkFXX0VORCJ9KShOc3R8fChOc3Q9e30pKTtjbGFzcyBac3R7Y29uc3RydWN0b3IodCl7aWYodGhpcy5jYWxsYmFja3M9dC5jYWxsYmFja3MsdC50eXBlIT09ViQuV0VCR0wpdGhyb3cgbmV3IFJhbmdlRXJyb3IoYENhbm5vdCB1c2Ugbm9uIFdFQkdMIHJlbmRlcmVyIGZvciB0aGUgb2Zmc2NyZWVuIGxpbmUgY2hhcnQuIFJlY2VpdmVkICR7ViRbdC50eXBlXX0gYCk7Y29uc3Qgbj1uZXcgTWVzc2FnZUNoYW5uZWw7bi5wb3J0MS5vbm1lc3NhZ2U9dD0+e3RoaXMub25NZXNzYWdlRnJvbVdvcmtlcih0LmRhdGEpfSx0aGlzLnR4TWVzc2FnZVBvcnQ9bi5wb3J0MTtjb25zdCBlPXQuY29udGFpbmVyLnRyYW5zZmVyQ29udHJvbFRvT2Zmc2NyZWVuKCk7dGhpcy53b3JrZXJJbnN0YW5jZT1ac3Qud29ya2VyUG9vbC5nZXROZXh0KCk7Y29uc3QgYT17dHlwZTpJc3QuSU5JVCxjYW52YXM6ZSxkZXZpY2VQaXhlbFJhdGlvOndpbmRvdy5kZXZpY2VQaXhlbFJhdGlvLGRpbTp0LmRvbURpbWVuc2lvbixyZW5kZXJlclR5cGU6dC50eXBlfTt0aGlzLndvcmtlckluc3RhbmNlLnBvc3RNZXNzYWdlKGEsW2Usbi5wb3J0Ml0pfWRpc3Bvc2UoKXt0aGlzLndvcmtlckluc3RhbmNlLmZyZWUoKSx0aGlzLnR4TWVzc2FnZVBvcnQuY2xvc2UoKX1zZXRYU2NhbGVUeXBlKHQpe3RoaXMuc2VuZE1lc3NhZ2Uoe3R5cGU6SXN0LlNDQUxFX1VQREFURUQsYXhpczoieCIsc2NhbGVUeXBlOnR9KX1zZXRZU2NhbGVUeXBlKHQpe3RoaXMuc2VuZE1lc3NhZ2Uoe3R5cGU6SXN0LlNDQUxFX1VQREFURUQsYXhpczoieSIsc2NhbGVUeXBlOnR9KX1yZXNpemUodCl7dGhpcy5zZW5kTWVzc2FnZSh7dHlwZTpJc3QuRE9NX1JFU0laRUQsZGltOnR9KX1zZXRNZXRhZGF0YSh0KXt0aGlzLnNlbmRNZXNzYWdlKHt0eXBlOklzdC5TRVJJRVNfTUVUQURBVEFfQ0hBTkdFRCxtZXRhZGF0YTp0fSl9c2V0Vmlld0JveCh0KXt0aGlzLnNlbmRNZXNzYWdlKHt0eXBlOklzdC5WSUVXX0JPWF9VUERBVEVELGV4dGVudDp0fSl9c2V0RGF0YSh0KXtjb25zdCBuPShmdW5jdGlvbiBlKHQpe2NvbnN0IG49dC5yZWR1Y2UoKCh0LG4pPT50K24ucG9pbnRzLmxlbmd0aCksMCk7bGV0IGU9MDtjb25zdCBhPW5ldyBGbG9hdDY0QXJyYXkoMipuKSxvPVtdO2Zvcihjb25zdCBuIG9mIHQpe28ucHVzaCh7aWQ6bi5pZCxsZW5ndGg6bi5wb2ludHMubGVuZ3RofSk7Zm9yKGxldCB0PTA7dDxuLnBvaW50cy5sZW5ndGg7dCsrKWFbZSsrXT1uLnBvaW50c1t0XS54LGFbZSsrXT1uLnBvaW50c1t0XS55fXJldHVybntpZHNBbmRMZW5ndGhzOm8sZmxhdHRlbmVkU2VyaWVzOmEuYnVmZmVyfX0pKHQpO3RoaXMuc2VuZE1lc3NhZ2Uoe3R5cGU6SXN0LlNFUklFU19EQVRBX1VQREFURUQsY29tcGFjdERhdGFTZXJpZXM6bn0sW24uZmxhdHRlbmVkU2VyaWVzXSl9c2VuZE1lc3NhZ2UodCxuKXtuP3RoaXMudHhNZXNzYWdlUG9ydC5wb3N0TWVzc2FnZSh0LG4pOnRoaXMudHhNZXNzYWdlUG9ydC5wb3N0TWVzc2FnZSh0KX1vbk1lc3NhZ2VGcm9tV29ya2VyKHQpe3N3aXRjaCh0LnR5cGUpe2Nhc2UgTnN0Lk9OX1JFRFJBV19FTkQ6dGhpcy5jYWxsYmFja3Mub25EcmF3RW5kKCl9fX1mdW5jdGlvbiBYc3QodCxuKXtyZXR1cm4ieCI9PT1uP1swLHQud2lkdGhdOlt0LmhlaWdodCwwXX1mdW5jdGlvbiBKc3QodCxuKXtjb25zdCBlPU1hdGguZmxvb3IodC81MCk7cmV0dXJuIE1hdGgubWluKGUsbil9ZnVuY3Rpb24gUXN0KHQsbil7aWYoMSZ0JiYodWkoKSx0cCgwLCJsaW5lIiwyKSksMiZ0KXtjb25zdCB0PW4uJGltcGxpY2l0LGU9Z3AoKTtEcCgiemVybyIsMD09PXQpLE5nKCJ4MSIsZS5nZXREb21YKHQpKSgieDIiLGUuZ2V0RG9tWCh0KSkoInkyIixlLmRvbURpbS5oZWlnaHQpfX1mdW5jdGlvbiBLc3QodCxuKXtpZigxJnQmJih1aSgpLHRwKDAsImxpbmUiLDMpKSwyJnQpe2NvbnN0IHQ9bi4kaW1wbGljaXQsZT1ncCgpO0RwKCJ6ZXJvIiwwPT09dCksTmcoInkxIixlLmdldERvbVkodCkpKCJ4MiIsZS5kb21EaW0ud2lkdGgpKCJ5MiIsZS5nZXREb21ZKHQpKX19WnN0LndvcmtlclBvb2w9bmV3IGNsYXNze2NvbnN0cnVjdG9yKHQsbj0xMCxlPXFzdCl7dGhpcy53b3JrZXJSZXNvdXJjZVBhdGg9dCx0aGlzLm1heFBvb2xTaXplPW4sdGhpcy53b3JrZXJGYWN0b3J5PWUsdGhpcy53b3JrZXJzPVtdfWdldE5leHQoKXtsZXQgdDtpZih0aGlzLndvcmtlcnMuZXZlcnkoKCh7YWN0aXZlQ291bnQ6dH0pPT50PjApKSYmdGhpcy53b3JrZXJzLmxlbmd0aDx0aGlzLm1heFBvb2xTaXplKXtjb25zdCBuPXRoaXMud29ya2VyRmFjdG9yeSh0aGlzLndvcmtlclJlc291cmNlUGF0aCk7dD17YWN0aXZlQ291bnQ6MCxwb3N0TWVzc2FnZToodCxlKT0+e24ucG9zdE1lc3NhZ2UodCxlKX0sZnJlZTooKT0+e3QuYWN0aXZlQ291bnQ9TWF0aC5tYXgodC5hY3RpdmVDb3VudC0xLDApfX0sdGhpcy53b3JrZXJzLnB1c2godCl9ZWxzZXtjb25zdCBuPXRoaXMud29ya2Vycy5tYXAoKCh7YWN0aXZlQ291bnQ6dH0pPT50KSksZT1uLmluZGV4T2YoTWF0aC5taW4oLi4ubikpO3Q9dGhpcy53b3JrZXJzW2VdfXJldHVybiB0LmFjdGl2ZUNvdW50KyssdH19KCJjaGFydF93b3JrZXIuanM/X2ZpbGVfaGFzaD1hNjk1NDhlMyIpO2NsYXNzICRzdHtnZXREb21YKHQpe3JldHVybiB0aGlzLnhTY2FsZS5mb3J3YXJkKHRoaXMudmlld0V4dGVudC54LFhzdCh0aGlzLmRvbURpbSwieCIpLHQpfWdldERvbVkodCl7cmV0dXJuIHRoaXMueVNjYWxlLmZvcndhcmQodGhpcy52aWV3RXh0ZW50LnksWHN0KHRoaXMuZG9tRGltLCJ5IiksdCl9Z2V0WFRpY2tzKCl7cmV0dXJuIHRoaXMueFNjYWxlLnRpY2tzKHRoaXMudmlld0V4dGVudC54LEpzdCh0aGlzLmRvbURpbS53aWR0aCx0aGlzLnhHcmlkQ291bnQpKX1nZXRZVGlja3MoKXtyZXR1cm4gdGhpcy55U2NhbGUudGlja3ModGhpcy52aWV3RXh0ZW50LnksSnN0KHRoaXMuZG9tRGltLmhlaWdodCx0aGlzLnlHcmlkQ291bnQpKX19ZnVuY3Rpb24gdGx0KHQsbixlLGEsbyxyKXtsZXQgaTtzd2l0Y2godC5kZWx0YU1vZGUpe2Nhc2UgV2hlZWxFdmVudC5ET01fREVMVEFfUElYRUw6aT0xO2JyZWFrO2Nhc2UgV2hlZWxFdmVudC5ET01fREVMVEFfTElORTppPTg7YnJlYWs7Y2FzZSBXaGVlbEV2ZW50LkRPTV9ERUxUQV9QQUdFOmk9MjA7YnJlYWs7ZGVmYXVsdDppPTEsY29uc29sZS53YXJuKGBVbmtub3duIFdoZWVsRXZlbnQgZGVsdGFNb2RlOiAke3QuZGVsdGFNb2RlfS5gKX1jb25zdCBjPXQuZGVsdGFZKmkscz1jPDA/TWF0aC5tYXgoYyphLC0uOTUpOmMqYSx7d2lkdGg6bCxoZWlnaHQ6bX09ZSxkPVtvLnJldmVyc2Uobi54LFswLGxdLC10Lm9mZnNldFgqcyksby5yZXZlcnNlKG4ueCxbMCxsXSxsKyhsLXQub2Zmc2V0WCkqcyldLGc9W3IucmV2ZXJzZShuLnksW20sMF0sLXQub2Zmc2V0WSpzKSxyLnJldmVyc2Uobi55LFttLDBdLG0rKG0tdC5vZmZzZXRZKSpzKV07cmV0dXJue3g6ZFsxXTxkWzBdP1tkWzFdLGRbMF1dOmQseTpnWzFdPGdbMF0/W2dbMV0sZ1swXV06Z319JHN0Lsm1ZmFjPWZ1bmN0aW9uIHQobil7cmV0dXJuIG5ldyhufHwkc3QpfSwkc3QuybVjbXA9X28oe3R5cGU6JHN0LHNlbGVjdG9yczpbWyJsaW5lLWNoYXJ0LWdyaWQtdmlldyJdXSxpbnB1dHM6e3ZpZXdFeHRlbnQ6InZpZXdFeHRlbnQiLHhTY2FsZToieFNjYWxlIix4R3JpZENvdW50OiJ4R3JpZENvdW50Iix5U2NhbGU6InlTY2FsZSIseUdyaWRDb3VudDoieUdyaWRDb3VudCIsZG9tRGltOiJkb21EaW0ifSxkZWNsczozLHZhcnM6Mixjb25zdHM6W1sieTEiLCIwIiwzLCJ6ZXJvIiw0LCJuZ0ZvciIsIm5nRm9yT2YiXSxbIngxIiwiMCIsMywiemVybyIsNCwibmdGb3IiLCJuZ0Zvck9mIl0sWyJ5MSIsIjAiXSxbIngxIiwiMCJdXSx0ZW1wbGF0ZTpmdW5jdGlvbiB0KG4sZSl7MSZuJiYodWkoKSxLZygwLCJzdmciKSxZZygxLFFzdCwxLDUsImxpbmUiLDApLFlnKDIsS3N0LDEsNSwibGluZSIsMSksJGcoKSksMiZuJiYod3MoMSksSmcoIm5nRm9yT2YiLGUuZ2V0WFRpY2tzKCkpLHdzKDEpLEpnKCJuZ0Zvck9mIixlLmdldFlUaWNrcygpKSl9LGRpcmVjdGl2ZXM6W2pNXSxzdHlsZXM6WyJbX25naG9zdC0lQ09NUCVdIHtcbiAgICAgICAgZGlzcGxheTogZmxleDtcbiAgICAgICAgb3ZlcmZsb3c6IGhpZGRlbjtcbiAgICAgIH1cblxuICAgICAgc3ZnW19uZ2NvbnRlbnQtJUNPTVAlXSB7XG4gICAgICAgIGhlaWdodDogMTAwJTtcbiAgICAgICAgd2lkdGg6IDEwMCU7XG4gICAgICB9XG5cbiAgICAgIGxpbmVbX25nY29udGVudC0lQ09NUCVdIHtcbiAgICAgICAgc3Ryb2tlOiAjY2NjO1xuICAgICAgICBzdHJva2Utd2lkdGg6IDFweDtcbiAgICAgIH1cblxuICAgICAgLnplcm9bX25nY29udGVudC0lQ09NUCVdIHtcbiAgICAgICAgc3Ryb2tlOiAjYWFhO1xuICAgICAgICBzdHJva2Utd2lkdGg6IDEuNXB4O1xuICAgICAgfSJdLGNoYW5nZURldGVjdGlvbjowfSksKGZ1bmN0aW9uKHQpe3RbdC5MRUZUPTFdPSJMRUZUIix0W3QuUklHSFQ9Ml09IlJJR0hUIix0W3QuTUlERExFPTRdPSJNSURETEUiLHRbdC5GT1VSVEg9OF09IkZPVVJUSCIsdFt0LkZJRlRIPTMyXT0iRklGVEgifSkoRnN0fHwoRnN0PXt9KSk7Y29uc3Qgbmx0PVsiZG90cyJdO2Z1bmN0aW9uIGVsdCh0LG4pe2lmKDEmdCYmKHVpKCksdHAoMCwiY2lyY2xlIiwxMikpLDImdCl7Y29uc3QgdD1ncCgpLiRpbXBsaWNpdCxuPWdwKDIpO05nKCJjeCIsbi5nZXREb21YKHQucG9pbnQueCkpKCJjeSIsbi5nZXREb21ZKHQucG9pbnQueSkpKCJmaWxsIix0Lm1ldGFkYXRhLmNvbG9yKX19ZnVuY3Rpb24gYWx0KHQsbil7aWYoMSZ0JiYodWkoKSxucCgwKSxZZygxLGVsdCwxLDMsImNpcmNsZSIsMTEpLGVwKCkpLDImdCl7Y29uc3QgdD1uLiRpbXBsaWNpdCxlPWdwKDIpO3dzKDEpLEpnKCJuZ0lmIixlLnNob3VsZFJlbmRlclRvb2x0aXBQb2ludCh0LnBvaW50KSl9fWZ1bmN0aW9uIG9sdCh0LG4pe2lmKDEmdCYmKHVpKCksbnAoMCksWWcoMSxhbHQsMiwxLCJuZy1jb250YWluZXIiLDEwKSxlcCgpKSwyJnQpe2NvbnN0IHQ9Z3AoKTt3cygxKSxKZygibmdGb3JPZiIsdC5jdXJzb3JlZERhdGEpKCJuZ0ZvclRyYWNrQnkiLHQudHJhY2tCeVNlcmllc05hbWUpfX1mdW5jdGlvbiBybHQodCxuKXtpZigxJnQmJih1aSgpLHRwKDAsInJlY3QiLDEzKSksMiZ0KXtjb25zdCB0PWdwKCk7TmcoIngiLHQuem9vbUJveEluVWlDb29yZGluYXRlLngpKCJ3aWR0aCIsdC56b29tQm94SW5VaUNvb3JkaW5hdGUud2lkdGgpKCJ5Iix0Lnpvb21Cb3hJblVpQ29vcmRpbmF0ZS55KSgiaGVpZ2h0Iix0Lnpvb21Cb3hJblVpQ29vcmRpbmF0ZS5oZWlnaHQpfX1jb25zdCBpbHQ9ZnVuY3Rpb24odCxuKXtyZXR1cm57ZGF0YTp0LGN1cnNvckxvY2F0aW9uSW5EYXRhQ29vcmQ6bn19O2Z1bmN0aW9uIGNsdCh0LG4pe2lmKDEmdCYmKEtnKDAsImRpdiIsMTQpLGFwKDEsMTUpLCRnKCkpLDImdCl7Y29uc3QgdD1ncCgpLG49cWcoMTEpO3dzKDEpLEpnKCJuZ1RlbXBsYXRlT3V0bGV0Iix0LnRvb2x0aXBUZW1wbGF0ZT90LnRvb2x0aXBUZW1wbGF0ZTpuKSgibmdUZW1wbGF0ZU91dGxldENvbnRleHQiLGZmKDIsaWx0LHQuY3Vyc29yZWREYXRhLHQuY3Vyc29yTG9jYXRpb25JbkRhdGFDb29yZCkpfX1mdW5jdGlvbiBzbHQodCxuKXtpZigxJnQmJihucCgwKSxLZygxLCJ0ciIsMTcpLEtnKDIsInRkIiwxOCksdHAoMywic3BhbiIpLCRnKCksS2coNCwidGQiLDE5KSxKcCg1KSwkZygpLEtnKDYsInRkIiksSnAoNyksJGcoKSxLZyg4LCJ0ZCIpLEpwKDkpLCRnKCksJGcoKSxlcCgpKSwyJnQpe2NvbnN0IHQ9bi4kaW1wbGljaXQ7d3MoMyksVHAoImJhY2tncm91bmQtY29sb3IiLHQubWV0YWRhdGEuY29sb3IpLHdzKDIpLFFwKHQubWV0YWRhdGEuZGlzcGxheU5hbWUpLHdzKDIpLFFwKHQucG9pbnQueSksd3MoMiksUXAodC5wb2ludC54KX19ZnVuY3Rpb24gbGx0KHQsbil7aWYoMSZ0JiYoS2coMCwidGFibGUiKSxLZygxLCJ0aGVhZCIpLEtnKDIsInRyIiksdHAoMywidGgiLDE2KSxLZyg0LCJ0aCIpLEpwKDUsIk5hbWUiKSwkZygpLEtnKDYsInRoIiksSnAoNywiWSIpLCRnKCksS2coOCwidGgiKSxKcCg5LCJYIiksJGcoKSwkZygpLCRnKCksS2coMTAsInRib2R5IiksWWcoMTEsc2x0LDEwLDUsIm5nLWNvbnRhaW5lciIsMTApLCRnKCksJGcoKSksMiZ0KXtjb25zdCB0PW4uZGF0YSxlPWdwKCk7d3MoMTEpLEpnKCJuZ0Zvck9mIix0KSgibmdGb3JUcmFja0J5IixlLnRyYWNrQnlTZXJpZXNOYW1lKX19dmFyIG1sdDshKGZ1bmN0aW9uKHQpe3RbdC5OT05FPTBdPSJOT05FIix0W3QuRFJBR19aT09NSU5HPTFdPSJEUkFHX1pPT01JTkciLHRbdC5TQ1JPTExfWk9PTUlORz0yXT0iU0NST0xMX1pPT01JTkciLHRbdC5QQU5OSU5HPTNdPSJQQU5OSU5HIn0pKG1sdHx8KG1sdD17fSkpO2NsYXNzIGRsdHtjb25zdHJ1Y3Rvcih0LG4pe3RoaXMuY2hhbmdlRGV0ZWN0b3I9dCx0aGlzLnNjcm9sbFN0cmF0ZWd5PW4sdGhpcy5vblZpZXdFeHRlbnRDaGFuZ2U9bmV3IEVmLHRoaXMub25WaWV3RXh0ZW50UmVzZXQ9bmV3IEVmLHRoaXMuSW50ZXJhY3Rpb25TdGF0ZT1tbHQsdGhpcy5zdGF0ZT1tbHQuTk9ORSx0aGlzLnNwZWNpYWxLZXlQcmVzc2VkPSExLHRoaXMuem9vbUJveEluVWlDb29yZGluYXRlPXt4OjAsd2lkdGg6MCxoZWlnaHQ6MCx5OjB9LHRoaXMudG9vbHRpcFBvc2l0aW9ucz1be29mZnNldFk6NSxvcmlnaW5YOiJzdGFydCIsb3ZlcmxheVg6InN0YXJ0IixvcmlnaW5ZOiJib3R0b20iLG92ZXJsYXlZOiJ0b3AifSx7b2Zmc2V0WTo1LG9yaWdpblg6ImVuZCIsb3ZlcmxheVg6ImVuZCIsb3JpZ2luWToiYm90dG9tIixvdmVybGF5WToidG9wIn0se29mZnNldFk6LTE1LG9yaWdpblg6InN0YXJ0IixvdmVybGF5WDoic3RhcnQiLG9yaWdpblk6InRvcCIsb3ZlcmxheVk6ImJvdHRvbSJ9LHtvZmZzZXRZOi0xNSxvcmlnaW5YOiJlbmQiLG92ZXJsYXlYOiJlbmQiLG9yaWdpblk6InRvcCIsb3ZlcmxheVk6ImJvdHRvbSJ9LHtvZmZzZXRYOjUsb3JpZ2luWDoiZW5kIixvdmVybGF5WDoic3RhcnQiLG9yaWdpblk6InRvcCIsb3ZlcmxheVk6InRvcCJ9LHtvZmZzZXRYOi01LG9yaWdpblg6InN0YXJ0IixvdmVybGF5WDoiZW5kIixvcmlnaW5ZOiJ0b3AiLG92ZXJsYXlZOiJ0b3AifV0sdGhpcy5jdXJzb3JMb2NhdGlvbkluRGF0YUNvb3JkPW51bGwsdGhpcy5jdXJzb3JlZERhdGE9W10sdGhpcy50b29sdGlwRGlzcGxheUF0dGFjaGVkPSExLHRoaXMuc2hvd1pvb21JbnN0cnVjdGlvbj0hMSx0aGlzLmRyYWdTdGFydENvb3JkPW51bGwsdGhpcy5pc0N1cnNvckluc2lkZT0hMSx0aGlzLm5nVW5zdWJzY3JpYmU9bmV3IHh9bmdBZnRlclZpZXdJbml0KCl7VnQodGhpcy5kb3RzQ29udGFpbmVyLm5hdGl2ZUVsZW1lbnQsImRibGNsaWNrIix7cGFzc2l2ZTohMH0pLnBpcGUoZGUodGhpcy5uZ1Vuc3Vic2NyaWJlKSkuc3Vic2NyaWJlKCgoKT0+e3RoaXMub25WaWV3RXh0ZW50UmVzZXQuZW1pdCgpLHRoaXMuc3RhdGU9bWx0Lk5PTkUsdGhpcy5jaGFuZ2VEZXRlY3Rvci5tYXJrRm9yQ2hlY2soKX0pKSxWdCh3aW5kb3csImtleWRvd24iLHtwYXNzaXZlOiEwfSkucGlwZShkZSh0aGlzLm5nVW5zdWJzY3JpYmUpKS5zdWJzY3JpYmUoKHQ9Pntjb25zdCBuPXRoaXMuc2hvdWxkUGFuKHQpO24hPT10aGlzLnNwZWNpYWxLZXlQcmVzc2VkJiYodGhpcy5zcGVjaWFsS2V5UHJlc3NlZD1uLHRoaXMuY2hhbmdlRGV0ZWN0b3IubWFya0ZvckNoZWNrKCkpfSkpLFZ0KHdpbmRvdywia2V5dXAiLHtwYXNzaXZlOiEwfSkucGlwZShkZSh0aGlzLm5nVW5zdWJzY3JpYmUpKS5zdWJzY3JpYmUoKHQ9Pntjb25zdCBuPXRoaXMuc2hvdWxkUGFuKHQpO24hPT10aGlzLnNwZWNpYWxLZXlQcmVzc2VkJiYodGhpcy5zcGVjaWFsS2V5UHJlc3NlZD1uLHRoaXMuY2hhbmdlRGV0ZWN0b3IubWFya0ZvckNoZWNrKCkpfSkpLFZ0KHRoaXMuZG90c0NvbnRhaW5lci5uYXRpdmVFbGVtZW50LCJtb3VzZWRvd24iLHtwYXNzaXZlOiEwfSkucGlwZShkZSh0aGlzLm5nVW5zdWJzY3JpYmUpKS5zdWJzY3JpYmUoKHQ9Pntjb25zdCBuPXRoaXMuc3RhdGUsZT10aGlzLnNob3VsZFBhbih0KT9tbHQuUEFOTklORzptbHQuRFJBR19aT09NSU5HO249PT1tbHQuTk9ORSYmZT09PW1sdC5EUkFHX1pPT01JTkcmJih0aGlzLmRyYWdTdGFydENvb3JkPXt4OnQub2Zmc2V0WCx5OnQub2Zmc2V0WX0sdGhpcy56b29tQm94SW5VaUNvb3JkaW5hdGU9e3g6dC5vZmZzZXRYLHdpZHRoOjAseTp0Lm9mZnNldFksaGVpZ2h0OjB9KSxuIT09ZSYmKHRoaXMuc3RhdGU9ZSx0aGlzLmNoYW5nZURldGVjdG9yLm1hcmtGb3JDaGVjaygpKX0pKSxWdCh0aGlzLmRvdHNDb250YWluZXIubmF0aXZlRWxlbWVudCwibW91c2V1cCIse3Bhc3NpdmU6ITB9KS5waXBlKGRlKHRoaXMubmdVbnN1YnNjcmliZSkpLnN1YnNjcmliZSgodD0+e2NvbnN0IG49KHQuYnV0dG9ucyZGc3QuTEVGVCk9PT1Gc3QuTEVGVDt0aGlzLmRyYWdTdGFydENvb3JkPW51bGw7Y29uc3QgZT10aGlzLnpvb21Cb3hJblVpQ29vcmRpbmF0ZTtpZighbiYmdGhpcy5zdGF0ZT09PW1sdC5EUkFHX1pPT01JTkcmJmUud2lkdGg+MCYmZS5oZWlnaHQ+MCl7Y29uc3QgdD10aGlzLmdldERhdGFYKGUueCksbj10aGlzLmdldERhdGFYKGUueCtlLndpZHRoKSxhPXRoaXMuZ2V0RGF0YVkoZS55K2UuaGVpZ2h0KSxvPXRoaXMuZ2V0RGF0YVkoZS55KTt0aGlzLm9uVmlld0V4dGVudENoYW5nZS5lbWl0KHtkYXRhRXh0ZW50Ont4Olt0LG5dLHk6W2Esb119fSl9dGhpcy5zdGF0ZSE9PW1sdC5OT05FJiYodGhpcy5zdGF0ZT1tbHQuTk9ORSx0aGlzLmNoYW5nZURldGVjdG9yLm1hcmtGb3JDaGVjaygpKX0pKSxWdCh0aGlzLmRvdHNDb250YWluZXIubmF0aXZlRWxlbWVudCwibW91c2VlbnRlciIse3Bhc3NpdmU6ITB9KS5waXBlKGRlKHRoaXMubmdVbnN1YnNjcmliZSkpLnN1YnNjcmliZSgodD0+e3RoaXMuaXNDdXJzb3JJbnNpZGU9ITAsdGhpcy51cGRhdGVUb29sdGlwKHQpLHRoaXMuY2hhbmdlRGV0ZWN0b3IubWFya0ZvckNoZWNrKCl9KSksVnQodGhpcy5kb3RzQ29udGFpbmVyLm5hdGl2ZUVsZW1lbnQsIm1vdXNlbGVhdmUiLHtwYXNzaXZlOiEwfSkucGlwZShkZSh0aGlzLm5nVW5zdWJzY3JpYmUpKS5zdWJzY3JpYmUoKHQ9Pnt0aGlzLmRyYWdTdGFydENvb3JkPW51bGwsdGhpcy5pc0N1cnNvckluc2lkZT0hMSx0aGlzLnVwZGF0ZVRvb2x0aXAodCksdGhpcy5zdGF0ZT1tbHQuTk9ORSx0aGlzLmNoYW5nZURldGVjdG9yLm1hcmtGb3JDaGVjaygpfSkpLFZ0KHRoaXMuZG90c0NvbnRhaW5lci5uYXRpdmVFbGVtZW50LCJtb3VzZW1vdmUiLHtwYXNzaXZlOiEwfSkucGlwZShkZSh0aGlzLm5nVW5zdWJzY3JpYmUpKS5zdWJzY3JpYmUoKHQ9Pntzd2l0Y2godGhpcy5zdGF0ZSl7Y2FzZSBtbHQuU0NST0xMX1pPT01JTkc6dGhpcy5zdGF0ZT1tbHQuTk9ORSx0aGlzLnVwZGF0ZVRvb2x0aXAodCksdGhpcy5jaGFuZ2VEZXRlY3Rvci5tYXJrRm9yQ2hlY2soKTticmVhaztjYXNlIG1sdC5OT05FOnRoaXMudXBkYXRlVG9vbHRpcCh0KSx0aGlzLmNoYW5nZURldGVjdG9yLm1hcmtGb3JDaGVjaygpO2JyZWFrO2Nhc2UgbWx0LlBBTk5JTkc6e2NvbnN0IG49LXQubW92ZW1lbnRYLGU9LXQubW92ZW1lbnRZLHt3aWR0aDphLGhlaWdodDpvfT10aGlzLmRvbURpbSxyPXRoaXMuZ2V0RGF0YVgobiksaT10aGlzLmdldERhdGFYKGErbiksYz10aGlzLmdldERhdGFZKG8rZSkscz10aGlzLmdldERhdGFZKGUpO3RoaXMub25WaWV3RXh0ZW50Q2hhbmdlLmVtaXQoe2RhdGFFeHRlbnQ6e3g6W3IsaV0seTpbYyxzXX19KTticmVha31jYXNlIG1sdC5EUkFHX1pPT01JTkc6e2lmKCF0aGlzLmRyYWdTdGFydENvb3JkKWJyZWFrO2NvbnN0IG49W3RoaXMuZHJhZ1N0YXJ0Q29vcmQueCx0Lm9mZnNldFhdLGU9W3RoaXMuZHJhZ1N0YXJ0Q29vcmQueSx0Lm9mZnNldFldO3RoaXMuem9vbUJveEluVWlDb29yZGluYXRlPXt4Ok1hdGgubWluKC4uLm4pLHdpZHRoOk1hdGgubWF4KC4uLm4pLU1hdGgubWluKC4uLm4pLHk6TWF0aC5taW4oLi4uZSksaGVpZ2h0Ok1hdGgubWF4KC4uLmUpLU1hdGgubWluKC4uLmUpfX10aGlzLmNoYW5nZURldGVjdG9yLm1hcmtGb3JDaGVjaygpfX0pKSxWdCh0aGlzLmRvdHNDb250YWluZXIubmF0aXZlRWxlbWVudCwid2hlZWwiLHtwYXNzaXZlOiExfSkucGlwZShkZSh0aGlzLm5nVW5zdWJzY3JpYmUpLHNlKCh0PT57Y29uc3Qgbj0hdC5jdHJsS2V5JiYhdC5zaGlmdEtleSYmdC5hbHRLZXk7cmV0dXJuIHRoaXMuc2hvd1pvb21JbnN0cnVjdGlvbj0hbix0aGlzLmNoYW5nZURldGVjdG9yLm1hcmtGb3JDaGVjaygpLG4/KHQucHJldmVudERlZmF1bHQoKSxaKHQpKTpadCgzZTMpLnBpcGUoaGUoKCgpPT57dGhpcy5zaG93Wm9vbUluc3RydWN0aW9uPSExLHRoaXMuY2hhbmdlRGV0ZWN0b3IubWFya0ZvckNoZWNrKCl9KSksZnQoKCgpPT5udWxsKSkpfSkpLEd0KCh0PT5Cb29sZWFuKHQpKSkpLnN1YnNjcmliZSgodD0+e3RoaXMub25WaWV3RXh0ZW50Q2hhbmdlLmVtaXQoe2RhdGFFeHRlbnQ6dGx0KHQsdGhpcy52aWV3RXh0ZW50LHRoaXMuZG9tRGltLC4wMSx0aGlzLnhTY2FsZSx0aGlzLnlTY2FsZSl9KSx0aGlzLnN0YXRlIT09bWx0LlNDUk9MTF9aT09NSU5HJiYodGhpcy5zdGF0ZT1tbHQuU0NST0xMX1pPT01JTkcsdGhpcy5jaGFuZ2VEZXRlY3Rvci5tYXJrRm9yQ2hlY2soKSl9KSl9bmdPbkNoYW5nZXMoKXt0aGlzLnVwZGF0ZUN1cnNvcmVkRGF0YUFuZFRvb2x0aXBWaXNpYmlsaXR5KCl9bmdPbkRlc3Ryb3koKXt0aGlzLm5nVW5zdWJzY3JpYmUubmV4dCgpLHRoaXMubmdVbnN1YnNjcmliZS5jb21wbGV0ZSgpfXNob3VsZFBhbih0KXtjb25zdCBuPXQuc2hpZnRLZXl8fHQuYWx0S2V5O2lmKHQgaW5zdGFuY2VvZiBLZXlib2FyZEV2ZW50KXJldHVybiBuO2NvbnN0IGU9KHQuYnV0dG9ucyZGc3QuTEVGVCk9PT1Gc3QuTEVGVCxhPSh0LmJ1dHRvbnMmRnN0Lk1JRERMRSk9PT1Gc3QuTUlERExFO3JldHVybiEoIWUmJiFhKSYmKGEmJiFlfHxuKX10cmFja0J5U2VyaWVzTmFtZSh0LG4pe3JldHVybiBuLmlkfWdldERvbVgodCl7cmV0dXJuIHRoaXMueFNjYWxlLmZvcndhcmQodGhpcy52aWV3RXh0ZW50LngsWHN0KHRoaXMuZG9tRGltLCJ4IiksdCl9Z2V0RGF0YVgodCl7cmV0dXJuIHRoaXMueFNjYWxlLnJldmVyc2UodGhpcy52aWV3RXh0ZW50LngsWHN0KHRoaXMuZG9tRGltLCJ4IiksdCl9Z2V0RG9tWSh0KXtyZXR1cm4gdGhpcy55U2NhbGUuZm9yd2FyZCh0aGlzLnZpZXdFeHRlbnQueSxYc3QodGhpcy5kb21EaW0sInkiKSx0KX1nZXREYXRhWSh0KXtyZXR1cm4gdGhpcy55U2NhbGUucmV2ZXJzZSh0aGlzLnZpZXdFeHRlbnQueSxYc3QodGhpcy5kb21EaW0sInkiKSx0KX1zaG91bGRSZW5kZXJUb29sdGlwUG9pbnQodCl7cmV0dXJuIG51bGwhPT10JiYhaXNOYU4odC54KSYmIWlzTmFOKHQueSl9dXBkYXRlVG9vbHRpcCh0KXt0aGlzLmN1cnNvckxvY2F0aW9uSW5EYXRhQ29vcmQ9e3g6dGhpcy5nZXREYXRhWCh0Lm9mZnNldFgpLHk6dGhpcy5nZXREYXRhWSh0Lm9mZnNldFkpfSx0aGlzLnVwZGF0ZUN1cnNvcmVkRGF0YUFuZFRvb2x0aXBWaXNpYmlsaXR5KCl9b25Ub29sdGlwRGlzcGxheURldGFjaGVkKCl7dGhpcy50b29sdGlwRGlzcGxheUF0dGFjaGVkPSExfXVwZGF0ZUN1cnNvcmVkRGF0YUFuZFRvb2x0aXBWaXNpYmlsaXR5KCl7Y29uc3QgdD10aGlzLmN1cnNvckxvY2F0aW9uSW5EYXRhQ29vcmQ7aWYobnVsbD09PXQpcmV0dXJuIHRoaXMuY3Vyc29yZWREYXRhPVtdLHZvaWQodGhpcy50b29sdGlwRGlzcGxheUF0dGFjaGVkPSExKTt0aGlzLmN1cnNvcmVkRGF0YT10aGlzLmlzQ3Vyc29ySW5zaWRlP3RoaXMuc2VyaWVzRGF0YS5tYXAoKHQ9Pih7c2VyaWVzRGF0dW06dCxtZXRhZGF0YTp0aGlzLnNlcmllc01ldGFkYXRhTWFwW3QuaWRdfSkpKS5maWx0ZXIoKCh7bWV0YWRhdGE6dH0pPT50JiZ0LnZpc2libGUmJiFCb29sZWFuKHQuYXV4KSkpLm1hcCgoKHtzZXJpZXNEYXR1bTpuLG1ldGFkYXRhOmV9KT0+e2NvbnN0IGE9KGZ1bmN0aW9uIG8odCxuKXtjb25zdCBlPU1hdGgubWluKG8wKHQubWFwKCgoe3g6dH0pPT50KSksbiksdC5sZW5ndGgtMSksYT1NYXRoLm1heCgwLGUtMSk7cmV0dXJuIE1hdGguYWJzKHRbYV0ueC1uKS1NYXRoLmFicyh0W2VdLngtbik8PTA/YTplfSkobi5wb2ludHMsdC54KTtyZXR1cm57aWQ6bi5pZCxjbG9zZXN0UG9pbnRJbmRleDphLHBvaW50Om4ucG9pbnRzW2FdLG1ldGFkYXRhOmV9fSkpLmZpbHRlcigodD0+dCkpOltdLHRoaXMudG9vbHRpcERpc3BsYXlBdHRhY2hlZD1Cb29sZWFuKHRoaXMuY3Vyc29yZWREYXRhLmxlbmd0aCl9fWZ1bmN0aW9uIGdsdCh0LG4sZSxhKXtyZXR1cm57bWFqb3I6W10sbWlub3I6dC50aWNrcyhhLGUpLm1hcCgodD0+KHt2YWx1ZTp0LHRpY2tGb3JtYXR0ZWRTdHJpbmc6bi5mb3JtYXRUaWNrKHQpfSkpKX19ZnVuY3Rpb24gcGx0KHQsbil7aWYoMSZ0JiYodWkoKSxLZygwLCJnIiwxNyksS2coMSwidGV4dCIpLEpwKDIpLCRnKCksS2coMywidGl0bGUiKSxKcCg0KSwkZygpLCRnKCkpLDImdCl7Y29uc3QgdD1uLiRpbXBsaWNpdCxlPWdwKCk7d3MoMSksTmcoIngiLGUudGV4dFhQb3NpdGlvbih0LnZhbHVlKSkoInkiLGUudGV4dFlQb3NpdGlvbih0LnZhbHVlKSksd3MoMSksS3AoIiAiLHQudGlja0Zvcm1hdHRlZFN0cmluZywiICIpLHdzKDIpLFFwKGUuZ2V0Rm9ybWF0dGVyKCkuZm9ybWF0UmVhZGFibGUodC52YWx1ZSkpfX1mdW5jdGlvbiBibHQodCxuKXtpZigxJnQmJihLZygwLCJzcGFuIiwyMCksS2coMSwic3BhbiIpLEpwKDIpLCRnKCksJGcoKSksMiZ0KXtjb25zdCB0PW4uJGltcGxpY2l0LGU9bi5pbmRleCxhPW4ubGFzdCxvPWdwKDIpO1RwKCJsZWZ0IixvLmdldE1ham9yWFBvc2l0aW9uKHQpKyJweCIpKCJ3aWR0aCIsby5nZXRNYWpvcldpZHRoU3RyaW5nKHQsYSxvLm1ham9yVGlja3NbZSsxXSkpKCJib3R0b20iLG8uZ2V0TWFqb3JZUG9zaXRpb24odCkrInB4IikoImhlaWdodCIsby5nZXRNYWpvckhlaWdodFN0cmluZyh0LGEsby5tYWpvclRpY2tzW2UrMV0pKSxEcCgibWFqb3ItbGFiZWwiLCEwKSgibGFzdCIsYSksSmcoInRpdGxlIixvLmdldEZvcm1hdHRlcigpLmZvcm1hdFJlYWRhYmxlKHQuc3RhcnQpKSx3cygyKSxRcCh0LnRpY2tGb3JtYXR0ZWRTdHJpbmcpfX1mdW5jdGlvbiB1bHQodCxuKXtpZigxJnQmJihLZygwLCJkaXYiLDE4KSxZZygxLGJsdCwzLDE0LCJzcGFuIiwxOSksJGcoKSksMiZ0KXtjb25zdCB0PWdwKCk7d3MoMSksSmcoIm5nRm9yT2YiLHQubWFqb3JUaWNrcykoIm5nRm9yVHJhY2tCeSIsdC50cmFja0J5TWFqb3JUaWNrKX19ZGx0Lsm1ZmFjPWZ1bmN0aW9uIHQobil7cmV0dXJuIG5ldyhufHxkbHQpKFpnKFZtKSxaZyhxQSkpfSxkbHQuybVjbXA9X28oe3R5cGU6ZGx0LHNlbGVjdG9yczpbWyJsaW5lLWNoYXJ0LWludGVyYWN0aXZlLXZpZXciXV0sdmlld1F1ZXJ5OmZ1bmN0aW9uIHQobixlKXt2YXIgYTsxJm4mJihqZihubHQsITAseHUpLFVmKE96LCEwKSksMiZuJiYoVmYoYT1aZigpKSYmKGUuZG90c0NvbnRhaW5lcj1hLmZpcnN0KSxWZihhPVpmKCkpJiYoZS5vdmVybGF5PWEuZmlyc3QpKX0saG9zdFZhcnM6Mixob3N0QmluZGluZ3M6ZnVuY3Rpb24gdChuLGUpezImbiYmRHAoInNob3ctem9vbS1pbnN0cnVjdGlvbiIsZS5zaG93Wm9vbUluc3RydWN0aW9uKX0saW5wdXRzOntzZXJpZXNEYXRhOiJzZXJpZXNEYXRhIixzZXJpZXNNZXRhZGF0YU1hcDoic2VyaWVzTWV0YWRhdGFNYXAiLHZpZXdFeHRlbnQ6InZpZXdFeHRlbnQiLHhTY2FsZToieFNjYWxlIix5U2NhbGU6InlTY2FsZSIsZG9tRGltOiJkb21EaW0iLHRvb2x0aXBPcmlnaW5FbDoidG9vbHRpcE9yaWdpbkVsIix0b29sdGlwVGVtcGxhdGU6InRvb2x0aXBUZW1wbGF0ZSJ9LG91dHB1dHM6e29uVmlld0V4dGVudENoYW5nZToib25WaWV3RXh0ZW50Q2hhbmdlIixvblZpZXdFeHRlbnRSZXNldDoib25WaWV3RXh0ZW50UmVzZXQifSxmZWF0dXJlczpbTXUoW3twcm92aWRlOnFBLHVzZUZhY3Rvcnk6ZnVuY3Rpb24gZmx0KHQpe3JldHVybiB0LnNjcm9sbFN0cmF0ZWdpZXMucmVwb3NpdGlvbigpfSxkZXBzOltoel19XSkscHJdLGRlY2xzOjEyLHZhcnM6MTUsY29uc3RzOltbMSwiZG90cyJdLFsiZG90cyIsIiJdLFs0LCJuZ0lmIl0sWyJjbGFzcyIsInpvb20tYm94Iiw0LCJuZ0lmIl0sWzEsInpvb20taW5zdHJ1Y3Rpb24iXSxbMSwiaW5zdHJ1Y3Rpb24tY29udGVudCJdLFsiY2RrT3ZlcmxheU9yaWdpbiIsIiIsMSwidG9vbHRpcC1vcmlnaW4iXSxbInRvb2x0aXBPcmlnaW4iLCJjZGtPdmVybGF5T3JpZ2luIl0sWyJjZGtDb25uZWN0ZWRPdmVybGF5IiwiIiwzLCJjZGtDb25uZWN0ZWRPdmVybGF5T3JpZ2luIiwiY2RrQ29ubmVjdGVkT3ZlcmxheU9wZW4iLCJjZGtDb25uZWN0ZWRPdmVybGF5UG9zaXRpb25zIiwiY2RrQ29ubmVjdGVkT3ZlcmxheVNjcm9sbFN0cmF0ZWd5IiwiY2RrQ29ubmVjdGVkT3ZlcmxheUxvY2tQb3NpdGlvbiIsImNka0Nvbm5lY3RlZE92ZXJsYXlGbGV4aWJsZURpbWVuc2lvbnMiLCJjZGtDb25uZWN0ZWRPdmVybGF5R3Jvd0FmdGVyT3BlbiIsImRldGFjaCJdLFsiZGVmYXVsdFRvb2x0aXAiLCIiXSxbNCwibmdGb3IiLCJuZ0Zvck9mIiwibmdGb3JUcmFja0J5Il0sWyJyIiwiNCIsNCwibmdJZiJdLFsiciIsIjQiXSxbMSwiem9vbS1ib3giXSxbMSwidG9vbHRpcC1jb250YWluZXIiXSxbMywibmdUZW1wbGF0ZU91dGxldCIsIm5nVGVtcGxhdGVPdXRsZXRDb250ZXh0Il0sWzEsImNpcmNsZS1oZWFkZXIiXSxbMSwidG9vbHRpcC1yb3ciXSxbMSwidG9vbHRpcC1yb3ctY2lyY2xlIl0sWzEsIm5hbWUiXV0sdGVtcGxhdGU6ZnVuY3Rpb24gdChuLGUpezEmbiYmKHVpKCksS2coMCwic3ZnIiwwLDEpLFlnKDIsb2x0LDIsMiwibmctY29udGFpbmVyIiwyKSxZZygzLHJsdCwxLDQsInJlY3QiLDMpLCRnKCksZmkoKSxLZyg0LCJkaXYiLDQpLEtnKDUsInNwYW4iLDUpLEpwKDYsIkFsdCArIFNjcm9sbCB0byBab29tIiksJGcoKSwkZygpLHRwKDcsImRpdiIsNiw3KSxZZyg5LGNsdCwyLDUsIm5nLXRlbXBsYXRlIiw4KSxjcCgiZGV0YWNoIiwoZnVuY3Rpb24gdCgpe3JldHVybiBlLm9uVG9vbHRpcERpc3BsYXlEZXRhY2hlZCgpfSkpLFlnKDEwLGxsdCwxMiwyLCJuZy10ZW1wbGF0ZSIsbnVsbCw5LEtmKSksMiZuJiYoRHAoInBhbm5hYmxlIixlLnNwZWNpYWxLZXlQcmVzc2VkKSgiZHJhZ2dhYmxlIixlLnN0YXRlPT09ZS5JbnRlcmFjdGlvblN0YXRlLk5PTkV8fGUuc3RhdGU9PT1lLkludGVyYWN0aW9uU3RhdGUuRFJBR19aT09NSU5HKSgicGFubmluZyIsZS5zdGF0ZT09PWUuSW50ZXJhY3Rpb25TdGF0ZS5QQU5OSU5HKSx3cygyKSxKZygibmdJZiIsZS5zdGF0ZT09PWUuSW50ZXJhY3Rpb25TdGF0ZS5OT05FKSx3cygxKSxKZygibmdJZiIsZS5zdGF0ZT09PWUuSW50ZXJhY3Rpb25TdGF0ZS5EUkFHX1pPT01JTkcpLHdzKDYpLEpnKCJjZGtDb25uZWN0ZWRPdmVybGF5T3JpZ2luIixlLnRvb2x0aXBPcmlnaW5FbCkoImNka0Nvbm5lY3RlZE92ZXJsYXlPcGVuIixlLnRvb2x0aXBEaXNwbGF5QXR0YWNoZWQmJmUuc3RhdGU9PT1lLkludGVyYWN0aW9uU3RhdGUuTk9ORSkoImNka0Nvbm5lY3RlZE92ZXJsYXlQb3NpdGlvbnMiLGUudG9vbHRpcFBvc2l0aW9ucykoImNka0Nvbm5lY3RlZE92ZXJsYXlTY3JvbGxTdHJhdGVneSIsZS5zY3JvbGxTdHJhdGVneSkoImNka0Nvbm5lY3RlZE92ZXJsYXlMb2NrUG9zaXRpb24iLCExKSgiY2RrQ29ubmVjdGVkT3ZlcmxheUZsZXhpYmxlRGltZW5zaW9ucyIsITApKCJjZGtDb25uZWN0ZWRPdmVybGF5R3Jvd0FmdGVyT3BlbiIsITApKX0sZGlyZWN0aXZlczpbV00sTXosT3osak0sdE9dLHN0eWxlczpbIltfbmdob3N0LSVDT01QJV17ZGlzcGxheTpmbGV4O3Bvc2l0aW9uOnJlbGF0aXZlO3VzZXItc2VsZWN0Om5vbmV9LmRvdHNbX25nY29udGVudC0lQ09NUCVde2hlaWdodDoxMDAlO3dpZHRoOjEwMCV9LmRvdHMuZHJhZ2dhYmxlW19uZ2NvbnRlbnQtJUNPTVAlXXtjdXJzb3I6Y3Jvc3NoYWlyfS5kb3RzLnBhbm5hYmxlW19uZ2NvbnRlbnQtJUNPTVAlXXtjdXJzb3I6Z3JhYn0uZG90cy5wYW5uaW5nW19uZ2NvbnRlbnQtJUNPTVAlXXtjdXJzb3I6Z3JhYmJpbmd9LnRvb2x0aXAtcm93LWNpcmNsZVtfbmdjb250ZW50LSVDT01QJV17YWxpZ24taXRlbXM6Y2VudGVyO2Rpc3BsYXk6aW5saW5lLWZsZXg7aGVpZ2h0OjEycHg7d2lkdGg6MTJweH0udG9vbHRpcC1yb3ctY2lyY2xlW19uZ2NvbnRlbnQtJUNPTVAlXSA+IHNwYW5bX25nY29udGVudC0lQ09NUCVde2JvcmRlci1yYWRpdXM6NTAlO2JvcmRlcjoxcHggc29saWQgcmdiYSgyNTUsMjU1LDI1NSwuNik7ZGlzcGxheTppbmxpbmUtYmxvY2s7aGVpZ2h0OjEwcHg7d2lkdGg6MTBweH0udG9vbHRpcC1vcmlnaW5bX25nY29udGVudC0lQ09NUCVde2JvdHRvbTowO2xlZnQ6MDtwb3NpdGlvbjphYnNvbHV0ZTtyaWdodDowfS50b29sdGlwLWNvbnRhaW5lcltfbmdjb250ZW50LSVDT01QJV17YmFja2dyb3VuZDpyZ2JhKDAsMCwwLC44NSk7Ym9yZGVyLXJhZGl1czo0cHg7Y29sb3I6I2ZmZjtjb250YWluOnBhaW50IHN0eWxlIGxheW91dDtmb250LXNpemU6LjllbTtvdmVyZmxvdzphdXRvO3BhZGRpbmc6NXB4O3BvaW50ZXItZXZlbnRzOm5vbmU7d2lkdGg6MTAwJX10aFtfbmdjb250ZW50LSVDT01QJV0sIHRkW19uZ2NvbnRlbnQtJUNPTVAlXXtwYWRkaW5nOjJweCA1cHg7dGV4dC1hbGlnbjpsZWZ0fXRoW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXdlaWdodDo1MDA7cGFkZGluZy1ib3R0b206NXB4fS56b29tLWJveFtfbmdjb250ZW50LSVDT01QJV17ZmlsbC1vcGFjaXR5Oi4wMztmaWxsOiMwMDA7c3Ryb2tlOiNjY2N9Lnpvb20taW5zdHJ1Y3Rpb25bX25nY29udGVudC0lQ09NUCVde2FsaWduLWl0ZW1zOmNlbnRlcjtkaXNwbGF5OmZsZXg7anVzdGlmeS1jb250ZW50OmNlbnRlcjtsZWZ0OjA7b3BhY2l0eTowO3BvaW50ZXItZXZlbnRzOm5vbmU7cG9zaXRpb246YWJzb2x1dGU7cmlnaHQ6MDt0b3A6MTBweDt0cmFuc2l0aW9uOm9wYWNpdHkgLjVzfS5pbnN0cnVjdGlvbi1jb250ZW50W19uZ2NvbnRlbnQtJUNPTVAlXXtiYWNrZ3JvdW5kOnJnYmEoMCwwLDAsLjYpO2JvcmRlci1yYWRpdXM6NXB4O2NvbG9yOiNmZmY7cGFkZGluZzo1cHggMTBweDt1c2VyLXNlbGVjdDpub25lfS5zaG93LXpvb20taW5zdHJ1Y3Rpb25bX25naG9zdC0lQ09NUCVdICAgLnpvb20taW5zdHJ1Y3Rpb25bX25nY29udGVudC0lQ09NUCVde29wYWNpdHk6MX0iXSxjaGFuZ2VEZXRlY3Rpb246MH0pO2NsYXNzIGhsdHtjb25zdHJ1Y3Rvcigpe3RoaXMub25WaWV3RXh0ZW50Q2hhbmdlPW5ldyBFZix0aGlzLmVkaXRNZW51T3BlbmVkPSExLHRoaXMubWFqb3JUaWNrcz1bXSx0aGlzLm1pbm9yVGlja3M9W119bmdPbkNoYW5nZXMoKXtsZXQgdD1udWxsO2NvbnN0IG49SnN0KCJ4Ij09PXRoaXMuYXhpcz90aGlzLmRvbURpbS53aWR0aDp0aGlzLmRvbURpbS5oZWlnaHQsdGhpcy5ncmlkQ291bnQpO3Q9dGhpcy5zY2FsZSBpbnN0YW5jZW9mIG85PyhmdW5jdGlvbiBlKHQsbixhLG8pe2NvbnN0W3IsaV09byxjPU1hdGguYWJzKGktcik7aWYoYz4uMDAxKXJldHVybiBnbHQodCxuLGEsbyk7Y29uc3Qgcz10LnRpY2tzKFtyLGldLGEpLGw9KGZ1bmN0aW9uIG0odCl7Y29uc3Qgbj10LnRvRXhwb25lbnRpYWwoKS5zcGxpdCgiZS0iLDIpO3JldHVybiAyPT09bi5sZW5ndGg/TnVtYmVyKG5bMV0pLTE6MH0pKGMpLGQ9dC50aWNrcyhbcixpXSwyKSxnPVtdLHA9bmV3IE1hcDtmb3IoY29uc3QgdCBvZiBkKXtjb25zdFtlLGE9IiJdPVN0cmluZyh0KS5zcGxpdCgiLiIsMiksbz1OdW1iZXIoZSsiLiIrYS5zbGljZSgwLGwpKTtwLnNldChvLHtzdGFydDpvLHRpY2tGb3JtYXR0ZWRTdHJpbmc6bi5mb3JtYXRTaG9ydChvKX0pfWNvbnN0IGI9MTAqTWF0aC5wb3coMTAsLWwpO2Zvcihjb25zdCB0IG9mIHMpZm9yKGNvbnN0IG4gb2YgcC5rZXlzKCkpe2NvbnN0IGU9TWF0aC5hYnModC1uKTtpZihlPj0wJiZlPGIpe2NvbnN0IGU9U3RyaW5nKHQpLnNsaWNlKFN0cmluZyhuKS5sZW5ndGgpO2cucHVzaCh7dmFsdWU6dCx0aWNrRm9ybWF0dGVkU3RyaW5nOmDigKYke2V8fCIwIn1gfSk7YnJlYWt9fXJldHVybnttYWpvcjpBcnJheS5mcm9tKHAudmFsdWVzKCkpLG1pbm9yOmd9fSkodGhpcy5zY2FsZSx0aGlzLmdldEZvcm1hdHRlcigpLG4sdGhpcy5heGlzRXh0ZW50KTp0aGlzLnNjYWxlIGluc3RhbmNlb2YgaTk/KGZ1bmN0aW9uIGEodCxuLGUsbyl7Y29uc3RbcixpXT1vO2xldCBjPXQudGlja3MobywyKTtpZihpLXI+PTg2NGU1fHxjLmxlbmd0aD4yKXJldHVybiBnbHQodCxuLGUsbyk7Y29uc3Qgcz10LnRpY2tzKG8sZSk7cmV0dXJue21ham9yOmMubWFwKCh0PT4oe3N0YXJ0OnQsdGlja0Zvcm1hdHRlZFN0cmluZzpuLmZvcm1hdFNob3J0KHQpfSkpKSxtaW5vcjpzLm1hcCgodD0+KHt2YWx1ZTp0LHRpY2tGb3JtYXR0ZWRTdHJpbmc6bi5mb3JtYXRUaWNrKHQpfSkpKX19KSh0aGlzLnNjYWxlLHRoaXMuZ2V0Rm9ybWF0dGVyKCksbix0aGlzLmF4aXNFeHRlbnQpOmdsdCh0aGlzLnNjYWxlLHRoaXMuZ2V0Rm9ybWF0dGVyKCksbix0aGlzLmF4aXNFeHRlbnQpLHRoaXMubWFqb3JUaWNrcz10Lm1ham9yLHRoaXMubWlub3JUaWNrcz10Lm1pbm9yfWdldEZvcm1hdHRlcigpe3ZhciB0O3JldHVybiBudWxsIT09KHQ9dGhpcy5jdXN0b21Gb3JtYXR0ZXIpJiZ2b2lkIDAhPT10P3Q6dGhpcy5zY2FsZS5kZWZhdWx0Rm9ybWF0dGVyfXRyYWNrQnlNaW5vclRpY2sodCl7cmV0dXJuIHQudmFsdWV9dHJhY2tCeU1ham9yVGljayh0KXtyZXR1cm4gdC5zdGFydH1nZXREb21Qb3ModCl7cmV0dXJuIHRoaXMuc2NhbGUuZm9yd2FyZCh0aGlzLmF4aXNFeHRlbnQsWHN0KHRoaXMuZG9tRGltLHRoaXMuYXhpcyksdCl9dGV4dFhQb3NpdGlvbih0KXtyZXR1cm4ieCI9PT10aGlzLmF4aXM/U3RyaW5nKHRoaXMuZ2V0RG9tUG9zKHQpKToiMTAwJSJ9dGV4dFlQb3NpdGlvbih0KXtyZXR1cm4ieCI9PT10aGlzLmF4aXM/IiI6U3RyaW5nKHRoaXMuZ2V0RG9tUG9zKHQpKX1nZXRNYWpvclhQb3NpdGlvbih0KXtyZXR1cm4ieSI9PT10aGlzLmF4aXM/MDpNYXRoLm1pbih0aGlzLmRvbURpbS53aWR0aCxNYXRoLm1heCgwLHRoaXMuZ2V0RG9tUG9zKHQuc3RhcnQpKSl9Z2V0TWFqb3JXaWR0aFN0cmluZyh0LG4sZSl7cmV0dXJuInkiPT09dGhpcy5heGlzPyIiOihufHwhZT90aGlzLmRvbURpbS53aWR0aDp0aGlzLmdldE1ham9yWFBvc2l0aW9uKGUpKS10aGlzLmdldE1ham9yWFBvc2l0aW9uKHQpKyJweCJ9Z2V0TWFqb3JZUG9zaXRpb24odCl7cmV0dXJuIngiPT09dGhpcy5heGlzPzA6dGhpcy5kb21EaW0uaGVpZ2h0LU1hdGgubWluKHRoaXMuZG9tRGltLmhlaWdodCxNYXRoLm1heCgwLHRoaXMuZ2V0RG9tUG9zKHQuc3RhcnQpKSl9Z2V0TWFqb3JIZWlnaHRTdHJpbmcodCxuLGUpe3JldHVybiJ4Ij09PXRoaXMuYXhpcz8iIjoobnx8IWU/dGhpcy5kb21EaW0uaGVpZ2h0OnRoaXMuZ2V0TWFqb3JZUG9zaXRpb24oZSkpLXRoaXMuZ2V0TWFqb3JZUG9zaXRpb24odCkrInB4In1rZXlkb3duUHJldmVudENsb3NlKHQpeyJFc2NhcGUiIT09dC5rZXkmJnQuc3RvcFByb3BhZ2F0aW9uKCl9ZXh0ZW50Q2hhbmdlZCh0LG4pe2xldCBlPU51bWJlcih0KSxhPU51bWJlcihuKTtpZihhPGUpe2NvbnN0IHQ9ZTtlPWEsYT10fU51bWJlci5pc0Zpbml0ZShlKSYmTnVtYmVyLmlzRmluaXRlKGEpJiZ0aGlzLm9uVmlld0V4dGVudENoYW5nZS5lbWl0KFtlLGFdKX1vbkF4aXNVcGRhdGVNZW51T3Blbih0LG4sZSl7dC52YWx1ZT1TdHJpbmcoZVswXSksbi52YWx1ZT1TdHJpbmcoZVsxXSksdC5mb2N1cygpfXNldEVkaXRNZW51T3BlbmVkKHQpe3RoaXMuZWRpdE1lbnVPcGVuZWQ9dH19aGx0Lsm1ZmFjPWZ1bmN0aW9uIHQobil7cmV0dXJuIG5ldyhufHxobHQpfSxobHQuybVjbXA9X28oe3R5cGU6aGx0LHNlbGVjdG9yczpbWyJsaW5lLWNoYXJ0LWF4aXMiXV0saW5wdXRzOntheGlzRXh0ZW50OiJheGlzRXh0ZW50IixheGlzOiJheGlzIixzY2FsZToic2NhbGUiLGdyaWRDb3VudDoiZ3JpZENvdW50Iixkb21EaW06ImRvbURpbSIsY3VzdG9tRm9ybWF0dGVyOiJjdXN0b21Gb3JtYXR0ZXIifSxvdXRwdXRzOntvblZpZXdFeHRlbnRDaGFuZ2U6Im9uVmlld0V4dGVudENoYW5nZSJ9LGZlYXR1cmVzOltwcl0sZGVjbHM6MjYsdmFyczoxMyxjb25zdHM6W1sxLCJsaW5lIl0sWzEsIm1pbm9yIl0sWzEsInRpY2tzIl0sWyJjbGFzcyIsIm1pbm9yLXRpY2stbGFiZWwiLDQsIm5nRm9yIiwibmdGb3JPZiIsIm5nRm9yVHJhY2tCeSJdLFsibWF0LWljb24tYnV0dG9uIiwiIiwidGl0bGUiLCJDbGljayB0byBtYW51YWxseSBzZXQgbWluICYgbWF4IHZhbHVlcyIsMywibWF0TWVudVRyaWdnZXJGb3IiLCJtZW51T3BlbmVkIiwibWVudUNsb3NlZCJdLFsibWF0TWVudVRyaWdnZXIiLCJtYXRNZW51VHJpZ2dlciJdLFsic3ZnSWNvbiIsImVkaXRfMjRweCJdLFsiY2xhc3MiLCJtYWpvciB0aWNrcyIsNCwibmdJZiJdLFsieFBvc2l0aW9uIiwiYmVmb3JlIiwzLCJ5UG9zaXRpb24iXSxbIm1hbnVhbENvbnRyb2wiLCJtYXRNZW51Il0sWzEsImV4dGVudC1lZGl0LWlucHV0IiwzLCJjbGljayIsImtleWRvd24iXSxbInR5cGUiLCJudW1iZXIiLDMsInZhbHVlIl0sWyJtaW5JbnB1dCIsIiJdLFsibWF4SW5wdXQiLCIiXSxbMSwiZXh0ZW50LWVkaXQtY29udHJvbCIsMywia2V5ZG93biJdLFsibWF0LXJhaXNlZC1idXR0b24iLCIiLCJjb2xvciIsInByaW1hcnkiLDEsImV4dGVudC1lZGl0LWNoYW5nZSIsMywiY2xpY2siXSxbIm1hdC1zdHJva2VkLWJ1dHRvbiIsIiIsMSwiZXh0ZW50LWVkaXQtY2FuY2VsIiwzLCJjbGljayJdLFsxLCJtaW5vci10aWNrLWxhYmVsIl0sWzEsIm1ham9yIiwidGlja3MiXSxbMywibWFqb3ItbGFiZWwiLCJsYXN0IiwibGVmdCIsIndpZHRoIiwiYm90dG9tIiwiaGVpZ2h0IiwidGl0bGUiLDQsIm5nRm9yIiwibmdGb3JPZiIsIm5nRm9yVHJhY2tCeSJdLFszLCJ0aXRsZSJdXSx0ZW1wbGF0ZTpmdW5jdGlvbiB0KG4sZSl7aWYoMSZuKXtjb25zdCB0PW9wKCk7S2coMCwiZGl2IiksdHAoMSwiZGl2IiwwKSxLZygyLCJkaXYiLDEpLHVpKCksS2coMywic3ZnIiwyKSxZZyg0LHBsdCw1LDQsImciLDMpLCRnKCksZmkoKSxLZyg1LCJidXR0b24iLDQsNSksY3AoIm1lbnVPcGVuZWQiLChmdW5jdGlvbiBuKCl7anIodCk7Y29uc3QgYT1xZygxNSksbz1xZygyMCk7cmV0dXJuIGUub25BeGlzVXBkYXRlTWVudU9wZW4oYSxvLGUuYXhpc0V4dGVudCksZS5zZXRFZGl0TWVudU9wZW5lZCghMCl9KSkoIm1lbnVDbG9zZWQiLChmdW5jdGlvbiB0KCl7cmV0dXJuIGUuc2V0RWRpdE1lbnVPcGVuZWQoITEpfSkpLHRwKDcsIm1hdC1pY29uIiw2KSwkZygpLCRnKCksWWcoOCx1bHQsMiwyLCJkaXYiLDcpLCRnKCksS2coOSwibWF0LW1lbnUiLDgsOSksS2coMTEsImRpdiIsMTApLGNwKCJjbGljayIsKGZ1bmN0aW9uIHQobil7cmV0dXJuIG4uc3RvcFByb3BhZ2F0aW9uKCl9KSkoImtleWRvd24iLChmdW5jdGlvbiB0KG4pe3JldHVybiBlLmtleWRvd25QcmV2ZW50Q2xvc2Uobil9KSksS2coMTIsImxhYmVsIiksSnAoMTMsIm1pbiIpLCRnKCksdHAoMTQsImlucHV0IiwxMSwxMiksJGcoKSxLZygxNiwiZGl2IiwxMCksY3AoImNsaWNrIiwoZnVuY3Rpb24gdChuKXtyZXR1cm4gbi5zdG9wUHJvcGFnYXRpb24oKX0pKSgia2V5ZG93biIsKGZ1bmN0aW9uIHQobil7cmV0dXJuIGUua2V5ZG93blByZXZlbnRDbG9zZShuKX0pKSxLZygxNywibGFiZWwiKSxKcCgxOCwibWF4IiksJGcoKSx0cCgxOSwiaW5wdXQiLDExLDEzKSwkZygpLEtnKDIxLCJkaXYiLDE0KSxjcCgia2V5ZG93biIsKGZ1bmN0aW9uIHQobil7cmV0dXJuIGUua2V5ZG93blByZXZlbnRDbG9zZShuKX0pKSxLZygyMiwiYnV0dG9uIiwxNSksY3AoImNsaWNrIiwoZnVuY3Rpb24gbigpe2pyKHQpO2NvbnN0IGE9cWcoMTUpLG89cWcoMjApLHI9cWcoNik7cmV0dXJuIGUuZXh0ZW50Q2hhbmdlZChhLnZhbHVlLG8udmFsdWUpLHIuY2xvc2VNZW51KCl9KSksSnAoMjMsIiBDaGFuZ2UgIiksJGcoKSxLZygyNCwiYnV0dG9uIiwxNiksY3AoImNsaWNrIiwoZnVuY3Rpb24gbigpe3JldHVybiBqcih0KSxxZyg2KS5jbG9zZU1lbnUoKX0pKSxKcCgyNSwiIENhbmNlbCAiKSwkZygpLCRnKCksJGcoKX1pZigyJm4pe2NvbnN0IHQ9cWcoMTApO0ZwKGUuYXhpcysiLWF4aXMgYXhpcyIpLHdzKDQpLEpnKCJuZ0Zvck9mIixlLm1pbm9yVGlja3MpKCJuZ0ZvclRyYWNrQnkiLGUudHJhY2tCeU1pbm9yVGljayksd3MoMSksRHAoImV4dGVudC1lZGl0LWJ1dHRvbiIsITApKCJleHRlbnQtZWRpdC1tZW51LW9wZW5lZCIsZS5lZGl0TWVudU9wZW5lZCksSmcoIm1hdE1lbnVUcmlnZ2VyRm9yIix0KSx3cygzKSxKZygibmdJZiIsZS5tYWpvclRpY2tzLmxlbmd0aCksd3MoMSksSmcoInlQb3NpdGlvbiIsInkiPT09ZS5heGlzPyJhYm92ZSI6ImJlbG93Iiksd3MoNSksSmcoInZhbHVlIixlLmF4aXNFeHRlbnRbMF0pLHdzKDUpLEpnKCJ2YWx1ZSIsZS5heGlzRXh0ZW50WzFdKX19LGRpcmVjdGl2ZXM6W2pNLGVBLElxLEJCLFdNLEFxXSxzdHlsZXM6WycubWF0LWJhZGdlLWNvbnRlbnRbX25nY29udGVudC0lQ09NUCVde2ZvbnQtd2VpZ2h0OjYwMDtmb250LXNpemU6MTJweDtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWZ9Lm1hdC1iYWRnZS1zbWFsbFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWJhZGdlLWNvbnRlbnRbX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZTo5cHh9Lm1hdC1iYWRnZS1sYXJnZVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWJhZGdlLWNvbnRlbnRbX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToyNHB4fS5tYXQtaDFbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWhlYWRsaW5lW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10eXBvZ3JhcGh5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIGgxW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250OjQwMCAyNHB4LzMycHggUm9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2xldHRlci1zcGFjaW5nOm5vcm1hbDttYXJnaW46MCAwIDE2cHh9Lm1hdC1oMltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdGl0bGVbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXR5cG9ncmFwaHlbX25nY29udGVudC0lQ09NUCVdICAgaDJbX25nY29udGVudC0lQ09NUCVde2ZvbnQ6NTAwIDIwcHgvMzJweCBSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7bGV0dGVyLXNwYWNpbmc6bm9ybWFsO21hcmdpbjowIDAgMTZweH0ubWF0LWgzW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1zdWJoZWFkaW5nLTJbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXR5cG9ncmFwaHlbX25nY29udGVudC0lQ09NUCVdICAgaDNbX25nY29udGVudC0lQ09NUCVde2ZvbnQ6NDAwIDE2cHgvMjhweCBSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7bGV0dGVyLXNwYWNpbmc6bm9ybWFsO21hcmdpbjowIDAgMTZweH0ubWF0LWg0W19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1zdWJoZWFkaW5nLTFbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXR5cG9ncmFwaHlbX25nY29udGVudC0lQ09NUCVdICAgaDRbX25nY29udGVudC0lQ09NUCVde2ZvbnQ6NDAwIDE1cHgvMjRweCBSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7bGV0dGVyLXNwYWNpbmc6bm9ybWFsO21hcmdpbjowIDAgMTZweH0ubWF0LWg1W19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10eXBvZ3JhcGh5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIGg1W19uZ2NvbnRlbnQtJUNPTVAlXXtmb250OjQwMCBjYWxjKDE0cHggKiAwLjgzKS8yMHB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjttYXJnaW46MCAwIDEycHh9Lm1hdC1oNltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdHlwb2dyYXBoeVtfbmdjb250ZW50LSVDT01QJV0gICBoNltfbmdjb250ZW50LSVDT01QJV17Zm9udDo0MDAgY2FsYygxNHB4ICogMC42NykvMjBweCBSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7bWFyZ2luOjAgMCAxMnB4fS5tYXQtYm9keS1zdHJvbmdbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWJvZHktMltfbmdjb250ZW50LSVDT01QJV17Zm9udDo1MDAgMTRweC8yNHB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtsZXR0ZXItc3BhY2luZzpub3JtYWx9Lm1hdC1ib2R5W19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1ib2R5LTFbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXR5cG9ncmFwaHlbX25nY29udGVudC0lQ09NUCVde2ZvbnQ6NDAwIDE0cHgvMjBweCBSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7bGV0dGVyLXNwYWNpbmc6bm9ybWFsfS5tYXQtYm9keVtfbmdjb250ZW50LSVDT01QJV0gICBwW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1ib2R5LTFbX25nY29udGVudC0lQ09NUCVdICAgcFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdHlwb2dyYXBoeVtfbmdjb250ZW50LSVDT01QJV0gICBwW19uZ2NvbnRlbnQtJUNPTVAlXXttYXJnaW46MCAwIDEycHh9Lm1hdC1zbWFsbFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtY2FwdGlvbltfbmdjb250ZW50LSVDT01QJV17Zm9udDo0MDAgMTJweC8yMHB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtsZXR0ZXItc3BhY2luZzpub3JtYWx9Lm1hdC1kaXNwbGF5LTRbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXR5cG9ncmFwaHlbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1kaXNwbGF5LTRbX25nY29udGVudC0lQ09NUCVde2ZvbnQ6MzAwIDExMnB4LzExMnB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtsZXR0ZXItc3BhY2luZzotMC4wNWVtO21hcmdpbjowIDAgNTZweH0ubWF0LWRpc3BsYXktM1tfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdHlwb2dyYXBoeVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWRpc3BsYXktM1tfbmdjb250ZW50LSVDT01QJV17Zm9udDo0MDAgNTZweC81NnB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtsZXR0ZXItc3BhY2luZzotMC4wMmVtO21hcmdpbjowIDAgNjRweH0ubWF0LWRpc3BsYXktMltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdHlwb2dyYXBoeVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWRpc3BsYXktMltfbmdjb250ZW50LSVDT01QJV17Zm9udDo0MDAgNDVweC80OHB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtsZXR0ZXItc3BhY2luZzotMC4wMDVlbTttYXJnaW46MCAwIDY0cHh9Lm1hdC1kaXNwbGF5LTFbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXR5cG9ncmFwaHlbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1kaXNwbGF5LTFbX25nY29udGVudC0lQ09NUCVde2ZvbnQ6NDAwIDM0cHgvNDBweCBSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7bGV0dGVyLXNwYWNpbmc6bm9ybWFsO21hcmdpbjowIDAgNjRweH0ubWF0LWJvdHRvbS1zaGVldC1jb250YWluZXJbX25nY29udGVudC0lQ09NUCVde2ZvbnQ6NDAwIDE0cHgvMjBweCBSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7bGV0dGVyLXNwYWNpbmc6bm9ybWFsfS5tYXQtYnV0dG9uW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1yYWlzZWQtYnV0dG9uW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1pY29uLWJ1dHRvbltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtc3Ryb2tlZC1idXR0b25bX25nY29udGVudC0lQ09NUCVdLCAubWF0LWZsYXQtYnV0dG9uW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1mYWJbX25nY29udGVudC0lQ09NUCVdLCAubWF0LW1pbmktZmFiW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7Zm9udC1zaXplOjE0cHg7Zm9udC13ZWlnaHQ6NTAwfS5tYXQtYnV0dG9uLXRvZ2dsZVtfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmfS5tYXQtY2FyZFtfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmfS5tYXQtY2FyZC10aXRsZVtfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjI0cHg7Zm9udC13ZWlnaHQ6NTAwfS5tYXQtY2FyZC1oZWFkZXJbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1jYXJkLXRpdGxlW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MjBweH0ubWF0LWNhcmQtc3VidGl0bGVbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWNhcmQtY29udGVudFtfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjE0cHh9Lm1hdC1jaGVja2JveFtfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmfS5tYXQtY2hlY2tib3gtbGF5b3V0W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtY2hlY2tib3gtbGFiZWxbX25nY29udGVudC0lQ09NUCVde2xpbmUtaGVpZ2h0OjI0cHh9Lm1hdC1jaGlwW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MTRweDtmb250LXdlaWdodDo1MDB9Lm1hdC1jaGlwW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtY2hpcC10cmFpbGluZy1pY29uLm1hdC1pY29uW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1jaGlwW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtY2hpcC1yZW1vdmUubWF0LWljb25bX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToxOHB4fS5tYXQtdGFibGVbX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZn0ubWF0LWhlYWRlci1jZWxsW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MTJweDtmb250LXdlaWdodDo1MDB9Lm1hdC1jZWxsW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1mb290ZXItY2VsbFtfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjE0cHh9Lm1hdC1jYWxlbmRhcltfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmfS5tYXQtY2FsZW5kYXItYm9keVtfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjEzcHh9Lm1hdC1jYWxlbmRhci1ib2R5LWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1jYWxlbmRhci1wZXJpb2QtYnV0dG9uW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MTRweDtmb250LXdlaWdodDo1MDB9Lm1hdC1jYWxlbmRhci10YWJsZS1oZWFkZXJbX25nY29udGVudC0lQ09NUCVdICAgdGhbX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToxMXB4O2ZvbnQtd2VpZ2h0OjQwMH0ubWF0LWRpYWxvZy10aXRsZVtfbmdjb250ZW50LSVDT01QJV17Zm9udDo1MDAgMjBweC8zMnB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtsZXR0ZXItc3BhY2luZzpub3JtYWx9Lm1hdC1leHBhbnNpb24tcGFuZWwtaGVhZGVyW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7Zm9udC1zaXplOjE1cHg7Zm9udC13ZWlnaHQ6NDAwfS5tYXQtZXhwYW5zaW9uLXBhbmVsLWNvbnRlbnRbX25nY29udGVudC0lQ09NUCVde2ZvbnQ6NDAwIDE0cHgvMjBweCBSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7bGV0dGVyLXNwYWNpbmc6bm9ybWFsfS5tYXQtZm9ybS1maWVsZFtfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOmluaGVyaXQ7Zm9udC13ZWlnaHQ6NDAwO2xpbmUtaGVpZ2h0OjEuMTI1O2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtsZXR0ZXItc3BhY2luZzpub3JtYWx9Lm1hdC1mb3JtLWZpZWxkLXdyYXBwZXJbX25nY29udGVudC0lQ09NUCVde3BhZGRpbmctYm90dG9tOjEuMzQzNzVlbX0ubWF0LWZvcm0tZmllbGQtcHJlZml4W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaWNvbltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtZm9ybS1maWVsZC1zdWZmaXhbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pY29uW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MTUwJTtsaW5lLWhlaWdodDoxLjEyNX0ubWF0LWZvcm0tZmllbGQtcHJlZml4W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaWNvbi1idXR0b25bX25nY29udGVudC0lQ09NUCVdLCAubWF0LWZvcm0tZmllbGQtc3VmZml4W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaWNvbi1idXR0b25bX25nY29udGVudC0lQ09NUCVde2hlaWdodDoxLjVlbTt3aWR0aDoxLjVlbX0ubWF0LWZvcm0tZmllbGQtcHJlZml4W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaWNvbi1idXR0b25bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pY29uW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1mb3JtLWZpZWxkLXN1ZmZpeFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWljb24tYnV0dG9uW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaWNvbltfbmdjb250ZW50LSVDT01QJV17aGVpZ2h0OjEuMTI1ZW07bGluZS1oZWlnaHQ6MS4xMjV9Lm1hdC1mb3JtLWZpZWxkLWluZml4W19uZ2NvbnRlbnQtJUNPTVAlXXtwYWRkaW5nOi41ZW0gMDtib3JkZXItdG9wOi44NDM3NWVtIHNvbGlkIHRyYW5zcGFyZW50fS5tYXQtZm9ybS1maWVsZC1jYW4tZmxvYXQubWF0LWZvcm0tZmllbGQtc2hvdWxkLWZsb2F0W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtZm9ybS1maWVsZC1jYW4tZmxvYXRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pbnB1dC1zZXJ2ZXJbX25nY29udGVudC0lQ09NUCVdOmZvY3VzICsgLm1hdC1mb3JtLWZpZWxkLWxhYmVsLXdyYXBwZXJbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXt0cmFuc2Zvcm06dHJhbnNsYXRlWSgtMS4zNDM3NWVtKSBzY2FsZSgwLjc1KTt3aWR0aDoxMzMuMzMzMzMzMzMzMyV9Lm1hdC1mb3JtLWZpZWxkLWNhbi1mbG9hdFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWlucHV0LXNlcnZlcltsYWJlbF1bX25nY29udGVudC0lQ09NUCVdOm5vdCg6bGFiZWwtc2hvd24pICsgLm1hdC1mb3JtLWZpZWxkLWxhYmVsLXdyYXBwZXJbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXt0cmFuc2Zvcm06dHJhbnNsYXRlWSgtMS4zNDM3NGVtKSBzY2FsZSgwLjc1KTt3aWR0aDoxMzMuMzMzMzQzMzMzMyV9Lm1hdC1mb3JtLWZpZWxkLWxhYmVsLXdyYXBwZXJbX25nY29udGVudC0lQ09NUCVde3RvcDotMC44NDM3NWVtO3BhZGRpbmctdG9wOi44NDM3NWVtfS5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17dG9wOjEuMzQzNzVlbX0ubWF0LWZvcm0tZmllbGQtdW5kZXJsaW5lW19uZ2NvbnRlbnQtJUNPTVAlXXtib3R0b206MS4zNDM3NWVtfS5tYXQtZm9ybS1maWVsZC1zdWJzY3JpcHQtd3JhcHBlcltfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjc1JTttYXJnaW4tdG9wOi42NjY2NjY2NjY3ZW07dG9wOmNhbGMoMTAwJSAtIDEuNzkxNjY2NjY2N2VtKX0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1sZWdhY3lbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLXdyYXBwZXJbX25nY29udGVudC0lQ09NUCVde3BhZGRpbmctYm90dG9tOjEuMjVlbX0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1sZWdhY3lbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWluZml4W19uZ2NvbnRlbnQtJUNPTVAlXXtwYWRkaW5nOi40Mzc1ZW0gMH0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1sZWdhY3kubWF0LWZvcm0tZmllbGQtY2FuLWZsb2F0Lm1hdC1mb3JtLWZpZWxkLXNob3VsZC1mbG9hdFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1sZWdhY3kubWF0LWZvcm0tZmllbGQtY2FuLWZsb2F0W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaW5wdXQtc2VydmVyW19uZ2NvbnRlbnQtJUNPTVAlXTpmb2N1cyArIC5tYXQtZm9ybS1maWVsZC1sYWJlbC13cmFwcGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17dHJhbnNmb3JtOnRyYW5zbGF0ZVkoLTEuMjgxMjVlbSkgc2NhbGUoMC43NSkgcGVyc3BlY3RpdmUoMTAwcHgpIHRyYW5zbGF0ZVooMC4wMDFweCk7LW1zLXRyYW5zZm9ybTp0cmFuc2xhdGVZKC0xLjI4MTI1ZW0pIHNjYWxlKDAuNzUpO3dpZHRoOjEzMy4zMzMzMzMzMzMzJX0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1sZWdhY3kubWF0LWZvcm0tZmllbGQtY2FuLWZsb2F0W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1hdXRvZmlsbC1jb250cm9sW19uZ2NvbnRlbnQtJUNPTVAlXTotd2Via2l0LWF1dG9maWxsICsgLm1hdC1mb3JtLWZpZWxkLWxhYmVsLXdyYXBwZXJbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXt0cmFuc2Zvcm06dHJhbnNsYXRlWSgtMS4yODEyNWVtKSBzY2FsZSgwLjc1KSBwZXJzcGVjdGl2ZSgxMDBweCkgdHJhbnNsYXRlWigwLjAwMTAxcHgpOy1tcy10cmFuc2Zvcm06dHJhbnNsYXRlWSgtMS4yODEyNGVtKSBzY2FsZSgwLjc1KTt3aWR0aDoxMzMuMzMzMzQzMzMzMyV9Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtbGVnYWN5Lm1hdC1mb3JtLWZpZWxkLWNhbi1mbG9hdFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWlucHV0LXNlcnZlcltsYWJlbF1bX25nY29udGVudC0lQ09NUCVdOm5vdCg6bGFiZWwtc2hvd24pICsgLm1hdC1mb3JtLWZpZWxkLWxhYmVsLXdyYXBwZXJbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXt0cmFuc2Zvcm06dHJhbnNsYXRlWSgtMS4yODEyNWVtKSBzY2FsZSgwLjc1KSBwZXJzcGVjdGl2ZSgxMDBweCkgdHJhbnNsYXRlWigwLjAwMTAycHgpOy1tcy10cmFuc2Zvcm06dHJhbnNsYXRlWSgtMS4yODEyM2VtKSBzY2FsZSgwLjc1KTt3aWR0aDoxMzMuMzMzMzUzMzMzMyV9Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtbGVnYWN5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17dG9wOjEuMjgxMjVlbX0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1sZWdhY3lbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLXVuZGVybGluZVtfbmdjb250ZW50LSVDT01QJV17Ym90dG9tOjEuMjVlbX0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1sZWdhY3lbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLXN1YnNjcmlwdC13cmFwcGVyW19uZ2NvbnRlbnQtJUNPTVAlXXttYXJnaW4tdG9wOi41NDE2NjY2NjY3ZW07dG9wOmNhbGMoMTAwJSAtIDEuNjY2NjY2NjY2N2VtKX1AbWVkaWEgcHJpbnR7Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtbGVnYWN5Lm1hdC1mb3JtLWZpZWxkLWNhbi1mbG9hdC5tYXQtZm9ybS1maWVsZC1zaG91bGQtZmxvYXRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtbGVnYWN5Lm1hdC1mb3JtLWZpZWxkLWNhbi1mbG9hdFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWlucHV0LXNlcnZlcltfbmdjb250ZW50LSVDT01QJV06Zm9jdXMgKyAubWF0LWZvcm0tZmllbGQtbGFiZWwtd3JhcHBlcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVde3RyYW5zZm9ybTp0cmFuc2xhdGVZKC0xLjI4MTIyZW0pIHNjYWxlKDAuNzUpfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWxlZ2FjeS5tYXQtZm9ybS1maWVsZC1jYW4tZmxvYXRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWF1dG9maWxsLWNvbnRyb2xbX25nY29udGVudC0lQ09NUCVdOi13ZWJraXQtYXV0b2ZpbGwgKyAubWF0LWZvcm0tZmllbGQtbGFiZWwtd3JhcHBlcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVde3RyYW5zZm9ybTp0cmFuc2xhdGVZKC0xLjI4MTIxZW0pIHNjYWxlKDAuNzUpfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWxlZ2FjeS5tYXQtZm9ybS1maWVsZC1jYW4tZmxvYXRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pbnB1dC1zZXJ2ZXJbbGFiZWxdW19uZ2NvbnRlbnQtJUNPTVAlXTpub3QoOmxhYmVsLXNob3duKSArIC5tYXQtZm9ybS1maWVsZC1sYWJlbC13cmFwcGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17dHJhbnNmb3JtOnRyYW5zbGF0ZVkoLTEuMjgxMmVtKSBzY2FsZSgwLjc1KX19Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtZmlsbFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtaW5maXhbX25nY29udGVudC0lQ09NUCVde3BhZGRpbmc6LjI1ZW0gMCAuNzVlbSAwfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWZpbGxbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXt0b3A6MS4wOTM3NWVtO21hcmdpbi10b3A6LTAuNWVtfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWZpbGwubWF0LWZvcm0tZmllbGQtY2FuLWZsb2F0Lm1hdC1mb3JtLWZpZWxkLXNob3VsZC1mbG9hdFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1maWxsLm1hdC1mb3JtLWZpZWxkLWNhbi1mbG9hdFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWlucHV0LXNlcnZlcltfbmdjb250ZW50LSVDT01QJV06Zm9jdXMgKyAubWF0LWZvcm0tZmllbGQtbGFiZWwtd3JhcHBlcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVde3RyYW5zZm9ybTp0cmFuc2xhdGVZKC0wLjU5Mzc1ZW0pIHNjYWxlKDAuNzUpO3dpZHRoOjEzMy4zMzMzMzMzMzMzJX0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1maWxsLm1hdC1mb3JtLWZpZWxkLWNhbi1mbG9hdFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWlucHV0LXNlcnZlcltsYWJlbF1bX25nY29udGVudC0lQ09NUCVdOm5vdCg6bGFiZWwtc2hvd24pICsgLm1hdC1mb3JtLWZpZWxkLWxhYmVsLXdyYXBwZXJbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXt0cmFuc2Zvcm06dHJhbnNsYXRlWSgtMC41OTM3NGVtKSBzY2FsZSgwLjc1KTt3aWR0aDoxMzMuMzMzMzQzMzMzMyV9Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2Utb3V0bGluZVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtaW5maXhbX25nY29udGVudC0lQ09NUCVde3BhZGRpbmc6MWVtIDAgMWVtIDB9Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2Utb3V0bGluZVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVde3RvcDoxLjg0Mzc1ZW07bWFyZ2luLXRvcDotMC4yNWVtfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLW91dGxpbmUubWF0LWZvcm0tZmllbGQtY2FuLWZsb2F0Lm1hdC1mb3JtLWZpZWxkLXNob3VsZC1mbG9hdFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1vdXRsaW5lLm1hdC1mb3JtLWZpZWxkLWNhbi1mbG9hdFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWlucHV0LXNlcnZlcltfbmdjb250ZW50LSVDT01QJV06Zm9jdXMgKyAubWF0LWZvcm0tZmllbGQtbGFiZWwtd3JhcHBlcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVde3RyYW5zZm9ybTp0cmFuc2xhdGVZKC0xLjU5Mzc1ZW0pIHNjYWxlKDAuNzUpO3dpZHRoOjEzMy4zMzMzMzMzMzMzJX0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1vdXRsaW5lLm1hdC1mb3JtLWZpZWxkLWNhbi1mbG9hdFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWlucHV0LXNlcnZlcltsYWJlbF1bX25nY29udGVudC0lQ09NUCVdOm5vdCg6bGFiZWwtc2hvd24pICsgLm1hdC1mb3JtLWZpZWxkLWxhYmVsLXdyYXBwZXJbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXt0cmFuc2Zvcm06dHJhbnNsYXRlWSgtMS41OTM3NGVtKSBzY2FsZSgwLjc1KTt3aWR0aDoxMzMuMzMzMzQzMzMzMyV9Lm1hdC1ncmlkLXRpbGUtaGVhZGVyW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1ncmlkLXRpbGUtZm9vdGVyW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MTRweH0ubWF0LWdyaWQtdGlsZS1oZWFkZXJbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saW5lW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1ncmlkLXRpbGUtZm9vdGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGluZVtfbmdjb250ZW50LSVDT01QJV17d2hpdGUtc3BhY2U6bm93cmFwO292ZXJmbG93OmhpZGRlbjt0ZXh0LW92ZXJmbG93OmVsbGlwc2lzO2Rpc3BsYXk6YmxvY2s7Ym94LXNpemluZzpib3JkZXItYm94fS5tYXQtZ3JpZC10aWxlLWhlYWRlcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpbmVbX25nY29udGVudC0lQ09NUCVdOm50aC1jaGlsZChuKzIpLCAubWF0LWdyaWQtdGlsZS1mb290ZXJbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saW5lW19uZ2NvbnRlbnQtJUNPTVAlXTpudGgtY2hpbGQobisyKXtmb250LXNpemU6MTJweH1pbnB1dC5tYXQtaW5wdXQtZWxlbWVudFtfbmdjb250ZW50LSVDT01QJV17bWFyZ2luLXRvcDotMC4wNjI1ZW19Lm1hdC1tZW51LWl0ZW1bX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtmb250LXNpemU6MTRweDtmb250LXdlaWdodDo0MDB9Lm1hdC1wYWdpbmF0b3JbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXBhZ2luYXRvci1wYWdlLXNpemVbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1zZWxlY3QtdHJpZ2dlcltfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2ZvbnQtc2l6ZToxMnB4fS5tYXQtcmFkaW8tYnV0dG9uW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWZ9Lm1hdC1zZWxlY3RbX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZn0ubWF0LXNlbGVjdC10cmlnZ2VyW19uZ2NvbnRlbnQtJUNPTVAlXXtoZWlnaHQ6MS4xMjVlbX0ubWF0LXNsaWRlLXRvZ2dsZS1jb250ZW50W19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWZ9Lm1hdC1zbGlkZXItdGh1bWItbGFiZWwtdGV4dFtfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2ZvbnQtc2l6ZToxMnB4O2ZvbnQtd2VpZ2h0OjUwMH0ubWF0LXN0ZXBwZXItdmVydGljYWxbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXN0ZXBwZXItaG9yaXpvbnRhbFtfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmfS5tYXQtc3RlcC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjE0cHg7Zm9udC13ZWlnaHQ6NDAwfS5tYXQtc3RlcC1zdWItbGFiZWwtZXJyb3JbX25nY29udGVudC0lQ09NUCVde2ZvbnQtd2VpZ2h0Om5vcm1hbH0ubWF0LXN0ZXAtbGFiZWwtZXJyb3JbX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToxNHB4fS5tYXQtc3RlcC1sYWJlbC1zZWxlY3RlZFtfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjE0cHg7Zm9udC13ZWlnaHQ6NTAwfS5tYXQtdGFiLWdyb3VwW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWZ9Lm1hdC10YWItbGFiZWxbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXRhYi1saW5rW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7Zm9udC1zaXplOjE0cHg7Zm9udC13ZWlnaHQ6NTAwfS5tYXQtdG9vbGJhcltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdG9vbGJhcltfbmdjb250ZW50LSVDT01QJV0gICBoMVtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdG9vbGJhcltfbmdjb250ZW50LSVDT01QJV0gICBoMltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdG9vbGJhcltfbmdjb250ZW50LSVDT01QJV0gICBoM1tfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdG9vbGJhcltfbmdjb250ZW50LSVDT01QJV0gICBoNFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdG9vbGJhcltfbmdjb250ZW50LSVDT01QJV0gICBoNVtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdG9vbGJhcltfbmdjb250ZW50LSVDT01QJV0gICBoNltfbmdjb250ZW50LSVDT01QJV17Zm9udDo1MDAgMjBweC8zMnB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtsZXR0ZXItc3BhY2luZzpub3JtYWw7bWFyZ2luOjB9Lm1hdC10b29sdGlwW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7Zm9udC1zaXplOjEwcHg7cGFkZGluZy10b3A6NnB4O3BhZGRpbmctYm90dG9tOjZweH0ubWF0LXRvb2x0aXAtaGFuZHNldFtfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjE0cHg7cGFkZGluZy10b3A6OHB4O3BhZGRpbmctYm90dG9tOjhweH0ubWF0LWxpc3QtaXRlbVtfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmfS5tYXQtbGlzdC1vcHRpb25bX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZn0ubWF0LWxpc3QtYmFzZVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpc3QtaXRlbVtfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjE2cHh9Lm1hdC1saXN0LWJhc2VbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saXN0LWl0ZW1bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saW5lW19uZ2NvbnRlbnQtJUNPTVAlXXt3aGl0ZS1zcGFjZTpub3dyYXA7b3ZlcmZsb3c6aGlkZGVuO3RleHQtb3ZlcmZsb3c6ZWxsaXBzaXM7ZGlzcGxheTpibG9jaztib3gtc2l6aW5nOmJvcmRlci1ib3h9Lm1hdC1saXN0LWJhc2VbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saXN0LWl0ZW1bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saW5lW19uZ2NvbnRlbnQtJUNPTVAlXTpudGgtY2hpbGQobisyKXtmb250LXNpemU6MTRweH0ubWF0LWxpc3QtYmFzZVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpc3Qtb3B0aW9uW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MTZweH0ubWF0LWxpc3QtYmFzZVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpc3Qtb3B0aW9uW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGluZVtfbmdjb250ZW50LSVDT01QJV17d2hpdGUtc3BhY2U6bm93cmFwO292ZXJmbG93OmhpZGRlbjt0ZXh0LW92ZXJmbG93OmVsbGlwc2lzO2Rpc3BsYXk6YmxvY2s7Ym94LXNpemluZzpib3JkZXItYm94fS5tYXQtbGlzdC1iYXNlW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGlzdC1vcHRpb25bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saW5lW19uZ2NvbnRlbnQtJUNPTVAlXTpudGgtY2hpbGQobisyKXtmb250LXNpemU6MTRweH0ubWF0LWxpc3QtYmFzZVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXN1YmhlYWRlcltfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2ZvbnQtc2l6ZToxNHB4O2ZvbnQtd2VpZ2h0OjUwMH0ubWF0LWxpc3QtYmFzZVtkZW5zZV1bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saXN0LWl0ZW1bX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToxMnB4fS5tYXQtbGlzdC1iYXNlW2RlbnNlXVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpc3QtaXRlbVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpbmVbX25nY29udGVudC0lQ09NUCVde3doaXRlLXNwYWNlOm5vd3JhcDtvdmVyZmxvdzpoaWRkZW47dGV4dC1vdmVyZmxvdzplbGxpcHNpcztkaXNwbGF5OmJsb2NrO2JveC1zaXppbmc6Ym9yZGVyLWJveH0ubWF0LWxpc3QtYmFzZVtkZW5zZV1bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saXN0LWl0ZW1bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saW5lW19uZ2NvbnRlbnQtJUNPTVAlXTpudGgtY2hpbGQobisyKXtmb250LXNpemU6MTJweH0ubWF0LWxpc3QtYmFzZVtkZW5zZV1bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saXN0LW9wdGlvbltfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjEycHh9Lm1hdC1saXN0LWJhc2VbZGVuc2VdW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGlzdC1vcHRpb25bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saW5lW19uZ2NvbnRlbnQtJUNPTVAlXXt3aGl0ZS1zcGFjZTpub3dyYXA7b3ZlcmZsb3c6aGlkZGVuO3RleHQtb3ZlcmZsb3c6ZWxsaXBzaXM7ZGlzcGxheTpibG9jaztib3gtc2l6aW5nOmJvcmRlci1ib3h9Lm1hdC1saXN0LWJhc2VbZGVuc2VdW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGlzdC1vcHRpb25bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saW5lW19uZ2NvbnRlbnQtJUNPTVAlXTpudGgtY2hpbGQobisyKXtmb250LXNpemU6MTJweH0ubWF0LWxpc3QtYmFzZVtkZW5zZV1bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1zdWJoZWFkZXJbX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtmb250LXNpemU6MTJweDtmb250LXdlaWdodDo1MDB9Lm1hdC1vcHRpb25bX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtmb250LXNpemU6MTZweH0ubWF0LW9wdGdyb3VwLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250OjUwMCAxNHB4LzI0cHggUm9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2xldHRlci1zcGFjaW5nOm5vcm1hbH0ubWF0LXNpbXBsZS1zbmFja2Jhcltfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2ZvbnQtc2l6ZToxNHB4fS5tYXQtc2ltcGxlLXNuYWNrYmFyLWFjdGlvbltfbmdjb250ZW50LSVDT01QJV17bGluZS1oZWlnaHQ6MTtmb250LWZhbWlseTppbmhlcml0O2ZvbnQtc2l6ZTppbmhlcml0O2ZvbnQtd2VpZ2h0OjUwMH0ubWF0LXRyZWVbX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZn0ubWF0LXRyZWUtbm9kZVtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtbmVzdGVkLXRyZWUtbm9kZVtfbmdjb250ZW50LSVDT01QJV17Zm9udC13ZWlnaHQ6NDAwO2ZvbnQtc2l6ZToxNHB4fS5tYXQtcmlwcGxlW19uZ2NvbnRlbnQtJUNPTVAlXXtvdmVyZmxvdzpoaWRkZW47cG9zaXRpb246cmVsYXRpdmV9Lm1hdC1yaXBwbGVbX25nY29udGVudC0lQ09NUCVdOm5vdCg6ZW1wdHkpe3RyYW5zZm9ybTp0cmFuc2xhdGVaKDApfS5tYXQtcmlwcGxlLm1hdC1yaXBwbGUtdW5ib3VuZGVkW19uZ2NvbnRlbnQtJUNPTVAlXXtvdmVyZmxvdzp2aXNpYmxlfS5tYXQtcmlwcGxlLWVsZW1lbnRbX25nY29udGVudC0lQ09NUCVde3Bvc2l0aW9uOmFic29sdXRlO2JvcmRlci1yYWRpdXM6NTAlO3BvaW50ZXItZXZlbnRzOm5vbmU7dHJhbnNpdGlvbjpvcGFjaXR5LHRyYW5zZm9ybSAwbXMgY3ViaWMtYmV6aWVyKDAsIDAsIDAuMiwgMSk7dHJhbnNmb3JtOnNjYWxlKDApfS5jZGstaGlnaC1jb250cmFzdC1hY3RpdmVbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1yaXBwbGUtZWxlbWVudFtfbmdjb250ZW50LSVDT01QJV17ZGlzcGxheTpub25lfS5jZGstdmlzdWFsbHktaGlkZGVuW19uZ2NvbnRlbnQtJUNPTVAlXXtib3JkZXI6MDtjbGlwOnJlY3QoMCAwIDAgMCk7aGVpZ2h0OjFweDttYXJnaW46LTFweDtvdmVyZmxvdzpoaWRkZW47cGFkZGluZzowO3Bvc2l0aW9uOmFic29sdXRlO3dpZHRoOjFweDtvdXRsaW5lOjA7LXdlYmtpdC1hcHBlYXJhbmNlOm5vbmU7LW1vei1hcHBlYXJhbmNlOm5vbmV9LmNkay1vdmVybGF5LWNvbnRhaW5lcltfbmdjb250ZW50LSVDT01QJV0sIC5jZGstZ2xvYmFsLW92ZXJsYXktd3JhcHBlcltfbmdjb250ZW50LSVDT01QJV17cG9pbnRlci1ldmVudHM6bm9uZTt0b3A6MDtsZWZ0OjA7aGVpZ2h0OjEwMCU7d2lkdGg6MTAwJX0uY2RrLW92ZXJsYXktY29udGFpbmVyW19uZ2NvbnRlbnQtJUNPTVAlXXtwb3NpdGlvbjpmaXhlZDt6LWluZGV4OjEwMDB9LmNkay1vdmVybGF5LWNvbnRhaW5lcltfbmdjb250ZW50LSVDT01QJV06ZW1wdHl7ZGlzcGxheTpub25lfS5jZGstZ2xvYmFsLW92ZXJsYXktd3JhcHBlcltfbmdjb250ZW50LSVDT01QJV17ZGlzcGxheTpmbGV4O3Bvc2l0aW9uOmFic29sdXRlO3otaW5kZXg6MTAwMH0uY2RrLW92ZXJsYXktcGFuZVtfbmdjb250ZW50LSVDT01QJV17cG9zaXRpb246YWJzb2x1dGU7cG9pbnRlci1ldmVudHM6YXV0bztib3gtc2l6aW5nOmJvcmRlci1ib3g7ei1pbmRleDoxMDAwO2Rpc3BsYXk6ZmxleDttYXgtd2lkdGg6MTAwJTttYXgtaGVpZ2h0OjEwMCV9LmNkay1vdmVybGF5LWJhY2tkcm9wW19uZ2NvbnRlbnQtJUNPTVAlXXtwb3NpdGlvbjphYnNvbHV0ZTt0b3A6MDtib3R0b206MDtsZWZ0OjA7cmlnaHQ6MDt6LWluZGV4OjEwMDA7cG9pbnRlci1ldmVudHM6YXV0bzstd2Via2l0LXRhcC1oaWdobGlnaHQtY29sb3I6dHJhbnNwYXJlbnQ7dHJhbnNpdGlvbjpvcGFjaXR5IDQwMG1zIGN1YmljLWJlemllcigwLjI1LCAwLjgsIDAuMjUsIDEpO29wYWNpdHk6MH0uY2RrLW92ZXJsYXktYmFja2Ryb3AuY2RrLW92ZXJsYXktYmFja2Ryb3Atc2hvd2luZ1tfbmdjb250ZW50LSVDT01QJV17b3BhY2l0eToxfUBtZWRpYSBzY3JlZW4gYW5kICgtbXMtaGlnaC1jb250cmFzdDogYWN0aXZlKXsuY2RrLW92ZXJsYXktYmFja2Ryb3AuY2RrLW92ZXJsYXktYmFja2Ryb3Atc2hvd2luZ1tfbmdjb250ZW50LSVDT01QJV17b3BhY2l0eTouNn19LmNkay1vdmVybGF5LWRhcmstYmFja2Ryb3BbX25nY29udGVudC0lQ09NUCVde2JhY2tncm91bmQ6cmdiYSgwLDAsMCwuMzIpfS5jZGstb3ZlcmxheS10cmFuc3BhcmVudC1iYWNrZHJvcFtfbmdjb250ZW50LSVDT01QJV0sIC5jZGstb3ZlcmxheS10cmFuc3BhcmVudC1iYWNrZHJvcC5jZGstb3ZlcmxheS1iYWNrZHJvcC1zaG93aW5nW19uZ2NvbnRlbnQtJUNPTVAlXXtvcGFjaXR5OjB9LmNkay1vdmVybGF5LWNvbm5lY3RlZC1wb3NpdGlvbi1ib3VuZGluZy1ib3hbX25nY29udGVudC0lQ09NUCVde3Bvc2l0aW9uOmFic29sdXRlO3otaW5kZXg6MTAwMDtkaXNwbGF5OmZsZXg7ZmxleC1kaXJlY3Rpb246Y29sdW1uO21pbi13aWR0aDoxcHg7bWluLWhlaWdodDoxcHh9LmNkay1nbG9iYWwtc2Nyb2xsYmxvY2tbX25nY29udGVudC0lQ09NUCVde3Bvc2l0aW9uOmZpeGVkO3dpZHRoOjEwMCU7b3ZlcmZsb3cteTpzY3JvbGx9QGtleWZyYW1lcyBjZGstdGV4dC1maWVsZC1hdXRvZmlsbC1zdGFydHt9QGtleWZyYW1lcyBjZGstdGV4dC1maWVsZC1hdXRvZmlsbC1lbmR7fS5jZGstdGV4dC1maWVsZC1hdXRvZmlsbC1tb25pdG9yZWRbX25nY29udGVudC0lQ09NUCVdOi13ZWJraXQtYXV0b2ZpbGx7YW5pbWF0aW9uOmNkay10ZXh0LWZpZWxkLWF1dG9maWxsLXN0YXJ0IDBzIDFtc30uY2RrLXRleHQtZmllbGQtYXV0b2ZpbGwtbW9uaXRvcmVkW19uZ2NvbnRlbnQtJUNPTVAlXTpub3QoOi13ZWJraXQtYXV0b2ZpbGwpe2FuaW1hdGlvbjpjZGstdGV4dC1maWVsZC1hdXRvZmlsbC1lbmQgMHMgMW1zfXRleHRhcmVhLmNkay10ZXh0YXJlYS1hdXRvc2l6ZVtfbmdjb250ZW50LSVDT01QJV17cmVzaXplOm5vbmV9dGV4dGFyZWEuY2RrLXRleHRhcmVhLWF1dG9zaXplLW1lYXN1cmluZ1tfbmdjb250ZW50LSVDT01QJV17cGFkZGluZzoycHggMCAhaW1wb3J0YW50O2JveC1zaXppbmc6Y29udGVudC1ib3ggIWltcG9ydGFudDtoZWlnaHQ6YXV0byAhaW1wb3J0YW50O292ZXJmbG93OmhpZGRlbiAhaW1wb3J0YW50fXRleHRhcmVhLmNkay10ZXh0YXJlYS1hdXRvc2l6ZS1tZWFzdXJpbmctZmlyZWZveFtfbmdjb250ZW50LSVDT01QJV17cGFkZGluZzoycHggMCAhaW1wb3J0YW50O2JveC1zaXppbmc6Y29udGVudC1ib3ggIWltcG9ydGFudDtoZWlnaHQ6MCAhaW1wb3J0YW50fS5tYXQtZm9jdXMtaW5kaWNhdG9yW19uZ2NvbnRlbnQtJUNPTVAlXXtwb3NpdGlvbjpyZWxhdGl2ZX0ubWF0LW1kYy1mb2N1cy1pbmRpY2F0b3JbX25nY29udGVudC0lQ09NUCVde3Bvc2l0aW9uOnJlbGF0aXZlfS5tYXQtcmlwcGxlLWVsZW1lbnRbX25nY29udGVudC0lQ09NUCVde2JhY2tncm91bmQtY29sb3I6cmdiYSgwLDAsMCwuMSl9Lm1hdC1vcHRpb25bX25nY29udGVudC0lQ09NUCVde2NvbG9yOiMyMTIxMjF9Lm1hdC1vcHRpb25bX25nY29udGVudC0lQ09NUCVdOmhvdmVyOm5vdCgubWF0LW9wdGlvbi1kaXNhYmxlZCksIC5tYXQtb3B0aW9uW19uZ2NvbnRlbnQtJUNPTVAlXTpmb2N1czpub3QoLm1hdC1vcHRpb24tZGlzYWJsZWQpe2JhY2tncm91bmQ6cmdiYSgwLDAsMCwuMDQpfS5tYXQtb3B0aW9uLm1hdC1zZWxlY3RlZFtfbmdjb250ZW50LSVDT01QJV06bm90KC5tYXQtb3B0aW9uLW11bHRpcGxlKTpub3QoLm1hdC1vcHRpb24tZGlzYWJsZWQpe2JhY2tncm91bmQ6cmdiYSgwLDAsMCwuMDQpfS5tYXQtb3B0aW9uLm1hdC1hY3RpdmVbX25nY29udGVudC0lQ09NUCVde2JhY2tncm91bmQ6cmdiYSgwLDAsMCwuMDQpO2NvbG9yOiMyMTIxMjF9Lm1hdC1vcHRpb24ubWF0LW9wdGlvbi1kaXNhYmxlZFtfbmdjb250ZW50LSVDT01QJV17Y29sb3I6cmdiYSgwLDAsMCwuMzgpfS5tYXQtcHJpbWFyeVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LW9wdGlvbi5tYXQtc2VsZWN0ZWRbX25nY29udGVudC0lQ09NUCVdOm5vdCgubWF0LW9wdGlvbi1kaXNhYmxlZCl7Y29sb3I6I2Y1N2MwMH0ubWF0LWFjY2VudFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LW9wdGlvbi5tYXQtc2VsZWN0ZWRbX25nY29udGVudC0lQ09NUCVdOm5vdCgubWF0LW9wdGlvbi1kaXNhYmxlZCl7Y29sb3I6I2ZmOTgwMH0ubWF0LXdhcm5bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1vcHRpb24ubWF0LXNlbGVjdGVkW19uZ2NvbnRlbnQtJUNPTVAlXTpub3QoLm1hdC1vcHRpb24tZGlzYWJsZWQpe2NvbG9yOiNmNDQzMzZ9Lm1hdC1vcHRncm91cC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17Y29sb3I6IzYxNjE2MX0ubWF0LW9wdGdyb3VwLWRpc2FibGVkW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtb3B0Z3JvdXAtbGFiZWxbX25nY29udGVudC0lQ09NUCVde2NvbG9yOnJnYmEoMCwwLDAsLjM4KX0ubWF0LXBzZXVkby1jaGVja2JveFtfbmdjb250ZW50LSVDT01QJV17Y29sb3I6IzYxNjE2MX0ubWF0LXBzZXVkby1jaGVja2JveFtfbmdjb250ZW50LSVDT01QJV06OmFmdGVye2NvbG9yOiNmYWZhZmF9Lm1hdC1wc2V1ZG8tY2hlY2tib3gtZGlzYWJsZWRbX25nY29udGVudC0lQ09NUCVde2NvbG9yOiNiMGIwYjB9Lm1hdC1wcmltYXJ5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtcHNldWRvLWNoZWNrYm94LWNoZWNrZWRbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXByaW1hcnlbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1wc2V1ZG8tY2hlY2tib3gtaW5kZXRlcm1pbmF0ZVtfbmdjb250ZW50LSVDT01QJV17YmFja2dyb3VuZDojZjU3YzAwfS5tYXQtcHNldWRvLWNoZWNrYm94LWNoZWNrZWRbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXBzZXVkby1jaGVja2JveC1pbmRldGVybWluYXRlW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1hY2NlbnRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1wc2V1ZG8tY2hlY2tib3gtY2hlY2tlZFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtYWNjZW50W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtcHNldWRvLWNoZWNrYm94LWluZGV0ZXJtaW5hdGVbX25nY29udGVudC0lQ09NUCVde2JhY2tncm91bmQ6I2ZmOTgwMH0ubWF0LXdhcm5bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1wc2V1ZG8tY2hlY2tib3gtY2hlY2tlZFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtd2Fybltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXBzZXVkby1jaGVja2JveC1pbmRldGVybWluYXRlW19uZ2NvbnRlbnQtJUNPTVAlXXtiYWNrZ3JvdW5kOiNmNDQzMzZ9Lm1hdC1wc2V1ZG8tY2hlY2tib3gtY2hlY2tlZC5tYXQtcHNldWRvLWNoZWNrYm94LWRpc2FibGVkW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1wc2V1ZG8tY2hlY2tib3gtaW5kZXRlcm1pbmF0ZS5tYXQtcHNldWRvLWNoZWNrYm94LWRpc2FibGVkW19uZ2NvbnRlbnQtJUNPTVAlXXtiYWNrZ3JvdW5kOiNiMGIwYjB9Lm1hdC1hcHAtYmFja2dyb3VuZFtfbmdjb250ZW50LSVDT01QJV17YmFja2dyb3VuZC1jb2xvcjojZmFmYWZhO2NvbG9yOiMyMTIxMjF9Lm1hdC1lbGV2YXRpb24tejBbX25nY29udGVudC0lQ09NUCVde2JveC1zaGFkb3c6MHB4IDBweCAwcHggMHB4IHJnYmEoMCwgMCwgMCwgMC4yKSwwcHggMHB4IDBweCAwcHggcmdiYSgwLCAwLCAwLCAwLjE0KSwwcHggMHB4IDBweCAwcHggcmdiYSgwLCAwLCAwLCAwLjEyKX0ubWF0LWVsZXZhdGlvbi16MVtfbmdjb250ZW50LSVDT01QJV17Ym94LXNoYWRvdzowcHggMnB4IDFweCAtMXB4IHJnYmEoMCwgMCwgMCwgMC4yKSwwcHggMXB4IDFweCAwcHggcmdiYSgwLCAwLCAwLCAwLjE0KSwwcHggMXB4IDNweCAwcHggcmdiYSgwLCAwLCAwLCAwLjEyKX0ubWF0LWVsZXZhdGlvbi16Mltfbmdjb250ZW50LSVDT01QJV17Ym94LXNoYWRvdzowcHggM3B4IDFweCAtMnB4IHJnYmEoMCwgMCwgMCwgMC4yKSwwcHggMnB4IDJweCAwcHggcmdiYSgwLCAwLCAwLCAwLjE0KSwwcHggMXB4IDVweCAwcHggcmdiYSgwLCAwLCAwLCAwLjEyKX0ubWF0LWVsZXZhdGlvbi16M1tfbmdjb250ZW50LSVDT01QJV17Ym94LXNoYWRvdzowcHggM3B4IDNweCAtMnB4IHJnYmEoMCwgMCwgMCwgMC4yKSwwcHggM3B4IDRweCAwcHggcmdiYSgwLCAwLCAwLCAwLjE0KSwwcHggMXB4IDhweCAwcHggcmdiYSgwLCAwLCAwLCAwLjEyKX0ubWF0LWVsZXZhdGlvbi16NFtfbmdjb250ZW50LSVDT01QJV17Ym94LXNoYWRvdzowcHggMnB4IDRweCAtMXB4IHJnYmEoMCwgMCwgMCwgMC4yKSwwcHggNHB4IDVweCAwcHggcmdiYSgwLCAwLCAwLCAwLjE0KSwwcHggMXB4IDEwcHggMHB4IHJnYmEoMCwgMCwgMCwgMC4xMil9Lm1hdC1lbGV2YXRpb24tejVbX25nY29udGVudC0lQ09NUCVde2JveC1zaGFkb3c6MHB4IDNweCA1cHggLTFweCByZ2JhKDAsIDAsIDAsIDAuMiksMHB4IDVweCA4cHggMHB4IHJnYmEoMCwgMCwgMCwgMC4xNCksMHB4IDFweCAxNHB4IDBweCByZ2JhKDAsIDAsIDAsIDAuMTIpfS5tYXQtZWxldmF0aW9uLXo2W19uZ2NvbnRlbnQtJUNPTVAlXXtib3gtc2hhZG93OjBweCAzcHggNXB4IC0xcHggcmdiYSgwLCAwLCAwLCAwLjIpLDBweCA2cHggMTBweCAwcHggcmdiYSgwLCAwLCAwLCAwLjE0KSwwcHggMXB4IDE4cHggMHB4IHJnYmEoMCwgMCwgMCwgMC4xMil9Lm1hdC1lbGV2YXRpb24tejdbX25nY29udGVudC0lQ09NUCVde2JveC1zaGFkb3c6MHB4IDRweCA1cHggLTJweCByZ2JhKDAsIDAsIDAsIDAuMiksMHB4IDdweCAxMHB4IDFweCByZ2JhKDAsIDAsIDAsIDAuMTQpLDBweCAycHggMTZweCAxcHggcmdiYSgwLCAwLCAwLCAwLjEyKX0ubWF0LWVsZXZhdGlvbi16OFtfbmdjb250ZW50LSVDT01QJV17Ym94LXNoYWRvdzowcHggNXB4IDVweCAtM3B4IHJnYmEoMCwgMCwgMCwgMC4yKSwwcHggOHB4IDEwcHggMXB4IHJnYmEoMCwgMCwgMCwgMC4xNCksMHB4IDNweCAxNHB4IDJweCByZ2JhKDAsIDAsIDAsIDAuMTIpfS5tYXQtZWxldmF0aW9uLXo5W19uZ2NvbnRlbnQtJUNPTVAlXXtib3gtc2hhZG93OjBweCA1cHggNnB4IC0zcHggcmdiYSgwLCAwLCAwLCAwLjIpLDBweCA5cHggMTJweCAxcHggcmdiYSgwLCAwLCAwLCAwLjE0KSwwcHggM3B4IDE2cHggMnB4IHJnYmEoMCwgMCwgMCwgMC4xMil9Lm1hdC1lbGV2YXRpb24tejEwW19uZ2NvbnRlbnQtJUNPTVAlXXtib3gtc2hhZG93OjBweCA2cHggNnB4IC0zcHggcmdiYSgwLCAwLCAwLCAwLjIpLDBweCAxMHB4IDE0cHggMXB4IHJnYmEoMCwgMCwgMCwgMC4xNCksMHB4IDRweCAxOHB4IDNweCByZ2JhKDAsIDAsIDAsIDAuMTIpfS5tYXQtZWxldmF0aW9uLXoxMVtfbmdjb250ZW50LSVDT01QJV17Ym94LXNoYWRvdzowcHggNnB4IDdweCAtNHB4IHJnYmEoMCwgMCwgMCwgMC4yKSwwcHggMTFweCAxNXB4IDFweCByZ2JhKDAsIDAsIDAsIDAuMTQpLDBweCA0cHggMjBweCAzcHggcmdiYSgwLCAwLCAwLCAwLjEyKX0ubWF0LWVsZXZhdGlvbi16MTJbX25nY29udGVudC0lQ09NUCVde2JveC1zaGFkb3c6MHB4IDdweCA4cHggLTRweCByZ2JhKDAsIDAsIDAsIDAuMiksMHB4IDEycHggMTdweCAycHggcmdiYSgwLCAwLCAwLCAwLjE0KSwwcHggNXB4IDIycHggNHB4IHJnYmEoMCwgMCwgMCwgMC4xMil9Lm1hdC1lbGV2YXRpb24tejEzW19uZ2NvbnRlbnQtJUNPTVAlXXtib3gtc2hhZG93OjBweCA3cHggOHB4IC00cHggcmdiYSgwLCAwLCAwLCAwLjIpLDBweCAxM3B4IDE5cHggMnB4IHJnYmEoMCwgMCwgMCwgMC4xNCksMHB4IDVweCAyNHB4IDRweCByZ2JhKDAsIDAsIDAsIDAuMTIpfS5tYXQtZWxldmF0aW9uLXoxNFtfbmdjb250ZW50LSVDT01QJV17Ym94LXNoYWRvdzowcHggN3B4IDlweCAtNHB4IHJnYmEoMCwgMCwgMCwgMC4yKSwwcHggMTRweCAyMXB4IDJweCByZ2JhKDAsIDAsIDAsIDAuMTQpLDBweCA1cHggMjZweCA0cHggcmdiYSgwLCAwLCAwLCAwLjEyKX0ubWF0LWVsZXZhdGlvbi16MTVbX25nY29udGVudC0lQ09NUCVde2JveC1zaGFkb3c6MHB4IDhweCA5cHggLTVweCByZ2JhKDAsIDAsIDAsIDAuMiksMHB4IDE1cHggMjJweCAycHggcmdiYSgwLCAwLCAwLCAwLjE0KSwwcHggNnB4IDI4cHggNXB4IHJnYmEoMCwgMCwgMCwgMC4xMil9Lm1hdC1lbGV2YXRpb24tejE2W19uZ2NvbnRlbnQtJUNPTVAlXXtib3gtc2hhZG93OjBweCA4cHggMTBweCAtNXB4IHJnYmEoMCwgMCwgMCwgMC4yKSwwcHggMTZweCAyNHB4IDJweCByZ2JhKDAsIDAsIDAsIDAuMTQpLDBweCA2cHggMzBweCA1cHggcmdiYSgwLCAwLCAwLCAwLjEyKX0ubWF0LWVsZXZhdGlvbi16MTdbX25nY29udGVudC0lQ09NUCVde2JveC1zaGFkb3c6MHB4IDhweCAxMXB4IC01cHggcmdiYSgwLCAwLCAwLCAwLjIpLDBweCAxN3B4IDI2cHggMnB4IHJnYmEoMCwgMCwgMCwgMC4xNCksMHB4IDZweCAzMnB4IDVweCByZ2JhKDAsIDAsIDAsIDAuMTIpfS5tYXQtZWxldmF0aW9uLXoxOFtfbmdjb250ZW50LSVDT01QJV17Ym94LXNoYWRvdzowcHggOXB4IDExcHggLTVweCByZ2JhKDAsIDAsIDAsIDAuMiksMHB4IDE4cHggMjhweCAycHggcmdiYSgwLCAwLCAwLCAwLjE0KSwwcHggN3B4IDM0cHggNnB4IHJnYmEoMCwgMCwgMCwgMC4xMil9Lm1hdC1lbGV2YXRpb24tejE5W19uZ2NvbnRlbnQtJUNPTVAlXXtib3gtc2hhZG93OjBweCA5cHggMTJweCAtNnB4IHJnYmEoMCwgMCwgMCwgMC4yKSwwcHggMTlweCAyOXB4IDJweCByZ2JhKDAsIDAsIDAsIDAuMTQpLDBweCA3cHggMzZweCA2cHggcmdiYSgwLCAwLCAwLCAwLjEyKX0ubWF0LWVsZXZhdGlvbi16MjBbX25nY29udGVudC0lQ09NUCVde2JveC1zaGFkb3c6MHB4IDEwcHggMTNweCAtNnB4IHJnYmEoMCwgMCwgMCwgMC4yKSwwcHggMjBweCAzMXB4IDNweCByZ2JhKDAsIDAsIDAsIDAuMTQpLDBweCA4cHggMzhweCA3cHggcmdiYSgwLCAwLCAwLCAwLjEyKX0ubWF0LWVsZXZhdGlvbi16MjFbX25nY29udGVudC0lQ09NUCVde2JveC1zaGFkb3c6MHB4IDEwcHggMTNweCAtNnB4IHJnYmEoMCwgMCwgMCwgMC4yKSwwcHggMjFweCAzM3B4IDNweCByZ2JhKDAsIDAsIDAsIDAuMTQpLDBweCA4cHggNDBweCA3cHggcmdiYSgwLCAwLCAwLCAwLjEyKX0ubWF0LWVsZXZhdGlvbi16MjJbX25nY29udGVudC0lQ09NUCVde2JveC1zaGFkb3c6MHB4IDEwcHggMTRweCAtNnB4IHJnYmEoMCwgMCwgMCwgMC4yKSwwcHggMjJweCAzNXB4IDNweCByZ2JhKDAsIDAsIDAsIDAuMTQpLDBweCA4cHggNDJweCA3cHggcmdiYSgwLCAwLCAwLCAwLjEyKX0ubWF0LWVsZXZhdGlvbi16MjNbX25nY29udGVudC0lQ09NUCVde2JveC1zaGFkb3c6MHB4IDExcHggMTRweCAtN3B4IHJnYmEoMCwgMCwgMCwgMC4yKSwwcHggMjNweCAzNnB4IDNweCByZ2JhKDAsIDAsIDAsIDAuMTQpLDBweCA5cHggNDRweCA4cHggcmdiYSgwLCAwLCAwLCAwLjEyKX0ubWF0LWVsZXZhdGlvbi16MjRbX25nY29udGVudC0lQ09NUCVde2JveC1zaGFkb3c6MHB4IDExcHggMTVweCAtN3B4IHJnYmEoMCwgMCwgMCwgMC4yKSwwcHggMjRweCAzOHB4IDNweCByZ2JhKDAsIDAsIDAsIDAuMTQpLDBweCA5cHggNDZweCA4cHggcmdiYSgwLCAwLCAwLCAwLjEyKX0ubWF0LXRoZW1lLWxvYWRlZC1tYXJrZXJbX25nY29udGVudC0lQ09NUCVde2Rpc3BsYXk6bm9uZX0ubWF0LWF1dG9jb21wbGV0ZS1wYW5lbFtfbmdjb250ZW50LSVDT01QJV17YmFja2dyb3VuZDojZmZmO2NvbG9yOiMyMTIxMjF9Lm1hdC1hdXRvY29tcGxldGUtcGFuZWxbX25nY29udGVudC0lQ09NUCVdOm5vdChbY2xhc3MqPW1hdC1lbGV2YXRpb24tel0pe2JveC1zaGFkb3c6MHB4IDJweCA0cHggLTFweCByZ2JhKDAsIDAsIDAsIDAuMiksMHB4IDRweCA1cHggMHB4IHJnYmEoMCwgMCwgMCwgMC4xNCksMHB4IDFweCAxMHB4IDBweCByZ2JhKDAsIDAsIDAsIDAuMTIpfS5tYXQtYXV0b2NvbXBsZXRlLXBhbmVsW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtb3B0aW9uLm1hdC1zZWxlY3RlZFtfbmdjb250ZW50LSVDT01QJV06bm90KC5tYXQtYWN0aXZlKTpub3QoOmhvdmVyKXtiYWNrZ3JvdW5kOiNmZmZ9Lm1hdC1hdXRvY29tcGxldGUtcGFuZWxbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1vcHRpb24ubWF0LXNlbGVjdGVkW19uZ2NvbnRlbnQtJUNPTVAlXTpub3QoLm1hdC1hY3RpdmUpOm5vdCg6aG92ZXIpOm5vdCgubWF0LW9wdGlvbi1kaXNhYmxlZCl7Y29sb3I6IzIxMjEyMX0ubWF0LWJhZGdlLWNvbnRlbnRbX25nY29udGVudC0lQ09NUCVde2NvbG9yOiNmZmY7YmFja2dyb3VuZDojZjU3YzAwfS5jZGstaGlnaC1jb250cmFzdC1hY3RpdmVbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1iYWRnZS1jb250ZW50W19uZ2NvbnRlbnQtJUNPTVAlXXtvdXRsaW5lOnNvbGlkIDFweDtib3JkZXItcmFkaXVzOjB9Lm1hdC1iYWRnZS1hY2NlbnRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1iYWRnZS1jb250ZW50W19uZ2NvbnRlbnQtJUNPTVAlXXtiYWNrZ3JvdW5kOiNmZjk4MDA7Y29sb3I6I2ZmZn0ubWF0LWJhZGdlLXdhcm5bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1iYWRnZS1jb250ZW50W19uZ2NvbnRlbnQtJUNPTVAlXXtjb2xvcjojZmZmO2JhY2tncm91bmQ6I2Y0NDMzNn0ubWF0LWJhZGdlW19uZ2NvbnRlbnQtJUNPTVAlXXtwb3NpdGlvbjpyZWxhdGl2ZX0ubWF0LWJhZGdlLWhpZGRlbltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWJhZGdlLWNvbnRlbnRbX25nY29udGVudC0lQ09NUCVde2Rpc3BsYXk6bm9uZX0ubWF0LWJhZGdlLWRpc2FibGVkW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtYmFkZ2UtY29udGVudFtfbmdjb250ZW50LSVDT01QJV17YmFja2dyb3VuZDojYjliOWI5O2NvbG9yOiM3NTc1NzV9Lm1hdC1iYWRnZS1jb250ZW50W19uZ2NvbnRlbnQtJUNPTVAlXXtwb3NpdGlvbjphYnNvbHV0ZTt0ZXh0LWFsaWduOmNlbnRlcjtkaXNwbGF5OmlubGluZS1ibG9jaztib3JkZXItcmFkaXVzOjUwJTt0cmFuc2l0aW9uOnRyYW5zZm9ybSAyMDBtcyBlYXNlLWluLW91dDt0cmFuc2Zvcm06c2NhbGUoMC42KTtvdmVyZmxvdzpoaWRkZW47d2hpdGUtc3BhY2U6bm93cmFwO3RleHQtb3ZlcmZsb3c6ZWxsaXBzaXM7cG9pbnRlci1ldmVudHM6bm9uZX0ubmctYW5pbWF0ZS1kaXNhYmxlZFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWJhZGdlLWNvbnRlbnRbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWJhZGdlLWNvbnRlbnQuX21hdC1hbmltYXRpb24tbm9vcGFibGVbX25nY29udGVudC0lQ09NUCVde3RyYW5zaXRpb246bm9uZX0ubWF0LWJhZGdlLWNvbnRlbnQubWF0LWJhZGdlLWFjdGl2ZVtfbmdjb250ZW50LSVDT01QJV17dHJhbnNmb3JtOm5vbmV9Lm1hdC1iYWRnZS1zbWFsbFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWJhZGdlLWNvbnRlbnRbX25nY29udGVudC0lQ09NUCVde3dpZHRoOjE2cHg7aGVpZ2h0OjE2cHg7bGluZS1oZWlnaHQ6MTZweH0ubWF0LWJhZGdlLXNtYWxsLm1hdC1iYWRnZS1hYm92ZVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWJhZGdlLWNvbnRlbnRbX25nY29udGVudC0lQ09NUCVde3RvcDotOHB4fS5tYXQtYmFkZ2Utc21hbGwubWF0LWJhZGdlLWJlbG93W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtYmFkZ2UtY29udGVudFtfbmdjb250ZW50LSVDT01QJV17Ym90dG9tOi04cHh9Lm1hdC1iYWRnZS1zbWFsbC5tYXQtYmFkZ2UtYmVmb3JlW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtYmFkZ2UtY29udGVudFtfbmdjb250ZW50LSVDT01QJV17bGVmdDotMTZweH1bZGlyPXJ0bF1bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1iYWRnZS1zbWFsbC5tYXQtYmFkZ2UtYmVmb3JlW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtYmFkZ2UtY29udGVudFtfbmdjb250ZW50LSVDT01QJV17bGVmdDphdXRvO3JpZ2h0Oi0xNnB4fS5tYXQtYmFkZ2Utc21hbGwubWF0LWJhZGdlLWFmdGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtYmFkZ2UtY29udGVudFtfbmdjb250ZW50LSVDT01QJV17cmlnaHQ6LTE2cHh9W2Rpcj1ydGxdW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtYmFkZ2Utc21hbGwubWF0LWJhZGdlLWFmdGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtYmFkZ2UtY29udGVudFtfbmdjb250ZW50LSVDT01QJV17cmlnaHQ6YXV0bztsZWZ0Oi0xNnB4fS5tYXQtYmFkZ2Utc21hbGwubWF0LWJhZGdlLW92ZXJsYXAubWF0LWJhZGdlLWJlZm9yZVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWJhZGdlLWNvbnRlbnRbX25nY29udGVudC0lQ09NUCVde2xlZnQ6LThweH1bZGlyPXJ0bF1bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1iYWRnZS1zbWFsbC5tYXQtYmFkZ2Utb3ZlcmxhcC5tYXQtYmFkZ2UtYmVmb3JlW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtYmFkZ2UtY29udGVudFtfbmdjb250ZW50LSVDT01QJV17bGVmdDphdXRvO3JpZ2h0Oi04cHh9Lm1hdC1iYWRnZS1zbWFsbC5tYXQtYmFkZ2Utb3ZlcmxhcC5tYXQtYmFkZ2UtYWZ0ZXJbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1iYWRnZS1jb250ZW50W19uZ2NvbnRlbnQtJUNPTVAlXXtyaWdodDotOHB4fVtkaXI9cnRsXVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWJhZGdlLXNtYWxsLm1hdC1iYWRnZS1vdmVybGFwLm1hdC1iYWRnZS1hZnRlcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWJhZGdlLWNvbnRlbnRbX25nY29udGVudC0lQ09NUCVde3JpZ2h0OmF1dG87bGVmdDotOHB4fS5tYXQtYmFkZ2UtbWVkaXVtW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtYmFkZ2UtY29udGVudFtfbmdjb250ZW50LSVDT01QJV17d2lkdGg6MjJweDtoZWlnaHQ6MjJweDtsaW5lLWhlaWdodDoyMnB4fS5tYXQtYmFkZ2UtbWVkaXVtLm1hdC1iYWRnZS1hYm92ZVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWJhZGdlLWNvbnRlbnRbX25nY29udGVudC0lQ09NUCVde3RvcDotMTFweH0ubWF0LWJhZGdlLW1lZGl1bS5tYXQtYmFkZ2UtYmVsb3dbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1iYWRnZS1jb250ZW50W19uZ2NvbnRlbnQtJUNPTVAlXXtib3R0b206LTExcHh9Lm1hdC1iYWRnZS1tZWRpdW0ubWF0LWJhZGdlLWJlZm9yZVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWJhZGdlLWNvbnRlbnRbX25nY29udGVudC0lQ09NUCVde2xlZnQ6LTIycHh9W2Rpcj1ydGxdW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtYmFkZ2UtbWVkaXVtLm1hdC1iYWRnZS1iZWZvcmVbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1iYWRnZS1jb250ZW50W19uZ2NvbnRlbnQtJUNPTVAlXXtsZWZ0OmF1dG87cmlnaHQ6LTIycHh9Lm1hdC1iYWRnZS1tZWRpdW0ubWF0LWJhZGdlLWFmdGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtYmFkZ2UtY29udGVudFtfbmdjb250ZW50LSVDT01QJV17cmlnaHQ6LTIycHh9W2Rpcj1ydGxdW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtYmFkZ2UtbWVkaXVtLm1hdC1iYWRnZS1hZnRlcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWJhZGdlLWNvbnRlbnRbX25nY29udGVudC0lQ09NUCVde3JpZ2h0OmF1dG87bGVmdDotMjJweH0ubWF0LWJhZGdlLW1lZGl1bS5tYXQtYmFkZ2Utb3ZlcmxhcC5tYXQtYmFkZ2UtYmVmb3JlW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtYmFkZ2UtY29udGVudFtfbmdjb250ZW50LSVDT01QJV17bGVmdDotMTFweH1bZGlyPXJ0bF1bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1iYWRnZS1tZWRpdW0ubWF0LWJhZGdlLW92ZXJsYXAubWF0LWJhZGdlLWJlZm9yZVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWJhZGdlLWNvbnRlbnRbX25nY29udGVudC0lQ09NUCVde2xlZnQ6YXV0bztyaWdodDotMTFweH0ubWF0LWJhZGdlLW1lZGl1bS5tYXQtYmFkZ2Utb3ZlcmxhcC5tYXQtYmFkZ2UtYWZ0ZXJbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1iYWRnZS1jb250ZW50W19uZ2NvbnRlbnQtJUNPTVAlXXtyaWdodDotMTFweH1bZGlyPXJ0bF1bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1iYWRnZS1tZWRpdW0ubWF0LWJhZGdlLW92ZXJsYXAubWF0LWJhZGdlLWFmdGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtYmFkZ2UtY29udGVudFtfbmdjb250ZW50LSVDT01QJV17cmlnaHQ6YXV0bztsZWZ0Oi0xMXB4fS5tYXQtYmFkZ2UtbGFyZ2VbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1iYWRnZS1jb250ZW50W19uZ2NvbnRlbnQtJUNPTVAlXXt3aWR0aDoyOHB4O2hlaWdodDoyOHB4O2xpbmUtaGVpZ2h0OjI4cHh9Lm1hdC1iYWRnZS1sYXJnZS5tYXQtYmFkZ2UtYWJvdmVbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1iYWRnZS1jb250ZW50W19uZ2NvbnRlbnQtJUNPTVAlXXt0b3A6LTE0cHh9Lm1hdC1iYWRnZS1sYXJnZS5tYXQtYmFkZ2UtYmVsb3dbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1iYWRnZS1jb250ZW50W19uZ2NvbnRlbnQtJUNPTVAlXXtib3R0b206LTE0cHh9Lm1hdC1iYWRnZS1sYXJnZS5tYXQtYmFkZ2UtYmVmb3JlW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtYmFkZ2UtY29udGVudFtfbmdjb250ZW50LSVDT01QJV17bGVmdDotMjhweH1bZGlyPXJ0bF1bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1iYWRnZS1sYXJnZS5tYXQtYmFkZ2UtYmVmb3JlW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtYmFkZ2UtY29udGVudFtfbmdjb250ZW50LSVDT01QJV17bGVmdDphdXRvO3JpZ2h0Oi0yOHB4fS5tYXQtYmFkZ2UtbGFyZ2UubWF0LWJhZGdlLWFmdGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtYmFkZ2UtY29udGVudFtfbmdjb250ZW50LSVDT01QJV17cmlnaHQ6LTI4cHh9W2Rpcj1ydGxdW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtYmFkZ2UtbGFyZ2UubWF0LWJhZGdlLWFmdGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtYmFkZ2UtY29udGVudFtfbmdjb250ZW50LSVDT01QJV17cmlnaHQ6YXV0bztsZWZ0Oi0yOHB4fS5tYXQtYmFkZ2UtbGFyZ2UubWF0LWJhZGdlLW92ZXJsYXAubWF0LWJhZGdlLWJlZm9yZVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWJhZGdlLWNvbnRlbnRbX25nY29udGVudC0lQ09NUCVde2xlZnQ6LTE0cHh9W2Rpcj1ydGxdW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtYmFkZ2UtbGFyZ2UubWF0LWJhZGdlLW92ZXJsYXAubWF0LWJhZGdlLWJlZm9yZVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWJhZGdlLWNvbnRlbnRbX25nY29udGVudC0lQ09NUCVde2xlZnQ6YXV0bztyaWdodDotMTRweH0ubWF0LWJhZGdlLWxhcmdlLm1hdC1iYWRnZS1vdmVybGFwLm1hdC1iYWRnZS1hZnRlcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWJhZGdlLWNvbnRlbnRbX25nY29udGVudC0lQ09NUCVde3JpZ2h0Oi0xNHB4fVtkaXI9cnRsXVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWJhZGdlLWxhcmdlLm1hdC1iYWRnZS1vdmVybGFwLm1hdC1iYWRnZS1hZnRlcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWJhZGdlLWNvbnRlbnRbX25nY29udGVudC0lQ09NUCVde3JpZ2h0OmF1dG87bGVmdDotMTRweH0ubWF0LWJvdHRvbS1zaGVldC1jb250YWluZXJbX25nY29udGVudC0lQ09NUCVde2JveC1zaGFkb3c6MHB4IDhweCAxMHB4IC01cHggcmdiYSgwLCAwLCAwLCAwLjIpLDBweCAxNnB4IDI0cHggMnB4IHJnYmEoMCwgMCwgMCwgMC4xNCksMHB4IDZweCAzMHB4IDVweCByZ2JhKDAsIDAsIDAsIDAuMTIpO2JhY2tncm91bmQ6I2ZmZjtjb2xvcjojMjEyMTIxfS5tYXQtYnV0dG9uW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1pY29uLWJ1dHRvbltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtc3Ryb2tlZC1idXR0b25bX25nY29udGVudC0lQ09NUCVde2NvbG9yOmluaGVyaXQ7YmFja2dyb3VuZDp0cmFuc3BhcmVudH0ubWF0LWJ1dHRvbi5tYXQtcHJpbWFyeVtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtaWNvbi1idXR0b24ubWF0LXByaW1hcnlbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXN0cm9rZWQtYnV0dG9uLm1hdC1wcmltYXJ5W19uZ2NvbnRlbnQtJUNPTVAlXXtjb2xvcjojZjU3YzAwfS5tYXQtYnV0dG9uLm1hdC1hY2NlbnRbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWljb24tYnV0dG9uLm1hdC1hY2NlbnRbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXN0cm9rZWQtYnV0dG9uLm1hdC1hY2NlbnRbX25nY29udGVudC0lQ09NUCVde2NvbG9yOiNmZjk4MDB9Lm1hdC1idXR0b24ubWF0LXdhcm5bX25nY29udGVudC0lQ09NUCVdLCAubWF0LWljb24tYnV0dG9uLm1hdC13YXJuW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1zdHJva2VkLWJ1dHRvbi5tYXQtd2Fybltfbmdjb250ZW50LSVDT01QJV17Y29sb3I6I2Y0NDMzNn0ubWF0LWJ1dHRvbi5tYXQtcHJpbWFyeS5tYXQtYnV0dG9uLWRpc2FibGVkW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1idXR0b24ubWF0LWFjY2VudC5tYXQtYnV0dG9uLWRpc2FibGVkW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1idXR0b24ubWF0LXdhcm4ubWF0LWJ1dHRvbi1kaXNhYmxlZFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtYnV0dG9uLm1hdC1idXR0b24tZGlzYWJsZWQubWF0LWJ1dHRvbi1kaXNhYmxlZFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtaWNvbi1idXR0b24ubWF0LXByaW1hcnkubWF0LWJ1dHRvbi1kaXNhYmxlZFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtaWNvbi1idXR0b24ubWF0LWFjY2VudC5tYXQtYnV0dG9uLWRpc2FibGVkW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1pY29uLWJ1dHRvbi5tYXQtd2Fybi5tYXQtYnV0dG9uLWRpc2FibGVkW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1pY29uLWJ1dHRvbi5tYXQtYnV0dG9uLWRpc2FibGVkLm1hdC1idXR0b24tZGlzYWJsZWRbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXN0cm9rZWQtYnV0dG9uLm1hdC1wcmltYXJ5Lm1hdC1idXR0b24tZGlzYWJsZWRbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXN0cm9rZWQtYnV0dG9uLm1hdC1hY2NlbnQubWF0LWJ1dHRvbi1kaXNhYmxlZFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtc3Ryb2tlZC1idXR0b24ubWF0LXdhcm4ubWF0LWJ1dHRvbi1kaXNhYmxlZFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtc3Ryb2tlZC1idXR0b24ubWF0LWJ1dHRvbi1kaXNhYmxlZC5tYXQtYnV0dG9uLWRpc2FibGVkW19uZ2NvbnRlbnQtJUNPTVAlXXtjb2xvcjpyZ2JhKDAsMCwwLC4yNil9Lm1hdC1idXR0b24ubWF0LXByaW1hcnlbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1idXR0b24tZm9jdXMtb3ZlcmxheVtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtaWNvbi1idXR0b24ubWF0LXByaW1hcnlbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1idXR0b24tZm9jdXMtb3ZlcmxheVtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtc3Ryb2tlZC1idXR0b24ubWF0LXByaW1hcnlbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1idXR0b24tZm9jdXMtb3ZlcmxheVtfbmdjb250ZW50LSVDT01QJV17YmFja2dyb3VuZC1jb2xvcjojZjU3YzAwfS5tYXQtYnV0dG9uLm1hdC1hY2NlbnRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1idXR0b24tZm9jdXMtb3ZlcmxheVtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtaWNvbi1idXR0b24ubWF0LWFjY2VudFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWJ1dHRvbi1mb2N1cy1vdmVybGF5W19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1zdHJva2VkLWJ1dHRvbi5tYXQtYWNjZW50W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtYnV0dG9uLWZvY3VzLW92ZXJsYXlbX25nY29udGVudC0lQ09NUCVde2JhY2tncm91bmQtY29sb3I6I2ZmOTgwMH0ubWF0LWJ1dHRvbi5tYXQtd2Fybltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWJ1dHRvbi1mb2N1cy1vdmVybGF5W19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1pY29uLWJ1dHRvbi5tYXQtd2Fybltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWJ1dHRvbi1mb2N1cy1vdmVybGF5W19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1zdHJva2VkLWJ1dHRvbi5tYXQtd2Fybltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWJ1dHRvbi1mb2N1cy1vdmVybGF5W19uZ2NvbnRlbnQtJUNPTVAlXXtiYWNrZ3JvdW5kLWNvbG9yOiNmNDQzMzZ9Lm1hdC1idXR0b24ubWF0LWJ1dHRvbi1kaXNhYmxlZFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWJ1dHRvbi1mb2N1cy1vdmVybGF5W19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1pY29uLWJ1dHRvbi5tYXQtYnV0dG9uLWRpc2FibGVkW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtYnV0dG9uLWZvY3VzLW92ZXJsYXlbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXN0cm9rZWQtYnV0dG9uLm1hdC1idXR0b24tZGlzYWJsZWRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1idXR0b24tZm9jdXMtb3ZlcmxheVtfbmdjb250ZW50LSVDT01QJV17YmFja2dyb3VuZC1jb2xvcjp0cmFuc3BhcmVudH0ubWF0LWJ1dHRvbltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXJpcHBsZS1lbGVtZW50W19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1pY29uLWJ1dHRvbltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXJpcHBsZS1lbGVtZW50W19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1zdHJva2VkLWJ1dHRvbltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXJpcHBsZS1lbGVtZW50W19uZ2NvbnRlbnQtJUNPTVAlXXtvcGFjaXR5Oi4xO2JhY2tncm91bmQtY29sb3I6Y3VycmVudENvbG9yfS5tYXQtYnV0dG9uLWZvY3VzLW92ZXJsYXlbX25nY29udGVudC0lQ09NUCVde2JhY2tncm91bmQ6IzAwMH0ubWF0LXN0cm9rZWQtYnV0dG9uW19uZ2NvbnRlbnQtJUNPTVAlXTpub3QoLm1hdC1idXR0b24tZGlzYWJsZWQpe2JvcmRlci1jb2xvcjpyZ2JhKDAsMCwwLC4xMil9Lm1hdC1mbGF0LWJ1dHRvbltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtcmFpc2VkLWJ1dHRvbltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtZmFiW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1taW5pLWZhYltfbmdjb250ZW50LSVDT01QJV17Y29sb3I6IzIxMjEyMTtiYWNrZ3JvdW5kLWNvbG9yOiNmZmZ9Lm1hdC1mbGF0LWJ1dHRvbi5tYXQtcHJpbWFyeVtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtcmFpc2VkLWJ1dHRvbi5tYXQtcHJpbWFyeVtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtZmFiLm1hdC1wcmltYXJ5W19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1taW5pLWZhYi5tYXQtcHJpbWFyeVtfbmdjb250ZW50LSVDT01QJV17Y29sb3I6I2ZmZn0ubWF0LWZsYXQtYnV0dG9uLm1hdC1hY2NlbnRbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXJhaXNlZC1idXR0b24ubWF0LWFjY2VudFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtZmFiLm1hdC1hY2NlbnRbX25nY29udGVudC0lQ09NUCVdLCAubWF0LW1pbmktZmFiLm1hdC1hY2NlbnRbX25nY29udGVudC0lQ09NUCVde2NvbG9yOiNmZmZ9Lm1hdC1mbGF0LWJ1dHRvbi5tYXQtd2Fybltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtcmFpc2VkLWJ1dHRvbi5tYXQtd2Fybltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtZmFiLm1hdC13YXJuW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1taW5pLWZhYi5tYXQtd2Fybltfbmdjb250ZW50LSVDT01QJV17Y29sb3I6I2ZmZn0ubWF0LWZsYXQtYnV0dG9uLm1hdC1wcmltYXJ5Lm1hdC1idXR0b24tZGlzYWJsZWRbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWZsYXQtYnV0dG9uLm1hdC1hY2NlbnQubWF0LWJ1dHRvbi1kaXNhYmxlZFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtZmxhdC1idXR0b24ubWF0LXdhcm4ubWF0LWJ1dHRvbi1kaXNhYmxlZFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtZmxhdC1idXR0b24ubWF0LWJ1dHRvbi1kaXNhYmxlZC5tYXQtYnV0dG9uLWRpc2FibGVkW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1yYWlzZWQtYnV0dG9uLm1hdC1wcmltYXJ5Lm1hdC1idXR0b24tZGlzYWJsZWRbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXJhaXNlZC1idXR0b24ubWF0LWFjY2VudC5tYXQtYnV0dG9uLWRpc2FibGVkW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1yYWlzZWQtYnV0dG9uLm1hdC13YXJuLm1hdC1idXR0b24tZGlzYWJsZWRbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXJhaXNlZC1idXR0b24ubWF0LWJ1dHRvbi1kaXNhYmxlZC5tYXQtYnV0dG9uLWRpc2FibGVkW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1mYWIubWF0LXByaW1hcnkubWF0LWJ1dHRvbi1kaXNhYmxlZFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtZmFiLm1hdC1hY2NlbnQubWF0LWJ1dHRvbi1kaXNhYmxlZFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtZmFiLm1hdC13YXJuLm1hdC1idXR0b24tZGlzYWJsZWRbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWZhYi5tYXQtYnV0dG9uLWRpc2FibGVkLm1hdC1idXR0b24tZGlzYWJsZWRbX25nY29udGVudC0lQ09NUCVdLCAubWF0LW1pbmktZmFiLm1hdC1wcmltYXJ5Lm1hdC1idXR0b24tZGlzYWJsZWRbX25nY29udGVudC0lQ09NUCVdLCAubWF0LW1pbmktZmFiLm1hdC1hY2NlbnQubWF0LWJ1dHRvbi1kaXNhYmxlZFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtbWluaS1mYWIubWF0LXdhcm4ubWF0LWJ1dHRvbi1kaXNhYmxlZFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtbWluaS1mYWIubWF0LWJ1dHRvbi1kaXNhYmxlZC5tYXQtYnV0dG9uLWRpc2FibGVkW19uZ2NvbnRlbnQtJUNPTVAlXXtjb2xvcjpyZ2JhKDAsMCwwLC4yNil9Lm1hdC1mbGF0LWJ1dHRvbi5tYXQtcHJpbWFyeVtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtcmFpc2VkLWJ1dHRvbi5tYXQtcHJpbWFyeVtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtZmFiLm1hdC1wcmltYXJ5W19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1taW5pLWZhYi5tYXQtcHJpbWFyeVtfbmdjb250ZW50LSVDT01QJV17YmFja2dyb3VuZC1jb2xvcjojZjU3YzAwfS5tYXQtZmxhdC1idXR0b24ubWF0LWFjY2VudFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtcmFpc2VkLWJ1dHRvbi5tYXQtYWNjZW50W19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1mYWIubWF0LWFjY2VudFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtbWluaS1mYWIubWF0LWFjY2VudFtfbmdjb250ZW50LSVDT01QJV17YmFja2dyb3VuZC1jb2xvcjojZmY5ODAwfS5tYXQtZmxhdC1idXR0b24ubWF0LXdhcm5bX25nY29udGVudC0lQ09NUCVdLCAubWF0LXJhaXNlZC1idXR0b24ubWF0LXdhcm5bX25nY29udGVudC0lQ09NUCVdLCAubWF0LWZhYi5tYXQtd2Fybltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtbWluaS1mYWIubWF0LXdhcm5bX25nY29udGVudC0lQ09NUCVde2JhY2tncm91bmQtY29sb3I6I2Y0NDMzNn0ubWF0LWZsYXQtYnV0dG9uLm1hdC1wcmltYXJ5Lm1hdC1idXR0b24tZGlzYWJsZWRbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWZsYXQtYnV0dG9uLm1hdC1hY2NlbnQubWF0LWJ1dHRvbi1kaXNhYmxlZFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtZmxhdC1idXR0b24ubWF0LXdhcm4ubWF0LWJ1dHRvbi1kaXNhYmxlZFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtZmxhdC1idXR0b24ubWF0LWJ1dHRvbi1kaXNhYmxlZC5tYXQtYnV0dG9uLWRpc2FibGVkW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1yYWlzZWQtYnV0dG9uLm1hdC1wcmltYXJ5Lm1hdC1idXR0b24tZGlzYWJsZWRbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXJhaXNlZC1idXR0b24ubWF0LWFjY2VudC5tYXQtYnV0dG9uLWRpc2FibGVkW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1yYWlzZWQtYnV0dG9uLm1hdC13YXJuLm1hdC1idXR0b24tZGlzYWJsZWRbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXJhaXNlZC1idXR0b24ubWF0LWJ1dHRvbi1kaXNhYmxlZC5tYXQtYnV0dG9uLWRpc2FibGVkW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1mYWIubWF0LXByaW1hcnkubWF0LWJ1dHRvbi1kaXNhYmxlZFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtZmFiLm1hdC1hY2NlbnQubWF0LWJ1dHRvbi1kaXNhYmxlZFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtZmFiLm1hdC13YXJuLm1hdC1idXR0b24tZGlzYWJsZWRbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWZhYi5tYXQtYnV0dG9uLWRpc2FibGVkLm1hdC1idXR0b24tZGlzYWJsZWRbX25nY29udGVudC0lQ09NUCVdLCAubWF0LW1pbmktZmFiLm1hdC1wcmltYXJ5Lm1hdC1idXR0b24tZGlzYWJsZWRbX25nY29udGVudC0lQ09NUCVdLCAubWF0LW1pbmktZmFiLm1hdC1hY2NlbnQubWF0LWJ1dHRvbi1kaXNhYmxlZFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtbWluaS1mYWIubWF0LXdhcm4ubWF0LWJ1dHRvbi1kaXNhYmxlZFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtbWluaS1mYWIubWF0LWJ1dHRvbi1kaXNhYmxlZC5tYXQtYnV0dG9uLWRpc2FibGVkW19uZ2NvbnRlbnQtJUNPTVAlXXtiYWNrZ3JvdW5kLWNvbG9yOnJnYmEoMCwwLDAsLjEyKX0ubWF0LWZsYXQtYnV0dG9uLm1hdC1wcmltYXJ5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtcmlwcGxlLWVsZW1lbnRbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXJhaXNlZC1idXR0b24ubWF0LXByaW1hcnlbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1yaXBwbGUtZWxlbWVudFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtZmFiLm1hdC1wcmltYXJ5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtcmlwcGxlLWVsZW1lbnRbX25nY29udGVudC0lQ09NUCVdLCAubWF0LW1pbmktZmFiLm1hdC1wcmltYXJ5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtcmlwcGxlLWVsZW1lbnRbX25nY29udGVudC0lQ09NUCVde2JhY2tncm91bmQtY29sb3I6cmdiYSgyNTUsMjU1LDI1NSwuMSl9Lm1hdC1mbGF0LWJ1dHRvbi5tYXQtYWNjZW50W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtcmlwcGxlLWVsZW1lbnRbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXJhaXNlZC1idXR0b24ubWF0LWFjY2VudFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXJpcHBsZS1lbGVtZW50W19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1mYWIubWF0LWFjY2VudFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXJpcHBsZS1lbGVtZW50W19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1taW5pLWZhYi5tYXQtYWNjZW50W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtcmlwcGxlLWVsZW1lbnRbX25nY29udGVudC0lQ09NUCVde2JhY2tncm91bmQtY29sb3I6cmdiYSgyNTUsMjU1LDI1NSwuMSl9Lm1hdC1mbGF0LWJ1dHRvbi5tYXQtd2Fybltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXJpcHBsZS1lbGVtZW50W19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1yYWlzZWQtYnV0dG9uLm1hdC13YXJuW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtcmlwcGxlLWVsZW1lbnRbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWZhYi5tYXQtd2Fybltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXJpcHBsZS1lbGVtZW50W19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1taW5pLWZhYi5tYXQtd2Fybltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXJpcHBsZS1lbGVtZW50W19uZ2NvbnRlbnQtJUNPTVAlXXtiYWNrZ3JvdW5kLWNvbG9yOnJnYmEoMjU1LDI1NSwyNTUsLjEpfS5tYXQtc3Ryb2tlZC1idXR0b25bX25nY29udGVudC0lQ09NUCVdOm5vdChbY2xhc3MqPW1hdC1lbGV2YXRpb24tel0pLCAubWF0LWZsYXQtYnV0dG9uW19uZ2NvbnRlbnQtJUNPTVAlXTpub3QoW2NsYXNzKj1tYXQtZWxldmF0aW9uLXpdKXtib3gtc2hhZG93OjBweCAwcHggMHB4IDBweCByZ2JhKDAsIDAsIDAsIDAuMiksMHB4IDBweCAwcHggMHB4IHJnYmEoMCwgMCwgMCwgMC4xNCksMHB4IDBweCAwcHggMHB4IHJnYmEoMCwgMCwgMCwgMC4xMil9Lm1hdC1yYWlzZWQtYnV0dG9uW19uZ2NvbnRlbnQtJUNPTVAlXTpub3QoW2NsYXNzKj1tYXQtZWxldmF0aW9uLXpdKXtib3gtc2hhZG93OjBweCAzcHggMXB4IC0ycHggcmdiYSgwLCAwLCAwLCAwLjIpLDBweCAycHggMnB4IDBweCByZ2JhKDAsIDAsIDAsIDAuMTQpLDBweCAxcHggNXB4IDBweCByZ2JhKDAsIDAsIDAsIDAuMTIpfS5tYXQtcmFpc2VkLWJ1dHRvbltfbmdjb250ZW50LSVDT01QJV06bm90KC5tYXQtYnV0dG9uLWRpc2FibGVkKTphY3RpdmU6bm90KFtjbGFzcyo9bWF0LWVsZXZhdGlvbi16XSl7Ym94LXNoYWRvdzowcHggNXB4IDVweCAtM3B4IHJnYmEoMCwgMCwgMCwgMC4yKSwwcHggOHB4IDEwcHggMXB4IHJnYmEoMCwgMCwgMCwgMC4xNCksMHB4IDNweCAxNHB4IDJweCByZ2JhKDAsIDAsIDAsIDAuMTIpfS5tYXQtcmFpc2VkLWJ1dHRvbi5tYXQtYnV0dG9uLWRpc2FibGVkW19uZ2NvbnRlbnQtJUNPTVAlXTpub3QoW2NsYXNzKj1tYXQtZWxldmF0aW9uLXpdKXtib3gtc2hhZG93OjBweCAwcHggMHB4IDBweCByZ2JhKDAsIDAsIDAsIDAuMiksMHB4IDBweCAwcHggMHB4IHJnYmEoMCwgMCwgMCwgMC4xNCksMHB4IDBweCAwcHggMHB4IHJnYmEoMCwgMCwgMCwgMC4xMil9Lm1hdC1mYWJbX25nY29udGVudC0lQ09NUCVdOm5vdChbY2xhc3MqPW1hdC1lbGV2YXRpb24tel0pLCAubWF0LW1pbmktZmFiW19uZ2NvbnRlbnQtJUNPTVAlXTpub3QoW2NsYXNzKj1tYXQtZWxldmF0aW9uLXpdKXtib3gtc2hhZG93OjBweCAzcHggNXB4IC0xcHggcmdiYSgwLCAwLCAwLCAwLjIpLDBweCA2cHggMTBweCAwcHggcmdiYSgwLCAwLCAwLCAwLjE0KSwwcHggMXB4IDE4cHggMHB4IHJnYmEoMCwgMCwgMCwgMC4xMil9Lm1hdC1mYWJbX25nY29udGVudC0lQ09NUCVdOm5vdCgubWF0LWJ1dHRvbi1kaXNhYmxlZCk6YWN0aXZlOm5vdChbY2xhc3MqPW1hdC1lbGV2YXRpb24tel0pLCAubWF0LW1pbmktZmFiW19uZ2NvbnRlbnQtJUNPTVAlXTpub3QoLm1hdC1idXR0b24tZGlzYWJsZWQpOmFjdGl2ZTpub3QoW2NsYXNzKj1tYXQtZWxldmF0aW9uLXpdKXtib3gtc2hhZG93OjBweCA3cHggOHB4IC00cHggcmdiYSgwLCAwLCAwLCAwLjIpLDBweCAxMnB4IDE3cHggMnB4IHJnYmEoMCwgMCwgMCwgMC4xNCksMHB4IDVweCAyMnB4IDRweCByZ2JhKDAsIDAsIDAsIDAuMTIpfS5tYXQtZmFiLm1hdC1idXR0b24tZGlzYWJsZWRbX25nY29udGVudC0lQ09NUCVdOm5vdChbY2xhc3MqPW1hdC1lbGV2YXRpb24tel0pLCAubWF0LW1pbmktZmFiLm1hdC1idXR0b24tZGlzYWJsZWRbX25nY29udGVudC0lQ09NUCVdOm5vdChbY2xhc3MqPW1hdC1lbGV2YXRpb24tel0pe2JveC1zaGFkb3c6MHB4IDBweCAwcHggMHB4IHJnYmEoMCwgMCwgMCwgMC4yKSwwcHggMHB4IDBweCAwcHggcmdiYSgwLCAwLCAwLCAwLjE0KSwwcHggMHB4IDBweCAwcHggcmdiYSgwLCAwLCAwLCAwLjEyKX0ubWF0LWJ1dHRvbi10b2dnbGUtc3RhbmRhbG9uZVtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtYnV0dG9uLXRvZ2dsZS1ncm91cFtfbmdjb250ZW50LSVDT01QJV17Ym94LXNoYWRvdzowcHggM3B4IDFweCAtMnB4IHJnYmEoMCwgMCwgMCwgMC4yKSwwcHggMnB4IDJweCAwcHggcmdiYSgwLCAwLCAwLCAwLjE0KSwwcHggMXB4IDVweCAwcHggcmdiYSgwLCAwLCAwLCAwLjEyKX0ubWF0LWJ1dHRvbi10b2dnbGUtc3RhbmRhbG9uZS5tYXQtYnV0dG9uLXRvZ2dsZS1hcHBlYXJhbmNlLXN0YW5kYXJkW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1idXR0b24tdG9nZ2xlLWdyb3VwLWFwcGVhcmFuY2Utc3RhbmRhcmRbX25nY29udGVudC0lQ09NUCVde2JveC1zaGFkb3c6bm9uZX0ubWF0LWJ1dHRvbi10b2dnbGVbX25nY29udGVudC0lQ09NUCVde2NvbG9yOnJnYmEoMCwwLDAsLjM4KX0ubWF0LWJ1dHRvbi10b2dnbGVbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1idXR0b24tdG9nZ2xlLWZvY3VzLW92ZXJsYXlbX25nY29udGVudC0lQ09NUCVde2JhY2tncm91bmQtY29sb3I6cmdiYSgwLDAsMCwuMTIpfS5tYXQtYnV0dG9uLXRvZ2dsZS1hcHBlYXJhbmNlLXN0YW5kYXJkW19uZ2NvbnRlbnQtJUNPTVAlXXtjb2xvcjojMjEyMTIxO2JhY2tncm91bmQ6I2ZmZn0ubWF0LWJ1dHRvbi10b2dnbGUtYXBwZWFyYW5jZS1zdGFuZGFyZFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWJ1dHRvbi10b2dnbGUtZm9jdXMtb3ZlcmxheVtfbmdjb250ZW50LSVDT01QJV17YmFja2dyb3VuZC1jb2xvcjojMDAwfS5tYXQtYnV0dG9uLXRvZ2dsZS1ncm91cC1hcHBlYXJhbmNlLXN0YW5kYXJkW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtYnV0dG9uLXRvZ2dsZVtfbmdjb250ZW50LSVDT01QJV0gKyAubWF0LWJ1dHRvbi10b2dnbGVbX25nY29udGVudC0lQ09NUCVde2JvcmRlci1sZWZ0OnNvbGlkIDFweCByZ2JhKDAsMCwwLC4xMil9W2Rpcj1ydGxdW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtYnV0dG9uLXRvZ2dsZS1ncm91cC1hcHBlYXJhbmNlLXN0YW5kYXJkW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtYnV0dG9uLXRvZ2dsZVtfbmdjb250ZW50LSVDT01QJV0gKyAubWF0LWJ1dHRvbi10b2dnbGVbX25nY29udGVudC0lQ09NUCVde2JvcmRlci1sZWZ0Om5vbmU7Ym9yZGVyLXJpZ2h0OnNvbGlkIDFweCByZ2JhKDAsMCwwLC4xMil9Lm1hdC1idXR0b24tdG9nZ2xlLWdyb3VwLWFwcGVhcmFuY2Utc3RhbmRhcmQubWF0LWJ1dHRvbi10b2dnbGUtdmVydGljYWxbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1idXR0b24tdG9nZ2xlW19uZ2NvbnRlbnQtJUNPTVAlXSArIC5tYXQtYnV0dG9uLXRvZ2dsZVtfbmdjb250ZW50LSVDT01QJV17Ym9yZGVyLWxlZnQ6bm9uZTtib3JkZXItcmlnaHQ6bm9uZTtib3JkZXItdG9wOnNvbGlkIDFweCByZ2JhKDAsMCwwLC4xMil9Lm1hdC1idXR0b24tdG9nZ2xlLWNoZWNrZWRbX25nY29udGVudC0lQ09NUCVde2JhY2tncm91bmQtY29sb3I6I2UwZTBlMDtjb2xvcjojNjE2MTYxfS5tYXQtYnV0dG9uLXRvZ2dsZS1jaGVja2VkLm1hdC1idXR0b24tdG9nZ2xlLWFwcGVhcmFuY2Utc3RhbmRhcmRbX25nY29udGVudC0lQ09NUCVde2NvbG9yOiMyMTIxMjF9Lm1hdC1idXR0b24tdG9nZ2xlLWRpc2FibGVkW19uZ2NvbnRlbnQtJUNPTVAlXXtjb2xvcjpyZ2JhKDAsMCwwLC4yNik7YmFja2dyb3VuZC1jb2xvcjojZWVlfS5tYXQtYnV0dG9uLXRvZ2dsZS1kaXNhYmxlZC5tYXQtYnV0dG9uLXRvZ2dsZS1hcHBlYXJhbmNlLXN0YW5kYXJkW19uZ2NvbnRlbnQtJUNPTVAlXXtiYWNrZ3JvdW5kOiNmZmZ9Lm1hdC1idXR0b24tdG9nZ2xlLWRpc2FibGVkLm1hdC1idXR0b24tdG9nZ2xlLWNoZWNrZWRbX25nY29udGVudC0lQ09NUCVde2JhY2tncm91bmQtY29sb3I6I2JkYmRiZH0ubWF0LWJ1dHRvbi10b2dnbGUtc3RhbmRhbG9uZS5tYXQtYnV0dG9uLXRvZ2dsZS1hcHBlYXJhbmNlLXN0YW5kYXJkW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1idXR0b24tdG9nZ2xlLWdyb3VwLWFwcGVhcmFuY2Utc3RhbmRhcmRbX25nY29udGVudC0lQ09NUCVde2JvcmRlcjpzb2xpZCAxcHggcmdiYSgwLDAsMCwuMTIpfS5tYXQtYnV0dG9uLXRvZ2dsZS1hcHBlYXJhbmNlLXN0YW5kYXJkW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtYnV0dG9uLXRvZ2dsZS1sYWJlbC1jb250ZW50W19uZ2NvbnRlbnQtJUNPTVAlXXtsaW5lLWhlaWdodDo0OHB4fS5tYXQtY2FyZFtfbmdjb250ZW50LSVDT01QJV17YmFja2dyb3VuZDojZmZmO2NvbG9yOiMyMTIxMjF9Lm1hdC1jYXJkW19uZ2NvbnRlbnQtJUNPTVAlXTpub3QoW2NsYXNzKj1tYXQtZWxldmF0aW9uLXpdKXtib3gtc2hhZG93OjBweCAycHggMXB4IC0xcHggcmdiYSgwLCAwLCAwLCAwLjIpLDBweCAxcHggMXB4IDBweCByZ2JhKDAsIDAsIDAsIDAuMTQpLDBweCAxcHggM3B4IDBweCByZ2JhKDAsIDAsIDAsIDAuMTIpfS5tYXQtY2FyZC5tYXQtY2FyZC1mbGF0W19uZ2NvbnRlbnQtJUNPTVAlXTpub3QoW2NsYXNzKj1tYXQtZWxldmF0aW9uLXpdKXtib3gtc2hhZG93OjBweCAwcHggMHB4IDBweCByZ2JhKDAsIDAsIDAsIDAuMiksMHB4IDBweCAwcHggMHB4IHJnYmEoMCwgMCwgMCwgMC4xNCksMHB4IDBweCAwcHggMHB4IHJnYmEoMCwgMCwgMCwgMC4xMil9Lm1hdC1jYXJkLXN1YnRpdGxlW19uZ2NvbnRlbnQtJUNPTVAlXXtjb2xvcjojNjE2MTYxfS5tYXQtY2hlY2tib3gtZnJhbWVbX25nY29udGVudC0lQ09NUCVde2JvcmRlci1jb2xvcjojNjE2MTYxfS5tYXQtY2hlY2tib3gtY2hlY2ttYXJrW19uZ2NvbnRlbnQtJUNPTVAlXXtmaWxsOiNmYWZhZmF9Lm1hdC1jaGVja2JveC1jaGVja21hcmstcGF0aFtfbmdjb250ZW50LSVDT01QJV17c3Ryb2tlOiNmYWZhZmEgIWltcG9ydGFudH0ubWF0LWNoZWNrYm94LW1peGVkbWFya1tfbmdjb250ZW50LSVDT01QJV17YmFja2dyb3VuZC1jb2xvcjojZmFmYWZhfS5tYXQtY2hlY2tib3gtaW5kZXRlcm1pbmF0ZS5tYXQtcHJpbWFyeVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWNoZWNrYm94LWJhY2tncm91bmRbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWNoZWNrYm94LWNoZWNrZWQubWF0LXByaW1hcnlbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1jaGVja2JveC1iYWNrZ3JvdW5kW19uZ2NvbnRlbnQtJUNPTVAlXXtiYWNrZ3JvdW5kLWNvbG9yOiNmNTdjMDB9Lm1hdC1jaGVja2JveC1pbmRldGVybWluYXRlLm1hdC1hY2NlbnRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1jaGVja2JveC1iYWNrZ3JvdW5kW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1jaGVja2JveC1jaGVja2VkLm1hdC1hY2NlbnRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1jaGVja2JveC1iYWNrZ3JvdW5kW19uZ2NvbnRlbnQtJUNPTVAlXXtiYWNrZ3JvdW5kLWNvbG9yOiNmZjk4MDB9Lm1hdC1jaGVja2JveC1pbmRldGVybWluYXRlLm1hdC13YXJuW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtY2hlY2tib3gtYmFja2dyb3VuZFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtY2hlY2tib3gtY2hlY2tlZC5tYXQtd2Fybltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWNoZWNrYm94LWJhY2tncm91bmRbX25nY29udGVudC0lQ09NUCVde2JhY2tncm91bmQtY29sb3I6I2Y0NDMzNn0ubWF0LWNoZWNrYm94LWRpc2FibGVkLm1hdC1jaGVja2JveC1jaGVja2VkW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtY2hlY2tib3gtYmFja2dyb3VuZFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtY2hlY2tib3gtZGlzYWJsZWQubWF0LWNoZWNrYm94LWluZGV0ZXJtaW5hdGVbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1jaGVja2JveC1iYWNrZ3JvdW5kW19uZ2NvbnRlbnQtJUNPTVAlXXtiYWNrZ3JvdW5kLWNvbG9yOiNiMGIwYjB9Lm1hdC1jaGVja2JveC1kaXNhYmxlZFtfbmdjb250ZW50LSVDT01QJV06bm90KC5tYXQtY2hlY2tib3gtY2hlY2tlZCkgICAubWF0LWNoZWNrYm94LWZyYW1lW19uZ2NvbnRlbnQtJUNPTVAlXXtib3JkZXItY29sb3I6I2IwYjBiMH0ubWF0LWNoZWNrYm94LWRpc2FibGVkW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtY2hlY2tib3gtbGFiZWxbX25nY29udGVudC0lQ09NUCVde2NvbG9yOiM2MTYxNjF9Lm1hdC1jaGVja2JveFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXJpcHBsZS1lbGVtZW50W19uZ2NvbnRlbnQtJUNPTVAlXXtiYWNrZ3JvdW5kLWNvbG9yOiMwMDB9Lm1hdC1jaGVja2JveC1jaGVja2VkW19uZ2NvbnRlbnQtJUNPTVAlXTpub3QoLm1hdC1jaGVja2JveC1kaXNhYmxlZCkubWF0LXByaW1hcnkgICAubWF0LXJpcHBsZS1lbGVtZW50W19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1jaGVja2JveFtfbmdjb250ZW50LSVDT01QJV06YWN0aXZlOm5vdCgubWF0LWNoZWNrYm94LWRpc2FibGVkKS5tYXQtcHJpbWFyeSAgIC5tYXQtcmlwcGxlLWVsZW1lbnRbX25nY29udGVudC0lQ09NUCVde2JhY2tncm91bmQ6I2Y1N2MwMH0ubWF0LWNoZWNrYm94LWNoZWNrZWRbX25nY29udGVudC0lQ09NUCVdOm5vdCgubWF0LWNoZWNrYm94LWRpc2FibGVkKS5tYXQtYWNjZW50ICAgLm1hdC1yaXBwbGUtZWxlbWVudFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtY2hlY2tib3hbX25nY29udGVudC0lQ09NUCVdOmFjdGl2ZTpub3QoLm1hdC1jaGVja2JveC1kaXNhYmxlZCkubWF0LWFjY2VudCAgIC5tYXQtcmlwcGxlLWVsZW1lbnRbX25nY29udGVudC0lQ09NUCVde2JhY2tncm91bmQ6I2ZmOTgwMH0ubWF0LWNoZWNrYm94LWNoZWNrZWRbX25nY29udGVudC0lQ09NUCVdOm5vdCgubWF0LWNoZWNrYm94LWRpc2FibGVkKS5tYXQtd2FybiAgIC5tYXQtcmlwcGxlLWVsZW1lbnRbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWNoZWNrYm94W19uZ2NvbnRlbnQtJUNPTVAlXTphY3RpdmU6bm90KC5tYXQtY2hlY2tib3gtZGlzYWJsZWQpLm1hdC13YXJuICAgLm1hdC1yaXBwbGUtZWxlbWVudFtfbmdjb250ZW50LSVDT01QJV17YmFja2dyb3VuZDojZjQ0MzM2fS5tYXQtY2hpcC5tYXQtc3RhbmRhcmQtY2hpcFtfbmdjb250ZW50LSVDT01QJV17YmFja2dyb3VuZC1jb2xvcjojZTBlMGUwO2NvbG9yOiMyMTIxMjF9Lm1hdC1jaGlwLm1hdC1zdGFuZGFyZC1jaGlwW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtY2hpcC1yZW1vdmVbX25nY29udGVudC0lQ09NUCVde2NvbG9yOiMyMTIxMjE7b3BhY2l0eTouNH0ubWF0LWNoaXAubWF0LXN0YW5kYXJkLWNoaXBbX25nY29udGVudC0lQ09NUCVdOm5vdCgubWF0LWNoaXAtZGlzYWJsZWQpOmFjdGl2ZXtib3gtc2hhZG93OjBweCAzcHggM3B4IC0ycHggcmdiYSgwLCAwLCAwLCAwLjIpLDBweCAzcHggNHB4IDBweCByZ2JhKDAsIDAsIDAsIDAuMTQpLDBweCAxcHggOHB4IDBweCByZ2JhKDAsIDAsIDAsIDAuMTIpfS5tYXQtY2hpcC5tYXQtc3RhbmRhcmQtY2hpcFtfbmdjb250ZW50LSVDT01QJV06bm90KC5tYXQtY2hpcC1kaXNhYmxlZCkgICAubWF0LWNoaXAtcmVtb3ZlW19uZ2NvbnRlbnQtJUNPTVAlXTpob3ZlcntvcGFjaXR5Oi41NH0ubWF0LWNoaXAubWF0LXN0YW5kYXJkLWNoaXAubWF0LWNoaXAtZGlzYWJsZWRbX25nY29udGVudC0lQ09NUCVde29wYWNpdHk6LjR9Lm1hdC1jaGlwLm1hdC1zdGFuZGFyZC1jaGlwW19uZ2NvbnRlbnQtJUNPTVAlXTo6YWZ0ZXJ7YmFja2dyb3VuZDojMDAwfS5tYXQtY2hpcC5tYXQtc3RhbmRhcmQtY2hpcC5tYXQtY2hpcC1zZWxlY3RlZC5tYXQtcHJpbWFyeVtfbmdjb250ZW50LSVDT01QJV17YmFja2dyb3VuZC1jb2xvcjojZjU3YzAwO2NvbG9yOiNmZmZ9Lm1hdC1jaGlwLm1hdC1zdGFuZGFyZC1jaGlwLm1hdC1jaGlwLXNlbGVjdGVkLm1hdC1wcmltYXJ5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtY2hpcC1yZW1vdmVbX25nY29udGVudC0lQ09NUCVde2NvbG9yOiNmZmY7b3BhY2l0eTouNH0ubWF0LWNoaXAubWF0LXN0YW5kYXJkLWNoaXAubWF0LWNoaXAtc2VsZWN0ZWQubWF0LXByaW1hcnlbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1yaXBwbGUtZWxlbWVudFtfbmdjb250ZW50LSVDT01QJV17YmFja2dyb3VuZC1jb2xvcjpyZ2JhKDI1NSwyNTUsMjU1LC4xKX0ubWF0LWNoaXAubWF0LXN0YW5kYXJkLWNoaXAubWF0LWNoaXAtc2VsZWN0ZWQubWF0LXdhcm5bX25nY29udGVudC0lQ09NUCVde2JhY2tncm91bmQtY29sb3I6I2Y0NDMzNjtjb2xvcjojZmZmfS5tYXQtY2hpcC5tYXQtc3RhbmRhcmQtY2hpcC5tYXQtY2hpcC1zZWxlY3RlZC5tYXQtd2Fybltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWNoaXAtcmVtb3ZlW19uZ2NvbnRlbnQtJUNPTVAlXXtjb2xvcjojZmZmO29wYWNpdHk6LjR9Lm1hdC1jaGlwLm1hdC1zdGFuZGFyZC1jaGlwLm1hdC1jaGlwLXNlbGVjdGVkLm1hdC13YXJuW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtcmlwcGxlLWVsZW1lbnRbX25nY29udGVudC0lQ09NUCVde2JhY2tncm91bmQtY29sb3I6cmdiYSgyNTUsMjU1LDI1NSwuMSl9Lm1hdC1jaGlwLm1hdC1zdGFuZGFyZC1jaGlwLm1hdC1jaGlwLXNlbGVjdGVkLm1hdC1hY2NlbnRbX25nY29udGVudC0lQ09NUCVde2JhY2tncm91bmQtY29sb3I6I2ZmOTgwMDtjb2xvcjojZmZmfS5tYXQtY2hpcC5tYXQtc3RhbmRhcmQtY2hpcC5tYXQtY2hpcC1zZWxlY3RlZC5tYXQtYWNjZW50W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtY2hpcC1yZW1vdmVbX25nY29udGVudC0lQ09NUCVde2NvbG9yOiNmZmY7b3BhY2l0eTouNH0ubWF0LWNoaXAubWF0LXN0YW5kYXJkLWNoaXAubWF0LWNoaXAtc2VsZWN0ZWQubWF0LWFjY2VudFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXJpcHBsZS1lbGVtZW50W19uZ2NvbnRlbnQtJUNPTVAlXXtiYWNrZ3JvdW5kLWNvbG9yOnJnYmEoMjU1LDI1NSwyNTUsLjEpfS5tYXQtdGFibGVbX25nY29udGVudC0lQ09NUCVde2JhY2tncm91bmQ6I2ZmZn0ubWF0LXRhYmxlW19uZ2NvbnRlbnQtJUNPTVAlXSAgIHRoZWFkW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10YWJsZVtfbmdjb250ZW50LSVDT01QJV0gICB0Ym9keVtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdGFibGVbX25nY29udGVudC0lQ09NUCVdICAgdGZvb3RbX25nY29udGVudC0lQ09NUCVdLCBtYXQtaGVhZGVyLXJvd1tfbmdjb250ZW50LSVDT01QJV0sIG1hdC1yb3dbX25nY29udGVudC0lQ09NUCVdLCBtYXQtZm9vdGVyLXJvd1tfbmdjb250ZW50LSVDT01QJV0sIFttYXQtaGVhZGVyLXJvd11bX25nY29udGVudC0lQ09NUCVdLCBbbWF0LXJvd11bX25nY29udGVudC0lQ09NUCVdLCBbbWF0LWZvb3Rlci1yb3ddW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10YWJsZS1zdGlja3lbX25nY29udGVudC0lQ09NUCVde2JhY2tncm91bmQ6aW5oZXJpdH1tYXQtcm93W19uZ2NvbnRlbnQtJUNPTVAlXSwgbWF0LWhlYWRlci1yb3dbX25nY29udGVudC0lQ09NUCVdLCBtYXQtZm9vdGVyLXJvd1tfbmdjb250ZW50LSVDT01QJV0sIHRoLm1hdC1oZWFkZXItY2VsbFtfbmdjb250ZW50LSVDT01QJV0sIHRkLm1hdC1jZWxsW19uZ2NvbnRlbnQtJUNPTVAlXSwgdGQubWF0LWZvb3Rlci1jZWxsW19uZ2NvbnRlbnQtJUNPTVAlXXtib3JkZXItYm90dG9tLWNvbG9yOnJnYmEoMCwwLDAsLjEyKX0ubWF0LWhlYWRlci1jZWxsW19uZ2NvbnRlbnQtJUNPTVAlXXtjb2xvcjojNjE2MTYxfS5tYXQtY2VsbFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtZm9vdGVyLWNlbGxbX25nY29udGVudC0lQ09NUCVde2NvbG9yOiMyMTIxMjF9Lm1hdC1jYWxlbmRhci1hcnJvd1tfbmdjb250ZW50LSVDT01QJV17Ym9yZGVyLXRvcC1jb2xvcjpyZ2JhKDAsMCwwLC41NCl9Lm1hdC1kYXRlcGlja2VyLXRvZ2dsZVtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtZGF0ZXBpY2tlci1jb250ZW50W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtY2FsZW5kYXItbmV4dC1idXR0b25bX25nY29udGVudC0lQ09NUCVdLCAubWF0LWRhdGVwaWNrZXItY29udGVudFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWNhbGVuZGFyLXByZXZpb3VzLWJ1dHRvbltfbmdjb250ZW50LSVDT01QJV17Y29sb3I6cmdiYSgwLDAsMCwuNTQpfS5tYXQtY2FsZW5kYXItdGFibGUtaGVhZGVyW19uZ2NvbnRlbnQtJUNPTVAlXXtjb2xvcjpyZ2JhKDAsMCwwLC4zOCl9Lm1hdC1jYWxlbmRhci10YWJsZS1oZWFkZXItZGl2aWRlcltfbmdjb250ZW50LSVDT01QJV06OmFmdGVye2JhY2tncm91bmQ6cmdiYSgwLDAsMCwuMTIpfS5tYXQtY2FsZW5kYXItYm9keS1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17Y29sb3I6IzYxNjE2MX0ubWF0LWNhbGVuZGFyLWJvZHktY2VsbC1jb250ZW50W19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1kYXRlLXJhbmdlLWlucHV0LXNlcGFyYXRvcltfbmdjb250ZW50LSVDT01QJV17Y29sb3I6IzIxMjEyMTtib3JkZXItY29sb3I6dHJhbnNwYXJlbnR9Lm1hdC1jYWxlbmRhci1ib2R5LWRpc2FibGVkW19uZ2NvbnRlbnQtJUNPTVAlXSA+IC5tYXQtY2FsZW5kYXItYm9keS1jZWxsLWNvbnRlbnRbX25nY29udGVudC0lQ09NUCVdOm5vdCgubWF0LWNhbGVuZGFyLWJvZHktc2VsZWN0ZWQpOm5vdCgubWF0LWNhbGVuZGFyLWJvZHktY29tcGFyaXNvbi1pZGVudGljYWwpe2NvbG9yOiM3NTc1NzV9Lm1hdC1mb3JtLWZpZWxkLWRpc2FibGVkW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZGF0ZS1yYW5nZS1pbnB1dC1zZXBhcmF0b3JbX25nY29udGVudC0lQ09NUCVde2NvbG9yOiM3NTc1NzV9Lm1hdC1jYWxlbmRhci1ib2R5LWNlbGxbX25nY29udGVudC0lQ09NUCVdOm5vdCgubWF0LWNhbGVuZGFyLWJvZHktZGlzYWJsZWQpOmhvdmVyID4gLm1hdC1jYWxlbmRhci1ib2R5LWNlbGwtY29udGVudFtfbmdjb250ZW50LSVDT01QJV06bm90KC5tYXQtY2FsZW5kYXItYm9keS1zZWxlY3RlZCk6bm90KC5tYXQtY2FsZW5kYXItYm9keS1jb21wYXJpc29uLWlkZW50aWNhbCksIC5jZGsta2V5Ym9hcmQtZm9jdXNlZFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWNhbGVuZGFyLWJvZHktYWN0aXZlW19uZ2NvbnRlbnQtJUNPTVAlXSA+IC5tYXQtY2FsZW5kYXItYm9keS1jZWxsLWNvbnRlbnRbX25nY29udGVudC0lQ09NUCVdOm5vdCgubWF0LWNhbGVuZGFyLWJvZHktc2VsZWN0ZWQpOm5vdCgubWF0LWNhbGVuZGFyLWJvZHktY29tcGFyaXNvbi1pZGVudGljYWwpLCAuY2RrLXByb2dyYW0tZm9jdXNlZFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWNhbGVuZGFyLWJvZHktYWN0aXZlW19uZ2NvbnRlbnQtJUNPTVAlXSA+IC5tYXQtY2FsZW5kYXItYm9keS1jZWxsLWNvbnRlbnRbX25nY29udGVudC0lQ09NUCVdOm5vdCgubWF0LWNhbGVuZGFyLWJvZHktc2VsZWN0ZWQpOm5vdCgubWF0LWNhbGVuZGFyLWJvZHktY29tcGFyaXNvbi1pZGVudGljYWwpe2JhY2tncm91bmQtY29sb3I6cmdiYSgwLDAsMCwuMDQpfS5tYXQtY2FsZW5kYXItYm9keS1pbi1wcmV2aWV3W19uZ2NvbnRlbnQtJUNPTVAlXXtjb2xvcjpyZ2JhKDAsMCwwLC4yNCl9Lm1hdC1jYWxlbmRhci1ib2R5LXRvZGF5W19uZ2NvbnRlbnQtJUNPTVAlXTpub3QoLm1hdC1jYWxlbmRhci1ib2R5LXNlbGVjdGVkKTpub3QoLm1hdC1jYWxlbmRhci1ib2R5LWNvbXBhcmlzb24taWRlbnRpY2FsKXtib3JkZXItY29sb3I6cmdiYSgwLDAsMCwuMzgpfS5tYXQtY2FsZW5kYXItYm9keS1kaXNhYmxlZFtfbmdjb250ZW50LSVDT01QJV0gPiAubWF0LWNhbGVuZGFyLWJvZHktdG9kYXlbX25nY29udGVudC0lQ09NUCVdOm5vdCgubWF0LWNhbGVuZGFyLWJvZHktc2VsZWN0ZWQpOm5vdCgubWF0LWNhbGVuZGFyLWJvZHktY29tcGFyaXNvbi1pZGVudGljYWwpe2JvcmRlci1jb2xvcjpyZ2JhKDAsMCwwLC4xOCl9Lm1hdC1jYWxlbmRhci1ib2R5LWluLXJhbmdlW19uZ2NvbnRlbnQtJUNPTVAlXTo6YmVmb3Jle2JhY2tncm91bmQ6cmdiYSgyNDUsMTI0LDAsLjIpfS5tYXQtY2FsZW5kYXItYm9keS1jb21wYXJpc29uLWlkZW50aWNhbFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtY2FsZW5kYXItYm9keS1pbi1jb21wYXJpc29uLXJhbmdlW19uZ2NvbnRlbnQtJUNPTVAlXTo6YmVmb3Jle2JhY2tncm91bmQ6cmdiYSgyNDksMTcxLDAsLjIpfS5tYXQtY2FsZW5kYXItYm9keS1jb21wYXJpc29uLWJyaWRnZS1zdGFydFtfbmdjb250ZW50LSVDT01QJV06OmJlZm9yZSwgW2Rpcj1ydGxdW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtY2FsZW5kYXItYm9keS1jb21wYXJpc29uLWJyaWRnZS1lbmRbX25nY29udGVudC0lQ09NUCVdOjpiZWZvcmV7YmFja2dyb3VuZDpsaW5lYXItZ3JhZGllbnQodG8gcmlnaHQsIHJnYmEoMjQ1LCAxMjQsIDAsIDAuMikgNTAlLCByZ2JhKDI0OSwgMTcxLCAwLCAwLjIpIDUwJSl9Lm1hdC1jYWxlbmRhci1ib2R5LWNvbXBhcmlzb24tYnJpZGdlLWVuZFtfbmdjb250ZW50LSVDT01QJV06OmJlZm9yZSwgW2Rpcj1ydGxdW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtY2FsZW5kYXItYm9keS1jb21wYXJpc29uLWJyaWRnZS1zdGFydFtfbmdjb250ZW50LSVDT01QJV06OmJlZm9yZXtiYWNrZ3JvdW5kOmxpbmVhci1ncmFkaWVudCh0byBsZWZ0LCByZ2JhKDI0NSwgMTI0LCAwLCAwLjIpIDUwJSwgcmdiYSgyNDksIDE3MSwgMCwgMC4yKSA1MCUpfS5tYXQtY2FsZW5kYXItYm9keS1pbi1yYW5nZVtfbmdjb250ZW50LSVDT01QJV0gPiAubWF0LWNhbGVuZGFyLWJvZHktY29tcGFyaXNvbi1pZGVudGljYWxbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWNhbGVuZGFyLWJvZHktaW4tY29tcGFyaXNvbi1yYW5nZS5tYXQtY2FsZW5kYXItYm9keS1pbi1yYW5nZVtfbmdjb250ZW50LSVDT01QJV06OmFmdGVye2JhY2tncm91bmQ6I2E4ZGFiNX0ubWF0LWNhbGVuZGFyLWJvZHktY29tcGFyaXNvbi1pZGVudGljYWwubWF0LWNhbGVuZGFyLWJvZHktc2VsZWN0ZWRbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWNhbGVuZGFyLWJvZHktaW4tY29tcGFyaXNvbi1yYW5nZVtfbmdjb250ZW50LSVDT01QJV0gPiAubWF0LWNhbGVuZGFyLWJvZHktc2VsZWN0ZWRbX25nY29udGVudC0lQ09NUCVde2JhY2tncm91bmQ6IzQ2YTM1ZX0ubWF0LWNhbGVuZGFyLWJvZHktc2VsZWN0ZWRbX25nY29udGVudC0lQ09NUCVde2JhY2tncm91bmQtY29sb3I6I2Y1N2MwMDtjb2xvcjojZmZmfS5tYXQtY2FsZW5kYXItYm9keS1kaXNhYmxlZFtfbmdjb250ZW50LSVDT01QJV0gPiAubWF0LWNhbGVuZGFyLWJvZHktc2VsZWN0ZWRbX25nY29udGVudC0lQ09NUCVde2JhY2tncm91bmQtY29sb3I6cmdiYSgyNDUsMTI0LDAsLjQpfS5tYXQtY2FsZW5kYXItYm9keS10b2RheS5tYXQtY2FsZW5kYXItYm9keS1zZWxlY3RlZFtfbmdjb250ZW50LSVDT01QJV17Ym94LXNoYWRvdzppbnNldCAwIDAgMCAxcHggI2ZmZn0ubWF0LWRhdGVwaWNrZXItY29udGVudFtfbmdjb250ZW50LSVDT01QJV17Ym94LXNoYWRvdzowcHggMnB4IDRweCAtMXB4IHJnYmEoMCwgMCwgMCwgMC4yKSwwcHggNHB4IDVweCAwcHggcmdiYSgwLCAwLCAwLCAwLjE0KSwwcHggMXB4IDEwcHggMHB4IHJnYmEoMCwgMCwgMCwgMC4xMik7YmFja2dyb3VuZC1jb2xvcjojZmZmO2NvbG9yOiMyMTIxMjF9Lm1hdC1kYXRlcGlja2VyLWNvbnRlbnQubWF0LWFjY2VudFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWNhbGVuZGFyLWJvZHktaW4tcmFuZ2VbX25nY29udGVudC0lQ09NUCVdOjpiZWZvcmV7YmFja2dyb3VuZDpyZ2JhKDI1NSwxNTIsMCwuMil9Lm1hdC1kYXRlcGlja2VyLWNvbnRlbnQubWF0LWFjY2VudFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWNhbGVuZGFyLWJvZHktY29tcGFyaXNvbi1pZGVudGljYWxbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWRhdGVwaWNrZXItY29udGVudC5tYXQtYWNjZW50W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtY2FsZW5kYXItYm9keS1pbi1jb21wYXJpc29uLXJhbmdlW19uZ2NvbnRlbnQtJUNPTVAlXTo6YmVmb3Jle2JhY2tncm91bmQ6cmdiYSgyNDksMTcxLDAsLjIpfS5tYXQtZGF0ZXBpY2tlci1jb250ZW50Lm1hdC1hY2NlbnRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1jYWxlbmRhci1ib2R5LWNvbXBhcmlzb24tYnJpZGdlLXN0YXJ0W19uZ2NvbnRlbnQtJUNPTVAlXTo6YmVmb3JlLCAubWF0LWRhdGVwaWNrZXItY29udGVudC5tYXQtYWNjZW50W19uZ2NvbnRlbnQtJUNPTVAlXSAgIFtkaXI9cnRsXVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWNhbGVuZGFyLWJvZHktY29tcGFyaXNvbi1icmlkZ2UtZW5kW19uZ2NvbnRlbnQtJUNPTVAlXTo6YmVmb3Jle2JhY2tncm91bmQ6bGluZWFyLWdyYWRpZW50KHRvIHJpZ2h0LCByZ2JhKDI1NSwgMTUyLCAwLCAwLjIpIDUwJSwgcmdiYSgyNDksIDE3MSwgMCwgMC4yKSA1MCUpfS5tYXQtZGF0ZXBpY2tlci1jb250ZW50Lm1hdC1hY2NlbnRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1jYWxlbmRhci1ib2R5LWNvbXBhcmlzb24tYnJpZGdlLWVuZFtfbmdjb250ZW50LSVDT01QJV06OmJlZm9yZSwgLm1hdC1kYXRlcGlja2VyLWNvbnRlbnQubWF0LWFjY2VudFtfbmdjb250ZW50LSVDT01QJV0gICBbZGlyPXJ0bF1bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1jYWxlbmRhci1ib2R5LWNvbXBhcmlzb24tYnJpZGdlLXN0YXJ0W19uZ2NvbnRlbnQtJUNPTVAlXTo6YmVmb3Jle2JhY2tncm91bmQ6bGluZWFyLWdyYWRpZW50KHRvIGxlZnQsIHJnYmEoMjU1LCAxNTIsIDAsIDAuMikgNTAlLCByZ2JhKDI0OSwgMTcxLCAwLCAwLjIpIDUwJSl9Lm1hdC1kYXRlcGlja2VyLWNvbnRlbnQubWF0LWFjY2VudFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWNhbGVuZGFyLWJvZHktaW4tcmFuZ2VbX25nY29udGVudC0lQ09NUCVdID4gLm1hdC1jYWxlbmRhci1ib2R5LWNvbXBhcmlzb24taWRlbnRpY2FsW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1kYXRlcGlja2VyLWNvbnRlbnQubWF0LWFjY2VudFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWNhbGVuZGFyLWJvZHktaW4tY29tcGFyaXNvbi1yYW5nZS5tYXQtY2FsZW5kYXItYm9keS1pbi1yYW5nZVtfbmdjb250ZW50LSVDT01QJV06OmFmdGVye2JhY2tncm91bmQ6I2E4ZGFiNX0ubWF0LWRhdGVwaWNrZXItY29udGVudC5tYXQtYWNjZW50W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtY2FsZW5kYXItYm9keS1jb21wYXJpc29uLWlkZW50aWNhbC5tYXQtY2FsZW5kYXItYm9keS1zZWxlY3RlZFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtZGF0ZXBpY2tlci1jb250ZW50Lm1hdC1hY2NlbnRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1jYWxlbmRhci1ib2R5LWluLWNvbXBhcmlzb24tcmFuZ2VbX25nY29udGVudC0lQ09NUCVdID4gLm1hdC1jYWxlbmRhci1ib2R5LXNlbGVjdGVkW19uZ2NvbnRlbnQtJUNPTVAlXXtiYWNrZ3JvdW5kOiM0NmEzNWV9Lm1hdC1kYXRlcGlja2VyLWNvbnRlbnQubWF0LWFjY2VudFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWNhbGVuZGFyLWJvZHktc2VsZWN0ZWRbX25nY29udGVudC0lQ09NUCVde2JhY2tncm91bmQtY29sb3I6I2ZmOTgwMDtjb2xvcjojZmZmfS5tYXQtZGF0ZXBpY2tlci1jb250ZW50Lm1hdC1hY2NlbnRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1jYWxlbmRhci1ib2R5LWRpc2FibGVkW19uZ2NvbnRlbnQtJUNPTVAlXSA+IC5tYXQtY2FsZW5kYXItYm9keS1zZWxlY3RlZFtfbmdjb250ZW50LSVDT01QJV17YmFja2dyb3VuZC1jb2xvcjpyZ2JhKDI1NSwxNTIsMCwuNCl9Lm1hdC1kYXRlcGlja2VyLWNvbnRlbnQubWF0LWFjY2VudFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWNhbGVuZGFyLWJvZHktdG9kYXkubWF0LWNhbGVuZGFyLWJvZHktc2VsZWN0ZWRbX25nY29udGVudC0lQ09NUCVde2JveC1zaGFkb3c6aW5zZXQgMCAwIDAgMXB4ICNmZmZ9Lm1hdC1kYXRlcGlja2VyLWNvbnRlbnQubWF0LXdhcm5bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1jYWxlbmRhci1ib2R5LWluLXJhbmdlW19uZ2NvbnRlbnQtJUNPTVAlXTo6YmVmb3Jle2JhY2tncm91bmQ6cmdiYSgyNDQsNjcsNTQsLjIpfS5tYXQtZGF0ZXBpY2tlci1jb250ZW50Lm1hdC13YXJuW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtY2FsZW5kYXItYm9keS1jb21wYXJpc29uLWlkZW50aWNhbFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtZGF0ZXBpY2tlci1jb250ZW50Lm1hdC13YXJuW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtY2FsZW5kYXItYm9keS1pbi1jb21wYXJpc29uLXJhbmdlW19uZ2NvbnRlbnQtJUNPTVAlXTo6YmVmb3Jle2JhY2tncm91bmQ6cmdiYSgyNDksMTcxLDAsLjIpfS5tYXQtZGF0ZXBpY2tlci1jb250ZW50Lm1hdC13YXJuW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtY2FsZW5kYXItYm9keS1jb21wYXJpc29uLWJyaWRnZS1zdGFydFtfbmdjb250ZW50LSVDT01QJV06OmJlZm9yZSwgLm1hdC1kYXRlcGlja2VyLWNvbnRlbnQubWF0LXdhcm5bX25nY29udGVudC0lQ09NUCVdICAgW2Rpcj1ydGxdW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtY2FsZW5kYXItYm9keS1jb21wYXJpc29uLWJyaWRnZS1lbmRbX25nY29udGVudC0lQ09NUCVdOjpiZWZvcmV7YmFja2dyb3VuZDpsaW5lYXItZ3JhZGllbnQodG8gcmlnaHQsIHJnYmEoMjQ0LCA2NywgNTQsIDAuMikgNTAlLCByZ2JhKDI0OSwgMTcxLCAwLCAwLjIpIDUwJSl9Lm1hdC1kYXRlcGlja2VyLWNvbnRlbnQubWF0LXdhcm5bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1jYWxlbmRhci1ib2R5LWNvbXBhcmlzb24tYnJpZGdlLWVuZFtfbmdjb250ZW50LSVDT01QJV06OmJlZm9yZSwgLm1hdC1kYXRlcGlja2VyLWNvbnRlbnQubWF0LXdhcm5bX25nY29udGVudC0lQ09NUCVdICAgW2Rpcj1ydGxdW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtY2FsZW5kYXItYm9keS1jb21wYXJpc29uLWJyaWRnZS1zdGFydFtfbmdjb250ZW50LSVDT01QJV06OmJlZm9yZXtiYWNrZ3JvdW5kOmxpbmVhci1ncmFkaWVudCh0byBsZWZ0LCByZ2JhKDI0NCwgNjcsIDU0LCAwLjIpIDUwJSwgcmdiYSgyNDksIDE3MSwgMCwgMC4yKSA1MCUpfS5tYXQtZGF0ZXBpY2tlci1jb250ZW50Lm1hdC13YXJuW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtY2FsZW5kYXItYm9keS1pbi1yYW5nZVtfbmdjb250ZW50LSVDT01QJV0gPiAubWF0LWNhbGVuZGFyLWJvZHktY29tcGFyaXNvbi1pZGVudGljYWxbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWRhdGVwaWNrZXItY29udGVudC5tYXQtd2Fybltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWNhbGVuZGFyLWJvZHktaW4tY29tcGFyaXNvbi1yYW5nZS5tYXQtY2FsZW5kYXItYm9keS1pbi1yYW5nZVtfbmdjb250ZW50LSVDT01QJV06OmFmdGVye2JhY2tncm91bmQ6I2E4ZGFiNX0ubWF0LWRhdGVwaWNrZXItY29udGVudC5tYXQtd2Fybltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWNhbGVuZGFyLWJvZHktY29tcGFyaXNvbi1pZGVudGljYWwubWF0LWNhbGVuZGFyLWJvZHktc2VsZWN0ZWRbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWRhdGVwaWNrZXItY29udGVudC5tYXQtd2Fybltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWNhbGVuZGFyLWJvZHktaW4tY29tcGFyaXNvbi1yYW5nZVtfbmdjb250ZW50LSVDT01QJV0gPiAubWF0LWNhbGVuZGFyLWJvZHktc2VsZWN0ZWRbX25nY29udGVudC0lQ09NUCVde2JhY2tncm91bmQ6IzQ2YTM1ZX0ubWF0LWRhdGVwaWNrZXItY29udGVudC5tYXQtd2Fybltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWNhbGVuZGFyLWJvZHktc2VsZWN0ZWRbX25nY29udGVudC0lQ09NUCVde2JhY2tncm91bmQtY29sb3I6I2Y0NDMzNjtjb2xvcjojZmZmfS5tYXQtZGF0ZXBpY2tlci1jb250ZW50Lm1hdC13YXJuW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtY2FsZW5kYXItYm9keS1kaXNhYmxlZFtfbmdjb250ZW50LSVDT01QJV0gPiAubWF0LWNhbGVuZGFyLWJvZHktc2VsZWN0ZWRbX25nY29udGVudC0lQ09NUCVde2JhY2tncm91bmQtY29sb3I6cmdiYSgyNDQsNjcsNTQsLjQpfS5tYXQtZGF0ZXBpY2tlci1jb250ZW50Lm1hdC13YXJuW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtY2FsZW5kYXItYm9keS10b2RheS5tYXQtY2FsZW5kYXItYm9keS1zZWxlY3RlZFtfbmdjb250ZW50LSVDT01QJV17Ym94LXNoYWRvdzppbnNldCAwIDAgMCAxcHggI2ZmZn0ubWF0LWRhdGVwaWNrZXItY29udGVudC10b3VjaFtfbmdjb250ZW50LSVDT01QJV17Ym94LXNoYWRvdzowcHggMHB4IDBweCAwcHggcmdiYSgwLCAwLCAwLCAwLjIpLDBweCAwcHggMHB4IDBweCByZ2JhKDAsIDAsIDAsIDAuMTQpLDBweCAwcHggMHB4IDBweCByZ2JhKDAsIDAsIDAsIDAuMTIpfS5tYXQtZGF0ZXBpY2tlci10b2dnbGUtYWN0aXZlW19uZ2NvbnRlbnQtJUNPTVAlXXtjb2xvcjojZjU3YzAwfS5tYXQtZGF0ZXBpY2tlci10b2dnbGUtYWN0aXZlLm1hdC1hY2NlbnRbX25nY29udGVudC0lQ09NUCVde2NvbG9yOiNmZjk4MDB9Lm1hdC1kYXRlcGlja2VyLXRvZ2dsZS1hY3RpdmUubWF0LXdhcm5bX25nY29udGVudC0lQ09NUCVde2NvbG9yOiNmNDQzMzZ9Lm1hdC1kYXRlLXJhbmdlLWlucHV0LWlubmVyW2Rpc2FibGVkXVtfbmdjb250ZW50LSVDT01QJV17Y29sb3I6Izc1NzU3NX0ubWF0LWRpYWxvZy1jb250YWluZXJbX25nY29udGVudC0lQ09NUCVde2JveC1zaGFkb3c6MHB4IDExcHggMTVweCAtN3B4IHJnYmEoMCwgMCwgMCwgMC4yKSwwcHggMjRweCAzOHB4IDNweCByZ2JhKDAsIDAsIDAsIDAuMTQpLDBweCA5cHggNDZweCA4cHggcmdiYSgwLCAwLCAwLCAwLjEyKTtiYWNrZ3JvdW5kOiNmZmY7Y29sb3I6IzIxMjEyMX0ubWF0LWRpdmlkZXJbX25nY29udGVudC0lQ09NUCVde2JvcmRlci10b3AtY29sb3I6cmdiYSgwLDAsMCwuMTIpfS5tYXQtZGl2aWRlci12ZXJ0aWNhbFtfbmdjb250ZW50LSVDT01QJV17Ym9yZGVyLXJpZ2h0LWNvbG9yOnJnYmEoMCwwLDAsLjEyKX0ubWF0LWV4cGFuc2lvbi1wYW5lbFtfbmdjb250ZW50LSVDT01QJV17YmFja2dyb3VuZDojZmZmO2NvbG9yOiMyMTIxMjF9Lm1hdC1leHBhbnNpb24tcGFuZWxbX25nY29udGVudC0lQ09NUCVdOm5vdChbY2xhc3MqPW1hdC1lbGV2YXRpb24tel0pe2JveC1zaGFkb3c6MHB4IDNweCAxcHggLTJweCByZ2JhKDAsIDAsIDAsIDAuMiksMHB4IDJweCAycHggMHB4IHJnYmEoMCwgMCwgMCwgMC4xNCksMHB4IDFweCA1cHggMHB4IHJnYmEoMCwgMCwgMCwgMC4xMil9Lm1hdC1hY3Rpb24tcm93W19uZ2NvbnRlbnQtJUNPTVAlXXtib3JkZXItdG9wLWNvbG9yOnJnYmEoMCwwLDAsLjEyKX0ubWF0LWV4cGFuc2lvbi1wYW5lbFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWV4cGFuc2lvbi1wYW5lbC1oZWFkZXIuY2RrLWtleWJvYXJkLWZvY3VzZWRbX25nY29udGVudC0lQ09NUCVdOm5vdChbYXJpYS1kaXNhYmxlZD10cnVlXSksIC5tYXQtZXhwYW5zaW9uLXBhbmVsW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZXhwYW5zaW9uLXBhbmVsLWhlYWRlci5jZGstcHJvZ3JhbS1mb2N1c2VkW19uZ2NvbnRlbnQtJUNPTVAlXTpub3QoW2FyaWEtZGlzYWJsZWQ9dHJ1ZV0pLCAubWF0LWV4cGFuc2lvbi1wYW5lbFtfbmdjb250ZW50LSVDT01QJV06bm90KC5tYXQtZXhwYW5kZWQpICAgLm1hdC1leHBhbnNpb24tcGFuZWwtaGVhZGVyW19uZ2NvbnRlbnQtJUNPTVAlXTpob3Zlcjpub3QoW2FyaWEtZGlzYWJsZWQ9dHJ1ZV0pe2JhY2tncm91bmQ6cmdiYSgwLDAsMCwuMDQpfUBtZWRpYShob3Zlcjogbm9uZSl7Lm1hdC1leHBhbnNpb24tcGFuZWxbX25nY29udGVudC0lQ09NUCVdOm5vdCgubWF0LWV4cGFuZGVkKTpub3QoW2FyaWEtZGlzYWJsZWQ9dHJ1ZV0pICAgLm1hdC1leHBhbnNpb24tcGFuZWwtaGVhZGVyW19uZ2NvbnRlbnQtJUNPTVAlXTpob3ZlcntiYWNrZ3JvdW5kOiNmZmZ9fS5tYXQtZXhwYW5zaW9uLXBhbmVsLWhlYWRlci10aXRsZVtfbmdjb250ZW50LSVDT01QJV17Y29sb3I6IzIxMjEyMX0ubWF0LWV4cGFuc2lvbi1wYW5lbC1oZWFkZXItZGVzY3JpcHRpb25bX25nY29udGVudC0lQ09NUCVdLCAubWF0LWV4cGFuc2lvbi1pbmRpY2F0b3JbX25nY29udGVudC0lQ09NUCVdOjphZnRlcntjb2xvcjojNjE2MTYxfS5tYXQtZXhwYW5zaW9uLXBhbmVsLWhlYWRlclthcmlhLWRpc2FibGVkPXRydWVdW19uZ2NvbnRlbnQtJUNPTVAlXXtjb2xvcjpyZ2JhKDAsMCwwLC4yNil9Lm1hdC1leHBhbnNpb24tcGFuZWwtaGVhZGVyW2FyaWEtZGlzYWJsZWQ9dHJ1ZV1bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1leHBhbnNpb24tcGFuZWwtaGVhZGVyLXRpdGxlW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1leHBhbnNpb24tcGFuZWwtaGVhZGVyW2FyaWEtZGlzYWJsZWQ9dHJ1ZV1bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1leHBhbnNpb24tcGFuZWwtaGVhZGVyLWRlc2NyaXB0aW9uW19uZ2NvbnRlbnQtJUNPTVAlXXtjb2xvcjppbmhlcml0fS5tYXQtZXhwYW5zaW9uLXBhbmVsLWhlYWRlcltfbmdjb250ZW50LSVDT01QJV17aGVpZ2h0OjQ4cHh9Lm1hdC1leHBhbnNpb24tcGFuZWwtaGVhZGVyLm1hdC1leHBhbmRlZFtfbmdjb250ZW50LSVDT01QJV17aGVpZ2h0OjY0cHh9Lm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXtjb2xvcjpyZ2JhKDk3LDk3LDk3LC42KX0ubWF0LWhpbnRbX25nY29udGVudC0lQ09NUCVde2NvbG9yOnJnYmEoOTcsOTcsOTcsLjYpfS5tYXQtZm9ybS1maWVsZC5tYXQtZm9jdXNlZFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVde2NvbG9yOiNmNTdjMDB9Lm1hdC1mb3JtLWZpZWxkLm1hdC1mb2N1c2VkW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbC5tYXQtYWNjZW50W19uZ2NvbnRlbnQtJUNPTVAlXXtjb2xvcjojZmY5ODAwfS5tYXQtZm9ybS1maWVsZC5tYXQtZm9jdXNlZFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWwubWF0LXdhcm5bX25nY29udGVudC0lQ09NUCVde2NvbG9yOiNmNDQzMzZ9Lm1hdC1mb2N1c2VkW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1yZXF1aXJlZC1tYXJrZXJbX25nY29udGVudC0lQ09NUCVde2NvbG9yOiNmZjk4MDB9Lm1hdC1mb3JtLWZpZWxkLXJpcHBsZVtfbmdjb250ZW50LSVDT01QJV17YmFja2dyb3VuZC1jb2xvcjpyZ2JhKDAsMCwwLC44Nyl9Lm1hdC1mb3JtLWZpZWxkLm1hdC1mb2N1c2VkW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1yaXBwbGVbX25nY29udGVudC0lQ09NUCVde2JhY2tncm91bmQtY29sb3I6I2Y1N2MwMH0ubWF0LWZvcm0tZmllbGQubWF0LWZvY3VzZWRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLXJpcHBsZS5tYXQtYWNjZW50W19uZ2NvbnRlbnQtJUNPTVAlXXtiYWNrZ3JvdW5kLWNvbG9yOiNmZjk4MDB9Lm1hdC1mb3JtLWZpZWxkLm1hdC1mb2N1c2VkW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1yaXBwbGUubWF0LXdhcm5bX25nY29udGVudC0lQ09NUCVde2JhY2tncm91bmQtY29sb3I6I2Y0NDMzNn0ubWF0LWZvcm0tZmllbGQtdHlwZS1tYXQtbmF0aXZlLXNlbGVjdC5tYXQtZm9jdXNlZFtfbmdjb250ZW50LSVDT01QJV06bm90KC5tYXQtZm9ybS1maWVsZC1pbnZhbGlkKSAgIC5tYXQtZm9ybS1maWVsZC1pbmZpeFtfbmdjb250ZW50LSVDT01QJV06OmFmdGVye2NvbG9yOiNmNTdjMDB9Lm1hdC1mb3JtLWZpZWxkLXR5cGUtbWF0LW5hdGl2ZS1zZWxlY3QubWF0LWZvY3VzZWRbX25nY29udGVudC0lQ09NUCVdOm5vdCgubWF0LWZvcm0tZmllbGQtaW52YWxpZCkubWF0LWFjY2VudCAgIC5tYXQtZm9ybS1maWVsZC1pbmZpeFtfbmdjb250ZW50LSVDT01QJV06OmFmdGVye2NvbG9yOiNmZjk4MDB9Lm1hdC1mb3JtLWZpZWxkLXR5cGUtbWF0LW5hdGl2ZS1zZWxlY3QubWF0LWZvY3VzZWRbX25nY29udGVudC0lQ09NUCVdOm5vdCgubWF0LWZvcm0tZmllbGQtaW52YWxpZCkubWF0LXdhcm4gICAubWF0LWZvcm0tZmllbGQtaW5maXhbX25nY29udGVudC0lQ09NUCVdOjphZnRlcntjb2xvcjojZjQ0MzM2fS5tYXQtZm9ybS1maWVsZC5tYXQtZm9ybS1maWVsZC1pbnZhbGlkW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17Y29sb3I6I2Y0NDMzNn0ubWF0LWZvcm0tZmllbGQubWF0LWZvcm0tZmllbGQtaW52YWxpZFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWwubWF0LWFjY2VudFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtZm9ybS1maWVsZC5tYXQtZm9ybS1maWVsZC1pbnZhbGlkW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtcmVxdWlyZWQtbWFya2VyW19uZ2NvbnRlbnQtJUNPTVAlXXtjb2xvcjojZjQ0MzM2fS5tYXQtZm9ybS1maWVsZC5tYXQtZm9ybS1maWVsZC1pbnZhbGlkW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1yaXBwbGVbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWZvcm0tZmllbGQubWF0LWZvcm0tZmllbGQtaW52YWxpZFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtcmlwcGxlLm1hdC1hY2NlbnRbX25nY29udGVudC0lQ09NUCVde2JhY2tncm91bmQtY29sb3I6I2Y0NDMzNn0ubWF0LWVycm9yW19uZ2NvbnRlbnQtJUNPTVAlXXtjb2xvcjojZjQ0MzM2fS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWxlZ2FjeVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVde2NvbG9yOiM2MTYxNjF9Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtbGVnYWN5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaGludFtfbmdjb250ZW50LSVDT01QJV17Y29sb3I6IzYxNjE2MX0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1sZWdhY3lbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLXVuZGVybGluZVtfbmdjb250ZW50LSVDT01QJV17YmFja2dyb3VuZC1jb2xvcjpyZ2JhKDAsMCwwLC40Mil9Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtbGVnYWN5Lm1hdC1mb3JtLWZpZWxkLWRpc2FibGVkW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC11bmRlcmxpbmVbX25nY29udGVudC0lQ09NUCVde2JhY2tncm91bmQtaW1hZ2U6bGluZWFyLWdyYWRpZW50KHRvIHJpZ2h0LCByZ2JhKDAsIDAsIDAsIDAuNDIpIDAlLCByZ2JhKDAsIDAsIDAsIDAuNDIpIDMzJSwgdHJhbnNwYXJlbnQgMCUpO2JhY2tncm91bmQtc2l6ZTo0cHggMTAwJTtiYWNrZ3JvdW5kLXJlcGVhdDpyZXBlYXQteH0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1zdGFuZGFyZFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtdW5kZXJsaW5lW19uZ2NvbnRlbnQtJUNPTVAlXXtiYWNrZ3JvdW5kLWNvbG9yOnJnYmEoMCwwLDAsLjQyKX0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1zdGFuZGFyZC5tYXQtZm9ybS1maWVsZC1kaXNhYmxlZFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtdW5kZXJsaW5lW19uZ2NvbnRlbnQtJUNPTVAlXXtiYWNrZ3JvdW5kLWltYWdlOmxpbmVhci1ncmFkaWVudCh0byByaWdodCwgcmdiYSgwLCAwLCAwLCAwLjQyKSAwJSwgcmdiYSgwLCAwLCAwLCAwLjQyKSAzMyUsIHRyYW5zcGFyZW50IDAlKTtiYWNrZ3JvdW5kLXNpemU6NHB4IDEwMCU7YmFja2dyb3VuZC1yZXBlYXQ6cmVwZWF0LXh9Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtZmlsbFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtZmxleFtfbmdjb250ZW50LSVDT01QJV17YmFja2dyb3VuZC1jb2xvcjpyZ2JhKDAsMCwwLC4wNCl9Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtZmlsbC5tYXQtZm9ybS1maWVsZC1kaXNhYmxlZFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtZmxleFtfbmdjb250ZW50LSVDT01QJV17YmFja2dyb3VuZC1jb2xvcjpyZ2JhKDAsMCwwLC4wMil9Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtZmlsbFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtdW5kZXJsaW5lW19uZ2NvbnRlbnQtJUNPTVAlXTo6YmVmb3Jle2JhY2tncm91bmQtY29sb3I6cmdiYSgwLDAsMCwuNDIpfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWZpbGwubWF0LWZvcm0tZmllbGQtZGlzYWJsZWRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXtjb2xvcjojNzU3NTc1fS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWZpbGwubWF0LWZvcm0tZmllbGQtZGlzYWJsZWRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLXVuZGVybGluZVtfbmdjb250ZW50LSVDT01QJV06OmJlZm9yZXtiYWNrZ3JvdW5kLWNvbG9yOnRyYW5zcGFyZW50fS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLW91dGxpbmVbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLW91dGxpbmVbX25nY29udGVudC0lQ09NUCVde2NvbG9yOnJnYmEoMCwwLDAsLjEyKX0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1vdXRsaW5lW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1vdXRsaW5lLXRoaWNrW19uZ2NvbnRlbnQtJUNPTVAlXXtjb2xvcjpyZ2JhKDAsMCwwLC44Nyl9Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2Utb3V0bGluZS5tYXQtZm9jdXNlZFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtb3V0bGluZS10aGlja1tfbmdjb250ZW50LSVDT01QJV17Y29sb3I6I2Y1N2MwMH0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1vdXRsaW5lLm1hdC1mb2N1c2VkLm1hdC1hY2NlbnRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLW91dGxpbmUtdGhpY2tbX25nY29udGVudC0lQ09NUCVde2NvbG9yOiNmZjk4MDB9Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2Utb3V0bGluZS5tYXQtZm9jdXNlZC5tYXQtd2Fybltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtb3V0bGluZS10aGlja1tfbmdjb250ZW50LSVDT01QJV17Y29sb3I6I2Y0NDMzNn0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1vdXRsaW5lLm1hdC1mb3JtLWZpZWxkLWludmFsaWQubWF0LWZvcm0tZmllbGQtaW52YWxpZFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtb3V0bGluZS10aGlja1tfbmdjb250ZW50LSVDT01QJV17Y29sb3I6I2Y0NDMzNn0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1vdXRsaW5lLm1hdC1mb3JtLWZpZWxkLWRpc2FibGVkW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17Y29sb3I6Izc1NzU3NX0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1vdXRsaW5lLm1hdC1mb3JtLWZpZWxkLWRpc2FibGVkW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1vdXRsaW5lW19uZ2NvbnRlbnQtJUNPTVAlXXtjb2xvcjpyZ2JhKDAsMCwwLC4wNil9Lm1hdC1pY29uLm1hdC1wcmltYXJ5W19uZ2NvbnRlbnQtJUNPTVAlXXtjb2xvcjojZjU3YzAwfS5tYXQtaWNvbi5tYXQtYWNjZW50W19uZ2NvbnRlbnQtJUNPTVAlXXtjb2xvcjojZmY5ODAwfS5tYXQtaWNvbi5tYXQtd2Fybltfbmdjb250ZW50LSVDT01QJV17Y29sb3I6I2Y0NDMzNn0ubWF0LWZvcm0tZmllbGQtdHlwZS1tYXQtbmF0aXZlLXNlbGVjdFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtaW5maXhbX25nY29udGVudC0lQ09NUCVdOjphZnRlcntjb2xvcjojNjE2MTYxfS5tYXQtaW5wdXQtZWxlbWVudFtfbmdjb250ZW50LSVDT01QJV06ZGlzYWJsZWQsIC5tYXQtZm9ybS1maWVsZC10eXBlLW1hdC1uYXRpdmUtc2VsZWN0Lm1hdC1mb3JtLWZpZWxkLWRpc2FibGVkW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1pbmZpeFtfbmdjb250ZW50LSVDT01QJV06OmFmdGVye2NvbG9yOiM3NTc1NzV9Lm1hdC1pbnB1dC1lbGVtZW50W19uZ2NvbnRlbnQtJUNPTVAlXXtjYXJldC1jb2xvcjojZjU3YzAwfS5tYXQtaW5wdXQtZWxlbWVudFtfbmdjb250ZW50LSVDT01QJV06OnBsYWNlaG9sZGVye2NvbG9yOnJnYmEoOTcsOTcsOTcsLjQyKX0ubWF0LWlucHV0LWVsZW1lbnRbX25nY29udGVudC0lQ09NUCVdOjotbW96LXBsYWNlaG9sZGVye2NvbG9yOnJnYmEoOTcsOTcsOTcsLjQyKX0ubWF0LWlucHV0LWVsZW1lbnRbX25nY29udGVudC0lQ09NUCVdOjotd2Via2l0LWlucHV0LXBsYWNlaG9sZGVye2NvbG9yOnJnYmEoOTcsOTcsOTcsLjQyKX0ubWF0LWlucHV0LWVsZW1lbnRbX25nY29udGVudC0lQ09NUCVdOi1tcy1pbnB1dC1wbGFjZWhvbGRlcntjb2xvcjpyZ2JhKDk3LDk3LDk3LC40Mil9Lm1hdC1mb3JtLWZpZWxkLm1hdC1hY2NlbnRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pbnB1dC1lbGVtZW50W19uZ2NvbnRlbnQtJUNPTVAlXXtjYXJldC1jb2xvcjojZmY5ODAwfS5tYXQtZm9ybS1maWVsZC5tYXQtd2Fybltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWlucHV0LWVsZW1lbnRbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWZvcm0tZmllbGQtaW52YWxpZFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWlucHV0LWVsZW1lbnRbX25nY29udGVudC0lQ09NUCVde2NhcmV0LWNvbG9yOiNmNDQzMzZ9Lm1hdC1mb3JtLWZpZWxkLXR5cGUtbWF0LW5hdGl2ZS1zZWxlY3QubWF0LWZvcm0tZmllbGQtaW52YWxpZFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtaW5maXhbX25nY29udGVudC0lQ09NUCVdOjphZnRlcntjb2xvcjojZjQ0MzM2fS5tYXQtbGlzdC1iYXNlW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGlzdC1pdGVtW19uZ2NvbnRlbnQtJUNPTVAlXXtjb2xvcjojMjEyMTIxfS5tYXQtbGlzdC1iYXNlW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGlzdC1vcHRpb25bX25nY29udGVudC0lQ09NUCVde2NvbG9yOiMyMTIxMjF9Lm1hdC1saXN0LWJhc2VbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1zdWJoZWFkZXJbX25nY29udGVudC0lQ09NUCVde2NvbG9yOiM2MTYxNjF9Lm1hdC1saXN0LWl0ZW0tZGlzYWJsZWRbX25nY29udGVudC0lQ09NUCVde2JhY2tncm91bmQtY29sb3I6I2VlZX0ubWF0LWxpc3Qtb3B0aW9uW19uZ2NvbnRlbnQtJUNPTVAlXTpob3ZlciwgLm1hdC1saXN0LW9wdGlvbltfbmdjb250ZW50LSVDT01QJV06Zm9jdXMsIC5tYXQtbmF2LWxpc3RbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saXN0LWl0ZW1bX25nY29udGVudC0lQ09NUCVdOmhvdmVyLCAubWF0LW5hdi1saXN0W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGlzdC1pdGVtW19uZ2NvbnRlbnQtJUNPTVAlXTpmb2N1cywgLm1hdC1hY3Rpb24tbGlzdFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpc3QtaXRlbVtfbmdjb250ZW50LSVDT01QJV06aG92ZXIsIC5tYXQtYWN0aW9uLWxpc3RbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saXN0LWl0ZW1bX25nY29udGVudC0lQ09NUCVdOmZvY3Vze2JhY2tncm91bmQ6cmdiYSgwLDAsMCwuMDQpfS5tYXQtbGlzdC1zaW5nbGUtc2VsZWN0ZWQtb3B0aW9uW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1saXN0LXNpbmdsZS1zZWxlY3RlZC1vcHRpb25bX25nY29udGVudC0lQ09NUCVdOmhvdmVyLCAubWF0LWxpc3Qtc2luZ2xlLXNlbGVjdGVkLW9wdGlvbltfbmdjb250ZW50LSVDT01QJV06Zm9jdXN7YmFja2dyb3VuZDpyZ2JhKDAsMCwwLC4xMil9Lm1hdC1tZW51LXBhbmVsW19uZ2NvbnRlbnQtJUNPTVAlXXtiYWNrZ3JvdW5kOiNmZmZ9Lm1hdC1tZW51LXBhbmVsW19uZ2NvbnRlbnQtJUNPTVAlXTpub3QoW2NsYXNzKj1tYXQtZWxldmF0aW9uLXpdKXtib3gtc2hhZG93OjBweCAycHggNHB4IC0xcHggcmdiYSgwLCAwLCAwLCAwLjIpLDBweCA0cHggNXB4IDBweCByZ2JhKDAsIDAsIDAsIDAuMTQpLDBweCAxcHggMTBweCAwcHggcmdiYSgwLCAwLCAwLCAwLjEyKX0ubWF0LW1lbnUtaXRlbVtfbmdjb250ZW50LSVDT01QJV17YmFja2dyb3VuZDp0cmFuc3BhcmVudDtjb2xvcjojMjEyMTIxfS5tYXQtbWVudS1pdGVtW2Rpc2FibGVkXVtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtbWVudS1pdGVtW2Rpc2FibGVkXVtfbmdjb250ZW50LSVDT01QJV06OmFmdGVye2NvbG9yOnJnYmEoMCwwLDAsLjM4KX0ubWF0LW1lbnUtaXRlbVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWljb24tbm8tY29sb3JbX25nY29udGVudC0lQ09NUCVdLCAubWF0LW1lbnUtaXRlbS1zdWJtZW51LXRyaWdnZXJbX25nY29udGVudC0lQ09NUCVdOjphZnRlcntjb2xvcjpyZ2JhKDAsMCwwLC41NCl9Lm1hdC1tZW51LWl0ZW1bX25nY29udGVudC0lQ09NUCVdOmhvdmVyOm5vdChbZGlzYWJsZWRdKSwgLm1hdC1tZW51LWl0ZW0uY2RrLXByb2dyYW0tZm9jdXNlZFtfbmdjb250ZW50LSVDT01QJV06bm90KFtkaXNhYmxlZF0pLCAubWF0LW1lbnUtaXRlbS5jZGsta2V5Ym9hcmQtZm9jdXNlZFtfbmdjb250ZW50LSVDT01QJV06bm90KFtkaXNhYmxlZF0pLCAubWF0LW1lbnUtaXRlbS1oaWdobGlnaHRlZFtfbmdjb250ZW50LSVDT01QJV06bm90KFtkaXNhYmxlZF0pe2JhY2tncm91bmQ6cmdiYSgwLDAsMCwuMDQpfS5tYXQtcGFnaW5hdG9yW19uZ2NvbnRlbnQtJUNPTVAlXXtiYWNrZ3JvdW5kOiNmZmZ9Lm1hdC1wYWdpbmF0b3JbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXBhZ2luYXRvci1wYWdlLXNpemVbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1zZWxlY3QtdHJpZ2dlcltfbmdjb250ZW50LSVDT01QJV17Y29sb3I6IzYxNjE2MX0ubWF0LXBhZ2luYXRvci1kZWNyZW1lbnRbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXBhZ2luYXRvci1pbmNyZW1lbnRbX25nY29udGVudC0lQ09NUCVde2JvcmRlci10b3A6MnB4IHNvbGlkIHJnYmEoMCwwLDAsLjU0KTtib3JkZXItcmlnaHQ6MnB4IHNvbGlkIHJnYmEoMCwwLDAsLjU0KX0ubWF0LXBhZ2luYXRvci1maXJzdFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtcGFnaW5hdG9yLWxhc3RbX25nY29udGVudC0lQ09NUCVde2JvcmRlci10b3A6MnB4IHNvbGlkIHJnYmEoMCwwLDAsLjU0KX0ubWF0LWljb24tYnV0dG9uW2Rpc2FibGVkXVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXBhZ2luYXRvci1kZWNyZW1lbnRbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWljb24tYnV0dG9uW2Rpc2FibGVkXVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXBhZ2luYXRvci1pbmNyZW1lbnRbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWljb24tYnV0dG9uW2Rpc2FibGVkXVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXBhZ2luYXRvci1maXJzdFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtaWNvbi1idXR0b25bZGlzYWJsZWRdW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtcGFnaW5hdG9yLWxhc3RbX25nY29udGVudC0lQ09NUCVde2JvcmRlci1jb2xvcjpyZ2JhKDAsMCwwLC4zOCl9Lm1hdC1wYWdpbmF0b3ItY29udGFpbmVyW19uZ2NvbnRlbnQtJUNPTVAlXXttaW4taGVpZ2h0OjU2cHh9Lm1hdC1wcm9ncmVzcy1iYXItYmFja2dyb3VuZFtfbmdjb250ZW50LSVDT01QJV17ZmlsbDojZmY5ODAwfS5tYXQtcHJvZ3Jlc3MtYmFyLWJ1ZmZlcltfbmdjb250ZW50LSVDT01QJV17YmFja2dyb3VuZC1jb2xvcjojZmY5ODAwfS5tYXQtcHJvZ3Jlc3MtYmFyLWZpbGxbX25nY29udGVudC0lQ09NUCVdOjphZnRlcntiYWNrZ3JvdW5kLWNvbG9yOiNmNTdjMDB9Lm1hdC1wcm9ncmVzcy1iYXIubWF0LWFjY2VudFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXByb2dyZXNzLWJhci1iYWNrZ3JvdW5kW19uZ2NvbnRlbnQtJUNPTVAlXXtmaWxsOiNmZjk4MDB9Lm1hdC1wcm9ncmVzcy1iYXIubWF0LWFjY2VudFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXByb2dyZXNzLWJhci1idWZmZXJbX25nY29udGVudC0lQ09NUCVde2JhY2tncm91bmQtY29sb3I6I2ZmOTgwMH0ubWF0LXByb2dyZXNzLWJhci5tYXQtYWNjZW50W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtcHJvZ3Jlc3MtYmFyLWZpbGxbX25nY29udGVudC0lQ09NUCVdOjphZnRlcntiYWNrZ3JvdW5kLWNvbG9yOiNmZjk4MDB9Lm1hdC1wcm9ncmVzcy1iYXIubWF0LXdhcm5bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1wcm9ncmVzcy1iYXItYmFja2dyb3VuZFtfbmdjb250ZW50LSVDT01QJV17ZmlsbDojZmZjZGQyfS5tYXQtcHJvZ3Jlc3MtYmFyLm1hdC13YXJuW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtcHJvZ3Jlc3MtYmFyLWJ1ZmZlcltfbmdjb250ZW50LSVDT01QJV17YmFja2dyb3VuZC1jb2xvcjojZmZjZGQyfS5tYXQtcHJvZ3Jlc3MtYmFyLm1hdC13YXJuW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtcHJvZ3Jlc3MtYmFyLWZpbGxbX25nY29udGVudC0lQ09NUCVdOjphZnRlcntiYWNrZ3JvdW5kLWNvbG9yOiNmNDQzMzZ9Lm1hdC1wcm9ncmVzcy1zcGlubmVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIGNpcmNsZVtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtc3Bpbm5lcltfbmdjb250ZW50LSVDT01QJV0gICBjaXJjbGVbX25nY29udGVudC0lQ09NUCVde3N0cm9rZTojZjU3YzAwfS5tYXQtcHJvZ3Jlc3Mtc3Bpbm5lci5tYXQtYWNjZW50W19uZ2NvbnRlbnQtJUNPTVAlXSAgIGNpcmNsZVtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtc3Bpbm5lci5tYXQtYWNjZW50W19uZ2NvbnRlbnQtJUNPTVAlXSAgIGNpcmNsZVtfbmdjb250ZW50LSVDT01QJV17c3Ryb2tlOiNmZjk4MDB9Lm1hdC1wcm9ncmVzcy1zcGlubmVyLm1hdC13YXJuW19uZ2NvbnRlbnQtJUNPTVAlXSAgIGNpcmNsZVtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtc3Bpbm5lci5tYXQtd2Fybltfbmdjb250ZW50LSVDT01QJV0gICBjaXJjbGVbX25nY29udGVudC0lQ09NUCVde3N0cm9rZTojZjQ0MzM2fS5tYXQtcmFkaW8tb3V0ZXItY2lyY2xlW19uZ2NvbnRlbnQtJUNPTVAlXXtib3JkZXItY29sb3I6IzYxNjE2MX0ubWF0LXJhZGlvLWJ1dHRvbi5tYXQtcHJpbWFyeS5tYXQtcmFkaW8tY2hlY2tlZFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXJhZGlvLW91dGVyLWNpcmNsZVtfbmdjb250ZW50LSVDT01QJV17Ym9yZGVyLWNvbG9yOiNmNTdjMDB9Lm1hdC1yYWRpby1idXR0b24ubWF0LXByaW1hcnlbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1yYWRpby1pbm5lci1jaXJjbGVbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXJhZGlvLWJ1dHRvbi5tYXQtcHJpbWFyeVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXJhZGlvLXJpcHBsZVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXJpcHBsZS1lbGVtZW50W19uZ2NvbnRlbnQtJUNPTVAlXTpub3QoLm1hdC1yYWRpby1wZXJzaXN0ZW50LXJpcHBsZSksIC5tYXQtcmFkaW8tYnV0dG9uLm1hdC1wcmltYXJ5Lm1hdC1yYWRpby1jaGVja2VkW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtcmFkaW8tcGVyc2lzdGVudC1yaXBwbGVbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXJhZGlvLWJ1dHRvbi5tYXQtcHJpbWFyeVtfbmdjb250ZW50LSVDT01QJV06YWN0aXZlICAgLm1hdC1yYWRpby1wZXJzaXN0ZW50LXJpcHBsZVtfbmdjb250ZW50LSVDT01QJV17YmFja2dyb3VuZC1jb2xvcjojZjU3YzAwfS5tYXQtcmFkaW8tYnV0dG9uLm1hdC1hY2NlbnQubWF0LXJhZGlvLWNoZWNrZWRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1yYWRpby1vdXRlci1jaXJjbGVbX25nY29udGVudC0lQ09NUCVde2JvcmRlci1jb2xvcjojZmY5ODAwfS5tYXQtcmFkaW8tYnV0dG9uLm1hdC1hY2NlbnRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1yYWRpby1pbm5lci1jaXJjbGVbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXJhZGlvLWJ1dHRvbi5tYXQtYWNjZW50W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtcmFkaW8tcmlwcGxlW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtcmlwcGxlLWVsZW1lbnRbX25nY29udGVudC0lQ09NUCVdOm5vdCgubWF0LXJhZGlvLXBlcnNpc3RlbnQtcmlwcGxlKSwgLm1hdC1yYWRpby1idXR0b24ubWF0LWFjY2VudC5tYXQtcmFkaW8tY2hlY2tlZFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXJhZGlvLXBlcnNpc3RlbnQtcmlwcGxlW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1yYWRpby1idXR0b24ubWF0LWFjY2VudFtfbmdjb250ZW50LSVDT01QJV06YWN0aXZlICAgLm1hdC1yYWRpby1wZXJzaXN0ZW50LXJpcHBsZVtfbmdjb250ZW50LSVDT01QJV17YmFja2dyb3VuZC1jb2xvcjojZmY5ODAwfS5tYXQtcmFkaW8tYnV0dG9uLm1hdC13YXJuLm1hdC1yYWRpby1jaGVja2VkW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtcmFkaW8tb3V0ZXItY2lyY2xlW19uZ2NvbnRlbnQtJUNPTVAlXXtib3JkZXItY29sb3I6I2Y0NDMzNn0ubWF0LXJhZGlvLWJ1dHRvbi5tYXQtd2Fybltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXJhZGlvLWlubmVyLWNpcmNsZVtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtcmFkaW8tYnV0dG9uLm1hdC13YXJuW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtcmFkaW8tcmlwcGxlW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtcmlwcGxlLWVsZW1lbnRbX25nY29udGVudC0lQ09NUCVdOm5vdCgubWF0LXJhZGlvLXBlcnNpc3RlbnQtcmlwcGxlKSwgLm1hdC1yYWRpby1idXR0b24ubWF0LXdhcm4ubWF0LXJhZGlvLWNoZWNrZWRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1yYWRpby1wZXJzaXN0ZW50LXJpcHBsZVtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtcmFkaW8tYnV0dG9uLm1hdC13YXJuW19uZ2NvbnRlbnQtJUNPTVAlXTphY3RpdmUgICAubWF0LXJhZGlvLXBlcnNpc3RlbnQtcmlwcGxlW19uZ2NvbnRlbnQtJUNPTVAlXXtiYWNrZ3JvdW5kLWNvbG9yOiNmNDQzMzZ9Lm1hdC1yYWRpby1idXR0b24ubWF0LXJhZGlvLWRpc2FibGVkLm1hdC1yYWRpby1jaGVja2VkW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtcmFkaW8tb3V0ZXItY2lyY2xlW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1yYWRpby1idXR0b24ubWF0LXJhZGlvLWRpc2FibGVkW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtcmFkaW8tb3V0ZXItY2lyY2xlW19uZ2NvbnRlbnQtJUNPTVAlXXtib3JkZXItY29sb3I6cmdiYSgwLDAsMCwuMzgpfS5tYXQtcmFkaW8tYnV0dG9uLm1hdC1yYWRpby1kaXNhYmxlZFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXJhZGlvLXJpcHBsZVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXJpcHBsZS1lbGVtZW50W19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1yYWRpby1idXR0b24ubWF0LXJhZGlvLWRpc2FibGVkW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtcmFkaW8taW5uZXItY2lyY2xlW19uZ2NvbnRlbnQtJUNPTVAlXXtiYWNrZ3JvdW5kLWNvbG9yOnJnYmEoMCwwLDAsLjM4KX0ubWF0LXJhZGlvLWJ1dHRvbi5tYXQtcmFkaW8tZGlzYWJsZWRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1yYWRpby1sYWJlbC1jb250ZW50W19uZ2NvbnRlbnQtJUNPTVAlXXtjb2xvcjpyZ2JhKDAsMCwwLC4zOCl9Lm1hdC1yYWRpby1idXR0b25bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1yaXBwbGUtZWxlbWVudFtfbmdjb250ZW50LSVDT01QJV17YmFja2dyb3VuZC1jb2xvcjojMDAwfS5tYXQtc2VsZWN0LXZhbHVlW19uZ2NvbnRlbnQtJUNPTVAlXXtjb2xvcjojMjEyMTIxfS5tYXQtc2VsZWN0LXBsYWNlaG9sZGVyW19uZ2NvbnRlbnQtJUNPTVAlXXtjb2xvcjpyZ2JhKDk3LDk3LDk3LC40Mil9Lm1hdC1zZWxlY3QtZGlzYWJsZWRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1zZWxlY3QtdmFsdWVbX25nY29udGVudC0lQ09NUCVde2NvbG9yOiM3NTc1NzV9Lm1hdC1zZWxlY3QtYXJyb3dbX25nY29udGVudC0lQ09NUCVde2NvbG9yOiM2MTYxNjF9Lm1hdC1zZWxlY3QtcGFuZWxbX25nY29udGVudC0lQ09NUCVde2JhY2tncm91bmQ6I2ZmZn0ubWF0LXNlbGVjdC1wYW5lbFtfbmdjb250ZW50LSVDT01QJV06bm90KFtjbGFzcyo9bWF0LWVsZXZhdGlvbi16XSl7Ym94LXNoYWRvdzowcHggMnB4IDRweCAtMXB4IHJnYmEoMCwgMCwgMCwgMC4yKSwwcHggNHB4IDVweCAwcHggcmdiYSgwLCAwLCAwLCAwLjE0KSwwcHggMXB4IDEwcHggMHB4IHJnYmEoMCwgMCwgMCwgMC4xMil9Lm1hdC1zZWxlY3QtcGFuZWxbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1vcHRpb24ubWF0LXNlbGVjdGVkW19uZ2NvbnRlbnQtJUNPTVAlXTpub3QoLm1hdC1vcHRpb24tbXVsdGlwbGUpe2JhY2tncm91bmQ6cmdiYSgwLDAsMCwuMTIpfS5tYXQtZm9ybS1maWVsZC5tYXQtZm9jdXNlZC5tYXQtcHJpbWFyeVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXNlbGVjdC1hcnJvd1tfbmdjb250ZW50LSVDT01QJV17Y29sb3I6I2Y1N2MwMH0ubWF0LWZvcm0tZmllbGQubWF0LWZvY3VzZWQubWF0LWFjY2VudFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXNlbGVjdC1hcnJvd1tfbmdjb250ZW50LSVDT01QJV17Y29sb3I6I2ZmOTgwMH0ubWF0LWZvcm0tZmllbGQubWF0LWZvY3VzZWQubWF0LXdhcm5bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1zZWxlY3QtYXJyb3dbX25nY29udGVudC0lQ09NUCVde2NvbG9yOiNmNDQzMzZ9Lm1hdC1mb3JtLWZpZWxkW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtc2VsZWN0Lm1hdC1zZWxlY3QtaW52YWxpZFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXNlbGVjdC1hcnJvd1tfbmdjb250ZW50LSVDT01QJV17Y29sb3I6I2Y0NDMzNn0ubWF0LWZvcm0tZmllbGRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1zZWxlY3QubWF0LXNlbGVjdC1kaXNhYmxlZFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXNlbGVjdC1hcnJvd1tfbmdjb250ZW50LSVDT01QJV17Y29sb3I6Izc1NzU3NX0ubWF0LWRyYXdlci1jb250YWluZXJbX25nY29udGVudC0lQ09NUCVde2JhY2tncm91bmQtY29sb3I6I2ZhZmFmYTtjb2xvcjojMjEyMTIxfS5tYXQtZHJhd2VyW19uZ2NvbnRlbnQtJUNPTVAlXXtiYWNrZ3JvdW5kLWNvbG9yOiNmZmY7Y29sb3I6IzIxMjEyMX0ubWF0LWRyYXdlci5tYXQtZHJhd2VyLXB1c2hbX25nY29udGVudC0lQ09NUCVde2JhY2tncm91bmQtY29sb3I6I2ZmZn0ubWF0LWRyYXdlcltfbmdjb250ZW50LSVDT01QJV06bm90KC5tYXQtZHJhd2VyLXNpZGUpe2JveC1zaGFkb3c6MHB4IDhweCAxMHB4IC01cHggcmdiYSgwLCAwLCAwLCAwLjIpLDBweCAxNnB4IDI0cHggMnB4IHJnYmEoMCwgMCwgMCwgMC4xNCksMHB4IDZweCAzMHB4IDVweCByZ2JhKDAsIDAsIDAsIDAuMTIpfS5tYXQtZHJhd2VyLXNpZGVbX25nY29udGVudC0lQ09NUCVde2JvcmRlci1yaWdodDpzb2xpZCAxcHggcmdiYSgwLDAsMCwuMTIpfS5tYXQtZHJhd2VyLXNpZGUubWF0LWRyYXdlci1lbmRbX25nY29udGVudC0lQ09NUCVde2JvcmRlci1sZWZ0OnNvbGlkIDFweCByZ2JhKDAsMCwwLC4xMik7Ym9yZGVyLXJpZ2h0Om5vbmV9W2Rpcj1ydGxdW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZHJhd2VyLXNpZGVbX25nY29udGVudC0lQ09NUCVde2JvcmRlci1sZWZ0OnNvbGlkIDFweCByZ2JhKDAsMCwwLC4xMik7Ym9yZGVyLXJpZ2h0Om5vbmV9W2Rpcj1ydGxdW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZHJhd2VyLXNpZGUubWF0LWRyYXdlci1lbmRbX25nY29udGVudC0lQ09NUCVde2JvcmRlci1sZWZ0Om5vbmU7Ym9yZGVyLXJpZ2h0OnNvbGlkIDFweCByZ2JhKDAsMCwwLC4xMil9Lm1hdC1kcmF3ZXItYmFja2Ryb3AubWF0LWRyYXdlci1zaG93bltfbmdjb250ZW50LSVDT01QJV17YmFja2dyb3VuZC1jb2xvcjpyZ2JhKDAsMCwwLC42KX0ubWF0LXNsaWRlLXRvZ2dsZS5tYXQtY2hlY2tlZFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXNsaWRlLXRvZ2dsZS10aHVtYltfbmdjb250ZW50LSVDT01QJV17YmFja2dyb3VuZC1jb2xvcjojZmY5ODAwfS5tYXQtc2xpZGUtdG9nZ2xlLm1hdC1jaGVja2VkW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtc2xpZGUtdG9nZ2xlLWJhcltfbmdjb250ZW50LSVDT01QJV17YmFja2dyb3VuZC1jb2xvcjpyZ2JhKDI1NSwxNTIsMCwuNTQpfS5tYXQtc2xpZGUtdG9nZ2xlLm1hdC1jaGVja2VkW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtcmlwcGxlLWVsZW1lbnRbX25nY29udGVudC0lQ09NUCVde2JhY2tncm91bmQtY29sb3I6I2ZmOTgwMH0ubWF0LXNsaWRlLXRvZ2dsZS5tYXQtcHJpbWFyeS5tYXQtY2hlY2tlZFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXNsaWRlLXRvZ2dsZS10aHVtYltfbmdjb250ZW50LSVDT01QJV17YmFja2dyb3VuZC1jb2xvcjojZjU3YzAwfS5tYXQtc2xpZGUtdG9nZ2xlLm1hdC1wcmltYXJ5Lm1hdC1jaGVja2VkW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtc2xpZGUtdG9nZ2xlLWJhcltfbmdjb250ZW50LSVDT01QJV17YmFja2dyb3VuZC1jb2xvcjpyZ2JhKDI0NSwxMjQsMCwuNTQpfS5tYXQtc2xpZGUtdG9nZ2xlLm1hdC1wcmltYXJ5Lm1hdC1jaGVja2VkW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtcmlwcGxlLWVsZW1lbnRbX25nY29udGVudC0lQ09NUCVde2JhY2tncm91bmQtY29sb3I6I2Y1N2MwMH0ubWF0LXNsaWRlLXRvZ2dsZS5tYXQtd2Fybi5tYXQtY2hlY2tlZFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXNsaWRlLXRvZ2dsZS10aHVtYltfbmdjb250ZW50LSVDT01QJV17YmFja2dyb3VuZC1jb2xvcjojZjQ0MzM2fS5tYXQtc2xpZGUtdG9nZ2xlLm1hdC13YXJuLm1hdC1jaGVja2VkW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtc2xpZGUtdG9nZ2xlLWJhcltfbmdjb250ZW50LSVDT01QJV17YmFja2dyb3VuZC1jb2xvcjpyZ2JhKDI0NCw2Nyw1NCwuNTQpfS5tYXQtc2xpZGUtdG9nZ2xlLm1hdC13YXJuLm1hdC1jaGVja2VkW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtcmlwcGxlLWVsZW1lbnRbX25nY29udGVudC0lQ09NUCVde2JhY2tncm91bmQtY29sb3I6I2Y0NDMzNn0ubWF0LXNsaWRlLXRvZ2dsZVtfbmdjb250ZW50LSVDT01QJV06bm90KC5tYXQtY2hlY2tlZCkgICAubWF0LXJpcHBsZS1lbGVtZW50W19uZ2NvbnRlbnQtJUNPTVAlXXtiYWNrZ3JvdW5kLWNvbG9yOiMwMDB9Lm1hdC1zbGlkZS10b2dnbGUtdGh1bWJbX25nY29udGVudC0lQ09NUCVde2JveC1zaGFkb3c6MHB4IDJweCAxcHggLTFweCByZ2JhKDAsIDAsIDAsIDAuMiksMHB4IDFweCAxcHggMHB4IHJnYmEoMCwgMCwgMCwgMC4xNCksMHB4IDFweCAzcHggMHB4IHJnYmEoMCwgMCwgMCwgMC4xMik7YmFja2dyb3VuZC1jb2xvcjojZmFmYWZhfS5tYXQtc2xpZGUtdG9nZ2xlLWJhcltfbmdjb250ZW50LSVDT01QJV17YmFja2dyb3VuZC1jb2xvcjpyZ2JhKDAsMCwwLC4zOCl9Lm1hdC1zbGlkZXItdHJhY2stYmFja2dyb3VuZFtfbmdjb250ZW50LSVDT01QJV17YmFja2dyb3VuZC1jb2xvcjpyZ2JhKDAsMCwwLC4yNil9Lm1hdC1wcmltYXJ5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtc2xpZGVyLXRyYWNrLWZpbGxbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXByaW1hcnlbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1zbGlkZXItdGh1bWJbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXByaW1hcnlbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1zbGlkZXItdGh1bWItbGFiZWxbX25nY29udGVudC0lQ09NUCVde2JhY2tncm91bmQtY29sb3I6I2Y1N2MwMH0ubWF0LXByaW1hcnlbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1zbGlkZXItdGh1bWItbGFiZWwtdGV4dFtfbmdjb250ZW50LSVDT01QJV17Y29sb3I6I2ZmZn0ubWF0LXByaW1hcnlbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1zbGlkZXItZm9jdXMtcmluZ1tfbmdjb250ZW50LSVDT01QJV17YmFja2dyb3VuZC1jb2xvcjpyZ2JhKDI0NSwxMjQsMCwuMil9Lm1hdC1hY2NlbnRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1zbGlkZXItdHJhY2stZmlsbFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtYWNjZW50W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtc2xpZGVyLXRodW1iW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1hY2NlbnRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1zbGlkZXItdGh1bWItbGFiZWxbX25nY29udGVudC0lQ09NUCVde2JhY2tncm91bmQtY29sb3I6I2ZmOTgwMH0ubWF0LWFjY2VudFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXNsaWRlci10aHVtYi1sYWJlbC10ZXh0W19uZ2NvbnRlbnQtJUNPTVAlXXtjb2xvcjojZmZmfS5tYXQtYWNjZW50W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtc2xpZGVyLWZvY3VzLXJpbmdbX25nY29udGVudC0lQ09NUCVde2JhY2tncm91bmQtY29sb3I6cmdiYSgyNTUsMTUyLDAsLjIpfS5tYXQtd2Fybltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXNsaWRlci10cmFjay1maWxsW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC13YXJuW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtc2xpZGVyLXRodW1iW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC13YXJuW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtc2xpZGVyLXRodW1iLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXtiYWNrZ3JvdW5kLWNvbG9yOiNmNDQzMzZ9Lm1hdC13YXJuW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtc2xpZGVyLXRodW1iLWxhYmVsLXRleHRbX25nY29udGVudC0lQ09NUCVde2NvbG9yOiNmZmZ9Lm1hdC13YXJuW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtc2xpZGVyLWZvY3VzLXJpbmdbX25nY29udGVudC0lQ09NUCVde2JhY2tncm91bmQtY29sb3I6cmdiYSgyNDQsNjcsNTQsLjIpfS5tYXQtc2xpZGVyW19uZ2NvbnRlbnQtJUNPTVAlXTpob3ZlciAgIC5tYXQtc2xpZGVyLXRyYWNrLWJhY2tncm91bmRbX25nY29udGVudC0lQ09NUCVdLCAuY2RrLWZvY3VzZWRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1zbGlkZXItdHJhY2stYmFja2dyb3VuZFtfbmdjb250ZW50LSVDT01QJV17YmFja2dyb3VuZC1jb2xvcjpyZ2JhKDAsMCwwLC4zOCl9Lm1hdC1zbGlkZXItZGlzYWJsZWRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1zbGlkZXItdHJhY2stYmFja2dyb3VuZFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtc2xpZGVyLWRpc2FibGVkW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtc2xpZGVyLXRyYWNrLWZpbGxbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXNsaWRlci1kaXNhYmxlZFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXNsaWRlci10aHVtYltfbmdjb250ZW50LSVDT01QJV17YmFja2dyb3VuZC1jb2xvcjpyZ2JhKDAsMCwwLC4yNil9Lm1hdC1zbGlkZXItZGlzYWJsZWRbX25nY29udGVudC0lQ09NUCVdOmhvdmVyICAgLm1hdC1zbGlkZXItdHJhY2stYmFja2dyb3VuZFtfbmdjb250ZW50LSVDT01QJV17YmFja2dyb3VuZC1jb2xvcjpyZ2JhKDAsMCwwLC4yNil9Lm1hdC1zbGlkZXItbWluLXZhbHVlW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtc2xpZGVyLWZvY3VzLXJpbmdbX25nY29udGVudC0lQ09NUCVde2JhY2tncm91bmQtY29sb3I6cmdiYSgwLDAsMCwuMTIpfS5tYXQtc2xpZGVyLW1pbi12YWx1ZS5tYXQtc2xpZGVyLXRodW1iLWxhYmVsLXNob3dpbmdbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1zbGlkZXItdGh1bWJbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXNsaWRlci1taW4tdmFsdWUubWF0LXNsaWRlci10aHVtYi1sYWJlbC1zaG93aW5nW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtc2xpZGVyLXRodW1iLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXtiYWNrZ3JvdW5kLWNvbG9yOnJnYmEoMCwwLDAsLjg3KX0ubWF0LXNsaWRlci1taW4tdmFsdWUubWF0LXNsaWRlci10aHVtYi1sYWJlbC1zaG93aW5nLmNkay1mb2N1c2VkW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtc2xpZGVyLXRodW1iW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1zbGlkZXItbWluLXZhbHVlLm1hdC1zbGlkZXItdGh1bWItbGFiZWwtc2hvd2luZy5jZGstZm9jdXNlZFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXNsaWRlci10aHVtYi1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17YmFja2dyb3VuZC1jb2xvcjpyZ2JhKDAsMCwwLC4yNil9Lm1hdC1zbGlkZXItbWluLXZhbHVlW19uZ2NvbnRlbnQtJUNPTVAlXTpub3QoLm1hdC1zbGlkZXItdGh1bWItbGFiZWwtc2hvd2luZykgICAubWF0LXNsaWRlci10aHVtYltfbmdjb250ZW50LSVDT01QJV17Ym9yZGVyLWNvbG9yOnJnYmEoMCwwLDAsLjI2KTtiYWNrZ3JvdW5kLWNvbG9yOnRyYW5zcGFyZW50fS5tYXQtc2xpZGVyLW1pbi12YWx1ZVtfbmdjb250ZW50LSVDT01QJV06bm90KC5tYXQtc2xpZGVyLXRodW1iLWxhYmVsLXNob3dpbmcpOmhvdmVyICAgLm1hdC1zbGlkZXItdGh1bWJbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXNsaWRlci1taW4tdmFsdWVbX25nY29udGVudC0lQ09NUCVdOm5vdCgubWF0LXNsaWRlci10aHVtYi1sYWJlbC1zaG93aW5nKS5jZGstZm9jdXNlZCAgIC5tYXQtc2xpZGVyLXRodW1iW19uZ2NvbnRlbnQtJUNPTVAlXXtib3JkZXItY29sb3I6cmdiYSgwLDAsMCwuMzgpfS5tYXQtc2xpZGVyLW1pbi12YWx1ZVtfbmdjb250ZW50LSVDT01QJV06bm90KC5tYXQtc2xpZGVyLXRodW1iLWxhYmVsLXNob3dpbmcpOmhvdmVyLm1hdC1zbGlkZXItZGlzYWJsZWQgICAubWF0LXNsaWRlci10aHVtYltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtc2xpZGVyLW1pbi12YWx1ZVtfbmdjb250ZW50LSVDT01QJV06bm90KC5tYXQtc2xpZGVyLXRodW1iLWxhYmVsLXNob3dpbmcpLmNkay1mb2N1c2VkLm1hdC1zbGlkZXItZGlzYWJsZWQgICAubWF0LXNsaWRlci10aHVtYltfbmdjb250ZW50LSVDT01QJV17Ym9yZGVyLWNvbG9yOnJnYmEoMCwwLDAsLjI2KX0ubWF0LXNsaWRlci1oYXMtdGlja3NbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1zbGlkZXItd3JhcHBlcltfbmdjb250ZW50LSVDT01QJV06OmFmdGVye2JvcmRlci1jb2xvcjpyZ2JhKDAsMCwwLC43KX0ubWF0LXNsaWRlci1ob3Jpem9udGFsW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtc2xpZGVyLXRpY2tzW19uZ2NvbnRlbnQtJUNPTVAlXXtiYWNrZ3JvdW5kLWltYWdlOnJlcGVhdGluZy1saW5lYXItZ3JhZGllbnQodG8gcmlnaHQsIHJnYmEoMCwgMCwgMCwgMC43KSwgcmdiYSgwLCAwLCAwLCAwLjcpIDJweCwgdHJhbnNwYXJlbnQgMCwgdHJhbnNwYXJlbnQpO2JhY2tncm91bmQtaW1hZ2U6LW1vei1yZXBlYXRpbmctbGluZWFyLWdyYWRpZW50KDAuMDAwMWRlZywgcmdiYSgwLCAwLCAwLCAwLjcpLCByZ2JhKDAsIDAsIDAsIDAuNykgMnB4LCB0cmFuc3BhcmVudCAwLCB0cmFuc3BhcmVudCl9Lm1hdC1zbGlkZXItdmVydGljYWxbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1zbGlkZXItdGlja3NbX25nY29udGVudC0lQ09NUCVde2JhY2tncm91bmQtaW1hZ2U6cmVwZWF0aW5nLWxpbmVhci1ncmFkaWVudCh0byBib3R0b20sIHJnYmEoMCwgMCwgMCwgMC43KSwgcmdiYSgwLCAwLCAwLCAwLjcpIDJweCwgdHJhbnNwYXJlbnQgMCwgdHJhbnNwYXJlbnQpfS5tYXQtc3RlcC1oZWFkZXIuY2RrLWtleWJvYXJkLWZvY3VzZWRbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXN0ZXAtaGVhZGVyLmNkay1wcm9ncmFtLWZvY3VzZWRbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXN0ZXAtaGVhZGVyW19uZ2NvbnRlbnQtJUNPTVAlXTpob3ZlcntiYWNrZ3JvdW5kLWNvbG9yOnJnYmEoMCwwLDAsLjA0KX1AbWVkaWEoaG92ZXI6IG5vbmUpey5tYXQtc3RlcC1oZWFkZXJbX25nY29udGVudC0lQ09NUCVdOmhvdmVye2JhY2tncm91bmQ6bm9uZX19Lm1hdC1zdGVwLWhlYWRlcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXN0ZXAtbGFiZWxbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXN0ZXAtaGVhZGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtc3RlcC1vcHRpb25hbFtfbmdjb250ZW50LSVDT01QJV17Y29sb3I6IzYxNjE2MX0ubWF0LXN0ZXAtaGVhZGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtc3RlcC1pY29uW19uZ2NvbnRlbnQtJUNPTVAlXXtiYWNrZ3JvdW5kLWNvbG9yOiM2MTYxNjE7Y29sb3I6I2ZmZn0ubWF0LXN0ZXAtaGVhZGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtc3RlcC1pY29uLXNlbGVjdGVkW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1zdGVwLWhlYWRlcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXN0ZXAtaWNvbi1zdGF0ZS1kb25lW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1zdGVwLWhlYWRlcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXN0ZXAtaWNvbi1zdGF0ZS1lZGl0W19uZ2NvbnRlbnQtJUNPTVAlXXtiYWNrZ3JvdW5kLWNvbG9yOiNmNTdjMDA7Y29sb3I6I2ZmZn0ubWF0LXN0ZXAtaGVhZGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtc3RlcC1pY29uLXN0YXRlLWVycm9yW19uZ2NvbnRlbnQtJUNPTVAlXXtiYWNrZ3JvdW5kLWNvbG9yOnRyYW5zcGFyZW50O2NvbG9yOiNmNDQzMzZ9Lm1hdC1zdGVwLWhlYWRlcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXN0ZXAtbGFiZWwubWF0LXN0ZXAtbGFiZWwtYWN0aXZlW19uZ2NvbnRlbnQtJUNPTVAlXXtjb2xvcjojMjEyMTIxfS5tYXQtc3RlcC1oZWFkZXJbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1zdGVwLWxhYmVsLm1hdC1zdGVwLWxhYmVsLWVycm9yW19uZ2NvbnRlbnQtJUNPTVAlXXtjb2xvcjojZjQ0MzM2fS5tYXQtc3RlcHBlci1ob3Jpem9udGFsW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1zdGVwcGVyLXZlcnRpY2FsW19uZ2NvbnRlbnQtJUNPTVAlXXtiYWNrZ3JvdW5kLWNvbG9yOiNmZmZ9Lm1hdC1zdGVwcGVyLXZlcnRpY2FsLWxpbmVbX25nY29udGVudC0lQ09NUCVdOjpiZWZvcmV7Ym9yZGVyLWxlZnQtY29sb3I6cmdiYSgwLDAsMCwuMTIpfS5tYXQtaG9yaXpvbnRhbC1zdGVwcGVyLWhlYWRlcltfbmdjb250ZW50LSVDT01QJV06OmJlZm9yZSwgLm1hdC1ob3Jpem9udGFsLXN0ZXBwZXItaGVhZGVyW19uZ2NvbnRlbnQtJUNPTVAlXTo6YWZ0ZXIsIC5tYXQtc3RlcHBlci1ob3Jpem9udGFsLWxpbmVbX25nY29udGVudC0lQ09NUCVde2JvcmRlci10b3AtY29sb3I6cmdiYSgwLDAsMCwuMTIpfS5tYXQtaG9yaXpvbnRhbC1zdGVwcGVyLWhlYWRlcltfbmdjb250ZW50LSVDT01QJV17aGVpZ2h0OjcycHh9Lm1hdC1zdGVwcGVyLWxhYmVsLXBvc2l0aW9uLWJvdHRvbVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWhvcml6b250YWwtc3RlcHBlci1oZWFkZXJbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXZlcnRpY2FsLXN0ZXBwZXItaGVhZGVyW19uZ2NvbnRlbnQtJUNPTVAlXXtwYWRkaW5nOjI0cHggMjRweH0ubWF0LXN0ZXBwZXItdmVydGljYWwtbGluZVtfbmdjb250ZW50LSVDT01QJV06OmJlZm9yZXt0b3A6LTE2cHg7Ym90dG9tOi0xNnB4fS5tYXQtc3RlcHBlci1sYWJlbC1wb3NpdGlvbi1ib3R0b21bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1ob3Jpem9udGFsLXN0ZXBwZXItaGVhZGVyW19uZ2NvbnRlbnQtJUNPTVAlXTo6YWZ0ZXIsIC5tYXQtc3RlcHBlci1sYWJlbC1wb3NpdGlvbi1ib3R0b21bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1ob3Jpem9udGFsLXN0ZXBwZXItaGVhZGVyW19uZ2NvbnRlbnQtJUNPTVAlXTo6YmVmb3Jle3RvcDozNnB4fS5tYXQtc3RlcHBlci1sYWJlbC1wb3NpdGlvbi1ib3R0b21bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1zdGVwcGVyLWhvcml6b250YWwtbGluZVtfbmdjb250ZW50LSVDT01QJV17dG9wOjM2cHh9Lm1hdC1zb3J0LWhlYWRlci1hcnJvd1tfbmdjb250ZW50LSVDT01QJV17Y29sb3I6IzYxNjE2MX0ubWF0LXRhYi1uYXYtYmFyW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10YWItaGVhZGVyW19uZ2NvbnRlbnQtJUNPTVAlXXtib3JkZXItYm90dG9tOjFweCBzb2xpZCByZ2JhKDAsMCwwLC4xMil9Lm1hdC10YWItZ3JvdXAtaW52ZXJ0ZWQtaGVhZGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtdGFiLW5hdi1iYXJbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXRhYi1ncm91cC1pbnZlcnRlZC1oZWFkZXJbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC10YWItaGVhZGVyW19uZ2NvbnRlbnQtJUNPTVAlXXtib3JkZXItdG9wOjFweCBzb2xpZCByZ2JhKDAsMCwwLC4xMik7Ym9yZGVyLWJvdHRvbTpub25lfS5tYXQtdGFiLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10YWItbGlua1tfbmdjb250ZW50LSVDT01QJV17Y29sb3I6IzIxMjEyMX0ubWF0LXRhYi1sYWJlbC5tYXQtdGFiLWRpc2FibGVkW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10YWItbGluay5tYXQtdGFiLWRpc2FibGVkW19uZ2NvbnRlbnQtJUNPTVAlXXtjb2xvcjojNzU3NTc1fS5tYXQtdGFiLWhlYWRlci1wYWdpbmF0aW9uLWNoZXZyb25bX25nY29udGVudC0lQ09NUCVde2JvcmRlci1jb2xvcjojMjEyMTIxfS5tYXQtdGFiLWhlYWRlci1wYWdpbmF0aW9uLWRpc2FibGVkW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtdGFiLWhlYWRlci1wYWdpbmF0aW9uLWNoZXZyb25bX25nY29udGVudC0lQ09NUCVde2JvcmRlci1jb2xvcjojNzU3NTc1fS5tYXQtdGFiLWdyb3VwW2NsYXNzKj1tYXQtYmFja2dyb3VuZC1dW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtdGFiLWhlYWRlcltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdGFiLW5hdi1iYXJbY2xhc3MqPW1hdC1iYWNrZ3JvdW5kLV1bX25nY29udGVudC0lQ09NUCVde2JvcmRlci1ib3R0b206bm9uZTtib3JkZXItdG9wOm5vbmV9Lm1hdC10YWItZ3JvdXAubWF0LXByaW1hcnlbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC10YWItbGFiZWwuY2RrLWtleWJvYXJkLWZvY3VzZWRbX25nY29udGVudC0lQ09NUCVdOm5vdCgubWF0LXRhYi1kaXNhYmxlZCksIC5tYXQtdGFiLWdyb3VwLm1hdC1wcmltYXJ5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtdGFiLWxhYmVsLmNkay1wcm9ncmFtLWZvY3VzZWRbX25nY29udGVudC0lQ09NUCVdOm5vdCgubWF0LXRhYi1kaXNhYmxlZCksIC5tYXQtdGFiLWdyb3VwLm1hdC1wcmltYXJ5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtdGFiLWxpbmsuY2RrLWtleWJvYXJkLWZvY3VzZWRbX25nY29udGVudC0lQ09NUCVdOm5vdCgubWF0LXRhYi1kaXNhYmxlZCksIC5tYXQtdGFiLWdyb3VwLm1hdC1wcmltYXJ5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtdGFiLWxpbmsuY2RrLXByb2dyYW0tZm9jdXNlZFtfbmdjb250ZW50LSVDT01QJV06bm90KC5tYXQtdGFiLWRpc2FibGVkKSwgLm1hdC10YWItbmF2LWJhci5tYXQtcHJpbWFyeVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXRhYi1sYWJlbC5jZGsta2V5Ym9hcmQtZm9jdXNlZFtfbmdjb250ZW50LSVDT01QJV06bm90KC5tYXQtdGFiLWRpc2FibGVkKSwgLm1hdC10YWItbmF2LWJhci5tYXQtcHJpbWFyeVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXRhYi1sYWJlbC5jZGstcHJvZ3JhbS1mb2N1c2VkW19uZ2NvbnRlbnQtJUNPTVAlXTpub3QoLm1hdC10YWItZGlzYWJsZWQpLCAubWF0LXRhYi1uYXYtYmFyLm1hdC1wcmltYXJ5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtdGFiLWxpbmsuY2RrLWtleWJvYXJkLWZvY3VzZWRbX25nY29udGVudC0lQ09NUCVdOm5vdCgubWF0LXRhYi1kaXNhYmxlZCksIC5tYXQtdGFiLW5hdi1iYXIubWF0LXByaW1hcnlbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC10YWItbGluay5jZGstcHJvZ3JhbS1mb2N1c2VkW19uZ2NvbnRlbnQtJUNPTVAlXTpub3QoLm1hdC10YWItZGlzYWJsZWQpe2JhY2tncm91bmQtY29sb3I6cmdiYSgyNTUsMTUyLDAsLjMpfS5tYXQtdGFiLWdyb3VwLm1hdC1wcmltYXJ5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaW5rLWJhcltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdGFiLW5hdi1iYXIubWF0LXByaW1hcnlbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pbmstYmFyW19uZ2NvbnRlbnQtJUNPTVAlXXtiYWNrZ3JvdW5kLWNvbG9yOiNmNTdjMDB9Lm1hdC10YWItZ3JvdXAubWF0LXByaW1hcnkubWF0LWJhY2tncm91bmQtcHJpbWFyeVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWluay1iYXJbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXRhYi1uYXYtYmFyLm1hdC1wcmltYXJ5Lm1hdC1iYWNrZ3JvdW5kLXByaW1hcnlbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pbmstYmFyW19uZ2NvbnRlbnQtJUNPTVAlXXtiYWNrZ3JvdW5kLWNvbG9yOiNmZmZ9Lm1hdC10YWItZ3JvdXAubWF0LWFjY2VudFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXRhYi1sYWJlbC5jZGsta2V5Ym9hcmQtZm9jdXNlZFtfbmdjb250ZW50LSVDT01QJV06bm90KC5tYXQtdGFiLWRpc2FibGVkKSwgLm1hdC10YWItZ3JvdXAubWF0LWFjY2VudFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXRhYi1sYWJlbC5jZGstcHJvZ3JhbS1mb2N1c2VkW19uZ2NvbnRlbnQtJUNPTVAlXTpub3QoLm1hdC10YWItZGlzYWJsZWQpLCAubWF0LXRhYi1ncm91cC5tYXQtYWNjZW50W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtdGFiLWxpbmsuY2RrLWtleWJvYXJkLWZvY3VzZWRbX25nY29udGVudC0lQ09NUCVdOm5vdCgubWF0LXRhYi1kaXNhYmxlZCksIC5tYXQtdGFiLWdyb3VwLm1hdC1hY2NlbnRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC10YWItbGluay5jZGstcHJvZ3JhbS1mb2N1c2VkW19uZ2NvbnRlbnQtJUNPTVAlXTpub3QoLm1hdC10YWItZGlzYWJsZWQpLCAubWF0LXRhYi1uYXYtYmFyLm1hdC1hY2NlbnRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC10YWItbGFiZWwuY2RrLWtleWJvYXJkLWZvY3VzZWRbX25nY29udGVudC0lQ09NUCVdOm5vdCgubWF0LXRhYi1kaXNhYmxlZCksIC5tYXQtdGFiLW5hdi1iYXIubWF0LWFjY2VudFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXRhYi1sYWJlbC5jZGstcHJvZ3JhbS1mb2N1c2VkW19uZ2NvbnRlbnQtJUNPTVAlXTpub3QoLm1hdC10YWItZGlzYWJsZWQpLCAubWF0LXRhYi1uYXYtYmFyLm1hdC1hY2NlbnRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC10YWItbGluay5jZGsta2V5Ym9hcmQtZm9jdXNlZFtfbmdjb250ZW50LSVDT01QJV06bm90KC5tYXQtdGFiLWRpc2FibGVkKSwgLm1hdC10YWItbmF2LWJhci5tYXQtYWNjZW50W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtdGFiLWxpbmsuY2RrLXByb2dyYW0tZm9jdXNlZFtfbmdjb250ZW50LSVDT01QJV06bm90KC5tYXQtdGFiLWRpc2FibGVkKXtiYWNrZ3JvdW5kLWNvbG9yOnJnYmEoMjU1LDE1MiwwLC4zKX0ubWF0LXRhYi1ncm91cC5tYXQtYWNjZW50W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaW5rLWJhcltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdGFiLW5hdi1iYXIubWF0LWFjY2VudFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWluay1iYXJbX25nY29udGVudC0lQ09NUCVde2JhY2tncm91bmQtY29sb3I6I2ZmOTgwMH0ubWF0LXRhYi1ncm91cC5tYXQtYWNjZW50Lm1hdC1iYWNrZ3JvdW5kLWFjY2VudFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWluay1iYXJbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXRhYi1uYXYtYmFyLm1hdC1hY2NlbnQubWF0LWJhY2tncm91bmQtYWNjZW50W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaW5rLWJhcltfbmdjb250ZW50LSVDT01QJV17YmFja2dyb3VuZC1jb2xvcjojZmZmfS5tYXQtdGFiLWdyb3VwLm1hdC13YXJuW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtdGFiLWxhYmVsLmNkay1rZXlib2FyZC1mb2N1c2VkW19uZ2NvbnRlbnQtJUNPTVAlXTpub3QoLm1hdC10YWItZGlzYWJsZWQpLCAubWF0LXRhYi1ncm91cC5tYXQtd2Fybltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXRhYi1sYWJlbC5jZGstcHJvZ3JhbS1mb2N1c2VkW19uZ2NvbnRlbnQtJUNPTVAlXTpub3QoLm1hdC10YWItZGlzYWJsZWQpLCAubWF0LXRhYi1ncm91cC5tYXQtd2Fybltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXRhYi1saW5rLmNkay1rZXlib2FyZC1mb2N1c2VkW19uZ2NvbnRlbnQtJUNPTVAlXTpub3QoLm1hdC10YWItZGlzYWJsZWQpLCAubWF0LXRhYi1ncm91cC5tYXQtd2Fybltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXRhYi1saW5rLmNkay1wcm9ncmFtLWZvY3VzZWRbX25nY29udGVudC0lQ09NUCVdOm5vdCgubWF0LXRhYi1kaXNhYmxlZCksIC5tYXQtdGFiLW5hdi1iYXIubWF0LXdhcm5bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC10YWItbGFiZWwuY2RrLWtleWJvYXJkLWZvY3VzZWRbX25nY29udGVudC0lQ09NUCVdOm5vdCgubWF0LXRhYi1kaXNhYmxlZCksIC5tYXQtdGFiLW5hdi1iYXIubWF0LXdhcm5bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC10YWItbGFiZWwuY2RrLXByb2dyYW0tZm9jdXNlZFtfbmdjb250ZW50LSVDT01QJV06bm90KC5tYXQtdGFiLWRpc2FibGVkKSwgLm1hdC10YWItbmF2LWJhci5tYXQtd2Fybltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXRhYi1saW5rLmNkay1rZXlib2FyZC1mb2N1c2VkW19uZ2NvbnRlbnQtJUNPTVAlXTpub3QoLm1hdC10YWItZGlzYWJsZWQpLCAubWF0LXRhYi1uYXYtYmFyLm1hdC13YXJuW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtdGFiLWxpbmsuY2RrLXByb2dyYW0tZm9jdXNlZFtfbmdjb250ZW50LSVDT01QJV06bm90KC5tYXQtdGFiLWRpc2FibGVkKXtiYWNrZ3JvdW5kLWNvbG9yOnJnYmEoMjU1LDIwNSwyMTAsLjMpfS5tYXQtdGFiLWdyb3VwLm1hdC13YXJuW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaW5rLWJhcltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdGFiLW5hdi1iYXIubWF0LXdhcm5bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pbmstYmFyW19uZ2NvbnRlbnQtJUNPTVAlXXtiYWNrZ3JvdW5kLWNvbG9yOiNmNDQzMzZ9Lm1hdC10YWItZ3JvdXAubWF0LXdhcm4ubWF0LWJhY2tncm91bmQtd2Fybltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWluay1iYXJbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXRhYi1uYXYtYmFyLm1hdC13YXJuLm1hdC1iYWNrZ3JvdW5kLXdhcm5bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pbmstYmFyW19uZ2NvbnRlbnQtJUNPTVAlXXtiYWNrZ3JvdW5kLWNvbG9yOiNmZmZ9Lm1hdC10YWItZ3JvdXAubWF0LWJhY2tncm91bmQtcHJpbWFyeVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXRhYi1sYWJlbC5jZGsta2V5Ym9hcmQtZm9jdXNlZFtfbmdjb250ZW50LSVDT01QJV06bm90KC5tYXQtdGFiLWRpc2FibGVkKSwgLm1hdC10YWItZ3JvdXAubWF0LWJhY2tncm91bmQtcHJpbWFyeVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXRhYi1sYWJlbC5jZGstcHJvZ3JhbS1mb2N1c2VkW19uZ2NvbnRlbnQtJUNPTVAlXTpub3QoLm1hdC10YWItZGlzYWJsZWQpLCAubWF0LXRhYi1ncm91cC5tYXQtYmFja2dyb3VuZC1wcmltYXJ5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtdGFiLWxpbmsuY2RrLWtleWJvYXJkLWZvY3VzZWRbX25nY29udGVudC0lQ09NUCVdOm5vdCgubWF0LXRhYi1kaXNhYmxlZCksIC5tYXQtdGFiLWdyb3VwLm1hdC1iYWNrZ3JvdW5kLXByaW1hcnlbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC10YWItbGluay5jZGstcHJvZ3JhbS1mb2N1c2VkW19uZ2NvbnRlbnQtJUNPTVAlXTpub3QoLm1hdC10YWItZGlzYWJsZWQpLCAubWF0LXRhYi1uYXYtYmFyLm1hdC1iYWNrZ3JvdW5kLXByaW1hcnlbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC10YWItbGFiZWwuY2RrLWtleWJvYXJkLWZvY3VzZWRbX25nY29udGVudC0lQ09NUCVdOm5vdCgubWF0LXRhYi1kaXNhYmxlZCksIC5tYXQtdGFiLW5hdi1iYXIubWF0LWJhY2tncm91bmQtcHJpbWFyeVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXRhYi1sYWJlbC5jZGstcHJvZ3JhbS1mb2N1c2VkW19uZ2NvbnRlbnQtJUNPTVAlXTpub3QoLm1hdC10YWItZGlzYWJsZWQpLCAubWF0LXRhYi1uYXYtYmFyLm1hdC1iYWNrZ3JvdW5kLXByaW1hcnlbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC10YWItbGluay5jZGsta2V5Ym9hcmQtZm9jdXNlZFtfbmdjb250ZW50LSVDT01QJV06bm90KC5tYXQtdGFiLWRpc2FibGVkKSwgLm1hdC10YWItbmF2LWJhci5tYXQtYmFja2dyb3VuZC1wcmltYXJ5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtdGFiLWxpbmsuY2RrLXByb2dyYW0tZm9jdXNlZFtfbmdjb250ZW50LSVDT01QJV06bm90KC5tYXQtdGFiLWRpc2FibGVkKXtiYWNrZ3JvdW5kLWNvbG9yOnJnYmEoMjU1LDE1MiwwLC4zKX0ubWF0LXRhYi1ncm91cC5tYXQtYmFja2dyb3VuZC1wcmltYXJ5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtdGFiLWhlYWRlcltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdGFiLWdyb3VwLm1hdC1iYWNrZ3JvdW5kLXByaW1hcnlbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC10YWItbGlua3NbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXRhYi1ncm91cC5tYXQtYmFja2dyb3VuZC1wcmltYXJ5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtdGFiLWhlYWRlci1wYWdpbmF0aW9uW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10YWItbmF2LWJhci5tYXQtYmFja2dyb3VuZC1wcmltYXJ5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtdGFiLWhlYWRlcltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdGFiLW5hdi1iYXIubWF0LWJhY2tncm91bmQtcHJpbWFyeVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXRhYi1saW5rc1tfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdGFiLW5hdi1iYXIubWF0LWJhY2tncm91bmQtcHJpbWFyeVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXRhYi1oZWFkZXItcGFnaW5hdGlvbltfbmdjb250ZW50LSVDT01QJV17YmFja2dyb3VuZC1jb2xvcjojZjU3YzAwfS5tYXQtdGFiLWdyb3VwLm1hdC1iYWNrZ3JvdW5kLXByaW1hcnlbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC10YWItbGFiZWxbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXRhYi1ncm91cC5tYXQtYmFja2dyb3VuZC1wcmltYXJ5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtdGFiLWxpbmtbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXRhYi1uYXYtYmFyLm1hdC1iYWNrZ3JvdW5kLXByaW1hcnlbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC10YWItbGFiZWxbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXRhYi1uYXYtYmFyLm1hdC1iYWNrZ3JvdW5kLXByaW1hcnlbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC10YWItbGlua1tfbmdjb250ZW50LSVDT01QJV17Y29sb3I6I2ZmZn0ubWF0LXRhYi1ncm91cC5tYXQtYmFja2dyb3VuZC1wcmltYXJ5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtdGFiLWxhYmVsLm1hdC10YWItZGlzYWJsZWRbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXRhYi1ncm91cC5tYXQtYmFja2dyb3VuZC1wcmltYXJ5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtdGFiLWxpbmsubWF0LXRhYi1kaXNhYmxlZFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdGFiLW5hdi1iYXIubWF0LWJhY2tncm91bmQtcHJpbWFyeVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXRhYi1sYWJlbC5tYXQtdGFiLWRpc2FibGVkW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10YWItbmF2LWJhci5tYXQtYmFja2dyb3VuZC1wcmltYXJ5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtdGFiLWxpbmsubWF0LXRhYi1kaXNhYmxlZFtfbmdjb250ZW50LSVDT01QJV17Y29sb3I6cmdiYSgyNTUsMjU1LDI1NSwuNCl9Lm1hdC10YWItZ3JvdXAubWF0LWJhY2tncm91bmQtcHJpbWFyeVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXRhYi1oZWFkZXItcGFnaW5hdGlvbi1jaGV2cm9uW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10YWItbmF2LWJhci5tYXQtYmFja2dyb3VuZC1wcmltYXJ5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtdGFiLWhlYWRlci1wYWdpbmF0aW9uLWNoZXZyb25bX25nY29udGVudC0lQ09NUCVde2JvcmRlci1jb2xvcjojZmZmfS5tYXQtdGFiLWdyb3VwLm1hdC1iYWNrZ3JvdW5kLXByaW1hcnlbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC10YWItaGVhZGVyLXBhZ2luYXRpb24tZGlzYWJsZWRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC10YWItaGVhZGVyLXBhZ2luYXRpb24tY2hldnJvbltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdGFiLW5hdi1iYXIubWF0LWJhY2tncm91bmQtcHJpbWFyeVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXRhYi1oZWFkZXItcGFnaW5hdGlvbi1kaXNhYmxlZFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXRhYi1oZWFkZXItcGFnaW5hdGlvbi1jaGV2cm9uW19uZ2NvbnRlbnQtJUNPTVAlXXtib3JkZXItY29sb3I6cmdiYSgyNTUsMjU1LDI1NSwuNCl9Lm1hdC10YWItZ3JvdXAubWF0LWJhY2tncm91bmQtcHJpbWFyeVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXJpcHBsZS1lbGVtZW50W19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10YWItbmF2LWJhci5tYXQtYmFja2dyb3VuZC1wcmltYXJ5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtcmlwcGxlLWVsZW1lbnRbX25nY29udGVudC0lQ09NUCVde2JhY2tncm91bmQtY29sb3I6cmdiYSgyNTUsMjU1LDI1NSwuMTIpfS5tYXQtdGFiLWdyb3VwLm1hdC1iYWNrZ3JvdW5kLWFjY2VudFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXRhYi1sYWJlbC5jZGsta2V5Ym9hcmQtZm9jdXNlZFtfbmdjb250ZW50LSVDT01QJV06bm90KC5tYXQtdGFiLWRpc2FibGVkKSwgLm1hdC10YWItZ3JvdXAubWF0LWJhY2tncm91bmQtYWNjZW50W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtdGFiLWxhYmVsLmNkay1wcm9ncmFtLWZvY3VzZWRbX25nY29udGVudC0lQ09NUCVdOm5vdCgubWF0LXRhYi1kaXNhYmxlZCksIC5tYXQtdGFiLWdyb3VwLm1hdC1iYWNrZ3JvdW5kLWFjY2VudFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXRhYi1saW5rLmNkay1rZXlib2FyZC1mb2N1c2VkW19uZ2NvbnRlbnQtJUNPTVAlXTpub3QoLm1hdC10YWItZGlzYWJsZWQpLCAubWF0LXRhYi1ncm91cC5tYXQtYmFja2dyb3VuZC1hY2NlbnRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC10YWItbGluay5jZGstcHJvZ3JhbS1mb2N1c2VkW19uZ2NvbnRlbnQtJUNPTVAlXTpub3QoLm1hdC10YWItZGlzYWJsZWQpLCAubWF0LXRhYi1uYXYtYmFyLm1hdC1iYWNrZ3JvdW5kLWFjY2VudFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXRhYi1sYWJlbC5jZGsta2V5Ym9hcmQtZm9jdXNlZFtfbmdjb250ZW50LSVDT01QJV06bm90KC5tYXQtdGFiLWRpc2FibGVkKSwgLm1hdC10YWItbmF2LWJhci5tYXQtYmFja2dyb3VuZC1hY2NlbnRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC10YWItbGFiZWwuY2RrLXByb2dyYW0tZm9jdXNlZFtfbmdjb250ZW50LSVDT01QJV06bm90KC5tYXQtdGFiLWRpc2FibGVkKSwgLm1hdC10YWItbmF2LWJhci5tYXQtYmFja2dyb3VuZC1hY2NlbnRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC10YWItbGluay5jZGsta2V5Ym9hcmQtZm9jdXNlZFtfbmdjb250ZW50LSVDT01QJV06bm90KC5tYXQtdGFiLWRpc2FibGVkKSwgLm1hdC10YWItbmF2LWJhci5tYXQtYmFja2dyb3VuZC1hY2NlbnRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC10YWItbGluay5jZGstcHJvZ3JhbS1mb2N1c2VkW19uZ2NvbnRlbnQtJUNPTVAlXTpub3QoLm1hdC10YWItZGlzYWJsZWQpe2JhY2tncm91bmQtY29sb3I6cmdiYSgyNTUsMTUyLDAsLjMpfS5tYXQtdGFiLWdyb3VwLm1hdC1iYWNrZ3JvdW5kLWFjY2VudFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXRhYi1oZWFkZXJbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXRhYi1ncm91cC5tYXQtYmFja2dyb3VuZC1hY2NlbnRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC10YWItbGlua3NbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXRhYi1ncm91cC5tYXQtYmFja2dyb3VuZC1hY2NlbnRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC10YWItaGVhZGVyLXBhZ2luYXRpb25bX25nY29udGVudC0lQ09NUCVdLCAubWF0LXRhYi1uYXYtYmFyLm1hdC1iYWNrZ3JvdW5kLWFjY2VudFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXRhYi1oZWFkZXJbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXRhYi1uYXYtYmFyLm1hdC1iYWNrZ3JvdW5kLWFjY2VudFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXRhYi1saW5rc1tfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdGFiLW5hdi1iYXIubWF0LWJhY2tncm91bmQtYWNjZW50W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtdGFiLWhlYWRlci1wYWdpbmF0aW9uW19uZ2NvbnRlbnQtJUNPTVAlXXtiYWNrZ3JvdW5kLWNvbG9yOiNmZjk4MDB9Lm1hdC10YWItZ3JvdXAubWF0LWJhY2tncm91bmQtYWNjZW50W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtdGFiLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10YWItZ3JvdXAubWF0LWJhY2tncm91bmQtYWNjZW50W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtdGFiLWxpbmtbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXRhYi1uYXYtYmFyLm1hdC1iYWNrZ3JvdW5kLWFjY2VudFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXRhYi1sYWJlbFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdGFiLW5hdi1iYXIubWF0LWJhY2tncm91bmQtYWNjZW50W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtdGFiLWxpbmtbX25nY29udGVudC0lQ09NUCVde2NvbG9yOiNmZmZ9Lm1hdC10YWItZ3JvdXAubWF0LWJhY2tncm91bmQtYWNjZW50W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtdGFiLWxhYmVsLm1hdC10YWItZGlzYWJsZWRbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXRhYi1ncm91cC5tYXQtYmFja2dyb3VuZC1hY2NlbnRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC10YWItbGluay5tYXQtdGFiLWRpc2FibGVkW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10YWItbmF2LWJhci5tYXQtYmFja2dyb3VuZC1hY2NlbnRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC10YWItbGFiZWwubWF0LXRhYi1kaXNhYmxlZFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdGFiLW5hdi1iYXIubWF0LWJhY2tncm91bmQtYWNjZW50W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtdGFiLWxpbmsubWF0LXRhYi1kaXNhYmxlZFtfbmdjb250ZW50LSVDT01QJV17Y29sb3I6cmdiYSgyNTUsMjU1LDI1NSwuNCl9Lm1hdC10YWItZ3JvdXAubWF0LWJhY2tncm91bmQtYWNjZW50W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtdGFiLWhlYWRlci1wYWdpbmF0aW9uLWNoZXZyb25bX25nY29udGVudC0lQ09NUCVdLCAubWF0LXRhYi1uYXYtYmFyLm1hdC1iYWNrZ3JvdW5kLWFjY2VudFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXRhYi1oZWFkZXItcGFnaW5hdGlvbi1jaGV2cm9uW19uZ2NvbnRlbnQtJUNPTVAlXXtib3JkZXItY29sb3I6I2ZmZn0ubWF0LXRhYi1ncm91cC5tYXQtYmFja2dyb3VuZC1hY2NlbnRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC10YWItaGVhZGVyLXBhZ2luYXRpb24tZGlzYWJsZWRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC10YWItaGVhZGVyLXBhZ2luYXRpb24tY2hldnJvbltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdGFiLW5hdi1iYXIubWF0LWJhY2tncm91bmQtYWNjZW50W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtdGFiLWhlYWRlci1wYWdpbmF0aW9uLWRpc2FibGVkW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtdGFiLWhlYWRlci1wYWdpbmF0aW9uLWNoZXZyb25bX25nY29udGVudC0lQ09NUCVde2JvcmRlci1jb2xvcjpyZ2JhKDI1NSwyNTUsMjU1LC40KX0ubWF0LXRhYi1ncm91cC5tYXQtYmFja2dyb3VuZC1hY2NlbnRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1yaXBwbGUtZWxlbWVudFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdGFiLW5hdi1iYXIubWF0LWJhY2tncm91bmQtYWNjZW50W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtcmlwcGxlLWVsZW1lbnRbX25nY29udGVudC0lQ09NUCVde2JhY2tncm91bmQtY29sb3I6cmdiYSgyNTUsMjU1LDI1NSwuMTIpfS5tYXQtdGFiLWdyb3VwLm1hdC1iYWNrZ3JvdW5kLXdhcm5bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC10YWItbGFiZWwuY2RrLWtleWJvYXJkLWZvY3VzZWRbX25nY29udGVudC0lQ09NUCVdOm5vdCgubWF0LXRhYi1kaXNhYmxlZCksIC5tYXQtdGFiLWdyb3VwLm1hdC1iYWNrZ3JvdW5kLXdhcm5bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC10YWItbGFiZWwuY2RrLXByb2dyYW0tZm9jdXNlZFtfbmdjb250ZW50LSVDT01QJV06bm90KC5tYXQtdGFiLWRpc2FibGVkKSwgLm1hdC10YWItZ3JvdXAubWF0LWJhY2tncm91bmQtd2Fybltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXRhYi1saW5rLmNkay1rZXlib2FyZC1mb2N1c2VkW19uZ2NvbnRlbnQtJUNPTVAlXTpub3QoLm1hdC10YWItZGlzYWJsZWQpLCAubWF0LXRhYi1ncm91cC5tYXQtYmFja2dyb3VuZC13YXJuW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtdGFiLWxpbmsuY2RrLXByb2dyYW0tZm9jdXNlZFtfbmdjb250ZW50LSVDT01QJV06bm90KC5tYXQtdGFiLWRpc2FibGVkKSwgLm1hdC10YWItbmF2LWJhci5tYXQtYmFja2dyb3VuZC13YXJuW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtdGFiLWxhYmVsLmNkay1rZXlib2FyZC1mb2N1c2VkW19uZ2NvbnRlbnQtJUNPTVAlXTpub3QoLm1hdC10YWItZGlzYWJsZWQpLCAubWF0LXRhYi1uYXYtYmFyLm1hdC1iYWNrZ3JvdW5kLXdhcm5bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC10YWItbGFiZWwuY2RrLXByb2dyYW0tZm9jdXNlZFtfbmdjb250ZW50LSVDT01QJV06bm90KC5tYXQtdGFiLWRpc2FibGVkKSwgLm1hdC10YWItbmF2LWJhci5tYXQtYmFja2dyb3VuZC13YXJuW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtdGFiLWxpbmsuY2RrLWtleWJvYXJkLWZvY3VzZWRbX25nY29udGVudC0lQ09NUCVdOm5vdCgubWF0LXRhYi1kaXNhYmxlZCksIC5tYXQtdGFiLW5hdi1iYXIubWF0LWJhY2tncm91bmQtd2Fybltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXRhYi1saW5rLmNkay1wcm9ncmFtLWZvY3VzZWRbX25nY29udGVudC0lQ09NUCVdOm5vdCgubWF0LXRhYi1kaXNhYmxlZCl7YmFja2dyb3VuZC1jb2xvcjpyZ2JhKDI1NSwyMDUsMjEwLC4zKX0ubWF0LXRhYi1ncm91cC5tYXQtYmFja2dyb3VuZC13YXJuW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtdGFiLWhlYWRlcltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdGFiLWdyb3VwLm1hdC1iYWNrZ3JvdW5kLXdhcm5bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC10YWItbGlua3NbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXRhYi1ncm91cC5tYXQtYmFja2dyb3VuZC13YXJuW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtdGFiLWhlYWRlci1wYWdpbmF0aW9uW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10YWItbmF2LWJhci5tYXQtYmFja2dyb3VuZC13YXJuW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtdGFiLWhlYWRlcltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdGFiLW5hdi1iYXIubWF0LWJhY2tncm91bmQtd2Fybltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXRhYi1saW5rc1tfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdGFiLW5hdi1iYXIubWF0LWJhY2tncm91bmQtd2Fybltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXRhYi1oZWFkZXItcGFnaW5hdGlvbltfbmdjb250ZW50LSVDT01QJV17YmFja2dyb3VuZC1jb2xvcjojZjQ0MzM2fS5tYXQtdGFiLWdyb3VwLm1hdC1iYWNrZ3JvdW5kLXdhcm5bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC10YWItbGFiZWxbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXRhYi1ncm91cC5tYXQtYmFja2dyb3VuZC13YXJuW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtdGFiLWxpbmtbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXRhYi1uYXYtYmFyLm1hdC1iYWNrZ3JvdW5kLXdhcm5bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC10YWItbGFiZWxbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXRhYi1uYXYtYmFyLm1hdC1iYWNrZ3JvdW5kLXdhcm5bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC10YWItbGlua1tfbmdjb250ZW50LSVDT01QJV17Y29sb3I6I2ZmZn0ubWF0LXRhYi1ncm91cC5tYXQtYmFja2dyb3VuZC13YXJuW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtdGFiLWxhYmVsLm1hdC10YWItZGlzYWJsZWRbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXRhYi1ncm91cC5tYXQtYmFja2dyb3VuZC13YXJuW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtdGFiLWxpbmsubWF0LXRhYi1kaXNhYmxlZFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdGFiLW5hdi1iYXIubWF0LWJhY2tncm91bmQtd2Fybltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXRhYi1sYWJlbC5tYXQtdGFiLWRpc2FibGVkW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10YWItbmF2LWJhci5tYXQtYmFja2dyb3VuZC13YXJuW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtdGFiLWxpbmsubWF0LXRhYi1kaXNhYmxlZFtfbmdjb250ZW50LSVDT01QJV17Y29sb3I6cmdiYSgyNTUsMjU1LDI1NSwuNCl9Lm1hdC10YWItZ3JvdXAubWF0LWJhY2tncm91bmQtd2Fybltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXRhYi1oZWFkZXItcGFnaW5hdGlvbi1jaGV2cm9uW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10YWItbmF2LWJhci5tYXQtYmFja2dyb3VuZC13YXJuW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtdGFiLWhlYWRlci1wYWdpbmF0aW9uLWNoZXZyb25bX25nY29udGVudC0lQ09NUCVde2JvcmRlci1jb2xvcjojZmZmfS5tYXQtdGFiLWdyb3VwLm1hdC1iYWNrZ3JvdW5kLXdhcm5bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC10YWItaGVhZGVyLXBhZ2luYXRpb24tZGlzYWJsZWRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC10YWItaGVhZGVyLXBhZ2luYXRpb24tY2hldnJvbltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdGFiLW5hdi1iYXIubWF0LWJhY2tncm91bmQtd2Fybltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXRhYi1oZWFkZXItcGFnaW5hdGlvbi1kaXNhYmxlZFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXRhYi1oZWFkZXItcGFnaW5hdGlvbi1jaGV2cm9uW19uZ2NvbnRlbnQtJUNPTVAlXXtib3JkZXItY29sb3I6cmdiYSgyNTUsMjU1LDI1NSwuNCl9Lm1hdC10YWItZ3JvdXAubWF0LWJhY2tncm91bmQtd2Fybltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXJpcHBsZS1lbGVtZW50W19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10YWItbmF2LWJhci5tYXQtYmFja2dyb3VuZC13YXJuW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtcmlwcGxlLWVsZW1lbnRbX25nY29udGVudC0lQ09NUCVde2JhY2tncm91bmQtY29sb3I6cmdiYSgyNTUsMjU1LDI1NSwuMTIpfS5tYXQtdG9vbGJhcltfbmdjb250ZW50LSVDT01QJV17YmFja2dyb3VuZDojZjVmNWY1O2NvbG9yOiMyMTIxMjF9Lm1hdC10b29sYmFyLm1hdC1wcmltYXJ5W19uZ2NvbnRlbnQtJUNPTVAlXXtiYWNrZ3JvdW5kOiNmNTdjMDA7Y29sb3I6I2ZmZn0ubWF0LXRvb2xiYXIubWF0LWFjY2VudFtfbmdjb250ZW50LSVDT01QJV17YmFja2dyb3VuZDojZmY5ODAwO2NvbG9yOiNmZmZ9Lm1hdC10b29sYmFyLm1hdC13YXJuW19uZ2NvbnRlbnQtJUNPTVAlXXtiYWNrZ3JvdW5kOiNmNDQzMzY7Y29sb3I6I2ZmZn0ubWF0LXRvb2xiYXJbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLXVuZGVybGluZVtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdG9vbGJhcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtcmlwcGxlW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10b29sYmFyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9jdXNlZFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtcmlwcGxlW19uZ2NvbnRlbnQtJUNPTVAlXXtiYWNrZ3JvdW5kLWNvbG9yOmN1cnJlbnRDb2xvcn0ubWF0LXRvb2xiYXJbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10b29sYmFyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9jdXNlZFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXRvb2xiYXJbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1zZWxlY3QtdmFsdWVbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXRvb2xiYXJbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1zZWxlY3QtYXJyb3dbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXRvb2xiYXJbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLm1hdC1mb2N1c2VkW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtc2VsZWN0LWFycm93W19uZ2NvbnRlbnQtJUNPTVAlXXtjb2xvcjppbmhlcml0fS5tYXQtdG9vbGJhcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWlucHV0LWVsZW1lbnRbX25nY29udGVudC0lQ09NUCVde2NhcmV0LWNvbG9yOmN1cnJlbnRDb2xvcn0ubWF0LXRvb2xiYXItbXVsdGlwbGUtcm93c1tfbmdjb250ZW50LSVDT01QJV17bWluLWhlaWdodDo2NHB4fS5tYXQtdG9vbGJhci1yb3dbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXRvb2xiYXItc2luZ2xlLXJvd1tfbmdjb250ZW50LSVDT01QJV17aGVpZ2h0OjY0cHh9QG1lZGlhKG1heC13aWR0aDogNTk5cHgpey5tYXQtdG9vbGJhci1tdWx0aXBsZS1yb3dzW19uZ2NvbnRlbnQtJUNPTVAlXXttaW4taGVpZ2h0OjU2cHh9Lm1hdC10b29sYmFyLXJvd1tfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdG9vbGJhci1zaW5nbGUtcm93W19uZ2NvbnRlbnQtJUNPTVAlXXtoZWlnaHQ6NTZweH19Lm1hdC10b29sdGlwW19uZ2NvbnRlbnQtJUNPTVAlXXtiYWNrZ3JvdW5kOnJnYmEoOTcsOTcsOTcsLjkpfS5tYXQtdHJlZVtfbmdjb250ZW50LSVDT01QJV17YmFja2dyb3VuZDojZmZmfS5tYXQtdHJlZS1ub2RlW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1uZXN0ZWQtdHJlZS1ub2RlW19uZ2NvbnRlbnQtJUNPTVAlXXtjb2xvcjojMjEyMTIxfS5tYXQtdHJlZS1ub2RlW19uZ2NvbnRlbnQtJUNPTVAlXXttaW4taGVpZ2h0OjQ4cHh9Lm1hdC1zbmFjay1iYXItY29udGFpbmVyW19uZ2NvbnRlbnQtJUNPTVAlXXtjb2xvcjpyZ2JhKDI1NSwyNTUsMjU1LC43KTtiYWNrZ3JvdW5kOiMzMjMyMzI7Ym94LXNoYWRvdzowcHggM3B4IDVweCAtMXB4IHJnYmEoMCwgMCwgMCwgMC4yKSwwcHggNnB4IDEwcHggMHB4IHJnYmEoMCwgMCwgMCwgMC4xNCksMHB4IDFweCAxOHB4IDBweCByZ2JhKDAsIDAsIDAsIDAuMTIpfS5tYXQtc2ltcGxlLXNuYWNrYmFyLWFjdGlvbltfbmdjb250ZW50LSVDT01QJV17Y29sb3I6I2ZmOTgwMH1bX25naG9zdC0lQ09NUCVde2NvbnRhaW46c3RyaWN0O2Rpc3BsYXk6ZmxleDtvdmVyZmxvdzpoaWRkZW59Lm1ham9yLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXSwgdGV4dFtfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjExcHg7dXNlci1zZWxlY3Q6bm9uZX0uYXhpc1tfbmdjb250ZW50LSVDT01QJV17ZGlzcGxheTpmbGV4O2hlaWdodDoxMDAlO3dpZHRoOjEwMCV9Lm1ham9yW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1pbm9yW19uZ2NvbnRlbnQtJUNPTVAlXXtmbGV4OjEgMDtvdmVyZmxvdzpoaWRkZW59LmxpbmVbX25nY29udGVudC0lQ09NUCVde2JhY2tncm91bmQtY29sb3I6I2FhYTtmbGV4OjAgMCAxcHg7anVzdGlmeS1jb250ZW50OnN0cmV0Y2h9LnRpY2tzW19uZ2NvbnRlbnQtJUNPTVAlXXtoZWlnaHQ6MTAwJTtwb3NpdGlvbjpyZWxhdGl2ZTt3aWR0aDoxMDAlfS54LWF4aXNbX25nY29udGVudC0lQ09NUCVde2ZsZXgtZGlyZWN0aW9uOmNvbHVtbn0ueC1heGlzW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5saW5lW19uZ2NvbnRlbnQtJUNPTVAlXXttYXJnaW4tYm90dG9tOjNweH0ueC1heGlzW19uZ2NvbnRlbnQtJUNPTVAlXSAgIHRleHRbX25nY29udGVudC0lQ09NUCVde2RvbWluYW50LWJhc2VsaW5lOnRleHQtYmVmb3JlLWVkZ2U7dGV4dC1hbmNob3I6bWlkZGxlfS54LWF4aXNbX25nY29udGVudC0lQ09NUCVdICAgLnRpY2tzW19uZ2NvbnRlbnQtJUNPTVAlXXstd2Via2l0LW1hc2staW1hZ2U6bGluZWFyLWdyYWRpZW50KHRvIHJpZ2h0LCAjMDAwMCAwJSwgIzAwMCAxMCUsICMwMDAgOTAlLCAjMDAwMCAxMDAlKTttYXNrLWltYWdlOmxpbmVhci1ncmFkaWVudCh0byByaWdodCwgIzAwMDAgMCUsICMwMDAgMTAlLCAjMDAwIDkwJSwgIzAwMDAgMTAwJSl9LnktYXhpc1tfbmdjb250ZW50LSVDT01QJV17ZmxleC1kaXJlY3Rpb246cm93LXJldmVyc2V9LnktYXhpc1tfbmdjb250ZW50LSVDT01QJV0gICAubGluZVtfbmdjb250ZW50LSVDT01QJV17bWFyZ2luLWxlZnQ6NXB4fS55LWF4aXNbX25nY29udGVudC0lQ09NUCVdICAgdGV4dFtfbmdjb250ZW50LSVDT01QJV17ZG9taW5hbnQtYmFzZWxpbmU6Y2VudHJhbDt0ZXh0LWFuY2hvcjplbmR9LnktYXhpc1tfbmdjb250ZW50LSVDT01QJV0gICAudGlja3NbX25nY29udGVudC0lQ09NUCVdey13ZWJraXQtbWFzay1pbWFnZTpsaW5lYXItZ3JhZGllbnQodG8gYm90dG9tLCAjMDAwMCAwJSwgIzAwMCAxMCUsICMwMDAgOTAlLCAjMDAwMCAxMDAlKTttYXNrLWltYWdlOmxpbmVhci1ncmFkaWVudCh0byBib3R0b20sICMwMDAwIDAlLCAjMDAwIDEwJSwgIzAwMCA5MCUsICMwMDAwIDEwMCUpfS5leHRlbnQtZWRpdC1idXR0b25bX25nY29udGVudC0lQ09NUCVde2JhY2tncm91bmQtY29sb3I6I2VlZTtkaXNwbGF5Om5vbmU7Zm9udC1zaXplOjA7aGVpZ2h0OjI0cHg7bGluZS1oZWlnaHQ6MjRweDtwb3NpdGlvbjphYnNvbHV0ZTtyaWdodDo1cHg7dG9wOjVweDt3aWR0aDoyNHB4fS5leHRlbnQtZWRpdC1idXR0b25bX25nY29udGVudC0lQ09NUCVdICAgbWF0LWljb25bX25nY29udGVudC0lQ09NUCVde2hlaWdodDoxNnB4O3dpZHRoOjE2cHg7bGluZS1oZWlnaHQ6MTZweH0uZXh0ZW50LWVkaXQtaW5wdXRbX25nY29udGVudC0lQ09NUCVde2FsaWduLWl0ZW1zOmNlbnRlcjtjb2x1bW4tZ2FwOjVweDtkaXNwbGF5OmdyaWQ7Zm9udC1zaXplOjEycHg7Z3JpZC10ZW1wbGF0ZS1jb2x1bW5zOjMwcHggbWlubWF4KGF1dG8sIDEwMHB4KTtoZWlnaHQ6MzBweDttYXJnaW46MTBweCAyMHB4fS5leHRlbnQtZWRpdC1jb250cm9sW19uZ2NvbnRlbnQtJUNPTVAlXXthbGlnbi1pdGVtczpjZW50ZXI7ZGlzcGxheTpmbGV4O2ZsZXgtZGlyZWN0aW9uOnJvdy1yZXZlcnNlO2p1c3RpZnktY29udGVudDpmbGV4LWVuZDttYXJnaW46MTBweCAyMHB4fS5leHRlbnQtZWRpdC1jb250cm9sW19uZ2NvbnRlbnQtJUNPTVAlXSAgIGJ1dHRvbltfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjEycHg7aGVpZ2h0OjMwcHg7bGluZS1oZWlnaHQ6MS40O21hcmdpbi1sZWZ0OjVweDtwYWRkaW5nOjAgMTBweH0uYXhpc1tfbmdjb250ZW50LSVDT01QJV06aG92ZXIgICAuZXh0ZW50LWVkaXQtYnV0dG9uW19uZ2NvbnRlbnQtJUNPTVAlXSwgLmV4dGVudC1lZGl0LW1lbnUtb3BlbmVkW19uZ2NvbnRlbnQtJUNPTVAlXXtkaXNwbGF5OmluaXRpYWx9Lm1ham9yW19uZ2NvbnRlbnQtJUNPTVAlXXtwb3NpdGlvbjpyZWxhdGl2ZTtvdmVyZmxvdzpoaWRkZW47Y29udGFpbjpzdHJpY3R9Lm1ham9yW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYWpvci1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17YWxpZ24taXRlbXM6Y2VudGVyO2JveC1zaXppbmc6Ym9yZGVyLWJveDtkaXNwbGF5OmlubGluZS1mbGV4O2p1c3RpZnktY29udGVudDpjZW50ZXI7b3ZlcmZsb3c6aGlkZGVuO3Bvc2l0aW9uOmFic29sdXRlO3doaXRlLXNwYWNlOm5vd3JhcH0ubWFqb3JbX25nY29udGVudC0lQ09NUCVdICAgLm1ham9yLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXSAgIHNwYW5bX25nY29udGVudC0lQ09NUCVde21heC13aWR0aDoxMDAlfS54LWF4aXNbX25nY29udGVudC0lQ09NUCVdICAgLm1ham9yLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXtib3JkZXItbGVmdDoxcHggc29saWQgIzllOWU5ZTtwYWRkaW5nOjAgNXB4fS54LWF4aXNbX25nY29udGVudC0lQ09NUCVdICAgLm1ham9yLWxhYmVsLmxhc3RbX25nY29udGVudC0lQ09NUCVde2JvcmRlci1yaWdodDoxcHggc29saWQgIzllOWU5ZX0ueS1heGlzW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYWpvci1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17Ym9yZGVyLWJvdHRvbToxcHggc29saWQgIzllOWU5ZTtoZWlnaHQ6MTAwJTtwYWRkaW5nOjVweCAwO3dpZHRoOjEwMCV9LnktYXhpc1tfbmdjb250ZW50LSVDT01QJV0gICAubWFqb3ItbGFiZWwubGFzdFtfbmdjb250ZW50LSVDT01QJV17Ym9yZGVyLXRvcDoxcHggc29saWQgIzllOWU5ZX0ueS1heGlzW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYWpvci1sYWJlbFtfbmdjb250ZW50LSVDT01QJV0gPiBzcGFuW19uZ2NvbnRlbnQtJUNPTVAlXXt0cmFuc2Zvcm06cm90YXRlKC05MGRlZyk7dHJhbnNmb3JtLW9yaWdpbjpjZW50ZXJ9J10sY2hhbmdlRGV0ZWN0aW9uOjB9KTtjb25zdCBfbHQ9WyJzZXJpZXNWaWV3Il0sQ2x0PVsieEF4aXMiXSxNbHQ9WyJ5QXhpcyJdLE9sdD1bImNoYXJ0RWwiXTtmdW5jdGlvbiBQbHQodCxuKXsxJnQmJih1aSgpLHRwKDAsInN2ZyIsbnVsbCwxMykpfWZ1bmN0aW9uIHhsdCh0LG4pezEmdCYmdHAoMCwiY2FudmFzIixudWxsLDEzKX1jb25zdCB5bHQ9e3g6WzAsMV0seTpbMCwxXX07Y2xhc3Mga2x0e2NvbnN0cnVjdG9yKHQpe3RoaXMuY2hhbmdlRGV0ZWN0b3I9dCx0aGlzLlJlbmRlcmVyVHlwZT1WJCx0aGlzLnByZWZlcnJlZFJlbmRlcmVyVHlwZT1WJC5XRUJHTCx0aGlzLnhTY2FsZVR5cGU9aiQuTElORUFSLHRoaXMueVNjYWxlVHlwZT1qJC5MSU5FQVIsdGhpcy5pZ25vcmVZT3V0bGllcnM9ITEsdGhpcy5ZX0dSSURfQ09VTlQ9Nix0aGlzLlhfR1JJRF9DT1VOVD0xMCx0aGlzLnhTY2FsZT1hOSh0aGlzLnhTY2FsZVR5cGUpLHRoaXMueVNjYWxlPWE5KHRoaXMueFNjYWxlVHlwZSksdGhpcy52aWV3Qm94PXlsdCx0aGlzLmRvbURpbWVuc2lvbnM9e21haW46e3dpZHRoOjAsaGVpZ2h0OjB9LHhBeGlzOnt3aWR0aDowLGhlaWdodDowfSx5QXhpczp7d2lkdGg6MCxoZWlnaHQ6MH19LHRoaXMuaXNEYXRhVXBkYXRlZD0hMSx0aGlzLmlzTWV0YWRhdGFVcGRhdGVkPSExLHRoaXMuaXNGaXhlZFZpZXdCb3hVcGRhdGVkPSExLHRoaXMuaXNWaWV3Qm94T3ZlcnJpZGRlbj0hMSx0aGlzLmlzVmlld0JveENoYW5nZWQ9ITAsdGhpcy5zY2FsZVVwZGF0ZWQ9ITB9bmdPbkNoYW5nZXModCl7dC54U2NhbGVUeXBlJiYodGhpcy54U2NhbGU9YTkodGhpcy54U2NhbGVUeXBlKSx0aGlzLnNjYWxlVXBkYXRlZD0hMCksdC55U2NhbGVUeXBlJiYodGhpcy55U2NhbGU9YTkodGhpcy55U2NhbGVUeXBlKSx0aGlzLnNjYWxlVXBkYXRlZD0hMCksdC5zZXJpZXNEYXRhJiYodGhpcy5pc0RhdGFVcGRhdGVkPSEwKSx0LmZpeGVkVmlld0JveCYmKHRoaXMuaXNGaXhlZFZpZXdCb3hVcGRhdGVkPSEwKSx0LnNlcmllc01ldGFkYXRhTWFwJiYodGhpcy5pc01ldGFkYXRhVXBkYXRlZD0hMCksdGhpcy5zY2FsZVVwZGF0ZWQmJih0aGlzLmlzVmlld0JveE92ZXJyaWRkZW49ITEpLHRoaXMuaXNWaWV3Qm94Q2hhbmdlZD10aGlzLmlzVmlld0JveENoYW5nZWR8fHRoaXMuc2NhbGVVcGRhdGVkfHwhdGhpcy5pc1ZpZXdCb3hPdmVycmlkZGVuJiZ0aGlzLnNob3VsZFVwZGF0ZURlZmF1bHRWaWV3Qm94KHQpLHRoaXMudXBkYXRlTGluZUNoYXJ0KCl9bmdBZnRlclZpZXdJbml0KCl7dGhpcy5pbml0aWFsaXplQ2hhcnQoKSx0aGlzLnVwZGF0ZUxpbmVDaGFydCgpLHRoaXMuY2hhbmdlRGV0ZWN0b3IuZGV0ZWN0Q2hhbmdlcygpfW9uVmlld1Jlc2l6ZSgpe3RoaXMubGluZUNoYXJ0JiYodGhpcy5yZWFkQW5kVXBkYXRlRG9tRGltZW5zaW9ucygpLHRoaXMubGluZUNoYXJ0LnJlc2l6ZSh0aGlzLmRvbURpbWVuc2lvbnMubWFpbiksdGhpcy5jaGFuZ2VEZXRlY3Rvci5kZXRlY3RDaGFuZ2VzKCkpfXNob3VsZFVwZGF0ZURlZmF1bHRWaWV3Qm94KHQpe2lmKHQueFNjYWxlVHlwZXx8dC55U2NhbGVUeXBlfHx0Lmlnbm9yZVlPdXRsaWVycylyZXR1cm4hMDtpZih0LnNlcmllc0RhdGEpcmV0dXJuITA7Y29uc3Qgbj10LnNlcmllc01ldGFkYXRhTWFwO2lmKG4pe2NvbnN0IHQ9bi5wcmV2aW91c1ZhbHVlO2lmKE9iamVjdC5rZXlzKHRoaXMuc2VyaWVzTWV0YWRhdGFNYXApLmxlbmd0aCE9PU9iamVjdC5rZXlzKG51bGwhPXQ/dDp7fSkubGVuZ3RoKXJldHVybiEwO2Zvcihjb25zdFtuLGVdb2YgT2JqZWN0LmVudHJpZXModGhpcy5zZXJpZXNNZXRhZGF0YU1hcCkpe2NvbnN0IGE9dCYmdFtuXTtpZighYXx8ZS52aXNpYmxlIT09YS52aXNpYmxlKXJldHVybiEwfX1yZXR1cm4hMX1pbml0aWFsaXplQ2hhcnQoKXtpZih0aGlzLmxpbmVDaGFydCl0aHJvdyBuZXcgRXJyb3IoIkxpbmVDaGFydCBzaG91bGQgbm90IGJlIGluaXRpYWxpemVkIG11bHRpcGxlIHRpbWVzLiIpO2NvbnN0IHQ9dGhpcy5nZXRSZW5kZXJlclR5cGUoKSxuPXtvbkRyYXdFbmQ6KCk9Pnt9fTtsZXQgZT1udWxsO3N3aXRjaCh0aGlzLnJlYWRBbmRVcGRhdGVEb21EaW1lbnNpb25zKCksdCl7Y2FzZSBWJC5TVkc6ZT17dHlwZTpWJC5TVkcsY29udGFpbmVyOnRoaXMuY2hhcnRFbC5uYXRpdmVFbGVtZW50LGNhbGxiYWNrczpuLGRvbURpbWVuc2lvbjp0aGlzLmRvbURpbWVuc2lvbnMubWFpbn07YnJlYWs7Y2FzZSBWJC5XRUJHTDplPXt0eXBlOlYkLldFQkdMLGNvbnRhaW5lcjp0aGlzLmNoYXJ0RWwubmF0aXZlRWxlbWVudCxkZXZpY2VQaXhlbFJhdGlvOndpbmRvdy5kZXZpY2VQaXhlbFJhdGlvLGNhbGxiYWNrczpuLGRvbURpbWVuc2lvbjp0aGlzLmRvbURpbWVuc2lvbnMubWFpbn07YnJlYWs7ZGVmYXVsdDp0aHJvdyBuZXcgRXJyb3IoYDxsaW5lLWNoYXJ0PiBkb2VzIG5vdCB5ZXQgc3VwcG9ydCByZW5kZXJlclR5cGU6ICR7dH1gKX1jb25zdCBhPXQhPT1WJC5TVkcmJnM5KCk7dGhpcy5saW5lQ2hhcnQ9bmV3KGE/WnN0OllzdCkoZSl9bmdPbkRlc3Ryb3koKXt0aGlzLmxpbmVDaGFydCYmdGhpcy5saW5lQ2hhcnQuZGlzcG9zZSgpfWdldFJlbmRlcmVyVHlwZSgpe3JldHVybihmdW5jdGlvbiB0KG4pe3N3aXRjaChuKXtjYXNlIFYkLlNWRzpyZXR1cm4gViQuU1ZHO2Nhc2UgViQuV0VCR0w6cmV0dXJuKGZ1bmN0aW9uIGUoKXtyZXR1cm4gYzl9KSgpP1YkLldFQkdMOlYkLlNWRztkZWZhdWx0OnRocm93IG5ldyBFcnJvcihgVW5rbm93biByZW5kZXJlclR5cGU6ICR7bn1gKX19KSh0aGlzLnByZWZlcnJlZFJlbmRlcmVyVHlwZSl9cmVhZEFuZFVwZGF0ZURvbURpbWVuc2lvbnMoKXt0aGlzLmRvbURpbWVuc2lvbnM9e21haW46e3dpZHRoOnRoaXMuc2VyaWVzVmlldy5uYXRpdmVFbGVtZW50LmNsaWVudFdpZHRoLGhlaWdodDp0aGlzLnNlcmllc1ZpZXcubmF0aXZlRWxlbWVudC5jbGllbnRIZWlnaHR9LHhBeGlzOnt3aWR0aDp0aGlzLnhBeGlzLm5hdGl2ZUVsZW1lbnQuY2xpZW50V2lkdGgsaGVpZ2h0OnRoaXMueEF4aXMubmF0aXZlRWxlbWVudC5jbGllbnRIZWlnaHR9LHlBeGlzOnt3aWR0aDp0aGlzLnlBeGlzLm5hdGl2ZUVsZW1lbnQuY2xpZW50V2lkdGgsaGVpZ2h0OnRoaXMueUF4aXMubmF0aXZlRWxlbWVudC5jbGllbnRIZWlnaHR9fX11cGRhdGVMaW5lQ2hhcnQoKXt2YXIgdCxuO2lmKHRoaXMubGluZUNoYXJ0JiYhdGhpcy5kaXNhYmxlVXBkYXRlKXtpZih0aGlzLnNjYWxlVXBkYXRlZCYmKHRoaXMuc2NhbGVVcGRhdGVkPSExLHRoaXMubGluZUNoYXJ0LnNldFhTY2FsZVR5cGUodGhpcy54U2NhbGVUeXBlKSx0aGlzLmxpbmVDaGFydC5zZXRZU2NhbGVUeXBlKHRoaXMueVNjYWxlVHlwZSkpLHRoaXMuaXNNZXRhZGF0YVVwZGF0ZWQmJih0aGlzLmlzTWV0YWRhdGFVcGRhdGVkPSExLHRoaXMubGluZUNoYXJ0LnNldE1ldGFkYXRhKHRoaXMuc2VyaWVzTWV0YWRhdGFNYXApKSx0aGlzLmlzRGF0YVVwZGF0ZWQmJih0aGlzLmlzRGF0YVVwZGF0ZWQ9ITEsdGhpcy5saW5lQ2hhcnQuc2V0RGF0YSh0aGlzLnNlcmllc0RhdGEpKSx0aGlzLmlzRml4ZWRWaWV3Qm94VXBkYXRlZCYmdGhpcy5maXhlZFZpZXdCb3gpdGhpcy52aWV3Qm94PXRoaXMuZml4ZWRWaWV3Qm94O2Vsc2UgaWYoIXRoaXMuaXNWaWV3Qm94T3ZlcnJpZGRlbiYmdGhpcy5pc1ZpZXdCb3hDaGFuZ2VkKXtjb25zdCBlPShmdW5jdGlvbiBlKHQsbixhLG8scil7bGV0IGk9bnVsbCxjPW51bGwscz1bXTtmb3IoY29uc3R7aWQ6ZSxwb2ludHM6YX1vZiB0KXtjb25zdCB0PW5bZV07aWYodCYmIXQuYXV4JiZ0LnZpc2libGUpZm9yKGxldCB0PTA7dDxhLmxlbmd0aDt0Kyspe2NvbnN0e3g6bix5OmV9PWFbdF07byhuKSYmKGk9bnVsbD09PWl8fG48aT9uOmksYz1udWxsPT09Y3x8bj5jP246YykscihlKSYmcy5wdXNoKGUpfX1zLnNvcnQoZTApO2xldCBsPXNbMF0sbT1zW3MubGVuZ3RoLTFdO3JldHVybiBhJiZzLmxlbmd0aD4yJiYobD1zW01hdGguY2VpbCguMDUqKHMubGVuZ3RoLTEpKV0sbT1zW01hdGguZmxvb3IoLjk1KihzLmxlbmd0aC0xKSldKSx7eDpudWxsIT09aSYmbnVsbCE9PWM/W2ksY106dm9pZCAwLHk6dm9pZCAwIT09bCYmdm9pZCAwIT09bT9bbCxtXTp2b2lkIDB9fSkodGhpcy5zZXJpZXNEYXRhLHRoaXMuc2VyaWVzTWV0YWRhdGFNYXAsdGhpcy5pZ25vcmVZT3V0bGllcnMsdGhpcy54U2NhbGUuaXNTYWZlTnVtYmVyLHRoaXMueVNjYWxlLmlzU2FmZU51bWJlcik7dGhpcy52aWV3Qm94PXt4OnRoaXMueFNjYWxlLm5pY2VEb21haW4obnVsbCE9PSh0PWUueCkmJnZvaWQgMCE9PXQ/dDp5bHQueCkseTp0aGlzLnlTY2FsZS5uaWNlRG9tYWluKG51bGwhPT0obj1lLnkpJiZ2b2lkIDAhPT1uP246eWx0LnkpfX0odGhpcy5pc0ZpeGVkVmlld0JveFVwZGF0ZWR8fHRoaXMuaXNWaWV3Qm94Q2hhbmdlZCkmJih0aGlzLmlzRml4ZWRWaWV3Qm94VXBkYXRlZD0hMSx0aGlzLmlzVmlld0JveENoYW5nZWQ9ITEsdGhpcy5saW5lQ2hhcnQuc2V0Vmlld0JveCh0aGlzLnZpZXdCb3gpKX19b25WaWV3Qm94Q2hhbmdlZCh7ZGF0YUV4dGVudDp0fSl7dGhpcy5pc1ZpZXdCb3hPdmVycmlkZGVuPSEwLHRoaXMuaXNWaWV3Qm94Q2hhbmdlZD0hMCx0aGlzLnZpZXdCb3g9dCx0aGlzLnVwZGF0ZUxpbmVDaGFydCgpfXZpZXdCb3hSZXNldCgpe3RoaXMuaXNWaWV3Qm94T3ZlcnJpZGRlbj0hMSx0aGlzLmlzVmlld0JveENoYW5nZWQ9ITAsdGhpcy51cGRhdGVMaW5lQ2hhcnQoKX1nZXRJc1ZpZXdCb3hPdmVycmlkZGVuKCl7cmV0dXJuIHRoaXMuaXNWaWV3Qm94T3ZlcnJpZGRlbn1vblZpZXdCb3hDaGFuZ2VkRnJvbUF4aXModCxuKXtjb25zdCBlPU9iamVjdC5hc3NpZ24oT2JqZWN0LmFzc2lnbih7fSx0aGlzLnZpZXdCb3gpLHtbbl06dH0pO3RoaXMub25WaWV3Qm94Q2hhbmdlZCh7ZGF0YUV4dGVudDplfSl9fWZ1bmN0aW9uIHZsdCh0LG4pezEmdCYmdHAoMCwibWF0LXNwaW5uZXIiLDI0KX1mdW5jdGlvbiB3bHQodCxuKXtpZigxJnQmJnRwKDAsImxpbmUtY2hhcnQiLDI3KSwyJnQpe2NvbnN0IHQ9Z3AoMiksbj1xZygzMik7SmcoImRpc2FibGVVcGRhdGUiLCF0LmlzQ2FyZFZpc2libGUpKCJwcmVmZXJyZWRSZW5kZXJlclR5cGUiLHQuUmVuZGVyZXJUeXBlLldFQkdMKSgic2VyaWVzRGF0YSIsdC5kYXRhU2VyaWVzKSgic2VyaWVzTWV0YWRhdGFNYXAiLHQuY2hhcnRNZXRhZGF0YU1hcCkoInhTY2FsZVR5cGUiLHQubmV3WFNjYWxlVHlwZSkoInlTY2FsZVR5cGUiLHQubmV3WVNjYWxlVHlwZSkoImN1c3RvbVhGb3JtYXR0ZXIiLHQueEF4aXNUeXBlPT09dC5YQXhpc1R5cGUuUkVMQVRJVkU/dC5yZWxhdGl2ZVhGb3JtYXR0ZXI6dm9pZCAwKSgiaWdub3JlWU91dGxpZXJzIix0Lmlnbm9yZU91dGxpZXJzKSgidG9vbHRpcFRlbXBsYXRlIixuKX19ZnVuY3Rpb24gU2x0KHQsbil7aWYoMSZ0KXtjb25zdCB0PW9wKCk7S2coMCwidGItbGluZS1jaGFydCIsMjgpLGNwKCJvblJlc2l6ZSIsKGZ1bmN0aW9uIG4oKXtyZXR1cm4ganIodCksZ3AoMikucmVkcmF3KCl9KSksJGcoKX1pZigyJnQpe2NvbnN0IHQ9Z3AoMik7SmcoImNvbG9yU2NhbGUiLHQucnVuQ29sb3JTY2FsZSkoInNlcmllc0RhdGFMaXN0Iix0LnNlcmllc0RhdGFMaXN0KSgidG9vbHRpcENvbHVtbnMiLHQudG9vbHRpcENvbHVtbnMpKCJ0b29sdGlwU29ydGluZ01ldGhvZCIsdC50b29sdGlwU29ydCkoImlnbm9yZVlPdXRsaWVycyIsdC5pZ25vcmVPdXRsaWVycykoInhBeGlzVHlwZSIsdC5jaGFydFhBeGlzVHlwZSgpKSgic21vb3RoaW5nRW5hYmxlZCIsdC5zY2FsYXJTbW9vdGhpbmc+MCkoInNtb290aGluZ1dlaWdodCIsdC5zY2FsYXJTbW9vdGhpbmcpKCJ5QXhpc1R5cGUiLHQueUF4aXNUeXBlKSgicmVzaXplRXZlbnREZWJvdW5jZVBlcmlvZEluTXMiLHQuUkVTSVpFX1JFRFJBV19ERUJPVU5DRV9USU1FX0lOX01TKX19ZnVuY3Rpb24gRWx0KHQsbil7aWYoMSZ0JiYobnAoMCksWWcoMSx3bHQsMSw5LCJsaW5lLWNoYXJ0IiwyNSksWWcoMixTbHQsMSwxMCwibmctdGVtcGxhdGUiLG51bGwsMjYsS2YpLGVwKCkpLDImdCl7Y29uc3QgdD1xZygzKSxuPWdwKCk7d3MoMSksSmcoIm5nSWYiLG4uZ3B1TGluZUNoYXJ0RW5hYmxlZCkoIm5nSWZFbHNlIix0KX19ZnVuY3Rpb24gQWx0KHQsbil7MSZ0JiYoS2coMCwidGgiKSxKcCgxLCJTbW9vdGhlZCIpLCRnKCkpfWZ1bmN0aW9uIHpsdCh0LG4pezEmdCYmKEtnKDAsInRoIiksSnAoMSwiUmVsYXRpdmUiKSwkZygpKX1mdW5jdGlvbiBSbHQodCxuKXtpZigxJnQmJihLZygwLCJ0ZCIpLEpwKDEpLCRnKCkpLDImdCl7Y29uc3QgdD1ncCgpLiRpbXBsaWNpdDt3cygxKSxRcCh0LnBvaW50LnkpfX1mdW5jdGlvbiBUbHQodCxuKXtpZigxJnQmJihLZygwLCJ0ZCIpLEpwKDEpLCRnKCkpLDImdCl7Y29uc3QgdD1ncCgpLiRpbXBsaWNpdCxuPWdwKDIpO3dzKDEpLEtwKCIgIixuLnJlbGF0aXZlWEZvcm1hdHRlci5mb3JtYXRSZWFkYWJsZSh0LnBvaW50LngpLCIgIil9fWZ1bmN0aW9uIERsdCh0LG4pe2lmKDEmdCYmKG5wKDApLEtnKDEsInRyIiwzMiksS2coMiwidGQiLDMzKSx0cCgzLCJzcGFuIiksJGcoKSxLZyg0LCJ0ZCIsMzQpLEpwKDUpLCRnKCksWWcoNixSbHQsMiwxLCJ0ZCIsMjIpLEtnKDcsInRkIiksSnAoOCksJGcoKSxLZyg5LCJ0ZCIpLEpwKDEwKSx5ZigxMSwibnVtYmVyIiksJGcoKSxLZygxMiwidGQiKSxKcCgxMykseWYoMTQsImRhdGUiKSwkZygpLFlnKDE1LFRsdCwyLDEsInRkIiwyMiksJGcoKSxlcCgpKSwyJnQpe2NvbnN0IHQ9bi4kaW1wbGljaXQsZT1ncCgyKTt3cygxKSxEcCgiY2xvc2VzdCIsdC5tZXRhZGF0YS5jbG9zZXN0KSx3cygyKSxUcCgiYmFja2dyb3VuZC1jb2xvciIsdC5tZXRhZGF0YS5jb2xvciksd3MoMiksUXAodC5tZXRhZGF0YS5kaXNwbGF5TmFtZSksd3MoMSksSmcoIm5nSWYiLGUuc21vb3RoaW5nRW5hYmxlZCksd3MoMiksUXAodC5wb2ludC52YWx1ZSksd3MoMiksUXAoa2YoMTEsMTAsdC5wb2ludC5zdGVwKSksd3MoMyksUXAodmYoMTQsMTIsdC5wb2ludC53YWxsVGltZSwic2hvcnQiKSksd3MoMiksSmcoIm5nSWYiLGUueEF4aXNUeXBlPT09ZS5YQXhpc1R5cGUuUkVMQVRJVkUpfX1mdW5jdGlvbiBJbHQodCxuKXtpZigxJnQmJihLZygwLCJ0YWJsZSIsMjkpLEtnKDEsInRoZWFkIiksS2coMiwidHIiKSx0cCgzLCJ0aCIsMzApLEtnKDQsInRoIiksSnAoNSwiUnVuIiksJGcoKSxZZyg2LEFsdCwyLDAsInRoIiwyMiksS2coNywidGgiKSxKcCg4LCJWYWx1ZSIpLCRnKCksS2coOSwidGgiKSxKcCgxMCwiU3RlcCIpLCRnKCksS2coMTEsInRoIiksSnAoMTIsIlRpbWUiKSwkZygpLFlnKDEzLHpsdCwyLDAsInRoIiwyMiksJGcoKSwkZygpLEtnKDE0LCJ0Ym9keSIpLFlnKDE1LERsdCwxNiwxNSwibmctY29udGFpbmVyIiwzMSksJGcoKSwkZygpKSwyJnQpe2NvbnN0IHQ9bi5kYXRhLGU9bi5jdXJzb3JMb2NhdGlvbkluRGF0YUNvb3JkLGE9Z3AoKTt3cyg2KSxKZygibmdJZiIsYS5zbW9vdGhpbmdFbmFibGVkKSx3cyg3KSxKZygibmdJZiIsYS54QXhpc1R5cGU9PT1hLlhBeGlzVHlwZS5SRUxBVElWRSksd3MoMiksSmcoIm5nRm9yT2YiLGEuZ2V0Q3Vyc29yQXdhcmVUb29sdGlwRGF0YSh0LGUpKSgibmdGb3JUcmFja0J5IixhLnRyYWNrQnlUb29sdGlwRGF0dW0pfX1rbHQuybVmYWM9ZnVuY3Rpb24gdChuKXtyZXR1cm4gbmV3KG58fGtsdCkoWmcoVm0pKX0sa2x0Lsm1Y21wPV9vKHt0eXBlOmtsdCxzZWxlY3RvcnM6W1sibGluZS1jaGFydCJdXSx2aWV3UXVlcnk6ZnVuY3Rpb24gdChuLGUpe3ZhciBhOzEmbiYmKGpmKF9sdCwhMCx4dSksamYoQ2x0LCEwLHh1KSxqZihNbHQsITAseHUpLFVmKE9sdCwhMCx4dSkpLDImbiYmKFZmKGE9WmYoKSkmJihlLnNlcmllc1ZpZXc9YS5maXJzdCksVmYoYT1aZigpKSYmKGUueEF4aXM9YS5maXJzdCksVmYoYT1aZigpKSYmKGUueUF4aXM9YS5maXJzdCksVmYoYT1aZigpKSYmKGUuY2hhcnRFbD1hLmZpcnN0KSl9LGlucHV0czp7cHJlZmVycmVkUmVuZGVyZXJUeXBlOiJwcmVmZXJyZWRSZW5kZXJlclR5cGUiLHNlcmllc0RhdGE6InNlcmllc0RhdGEiLGZpeGVkVmlld0JveDoiZml4ZWRWaWV3Qm94IixzZXJpZXNNZXRhZGF0YU1hcDoic2VyaWVzTWV0YWRhdGFNYXAiLHhTY2FsZVR5cGU6InhTY2FsZVR5cGUiLHlTY2FsZVR5cGU6InlTY2FsZVR5cGUiLGN1c3RvbVhGb3JtYXR0ZXI6ImN1c3RvbVhGb3JtYXR0ZXIiLGN1c3RvbVlGb3JtYXR0ZXI6ImN1c3RvbVlGb3JtYXR0ZXIiLHRvb2x0aXBUZW1wbGF0ZToidG9vbHRpcFRlbXBsYXRlIixkaXNhYmxlVXBkYXRlOiJkaXNhYmxlVXBkYXRlIixpZ25vcmVZT3V0bGllcnM6Imlnbm9yZVlPdXRsaWVycyJ9LGZlYXR1cmVzOltwcl0sZGVjbHM6MTQsdmFyczoyNyxjb25zdHM6W1siZGV0ZWN0UmVzaXplIiwiIiwiY2RrT3ZlcmxheU9yaWdpbiIsIiIsMSwiY29udGFpbmVyIiwzLCJyZXNpemVFdmVudERlYm91bmNlUGVyaW9kSW5NcyIsIm9uUmVzaXplIl0sWyJvdmVybGF5VGFyZ2V0IiwiY2RrT3ZlcmxheU9yaWdpbiJdLFsxLCJzZXJpZXMtdmlldyJdLFsic2VyaWVzVmlldyIsIiJdLFszLCJ2aWV3RXh0ZW50IiwieFNjYWxlIiwieVNjYWxlIiwieEdyaWRDb3VudCIsInlHcmlkQ291bnQiLCJkb21EaW0iXSxbNCwibmdJZiJdLFszLCJzZXJpZXNEYXRhIiwic2VyaWVzTWV0YWRhdGFNYXAiLCJ2aWV3RXh0ZW50IiwieFNjYWxlIiwieVNjYWxlIiwidG9vbHRpcE9yaWdpbkVsIiwiZG9tRGltIiwidG9vbHRpcFRlbXBsYXRlIiwib25WaWV3RXh0ZW50Q2hhbmdlIiwib25WaWV3RXh0ZW50UmVzZXQiXSxbImF4aXMiLCJ5IiwxLCJ5LWF4aXMiLDMsImF4aXNFeHRlbnQiLCJjdXN0b21Gb3JtYXR0ZXIiLCJkb21EaW0iLCJncmlkQ291bnQiLCJzY2FsZSIsIm9uVmlld0V4dGVudENoYW5nZSJdLFsieUF4aXMiLCIiXSxbImF4aXMiLCJ4IiwxLCJ4LWF4aXMiLDMsImF4aXNFeHRlbnQiLCJjdXN0b21Gb3JtYXR0ZXIiLCJkb21EaW0iLCJncmlkQ291bnQiLCJzY2FsZSIsIm9uVmlld0V4dGVudENoYW5nZSJdLFsieEF4aXMiLCIiXSxbMSwiZG90Il0sWzEsInJlY3QiXSxbImNoYXJ0RWwiLCIiXV0sdGVtcGxhdGU6ZnVuY3Rpb24gdChuLGUpe2lmKDEmbiYmKEtnKDAsImRpdiIsMCwxKSxjcCgib25SZXNpemUiLChmdW5jdGlvbiB0KCl7cmV0dXJuIGUub25WaWV3UmVzaXplKCl9KSksS2coMiwiZGl2IiwyLDMpLHRwKDQsImxpbmUtY2hhcnQtZ3JpZC12aWV3Iiw0KSxZZyg1LFBsdCwyLDAsInN2ZyIsNSksWWcoNix4bHQsMiwwLCJjYW52YXMiLDUpLEtnKDcsImxpbmUtY2hhcnQtaW50ZXJhY3RpdmUtdmlldyIsNiksY3AoIm9uVmlld0V4dGVudENoYW5nZSIsKGZ1bmN0aW9uIHQobil7cmV0dXJuIGUub25WaWV3Qm94Q2hhbmdlZChuKX0pKSgib25WaWV3RXh0ZW50UmVzZXQiLChmdW5jdGlvbiB0KCl7cmV0dXJuIGUudmlld0JveFJlc2V0KCl9KSksJGcoKSwkZygpLEtnKDgsImxpbmUtY2hhcnQtYXhpcyIsNyw4KSxjcCgib25WaWV3RXh0ZW50Q2hhbmdlIiwoZnVuY3Rpb24gdChuKXtyZXR1cm4gZS5vblZpZXdCb3hDaGFuZ2VkRnJvbUF4aXMobiwieSIpfSkpLCRnKCksS2coMTAsImxpbmUtY2hhcnQtYXhpcyIsOSwxMCksY3AoIm9uVmlld0V4dGVudENoYW5nZSIsKGZ1bmN0aW9uIHQobil7cmV0dXJuIGUub25WaWV3Qm94Q2hhbmdlZEZyb21BeGlzKG4sIngiKX0pKSwkZygpLEtnKDEyLCJkaXYiLDExKSx0cCgxMywic3BhbiIsMTIpLCRnKCksJGcoKSksMiZuKXtjb25zdCB0PXFnKDEpO0pnKCJyZXNpemVFdmVudERlYm91bmNlUGVyaW9kSW5NcyIsMCksd3MoNCksSmcoInZpZXdFeHRlbnQiLGUudmlld0JveCkoInhTY2FsZSIsZS54U2NhbGUpKCJ5U2NhbGUiLGUueVNjYWxlKSgieEdyaWRDb3VudCIsZS5YX0dSSURfQ09VTlQpKCJ5R3JpZENvdW50IixlLllfR1JJRF9DT1VOVCkoImRvbURpbSIsZS5kb21EaW1lbnNpb25zLm1haW4pLHdzKDEpLEpnKCJuZ0lmIixlLmdldFJlbmRlcmVyVHlwZSgpPT09ZS5SZW5kZXJlclR5cGUuU1ZHKSx3cygxKSxKZygibmdJZiIsZS5nZXRSZW5kZXJlclR5cGUoKT09PWUuUmVuZGVyZXJUeXBlLldFQkdMKSx3cygxKSxKZygic2VyaWVzRGF0YSIsZS5zZXJpZXNEYXRhKSgic2VyaWVzTWV0YWRhdGFNYXAiLGUuc2VyaWVzTWV0YWRhdGFNYXApKCJ2aWV3RXh0ZW50IixlLnZpZXdCb3gpKCJ4U2NhbGUiLGUueFNjYWxlKSgieVNjYWxlIixlLnlTY2FsZSkoInRvb2x0aXBPcmlnaW5FbCIsdCkoImRvbURpbSIsZS5kb21EaW1lbnNpb25zLm1haW4pKCJ0b29sdGlwVGVtcGxhdGUiLGUudG9vbHRpcFRlbXBsYXRlKSx3cygxKSxKZygiYXhpc0V4dGVudCIsZS52aWV3Qm94LnkpKCJjdXN0b21Gb3JtYXR0ZXIiLGUuY3VzdG9tWUZvcm1hdHRlcikoImRvbURpbSIsZS5kb21EaW1lbnNpb25zLnlBeGlzKSgiZ3JpZENvdW50IixlLllfR1JJRF9DT1VOVCkoInNjYWxlIixlLnlTY2FsZSksd3MoMiksSmcoImF4aXNFeHRlbnQiLGUudmlld0JveC54KSgiY3VzdG9tRm9ybWF0dGVyIixlLmN1c3RvbVhGb3JtYXR0ZXIpKCJkb21EaW0iLGUuZG9tRGltZW5zaW9ucy54QXhpcykoImdyaWRDb3VudCIsZS5YX0dSSURfQ09VTlQpKCJzY2FsZSIsZS54U2NhbGUpfX0sZGlyZWN0aXZlczpbX1ksTXosJHN0LFdNLGRsdCxobHRdLHN0eWxlczpbJ1tfbmdob3N0LSVDT01QJV17Y29udGFpbjpzdHJpY3Q7ZGlzcGxheTppbmxpbmUtYmxvY2t9LmNvbnRhaW5lcltfbmdjb250ZW50LSVDT01QJV17YmFja2dyb3VuZDojZmZmO2Rpc3BsYXk6Z3JpZDtoZWlnaHQ6MTAwJTtvdmVyZmxvdzpoaWRkZW47d2lkdGg6MTAwJTtncmlkLXRlbXBsYXRlLWFyZWFzOiJ5YXhpcyBzZXJpZXMiICJkb3QgeGF4aXMiO2dyaWQtdGVtcGxhdGUtY29sdW1uczo1MHB4IDFmcjtncmlkLWF1dG8tcm93czoxZnIgMzBweH0uc2VyaWVzLXZpZXdbX25nY29udGVudC0lQ09NUCVde2dyaWQtYXJlYTpzZXJpZXM7cG9zaXRpb246cmVsYXRpdmU7b3ZlcmZsb3c6aGlkZGVufS5zZXJpZXMtdmlld1tfbmdjb250ZW50LSVDT01QJV0gICBjYW52YXNbX25nY29udGVudC0lQ09NUCVdLCAuc2VyaWVzLXZpZXdbX25nY29udGVudC0lQ09NUCVdICAgc3ZnW19uZ2NvbnRlbnQtJUNPTVAlXSwgLnNlcmllcy12aWV3W19uZ2NvbnRlbnQtJUNPTVAlXSAgIGxpbmUtY2hhcnQtZ3JpZC12aWV3W19uZ2NvbnRlbnQtJUNPTVAlXSwgLnNlcmllcy12aWV3W19uZ2NvbnRlbnQtJUNPTVAlXSAgIGxpbmUtY2hhcnQtaW50ZXJhY3RpdmUtdmlld1tfbmdjb250ZW50LSVDT01QJV17aGVpZ2h0OjEwMCU7bGVmdDowO3Bvc2l0aW9uOmFic29sdXRlO3RvcDowO3dpZHRoOjEwMCV9LngtYXhpc1tfbmdjb250ZW50LSVDT01QJV17Z3JpZC1hcmVhOnhheGlzfS55LWF4aXNbX25nY29udGVudC0lQ09NUCVde2dyaWQtYXJlYTp5YXhpc30uZG90W19uZ2NvbnRlbnQtJUNPTVAlXXthbGlnbi1pdGVtczpmbGV4LXN0YXJ0O2Rpc3BsYXk6ZmxleDtncmlkLWFyZWE6ZG90O2p1c3RpZnktY29udGVudDpmbGV4LWVuZH0uZG90W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5yZWN0W19uZ2NvbnRlbnQtJUNPTVAlXXtoZWlnaHQ6MXB4O3dpZHRoOjFweDtiYWNrZ3JvdW5kLWNvbG9yOiNhYWF9J10sY2hhbmdlRGV0ZWN0aW9uOjB9KTtjb25zdCBObHQ9W3t0aXRsZToiTmFtZSIsZXZhbHVhdGU6dD0+dC5kYXRhc2V0Lm1ldGFkYXRhKCkubWV0YS5kaXNwbGF5TmFtZX0se3RpdGxlOiJWYWx1ZSIsZXZhbHVhdGU6dD0+KGZ1bmN0aW9uIG4odCl7cmV0dXJuIGlzTmFOKHQpfHwhTnVtYmVyLmlzRmluaXRlKHQpfHxOdW1iZXIuaXNJbnRlZ2VyKHQpJiZNYXRoLmFicyh0KTx0MD90LnRvU3RyaW5nKCk6dC50b1ByZWNpc2lvbig0KX0pKHQuZGF0dW0ueSl9LHt0aXRsZToiU3RlcCIsZXZhbHVhdGU6dD0+dC5kYXR1bS5zdGVwLnRvU3RyaW5nKCl9LHt0aXRsZToiVGltZSIsZXZhbHVhdGU6dD0+bmV3IERhdGUoMWUzKnQuZGF0dW0ud2FsbFRpbWUpLnRvTG9jYWxlU3RyaW5nKCl9LHt0aXRsZToiUmVsYXRpdmUiLGV2YWx1YXRlOnQ9Pntjb25zdCBuPXQuZGF0YXNldC5kYXRhKCk7cmV0dXJuKGZ1bmN0aW9uIGUodCl7Y29uc3Qgbj1bXSxlPXQvMzZlNSxhPU1hdGguZmxvb3IoZS8yNCk7YSYmbi5wdXNoKGEudG9TdHJpbmcoKSsiZCIpO2NvbnN0IG89ZS0yNCphLHI9TWF0aC5mbG9vcihvKTsocnx8YSkmJm4ucHVzaChyLnRvU3RyaW5nKCkrImgiKTtjb25zdCBpPTYwKihvLXIpLGM9TWF0aC5mbG9vcihpKTsoY3x8cnx8YSkmJm4ucHVzaChjLnRvU3RyaW5nKCkrIm0iKTtjb25zdCBzPU1hdGguZmxvb3IoNjAqKGktYykpO3JldHVybiBuLnB1c2gocy50b1N0cmluZygpKyJzIiksbi5qb2luKCIgIil9KSgxZTMqKHQuZGF0dW0ud2FsbFRpbWUtKG4ubGVuZ3RoPjA/blswXS53YWxsVGltZTowKSkpfX1dO2NsYXNzIEZsdHtjb25zdHJ1Y3Rvcih0LG4pe3RoaXMucmVmPXQsdGhpcy5kaWFsb2c9bix0aGlzLlJFU0laRV9SRURSQVdfREVCT1VOQ0VfVElNRV9JTl9NUz01MCx0aGlzLkRhdGFMb2FkU3RhdGU9ZlIsdGhpcy5SZW5kZXJlclR5cGU9ViQsdGhpcy5vbkZ1bGxTaXplVG9nZ2xlPW5ldyBFZix0aGlzLm9uUGluQ2xpY2tlZD1uZXcgRWYsdGhpcy55QXhpc1R5cGU9VVQuTElORUFSLHRoaXMubmV3WVNjYWxlVHlwZT1qJC5MSU5FQVIsdGhpcy5YQXhpc1R5cGU9V1QsdGhpcy50b29sdGlwQ29sdW1ucz1ObHQsdGhpcy5yZWxhdGl2ZVhGb3JtYXR0ZXI9JDh9Y2hhcnRYQXhpc1R5cGUoKXtzd2l0Y2godGhpcy54QXhpc1R5cGUpe2Nhc2UgV1QuU1RFUDpyZXR1cm4galQuU1RFUDtjYXNlIFdULldBTExfVElNRTpyZXR1cm4galQuV0FMTF9USU1FO2Nhc2UgV1QuUkVMQVRJVkU6cmV0dXJuIGpULlJFTEFUSVZFO2RlZmF1bHQ6dGhyb3cgbmV3IEVycm9yKCJJbnZhbGlkIHhBeGlzVHlwZSBmb3IgbGluZSBjaGFydC4iKX19dG9nZ2xlWUF4aXNUeXBlKCl7dGhpcy55QXhpc1R5cGU9dGhpcy55QXhpc1R5cGU9PT1VVC5MSU5FQVI/VVQuTE9HOlVULkxJTkVBUix0aGlzLm5ld1lTY2FsZVR5cGU9dGhpcy55QXhpc1R5cGU9PT1VVC5MSU5FQVI/aiQuTElORUFSOmokLkxPRzEwfXJlc2V0RG9tYWluKCl7dGhpcy5saW5lQ2hhcnQmJnRoaXMubGluZUNoYXJ0LnJlc2V0RG9tYWluKCksdGhpcy5uZXdMaW5lQ2hhcnQmJnRoaXMubmV3TGluZUNoYXJ0LnZpZXdCb3hSZXNldCgpfXJlZHJhdygpe3RoaXMubGluZUNoYXJ0JiZ0aGlzLnJlZi5uYXRpdmVFbGVtZW50LmNsaWVudFdpZHRoJiZ0aGlzLmxpbmVDaGFydC5yZWRyYXcoKX10cmFja0J5VG9vbHRpcERhdHVtKHQsbil7cmV0dXJuIG4uaWR9Z2V0Q3Vyc29yQXdhcmVUb29sdGlwRGF0YSh0LG4pe2NvbnN0IGU9dC5tYXAoKHQ9Pk9iamVjdC5hc3NpZ24oT2JqZWN0LmFzc2lnbih7fSx0KSx7bWV0YWRhdGE6T2JqZWN0LmFzc2lnbihPYmplY3QuYXNzaWduKHt9LHQubWV0YWRhdGEpLHtjbG9zZXN0OiExLGRpc3RTcVRvQ3Vyc29yOk1hdGguaHlwb3QodC5wb2ludC54LW4ueCx0LnBvaW50Lnktbi55KX0pfSkpKTtsZXQgYT0xLzAsbz0wO2ZvcihsZXQgdD0wO3Q8ZS5sZW5ndGg7dCsrKWE+ZVt0XS5tZXRhZGF0YS5kaXN0U3FUb0N1cnNvciYmKGE9ZVt0XS5tZXRhZGF0YS5kaXN0U3FUb0N1cnNvcixvPXQpO3N3aXRjaChlLmxlbmd0aCYmKGVbb10ubWV0YWRhdGEuY2xvc2VzdD0hMCksdGhpcy50b29sdGlwU29ydCl7Y2FzZSBWVC5ERUZBVUxUOnJldHVybiBlO2Nhc2UgVlQuQVNDRU5ESU5HOnJldHVybiBlLnNvcnQoKCh0LG4pPT50LnBvaW50Lnktbi5wb2ludC55KSk7Y2FzZSBWVC5ERVNDRU5ESU5HOnJldHVybiBlLnNvcnQoKCh0LG4pPT5uLnBvaW50LnktdC5wb2ludC55KSk7Y2FzZSBWVC5ORUFSRVNUOnJldHVybiBlLnNvcnQoKCh0LG4pPT50Lm1ldGFkYXRhLmRpc3RTcVRvQ3Vyc29yLW4ubWV0YWRhdGEuZGlzdFNxVG9DdXJzb3IpKX19b3BlbkRhdGFEb3dubG9hZERpYWxvZygpe3RoaXMuZGlhbG9nLm9wZW4odGhpcy5EYXRhRG93bmxvYWRDb21wb25lbnQse2RhdGE6e2NhcmRJZDp0aGlzLmNhcmRJZH19KX19Rmx0Lsm1ZmFjPWZ1bmN0aW9uIHQobil7cmV0dXJuIG5ldyhufHxGbHQpKFpnKHh1KSxaZyhiQikpfSxGbHQuybVjbXA9X28oe3R5cGU6Rmx0LHNlbGVjdG9yczpbWyJzY2FsYXItY2FyZC1jb21wb25lbnQiXV0sdmlld1F1ZXJ5OmZ1bmN0aW9uIHQobixlKXt2YXIgYTsxJm4mJihVZihuMCwhMCksVWYoa2x0LCEwKSksMiZuJiYoVmYoYT1aZigpKSYmKGUubGluZUNoYXJ0PWEuZmlyc3QpLFZmKGE9WmYoKSkmJihlLm5ld0xpbmVDaGFydD1hLmZpcnN0KSl9LGlucHV0czp7Y2FyZElkOiJjYXJkSWQiLGxvYWRTdGF0ZToibG9hZFN0YXRlIix0aXRsZToidGl0bGUiLHRhZzoidGFnIix0b29sdGlwU29ydDoidG9vbHRpcFNvcnQiLHhBeGlzVHlwZToieEF4aXNUeXBlIixzaG93RnVsbFNpemU6InNob3dGdWxsU2l6ZSIsaXNQaW5uZWQ6ImlzUGlubmVkIixEYXRhRG93bmxvYWRDb21wb25lbnQ6IkRhdGFEb3dubG9hZENvbXBvbmVudCIsbmV3WFNjYWxlVHlwZToibmV3WFNjYWxlVHlwZSIscnVuQ29sb3JTY2FsZToicnVuQ29sb3JTY2FsZSIsaWdub3JlT3V0bGllcnM6Imlnbm9yZU91dGxpZXJzIixzY2FsYXJTbW9vdGhpbmc6InNjYWxhclNtb290aGluZyIsc2VyaWVzRGF0YUxpc3Q6InNlcmllc0RhdGFMaXN0Iixpc0NhcmRWaXNpYmxlOiJpc0NhcmRWaXNpYmxlIixzbW9vdGhpbmdFbmFibGVkOiJzbW9vdGhpbmdFbmFibGVkIixncHVMaW5lQ2hhcnRFbmFibGVkOiJncHVMaW5lQ2hhcnRFbmFibGVkIixkYXRhU2VyaWVzOiJkYXRhU2VyaWVzIixjaGFydE1ldGFkYXRhTWFwOiJjaGFydE1ldGFkYXRhTWFwIixpc0V2ZXJWaXNpYmxlOiJpc0V2ZXJWaXNpYmxlIn0sb3V0cHV0czp7b25GdWxsU2l6ZVRvZ2dsZToib25GdWxsU2l6ZVRvZ2dsZSIsb25QaW5DbGlja2VkOiJvblBpbkNsaWNrZWQifSxkZWNsczozMyx2YXJzOjEwLGNvbnN0czpmdW5jdGlvbigpe3JldHVybltbMSwiaGVhZGluZyJdLFsxLCJ0YWciLDMsInRpdGxlIiwidmFsdWUiXSxbMSwiY29udHJvbHMiXSxbIm1hdC1pY29uLWJ1dHRvbiIsIiIsMSwicGluLWJ1dHRvbiIsMywiY2xpY2siLDYsImFyaWEtbGFiZWwiXSxbImFyaWEtbGFiZWwiLCJ1bmRlZmluZWQiIT10eXBlb2YgbmdJMThuQ2xvc3VyZU1vZGUmJm5nSTE4bkNsb3N1cmVNb2RlP2dvb2cuZ2V0TXNnKCJQaW4gY2FyZCIpOiRsb2NhbGl6ZWA6QSBidXR0b24gdG8gcGluIGEgY2FyZC7ikJ9lNjY1ZGM3MTJiZDVmMThkNGRmYTNhMjllMTI1ZDU2NWNjNTFlMmY24pCfNzI4NDYwNjQyNjIzNDM3NTM0NDpQaW4gY2FyZGBdLFszLCJzdmdJY29uIl0sWyJtYXQtaWNvbi1idXR0b24iLCIiLCJ0aXRsZSIsIlRvZ2dsZSBmdWxsIHNpemUgbW9kZSIsMywiY2xpY2siLDYsImFyaWEtbGFiZWwiXSxbImFyaWEtbGFiZWwiLCJ1bmRlZmluZWQiIT10eXBlb2YgbmdJMThuQ2xvc3VyZU1vZGUmJm5nSTE4bkNsb3N1cmVNb2RlP2dvb2cuZ2V0TXNnKCJUb2dnbGUgZnVsbCBzaXplIG1vZGUiKTokbG9jYWxpemVgOkEgYnV0dG9uIG9uIGxpbmUgY2hhcnQgdGhhdCB0b2dnbGVzIGZ1bGwgc2l6ZSBtb2RlLuKQn2ZjOGY3NjdkMGI5ZjkzMDE4N2ExYmFlMzQ0NzdhZDI4NzM2ZWNlMzPikJ85MTU3MjE1NjM2Mzg5MjY1OTc6VG9nZ2xlIGZ1bGwgc2l6ZSBtb2RlYF0sWyJtYXQtaWNvbi1idXR0b24iLCIiLCJ0aXRsZSIsIk1vcmUgbGluZSBjaGFydCBvcHRpb25zIiwzLCJtYXRNZW51VHJpZ2dlckZvciIsNiwiYXJpYS1sYWJlbCJdLFsiYXJpYS1sYWJlbCIsInVuZGVmaW5lZCIhPXR5cGVvZiBuZ0kxOG5DbG9zdXJlTW9kZSYmbmdJMThuQ2xvc3VyZU1vZGU/Z29vZy5nZXRNc2coIk1vcmUgbGluZSBjaGFydCBvcHRpb25zIik6JGxvY2FsaXplYDpBbiBvdmVyZmxvdyBtZW51IGJ1dHRvbiB0aGF0IG9wZW5zIG1vcmUgbGluZSBjaGFydCBvcHRpb25z4pCfYjI2MGZhYjk0NmEzMDc3Y2UyMGZkMjhlMzM2OTc5ZjU4NjcyMGU4ZOKQnzg3ODA1Mzc0MDIxMDMzNjQzNTpNb3JlIGxpbmUgY2hhcnQgb3B0aW9uc2BdLFsic3ZnSWNvbiIsIm1vcmVfdmVydF8yNHB4Il0sWyJtZW51IiwibWF0TWVudSJdLFsibWF0LW1lbnUtaXRlbSIsIiIsMywiY2xpY2siLDYsImFyaWEtbGFiZWwiXSxbImFyaWEtbGFiZWwiLCJ1bmRlZmluZWQiIT10eXBlb2YgbmdJMThuQ2xvc3VyZU1vZGUmJm5nSTE4bkNsb3N1cmVNb2RlP2dvb2cuZ2V0TXNnKCJUb2dnbGUgWS1heGlzIGxvZyBzY2FsZSBvbiBsaW5lIGNoYXJ0Iik6JGxvY2FsaXplYDpBIGJ1dHRvbiB0aGF0IHRvZ2dsZXMgbG9nIHNjYWxlIG9uIHktYXhpcyBvbiBhIGxpbmUgY2hhcnTikJ9mZTkxZjk2YWI5YjNiYWNhNWE0ODkxM2YyYjBmYWU4NDQ4M2Q5M2Uz4pCfMzM3NDY0NTYyMDYzODg4MzkyNjpUb2dnbGUgWS1heGlzIGxvZyBzY2FsZSBvbiBsaW5lIGNoYXJ0YF0sWyJzdmdJY29uIiwibGluZV93ZWlnaHRfMjRweCJdLFsibWF0LW1lbnUtaXRlbSIsIiIsMywiZGlzYWJsZWQiLCJ0aXRsZSIsImNsaWNrIiw2LCJhcmlhLWxhYmVsIl0sWyJhcmlhLWxhYmVsIiwidW5kZWZpbmVkIiE9dHlwZW9mIG5nSTE4bkNsb3N1cmVNb2RlJiZuZ0kxOG5DbG9zdXJlTW9kZT9nb29nLmdldE1zZygiRml0IGxpbmUgY2hhcnQgZG9tYWlucyB0byBkYXRhIik6JGxvY2FsaXplYDpBIGJ1dHRvbiB0aGF0IHJlc2V0cyBsaW5lIGNoYXJ0IGRvbWFpbiB0byB0aGUgZGF0YeKQn2U2OGE1NTI5NDFhYjQyN2E5OWU3NDM3ZTA4NDQzZjMwYWM3MWNjZDbikJ8zODMwNjQ2NTIxMDU4MjY4NTU4OkZpdCBsaW5lIGNoYXJ0IGRvbWFpbnMgdG8gZGF0YWBdLFsic3ZnSWNvbiIsInNldHRpbmdzX292ZXJzY2FuXzI0cHgiXSxbIm1hdC1tZW51LWl0ZW0iLCIiLCJhcmlhLWxhYmVsIiwiT3BlbiBkaWFsb2cgdG8gZG93bmxvYWQgZGF0YSIsMywiY2xpY2siXSxbInN2Z0ljb24iLCJnZXRfYXBwXzI0cHgiXSxbMSwiY2hhcnQtY29udGFpbmVyIl0sWyJkaWFtZXRlciIsIjE4Iiw0LCJuZ0lmIl0sWzQsIm5nSWYiXSxbInRvb2x0aXAiLCIiXSxbImRpYW1ldGVyIiwiMTgiXSxbMywiZGlzYWJsZVVwZGF0ZSIsInByZWZlcnJlZFJlbmRlcmVyVHlwZSIsInNlcmllc0RhdGEiLCJzZXJpZXNNZXRhZGF0YU1hcCIsInhTY2FsZVR5cGUiLCJ5U2NhbGVUeXBlIiwiY3VzdG9tWEZvcm1hdHRlciIsImlnbm9yZVlPdXRsaWVycyIsInRvb2x0aXBUZW1wbGF0ZSIsNCwibmdJZiIsIm5nSWZFbHNlIl0sWyJsZWdhY3lDaGFydCIsIiJdLFszLCJkaXNhYmxlVXBkYXRlIiwicHJlZmVycmVkUmVuZGVyZXJUeXBlIiwic2VyaWVzRGF0YSIsInNlcmllc01ldGFkYXRhTWFwIiwieFNjYWxlVHlwZSIsInlTY2FsZVR5cGUiLCJjdXN0b21YRm9ybWF0dGVyIiwiaWdub3JlWU91dGxpZXJzIiwidG9vbHRpcFRlbXBsYXRlIl0sWyJkZXRlY3RSZXNpemUiLCIiLDMsImNvbG9yU2NhbGUiLCJzZXJpZXNEYXRhTGlzdCIsInRvb2x0aXBDb2x1bW5zIiwidG9vbHRpcFNvcnRpbmdNZXRob2QiLCJpZ25vcmVZT3V0bGllcnMiLCJ4QXhpc1R5cGUiLCJzbW9vdGhpbmdFbmFibGVkIiwic21vb3RoaW5nV2VpZ2h0IiwieUF4aXNUeXBlIiwicmVzaXplRXZlbnREZWJvdW5jZVBlcmlvZEluTXMiLCJvblJlc2l6ZSJdLFsxLCJ0b29sdGlwIl0sWzEsImNpcmNsZS1oZWFkZXIiXSxbNCwibmdGb3IiLCJuZ0Zvck9mIiwibmdGb3JUcmFja0J5Il0sWzEsInRvb2x0aXAtcm93Il0sWzEsInRvb2x0aXAtcm93LWNpcmNsZSJdLFsxLCJuYW1lIl1dfSx0ZW1wbGF0ZTpmdW5jdGlvbiB0KG4sZSl7aWYoMSZuJiYoS2coMCwiZGl2IiwwKSx0cCgxLCJ0Yi10cnVuY2F0ZWQtcGF0aCIsMSksS2coMiwic3BhbiIsMiksS2coMywiYnV0dG9uIiwzKSxsdSg0LDQpLGNwKCJjbGljayIsKGZ1bmN0aW9uIHQoKXtyZXR1cm4gZS5vblBpbkNsaWNrZWQuZW1pdCghZS5pc1Bpbm5lZCl9KSksdHAoNSwibWF0LWljb24iLDUpLCRnKCksS2coNiwiYnV0dG9uIiw2KSxsdSg3LDcpLGNwKCJjbGljayIsKGZ1bmN0aW9uIHQoKXtyZXR1cm4gZS5vbkZ1bGxTaXplVG9nZ2xlLmVtaXQoKX0pKSx0cCg4LCJtYXQtaWNvbiIsNSksJGcoKSxLZyg5LCJidXR0b24iLDgpLGx1KDEwLDkpLHRwKDExLCJtYXQtaWNvbiIsMTApLCRnKCksS2coMTIsIm1hdC1tZW51IixudWxsLDExKSxLZygxNCwiYnV0dG9uIiwxMiksbHUoMTUsMTMpLGNwKCJjbGljayIsKGZ1bmN0aW9uIHQoKXtyZXR1cm4gZS50b2dnbGVZQXhpc1R5cGUoKX0pKSx0cCgxNiwibWF0LWljb24iLDE0KSxLZygxNywic3BhbiIpLEpwKDE4LCJUb2dnbGUgWS1heGlzIGxvZyBzY2FsZSIpLCRnKCksJGcoKSxLZygxOSwiYnV0dG9uIiwxNSksbHUoMjAsMTYpLGNwKCJjbGljayIsKGZ1bmN0aW9uIHQoKXtyZXR1cm4gZS5yZXNldERvbWFpbigpfSkpLHRwKDIxLCJtYXQtaWNvbiIsMTcpLEtnKDIyLCJzcGFuIiksSnAoMjMsIkZpdCBkb21haW4gdG8gZGF0YSIpLCRnKCksJGcoKSxLZygyNCwiYnV0dG9uIiwxOCksY3AoImNsaWNrIiwoZnVuY3Rpb24gdCgpe3JldHVybiBlLm9wZW5EYXRhRG93bmxvYWREaWFsb2coKX0pKSx0cCgyNSwibWF0LWljb24iLDE5KSxLZygyNiwic3BhbiIpLEpwKDI3LCJEb3dubG9hZCBkYXRhIiksJGcoKSwkZygpLCRnKCksJGcoKSwkZygpLEtnKDI4LCJkaXYiLDIwKSxZZygyOSx2bHQsMSwwLCJtYXQtc3Bpbm5lciIsMjEpLFlnKDMwLEVsdCw0LDIsIm5nLWNvbnRhaW5lciIsMjIpLFlnKDMxLElsdCwxNiw0LCJuZy10ZW1wbGF0ZSIsbnVsbCwyMyxLZiksJGcoKSksMiZuKXtjb25zdCB0PXFnKDEzKTt3cygxKSxfcCgidGl0bGUiLGUudGFnKSxfcCgidmFsdWUiLGUudGl0bGUpLHdzKDIpLE5nKCJ0aXRsZSIsZS5pc1Bpbm5lZD8iVW5waW4gY2FyZCI6IlBpbiBjYXJkIiksd3MoMiksSmcoInN2Z0ljb24iLGUuaXNQaW5uZWQ/ImtlZXBfMjRweCI6ImtlZXBfb3V0bGluZV8yNHB4Iiksd3MoMyksSmcoInN2Z0ljb24iLGUuc2hvd0Z1bGxTaXplPyJmdWxsc2NyZWVuX2V4aXRfMjRweCI6ImZ1bGxzY3JlZW5fMjRweCIpLHdzKDEpLEpnKCJtYXRNZW51VHJpZ2dlckZvciIsdCksd3MoMTApLEpnKCJkaXNhYmxlZCIsIWUuc2VyaWVzRGF0YUxpc3R8fCFlLnNlcmllc0RhdGFMaXN0Lmxlbmd0aHx8ZS5uZXdMaW5lQ2hhcnQmJiFlLm5ld0xpbmVDaGFydC5nZXRJc1ZpZXdCb3hPdmVycmlkZGVuKCkpKCJ0aXRsZSIsZS5uZXdMaW5lQ2hhcnQmJiFlLm5ld0xpbmVDaGFydC5nZXRJc1ZpZXdCb3hPdmVycmlkZGVuPyJMaW5lIGNoYXJ0IGlzIGFscmVhZHkgZml0dGVkIHRvIGRhdGEuIFdoZW4gZGF0YSB1cGRhdGVzLCB0aGUgbGluZSBjaGFydCB3aWxsIGF1dG8gZml0IHRvIGl0cyBkb21haW4uIjoiIiksd3MoMTApLEpnKCJuZ0lmIixlLmxvYWRTdGF0ZT09PWUuRGF0YUxvYWRTdGF0ZS5MT0FESU5HKSx3cygxKSxKZygibmdJZiIsZS5pc0V2ZXJWaXNpYmxlKX19LGRpcmVjdGl2ZXM6W1MkLGVBLEJCLElxLEFxLHhxLFdNLGhaLGtsdCxuMCxfWSxqTV0scGlwZXM6W2ZPLGxPXSxzdHlsZXM6WycubWF0LWJhZGdlLWNvbnRlbnRbX25nY29udGVudC0lQ09NUCVde2ZvbnQtd2VpZ2h0OjYwMDtmb250LXNpemU6MTJweDtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWZ9Lm1hdC1iYWRnZS1zbWFsbFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWJhZGdlLWNvbnRlbnRbX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZTo5cHh9Lm1hdC1iYWRnZS1sYXJnZVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWJhZGdlLWNvbnRlbnRbX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToyNHB4fS5tYXQtaDFbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWhlYWRsaW5lW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10eXBvZ3JhcGh5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIGgxW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250OjQwMCAyNHB4LzMycHggUm9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2xldHRlci1zcGFjaW5nOm5vcm1hbDttYXJnaW46MCAwIDE2cHh9Lm1hdC1oMltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdGl0bGVbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXR5cG9ncmFwaHlbX25nY29udGVudC0lQ09NUCVdICAgaDJbX25nY29udGVudC0lQ09NUCVde2ZvbnQ6NTAwIDIwcHgvMzJweCBSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7bGV0dGVyLXNwYWNpbmc6bm9ybWFsO21hcmdpbjowIDAgMTZweH0ubWF0LWgzW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1zdWJoZWFkaW5nLTJbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXR5cG9ncmFwaHlbX25nY29udGVudC0lQ09NUCVdICAgaDNbX25nY29udGVudC0lQ09NUCVde2ZvbnQ6NDAwIDE2cHgvMjhweCBSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7bGV0dGVyLXNwYWNpbmc6bm9ybWFsO21hcmdpbjowIDAgMTZweH0ubWF0LWg0W19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1zdWJoZWFkaW5nLTFbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXR5cG9ncmFwaHlbX25nY29udGVudC0lQ09NUCVdICAgaDRbX25nY29udGVudC0lQ09NUCVde2ZvbnQ6NDAwIDE1cHgvMjRweCBSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7bGV0dGVyLXNwYWNpbmc6bm9ybWFsO21hcmdpbjowIDAgMTZweH0ubWF0LWg1W19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10eXBvZ3JhcGh5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIGg1W19uZ2NvbnRlbnQtJUNPTVAlXXtmb250OjQwMCBjYWxjKDE0cHggKiAwLjgzKS8yMHB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjttYXJnaW46MCAwIDEycHh9Lm1hdC1oNltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdHlwb2dyYXBoeVtfbmdjb250ZW50LSVDT01QJV0gICBoNltfbmdjb250ZW50LSVDT01QJV17Zm9udDo0MDAgY2FsYygxNHB4ICogMC42NykvMjBweCBSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7bWFyZ2luOjAgMCAxMnB4fS5tYXQtYm9keS1zdHJvbmdbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWJvZHktMltfbmdjb250ZW50LSVDT01QJV17Zm9udDo1MDAgMTRweC8yNHB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtsZXR0ZXItc3BhY2luZzpub3JtYWx9Lm1hdC1ib2R5W19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1ib2R5LTFbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXR5cG9ncmFwaHlbX25nY29udGVudC0lQ09NUCVde2ZvbnQ6NDAwIDE0cHgvMjBweCBSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7bGV0dGVyLXNwYWNpbmc6bm9ybWFsfS5tYXQtYm9keVtfbmdjb250ZW50LSVDT01QJV0gICBwW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1ib2R5LTFbX25nY29udGVudC0lQ09NUCVdICAgcFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdHlwb2dyYXBoeVtfbmdjb250ZW50LSVDT01QJV0gICBwW19uZ2NvbnRlbnQtJUNPTVAlXXttYXJnaW46MCAwIDEycHh9Lm1hdC1zbWFsbFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtY2FwdGlvbltfbmdjb250ZW50LSVDT01QJV17Zm9udDo0MDAgMTJweC8yMHB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtsZXR0ZXItc3BhY2luZzpub3JtYWx9Lm1hdC1kaXNwbGF5LTRbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXR5cG9ncmFwaHlbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1kaXNwbGF5LTRbX25nY29udGVudC0lQ09NUCVde2ZvbnQ6MzAwIDExMnB4LzExMnB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtsZXR0ZXItc3BhY2luZzotMC4wNWVtO21hcmdpbjowIDAgNTZweH0ubWF0LWRpc3BsYXktM1tfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdHlwb2dyYXBoeVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWRpc3BsYXktM1tfbmdjb250ZW50LSVDT01QJV17Zm9udDo0MDAgNTZweC81NnB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtsZXR0ZXItc3BhY2luZzotMC4wMmVtO21hcmdpbjowIDAgNjRweH0ubWF0LWRpc3BsYXktMltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdHlwb2dyYXBoeVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWRpc3BsYXktMltfbmdjb250ZW50LSVDT01QJV17Zm9udDo0MDAgNDVweC80OHB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtsZXR0ZXItc3BhY2luZzotMC4wMDVlbTttYXJnaW46MCAwIDY0cHh9Lm1hdC1kaXNwbGF5LTFbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXR5cG9ncmFwaHlbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1kaXNwbGF5LTFbX25nY29udGVudC0lQ09NUCVde2ZvbnQ6NDAwIDM0cHgvNDBweCBSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7bGV0dGVyLXNwYWNpbmc6bm9ybWFsO21hcmdpbjowIDAgNjRweH0ubWF0LWJvdHRvbS1zaGVldC1jb250YWluZXJbX25nY29udGVudC0lQ09NUCVde2ZvbnQ6NDAwIDE0cHgvMjBweCBSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7bGV0dGVyLXNwYWNpbmc6bm9ybWFsfS5tYXQtYnV0dG9uW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1yYWlzZWQtYnV0dG9uW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1pY29uLWJ1dHRvbltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtc3Ryb2tlZC1idXR0b25bX25nY29udGVudC0lQ09NUCVdLCAubWF0LWZsYXQtYnV0dG9uW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1mYWJbX25nY29udGVudC0lQ09NUCVdLCAubWF0LW1pbmktZmFiW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7Zm9udC1zaXplOjE0cHg7Zm9udC13ZWlnaHQ6NTAwfS5tYXQtYnV0dG9uLXRvZ2dsZVtfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmfS5tYXQtY2FyZFtfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmfS5tYXQtY2FyZC10aXRsZVtfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjI0cHg7Zm9udC13ZWlnaHQ6NTAwfS5tYXQtY2FyZC1oZWFkZXJbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1jYXJkLXRpdGxlW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MjBweH0ubWF0LWNhcmQtc3VidGl0bGVbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWNhcmQtY29udGVudFtfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjE0cHh9Lm1hdC1jaGVja2JveFtfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmfS5tYXQtY2hlY2tib3gtbGF5b3V0W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtY2hlY2tib3gtbGFiZWxbX25nY29udGVudC0lQ09NUCVde2xpbmUtaGVpZ2h0OjI0cHh9Lm1hdC1jaGlwW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MTRweDtmb250LXdlaWdodDo1MDB9Lm1hdC1jaGlwW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtY2hpcC10cmFpbGluZy1pY29uLm1hdC1pY29uW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1jaGlwW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtY2hpcC1yZW1vdmUubWF0LWljb25bX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToxOHB4fS5tYXQtdGFibGVbX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZn0ubWF0LWhlYWRlci1jZWxsW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MTJweDtmb250LXdlaWdodDo1MDB9Lm1hdC1jZWxsW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1mb290ZXItY2VsbFtfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjE0cHh9Lm1hdC1jYWxlbmRhcltfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmfS5tYXQtY2FsZW5kYXItYm9keVtfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjEzcHh9Lm1hdC1jYWxlbmRhci1ib2R5LWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1jYWxlbmRhci1wZXJpb2QtYnV0dG9uW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MTRweDtmb250LXdlaWdodDo1MDB9Lm1hdC1jYWxlbmRhci10YWJsZS1oZWFkZXJbX25nY29udGVudC0lQ09NUCVdICAgdGhbX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToxMXB4O2ZvbnQtd2VpZ2h0OjQwMH0ubWF0LWRpYWxvZy10aXRsZVtfbmdjb250ZW50LSVDT01QJV17Zm9udDo1MDAgMjBweC8zMnB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtsZXR0ZXItc3BhY2luZzpub3JtYWx9Lm1hdC1leHBhbnNpb24tcGFuZWwtaGVhZGVyW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7Zm9udC1zaXplOjE1cHg7Zm9udC13ZWlnaHQ6NDAwfS5tYXQtZXhwYW5zaW9uLXBhbmVsLWNvbnRlbnRbX25nY29udGVudC0lQ09NUCVde2ZvbnQ6NDAwIDE0cHgvMjBweCBSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7bGV0dGVyLXNwYWNpbmc6bm9ybWFsfS5tYXQtZm9ybS1maWVsZFtfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOmluaGVyaXQ7Zm9udC13ZWlnaHQ6NDAwO2xpbmUtaGVpZ2h0OjEuMTI1O2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtsZXR0ZXItc3BhY2luZzpub3JtYWx9Lm1hdC1mb3JtLWZpZWxkLXdyYXBwZXJbX25nY29udGVudC0lQ09NUCVde3BhZGRpbmctYm90dG9tOjEuMzQzNzVlbX0ubWF0LWZvcm0tZmllbGQtcHJlZml4W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaWNvbltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtZm9ybS1maWVsZC1zdWZmaXhbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pY29uW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MTUwJTtsaW5lLWhlaWdodDoxLjEyNX0ubWF0LWZvcm0tZmllbGQtcHJlZml4W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaWNvbi1idXR0b25bX25nY29udGVudC0lQ09NUCVdLCAubWF0LWZvcm0tZmllbGQtc3VmZml4W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaWNvbi1idXR0b25bX25nY29udGVudC0lQ09NUCVde2hlaWdodDoxLjVlbTt3aWR0aDoxLjVlbX0ubWF0LWZvcm0tZmllbGQtcHJlZml4W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaWNvbi1idXR0b25bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pY29uW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1mb3JtLWZpZWxkLXN1ZmZpeFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWljb24tYnV0dG9uW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaWNvbltfbmdjb250ZW50LSVDT01QJV17aGVpZ2h0OjEuMTI1ZW07bGluZS1oZWlnaHQ6MS4xMjV9Lm1hdC1mb3JtLWZpZWxkLWluZml4W19uZ2NvbnRlbnQtJUNPTVAlXXtwYWRkaW5nOi41ZW0gMDtib3JkZXItdG9wOi44NDM3NWVtIHNvbGlkIHRyYW5zcGFyZW50fS5tYXQtZm9ybS1maWVsZC1jYW4tZmxvYXQubWF0LWZvcm0tZmllbGQtc2hvdWxkLWZsb2F0W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtZm9ybS1maWVsZC1jYW4tZmxvYXRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pbnB1dC1zZXJ2ZXJbX25nY29udGVudC0lQ09NUCVdOmZvY3VzICsgLm1hdC1mb3JtLWZpZWxkLWxhYmVsLXdyYXBwZXJbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXt0cmFuc2Zvcm06dHJhbnNsYXRlWSgtMS4zNDM3NWVtKSBzY2FsZSgwLjc1KTt3aWR0aDoxMzMuMzMzMzMzMzMzMyV9Lm1hdC1mb3JtLWZpZWxkLWNhbi1mbG9hdFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWlucHV0LXNlcnZlcltsYWJlbF1bX25nY29udGVudC0lQ09NUCVdOm5vdCg6bGFiZWwtc2hvd24pICsgLm1hdC1mb3JtLWZpZWxkLWxhYmVsLXdyYXBwZXJbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXt0cmFuc2Zvcm06dHJhbnNsYXRlWSgtMS4zNDM3NGVtKSBzY2FsZSgwLjc1KTt3aWR0aDoxMzMuMzMzMzQzMzMzMyV9Lm1hdC1mb3JtLWZpZWxkLWxhYmVsLXdyYXBwZXJbX25nY29udGVudC0lQ09NUCVde3RvcDotMC44NDM3NWVtO3BhZGRpbmctdG9wOi44NDM3NWVtfS5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17dG9wOjEuMzQzNzVlbX0ubWF0LWZvcm0tZmllbGQtdW5kZXJsaW5lW19uZ2NvbnRlbnQtJUNPTVAlXXtib3R0b206MS4zNDM3NWVtfS5tYXQtZm9ybS1maWVsZC1zdWJzY3JpcHQtd3JhcHBlcltfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjc1JTttYXJnaW4tdG9wOi42NjY2NjY2NjY3ZW07dG9wOmNhbGMoMTAwJSAtIDEuNzkxNjY2NjY2N2VtKX0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1sZWdhY3lbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLXdyYXBwZXJbX25nY29udGVudC0lQ09NUCVde3BhZGRpbmctYm90dG9tOjEuMjVlbX0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1sZWdhY3lbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWluZml4W19uZ2NvbnRlbnQtJUNPTVAlXXtwYWRkaW5nOi40Mzc1ZW0gMH0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1sZWdhY3kubWF0LWZvcm0tZmllbGQtY2FuLWZsb2F0Lm1hdC1mb3JtLWZpZWxkLXNob3VsZC1mbG9hdFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1sZWdhY3kubWF0LWZvcm0tZmllbGQtY2FuLWZsb2F0W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaW5wdXQtc2VydmVyW19uZ2NvbnRlbnQtJUNPTVAlXTpmb2N1cyArIC5tYXQtZm9ybS1maWVsZC1sYWJlbC13cmFwcGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17dHJhbnNmb3JtOnRyYW5zbGF0ZVkoLTEuMjgxMjVlbSkgc2NhbGUoMC43NSkgcGVyc3BlY3RpdmUoMTAwcHgpIHRyYW5zbGF0ZVooMC4wMDFweCk7LW1zLXRyYW5zZm9ybTp0cmFuc2xhdGVZKC0xLjI4MTI1ZW0pIHNjYWxlKDAuNzUpO3dpZHRoOjEzMy4zMzMzMzMzMzMzJX0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1sZWdhY3kubWF0LWZvcm0tZmllbGQtY2FuLWZsb2F0W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1hdXRvZmlsbC1jb250cm9sW19uZ2NvbnRlbnQtJUNPTVAlXTotd2Via2l0LWF1dG9maWxsICsgLm1hdC1mb3JtLWZpZWxkLWxhYmVsLXdyYXBwZXJbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXt0cmFuc2Zvcm06dHJhbnNsYXRlWSgtMS4yODEyNWVtKSBzY2FsZSgwLjc1KSBwZXJzcGVjdGl2ZSgxMDBweCkgdHJhbnNsYXRlWigwLjAwMTAxcHgpOy1tcy10cmFuc2Zvcm06dHJhbnNsYXRlWSgtMS4yODEyNGVtKSBzY2FsZSgwLjc1KTt3aWR0aDoxMzMuMzMzMzQzMzMzMyV9Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtbGVnYWN5Lm1hdC1mb3JtLWZpZWxkLWNhbi1mbG9hdFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWlucHV0LXNlcnZlcltsYWJlbF1bX25nY29udGVudC0lQ09NUCVdOm5vdCg6bGFiZWwtc2hvd24pICsgLm1hdC1mb3JtLWZpZWxkLWxhYmVsLXdyYXBwZXJbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXt0cmFuc2Zvcm06dHJhbnNsYXRlWSgtMS4yODEyNWVtKSBzY2FsZSgwLjc1KSBwZXJzcGVjdGl2ZSgxMDBweCkgdHJhbnNsYXRlWigwLjAwMTAycHgpOy1tcy10cmFuc2Zvcm06dHJhbnNsYXRlWSgtMS4yODEyM2VtKSBzY2FsZSgwLjc1KTt3aWR0aDoxMzMuMzMzMzUzMzMzMyV9Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtbGVnYWN5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17dG9wOjEuMjgxMjVlbX0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1sZWdhY3lbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLXVuZGVybGluZVtfbmdjb250ZW50LSVDT01QJV17Ym90dG9tOjEuMjVlbX0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1sZWdhY3lbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLXN1YnNjcmlwdC13cmFwcGVyW19uZ2NvbnRlbnQtJUNPTVAlXXttYXJnaW4tdG9wOi41NDE2NjY2NjY3ZW07dG9wOmNhbGMoMTAwJSAtIDEuNjY2NjY2NjY2N2VtKX1AbWVkaWEgcHJpbnR7Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtbGVnYWN5Lm1hdC1mb3JtLWZpZWxkLWNhbi1mbG9hdC5tYXQtZm9ybS1maWVsZC1zaG91bGQtZmxvYXRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtbGVnYWN5Lm1hdC1mb3JtLWZpZWxkLWNhbi1mbG9hdFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWlucHV0LXNlcnZlcltfbmdjb250ZW50LSVDT01QJV06Zm9jdXMgKyAubWF0LWZvcm0tZmllbGQtbGFiZWwtd3JhcHBlcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVde3RyYW5zZm9ybTp0cmFuc2xhdGVZKC0xLjI4MTIyZW0pIHNjYWxlKDAuNzUpfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWxlZ2FjeS5tYXQtZm9ybS1maWVsZC1jYW4tZmxvYXRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWF1dG9maWxsLWNvbnRyb2xbX25nY29udGVudC0lQ09NUCVdOi13ZWJraXQtYXV0b2ZpbGwgKyAubWF0LWZvcm0tZmllbGQtbGFiZWwtd3JhcHBlcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVde3RyYW5zZm9ybTp0cmFuc2xhdGVZKC0xLjI4MTIxZW0pIHNjYWxlKDAuNzUpfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWxlZ2FjeS5tYXQtZm9ybS1maWVsZC1jYW4tZmxvYXRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pbnB1dC1zZXJ2ZXJbbGFiZWxdW19uZ2NvbnRlbnQtJUNPTVAlXTpub3QoOmxhYmVsLXNob3duKSArIC5tYXQtZm9ybS1maWVsZC1sYWJlbC13cmFwcGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17dHJhbnNmb3JtOnRyYW5zbGF0ZVkoLTEuMjgxMmVtKSBzY2FsZSgwLjc1KX19Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtZmlsbFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtaW5maXhbX25nY29udGVudC0lQ09NUCVde3BhZGRpbmc6LjI1ZW0gMCAuNzVlbSAwfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWZpbGxbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXt0b3A6MS4wOTM3NWVtO21hcmdpbi10b3A6LTAuNWVtfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWZpbGwubWF0LWZvcm0tZmllbGQtY2FuLWZsb2F0Lm1hdC1mb3JtLWZpZWxkLXNob3VsZC1mbG9hdFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1maWxsLm1hdC1mb3JtLWZpZWxkLWNhbi1mbG9hdFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWlucHV0LXNlcnZlcltfbmdjb250ZW50LSVDT01QJV06Zm9jdXMgKyAubWF0LWZvcm0tZmllbGQtbGFiZWwtd3JhcHBlcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVde3RyYW5zZm9ybTp0cmFuc2xhdGVZKC0wLjU5Mzc1ZW0pIHNjYWxlKDAuNzUpO3dpZHRoOjEzMy4zMzMzMzMzMzMzJX0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1maWxsLm1hdC1mb3JtLWZpZWxkLWNhbi1mbG9hdFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWlucHV0LXNlcnZlcltsYWJlbF1bX25nY29udGVudC0lQ09NUCVdOm5vdCg6bGFiZWwtc2hvd24pICsgLm1hdC1mb3JtLWZpZWxkLWxhYmVsLXdyYXBwZXJbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXt0cmFuc2Zvcm06dHJhbnNsYXRlWSgtMC41OTM3NGVtKSBzY2FsZSgwLjc1KTt3aWR0aDoxMzMuMzMzMzQzMzMzMyV9Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2Utb3V0bGluZVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtaW5maXhbX25nY29udGVudC0lQ09NUCVde3BhZGRpbmc6MWVtIDAgMWVtIDB9Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2Utb3V0bGluZVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVde3RvcDoxLjg0Mzc1ZW07bWFyZ2luLXRvcDotMC4yNWVtfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLW91dGxpbmUubWF0LWZvcm0tZmllbGQtY2FuLWZsb2F0Lm1hdC1mb3JtLWZpZWxkLXNob3VsZC1mbG9hdFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1vdXRsaW5lLm1hdC1mb3JtLWZpZWxkLWNhbi1mbG9hdFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWlucHV0LXNlcnZlcltfbmdjb250ZW50LSVDT01QJV06Zm9jdXMgKyAubWF0LWZvcm0tZmllbGQtbGFiZWwtd3JhcHBlcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVde3RyYW5zZm9ybTp0cmFuc2xhdGVZKC0xLjU5Mzc1ZW0pIHNjYWxlKDAuNzUpO3dpZHRoOjEzMy4zMzMzMzMzMzMzJX0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1vdXRsaW5lLm1hdC1mb3JtLWZpZWxkLWNhbi1mbG9hdFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWlucHV0LXNlcnZlcltsYWJlbF1bX25nY29udGVudC0lQ09NUCVdOm5vdCg6bGFiZWwtc2hvd24pICsgLm1hdC1mb3JtLWZpZWxkLWxhYmVsLXdyYXBwZXJbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXt0cmFuc2Zvcm06dHJhbnNsYXRlWSgtMS41OTM3NGVtKSBzY2FsZSgwLjc1KTt3aWR0aDoxMzMuMzMzMzQzMzMzMyV9Lm1hdC1ncmlkLXRpbGUtaGVhZGVyW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1ncmlkLXRpbGUtZm9vdGVyW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MTRweH0ubWF0LWdyaWQtdGlsZS1oZWFkZXJbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saW5lW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1ncmlkLXRpbGUtZm9vdGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGluZVtfbmdjb250ZW50LSVDT01QJV17d2hpdGUtc3BhY2U6bm93cmFwO292ZXJmbG93OmhpZGRlbjt0ZXh0LW92ZXJmbG93OmVsbGlwc2lzO2Rpc3BsYXk6YmxvY2s7Ym94LXNpemluZzpib3JkZXItYm94fS5tYXQtZ3JpZC10aWxlLWhlYWRlcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpbmVbX25nY29udGVudC0lQ09NUCVdOm50aC1jaGlsZChuKzIpLCAubWF0LWdyaWQtdGlsZS1mb290ZXJbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saW5lW19uZ2NvbnRlbnQtJUNPTVAlXTpudGgtY2hpbGQobisyKXtmb250LXNpemU6MTJweH1pbnB1dC5tYXQtaW5wdXQtZWxlbWVudFtfbmdjb250ZW50LSVDT01QJV17bWFyZ2luLXRvcDotMC4wNjI1ZW19Lm1hdC1tZW51LWl0ZW1bX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtmb250LXNpemU6MTRweDtmb250LXdlaWdodDo0MDB9Lm1hdC1wYWdpbmF0b3JbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXBhZ2luYXRvci1wYWdlLXNpemVbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1zZWxlY3QtdHJpZ2dlcltfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2ZvbnQtc2l6ZToxMnB4fS5tYXQtcmFkaW8tYnV0dG9uW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWZ9Lm1hdC1zZWxlY3RbX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZn0ubWF0LXNlbGVjdC10cmlnZ2VyW19uZ2NvbnRlbnQtJUNPTVAlXXtoZWlnaHQ6MS4xMjVlbX0ubWF0LXNsaWRlLXRvZ2dsZS1jb250ZW50W19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWZ9Lm1hdC1zbGlkZXItdGh1bWItbGFiZWwtdGV4dFtfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2ZvbnQtc2l6ZToxMnB4O2ZvbnQtd2VpZ2h0OjUwMH0ubWF0LXN0ZXBwZXItdmVydGljYWxbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXN0ZXBwZXItaG9yaXpvbnRhbFtfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmfS5tYXQtc3RlcC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjE0cHg7Zm9udC13ZWlnaHQ6NDAwfS5tYXQtc3RlcC1zdWItbGFiZWwtZXJyb3JbX25nY29udGVudC0lQ09NUCVde2ZvbnQtd2VpZ2h0Om5vcm1hbH0ubWF0LXN0ZXAtbGFiZWwtZXJyb3JbX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToxNHB4fS5tYXQtc3RlcC1sYWJlbC1zZWxlY3RlZFtfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjE0cHg7Zm9udC13ZWlnaHQ6NTAwfS5tYXQtdGFiLWdyb3VwW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWZ9Lm1hdC10YWItbGFiZWxbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXRhYi1saW5rW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7Zm9udC1zaXplOjE0cHg7Zm9udC13ZWlnaHQ6NTAwfS5tYXQtdG9vbGJhcltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdG9vbGJhcltfbmdjb250ZW50LSVDT01QJV0gICBoMVtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdG9vbGJhcltfbmdjb250ZW50LSVDT01QJV0gICBoMltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdG9vbGJhcltfbmdjb250ZW50LSVDT01QJV0gICBoM1tfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdG9vbGJhcltfbmdjb250ZW50LSVDT01QJV0gICBoNFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdG9vbGJhcltfbmdjb250ZW50LSVDT01QJV0gICBoNVtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdG9vbGJhcltfbmdjb250ZW50LSVDT01QJV0gICBoNltfbmdjb250ZW50LSVDT01QJV17Zm9udDo1MDAgMjBweC8zMnB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtsZXR0ZXItc3BhY2luZzpub3JtYWw7bWFyZ2luOjB9Lm1hdC10b29sdGlwW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7Zm9udC1zaXplOjEwcHg7cGFkZGluZy10b3A6NnB4O3BhZGRpbmctYm90dG9tOjZweH0ubWF0LXRvb2x0aXAtaGFuZHNldFtfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjE0cHg7cGFkZGluZy10b3A6OHB4O3BhZGRpbmctYm90dG9tOjhweH0ubWF0LWxpc3QtaXRlbVtfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmfS5tYXQtbGlzdC1vcHRpb25bX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZn0ubWF0LWxpc3QtYmFzZVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpc3QtaXRlbVtfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjE2cHh9Lm1hdC1saXN0LWJhc2VbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saXN0LWl0ZW1bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saW5lW19uZ2NvbnRlbnQtJUNPTVAlXXt3aGl0ZS1zcGFjZTpub3dyYXA7b3ZlcmZsb3c6aGlkZGVuO3RleHQtb3ZlcmZsb3c6ZWxsaXBzaXM7ZGlzcGxheTpibG9jaztib3gtc2l6aW5nOmJvcmRlci1ib3h9Lm1hdC1saXN0LWJhc2VbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saXN0LWl0ZW1bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saW5lW19uZ2NvbnRlbnQtJUNPTVAlXTpudGgtY2hpbGQobisyKXtmb250LXNpemU6MTRweH0ubWF0LWxpc3QtYmFzZVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpc3Qtb3B0aW9uW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MTZweH0ubWF0LWxpc3QtYmFzZVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpc3Qtb3B0aW9uW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGluZVtfbmdjb250ZW50LSVDT01QJV17d2hpdGUtc3BhY2U6bm93cmFwO292ZXJmbG93OmhpZGRlbjt0ZXh0LW92ZXJmbG93OmVsbGlwc2lzO2Rpc3BsYXk6YmxvY2s7Ym94LXNpemluZzpib3JkZXItYm94fS5tYXQtbGlzdC1iYXNlW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGlzdC1vcHRpb25bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saW5lW19uZ2NvbnRlbnQtJUNPTVAlXTpudGgtY2hpbGQobisyKXtmb250LXNpemU6MTRweH0ubWF0LWxpc3QtYmFzZVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXN1YmhlYWRlcltfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2ZvbnQtc2l6ZToxNHB4O2ZvbnQtd2VpZ2h0OjUwMH0ubWF0LWxpc3QtYmFzZVtkZW5zZV1bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saXN0LWl0ZW1bX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToxMnB4fS5tYXQtbGlzdC1iYXNlW2RlbnNlXVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpc3QtaXRlbVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpbmVbX25nY29udGVudC0lQ09NUCVde3doaXRlLXNwYWNlOm5vd3JhcDtvdmVyZmxvdzpoaWRkZW47dGV4dC1vdmVyZmxvdzplbGxpcHNpcztkaXNwbGF5OmJsb2NrO2JveC1zaXppbmc6Ym9yZGVyLWJveH0ubWF0LWxpc3QtYmFzZVtkZW5zZV1bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saXN0LWl0ZW1bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saW5lW19uZ2NvbnRlbnQtJUNPTVAlXTpudGgtY2hpbGQobisyKXtmb250LXNpemU6MTJweH0ubWF0LWxpc3QtYmFzZVtkZW5zZV1bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saXN0LW9wdGlvbltfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjEycHh9Lm1hdC1saXN0LWJhc2VbZGVuc2VdW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGlzdC1vcHRpb25bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saW5lW19uZ2NvbnRlbnQtJUNPTVAlXXt3aGl0ZS1zcGFjZTpub3dyYXA7b3ZlcmZsb3c6aGlkZGVuO3RleHQtb3ZlcmZsb3c6ZWxsaXBzaXM7ZGlzcGxheTpibG9jaztib3gtc2l6aW5nOmJvcmRlci1ib3h9Lm1hdC1saXN0LWJhc2VbZGVuc2VdW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGlzdC1vcHRpb25bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saW5lW19uZ2NvbnRlbnQtJUNPTVAlXTpudGgtY2hpbGQobisyKXtmb250LXNpemU6MTJweH0ubWF0LWxpc3QtYmFzZVtkZW5zZV1bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1zdWJoZWFkZXJbX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtmb250LXNpemU6MTJweDtmb250LXdlaWdodDo1MDB9Lm1hdC1vcHRpb25bX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtmb250LXNpemU6MTZweH0ubWF0LW9wdGdyb3VwLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250OjUwMCAxNHB4LzI0cHggUm9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2xldHRlci1zcGFjaW5nOm5vcm1hbH0ubWF0LXNpbXBsZS1zbmFja2Jhcltfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2ZvbnQtc2l6ZToxNHB4fS5tYXQtc2ltcGxlLXNuYWNrYmFyLWFjdGlvbltfbmdjb250ZW50LSVDT01QJV17bGluZS1oZWlnaHQ6MTtmb250LWZhbWlseTppbmhlcml0O2ZvbnQtc2l6ZTppbmhlcml0O2ZvbnQtd2VpZ2h0OjUwMH0ubWF0LXRyZWVbX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZn0ubWF0LXRyZWUtbm9kZVtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtbmVzdGVkLXRyZWUtbm9kZVtfbmdjb250ZW50LSVDT01QJV17Zm9udC13ZWlnaHQ6NDAwO2ZvbnQtc2l6ZToxNHB4fS5tYXQtcmlwcGxlW19uZ2NvbnRlbnQtJUNPTVAlXXtvdmVyZmxvdzpoaWRkZW47cG9zaXRpb246cmVsYXRpdmV9Lm1hdC1yaXBwbGVbX25nY29udGVudC0lQ09NUCVdOm5vdCg6ZW1wdHkpe3RyYW5zZm9ybTp0cmFuc2xhdGVaKDApfS5tYXQtcmlwcGxlLm1hdC1yaXBwbGUtdW5ib3VuZGVkW19uZ2NvbnRlbnQtJUNPTVAlXXtvdmVyZmxvdzp2aXNpYmxlfS5tYXQtcmlwcGxlLWVsZW1lbnRbX25nY29udGVudC0lQ09NUCVde3Bvc2l0aW9uOmFic29sdXRlO2JvcmRlci1yYWRpdXM6NTAlO3BvaW50ZXItZXZlbnRzOm5vbmU7dHJhbnNpdGlvbjpvcGFjaXR5LHRyYW5zZm9ybSAwbXMgY3ViaWMtYmV6aWVyKDAsIDAsIDAuMiwgMSk7dHJhbnNmb3JtOnNjYWxlKDApfS5jZGstaGlnaC1jb250cmFzdC1hY3RpdmVbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1yaXBwbGUtZWxlbWVudFtfbmdjb250ZW50LSVDT01QJV17ZGlzcGxheTpub25lfS5jZGstdmlzdWFsbHktaGlkZGVuW19uZ2NvbnRlbnQtJUNPTVAlXXtib3JkZXI6MDtjbGlwOnJlY3QoMCAwIDAgMCk7aGVpZ2h0OjFweDttYXJnaW46LTFweDtvdmVyZmxvdzpoaWRkZW47cGFkZGluZzowO3Bvc2l0aW9uOmFic29sdXRlO3dpZHRoOjFweDtvdXRsaW5lOjA7LXdlYmtpdC1hcHBlYXJhbmNlOm5vbmU7LW1vei1hcHBlYXJhbmNlOm5vbmV9LmNkay1vdmVybGF5LWNvbnRhaW5lcltfbmdjb250ZW50LSVDT01QJV0sIC5jZGstZ2xvYmFsLW92ZXJsYXktd3JhcHBlcltfbmdjb250ZW50LSVDT01QJV17cG9pbnRlci1ldmVudHM6bm9uZTt0b3A6MDtsZWZ0OjA7aGVpZ2h0OjEwMCU7d2lkdGg6MTAwJX0uY2RrLW92ZXJsYXktY29udGFpbmVyW19uZ2NvbnRlbnQtJUNPTVAlXXtwb3NpdGlvbjpmaXhlZDt6LWluZGV4OjEwMDB9LmNkay1vdmVybGF5LWNvbnRhaW5lcltfbmdjb250ZW50LSVDT01QJV06ZW1wdHl7ZGlzcGxheTpub25lfS5jZGstZ2xvYmFsLW92ZXJsYXktd3JhcHBlcltfbmdjb250ZW50LSVDT01QJV17ZGlzcGxheTpmbGV4O3Bvc2l0aW9uOmFic29sdXRlO3otaW5kZXg6MTAwMH0uY2RrLW92ZXJsYXktcGFuZVtfbmdjb250ZW50LSVDT01QJV17cG9zaXRpb246YWJzb2x1dGU7cG9pbnRlci1ldmVudHM6YXV0bztib3gtc2l6aW5nOmJvcmRlci1ib3g7ei1pbmRleDoxMDAwO2Rpc3BsYXk6ZmxleDttYXgtd2lkdGg6MTAwJTttYXgtaGVpZ2h0OjEwMCV9LmNkay1vdmVybGF5LWJhY2tkcm9wW19uZ2NvbnRlbnQtJUNPTVAlXXtwb3NpdGlvbjphYnNvbHV0ZTt0b3A6MDtib3R0b206MDtsZWZ0OjA7cmlnaHQ6MDt6LWluZGV4OjEwMDA7cG9pbnRlci1ldmVudHM6YXV0bzstd2Via2l0LXRhcC1oaWdobGlnaHQtY29sb3I6dHJhbnNwYXJlbnQ7dHJhbnNpdGlvbjpvcGFjaXR5IDQwMG1zIGN1YmljLWJlemllcigwLjI1LCAwLjgsIDAuMjUsIDEpO29wYWNpdHk6MH0uY2RrLW92ZXJsYXktYmFja2Ryb3AuY2RrLW92ZXJsYXktYmFja2Ryb3Atc2hvd2luZ1tfbmdjb250ZW50LSVDT01QJV17b3BhY2l0eToxfUBtZWRpYSBzY3JlZW4gYW5kICgtbXMtaGlnaC1jb250cmFzdDogYWN0aXZlKXsuY2RrLW92ZXJsYXktYmFja2Ryb3AuY2RrLW92ZXJsYXktYmFja2Ryb3Atc2hvd2luZ1tfbmdjb250ZW50LSVDT01QJV17b3BhY2l0eTouNn19LmNkay1vdmVybGF5LWRhcmstYmFja2Ryb3BbX25nY29udGVudC0lQ09NUCVde2JhY2tncm91bmQ6cmdiYSgwLDAsMCwuMzIpfS5jZGstb3ZlcmxheS10cmFuc3BhcmVudC1iYWNrZHJvcFtfbmdjb250ZW50LSVDT01QJV0sIC5jZGstb3ZlcmxheS10cmFuc3BhcmVudC1iYWNrZHJvcC5jZGstb3ZlcmxheS1iYWNrZHJvcC1zaG93aW5nW19uZ2NvbnRlbnQtJUNPTVAlXXtvcGFjaXR5OjB9LmNkay1vdmVybGF5LWNvbm5lY3RlZC1wb3NpdGlvbi1ib3VuZGluZy1ib3hbX25nY29udGVudC0lQ09NUCVde3Bvc2l0aW9uOmFic29sdXRlO3otaW5kZXg6MTAwMDtkaXNwbGF5OmZsZXg7ZmxleC1kaXJlY3Rpb246Y29sdW1uO21pbi13aWR0aDoxcHg7bWluLWhlaWdodDoxcHh9LmNkay1nbG9iYWwtc2Nyb2xsYmxvY2tbX25nY29udGVudC0lQ09NUCVde3Bvc2l0aW9uOmZpeGVkO3dpZHRoOjEwMCU7b3ZlcmZsb3cteTpzY3JvbGx9QGtleWZyYW1lcyBjZGstdGV4dC1maWVsZC1hdXRvZmlsbC1zdGFydHt9QGtleWZyYW1lcyBjZGstdGV4dC1maWVsZC1hdXRvZmlsbC1lbmR7fS5jZGstdGV4dC1maWVsZC1hdXRvZmlsbC1tb25pdG9yZWRbX25nY29udGVudC0lQ09NUCVdOi13ZWJraXQtYXV0b2ZpbGx7YW5pbWF0aW9uOmNkay10ZXh0LWZpZWxkLWF1dG9maWxsLXN0YXJ0IDBzIDFtc30uY2RrLXRleHQtZmllbGQtYXV0b2ZpbGwtbW9uaXRvcmVkW19uZ2NvbnRlbnQtJUNPTVAlXTpub3QoOi13ZWJraXQtYXV0b2ZpbGwpe2FuaW1hdGlvbjpjZGstdGV4dC1maWVsZC1hdXRvZmlsbC1lbmQgMHMgMW1zfXRleHRhcmVhLmNkay10ZXh0YXJlYS1hdXRvc2l6ZVtfbmdjb250ZW50LSVDT01QJV17cmVzaXplOm5vbmV9dGV4dGFyZWEuY2RrLXRleHRhcmVhLWF1dG9zaXplLW1lYXN1cmluZ1tfbmdjb250ZW50LSVDT01QJV17cGFkZGluZzoycHggMCAhaW1wb3J0YW50O2JveC1zaXppbmc6Y29udGVudC1ib3ggIWltcG9ydGFudDtoZWlnaHQ6YXV0byAhaW1wb3J0YW50O292ZXJmbG93OmhpZGRlbiAhaW1wb3J0YW50fXRleHRhcmVhLmNkay10ZXh0YXJlYS1hdXRvc2l6ZS1tZWFzdXJpbmctZmlyZWZveFtfbmdjb250ZW50LSVDT01QJV17cGFkZGluZzoycHggMCAhaW1wb3J0YW50O2JveC1zaXppbmc6Y29udGVudC1ib3ggIWltcG9ydGFudDtoZWlnaHQ6MCAhaW1wb3J0YW50fS5tYXQtZm9jdXMtaW5kaWNhdG9yW19uZ2NvbnRlbnQtJUNPTVAlXXtwb3NpdGlvbjpyZWxhdGl2ZX0ubWF0LW1kYy1mb2N1cy1pbmRpY2F0b3JbX25nY29udGVudC0lQ09NUCVde3Bvc2l0aW9uOnJlbGF0aXZlfS5tYXQtcmlwcGxlLWVsZW1lbnRbX25nY29udGVudC0lQ09NUCVde2JhY2tncm91bmQtY29sb3I6cmdiYSgwLDAsMCwuMSl9Lm1hdC1vcHRpb25bX25nY29udGVudC0lQ09NUCVde2NvbG9yOiMyMTIxMjF9Lm1hdC1vcHRpb25bX25nY29udGVudC0lQ09NUCVdOmhvdmVyOm5vdCgubWF0LW9wdGlvbi1kaXNhYmxlZCksIC5tYXQtb3B0aW9uW19uZ2NvbnRlbnQtJUNPTVAlXTpmb2N1czpub3QoLm1hdC1vcHRpb24tZGlzYWJsZWQpe2JhY2tncm91bmQ6cmdiYSgwLDAsMCwuMDQpfS5tYXQtb3B0aW9uLm1hdC1zZWxlY3RlZFtfbmdjb250ZW50LSVDT01QJV06bm90KC5tYXQtb3B0aW9uLW11bHRpcGxlKTpub3QoLm1hdC1vcHRpb24tZGlzYWJsZWQpe2JhY2tncm91bmQ6cmdiYSgwLDAsMCwuMDQpfS5tYXQtb3B0aW9uLm1hdC1hY3RpdmVbX25nY29udGVudC0lQ09NUCVde2JhY2tncm91bmQ6cmdiYSgwLDAsMCwuMDQpO2NvbG9yOiMyMTIxMjF9Lm1hdC1vcHRpb24ubWF0LW9wdGlvbi1kaXNhYmxlZFtfbmdjb250ZW50LSVDT01QJV17Y29sb3I6cmdiYSgwLDAsMCwuMzgpfS5tYXQtcHJpbWFyeVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LW9wdGlvbi5tYXQtc2VsZWN0ZWRbX25nY29udGVudC0lQ09NUCVdOm5vdCgubWF0LW9wdGlvbi1kaXNhYmxlZCl7Y29sb3I6I2Y1N2MwMH0ubWF0LWFjY2VudFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LW9wdGlvbi5tYXQtc2VsZWN0ZWRbX25nY29udGVudC0lQ09NUCVdOm5vdCgubWF0LW9wdGlvbi1kaXNhYmxlZCl7Y29sb3I6I2ZmOTgwMH0ubWF0LXdhcm5bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1vcHRpb24ubWF0LXNlbGVjdGVkW19uZ2NvbnRlbnQtJUNPTVAlXTpub3QoLm1hdC1vcHRpb24tZGlzYWJsZWQpe2NvbG9yOiNmNDQzMzZ9Lm1hdC1vcHRncm91cC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17Y29sb3I6IzYxNjE2MX0ubWF0LW9wdGdyb3VwLWRpc2FibGVkW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtb3B0Z3JvdXAtbGFiZWxbX25nY29udGVudC0lQ09NUCVde2NvbG9yOnJnYmEoMCwwLDAsLjM4KX0ubWF0LXBzZXVkby1jaGVja2JveFtfbmdjb250ZW50LSVDT01QJV17Y29sb3I6IzYxNjE2MX0ubWF0LXBzZXVkby1jaGVja2JveFtfbmdjb250ZW50LSVDT01QJV06OmFmdGVye2NvbG9yOiNmYWZhZmF9Lm1hdC1wc2V1ZG8tY2hlY2tib3gtZGlzYWJsZWRbX25nY29udGVudC0lQ09NUCVde2NvbG9yOiNiMGIwYjB9Lm1hdC1wcmltYXJ5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtcHNldWRvLWNoZWNrYm94LWNoZWNrZWRbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXByaW1hcnlbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1wc2V1ZG8tY2hlY2tib3gtaW5kZXRlcm1pbmF0ZVtfbmdjb250ZW50LSVDT01QJV17YmFja2dyb3VuZDojZjU3YzAwfS5tYXQtcHNldWRvLWNoZWNrYm94LWNoZWNrZWRbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXBzZXVkby1jaGVja2JveC1pbmRldGVybWluYXRlW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1hY2NlbnRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1wc2V1ZG8tY2hlY2tib3gtY2hlY2tlZFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtYWNjZW50W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtcHNldWRvLWNoZWNrYm94LWluZGV0ZXJtaW5hdGVbX25nY29udGVudC0lQ09NUCVde2JhY2tncm91bmQ6I2ZmOTgwMH0ubWF0LXdhcm5bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1wc2V1ZG8tY2hlY2tib3gtY2hlY2tlZFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtd2Fybltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXBzZXVkby1jaGVja2JveC1pbmRldGVybWluYXRlW19uZ2NvbnRlbnQtJUNPTVAlXXtiYWNrZ3JvdW5kOiNmNDQzMzZ9Lm1hdC1wc2V1ZG8tY2hlY2tib3gtY2hlY2tlZC5tYXQtcHNldWRvLWNoZWNrYm94LWRpc2FibGVkW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1wc2V1ZG8tY2hlY2tib3gtaW5kZXRlcm1pbmF0ZS5tYXQtcHNldWRvLWNoZWNrYm94LWRpc2FibGVkW19uZ2NvbnRlbnQtJUNPTVAlXXtiYWNrZ3JvdW5kOiNiMGIwYjB9Lm1hdC1hcHAtYmFja2dyb3VuZFtfbmdjb250ZW50LSVDT01QJV17YmFja2dyb3VuZC1jb2xvcjojZmFmYWZhO2NvbG9yOiMyMTIxMjF9Lm1hdC1lbGV2YXRpb24tejBbX25nY29udGVudC0lQ09NUCVde2JveC1zaGFkb3c6MHB4IDBweCAwcHggMHB4IHJnYmEoMCwgMCwgMCwgMC4yKSwwcHggMHB4IDBweCAwcHggcmdiYSgwLCAwLCAwLCAwLjE0KSwwcHggMHB4IDBweCAwcHggcmdiYSgwLCAwLCAwLCAwLjEyKX0ubWF0LWVsZXZhdGlvbi16MVtfbmdjb250ZW50LSVDT01QJV17Ym94LXNoYWRvdzowcHggMnB4IDFweCAtMXB4IHJnYmEoMCwgMCwgMCwgMC4yKSwwcHggMXB4IDFweCAwcHggcmdiYSgwLCAwLCAwLCAwLjE0KSwwcHggMXB4IDNweCAwcHggcmdiYSgwLCAwLCAwLCAwLjEyKX0ubWF0LWVsZXZhdGlvbi16Mltfbmdjb250ZW50LSVDT01QJV17Ym94LXNoYWRvdzowcHggM3B4IDFweCAtMnB4IHJnYmEoMCwgMCwgMCwgMC4yKSwwcHggMnB4IDJweCAwcHggcmdiYSgwLCAwLCAwLCAwLjE0KSwwcHggMXB4IDVweCAwcHggcmdiYSgwLCAwLCAwLCAwLjEyKX0ubWF0LWVsZXZhdGlvbi16M1tfbmdjb250ZW50LSVDT01QJV17Ym94LXNoYWRvdzowcHggM3B4IDNweCAtMnB4IHJnYmEoMCwgMCwgMCwgMC4yKSwwcHggM3B4IDRweCAwcHggcmdiYSgwLCAwLCAwLCAwLjE0KSwwcHggMXB4IDhweCAwcHggcmdiYSgwLCAwLCAwLCAwLjEyKX0ubWF0LWVsZXZhdGlvbi16NFtfbmdjb250ZW50LSVDT01QJV17Ym94LXNoYWRvdzowcHggMnB4IDRweCAtMXB4IHJnYmEoMCwgMCwgMCwgMC4yKSwwcHggNHB4IDVweCAwcHggcmdiYSgwLCAwLCAwLCAwLjE0KSwwcHggMXB4IDEwcHggMHB4IHJnYmEoMCwgMCwgMCwgMC4xMil9Lm1hdC1lbGV2YXRpb24tejVbX25nY29udGVudC0lQ09NUCVde2JveC1zaGFkb3c6MHB4IDNweCA1cHggLTFweCByZ2JhKDAsIDAsIDAsIDAuMiksMHB4IDVweCA4cHggMHB4IHJnYmEoMCwgMCwgMCwgMC4xNCksMHB4IDFweCAxNHB4IDBweCByZ2JhKDAsIDAsIDAsIDAuMTIpfS5tYXQtZWxldmF0aW9uLXo2W19uZ2NvbnRlbnQtJUNPTVAlXXtib3gtc2hhZG93OjBweCAzcHggNXB4IC0xcHggcmdiYSgwLCAwLCAwLCAwLjIpLDBweCA2cHggMTBweCAwcHggcmdiYSgwLCAwLCAwLCAwLjE0KSwwcHggMXB4IDE4cHggMHB4IHJnYmEoMCwgMCwgMCwgMC4xMil9Lm1hdC1lbGV2YXRpb24tejdbX25nY29udGVudC0lQ09NUCVde2JveC1zaGFkb3c6MHB4IDRweCA1cHggLTJweCByZ2JhKDAsIDAsIDAsIDAuMiksMHB4IDdweCAxMHB4IDFweCByZ2JhKDAsIDAsIDAsIDAuMTQpLDBweCAycHggMTZweCAxcHggcmdiYSgwLCAwLCAwLCAwLjEyKX0ubWF0LWVsZXZhdGlvbi16OFtfbmdjb250ZW50LSVDT01QJV17Ym94LXNoYWRvdzowcHggNXB4IDVweCAtM3B4IHJnYmEoMCwgMCwgMCwgMC4yKSwwcHggOHB4IDEwcHggMXB4IHJnYmEoMCwgMCwgMCwgMC4xNCksMHB4IDNweCAxNHB4IDJweCByZ2JhKDAsIDAsIDAsIDAuMTIpfS5tYXQtZWxldmF0aW9uLXo5W19uZ2NvbnRlbnQtJUNPTVAlXXtib3gtc2hhZG93OjBweCA1cHggNnB4IC0zcHggcmdiYSgwLCAwLCAwLCAwLjIpLDBweCA5cHggMTJweCAxcHggcmdiYSgwLCAwLCAwLCAwLjE0KSwwcHggM3B4IDE2cHggMnB4IHJnYmEoMCwgMCwgMCwgMC4xMil9Lm1hdC1lbGV2YXRpb24tejEwW19uZ2NvbnRlbnQtJUNPTVAlXXtib3gtc2hhZG93OjBweCA2cHggNnB4IC0zcHggcmdiYSgwLCAwLCAwLCAwLjIpLDBweCAxMHB4IDE0cHggMXB4IHJnYmEoMCwgMCwgMCwgMC4xNCksMHB4IDRweCAxOHB4IDNweCByZ2JhKDAsIDAsIDAsIDAuMTIpfS5tYXQtZWxldmF0aW9uLXoxMVtfbmdjb250ZW50LSVDT01QJV17Ym94LXNoYWRvdzowcHggNnB4IDdweCAtNHB4IHJnYmEoMCwgMCwgMCwgMC4yKSwwcHggMTFweCAxNXB4IDFweCByZ2JhKDAsIDAsIDAsIDAuMTQpLDBweCA0cHggMjBweCAzcHggcmdiYSgwLCAwLCAwLCAwLjEyKX0ubWF0LWVsZXZhdGlvbi16MTJbX25nY29udGVudC0lQ09NUCVde2JveC1zaGFkb3c6MHB4IDdweCA4cHggLTRweCByZ2JhKDAsIDAsIDAsIDAuMiksMHB4IDEycHggMTdweCAycHggcmdiYSgwLCAwLCAwLCAwLjE0KSwwcHggNXB4IDIycHggNHB4IHJnYmEoMCwgMCwgMCwgMC4xMil9Lm1hdC1lbGV2YXRpb24tejEzW19uZ2NvbnRlbnQtJUNPTVAlXXtib3gtc2hhZG93OjBweCA3cHggOHB4IC00cHggcmdiYSgwLCAwLCAwLCAwLjIpLDBweCAxM3B4IDE5cHggMnB4IHJnYmEoMCwgMCwgMCwgMC4xNCksMHB4IDVweCAyNHB4IDRweCByZ2JhKDAsIDAsIDAsIDAuMTIpfS5tYXQtZWxldmF0aW9uLXoxNFtfbmdjb250ZW50LSVDT01QJV17Ym94LXNoYWRvdzowcHggN3B4IDlweCAtNHB4IHJnYmEoMCwgMCwgMCwgMC4yKSwwcHggMTRweCAyMXB4IDJweCByZ2JhKDAsIDAsIDAsIDAuMTQpLDBweCA1cHggMjZweCA0cHggcmdiYSgwLCAwLCAwLCAwLjEyKX0ubWF0LWVsZXZhdGlvbi16MTVbX25nY29udGVudC0lQ09NUCVde2JveC1zaGFkb3c6MHB4IDhweCA5cHggLTVweCByZ2JhKDAsIDAsIDAsIDAuMiksMHB4IDE1cHggMjJweCAycHggcmdiYSgwLCAwLCAwLCAwLjE0KSwwcHggNnB4IDI4cHggNXB4IHJnYmEoMCwgMCwgMCwgMC4xMil9Lm1hdC1lbGV2YXRpb24tejE2W19uZ2NvbnRlbnQtJUNPTVAlXXtib3gtc2hhZG93OjBweCA4cHggMTBweCAtNXB4IHJnYmEoMCwgMCwgMCwgMC4yKSwwcHggMTZweCAyNHB4IDJweCByZ2JhKDAsIDAsIDAsIDAuMTQpLDBweCA2cHggMzBweCA1cHggcmdiYSgwLCAwLCAwLCAwLjEyKX0ubWF0LWVsZXZhdGlvbi16MTdbX25nY29udGVudC0lQ09NUCVde2JveC1zaGFkb3c6MHB4IDhweCAxMXB4IC01cHggcmdiYSgwLCAwLCAwLCAwLjIpLDBweCAxN3B4IDI2cHggMnB4IHJnYmEoMCwgMCwgMCwgMC4xNCksMHB4IDZweCAzMnB4IDVweCByZ2JhKDAsIDAsIDAsIDAuMTIpfS5tYXQtZWxldmF0aW9uLXoxOFtfbmdjb250ZW50LSVDT01QJV17Ym94LXNoYWRvdzowcHggOXB4IDExcHggLTVweCByZ2JhKDAsIDAsIDAsIDAuMiksMHB4IDE4cHggMjhweCAycHggcmdiYSgwLCAwLCAwLCAwLjE0KSwwcHggN3B4IDM0cHggNnB4IHJnYmEoMCwgMCwgMCwgMC4xMil9Lm1hdC1lbGV2YXRpb24tejE5W19uZ2NvbnRlbnQtJUNPTVAlXXtib3gtc2hhZG93OjBweCA5cHggMTJweCAtNnB4IHJnYmEoMCwgMCwgMCwgMC4yKSwwcHggMTlweCAyOXB4IDJweCByZ2JhKDAsIDAsIDAsIDAuMTQpLDBweCA3cHggMzZweCA2cHggcmdiYSgwLCAwLCAwLCAwLjEyKX0ubWF0LWVsZXZhdGlvbi16MjBbX25nY29udGVudC0lQ09NUCVde2JveC1zaGFkb3c6MHB4IDEwcHggMTNweCAtNnB4IHJnYmEoMCwgMCwgMCwgMC4yKSwwcHggMjBweCAzMXB4IDNweCByZ2JhKDAsIDAsIDAsIDAuMTQpLDBweCA4cHggMzhweCA3cHggcmdiYSgwLCAwLCAwLCAwLjEyKX0ubWF0LWVsZXZhdGlvbi16MjFbX25nY29udGVudC0lQ09NUCVde2JveC1zaGFkb3c6MHB4IDEwcHggMTNweCAtNnB4IHJnYmEoMCwgMCwgMCwgMC4yKSwwcHggMjFweCAzM3B4IDNweCByZ2JhKDAsIDAsIDAsIDAuMTQpLDBweCA4cHggNDBweCA3cHggcmdiYSgwLCAwLCAwLCAwLjEyKX0ubWF0LWVsZXZhdGlvbi16MjJbX25nY29udGVudC0lQ09NUCVde2JveC1zaGFkb3c6MHB4IDEwcHggMTRweCAtNnB4IHJnYmEoMCwgMCwgMCwgMC4yKSwwcHggMjJweCAzNXB4IDNweCByZ2JhKDAsIDAsIDAsIDAuMTQpLDBweCA4cHggNDJweCA3cHggcmdiYSgwLCAwLCAwLCAwLjEyKX0ubWF0LWVsZXZhdGlvbi16MjNbX25nY29udGVudC0lQ09NUCVde2JveC1zaGFkb3c6MHB4IDExcHggMTRweCAtN3B4IHJnYmEoMCwgMCwgMCwgMC4yKSwwcHggMjNweCAzNnB4IDNweCByZ2JhKDAsIDAsIDAsIDAuMTQpLDBweCA5cHggNDRweCA4cHggcmdiYSgwLCAwLCAwLCAwLjEyKX0ubWF0LWVsZXZhdGlvbi16MjRbX25nY29udGVudC0lQ09NUCVde2JveC1zaGFkb3c6MHB4IDExcHggMTVweCAtN3B4IHJnYmEoMCwgMCwgMCwgMC4yKSwwcHggMjRweCAzOHB4IDNweCByZ2JhKDAsIDAsIDAsIDAuMTQpLDBweCA5cHggNDZweCA4cHggcmdiYSgwLCAwLCAwLCAwLjEyKX0ubWF0LXRoZW1lLWxvYWRlZC1tYXJrZXJbX25nY29udGVudC0lQ09NUCVde2Rpc3BsYXk6bm9uZX0ubWF0LWF1dG9jb21wbGV0ZS1wYW5lbFtfbmdjb250ZW50LSVDT01QJV17YmFja2dyb3VuZDojZmZmO2NvbG9yOiMyMTIxMjF9Lm1hdC1hdXRvY29tcGxldGUtcGFuZWxbX25nY29udGVudC0lQ09NUCVdOm5vdChbY2xhc3MqPW1hdC1lbGV2YXRpb24tel0pe2JveC1zaGFkb3c6MHB4IDJweCA0cHggLTFweCByZ2JhKDAsIDAsIDAsIDAuMiksMHB4IDRweCA1cHggMHB4IHJnYmEoMCwgMCwgMCwgMC4xNCksMHB4IDFweCAxMHB4IDBweCByZ2JhKDAsIDAsIDAsIDAuMTIpfS5tYXQtYXV0b2NvbXBsZXRlLXBhbmVsW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtb3B0aW9uLm1hdC1zZWxlY3RlZFtfbmdjb250ZW50LSVDT01QJV06bm90KC5tYXQtYWN0aXZlKTpub3QoOmhvdmVyKXtiYWNrZ3JvdW5kOiNmZmZ9Lm1hdC1hdXRvY29tcGxldGUtcGFuZWxbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1vcHRpb24ubWF0LXNlbGVjdGVkW19uZ2NvbnRlbnQtJUNPTVAlXTpub3QoLm1hdC1hY3RpdmUpOm5vdCg6aG92ZXIpOm5vdCgubWF0LW9wdGlvbi1kaXNhYmxlZCl7Y29sb3I6IzIxMjEyMX0ubWF0LWJhZGdlLWNvbnRlbnRbX25nY29udGVudC0lQ09NUCVde2NvbG9yOiNmZmY7YmFja2dyb3VuZDojZjU3YzAwfS5jZGstaGlnaC1jb250cmFzdC1hY3RpdmVbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1iYWRnZS1jb250ZW50W19uZ2NvbnRlbnQtJUNPTVAlXXtvdXRsaW5lOnNvbGlkIDFweDtib3JkZXItcmFkaXVzOjB9Lm1hdC1iYWRnZS1hY2NlbnRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1iYWRnZS1jb250ZW50W19uZ2NvbnRlbnQtJUNPTVAlXXtiYWNrZ3JvdW5kOiNmZjk4MDA7Y29sb3I6I2ZmZn0ubWF0LWJhZGdlLXdhcm5bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1iYWRnZS1jb250ZW50W19uZ2NvbnRlbnQtJUNPTVAlXXtjb2xvcjojZmZmO2JhY2tncm91bmQ6I2Y0NDMzNn0ubWF0LWJhZGdlW19uZ2NvbnRlbnQtJUNPTVAlXXtwb3NpdGlvbjpyZWxhdGl2ZX0ubWF0LWJhZGdlLWhpZGRlbltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWJhZGdlLWNvbnRlbnRbX25nY29udGVudC0lQ09NUCVde2Rpc3BsYXk6bm9uZX0ubWF0LWJhZGdlLWRpc2FibGVkW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtYmFkZ2UtY29udGVudFtfbmdjb250ZW50LSVDT01QJV17YmFja2dyb3VuZDojYjliOWI5O2NvbG9yOiM3NTc1NzV9Lm1hdC1iYWRnZS1jb250ZW50W19uZ2NvbnRlbnQtJUNPTVAlXXtwb3NpdGlvbjphYnNvbHV0ZTt0ZXh0LWFsaWduOmNlbnRlcjtkaXNwbGF5OmlubGluZS1ibG9jaztib3JkZXItcmFkaXVzOjUwJTt0cmFuc2l0aW9uOnRyYW5zZm9ybSAyMDBtcyBlYXNlLWluLW91dDt0cmFuc2Zvcm06c2NhbGUoMC42KTtvdmVyZmxvdzpoaWRkZW47d2hpdGUtc3BhY2U6bm93cmFwO3RleHQtb3ZlcmZsb3c6ZWxsaXBzaXM7cG9pbnRlci1ldmVudHM6bm9uZX0ubmctYW5pbWF0ZS1kaXNhYmxlZFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWJhZGdlLWNvbnRlbnRbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWJhZGdlLWNvbnRlbnQuX21hdC1hbmltYXRpb24tbm9vcGFibGVbX25nY29udGVudC0lQ09NUCVde3RyYW5zaXRpb246bm9uZX0ubWF0LWJhZGdlLWNvbnRlbnQubWF0LWJhZGdlLWFjdGl2ZVtfbmdjb250ZW50LSVDT01QJV17dHJhbnNmb3JtOm5vbmV9Lm1hdC1iYWRnZS1zbWFsbFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWJhZGdlLWNvbnRlbnRbX25nY29udGVudC0lQ09NUCVde3dpZHRoOjE2cHg7aGVpZ2h0OjE2cHg7bGluZS1oZWlnaHQ6MTZweH0ubWF0LWJhZGdlLXNtYWxsLm1hdC1iYWRnZS1hYm92ZVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWJhZGdlLWNvbnRlbnRbX25nY29udGVudC0lQ09NUCVde3RvcDotOHB4fS5tYXQtYmFkZ2Utc21hbGwubWF0LWJhZGdlLWJlbG93W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtYmFkZ2UtY29udGVudFtfbmdjb250ZW50LSVDT01QJV17Ym90dG9tOi04cHh9Lm1hdC1iYWRnZS1zbWFsbC5tYXQtYmFkZ2UtYmVmb3JlW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtYmFkZ2UtY29udGVudFtfbmdjb250ZW50LSVDT01QJV17bGVmdDotMTZweH1bZGlyPXJ0bF1bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1iYWRnZS1zbWFsbC5tYXQtYmFkZ2UtYmVmb3JlW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtYmFkZ2UtY29udGVudFtfbmdjb250ZW50LSVDT01QJV17bGVmdDphdXRvO3JpZ2h0Oi0xNnB4fS5tYXQtYmFkZ2Utc21hbGwubWF0LWJhZGdlLWFmdGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtYmFkZ2UtY29udGVudFtfbmdjb250ZW50LSVDT01QJV17cmlnaHQ6LTE2cHh9W2Rpcj1ydGxdW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtYmFkZ2Utc21hbGwubWF0LWJhZGdlLWFmdGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtYmFkZ2UtY29udGVudFtfbmdjb250ZW50LSVDT01QJV17cmlnaHQ6YXV0bztsZWZ0Oi0xNnB4fS5tYXQtYmFkZ2Utc21hbGwubWF0LWJhZGdlLW92ZXJsYXAubWF0LWJhZGdlLWJlZm9yZVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWJhZGdlLWNvbnRlbnRbX25nY29udGVudC0lQ09NUCVde2xlZnQ6LThweH1bZGlyPXJ0bF1bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1iYWRnZS1zbWFsbC5tYXQtYmFkZ2Utb3ZlcmxhcC5tYXQtYmFkZ2UtYmVmb3JlW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtYmFkZ2UtY29udGVudFtfbmdjb250ZW50LSVDT01QJV17bGVmdDphdXRvO3JpZ2h0Oi04cHh9Lm1hdC1iYWRnZS1zbWFsbC5tYXQtYmFkZ2Utb3ZlcmxhcC5tYXQtYmFkZ2UtYWZ0ZXJbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1iYWRnZS1jb250ZW50W19uZ2NvbnRlbnQtJUNPTVAlXXtyaWdodDotOHB4fVtkaXI9cnRsXVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWJhZGdlLXNtYWxsLm1hdC1iYWRnZS1vdmVybGFwLm1hdC1iYWRnZS1hZnRlcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWJhZGdlLWNvbnRlbnRbX25nY29udGVudC0lQ09NUCVde3JpZ2h0OmF1dG87bGVmdDotOHB4fS5tYXQtYmFkZ2UtbWVkaXVtW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtYmFkZ2UtY29udGVudFtfbmdjb250ZW50LSVDT01QJV17d2lkdGg6MjJweDtoZWlnaHQ6MjJweDtsaW5lLWhlaWdodDoyMnB4fS5tYXQtYmFkZ2UtbWVkaXVtLm1hdC1iYWRnZS1hYm92ZVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWJhZGdlLWNvbnRlbnRbX25nY29udGVudC0lQ09NUCVde3RvcDotMTFweH0ubWF0LWJhZGdlLW1lZGl1bS5tYXQtYmFkZ2UtYmVsb3dbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1iYWRnZS1jb250ZW50W19uZ2NvbnRlbnQtJUNPTVAlXXtib3R0b206LTExcHh9Lm1hdC1iYWRnZS1tZWRpdW0ubWF0LWJhZGdlLWJlZm9yZVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWJhZGdlLWNvbnRlbnRbX25nY29udGVudC0lQ09NUCVde2xlZnQ6LTIycHh9W2Rpcj1ydGxdW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtYmFkZ2UtbWVkaXVtLm1hdC1iYWRnZS1iZWZvcmVbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1iYWRnZS1jb250ZW50W19uZ2NvbnRlbnQtJUNPTVAlXXtsZWZ0OmF1dG87cmlnaHQ6LTIycHh9Lm1hdC1iYWRnZS1tZWRpdW0ubWF0LWJhZGdlLWFmdGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtYmFkZ2UtY29udGVudFtfbmdjb250ZW50LSVDT01QJV17cmlnaHQ6LTIycHh9W2Rpcj1ydGxdW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtYmFkZ2UtbWVkaXVtLm1hdC1iYWRnZS1hZnRlcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWJhZGdlLWNvbnRlbnRbX25nY29udGVudC0lQ09NUCVde3JpZ2h0OmF1dG87bGVmdDotMjJweH0ubWF0LWJhZGdlLW1lZGl1bS5tYXQtYmFkZ2Utb3ZlcmxhcC5tYXQtYmFkZ2UtYmVmb3JlW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtYmFkZ2UtY29udGVudFtfbmdjb250ZW50LSVDT01QJV17bGVmdDotMTFweH1bZGlyPXJ0bF1bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1iYWRnZS1tZWRpdW0ubWF0LWJhZGdlLW92ZXJsYXAubWF0LWJhZGdlLWJlZm9yZVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWJhZGdlLWNvbnRlbnRbX25nY29udGVudC0lQ09NUCVde2xlZnQ6YXV0bztyaWdodDotMTFweH0ubWF0LWJhZGdlLW1lZGl1bS5tYXQtYmFkZ2Utb3ZlcmxhcC5tYXQtYmFkZ2UtYWZ0ZXJbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1iYWRnZS1jb250ZW50W19uZ2NvbnRlbnQtJUNPTVAlXXtyaWdodDotMTFweH1bZGlyPXJ0bF1bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1iYWRnZS1tZWRpdW0ubWF0LWJhZGdlLW92ZXJsYXAubWF0LWJhZGdlLWFmdGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtYmFkZ2UtY29udGVudFtfbmdjb250ZW50LSVDT01QJV17cmlnaHQ6YXV0bztsZWZ0Oi0xMXB4fS5tYXQtYmFkZ2UtbGFyZ2VbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1iYWRnZS1jb250ZW50W19uZ2NvbnRlbnQtJUNPTVAlXXt3aWR0aDoyOHB4O2hlaWdodDoyOHB4O2xpbmUtaGVpZ2h0OjI4cHh9Lm1hdC1iYWRnZS1sYXJnZS5tYXQtYmFkZ2UtYWJvdmVbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1iYWRnZS1jb250ZW50W19uZ2NvbnRlbnQtJUNPTVAlXXt0b3A6LTE0cHh9Lm1hdC1iYWRnZS1sYXJnZS5tYXQtYmFkZ2UtYmVsb3dbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1iYWRnZS1jb250ZW50W19uZ2NvbnRlbnQtJUNPTVAlXXtib3R0b206LTE0cHh9Lm1hdC1iYWRnZS1sYXJnZS5tYXQtYmFkZ2UtYmVmb3JlW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtYmFkZ2UtY29udGVudFtfbmdjb250ZW50LSVDT01QJV17bGVmdDotMjhweH1bZGlyPXJ0bF1bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1iYWRnZS1sYXJnZS5tYXQtYmFkZ2UtYmVmb3JlW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtYmFkZ2UtY29udGVudFtfbmdjb250ZW50LSVDT01QJV17bGVmdDphdXRvO3JpZ2h0Oi0yOHB4fS5tYXQtYmFkZ2UtbGFyZ2UubWF0LWJhZGdlLWFmdGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtYmFkZ2UtY29udGVudFtfbmdjb250ZW50LSVDT01QJV17cmlnaHQ6LTI4cHh9W2Rpcj1ydGxdW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtYmFkZ2UtbGFyZ2UubWF0LWJhZGdlLWFmdGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtYmFkZ2UtY29udGVudFtfbmdjb250ZW50LSVDT01QJV17cmlnaHQ6YXV0bztsZWZ0Oi0yOHB4fS5tYXQtYmFkZ2UtbGFyZ2UubWF0LWJhZGdlLW92ZXJsYXAubWF0LWJhZGdlLWJlZm9yZVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWJhZGdlLWNvbnRlbnRbX25nY29udGVudC0lQ09NUCVde2xlZnQ6LTE0cHh9W2Rpcj1ydGxdW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtYmFkZ2UtbGFyZ2UubWF0LWJhZGdlLW92ZXJsYXAubWF0LWJhZGdlLWJlZm9yZVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWJhZGdlLWNvbnRlbnRbX25nY29udGVudC0lQ09NUCVde2xlZnQ6YXV0bztyaWdodDotMTRweH0ubWF0LWJhZGdlLWxhcmdlLm1hdC1iYWRnZS1vdmVybGFwLm1hdC1iYWRnZS1hZnRlcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWJhZGdlLWNvbnRlbnRbX25nY29udGVudC0lQ09NUCVde3JpZ2h0Oi0xNHB4fVtkaXI9cnRsXVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWJhZGdlLWxhcmdlLm1hdC1iYWRnZS1vdmVybGFwLm1hdC1iYWRnZS1hZnRlcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWJhZGdlLWNvbnRlbnRbX25nY29udGVudC0lQ09NUCVde3JpZ2h0OmF1dG87bGVmdDotMTRweH0ubWF0LWJvdHRvbS1zaGVldC1jb250YWluZXJbX25nY29udGVudC0lQ09NUCVde2JveC1zaGFkb3c6MHB4IDhweCAxMHB4IC01cHggcmdiYSgwLCAwLCAwLCAwLjIpLDBweCAxNnB4IDI0cHggMnB4IHJnYmEoMCwgMCwgMCwgMC4xNCksMHB4IDZweCAzMHB4IDVweCByZ2JhKDAsIDAsIDAsIDAuMTIpO2JhY2tncm91bmQ6I2ZmZjtjb2xvcjojMjEyMTIxfS5tYXQtYnV0dG9uW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1pY29uLWJ1dHRvbltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtc3Ryb2tlZC1idXR0b25bX25nY29udGVudC0lQ09NUCVde2NvbG9yOmluaGVyaXQ7YmFja2dyb3VuZDp0cmFuc3BhcmVudH0ubWF0LWJ1dHRvbi5tYXQtcHJpbWFyeVtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtaWNvbi1idXR0b24ubWF0LXByaW1hcnlbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXN0cm9rZWQtYnV0dG9uLm1hdC1wcmltYXJ5W19uZ2NvbnRlbnQtJUNPTVAlXXtjb2xvcjojZjU3YzAwfS5tYXQtYnV0dG9uLm1hdC1hY2NlbnRbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWljb24tYnV0dG9uLm1hdC1hY2NlbnRbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXN0cm9rZWQtYnV0dG9uLm1hdC1hY2NlbnRbX25nY29udGVudC0lQ09NUCVde2NvbG9yOiNmZjk4MDB9Lm1hdC1idXR0b24ubWF0LXdhcm5bX25nY29udGVudC0lQ09NUCVdLCAubWF0LWljb24tYnV0dG9uLm1hdC13YXJuW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1zdHJva2VkLWJ1dHRvbi5tYXQtd2Fybltfbmdjb250ZW50LSVDT01QJV17Y29sb3I6I2Y0NDMzNn0ubWF0LWJ1dHRvbi5tYXQtcHJpbWFyeS5tYXQtYnV0dG9uLWRpc2FibGVkW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1idXR0b24ubWF0LWFjY2VudC5tYXQtYnV0dG9uLWRpc2FibGVkW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1idXR0b24ubWF0LXdhcm4ubWF0LWJ1dHRvbi1kaXNhYmxlZFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtYnV0dG9uLm1hdC1idXR0b24tZGlzYWJsZWQubWF0LWJ1dHRvbi1kaXNhYmxlZFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtaWNvbi1idXR0b24ubWF0LXByaW1hcnkubWF0LWJ1dHRvbi1kaXNhYmxlZFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtaWNvbi1idXR0b24ubWF0LWFjY2VudC5tYXQtYnV0dG9uLWRpc2FibGVkW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1pY29uLWJ1dHRvbi5tYXQtd2Fybi5tYXQtYnV0dG9uLWRpc2FibGVkW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1pY29uLWJ1dHRvbi5tYXQtYnV0dG9uLWRpc2FibGVkLm1hdC1idXR0b24tZGlzYWJsZWRbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXN0cm9rZWQtYnV0dG9uLm1hdC1wcmltYXJ5Lm1hdC1idXR0b24tZGlzYWJsZWRbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXN0cm9rZWQtYnV0dG9uLm1hdC1hY2NlbnQubWF0LWJ1dHRvbi1kaXNhYmxlZFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtc3Ryb2tlZC1idXR0b24ubWF0LXdhcm4ubWF0LWJ1dHRvbi1kaXNhYmxlZFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtc3Ryb2tlZC1idXR0b24ubWF0LWJ1dHRvbi1kaXNhYmxlZC5tYXQtYnV0dG9uLWRpc2FibGVkW19uZ2NvbnRlbnQtJUNPTVAlXXtjb2xvcjpyZ2JhKDAsMCwwLC4yNil9Lm1hdC1idXR0b24ubWF0LXByaW1hcnlbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1idXR0b24tZm9jdXMtb3ZlcmxheVtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtaWNvbi1idXR0b24ubWF0LXByaW1hcnlbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1idXR0b24tZm9jdXMtb3ZlcmxheVtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtc3Ryb2tlZC1idXR0b24ubWF0LXByaW1hcnlbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1idXR0b24tZm9jdXMtb3ZlcmxheVtfbmdjb250ZW50LSVDT01QJV17YmFja2dyb3VuZC1jb2xvcjojZjU3YzAwfS5tYXQtYnV0dG9uLm1hdC1hY2NlbnRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1idXR0b24tZm9jdXMtb3ZlcmxheVtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtaWNvbi1idXR0b24ubWF0LWFjY2VudFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWJ1dHRvbi1mb2N1cy1vdmVybGF5W19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1zdHJva2VkLWJ1dHRvbi5tYXQtYWNjZW50W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtYnV0dG9uLWZvY3VzLW92ZXJsYXlbX25nY29udGVudC0lQ09NUCVde2JhY2tncm91bmQtY29sb3I6I2ZmOTgwMH0ubWF0LWJ1dHRvbi5tYXQtd2Fybltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWJ1dHRvbi1mb2N1cy1vdmVybGF5W19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1pY29uLWJ1dHRvbi5tYXQtd2Fybltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWJ1dHRvbi1mb2N1cy1vdmVybGF5W19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1zdHJva2VkLWJ1dHRvbi5tYXQtd2Fybltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWJ1dHRvbi1mb2N1cy1vdmVybGF5W19uZ2NvbnRlbnQtJUNPTVAlXXtiYWNrZ3JvdW5kLWNvbG9yOiNmNDQzMzZ9Lm1hdC1idXR0b24ubWF0LWJ1dHRvbi1kaXNhYmxlZFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWJ1dHRvbi1mb2N1cy1vdmVybGF5W19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1pY29uLWJ1dHRvbi5tYXQtYnV0dG9uLWRpc2FibGVkW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtYnV0dG9uLWZvY3VzLW92ZXJsYXlbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXN0cm9rZWQtYnV0dG9uLm1hdC1idXR0b24tZGlzYWJsZWRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1idXR0b24tZm9jdXMtb3ZlcmxheVtfbmdjb250ZW50LSVDT01QJV17YmFja2dyb3VuZC1jb2xvcjp0cmFuc3BhcmVudH0ubWF0LWJ1dHRvbltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXJpcHBsZS1lbGVtZW50W19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1pY29uLWJ1dHRvbltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXJpcHBsZS1lbGVtZW50W19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1zdHJva2VkLWJ1dHRvbltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXJpcHBsZS1lbGVtZW50W19uZ2NvbnRlbnQtJUNPTVAlXXtvcGFjaXR5Oi4xO2JhY2tncm91bmQtY29sb3I6Y3VycmVudENvbG9yfS5tYXQtYnV0dG9uLWZvY3VzLW92ZXJsYXlbX25nY29udGVudC0lQ09NUCVde2JhY2tncm91bmQ6IzAwMH0ubWF0LXN0cm9rZWQtYnV0dG9uW19uZ2NvbnRlbnQtJUNPTVAlXTpub3QoLm1hdC1idXR0b24tZGlzYWJsZWQpe2JvcmRlci1jb2xvcjpyZ2JhKDAsMCwwLC4xMil9Lm1hdC1mbGF0LWJ1dHRvbltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtcmFpc2VkLWJ1dHRvbltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtZmFiW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1taW5pLWZhYltfbmdjb250ZW50LSVDT01QJV17Y29sb3I6IzIxMjEyMTtiYWNrZ3JvdW5kLWNvbG9yOiNmZmZ9Lm1hdC1mbGF0LWJ1dHRvbi5tYXQtcHJpbWFyeVtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtcmFpc2VkLWJ1dHRvbi5tYXQtcHJpbWFyeVtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtZmFiLm1hdC1wcmltYXJ5W19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1taW5pLWZhYi5tYXQtcHJpbWFyeVtfbmdjb250ZW50LSVDT01QJV17Y29sb3I6I2ZmZn0ubWF0LWZsYXQtYnV0dG9uLm1hdC1hY2NlbnRbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXJhaXNlZC1idXR0b24ubWF0LWFjY2VudFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtZmFiLm1hdC1hY2NlbnRbX25nY29udGVudC0lQ09NUCVdLCAubWF0LW1pbmktZmFiLm1hdC1hY2NlbnRbX25nY29udGVudC0lQ09NUCVde2NvbG9yOiNmZmZ9Lm1hdC1mbGF0LWJ1dHRvbi5tYXQtd2Fybltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtcmFpc2VkLWJ1dHRvbi5tYXQtd2Fybltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtZmFiLm1hdC13YXJuW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1taW5pLWZhYi5tYXQtd2Fybltfbmdjb250ZW50LSVDT01QJV17Y29sb3I6I2ZmZn0ubWF0LWZsYXQtYnV0dG9uLm1hdC1wcmltYXJ5Lm1hdC1idXR0b24tZGlzYWJsZWRbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWZsYXQtYnV0dG9uLm1hdC1hY2NlbnQubWF0LWJ1dHRvbi1kaXNhYmxlZFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtZmxhdC1idXR0b24ubWF0LXdhcm4ubWF0LWJ1dHRvbi1kaXNhYmxlZFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtZmxhdC1idXR0b24ubWF0LWJ1dHRvbi1kaXNhYmxlZC5tYXQtYnV0dG9uLWRpc2FibGVkW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1yYWlzZWQtYnV0dG9uLm1hdC1wcmltYXJ5Lm1hdC1idXR0b24tZGlzYWJsZWRbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXJhaXNlZC1idXR0b24ubWF0LWFjY2VudC5tYXQtYnV0dG9uLWRpc2FibGVkW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1yYWlzZWQtYnV0dG9uLm1hdC13YXJuLm1hdC1idXR0b24tZGlzYWJsZWRbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXJhaXNlZC1idXR0b24ubWF0LWJ1dHRvbi1kaXNhYmxlZC5tYXQtYnV0dG9uLWRpc2FibGVkW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1mYWIubWF0LXByaW1hcnkubWF0LWJ1dHRvbi1kaXNhYmxlZFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtZmFiLm1hdC1hY2NlbnQubWF0LWJ1dHRvbi1kaXNhYmxlZFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtZmFiLm1hdC13YXJuLm1hdC1idXR0b24tZGlzYWJsZWRbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWZhYi5tYXQtYnV0dG9uLWRpc2FibGVkLm1hdC1idXR0b24tZGlzYWJsZWRbX25nY29udGVudC0lQ09NUCVdLCAubWF0LW1pbmktZmFiLm1hdC1wcmltYXJ5Lm1hdC1idXR0b24tZGlzYWJsZWRbX25nY29udGVudC0lQ09NUCVdLCAubWF0LW1pbmktZmFiLm1hdC1hY2NlbnQubWF0LWJ1dHRvbi1kaXNhYmxlZFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtbWluaS1mYWIubWF0LXdhcm4ubWF0LWJ1dHRvbi1kaXNhYmxlZFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtbWluaS1mYWIubWF0LWJ1dHRvbi1kaXNhYmxlZC5tYXQtYnV0dG9uLWRpc2FibGVkW19uZ2NvbnRlbnQtJUNPTVAlXXtjb2xvcjpyZ2JhKDAsMCwwLC4yNil9Lm1hdC1mbGF0LWJ1dHRvbi5tYXQtcHJpbWFyeVtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtcmFpc2VkLWJ1dHRvbi5tYXQtcHJpbWFyeVtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtZmFiLm1hdC1wcmltYXJ5W19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1taW5pLWZhYi5tYXQtcHJpbWFyeVtfbmdjb250ZW50LSVDT01QJV17YmFja2dyb3VuZC1jb2xvcjojZjU3YzAwfS5tYXQtZmxhdC1idXR0b24ubWF0LWFjY2VudFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtcmFpc2VkLWJ1dHRvbi5tYXQtYWNjZW50W19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1mYWIubWF0LWFjY2VudFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtbWluaS1mYWIubWF0LWFjY2VudFtfbmdjb250ZW50LSVDT01QJV17YmFja2dyb3VuZC1jb2xvcjojZmY5ODAwfS5tYXQtZmxhdC1idXR0b24ubWF0LXdhcm5bX25nY29udGVudC0lQ09NUCVdLCAubWF0LXJhaXNlZC1idXR0b24ubWF0LXdhcm5bX25nY29udGVudC0lQ09NUCVdLCAubWF0LWZhYi5tYXQtd2Fybltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtbWluaS1mYWIubWF0LXdhcm5bX25nY29udGVudC0lQ09NUCVde2JhY2tncm91bmQtY29sb3I6I2Y0NDMzNn0ubWF0LWZsYXQtYnV0dG9uLm1hdC1wcmltYXJ5Lm1hdC1idXR0b24tZGlzYWJsZWRbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWZsYXQtYnV0dG9uLm1hdC1hY2NlbnQubWF0LWJ1dHRvbi1kaXNhYmxlZFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtZmxhdC1idXR0b24ubWF0LXdhcm4ubWF0LWJ1dHRvbi1kaXNhYmxlZFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtZmxhdC1idXR0b24ubWF0LWJ1dHRvbi1kaXNhYmxlZC5tYXQtYnV0dG9uLWRpc2FibGVkW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1yYWlzZWQtYnV0dG9uLm1hdC1wcmltYXJ5Lm1hdC1idXR0b24tZGlzYWJsZWRbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXJhaXNlZC1idXR0b24ubWF0LWFjY2VudC5tYXQtYnV0dG9uLWRpc2FibGVkW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1yYWlzZWQtYnV0dG9uLm1hdC13YXJuLm1hdC1idXR0b24tZGlzYWJsZWRbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXJhaXNlZC1idXR0b24ubWF0LWJ1dHRvbi1kaXNhYmxlZC5tYXQtYnV0dG9uLWRpc2FibGVkW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1mYWIubWF0LXByaW1hcnkubWF0LWJ1dHRvbi1kaXNhYmxlZFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtZmFiLm1hdC1hY2NlbnQubWF0LWJ1dHRvbi1kaXNhYmxlZFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtZmFiLm1hdC13YXJuLm1hdC1idXR0b24tZGlzYWJsZWRbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWZhYi5tYXQtYnV0dG9uLWRpc2FibGVkLm1hdC1idXR0b24tZGlzYWJsZWRbX25nY29udGVudC0lQ09NUCVdLCAubWF0LW1pbmktZmFiLm1hdC1wcmltYXJ5Lm1hdC1idXR0b24tZGlzYWJsZWRbX25nY29udGVudC0lQ09NUCVdLCAubWF0LW1pbmktZmFiLm1hdC1hY2NlbnQubWF0LWJ1dHRvbi1kaXNhYmxlZFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtbWluaS1mYWIubWF0LXdhcm4ubWF0LWJ1dHRvbi1kaXNhYmxlZFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtbWluaS1mYWIubWF0LWJ1dHRvbi1kaXNhYmxlZC5tYXQtYnV0dG9uLWRpc2FibGVkW19uZ2NvbnRlbnQtJUNPTVAlXXtiYWNrZ3JvdW5kLWNvbG9yOnJnYmEoMCwwLDAsLjEyKX0ubWF0LWZsYXQtYnV0dG9uLm1hdC1wcmltYXJ5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtcmlwcGxlLWVsZW1lbnRbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXJhaXNlZC1idXR0b24ubWF0LXByaW1hcnlbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1yaXBwbGUtZWxlbWVudFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtZmFiLm1hdC1wcmltYXJ5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtcmlwcGxlLWVsZW1lbnRbX25nY29udGVudC0lQ09NUCVdLCAubWF0LW1pbmktZmFiLm1hdC1wcmltYXJ5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtcmlwcGxlLWVsZW1lbnRbX25nY29udGVudC0lQ09NUCVde2JhY2tncm91bmQtY29sb3I6cmdiYSgyNTUsMjU1LDI1NSwuMSl9Lm1hdC1mbGF0LWJ1dHRvbi5tYXQtYWNjZW50W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtcmlwcGxlLWVsZW1lbnRbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXJhaXNlZC1idXR0b24ubWF0LWFjY2VudFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXJpcHBsZS1lbGVtZW50W19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1mYWIubWF0LWFjY2VudFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXJpcHBsZS1lbGVtZW50W19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1taW5pLWZhYi5tYXQtYWNjZW50W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtcmlwcGxlLWVsZW1lbnRbX25nY29udGVudC0lQ09NUCVde2JhY2tncm91bmQtY29sb3I6cmdiYSgyNTUsMjU1LDI1NSwuMSl9Lm1hdC1mbGF0LWJ1dHRvbi5tYXQtd2Fybltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXJpcHBsZS1lbGVtZW50W19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1yYWlzZWQtYnV0dG9uLm1hdC13YXJuW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtcmlwcGxlLWVsZW1lbnRbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWZhYi5tYXQtd2Fybltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXJpcHBsZS1lbGVtZW50W19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1taW5pLWZhYi5tYXQtd2Fybltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXJpcHBsZS1lbGVtZW50W19uZ2NvbnRlbnQtJUNPTVAlXXtiYWNrZ3JvdW5kLWNvbG9yOnJnYmEoMjU1LDI1NSwyNTUsLjEpfS5tYXQtc3Ryb2tlZC1idXR0b25bX25nY29udGVudC0lQ09NUCVdOm5vdChbY2xhc3MqPW1hdC1lbGV2YXRpb24tel0pLCAubWF0LWZsYXQtYnV0dG9uW19uZ2NvbnRlbnQtJUNPTVAlXTpub3QoW2NsYXNzKj1tYXQtZWxldmF0aW9uLXpdKXtib3gtc2hhZG93OjBweCAwcHggMHB4IDBweCByZ2JhKDAsIDAsIDAsIDAuMiksMHB4IDBweCAwcHggMHB4IHJnYmEoMCwgMCwgMCwgMC4xNCksMHB4IDBweCAwcHggMHB4IHJnYmEoMCwgMCwgMCwgMC4xMil9Lm1hdC1yYWlzZWQtYnV0dG9uW19uZ2NvbnRlbnQtJUNPTVAlXTpub3QoW2NsYXNzKj1tYXQtZWxldmF0aW9uLXpdKXtib3gtc2hhZG93OjBweCAzcHggMXB4IC0ycHggcmdiYSgwLCAwLCAwLCAwLjIpLDBweCAycHggMnB4IDBweCByZ2JhKDAsIDAsIDAsIDAuMTQpLDBweCAxcHggNXB4IDBweCByZ2JhKDAsIDAsIDAsIDAuMTIpfS5tYXQtcmFpc2VkLWJ1dHRvbltfbmdjb250ZW50LSVDT01QJV06bm90KC5tYXQtYnV0dG9uLWRpc2FibGVkKTphY3RpdmU6bm90KFtjbGFzcyo9bWF0LWVsZXZhdGlvbi16XSl7Ym94LXNoYWRvdzowcHggNXB4IDVweCAtM3B4IHJnYmEoMCwgMCwgMCwgMC4yKSwwcHggOHB4IDEwcHggMXB4IHJnYmEoMCwgMCwgMCwgMC4xNCksMHB4IDNweCAxNHB4IDJweCByZ2JhKDAsIDAsIDAsIDAuMTIpfS5tYXQtcmFpc2VkLWJ1dHRvbi5tYXQtYnV0dG9uLWRpc2FibGVkW19uZ2NvbnRlbnQtJUNPTVAlXTpub3QoW2NsYXNzKj1tYXQtZWxldmF0aW9uLXpdKXtib3gtc2hhZG93OjBweCAwcHggMHB4IDBweCByZ2JhKDAsIDAsIDAsIDAuMiksMHB4IDBweCAwcHggMHB4IHJnYmEoMCwgMCwgMCwgMC4xNCksMHB4IDBweCAwcHggMHB4IHJnYmEoMCwgMCwgMCwgMC4xMil9Lm1hdC1mYWJbX25nY29udGVudC0lQ09NUCVdOm5vdChbY2xhc3MqPW1hdC1lbGV2YXRpb24tel0pLCAubWF0LW1pbmktZmFiW19uZ2NvbnRlbnQtJUNPTVAlXTpub3QoW2NsYXNzKj1tYXQtZWxldmF0aW9uLXpdKXtib3gtc2hhZG93OjBweCAzcHggNXB4IC0xcHggcmdiYSgwLCAwLCAwLCAwLjIpLDBweCA2cHggMTBweCAwcHggcmdiYSgwLCAwLCAwLCAwLjE0KSwwcHggMXB4IDE4cHggMHB4IHJnYmEoMCwgMCwgMCwgMC4xMil9Lm1hdC1mYWJbX25nY29udGVudC0lQ09NUCVdOm5vdCgubWF0LWJ1dHRvbi1kaXNhYmxlZCk6YWN0aXZlOm5vdChbY2xhc3MqPW1hdC1lbGV2YXRpb24tel0pLCAubWF0LW1pbmktZmFiW19uZ2NvbnRlbnQtJUNPTVAlXTpub3QoLm1hdC1idXR0b24tZGlzYWJsZWQpOmFjdGl2ZTpub3QoW2NsYXNzKj1tYXQtZWxldmF0aW9uLXpdKXtib3gtc2hhZG93OjBweCA3cHggOHB4IC00cHggcmdiYSgwLCAwLCAwLCAwLjIpLDBweCAxMnB4IDE3cHggMnB4IHJnYmEoMCwgMCwgMCwgMC4xNCksMHB4IDVweCAyMnB4IDRweCByZ2JhKDAsIDAsIDAsIDAuMTIpfS5tYXQtZmFiLm1hdC1idXR0b24tZGlzYWJsZWRbX25nY29udGVudC0lQ09NUCVdOm5vdChbY2xhc3MqPW1hdC1lbGV2YXRpb24tel0pLCAubWF0LW1pbmktZmFiLm1hdC1idXR0b24tZGlzYWJsZWRbX25nY29udGVudC0lQ09NUCVdOm5vdChbY2xhc3MqPW1hdC1lbGV2YXRpb24tel0pe2JveC1zaGFkb3c6MHB4IDBweCAwcHggMHB4IHJnYmEoMCwgMCwgMCwgMC4yKSwwcHggMHB4IDBweCAwcHggcmdiYSgwLCAwLCAwLCAwLjE0KSwwcHggMHB4IDBweCAwcHggcmdiYSgwLCAwLCAwLCAwLjEyKX0ubWF0LWJ1dHRvbi10b2dnbGUtc3RhbmRhbG9uZVtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtYnV0dG9uLXRvZ2dsZS1ncm91cFtfbmdjb250ZW50LSVDT01QJV17Ym94LXNoYWRvdzowcHggM3B4IDFweCAtMnB4IHJnYmEoMCwgMCwgMCwgMC4yKSwwcHggMnB4IDJweCAwcHggcmdiYSgwLCAwLCAwLCAwLjE0KSwwcHggMXB4IDVweCAwcHggcmdiYSgwLCAwLCAwLCAwLjEyKX0ubWF0LWJ1dHRvbi10b2dnbGUtc3RhbmRhbG9uZS5tYXQtYnV0dG9uLXRvZ2dsZS1hcHBlYXJhbmNlLXN0YW5kYXJkW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1idXR0b24tdG9nZ2xlLWdyb3VwLWFwcGVhcmFuY2Utc3RhbmRhcmRbX25nY29udGVudC0lQ09NUCVde2JveC1zaGFkb3c6bm9uZX0ubWF0LWJ1dHRvbi10b2dnbGVbX25nY29udGVudC0lQ09NUCVde2NvbG9yOnJnYmEoMCwwLDAsLjM4KX0ubWF0LWJ1dHRvbi10b2dnbGVbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1idXR0b24tdG9nZ2xlLWZvY3VzLW92ZXJsYXlbX25nY29udGVudC0lQ09NUCVde2JhY2tncm91bmQtY29sb3I6cmdiYSgwLDAsMCwuMTIpfS5tYXQtYnV0dG9uLXRvZ2dsZS1hcHBlYXJhbmNlLXN0YW5kYXJkW19uZ2NvbnRlbnQtJUNPTVAlXXtjb2xvcjojMjEyMTIxO2JhY2tncm91bmQ6I2ZmZn0ubWF0LWJ1dHRvbi10b2dnbGUtYXBwZWFyYW5jZS1zdGFuZGFyZFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWJ1dHRvbi10b2dnbGUtZm9jdXMtb3ZlcmxheVtfbmdjb250ZW50LSVDT01QJV17YmFja2dyb3VuZC1jb2xvcjojMDAwfS5tYXQtYnV0dG9uLXRvZ2dsZS1ncm91cC1hcHBlYXJhbmNlLXN0YW5kYXJkW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtYnV0dG9uLXRvZ2dsZVtfbmdjb250ZW50LSVDT01QJV0gKyAubWF0LWJ1dHRvbi10b2dnbGVbX25nY29udGVudC0lQ09NUCVde2JvcmRlci1sZWZ0OnNvbGlkIDFweCByZ2JhKDAsMCwwLC4xMil9W2Rpcj1ydGxdW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtYnV0dG9uLXRvZ2dsZS1ncm91cC1hcHBlYXJhbmNlLXN0YW5kYXJkW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtYnV0dG9uLXRvZ2dsZVtfbmdjb250ZW50LSVDT01QJV0gKyAubWF0LWJ1dHRvbi10b2dnbGVbX25nY29udGVudC0lQ09NUCVde2JvcmRlci1sZWZ0Om5vbmU7Ym9yZGVyLXJpZ2h0OnNvbGlkIDFweCByZ2JhKDAsMCwwLC4xMil9Lm1hdC1idXR0b24tdG9nZ2xlLWdyb3VwLWFwcGVhcmFuY2Utc3RhbmRhcmQubWF0LWJ1dHRvbi10b2dnbGUtdmVydGljYWxbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1idXR0b24tdG9nZ2xlW19uZ2NvbnRlbnQtJUNPTVAlXSArIC5tYXQtYnV0dG9uLXRvZ2dsZVtfbmdjb250ZW50LSVDT01QJV17Ym9yZGVyLWxlZnQ6bm9uZTtib3JkZXItcmlnaHQ6bm9uZTtib3JkZXItdG9wOnNvbGlkIDFweCByZ2JhKDAsMCwwLC4xMil9Lm1hdC1idXR0b24tdG9nZ2xlLWNoZWNrZWRbX25nY29udGVudC0lQ09NUCVde2JhY2tncm91bmQtY29sb3I6I2UwZTBlMDtjb2xvcjojNjE2MTYxfS5tYXQtYnV0dG9uLXRvZ2dsZS1jaGVja2VkLm1hdC1idXR0b24tdG9nZ2xlLWFwcGVhcmFuY2Utc3RhbmRhcmRbX25nY29udGVudC0lQ09NUCVde2NvbG9yOiMyMTIxMjF9Lm1hdC1idXR0b24tdG9nZ2xlLWRpc2FibGVkW19uZ2NvbnRlbnQtJUNPTVAlXXtjb2xvcjpyZ2JhKDAsMCwwLC4yNik7YmFja2dyb3VuZC1jb2xvcjojZWVlfS5tYXQtYnV0dG9uLXRvZ2dsZS1kaXNhYmxlZC5tYXQtYnV0dG9uLXRvZ2dsZS1hcHBlYXJhbmNlLXN0YW5kYXJkW19uZ2NvbnRlbnQtJUNPTVAlXXtiYWNrZ3JvdW5kOiNmZmZ9Lm1hdC1idXR0b24tdG9nZ2xlLWRpc2FibGVkLm1hdC1idXR0b24tdG9nZ2xlLWNoZWNrZWRbX25nY29udGVudC0lQ09NUCVde2JhY2tncm91bmQtY29sb3I6I2JkYmRiZH0ubWF0LWJ1dHRvbi10b2dnbGUtc3RhbmRhbG9uZS5tYXQtYnV0dG9uLXRvZ2dsZS1hcHBlYXJhbmNlLXN0YW5kYXJkW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1idXR0b24tdG9nZ2xlLWdyb3VwLWFwcGVhcmFuY2Utc3RhbmRhcmRbX25nY29udGVudC0lQ09NUCVde2JvcmRlcjpzb2xpZCAxcHggcmdiYSgwLDAsMCwuMTIpfS5tYXQtYnV0dG9uLXRvZ2dsZS1hcHBlYXJhbmNlLXN0YW5kYXJkW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtYnV0dG9uLXRvZ2dsZS1sYWJlbC1jb250ZW50W19uZ2NvbnRlbnQtJUNPTVAlXXtsaW5lLWhlaWdodDo0OHB4fS5tYXQtY2FyZFtfbmdjb250ZW50LSVDT01QJV17YmFja2dyb3VuZDojZmZmO2NvbG9yOiMyMTIxMjF9Lm1hdC1jYXJkW19uZ2NvbnRlbnQtJUNPTVAlXTpub3QoW2NsYXNzKj1tYXQtZWxldmF0aW9uLXpdKXtib3gtc2hhZG93OjBweCAycHggMXB4IC0xcHggcmdiYSgwLCAwLCAwLCAwLjIpLDBweCAxcHggMXB4IDBweCByZ2JhKDAsIDAsIDAsIDAuMTQpLDBweCAxcHggM3B4IDBweCByZ2JhKDAsIDAsIDAsIDAuMTIpfS5tYXQtY2FyZC5tYXQtY2FyZC1mbGF0W19uZ2NvbnRlbnQtJUNPTVAlXTpub3QoW2NsYXNzKj1tYXQtZWxldmF0aW9uLXpdKXtib3gtc2hhZG93OjBweCAwcHggMHB4IDBweCByZ2JhKDAsIDAsIDAsIDAuMiksMHB4IDBweCAwcHggMHB4IHJnYmEoMCwgMCwgMCwgMC4xNCksMHB4IDBweCAwcHggMHB4IHJnYmEoMCwgMCwgMCwgMC4xMil9Lm1hdC1jYXJkLXN1YnRpdGxlW19uZ2NvbnRlbnQtJUNPTVAlXXtjb2xvcjojNjE2MTYxfS5tYXQtY2hlY2tib3gtZnJhbWVbX25nY29udGVudC0lQ09NUCVde2JvcmRlci1jb2xvcjojNjE2MTYxfS5tYXQtY2hlY2tib3gtY2hlY2ttYXJrW19uZ2NvbnRlbnQtJUNPTVAlXXtmaWxsOiNmYWZhZmF9Lm1hdC1jaGVja2JveC1jaGVja21hcmstcGF0aFtfbmdjb250ZW50LSVDT01QJV17c3Ryb2tlOiNmYWZhZmEgIWltcG9ydGFudH0ubWF0LWNoZWNrYm94LW1peGVkbWFya1tfbmdjb250ZW50LSVDT01QJV17YmFja2dyb3VuZC1jb2xvcjojZmFmYWZhfS5tYXQtY2hlY2tib3gtaW5kZXRlcm1pbmF0ZS5tYXQtcHJpbWFyeVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWNoZWNrYm94LWJhY2tncm91bmRbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWNoZWNrYm94LWNoZWNrZWQubWF0LXByaW1hcnlbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1jaGVja2JveC1iYWNrZ3JvdW5kW19uZ2NvbnRlbnQtJUNPTVAlXXtiYWNrZ3JvdW5kLWNvbG9yOiNmNTdjMDB9Lm1hdC1jaGVja2JveC1pbmRldGVybWluYXRlLm1hdC1hY2NlbnRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1jaGVja2JveC1iYWNrZ3JvdW5kW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1jaGVja2JveC1jaGVja2VkLm1hdC1hY2NlbnRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1jaGVja2JveC1iYWNrZ3JvdW5kW19uZ2NvbnRlbnQtJUNPTVAlXXtiYWNrZ3JvdW5kLWNvbG9yOiNmZjk4MDB9Lm1hdC1jaGVja2JveC1pbmRldGVybWluYXRlLm1hdC13YXJuW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtY2hlY2tib3gtYmFja2dyb3VuZFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtY2hlY2tib3gtY2hlY2tlZC5tYXQtd2Fybltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWNoZWNrYm94LWJhY2tncm91bmRbX25nY29udGVudC0lQ09NUCVde2JhY2tncm91bmQtY29sb3I6I2Y0NDMzNn0ubWF0LWNoZWNrYm94LWRpc2FibGVkLm1hdC1jaGVja2JveC1jaGVja2VkW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtY2hlY2tib3gtYmFja2dyb3VuZFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtY2hlY2tib3gtZGlzYWJsZWQubWF0LWNoZWNrYm94LWluZGV0ZXJtaW5hdGVbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1jaGVja2JveC1iYWNrZ3JvdW5kW19uZ2NvbnRlbnQtJUNPTVAlXXtiYWNrZ3JvdW5kLWNvbG9yOiNiMGIwYjB9Lm1hdC1jaGVja2JveC1kaXNhYmxlZFtfbmdjb250ZW50LSVDT01QJV06bm90KC5tYXQtY2hlY2tib3gtY2hlY2tlZCkgICAubWF0LWNoZWNrYm94LWZyYW1lW19uZ2NvbnRlbnQtJUNPTVAlXXtib3JkZXItY29sb3I6I2IwYjBiMH0ubWF0LWNoZWNrYm94LWRpc2FibGVkW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtY2hlY2tib3gtbGFiZWxbX25nY29udGVudC0lQ09NUCVde2NvbG9yOiM2MTYxNjF9Lm1hdC1jaGVja2JveFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXJpcHBsZS1lbGVtZW50W19uZ2NvbnRlbnQtJUNPTVAlXXtiYWNrZ3JvdW5kLWNvbG9yOiMwMDB9Lm1hdC1jaGVja2JveC1jaGVja2VkW19uZ2NvbnRlbnQtJUNPTVAlXTpub3QoLm1hdC1jaGVja2JveC1kaXNhYmxlZCkubWF0LXByaW1hcnkgICAubWF0LXJpcHBsZS1lbGVtZW50W19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1jaGVja2JveFtfbmdjb250ZW50LSVDT01QJV06YWN0aXZlOm5vdCgubWF0LWNoZWNrYm94LWRpc2FibGVkKS5tYXQtcHJpbWFyeSAgIC5tYXQtcmlwcGxlLWVsZW1lbnRbX25nY29udGVudC0lQ09NUCVde2JhY2tncm91bmQ6I2Y1N2MwMH0ubWF0LWNoZWNrYm94LWNoZWNrZWRbX25nY29udGVudC0lQ09NUCVdOm5vdCgubWF0LWNoZWNrYm94LWRpc2FibGVkKS5tYXQtYWNjZW50ICAgLm1hdC1yaXBwbGUtZWxlbWVudFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtY2hlY2tib3hbX25nY29udGVudC0lQ09NUCVdOmFjdGl2ZTpub3QoLm1hdC1jaGVja2JveC1kaXNhYmxlZCkubWF0LWFjY2VudCAgIC5tYXQtcmlwcGxlLWVsZW1lbnRbX25nY29udGVudC0lQ09NUCVde2JhY2tncm91bmQ6I2ZmOTgwMH0ubWF0LWNoZWNrYm94LWNoZWNrZWRbX25nY29udGVudC0lQ09NUCVdOm5vdCgubWF0LWNoZWNrYm94LWRpc2FibGVkKS5tYXQtd2FybiAgIC5tYXQtcmlwcGxlLWVsZW1lbnRbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWNoZWNrYm94W19uZ2NvbnRlbnQtJUNPTVAlXTphY3RpdmU6bm90KC5tYXQtY2hlY2tib3gtZGlzYWJsZWQpLm1hdC13YXJuICAgLm1hdC1yaXBwbGUtZWxlbWVudFtfbmdjb250ZW50LSVDT01QJV17YmFja2dyb3VuZDojZjQ0MzM2fS5tYXQtY2hpcC5tYXQtc3RhbmRhcmQtY2hpcFtfbmdjb250ZW50LSVDT01QJV17YmFja2dyb3VuZC1jb2xvcjojZTBlMGUwO2NvbG9yOiMyMTIxMjF9Lm1hdC1jaGlwLm1hdC1zdGFuZGFyZC1jaGlwW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtY2hpcC1yZW1vdmVbX25nY29udGVudC0lQ09NUCVde2NvbG9yOiMyMTIxMjE7b3BhY2l0eTouNH0ubWF0LWNoaXAubWF0LXN0YW5kYXJkLWNoaXBbX25nY29udGVudC0lQ09NUCVdOm5vdCgubWF0LWNoaXAtZGlzYWJsZWQpOmFjdGl2ZXtib3gtc2hhZG93OjBweCAzcHggM3B4IC0ycHggcmdiYSgwLCAwLCAwLCAwLjIpLDBweCAzcHggNHB4IDBweCByZ2JhKDAsIDAsIDAsIDAuMTQpLDBweCAxcHggOHB4IDBweCByZ2JhKDAsIDAsIDAsIDAuMTIpfS5tYXQtY2hpcC5tYXQtc3RhbmRhcmQtY2hpcFtfbmdjb250ZW50LSVDT01QJV06bm90KC5tYXQtY2hpcC1kaXNhYmxlZCkgICAubWF0LWNoaXAtcmVtb3ZlW19uZ2NvbnRlbnQtJUNPTVAlXTpob3ZlcntvcGFjaXR5Oi41NH0ubWF0LWNoaXAubWF0LXN0YW5kYXJkLWNoaXAubWF0LWNoaXAtZGlzYWJsZWRbX25nY29udGVudC0lQ09NUCVde29wYWNpdHk6LjR9Lm1hdC1jaGlwLm1hdC1zdGFuZGFyZC1jaGlwW19uZ2NvbnRlbnQtJUNPTVAlXTo6YWZ0ZXJ7YmFja2dyb3VuZDojMDAwfS5tYXQtY2hpcC5tYXQtc3RhbmRhcmQtY2hpcC5tYXQtY2hpcC1zZWxlY3RlZC5tYXQtcHJpbWFyeVtfbmdjb250ZW50LSVDT01QJV17YmFja2dyb3VuZC1jb2xvcjojZjU3YzAwO2NvbG9yOiNmZmZ9Lm1hdC1jaGlwLm1hdC1zdGFuZGFyZC1jaGlwLm1hdC1jaGlwLXNlbGVjdGVkLm1hdC1wcmltYXJ5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtY2hpcC1yZW1vdmVbX25nY29udGVudC0lQ09NUCVde2NvbG9yOiNmZmY7b3BhY2l0eTouNH0ubWF0LWNoaXAubWF0LXN0YW5kYXJkLWNoaXAubWF0LWNoaXAtc2VsZWN0ZWQubWF0LXByaW1hcnlbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1yaXBwbGUtZWxlbWVudFtfbmdjb250ZW50LSVDT01QJV17YmFja2dyb3VuZC1jb2xvcjpyZ2JhKDI1NSwyNTUsMjU1LC4xKX0ubWF0LWNoaXAubWF0LXN0YW5kYXJkLWNoaXAubWF0LWNoaXAtc2VsZWN0ZWQubWF0LXdhcm5bX25nY29udGVudC0lQ09NUCVde2JhY2tncm91bmQtY29sb3I6I2Y0NDMzNjtjb2xvcjojZmZmfS5tYXQtY2hpcC5tYXQtc3RhbmRhcmQtY2hpcC5tYXQtY2hpcC1zZWxlY3RlZC5tYXQtd2Fybltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWNoaXAtcmVtb3ZlW19uZ2NvbnRlbnQtJUNPTVAlXXtjb2xvcjojZmZmO29wYWNpdHk6LjR9Lm1hdC1jaGlwLm1hdC1zdGFuZGFyZC1jaGlwLm1hdC1jaGlwLXNlbGVjdGVkLm1hdC13YXJuW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtcmlwcGxlLWVsZW1lbnRbX25nY29udGVudC0lQ09NUCVde2JhY2tncm91bmQtY29sb3I6cmdiYSgyNTUsMjU1LDI1NSwuMSl9Lm1hdC1jaGlwLm1hdC1zdGFuZGFyZC1jaGlwLm1hdC1jaGlwLXNlbGVjdGVkLm1hdC1hY2NlbnRbX25nY29udGVudC0lQ09NUCVde2JhY2tncm91bmQtY29sb3I6I2ZmOTgwMDtjb2xvcjojZmZmfS5tYXQtY2hpcC5tYXQtc3RhbmRhcmQtY2hpcC5tYXQtY2hpcC1zZWxlY3RlZC5tYXQtYWNjZW50W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtY2hpcC1yZW1vdmVbX25nY29udGVudC0lQ09NUCVde2NvbG9yOiNmZmY7b3BhY2l0eTouNH0ubWF0LWNoaXAubWF0LXN0YW5kYXJkLWNoaXAubWF0LWNoaXAtc2VsZWN0ZWQubWF0LWFjY2VudFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXJpcHBsZS1lbGVtZW50W19uZ2NvbnRlbnQtJUNPTVAlXXtiYWNrZ3JvdW5kLWNvbG9yOnJnYmEoMjU1LDI1NSwyNTUsLjEpfS5tYXQtdGFibGVbX25nY29udGVudC0lQ09NUCVde2JhY2tncm91bmQ6I2ZmZn0ubWF0LXRhYmxlW19uZ2NvbnRlbnQtJUNPTVAlXSAgIHRoZWFkW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10YWJsZVtfbmdjb250ZW50LSVDT01QJV0gICB0Ym9keVtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdGFibGVbX25nY29udGVudC0lQ09NUCVdICAgdGZvb3RbX25nY29udGVudC0lQ09NUCVdLCBtYXQtaGVhZGVyLXJvd1tfbmdjb250ZW50LSVDT01QJV0sIG1hdC1yb3dbX25nY29udGVudC0lQ09NUCVdLCBtYXQtZm9vdGVyLXJvd1tfbmdjb250ZW50LSVDT01QJV0sIFttYXQtaGVhZGVyLXJvd11bX25nY29udGVudC0lQ09NUCVdLCBbbWF0LXJvd11bX25nY29udGVudC0lQ09NUCVdLCBbbWF0LWZvb3Rlci1yb3ddW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10YWJsZS1zdGlja3lbX25nY29udGVudC0lQ09NUCVde2JhY2tncm91bmQ6aW5oZXJpdH1tYXQtcm93W19uZ2NvbnRlbnQtJUNPTVAlXSwgbWF0LWhlYWRlci1yb3dbX25nY29udGVudC0lQ09NUCVdLCBtYXQtZm9vdGVyLXJvd1tfbmdjb250ZW50LSVDT01QJV0sIHRoLm1hdC1oZWFkZXItY2VsbFtfbmdjb250ZW50LSVDT01QJV0sIHRkLm1hdC1jZWxsW19uZ2NvbnRlbnQtJUNPTVAlXSwgdGQubWF0LWZvb3Rlci1jZWxsW19uZ2NvbnRlbnQtJUNPTVAlXXtib3JkZXItYm90dG9tLWNvbG9yOnJnYmEoMCwwLDAsLjEyKX0ubWF0LWhlYWRlci1jZWxsW19uZ2NvbnRlbnQtJUNPTVAlXXtjb2xvcjojNjE2MTYxfS5tYXQtY2VsbFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtZm9vdGVyLWNlbGxbX25nY29udGVudC0lQ09NUCVde2NvbG9yOiMyMTIxMjF9Lm1hdC1jYWxlbmRhci1hcnJvd1tfbmdjb250ZW50LSVDT01QJV17Ym9yZGVyLXRvcC1jb2xvcjpyZ2JhKDAsMCwwLC41NCl9Lm1hdC1kYXRlcGlja2VyLXRvZ2dsZVtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtZGF0ZXBpY2tlci1jb250ZW50W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtY2FsZW5kYXItbmV4dC1idXR0b25bX25nY29udGVudC0lQ09NUCVdLCAubWF0LWRhdGVwaWNrZXItY29udGVudFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWNhbGVuZGFyLXByZXZpb3VzLWJ1dHRvbltfbmdjb250ZW50LSVDT01QJV17Y29sb3I6cmdiYSgwLDAsMCwuNTQpfS5tYXQtY2FsZW5kYXItdGFibGUtaGVhZGVyW19uZ2NvbnRlbnQtJUNPTVAlXXtjb2xvcjpyZ2JhKDAsMCwwLC4zOCl9Lm1hdC1jYWxlbmRhci10YWJsZS1oZWFkZXItZGl2aWRlcltfbmdjb250ZW50LSVDT01QJV06OmFmdGVye2JhY2tncm91bmQ6cmdiYSgwLDAsMCwuMTIpfS5tYXQtY2FsZW5kYXItYm9keS1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17Y29sb3I6IzYxNjE2MX0ubWF0LWNhbGVuZGFyLWJvZHktY2VsbC1jb250ZW50W19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1kYXRlLXJhbmdlLWlucHV0LXNlcGFyYXRvcltfbmdjb250ZW50LSVDT01QJV17Y29sb3I6IzIxMjEyMTtib3JkZXItY29sb3I6dHJhbnNwYXJlbnR9Lm1hdC1jYWxlbmRhci1ib2R5LWRpc2FibGVkW19uZ2NvbnRlbnQtJUNPTVAlXSA+IC5tYXQtY2FsZW5kYXItYm9keS1jZWxsLWNvbnRlbnRbX25nY29udGVudC0lQ09NUCVdOm5vdCgubWF0LWNhbGVuZGFyLWJvZHktc2VsZWN0ZWQpOm5vdCgubWF0LWNhbGVuZGFyLWJvZHktY29tcGFyaXNvbi1pZGVudGljYWwpe2NvbG9yOiM3NTc1NzV9Lm1hdC1mb3JtLWZpZWxkLWRpc2FibGVkW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZGF0ZS1yYW5nZS1pbnB1dC1zZXBhcmF0b3JbX25nY29udGVudC0lQ09NUCVde2NvbG9yOiM3NTc1NzV9Lm1hdC1jYWxlbmRhci1ib2R5LWNlbGxbX25nY29udGVudC0lQ09NUCVdOm5vdCgubWF0LWNhbGVuZGFyLWJvZHktZGlzYWJsZWQpOmhvdmVyID4gLm1hdC1jYWxlbmRhci1ib2R5LWNlbGwtY29udGVudFtfbmdjb250ZW50LSVDT01QJV06bm90KC5tYXQtY2FsZW5kYXItYm9keS1zZWxlY3RlZCk6bm90KC5tYXQtY2FsZW5kYXItYm9keS1jb21wYXJpc29uLWlkZW50aWNhbCksIC5jZGsta2V5Ym9hcmQtZm9jdXNlZFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWNhbGVuZGFyLWJvZHktYWN0aXZlW19uZ2NvbnRlbnQtJUNPTVAlXSA+IC5tYXQtY2FsZW5kYXItYm9keS1jZWxsLWNvbnRlbnRbX25nY29udGVudC0lQ09NUCVdOm5vdCgubWF0LWNhbGVuZGFyLWJvZHktc2VsZWN0ZWQpOm5vdCgubWF0LWNhbGVuZGFyLWJvZHktY29tcGFyaXNvbi1pZGVudGljYWwpLCAuY2RrLXByb2dyYW0tZm9jdXNlZFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWNhbGVuZGFyLWJvZHktYWN0aXZlW19uZ2NvbnRlbnQtJUNPTVAlXSA+IC5tYXQtY2FsZW5kYXItYm9keS1jZWxsLWNvbnRlbnRbX25nY29udGVudC0lQ09NUCVdOm5vdCgubWF0LWNhbGVuZGFyLWJvZHktc2VsZWN0ZWQpOm5vdCgubWF0LWNhbGVuZGFyLWJvZHktY29tcGFyaXNvbi1pZGVudGljYWwpe2JhY2tncm91bmQtY29sb3I6cmdiYSgwLDAsMCwuMDQpfS5tYXQtY2FsZW5kYXItYm9keS1pbi1wcmV2aWV3W19uZ2NvbnRlbnQtJUNPTVAlXXtjb2xvcjpyZ2JhKDAsMCwwLC4yNCl9Lm1hdC1jYWxlbmRhci1ib2R5LXRvZGF5W19uZ2NvbnRlbnQtJUNPTVAlXTpub3QoLm1hdC1jYWxlbmRhci1ib2R5LXNlbGVjdGVkKTpub3QoLm1hdC1jYWxlbmRhci1ib2R5LWNvbXBhcmlzb24taWRlbnRpY2FsKXtib3JkZXItY29sb3I6cmdiYSgwLDAsMCwuMzgpfS5tYXQtY2FsZW5kYXItYm9keS1kaXNhYmxlZFtfbmdjb250ZW50LSVDT01QJV0gPiAubWF0LWNhbGVuZGFyLWJvZHktdG9kYXlbX25nY29udGVudC0lQ09NUCVdOm5vdCgubWF0LWNhbGVuZGFyLWJvZHktc2VsZWN0ZWQpOm5vdCgubWF0LWNhbGVuZGFyLWJvZHktY29tcGFyaXNvbi1pZGVudGljYWwpe2JvcmRlci1jb2xvcjpyZ2JhKDAsMCwwLC4xOCl9Lm1hdC1jYWxlbmRhci1ib2R5LWluLXJhbmdlW19uZ2NvbnRlbnQtJUNPTVAlXTo6YmVmb3Jle2JhY2tncm91bmQ6cmdiYSgyNDUsMTI0LDAsLjIpfS5tYXQtY2FsZW5kYXItYm9keS1jb21wYXJpc29uLWlkZW50aWNhbFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtY2FsZW5kYXItYm9keS1pbi1jb21wYXJpc29uLXJhbmdlW19uZ2NvbnRlbnQtJUNPTVAlXTo6YmVmb3Jle2JhY2tncm91bmQ6cmdiYSgyNDksMTcxLDAsLjIpfS5tYXQtY2FsZW5kYXItYm9keS1jb21wYXJpc29uLWJyaWRnZS1zdGFydFtfbmdjb250ZW50LSVDT01QJV06OmJlZm9yZSwgW2Rpcj1ydGxdW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtY2FsZW5kYXItYm9keS1jb21wYXJpc29uLWJyaWRnZS1lbmRbX25nY29udGVudC0lQ09NUCVdOjpiZWZvcmV7YmFja2dyb3VuZDpsaW5lYXItZ3JhZGllbnQodG8gcmlnaHQsIHJnYmEoMjQ1LCAxMjQsIDAsIDAuMikgNTAlLCByZ2JhKDI0OSwgMTcxLCAwLCAwLjIpIDUwJSl9Lm1hdC1jYWxlbmRhci1ib2R5LWNvbXBhcmlzb24tYnJpZGdlLWVuZFtfbmdjb250ZW50LSVDT01QJV06OmJlZm9yZSwgW2Rpcj1ydGxdW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtY2FsZW5kYXItYm9keS1jb21wYXJpc29uLWJyaWRnZS1zdGFydFtfbmdjb250ZW50LSVDT01QJV06OmJlZm9yZXtiYWNrZ3JvdW5kOmxpbmVhci1ncmFkaWVudCh0byBsZWZ0LCByZ2JhKDI0NSwgMTI0LCAwLCAwLjIpIDUwJSwgcmdiYSgyNDksIDE3MSwgMCwgMC4yKSA1MCUpfS5tYXQtY2FsZW5kYXItYm9keS1pbi1yYW5nZVtfbmdjb250ZW50LSVDT01QJV0gPiAubWF0LWNhbGVuZGFyLWJvZHktY29tcGFyaXNvbi1pZGVudGljYWxbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWNhbGVuZGFyLWJvZHktaW4tY29tcGFyaXNvbi1yYW5nZS5tYXQtY2FsZW5kYXItYm9keS1pbi1yYW5nZVtfbmdjb250ZW50LSVDT01QJV06OmFmdGVye2JhY2tncm91bmQ6I2E4ZGFiNX0ubWF0LWNhbGVuZGFyLWJvZHktY29tcGFyaXNvbi1pZGVudGljYWwubWF0LWNhbGVuZGFyLWJvZHktc2VsZWN0ZWRbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWNhbGVuZGFyLWJvZHktaW4tY29tcGFyaXNvbi1yYW5nZVtfbmdjb250ZW50LSVDT01QJV0gPiAubWF0LWNhbGVuZGFyLWJvZHktc2VsZWN0ZWRbX25nY29udGVudC0lQ09NUCVde2JhY2tncm91bmQ6IzQ2YTM1ZX0ubWF0LWNhbGVuZGFyLWJvZHktc2VsZWN0ZWRbX25nY29udGVudC0lQ09NUCVde2JhY2tncm91bmQtY29sb3I6I2Y1N2MwMDtjb2xvcjojZmZmfS5tYXQtY2FsZW5kYXItYm9keS1kaXNhYmxlZFtfbmdjb250ZW50LSVDT01QJV0gPiAubWF0LWNhbGVuZGFyLWJvZHktc2VsZWN0ZWRbX25nY29udGVudC0lQ09NUCVde2JhY2tncm91bmQtY29sb3I6cmdiYSgyNDUsMTI0LDAsLjQpfS5tYXQtY2FsZW5kYXItYm9keS10b2RheS5tYXQtY2FsZW5kYXItYm9keS1zZWxlY3RlZFtfbmdjb250ZW50LSVDT01QJV17Ym94LXNoYWRvdzppbnNldCAwIDAgMCAxcHggI2ZmZn0ubWF0LWRhdGVwaWNrZXItY29udGVudFtfbmdjb250ZW50LSVDT01QJV17Ym94LXNoYWRvdzowcHggMnB4IDRweCAtMXB4IHJnYmEoMCwgMCwgMCwgMC4yKSwwcHggNHB4IDVweCAwcHggcmdiYSgwLCAwLCAwLCAwLjE0KSwwcHggMXB4IDEwcHggMHB4IHJnYmEoMCwgMCwgMCwgMC4xMik7YmFja2dyb3VuZC1jb2xvcjojZmZmO2NvbG9yOiMyMTIxMjF9Lm1hdC1kYXRlcGlja2VyLWNvbnRlbnQubWF0LWFjY2VudFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWNhbGVuZGFyLWJvZHktaW4tcmFuZ2VbX25nY29udGVudC0lQ09NUCVdOjpiZWZvcmV7YmFja2dyb3VuZDpyZ2JhKDI1NSwxNTIsMCwuMil9Lm1hdC1kYXRlcGlja2VyLWNvbnRlbnQubWF0LWFjY2VudFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWNhbGVuZGFyLWJvZHktY29tcGFyaXNvbi1pZGVudGljYWxbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWRhdGVwaWNrZXItY29udGVudC5tYXQtYWNjZW50W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtY2FsZW5kYXItYm9keS1pbi1jb21wYXJpc29uLXJhbmdlW19uZ2NvbnRlbnQtJUNPTVAlXTo6YmVmb3Jle2JhY2tncm91bmQ6cmdiYSgyNDksMTcxLDAsLjIpfS5tYXQtZGF0ZXBpY2tlci1jb250ZW50Lm1hdC1hY2NlbnRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1jYWxlbmRhci1ib2R5LWNvbXBhcmlzb24tYnJpZGdlLXN0YXJ0W19uZ2NvbnRlbnQtJUNPTVAlXTo6YmVmb3JlLCAubWF0LWRhdGVwaWNrZXItY29udGVudC5tYXQtYWNjZW50W19uZ2NvbnRlbnQtJUNPTVAlXSAgIFtkaXI9cnRsXVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWNhbGVuZGFyLWJvZHktY29tcGFyaXNvbi1icmlkZ2UtZW5kW19uZ2NvbnRlbnQtJUNPTVAlXTo6YmVmb3Jle2JhY2tncm91bmQ6bGluZWFyLWdyYWRpZW50KHRvIHJpZ2h0LCByZ2JhKDI1NSwgMTUyLCAwLCAwLjIpIDUwJSwgcmdiYSgyNDksIDE3MSwgMCwgMC4yKSA1MCUpfS5tYXQtZGF0ZXBpY2tlci1jb250ZW50Lm1hdC1hY2NlbnRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1jYWxlbmRhci1ib2R5LWNvbXBhcmlzb24tYnJpZGdlLWVuZFtfbmdjb250ZW50LSVDT01QJV06OmJlZm9yZSwgLm1hdC1kYXRlcGlja2VyLWNvbnRlbnQubWF0LWFjY2VudFtfbmdjb250ZW50LSVDT01QJV0gICBbZGlyPXJ0bF1bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1jYWxlbmRhci1ib2R5LWNvbXBhcmlzb24tYnJpZGdlLXN0YXJ0W19uZ2NvbnRlbnQtJUNPTVAlXTo6YmVmb3Jle2JhY2tncm91bmQ6bGluZWFyLWdyYWRpZW50KHRvIGxlZnQsIHJnYmEoMjU1LCAxNTIsIDAsIDAuMikgNTAlLCByZ2JhKDI0OSwgMTcxLCAwLCAwLjIpIDUwJSl9Lm1hdC1kYXRlcGlja2VyLWNvbnRlbnQubWF0LWFjY2VudFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWNhbGVuZGFyLWJvZHktaW4tcmFuZ2VbX25nY29udGVudC0lQ09NUCVdID4gLm1hdC1jYWxlbmRhci1ib2R5LWNvbXBhcmlzb24taWRlbnRpY2FsW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1kYXRlcGlja2VyLWNvbnRlbnQubWF0LWFjY2VudFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWNhbGVuZGFyLWJvZHktaW4tY29tcGFyaXNvbi1yYW5nZS5tYXQtY2FsZW5kYXItYm9keS1pbi1yYW5nZVtfbmdjb250ZW50LSVDT01QJV06OmFmdGVye2JhY2tncm91bmQ6I2E4ZGFiNX0ubWF0LWRhdGVwaWNrZXItY29udGVudC5tYXQtYWNjZW50W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtY2FsZW5kYXItYm9keS1jb21wYXJpc29uLWlkZW50aWNhbC5tYXQtY2FsZW5kYXItYm9keS1zZWxlY3RlZFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtZGF0ZXBpY2tlci1jb250ZW50Lm1hdC1hY2NlbnRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1jYWxlbmRhci1ib2R5LWluLWNvbXBhcmlzb24tcmFuZ2VbX25nY29udGVudC0lQ09NUCVdID4gLm1hdC1jYWxlbmRhci1ib2R5LXNlbGVjdGVkW19uZ2NvbnRlbnQtJUNPTVAlXXtiYWNrZ3JvdW5kOiM0NmEzNWV9Lm1hdC1kYXRlcGlja2VyLWNvbnRlbnQubWF0LWFjY2VudFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWNhbGVuZGFyLWJvZHktc2VsZWN0ZWRbX25nY29udGVudC0lQ09NUCVde2JhY2tncm91bmQtY29sb3I6I2ZmOTgwMDtjb2xvcjojZmZmfS5tYXQtZGF0ZXBpY2tlci1jb250ZW50Lm1hdC1hY2NlbnRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1jYWxlbmRhci1ib2R5LWRpc2FibGVkW19uZ2NvbnRlbnQtJUNPTVAlXSA+IC5tYXQtY2FsZW5kYXItYm9keS1zZWxlY3RlZFtfbmdjb250ZW50LSVDT01QJV17YmFja2dyb3VuZC1jb2xvcjpyZ2JhKDI1NSwxNTIsMCwuNCl9Lm1hdC1kYXRlcGlja2VyLWNvbnRlbnQubWF0LWFjY2VudFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWNhbGVuZGFyLWJvZHktdG9kYXkubWF0LWNhbGVuZGFyLWJvZHktc2VsZWN0ZWRbX25nY29udGVudC0lQ09NUCVde2JveC1zaGFkb3c6aW5zZXQgMCAwIDAgMXB4ICNmZmZ9Lm1hdC1kYXRlcGlja2VyLWNvbnRlbnQubWF0LXdhcm5bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1jYWxlbmRhci1ib2R5LWluLXJhbmdlW19uZ2NvbnRlbnQtJUNPTVAlXTo6YmVmb3Jle2JhY2tncm91bmQ6cmdiYSgyNDQsNjcsNTQsLjIpfS5tYXQtZGF0ZXBpY2tlci1jb250ZW50Lm1hdC13YXJuW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtY2FsZW5kYXItYm9keS1jb21wYXJpc29uLWlkZW50aWNhbFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtZGF0ZXBpY2tlci1jb250ZW50Lm1hdC13YXJuW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtY2FsZW5kYXItYm9keS1pbi1jb21wYXJpc29uLXJhbmdlW19uZ2NvbnRlbnQtJUNPTVAlXTo6YmVmb3Jle2JhY2tncm91bmQ6cmdiYSgyNDksMTcxLDAsLjIpfS5tYXQtZGF0ZXBpY2tlci1jb250ZW50Lm1hdC13YXJuW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtY2FsZW5kYXItYm9keS1jb21wYXJpc29uLWJyaWRnZS1zdGFydFtfbmdjb250ZW50LSVDT01QJV06OmJlZm9yZSwgLm1hdC1kYXRlcGlja2VyLWNvbnRlbnQubWF0LXdhcm5bX25nY29udGVudC0lQ09NUCVdICAgW2Rpcj1ydGxdW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtY2FsZW5kYXItYm9keS1jb21wYXJpc29uLWJyaWRnZS1lbmRbX25nY29udGVudC0lQ09NUCVdOjpiZWZvcmV7YmFja2dyb3VuZDpsaW5lYXItZ3JhZGllbnQodG8gcmlnaHQsIHJnYmEoMjQ0LCA2NywgNTQsIDAuMikgNTAlLCByZ2JhKDI0OSwgMTcxLCAwLCAwLjIpIDUwJSl9Lm1hdC1kYXRlcGlja2VyLWNvbnRlbnQubWF0LXdhcm5bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1jYWxlbmRhci1ib2R5LWNvbXBhcmlzb24tYnJpZGdlLWVuZFtfbmdjb250ZW50LSVDT01QJV06OmJlZm9yZSwgLm1hdC1kYXRlcGlja2VyLWNvbnRlbnQubWF0LXdhcm5bX25nY29udGVudC0lQ09NUCVdICAgW2Rpcj1ydGxdW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtY2FsZW5kYXItYm9keS1jb21wYXJpc29uLWJyaWRnZS1zdGFydFtfbmdjb250ZW50LSVDT01QJV06OmJlZm9yZXtiYWNrZ3JvdW5kOmxpbmVhci1ncmFkaWVudCh0byBsZWZ0LCByZ2JhKDI0NCwgNjcsIDU0LCAwLjIpIDUwJSwgcmdiYSgyNDksIDE3MSwgMCwgMC4yKSA1MCUpfS5tYXQtZGF0ZXBpY2tlci1jb250ZW50Lm1hdC13YXJuW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtY2FsZW5kYXItYm9keS1pbi1yYW5nZVtfbmdjb250ZW50LSVDT01QJV0gPiAubWF0LWNhbGVuZGFyLWJvZHktY29tcGFyaXNvbi1pZGVudGljYWxbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWRhdGVwaWNrZXItY29udGVudC5tYXQtd2Fybltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWNhbGVuZGFyLWJvZHktaW4tY29tcGFyaXNvbi1yYW5nZS5tYXQtY2FsZW5kYXItYm9keS1pbi1yYW5nZVtfbmdjb250ZW50LSVDT01QJV06OmFmdGVye2JhY2tncm91bmQ6I2E4ZGFiNX0ubWF0LWRhdGVwaWNrZXItY29udGVudC5tYXQtd2Fybltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWNhbGVuZGFyLWJvZHktY29tcGFyaXNvbi1pZGVudGljYWwubWF0LWNhbGVuZGFyLWJvZHktc2VsZWN0ZWRbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWRhdGVwaWNrZXItY29udGVudC5tYXQtd2Fybltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWNhbGVuZGFyLWJvZHktaW4tY29tcGFyaXNvbi1yYW5nZVtfbmdjb250ZW50LSVDT01QJV0gPiAubWF0LWNhbGVuZGFyLWJvZHktc2VsZWN0ZWRbX25nY29udGVudC0lQ09NUCVde2JhY2tncm91bmQ6IzQ2YTM1ZX0ubWF0LWRhdGVwaWNrZXItY29udGVudC5tYXQtd2Fybltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWNhbGVuZGFyLWJvZHktc2VsZWN0ZWRbX25nY29udGVudC0lQ09NUCVde2JhY2tncm91bmQtY29sb3I6I2Y0NDMzNjtjb2xvcjojZmZmfS5tYXQtZGF0ZXBpY2tlci1jb250ZW50Lm1hdC13YXJuW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtY2FsZW5kYXItYm9keS1kaXNhYmxlZFtfbmdjb250ZW50LSVDT01QJV0gPiAubWF0LWNhbGVuZGFyLWJvZHktc2VsZWN0ZWRbX25nY29udGVudC0lQ09NUCVde2JhY2tncm91bmQtY29sb3I6cmdiYSgyNDQsNjcsNTQsLjQpfS5tYXQtZGF0ZXBpY2tlci1jb250ZW50Lm1hdC13YXJuW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtY2FsZW5kYXItYm9keS10b2RheS5tYXQtY2FsZW5kYXItYm9keS1zZWxlY3RlZFtfbmdjb250ZW50LSVDT01QJV17Ym94LXNoYWRvdzppbnNldCAwIDAgMCAxcHggI2ZmZn0ubWF0LWRhdGVwaWNrZXItY29udGVudC10b3VjaFtfbmdjb250ZW50LSVDT01QJV17Ym94LXNoYWRvdzowcHggMHB4IDBweCAwcHggcmdiYSgwLCAwLCAwLCAwLjIpLDBweCAwcHggMHB4IDBweCByZ2JhKDAsIDAsIDAsIDAuMTQpLDBweCAwcHggMHB4IDBweCByZ2JhKDAsIDAsIDAsIDAuMTIpfS5tYXQtZGF0ZXBpY2tlci10b2dnbGUtYWN0aXZlW19uZ2NvbnRlbnQtJUNPTVAlXXtjb2xvcjojZjU3YzAwfS5tYXQtZGF0ZXBpY2tlci10b2dnbGUtYWN0aXZlLm1hdC1hY2NlbnRbX25nY29udGVudC0lQ09NUCVde2NvbG9yOiNmZjk4MDB9Lm1hdC1kYXRlcGlja2VyLXRvZ2dsZS1hY3RpdmUubWF0LXdhcm5bX25nY29udGVudC0lQ09NUCVde2NvbG9yOiNmNDQzMzZ9Lm1hdC1kYXRlLXJhbmdlLWlucHV0LWlubmVyW2Rpc2FibGVkXVtfbmdjb250ZW50LSVDT01QJV17Y29sb3I6Izc1NzU3NX0ubWF0LWRpYWxvZy1jb250YWluZXJbX25nY29udGVudC0lQ09NUCVde2JveC1zaGFkb3c6MHB4IDExcHggMTVweCAtN3B4IHJnYmEoMCwgMCwgMCwgMC4yKSwwcHggMjRweCAzOHB4IDNweCByZ2JhKDAsIDAsIDAsIDAuMTQpLDBweCA5cHggNDZweCA4cHggcmdiYSgwLCAwLCAwLCAwLjEyKTtiYWNrZ3JvdW5kOiNmZmY7Y29sb3I6IzIxMjEyMX0ubWF0LWRpdmlkZXJbX25nY29udGVudC0lQ09NUCVde2JvcmRlci10b3AtY29sb3I6cmdiYSgwLDAsMCwuMTIpfS5tYXQtZGl2aWRlci12ZXJ0aWNhbFtfbmdjb250ZW50LSVDT01QJV17Ym9yZGVyLXJpZ2h0LWNvbG9yOnJnYmEoMCwwLDAsLjEyKX0ubWF0LWV4cGFuc2lvbi1wYW5lbFtfbmdjb250ZW50LSVDT01QJV17YmFja2dyb3VuZDojZmZmO2NvbG9yOiMyMTIxMjF9Lm1hdC1leHBhbnNpb24tcGFuZWxbX25nY29udGVudC0lQ09NUCVdOm5vdChbY2xhc3MqPW1hdC1lbGV2YXRpb24tel0pe2JveC1zaGFkb3c6MHB4IDNweCAxcHggLTJweCByZ2JhKDAsIDAsIDAsIDAuMiksMHB4IDJweCAycHggMHB4IHJnYmEoMCwgMCwgMCwgMC4xNCksMHB4IDFweCA1cHggMHB4IHJnYmEoMCwgMCwgMCwgMC4xMil9Lm1hdC1hY3Rpb24tcm93W19uZ2NvbnRlbnQtJUNPTVAlXXtib3JkZXItdG9wLWNvbG9yOnJnYmEoMCwwLDAsLjEyKX0ubWF0LWV4cGFuc2lvbi1wYW5lbFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWV4cGFuc2lvbi1wYW5lbC1oZWFkZXIuY2RrLWtleWJvYXJkLWZvY3VzZWRbX25nY29udGVudC0lQ09NUCVdOm5vdChbYXJpYS1kaXNhYmxlZD10cnVlXSksIC5tYXQtZXhwYW5zaW9uLXBhbmVsW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZXhwYW5zaW9uLXBhbmVsLWhlYWRlci5jZGstcHJvZ3JhbS1mb2N1c2VkW19uZ2NvbnRlbnQtJUNPTVAlXTpub3QoW2FyaWEtZGlzYWJsZWQ9dHJ1ZV0pLCAubWF0LWV4cGFuc2lvbi1wYW5lbFtfbmdjb250ZW50LSVDT01QJV06bm90KC5tYXQtZXhwYW5kZWQpICAgLm1hdC1leHBhbnNpb24tcGFuZWwtaGVhZGVyW19uZ2NvbnRlbnQtJUNPTVAlXTpob3Zlcjpub3QoW2FyaWEtZGlzYWJsZWQ9dHJ1ZV0pe2JhY2tncm91bmQ6cmdiYSgwLDAsMCwuMDQpfUBtZWRpYShob3Zlcjogbm9uZSl7Lm1hdC1leHBhbnNpb24tcGFuZWxbX25nY29udGVudC0lQ09NUCVdOm5vdCgubWF0LWV4cGFuZGVkKTpub3QoW2FyaWEtZGlzYWJsZWQ9dHJ1ZV0pICAgLm1hdC1leHBhbnNpb24tcGFuZWwtaGVhZGVyW19uZ2NvbnRlbnQtJUNPTVAlXTpob3ZlcntiYWNrZ3JvdW5kOiNmZmZ9fS5tYXQtZXhwYW5zaW9uLXBhbmVsLWhlYWRlci10aXRsZVtfbmdjb250ZW50LSVDT01QJV17Y29sb3I6IzIxMjEyMX0ubWF0LWV4cGFuc2lvbi1wYW5lbC1oZWFkZXItZGVzY3JpcHRpb25bX25nY29udGVudC0lQ09NUCVdLCAubWF0LWV4cGFuc2lvbi1pbmRpY2F0b3JbX25nY29udGVudC0lQ09NUCVdOjphZnRlcntjb2xvcjojNjE2MTYxfS5tYXQtZXhwYW5zaW9uLXBhbmVsLWhlYWRlclthcmlhLWRpc2FibGVkPXRydWVdW19uZ2NvbnRlbnQtJUNPTVAlXXtjb2xvcjpyZ2JhKDAsMCwwLC4yNil9Lm1hdC1leHBhbnNpb24tcGFuZWwtaGVhZGVyW2FyaWEtZGlzYWJsZWQ9dHJ1ZV1bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1leHBhbnNpb24tcGFuZWwtaGVhZGVyLXRpdGxlW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1leHBhbnNpb24tcGFuZWwtaGVhZGVyW2FyaWEtZGlzYWJsZWQ9dHJ1ZV1bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1leHBhbnNpb24tcGFuZWwtaGVhZGVyLWRlc2NyaXB0aW9uW19uZ2NvbnRlbnQtJUNPTVAlXXtjb2xvcjppbmhlcml0fS5tYXQtZXhwYW5zaW9uLXBhbmVsLWhlYWRlcltfbmdjb250ZW50LSVDT01QJV17aGVpZ2h0OjQ4cHh9Lm1hdC1leHBhbnNpb24tcGFuZWwtaGVhZGVyLm1hdC1leHBhbmRlZFtfbmdjb250ZW50LSVDT01QJV17aGVpZ2h0OjY0cHh9Lm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXtjb2xvcjpyZ2JhKDk3LDk3LDk3LC42KX0ubWF0LWhpbnRbX25nY29udGVudC0lQ09NUCVde2NvbG9yOnJnYmEoOTcsOTcsOTcsLjYpfS5tYXQtZm9ybS1maWVsZC5tYXQtZm9jdXNlZFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVde2NvbG9yOiNmNTdjMDB9Lm1hdC1mb3JtLWZpZWxkLm1hdC1mb2N1c2VkW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbC5tYXQtYWNjZW50W19uZ2NvbnRlbnQtJUNPTVAlXXtjb2xvcjojZmY5ODAwfS5tYXQtZm9ybS1maWVsZC5tYXQtZm9jdXNlZFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWwubWF0LXdhcm5bX25nY29udGVudC0lQ09NUCVde2NvbG9yOiNmNDQzMzZ9Lm1hdC1mb2N1c2VkW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1yZXF1aXJlZC1tYXJrZXJbX25nY29udGVudC0lQ09NUCVde2NvbG9yOiNmZjk4MDB9Lm1hdC1mb3JtLWZpZWxkLXJpcHBsZVtfbmdjb250ZW50LSVDT01QJV17YmFja2dyb3VuZC1jb2xvcjpyZ2JhKDAsMCwwLC44Nyl9Lm1hdC1mb3JtLWZpZWxkLm1hdC1mb2N1c2VkW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1yaXBwbGVbX25nY29udGVudC0lQ09NUCVde2JhY2tncm91bmQtY29sb3I6I2Y1N2MwMH0ubWF0LWZvcm0tZmllbGQubWF0LWZvY3VzZWRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLXJpcHBsZS5tYXQtYWNjZW50W19uZ2NvbnRlbnQtJUNPTVAlXXtiYWNrZ3JvdW5kLWNvbG9yOiNmZjk4MDB9Lm1hdC1mb3JtLWZpZWxkLm1hdC1mb2N1c2VkW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1yaXBwbGUubWF0LXdhcm5bX25nY29udGVudC0lQ09NUCVde2JhY2tncm91bmQtY29sb3I6I2Y0NDMzNn0ubWF0LWZvcm0tZmllbGQtdHlwZS1tYXQtbmF0aXZlLXNlbGVjdC5tYXQtZm9jdXNlZFtfbmdjb250ZW50LSVDT01QJV06bm90KC5tYXQtZm9ybS1maWVsZC1pbnZhbGlkKSAgIC5tYXQtZm9ybS1maWVsZC1pbmZpeFtfbmdjb250ZW50LSVDT01QJV06OmFmdGVye2NvbG9yOiNmNTdjMDB9Lm1hdC1mb3JtLWZpZWxkLXR5cGUtbWF0LW5hdGl2ZS1zZWxlY3QubWF0LWZvY3VzZWRbX25nY29udGVudC0lQ09NUCVdOm5vdCgubWF0LWZvcm0tZmllbGQtaW52YWxpZCkubWF0LWFjY2VudCAgIC5tYXQtZm9ybS1maWVsZC1pbmZpeFtfbmdjb250ZW50LSVDT01QJV06OmFmdGVye2NvbG9yOiNmZjk4MDB9Lm1hdC1mb3JtLWZpZWxkLXR5cGUtbWF0LW5hdGl2ZS1zZWxlY3QubWF0LWZvY3VzZWRbX25nY29udGVudC0lQ09NUCVdOm5vdCgubWF0LWZvcm0tZmllbGQtaW52YWxpZCkubWF0LXdhcm4gICAubWF0LWZvcm0tZmllbGQtaW5maXhbX25nY29udGVudC0lQ09NUCVdOjphZnRlcntjb2xvcjojZjQ0MzM2fS5tYXQtZm9ybS1maWVsZC5tYXQtZm9ybS1maWVsZC1pbnZhbGlkW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17Y29sb3I6I2Y0NDMzNn0ubWF0LWZvcm0tZmllbGQubWF0LWZvcm0tZmllbGQtaW52YWxpZFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWwubWF0LWFjY2VudFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtZm9ybS1maWVsZC5tYXQtZm9ybS1maWVsZC1pbnZhbGlkW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtcmVxdWlyZWQtbWFya2VyW19uZ2NvbnRlbnQtJUNPTVAlXXtjb2xvcjojZjQ0MzM2fS5tYXQtZm9ybS1maWVsZC5tYXQtZm9ybS1maWVsZC1pbnZhbGlkW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1yaXBwbGVbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWZvcm0tZmllbGQubWF0LWZvcm0tZmllbGQtaW52YWxpZFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtcmlwcGxlLm1hdC1hY2NlbnRbX25nY29udGVudC0lQ09NUCVde2JhY2tncm91bmQtY29sb3I6I2Y0NDMzNn0ubWF0LWVycm9yW19uZ2NvbnRlbnQtJUNPTVAlXXtjb2xvcjojZjQ0MzM2fS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWxlZ2FjeVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVde2NvbG9yOiM2MTYxNjF9Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtbGVnYWN5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaGludFtfbmdjb250ZW50LSVDT01QJV17Y29sb3I6IzYxNjE2MX0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1sZWdhY3lbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLXVuZGVybGluZVtfbmdjb250ZW50LSVDT01QJV17YmFja2dyb3VuZC1jb2xvcjpyZ2JhKDAsMCwwLC40Mil9Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtbGVnYWN5Lm1hdC1mb3JtLWZpZWxkLWRpc2FibGVkW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC11bmRlcmxpbmVbX25nY29udGVudC0lQ09NUCVde2JhY2tncm91bmQtaW1hZ2U6bGluZWFyLWdyYWRpZW50KHRvIHJpZ2h0LCByZ2JhKDAsIDAsIDAsIDAuNDIpIDAlLCByZ2JhKDAsIDAsIDAsIDAuNDIpIDMzJSwgdHJhbnNwYXJlbnQgMCUpO2JhY2tncm91bmQtc2l6ZTo0cHggMTAwJTtiYWNrZ3JvdW5kLXJlcGVhdDpyZXBlYXQteH0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1zdGFuZGFyZFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtdW5kZXJsaW5lW19uZ2NvbnRlbnQtJUNPTVAlXXtiYWNrZ3JvdW5kLWNvbG9yOnJnYmEoMCwwLDAsLjQyKX0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1zdGFuZGFyZC5tYXQtZm9ybS1maWVsZC1kaXNhYmxlZFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtdW5kZXJsaW5lW19uZ2NvbnRlbnQtJUNPTVAlXXtiYWNrZ3JvdW5kLWltYWdlOmxpbmVhci1ncmFkaWVudCh0byByaWdodCwgcmdiYSgwLCAwLCAwLCAwLjQyKSAwJSwgcmdiYSgwLCAwLCAwLCAwLjQyKSAzMyUsIHRyYW5zcGFyZW50IDAlKTtiYWNrZ3JvdW5kLXNpemU6NHB4IDEwMCU7YmFja2dyb3VuZC1yZXBlYXQ6cmVwZWF0LXh9Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtZmlsbFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtZmxleFtfbmdjb250ZW50LSVDT01QJV17YmFja2dyb3VuZC1jb2xvcjpyZ2JhKDAsMCwwLC4wNCl9Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtZmlsbC5tYXQtZm9ybS1maWVsZC1kaXNhYmxlZFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtZmxleFtfbmdjb250ZW50LSVDT01QJV17YmFja2dyb3VuZC1jb2xvcjpyZ2JhKDAsMCwwLC4wMil9Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtZmlsbFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtdW5kZXJsaW5lW19uZ2NvbnRlbnQtJUNPTVAlXTo6YmVmb3Jle2JhY2tncm91bmQtY29sb3I6cmdiYSgwLDAsMCwuNDIpfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWZpbGwubWF0LWZvcm0tZmllbGQtZGlzYWJsZWRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXtjb2xvcjojNzU3NTc1fS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWZpbGwubWF0LWZvcm0tZmllbGQtZGlzYWJsZWRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLXVuZGVybGluZVtfbmdjb250ZW50LSVDT01QJV06OmJlZm9yZXtiYWNrZ3JvdW5kLWNvbG9yOnRyYW5zcGFyZW50fS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLW91dGxpbmVbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLW91dGxpbmVbX25nY29udGVudC0lQ09NUCVde2NvbG9yOnJnYmEoMCwwLDAsLjEyKX0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1vdXRsaW5lW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1vdXRsaW5lLXRoaWNrW19uZ2NvbnRlbnQtJUNPTVAlXXtjb2xvcjpyZ2JhKDAsMCwwLC44Nyl9Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2Utb3V0bGluZS5tYXQtZm9jdXNlZFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtb3V0bGluZS10aGlja1tfbmdjb250ZW50LSVDT01QJV17Y29sb3I6I2Y1N2MwMH0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1vdXRsaW5lLm1hdC1mb2N1c2VkLm1hdC1hY2NlbnRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLW91dGxpbmUtdGhpY2tbX25nY29udGVudC0lQ09NUCVde2NvbG9yOiNmZjk4MDB9Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2Utb3V0bGluZS5tYXQtZm9jdXNlZC5tYXQtd2Fybltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtb3V0bGluZS10aGlja1tfbmdjb250ZW50LSVDT01QJV17Y29sb3I6I2Y0NDMzNn0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1vdXRsaW5lLm1hdC1mb3JtLWZpZWxkLWludmFsaWQubWF0LWZvcm0tZmllbGQtaW52YWxpZFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtb3V0bGluZS10aGlja1tfbmdjb250ZW50LSVDT01QJV17Y29sb3I6I2Y0NDMzNn0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1vdXRsaW5lLm1hdC1mb3JtLWZpZWxkLWRpc2FibGVkW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17Y29sb3I6Izc1NzU3NX0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1vdXRsaW5lLm1hdC1mb3JtLWZpZWxkLWRpc2FibGVkW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1vdXRsaW5lW19uZ2NvbnRlbnQtJUNPTVAlXXtjb2xvcjpyZ2JhKDAsMCwwLC4wNil9Lm1hdC1pY29uLm1hdC1wcmltYXJ5W19uZ2NvbnRlbnQtJUNPTVAlXXtjb2xvcjojZjU3YzAwfS5tYXQtaWNvbi5tYXQtYWNjZW50W19uZ2NvbnRlbnQtJUNPTVAlXXtjb2xvcjojZmY5ODAwfS5tYXQtaWNvbi5tYXQtd2Fybltfbmdjb250ZW50LSVDT01QJV17Y29sb3I6I2Y0NDMzNn0ubWF0LWZvcm0tZmllbGQtdHlwZS1tYXQtbmF0aXZlLXNlbGVjdFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtaW5maXhbX25nY29udGVudC0lQ09NUCVdOjphZnRlcntjb2xvcjojNjE2MTYxfS5tYXQtaW5wdXQtZWxlbWVudFtfbmdjb250ZW50LSVDT01QJV06ZGlzYWJsZWQsIC5tYXQtZm9ybS1maWVsZC10eXBlLW1hdC1uYXRpdmUtc2VsZWN0Lm1hdC1mb3JtLWZpZWxkLWRpc2FibGVkW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1pbmZpeFtfbmdjb250ZW50LSVDT01QJV06OmFmdGVye2NvbG9yOiM3NTc1NzV9Lm1hdC1pbnB1dC1lbGVtZW50W19uZ2NvbnRlbnQtJUNPTVAlXXtjYXJldC1jb2xvcjojZjU3YzAwfS5tYXQtaW5wdXQtZWxlbWVudFtfbmdjb250ZW50LSVDT01QJV06OnBsYWNlaG9sZGVye2NvbG9yOnJnYmEoOTcsOTcsOTcsLjQyKX0ubWF0LWlucHV0LWVsZW1lbnRbX25nY29udGVudC0lQ09NUCVdOjotbW96LXBsYWNlaG9sZGVye2NvbG9yOnJnYmEoOTcsOTcsOTcsLjQyKX0ubWF0LWlucHV0LWVsZW1lbnRbX25nY29udGVudC0lQ09NUCVdOjotd2Via2l0LWlucHV0LXBsYWNlaG9sZGVye2NvbG9yOnJnYmEoOTcsOTcsOTcsLjQyKX0ubWF0LWlucHV0LWVsZW1lbnRbX25nY29udGVudC0lQ09NUCVdOi1tcy1pbnB1dC1wbGFjZWhvbGRlcntjb2xvcjpyZ2JhKDk3LDk3LDk3LC40Mil9Lm1hdC1mb3JtLWZpZWxkLm1hdC1hY2NlbnRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pbnB1dC1lbGVtZW50W19uZ2NvbnRlbnQtJUNPTVAlXXtjYXJldC1jb2xvcjojZmY5ODAwfS5tYXQtZm9ybS1maWVsZC5tYXQtd2Fybltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWlucHV0LWVsZW1lbnRbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWZvcm0tZmllbGQtaW52YWxpZFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWlucHV0LWVsZW1lbnRbX25nY29udGVudC0lQ09NUCVde2NhcmV0LWNvbG9yOiNmNDQzMzZ9Lm1hdC1mb3JtLWZpZWxkLXR5cGUtbWF0LW5hdGl2ZS1zZWxlY3QubWF0LWZvcm0tZmllbGQtaW52YWxpZFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtaW5maXhbX25nY29udGVudC0lQ09NUCVdOjphZnRlcntjb2xvcjojZjQ0MzM2fS5tYXQtbGlzdC1iYXNlW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGlzdC1pdGVtW19uZ2NvbnRlbnQtJUNPTVAlXXtjb2xvcjojMjEyMTIxfS5tYXQtbGlzdC1iYXNlW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGlzdC1vcHRpb25bX25nY29udGVudC0lQ09NUCVde2NvbG9yOiMyMTIxMjF9Lm1hdC1saXN0LWJhc2VbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1zdWJoZWFkZXJbX25nY29udGVudC0lQ09NUCVde2NvbG9yOiM2MTYxNjF9Lm1hdC1saXN0LWl0ZW0tZGlzYWJsZWRbX25nY29udGVudC0lQ09NUCVde2JhY2tncm91bmQtY29sb3I6I2VlZX0ubWF0LWxpc3Qtb3B0aW9uW19uZ2NvbnRlbnQtJUNPTVAlXTpob3ZlciwgLm1hdC1saXN0LW9wdGlvbltfbmdjb250ZW50LSVDT01QJV06Zm9jdXMsIC5tYXQtbmF2LWxpc3RbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saXN0LWl0ZW1bX25nY29udGVudC0lQ09NUCVdOmhvdmVyLCAubWF0LW5hdi1saXN0W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGlzdC1pdGVtW19uZ2NvbnRlbnQtJUNPTVAlXTpmb2N1cywgLm1hdC1hY3Rpb24tbGlzdFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpc3QtaXRlbVtfbmdjb250ZW50LSVDT01QJV06aG92ZXIsIC5tYXQtYWN0aW9uLWxpc3RbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saXN0LWl0ZW1bX25nY29udGVudC0lQ09NUCVdOmZvY3Vze2JhY2tncm91bmQ6cmdiYSgwLDAsMCwuMDQpfS5tYXQtbGlzdC1zaW5nbGUtc2VsZWN0ZWQtb3B0aW9uW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1saXN0LXNpbmdsZS1zZWxlY3RlZC1vcHRpb25bX25nY29udGVudC0lQ09NUCVdOmhvdmVyLCAubWF0LWxpc3Qtc2luZ2xlLXNlbGVjdGVkLW9wdGlvbltfbmdjb250ZW50LSVDT01QJV06Zm9jdXN7YmFja2dyb3VuZDpyZ2JhKDAsMCwwLC4xMil9Lm1hdC1tZW51LXBhbmVsW19uZ2NvbnRlbnQtJUNPTVAlXXtiYWNrZ3JvdW5kOiNmZmZ9Lm1hdC1tZW51LXBhbmVsW19uZ2NvbnRlbnQtJUNPTVAlXTpub3QoW2NsYXNzKj1tYXQtZWxldmF0aW9uLXpdKXtib3gtc2hhZG93OjBweCAycHggNHB4IC0xcHggcmdiYSgwLCAwLCAwLCAwLjIpLDBweCA0cHggNXB4IDBweCByZ2JhKDAsIDAsIDAsIDAuMTQpLDBweCAxcHggMTBweCAwcHggcmdiYSgwLCAwLCAwLCAwLjEyKX0ubWF0LW1lbnUtaXRlbVtfbmdjb250ZW50LSVDT01QJV17YmFja2dyb3VuZDp0cmFuc3BhcmVudDtjb2xvcjojMjEyMTIxfS5tYXQtbWVudS1pdGVtW2Rpc2FibGVkXVtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtbWVudS1pdGVtW2Rpc2FibGVkXVtfbmdjb250ZW50LSVDT01QJV06OmFmdGVye2NvbG9yOnJnYmEoMCwwLDAsLjM4KX0ubWF0LW1lbnUtaXRlbVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWljb24tbm8tY29sb3JbX25nY29udGVudC0lQ09NUCVdLCAubWF0LW1lbnUtaXRlbS1zdWJtZW51LXRyaWdnZXJbX25nY29udGVudC0lQ09NUCVdOjphZnRlcntjb2xvcjpyZ2JhKDAsMCwwLC41NCl9Lm1hdC1tZW51LWl0ZW1bX25nY29udGVudC0lQ09NUCVdOmhvdmVyOm5vdChbZGlzYWJsZWRdKSwgLm1hdC1tZW51LWl0ZW0uY2RrLXByb2dyYW0tZm9jdXNlZFtfbmdjb250ZW50LSVDT01QJV06bm90KFtkaXNhYmxlZF0pLCAubWF0LW1lbnUtaXRlbS5jZGsta2V5Ym9hcmQtZm9jdXNlZFtfbmdjb250ZW50LSVDT01QJV06bm90KFtkaXNhYmxlZF0pLCAubWF0LW1lbnUtaXRlbS1oaWdobGlnaHRlZFtfbmdjb250ZW50LSVDT01QJV06bm90KFtkaXNhYmxlZF0pe2JhY2tncm91bmQ6cmdiYSgwLDAsMCwuMDQpfS5tYXQtcGFnaW5hdG9yW19uZ2NvbnRlbnQtJUNPTVAlXXtiYWNrZ3JvdW5kOiNmZmZ9Lm1hdC1wYWdpbmF0b3JbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXBhZ2luYXRvci1wYWdlLXNpemVbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1zZWxlY3QtdHJpZ2dlcltfbmdjb250ZW50LSVDT01QJV17Y29sb3I6IzYxNjE2MX0ubWF0LXBhZ2luYXRvci1kZWNyZW1lbnRbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXBhZ2luYXRvci1pbmNyZW1lbnRbX25nY29udGVudC0lQ09NUCVde2JvcmRlci10b3A6MnB4IHNvbGlkIHJnYmEoMCwwLDAsLjU0KTtib3JkZXItcmlnaHQ6MnB4IHNvbGlkIHJnYmEoMCwwLDAsLjU0KX0ubWF0LXBhZ2luYXRvci1maXJzdFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtcGFnaW5hdG9yLWxhc3RbX25nY29udGVudC0lQ09NUCVde2JvcmRlci10b3A6MnB4IHNvbGlkIHJnYmEoMCwwLDAsLjU0KX0ubWF0LWljb24tYnV0dG9uW2Rpc2FibGVkXVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXBhZ2luYXRvci1kZWNyZW1lbnRbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWljb24tYnV0dG9uW2Rpc2FibGVkXVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXBhZ2luYXRvci1pbmNyZW1lbnRbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWljb24tYnV0dG9uW2Rpc2FibGVkXVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXBhZ2luYXRvci1maXJzdFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtaWNvbi1idXR0b25bZGlzYWJsZWRdW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtcGFnaW5hdG9yLWxhc3RbX25nY29udGVudC0lQ09NUCVde2JvcmRlci1jb2xvcjpyZ2JhKDAsMCwwLC4zOCl9Lm1hdC1wYWdpbmF0b3ItY29udGFpbmVyW19uZ2NvbnRlbnQtJUNPTVAlXXttaW4taGVpZ2h0OjU2cHh9Lm1hdC1wcm9ncmVzcy1iYXItYmFja2dyb3VuZFtfbmdjb250ZW50LSVDT01QJV17ZmlsbDojZmY5ODAwfS5tYXQtcHJvZ3Jlc3MtYmFyLWJ1ZmZlcltfbmdjb250ZW50LSVDT01QJV17YmFja2dyb3VuZC1jb2xvcjojZmY5ODAwfS5tYXQtcHJvZ3Jlc3MtYmFyLWZpbGxbX25nY29udGVudC0lQ09NUCVdOjphZnRlcntiYWNrZ3JvdW5kLWNvbG9yOiNmNTdjMDB9Lm1hdC1wcm9ncmVzcy1iYXIubWF0LWFjY2VudFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXByb2dyZXNzLWJhci1iYWNrZ3JvdW5kW19uZ2NvbnRlbnQtJUNPTVAlXXtmaWxsOiNmZjk4MDB9Lm1hdC1wcm9ncmVzcy1iYXIubWF0LWFjY2VudFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXByb2dyZXNzLWJhci1idWZmZXJbX25nY29udGVudC0lQ09NUCVde2JhY2tncm91bmQtY29sb3I6I2ZmOTgwMH0ubWF0LXByb2dyZXNzLWJhci5tYXQtYWNjZW50W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtcHJvZ3Jlc3MtYmFyLWZpbGxbX25nY29udGVudC0lQ09NUCVdOjphZnRlcntiYWNrZ3JvdW5kLWNvbG9yOiNmZjk4MDB9Lm1hdC1wcm9ncmVzcy1iYXIubWF0LXdhcm5bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1wcm9ncmVzcy1iYXItYmFja2dyb3VuZFtfbmdjb250ZW50LSVDT01QJV17ZmlsbDojZmZjZGQyfS5tYXQtcHJvZ3Jlc3MtYmFyLm1hdC13YXJuW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtcHJvZ3Jlc3MtYmFyLWJ1ZmZlcltfbmdjb250ZW50LSVDT01QJV17YmFja2dyb3VuZC1jb2xvcjojZmZjZGQyfS5tYXQtcHJvZ3Jlc3MtYmFyLm1hdC13YXJuW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtcHJvZ3Jlc3MtYmFyLWZpbGxbX25nY29udGVudC0lQ09NUCVdOjphZnRlcntiYWNrZ3JvdW5kLWNvbG9yOiNmNDQzMzZ9Lm1hdC1wcm9ncmVzcy1zcGlubmVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIGNpcmNsZVtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtc3Bpbm5lcltfbmdjb250ZW50LSVDT01QJV0gICBjaXJjbGVbX25nY29udGVudC0lQ09NUCVde3N0cm9rZTojZjU3YzAwfS5tYXQtcHJvZ3Jlc3Mtc3Bpbm5lci5tYXQtYWNjZW50W19uZ2NvbnRlbnQtJUNPTVAlXSAgIGNpcmNsZVtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtc3Bpbm5lci5tYXQtYWNjZW50W19uZ2NvbnRlbnQtJUNPTVAlXSAgIGNpcmNsZVtfbmdjb250ZW50LSVDT01QJV17c3Ryb2tlOiNmZjk4MDB9Lm1hdC1wcm9ncmVzcy1zcGlubmVyLm1hdC13YXJuW19uZ2NvbnRlbnQtJUNPTVAlXSAgIGNpcmNsZVtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtc3Bpbm5lci5tYXQtd2Fybltfbmdjb250ZW50LSVDT01QJV0gICBjaXJjbGVbX25nY29udGVudC0lQ09NUCVde3N0cm9rZTojZjQ0MzM2fS5tYXQtcmFkaW8tb3V0ZXItY2lyY2xlW19uZ2NvbnRlbnQtJUNPTVAlXXtib3JkZXItY29sb3I6IzYxNjE2MX0ubWF0LXJhZGlvLWJ1dHRvbi5tYXQtcHJpbWFyeS5tYXQtcmFkaW8tY2hlY2tlZFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXJhZGlvLW91dGVyLWNpcmNsZVtfbmdjb250ZW50LSVDT01QJV17Ym9yZGVyLWNvbG9yOiNmNTdjMDB9Lm1hdC1yYWRpby1idXR0b24ubWF0LXByaW1hcnlbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1yYWRpby1pbm5lci1jaXJjbGVbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXJhZGlvLWJ1dHRvbi5tYXQtcHJpbWFyeVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXJhZGlvLXJpcHBsZVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXJpcHBsZS1lbGVtZW50W19uZ2NvbnRlbnQtJUNPTVAlXTpub3QoLm1hdC1yYWRpby1wZXJzaXN0ZW50LXJpcHBsZSksIC5tYXQtcmFkaW8tYnV0dG9uLm1hdC1wcmltYXJ5Lm1hdC1yYWRpby1jaGVja2VkW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtcmFkaW8tcGVyc2lzdGVudC1yaXBwbGVbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXJhZGlvLWJ1dHRvbi5tYXQtcHJpbWFyeVtfbmdjb250ZW50LSVDT01QJV06YWN0aXZlICAgLm1hdC1yYWRpby1wZXJzaXN0ZW50LXJpcHBsZVtfbmdjb250ZW50LSVDT01QJV17YmFja2dyb3VuZC1jb2xvcjojZjU3YzAwfS5tYXQtcmFkaW8tYnV0dG9uLm1hdC1hY2NlbnQubWF0LXJhZGlvLWNoZWNrZWRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1yYWRpby1vdXRlci1jaXJjbGVbX25nY29udGVudC0lQ09NUCVde2JvcmRlci1jb2xvcjojZmY5ODAwfS5tYXQtcmFkaW8tYnV0dG9uLm1hdC1hY2NlbnRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1yYWRpby1pbm5lci1jaXJjbGVbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXJhZGlvLWJ1dHRvbi5tYXQtYWNjZW50W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtcmFkaW8tcmlwcGxlW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtcmlwcGxlLWVsZW1lbnRbX25nY29udGVudC0lQ09NUCVdOm5vdCgubWF0LXJhZGlvLXBlcnNpc3RlbnQtcmlwcGxlKSwgLm1hdC1yYWRpby1idXR0b24ubWF0LWFjY2VudC5tYXQtcmFkaW8tY2hlY2tlZFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXJhZGlvLXBlcnNpc3RlbnQtcmlwcGxlW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1yYWRpby1idXR0b24ubWF0LWFjY2VudFtfbmdjb250ZW50LSVDT01QJV06YWN0aXZlICAgLm1hdC1yYWRpby1wZXJzaXN0ZW50LXJpcHBsZVtfbmdjb250ZW50LSVDT01QJV17YmFja2dyb3VuZC1jb2xvcjojZmY5ODAwfS5tYXQtcmFkaW8tYnV0dG9uLm1hdC13YXJuLm1hdC1yYWRpby1jaGVja2VkW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtcmFkaW8tb3V0ZXItY2lyY2xlW19uZ2NvbnRlbnQtJUNPTVAlXXtib3JkZXItY29sb3I6I2Y0NDMzNn0ubWF0LXJhZGlvLWJ1dHRvbi5tYXQtd2Fybltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXJhZGlvLWlubmVyLWNpcmNsZVtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtcmFkaW8tYnV0dG9uLm1hdC13YXJuW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtcmFkaW8tcmlwcGxlW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtcmlwcGxlLWVsZW1lbnRbX25nY29udGVudC0lQ09NUCVdOm5vdCgubWF0LXJhZGlvLXBlcnNpc3RlbnQtcmlwcGxlKSwgLm1hdC1yYWRpby1idXR0b24ubWF0LXdhcm4ubWF0LXJhZGlvLWNoZWNrZWRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1yYWRpby1wZXJzaXN0ZW50LXJpcHBsZVtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtcmFkaW8tYnV0dG9uLm1hdC13YXJuW19uZ2NvbnRlbnQtJUNPTVAlXTphY3RpdmUgICAubWF0LXJhZGlvLXBlcnNpc3RlbnQtcmlwcGxlW19uZ2NvbnRlbnQtJUNPTVAlXXtiYWNrZ3JvdW5kLWNvbG9yOiNmNDQzMzZ9Lm1hdC1yYWRpby1idXR0b24ubWF0LXJhZGlvLWRpc2FibGVkLm1hdC1yYWRpby1jaGVja2VkW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtcmFkaW8tb3V0ZXItY2lyY2xlW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1yYWRpby1idXR0b24ubWF0LXJhZGlvLWRpc2FibGVkW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtcmFkaW8tb3V0ZXItY2lyY2xlW19uZ2NvbnRlbnQtJUNPTVAlXXtib3JkZXItY29sb3I6cmdiYSgwLDAsMCwuMzgpfS5tYXQtcmFkaW8tYnV0dG9uLm1hdC1yYWRpby1kaXNhYmxlZFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXJhZGlvLXJpcHBsZVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXJpcHBsZS1lbGVtZW50W19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1yYWRpby1idXR0b24ubWF0LXJhZGlvLWRpc2FibGVkW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtcmFkaW8taW5uZXItY2lyY2xlW19uZ2NvbnRlbnQtJUNPTVAlXXtiYWNrZ3JvdW5kLWNvbG9yOnJnYmEoMCwwLDAsLjM4KX0ubWF0LXJhZGlvLWJ1dHRvbi5tYXQtcmFkaW8tZGlzYWJsZWRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1yYWRpby1sYWJlbC1jb250ZW50W19uZ2NvbnRlbnQtJUNPTVAlXXtjb2xvcjpyZ2JhKDAsMCwwLC4zOCl9Lm1hdC1yYWRpby1idXR0b25bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1yaXBwbGUtZWxlbWVudFtfbmdjb250ZW50LSVDT01QJV17YmFja2dyb3VuZC1jb2xvcjojMDAwfS5tYXQtc2VsZWN0LXZhbHVlW19uZ2NvbnRlbnQtJUNPTVAlXXtjb2xvcjojMjEyMTIxfS5tYXQtc2VsZWN0LXBsYWNlaG9sZGVyW19uZ2NvbnRlbnQtJUNPTVAlXXtjb2xvcjpyZ2JhKDk3LDk3LDk3LC40Mil9Lm1hdC1zZWxlY3QtZGlzYWJsZWRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1zZWxlY3QtdmFsdWVbX25nY29udGVudC0lQ09NUCVde2NvbG9yOiM3NTc1NzV9Lm1hdC1zZWxlY3QtYXJyb3dbX25nY29udGVudC0lQ09NUCVde2NvbG9yOiM2MTYxNjF9Lm1hdC1zZWxlY3QtcGFuZWxbX25nY29udGVudC0lQ09NUCVde2JhY2tncm91bmQ6I2ZmZn0ubWF0LXNlbGVjdC1wYW5lbFtfbmdjb250ZW50LSVDT01QJV06bm90KFtjbGFzcyo9bWF0LWVsZXZhdGlvbi16XSl7Ym94LXNoYWRvdzowcHggMnB4IDRweCAtMXB4IHJnYmEoMCwgMCwgMCwgMC4yKSwwcHggNHB4IDVweCAwcHggcmdiYSgwLCAwLCAwLCAwLjE0KSwwcHggMXB4IDEwcHggMHB4IHJnYmEoMCwgMCwgMCwgMC4xMil9Lm1hdC1zZWxlY3QtcGFuZWxbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1vcHRpb24ubWF0LXNlbGVjdGVkW19uZ2NvbnRlbnQtJUNPTVAlXTpub3QoLm1hdC1vcHRpb24tbXVsdGlwbGUpe2JhY2tncm91bmQ6cmdiYSgwLDAsMCwuMTIpfS5tYXQtZm9ybS1maWVsZC5tYXQtZm9jdXNlZC5tYXQtcHJpbWFyeVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXNlbGVjdC1hcnJvd1tfbmdjb250ZW50LSVDT01QJV17Y29sb3I6I2Y1N2MwMH0ubWF0LWZvcm0tZmllbGQubWF0LWZvY3VzZWQubWF0LWFjY2VudFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXNlbGVjdC1hcnJvd1tfbmdjb250ZW50LSVDT01QJV17Y29sb3I6I2ZmOTgwMH0ubWF0LWZvcm0tZmllbGQubWF0LWZvY3VzZWQubWF0LXdhcm5bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1zZWxlY3QtYXJyb3dbX25nY29udGVudC0lQ09NUCVde2NvbG9yOiNmNDQzMzZ9Lm1hdC1mb3JtLWZpZWxkW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtc2VsZWN0Lm1hdC1zZWxlY3QtaW52YWxpZFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXNlbGVjdC1hcnJvd1tfbmdjb250ZW50LSVDT01QJV17Y29sb3I6I2Y0NDMzNn0ubWF0LWZvcm0tZmllbGRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1zZWxlY3QubWF0LXNlbGVjdC1kaXNhYmxlZFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXNlbGVjdC1hcnJvd1tfbmdjb250ZW50LSVDT01QJV17Y29sb3I6Izc1NzU3NX0ubWF0LWRyYXdlci1jb250YWluZXJbX25nY29udGVudC0lQ09NUCVde2JhY2tncm91bmQtY29sb3I6I2ZhZmFmYTtjb2xvcjojMjEyMTIxfS5tYXQtZHJhd2VyW19uZ2NvbnRlbnQtJUNPTVAlXXtiYWNrZ3JvdW5kLWNvbG9yOiNmZmY7Y29sb3I6IzIxMjEyMX0ubWF0LWRyYXdlci5tYXQtZHJhd2VyLXB1c2hbX25nY29udGVudC0lQ09NUCVde2JhY2tncm91bmQtY29sb3I6I2ZmZn0ubWF0LWRyYXdlcltfbmdjb250ZW50LSVDT01QJV06bm90KC5tYXQtZHJhd2VyLXNpZGUpe2JveC1zaGFkb3c6MHB4IDhweCAxMHB4IC01cHggcmdiYSgwLCAwLCAwLCAwLjIpLDBweCAxNnB4IDI0cHggMnB4IHJnYmEoMCwgMCwgMCwgMC4xNCksMHB4IDZweCAzMHB4IDVweCByZ2JhKDAsIDAsIDAsIDAuMTIpfS5tYXQtZHJhd2VyLXNpZGVbX25nY29udGVudC0lQ09NUCVde2JvcmRlci1yaWdodDpzb2xpZCAxcHggcmdiYSgwLDAsMCwuMTIpfS5tYXQtZHJhd2VyLXNpZGUubWF0LWRyYXdlci1lbmRbX25nY29udGVudC0lQ09NUCVde2JvcmRlci1sZWZ0OnNvbGlkIDFweCByZ2JhKDAsMCwwLC4xMik7Ym9yZGVyLXJpZ2h0Om5vbmV9W2Rpcj1ydGxdW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZHJhd2VyLXNpZGVbX25nY29udGVudC0lQ09NUCVde2JvcmRlci1sZWZ0OnNvbGlkIDFweCByZ2JhKDAsMCwwLC4xMik7Ym9yZGVyLXJpZ2h0Om5vbmV9W2Rpcj1ydGxdW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZHJhd2VyLXNpZGUubWF0LWRyYXdlci1lbmRbX25nY29udGVudC0lQ09NUCVde2JvcmRlci1sZWZ0Om5vbmU7Ym9yZGVyLXJpZ2h0OnNvbGlkIDFweCByZ2JhKDAsMCwwLC4xMil9Lm1hdC1kcmF3ZXItYmFja2Ryb3AubWF0LWRyYXdlci1zaG93bltfbmdjb250ZW50LSVDT01QJV17YmFja2dyb3VuZC1jb2xvcjpyZ2JhKDAsMCwwLC42KX0ubWF0LXNsaWRlLXRvZ2dsZS5tYXQtY2hlY2tlZFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXNsaWRlLXRvZ2dsZS10aHVtYltfbmdjb250ZW50LSVDT01QJV17YmFja2dyb3VuZC1jb2xvcjojZmY5ODAwfS5tYXQtc2xpZGUtdG9nZ2xlLm1hdC1jaGVja2VkW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtc2xpZGUtdG9nZ2xlLWJhcltfbmdjb250ZW50LSVDT01QJV17YmFja2dyb3VuZC1jb2xvcjpyZ2JhKDI1NSwxNTIsMCwuNTQpfS5tYXQtc2xpZGUtdG9nZ2xlLm1hdC1jaGVja2VkW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtcmlwcGxlLWVsZW1lbnRbX25nY29udGVudC0lQ09NUCVde2JhY2tncm91bmQtY29sb3I6I2ZmOTgwMH0ubWF0LXNsaWRlLXRvZ2dsZS5tYXQtcHJpbWFyeS5tYXQtY2hlY2tlZFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXNsaWRlLXRvZ2dsZS10aHVtYltfbmdjb250ZW50LSVDT01QJV17YmFja2dyb3VuZC1jb2xvcjojZjU3YzAwfS5tYXQtc2xpZGUtdG9nZ2xlLm1hdC1wcmltYXJ5Lm1hdC1jaGVja2VkW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtc2xpZGUtdG9nZ2xlLWJhcltfbmdjb250ZW50LSVDT01QJV17YmFja2dyb3VuZC1jb2xvcjpyZ2JhKDI0NSwxMjQsMCwuNTQpfS5tYXQtc2xpZGUtdG9nZ2xlLm1hdC1wcmltYXJ5Lm1hdC1jaGVja2VkW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtcmlwcGxlLWVsZW1lbnRbX25nY29udGVudC0lQ09NUCVde2JhY2tncm91bmQtY29sb3I6I2Y1N2MwMH0ubWF0LXNsaWRlLXRvZ2dsZS5tYXQtd2Fybi5tYXQtY2hlY2tlZFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXNsaWRlLXRvZ2dsZS10aHVtYltfbmdjb250ZW50LSVDT01QJV17YmFja2dyb3VuZC1jb2xvcjojZjQ0MzM2fS5tYXQtc2xpZGUtdG9nZ2xlLm1hdC13YXJuLm1hdC1jaGVja2VkW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtc2xpZGUtdG9nZ2xlLWJhcltfbmdjb250ZW50LSVDT01QJV17YmFja2dyb3VuZC1jb2xvcjpyZ2JhKDI0NCw2Nyw1NCwuNTQpfS5tYXQtc2xpZGUtdG9nZ2xlLm1hdC13YXJuLm1hdC1jaGVja2VkW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtcmlwcGxlLWVsZW1lbnRbX25nY29udGVudC0lQ09NUCVde2JhY2tncm91bmQtY29sb3I6I2Y0NDMzNn0ubWF0LXNsaWRlLXRvZ2dsZVtfbmdjb250ZW50LSVDT01QJV06bm90KC5tYXQtY2hlY2tlZCkgICAubWF0LXJpcHBsZS1lbGVtZW50W19uZ2NvbnRlbnQtJUNPTVAlXXtiYWNrZ3JvdW5kLWNvbG9yOiMwMDB9Lm1hdC1zbGlkZS10b2dnbGUtdGh1bWJbX25nY29udGVudC0lQ09NUCVde2JveC1zaGFkb3c6MHB4IDJweCAxcHggLTFweCByZ2JhKDAsIDAsIDAsIDAuMiksMHB4IDFweCAxcHggMHB4IHJnYmEoMCwgMCwgMCwgMC4xNCksMHB4IDFweCAzcHggMHB4IHJnYmEoMCwgMCwgMCwgMC4xMik7YmFja2dyb3VuZC1jb2xvcjojZmFmYWZhfS5tYXQtc2xpZGUtdG9nZ2xlLWJhcltfbmdjb250ZW50LSVDT01QJV17YmFja2dyb3VuZC1jb2xvcjpyZ2JhKDAsMCwwLC4zOCl9Lm1hdC1zbGlkZXItdHJhY2stYmFja2dyb3VuZFtfbmdjb250ZW50LSVDT01QJV17YmFja2dyb3VuZC1jb2xvcjpyZ2JhKDAsMCwwLC4yNil9Lm1hdC1wcmltYXJ5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtc2xpZGVyLXRyYWNrLWZpbGxbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXByaW1hcnlbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1zbGlkZXItdGh1bWJbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXByaW1hcnlbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1zbGlkZXItdGh1bWItbGFiZWxbX25nY29udGVudC0lQ09NUCVde2JhY2tncm91bmQtY29sb3I6I2Y1N2MwMH0ubWF0LXByaW1hcnlbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1zbGlkZXItdGh1bWItbGFiZWwtdGV4dFtfbmdjb250ZW50LSVDT01QJV17Y29sb3I6I2ZmZn0ubWF0LXByaW1hcnlbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1zbGlkZXItZm9jdXMtcmluZ1tfbmdjb250ZW50LSVDT01QJV17YmFja2dyb3VuZC1jb2xvcjpyZ2JhKDI0NSwxMjQsMCwuMil9Lm1hdC1hY2NlbnRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1zbGlkZXItdHJhY2stZmlsbFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtYWNjZW50W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtc2xpZGVyLXRodW1iW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1hY2NlbnRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1zbGlkZXItdGh1bWItbGFiZWxbX25nY29udGVudC0lQ09NUCVde2JhY2tncm91bmQtY29sb3I6I2ZmOTgwMH0ubWF0LWFjY2VudFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXNsaWRlci10aHVtYi1sYWJlbC10ZXh0W19uZ2NvbnRlbnQtJUNPTVAlXXtjb2xvcjojZmZmfS5tYXQtYWNjZW50W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtc2xpZGVyLWZvY3VzLXJpbmdbX25nY29udGVudC0lQ09NUCVde2JhY2tncm91bmQtY29sb3I6cmdiYSgyNTUsMTUyLDAsLjIpfS5tYXQtd2Fybltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXNsaWRlci10cmFjay1maWxsW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC13YXJuW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtc2xpZGVyLXRodW1iW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC13YXJuW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtc2xpZGVyLXRodW1iLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXtiYWNrZ3JvdW5kLWNvbG9yOiNmNDQzMzZ9Lm1hdC13YXJuW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtc2xpZGVyLXRodW1iLWxhYmVsLXRleHRbX25nY29udGVudC0lQ09NUCVde2NvbG9yOiNmZmZ9Lm1hdC13YXJuW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtc2xpZGVyLWZvY3VzLXJpbmdbX25nY29udGVudC0lQ09NUCVde2JhY2tncm91bmQtY29sb3I6cmdiYSgyNDQsNjcsNTQsLjIpfS5tYXQtc2xpZGVyW19uZ2NvbnRlbnQtJUNPTVAlXTpob3ZlciAgIC5tYXQtc2xpZGVyLXRyYWNrLWJhY2tncm91bmRbX25nY29udGVudC0lQ09NUCVdLCAuY2RrLWZvY3VzZWRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1zbGlkZXItdHJhY2stYmFja2dyb3VuZFtfbmdjb250ZW50LSVDT01QJV17YmFja2dyb3VuZC1jb2xvcjpyZ2JhKDAsMCwwLC4zOCl9Lm1hdC1zbGlkZXItZGlzYWJsZWRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1zbGlkZXItdHJhY2stYmFja2dyb3VuZFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtc2xpZGVyLWRpc2FibGVkW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtc2xpZGVyLXRyYWNrLWZpbGxbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXNsaWRlci1kaXNhYmxlZFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXNsaWRlci10aHVtYltfbmdjb250ZW50LSVDT01QJV17YmFja2dyb3VuZC1jb2xvcjpyZ2JhKDAsMCwwLC4yNil9Lm1hdC1zbGlkZXItZGlzYWJsZWRbX25nY29udGVudC0lQ09NUCVdOmhvdmVyICAgLm1hdC1zbGlkZXItdHJhY2stYmFja2dyb3VuZFtfbmdjb250ZW50LSVDT01QJV17YmFja2dyb3VuZC1jb2xvcjpyZ2JhKDAsMCwwLC4yNil9Lm1hdC1zbGlkZXItbWluLXZhbHVlW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtc2xpZGVyLWZvY3VzLXJpbmdbX25nY29udGVudC0lQ09NUCVde2JhY2tncm91bmQtY29sb3I6cmdiYSgwLDAsMCwuMTIpfS5tYXQtc2xpZGVyLW1pbi12YWx1ZS5tYXQtc2xpZGVyLXRodW1iLWxhYmVsLXNob3dpbmdbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1zbGlkZXItdGh1bWJbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXNsaWRlci1taW4tdmFsdWUubWF0LXNsaWRlci10aHVtYi1sYWJlbC1zaG93aW5nW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtc2xpZGVyLXRodW1iLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXtiYWNrZ3JvdW5kLWNvbG9yOnJnYmEoMCwwLDAsLjg3KX0ubWF0LXNsaWRlci1taW4tdmFsdWUubWF0LXNsaWRlci10aHVtYi1sYWJlbC1zaG93aW5nLmNkay1mb2N1c2VkW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtc2xpZGVyLXRodW1iW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1zbGlkZXItbWluLXZhbHVlLm1hdC1zbGlkZXItdGh1bWItbGFiZWwtc2hvd2luZy5jZGstZm9jdXNlZFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXNsaWRlci10aHVtYi1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17YmFja2dyb3VuZC1jb2xvcjpyZ2JhKDAsMCwwLC4yNil9Lm1hdC1zbGlkZXItbWluLXZhbHVlW19uZ2NvbnRlbnQtJUNPTVAlXTpub3QoLm1hdC1zbGlkZXItdGh1bWItbGFiZWwtc2hvd2luZykgICAubWF0LXNsaWRlci10aHVtYltfbmdjb250ZW50LSVDT01QJV17Ym9yZGVyLWNvbG9yOnJnYmEoMCwwLDAsLjI2KTtiYWNrZ3JvdW5kLWNvbG9yOnRyYW5zcGFyZW50fS5tYXQtc2xpZGVyLW1pbi12YWx1ZVtfbmdjb250ZW50LSVDT01QJV06bm90KC5tYXQtc2xpZGVyLXRodW1iLWxhYmVsLXNob3dpbmcpOmhvdmVyICAgLm1hdC1zbGlkZXItdGh1bWJbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXNsaWRlci1taW4tdmFsdWVbX25nY29udGVudC0lQ09NUCVdOm5vdCgubWF0LXNsaWRlci10aHVtYi1sYWJlbC1zaG93aW5nKS5jZGstZm9jdXNlZCAgIC5tYXQtc2xpZGVyLXRodW1iW19uZ2NvbnRlbnQtJUNPTVAlXXtib3JkZXItY29sb3I6cmdiYSgwLDAsMCwuMzgpfS5tYXQtc2xpZGVyLW1pbi12YWx1ZVtfbmdjb250ZW50LSVDT01QJV06bm90KC5tYXQtc2xpZGVyLXRodW1iLWxhYmVsLXNob3dpbmcpOmhvdmVyLm1hdC1zbGlkZXItZGlzYWJsZWQgICAubWF0LXNsaWRlci10aHVtYltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtc2xpZGVyLW1pbi12YWx1ZVtfbmdjb250ZW50LSVDT01QJV06bm90KC5tYXQtc2xpZGVyLXRodW1iLWxhYmVsLXNob3dpbmcpLmNkay1mb2N1c2VkLm1hdC1zbGlkZXItZGlzYWJsZWQgICAubWF0LXNsaWRlci10aHVtYltfbmdjb250ZW50LSVDT01QJV17Ym9yZGVyLWNvbG9yOnJnYmEoMCwwLDAsLjI2KX0ubWF0LXNsaWRlci1oYXMtdGlja3NbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1zbGlkZXItd3JhcHBlcltfbmdjb250ZW50LSVDT01QJV06OmFmdGVye2JvcmRlci1jb2xvcjpyZ2JhKDAsMCwwLC43KX0ubWF0LXNsaWRlci1ob3Jpem9udGFsW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtc2xpZGVyLXRpY2tzW19uZ2NvbnRlbnQtJUNPTVAlXXtiYWNrZ3JvdW5kLWltYWdlOnJlcGVhdGluZy1saW5lYXItZ3JhZGllbnQodG8gcmlnaHQsIHJnYmEoMCwgMCwgMCwgMC43KSwgcmdiYSgwLCAwLCAwLCAwLjcpIDJweCwgdHJhbnNwYXJlbnQgMCwgdHJhbnNwYXJlbnQpO2JhY2tncm91bmQtaW1hZ2U6LW1vei1yZXBlYXRpbmctbGluZWFyLWdyYWRpZW50KDAuMDAwMWRlZywgcmdiYSgwLCAwLCAwLCAwLjcpLCByZ2JhKDAsIDAsIDAsIDAuNykgMnB4LCB0cmFuc3BhcmVudCAwLCB0cmFuc3BhcmVudCl9Lm1hdC1zbGlkZXItdmVydGljYWxbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1zbGlkZXItdGlja3NbX25nY29udGVudC0lQ09NUCVde2JhY2tncm91bmQtaW1hZ2U6cmVwZWF0aW5nLWxpbmVhci1ncmFkaWVudCh0byBib3R0b20sIHJnYmEoMCwgMCwgMCwgMC43KSwgcmdiYSgwLCAwLCAwLCAwLjcpIDJweCwgdHJhbnNwYXJlbnQgMCwgdHJhbnNwYXJlbnQpfS5tYXQtc3RlcC1oZWFkZXIuY2RrLWtleWJvYXJkLWZvY3VzZWRbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXN0ZXAtaGVhZGVyLmNkay1wcm9ncmFtLWZvY3VzZWRbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXN0ZXAtaGVhZGVyW19uZ2NvbnRlbnQtJUNPTVAlXTpob3ZlcntiYWNrZ3JvdW5kLWNvbG9yOnJnYmEoMCwwLDAsLjA0KX1AbWVkaWEoaG92ZXI6IG5vbmUpey5tYXQtc3RlcC1oZWFkZXJbX25nY29udGVudC0lQ09NUCVdOmhvdmVye2JhY2tncm91bmQ6bm9uZX19Lm1hdC1zdGVwLWhlYWRlcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXN0ZXAtbGFiZWxbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXN0ZXAtaGVhZGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtc3RlcC1vcHRpb25hbFtfbmdjb250ZW50LSVDT01QJV17Y29sb3I6IzYxNjE2MX0ubWF0LXN0ZXAtaGVhZGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtc3RlcC1pY29uW19uZ2NvbnRlbnQtJUNPTVAlXXtiYWNrZ3JvdW5kLWNvbG9yOiM2MTYxNjE7Y29sb3I6I2ZmZn0ubWF0LXN0ZXAtaGVhZGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtc3RlcC1pY29uLXNlbGVjdGVkW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1zdGVwLWhlYWRlcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXN0ZXAtaWNvbi1zdGF0ZS1kb25lW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1zdGVwLWhlYWRlcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXN0ZXAtaWNvbi1zdGF0ZS1lZGl0W19uZ2NvbnRlbnQtJUNPTVAlXXtiYWNrZ3JvdW5kLWNvbG9yOiNmNTdjMDA7Y29sb3I6I2ZmZn0ubWF0LXN0ZXAtaGVhZGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtc3RlcC1pY29uLXN0YXRlLWVycm9yW19uZ2NvbnRlbnQtJUNPTVAlXXtiYWNrZ3JvdW5kLWNvbG9yOnRyYW5zcGFyZW50O2NvbG9yOiNmNDQzMzZ9Lm1hdC1zdGVwLWhlYWRlcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXN0ZXAtbGFiZWwubWF0LXN0ZXAtbGFiZWwtYWN0aXZlW19uZ2NvbnRlbnQtJUNPTVAlXXtjb2xvcjojMjEyMTIxfS5tYXQtc3RlcC1oZWFkZXJbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1zdGVwLWxhYmVsLm1hdC1zdGVwLWxhYmVsLWVycm9yW19uZ2NvbnRlbnQtJUNPTVAlXXtjb2xvcjojZjQ0MzM2fS5tYXQtc3RlcHBlci1ob3Jpem9udGFsW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1zdGVwcGVyLXZlcnRpY2FsW19uZ2NvbnRlbnQtJUNPTVAlXXtiYWNrZ3JvdW5kLWNvbG9yOiNmZmZ9Lm1hdC1zdGVwcGVyLXZlcnRpY2FsLWxpbmVbX25nY29udGVudC0lQ09NUCVdOjpiZWZvcmV7Ym9yZGVyLWxlZnQtY29sb3I6cmdiYSgwLDAsMCwuMTIpfS5tYXQtaG9yaXpvbnRhbC1zdGVwcGVyLWhlYWRlcltfbmdjb250ZW50LSVDT01QJV06OmJlZm9yZSwgLm1hdC1ob3Jpem9udGFsLXN0ZXBwZXItaGVhZGVyW19uZ2NvbnRlbnQtJUNPTVAlXTo6YWZ0ZXIsIC5tYXQtc3RlcHBlci1ob3Jpem9udGFsLWxpbmVbX25nY29udGVudC0lQ09NUCVde2JvcmRlci10b3AtY29sb3I6cmdiYSgwLDAsMCwuMTIpfS5tYXQtaG9yaXpvbnRhbC1zdGVwcGVyLWhlYWRlcltfbmdjb250ZW50LSVDT01QJV17aGVpZ2h0OjcycHh9Lm1hdC1zdGVwcGVyLWxhYmVsLXBvc2l0aW9uLWJvdHRvbVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWhvcml6b250YWwtc3RlcHBlci1oZWFkZXJbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXZlcnRpY2FsLXN0ZXBwZXItaGVhZGVyW19uZ2NvbnRlbnQtJUNPTVAlXXtwYWRkaW5nOjI0cHggMjRweH0ubWF0LXN0ZXBwZXItdmVydGljYWwtbGluZVtfbmdjb250ZW50LSVDT01QJV06OmJlZm9yZXt0b3A6LTE2cHg7Ym90dG9tOi0xNnB4fS5tYXQtc3RlcHBlci1sYWJlbC1wb3NpdGlvbi1ib3R0b21bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1ob3Jpem9udGFsLXN0ZXBwZXItaGVhZGVyW19uZ2NvbnRlbnQtJUNPTVAlXTo6YWZ0ZXIsIC5tYXQtc3RlcHBlci1sYWJlbC1wb3NpdGlvbi1ib3R0b21bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1ob3Jpem9udGFsLXN0ZXBwZXItaGVhZGVyW19uZ2NvbnRlbnQtJUNPTVAlXTo6YmVmb3Jle3RvcDozNnB4fS5tYXQtc3RlcHBlci1sYWJlbC1wb3NpdGlvbi1ib3R0b21bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1zdGVwcGVyLWhvcml6b250YWwtbGluZVtfbmdjb250ZW50LSVDT01QJV17dG9wOjM2cHh9Lm1hdC1zb3J0LWhlYWRlci1hcnJvd1tfbmdjb250ZW50LSVDT01QJV17Y29sb3I6IzYxNjE2MX0ubWF0LXRhYi1uYXYtYmFyW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10YWItaGVhZGVyW19uZ2NvbnRlbnQtJUNPTVAlXXtib3JkZXItYm90dG9tOjFweCBzb2xpZCByZ2JhKDAsMCwwLC4xMil9Lm1hdC10YWItZ3JvdXAtaW52ZXJ0ZWQtaGVhZGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtdGFiLW5hdi1iYXJbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXRhYi1ncm91cC1pbnZlcnRlZC1oZWFkZXJbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC10YWItaGVhZGVyW19uZ2NvbnRlbnQtJUNPTVAlXXtib3JkZXItdG9wOjFweCBzb2xpZCByZ2JhKDAsMCwwLC4xMik7Ym9yZGVyLWJvdHRvbTpub25lfS5tYXQtdGFiLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10YWItbGlua1tfbmdjb250ZW50LSVDT01QJV17Y29sb3I6IzIxMjEyMX0ubWF0LXRhYi1sYWJlbC5tYXQtdGFiLWRpc2FibGVkW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10YWItbGluay5tYXQtdGFiLWRpc2FibGVkW19uZ2NvbnRlbnQtJUNPTVAlXXtjb2xvcjojNzU3NTc1fS5tYXQtdGFiLWhlYWRlci1wYWdpbmF0aW9uLWNoZXZyb25bX25nY29udGVudC0lQ09NUCVde2JvcmRlci1jb2xvcjojMjEyMTIxfS5tYXQtdGFiLWhlYWRlci1wYWdpbmF0aW9uLWRpc2FibGVkW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtdGFiLWhlYWRlci1wYWdpbmF0aW9uLWNoZXZyb25bX25nY29udGVudC0lQ09NUCVde2JvcmRlci1jb2xvcjojNzU3NTc1fS5tYXQtdGFiLWdyb3VwW2NsYXNzKj1tYXQtYmFja2dyb3VuZC1dW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtdGFiLWhlYWRlcltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdGFiLW5hdi1iYXJbY2xhc3MqPW1hdC1iYWNrZ3JvdW5kLV1bX25nY29udGVudC0lQ09NUCVde2JvcmRlci1ib3R0b206bm9uZTtib3JkZXItdG9wOm5vbmV9Lm1hdC10YWItZ3JvdXAubWF0LXByaW1hcnlbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC10YWItbGFiZWwuY2RrLWtleWJvYXJkLWZvY3VzZWRbX25nY29udGVudC0lQ09NUCVdOm5vdCgubWF0LXRhYi1kaXNhYmxlZCksIC5tYXQtdGFiLWdyb3VwLm1hdC1wcmltYXJ5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtdGFiLWxhYmVsLmNkay1wcm9ncmFtLWZvY3VzZWRbX25nY29udGVudC0lQ09NUCVdOm5vdCgubWF0LXRhYi1kaXNhYmxlZCksIC5tYXQtdGFiLWdyb3VwLm1hdC1wcmltYXJ5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtdGFiLWxpbmsuY2RrLWtleWJvYXJkLWZvY3VzZWRbX25nY29udGVudC0lQ09NUCVdOm5vdCgubWF0LXRhYi1kaXNhYmxlZCksIC5tYXQtdGFiLWdyb3VwLm1hdC1wcmltYXJ5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtdGFiLWxpbmsuY2RrLXByb2dyYW0tZm9jdXNlZFtfbmdjb250ZW50LSVDT01QJV06bm90KC5tYXQtdGFiLWRpc2FibGVkKSwgLm1hdC10YWItbmF2LWJhci5tYXQtcHJpbWFyeVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXRhYi1sYWJlbC5jZGsta2V5Ym9hcmQtZm9jdXNlZFtfbmdjb250ZW50LSVDT01QJV06bm90KC5tYXQtdGFiLWRpc2FibGVkKSwgLm1hdC10YWItbmF2LWJhci5tYXQtcHJpbWFyeVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXRhYi1sYWJlbC5jZGstcHJvZ3JhbS1mb2N1c2VkW19uZ2NvbnRlbnQtJUNPTVAlXTpub3QoLm1hdC10YWItZGlzYWJsZWQpLCAubWF0LXRhYi1uYXYtYmFyLm1hdC1wcmltYXJ5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtdGFiLWxpbmsuY2RrLWtleWJvYXJkLWZvY3VzZWRbX25nY29udGVudC0lQ09NUCVdOm5vdCgubWF0LXRhYi1kaXNhYmxlZCksIC5tYXQtdGFiLW5hdi1iYXIubWF0LXByaW1hcnlbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC10YWItbGluay5jZGstcHJvZ3JhbS1mb2N1c2VkW19uZ2NvbnRlbnQtJUNPTVAlXTpub3QoLm1hdC10YWItZGlzYWJsZWQpe2JhY2tncm91bmQtY29sb3I6cmdiYSgyNTUsMTUyLDAsLjMpfS5tYXQtdGFiLWdyb3VwLm1hdC1wcmltYXJ5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaW5rLWJhcltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdGFiLW5hdi1iYXIubWF0LXByaW1hcnlbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pbmstYmFyW19uZ2NvbnRlbnQtJUNPTVAlXXtiYWNrZ3JvdW5kLWNvbG9yOiNmNTdjMDB9Lm1hdC10YWItZ3JvdXAubWF0LXByaW1hcnkubWF0LWJhY2tncm91bmQtcHJpbWFyeVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWluay1iYXJbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXRhYi1uYXYtYmFyLm1hdC1wcmltYXJ5Lm1hdC1iYWNrZ3JvdW5kLXByaW1hcnlbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pbmstYmFyW19uZ2NvbnRlbnQtJUNPTVAlXXtiYWNrZ3JvdW5kLWNvbG9yOiNmZmZ9Lm1hdC10YWItZ3JvdXAubWF0LWFjY2VudFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXRhYi1sYWJlbC5jZGsta2V5Ym9hcmQtZm9jdXNlZFtfbmdjb250ZW50LSVDT01QJV06bm90KC5tYXQtdGFiLWRpc2FibGVkKSwgLm1hdC10YWItZ3JvdXAubWF0LWFjY2VudFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXRhYi1sYWJlbC5jZGstcHJvZ3JhbS1mb2N1c2VkW19uZ2NvbnRlbnQtJUNPTVAlXTpub3QoLm1hdC10YWItZGlzYWJsZWQpLCAubWF0LXRhYi1ncm91cC5tYXQtYWNjZW50W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtdGFiLWxpbmsuY2RrLWtleWJvYXJkLWZvY3VzZWRbX25nY29udGVudC0lQ09NUCVdOm5vdCgubWF0LXRhYi1kaXNhYmxlZCksIC5tYXQtdGFiLWdyb3VwLm1hdC1hY2NlbnRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC10YWItbGluay5jZGstcHJvZ3JhbS1mb2N1c2VkW19uZ2NvbnRlbnQtJUNPTVAlXTpub3QoLm1hdC10YWItZGlzYWJsZWQpLCAubWF0LXRhYi1uYXYtYmFyLm1hdC1hY2NlbnRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC10YWItbGFiZWwuY2RrLWtleWJvYXJkLWZvY3VzZWRbX25nY29udGVudC0lQ09NUCVdOm5vdCgubWF0LXRhYi1kaXNhYmxlZCksIC5tYXQtdGFiLW5hdi1iYXIubWF0LWFjY2VudFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXRhYi1sYWJlbC5jZGstcHJvZ3JhbS1mb2N1c2VkW19uZ2NvbnRlbnQtJUNPTVAlXTpub3QoLm1hdC10YWItZGlzYWJsZWQpLCAubWF0LXRhYi1uYXYtYmFyLm1hdC1hY2NlbnRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC10YWItbGluay5jZGsta2V5Ym9hcmQtZm9jdXNlZFtfbmdjb250ZW50LSVDT01QJV06bm90KC5tYXQtdGFiLWRpc2FibGVkKSwgLm1hdC10YWItbmF2LWJhci5tYXQtYWNjZW50W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtdGFiLWxpbmsuY2RrLXByb2dyYW0tZm9jdXNlZFtfbmdjb250ZW50LSVDT01QJV06bm90KC5tYXQtdGFiLWRpc2FibGVkKXtiYWNrZ3JvdW5kLWNvbG9yOnJnYmEoMjU1LDE1MiwwLC4zKX0ubWF0LXRhYi1ncm91cC5tYXQtYWNjZW50W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaW5rLWJhcltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdGFiLW5hdi1iYXIubWF0LWFjY2VudFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWluay1iYXJbX25nY29udGVudC0lQ09NUCVde2JhY2tncm91bmQtY29sb3I6I2ZmOTgwMH0ubWF0LXRhYi1ncm91cC5tYXQtYWNjZW50Lm1hdC1iYWNrZ3JvdW5kLWFjY2VudFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWluay1iYXJbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXRhYi1uYXYtYmFyLm1hdC1hY2NlbnQubWF0LWJhY2tncm91bmQtYWNjZW50W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaW5rLWJhcltfbmdjb250ZW50LSVDT01QJV17YmFja2dyb3VuZC1jb2xvcjojZmZmfS5tYXQtdGFiLWdyb3VwLm1hdC13YXJuW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtdGFiLWxhYmVsLmNkay1rZXlib2FyZC1mb2N1c2VkW19uZ2NvbnRlbnQtJUNPTVAlXTpub3QoLm1hdC10YWItZGlzYWJsZWQpLCAubWF0LXRhYi1ncm91cC5tYXQtd2Fybltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXRhYi1sYWJlbC5jZGstcHJvZ3JhbS1mb2N1c2VkW19uZ2NvbnRlbnQtJUNPTVAlXTpub3QoLm1hdC10YWItZGlzYWJsZWQpLCAubWF0LXRhYi1ncm91cC5tYXQtd2Fybltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXRhYi1saW5rLmNkay1rZXlib2FyZC1mb2N1c2VkW19uZ2NvbnRlbnQtJUNPTVAlXTpub3QoLm1hdC10YWItZGlzYWJsZWQpLCAubWF0LXRhYi1ncm91cC5tYXQtd2Fybltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXRhYi1saW5rLmNkay1wcm9ncmFtLWZvY3VzZWRbX25nY29udGVudC0lQ09NUCVdOm5vdCgubWF0LXRhYi1kaXNhYmxlZCksIC5tYXQtdGFiLW5hdi1iYXIubWF0LXdhcm5bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC10YWItbGFiZWwuY2RrLWtleWJvYXJkLWZvY3VzZWRbX25nY29udGVudC0lQ09NUCVdOm5vdCgubWF0LXRhYi1kaXNhYmxlZCksIC5tYXQtdGFiLW5hdi1iYXIubWF0LXdhcm5bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC10YWItbGFiZWwuY2RrLXByb2dyYW0tZm9jdXNlZFtfbmdjb250ZW50LSVDT01QJV06bm90KC5tYXQtdGFiLWRpc2FibGVkKSwgLm1hdC10YWItbmF2LWJhci5tYXQtd2Fybltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXRhYi1saW5rLmNkay1rZXlib2FyZC1mb2N1c2VkW19uZ2NvbnRlbnQtJUNPTVAlXTpub3QoLm1hdC10YWItZGlzYWJsZWQpLCAubWF0LXRhYi1uYXYtYmFyLm1hdC13YXJuW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtdGFiLWxpbmsuY2RrLXByb2dyYW0tZm9jdXNlZFtfbmdjb250ZW50LSVDT01QJV06bm90KC5tYXQtdGFiLWRpc2FibGVkKXtiYWNrZ3JvdW5kLWNvbG9yOnJnYmEoMjU1LDIwNSwyMTAsLjMpfS5tYXQtdGFiLWdyb3VwLm1hdC13YXJuW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaW5rLWJhcltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdGFiLW5hdi1iYXIubWF0LXdhcm5bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pbmstYmFyW19uZ2NvbnRlbnQtJUNPTVAlXXtiYWNrZ3JvdW5kLWNvbG9yOiNmNDQzMzZ9Lm1hdC10YWItZ3JvdXAubWF0LXdhcm4ubWF0LWJhY2tncm91bmQtd2Fybltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWluay1iYXJbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXRhYi1uYXYtYmFyLm1hdC13YXJuLm1hdC1iYWNrZ3JvdW5kLXdhcm5bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pbmstYmFyW19uZ2NvbnRlbnQtJUNPTVAlXXtiYWNrZ3JvdW5kLWNvbG9yOiNmZmZ9Lm1hdC10YWItZ3JvdXAubWF0LWJhY2tncm91bmQtcHJpbWFyeVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXRhYi1sYWJlbC5jZGsta2V5Ym9hcmQtZm9jdXNlZFtfbmdjb250ZW50LSVDT01QJV06bm90KC5tYXQtdGFiLWRpc2FibGVkKSwgLm1hdC10YWItZ3JvdXAubWF0LWJhY2tncm91bmQtcHJpbWFyeVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXRhYi1sYWJlbC5jZGstcHJvZ3JhbS1mb2N1c2VkW19uZ2NvbnRlbnQtJUNPTVAlXTpub3QoLm1hdC10YWItZGlzYWJsZWQpLCAubWF0LXRhYi1ncm91cC5tYXQtYmFja2dyb3VuZC1wcmltYXJ5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtdGFiLWxpbmsuY2RrLWtleWJvYXJkLWZvY3VzZWRbX25nY29udGVudC0lQ09NUCVdOm5vdCgubWF0LXRhYi1kaXNhYmxlZCksIC5tYXQtdGFiLWdyb3VwLm1hdC1iYWNrZ3JvdW5kLXByaW1hcnlbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC10YWItbGluay5jZGstcHJvZ3JhbS1mb2N1c2VkW19uZ2NvbnRlbnQtJUNPTVAlXTpub3QoLm1hdC10YWItZGlzYWJsZWQpLCAubWF0LXRhYi1uYXYtYmFyLm1hdC1iYWNrZ3JvdW5kLXByaW1hcnlbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC10YWItbGFiZWwuY2RrLWtleWJvYXJkLWZvY3VzZWRbX25nY29udGVudC0lQ09NUCVdOm5vdCgubWF0LXRhYi1kaXNhYmxlZCksIC5tYXQtdGFiLW5hdi1iYXIubWF0LWJhY2tncm91bmQtcHJpbWFyeVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXRhYi1sYWJlbC5jZGstcHJvZ3JhbS1mb2N1c2VkW19uZ2NvbnRlbnQtJUNPTVAlXTpub3QoLm1hdC10YWItZGlzYWJsZWQpLCAubWF0LXRhYi1uYXYtYmFyLm1hdC1iYWNrZ3JvdW5kLXByaW1hcnlbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC10YWItbGluay5jZGsta2V5Ym9hcmQtZm9jdXNlZFtfbmdjb250ZW50LSVDT01QJV06bm90KC5tYXQtdGFiLWRpc2FibGVkKSwgLm1hdC10YWItbmF2LWJhci5tYXQtYmFja2dyb3VuZC1wcmltYXJ5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtdGFiLWxpbmsuY2RrLXByb2dyYW0tZm9jdXNlZFtfbmdjb250ZW50LSVDT01QJV06bm90KC5tYXQtdGFiLWRpc2FibGVkKXtiYWNrZ3JvdW5kLWNvbG9yOnJnYmEoMjU1LDE1MiwwLC4zKX0ubWF0LXRhYi1ncm91cC5tYXQtYmFja2dyb3VuZC1wcmltYXJ5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtdGFiLWhlYWRlcltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdGFiLWdyb3VwLm1hdC1iYWNrZ3JvdW5kLXByaW1hcnlbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC10YWItbGlua3NbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXRhYi1ncm91cC5tYXQtYmFja2dyb3VuZC1wcmltYXJ5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtdGFiLWhlYWRlci1wYWdpbmF0aW9uW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10YWItbmF2LWJhci5tYXQtYmFja2dyb3VuZC1wcmltYXJ5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtdGFiLWhlYWRlcltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdGFiLW5hdi1iYXIubWF0LWJhY2tncm91bmQtcHJpbWFyeVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXRhYi1saW5rc1tfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdGFiLW5hdi1iYXIubWF0LWJhY2tncm91bmQtcHJpbWFyeVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXRhYi1oZWFkZXItcGFnaW5hdGlvbltfbmdjb250ZW50LSVDT01QJV17YmFja2dyb3VuZC1jb2xvcjojZjU3YzAwfS5tYXQtdGFiLWdyb3VwLm1hdC1iYWNrZ3JvdW5kLXByaW1hcnlbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC10YWItbGFiZWxbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXRhYi1ncm91cC5tYXQtYmFja2dyb3VuZC1wcmltYXJ5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtdGFiLWxpbmtbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXRhYi1uYXYtYmFyLm1hdC1iYWNrZ3JvdW5kLXByaW1hcnlbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC10YWItbGFiZWxbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXRhYi1uYXYtYmFyLm1hdC1iYWNrZ3JvdW5kLXByaW1hcnlbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC10YWItbGlua1tfbmdjb250ZW50LSVDT01QJV17Y29sb3I6I2ZmZn0ubWF0LXRhYi1ncm91cC5tYXQtYmFja2dyb3VuZC1wcmltYXJ5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtdGFiLWxhYmVsLm1hdC10YWItZGlzYWJsZWRbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXRhYi1ncm91cC5tYXQtYmFja2dyb3VuZC1wcmltYXJ5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtdGFiLWxpbmsubWF0LXRhYi1kaXNhYmxlZFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdGFiLW5hdi1iYXIubWF0LWJhY2tncm91bmQtcHJpbWFyeVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXRhYi1sYWJlbC5tYXQtdGFiLWRpc2FibGVkW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10YWItbmF2LWJhci5tYXQtYmFja2dyb3VuZC1wcmltYXJ5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtdGFiLWxpbmsubWF0LXRhYi1kaXNhYmxlZFtfbmdjb250ZW50LSVDT01QJV17Y29sb3I6cmdiYSgyNTUsMjU1LDI1NSwuNCl9Lm1hdC10YWItZ3JvdXAubWF0LWJhY2tncm91bmQtcHJpbWFyeVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXRhYi1oZWFkZXItcGFnaW5hdGlvbi1jaGV2cm9uW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10YWItbmF2LWJhci5tYXQtYmFja2dyb3VuZC1wcmltYXJ5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtdGFiLWhlYWRlci1wYWdpbmF0aW9uLWNoZXZyb25bX25nY29udGVudC0lQ09NUCVde2JvcmRlci1jb2xvcjojZmZmfS5tYXQtdGFiLWdyb3VwLm1hdC1iYWNrZ3JvdW5kLXByaW1hcnlbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC10YWItaGVhZGVyLXBhZ2luYXRpb24tZGlzYWJsZWRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC10YWItaGVhZGVyLXBhZ2luYXRpb24tY2hldnJvbltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdGFiLW5hdi1iYXIubWF0LWJhY2tncm91bmQtcHJpbWFyeVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXRhYi1oZWFkZXItcGFnaW5hdGlvbi1kaXNhYmxlZFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXRhYi1oZWFkZXItcGFnaW5hdGlvbi1jaGV2cm9uW19uZ2NvbnRlbnQtJUNPTVAlXXtib3JkZXItY29sb3I6cmdiYSgyNTUsMjU1LDI1NSwuNCl9Lm1hdC10YWItZ3JvdXAubWF0LWJhY2tncm91bmQtcHJpbWFyeVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXJpcHBsZS1lbGVtZW50W19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10YWItbmF2LWJhci5tYXQtYmFja2dyb3VuZC1wcmltYXJ5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtcmlwcGxlLWVsZW1lbnRbX25nY29udGVudC0lQ09NUCVde2JhY2tncm91bmQtY29sb3I6cmdiYSgyNTUsMjU1LDI1NSwuMTIpfS5tYXQtdGFiLWdyb3VwLm1hdC1iYWNrZ3JvdW5kLWFjY2VudFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXRhYi1sYWJlbC5jZGsta2V5Ym9hcmQtZm9jdXNlZFtfbmdjb250ZW50LSVDT01QJV06bm90KC5tYXQtdGFiLWRpc2FibGVkKSwgLm1hdC10YWItZ3JvdXAubWF0LWJhY2tncm91bmQtYWNjZW50W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtdGFiLWxhYmVsLmNkay1wcm9ncmFtLWZvY3VzZWRbX25nY29udGVudC0lQ09NUCVdOm5vdCgubWF0LXRhYi1kaXNhYmxlZCksIC5tYXQtdGFiLWdyb3VwLm1hdC1iYWNrZ3JvdW5kLWFjY2VudFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXRhYi1saW5rLmNkay1rZXlib2FyZC1mb2N1c2VkW19uZ2NvbnRlbnQtJUNPTVAlXTpub3QoLm1hdC10YWItZGlzYWJsZWQpLCAubWF0LXRhYi1ncm91cC5tYXQtYmFja2dyb3VuZC1hY2NlbnRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC10YWItbGluay5jZGstcHJvZ3JhbS1mb2N1c2VkW19uZ2NvbnRlbnQtJUNPTVAlXTpub3QoLm1hdC10YWItZGlzYWJsZWQpLCAubWF0LXRhYi1uYXYtYmFyLm1hdC1iYWNrZ3JvdW5kLWFjY2VudFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXRhYi1sYWJlbC5jZGsta2V5Ym9hcmQtZm9jdXNlZFtfbmdjb250ZW50LSVDT01QJV06bm90KC5tYXQtdGFiLWRpc2FibGVkKSwgLm1hdC10YWItbmF2LWJhci5tYXQtYmFja2dyb3VuZC1hY2NlbnRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC10YWItbGFiZWwuY2RrLXByb2dyYW0tZm9jdXNlZFtfbmdjb250ZW50LSVDT01QJV06bm90KC5tYXQtdGFiLWRpc2FibGVkKSwgLm1hdC10YWItbmF2LWJhci5tYXQtYmFja2dyb3VuZC1hY2NlbnRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC10YWItbGluay5jZGsta2V5Ym9hcmQtZm9jdXNlZFtfbmdjb250ZW50LSVDT01QJV06bm90KC5tYXQtdGFiLWRpc2FibGVkKSwgLm1hdC10YWItbmF2LWJhci5tYXQtYmFja2dyb3VuZC1hY2NlbnRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC10YWItbGluay5jZGstcHJvZ3JhbS1mb2N1c2VkW19uZ2NvbnRlbnQtJUNPTVAlXTpub3QoLm1hdC10YWItZGlzYWJsZWQpe2JhY2tncm91bmQtY29sb3I6cmdiYSgyNTUsMTUyLDAsLjMpfS5tYXQtdGFiLWdyb3VwLm1hdC1iYWNrZ3JvdW5kLWFjY2VudFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXRhYi1oZWFkZXJbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXRhYi1ncm91cC5tYXQtYmFja2dyb3VuZC1hY2NlbnRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC10YWItbGlua3NbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXRhYi1ncm91cC5tYXQtYmFja2dyb3VuZC1hY2NlbnRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC10YWItaGVhZGVyLXBhZ2luYXRpb25bX25nY29udGVudC0lQ09NUCVdLCAubWF0LXRhYi1uYXYtYmFyLm1hdC1iYWNrZ3JvdW5kLWFjY2VudFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXRhYi1oZWFkZXJbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXRhYi1uYXYtYmFyLm1hdC1iYWNrZ3JvdW5kLWFjY2VudFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXRhYi1saW5rc1tfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdGFiLW5hdi1iYXIubWF0LWJhY2tncm91bmQtYWNjZW50W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtdGFiLWhlYWRlci1wYWdpbmF0aW9uW19uZ2NvbnRlbnQtJUNPTVAlXXtiYWNrZ3JvdW5kLWNvbG9yOiNmZjk4MDB9Lm1hdC10YWItZ3JvdXAubWF0LWJhY2tncm91bmQtYWNjZW50W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtdGFiLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10YWItZ3JvdXAubWF0LWJhY2tncm91bmQtYWNjZW50W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtdGFiLWxpbmtbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXRhYi1uYXYtYmFyLm1hdC1iYWNrZ3JvdW5kLWFjY2VudFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXRhYi1sYWJlbFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdGFiLW5hdi1iYXIubWF0LWJhY2tncm91bmQtYWNjZW50W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtdGFiLWxpbmtbX25nY29udGVudC0lQ09NUCVde2NvbG9yOiNmZmZ9Lm1hdC10YWItZ3JvdXAubWF0LWJhY2tncm91bmQtYWNjZW50W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtdGFiLWxhYmVsLm1hdC10YWItZGlzYWJsZWRbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXRhYi1ncm91cC5tYXQtYmFja2dyb3VuZC1hY2NlbnRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC10YWItbGluay5tYXQtdGFiLWRpc2FibGVkW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10YWItbmF2LWJhci5tYXQtYmFja2dyb3VuZC1hY2NlbnRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC10YWItbGFiZWwubWF0LXRhYi1kaXNhYmxlZFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdGFiLW5hdi1iYXIubWF0LWJhY2tncm91bmQtYWNjZW50W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtdGFiLWxpbmsubWF0LXRhYi1kaXNhYmxlZFtfbmdjb250ZW50LSVDT01QJV17Y29sb3I6cmdiYSgyNTUsMjU1LDI1NSwuNCl9Lm1hdC10YWItZ3JvdXAubWF0LWJhY2tncm91bmQtYWNjZW50W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtdGFiLWhlYWRlci1wYWdpbmF0aW9uLWNoZXZyb25bX25nY29udGVudC0lQ09NUCVdLCAubWF0LXRhYi1uYXYtYmFyLm1hdC1iYWNrZ3JvdW5kLWFjY2VudFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXRhYi1oZWFkZXItcGFnaW5hdGlvbi1jaGV2cm9uW19uZ2NvbnRlbnQtJUNPTVAlXXtib3JkZXItY29sb3I6I2ZmZn0ubWF0LXRhYi1ncm91cC5tYXQtYmFja2dyb3VuZC1hY2NlbnRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC10YWItaGVhZGVyLXBhZ2luYXRpb24tZGlzYWJsZWRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC10YWItaGVhZGVyLXBhZ2luYXRpb24tY2hldnJvbltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdGFiLW5hdi1iYXIubWF0LWJhY2tncm91bmQtYWNjZW50W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtdGFiLWhlYWRlci1wYWdpbmF0aW9uLWRpc2FibGVkW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtdGFiLWhlYWRlci1wYWdpbmF0aW9uLWNoZXZyb25bX25nY29udGVudC0lQ09NUCVde2JvcmRlci1jb2xvcjpyZ2JhKDI1NSwyNTUsMjU1LC40KX0ubWF0LXRhYi1ncm91cC5tYXQtYmFja2dyb3VuZC1hY2NlbnRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1yaXBwbGUtZWxlbWVudFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdGFiLW5hdi1iYXIubWF0LWJhY2tncm91bmQtYWNjZW50W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtcmlwcGxlLWVsZW1lbnRbX25nY29udGVudC0lQ09NUCVde2JhY2tncm91bmQtY29sb3I6cmdiYSgyNTUsMjU1LDI1NSwuMTIpfS5tYXQtdGFiLWdyb3VwLm1hdC1iYWNrZ3JvdW5kLXdhcm5bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC10YWItbGFiZWwuY2RrLWtleWJvYXJkLWZvY3VzZWRbX25nY29udGVudC0lQ09NUCVdOm5vdCgubWF0LXRhYi1kaXNhYmxlZCksIC5tYXQtdGFiLWdyb3VwLm1hdC1iYWNrZ3JvdW5kLXdhcm5bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC10YWItbGFiZWwuY2RrLXByb2dyYW0tZm9jdXNlZFtfbmdjb250ZW50LSVDT01QJV06bm90KC5tYXQtdGFiLWRpc2FibGVkKSwgLm1hdC10YWItZ3JvdXAubWF0LWJhY2tncm91bmQtd2Fybltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXRhYi1saW5rLmNkay1rZXlib2FyZC1mb2N1c2VkW19uZ2NvbnRlbnQtJUNPTVAlXTpub3QoLm1hdC10YWItZGlzYWJsZWQpLCAubWF0LXRhYi1ncm91cC5tYXQtYmFja2dyb3VuZC13YXJuW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtdGFiLWxpbmsuY2RrLXByb2dyYW0tZm9jdXNlZFtfbmdjb250ZW50LSVDT01QJV06bm90KC5tYXQtdGFiLWRpc2FibGVkKSwgLm1hdC10YWItbmF2LWJhci5tYXQtYmFja2dyb3VuZC13YXJuW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtdGFiLWxhYmVsLmNkay1rZXlib2FyZC1mb2N1c2VkW19uZ2NvbnRlbnQtJUNPTVAlXTpub3QoLm1hdC10YWItZGlzYWJsZWQpLCAubWF0LXRhYi1uYXYtYmFyLm1hdC1iYWNrZ3JvdW5kLXdhcm5bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC10YWItbGFiZWwuY2RrLXByb2dyYW0tZm9jdXNlZFtfbmdjb250ZW50LSVDT01QJV06bm90KC5tYXQtdGFiLWRpc2FibGVkKSwgLm1hdC10YWItbmF2LWJhci5tYXQtYmFja2dyb3VuZC13YXJuW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtdGFiLWxpbmsuY2RrLWtleWJvYXJkLWZvY3VzZWRbX25nY29udGVudC0lQ09NUCVdOm5vdCgubWF0LXRhYi1kaXNhYmxlZCksIC5tYXQtdGFiLW5hdi1iYXIubWF0LWJhY2tncm91bmQtd2Fybltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXRhYi1saW5rLmNkay1wcm9ncmFtLWZvY3VzZWRbX25nY29udGVudC0lQ09NUCVdOm5vdCgubWF0LXRhYi1kaXNhYmxlZCl7YmFja2dyb3VuZC1jb2xvcjpyZ2JhKDI1NSwyMDUsMjEwLC4zKX0ubWF0LXRhYi1ncm91cC5tYXQtYmFja2dyb3VuZC13YXJuW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtdGFiLWhlYWRlcltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdGFiLWdyb3VwLm1hdC1iYWNrZ3JvdW5kLXdhcm5bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC10YWItbGlua3NbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXRhYi1ncm91cC5tYXQtYmFja2dyb3VuZC13YXJuW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtdGFiLWhlYWRlci1wYWdpbmF0aW9uW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10YWItbmF2LWJhci5tYXQtYmFja2dyb3VuZC13YXJuW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtdGFiLWhlYWRlcltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdGFiLW5hdi1iYXIubWF0LWJhY2tncm91bmQtd2Fybltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXRhYi1saW5rc1tfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdGFiLW5hdi1iYXIubWF0LWJhY2tncm91bmQtd2Fybltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXRhYi1oZWFkZXItcGFnaW5hdGlvbltfbmdjb250ZW50LSVDT01QJV17YmFja2dyb3VuZC1jb2xvcjojZjQ0MzM2fS5tYXQtdGFiLWdyb3VwLm1hdC1iYWNrZ3JvdW5kLXdhcm5bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC10YWItbGFiZWxbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXRhYi1ncm91cC5tYXQtYmFja2dyb3VuZC13YXJuW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtdGFiLWxpbmtbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXRhYi1uYXYtYmFyLm1hdC1iYWNrZ3JvdW5kLXdhcm5bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC10YWItbGFiZWxbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXRhYi1uYXYtYmFyLm1hdC1iYWNrZ3JvdW5kLXdhcm5bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC10YWItbGlua1tfbmdjb250ZW50LSVDT01QJV17Y29sb3I6I2ZmZn0ubWF0LXRhYi1ncm91cC5tYXQtYmFja2dyb3VuZC13YXJuW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtdGFiLWxhYmVsLm1hdC10YWItZGlzYWJsZWRbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXRhYi1ncm91cC5tYXQtYmFja2dyb3VuZC13YXJuW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtdGFiLWxpbmsubWF0LXRhYi1kaXNhYmxlZFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdGFiLW5hdi1iYXIubWF0LWJhY2tncm91bmQtd2Fybltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXRhYi1sYWJlbC5tYXQtdGFiLWRpc2FibGVkW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10YWItbmF2LWJhci5tYXQtYmFja2dyb3VuZC13YXJuW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtdGFiLWxpbmsubWF0LXRhYi1kaXNhYmxlZFtfbmdjb250ZW50LSVDT01QJV17Y29sb3I6cmdiYSgyNTUsMjU1LDI1NSwuNCl9Lm1hdC10YWItZ3JvdXAubWF0LWJhY2tncm91bmQtd2Fybltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXRhYi1oZWFkZXItcGFnaW5hdGlvbi1jaGV2cm9uW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10YWItbmF2LWJhci5tYXQtYmFja2dyb3VuZC13YXJuW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtdGFiLWhlYWRlci1wYWdpbmF0aW9uLWNoZXZyb25bX25nY29udGVudC0lQ09NUCVde2JvcmRlci1jb2xvcjojZmZmfS5tYXQtdGFiLWdyb3VwLm1hdC1iYWNrZ3JvdW5kLXdhcm5bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC10YWItaGVhZGVyLXBhZ2luYXRpb24tZGlzYWJsZWRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC10YWItaGVhZGVyLXBhZ2luYXRpb24tY2hldnJvbltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdGFiLW5hdi1iYXIubWF0LWJhY2tncm91bmQtd2Fybltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXRhYi1oZWFkZXItcGFnaW5hdGlvbi1kaXNhYmxlZFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXRhYi1oZWFkZXItcGFnaW5hdGlvbi1jaGV2cm9uW19uZ2NvbnRlbnQtJUNPTVAlXXtib3JkZXItY29sb3I6cmdiYSgyNTUsMjU1LDI1NSwuNCl9Lm1hdC10YWItZ3JvdXAubWF0LWJhY2tncm91bmQtd2Fybltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXJpcHBsZS1lbGVtZW50W19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10YWItbmF2LWJhci5tYXQtYmFja2dyb3VuZC13YXJuW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtcmlwcGxlLWVsZW1lbnRbX25nY29udGVudC0lQ09NUCVde2JhY2tncm91bmQtY29sb3I6cmdiYSgyNTUsMjU1LDI1NSwuMTIpfS5tYXQtdG9vbGJhcltfbmdjb250ZW50LSVDT01QJV17YmFja2dyb3VuZDojZjVmNWY1O2NvbG9yOiMyMTIxMjF9Lm1hdC10b29sYmFyLm1hdC1wcmltYXJ5W19uZ2NvbnRlbnQtJUNPTVAlXXtiYWNrZ3JvdW5kOiNmNTdjMDA7Y29sb3I6I2ZmZn0ubWF0LXRvb2xiYXIubWF0LWFjY2VudFtfbmdjb250ZW50LSVDT01QJV17YmFja2dyb3VuZDojZmY5ODAwO2NvbG9yOiNmZmZ9Lm1hdC10b29sYmFyLm1hdC13YXJuW19uZ2NvbnRlbnQtJUNPTVAlXXtiYWNrZ3JvdW5kOiNmNDQzMzY7Y29sb3I6I2ZmZn0ubWF0LXRvb2xiYXJbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLXVuZGVybGluZVtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdG9vbGJhcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtcmlwcGxlW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10b29sYmFyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9jdXNlZFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtcmlwcGxlW19uZ2NvbnRlbnQtJUNPTVAlXXtiYWNrZ3JvdW5kLWNvbG9yOmN1cnJlbnRDb2xvcn0ubWF0LXRvb2xiYXJbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10b29sYmFyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9jdXNlZFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXRvb2xiYXJbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1zZWxlY3QtdmFsdWVbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXRvb2xiYXJbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1zZWxlY3QtYXJyb3dbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXRvb2xiYXJbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLm1hdC1mb2N1c2VkW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtc2VsZWN0LWFycm93W19uZ2NvbnRlbnQtJUNPTVAlXXtjb2xvcjppbmhlcml0fS5tYXQtdG9vbGJhcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWlucHV0LWVsZW1lbnRbX25nY29udGVudC0lQ09NUCVde2NhcmV0LWNvbG9yOmN1cnJlbnRDb2xvcn0ubWF0LXRvb2xiYXItbXVsdGlwbGUtcm93c1tfbmdjb250ZW50LSVDT01QJV17bWluLWhlaWdodDo2NHB4fS5tYXQtdG9vbGJhci1yb3dbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXRvb2xiYXItc2luZ2xlLXJvd1tfbmdjb250ZW50LSVDT01QJV17aGVpZ2h0OjY0cHh9QG1lZGlhKG1heC13aWR0aDogNTk5cHgpey5tYXQtdG9vbGJhci1tdWx0aXBsZS1yb3dzW19uZ2NvbnRlbnQtJUNPTVAlXXttaW4taGVpZ2h0OjU2cHh9Lm1hdC10b29sYmFyLXJvd1tfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdG9vbGJhci1zaW5nbGUtcm93W19uZ2NvbnRlbnQtJUNPTVAlXXtoZWlnaHQ6NTZweH19Lm1hdC10b29sdGlwW19uZ2NvbnRlbnQtJUNPTVAlXXtiYWNrZ3JvdW5kOnJnYmEoOTcsOTcsOTcsLjkpfS5tYXQtdHJlZVtfbmdjb250ZW50LSVDT01QJV17YmFja2dyb3VuZDojZmZmfS5tYXQtdHJlZS1ub2RlW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1uZXN0ZWQtdHJlZS1ub2RlW19uZ2NvbnRlbnQtJUNPTVAlXXtjb2xvcjojMjEyMTIxfS5tYXQtdHJlZS1ub2RlW19uZ2NvbnRlbnQtJUNPTVAlXXttaW4taGVpZ2h0OjQ4cHh9Lm1hdC1zbmFjay1iYXItY29udGFpbmVyW19uZ2NvbnRlbnQtJUNPTVAlXXtjb2xvcjpyZ2JhKDI1NSwyNTUsMjU1LC43KTtiYWNrZ3JvdW5kOiMzMjMyMzI7Ym94LXNoYWRvdzowcHggM3B4IDVweCAtMXB4IHJnYmEoMCwgMCwgMCwgMC4yKSwwcHggNnB4IDEwcHggMHB4IHJnYmEoMCwgMCwgMCwgMC4xNCksMHB4IDFweCAxOHB4IDBweCByZ2JhKDAsIDAsIDAsIDAuMTIpfS5tYXQtc2ltcGxlLXNuYWNrYmFyLWFjdGlvbltfbmdjb250ZW50LSVDT01QJV17Y29sb3I6I2ZmOTgwMH1bX25naG9zdC0lQ09NUCVde2Rpc3BsYXk6ZmxleDtmbGV4LWRpcmVjdGlvbjpjb2x1bW47Ym94LXNpemluZzpib3JkZXItYm94O2hlaWdodDoxMDAlO292ZXJmbG93OmF1dG87cGFkZGluZzoxNnB4O3BhZGRpbmctdG9wOjRweH0uaGVhZGluZ1tfbmdjb250ZW50LSVDT01QJV17YWxpZ24taXRlbXM6Y2VudGVyO2Rpc3BsYXk6ZmxleDtqdXN0aWZ5LWNvbnRlbnQ6c3BhY2UtYmV0d2Vlbjtmb250LXNpemU6MTRweDttYXJnaW4tYm90dG9tOjRweDtwb3NpdGlvbjpyZWxhdGl2ZX0udGFnW19uZ2NvbnRlbnQtJUNPTVAlXXtvdmVyZmxvdzpoaWRkZW59LnBpbi1idXR0b25bX25nY29udGVudC0lQ09NUCVdICAgbWF0LWljb25bX25nY29udGVudC0lQ09NUCVde2hlaWdodDoxOHB4fS5jb250cm9sc1tfbmdjb250ZW50LSVDT01QJV17Y29sb3I6IzYxNjE2MTtmbGV4LXNocmluazowO21hcmdpbi1yaWdodDotMTJweDt3aGl0ZS1zcGFjZTpub3dyYXB9LmNoYXJ0LWNvbnRhaW5lcltfbmdjb250ZW50LSVDT01QJV17cG9zaXRpb246cmVsYXRpdmU7ZmxleDoxfS5jaGFydC1jb250YWluZXJbX25nY29udGVudC0lQ09NUCVdICAgbWF0LXNwaW5uZXJbX25nY29udGVudC0lQ09NUCVde3Bvc2l0aW9uOmFic29sdXRlO3JpZ2h0OjExcHg7dG9wOjExcHh9LmNoYXJ0LWNvbnRhaW5lcltfbmdjb250ZW50LSVDT01QJV0gICBsaW5lLWNoYXJ0W19uZ2NvbnRlbnQtJUNPTVAlXSwgLmNoYXJ0LWNvbnRhaW5lcltfbmdjb250ZW50LSVDT01QJV0gICB0Yi1saW5lLWNoYXJ0W19uZ2NvbnRlbnQtJUNPTVAlXXtkaXNwbGF5OmJsb2NrO2hlaWdodDoxMDAlfS50b29sdGlwW19uZ2NvbnRlbnQtJUNPTVAlXXtib3JkZXItc3BhY2luZzo0cHg7Zm9udC1zaXplOjEzcHh9LnRvb2x0aXBbX25nY29udGVudC0lQ09NUCVdICAgdGhbX25nY29udGVudC0lQ09NUCVde3RleHQtYWxpZ246bGVmdH0udG9vbHRpcFtfbmdjb250ZW50LSVDT01QJV0gICAudG9vbHRpcC1yb3dbX25nY29udGVudC0lQ09NUCVde3doaXRlLXNwYWNlOm5vd3JhcH0udG9vbHRpcFtfbmdjb250ZW50LSVDT01QJV0gICAudG9vbHRpcC1yb3ctY2lyY2xlW19uZ2NvbnRlbnQtJUNPTVAlXXthbGlnbi1pdGVtczpjZW50ZXI7ZGlzcGxheTppbmxpbmUtZmxleDtoZWlnaHQ6MTJweDt3aWR0aDoxMnB4fS50b29sdGlwW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC50b29sdGlwLXJvdy1jaXJjbGVbX25nY29udGVudC0lQ09NUCVdID4gc3Bhbltfbmdjb250ZW50LSVDT01QJV17Ym9yZGVyLXJhZGl1czo1MCU7Ym9yZGVyOjFweCBzb2xpZCByZ2JhKDI1NSwyNTUsMjU1LC40KTtkaXNwbGF5OmlubGluZS1ibG9jaztoZWlnaHQ6MTBweDt3aWR0aDoxMHB4fS50b29sdGlwW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5jbG9zZXN0W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC50b29sdGlwLXJvdy1jaXJjbGVbX25nY29udGVudC0lQ09NUCVdID4gc3Bhbltfbmdjb250ZW50LSVDT01QJV17Ym9yZGVyLWNvbG9yOiNmZmY7Ym94LXNoYWRvdzppbnNldCAwIDAgMCAxcHggI2ZmZn0nXSxjaGFuZ2VEZXRlY3Rpb246MH0pO2NvbnN0IExsdD1mdW5jdGlvbigpe3JldHVybltdfSxIbHQ9ZnVuY3Rpb24oKXtyZXR1cm57fX07ZnVuY3Rpb24gQmx0KHQsbil7cmV0dXJuIHQubGVuZ3RoPT09bi5sZW5ndGgmJnQuZXZlcnkoKCh0LGUpPT57Y29uc3QgYT1uW2VdLG89dC5wb2ludHMscj1hLnBvaW50cztyZXR1cm4gdC5zZXJpZXNJZD09PWEuc2VyaWVzSWQmJnQubWV0YWRhdGEuZGlzcGxheU5hbWU9PT1hLm1ldGFkYXRhLmRpc3BsYXlOYW1lJiZ0LnZpc2libGU9PT1hLnZpc2libGUmJm8ubGVuZ3RoPT09ci5sZW5ndGgmJm8uZXZlcnkoKCh0LG4pPT57Y29uc3QgZT1yW25dO3JldHVybiB0Lng9PT1lLngmJnQueT09PWUueX0pKX0pKX1mdW5jdGlvbiBWbHQodCxuKXtyZXR1cm4gdC5sZW5ndGg9PT1uLmxlbmd0aCYmdC5ldmVyeSgoKHQsZSk9Pntjb25zdCBhPW5bZV0sbz10LnBvaW50cyxyPWEucG9pbnRzO3JldHVybiB0LnJ1bklkPT09YS5ydW5JZCYmby5sZW5ndGg9PT1yLmxlbmd0aCYmby5ldmVyeSgoKHQsbik9Pntjb25zdCBlPXJbbl07cmV0dXJuIHQueD09PWUueCYmdC55PT09ZS55fSkpfSkpfWNsYXNzIGpsdHtjb25zdHJ1Y3Rvcih0KXt0aGlzLnN0b3JlPXQsdGhpcy5EYXRhRG93bmxvYWRDb21wb25lbnQ9JCQsdGhpcy5mdWxsV2lkdGhDaGFuZ2VkPW5ldyBFZix0aGlzLmZ1bGxIZWlnaHRDaGFuZ2VkPW5ldyBFZix0aGlzLnBpblN0YXRlQ2hhbmdlZD1uZXcgRWYsdGhpcy5sZWdhY3lTZXJpZXNEYXRhTGlzdCQ9WihbXSksdGhpcy5pc0NhcmRWaXNpYmxlJD10aGlzLnN0b3JlLnNlbGVjdChuRCkucGlwZShmdCgodD0+dC5oYXModGhpcy5jYXJkSWQpKSksdm4oKSksdGhpcy5pc0V2ZXJWaXNpYmxlJD10aGlzLmlzQ2FyZFZpc2libGUkLnBpcGUoYmUoKHQ9PiF0KSwhMCkpLHRoaXMudG9vbHRpcFNvcnQkPXRoaXMuc3RvcmUuc2VsZWN0KGREKSx0aGlzLmlnbm9yZU91dGxpZXJzJD10aGlzLnN0b3JlLnNlbGVjdChnRCksdGhpcy54QXhpc1R5cGUkPXRoaXMuc3RvcmUuc2VsZWN0KHBEKSx0aGlzLm5ld1hTY2FsZVR5cGUkPXRoaXMueEF4aXNUeXBlJC5waXBlKGZ0KCh0PT57c3dpdGNoKHQpe2Nhc2UgV1QuU1RFUDpjYXNlIFdULlJFTEFUSVZFOnJldHVybiBqJC5MSU5FQVI7Y2FzZSBXVC5XQUxMX1RJTUU6cmV0dXJuIGokLlRJTUU7ZGVmYXVsdDp0aHJvdyBuZXcgRXJyb3IoYEludmFsaWQgeEF4aXNUeXBlIGZvciBsaW5lIGNoYXJ0LiAke3R9YCl9fSkpKSx0aGlzLnNjYWxhclNtb290aGluZyQ9dGhpcy5zdG9yZS5zZWxlY3QodUQpLHRoaXMuZ3B1TGluZUNoYXJ0RW5hYmxlZCQ9dGhpcy5zdG9yZS5zZWxlY3QodVIpLHRoaXMuc21vb3RoaW5nRW5hYmxlZCQ9dGhpcy5zdG9yZS5zZWxlY3QodUQpLnBpcGUoZnQoKHQ9PnQ+MCkpKSx0aGlzLnNob3dGdWxsU2l6ZT0hMX1pc1NjYWxhckNhcmRNZXRhZGF0YSh0KXtjb25zdHtwbHVnaW46bn09dDtyZXR1cm4gbj09PWdULlNDQUxBUlN9b25GdWxsU2l6ZVRvZ2dsZSgpe3RoaXMuc2hvd0Z1bGxTaXplPSF0aGlzLnNob3dGdWxsU2l6ZSx0aGlzLmZ1bGxXaWR0aENoYW5nZWQuZW1pdCh0aGlzLnNob3dGdWxsU2l6ZSksdGhpcy5mdWxsSGVpZ2h0Q2hhbmdlZC5lbWl0KHRoaXMuc2hvd0Z1bGxTaXplKX1uZ09uSW5pdCgpe2NvbnN0IHQ9dGhpcy5zdG9yZS5zZWxlY3QoJFQsdGhpcy5jYXJkSWQpLnBpcGUoR3QoKHQ9PiEhdCYmdGhpcy5pc1NjYWxhckNhcmRNZXRhZGF0YSh0KSkpLGZ0KCh0PT50KSkpLG49dGhpcy5zdG9yZS5zZWxlY3QoUVQsdGhpcy5jYXJkSWQpLnBpcGUoR3QoKHQ9PkJvb2xlYW4odCkpKSxmdCgodD0+dCkpLGFlKDEpKS5waXBlKHNuKHRoaXMuc3RvcmUuc2VsZWN0KHBEKSksZnQoKChbdCxuXSk9Pk9iamVjdC5rZXlzKHQpLm1hcCgoZT0+KHtydW5JZDplLHBvaW50czp0aGlzLnN0ZXBTZXJpZXNUb0xpbmVTZXJpZXModFtlXSxuKX0pKSkpKSx2bihWbHQpKTtmdW5jdGlvbiBlKHQpe3JldHVybiBKU09OLnN0cmluZ2lmeShbInNtb290aGVkIix0XSl9dGhpcy5sZWdhY3lTZXJpZXNEYXRhTGlzdCQ9bi5waXBlKHNlKCh0PT50Lmxlbmd0aD9FdCh0Lm1hcCgodD0+dGhpcy5nZXRSdW5EaXNwbGF5TmFtZSh0LnJ1bklkKS5waXBlKGZ0KChuPT4oe3Nlcmllc0lkOnQucnVuSWQscG9pbnRzOnQucG9pbnRzLG1ldGFkYXRhOntkaXNwbGF5TmFtZTpufSx2aXNpYmxlOiExfSkpKSkpKSk6WihbXSkpKSxzbih0aGlzLnN0b3JlLnNlbGVjdChLRCkpLGxuKDApLGZ0KCgoW3Qsbl0pPT50Lm1hcCgodD0+T2JqZWN0LmFzc2lnbihPYmplY3QuYXNzaWduKHt9LHQpLHt2aXNpYmxlOkJvb2xlYW4obiYmbi5nZXQodC5zZXJpZXNJZCkpfSkpKSkpLGNlKFtdKSx2bihCbHQpKTtjb25zdCBhPW4ucGlwZShzbih0aGlzLnN0b3JlLnNlbGVjdChwRCkpLGZ0KCgoW3Qsbl0pPT50Lm1hcCgodD0+e2xldCBlPXQucG9pbnRzLm1hcCgodD0+e2NvbnN0IGU9MWUzKnQud2FsbFRpbWUsYT1uPT09V1QuU1RFUD90Lng6ZTtyZXR1cm4gT2JqZWN0LmFzc2lnbihPYmplY3QuYXNzaWduKHt9LHQpLHt4OmEsd2FsbFRpbWU6ZX0pfSkpO2lmKG49PT1XVC5SRUxBVElWRSYmZS5sZW5ndGgpe2NvbnN0IHQ9ZVswXTtlPWUubWFwKChuPT5PYmplY3QuYXNzaWduKE9iamVjdC5hc3NpZ24oe30sbikse3g6bi54LXQueH0pKSl9cmV0dXJue3J1bklkOnQucnVuSWQscG9pbnRzOmV9fSkpKSkpLnBpcGUoc24odGhpcy5zdG9yZS5zZWxlY3QoZkQpKSxmdCgoKFt0LG5dKT0+bj8oZnVuY3Rpb24gZSh0KXt2YXIgbjtjb25zdCBlPVtdO2Zvcihjb25zdCBhIG9mIHQpe2NvbnN0IHQ9W107bGV0IG89TnVtYmVyLmlzRmluaXRlKG51bGw9PT0obj1hLnBvaW50c1swXSl8fHZvaWQgMD09PW4/dm9pZCAwOm4ueCk/YS5wb2ludHNbMF0ueDotMS8wLHI9W107Zm9yKGNvbnN0IG4gb2YgYS5wb2ludHMpTnVtYmVyLmlzRmluaXRlKG4ueCk/KG4ueDxvJiYodC5wdXNoKHtzZXJpZXNJZDpKU09OLnN0cmluZ2lmeShbYS5ydW5JZCx0Lmxlbmd0aF0pLHJ1bklkOmEucnVuSWQscG9pbnRzOnJ9KSxyPVtdKSxyLnB1c2gobiksbz1uLngpOnIucHVzaChuKTt0LnB1c2goe3Nlcmllc0lkOkpTT04uc3RyaW5naWZ5KFthLnJ1bklkLHQubGVuZ3RoXSkscnVuSWQ6YS5ydW5JZCxwb2ludHM6cn0pO2ZvcihsZXQgbj0wO248dC5sZW5ndGg7bisrKWUucHVzaChPYmplY3QuYXNzaWduKE9iamVjdC5hc3NpZ24oe30sdFtuXSkse3BhcnRpdGlvbkluZGV4Om4scGFydGl0aW9uU2l6ZTp0Lmxlbmd0aH0pKX1yZXR1cm4gZX0pKHQpOnQubWFwKCh0PT5PYmplY3QuYXNzaWduKE9iamVjdC5hc3NpZ24oe30sdCkse3Nlcmllc0lkOnQucnVuSWQscGFydGl0aW9uSW5kZXg6MCxwYXJ0aXRpb25TaXplOjF9KSkpKSksYWUoMSkpO3RoaXMuZGF0YVNlcmllcyQ9YS5waXBlKHNuKHRoaXMuc3RvcmUuc2VsZWN0KHVEKSksc2UoKChbdCxuXSk9Pntjb25zdCBhPXQubWFwKCgoe3Nlcmllc0lkOnQscG9pbnRzOm59KT0+KHtpZDp0LHBvaW50czpufSkpKTtyZXR1cm4gbjw9MD9aKGEpOlJ0KChmdW5jdGlvbiBvKHQsbil7dmFyIGU7cmV0dXJuIENSKHRoaXMsdm9pZCAwLHZvaWQgMCwoZnVuY3Rpb24qKCl7TnVtYmVyLmlzRmluaXRlKG4pfHwobj0wKSxuPU1hdGgubWF4KDAsTWF0aC5taW4obiwxKSk7Y29uc3QgYT1bXTtmb3IoY29uc3QgbyBvZiB0KXtjb25zdCB0PW51bGw9PT0oZT1vLnBvaW50c1swXSl8fHZvaWQgMD09PWU/dm9pZCAwOmUueTtpZihvLnBvaW50cy5ldmVyeSgobj0+bi55PT10KSkpe2EucHVzaChvKTtjb250aW51ZX1sZXQgcj1vLnBvaW50cy5sZW5ndGg+MD8wOk5hTixpPTA7Y29uc3QgYz1vLnBvaW50cy5tYXAoKHQ9Pntjb25zdCBlPXQueTtpZihOdW1iZXIuaXNGaW5pdGUoZSkpe3I9cipuKygxLW4pKmUsaSsrO2NvbnN0IGE9MT09PW4/MToxLU1hdGgucG93KG4saSk7cmV0dXJue3g6dC54LHk6ci9hfX1yZXR1cm57eDp0LngseTplfX0pKTthLnB1c2goe2lkOm8uaWQscG9pbnRzOmN9KX1yZXR1cm4gYX0pKX0pKGEsbikpLnBpcGUoZnQoKHQ9Pntjb25zdCBuPWEubWFwKCgobixhKT0+KHtpZDplKG4uaWQpLHBvaW50czp0W2FdLnBvaW50cy5tYXAoKCh7eTp0fSxlKT0+T2JqZWN0LmFzc2lnbihPYmplY3QuYXNzaWduKHt9LG4ucG9pbnRzW2VdKSx7eTp0fSkpKX0pKSk7cmV0dXJuWy4uLmEsLi4ubl19KSkpfSkpLGNlKFtdKSksdGhpcy5jaGFydE1ldGFkYXRhTWFwJD1hLnBpcGUoc2UoKHQ9PkV0KHQubWFwKCh0PT50aGlzLmdldFJ1bkRpc3BsYXlOYW1lKHQucnVuSWQpLnBpcGUoZnQoKG49Pk9iamVjdC5hc3NpZ24oT2JqZWN0LmFzc2lnbih7fSx0KSx7ZGlzcGxheU5hbWU6bn0pKSkpKSkpKSksc24odGhpcy5zdG9yZS5zZWxlY3QoS0QpLHRoaXMuc3RvcmUuc2VsZWN0KEdEKSx0aGlzLnN0b3JlLnNlbGVjdCh1RCkpLGxuKDApLGZ0KCgoW3QsbixhLG9dKT0+e3ZhciByO2NvbnN0IGk9e30sYz1vPjA7Zm9yKGNvbnN0IGUgb2YgdCl7Y29uc3R7c2VyaWVzSWQ6dCxydW5JZDpvLGRpc3BsYXlOYW1lOmMscGFydGl0aW9uSW5kZXg6cyxwYXJ0aXRpb25TaXplOmx9PWU7aVt0XT17dHlwZTpVJC5PUklHSU5BTCxpZDp0LGRpc3BsYXlOYW1lOmw+MT9gJHtjfTogJHtzfWA6Yyx2aXNpYmxlOkJvb2xlYW4obiYmbi5nZXQobykpLGNvbG9yOm51bGwhPT0ocj1hW29dKSYmdm9pZCAwIT09cj9yOiIjZmZmIixhdXg6ITEsb3BhY2l0eToxfX1pZighYylyZXR1cm4gaTtmb3IoY29uc3RbdCxuXW9mIE9iamVjdC5lbnRyaWVzKGkpKXtjb25zdCBhPWUodCk7aVthXT1PYmplY3QuYXNzaWduKE9iamVjdC5hc3NpZ24oe30sbikse2lkOmEsdHlwZTpVJC5ERVJJVkVELGF1eDohMSxvcmlnaW5hbFNlcmllc0lkOnR9KSxuLmF1eD0hMCxuLm9wYWNpdHk9LjI1fXJldHVybiBpfSkpLGNlKHt9KSksdGhpcy5sb2FkU3RhdGUkPXRoaXMuc3RvcmUuc2VsZWN0KEpULHRoaXMuY2FyZElkKSx0aGlzLnRhZyQ9dC5waXBlKGZ0KCh0PT50LnRhZykpKSx0aGlzLnRpdGxlJD10aGlzLnRhZyQucGlwZShmdCgodD0+UUsodCx0aGlzLmdyb3VwTmFtZSkpKSksdGhpcy5pc1Bpbm5lZCQ9dGhpcy5zdG9yZS5zZWxlY3QoY0QsdGhpcy5jYXJkSWQpfWdldFJ1bkRpc3BsYXlOYW1lKHQpe3JldHVybiBFdChbdGhpcy5zdG9yZS5zZWxlY3QoVEQse3J1bklkOnR9KSx0aGlzLnN0b3JlLnNlbGVjdChvUiksdGhpcy5zdG9yZS5zZWxlY3QoREQse3J1bklkOnR9KV0pLnBpcGUoZnQoKChbbixlLGFdKT0+RSQodCxhLG4/ZVtuXTpudWxsKSkpKX1zdGVwU2VyaWVzVG9MaW5lU2VyaWVzKHQsbil7Y29uc3QgZT1uPT09V1QuU1RFUDtyZXR1cm4gdC5tYXAoKHQ9Pk9iamVjdC5hc3NpZ24oT2JqZWN0LmFzc2lnbih7fSx0KSx7eDplP3Quc3RlcDp0LndhbGxUaW1lLHk6dC52YWx1ZX0pKSl9fWZ1bmN0aW9uIFVsdCh0LG4sZSl7Y29uc3QgYT1bXSx7bGVmdDpvLHJpZ2h0OnJ9PW4saT0oci1vKS9lO2xldCBjPTAscz0wO2ZvcihsZXQgbj0wO248ZTtuKyspe2NvbnN0IHI9bytuKmksbD1yK2ksbT1uPT09ZS0xO2xldCBkPXM7Zm9yKHM9MDtjPHQubGVuZ3RoOyl7Y29uc3Qgbj10W2NdLGU9V2x0KG4scixsLCFtKTtpZihkKz1lLmN1cnIscys9ZS5uZXh0LG4ueCtuLmR4PmwpYnJlYWs7YysrfWEucHVzaCh7eDpyLGR4OmkseTpkfSl9cmV0dXJuIGF9ZnVuY3Rpb24gV2x0KHQsbixlLGEpe2NvbnN0IG89dC54LHI9dC54K3QuZHg7aWYobz5lfHxyPG4pcmV0dXJue2N1cnI6MCxuZXh0OjB9O2lmKDA9PT10LmR4KXJldHVybiBhJiZyPT09ZT97Y3VycjouNSp0LnksbmV4dDouNSp0Lnl9OntjdXJyOnQueSxuZXh0OjB9O2NvbnN0IGk9TWF0aC5taW4ocixlKS1NYXRoLm1heChvLG4pO3JldHVybntjdXJyOnQueSppL3QuZHgsbmV4dDowfX1qbHQuybVmYWM9ZnVuY3Rpb24gdChuKXtyZXR1cm4gbmV3KG58fGpsdCkoWmcoY3YpKX0samx0Lsm1Y21wPV9vKHt0eXBlOmpsdCxzZWxlY3RvcnM6W1sic2NhbGFyLWNhcmQiXV0saW5wdXRzOntEYXRhRG93bmxvYWRDb21wb25lbnQ6IkRhdGFEb3dubG9hZENvbXBvbmVudCIsY2FyZElkOiJjYXJkSWQiLGdyb3VwTmFtZToiZ3JvdXBOYW1lIixydW5Db2xvclNjYWxlOiJydW5Db2xvclNjYWxlIn0sb3V0cHV0czp7ZnVsbFdpZHRoQ2hhbmdlZDoiZnVsbFdpZHRoQ2hhbmdlZCIsZnVsbEhlaWdodENoYW5nZWQ6ImZ1bGxIZWlnaHRDaGFuZ2VkIixwaW5TdGF0ZUNoYW5nZWQ6InBpblN0YXRlQ2hhbmdlZCJ9LGRlY2xzOjE5LHZhcnM6NTgsY29uc3RzOltbMywiY2FyZElkIiwiRGF0YURvd25sb2FkQ29tcG9uZW50IiwibG9hZFN0YXRlIiwicnVuQ29sb3JTY2FsZSIsInRpdGxlIiwidGFnIiwic2VyaWVzRGF0YUxpc3QiLCJ0b29sdGlwU29ydCIsImlnbm9yZU91dGxpZXJzIiwieEF4aXNUeXBlIiwibmV3WFNjYWxlVHlwZSIsInNjYWxhclNtb290aGluZyIsInNob3dGdWxsU2l6ZSIsImlzUGlubmVkIiwiZGF0YVNlcmllcyIsImNoYXJ0TWV0YWRhdGFNYXAiLCJncHVMaW5lQ2hhcnRFbmFibGVkIiwic21vb3RoaW5nRW5hYmxlZCIsImlzQ2FyZFZpc2libGUiLCJpc0V2ZXJWaXNpYmxlIiwib25GdWxsU2l6ZVRvZ2dsZSIsIm9uUGluQ2xpY2tlZCJdXSx0ZW1wbGF0ZTpmdW5jdGlvbiB0KG4sZSl7MSZuJiYoS2coMCwic2NhbGFyLWNhcmQtY29tcG9uZW50IiwwKSxjcCgib25GdWxsU2l6ZVRvZ2dsZSIsKGZ1bmN0aW9uIHQoKXtyZXR1cm4gZS5vbkZ1bGxTaXplVG9nZ2xlKCl9KSkoIm9uUGluQ2xpY2tlZCIsKGZ1bmN0aW9uIHQobil7cmV0dXJuIGUucGluU3RhdGVDaGFuZ2VkLmVtaXQobil9KSkseWYoMSwiYXN5bmMiKSx5ZigyLCJhc3luYyIpLHlmKDMsImFzeW5jIikseWYoNCwiYXN5bmMiKSx5Zig1LCJhc3luYyIpLHlmKDYsImFzeW5jIikseWYoNywiYXN5bmMiKSx5Zig4LCJhc3luYyIpLHlmKDksImFzeW5jIikseWYoMTAsImFzeW5jIikseWYoMTEsImFzeW5jIikseWYoMTIsImFzeW5jIikseWYoMTMsImFzeW5jIikseWYoMTQsImFzeW5jIikseWYoMTUsImFzeW5jIikseWYoMTYsImFzeW5jIikseWYoMTcsImFzeW5jIikseWYoMTgsImFzeW5jIiksJGcoKSksMiZuJiZKZygiY2FyZElkIixlLmNhcmRJZCkoIkRhdGFEb3dubG9hZENvbXBvbmVudCIsZS5EYXRhRG93bmxvYWRDb21wb25lbnQpKCJsb2FkU3RhdGUiLGtmKDEsMjAsZS5sb2FkU3RhdGUkKSkoInJ1bkNvbG9yU2NhbGUiLGUucnVuQ29sb3JTY2FsZSkoInRpdGxlIixrZigyLDIyLGUudGl0bGUkKSkoInRhZyIsa2YoMywyNCxlLnRhZyQpKSgic2VyaWVzRGF0YUxpc3QiLGtmKDQsMjYsZS5sZWdhY3lTZXJpZXNEYXRhTGlzdCQpKSgidG9vbHRpcFNvcnQiLGtmKDUsMjgsZS50b29sdGlwU29ydCQpKSgiaWdub3JlT3V0bGllcnMiLGtmKDYsMzAsZS5pZ25vcmVPdXRsaWVycyQpKSgieEF4aXNUeXBlIixrZig3LDMyLGUueEF4aXNUeXBlJCkpKCJuZXdYU2NhbGVUeXBlIixrZig4LDM0LGUubmV3WFNjYWxlVHlwZSQpKSgic2NhbGFyU21vb3RoaW5nIixrZig5LDM2LGUuc2NhbGFyU21vb3RoaW5nJCkpKCJzaG93RnVsbFNpemUiLGUuc2hvd0Z1bGxTaXplKSgiaXNQaW5uZWQiLGtmKDEwLDM4LGUuaXNQaW5uZWQkKSkoImRhdGFTZXJpZXMiLGtmKDExLDQwLGUuZ3B1TGluZUNoYXJ0RW5hYmxlZCQpP2tmKDEyLDQyLGUuZGF0YVNlcmllcyQpOmJmKDU2LExsdCkpKCJjaGFydE1ldGFkYXRhTWFwIixrZigxMyw0NCxlLmdwdUxpbmVDaGFydEVuYWJsZWQkKT9rZigxNCw0NixlLmNoYXJ0TWV0YWRhdGFNYXAkKTpiZig1NyxIbHQpKSgiZ3B1TGluZUNoYXJ0RW5hYmxlZCIsa2YoMTUsNDgsZS5ncHVMaW5lQ2hhcnRFbmFibGVkJCkpKCJzbW9vdGhpbmdFbmFibGVkIixrZigxNiw1MCxlLnNtb290aGluZ0VuYWJsZWQkKSkoImlzQ2FyZFZpc2libGUiLGtmKDE3LDUyLGUuaXNDYXJkVmlzaWJsZSQpKSgiaXNFdmVyVmlzaWJsZSIsa2YoMTgsNTQsZS5pc0V2ZXJWaXNpYmxlJCkpfSxkaXJlY3RpdmVzOltGbHRdLHBpcGVzOltvT10sc3R5bGVzOlsiW19uZ2hvc3QtJUNPTVAlXSB7XG4gICAgICAgIGRpc3BsYXk6IGJsb2NrO1xuICAgICAgICBoZWlnaHQ6IDEwMCU7XG4gICAgICB9Il0sY2hhbmdlRGV0ZWN0aW9uOjB9KTtjbGFzcyBHbHR7Y29uc3RydWN0b3IodCl7dGhpcy5ob3N0PXQsdGhpcy5tb2RlPUhULk9GRlNFVCx0aGlzLnRpbWVQcm9wZXJ0eT1MVC5TVEVQLHRoaXMuZWxlbWVudD1kb2N1bWVudC5jcmVhdGVFbGVtZW50KCJ2ei1oaXN0b2dyYW0tdGltZXNlcmllcyIpLHRoaXMuZWxlbWVudC5tb2RlPXRoaXMubW9kZSx0aGlzLmVsZW1lbnQudGltZVByb3BlcnR5PXRoaXMudGltZVByb3BlcnR5fW5nT25Jbml0KCl7dGhpcy5ob3N0Lm5hdGl2ZUVsZW1lbnQuYXBwZW5kQ2hpbGQodGhpcy5lbGVtZW50KX1uZ09uQ2hhbmdlcyh0KXtpZih0Lm5hbWV8fHQuZGF0YSl7Y29uc3QgdD10aGlzLmRhdGEubWFwKCh0PT57Y29uc3R7c3RlcDpuLGJpbnM6ZX09dDtyZXR1cm57c3RlcDpuLGJpbnM6ZSx3YWxsX3RpbWU6dC53YWxsVGltZX19KSk7dGhpcy5lbGVtZW50LnNldFNlcmllc0RhdGEodGhpcy5uYW1lLHQpfXQubW9kZSYmKHRoaXMuZWxlbWVudC5tb2RlPXRoaXMubW9kZSksdC50aW1lUHJvcGVydHkmJih0aGlzLmVsZW1lbnQudGltZVByb3BlcnR5PXRoaXMudGltZVByb3BlcnR5KSx0LmNvbG9yU2NhbGUmJnRoaXMuY29sb3JTY2FsZSYmKHRoaXMuZWxlbWVudC5jb2xvclNjYWxlPXRoaXMuY29sb3JTY2FsZSl9cmVkcmF3KCl7dGhpcy5lbGVtZW50LnJlZHJhdygpfX1mdW5jdGlvbiBZbHQodCxuKXsxJnQmJihLZygwLCJzcGFuIiwxNCksdHAoMSwibWF0LXNwaW5uZXIiLDE1KSwkZygpKX1mdW5jdGlvbiBxbHQodCxuKXtpZigxJnQpe2NvbnN0IHQ9b3AoKTtLZygwLCJ0Yi1oaXN0b2dyYW0iLDE2KSxjcCgib25SZXNpemUiLChmdW5jdGlvbiBuKCl7cmV0dXJuIGpyKHQpLGdwKCkucmVkcmF3KCl9KSksJGcoKX1pZigyJnQpe2NvbnN0IHQ9Z3AoKTtKZygibmFtZSIsdC5ydW5JZCkoImRhdGEiLHQuZGF0YSkoIm1vZGUiLHQubW9kZSkoInRpbWVQcm9wZXJ0eSIsdC50aW1lUHJvcGVydHkodC54QXhpc1R5cGUpKSgiY29sb3JTY2FsZSIsdC5ydW5Db2xvclNjYWxlKSgicmVzaXplRXZlbnREZWJvdW5jZVBlcmlvZEluTXMiLHQuUkVTSVpFX1JFRFJBV19ERUJPVU5DRV9USU1FX0lOX01TKX19ZnVuY3Rpb24gWmx0KHQsbil7MSZ0JiYoS2coMCwiZGl2IiwxOCksSnAoMSwiIERhdGEgZmFpbGVkIHRvIGxvYWQuICIpLCRnKCkpfWZ1bmN0aW9uIFhsdCh0LG4pe2lmKDEmdCYmWWcoMCxabHQsMiwwLCJkaXYiLDE3KSwyJnQpe2NvbnN0IHQ9Z3AoKTtKZygibmdJZiIsdC5sb2FkU3RhdGU9PT10LkRhdGFMb2FkU3RhdGUuRkFJTEVEKX19R2x0Lsm1ZmFjPWZ1bmN0aW9uIHQobil7cmV0dXJuIG5ldyhufHxHbHQpKFpnKHh1KSl9LEdsdC7JtWNtcD1fbyh7dHlwZTpHbHQsc2VsZWN0b3JzOltbInRiLWhpc3RvZ3JhbSJdXSxpbnB1dHM6e21vZGU6Im1vZGUiLHRpbWVQcm9wZXJ0eToidGltZVByb3BlcnR5Iixjb2xvclNjYWxlOiJjb2xvclNjYWxlIixuYW1lOiJuYW1lIixkYXRhOiJkYXRhIn0sZmVhdHVyZXM6W3ByXSxkZWNsczowLHZhcnM6MCx0ZW1wbGF0ZTpmdW5jdGlvbiB0KG4sZSl7fSxzdHlsZXM6WyJbX25naG9zdC0lQ09NUCVdIHtcbiAgICAgICAgZGlzcGxheTogZmxleDtcbiAgICAgIH0iXX0pO2NvbnN0IEpsdD1mdW5jdGlvbih0KXtyZXR1cm57YmFja2dyb3VuZENvbG9yOnR9fTtjbGFzcyBRbHR7Y29uc3RydWN0b3IodCl7dGhpcy5yZWY9dCx0aGlzLlJFU0laRV9SRURSQVdfREVCT1VOQ0VfVElNRV9JTl9NUz01MCx0aGlzLkRhdGFMb2FkU3RhdGU9ZlIsdGhpcy5vbkZ1bGxTaXplVG9nZ2xlPW5ldyBFZix0aGlzLm9uUGluQ2xpY2tlZD1uZXcgRWZ9dGltZVByb3BlcnR5KHQpe3N3aXRjaCh0KXtjYXNlIFdULlNURVA6cmV0dXJuIExULlNURVA7Y2FzZSBXVC5XQUxMX1RJTUU6cmV0dXJuIExULldBTExfVElNRTtjYXNlIFdULlJFTEFUSVZFOnJldHVybiBMVC5SRUxBVElWRTtkZWZhdWx0OnRocm93IG5ldyBFcnJvcigiSW52YWxpZCB4QXhpc1R5cGUgZm9yIGhpc3RvZ3JhbSB0aW1lIHByb3BlcnR5LiIpfX1yZWRyYXcoKXt0aGlzLmhpc3RvZ3JhbUNvbXBvbmVudCYmdGhpcy5yZWYubmF0aXZlRWxlbWVudC5jbGllbnRIZWlnaHQmJnRoaXMuaGlzdG9ncmFtQ29tcG9uZW50LnJlZHJhdygpfX1RbHQuybVmYWM9ZnVuY3Rpb24gdChuKXtyZXR1cm4gbmV3KG58fFFsdCkoWmcoeHUpKX0sUWx0Lsm1Y21wPV9vKHt0eXBlOlFsdCxzZWxlY3RvcnM6W1siaGlzdG9ncmFtLWNhcmQtY29tcG9uZW50Il1dLHZpZXdRdWVyeTpmdW5jdGlvbiB0KG4sZSl7dmFyIGE7MSZuJiZVZihHbHQsITApLDImbiYmVmYoYT1aZigpKSYmKGUuaGlzdG9ncmFtQ29tcG9uZW50PWEuZmlyc3QpfSxpbnB1dHM6e2xvYWRTdGF0ZToibG9hZFN0YXRlIix0aXRsZToidGl0bGUiLHRhZzoidGFnIixydW5JZDoicnVuSWQiLGRhdGE6ImRhdGEiLG1vZGU6Im1vZGUiLHhBeGlzVHlwZToieEF4aXNUeXBlIixydW5Db2xvclNjYWxlOiJydW5Db2xvclNjYWxlIixzaG93RnVsbFNpemU6InNob3dGdWxsU2l6ZSIsaXNQaW5uZWQ6ImlzUGlubmVkIn0sb3V0cHV0czp7b25GdWxsU2l6ZVRvZ2dsZToib25GdWxsU2l6ZVRvZ2dsZSIsb25QaW5DbGlja2VkOiJvblBpbkNsaWNrZWQifSxkZWNsczoxNix2YXJzOjEyLGNvbnN0czpmdW5jdGlvbigpe3JldHVybltbMSwiaGVhZGluZyJdLFsxLCJ0YWciLDMsInRpdGxlIiwidmFsdWUiXSxbMSwicnVuIl0sWzEsImRvdCIsMywibmdTdHlsZSJdLFsxLCJydW4tdGV4dCIsMywicnVuSWQiXSxbMSwiY29udHJvbHMiXSxbIm1hdC1pY29uLWJ1dHRvbiIsIiIsMSwicGluLWJ1dHRvbiIsMywiY2xpY2siLDYsImFyaWEtbGFiZWwiXSxbImFyaWEtbGFiZWwiLCJ1bmRlZmluZWQiIT10eXBlb2YgbmdJMThuQ2xvc3VyZU1vZGUmJm5nSTE4bkNsb3N1cmVNb2RlP2dvb2cuZ2V0TXNnKCJQaW4gY2FyZCIpOiRsb2NhbGl6ZWA6QSBidXR0b24gdG8gcGluIGEgY2FyZC7ikJ9lNjY1ZGM3MTJiZDVmMThkNGRmYTNhMjllMTI1ZDU2NWNjNTFlMmY24pCfNzI4NDYwNjQyNjIzNDM3NTM0NDpQaW4gY2FyZGBdLFszLCJzdmdJY29uIl0sWyJtYXQtaWNvbi1idXR0b24iLCIiLCJ0aXRsZSIsIlRvZ2dsZSBmdWxsIHNpemUgbW9kZSIsMywiY2xpY2siLDYsImFyaWEtbGFiZWwiXSxbImFyaWEtbGFiZWwiLCJ1bmRlZmluZWQiIT10eXBlb2YgbmdJMThuQ2xvc3VyZU1vZGUmJm5nSTE4bkNsb3N1cmVNb2RlP2dvb2cuZ2V0TXNnKCJUb2dnbGUgZnVsbCBzaXplIG1vZGUiKTokbG9jYWxpemVgOkEgYnV0dG9uIG9uIGEgaGlzdG9ncmFtIGNhcmQgdGhhdCB0b2dnbGVzIGZ1bGwgc2l6ZSBtb2RlLuKQn2ZjOGY3NjdkMGI5ZjkzMDE4N2ExYmFlMzQ0NzdhZDI4NzM2ZWNlMzPikJ85MTU3MjE1NjM2Mzg5MjY1OTc6VG9nZ2xlIGZ1bGwgc2l6ZSBtb2RlYF0sWyJjbGFzcyIsInNwaW5uZXIiLDQsIm5nSWYiXSxbImRldGVjdFJlc2l6ZSIsIiIsMywibmFtZSIsImRhdGEiLCJtb2RlIiwidGltZVByb3BlcnR5IiwiY29sb3JTY2FsZSIsInJlc2l6ZUV2ZW50RGVib3VuY2VQZXJpb2RJbk1zIiwib25SZXNpemUiLDQsIm5nSWYiLCJuZ0lmRWxzZSJdLFsibm9EYXRhIiwiIl0sWzEsInNwaW5uZXIiXSxbImRpYW1ldGVyIiwiMTgiXSxbImRldGVjdFJlc2l6ZSIsIiIsMywibmFtZSIsImRhdGEiLCJtb2RlIiwidGltZVByb3BlcnR5IiwiY29sb3JTY2FsZSIsInJlc2l6ZUV2ZW50RGVib3VuY2VQZXJpb2RJbk1zIiwib25SZXNpemUiXSxbImNsYXNzIiwiZW1wdHktbWVzc2FnZSIsNCwibmdJZiJdLFsxLCJlbXB0eS1tZXNzYWdlIl1dfSx0ZW1wbGF0ZTpmdW5jdGlvbiB0KG4sZSl7aWYoMSZuJiYoS2coMCwiZGl2IiwwKSx0cCgxLCJ0Yi10cnVuY2F0ZWQtcGF0aCIsMSksS2coMiwiZGl2IiwyKSx0cCgzLCJzcGFuIiwzKSx0cCg0LCJjYXJkLXJ1bi1uYW1lIiw0KSwkZygpLEtnKDUsInNwYW4iLDUpLEtnKDYsImJ1dHRvbiIsNiksbHUoNyw3KSxjcCgiY2xpY2siLChmdW5jdGlvbiB0KCl7cmV0dXJuIGUub25QaW5DbGlja2VkLmVtaXQoIWUuaXNQaW5uZWQpfSkpLHRwKDgsIm1hdC1pY29uIiw4KSwkZygpLEtnKDksImJ1dHRvbiIsOSksbHUoMTAsMTApLGNwKCJjbGljayIsKGZ1bmN0aW9uIHQoKXtyZXR1cm4gZS5vbkZ1bGxTaXplVG9nZ2xlLmVtaXQoKX0pKSx0cCgxMSwibWF0LWljb24iLDgpLCRnKCksJGcoKSxZZygxMixZbHQsMiwwLCJzcGFuIiwxMSksJGcoKSxZZygxMyxxbHQsMSw2LCJ0Yi1oaXN0b2dyYW0iLDEyKSxZZygxNCxYbHQsMSwxLCJuZy10ZW1wbGF0ZSIsbnVsbCwxMyxLZikpLDImbil7Y29uc3QgdD1xZygxNSk7d3MoMSksX3AoInRpdGxlIixlLnRhZyksX3AoInZhbHVlIixlLnRpdGxlKSx3cygyKSxKZygibmdTdHlsZSIsdWYoMTAsSmx0LGUucnVuQ29sb3JTY2FsZShlLnJ1bklkKSkpLHdzKDEpLEpnKCJydW5JZCIsZS5ydW5JZCksd3MoMiksTmcoInRpdGxlIixlLmlzUGlubmVkPyJVbnBpbiBjYXJkIjoiUGluIGNhcmQiKSx3cygyKSxKZygic3ZnSWNvbiIsZS5pc1Bpbm5lZD8ia2VlcF8yNHB4Ijoia2VlcF9vdXRsaW5lXzI0cHgiKSx3cygzKSxKZygic3ZnSWNvbiIsZS5zaG93RnVsbFNpemU/ImZ1bGxzY3JlZW5fZXhpdF8yNHB4IjoiZnVsbHNjcmVlbl8yNHB4Iiksd3MoMSksSmcoIm5nSWYiLGUubG9hZFN0YXRlPT09ZS5EYXRhTG9hZFN0YXRlLkxPQURJTkcpLHdzKDEpLEpnKCJuZ0lmIixlLmRhdGEmJmUuZGF0YS5sZW5ndGgpKCJuZ0lmRWxzZSIsdCl9fSxkaXJlY3RpdmVzOltTJCwkTSx6JCxlQSxCQixXTSxoWixHbHQsX1ldLHN0eWxlczpbJy5tYXQtYmFkZ2UtY29udGVudFtfbmdjb250ZW50LSVDT01QJV17Zm9udC13ZWlnaHQ6NjAwO2ZvbnQtc2l6ZToxMnB4O2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZn0ubWF0LWJhZGdlLXNtYWxsW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtYmFkZ2UtY29udGVudFtfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjlweH0ubWF0LWJhZGdlLWxhcmdlW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtYmFkZ2UtY29udGVudFtfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjI0cHh9Lm1hdC1oMVtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtaGVhZGxpbmVbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXR5cG9ncmFwaHlbX25nY29udGVudC0lQ09NUCVdICAgaDFbX25nY29udGVudC0lQ09NUCVde2ZvbnQ6NDAwIDI0cHgvMzJweCBSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7bGV0dGVyLXNwYWNpbmc6bm9ybWFsO21hcmdpbjowIDAgMTZweH0ubWF0LWgyW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10aXRsZVtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdHlwb2dyYXBoeVtfbmdjb250ZW50LSVDT01QJV0gICBoMltfbmdjb250ZW50LSVDT01QJV17Zm9udDo1MDAgMjBweC8zMnB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtsZXR0ZXItc3BhY2luZzpub3JtYWw7bWFyZ2luOjAgMCAxNnB4fS5tYXQtaDNbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXN1YmhlYWRpbmctMltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdHlwb2dyYXBoeVtfbmdjb250ZW50LSVDT01QJV0gICBoM1tfbmdjb250ZW50LSVDT01QJV17Zm9udDo0MDAgMTZweC8yOHB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtsZXR0ZXItc3BhY2luZzpub3JtYWw7bWFyZ2luOjAgMCAxNnB4fS5tYXQtaDRbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXN1YmhlYWRpbmctMVtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdHlwb2dyYXBoeVtfbmdjb250ZW50LSVDT01QJV0gICBoNFtfbmdjb250ZW50LSVDT01QJV17Zm9udDo0MDAgMTVweC8yNHB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtsZXR0ZXItc3BhY2luZzpub3JtYWw7bWFyZ2luOjAgMCAxNnB4fS5tYXQtaDVbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXR5cG9ncmFwaHlbX25nY29udGVudC0lQ09NUCVdICAgaDVbX25nY29udGVudC0lQ09NUCVde2ZvbnQ6NDAwIGNhbGMoMTRweCAqIDAuODMpLzIwcHggUm9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO21hcmdpbjowIDAgMTJweH0ubWF0LWg2W19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10eXBvZ3JhcGh5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIGg2W19uZ2NvbnRlbnQtJUNPTVAlXXtmb250OjQwMCBjYWxjKDE0cHggKiAwLjY3KS8yMHB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjttYXJnaW46MCAwIDEycHh9Lm1hdC1ib2R5LXN0cm9uZ1tfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtYm9keS0yW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250OjUwMCAxNHB4LzI0cHggUm9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2xldHRlci1zcGFjaW5nOm5vcm1hbH0ubWF0LWJvZHlbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWJvZHktMVtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdHlwb2dyYXBoeVtfbmdjb250ZW50LSVDT01QJV17Zm9udDo0MDAgMTRweC8yMHB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtsZXR0ZXItc3BhY2luZzpub3JtYWx9Lm1hdC1ib2R5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIHBbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWJvZHktMVtfbmdjb250ZW50LSVDT01QJV0gICBwW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10eXBvZ3JhcGh5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIHBbX25nY29udGVudC0lQ09NUCVde21hcmdpbjowIDAgMTJweH0ubWF0LXNtYWxsW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1jYXB0aW9uW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250OjQwMCAxMnB4LzIwcHggUm9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2xldHRlci1zcGFjaW5nOm5vcm1hbH0ubWF0LWRpc3BsYXktNFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdHlwb2dyYXBoeVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWRpc3BsYXktNFtfbmdjb250ZW50LSVDT01QJV17Zm9udDozMDAgMTEycHgvMTEycHggUm9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2xldHRlci1zcGFjaW5nOi0wLjA1ZW07bWFyZ2luOjAgMCA1NnB4fS5tYXQtZGlzcGxheS0zW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10eXBvZ3JhcGh5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZGlzcGxheS0zW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250OjQwMCA1NnB4LzU2cHggUm9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2xldHRlci1zcGFjaW5nOi0wLjAyZW07bWFyZ2luOjAgMCA2NHB4fS5tYXQtZGlzcGxheS0yW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10eXBvZ3JhcGh5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZGlzcGxheS0yW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250OjQwMCA0NXB4LzQ4cHggUm9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2xldHRlci1zcGFjaW5nOi0wLjAwNWVtO21hcmdpbjowIDAgNjRweH0ubWF0LWRpc3BsYXktMVtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdHlwb2dyYXBoeVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWRpc3BsYXktMVtfbmdjb250ZW50LSVDT01QJV17Zm9udDo0MDAgMzRweC80MHB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtsZXR0ZXItc3BhY2luZzpub3JtYWw7bWFyZ2luOjAgMCA2NHB4fS5tYXQtYm90dG9tLXNoZWV0LWNvbnRhaW5lcltfbmdjb250ZW50LSVDT01QJV17Zm9udDo0MDAgMTRweC8yMHB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtsZXR0ZXItc3BhY2luZzpub3JtYWx9Lm1hdC1idXR0b25bX25nY29udGVudC0lQ09NUCVdLCAubWF0LXJhaXNlZC1idXR0b25bX25nY29udGVudC0lQ09NUCVdLCAubWF0LWljb24tYnV0dG9uW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1zdHJva2VkLWJ1dHRvbltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtZmxhdC1idXR0b25bX25nY29udGVudC0lQ09NUCVdLCAubWF0LWZhYltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtbWluaS1mYWJbX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtmb250LXNpemU6MTRweDtmb250LXdlaWdodDo1MDB9Lm1hdC1idXR0b24tdG9nZ2xlW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWZ9Lm1hdC1jYXJkW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWZ9Lm1hdC1jYXJkLXRpdGxlW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MjRweDtmb250LXdlaWdodDo1MDB9Lm1hdC1jYXJkLWhlYWRlcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWNhcmQtdGl0bGVbX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToyMHB4fS5tYXQtY2FyZC1zdWJ0aXRsZVtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtY2FyZC1jb250ZW50W19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MTRweH0ubWF0LWNoZWNrYm94W19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWZ9Lm1hdC1jaGVja2JveC1sYXlvdXRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1jaGVja2JveC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17bGluZS1oZWlnaHQ6MjRweH0ubWF0LWNoaXBbX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToxNHB4O2ZvbnQtd2VpZ2h0OjUwMH0ubWF0LWNoaXBbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1jaGlwLXRyYWlsaW5nLWljb24ubWF0LWljb25bX25nY29udGVudC0lQ09NUCVdLCAubWF0LWNoaXBbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1jaGlwLXJlbW92ZS5tYXQtaWNvbltfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjE4cHh9Lm1hdC10YWJsZVtfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmfS5tYXQtaGVhZGVyLWNlbGxbX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToxMnB4O2ZvbnQtd2VpZ2h0OjUwMH0ubWF0LWNlbGxbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWZvb3Rlci1jZWxsW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MTRweH0ubWF0LWNhbGVuZGFyW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWZ9Lm1hdC1jYWxlbmRhci1ib2R5W19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MTNweH0ubWF0LWNhbGVuZGFyLWJvZHktbGFiZWxbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWNhbGVuZGFyLXBlcmlvZC1idXR0b25bX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToxNHB4O2ZvbnQtd2VpZ2h0OjUwMH0ubWF0LWNhbGVuZGFyLXRhYmxlLWhlYWRlcltfbmdjb250ZW50LSVDT01QJV0gICB0aFtfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjExcHg7Zm9udC13ZWlnaHQ6NDAwfS5tYXQtZGlhbG9nLXRpdGxlW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250OjUwMCAyMHB4LzMycHggUm9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2xldHRlci1zcGFjaW5nOm5vcm1hbH0ubWF0LWV4cGFuc2lvbi1wYW5lbC1oZWFkZXJbX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtmb250LXNpemU6MTVweDtmb250LXdlaWdodDo0MDB9Lm1hdC1leHBhbnNpb24tcGFuZWwtY29udGVudFtfbmdjb250ZW50LSVDT01QJV17Zm9udDo0MDAgMTRweC8yMHB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtsZXR0ZXItc3BhY2luZzpub3JtYWx9Lm1hdC1mb3JtLWZpZWxkW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6aW5oZXJpdDtmb250LXdlaWdodDo0MDA7bGluZS1oZWlnaHQ6MS4xMjU7Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2xldHRlci1zcGFjaW5nOm5vcm1hbH0ubWF0LWZvcm0tZmllbGQtd3JhcHBlcltfbmdjb250ZW50LSVDT01QJV17cGFkZGluZy1ib3R0b206MS4zNDM3NWVtfS5tYXQtZm9ybS1maWVsZC1wcmVmaXhbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pY29uW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1mb3JtLWZpZWxkLXN1ZmZpeFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWljb25bX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToxNTAlO2xpbmUtaGVpZ2h0OjEuMTI1fS5tYXQtZm9ybS1maWVsZC1wcmVmaXhbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pY29uLWJ1dHRvbltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtZm9ybS1maWVsZC1zdWZmaXhbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pY29uLWJ1dHRvbltfbmdjb250ZW50LSVDT01QJV17aGVpZ2h0OjEuNWVtO3dpZHRoOjEuNWVtfS5tYXQtZm9ybS1maWVsZC1wcmVmaXhbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pY29uLWJ1dHRvbltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWljb25bX25nY29udGVudC0lQ09NUCVdLCAubWF0LWZvcm0tZmllbGQtc3VmZml4W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaWNvbi1idXR0b25bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pY29uW19uZ2NvbnRlbnQtJUNPTVAlXXtoZWlnaHQ6MS4xMjVlbTtsaW5lLWhlaWdodDoxLjEyNX0ubWF0LWZvcm0tZmllbGQtaW5maXhbX25nY29udGVudC0lQ09NUCVde3BhZGRpbmc6LjVlbSAwO2JvcmRlci10b3A6Ljg0Mzc1ZW0gc29saWQgdHJhbnNwYXJlbnR9Lm1hdC1mb3JtLWZpZWxkLWNhbi1mbG9hdC5tYXQtZm9ybS1maWVsZC1zaG91bGQtZmxvYXRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1mb3JtLWZpZWxkLWNhbi1mbG9hdFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWlucHV0LXNlcnZlcltfbmdjb250ZW50LSVDT01QJV06Zm9jdXMgKyAubWF0LWZvcm0tZmllbGQtbGFiZWwtd3JhcHBlcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVde3RyYW5zZm9ybTp0cmFuc2xhdGVZKC0xLjM0Mzc1ZW0pIHNjYWxlKDAuNzUpO3dpZHRoOjEzMy4zMzMzMzMzMzMzJX0ubWF0LWZvcm0tZmllbGQtY2FuLWZsb2F0W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaW5wdXQtc2VydmVyW2xhYmVsXVtfbmdjb250ZW50LSVDT01QJV06bm90KDpsYWJlbC1zaG93bikgKyAubWF0LWZvcm0tZmllbGQtbGFiZWwtd3JhcHBlcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVde3RyYW5zZm9ybTp0cmFuc2xhdGVZKC0xLjM0Mzc0ZW0pIHNjYWxlKDAuNzUpO3dpZHRoOjEzMy4zMzMzNDMzMzMzJX0ubWF0LWZvcm0tZmllbGQtbGFiZWwtd3JhcHBlcltfbmdjb250ZW50LSVDT01QJV17dG9wOi0wLjg0Mzc1ZW07cGFkZGluZy10b3A6Ljg0Mzc1ZW19Lm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXt0b3A6MS4zNDM3NWVtfS5tYXQtZm9ybS1maWVsZC11bmRlcmxpbmVbX25nY29udGVudC0lQ09NUCVde2JvdHRvbToxLjM0Mzc1ZW19Lm1hdC1mb3JtLWZpZWxkLXN1YnNjcmlwdC13cmFwcGVyW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6NzUlO21hcmdpbi10b3A6LjY2NjY2NjY2NjdlbTt0b3A6Y2FsYygxMDAlIC0gMS43OTE2NjY2NjY3ZW0pfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWxlZ2FjeVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtd3JhcHBlcltfbmdjb250ZW50LSVDT01QJV17cGFkZGluZy1ib3R0b206MS4yNWVtfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWxlZ2FjeVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtaW5maXhbX25nY29udGVudC0lQ09NUCVde3BhZGRpbmc6LjQzNzVlbSAwfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWxlZ2FjeS5tYXQtZm9ybS1maWVsZC1jYW4tZmxvYXQubWF0LWZvcm0tZmllbGQtc2hvdWxkLWZsb2F0W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWxlZ2FjeS5tYXQtZm9ybS1maWVsZC1jYW4tZmxvYXRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pbnB1dC1zZXJ2ZXJbX25nY29udGVudC0lQ09NUCVdOmZvY3VzICsgLm1hdC1mb3JtLWZpZWxkLWxhYmVsLXdyYXBwZXJbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXt0cmFuc2Zvcm06dHJhbnNsYXRlWSgtMS4yODEyNWVtKSBzY2FsZSgwLjc1KSBwZXJzcGVjdGl2ZSgxMDBweCkgdHJhbnNsYXRlWigwLjAwMXB4KTstbXMtdHJhbnNmb3JtOnRyYW5zbGF0ZVkoLTEuMjgxMjVlbSkgc2NhbGUoMC43NSk7d2lkdGg6MTMzLjMzMzMzMzMzMzMlfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWxlZ2FjeS5tYXQtZm9ybS1maWVsZC1jYW4tZmxvYXRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWF1dG9maWxsLWNvbnRyb2xbX25nY29udGVudC0lQ09NUCVdOi13ZWJraXQtYXV0b2ZpbGwgKyAubWF0LWZvcm0tZmllbGQtbGFiZWwtd3JhcHBlcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVde3RyYW5zZm9ybTp0cmFuc2xhdGVZKC0xLjI4MTI1ZW0pIHNjYWxlKDAuNzUpIHBlcnNwZWN0aXZlKDEwMHB4KSB0cmFuc2xhdGVaKDAuMDAxMDFweCk7LW1zLXRyYW5zZm9ybTp0cmFuc2xhdGVZKC0xLjI4MTI0ZW0pIHNjYWxlKDAuNzUpO3dpZHRoOjEzMy4zMzMzNDMzMzMzJX0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1sZWdhY3kubWF0LWZvcm0tZmllbGQtY2FuLWZsb2F0W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaW5wdXQtc2VydmVyW2xhYmVsXVtfbmdjb250ZW50LSVDT01QJV06bm90KDpsYWJlbC1zaG93bikgKyAubWF0LWZvcm0tZmllbGQtbGFiZWwtd3JhcHBlcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVde3RyYW5zZm9ybTp0cmFuc2xhdGVZKC0xLjI4MTI1ZW0pIHNjYWxlKDAuNzUpIHBlcnNwZWN0aXZlKDEwMHB4KSB0cmFuc2xhdGVaKDAuMDAxMDJweCk7LW1zLXRyYW5zZm9ybTp0cmFuc2xhdGVZKC0xLjI4MTIzZW0pIHNjYWxlKDAuNzUpO3dpZHRoOjEzMy4zMzMzNTMzMzMzJX0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1sZWdhY3lbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXt0b3A6MS4yODEyNWVtfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWxlZ2FjeVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtdW5kZXJsaW5lW19uZ2NvbnRlbnQtJUNPTVAlXXtib3R0b206MS4yNWVtfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWxlZ2FjeVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtc3Vic2NyaXB0LXdyYXBwZXJbX25nY29udGVudC0lQ09NUCVde21hcmdpbi10b3A6LjU0MTY2NjY2NjdlbTt0b3A6Y2FsYygxMDAlIC0gMS42NjY2NjY2NjY3ZW0pfUBtZWRpYSBwcmludHsubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1sZWdhY3kubWF0LWZvcm0tZmllbGQtY2FuLWZsb2F0Lm1hdC1mb3JtLWZpZWxkLXNob3VsZC1mbG9hdFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1sZWdhY3kubWF0LWZvcm0tZmllbGQtY2FuLWZsb2F0W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaW5wdXQtc2VydmVyW19uZ2NvbnRlbnQtJUNPTVAlXTpmb2N1cyArIC5tYXQtZm9ybS1maWVsZC1sYWJlbC13cmFwcGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17dHJhbnNmb3JtOnRyYW5zbGF0ZVkoLTEuMjgxMjJlbSkgc2NhbGUoMC43NSl9Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtbGVnYWN5Lm1hdC1mb3JtLWZpZWxkLWNhbi1mbG9hdFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtYXV0b2ZpbGwtY29udHJvbFtfbmdjb250ZW50LSVDT01QJV06LXdlYmtpdC1hdXRvZmlsbCArIC5tYXQtZm9ybS1maWVsZC1sYWJlbC13cmFwcGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17dHJhbnNmb3JtOnRyYW5zbGF0ZVkoLTEuMjgxMjFlbSkgc2NhbGUoMC43NSl9Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtbGVnYWN5Lm1hdC1mb3JtLWZpZWxkLWNhbi1mbG9hdFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWlucHV0LXNlcnZlcltsYWJlbF1bX25nY29udGVudC0lQ09NUCVdOm5vdCg6bGFiZWwtc2hvd24pICsgLm1hdC1mb3JtLWZpZWxkLWxhYmVsLXdyYXBwZXJbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXt0cmFuc2Zvcm06dHJhbnNsYXRlWSgtMS4yODEyZW0pIHNjYWxlKDAuNzUpfX0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1maWxsW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1pbmZpeFtfbmdjb250ZW50LSVDT01QJV17cGFkZGluZzouMjVlbSAwIC43NWVtIDB9Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtZmlsbFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVde3RvcDoxLjA5Mzc1ZW07bWFyZ2luLXRvcDotMC41ZW19Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtZmlsbC5tYXQtZm9ybS1maWVsZC1jYW4tZmxvYXQubWF0LWZvcm0tZmllbGQtc2hvdWxkLWZsb2F0W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWZpbGwubWF0LWZvcm0tZmllbGQtY2FuLWZsb2F0W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaW5wdXQtc2VydmVyW19uZ2NvbnRlbnQtJUNPTVAlXTpmb2N1cyArIC5tYXQtZm9ybS1maWVsZC1sYWJlbC13cmFwcGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17dHJhbnNmb3JtOnRyYW5zbGF0ZVkoLTAuNTkzNzVlbSkgc2NhbGUoMC43NSk7d2lkdGg6MTMzLjMzMzMzMzMzMzMlfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWZpbGwubWF0LWZvcm0tZmllbGQtY2FuLWZsb2F0W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaW5wdXQtc2VydmVyW2xhYmVsXVtfbmdjb250ZW50LSVDT01QJV06bm90KDpsYWJlbC1zaG93bikgKyAubWF0LWZvcm0tZmllbGQtbGFiZWwtd3JhcHBlcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVde3RyYW5zZm9ybTp0cmFuc2xhdGVZKC0wLjU5Mzc0ZW0pIHNjYWxlKDAuNzUpO3dpZHRoOjEzMy4zMzMzNDMzMzMzJX0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1vdXRsaW5lW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1pbmZpeFtfbmdjb250ZW50LSVDT01QJV17cGFkZGluZzoxZW0gMCAxZW0gMH0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1vdXRsaW5lW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17dG9wOjEuODQzNzVlbTttYXJnaW4tdG9wOi0wLjI1ZW19Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2Utb3V0bGluZS5tYXQtZm9ybS1maWVsZC1jYW4tZmxvYXQubWF0LWZvcm0tZmllbGQtc2hvdWxkLWZsb2F0W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLW91dGxpbmUubWF0LWZvcm0tZmllbGQtY2FuLWZsb2F0W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaW5wdXQtc2VydmVyW19uZ2NvbnRlbnQtJUNPTVAlXTpmb2N1cyArIC5tYXQtZm9ybS1maWVsZC1sYWJlbC13cmFwcGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17dHJhbnNmb3JtOnRyYW5zbGF0ZVkoLTEuNTkzNzVlbSkgc2NhbGUoMC43NSk7d2lkdGg6MTMzLjMzMzMzMzMzMzMlfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLW91dGxpbmUubWF0LWZvcm0tZmllbGQtY2FuLWZsb2F0W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaW5wdXQtc2VydmVyW2xhYmVsXVtfbmdjb250ZW50LSVDT01QJV06bm90KDpsYWJlbC1zaG93bikgKyAubWF0LWZvcm0tZmllbGQtbGFiZWwtd3JhcHBlcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVde3RyYW5zZm9ybTp0cmFuc2xhdGVZKC0xLjU5Mzc0ZW0pIHNjYWxlKDAuNzUpO3dpZHRoOjEzMy4zMzMzNDMzMzMzJX0ubWF0LWdyaWQtdGlsZS1oZWFkZXJbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWdyaWQtdGlsZS1mb290ZXJbX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToxNHB4fS5tYXQtZ3JpZC10aWxlLWhlYWRlcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpbmVbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWdyaWQtdGlsZS1mb290ZXJbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saW5lW19uZ2NvbnRlbnQtJUNPTVAlXXt3aGl0ZS1zcGFjZTpub3dyYXA7b3ZlcmZsb3c6aGlkZGVuO3RleHQtb3ZlcmZsb3c6ZWxsaXBzaXM7ZGlzcGxheTpibG9jaztib3gtc2l6aW5nOmJvcmRlci1ib3h9Lm1hdC1ncmlkLXRpbGUtaGVhZGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGluZVtfbmdjb250ZW50LSVDT01QJV06bnRoLWNoaWxkKG4rMiksIC5tYXQtZ3JpZC10aWxlLWZvb3Rlcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpbmVbX25nY29udGVudC0lQ09NUCVdOm50aC1jaGlsZChuKzIpe2ZvbnQtc2l6ZToxMnB4fWlucHV0Lm1hdC1pbnB1dC1lbGVtZW50W19uZ2NvbnRlbnQtJUNPTVAlXXttYXJnaW4tdG9wOi0wLjA2MjVlbX0ubWF0LW1lbnUtaXRlbVtfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2ZvbnQtc2l6ZToxNHB4O2ZvbnQtd2VpZ2h0OjQwMH0ubWF0LXBhZ2luYXRvcltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtcGFnaW5hdG9yLXBhZ2Utc2l6ZVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXNlbGVjdC10cmlnZ2VyW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7Zm9udC1zaXplOjEycHh9Lm1hdC1yYWRpby1idXR0b25bX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZn0ubWF0LXNlbGVjdFtfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmfS5tYXQtc2VsZWN0LXRyaWdnZXJbX25nY29udGVudC0lQ09NUCVde2hlaWdodDoxLjEyNWVtfS5tYXQtc2xpZGUtdG9nZ2xlLWNvbnRlbnRbX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZn0ubWF0LXNsaWRlci10aHVtYi1sYWJlbC10ZXh0W19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7Zm9udC1zaXplOjEycHg7Zm9udC13ZWlnaHQ6NTAwfS5tYXQtc3RlcHBlci12ZXJ0aWNhbFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtc3RlcHBlci1ob3Jpem9udGFsW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWZ9Lm1hdC1zdGVwLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MTRweDtmb250LXdlaWdodDo0MDB9Lm1hdC1zdGVwLXN1Yi1sYWJlbC1lcnJvcltfbmdjb250ZW50LSVDT01QJV17Zm9udC13ZWlnaHQ6bm9ybWFsfS5tYXQtc3RlcC1sYWJlbC1lcnJvcltfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjE0cHh9Lm1hdC1zdGVwLWxhYmVsLXNlbGVjdGVkW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MTRweDtmb250LXdlaWdodDo1MDB9Lm1hdC10YWItZ3JvdXBbX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZn0ubWF0LXRhYi1sYWJlbFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdGFiLWxpbmtbX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtmb250LXNpemU6MTRweDtmb250LXdlaWdodDo1MDB9Lm1hdC10b29sYmFyW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10b29sYmFyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIGgxW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10b29sYmFyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIGgyW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10b29sYmFyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIGgzW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10b29sYmFyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIGg0W19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10b29sYmFyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIGg1W19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10b29sYmFyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIGg2W19uZ2NvbnRlbnQtJUNPTVAlXXtmb250OjUwMCAyMHB4LzMycHggUm9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2xldHRlci1zcGFjaW5nOm5vcm1hbDttYXJnaW46MH0ubWF0LXRvb2x0aXBbX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtmb250LXNpemU6MTBweDtwYWRkaW5nLXRvcDo2cHg7cGFkZGluZy1ib3R0b206NnB4fS5tYXQtdG9vbHRpcC1oYW5kc2V0W19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MTRweDtwYWRkaW5nLXRvcDo4cHg7cGFkZGluZy1ib3R0b206OHB4fS5tYXQtbGlzdC1pdGVtW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWZ9Lm1hdC1saXN0LW9wdGlvbltfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmfS5tYXQtbGlzdC1iYXNlW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGlzdC1pdGVtW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MTZweH0ubWF0LWxpc3QtYmFzZVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpc3QtaXRlbVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpbmVbX25nY29udGVudC0lQ09NUCVde3doaXRlLXNwYWNlOm5vd3JhcDtvdmVyZmxvdzpoaWRkZW47dGV4dC1vdmVyZmxvdzplbGxpcHNpcztkaXNwbGF5OmJsb2NrO2JveC1zaXppbmc6Ym9yZGVyLWJveH0ubWF0LWxpc3QtYmFzZVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpc3QtaXRlbVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpbmVbX25nY29udGVudC0lQ09NUCVdOm50aC1jaGlsZChuKzIpe2ZvbnQtc2l6ZToxNHB4fS5tYXQtbGlzdC1iYXNlW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGlzdC1vcHRpb25bX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToxNnB4fS5tYXQtbGlzdC1iYXNlW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGlzdC1vcHRpb25bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saW5lW19uZ2NvbnRlbnQtJUNPTVAlXXt3aGl0ZS1zcGFjZTpub3dyYXA7b3ZlcmZsb3c6aGlkZGVuO3RleHQtb3ZlcmZsb3c6ZWxsaXBzaXM7ZGlzcGxheTpibG9jaztib3gtc2l6aW5nOmJvcmRlci1ib3h9Lm1hdC1saXN0LWJhc2VbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saXN0LW9wdGlvbltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpbmVbX25nY29udGVudC0lQ09NUCVdOm50aC1jaGlsZChuKzIpe2ZvbnQtc2l6ZToxNHB4fS5tYXQtbGlzdC1iYXNlW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtc3ViaGVhZGVyW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7Zm9udC1zaXplOjE0cHg7Zm9udC13ZWlnaHQ6NTAwfS5tYXQtbGlzdC1iYXNlW2RlbnNlXVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpc3QtaXRlbVtfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjEycHh9Lm1hdC1saXN0LWJhc2VbZGVuc2VdW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGlzdC1pdGVtW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGluZVtfbmdjb250ZW50LSVDT01QJV17d2hpdGUtc3BhY2U6bm93cmFwO292ZXJmbG93OmhpZGRlbjt0ZXh0LW92ZXJmbG93OmVsbGlwc2lzO2Rpc3BsYXk6YmxvY2s7Ym94LXNpemluZzpib3JkZXItYm94fS5tYXQtbGlzdC1iYXNlW2RlbnNlXVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpc3QtaXRlbVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpbmVbX25nY29udGVudC0lQ09NUCVdOm50aC1jaGlsZChuKzIpe2ZvbnQtc2l6ZToxMnB4fS5tYXQtbGlzdC1iYXNlW2RlbnNlXVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpc3Qtb3B0aW9uW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MTJweH0ubWF0LWxpc3QtYmFzZVtkZW5zZV1bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saXN0LW9wdGlvbltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpbmVbX25nY29udGVudC0lQ09NUCVde3doaXRlLXNwYWNlOm5vd3JhcDtvdmVyZmxvdzpoaWRkZW47dGV4dC1vdmVyZmxvdzplbGxpcHNpcztkaXNwbGF5OmJsb2NrO2JveC1zaXppbmc6Ym9yZGVyLWJveH0ubWF0LWxpc3QtYmFzZVtkZW5zZV1bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saXN0LW9wdGlvbltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpbmVbX25nY29udGVudC0lQ09NUCVdOm50aC1jaGlsZChuKzIpe2ZvbnQtc2l6ZToxMnB4fS5tYXQtbGlzdC1iYXNlW2RlbnNlXVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXN1YmhlYWRlcltfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2ZvbnQtc2l6ZToxMnB4O2ZvbnQtd2VpZ2h0OjUwMH0ubWF0LW9wdGlvbltfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2ZvbnQtc2l6ZToxNnB4fS5tYXQtb3B0Z3JvdXAtbGFiZWxbX25nY29udGVudC0lQ09NUCVde2ZvbnQ6NTAwIDE0cHgvMjRweCBSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7bGV0dGVyLXNwYWNpbmc6bm9ybWFsfS5tYXQtc2ltcGxlLXNuYWNrYmFyW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7Zm9udC1zaXplOjE0cHh9Lm1hdC1zaW1wbGUtc25hY2tiYXItYWN0aW9uW19uZ2NvbnRlbnQtJUNPTVAlXXtsaW5lLWhlaWdodDoxO2ZvbnQtZmFtaWx5OmluaGVyaXQ7Zm9udC1zaXplOmluaGVyaXQ7Zm9udC13ZWlnaHQ6NTAwfS5tYXQtdHJlZVtfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmfS5tYXQtdHJlZS1ub2RlW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1uZXN0ZWQtdHJlZS1ub2RlW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXdlaWdodDo0MDA7Zm9udC1zaXplOjE0cHh9Lm1hdC1yaXBwbGVbX25nY29udGVudC0lQ09NUCVde292ZXJmbG93OmhpZGRlbjtwb3NpdGlvbjpyZWxhdGl2ZX0ubWF0LXJpcHBsZVtfbmdjb250ZW50LSVDT01QJV06bm90KDplbXB0eSl7dHJhbnNmb3JtOnRyYW5zbGF0ZVooMCl9Lm1hdC1yaXBwbGUubWF0LXJpcHBsZS11bmJvdW5kZWRbX25nY29udGVudC0lQ09NUCVde292ZXJmbG93OnZpc2libGV9Lm1hdC1yaXBwbGUtZWxlbWVudFtfbmdjb250ZW50LSVDT01QJV17cG9zaXRpb246YWJzb2x1dGU7Ym9yZGVyLXJhZGl1czo1MCU7cG9pbnRlci1ldmVudHM6bm9uZTt0cmFuc2l0aW9uOm9wYWNpdHksdHJhbnNmb3JtIDBtcyBjdWJpYy1iZXppZXIoMCwgMCwgMC4yLCAxKTt0cmFuc2Zvcm06c2NhbGUoMCl9LmNkay1oaWdoLWNvbnRyYXN0LWFjdGl2ZVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXJpcHBsZS1lbGVtZW50W19uZ2NvbnRlbnQtJUNPTVAlXXtkaXNwbGF5Om5vbmV9LmNkay12aXN1YWxseS1oaWRkZW5bX25nY29udGVudC0lQ09NUCVde2JvcmRlcjowO2NsaXA6cmVjdCgwIDAgMCAwKTtoZWlnaHQ6MXB4O21hcmdpbjotMXB4O292ZXJmbG93OmhpZGRlbjtwYWRkaW5nOjA7cG9zaXRpb246YWJzb2x1dGU7d2lkdGg6MXB4O291dGxpbmU6MDstd2Via2l0LWFwcGVhcmFuY2U6bm9uZTstbW96LWFwcGVhcmFuY2U6bm9uZX0uY2RrLW92ZXJsYXktY29udGFpbmVyW19uZ2NvbnRlbnQtJUNPTVAlXSwgLmNkay1nbG9iYWwtb3ZlcmxheS13cmFwcGVyW19uZ2NvbnRlbnQtJUNPTVAlXXtwb2ludGVyLWV2ZW50czpub25lO3RvcDowO2xlZnQ6MDtoZWlnaHQ6MTAwJTt3aWR0aDoxMDAlfS5jZGstb3ZlcmxheS1jb250YWluZXJbX25nY29udGVudC0lQ09NUCVde3Bvc2l0aW9uOmZpeGVkO3otaW5kZXg6MTAwMH0uY2RrLW92ZXJsYXktY29udGFpbmVyW19uZ2NvbnRlbnQtJUNPTVAlXTplbXB0eXtkaXNwbGF5Om5vbmV9LmNkay1nbG9iYWwtb3ZlcmxheS13cmFwcGVyW19uZ2NvbnRlbnQtJUNPTVAlXXtkaXNwbGF5OmZsZXg7cG9zaXRpb246YWJzb2x1dGU7ei1pbmRleDoxMDAwfS5jZGstb3ZlcmxheS1wYW5lW19uZ2NvbnRlbnQtJUNPTVAlXXtwb3NpdGlvbjphYnNvbHV0ZTtwb2ludGVyLWV2ZW50czphdXRvO2JveC1zaXppbmc6Ym9yZGVyLWJveDt6LWluZGV4OjEwMDA7ZGlzcGxheTpmbGV4O21heC13aWR0aDoxMDAlO21heC1oZWlnaHQ6MTAwJX0uY2RrLW92ZXJsYXktYmFja2Ryb3BbX25nY29udGVudC0lQ09NUCVde3Bvc2l0aW9uOmFic29sdXRlO3RvcDowO2JvdHRvbTowO2xlZnQ6MDtyaWdodDowO3otaW5kZXg6MTAwMDtwb2ludGVyLWV2ZW50czphdXRvOy13ZWJraXQtdGFwLWhpZ2hsaWdodC1jb2xvcjp0cmFuc3BhcmVudDt0cmFuc2l0aW9uOm9wYWNpdHkgNDAwbXMgY3ViaWMtYmV6aWVyKDAuMjUsIDAuOCwgMC4yNSwgMSk7b3BhY2l0eTowfS5jZGstb3ZlcmxheS1iYWNrZHJvcC5jZGstb3ZlcmxheS1iYWNrZHJvcC1zaG93aW5nW19uZ2NvbnRlbnQtJUNPTVAlXXtvcGFjaXR5OjF9QG1lZGlhIHNjcmVlbiBhbmQgKC1tcy1oaWdoLWNvbnRyYXN0OiBhY3RpdmUpey5jZGstb3ZlcmxheS1iYWNrZHJvcC5jZGstb3ZlcmxheS1iYWNrZHJvcC1zaG93aW5nW19uZ2NvbnRlbnQtJUNPTVAlXXtvcGFjaXR5Oi42fX0uY2RrLW92ZXJsYXktZGFyay1iYWNrZHJvcFtfbmdjb250ZW50LSVDT01QJV17YmFja2dyb3VuZDpyZ2JhKDAsMCwwLC4zMil9LmNkay1vdmVybGF5LXRyYW5zcGFyZW50LWJhY2tkcm9wW19uZ2NvbnRlbnQtJUNPTVAlXSwgLmNkay1vdmVybGF5LXRyYW5zcGFyZW50LWJhY2tkcm9wLmNkay1vdmVybGF5LWJhY2tkcm9wLXNob3dpbmdbX25nY29udGVudC0lQ09NUCVde29wYWNpdHk6MH0uY2RrLW92ZXJsYXktY29ubmVjdGVkLXBvc2l0aW9uLWJvdW5kaW5nLWJveFtfbmdjb250ZW50LSVDT01QJV17cG9zaXRpb246YWJzb2x1dGU7ei1pbmRleDoxMDAwO2Rpc3BsYXk6ZmxleDtmbGV4LWRpcmVjdGlvbjpjb2x1bW47bWluLXdpZHRoOjFweDttaW4taGVpZ2h0OjFweH0uY2RrLWdsb2JhbC1zY3JvbGxibG9ja1tfbmdjb250ZW50LSVDT01QJV17cG9zaXRpb246Zml4ZWQ7d2lkdGg6MTAwJTtvdmVyZmxvdy15OnNjcm9sbH1Aa2V5ZnJhbWVzIGNkay10ZXh0LWZpZWxkLWF1dG9maWxsLXN0YXJ0e31Aa2V5ZnJhbWVzIGNkay10ZXh0LWZpZWxkLWF1dG9maWxsLWVuZHt9LmNkay10ZXh0LWZpZWxkLWF1dG9maWxsLW1vbml0b3JlZFtfbmdjb250ZW50LSVDT01QJV06LXdlYmtpdC1hdXRvZmlsbHthbmltYXRpb246Y2RrLXRleHQtZmllbGQtYXV0b2ZpbGwtc3RhcnQgMHMgMW1zfS5jZGstdGV4dC1maWVsZC1hdXRvZmlsbC1tb25pdG9yZWRbX25nY29udGVudC0lQ09NUCVdOm5vdCg6LXdlYmtpdC1hdXRvZmlsbCl7YW5pbWF0aW9uOmNkay10ZXh0LWZpZWxkLWF1dG9maWxsLWVuZCAwcyAxbXN9dGV4dGFyZWEuY2RrLXRleHRhcmVhLWF1dG9zaXplW19uZ2NvbnRlbnQtJUNPTVAlXXtyZXNpemU6bm9uZX10ZXh0YXJlYS5jZGstdGV4dGFyZWEtYXV0b3NpemUtbWVhc3VyaW5nW19uZ2NvbnRlbnQtJUNPTVAlXXtwYWRkaW5nOjJweCAwICFpbXBvcnRhbnQ7Ym94LXNpemluZzpjb250ZW50LWJveCAhaW1wb3J0YW50O2hlaWdodDphdXRvICFpbXBvcnRhbnQ7b3ZlcmZsb3c6aGlkZGVuICFpbXBvcnRhbnR9dGV4dGFyZWEuY2RrLXRleHRhcmVhLWF1dG9zaXplLW1lYXN1cmluZy1maXJlZm94W19uZ2NvbnRlbnQtJUNPTVAlXXtwYWRkaW5nOjJweCAwICFpbXBvcnRhbnQ7Ym94LXNpemluZzpjb250ZW50LWJveCAhaW1wb3J0YW50O2hlaWdodDowICFpbXBvcnRhbnR9Lm1hdC1mb2N1cy1pbmRpY2F0b3JbX25nY29udGVudC0lQ09NUCVde3Bvc2l0aW9uOnJlbGF0aXZlfS5tYXQtbWRjLWZvY3VzLWluZGljYXRvcltfbmdjb250ZW50LSVDT01QJV17cG9zaXRpb246cmVsYXRpdmV9Lm1hdC1yaXBwbGUtZWxlbWVudFtfbmdjb250ZW50LSVDT01QJV17YmFja2dyb3VuZC1jb2xvcjpyZ2JhKDAsMCwwLC4xKX0ubWF0LW9wdGlvbltfbmdjb250ZW50LSVDT01QJV17Y29sb3I6IzIxMjEyMX0ubWF0LW9wdGlvbltfbmdjb250ZW50LSVDT01QJV06aG92ZXI6bm90KC5tYXQtb3B0aW9uLWRpc2FibGVkKSwgLm1hdC1vcHRpb25bX25nY29udGVudC0lQ09NUCVdOmZvY3VzOm5vdCgubWF0LW9wdGlvbi1kaXNhYmxlZCl7YmFja2dyb3VuZDpyZ2JhKDAsMCwwLC4wNCl9Lm1hdC1vcHRpb24ubWF0LXNlbGVjdGVkW19uZ2NvbnRlbnQtJUNPTVAlXTpub3QoLm1hdC1vcHRpb24tbXVsdGlwbGUpOm5vdCgubWF0LW9wdGlvbi1kaXNhYmxlZCl7YmFja2dyb3VuZDpyZ2JhKDAsMCwwLC4wNCl9Lm1hdC1vcHRpb24ubWF0LWFjdGl2ZVtfbmdjb250ZW50LSVDT01QJV17YmFja2dyb3VuZDpyZ2JhKDAsMCwwLC4wNCk7Y29sb3I6IzIxMjEyMX0ubWF0LW9wdGlvbi5tYXQtb3B0aW9uLWRpc2FibGVkW19uZ2NvbnRlbnQtJUNPTVAlXXtjb2xvcjpyZ2JhKDAsMCwwLC4zOCl9Lm1hdC1wcmltYXJ5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtb3B0aW9uLm1hdC1zZWxlY3RlZFtfbmdjb250ZW50LSVDT01QJV06bm90KC5tYXQtb3B0aW9uLWRpc2FibGVkKXtjb2xvcjojZjU3YzAwfS5tYXQtYWNjZW50W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtb3B0aW9uLm1hdC1zZWxlY3RlZFtfbmdjb250ZW50LSVDT01QJV06bm90KC5tYXQtb3B0aW9uLWRpc2FibGVkKXtjb2xvcjojZmY5ODAwfS5tYXQtd2Fybltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LW9wdGlvbi5tYXQtc2VsZWN0ZWRbX25nY29udGVudC0lQ09NUCVdOm5vdCgubWF0LW9wdGlvbi1kaXNhYmxlZCl7Y29sb3I6I2Y0NDMzNn0ubWF0LW9wdGdyb3VwLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXtjb2xvcjojNjE2MTYxfS5tYXQtb3B0Z3JvdXAtZGlzYWJsZWRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1vcHRncm91cC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17Y29sb3I6cmdiYSgwLDAsMCwuMzgpfS5tYXQtcHNldWRvLWNoZWNrYm94W19uZ2NvbnRlbnQtJUNPTVAlXXtjb2xvcjojNjE2MTYxfS5tYXQtcHNldWRvLWNoZWNrYm94W19uZ2NvbnRlbnQtJUNPTVAlXTo6YWZ0ZXJ7Y29sb3I6I2ZhZmFmYX0ubWF0LXBzZXVkby1jaGVja2JveC1kaXNhYmxlZFtfbmdjb250ZW50LSVDT01QJV17Y29sb3I6I2IwYjBiMH0ubWF0LXByaW1hcnlbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1wc2V1ZG8tY2hlY2tib3gtY2hlY2tlZFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtcHJpbWFyeVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXBzZXVkby1jaGVja2JveC1pbmRldGVybWluYXRlW19uZ2NvbnRlbnQtJUNPTVAlXXtiYWNrZ3JvdW5kOiNmNTdjMDB9Lm1hdC1wc2V1ZG8tY2hlY2tib3gtY2hlY2tlZFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtcHNldWRvLWNoZWNrYm94LWluZGV0ZXJtaW5hdGVbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWFjY2VudFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXBzZXVkby1jaGVja2JveC1jaGVja2VkW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1hY2NlbnRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1wc2V1ZG8tY2hlY2tib3gtaW5kZXRlcm1pbmF0ZVtfbmdjb250ZW50LSVDT01QJV17YmFja2dyb3VuZDojZmY5ODAwfS5tYXQtd2Fybltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXBzZXVkby1jaGVja2JveC1jaGVja2VkW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC13YXJuW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtcHNldWRvLWNoZWNrYm94LWluZGV0ZXJtaW5hdGVbX25nY29udGVudC0lQ09NUCVde2JhY2tncm91bmQ6I2Y0NDMzNn0ubWF0LXBzZXVkby1jaGVja2JveC1jaGVja2VkLm1hdC1wc2V1ZG8tY2hlY2tib3gtZGlzYWJsZWRbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXBzZXVkby1jaGVja2JveC1pbmRldGVybWluYXRlLm1hdC1wc2V1ZG8tY2hlY2tib3gtZGlzYWJsZWRbX25nY29udGVudC0lQ09NUCVde2JhY2tncm91bmQ6I2IwYjBiMH0ubWF0LWFwcC1iYWNrZ3JvdW5kW19uZ2NvbnRlbnQtJUNPTVAlXXtiYWNrZ3JvdW5kLWNvbG9yOiNmYWZhZmE7Y29sb3I6IzIxMjEyMX0ubWF0LWVsZXZhdGlvbi16MFtfbmdjb250ZW50LSVDT01QJV17Ym94LXNoYWRvdzowcHggMHB4IDBweCAwcHggcmdiYSgwLCAwLCAwLCAwLjIpLDBweCAwcHggMHB4IDBweCByZ2JhKDAsIDAsIDAsIDAuMTQpLDBweCAwcHggMHB4IDBweCByZ2JhKDAsIDAsIDAsIDAuMTIpfS5tYXQtZWxldmF0aW9uLXoxW19uZ2NvbnRlbnQtJUNPTVAlXXtib3gtc2hhZG93OjBweCAycHggMXB4IC0xcHggcmdiYSgwLCAwLCAwLCAwLjIpLDBweCAxcHggMXB4IDBweCByZ2JhKDAsIDAsIDAsIDAuMTQpLDBweCAxcHggM3B4IDBweCByZ2JhKDAsIDAsIDAsIDAuMTIpfS5tYXQtZWxldmF0aW9uLXoyW19uZ2NvbnRlbnQtJUNPTVAlXXtib3gtc2hhZG93OjBweCAzcHggMXB4IC0ycHggcmdiYSgwLCAwLCAwLCAwLjIpLDBweCAycHggMnB4IDBweCByZ2JhKDAsIDAsIDAsIDAuMTQpLDBweCAxcHggNXB4IDBweCByZ2JhKDAsIDAsIDAsIDAuMTIpfS5tYXQtZWxldmF0aW9uLXozW19uZ2NvbnRlbnQtJUNPTVAlXXtib3gtc2hhZG93OjBweCAzcHggM3B4IC0ycHggcmdiYSgwLCAwLCAwLCAwLjIpLDBweCAzcHggNHB4IDBweCByZ2JhKDAsIDAsIDAsIDAuMTQpLDBweCAxcHggOHB4IDBweCByZ2JhKDAsIDAsIDAsIDAuMTIpfS5tYXQtZWxldmF0aW9uLXo0W19uZ2NvbnRlbnQtJUNPTVAlXXtib3gtc2hhZG93OjBweCAycHggNHB4IC0xcHggcmdiYSgwLCAwLCAwLCAwLjIpLDBweCA0cHggNXB4IDBweCByZ2JhKDAsIDAsIDAsIDAuMTQpLDBweCAxcHggMTBweCAwcHggcmdiYSgwLCAwLCAwLCAwLjEyKX0ubWF0LWVsZXZhdGlvbi16NVtfbmdjb250ZW50LSVDT01QJV17Ym94LXNoYWRvdzowcHggM3B4IDVweCAtMXB4IHJnYmEoMCwgMCwgMCwgMC4yKSwwcHggNXB4IDhweCAwcHggcmdiYSgwLCAwLCAwLCAwLjE0KSwwcHggMXB4IDE0cHggMHB4IHJnYmEoMCwgMCwgMCwgMC4xMil9Lm1hdC1lbGV2YXRpb24tejZbX25nY29udGVudC0lQ09NUCVde2JveC1zaGFkb3c6MHB4IDNweCA1cHggLTFweCByZ2JhKDAsIDAsIDAsIDAuMiksMHB4IDZweCAxMHB4IDBweCByZ2JhKDAsIDAsIDAsIDAuMTQpLDBweCAxcHggMThweCAwcHggcmdiYSgwLCAwLCAwLCAwLjEyKX0ubWF0LWVsZXZhdGlvbi16N1tfbmdjb250ZW50LSVDT01QJV17Ym94LXNoYWRvdzowcHggNHB4IDVweCAtMnB4IHJnYmEoMCwgMCwgMCwgMC4yKSwwcHggN3B4IDEwcHggMXB4IHJnYmEoMCwgMCwgMCwgMC4xNCksMHB4IDJweCAxNnB4IDFweCByZ2JhKDAsIDAsIDAsIDAuMTIpfS5tYXQtZWxldmF0aW9uLXo4W19uZ2NvbnRlbnQtJUNPTVAlXXtib3gtc2hhZG93OjBweCA1cHggNXB4IC0zcHggcmdiYSgwLCAwLCAwLCAwLjIpLDBweCA4cHggMTBweCAxcHggcmdiYSgwLCAwLCAwLCAwLjE0KSwwcHggM3B4IDE0cHggMnB4IHJnYmEoMCwgMCwgMCwgMC4xMil9Lm1hdC1lbGV2YXRpb24tejlbX25nY29udGVudC0lQ09NUCVde2JveC1zaGFkb3c6MHB4IDVweCA2cHggLTNweCByZ2JhKDAsIDAsIDAsIDAuMiksMHB4IDlweCAxMnB4IDFweCByZ2JhKDAsIDAsIDAsIDAuMTQpLDBweCAzcHggMTZweCAycHggcmdiYSgwLCAwLCAwLCAwLjEyKX0ubWF0LWVsZXZhdGlvbi16MTBbX25nY29udGVudC0lQ09NUCVde2JveC1zaGFkb3c6MHB4IDZweCA2cHggLTNweCByZ2JhKDAsIDAsIDAsIDAuMiksMHB4IDEwcHggMTRweCAxcHggcmdiYSgwLCAwLCAwLCAwLjE0KSwwcHggNHB4IDE4cHggM3B4IHJnYmEoMCwgMCwgMCwgMC4xMil9Lm1hdC1lbGV2YXRpb24tejExW19uZ2NvbnRlbnQtJUNPTVAlXXtib3gtc2hhZG93OjBweCA2cHggN3B4IC00cHggcmdiYSgwLCAwLCAwLCAwLjIpLDBweCAxMXB4IDE1cHggMXB4IHJnYmEoMCwgMCwgMCwgMC4xNCksMHB4IDRweCAyMHB4IDNweCByZ2JhKDAsIDAsIDAsIDAuMTIpfS5tYXQtZWxldmF0aW9uLXoxMltfbmdjb250ZW50LSVDT01QJV17Ym94LXNoYWRvdzowcHggN3B4IDhweCAtNHB4IHJnYmEoMCwgMCwgMCwgMC4yKSwwcHggMTJweCAxN3B4IDJweCByZ2JhKDAsIDAsIDAsIDAuMTQpLDBweCA1cHggMjJweCA0cHggcmdiYSgwLCAwLCAwLCAwLjEyKX0ubWF0LWVsZXZhdGlvbi16MTNbX25nY29udGVudC0lQ09NUCVde2JveC1zaGFkb3c6MHB4IDdweCA4cHggLTRweCByZ2JhKDAsIDAsIDAsIDAuMiksMHB4IDEzcHggMTlweCAycHggcmdiYSgwLCAwLCAwLCAwLjE0KSwwcHggNXB4IDI0cHggNHB4IHJnYmEoMCwgMCwgMCwgMC4xMil9Lm1hdC1lbGV2YXRpb24tejE0W19uZ2NvbnRlbnQtJUNPTVAlXXtib3gtc2hhZG93OjBweCA3cHggOXB4IC00cHggcmdiYSgwLCAwLCAwLCAwLjIpLDBweCAxNHB4IDIxcHggMnB4IHJnYmEoMCwgMCwgMCwgMC4xNCksMHB4IDVweCAyNnB4IDRweCByZ2JhKDAsIDAsIDAsIDAuMTIpfS5tYXQtZWxldmF0aW9uLXoxNVtfbmdjb250ZW50LSVDT01QJV17Ym94LXNoYWRvdzowcHggOHB4IDlweCAtNXB4IHJnYmEoMCwgMCwgMCwgMC4yKSwwcHggMTVweCAyMnB4IDJweCByZ2JhKDAsIDAsIDAsIDAuMTQpLDBweCA2cHggMjhweCA1cHggcmdiYSgwLCAwLCAwLCAwLjEyKX0ubWF0LWVsZXZhdGlvbi16MTZbX25nY29udGVudC0lQ09NUCVde2JveC1zaGFkb3c6MHB4IDhweCAxMHB4IC01cHggcmdiYSgwLCAwLCAwLCAwLjIpLDBweCAxNnB4IDI0cHggMnB4IHJnYmEoMCwgMCwgMCwgMC4xNCksMHB4IDZweCAzMHB4IDVweCByZ2JhKDAsIDAsIDAsIDAuMTIpfS5tYXQtZWxldmF0aW9uLXoxN1tfbmdjb250ZW50LSVDT01QJV17Ym94LXNoYWRvdzowcHggOHB4IDExcHggLTVweCByZ2JhKDAsIDAsIDAsIDAuMiksMHB4IDE3cHggMjZweCAycHggcmdiYSgwLCAwLCAwLCAwLjE0KSwwcHggNnB4IDMycHggNXB4IHJnYmEoMCwgMCwgMCwgMC4xMil9Lm1hdC1lbGV2YXRpb24tejE4W19uZ2NvbnRlbnQtJUNPTVAlXXtib3gtc2hhZG93OjBweCA5cHggMTFweCAtNXB4IHJnYmEoMCwgMCwgMCwgMC4yKSwwcHggMThweCAyOHB4IDJweCByZ2JhKDAsIDAsIDAsIDAuMTQpLDBweCA3cHggMzRweCA2cHggcmdiYSgwLCAwLCAwLCAwLjEyKX0ubWF0LWVsZXZhdGlvbi16MTlbX25nY29udGVudC0lQ09NUCVde2JveC1zaGFkb3c6MHB4IDlweCAxMnB4IC02cHggcmdiYSgwLCAwLCAwLCAwLjIpLDBweCAxOXB4IDI5cHggMnB4IHJnYmEoMCwgMCwgMCwgMC4xNCksMHB4IDdweCAzNnB4IDZweCByZ2JhKDAsIDAsIDAsIDAuMTIpfS5tYXQtZWxldmF0aW9uLXoyMFtfbmdjb250ZW50LSVDT01QJV17Ym94LXNoYWRvdzowcHggMTBweCAxM3B4IC02cHggcmdiYSgwLCAwLCAwLCAwLjIpLDBweCAyMHB4IDMxcHggM3B4IHJnYmEoMCwgMCwgMCwgMC4xNCksMHB4IDhweCAzOHB4IDdweCByZ2JhKDAsIDAsIDAsIDAuMTIpfS5tYXQtZWxldmF0aW9uLXoyMVtfbmdjb250ZW50LSVDT01QJV17Ym94LXNoYWRvdzowcHggMTBweCAxM3B4IC02cHggcmdiYSgwLCAwLCAwLCAwLjIpLDBweCAyMXB4IDMzcHggM3B4IHJnYmEoMCwgMCwgMCwgMC4xNCksMHB4IDhweCA0MHB4IDdweCByZ2JhKDAsIDAsIDAsIDAuMTIpfS5tYXQtZWxldmF0aW9uLXoyMltfbmdjb250ZW50LSVDT01QJV17Ym94LXNoYWRvdzowcHggMTBweCAxNHB4IC02cHggcmdiYSgwLCAwLCAwLCAwLjIpLDBweCAyMnB4IDM1cHggM3B4IHJnYmEoMCwgMCwgMCwgMC4xNCksMHB4IDhweCA0MnB4IDdweCByZ2JhKDAsIDAsIDAsIDAuMTIpfS5tYXQtZWxldmF0aW9uLXoyM1tfbmdjb250ZW50LSVDT01QJV17Ym94LXNoYWRvdzowcHggMTFweCAxNHB4IC03cHggcmdiYSgwLCAwLCAwLCAwLjIpLDBweCAyM3B4IDM2cHggM3B4IHJnYmEoMCwgMCwgMCwgMC4xNCksMHB4IDlweCA0NHB4IDhweCByZ2JhKDAsIDAsIDAsIDAuMTIpfS5tYXQtZWxldmF0aW9uLXoyNFtfbmdjb250ZW50LSVDT01QJV17Ym94LXNoYWRvdzowcHggMTFweCAxNXB4IC03cHggcmdiYSgwLCAwLCAwLCAwLjIpLDBweCAyNHB4IDM4cHggM3B4IHJnYmEoMCwgMCwgMCwgMC4xNCksMHB4IDlweCA0NnB4IDhweCByZ2JhKDAsIDAsIDAsIDAuMTIpfS5tYXQtdGhlbWUtbG9hZGVkLW1hcmtlcltfbmdjb250ZW50LSVDT01QJV17ZGlzcGxheTpub25lfS5tYXQtYXV0b2NvbXBsZXRlLXBhbmVsW19uZ2NvbnRlbnQtJUNPTVAlXXtiYWNrZ3JvdW5kOiNmZmY7Y29sb3I6IzIxMjEyMX0ubWF0LWF1dG9jb21wbGV0ZS1wYW5lbFtfbmdjb250ZW50LSVDT01QJV06bm90KFtjbGFzcyo9bWF0LWVsZXZhdGlvbi16XSl7Ym94LXNoYWRvdzowcHggMnB4IDRweCAtMXB4IHJnYmEoMCwgMCwgMCwgMC4yKSwwcHggNHB4IDVweCAwcHggcmdiYSgwLCAwLCAwLCAwLjE0KSwwcHggMXB4IDEwcHggMHB4IHJnYmEoMCwgMCwgMCwgMC4xMil9Lm1hdC1hdXRvY29tcGxldGUtcGFuZWxbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1vcHRpb24ubWF0LXNlbGVjdGVkW19uZ2NvbnRlbnQtJUNPTVAlXTpub3QoLm1hdC1hY3RpdmUpOm5vdCg6aG92ZXIpe2JhY2tncm91bmQ6I2ZmZn0ubWF0LWF1dG9jb21wbGV0ZS1wYW5lbFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LW9wdGlvbi5tYXQtc2VsZWN0ZWRbX25nY29udGVudC0lQ09NUCVdOm5vdCgubWF0LWFjdGl2ZSk6bm90KDpob3Zlcik6bm90KC5tYXQtb3B0aW9uLWRpc2FibGVkKXtjb2xvcjojMjEyMTIxfS5tYXQtYmFkZ2UtY29udGVudFtfbmdjb250ZW50LSVDT01QJV17Y29sb3I6I2ZmZjtiYWNrZ3JvdW5kOiNmNTdjMDB9LmNkay1oaWdoLWNvbnRyYXN0LWFjdGl2ZVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWJhZGdlLWNvbnRlbnRbX25nY29udGVudC0lQ09NUCVde291dGxpbmU6c29saWQgMXB4O2JvcmRlci1yYWRpdXM6MH0ubWF0LWJhZGdlLWFjY2VudFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWJhZGdlLWNvbnRlbnRbX25nY29udGVudC0lQ09NUCVde2JhY2tncm91bmQ6I2ZmOTgwMDtjb2xvcjojZmZmfS5tYXQtYmFkZ2Utd2Fybltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWJhZGdlLWNvbnRlbnRbX25nY29udGVudC0lQ09NUCVde2NvbG9yOiNmZmY7YmFja2dyb3VuZDojZjQ0MzM2fS5tYXQtYmFkZ2VbX25nY29udGVudC0lQ09NUCVde3Bvc2l0aW9uOnJlbGF0aXZlfS5tYXQtYmFkZ2UtaGlkZGVuW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtYmFkZ2UtY29udGVudFtfbmdjb250ZW50LSVDT01QJV17ZGlzcGxheTpub25lfS5tYXQtYmFkZ2UtZGlzYWJsZWRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1iYWRnZS1jb250ZW50W19uZ2NvbnRlbnQtJUNPTVAlXXtiYWNrZ3JvdW5kOiNiOWI5Yjk7Y29sb3I6Izc1NzU3NX0ubWF0LWJhZGdlLWNvbnRlbnRbX25nY29udGVudC0lQ09NUCVde3Bvc2l0aW9uOmFic29sdXRlO3RleHQtYWxpZ246Y2VudGVyO2Rpc3BsYXk6aW5saW5lLWJsb2NrO2JvcmRlci1yYWRpdXM6NTAlO3RyYW5zaXRpb246dHJhbnNmb3JtIDIwMG1zIGVhc2UtaW4tb3V0O3RyYW5zZm9ybTpzY2FsZSgwLjYpO292ZXJmbG93OmhpZGRlbjt3aGl0ZS1zcGFjZTpub3dyYXA7dGV4dC1vdmVyZmxvdzplbGxpcHNpcztwb2ludGVyLWV2ZW50czpub25lfS5uZy1hbmltYXRlLWRpc2FibGVkW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtYmFkZ2UtY29udGVudFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtYmFkZ2UtY29udGVudC5fbWF0LWFuaW1hdGlvbi1ub29wYWJsZVtfbmdjb250ZW50LSVDT01QJV17dHJhbnNpdGlvbjpub25lfS5tYXQtYmFkZ2UtY29udGVudC5tYXQtYmFkZ2UtYWN0aXZlW19uZ2NvbnRlbnQtJUNPTVAlXXt0cmFuc2Zvcm06bm9uZX0ubWF0LWJhZGdlLXNtYWxsW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtYmFkZ2UtY29udGVudFtfbmdjb250ZW50LSVDT01QJV17d2lkdGg6MTZweDtoZWlnaHQ6MTZweDtsaW5lLWhlaWdodDoxNnB4fS5tYXQtYmFkZ2Utc21hbGwubWF0LWJhZGdlLWFib3ZlW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtYmFkZ2UtY29udGVudFtfbmdjb250ZW50LSVDT01QJV17dG9wOi04cHh9Lm1hdC1iYWRnZS1zbWFsbC5tYXQtYmFkZ2UtYmVsb3dbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1iYWRnZS1jb250ZW50W19uZ2NvbnRlbnQtJUNPTVAlXXtib3R0b206LThweH0ubWF0LWJhZGdlLXNtYWxsLm1hdC1iYWRnZS1iZWZvcmVbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1iYWRnZS1jb250ZW50W19uZ2NvbnRlbnQtJUNPTVAlXXtsZWZ0Oi0xNnB4fVtkaXI9cnRsXVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWJhZGdlLXNtYWxsLm1hdC1iYWRnZS1iZWZvcmVbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1iYWRnZS1jb250ZW50W19uZ2NvbnRlbnQtJUNPTVAlXXtsZWZ0OmF1dG87cmlnaHQ6LTE2cHh9Lm1hdC1iYWRnZS1zbWFsbC5tYXQtYmFkZ2UtYWZ0ZXJbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1iYWRnZS1jb250ZW50W19uZ2NvbnRlbnQtJUNPTVAlXXtyaWdodDotMTZweH1bZGlyPXJ0bF1bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1iYWRnZS1zbWFsbC5tYXQtYmFkZ2UtYWZ0ZXJbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1iYWRnZS1jb250ZW50W19uZ2NvbnRlbnQtJUNPTVAlXXtyaWdodDphdXRvO2xlZnQ6LTE2cHh9Lm1hdC1iYWRnZS1zbWFsbC5tYXQtYmFkZ2Utb3ZlcmxhcC5tYXQtYmFkZ2UtYmVmb3JlW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtYmFkZ2UtY29udGVudFtfbmdjb250ZW50LSVDT01QJV17bGVmdDotOHB4fVtkaXI9cnRsXVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWJhZGdlLXNtYWxsLm1hdC1iYWRnZS1vdmVybGFwLm1hdC1iYWRnZS1iZWZvcmVbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1iYWRnZS1jb250ZW50W19uZ2NvbnRlbnQtJUNPTVAlXXtsZWZ0OmF1dG87cmlnaHQ6LThweH0ubWF0LWJhZGdlLXNtYWxsLm1hdC1iYWRnZS1vdmVybGFwLm1hdC1iYWRnZS1hZnRlcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWJhZGdlLWNvbnRlbnRbX25nY29udGVudC0lQ09NUCVde3JpZ2h0Oi04cHh9W2Rpcj1ydGxdW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtYmFkZ2Utc21hbGwubWF0LWJhZGdlLW92ZXJsYXAubWF0LWJhZGdlLWFmdGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtYmFkZ2UtY29udGVudFtfbmdjb250ZW50LSVDT01QJV17cmlnaHQ6YXV0bztsZWZ0Oi04cHh9Lm1hdC1iYWRnZS1tZWRpdW1bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1iYWRnZS1jb250ZW50W19uZ2NvbnRlbnQtJUNPTVAlXXt3aWR0aDoyMnB4O2hlaWdodDoyMnB4O2xpbmUtaGVpZ2h0OjIycHh9Lm1hdC1iYWRnZS1tZWRpdW0ubWF0LWJhZGdlLWFib3ZlW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtYmFkZ2UtY29udGVudFtfbmdjb250ZW50LSVDT01QJV17dG9wOi0xMXB4fS5tYXQtYmFkZ2UtbWVkaXVtLm1hdC1iYWRnZS1iZWxvd1tfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWJhZGdlLWNvbnRlbnRbX25nY29udGVudC0lQ09NUCVde2JvdHRvbTotMTFweH0ubWF0LWJhZGdlLW1lZGl1bS5tYXQtYmFkZ2UtYmVmb3JlW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtYmFkZ2UtY29udGVudFtfbmdjb250ZW50LSVDT01QJV17bGVmdDotMjJweH1bZGlyPXJ0bF1bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1iYWRnZS1tZWRpdW0ubWF0LWJhZGdlLWJlZm9yZVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWJhZGdlLWNvbnRlbnRbX25nY29udGVudC0lQ09NUCVde2xlZnQ6YXV0bztyaWdodDotMjJweH0ubWF0LWJhZGdlLW1lZGl1bS5tYXQtYmFkZ2UtYWZ0ZXJbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1iYWRnZS1jb250ZW50W19uZ2NvbnRlbnQtJUNPTVAlXXtyaWdodDotMjJweH1bZGlyPXJ0bF1bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1iYWRnZS1tZWRpdW0ubWF0LWJhZGdlLWFmdGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtYmFkZ2UtY29udGVudFtfbmdjb250ZW50LSVDT01QJV17cmlnaHQ6YXV0bztsZWZ0Oi0yMnB4fS5tYXQtYmFkZ2UtbWVkaXVtLm1hdC1iYWRnZS1vdmVybGFwLm1hdC1iYWRnZS1iZWZvcmVbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1iYWRnZS1jb250ZW50W19uZ2NvbnRlbnQtJUNPTVAlXXtsZWZ0Oi0xMXB4fVtkaXI9cnRsXVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWJhZGdlLW1lZGl1bS5tYXQtYmFkZ2Utb3ZlcmxhcC5tYXQtYmFkZ2UtYmVmb3JlW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtYmFkZ2UtY29udGVudFtfbmdjb250ZW50LSVDT01QJV17bGVmdDphdXRvO3JpZ2h0Oi0xMXB4fS5tYXQtYmFkZ2UtbWVkaXVtLm1hdC1iYWRnZS1vdmVybGFwLm1hdC1iYWRnZS1hZnRlcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWJhZGdlLWNvbnRlbnRbX25nY29udGVudC0lQ09NUCVde3JpZ2h0Oi0xMXB4fVtkaXI9cnRsXVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWJhZGdlLW1lZGl1bS5tYXQtYmFkZ2Utb3ZlcmxhcC5tYXQtYmFkZ2UtYWZ0ZXJbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1iYWRnZS1jb250ZW50W19uZ2NvbnRlbnQtJUNPTVAlXXtyaWdodDphdXRvO2xlZnQ6LTExcHh9Lm1hdC1iYWRnZS1sYXJnZVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWJhZGdlLWNvbnRlbnRbX25nY29udGVudC0lQ09NUCVde3dpZHRoOjI4cHg7aGVpZ2h0OjI4cHg7bGluZS1oZWlnaHQ6MjhweH0ubWF0LWJhZGdlLWxhcmdlLm1hdC1iYWRnZS1hYm92ZVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWJhZGdlLWNvbnRlbnRbX25nY29udGVudC0lQ09NUCVde3RvcDotMTRweH0ubWF0LWJhZGdlLWxhcmdlLm1hdC1iYWRnZS1iZWxvd1tfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWJhZGdlLWNvbnRlbnRbX25nY29udGVudC0lQ09NUCVde2JvdHRvbTotMTRweH0ubWF0LWJhZGdlLWxhcmdlLm1hdC1iYWRnZS1iZWZvcmVbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1iYWRnZS1jb250ZW50W19uZ2NvbnRlbnQtJUNPTVAlXXtsZWZ0Oi0yOHB4fVtkaXI9cnRsXVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWJhZGdlLWxhcmdlLm1hdC1iYWRnZS1iZWZvcmVbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1iYWRnZS1jb250ZW50W19uZ2NvbnRlbnQtJUNPTVAlXXtsZWZ0OmF1dG87cmlnaHQ6LTI4cHh9Lm1hdC1iYWRnZS1sYXJnZS5tYXQtYmFkZ2UtYWZ0ZXJbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1iYWRnZS1jb250ZW50W19uZ2NvbnRlbnQtJUNPTVAlXXtyaWdodDotMjhweH1bZGlyPXJ0bF1bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1iYWRnZS1sYXJnZS5tYXQtYmFkZ2UtYWZ0ZXJbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1iYWRnZS1jb250ZW50W19uZ2NvbnRlbnQtJUNPTVAlXXtyaWdodDphdXRvO2xlZnQ6LTI4cHh9Lm1hdC1iYWRnZS1sYXJnZS5tYXQtYmFkZ2Utb3ZlcmxhcC5tYXQtYmFkZ2UtYmVmb3JlW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtYmFkZ2UtY29udGVudFtfbmdjb250ZW50LSVDT01QJV17bGVmdDotMTRweH1bZGlyPXJ0bF1bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1iYWRnZS1sYXJnZS5tYXQtYmFkZ2Utb3ZlcmxhcC5tYXQtYmFkZ2UtYmVmb3JlW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtYmFkZ2UtY29udGVudFtfbmdjb250ZW50LSVDT01QJV17bGVmdDphdXRvO3JpZ2h0Oi0xNHB4fS5tYXQtYmFkZ2UtbGFyZ2UubWF0LWJhZGdlLW92ZXJsYXAubWF0LWJhZGdlLWFmdGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtYmFkZ2UtY29udGVudFtfbmdjb250ZW50LSVDT01QJV17cmlnaHQ6LTE0cHh9W2Rpcj1ydGxdW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtYmFkZ2UtbGFyZ2UubWF0LWJhZGdlLW92ZXJsYXAubWF0LWJhZGdlLWFmdGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtYmFkZ2UtY29udGVudFtfbmdjb250ZW50LSVDT01QJV17cmlnaHQ6YXV0bztsZWZ0Oi0xNHB4fS5tYXQtYm90dG9tLXNoZWV0LWNvbnRhaW5lcltfbmdjb250ZW50LSVDT01QJV17Ym94LXNoYWRvdzowcHggOHB4IDEwcHggLTVweCByZ2JhKDAsIDAsIDAsIDAuMiksMHB4IDE2cHggMjRweCAycHggcmdiYSgwLCAwLCAwLCAwLjE0KSwwcHggNnB4IDMwcHggNXB4IHJnYmEoMCwgMCwgMCwgMC4xMik7YmFja2dyb3VuZDojZmZmO2NvbG9yOiMyMTIxMjF9Lm1hdC1idXR0b25bX25nY29udGVudC0lQ09NUCVdLCAubWF0LWljb24tYnV0dG9uW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1zdHJva2VkLWJ1dHRvbltfbmdjb250ZW50LSVDT01QJV17Y29sb3I6aW5oZXJpdDtiYWNrZ3JvdW5kOnRyYW5zcGFyZW50fS5tYXQtYnV0dG9uLm1hdC1wcmltYXJ5W19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1pY29uLWJ1dHRvbi5tYXQtcHJpbWFyeVtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtc3Ryb2tlZC1idXR0b24ubWF0LXByaW1hcnlbX25nY29udGVudC0lQ09NUCVde2NvbG9yOiNmNTdjMDB9Lm1hdC1idXR0b24ubWF0LWFjY2VudFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtaWNvbi1idXR0b24ubWF0LWFjY2VudFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtc3Ryb2tlZC1idXR0b24ubWF0LWFjY2VudFtfbmdjb250ZW50LSVDT01QJV17Y29sb3I6I2ZmOTgwMH0ubWF0LWJ1dHRvbi5tYXQtd2Fybltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtaWNvbi1idXR0b24ubWF0LXdhcm5bX25nY29udGVudC0lQ09NUCVdLCAubWF0LXN0cm9rZWQtYnV0dG9uLm1hdC13YXJuW19uZ2NvbnRlbnQtJUNPTVAlXXtjb2xvcjojZjQ0MzM2fS5tYXQtYnV0dG9uLm1hdC1wcmltYXJ5Lm1hdC1idXR0b24tZGlzYWJsZWRbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWJ1dHRvbi5tYXQtYWNjZW50Lm1hdC1idXR0b24tZGlzYWJsZWRbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWJ1dHRvbi5tYXQtd2Fybi5tYXQtYnV0dG9uLWRpc2FibGVkW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1idXR0b24ubWF0LWJ1dHRvbi1kaXNhYmxlZC5tYXQtYnV0dG9uLWRpc2FibGVkW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1pY29uLWJ1dHRvbi5tYXQtcHJpbWFyeS5tYXQtYnV0dG9uLWRpc2FibGVkW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1pY29uLWJ1dHRvbi5tYXQtYWNjZW50Lm1hdC1idXR0b24tZGlzYWJsZWRbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWljb24tYnV0dG9uLm1hdC13YXJuLm1hdC1idXR0b24tZGlzYWJsZWRbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWljb24tYnV0dG9uLm1hdC1idXR0b24tZGlzYWJsZWQubWF0LWJ1dHRvbi1kaXNhYmxlZFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtc3Ryb2tlZC1idXR0b24ubWF0LXByaW1hcnkubWF0LWJ1dHRvbi1kaXNhYmxlZFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtc3Ryb2tlZC1idXR0b24ubWF0LWFjY2VudC5tYXQtYnV0dG9uLWRpc2FibGVkW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1zdHJva2VkLWJ1dHRvbi5tYXQtd2Fybi5tYXQtYnV0dG9uLWRpc2FibGVkW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1zdHJva2VkLWJ1dHRvbi5tYXQtYnV0dG9uLWRpc2FibGVkLm1hdC1idXR0b24tZGlzYWJsZWRbX25nY29udGVudC0lQ09NUCVde2NvbG9yOnJnYmEoMCwwLDAsLjI2KX0ubWF0LWJ1dHRvbi5tYXQtcHJpbWFyeVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWJ1dHRvbi1mb2N1cy1vdmVybGF5W19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1pY29uLWJ1dHRvbi5tYXQtcHJpbWFyeVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWJ1dHRvbi1mb2N1cy1vdmVybGF5W19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1zdHJva2VkLWJ1dHRvbi5tYXQtcHJpbWFyeVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWJ1dHRvbi1mb2N1cy1vdmVybGF5W19uZ2NvbnRlbnQtJUNPTVAlXXtiYWNrZ3JvdW5kLWNvbG9yOiNmNTdjMDB9Lm1hdC1idXR0b24ubWF0LWFjY2VudFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWJ1dHRvbi1mb2N1cy1vdmVybGF5W19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1pY29uLWJ1dHRvbi5tYXQtYWNjZW50W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtYnV0dG9uLWZvY3VzLW92ZXJsYXlbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXN0cm9rZWQtYnV0dG9uLm1hdC1hY2NlbnRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1idXR0b24tZm9jdXMtb3ZlcmxheVtfbmdjb250ZW50LSVDT01QJV17YmFja2dyb3VuZC1jb2xvcjojZmY5ODAwfS5tYXQtYnV0dG9uLm1hdC13YXJuW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtYnV0dG9uLWZvY3VzLW92ZXJsYXlbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWljb24tYnV0dG9uLm1hdC13YXJuW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtYnV0dG9uLWZvY3VzLW92ZXJsYXlbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXN0cm9rZWQtYnV0dG9uLm1hdC13YXJuW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtYnV0dG9uLWZvY3VzLW92ZXJsYXlbX25nY29udGVudC0lQ09NUCVde2JhY2tncm91bmQtY29sb3I6I2Y0NDMzNn0ubWF0LWJ1dHRvbi5tYXQtYnV0dG9uLWRpc2FibGVkW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtYnV0dG9uLWZvY3VzLW92ZXJsYXlbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWljb24tYnV0dG9uLm1hdC1idXR0b24tZGlzYWJsZWRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1idXR0b24tZm9jdXMtb3ZlcmxheVtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtc3Ryb2tlZC1idXR0b24ubWF0LWJ1dHRvbi1kaXNhYmxlZFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWJ1dHRvbi1mb2N1cy1vdmVybGF5W19uZ2NvbnRlbnQtJUNPTVAlXXtiYWNrZ3JvdW5kLWNvbG9yOnRyYW5zcGFyZW50fS5tYXQtYnV0dG9uW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtcmlwcGxlLWVsZW1lbnRbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWljb24tYnV0dG9uW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtcmlwcGxlLWVsZW1lbnRbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXN0cm9rZWQtYnV0dG9uW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtcmlwcGxlLWVsZW1lbnRbX25nY29udGVudC0lQ09NUCVde29wYWNpdHk6LjE7YmFja2dyb3VuZC1jb2xvcjpjdXJyZW50Q29sb3J9Lm1hdC1idXR0b24tZm9jdXMtb3ZlcmxheVtfbmdjb250ZW50LSVDT01QJV17YmFja2dyb3VuZDojMDAwfS5tYXQtc3Ryb2tlZC1idXR0b25bX25nY29udGVudC0lQ09NUCVdOm5vdCgubWF0LWJ1dHRvbi1kaXNhYmxlZCl7Ym9yZGVyLWNvbG9yOnJnYmEoMCwwLDAsLjEyKX0ubWF0LWZsYXQtYnV0dG9uW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1yYWlzZWQtYnV0dG9uW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1mYWJbX25nY29udGVudC0lQ09NUCVdLCAubWF0LW1pbmktZmFiW19uZ2NvbnRlbnQtJUNPTVAlXXtjb2xvcjojMjEyMTIxO2JhY2tncm91bmQtY29sb3I6I2ZmZn0ubWF0LWZsYXQtYnV0dG9uLm1hdC1wcmltYXJ5W19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1yYWlzZWQtYnV0dG9uLm1hdC1wcmltYXJ5W19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1mYWIubWF0LXByaW1hcnlbX25nY29udGVudC0lQ09NUCVdLCAubWF0LW1pbmktZmFiLm1hdC1wcmltYXJ5W19uZ2NvbnRlbnQtJUNPTVAlXXtjb2xvcjojZmZmfS5tYXQtZmxhdC1idXR0b24ubWF0LWFjY2VudFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtcmFpc2VkLWJ1dHRvbi5tYXQtYWNjZW50W19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1mYWIubWF0LWFjY2VudFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtbWluaS1mYWIubWF0LWFjY2VudFtfbmdjb250ZW50LSVDT01QJV17Y29sb3I6I2ZmZn0ubWF0LWZsYXQtYnV0dG9uLm1hdC13YXJuW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1yYWlzZWQtYnV0dG9uLm1hdC13YXJuW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1mYWIubWF0LXdhcm5bX25nY29udGVudC0lQ09NUCVdLCAubWF0LW1pbmktZmFiLm1hdC13YXJuW19uZ2NvbnRlbnQtJUNPTVAlXXtjb2xvcjojZmZmfS5tYXQtZmxhdC1idXR0b24ubWF0LXByaW1hcnkubWF0LWJ1dHRvbi1kaXNhYmxlZFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtZmxhdC1idXR0b24ubWF0LWFjY2VudC5tYXQtYnV0dG9uLWRpc2FibGVkW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1mbGF0LWJ1dHRvbi5tYXQtd2Fybi5tYXQtYnV0dG9uLWRpc2FibGVkW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1mbGF0LWJ1dHRvbi5tYXQtYnV0dG9uLWRpc2FibGVkLm1hdC1idXR0b24tZGlzYWJsZWRbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXJhaXNlZC1idXR0b24ubWF0LXByaW1hcnkubWF0LWJ1dHRvbi1kaXNhYmxlZFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtcmFpc2VkLWJ1dHRvbi5tYXQtYWNjZW50Lm1hdC1idXR0b24tZGlzYWJsZWRbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXJhaXNlZC1idXR0b24ubWF0LXdhcm4ubWF0LWJ1dHRvbi1kaXNhYmxlZFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtcmFpc2VkLWJ1dHRvbi5tYXQtYnV0dG9uLWRpc2FibGVkLm1hdC1idXR0b24tZGlzYWJsZWRbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWZhYi5tYXQtcHJpbWFyeS5tYXQtYnV0dG9uLWRpc2FibGVkW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1mYWIubWF0LWFjY2VudC5tYXQtYnV0dG9uLWRpc2FibGVkW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1mYWIubWF0LXdhcm4ubWF0LWJ1dHRvbi1kaXNhYmxlZFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtZmFiLm1hdC1idXR0b24tZGlzYWJsZWQubWF0LWJ1dHRvbi1kaXNhYmxlZFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtbWluaS1mYWIubWF0LXByaW1hcnkubWF0LWJ1dHRvbi1kaXNhYmxlZFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtbWluaS1mYWIubWF0LWFjY2VudC5tYXQtYnV0dG9uLWRpc2FibGVkW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1taW5pLWZhYi5tYXQtd2Fybi5tYXQtYnV0dG9uLWRpc2FibGVkW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1taW5pLWZhYi5tYXQtYnV0dG9uLWRpc2FibGVkLm1hdC1idXR0b24tZGlzYWJsZWRbX25nY29udGVudC0lQ09NUCVde2NvbG9yOnJnYmEoMCwwLDAsLjI2KX0ubWF0LWZsYXQtYnV0dG9uLm1hdC1wcmltYXJ5W19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1yYWlzZWQtYnV0dG9uLm1hdC1wcmltYXJ5W19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1mYWIubWF0LXByaW1hcnlbX25nY29udGVudC0lQ09NUCVdLCAubWF0LW1pbmktZmFiLm1hdC1wcmltYXJ5W19uZ2NvbnRlbnQtJUNPTVAlXXtiYWNrZ3JvdW5kLWNvbG9yOiNmNTdjMDB9Lm1hdC1mbGF0LWJ1dHRvbi5tYXQtYWNjZW50W19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1yYWlzZWQtYnV0dG9uLm1hdC1hY2NlbnRbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWZhYi5tYXQtYWNjZW50W19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1taW5pLWZhYi5tYXQtYWNjZW50W19uZ2NvbnRlbnQtJUNPTVAlXXtiYWNrZ3JvdW5kLWNvbG9yOiNmZjk4MDB9Lm1hdC1mbGF0LWJ1dHRvbi5tYXQtd2Fybltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtcmFpc2VkLWJ1dHRvbi5tYXQtd2Fybltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtZmFiLm1hdC13YXJuW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1taW5pLWZhYi5tYXQtd2Fybltfbmdjb250ZW50LSVDT01QJV17YmFja2dyb3VuZC1jb2xvcjojZjQ0MzM2fS5tYXQtZmxhdC1idXR0b24ubWF0LXByaW1hcnkubWF0LWJ1dHRvbi1kaXNhYmxlZFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtZmxhdC1idXR0b24ubWF0LWFjY2VudC5tYXQtYnV0dG9uLWRpc2FibGVkW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1mbGF0LWJ1dHRvbi5tYXQtd2Fybi5tYXQtYnV0dG9uLWRpc2FibGVkW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1mbGF0LWJ1dHRvbi5tYXQtYnV0dG9uLWRpc2FibGVkLm1hdC1idXR0b24tZGlzYWJsZWRbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXJhaXNlZC1idXR0b24ubWF0LXByaW1hcnkubWF0LWJ1dHRvbi1kaXNhYmxlZFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtcmFpc2VkLWJ1dHRvbi5tYXQtYWNjZW50Lm1hdC1idXR0b24tZGlzYWJsZWRbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXJhaXNlZC1idXR0b24ubWF0LXdhcm4ubWF0LWJ1dHRvbi1kaXNhYmxlZFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtcmFpc2VkLWJ1dHRvbi5tYXQtYnV0dG9uLWRpc2FibGVkLm1hdC1idXR0b24tZGlzYWJsZWRbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWZhYi5tYXQtcHJpbWFyeS5tYXQtYnV0dG9uLWRpc2FibGVkW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1mYWIubWF0LWFjY2VudC5tYXQtYnV0dG9uLWRpc2FibGVkW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1mYWIubWF0LXdhcm4ubWF0LWJ1dHRvbi1kaXNhYmxlZFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtZmFiLm1hdC1idXR0b24tZGlzYWJsZWQubWF0LWJ1dHRvbi1kaXNhYmxlZFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtbWluaS1mYWIubWF0LXByaW1hcnkubWF0LWJ1dHRvbi1kaXNhYmxlZFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtbWluaS1mYWIubWF0LWFjY2VudC5tYXQtYnV0dG9uLWRpc2FibGVkW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1taW5pLWZhYi5tYXQtd2Fybi5tYXQtYnV0dG9uLWRpc2FibGVkW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1taW5pLWZhYi5tYXQtYnV0dG9uLWRpc2FibGVkLm1hdC1idXR0b24tZGlzYWJsZWRbX25nY29udGVudC0lQ09NUCVde2JhY2tncm91bmQtY29sb3I6cmdiYSgwLDAsMCwuMTIpfS5tYXQtZmxhdC1idXR0b24ubWF0LXByaW1hcnlbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1yaXBwbGUtZWxlbWVudFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtcmFpc2VkLWJ1dHRvbi5tYXQtcHJpbWFyeVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXJpcHBsZS1lbGVtZW50W19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1mYWIubWF0LXByaW1hcnlbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1yaXBwbGUtZWxlbWVudFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtbWluaS1mYWIubWF0LXByaW1hcnlbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1yaXBwbGUtZWxlbWVudFtfbmdjb250ZW50LSVDT01QJV17YmFja2dyb3VuZC1jb2xvcjpyZ2JhKDI1NSwyNTUsMjU1LC4xKX0ubWF0LWZsYXQtYnV0dG9uLm1hdC1hY2NlbnRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1yaXBwbGUtZWxlbWVudFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtcmFpc2VkLWJ1dHRvbi5tYXQtYWNjZW50W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtcmlwcGxlLWVsZW1lbnRbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWZhYi5tYXQtYWNjZW50W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtcmlwcGxlLWVsZW1lbnRbX25nY29udGVudC0lQ09NUCVdLCAubWF0LW1pbmktZmFiLm1hdC1hY2NlbnRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1yaXBwbGUtZWxlbWVudFtfbmdjb250ZW50LSVDT01QJV17YmFja2dyb3VuZC1jb2xvcjpyZ2JhKDI1NSwyNTUsMjU1LC4xKX0ubWF0LWZsYXQtYnV0dG9uLm1hdC13YXJuW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtcmlwcGxlLWVsZW1lbnRbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXJhaXNlZC1idXR0b24ubWF0LXdhcm5bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1yaXBwbGUtZWxlbWVudFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtZmFiLm1hdC13YXJuW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtcmlwcGxlLWVsZW1lbnRbX25nY29udGVudC0lQ09NUCVdLCAubWF0LW1pbmktZmFiLm1hdC13YXJuW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtcmlwcGxlLWVsZW1lbnRbX25nY29udGVudC0lQ09NUCVde2JhY2tncm91bmQtY29sb3I6cmdiYSgyNTUsMjU1LDI1NSwuMSl9Lm1hdC1zdHJva2VkLWJ1dHRvbltfbmdjb250ZW50LSVDT01QJV06bm90KFtjbGFzcyo9bWF0LWVsZXZhdGlvbi16XSksIC5tYXQtZmxhdC1idXR0b25bX25nY29udGVudC0lQ09NUCVdOm5vdChbY2xhc3MqPW1hdC1lbGV2YXRpb24tel0pe2JveC1zaGFkb3c6MHB4IDBweCAwcHggMHB4IHJnYmEoMCwgMCwgMCwgMC4yKSwwcHggMHB4IDBweCAwcHggcmdiYSgwLCAwLCAwLCAwLjE0KSwwcHggMHB4IDBweCAwcHggcmdiYSgwLCAwLCAwLCAwLjEyKX0ubWF0LXJhaXNlZC1idXR0b25bX25nY29udGVudC0lQ09NUCVdOm5vdChbY2xhc3MqPW1hdC1lbGV2YXRpb24tel0pe2JveC1zaGFkb3c6MHB4IDNweCAxcHggLTJweCByZ2JhKDAsIDAsIDAsIDAuMiksMHB4IDJweCAycHggMHB4IHJnYmEoMCwgMCwgMCwgMC4xNCksMHB4IDFweCA1cHggMHB4IHJnYmEoMCwgMCwgMCwgMC4xMil9Lm1hdC1yYWlzZWQtYnV0dG9uW19uZ2NvbnRlbnQtJUNPTVAlXTpub3QoLm1hdC1idXR0b24tZGlzYWJsZWQpOmFjdGl2ZTpub3QoW2NsYXNzKj1tYXQtZWxldmF0aW9uLXpdKXtib3gtc2hhZG93OjBweCA1cHggNXB4IC0zcHggcmdiYSgwLCAwLCAwLCAwLjIpLDBweCA4cHggMTBweCAxcHggcmdiYSgwLCAwLCAwLCAwLjE0KSwwcHggM3B4IDE0cHggMnB4IHJnYmEoMCwgMCwgMCwgMC4xMil9Lm1hdC1yYWlzZWQtYnV0dG9uLm1hdC1idXR0b24tZGlzYWJsZWRbX25nY29udGVudC0lQ09NUCVdOm5vdChbY2xhc3MqPW1hdC1lbGV2YXRpb24tel0pe2JveC1zaGFkb3c6MHB4IDBweCAwcHggMHB4IHJnYmEoMCwgMCwgMCwgMC4yKSwwcHggMHB4IDBweCAwcHggcmdiYSgwLCAwLCAwLCAwLjE0KSwwcHggMHB4IDBweCAwcHggcmdiYSgwLCAwLCAwLCAwLjEyKX0ubWF0LWZhYltfbmdjb250ZW50LSVDT01QJV06bm90KFtjbGFzcyo9bWF0LWVsZXZhdGlvbi16XSksIC5tYXQtbWluaS1mYWJbX25nY29udGVudC0lQ09NUCVdOm5vdChbY2xhc3MqPW1hdC1lbGV2YXRpb24tel0pe2JveC1zaGFkb3c6MHB4IDNweCA1cHggLTFweCByZ2JhKDAsIDAsIDAsIDAuMiksMHB4IDZweCAxMHB4IDBweCByZ2JhKDAsIDAsIDAsIDAuMTQpLDBweCAxcHggMThweCAwcHggcmdiYSgwLCAwLCAwLCAwLjEyKX0ubWF0LWZhYltfbmdjb250ZW50LSVDT01QJV06bm90KC5tYXQtYnV0dG9uLWRpc2FibGVkKTphY3RpdmU6bm90KFtjbGFzcyo9bWF0LWVsZXZhdGlvbi16XSksIC5tYXQtbWluaS1mYWJbX25nY29udGVudC0lQ09NUCVdOm5vdCgubWF0LWJ1dHRvbi1kaXNhYmxlZCk6YWN0aXZlOm5vdChbY2xhc3MqPW1hdC1lbGV2YXRpb24tel0pe2JveC1zaGFkb3c6MHB4IDdweCA4cHggLTRweCByZ2JhKDAsIDAsIDAsIDAuMiksMHB4IDEycHggMTdweCAycHggcmdiYSgwLCAwLCAwLCAwLjE0KSwwcHggNXB4IDIycHggNHB4IHJnYmEoMCwgMCwgMCwgMC4xMil9Lm1hdC1mYWIubWF0LWJ1dHRvbi1kaXNhYmxlZFtfbmdjb250ZW50LSVDT01QJV06bm90KFtjbGFzcyo9bWF0LWVsZXZhdGlvbi16XSksIC5tYXQtbWluaS1mYWIubWF0LWJ1dHRvbi1kaXNhYmxlZFtfbmdjb250ZW50LSVDT01QJV06bm90KFtjbGFzcyo9bWF0LWVsZXZhdGlvbi16XSl7Ym94LXNoYWRvdzowcHggMHB4IDBweCAwcHggcmdiYSgwLCAwLCAwLCAwLjIpLDBweCAwcHggMHB4IDBweCByZ2JhKDAsIDAsIDAsIDAuMTQpLDBweCAwcHggMHB4IDBweCByZ2JhKDAsIDAsIDAsIDAuMTIpfS5tYXQtYnV0dG9uLXRvZ2dsZS1zdGFuZGFsb25lW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1idXR0b24tdG9nZ2xlLWdyb3VwW19uZ2NvbnRlbnQtJUNPTVAlXXtib3gtc2hhZG93OjBweCAzcHggMXB4IC0ycHggcmdiYSgwLCAwLCAwLCAwLjIpLDBweCAycHggMnB4IDBweCByZ2JhKDAsIDAsIDAsIDAuMTQpLDBweCAxcHggNXB4IDBweCByZ2JhKDAsIDAsIDAsIDAuMTIpfS5tYXQtYnV0dG9uLXRvZ2dsZS1zdGFuZGFsb25lLm1hdC1idXR0b24tdG9nZ2xlLWFwcGVhcmFuY2Utc3RhbmRhcmRbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWJ1dHRvbi10b2dnbGUtZ3JvdXAtYXBwZWFyYW5jZS1zdGFuZGFyZFtfbmdjb250ZW50LSVDT01QJV17Ym94LXNoYWRvdzpub25lfS5tYXQtYnV0dG9uLXRvZ2dsZVtfbmdjb250ZW50LSVDT01QJV17Y29sb3I6cmdiYSgwLDAsMCwuMzgpfS5tYXQtYnV0dG9uLXRvZ2dsZVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWJ1dHRvbi10b2dnbGUtZm9jdXMtb3ZlcmxheVtfbmdjb250ZW50LSVDT01QJV17YmFja2dyb3VuZC1jb2xvcjpyZ2JhKDAsMCwwLC4xMil9Lm1hdC1idXR0b24tdG9nZ2xlLWFwcGVhcmFuY2Utc3RhbmRhcmRbX25nY29udGVudC0lQ09NUCVde2NvbG9yOiMyMTIxMjE7YmFja2dyb3VuZDojZmZmfS5tYXQtYnV0dG9uLXRvZ2dsZS1hcHBlYXJhbmNlLXN0YW5kYXJkW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtYnV0dG9uLXRvZ2dsZS1mb2N1cy1vdmVybGF5W19uZ2NvbnRlbnQtJUNPTVAlXXtiYWNrZ3JvdW5kLWNvbG9yOiMwMDB9Lm1hdC1idXR0b24tdG9nZ2xlLWdyb3VwLWFwcGVhcmFuY2Utc3RhbmRhcmRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1idXR0b24tdG9nZ2xlW19uZ2NvbnRlbnQtJUNPTVAlXSArIC5tYXQtYnV0dG9uLXRvZ2dsZVtfbmdjb250ZW50LSVDT01QJV17Ym9yZGVyLWxlZnQ6c29saWQgMXB4IHJnYmEoMCwwLDAsLjEyKX1bZGlyPXJ0bF1bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1idXR0b24tdG9nZ2xlLWdyb3VwLWFwcGVhcmFuY2Utc3RhbmRhcmRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1idXR0b24tdG9nZ2xlW19uZ2NvbnRlbnQtJUNPTVAlXSArIC5tYXQtYnV0dG9uLXRvZ2dsZVtfbmdjb250ZW50LSVDT01QJV17Ym9yZGVyLWxlZnQ6bm9uZTtib3JkZXItcmlnaHQ6c29saWQgMXB4IHJnYmEoMCwwLDAsLjEyKX0ubWF0LWJ1dHRvbi10b2dnbGUtZ3JvdXAtYXBwZWFyYW5jZS1zdGFuZGFyZC5tYXQtYnV0dG9uLXRvZ2dsZS12ZXJ0aWNhbFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWJ1dHRvbi10b2dnbGVbX25nY29udGVudC0lQ09NUCVdICsgLm1hdC1idXR0b24tdG9nZ2xlW19uZ2NvbnRlbnQtJUNPTVAlXXtib3JkZXItbGVmdDpub25lO2JvcmRlci1yaWdodDpub25lO2JvcmRlci10b3A6c29saWQgMXB4IHJnYmEoMCwwLDAsLjEyKX0ubWF0LWJ1dHRvbi10b2dnbGUtY2hlY2tlZFtfbmdjb250ZW50LSVDT01QJV17YmFja2dyb3VuZC1jb2xvcjojZTBlMGUwO2NvbG9yOiM2MTYxNjF9Lm1hdC1idXR0b24tdG9nZ2xlLWNoZWNrZWQubWF0LWJ1dHRvbi10b2dnbGUtYXBwZWFyYW5jZS1zdGFuZGFyZFtfbmdjb250ZW50LSVDT01QJV17Y29sb3I6IzIxMjEyMX0ubWF0LWJ1dHRvbi10b2dnbGUtZGlzYWJsZWRbX25nY29udGVudC0lQ09NUCVde2NvbG9yOnJnYmEoMCwwLDAsLjI2KTtiYWNrZ3JvdW5kLWNvbG9yOiNlZWV9Lm1hdC1idXR0b24tdG9nZ2xlLWRpc2FibGVkLm1hdC1idXR0b24tdG9nZ2xlLWFwcGVhcmFuY2Utc3RhbmRhcmRbX25nY29udGVudC0lQ09NUCVde2JhY2tncm91bmQ6I2ZmZn0ubWF0LWJ1dHRvbi10b2dnbGUtZGlzYWJsZWQubWF0LWJ1dHRvbi10b2dnbGUtY2hlY2tlZFtfbmdjb250ZW50LSVDT01QJV17YmFja2dyb3VuZC1jb2xvcjojYmRiZGJkfS5tYXQtYnV0dG9uLXRvZ2dsZS1zdGFuZGFsb25lLm1hdC1idXR0b24tdG9nZ2xlLWFwcGVhcmFuY2Utc3RhbmRhcmRbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWJ1dHRvbi10b2dnbGUtZ3JvdXAtYXBwZWFyYW5jZS1zdGFuZGFyZFtfbmdjb250ZW50LSVDT01QJV17Ym9yZGVyOnNvbGlkIDFweCByZ2JhKDAsMCwwLC4xMil9Lm1hdC1idXR0b24tdG9nZ2xlLWFwcGVhcmFuY2Utc3RhbmRhcmRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1idXR0b24tdG9nZ2xlLWxhYmVsLWNvbnRlbnRbX25nY29udGVudC0lQ09NUCVde2xpbmUtaGVpZ2h0OjQ4cHh9Lm1hdC1jYXJkW19uZ2NvbnRlbnQtJUNPTVAlXXtiYWNrZ3JvdW5kOiNmZmY7Y29sb3I6IzIxMjEyMX0ubWF0LWNhcmRbX25nY29udGVudC0lQ09NUCVdOm5vdChbY2xhc3MqPW1hdC1lbGV2YXRpb24tel0pe2JveC1zaGFkb3c6MHB4IDJweCAxcHggLTFweCByZ2JhKDAsIDAsIDAsIDAuMiksMHB4IDFweCAxcHggMHB4IHJnYmEoMCwgMCwgMCwgMC4xNCksMHB4IDFweCAzcHggMHB4IHJnYmEoMCwgMCwgMCwgMC4xMil9Lm1hdC1jYXJkLm1hdC1jYXJkLWZsYXRbX25nY29udGVudC0lQ09NUCVdOm5vdChbY2xhc3MqPW1hdC1lbGV2YXRpb24tel0pe2JveC1zaGFkb3c6MHB4IDBweCAwcHggMHB4IHJnYmEoMCwgMCwgMCwgMC4yKSwwcHggMHB4IDBweCAwcHggcmdiYSgwLCAwLCAwLCAwLjE0KSwwcHggMHB4IDBweCAwcHggcmdiYSgwLCAwLCAwLCAwLjEyKX0ubWF0LWNhcmQtc3VidGl0bGVbX25nY29udGVudC0lQ09NUCVde2NvbG9yOiM2MTYxNjF9Lm1hdC1jaGVja2JveC1mcmFtZVtfbmdjb250ZW50LSVDT01QJV17Ym9yZGVyLWNvbG9yOiM2MTYxNjF9Lm1hdC1jaGVja2JveC1jaGVja21hcmtbX25nY29udGVudC0lQ09NUCVde2ZpbGw6I2ZhZmFmYX0ubWF0LWNoZWNrYm94LWNoZWNrbWFyay1wYXRoW19uZ2NvbnRlbnQtJUNPTVAlXXtzdHJva2U6I2ZhZmFmYSAhaW1wb3J0YW50fS5tYXQtY2hlY2tib3gtbWl4ZWRtYXJrW19uZ2NvbnRlbnQtJUNPTVAlXXtiYWNrZ3JvdW5kLWNvbG9yOiNmYWZhZmF9Lm1hdC1jaGVja2JveC1pbmRldGVybWluYXRlLm1hdC1wcmltYXJ5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtY2hlY2tib3gtYmFja2dyb3VuZFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtY2hlY2tib3gtY2hlY2tlZC5tYXQtcHJpbWFyeVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWNoZWNrYm94LWJhY2tncm91bmRbX25nY29udGVudC0lQ09NUCVde2JhY2tncm91bmQtY29sb3I6I2Y1N2MwMH0ubWF0LWNoZWNrYm94LWluZGV0ZXJtaW5hdGUubWF0LWFjY2VudFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWNoZWNrYm94LWJhY2tncm91bmRbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWNoZWNrYm94LWNoZWNrZWQubWF0LWFjY2VudFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWNoZWNrYm94LWJhY2tncm91bmRbX25nY29udGVudC0lQ09NUCVde2JhY2tncm91bmQtY29sb3I6I2ZmOTgwMH0ubWF0LWNoZWNrYm94LWluZGV0ZXJtaW5hdGUubWF0LXdhcm5bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1jaGVja2JveC1iYWNrZ3JvdW5kW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1jaGVja2JveC1jaGVja2VkLm1hdC13YXJuW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtY2hlY2tib3gtYmFja2dyb3VuZFtfbmdjb250ZW50LSVDT01QJV17YmFja2dyb3VuZC1jb2xvcjojZjQ0MzM2fS5tYXQtY2hlY2tib3gtZGlzYWJsZWQubWF0LWNoZWNrYm94LWNoZWNrZWRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1jaGVja2JveC1iYWNrZ3JvdW5kW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1jaGVja2JveC1kaXNhYmxlZC5tYXQtY2hlY2tib3gtaW5kZXRlcm1pbmF0ZVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWNoZWNrYm94LWJhY2tncm91bmRbX25nY29udGVudC0lQ09NUCVde2JhY2tncm91bmQtY29sb3I6I2IwYjBiMH0ubWF0LWNoZWNrYm94LWRpc2FibGVkW19uZ2NvbnRlbnQtJUNPTVAlXTpub3QoLm1hdC1jaGVja2JveC1jaGVja2VkKSAgIC5tYXQtY2hlY2tib3gtZnJhbWVbX25nY29udGVudC0lQ09NUCVde2JvcmRlci1jb2xvcjojYjBiMGIwfS5tYXQtY2hlY2tib3gtZGlzYWJsZWRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1jaGVja2JveC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17Y29sb3I6IzYxNjE2MX0ubWF0LWNoZWNrYm94W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtcmlwcGxlLWVsZW1lbnRbX25nY29udGVudC0lQ09NUCVde2JhY2tncm91bmQtY29sb3I6IzAwMH0ubWF0LWNoZWNrYm94LWNoZWNrZWRbX25nY29udGVudC0lQ09NUCVdOm5vdCgubWF0LWNoZWNrYm94LWRpc2FibGVkKS5tYXQtcHJpbWFyeSAgIC5tYXQtcmlwcGxlLWVsZW1lbnRbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWNoZWNrYm94W19uZ2NvbnRlbnQtJUNPTVAlXTphY3RpdmU6bm90KC5tYXQtY2hlY2tib3gtZGlzYWJsZWQpLm1hdC1wcmltYXJ5ICAgLm1hdC1yaXBwbGUtZWxlbWVudFtfbmdjb250ZW50LSVDT01QJV17YmFja2dyb3VuZDojZjU3YzAwfS5tYXQtY2hlY2tib3gtY2hlY2tlZFtfbmdjb250ZW50LSVDT01QJV06bm90KC5tYXQtY2hlY2tib3gtZGlzYWJsZWQpLm1hdC1hY2NlbnQgICAubWF0LXJpcHBsZS1lbGVtZW50W19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1jaGVja2JveFtfbmdjb250ZW50LSVDT01QJV06YWN0aXZlOm5vdCgubWF0LWNoZWNrYm94LWRpc2FibGVkKS5tYXQtYWNjZW50ICAgLm1hdC1yaXBwbGUtZWxlbWVudFtfbmdjb250ZW50LSVDT01QJV17YmFja2dyb3VuZDojZmY5ODAwfS5tYXQtY2hlY2tib3gtY2hlY2tlZFtfbmdjb250ZW50LSVDT01QJV06bm90KC5tYXQtY2hlY2tib3gtZGlzYWJsZWQpLm1hdC13YXJuICAgLm1hdC1yaXBwbGUtZWxlbWVudFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtY2hlY2tib3hbX25nY29udGVudC0lQ09NUCVdOmFjdGl2ZTpub3QoLm1hdC1jaGVja2JveC1kaXNhYmxlZCkubWF0LXdhcm4gICAubWF0LXJpcHBsZS1lbGVtZW50W19uZ2NvbnRlbnQtJUNPTVAlXXtiYWNrZ3JvdW5kOiNmNDQzMzZ9Lm1hdC1jaGlwLm1hdC1zdGFuZGFyZC1jaGlwW19uZ2NvbnRlbnQtJUNPTVAlXXtiYWNrZ3JvdW5kLWNvbG9yOiNlMGUwZTA7Y29sb3I6IzIxMjEyMX0ubWF0LWNoaXAubWF0LXN0YW5kYXJkLWNoaXBbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1jaGlwLXJlbW92ZVtfbmdjb250ZW50LSVDT01QJV17Y29sb3I6IzIxMjEyMTtvcGFjaXR5Oi40fS5tYXQtY2hpcC5tYXQtc3RhbmRhcmQtY2hpcFtfbmdjb250ZW50LSVDT01QJV06bm90KC5tYXQtY2hpcC1kaXNhYmxlZCk6YWN0aXZle2JveC1zaGFkb3c6MHB4IDNweCAzcHggLTJweCByZ2JhKDAsIDAsIDAsIDAuMiksMHB4IDNweCA0cHggMHB4IHJnYmEoMCwgMCwgMCwgMC4xNCksMHB4IDFweCA4cHggMHB4IHJnYmEoMCwgMCwgMCwgMC4xMil9Lm1hdC1jaGlwLm1hdC1zdGFuZGFyZC1jaGlwW19uZ2NvbnRlbnQtJUNPTVAlXTpub3QoLm1hdC1jaGlwLWRpc2FibGVkKSAgIC5tYXQtY2hpcC1yZW1vdmVbX25nY29udGVudC0lQ09NUCVdOmhvdmVye29wYWNpdHk6LjU0fS5tYXQtY2hpcC5tYXQtc3RhbmRhcmQtY2hpcC5tYXQtY2hpcC1kaXNhYmxlZFtfbmdjb250ZW50LSVDT01QJV17b3BhY2l0eTouNH0ubWF0LWNoaXAubWF0LXN0YW5kYXJkLWNoaXBbX25nY29udGVudC0lQ09NUCVdOjphZnRlcntiYWNrZ3JvdW5kOiMwMDB9Lm1hdC1jaGlwLm1hdC1zdGFuZGFyZC1jaGlwLm1hdC1jaGlwLXNlbGVjdGVkLm1hdC1wcmltYXJ5W19uZ2NvbnRlbnQtJUNPTVAlXXtiYWNrZ3JvdW5kLWNvbG9yOiNmNTdjMDA7Y29sb3I6I2ZmZn0ubWF0LWNoaXAubWF0LXN0YW5kYXJkLWNoaXAubWF0LWNoaXAtc2VsZWN0ZWQubWF0LXByaW1hcnlbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1jaGlwLXJlbW92ZVtfbmdjb250ZW50LSVDT01QJV17Y29sb3I6I2ZmZjtvcGFjaXR5Oi40fS5tYXQtY2hpcC5tYXQtc3RhbmRhcmQtY2hpcC5tYXQtY2hpcC1zZWxlY3RlZC5tYXQtcHJpbWFyeVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXJpcHBsZS1lbGVtZW50W19uZ2NvbnRlbnQtJUNPTVAlXXtiYWNrZ3JvdW5kLWNvbG9yOnJnYmEoMjU1LDI1NSwyNTUsLjEpfS5tYXQtY2hpcC5tYXQtc3RhbmRhcmQtY2hpcC5tYXQtY2hpcC1zZWxlY3RlZC5tYXQtd2Fybltfbmdjb250ZW50LSVDT01QJV17YmFja2dyb3VuZC1jb2xvcjojZjQ0MzM2O2NvbG9yOiNmZmZ9Lm1hdC1jaGlwLm1hdC1zdGFuZGFyZC1jaGlwLm1hdC1jaGlwLXNlbGVjdGVkLm1hdC13YXJuW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtY2hpcC1yZW1vdmVbX25nY29udGVudC0lQ09NUCVde2NvbG9yOiNmZmY7b3BhY2l0eTouNH0ubWF0LWNoaXAubWF0LXN0YW5kYXJkLWNoaXAubWF0LWNoaXAtc2VsZWN0ZWQubWF0LXdhcm5bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1yaXBwbGUtZWxlbWVudFtfbmdjb250ZW50LSVDT01QJV17YmFja2dyb3VuZC1jb2xvcjpyZ2JhKDI1NSwyNTUsMjU1LC4xKX0ubWF0LWNoaXAubWF0LXN0YW5kYXJkLWNoaXAubWF0LWNoaXAtc2VsZWN0ZWQubWF0LWFjY2VudFtfbmdjb250ZW50LSVDT01QJV17YmFja2dyb3VuZC1jb2xvcjojZmY5ODAwO2NvbG9yOiNmZmZ9Lm1hdC1jaGlwLm1hdC1zdGFuZGFyZC1jaGlwLm1hdC1jaGlwLXNlbGVjdGVkLm1hdC1hY2NlbnRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1jaGlwLXJlbW92ZVtfbmdjb250ZW50LSVDT01QJV17Y29sb3I6I2ZmZjtvcGFjaXR5Oi40fS5tYXQtY2hpcC5tYXQtc3RhbmRhcmQtY2hpcC5tYXQtY2hpcC1zZWxlY3RlZC5tYXQtYWNjZW50W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtcmlwcGxlLWVsZW1lbnRbX25nY29udGVudC0lQ09NUCVde2JhY2tncm91bmQtY29sb3I6cmdiYSgyNTUsMjU1LDI1NSwuMSl9Lm1hdC10YWJsZVtfbmdjb250ZW50LSVDT01QJV17YmFja2dyb3VuZDojZmZmfS5tYXQtdGFibGVbX25nY29udGVudC0lQ09NUCVdICAgdGhlYWRbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXRhYmxlW19uZ2NvbnRlbnQtJUNPTVAlXSAgIHRib2R5W19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10YWJsZVtfbmdjb250ZW50LSVDT01QJV0gICB0Zm9vdFtfbmdjb250ZW50LSVDT01QJV0sIG1hdC1oZWFkZXItcm93W19uZ2NvbnRlbnQtJUNPTVAlXSwgbWF0LXJvd1tfbmdjb250ZW50LSVDT01QJV0sIG1hdC1mb290ZXItcm93W19uZ2NvbnRlbnQtJUNPTVAlXSwgW21hdC1oZWFkZXItcm93XVtfbmdjb250ZW50LSVDT01QJV0sIFttYXQtcm93XVtfbmdjb250ZW50LSVDT01QJV0sIFttYXQtZm9vdGVyLXJvd11bX25nY29udGVudC0lQ09NUCVdLCAubWF0LXRhYmxlLXN0aWNreVtfbmdjb250ZW50LSVDT01QJV17YmFja2dyb3VuZDppbmhlcml0fW1hdC1yb3dbX25nY29udGVudC0lQ09NUCVdLCBtYXQtaGVhZGVyLXJvd1tfbmdjb250ZW50LSVDT01QJV0sIG1hdC1mb290ZXItcm93W19uZ2NvbnRlbnQtJUNPTVAlXSwgdGgubWF0LWhlYWRlci1jZWxsW19uZ2NvbnRlbnQtJUNPTVAlXSwgdGQubWF0LWNlbGxbX25nY29udGVudC0lQ09NUCVdLCB0ZC5tYXQtZm9vdGVyLWNlbGxbX25nY29udGVudC0lQ09NUCVde2JvcmRlci1ib3R0b20tY29sb3I6cmdiYSgwLDAsMCwuMTIpfS5tYXQtaGVhZGVyLWNlbGxbX25nY29udGVudC0lQ09NUCVde2NvbG9yOiM2MTYxNjF9Lm1hdC1jZWxsW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1mb290ZXItY2VsbFtfbmdjb250ZW50LSVDT01QJV17Y29sb3I6IzIxMjEyMX0ubWF0LWNhbGVuZGFyLWFycm93W19uZ2NvbnRlbnQtJUNPTVAlXXtib3JkZXItdG9wLWNvbG9yOnJnYmEoMCwwLDAsLjU0KX0ubWF0LWRhdGVwaWNrZXItdG9nZ2xlW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1kYXRlcGlja2VyLWNvbnRlbnRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1jYWxlbmRhci1uZXh0LWJ1dHRvbltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtZGF0ZXBpY2tlci1jb250ZW50W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtY2FsZW5kYXItcHJldmlvdXMtYnV0dG9uW19uZ2NvbnRlbnQtJUNPTVAlXXtjb2xvcjpyZ2JhKDAsMCwwLC41NCl9Lm1hdC1jYWxlbmRhci10YWJsZS1oZWFkZXJbX25nY29udGVudC0lQ09NUCVde2NvbG9yOnJnYmEoMCwwLDAsLjM4KX0ubWF0LWNhbGVuZGFyLXRhYmxlLWhlYWRlci1kaXZpZGVyW19uZ2NvbnRlbnQtJUNPTVAlXTo6YWZ0ZXJ7YmFja2dyb3VuZDpyZ2JhKDAsMCwwLC4xMil9Lm1hdC1jYWxlbmRhci1ib2R5LWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXtjb2xvcjojNjE2MTYxfS5tYXQtY2FsZW5kYXItYm9keS1jZWxsLWNvbnRlbnRbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWRhdGUtcmFuZ2UtaW5wdXQtc2VwYXJhdG9yW19uZ2NvbnRlbnQtJUNPTVAlXXtjb2xvcjojMjEyMTIxO2JvcmRlci1jb2xvcjp0cmFuc3BhcmVudH0ubWF0LWNhbGVuZGFyLWJvZHktZGlzYWJsZWRbX25nY29udGVudC0lQ09NUCVdID4gLm1hdC1jYWxlbmRhci1ib2R5LWNlbGwtY29udGVudFtfbmdjb250ZW50LSVDT01QJV06bm90KC5tYXQtY2FsZW5kYXItYm9keS1zZWxlY3RlZCk6bm90KC5tYXQtY2FsZW5kYXItYm9keS1jb21wYXJpc29uLWlkZW50aWNhbCl7Y29sb3I6Izc1NzU3NX0ubWF0LWZvcm0tZmllbGQtZGlzYWJsZWRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1kYXRlLXJhbmdlLWlucHV0LXNlcGFyYXRvcltfbmdjb250ZW50LSVDT01QJV17Y29sb3I6Izc1NzU3NX0ubWF0LWNhbGVuZGFyLWJvZHktY2VsbFtfbmdjb250ZW50LSVDT01QJV06bm90KC5tYXQtY2FsZW5kYXItYm9keS1kaXNhYmxlZCk6aG92ZXIgPiAubWF0LWNhbGVuZGFyLWJvZHktY2VsbC1jb250ZW50W19uZ2NvbnRlbnQtJUNPTVAlXTpub3QoLm1hdC1jYWxlbmRhci1ib2R5LXNlbGVjdGVkKTpub3QoLm1hdC1jYWxlbmRhci1ib2R5LWNvbXBhcmlzb24taWRlbnRpY2FsKSwgLmNkay1rZXlib2FyZC1mb2N1c2VkW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtY2FsZW5kYXItYm9keS1hY3RpdmVbX25nY29udGVudC0lQ09NUCVdID4gLm1hdC1jYWxlbmRhci1ib2R5LWNlbGwtY29udGVudFtfbmdjb250ZW50LSVDT01QJV06bm90KC5tYXQtY2FsZW5kYXItYm9keS1zZWxlY3RlZCk6bm90KC5tYXQtY2FsZW5kYXItYm9keS1jb21wYXJpc29uLWlkZW50aWNhbCksIC5jZGstcHJvZ3JhbS1mb2N1c2VkW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtY2FsZW5kYXItYm9keS1hY3RpdmVbX25nY29udGVudC0lQ09NUCVdID4gLm1hdC1jYWxlbmRhci1ib2R5LWNlbGwtY29udGVudFtfbmdjb250ZW50LSVDT01QJV06bm90KC5tYXQtY2FsZW5kYXItYm9keS1zZWxlY3RlZCk6bm90KC5tYXQtY2FsZW5kYXItYm9keS1jb21wYXJpc29uLWlkZW50aWNhbCl7YmFja2dyb3VuZC1jb2xvcjpyZ2JhKDAsMCwwLC4wNCl9Lm1hdC1jYWxlbmRhci1ib2R5LWluLXByZXZpZXdbX25nY29udGVudC0lQ09NUCVde2NvbG9yOnJnYmEoMCwwLDAsLjI0KX0ubWF0LWNhbGVuZGFyLWJvZHktdG9kYXlbX25nY29udGVudC0lQ09NUCVdOm5vdCgubWF0LWNhbGVuZGFyLWJvZHktc2VsZWN0ZWQpOm5vdCgubWF0LWNhbGVuZGFyLWJvZHktY29tcGFyaXNvbi1pZGVudGljYWwpe2JvcmRlci1jb2xvcjpyZ2JhKDAsMCwwLC4zOCl9Lm1hdC1jYWxlbmRhci1ib2R5LWRpc2FibGVkW19uZ2NvbnRlbnQtJUNPTVAlXSA+IC5tYXQtY2FsZW5kYXItYm9keS10b2RheVtfbmdjb250ZW50LSVDT01QJV06bm90KC5tYXQtY2FsZW5kYXItYm9keS1zZWxlY3RlZCk6bm90KC5tYXQtY2FsZW5kYXItYm9keS1jb21wYXJpc29uLWlkZW50aWNhbCl7Ym9yZGVyLWNvbG9yOnJnYmEoMCwwLDAsLjE4KX0ubWF0LWNhbGVuZGFyLWJvZHktaW4tcmFuZ2VbX25nY29udGVudC0lQ09NUCVdOjpiZWZvcmV7YmFja2dyb3VuZDpyZ2JhKDI0NSwxMjQsMCwuMil9Lm1hdC1jYWxlbmRhci1ib2R5LWNvbXBhcmlzb24taWRlbnRpY2FsW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1jYWxlbmRhci1ib2R5LWluLWNvbXBhcmlzb24tcmFuZ2VbX25nY29udGVudC0lQ09NUCVdOjpiZWZvcmV7YmFja2dyb3VuZDpyZ2JhKDI0OSwxNzEsMCwuMil9Lm1hdC1jYWxlbmRhci1ib2R5LWNvbXBhcmlzb24tYnJpZGdlLXN0YXJ0W19uZ2NvbnRlbnQtJUNPTVAlXTo6YmVmb3JlLCBbZGlyPXJ0bF1bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1jYWxlbmRhci1ib2R5LWNvbXBhcmlzb24tYnJpZGdlLWVuZFtfbmdjb250ZW50LSVDT01QJV06OmJlZm9yZXtiYWNrZ3JvdW5kOmxpbmVhci1ncmFkaWVudCh0byByaWdodCwgcmdiYSgyNDUsIDEyNCwgMCwgMC4yKSA1MCUsIHJnYmEoMjQ5LCAxNzEsIDAsIDAuMikgNTAlKX0ubWF0LWNhbGVuZGFyLWJvZHktY29tcGFyaXNvbi1icmlkZ2UtZW5kW19uZ2NvbnRlbnQtJUNPTVAlXTo6YmVmb3JlLCBbZGlyPXJ0bF1bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1jYWxlbmRhci1ib2R5LWNvbXBhcmlzb24tYnJpZGdlLXN0YXJ0W19uZ2NvbnRlbnQtJUNPTVAlXTo6YmVmb3Jle2JhY2tncm91bmQ6bGluZWFyLWdyYWRpZW50KHRvIGxlZnQsIHJnYmEoMjQ1LCAxMjQsIDAsIDAuMikgNTAlLCByZ2JhKDI0OSwgMTcxLCAwLCAwLjIpIDUwJSl9Lm1hdC1jYWxlbmRhci1ib2R5LWluLXJhbmdlW19uZ2NvbnRlbnQtJUNPTVAlXSA+IC5tYXQtY2FsZW5kYXItYm9keS1jb21wYXJpc29uLWlkZW50aWNhbFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtY2FsZW5kYXItYm9keS1pbi1jb21wYXJpc29uLXJhbmdlLm1hdC1jYWxlbmRhci1ib2R5LWluLXJhbmdlW19uZ2NvbnRlbnQtJUNPTVAlXTo6YWZ0ZXJ7YmFja2dyb3VuZDojYThkYWI1fS5tYXQtY2FsZW5kYXItYm9keS1jb21wYXJpc29uLWlkZW50aWNhbC5tYXQtY2FsZW5kYXItYm9keS1zZWxlY3RlZFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtY2FsZW5kYXItYm9keS1pbi1jb21wYXJpc29uLXJhbmdlW19uZ2NvbnRlbnQtJUNPTVAlXSA+IC5tYXQtY2FsZW5kYXItYm9keS1zZWxlY3RlZFtfbmdjb250ZW50LSVDT01QJV17YmFja2dyb3VuZDojNDZhMzVlfS5tYXQtY2FsZW5kYXItYm9keS1zZWxlY3RlZFtfbmdjb250ZW50LSVDT01QJV17YmFja2dyb3VuZC1jb2xvcjojZjU3YzAwO2NvbG9yOiNmZmZ9Lm1hdC1jYWxlbmRhci1ib2R5LWRpc2FibGVkW19uZ2NvbnRlbnQtJUNPTVAlXSA+IC5tYXQtY2FsZW5kYXItYm9keS1zZWxlY3RlZFtfbmdjb250ZW50LSVDT01QJV17YmFja2dyb3VuZC1jb2xvcjpyZ2JhKDI0NSwxMjQsMCwuNCl9Lm1hdC1jYWxlbmRhci1ib2R5LXRvZGF5Lm1hdC1jYWxlbmRhci1ib2R5LXNlbGVjdGVkW19uZ2NvbnRlbnQtJUNPTVAlXXtib3gtc2hhZG93Omluc2V0IDAgMCAwIDFweCAjZmZmfS5tYXQtZGF0ZXBpY2tlci1jb250ZW50W19uZ2NvbnRlbnQtJUNPTVAlXXtib3gtc2hhZG93OjBweCAycHggNHB4IC0xcHggcmdiYSgwLCAwLCAwLCAwLjIpLDBweCA0cHggNXB4IDBweCByZ2JhKDAsIDAsIDAsIDAuMTQpLDBweCAxcHggMTBweCAwcHggcmdiYSgwLCAwLCAwLCAwLjEyKTtiYWNrZ3JvdW5kLWNvbG9yOiNmZmY7Y29sb3I6IzIxMjEyMX0ubWF0LWRhdGVwaWNrZXItY29udGVudC5tYXQtYWNjZW50W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtY2FsZW5kYXItYm9keS1pbi1yYW5nZVtfbmdjb250ZW50LSVDT01QJV06OmJlZm9yZXtiYWNrZ3JvdW5kOnJnYmEoMjU1LDE1MiwwLC4yKX0ubWF0LWRhdGVwaWNrZXItY29udGVudC5tYXQtYWNjZW50W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtY2FsZW5kYXItYm9keS1jb21wYXJpc29uLWlkZW50aWNhbFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtZGF0ZXBpY2tlci1jb250ZW50Lm1hdC1hY2NlbnRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1jYWxlbmRhci1ib2R5LWluLWNvbXBhcmlzb24tcmFuZ2VbX25nY29udGVudC0lQ09NUCVdOjpiZWZvcmV7YmFja2dyb3VuZDpyZ2JhKDI0OSwxNzEsMCwuMil9Lm1hdC1kYXRlcGlja2VyLWNvbnRlbnQubWF0LWFjY2VudFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWNhbGVuZGFyLWJvZHktY29tcGFyaXNvbi1icmlkZ2Utc3RhcnRbX25nY29udGVudC0lQ09NUCVdOjpiZWZvcmUsIC5tYXQtZGF0ZXBpY2tlci1jb250ZW50Lm1hdC1hY2NlbnRbX25nY29udGVudC0lQ09NUCVdICAgW2Rpcj1ydGxdW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtY2FsZW5kYXItYm9keS1jb21wYXJpc29uLWJyaWRnZS1lbmRbX25nY29udGVudC0lQ09NUCVdOjpiZWZvcmV7YmFja2dyb3VuZDpsaW5lYXItZ3JhZGllbnQodG8gcmlnaHQsIHJnYmEoMjU1LCAxNTIsIDAsIDAuMikgNTAlLCByZ2JhKDI0OSwgMTcxLCAwLCAwLjIpIDUwJSl9Lm1hdC1kYXRlcGlja2VyLWNvbnRlbnQubWF0LWFjY2VudFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWNhbGVuZGFyLWJvZHktY29tcGFyaXNvbi1icmlkZ2UtZW5kW19uZ2NvbnRlbnQtJUNPTVAlXTo6YmVmb3JlLCAubWF0LWRhdGVwaWNrZXItY29udGVudC5tYXQtYWNjZW50W19uZ2NvbnRlbnQtJUNPTVAlXSAgIFtkaXI9cnRsXVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWNhbGVuZGFyLWJvZHktY29tcGFyaXNvbi1icmlkZ2Utc3RhcnRbX25nY29udGVudC0lQ09NUCVdOjpiZWZvcmV7YmFja2dyb3VuZDpsaW5lYXItZ3JhZGllbnQodG8gbGVmdCwgcmdiYSgyNTUsIDE1MiwgMCwgMC4yKSA1MCUsIHJnYmEoMjQ5LCAxNzEsIDAsIDAuMikgNTAlKX0ubWF0LWRhdGVwaWNrZXItY29udGVudC5tYXQtYWNjZW50W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtY2FsZW5kYXItYm9keS1pbi1yYW5nZVtfbmdjb250ZW50LSVDT01QJV0gPiAubWF0LWNhbGVuZGFyLWJvZHktY29tcGFyaXNvbi1pZGVudGljYWxbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWRhdGVwaWNrZXItY29udGVudC5tYXQtYWNjZW50W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtY2FsZW5kYXItYm9keS1pbi1jb21wYXJpc29uLXJhbmdlLm1hdC1jYWxlbmRhci1ib2R5LWluLXJhbmdlW19uZ2NvbnRlbnQtJUNPTVAlXTo6YWZ0ZXJ7YmFja2dyb3VuZDojYThkYWI1fS5tYXQtZGF0ZXBpY2tlci1jb250ZW50Lm1hdC1hY2NlbnRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1jYWxlbmRhci1ib2R5LWNvbXBhcmlzb24taWRlbnRpY2FsLm1hdC1jYWxlbmRhci1ib2R5LXNlbGVjdGVkW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1kYXRlcGlja2VyLWNvbnRlbnQubWF0LWFjY2VudFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWNhbGVuZGFyLWJvZHktaW4tY29tcGFyaXNvbi1yYW5nZVtfbmdjb250ZW50LSVDT01QJV0gPiAubWF0LWNhbGVuZGFyLWJvZHktc2VsZWN0ZWRbX25nY29udGVudC0lQ09NUCVde2JhY2tncm91bmQ6IzQ2YTM1ZX0ubWF0LWRhdGVwaWNrZXItY29udGVudC5tYXQtYWNjZW50W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtY2FsZW5kYXItYm9keS1zZWxlY3RlZFtfbmdjb250ZW50LSVDT01QJV17YmFja2dyb3VuZC1jb2xvcjojZmY5ODAwO2NvbG9yOiNmZmZ9Lm1hdC1kYXRlcGlja2VyLWNvbnRlbnQubWF0LWFjY2VudFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWNhbGVuZGFyLWJvZHktZGlzYWJsZWRbX25nY29udGVudC0lQ09NUCVdID4gLm1hdC1jYWxlbmRhci1ib2R5LXNlbGVjdGVkW19uZ2NvbnRlbnQtJUNPTVAlXXtiYWNrZ3JvdW5kLWNvbG9yOnJnYmEoMjU1LDE1MiwwLC40KX0ubWF0LWRhdGVwaWNrZXItY29udGVudC5tYXQtYWNjZW50W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtY2FsZW5kYXItYm9keS10b2RheS5tYXQtY2FsZW5kYXItYm9keS1zZWxlY3RlZFtfbmdjb250ZW50LSVDT01QJV17Ym94LXNoYWRvdzppbnNldCAwIDAgMCAxcHggI2ZmZn0ubWF0LWRhdGVwaWNrZXItY29udGVudC5tYXQtd2Fybltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWNhbGVuZGFyLWJvZHktaW4tcmFuZ2VbX25nY29udGVudC0lQ09NUCVdOjpiZWZvcmV7YmFja2dyb3VuZDpyZ2JhKDI0NCw2Nyw1NCwuMil9Lm1hdC1kYXRlcGlja2VyLWNvbnRlbnQubWF0LXdhcm5bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1jYWxlbmRhci1ib2R5LWNvbXBhcmlzb24taWRlbnRpY2FsW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1kYXRlcGlja2VyLWNvbnRlbnQubWF0LXdhcm5bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1jYWxlbmRhci1ib2R5LWluLWNvbXBhcmlzb24tcmFuZ2VbX25nY29udGVudC0lQ09NUCVdOjpiZWZvcmV7YmFja2dyb3VuZDpyZ2JhKDI0OSwxNzEsMCwuMil9Lm1hdC1kYXRlcGlja2VyLWNvbnRlbnQubWF0LXdhcm5bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1jYWxlbmRhci1ib2R5LWNvbXBhcmlzb24tYnJpZGdlLXN0YXJ0W19uZ2NvbnRlbnQtJUNPTVAlXTo6YmVmb3JlLCAubWF0LWRhdGVwaWNrZXItY29udGVudC5tYXQtd2Fybltfbmdjb250ZW50LSVDT01QJV0gICBbZGlyPXJ0bF1bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1jYWxlbmRhci1ib2R5LWNvbXBhcmlzb24tYnJpZGdlLWVuZFtfbmdjb250ZW50LSVDT01QJV06OmJlZm9yZXtiYWNrZ3JvdW5kOmxpbmVhci1ncmFkaWVudCh0byByaWdodCwgcmdiYSgyNDQsIDY3LCA1NCwgMC4yKSA1MCUsIHJnYmEoMjQ5LCAxNzEsIDAsIDAuMikgNTAlKX0ubWF0LWRhdGVwaWNrZXItY29udGVudC5tYXQtd2Fybltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWNhbGVuZGFyLWJvZHktY29tcGFyaXNvbi1icmlkZ2UtZW5kW19uZ2NvbnRlbnQtJUNPTVAlXTo6YmVmb3JlLCAubWF0LWRhdGVwaWNrZXItY29udGVudC5tYXQtd2Fybltfbmdjb250ZW50LSVDT01QJV0gICBbZGlyPXJ0bF1bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1jYWxlbmRhci1ib2R5LWNvbXBhcmlzb24tYnJpZGdlLXN0YXJ0W19uZ2NvbnRlbnQtJUNPTVAlXTo6YmVmb3Jle2JhY2tncm91bmQ6bGluZWFyLWdyYWRpZW50KHRvIGxlZnQsIHJnYmEoMjQ0LCA2NywgNTQsIDAuMikgNTAlLCByZ2JhKDI0OSwgMTcxLCAwLCAwLjIpIDUwJSl9Lm1hdC1kYXRlcGlja2VyLWNvbnRlbnQubWF0LXdhcm5bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1jYWxlbmRhci1ib2R5LWluLXJhbmdlW19uZ2NvbnRlbnQtJUNPTVAlXSA+IC5tYXQtY2FsZW5kYXItYm9keS1jb21wYXJpc29uLWlkZW50aWNhbFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtZGF0ZXBpY2tlci1jb250ZW50Lm1hdC13YXJuW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtY2FsZW5kYXItYm9keS1pbi1jb21wYXJpc29uLXJhbmdlLm1hdC1jYWxlbmRhci1ib2R5LWluLXJhbmdlW19uZ2NvbnRlbnQtJUNPTVAlXTo6YWZ0ZXJ7YmFja2dyb3VuZDojYThkYWI1fS5tYXQtZGF0ZXBpY2tlci1jb250ZW50Lm1hdC13YXJuW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtY2FsZW5kYXItYm9keS1jb21wYXJpc29uLWlkZW50aWNhbC5tYXQtY2FsZW5kYXItYm9keS1zZWxlY3RlZFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtZGF0ZXBpY2tlci1jb250ZW50Lm1hdC13YXJuW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtY2FsZW5kYXItYm9keS1pbi1jb21wYXJpc29uLXJhbmdlW19uZ2NvbnRlbnQtJUNPTVAlXSA+IC5tYXQtY2FsZW5kYXItYm9keS1zZWxlY3RlZFtfbmdjb250ZW50LSVDT01QJV17YmFja2dyb3VuZDojNDZhMzVlfS5tYXQtZGF0ZXBpY2tlci1jb250ZW50Lm1hdC13YXJuW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtY2FsZW5kYXItYm9keS1zZWxlY3RlZFtfbmdjb250ZW50LSVDT01QJV17YmFja2dyb3VuZC1jb2xvcjojZjQ0MzM2O2NvbG9yOiNmZmZ9Lm1hdC1kYXRlcGlja2VyLWNvbnRlbnQubWF0LXdhcm5bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1jYWxlbmRhci1ib2R5LWRpc2FibGVkW19uZ2NvbnRlbnQtJUNPTVAlXSA+IC5tYXQtY2FsZW5kYXItYm9keS1zZWxlY3RlZFtfbmdjb250ZW50LSVDT01QJV17YmFja2dyb3VuZC1jb2xvcjpyZ2JhKDI0NCw2Nyw1NCwuNCl9Lm1hdC1kYXRlcGlja2VyLWNvbnRlbnQubWF0LXdhcm5bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1jYWxlbmRhci1ib2R5LXRvZGF5Lm1hdC1jYWxlbmRhci1ib2R5LXNlbGVjdGVkW19uZ2NvbnRlbnQtJUNPTVAlXXtib3gtc2hhZG93Omluc2V0IDAgMCAwIDFweCAjZmZmfS5tYXQtZGF0ZXBpY2tlci1jb250ZW50LXRvdWNoW19uZ2NvbnRlbnQtJUNPTVAlXXtib3gtc2hhZG93OjBweCAwcHggMHB4IDBweCByZ2JhKDAsIDAsIDAsIDAuMiksMHB4IDBweCAwcHggMHB4IHJnYmEoMCwgMCwgMCwgMC4xNCksMHB4IDBweCAwcHggMHB4IHJnYmEoMCwgMCwgMCwgMC4xMil9Lm1hdC1kYXRlcGlja2VyLXRvZ2dsZS1hY3RpdmVbX25nY29udGVudC0lQ09NUCVde2NvbG9yOiNmNTdjMDB9Lm1hdC1kYXRlcGlja2VyLXRvZ2dsZS1hY3RpdmUubWF0LWFjY2VudFtfbmdjb250ZW50LSVDT01QJV17Y29sb3I6I2ZmOTgwMH0ubWF0LWRhdGVwaWNrZXItdG9nZ2xlLWFjdGl2ZS5tYXQtd2Fybltfbmdjb250ZW50LSVDT01QJV17Y29sb3I6I2Y0NDMzNn0ubWF0LWRhdGUtcmFuZ2UtaW5wdXQtaW5uZXJbZGlzYWJsZWRdW19uZ2NvbnRlbnQtJUNPTVAlXXtjb2xvcjojNzU3NTc1fS5tYXQtZGlhbG9nLWNvbnRhaW5lcltfbmdjb250ZW50LSVDT01QJV17Ym94LXNoYWRvdzowcHggMTFweCAxNXB4IC03cHggcmdiYSgwLCAwLCAwLCAwLjIpLDBweCAyNHB4IDM4cHggM3B4IHJnYmEoMCwgMCwgMCwgMC4xNCksMHB4IDlweCA0NnB4IDhweCByZ2JhKDAsIDAsIDAsIDAuMTIpO2JhY2tncm91bmQ6I2ZmZjtjb2xvcjojMjEyMTIxfS5tYXQtZGl2aWRlcltfbmdjb250ZW50LSVDT01QJV17Ym9yZGVyLXRvcC1jb2xvcjpyZ2JhKDAsMCwwLC4xMil9Lm1hdC1kaXZpZGVyLXZlcnRpY2FsW19uZ2NvbnRlbnQtJUNPTVAlXXtib3JkZXItcmlnaHQtY29sb3I6cmdiYSgwLDAsMCwuMTIpfS5tYXQtZXhwYW5zaW9uLXBhbmVsW19uZ2NvbnRlbnQtJUNPTVAlXXtiYWNrZ3JvdW5kOiNmZmY7Y29sb3I6IzIxMjEyMX0ubWF0LWV4cGFuc2lvbi1wYW5lbFtfbmdjb250ZW50LSVDT01QJV06bm90KFtjbGFzcyo9bWF0LWVsZXZhdGlvbi16XSl7Ym94LXNoYWRvdzowcHggM3B4IDFweCAtMnB4IHJnYmEoMCwgMCwgMCwgMC4yKSwwcHggMnB4IDJweCAwcHggcmdiYSgwLCAwLCAwLCAwLjE0KSwwcHggMXB4IDVweCAwcHggcmdiYSgwLCAwLCAwLCAwLjEyKX0ubWF0LWFjdGlvbi1yb3dbX25nY29udGVudC0lQ09NUCVde2JvcmRlci10b3AtY29sb3I6cmdiYSgwLDAsMCwuMTIpfS5tYXQtZXhwYW5zaW9uLXBhbmVsW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZXhwYW5zaW9uLXBhbmVsLWhlYWRlci5jZGsta2V5Ym9hcmQtZm9jdXNlZFtfbmdjb250ZW50LSVDT01QJV06bm90KFthcmlhLWRpc2FibGVkPXRydWVdKSwgLm1hdC1leHBhbnNpb24tcGFuZWxbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1leHBhbnNpb24tcGFuZWwtaGVhZGVyLmNkay1wcm9ncmFtLWZvY3VzZWRbX25nY29udGVudC0lQ09NUCVdOm5vdChbYXJpYS1kaXNhYmxlZD10cnVlXSksIC5tYXQtZXhwYW5zaW9uLXBhbmVsW19uZ2NvbnRlbnQtJUNPTVAlXTpub3QoLm1hdC1leHBhbmRlZCkgICAubWF0LWV4cGFuc2lvbi1wYW5lbC1oZWFkZXJbX25nY29udGVudC0lQ09NUCVdOmhvdmVyOm5vdChbYXJpYS1kaXNhYmxlZD10cnVlXSl7YmFja2dyb3VuZDpyZ2JhKDAsMCwwLC4wNCl9QG1lZGlhKGhvdmVyOiBub25lKXsubWF0LWV4cGFuc2lvbi1wYW5lbFtfbmdjb250ZW50LSVDT01QJV06bm90KC5tYXQtZXhwYW5kZWQpOm5vdChbYXJpYS1kaXNhYmxlZD10cnVlXSkgICAubWF0LWV4cGFuc2lvbi1wYW5lbC1oZWFkZXJbX25nY29udGVudC0lQ09NUCVdOmhvdmVye2JhY2tncm91bmQ6I2ZmZn19Lm1hdC1leHBhbnNpb24tcGFuZWwtaGVhZGVyLXRpdGxlW19uZ2NvbnRlbnQtJUNPTVAlXXtjb2xvcjojMjEyMTIxfS5tYXQtZXhwYW5zaW9uLXBhbmVsLWhlYWRlci1kZXNjcmlwdGlvbltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtZXhwYW5zaW9uLWluZGljYXRvcltfbmdjb250ZW50LSVDT01QJV06OmFmdGVye2NvbG9yOiM2MTYxNjF9Lm1hdC1leHBhbnNpb24tcGFuZWwtaGVhZGVyW2FyaWEtZGlzYWJsZWQ9dHJ1ZV1bX25nY29udGVudC0lQ09NUCVde2NvbG9yOnJnYmEoMCwwLDAsLjI2KX0ubWF0LWV4cGFuc2lvbi1wYW5lbC1oZWFkZXJbYXJpYS1kaXNhYmxlZD10cnVlXVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWV4cGFuc2lvbi1wYW5lbC1oZWFkZXItdGl0bGVbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWV4cGFuc2lvbi1wYW5lbC1oZWFkZXJbYXJpYS1kaXNhYmxlZD10cnVlXVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWV4cGFuc2lvbi1wYW5lbC1oZWFkZXItZGVzY3JpcHRpb25bX25nY29udGVudC0lQ09NUCVde2NvbG9yOmluaGVyaXR9Lm1hdC1leHBhbnNpb24tcGFuZWwtaGVhZGVyW19uZ2NvbnRlbnQtJUNPTVAlXXtoZWlnaHQ6NDhweH0ubWF0LWV4cGFuc2lvbi1wYW5lbC1oZWFkZXIubWF0LWV4cGFuZGVkW19uZ2NvbnRlbnQtJUNPTVAlXXtoZWlnaHQ6NjRweH0ubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVde2NvbG9yOnJnYmEoOTcsOTcsOTcsLjYpfS5tYXQtaGludFtfbmdjb250ZW50LSVDT01QJV17Y29sb3I6cmdiYSg5Nyw5Nyw5NywuNil9Lm1hdC1mb3JtLWZpZWxkLm1hdC1mb2N1c2VkW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17Y29sb3I6I2Y1N2MwMH0ubWF0LWZvcm0tZmllbGQubWF0LWZvY3VzZWRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsLm1hdC1hY2NlbnRbX25nY29udGVudC0lQ09NUCVde2NvbG9yOiNmZjk4MDB9Lm1hdC1mb3JtLWZpZWxkLm1hdC1mb2N1c2VkW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbC5tYXQtd2Fybltfbmdjb250ZW50LSVDT01QJV17Y29sb3I6I2Y0NDMzNn0ubWF0LWZvY3VzZWRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLXJlcXVpcmVkLW1hcmtlcltfbmdjb250ZW50LSVDT01QJV17Y29sb3I6I2ZmOTgwMH0ubWF0LWZvcm0tZmllbGQtcmlwcGxlW19uZ2NvbnRlbnQtJUNPTVAlXXtiYWNrZ3JvdW5kLWNvbG9yOnJnYmEoMCwwLDAsLjg3KX0ubWF0LWZvcm0tZmllbGQubWF0LWZvY3VzZWRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLXJpcHBsZVtfbmdjb250ZW50LSVDT01QJV17YmFja2dyb3VuZC1jb2xvcjojZjU3YzAwfS5tYXQtZm9ybS1maWVsZC5tYXQtZm9jdXNlZFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtcmlwcGxlLm1hdC1hY2NlbnRbX25nY29udGVudC0lQ09NUCVde2JhY2tncm91bmQtY29sb3I6I2ZmOTgwMH0ubWF0LWZvcm0tZmllbGQubWF0LWZvY3VzZWRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLXJpcHBsZS5tYXQtd2Fybltfbmdjb250ZW50LSVDT01QJV17YmFja2dyb3VuZC1jb2xvcjojZjQ0MzM2fS5tYXQtZm9ybS1maWVsZC10eXBlLW1hdC1uYXRpdmUtc2VsZWN0Lm1hdC1mb2N1c2VkW19uZ2NvbnRlbnQtJUNPTVAlXTpub3QoLm1hdC1mb3JtLWZpZWxkLWludmFsaWQpICAgLm1hdC1mb3JtLWZpZWxkLWluZml4W19uZ2NvbnRlbnQtJUNPTVAlXTo6YWZ0ZXJ7Y29sb3I6I2Y1N2MwMH0ubWF0LWZvcm0tZmllbGQtdHlwZS1tYXQtbmF0aXZlLXNlbGVjdC5tYXQtZm9jdXNlZFtfbmdjb250ZW50LSVDT01QJV06bm90KC5tYXQtZm9ybS1maWVsZC1pbnZhbGlkKS5tYXQtYWNjZW50ICAgLm1hdC1mb3JtLWZpZWxkLWluZml4W19uZ2NvbnRlbnQtJUNPTVAlXTo6YWZ0ZXJ7Y29sb3I6I2ZmOTgwMH0ubWF0LWZvcm0tZmllbGQtdHlwZS1tYXQtbmF0aXZlLXNlbGVjdC5tYXQtZm9jdXNlZFtfbmdjb250ZW50LSVDT01QJV06bm90KC5tYXQtZm9ybS1maWVsZC1pbnZhbGlkKS5tYXQtd2FybiAgIC5tYXQtZm9ybS1maWVsZC1pbmZpeFtfbmdjb250ZW50LSVDT01QJV06OmFmdGVye2NvbG9yOiNmNDQzMzZ9Lm1hdC1mb3JtLWZpZWxkLm1hdC1mb3JtLWZpZWxkLWludmFsaWRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXtjb2xvcjojZjQ0MzM2fS5tYXQtZm9ybS1maWVsZC5tYXQtZm9ybS1maWVsZC1pbnZhbGlkW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbC5tYXQtYWNjZW50W19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1mb3JtLWZpZWxkLm1hdC1mb3JtLWZpZWxkLWludmFsaWRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1yZXF1aXJlZC1tYXJrZXJbX25nY29udGVudC0lQ09NUCVde2NvbG9yOiNmNDQzMzZ9Lm1hdC1mb3JtLWZpZWxkLm1hdC1mb3JtLWZpZWxkLWludmFsaWRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLXJpcHBsZVtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtZm9ybS1maWVsZC5tYXQtZm9ybS1maWVsZC1pbnZhbGlkW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1yaXBwbGUubWF0LWFjY2VudFtfbmdjb250ZW50LSVDT01QJV17YmFja2dyb3VuZC1jb2xvcjojZjQ0MzM2fS5tYXQtZXJyb3JbX25nY29udGVudC0lQ09NUCVde2NvbG9yOiNmNDQzMzZ9Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtbGVnYWN5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17Y29sb3I6IzYxNjE2MX0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1sZWdhY3lbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1oaW50W19uZ2NvbnRlbnQtJUNPTVAlXXtjb2xvcjojNjE2MTYxfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWxlZ2FjeVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtdW5kZXJsaW5lW19uZ2NvbnRlbnQtJUNPTVAlXXtiYWNrZ3JvdW5kLWNvbG9yOnJnYmEoMCwwLDAsLjQyKX0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1sZWdhY3kubWF0LWZvcm0tZmllbGQtZGlzYWJsZWRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLXVuZGVybGluZVtfbmdjb250ZW50LSVDT01QJV17YmFja2dyb3VuZC1pbWFnZTpsaW5lYXItZ3JhZGllbnQodG8gcmlnaHQsIHJnYmEoMCwgMCwgMCwgMC40MikgMCUsIHJnYmEoMCwgMCwgMCwgMC40MikgMzMlLCB0cmFuc3BhcmVudCAwJSk7YmFja2dyb3VuZC1zaXplOjRweCAxMDAlO2JhY2tncm91bmQtcmVwZWF0OnJlcGVhdC14fS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLXN0YW5kYXJkW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC11bmRlcmxpbmVbX25nY29udGVudC0lQ09NUCVde2JhY2tncm91bmQtY29sb3I6cmdiYSgwLDAsMCwuNDIpfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLXN0YW5kYXJkLm1hdC1mb3JtLWZpZWxkLWRpc2FibGVkW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC11bmRlcmxpbmVbX25nY29udGVudC0lQ09NUCVde2JhY2tncm91bmQtaW1hZ2U6bGluZWFyLWdyYWRpZW50KHRvIHJpZ2h0LCByZ2JhKDAsIDAsIDAsIDAuNDIpIDAlLCByZ2JhKDAsIDAsIDAsIDAuNDIpIDMzJSwgdHJhbnNwYXJlbnQgMCUpO2JhY2tncm91bmQtc2l6ZTo0cHggMTAwJTtiYWNrZ3JvdW5kLXJlcGVhdDpyZXBlYXQteH0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1maWxsW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1mbGV4W19uZ2NvbnRlbnQtJUNPTVAlXXtiYWNrZ3JvdW5kLWNvbG9yOnJnYmEoMCwwLDAsLjA0KX0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1maWxsLm1hdC1mb3JtLWZpZWxkLWRpc2FibGVkW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1mbGV4W19uZ2NvbnRlbnQtJUNPTVAlXXtiYWNrZ3JvdW5kLWNvbG9yOnJnYmEoMCwwLDAsLjAyKX0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1maWxsW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC11bmRlcmxpbmVbX25nY29udGVudC0lQ09NUCVdOjpiZWZvcmV7YmFja2dyb3VuZC1jb2xvcjpyZ2JhKDAsMCwwLC40Mil9Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtZmlsbC5tYXQtZm9ybS1maWVsZC1kaXNhYmxlZFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVde2NvbG9yOiM3NTc1NzV9Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtZmlsbC5tYXQtZm9ybS1maWVsZC1kaXNhYmxlZFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtdW5kZXJsaW5lW19uZ2NvbnRlbnQtJUNPTVAlXTo6YmVmb3Jle2JhY2tncm91bmQtY29sb3I6dHJhbnNwYXJlbnR9Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2Utb3V0bGluZVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtb3V0bGluZVtfbmdjb250ZW50LSVDT01QJV17Y29sb3I6cmdiYSgwLDAsMCwuMTIpfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLW91dGxpbmVbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLW91dGxpbmUtdGhpY2tbX25nY29udGVudC0lQ09NUCVde2NvbG9yOnJnYmEoMCwwLDAsLjg3KX0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1vdXRsaW5lLm1hdC1mb2N1c2VkW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1vdXRsaW5lLXRoaWNrW19uZ2NvbnRlbnQtJUNPTVAlXXtjb2xvcjojZjU3YzAwfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLW91dGxpbmUubWF0LWZvY3VzZWQubWF0LWFjY2VudFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtb3V0bGluZS10aGlja1tfbmdjb250ZW50LSVDT01QJV17Y29sb3I6I2ZmOTgwMH0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1vdXRsaW5lLm1hdC1mb2N1c2VkLm1hdC13YXJuW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1vdXRsaW5lLXRoaWNrW19uZ2NvbnRlbnQtJUNPTVAlXXtjb2xvcjojZjQ0MzM2fS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLW91dGxpbmUubWF0LWZvcm0tZmllbGQtaW52YWxpZC5tYXQtZm9ybS1maWVsZC1pbnZhbGlkW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1vdXRsaW5lLXRoaWNrW19uZ2NvbnRlbnQtJUNPTVAlXXtjb2xvcjojZjQ0MzM2fS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLW91dGxpbmUubWF0LWZvcm0tZmllbGQtZGlzYWJsZWRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXtjb2xvcjojNzU3NTc1fS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLW91dGxpbmUubWF0LWZvcm0tZmllbGQtZGlzYWJsZWRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLW91dGxpbmVbX25nY29udGVudC0lQ09NUCVde2NvbG9yOnJnYmEoMCwwLDAsLjA2KX0ubWF0LWljb24ubWF0LXByaW1hcnlbX25nY29udGVudC0lQ09NUCVde2NvbG9yOiNmNTdjMDB9Lm1hdC1pY29uLm1hdC1hY2NlbnRbX25nY29udGVudC0lQ09NUCVde2NvbG9yOiNmZjk4MDB9Lm1hdC1pY29uLm1hdC13YXJuW19uZ2NvbnRlbnQtJUNPTVAlXXtjb2xvcjojZjQ0MzM2fS5tYXQtZm9ybS1maWVsZC10eXBlLW1hdC1uYXRpdmUtc2VsZWN0W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1pbmZpeFtfbmdjb250ZW50LSVDT01QJV06OmFmdGVye2NvbG9yOiM2MTYxNjF9Lm1hdC1pbnB1dC1lbGVtZW50W19uZ2NvbnRlbnQtJUNPTVAlXTpkaXNhYmxlZCwgLm1hdC1mb3JtLWZpZWxkLXR5cGUtbWF0LW5hdGl2ZS1zZWxlY3QubWF0LWZvcm0tZmllbGQtZGlzYWJsZWRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWluZml4W19uZ2NvbnRlbnQtJUNPTVAlXTo6YWZ0ZXJ7Y29sb3I6Izc1NzU3NX0ubWF0LWlucHV0LWVsZW1lbnRbX25nY29udGVudC0lQ09NUCVde2NhcmV0LWNvbG9yOiNmNTdjMDB9Lm1hdC1pbnB1dC1lbGVtZW50W19uZ2NvbnRlbnQtJUNPTVAlXTo6cGxhY2Vob2xkZXJ7Y29sb3I6cmdiYSg5Nyw5Nyw5NywuNDIpfS5tYXQtaW5wdXQtZWxlbWVudFtfbmdjb250ZW50LSVDT01QJV06Oi1tb3otcGxhY2Vob2xkZXJ7Y29sb3I6cmdiYSg5Nyw5Nyw5NywuNDIpfS5tYXQtaW5wdXQtZWxlbWVudFtfbmdjb250ZW50LSVDT01QJV06Oi13ZWJraXQtaW5wdXQtcGxhY2Vob2xkZXJ7Y29sb3I6cmdiYSg5Nyw5Nyw5NywuNDIpfS5tYXQtaW5wdXQtZWxlbWVudFtfbmdjb250ZW50LSVDT01QJV06LW1zLWlucHV0LXBsYWNlaG9sZGVye2NvbG9yOnJnYmEoOTcsOTcsOTcsLjQyKX0ubWF0LWZvcm0tZmllbGQubWF0LWFjY2VudFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWlucHV0LWVsZW1lbnRbX25nY29udGVudC0lQ09NUCVde2NhcmV0LWNvbG9yOiNmZjk4MDB9Lm1hdC1mb3JtLWZpZWxkLm1hdC13YXJuW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaW5wdXQtZWxlbWVudFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtZm9ybS1maWVsZC1pbnZhbGlkW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaW5wdXQtZWxlbWVudFtfbmdjb250ZW50LSVDT01QJV17Y2FyZXQtY29sb3I6I2Y0NDMzNn0ubWF0LWZvcm0tZmllbGQtdHlwZS1tYXQtbmF0aXZlLXNlbGVjdC5tYXQtZm9ybS1maWVsZC1pbnZhbGlkW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1pbmZpeFtfbmdjb250ZW50LSVDT01QJV06OmFmdGVye2NvbG9yOiNmNDQzMzZ9Lm1hdC1saXN0LWJhc2VbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saXN0LWl0ZW1bX25nY29udGVudC0lQ09NUCVde2NvbG9yOiMyMTIxMjF9Lm1hdC1saXN0LWJhc2VbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saXN0LW9wdGlvbltfbmdjb250ZW50LSVDT01QJV17Y29sb3I6IzIxMjEyMX0ubWF0LWxpc3QtYmFzZVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXN1YmhlYWRlcltfbmdjb250ZW50LSVDT01QJV17Y29sb3I6IzYxNjE2MX0ubWF0LWxpc3QtaXRlbS1kaXNhYmxlZFtfbmdjb250ZW50LSVDT01QJV17YmFja2dyb3VuZC1jb2xvcjojZWVlfS5tYXQtbGlzdC1vcHRpb25bX25nY29udGVudC0lQ09NUCVdOmhvdmVyLCAubWF0LWxpc3Qtb3B0aW9uW19uZ2NvbnRlbnQtJUNPTVAlXTpmb2N1cywgLm1hdC1uYXYtbGlzdFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpc3QtaXRlbVtfbmdjb250ZW50LSVDT01QJV06aG92ZXIsIC5tYXQtbmF2LWxpc3RbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saXN0LWl0ZW1bX25nY29udGVudC0lQ09NUCVdOmZvY3VzLCAubWF0LWFjdGlvbi1saXN0W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGlzdC1pdGVtW19uZ2NvbnRlbnQtJUNPTVAlXTpob3ZlciwgLm1hdC1hY3Rpb24tbGlzdFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpc3QtaXRlbVtfbmdjb250ZW50LSVDT01QJV06Zm9jdXN7YmFja2dyb3VuZDpyZ2JhKDAsMCwwLC4wNCl9Lm1hdC1saXN0LXNpbmdsZS1zZWxlY3RlZC1vcHRpb25bX25nY29udGVudC0lQ09NUCVdLCAubWF0LWxpc3Qtc2luZ2xlLXNlbGVjdGVkLW9wdGlvbltfbmdjb250ZW50LSVDT01QJV06aG92ZXIsIC5tYXQtbGlzdC1zaW5nbGUtc2VsZWN0ZWQtb3B0aW9uW19uZ2NvbnRlbnQtJUNPTVAlXTpmb2N1c3tiYWNrZ3JvdW5kOnJnYmEoMCwwLDAsLjEyKX0ubWF0LW1lbnUtcGFuZWxbX25nY29udGVudC0lQ09NUCVde2JhY2tncm91bmQ6I2ZmZn0ubWF0LW1lbnUtcGFuZWxbX25nY29udGVudC0lQ09NUCVdOm5vdChbY2xhc3MqPW1hdC1lbGV2YXRpb24tel0pe2JveC1zaGFkb3c6MHB4IDJweCA0cHggLTFweCByZ2JhKDAsIDAsIDAsIDAuMiksMHB4IDRweCA1cHggMHB4IHJnYmEoMCwgMCwgMCwgMC4xNCksMHB4IDFweCAxMHB4IDBweCByZ2JhKDAsIDAsIDAsIDAuMTIpfS5tYXQtbWVudS1pdGVtW19uZ2NvbnRlbnQtJUNPTVAlXXtiYWNrZ3JvdW5kOnRyYW5zcGFyZW50O2NvbG9yOiMyMTIxMjF9Lm1hdC1tZW51LWl0ZW1bZGlzYWJsZWRdW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1tZW51LWl0ZW1bZGlzYWJsZWRdW19uZ2NvbnRlbnQtJUNPTVAlXTo6YWZ0ZXJ7Y29sb3I6cmdiYSgwLDAsMCwuMzgpfS5tYXQtbWVudS1pdGVtW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaWNvbi1uby1jb2xvcltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtbWVudS1pdGVtLXN1Ym1lbnUtdHJpZ2dlcltfbmdjb250ZW50LSVDT01QJV06OmFmdGVye2NvbG9yOnJnYmEoMCwwLDAsLjU0KX0ubWF0LW1lbnUtaXRlbVtfbmdjb250ZW50LSVDT01QJV06aG92ZXI6bm90KFtkaXNhYmxlZF0pLCAubWF0LW1lbnUtaXRlbS5jZGstcHJvZ3JhbS1mb2N1c2VkW19uZ2NvbnRlbnQtJUNPTVAlXTpub3QoW2Rpc2FibGVkXSksIC5tYXQtbWVudS1pdGVtLmNkay1rZXlib2FyZC1mb2N1c2VkW19uZ2NvbnRlbnQtJUNPTVAlXTpub3QoW2Rpc2FibGVkXSksIC5tYXQtbWVudS1pdGVtLWhpZ2hsaWdodGVkW19uZ2NvbnRlbnQtJUNPTVAlXTpub3QoW2Rpc2FibGVkXSl7YmFja2dyb3VuZDpyZ2JhKDAsMCwwLC4wNCl9Lm1hdC1wYWdpbmF0b3JbX25nY29udGVudC0lQ09NUCVde2JhY2tncm91bmQ6I2ZmZn0ubWF0LXBhZ2luYXRvcltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtcGFnaW5hdG9yLXBhZ2Utc2l6ZVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXNlbGVjdC10cmlnZ2VyW19uZ2NvbnRlbnQtJUNPTVAlXXtjb2xvcjojNjE2MTYxfS5tYXQtcGFnaW5hdG9yLWRlY3JlbWVudFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtcGFnaW5hdG9yLWluY3JlbWVudFtfbmdjb250ZW50LSVDT01QJV17Ym9yZGVyLXRvcDoycHggc29saWQgcmdiYSgwLDAsMCwuNTQpO2JvcmRlci1yaWdodDoycHggc29saWQgcmdiYSgwLDAsMCwuNTQpfS5tYXQtcGFnaW5hdG9yLWZpcnN0W19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1wYWdpbmF0b3ItbGFzdFtfbmdjb250ZW50LSVDT01QJV17Ym9yZGVyLXRvcDoycHggc29saWQgcmdiYSgwLDAsMCwuNTQpfS5tYXQtaWNvbi1idXR0b25bZGlzYWJsZWRdW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtcGFnaW5hdG9yLWRlY3JlbWVudFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtaWNvbi1idXR0b25bZGlzYWJsZWRdW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtcGFnaW5hdG9yLWluY3JlbWVudFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtaWNvbi1idXR0b25bZGlzYWJsZWRdW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtcGFnaW5hdG9yLWZpcnN0W19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1pY29uLWJ1dHRvbltkaXNhYmxlZF1bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1wYWdpbmF0b3ItbGFzdFtfbmdjb250ZW50LSVDT01QJV17Ym9yZGVyLWNvbG9yOnJnYmEoMCwwLDAsLjM4KX0ubWF0LXBhZ2luYXRvci1jb250YWluZXJbX25nY29udGVudC0lQ09NUCVde21pbi1oZWlnaHQ6NTZweH0ubWF0LXByb2dyZXNzLWJhci1iYWNrZ3JvdW5kW19uZ2NvbnRlbnQtJUNPTVAlXXtmaWxsOiNmZjk4MDB9Lm1hdC1wcm9ncmVzcy1iYXItYnVmZmVyW19uZ2NvbnRlbnQtJUNPTVAlXXtiYWNrZ3JvdW5kLWNvbG9yOiNmZjk4MDB9Lm1hdC1wcm9ncmVzcy1iYXItZmlsbFtfbmdjb250ZW50LSVDT01QJV06OmFmdGVye2JhY2tncm91bmQtY29sb3I6I2Y1N2MwMH0ubWF0LXByb2dyZXNzLWJhci5tYXQtYWNjZW50W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtcHJvZ3Jlc3MtYmFyLWJhY2tncm91bmRbX25nY29udGVudC0lQ09NUCVde2ZpbGw6I2ZmOTgwMH0ubWF0LXByb2dyZXNzLWJhci5tYXQtYWNjZW50W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtcHJvZ3Jlc3MtYmFyLWJ1ZmZlcltfbmdjb250ZW50LSVDT01QJV17YmFja2dyb3VuZC1jb2xvcjojZmY5ODAwfS5tYXQtcHJvZ3Jlc3MtYmFyLm1hdC1hY2NlbnRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1wcm9ncmVzcy1iYXItZmlsbFtfbmdjb250ZW50LSVDT01QJV06OmFmdGVye2JhY2tncm91bmQtY29sb3I6I2ZmOTgwMH0ubWF0LXByb2dyZXNzLWJhci5tYXQtd2Fybltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXByb2dyZXNzLWJhci1iYWNrZ3JvdW5kW19uZ2NvbnRlbnQtJUNPTVAlXXtmaWxsOiNmZmNkZDJ9Lm1hdC1wcm9ncmVzcy1iYXIubWF0LXdhcm5bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1wcm9ncmVzcy1iYXItYnVmZmVyW19uZ2NvbnRlbnQtJUNPTVAlXXtiYWNrZ3JvdW5kLWNvbG9yOiNmZmNkZDJ9Lm1hdC1wcm9ncmVzcy1iYXIubWF0LXdhcm5bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1wcm9ncmVzcy1iYXItZmlsbFtfbmdjb250ZW50LSVDT01QJV06OmFmdGVye2JhY2tncm91bmQtY29sb3I6I2Y0NDMzNn0ubWF0LXByb2dyZXNzLXNwaW5uZXJbX25nY29udGVudC0lQ09NUCVdICAgY2lyY2xlW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1zcGlubmVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIGNpcmNsZVtfbmdjb250ZW50LSVDT01QJV17c3Ryb2tlOiNmNTdjMDB9Lm1hdC1wcm9ncmVzcy1zcGlubmVyLm1hdC1hY2NlbnRbX25nY29udGVudC0lQ09NUCVdICAgY2lyY2xlW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1zcGlubmVyLm1hdC1hY2NlbnRbX25nY29udGVudC0lQ09NUCVdICAgY2lyY2xlW19uZ2NvbnRlbnQtJUNPTVAlXXtzdHJva2U6I2ZmOTgwMH0ubWF0LXByb2dyZXNzLXNwaW5uZXIubWF0LXdhcm5bX25nY29udGVudC0lQ09NUCVdICAgY2lyY2xlW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1zcGlubmVyLm1hdC13YXJuW19uZ2NvbnRlbnQtJUNPTVAlXSAgIGNpcmNsZVtfbmdjb250ZW50LSVDT01QJV17c3Ryb2tlOiNmNDQzMzZ9Lm1hdC1yYWRpby1vdXRlci1jaXJjbGVbX25nY29udGVudC0lQ09NUCVde2JvcmRlci1jb2xvcjojNjE2MTYxfS5tYXQtcmFkaW8tYnV0dG9uLm1hdC1wcmltYXJ5Lm1hdC1yYWRpby1jaGVja2VkW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtcmFkaW8tb3V0ZXItY2lyY2xlW19uZ2NvbnRlbnQtJUNPTVAlXXtib3JkZXItY29sb3I6I2Y1N2MwMH0ubWF0LXJhZGlvLWJ1dHRvbi5tYXQtcHJpbWFyeVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXJhZGlvLWlubmVyLWNpcmNsZVtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtcmFkaW8tYnV0dG9uLm1hdC1wcmltYXJ5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtcmFkaW8tcmlwcGxlW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtcmlwcGxlLWVsZW1lbnRbX25nY29udGVudC0lQ09NUCVdOm5vdCgubWF0LXJhZGlvLXBlcnNpc3RlbnQtcmlwcGxlKSwgLm1hdC1yYWRpby1idXR0b24ubWF0LXByaW1hcnkubWF0LXJhZGlvLWNoZWNrZWRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1yYWRpby1wZXJzaXN0ZW50LXJpcHBsZVtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtcmFkaW8tYnV0dG9uLm1hdC1wcmltYXJ5W19uZ2NvbnRlbnQtJUNPTVAlXTphY3RpdmUgICAubWF0LXJhZGlvLXBlcnNpc3RlbnQtcmlwcGxlW19uZ2NvbnRlbnQtJUNPTVAlXXtiYWNrZ3JvdW5kLWNvbG9yOiNmNTdjMDB9Lm1hdC1yYWRpby1idXR0b24ubWF0LWFjY2VudC5tYXQtcmFkaW8tY2hlY2tlZFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXJhZGlvLW91dGVyLWNpcmNsZVtfbmdjb250ZW50LSVDT01QJV17Ym9yZGVyLWNvbG9yOiNmZjk4MDB9Lm1hdC1yYWRpby1idXR0b24ubWF0LWFjY2VudFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXJhZGlvLWlubmVyLWNpcmNsZVtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtcmFkaW8tYnV0dG9uLm1hdC1hY2NlbnRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1yYWRpby1yaXBwbGVbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1yaXBwbGUtZWxlbWVudFtfbmdjb250ZW50LSVDT01QJV06bm90KC5tYXQtcmFkaW8tcGVyc2lzdGVudC1yaXBwbGUpLCAubWF0LXJhZGlvLWJ1dHRvbi5tYXQtYWNjZW50Lm1hdC1yYWRpby1jaGVja2VkW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtcmFkaW8tcGVyc2lzdGVudC1yaXBwbGVbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXJhZGlvLWJ1dHRvbi5tYXQtYWNjZW50W19uZ2NvbnRlbnQtJUNPTVAlXTphY3RpdmUgICAubWF0LXJhZGlvLXBlcnNpc3RlbnQtcmlwcGxlW19uZ2NvbnRlbnQtJUNPTVAlXXtiYWNrZ3JvdW5kLWNvbG9yOiNmZjk4MDB9Lm1hdC1yYWRpby1idXR0b24ubWF0LXdhcm4ubWF0LXJhZGlvLWNoZWNrZWRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1yYWRpby1vdXRlci1jaXJjbGVbX25nY29udGVudC0lQ09NUCVde2JvcmRlci1jb2xvcjojZjQ0MzM2fS5tYXQtcmFkaW8tYnV0dG9uLm1hdC13YXJuW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtcmFkaW8taW5uZXItY2lyY2xlW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1yYWRpby1idXR0b24ubWF0LXdhcm5bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1yYWRpby1yaXBwbGVbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1yaXBwbGUtZWxlbWVudFtfbmdjb250ZW50LSVDT01QJV06bm90KC5tYXQtcmFkaW8tcGVyc2lzdGVudC1yaXBwbGUpLCAubWF0LXJhZGlvLWJ1dHRvbi5tYXQtd2Fybi5tYXQtcmFkaW8tY2hlY2tlZFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXJhZGlvLXBlcnNpc3RlbnQtcmlwcGxlW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1yYWRpby1idXR0b24ubWF0LXdhcm5bX25nY29udGVudC0lQ09NUCVdOmFjdGl2ZSAgIC5tYXQtcmFkaW8tcGVyc2lzdGVudC1yaXBwbGVbX25nY29udGVudC0lQ09NUCVde2JhY2tncm91bmQtY29sb3I6I2Y0NDMzNn0ubWF0LXJhZGlvLWJ1dHRvbi5tYXQtcmFkaW8tZGlzYWJsZWQubWF0LXJhZGlvLWNoZWNrZWRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1yYWRpby1vdXRlci1jaXJjbGVbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXJhZGlvLWJ1dHRvbi5tYXQtcmFkaW8tZGlzYWJsZWRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1yYWRpby1vdXRlci1jaXJjbGVbX25nY29udGVudC0lQ09NUCVde2JvcmRlci1jb2xvcjpyZ2JhKDAsMCwwLC4zOCl9Lm1hdC1yYWRpby1idXR0b24ubWF0LXJhZGlvLWRpc2FibGVkW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtcmFkaW8tcmlwcGxlW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtcmlwcGxlLWVsZW1lbnRbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXJhZGlvLWJ1dHRvbi5tYXQtcmFkaW8tZGlzYWJsZWRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1yYWRpby1pbm5lci1jaXJjbGVbX25nY29udGVudC0lQ09NUCVde2JhY2tncm91bmQtY29sb3I6cmdiYSgwLDAsMCwuMzgpfS5tYXQtcmFkaW8tYnV0dG9uLm1hdC1yYWRpby1kaXNhYmxlZFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXJhZGlvLWxhYmVsLWNvbnRlbnRbX25nY29udGVudC0lQ09NUCVde2NvbG9yOnJnYmEoMCwwLDAsLjM4KX0ubWF0LXJhZGlvLWJ1dHRvbltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXJpcHBsZS1lbGVtZW50W19uZ2NvbnRlbnQtJUNPTVAlXXtiYWNrZ3JvdW5kLWNvbG9yOiMwMDB9Lm1hdC1zZWxlY3QtdmFsdWVbX25nY29udGVudC0lQ09NUCVde2NvbG9yOiMyMTIxMjF9Lm1hdC1zZWxlY3QtcGxhY2Vob2xkZXJbX25nY29udGVudC0lQ09NUCVde2NvbG9yOnJnYmEoOTcsOTcsOTcsLjQyKX0ubWF0LXNlbGVjdC1kaXNhYmxlZFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXNlbGVjdC12YWx1ZVtfbmdjb250ZW50LSVDT01QJV17Y29sb3I6Izc1NzU3NX0ubWF0LXNlbGVjdC1hcnJvd1tfbmdjb250ZW50LSVDT01QJV17Y29sb3I6IzYxNjE2MX0ubWF0LXNlbGVjdC1wYW5lbFtfbmdjb250ZW50LSVDT01QJV17YmFja2dyb3VuZDojZmZmfS5tYXQtc2VsZWN0LXBhbmVsW19uZ2NvbnRlbnQtJUNPTVAlXTpub3QoW2NsYXNzKj1tYXQtZWxldmF0aW9uLXpdKXtib3gtc2hhZG93OjBweCAycHggNHB4IC0xcHggcmdiYSgwLCAwLCAwLCAwLjIpLDBweCA0cHggNXB4IDBweCByZ2JhKDAsIDAsIDAsIDAuMTQpLDBweCAxcHggMTBweCAwcHggcmdiYSgwLCAwLCAwLCAwLjEyKX0ubWF0LXNlbGVjdC1wYW5lbFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LW9wdGlvbi5tYXQtc2VsZWN0ZWRbX25nY29udGVudC0lQ09NUCVdOm5vdCgubWF0LW9wdGlvbi1tdWx0aXBsZSl7YmFja2dyb3VuZDpyZ2JhKDAsMCwwLC4xMil9Lm1hdC1mb3JtLWZpZWxkLm1hdC1mb2N1c2VkLm1hdC1wcmltYXJ5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtc2VsZWN0LWFycm93W19uZ2NvbnRlbnQtJUNPTVAlXXtjb2xvcjojZjU3YzAwfS5tYXQtZm9ybS1maWVsZC5tYXQtZm9jdXNlZC5tYXQtYWNjZW50W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtc2VsZWN0LWFycm93W19uZ2NvbnRlbnQtJUNPTVAlXXtjb2xvcjojZmY5ODAwfS5tYXQtZm9ybS1maWVsZC5tYXQtZm9jdXNlZC5tYXQtd2Fybltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXNlbGVjdC1hcnJvd1tfbmdjb250ZW50LSVDT01QJV17Y29sb3I6I2Y0NDMzNn0ubWF0LWZvcm0tZmllbGRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1zZWxlY3QubWF0LXNlbGVjdC1pbnZhbGlkW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtc2VsZWN0LWFycm93W19uZ2NvbnRlbnQtJUNPTVAlXXtjb2xvcjojZjQ0MzM2fS5tYXQtZm9ybS1maWVsZFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXNlbGVjdC5tYXQtc2VsZWN0LWRpc2FibGVkW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtc2VsZWN0LWFycm93W19uZ2NvbnRlbnQtJUNPTVAlXXtjb2xvcjojNzU3NTc1fS5tYXQtZHJhd2VyLWNvbnRhaW5lcltfbmdjb250ZW50LSVDT01QJV17YmFja2dyb3VuZC1jb2xvcjojZmFmYWZhO2NvbG9yOiMyMTIxMjF9Lm1hdC1kcmF3ZXJbX25nY29udGVudC0lQ09NUCVde2JhY2tncm91bmQtY29sb3I6I2ZmZjtjb2xvcjojMjEyMTIxfS5tYXQtZHJhd2VyLm1hdC1kcmF3ZXItcHVzaFtfbmdjb250ZW50LSVDT01QJV17YmFja2dyb3VuZC1jb2xvcjojZmZmfS5tYXQtZHJhd2VyW19uZ2NvbnRlbnQtJUNPTVAlXTpub3QoLm1hdC1kcmF3ZXItc2lkZSl7Ym94LXNoYWRvdzowcHggOHB4IDEwcHggLTVweCByZ2JhKDAsIDAsIDAsIDAuMiksMHB4IDE2cHggMjRweCAycHggcmdiYSgwLCAwLCAwLCAwLjE0KSwwcHggNnB4IDMwcHggNXB4IHJnYmEoMCwgMCwgMCwgMC4xMil9Lm1hdC1kcmF3ZXItc2lkZVtfbmdjb250ZW50LSVDT01QJV17Ym9yZGVyLXJpZ2h0OnNvbGlkIDFweCByZ2JhKDAsMCwwLC4xMil9Lm1hdC1kcmF3ZXItc2lkZS5tYXQtZHJhd2VyLWVuZFtfbmdjb250ZW50LSVDT01QJV17Ym9yZGVyLWxlZnQ6c29saWQgMXB4IHJnYmEoMCwwLDAsLjEyKTtib3JkZXItcmlnaHQ6bm9uZX1bZGlyPXJ0bF1bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1kcmF3ZXItc2lkZVtfbmdjb250ZW50LSVDT01QJV17Ym9yZGVyLWxlZnQ6c29saWQgMXB4IHJnYmEoMCwwLDAsLjEyKTtib3JkZXItcmlnaHQ6bm9uZX1bZGlyPXJ0bF1bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1kcmF3ZXItc2lkZS5tYXQtZHJhd2VyLWVuZFtfbmdjb250ZW50LSVDT01QJV17Ym9yZGVyLWxlZnQ6bm9uZTtib3JkZXItcmlnaHQ6c29saWQgMXB4IHJnYmEoMCwwLDAsLjEyKX0ubWF0LWRyYXdlci1iYWNrZHJvcC5tYXQtZHJhd2VyLXNob3duW19uZ2NvbnRlbnQtJUNPTVAlXXtiYWNrZ3JvdW5kLWNvbG9yOnJnYmEoMCwwLDAsLjYpfS5tYXQtc2xpZGUtdG9nZ2xlLm1hdC1jaGVja2VkW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtc2xpZGUtdG9nZ2xlLXRodW1iW19uZ2NvbnRlbnQtJUNPTVAlXXtiYWNrZ3JvdW5kLWNvbG9yOiNmZjk4MDB9Lm1hdC1zbGlkZS10b2dnbGUubWF0LWNoZWNrZWRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1zbGlkZS10b2dnbGUtYmFyW19uZ2NvbnRlbnQtJUNPTVAlXXtiYWNrZ3JvdW5kLWNvbG9yOnJnYmEoMjU1LDE1MiwwLC41NCl9Lm1hdC1zbGlkZS10b2dnbGUubWF0LWNoZWNrZWRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1yaXBwbGUtZWxlbWVudFtfbmdjb250ZW50LSVDT01QJV17YmFja2dyb3VuZC1jb2xvcjojZmY5ODAwfS5tYXQtc2xpZGUtdG9nZ2xlLm1hdC1wcmltYXJ5Lm1hdC1jaGVja2VkW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtc2xpZGUtdG9nZ2xlLXRodW1iW19uZ2NvbnRlbnQtJUNPTVAlXXtiYWNrZ3JvdW5kLWNvbG9yOiNmNTdjMDB9Lm1hdC1zbGlkZS10b2dnbGUubWF0LXByaW1hcnkubWF0LWNoZWNrZWRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1zbGlkZS10b2dnbGUtYmFyW19uZ2NvbnRlbnQtJUNPTVAlXXtiYWNrZ3JvdW5kLWNvbG9yOnJnYmEoMjQ1LDEyNCwwLC41NCl9Lm1hdC1zbGlkZS10b2dnbGUubWF0LXByaW1hcnkubWF0LWNoZWNrZWRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1yaXBwbGUtZWxlbWVudFtfbmdjb250ZW50LSVDT01QJV17YmFja2dyb3VuZC1jb2xvcjojZjU3YzAwfS5tYXQtc2xpZGUtdG9nZ2xlLm1hdC13YXJuLm1hdC1jaGVja2VkW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtc2xpZGUtdG9nZ2xlLXRodW1iW19uZ2NvbnRlbnQtJUNPTVAlXXtiYWNrZ3JvdW5kLWNvbG9yOiNmNDQzMzZ9Lm1hdC1zbGlkZS10b2dnbGUubWF0LXdhcm4ubWF0LWNoZWNrZWRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1zbGlkZS10b2dnbGUtYmFyW19uZ2NvbnRlbnQtJUNPTVAlXXtiYWNrZ3JvdW5kLWNvbG9yOnJnYmEoMjQ0LDY3LDU0LC41NCl9Lm1hdC1zbGlkZS10b2dnbGUubWF0LXdhcm4ubWF0LWNoZWNrZWRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1yaXBwbGUtZWxlbWVudFtfbmdjb250ZW50LSVDT01QJV17YmFja2dyb3VuZC1jb2xvcjojZjQ0MzM2fS5tYXQtc2xpZGUtdG9nZ2xlW19uZ2NvbnRlbnQtJUNPTVAlXTpub3QoLm1hdC1jaGVja2VkKSAgIC5tYXQtcmlwcGxlLWVsZW1lbnRbX25nY29udGVudC0lQ09NUCVde2JhY2tncm91bmQtY29sb3I6IzAwMH0ubWF0LXNsaWRlLXRvZ2dsZS10aHVtYltfbmdjb250ZW50LSVDT01QJV17Ym94LXNoYWRvdzowcHggMnB4IDFweCAtMXB4IHJnYmEoMCwgMCwgMCwgMC4yKSwwcHggMXB4IDFweCAwcHggcmdiYSgwLCAwLCAwLCAwLjE0KSwwcHggMXB4IDNweCAwcHggcmdiYSgwLCAwLCAwLCAwLjEyKTtiYWNrZ3JvdW5kLWNvbG9yOiNmYWZhZmF9Lm1hdC1zbGlkZS10b2dnbGUtYmFyW19uZ2NvbnRlbnQtJUNPTVAlXXtiYWNrZ3JvdW5kLWNvbG9yOnJnYmEoMCwwLDAsLjM4KX0ubWF0LXNsaWRlci10cmFjay1iYWNrZ3JvdW5kW19uZ2NvbnRlbnQtJUNPTVAlXXtiYWNrZ3JvdW5kLWNvbG9yOnJnYmEoMCwwLDAsLjI2KX0ubWF0LXByaW1hcnlbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1zbGlkZXItdHJhY2stZmlsbFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtcHJpbWFyeVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXNsaWRlci10aHVtYltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtcHJpbWFyeVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXNsaWRlci10aHVtYi1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17YmFja2dyb3VuZC1jb2xvcjojZjU3YzAwfS5tYXQtcHJpbWFyeVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXNsaWRlci10aHVtYi1sYWJlbC10ZXh0W19uZ2NvbnRlbnQtJUNPTVAlXXtjb2xvcjojZmZmfS5tYXQtcHJpbWFyeVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXNsaWRlci1mb2N1cy1yaW5nW19uZ2NvbnRlbnQtJUNPTVAlXXtiYWNrZ3JvdW5kLWNvbG9yOnJnYmEoMjQ1LDEyNCwwLC4yKX0ubWF0LWFjY2VudFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXNsaWRlci10cmFjay1maWxsW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1hY2NlbnRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1zbGlkZXItdGh1bWJbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWFjY2VudFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXNsaWRlci10aHVtYi1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17YmFja2dyb3VuZC1jb2xvcjojZmY5ODAwfS5tYXQtYWNjZW50W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtc2xpZGVyLXRodW1iLWxhYmVsLXRleHRbX25nY29udGVudC0lQ09NUCVde2NvbG9yOiNmZmZ9Lm1hdC1hY2NlbnRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1zbGlkZXItZm9jdXMtcmluZ1tfbmdjb250ZW50LSVDT01QJV17YmFja2dyb3VuZC1jb2xvcjpyZ2JhKDI1NSwxNTIsMCwuMil9Lm1hdC13YXJuW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtc2xpZGVyLXRyYWNrLWZpbGxbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXdhcm5bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1zbGlkZXItdGh1bWJbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXdhcm5bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1zbGlkZXItdGh1bWItbGFiZWxbX25nY29udGVudC0lQ09NUCVde2JhY2tncm91bmQtY29sb3I6I2Y0NDMzNn0ubWF0LXdhcm5bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1zbGlkZXItdGh1bWItbGFiZWwtdGV4dFtfbmdjb250ZW50LSVDT01QJV17Y29sb3I6I2ZmZn0ubWF0LXdhcm5bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1zbGlkZXItZm9jdXMtcmluZ1tfbmdjb250ZW50LSVDT01QJV17YmFja2dyb3VuZC1jb2xvcjpyZ2JhKDI0NCw2Nyw1NCwuMil9Lm1hdC1zbGlkZXJbX25nY29udGVudC0lQ09NUCVdOmhvdmVyICAgLm1hdC1zbGlkZXItdHJhY2stYmFja2dyb3VuZFtfbmdjb250ZW50LSVDT01QJV0sIC5jZGstZm9jdXNlZFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXNsaWRlci10cmFjay1iYWNrZ3JvdW5kW19uZ2NvbnRlbnQtJUNPTVAlXXtiYWNrZ3JvdW5kLWNvbG9yOnJnYmEoMCwwLDAsLjM4KX0ubWF0LXNsaWRlci1kaXNhYmxlZFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXNsaWRlci10cmFjay1iYWNrZ3JvdW5kW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1zbGlkZXItZGlzYWJsZWRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1zbGlkZXItdHJhY2stZmlsbFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtc2xpZGVyLWRpc2FibGVkW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtc2xpZGVyLXRodW1iW19uZ2NvbnRlbnQtJUNPTVAlXXtiYWNrZ3JvdW5kLWNvbG9yOnJnYmEoMCwwLDAsLjI2KX0ubWF0LXNsaWRlci1kaXNhYmxlZFtfbmdjb250ZW50LSVDT01QJV06aG92ZXIgICAubWF0LXNsaWRlci10cmFjay1iYWNrZ3JvdW5kW19uZ2NvbnRlbnQtJUNPTVAlXXtiYWNrZ3JvdW5kLWNvbG9yOnJnYmEoMCwwLDAsLjI2KX0ubWF0LXNsaWRlci1taW4tdmFsdWVbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1zbGlkZXItZm9jdXMtcmluZ1tfbmdjb250ZW50LSVDT01QJV17YmFja2dyb3VuZC1jb2xvcjpyZ2JhKDAsMCwwLC4xMil9Lm1hdC1zbGlkZXItbWluLXZhbHVlLm1hdC1zbGlkZXItdGh1bWItbGFiZWwtc2hvd2luZ1tfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXNsaWRlci10aHVtYltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtc2xpZGVyLW1pbi12YWx1ZS5tYXQtc2xpZGVyLXRodW1iLWxhYmVsLXNob3dpbmdbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1zbGlkZXItdGh1bWItbGFiZWxbX25nY29udGVudC0lQ09NUCVde2JhY2tncm91bmQtY29sb3I6cmdiYSgwLDAsMCwuODcpfS5tYXQtc2xpZGVyLW1pbi12YWx1ZS5tYXQtc2xpZGVyLXRodW1iLWxhYmVsLXNob3dpbmcuY2RrLWZvY3VzZWRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1zbGlkZXItdGh1bWJbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXNsaWRlci1taW4tdmFsdWUubWF0LXNsaWRlci10aHVtYi1sYWJlbC1zaG93aW5nLmNkay1mb2N1c2VkW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtc2xpZGVyLXRodW1iLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXtiYWNrZ3JvdW5kLWNvbG9yOnJnYmEoMCwwLDAsLjI2KX0ubWF0LXNsaWRlci1taW4tdmFsdWVbX25nY29udGVudC0lQ09NUCVdOm5vdCgubWF0LXNsaWRlci10aHVtYi1sYWJlbC1zaG93aW5nKSAgIC5tYXQtc2xpZGVyLXRodW1iW19uZ2NvbnRlbnQtJUNPTVAlXXtib3JkZXItY29sb3I6cmdiYSgwLDAsMCwuMjYpO2JhY2tncm91bmQtY29sb3I6dHJhbnNwYXJlbnR9Lm1hdC1zbGlkZXItbWluLXZhbHVlW19uZ2NvbnRlbnQtJUNPTVAlXTpub3QoLm1hdC1zbGlkZXItdGh1bWItbGFiZWwtc2hvd2luZyk6aG92ZXIgICAubWF0LXNsaWRlci10aHVtYltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtc2xpZGVyLW1pbi12YWx1ZVtfbmdjb250ZW50LSVDT01QJV06bm90KC5tYXQtc2xpZGVyLXRodW1iLWxhYmVsLXNob3dpbmcpLmNkay1mb2N1c2VkICAgLm1hdC1zbGlkZXItdGh1bWJbX25nY29udGVudC0lQ09NUCVde2JvcmRlci1jb2xvcjpyZ2JhKDAsMCwwLC4zOCl9Lm1hdC1zbGlkZXItbWluLXZhbHVlW19uZ2NvbnRlbnQtJUNPTVAlXTpub3QoLm1hdC1zbGlkZXItdGh1bWItbGFiZWwtc2hvd2luZyk6aG92ZXIubWF0LXNsaWRlci1kaXNhYmxlZCAgIC5tYXQtc2xpZGVyLXRodW1iW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1zbGlkZXItbWluLXZhbHVlW19uZ2NvbnRlbnQtJUNPTVAlXTpub3QoLm1hdC1zbGlkZXItdGh1bWItbGFiZWwtc2hvd2luZykuY2RrLWZvY3VzZWQubWF0LXNsaWRlci1kaXNhYmxlZCAgIC5tYXQtc2xpZGVyLXRodW1iW19uZ2NvbnRlbnQtJUNPTVAlXXtib3JkZXItY29sb3I6cmdiYSgwLDAsMCwuMjYpfS5tYXQtc2xpZGVyLWhhcy10aWNrc1tfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXNsaWRlci13cmFwcGVyW19uZ2NvbnRlbnQtJUNPTVAlXTo6YWZ0ZXJ7Ym9yZGVyLWNvbG9yOnJnYmEoMCwwLDAsLjcpfS5tYXQtc2xpZGVyLWhvcml6b250YWxbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1zbGlkZXItdGlja3NbX25nY29udGVudC0lQ09NUCVde2JhY2tncm91bmQtaW1hZ2U6cmVwZWF0aW5nLWxpbmVhci1ncmFkaWVudCh0byByaWdodCwgcmdiYSgwLCAwLCAwLCAwLjcpLCByZ2JhKDAsIDAsIDAsIDAuNykgMnB4LCB0cmFuc3BhcmVudCAwLCB0cmFuc3BhcmVudCk7YmFja2dyb3VuZC1pbWFnZTotbW96LXJlcGVhdGluZy1saW5lYXItZ3JhZGllbnQoMC4wMDAxZGVnLCByZ2JhKDAsIDAsIDAsIDAuNyksIHJnYmEoMCwgMCwgMCwgMC43KSAycHgsIHRyYW5zcGFyZW50IDAsIHRyYW5zcGFyZW50KX0ubWF0LXNsaWRlci12ZXJ0aWNhbFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXNsaWRlci10aWNrc1tfbmdjb250ZW50LSVDT01QJV17YmFja2dyb3VuZC1pbWFnZTpyZXBlYXRpbmctbGluZWFyLWdyYWRpZW50KHRvIGJvdHRvbSwgcmdiYSgwLCAwLCAwLCAwLjcpLCByZ2JhKDAsIDAsIDAsIDAuNykgMnB4LCB0cmFuc3BhcmVudCAwLCB0cmFuc3BhcmVudCl9Lm1hdC1zdGVwLWhlYWRlci5jZGsta2V5Ym9hcmQtZm9jdXNlZFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtc3RlcC1oZWFkZXIuY2RrLXByb2dyYW0tZm9jdXNlZFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtc3RlcC1oZWFkZXJbX25nY29udGVudC0lQ09NUCVdOmhvdmVye2JhY2tncm91bmQtY29sb3I6cmdiYSgwLDAsMCwuMDQpfUBtZWRpYShob3Zlcjogbm9uZSl7Lm1hdC1zdGVwLWhlYWRlcltfbmdjb250ZW50LSVDT01QJV06aG92ZXJ7YmFja2dyb3VuZDpub25lfX0ubWF0LXN0ZXAtaGVhZGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtc3RlcC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtc3RlcC1oZWFkZXJbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1zdGVwLW9wdGlvbmFsW19uZ2NvbnRlbnQtJUNPTVAlXXtjb2xvcjojNjE2MTYxfS5tYXQtc3RlcC1oZWFkZXJbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1zdGVwLWljb25bX25nY29udGVudC0lQ09NUCVde2JhY2tncm91bmQtY29sb3I6IzYxNjE2MTtjb2xvcjojZmZmfS5tYXQtc3RlcC1oZWFkZXJbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1zdGVwLWljb24tc2VsZWN0ZWRbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXN0ZXAtaGVhZGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtc3RlcC1pY29uLXN0YXRlLWRvbmVbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXN0ZXAtaGVhZGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtc3RlcC1pY29uLXN0YXRlLWVkaXRbX25nY29udGVudC0lQ09NUCVde2JhY2tncm91bmQtY29sb3I6I2Y1N2MwMDtjb2xvcjojZmZmfS5tYXQtc3RlcC1oZWFkZXJbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1zdGVwLWljb24tc3RhdGUtZXJyb3JbX25nY29udGVudC0lQ09NUCVde2JhY2tncm91bmQtY29sb3I6dHJhbnNwYXJlbnQ7Y29sb3I6I2Y0NDMzNn0ubWF0LXN0ZXAtaGVhZGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtc3RlcC1sYWJlbC5tYXQtc3RlcC1sYWJlbC1hY3RpdmVbX25nY29udGVudC0lQ09NUCVde2NvbG9yOiMyMTIxMjF9Lm1hdC1zdGVwLWhlYWRlcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXN0ZXAtbGFiZWwubWF0LXN0ZXAtbGFiZWwtZXJyb3JbX25nY29udGVudC0lQ09NUCVde2NvbG9yOiNmNDQzMzZ9Lm1hdC1zdGVwcGVyLWhvcml6b250YWxbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXN0ZXBwZXItdmVydGljYWxbX25nY29udGVudC0lQ09NUCVde2JhY2tncm91bmQtY29sb3I6I2ZmZn0ubWF0LXN0ZXBwZXItdmVydGljYWwtbGluZVtfbmdjb250ZW50LSVDT01QJV06OmJlZm9yZXtib3JkZXItbGVmdC1jb2xvcjpyZ2JhKDAsMCwwLC4xMil9Lm1hdC1ob3Jpem9udGFsLXN0ZXBwZXItaGVhZGVyW19uZ2NvbnRlbnQtJUNPTVAlXTo6YmVmb3JlLCAubWF0LWhvcml6b250YWwtc3RlcHBlci1oZWFkZXJbX25nY29udGVudC0lQ09NUCVdOjphZnRlciwgLm1hdC1zdGVwcGVyLWhvcml6b250YWwtbGluZVtfbmdjb250ZW50LSVDT01QJV17Ym9yZGVyLXRvcC1jb2xvcjpyZ2JhKDAsMCwwLC4xMil9Lm1hdC1ob3Jpem9udGFsLXN0ZXBwZXItaGVhZGVyW19uZ2NvbnRlbnQtJUNPTVAlXXtoZWlnaHQ6NzJweH0ubWF0LXN0ZXBwZXItbGFiZWwtcG9zaXRpb24tYm90dG9tW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaG9yaXpvbnRhbC1zdGVwcGVyLWhlYWRlcltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdmVydGljYWwtc3RlcHBlci1oZWFkZXJbX25nY29udGVudC0lQ09NUCVde3BhZGRpbmc6MjRweCAyNHB4fS5tYXQtc3RlcHBlci12ZXJ0aWNhbC1saW5lW19uZ2NvbnRlbnQtJUNPTVAlXTo6YmVmb3Jle3RvcDotMTZweDtib3R0b206LTE2cHh9Lm1hdC1zdGVwcGVyLWxhYmVsLXBvc2l0aW9uLWJvdHRvbVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWhvcml6b250YWwtc3RlcHBlci1oZWFkZXJbX25nY29udGVudC0lQ09NUCVdOjphZnRlciwgLm1hdC1zdGVwcGVyLWxhYmVsLXBvc2l0aW9uLWJvdHRvbVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWhvcml6b250YWwtc3RlcHBlci1oZWFkZXJbX25nY29udGVudC0lQ09NUCVdOjpiZWZvcmV7dG9wOjM2cHh9Lm1hdC1zdGVwcGVyLWxhYmVsLXBvc2l0aW9uLWJvdHRvbVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXN0ZXBwZXItaG9yaXpvbnRhbC1saW5lW19uZ2NvbnRlbnQtJUNPTVAlXXt0b3A6MzZweH0ubWF0LXNvcnQtaGVhZGVyLWFycm93W19uZ2NvbnRlbnQtJUNPTVAlXXtjb2xvcjojNjE2MTYxfS5tYXQtdGFiLW5hdi1iYXJbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXRhYi1oZWFkZXJbX25nY29udGVudC0lQ09NUCVde2JvcmRlci1ib3R0b206MXB4IHNvbGlkIHJnYmEoMCwwLDAsLjEyKX0ubWF0LXRhYi1ncm91cC1pbnZlcnRlZC1oZWFkZXJbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC10YWItbmF2LWJhcltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdGFiLWdyb3VwLWludmVydGVkLWhlYWRlcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXRhYi1oZWFkZXJbX25nY29udGVudC0lQ09NUCVde2JvcmRlci10b3A6MXB4IHNvbGlkIHJnYmEoMCwwLDAsLjEyKTtib3JkZXItYm90dG9tOm5vbmV9Lm1hdC10YWItbGFiZWxbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXRhYi1saW5rW19uZ2NvbnRlbnQtJUNPTVAlXXtjb2xvcjojMjEyMTIxfS5tYXQtdGFiLWxhYmVsLm1hdC10YWItZGlzYWJsZWRbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXRhYi1saW5rLm1hdC10YWItZGlzYWJsZWRbX25nY29udGVudC0lQ09NUCVde2NvbG9yOiM3NTc1NzV9Lm1hdC10YWItaGVhZGVyLXBhZ2luYXRpb24tY2hldnJvbltfbmdjb250ZW50LSVDT01QJV17Ym9yZGVyLWNvbG9yOiMyMTIxMjF9Lm1hdC10YWItaGVhZGVyLXBhZ2luYXRpb24tZGlzYWJsZWRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC10YWItaGVhZGVyLXBhZ2luYXRpb24tY2hldnJvbltfbmdjb250ZW50LSVDT01QJV17Ym9yZGVyLWNvbG9yOiM3NTc1NzV9Lm1hdC10YWItZ3JvdXBbY2xhc3MqPW1hdC1iYWNrZ3JvdW5kLV1bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC10YWItaGVhZGVyW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10YWItbmF2LWJhcltjbGFzcyo9bWF0LWJhY2tncm91bmQtXVtfbmdjb250ZW50LSVDT01QJV17Ym9yZGVyLWJvdHRvbTpub25lO2JvcmRlci10b3A6bm9uZX0ubWF0LXRhYi1ncm91cC5tYXQtcHJpbWFyeVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXRhYi1sYWJlbC5jZGsta2V5Ym9hcmQtZm9jdXNlZFtfbmdjb250ZW50LSVDT01QJV06bm90KC5tYXQtdGFiLWRpc2FibGVkKSwgLm1hdC10YWItZ3JvdXAubWF0LXByaW1hcnlbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC10YWItbGFiZWwuY2RrLXByb2dyYW0tZm9jdXNlZFtfbmdjb250ZW50LSVDT01QJV06bm90KC5tYXQtdGFiLWRpc2FibGVkKSwgLm1hdC10YWItZ3JvdXAubWF0LXByaW1hcnlbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC10YWItbGluay5jZGsta2V5Ym9hcmQtZm9jdXNlZFtfbmdjb250ZW50LSVDT01QJV06bm90KC5tYXQtdGFiLWRpc2FibGVkKSwgLm1hdC10YWItZ3JvdXAubWF0LXByaW1hcnlbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC10YWItbGluay5jZGstcHJvZ3JhbS1mb2N1c2VkW19uZ2NvbnRlbnQtJUNPTVAlXTpub3QoLm1hdC10YWItZGlzYWJsZWQpLCAubWF0LXRhYi1uYXYtYmFyLm1hdC1wcmltYXJ5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtdGFiLWxhYmVsLmNkay1rZXlib2FyZC1mb2N1c2VkW19uZ2NvbnRlbnQtJUNPTVAlXTpub3QoLm1hdC10YWItZGlzYWJsZWQpLCAubWF0LXRhYi1uYXYtYmFyLm1hdC1wcmltYXJ5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtdGFiLWxhYmVsLmNkay1wcm9ncmFtLWZvY3VzZWRbX25nY29udGVudC0lQ09NUCVdOm5vdCgubWF0LXRhYi1kaXNhYmxlZCksIC5tYXQtdGFiLW5hdi1iYXIubWF0LXByaW1hcnlbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC10YWItbGluay5jZGsta2V5Ym9hcmQtZm9jdXNlZFtfbmdjb250ZW50LSVDT01QJV06bm90KC5tYXQtdGFiLWRpc2FibGVkKSwgLm1hdC10YWItbmF2LWJhci5tYXQtcHJpbWFyeVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXRhYi1saW5rLmNkay1wcm9ncmFtLWZvY3VzZWRbX25nY29udGVudC0lQ09NUCVdOm5vdCgubWF0LXRhYi1kaXNhYmxlZCl7YmFja2dyb3VuZC1jb2xvcjpyZ2JhKDI1NSwxNTIsMCwuMyl9Lm1hdC10YWItZ3JvdXAubWF0LXByaW1hcnlbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pbmstYmFyW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10YWItbmF2LWJhci5tYXQtcHJpbWFyeVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWluay1iYXJbX25nY29udGVudC0lQ09NUCVde2JhY2tncm91bmQtY29sb3I6I2Y1N2MwMH0ubWF0LXRhYi1ncm91cC5tYXQtcHJpbWFyeS5tYXQtYmFja2dyb3VuZC1wcmltYXJ5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaW5rLWJhcltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdGFiLW5hdi1iYXIubWF0LXByaW1hcnkubWF0LWJhY2tncm91bmQtcHJpbWFyeVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWluay1iYXJbX25nY29udGVudC0lQ09NUCVde2JhY2tncm91bmQtY29sb3I6I2ZmZn0ubWF0LXRhYi1ncm91cC5tYXQtYWNjZW50W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtdGFiLWxhYmVsLmNkay1rZXlib2FyZC1mb2N1c2VkW19uZ2NvbnRlbnQtJUNPTVAlXTpub3QoLm1hdC10YWItZGlzYWJsZWQpLCAubWF0LXRhYi1ncm91cC5tYXQtYWNjZW50W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtdGFiLWxhYmVsLmNkay1wcm9ncmFtLWZvY3VzZWRbX25nY29udGVudC0lQ09NUCVdOm5vdCgubWF0LXRhYi1kaXNhYmxlZCksIC5tYXQtdGFiLWdyb3VwLm1hdC1hY2NlbnRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC10YWItbGluay5jZGsta2V5Ym9hcmQtZm9jdXNlZFtfbmdjb250ZW50LSVDT01QJV06bm90KC5tYXQtdGFiLWRpc2FibGVkKSwgLm1hdC10YWItZ3JvdXAubWF0LWFjY2VudFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXRhYi1saW5rLmNkay1wcm9ncmFtLWZvY3VzZWRbX25nY29udGVudC0lQ09NUCVdOm5vdCgubWF0LXRhYi1kaXNhYmxlZCksIC5tYXQtdGFiLW5hdi1iYXIubWF0LWFjY2VudFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXRhYi1sYWJlbC5jZGsta2V5Ym9hcmQtZm9jdXNlZFtfbmdjb250ZW50LSVDT01QJV06bm90KC5tYXQtdGFiLWRpc2FibGVkKSwgLm1hdC10YWItbmF2LWJhci5tYXQtYWNjZW50W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtdGFiLWxhYmVsLmNkay1wcm9ncmFtLWZvY3VzZWRbX25nY29udGVudC0lQ09NUCVdOm5vdCgubWF0LXRhYi1kaXNhYmxlZCksIC5tYXQtdGFiLW5hdi1iYXIubWF0LWFjY2VudFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXRhYi1saW5rLmNkay1rZXlib2FyZC1mb2N1c2VkW19uZ2NvbnRlbnQtJUNPTVAlXTpub3QoLm1hdC10YWItZGlzYWJsZWQpLCAubWF0LXRhYi1uYXYtYmFyLm1hdC1hY2NlbnRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC10YWItbGluay5jZGstcHJvZ3JhbS1mb2N1c2VkW19uZ2NvbnRlbnQtJUNPTVAlXTpub3QoLm1hdC10YWItZGlzYWJsZWQpe2JhY2tncm91bmQtY29sb3I6cmdiYSgyNTUsMTUyLDAsLjMpfS5tYXQtdGFiLWdyb3VwLm1hdC1hY2NlbnRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pbmstYmFyW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10YWItbmF2LWJhci5tYXQtYWNjZW50W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaW5rLWJhcltfbmdjb250ZW50LSVDT01QJV17YmFja2dyb3VuZC1jb2xvcjojZmY5ODAwfS5tYXQtdGFiLWdyb3VwLm1hdC1hY2NlbnQubWF0LWJhY2tncm91bmQtYWNjZW50W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaW5rLWJhcltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdGFiLW5hdi1iYXIubWF0LWFjY2VudC5tYXQtYmFja2dyb3VuZC1hY2NlbnRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pbmstYmFyW19uZ2NvbnRlbnQtJUNPTVAlXXtiYWNrZ3JvdW5kLWNvbG9yOiNmZmZ9Lm1hdC10YWItZ3JvdXAubWF0LXdhcm5bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC10YWItbGFiZWwuY2RrLWtleWJvYXJkLWZvY3VzZWRbX25nY29udGVudC0lQ09NUCVdOm5vdCgubWF0LXRhYi1kaXNhYmxlZCksIC5tYXQtdGFiLWdyb3VwLm1hdC13YXJuW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtdGFiLWxhYmVsLmNkay1wcm9ncmFtLWZvY3VzZWRbX25nY29udGVudC0lQ09NUCVdOm5vdCgubWF0LXRhYi1kaXNhYmxlZCksIC5tYXQtdGFiLWdyb3VwLm1hdC13YXJuW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtdGFiLWxpbmsuY2RrLWtleWJvYXJkLWZvY3VzZWRbX25nY29udGVudC0lQ09NUCVdOm5vdCgubWF0LXRhYi1kaXNhYmxlZCksIC5tYXQtdGFiLWdyb3VwLm1hdC13YXJuW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtdGFiLWxpbmsuY2RrLXByb2dyYW0tZm9jdXNlZFtfbmdjb250ZW50LSVDT01QJV06bm90KC5tYXQtdGFiLWRpc2FibGVkKSwgLm1hdC10YWItbmF2LWJhci5tYXQtd2Fybltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXRhYi1sYWJlbC5jZGsta2V5Ym9hcmQtZm9jdXNlZFtfbmdjb250ZW50LSVDT01QJV06bm90KC5tYXQtdGFiLWRpc2FibGVkKSwgLm1hdC10YWItbmF2LWJhci5tYXQtd2Fybltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXRhYi1sYWJlbC5jZGstcHJvZ3JhbS1mb2N1c2VkW19uZ2NvbnRlbnQtJUNPTVAlXTpub3QoLm1hdC10YWItZGlzYWJsZWQpLCAubWF0LXRhYi1uYXYtYmFyLm1hdC13YXJuW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtdGFiLWxpbmsuY2RrLWtleWJvYXJkLWZvY3VzZWRbX25nY29udGVudC0lQ09NUCVdOm5vdCgubWF0LXRhYi1kaXNhYmxlZCksIC5tYXQtdGFiLW5hdi1iYXIubWF0LXdhcm5bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC10YWItbGluay5jZGstcHJvZ3JhbS1mb2N1c2VkW19uZ2NvbnRlbnQtJUNPTVAlXTpub3QoLm1hdC10YWItZGlzYWJsZWQpe2JhY2tncm91bmQtY29sb3I6cmdiYSgyNTUsMjA1LDIxMCwuMyl9Lm1hdC10YWItZ3JvdXAubWF0LXdhcm5bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pbmstYmFyW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10YWItbmF2LWJhci5tYXQtd2Fybltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWluay1iYXJbX25nY29udGVudC0lQ09NUCVde2JhY2tncm91bmQtY29sb3I6I2Y0NDMzNn0ubWF0LXRhYi1ncm91cC5tYXQtd2Fybi5tYXQtYmFja2dyb3VuZC13YXJuW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaW5rLWJhcltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdGFiLW5hdi1iYXIubWF0LXdhcm4ubWF0LWJhY2tncm91bmQtd2Fybltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWluay1iYXJbX25nY29udGVudC0lQ09NUCVde2JhY2tncm91bmQtY29sb3I6I2ZmZn0ubWF0LXRhYi1ncm91cC5tYXQtYmFja2dyb3VuZC1wcmltYXJ5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtdGFiLWxhYmVsLmNkay1rZXlib2FyZC1mb2N1c2VkW19uZ2NvbnRlbnQtJUNPTVAlXTpub3QoLm1hdC10YWItZGlzYWJsZWQpLCAubWF0LXRhYi1ncm91cC5tYXQtYmFja2dyb3VuZC1wcmltYXJ5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtdGFiLWxhYmVsLmNkay1wcm9ncmFtLWZvY3VzZWRbX25nY29udGVudC0lQ09NUCVdOm5vdCgubWF0LXRhYi1kaXNhYmxlZCksIC5tYXQtdGFiLWdyb3VwLm1hdC1iYWNrZ3JvdW5kLXByaW1hcnlbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC10YWItbGluay5jZGsta2V5Ym9hcmQtZm9jdXNlZFtfbmdjb250ZW50LSVDT01QJV06bm90KC5tYXQtdGFiLWRpc2FibGVkKSwgLm1hdC10YWItZ3JvdXAubWF0LWJhY2tncm91bmQtcHJpbWFyeVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXRhYi1saW5rLmNkay1wcm9ncmFtLWZvY3VzZWRbX25nY29udGVudC0lQ09NUCVdOm5vdCgubWF0LXRhYi1kaXNhYmxlZCksIC5tYXQtdGFiLW5hdi1iYXIubWF0LWJhY2tncm91bmQtcHJpbWFyeVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXRhYi1sYWJlbC5jZGsta2V5Ym9hcmQtZm9jdXNlZFtfbmdjb250ZW50LSVDT01QJV06bm90KC5tYXQtdGFiLWRpc2FibGVkKSwgLm1hdC10YWItbmF2LWJhci5tYXQtYmFja2dyb3VuZC1wcmltYXJ5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtdGFiLWxhYmVsLmNkay1wcm9ncmFtLWZvY3VzZWRbX25nY29udGVudC0lQ09NUCVdOm5vdCgubWF0LXRhYi1kaXNhYmxlZCksIC5tYXQtdGFiLW5hdi1iYXIubWF0LWJhY2tncm91bmQtcHJpbWFyeVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXRhYi1saW5rLmNkay1rZXlib2FyZC1mb2N1c2VkW19uZ2NvbnRlbnQtJUNPTVAlXTpub3QoLm1hdC10YWItZGlzYWJsZWQpLCAubWF0LXRhYi1uYXYtYmFyLm1hdC1iYWNrZ3JvdW5kLXByaW1hcnlbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC10YWItbGluay5jZGstcHJvZ3JhbS1mb2N1c2VkW19uZ2NvbnRlbnQtJUNPTVAlXTpub3QoLm1hdC10YWItZGlzYWJsZWQpe2JhY2tncm91bmQtY29sb3I6cmdiYSgyNTUsMTUyLDAsLjMpfS5tYXQtdGFiLWdyb3VwLm1hdC1iYWNrZ3JvdW5kLXByaW1hcnlbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC10YWItaGVhZGVyW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10YWItZ3JvdXAubWF0LWJhY2tncm91bmQtcHJpbWFyeVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXRhYi1saW5rc1tfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdGFiLWdyb3VwLm1hdC1iYWNrZ3JvdW5kLXByaW1hcnlbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC10YWItaGVhZGVyLXBhZ2luYXRpb25bX25nY29udGVudC0lQ09NUCVdLCAubWF0LXRhYi1uYXYtYmFyLm1hdC1iYWNrZ3JvdW5kLXByaW1hcnlbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC10YWItaGVhZGVyW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10YWItbmF2LWJhci5tYXQtYmFja2dyb3VuZC1wcmltYXJ5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtdGFiLWxpbmtzW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10YWItbmF2LWJhci5tYXQtYmFja2dyb3VuZC1wcmltYXJ5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtdGFiLWhlYWRlci1wYWdpbmF0aW9uW19uZ2NvbnRlbnQtJUNPTVAlXXtiYWNrZ3JvdW5kLWNvbG9yOiNmNTdjMDB9Lm1hdC10YWItZ3JvdXAubWF0LWJhY2tncm91bmQtcHJpbWFyeVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXRhYi1sYWJlbFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdGFiLWdyb3VwLm1hdC1iYWNrZ3JvdW5kLXByaW1hcnlbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC10YWItbGlua1tfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdGFiLW5hdi1iYXIubWF0LWJhY2tncm91bmQtcHJpbWFyeVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXRhYi1sYWJlbFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdGFiLW5hdi1iYXIubWF0LWJhY2tncm91bmQtcHJpbWFyeVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXRhYi1saW5rW19uZ2NvbnRlbnQtJUNPTVAlXXtjb2xvcjojZmZmfS5tYXQtdGFiLWdyb3VwLm1hdC1iYWNrZ3JvdW5kLXByaW1hcnlbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC10YWItbGFiZWwubWF0LXRhYi1kaXNhYmxlZFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdGFiLWdyb3VwLm1hdC1iYWNrZ3JvdW5kLXByaW1hcnlbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC10YWItbGluay5tYXQtdGFiLWRpc2FibGVkW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10YWItbmF2LWJhci5tYXQtYmFja2dyb3VuZC1wcmltYXJ5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtdGFiLWxhYmVsLm1hdC10YWItZGlzYWJsZWRbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXRhYi1uYXYtYmFyLm1hdC1iYWNrZ3JvdW5kLXByaW1hcnlbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC10YWItbGluay5tYXQtdGFiLWRpc2FibGVkW19uZ2NvbnRlbnQtJUNPTVAlXXtjb2xvcjpyZ2JhKDI1NSwyNTUsMjU1LC40KX0ubWF0LXRhYi1ncm91cC5tYXQtYmFja2dyb3VuZC1wcmltYXJ5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtdGFiLWhlYWRlci1wYWdpbmF0aW9uLWNoZXZyb25bX25nY29udGVudC0lQ09NUCVdLCAubWF0LXRhYi1uYXYtYmFyLm1hdC1iYWNrZ3JvdW5kLXByaW1hcnlbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC10YWItaGVhZGVyLXBhZ2luYXRpb24tY2hldnJvbltfbmdjb250ZW50LSVDT01QJV17Ym9yZGVyLWNvbG9yOiNmZmZ9Lm1hdC10YWItZ3JvdXAubWF0LWJhY2tncm91bmQtcHJpbWFyeVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXRhYi1oZWFkZXItcGFnaW5hdGlvbi1kaXNhYmxlZFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXRhYi1oZWFkZXItcGFnaW5hdGlvbi1jaGV2cm9uW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10YWItbmF2LWJhci5tYXQtYmFja2dyb3VuZC1wcmltYXJ5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtdGFiLWhlYWRlci1wYWdpbmF0aW9uLWRpc2FibGVkW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtdGFiLWhlYWRlci1wYWdpbmF0aW9uLWNoZXZyb25bX25nY29udGVudC0lQ09NUCVde2JvcmRlci1jb2xvcjpyZ2JhKDI1NSwyNTUsMjU1LC40KX0ubWF0LXRhYi1ncm91cC5tYXQtYmFja2dyb3VuZC1wcmltYXJ5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtcmlwcGxlLWVsZW1lbnRbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXRhYi1uYXYtYmFyLm1hdC1iYWNrZ3JvdW5kLXByaW1hcnlbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1yaXBwbGUtZWxlbWVudFtfbmdjb250ZW50LSVDT01QJV17YmFja2dyb3VuZC1jb2xvcjpyZ2JhKDI1NSwyNTUsMjU1LC4xMil9Lm1hdC10YWItZ3JvdXAubWF0LWJhY2tncm91bmQtYWNjZW50W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtdGFiLWxhYmVsLmNkay1rZXlib2FyZC1mb2N1c2VkW19uZ2NvbnRlbnQtJUNPTVAlXTpub3QoLm1hdC10YWItZGlzYWJsZWQpLCAubWF0LXRhYi1ncm91cC5tYXQtYmFja2dyb3VuZC1hY2NlbnRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC10YWItbGFiZWwuY2RrLXByb2dyYW0tZm9jdXNlZFtfbmdjb250ZW50LSVDT01QJV06bm90KC5tYXQtdGFiLWRpc2FibGVkKSwgLm1hdC10YWItZ3JvdXAubWF0LWJhY2tncm91bmQtYWNjZW50W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtdGFiLWxpbmsuY2RrLWtleWJvYXJkLWZvY3VzZWRbX25nY29udGVudC0lQ09NUCVdOm5vdCgubWF0LXRhYi1kaXNhYmxlZCksIC5tYXQtdGFiLWdyb3VwLm1hdC1iYWNrZ3JvdW5kLWFjY2VudFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXRhYi1saW5rLmNkay1wcm9ncmFtLWZvY3VzZWRbX25nY29udGVudC0lQ09NUCVdOm5vdCgubWF0LXRhYi1kaXNhYmxlZCksIC5tYXQtdGFiLW5hdi1iYXIubWF0LWJhY2tncm91bmQtYWNjZW50W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtdGFiLWxhYmVsLmNkay1rZXlib2FyZC1mb2N1c2VkW19uZ2NvbnRlbnQtJUNPTVAlXTpub3QoLm1hdC10YWItZGlzYWJsZWQpLCAubWF0LXRhYi1uYXYtYmFyLm1hdC1iYWNrZ3JvdW5kLWFjY2VudFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXRhYi1sYWJlbC5jZGstcHJvZ3JhbS1mb2N1c2VkW19uZ2NvbnRlbnQtJUNPTVAlXTpub3QoLm1hdC10YWItZGlzYWJsZWQpLCAubWF0LXRhYi1uYXYtYmFyLm1hdC1iYWNrZ3JvdW5kLWFjY2VudFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXRhYi1saW5rLmNkay1rZXlib2FyZC1mb2N1c2VkW19uZ2NvbnRlbnQtJUNPTVAlXTpub3QoLm1hdC10YWItZGlzYWJsZWQpLCAubWF0LXRhYi1uYXYtYmFyLm1hdC1iYWNrZ3JvdW5kLWFjY2VudFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXRhYi1saW5rLmNkay1wcm9ncmFtLWZvY3VzZWRbX25nY29udGVudC0lQ09NUCVdOm5vdCgubWF0LXRhYi1kaXNhYmxlZCl7YmFja2dyb3VuZC1jb2xvcjpyZ2JhKDI1NSwxNTIsMCwuMyl9Lm1hdC10YWItZ3JvdXAubWF0LWJhY2tncm91bmQtYWNjZW50W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtdGFiLWhlYWRlcltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdGFiLWdyb3VwLm1hdC1iYWNrZ3JvdW5kLWFjY2VudFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXRhYi1saW5rc1tfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdGFiLWdyb3VwLm1hdC1iYWNrZ3JvdW5kLWFjY2VudFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXRhYi1oZWFkZXItcGFnaW5hdGlvbltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdGFiLW5hdi1iYXIubWF0LWJhY2tncm91bmQtYWNjZW50W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtdGFiLWhlYWRlcltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdGFiLW5hdi1iYXIubWF0LWJhY2tncm91bmQtYWNjZW50W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtdGFiLWxpbmtzW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10YWItbmF2LWJhci5tYXQtYmFja2dyb3VuZC1hY2NlbnRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC10YWItaGVhZGVyLXBhZ2luYXRpb25bX25nY29udGVudC0lQ09NUCVde2JhY2tncm91bmQtY29sb3I6I2ZmOTgwMH0ubWF0LXRhYi1ncm91cC5tYXQtYmFja2dyb3VuZC1hY2NlbnRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC10YWItbGFiZWxbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXRhYi1ncm91cC5tYXQtYmFja2dyb3VuZC1hY2NlbnRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC10YWItbGlua1tfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdGFiLW5hdi1iYXIubWF0LWJhY2tncm91bmQtYWNjZW50W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtdGFiLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10YWItbmF2LWJhci5tYXQtYmFja2dyb3VuZC1hY2NlbnRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC10YWItbGlua1tfbmdjb250ZW50LSVDT01QJV17Y29sb3I6I2ZmZn0ubWF0LXRhYi1ncm91cC5tYXQtYmFja2dyb3VuZC1hY2NlbnRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC10YWItbGFiZWwubWF0LXRhYi1kaXNhYmxlZFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdGFiLWdyb3VwLm1hdC1iYWNrZ3JvdW5kLWFjY2VudFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXRhYi1saW5rLm1hdC10YWItZGlzYWJsZWRbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXRhYi1uYXYtYmFyLm1hdC1iYWNrZ3JvdW5kLWFjY2VudFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXRhYi1sYWJlbC5tYXQtdGFiLWRpc2FibGVkW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10YWItbmF2LWJhci5tYXQtYmFja2dyb3VuZC1hY2NlbnRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC10YWItbGluay5tYXQtdGFiLWRpc2FibGVkW19uZ2NvbnRlbnQtJUNPTVAlXXtjb2xvcjpyZ2JhKDI1NSwyNTUsMjU1LC40KX0ubWF0LXRhYi1ncm91cC5tYXQtYmFja2dyb3VuZC1hY2NlbnRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC10YWItaGVhZGVyLXBhZ2luYXRpb24tY2hldnJvbltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdGFiLW5hdi1iYXIubWF0LWJhY2tncm91bmQtYWNjZW50W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtdGFiLWhlYWRlci1wYWdpbmF0aW9uLWNoZXZyb25bX25nY29udGVudC0lQ09NUCVde2JvcmRlci1jb2xvcjojZmZmfS5tYXQtdGFiLWdyb3VwLm1hdC1iYWNrZ3JvdW5kLWFjY2VudFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXRhYi1oZWFkZXItcGFnaW5hdGlvbi1kaXNhYmxlZFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXRhYi1oZWFkZXItcGFnaW5hdGlvbi1jaGV2cm9uW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10YWItbmF2LWJhci5tYXQtYmFja2dyb3VuZC1hY2NlbnRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC10YWItaGVhZGVyLXBhZ2luYXRpb24tZGlzYWJsZWRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC10YWItaGVhZGVyLXBhZ2luYXRpb24tY2hldnJvbltfbmdjb250ZW50LSVDT01QJV17Ym9yZGVyLWNvbG9yOnJnYmEoMjU1LDI1NSwyNTUsLjQpfS5tYXQtdGFiLWdyb3VwLm1hdC1iYWNrZ3JvdW5kLWFjY2VudFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXJpcHBsZS1lbGVtZW50W19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10YWItbmF2LWJhci5tYXQtYmFja2dyb3VuZC1hY2NlbnRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1yaXBwbGUtZWxlbWVudFtfbmdjb250ZW50LSVDT01QJV17YmFja2dyb3VuZC1jb2xvcjpyZ2JhKDI1NSwyNTUsMjU1LC4xMil9Lm1hdC10YWItZ3JvdXAubWF0LWJhY2tncm91bmQtd2Fybltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXRhYi1sYWJlbC5jZGsta2V5Ym9hcmQtZm9jdXNlZFtfbmdjb250ZW50LSVDT01QJV06bm90KC5tYXQtdGFiLWRpc2FibGVkKSwgLm1hdC10YWItZ3JvdXAubWF0LWJhY2tncm91bmQtd2Fybltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXRhYi1sYWJlbC5jZGstcHJvZ3JhbS1mb2N1c2VkW19uZ2NvbnRlbnQtJUNPTVAlXTpub3QoLm1hdC10YWItZGlzYWJsZWQpLCAubWF0LXRhYi1ncm91cC5tYXQtYmFja2dyb3VuZC13YXJuW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtdGFiLWxpbmsuY2RrLWtleWJvYXJkLWZvY3VzZWRbX25nY29udGVudC0lQ09NUCVdOm5vdCgubWF0LXRhYi1kaXNhYmxlZCksIC5tYXQtdGFiLWdyb3VwLm1hdC1iYWNrZ3JvdW5kLXdhcm5bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC10YWItbGluay5jZGstcHJvZ3JhbS1mb2N1c2VkW19uZ2NvbnRlbnQtJUNPTVAlXTpub3QoLm1hdC10YWItZGlzYWJsZWQpLCAubWF0LXRhYi1uYXYtYmFyLm1hdC1iYWNrZ3JvdW5kLXdhcm5bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC10YWItbGFiZWwuY2RrLWtleWJvYXJkLWZvY3VzZWRbX25nY29udGVudC0lQ09NUCVdOm5vdCgubWF0LXRhYi1kaXNhYmxlZCksIC5tYXQtdGFiLW5hdi1iYXIubWF0LWJhY2tncm91bmQtd2Fybltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXRhYi1sYWJlbC5jZGstcHJvZ3JhbS1mb2N1c2VkW19uZ2NvbnRlbnQtJUNPTVAlXTpub3QoLm1hdC10YWItZGlzYWJsZWQpLCAubWF0LXRhYi1uYXYtYmFyLm1hdC1iYWNrZ3JvdW5kLXdhcm5bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC10YWItbGluay5jZGsta2V5Ym9hcmQtZm9jdXNlZFtfbmdjb250ZW50LSVDT01QJV06bm90KC5tYXQtdGFiLWRpc2FibGVkKSwgLm1hdC10YWItbmF2LWJhci5tYXQtYmFja2dyb3VuZC13YXJuW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtdGFiLWxpbmsuY2RrLXByb2dyYW0tZm9jdXNlZFtfbmdjb250ZW50LSVDT01QJV06bm90KC5tYXQtdGFiLWRpc2FibGVkKXtiYWNrZ3JvdW5kLWNvbG9yOnJnYmEoMjU1LDIwNSwyMTAsLjMpfS5tYXQtdGFiLWdyb3VwLm1hdC1iYWNrZ3JvdW5kLXdhcm5bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC10YWItaGVhZGVyW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10YWItZ3JvdXAubWF0LWJhY2tncm91bmQtd2Fybltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXRhYi1saW5rc1tfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdGFiLWdyb3VwLm1hdC1iYWNrZ3JvdW5kLXdhcm5bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC10YWItaGVhZGVyLXBhZ2luYXRpb25bX25nY29udGVudC0lQ09NUCVdLCAubWF0LXRhYi1uYXYtYmFyLm1hdC1iYWNrZ3JvdW5kLXdhcm5bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC10YWItaGVhZGVyW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10YWItbmF2LWJhci5tYXQtYmFja2dyb3VuZC13YXJuW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtdGFiLWxpbmtzW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10YWItbmF2LWJhci5tYXQtYmFja2dyb3VuZC13YXJuW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtdGFiLWhlYWRlci1wYWdpbmF0aW9uW19uZ2NvbnRlbnQtJUNPTVAlXXtiYWNrZ3JvdW5kLWNvbG9yOiNmNDQzMzZ9Lm1hdC10YWItZ3JvdXAubWF0LWJhY2tncm91bmQtd2Fybltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXRhYi1sYWJlbFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdGFiLWdyb3VwLm1hdC1iYWNrZ3JvdW5kLXdhcm5bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC10YWItbGlua1tfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdGFiLW5hdi1iYXIubWF0LWJhY2tncm91bmQtd2Fybltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXRhYi1sYWJlbFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdGFiLW5hdi1iYXIubWF0LWJhY2tncm91bmQtd2Fybltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXRhYi1saW5rW19uZ2NvbnRlbnQtJUNPTVAlXXtjb2xvcjojZmZmfS5tYXQtdGFiLWdyb3VwLm1hdC1iYWNrZ3JvdW5kLXdhcm5bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC10YWItbGFiZWwubWF0LXRhYi1kaXNhYmxlZFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdGFiLWdyb3VwLm1hdC1iYWNrZ3JvdW5kLXdhcm5bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC10YWItbGluay5tYXQtdGFiLWRpc2FibGVkW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10YWItbmF2LWJhci5tYXQtYmFja2dyb3VuZC13YXJuW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtdGFiLWxhYmVsLm1hdC10YWItZGlzYWJsZWRbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXRhYi1uYXYtYmFyLm1hdC1iYWNrZ3JvdW5kLXdhcm5bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC10YWItbGluay5tYXQtdGFiLWRpc2FibGVkW19uZ2NvbnRlbnQtJUNPTVAlXXtjb2xvcjpyZ2JhKDI1NSwyNTUsMjU1LC40KX0ubWF0LXRhYi1ncm91cC5tYXQtYmFja2dyb3VuZC13YXJuW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtdGFiLWhlYWRlci1wYWdpbmF0aW9uLWNoZXZyb25bX25nY29udGVudC0lQ09NUCVdLCAubWF0LXRhYi1uYXYtYmFyLm1hdC1iYWNrZ3JvdW5kLXdhcm5bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC10YWItaGVhZGVyLXBhZ2luYXRpb24tY2hldnJvbltfbmdjb250ZW50LSVDT01QJV17Ym9yZGVyLWNvbG9yOiNmZmZ9Lm1hdC10YWItZ3JvdXAubWF0LWJhY2tncm91bmQtd2Fybltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXRhYi1oZWFkZXItcGFnaW5hdGlvbi1kaXNhYmxlZFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXRhYi1oZWFkZXItcGFnaW5hdGlvbi1jaGV2cm9uW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10YWItbmF2LWJhci5tYXQtYmFja2dyb3VuZC13YXJuW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtdGFiLWhlYWRlci1wYWdpbmF0aW9uLWRpc2FibGVkW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtdGFiLWhlYWRlci1wYWdpbmF0aW9uLWNoZXZyb25bX25nY29udGVudC0lQ09NUCVde2JvcmRlci1jb2xvcjpyZ2JhKDI1NSwyNTUsMjU1LC40KX0ubWF0LXRhYi1ncm91cC5tYXQtYmFja2dyb3VuZC13YXJuW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtcmlwcGxlLWVsZW1lbnRbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXRhYi1uYXYtYmFyLm1hdC1iYWNrZ3JvdW5kLXdhcm5bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1yaXBwbGUtZWxlbWVudFtfbmdjb250ZW50LSVDT01QJV17YmFja2dyb3VuZC1jb2xvcjpyZ2JhKDI1NSwyNTUsMjU1LC4xMil9Lm1hdC10b29sYmFyW19uZ2NvbnRlbnQtJUNPTVAlXXtiYWNrZ3JvdW5kOiNmNWY1ZjU7Y29sb3I6IzIxMjEyMX0ubWF0LXRvb2xiYXIubWF0LXByaW1hcnlbX25nY29udGVudC0lQ09NUCVde2JhY2tncm91bmQ6I2Y1N2MwMDtjb2xvcjojZmZmfS5tYXQtdG9vbGJhci5tYXQtYWNjZW50W19uZ2NvbnRlbnQtJUNPTVAlXXtiYWNrZ3JvdW5kOiNmZjk4MDA7Y29sb3I6I2ZmZn0ubWF0LXRvb2xiYXIubWF0LXdhcm5bX25nY29udGVudC0lQ09NUCVde2JhY2tncm91bmQ6I2Y0NDMzNjtjb2xvcjojZmZmfS5tYXQtdG9vbGJhcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtdW5kZXJsaW5lW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10b29sYmFyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1yaXBwbGVbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXRvb2xiYXJbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb2N1c2VkW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1yaXBwbGVbX25nY29udGVudC0lQ09NUCVde2JhY2tncm91bmQtY29sb3I6Y3VycmVudENvbG9yfS5tYXQtdG9vbGJhcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXRvb2xiYXJbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb2N1c2VkW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdG9vbGJhcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXNlbGVjdC12YWx1ZVtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdG9vbGJhcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXNlbGVjdC1hcnJvd1tfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdG9vbGJhcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQubWF0LWZvY3VzZWRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1zZWxlY3QtYXJyb3dbX25nY29udGVudC0lQ09NUCVde2NvbG9yOmluaGVyaXR9Lm1hdC10b29sYmFyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaW5wdXQtZWxlbWVudFtfbmdjb250ZW50LSVDT01QJV17Y2FyZXQtY29sb3I6Y3VycmVudENvbG9yfS5tYXQtdG9vbGJhci1tdWx0aXBsZS1yb3dzW19uZ2NvbnRlbnQtJUNPTVAlXXttaW4taGVpZ2h0OjY0cHh9Lm1hdC10b29sYmFyLXJvd1tfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdG9vbGJhci1zaW5nbGUtcm93W19uZ2NvbnRlbnQtJUNPTVAlXXtoZWlnaHQ6NjRweH1AbWVkaWEobWF4LXdpZHRoOiA1OTlweCl7Lm1hdC10b29sYmFyLW11bHRpcGxlLXJvd3NbX25nY29udGVudC0lQ09NUCVde21pbi1oZWlnaHQ6NTZweH0ubWF0LXRvb2xiYXItcm93W19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10b29sYmFyLXNpbmdsZS1yb3dbX25nY29udGVudC0lQ09NUCVde2hlaWdodDo1NnB4fX0ubWF0LXRvb2x0aXBbX25nY29udGVudC0lQ09NUCVde2JhY2tncm91bmQ6cmdiYSg5Nyw5Nyw5NywuOSl9Lm1hdC10cmVlW19uZ2NvbnRlbnQtJUNPTVAlXXtiYWNrZ3JvdW5kOiNmZmZ9Lm1hdC10cmVlLW5vZGVbX25nY29udGVudC0lQ09NUCVdLCAubWF0LW5lc3RlZC10cmVlLW5vZGVbX25nY29udGVudC0lQ09NUCVde2NvbG9yOiMyMTIxMjF9Lm1hdC10cmVlLW5vZGVbX25nY29udGVudC0lQ09NUCVde21pbi1oZWlnaHQ6NDhweH0ubWF0LXNuYWNrLWJhci1jb250YWluZXJbX25nY29udGVudC0lQ09NUCVde2NvbG9yOnJnYmEoMjU1LDI1NSwyNTUsLjcpO2JhY2tncm91bmQ6IzMyMzIzMjtib3gtc2hhZG93OjBweCAzcHggNXB4IC0xcHggcmdiYSgwLCAwLCAwLCAwLjIpLDBweCA2cHggMTBweCAwcHggcmdiYSgwLCAwLCAwLCAwLjE0KSwwcHggMXB4IDE4cHggMHB4IHJnYmEoMCwgMCwgMCwgMC4xMil9Lm1hdC1zaW1wbGUtc25hY2tiYXItYWN0aW9uW19uZ2NvbnRlbnQtJUNPTVAlXXtjb2xvcjojZmY5ODAwfVtfbmdob3N0LSVDT01QJV17ZGlzcGxheTpmbGV4O2ZsZXgtZGlyZWN0aW9uOmNvbHVtbjtib3gtc2l6aW5nOmJvcmRlci1ib3g7aGVpZ2h0OjEwMCU7b3ZlcmZsb3c6YXV0bztwYWRkaW5nOjE2cHg7cGFkZGluZy10b3A6NHB4fS5oZWFkaW5nW19uZ2NvbnRlbnQtJUNPTVAlXXthbGlnbi1pdGVtczpjZW50ZXI7ZGlzcGxheTpncmlkO2dyaWQtdGVtcGxhdGUtYXJlYXM6InRhZyBjb250cm9scyIgInJ1biBzcGlubmVyIjtncmlkLXRlbXBsYXRlLWNvbHVtbnM6MWZyIGF1dG87Zm9udC1zaXplOjE0cHg7bWFyZ2luLWJvdHRvbTo0cHh9LnRhZ1tfbmdjb250ZW50LSVDT01QJV17Z3JpZC1hcmVhOnRhZztvdmVyZmxvdzpoaWRkZW59LnBpbi1idXR0b25bX25nY29udGVudC0lQ09NUCVdICAgbWF0LWljb25bX25nY29udGVudC0lQ09NUCVde2hlaWdodDoxOHB4fS5ydW5bX25nY29udGVudC0lQ09NUCVde2dyaWQtYXJlYTpydW47ZGlzcGxheTpmbGV4O3doaXRlLXNwYWNlOm5vd3JhcDtmb250LXNpemU6MTNweDtjb2xvcjojNjE2MTYxfS5ydW5bX25nY29udGVudC0lQ09NUCVdICAgLmRvdFtfbmdjb250ZW50LSVDT01QJV17ZmxleDpub25lO2Rpc3BsYXk6aW5saW5lLWJsb2NrO3dpZHRoOjEzcHg7aGVpZ2h0OjEzcHg7Ym9yZGVyLXJhZGl1czo1MCU7bWFyZ2luLXJpZ2h0OjRweH0ucnVuW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5ydW4tdGV4dFtfbmdjb250ZW50LSVDT01QJV17b3ZlcmZsb3c6aGlkZGVuO3RleHQtb3ZlcmZsb3c6ZWxsaXBzaXM7bWF4LXdpZHRoOjEyMHB4fS5jb250cm9sc1tfbmdjb250ZW50LSVDT01QJV17Y29sb3I6IzYxNjE2MTtncmlkLWFyZWE6Y29udHJvbHM7anVzdGlmeS1zZWxmOmZsZXgtZW5kO2ZsZXgtc2hyaW5rOjA7bWFyZ2luLXJpZ2h0Oi0xMnB4O3doaXRlLXNwYWNlOm5vd3JhcH0uc3Bpbm5lcltfbmdjb250ZW50LSVDT01QJV17ZGlzcGxheTpmbGV4O2dyaWQtYXJlYTpzcGlubmVyO2hlaWdodDoxMDAlO2p1c3RpZnktY29udGVudDpjZW50ZXI7cG9zaXRpb246cmVsYXRpdmV9bWF0LXNwaW5uZXJbX25nY29udGVudC0lQ09NUCVde3RvcDowO3JpZ2h0OjA7cG9zaXRpb246YWJzb2x1dGV9dGItaGlzdG9ncmFtW19uZ2NvbnRlbnQtJUNPTVAlXXtmbGV4LWdyb3c6MTtvdmVyZmxvdzpoaWRkZW59LmVtcHR5LW1lc3NhZ2VbX25nY29udGVudC0lQ09NUCVde21hcmdpbi10b3A6MWVtO2ZvbnQtc2l6ZToxM3B4fSddLGNoYW5nZURldGVjdGlvbjowfSk7Y2xhc3MgS2x0e2NvbnN0cnVjdG9yKHQpe3RoaXMuc3RvcmU9dCx0aGlzLmZ1bGxXaWR0aENoYW5nZWQ9bmV3IEVmLHRoaXMuZnVsbEhlaWdodENoYW5nZWQ9bmV3IEVmLHRoaXMucGluU3RhdGVDaGFuZ2VkPW5ldyBFZix0aGlzLm1vZGUkPXRoaXMuc3RvcmUuc2VsZWN0KGJEKSx0aGlzLnhBeGlzVHlwZSQ9dGhpcy5zdG9yZS5zZWxlY3QocEQpLHRoaXMuc2hvd0Z1bGxTaXplPSExfWlzSGlzdG9ncmFtQ2FyZE1ldGFkYXRhKHQpe2NvbnN0e3BsdWdpbjpufT10O3JldHVybiBuPT09Z1QuSElTVE9HUkFNU31vbkZ1bGxTaXplVG9nZ2xlKCl7dGhpcy5zaG93RnVsbFNpemU9IXRoaXMuc2hvd0Z1bGxTaXplLHRoaXMuZnVsbFdpZHRoQ2hhbmdlZC5lbWl0KHRoaXMuc2hvd0Z1bGxTaXplKSx0aGlzLmZ1bGxIZWlnaHRDaGFuZ2VkLmVtaXQodGhpcy5zaG93RnVsbFNpemUpfW5nT25Jbml0KCl7Y29uc3QgdD10aGlzLnN0b3JlLnNlbGVjdCgkVCx0aGlzLmNhcmRJZCkucGlwZShHdCgodD0+ISF0JiZ0aGlzLmlzSGlzdG9ncmFtQ2FyZE1ldGFkYXRhKHQpKSksZnQoKHQ9PnQpKSksbj1FdChbdCx0aGlzLnN0b3JlLnNlbGVjdChRVCx0aGlzLmNhcmRJZCldKTt0aGlzLmRhdGEkPW4ucGlwZShmdCgoKFt0LG5dKT0+e2NvbnN0IGU9dC5ydW5JZDtyZXR1cm4gbiYmbi5oYXNPd25Qcm9wZXJ0eShlKT8oZnVuY3Rpb24gYSh0LG49MzApe2lmKCF0Lmxlbmd0aHx8bjwxKXJldHVybltdO2NvbnN0IGU9KGZ1bmN0aW9uIGEodCl7bGV0IG49bnVsbCxlPW51bGw7Zm9yKGNvbnN0e2JpbnM6YX1vZiB0KXtpZighYS5sZW5ndGgpY29udGludWU7Y29uc3QgdD1hW2EubGVuZ3RoLTFdLG89YVswXS54LHI9dC54K3QuZHg7KG51bGw9PT1ufHxvPG4pJiYobj1vKSwobnVsbD09PWV8fHI+ZSkmJihlPXIpfXJldHVybiBudWxsPT09bnx8bnVsbD09PWU/bnVsbDp7bGVmdDpuLHJpZ2h0OmV9fSkodCk7cmV0dXJuIGUmJmUubGVmdD09PWUucmlnaHQmJihlLnJpZ2h0PTEuMSplLnJpZ2h0KzEsZS5sZWZ0PWUubGVmdC8xLjEtMSksdC5tYXAoKHQ9Pih7c3RlcDp0LnN0ZXAsd2FsbFRpbWU6dC53YWxsVGltZSxiaW5zOmU/VWx0KHQuYmlucyxlLG4pOltdfSkpKX0pKG5bZV0ubWFwKCh0PT57Y29uc3R7d2FsbFRpbWU6bixzdGVwOmV9PXQ7cmV0dXJue3dhbGxUaW1lOm4sc3RlcDplLGJpbnM6dC5iaW5zLm1hcCgodD0+KHt4OnQubWluLGR4OnQubWF4LXQubWluLHk6dC5jb3VudH0pKSl9fSkpKTpbXX0pKSksdGhpcy5sb2FkU3RhdGUkPXRoaXMuc3RvcmUuc2VsZWN0KEpULHRoaXMuY2FyZElkKSx0aGlzLnRhZyQ9dC5waXBlKGZ0KCh0PT50LnRhZykpKSx0aGlzLnRpdGxlJD10aGlzLnRhZyQucGlwZShmdCgodD0+UUsodCx0aGlzLmdyb3VwTmFtZSkpKSksdGhpcy5ydW5JZCQ9dC5waXBlKGZ0KCh0PT50LnJ1bklkKSkpLHRoaXMuaXNQaW5uZWQkPXRoaXMuc3RvcmUuc2VsZWN0KGNELHRoaXMuY2FyZElkKX19ZnVuY3Rpb24gJGx0KHQsbil7aWYoMSZ0KXtjb25zdCB0PW9wKCk7S2coMCwiaW1hZ2UtY2FyZCIsNCksY3AoImZ1bGxXaWR0aENoYW5nZWQiLChmdW5jdGlvbiBuKGUpe3JldHVybiBqcih0KSxncCgpLm9uRnVsbFdpZHRoQ2hhbmdlZChlKX0pKSgicGluU3RhdGVDaGFuZ2VkIiwoZnVuY3Rpb24gbigpe3JldHVybiBqcih0KSxncCgpLm9uUGluU3RhdGVDaGFuZ2VkKCl9KSksJGcoKX1pZigyJnQpe2NvbnN0IHQ9Z3AoKTtKZygiY2FyZElkIix0LmNhcmRJZCkoImdyb3VwTmFtZSIsdC5ncm91cE5hbWUpKCJydW5Db2xvclNjYWxlIix0LnJ1bkNvbG9yU2NhbGUpfX1mdW5jdGlvbiB0bXQodCxuKXtpZigxJnQpe2NvbnN0IHQ9b3AoKTtLZygwLCJzY2FsYXItY2FyZCIsNSksY3AoImZ1bGxXaWR0aENoYW5nZWQiLChmdW5jdGlvbiBuKGUpe3JldHVybiBqcih0KSxncCgpLm9uRnVsbFdpZHRoQ2hhbmdlZChlKX0pKSgiZnVsbEhlaWdodENoYW5nZWQiLChmdW5jdGlvbiBuKGUpe3JldHVybiBqcih0KSxncCgpLm9uRnVsbEhlaWdodENoYW5nZWQoZSl9KSkoInBpblN0YXRlQ2hhbmdlZCIsKGZ1bmN0aW9uIG4oKXtyZXR1cm4ganIodCksZ3AoKS5vblBpblN0YXRlQ2hhbmdlZCgpfSkpLCRnKCl9aWYoMiZ0KXtjb25zdCB0PWdwKCk7SmcoImNhcmRJZCIsdC5jYXJkSWQpKCJncm91cE5hbWUiLHQuZ3JvdXBOYW1lKSgicnVuQ29sb3JTY2FsZSIsdC5ydW5Db2xvclNjYWxlKX19ZnVuY3Rpb24gbm10KHQsbil7aWYoMSZ0KXtjb25zdCB0PW9wKCk7S2coMCwiaGlzdG9ncmFtLWNhcmQiLDUpLGNwKCJmdWxsV2lkdGhDaGFuZ2VkIiwoZnVuY3Rpb24gbihlKXtyZXR1cm4ganIodCksZ3AoKS5vbkZ1bGxXaWR0aENoYW5nZWQoZSl9KSkoImZ1bGxIZWlnaHRDaGFuZ2VkIiwoZnVuY3Rpb24gbihlKXtyZXR1cm4ganIodCksZ3AoKS5vbkZ1bGxIZWlnaHRDaGFuZ2VkKGUpfSkpKCJwaW5TdGF0ZUNoYW5nZWQiLChmdW5jdGlvbiBuKCl7cmV0dXJuIGpyKHQpLGdwKCkub25QaW5TdGF0ZUNoYW5nZWQoKX0pKSwkZygpfWlmKDImdCl7Y29uc3QgdD1ncCgpO0pnKCJjYXJkSWQiLHQuY2FyZElkKSgiZ3JvdXBOYW1lIix0Lmdyb3VwTmFtZSkoInJ1bkNvbG9yU2NhbGUiLHQucnVuQ29sb3JTY2FsZSl9fWZ1bmN0aW9uIGVtdCh0LG4pe2lmKDEmdCYmKEtnKDAsImRpdiIpLEpwKDEpLCRnKCkpLDImdCl7Y29uc3QgdD1ncCgpO3dzKDEpLEtwKCJQbGFjZWhvbGRlciBlcnJvciBmb3I6ICIsdC5jYXJkSWQsIiIpfX1LbHQuybVmYWM9ZnVuY3Rpb24gdChuKXtyZXR1cm4gbmV3KG58fEtsdCkoWmcoY3YpKX0sS2x0Lsm1Y21wPV9vKHt0eXBlOktsdCxzZWxlY3RvcnM6W1siaGlzdG9ncmFtLWNhcmQiXV0saW5wdXRzOntjYXJkSWQ6ImNhcmRJZCIsZ3JvdXBOYW1lOiJncm91cE5hbWUiLHJ1bkNvbG9yU2NhbGU6InJ1bkNvbG9yU2NhbGUifSxvdXRwdXRzOntmdWxsV2lkdGhDaGFuZ2VkOiJmdWxsV2lkdGhDaGFuZ2VkIixmdWxsSGVpZ2h0Q2hhbmdlZDoiZnVsbEhlaWdodENoYW5nZWQiLHBpblN0YXRlQ2hhbmdlZDoicGluU3RhdGVDaGFuZ2VkIn0sZGVjbHM6OSx2YXJzOjI2LGNvbnN0czpbWzMsImxvYWRTdGF0ZSIsInRpdGxlIiwidGFnIiwicnVuSWQiLCJkYXRhIiwibW9kZSIsInhBeGlzVHlwZSIsInJ1bkNvbG9yU2NhbGUiLCJzaG93RnVsbFNpemUiLCJpc1Bpbm5lZCIsIm9uRnVsbFNpemVUb2dnbGUiLCJvblBpbkNsaWNrZWQiXV0sdGVtcGxhdGU6ZnVuY3Rpb24gdChuLGUpezEmbiYmKEtnKDAsImhpc3RvZ3JhbS1jYXJkLWNvbXBvbmVudCIsMCksY3AoIm9uRnVsbFNpemVUb2dnbGUiLChmdW5jdGlvbiB0KCl7cmV0dXJuIGUub25GdWxsU2l6ZVRvZ2dsZSgpfSkpKCJvblBpbkNsaWNrZWQiLChmdW5jdGlvbiB0KG4pe3JldHVybiBlLnBpblN0YXRlQ2hhbmdlZC5lbWl0KG4pfSkpLHlmKDEsImFzeW5jIikseWYoMiwiYXN5bmMiKSx5ZigzLCJhc3luYyIpLHlmKDQsImFzeW5jIikseWYoNSwiYXN5bmMiKSx5Zig2LCJhc3luYyIpLHlmKDcsImFzeW5jIikseWYoOCwiYXN5bmMiKSwkZygpKSwyJm4mJkpnKCJsb2FkU3RhdGUiLGtmKDEsMTAsZS5sb2FkU3RhdGUkKSkoInRpdGxlIixrZigyLDEyLGUudGl0bGUkKSkoInRhZyIsa2YoMywxNCxlLnRhZyQpKSgicnVuSWQiLGtmKDQsMTYsZS5ydW5JZCQpKSgiZGF0YSIsa2YoNSwxOCxlLmRhdGEkKSkoIm1vZGUiLGtmKDYsMjAsZS5tb2RlJCkpKCJ4QXhpc1R5cGUiLGtmKDcsMjIsZS54QXhpc1R5cGUkKSkoInJ1bkNvbG9yU2NhbGUiLGUucnVuQ29sb3JTY2FsZSkoInNob3dGdWxsU2l6ZSIsZS5zaG93RnVsbFNpemUpKCJpc1Bpbm5lZCIsa2YoOCwyNCxlLmlzUGlubmVkJCkpfSxkaXJlY3RpdmVzOltRbHRdLHBpcGVzOltvT10sc3R5bGVzOlsiW19uZ2hvc3QtJUNPTVAlXSB7XG4gICAgICAgIGRpc3BsYXk6IGJsb2NrO1xuICAgICAgICBoZWlnaHQ6IDEwMCU7XG4gICAgICB9Il0sY2hhbmdlRGV0ZWN0aW9uOjB9KTtjbGFzcyBhbXR7Y29uc3RydWN0b3IoKXt0aGlzLlBsdWdpblR5cGU9Z1QsdGhpcy5mdWxsV2lkdGhDaGFuZ2VkPW5ldyBFZix0aGlzLmZ1bGxIZWlnaHRDaGFuZ2VkPW5ldyBFZix0aGlzLnBpblN0YXRlQ2hhbmdlZD1uZXcgRWZ9b25GdWxsV2lkdGhDaGFuZ2VkKHQpe3RoaXMuZnVsbFdpZHRoQ2hhbmdlZC5lbWl0KHQpfW9uRnVsbEhlaWdodENoYW5nZWQodCl7dGhpcy5mdWxsSGVpZ2h0Q2hhbmdlZC5lbWl0KHQpfW9uUGluU3RhdGVDaGFuZ2VkKCl7dGhpcy5waW5TdGF0ZUNoYW5nZWQuZW1pdCgpfX1hbXQuybVmYWM9ZnVuY3Rpb24gdChuKXtyZXR1cm4gbmV3KG58fGFtdCl9LGFtdC7JtWNtcD1fbyh7dHlwZTphbXQsc2VsZWN0b3JzOltbImNhcmQtdmlldy1jb21wb25lbnQiXV0saW5wdXRzOntjYXJkSWQ6ImNhcmRJZCIsZ3JvdXBOYW1lOiJncm91cE5hbWUiLHBsdWdpblR5cGU6InBsdWdpblR5cGUiLHJ1bkNvbG9yU2NhbGU6InJ1bkNvbG9yU2NhbGUifSxvdXRwdXRzOntmdWxsV2lkdGhDaGFuZ2VkOiJmdWxsV2lkdGhDaGFuZ2VkIixmdWxsSGVpZ2h0Q2hhbmdlZDoiZnVsbEhlaWdodENoYW5nZWQiLHBpblN0YXRlQ2hhbmdlZDoicGluU3RhdGVDaGFuZ2VkIn0sZGVjbHM6NSx2YXJzOjQsY29uc3RzOltbMywibmdTd2l0Y2giXSxbMywiY2FyZElkIiwiZ3JvdXBOYW1lIiwicnVuQ29sb3JTY2FsZSIsImZ1bGxXaWR0aENoYW5nZWQiLCJwaW5TdGF0ZUNoYW5nZWQiLDQsIm5nU3dpdGNoQ2FzZSJdLFszLCJjYXJkSWQiLCJncm91cE5hbWUiLCJydW5Db2xvclNjYWxlIiwiZnVsbFdpZHRoQ2hhbmdlZCIsImZ1bGxIZWlnaHRDaGFuZ2VkIiwicGluU3RhdGVDaGFuZ2VkIiw0LCJuZ1N3aXRjaENhc2UiXSxbNCwibmdTd2l0Y2hEZWZhdWx0Il0sWzMsImNhcmRJZCIsImdyb3VwTmFtZSIsInJ1bkNvbG9yU2NhbGUiLCJmdWxsV2lkdGhDaGFuZ2VkIiwicGluU3RhdGVDaGFuZ2VkIl0sWzMsImNhcmRJZCIsImdyb3VwTmFtZSIsInJ1bkNvbG9yU2NhbGUiLCJmdWxsV2lkdGhDaGFuZ2VkIiwiZnVsbEhlaWdodENoYW5nZWQiLCJwaW5TdGF0ZUNoYW5nZWQiXV0sdGVtcGxhdGU6ZnVuY3Rpb24gdChuLGUpezEmbiYmKG5wKDAsMCksWWcoMSwkbHQsMSwzLCJpbWFnZS1jYXJkIiwxKSxZZygyLHRtdCwxLDMsInNjYWxhci1jYXJkIiwyKSxZZygzLG5tdCwxLDMsImhpc3RvZ3JhbS1jYXJkIiwyKSxZZyg0LGVtdCwyLDEsImRpdiIsMyksZXAoKSksMiZuJiYoSmcoIm5nU3dpdGNoIixlLnBsdWdpblR5cGUpLHdzKDEpLEpnKCJuZ1N3aXRjaENhc2UiLGUuUGx1Z2luVHlwZS5JTUFHRVMpLHdzKDEpLEpnKCJuZ1N3aXRjaENhc2UiLGUuUGx1Z2luVHlwZS5TQ0FMQVJTKSx3cygxKSxKZygibmdTd2l0Y2hDYXNlIixlLlBsdWdpblR5cGUuSElTVE9HUkFNUykpfSxkaXJlY3RpdmVzOltaTSxYTSxKTSxCJCxqbHQsS2x0XSxlbmNhcHN1bGF0aW9uOjIsY2hhbmdlRGV0ZWN0aW9uOjB9KTtjbGFzcyBvbXR7Y29uc3RydWN0b3IodCl7dGhpcy5zdG9yZT10LHRoaXMuc2hvd0Z1bGxXaWR0aD0hMSx0aGlzLnNob3dGdWxsSGVpZ2h0PSExLHRoaXMucnVuQ29sb3JTY2FsZSQ9dGhpcy5zdG9yZS5zZWxlY3QoR0QpLnBpcGUoKGZ1bmN0aW9uIG4odCxlPW10LGE9TWUpe3JldHVybiBuPT5uLmxpZnQobmV3IE9lKHQsZSwhIWEubGVhZGluZywhIWEudHJhaWxpbmcpKX0pKDM1MCx2b2lkIDAse2xlYWRpbmc6ITAsdHJhaWxpbmc6ITB9KSxmdCgodD0+bj0+e2lmKCF0Lmhhc093blByb3BlcnR5KG4pKXRocm93IG5ldyBFcnJvcihgW0NvbG9yIHNjYWxlXSB1bmtub3duIHJ1bklkOiAke259LmApO3JldHVybiB0W25dfSkpKX1vbkZ1bGxXaWR0aENoYW5nZWQodCl7dGhpcy5zaG93RnVsbFdpZHRoPXR9b25GdWxsSGVpZ2h0Q2hhbmdlZCh0KXt0aGlzLnNob3dGdWxsSGVpZ2h0PXR9b25QaW5TdGF0ZUNoYW5nZWQoKXt0aGlzLnN0b3JlLnNlbGVjdChjRCx0aGlzLmNhcmRJZCkucGlwZShUbigxKSx5ZSh0aGlzLnN0b3JlLnNlbGVjdChsRCkpKS5zdWJzY3JpYmUoKChbdCxuXSk9Pnt0aGlzLnN0b3JlLmRpc3BhdGNoKFNLKHtjYXJkSWQ6dGhpcy5jYXJkSWQsY2FuQ3JlYXRlTmV3UGluczpuLHdhc1Bpbm5lZDp0fSkpfSkpfX1mdW5jdGlvbiBybXQodCxuKXsxJnQmJmFwKDApfWZ1bmN0aW9uIGltdCh0LG4pe2lmKDEmdCYmdHAoMCwiY2FyZC12aWV3Iiw0KSwyJnQpe2NvbnN0IHQ9bi4kaW1wbGljaXQsZT1ncCgpO0pnKCJjYXJkSWQiLHQuY2FyZElkKSgiZ3JvdXBOYW1lIixlLmdyb3VwTmFtZSkoInBsdWdpblR5cGUiLHQucGx1Z2luKSgiY2FyZE9ic2VydmVyIixlLmNhcmRPYnNlcnZlcikoImNhcmRMYXp5TG9hZGVyIix0LmNhcmRJZCl9fWZ1bmN0aW9uIGNtdCh0LG4pezEmdCYmYXAoMCl9ZnVuY3Rpb24gc210KHQsbil7aWYoMSZ0KXtjb25zdCB0PW9wKCk7S2coMCwiYnV0dG9uIiwxMyksbHUoMSwxNCksY3AoImNsaWNrIiwoZnVuY3Rpb24gbigpe2pyKHQpO2NvbnN0IGU9Z3AoMyk7cmV0dXJuIGUucGFnZUluZGV4Q2hhbmdlZC5lbWl0KGUucGFnZUluZGV4LTEpfSkpLEpwKDIsIiBQcmV2aW91cyAiKSwkZygpfTImdCYmSmcoImRpc2FibGVkIiwwPT09Z3AoMykucGFnZUluZGV4KX1mdW5jdGlvbiBsbXQodCxuKXsxJnQmJnRwKDAsIm1hdC1pY29uIiwxOSl9ZnVuY3Rpb24gbW10KHQsbil7MSZ0JiZ0cCgwLCJtYXQtaWNvbiIsMjApfWZ1bmN0aW9uIGRtdCh0LG4pe2lmKDEmdCl7Y29uc3QgdD1vcCgpO0tnKDAsImJ1dHRvbiIsMTUpLGx1KDEsMTYpLGNwKCJjbGljayIsKGZ1bmN0aW9uIG4oKXtyZXR1cm4ganIodCksZ3AoMykuZ3JvdXBFeHBhbnNpb25Ub2dnbGVkLmVtaXQoKX0pKSxZZygyLGxtdCwxLDAsIm1hdC1pY29uIiwxNyksWWcoMyxtbXQsMSwwLCJuZy10ZW1wbGF0ZSIsbnVsbCwxOCxLZiksJGcoKX1pZigyJnQpe2NvbnN0IHQ9cWcoNCksbj1ncCgzKTt3cygyKSxKZygibmdJZiIsbi5pc0dyb3VwRXhwYW5kZWQpKCJuZ0lmRWxzZSIsdCl9fWZ1bmN0aW9uIGdtdCh0LG4pe2lmKDEmdCl7Y29uc3QgdD1vcCgpO0tnKDAsInNwYW4iLDI0KSxLZygxLCJpbnB1dCIsMjUpLGNwKCJpbnB1dCIsKGZ1bmN0aW9uIG4oZSl7cmV0dXJuIGpyKHQpLGdwKDQpLm9uUGFnaW5hdGlvbklucHV0Q2hhbmdlKGUpfSkpKCJjaGFuZ2UiLChmdW5jdGlvbiBuKGUpe3JldHVybiBqcih0KSxncCg0KS5vblBhZ2luYXRpb25JbnB1dENoYW5nZShlKX0pKSwkZygpLEpwKDIpLCRnKCl9aWYoMiZ0KXtjb25zdCB0PWdwKDQpO3dzKDEpLEpnKCJ2YWx1ZSIsdC5wYWdlSW5kZXgrMSkoIm1heCIsdC5udW1QYWdlcyksd3MoMSksS3AoIiBvZiAiLHQubnVtUGFnZXMsIiIpfX1mdW5jdGlvbiBwbXQodCxuKXtpZigxJnQpe2NvbnN0IHQ9b3AoKTtLZygwLCJzcGFuIiksWWcoMSxnbXQsMywzLCJzcGFuIiwyMSksS2coMiwiYnV0dG9uIiwyMiksbHUoMywyMyksY3AoImNsaWNrIiwoZnVuY3Rpb24gbigpe2pyKHQpO2NvbnN0IGU9Z3AoMyk7cmV0dXJuIGUucGFnZUluZGV4Q2hhbmdlZC5lbWl0KGUucGFnZUluZGV4KzEpfSkpLEpwKDQsIiBOZXh0ICIpLCRnKCksJGcoKX1pZigyJnQpe2NvbnN0IHQ9Z3AoMikuaXNCb3R0b21Db250cm9sLG49Z3AoKTt3cygxKSxKZygibmdJZiIsbi5zaG93UGFnaW5hdGlvbklucHV0KHQpKSx3cygxKSxKZygiZGlzYWJsZWQiLG4ucGFnZUluZGV4KzE+PW4ubnVtUGFnZXMpfX1mdW5jdGlvbiBibXQodCxuKXtpZigxJnQmJihLZygwLCJkaXYiLDYpLEtnKDEsInNwYW4iLDcpLFlnKDIsc210LDMsMSwiYnV0dG9uIiw4KSwkZygpLEtnKDMsInNwYW4iLDkpLFlnKDQsZG10LDUsMiwiYnV0dG9uIiwxMCksJGcoKSxLZyg1LCJzcGFuIiwxMSksWWcoNixwbXQsNSwyLCJzcGFuIiwxMiksJGcoKSwkZygpKSwyJnQpe2NvbnN0IHQ9Z3AoKS5pc0JvdHRvbUNvbnRyb2wsbj1ncCgpO3dzKDIpLEpnKCJuZ0lmIixuLnNob3dQYWdpbmF0aW9uQ29udHJvbHMpLHdzKDIpLEpnKCJuZ0lmIixuLnNob3dFeHBhbmQodCkpLHdzKDIpLEpnKCJuZ0lmIixuLnNob3dQYWdpbmF0aW9uQ29udHJvbHMpfX1mdW5jdGlvbiB1bXQodCxuKXtpZigxJnQmJllnKDAsYm10LDcsMywiZGl2Iiw1KSwyJnQpe2NvbnN0IHQ9bi5pc0JvdHRvbUNvbnRyb2wsZT1ncCgpO0pnKCJuZ0lmIixlLnNob3dQYWdpbmF0aW9uQ29udHJvbHN8fGUuc2hvd0V4cGFuZCh0KSl9fW9tdC7JtWZhYz1mdW5jdGlvbiB0KG4pe3JldHVybiBuZXcobnx8b210KShaZyhjdikpfSxvbXQuybVjbXA9X28oe3R5cGU6b210LHNlbGVjdG9yczpbWyJjYXJkLXZpZXciXV0saG9zdFZhcnM6NCxob3N0QmluZGluZ3M6ZnVuY3Rpb24gdChuLGUpezImbiYmRHAoImZ1bGwtd2lkdGgiLGUuc2hvd0Z1bGxXaWR0aCkoImZ1bGwtaGVpZ2h0IixlLnNob3dGdWxsSGVpZ2h0KX0saW5wdXRzOntjYXJkSWQ6ImNhcmRJZCIsZ3JvdXBOYW1lOiJncm91cE5hbWUiLHBsdWdpblR5cGU6InBsdWdpblR5cGUifSxkZWNsczoyLHZhcnM6Nixjb25zdHM6W1szLCJjYXJkSWQiLCJncm91cE5hbWUiLCJwbHVnaW5UeXBlIiwicnVuQ29sb3JTY2FsZSIsImZ1bGxXaWR0aENoYW5nZWQiLCJmdWxsSGVpZ2h0Q2hhbmdlZCIsInBpblN0YXRlQ2hhbmdlZCJdXSx0ZW1wbGF0ZTpmdW5jdGlvbiB0KG4sZSl7MSZuJiYoS2coMCwiY2FyZC12aWV3LWNvbXBvbmVudCIsMCksY3AoImZ1bGxXaWR0aENoYW5nZWQiLChmdW5jdGlvbiB0KG4pe3JldHVybiBlLm9uRnVsbFdpZHRoQ2hhbmdlZChuKX0pKSgiZnVsbEhlaWdodENoYW5nZWQiLChmdW5jdGlvbiB0KG4pe3JldHVybiBlLm9uRnVsbEhlaWdodENoYW5nZWQobil9KSkoInBpblN0YXRlQ2hhbmdlZCIsKGZ1bmN0aW9uIHQoKXtyZXR1cm4gZS5vblBpblN0YXRlQ2hhbmdlZCgpfSkpLHlmKDEsImFzeW5jIiksJGcoKSksMiZuJiZKZygiY2FyZElkIixlLmNhcmRJZCkoImdyb3VwTmFtZSIsZS5ncm91cE5hbWUpKCJwbHVnaW5UeXBlIixlLnBsdWdpblR5cGUpKCJydW5Db2xvclNjYWxlIixrZigxLDQsZS5ydW5Db2xvclNjYWxlJCkpfSxkaXJlY3RpdmVzOlthbXRdLHBpcGVzOltvT10sc3R5bGVzOlsnLm1hdC1iYWRnZS1jb250ZW50W19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXdlaWdodDo2MDA7Zm9udC1zaXplOjEycHg7Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmfS5tYXQtYmFkZ2Utc21hbGxbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1iYWRnZS1jb250ZW50W19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6OXB4fS5tYXQtYmFkZ2UtbGFyZ2VbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1iYWRnZS1jb250ZW50W19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MjRweH0ubWF0LWgxW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1oZWFkbGluZVtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdHlwb2dyYXBoeVtfbmdjb250ZW50LSVDT01QJV0gICBoMVtfbmdjb250ZW50LSVDT01QJV17Zm9udDo0MDAgMjRweC8zMnB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtsZXR0ZXItc3BhY2luZzpub3JtYWw7bWFyZ2luOjAgMCAxNnB4fS5tYXQtaDJbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXRpdGxlW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10eXBvZ3JhcGh5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIGgyW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250OjUwMCAyMHB4LzMycHggUm9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2xldHRlci1zcGFjaW5nOm5vcm1hbDttYXJnaW46MCAwIDE2cHh9Lm1hdC1oM1tfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtc3ViaGVhZGluZy0yW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10eXBvZ3JhcGh5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIGgzW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250OjQwMCAxNnB4LzI4cHggUm9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2xldHRlci1zcGFjaW5nOm5vcm1hbDttYXJnaW46MCAwIDE2cHh9Lm1hdC1oNFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtc3ViaGVhZGluZy0xW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10eXBvZ3JhcGh5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIGg0W19uZ2NvbnRlbnQtJUNPTVAlXXtmb250OjQwMCAxNXB4LzI0cHggUm9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2xldHRlci1zcGFjaW5nOm5vcm1hbDttYXJnaW46MCAwIDE2cHh9Lm1hdC1oNVtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdHlwb2dyYXBoeVtfbmdjb250ZW50LSVDT01QJV0gICBoNVtfbmdjb250ZW50LSVDT01QJV17Zm9udDo0MDAgY2FsYygxNHB4ICogMC44MykvMjBweCBSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7bWFyZ2luOjAgMCAxMnB4fS5tYXQtaDZbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXR5cG9ncmFwaHlbX25nY29udGVudC0lQ09NUCVdICAgaDZbX25nY29udGVudC0lQ09NUCVde2ZvbnQ6NDAwIGNhbGMoMTRweCAqIDAuNjcpLzIwcHggUm9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO21hcmdpbjowIDAgMTJweH0ubWF0LWJvZHktc3Ryb25nW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1ib2R5LTJbX25nY29udGVudC0lQ09NUCVde2ZvbnQ6NTAwIDE0cHgvMjRweCBSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7bGV0dGVyLXNwYWNpbmc6bm9ybWFsfS5tYXQtYm9keVtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtYm9keS0xW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10eXBvZ3JhcGh5W19uZ2NvbnRlbnQtJUNPTVAlXXtmb250OjQwMCAxNHB4LzIwcHggUm9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2xldHRlci1zcGFjaW5nOm5vcm1hbH0ubWF0LWJvZHlbX25nY29udGVudC0lQ09NUCVdICAgcFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtYm9keS0xW19uZ2NvbnRlbnQtJUNPTVAlXSAgIHBbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXR5cG9ncmFwaHlbX25nY29udGVudC0lQ09NUCVdICAgcFtfbmdjb250ZW50LSVDT01QJV17bWFyZ2luOjAgMCAxMnB4fS5tYXQtc21hbGxbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWNhcHRpb25bX25nY29udGVudC0lQ09NUCVde2ZvbnQ6NDAwIDEycHgvMjBweCBSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7bGV0dGVyLXNwYWNpbmc6bm9ybWFsfS5tYXQtZGlzcGxheS00W19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10eXBvZ3JhcGh5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZGlzcGxheS00W19uZ2NvbnRlbnQtJUNPTVAlXXtmb250OjMwMCAxMTJweC8xMTJweCBSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7bGV0dGVyLXNwYWNpbmc6LTAuMDVlbTttYXJnaW46MCAwIDU2cHh9Lm1hdC1kaXNwbGF5LTNbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXR5cG9ncmFwaHlbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1kaXNwbGF5LTNbX25nY29udGVudC0lQ09NUCVde2ZvbnQ6NDAwIDU2cHgvNTZweCBSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7bGV0dGVyLXNwYWNpbmc6LTAuMDJlbTttYXJnaW46MCAwIDY0cHh9Lm1hdC1kaXNwbGF5LTJbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXR5cG9ncmFwaHlbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1kaXNwbGF5LTJbX25nY29udGVudC0lQ09NUCVde2ZvbnQ6NDAwIDQ1cHgvNDhweCBSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7bGV0dGVyLXNwYWNpbmc6LTAuMDA1ZW07bWFyZ2luOjAgMCA2NHB4fS5tYXQtZGlzcGxheS0xW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10eXBvZ3JhcGh5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZGlzcGxheS0xW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250OjQwMCAzNHB4LzQwcHggUm9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2xldHRlci1zcGFjaW5nOm5vcm1hbDttYXJnaW46MCAwIDY0cHh9Lm1hdC1ib3R0b20tc2hlZXQtY29udGFpbmVyW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250OjQwMCAxNHB4LzIwcHggUm9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2xldHRlci1zcGFjaW5nOm5vcm1hbH0ubWF0LWJ1dHRvbltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtcmFpc2VkLWJ1dHRvbltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtaWNvbi1idXR0b25bX25nY29udGVudC0lQ09NUCVdLCAubWF0LXN0cm9rZWQtYnV0dG9uW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1mbGF0LWJ1dHRvbltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtZmFiW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1taW5pLWZhYltfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2ZvbnQtc2l6ZToxNHB4O2ZvbnQtd2VpZ2h0OjUwMH0ubWF0LWJ1dHRvbi10b2dnbGVbX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZn0ubWF0LWNhcmRbX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZn0ubWF0LWNhcmQtdGl0bGVbX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToyNHB4O2ZvbnQtd2VpZ2h0OjUwMH0ubWF0LWNhcmQtaGVhZGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtY2FyZC10aXRsZVtfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjIwcHh9Lm1hdC1jYXJkLXN1YnRpdGxlW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1jYXJkLWNvbnRlbnRbX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToxNHB4fS5tYXQtY2hlY2tib3hbX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZn0ubWF0LWNoZWNrYm94LWxheW91dFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWNoZWNrYm94LWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXtsaW5lLWhlaWdodDoyNHB4fS5tYXQtY2hpcFtfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjE0cHg7Zm9udC13ZWlnaHQ6NTAwfS5tYXQtY2hpcFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWNoaXAtdHJhaWxpbmctaWNvbi5tYXQtaWNvbltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtY2hpcFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWNoaXAtcmVtb3ZlLm1hdC1pY29uW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MThweH0ubWF0LXRhYmxlW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWZ9Lm1hdC1oZWFkZXItY2VsbFtfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjEycHg7Zm9udC13ZWlnaHQ6NTAwfS5tYXQtY2VsbFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtZm9vdGVyLWNlbGxbX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToxNHB4fS5tYXQtY2FsZW5kYXJbX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZn0ubWF0LWNhbGVuZGFyLWJvZHlbX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToxM3B4fS5tYXQtY2FsZW5kYXItYm9keS1sYWJlbFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtY2FsZW5kYXItcGVyaW9kLWJ1dHRvbltfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjE0cHg7Zm9udC13ZWlnaHQ6NTAwfS5tYXQtY2FsZW5kYXItdGFibGUtaGVhZGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIHRoW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MTFweDtmb250LXdlaWdodDo0MDB9Lm1hdC1kaWFsb2ctdGl0bGVbX25nY29udGVudC0lQ09NUCVde2ZvbnQ6NTAwIDIwcHgvMzJweCBSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7bGV0dGVyLXNwYWNpbmc6bm9ybWFsfS5tYXQtZXhwYW5zaW9uLXBhbmVsLWhlYWRlcltfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2ZvbnQtc2l6ZToxNXB4O2ZvbnQtd2VpZ2h0OjQwMH0ubWF0LWV4cGFuc2lvbi1wYW5lbC1jb250ZW50W19uZ2NvbnRlbnQtJUNPTVAlXXtmb250OjQwMCAxNHB4LzIwcHggUm9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2xldHRlci1zcGFjaW5nOm5vcm1hbH0ubWF0LWZvcm0tZmllbGRbX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZTppbmhlcml0O2ZvbnQtd2VpZ2h0OjQwMDtsaW5lLWhlaWdodDoxLjEyNTtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7bGV0dGVyLXNwYWNpbmc6bm9ybWFsfS5tYXQtZm9ybS1maWVsZC13cmFwcGVyW19uZ2NvbnRlbnQtJUNPTVAlXXtwYWRkaW5nLWJvdHRvbToxLjM0Mzc1ZW19Lm1hdC1mb3JtLWZpZWxkLXByZWZpeFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWljb25bX25nY29udGVudC0lQ09NUCVdLCAubWF0LWZvcm0tZmllbGQtc3VmZml4W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaWNvbltfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjE1MCU7bGluZS1oZWlnaHQ6MS4xMjV9Lm1hdC1mb3JtLWZpZWxkLXByZWZpeFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWljb24tYnV0dG9uW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1mb3JtLWZpZWxkLXN1ZmZpeFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWljb24tYnV0dG9uW19uZ2NvbnRlbnQtJUNPTVAlXXtoZWlnaHQ6MS41ZW07d2lkdGg6MS41ZW19Lm1hdC1mb3JtLWZpZWxkLXByZWZpeFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWljb24tYnV0dG9uW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaWNvbltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtZm9ybS1maWVsZC1zdWZmaXhbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pY29uLWJ1dHRvbltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWljb25bX25nY29udGVudC0lQ09NUCVde2hlaWdodDoxLjEyNWVtO2xpbmUtaGVpZ2h0OjEuMTI1fS5tYXQtZm9ybS1maWVsZC1pbmZpeFtfbmdjb250ZW50LSVDT01QJV17cGFkZGluZzouNWVtIDA7Ym9yZGVyLXRvcDouODQzNzVlbSBzb2xpZCB0cmFuc3BhcmVudH0ubWF0LWZvcm0tZmllbGQtY2FuLWZsb2F0Lm1hdC1mb3JtLWZpZWxkLXNob3VsZC1mbG9hdFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWZvcm0tZmllbGQtY2FuLWZsb2F0W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaW5wdXQtc2VydmVyW19uZ2NvbnRlbnQtJUNPTVAlXTpmb2N1cyArIC5tYXQtZm9ybS1maWVsZC1sYWJlbC13cmFwcGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17dHJhbnNmb3JtOnRyYW5zbGF0ZVkoLTEuMzQzNzVlbSkgc2NhbGUoMC43NSk7d2lkdGg6MTMzLjMzMzMzMzMzMzMlfS5tYXQtZm9ybS1maWVsZC1jYW4tZmxvYXRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pbnB1dC1zZXJ2ZXJbbGFiZWxdW19uZ2NvbnRlbnQtJUNPTVAlXTpub3QoOmxhYmVsLXNob3duKSArIC5tYXQtZm9ybS1maWVsZC1sYWJlbC13cmFwcGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17dHJhbnNmb3JtOnRyYW5zbGF0ZVkoLTEuMzQzNzRlbSkgc2NhbGUoMC43NSk7d2lkdGg6MTMzLjMzMzM0MzMzMzMlfS5tYXQtZm9ybS1maWVsZC1sYWJlbC13cmFwcGVyW19uZ2NvbnRlbnQtJUNPTVAlXXt0b3A6LTAuODQzNzVlbTtwYWRkaW5nLXRvcDouODQzNzVlbX0ubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVde3RvcDoxLjM0Mzc1ZW19Lm1hdC1mb3JtLWZpZWxkLXVuZGVybGluZVtfbmdjb250ZW50LSVDT01QJV17Ym90dG9tOjEuMzQzNzVlbX0ubWF0LWZvcm0tZmllbGQtc3Vic2NyaXB0LXdyYXBwZXJbX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZTo3NSU7bWFyZ2luLXRvcDouNjY2NjY2NjY2N2VtO3RvcDpjYWxjKDEwMCUgLSAxLjc5MTY2NjY2NjdlbSl9Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtbGVnYWN5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC13cmFwcGVyW19uZ2NvbnRlbnQtJUNPTVAlXXtwYWRkaW5nLWJvdHRvbToxLjI1ZW19Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtbGVnYWN5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1pbmZpeFtfbmdjb250ZW50LSVDT01QJV17cGFkZGluZzouNDM3NWVtIDB9Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtbGVnYWN5Lm1hdC1mb3JtLWZpZWxkLWNhbi1mbG9hdC5tYXQtZm9ybS1maWVsZC1zaG91bGQtZmxvYXRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtbGVnYWN5Lm1hdC1mb3JtLWZpZWxkLWNhbi1mbG9hdFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWlucHV0LXNlcnZlcltfbmdjb250ZW50LSVDT01QJV06Zm9jdXMgKyAubWF0LWZvcm0tZmllbGQtbGFiZWwtd3JhcHBlcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVde3RyYW5zZm9ybTp0cmFuc2xhdGVZKC0xLjI4MTI1ZW0pIHNjYWxlKDAuNzUpIHBlcnNwZWN0aXZlKDEwMHB4KSB0cmFuc2xhdGVaKDAuMDAxcHgpOy1tcy10cmFuc2Zvcm06dHJhbnNsYXRlWSgtMS4yODEyNWVtKSBzY2FsZSgwLjc1KTt3aWR0aDoxMzMuMzMzMzMzMzMzMyV9Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtbGVnYWN5Lm1hdC1mb3JtLWZpZWxkLWNhbi1mbG9hdFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtYXV0b2ZpbGwtY29udHJvbFtfbmdjb250ZW50LSVDT01QJV06LXdlYmtpdC1hdXRvZmlsbCArIC5tYXQtZm9ybS1maWVsZC1sYWJlbC13cmFwcGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17dHJhbnNmb3JtOnRyYW5zbGF0ZVkoLTEuMjgxMjVlbSkgc2NhbGUoMC43NSkgcGVyc3BlY3RpdmUoMTAwcHgpIHRyYW5zbGF0ZVooMC4wMDEwMXB4KTstbXMtdHJhbnNmb3JtOnRyYW5zbGF0ZVkoLTEuMjgxMjRlbSkgc2NhbGUoMC43NSk7d2lkdGg6MTMzLjMzMzM0MzMzMzMlfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWxlZ2FjeS5tYXQtZm9ybS1maWVsZC1jYW4tZmxvYXRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pbnB1dC1zZXJ2ZXJbbGFiZWxdW19uZ2NvbnRlbnQtJUNPTVAlXTpub3QoOmxhYmVsLXNob3duKSArIC5tYXQtZm9ybS1maWVsZC1sYWJlbC13cmFwcGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17dHJhbnNmb3JtOnRyYW5zbGF0ZVkoLTEuMjgxMjVlbSkgc2NhbGUoMC43NSkgcGVyc3BlY3RpdmUoMTAwcHgpIHRyYW5zbGF0ZVooMC4wMDEwMnB4KTstbXMtdHJhbnNmb3JtOnRyYW5zbGF0ZVkoLTEuMjgxMjNlbSkgc2NhbGUoMC43NSk7d2lkdGg6MTMzLjMzMzM1MzMzMzMlfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWxlZ2FjeVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVde3RvcDoxLjI4MTI1ZW19Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtbGVnYWN5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC11bmRlcmxpbmVbX25nY29udGVudC0lQ09NUCVde2JvdHRvbToxLjI1ZW19Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtbGVnYWN5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1zdWJzY3JpcHQtd3JhcHBlcltfbmdjb250ZW50LSVDT01QJV17bWFyZ2luLXRvcDouNTQxNjY2NjY2N2VtO3RvcDpjYWxjKDEwMCUgLSAxLjY2NjY2NjY2NjdlbSl9QG1lZGlhIHByaW50ey5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWxlZ2FjeS5tYXQtZm9ybS1maWVsZC1jYW4tZmxvYXQubWF0LWZvcm0tZmllbGQtc2hvdWxkLWZsb2F0W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWxlZ2FjeS5tYXQtZm9ybS1maWVsZC1jYW4tZmxvYXRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pbnB1dC1zZXJ2ZXJbX25nY29udGVudC0lQ09NUCVdOmZvY3VzICsgLm1hdC1mb3JtLWZpZWxkLWxhYmVsLXdyYXBwZXJbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXt0cmFuc2Zvcm06dHJhbnNsYXRlWSgtMS4yODEyMmVtKSBzY2FsZSgwLjc1KX0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1sZWdhY3kubWF0LWZvcm0tZmllbGQtY2FuLWZsb2F0W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1hdXRvZmlsbC1jb250cm9sW19uZ2NvbnRlbnQtJUNPTVAlXTotd2Via2l0LWF1dG9maWxsICsgLm1hdC1mb3JtLWZpZWxkLWxhYmVsLXdyYXBwZXJbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXt0cmFuc2Zvcm06dHJhbnNsYXRlWSgtMS4yODEyMWVtKSBzY2FsZSgwLjc1KX0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1sZWdhY3kubWF0LWZvcm0tZmllbGQtY2FuLWZsb2F0W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaW5wdXQtc2VydmVyW2xhYmVsXVtfbmdjb250ZW50LSVDT01QJV06bm90KDpsYWJlbC1zaG93bikgKyAubWF0LWZvcm0tZmllbGQtbGFiZWwtd3JhcHBlcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVde3RyYW5zZm9ybTp0cmFuc2xhdGVZKC0xLjI4MTJlbSkgc2NhbGUoMC43NSl9fS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWZpbGxbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWluZml4W19uZ2NvbnRlbnQtJUNPTVAlXXtwYWRkaW5nOi4yNWVtIDAgLjc1ZW0gMH0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1maWxsW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17dG9wOjEuMDkzNzVlbTttYXJnaW4tdG9wOi0wLjVlbX0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1maWxsLm1hdC1mb3JtLWZpZWxkLWNhbi1mbG9hdC5tYXQtZm9ybS1maWVsZC1zaG91bGQtZmxvYXRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtZmlsbC5tYXQtZm9ybS1maWVsZC1jYW4tZmxvYXRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pbnB1dC1zZXJ2ZXJbX25nY29udGVudC0lQ09NUCVdOmZvY3VzICsgLm1hdC1mb3JtLWZpZWxkLWxhYmVsLXdyYXBwZXJbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXt0cmFuc2Zvcm06dHJhbnNsYXRlWSgtMC41OTM3NWVtKSBzY2FsZSgwLjc1KTt3aWR0aDoxMzMuMzMzMzMzMzMzMyV9Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtZmlsbC5tYXQtZm9ybS1maWVsZC1jYW4tZmxvYXRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pbnB1dC1zZXJ2ZXJbbGFiZWxdW19uZ2NvbnRlbnQtJUNPTVAlXTpub3QoOmxhYmVsLXNob3duKSArIC5tYXQtZm9ybS1maWVsZC1sYWJlbC13cmFwcGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17dHJhbnNmb3JtOnRyYW5zbGF0ZVkoLTAuNTkzNzRlbSkgc2NhbGUoMC43NSk7d2lkdGg6MTMzLjMzMzM0MzMzMzMlfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLW91dGxpbmVbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWluZml4W19uZ2NvbnRlbnQtJUNPTVAlXXtwYWRkaW5nOjFlbSAwIDFlbSAwfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLW91dGxpbmVbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXt0b3A6MS44NDM3NWVtO21hcmdpbi10b3A6LTAuMjVlbX0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1vdXRsaW5lLm1hdC1mb3JtLWZpZWxkLWNhbi1mbG9hdC5tYXQtZm9ybS1maWVsZC1zaG91bGQtZmxvYXRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2Utb3V0bGluZS5tYXQtZm9ybS1maWVsZC1jYW4tZmxvYXRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pbnB1dC1zZXJ2ZXJbX25nY29udGVudC0lQ09NUCVdOmZvY3VzICsgLm1hdC1mb3JtLWZpZWxkLWxhYmVsLXdyYXBwZXJbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXt0cmFuc2Zvcm06dHJhbnNsYXRlWSgtMS41OTM3NWVtKSBzY2FsZSgwLjc1KTt3aWR0aDoxMzMuMzMzMzMzMzMzMyV9Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2Utb3V0bGluZS5tYXQtZm9ybS1maWVsZC1jYW4tZmxvYXRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pbnB1dC1zZXJ2ZXJbbGFiZWxdW19uZ2NvbnRlbnQtJUNPTVAlXTpub3QoOmxhYmVsLXNob3duKSArIC5tYXQtZm9ybS1maWVsZC1sYWJlbC13cmFwcGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17dHJhbnNmb3JtOnRyYW5zbGF0ZVkoLTEuNTkzNzRlbSkgc2NhbGUoMC43NSk7d2lkdGg6MTMzLjMzMzM0MzMzMzMlfS5tYXQtZ3JpZC10aWxlLWhlYWRlcltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtZ3JpZC10aWxlLWZvb3Rlcltfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjE0cHh9Lm1hdC1ncmlkLXRpbGUtaGVhZGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGluZVtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtZ3JpZC10aWxlLWZvb3Rlcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpbmVbX25nY29udGVudC0lQ09NUCVde3doaXRlLXNwYWNlOm5vd3JhcDtvdmVyZmxvdzpoaWRkZW47dGV4dC1vdmVyZmxvdzplbGxpcHNpcztkaXNwbGF5OmJsb2NrO2JveC1zaXppbmc6Ym9yZGVyLWJveH0ubWF0LWdyaWQtdGlsZS1oZWFkZXJbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saW5lW19uZ2NvbnRlbnQtJUNPTVAlXTpudGgtY2hpbGQobisyKSwgLm1hdC1ncmlkLXRpbGUtZm9vdGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGluZVtfbmdjb250ZW50LSVDT01QJV06bnRoLWNoaWxkKG4rMil7Zm9udC1zaXplOjEycHh9aW5wdXQubWF0LWlucHV0LWVsZW1lbnRbX25nY29udGVudC0lQ09NUCVde21hcmdpbi10b3A6LTAuMDYyNWVtfS5tYXQtbWVudS1pdGVtW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7Zm9udC1zaXplOjE0cHg7Zm9udC13ZWlnaHQ6NDAwfS5tYXQtcGFnaW5hdG9yW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1wYWdpbmF0b3ItcGFnZS1zaXplW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtc2VsZWN0LXRyaWdnZXJbX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtmb250LXNpemU6MTJweH0ubWF0LXJhZGlvLWJ1dHRvbltfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmfS5tYXQtc2VsZWN0W19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWZ9Lm1hdC1zZWxlY3QtdHJpZ2dlcltfbmdjb250ZW50LSVDT01QJV17aGVpZ2h0OjEuMTI1ZW19Lm1hdC1zbGlkZS10b2dnbGUtY29udGVudFtfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmfS5tYXQtc2xpZGVyLXRodW1iLWxhYmVsLXRleHRbX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtmb250LXNpemU6MTJweDtmb250LXdlaWdodDo1MDB9Lm1hdC1zdGVwcGVyLXZlcnRpY2FsW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1zdGVwcGVyLWhvcml6b250YWxbX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZn0ubWF0LXN0ZXAtbGFiZWxbX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToxNHB4O2ZvbnQtd2VpZ2h0OjQwMH0ubWF0LXN0ZXAtc3ViLWxhYmVsLWVycm9yW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXdlaWdodDpub3JtYWx9Lm1hdC1zdGVwLWxhYmVsLWVycm9yW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MTRweH0ubWF0LXN0ZXAtbGFiZWwtc2VsZWN0ZWRbX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToxNHB4O2ZvbnQtd2VpZ2h0OjUwMH0ubWF0LXRhYi1ncm91cFtfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmfS5tYXQtdGFiLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10YWItbGlua1tfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2ZvbnQtc2l6ZToxNHB4O2ZvbnQtd2VpZ2h0OjUwMH0ubWF0LXRvb2xiYXJbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXRvb2xiYXJbX25nY29udGVudC0lQ09NUCVdICAgaDFbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXRvb2xiYXJbX25nY29udGVudC0lQ09NUCVdICAgaDJbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXRvb2xiYXJbX25nY29udGVudC0lQ09NUCVdICAgaDNbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXRvb2xiYXJbX25nY29udGVudC0lQ09NUCVdICAgaDRbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXRvb2xiYXJbX25nY29udGVudC0lQ09NUCVdICAgaDVbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXRvb2xiYXJbX25nY29udGVudC0lQ09NUCVdICAgaDZbX25nY29udGVudC0lQ09NUCVde2ZvbnQ6NTAwIDIwcHgvMzJweCBSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7bGV0dGVyLXNwYWNpbmc6bm9ybWFsO21hcmdpbjowfS5tYXQtdG9vbHRpcFtfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2ZvbnQtc2l6ZToxMHB4O3BhZGRpbmctdG9wOjZweDtwYWRkaW5nLWJvdHRvbTo2cHh9Lm1hdC10b29sdGlwLWhhbmRzZXRbX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToxNHB4O3BhZGRpbmctdG9wOjhweDtwYWRkaW5nLWJvdHRvbTo4cHh9Lm1hdC1saXN0LWl0ZW1bX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZn0ubWF0LWxpc3Qtb3B0aW9uW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWZ9Lm1hdC1saXN0LWJhc2VbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saXN0LWl0ZW1bX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToxNnB4fS5tYXQtbGlzdC1iYXNlW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGlzdC1pdGVtW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGluZVtfbmdjb250ZW50LSVDT01QJV17d2hpdGUtc3BhY2U6bm93cmFwO292ZXJmbG93OmhpZGRlbjt0ZXh0LW92ZXJmbG93OmVsbGlwc2lzO2Rpc3BsYXk6YmxvY2s7Ym94LXNpemluZzpib3JkZXItYm94fS5tYXQtbGlzdC1iYXNlW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGlzdC1pdGVtW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGluZVtfbmdjb250ZW50LSVDT01QJV06bnRoLWNoaWxkKG4rMil7Zm9udC1zaXplOjE0cHh9Lm1hdC1saXN0LWJhc2VbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saXN0LW9wdGlvbltfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjE2cHh9Lm1hdC1saXN0LWJhc2VbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saXN0LW9wdGlvbltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpbmVbX25nY29udGVudC0lQ09NUCVde3doaXRlLXNwYWNlOm5vd3JhcDtvdmVyZmxvdzpoaWRkZW47dGV4dC1vdmVyZmxvdzplbGxpcHNpcztkaXNwbGF5OmJsb2NrO2JveC1zaXppbmc6Ym9yZGVyLWJveH0ubWF0LWxpc3QtYmFzZVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpc3Qtb3B0aW9uW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGluZVtfbmdjb250ZW50LSVDT01QJV06bnRoLWNoaWxkKG4rMil7Zm9udC1zaXplOjE0cHh9Lm1hdC1saXN0LWJhc2VbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1zdWJoZWFkZXJbX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtmb250LXNpemU6MTRweDtmb250LXdlaWdodDo1MDB9Lm1hdC1saXN0LWJhc2VbZGVuc2VdW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGlzdC1pdGVtW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MTJweH0ubWF0LWxpc3QtYmFzZVtkZW5zZV1bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saXN0LWl0ZW1bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saW5lW19uZ2NvbnRlbnQtJUNPTVAlXXt3aGl0ZS1zcGFjZTpub3dyYXA7b3ZlcmZsb3c6aGlkZGVuO3RleHQtb3ZlcmZsb3c6ZWxsaXBzaXM7ZGlzcGxheTpibG9jaztib3gtc2l6aW5nOmJvcmRlci1ib3h9Lm1hdC1saXN0LWJhc2VbZGVuc2VdW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGlzdC1pdGVtW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGluZVtfbmdjb250ZW50LSVDT01QJV06bnRoLWNoaWxkKG4rMil7Zm9udC1zaXplOjEycHh9Lm1hdC1saXN0LWJhc2VbZGVuc2VdW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGlzdC1vcHRpb25bX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToxMnB4fS5tYXQtbGlzdC1iYXNlW2RlbnNlXVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpc3Qtb3B0aW9uW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGluZVtfbmdjb250ZW50LSVDT01QJV17d2hpdGUtc3BhY2U6bm93cmFwO292ZXJmbG93OmhpZGRlbjt0ZXh0LW92ZXJmbG93OmVsbGlwc2lzO2Rpc3BsYXk6YmxvY2s7Ym94LXNpemluZzpib3JkZXItYm94fS5tYXQtbGlzdC1iYXNlW2RlbnNlXVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpc3Qtb3B0aW9uW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGluZVtfbmdjb250ZW50LSVDT01QJV06bnRoLWNoaWxkKG4rMil7Zm9udC1zaXplOjEycHh9Lm1hdC1saXN0LWJhc2VbZGVuc2VdW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtc3ViaGVhZGVyW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7Zm9udC1zaXplOjEycHg7Zm9udC13ZWlnaHQ6NTAwfS5tYXQtb3B0aW9uW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7Zm9udC1zaXplOjE2cHh9Lm1hdC1vcHRncm91cC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17Zm9udDo1MDAgMTRweC8yNHB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtsZXR0ZXItc3BhY2luZzpub3JtYWx9Lm1hdC1zaW1wbGUtc25hY2tiYXJbX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtmb250LXNpemU6MTRweH0ubWF0LXNpbXBsZS1zbmFja2Jhci1hY3Rpb25bX25nY29udGVudC0lQ09NUCVde2xpbmUtaGVpZ2h0OjE7Zm9udC1mYW1pbHk6aW5oZXJpdDtmb250LXNpemU6aW5oZXJpdDtmb250LXdlaWdodDo1MDB9Lm1hdC10cmVlW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWZ9Lm1hdC10cmVlLW5vZGVbX25nY29udGVudC0lQ09NUCVdLCAubWF0LW5lc3RlZC10cmVlLW5vZGVbX25nY29udGVudC0lQ09NUCVde2ZvbnQtd2VpZ2h0OjQwMDtmb250LXNpemU6MTRweH0ubWF0LXJpcHBsZVtfbmdjb250ZW50LSVDT01QJV17b3ZlcmZsb3c6aGlkZGVuO3Bvc2l0aW9uOnJlbGF0aXZlfS5tYXQtcmlwcGxlW19uZ2NvbnRlbnQtJUNPTVAlXTpub3QoOmVtcHR5KXt0cmFuc2Zvcm06dHJhbnNsYXRlWigwKX0ubWF0LXJpcHBsZS5tYXQtcmlwcGxlLXVuYm91bmRlZFtfbmdjb250ZW50LSVDT01QJV17b3ZlcmZsb3c6dmlzaWJsZX0ubWF0LXJpcHBsZS1lbGVtZW50W19uZ2NvbnRlbnQtJUNPTVAlXXtwb3NpdGlvbjphYnNvbHV0ZTtib3JkZXItcmFkaXVzOjUwJTtwb2ludGVyLWV2ZW50czpub25lO3RyYW5zaXRpb246b3BhY2l0eSx0cmFuc2Zvcm0gMG1zIGN1YmljLWJlemllcigwLCAwLCAwLjIsIDEpO3RyYW5zZm9ybTpzY2FsZSgwKX0uY2RrLWhpZ2gtY29udHJhc3QtYWN0aXZlW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtcmlwcGxlLWVsZW1lbnRbX25nY29udGVudC0lQ09NUCVde2Rpc3BsYXk6bm9uZX0uY2RrLXZpc3VhbGx5LWhpZGRlbltfbmdjb250ZW50LSVDT01QJV17Ym9yZGVyOjA7Y2xpcDpyZWN0KDAgMCAwIDApO2hlaWdodDoxcHg7bWFyZ2luOi0xcHg7b3ZlcmZsb3c6aGlkZGVuO3BhZGRpbmc6MDtwb3NpdGlvbjphYnNvbHV0ZTt3aWR0aDoxcHg7b3V0bGluZTowOy13ZWJraXQtYXBwZWFyYW5jZTpub25lOy1tb3otYXBwZWFyYW5jZTpub25lfS5jZGstb3ZlcmxheS1jb250YWluZXJbX25nY29udGVudC0lQ09NUCVdLCAuY2RrLWdsb2JhbC1vdmVybGF5LXdyYXBwZXJbX25nY29udGVudC0lQ09NUCVde3BvaW50ZXItZXZlbnRzOm5vbmU7dG9wOjA7bGVmdDowO2hlaWdodDoxMDAlO3dpZHRoOjEwMCV9LmNkay1vdmVybGF5LWNvbnRhaW5lcltfbmdjb250ZW50LSVDT01QJV17cG9zaXRpb246Zml4ZWQ7ei1pbmRleDoxMDAwfS5jZGstb3ZlcmxheS1jb250YWluZXJbX25nY29udGVudC0lQ09NUCVdOmVtcHR5e2Rpc3BsYXk6bm9uZX0uY2RrLWdsb2JhbC1vdmVybGF5LXdyYXBwZXJbX25nY29udGVudC0lQ09NUCVde2Rpc3BsYXk6ZmxleDtwb3NpdGlvbjphYnNvbHV0ZTt6LWluZGV4OjEwMDB9LmNkay1vdmVybGF5LXBhbmVbX25nY29udGVudC0lQ09NUCVde3Bvc2l0aW9uOmFic29sdXRlO3BvaW50ZXItZXZlbnRzOmF1dG87Ym94LXNpemluZzpib3JkZXItYm94O3otaW5kZXg6MTAwMDtkaXNwbGF5OmZsZXg7bWF4LXdpZHRoOjEwMCU7bWF4LWhlaWdodDoxMDAlfS5jZGstb3ZlcmxheS1iYWNrZHJvcFtfbmdjb250ZW50LSVDT01QJV17cG9zaXRpb246YWJzb2x1dGU7dG9wOjA7Ym90dG9tOjA7bGVmdDowO3JpZ2h0OjA7ei1pbmRleDoxMDAwO3BvaW50ZXItZXZlbnRzOmF1dG87LXdlYmtpdC10YXAtaGlnaGxpZ2h0LWNvbG9yOnRyYW5zcGFyZW50O3RyYW5zaXRpb246b3BhY2l0eSA0MDBtcyBjdWJpYy1iZXppZXIoMC4yNSwgMC44LCAwLjI1LCAxKTtvcGFjaXR5OjB9LmNkay1vdmVybGF5LWJhY2tkcm9wLmNkay1vdmVybGF5LWJhY2tkcm9wLXNob3dpbmdbX25nY29udGVudC0lQ09NUCVde29wYWNpdHk6MX1AbWVkaWEgc2NyZWVuIGFuZCAoLW1zLWhpZ2gtY29udHJhc3Q6IGFjdGl2ZSl7LmNkay1vdmVybGF5LWJhY2tkcm9wLmNkay1vdmVybGF5LWJhY2tkcm9wLXNob3dpbmdbX25nY29udGVudC0lQ09NUCVde29wYWNpdHk6LjZ9fS5jZGstb3ZlcmxheS1kYXJrLWJhY2tkcm9wW19uZ2NvbnRlbnQtJUNPTVAlXXtiYWNrZ3JvdW5kOnJnYmEoMCwwLDAsLjMyKX0uY2RrLW92ZXJsYXktdHJhbnNwYXJlbnQtYmFja2Ryb3BbX25nY29udGVudC0lQ09NUCVdLCAuY2RrLW92ZXJsYXktdHJhbnNwYXJlbnQtYmFja2Ryb3AuY2RrLW92ZXJsYXktYmFja2Ryb3Atc2hvd2luZ1tfbmdjb250ZW50LSVDT01QJV17b3BhY2l0eTowfS5jZGstb3ZlcmxheS1jb25uZWN0ZWQtcG9zaXRpb24tYm91bmRpbmctYm94W19uZ2NvbnRlbnQtJUNPTVAlXXtwb3NpdGlvbjphYnNvbHV0ZTt6LWluZGV4OjEwMDA7ZGlzcGxheTpmbGV4O2ZsZXgtZGlyZWN0aW9uOmNvbHVtbjttaW4td2lkdGg6MXB4O21pbi1oZWlnaHQ6MXB4fS5jZGstZ2xvYmFsLXNjcm9sbGJsb2NrW19uZ2NvbnRlbnQtJUNPTVAlXXtwb3NpdGlvbjpmaXhlZDt3aWR0aDoxMDAlO292ZXJmbG93LXk6c2Nyb2xsfUBrZXlmcmFtZXMgY2RrLXRleHQtZmllbGQtYXV0b2ZpbGwtc3RhcnR7fUBrZXlmcmFtZXMgY2RrLXRleHQtZmllbGQtYXV0b2ZpbGwtZW5ke30uY2RrLXRleHQtZmllbGQtYXV0b2ZpbGwtbW9uaXRvcmVkW19uZ2NvbnRlbnQtJUNPTVAlXTotd2Via2l0LWF1dG9maWxse2FuaW1hdGlvbjpjZGstdGV4dC1maWVsZC1hdXRvZmlsbC1zdGFydCAwcyAxbXN9LmNkay10ZXh0LWZpZWxkLWF1dG9maWxsLW1vbml0b3JlZFtfbmdjb250ZW50LSVDT01QJV06bm90KDotd2Via2l0LWF1dG9maWxsKXthbmltYXRpb246Y2RrLXRleHQtZmllbGQtYXV0b2ZpbGwtZW5kIDBzIDFtc310ZXh0YXJlYS5jZGstdGV4dGFyZWEtYXV0b3NpemVbX25nY29udGVudC0lQ09NUCVde3Jlc2l6ZTpub25lfXRleHRhcmVhLmNkay10ZXh0YXJlYS1hdXRvc2l6ZS1tZWFzdXJpbmdbX25nY29udGVudC0lQ09NUCVde3BhZGRpbmc6MnB4IDAgIWltcG9ydGFudDtib3gtc2l6aW5nOmNvbnRlbnQtYm94ICFpbXBvcnRhbnQ7aGVpZ2h0OmF1dG8gIWltcG9ydGFudDtvdmVyZmxvdzpoaWRkZW4gIWltcG9ydGFudH10ZXh0YXJlYS5jZGstdGV4dGFyZWEtYXV0b3NpemUtbWVhc3VyaW5nLWZpcmVmb3hbX25nY29udGVudC0lQ09NUCVde3BhZGRpbmc6MnB4IDAgIWltcG9ydGFudDtib3gtc2l6aW5nOmNvbnRlbnQtYm94ICFpbXBvcnRhbnQ7aGVpZ2h0OjAgIWltcG9ydGFudH0ubWF0LWZvY3VzLWluZGljYXRvcltfbmdjb250ZW50LSVDT01QJV17cG9zaXRpb246cmVsYXRpdmV9Lm1hdC1tZGMtZm9jdXMtaW5kaWNhdG9yW19uZ2NvbnRlbnQtJUNPTVAlXXtwb3NpdGlvbjpyZWxhdGl2ZX0ubWF0LXJpcHBsZS1lbGVtZW50W19uZ2NvbnRlbnQtJUNPTVAlXXtiYWNrZ3JvdW5kLWNvbG9yOnJnYmEoMCwwLDAsLjEpfS5tYXQtb3B0aW9uW19uZ2NvbnRlbnQtJUNPTVAlXXtjb2xvcjojMjEyMTIxfS5tYXQtb3B0aW9uW19uZ2NvbnRlbnQtJUNPTVAlXTpob3Zlcjpub3QoLm1hdC1vcHRpb24tZGlzYWJsZWQpLCAubWF0LW9wdGlvbltfbmdjb250ZW50LSVDT01QJV06Zm9jdXM6bm90KC5tYXQtb3B0aW9uLWRpc2FibGVkKXtiYWNrZ3JvdW5kOnJnYmEoMCwwLDAsLjA0KX0ubWF0LW9wdGlvbi5tYXQtc2VsZWN0ZWRbX25nY29udGVudC0lQ09NUCVdOm5vdCgubWF0LW9wdGlvbi1tdWx0aXBsZSk6bm90KC5tYXQtb3B0aW9uLWRpc2FibGVkKXtiYWNrZ3JvdW5kOnJnYmEoMCwwLDAsLjA0KX0ubWF0LW9wdGlvbi5tYXQtYWN0aXZlW19uZ2NvbnRlbnQtJUNPTVAlXXtiYWNrZ3JvdW5kOnJnYmEoMCwwLDAsLjA0KTtjb2xvcjojMjEyMTIxfS5tYXQtb3B0aW9uLm1hdC1vcHRpb24tZGlzYWJsZWRbX25nY29udGVudC0lQ09NUCVde2NvbG9yOnJnYmEoMCwwLDAsLjM4KX0ubWF0LXByaW1hcnlbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1vcHRpb24ubWF0LXNlbGVjdGVkW19uZ2NvbnRlbnQtJUNPTVAlXTpub3QoLm1hdC1vcHRpb24tZGlzYWJsZWQpe2NvbG9yOiNmNTdjMDB9Lm1hdC1hY2NlbnRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1vcHRpb24ubWF0LXNlbGVjdGVkW19uZ2NvbnRlbnQtJUNPTVAlXTpub3QoLm1hdC1vcHRpb24tZGlzYWJsZWQpe2NvbG9yOiNmZjk4MDB9Lm1hdC13YXJuW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtb3B0aW9uLm1hdC1zZWxlY3RlZFtfbmdjb250ZW50LSVDT01QJV06bm90KC5tYXQtb3B0aW9uLWRpc2FibGVkKXtjb2xvcjojZjQ0MzM2fS5tYXQtb3B0Z3JvdXAtbGFiZWxbX25nY29udGVudC0lQ09NUCVde2NvbG9yOiM2MTYxNjF9Lm1hdC1vcHRncm91cC1kaXNhYmxlZFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LW9wdGdyb3VwLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXtjb2xvcjpyZ2JhKDAsMCwwLC4zOCl9Lm1hdC1wc2V1ZG8tY2hlY2tib3hbX25nY29udGVudC0lQ09NUCVde2NvbG9yOiM2MTYxNjF9Lm1hdC1wc2V1ZG8tY2hlY2tib3hbX25nY29udGVudC0lQ09NUCVdOjphZnRlcntjb2xvcjojZmFmYWZhfS5tYXQtcHNldWRvLWNoZWNrYm94LWRpc2FibGVkW19uZ2NvbnRlbnQtJUNPTVAlXXtjb2xvcjojYjBiMGIwfS5tYXQtcHJpbWFyeVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXBzZXVkby1jaGVja2JveC1jaGVja2VkW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1wcmltYXJ5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtcHNldWRvLWNoZWNrYm94LWluZGV0ZXJtaW5hdGVbX25nY29udGVudC0lQ09NUCVde2JhY2tncm91bmQ6I2Y1N2MwMH0ubWF0LXBzZXVkby1jaGVja2JveC1jaGVja2VkW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1wc2V1ZG8tY2hlY2tib3gtaW5kZXRlcm1pbmF0ZVtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtYWNjZW50W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtcHNldWRvLWNoZWNrYm94LWNoZWNrZWRbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWFjY2VudFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXBzZXVkby1jaGVja2JveC1pbmRldGVybWluYXRlW19uZ2NvbnRlbnQtJUNPTVAlXXtiYWNrZ3JvdW5kOiNmZjk4MDB9Lm1hdC13YXJuW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtcHNldWRvLWNoZWNrYm94LWNoZWNrZWRbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXdhcm5bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1wc2V1ZG8tY2hlY2tib3gtaW5kZXRlcm1pbmF0ZVtfbmdjb250ZW50LSVDT01QJV17YmFja2dyb3VuZDojZjQ0MzM2fS5tYXQtcHNldWRvLWNoZWNrYm94LWNoZWNrZWQubWF0LXBzZXVkby1jaGVja2JveC1kaXNhYmxlZFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtcHNldWRvLWNoZWNrYm94LWluZGV0ZXJtaW5hdGUubWF0LXBzZXVkby1jaGVja2JveC1kaXNhYmxlZFtfbmdjb250ZW50LSVDT01QJV17YmFja2dyb3VuZDojYjBiMGIwfS5tYXQtYXBwLWJhY2tncm91bmRbX25nY29udGVudC0lQ09NUCVde2JhY2tncm91bmQtY29sb3I6I2ZhZmFmYTtjb2xvcjojMjEyMTIxfS5tYXQtZWxldmF0aW9uLXowW19uZ2NvbnRlbnQtJUNPTVAlXXtib3gtc2hhZG93OjBweCAwcHggMHB4IDBweCByZ2JhKDAsIDAsIDAsIDAuMiksMHB4IDBweCAwcHggMHB4IHJnYmEoMCwgMCwgMCwgMC4xNCksMHB4IDBweCAwcHggMHB4IHJnYmEoMCwgMCwgMCwgMC4xMil9Lm1hdC1lbGV2YXRpb24tejFbX25nY29udGVudC0lQ09NUCVde2JveC1zaGFkb3c6MHB4IDJweCAxcHggLTFweCByZ2JhKDAsIDAsIDAsIDAuMiksMHB4IDFweCAxcHggMHB4IHJnYmEoMCwgMCwgMCwgMC4xNCksMHB4IDFweCAzcHggMHB4IHJnYmEoMCwgMCwgMCwgMC4xMil9Lm1hdC1lbGV2YXRpb24tejJbX25nY29udGVudC0lQ09NUCVde2JveC1zaGFkb3c6MHB4IDNweCAxcHggLTJweCByZ2JhKDAsIDAsIDAsIDAuMiksMHB4IDJweCAycHggMHB4IHJnYmEoMCwgMCwgMCwgMC4xNCksMHB4IDFweCA1cHggMHB4IHJnYmEoMCwgMCwgMCwgMC4xMil9Lm1hdC1lbGV2YXRpb24tejNbX25nY29udGVudC0lQ09NUCVde2JveC1zaGFkb3c6MHB4IDNweCAzcHggLTJweCByZ2JhKDAsIDAsIDAsIDAuMiksMHB4IDNweCA0cHggMHB4IHJnYmEoMCwgMCwgMCwgMC4xNCksMHB4IDFweCA4cHggMHB4IHJnYmEoMCwgMCwgMCwgMC4xMil9Lm1hdC1lbGV2YXRpb24tejRbX25nY29udGVudC0lQ09NUCVde2JveC1zaGFkb3c6MHB4IDJweCA0cHggLTFweCByZ2JhKDAsIDAsIDAsIDAuMiksMHB4IDRweCA1cHggMHB4IHJnYmEoMCwgMCwgMCwgMC4xNCksMHB4IDFweCAxMHB4IDBweCByZ2JhKDAsIDAsIDAsIDAuMTIpfS5tYXQtZWxldmF0aW9uLXo1W19uZ2NvbnRlbnQtJUNPTVAlXXtib3gtc2hhZG93OjBweCAzcHggNXB4IC0xcHggcmdiYSgwLCAwLCAwLCAwLjIpLDBweCA1cHggOHB4IDBweCByZ2JhKDAsIDAsIDAsIDAuMTQpLDBweCAxcHggMTRweCAwcHggcmdiYSgwLCAwLCAwLCAwLjEyKX0ubWF0LWVsZXZhdGlvbi16Nltfbmdjb250ZW50LSVDT01QJV17Ym94LXNoYWRvdzowcHggM3B4IDVweCAtMXB4IHJnYmEoMCwgMCwgMCwgMC4yKSwwcHggNnB4IDEwcHggMHB4IHJnYmEoMCwgMCwgMCwgMC4xNCksMHB4IDFweCAxOHB4IDBweCByZ2JhKDAsIDAsIDAsIDAuMTIpfS5tYXQtZWxldmF0aW9uLXo3W19uZ2NvbnRlbnQtJUNPTVAlXXtib3gtc2hhZG93OjBweCA0cHggNXB4IC0ycHggcmdiYSgwLCAwLCAwLCAwLjIpLDBweCA3cHggMTBweCAxcHggcmdiYSgwLCAwLCAwLCAwLjE0KSwwcHggMnB4IDE2cHggMXB4IHJnYmEoMCwgMCwgMCwgMC4xMil9Lm1hdC1lbGV2YXRpb24tejhbX25nY29udGVudC0lQ09NUCVde2JveC1zaGFkb3c6MHB4IDVweCA1cHggLTNweCByZ2JhKDAsIDAsIDAsIDAuMiksMHB4IDhweCAxMHB4IDFweCByZ2JhKDAsIDAsIDAsIDAuMTQpLDBweCAzcHggMTRweCAycHggcmdiYSgwLCAwLCAwLCAwLjEyKX0ubWF0LWVsZXZhdGlvbi16OVtfbmdjb250ZW50LSVDT01QJV17Ym94LXNoYWRvdzowcHggNXB4IDZweCAtM3B4IHJnYmEoMCwgMCwgMCwgMC4yKSwwcHggOXB4IDEycHggMXB4IHJnYmEoMCwgMCwgMCwgMC4xNCksMHB4IDNweCAxNnB4IDJweCByZ2JhKDAsIDAsIDAsIDAuMTIpfS5tYXQtZWxldmF0aW9uLXoxMFtfbmdjb250ZW50LSVDT01QJV17Ym94LXNoYWRvdzowcHggNnB4IDZweCAtM3B4IHJnYmEoMCwgMCwgMCwgMC4yKSwwcHggMTBweCAxNHB4IDFweCByZ2JhKDAsIDAsIDAsIDAuMTQpLDBweCA0cHggMThweCAzcHggcmdiYSgwLCAwLCAwLCAwLjEyKX0ubWF0LWVsZXZhdGlvbi16MTFbX25nY29udGVudC0lQ09NUCVde2JveC1zaGFkb3c6MHB4IDZweCA3cHggLTRweCByZ2JhKDAsIDAsIDAsIDAuMiksMHB4IDExcHggMTVweCAxcHggcmdiYSgwLCAwLCAwLCAwLjE0KSwwcHggNHB4IDIwcHggM3B4IHJnYmEoMCwgMCwgMCwgMC4xMil9Lm1hdC1lbGV2YXRpb24tejEyW19uZ2NvbnRlbnQtJUNPTVAlXXtib3gtc2hhZG93OjBweCA3cHggOHB4IC00cHggcmdiYSgwLCAwLCAwLCAwLjIpLDBweCAxMnB4IDE3cHggMnB4IHJnYmEoMCwgMCwgMCwgMC4xNCksMHB4IDVweCAyMnB4IDRweCByZ2JhKDAsIDAsIDAsIDAuMTIpfS5tYXQtZWxldmF0aW9uLXoxM1tfbmdjb250ZW50LSVDT01QJV17Ym94LXNoYWRvdzowcHggN3B4IDhweCAtNHB4IHJnYmEoMCwgMCwgMCwgMC4yKSwwcHggMTNweCAxOXB4IDJweCByZ2JhKDAsIDAsIDAsIDAuMTQpLDBweCA1cHggMjRweCA0cHggcmdiYSgwLCAwLCAwLCAwLjEyKX0ubWF0LWVsZXZhdGlvbi16MTRbX25nY29udGVudC0lQ09NUCVde2JveC1zaGFkb3c6MHB4IDdweCA5cHggLTRweCByZ2JhKDAsIDAsIDAsIDAuMiksMHB4IDE0cHggMjFweCAycHggcmdiYSgwLCAwLCAwLCAwLjE0KSwwcHggNXB4IDI2cHggNHB4IHJnYmEoMCwgMCwgMCwgMC4xMil9Lm1hdC1lbGV2YXRpb24tejE1W19uZ2NvbnRlbnQtJUNPTVAlXXtib3gtc2hhZG93OjBweCA4cHggOXB4IC01cHggcmdiYSgwLCAwLCAwLCAwLjIpLDBweCAxNXB4IDIycHggMnB4IHJnYmEoMCwgMCwgMCwgMC4xNCksMHB4IDZweCAyOHB4IDVweCByZ2JhKDAsIDAsIDAsIDAuMTIpfS5tYXQtZWxldmF0aW9uLXoxNltfbmdjb250ZW50LSVDT01QJV17Ym94LXNoYWRvdzowcHggOHB4IDEwcHggLTVweCByZ2JhKDAsIDAsIDAsIDAuMiksMHB4IDE2cHggMjRweCAycHggcmdiYSgwLCAwLCAwLCAwLjE0KSwwcHggNnB4IDMwcHggNXB4IHJnYmEoMCwgMCwgMCwgMC4xMil9Lm1hdC1lbGV2YXRpb24tejE3W19uZ2NvbnRlbnQtJUNPTVAlXXtib3gtc2hhZG93OjBweCA4cHggMTFweCAtNXB4IHJnYmEoMCwgMCwgMCwgMC4yKSwwcHggMTdweCAyNnB4IDJweCByZ2JhKDAsIDAsIDAsIDAuMTQpLDBweCA2cHggMzJweCA1cHggcmdiYSgwLCAwLCAwLCAwLjEyKX0ubWF0LWVsZXZhdGlvbi16MThbX25nY29udGVudC0lQ09NUCVde2JveC1zaGFkb3c6MHB4IDlweCAxMXB4IC01cHggcmdiYSgwLCAwLCAwLCAwLjIpLDBweCAxOHB4IDI4cHggMnB4IHJnYmEoMCwgMCwgMCwgMC4xNCksMHB4IDdweCAzNHB4IDZweCByZ2JhKDAsIDAsIDAsIDAuMTIpfS5tYXQtZWxldmF0aW9uLXoxOVtfbmdjb250ZW50LSVDT01QJV17Ym94LXNoYWRvdzowcHggOXB4IDEycHggLTZweCByZ2JhKDAsIDAsIDAsIDAuMiksMHB4IDE5cHggMjlweCAycHggcmdiYSgwLCAwLCAwLCAwLjE0KSwwcHggN3B4IDM2cHggNnB4IHJnYmEoMCwgMCwgMCwgMC4xMil9Lm1hdC1lbGV2YXRpb24tejIwW19uZ2NvbnRlbnQtJUNPTVAlXXtib3gtc2hhZG93OjBweCAxMHB4IDEzcHggLTZweCByZ2JhKDAsIDAsIDAsIDAuMiksMHB4IDIwcHggMzFweCAzcHggcmdiYSgwLCAwLCAwLCAwLjE0KSwwcHggOHB4IDM4cHggN3B4IHJnYmEoMCwgMCwgMCwgMC4xMil9Lm1hdC1lbGV2YXRpb24tejIxW19uZ2NvbnRlbnQtJUNPTVAlXXtib3gtc2hhZG93OjBweCAxMHB4IDEzcHggLTZweCByZ2JhKDAsIDAsIDAsIDAuMiksMHB4IDIxcHggMzNweCAzcHggcmdiYSgwLCAwLCAwLCAwLjE0KSwwcHggOHB4IDQwcHggN3B4IHJnYmEoMCwgMCwgMCwgMC4xMil9Lm1hdC1lbGV2YXRpb24tejIyW19uZ2NvbnRlbnQtJUNPTVAlXXtib3gtc2hhZG93OjBweCAxMHB4IDE0cHggLTZweCByZ2JhKDAsIDAsIDAsIDAuMiksMHB4IDIycHggMzVweCAzcHggcmdiYSgwLCAwLCAwLCAwLjE0KSwwcHggOHB4IDQycHggN3B4IHJnYmEoMCwgMCwgMCwgMC4xMil9Lm1hdC1lbGV2YXRpb24tejIzW19uZ2NvbnRlbnQtJUNPTVAlXXtib3gtc2hhZG93OjBweCAxMXB4IDE0cHggLTdweCByZ2JhKDAsIDAsIDAsIDAuMiksMHB4IDIzcHggMzZweCAzcHggcmdiYSgwLCAwLCAwLCAwLjE0KSwwcHggOXB4IDQ0cHggOHB4IHJnYmEoMCwgMCwgMCwgMC4xMil9Lm1hdC1lbGV2YXRpb24tejI0W19uZ2NvbnRlbnQtJUNPTVAlXXtib3gtc2hhZG93OjBweCAxMXB4IDE1cHggLTdweCByZ2JhKDAsIDAsIDAsIDAuMiksMHB4IDI0cHggMzhweCAzcHggcmdiYSgwLCAwLCAwLCAwLjE0KSwwcHggOXB4IDQ2cHggOHB4IHJnYmEoMCwgMCwgMCwgMC4xMil9Lm1hdC10aGVtZS1sb2FkZWQtbWFya2VyW19uZ2NvbnRlbnQtJUNPTVAlXXtkaXNwbGF5Om5vbmV9Lm1hdC1hdXRvY29tcGxldGUtcGFuZWxbX25nY29udGVudC0lQ09NUCVde2JhY2tncm91bmQ6I2ZmZjtjb2xvcjojMjEyMTIxfS5tYXQtYXV0b2NvbXBsZXRlLXBhbmVsW19uZ2NvbnRlbnQtJUNPTVAlXTpub3QoW2NsYXNzKj1tYXQtZWxldmF0aW9uLXpdKXtib3gtc2hhZG93OjBweCAycHggNHB4IC0xcHggcmdiYSgwLCAwLCAwLCAwLjIpLDBweCA0cHggNXB4IDBweCByZ2JhKDAsIDAsIDAsIDAuMTQpLDBweCAxcHggMTBweCAwcHggcmdiYSgwLCAwLCAwLCAwLjEyKX0ubWF0LWF1dG9jb21wbGV0ZS1wYW5lbFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LW9wdGlvbi5tYXQtc2VsZWN0ZWRbX25nY29udGVudC0lQ09NUCVdOm5vdCgubWF0LWFjdGl2ZSk6bm90KDpob3Zlcil7YmFja2dyb3VuZDojZmZmfS5tYXQtYXV0b2NvbXBsZXRlLXBhbmVsW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtb3B0aW9uLm1hdC1zZWxlY3RlZFtfbmdjb250ZW50LSVDT01QJV06bm90KC5tYXQtYWN0aXZlKTpub3QoOmhvdmVyKTpub3QoLm1hdC1vcHRpb24tZGlzYWJsZWQpe2NvbG9yOiMyMTIxMjF9Lm1hdC1iYWRnZS1jb250ZW50W19uZ2NvbnRlbnQtJUNPTVAlXXtjb2xvcjojZmZmO2JhY2tncm91bmQ6I2Y1N2MwMH0uY2RrLWhpZ2gtY29udHJhc3QtYWN0aXZlW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtYmFkZ2UtY29udGVudFtfbmdjb250ZW50LSVDT01QJV17b3V0bGluZTpzb2xpZCAxcHg7Ym9yZGVyLXJhZGl1czowfS5tYXQtYmFkZ2UtYWNjZW50W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtYmFkZ2UtY29udGVudFtfbmdjb250ZW50LSVDT01QJV17YmFja2dyb3VuZDojZmY5ODAwO2NvbG9yOiNmZmZ9Lm1hdC1iYWRnZS13YXJuW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtYmFkZ2UtY29udGVudFtfbmdjb250ZW50LSVDT01QJV17Y29sb3I6I2ZmZjtiYWNrZ3JvdW5kOiNmNDQzMzZ9Lm1hdC1iYWRnZVtfbmdjb250ZW50LSVDT01QJV17cG9zaXRpb246cmVsYXRpdmV9Lm1hdC1iYWRnZS1oaWRkZW5bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1iYWRnZS1jb250ZW50W19uZ2NvbnRlbnQtJUNPTVAlXXtkaXNwbGF5Om5vbmV9Lm1hdC1iYWRnZS1kaXNhYmxlZFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWJhZGdlLWNvbnRlbnRbX25nY29udGVudC0lQ09NUCVde2JhY2tncm91bmQ6I2I5YjliOTtjb2xvcjojNzU3NTc1fS5tYXQtYmFkZ2UtY29udGVudFtfbmdjb250ZW50LSVDT01QJV17cG9zaXRpb246YWJzb2x1dGU7dGV4dC1hbGlnbjpjZW50ZXI7ZGlzcGxheTppbmxpbmUtYmxvY2s7Ym9yZGVyLXJhZGl1czo1MCU7dHJhbnNpdGlvbjp0cmFuc2Zvcm0gMjAwbXMgZWFzZS1pbi1vdXQ7dHJhbnNmb3JtOnNjYWxlKDAuNik7b3ZlcmZsb3c6aGlkZGVuO3doaXRlLXNwYWNlOm5vd3JhcDt0ZXh0LW92ZXJmbG93OmVsbGlwc2lzO3BvaW50ZXItZXZlbnRzOm5vbmV9Lm5nLWFuaW1hdGUtZGlzYWJsZWRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1iYWRnZS1jb250ZW50W19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1iYWRnZS1jb250ZW50Ll9tYXQtYW5pbWF0aW9uLW5vb3BhYmxlW19uZ2NvbnRlbnQtJUNPTVAlXXt0cmFuc2l0aW9uOm5vbmV9Lm1hdC1iYWRnZS1jb250ZW50Lm1hdC1iYWRnZS1hY3RpdmVbX25nY29udGVudC0lQ09NUCVde3RyYW5zZm9ybTpub25lfS5tYXQtYmFkZ2Utc21hbGxbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1iYWRnZS1jb250ZW50W19uZ2NvbnRlbnQtJUNPTVAlXXt3aWR0aDoxNnB4O2hlaWdodDoxNnB4O2xpbmUtaGVpZ2h0OjE2cHh9Lm1hdC1iYWRnZS1zbWFsbC5tYXQtYmFkZ2UtYWJvdmVbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1iYWRnZS1jb250ZW50W19uZ2NvbnRlbnQtJUNPTVAlXXt0b3A6LThweH0ubWF0LWJhZGdlLXNtYWxsLm1hdC1iYWRnZS1iZWxvd1tfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWJhZGdlLWNvbnRlbnRbX25nY29udGVudC0lQ09NUCVde2JvdHRvbTotOHB4fS5tYXQtYmFkZ2Utc21hbGwubWF0LWJhZGdlLWJlZm9yZVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWJhZGdlLWNvbnRlbnRbX25nY29udGVudC0lQ09NUCVde2xlZnQ6LTE2cHh9W2Rpcj1ydGxdW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtYmFkZ2Utc21hbGwubWF0LWJhZGdlLWJlZm9yZVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWJhZGdlLWNvbnRlbnRbX25nY29udGVudC0lQ09NUCVde2xlZnQ6YXV0bztyaWdodDotMTZweH0ubWF0LWJhZGdlLXNtYWxsLm1hdC1iYWRnZS1hZnRlcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWJhZGdlLWNvbnRlbnRbX25nY29udGVudC0lQ09NUCVde3JpZ2h0Oi0xNnB4fVtkaXI9cnRsXVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWJhZGdlLXNtYWxsLm1hdC1iYWRnZS1hZnRlcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWJhZGdlLWNvbnRlbnRbX25nY29udGVudC0lQ09NUCVde3JpZ2h0OmF1dG87bGVmdDotMTZweH0ubWF0LWJhZGdlLXNtYWxsLm1hdC1iYWRnZS1vdmVybGFwLm1hdC1iYWRnZS1iZWZvcmVbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1iYWRnZS1jb250ZW50W19uZ2NvbnRlbnQtJUNPTVAlXXtsZWZ0Oi04cHh9W2Rpcj1ydGxdW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtYmFkZ2Utc21hbGwubWF0LWJhZGdlLW92ZXJsYXAubWF0LWJhZGdlLWJlZm9yZVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWJhZGdlLWNvbnRlbnRbX25nY29udGVudC0lQ09NUCVde2xlZnQ6YXV0bztyaWdodDotOHB4fS5tYXQtYmFkZ2Utc21hbGwubWF0LWJhZGdlLW92ZXJsYXAubWF0LWJhZGdlLWFmdGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtYmFkZ2UtY29udGVudFtfbmdjb250ZW50LSVDT01QJV17cmlnaHQ6LThweH1bZGlyPXJ0bF1bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1iYWRnZS1zbWFsbC5tYXQtYmFkZ2Utb3ZlcmxhcC5tYXQtYmFkZ2UtYWZ0ZXJbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1iYWRnZS1jb250ZW50W19uZ2NvbnRlbnQtJUNPTVAlXXtyaWdodDphdXRvO2xlZnQ6LThweH0ubWF0LWJhZGdlLW1lZGl1bVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWJhZGdlLWNvbnRlbnRbX25nY29udGVudC0lQ09NUCVde3dpZHRoOjIycHg7aGVpZ2h0OjIycHg7bGluZS1oZWlnaHQ6MjJweH0ubWF0LWJhZGdlLW1lZGl1bS5tYXQtYmFkZ2UtYWJvdmVbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1iYWRnZS1jb250ZW50W19uZ2NvbnRlbnQtJUNPTVAlXXt0b3A6LTExcHh9Lm1hdC1iYWRnZS1tZWRpdW0ubWF0LWJhZGdlLWJlbG93W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtYmFkZ2UtY29udGVudFtfbmdjb250ZW50LSVDT01QJV17Ym90dG9tOi0xMXB4fS5tYXQtYmFkZ2UtbWVkaXVtLm1hdC1iYWRnZS1iZWZvcmVbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1iYWRnZS1jb250ZW50W19uZ2NvbnRlbnQtJUNPTVAlXXtsZWZ0Oi0yMnB4fVtkaXI9cnRsXVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWJhZGdlLW1lZGl1bS5tYXQtYmFkZ2UtYmVmb3JlW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtYmFkZ2UtY29udGVudFtfbmdjb250ZW50LSVDT01QJV17bGVmdDphdXRvO3JpZ2h0Oi0yMnB4fS5tYXQtYmFkZ2UtbWVkaXVtLm1hdC1iYWRnZS1hZnRlcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWJhZGdlLWNvbnRlbnRbX25nY29udGVudC0lQ09NUCVde3JpZ2h0Oi0yMnB4fVtkaXI9cnRsXVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWJhZGdlLW1lZGl1bS5tYXQtYmFkZ2UtYWZ0ZXJbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1iYWRnZS1jb250ZW50W19uZ2NvbnRlbnQtJUNPTVAlXXtyaWdodDphdXRvO2xlZnQ6LTIycHh9Lm1hdC1iYWRnZS1tZWRpdW0ubWF0LWJhZGdlLW92ZXJsYXAubWF0LWJhZGdlLWJlZm9yZVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWJhZGdlLWNvbnRlbnRbX25nY29udGVudC0lQ09NUCVde2xlZnQ6LTExcHh9W2Rpcj1ydGxdW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtYmFkZ2UtbWVkaXVtLm1hdC1iYWRnZS1vdmVybGFwLm1hdC1iYWRnZS1iZWZvcmVbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1iYWRnZS1jb250ZW50W19uZ2NvbnRlbnQtJUNPTVAlXXtsZWZ0OmF1dG87cmlnaHQ6LTExcHh9Lm1hdC1iYWRnZS1tZWRpdW0ubWF0LWJhZGdlLW92ZXJsYXAubWF0LWJhZGdlLWFmdGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtYmFkZ2UtY29udGVudFtfbmdjb250ZW50LSVDT01QJV17cmlnaHQ6LTExcHh9W2Rpcj1ydGxdW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtYmFkZ2UtbWVkaXVtLm1hdC1iYWRnZS1vdmVybGFwLm1hdC1iYWRnZS1hZnRlcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWJhZGdlLWNvbnRlbnRbX25nY29udGVudC0lQ09NUCVde3JpZ2h0OmF1dG87bGVmdDotMTFweH0ubWF0LWJhZGdlLWxhcmdlW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtYmFkZ2UtY29udGVudFtfbmdjb250ZW50LSVDT01QJV17d2lkdGg6MjhweDtoZWlnaHQ6MjhweDtsaW5lLWhlaWdodDoyOHB4fS5tYXQtYmFkZ2UtbGFyZ2UubWF0LWJhZGdlLWFib3ZlW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtYmFkZ2UtY29udGVudFtfbmdjb250ZW50LSVDT01QJV17dG9wOi0xNHB4fS5tYXQtYmFkZ2UtbGFyZ2UubWF0LWJhZGdlLWJlbG93W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtYmFkZ2UtY29udGVudFtfbmdjb250ZW50LSVDT01QJV17Ym90dG9tOi0xNHB4fS5tYXQtYmFkZ2UtbGFyZ2UubWF0LWJhZGdlLWJlZm9yZVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWJhZGdlLWNvbnRlbnRbX25nY29udGVudC0lQ09NUCVde2xlZnQ6LTI4cHh9W2Rpcj1ydGxdW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtYmFkZ2UtbGFyZ2UubWF0LWJhZGdlLWJlZm9yZVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWJhZGdlLWNvbnRlbnRbX25nY29udGVudC0lQ09NUCVde2xlZnQ6YXV0bztyaWdodDotMjhweH0ubWF0LWJhZGdlLWxhcmdlLm1hdC1iYWRnZS1hZnRlcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWJhZGdlLWNvbnRlbnRbX25nY29udGVudC0lQ09NUCVde3JpZ2h0Oi0yOHB4fVtkaXI9cnRsXVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWJhZGdlLWxhcmdlLm1hdC1iYWRnZS1hZnRlcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWJhZGdlLWNvbnRlbnRbX25nY29udGVudC0lQ09NUCVde3JpZ2h0OmF1dG87bGVmdDotMjhweH0ubWF0LWJhZGdlLWxhcmdlLm1hdC1iYWRnZS1vdmVybGFwLm1hdC1iYWRnZS1iZWZvcmVbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1iYWRnZS1jb250ZW50W19uZ2NvbnRlbnQtJUNPTVAlXXtsZWZ0Oi0xNHB4fVtkaXI9cnRsXVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWJhZGdlLWxhcmdlLm1hdC1iYWRnZS1vdmVybGFwLm1hdC1iYWRnZS1iZWZvcmVbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1iYWRnZS1jb250ZW50W19uZ2NvbnRlbnQtJUNPTVAlXXtsZWZ0OmF1dG87cmlnaHQ6LTE0cHh9Lm1hdC1iYWRnZS1sYXJnZS5tYXQtYmFkZ2Utb3ZlcmxhcC5tYXQtYmFkZ2UtYWZ0ZXJbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1iYWRnZS1jb250ZW50W19uZ2NvbnRlbnQtJUNPTVAlXXtyaWdodDotMTRweH1bZGlyPXJ0bF1bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1iYWRnZS1sYXJnZS5tYXQtYmFkZ2Utb3ZlcmxhcC5tYXQtYmFkZ2UtYWZ0ZXJbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1iYWRnZS1jb250ZW50W19uZ2NvbnRlbnQtJUNPTVAlXXtyaWdodDphdXRvO2xlZnQ6LTE0cHh9Lm1hdC1ib3R0b20tc2hlZXQtY29udGFpbmVyW19uZ2NvbnRlbnQtJUNPTVAlXXtib3gtc2hhZG93OjBweCA4cHggMTBweCAtNXB4IHJnYmEoMCwgMCwgMCwgMC4yKSwwcHggMTZweCAyNHB4IDJweCByZ2JhKDAsIDAsIDAsIDAuMTQpLDBweCA2cHggMzBweCA1cHggcmdiYSgwLCAwLCAwLCAwLjEyKTtiYWNrZ3JvdW5kOiNmZmY7Y29sb3I6IzIxMjEyMX0ubWF0LWJ1dHRvbltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtaWNvbi1idXR0b25bX25nY29udGVudC0lQ09NUCVdLCAubWF0LXN0cm9rZWQtYnV0dG9uW19uZ2NvbnRlbnQtJUNPTVAlXXtjb2xvcjppbmhlcml0O2JhY2tncm91bmQ6dHJhbnNwYXJlbnR9Lm1hdC1idXR0b24ubWF0LXByaW1hcnlbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWljb24tYnV0dG9uLm1hdC1wcmltYXJ5W19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1zdHJva2VkLWJ1dHRvbi5tYXQtcHJpbWFyeVtfbmdjb250ZW50LSVDT01QJV17Y29sb3I6I2Y1N2MwMH0ubWF0LWJ1dHRvbi5tYXQtYWNjZW50W19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1pY29uLWJ1dHRvbi5tYXQtYWNjZW50W19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1zdHJva2VkLWJ1dHRvbi5tYXQtYWNjZW50W19uZ2NvbnRlbnQtJUNPTVAlXXtjb2xvcjojZmY5ODAwfS5tYXQtYnV0dG9uLm1hdC13YXJuW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1pY29uLWJ1dHRvbi5tYXQtd2Fybltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtc3Ryb2tlZC1idXR0b24ubWF0LXdhcm5bX25nY29udGVudC0lQ09NUCVde2NvbG9yOiNmNDQzMzZ9Lm1hdC1idXR0b24ubWF0LXByaW1hcnkubWF0LWJ1dHRvbi1kaXNhYmxlZFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtYnV0dG9uLm1hdC1hY2NlbnQubWF0LWJ1dHRvbi1kaXNhYmxlZFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtYnV0dG9uLm1hdC13YXJuLm1hdC1idXR0b24tZGlzYWJsZWRbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWJ1dHRvbi5tYXQtYnV0dG9uLWRpc2FibGVkLm1hdC1idXR0b24tZGlzYWJsZWRbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWljb24tYnV0dG9uLm1hdC1wcmltYXJ5Lm1hdC1idXR0b24tZGlzYWJsZWRbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWljb24tYnV0dG9uLm1hdC1hY2NlbnQubWF0LWJ1dHRvbi1kaXNhYmxlZFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtaWNvbi1idXR0b24ubWF0LXdhcm4ubWF0LWJ1dHRvbi1kaXNhYmxlZFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtaWNvbi1idXR0b24ubWF0LWJ1dHRvbi1kaXNhYmxlZC5tYXQtYnV0dG9uLWRpc2FibGVkW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1zdHJva2VkLWJ1dHRvbi5tYXQtcHJpbWFyeS5tYXQtYnV0dG9uLWRpc2FibGVkW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1zdHJva2VkLWJ1dHRvbi5tYXQtYWNjZW50Lm1hdC1idXR0b24tZGlzYWJsZWRbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXN0cm9rZWQtYnV0dG9uLm1hdC13YXJuLm1hdC1idXR0b24tZGlzYWJsZWRbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXN0cm9rZWQtYnV0dG9uLm1hdC1idXR0b24tZGlzYWJsZWQubWF0LWJ1dHRvbi1kaXNhYmxlZFtfbmdjb250ZW50LSVDT01QJV17Y29sb3I6cmdiYSgwLDAsMCwuMjYpfS5tYXQtYnV0dG9uLm1hdC1wcmltYXJ5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtYnV0dG9uLWZvY3VzLW92ZXJsYXlbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWljb24tYnV0dG9uLm1hdC1wcmltYXJ5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtYnV0dG9uLWZvY3VzLW92ZXJsYXlbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXN0cm9rZWQtYnV0dG9uLm1hdC1wcmltYXJ5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtYnV0dG9uLWZvY3VzLW92ZXJsYXlbX25nY29udGVudC0lQ09NUCVde2JhY2tncm91bmQtY29sb3I6I2Y1N2MwMH0ubWF0LWJ1dHRvbi5tYXQtYWNjZW50W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtYnV0dG9uLWZvY3VzLW92ZXJsYXlbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWljb24tYnV0dG9uLm1hdC1hY2NlbnRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1idXR0b24tZm9jdXMtb3ZlcmxheVtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtc3Ryb2tlZC1idXR0b24ubWF0LWFjY2VudFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWJ1dHRvbi1mb2N1cy1vdmVybGF5W19uZ2NvbnRlbnQtJUNPTVAlXXtiYWNrZ3JvdW5kLWNvbG9yOiNmZjk4MDB9Lm1hdC1idXR0b24ubWF0LXdhcm5bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1idXR0b24tZm9jdXMtb3ZlcmxheVtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtaWNvbi1idXR0b24ubWF0LXdhcm5bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1idXR0b24tZm9jdXMtb3ZlcmxheVtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtc3Ryb2tlZC1idXR0b24ubWF0LXdhcm5bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1idXR0b24tZm9jdXMtb3ZlcmxheVtfbmdjb250ZW50LSVDT01QJV17YmFja2dyb3VuZC1jb2xvcjojZjQ0MzM2fS5tYXQtYnV0dG9uLm1hdC1idXR0b24tZGlzYWJsZWRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1idXR0b24tZm9jdXMtb3ZlcmxheVtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtaWNvbi1idXR0b24ubWF0LWJ1dHRvbi1kaXNhYmxlZFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWJ1dHRvbi1mb2N1cy1vdmVybGF5W19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1zdHJva2VkLWJ1dHRvbi5tYXQtYnV0dG9uLWRpc2FibGVkW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtYnV0dG9uLWZvY3VzLW92ZXJsYXlbX25nY29udGVudC0lQ09NUCVde2JhY2tncm91bmQtY29sb3I6dHJhbnNwYXJlbnR9Lm1hdC1idXR0b25bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1yaXBwbGUtZWxlbWVudFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtaWNvbi1idXR0b25bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1yaXBwbGUtZWxlbWVudFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtc3Ryb2tlZC1idXR0b25bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1yaXBwbGUtZWxlbWVudFtfbmdjb250ZW50LSVDT01QJV17b3BhY2l0eTouMTtiYWNrZ3JvdW5kLWNvbG9yOmN1cnJlbnRDb2xvcn0ubWF0LWJ1dHRvbi1mb2N1cy1vdmVybGF5W19uZ2NvbnRlbnQtJUNPTVAlXXtiYWNrZ3JvdW5kOiMwMDB9Lm1hdC1zdHJva2VkLWJ1dHRvbltfbmdjb250ZW50LSVDT01QJV06bm90KC5tYXQtYnV0dG9uLWRpc2FibGVkKXtib3JkZXItY29sb3I6cmdiYSgwLDAsMCwuMTIpfS5tYXQtZmxhdC1idXR0b25bX25nY29udGVudC0lQ09NUCVdLCAubWF0LXJhaXNlZC1idXR0b25bX25nY29udGVudC0lQ09NUCVdLCAubWF0LWZhYltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtbWluaS1mYWJbX25nY29udGVudC0lQ09NUCVde2NvbG9yOiMyMTIxMjE7YmFja2dyb3VuZC1jb2xvcjojZmZmfS5tYXQtZmxhdC1idXR0b24ubWF0LXByaW1hcnlbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXJhaXNlZC1idXR0b24ubWF0LXByaW1hcnlbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWZhYi5tYXQtcHJpbWFyeVtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtbWluaS1mYWIubWF0LXByaW1hcnlbX25nY29udGVudC0lQ09NUCVde2NvbG9yOiNmZmZ9Lm1hdC1mbGF0LWJ1dHRvbi5tYXQtYWNjZW50W19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1yYWlzZWQtYnV0dG9uLm1hdC1hY2NlbnRbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWZhYi5tYXQtYWNjZW50W19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1taW5pLWZhYi5tYXQtYWNjZW50W19uZ2NvbnRlbnQtJUNPTVAlXXtjb2xvcjojZmZmfS5tYXQtZmxhdC1idXR0b24ubWF0LXdhcm5bX25nY29udGVudC0lQ09NUCVdLCAubWF0LXJhaXNlZC1idXR0b24ubWF0LXdhcm5bX25nY29udGVudC0lQ09NUCVdLCAubWF0LWZhYi5tYXQtd2Fybltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtbWluaS1mYWIubWF0LXdhcm5bX25nY29udGVudC0lQ09NUCVde2NvbG9yOiNmZmZ9Lm1hdC1mbGF0LWJ1dHRvbi5tYXQtcHJpbWFyeS5tYXQtYnV0dG9uLWRpc2FibGVkW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1mbGF0LWJ1dHRvbi5tYXQtYWNjZW50Lm1hdC1idXR0b24tZGlzYWJsZWRbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWZsYXQtYnV0dG9uLm1hdC13YXJuLm1hdC1idXR0b24tZGlzYWJsZWRbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWZsYXQtYnV0dG9uLm1hdC1idXR0b24tZGlzYWJsZWQubWF0LWJ1dHRvbi1kaXNhYmxlZFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtcmFpc2VkLWJ1dHRvbi5tYXQtcHJpbWFyeS5tYXQtYnV0dG9uLWRpc2FibGVkW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1yYWlzZWQtYnV0dG9uLm1hdC1hY2NlbnQubWF0LWJ1dHRvbi1kaXNhYmxlZFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtcmFpc2VkLWJ1dHRvbi5tYXQtd2Fybi5tYXQtYnV0dG9uLWRpc2FibGVkW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1yYWlzZWQtYnV0dG9uLm1hdC1idXR0b24tZGlzYWJsZWQubWF0LWJ1dHRvbi1kaXNhYmxlZFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtZmFiLm1hdC1wcmltYXJ5Lm1hdC1idXR0b24tZGlzYWJsZWRbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWZhYi5tYXQtYWNjZW50Lm1hdC1idXR0b24tZGlzYWJsZWRbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWZhYi5tYXQtd2Fybi5tYXQtYnV0dG9uLWRpc2FibGVkW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1mYWIubWF0LWJ1dHRvbi1kaXNhYmxlZC5tYXQtYnV0dG9uLWRpc2FibGVkW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1taW5pLWZhYi5tYXQtcHJpbWFyeS5tYXQtYnV0dG9uLWRpc2FibGVkW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1taW5pLWZhYi5tYXQtYWNjZW50Lm1hdC1idXR0b24tZGlzYWJsZWRbX25nY29udGVudC0lQ09NUCVdLCAubWF0LW1pbmktZmFiLm1hdC13YXJuLm1hdC1idXR0b24tZGlzYWJsZWRbX25nY29udGVudC0lQ09NUCVdLCAubWF0LW1pbmktZmFiLm1hdC1idXR0b24tZGlzYWJsZWQubWF0LWJ1dHRvbi1kaXNhYmxlZFtfbmdjb250ZW50LSVDT01QJV17Y29sb3I6cmdiYSgwLDAsMCwuMjYpfS5tYXQtZmxhdC1idXR0b24ubWF0LXByaW1hcnlbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXJhaXNlZC1idXR0b24ubWF0LXByaW1hcnlbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWZhYi5tYXQtcHJpbWFyeVtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtbWluaS1mYWIubWF0LXByaW1hcnlbX25nY29udGVudC0lQ09NUCVde2JhY2tncm91bmQtY29sb3I6I2Y1N2MwMH0ubWF0LWZsYXQtYnV0dG9uLm1hdC1hY2NlbnRbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXJhaXNlZC1idXR0b24ubWF0LWFjY2VudFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtZmFiLm1hdC1hY2NlbnRbX25nY29udGVudC0lQ09NUCVdLCAubWF0LW1pbmktZmFiLm1hdC1hY2NlbnRbX25nY29udGVudC0lQ09NUCVde2JhY2tncm91bmQtY29sb3I6I2ZmOTgwMH0ubWF0LWZsYXQtYnV0dG9uLm1hdC13YXJuW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1yYWlzZWQtYnV0dG9uLm1hdC13YXJuW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1mYWIubWF0LXdhcm5bX25nY29udGVudC0lQ09NUCVdLCAubWF0LW1pbmktZmFiLm1hdC13YXJuW19uZ2NvbnRlbnQtJUNPTVAlXXtiYWNrZ3JvdW5kLWNvbG9yOiNmNDQzMzZ9Lm1hdC1mbGF0LWJ1dHRvbi5tYXQtcHJpbWFyeS5tYXQtYnV0dG9uLWRpc2FibGVkW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1mbGF0LWJ1dHRvbi5tYXQtYWNjZW50Lm1hdC1idXR0b24tZGlzYWJsZWRbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWZsYXQtYnV0dG9uLm1hdC13YXJuLm1hdC1idXR0b24tZGlzYWJsZWRbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWZsYXQtYnV0dG9uLm1hdC1idXR0b24tZGlzYWJsZWQubWF0LWJ1dHRvbi1kaXNhYmxlZFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtcmFpc2VkLWJ1dHRvbi5tYXQtcHJpbWFyeS5tYXQtYnV0dG9uLWRpc2FibGVkW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1yYWlzZWQtYnV0dG9uLm1hdC1hY2NlbnQubWF0LWJ1dHRvbi1kaXNhYmxlZFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtcmFpc2VkLWJ1dHRvbi5tYXQtd2Fybi5tYXQtYnV0dG9uLWRpc2FibGVkW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1yYWlzZWQtYnV0dG9uLm1hdC1idXR0b24tZGlzYWJsZWQubWF0LWJ1dHRvbi1kaXNhYmxlZFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtZmFiLm1hdC1wcmltYXJ5Lm1hdC1idXR0b24tZGlzYWJsZWRbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWZhYi5tYXQtYWNjZW50Lm1hdC1idXR0b24tZGlzYWJsZWRbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWZhYi5tYXQtd2Fybi5tYXQtYnV0dG9uLWRpc2FibGVkW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1mYWIubWF0LWJ1dHRvbi1kaXNhYmxlZC5tYXQtYnV0dG9uLWRpc2FibGVkW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1taW5pLWZhYi5tYXQtcHJpbWFyeS5tYXQtYnV0dG9uLWRpc2FibGVkW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1taW5pLWZhYi5tYXQtYWNjZW50Lm1hdC1idXR0b24tZGlzYWJsZWRbX25nY29udGVudC0lQ09NUCVdLCAubWF0LW1pbmktZmFiLm1hdC13YXJuLm1hdC1idXR0b24tZGlzYWJsZWRbX25nY29udGVudC0lQ09NUCVdLCAubWF0LW1pbmktZmFiLm1hdC1idXR0b24tZGlzYWJsZWQubWF0LWJ1dHRvbi1kaXNhYmxlZFtfbmdjb250ZW50LSVDT01QJV17YmFja2dyb3VuZC1jb2xvcjpyZ2JhKDAsMCwwLC4xMil9Lm1hdC1mbGF0LWJ1dHRvbi5tYXQtcHJpbWFyeVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXJpcHBsZS1lbGVtZW50W19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1yYWlzZWQtYnV0dG9uLm1hdC1wcmltYXJ5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtcmlwcGxlLWVsZW1lbnRbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWZhYi5tYXQtcHJpbWFyeVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXJpcHBsZS1lbGVtZW50W19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1taW5pLWZhYi5tYXQtcHJpbWFyeVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXJpcHBsZS1lbGVtZW50W19uZ2NvbnRlbnQtJUNPTVAlXXtiYWNrZ3JvdW5kLWNvbG9yOnJnYmEoMjU1LDI1NSwyNTUsLjEpfS5tYXQtZmxhdC1idXR0b24ubWF0LWFjY2VudFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXJpcHBsZS1lbGVtZW50W19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1yYWlzZWQtYnV0dG9uLm1hdC1hY2NlbnRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1yaXBwbGUtZWxlbWVudFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtZmFiLm1hdC1hY2NlbnRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1yaXBwbGUtZWxlbWVudFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtbWluaS1mYWIubWF0LWFjY2VudFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXJpcHBsZS1lbGVtZW50W19uZ2NvbnRlbnQtJUNPTVAlXXtiYWNrZ3JvdW5kLWNvbG9yOnJnYmEoMjU1LDI1NSwyNTUsLjEpfS5tYXQtZmxhdC1idXR0b24ubWF0LXdhcm5bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1yaXBwbGUtZWxlbWVudFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtcmFpc2VkLWJ1dHRvbi5tYXQtd2Fybltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXJpcHBsZS1lbGVtZW50W19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1mYWIubWF0LXdhcm5bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1yaXBwbGUtZWxlbWVudFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtbWluaS1mYWIubWF0LXdhcm5bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1yaXBwbGUtZWxlbWVudFtfbmdjb250ZW50LSVDT01QJV17YmFja2dyb3VuZC1jb2xvcjpyZ2JhKDI1NSwyNTUsMjU1LC4xKX0ubWF0LXN0cm9rZWQtYnV0dG9uW19uZ2NvbnRlbnQtJUNPTVAlXTpub3QoW2NsYXNzKj1tYXQtZWxldmF0aW9uLXpdKSwgLm1hdC1mbGF0LWJ1dHRvbltfbmdjb250ZW50LSVDT01QJV06bm90KFtjbGFzcyo9bWF0LWVsZXZhdGlvbi16XSl7Ym94LXNoYWRvdzowcHggMHB4IDBweCAwcHggcmdiYSgwLCAwLCAwLCAwLjIpLDBweCAwcHggMHB4IDBweCByZ2JhKDAsIDAsIDAsIDAuMTQpLDBweCAwcHggMHB4IDBweCByZ2JhKDAsIDAsIDAsIDAuMTIpfS5tYXQtcmFpc2VkLWJ1dHRvbltfbmdjb250ZW50LSVDT01QJV06bm90KFtjbGFzcyo9bWF0LWVsZXZhdGlvbi16XSl7Ym94LXNoYWRvdzowcHggM3B4IDFweCAtMnB4IHJnYmEoMCwgMCwgMCwgMC4yKSwwcHggMnB4IDJweCAwcHggcmdiYSgwLCAwLCAwLCAwLjE0KSwwcHggMXB4IDVweCAwcHggcmdiYSgwLCAwLCAwLCAwLjEyKX0ubWF0LXJhaXNlZC1idXR0b25bX25nY29udGVudC0lQ09NUCVdOm5vdCgubWF0LWJ1dHRvbi1kaXNhYmxlZCk6YWN0aXZlOm5vdChbY2xhc3MqPW1hdC1lbGV2YXRpb24tel0pe2JveC1zaGFkb3c6MHB4IDVweCA1cHggLTNweCByZ2JhKDAsIDAsIDAsIDAuMiksMHB4IDhweCAxMHB4IDFweCByZ2JhKDAsIDAsIDAsIDAuMTQpLDBweCAzcHggMTRweCAycHggcmdiYSgwLCAwLCAwLCAwLjEyKX0ubWF0LXJhaXNlZC1idXR0b24ubWF0LWJ1dHRvbi1kaXNhYmxlZFtfbmdjb250ZW50LSVDT01QJV06bm90KFtjbGFzcyo9bWF0LWVsZXZhdGlvbi16XSl7Ym94LXNoYWRvdzowcHggMHB4IDBweCAwcHggcmdiYSgwLCAwLCAwLCAwLjIpLDBweCAwcHggMHB4IDBweCByZ2JhKDAsIDAsIDAsIDAuMTQpLDBweCAwcHggMHB4IDBweCByZ2JhKDAsIDAsIDAsIDAuMTIpfS5tYXQtZmFiW19uZ2NvbnRlbnQtJUNPTVAlXTpub3QoW2NsYXNzKj1tYXQtZWxldmF0aW9uLXpdKSwgLm1hdC1taW5pLWZhYltfbmdjb250ZW50LSVDT01QJV06bm90KFtjbGFzcyo9bWF0LWVsZXZhdGlvbi16XSl7Ym94LXNoYWRvdzowcHggM3B4IDVweCAtMXB4IHJnYmEoMCwgMCwgMCwgMC4yKSwwcHggNnB4IDEwcHggMHB4IHJnYmEoMCwgMCwgMCwgMC4xNCksMHB4IDFweCAxOHB4IDBweCByZ2JhKDAsIDAsIDAsIDAuMTIpfS5tYXQtZmFiW19uZ2NvbnRlbnQtJUNPTVAlXTpub3QoLm1hdC1idXR0b24tZGlzYWJsZWQpOmFjdGl2ZTpub3QoW2NsYXNzKj1tYXQtZWxldmF0aW9uLXpdKSwgLm1hdC1taW5pLWZhYltfbmdjb250ZW50LSVDT01QJV06bm90KC5tYXQtYnV0dG9uLWRpc2FibGVkKTphY3RpdmU6bm90KFtjbGFzcyo9bWF0LWVsZXZhdGlvbi16XSl7Ym94LXNoYWRvdzowcHggN3B4IDhweCAtNHB4IHJnYmEoMCwgMCwgMCwgMC4yKSwwcHggMTJweCAxN3B4IDJweCByZ2JhKDAsIDAsIDAsIDAuMTQpLDBweCA1cHggMjJweCA0cHggcmdiYSgwLCAwLCAwLCAwLjEyKX0ubWF0LWZhYi5tYXQtYnV0dG9uLWRpc2FibGVkW19uZ2NvbnRlbnQtJUNPTVAlXTpub3QoW2NsYXNzKj1tYXQtZWxldmF0aW9uLXpdKSwgLm1hdC1taW5pLWZhYi5tYXQtYnV0dG9uLWRpc2FibGVkW19uZ2NvbnRlbnQtJUNPTVAlXTpub3QoW2NsYXNzKj1tYXQtZWxldmF0aW9uLXpdKXtib3gtc2hhZG93OjBweCAwcHggMHB4IDBweCByZ2JhKDAsIDAsIDAsIDAuMiksMHB4IDBweCAwcHggMHB4IHJnYmEoMCwgMCwgMCwgMC4xNCksMHB4IDBweCAwcHggMHB4IHJnYmEoMCwgMCwgMCwgMC4xMil9Lm1hdC1idXR0b24tdG9nZ2xlLXN0YW5kYWxvbmVbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWJ1dHRvbi10b2dnbGUtZ3JvdXBbX25nY29udGVudC0lQ09NUCVde2JveC1zaGFkb3c6MHB4IDNweCAxcHggLTJweCByZ2JhKDAsIDAsIDAsIDAuMiksMHB4IDJweCAycHggMHB4IHJnYmEoMCwgMCwgMCwgMC4xNCksMHB4IDFweCA1cHggMHB4IHJnYmEoMCwgMCwgMCwgMC4xMil9Lm1hdC1idXR0b24tdG9nZ2xlLXN0YW5kYWxvbmUubWF0LWJ1dHRvbi10b2dnbGUtYXBwZWFyYW5jZS1zdGFuZGFyZFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtYnV0dG9uLXRvZ2dsZS1ncm91cC1hcHBlYXJhbmNlLXN0YW5kYXJkW19uZ2NvbnRlbnQtJUNPTVAlXXtib3gtc2hhZG93Om5vbmV9Lm1hdC1idXR0b24tdG9nZ2xlW19uZ2NvbnRlbnQtJUNPTVAlXXtjb2xvcjpyZ2JhKDAsMCwwLC4zOCl9Lm1hdC1idXR0b24tdG9nZ2xlW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtYnV0dG9uLXRvZ2dsZS1mb2N1cy1vdmVybGF5W19uZ2NvbnRlbnQtJUNPTVAlXXtiYWNrZ3JvdW5kLWNvbG9yOnJnYmEoMCwwLDAsLjEyKX0ubWF0LWJ1dHRvbi10b2dnbGUtYXBwZWFyYW5jZS1zdGFuZGFyZFtfbmdjb250ZW50LSVDT01QJV17Y29sb3I6IzIxMjEyMTtiYWNrZ3JvdW5kOiNmZmZ9Lm1hdC1idXR0b24tdG9nZ2xlLWFwcGVhcmFuY2Utc3RhbmRhcmRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1idXR0b24tdG9nZ2xlLWZvY3VzLW92ZXJsYXlbX25nY29udGVudC0lQ09NUCVde2JhY2tncm91bmQtY29sb3I6IzAwMH0ubWF0LWJ1dHRvbi10b2dnbGUtZ3JvdXAtYXBwZWFyYW5jZS1zdGFuZGFyZFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWJ1dHRvbi10b2dnbGVbX25nY29udGVudC0lQ09NUCVdICsgLm1hdC1idXR0b24tdG9nZ2xlW19uZ2NvbnRlbnQtJUNPTVAlXXtib3JkZXItbGVmdDpzb2xpZCAxcHggcmdiYSgwLDAsMCwuMTIpfVtkaXI9cnRsXVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWJ1dHRvbi10b2dnbGUtZ3JvdXAtYXBwZWFyYW5jZS1zdGFuZGFyZFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWJ1dHRvbi10b2dnbGVbX25nY29udGVudC0lQ09NUCVdICsgLm1hdC1idXR0b24tdG9nZ2xlW19uZ2NvbnRlbnQtJUNPTVAlXXtib3JkZXItbGVmdDpub25lO2JvcmRlci1yaWdodDpzb2xpZCAxcHggcmdiYSgwLDAsMCwuMTIpfS5tYXQtYnV0dG9uLXRvZ2dsZS1ncm91cC1hcHBlYXJhbmNlLXN0YW5kYXJkLm1hdC1idXR0b24tdG9nZ2xlLXZlcnRpY2FsW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtYnV0dG9uLXRvZ2dsZVtfbmdjb250ZW50LSVDT01QJV0gKyAubWF0LWJ1dHRvbi10b2dnbGVbX25nY29udGVudC0lQ09NUCVde2JvcmRlci1sZWZ0Om5vbmU7Ym9yZGVyLXJpZ2h0Om5vbmU7Ym9yZGVyLXRvcDpzb2xpZCAxcHggcmdiYSgwLDAsMCwuMTIpfS5tYXQtYnV0dG9uLXRvZ2dsZS1jaGVja2VkW19uZ2NvbnRlbnQtJUNPTVAlXXtiYWNrZ3JvdW5kLWNvbG9yOiNlMGUwZTA7Y29sb3I6IzYxNjE2MX0ubWF0LWJ1dHRvbi10b2dnbGUtY2hlY2tlZC5tYXQtYnV0dG9uLXRvZ2dsZS1hcHBlYXJhbmNlLXN0YW5kYXJkW19uZ2NvbnRlbnQtJUNPTVAlXXtjb2xvcjojMjEyMTIxfS5tYXQtYnV0dG9uLXRvZ2dsZS1kaXNhYmxlZFtfbmdjb250ZW50LSVDT01QJV17Y29sb3I6cmdiYSgwLDAsMCwuMjYpO2JhY2tncm91bmQtY29sb3I6I2VlZX0ubWF0LWJ1dHRvbi10b2dnbGUtZGlzYWJsZWQubWF0LWJ1dHRvbi10b2dnbGUtYXBwZWFyYW5jZS1zdGFuZGFyZFtfbmdjb250ZW50LSVDT01QJV17YmFja2dyb3VuZDojZmZmfS5tYXQtYnV0dG9uLXRvZ2dsZS1kaXNhYmxlZC5tYXQtYnV0dG9uLXRvZ2dsZS1jaGVja2VkW19uZ2NvbnRlbnQtJUNPTVAlXXtiYWNrZ3JvdW5kLWNvbG9yOiNiZGJkYmR9Lm1hdC1idXR0b24tdG9nZ2xlLXN0YW5kYWxvbmUubWF0LWJ1dHRvbi10b2dnbGUtYXBwZWFyYW5jZS1zdGFuZGFyZFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtYnV0dG9uLXRvZ2dsZS1ncm91cC1hcHBlYXJhbmNlLXN0YW5kYXJkW19uZ2NvbnRlbnQtJUNPTVAlXXtib3JkZXI6c29saWQgMXB4IHJnYmEoMCwwLDAsLjEyKX0ubWF0LWJ1dHRvbi10b2dnbGUtYXBwZWFyYW5jZS1zdGFuZGFyZFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWJ1dHRvbi10b2dnbGUtbGFiZWwtY29udGVudFtfbmdjb250ZW50LSVDT01QJV17bGluZS1oZWlnaHQ6NDhweH0ubWF0LWNhcmRbX25nY29udGVudC0lQ09NUCVde2JhY2tncm91bmQ6I2ZmZjtjb2xvcjojMjEyMTIxfS5tYXQtY2FyZFtfbmdjb250ZW50LSVDT01QJV06bm90KFtjbGFzcyo9bWF0LWVsZXZhdGlvbi16XSl7Ym94LXNoYWRvdzowcHggMnB4IDFweCAtMXB4IHJnYmEoMCwgMCwgMCwgMC4yKSwwcHggMXB4IDFweCAwcHggcmdiYSgwLCAwLCAwLCAwLjE0KSwwcHggMXB4IDNweCAwcHggcmdiYSgwLCAwLCAwLCAwLjEyKX0ubWF0LWNhcmQubWF0LWNhcmQtZmxhdFtfbmdjb250ZW50LSVDT01QJV06bm90KFtjbGFzcyo9bWF0LWVsZXZhdGlvbi16XSl7Ym94LXNoYWRvdzowcHggMHB4IDBweCAwcHggcmdiYSgwLCAwLCAwLCAwLjIpLDBweCAwcHggMHB4IDBweCByZ2JhKDAsIDAsIDAsIDAuMTQpLDBweCAwcHggMHB4IDBweCByZ2JhKDAsIDAsIDAsIDAuMTIpfS5tYXQtY2FyZC1zdWJ0aXRsZVtfbmdjb250ZW50LSVDT01QJV17Y29sb3I6IzYxNjE2MX0ubWF0LWNoZWNrYm94LWZyYW1lW19uZ2NvbnRlbnQtJUNPTVAlXXtib3JkZXItY29sb3I6IzYxNjE2MX0ubWF0LWNoZWNrYm94LWNoZWNrbWFya1tfbmdjb250ZW50LSVDT01QJV17ZmlsbDojZmFmYWZhfS5tYXQtY2hlY2tib3gtY2hlY2ttYXJrLXBhdGhbX25nY29udGVudC0lQ09NUCVde3N0cm9rZTojZmFmYWZhICFpbXBvcnRhbnR9Lm1hdC1jaGVja2JveC1taXhlZG1hcmtbX25nY29udGVudC0lQ09NUCVde2JhY2tncm91bmQtY29sb3I6I2ZhZmFmYX0ubWF0LWNoZWNrYm94LWluZGV0ZXJtaW5hdGUubWF0LXByaW1hcnlbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1jaGVja2JveC1iYWNrZ3JvdW5kW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1jaGVja2JveC1jaGVja2VkLm1hdC1wcmltYXJ5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtY2hlY2tib3gtYmFja2dyb3VuZFtfbmdjb250ZW50LSVDT01QJV17YmFja2dyb3VuZC1jb2xvcjojZjU3YzAwfS5tYXQtY2hlY2tib3gtaW5kZXRlcm1pbmF0ZS5tYXQtYWNjZW50W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtY2hlY2tib3gtYmFja2dyb3VuZFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtY2hlY2tib3gtY2hlY2tlZC5tYXQtYWNjZW50W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtY2hlY2tib3gtYmFja2dyb3VuZFtfbmdjb250ZW50LSVDT01QJV17YmFja2dyb3VuZC1jb2xvcjojZmY5ODAwfS5tYXQtY2hlY2tib3gtaW5kZXRlcm1pbmF0ZS5tYXQtd2Fybltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWNoZWNrYm94LWJhY2tncm91bmRbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWNoZWNrYm94LWNoZWNrZWQubWF0LXdhcm5bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1jaGVja2JveC1iYWNrZ3JvdW5kW19uZ2NvbnRlbnQtJUNPTVAlXXtiYWNrZ3JvdW5kLWNvbG9yOiNmNDQzMzZ9Lm1hdC1jaGVja2JveC1kaXNhYmxlZC5tYXQtY2hlY2tib3gtY2hlY2tlZFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWNoZWNrYm94LWJhY2tncm91bmRbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWNoZWNrYm94LWRpc2FibGVkLm1hdC1jaGVja2JveC1pbmRldGVybWluYXRlW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtY2hlY2tib3gtYmFja2dyb3VuZFtfbmdjb250ZW50LSVDT01QJV17YmFja2dyb3VuZC1jb2xvcjojYjBiMGIwfS5tYXQtY2hlY2tib3gtZGlzYWJsZWRbX25nY29udGVudC0lQ09NUCVdOm5vdCgubWF0LWNoZWNrYm94LWNoZWNrZWQpICAgLm1hdC1jaGVja2JveC1mcmFtZVtfbmdjb250ZW50LSVDT01QJV17Ym9yZGVyLWNvbG9yOiNiMGIwYjB9Lm1hdC1jaGVja2JveC1kaXNhYmxlZFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWNoZWNrYm94LWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXtjb2xvcjojNjE2MTYxfS5tYXQtY2hlY2tib3hbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1yaXBwbGUtZWxlbWVudFtfbmdjb250ZW50LSVDT01QJV17YmFja2dyb3VuZC1jb2xvcjojMDAwfS5tYXQtY2hlY2tib3gtY2hlY2tlZFtfbmdjb250ZW50LSVDT01QJV06bm90KC5tYXQtY2hlY2tib3gtZGlzYWJsZWQpLm1hdC1wcmltYXJ5ICAgLm1hdC1yaXBwbGUtZWxlbWVudFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtY2hlY2tib3hbX25nY29udGVudC0lQ09NUCVdOmFjdGl2ZTpub3QoLm1hdC1jaGVja2JveC1kaXNhYmxlZCkubWF0LXByaW1hcnkgICAubWF0LXJpcHBsZS1lbGVtZW50W19uZ2NvbnRlbnQtJUNPTVAlXXtiYWNrZ3JvdW5kOiNmNTdjMDB9Lm1hdC1jaGVja2JveC1jaGVja2VkW19uZ2NvbnRlbnQtJUNPTVAlXTpub3QoLm1hdC1jaGVja2JveC1kaXNhYmxlZCkubWF0LWFjY2VudCAgIC5tYXQtcmlwcGxlLWVsZW1lbnRbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWNoZWNrYm94W19uZ2NvbnRlbnQtJUNPTVAlXTphY3RpdmU6bm90KC5tYXQtY2hlY2tib3gtZGlzYWJsZWQpLm1hdC1hY2NlbnQgICAubWF0LXJpcHBsZS1lbGVtZW50W19uZ2NvbnRlbnQtJUNPTVAlXXtiYWNrZ3JvdW5kOiNmZjk4MDB9Lm1hdC1jaGVja2JveC1jaGVja2VkW19uZ2NvbnRlbnQtJUNPTVAlXTpub3QoLm1hdC1jaGVja2JveC1kaXNhYmxlZCkubWF0LXdhcm4gICAubWF0LXJpcHBsZS1lbGVtZW50W19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1jaGVja2JveFtfbmdjb250ZW50LSVDT01QJV06YWN0aXZlOm5vdCgubWF0LWNoZWNrYm94LWRpc2FibGVkKS5tYXQtd2FybiAgIC5tYXQtcmlwcGxlLWVsZW1lbnRbX25nY29udGVudC0lQ09NUCVde2JhY2tncm91bmQ6I2Y0NDMzNn0ubWF0LWNoaXAubWF0LXN0YW5kYXJkLWNoaXBbX25nY29udGVudC0lQ09NUCVde2JhY2tncm91bmQtY29sb3I6I2UwZTBlMDtjb2xvcjojMjEyMTIxfS5tYXQtY2hpcC5tYXQtc3RhbmRhcmQtY2hpcFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWNoaXAtcmVtb3ZlW19uZ2NvbnRlbnQtJUNPTVAlXXtjb2xvcjojMjEyMTIxO29wYWNpdHk6LjR9Lm1hdC1jaGlwLm1hdC1zdGFuZGFyZC1jaGlwW19uZ2NvbnRlbnQtJUNPTVAlXTpub3QoLm1hdC1jaGlwLWRpc2FibGVkKTphY3RpdmV7Ym94LXNoYWRvdzowcHggM3B4IDNweCAtMnB4IHJnYmEoMCwgMCwgMCwgMC4yKSwwcHggM3B4IDRweCAwcHggcmdiYSgwLCAwLCAwLCAwLjE0KSwwcHggMXB4IDhweCAwcHggcmdiYSgwLCAwLCAwLCAwLjEyKX0ubWF0LWNoaXAubWF0LXN0YW5kYXJkLWNoaXBbX25nY29udGVudC0lQ09NUCVdOm5vdCgubWF0LWNoaXAtZGlzYWJsZWQpICAgLm1hdC1jaGlwLXJlbW92ZVtfbmdjb250ZW50LSVDT01QJV06aG92ZXJ7b3BhY2l0eTouNTR9Lm1hdC1jaGlwLm1hdC1zdGFuZGFyZC1jaGlwLm1hdC1jaGlwLWRpc2FibGVkW19uZ2NvbnRlbnQtJUNPTVAlXXtvcGFjaXR5Oi40fS5tYXQtY2hpcC5tYXQtc3RhbmRhcmQtY2hpcFtfbmdjb250ZW50LSVDT01QJV06OmFmdGVye2JhY2tncm91bmQ6IzAwMH0ubWF0LWNoaXAubWF0LXN0YW5kYXJkLWNoaXAubWF0LWNoaXAtc2VsZWN0ZWQubWF0LXByaW1hcnlbX25nY29udGVudC0lQ09NUCVde2JhY2tncm91bmQtY29sb3I6I2Y1N2MwMDtjb2xvcjojZmZmfS5tYXQtY2hpcC5tYXQtc3RhbmRhcmQtY2hpcC5tYXQtY2hpcC1zZWxlY3RlZC5tYXQtcHJpbWFyeVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWNoaXAtcmVtb3ZlW19uZ2NvbnRlbnQtJUNPTVAlXXtjb2xvcjojZmZmO29wYWNpdHk6LjR9Lm1hdC1jaGlwLm1hdC1zdGFuZGFyZC1jaGlwLm1hdC1jaGlwLXNlbGVjdGVkLm1hdC1wcmltYXJ5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtcmlwcGxlLWVsZW1lbnRbX25nY29udGVudC0lQ09NUCVde2JhY2tncm91bmQtY29sb3I6cmdiYSgyNTUsMjU1LDI1NSwuMSl9Lm1hdC1jaGlwLm1hdC1zdGFuZGFyZC1jaGlwLm1hdC1jaGlwLXNlbGVjdGVkLm1hdC13YXJuW19uZ2NvbnRlbnQtJUNPTVAlXXtiYWNrZ3JvdW5kLWNvbG9yOiNmNDQzMzY7Y29sb3I6I2ZmZn0ubWF0LWNoaXAubWF0LXN0YW5kYXJkLWNoaXAubWF0LWNoaXAtc2VsZWN0ZWQubWF0LXdhcm5bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1jaGlwLXJlbW92ZVtfbmdjb250ZW50LSVDT01QJV17Y29sb3I6I2ZmZjtvcGFjaXR5Oi40fS5tYXQtY2hpcC5tYXQtc3RhbmRhcmQtY2hpcC5tYXQtY2hpcC1zZWxlY3RlZC5tYXQtd2Fybltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXJpcHBsZS1lbGVtZW50W19uZ2NvbnRlbnQtJUNPTVAlXXtiYWNrZ3JvdW5kLWNvbG9yOnJnYmEoMjU1LDI1NSwyNTUsLjEpfS5tYXQtY2hpcC5tYXQtc3RhbmRhcmQtY2hpcC5tYXQtY2hpcC1zZWxlY3RlZC5tYXQtYWNjZW50W19uZ2NvbnRlbnQtJUNPTVAlXXtiYWNrZ3JvdW5kLWNvbG9yOiNmZjk4MDA7Y29sb3I6I2ZmZn0ubWF0LWNoaXAubWF0LXN0YW5kYXJkLWNoaXAubWF0LWNoaXAtc2VsZWN0ZWQubWF0LWFjY2VudFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWNoaXAtcmVtb3ZlW19uZ2NvbnRlbnQtJUNPTVAlXXtjb2xvcjojZmZmO29wYWNpdHk6LjR9Lm1hdC1jaGlwLm1hdC1zdGFuZGFyZC1jaGlwLm1hdC1jaGlwLXNlbGVjdGVkLm1hdC1hY2NlbnRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1yaXBwbGUtZWxlbWVudFtfbmdjb250ZW50LSVDT01QJV17YmFja2dyb3VuZC1jb2xvcjpyZ2JhKDI1NSwyNTUsMjU1LC4xKX0ubWF0LXRhYmxlW19uZ2NvbnRlbnQtJUNPTVAlXXtiYWNrZ3JvdW5kOiNmZmZ9Lm1hdC10YWJsZVtfbmdjb250ZW50LSVDT01QJV0gICB0aGVhZFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdGFibGVbX25nY29udGVudC0lQ09NUCVdICAgdGJvZHlbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXRhYmxlW19uZ2NvbnRlbnQtJUNPTVAlXSAgIHRmb290W19uZ2NvbnRlbnQtJUNPTVAlXSwgbWF0LWhlYWRlci1yb3dbX25nY29udGVudC0lQ09NUCVdLCBtYXQtcm93W19uZ2NvbnRlbnQtJUNPTVAlXSwgbWF0LWZvb3Rlci1yb3dbX25nY29udGVudC0lQ09NUCVdLCBbbWF0LWhlYWRlci1yb3ddW19uZ2NvbnRlbnQtJUNPTVAlXSwgW21hdC1yb3ddW19uZ2NvbnRlbnQtJUNPTVAlXSwgW21hdC1mb290ZXItcm93XVtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdGFibGUtc3RpY2t5W19uZ2NvbnRlbnQtJUNPTVAlXXtiYWNrZ3JvdW5kOmluaGVyaXR9bWF0LXJvd1tfbmdjb250ZW50LSVDT01QJV0sIG1hdC1oZWFkZXItcm93W19uZ2NvbnRlbnQtJUNPTVAlXSwgbWF0LWZvb3Rlci1yb3dbX25nY29udGVudC0lQ09NUCVdLCB0aC5tYXQtaGVhZGVyLWNlbGxbX25nY29udGVudC0lQ09NUCVdLCB0ZC5tYXQtY2VsbFtfbmdjb250ZW50LSVDT01QJV0sIHRkLm1hdC1mb290ZXItY2VsbFtfbmdjb250ZW50LSVDT01QJV17Ym9yZGVyLWJvdHRvbS1jb2xvcjpyZ2JhKDAsMCwwLC4xMil9Lm1hdC1oZWFkZXItY2VsbFtfbmdjb250ZW50LSVDT01QJV17Y29sb3I6IzYxNjE2MX0ubWF0LWNlbGxbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWZvb3Rlci1jZWxsW19uZ2NvbnRlbnQtJUNPTVAlXXtjb2xvcjojMjEyMTIxfS5tYXQtY2FsZW5kYXItYXJyb3dbX25nY29udGVudC0lQ09NUCVde2JvcmRlci10b3AtY29sb3I6cmdiYSgwLDAsMCwuNTQpfS5tYXQtZGF0ZXBpY2tlci10b2dnbGVbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWRhdGVwaWNrZXItY29udGVudFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWNhbGVuZGFyLW5leHQtYnV0dG9uW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1kYXRlcGlja2VyLWNvbnRlbnRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1jYWxlbmRhci1wcmV2aW91cy1idXR0b25bX25nY29udGVudC0lQ09NUCVde2NvbG9yOnJnYmEoMCwwLDAsLjU0KX0ubWF0LWNhbGVuZGFyLXRhYmxlLWhlYWRlcltfbmdjb250ZW50LSVDT01QJV17Y29sb3I6cmdiYSgwLDAsMCwuMzgpfS5tYXQtY2FsZW5kYXItdGFibGUtaGVhZGVyLWRpdmlkZXJbX25nY29udGVudC0lQ09NUCVdOjphZnRlcntiYWNrZ3JvdW5kOnJnYmEoMCwwLDAsLjEyKX0ubWF0LWNhbGVuZGFyLWJvZHktbGFiZWxbX25nY29udGVudC0lQ09NUCVde2NvbG9yOiM2MTYxNjF9Lm1hdC1jYWxlbmRhci1ib2R5LWNlbGwtY29udGVudFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtZGF0ZS1yYW5nZS1pbnB1dC1zZXBhcmF0b3JbX25nY29udGVudC0lQ09NUCVde2NvbG9yOiMyMTIxMjE7Ym9yZGVyLWNvbG9yOnRyYW5zcGFyZW50fS5tYXQtY2FsZW5kYXItYm9keS1kaXNhYmxlZFtfbmdjb250ZW50LSVDT01QJV0gPiAubWF0LWNhbGVuZGFyLWJvZHktY2VsbC1jb250ZW50W19uZ2NvbnRlbnQtJUNPTVAlXTpub3QoLm1hdC1jYWxlbmRhci1ib2R5LXNlbGVjdGVkKTpub3QoLm1hdC1jYWxlbmRhci1ib2R5LWNvbXBhcmlzb24taWRlbnRpY2FsKXtjb2xvcjojNzU3NTc1fS5tYXQtZm9ybS1maWVsZC1kaXNhYmxlZFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWRhdGUtcmFuZ2UtaW5wdXQtc2VwYXJhdG9yW19uZ2NvbnRlbnQtJUNPTVAlXXtjb2xvcjojNzU3NTc1fS5tYXQtY2FsZW5kYXItYm9keS1jZWxsW19uZ2NvbnRlbnQtJUNPTVAlXTpub3QoLm1hdC1jYWxlbmRhci1ib2R5LWRpc2FibGVkKTpob3ZlciA+IC5tYXQtY2FsZW5kYXItYm9keS1jZWxsLWNvbnRlbnRbX25nY29udGVudC0lQ09NUCVdOm5vdCgubWF0LWNhbGVuZGFyLWJvZHktc2VsZWN0ZWQpOm5vdCgubWF0LWNhbGVuZGFyLWJvZHktY29tcGFyaXNvbi1pZGVudGljYWwpLCAuY2RrLWtleWJvYXJkLWZvY3VzZWRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1jYWxlbmRhci1ib2R5LWFjdGl2ZVtfbmdjb250ZW50LSVDT01QJV0gPiAubWF0LWNhbGVuZGFyLWJvZHktY2VsbC1jb250ZW50W19uZ2NvbnRlbnQtJUNPTVAlXTpub3QoLm1hdC1jYWxlbmRhci1ib2R5LXNlbGVjdGVkKTpub3QoLm1hdC1jYWxlbmRhci1ib2R5LWNvbXBhcmlzb24taWRlbnRpY2FsKSwgLmNkay1wcm9ncmFtLWZvY3VzZWRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1jYWxlbmRhci1ib2R5LWFjdGl2ZVtfbmdjb250ZW50LSVDT01QJV0gPiAubWF0LWNhbGVuZGFyLWJvZHktY2VsbC1jb250ZW50W19uZ2NvbnRlbnQtJUNPTVAlXTpub3QoLm1hdC1jYWxlbmRhci1ib2R5LXNlbGVjdGVkKTpub3QoLm1hdC1jYWxlbmRhci1ib2R5LWNvbXBhcmlzb24taWRlbnRpY2FsKXtiYWNrZ3JvdW5kLWNvbG9yOnJnYmEoMCwwLDAsLjA0KX0ubWF0LWNhbGVuZGFyLWJvZHktaW4tcHJldmlld1tfbmdjb250ZW50LSVDT01QJV17Y29sb3I6cmdiYSgwLDAsMCwuMjQpfS5tYXQtY2FsZW5kYXItYm9keS10b2RheVtfbmdjb250ZW50LSVDT01QJV06bm90KC5tYXQtY2FsZW5kYXItYm9keS1zZWxlY3RlZCk6bm90KC5tYXQtY2FsZW5kYXItYm9keS1jb21wYXJpc29uLWlkZW50aWNhbCl7Ym9yZGVyLWNvbG9yOnJnYmEoMCwwLDAsLjM4KX0ubWF0LWNhbGVuZGFyLWJvZHktZGlzYWJsZWRbX25nY29udGVudC0lQ09NUCVdID4gLm1hdC1jYWxlbmRhci1ib2R5LXRvZGF5W19uZ2NvbnRlbnQtJUNPTVAlXTpub3QoLm1hdC1jYWxlbmRhci1ib2R5LXNlbGVjdGVkKTpub3QoLm1hdC1jYWxlbmRhci1ib2R5LWNvbXBhcmlzb24taWRlbnRpY2FsKXtib3JkZXItY29sb3I6cmdiYSgwLDAsMCwuMTgpfS5tYXQtY2FsZW5kYXItYm9keS1pbi1yYW5nZVtfbmdjb250ZW50LSVDT01QJV06OmJlZm9yZXtiYWNrZ3JvdW5kOnJnYmEoMjQ1LDEyNCwwLC4yKX0ubWF0LWNhbGVuZGFyLWJvZHktY29tcGFyaXNvbi1pZGVudGljYWxbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWNhbGVuZGFyLWJvZHktaW4tY29tcGFyaXNvbi1yYW5nZVtfbmdjb250ZW50LSVDT01QJV06OmJlZm9yZXtiYWNrZ3JvdW5kOnJnYmEoMjQ5LDE3MSwwLC4yKX0ubWF0LWNhbGVuZGFyLWJvZHktY29tcGFyaXNvbi1icmlkZ2Utc3RhcnRbX25nY29udGVudC0lQ09NUCVdOjpiZWZvcmUsIFtkaXI9cnRsXVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWNhbGVuZGFyLWJvZHktY29tcGFyaXNvbi1icmlkZ2UtZW5kW19uZ2NvbnRlbnQtJUNPTVAlXTo6YmVmb3Jle2JhY2tncm91bmQ6bGluZWFyLWdyYWRpZW50KHRvIHJpZ2h0LCByZ2JhKDI0NSwgMTI0LCAwLCAwLjIpIDUwJSwgcmdiYSgyNDksIDE3MSwgMCwgMC4yKSA1MCUpfS5tYXQtY2FsZW5kYXItYm9keS1jb21wYXJpc29uLWJyaWRnZS1lbmRbX25nY29udGVudC0lQ09NUCVdOjpiZWZvcmUsIFtkaXI9cnRsXVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWNhbGVuZGFyLWJvZHktY29tcGFyaXNvbi1icmlkZ2Utc3RhcnRbX25nY29udGVudC0lQ09NUCVdOjpiZWZvcmV7YmFja2dyb3VuZDpsaW5lYXItZ3JhZGllbnQodG8gbGVmdCwgcmdiYSgyNDUsIDEyNCwgMCwgMC4yKSA1MCUsIHJnYmEoMjQ5LCAxNzEsIDAsIDAuMikgNTAlKX0ubWF0LWNhbGVuZGFyLWJvZHktaW4tcmFuZ2VbX25nY29udGVudC0lQ09NUCVdID4gLm1hdC1jYWxlbmRhci1ib2R5LWNvbXBhcmlzb24taWRlbnRpY2FsW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1jYWxlbmRhci1ib2R5LWluLWNvbXBhcmlzb24tcmFuZ2UubWF0LWNhbGVuZGFyLWJvZHktaW4tcmFuZ2VbX25nY29udGVudC0lQ09NUCVdOjphZnRlcntiYWNrZ3JvdW5kOiNhOGRhYjV9Lm1hdC1jYWxlbmRhci1ib2R5LWNvbXBhcmlzb24taWRlbnRpY2FsLm1hdC1jYWxlbmRhci1ib2R5LXNlbGVjdGVkW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1jYWxlbmRhci1ib2R5LWluLWNvbXBhcmlzb24tcmFuZ2VbX25nY29udGVudC0lQ09NUCVdID4gLm1hdC1jYWxlbmRhci1ib2R5LXNlbGVjdGVkW19uZ2NvbnRlbnQtJUNPTVAlXXtiYWNrZ3JvdW5kOiM0NmEzNWV9Lm1hdC1jYWxlbmRhci1ib2R5LXNlbGVjdGVkW19uZ2NvbnRlbnQtJUNPTVAlXXtiYWNrZ3JvdW5kLWNvbG9yOiNmNTdjMDA7Y29sb3I6I2ZmZn0ubWF0LWNhbGVuZGFyLWJvZHktZGlzYWJsZWRbX25nY29udGVudC0lQ09NUCVdID4gLm1hdC1jYWxlbmRhci1ib2R5LXNlbGVjdGVkW19uZ2NvbnRlbnQtJUNPTVAlXXtiYWNrZ3JvdW5kLWNvbG9yOnJnYmEoMjQ1LDEyNCwwLC40KX0ubWF0LWNhbGVuZGFyLWJvZHktdG9kYXkubWF0LWNhbGVuZGFyLWJvZHktc2VsZWN0ZWRbX25nY29udGVudC0lQ09NUCVde2JveC1zaGFkb3c6aW5zZXQgMCAwIDAgMXB4ICNmZmZ9Lm1hdC1kYXRlcGlja2VyLWNvbnRlbnRbX25nY29udGVudC0lQ09NUCVde2JveC1zaGFkb3c6MHB4IDJweCA0cHggLTFweCByZ2JhKDAsIDAsIDAsIDAuMiksMHB4IDRweCA1cHggMHB4IHJnYmEoMCwgMCwgMCwgMC4xNCksMHB4IDFweCAxMHB4IDBweCByZ2JhKDAsIDAsIDAsIDAuMTIpO2JhY2tncm91bmQtY29sb3I6I2ZmZjtjb2xvcjojMjEyMTIxfS5tYXQtZGF0ZXBpY2tlci1jb250ZW50Lm1hdC1hY2NlbnRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1jYWxlbmRhci1ib2R5LWluLXJhbmdlW19uZ2NvbnRlbnQtJUNPTVAlXTo6YmVmb3Jle2JhY2tncm91bmQ6cmdiYSgyNTUsMTUyLDAsLjIpfS5tYXQtZGF0ZXBpY2tlci1jb250ZW50Lm1hdC1hY2NlbnRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1jYWxlbmRhci1ib2R5LWNvbXBhcmlzb24taWRlbnRpY2FsW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1kYXRlcGlja2VyLWNvbnRlbnQubWF0LWFjY2VudFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWNhbGVuZGFyLWJvZHktaW4tY29tcGFyaXNvbi1yYW5nZVtfbmdjb250ZW50LSVDT01QJV06OmJlZm9yZXtiYWNrZ3JvdW5kOnJnYmEoMjQ5LDE3MSwwLC4yKX0ubWF0LWRhdGVwaWNrZXItY29udGVudC5tYXQtYWNjZW50W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtY2FsZW5kYXItYm9keS1jb21wYXJpc29uLWJyaWRnZS1zdGFydFtfbmdjb250ZW50LSVDT01QJV06OmJlZm9yZSwgLm1hdC1kYXRlcGlja2VyLWNvbnRlbnQubWF0LWFjY2VudFtfbmdjb250ZW50LSVDT01QJV0gICBbZGlyPXJ0bF1bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1jYWxlbmRhci1ib2R5LWNvbXBhcmlzb24tYnJpZGdlLWVuZFtfbmdjb250ZW50LSVDT01QJV06OmJlZm9yZXtiYWNrZ3JvdW5kOmxpbmVhci1ncmFkaWVudCh0byByaWdodCwgcmdiYSgyNTUsIDE1MiwgMCwgMC4yKSA1MCUsIHJnYmEoMjQ5LCAxNzEsIDAsIDAuMikgNTAlKX0ubWF0LWRhdGVwaWNrZXItY29udGVudC5tYXQtYWNjZW50W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtY2FsZW5kYXItYm9keS1jb21wYXJpc29uLWJyaWRnZS1lbmRbX25nY29udGVudC0lQ09NUCVdOjpiZWZvcmUsIC5tYXQtZGF0ZXBpY2tlci1jb250ZW50Lm1hdC1hY2NlbnRbX25nY29udGVudC0lQ09NUCVdICAgW2Rpcj1ydGxdW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtY2FsZW5kYXItYm9keS1jb21wYXJpc29uLWJyaWRnZS1zdGFydFtfbmdjb250ZW50LSVDT01QJV06OmJlZm9yZXtiYWNrZ3JvdW5kOmxpbmVhci1ncmFkaWVudCh0byBsZWZ0LCByZ2JhKDI1NSwgMTUyLCAwLCAwLjIpIDUwJSwgcmdiYSgyNDksIDE3MSwgMCwgMC4yKSA1MCUpfS5tYXQtZGF0ZXBpY2tlci1jb250ZW50Lm1hdC1hY2NlbnRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1jYWxlbmRhci1ib2R5LWluLXJhbmdlW19uZ2NvbnRlbnQtJUNPTVAlXSA+IC5tYXQtY2FsZW5kYXItYm9keS1jb21wYXJpc29uLWlkZW50aWNhbFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtZGF0ZXBpY2tlci1jb250ZW50Lm1hdC1hY2NlbnRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1jYWxlbmRhci1ib2R5LWluLWNvbXBhcmlzb24tcmFuZ2UubWF0LWNhbGVuZGFyLWJvZHktaW4tcmFuZ2VbX25nY29udGVudC0lQ09NUCVdOjphZnRlcntiYWNrZ3JvdW5kOiNhOGRhYjV9Lm1hdC1kYXRlcGlja2VyLWNvbnRlbnQubWF0LWFjY2VudFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWNhbGVuZGFyLWJvZHktY29tcGFyaXNvbi1pZGVudGljYWwubWF0LWNhbGVuZGFyLWJvZHktc2VsZWN0ZWRbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWRhdGVwaWNrZXItY29udGVudC5tYXQtYWNjZW50W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtY2FsZW5kYXItYm9keS1pbi1jb21wYXJpc29uLXJhbmdlW19uZ2NvbnRlbnQtJUNPTVAlXSA+IC5tYXQtY2FsZW5kYXItYm9keS1zZWxlY3RlZFtfbmdjb250ZW50LSVDT01QJV17YmFja2dyb3VuZDojNDZhMzVlfS5tYXQtZGF0ZXBpY2tlci1jb250ZW50Lm1hdC1hY2NlbnRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1jYWxlbmRhci1ib2R5LXNlbGVjdGVkW19uZ2NvbnRlbnQtJUNPTVAlXXtiYWNrZ3JvdW5kLWNvbG9yOiNmZjk4MDA7Y29sb3I6I2ZmZn0ubWF0LWRhdGVwaWNrZXItY29udGVudC5tYXQtYWNjZW50W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtY2FsZW5kYXItYm9keS1kaXNhYmxlZFtfbmdjb250ZW50LSVDT01QJV0gPiAubWF0LWNhbGVuZGFyLWJvZHktc2VsZWN0ZWRbX25nY29udGVudC0lQ09NUCVde2JhY2tncm91bmQtY29sb3I6cmdiYSgyNTUsMTUyLDAsLjQpfS5tYXQtZGF0ZXBpY2tlci1jb250ZW50Lm1hdC1hY2NlbnRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1jYWxlbmRhci1ib2R5LXRvZGF5Lm1hdC1jYWxlbmRhci1ib2R5LXNlbGVjdGVkW19uZ2NvbnRlbnQtJUNPTVAlXXtib3gtc2hhZG93Omluc2V0IDAgMCAwIDFweCAjZmZmfS5tYXQtZGF0ZXBpY2tlci1jb250ZW50Lm1hdC13YXJuW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtY2FsZW5kYXItYm9keS1pbi1yYW5nZVtfbmdjb250ZW50LSVDT01QJV06OmJlZm9yZXtiYWNrZ3JvdW5kOnJnYmEoMjQ0LDY3LDU0LC4yKX0ubWF0LWRhdGVwaWNrZXItY29udGVudC5tYXQtd2Fybltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWNhbGVuZGFyLWJvZHktY29tcGFyaXNvbi1pZGVudGljYWxbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWRhdGVwaWNrZXItY29udGVudC5tYXQtd2Fybltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWNhbGVuZGFyLWJvZHktaW4tY29tcGFyaXNvbi1yYW5nZVtfbmdjb250ZW50LSVDT01QJV06OmJlZm9yZXtiYWNrZ3JvdW5kOnJnYmEoMjQ5LDE3MSwwLC4yKX0ubWF0LWRhdGVwaWNrZXItY29udGVudC5tYXQtd2Fybltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWNhbGVuZGFyLWJvZHktY29tcGFyaXNvbi1icmlkZ2Utc3RhcnRbX25nY29udGVudC0lQ09NUCVdOjpiZWZvcmUsIC5tYXQtZGF0ZXBpY2tlci1jb250ZW50Lm1hdC13YXJuW19uZ2NvbnRlbnQtJUNPTVAlXSAgIFtkaXI9cnRsXVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWNhbGVuZGFyLWJvZHktY29tcGFyaXNvbi1icmlkZ2UtZW5kW19uZ2NvbnRlbnQtJUNPTVAlXTo6YmVmb3Jle2JhY2tncm91bmQ6bGluZWFyLWdyYWRpZW50KHRvIHJpZ2h0LCByZ2JhKDI0NCwgNjcsIDU0LCAwLjIpIDUwJSwgcmdiYSgyNDksIDE3MSwgMCwgMC4yKSA1MCUpfS5tYXQtZGF0ZXBpY2tlci1jb250ZW50Lm1hdC13YXJuW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtY2FsZW5kYXItYm9keS1jb21wYXJpc29uLWJyaWRnZS1lbmRbX25nY29udGVudC0lQ09NUCVdOjpiZWZvcmUsIC5tYXQtZGF0ZXBpY2tlci1jb250ZW50Lm1hdC13YXJuW19uZ2NvbnRlbnQtJUNPTVAlXSAgIFtkaXI9cnRsXVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWNhbGVuZGFyLWJvZHktY29tcGFyaXNvbi1icmlkZ2Utc3RhcnRbX25nY29udGVudC0lQ09NUCVdOjpiZWZvcmV7YmFja2dyb3VuZDpsaW5lYXItZ3JhZGllbnQodG8gbGVmdCwgcmdiYSgyNDQsIDY3LCA1NCwgMC4yKSA1MCUsIHJnYmEoMjQ5LCAxNzEsIDAsIDAuMikgNTAlKX0ubWF0LWRhdGVwaWNrZXItY29udGVudC5tYXQtd2Fybltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWNhbGVuZGFyLWJvZHktaW4tcmFuZ2VbX25nY29udGVudC0lQ09NUCVdID4gLm1hdC1jYWxlbmRhci1ib2R5LWNvbXBhcmlzb24taWRlbnRpY2FsW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1kYXRlcGlja2VyLWNvbnRlbnQubWF0LXdhcm5bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1jYWxlbmRhci1ib2R5LWluLWNvbXBhcmlzb24tcmFuZ2UubWF0LWNhbGVuZGFyLWJvZHktaW4tcmFuZ2VbX25nY29udGVudC0lQ09NUCVdOjphZnRlcntiYWNrZ3JvdW5kOiNhOGRhYjV9Lm1hdC1kYXRlcGlja2VyLWNvbnRlbnQubWF0LXdhcm5bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1jYWxlbmRhci1ib2R5LWNvbXBhcmlzb24taWRlbnRpY2FsLm1hdC1jYWxlbmRhci1ib2R5LXNlbGVjdGVkW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1kYXRlcGlja2VyLWNvbnRlbnQubWF0LXdhcm5bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1jYWxlbmRhci1ib2R5LWluLWNvbXBhcmlzb24tcmFuZ2VbX25nY29udGVudC0lQ09NUCVdID4gLm1hdC1jYWxlbmRhci1ib2R5LXNlbGVjdGVkW19uZ2NvbnRlbnQtJUNPTVAlXXtiYWNrZ3JvdW5kOiM0NmEzNWV9Lm1hdC1kYXRlcGlja2VyLWNvbnRlbnQubWF0LXdhcm5bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1jYWxlbmRhci1ib2R5LXNlbGVjdGVkW19uZ2NvbnRlbnQtJUNPTVAlXXtiYWNrZ3JvdW5kLWNvbG9yOiNmNDQzMzY7Y29sb3I6I2ZmZn0ubWF0LWRhdGVwaWNrZXItY29udGVudC5tYXQtd2Fybltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWNhbGVuZGFyLWJvZHktZGlzYWJsZWRbX25nY29udGVudC0lQ09NUCVdID4gLm1hdC1jYWxlbmRhci1ib2R5LXNlbGVjdGVkW19uZ2NvbnRlbnQtJUNPTVAlXXtiYWNrZ3JvdW5kLWNvbG9yOnJnYmEoMjQ0LDY3LDU0LC40KX0ubWF0LWRhdGVwaWNrZXItY29udGVudC5tYXQtd2Fybltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWNhbGVuZGFyLWJvZHktdG9kYXkubWF0LWNhbGVuZGFyLWJvZHktc2VsZWN0ZWRbX25nY29udGVudC0lQ09NUCVde2JveC1zaGFkb3c6aW5zZXQgMCAwIDAgMXB4ICNmZmZ9Lm1hdC1kYXRlcGlja2VyLWNvbnRlbnQtdG91Y2hbX25nY29udGVudC0lQ09NUCVde2JveC1zaGFkb3c6MHB4IDBweCAwcHggMHB4IHJnYmEoMCwgMCwgMCwgMC4yKSwwcHggMHB4IDBweCAwcHggcmdiYSgwLCAwLCAwLCAwLjE0KSwwcHggMHB4IDBweCAwcHggcmdiYSgwLCAwLCAwLCAwLjEyKX0ubWF0LWRhdGVwaWNrZXItdG9nZ2xlLWFjdGl2ZVtfbmdjb250ZW50LSVDT01QJV17Y29sb3I6I2Y1N2MwMH0ubWF0LWRhdGVwaWNrZXItdG9nZ2xlLWFjdGl2ZS5tYXQtYWNjZW50W19uZ2NvbnRlbnQtJUNPTVAlXXtjb2xvcjojZmY5ODAwfS5tYXQtZGF0ZXBpY2tlci10b2dnbGUtYWN0aXZlLm1hdC13YXJuW19uZ2NvbnRlbnQtJUNPTVAlXXtjb2xvcjojZjQ0MzM2fS5tYXQtZGF0ZS1yYW5nZS1pbnB1dC1pbm5lcltkaXNhYmxlZF1bX25nY29udGVudC0lQ09NUCVde2NvbG9yOiM3NTc1NzV9Lm1hdC1kaWFsb2ctY29udGFpbmVyW19uZ2NvbnRlbnQtJUNPTVAlXXtib3gtc2hhZG93OjBweCAxMXB4IDE1cHggLTdweCByZ2JhKDAsIDAsIDAsIDAuMiksMHB4IDI0cHggMzhweCAzcHggcmdiYSgwLCAwLCAwLCAwLjE0KSwwcHggOXB4IDQ2cHggOHB4IHJnYmEoMCwgMCwgMCwgMC4xMik7YmFja2dyb3VuZDojZmZmO2NvbG9yOiMyMTIxMjF9Lm1hdC1kaXZpZGVyW19uZ2NvbnRlbnQtJUNPTVAlXXtib3JkZXItdG9wLWNvbG9yOnJnYmEoMCwwLDAsLjEyKX0ubWF0LWRpdmlkZXItdmVydGljYWxbX25nY29udGVudC0lQ09NUCVde2JvcmRlci1yaWdodC1jb2xvcjpyZ2JhKDAsMCwwLC4xMil9Lm1hdC1leHBhbnNpb24tcGFuZWxbX25nY29udGVudC0lQ09NUCVde2JhY2tncm91bmQ6I2ZmZjtjb2xvcjojMjEyMTIxfS5tYXQtZXhwYW5zaW9uLXBhbmVsW19uZ2NvbnRlbnQtJUNPTVAlXTpub3QoW2NsYXNzKj1tYXQtZWxldmF0aW9uLXpdKXtib3gtc2hhZG93OjBweCAzcHggMXB4IC0ycHggcmdiYSgwLCAwLCAwLCAwLjIpLDBweCAycHggMnB4IDBweCByZ2JhKDAsIDAsIDAsIDAuMTQpLDBweCAxcHggNXB4IDBweCByZ2JhKDAsIDAsIDAsIDAuMTIpfS5tYXQtYWN0aW9uLXJvd1tfbmdjb250ZW50LSVDT01QJV17Ym9yZGVyLXRvcC1jb2xvcjpyZ2JhKDAsMCwwLC4xMil9Lm1hdC1leHBhbnNpb24tcGFuZWxbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1leHBhbnNpb24tcGFuZWwtaGVhZGVyLmNkay1rZXlib2FyZC1mb2N1c2VkW19uZ2NvbnRlbnQtJUNPTVAlXTpub3QoW2FyaWEtZGlzYWJsZWQ9dHJ1ZV0pLCAubWF0LWV4cGFuc2lvbi1wYW5lbFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWV4cGFuc2lvbi1wYW5lbC1oZWFkZXIuY2RrLXByb2dyYW0tZm9jdXNlZFtfbmdjb250ZW50LSVDT01QJV06bm90KFthcmlhLWRpc2FibGVkPXRydWVdKSwgLm1hdC1leHBhbnNpb24tcGFuZWxbX25nY29udGVudC0lQ09NUCVdOm5vdCgubWF0LWV4cGFuZGVkKSAgIC5tYXQtZXhwYW5zaW9uLXBhbmVsLWhlYWRlcltfbmdjb250ZW50LSVDT01QJV06aG92ZXI6bm90KFthcmlhLWRpc2FibGVkPXRydWVdKXtiYWNrZ3JvdW5kOnJnYmEoMCwwLDAsLjA0KX1AbWVkaWEoaG92ZXI6IG5vbmUpey5tYXQtZXhwYW5zaW9uLXBhbmVsW19uZ2NvbnRlbnQtJUNPTVAlXTpub3QoLm1hdC1leHBhbmRlZCk6bm90KFthcmlhLWRpc2FibGVkPXRydWVdKSAgIC5tYXQtZXhwYW5zaW9uLXBhbmVsLWhlYWRlcltfbmdjb250ZW50LSVDT01QJV06aG92ZXJ7YmFja2dyb3VuZDojZmZmfX0ubWF0LWV4cGFuc2lvbi1wYW5lbC1oZWFkZXItdGl0bGVbX25nY29udGVudC0lQ09NUCVde2NvbG9yOiMyMTIxMjF9Lm1hdC1leHBhbnNpb24tcGFuZWwtaGVhZGVyLWRlc2NyaXB0aW9uW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1leHBhbnNpb24taW5kaWNhdG9yW19uZ2NvbnRlbnQtJUNPTVAlXTo6YWZ0ZXJ7Y29sb3I6IzYxNjE2MX0ubWF0LWV4cGFuc2lvbi1wYW5lbC1oZWFkZXJbYXJpYS1kaXNhYmxlZD10cnVlXVtfbmdjb250ZW50LSVDT01QJV17Y29sb3I6cmdiYSgwLDAsMCwuMjYpfS5tYXQtZXhwYW5zaW9uLXBhbmVsLWhlYWRlclthcmlhLWRpc2FibGVkPXRydWVdW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZXhwYW5zaW9uLXBhbmVsLWhlYWRlci10aXRsZVtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtZXhwYW5zaW9uLXBhbmVsLWhlYWRlclthcmlhLWRpc2FibGVkPXRydWVdW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZXhwYW5zaW9uLXBhbmVsLWhlYWRlci1kZXNjcmlwdGlvbltfbmdjb250ZW50LSVDT01QJV17Y29sb3I6aW5oZXJpdH0ubWF0LWV4cGFuc2lvbi1wYW5lbC1oZWFkZXJbX25nY29udGVudC0lQ09NUCVde2hlaWdodDo0OHB4fS5tYXQtZXhwYW5zaW9uLXBhbmVsLWhlYWRlci5tYXQtZXhwYW5kZWRbX25nY29udGVudC0lQ09NUCVde2hlaWdodDo2NHB4fS5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17Y29sb3I6cmdiYSg5Nyw5Nyw5NywuNil9Lm1hdC1oaW50W19uZ2NvbnRlbnQtJUNPTVAlXXtjb2xvcjpyZ2JhKDk3LDk3LDk3LC42KX0ubWF0LWZvcm0tZmllbGQubWF0LWZvY3VzZWRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXtjb2xvcjojZjU3YzAwfS5tYXQtZm9ybS1maWVsZC5tYXQtZm9jdXNlZFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWwubWF0LWFjY2VudFtfbmdjb250ZW50LSVDT01QJV17Y29sb3I6I2ZmOTgwMH0ubWF0LWZvcm0tZmllbGQubWF0LWZvY3VzZWRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsLm1hdC13YXJuW19uZ2NvbnRlbnQtJUNPTVAlXXtjb2xvcjojZjQ0MzM2fS5tYXQtZm9jdXNlZFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtcmVxdWlyZWQtbWFya2VyW19uZ2NvbnRlbnQtJUNPTVAlXXtjb2xvcjojZmY5ODAwfS5tYXQtZm9ybS1maWVsZC1yaXBwbGVbX25nY29udGVudC0lQ09NUCVde2JhY2tncm91bmQtY29sb3I6cmdiYSgwLDAsMCwuODcpfS5tYXQtZm9ybS1maWVsZC5tYXQtZm9jdXNlZFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtcmlwcGxlW19uZ2NvbnRlbnQtJUNPTVAlXXtiYWNrZ3JvdW5kLWNvbG9yOiNmNTdjMDB9Lm1hdC1mb3JtLWZpZWxkLm1hdC1mb2N1c2VkW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1yaXBwbGUubWF0LWFjY2VudFtfbmdjb250ZW50LSVDT01QJV17YmFja2dyb3VuZC1jb2xvcjojZmY5ODAwfS5tYXQtZm9ybS1maWVsZC5tYXQtZm9jdXNlZFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtcmlwcGxlLm1hdC13YXJuW19uZ2NvbnRlbnQtJUNPTVAlXXtiYWNrZ3JvdW5kLWNvbG9yOiNmNDQzMzZ9Lm1hdC1mb3JtLWZpZWxkLXR5cGUtbWF0LW5hdGl2ZS1zZWxlY3QubWF0LWZvY3VzZWRbX25nY29udGVudC0lQ09NUCVdOm5vdCgubWF0LWZvcm0tZmllbGQtaW52YWxpZCkgICAubWF0LWZvcm0tZmllbGQtaW5maXhbX25nY29udGVudC0lQ09NUCVdOjphZnRlcntjb2xvcjojZjU3YzAwfS5tYXQtZm9ybS1maWVsZC10eXBlLW1hdC1uYXRpdmUtc2VsZWN0Lm1hdC1mb2N1c2VkW19uZ2NvbnRlbnQtJUNPTVAlXTpub3QoLm1hdC1mb3JtLWZpZWxkLWludmFsaWQpLm1hdC1hY2NlbnQgICAubWF0LWZvcm0tZmllbGQtaW5maXhbX25nY29udGVudC0lQ09NUCVdOjphZnRlcntjb2xvcjojZmY5ODAwfS5tYXQtZm9ybS1maWVsZC10eXBlLW1hdC1uYXRpdmUtc2VsZWN0Lm1hdC1mb2N1c2VkW19uZ2NvbnRlbnQtJUNPTVAlXTpub3QoLm1hdC1mb3JtLWZpZWxkLWludmFsaWQpLm1hdC13YXJuICAgLm1hdC1mb3JtLWZpZWxkLWluZml4W19uZ2NvbnRlbnQtJUNPTVAlXTo6YWZ0ZXJ7Y29sb3I6I2Y0NDMzNn0ubWF0LWZvcm0tZmllbGQubWF0LWZvcm0tZmllbGQtaW52YWxpZFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVde2NvbG9yOiNmNDQzMzZ9Lm1hdC1mb3JtLWZpZWxkLm1hdC1mb3JtLWZpZWxkLWludmFsaWRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsLm1hdC1hY2NlbnRbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWZvcm0tZmllbGQubWF0LWZvcm0tZmllbGQtaW52YWxpZFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLXJlcXVpcmVkLW1hcmtlcltfbmdjb250ZW50LSVDT01QJV17Y29sb3I6I2Y0NDMzNn0ubWF0LWZvcm0tZmllbGQubWF0LWZvcm0tZmllbGQtaW52YWxpZFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtcmlwcGxlW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1mb3JtLWZpZWxkLm1hdC1mb3JtLWZpZWxkLWludmFsaWRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLXJpcHBsZS5tYXQtYWNjZW50W19uZ2NvbnRlbnQtJUNPTVAlXXtiYWNrZ3JvdW5kLWNvbG9yOiNmNDQzMzZ9Lm1hdC1lcnJvcltfbmdjb250ZW50LSVDT01QJV17Y29sb3I6I2Y0NDMzNn0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1sZWdhY3lbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXtjb2xvcjojNjE2MTYxfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWxlZ2FjeVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWhpbnRbX25nY29udGVudC0lQ09NUCVde2NvbG9yOiM2MTYxNjF9Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtbGVnYWN5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC11bmRlcmxpbmVbX25nY29udGVudC0lQ09NUCVde2JhY2tncm91bmQtY29sb3I6cmdiYSgwLDAsMCwuNDIpfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWxlZ2FjeS5tYXQtZm9ybS1maWVsZC1kaXNhYmxlZFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtdW5kZXJsaW5lW19uZ2NvbnRlbnQtJUNPTVAlXXtiYWNrZ3JvdW5kLWltYWdlOmxpbmVhci1ncmFkaWVudCh0byByaWdodCwgcmdiYSgwLCAwLCAwLCAwLjQyKSAwJSwgcmdiYSgwLCAwLCAwLCAwLjQyKSAzMyUsIHRyYW5zcGFyZW50IDAlKTtiYWNrZ3JvdW5kLXNpemU6NHB4IDEwMCU7YmFja2dyb3VuZC1yZXBlYXQ6cmVwZWF0LXh9Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2Utc3RhbmRhcmRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLXVuZGVybGluZVtfbmdjb250ZW50LSVDT01QJV17YmFja2dyb3VuZC1jb2xvcjpyZ2JhKDAsMCwwLC40Mil9Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2Utc3RhbmRhcmQubWF0LWZvcm0tZmllbGQtZGlzYWJsZWRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLXVuZGVybGluZVtfbmdjb250ZW50LSVDT01QJV17YmFja2dyb3VuZC1pbWFnZTpsaW5lYXItZ3JhZGllbnQodG8gcmlnaHQsIHJnYmEoMCwgMCwgMCwgMC40MikgMCUsIHJnYmEoMCwgMCwgMCwgMC40MikgMzMlLCB0cmFuc3BhcmVudCAwJSk7YmFja2dyb3VuZC1zaXplOjRweCAxMDAlO2JhY2tncm91bmQtcmVwZWF0OnJlcGVhdC14fS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWZpbGxbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWZsZXhbX25nY29udGVudC0lQ09NUCVde2JhY2tncm91bmQtY29sb3I6cmdiYSgwLDAsMCwuMDQpfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWZpbGwubWF0LWZvcm0tZmllbGQtZGlzYWJsZWRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWZsZXhbX25nY29udGVudC0lQ09NUCVde2JhY2tncm91bmQtY29sb3I6cmdiYSgwLDAsMCwuMDIpfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWZpbGxbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLXVuZGVybGluZVtfbmdjb250ZW50LSVDT01QJV06OmJlZm9yZXtiYWNrZ3JvdW5kLWNvbG9yOnJnYmEoMCwwLDAsLjQyKX0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1maWxsLm1hdC1mb3JtLWZpZWxkLWRpc2FibGVkW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17Y29sb3I6Izc1NzU3NX0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1maWxsLm1hdC1mb3JtLWZpZWxkLWRpc2FibGVkW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC11bmRlcmxpbmVbX25nY29udGVudC0lQ09NUCVdOjpiZWZvcmV7YmFja2dyb3VuZC1jb2xvcjp0cmFuc3BhcmVudH0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1vdXRsaW5lW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1vdXRsaW5lW19uZ2NvbnRlbnQtJUNPTVAlXXtjb2xvcjpyZ2JhKDAsMCwwLC4xMil9Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2Utb3V0bGluZVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtb3V0bGluZS10aGlja1tfbmdjb250ZW50LSVDT01QJV17Y29sb3I6cmdiYSgwLDAsMCwuODcpfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLW91dGxpbmUubWF0LWZvY3VzZWRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLW91dGxpbmUtdGhpY2tbX25nY29udGVudC0lQ09NUCVde2NvbG9yOiNmNTdjMDB9Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2Utb3V0bGluZS5tYXQtZm9jdXNlZC5tYXQtYWNjZW50W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1vdXRsaW5lLXRoaWNrW19uZ2NvbnRlbnQtJUNPTVAlXXtjb2xvcjojZmY5ODAwfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLW91dGxpbmUubWF0LWZvY3VzZWQubWF0LXdhcm5bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLW91dGxpbmUtdGhpY2tbX25nY29udGVudC0lQ09NUCVde2NvbG9yOiNmNDQzMzZ9Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2Utb3V0bGluZS5tYXQtZm9ybS1maWVsZC1pbnZhbGlkLm1hdC1mb3JtLWZpZWxkLWludmFsaWRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLW91dGxpbmUtdGhpY2tbX25nY29udGVudC0lQ09NUCVde2NvbG9yOiNmNDQzMzZ9Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2Utb3V0bGluZS5tYXQtZm9ybS1maWVsZC1kaXNhYmxlZFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVde2NvbG9yOiM3NTc1NzV9Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2Utb3V0bGluZS5tYXQtZm9ybS1maWVsZC1kaXNhYmxlZFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtb3V0bGluZVtfbmdjb250ZW50LSVDT01QJV17Y29sb3I6cmdiYSgwLDAsMCwuMDYpfS5tYXQtaWNvbi5tYXQtcHJpbWFyeVtfbmdjb250ZW50LSVDT01QJV17Y29sb3I6I2Y1N2MwMH0ubWF0LWljb24ubWF0LWFjY2VudFtfbmdjb250ZW50LSVDT01QJV17Y29sb3I6I2ZmOTgwMH0ubWF0LWljb24ubWF0LXdhcm5bX25nY29udGVudC0lQ09NUCVde2NvbG9yOiNmNDQzMzZ9Lm1hdC1mb3JtLWZpZWxkLXR5cGUtbWF0LW5hdGl2ZS1zZWxlY3RbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWluZml4W19uZ2NvbnRlbnQtJUNPTVAlXTo6YWZ0ZXJ7Y29sb3I6IzYxNjE2MX0ubWF0LWlucHV0LWVsZW1lbnRbX25nY29udGVudC0lQ09NUCVdOmRpc2FibGVkLCAubWF0LWZvcm0tZmllbGQtdHlwZS1tYXQtbmF0aXZlLXNlbGVjdC5tYXQtZm9ybS1maWVsZC1kaXNhYmxlZFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtaW5maXhbX25nY29udGVudC0lQ09NUCVdOjphZnRlcntjb2xvcjojNzU3NTc1fS5tYXQtaW5wdXQtZWxlbWVudFtfbmdjb250ZW50LSVDT01QJV17Y2FyZXQtY29sb3I6I2Y1N2MwMH0ubWF0LWlucHV0LWVsZW1lbnRbX25nY29udGVudC0lQ09NUCVdOjpwbGFjZWhvbGRlcntjb2xvcjpyZ2JhKDk3LDk3LDk3LC40Mil9Lm1hdC1pbnB1dC1lbGVtZW50W19uZ2NvbnRlbnQtJUNPTVAlXTo6LW1vei1wbGFjZWhvbGRlcntjb2xvcjpyZ2JhKDk3LDk3LDk3LC40Mil9Lm1hdC1pbnB1dC1lbGVtZW50W19uZ2NvbnRlbnQtJUNPTVAlXTo6LXdlYmtpdC1pbnB1dC1wbGFjZWhvbGRlcntjb2xvcjpyZ2JhKDk3LDk3LDk3LC40Mil9Lm1hdC1pbnB1dC1lbGVtZW50W19uZ2NvbnRlbnQtJUNPTVAlXTotbXMtaW5wdXQtcGxhY2Vob2xkZXJ7Y29sb3I6cmdiYSg5Nyw5Nyw5NywuNDIpfS5tYXQtZm9ybS1maWVsZC5tYXQtYWNjZW50W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaW5wdXQtZWxlbWVudFtfbmdjb250ZW50LSVDT01QJV17Y2FyZXQtY29sb3I6I2ZmOTgwMH0ubWF0LWZvcm0tZmllbGQubWF0LXdhcm5bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pbnB1dC1lbGVtZW50W19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1mb3JtLWZpZWxkLWludmFsaWRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pbnB1dC1lbGVtZW50W19uZ2NvbnRlbnQtJUNPTVAlXXtjYXJldC1jb2xvcjojZjQ0MzM2fS5tYXQtZm9ybS1maWVsZC10eXBlLW1hdC1uYXRpdmUtc2VsZWN0Lm1hdC1mb3JtLWZpZWxkLWludmFsaWRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWluZml4W19uZ2NvbnRlbnQtJUNPTVAlXTo6YWZ0ZXJ7Y29sb3I6I2Y0NDMzNn0ubWF0LWxpc3QtYmFzZVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpc3QtaXRlbVtfbmdjb250ZW50LSVDT01QJV17Y29sb3I6IzIxMjEyMX0ubWF0LWxpc3QtYmFzZVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpc3Qtb3B0aW9uW19uZ2NvbnRlbnQtJUNPTVAlXXtjb2xvcjojMjEyMTIxfS5tYXQtbGlzdC1iYXNlW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtc3ViaGVhZGVyW19uZ2NvbnRlbnQtJUNPTVAlXXtjb2xvcjojNjE2MTYxfS5tYXQtbGlzdC1pdGVtLWRpc2FibGVkW19uZ2NvbnRlbnQtJUNPTVAlXXtiYWNrZ3JvdW5kLWNvbG9yOiNlZWV9Lm1hdC1saXN0LW9wdGlvbltfbmdjb250ZW50LSVDT01QJV06aG92ZXIsIC5tYXQtbGlzdC1vcHRpb25bX25nY29udGVudC0lQ09NUCVdOmZvY3VzLCAubWF0LW5hdi1saXN0W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGlzdC1pdGVtW19uZ2NvbnRlbnQtJUNPTVAlXTpob3ZlciwgLm1hdC1uYXYtbGlzdFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpc3QtaXRlbVtfbmdjb250ZW50LSVDT01QJV06Zm9jdXMsIC5tYXQtYWN0aW9uLWxpc3RbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saXN0LWl0ZW1bX25nY29udGVudC0lQ09NUCVdOmhvdmVyLCAubWF0LWFjdGlvbi1saXN0W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGlzdC1pdGVtW19uZ2NvbnRlbnQtJUNPTVAlXTpmb2N1c3tiYWNrZ3JvdW5kOnJnYmEoMCwwLDAsLjA0KX0ubWF0LWxpc3Qtc2luZ2xlLXNlbGVjdGVkLW9wdGlvbltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtbGlzdC1zaW5nbGUtc2VsZWN0ZWQtb3B0aW9uW19uZ2NvbnRlbnQtJUNPTVAlXTpob3ZlciwgLm1hdC1saXN0LXNpbmdsZS1zZWxlY3RlZC1vcHRpb25bX25nY29udGVudC0lQ09NUCVdOmZvY3Vze2JhY2tncm91bmQ6cmdiYSgwLDAsMCwuMTIpfS5tYXQtbWVudS1wYW5lbFtfbmdjb250ZW50LSVDT01QJV17YmFja2dyb3VuZDojZmZmfS5tYXQtbWVudS1wYW5lbFtfbmdjb250ZW50LSVDT01QJV06bm90KFtjbGFzcyo9bWF0LWVsZXZhdGlvbi16XSl7Ym94LXNoYWRvdzowcHggMnB4IDRweCAtMXB4IHJnYmEoMCwgMCwgMCwgMC4yKSwwcHggNHB4IDVweCAwcHggcmdiYSgwLCAwLCAwLCAwLjE0KSwwcHggMXB4IDEwcHggMHB4IHJnYmEoMCwgMCwgMCwgMC4xMil9Lm1hdC1tZW51LWl0ZW1bX25nY29udGVudC0lQ09NUCVde2JhY2tncm91bmQ6dHJhbnNwYXJlbnQ7Y29sb3I6IzIxMjEyMX0ubWF0LW1lbnUtaXRlbVtkaXNhYmxlZF1bX25nY29udGVudC0lQ09NUCVdLCAubWF0LW1lbnUtaXRlbVtkaXNhYmxlZF1bX25nY29udGVudC0lQ09NUCVdOjphZnRlcntjb2xvcjpyZ2JhKDAsMCwwLC4zOCl9Lm1hdC1tZW51LWl0ZW1bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pY29uLW5vLWNvbG9yW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1tZW51LWl0ZW0tc3VibWVudS10cmlnZ2VyW19uZ2NvbnRlbnQtJUNPTVAlXTo6YWZ0ZXJ7Y29sb3I6cmdiYSgwLDAsMCwuNTQpfS5tYXQtbWVudS1pdGVtW19uZ2NvbnRlbnQtJUNPTVAlXTpob3Zlcjpub3QoW2Rpc2FibGVkXSksIC5tYXQtbWVudS1pdGVtLmNkay1wcm9ncmFtLWZvY3VzZWRbX25nY29udGVudC0lQ09NUCVdOm5vdChbZGlzYWJsZWRdKSwgLm1hdC1tZW51LWl0ZW0uY2RrLWtleWJvYXJkLWZvY3VzZWRbX25nY29udGVudC0lQ09NUCVdOm5vdChbZGlzYWJsZWRdKSwgLm1hdC1tZW51LWl0ZW0taGlnaGxpZ2h0ZWRbX25nY29udGVudC0lQ09NUCVdOm5vdChbZGlzYWJsZWRdKXtiYWNrZ3JvdW5kOnJnYmEoMCwwLDAsLjA0KX0ubWF0LXBhZ2luYXRvcltfbmdjb250ZW50LSVDT01QJV17YmFja2dyb3VuZDojZmZmfS5tYXQtcGFnaW5hdG9yW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1wYWdpbmF0b3ItcGFnZS1zaXplW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtc2VsZWN0LXRyaWdnZXJbX25nY29udGVudC0lQ09NUCVde2NvbG9yOiM2MTYxNjF9Lm1hdC1wYWdpbmF0b3ItZGVjcmVtZW50W19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1wYWdpbmF0b3ItaW5jcmVtZW50W19uZ2NvbnRlbnQtJUNPTVAlXXtib3JkZXItdG9wOjJweCBzb2xpZCByZ2JhKDAsMCwwLC41NCk7Ym9yZGVyLXJpZ2h0OjJweCBzb2xpZCByZ2JhKDAsMCwwLC41NCl9Lm1hdC1wYWdpbmF0b3ItZmlyc3RbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXBhZ2luYXRvci1sYXN0W19uZ2NvbnRlbnQtJUNPTVAlXXtib3JkZXItdG9wOjJweCBzb2xpZCByZ2JhKDAsMCwwLC41NCl9Lm1hdC1pY29uLWJ1dHRvbltkaXNhYmxlZF1bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1wYWdpbmF0b3ItZGVjcmVtZW50W19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1pY29uLWJ1dHRvbltkaXNhYmxlZF1bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1wYWdpbmF0b3ItaW5jcmVtZW50W19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1pY29uLWJ1dHRvbltkaXNhYmxlZF1bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1wYWdpbmF0b3ItZmlyc3RbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWljb24tYnV0dG9uW2Rpc2FibGVkXVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXBhZ2luYXRvci1sYXN0W19uZ2NvbnRlbnQtJUNPTVAlXXtib3JkZXItY29sb3I6cmdiYSgwLDAsMCwuMzgpfS5tYXQtcGFnaW5hdG9yLWNvbnRhaW5lcltfbmdjb250ZW50LSVDT01QJV17bWluLWhlaWdodDo1NnB4fS5tYXQtcHJvZ3Jlc3MtYmFyLWJhY2tncm91bmRbX25nY29udGVudC0lQ09NUCVde2ZpbGw6I2ZmOTgwMH0ubWF0LXByb2dyZXNzLWJhci1idWZmZXJbX25nY29udGVudC0lQ09NUCVde2JhY2tncm91bmQtY29sb3I6I2ZmOTgwMH0ubWF0LXByb2dyZXNzLWJhci1maWxsW19uZ2NvbnRlbnQtJUNPTVAlXTo6YWZ0ZXJ7YmFja2dyb3VuZC1jb2xvcjojZjU3YzAwfS5tYXQtcHJvZ3Jlc3MtYmFyLm1hdC1hY2NlbnRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1wcm9ncmVzcy1iYXItYmFja2dyb3VuZFtfbmdjb250ZW50LSVDT01QJV17ZmlsbDojZmY5ODAwfS5tYXQtcHJvZ3Jlc3MtYmFyLm1hdC1hY2NlbnRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1wcm9ncmVzcy1iYXItYnVmZmVyW19uZ2NvbnRlbnQtJUNPTVAlXXtiYWNrZ3JvdW5kLWNvbG9yOiNmZjk4MDB9Lm1hdC1wcm9ncmVzcy1iYXIubWF0LWFjY2VudFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXByb2dyZXNzLWJhci1maWxsW19uZ2NvbnRlbnQtJUNPTVAlXTo6YWZ0ZXJ7YmFja2dyb3VuZC1jb2xvcjojZmY5ODAwfS5tYXQtcHJvZ3Jlc3MtYmFyLm1hdC13YXJuW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtcHJvZ3Jlc3MtYmFyLWJhY2tncm91bmRbX25nY29udGVudC0lQ09NUCVde2ZpbGw6I2ZmY2RkMn0ubWF0LXByb2dyZXNzLWJhci5tYXQtd2Fybltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXByb2dyZXNzLWJhci1idWZmZXJbX25nY29udGVudC0lQ09NUCVde2JhY2tncm91bmQtY29sb3I6I2ZmY2RkMn0ubWF0LXByb2dyZXNzLWJhci5tYXQtd2Fybltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXByb2dyZXNzLWJhci1maWxsW19uZ2NvbnRlbnQtJUNPTVAlXTo6YWZ0ZXJ7YmFja2dyb3VuZC1jb2xvcjojZjQ0MzM2fS5tYXQtcHJvZ3Jlc3Mtc3Bpbm5lcltfbmdjb250ZW50LSVDT01QJV0gICBjaXJjbGVbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXNwaW5uZXJbX25nY29udGVudC0lQ09NUCVdICAgY2lyY2xlW19uZ2NvbnRlbnQtJUNPTVAlXXtzdHJva2U6I2Y1N2MwMH0ubWF0LXByb2dyZXNzLXNwaW5uZXIubWF0LWFjY2VudFtfbmdjb250ZW50LSVDT01QJV0gICBjaXJjbGVbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXNwaW5uZXIubWF0LWFjY2VudFtfbmdjb250ZW50LSVDT01QJV0gICBjaXJjbGVbX25nY29udGVudC0lQ09NUCVde3N0cm9rZTojZmY5ODAwfS5tYXQtcHJvZ3Jlc3Mtc3Bpbm5lci5tYXQtd2Fybltfbmdjb250ZW50LSVDT01QJV0gICBjaXJjbGVbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXNwaW5uZXIubWF0LXdhcm5bX25nY29udGVudC0lQ09NUCVdICAgY2lyY2xlW19uZ2NvbnRlbnQtJUNPTVAlXXtzdHJva2U6I2Y0NDMzNn0ubWF0LXJhZGlvLW91dGVyLWNpcmNsZVtfbmdjb250ZW50LSVDT01QJV17Ym9yZGVyLWNvbG9yOiM2MTYxNjF9Lm1hdC1yYWRpby1idXR0b24ubWF0LXByaW1hcnkubWF0LXJhZGlvLWNoZWNrZWRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1yYWRpby1vdXRlci1jaXJjbGVbX25nY29udGVudC0lQ09NUCVde2JvcmRlci1jb2xvcjojZjU3YzAwfS5tYXQtcmFkaW8tYnV0dG9uLm1hdC1wcmltYXJ5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtcmFkaW8taW5uZXItY2lyY2xlW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1yYWRpby1idXR0b24ubWF0LXByaW1hcnlbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1yYWRpby1yaXBwbGVbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1yaXBwbGUtZWxlbWVudFtfbmdjb250ZW50LSVDT01QJV06bm90KC5tYXQtcmFkaW8tcGVyc2lzdGVudC1yaXBwbGUpLCAubWF0LXJhZGlvLWJ1dHRvbi5tYXQtcHJpbWFyeS5tYXQtcmFkaW8tY2hlY2tlZFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXJhZGlvLXBlcnNpc3RlbnQtcmlwcGxlW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1yYWRpby1idXR0b24ubWF0LXByaW1hcnlbX25nY29udGVudC0lQ09NUCVdOmFjdGl2ZSAgIC5tYXQtcmFkaW8tcGVyc2lzdGVudC1yaXBwbGVbX25nY29udGVudC0lQ09NUCVde2JhY2tncm91bmQtY29sb3I6I2Y1N2MwMH0ubWF0LXJhZGlvLWJ1dHRvbi5tYXQtYWNjZW50Lm1hdC1yYWRpby1jaGVja2VkW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtcmFkaW8tb3V0ZXItY2lyY2xlW19uZ2NvbnRlbnQtJUNPTVAlXXtib3JkZXItY29sb3I6I2ZmOTgwMH0ubWF0LXJhZGlvLWJ1dHRvbi5tYXQtYWNjZW50W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtcmFkaW8taW5uZXItY2lyY2xlW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1yYWRpby1idXR0b24ubWF0LWFjY2VudFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXJhZGlvLXJpcHBsZVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXJpcHBsZS1lbGVtZW50W19uZ2NvbnRlbnQtJUNPTVAlXTpub3QoLm1hdC1yYWRpby1wZXJzaXN0ZW50LXJpcHBsZSksIC5tYXQtcmFkaW8tYnV0dG9uLm1hdC1hY2NlbnQubWF0LXJhZGlvLWNoZWNrZWRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1yYWRpby1wZXJzaXN0ZW50LXJpcHBsZVtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtcmFkaW8tYnV0dG9uLm1hdC1hY2NlbnRbX25nY29udGVudC0lQ09NUCVdOmFjdGl2ZSAgIC5tYXQtcmFkaW8tcGVyc2lzdGVudC1yaXBwbGVbX25nY29udGVudC0lQ09NUCVde2JhY2tncm91bmQtY29sb3I6I2ZmOTgwMH0ubWF0LXJhZGlvLWJ1dHRvbi5tYXQtd2Fybi5tYXQtcmFkaW8tY2hlY2tlZFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXJhZGlvLW91dGVyLWNpcmNsZVtfbmdjb250ZW50LSVDT01QJV17Ym9yZGVyLWNvbG9yOiNmNDQzMzZ9Lm1hdC1yYWRpby1idXR0b24ubWF0LXdhcm5bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1yYWRpby1pbm5lci1jaXJjbGVbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXJhZGlvLWJ1dHRvbi5tYXQtd2Fybltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXJhZGlvLXJpcHBsZVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXJpcHBsZS1lbGVtZW50W19uZ2NvbnRlbnQtJUNPTVAlXTpub3QoLm1hdC1yYWRpby1wZXJzaXN0ZW50LXJpcHBsZSksIC5tYXQtcmFkaW8tYnV0dG9uLm1hdC13YXJuLm1hdC1yYWRpby1jaGVja2VkW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtcmFkaW8tcGVyc2lzdGVudC1yaXBwbGVbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXJhZGlvLWJ1dHRvbi5tYXQtd2Fybltfbmdjb250ZW50LSVDT01QJV06YWN0aXZlICAgLm1hdC1yYWRpby1wZXJzaXN0ZW50LXJpcHBsZVtfbmdjb250ZW50LSVDT01QJV17YmFja2dyb3VuZC1jb2xvcjojZjQ0MzM2fS5tYXQtcmFkaW8tYnV0dG9uLm1hdC1yYWRpby1kaXNhYmxlZC5tYXQtcmFkaW8tY2hlY2tlZFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXJhZGlvLW91dGVyLWNpcmNsZVtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtcmFkaW8tYnV0dG9uLm1hdC1yYWRpby1kaXNhYmxlZFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXJhZGlvLW91dGVyLWNpcmNsZVtfbmdjb250ZW50LSVDT01QJV17Ym9yZGVyLWNvbG9yOnJnYmEoMCwwLDAsLjM4KX0ubWF0LXJhZGlvLWJ1dHRvbi5tYXQtcmFkaW8tZGlzYWJsZWRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1yYWRpby1yaXBwbGVbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1yaXBwbGUtZWxlbWVudFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtcmFkaW8tYnV0dG9uLm1hdC1yYWRpby1kaXNhYmxlZFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXJhZGlvLWlubmVyLWNpcmNsZVtfbmdjb250ZW50LSVDT01QJV17YmFja2dyb3VuZC1jb2xvcjpyZ2JhKDAsMCwwLC4zOCl9Lm1hdC1yYWRpby1idXR0b24ubWF0LXJhZGlvLWRpc2FibGVkW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtcmFkaW8tbGFiZWwtY29udGVudFtfbmdjb250ZW50LSVDT01QJV17Y29sb3I6cmdiYSgwLDAsMCwuMzgpfS5tYXQtcmFkaW8tYnV0dG9uW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtcmlwcGxlLWVsZW1lbnRbX25nY29udGVudC0lQ09NUCVde2JhY2tncm91bmQtY29sb3I6IzAwMH0ubWF0LXNlbGVjdC12YWx1ZVtfbmdjb250ZW50LSVDT01QJV17Y29sb3I6IzIxMjEyMX0ubWF0LXNlbGVjdC1wbGFjZWhvbGRlcltfbmdjb250ZW50LSVDT01QJV17Y29sb3I6cmdiYSg5Nyw5Nyw5NywuNDIpfS5tYXQtc2VsZWN0LWRpc2FibGVkW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtc2VsZWN0LXZhbHVlW19uZ2NvbnRlbnQtJUNPTVAlXXtjb2xvcjojNzU3NTc1fS5tYXQtc2VsZWN0LWFycm93W19uZ2NvbnRlbnQtJUNPTVAlXXtjb2xvcjojNjE2MTYxfS5tYXQtc2VsZWN0LXBhbmVsW19uZ2NvbnRlbnQtJUNPTVAlXXtiYWNrZ3JvdW5kOiNmZmZ9Lm1hdC1zZWxlY3QtcGFuZWxbX25nY29udGVudC0lQ09NUCVdOm5vdChbY2xhc3MqPW1hdC1lbGV2YXRpb24tel0pe2JveC1zaGFkb3c6MHB4IDJweCA0cHggLTFweCByZ2JhKDAsIDAsIDAsIDAuMiksMHB4IDRweCA1cHggMHB4IHJnYmEoMCwgMCwgMCwgMC4xNCksMHB4IDFweCAxMHB4IDBweCByZ2JhKDAsIDAsIDAsIDAuMTIpfS5tYXQtc2VsZWN0LXBhbmVsW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtb3B0aW9uLm1hdC1zZWxlY3RlZFtfbmdjb250ZW50LSVDT01QJV06bm90KC5tYXQtb3B0aW9uLW11bHRpcGxlKXtiYWNrZ3JvdW5kOnJnYmEoMCwwLDAsLjEyKX0ubWF0LWZvcm0tZmllbGQubWF0LWZvY3VzZWQubWF0LXByaW1hcnlbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1zZWxlY3QtYXJyb3dbX25nY29udGVudC0lQ09NUCVde2NvbG9yOiNmNTdjMDB9Lm1hdC1mb3JtLWZpZWxkLm1hdC1mb2N1c2VkLm1hdC1hY2NlbnRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1zZWxlY3QtYXJyb3dbX25nY29udGVudC0lQ09NUCVde2NvbG9yOiNmZjk4MDB9Lm1hdC1mb3JtLWZpZWxkLm1hdC1mb2N1c2VkLm1hdC13YXJuW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtc2VsZWN0LWFycm93W19uZ2NvbnRlbnQtJUNPTVAlXXtjb2xvcjojZjQ0MzM2fS5tYXQtZm9ybS1maWVsZFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXNlbGVjdC5tYXQtc2VsZWN0LWludmFsaWRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1zZWxlY3QtYXJyb3dbX25nY29udGVudC0lQ09NUCVde2NvbG9yOiNmNDQzMzZ9Lm1hdC1mb3JtLWZpZWxkW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtc2VsZWN0Lm1hdC1zZWxlY3QtZGlzYWJsZWRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1zZWxlY3QtYXJyb3dbX25nY29udGVudC0lQ09NUCVde2NvbG9yOiM3NTc1NzV9Lm1hdC1kcmF3ZXItY29udGFpbmVyW19uZ2NvbnRlbnQtJUNPTVAlXXtiYWNrZ3JvdW5kLWNvbG9yOiNmYWZhZmE7Y29sb3I6IzIxMjEyMX0ubWF0LWRyYXdlcltfbmdjb250ZW50LSVDT01QJV17YmFja2dyb3VuZC1jb2xvcjojZmZmO2NvbG9yOiMyMTIxMjF9Lm1hdC1kcmF3ZXIubWF0LWRyYXdlci1wdXNoW19uZ2NvbnRlbnQtJUNPTVAlXXtiYWNrZ3JvdW5kLWNvbG9yOiNmZmZ9Lm1hdC1kcmF3ZXJbX25nY29udGVudC0lQ09NUCVdOm5vdCgubWF0LWRyYXdlci1zaWRlKXtib3gtc2hhZG93OjBweCA4cHggMTBweCAtNXB4IHJnYmEoMCwgMCwgMCwgMC4yKSwwcHggMTZweCAyNHB4IDJweCByZ2JhKDAsIDAsIDAsIDAuMTQpLDBweCA2cHggMzBweCA1cHggcmdiYSgwLCAwLCAwLCAwLjEyKX0ubWF0LWRyYXdlci1zaWRlW19uZ2NvbnRlbnQtJUNPTVAlXXtib3JkZXItcmlnaHQ6c29saWQgMXB4IHJnYmEoMCwwLDAsLjEyKX0ubWF0LWRyYXdlci1zaWRlLm1hdC1kcmF3ZXItZW5kW19uZ2NvbnRlbnQtJUNPTVAlXXtib3JkZXItbGVmdDpzb2xpZCAxcHggcmdiYSgwLDAsMCwuMTIpO2JvcmRlci1yaWdodDpub25lfVtkaXI9cnRsXVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWRyYXdlci1zaWRlW19uZ2NvbnRlbnQtJUNPTVAlXXtib3JkZXItbGVmdDpzb2xpZCAxcHggcmdiYSgwLDAsMCwuMTIpO2JvcmRlci1yaWdodDpub25lfVtkaXI9cnRsXVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWRyYXdlci1zaWRlLm1hdC1kcmF3ZXItZW5kW19uZ2NvbnRlbnQtJUNPTVAlXXtib3JkZXItbGVmdDpub25lO2JvcmRlci1yaWdodDpzb2xpZCAxcHggcmdiYSgwLDAsMCwuMTIpfS5tYXQtZHJhd2VyLWJhY2tkcm9wLm1hdC1kcmF3ZXItc2hvd25bX25nY29udGVudC0lQ09NUCVde2JhY2tncm91bmQtY29sb3I6cmdiYSgwLDAsMCwuNil9Lm1hdC1zbGlkZS10b2dnbGUubWF0LWNoZWNrZWRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1zbGlkZS10b2dnbGUtdGh1bWJbX25nY29udGVudC0lQ09NUCVde2JhY2tncm91bmQtY29sb3I6I2ZmOTgwMH0ubWF0LXNsaWRlLXRvZ2dsZS5tYXQtY2hlY2tlZFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXNsaWRlLXRvZ2dsZS1iYXJbX25nY29udGVudC0lQ09NUCVde2JhY2tncm91bmQtY29sb3I6cmdiYSgyNTUsMTUyLDAsLjU0KX0ubWF0LXNsaWRlLXRvZ2dsZS5tYXQtY2hlY2tlZFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXJpcHBsZS1lbGVtZW50W19uZ2NvbnRlbnQtJUNPTVAlXXtiYWNrZ3JvdW5kLWNvbG9yOiNmZjk4MDB9Lm1hdC1zbGlkZS10b2dnbGUubWF0LXByaW1hcnkubWF0LWNoZWNrZWRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1zbGlkZS10b2dnbGUtdGh1bWJbX25nY29udGVudC0lQ09NUCVde2JhY2tncm91bmQtY29sb3I6I2Y1N2MwMH0ubWF0LXNsaWRlLXRvZ2dsZS5tYXQtcHJpbWFyeS5tYXQtY2hlY2tlZFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXNsaWRlLXRvZ2dsZS1iYXJbX25nY29udGVudC0lQ09NUCVde2JhY2tncm91bmQtY29sb3I6cmdiYSgyNDUsMTI0LDAsLjU0KX0ubWF0LXNsaWRlLXRvZ2dsZS5tYXQtcHJpbWFyeS5tYXQtY2hlY2tlZFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXJpcHBsZS1lbGVtZW50W19uZ2NvbnRlbnQtJUNPTVAlXXtiYWNrZ3JvdW5kLWNvbG9yOiNmNTdjMDB9Lm1hdC1zbGlkZS10b2dnbGUubWF0LXdhcm4ubWF0LWNoZWNrZWRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1zbGlkZS10b2dnbGUtdGh1bWJbX25nY29udGVudC0lQ09NUCVde2JhY2tncm91bmQtY29sb3I6I2Y0NDMzNn0ubWF0LXNsaWRlLXRvZ2dsZS5tYXQtd2Fybi5tYXQtY2hlY2tlZFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXNsaWRlLXRvZ2dsZS1iYXJbX25nY29udGVudC0lQ09NUCVde2JhY2tncm91bmQtY29sb3I6cmdiYSgyNDQsNjcsNTQsLjU0KX0ubWF0LXNsaWRlLXRvZ2dsZS5tYXQtd2Fybi5tYXQtY2hlY2tlZFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXJpcHBsZS1lbGVtZW50W19uZ2NvbnRlbnQtJUNPTVAlXXtiYWNrZ3JvdW5kLWNvbG9yOiNmNDQzMzZ9Lm1hdC1zbGlkZS10b2dnbGVbX25nY29udGVudC0lQ09NUCVdOm5vdCgubWF0LWNoZWNrZWQpICAgLm1hdC1yaXBwbGUtZWxlbWVudFtfbmdjb250ZW50LSVDT01QJV17YmFja2dyb3VuZC1jb2xvcjojMDAwfS5tYXQtc2xpZGUtdG9nZ2xlLXRodW1iW19uZ2NvbnRlbnQtJUNPTVAlXXtib3gtc2hhZG93OjBweCAycHggMXB4IC0xcHggcmdiYSgwLCAwLCAwLCAwLjIpLDBweCAxcHggMXB4IDBweCByZ2JhKDAsIDAsIDAsIDAuMTQpLDBweCAxcHggM3B4IDBweCByZ2JhKDAsIDAsIDAsIDAuMTIpO2JhY2tncm91bmQtY29sb3I6I2ZhZmFmYX0ubWF0LXNsaWRlLXRvZ2dsZS1iYXJbX25nY29udGVudC0lQ09NUCVde2JhY2tncm91bmQtY29sb3I6cmdiYSgwLDAsMCwuMzgpfS5tYXQtc2xpZGVyLXRyYWNrLWJhY2tncm91bmRbX25nY29udGVudC0lQ09NUCVde2JhY2tncm91bmQtY29sb3I6cmdiYSgwLDAsMCwuMjYpfS5tYXQtcHJpbWFyeVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXNsaWRlci10cmFjay1maWxsW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1wcmltYXJ5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtc2xpZGVyLXRodW1iW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1wcmltYXJ5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtc2xpZGVyLXRodW1iLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXtiYWNrZ3JvdW5kLWNvbG9yOiNmNTdjMDB9Lm1hdC1wcmltYXJ5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtc2xpZGVyLXRodW1iLWxhYmVsLXRleHRbX25nY29udGVudC0lQ09NUCVde2NvbG9yOiNmZmZ9Lm1hdC1wcmltYXJ5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtc2xpZGVyLWZvY3VzLXJpbmdbX25nY29udGVudC0lQ09NUCVde2JhY2tncm91bmQtY29sb3I6cmdiYSgyNDUsMTI0LDAsLjIpfS5tYXQtYWNjZW50W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtc2xpZGVyLXRyYWNrLWZpbGxbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWFjY2VudFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXNsaWRlci10aHVtYltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtYWNjZW50W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtc2xpZGVyLXRodW1iLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXtiYWNrZ3JvdW5kLWNvbG9yOiNmZjk4MDB9Lm1hdC1hY2NlbnRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1zbGlkZXItdGh1bWItbGFiZWwtdGV4dFtfbmdjb250ZW50LSVDT01QJV17Y29sb3I6I2ZmZn0ubWF0LWFjY2VudFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXNsaWRlci1mb2N1cy1yaW5nW19uZ2NvbnRlbnQtJUNPTVAlXXtiYWNrZ3JvdW5kLWNvbG9yOnJnYmEoMjU1LDE1MiwwLC4yKX0ubWF0LXdhcm5bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1zbGlkZXItdHJhY2stZmlsbFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtd2Fybltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXNsaWRlci10aHVtYltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtd2Fybltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXNsaWRlci10aHVtYi1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17YmFja2dyb3VuZC1jb2xvcjojZjQ0MzM2fS5tYXQtd2Fybltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXNsaWRlci10aHVtYi1sYWJlbC10ZXh0W19uZ2NvbnRlbnQtJUNPTVAlXXtjb2xvcjojZmZmfS5tYXQtd2Fybltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXNsaWRlci1mb2N1cy1yaW5nW19uZ2NvbnRlbnQtJUNPTVAlXXtiYWNrZ3JvdW5kLWNvbG9yOnJnYmEoMjQ0LDY3LDU0LC4yKX0ubWF0LXNsaWRlcltfbmdjb250ZW50LSVDT01QJV06aG92ZXIgICAubWF0LXNsaWRlci10cmFjay1iYWNrZ3JvdW5kW19uZ2NvbnRlbnQtJUNPTVAlXSwgLmNkay1mb2N1c2VkW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtc2xpZGVyLXRyYWNrLWJhY2tncm91bmRbX25nY29udGVudC0lQ09NUCVde2JhY2tncm91bmQtY29sb3I6cmdiYSgwLDAsMCwuMzgpfS5tYXQtc2xpZGVyLWRpc2FibGVkW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtc2xpZGVyLXRyYWNrLWJhY2tncm91bmRbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXNsaWRlci1kaXNhYmxlZFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXNsaWRlci10cmFjay1maWxsW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1zbGlkZXItZGlzYWJsZWRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1zbGlkZXItdGh1bWJbX25nY29udGVudC0lQ09NUCVde2JhY2tncm91bmQtY29sb3I6cmdiYSgwLDAsMCwuMjYpfS5tYXQtc2xpZGVyLWRpc2FibGVkW19uZ2NvbnRlbnQtJUNPTVAlXTpob3ZlciAgIC5tYXQtc2xpZGVyLXRyYWNrLWJhY2tncm91bmRbX25nY29udGVudC0lQ09NUCVde2JhY2tncm91bmQtY29sb3I6cmdiYSgwLDAsMCwuMjYpfS5tYXQtc2xpZGVyLW1pbi12YWx1ZVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXNsaWRlci1mb2N1cy1yaW5nW19uZ2NvbnRlbnQtJUNPTVAlXXtiYWNrZ3JvdW5kLWNvbG9yOnJnYmEoMCwwLDAsLjEyKX0ubWF0LXNsaWRlci1taW4tdmFsdWUubWF0LXNsaWRlci10aHVtYi1sYWJlbC1zaG93aW5nW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtc2xpZGVyLXRodW1iW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1zbGlkZXItbWluLXZhbHVlLm1hdC1zbGlkZXItdGh1bWItbGFiZWwtc2hvd2luZ1tfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXNsaWRlci10aHVtYi1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17YmFja2dyb3VuZC1jb2xvcjpyZ2JhKDAsMCwwLC44Nyl9Lm1hdC1zbGlkZXItbWluLXZhbHVlLm1hdC1zbGlkZXItdGh1bWItbGFiZWwtc2hvd2luZy5jZGstZm9jdXNlZFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXNsaWRlci10aHVtYltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtc2xpZGVyLW1pbi12YWx1ZS5tYXQtc2xpZGVyLXRodW1iLWxhYmVsLXNob3dpbmcuY2RrLWZvY3VzZWRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1zbGlkZXItdGh1bWItbGFiZWxbX25nY29udGVudC0lQ09NUCVde2JhY2tncm91bmQtY29sb3I6cmdiYSgwLDAsMCwuMjYpfS5tYXQtc2xpZGVyLW1pbi12YWx1ZVtfbmdjb250ZW50LSVDT01QJV06bm90KC5tYXQtc2xpZGVyLXRodW1iLWxhYmVsLXNob3dpbmcpICAgLm1hdC1zbGlkZXItdGh1bWJbX25nY29udGVudC0lQ09NUCVde2JvcmRlci1jb2xvcjpyZ2JhKDAsMCwwLC4yNik7YmFja2dyb3VuZC1jb2xvcjp0cmFuc3BhcmVudH0ubWF0LXNsaWRlci1taW4tdmFsdWVbX25nY29udGVudC0lQ09NUCVdOm5vdCgubWF0LXNsaWRlci10aHVtYi1sYWJlbC1zaG93aW5nKTpob3ZlciAgIC5tYXQtc2xpZGVyLXRodW1iW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1zbGlkZXItbWluLXZhbHVlW19uZ2NvbnRlbnQtJUNPTVAlXTpub3QoLm1hdC1zbGlkZXItdGh1bWItbGFiZWwtc2hvd2luZykuY2RrLWZvY3VzZWQgICAubWF0LXNsaWRlci10aHVtYltfbmdjb250ZW50LSVDT01QJV17Ym9yZGVyLWNvbG9yOnJnYmEoMCwwLDAsLjM4KX0ubWF0LXNsaWRlci1taW4tdmFsdWVbX25nY29udGVudC0lQ09NUCVdOm5vdCgubWF0LXNsaWRlci10aHVtYi1sYWJlbC1zaG93aW5nKTpob3Zlci5tYXQtc2xpZGVyLWRpc2FibGVkICAgLm1hdC1zbGlkZXItdGh1bWJbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXNsaWRlci1taW4tdmFsdWVbX25nY29udGVudC0lQ09NUCVdOm5vdCgubWF0LXNsaWRlci10aHVtYi1sYWJlbC1zaG93aW5nKS5jZGstZm9jdXNlZC5tYXQtc2xpZGVyLWRpc2FibGVkICAgLm1hdC1zbGlkZXItdGh1bWJbX25nY29udGVudC0lQ09NUCVde2JvcmRlci1jb2xvcjpyZ2JhKDAsMCwwLC4yNil9Lm1hdC1zbGlkZXItaGFzLXRpY2tzW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtc2xpZGVyLXdyYXBwZXJbX25nY29udGVudC0lQ09NUCVdOjphZnRlcntib3JkZXItY29sb3I6cmdiYSgwLDAsMCwuNyl9Lm1hdC1zbGlkZXItaG9yaXpvbnRhbFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXNsaWRlci10aWNrc1tfbmdjb250ZW50LSVDT01QJV17YmFja2dyb3VuZC1pbWFnZTpyZXBlYXRpbmctbGluZWFyLWdyYWRpZW50KHRvIHJpZ2h0LCByZ2JhKDAsIDAsIDAsIDAuNyksIHJnYmEoMCwgMCwgMCwgMC43KSAycHgsIHRyYW5zcGFyZW50IDAsIHRyYW5zcGFyZW50KTtiYWNrZ3JvdW5kLWltYWdlOi1tb3otcmVwZWF0aW5nLWxpbmVhci1ncmFkaWVudCgwLjAwMDFkZWcsIHJnYmEoMCwgMCwgMCwgMC43KSwgcmdiYSgwLCAwLCAwLCAwLjcpIDJweCwgdHJhbnNwYXJlbnQgMCwgdHJhbnNwYXJlbnQpfS5tYXQtc2xpZGVyLXZlcnRpY2FsW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtc2xpZGVyLXRpY2tzW19uZ2NvbnRlbnQtJUNPTVAlXXtiYWNrZ3JvdW5kLWltYWdlOnJlcGVhdGluZy1saW5lYXItZ3JhZGllbnQodG8gYm90dG9tLCByZ2JhKDAsIDAsIDAsIDAuNyksIHJnYmEoMCwgMCwgMCwgMC43KSAycHgsIHRyYW5zcGFyZW50IDAsIHRyYW5zcGFyZW50KX0ubWF0LXN0ZXAtaGVhZGVyLmNkay1rZXlib2FyZC1mb2N1c2VkW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1zdGVwLWhlYWRlci5jZGstcHJvZ3JhbS1mb2N1c2VkW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1zdGVwLWhlYWRlcltfbmdjb250ZW50LSVDT01QJV06aG92ZXJ7YmFja2dyb3VuZC1jb2xvcjpyZ2JhKDAsMCwwLC4wNCl9QG1lZGlhKGhvdmVyOiBub25lKXsubWF0LXN0ZXAtaGVhZGVyW19uZ2NvbnRlbnQtJUNPTVAlXTpob3ZlcntiYWNrZ3JvdW5kOm5vbmV9fS5tYXQtc3RlcC1oZWFkZXJbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1zdGVwLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1zdGVwLWhlYWRlcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXN0ZXAtb3B0aW9uYWxbX25nY29udGVudC0lQ09NUCVde2NvbG9yOiM2MTYxNjF9Lm1hdC1zdGVwLWhlYWRlcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXN0ZXAtaWNvbltfbmdjb250ZW50LSVDT01QJV17YmFja2dyb3VuZC1jb2xvcjojNjE2MTYxO2NvbG9yOiNmZmZ9Lm1hdC1zdGVwLWhlYWRlcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXN0ZXAtaWNvbi1zZWxlY3RlZFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtc3RlcC1oZWFkZXJbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1zdGVwLWljb24tc3RhdGUtZG9uZVtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtc3RlcC1oZWFkZXJbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1zdGVwLWljb24tc3RhdGUtZWRpdFtfbmdjb250ZW50LSVDT01QJV17YmFja2dyb3VuZC1jb2xvcjojZjU3YzAwO2NvbG9yOiNmZmZ9Lm1hdC1zdGVwLWhlYWRlcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXN0ZXAtaWNvbi1zdGF0ZS1lcnJvcltfbmdjb250ZW50LSVDT01QJV17YmFja2dyb3VuZC1jb2xvcjp0cmFuc3BhcmVudDtjb2xvcjojZjQ0MzM2fS5tYXQtc3RlcC1oZWFkZXJbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1zdGVwLWxhYmVsLm1hdC1zdGVwLWxhYmVsLWFjdGl2ZVtfbmdjb250ZW50LSVDT01QJV17Y29sb3I6IzIxMjEyMX0ubWF0LXN0ZXAtaGVhZGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtc3RlcC1sYWJlbC5tYXQtc3RlcC1sYWJlbC1lcnJvcltfbmdjb250ZW50LSVDT01QJV17Y29sb3I6I2Y0NDMzNn0ubWF0LXN0ZXBwZXItaG9yaXpvbnRhbFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtc3RlcHBlci12ZXJ0aWNhbFtfbmdjb250ZW50LSVDT01QJV17YmFja2dyb3VuZC1jb2xvcjojZmZmfS5tYXQtc3RlcHBlci12ZXJ0aWNhbC1saW5lW19uZ2NvbnRlbnQtJUNPTVAlXTo6YmVmb3Jle2JvcmRlci1sZWZ0LWNvbG9yOnJnYmEoMCwwLDAsLjEyKX0ubWF0LWhvcml6b250YWwtc3RlcHBlci1oZWFkZXJbX25nY29udGVudC0lQ09NUCVdOjpiZWZvcmUsIC5tYXQtaG9yaXpvbnRhbC1zdGVwcGVyLWhlYWRlcltfbmdjb250ZW50LSVDT01QJV06OmFmdGVyLCAubWF0LXN0ZXBwZXItaG9yaXpvbnRhbC1saW5lW19uZ2NvbnRlbnQtJUNPTVAlXXtib3JkZXItdG9wLWNvbG9yOnJnYmEoMCwwLDAsLjEyKX0ubWF0LWhvcml6b250YWwtc3RlcHBlci1oZWFkZXJbX25nY29udGVudC0lQ09NUCVde2hlaWdodDo3MnB4fS5tYXQtc3RlcHBlci1sYWJlbC1wb3NpdGlvbi1ib3R0b21bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1ob3Jpem9udGFsLXN0ZXBwZXItaGVhZGVyW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC12ZXJ0aWNhbC1zdGVwcGVyLWhlYWRlcltfbmdjb250ZW50LSVDT01QJV17cGFkZGluZzoyNHB4IDI0cHh9Lm1hdC1zdGVwcGVyLXZlcnRpY2FsLWxpbmVbX25nY29udGVudC0lQ09NUCVdOjpiZWZvcmV7dG9wOi0xNnB4O2JvdHRvbTotMTZweH0ubWF0LXN0ZXBwZXItbGFiZWwtcG9zaXRpb24tYm90dG9tW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaG9yaXpvbnRhbC1zdGVwcGVyLWhlYWRlcltfbmdjb250ZW50LSVDT01QJV06OmFmdGVyLCAubWF0LXN0ZXBwZXItbGFiZWwtcG9zaXRpb24tYm90dG9tW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaG9yaXpvbnRhbC1zdGVwcGVyLWhlYWRlcltfbmdjb250ZW50LSVDT01QJV06OmJlZm9yZXt0b3A6MzZweH0ubWF0LXN0ZXBwZXItbGFiZWwtcG9zaXRpb24tYm90dG9tW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtc3RlcHBlci1ob3Jpem9udGFsLWxpbmVbX25nY29udGVudC0lQ09NUCVde3RvcDozNnB4fS5tYXQtc29ydC1oZWFkZXItYXJyb3dbX25nY29udGVudC0lQ09NUCVde2NvbG9yOiM2MTYxNjF9Lm1hdC10YWItbmF2LWJhcltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdGFiLWhlYWRlcltfbmdjb250ZW50LSVDT01QJV17Ym9yZGVyLWJvdHRvbToxcHggc29saWQgcmdiYSgwLDAsMCwuMTIpfS5tYXQtdGFiLWdyb3VwLWludmVydGVkLWhlYWRlcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXRhYi1uYXYtYmFyW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10YWItZ3JvdXAtaW52ZXJ0ZWQtaGVhZGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtdGFiLWhlYWRlcltfbmdjb250ZW50LSVDT01QJV17Ym9yZGVyLXRvcDoxcHggc29saWQgcmdiYSgwLDAsMCwuMTIpO2JvcmRlci1ib3R0b206bm9uZX0ubWF0LXRhYi1sYWJlbFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdGFiLWxpbmtbX25nY29udGVudC0lQ09NUCVde2NvbG9yOiMyMTIxMjF9Lm1hdC10YWItbGFiZWwubWF0LXRhYi1kaXNhYmxlZFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdGFiLWxpbmsubWF0LXRhYi1kaXNhYmxlZFtfbmdjb250ZW50LSVDT01QJV17Y29sb3I6Izc1NzU3NX0ubWF0LXRhYi1oZWFkZXItcGFnaW5hdGlvbi1jaGV2cm9uW19uZ2NvbnRlbnQtJUNPTVAlXXtib3JkZXItY29sb3I6IzIxMjEyMX0ubWF0LXRhYi1oZWFkZXItcGFnaW5hdGlvbi1kaXNhYmxlZFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXRhYi1oZWFkZXItcGFnaW5hdGlvbi1jaGV2cm9uW19uZ2NvbnRlbnQtJUNPTVAlXXtib3JkZXItY29sb3I6Izc1NzU3NX0ubWF0LXRhYi1ncm91cFtjbGFzcyo9bWF0LWJhY2tncm91bmQtXVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXRhYi1oZWFkZXJbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXRhYi1uYXYtYmFyW2NsYXNzKj1tYXQtYmFja2dyb3VuZC1dW19uZ2NvbnRlbnQtJUNPTVAlXXtib3JkZXItYm90dG9tOm5vbmU7Ym9yZGVyLXRvcDpub25lfS5tYXQtdGFiLWdyb3VwLm1hdC1wcmltYXJ5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtdGFiLWxhYmVsLmNkay1rZXlib2FyZC1mb2N1c2VkW19uZ2NvbnRlbnQtJUNPTVAlXTpub3QoLm1hdC10YWItZGlzYWJsZWQpLCAubWF0LXRhYi1ncm91cC5tYXQtcHJpbWFyeVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXRhYi1sYWJlbC5jZGstcHJvZ3JhbS1mb2N1c2VkW19uZ2NvbnRlbnQtJUNPTVAlXTpub3QoLm1hdC10YWItZGlzYWJsZWQpLCAubWF0LXRhYi1ncm91cC5tYXQtcHJpbWFyeVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXRhYi1saW5rLmNkay1rZXlib2FyZC1mb2N1c2VkW19uZ2NvbnRlbnQtJUNPTVAlXTpub3QoLm1hdC10YWItZGlzYWJsZWQpLCAubWF0LXRhYi1ncm91cC5tYXQtcHJpbWFyeVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXRhYi1saW5rLmNkay1wcm9ncmFtLWZvY3VzZWRbX25nY29udGVudC0lQ09NUCVdOm5vdCgubWF0LXRhYi1kaXNhYmxlZCksIC5tYXQtdGFiLW5hdi1iYXIubWF0LXByaW1hcnlbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC10YWItbGFiZWwuY2RrLWtleWJvYXJkLWZvY3VzZWRbX25nY29udGVudC0lQ09NUCVdOm5vdCgubWF0LXRhYi1kaXNhYmxlZCksIC5tYXQtdGFiLW5hdi1iYXIubWF0LXByaW1hcnlbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC10YWItbGFiZWwuY2RrLXByb2dyYW0tZm9jdXNlZFtfbmdjb250ZW50LSVDT01QJV06bm90KC5tYXQtdGFiLWRpc2FibGVkKSwgLm1hdC10YWItbmF2LWJhci5tYXQtcHJpbWFyeVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXRhYi1saW5rLmNkay1rZXlib2FyZC1mb2N1c2VkW19uZ2NvbnRlbnQtJUNPTVAlXTpub3QoLm1hdC10YWItZGlzYWJsZWQpLCAubWF0LXRhYi1uYXYtYmFyLm1hdC1wcmltYXJ5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtdGFiLWxpbmsuY2RrLXByb2dyYW0tZm9jdXNlZFtfbmdjb250ZW50LSVDT01QJV06bm90KC5tYXQtdGFiLWRpc2FibGVkKXtiYWNrZ3JvdW5kLWNvbG9yOnJnYmEoMjU1LDE1MiwwLC4zKX0ubWF0LXRhYi1ncm91cC5tYXQtcHJpbWFyeVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWluay1iYXJbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXRhYi1uYXYtYmFyLm1hdC1wcmltYXJ5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaW5rLWJhcltfbmdjb250ZW50LSVDT01QJV17YmFja2dyb3VuZC1jb2xvcjojZjU3YzAwfS5tYXQtdGFiLWdyb3VwLm1hdC1wcmltYXJ5Lm1hdC1iYWNrZ3JvdW5kLXByaW1hcnlbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pbmstYmFyW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10YWItbmF2LWJhci5tYXQtcHJpbWFyeS5tYXQtYmFja2dyb3VuZC1wcmltYXJ5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaW5rLWJhcltfbmdjb250ZW50LSVDT01QJV17YmFja2dyb3VuZC1jb2xvcjojZmZmfS5tYXQtdGFiLWdyb3VwLm1hdC1hY2NlbnRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC10YWItbGFiZWwuY2RrLWtleWJvYXJkLWZvY3VzZWRbX25nY29udGVudC0lQ09NUCVdOm5vdCgubWF0LXRhYi1kaXNhYmxlZCksIC5tYXQtdGFiLWdyb3VwLm1hdC1hY2NlbnRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC10YWItbGFiZWwuY2RrLXByb2dyYW0tZm9jdXNlZFtfbmdjb250ZW50LSVDT01QJV06bm90KC5tYXQtdGFiLWRpc2FibGVkKSwgLm1hdC10YWItZ3JvdXAubWF0LWFjY2VudFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXRhYi1saW5rLmNkay1rZXlib2FyZC1mb2N1c2VkW19uZ2NvbnRlbnQtJUNPTVAlXTpub3QoLm1hdC10YWItZGlzYWJsZWQpLCAubWF0LXRhYi1ncm91cC5tYXQtYWNjZW50W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtdGFiLWxpbmsuY2RrLXByb2dyYW0tZm9jdXNlZFtfbmdjb250ZW50LSVDT01QJV06bm90KC5tYXQtdGFiLWRpc2FibGVkKSwgLm1hdC10YWItbmF2LWJhci5tYXQtYWNjZW50W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtdGFiLWxhYmVsLmNkay1rZXlib2FyZC1mb2N1c2VkW19uZ2NvbnRlbnQtJUNPTVAlXTpub3QoLm1hdC10YWItZGlzYWJsZWQpLCAubWF0LXRhYi1uYXYtYmFyLm1hdC1hY2NlbnRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC10YWItbGFiZWwuY2RrLXByb2dyYW0tZm9jdXNlZFtfbmdjb250ZW50LSVDT01QJV06bm90KC5tYXQtdGFiLWRpc2FibGVkKSwgLm1hdC10YWItbmF2LWJhci5tYXQtYWNjZW50W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtdGFiLWxpbmsuY2RrLWtleWJvYXJkLWZvY3VzZWRbX25nY29udGVudC0lQ09NUCVdOm5vdCgubWF0LXRhYi1kaXNhYmxlZCksIC5tYXQtdGFiLW5hdi1iYXIubWF0LWFjY2VudFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXRhYi1saW5rLmNkay1wcm9ncmFtLWZvY3VzZWRbX25nY29udGVudC0lQ09NUCVdOm5vdCgubWF0LXRhYi1kaXNhYmxlZCl7YmFja2dyb3VuZC1jb2xvcjpyZ2JhKDI1NSwxNTIsMCwuMyl9Lm1hdC10YWItZ3JvdXAubWF0LWFjY2VudFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWluay1iYXJbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXRhYi1uYXYtYmFyLm1hdC1hY2NlbnRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pbmstYmFyW19uZ2NvbnRlbnQtJUNPTVAlXXtiYWNrZ3JvdW5kLWNvbG9yOiNmZjk4MDB9Lm1hdC10YWItZ3JvdXAubWF0LWFjY2VudC5tYXQtYmFja2dyb3VuZC1hY2NlbnRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pbmstYmFyW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10YWItbmF2LWJhci5tYXQtYWNjZW50Lm1hdC1iYWNrZ3JvdW5kLWFjY2VudFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWluay1iYXJbX25nY29udGVudC0lQ09NUCVde2JhY2tncm91bmQtY29sb3I6I2ZmZn0ubWF0LXRhYi1ncm91cC5tYXQtd2Fybltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXRhYi1sYWJlbC5jZGsta2V5Ym9hcmQtZm9jdXNlZFtfbmdjb250ZW50LSVDT01QJV06bm90KC5tYXQtdGFiLWRpc2FibGVkKSwgLm1hdC10YWItZ3JvdXAubWF0LXdhcm5bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC10YWItbGFiZWwuY2RrLXByb2dyYW0tZm9jdXNlZFtfbmdjb250ZW50LSVDT01QJV06bm90KC5tYXQtdGFiLWRpc2FibGVkKSwgLm1hdC10YWItZ3JvdXAubWF0LXdhcm5bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC10YWItbGluay5jZGsta2V5Ym9hcmQtZm9jdXNlZFtfbmdjb250ZW50LSVDT01QJV06bm90KC5tYXQtdGFiLWRpc2FibGVkKSwgLm1hdC10YWItZ3JvdXAubWF0LXdhcm5bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC10YWItbGluay5jZGstcHJvZ3JhbS1mb2N1c2VkW19uZ2NvbnRlbnQtJUNPTVAlXTpub3QoLm1hdC10YWItZGlzYWJsZWQpLCAubWF0LXRhYi1uYXYtYmFyLm1hdC13YXJuW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtdGFiLWxhYmVsLmNkay1rZXlib2FyZC1mb2N1c2VkW19uZ2NvbnRlbnQtJUNPTVAlXTpub3QoLm1hdC10YWItZGlzYWJsZWQpLCAubWF0LXRhYi1uYXYtYmFyLm1hdC13YXJuW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtdGFiLWxhYmVsLmNkay1wcm9ncmFtLWZvY3VzZWRbX25nY29udGVudC0lQ09NUCVdOm5vdCgubWF0LXRhYi1kaXNhYmxlZCksIC5tYXQtdGFiLW5hdi1iYXIubWF0LXdhcm5bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC10YWItbGluay5jZGsta2V5Ym9hcmQtZm9jdXNlZFtfbmdjb250ZW50LSVDT01QJV06bm90KC5tYXQtdGFiLWRpc2FibGVkKSwgLm1hdC10YWItbmF2LWJhci5tYXQtd2Fybltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXRhYi1saW5rLmNkay1wcm9ncmFtLWZvY3VzZWRbX25nY29udGVudC0lQ09NUCVdOm5vdCgubWF0LXRhYi1kaXNhYmxlZCl7YmFja2dyb3VuZC1jb2xvcjpyZ2JhKDI1NSwyMDUsMjEwLC4zKX0ubWF0LXRhYi1ncm91cC5tYXQtd2Fybltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWluay1iYXJbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXRhYi1uYXYtYmFyLm1hdC13YXJuW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaW5rLWJhcltfbmdjb250ZW50LSVDT01QJV17YmFja2dyb3VuZC1jb2xvcjojZjQ0MzM2fS5tYXQtdGFiLWdyb3VwLm1hdC13YXJuLm1hdC1iYWNrZ3JvdW5kLXdhcm5bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pbmstYmFyW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10YWItbmF2LWJhci5tYXQtd2Fybi5tYXQtYmFja2dyb3VuZC13YXJuW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaW5rLWJhcltfbmdjb250ZW50LSVDT01QJV17YmFja2dyb3VuZC1jb2xvcjojZmZmfS5tYXQtdGFiLWdyb3VwLm1hdC1iYWNrZ3JvdW5kLXByaW1hcnlbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC10YWItbGFiZWwuY2RrLWtleWJvYXJkLWZvY3VzZWRbX25nY29udGVudC0lQ09NUCVdOm5vdCgubWF0LXRhYi1kaXNhYmxlZCksIC5tYXQtdGFiLWdyb3VwLm1hdC1iYWNrZ3JvdW5kLXByaW1hcnlbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC10YWItbGFiZWwuY2RrLXByb2dyYW0tZm9jdXNlZFtfbmdjb250ZW50LSVDT01QJV06bm90KC5tYXQtdGFiLWRpc2FibGVkKSwgLm1hdC10YWItZ3JvdXAubWF0LWJhY2tncm91bmQtcHJpbWFyeVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXRhYi1saW5rLmNkay1rZXlib2FyZC1mb2N1c2VkW19uZ2NvbnRlbnQtJUNPTVAlXTpub3QoLm1hdC10YWItZGlzYWJsZWQpLCAubWF0LXRhYi1ncm91cC5tYXQtYmFja2dyb3VuZC1wcmltYXJ5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtdGFiLWxpbmsuY2RrLXByb2dyYW0tZm9jdXNlZFtfbmdjb250ZW50LSVDT01QJV06bm90KC5tYXQtdGFiLWRpc2FibGVkKSwgLm1hdC10YWItbmF2LWJhci5tYXQtYmFja2dyb3VuZC1wcmltYXJ5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtdGFiLWxhYmVsLmNkay1rZXlib2FyZC1mb2N1c2VkW19uZ2NvbnRlbnQtJUNPTVAlXTpub3QoLm1hdC10YWItZGlzYWJsZWQpLCAubWF0LXRhYi1uYXYtYmFyLm1hdC1iYWNrZ3JvdW5kLXByaW1hcnlbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC10YWItbGFiZWwuY2RrLXByb2dyYW0tZm9jdXNlZFtfbmdjb250ZW50LSVDT01QJV06bm90KC5tYXQtdGFiLWRpc2FibGVkKSwgLm1hdC10YWItbmF2LWJhci5tYXQtYmFja2dyb3VuZC1wcmltYXJ5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtdGFiLWxpbmsuY2RrLWtleWJvYXJkLWZvY3VzZWRbX25nY29udGVudC0lQ09NUCVdOm5vdCgubWF0LXRhYi1kaXNhYmxlZCksIC5tYXQtdGFiLW5hdi1iYXIubWF0LWJhY2tncm91bmQtcHJpbWFyeVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXRhYi1saW5rLmNkay1wcm9ncmFtLWZvY3VzZWRbX25nY29udGVudC0lQ09NUCVdOm5vdCgubWF0LXRhYi1kaXNhYmxlZCl7YmFja2dyb3VuZC1jb2xvcjpyZ2JhKDI1NSwxNTIsMCwuMyl9Lm1hdC10YWItZ3JvdXAubWF0LWJhY2tncm91bmQtcHJpbWFyeVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXRhYi1oZWFkZXJbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXRhYi1ncm91cC5tYXQtYmFja2dyb3VuZC1wcmltYXJ5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtdGFiLWxpbmtzW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10YWItZ3JvdXAubWF0LWJhY2tncm91bmQtcHJpbWFyeVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXRhYi1oZWFkZXItcGFnaW5hdGlvbltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdGFiLW5hdi1iYXIubWF0LWJhY2tncm91bmQtcHJpbWFyeVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXRhYi1oZWFkZXJbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXRhYi1uYXYtYmFyLm1hdC1iYWNrZ3JvdW5kLXByaW1hcnlbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC10YWItbGlua3NbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXRhYi1uYXYtYmFyLm1hdC1iYWNrZ3JvdW5kLXByaW1hcnlbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC10YWItaGVhZGVyLXBhZ2luYXRpb25bX25nY29udGVudC0lQ09NUCVde2JhY2tncm91bmQtY29sb3I6I2Y1N2MwMH0ubWF0LXRhYi1ncm91cC5tYXQtYmFja2dyb3VuZC1wcmltYXJ5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtdGFiLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10YWItZ3JvdXAubWF0LWJhY2tncm91bmQtcHJpbWFyeVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXRhYi1saW5rW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10YWItbmF2LWJhci5tYXQtYmFja2dyb3VuZC1wcmltYXJ5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtdGFiLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10YWItbmF2LWJhci5tYXQtYmFja2dyb3VuZC1wcmltYXJ5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtdGFiLWxpbmtbX25nY29udGVudC0lQ09NUCVde2NvbG9yOiNmZmZ9Lm1hdC10YWItZ3JvdXAubWF0LWJhY2tncm91bmQtcHJpbWFyeVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXRhYi1sYWJlbC5tYXQtdGFiLWRpc2FibGVkW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10YWItZ3JvdXAubWF0LWJhY2tncm91bmQtcHJpbWFyeVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXRhYi1saW5rLm1hdC10YWItZGlzYWJsZWRbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXRhYi1uYXYtYmFyLm1hdC1iYWNrZ3JvdW5kLXByaW1hcnlbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC10YWItbGFiZWwubWF0LXRhYi1kaXNhYmxlZFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdGFiLW5hdi1iYXIubWF0LWJhY2tncm91bmQtcHJpbWFyeVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXRhYi1saW5rLm1hdC10YWItZGlzYWJsZWRbX25nY29udGVudC0lQ09NUCVde2NvbG9yOnJnYmEoMjU1LDI1NSwyNTUsLjQpfS5tYXQtdGFiLWdyb3VwLm1hdC1iYWNrZ3JvdW5kLXByaW1hcnlbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC10YWItaGVhZGVyLXBhZ2luYXRpb24tY2hldnJvbltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdGFiLW5hdi1iYXIubWF0LWJhY2tncm91bmQtcHJpbWFyeVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXRhYi1oZWFkZXItcGFnaW5hdGlvbi1jaGV2cm9uW19uZ2NvbnRlbnQtJUNPTVAlXXtib3JkZXItY29sb3I6I2ZmZn0ubWF0LXRhYi1ncm91cC5tYXQtYmFja2dyb3VuZC1wcmltYXJ5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtdGFiLWhlYWRlci1wYWdpbmF0aW9uLWRpc2FibGVkW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtdGFiLWhlYWRlci1wYWdpbmF0aW9uLWNoZXZyb25bX25nY29udGVudC0lQ09NUCVdLCAubWF0LXRhYi1uYXYtYmFyLm1hdC1iYWNrZ3JvdW5kLXByaW1hcnlbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC10YWItaGVhZGVyLXBhZ2luYXRpb24tZGlzYWJsZWRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC10YWItaGVhZGVyLXBhZ2luYXRpb24tY2hldnJvbltfbmdjb250ZW50LSVDT01QJV17Ym9yZGVyLWNvbG9yOnJnYmEoMjU1LDI1NSwyNTUsLjQpfS5tYXQtdGFiLWdyb3VwLm1hdC1iYWNrZ3JvdW5kLXByaW1hcnlbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1yaXBwbGUtZWxlbWVudFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdGFiLW5hdi1iYXIubWF0LWJhY2tncm91bmQtcHJpbWFyeVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXJpcHBsZS1lbGVtZW50W19uZ2NvbnRlbnQtJUNPTVAlXXtiYWNrZ3JvdW5kLWNvbG9yOnJnYmEoMjU1LDI1NSwyNTUsLjEyKX0ubWF0LXRhYi1ncm91cC5tYXQtYmFja2dyb3VuZC1hY2NlbnRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC10YWItbGFiZWwuY2RrLWtleWJvYXJkLWZvY3VzZWRbX25nY29udGVudC0lQ09NUCVdOm5vdCgubWF0LXRhYi1kaXNhYmxlZCksIC5tYXQtdGFiLWdyb3VwLm1hdC1iYWNrZ3JvdW5kLWFjY2VudFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXRhYi1sYWJlbC5jZGstcHJvZ3JhbS1mb2N1c2VkW19uZ2NvbnRlbnQtJUNPTVAlXTpub3QoLm1hdC10YWItZGlzYWJsZWQpLCAubWF0LXRhYi1ncm91cC5tYXQtYmFja2dyb3VuZC1hY2NlbnRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC10YWItbGluay5jZGsta2V5Ym9hcmQtZm9jdXNlZFtfbmdjb250ZW50LSVDT01QJV06bm90KC5tYXQtdGFiLWRpc2FibGVkKSwgLm1hdC10YWItZ3JvdXAubWF0LWJhY2tncm91bmQtYWNjZW50W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtdGFiLWxpbmsuY2RrLXByb2dyYW0tZm9jdXNlZFtfbmdjb250ZW50LSVDT01QJV06bm90KC5tYXQtdGFiLWRpc2FibGVkKSwgLm1hdC10YWItbmF2LWJhci5tYXQtYmFja2dyb3VuZC1hY2NlbnRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC10YWItbGFiZWwuY2RrLWtleWJvYXJkLWZvY3VzZWRbX25nY29udGVudC0lQ09NUCVdOm5vdCgubWF0LXRhYi1kaXNhYmxlZCksIC5tYXQtdGFiLW5hdi1iYXIubWF0LWJhY2tncm91bmQtYWNjZW50W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtdGFiLWxhYmVsLmNkay1wcm9ncmFtLWZvY3VzZWRbX25nY29udGVudC0lQ09NUCVdOm5vdCgubWF0LXRhYi1kaXNhYmxlZCksIC5tYXQtdGFiLW5hdi1iYXIubWF0LWJhY2tncm91bmQtYWNjZW50W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtdGFiLWxpbmsuY2RrLWtleWJvYXJkLWZvY3VzZWRbX25nY29udGVudC0lQ09NUCVdOm5vdCgubWF0LXRhYi1kaXNhYmxlZCksIC5tYXQtdGFiLW5hdi1iYXIubWF0LWJhY2tncm91bmQtYWNjZW50W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtdGFiLWxpbmsuY2RrLXByb2dyYW0tZm9jdXNlZFtfbmdjb250ZW50LSVDT01QJV06bm90KC5tYXQtdGFiLWRpc2FibGVkKXtiYWNrZ3JvdW5kLWNvbG9yOnJnYmEoMjU1LDE1MiwwLC4zKX0ubWF0LXRhYi1ncm91cC5tYXQtYmFja2dyb3VuZC1hY2NlbnRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC10YWItaGVhZGVyW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10YWItZ3JvdXAubWF0LWJhY2tncm91bmQtYWNjZW50W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtdGFiLWxpbmtzW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10YWItZ3JvdXAubWF0LWJhY2tncm91bmQtYWNjZW50W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtdGFiLWhlYWRlci1wYWdpbmF0aW9uW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10YWItbmF2LWJhci5tYXQtYmFja2dyb3VuZC1hY2NlbnRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC10YWItaGVhZGVyW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10YWItbmF2LWJhci5tYXQtYmFja2dyb3VuZC1hY2NlbnRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC10YWItbGlua3NbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXRhYi1uYXYtYmFyLm1hdC1iYWNrZ3JvdW5kLWFjY2VudFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXRhYi1oZWFkZXItcGFnaW5hdGlvbltfbmdjb250ZW50LSVDT01QJV17YmFja2dyb3VuZC1jb2xvcjojZmY5ODAwfS5tYXQtdGFiLWdyb3VwLm1hdC1iYWNrZ3JvdW5kLWFjY2VudFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXRhYi1sYWJlbFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdGFiLWdyb3VwLm1hdC1iYWNrZ3JvdW5kLWFjY2VudFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXRhYi1saW5rW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10YWItbmF2LWJhci5tYXQtYmFja2dyb3VuZC1hY2NlbnRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC10YWItbGFiZWxbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXRhYi1uYXYtYmFyLm1hdC1iYWNrZ3JvdW5kLWFjY2VudFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXRhYi1saW5rW19uZ2NvbnRlbnQtJUNPTVAlXXtjb2xvcjojZmZmfS5tYXQtdGFiLWdyb3VwLm1hdC1iYWNrZ3JvdW5kLWFjY2VudFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXRhYi1sYWJlbC5tYXQtdGFiLWRpc2FibGVkW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10YWItZ3JvdXAubWF0LWJhY2tncm91bmQtYWNjZW50W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtdGFiLWxpbmsubWF0LXRhYi1kaXNhYmxlZFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdGFiLW5hdi1iYXIubWF0LWJhY2tncm91bmQtYWNjZW50W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtdGFiLWxhYmVsLm1hdC10YWItZGlzYWJsZWRbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXRhYi1uYXYtYmFyLm1hdC1iYWNrZ3JvdW5kLWFjY2VudFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXRhYi1saW5rLm1hdC10YWItZGlzYWJsZWRbX25nY29udGVudC0lQ09NUCVde2NvbG9yOnJnYmEoMjU1LDI1NSwyNTUsLjQpfS5tYXQtdGFiLWdyb3VwLm1hdC1iYWNrZ3JvdW5kLWFjY2VudFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXRhYi1oZWFkZXItcGFnaW5hdGlvbi1jaGV2cm9uW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10YWItbmF2LWJhci5tYXQtYmFja2dyb3VuZC1hY2NlbnRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC10YWItaGVhZGVyLXBhZ2luYXRpb24tY2hldnJvbltfbmdjb250ZW50LSVDT01QJV17Ym9yZGVyLWNvbG9yOiNmZmZ9Lm1hdC10YWItZ3JvdXAubWF0LWJhY2tncm91bmQtYWNjZW50W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtdGFiLWhlYWRlci1wYWdpbmF0aW9uLWRpc2FibGVkW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtdGFiLWhlYWRlci1wYWdpbmF0aW9uLWNoZXZyb25bX25nY29udGVudC0lQ09NUCVdLCAubWF0LXRhYi1uYXYtYmFyLm1hdC1iYWNrZ3JvdW5kLWFjY2VudFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXRhYi1oZWFkZXItcGFnaW5hdGlvbi1kaXNhYmxlZFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXRhYi1oZWFkZXItcGFnaW5hdGlvbi1jaGV2cm9uW19uZ2NvbnRlbnQtJUNPTVAlXXtib3JkZXItY29sb3I6cmdiYSgyNTUsMjU1LDI1NSwuNCl9Lm1hdC10YWItZ3JvdXAubWF0LWJhY2tncm91bmQtYWNjZW50W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtcmlwcGxlLWVsZW1lbnRbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXRhYi1uYXYtYmFyLm1hdC1iYWNrZ3JvdW5kLWFjY2VudFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXJpcHBsZS1lbGVtZW50W19uZ2NvbnRlbnQtJUNPTVAlXXtiYWNrZ3JvdW5kLWNvbG9yOnJnYmEoMjU1LDI1NSwyNTUsLjEyKX0ubWF0LXRhYi1ncm91cC5tYXQtYmFja2dyb3VuZC13YXJuW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtdGFiLWxhYmVsLmNkay1rZXlib2FyZC1mb2N1c2VkW19uZ2NvbnRlbnQtJUNPTVAlXTpub3QoLm1hdC10YWItZGlzYWJsZWQpLCAubWF0LXRhYi1ncm91cC5tYXQtYmFja2dyb3VuZC13YXJuW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtdGFiLWxhYmVsLmNkay1wcm9ncmFtLWZvY3VzZWRbX25nY29udGVudC0lQ09NUCVdOm5vdCgubWF0LXRhYi1kaXNhYmxlZCksIC5tYXQtdGFiLWdyb3VwLm1hdC1iYWNrZ3JvdW5kLXdhcm5bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC10YWItbGluay5jZGsta2V5Ym9hcmQtZm9jdXNlZFtfbmdjb250ZW50LSVDT01QJV06bm90KC5tYXQtdGFiLWRpc2FibGVkKSwgLm1hdC10YWItZ3JvdXAubWF0LWJhY2tncm91bmQtd2Fybltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXRhYi1saW5rLmNkay1wcm9ncmFtLWZvY3VzZWRbX25nY29udGVudC0lQ09NUCVdOm5vdCgubWF0LXRhYi1kaXNhYmxlZCksIC5tYXQtdGFiLW5hdi1iYXIubWF0LWJhY2tncm91bmQtd2Fybltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXRhYi1sYWJlbC5jZGsta2V5Ym9hcmQtZm9jdXNlZFtfbmdjb250ZW50LSVDT01QJV06bm90KC5tYXQtdGFiLWRpc2FibGVkKSwgLm1hdC10YWItbmF2LWJhci5tYXQtYmFja2dyb3VuZC13YXJuW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtdGFiLWxhYmVsLmNkay1wcm9ncmFtLWZvY3VzZWRbX25nY29udGVudC0lQ09NUCVdOm5vdCgubWF0LXRhYi1kaXNhYmxlZCksIC5tYXQtdGFiLW5hdi1iYXIubWF0LWJhY2tncm91bmQtd2Fybltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXRhYi1saW5rLmNkay1rZXlib2FyZC1mb2N1c2VkW19uZ2NvbnRlbnQtJUNPTVAlXTpub3QoLm1hdC10YWItZGlzYWJsZWQpLCAubWF0LXRhYi1uYXYtYmFyLm1hdC1iYWNrZ3JvdW5kLXdhcm5bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC10YWItbGluay5jZGstcHJvZ3JhbS1mb2N1c2VkW19uZ2NvbnRlbnQtJUNPTVAlXTpub3QoLm1hdC10YWItZGlzYWJsZWQpe2JhY2tncm91bmQtY29sb3I6cmdiYSgyNTUsMjA1LDIxMCwuMyl9Lm1hdC10YWItZ3JvdXAubWF0LWJhY2tncm91bmQtd2Fybltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXRhYi1oZWFkZXJbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXRhYi1ncm91cC5tYXQtYmFja2dyb3VuZC13YXJuW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtdGFiLWxpbmtzW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10YWItZ3JvdXAubWF0LWJhY2tncm91bmQtd2Fybltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXRhYi1oZWFkZXItcGFnaW5hdGlvbltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdGFiLW5hdi1iYXIubWF0LWJhY2tncm91bmQtd2Fybltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXRhYi1oZWFkZXJbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXRhYi1uYXYtYmFyLm1hdC1iYWNrZ3JvdW5kLXdhcm5bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC10YWItbGlua3NbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXRhYi1uYXYtYmFyLm1hdC1iYWNrZ3JvdW5kLXdhcm5bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC10YWItaGVhZGVyLXBhZ2luYXRpb25bX25nY29udGVudC0lQ09NUCVde2JhY2tncm91bmQtY29sb3I6I2Y0NDMzNn0ubWF0LXRhYi1ncm91cC5tYXQtYmFja2dyb3VuZC13YXJuW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtdGFiLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10YWItZ3JvdXAubWF0LWJhY2tncm91bmQtd2Fybltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXRhYi1saW5rW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10YWItbmF2LWJhci5tYXQtYmFja2dyb3VuZC13YXJuW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtdGFiLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10YWItbmF2LWJhci5tYXQtYmFja2dyb3VuZC13YXJuW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtdGFiLWxpbmtbX25nY29udGVudC0lQ09NUCVde2NvbG9yOiNmZmZ9Lm1hdC10YWItZ3JvdXAubWF0LWJhY2tncm91bmQtd2Fybltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXRhYi1sYWJlbC5tYXQtdGFiLWRpc2FibGVkW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10YWItZ3JvdXAubWF0LWJhY2tncm91bmQtd2Fybltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXRhYi1saW5rLm1hdC10YWItZGlzYWJsZWRbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXRhYi1uYXYtYmFyLm1hdC1iYWNrZ3JvdW5kLXdhcm5bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC10YWItbGFiZWwubWF0LXRhYi1kaXNhYmxlZFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdGFiLW5hdi1iYXIubWF0LWJhY2tncm91bmQtd2Fybltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXRhYi1saW5rLm1hdC10YWItZGlzYWJsZWRbX25nY29udGVudC0lQ09NUCVde2NvbG9yOnJnYmEoMjU1LDI1NSwyNTUsLjQpfS5tYXQtdGFiLWdyb3VwLm1hdC1iYWNrZ3JvdW5kLXdhcm5bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC10YWItaGVhZGVyLXBhZ2luYXRpb24tY2hldnJvbltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdGFiLW5hdi1iYXIubWF0LWJhY2tncm91bmQtd2Fybltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXRhYi1oZWFkZXItcGFnaW5hdGlvbi1jaGV2cm9uW19uZ2NvbnRlbnQtJUNPTVAlXXtib3JkZXItY29sb3I6I2ZmZn0ubWF0LXRhYi1ncm91cC5tYXQtYmFja2dyb3VuZC13YXJuW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtdGFiLWhlYWRlci1wYWdpbmF0aW9uLWRpc2FibGVkW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtdGFiLWhlYWRlci1wYWdpbmF0aW9uLWNoZXZyb25bX25nY29udGVudC0lQ09NUCVdLCAubWF0LXRhYi1uYXYtYmFyLm1hdC1iYWNrZ3JvdW5kLXdhcm5bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC10YWItaGVhZGVyLXBhZ2luYXRpb24tZGlzYWJsZWRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC10YWItaGVhZGVyLXBhZ2luYXRpb24tY2hldnJvbltfbmdjb250ZW50LSVDT01QJV17Ym9yZGVyLWNvbG9yOnJnYmEoMjU1LDI1NSwyNTUsLjQpfS5tYXQtdGFiLWdyb3VwLm1hdC1iYWNrZ3JvdW5kLXdhcm5bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1yaXBwbGUtZWxlbWVudFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdGFiLW5hdi1iYXIubWF0LWJhY2tncm91bmQtd2Fybltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXJpcHBsZS1lbGVtZW50W19uZ2NvbnRlbnQtJUNPTVAlXXtiYWNrZ3JvdW5kLWNvbG9yOnJnYmEoMjU1LDI1NSwyNTUsLjEyKX0ubWF0LXRvb2xiYXJbX25nY29udGVudC0lQ09NUCVde2JhY2tncm91bmQ6I2Y1ZjVmNTtjb2xvcjojMjEyMTIxfS5tYXQtdG9vbGJhci5tYXQtcHJpbWFyeVtfbmdjb250ZW50LSVDT01QJV17YmFja2dyb3VuZDojZjU3YzAwO2NvbG9yOiNmZmZ9Lm1hdC10b29sYmFyLm1hdC1hY2NlbnRbX25nY29udGVudC0lQ09NUCVde2JhY2tncm91bmQ6I2ZmOTgwMDtjb2xvcjojZmZmfS5tYXQtdG9vbGJhci5tYXQtd2Fybltfbmdjb250ZW50LSVDT01QJV17YmFja2dyb3VuZDojZjQ0MzM2O2NvbG9yOiNmZmZ9Lm1hdC10b29sYmFyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC11bmRlcmxpbmVbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXRvb2xiYXJbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLXJpcHBsZVtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdG9vbGJhcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvY3VzZWRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLXJpcHBsZVtfbmdjb250ZW50LSVDT01QJV17YmFja2dyb3VuZC1jb2xvcjpjdXJyZW50Q29sb3J9Lm1hdC10b29sYmFyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdG9vbGJhcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvY3VzZWRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10b29sYmFyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtc2VsZWN0LXZhbHVlW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10b29sYmFyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtc2VsZWN0LWFycm93W19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10b29sYmFyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC5tYXQtZm9jdXNlZFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXNlbGVjdC1hcnJvd1tfbmdjb250ZW50LSVDT01QJV17Y29sb3I6aW5oZXJpdH0ubWF0LXRvb2xiYXJbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pbnB1dC1lbGVtZW50W19uZ2NvbnRlbnQtJUNPTVAlXXtjYXJldC1jb2xvcjpjdXJyZW50Q29sb3J9Lm1hdC10b29sYmFyLW11bHRpcGxlLXJvd3NbX25nY29udGVudC0lQ09NUCVde21pbi1oZWlnaHQ6NjRweH0ubWF0LXRvb2xiYXItcm93W19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10b29sYmFyLXNpbmdsZS1yb3dbX25nY29udGVudC0lQ09NUCVde2hlaWdodDo2NHB4fUBtZWRpYShtYXgtd2lkdGg6IDU5OXB4KXsubWF0LXRvb2xiYXItbXVsdGlwbGUtcm93c1tfbmdjb250ZW50LSVDT01QJV17bWluLWhlaWdodDo1NnB4fS5tYXQtdG9vbGJhci1yb3dbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXRvb2xiYXItc2luZ2xlLXJvd1tfbmdjb250ZW50LSVDT01QJV17aGVpZ2h0OjU2cHh9fS5tYXQtdG9vbHRpcFtfbmdjb250ZW50LSVDT01QJV17YmFja2dyb3VuZDpyZ2JhKDk3LDk3LDk3LC45KX0ubWF0LXRyZWVbX25nY29udGVudC0lQ09NUCVde2JhY2tncm91bmQ6I2ZmZn0ubWF0LXRyZWUtbm9kZVtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtbmVzdGVkLXRyZWUtbm9kZVtfbmdjb250ZW50LSVDT01QJV17Y29sb3I6IzIxMjEyMX0ubWF0LXRyZWUtbm9kZVtfbmdjb250ZW50LSVDT01QJV17bWluLWhlaWdodDo0OHB4fS5tYXQtc25hY2stYmFyLWNvbnRhaW5lcltfbmdjb250ZW50LSVDT01QJV17Y29sb3I6cmdiYSgyNTUsMjU1LDI1NSwuNyk7YmFja2dyb3VuZDojMzIzMjMyO2JveC1zaGFkb3c6MHB4IDNweCA1cHggLTFweCByZ2JhKDAsIDAsIDAsIDAuMiksMHB4IDZweCAxMHB4IDBweCByZ2JhKDAsIDAsIDAsIDAuMTQpLDBweCAxcHggMThweCAwcHggcmdiYSgwLCAwLCAwLCAwLjEyKX0ubWF0LXNpbXBsZS1zbmFja2Jhci1hY3Rpb25bX25nY29udGVudC0lQ09NUCVde2NvbG9yOiNmZjk4MDB9W19uZ2hvc3QtJUNPTVAlXXtiYWNrZ3JvdW5kLWNvbG9yOiNmZmZ9J10sY2hhbmdlRGV0ZWN0aW9uOjB9KTtjb25zdCBmbXQ9ZnVuY3Rpb24oKXtyZXR1cm57aXNCb3R0b21Db250cm9sOiExfX0saG10PWZ1bmN0aW9uKCl7cmV0dXJue2lzQm90dG9tQ29udHJvbDohMH19O2NsYXNzIF9tdHtjb25zdHJ1Y3Rvcigpe3RoaXMuUGx1Z2luVHlwZT1nVCx0aGlzLnBhZ2VJbmRleENoYW5nZWQ9bmV3IEVmLHRoaXMuZ3JvdXBFeHBhbnNpb25Ub2dnbGVkPW5ldyBFZn1zaG93RXhwYW5kKHQpe3JldHVybiEhdCYmdGhpcy5pc0dyb3VwRXhwYW5kYWJsZX1zaG93UGFnaW5hdGlvbklucHV0KHQpe3JldHVybiB0fXRyYWNrQnlDYXJkcyh0LG4pe3JldHVybiBuLmNhcmRJZH1vblBhZ2luYXRpb25JbnB1dENoYW5nZSh0KXtjb25zdCBuPXQudGFyZ2V0O2lmKCJpbnB1dCI9PT10LnR5cGUmJiIiPT09bi52YWx1ZSlyZXR1cm47Y29uc3QgZT1OdW1iZXIobi52YWx1ZSktMSxhPU1hdGgubWluKE1hdGgubWF4KDAsZSksdGhpcy5udW1QYWdlcy0xKTtuLnZhbHVlIT09U3RyaW5nKGErMSkmJihuLnZhbHVlPVN0cmluZyhhKzEpKSx0aGlzLnBhZ2VJbmRleENoYW5nZWQuZW1pdChhKX19X210Lsm1ZmFjPWZ1bmN0aW9uIHQobil7cmV0dXJuIG5ldyhufHxfbXQpfSxfbXQuybVjbXA9X28oe3R5cGU6X210LHNlbGVjdG9yczpbWyJtZXRyaWNzLWNhcmQtZ3JpZC1jb21wb25lbnQiXV0saW5wdXRzOntpc0dyb3VwRXhwYW5kYWJsZToiaXNHcm91cEV4cGFuZGFibGUiLGlzR3JvdXBFeHBhbmRlZDoiaXNHcm91cEV4cGFuZGVkIixncm91cE5hbWU6Imdyb3VwTmFtZSIscGFnZUluZGV4OiJwYWdlSW5kZXgiLG51bVBhZ2VzOiJudW1QYWdlcyIsY2FyZElkc1dpdGhNZXRhZGF0YToiY2FyZElkc1dpdGhNZXRhZGF0YSIsY2FyZE9ic2VydmVyOiJjYXJkT2JzZXJ2ZXIiLHNob3dQYWdpbmF0aW9uQ29udHJvbHM6InNob3dQYWdpbmF0aW9uQ29udHJvbHMifSxvdXRwdXRzOntwYWdlSW5kZXhDaGFuZ2VkOiJwYWdlSW5kZXhDaGFuZ2VkIixncm91cEV4cGFuc2lvblRvZ2dsZWQ6Imdyb3VwRXhwYW5zaW9uVG9nZ2xlZCJ9LGRlY2xzOjYsdmFyczo4LGNvbnN0czpmdW5jdGlvbigpe3JldHVybltbNCwibmdUZW1wbGF0ZU91dGxldCIsIm5nVGVtcGxhdGVPdXRsZXRDb250ZXh0Il0sWzEsImNhcmQtZ3JpZCJdLFszLCJjYXJkSWQiLCJncm91cE5hbWUiLCJwbHVnaW5UeXBlIiwiY2FyZE9ic2VydmVyIiwiY2FyZExhenlMb2FkZXIiLDQsIm5nRm9yIiwibmdGb3JPZiIsIm5nRm9yVHJhY2tCeSJdLFsiZ3JvdXBDb250cm9scyIsIiJdLFszLCJjYXJkSWQiLCJncm91cE5hbWUiLCJwbHVnaW5UeXBlIiwiY2FyZE9ic2VydmVyIiwiY2FyZExhenlMb2FkZXIiXSxbImNsYXNzIiwiZ3JvdXAtY29udHJvbHMiLDQsIm5nSWYiXSxbMSwiZ3JvdXAtY29udHJvbHMiXSxbMSwicHJldi1jb250YWluZXIiXSxbImNsYXNzIiwicHJldiBwYWdpbmF0aW9uLWJ1dHRvbiIsIm1hdC1idXR0b24iLCIiLDMsImRpc2FibGVkIiwiY2xpY2siLDQsIm5nSWYiLDYsImFyaWEtbGFiZWwiXSxbMSwiZXhwYW5kLWNvbnRhaW5lciJdLFsiY2xhc3MiLCJleHBhbmQtZ3JvdXAtYnV0dG9uIiwibWF0LWljb24tYnV0dG9uIiwiIiwzLCJjbGljayIsNCwibmdJZiIsNiwiYXJpYS1sYWJlbCJdLFsxLCJpbnB1dC1hbmQtbmV4dC1jb250YWluZXIiXSxbNCwibmdJZiJdLFsibWF0LWJ1dHRvbiIsIiIsMSwicHJldiIsInBhZ2luYXRpb24tYnV0dG9uIiwzLCJkaXNhYmxlZCIsImNsaWNrIiw2LCJhcmlhLWxhYmVsIl0sWyJhcmlhLWxhYmVsIiwidW5kZWZpbmVkIiE9dHlwZW9mIG5nSTE4bkNsb3N1cmVNb2RlJiZuZ0kxOG5DbG9zdXJlTW9kZT9nb29nLmdldE1zZygiUHJldmlvdXMgcGFnZSIpOiRsb2NhbGl6ZWA6QSBidXR0b24gdGhhdCBzZXRzIGEgZ3JvdXAgdG8gdGhlIHByZXZpb3VzIHBhZ2Uu4pCfNTc1ZTc4MmZkMjdmMmVlNzBhMDM0YTc3NWVmZTlhZDE2MjQ3MjI1MOKQnzM2Mjk5NjA1NDQ4NzUzNjAwNDY6UHJldmlvdXMgcGFnZWBdLFsibWF0LWljb24tYnV0dG9uIiwiIiwxLCJleHBhbmQtZ3JvdXAtYnV0dG9uIiwzLCJjbGljayIsNiwiYXJpYS1sYWJlbCJdLFsiYXJpYS1sYWJlbCIsInVuZGVmaW5lZCIhPXR5cGVvZiBuZ0kxOG5DbG9zdXJlTW9kZSYmbmdJMThuQ2xvc3VyZU1vZGU/Z29vZy5nZXRNc2coIkV4cGFuZCBncm91cCIpOiRsb2NhbGl6ZWA6QSBidXR0b24gdGhhdCBhbGxvd3MgdXNlciB0byBleHBhbmQgYSB0YWcgZ3JvdXAu4pCfZmZhYTExNDcxYjg3OGE2ZGZmZTJlNjhjNmYzNzA2NGE5ZTA3NDg1M+KQnzUzODYwNTQzMjUyNzQ3NzkyNTg6RXhwYW5kIGdyb3VwYF0sWyJzdmdJY29uIiwiZXhwYW5kX2xlc3NfMjRweCIsNCwibmdJZiIsIm5nSWZFbHNlIl0sWyJleHBhbmRNb3JlIiwiIl0sWyJzdmdJY29uIiwiZXhwYW5kX2xlc3NfMjRweCJdLFsic3ZnSWNvbiIsImV4cGFuZF9tb3JlXzI0cHgiXSxbImNsYXNzIiwicGFnaW5hdGlvbi1pbnB1dCIsNCwibmdJZiJdLFsibWF0LWJ1dHRvbiIsIiIsMSwibmV4dCIsInBhZ2luYXRpb24tYnV0dG9uIiwzLCJkaXNhYmxlZCIsImNsaWNrIiw2LCJhcmlhLWxhYmVsIl0sWyJhcmlhLWxhYmVsIiwidW5kZWZpbmVkIiE9dHlwZW9mIG5nSTE4bkNsb3N1cmVNb2RlJiZuZ0kxOG5DbG9zdXJlTW9kZT9nb29nLmdldE1zZygiTmV4dCBwYWdlIik6JGxvY2FsaXplYDpBIGJ1dHRvbiB0aGF0IHNldHMgYSBncm91cCB0byB0aGUgbmV4dCBwYWdlLuKQn2NlM2NlZmIxY2QwMDk5YWE1MDAzZGRhMTZlYzllYjIxZmQ4YmE3ODnikJ8zMzM3MzAxNjk0MjEwMjg3NTk1Ok5leHQgcGFnZWBdLFsxLCJwYWdpbmF0aW9uLWlucHV0Il0sWyJ0eXBlIiwibnVtYmVyIiwibWluIiwiMSIsMywidmFsdWUiLCJtYXgiLCJpbnB1dCIsImNoYW5nZSJdXX0sdGVtcGxhdGU6ZnVuY3Rpb24gdChuLGUpe2lmKDEmbiYmKFlnKDAscm10LDEsMCwibmctY29udGFpbmVyIiwwKSxLZygxLCJkaXYiLDEpLFlnKDIsaW10LDEsNSwiY2FyZC12aWV3IiwyKSwkZygpLFlnKDMsY210LDEsMCwibmctY29udGFpbmVyIiwwKSxZZyg0LHVtdCwxLDEsIm5nLXRlbXBsYXRlIixudWxsLDMsS2YpKSwyJm4pe2NvbnN0IHQ9cWcoNSk7SmcoIm5nVGVtcGxhdGVPdXRsZXQiLHQpKCJuZ1RlbXBsYXRlT3V0bGV0Q29udGV4dCIsYmYoNixmbXQpKSx3cygyKSxKZygibmdGb3JPZiIsZS5jYXJkSWRzV2l0aE1ldGFkYXRhKSgibmdGb3JUcmFja0J5IixlLnRyYWNrQnlDYXJkcyksd3MoMSksSmcoIm5nVGVtcGxhdGVPdXRsZXQiLHQpKCJuZ1RlbXBsYXRlT3V0bGV0Q29udGV4dCIsYmYoNyxobXQpKX19LGRpcmVjdGl2ZXM6W3RPLGpNLG9tdCxYSyxXTSxlQSxCQl0sc3R5bGVzOlsnLm1hdC1iYWRnZS1jb250ZW50W19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXdlaWdodDo2MDA7Zm9udC1zaXplOjEycHg7Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmfS5tYXQtYmFkZ2Utc21hbGxbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1iYWRnZS1jb250ZW50W19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6OXB4fS5tYXQtYmFkZ2UtbGFyZ2VbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1iYWRnZS1jb250ZW50W19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MjRweH0ubWF0LWgxW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1oZWFkbGluZVtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdHlwb2dyYXBoeVtfbmdjb250ZW50LSVDT01QJV0gICBoMVtfbmdjb250ZW50LSVDT01QJV17Zm9udDo0MDAgMjRweC8zMnB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtsZXR0ZXItc3BhY2luZzpub3JtYWw7bWFyZ2luOjAgMCAxNnB4fS5tYXQtaDJbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXRpdGxlW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10eXBvZ3JhcGh5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIGgyW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250OjUwMCAyMHB4LzMycHggUm9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2xldHRlci1zcGFjaW5nOm5vcm1hbDttYXJnaW46MCAwIDE2cHh9Lm1hdC1oM1tfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtc3ViaGVhZGluZy0yW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10eXBvZ3JhcGh5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIGgzW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250OjQwMCAxNnB4LzI4cHggUm9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2xldHRlci1zcGFjaW5nOm5vcm1hbDttYXJnaW46MCAwIDE2cHh9Lm1hdC1oNFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtc3ViaGVhZGluZy0xW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10eXBvZ3JhcGh5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIGg0W19uZ2NvbnRlbnQtJUNPTVAlXXtmb250OjQwMCAxNXB4LzI0cHggUm9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2xldHRlci1zcGFjaW5nOm5vcm1hbDttYXJnaW46MCAwIDE2cHh9Lm1hdC1oNVtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdHlwb2dyYXBoeVtfbmdjb250ZW50LSVDT01QJV0gICBoNVtfbmdjb250ZW50LSVDT01QJV17Zm9udDo0MDAgY2FsYygxNHB4ICogMC44MykvMjBweCBSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7bWFyZ2luOjAgMCAxMnB4fS5tYXQtaDZbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXR5cG9ncmFwaHlbX25nY29udGVudC0lQ09NUCVdICAgaDZbX25nY29udGVudC0lQ09NUCVde2ZvbnQ6NDAwIGNhbGMoMTRweCAqIDAuNjcpLzIwcHggUm9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO21hcmdpbjowIDAgMTJweH0ubWF0LWJvZHktc3Ryb25nW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1ib2R5LTJbX25nY29udGVudC0lQ09NUCVde2ZvbnQ6NTAwIDE0cHgvMjRweCBSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7bGV0dGVyLXNwYWNpbmc6bm9ybWFsfS5tYXQtYm9keVtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtYm9keS0xW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10eXBvZ3JhcGh5W19uZ2NvbnRlbnQtJUNPTVAlXXtmb250OjQwMCAxNHB4LzIwcHggUm9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2xldHRlci1zcGFjaW5nOm5vcm1hbH0ubWF0LWJvZHlbX25nY29udGVudC0lQ09NUCVdICAgcFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtYm9keS0xW19uZ2NvbnRlbnQtJUNPTVAlXSAgIHBbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXR5cG9ncmFwaHlbX25nY29udGVudC0lQ09NUCVdICAgcFtfbmdjb250ZW50LSVDT01QJV17bWFyZ2luOjAgMCAxMnB4fS5tYXQtc21hbGxbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWNhcHRpb25bX25nY29udGVudC0lQ09NUCVde2ZvbnQ6NDAwIDEycHgvMjBweCBSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7bGV0dGVyLXNwYWNpbmc6bm9ybWFsfS5tYXQtZGlzcGxheS00W19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10eXBvZ3JhcGh5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZGlzcGxheS00W19uZ2NvbnRlbnQtJUNPTVAlXXtmb250OjMwMCAxMTJweC8xMTJweCBSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7bGV0dGVyLXNwYWNpbmc6LTAuMDVlbTttYXJnaW46MCAwIDU2cHh9Lm1hdC1kaXNwbGF5LTNbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXR5cG9ncmFwaHlbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1kaXNwbGF5LTNbX25nY29udGVudC0lQ09NUCVde2ZvbnQ6NDAwIDU2cHgvNTZweCBSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7bGV0dGVyLXNwYWNpbmc6LTAuMDJlbTttYXJnaW46MCAwIDY0cHh9Lm1hdC1kaXNwbGF5LTJbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXR5cG9ncmFwaHlbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1kaXNwbGF5LTJbX25nY29udGVudC0lQ09NUCVde2ZvbnQ6NDAwIDQ1cHgvNDhweCBSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7bGV0dGVyLXNwYWNpbmc6LTAuMDA1ZW07bWFyZ2luOjAgMCA2NHB4fS5tYXQtZGlzcGxheS0xW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10eXBvZ3JhcGh5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZGlzcGxheS0xW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250OjQwMCAzNHB4LzQwcHggUm9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2xldHRlci1zcGFjaW5nOm5vcm1hbDttYXJnaW46MCAwIDY0cHh9Lm1hdC1ib3R0b20tc2hlZXQtY29udGFpbmVyW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250OjQwMCAxNHB4LzIwcHggUm9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2xldHRlci1zcGFjaW5nOm5vcm1hbH0ubWF0LWJ1dHRvbltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtcmFpc2VkLWJ1dHRvbltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtaWNvbi1idXR0b25bX25nY29udGVudC0lQ09NUCVdLCAubWF0LXN0cm9rZWQtYnV0dG9uW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1mbGF0LWJ1dHRvbltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtZmFiW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1taW5pLWZhYltfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2ZvbnQtc2l6ZToxNHB4O2ZvbnQtd2VpZ2h0OjUwMH0ubWF0LWJ1dHRvbi10b2dnbGVbX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZn0ubWF0LWNhcmRbX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZn0ubWF0LWNhcmQtdGl0bGVbX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToyNHB4O2ZvbnQtd2VpZ2h0OjUwMH0ubWF0LWNhcmQtaGVhZGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtY2FyZC10aXRsZVtfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjIwcHh9Lm1hdC1jYXJkLXN1YnRpdGxlW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1jYXJkLWNvbnRlbnRbX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToxNHB4fS5tYXQtY2hlY2tib3hbX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZn0ubWF0LWNoZWNrYm94LWxheW91dFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWNoZWNrYm94LWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXtsaW5lLWhlaWdodDoyNHB4fS5tYXQtY2hpcFtfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjE0cHg7Zm9udC13ZWlnaHQ6NTAwfS5tYXQtY2hpcFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWNoaXAtdHJhaWxpbmctaWNvbi5tYXQtaWNvbltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtY2hpcFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWNoaXAtcmVtb3ZlLm1hdC1pY29uW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MThweH0ubWF0LXRhYmxlW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWZ9Lm1hdC1oZWFkZXItY2VsbFtfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjEycHg7Zm9udC13ZWlnaHQ6NTAwfS5tYXQtY2VsbFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtZm9vdGVyLWNlbGxbX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToxNHB4fS5tYXQtY2FsZW5kYXJbX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZn0ubWF0LWNhbGVuZGFyLWJvZHlbX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToxM3B4fS5tYXQtY2FsZW5kYXItYm9keS1sYWJlbFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtY2FsZW5kYXItcGVyaW9kLWJ1dHRvbltfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjE0cHg7Zm9udC13ZWlnaHQ6NTAwfS5tYXQtY2FsZW5kYXItdGFibGUtaGVhZGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIHRoW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MTFweDtmb250LXdlaWdodDo0MDB9Lm1hdC1kaWFsb2ctdGl0bGVbX25nY29udGVudC0lQ09NUCVde2ZvbnQ6NTAwIDIwcHgvMzJweCBSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7bGV0dGVyLXNwYWNpbmc6bm9ybWFsfS5tYXQtZXhwYW5zaW9uLXBhbmVsLWhlYWRlcltfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2ZvbnQtc2l6ZToxNXB4O2ZvbnQtd2VpZ2h0OjQwMH0ubWF0LWV4cGFuc2lvbi1wYW5lbC1jb250ZW50W19uZ2NvbnRlbnQtJUNPTVAlXXtmb250OjQwMCAxNHB4LzIwcHggUm9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2xldHRlci1zcGFjaW5nOm5vcm1hbH0ubWF0LWZvcm0tZmllbGRbX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZTppbmhlcml0O2ZvbnQtd2VpZ2h0OjQwMDtsaW5lLWhlaWdodDoxLjEyNTtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7bGV0dGVyLXNwYWNpbmc6bm9ybWFsfS5tYXQtZm9ybS1maWVsZC13cmFwcGVyW19uZ2NvbnRlbnQtJUNPTVAlXXtwYWRkaW5nLWJvdHRvbToxLjM0Mzc1ZW19Lm1hdC1mb3JtLWZpZWxkLXByZWZpeFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWljb25bX25nY29udGVudC0lQ09NUCVdLCAubWF0LWZvcm0tZmllbGQtc3VmZml4W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaWNvbltfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjE1MCU7bGluZS1oZWlnaHQ6MS4xMjV9Lm1hdC1mb3JtLWZpZWxkLXByZWZpeFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWljb24tYnV0dG9uW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1mb3JtLWZpZWxkLXN1ZmZpeFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWljb24tYnV0dG9uW19uZ2NvbnRlbnQtJUNPTVAlXXtoZWlnaHQ6MS41ZW07d2lkdGg6MS41ZW19Lm1hdC1mb3JtLWZpZWxkLXByZWZpeFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWljb24tYnV0dG9uW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaWNvbltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtZm9ybS1maWVsZC1zdWZmaXhbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pY29uLWJ1dHRvbltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWljb25bX25nY29udGVudC0lQ09NUCVde2hlaWdodDoxLjEyNWVtO2xpbmUtaGVpZ2h0OjEuMTI1fS5tYXQtZm9ybS1maWVsZC1pbmZpeFtfbmdjb250ZW50LSVDT01QJV17cGFkZGluZzouNWVtIDA7Ym9yZGVyLXRvcDouODQzNzVlbSBzb2xpZCB0cmFuc3BhcmVudH0ubWF0LWZvcm0tZmllbGQtY2FuLWZsb2F0Lm1hdC1mb3JtLWZpZWxkLXNob3VsZC1mbG9hdFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWZvcm0tZmllbGQtY2FuLWZsb2F0W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaW5wdXQtc2VydmVyW19uZ2NvbnRlbnQtJUNPTVAlXTpmb2N1cyArIC5tYXQtZm9ybS1maWVsZC1sYWJlbC13cmFwcGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17dHJhbnNmb3JtOnRyYW5zbGF0ZVkoLTEuMzQzNzVlbSkgc2NhbGUoMC43NSk7d2lkdGg6MTMzLjMzMzMzMzMzMzMlfS5tYXQtZm9ybS1maWVsZC1jYW4tZmxvYXRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pbnB1dC1zZXJ2ZXJbbGFiZWxdW19uZ2NvbnRlbnQtJUNPTVAlXTpub3QoOmxhYmVsLXNob3duKSArIC5tYXQtZm9ybS1maWVsZC1sYWJlbC13cmFwcGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17dHJhbnNmb3JtOnRyYW5zbGF0ZVkoLTEuMzQzNzRlbSkgc2NhbGUoMC43NSk7d2lkdGg6MTMzLjMzMzM0MzMzMzMlfS5tYXQtZm9ybS1maWVsZC1sYWJlbC13cmFwcGVyW19uZ2NvbnRlbnQtJUNPTVAlXXt0b3A6LTAuODQzNzVlbTtwYWRkaW5nLXRvcDouODQzNzVlbX0ubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVde3RvcDoxLjM0Mzc1ZW19Lm1hdC1mb3JtLWZpZWxkLXVuZGVybGluZVtfbmdjb250ZW50LSVDT01QJV17Ym90dG9tOjEuMzQzNzVlbX0ubWF0LWZvcm0tZmllbGQtc3Vic2NyaXB0LXdyYXBwZXJbX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZTo3NSU7bWFyZ2luLXRvcDouNjY2NjY2NjY2N2VtO3RvcDpjYWxjKDEwMCUgLSAxLjc5MTY2NjY2NjdlbSl9Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtbGVnYWN5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC13cmFwcGVyW19uZ2NvbnRlbnQtJUNPTVAlXXtwYWRkaW5nLWJvdHRvbToxLjI1ZW19Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtbGVnYWN5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1pbmZpeFtfbmdjb250ZW50LSVDT01QJV17cGFkZGluZzouNDM3NWVtIDB9Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtbGVnYWN5Lm1hdC1mb3JtLWZpZWxkLWNhbi1mbG9hdC5tYXQtZm9ybS1maWVsZC1zaG91bGQtZmxvYXRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtbGVnYWN5Lm1hdC1mb3JtLWZpZWxkLWNhbi1mbG9hdFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWlucHV0LXNlcnZlcltfbmdjb250ZW50LSVDT01QJV06Zm9jdXMgKyAubWF0LWZvcm0tZmllbGQtbGFiZWwtd3JhcHBlcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVde3RyYW5zZm9ybTp0cmFuc2xhdGVZKC0xLjI4MTI1ZW0pIHNjYWxlKDAuNzUpIHBlcnNwZWN0aXZlKDEwMHB4KSB0cmFuc2xhdGVaKDAuMDAxcHgpOy1tcy10cmFuc2Zvcm06dHJhbnNsYXRlWSgtMS4yODEyNWVtKSBzY2FsZSgwLjc1KTt3aWR0aDoxMzMuMzMzMzMzMzMzMyV9Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtbGVnYWN5Lm1hdC1mb3JtLWZpZWxkLWNhbi1mbG9hdFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtYXV0b2ZpbGwtY29udHJvbFtfbmdjb250ZW50LSVDT01QJV06LXdlYmtpdC1hdXRvZmlsbCArIC5tYXQtZm9ybS1maWVsZC1sYWJlbC13cmFwcGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17dHJhbnNmb3JtOnRyYW5zbGF0ZVkoLTEuMjgxMjVlbSkgc2NhbGUoMC43NSkgcGVyc3BlY3RpdmUoMTAwcHgpIHRyYW5zbGF0ZVooMC4wMDEwMXB4KTstbXMtdHJhbnNmb3JtOnRyYW5zbGF0ZVkoLTEuMjgxMjRlbSkgc2NhbGUoMC43NSk7d2lkdGg6MTMzLjMzMzM0MzMzMzMlfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWxlZ2FjeS5tYXQtZm9ybS1maWVsZC1jYW4tZmxvYXRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pbnB1dC1zZXJ2ZXJbbGFiZWxdW19uZ2NvbnRlbnQtJUNPTVAlXTpub3QoOmxhYmVsLXNob3duKSArIC5tYXQtZm9ybS1maWVsZC1sYWJlbC13cmFwcGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17dHJhbnNmb3JtOnRyYW5zbGF0ZVkoLTEuMjgxMjVlbSkgc2NhbGUoMC43NSkgcGVyc3BlY3RpdmUoMTAwcHgpIHRyYW5zbGF0ZVooMC4wMDEwMnB4KTstbXMtdHJhbnNmb3JtOnRyYW5zbGF0ZVkoLTEuMjgxMjNlbSkgc2NhbGUoMC43NSk7d2lkdGg6MTMzLjMzMzM1MzMzMzMlfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWxlZ2FjeVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVde3RvcDoxLjI4MTI1ZW19Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtbGVnYWN5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC11bmRlcmxpbmVbX25nY29udGVudC0lQ09NUCVde2JvdHRvbToxLjI1ZW19Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtbGVnYWN5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1zdWJzY3JpcHQtd3JhcHBlcltfbmdjb250ZW50LSVDT01QJV17bWFyZ2luLXRvcDouNTQxNjY2NjY2N2VtO3RvcDpjYWxjKDEwMCUgLSAxLjY2NjY2NjY2NjdlbSl9QG1lZGlhIHByaW50ey5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWxlZ2FjeS5tYXQtZm9ybS1maWVsZC1jYW4tZmxvYXQubWF0LWZvcm0tZmllbGQtc2hvdWxkLWZsb2F0W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWxlZ2FjeS5tYXQtZm9ybS1maWVsZC1jYW4tZmxvYXRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pbnB1dC1zZXJ2ZXJbX25nY29udGVudC0lQ09NUCVdOmZvY3VzICsgLm1hdC1mb3JtLWZpZWxkLWxhYmVsLXdyYXBwZXJbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXt0cmFuc2Zvcm06dHJhbnNsYXRlWSgtMS4yODEyMmVtKSBzY2FsZSgwLjc1KX0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1sZWdhY3kubWF0LWZvcm0tZmllbGQtY2FuLWZsb2F0W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1hdXRvZmlsbC1jb250cm9sW19uZ2NvbnRlbnQtJUNPTVAlXTotd2Via2l0LWF1dG9maWxsICsgLm1hdC1mb3JtLWZpZWxkLWxhYmVsLXdyYXBwZXJbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXt0cmFuc2Zvcm06dHJhbnNsYXRlWSgtMS4yODEyMWVtKSBzY2FsZSgwLjc1KX0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1sZWdhY3kubWF0LWZvcm0tZmllbGQtY2FuLWZsb2F0W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaW5wdXQtc2VydmVyW2xhYmVsXVtfbmdjb250ZW50LSVDT01QJV06bm90KDpsYWJlbC1zaG93bikgKyAubWF0LWZvcm0tZmllbGQtbGFiZWwtd3JhcHBlcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVde3RyYW5zZm9ybTp0cmFuc2xhdGVZKC0xLjI4MTJlbSkgc2NhbGUoMC43NSl9fS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWZpbGxbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWluZml4W19uZ2NvbnRlbnQtJUNPTVAlXXtwYWRkaW5nOi4yNWVtIDAgLjc1ZW0gMH0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1maWxsW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17dG9wOjEuMDkzNzVlbTttYXJnaW4tdG9wOi0wLjVlbX0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1maWxsLm1hdC1mb3JtLWZpZWxkLWNhbi1mbG9hdC5tYXQtZm9ybS1maWVsZC1zaG91bGQtZmxvYXRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtZmlsbC5tYXQtZm9ybS1maWVsZC1jYW4tZmxvYXRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pbnB1dC1zZXJ2ZXJbX25nY29udGVudC0lQ09NUCVdOmZvY3VzICsgLm1hdC1mb3JtLWZpZWxkLWxhYmVsLXdyYXBwZXJbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXt0cmFuc2Zvcm06dHJhbnNsYXRlWSgtMC41OTM3NWVtKSBzY2FsZSgwLjc1KTt3aWR0aDoxMzMuMzMzMzMzMzMzMyV9Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtZmlsbC5tYXQtZm9ybS1maWVsZC1jYW4tZmxvYXRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pbnB1dC1zZXJ2ZXJbbGFiZWxdW19uZ2NvbnRlbnQtJUNPTVAlXTpub3QoOmxhYmVsLXNob3duKSArIC5tYXQtZm9ybS1maWVsZC1sYWJlbC13cmFwcGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17dHJhbnNmb3JtOnRyYW5zbGF0ZVkoLTAuNTkzNzRlbSkgc2NhbGUoMC43NSk7d2lkdGg6MTMzLjMzMzM0MzMzMzMlfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLW91dGxpbmVbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWluZml4W19uZ2NvbnRlbnQtJUNPTVAlXXtwYWRkaW5nOjFlbSAwIDFlbSAwfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLW91dGxpbmVbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXt0b3A6MS44NDM3NWVtO21hcmdpbi10b3A6LTAuMjVlbX0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1vdXRsaW5lLm1hdC1mb3JtLWZpZWxkLWNhbi1mbG9hdC5tYXQtZm9ybS1maWVsZC1zaG91bGQtZmxvYXRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2Utb3V0bGluZS5tYXQtZm9ybS1maWVsZC1jYW4tZmxvYXRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pbnB1dC1zZXJ2ZXJbX25nY29udGVudC0lQ09NUCVdOmZvY3VzICsgLm1hdC1mb3JtLWZpZWxkLWxhYmVsLXdyYXBwZXJbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXt0cmFuc2Zvcm06dHJhbnNsYXRlWSgtMS41OTM3NWVtKSBzY2FsZSgwLjc1KTt3aWR0aDoxMzMuMzMzMzMzMzMzMyV9Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2Utb3V0bGluZS5tYXQtZm9ybS1maWVsZC1jYW4tZmxvYXRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pbnB1dC1zZXJ2ZXJbbGFiZWxdW19uZ2NvbnRlbnQtJUNPTVAlXTpub3QoOmxhYmVsLXNob3duKSArIC5tYXQtZm9ybS1maWVsZC1sYWJlbC13cmFwcGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17dHJhbnNmb3JtOnRyYW5zbGF0ZVkoLTEuNTkzNzRlbSkgc2NhbGUoMC43NSk7d2lkdGg6MTMzLjMzMzM0MzMzMzMlfS5tYXQtZ3JpZC10aWxlLWhlYWRlcltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtZ3JpZC10aWxlLWZvb3Rlcltfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjE0cHh9Lm1hdC1ncmlkLXRpbGUtaGVhZGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGluZVtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtZ3JpZC10aWxlLWZvb3Rlcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpbmVbX25nY29udGVudC0lQ09NUCVde3doaXRlLXNwYWNlOm5vd3JhcDtvdmVyZmxvdzpoaWRkZW47dGV4dC1vdmVyZmxvdzplbGxpcHNpcztkaXNwbGF5OmJsb2NrO2JveC1zaXppbmc6Ym9yZGVyLWJveH0ubWF0LWdyaWQtdGlsZS1oZWFkZXJbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saW5lW19uZ2NvbnRlbnQtJUNPTVAlXTpudGgtY2hpbGQobisyKSwgLm1hdC1ncmlkLXRpbGUtZm9vdGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGluZVtfbmdjb250ZW50LSVDT01QJV06bnRoLWNoaWxkKG4rMil7Zm9udC1zaXplOjEycHh9aW5wdXQubWF0LWlucHV0LWVsZW1lbnRbX25nY29udGVudC0lQ09NUCVde21hcmdpbi10b3A6LTAuMDYyNWVtfS5tYXQtbWVudS1pdGVtW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7Zm9udC1zaXplOjE0cHg7Zm9udC13ZWlnaHQ6NDAwfS5tYXQtcGFnaW5hdG9yW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1wYWdpbmF0b3ItcGFnZS1zaXplW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtc2VsZWN0LXRyaWdnZXJbX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtmb250LXNpemU6MTJweH0ubWF0LXJhZGlvLWJ1dHRvbltfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmfS5tYXQtc2VsZWN0W19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWZ9Lm1hdC1zZWxlY3QtdHJpZ2dlcltfbmdjb250ZW50LSVDT01QJV17aGVpZ2h0OjEuMTI1ZW19Lm1hdC1zbGlkZS10b2dnbGUtY29udGVudFtfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmfS5tYXQtc2xpZGVyLXRodW1iLWxhYmVsLXRleHRbX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtmb250LXNpemU6MTJweDtmb250LXdlaWdodDo1MDB9Lm1hdC1zdGVwcGVyLXZlcnRpY2FsW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1zdGVwcGVyLWhvcml6b250YWxbX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZn0ubWF0LXN0ZXAtbGFiZWxbX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToxNHB4O2ZvbnQtd2VpZ2h0OjQwMH0ubWF0LXN0ZXAtc3ViLWxhYmVsLWVycm9yW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXdlaWdodDpub3JtYWx9Lm1hdC1zdGVwLWxhYmVsLWVycm9yW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MTRweH0ubWF0LXN0ZXAtbGFiZWwtc2VsZWN0ZWRbX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToxNHB4O2ZvbnQtd2VpZ2h0OjUwMH0ubWF0LXRhYi1ncm91cFtfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmfS5tYXQtdGFiLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10YWItbGlua1tfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2ZvbnQtc2l6ZToxNHB4O2ZvbnQtd2VpZ2h0OjUwMH0ubWF0LXRvb2xiYXJbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXRvb2xiYXJbX25nY29udGVudC0lQ09NUCVdICAgaDFbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXRvb2xiYXJbX25nY29udGVudC0lQ09NUCVdICAgaDJbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXRvb2xiYXJbX25nY29udGVudC0lQ09NUCVdICAgaDNbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXRvb2xiYXJbX25nY29udGVudC0lQ09NUCVdICAgaDRbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXRvb2xiYXJbX25nY29udGVudC0lQ09NUCVdICAgaDVbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXRvb2xiYXJbX25nY29udGVudC0lQ09NUCVdICAgaDZbX25nY29udGVudC0lQ09NUCVde2ZvbnQ6NTAwIDIwcHgvMzJweCBSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7bGV0dGVyLXNwYWNpbmc6bm9ybWFsO21hcmdpbjowfS5tYXQtdG9vbHRpcFtfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2ZvbnQtc2l6ZToxMHB4O3BhZGRpbmctdG9wOjZweDtwYWRkaW5nLWJvdHRvbTo2cHh9Lm1hdC10b29sdGlwLWhhbmRzZXRbX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToxNHB4O3BhZGRpbmctdG9wOjhweDtwYWRkaW5nLWJvdHRvbTo4cHh9Lm1hdC1saXN0LWl0ZW1bX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZn0ubWF0LWxpc3Qtb3B0aW9uW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWZ9Lm1hdC1saXN0LWJhc2VbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saXN0LWl0ZW1bX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToxNnB4fS5tYXQtbGlzdC1iYXNlW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGlzdC1pdGVtW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGluZVtfbmdjb250ZW50LSVDT01QJV17d2hpdGUtc3BhY2U6bm93cmFwO292ZXJmbG93OmhpZGRlbjt0ZXh0LW92ZXJmbG93OmVsbGlwc2lzO2Rpc3BsYXk6YmxvY2s7Ym94LXNpemluZzpib3JkZXItYm94fS5tYXQtbGlzdC1iYXNlW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGlzdC1pdGVtW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGluZVtfbmdjb250ZW50LSVDT01QJV06bnRoLWNoaWxkKG4rMil7Zm9udC1zaXplOjE0cHh9Lm1hdC1saXN0LWJhc2VbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saXN0LW9wdGlvbltfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjE2cHh9Lm1hdC1saXN0LWJhc2VbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saXN0LW9wdGlvbltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpbmVbX25nY29udGVudC0lQ09NUCVde3doaXRlLXNwYWNlOm5vd3JhcDtvdmVyZmxvdzpoaWRkZW47dGV4dC1vdmVyZmxvdzplbGxpcHNpcztkaXNwbGF5OmJsb2NrO2JveC1zaXppbmc6Ym9yZGVyLWJveH0ubWF0LWxpc3QtYmFzZVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpc3Qtb3B0aW9uW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGluZVtfbmdjb250ZW50LSVDT01QJV06bnRoLWNoaWxkKG4rMil7Zm9udC1zaXplOjE0cHh9Lm1hdC1saXN0LWJhc2VbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1zdWJoZWFkZXJbX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtmb250LXNpemU6MTRweDtmb250LXdlaWdodDo1MDB9Lm1hdC1saXN0LWJhc2VbZGVuc2VdW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGlzdC1pdGVtW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MTJweH0ubWF0LWxpc3QtYmFzZVtkZW5zZV1bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saXN0LWl0ZW1bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saW5lW19uZ2NvbnRlbnQtJUNPTVAlXXt3aGl0ZS1zcGFjZTpub3dyYXA7b3ZlcmZsb3c6aGlkZGVuO3RleHQtb3ZlcmZsb3c6ZWxsaXBzaXM7ZGlzcGxheTpibG9jaztib3gtc2l6aW5nOmJvcmRlci1ib3h9Lm1hdC1saXN0LWJhc2VbZGVuc2VdW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGlzdC1pdGVtW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGluZVtfbmdjb250ZW50LSVDT01QJV06bnRoLWNoaWxkKG4rMil7Zm9udC1zaXplOjEycHh9Lm1hdC1saXN0LWJhc2VbZGVuc2VdW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGlzdC1vcHRpb25bX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToxMnB4fS5tYXQtbGlzdC1iYXNlW2RlbnNlXVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpc3Qtb3B0aW9uW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGluZVtfbmdjb250ZW50LSVDT01QJV17d2hpdGUtc3BhY2U6bm93cmFwO292ZXJmbG93OmhpZGRlbjt0ZXh0LW92ZXJmbG93OmVsbGlwc2lzO2Rpc3BsYXk6YmxvY2s7Ym94LXNpemluZzpib3JkZXItYm94fS5tYXQtbGlzdC1iYXNlW2RlbnNlXVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpc3Qtb3B0aW9uW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGluZVtfbmdjb250ZW50LSVDT01QJV06bnRoLWNoaWxkKG4rMil7Zm9udC1zaXplOjEycHh9Lm1hdC1saXN0LWJhc2VbZGVuc2VdW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtc3ViaGVhZGVyW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7Zm9udC1zaXplOjEycHg7Zm9udC13ZWlnaHQ6NTAwfS5tYXQtb3B0aW9uW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7Zm9udC1zaXplOjE2cHh9Lm1hdC1vcHRncm91cC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17Zm9udDo1MDAgMTRweC8yNHB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtsZXR0ZXItc3BhY2luZzpub3JtYWx9Lm1hdC1zaW1wbGUtc25hY2tiYXJbX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtmb250LXNpemU6MTRweH0ubWF0LXNpbXBsZS1zbmFja2Jhci1hY3Rpb25bX25nY29udGVudC0lQ09NUCVde2xpbmUtaGVpZ2h0OjE7Zm9udC1mYW1pbHk6aW5oZXJpdDtmb250LXNpemU6aW5oZXJpdDtmb250LXdlaWdodDo1MDB9Lm1hdC10cmVlW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWZ9Lm1hdC10cmVlLW5vZGVbX25nY29udGVudC0lQ09NUCVdLCAubWF0LW5lc3RlZC10cmVlLW5vZGVbX25nY29udGVudC0lQ09NUCVde2ZvbnQtd2VpZ2h0OjQwMDtmb250LXNpemU6MTRweH0ubWF0LXJpcHBsZVtfbmdjb250ZW50LSVDT01QJV17b3ZlcmZsb3c6aGlkZGVuO3Bvc2l0aW9uOnJlbGF0aXZlfS5tYXQtcmlwcGxlW19uZ2NvbnRlbnQtJUNPTVAlXTpub3QoOmVtcHR5KXt0cmFuc2Zvcm06dHJhbnNsYXRlWigwKX0ubWF0LXJpcHBsZS5tYXQtcmlwcGxlLXVuYm91bmRlZFtfbmdjb250ZW50LSVDT01QJV17b3ZlcmZsb3c6dmlzaWJsZX0ubWF0LXJpcHBsZS1lbGVtZW50W19uZ2NvbnRlbnQtJUNPTVAlXXtwb3NpdGlvbjphYnNvbHV0ZTtib3JkZXItcmFkaXVzOjUwJTtwb2ludGVyLWV2ZW50czpub25lO3RyYW5zaXRpb246b3BhY2l0eSx0cmFuc2Zvcm0gMG1zIGN1YmljLWJlemllcigwLCAwLCAwLjIsIDEpO3RyYW5zZm9ybTpzY2FsZSgwKX0uY2RrLWhpZ2gtY29udHJhc3QtYWN0aXZlW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtcmlwcGxlLWVsZW1lbnRbX25nY29udGVudC0lQ09NUCVde2Rpc3BsYXk6bm9uZX0uY2RrLXZpc3VhbGx5LWhpZGRlbltfbmdjb250ZW50LSVDT01QJV17Ym9yZGVyOjA7Y2xpcDpyZWN0KDAgMCAwIDApO2hlaWdodDoxcHg7bWFyZ2luOi0xcHg7b3ZlcmZsb3c6aGlkZGVuO3BhZGRpbmc6MDtwb3NpdGlvbjphYnNvbHV0ZTt3aWR0aDoxcHg7b3V0bGluZTowOy13ZWJraXQtYXBwZWFyYW5jZTpub25lOy1tb3otYXBwZWFyYW5jZTpub25lfS5jZGstb3ZlcmxheS1jb250YWluZXJbX25nY29udGVudC0lQ09NUCVdLCAuY2RrLWdsb2JhbC1vdmVybGF5LXdyYXBwZXJbX25nY29udGVudC0lQ09NUCVde3BvaW50ZXItZXZlbnRzOm5vbmU7dG9wOjA7bGVmdDowO2hlaWdodDoxMDAlO3dpZHRoOjEwMCV9LmNkay1vdmVybGF5LWNvbnRhaW5lcltfbmdjb250ZW50LSVDT01QJV17cG9zaXRpb246Zml4ZWQ7ei1pbmRleDoxMDAwfS5jZGstb3ZlcmxheS1jb250YWluZXJbX25nY29udGVudC0lQ09NUCVdOmVtcHR5e2Rpc3BsYXk6bm9uZX0uY2RrLWdsb2JhbC1vdmVybGF5LXdyYXBwZXJbX25nY29udGVudC0lQ09NUCVde2Rpc3BsYXk6ZmxleDtwb3NpdGlvbjphYnNvbHV0ZTt6LWluZGV4OjEwMDB9LmNkay1vdmVybGF5LXBhbmVbX25nY29udGVudC0lQ09NUCVde3Bvc2l0aW9uOmFic29sdXRlO3BvaW50ZXItZXZlbnRzOmF1dG87Ym94LXNpemluZzpib3JkZXItYm94O3otaW5kZXg6MTAwMDtkaXNwbGF5OmZsZXg7bWF4LXdpZHRoOjEwMCU7bWF4LWhlaWdodDoxMDAlfS5jZGstb3ZlcmxheS1iYWNrZHJvcFtfbmdjb250ZW50LSVDT01QJV17cG9zaXRpb246YWJzb2x1dGU7dG9wOjA7Ym90dG9tOjA7bGVmdDowO3JpZ2h0OjA7ei1pbmRleDoxMDAwO3BvaW50ZXItZXZlbnRzOmF1dG87LXdlYmtpdC10YXAtaGlnaGxpZ2h0LWNvbG9yOnRyYW5zcGFyZW50O3RyYW5zaXRpb246b3BhY2l0eSA0MDBtcyBjdWJpYy1iZXppZXIoMC4yNSwgMC44LCAwLjI1LCAxKTtvcGFjaXR5OjB9LmNkay1vdmVybGF5LWJhY2tkcm9wLmNkay1vdmVybGF5LWJhY2tkcm9wLXNob3dpbmdbX25nY29udGVudC0lQ09NUCVde29wYWNpdHk6MX1AbWVkaWEgc2NyZWVuIGFuZCAoLW1zLWhpZ2gtY29udHJhc3Q6IGFjdGl2ZSl7LmNkay1vdmVybGF5LWJhY2tkcm9wLmNkay1vdmVybGF5LWJhY2tkcm9wLXNob3dpbmdbX25nY29udGVudC0lQ09NUCVde29wYWNpdHk6LjZ9fS5jZGstb3ZlcmxheS1kYXJrLWJhY2tkcm9wW19uZ2NvbnRlbnQtJUNPTVAlXXtiYWNrZ3JvdW5kOnJnYmEoMCwwLDAsLjMyKX0uY2RrLW92ZXJsYXktdHJhbnNwYXJlbnQtYmFja2Ryb3BbX25nY29udGVudC0lQ09NUCVdLCAuY2RrLW92ZXJsYXktdHJhbnNwYXJlbnQtYmFja2Ryb3AuY2RrLW92ZXJsYXktYmFja2Ryb3Atc2hvd2luZ1tfbmdjb250ZW50LSVDT01QJV17b3BhY2l0eTowfS5jZGstb3ZlcmxheS1jb25uZWN0ZWQtcG9zaXRpb24tYm91bmRpbmctYm94W19uZ2NvbnRlbnQtJUNPTVAlXXtwb3NpdGlvbjphYnNvbHV0ZTt6LWluZGV4OjEwMDA7ZGlzcGxheTpmbGV4O2ZsZXgtZGlyZWN0aW9uOmNvbHVtbjttaW4td2lkdGg6MXB4O21pbi1oZWlnaHQ6MXB4fS5jZGstZ2xvYmFsLXNjcm9sbGJsb2NrW19uZ2NvbnRlbnQtJUNPTVAlXXtwb3NpdGlvbjpmaXhlZDt3aWR0aDoxMDAlO292ZXJmbG93LXk6c2Nyb2xsfUBrZXlmcmFtZXMgY2RrLXRleHQtZmllbGQtYXV0b2ZpbGwtc3RhcnR7fUBrZXlmcmFtZXMgY2RrLXRleHQtZmllbGQtYXV0b2ZpbGwtZW5ke30uY2RrLXRleHQtZmllbGQtYXV0b2ZpbGwtbW9uaXRvcmVkW19uZ2NvbnRlbnQtJUNPTVAlXTotd2Via2l0LWF1dG9maWxse2FuaW1hdGlvbjpjZGstdGV4dC1maWVsZC1hdXRvZmlsbC1zdGFydCAwcyAxbXN9LmNkay10ZXh0LWZpZWxkLWF1dG9maWxsLW1vbml0b3JlZFtfbmdjb250ZW50LSVDT01QJV06bm90KDotd2Via2l0LWF1dG9maWxsKXthbmltYXRpb246Y2RrLXRleHQtZmllbGQtYXV0b2ZpbGwtZW5kIDBzIDFtc310ZXh0YXJlYS5jZGstdGV4dGFyZWEtYXV0b3NpemVbX25nY29udGVudC0lQ09NUCVde3Jlc2l6ZTpub25lfXRleHRhcmVhLmNkay10ZXh0YXJlYS1hdXRvc2l6ZS1tZWFzdXJpbmdbX25nY29udGVudC0lQ09NUCVde3BhZGRpbmc6MnB4IDAgIWltcG9ydGFudDtib3gtc2l6aW5nOmNvbnRlbnQtYm94ICFpbXBvcnRhbnQ7aGVpZ2h0OmF1dG8gIWltcG9ydGFudDtvdmVyZmxvdzpoaWRkZW4gIWltcG9ydGFudH10ZXh0YXJlYS5jZGstdGV4dGFyZWEtYXV0b3NpemUtbWVhc3VyaW5nLWZpcmVmb3hbX25nY29udGVudC0lQ09NUCVde3BhZGRpbmc6MnB4IDAgIWltcG9ydGFudDtib3gtc2l6aW5nOmNvbnRlbnQtYm94ICFpbXBvcnRhbnQ7aGVpZ2h0OjAgIWltcG9ydGFudH0ubWF0LWZvY3VzLWluZGljYXRvcltfbmdjb250ZW50LSVDT01QJV17cG9zaXRpb246cmVsYXRpdmV9Lm1hdC1tZGMtZm9jdXMtaW5kaWNhdG9yW19uZ2NvbnRlbnQtJUNPTVAlXXtwb3NpdGlvbjpyZWxhdGl2ZX0ubWF0LXJpcHBsZS1lbGVtZW50W19uZ2NvbnRlbnQtJUNPTVAlXXtiYWNrZ3JvdW5kLWNvbG9yOnJnYmEoMCwwLDAsLjEpfS5tYXQtb3B0aW9uW19uZ2NvbnRlbnQtJUNPTVAlXXtjb2xvcjojMjEyMTIxfS5tYXQtb3B0aW9uW19uZ2NvbnRlbnQtJUNPTVAlXTpob3Zlcjpub3QoLm1hdC1vcHRpb24tZGlzYWJsZWQpLCAubWF0LW9wdGlvbltfbmdjb250ZW50LSVDT01QJV06Zm9jdXM6bm90KC5tYXQtb3B0aW9uLWRpc2FibGVkKXtiYWNrZ3JvdW5kOnJnYmEoMCwwLDAsLjA0KX0ubWF0LW9wdGlvbi5tYXQtc2VsZWN0ZWRbX25nY29udGVudC0lQ09NUCVdOm5vdCgubWF0LW9wdGlvbi1tdWx0aXBsZSk6bm90KC5tYXQtb3B0aW9uLWRpc2FibGVkKXtiYWNrZ3JvdW5kOnJnYmEoMCwwLDAsLjA0KX0ubWF0LW9wdGlvbi5tYXQtYWN0aXZlW19uZ2NvbnRlbnQtJUNPTVAlXXtiYWNrZ3JvdW5kOnJnYmEoMCwwLDAsLjA0KTtjb2xvcjojMjEyMTIxfS5tYXQtb3B0aW9uLm1hdC1vcHRpb24tZGlzYWJsZWRbX25nY29udGVudC0lQ09NUCVde2NvbG9yOnJnYmEoMCwwLDAsLjM4KX0ubWF0LXByaW1hcnlbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1vcHRpb24ubWF0LXNlbGVjdGVkW19uZ2NvbnRlbnQtJUNPTVAlXTpub3QoLm1hdC1vcHRpb24tZGlzYWJsZWQpe2NvbG9yOiNmNTdjMDB9Lm1hdC1hY2NlbnRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1vcHRpb24ubWF0LXNlbGVjdGVkW19uZ2NvbnRlbnQtJUNPTVAlXTpub3QoLm1hdC1vcHRpb24tZGlzYWJsZWQpe2NvbG9yOiNmZjk4MDB9Lm1hdC13YXJuW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtb3B0aW9uLm1hdC1zZWxlY3RlZFtfbmdjb250ZW50LSVDT01QJV06bm90KC5tYXQtb3B0aW9uLWRpc2FibGVkKXtjb2xvcjojZjQ0MzM2fS5tYXQtb3B0Z3JvdXAtbGFiZWxbX25nY29udGVudC0lQ09NUCVde2NvbG9yOiM2MTYxNjF9Lm1hdC1vcHRncm91cC1kaXNhYmxlZFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LW9wdGdyb3VwLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXtjb2xvcjpyZ2JhKDAsMCwwLC4zOCl9Lm1hdC1wc2V1ZG8tY2hlY2tib3hbX25nY29udGVudC0lQ09NUCVde2NvbG9yOiM2MTYxNjF9Lm1hdC1wc2V1ZG8tY2hlY2tib3hbX25nY29udGVudC0lQ09NUCVdOjphZnRlcntjb2xvcjojZmFmYWZhfS5tYXQtcHNldWRvLWNoZWNrYm94LWRpc2FibGVkW19uZ2NvbnRlbnQtJUNPTVAlXXtjb2xvcjojYjBiMGIwfS5tYXQtcHJpbWFyeVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXBzZXVkby1jaGVja2JveC1jaGVja2VkW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1wcmltYXJ5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtcHNldWRvLWNoZWNrYm94LWluZGV0ZXJtaW5hdGVbX25nY29udGVudC0lQ09NUCVde2JhY2tncm91bmQ6I2Y1N2MwMH0ubWF0LXBzZXVkby1jaGVja2JveC1jaGVja2VkW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1wc2V1ZG8tY2hlY2tib3gtaW5kZXRlcm1pbmF0ZVtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtYWNjZW50W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtcHNldWRvLWNoZWNrYm94LWNoZWNrZWRbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWFjY2VudFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXBzZXVkby1jaGVja2JveC1pbmRldGVybWluYXRlW19uZ2NvbnRlbnQtJUNPTVAlXXtiYWNrZ3JvdW5kOiNmZjk4MDB9Lm1hdC13YXJuW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtcHNldWRvLWNoZWNrYm94LWNoZWNrZWRbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXdhcm5bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1wc2V1ZG8tY2hlY2tib3gtaW5kZXRlcm1pbmF0ZVtfbmdjb250ZW50LSVDT01QJV17YmFja2dyb3VuZDojZjQ0MzM2fS5tYXQtcHNldWRvLWNoZWNrYm94LWNoZWNrZWQubWF0LXBzZXVkby1jaGVja2JveC1kaXNhYmxlZFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtcHNldWRvLWNoZWNrYm94LWluZGV0ZXJtaW5hdGUubWF0LXBzZXVkby1jaGVja2JveC1kaXNhYmxlZFtfbmdjb250ZW50LSVDT01QJV17YmFja2dyb3VuZDojYjBiMGIwfS5tYXQtYXBwLWJhY2tncm91bmRbX25nY29udGVudC0lQ09NUCVde2JhY2tncm91bmQtY29sb3I6I2ZhZmFmYTtjb2xvcjojMjEyMTIxfS5tYXQtZWxldmF0aW9uLXowW19uZ2NvbnRlbnQtJUNPTVAlXXtib3gtc2hhZG93OjBweCAwcHggMHB4IDBweCByZ2JhKDAsIDAsIDAsIDAuMiksMHB4IDBweCAwcHggMHB4IHJnYmEoMCwgMCwgMCwgMC4xNCksMHB4IDBweCAwcHggMHB4IHJnYmEoMCwgMCwgMCwgMC4xMil9Lm1hdC1lbGV2YXRpb24tejFbX25nY29udGVudC0lQ09NUCVde2JveC1zaGFkb3c6MHB4IDJweCAxcHggLTFweCByZ2JhKDAsIDAsIDAsIDAuMiksMHB4IDFweCAxcHggMHB4IHJnYmEoMCwgMCwgMCwgMC4xNCksMHB4IDFweCAzcHggMHB4IHJnYmEoMCwgMCwgMCwgMC4xMil9Lm1hdC1lbGV2YXRpb24tejJbX25nY29udGVudC0lQ09NUCVde2JveC1zaGFkb3c6MHB4IDNweCAxcHggLTJweCByZ2JhKDAsIDAsIDAsIDAuMiksMHB4IDJweCAycHggMHB4IHJnYmEoMCwgMCwgMCwgMC4xNCksMHB4IDFweCA1cHggMHB4IHJnYmEoMCwgMCwgMCwgMC4xMil9Lm1hdC1lbGV2YXRpb24tejNbX25nY29udGVudC0lQ09NUCVde2JveC1zaGFkb3c6MHB4IDNweCAzcHggLTJweCByZ2JhKDAsIDAsIDAsIDAuMiksMHB4IDNweCA0cHggMHB4IHJnYmEoMCwgMCwgMCwgMC4xNCksMHB4IDFweCA4cHggMHB4IHJnYmEoMCwgMCwgMCwgMC4xMil9Lm1hdC1lbGV2YXRpb24tejRbX25nY29udGVudC0lQ09NUCVde2JveC1zaGFkb3c6MHB4IDJweCA0cHggLTFweCByZ2JhKDAsIDAsIDAsIDAuMiksMHB4IDRweCA1cHggMHB4IHJnYmEoMCwgMCwgMCwgMC4xNCksMHB4IDFweCAxMHB4IDBweCByZ2JhKDAsIDAsIDAsIDAuMTIpfS5tYXQtZWxldmF0aW9uLXo1W19uZ2NvbnRlbnQtJUNPTVAlXXtib3gtc2hhZG93OjBweCAzcHggNXB4IC0xcHggcmdiYSgwLCAwLCAwLCAwLjIpLDBweCA1cHggOHB4IDBweCByZ2JhKDAsIDAsIDAsIDAuMTQpLDBweCAxcHggMTRweCAwcHggcmdiYSgwLCAwLCAwLCAwLjEyKX0ubWF0LWVsZXZhdGlvbi16Nltfbmdjb250ZW50LSVDT01QJV17Ym94LXNoYWRvdzowcHggM3B4IDVweCAtMXB4IHJnYmEoMCwgMCwgMCwgMC4yKSwwcHggNnB4IDEwcHggMHB4IHJnYmEoMCwgMCwgMCwgMC4xNCksMHB4IDFweCAxOHB4IDBweCByZ2JhKDAsIDAsIDAsIDAuMTIpfS5tYXQtZWxldmF0aW9uLXo3W19uZ2NvbnRlbnQtJUNPTVAlXXtib3gtc2hhZG93OjBweCA0cHggNXB4IC0ycHggcmdiYSgwLCAwLCAwLCAwLjIpLDBweCA3cHggMTBweCAxcHggcmdiYSgwLCAwLCAwLCAwLjE0KSwwcHggMnB4IDE2cHggMXB4IHJnYmEoMCwgMCwgMCwgMC4xMil9Lm1hdC1lbGV2YXRpb24tejhbX25nY29udGVudC0lQ09NUCVde2JveC1zaGFkb3c6MHB4IDVweCA1cHggLTNweCByZ2JhKDAsIDAsIDAsIDAuMiksMHB4IDhweCAxMHB4IDFweCByZ2JhKDAsIDAsIDAsIDAuMTQpLDBweCAzcHggMTRweCAycHggcmdiYSgwLCAwLCAwLCAwLjEyKX0ubWF0LWVsZXZhdGlvbi16OVtfbmdjb250ZW50LSVDT01QJV17Ym94LXNoYWRvdzowcHggNXB4IDZweCAtM3B4IHJnYmEoMCwgMCwgMCwgMC4yKSwwcHggOXB4IDEycHggMXB4IHJnYmEoMCwgMCwgMCwgMC4xNCksMHB4IDNweCAxNnB4IDJweCByZ2JhKDAsIDAsIDAsIDAuMTIpfS5tYXQtZWxldmF0aW9uLXoxMFtfbmdjb250ZW50LSVDT01QJV17Ym94LXNoYWRvdzowcHggNnB4IDZweCAtM3B4IHJnYmEoMCwgMCwgMCwgMC4yKSwwcHggMTBweCAxNHB4IDFweCByZ2JhKDAsIDAsIDAsIDAuMTQpLDBweCA0cHggMThweCAzcHggcmdiYSgwLCAwLCAwLCAwLjEyKX0ubWF0LWVsZXZhdGlvbi16MTFbX25nY29udGVudC0lQ09NUCVde2JveC1zaGFkb3c6MHB4IDZweCA3cHggLTRweCByZ2JhKDAsIDAsIDAsIDAuMiksMHB4IDExcHggMTVweCAxcHggcmdiYSgwLCAwLCAwLCAwLjE0KSwwcHggNHB4IDIwcHggM3B4IHJnYmEoMCwgMCwgMCwgMC4xMil9Lm1hdC1lbGV2YXRpb24tejEyW19uZ2NvbnRlbnQtJUNPTVAlXXtib3gtc2hhZG93OjBweCA3cHggOHB4IC00cHggcmdiYSgwLCAwLCAwLCAwLjIpLDBweCAxMnB4IDE3cHggMnB4IHJnYmEoMCwgMCwgMCwgMC4xNCksMHB4IDVweCAyMnB4IDRweCByZ2JhKDAsIDAsIDAsIDAuMTIpfS5tYXQtZWxldmF0aW9uLXoxM1tfbmdjb250ZW50LSVDT01QJV17Ym94LXNoYWRvdzowcHggN3B4IDhweCAtNHB4IHJnYmEoMCwgMCwgMCwgMC4yKSwwcHggMTNweCAxOXB4IDJweCByZ2JhKDAsIDAsIDAsIDAuMTQpLDBweCA1cHggMjRweCA0cHggcmdiYSgwLCAwLCAwLCAwLjEyKX0ubWF0LWVsZXZhdGlvbi16MTRbX25nY29udGVudC0lQ09NUCVde2JveC1zaGFkb3c6MHB4IDdweCA5cHggLTRweCByZ2JhKDAsIDAsIDAsIDAuMiksMHB4IDE0cHggMjFweCAycHggcmdiYSgwLCAwLCAwLCAwLjE0KSwwcHggNXB4IDI2cHggNHB4IHJnYmEoMCwgMCwgMCwgMC4xMil9Lm1hdC1lbGV2YXRpb24tejE1W19uZ2NvbnRlbnQtJUNPTVAlXXtib3gtc2hhZG93OjBweCA4cHggOXB4IC01cHggcmdiYSgwLCAwLCAwLCAwLjIpLDBweCAxNXB4IDIycHggMnB4IHJnYmEoMCwgMCwgMCwgMC4xNCksMHB4IDZweCAyOHB4IDVweCByZ2JhKDAsIDAsIDAsIDAuMTIpfS5tYXQtZWxldmF0aW9uLXoxNltfbmdjb250ZW50LSVDT01QJV17Ym94LXNoYWRvdzowcHggOHB4IDEwcHggLTVweCByZ2JhKDAsIDAsIDAsIDAuMiksMHB4IDE2cHggMjRweCAycHggcmdiYSgwLCAwLCAwLCAwLjE0KSwwcHggNnB4IDMwcHggNXB4IHJnYmEoMCwgMCwgMCwgMC4xMil9Lm1hdC1lbGV2YXRpb24tejE3W19uZ2NvbnRlbnQtJUNPTVAlXXtib3gtc2hhZG93OjBweCA4cHggMTFweCAtNXB4IHJnYmEoMCwgMCwgMCwgMC4yKSwwcHggMTdweCAyNnB4IDJweCByZ2JhKDAsIDAsIDAsIDAuMTQpLDBweCA2cHggMzJweCA1cHggcmdiYSgwLCAwLCAwLCAwLjEyKX0ubWF0LWVsZXZhdGlvbi16MThbX25nY29udGVudC0lQ09NUCVde2JveC1zaGFkb3c6MHB4IDlweCAxMXB4IC01cHggcmdiYSgwLCAwLCAwLCAwLjIpLDBweCAxOHB4IDI4cHggMnB4IHJnYmEoMCwgMCwgMCwgMC4xNCksMHB4IDdweCAzNHB4IDZweCByZ2JhKDAsIDAsIDAsIDAuMTIpfS5tYXQtZWxldmF0aW9uLXoxOVtfbmdjb250ZW50LSVDT01QJV17Ym94LXNoYWRvdzowcHggOXB4IDEycHggLTZweCByZ2JhKDAsIDAsIDAsIDAuMiksMHB4IDE5cHggMjlweCAycHggcmdiYSgwLCAwLCAwLCAwLjE0KSwwcHggN3B4IDM2cHggNnB4IHJnYmEoMCwgMCwgMCwgMC4xMil9Lm1hdC1lbGV2YXRpb24tejIwW19uZ2NvbnRlbnQtJUNPTVAlXXtib3gtc2hhZG93OjBweCAxMHB4IDEzcHggLTZweCByZ2JhKDAsIDAsIDAsIDAuMiksMHB4IDIwcHggMzFweCAzcHggcmdiYSgwLCAwLCAwLCAwLjE0KSwwcHggOHB4IDM4cHggN3B4IHJnYmEoMCwgMCwgMCwgMC4xMil9Lm1hdC1lbGV2YXRpb24tejIxW19uZ2NvbnRlbnQtJUNPTVAlXXtib3gtc2hhZG93OjBweCAxMHB4IDEzcHggLTZweCByZ2JhKDAsIDAsIDAsIDAuMiksMHB4IDIxcHggMzNweCAzcHggcmdiYSgwLCAwLCAwLCAwLjE0KSwwcHggOHB4IDQwcHggN3B4IHJnYmEoMCwgMCwgMCwgMC4xMil9Lm1hdC1lbGV2YXRpb24tejIyW19uZ2NvbnRlbnQtJUNPTVAlXXtib3gtc2hhZG93OjBweCAxMHB4IDE0cHggLTZweCByZ2JhKDAsIDAsIDAsIDAuMiksMHB4IDIycHggMzVweCAzcHggcmdiYSgwLCAwLCAwLCAwLjE0KSwwcHggOHB4IDQycHggN3B4IHJnYmEoMCwgMCwgMCwgMC4xMil9Lm1hdC1lbGV2YXRpb24tejIzW19uZ2NvbnRlbnQtJUNPTVAlXXtib3gtc2hhZG93OjBweCAxMXB4IDE0cHggLTdweCByZ2JhKDAsIDAsIDAsIDAuMiksMHB4IDIzcHggMzZweCAzcHggcmdiYSgwLCAwLCAwLCAwLjE0KSwwcHggOXB4IDQ0cHggOHB4IHJnYmEoMCwgMCwgMCwgMC4xMil9Lm1hdC1lbGV2YXRpb24tejI0W19uZ2NvbnRlbnQtJUNPTVAlXXtib3gtc2hhZG93OjBweCAxMXB4IDE1cHggLTdweCByZ2JhKDAsIDAsIDAsIDAuMiksMHB4IDI0cHggMzhweCAzcHggcmdiYSgwLCAwLCAwLCAwLjE0KSwwcHggOXB4IDQ2cHggOHB4IHJnYmEoMCwgMCwgMCwgMC4xMil9Lm1hdC10aGVtZS1sb2FkZWQtbWFya2VyW19uZ2NvbnRlbnQtJUNPTVAlXXtkaXNwbGF5Om5vbmV9Lm1hdC1hdXRvY29tcGxldGUtcGFuZWxbX25nY29udGVudC0lQ09NUCVde2JhY2tncm91bmQ6I2ZmZjtjb2xvcjojMjEyMTIxfS5tYXQtYXV0b2NvbXBsZXRlLXBhbmVsW19uZ2NvbnRlbnQtJUNPTVAlXTpub3QoW2NsYXNzKj1tYXQtZWxldmF0aW9uLXpdKXtib3gtc2hhZG93OjBweCAycHggNHB4IC0xcHggcmdiYSgwLCAwLCAwLCAwLjIpLDBweCA0cHggNXB4IDBweCByZ2JhKDAsIDAsIDAsIDAuMTQpLDBweCAxcHggMTBweCAwcHggcmdiYSgwLCAwLCAwLCAwLjEyKX0ubWF0LWF1dG9jb21wbGV0ZS1wYW5lbFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LW9wdGlvbi5tYXQtc2VsZWN0ZWRbX25nY29udGVudC0lQ09NUCVdOm5vdCgubWF0LWFjdGl2ZSk6bm90KDpob3Zlcil7YmFja2dyb3VuZDojZmZmfS5tYXQtYXV0b2NvbXBsZXRlLXBhbmVsW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtb3B0aW9uLm1hdC1zZWxlY3RlZFtfbmdjb250ZW50LSVDT01QJV06bm90KC5tYXQtYWN0aXZlKTpub3QoOmhvdmVyKTpub3QoLm1hdC1vcHRpb24tZGlzYWJsZWQpe2NvbG9yOiMyMTIxMjF9Lm1hdC1iYWRnZS1jb250ZW50W19uZ2NvbnRlbnQtJUNPTVAlXXtjb2xvcjojZmZmO2JhY2tncm91bmQ6I2Y1N2MwMH0uY2RrLWhpZ2gtY29udHJhc3QtYWN0aXZlW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtYmFkZ2UtY29udGVudFtfbmdjb250ZW50LSVDT01QJV17b3V0bGluZTpzb2xpZCAxcHg7Ym9yZGVyLXJhZGl1czowfS5tYXQtYmFkZ2UtYWNjZW50W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtYmFkZ2UtY29udGVudFtfbmdjb250ZW50LSVDT01QJV17YmFja2dyb3VuZDojZmY5ODAwO2NvbG9yOiNmZmZ9Lm1hdC1iYWRnZS13YXJuW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtYmFkZ2UtY29udGVudFtfbmdjb250ZW50LSVDT01QJV17Y29sb3I6I2ZmZjtiYWNrZ3JvdW5kOiNmNDQzMzZ9Lm1hdC1iYWRnZVtfbmdjb250ZW50LSVDT01QJV17cG9zaXRpb246cmVsYXRpdmV9Lm1hdC1iYWRnZS1oaWRkZW5bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1iYWRnZS1jb250ZW50W19uZ2NvbnRlbnQtJUNPTVAlXXtkaXNwbGF5Om5vbmV9Lm1hdC1iYWRnZS1kaXNhYmxlZFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWJhZGdlLWNvbnRlbnRbX25nY29udGVudC0lQ09NUCVde2JhY2tncm91bmQ6I2I5YjliOTtjb2xvcjojNzU3NTc1fS5tYXQtYmFkZ2UtY29udGVudFtfbmdjb250ZW50LSVDT01QJV17cG9zaXRpb246YWJzb2x1dGU7dGV4dC1hbGlnbjpjZW50ZXI7ZGlzcGxheTppbmxpbmUtYmxvY2s7Ym9yZGVyLXJhZGl1czo1MCU7dHJhbnNpdGlvbjp0cmFuc2Zvcm0gMjAwbXMgZWFzZS1pbi1vdXQ7dHJhbnNmb3JtOnNjYWxlKDAuNik7b3ZlcmZsb3c6aGlkZGVuO3doaXRlLXNwYWNlOm5vd3JhcDt0ZXh0LW92ZXJmbG93OmVsbGlwc2lzO3BvaW50ZXItZXZlbnRzOm5vbmV9Lm5nLWFuaW1hdGUtZGlzYWJsZWRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1iYWRnZS1jb250ZW50W19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1iYWRnZS1jb250ZW50Ll9tYXQtYW5pbWF0aW9uLW5vb3BhYmxlW19uZ2NvbnRlbnQtJUNPTVAlXXt0cmFuc2l0aW9uOm5vbmV9Lm1hdC1iYWRnZS1jb250ZW50Lm1hdC1iYWRnZS1hY3RpdmVbX25nY29udGVudC0lQ09NUCVde3RyYW5zZm9ybTpub25lfS5tYXQtYmFkZ2Utc21hbGxbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1iYWRnZS1jb250ZW50W19uZ2NvbnRlbnQtJUNPTVAlXXt3aWR0aDoxNnB4O2hlaWdodDoxNnB4O2xpbmUtaGVpZ2h0OjE2cHh9Lm1hdC1iYWRnZS1zbWFsbC5tYXQtYmFkZ2UtYWJvdmVbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1iYWRnZS1jb250ZW50W19uZ2NvbnRlbnQtJUNPTVAlXXt0b3A6LThweH0ubWF0LWJhZGdlLXNtYWxsLm1hdC1iYWRnZS1iZWxvd1tfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWJhZGdlLWNvbnRlbnRbX25nY29udGVudC0lQ09NUCVde2JvdHRvbTotOHB4fS5tYXQtYmFkZ2Utc21hbGwubWF0LWJhZGdlLWJlZm9yZVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWJhZGdlLWNvbnRlbnRbX25nY29udGVudC0lQ09NUCVde2xlZnQ6LTE2cHh9W2Rpcj1ydGxdW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtYmFkZ2Utc21hbGwubWF0LWJhZGdlLWJlZm9yZVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWJhZGdlLWNvbnRlbnRbX25nY29udGVudC0lQ09NUCVde2xlZnQ6YXV0bztyaWdodDotMTZweH0ubWF0LWJhZGdlLXNtYWxsLm1hdC1iYWRnZS1hZnRlcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWJhZGdlLWNvbnRlbnRbX25nY29udGVudC0lQ09NUCVde3JpZ2h0Oi0xNnB4fVtkaXI9cnRsXVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWJhZGdlLXNtYWxsLm1hdC1iYWRnZS1hZnRlcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWJhZGdlLWNvbnRlbnRbX25nY29udGVudC0lQ09NUCVde3JpZ2h0OmF1dG87bGVmdDotMTZweH0ubWF0LWJhZGdlLXNtYWxsLm1hdC1iYWRnZS1vdmVybGFwLm1hdC1iYWRnZS1iZWZvcmVbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1iYWRnZS1jb250ZW50W19uZ2NvbnRlbnQtJUNPTVAlXXtsZWZ0Oi04cHh9W2Rpcj1ydGxdW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtYmFkZ2Utc21hbGwubWF0LWJhZGdlLW92ZXJsYXAubWF0LWJhZGdlLWJlZm9yZVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWJhZGdlLWNvbnRlbnRbX25nY29udGVudC0lQ09NUCVde2xlZnQ6YXV0bztyaWdodDotOHB4fS5tYXQtYmFkZ2Utc21hbGwubWF0LWJhZGdlLW92ZXJsYXAubWF0LWJhZGdlLWFmdGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtYmFkZ2UtY29udGVudFtfbmdjb250ZW50LSVDT01QJV17cmlnaHQ6LThweH1bZGlyPXJ0bF1bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1iYWRnZS1zbWFsbC5tYXQtYmFkZ2Utb3ZlcmxhcC5tYXQtYmFkZ2UtYWZ0ZXJbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1iYWRnZS1jb250ZW50W19uZ2NvbnRlbnQtJUNPTVAlXXtyaWdodDphdXRvO2xlZnQ6LThweH0ubWF0LWJhZGdlLW1lZGl1bVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWJhZGdlLWNvbnRlbnRbX25nY29udGVudC0lQ09NUCVde3dpZHRoOjIycHg7aGVpZ2h0OjIycHg7bGluZS1oZWlnaHQ6MjJweH0ubWF0LWJhZGdlLW1lZGl1bS5tYXQtYmFkZ2UtYWJvdmVbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1iYWRnZS1jb250ZW50W19uZ2NvbnRlbnQtJUNPTVAlXXt0b3A6LTExcHh9Lm1hdC1iYWRnZS1tZWRpdW0ubWF0LWJhZGdlLWJlbG93W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtYmFkZ2UtY29udGVudFtfbmdjb250ZW50LSVDT01QJV17Ym90dG9tOi0xMXB4fS5tYXQtYmFkZ2UtbWVkaXVtLm1hdC1iYWRnZS1iZWZvcmVbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1iYWRnZS1jb250ZW50W19uZ2NvbnRlbnQtJUNPTVAlXXtsZWZ0Oi0yMnB4fVtkaXI9cnRsXVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWJhZGdlLW1lZGl1bS5tYXQtYmFkZ2UtYmVmb3JlW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtYmFkZ2UtY29udGVudFtfbmdjb250ZW50LSVDT01QJV17bGVmdDphdXRvO3JpZ2h0Oi0yMnB4fS5tYXQtYmFkZ2UtbWVkaXVtLm1hdC1iYWRnZS1hZnRlcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWJhZGdlLWNvbnRlbnRbX25nY29udGVudC0lQ09NUCVde3JpZ2h0Oi0yMnB4fVtkaXI9cnRsXVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWJhZGdlLW1lZGl1bS5tYXQtYmFkZ2UtYWZ0ZXJbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1iYWRnZS1jb250ZW50W19uZ2NvbnRlbnQtJUNPTVAlXXtyaWdodDphdXRvO2xlZnQ6LTIycHh9Lm1hdC1iYWRnZS1tZWRpdW0ubWF0LWJhZGdlLW92ZXJsYXAubWF0LWJhZGdlLWJlZm9yZVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWJhZGdlLWNvbnRlbnRbX25nY29udGVudC0lQ09NUCVde2xlZnQ6LTExcHh9W2Rpcj1ydGxdW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtYmFkZ2UtbWVkaXVtLm1hdC1iYWRnZS1vdmVybGFwLm1hdC1iYWRnZS1iZWZvcmVbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1iYWRnZS1jb250ZW50W19uZ2NvbnRlbnQtJUNPTVAlXXtsZWZ0OmF1dG87cmlnaHQ6LTExcHh9Lm1hdC1iYWRnZS1tZWRpdW0ubWF0LWJhZGdlLW92ZXJsYXAubWF0LWJhZGdlLWFmdGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtYmFkZ2UtY29udGVudFtfbmdjb250ZW50LSVDT01QJV17cmlnaHQ6LTExcHh9W2Rpcj1ydGxdW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtYmFkZ2UtbWVkaXVtLm1hdC1iYWRnZS1vdmVybGFwLm1hdC1iYWRnZS1hZnRlcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWJhZGdlLWNvbnRlbnRbX25nY29udGVudC0lQ09NUCVde3JpZ2h0OmF1dG87bGVmdDotMTFweH0ubWF0LWJhZGdlLWxhcmdlW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtYmFkZ2UtY29udGVudFtfbmdjb250ZW50LSVDT01QJV17d2lkdGg6MjhweDtoZWlnaHQ6MjhweDtsaW5lLWhlaWdodDoyOHB4fS5tYXQtYmFkZ2UtbGFyZ2UubWF0LWJhZGdlLWFib3ZlW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtYmFkZ2UtY29udGVudFtfbmdjb250ZW50LSVDT01QJV17dG9wOi0xNHB4fS5tYXQtYmFkZ2UtbGFyZ2UubWF0LWJhZGdlLWJlbG93W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtYmFkZ2UtY29udGVudFtfbmdjb250ZW50LSVDT01QJV17Ym90dG9tOi0xNHB4fS5tYXQtYmFkZ2UtbGFyZ2UubWF0LWJhZGdlLWJlZm9yZVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWJhZGdlLWNvbnRlbnRbX25nY29udGVudC0lQ09NUCVde2xlZnQ6LTI4cHh9W2Rpcj1ydGxdW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtYmFkZ2UtbGFyZ2UubWF0LWJhZGdlLWJlZm9yZVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWJhZGdlLWNvbnRlbnRbX25nY29udGVudC0lQ09NUCVde2xlZnQ6YXV0bztyaWdodDotMjhweH0ubWF0LWJhZGdlLWxhcmdlLm1hdC1iYWRnZS1hZnRlcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWJhZGdlLWNvbnRlbnRbX25nY29udGVudC0lQ09NUCVde3JpZ2h0Oi0yOHB4fVtkaXI9cnRsXVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWJhZGdlLWxhcmdlLm1hdC1iYWRnZS1hZnRlcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWJhZGdlLWNvbnRlbnRbX25nY29udGVudC0lQ09NUCVde3JpZ2h0OmF1dG87bGVmdDotMjhweH0ubWF0LWJhZGdlLWxhcmdlLm1hdC1iYWRnZS1vdmVybGFwLm1hdC1iYWRnZS1iZWZvcmVbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1iYWRnZS1jb250ZW50W19uZ2NvbnRlbnQtJUNPTVAlXXtsZWZ0Oi0xNHB4fVtkaXI9cnRsXVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWJhZGdlLWxhcmdlLm1hdC1iYWRnZS1vdmVybGFwLm1hdC1iYWRnZS1iZWZvcmVbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1iYWRnZS1jb250ZW50W19uZ2NvbnRlbnQtJUNPTVAlXXtsZWZ0OmF1dG87cmlnaHQ6LTE0cHh9Lm1hdC1iYWRnZS1sYXJnZS5tYXQtYmFkZ2Utb3ZlcmxhcC5tYXQtYmFkZ2UtYWZ0ZXJbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1iYWRnZS1jb250ZW50W19uZ2NvbnRlbnQtJUNPTVAlXXtyaWdodDotMTRweH1bZGlyPXJ0bF1bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1iYWRnZS1sYXJnZS5tYXQtYmFkZ2Utb3ZlcmxhcC5tYXQtYmFkZ2UtYWZ0ZXJbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1iYWRnZS1jb250ZW50W19uZ2NvbnRlbnQtJUNPTVAlXXtyaWdodDphdXRvO2xlZnQ6LTE0cHh9Lm1hdC1ib3R0b20tc2hlZXQtY29udGFpbmVyW19uZ2NvbnRlbnQtJUNPTVAlXXtib3gtc2hhZG93OjBweCA4cHggMTBweCAtNXB4IHJnYmEoMCwgMCwgMCwgMC4yKSwwcHggMTZweCAyNHB4IDJweCByZ2JhKDAsIDAsIDAsIDAuMTQpLDBweCA2cHggMzBweCA1cHggcmdiYSgwLCAwLCAwLCAwLjEyKTtiYWNrZ3JvdW5kOiNmZmY7Y29sb3I6IzIxMjEyMX0ubWF0LWJ1dHRvbltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtaWNvbi1idXR0b25bX25nY29udGVudC0lQ09NUCVdLCAubWF0LXN0cm9rZWQtYnV0dG9uW19uZ2NvbnRlbnQtJUNPTVAlXXtjb2xvcjppbmhlcml0O2JhY2tncm91bmQ6dHJhbnNwYXJlbnR9Lm1hdC1idXR0b24ubWF0LXByaW1hcnlbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWljb24tYnV0dG9uLm1hdC1wcmltYXJ5W19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1zdHJva2VkLWJ1dHRvbi5tYXQtcHJpbWFyeVtfbmdjb250ZW50LSVDT01QJV17Y29sb3I6I2Y1N2MwMH0ubWF0LWJ1dHRvbi5tYXQtYWNjZW50W19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1pY29uLWJ1dHRvbi5tYXQtYWNjZW50W19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1zdHJva2VkLWJ1dHRvbi5tYXQtYWNjZW50W19uZ2NvbnRlbnQtJUNPTVAlXXtjb2xvcjojZmY5ODAwfS5tYXQtYnV0dG9uLm1hdC13YXJuW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1pY29uLWJ1dHRvbi5tYXQtd2Fybltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtc3Ryb2tlZC1idXR0b24ubWF0LXdhcm5bX25nY29udGVudC0lQ09NUCVde2NvbG9yOiNmNDQzMzZ9Lm1hdC1idXR0b24ubWF0LXByaW1hcnkubWF0LWJ1dHRvbi1kaXNhYmxlZFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtYnV0dG9uLm1hdC1hY2NlbnQubWF0LWJ1dHRvbi1kaXNhYmxlZFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtYnV0dG9uLm1hdC13YXJuLm1hdC1idXR0b24tZGlzYWJsZWRbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWJ1dHRvbi5tYXQtYnV0dG9uLWRpc2FibGVkLm1hdC1idXR0b24tZGlzYWJsZWRbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWljb24tYnV0dG9uLm1hdC1wcmltYXJ5Lm1hdC1idXR0b24tZGlzYWJsZWRbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWljb24tYnV0dG9uLm1hdC1hY2NlbnQubWF0LWJ1dHRvbi1kaXNhYmxlZFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtaWNvbi1idXR0b24ubWF0LXdhcm4ubWF0LWJ1dHRvbi1kaXNhYmxlZFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtaWNvbi1idXR0b24ubWF0LWJ1dHRvbi1kaXNhYmxlZC5tYXQtYnV0dG9uLWRpc2FibGVkW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1zdHJva2VkLWJ1dHRvbi5tYXQtcHJpbWFyeS5tYXQtYnV0dG9uLWRpc2FibGVkW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1zdHJva2VkLWJ1dHRvbi5tYXQtYWNjZW50Lm1hdC1idXR0b24tZGlzYWJsZWRbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXN0cm9rZWQtYnV0dG9uLm1hdC13YXJuLm1hdC1idXR0b24tZGlzYWJsZWRbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXN0cm9rZWQtYnV0dG9uLm1hdC1idXR0b24tZGlzYWJsZWQubWF0LWJ1dHRvbi1kaXNhYmxlZFtfbmdjb250ZW50LSVDT01QJV17Y29sb3I6cmdiYSgwLDAsMCwuMjYpfS5tYXQtYnV0dG9uLm1hdC1wcmltYXJ5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtYnV0dG9uLWZvY3VzLW92ZXJsYXlbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWljb24tYnV0dG9uLm1hdC1wcmltYXJ5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtYnV0dG9uLWZvY3VzLW92ZXJsYXlbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXN0cm9rZWQtYnV0dG9uLm1hdC1wcmltYXJ5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtYnV0dG9uLWZvY3VzLW92ZXJsYXlbX25nY29udGVudC0lQ09NUCVde2JhY2tncm91bmQtY29sb3I6I2Y1N2MwMH0ubWF0LWJ1dHRvbi5tYXQtYWNjZW50W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtYnV0dG9uLWZvY3VzLW92ZXJsYXlbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWljb24tYnV0dG9uLm1hdC1hY2NlbnRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1idXR0b24tZm9jdXMtb3ZlcmxheVtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtc3Ryb2tlZC1idXR0b24ubWF0LWFjY2VudFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWJ1dHRvbi1mb2N1cy1vdmVybGF5W19uZ2NvbnRlbnQtJUNPTVAlXXtiYWNrZ3JvdW5kLWNvbG9yOiNmZjk4MDB9Lm1hdC1idXR0b24ubWF0LXdhcm5bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1idXR0b24tZm9jdXMtb3ZlcmxheVtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtaWNvbi1idXR0b24ubWF0LXdhcm5bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1idXR0b24tZm9jdXMtb3ZlcmxheVtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtc3Ryb2tlZC1idXR0b24ubWF0LXdhcm5bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1idXR0b24tZm9jdXMtb3ZlcmxheVtfbmdjb250ZW50LSVDT01QJV17YmFja2dyb3VuZC1jb2xvcjojZjQ0MzM2fS5tYXQtYnV0dG9uLm1hdC1idXR0b24tZGlzYWJsZWRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1idXR0b24tZm9jdXMtb3ZlcmxheVtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtaWNvbi1idXR0b24ubWF0LWJ1dHRvbi1kaXNhYmxlZFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWJ1dHRvbi1mb2N1cy1vdmVybGF5W19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1zdHJva2VkLWJ1dHRvbi5tYXQtYnV0dG9uLWRpc2FibGVkW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtYnV0dG9uLWZvY3VzLW92ZXJsYXlbX25nY29udGVudC0lQ09NUCVde2JhY2tncm91bmQtY29sb3I6dHJhbnNwYXJlbnR9Lm1hdC1idXR0b25bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1yaXBwbGUtZWxlbWVudFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtaWNvbi1idXR0b25bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1yaXBwbGUtZWxlbWVudFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtc3Ryb2tlZC1idXR0b25bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1yaXBwbGUtZWxlbWVudFtfbmdjb250ZW50LSVDT01QJV17b3BhY2l0eTouMTtiYWNrZ3JvdW5kLWNvbG9yOmN1cnJlbnRDb2xvcn0ubWF0LWJ1dHRvbi1mb2N1cy1vdmVybGF5W19uZ2NvbnRlbnQtJUNPTVAlXXtiYWNrZ3JvdW5kOiMwMDB9Lm1hdC1zdHJva2VkLWJ1dHRvbltfbmdjb250ZW50LSVDT01QJV06bm90KC5tYXQtYnV0dG9uLWRpc2FibGVkKXtib3JkZXItY29sb3I6cmdiYSgwLDAsMCwuMTIpfS5tYXQtZmxhdC1idXR0b25bX25nY29udGVudC0lQ09NUCVdLCAubWF0LXJhaXNlZC1idXR0b25bX25nY29udGVudC0lQ09NUCVdLCAubWF0LWZhYltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtbWluaS1mYWJbX25nY29udGVudC0lQ09NUCVde2NvbG9yOiMyMTIxMjE7YmFja2dyb3VuZC1jb2xvcjojZmZmfS5tYXQtZmxhdC1idXR0b24ubWF0LXByaW1hcnlbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXJhaXNlZC1idXR0b24ubWF0LXByaW1hcnlbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWZhYi5tYXQtcHJpbWFyeVtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtbWluaS1mYWIubWF0LXByaW1hcnlbX25nY29udGVudC0lQ09NUCVde2NvbG9yOiNmZmZ9Lm1hdC1mbGF0LWJ1dHRvbi5tYXQtYWNjZW50W19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1yYWlzZWQtYnV0dG9uLm1hdC1hY2NlbnRbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWZhYi5tYXQtYWNjZW50W19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1taW5pLWZhYi5tYXQtYWNjZW50W19uZ2NvbnRlbnQtJUNPTVAlXXtjb2xvcjojZmZmfS5tYXQtZmxhdC1idXR0b24ubWF0LXdhcm5bX25nY29udGVudC0lQ09NUCVdLCAubWF0LXJhaXNlZC1idXR0b24ubWF0LXdhcm5bX25nY29udGVudC0lQ09NUCVdLCAubWF0LWZhYi5tYXQtd2Fybltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtbWluaS1mYWIubWF0LXdhcm5bX25nY29udGVudC0lQ09NUCVde2NvbG9yOiNmZmZ9Lm1hdC1mbGF0LWJ1dHRvbi5tYXQtcHJpbWFyeS5tYXQtYnV0dG9uLWRpc2FibGVkW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1mbGF0LWJ1dHRvbi5tYXQtYWNjZW50Lm1hdC1idXR0b24tZGlzYWJsZWRbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWZsYXQtYnV0dG9uLm1hdC13YXJuLm1hdC1idXR0b24tZGlzYWJsZWRbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWZsYXQtYnV0dG9uLm1hdC1idXR0b24tZGlzYWJsZWQubWF0LWJ1dHRvbi1kaXNhYmxlZFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtcmFpc2VkLWJ1dHRvbi5tYXQtcHJpbWFyeS5tYXQtYnV0dG9uLWRpc2FibGVkW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1yYWlzZWQtYnV0dG9uLm1hdC1hY2NlbnQubWF0LWJ1dHRvbi1kaXNhYmxlZFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtcmFpc2VkLWJ1dHRvbi5tYXQtd2Fybi5tYXQtYnV0dG9uLWRpc2FibGVkW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1yYWlzZWQtYnV0dG9uLm1hdC1idXR0b24tZGlzYWJsZWQubWF0LWJ1dHRvbi1kaXNhYmxlZFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtZmFiLm1hdC1wcmltYXJ5Lm1hdC1idXR0b24tZGlzYWJsZWRbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWZhYi5tYXQtYWNjZW50Lm1hdC1idXR0b24tZGlzYWJsZWRbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWZhYi5tYXQtd2Fybi5tYXQtYnV0dG9uLWRpc2FibGVkW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1mYWIubWF0LWJ1dHRvbi1kaXNhYmxlZC5tYXQtYnV0dG9uLWRpc2FibGVkW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1taW5pLWZhYi5tYXQtcHJpbWFyeS5tYXQtYnV0dG9uLWRpc2FibGVkW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1taW5pLWZhYi5tYXQtYWNjZW50Lm1hdC1idXR0b24tZGlzYWJsZWRbX25nY29udGVudC0lQ09NUCVdLCAubWF0LW1pbmktZmFiLm1hdC13YXJuLm1hdC1idXR0b24tZGlzYWJsZWRbX25nY29udGVudC0lQ09NUCVdLCAubWF0LW1pbmktZmFiLm1hdC1idXR0b24tZGlzYWJsZWQubWF0LWJ1dHRvbi1kaXNhYmxlZFtfbmdjb250ZW50LSVDT01QJV17Y29sb3I6cmdiYSgwLDAsMCwuMjYpfS5tYXQtZmxhdC1idXR0b24ubWF0LXByaW1hcnlbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXJhaXNlZC1idXR0b24ubWF0LXByaW1hcnlbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWZhYi5tYXQtcHJpbWFyeVtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtbWluaS1mYWIubWF0LXByaW1hcnlbX25nY29udGVudC0lQ09NUCVde2JhY2tncm91bmQtY29sb3I6I2Y1N2MwMH0ubWF0LWZsYXQtYnV0dG9uLm1hdC1hY2NlbnRbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXJhaXNlZC1idXR0b24ubWF0LWFjY2VudFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtZmFiLm1hdC1hY2NlbnRbX25nY29udGVudC0lQ09NUCVdLCAubWF0LW1pbmktZmFiLm1hdC1hY2NlbnRbX25nY29udGVudC0lQ09NUCVde2JhY2tncm91bmQtY29sb3I6I2ZmOTgwMH0ubWF0LWZsYXQtYnV0dG9uLm1hdC13YXJuW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1yYWlzZWQtYnV0dG9uLm1hdC13YXJuW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1mYWIubWF0LXdhcm5bX25nY29udGVudC0lQ09NUCVdLCAubWF0LW1pbmktZmFiLm1hdC13YXJuW19uZ2NvbnRlbnQtJUNPTVAlXXtiYWNrZ3JvdW5kLWNvbG9yOiNmNDQzMzZ9Lm1hdC1mbGF0LWJ1dHRvbi5tYXQtcHJpbWFyeS5tYXQtYnV0dG9uLWRpc2FibGVkW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1mbGF0LWJ1dHRvbi5tYXQtYWNjZW50Lm1hdC1idXR0b24tZGlzYWJsZWRbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWZsYXQtYnV0dG9uLm1hdC13YXJuLm1hdC1idXR0b24tZGlzYWJsZWRbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWZsYXQtYnV0dG9uLm1hdC1idXR0b24tZGlzYWJsZWQubWF0LWJ1dHRvbi1kaXNhYmxlZFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtcmFpc2VkLWJ1dHRvbi5tYXQtcHJpbWFyeS5tYXQtYnV0dG9uLWRpc2FibGVkW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1yYWlzZWQtYnV0dG9uLm1hdC1hY2NlbnQubWF0LWJ1dHRvbi1kaXNhYmxlZFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtcmFpc2VkLWJ1dHRvbi5tYXQtd2Fybi5tYXQtYnV0dG9uLWRpc2FibGVkW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1yYWlzZWQtYnV0dG9uLm1hdC1idXR0b24tZGlzYWJsZWQubWF0LWJ1dHRvbi1kaXNhYmxlZFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtZmFiLm1hdC1wcmltYXJ5Lm1hdC1idXR0b24tZGlzYWJsZWRbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWZhYi5tYXQtYWNjZW50Lm1hdC1idXR0b24tZGlzYWJsZWRbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWZhYi5tYXQtd2Fybi5tYXQtYnV0dG9uLWRpc2FibGVkW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1mYWIubWF0LWJ1dHRvbi1kaXNhYmxlZC5tYXQtYnV0dG9uLWRpc2FibGVkW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1taW5pLWZhYi5tYXQtcHJpbWFyeS5tYXQtYnV0dG9uLWRpc2FibGVkW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1taW5pLWZhYi5tYXQtYWNjZW50Lm1hdC1idXR0b24tZGlzYWJsZWRbX25nY29udGVudC0lQ09NUCVdLCAubWF0LW1pbmktZmFiLm1hdC13YXJuLm1hdC1idXR0b24tZGlzYWJsZWRbX25nY29udGVudC0lQ09NUCVdLCAubWF0LW1pbmktZmFiLm1hdC1idXR0b24tZGlzYWJsZWQubWF0LWJ1dHRvbi1kaXNhYmxlZFtfbmdjb250ZW50LSVDT01QJV17YmFja2dyb3VuZC1jb2xvcjpyZ2JhKDAsMCwwLC4xMil9Lm1hdC1mbGF0LWJ1dHRvbi5tYXQtcHJpbWFyeVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXJpcHBsZS1lbGVtZW50W19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1yYWlzZWQtYnV0dG9uLm1hdC1wcmltYXJ5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtcmlwcGxlLWVsZW1lbnRbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWZhYi5tYXQtcHJpbWFyeVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXJpcHBsZS1lbGVtZW50W19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1taW5pLWZhYi5tYXQtcHJpbWFyeVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXJpcHBsZS1lbGVtZW50W19uZ2NvbnRlbnQtJUNPTVAlXXtiYWNrZ3JvdW5kLWNvbG9yOnJnYmEoMjU1LDI1NSwyNTUsLjEpfS5tYXQtZmxhdC1idXR0b24ubWF0LWFjY2VudFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXJpcHBsZS1lbGVtZW50W19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1yYWlzZWQtYnV0dG9uLm1hdC1hY2NlbnRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1yaXBwbGUtZWxlbWVudFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtZmFiLm1hdC1hY2NlbnRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1yaXBwbGUtZWxlbWVudFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtbWluaS1mYWIubWF0LWFjY2VudFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXJpcHBsZS1lbGVtZW50W19uZ2NvbnRlbnQtJUNPTVAlXXtiYWNrZ3JvdW5kLWNvbG9yOnJnYmEoMjU1LDI1NSwyNTUsLjEpfS5tYXQtZmxhdC1idXR0b24ubWF0LXdhcm5bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1yaXBwbGUtZWxlbWVudFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtcmFpc2VkLWJ1dHRvbi5tYXQtd2Fybltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXJpcHBsZS1lbGVtZW50W19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1mYWIubWF0LXdhcm5bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1yaXBwbGUtZWxlbWVudFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtbWluaS1mYWIubWF0LXdhcm5bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1yaXBwbGUtZWxlbWVudFtfbmdjb250ZW50LSVDT01QJV17YmFja2dyb3VuZC1jb2xvcjpyZ2JhKDI1NSwyNTUsMjU1LC4xKX0ubWF0LXN0cm9rZWQtYnV0dG9uW19uZ2NvbnRlbnQtJUNPTVAlXTpub3QoW2NsYXNzKj1tYXQtZWxldmF0aW9uLXpdKSwgLm1hdC1mbGF0LWJ1dHRvbltfbmdjb250ZW50LSVDT01QJV06bm90KFtjbGFzcyo9bWF0LWVsZXZhdGlvbi16XSl7Ym94LXNoYWRvdzowcHggMHB4IDBweCAwcHggcmdiYSgwLCAwLCAwLCAwLjIpLDBweCAwcHggMHB4IDBweCByZ2JhKDAsIDAsIDAsIDAuMTQpLDBweCAwcHggMHB4IDBweCByZ2JhKDAsIDAsIDAsIDAuMTIpfS5tYXQtcmFpc2VkLWJ1dHRvbltfbmdjb250ZW50LSVDT01QJV06bm90KFtjbGFzcyo9bWF0LWVsZXZhdGlvbi16XSl7Ym94LXNoYWRvdzowcHggM3B4IDFweCAtMnB4IHJnYmEoMCwgMCwgMCwgMC4yKSwwcHggMnB4IDJweCAwcHggcmdiYSgwLCAwLCAwLCAwLjE0KSwwcHggMXB4IDVweCAwcHggcmdiYSgwLCAwLCAwLCAwLjEyKX0ubWF0LXJhaXNlZC1idXR0b25bX25nY29udGVudC0lQ09NUCVdOm5vdCgubWF0LWJ1dHRvbi1kaXNhYmxlZCk6YWN0aXZlOm5vdChbY2xhc3MqPW1hdC1lbGV2YXRpb24tel0pe2JveC1zaGFkb3c6MHB4IDVweCA1cHggLTNweCByZ2JhKDAsIDAsIDAsIDAuMiksMHB4IDhweCAxMHB4IDFweCByZ2JhKDAsIDAsIDAsIDAuMTQpLDBweCAzcHggMTRweCAycHggcmdiYSgwLCAwLCAwLCAwLjEyKX0ubWF0LXJhaXNlZC1idXR0b24ubWF0LWJ1dHRvbi1kaXNhYmxlZFtfbmdjb250ZW50LSVDT01QJV06bm90KFtjbGFzcyo9bWF0LWVsZXZhdGlvbi16XSl7Ym94LXNoYWRvdzowcHggMHB4IDBweCAwcHggcmdiYSgwLCAwLCAwLCAwLjIpLDBweCAwcHggMHB4IDBweCByZ2JhKDAsIDAsIDAsIDAuMTQpLDBweCAwcHggMHB4IDBweCByZ2JhKDAsIDAsIDAsIDAuMTIpfS5tYXQtZmFiW19uZ2NvbnRlbnQtJUNPTVAlXTpub3QoW2NsYXNzKj1tYXQtZWxldmF0aW9uLXpdKSwgLm1hdC1taW5pLWZhYltfbmdjb250ZW50LSVDT01QJV06bm90KFtjbGFzcyo9bWF0LWVsZXZhdGlvbi16XSl7Ym94LXNoYWRvdzowcHggM3B4IDVweCAtMXB4IHJnYmEoMCwgMCwgMCwgMC4yKSwwcHggNnB4IDEwcHggMHB4IHJnYmEoMCwgMCwgMCwgMC4xNCksMHB4IDFweCAxOHB4IDBweCByZ2JhKDAsIDAsIDAsIDAuMTIpfS5tYXQtZmFiW19uZ2NvbnRlbnQtJUNPTVAlXTpub3QoLm1hdC1idXR0b24tZGlzYWJsZWQpOmFjdGl2ZTpub3QoW2NsYXNzKj1tYXQtZWxldmF0aW9uLXpdKSwgLm1hdC1taW5pLWZhYltfbmdjb250ZW50LSVDT01QJV06bm90KC5tYXQtYnV0dG9uLWRpc2FibGVkKTphY3RpdmU6bm90KFtjbGFzcyo9bWF0LWVsZXZhdGlvbi16XSl7Ym94LXNoYWRvdzowcHggN3B4IDhweCAtNHB4IHJnYmEoMCwgMCwgMCwgMC4yKSwwcHggMTJweCAxN3B4IDJweCByZ2JhKDAsIDAsIDAsIDAuMTQpLDBweCA1cHggMjJweCA0cHggcmdiYSgwLCAwLCAwLCAwLjEyKX0ubWF0LWZhYi5tYXQtYnV0dG9uLWRpc2FibGVkW19uZ2NvbnRlbnQtJUNPTVAlXTpub3QoW2NsYXNzKj1tYXQtZWxldmF0aW9uLXpdKSwgLm1hdC1taW5pLWZhYi5tYXQtYnV0dG9uLWRpc2FibGVkW19uZ2NvbnRlbnQtJUNPTVAlXTpub3QoW2NsYXNzKj1tYXQtZWxldmF0aW9uLXpdKXtib3gtc2hhZG93OjBweCAwcHggMHB4IDBweCByZ2JhKDAsIDAsIDAsIDAuMiksMHB4IDBweCAwcHggMHB4IHJnYmEoMCwgMCwgMCwgMC4xNCksMHB4IDBweCAwcHggMHB4IHJnYmEoMCwgMCwgMCwgMC4xMil9Lm1hdC1idXR0b24tdG9nZ2xlLXN0YW5kYWxvbmVbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWJ1dHRvbi10b2dnbGUtZ3JvdXBbX25nY29udGVudC0lQ09NUCVde2JveC1zaGFkb3c6MHB4IDNweCAxcHggLTJweCByZ2JhKDAsIDAsIDAsIDAuMiksMHB4IDJweCAycHggMHB4IHJnYmEoMCwgMCwgMCwgMC4xNCksMHB4IDFweCA1cHggMHB4IHJnYmEoMCwgMCwgMCwgMC4xMil9Lm1hdC1idXR0b24tdG9nZ2xlLXN0YW5kYWxvbmUubWF0LWJ1dHRvbi10b2dnbGUtYXBwZWFyYW5jZS1zdGFuZGFyZFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtYnV0dG9uLXRvZ2dsZS1ncm91cC1hcHBlYXJhbmNlLXN0YW5kYXJkW19uZ2NvbnRlbnQtJUNPTVAlXXtib3gtc2hhZG93Om5vbmV9Lm1hdC1idXR0b24tdG9nZ2xlW19uZ2NvbnRlbnQtJUNPTVAlXXtjb2xvcjpyZ2JhKDAsMCwwLC4zOCl9Lm1hdC1idXR0b24tdG9nZ2xlW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtYnV0dG9uLXRvZ2dsZS1mb2N1cy1vdmVybGF5W19uZ2NvbnRlbnQtJUNPTVAlXXtiYWNrZ3JvdW5kLWNvbG9yOnJnYmEoMCwwLDAsLjEyKX0ubWF0LWJ1dHRvbi10b2dnbGUtYXBwZWFyYW5jZS1zdGFuZGFyZFtfbmdjb250ZW50LSVDT01QJV17Y29sb3I6IzIxMjEyMTtiYWNrZ3JvdW5kOiNmZmZ9Lm1hdC1idXR0b24tdG9nZ2xlLWFwcGVhcmFuY2Utc3RhbmRhcmRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1idXR0b24tdG9nZ2xlLWZvY3VzLW92ZXJsYXlbX25nY29udGVudC0lQ09NUCVde2JhY2tncm91bmQtY29sb3I6IzAwMH0ubWF0LWJ1dHRvbi10b2dnbGUtZ3JvdXAtYXBwZWFyYW5jZS1zdGFuZGFyZFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWJ1dHRvbi10b2dnbGVbX25nY29udGVudC0lQ09NUCVdICsgLm1hdC1idXR0b24tdG9nZ2xlW19uZ2NvbnRlbnQtJUNPTVAlXXtib3JkZXItbGVmdDpzb2xpZCAxcHggcmdiYSgwLDAsMCwuMTIpfVtkaXI9cnRsXVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWJ1dHRvbi10b2dnbGUtZ3JvdXAtYXBwZWFyYW5jZS1zdGFuZGFyZFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWJ1dHRvbi10b2dnbGVbX25nY29udGVudC0lQ09NUCVdICsgLm1hdC1idXR0b24tdG9nZ2xlW19uZ2NvbnRlbnQtJUNPTVAlXXtib3JkZXItbGVmdDpub25lO2JvcmRlci1yaWdodDpzb2xpZCAxcHggcmdiYSgwLDAsMCwuMTIpfS5tYXQtYnV0dG9uLXRvZ2dsZS1ncm91cC1hcHBlYXJhbmNlLXN0YW5kYXJkLm1hdC1idXR0b24tdG9nZ2xlLXZlcnRpY2FsW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtYnV0dG9uLXRvZ2dsZVtfbmdjb250ZW50LSVDT01QJV0gKyAubWF0LWJ1dHRvbi10b2dnbGVbX25nY29udGVudC0lQ09NUCVde2JvcmRlci1sZWZ0Om5vbmU7Ym9yZGVyLXJpZ2h0Om5vbmU7Ym9yZGVyLXRvcDpzb2xpZCAxcHggcmdiYSgwLDAsMCwuMTIpfS5tYXQtYnV0dG9uLXRvZ2dsZS1jaGVja2VkW19uZ2NvbnRlbnQtJUNPTVAlXXtiYWNrZ3JvdW5kLWNvbG9yOiNlMGUwZTA7Y29sb3I6IzYxNjE2MX0ubWF0LWJ1dHRvbi10b2dnbGUtY2hlY2tlZC5tYXQtYnV0dG9uLXRvZ2dsZS1hcHBlYXJhbmNlLXN0YW5kYXJkW19uZ2NvbnRlbnQtJUNPTVAlXXtjb2xvcjojMjEyMTIxfS5tYXQtYnV0dG9uLXRvZ2dsZS1kaXNhYmxlZFtfbmdjb250ZW50LSVDT01QJV17Y29sb3I6cmdiYSgwLDAsMCwuMjYpO2JhY2tncm91bmQtY29sb3I6I2VlZX0ubWF0LWJ1dHRvbi10b2dnbGUtZGlzYWJsZWQubWF0LWJ1dHRvbi10b2dnbGUtYXBwZWFyYW5jZS1zdGFuZGFyZFtfbmdjb250ZW50LSVDT01QJV17YmFja2dyb3VuZDojZmZmfS5tYXQtYnV0dG9uLXRvZ2dsZS1kaXNhYmxlZC5tYXQtYnV0dG9uLXRvZ2dsZS1jaGVja2VkW19uZ2NvbnRlbnQtJUNPTVAlXXtiYWNrZ3JvdW5kLWNvbG9yOiNiZGJkYmR9Lm1hdC1idXR0b24tdG9nZ2xlLXN0YW5kYWxvbmUubWF0LWJ1dHRvbi10b2dnbGUtYXBwZWFyYW5jZS1zdGFuZGFyZFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtYnV0dG9uLXRvZ2dsZS1ncm91cC1hcHBlYXJhbmNlLXN0YW5kYXJkW19uZ2NvbnRlbnQtJUNPTVAlXXtib3JkZXI6c29saWQgMXB4IHJnYmEoMCwwLDAsLjEyKX0ubWF0LWJ1dHRvbi10b2dnbGUtYXBwZWFyYW5jZS1zdGFuZGFyZFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWJ1dHRvbi10b2dnbGUtbGFiZWwtY29udGVudFtfbmdjb250ZW50LSVDT01QJV17bGluZS1oZWlnaHQ6NDhweH0ubWF0LWNhcmRbX25nY29udGVudC0lQ09NUCVde2JhY2tncm91bmQ6I2ZmZjtjb2xvcjojMjEyMTIxfS5tYXQtY2FyZFtfbmdjb250ZW50LSVDT01QJV06bm90KFtjbGFzcyo9bWF0LWVsZXZhdGlvbi16XSl7Ym94LXNoYWRvdzowcHggMnB4IDFweCAtMXB4IHJnYmEoMCwgMCwgMCwgMC4yKSwwcHggMXB4IDFweCAwcHggcmdiYSgwLCAwLCAwLCAwLjE0KSwwcHggMXB4IDNweCAwcHggcmdiYSgwLCAwLCAwLCAwLjEyKX0ubWF0LWNhcmQubWF0LWNhcmQtZmxhdFtfbmdjb250ZW50LSVDT01QJV06bm90KFtjbGFzcyo9bWF0LWVsZXZhdGlvbi16XSl7Ym94LXNoYWRvdzowcHggMHB4IDBweCAwcHggcmdiYSgwLCAwLCAwLCAwLjIpLDBweCAwcHggMHB4IDBweCByZ2JhKDAsIDAsIDAsIDAuMTQpLDBweCAwcHggMHB4IDBweCByZ2JhKDAsIDAsIDAsIDAuMTIpfS5tYXQtY2FyZC1zdWJ0aXRsZVtfbmdjb250ZW50LSVDT01QJV17Y29sb3I6IzYxNjE2MX0ubWF0LWNoZWNrYm94LWZyYW1lW19uZ2NvbnRlbnQtJUNPTVAlXXtib3JkZXItY29sb3I6IzYxNjE2MX0ubWF0LWNoZWNrYm94LWNoZWNrbWFya1tfbmdjb250ZW50LSVDT01QJV17ZmlsbDojZmFmYWZhfS5tYXQtY2hlY2tib3gtY2hlY2ttYXJrLXBhdGhbX25nY29udGVudC0lQ09NUCVde3N0cm9rZTojZmFmYWZhICFpbXBvcnRhbnR9Lm1hdC1jaGVja2JveC1taXhlZG1hcmtbX25nY29udGVudC0lQ09NUCVde2JhY2tncm91bmQtY29sb3I6I2ZhZmFmYX0ubWF0LWNoZWNrYm94LWluZGV0ZXJtaW5hdGUubWF0LXByaW1hcnlbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1jaGVja2JveC1iYWNrZ3JvdW5kW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1jaGVja2JveC1jaGVja2VkLm1hdC1wcmltYXJ5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtY2hlY2tib3gtYmFja2dyb3VuZFtfbmdjb250ZW50LSVDT01QJV17YmFja2dyb3VuZC1jb2xvcjojZjU3YzAwfS5tYXQtY2hlY2tib3gtaW5kZXRlcm1pbmF0ZS5tYXQtYWNjZW50W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtY2hlY2tib3gtYmFja2dyb3VuZFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtY2hlY2tib3gtY2hlY2tlZC5tYXQtYWNjZW50W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtY2hlY2tib3gtYmFja2dyb3VuZFtfbmdjb250ZW50LSVDT01QJV17YmFja2dyb3VuZC1jb2xvcjojZmY5ODAwfS5tYXQtY2hlY2tib3gtaW5kZXRlcm1pbmF0ZS5tYXQtd2Fybltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWNoZWNrYm94LWJhY2tncm91bmRbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWNoZWNrYm94LWNoZWNrZWQubWF0LXdhcm5bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1jaGVja2JveC1iYWNrZ3JvdW5kW19uZ2NvbnRlbnQtJUNPTVAlXXtiYWNrZ3JvdW5kLWNvbG9yOiNmNDQzMzZ9Lm1hdC1jaGVja2JveC1kaXNhYmxlZC5tYXQtY2hlY2tib3gtY2hlY2tlZFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWNoZWNrYm94LWJhY2tncm91bmRbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWNoZWNrYm94LWRpc2FibGVkLm1hdC1jaGVja2JveC1pbmRldGVybWluYXRlW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtY2hlY2tib3gtYmFja2dyb3VuZFtfbmdjb250ZW50LSVDT01QJV17YmFja2dyb3VuZC1jb2xvcjojYjBiMGIwfS5tYXQtY2hlY2tib3gtZGlzYWJsZWRbX25nY29udGVudC0lQ09NUCVdOm5vdCgubWF0LWNoZWNrYm94LWNoZWNrZWQpICAgLm1hdC1jaGVja2JveC1mcmFtZVtfbmdjb250ZW50LSVDT01QJV17Ym9yZGVyLWNvbG9yOiNiMGIwYjB9Lm1hdC1jaGVja2JveC1kaXNhYmxlZFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWNoZWNrYm94LWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXtjb2xvcjojNjE2MTYxfS5tYXQtY2hlY2tib3hbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1yaXBwbGUtZWxlbWVudFtfbmdjb250ZW50LSVDT01QJV17YmFja2dyb3VuZC1jb2xvcjojMDAwfS5tYXQtY2hlY2tib3gtY2hlY2tlZFtfbmdjb250ZW50LSVDT01QJV06bm90KC5tYXQtY2hlY2tib3gtZGlzYWJsZWQpLm1hdC1wcmltYXJ5ICAgLm1hdC1yaXBwbGUtZWxlbWVudFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtY2hlY2tib3hbX25nY29udGVudC0lQ09NUCVdOmFjdGl2ZTpub3QoLm1hdC1jaGVja2JveC1kaXNhYmxlZCkubWF0LXByaW1hcnkgICAubWF0LXJpcHBsZS1lbGVtZW50W19uZ2NvbnRlbnQtJUNPTVAlXXtiYWNrZ3JvdW5kOiNmNTdjMDB9Lm1hdC1jaGVja2JveC1jaGVja2VkW19uZ2NvbnRlbnQtJUNPTVAlXTpub3QoLm1hdC1jaGVja2JveC1kaXNhYmxlZCkubWF0LWFjY2VudCAgIC5tYXQtcmlwcGxlLWVsZW1lbnRbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWNoZWNrYm94W19uZ2NvbnRlbnQtJUNPTVAlXTphY3RpdmU6bm90KC5tYXQtY2hlY2tib3gtZGlzYWJsZWQpLm1hdC1hY2NlbnQgICAubWF0LXJpcHBsZS1lbGVtZW50W19uZ2NvbnRlbnQtJUNPTVAlXXtiYWNrZ3JvdW5kOiNmZjk4MDB9Lm1hdC1jaGVja2JveC1jaGVja2VkW19uZ2NvbnRlbnQtJUNPTVAlXTpub3QoLm1hdC1jaGVja2JveC1kaXNhYmxlZCkubWF0LXdhcm4gICAubWF0LXJpcHBsZS1lbGVtZW50W19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1jaGVja2JveFtfbmdjb250ZW50LSVDT01QJV06YWN0aXZlOm5vdCgubWF0LWNoZWNrYm94LWRpc2FibGVkKS5tYXQtd2FybiAgIC5tYXQtcmlwcGxlLWVsZW1lbnRbX25nY29udGVudC0lQ09NUCVde2JhY2tncm91bmQ6I2Y0NDMzNn0ubWF0LWNoaXAubWF0LXN0YW5kYXJkLWNoaXBbX25nY29udGVudC0lQ09NUCVde2JhY2tncm91bmQtY29sb3I6I2UwZTBlMDtjb2xvcjojMjEyMTIxfS5tYXQtY2hpcC5tYXQtc3RhbmRhcmQtY2hpcFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWNoaXAtcmVtb3ZlW19uZ2NvbnRlbnQtJUNPTVAlXXtjb2xvcjojMjEyMTIxO29wYWNpdHk6LjR9Lm1hdC1jaGlwLm1hdC1zdGFuZGFyZC1jaGlwW19uZ2NvbnRlbnQtJUNPTVAlXTpub3QoLm1hdC1jaGlwLWRpc2FibGVkKTphY3RpdmV7Ym94LXNoYWRvdzowcHggM3B4IDNweCAtMnB4IHJnYmEoMCwgMCwgMCwgMC4yKSwwcHggM3B4IDRweCAwcHggcmdiYSgwLCAwLCAwLCAwLjE0KSwwcHggMXB4IDhweCAwcHggcmdiYSgwLCAwLCAwLCAwLjEyKX0ubWF0LWNoaXAubWF0LXN0YW5kYXJkLWNoaXBbX25nY29udGVudC0lQ09NUCVdOm5vdCgubWF0LWNoaXAtZGlzYWJsZWQpICAgLm1hdC1jaGlwLXJlbW92ZVtfbmdjb250ZW50LSVDT01QJV06aG92ZXJ7b3BhY2l0eTouNTR9Lm1hdC1jaGlwLm1hdC1zdGFuZGFyZC1jaGlwLm1hdC1jaGlwLWRpc2FibGVkW19uZ2NvbnRlbnQtJUNPTVAlXXtvcGFjaXR5Oi40fS5tYXQtY2hpcC5tYXQtc3RhbmRhcmQtY2hpcFtfbmdjb250ZW50LSVDT01QJV06OmFmdGVye2JhY2tncm91bmQ6IzAwMH0ubWF0LWNoaXAubWF0LXN0YW5kYXJkLWNoaXAubWF0LWNoaXAtc2VsZWN0ZWQubWF0LXByaW1hcnlbX25nY29udGVudC0lQ09NUCVde2JhY2tncm91bmQtY29sb3I6I2Y1N2MwMDtjb2xvcjojZmZmfS5tYXQtY2hpcC5tYXQtc3RhbmRhcmQtY2hpcC5tYXQtY2hpcC1zZWxlY3RlZC5tYXQtcHJpbWFyeVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWNoaXAtcmVtb3ZlW19uZ2NvbnRlbnQtJUNPTVAlXXtjb2xvcjojZmZmO29wYWNpdHk6LjR9Lm1hdC1jaGlwLm1hdC1zdGFuZGFyZC1jaGlwLm1hdC1jaGlwLXNlbGVjdGVkLm1hdC1wcmltYXJ5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtcmlwcGxlLWVsZW1lbnRbX25nY29udGVudC0lQ09NUCVde2JhY2tncm91bmQtY29sb3I6cmdiYSgyNTUsMjU1LDI1NSwuMSl9Lm1hdC1jaGlwLm1hdC1zdGFuZGFyZC1jaGlwLm1hdC1jaGlwLXNlbGVjdGVkLm1hdC13YXJuW19uZ2NvbnRlbnQtJUNPTVAlXXtiYWNrZ3JvdW5kLWNvbG9yOiNmNDQzMzY7Y29sb3I6I2ZmZn0ubWF0LWNoaXAubWF0LXN0YW5kYXJkLWNoaXAubWF0LWNoaXAtc2VsZWN0ZWQubWF0LXdhcm5bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1jaGlwLXJlbW92ZVtfbmdjb250ZW50LSVDT01QJV17Y29sb3I6I2ZmZjtvcGFjaXR5Oi40fS5tYXQtY2hpcC5tYXQtc3RhbmRhcmQtY2hpcC5tYXQtY2hpcC1zZWxlY3RlZC5tYXQtd2Fybltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXJpcHBsZS1lbGVtZW50W19uZ2NvbnRlbnQtJUNPTVAlXXtiYWNrZ3JvdW5kLWNvbG9yOnJnYmEoMjU1LDI1NSwyNTUsLjEpfS5tYXQtY2hpcC5tYXQtc3RhbmRhcmQtY2hpcC5tYXQtY2hpcC1zZWxlY3RlZC5tYXQtYWNjZW50W19uZ2NvbnRlbnQtJUNPTVAlXXtiYWNrZ3JvdW5kLWNvbG9yOiNmZjk4MDA7Y29sb3I6I2ZmZn0ubWF0LWNoaXAubWF0LXN0YW5kYXJkLWNoaXAubWF0LWNoaXAtc2VsZWN0ZWQubWF0LWFjY2VudFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWNoaXAtcmVtb3ZlW19uZ2NvbnRlbnQtJUNPTVAlXXtjb2xvcjojZmZmO29wYWNpdHk6LjR9Lm1hdC1jaGlwLm1hdC1zdGFuZGFyZC1jaGlwLm1hdC1jaGlwLXNlbGVjdGVkLm1hdC1hY2NlbnRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1yaXBwbGUtZWxlbWVudFtfbmdjb250ZW50LSVDT01QJV17YmFja2dyb3VuZC1jb2xvcjpyZ2JhKDI1NSwyNTUsMjU1LC4xKX0ubWF0LXRhYmxlW19uZ2NvbnRlbnQtJUNPTVAlXXtiYWNrZ3JvdW5kOiNmZmZ9Lm1hdC10YWJsZVtfbmdjb250ZW50LSVDT01QJV0gICB0aGVhZFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdGFibGVbX25nY29udGVudC0lQ09NUCVdICAgdGJvZHlbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXRhYmxlW19uZ2NvbnRlbnQtJUNPTVAlXSAgIHRmb290W19uZ2NvbnRlbnQtJUNPTVAlXSwgbWF0LWhlYWRlci1yb3dbX25nY29udGVudC0lQ09NUCVdLCBtYXQtcm93W19uZ2NvbnRlbnQtJUNPTVAlXSwgbWF0LWZvb3Rlci1yb3dbX25nY29udGVudC0lQ09NUCVdLCBbbWF0LWhlYWRlci1yb3ddW19uZ2NvbnRlbnQtJUNPTVAlXSwgW21hdC1yb3ddW19uZ2NvbnRlbnQtJUNPTVAlXSwgW21hdC1mb290ZXItcm93XVtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdGFibGUtc3RpY2t5W19uZ2NvbnRlbnQtJUNPTVAlXXtiYWNrZ3JvdW5kOmluaGVyaXR9bWF0LXJvd1tfbmdjb250ZW50LSVDT01QJV0sIG1hdC1oZWFkZXItcm93W19uZ2NvbnRlbnQtJUNPTVAlXSwgbWF0LWZvb3Rlci1yb3dbX25nY29udGVudC0lQ09NUCVdLCB0aC5tYXQtaGVhZGVyLWNlbGxbX25nY29udGVudC0lQ09NUCVdLCB0ZC5tYXQtY2VsbFtfbmdjb250ZW50LSVDT01QJV0sIHRkLm1hdC1mb290ZXItY2VsbFtfbmdjb250ZW50LSVDT01QJV17Ym9yZGVyLWJvdHRvbS1jb2xvcjpyZ2JhKDAsMCwwLC4xMil9Lm1hdC1oZWFkZXItY2VsbFtfbmdjb250ZW50LSVDT01QJV17Y29sb3I6IzYxNjE2MX0ubWF0LWNlbGxbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWZvb3Rlci1jZWxsW19uZ2NvbnRlbnQtJUNPTVAlXXtjb2xvcjojMjEyMTIxfS5tYXQtY2FsZW5kYXItYXJyb3dbX25nY29udGVudC0lQ09NUCVde2JvcmRlci10b3AtY29sb3I6cmdiYSgwLDAsMCwuNTQpfS5tYXQtZGF0ZXBpY2tlci10b2dnbGVbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWRhdGVwaWNrZXItY29udGVudFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWNhbGVuZGFyLW5leHQtYnV0dG9uW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1kYXRlcGlja2VyLWNvbnRlbnRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1jYWxlbmRhci1wcmV2aW91cy1idXR0b25bX25nY29udGVudC0lQ09NUCVde2NvbG9yOnJnYmEoMCwwLDAsLjU0KX0ubWF0LWNhbGVuZGFyLXRhYmxlLWhlYWRlcltfbmdjb250ZW50LSVDT01QJV17Y29sb3I6cmdiYSgwLDAsMCwuMzgpfS5tYXQtY2FsZW5kYXItdGFibGUtaGVhZGVyLWRpdmlkZXJbX25nY29udGVudC0lQ09NUCVdOjphZnRlcntiYWNrZ3JvdW5kOnJnYmEoMCwwLDAsLjEyKX0ubWF0LWNhbGVuZGFyLWJvZHktbGFiZWxbX25nY29udGVudC0lQ09NUCVde2NvbG9yOiM2MTYxNjF9Lm1hdC1jYWxlbmRhci1ib2R5LWNlbGwtY29udGVudFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtZGF0ZS1yYW5nZS1pbnB1dC1zZXBhcmF0b3JbX25nY29udGVudC0lQ09NUCVde2NvbG9yOiMyMTIxMjE7Ym9yZGVyLWNvbG9yOnRyYW5zcGFyZW50fS5tYXQtY2FsZW5kYXItYm9keS1kaXNhYmxlZFtfbmdjb250ZW50LSVDT01QJV0gPiAubWF0LWNhbGVuZGFyLWJvZHktY2VsbC1jb250ZW50W19uZ2NvbnRlbnQtJUNPTVAlXTpub3QoLm1hdC1jYWxlbmRhci1ib2R5LXNlbGVjdGVkKTpub3QoLm1hdC1jYWxlbmRhci1ib2R5LWNvbXBhcmlzb24taWRlbnRpY2FsKXtjb2xvcjojNzU3NTc1fS5tYXQtZm9ybS1maWVsZC1kaXNhYmxlZFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWRhdGUtcmFuZ2UtaW5wdXQtc2VwYXJhdG9yW19uZ2NvbnRlbnQtJUNPTVAlXXtjb2xvcjojNzU3NTc1fS5tYXQtY2FsZW5kYXItYm9keS1jZWxsW19uZ2NvbnRlbnQtJUNPTVAlXTpub3QoLm1hdC1jYWxlbmRhci1ib2R5LWRpc2FibGVkKTpob3ZlciA+IC5tYXQtY2FsZW5kYXItYm9keS1jZWxsLWNvbnRlbnRbX25nY29udGVudC0lQ09NUCVdOm5vdCgubWF0LWNhbGVuZGFyLWJvZHktc2VsZWN0ZWQpOm5vdCgubWF0LWNhbGVuZGFyLWJvZHktY29tcGFyaXNvbi1pZGVudGljYWwpLCAuY2RrLWtleWJvYXJkLWZvY3VzZWRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1jYWxlbmRhci1ib2R5LWFjdGl2ZVtfbmdjb250ZW50LSVDT01QJV0gPiAubWF0LWNhbGVuZGFyLWJvZHktY2VsbC1jb250ZW50W19uZ2NvbnRlbnQtJUNPTVAlXTpub3QoLm1hdC1jYWxlbmRhci1ib2R5LXNlbGVjdGVkKTpub3QoLm1hdC1jYWxlbmRhci1ib2R5LWNvbXBhcmlzb24taWRlbnRpY2FsKSwgLmNkay1wcm9ncmFtLWZvY3VzZWRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1jYWxlbmRhci1ib2R5LWFjdGl2ZVtfbmdjb250ZW50LSVDT01QJV0gPiAubWF0LWNhbGVuZGFyLWJvZHktY2VsbC1jb250ZW50W19uZ2NvbnRlbnQtJUNPTVAlXTpub3QoLm1hdC1jYWxlbmRhci1ib2R5LXNlbGVjdGVkKTpub3QoLm1hdC1jYWxlbmRhci1ib2R5LWNvbXBhcmlzb24taWRlbnRpY2FsKXtiYWNrZ3JvdW5kLWNvbG9yOnJnYmEoMCwwLDAsLjA0KX0ubWF0LWNhbGVuZGFyLWJvZHktaW4tcHJldmlld1tfbmdjb250ZW50LSVDT01QJV17Y29sb3I6cmdiYSgwLDAsMCwuMjQpfS5tYXQtY2FsZW5kYXItYm9keS10b2RheVtfbmdjb250ZW50LSVDT01QJV06bm90KC5tYXQtY2FsZW5kYXItYm9keS1zZWxlY3RlZCk6bm90KC5tYXQtY2FsZW5kYXItYm9keS1jb21wYXJpc29uLWlkZW50aWNhbCl7Ym9yZGVyLWNvbG9yOnJnYmEoMCwwLDAsLjM4KX0ubWF0LWNhbGVuZGFyLWJvZHktZGlzYWJsZWRbX25nY29udGVudC0lQ09NUCVdID4gLm1hdC1jYWxlbmRhci1ib2R5LXRvZGF5W19uZ2NvbnRlbnQtJUNPTVAlXTpub3QoLm1hdC1jYWxlbmRhci1ib2R5LXNlbGVjdGVkKTpub3QoLm1hdC1jYWxlbmRhci1ib2R5LWNvbXBhcmlzb24taWRlbnRpY2FsKXtib3JkZXItY29sb3I6cmdiYSgwLDAsMCwuMTgpfS5tYXQtY2FsZW5kYXItYm9keS1pbi1yYW5nZVtfbmdjb250ZW50LSVDT01QJV06OmJlZm9yZXtiYWNrZ3JvdW5kOnJnYmEoMjQ1LDEyNCwwLC4yKX0ubWF0LWNhbGVuZGFyLWJvZHktY29tcGFyaXNvbi1pZGVudGljYWxbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWNhbGVuZGFyLWJvZHktaW4tY29tcGFyaXNvbi1yYW5nZVtfbmdjb250ZW50LSVDT01QJV06OmJlZm9yZXtiYWNrZ3JvdW5kOnJnYmEoMjQ5LDE3MSwwLC4yKX0ubWF0LWNhbGVuZGFyLWJvZHktY29tcGFyaXNvbi1icmlkZ2Utc3RhcnRbX25nY29udGVudC0lQ09NUCVdOjpiZWZvcmUsIFtkaXI9cnRsXVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWNhbGVuZGFyLWJvZHktY29tcGFyaXNvbi1icmlkZ2UtZW5kW19uZ2NvbnRlbnQtJUNPTVAlXTo6YmVmb3Jle2JhY2tncm91bmQ6bGluZWFyLWdyYWRpZW50KHRvIHJpZ2h0LCByZ2JhKDI0NSwgMTI0LCAwLCAwLjIpIDUwJSwgcmdiYSgyNDksIDE3MSwgMCwgMC4yKSA1MCUpfS5tYXQtY2FsZW5kYXItYm9keS1jb21wYXJpc29uLWJyaWRnZS1lbmRbX25nY29udGVudC0lQ09NUCVdOjpiZWZvcmUsIFtkaXI9cnRsXVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWNhbGVuZGFyLWJvZHktY29tcGFyaXNvbi1icmlkZ2Utc3RhcnRbX25nY29udGVudC0lQ09NUCVdOjpiZWZvcmV7YmFja2dyb3VuZDpsaW5lYXItZ3JhZGllbnQodG8gbGVmdCwgcmdiYSgyNDUsIDEyNCwgMCwgMC4yKSA1MCUsIHJnYmEoMjQ5LCAxNzEsIDAsIDAuMikgNTAlKX0ubWF0LWNhbGVuZGFyLWJvZHktaW4tcmFuZ2VbX25nY29udGVudC0lQ09NUCVdID4gLm1hdC1jYWxlbmRhci1ib2R5LWNvbXBhcmlzb24taWRlbnRpY2FsW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1jYWxlbmRhci1ib2R5LWluLWNvbXBhcmlzb24tcmFuZ2UubWF0LWNhbGVuZGFyLWJvZHktaW4tcmFuZ2VbX25nY29udGVudC0lQ09NUCVdOjphZnRlcntiYWNrZ3JvdW5kOiNhOGRhYjV9Lm1hdC1jYWxlbmRhci1ib2R5LWNvbXBhcmlzb24taWRlbnRpY2FsLm1hdC1jYWxlbmRhci1ib2R5LXNlbGVjdGVkW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1jYWxlbmRhci1ib2R5LWluLWNvbXBhcmlzb24tcmFuZ2VbX25nY29udGVudC0lQ09NUCVdID4gLm1hdC1jYWxlbmRhci1ib2R5LXNlbGVjdGVkW19uZ2NvbnRlbnQtJUNPTVAlXXtiYWNrZ3JvdW5kOiM0NmEzNWV9Lm1hdC1jYWxlbmRhci1ib2R5LXNlbGVjdGVkW19uZ2NvbnRlbnQtJUNPTVAlXXtiYWNrZ3JvdW5kLWNvbG9yOiNmNTdjMDA7Y29sb3I6I2ZmZn0ubWF0LWNhbGVuZGFyLWJvZHktZGlzYWJsZWRbX25nY29udGVudC0lQ09NUCVdID4gLm1hdC1jYWxlbmRhci1ib2R5LXNlbGVjdGVkW19uZ2NvbnRlbnQtJUNPTVAlXXtiYWNrZ3JvdW5kLWNvbG9yOnJnYmEoMjQ1LDEyNCwwLC40KX0ubWF0LWNhbGVuZGFyLWJvZHktdG9kYXkubWF0LWNhbGVuZGFyLWJvZHktc2VsZWN0ZWRbX25nY29udGVudC0lQ09NUCVde2JveC1zaGFkb3c6aW5zZXQgMCAwIDAgMXB4ICNmZmZ9Lm1hdC1kYXRlcGlja2VyLWNvbnRlbnRbX25nY29udGVudC0lQ09NUCVde2JveC1zaGFkb3c6MHB4IDJweCA0cHggLTFweCByZ2JhKDAsIDAsIDAsIDAuMiksMHB4IDRweCA1cHggMHB4IHJnYmEoMCwgMCwgMCwgMC4xNCksMHB4IDFweCAxMHB4IDBweCByZ2JhKDAsIDAsIDAsIDAuMTIpO2JhY2tncm91bmQtY29sb3I6I2ZmZjtjb2xvcjojMjEyMTIxfS5tYXQtZGF0ZXBpY2tlci1jb250ZW50Lm1hdC1hY2NlbnRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1jYWxlbmRhci1ib2R5LWluLXJhbmdlW19uZ2NvbnRlbnQtJUNPTVAlXTo6YmVmb3Jle2JhY2tncm91bmQ6cmdiYSgyNTUsMTUyLDAsLjIpfS5tYXQtZGF0ZXBpY2tlci1jb250ZW50Lm1hdC1hY2NlbnRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1jYWxlbmRhci1ib2R5LWNvbXBhcmlzb24taWRlbnRpY2FsW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1kYXRlcGlja2VyLWNvbnRlbnQubWF0LWFjY2VudFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWNhbGVuZGFyLWJvZHktaW4tY29tcGFyaXNvbi1yYW5nZVtfbmdjb250ZW50LSVDT01QJV06OmJlZm9yZXtiYWNrZ3JvdW5kOnJnYmEoMjQ5LDE3MSwwLC4yKX0ubWF0LWRhdGVwaWNrZXItY29udGVudC5tYXQtYWNjZW50W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtY2FsZW5kYXItYm9keS1jb21wYXJpc29uLWJyaWRnZS1zdGFydFtfbmdjb250ZW50LSVDT01QJV06OmJlZm9yZSwgLm1hdC1kYXRlcGlja2VyLWNvbnRlbnQubWF0LWFjY2VudFtfbmdjb250ZW50LSVDT01QJV0gICBbZGlyPXJ0bF1bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1jYWxlbmRhci1ib2R5LWNvbXBhcmlzb24tYnJpZGdlLWVuZFtfbmdjb250ZW50LSVDT01QJV06OmJlZm9yZXtiYWNrZ3JvdW5kOmxpbmVhci1ncmFkaWVudCh0byByaWdodCwgcmdiYSgyNTUsIDE1MiwgMCwgMC4yKSA1MCUsIHJnYmEoMjQ5LCAxNzEsIDAsIDAuMikgNTAlKX0ubWF0LWRhdGVwaWNrZXItY29udGVudC5tYXQtYWNjZW50W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtY2FsZW5kYXItYm9keS1jb21wYXJpc29uLWJyaWRnZS1lbmRbX25nY29udGVudC0lQ09NUCVdOjpiZWZvcmUsIC5tYXQtZGF0ZXBpY2tlci1jb250ZW50Lm1hdC1hY2NlbnRbX25nY29udGVudC0lQ09NUCVdICAgW2Rpcj1ydGxdW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtY2FsZW5kYXItYm9keS1jb21wYXJpc29uLWJyaWRnZS1zdGFydFtfbmdjb250ZW50LSVDT01QJV06OmJlZm9yZXtiYWNrZ3JvdW5kOmxpbmVhci1ncmFkaWVudCh0byBsZWZ0LCByZ2JhKDI1NSwgMTUyLCAwLCAwLjIpIDUwJSwgcmdiYSgyNDksIDE3MSwgMCwgMC4yKSA1MCUpfS5tYXQtZGF0ZXBpY2tlci1jb250ZW50Lm1hdC1hY2NlbnRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1jYWxlbmRhci1ib2R5LWluLXJhbmdlW19uZ2NvbnRlbnQtJUNPTVAlXSA+IC5tYXQtY2FsZW5kYXItYm9keS1jb21wYXJpc29uLWlkZW50aWNhbFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtZGF0ZXBpY2tlci1jb250ZW50Lm1hdC1hY2NlbnRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1jYWxlbmRhci1ib2R5LWluLWNvbXBhcmlzb24tcmFuZ2UubWF0LWNhbGVuZGFyLWJvZHktaW4tcmFuZ2VbX25nY29udGVudC0lQ09NUCVdOjphZnRlcntiYWNrZ3JvdW5kOiNhOGRhYjV9Lm1hdC1kYXRlcGlja2VyLWNvbnRlbnQubWF0LWFjY2VudFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWNhbGVuZGFyLWJvZHktY29tcGFyaXNvbi1pZGVudGljYWwubWF0LWNhbGVuZGFyLWJvZHktc2VsZWN0ZWRbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWRhdGVwaWNrZXItY29udGVudC5tYXQtYWNjZW50W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtY2FsZW5kYXItYm9keS1pbi1jb21wYXJpc29uLXJhbmdlW19uZ2NvbnRlbnQtJUNPTVAlXSA+IC5tYXQtY2FsZW5kYXItYm9keS1zZWxlY3RlZFtfbmdjb250ZW50LSVDT01QJV17YmFja2dyb3VuZDojNDZhMzVlfS5tYXQtZGF0ZXBpY2tlci1jb250ZW50Lm1hdC1hY2NlbnRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1jYWxlbmRhci1ib2R5LXNlbGVjdGVkW19uZ2NvbnRlbnQtJUNPTVAlXXtiYWNrZ3JvdW5kLWNvbG9yOiNmZjk4MDA7Y29sb3I6I2ZmZn0ubWF0LWRhdGVwaWNrZXItY29udGVudC5tYXQtYWNjZW50W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtY2FsZW5kYXItYm9keS1kaXNhYmxlZFtfbmdjb250ZW50LSVDT01QJV0gPiAubWF0LWNhbGVuZGFyLWJvZHktc2VsZWN0ZWRbX25nY29udGVudC0lQ09NUCVde2JhY2tncm91bmQtY29sb3I6cmdiYSgyNTUsMTUyLDAsLjQpfS5tYXQtZGF0ZXBpY2tlci1jb250ZW50Lm1hdC1hY2NlbnRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1jYWxlbmRhci1ib2R5LXRvZGF5Lm1hdC1jYWxlbmRhci1ib2R5LXNlbGVjdGVkW19uZ2NvbnRlbnQtJUNPTVAlXXtib3gtc2hhZG93Omluc2V0IDAgMCAwIDFweCAjZmZmfS5tYXQtZGF0ZXBpY2tlci1jb250ZW50Lm1hdC13YXJuW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtY2FsZW5kYXItYm9keS1pbi1yYW5nZVtfbmdjb250ZW50LSVDT01QJV06OmJlZm9yZXtiYWNrZ3JvdW5kOnJnYmEoMjQ0LDY3LDU0LC4yKX0ubWF0LWRhdGVwaWNrZXItY29udGVudC5tYXQtd2Fybltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWNhbGVuZGFyLWJvZHktY29tcGFyaXNvbi1pZGVudGljYWxbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWRhdGVwaWNrZXItY29udGVudC5tYXQtd2Fybltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWNhbGVuZGFyLWJvZHktaW4tY29tcGFyaXNvbi1yYW5nZVtfbmdjb250ZW50LSVDT01QJV06OmJlZm9yZXtiYWNrZ3JvdW5kOnJnYmEoMjQ5LDE3MSwwLC4yKX0ubWF0LWRhdGVwaWNrZXItY29udGVudC5tYXQtd2Fybltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWNhbGVuZGFyLWJvZHktY29tcGFyaXNvbi1icmlkZ2Utc3RhcnRbX25nY29udGVudC0lQ09NUCVdOjpiZWZvcmUsIC5tYXQtZGF0ZXBpY2tlci1jb250ZW50Lm1hdC13YXJuW19uZ2NvbnRlbnQtJUNPTVAlXSAgIFtkaXI9cnRsXVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWNhbGVuZGFyLWJvZHktY29tcGFyaXNvbi1icmlkZ2UtZW5kW19uZ2NvbnRlbnQtJUNPTVAlXTo6YmVmb3Jle2JhY2tncm91bmQ6bGluZWFyLWdyYWRpZW50KHRvIHJpZ2h0LCByZ2JhKDI0NCwgNjcsIDU0LCAwLjIpIDUwJSwgcmdiYSgyNDksIDE3MSwgMCwgMC4yKSA1MCUpfS5tYXQtZGF0ZXBpY2tlci1jb250ZW50Lm1hdC13YXJuW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtY2FsZW5kYXItYm9keS1jb21wYXJpc29uLWJyaWRnZS1lbmRbX25nY29udGVudC0lQ09NUCVdOjpiZWZvcmUsIC5tYXQtZGF0ZXBpY2tlci1jb250ZW50Lm1hdC13YXJuW19uZ2NvbnRlbnQtJUNPTVAlXSAgIFtkaXI9cnRsXVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWNhbGVuZGFyLWJvZHktY29tcGFyaXNvbi1icmlkZ2Utc3RhcnRbX25nY29udGVudC0lQ09NUCVdOjpiZWZvcmV7YmFja2dyb3VuZDpsaW5lYXItZ3JhZGllbnQodG8gbGVmdCwgcmdiYSgyNDQsIDY3LCA1NCwgMC4yKSA1MCUsIHJnYmEoMjQ5LCAxNzEsIDAsIDAuMikgNTAlKX0ubWF0LWRhdGVwaWNrZXItY29udGVudC5tYXQtd2Fybltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWNhbGVuZGFyLWJvZHktaW4tcmFuZ2VbX25nY29udGVudC0lQ09NUCVdID4gLm1hdC1jYWxlbmRhci1ib2R5LWNvbXBhcmlzb24taWRlbnRpY2FsW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1kYXRlcGlja2VyLWNvbnRlbnQubWF0LXdhcm5bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1jYWxlbmRhci1ib2R5LWluLWNvbXBhcmlzb24tcmFuZ2UubWF0LWNhbGVuZGFyLWJvZHktaW4tcmFuZ2VbX25nY29udGVudC0lQ09NUCVdOjphZnRlcntiYWNrZ3JvdW5kOiNhOGRhYjV9Lm1hdC1kYXRlcGlja2VyLWNvbnRlbnQubWF0LXdhcm5bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1jYWxlbmRhci1ib2R5LWNvbXBhcmlzb24taWRlbnRpY2FsLm1hdC1jYWxlbmRhci1ib2R5LXNlbGVjdGVkW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1kYXRlcGlja2VyLWNvbnRlbnQubWF0LXdhcm5bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1jYWxlbmRhci1ib2R5LWluLWNvbXBhcmlzb24tcmFuZ2VbX25nY29udGVudC0lQ09NUCVdID4gLm1hdC1jYWxlbmRhci1ib2R5LXNlbGVjdGVkW19uZ2NvbnRlbnQtJUNPTVAlXXtiYWNrZ3JvdW5kOiM0NmEzNWV9Lm1hdC1kYXRlcGlja2VyLWNvbnRlbnQubWF0LXdhcm5bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1jYWxlbmRhci1ib2R5LXNlbGVjdGVkW19uZ2NvbnRlbnQtJUNPTVAlXXtiYWNrZ3JvdW5kLWNvbG9yOiNmNDQzMzY7Y29sb3I6I2ZmZn0ubWF0LWRhdGVwaWNrZXItY29udGVudC5tYXQtd2Fybltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWNhbGVuZGFyLWJvZHktZGlzYWJsZWRbX25nY29udGVudC0lQ09NUCVdID4gLm1hdC1jYWxlbmRhci1ib2R5LXNlbGVjdGVkW19uZ2NvbnRlbnQtJUNPTVAlXXtiYWNrZ3JvdW5kLWNvbG9yOnJnYmEoMjQ0LDY3LDU0LC40KX0ubWF0LWRhdGVwaWNrZXItY29udGVudC5tYXQtd2Fybltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWNhbGVuZGFyLWJvZHktdG9kYXkubWF0LWNhbGVuZGFyLWJvZHktc2VsZWN0ZWRbX25nY29udGVudC0lQ09NUCVde2JveC1zaGFkb3c6aW5zZXQgMCAwIDAgMXB4ICNmZmZ9Lm1hdC1kYXRlcGlja2VyLWNvbnRlbnQtdG91Y2hbX25nY29udGVudC0lQ09NUCVde2JveC1zaGFkb3c6MHB4IDBweCAwcHggMHB4IHJnYmEoMCwgMCwgMCwgMC4yKSwwcHggMHB4IDBweCAwcHggcmdiYSgwLCAwLCAwLCAwLjE0KSwwcHggMHB4IDBweCAwcHggcmdiYSgwLCAwLCAwLCAwLjEyKX0ubWF0LWRhdGVwaWNrZXItdG9nZ2xlLWFjdGl2ZVtfbmdjb250ZW50LSVDT01QJV17Y29sb3I6I2Y1N2MwMH0ubWF0LWRhdGVwaWNrZXItdG9nZ2xlLWFjdGl2ZS5tYXQtYWNjZW50W19uZ2NvbnRlbnQtJUNPTVAlXXtjb2xvcjojZmY5ODAwfS5tYXQtZGF0ZXBpY2tlci10b2dnbGUtYWN0aXZlLm1hdC13YXJuW19uZ2NvbnRlbnQtJUNPTVAlXXtjb2xvcjojZjQ0MzM2fS5tYXQtZGF0ZS1yYW5nZS1pbnB1dC1pbm5lcltkaXNhYmxlZF1bX25nY29udGVudC0lQ09NUCVde2NvbG9yOiM3NTc1NzV9Lm1hdC1kaWFsb2ctY29udGFpbmVyW19uZ2NvbnRlbnQtJUNPTVAlXXtib3gtc2hhZG93OjBweCAxMXB4IDE1cHggLTdweCByZ2JhKDAsIDAsIDAsIDAuMiksMHB4IDI0cHggMzhweCAzcHggcmdiYSgwLCAwLCAwLCAwLjE0KSwwcHggOXB4IDQ2cHggOHB4IHJnYmEoMCwgMCwgMCwgMC4xMik7YmFja2dyb3VuZDojZmZmO2NvbG9yOiMyMTIxMjF9Lm1hdC1kaXZpZGVyW19uZ2NvbnRlbnQtJUNPTVAlXXtib3JkZXItdG9wLWNvbG9yOnJnYmEoMCwwLDAsLjEyKX0ubWF0LWRpdmlkZXItdmVydGljYWxbX25nY29udGVudC0lQ09NUCVde2JvcmRlci1yaWdodC1jb2xvcjpyZ2JhKDAsMCwwLC4xMil9Lm1hdC1leHBhbnNpb24tcGFuZWxbX25nY29udGVudC0lQ09NUCVde2JhY2tncm91bmQ6I2ZmZjtjb2xvcjojMjEyMTIxfS5tYXQtZXhwYW5zaW9uLXBhbmVsW19uZ2NvbnRlbnQtJUNPTVAlXTpub3QoW2NsYXNzKj1tYXQtZWxldmF0aW9uLXpdKXtib3gtc2hhZG93OjBweCAzcHggMXB4IC0ycHggcmdiYSgwLCAwLCAwLCAwLjIpLDBweCAycHggMnB4IDBweCByZ2JhKDAsIDAsIDAsIDAuMTQpLDBweCAxcHggNXB4IDBweCByZ2JhKDAsIDAsIDAsIDAuMTIpfS5tYXQtYWN0aW9uLXJvd1tfbmdjb250ZW50LSVDT01QJV17Ym9yZGVyLXRvcC1jb2xvcjpyZ2JhKDAsMCwwLC4xMil9Lm1hdC1leHBhbnNpb24tcGFuZWxbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1leHBhbnNpb24tcGFuZWwtaGVhZGVyLmNkay1rZXlib2FyZC1mb2N1c2VkW19uZ2NvbnRlbnQtJUNPTVAlXTpub3QoW2FyaWEtZGlzYWJsZWQ9dHJ1ZV0pLCAubWF0LWV4cGFuc2lvbi1wYW5lbFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWV4cGFuc2lvbi1wYW5lbC1oZWFkZXIuY2RrLXByb2dyYW0tZm9jdXNlZFtfbmdjb250ZW50LSVDT01QJV06bm90KFthcmlhLWRpc2FibGVkPXRydWVdKSwgLm1hdC1leHBhbnNpb24tcGFuZWxbX25nY29udGVudC0lQ09NUCVdOm5vdCgubWF0LWV4cGFuZGVkKSAgIC5tYXQtZXhwYW5zaW9uLXBhbmVsLWhlYWRlcltfbmdjb250ZW50LSVDT01QJV06aG92ZXI6bm90KFthcmlhLWRpc2FibGVkPXRydWVdKXtiYWNrZ3JvdW5kOnJnYmEoMCwwLDAsLjA0KX1AbWVkaWEoaG92ZXI6IG5vbmUpey5tYXQtZXhwYW5zaW9uLXBhbmVsW19uZ2NvbnRlbnQtJUNPTVAlXTpub3QoLm1hdC1leHBhbmRlZCk6bm90KFthcmlhLWRpc2FibGVkPXRydWVdKSAgIC5tYXQtZXhwYW5zaW9uLXBhbmVsLWhlYWRlcltfbmdjb250ZW50LSVDT01QJV06aG92ZXJ7YmFja2dyb3VuZDojZmZmfX0ubWF0LWV4cGFuc2lvbi1wYW5lbC1oZWFkZXItdGl0bGVbX25nY29udGVudC0lQ09NUCVde2NvbG9yOiMyMTIxMjF9Lm1hdC1leHBhbnNpb24tcGFuZWwtaGVhZGVyLWRlc2NyaXB0aW9uW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1leHBhbnNpb24taW5kaWNhdG9yW19uZ2NvbnRlbnQtJUNPTVAlXTo6YWZ0ZXJ7Y29sb3I6IzYxNjE2MX0ubWF0LWV4cGFuc2lvbi1wYW5lbC1oZWFkZXJbYXJpYS1kaXNhYmxlZD10cnVlXVtfbmdjb250ZW50LSVDT01QJV17Y29sb3I6cmdiYSgwLDAsMCwuMjYpfS5tYXQtZXhwYW5zaW9uLXBhbmVsLWhlYWRlclthcmlhLWRpc2FibGVkPXRydWVdW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZXhwYW5zaW9uLXBhbmVsLWhlYWRlci10aXRsZVtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtZXhwYW5zaW9uLXBhbmVsLWhlYWRlclthcmlhLWRpc2FibGVkPXRydWVdW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZXhwYW5zaW9uLXBhbmVsLWhlYWRlci1kZXNjcmlwdGlvbltfbmdjb250ZW50LSVDT01QJV17Y29sb3I6aW5oZXJpdH0ubWF0LWV4cGFuc2lvbi1wYW5lbC1oZWFkZXJbX25nY29udGVudC0lQ09NUCVde2hlaWdodDo0OHB4fS5tYXQtZXhwYW5zaW9uLXBhbmVsLWhlYWRlci5tYXQtZXhwYW5kZWRbX25nY29udGVudC0lQ09NUCVde2hlaWdodDo2NHB4fS5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17Y29sb3I6cmdiYSg5Nyw5Nyw5NywuNil9Lm1hdC1oaW50W19uZ2NvbnRlbnQtJUNPTVAlXXtjb2xvcjpyZ2JhKDk3LDk3LDk3LC42KX0ubWF0LWZvcm0tZmllbGQubWF0LWZvY3VzZWRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXtjb2xvcjojZjU3YzAwfS5tYXQtZm9ybS1maWVsZC5tYXQtZm9jdXNlZFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWwubWF0LWFjY2VudFtfbmdjb250ZW50LSVDT01QJV17Y29sb3I6I2ZmOTgwMH0ubWF0LWZvcm0tZmllbGQubWF0LWZvY3VzZWRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsLm1hdC13YXJuW19uZ2NvbnRlbnQtJUNPTVAlXXtjb2xvcjojZjQ0MzM2fS5tYXQtZm9jdXNlZFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtcmVxdWlyZWQtbWFya2VyW19uZ2NvbnRlbnQtJUNPTVAlXXtjb2xvcjojZmY5ODAwfS5tYXQtZm9ybS1maWVsZC1yaXBwbGVbX25nY29udGVudC0lQ09NUCVde2JhY2tncm91bmQtY29sb3I6cmdiYSgwLDAsMCwuODcpfS5tYXQtZm9ybS1maWVsZC5tYXQtZm9jdXNlZFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtcmlwcGxlW19uZ2NvbnRlbnQtJUNPTVAlXXtiYWNrZ3JvdW5kLWNvbG9yOiNmNTdjMDB9Lm1hdC1mb3JtLWZpZWxkLm1hdC1mb2N1c2VkW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1yaXBwbGUubWF0LWFjY2VudFtfbmdjb250ZW50LSVDT01QJV17YmFja2dyb3VuZC1jb2xvcjojZmY5ODAwfS5tYXQtZm9ybS1maWVsZC5tYXQtZm9jdXNlZFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtcmlwcGxlLm1hdC13YXJuW19uZ2NvbnRlbnQtJUNPTVAlXXtiYWNrZ3JvdW5kLWNvbG9yOiNmNDQzMzZ9Lm1hdC1mb3JtLWZpZWxkLXR5cGUtbWF0LW5hdGl2ZS1zZWxlY3QubWF0LWZvY3VzZWRbX25nY29udGVudC0lQ09NUCVdOm5vdCgubWF0LWZvcm0tZmllbGQtaW52YWxpZCkgICAubWF0LWZvcm0tZmllbGQtaW5maXhbX25nY29udGVudC0lQ09NUCVdOjphZnRlcntjb2xvcjojZjU3YzAwfS5tYXQtZm9ybS1maWVsZC10eXBlLW1hdC1uYXRpdmUtc2VsZWN0Lm1hdC1mb2N1c2VkW19uZ2NvbnRlbnQtJUNPTVAlXTpub3QoLm1hdC1mb3JtLWZpZWxkLWludmFsaWQpLm1hdC1hY2NlbnQgICAubWF0LWZvcm0tZmllbGQtaW5maXhbX25nY29udGVudC0lQ09NUCVdOjphZnRlcntjb2xvcjojZmY5ODAwfS5tYXQtZm9ybS1maWVsZC10eXBlLW1hdC1uYXRpdmUtc2VsZWN0Lm1hdC1mb2N1c2VkW19uZ2NvbnRlbnQtJUNPTVAlXTpub3QoLm1hdC1mb3JtLWZpZWxkLWludmFsaWQpLm1hdC13YXJuICAgLm1hdC1mb3JtLWZpZWxkLWluZml4W19uZ2NvbnRlbnQtJUNPTVAlXTo6YWZ0ZXJ7Y29sb3I6I2Y0NDMzNn0ubWF0LWZvcm0tZmllbGQubWF0LWZvcm0tZmllbGQtaW52YWxpZFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVde2NvbG9yOiNmNDQzMzZ9Lm1hdC1mb3JtLWZpZWxkLm1hdC1mb3JtLWZpZWxkLWludmFsaWRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsLm1hdC1hY2NlbnRbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWZvcm0tZmllbGQubWF0LWZvcm0tZmllbGQtaW52YWxpZFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLXJlcXVpcmVkLW1hcmtlcltfbmdjb250ZW50LSVDT01QJV17Y29sb3I6I2Y0NDMzNn0ubWF0LWZvcm0tZmllbGQubWF0LWZvcm0tZmllbGQtaW52YWxpZFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtcmlwcGxlW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1mb3JtLWZpZWxkLm1hdC1mb3JtLWZpZWxkLWludmFsaWRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLXJpcHBsZS5tYXQtYWNjZW50W19uZ2NvbnRlbnQtJUNPTVAlXXtiYWNrZ3JvdW5kLWNvbG9yOiNmNDQzMzZ9Lm1hdC1lcnJvcltfbmdjb250ZW50LSVDT01QJV17Y29sb3I6I2Y0NDMzNn0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1sZWdhY3lbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXtjb2xvcjojNjE2MTYxfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWxlZ2FjeVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWhpbnRbX25nY29udGVudC0lQ09NUCVde2NvbG9yOiM2MTYxNjF9Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtbGVnYWN5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC11bmRlcmxpbmVbX25nY29udGVudC0lQ09NUCVde2JhY2tncm91bmQtY29sb3I6cmdiYSgwLDAsMCwuNDIpfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWxlZ2FjeS5tYXQtZm9ybS1maWVsZC1kaXNhYmxlZFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtdW5kZXJsaW5lW19uZ2NvbnRlbnQtJUNPTVAlXXtiYWNrZ3JvdW5kLWltYWdlOmxpbmVhci1ncmFkaWVudCh0byByaWdodCwgcmdiYSgwLCAwLCAwLCAwLjQyKSAwJSwgcmdiYSgwLCAwLCAwLCAwLjQyKSAzMyUsIHRyYW5zcGFyZW50IDAlKTtiYWNrZ3JvdW5kLXNpemU6NHB4IDEwMCU7YmFja2dyb3VuZC1yZXBlYXQ6cmVwZWF0LXh9Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2Utc3RhbmRhcmRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLXVuZGVybGluZVtfbmdjb250ZW50LSVDT01QJV17YmFja2dyb3VuZC1jb2xvcjpyZ2JhKDAsMCwwLC40Mil9Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2Utc3RhbmRhcmQubWF0LWZvcm0tZmllbGQtZGlzYWJsZWRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLXVuZGVybGluZVtfbmdjb250ZW50LSVDT01QJV17YmFja2dyb3VuZC1pbWFnZTpsaW5lYXItZ3JhZGllbnQodG8gcmlnaHQsIHJnYmEoMCwgMCwgMCwgMC40MikgMCUsIHJnYmEoMCwgMCwgMCwgMC40MikgMzMlLCB0cmFuc3BhcmVudCAwJSk7YmFja2dyb3VuZC1zaXplOjRweCAxMDAlO2JhY2tncm91bmQtcmVwZWF0OnJlcGVhdC14fS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWZpbGxbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWZsZXhbX25nY29udGVudC0lQ09NUCVde2JhY2tncm91bmQtY29sb3I6cmdiYSgwLDAsMCwuMDQpfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWZpbGwubWF0LWZvcm0tZmllbGQtZGlzYWJsZWRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWZsZXhbX25nY29udGVudC0lQ09NUCVde2JhY2tncm91bmQtY29sb3I6cmdiYSgwLDAsMCwuMDIpfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWZpbGxbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLXVuZGVybGluZVtfbmdjb250ZW50LSVDT01QJV06OmJlZm9yZXtiYWNrZ3JvdW5kLWNvbG9yOnJnYmEoMCwwLDAsLjQyKX0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1maWxsLm1hdC1mb3JtLWZpZWxkLWRpc2FibGVkW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17Y29sb3I6Izc1NzU3NX0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1maWxsLm1hdC1mb3JtLWZpZWxkLWRpc2FibGVkW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC11bmRlcmxpbmVbX25nY29udGVudC0lQ09NUCVdOjpiZWZvcmV7YmFja2dyb3VuZC1jb2xvcjp0cmFuc3BhcmVudH0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1vdXRsaW5lW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1vdXRsaW5lW19uZ2NvbnRlbnQtJUNPTVAlXXtjb2xvcjpyZ2JhKDAsMCwwLC4xMil9Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2Utb3V0bGluZVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtb3V0bGluZS10aGlja1tfbmdjb250ZW50LSVDT01QJV17Y29sb3I6cmdiYSgwLDAsMCwuODcpfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLW91dGxpbmUubWF0LWZvY3VzZWRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLW91dGxpbmUtdGhpY2tbX25nY29udGVudC0lQ09NUCVde2NvbG9yOiNmNTdjMDB9Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2Utb3V0bGluZS5tYXQtZm9jdXNlZC5tYXQtYWNjZW50W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1vdXRsaW5lLXRoaWNrW19uZ2NvbnRlbnQtJUNPTVAlXXtjb2xvcjojZmY5ODAwfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLW91dGxpbmUubWF0LWZvY3VzZWQubWF0LXdhcm5bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLW91dGxpbmUtdGhpY2tbX25nY29udGVudC0lQ09NUCVde2NvbG9yOiNmNDQzMzZ9Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2Utb3V0bGluZS5tYXQtZm9ybS1maWVsZC1pbnZhbGlkLm1hdC1mb3JtLWZpZWxkLWludmFsaWRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLW91dGxpbmUtdGhpY2tbX25nY29udGVudC0lQ09NUCVde2NvbG9yOiNmNDQzMzZ9Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2Utb3V0bGluZS5tYXQtZm9ybS1maWVsZC1kaXNhYmxlZFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVde2NvbG9yOiM3NTc1NzV9Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2Utb3V0bGluZS5tYXQtZm9ybS1maWVsZC1kaXNhYmxlZFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtb3V0bGluZVtfbmdjb250ZW50LSVDT01QJV17Y29sb3I6cmdiYSgwLDAsMCwuMDYpfS5tYXQtaWNvbi5tYXQtcHJpbWFyeVtfbmdjb250ZW50LSVDT01QJV17Y29sb3I6I2Y1N2MwMH0ubWF0LWljb24ubWF0LWFjY2VudFtfbmdjb250ZW50LSVDT01QJV17Y29sb3I6I2ZmOTgwMH0ubWF0LWljb24ubWF0LXdhcm5bX25nY29udGVudC0lQ09NUCVde2NvbG9yOiNmNDQzMzZ9Lm1hdC1mb3JtLWZpZWxkLXR5cGUtbWF0LW5hdGl2ZS1zZWxlY3RbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWluZml4W19uZ2NvbnRlbnQtJUNPTVAlXTo6YWZ0ZXJ7Y29sb3I6IzYxNjE2MX0ubWF0LWlucHV0LWVsZW1lbnRbX25nY29udGVudC0lQ09NUCVdOmRpc2FibGVkLCAubWF0LWZvcm0tZmllbGQtdHlwZS1tYXQtbmF0aXZlLXNlbGVjdC5tYXQtZm9ybS1maWVsZC1kaXNhYmxlZFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtaW5maXhbX25nY29udGVudC0lQ09NUCVdOjphZnRlcntjb2xvcjojNzU3NTc1fS5tYXQtaW5wdXQtZWxlbWVudFtfbmdjb250ZW50LSVDT01QJV17Y2FyZXQtY29sb3I6I2Y1N2MwMH0ubWF0LWlucHV0LWVsZW1lbnRbX25nY29udGVudC0lQ09NUCVdOjpwbGFjZWhvbGRlcntjb2xvcjpyZ2JhKDk3LDk3LDk3LC40Mil9Lm1hdC1pbnB1dC1lbGVtZW50W19uZ2NvbnRlbnQtJUNPTVAlXTo6LW1vei1wbGFjZWhvbGRlcntjb2xvcjpyZ2JhKDk3LDk3LDk3LC40Mil9Lm1hdC1pbnB1dC1lbGVtZW50W19uZ2NvbnRlbnQtJUNPTVAlXTo6LXdlYmtpdC1pbnB1dC1wbGFjZWhvbGRlcntjb2xvcjpyZ2JhKDk3LDk3LDk3LC40Mil9Lm1hdC1pbnB1dC1lbGVtZW50W19uZ2NvbnRlbnQtJUNPTVAlXTotbXMtaW5wdXQtcGxhY2Vob2xkZXJ7Y29sb3I6cmdiYSg5Nyw5Nyw5NywuNDIpfS5tYXQtZm9ybS1maWVsZC5tYXQtYWNjZW50W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaW5wdXQtZWxlbWVudFtfbmdjb250ZW50LSVDT01QJV17Y2FyZXQtY29sb3I6I2ZmOTgwMH0ubWF0LWZvcm0tZmllbGQubWF0LXdhcm5bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pbnB1dC1lbGVtZW50W19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1mb3JtLWZpZWxkLWludmFsaWRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pbnB1dC1lbGVtZW50W19uZ2NvbnRlbnQtJUNPTVAlXXtjYXJldC1jb2xvcjojZjQ0MzM2fS5tYXQtZm9ybS1maWVsZC10eXBlLW1hdC1uYXRpdmUtc2VsZWN0Lm1hdC1mb3JtLWZpZWxkLWludmFsaWRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWluZml4W19uZ2NvbnRlbnQtJUNPTVAlXTo6YWZ0ZXJ7Y29sb3I6I2Y0NDMzNn0ubWF0LWxpc3QtYmFzZVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpc3QtaXRlbVtfbmdjb250ZW50LSVDT01QJV17Y29sb3I6IzIxMjEyMX0ubWF0LWxpc3QtYmFzZVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpc3Qtb3B0aW9uW19uZ2NvbnRlbnQtJUNPTVAlXXtjb2xvcjojMjEyMTIxfS5tYXQtbGlzdC1iYXNlW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtc3ViaGVhZGVyW19uZ2NvbnRlbnQtJUNPTVAlXXtjb2xvcjojNjE2MTYxfS5tYXQtbGlzdC1pdGVtLWRpc2FibGVkW19uZ2NvbnRlbnQtJUNPTVAlXXtiYWNrZ3JvdW5kLWNvbG9yOiNlZWV9Lm1hdC1saXN0LW9wdGlvbltfbmdjb250ZW50LSVDT01QJV06aG92ZXIsIC5tYXQtbGlzdC1vcHRpb25bX25nY29udGVudC0lQ09NUCVdOmZvY3VzLCAubWF0LW5hdi1saXN0W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGlzdC1pdGVtW19uZ2NvbnRlbnQtJUNPTVAlXTpob3ZlciwgLm1hdC1uYXYtbGlzdFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpc3QtaXRlbVtfbmdjb250ZW50LSVDT01QJV06Zm9jdXMsIC5tYXQtYWN0aW9uLWxpc3RbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saXN0LWl0ZW1bX25nY29udGVudC0lQ09NUCVdOmhvdmVyLCAubWF0LWFjdGlvbi1saXN0W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGlzdC1pdGVtW19uZ2NvbnRlbnQtJUNPTVAlXTpmb2N1c3tiYWNrZ3JvdW5kOnJnYmEoMCwwLDAsLjA0KX0ubWF0LWxpc3Qtc2luZ2xlLXNlbGVjdGVkLW9wdGlvbltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtbGlzdC1zaW5nbGUtc2VsZWN0ZWQtb3B0aW9uW19uZ2NvbnRlbnQtJUNPTVAlXTpob3ZlciwgLm1hdC1saXN0LXNpbmdsZS1zZWxlY3RlZC1vcHRpb25bX25nY29udGVudC0lQ09NUCVdOmZvY3Vze2JhY2tncm91bmQ6cmdiYSgwLDAsMCwuMTIpfS5tYXQtbWVudS1wYW5lbFtfbmdjb250ZW50LSVDT01QJV17YmFja2dyb3VuZDojZmZmfS5tYXQtbWVudS1wYW5lbFtfbmdjb250ZW50LSVDT01QJV06bm90KFtjbGFzcyo9bWF0LWVsZXZhdGlvbi16XSl7Ym94LXNoYWRvdzowcHggMnB4IDRweCAtMXB4IHJnYmEoMCwgMCwgMCwgMC4yKSwwcHggNHB4IDVweCAwcHggcmdiYSgwLCAwLCAwLCAwLjE0KSwwcHggMXB4IDEwcHggMHB4IHJnYmEoMCwgMCwgMCwgMC4xMil9Lm1hdC1tZW51LWl0ZW1bX25nY29udGVudC0lQ09NUCVde2JhY2tncm91bmQ6dHJhbnNwYXJlbnQ7Y29sb3I6IzIxMjEyMX0ubWF0LW1lbnUtaXRlbVtkaXNhYmxlZF1bX25nY29udGVudC0lQ09NUCVdLCAubWF0LW1lbnUtaXRlbVtkaXNhYmxlZF1bX25nY29udGVudC0lQ09NUCVdOjphZnRlcntjb2xvcjpyZ2JhKDAsMCwwLC4zOCl9Lm1hdC1tZW51LWl0ZW1bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pY29uLW5vLWNvbG9yW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1tZW51LWl0ZW0tc3VibWVudS10cmlnZ2VyW19uZ2NvbnRlbnQtJUNPTVAlXTo6YWZ0ZXJ7Y29sb3I6cmdiYSgwLDAsMCwuNTQpfS5tYXQtbWVudS1pdGVtW19uZ2NvbnRlbnQtJUNPTVAlXTpob3Zlcjpub3QoW2Rpc2FibGVkXSksIC5tYXQtbWVudS1pdGVtLmNkay1wcm9ncmFtLWZvY3VzZWRbX25nY29udGVudC0lQ09NUCVdOm5vdChbZGlzYWJsZWRdKSwgLm1hdC1tZW51LWl0ZW0uY2RrLWtleWJvYXJkLWZvY3VzZWRbX25nY29udGVudC0lQ09NUCVdOm5vdChbZGlzYWJsZWRdKSwgLm1hdC1tZW51LWl0ZW0taGlnaGxpZ2h0ZWRbX25nY29udGVudC0lQ09NUCVdOm5vdChbZGlzYWJsZWRdKXtiYWNrZ3JvdW5kOnJnYmEoMCwwLDAsLjA0KX0ubWF0LXBhZ2luYXRvcltfbmdjb250ZW50LSVDT01QJV17YmFja2dyb3VuZDojZmZmfS5tYXQtcGFnaW5hdG9yW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1wYWdpbmF0b3ItcGFnZS1zaXplW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtc2VsZWN0LXRyaWdnZXJbX25nY29udGVudC0lQ09NUCVde2NvbG9yOiM2MTYxNjF9Lm1hdC1wYWdpbmF0b3ItZGVjcmVtZW50W19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1wYWdpbmF0b3ItaW5jcmVtZW50W19uZ2NvbnRlbnQtJUNPTVAlXXtib3JkZXItdG9wOjJweCBzb2xpZCByZ2JhKDAsMCwwLC41NCk7Ym9yZGVyLXJpZ2h0OjJweCBzb2xpZCByZ2JhKDAsMCwwLC41NCl9Lm1hdC1wYWdpbmF0b3ItZmlyc3RbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXBhZ2luYXRvci1sYXN0W19uZ2NvbnRlbnQtJUNPTVAlXXtib3JkZXItdG9wOjJweCBzb2xpZCByZ2JhKDAsMCwwLC41NCl9Lm1hdC1pY29uLWJ1dHRvbltkaXNhYmxlZF1bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1wYWdpbmF0b3ItZGVjcmVtZW50W19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1pY29uLWJ1dHRvbltkaXNhYmxlZF1bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1wYWdpbmF0b3ItaW5jcmVtZW50W19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1pY29uLWJ1dHRvbltkaXNhYmxlZF1bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1wYWdpbmF0b3ItZmlyc3RbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWljb24tYnV0dG9uW2Rpc2FibGVkXVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXBhZ2luYXRvci1sYXN0W19uZ2NvbnRlbnQtJUNPTVAlXXtib3JkZXItY29sb3I6cmdiYSgwLDAsMCwuMzgpfS5tYXQtcGFnaW5hdG9yLWNvbnRhaW5lcltfbmdjb250ZW50LSVDT01QJV17bWluLWhlaWdodDo1NnB4fS5tYXQtcHJvZ3Jlc3MtYmFyLWJhY2tncm91bmRbX25nY29udGVudC0lQ09NUCVde2ZpbGw6I2ZmOTgwMH0ubWF0LXByb2dyZXNzLWJhci1idWZmZXJbX25nY29udGVudC0lQ09NUCVde2JhY2tncm91bmQtY29sb3I6I2ZmOTgwMH0ubWF0LXByb2dyZXNzLWJhci1maWxsW19uZ2NvbnRlbnQtJUNPTVAlXTo6YWZ0ZXJ7YmFja2dyb3VuZC1jb2xvcjojZjU3YzAwfS5tYXQtcHJvZ3Jlc3MtYmFyLm1hdC1hY2NlbnRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1wcm9ncmVzcy1iYXItYmFja2dyb3VuZFtfbmdjb250ZW50LSVDT01QJV17ZmlsbDojZmY5ODAwfS5tYXQtcHJvZ3Jlc3MtYmFyLm1hdC1hY2NlbnRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1wcm9ncmVzcy1iYXItYnVmZmVyW19uZ2NvbnRlbnQtJUNPTVAlXXtiYWNrZ3JvdW5kLWNvbG9yOiNmZjk4MDB9Lm1hdC1wcm9ncmVzcy1iYXIubWF0LWFjY2VudFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXByb2dyZXNzLWJhci1maWxsW19uZ2NvbnRlbnQtJUNPTVAlXTo6YWZ0ZXJ7YmFja2dyb3VuZC1jb2xvcjojZmY5ODAwfS5tYXQtcHJvZ3Jlc3MtYmFyLm1hdC13YXJuW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtcHJvZ3Jlc3MtYmFyLWJhY2tncm91bmRbX25nY29udGVudC0lQ09NUCVde2ZpbGw6I2ZmY2RkMn0ubWF0LXByb2dyZXNzLWJhci5tYXQtd2Fybltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXByb2dyZXNzLWJhci1idWZmZXJbX25nY29udGVudC0lQ09NUCVde2JhY2tncm91bmQtY29sb3I6I2ZmY2RkMn0ubWF0LXByb2dyZXNzLWJhci5tYXQtd2Fybltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXByb2dyZXNzLWJhci1maWxsW19uZ2NvbnRlbnQtJUNPTVAlXTo6YWZ0ZXJ7YmFja2dyb3VuZC1jb2xvcjojZjQ0MzM2fS5tYXQtcHJvZ3Jlc3Mtc3Bpbm5lcltfbmdjb250ZW50LSVDT01QJV0gICBjaXJjbGVbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXNwaW5uZXJbX25nY29udGVudC0lQ09NUCVdICAgY2lyY2xlW19uZ2NvbnRlbnQtJUNPTVAlXXtzdHJva2U6I2Y1N2MwMH0ubWF0LXByb2dyZXNzLXNwaW5uZXIubWF0LWFjY2VudFtfbmdjb250ZW50LSVDT01QJV0gICBjaXJjbGVbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXNwaW5uZXIubWF0LWFjY2VudFtfbmdjb250ZW50LSVDT01QJV0gICBjaXJjbGVbX25nY29udGVudC0lQ09NUCVde3N0cm9rZTojZmY5ODAwfS5tYXQtcHJvZ3Jlc3Mtc3Bpbm5lci5tYXQtd2Fybltfbmdjb250ZW50LSVDT01QJV0gICBjaXJjbGVbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXNwaW5uZXIubWF0LXdhcm5bX25nY29udGVudC0lQ09NUCVdICAgY2lyY2xlW19uZ2NvbnRlbnQtJUNPTVAlXXtzdHJva2U6I2Y0NDMzNn0ubWF0LXJhZGlvLW91dGVyLWNpcmNsZVtfbmdjb250ZW50LSVDT01QJV17Ym9yZGVyLWNvbG9yOiM2MTYxNjF9Lm1hdC1yYWRpby1idXR0b24ubWF0LXByaW1hcnkubWF0LXJhZGlvLWNoZWNrZWRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1yYWRpby1vdXRlci1jaXJjbGVbX25nY29udGVudC0lQ09NUCVde2JvcmRlci1jb2xvcjojZjU3YzAwfS5tYXQtcmFkaW8tYnV0dG9uLm1hdC1wcmltYXJ5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtcmFkaW8taW5uZXItY2lyY2xlW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1yYWRpby1idXR0b24ubWF0LXByaW1hcnlbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1yYWRpby1yaXBwbGVbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1yaXBwbGUtZWxlbWVudFtfbmdjb250ZW50LSVDT01QJV06bm90KC5tYXQtcmFkaW8tcGVyc2lzdGVudC1yaXBwbGUpLCAubWF0LXJhZGlvLWJ1dHRvbi5tYXQtcHJpbWFyeS5tYXQtcmFkaW8tY2hlY2tlZFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXJhZGlvLXBlcnNpc3RlbnQtcmlwcGxlW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1yYWRpby1idXR0b24ubWF0LXByaW1hcnlbX25nY29udGVudC0lQ09NUCVdOmFjdGl2ZSAgIC5tYXQtcmFkaW8tcGVyc2lzdGVudC1yaXBwbGVbX25nY29udGVudC0lQ09NUCVde2JhY2tncm91bmQtY29sb3I6I2Y1N2MwMH0ubWF0LXJhZGlvLWJ1dHRvbi5tYXQtYWNjZW50Lm1hdC1yYWRpby1jaGVja2VkW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtcmFkaW8tb3V0ZXItY2lyY2xlW19uZ2NvbnRlbnQtJUNPTVAlXXtib3JkZXItY29sb3I6I2ZmOTgwMH0ubWF0LXJhZGlvLWJ1dHRvbi5tYXQtYWNjZW50W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtcmFkaW8taW5uZXItY2lyY2xlW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1yYWRpby1idXR0b24ubWF0LWFjY2VudFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXJhZGlvLXJpcHBsZVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXJpcHBsZS1lbGVtZW50W19uZ2NvbnRlbnQtJUNPTVAlXTpub3QoLm1hdC1yYWRpby1wZXJzaXN0ZW50LXJpcHBsZSksIC5tYXQtcmFkaW8tYnV0dG9uLm1hdC1hY2NlbnQubWF0LXJhZGlvLWNoZWNrZWRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1yYWRpby1wZXJzaXN0ZW50LXJpcHBsZVtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtcmFkaW8tYnV0dG9uLm1hdC1hY2NlbnRbX25nY29udGVudC0lQ09NUCVdOmFjdGl2ZSAgIC5tYXQtcmFkaW8tcGVyc2lzdGVudC1yaXBwbGVbX25nY29udGVudC0lQ09NUCVde2JhY2tncm91bmQtY29sb3I6I2ZmOTgwMH0ubWF0LXJhZGlvLWJ1dHRvbi5tYXQtd2Fybi5tYXQtcmFkaW8tY2hlY2tlZFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXJhZGlvLW91dGVyLWNpcmNsZVtfbmdjb250ZW50LSVDT01QJV17Ym9yZGVyLWNvbG9yOiNmNDQzMzZ9Lm1hdC1yYWRpby1idXR0b24ubWF0LXdhcm5bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1yYWRpby1pbm5lci1jaXJjbGVbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXJhZGlvLWJ1dHRvbi5tYXQtd2Fybltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXJhZGlvLXJpcHBsZVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXJpcHBsZS1lbGVtZW50W19uZ2NvbnRlbnQtJUNPTVAlXTpub3QoLm1hdC1yYWRpby1wZXJzaXN0ZW50LXJpcHBsZSksIC5tYXQtcmFkaW8tYnV0dG9uLm1hdC13YXJuLm1hdC1yYWRpby1jaGVja2VkW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtcmFkaW8tcGVyc2lzdGVudC1yaXBwbGVbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXJhZGlvLWJ1dHRvbi5tYXQtd2Fybltfbmdjb250ZW50LSVDT01QJV06YWN0aXZlICAgLm1hdC1yYWRpby1wZXJzaXN0ZW50LXJpcHBsZVtfbmdjb250ZW50LSVDT01QJV17YmFja2dyb3VuZC1jb2xvcjojZjQ0MzM2fS5tYXQtcmFkaW8tYnV0dG9uLm1hdC1yYWRpby1kaXNhYmxlZC5tYXQtcmFkaW8tY2hlY2tlZFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXJhZGlvLW91dGVyLWNpcmNsZVtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtcmFkaW8tYnV0dG9uLm1hdC1yYWRpby1kaXNhYmxlZFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXJhZGlvLW91dGVyLWNpcmNsZVtfbmdjb250ZW50LSVDT01QJV17Ym9yZGVyLWNvbG9yOnJnYmEoMCwwLDAsLjM4KX0ubWF0LXJhZGlvLWJ1dHRvbi5tYXQtcmFkaW8tZGlzYWJsZWRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1yYWRpby1yaXBwbGVbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1yaXBwbGUtZWxlbWVudFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtcmFkaW8tYnV0dG9uLm1hdC1yYWRpby1kaXNhYmxlZFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXJhZGlvLWlubmVyLWNpcmNsZVtfbmdjb250ZW50LSVDT01QJV17YmFja2dyb3VuZC1jb2xvcjpyZ2JhKDAsMCwwLC4zOCl9Lm1hdC1yYWRpby1idXR0b24ubWF0LXJhZGlvLWRpc2FibGVkW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtcmFkaW8tbGFiZWwtY29udGVudFtfbmdjb250ZW50LSVDT01QJV17Y29sb3I6cmdiYSgwLDAsMCwuMzgpfS5tYXQtcmFkaW8tYnV0dG9uW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtcmlwcGxlLWVsZW1lbnRbX25nY29udGVudC0lQ09NUCVde2JhY2tncm91bmQtY29sb3I6IzAwMH0ubWF0LXNlbGVjdC12YWx1ZVtfbmdjb250ZW50LSVDT01QJV17Y29sb3I6IzIxMjEyMX0ubWF0LXNlbGVjdC1wbGFjZWhvbGRlcltfbmdjb250ZW50LSVDT01QJV17Y29sb3I6cmdiYSg5Nyw5Nyw5NywuNDIpfS5tYXQtc2VsZWN0LWRpc2FibGVkW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtc2VsZWN0LXZhbHVlW19uZ2NvbnRlbnQtJUNPTVAlXXtjb2xvcjojNzU3NTc1fS5tYXQtc2VsZWN0LWFycm93W19uZ2NvbnRlbnQtJUNPTVAlXXtjb2xvcjojNjE2MTYxfS5tYXQtc2VsZWN0LXBhbmVsW19uZ2NvbnRlbnQtJUNPTVAlXXtiYWNrZ3JvdW5kOiNmZmZ9Lm1hdC1zZWxlY3QtcGFuZWxbX25nY29udGVudC0lQ09NUCVdOm5vdChbY2xhc3MqPW1hdC1lbGV2YXRpb24tel0pe2JveC1zaGFkb3c6MHB4IDJweCA0cHggLTFweCByZ2JhKDAsIDAsIDAsIDAuMiksMHB4IDRweCA1cHggMHB4IHJnYmEoMCwgMCwgMCwgMC4xNCksMHB4IDFweCAxMHB4IDBweCByZ2JhKDAsIDAsIDAsIDAuMTIpfS5tYXQtc2VsZWN0LXBhbmVsW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtb3B0aW9uLm1hdC1zZWxlY3RlZFtfbmdjb250ZW50LSVDT01QJV06bm90KC5tYXQtb3B0aW9uLW11bHRpcGxlKXtiYWNrZ3JvdW5kOnJnYmEoMCwwLDAsLjEyKX0ubWF0LWZvcm0tZmllbGQubWF0LWZvY3VzZWQubWF0LXByaW1hcnlbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1zZWxlY3QtYXJyb3dbX25nY29udGVudC0lQ09NUCVde2NvbG9yOiNmNTdjMDB9Lm1hdC1mb3JtLWZpZWxkLm1hdC1mb2N1c2VkLm1hdC1hY2NlbnRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1zZWxlY3QtYXJyb3dbX25nY29udGVudC0lQ09NUCVde2NvbG9yOiNmZjk4MDB9Lm1hdC1mb3JtLWZpZWxkLm1hdC1mb2N1c2VkLm1hdC13YXJuW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtc2VsZWN0LWFycm93W19uZ2NvbnRlbnQtJUNPTVAlXXtjb2xvcjojZjQ0MzM2fS5tYXQtZm9ybS1maWVsZFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXNlbGVjdC5tYXQtc2VsZWN0LWludmFsaWRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1zZWxlY3QtYXJyb3dbX25nY29udGVudC0lQ09NUCVde2NvbG9yOiNmNDQzMzZ9Lm1hdC1mb3JtLWZpZWxkW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtc2VsZWN0Lm1hdC1zZWxlY3QtZGlzYWJsZWRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1zZWxlY3QtYXJyb3dbX25nY29udGVudC0lQ09NUCVde2NvbG9yOiM3NTc1NzV9Lm1hdC1kcmF3ZXItY29udGFpbmVyW19uZ2NvbnRlbnQtJUNPTVAlXXtiYWNrZ3JvdW5kLWNvbG9yOiNmYWZhZmE7Y29sb3I6IzIxMjEyMX0ubWF0LWRyYXdlcltfbmdjb250ZW50LSVDT01QJV17YmFja2dyb3VuZC1jb2xvcjojZmZmO2NvbG9yOiMyMTIxMjF9Lm1hdC1kcmF3ZXIubWF0LWRyYXdlci1wdXNoW19uZ2NvbnRlbnQtJUNPTVAlXXtiYWNrZ3JvdW5kLWNvbG9yOiNmZmZ9Lm1hdC1kcmF3ZXJbX25nY29udGVudC0lQ09NUCVdOm5vdCgubWF0LWRyYXdlci1zaWRlKXtib3gtc2hhZG93OjBweCA4cHggMTBweCAtNXB4IHJnYmEoMCwgMCwgMCwgMC4yKSwwcHggMTZweCAyNHB4IDJweCByZ2JhKDAsIDAsIDAsIDAuMTQpLDBweCA2cHggMzBweCA1cHggcmdiYSgwLCAwLCAwLCAwLjEyKX0ubWF0LWRyYXdlci1zaWRlW19uZ2NvbnRlbnQtJUNPTVAlXXtib3JkZXItcmlnaHQ6c29saWQgMXB4IHJnYmEoMCwwLDAsLjEyKX0ubWF0LWRyYXdlci1zaWRlLm1hdC1kcmF3ZXItZW5kW19uZ2NvbnRlbnQtJUNPTVAlXXtib3JkZXItbGVmdDpzb2xpZCAxcHggcmdiYSgwLDAsMCwuMTIpO2JvcmRlci1yaWdodDpub25lfVtkaXI9cnRsXVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWRyYXdlci1zaWRlW19uZ2NvbnRlbnQtJUNPTVAlXXtib3JkZXItbGVmdDpzb2xpZCAxcHggcmdiYSgwLDAsMCwuMTIpO2JvcmRlci1yaWdodDpub25lfVtkaXI9cnRsXVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWRyYXdlci1zaWRlLm1hdC1kcmF3ZXItZW5kW19uZ2NvbnRlbnQtJUNPTVAlXXtib3JkZXItbGVmdDpub25lO2JvcmRlci1yaWdodDpzb2xpZCAxcHggcmdiYSgwLDAsMCwuMTIpfS5tYXQtZHJhd2VyLWJhY2tkcm9wLm1hdC1kcmF3ZXItc2hvd25bX25nY29udGVudC0lQ09NUCVde2JhY2tncm91bmQtY29sb3I6cmdiYSgwLDAsMCwuNil9Lm1hdC1zbGlkZS10b2dnbGUubWF0LWNoZWNrZWRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1zbGlkZS10b2dnbGUtdGh1bWJbX25nY29udGVudC0lQ09NUCVde2JhY2tncm91bmQtY29sb3I6I2ZmOTgwMH0ubWF0LXNsaWRlLXRvZ2dsZS5tYXQtY2hlY2tlZFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXNsaWRlLXRvZ2dsZS1iYXJbX25nY29udGVudC0lQ09NUCVde2JhY2tncm91bmQtY29sb3I6cmdiYSgyNTUsMTUyLDAsLjU0KX0ubWF0LXNsaWRlLXRvZ2dsZS5tYXQtY2hlY2tlZFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXJpcHBsZS1lbGVtZW50W19uZ2NvbnRlbnQtJUNPTVAlXXtiYWNrZ3JvdW5kLWNvbG9yOiNmZjk4MDB9Lm1hdC1zbGlkZS10b2dnbGUubWF0LXByaW1hcnkubWF0LWNoZWNrZWRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1zbGlkZS10b2dnbGUtdGh1bWJbX25nY29udGVudC0lQ09NUCVde2JhY2tncm91bmQtY29sb3I6I2Y1N2MwMH0ubWF0LXNsaWRlLXRvZ2dsZS5tYXQtcHJpbWFyeS5tYXQtY2hlY2tlZFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXNsaWRlLXRvZ2dsZS1iYXJbX25nY29udGVudC0lQ09NUCVde2JhY2tncm91bmQtY29sb3I6cmdiYSgyNDUsMTI0LDAsLjU0KX0ubWF0LXNsaWRlLXRvZ2dsZS5tYXQtcHJpbWFyeS5tYXQtY2hlY2tlZFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXJpcHBsZS1lbGVtZW50W19uZ2NvbnRlbnQtJUNPTVAlXXtiYWNrZ3JvdW5kLWNvbG9yOiNmNTdjMDB9Lm1hdC1zbGlkZS10b2dnbGUubWF0LXdhcm4ubWF0LWNoZWNrZWRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1zbGlkZS10b2dnbGUtdGh1bWJbX25nY29udGVudC0lQ09NUCVde2JhY2tncm91bmQtY29sb3I6I2Y0NDMzNn0ubWF0LXNsaWRlLXRvZ2dsZS5tYXQtd2Fybi5tYXQtY2hlY2tlZFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXNsaWRlLXRvZ2dsZS1iYXJbX25nY29udGVudC0lQ09NUCVde2JhY2tncm91bmQtY29sb3I6cmdiYSgyNDQsNjcsNTQsLjU0KX0ubWF0LXNsaWRlLXRvZ2dsZS5tYXQtd2Fybi5tYXQtY2hlY2tlZFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXJpcHBsZS1lbGVtZW50W19uZ2NvbnRlbnQtJUNPTVAlXXtiYWNrZ3JvdW5kLWNvbG9yOiNmNDQzMzZ9Lm1hdC1zbGlkZS10b2dnbGVbX25nY29udGVudC0lQ09NUCVdOm5vdCgubWF0LWNoZWNrZWQpICAgLm1hdC1yaXBwbGUtZWxlbWVudFtfbmdjb250ZW50LSVDT01QJV17YmFja2dyb3VuZC1jb2xvcjojMDAwfS5tYXQtc2xpZGUtdG9nZ2xlLXRodW1iW19uZ2NvbnRlbnQtJUNPTVAlXXtib3gtc2hhZG93OjBweCAycHggMXB4IC0xcHggcmdiYSgwLCAwLCAwLCAwLjIpLDBweCAxcHggMXB4IDBweCByZ2JhKDAsIDAsIDAsIDAuMTQpLDBweCAxcHggM3B4IDBweCByZ2JhKDAsIDAsIDAsIDAuMTIpO2JhY2tncm91bmQtY29sb3I6I2ZhZmFmYX0ubWF0LXNsaWRlLXRvZ2dsZS1iYXJbX25nY29udGVudC0lQ09NUCVde2JhY2tncm91bmQtY29sb3I6cmdiYSgwLDAsMCwuMzgpfS5tYXQtc2xpZGVyLXRyYWNrLWJhY2tncm91bmRbX25nY29udGVudC0lQ09NUCVde2JhY2tncm91bmQtY29sb3I6cmdiYSgwLDAsMCwuMjYpfS5tYXQtcHJpbWFyeVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXNsaWRlci10cmFjay1maWxsW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1wcmltYXJ5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtc2xpZGVyLXRodW1iW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1wcmltYXJ5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtc2xpZGVyLXRodW1iLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXtiYWNrZ3JvdW5kLWNvbG9yOiNmNTdjMDB9Lm1hdC1wcmltYXJ5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtc2xpZGVyLXRodW1iLWxhYmVsLXRleHRbX25nY29udGVudC0lQ09NUCVde2NvbG9yOiNmZmZ9Lm1hdC1wcmltYXJ5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtc2xpZGVyLWZvY3VzLXJpbmdbX25nY29udGVudC0lQ09NUCVde2JhY2tncm91bmQtY29sb3I6cmdiYSgyNDUsMTI0LDAsLjIpfS5tYXQtYWNjZW50W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtc2xpZGVyLXRyYWNrLWZpbGxbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWFjY2VudFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXNsaWRlci10aHVtYltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtYWNjZW50W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtc2xpZGVyLXRodW1iLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXtiYWNrZ3JvdW5kLWNvbG9yOiNmZjk4MDB9Lm1hdC1hY2NlbnRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1zbGlkZXItdGh1bWItbGFiZWwtdGV4dFtfbmdjb250ZW50LSVDT01QJV17Y29sb3I6I2ZmZn0ubWF0LWFjY2VudFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXNsaWRlci1mb2N1cy1yaW5nW19uZ2NvbnRlbnQtJUNPTVAlXXtiYWNrZ3JvdW5kLWNvbG9yOnJnYmEoMjU1LDE1MiwwLC4yKX0ubWF0LXdhcm5bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1zbGlkZXItdHJhY2stZmlsbFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtd2Fybltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXNsaWRlci10aHVtYltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtd2Fybltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXNsaWRlci10aHVtYi1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17YmFja2dyb3VuZC1jb2xvcjojZjQ0MzM2fS5tYXQtd2Fybltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXNsaWRlci10aHVtYi1sYWJlbC10ZXh0W19uZ2NvbnRlbnQtJUNPTVAlXXtjb2xvcjojZmZmfS5tYXQtd2Fybltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXNsaWRlci1mb2N1cy1yaW5nW19uZ2NvbnRlbnQtJUNPTVAlXXtiYWNrZ3JvdW5kLWNvbG9yOnJnYmEoMjQ0LDY3LDU0LC4yKX0ubWF0LXNsaWRlcltfbmdjb250ZW50LSVDT01QJV06aG92ZXIgICAubWF0LXNsaWRlci10cmFjay1iYWNrZ3JvdW5kW19uZ2NvbnRlbnQtJUNPTVAlXSwgLmNkay1mb2N1c2VkW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtc2xpZGVyLXRyYWNrLWJhY2tncm91bmRbX25nY29udGVudC0lQ09NUCVde2JhY2tncm91bmQtY29sb3I6cmdiYSgwLDAsMCwuMzgpfS5tYXQtc2xpZGVyLWRpc2FibGVkW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtc2xpZGVyLXRyYWNrLWJhY2tncm91bmRbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXNsaWRlci1kaXNhYmxlZFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXNsaWRlci10cmFjay1maWxsW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1zbGlkZXItZGlzYWJsZWRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1zbGlkZXItdGh1bWJbX25nY29udGVudC0lQ09NUCVde2JhY2tncm91bmQtY29sb3I6cmdiYSgwLDAsMCwuMjYpfS5tYXQtc2xpZGVyLWRpc2FibGVkW19uZ2NvbnRlbnQtJUNPTVAlXTpob3ZlciAgIC5tYXQtc2xpZGVyLXRyYWNrLWJhY2tncm91bmRbX25nY29udGVudC0lQ09NUCVde2JhY2tncm91bmQtY29sb3I6cmdiYSgwLDAsMCwuMjYpfS5tYXQtc2xpZGVyLW1pbi12YWx1ZVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXNsaWRlci1mb2N1cy1yaW5nW19uZ2NvbnRlbnQtJUNPTVAlXXtiYWNrZ3JvdW5kLWNvbG9yOnJnYmEoMCwwLDAsLjEyKX0ubWF0LXNsaWRlci1taW4tdmFsdWUubWF0LXNsaWRlci10aHVtYi1sYWJlbC1zaG93aW5nW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtc2xpZGVyLXRodW1iW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1zbGlkZXItbWluLXZhbHVlLm1hdC1zbGlkZXItdGh1bWItbGFiZWwtc2hvd2luZ1tfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXNsaWRlci10aHVtYi1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17YmFja2dyb3VuZC1jb2xvcjpyZ2JhKDAsMCwwLC44Nyl9Lm1hdC1zbGlkZXItbWluLXZhbHVlLm1hdC1zbGlkZXItdGh1bWItbGFiZWwtc2hvd2luZy5jZGstZm9jdXNlZFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXNsaWRlci10aHVtYltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtc2xpZGVyLW1pbi12YWx1ZS5tYXQtc2xpZGVyLXRodW1iLWxhYmVsLXNob3dpbmcuY2RrLWZvY3VzZWRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1zbGlkZXItdGh1bWItbGFiZWxbX25nY29udGVudC0lQ09NUCVde2JhY2tncm91bmQtY29sb3I6cmdiYSgwLDAsMCwuMjYpfS5tYXQtc2xpZGVyLW1pbi12YWx1ZVtfbmdjb250ZW50LSVDT01QJV06bm90KC5tYXQtc2xpZGVyLXRodW1iLWxhYmVsLXNob3dpbmcpICAgLm1hdC1zbGlkZXItdGh1bWJbX25nY29udGVudC0lQ09NUCVde2JvcmRlci1jb2xvcjpyZ2JhKDAsMCwwLC4yNik7YmFja2dyb3VuZC1jb2xvcjp0cmFuc3BhcmVudH0ubWF0LXNsaWRlci1taW4tdmFsdWVbX25nY29udGVudC0lQ09NUCVdOm5vdCgubWF0LXNsaWRlci10aHVtYi1sYWJlbC1zaG93aW5nKTpob3ZlciAgIC5tYXQtc2xpZGVyLXRodW1iW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1zbGlkZXItbWluLXZhbHVlW19uZ2NvbnRlbnQtJUNPTVAlXTpub3QoLm1hdC1zbGlkZXItdGh1bWItbGFiZWwtc2hvd2luZykuY2RrLWZvY3VzZWQgICAubWF0LXNsaWRlci10aHVtYltfbmdjb250ZW50LSVDT01QJV17Ym9yZGVyLWNvbG9yOnJnYmEoMCwwLDAsLjM4KX0ubWF0LXNsaWRlci1taW4tdmFsdWVbX25nY29udGVudC0lQ09NUCVdOm5vdCgubWF0LXNsaWRlci10aHVtYi1sYWJlbC1zaG93aW5nKTpob3Zlci5tYXQtc2xpZGVyLWRpc2FibGVkICAgLm1hdC1zbGlkZXItdGh1bWJbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXNsaWRlci1taW4tdmFsdWVbX25nY29udGVudC0lQ09NUCVdOm5vdCgubWF0LXNsaWRlci10aHVtYi1sYWJlbC1zaG93aW5nKS5jZGstZm9jdXNlZC5tYXQtc2xpZGVyLWRpc2FibGVkICAgLm1hdC1zbGlkZXItdGh1bWJbX25nY29udGVudC0lQ09NUCVde2JvcmRlci1jb2xvcjpyZ2JhKDAsMCwwLC4yNil9Lm1hdC1zbGlkZXItaGFzLXRpY2tzW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtc2xpZGVyLXdyYXBwZXJbX25nY29udGVudC0lQ09NUCVdOjphZnRlcntib3JkZXItY29sb3I6cmdiYSgwLDAsMCwuNyl9Lm1hdC1zbGlkZXItaG9yaXpvbnRhbFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXNsaWRlci10aWNrc1tfbmdjb250ZW50LSVDT01QJV17YmFja2dyb3VuZC1pbWFnZTpyZXBlYXRpbmctbGluZWFyLWdyYWRpZW50KHRvIHJpZ2h0LCByZ2JhKDAsIDAsIDAsIDAuNyksIHJnYmEoMCwgMCwgMCwgMC43KSAycHgsIHRyYW5zcGFyZW50IDAsIHRyYW5zcGFyZW50KTtiYWNrZ3JvdW5kLWltYWdlOi1tb3otcmVwZWF0aW5nLWxpbmVhci1ncmFkaWVudCgwLjAwMDFkZWcsIHJnYmEoMCwgMCwgMCwgMC43KSwgcmdiYSgwLCAwLCAwLCAwLjcpIDJweCwgdHJhbnNwYXJlbnQgMCwgdHJhbnNwYXJlbnQpfS5tYXQtc2xpZGVyLXZlcnRpY2FsW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtc2xpZGVyLXRpY2tzW19uZ2NvbnRlbnQtJUNPTVAlXXtiYWNrZ3JvdW5kLWltYWdlOnJlcGVhdGluZy1saW5lYXItZ3JhZGllbnQodG8gYm90dG9tLCByZ2JhKDAsIDAsIDAsIDAuNyksIHJnYmEoMCwgMCwgMCwgMC43KSAycHgsIHRyYW5zcGFyZW50IDAsIHRyYW5zcGFyZW50KX0ubWF0LXN0ZXAtaGVhZGVyLmNkay1rZXlib2FyZC1mb2N1c2VkW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1zdGVwLWhlYWRlci5jZGstcHJvZ3JhbS1mb2N1c2VkW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1zdGVwLWhlYWRlcltfbmdjb250ZW50LSVDT01QJV06aG92ZXJ7YmFja2dyb3VuZC1jb2xvcjpyZ2JhKDAsMCwwLC4wNCl9QG1lZGlhKGhvdmVyOiBub25lKXsubWF0LXN0ZXAtaGVhZGVyW19uZ2NvbnRlbnQtJUNPTVAlXTpob3ZlcntiYWNrZ3JvdW5kOm5vbmV9fS5tYXQtc3RlcC1oZWFkZXJbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1zdGVwLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1zdGVwLWhlYWRlcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXN0ZXAtb3B0aW9uYWxbX25nY29udGVudC0lQ09NUCVde2NvbG9yOiM2MTYxNjF9Lm1hdC1zdGVwLWhlYWRlcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXN0ZXAtaWNvbltfbmdjb250ZW50LSVDT01QJV17YmFja2dyb3VuZC1jb2xvcjojNjE2MTYxO2NvbG9yOiNmZmZ9Lm1hdC1zdGVwLWhlYWRlcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXN0ZXAtaWNvbi1zZWxlY3RlZFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtc3RlcC1oZWFkZXJbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1zdGVwLWljb24tc3RhdGUtZG9uZVtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtc3RlcC1oZWFkZXJbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1zdGVwLWljb24tc3RhdGUtZWRpdFtfbmdjb250ZW50LSVDT01QJV17YmFja2dyb3VuZC1jb2xvcjojZjU3YzAwO2NvbG9yOiNmZmZ9Lm1hdC1zdGVwLWhlYWRlcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXN0ZXAtaWNvbi1zdGF0ZS1lcnJvcltfbmdjb250ZW50LSVDT01QJV17YmFja2dyb3VuZC1jb2xvcjp0cmFuc3BhcmVudDtjb2xvcjojZjQ0MzM2fS5tYXQtc3RlcC1oZWFkZXJbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1zdGVwLWxhYmVsLm1hdC1zdGVwLWxhYmVsLWFjdGl2ZVtfbmdjb250ZW50LSVDT01QJV17Y29sb3I6IzIxMjEyMX0ubWF0LXN0ZXAtaGVhZGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtc3RlcC1sYWJlbC5tYXQtc3RlcC1sYWJlbC1lcnJvcltfbmdjb250ZW50LSVDT01QJV17Y29sb3I6I2Y0NDMzNn0ubWF0LXN0ZXBwZXItaG9yaXpvbnRhbFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtc3RlcHBlci12ZXJ0aWNhbFtfbmdjb250ZW50LSVDT01QJV17YmFja2dyb3VuZC1jb2xvcjojZmZmfS5tYXQtc3RlcHBlci12ZXJ0aWNhbC1saW5lW19uZ2NvbnRlbnQtJUNPTVAlXTo6YmVmb3Jle2JvcmRlci1sZWZ0LWNvbG9yOnJnYmEoMCwwLDAsLjEyKX0ubWF0LWhvcml6b250YWwtc3RlcHBlci1oZWFkZXJbX25nY29udGVudC0lQ09NUCVdOjpiZWZvcmUsIC5tYXQtaG9yaXpvbnRhbC1zdGVwcGVyLWhlYWRlcltfbmdjb250ZW50LSVDT01QJV06OmFmdGVyLCAubWF0LXN0ZXBwZXItaG9yaXpvbnRhbC1saW5lW19uZ2NvbnRlbnQtJUNPTVAlXXtib3JkZXItdG9wLWNvbG9yOnJnYmEoMCwwLDAsLjEyKX0ubWF0LWhvcml6b250YWwtc3RlcHBlci1oZWFkZXJbX25nY29udGVudC0lQ09NUCVde2hlaWdodDo3MnB4fS5tYXQtc3RlcHBlci1sYWJlbC1wb3NpdGlvbi1ib3R0b21bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1ob3Jpem9udGFsLXN0ZXBwZXItaGVhZGVyW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC12ZXJ0aWNhbC1zdGVwcGVyLWhlYWRlcltfbmdjb250ZW50LSVDT01QJV17cGFkZGluZzoyNHB4IDI0cHh9Lm1hdC1zdGVwcGVyLXZlcnRpY2FsLWxpbmVbX25nY29udGVudC0lQ09NUCVdOjpiZWZvcmV7dG9wOi0xNnB4O2JvdHRvbTotMTZweH0ubWF0LXN0ZXBwZXItbGFiZWwtcG9zaXRpb24tYm90dG9tW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaG9yaXpvbnRhbC1zdGVwcGVyLWhlYWRlcltfbmdjb250ZW50LSVDT01QJV06OmFmdGVyLCAubWF0LXN0ZXBwZXItbGFiZWwtcG9zaXRpb24tYm90dG9tW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaG9yaXpvbnRhbC1zdGVwcGVyLWhlYWRlcltfbmdjb250ZW50LSVDT01QJV06OmJlZm9yZXt0b3A6MzZweH0ubWF0LXN0ZXBwZXItbGFiZWwtcG9zaXRpb24tYm90dG9tW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtc3RlcHBlci1ob3Jpem9udGFsLWxpbmVbX25nY29udGVudC0lQ09NUCVde3RvcDozNnB4fS5tYXQtc29ydC1oZWFkZXItYXJyb3dbX25nY29udGVudC0lQ09NUCVde2NvbG9yOiM2MTYxNjF9Lm1hdC10YWItbmF2LWJhcltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdGFiLWhlYWRlcltfbmdjb250ZW50LSVDT01QJV17Ym9yZGVyLWJvdHRvbToxcHggc29saWQgcmdiYSgwLDAsMCwuMTIpfS5tYXQtdGFiLWdyb3VwLWludmVydGVkLWhlYWRlcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXRhYi1uYXYtYmFyW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10YWItZ3JvdXAtaW52ZXJ0ZWQtaGVhZGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtdGFiLWhlYWRlcltfbmdjb250ZW50LSVDT01QJV17Ym9yZGVyLXRvcDoxcHggc29saWQgcmdiYSgwLDAsMCwuMTIpO2JvcmRlci1ib3R0b206bm9uZX0ubWF0LXRhYi1sYWJlbFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdGFiLWxpbmtbX25nY29udGVudC0lQ09NUCVde2NvbG9yOiMyMTIxMjF9Lm1hdC10YWItbGFiZWwubWF0LXRhYi1kaXNhYmxlZFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdGFiLWxpbmsubWF0LXRhYi1kaXNhYmxlZFtfbmdjb250ZW50LSVDT01QJV17Y29sb3I6Izc1NzU3NX0ubWF0LXRhYi1oZWFkZXItcGFnaW5hdGlvbi1jaGV2cm9uW19uZ2NvbnRlbnQtJUNPTVAlXXtib3JkZXItY29sb3I6IzIxMjEyMX0ubWF0LXRhYi1oZWFkZXItcGFnaW5hdGlvbi1kaXNhYmxlZFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXRhYi1oZWFkZXItcGFnaW5hdGlvbi1jaGV2cm9uW19uZ2NvbnRlbnQtJUNPTVAlXXtib3JkZXItY29sb3I6Izc1NzU3NX0ubWF0LXRhYi1ncm91cFtjbGFzcyo9bWF0LWJhY2tncm91bmQtXVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXRhYi1oZWFkZXJbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXRhYi1uYXYtYmFyW2NsYXNzKj1tYXQtYmFja2dyb3VuZC1dW19uZ2NvbnRlbnQtJUNPTVAlXXtib3JkZXItYm90dG9tOm5vbmU7Ym9yZGVyLXRvcDpub25lfS5tYXQtdGFiLWdyb3VwLm1hdC1wcmltYXJ5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtdGFiLWxhYmVsLmNkay1rZXlib2FyZC1mb2N1c2VkW19uZ2NvbnRlbnQtJUNPTVAlXTpub3QoLm1hdC10YWItZGlzYWJsZWQpLCAubWF0LXRhYi1ncm91cC5tYXQtcHJpbWFyeVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXRhYi1sYWJlbC5jZGstcHJvZ3JhbS1mb2N1c2VkW19uZ2NvbnRlbnQtJUNPTVAlXTpub3QoLm1hdC10YWItZGlzYWJsZWQpLCAubWF0LXRhYi1ncm91cC5tYXQtcHJpbWFyeVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXRhYi1saW5rLmNkay1rZXlib2FyZC1mb2N1c2VkW19uZ2NvbnRlbnQtJUNPTVAlXTpub3QoLm1hdC10YWItZGlzYWJsZWQpLCAubWF0LXRhYi1ncm91cC5tYXQtcHJpbWFyeVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXRhYi1saW5rLmNkay1wcm9ncmFtLWZvY3VzZWRbX25nY29udGVudC0lQ09NUCVdOm5vdCgubWF0LXRhYi1kaXNhYmxlZCksIC5tYXQtdGFiLW5hdi1iYXIubWF0LXByaW1hcnlbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC10YWItbGFiZWwuY2RrLWtleWJvYXJkLWZvY3VzZWRbX25nY29udGVudC0lQ09NUCVdOm5vdCgubWF0LXRhYi1kaXNhYmxlZCksIC5tYXQtdGFiLW5hdi1iYXIubWF0LXByaW1hcnlbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC10YWItbGFiZWwuY2RrLXByb2dyYW0tZm9jdXNlZFtfbmdjb250ZW50LSVDT01QJV06bm90KC5tYXQtdGFiLWRpc2FibGVkKSwgLm1hdC10YWItbmF2LWJhci5tYXQtcHJpbWFyeVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXRhYi1saW5rLmNkay1rZXlib2FyZC1mb2N1c2VkW19uZ2NvbnRlbnQtJUNPTVAlXTpub3QoLm1hdC10YWItZGlzYWJsZWQpLCAubWF0LXRhYi1uYXYtYmFyLm1hdC1wcmltYXJ5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtdGFiLWxpbmsuY2RrLXByb2dyYW0tZm9jdXNlZFtfbmdjb250ZW50LSVDT01QJV06bm90KC5tYXQtdGFiLWRpc2FibGVkKXtiYWNrZ3JvdW5kLWNvbG9yOnJnYmEoMjU1LDE1MiwwLC4zKX0ubWF0LXRhYi1ncm91cC5tYXQtcHJpbWFyeVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWluay1iYXJbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXRhYi1uYXYtYmFyLm1hdC1wcmltYXJ5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaW5rLWJhcltfbmdjb250ZW50LSVDT01QJV17YmFja2dyb3VuZC1jb2xvcjojZjU3YzAwfS5tYXQtdGFiLWdyb3VwLm1hdC1wcmltYXJ5Lm1hdC1iYWNrZ3JvdW5kLXByaW1hcnlbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pbmstYmFyW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10YWItbmF2LWJhci5tYXQtcHJpbWFyeS5tYXQtYmFja2dyb3VuZC1wcmltYXJ5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaW5rLWJhcltfbmdjb250ZW50LSVDT01QJV17YmFja2dyb3VuZC1jb2xvcjojZmZmfS5tYXQtdGFiLWdyb3VwLm1hdC1hY2NlbnRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC10YWItbGFiZWwuY2RrLWtleWJvYXJkLWZvY3VzZWRbX25nY29udGVudC0lQ09NUCVdOm5vdCgubWF0LXRhYi1kaXNhYmxlZCksIC5tYXQtdGFiLWdyb3VwLm1hdC1hY2NlbnRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC10YWItbGFiZWwuY2RrLXByb2dyYW0tZm9jdXNlZFtfbmdjb250ZW50LSVDT01QJV06bm90KC5tYXQtdGFiLWRpc2FibGVkKSwgLm1hdC10YWItZ3JvdXAubWF0LWFjY2VudFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXRhYi1saW5rLmNkay1rZXlib2FyZC1mb2N1c2VkW19uZ2NvbnRlbnQtJUNPTVAlXTpub3QoLm1hdC10YWItZGlzYWJsZWQpLCAubWF0LXRhYi1ncm91cC5tYXQtYWNjZW50W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtdGFiLWxpbmsuY2RrLXByb2dyYW0tZm9jdXNlZFtfbmdjb250ZW50LSVDT01QJV06bm90KC5tYXQtdGFiLWRpc2FibGVkKSwgLm1hdC10YWItbmF2LWJhci5tYXQtYWNjZW50W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtdGFiLWxhYmVsLmNkay1rZXlib2FyZC1mb2N1c2VkW19uZ2NvbnRlbnQtJUNPTVAlXTpub3QoLm1hdC10YWItZGlzYWJsZWQpLCAubWF0LXRhYi1uYXYtYmFyLm1hdC1hY2NlbnRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC10YWItbGFiZWwuY2RrLXByb2dyYW0tZm9jdXNlZFtfbmdjb250ZW50LSVDT01QJV06bm90KC5tYXQtdGFiLWRpc2FibGVkKSwgLm1hdC10YWItbmF2LWJhci5tYXQtYWNjZW50W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtdGFiLWxpbmsuY2RrLWtleWJvYXJkLWZvY3VzZWRbX25nY29udGVudC0lQ09NUCVdOm5vdCgubWF0LXRhYi1kaXNhYmxlZCksIC5tYXQtdGFiLW5hdi1iYXIubWF0LWFjY2VudFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXRhYi1saW5rLmNkay1wcm9ncmFtLWZvY3VzZWRbX25nY29udGVudC0lQ09NUCVdOm5vdCgubWF0LXRhYi1kaXNhYmxlZCl7YmFja2dyb3VuZC1jb2xvcjpyZ2JhKDI1NSwxNTIsMCwuMyl9Lm1hdC10YWItZ3JvdXAubWF0LWFjY2VudFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWluay1iYXJbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXRhYi1uYXYtYmFyLm1hdC1hY2NlbnRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pbmstYmFyW19uZ2NvbnRlbnQtJUNPTVAlXXtiYWNrZ3JvdW5kLWNvbG9yOiNmZjk4MDB9Lm1hdC10YWItZ3JvdXAubWF0LWFjY2VudC5tYXQtYmFja2dyb3VuZC1hY2NlbnRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pbmstYmFyW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10YWItbmF2LWJhci5tYXQtYWNjZW50Lm1hdC1iYWNrZ3JvdW5kLWFjY2VudFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWluay1iYXJbX25nY29udGVudC0lQ09NUCVde2JhY2tncm91bmQtY29sb3I6I2ZmZn0ubWF0LXRhYi1ncm91cC5tYXQtd2Fybltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXRhYi1sYWJlbC5jZGsta2V5Ym9hcmQtZm9jdXNlZFtfbmdjb250ZW50LSVDT01QJV06bm90KC5tYXQtdGFiLWRpc2FibGVkKSwgLm1hdC10YWItZ3JvdXAubWF0LXdhcm5bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC10YWItbGFiZWwuY2RrLXByb2dyYW0tZm9jdXNlZFtfbmdjb250ZW50LSVDT01QJV06bm90KC5tYXQtdGFiLWRpc2FibGVkKSwgLm1hdC10YWItZ3JvdXAubWF0LXdhcm5bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC10YWItbGluay5jZGsta2V5Ym9hcmQtZm9jdXNlZFtfbmdjb250ZW50LSVDT01QJV06bm90KC5tYXQtdGFiLWRpc2FibGVkKSwgLm1hdC10YWItZ3JvdXAubWF0LXdhcm5bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC10YWItbGluay5jZGstcHJvZ3JhbS1mb2N1c2VkW19uZ2NvbnRlbnQtJUNPTVAlXTpub3QoLm1hdC10YWItZGlzYWJsZWQpLCAubWF0LXRhYi1uYXYtYmFyLm1hdC13YXJuW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtdGFiLWxhYmVsLmNkay1rZXlib2FyZC1mb2N1c2VkW19uZ2NvbnRlbnQtJUNPTVAlXTpub3QoLm1hdC10YWItZGlzYWJsZWQpLCAubWF0LXRhYi1uYXYtYmFyLm1hdC13YXJuW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtdGFiLWxhYmVsLmNkay1wcm9ncmFtLWZvY3VzZWRbX25nY29udGVudC0lQ09NUCVdOm5vdCgubWF0LXRhYi1kaXNhYmxlZCksIC5tYXQtdGFiLW5hdi1iYXIubWF0LXdhcm5bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC10YWItbGluay5jZGsta2V5Ym9hcmQtZm9jdXNlZFtfbmdjb250ZW50LSVDT01QJV06bm90KC5tYXQtdGFiLWRpc2FibGVkKSwgLm1hdC10YWItbmF2LWJhci5tYXQtd2Fybltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXRhYi1saW5rLmNkay1wcm9ncmFtLWZvY3VzZWRbX25nY29udGVudC0lQ09NUCVdOm5vdCgubWF0LXRhYi1kaXNhYmxlZCl7YmFja2dyb3VuZC1jb2xvcjpyZ2JhKDI1NSwyMDUsMjEwLC4zKX0ubWF0LXRhYi1ncm91cC5tYXQtd2Fybltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWluay1iYXJbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXRhYi1uYXYtYmFyLm1hdC13YXJuW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaW5rLWJhcltfbmdjb250ZW50LSVDT01QJV17YmFja2dyb3VuZC1jb2xvcjojZjQ0MzM2fS5tYXQtdGFiLWdyb3VwLm1hdC13YXJuLm1hdC1iYWNrZ3JvdW5kLXdhcm5bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pbmstYmFyW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10YWItbmF2LWJhci5tYXQtd2Fybi5tYXQtYmFja2dyb3VuZC13YXJuW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaW5rLWJhcltfbmdjb250ZW50LSVDT01QJV17YmFja2dyb3VuZC1jb2xvcjojZmZmfS5tYXQtdGFiLWdyb3VwLm1hdC1iYWNrZ3JvdW5kLXByaW1hcnlbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC10YWItbGFiZWwuY2RrLWtleWJvYXJkLWZvY3VzZWRbX25nY29udGVudC0lQ09NUCVdOm5vdCgubWF0LXRhYi1kaXNhYmxlZCksIC5tYXQtdGFiLWdyb3VwLm1hdC1iYWNrZ3JvdW5kLXByaW1hcnlbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC10YWItbGFiZWwuY2RrLXByb2dyYW0tZm9jdXNlZFtfbmdjb250ZW50LSVDT01QJV06bm90KC5tYXQtdGFiLWRpc2FibGVkKSwgLm1hdC10YWItZ3JvdXAubWF0LWJhY2tncm91bmQtcHJpbWFyeVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXRhYi1saW5rLmNkay1rZXlib2FyZC1mb2N1c2VkW19uZ2NvbnRlbnQtJUNPTVAlXTpub3QoLm1hdC10YWItZGlzYWJsZWQpLCAubWF0LXRhYi1ncm91cC5tYXQtYmFja2dyb3VuZC1wcmltYXJ5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtdGFiLWxpbmsuY2RrLXByb2dyYW0tZm9jdXNlZFtfbmdjb250ZW50LSVDT01QJV06bm90KC5tYXQtdGFiLWRpc2FibGVkKSwgLm1hdC10YWItbmF2LWJhci5tYXQtYmFja2dyb3VuZC1wcmltYXJ5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtdGFiLWxhYmVsLmNkay1rZXlib2FyZC1mb2N1c2VkW19uZ2NvbnRlbnQtJUNPTVAlXTpub3QoLm1hdC10YWItZGlzYWJsZWQpLCAubWF0LXRhYi1uYXYtYmFyLm1hdC1iYWNrZ3JvdW5kLXByaW1hcnlbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC10YWItbGFiZWwuY2RrLXByb2dyYW0tZm9jdXNlZFtfbmdjb250ZW50LSVDT01QJV06bm90KC5tYXQtdGFiLWRpc2FibGVkKSwgLm1hdC10YWItbmF2LWJhci5tYXQtYmFja2dyb3VuZC1wcmltYXJ5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtdGFiLWxpbmsuY2RrLWtleWJvYXJkLWZvY3VzZWRbX25nY29udGVudC0lQ09NUCVdOm5vdCgubWF0LXRhYi1kaXNhYmxlZCksIC5tYXQtdGFiLW5hdi1iYXIubWF0LWJhY2tncm91bmQtcHJpbWFyeVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXRhYi1saW5rLmNkay1wcm9ncmFtLWZvY3VzZWRbX25nY29udGVudC0lQ09NUCVdOm5vdCgubWF0LXRhYi1kaXNhYmxlZCl7YmFja2dyb3VuZC1jb2xvcjpyZ2JhKDI1NSwxNTIsMCwuMyl9Lm1hdC10YWItZ3JvdXAubWF0LWJhY2tncm91bmQtcHJpbWFyeVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXRhYi1oZWFkZXJbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXRhYi1ncm91cC5tYXQtYmFja2dyb3VuZC1wcmltYXJ5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtdGFiLWxpbmtzW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10YWItZ3JvdXAubWF0LWJhY2tncm91bmQtcHJpbWFyeVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXRhYi1oZWFkZXItcGFnaW5hdGlvbltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdGFiLW5hdi1iYXIubWF0LWJhY2tncm91bmQtcHJpbWFyeVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXRhYi1oZWFkZXJbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXRhYi1uYXYtYmFyLm1hdC1iYWNrZ3JvdW5kLXByaW1hcnlbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC10YWItbGlua3NbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXRhYi1uYXYtYmFyLm1hdC1iYWNrZ3JvdW5kLXByaW1hcnlbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC10YWItaGVhZGVyLXBhZ2luYXRpb25bX25nY29udGVudC0lQ09NUCVde2JhY2tncm91bmQtY29sb3I6I2Y1N2MwMH0ubWF0LXRhYi1ncm91cC5tYXQtYmFja2dyb3VuZC1wcmltYXJ5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtdGFiLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10YWItZ3JvdXAubWF0LWJhY2tncm91bmQtcHJpbWFyeVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXRhYi1saW5rW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10YWItbmF2LWJhci5tYXQtYmFja2dyb3VuZC1wcmltYXJ5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtdGFiLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10YWItbmF2LWJhci5tYXQtYmFja2dyb3VuZC1wcmltYXJ5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtdGFiLWxpbmtbX25nY29udGVudC0lQ09NUCVde2NvbG9yOiNmZmZ9Lm1hdC10YWItZ3JvdXAubWF0LWJhY2tncm91bmQtcHJpbWFyeVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXRhYi1sYWJlbC5tYXQtdGFiLWRpc2FibGVkW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10YWItZ3JvdXAubWF0LWJhY2tncm91bmQtcHJpbWFyeVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXRhYi1saW5rLm1hdC10YWItZGlzYWJsZWRbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXRhYi1uYXYtYmFyLm1hdC1iYWNrZ3JvdW5kLXByaW1hcnlbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC10YWItbGFiZWwubWF0LXRhYi1kaXNhYmxlZFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdGFiLW5hdi1iYXIubWF0LWJhY2tncm91bmQtcHJpbWFyeVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXRhYi1saW5rLm1hdC10YWItZGlzYWJsZWRbX25nY29udGVudC0lQ09NUCVde2NvbG9yOnJnYmEoMjU1LDI1NSwyNTUsLjQpfS5tYXQtdGFiLWdyb3VwLm1hdC1iYWNrZ3JvdW5kLXByaW1hcnlbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC10YWItaGVhZGVyLXBhZ2luYXRpb24tY2hldnJvbltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdGFiLW5hdi1iYXIubWF0LWJhY2tncm91bmQtcHJpbWFyeVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXRhYi1oZWFkZXItcGFnaW5hdGlvbi1jaGV2cm9uW19uZ2NvbnRlbnQtJUNPTVAlXXtib3JkZXItY29sb3I6I2ZmZn0ubWF0LXRhYi1ncm91cC5tYXQtYmFja2dyb3VuZC1wcmltYXJ5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtdGFiLWhlYWRlci1wYWdpbmF0aW9uLWRpc2FibGVkW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtdGFiLWhlYWRlci1wYWdpbmF0aW9uLWNoZXZyb25bX25nY29udGVudC0lQ09NUCVdLCAubWF0LXRhYi1uYXYtYmFyLm1hdC1iYWNrZ3JvdW5kLXByaW1hcnlbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC10YWItaGVhZGVyLXBhZ2luYXRpb24tZGlzYWJsZWRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC10YWItaGVhZGVyLXBhZ2luYXRpb24tY2hldnJvbltfbmdjb250ZW50LSVDT01QJV17Ym9yZGVyLWNvbG9yOnJnYmEoMjU1LDI1NSwyNTUsLjQpfS5tYXQtdGFiLWdyb3VwLm1hdC1iYWNrZ3JvdW5kLXByaW1hcnlbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1yaXBwbGUtZWxlbWVudFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdGFiLW5hdi1iYXIubWF0LWJhY2tncm91bmQtcHJpbWFyeVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXJpcHBsZS1lbGVtZW50W19uZ2NvbnRlbnQtJUNPTVAlXXtiYWNrZ3JvdW5kLWNvbG9yOnJnYmEoMjU1LDI1NSwyNTUsLjEyKX0ubWF0LXRhYi1ncm91cC5tYXQtYmFja2dyb3VuZC1hY2NlbnRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC10YWItbGFiZWwuY2RrLWtleWJvYXJkLWZvY3VzZWRbX25nY29udGVudC0lQ09NUCVdOm5vdCgubWF0LXRhYi1kaXNhYmxlZCksIC5tYXQtdGFiLWdyb3VwLm1hdC1iYWNrZ3JvdW5kLWFjY2VudFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXRhYi1sYWJlbC5jZGstcHJvZ3JhbS1mb2N1c2VkW19uZ2NvbnRlbnQtJUNPTVAlXTpub3QoLm1hdC10YWItZGlzYWJsZWQpLCAubWF0LXRhYi1ncm91cC5tYXQtYmFja2dyb3VuZC1hY2NlbnRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC10YWItbGluay5jZGsta2V5Ym9hcmQtZm9jdXNlZFtfbmdjb250ZW50LSVDT01QJV06bm90KC5tYXQtdGFiLWRpc2FibGVkKSwgLm1hdC10YWItZ3JvdXAubWF0LWJhY2tncm91bmQtYWNjZW50W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtdGFiLWxpbmsuY2RrLXByb2dyYW0tZm9jdXNlZFtfbmdjb250ZW50LSVDT01QJV06bm90KC5tYXQtdGFiLWRpc2FibGVkKSwgLm1hdC10YWItbmF2LWJhci5tYXQtYmFja2dyb3VuZC1hY2NlbnRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC10YWItbGFiZWwuY2RrLWtleWJvYXJkLWZvY3VzZWRbX25nY29udGVudC0lQ09NUCVdOm5vdCgubWF0LXRhYi1kaXNhYmxlZCksIC5tYXQtdGFiLW5hdi1iYXIubWF0LWJhY2tncm91bmQtYWNjZW50W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtdGFiLWxhYmVsLmNkay1wcm9ncmFtLWZvY3VzZWRbX25nY29udGVudC0lQ09NUCVdOm5vdCgubWF0LXRhYi1kaXNhYmxlZCksIC5tYXQtdGFiLW5hdi1iYXIubWF0LWJhY2tncm91bmQtYWNjZW50W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtdGFiLWxpbmsuY2RrLWtleWJvYXJkLWZvY3VzZWRbX25nY29udGVudC0lQ09NUCVdOm5vdCgubWF0LXRhYi1kaXNhYmxlZCksIC5tYXQtdGFiLW5hdi1iYXIubWF0LWJhY2tncm91bmQtYWNjZW50W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtdGFiLWxpbmsuY2RrLXByb2dyYW0tZm9jdXNlZFtfbmdjb250ZW50LSVDT01QJV06bm90KC5tYXQtdGFiLWRpc2FibGVkKXtiYWNrZ3JvdW5kLWNvbG9yOnJnYmEoMjU1LDE1MiwwLC4zKX0ubWF0LXRhYi1ncm91cC5tYXQtYmFja2dyb3VuZC1hY2NlbnRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC10YWItaGVhZGVyW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10YWItZ3JvdXAubWF0LWJhY2tncm91bmQtYWNjZW50W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtdGFiLWxpbmtzW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10YWItZ3JvdXAubWF0LWJhY2tncm91bmQtYWNjZW50W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtdGFiLWhlYWRlci1wYWdpbmF0aW9uW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10YWItbmF2LWJhci5tYXQtYmFja2dyb3VuZC1hY2NlbnRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC10YWItaGVhZGVyW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10YWItbmF2LWJhci5tYXQtYmFja2dyb3VuZC1hY2NlbnRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC10YWItbGlua3NbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXRhYi1uYXYtYmFyLm1hdC1iYWNrZ3JvdW5kLWFjY2VudFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXRhYi1oZWFkZXItcGFnaW5hdGlvbltfbmdjb250ZW50LSVDT01QJV17YmFja2dyb3VuZC1jb2xvcjojZmY5ODAwfS5tYXQtdGFiLWdyb3VwLm1hdC1iYWNrZ3JvdW5kLWFjY2VudFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXRhYi1sYWJlbFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdGFiLWdyb3VwLm1hdC1iYWNrZ3JvdW5kLWFjY2VudFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXRhYi1saW5rW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10YWItbmF2LWJhci5tYXQtYmFja2dyb3VuZC1hY2NlbnRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC10YWItbGFiZWxbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXRhYi1uYXYtYmFyLm1hdC1iYWNrZ3JvdW5kLWFjY2VudFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXRhYi1saW5rW19uZ2NvbnRlbnQtJUNPTVAlXXtjb2xvcjojZmZmfS5tYXQtdGFiLWdyb3VwLm1hdC1iYWNrZ3JvdW5kLWFjY2VudFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXRhYi1sYWJlbC5tYXQtdGFiLWRpc2FibGVkW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10YWItZ3JvdXAubWF0LWJhY2tncm91bmQtYWNjZW50W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtdGFiLWxpbmsubWF0LXRhYi1kaXNhYmxlZFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdGFiLW5hdi1iYXIubWF0LWJhY2tncm91bmQtYWNjZW50W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtdGFiLWxhYmVsLm1hdC10YWItZGlzYWJsZWRbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXRhYi1uYXYtYmFyLm1hdC1iYWNrZ3JvdW5kLWFjY2VudFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXRhYi1saW5rLm1hdC10YWItZGlzYWJsZWRbX25nY29udGVudC0lQ09NUCVde2NvbG9yOnJnYmEoMjU1LDI1NSwyNTUsLjQpfS5tYXQtdGFiLWdyb3VwLm1hdC1iYWNrZ3JvdW5kLWFjY2VudFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXRhYi1oZWFkZXItcGFnaW5hdGlvbi1jaGV2cm9uW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10YWItbmF2LWJhci5tYXQtYmFja2dyb3VuZC1hY2NlbnRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC10YWItaGVhZGVyLXBhZ2luYXRpb24tY2hldnJvbltfbmdjb250ZW50LSVDT01QJV17Ym9yZGVyLWNvbG9yOiNmZmZ9Lm1hdC10YWItZ3JvdXAubWF0LWJhY2tncm91bmQtYWNjZW50W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtdGFiLWhlYWRlci1wYWdpbmF0aW9uLWRpc2FibGVkW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtdGFiLWhlYWRlci1wYWdpbmF0aW9uLWNoZXZyb25bX25nY29udGVudC0lQ09NUCVdLCAubWF0LXRhYi1uYXYtYmFyLm1hdC1iYWNrZ3JvdW5kLWFjY2VudFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXRhYi1oZWFkZXItcGFnaW5hdGlvbi1kaXNhYmxlZFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXRhYi1oZWFkZXItcGFnaW5hdGlvbi1jaGV2cm9uW19uZ2NvbnRlbnQtJUNPTVAlXXtib3JkZXItY29sb3I6cmdiYSgyNTUsMjU1LDI1NSwuNCl9Lm1hdC10YWItZ3JvdXAubWF0LWJhY2tncm91bmQtYWNjZW50W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtcmlwcGxlLWVsZW1lbnRbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXRhYi1uYXYtYmFyLm1hdC1iYWNrZ3JvdW5kLWFjY2VudFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXJpcHBsZS1lbGVtZW50W19uZ2NvbnRlbnQtJUNPTVAlXXtiYWNrZ3JvdW5kLWNvbG9yOnJnYmEoMjU1LDI1NSwyNTUsLjEyKX0ubWF0LXRhYi1ncm91cC5tYXQtYmFja2dyb3VuZC13YXJuW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtdGFiLWxhYmVsLmNkay1rZXlib2FyZC1mb2N1c2VkW19uZ2NvbnRlbnQtJUNPTVAlXTpub3QoLm1hdC10YWItZGlzYWJsZWQpLCAubWF0LXRhYi1ncm91cC5tYXQtYmFja2dyb3VuZC13YXJuW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtdGFiLWxhYmVsLmNkay1wcm9ncmFtLWZvY3VzZWRbX25nY29udGVudC0lQ09NUCVdOm5vdCgubWF0LXRhYi1kaXNhYmxlZCksIC5tYXQtdGFiLWdyb3VwLm1hdC1iYWNrZ3JvdW5kLXdhcm5bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC10YWItbGluay5jZGsta2V5Ym9hcmQtZm9jdXNlZFtfbmdjb250ZW50LSVDT01QJV06bm90KC5tYXQtdGFiLWRpc2FibGVkKSwgLm1hdC10YWItZ3JvdXAubWF0LWJhY2tncm91bmQtd2Fybltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXRhYi1saW5rLmNkay1wcm9ncmFtLWZvY3VzZWRbX25nY29udGVudC0lQ09NUCVdOm5vdCgubWF0LXRhYi1kaXNhYmxlZCksIC5tYXQtdGFiLW5hdi1iYXIubWF0LWJhY2tncm91bmQtd2Fybltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXRhYi1sYWJlbC5jZGsta2V5Ym9hcmQtZm9jdXNlZFtfbmdjb250ZW50LSVDT01QJV06bm90KC5tYXQtdGFiLWRpc2FibGVkKSwgLm1hdC10YWItbmF2LWJhci5tYXQtYmFja2dyb3VuZC13YXJuW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtdGFiLWxhYmVsLmNkay1wcm9ncmFtLWZvY3VzZWRbX25nY29udGVudC0lQ09NUCVdOm5vdCgubWF0LXRhYi1kaXNhYmxlZCksIC5tYXQtdGFiLW5hdi1iYXIubWF0LWJhY2tncm91bmQtd2Fybltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXRhYi1saW5rLmNkay1rZXlib2FyZC1mb2N1c2VkW19uZ2NvbnRlbnQtJUNPTVAlXTpub3QoLm1hdC10YWItZGlzYWJsZWQpLCAubWF0LXRhYi1uYXYtYmFyLm1hdC1iYWNrZ3JvdW5kLXdhcm5bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC10YWItbGluay5jZGstcHJvZ3JhbS1mb2N1c2VkW19uZ2NvbnRlbnQtJUNPTVAlXTpub3QoLm1hdC10YWItZGlzYWJsZWQpe2JhY2tncm91bmQtY29sb3I6cmdiYSgyNTUsMjA1LDIxMCwuMyl9Lm1hdC10YWItZ3JvdXAubWF0LWJhY2tncm91bmQtd2Fybltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXRhYi1oZWFkZXJbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXRhYi1ncm91cC5tYXQtYmFja2dyb3VuZC13YXJuW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtdGFiLWxpbmtzW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10YWItZ3JvdXAubWF0LWJhY2tncm91bmQtd2Fybltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXRhYi1oZWFkZXItcGFnaW5hdGlvbltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdGFiLW5hdi1iYXIubWF0LWJhY2tncm91bmQtd2Fybltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXRhYi1oZWFkZXJbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXRhYi1uYXYtYmFyLm1hdC1iYWNrZ3JvdW5kLXdhcm5bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC10YWItbGlua3NbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXRhYi1uYXYtYmFyLm1hdC1iYWNrZ3JvdW5kLXdhcm5bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC10YWItaGVhZGVyLXBhZ2luYXRpb25bX25nY29udGVudC0lQ09NUCVde2JhY2tncm91bmQtY29sb3I6I2Y0NDMzNn0ubWF0LXRhYi1ncm91cC5tYXQtYmFja2dyb3VuZC13YXJuW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtdGFiLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10YWItZ3JvdXAubWF0LWJhY2tncm91bmQtd2Fybltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXRhYi1saW5rW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10YWItbmF2LWJhci5tYXQtYmFja2dyb3VuZC13YXJuW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtdGFiLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10YWItbmF2LWJhci5tYXQtYmFja2dyb3VuZC13YXJuW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtdGFiLWxpbmtbX25nY29udGVudC0lQ09NUCVde2NvbG9yOiNmZmZ9Lm1hdC10YWItZ3JvdXAubWF0LWJhY2tncm91bmQtd2Fybltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXRhYi1sYWJlbC5tYXQtdGFiLWRpc2FibGVkW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10YWItZ3JvdXAubWF0LWJhY2tncm91bmQtd2Fybltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXRhYi1saW5rLm1hdC10YWItZGlzYWJsZWRbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXRhYi1uYXYtYmFyLm1hdC1iYWNrZ3JvdW5kLXdhcm5bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC10YWItbGFiZWwubWF0LXRhYi1kaXNhYmxlZFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdGFiLW5hdi1iYXIubWF0LWJhY2tncm91bmQtd2Fybltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXRhYi1saW5rLm1hdC10YWItZGlzYWJsZWRbX25nY29udGVudC0lQ09NUCVde2NvbG9yOnJnYmEoMjU1LDI1NSwyNTUsLjQpfS5tYXQtdGFiLWdyb3VwLm1hdC1iYWNrZ3JvdW5kLXdhcm5bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC10YWItaGVhZGVyLXBhZ2luYXRpb24tY2hldnJvbltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdGFiLW5hdi1iYXIubWF0LWJhY2tncm91bmQtd2Fybltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXRhYi1oZWFkZXItcGFnaW5hdGlvbi1jaGV2cm9uW19uZ2NvbnRlbnQtJUNPTVAlXXtib3JkZXItY29sb3I6I2ZmZn0ubWF0LXRhYi1ncm91cC5tYXQtYmFja2dyb3VuZC13YXJuW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtdGFiLWhlYWRlci1wYWdpbmF0aW9uLWRpc2FibGVkW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtdGFiLWhlYWRlci1wYWdpbmF0aW9uLWNoZXZyb25bX25nY29udGVudC0lQ09NUCVdLCAubWF0LXRhYi1uYXYtYmFyLm1hdC1iYWNrZ3JvdW5kLXdhcm5bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC10YWItaGVhZGVyLXBhZ2luYXRpb24tZGlzYWJsZWRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC10YWItaGVhZGVyLXBhZ2luYXRpb24tY2hldnJvbltfbmdjb250ZW50LSVDT01QJV17Ym9yZGVyLWNvbG9yOnJnYmEoMjU1LDI1NSwyNTUsLjQpfS5tYXQtdGFiLWdyb3VwLm1hdC1iYWNrZ3JvdW5kLXdhcm5bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1yaXBwbGUtZWxlbWVudFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdGFiLW5hdi1iYXIubWF0LWJhY2tncm91bmQtd2Fybltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXJpcHBsZS1lbGVtZW50W19uZ2NvbnRlbnQtJUNPTVAlXXtiYWNrZ3JvdW5kLWNvbG9yOnJnYmEoMjU1LDI1NSwyNTUsLjEyKX0ubWF0LXRvb2xiYXJbX25nY29udGVudC0lQ09NUCVde2JhY2tncm91bmQ6I2Y1ZjVmNTtjb2xvcjojMjEyMTIxfS5tYXQtdG9vbGJhci5tYXQtcHJpbWFyeVtfbmdjb250ZW50LSVDT01QJV17YmFja2dyb3VuZDojZjU3YzAwO2NvbG9yOiNmZmZ9Lm1hdC10b29sYmFyLm1hdC1hY2NlbnRbX25nY29udGVudC0lQ09NUCVde2JhY2tncm91bmQ6I2ZmOTgwMDtjb2xvcjojZmZmfS5tYXQtdG9vbGJhci5tYXQtd2Fybltfbmdjb250ZW50LSVDT01QJV17YmFja2dyb3VuZDojZjQ0MzM2O2NvbG9yOiNmZmZ9Lm1hdC10b29sYmFyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC11bmRlcmxpbmVbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXRvb2xiYXJbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLXJpcHBsZVtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdG9vbGJhcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvY3VzZWRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLXJpcHBsZVtfbmdjb250ZW50LSVDT01QJV17YmFja2dyb3VuZC1jb2xvcjpjdXJyZW50Q29sb3J9Lm1hdC10b29sYmFyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdG9vbGJhcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvY3VzZWRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10b29sYmFyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtc2VsZWN0LXZhbHVlW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10b29sYmFyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtc2VsZWN0LWFycm93W19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10b29sYmFyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC5tYXQtZm9jdXNlZFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXNlbGVjdC1hcnJvd1tfbmdjb250ZW50LSVDT01QJV17Y29sb3I6aW5oZXJpdH0ubWF0LXRvb2xiYXJbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pbnB1dC1lbGVtZW50W19uZ2NvbnRlbnQtJUNPTVAlXXtjYXJldC1jb2xvcjpjdXJyZW50Q29sb3J9Lm1hdC10b29sYmFyLW11bHRpcGxlLXJvd3NbX25nY29udGVudC0lQ09NUCVde21pbi1oZWlnaHQ6NjRweH0ubWF0LXRvb2xiYXItcm93W19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10b29sYmFyLXNpbmdsZS1yb3dbX25nY29udGVudC0lQ09NUCVde2hlaWdodDo2NHB4fUBtZWRpYShtYXgtd2lkdGg6IDU5OXB4KXsubWF0LXRvb2xiYXItbXVsdGlwbGUtcm93c1tfbmdjb250ZW50LSVDT01QJV17bWluLWhlaWdodDo1NnB4fS5tYXQtdG9vbGJhci1yb3dbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXRvb2xiYXItc2luZ2xlLXJvd1tfbmdjb250ZW50LSVDT01QJV17aGVpZ2h0OjU2cHh9fS5tYXQtdG9vbHRpcFtfbmdjb250ZW50LSVDT01QJV17YmFja2dyb3VuZDpyZ2JhKDk3LDk3LDk3LC45KX0ubWF0LXRyZWVbX25nY29udGVudC0lQ09NUCVde2JhY2tncm91bmQ6I2ZmZn0ubWF0LXRyZWUtbm9kZVtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtbmVzdGVkLXRyZWUtbm9kZVtfbmdjb250ZW50LSVDT01QJV17Y29sb3I6IzIxMjEyMX0ubWF0LXRyZWUtbm9kZVtfbmdjb250ZW50LSVDT01QJV17bWluLWhlaWdodDo0OHB4fS5tYXQtc25hY2stYmFyLWNvbnRhaW5lcltfbmdjb250ZW50LSVDT01QJV17Y29sb3I6cmdiYSgyNTUsMjU1LDI1NSwuNyk7YmFja2dyb3VuZDojMzIzMjMyO2JveC1zaGFkb3c6MHB4IDNweCA1cHggLTFweCByZ2JhKDAsIDAsIDAsIDAuMiksMHB4IDZweCAxMHB4IDBweCByZ2JhKDAsIDAsIDAsIDAuMTQpLDBweCAxcHggMThweCAwcHggcmdiYSgwLCAwLCAwLCAwLjEyKX0ubWF0LXNpbXBsZS1zbmFja2Jhci1hY3Rpb25bX25nY29udGVudC0lQ09NUCVde2NvbG9yOiNmZjk4MDB9LmNhcmQtZ3JpZFtfbmdjb250ZW50LSVDT01QJV17ZGlzcGxheTpncmlkO2dyaWQtdGVtcGxhdGUtY29sdW1uczpyZXBlYXQoYXV0by1maWxsLCBtaW5tYXgoMzM1cHgsIGF1dG8pKTtnYXA6MTZweDtwYWRkaW5nOjE2cHh9Y2FyZC12aWV3W19uZ2NvbnRlbnQtJUNPTVAlXXtib3JkZXI6MXB4IHNvbGlkICNkZGQ7Ym9yZGVyLXJhZGl1czo0cHg7Ym94LXNpemluZzpib3JkZXItYm94O2NvbnRhaW46c3RyaWN0O2hlaWdodDoxMDAlO21pbi1oZWlnaHQ6MzIwcHh9Y2FyZC12aWV3LmZ1bGwtd2lkdGhbX25nY29udGVudC0lQ09NUCVde2NvbnRhaW46bGF5b3V0IHBhaW50O2dyaWQtY29sdW1uLXN0YXJ0OjE7Z3JpZC1jb2x1bW4tZW5kOi0xfWNhcmQtdmlldy5mdWxsLWhlaWdodFtfbmdjb250ZW50LSVDT01QJV17bWluLWhlaWdodDo0ODBweH0uZ3JvdXAtY29udHJvbHNbX25nY29udGVudC0lQ09NUCVde2NvbG9yOiM2MTYxNjE7ZGlzcGxheTpncmlkO2FsaWduLWl0ZW1zOmNlbnRlcjtncmlkLXRlbXBsYXRlLWNvbHVtbnM6MWZyIDFmciAxZnI7Z2FwOjE2cHg7cGFkZGluZzowIDE2cHh9Lmdyb3VwLWNvbnRyb2xzW19uZ2NvbnRlbnQtJUNPTVAlXTpmaXJzdC1vZi10eXBle3BhZGRpbmctdG9wOjE2cHh9Lmdyb3VwLWNvbnRyb2xzW19uZ2NvbnRlbnQtJUNPTVAlXTpsYXN0LW9mLXR5cGV7cGFkZGluZy1ib3R0b206MTZweH0ucHJldi1jb250YWluZXJbX25nY29udGVudC0lQ09NUCVde2p1c3RpZnktc2VsZjpmbGV4LXN0YXJ0fS5leHBhbmQtY29udGFpbmVyW19uZ2NvbnRlbnQtJUNPTVAlXXtqdXN0aWZ5LXNlbGY6Y2VudGVyfS5pbnB1dC1hbmQtbmV4dC1jb250YWluZXJbX25nY29udGVudC0lQ09NUCVde2p1c3RpZnktc2VsZjpmbGV4LWVuZH0ucGFnaW5hdGlvbi1pbnB1dFtfbmdjb250ZW50LSVDT01QJV17bWFyZ2luLXJpZ2h0OjE2cHh9LmV4cGFuZC1ncm91cC1idXR0b25bX25nY29udGVudC0lQ09NUCVdLCAucGFnaW5hdGlvbi1idXR0b25bX25nY29udGVudC0lQ09NUCVde2JhY2tncm91bmQtY29sb3I6I2ZmZjtjb2xvcjojNjE2MTYxfSddLGNoYW5nZURldGVjdGlvbjowfSk7Y2xhc3MgQ210e2NvbnN0cnVjdG9yKHQpe3RoaXMuc3RvcmU9dCx0aGlzLmdyb3VwTmFtZT1udWxsLHRoaXMuZ3JvdXBOYW1lJD1uZXcgRihudWxsKSx0aGlzLnBhZ2VJbmRleCQ9bmV3IEYoMCksdGhpcy5pdGVtcyQ9bmV3IEYoW10pLHRoaXMubnVtUGFnZXMkPUV0KFt0aGlzLml0ZW1zJCx0aGlzLnN0b3JlLnNlbGVjdChWSSldKS5waXBlKGZ0KCgoW3Qsbl0pPT5NYXRoLmNlaWwodC5sZW5ndGgvbikpKSksdGhpcy5pc0dyb3VwRXhwYW5kZWQkPXRoaXMuZ3JvdXBOYW1lJC5waXBlKHNlKCh0PT5udWxsIT09dD90aGlzLnN0b3JlLnNlbGVjdChPRCx0KTpaKCEwKSkpKSx0aGlzLnNob3dQYWdpbmF0aW9uQ29udHJvbHMkPUV0KFt0aGlzLm51bVBhZ2VzJCx0aGlzLnN0b3JlLnNlbGVjdChWSSksdGhpcy5pc0dyb3VwRXhwYW5kZWQkXSkucGlwZShmdCgoKFt0LG4sZV0pPT4hKHQ8PTEpJiYobjw9M3x8ZSkpKSksdGhpcy5pc0dyb3VwRXhwYW5kYWJsZSQ9RXQoW3RoaXMuaXRlbXMkLHRoaXMuc3RvcmUuc2VsZWN0KFZJKV0pLnBpcGUoZnQoKChbdCxuXSk9PiEobnVsbD09PXRoaXMuZ3JvdXBOYW1lfHxuPD0zfHx0Lmxlbmd0aDw9MykpKSksdGhpcy5ub3JtYWxpemVkUGFnZUluZGV4JD1FdChbdGhpcy5wYWdlSW5kZXgkLHRoaXMubnVtUGFnZXMkXSkucGlwZShoZSgoKFt0LG5dKT0+ezAhPT1uJiYodD49bj90aGlzLnBhZ2VJbmRleCQubmV4dChuLTEpOnQ8MCYmdGhpcy5wYWdlSW5kZXgkLm5leHQoMCkpfSkpLGZ0KCgoW3Qsbl0pPT5NYXRoLm1pbihNYXRoLm1heCh0LDApLG4tMSkpKSxhZSgxKSksdGhpcy5wYWdlZEl0ZW1zJD1FdChbdGhpcy5pdGVtcyQsdGhpcy5zdG9yZS5zZWxlY3QoVkkpLHRoaXMubm9ybWFsaXplZFBhZ2VJbmRleCQsdGhpcy5pc0dyb3VwRXhwYW5kZWQkXSkucGlwZShmdCgoKFt0LG4sZSxhXSk9Pntjb25zdCBvPW4qZSxyPW4qZStNYXRoLm1pbihhP246MyxuKTtyZXR1cm4gdC5zbGljZShvLHIpfSkpKX1uZ09uQ2hhbmdlcyh0KXt0LmNhcmRJZHNXaXRoTWV0YWRhdGEmJnRoaXMuaXRlbXMkLm5leHQodGhpcy5jYXJkSWRzV2l0aE1ldGFkYXRhKSx0Lmdyb3VwTmFtZSYmdGhpcy5ncm91cE5hbWUkLm5leHQodGhpcy5ncm91cE5hbWUpfW9uUGFnZUluZGV4Q2hhbmdlZCh0KXt0aGlzLnBhZ2VJbmRleCQubmV4dCh0KX1vbkdyb3VwRXhwYW5zaW9uVG9nZ2xlZCgpe2lmKG51bGw9PT10aGlzLmdyb3VwTmFtZSl0aHJvdyBuZXcgUmFuZ2VFcnJvcigiSW52YXJpYW50IGVycm9yOiBleHBhbnNpb24gY2Fubm90IGJlIHRvZ2dsZWQgd2hlbiBncm91cE5hbWUgaXMgbnVsbCIpO3RoaXMuc3RvcmUuZGlzcGF0Y2god0soe3RhZ0dyb3VwOnRoaXMuZ3JvdXBOYW1lfSkpfX1mdW5jdGlvbiBNbXQodCxuKXtpZigxJnQmJihLZygwLCJzcGFuIiw2KSxKcCgxKSwkZygpKSwyJnQpe2NvbnN0IHQ9Z3AoKS4kaW1wbGljaXQ7d3MoMSksS3AoIiIsdC5pdGVtcy5sZW5ndGgsIiBjYXJkcyIpfX1mdW5jdGlvbiBPbXQodCxuKXtpZigxJnQmJihLZygwLCJkaXYiLDEpLEtnKDEsImRpdiIsMiksS2coMiwic3BhbiIpLEtnKDMsInNwYW4iLDMpLEpwKDQpLCRnKCksWWcoNSxNbXQsMiwxLCJzcGFuIiw0KSwkZygpLCRnKCksdHAoNiwibWV0cmljcy1jYXJkLWdyaWQiLDUpLCRnKCkpLDImdCl7Y29uc3QgdD1uLiRpbXBsaWNpdCxlPWdwKCk7d3MoMyksX3AoInRpdGxlIix0Lmdyb3VwTmFtZSksd3MoMSksUXAodC5ncm91cE5hbWUpLHdzKDEpLEpnKCJuZ0lmIix0Lml0ZW1zLmxlbmd0aD4xKSx3cygxKSxKZygiY2FyZElkc1dpdGhNZXRhZGF0YSIsdC5pdGVtcykoImNhcmRPYnNlcnZlciIsZS5jYXJkT2JzZXJ2ZXIpKCJncm91cE5hbWUiLHQuZ3JvdXBOYW1lKX19Q210Lsm1ZmFjPWZ1bmN0aW9uIHQobil7cmV0dXJuIG5ldyhufHxDbXQpKFpnKGN2KSl9LENtdC7JtWNtcD1fbyh7dHlwZTpDbXQsc2VsZWN0b3JzOltbIm1ldHJpY3MtY2FyZC1ncmlkIl1dLGlucHV0czp7Z3JvdXBOYW1lOiJncm91cE5hbWUiLGNhcmRJZHNXaXRoTWV0YWRhdGE6ImNhcmRJZHNXaXRoTWV0YWRhdGEiLGNhcmRPYnNlcnZlcjoiY2FyZE9ic2VydmVyIn0sZmVhdHVyZXM6W3ByXSxkZWNsczo3LHZhcnM6MjAsY29uc3RzOltbMywiaXNHcm91cEV4cGFuZGFibGUiLCJpc0dyb3VwRXhwYW5kZWQiLCJncm91cE5hbWUiLCJwYWdlSW5kZXgiLCJudW1QYWdlcyIsInNob3dQYWdpbmF0aW9uQ29udHJvbHMiLCJjYXJkSWRzV2l0aE1ldGFkYXRhIiwiY2FyZE9ic2VydmVyIiwicGFnZUluZGV4Q2hhbmdlZCIsImdyb3VwRXhwYW5zaW9uVG9nZ2xlZCJdXSx0ZW1wbGF0ZTpmdW5jdGlvbiB0KG4sZSl7MSZuJiYoS2coMCwibWV0cmljcy1jYXJkLWdyaWQtY29tcG9uZW50IiwwKSxjcCgicGFnZUluZGV4Q2hhbmdlZCIsKGZ1bmN0aW9uIHQobil7cmV0dXJuIGUub25QYWdlSW5kZXhDaGFuZ2VkKG4pfSkpKCJncm91cEV4cGFuc2lvblRvZ2dsZWQiLChmdW5jdGlvbiB0KCl7cmV0dXJuIGUub25Hcm91cEV4cGFuc2lvblRvZ2dsZWQoKX0pKSx5ZigxLCJhc3luYyIpLHlmKDIsImFzeW5jIikseWYoMywiYXN5bmMiKSx5Zig0LCJhc3luYyIpLHlmKDUsImFzeW5jIikseWYoNiwiYXN5bmMiKSwkZygpKSwyJm4mJkpnKCJpc0dyb3VwRXhwYW5kYWJsZSIsa2YoMSw4LGUuaXNHcm91cEV4cGFuZGFibGUkKSkoImlzR3JvdXBFeHBhbmRlZCIsa2YoMiwxMCxlLmlzR3JvdXBFeHBhbmRlZCQpKSgiZ3JvdXBOYW1lIixlLmdyb3VwTmFtZSkoInBhZ2VJbmRleCIsa2YoMywxMixlLm5vcm1hbGl6ZWRQYWdlSW5kZXgkKSkoIm51bVBhZ2VzIixrZig0LDE0LGUubnVtUGFnZXMkKSkoInNob3dQYWdpbmF0aW9uQ29udHJvbHMiLGtmKDUsMTYsZS5zaG93UGFnaW5hdGlvbkNvbnRyb2xzJCkpKCJjYXJkSWRzV2l0aE1ldGFkYXRhIixrZig2LDE4LGUucGFnZWRJdGVtcyQpKSgiY2FyZE9ic2VydmVyIixlLmNhcmRPYnNlcnZlcil9LGRpcmVjdGl2ZXM6W19tdF0scGlwZXM6W29PXSxlbmNhcHN1bGF0aW9uOjIsY2hhbmdlRGV0ZWN0aW9uOjB9KTtjbGFzcyBQbXR7Y29uc3RydWN0b3IoKXt0aGlzLlBsdWdpblR5cGU9Z1R9dHJhY2tCeUdyb3VwKHQsbil7cmV0dXJuIG4uZ3JvdXBOYW1lfX1QbXQuybVmYWM9ZnVuY3Rpb24gdChuKXtyZXR1cm4gbmV3KG58fFBtdCl9LFBtdC7JtWNtcD1fbyh7dHlwZTpQbXQsc2VsZWN0b3JzOltbIm1ldHJpY3MtY2FyZC1ncm91cHMtY29tcG9uZW50Il1dLGlucHV0czp7Y2FyZEdyb3VwczoiY2FyZEdyb3VwcyIsY2FyZE9ic2VydmVyOiJjYXJkT2JzZXJ2ZXIifSxkZWNsczoxLHZhcnM6Mixjb25zdHM6W1siY2xhc3MiLCJjYXJkLWdyb3VwIiw0LCJuZ0ZvciIsIm5nRm9yT2YiLCJuZ0ZvclRyYWNrQnkiXSxbMSwiY2FyZC1ncm91cCJdLFsxLCJncm91cC10b29sYmFyIl0sWyJhcmlhLXJvbGUiLCJoZWFkaW5nIiwiYXJpYS1sZXZlbCIsIjMiLDEsImdyb3VwLXRpdGxlIiwzLCJ0aXRsZSJdLFsiY2xhc3MiLCJncm91cC1jYXJkLWNvdW50Iiw0LCJuZ0lmIl0sWzMsImNhcmRJZHNXaXRoTWV0YWRhdGEiLCJjYXJkT2JzZXJ2ZXIiLCJncm91cE5hbWUiXSxbMSwiZ3JvdXAtY2FyZC1jb3VudCJdXSx0ZW1wbGF0ZTpmdW5jdGlvbiB0KG4sZSl7MSZuJiZZZygwLE9tdCw3LDYsImRpdiIsMCksMiZuJiZKZygibmdGb3JPZiIsZS5jYXJkR3JvdXBzKSgibmdGb3JUcmFja0J5IixlLnRyYWNrQnlHcm91cCl9LGRpcmVjdGl2ZXM6W2pNLFdNLENtdF0sc3R5bGVzOlsnLm1hdC1iYWRnZS1jb250ZW50W19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXdlaWdodDo2MDA7Zm9udC1zaXplOjEycHg7Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmfS5tYXQtYmFkZ2Utc21hbGxbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1iYWRnZS1jb250ZW50W19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6OXB4fS5tYXQtYmFkZ2UtbGFyZ2VbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1iYWRnZS1jb250ZW50W19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MjRweH0ubWF0LWgxW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1oZWFkbGluZVtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdHlwb2dyYXBoeVtfbmdjb250ZW50LSVDT01QJV0gICBoMVtfbmdjb250ZW50LSVDT01QJV17Zm9udDo0MDAgMjRweC8zMnB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtsZXR0ZXItc3BhY2luZzpub3JtYWw7bWFyZ2luOjAgMCAxNnB4fS5tYXQtaDJbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXRpdGxlW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10eXBvZ3JhcGh5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIGgyW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250OjUwMCAyMHB4LzMycHggUm9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2xldHRlci1zcGFjaW5nOm5vcm1hbDttYXJnaW46MCAwIDE2cHh9Lm1hdC1oM1tfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtc3ViaGVhZGluZy0yW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10eXBvZ3JhcGh5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIGgzW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250OjQwMCAxNnB4LzI4cHggUm9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2xldHRlci1zcGFjaW5nOm5vcm1hbDttYXJnaW46MCAwIDE2cHh9Lm1hdC1oNFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtc3ViaGVhZGluZy0xW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10eXBvZ3JhcGh5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIGg0W19uZ2NvbnRlbnQtJUNPTVAlXXtmb250OjQwMCAxNXB4LzI0cHggUm9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2xldHRlci1zcGFjaW5nOm5vcm1hbDttYXJnaW46MCAwIDE2cHh9Lm1hdC1oNVtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdHlwb2dyYXBoeVtfbmdjb250ZW50LSVDT01QJV0gICBoNVtfbmdjb250ZW50LSVDT01QJV17Zm9udDo0MDAgY2FsYygxNHB4ICogMC44MykvMjBweCBSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7bWFyZ2luOjAgMCAxMnB4fS5tYXQtaDZbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXR5cG9ncmFwaHlbX25nY29udGVudC0lQ09NUCVdICAgaDZbX25nY29udGVudC0lQ09NUCVde2ZvbnQ6NDAwIGNhbGMoMTRweCAqIDAuNjcpLzIwcHggUm9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO21hcmdpbjowIDAgMTJweH0ubWF0LWJvZHktc3Ryb25nW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1ib2R5LTJbX25nY29udGVudC0lQ09NUCVde2ZvbnQ6NTAwIDE0cHgvMjRweCBSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7bGV0dGVyLXNwYWNpbmc6bm9ybWFsfS5tYXQtYm9keVtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtYm9keS0xW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10eXBvZ3JhcGh5W19uZ2NvbnRlbnQtJUNPTVAlXXtmb250OjQwMCAxNHB4LzIwcHggUm9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2xldHRlci1zcGFjaW5nOm5vcm1hbH0ubWF0LWJvZHlbX25nY29udGVudC0lQ09NUCVdICAgcFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtYm9keS0xW19uZ2NvbnRlbnQtJUNPTVAlXSAgIHBbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXR5cG9ncmFwaHlbX25nY29udGVudC0lQ09NUCVdICAgcFtfbmdjb250ZW50LSVDT01QJV17bWFyZ2luOjAgMCAxMnB4fS5tYXQtc21hbGxbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWNhcHRpb25bX25nY29udGVudC0lQ09NUCVde2ZvbnQ6NDAwIDEycHgvMjBweCBSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7bGV0dGVyLXNwYWNpbmc6bm9ybWFsfS5tYXQtZGlzcGxheS00W19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10eXBvZ3JhcGh5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZGlzcGxheS00W19uZ2NvbnRlbnQtJUNPTVAlXXtmb250OjMwMCAxMTJweC8xMTJweCBSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7bGV0dGVyLXNwYWNpbmc6LTAuMDVlbTttYXJnaW46MCAwIDU2cHh9Lm1hdC1kaXNwbGF5LTNbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXR5cG9ncmFwaHlbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1kaXNwbGF5LTNbX25nY29udGVudC0lQ09NUCVde2ZvbnQ6NDAwIDU2cHgvNTZweCBSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7bGV0dGVyLXNwYWNpbmc6LTAuMDJlbTttYXJnaW46MCAwIDY0cHh9Lm1hdC1kaXNwbGF5LTJbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXR5cG9ncmFwaHlbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1kaXNwbGF5LTJbX25nY29udGVudC0lQ09NUCVde2ZvbnQ6NDAwIDQ1cHgvNDhweCBSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7bGV0dGVyLXNwYWNpbmc6LTAuMDA1ZW07bWFyZ2luOjAgMCA2NHB4fS5tYXQtZGlzcGxheS0xW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10eXBvZ3JhcGh5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZGlzcGxheS0xW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250OjQwMCAzNHB4LzQwcHggUm9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2xldHRlci1zcGFjaW5nOm5vcm1hbDttYXJnaW46MCAwIDY0cHh9Lm1hdC1ib3R0b20tc2hlZXQtY29udGFpbmVyW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250OjQwMCAxNHB4LzIwcHggUm9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2xldHRlci1zcGFjaW5nOm5vcm1hbH0ubWF0LWJ1dHRvbltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtcmFpc2VkLWJ1dHRvbltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtaWNvbi1idXR0b25bX25nY29udGVudC0lQ09NUCVdLCAubWF0LXN0cm9rZWQtYnV0dG9uW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1mbGF0LWJ1dHRvbltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtZmFiW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1taW5pLWZhYltfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2ZvbnQtc2l6ZToxNHB4O2ZvbnQtd2VpZ2h0OjUwMH0ubWF0LWJ1dHRvbi10b2dnbGVbX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZn0ubWF0LWNhcmRbX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZn0ubWF0LWNhcmQtdGl0bGVbX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToyNHB4O2ZvbnQtd2VpZ2h0OjUwMH0ubWF0LWNhcmQtaGVhZGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtY2FyZC10aXRsZVtfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjIwcHh9Lm1hdC1jYXJkLXN1YnRpdGxlW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1jYXJkLWNvbnRlbnRbX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToxNHB4fS5tYXQtY2hlY2tib3hbX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZn0ubWF0LWNoZWNrYm94LWxheW91dFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWNoZWNrYm94LWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXtsaW5lLWhlaWdodDoyNHB4fS5tYXQtY2hpcFtfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjE0cHg7Zm9udC13ZWlnaHQ6NTAwfS5tYXQtY2hpcFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWNoaXAtdHJhaWxpbmctaWNvbi5tYXQtaWNvbltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtY2hpcFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWNoaXAtcmVtb3ZlLm1hdC1pY29uW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MThweH0ubWF0LXRhYmxlW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWZ9Lm1hdC1oZWFkZXItY2VsbFtfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjEycHg7Zm9udC13ZWlnaHQ6NTAwfS5tYXQtY2VsbFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtZm9vdGVyLWNlbGxbX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToxNHB4fS5tYXQtY2FsZW5kYXJbX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZn0ubWF0LWNhbGVuZGFyLWJvZHlbX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToxM3B4fS5tYXQtY2FsZW5kYXItYm9keS1sYWJlbFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtY2FsZW5kYXItcGVyaW9kLWJ1dHRvbltfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjE0cHg7Zm9udC13ZWlnaHQ6NTAwfS5tYXQtY2FsZW5kYXItdGFibGUtaGVhZGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIHRoW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MTFweDtmb250LXdlaWdodDo0MDB9Lm1hdC1kaWFsb2ctdGl0bGVbX25nY29udGVudC0lQ09NUCVde2ZvbnQ6NTAwIDIwcHgvMzJweCBSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7bGV0dGVyLXNwYWNpbmc6bm9ybWFsfS5tYXQtZXhwYW5zaW9uLXBhbmVsLWhlYWRlcltfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2ZvbnQtc2l6ZToxNXB4O2ZvbnQtd2VpZ2h0OjQwMH0ubWF0LWV4cGFuc2lvbi1wYW5lbC1jb250ZW50W19uZ2NvbnRlbnQtJUNPTVAlXXtmb250OjQwMCAxNHB4LzIwcHggUm9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2xldHRlci1zcGFjaW5nOm5vcm1hbH0ubWF0LWZvcm0tZmllbGRbX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZTppbmhlcml0O2ZvbnQtd2VpZ2h0OjQwMDtsaW5lLWhlaWdodDoxLjEyNTtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7bGV0dGVyLXNwYWNpbmc6bm9ybWFsfS5tYXQtZm9ybS1maWVsZC13cmFwcGVyW19uZ2NvbnRlbnQtJUNPTVAlXXtwYWRkaW5nLWJvdHRvbToxLjM0Mzc1ZW19Lm1hdC1mb3JtLWZpZWxkLXByZWZpeFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWljb25bX25nY29udGVudC0lQ09NUCVdLCAubWF0LWZvcm0tZmllbGQtc3VmZml4W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaWNvbltfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjE1MCU7bGluZS1oZWlnaHQ6MS4xMjV9Lm1hdC1mb3JtLWZpZWxkLXByZWZpeFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWljb24tYnV0dG9uW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1mb3JtLWZpZWxkLXN1ZmZpeFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWljb24tYnV0dG9uW19uZ2NvbnRlbnQtJUNPTVAlXXtoZWlnaHQ6MS41ZW07d2lkdGg6MS41ZW19Lm1hdC1mb3JtLWZpZWxkLXByZWZpeFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWljb24tYnV0dG9uW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaWNvbltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtZm9ybS1maWVsZC1zdWZmaXhbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pY29uLWJ1dHRvbltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWljb25bX25nY29udGVudC0lQ09NUCVde2hlaWdodDoxLjEyNWVtO2xpbmUtaGVpZ2h0OjEuMTI1fS5tYXQtZm9ybS1maWVsZC1pbmZpeFtfbmdjb250ZW50LSVDT01QJV17cGFkZGluZzouNWVtIDA7Ym9yZGVyLXRvcDouODQzNzVlbSBzb2xpZCB0cmFuc3BhcmVudH0ubWF0LWZvcm0tZmllbGQtY2FuLWZsb2F0Lm1hdC1mb3JtLWZpZWxkLXNob3VsZC1mbG9hdFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWZvcm0tZmllbGQtY2FuLWZsb2F0W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaW5wdXQtc2VydmVyW19uZ2NvbnRlbnQtJUNPTVAlXTpmb2N1cyArIC5tYXQtZm9ybS1maWVsZC1sYWJlbC13cmFwcGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17dHJhbnNmb3JtOnRyYW5zbGF0ZVkoLTEuMzQzNzVlbSkgc2NhbGUoMC43NSk7d2lkdGg6MTMzLjMzMzMzMzMzMzMlfS5tYXQtZm9ybS1maWVsZC1jYW4tZmxvYXRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pbnB1dC1zZXJ2ZXJbbGFiZWxdW19uZ2NvbnRlbnQtJUNPTVAlXTpub3QoOmxhYmVsLXNob3duKSArIC5tYXQtZm9ybS1maWVsZC1sYWJlbC13cmFwcGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17dHJhbnNmb3JtOnRyYW5zbGF0ZVkoLTEuMzQzNzRlbSkgc2NhbGUoMC43NSk7d2lkdGg6MTMzLjMzMzM0MzMzMzMlfS5tYXQtZm9ybS1maWVsZC1sYWJlbC13cmFwcGVyW19uZ2NvbnRlbnQtJUNPTVAlXXt0b3A6LTAuODQzNzVlbTtwYWRkaW5nLXRvcDouODQzNzVlbX0ubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVde3RvcDoxLjM0Mzc1ZW19Lm1hdC1mb3JtLWZpZWxkLXVuZGVybGluZVtfbmdjb250ZW50LSVDT01QJV17Ym90dG9tOjEuMzQzNzVlbX0ubWF0LWZvcm0tZmllbGQtc3Vic2NyaXB0LXdyYXBwZXJbX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZTo3NSU7bWFyZ2luLXRvcDouNjY2NjY2NjY2N2VtO3RvcDpjYWxjKDEwMCUgLSAxLjc5MTY2NjY2NjdlbSl9Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtbGVnYWN5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC13cmFwcGVyW19uZ2NvbnRlbnQtJUNPTVAlXXtwYWRkaW5nLWJvdHRvbToxLjI1ZW19Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtbGVnYWN5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1pbmZpeFtfbmdjb250ZW50LSVDT01QJV17cGFkZGluZzouNDM3NWVtIDB9Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtbGVnYWN5Lm1hdC1mb3JtLWZpZWxkLWNhbi1mbG9hdC5tYXQtZm9ybS1maWVsZC1zaG91bGQtZmxvYXRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtbGVnYWN5Lm1hdC1mb3JtLWZpZWxkLWNhbi1mbG9hdFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWlucHV0LXNlcnZlcltfbmdjb250ZW50LSVDT01QJV06Zm9jdXMgKyAubWF0LWZvcm0tZmllbGQtbGFiZWwtd3JhcHBlcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVde3RyYW5zZm9ybTp0cmFuc2xhdGVZKC0xLjI4MTI1ZW0pIHNjYWxlKDAuNzUpIHBlcnNwZWN0aXZlKDEwMHB4KSB0cmFuc2xhdGVaKDAuMDAxcHgpOy1tcy10cmFuc2Zvcm06dHJhbnNsYXRlWSgtMS4yODEyNWVtKSBzY2FsZSgwLjc1KTt3aWR0aDoxMzMuMzMzMzMzMzMzMyV9Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtbGVnYWN5Lm1hdC1mb3JtLWZpZWxkLWNhbi1mbG9hdFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtYXV0b2ZpbGwtY29udHJvbFtfbmdjb250ZW50LSVDT01QJV06LXdlYmtpdC1hdXRvZmlsbCArIC5tYXQtZm9ybS1maWVsZC1sYWJlbC13cmFwcGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17dHJhbnNmb3JtOnRyYW5zbGF0ZVkoLTEuMjgxMjVlbSkgc2NhbGUoMC43NSkgcGVyc3BlY3RpdmUoMTAwcHgpIHRyYW5zbGF0ZVooMC4wMDEwMXB4KTstbXMtdHJhbnNmb3JtOnRyYW5zbGF0ZVkoLTEuMjgxMjRlbSkgc2NhbGUoMC43NSk7d2lkdGg6MTMzLjMzMzM0MzMzMzMlfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWxlZ2FjeS5tYXQtZm9ybS1maWVsZC1jYW4tZmxvYXRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pbnB1dC1zZXJ2ZXJbbGFiZWxdW19uZ2NvbnRlbnQtJUNPTVAlXTpub3QoOmxhYmVsLXNob3duKSArIC5tYXQtZm9ybS1maWVsZC1sYWJlbC13cmFwcGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17dHJhbnNmb3JtOnRyYW5zbGF0ZVkoLTEuMjgxMjVlbSkgc2NhbGUoMC43NSkgcGVyc3BlY3RpdmUoMTAwcHgpIHRyYW5zbGF0ZVooMC4wMDEwMnB4KTstbXMtdHJhbnNmb3JtOnRyYW5zbGF0ZVkoLTEuMjgxMjNlbSkgc2NhbGUoMC43NSk7d2lkdGg6MTMzLjMzMzM1MzMzMzMlfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWxlZ2FjeVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVde3RvcDoxLjI4MTI1ZW19Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtbGVnYWN5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC11bmRlcmxpbmVbX25nY29udGVudC0lQ09NUCVde2JvdHRvbToxLjI1ZW19Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtbGVnYWN5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1zdWJzY3JpcHQtd3JhcHBlcltfbmdjb250ZW50LSVDT01QJV17bWFyZ2luLXRvcDouNTQxNjY2NjY2N2VtO3RvcDpjYWxjKDEwMCUgLSAxLjY2NjY2NjY2NjdlbSl9QG1lZGlhIHByaW50ey5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWxlZ2FjeS5tYXQtZm9ybS1maWVsZC1jYW4tZmxvYXQubWF0LWZvcm0tZmllbGQtc2hvdWxkLWZsb2F0W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWxlZ2FjeS5tYXQtZm9ybS1maWVsZC1jYW4tZmxvYXRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pbnB1dC1zZXJ2ZXJbX25nY29udGVudC0lQ09NUCVdOmZvY3VzICsgLm1hdC1mb3JtLWZpZWxkLWxhYmVsLXdyYXBwZXJbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXt0cmFuc2Zvcm06dHJhbnNsYXRlWSgtMS4yODEyMmVtKSBzY2FsZSgwLjc1KX0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1sZWdhY3kubWF0LWZvcm0tZmllbGQtY2FuLWZsb2F0W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1hdXRvZmlsbC1jb250cm9sW19uZ2NvbnRlbnQtJUNPTVAlXTotd2Via2l0LWF1dG9maWxsICsgLm1hdC1mb3JtLWZpZWxkLWxhYmVsLXdyYXBwZXJbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXt0cmFuc2Zvcm06dHJhbnNsYXRlWSgtMS4yODEyMWVtKSBzY2FsZSgwLjc1KX0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1sZWdhY3kubWF0LWZvcm0tZmllbGQtY2FuLWZsb2F0W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaW5wdXQtc2VydmVyW2xhYmVsXVtfbmdjb250ZW50LSVDT01QJV06bm90KDpsYWJlbC1zaG93bikgKyAubWF0LWZvcm0tZmllbGQtbGFiZWwtd3JhcHBlcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVde3RyYW5zZm9ybTp0cmFuc2xhdGVZKC0xLjI4MTJlbSkgc2NhbGUoMC43NSl9fS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWZpbGxbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWluZml4W19uZ2NvbnRlbnQtJUNPTVAlXXtwYWRkaW5nOi4yNWVtIDAgLjc1ZW0gMH0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1maWxsW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17dG9wOjEuMDkzNzVlbTttYXJnaW4tdG9wOi0wLjVlbX0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1maWxsLm1hdC1mb3JtLWZpZWxkLWNhbi1mbG9hdC5tYXQtZm9ybS1maWVsZC1zaG91bGQtZmxvYXRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtZmlsbC5tYXQtZm9ybS1maWVsZC1jYW4tZmxvYXRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pbnB1dC1zZXJ2ZXJbX25nY29udGVudC0lQ09NUCVdOmZvY3VzICsgLm1hdC1mb3JtLWZpZWxkLWxhYmVsLXdyYXBwZXJbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXt0cmFuc2Zvcm06dHJhbnNsYXRlWSgtMC41OTM3NWVtKSBzY2FsZSgwLjc1KTt3aWR0aDoxMzMuMzMzMzMzMzMzMyV9Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtZmlsbC5tYXQtZm9ybS1maWVsZC1jYW4tZmxvYXRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pbnB1dC1zZXJ2ZXJbbGFiZWxdW19uZ2NvbnRlbnQtJUNPTVAlXTpub3QoOmxhYmVsLXNob3duKSArIC5tYXQtZm9ybS1maWVsZC1sYWJlbC13cmFwcGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17dHJhbnNmb3JtOnRyYW5zbGF0ZVkoLTAuNTkzNzRlbSkgc2NhbGUoMC43NSk7d2lkdGg6MTMzLjMzMzM0MzMzMzMlfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLW91dGxpbmVbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWluZml4W19uZ2NvbnRlbnQtJUNPTVAlXXtwYWRkaW5nOjFlbSAwIDFlbSAwfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLW91dGxpbmVbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXt0b3A6MS44NDM3NWVtO21hcmdpbi10b3A6LTAuMjVlbX0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1vdXRsaW5lLm1hdC1mb3JtLWZpZWxkLWNhbi1mbG9hdC5tYXQtZm9ybS1maWVsZC1zaG91bGQtZmxvYXRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2Utb3V0bGluZS5tYXQtZm9ybS1maWVsZC1jYW4tZmxvYXRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pbnB1dC1zZXJ2ZXJbX25nY29udGVudC0lQ09NUCVdOmZvY3VzICsgLm1hdC1mb3JtLWZpZWxkLWxhYmVsLXdyYXBwZXJbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXt0cmFuc2Zvcm06dHJhbnNsYXRlWSgtMS41OTM3NWVtKSBzY2FsZSgwLjc1KTt3aWR0aDoxMzMuMzMzMzMzMzMzMyV9Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2Utb3V0bGluZS5tYXQtZm9ybS1maWVsZC1jYW4tZmxvYXRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pbnB1dC1zZXJ2ZXJbbGFiZWxdW19uZ2NvbnRlbnQtJUNPTVAlXTpub3QoOmxhYmVsLXNob3duKSArIC5tYXQtZm9ybS1maWVsZC1sYWJlbC13cmFwcGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17dHJhbnNmb3JtOnRyYW5zbGF0ZVkoLTEuNTkzNzRlbSkgc2NhbGUoMC43NSk7d2lkdGg6MTMzLjMzMzM0MzMzMzMlfS5tYXQtZ3JpZC10aWxlLWhlYWRlcltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtZ3JpZC10aWxlLWZvb3Rlcltfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjE0cHh9Lm1hdC1ncmlkLXRpbGUtaGVhZGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGluZVtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtZ3JpZC10aWxlLWZvb3Rlcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpbmVbX25nY29udGVudC0lQ09NUCVde3doaXRlLXNwYWNlOm5vd3JhcDtvdmVyZmxvdzpoaWRkZW47dGV4dC1vdmVyZmxvdzplbGxpcHNpcztkaXNwbGF5OmJsb2NrO2JveC1zaXppbmc6Ym9yZGVyLWJveH0ubWF0LWdyaWQtdGlsZS1oZWFkZXJbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saW5lW19uZ2NvbnRlbnQtJUNPTVAlXTpudGgtY2hpbGQobisyKSwgLm1hdC1ncmlkLXRpbGUtZm9vdGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGluZVtfbmdjb250ZW50LSVDT01QJV06bnRoLWNoaWxkKG4rMil7Zm9udC1zaXplOjEycHh9aW5wdXQubWF0LWlucHV0LWVsZW1lbnRbX25nY29udGVudC0lQ09NUCVde21hcmdpbi10b3A6LTAuMDYyNWVtfS5tYXQtbWVudS1pdGVtW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7Zm9udC1zaXplOjE0cHg7Zm9udC13ZWlnaHQ6NDAwfS5tYXQtcGFnaW5hdG9yW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1wYWdpbmF0b3ItcGFnZS1zaXplW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtc2VsZWN0LXRyaWdnZXJbX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtmb250LXNpemU6MTJweH0ubWF0LXJhZGlvLWJ1dHRvbltfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmfS5tYXQtc2VsZWN0W19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWZ9Lm1hdC1zZWxlY3QtdHJpZ2dlcltfbmdjb250ZW50LSVDT01QJV17aGVpZ2h0OjEuMTI1ZW19Lm1hdC1zbGlkZS10b2dnbGUtY29udGVudFtfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmfS5tYXQtc2xpZGVyLXRodW1iLWxhYmVsLXRleHRbX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtmb250LXNpemU6MTJweDtmb250LXdlaWdodDo1MDB9Lm1hdC1zdGVwcGVyLXZlcnRpY2FsW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1zdGVwcGVyLWhvcml6b250YWxbX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZn0ubWF0LXN0ZXAtbGFiZWxbX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToxNHB4O2ZvbnQtd2VpZ2h0OjQwMH0ubWF0LXN0ZXAtc3ViLWxhYmVsLWVycm9yW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXdlaWdodDpub3JtYWx9Lm1hdC1zdGVwLWxhYmVsLWVycm9yW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MTRweH0ubWF0LXN0ZXAtbGFiZWwtc2VsZWN0ZWRbX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToxNHB4O2ZvbnQtd2VpZ2h0OjUwMH0ubWF0LXRhYi1ncm91cFtfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmfS5tYXQtdGFiLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10YWItbGlua1tfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2ZvbnQtc2l6ZToxNHB4O2ZvbnQtd2VpZ2h0OjUwMH0ubWF0LXRvb2xiYXJbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXRvb2xiYXJbX25nY29udGVudC0lQ09NUCVdICAgaDFbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXRvb2xiYXJbX25nY29udGVudC0lQ09NUCVdICAgaDJbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXRvb2xiYXJbX25nY29udGVudC0lQ09NUCVdICAgaDNbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXRvb2xiYXJbX25nY29udGVudC0lQ09NUCVdICAgaDRbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXRvb2xiYXJbX25nY29udGVudC0lQ09NUCVdICAgaDVbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXRvb2xiYXJbX25nY29udGVudC0lQ09NUCVdICAgaDZbX25nY29udGVudC0lQ09NUCVde2ZvbnQ6NTAwIDIwcHgvMzJweCBSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7bGV0dGVyLXNwYWNpbmc6bm9ybWFsO21hcmdpbjowfS5tYXQtdG9vbHRpcFtfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2ZvbnQtc2l6ZToxMHB4O3BhZGRpbmctdG9wOjZweDtwYWRkaW5nLWJvdHRvbTo2cHh9Lm1hdC10b29sdGlwLWhhbmRzZXRbX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToxNHB4O3BhZGRpbmctdG9wOjhweDtwYWRkaW5nLWJvdHRvbTo4cHh9Lm1hdC1saXN0LWl0ZW1bX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZn0ubWF0LWxpc3Qtb3B0aW9uW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWZ9Lm1hdC1saXN0LWJhc2VbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saXN0LWl0ZW1bX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToxNnB4fS5tYXQtbGlzdC1iYXNlW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGlzdC1pdGVtW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGluZVtfbmdjb250ZW50LSVDT01QJV17d2hpdGUtc3BhY2U6bm93cmFwO292ZXJmbG93OmhpZGRlbjt0ZXh0LW92ZXJmbG93OmVsbGlwc2lzO2Rpc3BsYXk6YmxvY2s7Ym94LXNpemluZzpib3JkZXItYm94fS5tYXQtbGlzdC1iYXNlW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGlzdC1pdGVtW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGluZVtfbmdjb250ZW50LSVDT01QJV06bnRoLWNoaWxkKG4rMil7Zm9udC1zaXplOjE0cHh9Lm1hdC1saXN0LWJhc2VbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saXN0LW9wdGlvbltfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjE2cHh9Lm1hdC1saXN0LWJhc2VbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saXN0LW9wdGlvbltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpbmVbX25nY29udGVudC0lQ09NUCVde3doaXRlLXNwYWNlOm5vd3JhcDtvdmVyZmxvdzpoaWRkZW47dGV4dC1vdmVyZmxvdzplbGxpcHNpcztkaXNwbGF5OmJsb2NrO2JveC1zaXppbmc6Ym9yZGVyLWJveH0ubWF0LWxpc3QtYmFzZVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpc3Qtb3B0aW9uW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGluZVtfbmdjb250ZW50LSVDT01QJV06bnRoLWNoaWxkKG4rMil7Zm9udC1zaXplOjE0cHh9Lm1hdC1saXN0LWJhc2VbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1zdWJoZWFkZXJbX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtmb250LXNpemU6MTRweDtmb250LXdlaWdodDo1MDB9Lm1hdC1saXN0LWJhc2VbZGVuc2VdW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGlzdC1pdGVtW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MTJweH0ubWF0LWxpc3QtYmFzZVtkZW5zZV1bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saXN0LWl0ZW1bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saW5lW19uZ2NvbnRlbnQtJUNPTVAlXXt3aGl0ZS1zcGFjZTpub3dyYXA7b3ZlcmZsb3c6aGlkZGVuO3RleHQtb3ZlcmZsb3c6ZWxsaXBzaXM7ZGlzcGxheTpibG9jaztib3gtc2l6aW5nOmJvcmRlci1ib3h9Lm1hdC1saXN0LWJhc2VbZGVuc2VdW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGlzdC1pdGVtW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGluZVtfbmdjb250ZW50LSVDT01QJV06bnRoLWNoaWxkKG4rMil7Zm9udC1zaXplOjEycHh9Lm1hdC1saXN0LWJhc2VbZGVuc2VdW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGlzdC1vcHRpb25bX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToxMnB4fS5tYXQtbGlzdC1iYXNlW2RlbnNlXVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpc3Qtb3B0aW9uW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGluZVtfbmdjb250ZW50LSVDT01QJV17d2hpdGUtc3BhY2U6bm93cmFwO292ZXJmbG93OmhpZGRlbjt0ZXh0LW92ZXJmbG93OmVsbGlwc2lzO2Rpc3BsYXk6YmxvY2s7Ym94LXNpemluZzpib3JkZXItYm94fS5tYXQtbGlzdC1iYXNlW2RlbnNlXVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpc3Qtb3B0aW9uW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGluZVtfbmdjb250ZW50LSVDT01QJV06bnRoLWNoaWxkKG4rMil7Zm9udC1zaXplOjEycHh9Lm1hdC1saXN0LWJhc2VbZGVuc2VdW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtc3ViaGVhZGVyW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7Zm9udC1zaXplOjEycHg7Zm9udC13ZWlnaHQ6NTAwfS5tYXQtb3B0aW9uW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7Zm9udC1zaXplOjE2cHh9Lm1hdC1vcHRncm91cC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17Zm9udDo1MDAgMTRweC8yNHB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtsZXR0ZXItc3BhY2luZzpub3JtYWx9Lm1hdC1zaW1wbGUtc25hY2tiYXJbX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtmb250LXNpemU6MTRweH0ubWF0LXNpbXBsZS1zbmFja2Jhci1hY3Rpb25bX25nY29udGVudC0lQ09NUCVde2xpbmUtaGVpZ2h0OjE7Zm9udC1mYW1pbHk6aW5oZXJpdDtmb250LXNpemU6aW5oZXJpdDtmb250LXdlaWdodDo1MDB9Lm1hdC10cmVlW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWZ9Lm1hdC10cmVlLW5vZGVbX25nY29udGVudC0lQ09NUCVdLCAubWF0LW5lc3RlZC10cmVlLW5vZGVbX25nY29udGVudC0lQ09NUCVde2ZvbnQtd2VpZ2h0OjQwMDtmb250LXNpemU6MTRweH0ubWF0LXJpcHBsZVtfbmdjb250ZW50LSVDT01QJV17b3ZlcmZsb3c6aGlkZGVuO3Bvc2l0aW9uOnJlbGF0aXZlfS5tYXQtcmlwcGxlW19uZ2NvbnRlbnQtJUNPTVAlXTpub3QoOmVtcHR5KXt0cmFuc2Zvcm06dHJhbnNsYXRlWigwKX0ubWF0LXJpcHBsZS5tYXQtcmlwcGxlLXVuYm91bmRlZFtfbmdjb250ZW50LSVDT01QJV17b3ZlcmZsb3c6dmlzaWJsZX0ubWF0LXJpcHBsZS1lbGVtZW50W19uZ2NvbnRlbnQtJUNPTVAlXXtwb3NpdGlvbjphYnNvbHV0ZTtib3JkZXItcmFkaXVzOjUwJTtwb2ludGVyLWV2ZW50czpub25lO3RyYW5zaXRpb246b3BhY2l0eSx0cmFuc2Zvcm0gMG1zIGN1YmljLWJlemllcigwLCAwLCAwLjIsIDEpO3RyYW5zZm9ybTpzY2FsZSgwKX0uY2RrLWhpZ2gtY29udHJhc3QtYWN0aXZlW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtcmlwcGxlLWVsZW1lbnRbX25nY29udGVudC0lQ09NUCVde2Rpc3BsYXk6bm9uZX0uY2RrLXZpc3VhbGx5LWhpZGRlbltfbmdjb250ZW50LSVDT01QJV17Ym9yZGVyOjA7Y2xpcDpyZWN0KDAgMCAwIDApO2hlaWdodDoxcHg7bWFyZ2luOi0xcHg7b3ZlcmZsb3c6aGlkZGVuO3BhZGRpbmc6MDtwb3NpdGlvbjphYnNvbHV0ZTt3aWR0aDoxcHg7b3V0bGluZTowOy13ZWJraXQtYXBwZWFyYW5jZTpub25lOy1tb3otYXBwZWFyYW5jZTpub25lfS5jZGstb3ZlcmxheS1jb250YWluZXJbX25nY29udGVudC0lQ09NUCVdLCAuY2RrLWdsb2JhbC1vdmVybGF5LXdyYXBwZXJbX25nY29udGVudC0lQ09NUCVde3BvaW50ZXItZXZlbnRzOm5vbmU7dG9wOjA7bGVmdDowO2hlaWdodDoxMDAlO3dpZHRoOjEwMCV9LmNkay1vdmVybGF5LWNvbnRhaW5lcltfbmdjb250ZW50LSVDT01QJV17cG9zaXRpb246Zml4ZWQ7ei1pbmRleDoxMDAwfS5jZGstb3ZlcmxheS1jb250YWluZXJbX25nY29udGVudC0lQ09NUCVdOmVtcHR5e2Rpc3BsYXk6bm9uZX0uY2RrLWdsb2JhbC1vdmVybGF5LXdyYXBwZXJbX25nY29udGVudC0lQ09NUCVde2Rpc3BsYXk6ZmxleDtwb3NpdGlvbjphYnNvbHV0ZTt6LWluZGV4OjEwMDB9LmNkay1vdmVybGF5LXBhbmVbX25nY29udGVudC0lQ09NUCVde3Bvc2l0aW9uOmFic29sdXRlO3BvaW50ZXItZXZlbnRzOmF1dG87Ym94LXNpemluZzpib3JkZXItYm94O3otaW5kZXg6MTAwMDtkaXNwbGF5OmZsZXg7bWF4LXdpZHRoOjEwMCU7bWF4LWhlaWdodDoxMDAlfS5jZGstb3ZlcmxheS1iYWNrZHJvcFtfbmdjb250ZW50LSVDT01QJV17cG9zaXRpb246YWJzb2x1dGU7dG9wOjA7Ym90dG9tOjA7bGVmdDowO3JpZ2h0OjA7ei1pbmRleDoxMDAwO3BvaW50ZXItZXZlbnRzOmF1dG87LXdlYmtpdC10YXAtaGlnaGxpZ2h0LWNvbG9yOnRyYW5zcGFyZW50O3RyYW5zaXRpb246b3BhY2l0eSA0MDBtcyBjdWJpYy1iZXppZXIoMC4yNSwgMC44LCAwLjI1LCAxKTtvcGFjaXR5OjB9LmNkay1vdmVybGF5LWJhY2tkcm9wLmNkay1vdmVybGF5LWJhY2tkcm9wLXNob3dpbmdbX25nY29udGVudC0lQ09NUCVde29wYWNpdHk6MX1AbWVkaWEgc2NyZWVuIGFuZCAoLW1zLWhpZ2gtY29udHJhc3Q6IGFjdGl2ZSl7LmNkay1vdmVybGF5LWJhY2tkcm9wLmNkay1vdmVybGF5LWJhY2tkcm9wLXNob3dpbmdbX25nY29udGVudC0lQ09NUCVde29wYWNpdHk6LjZ9fS5jZGstb3ZlcmxheS1kYXJrLWJhY2tkcm9wW19uZ2NvbnRlbnQtJUNPTVAlXXtiYWNrZ3JvdW5kOnJnYmEoMCwwLDAsLjMyKX0uY2RrLW92ZXJsYXktdHJhbnNwYXJlbnQtYmFja2Ryb3BbX25nY29udGVudC0lQ09NUCVdLCAuY2RrLW92ZXJsYXktdHJhbnNwYXJlbnQtYmFja2Ryb3AuY2RrLW92ZXJsYXktYmFja2Ryb3Atc2hvd2luZ1tfbmdjb250ZW50LSVDT01QJV17b3BhY2l0eTowfS5jZGstb3ZlcmxheS1jb25uZWN0ZWQtcG9zaXRpb24tYm91bmRpbmctYm94W19uZ2NvbnRlbnQtJUNPTVAlXXtwb3NpdGlvbjphYnNvbHV0ZTt6LWluZGV4OjEwMDA7ZGlzcGxheTpmbGV4O2ZsZXgtZGlyZWN0aW9uOmNvbHVtbjttaW4td2lkdGg6MXB4O21pbi1oZWlnaHQ6MXB4fS5jZGstZ2xvYmFsLXNjcm9sbGJsb2NrW19uZ2NvbnRlbnQtJUNPTVAlXXtwb3NpdGlvbjpmaXhlZDt3aWR0aDoxMDAlO292ZXJmbG93LXk6c2Nyb2xsfUBrZXlmcmFtZXMgY2RrLXRleHQtZmllbGQtYXV0b2ZpbGwtc3RhcnR7fUBrZXlmcmFtZXMgY2RrLXRleHQtZmllbGQtYXV0b2ZpbGwtZW5ke30uY2RrLXRleHQtZmllbGQtYXV0b2ZpbGwtbW9uaXRvcmVkW19uZ2NvbnRlbnQtJUNPTVAlXTotd2Via2l0LWF1dG9maWxse2FuaW1hdGlvbjpjZGstdGV4dC1maWVsZC1hdXRvZmlsbC1zdGFydCAwcyAxbXN9LmNkay10ZXh0LWZpZWxkLWF1dG9maWxsLW1vbml0b3JlZFtfbmdjb250ZW50LSVDT01QJV06bm90KDotd2Via2l0LWF1dG9maWxsKXthbmltYXRpb246Y2RrLXRleHQtZmllbGQtYXV0b2ZpbGwtZW5kIDBzIDFtc310ZXh0YXJlYS5jZGstdGV4dGFyZWEtYXV0b3NpemVbX25nY29udGVudC0lQ09NUCVde3Jlc2l6ZTpub25lfXRleHRhcmVhLmNkay10ZXh0YXJlYS1hdXRvc2l6ZS1tZWFzdXJpbmdbX25nY29udGVudC0lQ09NUCVde3BhZGRpbmc6MnB4IDAgIWltcG9ydGFudDtib3gtc2l6aW5nOmNvbnRlbnQtYm94ICFpbXBvcnRhbnQ7aGVpZ2h0OmF1dG8gIWltcG9ydGFudDtvdmVyZmxvdzpoaWRkZW4gIWltcG9ydGFudH10ZXh0YXJlYS5jZGstdGV4dGFyZWEtYXV0b3NpemUtbWVhc3VyaW5nLWZpcmVmb3hbX25nY29udGVudC0lQ09NUCVde3BhZGRpbmc6MnB4IDAgIWltcG9ydGFudDtib3gtc2l6aW5nOmNvbnRlbnQtYm94ICFpbXBvcnRhbnQ7aGVpZ2h0OjAgIWltcG9ydGFudH0ubWF0LWZvY3VzLWluZGljYXRvcltfbmdjb250ZW50LSVDT01QJV17cG9zaXRpb246cmVsYXRpdmV9Lm1hdC1tZGMtZm9jdXMtaW5kaWNhdG9yW19uZ2NvbnRlbnQtJUNPTVAlXXtwb3NpdGlvbjpyZWxhdGl2ZX0ubWF0LXJpcHBsZS1lbGVtZW50W19uZ2NvbnRlbnQtJUNPTVAlXXtiYWNrZ3JvdW5kLWNvbG9yOnJnYmEoMCwwLDAsLjEpfS5tYXQtb3B0aW9uW19uZ2NvbnRlbnQtJUNPTVAlXXtjb2xvcjojMjEyMTIxfS5tYXQtb3B0aW9uW19uZ2NvbnRlbnQtJUNPTVAlXTpob3Zlcjpub3QoLm1hdC1vcHRpb24tZGlzYWJsZWQpLCAubWF0LW9wdGlvbltfbmdjb250ZW50LSVDT01QJV06Zm9jdXM6bm90KC5tYXQtb3B0aW9uLWRpc2FibGVkKXtiYWNrZ3JvdW5kOnJnYmEoMCwwLDAsLjA0KX0ubWF0LW9wdGlvbi5tYXQtc2VsZWN0ZWRbX25nY29udGVudC0lQ09NUCVdOm5vdCgubWF0LW9wdGlvbi1tdWx0aXBsZSk6bm90KC5tYXQtb3B0aW9uLWRpc2FibGVkKXtiYWNrZ3JvdW5kOnJnYmEoMCwwLDAsLjA0KX0ubWF0LW9wdGlvbi5tYXQtYWN0aXZlW19uZ2NvbnRlbnQtJUNPTVAlXXtiYWNrZ3JvdW5kOnJnYmEoMCwwLDAsLjA0KTtjb2xvcjojMjEyMTIxfS5tYXQtb3B0aW9uLm1hdC1vcHRpb24tZGlzYWJsZWRbX25nY29udGVudC0lQ09NUCVde2NvbG9yOnJnYmEoMCwwLDAsLjM4KX0ubWF0LXByaW1hcnlbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1vcHRpb24ubWF0LXNlbGVjdGVkW19uZ2NvbnRlbnQtJUNPTVAlXTpub3QoLm1hdC1vcHRpb24tZGlzYWJsZWQpe2NvbG9yOiNmNTdjMDB9Lm1hdC1hY2NlbnRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1vcHRpb24ubWF0LXNlbGVjdGVkW19uZ2NvbnRlbnQtJUNPTVAlXTpub3QoLm1hdC1vcHRpb24tZGlzYWJsZWQpe2NvbG9yOiNmZjk4MDB9Lm1hdC13YXJuW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtb3B0aW9uLm1hdC1zZWxlY3RlZFtfbmdjb250ZW50LSVDT01QJV06bm90KC5tYXQtb3B0aW9uLWRpc2FibGVkKXtjb2xvcjojZjQ0MzM2fS5tYXQtb3B0Z3JvdXAtbGFiZWxbX25nY29udGVudC0lQ09NUCVde2NvbG9yOiM2MTYxNjF9Lm1hdC1vcHRncm91cC1kaXNhYmxlZFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LW9wdGdyb3VwLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXtjb2xvcjpyZ2JhKDAsMCwwLC4zOCl9Lm1hdC1wc2V1ZG8tY2hlY2tib3hbX25nY29udGVudC0lQ09NUCVde2NvbG9yOiM2MTYxNjF9Lm1hdC1wc2V1ZG8tY2hlY2tib3hbX25nY29udGVudC0lQ09NUCVdOjphZnRlcntjb2xvcjojZmFmYWZhfS5tYXQtcHNldWRvLWNoZWNrYm94LWRpc2FibGVkW19uZ2NvbnRlbnQtJUNPTVAlXXtjb2xvcjojYjBiMGIwfS5tYXQtcHJpbWFyeVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXBzZXVkby1jaGVja2JveC1jaGVja2VkW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1wcmltYXJ5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtcHNldWRvLWNoZWNrYm94LWluZGV0ZXJtaW5hdGVbX25nY29udGVudC0lQ09NUCVde2JhY2tncm91bmQ6I2Y1N2MwMH0ubWF0LXBzZXVkby1jaGVja2JveC1jaGVja2VkW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1wc2V1ZG8tY2hlY2tib3gtaW5kZXRlcm1pbmF0ZVtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtYWNjZW50W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtcHNldWRvLWNoZWNrYm94LWNoZWNrZWRbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWFjY2VudFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXBzZXVkby1jaGVja2JveC1pbmRldGVybWluYXRlW19uZ2NvbnRlbnQtJUNPTVAlXXtiYWNrZ3JvdW5kOiNmZjk4MDB9Lm1hdC13YXJuW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtcHNldWRvLWNoZWNrYm94LWNoZWNrZWRbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXdhcm5bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1wc2V1ZG8tY2hlY2tib3gtaW5kZXRlcm1pbmF0ZVtfbmdjb250ZW50LSVDT01QJV17YmFja2dyb3VuZDojZjQ0MzM2fS5tYXQtcHNldWRvLWNoZWNrYm94LWNoZWNrZWQubWF0LXBzZXVkby1jaGVja2JveC1kaXNhYmxlZFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtcHNldWRvLWNoZWNrYm94LWluZGV0ZXJtaW5hdGUubWF0LXBzZXVkby1jaGVja2JveC1kaXNhYmxlZFtfbmdjb250ZW50LSVDT01QJV17YmFja2dyb3VuZDojYjBiMGIwfS5tYXQtYXBwLWJhY2tncm91bmRbX25nY29udGVudC0lQ09NUCVde2JhY2tncm91bmQtY29sb3I6I2ZhZmFmYTtjb2xvcjojMjEyMTIxfS5tYXQtZWxldmF0aW9uLXowW19uZ2NvbnRlbnQtJUNPTVAlXXtib3gtc2hhZG93OjBweCAwcHggMHB4IDBweCByZ2JhKDAsIDAsIDAsIDAuMiksMHB4IDBweCAwcHggMHB4IHJnYmEoMCwgMCwgMCwgMC4xNCksMHB4IDBweCAwcHggMHB4IHJnYmEoMCwgMCwgMCwgMC4xMil9Lm1hdC1lbGV2YXRpb24tejFbX25nY29udGVudC0lQ09NUCVde2JveC1zaGFkb3c6MHB4IDJweCAxcHggLTFweCByZ2JhKDAsIDAsIDAsIDAuMiksMHB4IDFweCAxcHggMHB4IHJnYmEoMCwgMCwgMCwgMC4xNCksMHB4IDFweCAzcHggMHB4IHJnYmEoMCwgMCwgMCwgMC4xMil9Lm1hdC1lbGV2YXRpb24tejJbX25nY29udGVudC0lQ09NUCVde2JveC1zaGFkb3c6MHB4IDNweCAxcHggLTJweCByZ2JhKDAsIDAsIDAsIDAuMiksMHB4IDJweCAycHggMHB4IHJnYmEoMCwgMCwgMCwgMC4xNCksMHB4IDFweCA1cHggMHB4IHJnYmEoMCwgMCwgMCwgMC4xMil9Lm1hdC1lbGV2YXRpb24tejNbX25nY29udGVudC0lQ09NUCVde2JveC1zaGFkb3c6MHB4IDNweCAzcHggLTJweCByZ2JhKDAsIDAsIDAsIDAuMiksMHB4IDNweCA0cHggMHB4IHJnYmEoMCwgMCwgMCwgMC4xNCksMHB4IDFweCA4cHggMHB4IHJnYmEoMCwgMCwgMCwgMC4xMil9Lm1hdC1lbGV2YXRpb24tejRbX25nY29udGVudC0lQ09NUCVde2JveC1zaGFkb3c6MHB4IDJweCA0cHggLTFweCByZ2JhKDAsIDAsIDAsIDAuMiksMHB4IDRweCA1cHggMHB4IHJnYmEoMCwgMCwgMCwgMC4xNCksMHB4IDFweCAxMHB4IDBweCByZ2JhKDAsIDAsIDAsIDAuMTIpfS5tYXQtZWxldmF0aW9uLXo1W19uZ2NvbnRlbnQtJUNPTVAlXXtib3gtc2hhZG93OjBweCAzcHggNXB4IC0xcHggcmdiYSgwLCAwLCAwLCAwLjIpLDBweCA1cHggOHB4IDBweCByZ2JhKDAsIDAsIDAsIDAuMTQpLDBweCAxcHggMTRweCAwcHggcmdiYSgwLCAwLCAwLCAwLjEyKX0ubWF0LWVsZXZhdGlvbi16Nltfbmdjb250ZW50LSVDT01QJV17Ym94LXNoYWRvdzowcHggM3B4IDVweCAtMXB4IHJnYmEoMCwgMCwgMCwgMC4yKSwwcHggNnB4IDEwcHggMHB4IHJnYmEoMCwgMCwgMCwgMC4xNCksMHB4IDFweCAxOHB4IDBweCByZ2JhKDAsIDAsIDAsIDAuMTIpfS5tYXQtZWxldmF0aW9uLXo3W19uZ2NvbnRlbnQtJUNPTVAlXXtib3gtc2hhZG93OjBweCA0cHggNXB4IC0ycHggcmdiYSgwLCAwLCAwLCAwLjIpLDBweCA3cHggMTBweCAxcHggcmdiYSgwLCAwLCAwLCAwLjE0KSwwcHggMnB4IDE2cHggMXB4IHJnYmEoMCwgMCwgMCwgMC4xMil9Lm1hdC1lbGV2YXRpb24tejhbX25nY29udGVudC0lQ09NUCVde2JveC1zaGFkb3c6MHB4IDVweCA1cHggLTNweCByZ2JhKDAsIDAsIDAsIDAuMiksMHB4IDhweCAxMHB4IDFweCByZ2JhKDAsIDAsIDAsIDAuMTQpLDBweCAzcHggMTRweCAycHggcmdiYSgwLCAwLCAwLCAwLjEyKX0ubWF0LWVsZXZhdGlvbi16OVtfbmdjb250ZW50LSVDT01QJV17Ym94LXNoYWRvdzowcHggNXB4IDZweCAtM3B4IHJnYmEoMCwgMCwgMCwgMC4yKSwwcHggOXB4IDEycHggMXB4IHJnYmEoMCwgMCwgMCwgMC4xNCksMHB4IDNweCAxNnB4IDJweCByZ2JhKDAsIDAsIDAsIDAuMTIpfS5tYXQtZWxldmF0aW9uLXoxMFtfbmdjb250ZW50LSVDT01QJV17Ym94LXNoYWRvdzowcHggNnB4IDZweCAtM3B4IHJnYmEoMCwgMCwgMCwgMC4yKSwwcHggMTBweCAxNHB4IDFweCByZ2JhKDAsIDAsIDAsIDAuMTQpLDBweCA0cHggMThweCAzcHggcmdiYSgwLCAwLCAwLCAwLjEyKX0ubWF0LWVsZXZhdGlvbi16MTFbX25nY29udGVudC0lQ09NUCVde2JveC1zaGFkb3c6MHB4IDZweCA3cHggLTRweCByZ2JhKDAsIDAsIDAsIDAuMiksMHB4IDExcHggMTVweCAxcHggcmdiYSgwLCAwLCAwLCAwLjE0KSwwcHggNHB4IDIwcHggM3B4IHJnYmEoMCwgMCwgMCwgMC4xMil9Lm1hdC1lbGV2YXRpb24tejEyW19uZ2NvbnRlbnQtJUNPTVAlXXtib3gtc2hhZG93OjBweCA3cHggOHB4IC00cHggcmdiYSgwLCAwLCAwLCAwLjIpLDBweCAxMnB4IDE3cHggMnB4IHJnYmEoMCwgMCwgMCwgMC4xNCksMHB4IDVweCAyMnB4IDRweCByZ2JhKDAsIDAsIDAsIDAuMTIpfS5tYXQtZWxldmF0aW9uLXoxM1tfbmdjb250ZW50LSVDT01QJV17Ym94LXNoYWRvdzowcHggN3B4IDhweCAtNHB4IHJnYmEoMCwgMCwgMCwgMC4yKSwwcHggMTNweCAxOXB4IDJweCByZ2JhKDAsIDAsIDAsIDAuMTQpLDBweCA1cHggMjRweCA0cHggcmdiYSgwLCAwLCAwLCAwLjEyKX0ubWF0LWVsZXZhdGlvbi16MTRbX25nY29udGVudC0lQ09NUCVde2JveC1zaGFkb3c6MHB4IDdweCA5cHggLTRweCByZ2JhKDAsIDAsIDAsIDAuMiksMHB4IDE0cHggMjFweCAycHggcmdiYSgwLCAwLCAwLCAwLjE0KSwwcHggNXB4IDI2cHggNHB4IHJnYmEoMCwgMCwgMCwgMC4xMil9Lm1hdC1lbGV2YXRpb24tejE1W19uZ2NvbnRlbnQtJUNPTVAlXXtib3gtc2hhZG93OjBweCA4cHggOXB4IC01cHggcmdiYSgwLCAwLCAwLCAwLjIpLDBweCAxNXB4IDIycHggMnB4IHJnYmEoMCwgMCwgMCwgMC4xNCksMHB4IDZweCAyOHB4IDVweCByZ2JhKDAsIDAsIDAsIDAuMTIpfS5tYXQtZWxldmF0aW9uLXoxNltfbmdjb250ZW50LSVDT01QJV17Ym94LXNoYWRvdzowcHggOHB4IDEwcHggLTVweCByZ2JhKDAsIDAsIDAsIDAuMiksMHB4IDE2cHggMjRweCAycHggcmdiYSgwLCAwLCAwLCAwLjE0KSwwcHggNnB4IDMwcHggNXB4IHJnYmEoMCwgMCwgMCwgMC4xMil9Lm1hdC1lbGV2YXRpb24tejE3W19uZ2NvbnRlbnQtJUNPTVAlXXtib3gtc2hhZG93OjBweCA4cHggMTFweCAtNXB4IHJnYmEoMCwgMCwgMCwgMC4yKSwwcHggMTdweCAyNnB4IDJweCByZ2JhKDAsIDAsIDAsIDAuMTQpLDBweCA2cHggMzJweCA1cHggcmdiYSgwLCAwLCAwLCAwLjEyKX0ubWF0LWVsZXZhdGlvbi16MThbX25nY29udGVudC0lQ09NUCVde2JveC1zaGFkb3c6MHB4IDlweCAxMXB4IC01cHggcmdiYSgwLCAwLCAwLCAwLjIpLDBweCAxOHB4IDI4cHggMnB4IHJnYmEoMCwgMCwgMCwgMC4xNCksMHB4IDdweCAzNHB4IDZweCByZ2JhKDAsIDAsIDAsIDAuMTIpfS5tYXQtZWxldmF0aW9uLXoxOVtfbmdjb250ZW50LSVDT01QJV17Ym94LXNoYWRvdzowcHggOXB4IDEycHggLTZweCByZ2JhKDAsIDAsIDAsIDAuMiksMHB4IDE5cHggMjlweCAycHggcmdiYSgwLCAwLCAwLCAwLjE0KSwwcHggN3B4IDM2cHggNnB4IHJnYmEoMCwgMCwgMCwgMC4xMil9Lm1hdC1lbGV2YXRpb24tejIwW19uZ2NvbnRlbnQtJUNPTVAlXXtib3gtc2hhZG93OjBweCAxMHB4IDEzcHggLTZweCByZ2JhKDAsIDAsIDAsIDAuMiksMHB4IDIwcHggMzFweCAzcHggcmdiYSgwLCAwLCAwLCAwLjE0KSwwcHggOHB4IDM4cHggN3B4IHJnYmEoMCwgMCwgMCwgMC4xMil9Lm1hdC1lbGV2YXRpb24tejIxW19uZ2NvbnRlbnQtJUNPTVAlXXtib3gtc2hhZG93OjBweCAxMHB4IDEzcHggLTZweCByZ2JhKDAsIDAsIDAsIDAuMiksMHB4IDIxcHggMzNweCAzcHggcmdiYSgwLCAwLCAwLCAwLjE0KSwwcHggOHB4IDQwcHggN3B4IHJnYmEoMCwgMCwgMCwgMC4xMil9Lm1hdC1lbGV2YXRpb24tejIyW19uZ2NvbnRlbnQtJUNPTVAlXXtib3gtc2hhZG93OjBweCAxMHB4IDE0cHggLTZweCByZ2JhKDAsIDAsIDAsIDAuMiksMHB4IDIycHggMzVweCAzcHggcmdiYSgwLCAwLCAwLCAwLjE0KSwwcHggOHB4IDQycHggN3B4IHJnYmEoMCwgMCwgMCwgMC4xMil9Lm1hdC1lbGV2YXRpb24tejIzW19uZ2NvbnRlbnQtJUNPTVAlXXtib3gtc2hhZG93OjBweCAxMXB4IDE0cHggLTdweCByZ2JhKDAsIDAsIDAsIDAuMiksMHB4IDIzcHggMzZweCAzcHggcmdiYSgwLCAwLCAwLCAwLjE0KSwwcHggOXB4IDQ0cHggOHB4IHJnYmEoMCwgMCwgMCwgMC4xMil9Lm1hdC1lbGV2YXRpb24tejI0W19uZ2NvbnRlbnQtJUNPTVAlXXtib3gtc2hhZG93OjBweCAxMXB4IDE1cHggLTdweCByZ2JhKDAsIDAsIDAsIDAuMiksMHB4IDI0cHggMzhweCAzcHggcmdiYSgwLCAwLCAwLCAwLjE0KSwwcHggOXB4IDQ2cHggOHB4IHJnYmEoMCwgMCwgMCwgMC4xMil9Lm1hdC10aGVtZS1sb2FkZWQtbWFya2VyW19uZ2NvbnRlbnQtJUNPTVAlXXtkaXNwbGF5Om5vbmV9Lm1hdC1hdXRvY29tcGxldGUtcGFuZWxbX25nY29udGVudC0lQ09NUCVde2JhY2tncm91bmQ6I2ZmZjtjb2xvcjojMjEyMTIxfS5tYXQtYXV0b2NvbXBsZXRlLXBhbmVsW19uZ2NvbnRlbnQtJUNPTVAlXTpub3QoW2NsYXNzKj1tYXQtZWxldmF0aW9uLXpdKXtib3gtc2hhZG93OjBweCAycHggNHB4IC0xcHggcmdiYSgwLCAwLCAwLCAwLjIpLDBweCA0cHggNXB4IDBweCByZ2JhKDAsIDAsIDAsIDAuMTQpLDBweCAxcHggMTBweCAwcHggcmdiYSgwLCAwLCAwLCAwLjEyKX0ubWF0LWF1dG9jb21wbGV0ZS1wYW5lbFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LW9wdGlvbi5tYXQtc2VsZWN0ZWRbX25nY29udGVudC0lQ09NUCVdOm5vdCgubWF0LWFjdGl2ZSk6bm90KDpob3Zlcil7YmFja2dyb3VuZDojZmZmfS5tYXQtYXV0b2NvbXBsZXRlLXBhbmVsW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtb3B0aW9uLm1hdC1zZWxlY3RlZFtfbmdjb250ZW50LSVDT01QJV06bm90KC5tYXQtYWN0aXZlKTpub3QoOmhvdmVyKTpub3QoLm1hdC1vcHRpb24tZGlzYWJsZWQpe2NvbG9yOiMyMTIxMjF9Lm1hdC1iYWRnZS1jb250ZW50W19uZ2NvbnRlbnQtJUNPTVAlXXtjb2xvcjojZmZmO2JhY2tncm91bmQ6I2Y1N2MwMH0uY2RrLWhpZ2gtY29udHJhc3QtYWN0aXZlW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtYmFkZ2UtY29udGVudFtfbmdjb250ZW50LSVDT01QJV17b3V0bGluZTpzb2xpZCAxcHg7Ym9yZGVyLXJhZGl1czowfS5tYXQtYmFkZ2UtYWNjZW50W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtYmFkZ2UtY29udGVudFtfbmdjb250ZW50LSVDT01QJV17YmFja2dyb3VuZDojZmY5ODAwO2NvbG9yOiNmZmZ9Lm1hdC1iYWRnZS13YXJuW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtYmFkZ2UtY29udGVudFtfbmdjb250ZW50LSVDT01QJV17Y29sb3I6I2ZmZjtiYWNrZ3JvdW5kOiNmNDQzMzZ9Lm1hdC1iYWRnZVtfbmdjb250ZW50LSVDT01QJV17cG9zaXRpb246cmVsYXRpdmV9Lm1hdC1iYWRnZS1oaWRkZW5bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1iYWRnZS1jb250ZW50W19uZ2NvbnRlbnQtJUNPTVAlXXtkaXNwbGF5Om5vbmV9Lm1hdC1iYWRnZS1kaXNhYmxlZFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWJhZGdlLWNvbnRlbnRbX25nY29udGVudC0lQ09NUCVde2JhY2tncm91bmQ6I2I5YjliOTtjb2xvcjojNzU3NTc1fS5tYXQtYmFkZ2UtY29udGVudFtfbmdjb250ZW50LSVDT01QJV17cG9zaXRpb246YWJzb2x1dGU7dGV4dC1hbGlnbjpjZW50ZXI7ZGlzcGxheTppbmxpbmUtYmxvY2s7Ym9yZGVyLXJhZGl1czo1MCU7dHJhbnNpdGlvbjp0cmFuc2Zvcm0gMjAwbXMgZWFzZS1pbi1vdXQ7dHJhbnNmb3JtOnNjYWxlKDAuNik7b3ZlcmZsb3c6aGlkZGVuO3doaXRlLXNwYWNlOm5vd3JhcDt0ZXh0LW92ZXJmbG93OmVsbGlwc2lzO3BvaW50ZXItZXZlbnRzOm5vbmV9Lm5nLWFuaW1hdGUtZGlzYWJsZWRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1iYWRnZS1jb250ZW50W19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1iYWRnZS1jb250ZW50Ll9tYXQtYW5pbWF0aW9uLW5vb3BhYmxlW19uZ2NvbnRlbnQtJUNPTVAlXXt0cmFuc2l0aW9uOm5vbmV9Lm1hdC1iYWRnZS1jb250ZW50Lm1hdC1iYWRnZS1hY3RpdmVbX25nY29udGVudC0lQ09NUCVde3RyYW5zZm9ybTpub25lfS5tYXQtYmFkZ2Utc21hbGxbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1iYWRnZS1jb250ZW50W19uZ2NvbnRlbnQtJUNPTVAlXXt3aWR0aDoxNnB4O2hlaWdodDoxNnB4O2xpbmUtaGVpZ2h0OjE2cHh9Lm1hdC1iYWRnZS1zbWFsbC5tYXQtYmFkZ2UtYWJvdmVbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1iYWRnZS1jb250ZW50W19uZ2NvbnRlbnQtJUNPTVAlXXt0b3A6LThweH0ubWF0LWJhZGdlLXNtYWxsLm1hdC1iYWRnZS1iZWxvd1tfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWJhZGdlLWNvbnRlbnRbX25nY29udGVudC0lQ09NUCVde2JvdHRvbTotOHB4fS5tYXQtYmFkZ2Utc21hbGwubWF0LWJhZGdlLWJlZm9yZVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWJhZGdlLWNvbnRlbnRbX25nY29udGVudC0lQ09NUCVde2xlZnQ6LTE2cHh9W2Rpcj1ydGxdW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtYmFkZ2Utc21hbGwubWF0LWJhZGdlLWJlZm9yZVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWJhZGdlLWNvbnRlbnRbX25nY29udGVudC0lQ09NUCVde2xlZnQ6YXV0bztyaWdodDotMTZweH0ubWF0LWJhZGdlLXNtYWxsLm1hdC1iYWRnZS1hZnRlcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWJhZGdlLWNvbnRlbnRbX25nY29udGVudC0lQ09NUCVde3JpZ2h0Oi0xNnB4fVtkaXI9cnRsXVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWJhZGdlLXNtYWxsLm1hdC1iYWRnZS1hZnRlcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWJhZGdlLWNvbnRlbnRbX25nY29udGVudC0lQ09NUCVde3JpZ2h0OmF1dG87bGVmdDotMTZweH0ubWF0LWJhZGdlLXNtYWxsLm1hdC1iYWRnZS1vdmVybGFwLm1hdC1iYWRnZS1iZWZvcmVbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1iYWRnZS1jb250ZW50W19uZ2NvbnRlbnQtJUNPTVAlXXtsZWZ0Oi04cHh9W2Rpcj1ydGxdW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtYmFkZ2Utc21hbGwubWF0LWJhZGdlLW92ZXJsYXAubWF0LWJhZGdlLWJlZm9yZVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWJhZGdlLWNvbnRlbnRbX25nY29udGVudC0lQ09NUCVde2xlZnQ6YXV0bztyaWdodDotOHB4fS5tYXQtYmFkZ2Utc21hbGwubWF0LWJhZGdlLW92ZXJsYXAubWF0LWJhZGdlLWFmdGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtYmFkZ2UtY29udGVudFtfbmdjb250ZW50LSVDT01QJV17cmlnaHQ6LThweH1bZGlyPXJ0bF1bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1iYWRnZS1zbWFsbC5tYXQtYmFkZ2Utb3ZlcmxhcC5tYXQtYmFkZ2UtYWZ0ZXJbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1iYWRnZS1jb250ZW50W19uZ2NvbnRlbnQtJUNPTVAlXXtyaWdodDphdXRvO2xlZnQ6LThweH0ubWF0LWJhZGdlLW1lZGl1bVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWJhZGdlLWNvbnRlbnRbX25nY29udGVudC0lQ09NUCVde3dpZHRoOjIycHg7aGVpZ2h0OjIycHg7bGluZS1oZWlnaHQ6MjJweH0ubWF0LWJhZGdlLW1lZGl1bS5tYXQtYmFkZ2UtYWJvdmVbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1iYWRnZS1jb250ZW50W19uZ2NvbnRlbnQtJUNPTVAlXXt0b3A6LTExcHh9Lm1hdC1iYWRnZS1tZWRpdW0ubWF0LWJhZGdlLWJlbG93W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtYmFkZ2UtY29udGVudFtfbmdjb250ZW50LSVDT01QJV17Ym90dG9tOi0xMXB4fS5tYXQtYmFkZ2UtbWVkaXVtLm1hdC1iYWRnZS1iZWZvcmVbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1iYWRnZS1jb250ZW50W19uZ2NvbnRlbnQtJUNPTVAlXXtsZWZ0Oi0yMnB4fVtkaXI9cnRsXVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWJhZGdlLW1lZGl1bS5tYXQtYmFkZ2UtYmVmb3JlW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtYmFkZ2UtY29udGVudFtfbmdjb250ZW50LSVDT01QJV17bGVmdDphdXRvO3JpZ2h0Oi0yMnB4fS5tYXQtYmFkZ2UtbWVkaXVtLm1hdC1iYWRnZS1hZnRlcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWJhZGdlLWNvbnRlbnRbX25nY29udGVudC0lQ09NUCVde3JpZ2h0Oi0yMnB4fVtkaXI9cnRsXVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWJhZGdlLW1lZGl1bS5tYXQtYmFkZ2UtYWZ0ZXJbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1iYWRnZS1jb250ZW50W19uZ2NvbnRlbnQtJUNPTVAlXXtyaWdodDphdXRvO2xlZnQ6LTIycHh9Lm1hdC1iYWRnZS1tZWRpdW0ubWF0LWJhZGdlLW92ZXJsYXAubWF0LWJhZGdlLWJlZm9yZVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWJhZGdlLWNvbnRlbnRbX25nY29udGVudC0lQ09NUCVde2xlZnQ6LTExcHh9W2Rpcj1ydGxdW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtYmFkZ2UtbWVkaXVtLm1hdC1iYWRnZS1vdmVybGFwLm1hdC1iYWRnZS1iZWZvcmVbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1iYWRnZS1jb250ZW50W19uZ2NvbnRlbnQtJUNPTVAlXXtsZWZ0OmF1dG87cmlnaHQ6LTExcHh9Lm1hdC1iYWRnZS1tZWRpdW0ubWF0LWJhZGdlLW92ZXJsYXAubWF0LWJhZGdlLWFmdGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtYmFkZ2UtY29udGVudFtfbmdjb250ZW50LSVDT01QJV17cmlnaHQ6LTExcHh9W2Rpcj1ydGxdW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtYmFkZ2UtbWVkaXVtLm1hdC1iYWRnZS1vdmVybGFwLm1hdC1iYWRnZS1hZnRlcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWJhZGdlLWNvbnRlbnRbX25nY29udGVudC0lQ09NUCVde3JpZ2h0OmF1dG87bGVmdDotMTFweH0ubWF0LWJhZGdlLWxhcmdlW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtYmFkZ2UtY29udGVudFtfbmdjb250ZW50LSVDT01QJV17d2lkdGg6MjhweDtoZWlnaHQ6MjhweDtsaW5lLWhlaWdodDoyOHB4fS5tYXQtYmFkZ2UtbGFyZ2UubWF0LWJhZGdlLWFib3ZlW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtYmFkZ2UtY29udGVudFtfbmdjb250ZW50LSVDT01QJV17dG9wOi0xNHB4fS5tYXQtYmFkZ2UtbGFyZ2UubWF0LWJhZGdlLWJlbG93W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtYmFkZ2UtY29udGVudFtfbmdjb250ZW50LSVDT01QJV17Ym90dG9tOi0xNHB4fS5tYXQtYmFkZ2UtbGFyZ2UubWF0LWJhZGdlLWJlZm9yZVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWJhZGdlLWNvbnRlbnRbX25nY29udGVudC0lQ09NUCVde2xlZnQ6LTI4cHh9W2Rpcj1ydGxdW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtYmFkZ2UtbGFyZ2UubWF0LWJhZGdlLWJlZm9yZVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWJhZGdlLWNvbnRlbnRbX25nY29udGVudC0lQ09NUCVde2xlZnQ6YXV0bztyaWdodDotMjhweH0ubWF0LWJhZGdlLWxhcmdlLm1hdC1iYWRnZS1hZnRlcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWJhZGdlLWNvbnRlbnRbX25nY29udGVudC0lQ09NUCVde3JpZ2h0Oi0yOHB4fVtkaXI9cnRsXVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWJhZGdlLWxhcmdlLm1hdC1iYWRnZS1hZnRlcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWJhZGdlLWNvbnRlbnRbX25nY29udGVudC0lQ09NUCVde3JpZ2h0OmF1dG87bGVmdDotMjhweH0ubWF0LWJhZGdlLWxhcmdlLm1hdC1iYWRnZS1vdmVybGFwLm1hdC1iYWRnZS1iZWZvcmVbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1iYWRnZS1jb250ZW50W19uZ2NvbnRlbnQtJUNPTVAlXXtsZWZ0Oi0xNHB4fVtkaXI9cnRsXVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWJhZGdlLWxhcmdlLm1hdC1iYWRnZS1vdmVybGFwLm1hdC1iYWRnZS1iZWZvcmVbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1iYWRnZS1jb250ZW50W19uZ2NvbnRlbnQtJUNPTVAlXXtsZWZ0OmF1dG87cmlnaHQ6LTE0cHh9Lm1hdC1iYWRnZS1sYXJnZS5tYXQtYmFkZ2Utb3ZlcmxhcC5tYXQtYmFkZ2UtYWZ0ZXJbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1iYWRnZS1jb250ZW50W19uZ2NvbnRlbnQtJUNPTVAlXXtyaWdodDotMTRweH1bZGlyPXJ0bF1bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1iYWRnZS1sYXJnZS5tYXQtYmFkZ2Utb3ZlcmxhcC5tYXQtYmFkZ2UtYWZ0ZXJbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1iYWRnZS1jb250ZW50W19uZ2NvbnRlbnQtJUNPTVAlXXtyaWdodDphdXRvO2xlZnQ6LTE0cHh9Lm1hdC1ib3R0b20tc2hlZXQtY29udGFpbmVyW19uZ2NvbnRlbnQtJUNPTVAlXXtib3gtc2hhZG93OjBweCA4cHggMTBweCAtNXB4IHJnYmEoMCwgMCwgMCwgMC4yKSwwcHggMTZweCAyNHB4IDJweCByZ2JhKDAsIDAsIDAsIDAuMTQpLDBweCA2cHggMzBweCA1cHggcmdiYSgwLCAwLCAwLCAwLjEyKTtiYWNrZ3JvdW5kOiNmZmY7Y29sb3I6IzIxMjEyMX0ubWF0LWJ1dHRvbltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtaWNvbi1idXR0b25bX25nY29udGVudC0lQ09NUCVdLCAubWF0LXN0cm9rZWQtYnV0dG9uW19uZ2NvbnRlbnQtJUNPTVAlXXtjb2xvcjppbmhlcml0O2JhY2tncm91bmQ6dHJhbnNwYXJlbnR9Lm1hdC1idXR0b24ubWF0LXByaW1hcnlbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWljb24tYnV0dG9uLm1hdC1wcmltYXJ5W19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1zdHJva2VkLWJ1dHRvbi5tYXQtcHJpbWFyeVtfbmdjb250ZW50LSVDT01QJV17Y29sb3I6I2Y1N2MwMH0ubWF0LWJ1dHRvbi5tYXQtYWNjZW50W19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1pY29uLWJ1dHRvbi5tYXQtYWNjZW50W19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1zdHJva2VkLWJ1dHRvbi5tYXQtYWNjZW50W19uZ2NvbnRlbnQtJUNPTVAlXXtjb2xvcjojZmY5ODAwfS5tYXQtYnV0dG9uLm1hdC13YXJuW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1pY29uLWJ1dHRvbi5tYXQtd2Fybltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtc3Ryb2tlZC1idXR0b24ubWF0LXdhcm5bX25nY29udGVudC0lQ09NUCVde2NvbG9yOiNmNDQzMzZ9Lm1hdC1idXR0b24ubWF0LXByaW1hcnkubWF0LWJ1dHRvbi1kaXNhYmxlZFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtYnV0dG9uLm1hdC1hY2NlbnQubWF0LWJ1dHRvbi1kaXNhYmxlZFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtYnV0dG9uLm1hdC13YXJuLm1hdC1idXR0b24tZGlzYWJsZWRbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWJ1dHRvbi5tYXQtYnV0dG9uLWRpc2FibGVkLm1hdC1idXR0b24tZGlzYWJsZWRbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWljb24tYnV0dG9uLm1hdC1wcmltYXJ5Lm1hdC1idXR0b24tZGlzYWJsZWRbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWljb24tYnV0dG9uLm1hdC1hY2NlbnQubWF0LWJ1dHRvbi1kaXNhYmxlZFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtaWNvbi1idXR0b24ubWF0LXdhcm4ubWF0LWJ1dHRvbi1kaXNhYmxlZFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtaWNvbi1idXR0b24ubWF0LWJ1dHRvbi1kaXNhYmxlZC5tYXQtYnV0dG9uLWRpc2FibGVkW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1zdHJva2VkLWJ1dHRvbi5tYXQtcHJpbWFyeS5tYXQtYnV0dG9uLWRpc2FibGVkW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1zdHJva2VkLWJ1dHRvbi5tYXQtYWNjZW50Lm1hdC1idXR0b24tZGlzYWJsZWRbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXN0cm9rZWQtYnV0dG9uLm1hdC13YXJuLm1hdC1idXR0b24tZGlzYWJsZWRbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXN0cm9rZWQtYnV0dG9uLm1hdC1idXR0b24tZGlzYWJsZWQubWF0LWJ1dHRvbi1kaXNhYmxlZFtfbmdjb250ZW50LSVDT01QJV17Y29sb3I6cmdiYSgwLDAsMCwuMjYpfS5tYXQtYnV0dG9uLm1hdC1wcmltYXJ5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtYnV0dG9uLWZvY3VzLW92ZXJsYXlbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWljb24tYnV0dG9uLm1hdC1wcmltYXJ5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtYnV0dG9uLWZvY3VzLW92ZXJsYXlbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXN0cm9rZWQtYnV0dG9uLm1hdC1wcmltYXJ5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtYnV0dG9uLWZvY3VzLW92ZXJsYXlbX25nY29udGVudC0lQ09NUCVde2JhY2tncm91bmQtY29sb3I6I2Y1N2MwMH0ubWF0LWJ1dHRvbi5tYXQtYWNjZW50W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtYnV0dG9uLWZvY3VzLW92ZXJsYXlbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWljb24tYnV0dG9uLm1hdC1hY2NlbnRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1idXR0b24tZm9jdXMtb3ZlcmxheVtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtc3Ryb2tlZC1idXR0b24ubWF0LWFjY2VudFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWJ1dHRvbi1mb2N1cy1vdmVybGF5W19uZ2NvbnRlbnQtJUNPTVAlXXtiYWNrZ3JvdW5kLWNvbG9yOiNmZjk4MDB9Lm1hdC1idXR0b24ubWF0LXdhcm5bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1idXR0b24tZm9jdXMtb3ZlcmxheVtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtaWNvbi1idXR0b24ubWF0LXdhcm5bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1idXR0b24tZm9jdXMtb3ZlcmxheVtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtc3Ryb2tlZC1idXR0b24ubWF0LXdhcm5bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1idXR0b24tZm9jdXMtb3ZlcmxheVtfbmdjb250ZW50LSVDT01QJV17YmFja2dyb3VuZC1jb2xvcjojZjQ0MzM2fS5tYXQtYnV0dG9uLm1hdC1idXR0b24tZGlzYWJsZWRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1idXR0b24tZm9jdXMtb3ZlcmxheVtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtaWNvbi1idXR0b24ubWF0LWJ1dHRvbi1kaXNhYmxlZFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWJ1dHRvbi1mb2N1cy1vdmVybGF5W19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1zdHJva2VkLWJ1dHRvbi5tYXQtYnV0dG9uLWRpc2FibGVkW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtYnV0dG9uLWZvY3VzLW92ZXJsYXlbX25nY29udGVudC0lQ09NUCVde2JhY2tncm91bmQtY29sb3I6dHJhbnNwYXJlbnR9Lm1hdC1idXR0b25bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1yaXBwbGUtZWxlbWVudFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtaWNvbi1idXR0b25bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1yaXBwbGUtZWxlbWVudFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtc3Ryb2tlZC1idXR0b25bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1yaXBwbGUtZWxlbWVudFtfbmdjb250ZW50LSVDT01QJV17b3BhY2l0eTouMTtiYWNrZ3JvdW5kLWNvbG9yOmN1cnJlbnRDb2xvcn0ubWF0LWJ1dHRvbi1mb2N1cy1vdmVybGF5W19uZ2NvbnRlbnQtJUNPTVAlXXtiYWNrZ3JvdW5kOiMwMDB9Lm1hdC1zdHJva2VkLWJ1dHRvbltfbmdjb250ZW50LSVDT01QJV06bm90KC5tYXQtYnV0dG9uLWRpc2FibGVkKXtib3JkZXItY29sb3I6cmdiYSgwLDAsMCwuMTIpfS5tYXQtZmxhdC1idXR0b25bX25nY29udGVudC0lQ09NUCVdLCAubWF0LXJhaXNlZC1idXR0b25bX25nY29udGVudC0lQ09NUCVdLCAubWF0LWZhYltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtbWluaS1mYWJbX25nY29udGVudC0lQ09NUCVde2NvbG9yOiMyMTIxMjE7YmFja2dyb3VuZC1jb2xvcjojZmZmfS5tYXQtZmxhdC1idXR0b24ubWF0LXByaW1hcnlbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXJhaXNlZC1idXR0b24ubWF0LXByaW1hcnlbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWZhYi5tYXQtcHJpbWFyeVtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtbWluaS1mYWIubWF0LXByaW1hcnlbX25nY29udGVudC0lQ09NUCVde2NvbG9yOiNmZmZ9Lm1hdC1mbGF0LWJ1dHRvbi5tYXQtYWNjZW50W19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1yYWlzZWQtYnV0dG9uLm1hdC1hY2NlbnRbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWZhYi5tYXQtYWNjZW50W19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1taW5pLWZhYi5tYXQtYWNjZW50W19uZ2NvbnRlbnQtJUNPTVAlXXtjb2xvcjojZmZmfS5tYXQtZmxhdC1idXR0b24ubWF0LXdhcm5bX25nY29udGVudC0lQ09NUCVdLCAubWF0LXJhaXNlZC1idXR0b24ubWF0LXdhcm5bX25nY29udGVudC0lQ09NUCVdLCAubWF0LWZhYi5tYXQtd2Fybltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtbWluaS1mYWIubWF0LXdhcm5bX25nY29udGVudC0lQ09NUCVde2NvbG9yOiNmZmZ9Lm1hdC1mbGF0LWJ1dHRvbi5tYXQtcHJpbWFyeS5tYXQtYnV0dG9uLWRpc2FibGVkW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1mbGF0LWJ1dHRvbi5tYXQtYWNjZW50Lm1hdC1idXR0b24tZGlzYWJsZWRbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWZsYXQtYnV0dG9uLm1hdC13YXJuLm1hdC1idXR0b24tZGlzYWJsZWRbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWZsYXQtYnV0dG9uLm1hdC1idXR0b24tZGlzYWJsZWQubWF0LWJ1dHRvbi1kaXNhYmxlZFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtcmFpc2VkLWJ1dHRvbi5tYXQtcHJpbWFyeS5tYXQtYnV0dG9uLWRpc2FibGVkW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1yYWlzZWQtYnV0dG9uLm1hdC1hY2NlbnQubWF0LWJ1dHRvbi1kaXNhYmxlZFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtcmFpc2VkLWJ1dHRvbi5tYXQtd2Fybi5tYXQtYnV0dG9uLWRpc2FibGVkW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1yYWlzZWQtYnV0dG9uLm1hdC1idXR0b24tZGlzYWJsZWQubWF0LWJ1dHRvbi1kaXNhYmxlZFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtZmFiLm1hdC1wcmltYXJ5Lm1hdC1idXR0b24tZGlzYWJsZWRbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWZhYi5tYXQtYWNjZW50Lm1hdC1idXR0b24tZGlzYWJsZWRbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWZhYi5tYXQtd2Fybi5tYXQtYnV0dG9uLWRpc2FibGVkW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1mYWIubWF0LWJ1dHRvbi1kaXNhYmxlZC5tYXQtYnV0dG9uLWRpc2FibGVkW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1taW5pLWZhYi5tYXQtcHJpbWFyeS5tYXQtYnV0dG9uLWRpc2FibGVkW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1taW5pLWZhYi5tYXQtYWNjZW50Lm1hdC1idXR0b24tZGlzYWJsZWRbX25nY29udGVudC0lQ09NUCVdLCAubWF0LW1pbmktZmFiLm1hdC13YXJuLm1hdC1idXR0b24tZGlzYWJsZWRbX25nY29udGVudC0lQ09NUCVdLCAubWF0LW1pbmktZmFiLm1hdC1idXR0b24tZGlzYWJsZWQubWF0LWJ1dHRvbi1kaXNhYmxlZFtfbmdjb250ZW50LSVDT01QJV17Y29sb3I6cmdiYSgwLDAsMCwuMjYpfS5tYXQtZmxhdC1idXR0b24ubWF0LXByaW1hcnlbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXJhaXNlZC1idXR0b24ubWF0LXByaW1hcnlbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWZhYi5tYXQtcHJpbWFyeVtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtbWluaS1mYWIubWF0LXByaW1hcnlbX25nY29udGVudC0lQ09NUCVde2JhY2tncm91bmQtY29sb3I6I2Y1N2MwMH0ubWF0LWZsYXQtYnV0dG9uLm1hdC1hY2NlbnRbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXJhaXNlZC1idXR0b24ubWF0LWFjY2VudFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtZmFiLm1hdC1hY2NlbnRbX25nY29udGVudC0lQ09NUCVdLCAubWF0LW1pbmktZmFiLm1hdC1hY2NlbnRbX25nY29udGVudC0lQ09NUCVde2JhY2tncm91bmQtY29sb3I6I2ZmOTgwMH0ubWF0LWZsYXQtYnV0dG9uLm1hdC13YXJuW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1yYWlzZWQtYnV0dG9uLm1hdC13YXJuW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1mYWIubWF0LXdhcm5bX25nY29udGVudC0lQ09NUCVdLCAubWF0LW1pbmktZmFiLm1hdC13YXJuW19uZ2NvbnRlbnQtJUNPTVAlXXtiYWNrZ3JvdW5kLWNvbG9yOiNmNDQzMzZ9Lm1hdC1mbGF0LWJ1dHRvbi5tYXQtcHJpbWFyeS5tYXQtYnV0dG9uLWRpc2FibGVkW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1mbGF0LWJ1dHRvbi5tYXQtYWNjZW50Lm1hdC1idXR0b24tZGlzYWJsZWRbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWZsYXQtYnV0dG9uLm1hdC13YXJuLm1hdC1idXR0b24tZGlzYWJsZWRbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWZsYXQtYnV0dG9uLm1hdC1idXR0b24tZGlzYWJsZWQubWF0LWJ1dHRvbi1kaXNhYmxlZFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtcmFpc2VkLWJ1dHRvbi5tYXQtcHJpbWFyeS5tYXQtYnV0dG9uLWRpc2FibGVkW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1yYWlzZWQtYnV0dG9uLm1hdC1hY2NlbnQubWF0LWJ1dHRvbi1kaXNhYmxlZFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtcmFpc2VkLWJ1dHRvbi5tYXQtd2Fybi5tYXQtYnV0dG9uLWRpc2FibGVkW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1yYWlzZWQtYnV0dG9uLm1hdC1idXR0b24tZGlzYWJsZWQubWF0LWJ1dHRvbi1kaXNhYmxlZFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtZmFiLm1hdC1wcmltYXJ5Lm1hdC1idXR0b24tZGlzYWJsZWRbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWZhYi5tYXQtYWNjZW50Lm1hdC1idXR0b24tZGlzYWJsZWRbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWZhYi5tYXQtd2Fybi5tYXQtYnV0dG9uLWRpc2FibGVkW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1mYWIubWF0LWJ1dHRvbi1kaXNhYmxlZC5tYXQtYnV0dG9uLWRpc2FibGVkW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1taW5pLWZhYi5tYXQtcHJpbWFyeS5tYXQtYnV0dG9uLWRpc2FibGVkW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1taW5pLWZhYi5tYXQtYWNjZW50Lm1hdC1idXR0b24tZGlzYWJsZWRbX25nY29udGVudC0lQ09NUCVdLCAubWF0LW1pbmktZmFiLm1hdC13YXJuLm1hdC1idXR0b24tZGlzYWJsZWRbX25nY29udGVudC0lQ09NUCVdLCAubWF0LW1pbmktZmFiLm1hdC1idXR0b24tZGlzYWJsZWQubWF0LWJ1dHRvbi1kaXNhYmxlZFtfbmdjb250ZW50LSVDT01QJV17YmFja2dyb3VuZC1jb2xvcjpyZ2JhKDAsMCwwLC4xMil9Lm1hdC1mbGF0LWJ1dHRvbi5tYXQtcHJpbWFyeVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXJpcHBsZS1lbGVtZW50W19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1yYWlzZWQtYnV0dG9uLm1hdC1wcmltYXJ5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtcmlwcGxlLWVsZW1lbnRbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWZhYi5tYXQtcHJpbWFyeVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXJpcHBsZS1lbGVtZW50W19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1taW5pLWZhYi5tYXQtcHJpbWFyeVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXJpcHBsZS1lbGVtZW50W19uZ2NvbnRlbnQtJUNPTVAlXXtiYWNrZ3JvdW5kLWNvbG9yOnJnYmEoMjU1LDI1NSwyNTUsLjEpfS5tYXQtZmxhdC1idXR0b24ubWF0LWFjY2VudFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXJpcHBsZS1lbGVtZW50W19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1yYWlzZWQtYnV0dG9uLm1hdC1hY2NlbnRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1yaXBwbGUtZWxlbWVudFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtZmFiLm1hdC1hY2NlbnRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1yaXBwbGUtZWxlbWVudFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtbWluaS1mYWIubWF0LWFjY2VudFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXJpcHBsZS1lbGVtZW50W19uZ2NvbnRlbnQtJUNPTVAlXXtiYWNrZ3JvdW5kLWNvbG9yOnJnYmEoMjU1LDI1NSwyNTUsLjEpfS5tYXQtZmxhdC1idXR0b24ubWF0LXdhcm5bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1yaXBwbGUtZWxlbWVudFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtcmFpc2VkLWJ1dHRvbi5tYXQtd2Fybltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXJpcHBsZS1lbGVtZW50W19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1mYWIubWF0LXdhcm5bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1yaXBwbGUtZWxlbWVudFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtbWluaS1mYWIubWF0LXdhcm5bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1yaXBwbGUtZWxlbWVudFtfbmdjb250ZW50LSVDT01QJV17YmFja2dyb3VuZC1jb2xvcjpyZ2JhKDI1NSwyNTUsMjU1LC4xKX0ubWF0LXN0cm9rZWQtYnV0dG9uW19uZ2NvbnRlbnQtJUNPTVAlXTpub3QoW2NsYXNzKj1tYXQtZWxldmF0aW9uLXpdKSwgLm1hdC1mbGF0LWJ1dHRvbltfbmdjb250ZW50LSVDT01QJV06bm90KFtjbGFzcyo9bWF0LWVsZXZhdGlvbi16XSl7Ym94LXNoYWRvdzowcHggMHB4IDBweCAwcHggcmdiYSgwLCAwLCAwLCAwLjIpLDBweCAwcHggMHB4IDBweCByZ2JhKDAsIDAsIDAsIDAuMTQpLDBweCAwcHggMHB4IDBweCByZ2JhKDAsIDAsIDAsIDAuMTIpfS5tYXQtcmFpc2VkLWJ1dHRvbltfbmdjb250ZW50LSVDT01QJV06bm90KFtjbGFzcyo9bWF0LWVsZXZhdGlvbi16XSl7Ym94LXNoYWRvdzowcHggM3B4IDFweCAtMnB4IHJnYmEoMCwgMCwgMCwgMC4yKSwwcHggMnB4IDJweCAwcHggcmdiYSgwLCAwLCAwLCAwLjE0KSwwcHggMXB4IDVweCAwcHggcmdiYSgwLCAwLCAwLCAwLjEyKX0ubWF0LXJhaXNlZC1idXR0b25bX25nY29udGVudC0lQ09NUCVdOm5vdCgubWF0LWJ1dHRvbi1kaXNhYmxlZCk6YWN0aXZlOm5vdChbY2xhc3MqPW1hdC1lbGV2YXRpb24tel0pe2JveC1zaGFkb3c6MHB4IDVweCA1cHggLTNweCByZ2JhKDAsIDAsIDAsIDAuMiksMHB4IDhweCAxMHB4IDFweCByZ2JhKDAsIDAsIDAsIDAuMTQpLDBweCAzcHggMTRweCAycHggcmdiYSgwLCAwLCAwLCAwLjEyKX0ubWF0LXJhaXNlZC1idXR0b24ubWF0LWJ1dHRvbi1kaXNhYmxlZFtfbmdjb250ZW50LSVDT01QJV06bm90KFtjbGFzcyo9bWF0LWVsZXZhdGlvbi16XSl7Ym94LXNoYWRvdzowcHggMHB4IDBweCAwcHggcmdiYSgwLCAwLCAwLCAwLjIpLDBweCAwcHggMHB4IDBweCByZ2JhKDAsIDAsIDAsIDAuMTQpLDBweCAwcHggMHB4IDBweCByZ2JhKDAsIDAsIDAsIDAuMTIpfS5tYXQtZmFiW19uZ2NvbnRlbnQtJUNPTVAlXTpub3QoW2NsYXNzKj1tYXQtZWxldmF0aW9uLXpdKSwgLm1hdC1taW5pLWZhYltfbmdjb250ZW50LSVDT01QJV06bm90KFtjbGFzcyo9bWF0LWVsZXZhdGlvbi16XSl7Ym94LXNoYWRvdzowcHggM3B4IDVweCAtMXB4IHJnYmEoMCwgMCwgMCwgMC4yKSwwcHggNnB4IDEwcHggMHB4IHJnYmEoMCwgMCwgMCwgMC4xNCksMHB4IDFweCAxOHB4IDBweCByZ2JhKDAsIDAsIDAsIDAuMTIpfS5tYXQtZmFiW19uZ2NvbnRlbnQtJUNPTVAlXTpub3QoLm1hdC1idXR0b24tZGlzYWJsZWQpOmFjdGl2ZTpub3QoW2NsYXNzKj1tYXQtZWxldmF0aW9uLXpdKSwgLm1hdC1taW5pLWZhYltfbmdjb250ZW50LSVDT01QJV06bm90KC5tYXQtYnV0dG9uLWRpc2FibGVkKTphY3RpdmU6bm90KFtjbGFzcyo9bWF0LWVsZXZhdGlvbi16XSl7Ym94LXNoYWRvdzowcHggN3B4IDhweCAtNHB4IHJnYmEoMCwgMCwgMCwgMC4yKSwwcHggMTJweCAxN3B4IDJweCByZ2JhKDAsIDAsIDAsIDAuMTQpLDBweCA1cHggMjJweCA0cHggcmdiYSgwLCAwLCAwLCAwLjEyKX0ubWF0LWZhYi5tYXQtYnV0dG9uLWRpc2FibGVkW19uZ2NvbnRlbnQtJUNPTVAlXTpub3QoW2NsYXNzKj1tYXQtZWxldmF0aW9uLXpdKSwgLm1hdC1taW5pLWZhYi5tYXQtYnV0dG9uLWRpc2FibGVkW19uZ2NvbnRlbnQtJUNPTVAlXTpub3QoW2NsYXNzKj1tYXQtZWxldmF0aW9uLXpdKXtib3gtc2hhZG93OjBweCAwcHggMHB4IDBweCByZ2JhKDAsIDAsIDAsIDAuMiksMHB4IDBweCAwcHggMHB4IHJnYmEoMCwgMCwgMCwgMC4xNCksMHB4IDBweCAwcHggMHB4IHJnYmEoMCwgMCwgMCwgMC4xMil9Lm1hdC1idXR0b24tdG9nZ2xlLXN0YW5kYWxvbmVbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWJ1dHRvbi10b2dnbGUtZ3JvdXBbX25nY29udGVudC0lQ09NUCVde2JveC1zaGFkb3c6MHB4IDNweCAxcHggLTJweCByZ2JhKDAsIDAsIDAsIDAuMiksMHB4IDJweCAycHggMHB4IHJnYmEoMCwgMCwgMCwgMC4xNCksMHB4IDFweCA1cHggMHB4IHJnYmEoMCwgMCwgMCwgMC4xMil9Lm1hdC1idXR0b24tdG9nZ2xlLXN0YW5kYWxvbmUubWF0LWJ1dHRvbi10b2dnbGUtYXBwZWFyYW5jZS1zdGFuZGFyZFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtYnV0dG9uLXRvZ2dsZS1ncm91cC1hcHBlYXJhbmNlLXN0YW5kYXJkW19uZ2NvbnRlbnQtJUNPTVAlXXtib3gtc2hhZG93Om5vbmV9Lm1hdC1idXR0b24tdG9nZ2xlW19uZ2NvbnRlbnQtJUNPTVAlXXtjb2xvcjpyZ2JhKDAsMCwwLC4zOCl9Lm1hdC1idXR0b24tdG9nZ2xlW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtYnV0dG9uLXRvZ2dsZS1mb2N1cy1vdmVybGF5W19uZ2NvbnRlbnQtJUNPTVAlXXtiYWNrZ3JvdW5kLWNvbG9yOnJnYmEoMCwwLDAsLjEyKX0ubWF0LWJ1dHRvbi10b2dnbGUtYXBwZWFyYW5jZS1zdGFuZGFyZFtfbmdjb250ZW50LSVDT01QJV17Y29sb3I6IzIxMjEyMTtiYWNrZ3JvdW5kOiNmZmZ9Lm1hdC1idXR0b24tdG9nZ2xlLWFwcGVhcmFuY2Utc3RhbmRhcmRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1idXR0b24tdG9nZ2xlLWZvY3VzLW92ZXJsYXlbX25nY29udGVudC0lQ09NUCVde2JhY2tncm91bmQtY29sb3I6IzAwMH0ubWF0LWJ1dHRvbi10b2dnbGUtZ3JvdXAtYXBwZWFyYW5jZS1zdGFuZGFyZFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWJ1dHRvbi10b2dnbGVbX25nY29udGVudC0lQ09NUCVdICsgLm1hdC1idXR0b24tdG9nZ2xlW19uZ2NvbnRlbnQtJUNPTVAlXXtib3JkZXItbGVmdDpzb2xpZCAxcHggcmdiYSgwLDAsMCwuMTIpfVtkaXI9cnRsXVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWJ1dHRvbi10b2dnbGUtZ3JvdXAtYXBwZWFyYW5jZS1zdGFuZGFyZFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWJ1dHRvbi10b2dnbGVbX25nY29udGVudC0lQ09NUCVdICsgLm1hdC1idXR0b24tdG9nZ2xlW19uZ2NvbnRlbnQtJUNPTVAlXXtib3JkZXItbGVmdDpub25lO2JvcmRlci1yaWdodDpzb2xpZCAxcHggcmdiYSgwLDAsMCwuMTIpfS5tYXQtYnV0dG9uLXRvZ2dsZS1ncm91cC1hcHBlYXJhbmNlLXN0YW5kYXJkLm1hdC1idXR0b24tdG9nZ2xlLXZlcnRpY2FsW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtYnV0dG9uLXRvZ2dsZVtfbmdjb250ZW50LSVDT01QJV0gKyAubWF0LWJ1dHRvbi10b2dnbGVbX25nY29udGVudC0lQ09NUCVde2JvcmRlci1sZWZ0Om5vbmU7Ym9yZGVyLXJpZ2h0Om5vbmU7Ym9yZGVyLXRvcDpzb2xpZCAxcHggcmdiYSgwLDAsMCwuMTIpfS5tYXQtYnV0dG9uLXRvZ2dsZS1jaGVja2VkW19uZ2NvbnRlbnQtJUNPTVAlXXtiYWNrZ3JvdW5kLWNvbG9yOiNlMGUwZTA7Y29sb3I6IzYxNjE2MX0ubWF0LWJ1dHRvbi10b2dnbGUtY2hlY2tlZC5tYXQtYnV0dG9uLXRvZ2dsZS1hcHBlYXJhbmNlLXN0YW5kYXJkW19uZ2NvbnRlbnQtJUNPTVAlXXtjb2xvcjojMjEyMTIxfS5tYXQtYnV0dG9uLXRvZ2dsZS1kaXNhYmxlZFtfbmdjb250ZW50LSVDT01QJV17Y29sb3I6cmdiYSgwLDAsMCwuMjYpO2JhY2tncm91bmQtY29sb3I6I2VlZX0ubWF0LWJ1dHRvbi10b2dnbGUtZGlzYWJsZWQubWF0LWJ1dHRvbi10b2dnbGUtYXBwZWFyYW5jZS1zdGFuZGFyZFtfbmdjb250ZW50LSVDT01QJV17YmFja2dyb3VuZDojZmZmfS5tYXQtYnV0dG9uLXRvZ2dsZS1kaXNhYmxlZC5tYXQtYnV0dG9uLXRvZ2dsZS1jaGVja2VkW19uZ2NvbnRlbnQtJUNPTVAlXXtiYWNrZ3JvdW5kLWNvbG9yOiNiZGJkYmR9Lm1hdC1idXR0b24tdG9nZ2xlLXN0YW5kYWxvbmUubWF0LWJ1dHRvbi10b2dnbGUtYXBwZWFyYW5jZS1zdGFuZGFyZFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtYnV0dG9uLXRvZ2dsZS1ncm91cC1hcHBlYXJhbmNlLXN0YW5kYXJkW19uZ2NvbnRlbnQtJUNPTVAlXXtib3JkZXI6c29saWQgMXB4IHJnYmEoMCwwLDAsLjEyKX0ubWF0LWJ1dHRvbi10b2dnbGUtYXBwZWFyYW5jZS1zdGFuZGFyZFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWJ1dHRvbi10b2dnbGUtbGFiZWwtY29udGVudFtfbmdjb250ZW50LSVDT01QJV17bGluZS1oZWlnaHQ6NDhweH0ubWF0LWNhcmRbX25nY29udGVudC0lQ09NUCVde2JhY2tncm91bmQ6I2ZmZjtjb2xvcjojMjEyMTIxfS5tYXQtY2FyZFtfbmdjb250ZW50LSVDT01QJV06bm90KFtjbGFzcyo9bWF0LWVsZXZhdGlvbi16XSl7Ym94LXNoYWRvdzowcHggMnB4IDFweCAtMXB4IHJnYmEoMCwgMCwgMCwgMC4yKSwwcHggMXB4IDFweCAwcHggcmdiYSgwLCAwLCAwLCAwLjE0KSwwcHggMXB4IDNweCAwcHggcmdiYSgwLCAwLCAwLCAwLjEyKX0ubWF0LWNhcmQubWF0LWNhcmQtZmxhdFtfbmdjb250ZW50LSVDT01QJV06bm90KFtjbGFzcyo9bWF0LWVsZXZhdGlvbi16XSl7Ym94LXNoYWRvdzowcHggMHB4IDBweCAwcHggcmdiYSgwLCAwLCAwLCAwLjIpLDBweCAwcHggMHB4IDBweCByZ2JhKDAsIDAsIDAsIDAuMTQpLDBweCAwcHggMHB4IDBweCByZ2JhKDAsIDAsIDAsIDAuMTIpfS5tYXQtY2FyZC1zdWJ0aXRsZVtfbmdjb250ZW50LSVDT01QJV17Y29sb3I6IzYxNjE2MX0ubWF0LWNoZWNrYm94LWZyYW1lW19uZ2NvbnRlbnQtJUNPTVAlXXtib3JkZXItY29sb3I6IzYxNjE2MX0ubWF0LWNoZWNrYm94LWNoZWNrbWFya1tfbmdjb250ZW50LSVDT01QJV17ZmlsbDojZmFmYWZhfS5tYXQtY2hlY2tib3gtY2hlY2ttYXJrLXBhdGhbX25nY29udGVudC0lQ09NUCVde3N0cm9rZTojZmFmYWZhICFpbXBvcnRhbnR9Lm1hdC1jaGVja2JveC1taXhlZG1hcmtbX25nY29udGVudC0lQ09NUCVde2JhY2tncm91bmQtY29sb3I6I2ZhZmFmYX0ubWF0LWNoZWNrYm94LWluZGV0ZXJtaW5hdGUubWF0LXByaW1hcnlbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1jaGVja2JveC1iYWNrZ3JvdW5kW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1jaGVja2JveC1jaGVja2VkLm1hdC1wcmltYXJ5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtY2hlY2tib3gtYmFja2dyb3VuZFtfbmdjb250ZW50LSVDT01QJV17YmFja2dyb3VuZC1jb2xvcjojZjU3YzAwfS5tYXQtY2hlY2tib3gtaW5kZXRlcm1pbmF0ZS5tYXQtYWNjZW50W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtY2hlY2tib3gtYmFja2dyb3VuZFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtY2hlY2tib3gtY2hlY2tlZC5tYXQtYWNjZW50W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtY2hlY2tib3gtYmFja2dyb3VuZFtfbmdjb250ZW50LSVDT01QJV17YmFja2dyb3VuZC1jb2xvcjojZmY5ODAwfS5tYXQtY2hlY2tib3gtaW5kZXRlcm1pbmF0ZS5tYXQtd2Fybltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWNoZWNrYm94LWJhY2tncm91bmRbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWNoZWNrYm94LWNoZWNrZWQubWF0LXdhcm5bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1jaGVja2JveC1iYWNrZ3JvdW5kW19uZ2NvbnRlbnQtJUNPTVAlXXtiYWNrZ3JvdW5kLWNvbG9yOiNmNDQzMzZ9Lm1hdC1jaGVja2JveC1kaXNhYmxlZC5tYXQtY2hlY2tib3gtY2hlY2tlZFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWNoZWNrYm94LWJhY2tncm91bmRbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWNoZWNrYm94LWRpc2FibGVkLm1hdC1jaGVja2JveC1pbmRldGVybWluYXRlW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtY2hlY2tib3gtYmFja2dyb3VuZFtfbmdjb250ZW50LSVDT01QJV17YmFja2dyb3VuZC1jb2xvcjojYjBiMGIwfS5tYXQtY2hlY2tib3gtZGlzYWJsZWRbX25nY29udGVudC0lQ09NUCVdOm5vdCgubWF0LWNoZWNrYm94LWNoZWNrZWQpICAgLm1hdC1jaGVja2JveC1mcmFtZVtfbmdjb250ZW50LSVDT01QJV17Ym9yZGVyLWNvbG9yOiNiMGIwYjB9Lm1hdC1jaGVja2JveC1kaXNhYmxlZFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWNoZWNrYm94LWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXtjb2xvcjojNjE2MTYxfS5tYXQtY2hlY2tib3hbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1yaXBwbGUtZWxlbWVudFtfbmdjb250ZW50LSVDT01QJV17YmFja2dyb3VuZC1jb2xvcjojMDAwfS5tYXQtY2hlY2tib3gtY2hlY2tlZFtfbmdjb250ZW50LSVDT01QJV06bm90KC5tYXQtY2hlY2tib3gtZGlzYWJsZWQpLm1hdC1wcmltYXJ5ICAgLm1hdC1yaXBwbGUtZWxlbWVudFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtY2hlY2tib3hbX25nY29udGVudC0lQ09NUCVdOmFjdGl2ZTpub3QoLm1hdC1jaGVja2JveC1kaXNhYmxlZCkubWF0LXByaW1hcnkgICAubWF0LXJpcHBsZS1lbGVtZW50W19uZ2NvbnRlbnQtJUNPTVAlXXtiYWNrZ3JvdW5kOiNmNTdjMDB9Lm1hdC1jaGVja2JveC1jaGVja2VkW19uZ2NvbnRlbnQtJUNPTVAlXTpub3QoLm1hdC1jaGVja2JveC1kaXNhYmxlZCkubWF0LWFjY2VudCAgIC5tYXQtcmlwcGxlLWVsZW1lbnRbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWNoZWNrYm94W19uZ2NvbnRlbnQtJUNPTVAlXTphY3RpdmU6bm90KC5tYXQtY2hlY2tib3gtZGlzYWJsZWQpLm1hdC1hY2NlbnQgICAubWF0LXJpcHBsZS1lbGVtZW50W19uZ2NvbnRlbnQtJUNPTVAlXXtiYWNrZ3JvdW5kOiNmZjk4MDB9Lm1hdC1jaGVja2JveC1jaGVja2VkW19uZ2NvbnRlbnQtJUNPTVAlXTpub3QoLm1hdC1jaGVja2JveC1kaXNhYmxlZCkubWF0LXdhcm4gICAubWF0LXJpcHBsZS1lbGVtZW50W19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1jaGVja2JveFtfbmdjb250ZW50LSVDT01QJV06YWN0aXZlOm5vdCgubWF0LWNoZWNrYm94LWRpc2FibGVkKS5tYXQtd2FybiAgIC5tYXQtcmlwcGxlLWVsZW1lbnRbX25nY29udGVudC0lQ09NUCVde2JhY2tncm91bmQ6I2Y0NDMzNn0ubWF0LWNoaXAubWF0LXN0YW5kYXJkLWNoaXBbX25nY29udGVudC0lQ09NUCVde2JhY2tncm91bmQtY29sb3I6I2UwZTBlMDtjb2xvcjojMjEyMTIxfS5tYXQtY2hpcC5tYXQtc3RhbmRhcmQtY2hpcFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWNoaXAtcmVtb3ZlW19uZ2NvbnRlbnQtJUNPTVAlXXtjb2xvcjojMjEyMTIxO29wYWNpdHk6LjR9Lm1hdC1jaGlwLm1hdC1zdGFuZGFyZC1jaGlwW19uZ2NvbnRlbnQtJUNPTVAlXTpub3QoLm1hdC1jaGlwLWRpc2FibGVkKTphY3RpdmV7Ym94LXNoYWRvdzowcHggM3B4IDNweCAtMnB4IHJnYmEoMCwgMCwgMCwgMC4yKSwwcHggM3B4IDRweCAwcHggcmdiYSgwLCAwLCAwLCAwLjE0KSwwcHggMXB4IDhweCAwcHggcmdiYSgwLCAwLCAwLCAwLjEyKX0ubWF0LWNoaXAubWF0LXN0YW5kYXJkLWNoaXBbX25nY29udGVudC0lQ09NUCVdOm5vdCgubWF0LWNoaXAtZGlzYWJsZWQpICAgLm1hdC1jaGlwLXJlbW92ZVtfbmdjb250ZW50LSVDT01QJV06aG92ZXJ7b3BhY2l0eTouNTR9Lm1hdC1jaGlwLm1hdC1zdGFuZGFyZC1jaGlwLm1hdC1jaGlwLWRpc2FibGVkW19uZ2NvbnRlbnQtJUNPTVAlXXtvcGFjaXR5Oi40fS5tYXQtY2hpcC5tYXQtc3RhbmRhcmQtY2hpcFtfbmdjb250ZW50LSVDT01QJV06OmFmdGVye2JhY2tncm91bmQ6IzAwMH0ubWF0LWNoaXAubWF0LXN0YW5kYXJkLWNoaXAubWF0LWNoaXAtc2VsZWN0ZWQubWF0LXByaW1hcnlbX25nY29udGVudC0lQ09NUCVde2JhY2tncm91bmQtY29sb3I6I2Y1N2MwMDtjb2xvcjojZmZmfS5tYXQtY2hpcC5tYXQtc3RhbmRhcmQtY2hpcC5tYXQtY2hpcC1zZWxlY3RlZC5tYXQtcHJpbWFyeVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWNoaXAtcmVtb3ZlW19uZ2NvbnRlbnQtJUNPTVAlXXtjb2xvcjojZmZmO29wYWNpdHk6LjR9Lm1hdC1jaGlwLm1hdC1zdGFuZGFyZC1jaGlwLm1hdC1jaGlwLXNlbGVjdGVkLm1hdC1wcmltYXJ5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtcmlwcGxlLWVsZW1lbnRbX25nY29udGVudC0lQ09NUCVde2JhY2tncm91bmQtY29sb3I6cmdiYSgyNTUsMjU1LDI1NSwuMSl9Lm1hdC1jaGlwLm1hdC1zdGFuZGFyZC1jaGlwLm1hdC1jaGlwLXNlbGVjdGVkLm1hdC13YXJuW19uZ2NvbnRlbnQtJUNPTVAlXXtiYWNrZ3JvdW5kLWNvbG9yOiNmNDQzMzY7Y29sb3I6I2ZmZn0ubWF0LWNoaXAubWF0LXN0YW5kYXJkLWNoaXAubWF0LWNoaXAtc2VsZWN0ZWQubWF0LXdhcm5bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1jaGlwLXJlbW92ZVtfbmdjb250ZW50LSVDT01QJV17Y29sb3I6I2ZmZjtvcGFjaXR5Oi40fS5tYXQtY2hpcC5tYXQtc3RhbmRhcmQtY2hpcC5tYXQtY2hpcC1zZWxlY3RlZC5tYXQtd2Fybltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXJpcHBsZS1lbGVtZW50W19uZ2NvbnRlbnQtJUNPTVAlXXtiYWNrZ3JvdW5kLWNvbG9yOnJnYmEoMjU1LDI1NSwyNTUsLjEpfS5tYXQtY2hpcC5tYXQtc3RhbmRhcmQtY2hpcC5tYXQtY2hpcC1zZWxlY3RlZC5tYXQtYWNjZW50W19uZ2NvbnRlbnQtJUNPTVAlXXtiYWNrZ3JvdW5kLWNvbG9yOiNmZjk4MDA7Y29sb3I6I2ZmZn0ubWF0LWNoaXAubWF0LXN0YW5kYXJkLWNoaXAubWF0LWNoaXAtc2VsZWN0ZWQubWF0LWFjY2VudFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWNoaXAtcmVtb3ZlW19uZ2NvbnRlbnQtJUNPTVAlXXtjb2xvcjojZmZmO29wYWNpdHk6LjR9Lm1hdC1jaGlwLm1hdC1zdGFuZGFyZC1jaGlwLm1hdC1jaGlwLXNlbGVjdGVkLm1hdC1hY2NlbnRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1yaXBwbGUtZWxlbWVudFtfbmdjb250ZW50LSVDT01QJV17YmFja2dyb3VuZC1jb2xvcjpyZ2JhKDI1NSwyNTUsMjU1LC4xKX0ubWF0LXRhYmxlW19uZ2NvbnRlbnQtJUNPTVAlXXtiYWNrZ3JvdW5kOiNmZmZ9Lm1hdC10YWJsZVtfbmdjb250ZW50LSVDT01QJV0gICB0aGVhZFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdGFibGVbX25nY29udGVudC0lQ09NUCVdICAgdGJvZHlbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXRhYmxlW19uZ2NvbnRlbnQtJUNPTVAlXSAgIHRmb290W19uZ2NvbnRlbnQtJUNPTVAlXSwgbWF0LWhlYWRlci1yb3dbX25nY29udGVudC0lQ09NUCVdLCBtYXQtcm93W19uZ2NvbnRlbnQtJUNPTVAlXSwgbWF0LWZvb3Rlci1yb3dbX25nY29udGVudC0lQ09NUCVdLCBbbWF0LWhlYWRlci1yb3ddW19uZ2NvbnRlbnQtJUNPTVAlXSwgW21hdC1yb3ddW19uZ2NvbnRlbnQtJUNPTVAlXSwgW21hdC1mb290ZXItcm93XVtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdGFibGUtc3RpY2t5W19uZ2NvbnRlbnQtJUNPTVAlXXtiYWNrZ3JvdW5kOmluaGVyaXR9bWF0LXJvd1tfbmdjb250ZW50LSVDT01QJV0sIG1hdC1oZWFkZXItcm93W19uZ2NvbnRlbnQtJUNPTVAlXSwgbWF0LWZvb3Rlci1yb3dbX25nY29udGVudC0lQ09NUCVdLCB0aC5tYXQtaGVhZGVyLWNlbGxbX25nY29udGVudC0lQ09NUCVdLCB0ZC5tYXQtY2VsbFtfbmdjb250ZW50LSVDT01QJV0sIHRkLm1hdC1mb290ZXItY2VsbFtfbmdjb250ZW50LSVDT01QJV17Ym9yZGVyLWJvdHRvbS1jb2xvcjpyZ2JhKDAsMCwwLC4xMil9Lm1hdC1oZWFkZXItY2VsbFtfbmdjb250ZW50LSVDT01QJV17Y29sb3I6IzYxNjE2MX0ubWF0LWNlbGxbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWZvb3Rlci1jZWxsW19uZ2NvbnRlbnQtJUNPTVAlXXtjb2xvcjojMjEyMTIxfS5tYXQtY2FsZW5kYXItYXJyb3dbX25nY29udGVudC0lQ09NUCVde2JvcmRlci10b3AtY29sb3I6cmdiYSgwLDAsMCwuNTQpfS5tYXQtZGF0ZXBpY2tlci10b2dnbGVbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWRhdGVwaWNrZXItY29udGVudFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWNhbGVuZGFyLW5leHQtYnV0dG9uW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1kYXRlcGlja2VyLWNvbnRlbnRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1jYWxlbmRhci1wcmV2aW91cy1idXR0b25bX25nY29udGVudC0lQ09NUCVde2NvbG9yOnJnYmEoMCwwLDAsLjU0KX0ubWF0LWNhbGVuZGFyLXRhYmxlLWhlYWRlcltfbmdjb250ZW50LSVDT01QJV17Y29sb3I6cmdiYSgwLDAsMCwuMzgpfS5tYXQtY2FsZW5kYXItdGFibGUtaGVhZGVyLWRpdmlkZXJbX25nY29udGVudC0lQ09NUCVdOjphZnRlcntiYWNrZ3JvdW5kOnJnYmEoMCwwLDAsLjEyKX0ubWF0LWNhbGVuZGFyLWJvZHktbGFiZWxbX25nY29udGVudC0lQ09NUCVde2NvbG9yOiM2MTYxNjF9Lm1hdC1jYWxlbmRhci1ib2R5LWNlbGwtY29udGVudFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtZGF0ZS1yYW5nZS1pbnB1dC1zZXBhcmF0b3JbX25nY29udGVudC0lQ09NUCVde2NvbG9yOiMyMTIxMjE7Ym9yZGVyLWNvbG9yOnRyYW5zcGFyZW50fS5tYXQtY2FsZW5kYXItYm9keS1kaXNhYmxlZFtfbmdjb250ZW50LSVDT01QJV0gPiAubWF0LWNhbGVuZGFyLWJvZHktY2VsbC1jb250ZW50W19uZ2NvbnRlbnQtJUNPTVAlXTpub3QoLm1hdC1jYWxlbmRhci1ib2R5LXNlbGVjdGVkKTpub3QoLm1hdC1jYWxlbmRhci1ib2R5LWNvbXBhcmlzb24taWRlbnRpY2FsKXtjb2xvcjojNzU3NTc1fS5tYXQtZm9ybS1maWVsZC1kaXNhYmxlZFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWRhdGUtcmFuZ2UtaW5wdXQtc2VwYXJhdG9yW19uZ2NvbnRlbnQtJUNPTVAlXXtjb2xvcjojNzU3NTc1fS5tYXQtY2FsZW5kYXItYm9keS1jZWxsW19uZ2NvbnRlbnQtJUNPTVAlXTpub3QoLm1hdC1jYWxlbmRhci1ib2R5LWRpc2FibGVkKTpob3ZlciA+IC5tYXQtY2FsZW5kYXItYm9keS1jZWxsLWNvbnRlbnRbX25nY29udGVudC0lQ09NUCVdOm5vdCgubWF0LWNhbGVuZGFyLWJvZHktc2VsZWN0ZWQpOm5vdCgubWF0LWNhbGVuZGFyLWJvZHktY29tcGFyaXNvbi1pZGVudGljYWwpLCAuY2RrLWtleWJvYXJkLWZvY3VzZWRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1jYWxlbmRhci1ib2R5LWFjdGl2ZVtfbmdjb250ZW50LSVDT01QJV0gPiAubWF0LWNhbGVuZGFyLWJvZHktY2VsbC1jb250ZW50W19uZ2NvbnRlbnQtJUNPTVAlXTpub3QoLm1hdC1jYWxlbmRhci1ib2R5LXNlbGVjdGVkKTpub3QoLm1hdC1jYWxlbmRhci1ib2R5LWNvbXBhcmlzb24taWRlbnRpY2FsKSwgLmNkay1wcm9ncmFtLWZvY3VzZWRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1jYWxlbmRhci1ib2R5LWFjdGl2ZVtfbmdjb250ZW50LSVDT01QJV0gPiAubWF0LWNhbGVuZGFyLWJvZHktY2VsbC1jb250ZW50W19uZ2NvbnRlbnQtJUNPTVAlXTpub3QoLm1hdC1jYWxlbmRhci1ib2R5LXNlbGVjdGVkKTpub3QoLm1hdC1jYWxlbmRhci1ib2R5LWNvbXBhcmlzb24taWRlbnRpY2FsKXtiYWNrZ3JvdW5kLWNvbG9yOnJnYmEoMCwwLDAsLjA0KX0ubWF0LWNhbGVuZGFyLWJvZHktaW4tcHJldmlld1tfbmdjb250ZW50LSVDT01QJV17Y29sb3I6cmdiYSgwLDAsMCwuMjQpfS5tYXQtY2FsZW5kYXItYm9keS10b2RheVtfbmdjb250ZW50LSVDT01QJV06bm90KC5tYXQtY2FsZW5kYXItYm9keS1zZWxlY3RlZCk6bm90KC5tYXQtY2FsZW5kYXItYm9keS1jb21wYXJpc29uLWlkZW50aWNhbCl7Ym9yZGVyLWNvbG9yOnJnYmEoMCwwLDAsLjM4KX0ubWF0LWNhbGVuZGFyLWJvZHktZGlzYWJsZWRbX25nY29udGVudC0lQ09NUCVdID4gLm1hdC1jYWxlbmRhci1ib2R5LXRvZGF5W19uZ2NvbnRlbnQtJUNPTVAlXTpub3QoLm1hdC1jYWxlbmRhci1ib2R5LXNlbGVjdGVkKTpub3QoLm1hdC1jYWxlbmRhci1ib2R5LWNvbXBhcmlzb24taWRlbnRpY2FsKXtib3JkZXItY29sb3I6cmdiYSgwLDAsMCwuMTgpfS5tYXQtY2FsZW5kYXItYm9keS1pbi1yYW5nZVtfbmdjb250ZW50LSVDT01QJV06OmJlZm9yZXtiYWNrZ3JvdW5kOnJnYmEoMjQ1LDEyNCwwLC4yKX0ubWF0LWNhbGVuZGFyLWJvZHktY29tcGFyaXNvbi1pZGVudGljYWxbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWNhbGVuZGFyLWJvZHktaW4tY29tcGFyaXNvbi1yYW5nZVtfbmdjb250ZW50LSVDT01QJV06OmJlZm9yZXtiYWNrZ3JvdW5kOnJnYmEoMjQ5LDE3MSwwLC4yKX0ubWF0LWNhbGVuZGFyLWJvZHktY29tcGFyaXNvbi1icmlkZ2Utc3RhcnRbX25nY29udGVudC0lQ09NUCVdOjpiZWZvcmUsIFtkaXI9cnRsXVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWNhbGVuZGFyLWJvZHktY29tcGFyaXNvbi1icmlkZ2UtZW5kW19uZ2NvbnRlbnQtJUNPTVAlXTo6YmVmb3Jle2JhY2tncm91bmQ6bGluZWFyLWdyYWRpZW50KHRvIHJpZ2h0LCByZ2JhKDI0NSwgMTI0LCAwLCAwLjIpIDUwJSwgcmdiYSgyNDksIDE3MSwgMCwgMC4yKSA1MCUpfS5tYXQtY2FsZW5kYXItYm9keS1jb21wYXJpc29uLWJyaWRnZS1lbmRbX25nY29udGVudC0lQ09NUCVdOjpiZWZvcmUsIFtkaXI9cnRsXVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWNhbGVuZGFyLWJvZHktY29tcGFyaXNvbi1icmlkZ2Utc3RhcnRbX25nY29udGVudC0lQ09NUCVdOjpiZWZvcmV7YmFja2dyb3VuZDpsaW5lYXItZ3JhZGllbnQodG8gbGVmdCwgcmdiYSgyNDUsIDEyNCwgMCwgMC4yKSA1MCUsIHJnYmEoMjQ5LCAxNzEsIDAsIDAuMikgNTAlKX0ubWF0LWNhbGVuZGFyLWJvZHktaW4tcmFuZ2VbX25nY29udGVudC0lQ09NUCVdID4gLm1hdC1jYWxlbmRhci1ib2R5LWNvbXBhcmlzb24taWRlbnRpY2FsW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1jYWxlbmRhci1ib2R5LWluLWNvbXBhcmlzb24tcmFuZ2UubWF0LWNhbGVuZGFyLWJvZHktaW4tcmFuZ2VbX25nY29udGVudC0lQ09NUCVdOjphZnRlcntiYWNrZ3JvdW5kOiNhOGRhYjV9Lm1hdC1jYWxlbmRhci1ib2R5LWNvbXBhcmlzb24taWRlbnRpY2FsLm1hdC1jYWxlbmRhci1ib2R5LXNlbGVjdGVkW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1jYWxlbmRhci1ib2R5LWluLWNvbXBhcmlzb24tcmFuZ2VbX25nY29udGVudC0lQ09NUCVdID4gLm1hdC1jYWxlbmRhci1ib2R5LXNlbGVjdGVkW19uZ2NvbnRlbnQtJUNPTVAlXXtiYWNrZ3JvdW5kOiM0NmEzNWV9Lm1hdC1jYWxlbmRhci1ib2R5LXNlbGVjdGVkW19uZ2NvbnRlbnQtJUNPTVAlXXtiYWNrZ3JvdW5kLWNvbG9yOiNmNTdjMDA7Y29sb3I6I2ZmZn0ubWF0LWNhbGVuZGFyLWJvZHktZGlzYWJsZWRbX25nY29udGVudC0lQ09NUCVdID4gLm1hdC1jYWxlbmRhci1ib2R5LXNlbGVjdGVkW19uZ2NvbnRlbnQtJUNPTVAlXXtiYWNrZ3JvdW5kLWNvbG9yOnJnYmEoMjQ1LDEyNCwwLC40KX0ubWF0LWNhbGVuZGFyLWJvZHktdG9kYXkubWF0LWNhbGVuZGFyLWJvZHktc2VsZWN0ZWRbX25nY29udGVudC0lQ09NUCVde2JveC1zaGFkb3c6aW5zZXQgMCAwIDAgMXB4ICNmZmZ9Lm1hdC1kYXRlcGlja2VyLWNvbnRlbnRbX25nY29udGVudC0lQ09NUCVde2JveC1zaGFkb3c6MHB4IDJweCA0cHggLTFweCByZ2JhKDAsIDAsIDAsIDAuMiksMHB4IDRweCA1cHggMHB4IHJnYmEoMCwgMCwgMCwgMC4xNCksMHB4IDFweCAxMHB4IDBweCByZ2JhKDAsIDAsIDAsIDAuMTIpO2JhY2tncm91bmQtY29sb3I6I2ZmZjtjb2xvcjojMjEyMTIxfS5tYXQtZGF0ZXBpY2tlci1jb250ZW50Lm1hdC1hY2NlbnRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1jYWxlbmRhci1ib2R5LWluLXJhbmdlW19uZ2NvbnRlbnQtJUNPTVAlXTo6YmVmb3Jle2JhY2tncm91bmQ6cmdiYSgyNTUsMTUyLDAsLjIpfS5tYXQtZGF0ZXBpY2tlci1jb250ZW50Lm1hdC1hY2NlbnRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1jYWxlbmRhci1ib2R5LWNvbXBhcmlzb24taWRlbnRpY2FsW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1kYXRlcGlja2VyLWNvbnRlbnQubWF0LWFjY2VudFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWNhbGVuZGFyLWJvZHktaW4tY29tcGFyaXNvbi1yYW5nZVtfbmdjb250ZW50LSVDT01QJV06OmJlZm9yZXtiYWNrZ3JvdW5kOnJnYmEoMjQ5LDE3MSwwLC4yKX0ubWF0LWRhdGVwaWNrZXItY29udGVudC5tYXQtYWNjZW50W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtY2FsZW5kYXItYm9keS1jb21wYXJpc29uLWJyaWRnZS1zdGFydFtfbmdjb250ZW50LSVDT01QJV06OmJlZm9yZSwgLm1hdC1kYXRlcGlja2VyLWNvbnRlbnQubWF0LWFjY2VudFtfbmdjb250ZW50LSVDT01QJV0gICBbZGlyPXJ0bF1bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1jYWxlbmRhci1ib2R5LWNvbXBhcmlzb24tYnJpZGdlLWVuZFtfbmdjb250ZW50LSVDT01QJV06OmJlZm9yZXtiYWNrZ3JvdW5kOmxpbmVhci1ncmFkaWVudCh0byByaWdodCwgcmdiYSgyNTUsIDE1MiwgMCwgMC4yKSA1MCUsIHJnYmEoMjQ5LCAxNzEsIDAsIDAuMikgNTAlKX0ubWF0LWRhdGVwaWNrZXItY29udGVudC5tYXQtYWNjZW50W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtY2FsZW5kYXItYm9keS1jb21wYXJpc29uLWJyaWRnZS1lbmRbX25nY29udGVudC0lQ09NUCVdOjpiZWZvcmUsIC5tYXQtZGF0ZXBpY2tlci1jb250ZW50Lm1hdC1hY2NlbnRbX25nY29udGVudC0lQ09NUCVdICAgW2Rpcj1ydGxdW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtY2FsZW5kYXItYm9keS1jb21wYXJpc29uLWJyaWRnZS1zdGFydFtfbmdjb250ZW50LSVDT01QJV06OmJlZm9yZXtiYWNrZ3JvdW5kOmxpbmVhci1ncmFkaWVudCh0byBsZWZ0LCByZ2JhKDI1NSwgMTUyLCAwLCAwLjIpIDUwJSwgcmdiYSgyNDksIDE3MSwgMCwgMC4yKSA1MCUpfS5tYXQtZGF0ZXBpY2tlci1jb250ZW50Lm1hdC1hY2NlbnRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1jYWxlbmRhci1ib2R5LWluLXJhbmdlW19uZ2NvbnRlbnQtJUNPTVAlXSA+IC5tYXQtY2FsZW5kYXItYm9keS1jb21wYXJpc29uLWlkZW50aWNhbFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtZGF0ZXBpY2tlci1jb250ZW50Lm1hdC1hY2NlbnRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1jYWxlbmRhci1ib2R5LWluLWNvbXBhcmlzb24tcmFuZ2UubWF0LWNhbGVuZGFyLWJvZHktaW4tcmFuZ2VbX25nY29udGVudC0lQ09NUCVdOjphZnRlcntiYWNrZ3JvdW5kOiNhOGRhYjV9Lm1hdC1kYXRlcGlja2VyLWNvbnRlbnQubWF0LWFjY2VudFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWNhbGVuZGFyLWJvZHktY29tcGFyaXNvbi1pZGVudGljYWwubWF0LWNhbGVuZGFyLWJvZHktc2VsZWN0ZWRbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWRhdGVwaWNrZXItY29udGVudC5tYXQtYWNjZW50W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtY2FsZW5kYXItYm9keS1pbi1jb21wYXJpc29uLXJhbmdlW19uZ2NvbnRlbnQtJUNPTVAlXSA+IC5tYXQtY2FsZW5kYXItYm9keS1zZWxlY3RlZFtfbmdjb250ZW50LSVDT01QJV17YmFja2dyb3VuZDojNDZhMzVlfS5tYXQtZGF0ZXBpY2tlci1jb250ZW50Lm1hdC1hY2NlbnRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1jYWxlbmRhci1ib2R5LXNlbGVjdGVkW19uZ2NvbnRlbnQtJUNPTVAlXXtiYWNrZ3JvdW5kLWNvbG9yOiNmZjk4MDA7Y29sb3I6I2ZmZn0ubWF0LWRhdGVwaWNrZXItY29udGVudC5tYXQtYWNjZW50W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtY2FsZW5kYXItYm9keS1kaXNhYmxlZFtfbmdjb250ZW50LSVDT01QJV0gPiAubWF0LWNhbGVuZGFyLWJvZHktc2VsZWN0ZWRbX25nY29udGVudC0lQ09NUCVde2JhY2tncm91bmQtY29sb3I6cmdiYSgyNTUsMTUyLDAsLjQpfS5tYXQtZGF0ZXBpY2tlci1jb250ZW50Lm1hdC1hY2NlbnRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1jYWxlbmRhci1ib2R5LXRvZGF5Lm1hdC1jYWxlbmRhci1ib2R5LXNlbGVjdGVkW19uZ2NvbnRlbnQtJUNPTVAlXXtib3gtc2hhZG93Omluc2V0IDAgMCAwIDFweCAjZmZmfS5tYXQtZGF0ZXBpY2tlci1jb250ZW50Lm1hdC13YXJuW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtY2FsZW5kYXItYm9keS1pbi1yYW5nZVtfbmdjb250ZW50LSVDT01QJV06OmJlZm9yZXtiYWNrZ3JvdW5kOnJnYmEoMjQ0LDY3LDU0LC4yKX0ubWF0LWRhdGVwaWNrZXItY29udGVudC5tYXQtd2Fybltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWNhbGVuZGFyLWJvZHktY29tcGFyaXNvbi1pZGVudGljYWxbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWRhdGVwaWNrZXItY29udGVudC5tYXQtd2Fybltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWNhbGVuZGFyLWJvZHktaW4tY29tcGFyaXNvbi1yYW5nZVtfbmdjb250ZW50LSVDT01QJV06OmJlZm9yZXtiYWNrZ3JvdW5kOnJnYmEoMjQ5LDE3MSwwLC4yKX0ubWF0LWRhdGVwaWNrZXItY29udGVudC5tYXQtd2Fybltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWNhbGVuZGFyLWJvZHktY29tcGFyaXNvbi1icmlkZ2Utc3RhcnRbX25nY29udGVudC0lQ09NUCVdOjpiZWZvcmUsIC5tYXQtZGF0ZXBpY2tlci1jb250ZW50Lm1hdC13YXJuW19uZ2NvbnRlbnQtJUNPTVAlXSAgIFtkaXI9cnRsXVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWNhbGVuZGFyLWJvZHktY29tcGFyaXNvbi1icmlkZ2UtZW5kW19uZ2NvbnRlbnQtJUNPTVAlXTo6YmVmb3Jle2JhY2tncm91bmQ6bGluZWFyLWdyYWRpZW50KHRvIHJpZ2h0LCByZ2JhKDI0NCwgNjcsIDU0LCAwLjIpIDUwJSwgcmdiYSgyNDksIDE3MSwgMCwgMC4yKSA1MCUpfS5tYXQtZGF0ZXBpY2tlci1jb250ZW50Lm1hdC13YXJuW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtY2FsZW5kYXItYm9keS1jb21wYXJpc29uLWJyaWRnZS1lbmRbX25nY29udGVudC0lQ09NUCVdOjpiZWZvcmUsIC5tYXQtZGF0ZXBpY2tlci1jb250ZW50Lm1hdC13YXJuW19uZ2NvbnRlbnQtJUNPTVAlXSAgIFtkaXI9cnRsXVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWNhbGVuZGFyLWJvZHktY29tcGFyaXNvbi1icmlkZ2Utc3RhcnRbX25nY29udGVudC0lQ09NUCVdOjpiZWZvcmV7YmFja2dyb3VuZDpsaW5lYXItZ3JhZGllbnQodG8gbGVmdCwgcmdiYSgyNDQsIDY3LCA1NCwgMC4yKSA1MCUsIHJnYmEoMjQ5LCAxNzEsIDAsIDAuMikgNTAlKX0ubWF0LWRhdGVwaWNrZXItY29udGVudC5tYXQtd2Fybltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWNhbGVuZGFyLWJvZHktaW4tcmFuZ2VbX25nY29udGVudC0lQ09NUCVdID4gLm1hdC1jYWxlbmRhci1ib2R5LWNvbXBhcmlzb24taWRlbnRpY2FsW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1kYXRlcGlja2VyLWNvbnRlbnQubWF0LXdhcm5bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1jYWxlbmRhci1ib2R5LWluLWNvbXBhcmlzb24tcmFuZ2UubWF0LWNhbGVuZGFyLWJvZHktaW4tcmFuZ2VbX25nY29udGVudC0lQ09NUCVdOjphZnRlcntiYWNrZ3JvdW5kOiNhOGRhYjV9Lm1hdC1kYXRlcGlja2VyLWNvbnRlbnQubWF0LXdhcm5bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1jYWxlbmRhci1ib2R5LWNvbXBhcmlzb24taWRlbnRpY2FsLm1hdC1jYWxlbmRhci1ib2R5LXNlbGVjdGVkW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1kYXRlcGlja2VyLWNvbnRlbnQubWF0LXdhcm5bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1jYWxlbmRhci1ib2R5LWluLWNvbXBhcmlzb24tcmFuZ2VbX25nY29udGVudC0lQ09NUCVdID4gLm1hdC1jYWxlbmRhci1ib2R5LXNlbGVjdGVkW19uZ2NvbnRlbnQtJUNPTVAlXXtiYWNrZ3JvdW5kOiM0NmEzNWV9Lm1hdC1kYXRlcGlja2VyLWNvbnRlbnQubWF0LXdhcm5bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1jYWxlbmRhci1ib2R5LXNlbGVjdGVkW19uZ2NvbnRlbnQtJUNPTVAlXXtiYWNrZ3JvdW5kLWNvbG9yOiNmNDQzMzY7Y29sb3I6I2ZmZn0ubWF0LWRhdGVwaWNrZXItY29udGVudC5tYXQtd2Fybltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWNhbGVuZGFyLWJvZHktZGlzYWJsZWRbX25nY29udGVudC0lQ09NUCVdID4gLm1hdC1jYWxlbmRhci1ib2R5LXNlbGVjdGVkW19uZ2NvbnRlbnQtJUNPTVAlXXtiYWNrZ3JvdW5kLWNvbG9yOnJnYmEoMjQ0LDY3LDU0LC40KX0ubWF0LWRhdGVwaWNrZXItY29udGVudC5tYXQtd2Fybltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWNhbGVuZGFyLWJvZHktdG9kYXkubWF0LWNhbGVuZGFyLWJvZHktc2VsZWN0ZWRbX25nY29udGVudC0lQ09NUCVde2JveC1zaGFkb3c6aW5zZXQgMCAwIDAgMXB4ICNmZmZ9Lm1hdC1kYXRlcGlja2VyLWNvbnRlbnQtdG91Y2hbX25nY29udGVudC0lQ09NUCVde2JveC1zaGFkb3c6MHB4IDBweCAwcHggMHB4IHJnYmEoMCwgMCwgMCwgMC4yKSwwcHggMHB4IDBweCAwcHggcmdiYSgwLCAwLCAwLCAwLjE0KSwwcHggMHB4IDBweCAwcHggcmdiYSgwLCAwLCAwLCAwLjEyKX0ubWF0LWRhdGVwaWNrZXItdG9nZ2xlLWFjdGl2ZVtfbmdjb250ZW50LSVDT01QJV17Y29sb3I6I2Y1N2MwMH0ubWF0LWRhdGVwaWNrZXItdG9nZ2xlLWFjdGl2ZS5tYXQtYWNjZW50W19uZ2NvbnRlbnQtJUNPTVAlXXtjb2xvcjojZmY5ODAwfS5tYXQtZGF0ZXBpY2tlci10b2dnbGUtYWN0aXZlLm1hdC13YXJuW19uZ2NvbnRlbnQtJUNPTVAlXXtjb2xvcjojZjQ0MzM2fS5tYXQtZGF0ZS1yYW5nZS1pbnB1dC1pbm5lcltkaXNhYmxlZF1bX25nY29udGVudC0lQ09NUCVde2NvbG9yOiM3NTc1NzV9Lm1hdC1kaWFsb2ctY29udGFpbmVyW19uZ2NvbnRlbnQtJUNPTVAlXXtib3gtc2hhZG93OjBweCAxMXB4IDE1cHggLTdweCByZ2JhKDAsIDAsIDAsIDAuMiksMHB4IDI0cHggMzhweCAzcHggcmdiYSgwLCAwLCAwLCAwLjE0KSwwcHggOXB4IDQ2cHggOHB4IHJnYmEoMCwgMCwgMCwgMC4xMik7YmFja2dyb3VuZDojZmZmO2NvbG9yOiMyMTIxMjF9Lm1hdC1kaXZpZGVyW19uZ2NvbnRlbnQtJUNPTVAlXXtib3JkZXItdG9wLWNvbG9yOnJnYmEoMCwwLDAsLjEyKX0ubWF0LWRpdmlkZXItdmVydGljYWxbX25nY29udGVudC0lQ09NUCVde2JvcmRlci1yaWdodC1jb2xvcjpyZ2JhKDAsMCwwLC4xMil9Lm1hdC1leHBhbnNpb24tcGFuZWxbX25nY29udGVudC0lQ09NUCVde2JhY2tncm91bmQ6I2ZmZjtjb2xvcjojMjEyMTIxfS5tYXQtZXhwYW5zaW9uLXBhbmVsW19uZ2NvbnRlbnQtJUNPTVAlXTpub3QoW2NsYXNzKj1tYXQtZWxldmF0aW9uLXpdKXtib3gtc2hhZG93OjBweCAzcHggMXB4IC0ycHggcmdiYSgwLCAwLCAwLCAwLjIpLDBweCAycHggMnB4IDBweCByZ2JhKDAsIDAsIDAsIDAuMTQpLDBweCAxcHggNXB4IDBweCByZ2JhKDAsIDAsIDAsIDAuMTIpfS5tYXQtYWN0aW9uLXJvd1tfbmdjb250ZW50LSVDT01QJV17Ym9yZGVyLXRvcC1jb2xvcjpyZ2JhKDAsMCwwLC4xMil9Lm1hdC1leHBhbnNpb24tcGFuZWxbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1leHBhbnNpb24tcGFuZWwtaGVhZGVyLmNkay1rZXlib2FyZC1mb2N1c2VkW19uZ2NvbnRlbnQtJUNPTVAlXTpub3QoW2FyaWEtZGlzYWJsZWQ9dHJ1ZV0pLCAubWF0LWV4cGFuc2lvbi1wYW5lbFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWV4cGFuc2lvbi1wYW5lbC1oZWFkZXIuY2RrLXByb2dyYW0tZm9jdXNlZFtfbmdjb250ZW50LSVDT01QJV06bm90KFthcmlhLWRpc2FibGVkPXRydWVdKSwgLm1hdC1leHBhbnNpb24tcGFuZWxbX25nY29udGVudC0lQ09NUCVdOm5vdCgubWF0LWV4cGFuZGVkKSAgIC5tYXQtZXhwYW5zaW9uLXBhbmVsLWhlYWRlcltfbmdjb250ZW50LSVDT01QJV06aG92ZXI6bm90KFthcmlhLWRpc2FibGVkPXRydWVdKXtiYWNrZ3JvdW5kOnJnYmEoMCwwLDAsLjA0KX1AbWVkaWEoaG92ZXI6IG5vbmUpey5tYXQtZXhwYW5zaW9uLXBhbmVsW19uZ2NvbnRlbnQtJUNPTVAlXTpub3QoLm1hdC1leHBhbmRlZCk6bm90KFthcmlhLWRpc2FibGVkPXRydWVdKSAgIC5tYXQtZXhwYW5zaW9uLXBhbmVsLWhlYWRlcltfbmdjb250ZW50LSVDT01QJV06aG92ZXJ7YmFja2dyb3VuZDojZmZmfX0ubWF0LWV4cGFuc2lvbi1wYW5lbC1oZWFkZXItdGl0bGVbX25nY29udGVudC0lQ09NUCVde2NvbG9yOiMyMTIxMjF9Lm1hdC1leHBhbnNpb24tcGFuZWwtaGVhZGVyLWRlc2NyaXB0aW9uW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1leHBhbnNpb24taW5kaWNhdG9yW19uZ2NvbnRlbnQtJUNPTVAlXTo6YWZ0ZXJ7Y29sb3I6IzYxNjE2MX0ubWF0LWV4cGFuc2lvbi1wYW5lbC1oZWFkZXJbYXJpYS1kaXNhYmxlZD10cnVlXVtfbmdjb250ZW50LSVDT01QJV17Y29sb3I6cmdiYSgwLDAsMCwuMjYpfS5tYXQtZXhwYW5zaW9uLXBhbmVsLWhlYWRlclthcmlhLWRpc2FibGVkPXRydWVdW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZXhwYW5zaW9uLXBhbmVsLWhlYWRlci10aXRsZVtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtZXhwYW5zaW9uLXBhbmVsLWhlYWRlclthcmlhLWRpc2FibGVkPXRydWVdW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZXhwYW5zaW9uLXBhbmVsLWhlYWRlci1kZXNjcmlwdGlvbltfbmdjb250ZW50LSVDT01QJV17Y29sb3I6aW5oZXJpdH0ubWF0LWV4cGFuc2lvbi1wYW5lbC1oZWFkZXJbX25nY29udGVudC0lQ09NUCVde2hlaWdodDo0OHB4fS5tYXQtZXhwYW5zaW9uLXBhbmVsLWhlYWRlci5tYXQtZXhwYW5kZWRbX25nY29udGVudC0lQ09NUCVde2hlaWdodDo2NHB4fS5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17Y29sb3I6cmdiYSg5Nyw5Nyw5NywuNil9Lm1hdC1oaW50W19uZ2NvbnRlbnQtJUNPTVAlXXtjb2xvcjpyZ2JhKDk3LDk3LDk3LC42KX0ubWF0LWZvcm0tZmllbGQubWF0LWZvY3VzZWRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXtjb2xvcjojZjU3YzAwfS5tYXQtZm9ybS1maWVsZC5tYXQtZm9jdXNlZFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWwubWF0LWFjY2VudFtfbmdjb250ZW50LSVDT01QJV17Y29sb3I6I2ZmOTgwMH0ubWF0LWZvcm0tZmllbGQubWF0LWZvY3VzZWRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsLm1hdC13YXJuW19uZ2NvbnRlbnQtJUNPTVAlXXtjb2xvcjojZjQ0MzM2fS5tYXQtZm9jdXNlZFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtcmVxdWlyZWQtbWFya2VyW19uZ2NvbnRlbnQtJUNPTVAlXXtjb2xvcjojZmY5ODAwfS5tYXQtZm9ybS1maWVsZC1yaXBwbGVbX25nY29udGVudC0lQ09NUCVde2JhY2tncm91bmQtY29sb3I6cmdiYSgwLDAsMCwuODcpfS5tYXQtZm9ybS1maWVsZC5tYXQtZm9jdXNlZFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtcmlwcGxlW19uZ2NvbnRlbnQtJUNPTVAlXXtiYWNrZ3JvdW5kLWNvbG9yOiNmNTdjMDB9Lm1hdC1mb3JtLWZpZWxkLm1hdC1mb2N1c2VkW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1yaXBwbGUubWF0LWFjY2VudFtfbmdjb250ZW50LSVDT01QJV17YmFja2dyb3VuZC1jb2xvcjojZmY5ODAwfS5tYXQtZm9ybS1maWVsZC5tYXQtZm9jdXNlZFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtcmlwcGxlLm1hdC13YXJuW19uZ2NvbnRlbnQtJUNPTVAlXXtiYWNrZ3JvdW5kLWNvbG9yOiNmNDQzMzZ9Lm1hdC1mb3JtLWZpZWxkLXR5cGUtbWF0LW5hdGl2ZS1zZWxlY3QubWF0LWZvY3VzZWRbX25nY29udGVudC0lQ09NUCVdOm5vdCgubWF0LWZvcm0tZmllbGQtaW52YWxpZCkgICAubWF0LWZvcm0tZmllbGQtaW5maXhbX25nY29udGVudC0lQ09NUCVdOjphZnRlcntjb2xvcjojZjU3YzAwfS5tYXQtZm9ybS1maWVsZC10eXBlLW1hdC1uYXRpdmUtc2VsZWN0Lm1hdC1mb2N1c2VkW19uZ2NvbnRlbnQtJUNPTVAlXTpub3QoLm1hdC1mb3JtLWZpZWxkLWludmFsaWQpLm1hdC1hY2NlbnQgICAubWF0LWZvcm0tZmllbGQtaW5maXhbX25nY29udGVudC0lQ09NUCVdOjphZnRlcntjb2xvcjojZmY5ODAwfS5tYXQtZm9ybS1maWVsZC10eXBlLW1hdC1uYXRpdmUtc2VsZWN0Lm1hdC1mb2N1c2VkW19uZ2NvbnRlbnQtJUNPTVAlXTpub3QoLm1hdC1mb3JtLWZpZWxkLWludmFsaWQpLm1hdC13YXJuICAgLm1hdC1mb3JtLWZpZWxkLWluZml4W19uZ2NvbnRlbnQtJUNPTVAlXTo6YWZ0ZXJ7Y29sb3I6I2Y0NDMzNn0ubWF0LWZvcm0tZmllbGQubWF0LWZvcm0tZmllbGQtaW52YWxpZFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVde2NvbG9yOiNmNDQzMzZ9Lm1hdC1mb3JtLWZpZWxkLm1hdC1mb3JtLWZpZWxkLWludmFsaWRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsLm1hdC1hY2NlbnRbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWZvcm0tZmllbGQubWF0LWZvcm0tZmllbGQtaW52YWxpZFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLXJlcXVpcmVkLW1hcmtlcltfbmdjb250ZW50LSVDT01QJV17Y29sb3I6I2Y0NDMzNn0ubWF0LWZvcm0tZmllbGQubWF0LWZvcm0tZmllbGQtaW52YWxpZFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtcmlwcGxlW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1mb3JtLWZpZWxkLm1hdC1mb3JtLWZpZWxkLWludmFsaWRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLXJpcHBsZS5tYXQtYWNjZW50W19uZ2NvbnRlbnQtJUNPTVAlXXtiYWNrZ3JvdW5kLWNvbG9yOiNmNDQzMzZ9Lm1hdC1lcnJvcltfbmdjb250ZW50LSVDT01QJV17Y29sb3I6I2Y0NDMzNn0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1sZWdhY3lbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXtjb2xvcjojNjE2MTYxfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWxlZ2FjeVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWhpbnRbX25nY29udGVudC0lQ09NUCVde2NvbG9yOiM2MTYxNjF9Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtbGVnYWN5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC11bmRlcmxpbmVbX25nY29udGVudC0lQ09NUCVde2JhY2tncm91bmQtY29sb3I6cmdiYSgwLDAsMCwuNDIpfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWxlZ2FjeS5tYXQtZm9ybS1maWVsZC1kaXNhYmxlZFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtdW5kZXJsaW5lW19uZ2NvbnRlbnQtJUNPTVAlXXtiYWNrZ3JvdW5kLWltYWdlOmxpbmVhci1ncmFkaWVudCh0byByaWdodCwgcmdiYSgwLCAwLCAwLCAwLjQyKSAwJSwgcmdiYSgwLCAwLCAwLCAwLjQyKSAzMyUsIHRyYW5zcGFyZW50IDAlKTtiYWNrZ3JvdW5kLXNpemU6NHB4IDEwMCU7YmFja2dyb3VuZC1yZXBlYXQ6cmVwZWF0LXh9Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2Utc3RhbmRhcmRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLXVuZGVybGluZVtfbmdjb250ZW50LSVDT01QJV17YmFja2dyb3VuZC1jb2xvcjpyZ2JhKDAsMCwwLC40Mil9Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2Utc3RhbmRhcmQubWF0LWZvcm0tZmllbGQtZGlzYWJsZWRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLXVuZGVybGluZVtfbmdjb250ZW50LSVDT01QJV17YmFja2dyb3VuZC1pbWFnZTpsaW5lYXItZ3JhZGllbnQodG8gcmlnaHQsIHJnYmEoMCwgMCwgMCwgMC40MikgMCUsIHJnYmEoMCwgMCwgMCwgMC40MikgMzMlLCB0cmFuc3BhcmVudCAwJSk7YmFja2dyb3VuZC1zaXplOjRweCAxMDAlO2JhY2tncm91bmQtcmVwZWF0OnJlcGVhdC14fS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWZpbGxbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWZsZXhbX25nY29udGVudC0lQ09NUCVde2JhY2tncm91bmQtY29sb3I6cmdiYSgwLDAsMCwuMDQpfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWZpbGwubWF0LWZvcm0tZmllbGQtZGlzYWJsZWRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWZsZXhbX25nY29udGVudC0lQ09NUCVde2JhY2tncm91bmQtY29sb3I6cmdiYSgwLDAsMCwuMDIpfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWZpbGxbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLXVuZGVybGluZVtfbmdjb250ZW50LSVDT01QJV06OmJlZm9yZXtiYWNrZ3JvdW5kLWNvbG9yOnJnYmEoMCwwLDAsLjQyKX0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1maWxsLm1hdC1mb3JtLWZpZWxkLWRpc2FibGVkW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17Y29sb3I6Izc1NzU3NX0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1maWxsLm1hdC1mb3JtLWZpZWxkLWRpc2FibGVkW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC11bmRlcmxpbmVbX25nY29udGVudC0lQ09NUCVdOjpiZWZvcmV7YmFja2dyb3VuZC1jb2xvcjp0cmFuc3BhcmVudH0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1vdXRsaW5lW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1vdXRsaW5lW19uZ2NvbnRlbnQtJUNPTVAlXXtjb2xvcjpyZ2JhKDAsMCwwLC4xMil9Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2Utb3V0bGluZVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtb3V0bGluZS10aGlja1tfbmdjb250ZW50LSVDT01QJV17Y29sb3I6cmdiYSgwLDAsMCwuODcpfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLW91dGxpbmUubWF0LWZvY3VzZWRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLW91dGxpbmUtdGhpY2tbX25nY29udGVudC0lQ09NUCVde2NvbG9yOiNmNTdjMDB9Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2Utb3V0bGluZS5tYXQtZm9jdXNlZC5tYXQtYWNjZW50W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1vdXRsaW5lLXRoaWNrW19uZ2NvbnRlbnQtJUNPTVAlXXtjb2xvcjojZmY5ODAwfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLW91dGxpbmUubWF0LWZvY3VzZWQubWF0LXdhcm5bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLW91dGxpbmUtdGhpY2tbX25nY29udGVudC0lQ09NUCVde2NvbG9yOiNmNDQzMzZ9Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2Utb3V0bGluZS5tYXQtZm9ybS1maWVsZC1pbnZhbGlkLm1hdC1mb3JtLWZpZWxkLWludmFsaWRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLW91dGxpbmUtdGhpY2tbX25nY29udGVudC0lQ09NUCVde2NvbG9yOiNmNDQzMzZ9Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2Utb3V0bGluZS5tYXQtZm9ybS1maWVsZC1kaXNhYmxlZFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVde2NvbG9yOiM3NTc1NzV9Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2Utb3V0bGluZS5tYXQtZm9ybS1maWVsZC1kaXNhYmxlZFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtb3V0bGluZVtfbmdjb250ZW50LSVDT01QJV17Y29sb3I6cmdiYSgwLDAsMCwuMDYpfS5tYXQtaWNvbi5tYXQtcHJpbWFyeVtfbmdjb250ZW50LSVDT01QJV17Y29sb3I6I2Y1N2MwMH0ubWF0LWljb24ubWF0LWFjY2VudFtfbmdjb250ZW50LSVDT01QJV17Y29sb3I6I2ZmOTgwMH0ubWF0LWljb24ubWF0LXdhcm5bX25nY29udGVudC0lQ09NUCVde2NvbG9yOiNmNDQzMzZ9Lm1hdC1mb3JtLWZpZWxkLXR5cGUtbWF0LW5hdGl2ZS1zZWxlY3RbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWluZml4W19uZ2NvbnRlbnQtJUNPTVAlXTo6YWZ0ZXJ7Y29sb3I6IzYxNjE2MX0ubWF0LWlucHV0LWVsZW1lbnRbX25nY29udGVudC0lQ09NUCVdOmRpc2FibGVkLCAubWF0LWZvcm0tZmllbGQtdHlwZS1tYXQtbmF0aXZlLXNlbGVjdC5tYXQtZm9ybS1maWVsZC1kaXNhYmxlZFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtaW5maXhbX25nY29udGVudC0lQ09NUCVdOjphZnRlcntjb2xvcjojNzU3NTc1fS5tYXQtaW5wdXQtZWxlbWVudFtfbmdjb250ZW50LSVDT01QJV17Y2FyZXQtY29sb3I6I2Y1N2MwMH0ubWF0LWlucHV0LWVsZW1lbnRbX25nY29udGVudC0lQ09NUCVdOjpwbGFjZWhvbGRlcntjb2xvcjpyZ2JhKDk3LDk3LDk3LC40Mil9Lm1hdC1pbnB1dC1lbGVtZW50W19uZ2NvbnRlbnQtJUNPTVAlXTo6LW1vei1wbGFjZWhvbGRlcntjb2xvcjpyZ2JhKDk3LDk3LDk3LC40Mil9Lm1hdC1pbnB1dC1lbGVtZW50W19uZ2NvbnRlbnQtJUNPTVAlXTo6LXdlYmtpdC1pbnB1dC1wbGFjZWhvbGRlcntjb2xvcjpyZ2JhKDk3LDk3LDk3LC40Mil9Lm1hdC1pbnB1dC1lbGVtZW50W19uZ2NvbnRlbnQtJUNPTVAlXTotbXMtaW5wdXQtcGxhY2Vob2xkZXJ7Y29sb3I6cmdiYSg5Nyw5Nyw5NywuNDIpfS5tYXQtZm9ybS1maWVsZC5tYXQtYWNjZW50W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaW5wdXQtZWxlbWVudFtfbmdjb250ZW50LSVDT01QJV17Y2FyZXQtY29sb3I6I2ZmOTgwMH0ubWF0LWZvcm0tZmllbGQubWF0LXdhcm5bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pbnB1dC1lbGVtZW50W19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1mb3JtLWZpZWxkLWludmFsaWRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pbnB1dC1lbGVtZW50W19uZ2NvbnRlbnQtJUNPTVAlXXtjYXJldC1jb2xvcjojZjQ0MzM2fS5tYXQtZm9ybS1maWVsZC10eXBlLW1hdC1uYXRpdmUtc2VsZWN0Lm1hdC1mb3JtLWZpZWxkLWludmFsaWRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWluZml4W19uZ2NvbnRlbnQtJUNPTVAlXTo6YWZ0ZXJ7Y29sb3I6I2Y0NDMzNn0ubWF0LWxpc3QtYmFzZVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpc3QtaXRlbVtfbmdjb250ZW50LSVDT01QJV17Y29sb3I6IzIxMjEyMX0ubWF0LWxpc3QtYmFzZVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpc3Qtb3B0aW9uW19uZ2NvbnRlbnQtJUNPTVAlXXtjb2xvcjojMjEyMTIxfS5tYXQtbGlzdC1iYXNlW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtc3ViaGVhZGVyW19uZ2NvbnRlbnQtJUNPTVAlXXtjb2xvcjojNjE2MTYxfS5tYXQtbGlzdC1pdGVtLWRpc2FibGVkW19uZ2NvbnRlbnQtJUNPTVAlXXtiYWNrZ3JvdW5kLWNvbG9yOiNlZWV9Lm1hdC1saXN0LW9wdGlvbltfbmdjb250ZW50LSVDT01QJV06aG92ZXIsIC5tYXQtbGlzdC1vcHRpb25bX25nY29udGVudC0lQ09NUCVdOmZvY3VzLCAubWF0LW5hdi1saXN0W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGlzdC1pdGVtW19uZ2NvbnRlbnQtJUNPTVAlXTpob3ZlciwgLm1hdC1uYXYtbGlzdFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpc3QtaXRlbVtfbmdjb250ZW50LSVDT01QJV06Zm9jdXMsIC5tYXQtYWN0aW9uLWxpc3RbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saXN0LWl0ZW1bX25nY29udGVudC0lQ09NUCVdOmhvdmVyLCAubWF0LWFjdGlvbi1saXN0W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGlzdC1pdGVtW19uZ2NvbnRlbnQtJUNPTVAlXTpmb2N1c3tiYWNrZ3JvdW5kOnJnYmEoMCwwLDAsLjA0KX0ubWF0LWxpc3Qtc2luZ2xlLXNlbGVjdGVkLW9wdGlvbltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtbGlzdC1zaW5nbGUtc2VsZWN0ZWQtb3B0aW9uW19uZ2NvbnRlbnQtJUNPTVAlXTpob3ZlciwgLm1hdC1saXN0LXNpbmdsZS1zZWxlY3RlZC1vcHRpb25bX25nY29udGVudC0lQ09NUCVdOmZvY3Vze2JhY2tncm91bmQ6cmdiYSgwLDAsMCwuMTIpfS5tYXQtbWVudS1wYW5lbFtfbmdjb250ZW50LSVDT01QJV17YmFja2dyb3VuZDojZmZmfS5tYXQtbWVudS1wYW5lbFtfbmdjb250ZW50LSVDT01QJV06bm90KFtjbGFzcyo9bWF0LWVsZXZhdGlvbi16XSl7Ym94LXNoYWRvdzowcHggMnB4IDRweCAtMXB4IHJnYmEoMCwgMCwgMCwgMC4yKSwwcHggNHB4IDVweCAwcHggcmdiYSgwLCAwLCAwLCAwLjE0KSwwcHggMXB4IDEwcHggMHB4IHJnYmEoMCwgMCwgMCwgMC4xMil9Lm1hdC1tZW51LWl0ZW1bX25nY29udGVudC0lQ09NUCVde2JhY2tncm91bmQ6dHJhbnNwYXJlbnQ7Y29sb3I6IzIxMjEyMX0ubWF0LW1lbnUtaXRlbVtkaXNhYmxlZF1bX25nY29udGVudC0lQ09NUCVdLCAubWF0LW1lbnUtaXRlbVtkaXNhYmxlZF1bX25nY29udGVudC0lQ09NUCVdOjphZnRlcntjb2xvcjpyZ2JhKDAsMCwwLC4zOCl9Lm1hdC1tZW51LWl0ZW1bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pY29uLW5vLWNvbG9yW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1tZW51LWl0ZW0tc3VibWVudS10cmlnZ2VyW19uZ2NvbnRlbnQtJUNPTVAlXTo6YWZ0ZXJ7Y29sb3I6cmdiYSgwLDAsMCwuNTQpfS5tYXQtbWVudS1pdGVtW19uZ2NvbnRlbnQtJUNPTVAlXTpob3Zlcjpub3QoW2Rpc2FibGVkXSksIC5tYXQtbWVudS1pdGVtLmNkay1wcm9ncmFtLWZvY3VzZWRbX25nY29udGVudC0lQ09NUCVdOm5vdChbZGlzYWJsZWRdKSwgLm1hdC1tZW51LWl0ZW0uY2RrLWtleWJvYXJkLWZvY3VzZWRbX25nY29udGVudC0lQ09NUCVdOm5vdChbZGlzYWJsZWRdKSwgLm1hdC1tZW51LWl0ZW0taGlnaGxpZ2h0ZWRbX25nY29udGVudC0lQ09NUCVdOm5vdChbZGlzYWJsZWRdKXtiYWNrZ3JvdW5kOnJnYmEoMCwwLDAsLjA0KX0ubWF0LXBhZ2luYXRvcltfbmdjb250ZW50LSVDT01QJV17YmFja2dyb3VuZDojZmZmfS5tYXQtcGFnaW5hdG9yW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1wYWdpbmF0b3ItcGFnZS1zaXplW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtc2VsZWN0LXRyaWdnZXJbX25nY29udGVudC0lQ09NUCVde2NvbG9yOiM2MTYxNjF9Lm1hdC1wYWdpbmF0b3ItZGVjcmVtZW50W19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1wYWdpbmF0b3ItaW5jcmVtZW50W19uZ2NvbnRlbnQtJUNPTVAlXXtib3JkZXItdG9wOjJweCBzb2xpZCByZ2JhKDAsMCwwLC41NCk7Ym9yZGVyLXJpZ2h0OjJweCBzb2xpZCByZ2JhKDAsMCwwLC41NCl9Lm1hdC1wYWdpbmF0b3ItZmlyc3RbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXBhZ2luYXRvci1sYXN0W19uZ2NvbnRlbnQtJUNPTVAlXXtib3JkZXItdG9wOjJweCBzb2xpZCByZ2JhKDAsMCwwLC41NCl9Lm1hdC1pY29uLWJ1dHRvbltkaXNhYmxlZF1bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1wYWdpbmF0b3ItZGVjcmVtZW50W19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1pY29uLWJ1dHRvbltkaXNhYmxlZF1bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1wYWdpbmF0b3ItaW5jcmVtZW50W19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1pY29uLWJ1dHRvbltkaXNhYmxlZF1bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1wYWdpbmF0b3ItZmlyc3RbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWljb24tYnV0dG9uW2Rpc2FibGVkXVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXBhZ2luYXRvci1sYXN0W19uZ2NvbnRlbnQtJUNPTVAlXXtib3JkZXItY29sb3I6cmdiYSgwLDAsMCwuMzgpfS5tYXQtcGFnaW5hdG9yLWNvbnRhaW5lcltfbmdjb250ZW50LSVDT01QJV17bWluLWhlaWdodDo1NnB4fS5tYXQtcHJvZ3Jlc3MtYmFyLWJhY2tncm91bmRbX25nY29udGVudC0lQ09NUCVde2ZpbGw6I2ZmOTgwMH0ubWF0LXByb2dyZXNzLWJhci1idWZmZXJbX25nY29udGVudC0lQ09NUCVde2JhY2tncm91bmQtY29sb3I6I2ZmOTgwMH0ubWF0LXByb2dyZXNzLWJhci1maWxsW19uZ2NvbnRlbnQtJUNPTVAlXTo6YWZ0ZXJ7YmFja2dyb3VuZC1jb2xvcjojZjU3YzAwfS5tYXQtcHJvZ3Jlc3MtYmFyLm1hdC1hY2NlbnRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1wcm9ncmVzcy1iYXItYmFja2dyb3VuZFtfbmdjb250ZW50LSVDT01QJV17ZmlsbDojZmY5ODAwfS5tYXQtcHJvZ3Jlc3MtYmFyLm1hdC1hY2NlbnRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1wcm9ncmVzcy1iYXItYnVmZmVyW19uZ2NvbnRlbnQtJUNPTVAlXXtiYWNrZ3JvdW5kLWNvbG9yOiNmZjk4MDB9Lm1hdC1wcm9ncmVzcy1iYXIubWF0LWFjY2VudFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXByb2dyZXNzLWJhci1maWxsW19uZ2NvbnRlbnQtJUNPTVAlXTo6YWZ0ZXJ7YmFja2dyb3VuZC1jb2xvcjojZmY5ODAwfS5tYXQtcHJvZ3Jlc3MtYmFyLm1hdC13YXJuW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtcHJvZ3Jlc3MtYmFyLWJhY2tncm91bmRbX25nY29udGVudC0lQ09NUCVde2ZpbGw6I2ZmY2RkMn0ubWF0LXByb2dyZXNzLWJhci5tYXQtd2Fybltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXByb2dyZXNzLWJhci1idWZmZXJbX25nY29udGVudC0lQ09NUCVde2JhY2tncm91bmQtY29sb3I6I2ZmY2RkMn0ubWF0LXByb2dyZXNzLWJhci5tYXQtd2Fybltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXByb2dyZXNzLWJhci1maWxsW19uZ2NvbnRlbnQtJUNPTVAlXTo6YWZ0ZXJ7YmFja2dyb3VuZC1jb2xvcjojZjQ0MzM2fS5tYXQtcHJvZ3Jlc3Mtc3Bpbm5lcltfbmdjb250ZW50LSVDT01QJV0gICBjaXJjbGVbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXNwaW5uZXJbX25nY29udGVudC0lQ09NUCVdICAgY2lyY2xlW19uZ2NvbnRlbnQtJUNPTVAlXXtzdHJva2U6I2Y1N2MwMH0ubWF0LXByb2dyZXNzLXNwaW5uZXIubWF0LWFjY2VudFtfbmdjb250ZW50LSVDT01QJV0gICBjaXJjbGVbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXNwaW5uZXIubWF0LWFjY2VudFtfbmdjb250ZW50LSVDT01QJV0gICBjaXJjbGVbX25nY29udGVudC0lQ09NUCVde3N0cm9rZTojZmY5ODAwfS5tYXQtcHJvZ3Jlc3Mtc3Bpbm5lci5tYXQtd2Fybltfbmdjb250ZW50LSVDT01QJV0gICBjaXJjbGVbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXNwaW5uZXIubWF0LXdhcm5bX25nY29udGVudC0lQ09NUCVdICAgY2lyY2xlW19uZ2NvbnRlbnQtJUNPTVAlXXtzdHJva2U6I2Y0NDMzNn0ubWF0LXJhZGlvLW91dGVyLWNpcmNsZVtfbmdjb250ZW50LSVDT01QJV17Ym9yZGVyLWNvbG9yOiM2MTYxNjF9Lm1hdC1yYWRpby1idXR0b24ubWF0LXByaW1hcnkubWF0LXJhZGlvLWNoZWNrZWRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1yYWRpby1vdXRlci1jaXJjbGVbX25nY29udGVudC0lQ09NUCVde2JvcmRlci1jb2xvcjojZjU3YzAwfS5tYXQtcmFkaW8tYnV0dG9uLm1hdC1wcmltYXJ5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtcmFkaW8taW5uZXItY2lyY2xlW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1yYWRpby1idXR0b24ubWF0LXByaW1hcnlbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1yYWRpby1yaXBwbGVbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1yaXBwbGUtZWxlbWVudFtfbmdjb250ZW50LSVDT01QJV06bm90KC5tYXQtcmFkaW8tcGVyc2lzdGVudC1yaXBwbGUpLCAubWF0LXJhZGlvLWJ1dHRvbi5tYXQtcHJpbWFyeS5tYXQtcmFkaW8tY2hlY2tlZFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXJhZGlvLXBlcnNpc3RlbnQtcmlwcGxlW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1yYWRpby1idXR0b24ubWF0LXByaW1hcnlbX25nY29udGVudC0lQ09NUCVdOmFjdGl2ZSAgIC5tYXQtcmFkaW8tcGVyc2lzdGVudC1yaXBwbGVbX25nY29udGVudC0lQ09NUCVde2JhY2tncm91bmQtY29sb3I6I2Y1N2MwMH0ubWF0LXJhZGlvLWJ1dHRvbi5tYXQtYWNjZW50Lm1hdC1yYWRpby1jaGVja2VkW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtcmFkaW8tb3V0ZXItY2lyY2xlW19uZ2NvbnRlbnQtJUNPTVAlXXtib3JkZXItY29sb3I6I2ZmOTgwMH0ubWF0LXJhZGlvLWJ1dHRvbi5tYXQtYWNjZW50W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtcmFkaW8taW5uZXItY2lyY2xlW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1yYWRpby1idXR0b24ubWF0LWFjY2VudFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXJhZGlvLXJpcHBsZVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXJpcHBsZS1lbGVtZW50W19uZ2NvbnRlbnQtJUNPTVAlXTpub3QoLm1hdC1yYWRpby1wZXJzaXN0ZW50LXJpcHBsZSksIC5tYXQtcmFkaW8tYnV0dG9uLm1hdC1hY2NlbnQubWF0LXJhZGlvLWNoZWNrZWRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1yYWRpby1wZXJzaXN0ZW50LXJpcHBsZVtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtcmFkaW8tYnV0dG9uLm1hdC1hY2NlbnRbX25nY29udGVudC0lQ09NUCVdOmFjdGl2ZSAgIC5tYXQtcmFkaW8tcGVyc2lzdGVudC1yaXBwbGVbX25nY29udGVudC0lQ09NUCVde2JhY2tncm91bmQtY29sb3I6I2ZmOTgwMH0ubWF0LXJhZGlvLWJ1dHRvbi5tYXQtd2Fybi5tYXQtcmFkaW8tY2hlY2tlZFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXJhZGlvLW91dGVyLWNpcmNsZVtfbmdjb250ZW50LSVDT01QJV17Ym9yZGVyLWNvbG9yOiNmNDQzMzZ9Lm1hdC1yYWRpby1idXR0b24ubWF0LXdhcm5bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1yYWRpby1pbm5lci1jaXJjbGVbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXJhZGlvLWJ1dHRvbi5tYXQtd2Fybltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXJhZGlvLXJpcHBsZVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXJpcHBsZS1lbGVtZW50W19uZ2NvbnRlbnQtJUNPTVAlXTpub3QoLm1hdC1yYWRpby1wZXJzaXN0ZW50LXJpcHBsZSksIC5tYXQtcmFkaW8tYnV0dG9uLm1hdC13YXJuLm1hdC1yYWRpby1jaGVja2VkW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtcmFkaW8tcGVyc2lzdGVudC1yaXBwbGVbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXJhZGlvLWJ1dHRvbi5tYXQtd2Fybltfbmdjb250ZW50LSVDT01QJV06YWN0aXZlICAgLm1hdC1yYWRpby1wZXJzaXN0ZW50LXJpcHBsZVtfbmdjb250ZW50LSVDT01QJV17YmFja2dyb3VuZC1jb2xvcjojZjQ0MzM2fS5tYXQtcmFkaW8tYnV0dG9uLm1hdC1yYWRpby1kaXNhYmxlZC5tYXQtcmFkaW8tY2hlY2tlZFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXJhZGlvLW91dGVyLWNpcmNsZVtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtcmFkaW8tYnV0dG9uLm1hdC1yYWRpby1kaXNhYmxlZFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXJhZGlvLW91dGVyLWNpcmNsZVtfbmdjb250ZW50LSVDT01QJV17Ym9yZGVyLWNvbG9yOnJnYmEoMCwwLDAsLjM4KX0ubWF0LXJhZGlvLWJ1dHRvbi5tYXQtcmFkaW8tZGlzYWJsZWRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1yYWRpby1yaXBwbGVbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1yaXBwbGUtZWxlbWVudFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtcmFkaW8tYnV0dG9uLm1hdC1yYWRpby1kaXNhYmxlZFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXJhZGlvLWlubmVyLWNpcmNsZVtfbmdjb250ZW50LSVDT01QJV17YmFja2dyb3VuZC1jb2xvcjpyZ2JhKDAsMCwwLC4zOCl9Lm1hdC1yYWRpby1idXR0b24ubWF0LXJhZGlvLWRpc2FibGVkW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtcmFkaW8tbGFiZWwtY29udGVudFtfbmdjb250ZW50LSVDT01QJV17Y29sb3I6cmdiYSgwLDAsMCwuMzgpfS5tYXQtcmFkaW8tYnV0dG9uW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtcmlwcGxlLWVsZW1lbnRbX25nY29udGVudC0lQ09NUCVde2JhY2tncm91bmQtY29sb3I6IzAwMH0ubWF0LXNlbGVjdC12YWx1ZVtfbmdjb250ZW50LSVDT01QJV17Y29sb3I6IzIxMjEyMX0ubWF0LXNlbGVjdC1wbGFjZWhvbGRlcltfbmdjb250ZW50LSVDT01QJV17Y29sb3I6cmdiYSg5Nyw5Nyw5NywuNDIpfS5tYXQtc2VsZWN0LWRpc2FibGVkW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtc2VsZWN0LXZhbHVlW19uZ2NvbnRlbnQtJUNPTVAlXXtjb2xvcjojNzU3NTc1fS5tYXQtc2VsZWN0LWFycm93W19uZ2NvbnRlbnQtJUNPTVAlXXtjb2xvcjojNjE2MTYxfS5tYXQtc2VsZWN0LXBhbmVsW19uZ2NvbnRlbnQtJUNPTVAlXXtiYWNrZ3JvdW5kOiNmZmZ9Lm1hdC1zZWxlY3QtcGFuZWxbX25nY29udGVudC0lQ09NUCVdOm5vdChbY2xhc3MqPW1hdC1lbGV2YXRpb24tel0pe2JveC1zaGFkb3c6MHB4IDJweCA0cHggLTFweCByZ2JhKDAsIDAsIDAsIDAuMiksMHB4IDRweCA1cHggMHB4IHJnYmEoMCwgMCwgMCwgMC4xNCksMHB4IDFweCAxMHB4IDBweCByZ2JhKDAsIDAsIDAsIDAuMTIpfS5tYXQtc2VsZWN0LXBhbmVsW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtb3B0aW9uLm1hdC1zZWxlY3RlZFtfbmdjb250ZW50LSVDT01QJV06bm90KC5tYXQtb3B0aW9uLW11bHRpcGxlKXtiYWNrZ3JvdW5kOnJnYmEoMCwwLDAsLjEyKX0ubWF0LWZvcm0tZmllbGQubWF0LWZvY3VzZWQubWF0LXByaW1hcnlbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1zZWxlY3QtYXJyb3dbX25nY29udGVudC0lQ09NUCVde2NvbG9yOiNmNTdjMDB9Lm1hdC1mb3JtLWZpZWxkLm1hdC1mb2N1c2VkLm1hdC1hY2NlbnRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1zZWxlY3QtYXJyb3dbX25nY29udGVudC0lQ09NUCVde2NvbG9yOiNmZjk4MDB9Lm1hdC1mb3JtLWZpZWxkLm1hdC1mb2N1c2VkLm1hdC13YXJuW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtc2VsZWN0LWFycm93W19uZ2NvbnRlbnQtJUNPTVAlXXtjb2xvcjojZjQ0MzM2fS5tYXQtZm9ybS1maWVsZFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXNlbGVjdC5tYXQtc2VsZWN0LWludmFsaWRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1zZWxlY3QtYXJyb3dbX25nY29udGVudC0lQ09NUCVde2NvbG9yOiNmNDQzMzZ9Lm1hdC1mb3JtLWZpZWxkW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtc2VsZWN0Lm1hdC1zZWxlY3QtZGlzYWJsZWRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1zZWxlY3QtYXJyb3dbX25nY29udGVudC0lQ09NUCVde2NvbG9yOiM3NTc1NzV9Lm1hdC1kcmF3ZXItY29udGFpbmVyW19uZ2NvbnRlbnQtJUNPTVAlXXtiYWNrZ3JvdW5kLWNvbG9yOiNmYWZhZmE7Y29sb3I6IzIxMjEyMX0ubWF0LWRyYXdlcltfbmdjb250ZW50LSVDT01QJV17YmFja2dyb3VuZC1jb2xvcjojZmZmO2NvbG9yOiMyMTIxMjF9Lm1hdC1kcmF3ZXIubWF0LWRyYXdlci1wdXNoW19uZ2NvbnRlbnQtJUNPTVAlXXtiYWNrZ3JvdW5kLWNvbG9yOiNmZmZ9Lm1hdC1kcmF3ZXJbX25nY29udGVudC0lQ09NUCVdOm5vdCgubWF0LWRyYXdlci1zaWRlKXtib3gtc2hhZG93OjBweCA4cHggMTBweCAtNXB4IHJnYmEoMCwgMCwgMCwgMC4yKSwwcHggMTZweCAyNHB4IDJweCByZ2JhKDAsIDAsIDAsIDAuMTQpLDBweCA2cHggMzBweCA1cHggcmdiYSgwLCAwLCAwLCAwLjEyKX0ubWF0LWRyYXdlci1zaWRlW19uZ2NvbnRlbnQtJUNPTVAlXXtib3JkZXItcmlnaHQ6c29saWQgMXB4IHJnYmEoMCwwLDAsLjEyKX0ubWF0LWRyYXdlci1zaWRlLm1hdC1kcmF3ZXItZW5kW19uZ2NvbnRlbnQtJUNPTVAlXXtib3JkZXItbGVmdDpzb2xpZCAxcHggcmdiYSgwLDAsMCwuMTIpO2JvcmRlci1yaWdodDpub25lfVtkaXI9cnRsXVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWRyYXdlci1zaWRlW19uZ2NvbnRlbnQtJUNPTVAlXXtib3JkZXItbGVmdDpzb2xpZCAxcHggcmdiYSgwLDAsMCwuMTIpO2JvcmRlci1yaWdodDpub25lfVtkaXI9cnRsXVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWRyYXdlci1zaWRlLm1hdC1kcmF3ZXItZW5kW19uZ2NvbnRlbnQtJUNPTVAlXXtib3JkZXItbGVmdDpub25lO2JvcmRlci1yaWdodDpzb2xpZCAxcHggcmdiYSgwLDAsMCwuMTIpfS5tYXQtZHJhd2VyLWJhY2tkcm9wLm1hdC1kcmF3ZXItc2hvd25bX25nY29udGVudC0lQ09NUCVde2JhY2tncm91bmQtY29sb3I6cmdiYSgwLDAsMCwuNil9Lm1hdC1zbGlkZS10b2dnbGUubWF0LWNoZWNrZWRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1zbGlkZS10b2dnbGUtdGh1bWJbX25nY29udGVudC0lQ09NUCVde2JhY2tncm91bmQtY29sb3I6I2ZmOTgwMH0ubWF0LXNsaWRlLXRvZ2dsZS5tYXQtY2hlY2tlZFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXNsaWRlLXRvZ2dsZS1iYXJbX25nY29udGVudC0lQ09NUCVde2JhY2tncm91bmQtY29sb3I6cmdiYSgyNTUsMTUyLDAsLjU0KX0ubWF0LXNsaWRlLXRvZ2dsZS5tYXQtY2hlY2tlZFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXJpcHBsZS1lbGVtZW50W19uZ2NvbnRlbnQtJUNPTVAlXXtiYWNrZ3JvdW5kLWNvbG9yOiNmZjk4MDB9Lm1hdC1zbGlkZS10b2dnbGUubWF0LXByaW1hcnkubWF0LWNoZWNrZWRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1zbGlkZS10b2dnbGUtdGh1bWJbX25nY29udGVudC0lQ09NUCVde2JhY2tncm91bmQtY29sb3I6I2Y1N2MwMH0ubWF0LXNsaWRlLXRvZ2dsZS5tYXQtcHJpbWFyeS5tYXQtY2hlY2tlZFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXNsaWRlLXRvZ2dsZS1iYXJbX25nY29udGVudC0lQ09NUCVde2JhY2tncm91bmQtY29sb3I6cmdiYSgyNDUsMTI0LDAsLjU0KX0ubWF0LXNsaWRlLXRvZ2dsZS5tYXQtcHJpbWFyeS5tYXQtY2hlY2tlZFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXJpcHBsZS1lbGVtZW50W19uZ2NvbnRlbnQtJUNPTVAlXXtiYWNrZ3JvdW5kLWNvbG9yOiNmNTdjMDB9Lm1hdC1zbGlkZS10b2dnbGUubWF0LXdhcm4ubWF0LWNoZWNrZWRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1zbGlkZS10b2dnbGUtdGh1bWJbX25nY29udGVudC0lQ09NUCVde2JhY2tncm91bmQtY29sb3I6I2Y0NDMzNn0ubWF0LXNsaWRlLXRvZ2dsZS5tYXQtd2Fybi5tYXQtY2hlY2tlZFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXNsaWRlLXRvZ2dsZS1iYXJbX25nY29udGVudC0lQ09NUCVde2JhY2tncm91bmQtY29sb3I6cmdiYSgyNDQsNjcsNTQsLjU0KX0ubWF0LXNsaWRlLXRvZ2dsZS5tYXQtd2Fybi5tYXQtY2hlY2tlZFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXJpcHBsZS1lbGVtZW50W19uZ2NvbnRlbnQtJUNPTVAlXXtiYWNrZ3JvdW5kLWNvbG9yOiNmNDQzMzZ9Lm1hdC1zbGlkZS10b2dnbGVbX25nY29udGVudC0lQ09NUCVdOm5vdCgubWF0LWNoZWNrZWQpICAgLm1hdC1yaXBwbGUtZWxlbWVudFtfbmdjb250ZW50LSVDT01QJV17YmFja2dyb3VuZC1jb2xvcjojMDAwfS5tYXQtc2xpZGUtdG9nZ2xlLXRodW1iW19uZ2NvbnRlbnQtJUNPTVAlXXtib3gtc2hhZG93OjBweCAycHggMXB4IC0xcHggcmdiYSgwLCAwLCAwLCAwLjIpLDBweCAxcHggMXB4IDBweCByZ2JhKDAsIDAsIDAsIDAuMTQpLDBweCAxcHggM3B4IDBweCByZ2JhKDAsIDAsIDAsIDAuMTIpO2JhY2tncm91bmQtY29sb3I6I2ZhZmFmYX0ubWF0LXNsaWRlLXRvZ2dsZS1iYXJbX25nY29udGVudC0lQ09NUCVde2JhY2tncm91bmQtY29sb3I6cmdiYSgwLDAsMCwuMzgpfS5tYXQtc2xpZGVyLXRyYWNrLWJhY2tncm91bmRbX25nY29udGVudC0lQ09NUCVde2JhY2tncm91bmQtY29sb3I6cmdiYSgwLDAsMCwuMjYpfS5tYXQtcHJpbWFyeVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXNsaWRlci10cmFjay1maWxsW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1wcmltYXJ5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtc2xpZGVyLXRodW1iW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1wcmltYXJ5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtc2xpZGVyLXRodW1iLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXtiYWNrZ3JvdW5kLWNvbG9yOiNmNTdjMDB9Lm1hdC1wcmltYXJ5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtc2xpZGVyLXRodW1iLWxhYmVsLXRleHRbX25nY29udGVudC0lQ09NUCVde2NvbG9yOiNmZmZ9Lm1hdC1wcmltYXJ5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtc2xpZGVyLWZvY3VzLXJpbmdbX25nY29udGVudC0lQ09NUCVde2JhY2tncm91bmQtY29sb3I6cmdiYSgyNDUsMTI0LDAsLjIpfS5tYXQtYWNjZW50W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtc2xpZGVyLXRyYWNrLWZpbGxbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWFjY2VudFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXNsaWRlci10aHVtYltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtYWNjZW50W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtc2xpZGVyLXRodW1iLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXtiYWNrZ3JvdW5kLWNvbG9yOiNmZjk4MDB9Lm1hdC1hY2NlbnRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1zbGlkZXItdGh1bWItbGFiZWwtdGV4dFtfbmdjb250ZW50LSVDT01QJV17Y29sb3I6I2ZmZn0ubWF0LWFjY2VudFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXNsaWRlci1mb2N1cy1yaW5nW19uZ2NvbnRlbnQtJUNPTVAlXXtiYWNrZ3JvdW5kLWNvbG9yOnJnYmEoMjU1LDE1MiwwLC4yKX0ubWF0LXdhcm5bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1zbGlkZXItdHJhY2stZmlsbFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtd2Fybltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXNsaWRlci10aHVtYltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtd2Fybltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXNsaWRlci10aHVtYi1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17YmFja2dyb3VuZC1jb2xvcjojZjQ0MzM2fS5tYXQtd2Fybltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXNsaWRlci10aHVtYi1sYWJlbC10ZXh0W19uZ2NvbnRlbnQtJUNPTVAlXXtjb2xvcjojZmZmfS5tYXQtd2Fybltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXNsaWRlci1mb2N1cy1yaW5nW19uZ2NvbnRlbnQtJUNPTVAlXXtiYWNrZ3JvdW5kLWNvbG9yOnJnYmEoMjQ0LDY3LDU0LC4yKX0ubWF0LXNsaWRlcltfbmdjb250ZW50LSVDT01QJV06aG92ZXIgICAubWF0LXNsaWRlci10cmFjay1iYWNrZ3JvdW5kW19uZ2NvbnRlbnQtJUNPTVAlXSwgLmNkay1mb2N1c2VkW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtc2xpZGVyLXRyYWNrLWJhY2tncm91bmRbX25nY29udGVudC0lQ09NUCVde2JhY2tncm91bmQtY29sb3I6cmdiYSgwLDAsMCwuMzgpfS5tYXQtc2xpZGVyLWRpc2FibGVkW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtc2xpZGVyLXRyYWNrLWJhY2tncm91bmRbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXNsaWRlci1kaXNhYmxlZFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXNsaWRlci10cmFjay1maWxsW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1zbGlkZXItZGlzYWJsZWRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1zbGlkZXItdGh1bWJbX25nY29udGVudC0lQ09NUCVde2JhY2tncm91bmQtY29sb3I6cmdiYSgwLDAsMCwuMjYpfS5tYXQtc2xpZGVyLWRpc2FibGVkW19uZ2NvbnRlbnQtJUNPTVAlXTpob3ZlciAgIC5tYXQtc2xpZGVyLXRyYWNrLWJhY2tncm91bmRbX25nY29udGVudC0lQ09NUCVde2JhY2tncm91bmQtY29sb3I6cmdiYSgwLDAsMCwuMjYpfS5tYXQtc2xpZGVyLW1pbi12YWx1ZVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXNsaWRlci1mb2N1cy1yaW5nW19uZ2NvbnRlbnQtJUNPTVAlXXtiYWNrZ3JvdW5kLWNvbG9yOnJnYmEoMCwwLDAsLjEyKX0ubWF0LXNsaWRlci1taW4tdmFsdWUubWF0LXNsaWRlci10aHVtYi1sYWJlbC1zaG93aW5nW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtc2xpZGVyLXRodW1iW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1zbGlkZXItbWluLXZhbHVlLm1hdC1zbGlkZXItdGh1bWItbGFiZWwtc2hvd2luZ1tfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXNsaWRlci10aHVtYi1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17YmFja2dyb3VuZC1jb2xvcjpyZ2JhKDAsMCwwLC44Nyl9Lm1hdC1zbGlkZXItbWluLXZhbHVlLm1hdC1zbGlkZXItdGh1bWItbGFiZWwtc2hvd2luZy5jZGstZm9jdXNlZFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXNsaWRlci10aHVtYltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtc2xpZGVyLW1pbi12YWx1ZS5tYXQtc2xpZGVyLXRodW1iLWxhYmVsLXNob3dpbmcuY2RrLWZvY3VzZWRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1zbGlkZXItdGh1bWItbGFiZWxbX25nY29udGVudC0lQ09NUCVde2JhY2tncm91bmQtY29sb3I6cmdiYSgwLDAsMCwuMjYpfS5tYXQtc2xpZGVyLW1pbi12YWx1ZVtfbmdjb250ZW50LSVDT01QJV06bm90KC5tYXQtc2xpZGVyLXRodW1iLWxhYmVsLXNob3dpbmcpICAgLm1hdC1zbGlkZXItdGh1bWJbX25nY29udGVudC0lQ09NUCVde2JvcmRlci1jb2xvcjpyZ2JhKDAsMCwwLC4yNik7YmFja2dyb3VuZC1jb2xvcjp0cmFuc3BhcmVudH0ubWF0LXNsaWRlci1taW4tdmFsdWVbX25nY29udGVudC0lQ09NUCVdOm5vdCgubWF0LXNsaWRlci10aHVtYi1sYWJlbC1zaG93aW5nKTpob3ZlciAgIC5tYXQtc2xpZGVyLXRodW1iW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1zbGlkZXItbWluLXZhbHVlW19uZ2NvbnRlbnQtJUNPTVAlXTpub3QoLm1hdC1zbGlkZXItdGh1bWItbGFiZWwtc2hvd2luZykuY2RrLWZvY3VzZWQgICAubWF0LXNsaWRlci10aHVtYltfbmdjb250ZW50LSVDT01QJV17Ym9yZGVyLWNvbG9yOnJnYmEoMCwwLDAsLjM4KX0ubWF0LXNsaWRlci1taW4tdmFsdWVbX25nY29udGVudC0lQ09NUCVdOm5vdCgubWF0LXNsaWRlci10aHVtYi1sYWJlbC1zaG93aW5nKTpob3Zlci5tYXQtc2xpZGVyLWRpc2FibGVkICAgLm1hdC1zbGlkZXItdGh1bWJbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXNsaWRlci1taW4tdmFsdWVbX25nY29udGVudC0lQ09NUCVdOm5vdCgubWF0LXNsaWRlci10aHVtYi1sYWJlbC1zaG93aW5nKS5jZGstZm9jdXNlZC5tYXQtc2xpZGVyLWRpc2FibGVkICAgLm1hdC1zbGlkZXItdGh1bWJbX25nY29udGVudC0lQ09NUCVde2JvcmRlci1jb2xvcjpyZ2JhKDAsMCwwLC4yNil9Lm1hdC1zbGlkZXItaGFzLXRpY2tzW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtc2xpZGVyLXdyYXBwZXJbX25nY29udGVudC0lQ09NUCVdOjphZnRlcntib3JkZXItY29sb3I6cmdiYSgwLDAsMCwuNyl9Lm1hdC1zbGlkZXItaG9yaXpvbnRhbFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXNsaWRlci10aWNrc1tfbmdjb250ZW50LSVDT01QJV17YmFja2dyb3VuZC1pbWFnZTpyZXBlYXRpbmctbGluZWFyLWdyYWRpZW50KHRvIHJpZ2h0LCByZ2JhKDAsIDAsIDAsIDAuNyksIHJnYmEoMCwgMCwgMCwgMC43KSAycHgsIHRyYW5zcGFyZW50IDAsIHRyYW5zcGFyZW50KTtiYWNrZ3JvdW5kLWltYWdlOi1tb3otcmVwZWF0aW5nLWxpbmVhci1ncmFkaWVudCgwLjAwMDFkZWcsIHJnYmEoMCwgMCwgMCwgMC43KSwgcmdiYSgwLCAwLCAwLCAwLjcpIDJweCwgdHJhbnNwYXJlbnQgMCwgdHJhbnNwYXJlbnQpfS5tYXQtc2xpZGVyLXZlcnRpY2FsW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtc2xpZGVyLXRpY2tzW19uZ2NvbnRlbnQtJUNPTVAlXXtiYWNrZ3JvdW5kLWltYWdlOnJlcGVhdGluZy1saW5lYXItZ3JhZGllbnQodG8gYm90dG9tLCByZ2JhKDAsIDAsIDAsIDAuNyksIHJnYmEoMCwgMCwgMCwgMC43KSAycHgsIHRyYW5zcGFyZW50IDAsIHRyYW5zcGFyZW50KX0ubWF0LXN0ZXAtaGVhZGVyLmNkay1rZXlib2FyZC1mb2N1c2VkW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1zdGVwLWhlYWRlci5jZGstcHJvZ3JhbS1mb2N1c2VkW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1zdGVwLWhlYWRlcltfbmdjb250ZW50LSVDT01QJV06aG92ZXJ7YmFja2dyb3VuZC1jb2xvcjpyZ2JhKDAsMCwwLC4wNCl9QG1lZGlhKGhvdmVyOiBub25lKXsubWF0LXN0ZXAtaGVhZGVyW19uZ2NvbnRlbnQtJUNPTVAlXTpob3ZlcntiYWNrZ3JvdW5kOm5vbmV9fS5tYXQtc3RlcC1oZWFkZXJbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1zdGVwLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1zdGVwLWhlYWRlcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXN0ZXAtb3B0aW9uYWxbX25nY29udGVudC0lQ09NUCVde2NvbG9yOiM2MTYxNjF9Lm1hdC1zdGVwLWhlYWRlcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXN0ZXAtaWNvbltfbmdjb250ZW50LSVDT01QJV17YmFja2dyb3VuZC1jb2xvcjojNjE2MTYxO2NvbG9yOiNmZmZ9Lm1hdC1zdGVwLWhlYWRlcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXN0ZXAtaWNvbi1zZWxlY3RlZFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtc3RlcC1oZWFkZXJbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1zdGVwLWljb24tc3RhdGUtZG9uZVtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtc3RlcC1oZWFkZXJbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1zdGVwLWljb24tc3RhdGUtZWRpdFtfbmdjb250ZW50LSVDT01QJV17YmFja2dyb3VuZC1jb2xvcjojZjU3YzAwO2NvbG9yOiNmZmZ9Lm1hdC1zdGVwLWhlYWRlcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXN0ZXAtaWNvbi1zdGF0ZS1lcnJvcltfbmdjb250ZW50LSVDT01QJV17YmFja2dyb3VuZC1jb2xvcjp0cmFuc3BhcmVudDtjb2xvcjojZjQ0MzM2fS5tYXQtc3RlcC1oZWFkZXJbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1zdGVwLWxhYmVsLm1hdC1zdGVwLWxhYmVsLWFjdGl2ZVtfbmdjb250ZW50LSVDT01QJV17Y29sb3I6IzIxMjEyMX0ubWF0LXN0ZXAtaGVhZGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtc3RlcC1sYWJlbC5tYXQtc3RlcC1sYWJlbC1lcnJvcltfbmdjb250ZW50LSVDT01QJV17Y29sb3I6I2Y0NDMzNn0ubWF0LXN0ZXBwZXItaG9yaXpvbnRhbFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtc3RlcHBlci12ZXJ0aWNhbFtfbmdjb250ZW50LSVDT01QJV17YmFja2dyb3VuZC1jb2xvcjojZmZmfS5tYXQtc3RlcHBlci12ZXJ0aWNhbC1saW5lW19uZ2NvbnRlbnQtJUNPTVAlXTo6YmVmb3Jle2JvcmRlci1sZWZ0LWNvbG9yOnJnYmEoMCwwLDAsLjEyKX0ubWF0LWhvcml6b250YWwtc3RlcHBlci1oZWFkZXJbX25nY29udGVudC0lQ09NUCVdOjpiZWZvcmUsIC5tYXQtaG9yaXpvbnRhbC1zdGVwcGVyLWhlYWRlcltfbmdjb250ZW50LSVDT01QJV06OmFmdGVyLCAubWF0LXN0ZXBwZXItaG9yaXpvbnRhbC1saW5lW19uZ2NvbnRlbnQtJUNPTVAlXXtib3JkZXItdG9wLWNvbG9yOnJnYmEoMCwwLDAsLjEyKX0ubWF0LWhvcml6b250YWwtc3RlcHBlci1oZWFkZXJbX25nY29udGVudC0lQ09NUCVde2hlaWdodDo3MnB4fS5tYXQtc3RlcHBlci1sYWJlbC1wb3NpdGlvbi1ib3R0b21bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1ob3Jpem9udGFsLXN0ZXBwZXItaGVhZGVyW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC12ZXJ0aWNhbC1zdGVwcGVyLWhlYWRlcltfbmdjb250ZW50LSVDT01QJV17cGFkZGluZzoyNHB4IDI0cHh9Lm1hdC1zdGVwcGVyLXZlcnRpY2FsLWxpbmVbX25nY29udGVudC0lQ09NUCVdOjpiZWZvcmV7dG9wOi0xNnB4O2JvdHRvbTotMTZweH0ubWF0LXN0ZXBwZXItbGFiZWwtcG9zaXRpb24tYm90dG9tW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaG9yaXpvbnRhbC1zdGVwcGVyLWhlYWRlcltfbmdjb250ZW50LSVDT01QJV06OmFmdGVyLCAubWF0LXN0ZXBwZXItbGFiZWwtcG9zaXRpb24tYm90dG9tW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaG9yaXpvbnRhbC1zdGVwcGVyLWhlYWRlcltfbmdjb250ZW50LSVDT01QJV06OmJlZm9yZXt0b3A6MzZweH0ubWF0LXN0ZXBwZXItbGFiZWwtcG9zaXRpb24tYm90dG9tW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtc3RlcHBlci1ob3Jpem9udGFsLWxpbmVbX25nY29udGVudC0lQ09NUCVde3RvcDozNnB4fS5tYXQtc29ydC1oZWFkZXItYXJyb3dbX25nY29udGVudC0lQ09NUCVde2NvbG9yOiM2MTYxNjF9Lm1hdC10YWItbmF2LWJhcltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdGFiLWhlYWRlcltfbmdjb250ZW50LSVDT01QJV17Ym9yZGVyLWJvdHRvbToxcHggc29saWQgcmdiYSgwLDAsMCwuMTIpfS5tYXQtdGFiLWdyb3VwLWludmVydGVkLWhlYWRlcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXRhYi1uYXYtYmFyW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10YWItZ3JvdXAtaW52ZXJ0ZWQtaGVhZGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtdGFiLWhlYWRlcltfbmdjb250ZW50LSVDT01QJV17Ym9yZGVyLXRvcDoxcHggc29saWQgcmdiYSgwLDAsMCwuMTIpO2JvcmRlci1ib3R0b206bm9uZX0ubWF0LXRhYi1sYWJlbFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdGFiLWxpbmtbX25nY29udGVudC0lQ09NUCVde2NvbG9yOiMyMTIxMjF9Lm1hdC10YWItbGFiZWwubWF0LXRhYi1kaXNhYmxlZFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdGFiLWxpbmsubWF0LXRhYi1kaXNhYmxlZFtfbmdjb250ZW50LSVDT01QJV17Y29sb3I6Izc1NzU3NX0ubWF0LXRhYi1oZWFkZXItcGFnaW5hdGlvbi1jaGV2cm9uW19uZ2NvbnRlbnQtJUNPTVAlXXtib3JkZXItY29sb3I6IzIxMjEyMX0ubWF0LXRhYi1oZWFkZXItcGFnaW5hdGlvbi1kaXNhYmxlZFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXRhYi1oZWFkZXItcGFnaW5hdGlvbi1jaGV2cm9uW19uZ2NvbnRlbnQtJUNPTVAlXXtib3JkZXItY29sb3I6Izc1NzU3NX0ubWF0LXRhYi1ncm91cFtjbGFzcyo9bWF0LWJhY2tncm91bmQtXVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXRhYi1oZWFkZXJbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXRhYi1uYXYtYmFyW2NsYXNzKj1tYXQtYmFja2dyb3VuZC1dW19uZ2NvbnRlbnQtJUNPTVAlXXtib3JkZXItYm90dG9tOm5vbmU7Ym9yZGVyLXRvcDpub25lfS5tYXQtdGFiLWdyb3VwLm1hdC1wcmltYXJ5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtdGFiLWxhYmVsLmNkay1rZXlib2FyZC1mb2N1c2VkW19uZ2NvbnRlbnQtJUNPTVAlXTpub3QoLm1hdC10YWItZGlzYWJsZWQpLCAubWF0LXRhYi1ncm91cC5tYXQtcHJpbWFyeVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXRhYi1sYWJlbC5jZGstcHJvZ3JhbS1mb2N1c2VkW19uZ2NvbnRlbnQtJUNPTVAlXTpub3QoLm1hdC10YWItZGlzYWJsZWQpLCAubWF0LXRhYi1ncm91cC5tYXQtcHJpbWFyeVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXRhYi1saW5rLmNkay1rZXlib2FyZC1mb2N1c2VkW19uZ2NvbnRlbnQtJUNPTVAlXTpub3QoLm1hdC10YWItZGlzYWJsZWQpLCAubWF0LXRhYi1ncm91cC5tYXQtcHJpbWFyeVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXRhYi1saW5rLmNkay1wcm9ncmFtLWZvY3VzZWRbX25nY29udGVudC0lQ09NUCVdOm5vdCgubWF0LXRhYi1kaXNhYmxlZCksIC5tYXQtdGFiLW5hdi1iYXIubWF0LXByaW1hcnlbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC10YWItbGFiZWwuY2RrLWtleWJvYXJkLWZvY3VzZWRbX25nY29udGVudC0lQ09NUCVdOm5vdCgubWF0LXRhYi1kaXNhYmxlZCksIC5tYXQtdGFiLW5hdi1iYXIubWF0LXByaW1hcnlbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC10YWItbGFiZWwuY2RrLXByb2dyYW0tZm9jdXNlZFtfbmdjb250ZW50LSVDT01QJV06bm90KC5tYXQtdGFiLWRpc2FibGVkKSwgLm1hdC10YWItbmF2LWJhci5tYXQtcHJpbWFyeVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXRhYi1saW5rLmNkay1rZXlib2FyZC1mb2N1c2VkW19uZ2NvbnRlbnQtJUNPTVAlXTpub3QoLm1hdC10YWItZGlzYWJsZWQpLCAubWF0LXRhYi1uYXYtYmFyLm1hdC1wcmltYXJ5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtdGFiLWxpbmsuY2RrLXByb2dyYW0tZm9jdXNlZFtfbmdjb250ZW50LSVDT01QJV06bm90KC5tYXQtdGFiLWRpc2FibGVkKXtiYWNrZ3JvdW5kLWNvbG9yOnJnYmEoMjU1LDE1MiwwLC4zKX0ubWF0LXRhYi1ncm91cC5tYXQtcHJpbWFyeVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWluay1iYXJbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXRhYi1uYXYtYmFyLm1hdC1wcmltYXJ5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaW5rLWJhcltfbmdjb250ZW50LSVDT01QJV17YmFja2dyb3VuZC1jb2xvcjojZjU3YzAwfS5tYXQtdGFiLWdyb3VwLm1hdC1wcmltYXJ5Lm1hdC1iYWNrZ3JvdW5kLXByaW1hcnlbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pbmstYmFyW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10YWItbmF2LWJhci5tYXQtcHJpbWFyeS5tYXQtYmFja2dyb3VuZC1wcmltYXJ5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaW5rLWJhcltfbmdjb250ZW50LSVDT01QJV17YmFja2dyb3VuZC1jb2xvcjojZmZmfS5tYXQtdGFiLWdyb3VwLm1hdC1hY2NlbnRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC10YWItbGFiZWwuY2RrLWtleWJvYXJkLWZvY3VzZWRbX25nY29udGVudC0lQ09NUCVdOm5vdCgubWF0LXRhYi1kaXNhYmxlZCksIC5tYXQtdGFiLWdyb3VwLm1hdC1hY2NlbnRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC10YWItbGFiZWwuY2RrLXByb2dyYW0tZm9jdXNlZFtfbmdjb250ZW50LSVDT01QJV06bm90KC5tYXQtdGFiLWRpc2FibGVkKSwgLm1hdC10YWItZ3JvdXAubWF0LWFjY2VudFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXRhYi1saW5rLmNkay1rZXlib2FyZC1mb2N1c2VkW19uZ2NvbnRlbnQtJUNPTVAlXTpub3QoLm1hdC10YWItZGlzYWJsZWQpLCAubWF0LXRhYi1ncm91cC5tYXQtYWNjZW50W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtdGFiLWxpbmsuY2RrLXByb2dyYW0tZm9jdXNlZFtfbmdjb250ZW50LSVDT01QJV06bm90KC5tYXQtdGFiLWRpc2FibGVkKSwgLm1hdC10YWItbmF2LWJhci5tYXQtYWNjZW50W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtdGFiLWxhYmVsLmNkay1rZXlib2FyZC1mb2N1c2VkW19uZ2NvbnRlbnQtJUNPTVAlXTpub3QoLm1hdC10YWItZGlzYWJsZWQpLCAubWF0LXRhYi1uYXYtYmFyLm1hdC1hY2NlbnRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC10YWItbGFiZWwuY2RrLXByb2dyYW0tZm9jdXNlZFtfbmdjb250ZW50LSVDT01QJV06bm90KC5tYXQtdGFiLWRpc2FibGVkKSwgLm1hdC10YWItbmF2LWJhci5tYXQtYWNjZW50W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtdGFiLWxpbmsuY2RrLWtleWJvYXJkLWZvY3VzZWRbX25nY29udGVudC0lQ09NUCVdOm5vdCgubWF0LXRhYi1kaXNhYmxlZCksIC5tYXQtdGFiLW5hdi1iYXIubWF0LWFjY2VudFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXRhYi1saW5rLmNkay1wcm9ncmFtLWZvY3VzZWRbX25nY29udGVudC0lQ09NUCVdOm5vdCgubWF0LXRhYi1kaXNhYmxlZCl7YmFja2dyb3VuZC1jb2xvcjpyZ2JhKDI1NSwxNTIsMCwuMyl9Lm1hdC10YWItZ3JvdXAubWF0LWFjY2VudFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWluay1iYXJbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXRhYi1uYXYtYmFyLm1hdC1hY2NlbnRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pbmstYmFyW19uZ2NvbnRlbnQtJUNPTVAlXXtiYWNrZ3JvdW5kLWNvbG9yOiNmZjk4MDB9Lm1hdC10YWItZ3JvdXAubWF0LWFjY2VudC5tYXQtYmFja2dyb3VuZC1hY2NlbnRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pbmstYmFyW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10YWItbmF2LWJhci5tYXQtYWNjZW50Lm1hdC1iYWNrZ3JvdW5kLWFjY2VudFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWluay1iYXJbX25nY29udGVudC0lQ09NUCVde2JhY2tncm91bmQtY29sb3I6I2ZmZn0ubWF0LXRhYi1ncm91cC5tYXQtd2Fybltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXRhYi1sYWJlbC5jZGsta2V5Ym9hcmQtZm9jdXNlZFtfbmdjb250ZW50LSVDT01QJV06bm90KC5tYXQtdGFiLWRpc2FibGVkKSwgLm1hdC10YWItZ3JvdXAubWF0LXdhcm5bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC10YWItbGFiZWwuY2RrLXByb2dyYW0tZm9jdXNlZFtfbmdjb250ZW50LSVDT01QJV06bm90KC5tYXQtdGFiLWRpc2FibGVkKSwgLm1hdC10YWItZ3JvdXAubWF0LXdhcm5bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC10YWItbGluay5jZGsta2V5Ym9hcmQtZm9jdXNlZFtfbmdjb250ZW50LSVDT01QJV06bm90KC5tYXQtdGFiLWRpc2FibGVkKSwgLm1hdC10YWItZ3JvdXAubWF0LXdhcm5bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC10YWItbGluay5jZGstcHJvZ3JhbS1mb2N1c2VkW19uZ2NvbnRlbnQtJUNPTVAlXTpub3QoLm1hdC10YWItZGlzYWJsZWQpLCAubWF0LXRhYi1uYXYtYmFyLm1hdC13YXJuW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtdGFiLWxhYmVsLmNkay1rZXlib2FyZC1mb2N1c2VkW19uZ2NvbnRlbnQtJUNPTVAlXTpub3QoLm1hdC10YWItZGlzYWJsZWQpLCAubWF0LXRhYi1uYXYtYmFyLm1hdC13YXJuW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtdGFiLWxhYmVsLmNkay1wcm9ncmFtLWZvY3VzZWRbX25nY29udGVudC0lQ09NUCVdOm5vdCgubWF0LXRhYi1kaXNhYmxlZCksIC5tYXQtdGFiLW5hdi1iYXIubWF0LXdhcm5bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC10YWItbGluay5jZGsta2V5Ym9hcmQtZm9jdXNlZFtfbmdjb250ZW50LSVDT01QJV06bm90KC5tYXQtdGFiLWRpc2FibGVkKSwgLm1hdC10YWItbmF2LWJhci5tYXQtd2Fybltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXRhYi1saW5rLmNkay1wcm9ncmFtLWZvY3VzZWRbX25nY29udGVudC0lQ09NUCVdOm5vdCgubWF0LXRhYi1kaXNhYmxlZCl7YmFja2dyb3VuZC1jb2xvcjpyZ2JhKDI1NSwyMDUsMjEwLC4zKX0ubWF0LXRhYi1ncm91cC5tYXQtd2Fybltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWluay1iYXJbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXRhYi1uYXYtYmFyLm1hdC13YXJuW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaW5rLWJhcltfbmdjb250ZW50LSVDT01QJV17YmFja2dyb3VuZC1jb2xvcjojZjQ0MzM2fS5tYXQtdGFiLWdyb3VwLm1hdC13YXJuLm1hdC1iYWNrZ3JvdW5kLXdhcm5bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pbmstYmFyW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10YWItbmF2LWJhci5tYXQtd2Fybi5tYXQtYmFja2dyb3VuZC13YXJuW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaW5rLWJhcltfbmdjb250ZW50LSVDT01QJV17YmFja2dyb3VuZC1jb2xvcjojZmZmfS5tYXQtdGFiLWdyb3VwLm1hdC1iYWNrZ3JvdW5kLXByaW1hcnlbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC10YWItbGFiZWwuY2RrLWtleWJvYXJkLWZvY3VzZWRbX25nY29udGVudC0lQ09NUCVdOm5vdCgubWF0LXRhYi1kaXNhYmxlZCksIC5tYXQtdGFiLWdyb3VwLm1hdC1iYWNrZ3JvdW5kLXByaW1hcnlbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC10YWItbGFiZWwuY2RrLXByb2dyYW0tZm9jdXNlZFtfbmdjb250ZW50LSVDT01QJV06bm90KC5tYXQtdGFiLWRpc2FibGVkKSwgLm1hdC10YWItZ3JvdXAubWF0LWJhY2tncm91bmQtcHJpbWFyeVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXRhYi1saW5rLmNkay1rZXlib2FyZC1mb2N1c2VkW19uZ2NvbnRlbnQtJUNPTVAlXTpub3QoLm1hdC10YWItZGlzYWJsZWQpLCAubWF0LXRhYi1ncm91cC5tYXQtYmFja2dyb3VuZC1wcmltYXJ5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtdGFiLWxpbmsuY2RrLXByb2dyYW0tZm9jdXNlZFtfbmdjb250ZW50LSVDT01QJV06bm90KC5tYXQtdGFiLWRpc2FibGVkKSwgLm1hdC10YWItbmF2LWJhci5tYXQtYmFja2dyb3VuZC1wcmltYXJ5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtdGFiLWxhYmVsLmNkay1rZXlib2FyZC1mb2N1c2VkW19uZ2NvbnRlbnQtJUNPTVAlXTpub3QoLm1hdC10YWItZGlzYWJsZWQpLCAubWF0LXRhYi1uYXYtYmFyLm1hdC1iYWNrZ3JvdW5kLXByaW1hcnlbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC10YWItbGFiZWwuY2RrLXByb2dyYW0tZm9jdXNlZFtfbmdjb250ZW50LSVDT01QJV06bm90KC5tYXQtdGFiLWRpc2FibGVkKSwgLm1hdC10YWItbmF2LWJhci5tYXQtYmFja2dyb3VuZC1wcmltYXJ5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtdGFiLWxpbmsuY2RrLWtleWJvYXJkLWZvY3VzZWRbX25nY29udGVudC0lQ09NUCVdOm5vdCgubWF0LXRhYi1kaXNhYmxlZCksIC5tYXQtdGFiLW5hdi1iYXIubWF0LWJhY2tncm91bmQtcHJpbWFyeVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXRhYi1saW5rLmNkay1wcm9ncmFtLWZvY3VzZWRbX25nY29udGVudC0lQ09NUCVdOm5vdCgubWF0LXRhYi1kaXNhYmxlZCl7YmFja2dyb3VuZC1jb2xvcjpyZ2JhKDI1NSwxNTIsMCwuMyl9Lm1hdC10YWItZ3JvdXAubWF0LWJhY2tncm91bmQtcHJpbWFyeVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXRhYi1oZWFkZXJbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXRhYi1ncm91cC5tYXQtYmFja2dyb3VuZC1wcmltYXJ5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtdGFiLWxpbmtzW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10YWItZ3JvdXAubWF0LWJhY2tncm91bmQtcHJpbWFyeVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXRhYi1oZWFkZXItcGFnaW5hdGlvbltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdGFiLW5hdi1iYXIubWF0LWJhY2tncm91bmQtcHJpbWFyeVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXRhYi1oZWFkZXJbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXRhYi1uYXYtYmFyLm1hdC1iYWNrZ3JvdW5kLXByaW1hcnlbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC10YWItbGlua3NbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXRhYi1uYXYtYmFyLm1hdC1iYWNrZ3JvdW5kLXByaW1hcnlbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC10YWItaGVhZGVyLXBhZ2luYXRpb25bX25nY29udGVudC0lQ09NUCVde2JhY2tncm91bmQtY29sb3I6I2Y1N2MwMH0ubWF0LXRhYi1ncm91cC5tYXQtYmFja2dyb3VuZC1wcmltYXJ5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtdGFiLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10YWItZ3JvdXAubWF0LWJhY2tncm91bmQtcHJpbWFyeVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXRhYi1saW5rW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10YWItbmF2LWJhci5tYXQtYmFja2dyb3VuZC1wcmltYXJ5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtdGFiLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10YWItbmF2LWJhci5tYXQtYmFja2dyb3VuZC1wcmltYXJ5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtdGFiLWxpbmtbX25nY29udGVudC0lQ09NUCVde2NvbG9yOiNmZmZ9Lm1hdC10YWItZ3JvdXAubWF0LWJhY2tncm91bmQtcHJpbWFyeVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXRhYi1sYWJlbC5tYXQtdGFiLWRpc2FibGVkW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10YWItZ3JvdXAubWF0LWJhY2tncm91bmQtcHJpbWFyeVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXRhYi1saW5rLm1hdC10YWItZGlzYWJsZWRbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXRhYi1uYXYtYmFyLm1hdC1iYWNrZ3JvdW5kLXByaW1hcnlbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC10YWItbGFiZWwubWF0LXRhYi1kaXNhYmxlZFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdGFiLW5hdi1iYXIubWF0LWJhY2tncm91bmQtcHJpbWFyeVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXRhYi1saW5rLm1hdC10YWItZGlzYWJsZWRbX25nY29udGVudC0lQ09NUCVde2NvbG9yOnJnYmEoMjU1LDI1NSwyNTUsLjQpfS5tYXQtdGFiLWdyb3VwLm1hdC1iYWNrZ3JvdW5kLXByaW1hcnlbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC10YWItaGVhZGVyLXBhZ2luYXRpb24tY2hldnJvbltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdGFiLW5hdi1iYXIubWF0LWJhY2tncm91bmQtcHJpbWFyeVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXRhYi1oZWFkZXItcGFnaW5hdGlvbi1jaGV2cm9uW19uZ2NvbnRlbnQtJUNPTVAlXXtib3JkZXItY29sb3I6I2ZmZn0ubWF0LXRhYi1ncm91cC5tYXQtYmFja2dyb3VuZC1wcmltYXJ5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtdGFiLWhlYWRlci1wYWdpbmF0aW9uLWRpc2FibGVkW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtdGFiLWhlYWRlci1wYWdpbmF0aW9uLWNoZXZyb25bX25nY29udGVudC0lQ09NUCVdLCAubWF0LXRhYi1uYXYtYmFyLm1hdC1iYWNrZ3JvdW5kLXByaW1hcnlbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC10YWItaGVhZGVyLXBhZ2luYXRpb24tZGlzYWJsZWRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC10YWItaGVhZGVyLXBhZ2luYXRpb24tY2hldnJvbltfbmdjb250ZW50LSVDT01QJV17Ym9yZGVyLWNvbG9yOnJnYmEoMjU1LDI1NSwyNTUsLjQpfS5tYXQtdGFiLWdyb3VwLm1hdC1iYWNrZ3JvdW5kLXByaW1hcnlbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1yaXBwbGUtZWxlbWVudFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdGFiLW5hdi1iYXIubWF0LWJhY2tncm91bmQtcHJpbWFyeVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXJpcHBsZS1lbGVtZW50W19uZ2NvbnRlbnQtJUNPTVAlXXtiYWNrZ3JvdW5kLWNvbG9yOnJnYmEoMjU1LDI1NSwyNTUsLjEyKX0ubWF0LXRhYi1ncm91cC5tYXQtYmFja2dyb3VuZC1hY2NlbnRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC10YWItbGFiZWwuY2RrLWtleWJvYXJkLWZvY3VzZWRbX25nY29udGVudC0lQ09NUCVdOm5vdCgubWF0LXRhYi1kaXNhYmxlZCksIC5tYXQtdGFiLWdyb3VwLm1hdC1iYWNrZ3JvdW5kLWFjY2VudFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXRhYi1sYWJlbC5jZGstcHJvZ3JhbS1mb2N1c2VkW19uZ2NvbnRlbnQtJUNPTVAlXTpub3QoLm1hdC10YWItZGlzYWJsZWQpLCAubWF0LXRhYi1ncm91cC5tYXQtYmFja2dyb3VuZC1hY2NlbnRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC10YWItbGluay5jZGsta2V5Ym9hcmQtZm9jdXNlZFtfbmdjb250ZW50LSVDT01QJV06bm90KC5tYXQtdGFiLWRpc2FibGVkKSwgLm1hdC10YWItZ3JvdXAubWF0LWJhY2tncm91bmQtYWNjZW50W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtdGFiLWxpbmsuY2RrLXByb2dyYW0tZm9jdXNlZFtfbmdjb250ZW50LSVDT01QJV06bm90KC5tYXQtdGFiLWRpc2FibGVkKSwgLm1hdC10YWItbmF2LWJhci5tYXQtYmFja2dyb3VuZC1hY2NlbnRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC10YWItbGFiZWwuY2RrLWtleWJvYXJkLWZvY3VzZWRbX25nY29udGVudC0lQ09NUCVdOm5vdCgubWF0LXRhYi1kaXNhYmxlZCksIC5tYXQtdGFiLW5hdi1iYXIubWF0LWJhY2tncm91bmQtYWNjZW50W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtdGFiLWxhYmVsLmNkay1wcm9ncmFtLWZvY3VzZWRbX25nY29udGVudC0lQ09NUCVdOm5vdCgubWF0LXRhYi1kaXNhYmxlZCksIC5tYXQtdGFiLW5hdi1iYXIubWF0LWJhY2tncm91bmQtYWNjZW50W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtdGFiLWxpbmsuY2RrLWtleWJvYXJkLWZvY3VzZWRbX25nY29udGVudC0lQ09NUCVdOm5vdCgubWF0LXRhYi1kaXNhYmxlZCksIC5tYXQtdGFiLW5hdi1iYXIubWF0LWJhY2tncm91bmQtYWNjZW50W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtdGFiLWxpbmsuY2RrLXByb2dyYW0tZm9jdXNlZFtfbmdjb250ZW50LSVDT01QJV06bm90KC5tYXQtdGFiLWRpc2FibGVkKXtiYWNrZ3JvdW5kLWNvbG9yOnJnYmEoMjU1LDE1MiwwLC4zKX0ubWF0LXRhYi1ncm91cC5tYXQtYmFja2dyb3VuZC1hY2NlbnRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC10YWItaGVhZGVyW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10YWItZ3JvdXAubWF0LWJhY2tncm91bmQtYWNjZW50W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtdGFiLWxpbmtzW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10YWItZ3JvdXAubWF0LWJhY2tncm91bmQtYWNjZW50W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtdGFiLWhlYWRlci1wYWdpbmF0aW9uW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10YWItbmF2LWJhci5tYXQtYmFja2dyb3VuZC1hY2NlbnRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC10YWItaGVhZGVyW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10YWItbmF2LWJhci5tYXQtYmFja2dyb3VuZC1hY2NlbnRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC10YWItbGlua3NbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXRhYi1uYXYtYmFyLm1hdC1iYWNrZ3JvdW5kLWFjY2VudFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXRhYi1oZWFkZXItcGFnaW5hdGlvbltfbmdjb250ZW50LSVDT01QJV17YmFja2dyb3VuZC1jb2xvcjojZmY5ODAwfS5tYXQtdGFiLWdyb3VwLm1hdC1iYWNrZ3JvdW5kLWFjY2VudFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXRhYi1sYWJlbFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdGFiLWdyb3VwLm1hdC1iYWNrZ3JvdW5kLWFjY2VudFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXRhYi1saW5rW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10YWItbmF2LWJhci5tYXQtYmFja2dyb3VuZC1hY2NlbnRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC10YWItbGFiZWxbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXRhYi1uYXYtYmFyLm1hdC1iYWNrZ3JvdW5kLWFjY2VudFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXRhYi1saW5rW19uZ2NvbnRlbnQtJUNPTVAlXXtjb2xvcjojZmZmfS5tYXQtdGFiLWdyb3VwLm1hdC1iYWNrZ3JvdW5kLWFjY2VudFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXRhYi1sYWJlbC5tYXQtdGFiLWRpc2FibGVkW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10YWItZ3JvdXAubWF0LWJhY2tncm91bmQtYWNjZW50W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtdGFiLWxpbmsubWF0LXRhYi1kaXNhYmxlZFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdGFiLW5hdi1iYXIubWF0LWJhY2tncm91bmQtYWNjZW50W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtdGFiLWxhYmVsLm1hdC10YWItZGlzYWJsZWRbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXRhYi1uYXYtYmFyLm1hdC1iYWNrZ3JvdW5kLWFjY2VudFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXRhYi1saW5rLm1hdC10YWItZGlzYWJsZWRbX25nY29udGVudC0lQ09NUCVde2NvbG9yOnJnYmEoMjU1LDI1NSwyNTUsLjQpfS5tYXQtdGFiLWdyb3VwLm1hdC1iYWNrZ3JvdW5kLWFjY2VudFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXRhYi1oZWFkZXItcGFnaW5hdGlvbi1jaGV2cm9uW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10YWItbmF2LWJhci5tYXQtYmFja2dyb3VuZC1hY2NlbnRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC10YWItaGVhZGVyLXBhZ2luYXRpb24tY2hldnJvbltfbmdjb250ZW50LSVDT01QJV17Ym9yZGVyLWNvbG9yOiNmZmZ9Lm1hdC10YWItZ3JvdXAubWF0LWJhY2tncm91bmQtYWNjZW50W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtdGFiLWhlYWRlci1wYWdpbmF0aW9uLWRpc2FibGVkW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtdGFiLWhlYWRlci1wYWdpbmF0aW9uLWNoZXZyb25bX25nY29udGVudC0lQ09NUCVdLCAubWF0LXRhYi1uYXYtYmFyLm1hdC1iYWNrZ3JvdW5kLWFjY2VudFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXRhYi1oZWFkZXItcGFnaW5hdGlvbi1kaXNhYmxlZFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXRhYi1oZWFkZXItcGFnaW5hdGlvbi1jaGV2cm9uW19uZ2NvbnRlbnQtJUNPTVAlXXtib3JkZXItY29sb3I6cmdiYSgyNTUsMjU1LDI1NSwuNCl9Lm1hdC10YWItZ3JvdXAubWF0LWJhY2tncm91bmQtYWNjZW50W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtcmlwcGxlLWVsZW1lbnRbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXRhYi1uYXYtYmFyLm1hdC1iYWNrZ3JvdW5kLWFjY2VudFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXJpcHBsZS1lbGVtZW50W19uZ2NvbnRlbnQtJUNPTVAlXXtiYWNrZ3JvdW5kLWNvbG9yOnJnYmEoMjU1LDI1NSwyNTUsLjEyKX0ubWF0LXRhYi1ncm91cC5tYXQtYmFja2dyb3VuZC13YXJuW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtdGFiLWxhYmVsLmNkay1rZXlib2FyZC1mb2N1c2VkW19uZ2NvbnRlbnQtJUNPTVAlXTpub3QoLm1hdC10YWItZGlzYWJsZWQpLCAubWF0LXRhYi1ncm91cC5tYXQtYmFja2dyb3VuZC13YXJuW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtdGFiLWxhYmVsLmNkay1wcm9ncmFtLWZvY3VzZWRbX25nY29udGVudC0lQ09NUCVdOm5vdCgubWF0LXRhYi1kaXNhYmxlZCksIC5tYXQtdGFiLWdyb3VwLm1hdC1iYWNrZ3JvdW5kLXdhcm5bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC10YWItbGluay5jZGsta2V5Ym9hcmQtZm9jdXNlZFtfbmdjb250ZW50LSVDT01QJV06bm90KC5tYXQtdGFiLWRpc2FibGVkKSwgLm1hdC10YWItZ3JvdXAubWF0LWJhY2tncm91bmQtd2Fybltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXRhYi1saW5rLmNkay1wcm9ncmFtLWZvY3VzZWRbX25nY29udGVudC0lQ09NUCVdOm5vdCgubWF0LXRhYi1kaXNhYmxlZCksIC5tYXQtdGFiLW5hdi1iYXIubWF0LWJhY2tncm91bmQtd2Fybltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXRhYi1sYWJlbC5jZGsta2V5Ym9hcmQtZm9jdXNlZFtfbmdjb250ZW50LSVDT01QJV06bm90KC5tYXQtdGFiLWRpc2FibGVkKSwgLm1hdC10YWItbmF2LWJhci5tYXQtYmFja2dyb3VuZC13YXJuW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtdGFiLWxhYmVsLmNkay1wcm9ncmFtLWZvY3VzZWRbX25nY29udGVudC0lQ09NUCVdOm5vdCgubWF0LXRhYi1kaXNhYmxlZCksIC5tYXQtdGFiLW5hdi1iYXIubWF0LWJhY2tncm91bmQtd2Fybltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXRhYi1saW5rLmNkay1rZXlib2FyZC1mb2N1c2VkW19uZ2NvbnRlbnQtJUNPTVAlXTpub3QoLm1hdC10YWItZGlzYWJsZWQpLCAubWF0LXRhYi1uYXYtYmFyLm1hdC1iYWNrZ3JvdW5kLXdhcm5bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC10YWItbGluay5jZGstcHJvZ3JhbS1mb2N1c2VkW19uZ2NvbnRlbnQtJUNPTVAlXTpub3QoLm1hdC10YWItZGlzYWJsZWQpe2JhY2tncm91bmQtY29sb3I6cmdiYSgyNTUsMjA1LDIxMCwuMyl9Lm1hdC10YWItZ3JvdXAubWF0LWJhY2tncm91bmQtd2Fybltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXRhYi1oZWFkZXJbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXRhYi1ncm91cC5tYXQtYmFja2dyb3VuZC13YXJuW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtdGFiLWxpbmtzW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10YWItZ3JvdXAubWF0LWJhY2tncm91bmQtd2Fybltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXRhYi1oZWFkZXItcGFnaW5hdGlvbltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdGFiLW5hdi1iYXIubWF0LWJhY2tncm91bmQtd2Fybltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXRhYi1oZWFkZXJbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXRhYi1uYXYtYmFyLm1hdC1iYWNrZ3JvdW5kLXdhcm5bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC10YWItbGlua3NbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXRhYi1uYXYtYmFyLm1hdC1iYWNrZ3JvdW5kLXdhcm5bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC10YWItaGVhZGVyLXBhZ2luYXRpb25bX25nY29udGVudC0lQ09NUCVde2JhY2tncm91bmQtY29sb3I6I2Y0NDMzNn0ubWF0LXRhYi1ncm91cC5tYXQtYmFja2dyb3VuZC13YXJuW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtdGFiLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10YWItZ3JvdXAubWF0LWJhY2tncm91bmQtd2Fybltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXRhYi1saW5rW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10YWItbmF2LWJhci5tYXQtYmFja2dyb3VuZC13YXJuW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtdGFiLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10YWItbmF2LWJhci5tYXQtYmFja2dyb3VuZC13YXJuW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtdGFiLWxpbmtbX25nY29udGVudC0lQ09NUCVde2NvbG9yOiNmZmZ9Lm1hdC10YWItZ3JvdXAubWF0LWJhY2tncm91bmQtd2Fybltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXRhYi1sYWJlbC5tYXQtdGFiLWRpc2FibGVkW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10YWItZ3JvdXAubWF0LWJhY2tncm91bmQtd2Fybltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXRhYi1saW5rLm1hdC10YWItZGlzYWJsZWRbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXRhYi1uYXYtYmFyLm1hdC1iYWNrZ3JvdW5kLXdhcm5bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC10YWItbGFiZWwubWF0LXRhYi1kaXNhYmxlZFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdGFiLW5hdi1iYXIubWF0LWJhY2tncm91bmQtd2Fybltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXRhYi1saW5rLm1hdC10YWItZGlzYWJsZWRbX25nY29udGVudC0lQ09NUCVde2NvbG9yOnJnYmEoMjU1LDI1NSwyNTUsLjQpfS5tYXQtdGFiLWdyb3VwLm1hdC1iYWNrZ3JvdW5kLXdhcm5bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC10YWItaGVhZGVyLXBhZ2luYXRpb24tY2hldnJvbltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdGFiLW5hdi1iYXIubWF0LWJhY2tncm91bmQtd2Fybltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXRhYi1oZWFkZXItcGFnaW5hdGlvbi1jaGV2cm9uW19uZ2NvbnRlbnQtJUNPTVAlXXtib3JkZXItY29sb3I6I2ZmZn0ubWF0LXRhYi1ncm91cC5tYXQtYmFja2dyb3VuZC13YXJuW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtdGFiLWhlYWRlci1wYWdpbmF0aW9uLWRpc2FibGVkW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtdGFiLWhlYWRlci1wYWdpbmF0aW9uLWNoZXZyb25bX25nY29udGVudC0lQ09NUCVdLCAubWF0LXRhYi1uYXYtYmFyLm1hdC1iYWNrZ3JvdW5kLXdhcm5bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC10YWItaGVhZGVyLXBhZ2luYXRpb24tZGlzYWJsZWRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC10YWItaGVhZGVyLXBhZ2luYXRpb24tY2hldnJvbltfbmdjb250ZW50LSVDT01QJV17Ym9yZGVyLWNvbG9yOnJnYmEoMjU1LDI1NSwyNTUsLjQpfS5tYXQtdGFiLWdyb3VwLm1hdC1iYWNrZ3JvdW5kLXdhcm5bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1yaXBwbGUtZWxlbWVudFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdGFiLW5hdi1iYXIubWF0LWJhY2tncm91bmQtd2Fybltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXJpcHBsZS1lbGVtZW50W19uZ2NvbnRlbnQtJUNPTVAlXXtiYWNrZ3JvdW5kLWNvbG9yOnJnYmEoMjU1LDI1NSwyNTUsLjEyKX0ubWF0LXRvb2xiYXJbX25nY29udGVudC0lQ09NUCVde2JhY2tncm91bmQ6I2Y1ZjVmNTtjb2xvcjojMjEyMTIxfS5tYXQtdG9vbGJhci5tYXQtcHJpbWFyeVtfbmdjb250ZW50LSVDT01QJV17YmFja2dyb3VuZDojZjU3YzAwO2NvbG9yOiNmZmZ9Lm1hdC10b29sYmFyLm1hdC1hY2NlbnRbX25nY29udGVudC0lQ09NUCVde2JhY2tncm91bmQ6I2ZmOTgwMDtjb2xvcjojZmZmfS5tYXQtdG9vbGJhci5tYXQtd2Fybltfbmdjb250ZW50LSVDT01QJV17YmFja2dyb3VuZDojZjQ0MzM2O2NvbG9yOiNmZmZ9Lm1hdC10b29sYmFyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC11bmRlcmxpbmVbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXRvb2xiYXJbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLXJpcHBsZVtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdG9vbGJhcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvY3VzZWRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLXJpcHBsZVtfbmdjb250ZW50LSVDT01QJV17YmFja2dyb3VuZC1jb2xvcjpjdXJyZW50Q29sb3J9Lm1hdC10b29sYmFyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdG9vbGJhcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvY3VzZWRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10b29sYmFyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtc2VsZWN0LXZhbHVlW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10b29sYmFyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtc2VsZWN0LWFycm93W19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10b29sYmFyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC5tYXQtZm9jdXNlZFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXNlbGVjdC1hcnJvd1tfbmdjb250ZW50LSVDT01QJV17Y29sb3I6aW5oZXJpdH0ubWF0LXRvb2xiYXJbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pbnB1dC1lbGVtZW50W19uZ2NvbnRlbnQtJUNPTVAlXXtjYXJldC1jb2xvcjpjdXJyZW50Q29sb3J9Lm1hdC10b29sYmFyLW11bHRpcGxlLXJvd3NbX25nY29udGVudC0lQ09NUCVde21pbi1oZWlnaHQ6NjRweH0ubWF0LXRvb2xiYXItcm93W19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10b29sYmFyLXNpbmdsZS1yb3dbX25nY29udGVudC0lQ09NUCVde2hlaWdodDo2NHB4fUBtZWRpYShtYXgtd2lkdGg6IDU5OXB4KXsubWF0LXRvb2xiYXItbXVsdGlwbGUtcm93c1tfbmdjb250ZW50LSVDT01QJV17bWluLWhlaWdodDo1NnB4fS5tYXQtdG9vbGJhci1yb3dbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXRvb2xiYXItc2luZ2xlLXJvd1tfbmdjb250ZW50LSVDT01QJV17aGVpZ2h0OjU2cHh9fS5tYXQtdG9vbHRpcFtfbmdjb250ZW50LSVDT01QJV17YmFja2dyb3VuZDpyZ2JhKDk3LDk3LDk3LC45KX0ubWF0LXRyZWVbX25nY29udGVudC0lQ09NUCVde2JhY2tncm91bmQ6I2ZmZn0ubWF0LXRyZWUtbm9kZVtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtbmVzdGVkLXRyZWUtbm9kZVtfbmdjb250ZW50LSVDT01QJV17Y29sb3I6IzIxMjEyMX0ubWF0LXRyZWUtbm9kZVtfbmdjb250ZW50LSVDT01QJV17bWluLWhlaWdodDo0OHB4fS5tYXQtc25hY2stYmFyLWNvbnRhaW5lcltfbmdjb250ZW50LSVDT01QJV17Y29sb3I6cmdiYSgyNTUsMjU1LDI1NSwuNyk7YmFja2dyb3VuZDojMzIzMjMyO2JveC1zaGFkb3c6MHB4IDNweCA1cHggLTFweCByZ2JhKDAsIDAsIDAsIDAuMiksMHB4IDZweCAxMHB4IDBweCByZ2JhKDAsIDAsIDAsIDAuMTQpLDBweCAxcHggMThweCAwcHggcmdiYSgwLCAwLCAwLCAwLjEyKX0ubWF0LXNpbXBsZS1zbmFja2Jhci1hY3Rpb25bX25nY29udGVudC0lQ09NUCVde2NvbG9yOiNmZjk4MDB9Lmdyb3VwLXRvb2xiYXJbX25nY29udGVudC0lQ09NUCVde2JhY2tncm91bmQtY29sb3I6I2ZmZjtoZWlnaHQ6NDJweDtwYWRkaW5nOjAgMTZweDtkaXNwbGF5OmZsZXg7YWxpZ24taXRlbXM6Y2VudGVyO2JvcmRlci10b3A6MXB4IHNvbGlkICNlYmViZWI7Ym9yZGVyLWJvdHRvbToxcHggc29saWQgI2ViZWJlYn0uY2FyZC1ncm91cFtfbmdjb250ZW50LSVDT01QJV06Zmlyc3Qtb2YtdHlwZSAgIC5ncm91cC10b29sYmFyW19uZ2NvbnRlbnQtJUNPTVAlXXtib3JkZXItdG9wOm5vbmV9Lmdyb3VwLXRpdGxlW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MTRweDtmb250LXdlaWdodDo1MDB9Lmdyb3VwLWNhcmQtY291bnRbX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToxMnB4O2ZvbnQtd2VpZ2h0OjQwMDtjb2xvcjojNjE2MTYxO21hcmdpbi1sZWZ0OjZweH0nXSxjaGFuZ2VEZXRlY3Rpb246MH0pO2NvbnN0IHhtdD1wdihlRCxLRCwoKHQsbik9PnQuZmlsdGVyKCh0PT4hZlQodC5wbHVnaW4pfHxCb29sZWFuKG4mJm4uZ2V0KHQucnVuSWQpKSkpKSk7Y2xhc3MgeW10e2NvbnN0cnVjdG9yKHQpe3RoaXMuc3RvcmU9dCx0aGlzLmNhcmRHcm91cHMkPXRoaXMuc3RvcmUuc2VsZWN0KHhtdCkucGlwZShmdCgodD0+KGZ1bmN0aW9uIG4odCl7Y29uc3Qgbj1uZXcgTWFwLGU9dC5zbGljZSgpLnNvcnQoKCh0LG4pPT5LSyh0LnRhZyxuLnRhZykpKTtmb3IoY29uc3QgdCBvZiBlKXtjb25zdCBlPXQudGFnLnNwbGl0KCIvIiwxKVswXTtuLmhhcyhlKXx8bi5zZXQoZSx7Z3JvdXBOYW1lOmUsaXRlbXM6W119KSxuLmdldChlKS5pdGVtcy5wdXNoKHQpfXJldHVyblsuLi5uLnZhbHVlcygpXX0pKHQpKSkpfX1mdW5jdGlvbiBrbXQodCxuKXtpZigxJnQmJihLZygwLCJzcGFuIiw1KSxKcCgxKSwkZygpKSwyJnQpe2NvbnN0IHQ9Z3AoKTt3cygxKSxLcCgiIix0LmNhcmRJZHNXaXRoTWV0YWRhdGEubGVuZ3RoLCIgY2FyZHMiKX19eW10Lsm1ZmFjPWZ1bmN0aW9uIHQobil7cmV0dXJuIG5ldyhufHx5bXQpKFpnKGN2KSl9LHltdC7JtWNtcD1fbyh7dHlwZTp5bXQsc2VsZWN0b3JzOltbIm1ldHJpY3MtY2FyZC1ncm91cHMiXV0saW5wdXRzOntjYXJkT2JzZXJ2ZXI6ImNhcmRPYnNlcnZlciJ9LGRlY2xzOjIsdmFyczo0LGNvbnN0czpbWzMsImNhcmRHcm91cHMiLCJjYXJkT2JzZXJ2ZXIiXV0sdGVtcGxhdGU6ZnVuY3Rpb24gdChuLGUpezEmbiYmKHRwKDAsIm1ldHJpY3MtY2FyZC1ncm91cHMtY29tcG9uZW50IiwwKSx5ZigxLCJhc3luYyIpKSwyJm4mJkpnKCJjYXJkR3JvdXBzIixrZigxLDIsZS5jYXJkR3JvdXBzJCkpKCJjYXJkT2JzZXJ2ZXIiLGUuY2FyZE9ic2VydmVyKX0sZGlyZWN0aXZlczpbUG10XSxwaXBlczpbb09dLGVuY2Fwc3VsYXRpb246MixjaGFuZ2VEZXRlY3Rpb246MH0pO2NsYXNzIHZtdHt9dm10Lsm1ZmFjPWZ1bmN0aW9uIHQobil7cmV0dXJuIG5ldyhufHx2bXQpfSx2bXQuybVjbXA9X28oe3R5cGU6dm10LHNlbGVjdG9yczpbWyJtZXRyaWNzLWZpbHRlcmVkLXZpZXctY29tcG9uZW50Il1dLGlucHV0czp7Y2FyZE9ic2VydmVyOiJjYXJkT2JzZXJ2ZXIiLGNhcmRJZHNXaXRoTWV0YWRhdGE6ImNhcmRJZHNXaXRoTWV0YWRhdGEifSxkZWNsczo2LHZhcnM6Myxjb25zdHM6W1sxLCJncm91cC10b29sYmFyIl0sWzEsImdyb3VwLXRleHQiXSxbImFyaWEtcm9sZSIsImhlYWRpbmciLCJhcmlhLWxldmVsIiwiMyIsMSwiZ3JvdXAtdGl0bGUiXSxbImNsYXNzIiwiZ3JvdXAtY2FyZC1jb3VudCIsNCwibmdJZiJdLFszLCJjYXJkSWRzV2l0aE1ldGFkYXRhIiwiY2FyZE9ic2VydmVyIl0sWzEsImdyb3VwLWNhcmQtY291bnQiXV0sdGVtcGxhdGU6ZnVuY3Rpb24gdChuLGUpezEmbiYmKEtnKDAsImRpdiIsMCksS2coMSwic3BhbiIsMSksS2coMiwic3BhbiIsMiksSnAoMywiVGFncyBtYXRjaGluZyBmaWx0ZXIiKSwkZygpLFlnKDQsa210LDIsMSwic3BhbiIsMyksJGcoKSwkZygpLHRwKDUsIm1ldHJpY3MtY2FyZC1ncmlkIiw0KSksMiZuJiYod3MoNCksSmcoIm5nSWYiLGUuY2FyZElkc1dpdGhNZXRhZGF0YS5sZW5ndGg+MSksd3MoMSksSmcoImNhcmRJZHNXaXRoTWV0YWRhdGEiLGUuY2FyZElkc1dpdGhNZXRhZGF0YSkoImNhcmRPYnNlcnZlciIsZS5jYXJkT2JzZXJ2ZXIpKX0sZGlyZWN0aXZlczpbV00sQ210XSxzdHlsZXM6WycubWF0LWJhZGdlLWNvbnRlbnRbX25nY29udGVudC0lQ09NUCVde2ZvbnQtd2VpZ2h0OjYwMDtmb250LXNpemU6MTJweDtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWZ9Lm1hdC1iYWRnZS1zbWFsbFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWJhZGdlLWNvbnRlbnRbX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZTo5cHh9Lm1hdC1iYWRnZS1sYXJnZVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWJhZGdlLWNvbnRlbnRbX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToyNHB4fS5tYXQtaDFbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWhlYWRsaW5lW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10eXBvZ3JhcGh5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIGgxW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250OjQwMCAyNHB4LzMycHggUm9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2xldHRlci1zcGFjaW5nOm5vcm1hbDttYXJnaW46MCAwIDE2cHh9Lm1hdC1oMltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdGl0bGVbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXR5cG9ncmFwaHlbX25nY29udGVudC0lQ09NUCVdICAgaDJbX25nY29udGVudC0lQ09NUCVde2ZvbnQ6NTAwIDIwcHgvMzJweCBSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7bGV0dGVyLXNwYWNpbmc6bm9ybWFsO21hcmdpbjowIDAgMTZweH0ubWF0LWgzW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1zdWJoZWFkaW5nLTJbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXR5cG9ncmFwaHlbX25nY29udGVudC0lQ09NUCVdICAgaDNbX25nY29udGVudC0lQ09NUCVde2ZvbnQ6NDAwIDE2cHgvMjhweCBSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7bGV0dGVyLXNwYWNpbmc6bm9ybWFsO21hcmdpbjowIDAgMTZweH0ubWF0LWg0W19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1zdWJoZWFkaW5nLTFbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXR5cG9ncmFwaHlbX25nY29udGVudC0lQ09NUCVdICAgaDRbX25nY29udGVudC0lQ09NUCVde2ZvbnQ6NDAwIDE1cHgvMjRweCBSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7bGV0dGVyLXNwYWNpbmc6bm9ybWFsO21hcmdpbjowIDAgMTZweH0ubWF0LWg1W19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10eXBvZ3JhcGh5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIGg1W19uZ2NvbnRlbnQtJUNPTVAlXXtmb250OjQwMCBjYWxjKDE0cHggKiAwLjgzKS8yMHB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjttYXJnaW46MCAwIDEycHh9Lm1hdC1oNltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdHlwb2dyYXBoeVtfbmdjb250ZW50LSVDT01QJV0gICBoNltfbmdjb250ZW50LSVDT01QJV17Zm9udDo0MDAgY2FsYygxNHB4ICogMC42NykvMjBweCBSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7bWFyZ2luOjAgMCAxMnB4fS5tYXQtYm9keS1zdHJvbmdbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWJvZHktMltfbmdjb250ZW50LSVDT01QJV17Zm9udDo1MDAgMTRweC8yNHB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtsZXR0ZXItc3BhY2luZzpub3JtYWx9Lm1hdC1ib2R5W19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1ib2R5LTFbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXR5cG9ncmFwaHlbX25nY29udGVudC0lQ09NUCVde2ZvbnQ6NDAwIDE0cHgvMjBweCBSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7bGV0dGVyLXNwYWNpbmc6bm9ybWFsfS5tYXQtYm9keVtfbmdjb250ZW50LSVDT01QJV0gICBwW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1ib2R5LTFbX25nY29udGVudC0lQ09NUCVdICAgcFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdHlwb2dyYXBoeVtfbmdjb250ZW50LSVDT01QJV0gICBwW19uZ2NvbnRlbnQtJUNPTVAlXXttYXJnaW46MCAwIDEycHh9Lm1hdC1zbWFsbFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtY2FwdGlvbltfbmdjb250ZW50LSVDT01QJV17Zm9udDo0MDAgMTJweC8yMHB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtsZXR0ZXItc3BhY2luZzpub3JtYWx9Lm1hdC1kaXNwbGF5LTRbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXR5cG9ncmFwaHlbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1kaXNwbGF5LTRbX25nY29udGVudC0lQ09NUCVde2ZvbnQ6MzAwIDExMnB4LzExMnB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtsZXR0ZXItc3BhY2luZzotMC4wNWVtO21hcmdpbjowIDAgNTZweH0ubWF0LWRpc3BsYXktM1tfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdHlwb2dyYXBoeVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWRpc3BsYXktM1tfbmdjb250ZW50LSVDT01QJV17Zm9udDo0MDAgNTZweC81NnB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtsZXR0ZXItc3BhY2luZzotMC4wMmVtO21hcmdpbjowIDAgNjRweH0ubWF0LWRpc3BsYXktMltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdHlwb2dyYXBoeVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWRpc3BsYXktMltfbmdjb250ZW50LSVDT01QJV17Zm9udDo0MDAgNDVweC80OHB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtsZXR0ZXItc3BhY2luZzotMC4wMDVlbTttYXJnaW46MCAwIDY0cHh9Lm1hdC1kaXNwbGF5LTFbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXR5cG9ncmFwaHlbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1kaXNwbGF5LTFbX25nY29udGVudC0lQ09NUCVde2ZvbnQ6NDAwIDM0cHgvNDBweCBSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7bGV0dGVyLXNwYWNpbmc6bm9ybWFsO21hcmdpbjowIDAgNjRweH0ubWF0LWJvdHRvbS1zaGVldC1jb250YWluZXJbX25nY29udGVudC0lQ09NUCVde2ZvbnQ6NDAwIDE0cHgvMjBweCBSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7bGV0dGVyLXNwYWNpbmc6bm9ybWFsfS5tYXQtYnV0dG9uW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1yYWlzZWQtYnV0dG9uW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1pY29uLWJ1dHRvbltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtc3Ryb2tlZC1idXR0b25bX25nY29udGVudC0lQ09NUCVdLCAubWF0LWZsYXQtYnV0dG9uW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1mYWJbX25nY29udGVudC0lQ09NUCVdLCAubWF0LW1pbmktZmFiW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7Zm9udC1zaXplOjE0cHg7Zm9udC13ZWlnaHQ6NTAwfS5tYXQtYnV0dG9uLXRvZ2dsZVtfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmfS5tYXQtY2FyZFtfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmfS5tYXQtY2FyZC10aXRsZVtfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjI0cHg7Zm9udC13ZWlnaHQ6NTAwfS5tYXQtY2FyZC1oZWFkZXJbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1jYXJkLXRpdGxlW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MjBweH0ubWF0LWNhcmQtc3VidGl0bGVbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWNhcmQtY29udGVudFtfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjE0cHh9Lm1hdC1jaGVja2JveFtfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmfS5tYXQtY2hlY2tib3gtbGF5b3V0W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtY2hlY2tib3gtbGFiZWxbX25nY29udGVudC0lQ09NUCVde2xpbmUtaGVpZ2h0OjI0cHh9Lm1hdC1jaGlwW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MTRweDtmb250LXdlaWdodDo1MDB9Lm1hdC1jaGlwW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtY2hpcC10cmFpbGluZy1pY29uLm1hdC1pY29uW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1jaGlwW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtY2hpcC1yZW1vdmUubWF0LWljb25bX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToxOHB4fS5tYXQtdGFibGVbX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZn0ubWF0LWhlYWRlci1jZWxsW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MTJweDtmb250LXdlaWdodDo1MDB9Lm1hdC1jZWxsW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1mb290ZXItY2VsbFtfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjE0cHh9Lm1hdC1jYWxlbmRhcltfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmfS5tYXQtY2FsZW5kYXItYm9keVtfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjEzcHh9Lm1hdC1jYWxlbmRhci1ib2R5LWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1jYWxlbmRhci1wZXJpb2QtYnV0dG9uW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MTRweDtmb250LXdlaWdodDo1MDB9Lm1hdC1jYWxlbmRhci10YWJsZS1oZWFkZXJbX25nY29udGVudC0lQ09NUCVdICAgdGhbX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToxMXB4O2ZvbnQtd2VpZ2h0OjQwMH0ubWF0LWRpYWxvZy10aXRsZVtfbmdjb250ZW50LSVDT01QJV17Zm9udDo1MDAgMjBweC8zMnB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtsZXR0ZXItc3BhY2luZzpub3JtYWx9Lm1hdC1leHBhbnNpb24tcGFuZWwtaGVhZGVyW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7Zm9udC1zaXplOjE1cHg7Zm9udC13ZWlnaHQ6NDAwfS5tYXQtZXhwYW5zaW9uLXBhbmVsLWNvbnRlbnRbX25nY29udGVudC0lQ09NUCVde2ZvbnQ6NDAwIDE0cHgvMjBweCBSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7bGV0dGVyLXNwYWNpbmc6bm9ybWFsfS5tYXQtZm9ybS1maWVsZFtfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOmluaGVyaXQ7Zm9udC13ZWlnaHQ6NDAwO2xpbmUtaGVpZ2h0OjEuMTI1O2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtsZXR0ZXItc3BhY2luZzpub3JtYWx9Lm1hdC1mb3JtLWZpZWxkLXdyYXBwZXJbX25nY29udGVudC0lQ09NUCVde3BhZGRpbmctYm90dG9tOjEuMzQzNzVlbX0ubWF0LWZvcm0tZmllbGQtcHJlZml4W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaWNvbltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtZm9ybS1maWVsZC1zdWZmaXhbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pY29uW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MTUwJTtsaW5lLWhlaWdodDoxLjEyNX0ubWF0LWZvcm0tZmllbGQtcHJlZml4W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaWNvbi1idXR0b25bX25nY29udGVudC0lQ09NUCVdLCAubWF0LWZvcm0tZmllbGQtc3VmZml4W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaWNvbi1idXR0b25bX25nY29udGVudC0lQ09NUCVde2hlaWdodDoxLjVlbTt3aWR0aDoxLjVlbX0ubWF0LWZvcm0tZmllbGQtcHJlZml4W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaWNvbi1idXR0b25bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pY29uW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1mb3JtLWZpZWxkLXN1ZmZpeFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWljb24tYnV0dG9uW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaWNvbltfbmdjb250ZW50LSVDT01QJV17aGVpZ2h0OjEuMTI1ZW07bGluZS1oZWlnaHQ6MS4xMjV9Lm1hdC1mb3JtLWZpZWxkLWluZml4W19uZ2NvbnRlbnQtJUNPTVAlXXtwYWRkaW5nOi41ZW0gMDtib3JkZXItdG9wOi44NDM3NWVtIHNvbGlkIHRyYW5zcGFyZW50fS5tYXQtZm9ybS1maWVsZC1jYW4tZmxvYXQubWF0LWZvcm0tZmllbGQtc2hvdWxkLWZsb2F0W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtZm9ybS1maWVsZC1jYW4tZmxvYXRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pbnB1dC1zZXJ2ZXJbX25nY29udGVudC0lQ09NUCVdOmZvY3VzICsgLm1hdC1mb3JtLWZpZWxkLWxhYmVsLXdyYXBwZXJbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXt0cmFuc2Zvcm06dHJhbnNsYXRlWSgtMS4zNDM3NWVtKSBzY2FsZSgwLjc1KTt3aWR0aDoxMzMuMzMzMzMzMzMzMyV9Lm1hdC1mb3JtLWZpZWxkLWNhbi1mbG9hdFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWlucHV0LXNlcnZlcltsYWJlbF1bX25nY29udGVudC0lQ09NUCVdOm5vdCg6bGFiZWwtc2hvd24pICsgLm1hdC1mb3JtLWZpZWxkLWxhYmVsLXdyYXBwZXJbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXt0cmFuc2Zvcm06dHJhbnNsYXRlWSgtMS4zNDM3NGVtKSBzY2FsZSgwLjc1KTt3aWR0aDoxMzMuMzMzMzQzMzMzMyV9Lm1hdC1mb3JtLWZpZWxkLWxhYmVsLXdyYXBwZXJbX25nY29udGVudC0lQ09NUCVde3RvcDotMC44NDM3NWVtO3BhZGRpbmctdG9wOi44NDM3NWVtfS5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17dG9wOjEuMzQzNzVlbX0ubWF0LWZvcm0tZmllbGQtdW5kZXJsaW5lW19uZ2NvbnRlbnQtJUNPTVAlXXtib3R0b206MS4zNDM3NWVtfS5tYXQtZm9ybS1maWVsZC1zdWJzY3JpcHQtd3JhcHBlcltfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjc1JTttYXJnaW4tdG9wOi42NjY2NjY2NjY3ZW07dG9wOmNhbGMoMTAwJSAtIDEuNzkxNjY2NjY2N2VtKX0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1sZWdhY3lbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLXdyYXBwZXJbX25nY29udGVudC0lQ09NUCVde3BhZGRpbmctYm90dG9tOjEuMjVlbX0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1sZWdhY3lbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWluZml4W19uZ2NvbnRlbnQtJUNPTVAlXXtwYWRkaW5nOi40Mzc1ZW0gMH0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1sZWdhY3kubWF0LWZvcm0tZmllbGQtY2FuLWZsb2F0Lm1hdC1mb3JtLWZpZWxkLXNob3VsZC1mbG9hdFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1sZWdhY3kubWF0LWZvcm0tZmllbGQtY2FuLWZsb2F0W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaW5wdXQtc2VydmVyW19uZ2NvbnRlbnQtJUNPTVAlXTpmb2N1cyArIC5tYXQtZm9ybS1maWVsZC1sYWJlbC13cmFwcGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17dHJhbnNmb3JtOnRyYW5zbGF0ZVkoLTEuMjgxMjVlbSkgc2NhbGUoMC43NSkgcGVyc3BlY3RpdmUoMTAwcHgpIHRyYW5zbGF0ZVooMC4wMDFweCk7LW1zLXRyYW5zZm9ybTp0cmFuc2xhdGVZKC0xLjI4MTI1ZW0pIHNjYWxlKDAuNzUpO3dpZHRoOjEzMy4zMzMzMzMzMzMzJX0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1sZWdhY3kubWF0LWZvcm0tZmllbGQtY2FuLWZsb2F0W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1hdXRvZmlsbC1jb250cm9sW19uZ2NvbnRlbnQtJUNPTVAlXTotd2Via2l0LWF1dG9maWxsICsgLm1hdC1mb3JtLWZpZWxkLWxhYmVsLXdyYXBwZXJbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXt0cmFuc2Zvcm06dHJhbnNsYXRlWSgtMS4yODEyNWVtKSBzY2FsZSgwLjc1KSBwZXJzcGVjdGl2ZSgxMDBweCkgdHJhbnNsYXRlWigwLjAwMTAxcHgpOy1tcy10cmFuc2Zvcm06dHJhbnNsYXRlWSgtMS4yODEyNGVtKSBzY2FsZSgwLjc1KTt3aWR0aDoxMzMuMzMzMzQzMzMzMyV9Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtbGVnYWN5Lm1hdC1mb3JtLWZpZWxkLWNhbi1mbG9hdFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWlucHV0LXNlcnZlcltsYWJlbF1bX25nY29udGVudC0lQ09NUCVdOm5vdCg6bGFiZWwtc2hvd24pICsgLm1hdC1mb3JtLWZpZWxkLWxhYmVsLXdyYXBwZXJbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXt0cmFuc2Zvcm06dHJhbnNsYXRlWSgtMS4yODEyNWVtKSBzY2FsZSgwLjc1KSBwZXJzcGVjdGl2ZSgxMDBweCkgdHJhbnNsYXRlWigwLjAwMTAycHgpOy1tcy10cmFuc2Zvcm06dHJhbnNsYXRlWSgtMS4yODEyM2VtKSBzY2FsZSgwLjc1KTt3aWR0aDoxMzMuMzMzMzUzMzMzMyV9Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtbGVnYWN5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17dG9wOjEuMjgxMjVlbX0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1sZWdhY3lbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLXVuZGVybGluZVtfbmdjb250ZW50LSVDT01QJV17Ym90dG9tOjEuMjVlbX0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1sZWdhY3lbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLXN1YnNjcmlwdC13cmFwcGVyW19uZ2NvbnRlbnQtJUNPTVAlXXttYXJnaW4tdG9wOi41NDE2NjY2NjY3ZW07dG9wOmNhbGMoMTAwJSAtIDEuNjY2NjY2NjY2N2VtKX1AbWVkaWEgcHJpbnR7Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtbGVnYWN5Lm1hdC1mb3JtLWZpZWxkLWNhbi1mbG9hdC5tYXQtZm9ybS1maWVsZC1zaG91bGQtZmxvYXRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtbGVnYWN5Lm1hdC1mb3JtLWZpZWxkLWNhbi1mbG9hdFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWlucHV0LXNlcnZlcltfbmdjb250ZW50LSVDT01QJV06Zm9jdXMgKyAubWF0LWZvcm0tZmllbGQtbGFiZWwtd3JhcHBlcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVde3RyYW5zZm9ybTp0cmFuc2xhdGVZKC0xLjI4MTIyZW0pIHNjYWxlKDAuNzUpfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWxlZ2FjeS5tYXQtZm9ybS1maWVsZC1jYW4tZmxvYXRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWF1dG9maWxsLWNvbnRyb2xbX25nY29udGVudC0lQ09NUCVdOi13ZWJraXQtYXV0b2ZpbGwgKyAubWF0LWZvcm0tZmllbGQtbGFiZWwtd3JhcHBlcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVde3RyYW5zZm9ybTp0cmFuc2xhdGVZKC0xLjI4MTIxZW0pIHNjYWxlKDAuNzUpfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWxlZ2FjeS5tYXQtZm9ybS1maWVsZC1jYW4tZmxvYXRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pbnB1dC1zZXJ2ZXJbbGFiZWxdW19uZ2NvbnRlbnQtJUNPTVAlXTpub3QoOmxhYmVsLXNob3duKSArIC5tYXQtZm9ybS1maWVsZC1sYWJlbC13cmFwcGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17dHJhbnNmb3JtOnRyYW5zbGF0ZVkoLTEuMjgxMmVtKSBzY2FsZSgwLjc1KX19Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtZmlsbFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtaW5maXhbX25nY29udGVudC0lQ09NUCVde3BhZGRpbmc6LjI1ZW0gMCAuNzVlbSAwfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWZpbGxbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXt0b3A6MS4wOTM3NWVtO21hcmdpbi10b3A6LTAuNWVtfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWZpbGwubWF0LWZvcm0tZmllbGQtY2FuLWZsb2F0Lm1hdC1mb3JtLWZpZWxkLXNob3VsZC1mbG9hdFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1maWxsLm1hdC1mb3JtLWZpZWxkLWNhbi1mbG9hdFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWlucHV0LXNlcnZlcltfbmdjb250ZW50LSVDT01QJV06Zm9jdXMgKyAubWF0LWZvcm0tZmllbGQtbGFiZWwtd3JhcHBlcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVde3RyYW5zZm9ybTp0cmFuc2xhdGVZKC0wLjU5Mzc1ZW0pIHNjYWxlKDAuNzUpO3dpZHRoOjEzMy4zMzMzMzMzMzMzJX0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1maWxsLm1hdC1mb3JtLWZpZWxkLWNhbi1mbG9hdFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWlucHV0LXNlcnZlcltsYWJlbF1bX25nY29udGVudC0lQ09NUCVdOm5vdCg6bGFiZWwtc2hvd24pICsgLm1hdC1mb3JtLWZpZWxkLWxhYmVsLXdyYXBwZXJbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXt0cmFuc2Zvcm06dHJhbnNsYXRlWSgtMC41OTM3NGVtKSBzY2FsZSgwLjc1KTt3aWR0aDoxMzMuMzMzMzQzMzMzMyV9Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2Utb3V0bGluZVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtaW5maXhbX25nY29udGVudC0lQ09NUCVde3BhZGRpbmc6MWVtIDAgMWVtIDB9Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2Utb3V0bGluZVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVde3RvcDoxLjg0Mzc1ZW07bWFyZ2luLXRvcDotMC4yNWVtfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLW91dGxpbmUubWF0LWZvcm0tZmllbGQtY2FuLWZsb2F0Lm1hdC1mb3JtLWZpZWxkLXNob3VsZC1mbG9hdFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1vdXRsaW5lLm1hdC1mb3JtLWZpZWxkLWNhbi1mbG9hdFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWlucHV0LXNlcnZlcltfbmdjb250ZW50LSVDT01QJV06Zm9jdXMgKyAubWF0LWZvcm0tZmllbGQtbGFiZWwtd3JhcHBlcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVde3RyYW5zZm9ybTp0cmFuc2xhdGVZKC0xLjU5Mzc1ZW0pIHNjYWxlKDAuNzUpO3dpZHRoOjEzMy4zMzMzMzMzMzMzJX0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1vdXRsaW5lLm1hdC1mb3JtLWZpZWxkLWNhbi1mbG9hdFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWlucHV0LXNlcnZlcltsYWJlbF1bX25nY29udGVudC0lQ09NUCVdOm5vdCg6bGFiZWwtc2hvd24pICsgLm1hdC1mb3JtLWZpZWxkLWxhYmVsLXdyYXBwZXJbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXt0cmFuc2Zvcm06dHJhbnNsYXRlWSgtMS41OTM3NGVtKSBzY2FsZSgwLjc1KTt3aWR0aDoxMzMuMzMzMzQzMzMzMyV9Lm1hdC1ncmlkLXRpbGUtaGVhZGVyW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1ncmlkLXRpbGUtZm9vdGVyW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MTRweH0ubWF0LWdyaWQtdGlsZS1oZWFkZXJbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saW5lW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1ncmlkLXRpbGUtZm9vdGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGluZVtfbmdjb250ZW50LSVDT01QJV17d2hpdGUtc3BhY2U6bm93cmFwO292ZXJmbG93OmhpZGRlbjt0ZXh0LW92ZXJmbG93OmVsbGlwc2lzO2Rpc3BsYXk6YmxvY2s7Ym94LXNpemluZzpib3JkZXItYm94fS5tYXQtZ3JpZC10aWxlLWhlYWRlcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpbmVbX25nY29udGVudC0lQ09NUCVdOm50aC1jaGlsZChuKzIpLCAubWF0LWdyaWQtdGlsZS1mb290ZXJbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saW5lW19uZ2NvbnRlbnQtJUNPTVAlXTpudGgtY2hpbGQobisyKXtmb250LXNpemU6MTJweH1pbnB1dC5tYXQtaW5wdXQtZWxlbWVudFtfbmdjb250ZW50LSVDT01QJV17bWFyZ2luLXRvcDotMC4wNjI1ZW19Lm1hdC1tZW51LWl0ZW1bX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtmb250LXNpemU6MTRweDtmb250LXdlaWdodDo0MDB9Lm1hdC1wYWdpbmF0b3JbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXBhZ2luYXRvci1wYWdlLXNpemVbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1zZWxlY3QtdHJpZ2dlcltfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2ZvbnQtc2l6ZToxMnB4fS5tYXQtcmFkaW8tYnV0dG9uW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWZ9Lm1hdC1zZWxlY3RbX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZn0ubWF0LXNlbGVjdC10cmlnZ2VyW19uZ2NvbnRlbnQtJUNPTVAlXXtoZWlnaHQ6MS4xMjVlbX0ubWF0LXNsaWRlLXRvZ2dsZS1jb250ZW50W19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWZ9Lm1hdC1zbGlkZXItdGh1bWItbGFiZWwtdGV4dFtfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2ZvbnQtc2l6ZToxMnB4O2ZvbnQtd2VpZ2h0OjUwMH0ubWF0LXN0ZXBwZXItdmVydGljYWxbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXN0ZXBwZXItaG9yaXpvbnRhbFtfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmfS5tYXQtc3RlcC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjE0cHg7Zm9udC13ZWlnaHQ6NDAwfS5tYXQtc3RlcC1zdWItbGFiZWwtZXJyb3JbX25nY29udGVudC0lQ09NUCVde2ZvbnQtd2VpZ2h0Om5vcm1hbH0ubWF0LXN0ZXAtbGFiZWwtZXJyb3JbX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToxNHB4fS5tYXQtc3RlcC1sYWJlbC1zZWxlY3RlZFtfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjE0cHg7Zm9udC13ZWlnaHQ6NTAwfS5tYXQtdGFiLWdyb3VwW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWZ9Lm1hdC10YWItbGFiZWxbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXRhYi1saW5rW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7Zm9udC1zaXplOjE0cHg7Zm9udC13ZWlnaHQ6NTAwfS5tYXQtdG9vbGJhcltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdG9vbGJhcltfbmdjb250ZW50LSVDT01QJV0gICBoMVtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdG9vbGJhcltfbmdjb250ZW50LSVDT01QJV0gICBoMltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdG9vbGJhcltfbmdjb250ZW50LSVDT01QJV0gICBoM1tfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdG9vbGJhcltfbmdjb250ZW50LSVDT01QJV0gICBoNFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdG9vbGJhcltfbmdjb250ZW50LSVDT01QJV0gICBoNVtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdG9vbGJhcltfbmdjb250ZW50LSVDT01QJV0gICBoNltfbmdjb250ZW50LSVDT01QJV17Zm9udDo1MDAgMjBweC8zMnB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtsZXR0ZXItc3BhY2luZzpub3JtYWw7bWFyZ2luOjB9Lm1hdC10b29sdGlwW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7Zm9udC1zaXplOjEwcHg7cGFkZGluZy10b3A6NnB4O3BhZGRpbmctYm90dG9tOjZweH0ubWF0LXRvb2x0aXAtaGFuZHNldFtfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjE0cHg7cGFkZGluZy10b3A6OHB4O3BhZGRpbmctYm90dG9tOjhweH0ubWF0LWxpc3QtaXRlbVtfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmfS5tYXQtbGlzdC1vcHRpb25bX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZn0ubWF0LWxpc3QtYmFzZVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpc3QtaXRlbVtfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjE2cHh9Lm1hdC1saXN0LWJhc2VbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saXN0LWl0ZW1bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saW5lW19uZ2NvbnRlbnQtJUNPTVAlXXt3aGl0ZS1zcGFjZTpub3dyYXA7b3ZlcmZsb3c6aGlkZGVuO3RleHQtb3ZlcmZsb3c6ZWxsaXBzaXM7ZGlzcGxheTpibG9jaztib3gtc2l6aW5nOmJvcmRlci1ib3h9Lm1hdC1saXN0LWJhc2VbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saXN0LWl0ZW1bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saW5lW19uZ2NvbnRlbnQtJUNPTVAlXTpudGgtY2hpbGQobisyKXtmb250LXNpemU6MTRweH0ubWF0LWxpc3QtYmFzZVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpc3Qtb3B0aW9uW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MTZweH0ubWF0LWxpc3QtYmFzZVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpc3Qtb3B0aW9uW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGluZVtfbmdjb250ZW50LSVDT01QJV17d2hpdGUtc3BhY2U6bm93cmFwO292ZXJmbG93OmhpZGRlbjt0ZXh0LW92ZXJmbG93OmVsbGlwc2lzO2Rpc3BsYXk6YmxvY2s7Ym94LXNpemluZzpib3JkZXItYm94fS5tYXQtbGlzdC1iYXNlW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGlzdC1vcHRpb25bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saW5lW19uZ2NvbnRlbnQtJUNPTVAlXTpudGgtY2hpbGQobisyKXtmb250LXNpemU6MTRweH0ubWF0LWxpc3QtYmFzZVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXN1YmhlYWRlcltfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2ZvbnQtc2l6ZToxNHB4O2ZvbnQtd2VpZ2h0OjUwMH0ubWF0LWxpc3QtYmFzZVtkZW5zZV1bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saXN0LWl0ZW1bX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToxMnB4fS5tYXQtbGlzdC1iYXNlW2RlbnNlXVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpc3QtaXRlbVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpbmVbX25nY29udGVudC0lQ09NUCVde3doaXRlLXNwYWNlOm5vd3JhcDtvdmVyZmxvdzpoaWRkZW47dGV4dC1vdmVyZmxvdzplbGxpcHNpcztkaXNwbGF5OmJsb2NrO2JveC1zaXppbmc6Ym9yZGVyLWJveH0ubWF0LWxpc3QtYmFzZVtkZW5zZV1bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saXN0LWl0ZW1bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saW5lW19uZ2NvbnRlbnQtJUNPTVAlXTpudGgtY2hpbGQobisyKXtmb250LXNpemU6MTJweH0ubWF0LWxpc3QtYmFzZVtkZW5zZV1bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saXN0LW9wdGlvbltfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjEycHh9Lm1hdC1saXN0LWJhc2VbZGVuc2VdW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGlzdC1vcHRpb25bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saW5lW19uZ2NvbnRlbnQtJUNPTVAlXXt3aGl0ZS1zcGFjZTpub3dyYXA7b3ZlcmZsb3c6aGlkZGVuO3RleHQtb3ZlcmZsb3c6ZWxsaXBzaXM7ZGlzcGxheTpibG9jaztib3gtc2l6aW5nOmJvcmRlci1ib3h9Lm1hdC1saXN0LWJhc2VbZGVuc2VdW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGlzdC1vcHRpb25bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saW5lW19uZ2NvbnRlbnQtJUNPTVAlXTpudGgtY2hpbGQobisyKXtmb250LXNpemU6MTJweH0ubWF0LWxpc3QtYmFzZVtkZW5zZV1bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1zdWJoZWFkZXJbX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtmb250LXNpemU6MTJweDtmb250LXdlaWdodDo1MDB9Lm1hdC1vcHRpb25bX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtmb250LXNpemU6MTZweH0ubWF0LW9wdGdyb3VwLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250OjUwMCAxNHB4LzI0cHggUm9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2xldHRlci1zcGFjaW5nOm5vcm1hbH0ubWF0LXNpbXBsZS1zbmFja2Jhcltfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2ZvbnQtc2l6ZToxNHB4fS5tYXQtc2ltcGxlLXNuYWNrYmFyLWFjdGlvbltfbmdjb250ZW50LSVDT01QJV17bGluZS1oZWlnaHQ6MTtmb250LWZhbWlseTppbmhlcml0O2ZvbnQtc2l6ZTppbmhlcml0O2ZvbnQtd2VpZ2h0OjUwMH0ubWF0LXRyZWVbX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZn0ubWF0LXRyZWUtbm9kZVtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtbmVzdGVkLXRyZWUtbm9kZVtfbmdjb250ZW50LSVDT01QJV17Zm9udC13ZWlnaHQ6NDAwO2ZvbnQtc2l6ZToxNHB4fS5tYXQtcmlwcGxlW19uZ2NvbnRlbnQtJUNPTVAlXXtvdmVyZmxvdzpoaWRkZW47cG9zaXRpb246cmVsYXRpdmV9Lm1hdC1yaXBwbGVbX25nY29udGVudC0lQ09NUCVdOm5vdCg6ZW1wdHkpe3RyYW5zZm9ybTp0cmFuc2xhdGVaKDApfS5tYXQtcmlwcGxlLm1hdC1yaXBwbGUtdW5ib3VuZGVkW19uZ2NvbnRlbnQtJUNPTVAlXXtvdmVyZmxvdzp2aXNpYmxlfS5tYXQtcmlwcGxlLWVsZW1lbnRbX25nY29udGVudC0lQ09NUCVde3Bvc2l0aW9uOmFic29sdXRlO2JvcmRlci1yYWRpdXM6NTAlO3BvaW50ZXItZXZlbnRzOm5vbmU7dHJhbnNpdGlvbjpvcGFjaXR5LHRyYW5zZm9ybSAwbXMgY3ViaWMtYmV6aWVyKDAsIDAsIDAuMiwgMSk7dHJhbnNmb3JtOnNjYWxlKDApfS5jZGstaGlnaC1jb250cmFzdC1hY3RpdmVbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1yaXBwbGUtZWxlbWVudFtfbmdjb250ZW50LSVDT01QJV17ZGlzcGxheTpub25lfS5jZGstdmlzdWFsbHktaGlkZGVuW19uZ2NvbnRlbnQtJUNPTVAlXXtib3JkZXI6MDtjbGlwOnJlY3QoMCAwIDAgMCk7aGVpZ2h0OjFweDttYXJnaW46LTFweDtvdmVyZmxvdzpoaWRkZW47cGFkZGluZzowO3Bvc2l0aW9uOmFic29sdXRlO3dpZHRoOjFweDtvdXRsaW5lOjA7LXdlYmtpdC1hcHBlYXJhbmNlOm5vbmU7LW1vei1hcHBlYXJhbmNlOm5vbmV9LmNkay1vdmVybGF5LWNvbnRhaW5lcltfbmdjb250ZW50LSVDT01QJV0sIC5jZGstZ2xvYmFsLW92ZXJsYXktd3JhcHBlcltfbmdjb250ZW50LSVDT01QJV17cG9pbnRlci1ldmVudHM6bm9uZTt0b3A6MDtsZWZ0OjA7aGVpZ2h0OjEwMCU7d2lkdGg6MTAwJX0uY2RrLW92ZXJsYXktY29udGFpbmVyW19uZ2NvbnRlbnQtJUNPTVAlXXtwb3NpdGlvbjpmaXhlZDt6LWluZGV4OjEwMDB9LmNkay1vdmVybGF5LWNvbnRhaW5lcltfbmdjb250ZW50LSVDT01QJV06ZW1wdHl7ZGlzcGxheTpub25lfS5jZGstZ2xvYmFsLW92ZXJsYXktd3JhcHBlcltfbmdjb250ZW50LSVDT01QJV17ZGlzcGxheTpmbGV4O3Bvc2l0aW9uOmFic29sdXRlO3otaW5kZXg6MTAwMH0uY2RrLW92ZXJsYXktcGFuZVtfbmdjb250ZW50LSVDT01QJV17cG9zaXRpb246YWJzb2x1dGU7cG9pbnRlci1ldmVudHM6YXV0bztib3gtc2l6aW5nOmJvcmRlci1ib3g7ei1pbmRleDoxMDAwO2Rpc3BsYXk6ZmxleDttYXgtd2lkdGg6MTAwJTttYXgtaGVpZ2h0OjEwMCV9LmNkay1vdmVybGF5LWJhY2tkcm9wW19uZ2NvbnRlbnQtJUNPTVAlXXtwb3NpdGlvbjphYnNvbHV0ZTt0b3A6MDtib3R0b206MDtsZWZ0OjA7cmlnaHQ6MDt6LWluZGV4OjEwMDA7cG9pbnRlci1ldmVudHM6YXV0bzstd2Via2l0LXRhcC1oaWdobGlnaHQtY29sb3I6dHJhbnNwYXJlbnQ7dHJhbnNpdGlvbjpvcGFjaXR5IDQwMG1zIGN1YmljLWJlemllcigwLjI1LCAwLjgsIDAuMjUsIDEpO29wYWNpdHk6MH0uY2RrLW92ZXJsYXktYmFja2Ryb3AuY2RrLW92ZXJsYXktYmFja2Ryb3Atc2hvd2luZ1tfbmdjb250ZW50LSVDT01QJV17b3BhY2l0eToxfUBtZWRpYSBzY3JlZW4gYW5kICgtbXMtaGlnaC1jb250cmFzdDogYWN0aXZlKXsuY2RrLW92ZXJsYXktYmFja2Ryb3AuY2RrLW92ZXJsYXktYmFja2Ryb3Atc2hvd2luZ1tfbmdjb250ZW50LSVDT01QJV17b3BhY2l0eTouNn19LmNkay1vdmVybGF5LWRhcmstYmFja2Ryb3BbX25nY29udGVudC0lQ09NUCVde2JhY2tncm91bmQ6cmdiYSgwLDAsMCwuMzIpfS5jZGstb3ZlcmxheS10cmFuc3BhcmVudC1iYWNrZHJvcFtfbmdjb250ZW50LSVDT01QJV0sIC5jZGstb3ZlcmxheS10cmFuc3BhcmVudC1iYWNrZHJvcC5jZGstb3ZlcmxheS1iYWNrZHJvcC1zaG93aW5nW19uZ2NvbnRlbnQtJUNPTVAlXXtvcGFjaXR5OjB9LmNkay1vdmVybGF5LWNvbm5lY3RlZC1wb3NpdGlvbi1ib3VuZGluZy1ib3hbX25nY29udGVudC0lQ09NUCVde3Bvc2l0aW9uOmFic29sdXRlO3otaW5kZXg6MTAwMDtkaXNwbGF5OmZsZXg7ZmxleC1kaXJlY3Rpb246Y29sdW1uO21pbi13aWR0aDoxcHg7bWluLWhlaWdodDoxcHh9LmNkay1nbG9iYWwtc2Nyb2xsYmxvY2tbX25nY29udGVudC0lQ09NUCVde3Bvc2l0aW9uOmZpeGVkO3dpZHRoOjEwMCU7b3ZlcmZsb3cteTpzY3JvbGx9QGtleWZyYW1lcyBjZGstdGV4dC1maWVsZC1hdXRvZmlsbC1zdGFydHt9QGtleWZyYW1lcyBjZGstdGV4dC1maWVsZC1hdXRvZmlsbC1lbmR7fS5jZGstdGV4dC1maWVsZC1hdXRvZmlsbC1tb25pdG9yZWRbX25nY29udGVudC0lQ09NUCVdOi13ZWJraXQtYXV0b2ZpbGx7YW5pbWF0aW9uOmNkay10ZXh0LWZpZWxkLWF1dG9maWxsLXN0YXJ0IDBzIDFtc30uY2RrLXRleHQtZmllbGQtYXV0b2ZpbGwtbW9uaXRvcmVkW19uZ2NvbnRlbnQtJUNPTVAlXTpub3QoOi13ZWJraXQtYXV0b2ZpbGwpe2FuaW1hdGlvbjpjZGstdGV4dC1maWVsZC1hdXRvZmlsbC1lbmQgMHMgMW1zfXRleHRhcmVhLmNkay10ZXh0YXJlYS1hdXRvc2l6ZVtfbmdjb250ZW50LSVDT01QJV17cmVzaXplOm5vbmV9dGV4dGFyZWEuY2RrLXRleHRhcmVhLWF1dG9zaXplLW1lYXN1cmluZ1tfbmdjb250ZW50LSVDT01QJV17cGFkZGluZzoycHggMCAhaW1wb3J0YW50O2JveC1zaXppbmc6Y29udGVudC1ib3ggIWltcG9ydGFudDtoZWlnaHQ6YXV0byAhaW1wb3J0YW50O292ZXJmbG93OmhpZGRlbiAhaW1wb3J0YW50fXRleHRhcmVhLmNkay10ZXh0YXJlYS1hdXRvc2l6ZS1tZWFzdXJpbmctZmlyZWZveFtfbmdjb250ZW50LSVDT01QJV17cGFkZGluZzoycHggMCAhaW1wb3J0YW50O2JveC1zaXppbmc6Y29udGVudC1ib3ggIWltcG9ydGFudDtoZWlnaHQ6MCAhaW1wb3J0YW50fS5tYXQtZm9jdXMtaW5kaWNhdG9yW19uZ2NvbnRlbnQtJUNPTVAlXXtwb3NpdGlvbjpyZWxhdGl2ZX0ubWF0LW1kYy1mb2N1cy1pbmRpY2F0b3JbX25nY29udGVudC0lQ09NUCVde3Bvc2l0aW9uOnJlbGF0aXZlfS5tYXQtcmlwcGxlLWVsZW1lbnRbX25nY29udGVudC0lQ09NUCVde2JhY2tncm91bmQtY29sb3I6cmdiYSgwLDAsMCwuMSl9Lm1hdC1vcHRpb25bX25nY29udGVudC0lQ09NUCVde2NvbG9yOiMyMTIxMjF9Lm1hdC1vcHRpb25bX25nY29udGVudC0lQ09NUCVdOmhvdmVyOm5vdCgubWF0LW9wdGlvbi1kaXNhYmxlZCksIC5tYXQtb3B0aW9uW19uZ2NvbnRlbnQtJUNPTVAlXTpmb2N1czpub3QoLm1hdC1vcHRpb24tZGlzYWJsZWQpe2JhY2tncm91bmQ6cmdiYSgwLDAsMCwuMDQpfS5tYXQtb3B0aW9uLm1hdC1zZWxlY3RlZFtfbmdjb250ZW50LSVDT01QJV06bm90KC5tYXQtb3B0aW9uLW11bHRpcGxlKTpub3QoLm1hdC1vcHRpb24tZGlzYWJsZWQpe2JhY2tncm91bmQ6cmdiYSgwLDAsMCwuMDQpfS5tYXQtb3B0aW9uLm1hdC1hY3RpdmVbX25nY29udGVudC0lQ09NUCVde2JhY2tncm91bmQ6cmdiYSgwLDAsMCwuMDQpO2NvbG9yOiMyMTIxMjF9Lm1hdC1vcHRpb24ubWF0LW9wdGlvbi1kaXNhYmxlZFtfbmdjb250ZW50LSVDT01QJV17Y29sb3I6cmdiYSgwLDAsMCwuMzgpfS5tYXQtcHJpbWFyeVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LW9wdGlvbi5tYXQtc2VsZWN0ZWRbX25nY29udGVudC0lQ09NUCVdOm5vdCgubWF0LW9wdGlvbi1kaXNhYmxlZCl7Y29sb3I6I2Y1N2MwMH0ubWF0LWFjY2VudFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LW9wdGlvbi5tYXQtc2VsZWN0ZWRbX25nY29udGVudC0lQ09NUCVdOm5vdCgubWF0LW9wdGlvbi1kaXNhYmxlZCl7Y29sb3I6I2ZmOTgwMH0ubWF0LXdhcm5bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1vcHRpb24ubWF0LXNlbGVjdGVkW19uZ2NvbnRlbnQtJUNPTVAlXTpub3QoLm1hdC1vcHRpb24tZGlzYWJsZWQpe2NvbG9yOiNmNDQzMzZ9Lm1hdC1vcHRncm91cC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17Y29sb3I6IzYxNjE2MX0ubWF0LW9wdGdyb3VwLWRpc2FibGVkW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtb3B0Z3JvdXAtbGFiZWxbX25nY29udGVudC0lQ09NUCVde2NvbG9yOnJnYmEoMCwwLDAsLjM4KX0ubWF0LXBzZXVkby1jaGVja2JveFtfbmdjb250ZW50LSVDT01QJV17Y29sb3I6IzYxNjE2MX0ubWF0LXBzZXVkby1jaGVja2JveFtfbmdjb250ZW50LSVDT01QJV06OmFmdGVye2NvbG9yOiNmYWZhZmF9Lm1hdC1wc2V1ZG8tY2hlY2tib3gtZGlzYWJsZWRbX25nY29udGVudC0lQ09NUCVde2NvbG9yOiNiMGIwYjB9Lm1hdC1wcmltYXJ5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtcHNldWRvLWNoZWNrYm94LWNoZWNrZWRbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXByaW1hcnlbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1wc2V1ZG8tY2hlY2tib3gtaW5kZXRlcm1pbmF0ZVtfbmdjb250ZW50LSVDT01QJV17YmFja2dyb3VuZDojZjU3YzAwfS5tYXQtcHNldWRvLWNoZWNrYm94LWNoZWNrZWRbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXBzZXVkby1jaGVja2JveC1pbmRldGVybWluYXRlW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1hY2NlbnRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1wc2V1ZG8tY2hlY2tib3gtY2hlY2tlZFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtYWNjZW50W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtcHNldWRvLWNoZWNrYm94LWluZGV0ZXJtaW5hdGVbX25nY29udGVudC0lQ09NUCVde2JhY2tncm91bmQ6I2ZmOTgwMH0ubWF0LXdhcm5bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1wc2V1ZG8tY2hlY2tib3gtY2hlY2tlZFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtd2Fybltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXBzZXVkby1jaGVja2JveC1pbmRldGVybWluYXRlW19uZ2NvbnRlbnQtJUNPTVAlXXtiYWNrZ3JvdW5kOiNmNDQzMzZ9Lm1hdC1wc2V1ZG8tY2hlY2tib3gtY2hlY2tlZC5tYXQtcHNldWRvLWNoZWNrYm94LWRpc2FibGVkW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1wc2V1ZG8tY2hlY2tib3gtaW5kZXRlcm1pbmF0ZS5tYXQtcHNldWRvLWNoZWNrYm94LWRpc2FibGVkW19uZ2NvbnRlbnQtJUNPTVAlXXtiYWNrZ3JvdW5kOiNiMGIwYjB9Lm1hdC1hcHAtYmFja2dyb3VuZFtfbmdjb250ZW50LSVDT01QJV17YmFja2dyb3VuZC1jb2xvcjojZmFmYWZhO2NvbG9yOiMyMTIxMjF9Lm1hdC1lbGV2YXRpb24tejBbX25nY29udGVudC0lQ09NUCVde2JveC1zaGFkb3c6MHB4IDBweCAwcHggMHB4IHJnYmEoMCwgMCwgMCwgMC4yKSwwcHggMHB4IDBweCAwcHggcmdiYSgwLCAwLCAwLCAwLjE0KSwwcHggMHB4IDBweCAwcHggcmdiYSgwLCAwLCAwLCAwLjEyKX0ubWF0LWVsZXZhdGlvbi16MVtfbmdjb250ZW50LSVDT01QJV17Ym94LXNoYWRvdzowcHggMnB4IDFweCAtMXB4IHJnYmEoMCwgMCwgMCwgMC4yKSwwcHggMXB4IDFweCAwcHggcmdiYSgwLCAwLCAwLCAwLjE0KSwwcHggMXB4IDNweCAwcHggcmdiYSgwLCAwLCAwLCAwLjEyKX0ubWF0LWVsZXZhdGlvbi16Mltfbmdjb250ZW50LSVDT01QJV17Ym94LXNoYWRvdzowcHggM3B4IDFweCAtMnB4IHJnYmEoMCwgMCwgMCwgMC4yKSwwcHggMnB4IDJweCAwcHggcmdiYSgwLCAwLCAwLCAwLjE0KSwwcHggMXB4IDVweCAwcHggcmdiYSgwLCAwLCAwLCAwLjEyKX0ubWF0LWVsZXZhdGlvbi16M1tfbmdjb250ZW50LSVDT01QJV17Ym94LXNoYWRvdzowcHggM3B4IDNweCAtMnB4IHJnYmEoMCwgMCwgMCwgMC4yKSwwcHggM3B4IDRweCAwcHggcmdiYSgwLCAwLCAwLCAwLjE0KSwwcHggMXB4IDhweCAwcHggcmdiYSgwLCAwLCAwLCAwLjEyKX0ubWF0LWVsZXZhdGlvbi16NFtfbmdjb250ZW50LSVDT01QJV17Ym94LXNoYWRvdzowcHggMnB4IDRweCAtMXB4IHJnYmEoMCwgMCwgMCwgMC4yKSwwcHggNHB4IDVweCAwcHggcmdiYSgwLCAwLCAwLCAwLjE0KSwwcHggMXB4IDEwcHggMHB4IHJnYmEoMCwgMCwgMCwgMC4xMil9Lm1hdC1lbGV2YXRpb24tejVbX25nY29udGVudC0lQ09NUCVde2JveC1zaGFkb3c6MHB4IDNweCA1cHggLTFweCByZ2JhKDAsIDAsIDAsIDAuMiksMHB4IDVweCA4cHggMHB4IHJnYmEoMCwgMCwgMCwgMC4xNCksMHB4IDFweCAxNHB4IDBweCByZ2JhKDAsIDAsIDAsIDAuMTIpfS5tYXQtZWxldmF0aW9uLXo2W19uZ2NvbnRlbnQtJUNPTVAlXXtib3gtc2hhZG93OjBweCAzcHggNXB4IC0xcHggcmdiYSgwLCAwLCAwLCAwLjIpLDBweCA2cHggMTBweCAwcHggcmdiYSgwLCAwLCAwLCAwLjE0KSwwcHggMXB4IDE4cHggMHB4IHJnYmEoMCwgMCwgMCwgMC4xMil9Lm1hdC1lbGV2YXRpb24tejdbX25nY29udGVudC0lQ09NUCVde2JveC1zaGFkb3c6MHB4IDRweCA1cHggLTJweCByZ2JhKDAsIDAsIDAsIDAuMiksMHB4IDdweCAxMHB4IDFweCByZ2JhKDAsIDAsIDAsIDAuMTQpLDBweCAycHggMTZweCAxcHggcmdiYSgwLCAwLCAwLCAwLjEyKX0ubWF0LWVsZXZhdGlvbi16OFtfbmdjb250ZW50LSVDT01QJV17Ym94LXNoYWRvdzowcHggNXB4IDVweCAtM3B4IHJnYmEoMCwgMCwgMCwgMC4yKSwwcHggOHB4IDEwcHggMXB4IHJnYmEoMCwgMCwgMCwgMC4xNCksMHB4IDNweCAxNHB4IDJweCByZ2JhKDAsIDAsIDAsIDAuMTIpfS5tYXQtZWxldmF0aW9uLXo5W19uZ2NvbnRlbnQtJUNPTVAlXXtib3gtc2hhZG93OjBweCA1cHggNnB4IC0zcHggcmdiYSgwLCAwLCAwLCAwLjIpLDBweCA5cHggMTJweCAxcHggcmdiYSgwLCAwLCAwLCAwLjE0KSwwcHggM3B4IDE2cHggMnB4IHJnYmEoMCwgMCwgMCwgMC4xMil9Lm1hdC1lbGV2YXRpb24tejEwW19uZ2NvbnRlbnQtJUNPTVAlXXtib3gtc2hhZG93OjBweCA2cHggNnB4IC0zcHggcmdiYSgwLCAwLCAwLCAwLjIpLDBweCAxMHB4IDE0cHggMXB4IHJnYmEoMCwgMCwgMCwgMC4xNCksMHB4IDRweCAxOHB4IDNweCByZ2JhKDAsIDAsIDAsIDAuMTIpfS5tYXQtZWxldmF0aW9uLXoxMVtfbmdjb250ZW50LSVDT01QJV17Ym94LXNoYWRvdzowcHggNnB4IDdweCAtNHB4IHJnYmEoMCwgMCwgMCwgMC4yKSwwcHggMTFweCAxNXB4IDFweCByZ2JhKDAsIDAsIDAsIDAuMTQpLDBweCA0cHggMjBweCAzcHggcmdiYSgwLCAwLCAwLCAwLjEyKX0ubWF0LWVsZXZhdGlvbi16MTJbX25nY29udGVudC0lQ09NUCVde2JveC1zaGFkb3c6MHB4IDdweCA4cHggLTRweCByZ2JhKDAsIDAsIDAsIDAuMiksMHB4IDEycHggMTdweCAycHggcmdiYSgwLCAwLCAwLCAwLjE0KSwwcHggNXB4IDIycHggNHB4IHJnYmEoMCwgMCwgMCwgMC4xMil9Lm1hdC1lbGV2YXRpb24tejEzW19uZ2NvbnRlbnQtJUNPTVAlXXtib3gtc2hhZG93OjBweCA3cHggOHB4IC00cHggcmdiYSgwLCAwLCAwLCAwLjIpLDBweCAxM3B4IDE5cHggMnB4IHJnYmEoMCwgMCwgMCwgMC4xNCksMHB4IDVweCAyNHB4IDRweCByZ2JhKDAsIDAsIDAsIDAuMTIpfS5tYXQtZWxldmF0aW9uLXoxNFtfbmdjb250ZW50LSVDT01QJV17Ym94LXNoYWRvdzowcHggN3B4IDlweCAtNHB4IHJnYmEoMCwgMCwgMCwgMC4yKSwwcHggMTRweCAyMXB4IDJweCByZ2JhKDAsIDAsIDAsIDAuMTQpLDBweCA1cHggMjZweCA0cHggcmdiYSgwLCAwLCAwLCAwLjEyKX0ubWF0LWVsZXZhdGlvbi16MTVbX25nY29udGVudC0lQ09NUCVde2JveC1zaGFkb3c6MHB4IDhweCA5cHggLTVweCByZ2JhKDAsIDAsIDAsIDAuMiksMHB4IDE1cHggMjJweCAycHggcmdiYSgwLCAwLCAwLCAwLjE0KSwwcHggNnB4IDI4cHggNXB4IHJnYmEoMCwgMCwgMCwgMC4xMil9Lm1hdC1lbGV2YXRpb24tejE2W19uZ2NvbnRlbnQtJUNPTVAlXXtib3gtc2hhZG93OjBweCA4cHggMTBweCAtNXB4IHJnYmEoMCwgMCwgMCwgMC4yKSwwcHggMTZweCAyNHB4IDJweCByZ2JhKDAsIDAsIDAsIDAuMTQpLDBweCA2cHggMzBweCA1cHggcmdiYSgwLCAwLCAwLCAwLjEyKX0ubWF0LWVsZXZhdGlvbi16MTdbX25nY29udGVudC0lQ09NUCVde2JveC1zaGFkb3c6MHB4IDhweCAxMXB4IC01cHggcmdiYSgwLCAwLCAwLCAwLjIpLDBweCAxN3B4IDI2cHggMnB4IHJnYmEoMCwgMCwgMCwgMC4xNCksMHB4IDZweCAzMnB4IDVweCByZ2JhKDAsIDAsIDAsIDAuMTIpfS5tYXQtZWxldmF0aW9uLXoxOFtfbmdjb250ZW50LSVDT01QJV17Ym94LXNoYWRvdzowcHggOXB4IDExcHggLTVweCByZ2JhKDAsIDAsIDAsIDAuMiksMHB4IDE4cHggMjhweCAycHggcmdiYSgwLCAwLCAwLCAwLjE0KSwwcHggN3B4IDM0cHggNnB4IHJnYmEoMCwgMCwgMCwgMC4xMil9Lm1hdC1lbGV2YXRpb24tejE5W19uZ2NvbnRlbnQtJUNPTVAlXXtib3gtc2hhZG93OjBweCA5cHggMTJweCAtNnB4IHJnYmEoMCwgMCwgMCwgMC4yKSwwcHggMTlweCAyOXB4IDJweCByZ2JhKDAsIDAsIDAsIDAuMTQpLDBweCA3cHggMzZweCA2cHggcmdiYSgwLCAwLCAwLCAwLjEyKX0ubWF0LWVsZXZhdGlvbi16MjBbX25nY29udGVudC0lQ09NUCVde2JveC1zaGFkb3c6MHB4IDEwcHggMTNweCAtNnB4IHJnYmEoMCwgMCwgMCwgMC4yKSwwcHggMjBweCAzMXB4IDNweCByZ2JhKDAsIDAsIDAsIDAuMTQpLDBweCA4cHggMzhweCA3cHggcmdiYSgwLCAwLCAwLCAwLjEyKX0ubWF0LWVsZXZhdGlvbi16MjFbX25nY29udGVudC0lQ09NUCVde2JveC1zaGFkb3c6MHB4IDEwcHggMTNweCAtNnB4IHJnYmEoMCwgMCwgMCwgMC4yKSwwcHggMjFweCAzM3B4IDNweCByZ2JhKDAsIDAsIDAsIDAuMTQpLDBweCA4cHggNDBweCA3cHggcmdiYSgwLCAwLCAwLCAwLjEyKX0ubWF0LWVsZXZhdGlvbi16MjJbX25nY29udGVudC0lQ09NUCVde2JveC1zaGFkb3c6MHB4IDEwcHggMTRweCAtNnB4IHJnYmEoMCwgMCwgMCwgMC4yKSwwcHggMjJweCAzNXB4IDNweCByZ2JhKDAsIDAsIDAsIDAuMTQpLDBweCA4cHggNDJweCA3cHggcmdiYSgwLCAwLCAwLCAwLjEyKX0ubWF0LWVsZXZhdGlvbi16MjNbX25nY29udGVudC0lQ09NUCVde2JveC1zaGFkb3c6MHB4IDExcHggMTRweCAtN3B4IHJnYmEoMCwgMCwgMCwgMC4yKSwwcHggMjNweCAzNnB4IDNweCByZ2JhKDAsIDAsIDAsIDAuMTQpLDBweCA5cHggNDRweCA4cHggcmdiYSgwLCAwLCAwLCAwLjEyKX0ubWF0LWVsZXZhdGlvbi16MjRbX25nY29udGVudC0lQ09NUCVde2JveC1zaGFkb3c6MHB4IDExcHggMTVweCAtN3B4IHJnYmEoMCwgMCwgMCwgMC4yKSwwcHggMjRweCAzOHB4IDNweCByZ2JhKDAsIDAsIDAsIDAuMTQpLDBweCA5cHggNDZweCA4cHggcmdiYSgwLCAwLCAwLCAwLjEyKX0ubWF0LXRoZW1lLWxvYWRlZC1tYXJrZXJbX25nY29udGVudC0lQ09NUCVde2Rpc3BsYXk6bm9uZX0ubWF0LWF1dG9jb21wbGV0ZS1wYW5lbFtfbmdjb250ZW50LSVDT01QJV17YmFja2dyb3VuZDojZmZmO2NvbG9yOiMyMTIxMjF9Lm1hdC1hdXRvY29tcGxldGUtcGFuZWxbX25nY29udGVudC0lQ09NUCVdOm5vdChbY2xhc3MqPW1hdC1lbGV2YXRpb24tel0pe2JveC1zaGFkb3c6MHB4IDJweCA0cHggLTFweCByZ2JhKDAsIDAsIDAsIDAuMiksMHB4IDRweCA1cHggMHB4IHJnYmEoMCwgMCwgMCwgMC4xNCksMHB4IDFweCAxMHB4IDBweCByZ2JhKDAsIDAsIDAsIDAuMTIpfS5tYXQtYXV0b2NvbXBsZXRlLXBhbmVsW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtb3B0aW9uLm1hdC1zZWxlY3RlZFtfbmdjb250ZW50LSVDT01QJV06bm90KC5tYXQtYWN0aXZlKTpub3QoOmhvdmVyKXtiYWNrZ3JvdW5kOiNmZmZ9Lm1hdC1hdXRvY29tcGxldGUtcGFuZWxbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1vcHRpb24ubWF0LXNlbGVjdGVkW19uZ2NvbnRlbnQtJUNPTVAlXTpub3QoLm1hdC1hY3RpdmUpOm5vdCg6aG92ZXIpOm5vdCgubWF0LW9wdGlvbi1kaXNhYmxlZCl7Y29sb3I6IzIxMjEyMX0ubWF0LWJhZGdlLWNvbnRlbnRbX25nY29udGVudC0lQ09NUCVde2NvbG9yOiNmZmY7YmFja2dyb3VuZDojZjU3YzAwfS5jZGstaGlnaC1jb250cmFzdC1hY3RpdmVbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1iYWRnZS1jb250ZW50W19uZ2NvbnRlbnQtJUNPTVAlXXtvdXRsaW5lOnNvbGlkIDFweDtib3JkZXItcmFkaXVzOjB9Lm1hdC1iYWRnZS1hY2NlbnRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1iYWRnZS1jb250ZW50W19uZ2NvbnRlbnQtJUNPTVAlXXtiYWNrZ3JvdW5kOiNmZjk4MDA7Y29sb3I6I2ZmZn0ubWF0LWJhZGdlLXdhcm5bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1iYWRnZS1jb250ZW50W19uZ2NvbnRlbnQtJUNPTVAlXXtjb2xvcjojZmZmO2JhY2tncm91bmQ6I2Y0NDMzNn0ubWF0LWJhZGdlW19uZ2NvbnRlbnQtJUNPTVAlXXtwb3NpdGlvbjpyZWxhdGl2ZX0ubWF0LWJhZGdlLWhpZGRlbltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWJhZGdlLWNvbnRlbnRbX25nY29udGVudC0lQ09NUCVde2Rpc3BsYXk6bm9uZX0ubWF0LWJhZGdlLWRpc2FibGVkW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtYmFkZ2UtY29udGVudFtfbmdjb250ZW50LSVDT01QJV17YmFja2dyb3VuZDojYjliOWI5O2NvbG9yOiM3NTc1NzV9Lm1hdC1iYWRnZS1jb250ZW50W19uZ2NvbnRlbnQtJUNPTVAlXXtwb3NpdGlvbjphYnNvbHV0ZTt0ZXh0LWFsaWduOmNlbnRlcjtkaXNwbGF5OmlubGluZS1ibG9jaztib3JkZXItcmFkaXVzOjUwJTt0cmFuc2l0aW9uOnRyYW5zZm9ybSAyMDBtcyBlYXNlLWluLW91dDt0cmFuc2Zvcm06c2NhbGUoMC42KTtvdmVyZmxvdzpoaWRkZW47d2hpdGUtc3BhY2U6bm93cmFwO3RleHQtb3ZlcmZsb3c6ZWxsaXBzaXM7cG9pbnRlci1ldmVudHM6bm9uZX0ubmctYW5pbWF0ZS1kaXNhYmxlZFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWJhZGdlLWNvbnRlbnRbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWJhZGdlLWNvbnRlbnQuX21hdC1hbmltYXRpb24tbm9vcGFibGVbX25nY29udGVudC0lQ09NUCVde3RyYW5zaXRpb246bm9uZX0ubWF0LWJhZGdlLWNvbnRlbnQubWF0LWJhZGdlLWFjdGl2ZVtfbmdjb250ZW50LSVDT01QJV17dHJhbnNmb3JtOm5vbmV9Lm1hdC1iYWRnZS1zbWFsbFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWJhZGdlLWNvbnRlbnRbX25nY29udGVudC0lQ09NUCVde3dpZHRoOjE2cHg7aGVpZ2h0OjE2cHg7bGluZS1oZWlnaHQ6MTZweH0ubWF0LWJhZGdlLXNtYWxsLm1hdC1iYWRnZS1hYm92ZVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWJhZGdlLWNvbnRlbnRbX25nY29udGVudC0lQ09NUCVde3RvcDotOHB4fS5tYXQtYmFkZ2Utc21hbGwubWF0LWJhZGdlLWJlbG93W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtYmFkZ2UtY29udGVudFtfbmdjb250ZW50LSVDT01QJV17Ym90dG9tOi04cHh9Lm1hdC1iYWRnZS1zbWFsbC5tYXQtYmFkZ2UtYmVmb3JlW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtYmFkZ2UtY29udGVudFtfbmdjb250ZW50LSVDT01QJV17bGVmdDotMTZweH1bZGlyPXJ0bF1bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1iYWRnZS1zbWFsbC5tYXQtYmFkZ2UtYmVmb3JlW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtYmFkZ2UtY29udGVudFtfbmdjb250ZW50LSVDT01QJV17bGVmdDphdXRvO3JpZ2h0Oi0xNnB4fS5tYXQtYmFkZ2Utc21hbGwubWF0LWJhZGdlLWFmdGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtYmFkZ2UtY29udGVudFtfbmdjb250ZW50LSVDT01QJV17cmlnaHQ6LTE2cHh9W2Rpcj1ydGxdW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtYmFkZ2Utc21hbGwubWF0LWJhZGdlLWFmdGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtYmFkZ2UtY29udGVudFtfbmdjb250ZW50LSVDT01QJV17cmlnaHQ6YXV0bztsZWZ0Oi0xNnB4fS5tYXQtYmFkZ2Utc21hbGwubWF0LWJhZGdlLW92ZXJsYXAubWF0LWJhZGdlLWJlZm9yZVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWJhZGdlLWNvbnRlbnRbX25nY29udGVudC0lQ09NUCVde2xlZnQ6LThweH1bZGlyPXJ0bF1bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1iYWRnZS1zbWFsbC5tYXQtYmFkZ2Utb3ZlcmxhcC5tYXQtYmFkZ2UtYmVmb3JlW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtYmFkZ2UtY29udGVudFtfbmdjb250ZW50LSVDT01QJV17bGVmdDphdXRvO3JpZ2h0Oi04cHh9Lm1hdC1iYWRnZS1zbWFsbC5tYXQtYmFkZ2Utb3ZlcmxhcC5tYXQtYmFkZ2UtYWZ0ZXJbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1iYWRnZS1jb250ZW50W19uZ2NvbnRlbnQtJUNPTVAlXXtyaWdodDotOHB4fVtkaXI9cnRsXVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWJhZGdlLXNtYWxsLm1hdC1iYWRnZS1vdmVybGFwLm1hdC1iYWRnZS1hZnRlcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWJhZGdlLWNvbnRlbnRbX25nY29udGVudC0lQ09NUCVde3JpZ2h0OmF1dG87bGVmdDotOHB4fS5tYXQtYmFkZ2UtbWVkaXVtW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtYmFkZ2UtY29udGVudFtfbmdjb250ZW50LSVDT01QJV17d2lkdGg6MjJweDtoZWlnaHQ6MjJweDtsaW5lLWhlaWdodDoyMnB4fS5tYXQtYmFkZ2UtbWVkaXVtLm1hdC1iYWRnZS1hYm92ZVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWJhZGdlLWNvbnRlbnRbX25nY29udGVudC0lQ09NUCVde3RvcDotMTFweH0ubWF0LWJhZGdlLW1lZGl1bS5tYXQtYmFkZ2UtYmVsb3dbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1iYWRnZS1jb250ZW50W19uZ2NvbnRlbnQtJUNPTVAlXXtib3R0b206LTExcHh9Lm1hdC1iYWRnZS1tZWRpdW0ubWF0LWJhZGdlLWJlZm9yZVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWJhZGdlLWNvbnRlbnRbX25nY29udGVudC0lQ09NUCVde2xlZnQ6LTIycHh9W2Rpcj1ydGxdW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtYmFkZ2UtbWVkaXVtLm1hdC1iYWRnZS1iZWZvcmVbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1iYWRnZS1jb250ZW50W19uZ2NvbnRlbnQtJUNPTVAlXXtsZWZ0OmF1dG87cmlnaHQ6LTIycHh9Lm1hdC1iYWRnZS1tZWRpdW0ubWF0LWJhZGdlLWFmdGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtYmFkZ2UtY29udGVudFtfbmdjb250ZW50LSVDT01QJV17cmlnaHQ6LTIycHh9W2Rpcj1ydGxdW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtYmFkZ2UtbWVkaXVtLm1hdC1iYWRnZS1hZnRlcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWJhZGdlLWNvbnRlbnRbX25nY29udGVudC0lQ09NUCVde3JpZ2h0OmF1dG87bGVmdDotMjJweH0ubWF0LWJhZGdlLW1lZGl1bS5tYXQtYmFkZ2Utb3ZlcmxhcC5tYXQtYmFkZ2UtYmVmb3JlW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtYmFkZ2UtY29udGVudFtfbmdjb250ZW50LSVDT01QJV17bGVmdDotMTFweH1bZGlyPXJ0bF1bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1iYWRnZS1tZWRpdW0ubWF0LWJhZGdlLW92ZXJsYXAubWF0LWJhZGdlLWJlZm9yZVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWJhZGdlLWNvbnRlbnRbX25nY29udGVudC0lQ09NUCVde2xlZnQ6YXV0bztyaWdodDotMTFweH0ubWF0LWJhZGdlLW1lZGl1bS5tYXQtYmFkZ2Utb3ZlcmxhcC5tYXQtYmFkZ2UtYWZ0ZXJbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1iYWRnZS1jb250ZW50W19uZ2NvbnRlbnQtJUNPTVAlXXtyaWdodDotMTFweH1bZGlyPXJ0bF1bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1iYWRnZS1tZWRpdW0ubWF0LWJhZGdlLW92ZXJsYXAubWF0LWJhZGdlLWFmdGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtYmFkZ2UtY29udGVudFtfbmdjb250ZW50LSVDT01QJV17cmlnaHQ6YXV0bztsZWZ0Oi0xMXB4fS5tYXQtYmFkZ2UtbGFyZ2VbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1iYWRnZS1jb250ZW50W19uZ2NvbnRlbnQtJUNPTVAlXXt3aWR0aDoyOHB4O2hlaWdodDoyOHB4O2xpbmUtaGVpZ2h0OjI4cHh9Lm1hdC1iYWRnZS1sYXJnZS5tYXQtYmFkZ2UtYWJvdmVbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1iYWRnZS1jb250ZW50W19uZ2NvbnRlbnQtJUNPTVAlXXt0b3A6LTE0cHh9Lm1hdC1iYWRnZS1sYXJnZS5tYXQtYmFkZ2UtYmVsb3dbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1iYWRnZS1jb250ZW50W19uZ2NvbnRlbnQtJUNPTVAlXXtib3R0b206LTE0cHh9Lm1hdC1iYWRnZS1sYXJnZS5tYXQtYmFkZ2UtYmVmb3JlW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtYmFkZ2UtY29udGVudFtfbmdjb250ZW50LSVDT01QJV17bGVmdDotMjhweH1bZGlyPXJ0bF1bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1iYWRnZS1sYXJnZS5tYXQtYmFkZ2UtYmVmb3JlW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtYmFkZ2UtY29udGVudFtfbmdjb250ZW50LSVDT01QJV17bGVmdDphdXRvO3JpZ2h0Oi0yOHB4fS5tYXQtYmFkZ2UtbGFyZ2UubWF0LWJhZGdlLWFmdGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtYmFkZ2UtY29udGVudFtfbmdjb250ZW50LSVDT01QJV17cmlnaHQ6LTI4cHh9W2Rpcj1ydGxdW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtYmFkZ2UtbGFyZ2UubWF0LWJhZGdlLWFmdGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtYmFkZ2UtY29udGVudFtfbmdjb250ZW50LSVDT01QJV17cmlnaHQ6YXV0bztsZWZ0Oi0yOHB4fS5tYXQtYmFkZ2UtbGFyZ2UubWF0LWJhZGdlLW92ZXJsYXAubWF0LWJhZGdlLWJlZm9yZVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWJhZGdlLWNvbnRlbnRbX25nY29udGVudC0lQ09NUCVde2xlZnQ6LTE0cHh9W2Rpcj1ydGxdW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtYmFkZ2UtbGFyZ2UubWF0LWJhZGdlLW92ZXJsYXAubWF0LWJhZGdlLWJlZm9yZVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWJhZGdlLWNvbnRlbnRbX25nY29udGVudC0lQ09NUCVde2xlZnQ6YXV0bztyaWdodDotMTRweH0ubWF0LWJhZGdlLWxhcmdlLm1hdC1iYWRnZS1vdmVybGFwLm1hdC1iYWRnZS1hZnRlcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWJhZGdlLWNvbnRlbnRbX25nY29udGVudC0lQ09NUCVde3JpZ2h0Oi0xNHB4fVtkaXI9cnRsXVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWJhZGdlLWxhcmdlLm1hdC1iYWRnZS1vdmVybGFwLm1hdC1iYWRnZS1hZnRlcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWJhZGdlLWNvbnRlbnRbX25nY29udGVudC0lQ09NUCVde3JpZ2h0OmF1dG87bGVmdDotMTRweH0ubWF0LWJvdHRvbS1zaGVldC1jb250YWluZXJbX25nY29udGVudC0lQ09NUCVde2JveC1zaGFkb3c6MHB4IDhweCAxMHB4IC01cHggcmdiYSgwLCAwLCAwLCAwLjIpLDBweCAxNnB4IDI0cHggMnB4IHJnYmEoMCwgMCwgMCwgMC4xNCksMHB4IDZweCAzMHB4IDVweCByZ2JhKDAsIDAsIDAsIDAuMTIpO2JhY2tncm91bmQ6I2ZmZjtjb2xvcjojMjEyMTIxfS5tYXQtYnV0dG9uW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1pY29uLWJ1dHRvbltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtc3Ryb2tlZC1idXR0b25bX25nY29udGVudC0lQ09NUCVde2NvbG9yOmluaGVyaXQ7YmFja2dyb3VuZDp0cmFuc3BhcmVudH0ubWF0LWJ1dHRvbi5tYXQtcHJpbWFyeVtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtaWNvbi1idXR0b24ubWF0LXByaW1hcnlbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXN0cm9rZWQtYnV0dG9uLm1hdC1wcmltYXJ5W19uZ2NvbnRlbnQtJUNPTVAlXXtjb2xvcjojZjU3YzAwfS5tYXQtYnV0dG9uLm1hdC1hY2NlbnRbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWljb24tYnV0dG9uLm1hdC1hY2NlbnRbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXN0cm9rZWQtYnV0dG9uLm1hdC1hY2NlbnRbX25nY29udGVudC0lQ09NUCVde2NvbG9yOiNmZjk4MDB9Lm1hdC1idXR0b24ubWF0LXdhcm5bX25nY29udGVudC0lQ09NUCVdLCAubWF0LWljb24tYnV0dG9uLm1hdC13YXJuW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1zdHJva2VkLWJ1dHRvbi5tYXQtd2Fybltfbmdjb250ZW50LSVDT01QJV17Y29sb3I6I2Y0NDMzNn0ubWF0LWJ1dHRvbi5tYXQtcHJpbWFyeS5tYXQtYnV0dG9uLWRpc2FibGVkW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1idXR0b24ubWF0LWFjY2VudC5tYXQtYnV0dG9uLWRpc2FibGVkW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1idXR0b24ubWF0LXdhcm4ubWF0LWJ1dHRvbi1kaXNhYmxlZFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtYnV0dG9uLm1hdC1idXR0b24tZGlzYWJsZWQubWF0LWJ1dHRvbi1kaXNhYmxlZFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtaWNvbi1idXR0b24ubWF0LXByaW1hcnkubWF0LWJ1dHRvbi1kaXNhYmxlZFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtaWNvbi1idXR0b24ubWF0LWFjY2VudC5tYXQtYnV0dG9uLWRpc2FibGVkW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1pY29uLWJ1dHRvbi5tYXQtd2Fybi5tYXQtYnV0dG9uLWRpc2FibGVkW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1pY29uLWJ1dHRvbi5tYXQtYnV0dG9uLWRpc2FibGVkLm1hdC1idXR0b24tZGlzYWJsZWRbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXN0cm9rZWQtYnV0dG9uLm1hdC1wcmltYXJ5Lm1hdC1idXR0b24tZGlzYWJsZWRbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXN0cm9rZWQtYnV0dG9uLm1hdC1hY2NlbnQubWF0LWJ1dHRvbi1kaXNhYmxlZFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtc3Ryb2tlZC1idXR0b24ubWF0LXdhcm4ubWF0LWJ1dHRvbi1kaXNhYmxlZFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtc3Ryb2tlZC1idXR0b24ubWF0LWJ1dHRvbi1kaXNhYmxlZC5tYXQtYnV0dG9uLWRpc2FibGVkW19uZ2NvbnRlbnQtJUNPTVAlXXtjb2xvcjpyZ2JhKDAsMCwwLC4yNil9Lm1hdC1idXR0b24ubWF0LXByaW1hcnlbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1idXR0b24tZm9jdXMtb3ZlcmxheVtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtaWNvbi1idXR0b24ubWF0LXByaW1hcnlbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1idXR0b24tZm9jdXMtb3ZlcmxheVtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtc3Ryb2tlZC1idXR0b24ubWF0LXByaW1hcnlbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1idXR0b24tZm9jdXMtb3ZlcmxheVtfbmdjb250ZW50LSVDT01QJV17YmFja2dyb3VuZC1jb2xvcjojZjU3YzAwfS5tYXQtYnV0dG9uLm1hdC1hY2NlbnRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1idXR0b24tZm9jdXMtb3ZlcmxheVtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtaWNvbi1idXR0b24ubWF0LWFjY2VudFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWJ1dHRvbi1mb2N1cy1vdmVybGF5W19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1zdHJva2VkLWJ1dHRvbi5tYXQtYWNjZW50W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtYnV0dG9uLWZvY3VzLW92ZXJsYXlbX25nY29udGVudC0lQ09NUCVde2JhY2tncm91bmQtY29sb3I6I2ZmOTgwMH0ubWF0LWJ1dHRvbi5tYXQtd2Fybltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWJ1dHRvbi1mb2N1cy1vdmVybGF5W19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1pY29uLWJ1dHRvbi5tYXQtd2Fybltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWJ1dHRvbi1mb2N1cy1vdmVybGF5W19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1zdHJva2VkLWJ1dHRvbi5tYXQtd2Fybltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWJ1dHRvbi1mb2N1cy1vdmVybGF5W19uZ2NvbnRlbnQtJUNPTVAlXXtiYWNrZ3JvdW5kLWNvbG9yOiNmNDQzMzZ9Lm1hdC1idXR0b24ubWF0LWJ1dHRvbi1kaXNhYmxlZFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWJ1dHRvbi1mb2N1cy1vdmVybGF5W19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1pY29uLWJ1dHRvbi5tYXQtYnV0dG9uLWRpc2FibGVkW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtYnV0dG9uLWZvY3VzLW92ZXJsYXlbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXN0cm9rZWQtYnV0dG9uLm1hdC1idXR0b24tZGlzYWJsZWRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1idXR0b24tZm9jdXMtb3ZlcmxheVtfbmdjb250ZW50LSVDT01QJV17YmFja2dyb3VuZC1jb2xvcjp0cmFuc3BhcmVudH0ubWF0LWJ1dHRvbltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXJpcHBsZS1lbGVtZW50W19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1pY29uLWJ1dHRvbltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXJpcHBsZS1lbGVtZW50W19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1zdHJva2VkLWJ1dHRvbltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXJpcHBsZS1lbGVtZW50W19uZ2NvbnRlbnQtJUNPTVAlXXtvcGFjaXR5Oi4xO2JhY2tncm91bmQtY29sb3I6Y3VycmVudENvbG9yfS5tYXQtYnV0dG9uLWZvY3VzLW92ZXJsYXlbX25nY29udGVudC0lQ09NUCVde2JhY2tncm91bmQ6IzAwMH0ubWF0LXN0cm9rZWQtYnV0dG9uW19uZ2NvbnRlbnQtJUNPTVAlXTpub3QoLm1hdC1idXR0b24tZGlzYWJsZWQpe2JvcmRlci1jb2xvcjpyZ2JhKDAsMCwwLC4xMil9Lm1hdC1mbGF0LWJ1dHRvbltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtcmFpc2VkLWJ1dHRvbltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtZmFiW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1taW5pLWZhYltfbmdjb250ZW50LSVDT01QJV17Y29sb3I6IzIxMjEyMTtiYWNrZ3JvdW5kLWNvbG9yOiNmZmZ9Lm1hdC1mbGF0LWJ1dHRvbi5tYXQtcHJpbWFyeVtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtcmFpc2VkLWJ1dHRvbi5tYXQtcHJpbWFyeVtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtZmFiLm1hdC1wcmltYXJ5W19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1taW5pLWZhYi5tYXQtcHJpbWFyeVtfbmdjb250ZW50LSVDT01QJV17Y29sb3I6I2ZmZn0ubWF0LWZsYXQtYnV0dG9uLm1hdC1hY2NlbnRbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXJhaXNlZC1idXR0b24ubWF0LWFjY2VudFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtZmFiLm1hdC1hY2NlbnRbX25nY29udGVudC0lQ09NUCVdLCAubWF0LW1pbmktZmFiLm1hdC1hY2NlbnRbX25nY29udGVudC0lQ09NUCVde2NvbG9yOiNmZmZ9Lm1hdC1mbGF0LWJ1dHRvbi5tYXQtd2Fybltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtcmFpc2VkLWJ1dHRvbi5tYXQtd2Fybltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtZmFiLm1hdC13YXJuW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1taW5pLWZhYi5tYXQtd2Fybltfbmdjb250ZW50LSVDT01QJV17Y29sb3I6I2ZmZn0ubWF0LWZsYXQtYnV0dG9uLm1hdC1wcmltYXJ5Lm1hdC1idXR0b24tZGlzYWJsZWRbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWZsYXQtYnV0dG9uLm1hdC1hY2NlbnQubWF0LWJ1dHRvbi1kaXNhYmxlZFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtZmxhdC1idXR0b24ubWF0LXdhcm4ubWF0LWJ1dHRvbi1kaXNhYmxlZFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtZmxhdC1idXR0b24ubWF0LWJ1dHRvbi1kaXNhYmxlZC5tYXQtYnV0dG9uLWRpc2FibGVkW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1yYWlzZWQtYnV0dG9uLm1hdC1wcmltYXJ5Lm1hdC1idXR0b24tZGlzYWJsZWRbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXJhaXNlZC1idXR0b24ubWF0LWFjY2VudC5tYXQtYnV0dG9uLWRpc2FibGVkW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1yYWlzZWQtYnV0dG9uLm1hdC13YXJuLm1hdC1idXR0b24tZGlzYWJsZWRbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXJhaXNlZC1idXR0b24ubWF0LWJ1dHRvbi1kaXNhYmxlZC5tYXQtYnV0dG9uLWRpc2FibGVkW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1mYWIubWF0LXByaW1hcnkubWF0LWJ1dHRvbi1kaXNhYmxlZFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtZmFiLm1hdC1hY2NlbnQubWF0LWJ1dHRvbi1kaXNhYmxlZFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtZmFiLm1hdC13YXJuLm1hdC1idXR0b24tZGlzYWJsZWRbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWZhYi5tYXQtYnV0dG9uLWRpc2FibGVkLm1hdC1idXR0b24tZGlzYWJsZWRbX25nY29udGVudC0lQ09NUCVdLCAubWF0LW1pbmktZmFiLm1hdC1wcmltYXJ5Lm1hdC1idXR0b24tZGlzYWJsZWRbX25nY29udGVudC0lQ09NUCVdLCAubWF0LW1pbmktZmFiLm1hdC1hY2NlbnQubWF0LWJ1dHRvbi1kaXNhYmxlZFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtbWluaS1mYWIubWF0LXdhcm4ubWF0LWJ1dHRvbi1kaXNhYmxlZFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtbWluaS1mYWIubWF0LWJ1dHRvbi1kaXNhYmxlZC5tYXQtYnV0dG9uLWRpc2FibGVkW19uZ2NvbnRlbnQtJUNPTVAlXXtjb2xvcjpyZ2JhKDAsMCwwLC4yNil9Lm1hdC1mbGF0LWJ1dHRvbi5tYXQtcHJpbWFyeVtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtcmFpc2VkLWJ1dHRvbi5tYXQtcHJpbWFyeVtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtZmFiLm1hdC1wcmltYXJ5W19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1taW5pLWZhYi5tYXQtcHJpbWFyeVtfbmdjb250ZW50LSVDT01QJV17YmFja2dyb3VuZC1jb2xvcjojZjU3YzAwfS5tYXQtZmxhdC1idXR0b24ubWF0LWFjY2VudFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtcmFpc2VkLWJ1dHRvbi5tYXQtYWNjZW50W19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1mYWIubWF0LWFjY2VudFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtbWluaS1mYWIubWF0LWFjY2VudFtfbmdjb250ZW50LSVDT01QJV17YmFja2dyb3VuZC1jb2xvcjojZmY5ODAwfS5tYXQtZmxhdC1idXR0b24ubWF0LXdhcm5bX25nY29udGVudC0lQ09NUCVdLCAubWF0LXJhaXNlZC1idXR0b24ubWF0LXdhcm5bX25nY29udGVudC0lQ09NUCVdLCAubWF0LWZhYi5tYXQtd2Fybltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtbWluaS1mYWIubWF0LXdhcm5bX25nY29udGVudC0lQ09NUCVde2JhY2tncm91bmQtY29sb3I6I2Y0NDMzNn0ubWF0LWZsYXQtYnV0dG9uLm1hdC1wcmltYXJ5Lm1hdC1idXR0b24tZGlzYWJsZWRbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWZsYXQtYnV0dG9uLm1hdC1hY2NlbnQubWF0LWJ1dHRvbi1kaXNhYmxlZFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtZmxhdC1idXR0b24ubWF0LXdhcm4ubWF0LWJ1dHRvbi1kaXNhYmxlZFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtZmxhdC1idXR0b24ubWF0LWJ1dHRvbi1kaXNhYmxlZC5tYXQtYnV0dG9uLWRpc2FibGVkW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1yYWlzZWQtYnV0dG9uLm1hdC1wcmltYXJ5Lm1hdC1idXR0b24tZGlzYWJsZWRbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXJhaXNlZC1idXR0b24ubWF0LWFjY2VudC5tYXQtYnV0dG9uLWRpc2FibGVkW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1yYWlzZWQtYnV0dG9uLm1hdC13YXJuLm1hdC1idXR0b24tZGlzYWJsZWRbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXJhaXNlZC1idXR0b24ubWF0LWJ1dHRvbi1kaXNhYmxlZC5tYXQtYnV0dG9uLWRpc2FibGVkW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1mYWIubWF0LXByaW1hcnkubWF0LWJ1dHRvbi1kaXNhYmxlZFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtZmFiLm1hdC1hY2NlbnQubWF0LWJ1dHRvbi1kaXNhYmxlZFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtZmFiLm1hdC13YXJuLm1hdC1idXR0b24tZGlzYWJsZWRbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWZhYi5tYXQtYnV0dG9uLWRpc2FibGVkLm1hdC1idXR0b24tZGlzYWJsZWRbX25nY29udGVudC0lQ09NUCVdLCAubWF0LW1pbmktZmFiLm1hdC1wcmltYXJ5Lm1hdC1idXR0b24tZGlzYWJsZWRbX25nY29udGVudC0lQ09NUCVdLCAubWF0LW1pbmktZmFiLm1hdC1hY2NlbnQubWF0LWJ1dHRvbi1kaXNhYmxlZFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtbWluaS1mYWIubWF0LXdhcm4ubWF0LWJ1dHRvbi1kaXNhYmxlZFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtbWluaS1mYWIubWF0LWJ1dHRvbi1kaXNhYmxlZC5tYXQtYnV0dG9uLWRpc2FibGVkW19uZ2NvbnRlbnQtJUNPTVAlXXtiYWNrZ3JvdW5kLWNvbG9yOnJnYmEoMCwwLDAsLjEyKX0ubWF0LWZsYXQtYnV0dG9uLm1hdC1wcmltYXJ5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtcmlwcGxlLWVsZW1lbnRbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXJhaXNlZC1idXR0b24ubWF0LXByaW1hcnlbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1yaXBwbGUtZWxlbWVudFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtZmFiLm1hdC1wcmltYXJ5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtcmlwcGxlLWVsZW1lbnRbX25nY29udGVudC0lQ09NUCVdLCAubWF0LW1pbmktZmFiLm1hdC1wcmltYXJ5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtcmlwcGxlLWVsZW1lbnRbX25nY29udGVudC0lQ09NUCVde2JhY2tncm91bmQtY29sb3I6cmdiYSgyNTUsMjU1LDI1NSwuMSl9Lm1hdC1mbGF0LWJ1dHRvbi5tYXQtYWNjZW50W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtcmlwcGxlLWVsZW1lbnRbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXJhaXNlZC1idXR0b24ubWF0LWFjY2VudFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXJpcHBsZS1lbGVtZW50W19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1mYWIubWF0LWFjY2VudFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXJpcHBsZS1lbGVtZW50W19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1taW5pLWZhYi5tYXQtYWNjZW50W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtcmlwcGxlLWVsZW1lbnRbX25nY29udGVudC0lQ09NUCVde2JhY2tncm91bmQtY29sb3I6cmdiYSgyNTUsMjU1LDI1NSwuMSl9Lm1hdC1mbGF0LWJ1dHRvbi5tYXQtd2Fybltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXJpcHBsZS1lbGVtZW50W19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1yYWlzZWQtYnV0dG9uLm1hdC13YXJuW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtcmlwcGxlLWVsZW1lbnRbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWZhYi5tYXQtd2Fybltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXJpcHBsZS1lbGVtZW50W19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1taW5pLWZhYi5tYXQtd2Fybltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXJpcHBsZS1lbGVtZW50W19uZ2NvbnRlbnQtJUNPTVAlXXtiYWNrZ3JvdW5kLWNvbG9yOnJnYmEoMjU1LDI1NSwyNTUsLjEpfS5tYXQtc3Ryb2tlZC1idXR0b25bX25nY29udGVudC0lQ09NUCVdOm5vdChbY2xhc3MqPW1hdC1lbGV2YXRpb24tel0pLCAubWF0LWZsYXQtYnV0dG9uW19uZ2NvbnRlbnQtJUNPTVAlXTpub3QoW2NsYXNzKj1tYXQtZWxldmF0aW9uLXpdKXtib3gtc2hhZG93OjBweCAwcHggMHB4IDBweCByZ2JhKDAsIDAsIDAsIDAuMiksMHB4IDBweCAwcHggMHB4IHJnYmEoMCwgMCwgMCwgMC4xNCksMHB4IDBweCAwcHggMHB4IHJnYmEoMCwgMCwgMCwgMC4xMil9Lm1hdC1yYWlzZWQtYnV0dG9uW19uZ2NvbnRlbnQtJUNPTVAlXTpub3QoW2NsYXNzKj1tYXQtZWxldmF0aW9uLXpdKXtib3gtc2hhZG93OjBweCAzcHggMXB4IC0ycHggcmdiYSgwLCAwLCAwLCAwLjIpLDBweCAycHggMnB4IDBweCByZ2JhKDAsIDAsIDAsIDAuMTQpLDBweCAxcHggNXB4IDBweCByZ2JhKDAsIDAsIDAsIDAuMTIpfS5tYXQtcmFpc2VkLWJ1dHRvbltfbmdjb250ZW50LSVDT01QJV06bm90KC5tYXQtYnV0dG9uLWRpc2FibGVkKTphY3RpdmU6bm90KFtjbGFzcyo9bWF0LWVsZXZhdGlvbi16XSl7Ym94LXNoYWRvdzowcHggNXB4IDVweCAtM3B4IHJnYmEoMCwgMCwgMCwgMC4yKSwwcHggOHB4IDEwcHggMXB4IHJnYmEoMCwgMCwgMCwgMC4xNCksMHB4IDNweCAxNHB4IDJweCByZ2JhKDAsIDAsIDAsIDAuMTIpfS5tYXQtcmFpc2VkLWJ1dHRvbi5tYXQtYnV0dG9uLWRpc2FibGVkW19uZ2NvbnRlbnQtJUNPTVAlXTpub3QoW2NsYXNzKj1tYXQtZWxldmF0aW9uLXpdKXtib3gtc2hhZG93OjBweCAwcHggMHB4IDBweCByZ2JhKDAsIDAsIDAsIDAuMiksMHB4IDBweCAwcHggMHB4IHJnYmEoMCwgMCwgMCwgMC4xNCksMHB4IDBweCAwcHggMHB4IHJnYmEoMCwgMCwgMCwgMC4xMil9Lm1hdC1mYWJbX25nY29udGVudC0lQ09NUCVdOm5vdChbY2xhc3MqPW1hdC1lbGV2YXRpb24tel0pLCAubWF0LW1pbmktZmFiW19uZ2NvbnRlbnQtJUNPTVAlXTpub3QoW2NsYXNzKj1tYXQtZWxldmF0aW9uLXpdKXtib3gtc2hhZG93OjBweCAzcHggNXB4IC0xcHggcmdiYSgwLCAwLCAwLCAwLjIpLDBweCA2cHggMTBweCAwcHggcmdiYSgwLCAwLCAwLCAwLjE0KSwwcHggMXB4IDE4cHggMHB4IHJnYmEoMCwgMCwgMCwgMC4xMil9Lm1hdC1mYWJbX25nY29udGVudC0lQ09NUCVdOm5vdCgubWF0LWJ1dHRvbi1kaXNhYmxlZCk6YWN0aXZlOm5vdChbY2xhc3MqPW1hdC1lbGV2YXRpb24tel0pLCAubWF0LW1pbmktZmFiW19uZ2NvbnRlbnQtJUNPTVAlXTpub3QoLm1hdC1idXR0b24tZGlzYWJsZWQpOmFjdGl2ZTpub3QoW2NsYXNzKj1tYXQtZWxldmF0aW9uLXpdKXtib3gtc2hhZG93OjBweCA3cHggOHB4IC00cHggcmdiYSgwLCAwLCAwLCAwLjIpLDBweCAxMnB4IDE3cHggMnB4IHJnYmEoMCwgMCwgMCwgMC4xNCksMHB4IDVweCAyMnB4IDRweCByZ2JhKDAsIDAsIDAsIDAuMTIpfS5tYXQtZmFiLm1hdC1idXR0b24tZGlzYWJsZWRbX25nY29udGVudC0lQ09NUCVdOm5vdChbY2xhc3MqPW1hdC1lbGV2YXRpb24tel0pLCAubWF0LW1pbmktZmFiLm1hdC1idXR0b24tZGlzYWJsZWRbX25nY29udGVudC0lQ09NUCVdOm5vdChbY2xhc3MqPW1hdC1lbGV2YXRpb24tel0pe2JveC1zaGFkb3c6MHB4IDBweCAwcHggMHB4IHJnYmEoMCwgMCwgMCwgMC4yKSwwcHggMHB4IDBweCAwcHggcmdiYSgwLCAwLCAwLCAwLjE0KSwwcHggMHB4IDBweCAwcHggcmdiYSgwLCAwLCAwLCAwLjEyKX0ubWF0LWJ1dHRvbi10b2dnbGUtc3RhbmRhbG9uZVtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtYnV0dG9uLXRvZ2dsZS1ncm91cFtfbmdjb250ZW50LSVDT01QJV17Ym94LXNoYWRvdzowcHggM3B4IDFweCAtMnB4IHJnYmEoMCwgMCwgMCwgMC4yKSwwcHggMnB4IDJweCAwcHggcmdiYSgwLCAwLCAwLCAwLjE0KSwwcHggMXB4IDVweCAwcHggcmdiYSgwLCAwLCAwLCAwLjEyKX0ubWF0LWJ1dHRvbi10b2dnbGUtc3RhbmRhbG9uZS5tYXQtYnV0dG9uLXRvZ2dsZS1hcHBlYXJhbmNlLXN0YW5kYXJkW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1idXR0b24tdG9nZ2xlLWdyb3VwLWFwcGVhcmFuY2Utc3RhbmRhcmRbX25nY29udGVudC0lQ09NUCVde2JveC1zaGFkb3c6bm9uZX0ubWF0LWJ1dHRvbi10b2dnbGVbX25nY29udGVudC0lQ09NUCVde2NvbG9yOnJnYmEoMCwwLDAsLjM4KX0ubWF0LWJ1dHRvbi10b2dnbGVbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1idXR0b24tdG9nZ2xlLWZvY3VzLW92ZXJsYXlbX25nY29udGVudC0lQ09NUCVde2JhY2tncm91bmQtY29sb3I6cmdiYSgwLDAsMCwuMTIpfS5tYXQtYnV0dG9uLXRvZ2dsZS1hcHBlYXJhbmNlLXN0YW5kYXJkW19uZ2NvbnRlbnQtJUNPTVAlXXtjb2xvcjojMjEyMTIxO2JhY2tncm91bmQ6I2ZmZn0ubWF0LWJ1dHRvbi10b2dnbGUtYXBwZWFyYW5jZS1zdGFuZGFyZFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWJ1dHRvbi10b2dnbGUtZm9jdXMtb3ZlcmxheVtfbmdjb250ZW50LSVDT01QJV17YmFja2dyb3VuZC1jb2xvcjojMDAwfS5tYXQtYnV0dG9uLXRvZ2dsZS1ncm91cC1hcHBlYXJhbmNlLXN0YW5kYXJkW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtYnV0dG9uLXRvZ2dsZVtfbmdjb250ZW50LSVDT01QJV0gKyAubWF0LWJ1dHRvbi10b2dnbGVbX25nY29udGVudC0lQ09NUCVde2JvcmRlci1sZWZ0OnNvbGlkIDFweCByZ2JhKDAsMCwwLC4xMil9W2Rpcj1ydGxdW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtYnV0dG9uLXRvZ2dsZS1ncm91cC1hcHBlYXJhbmNlLXN0YW5kYXJkW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtYnV0dG9uLXRvZ2dsZVtfbmdjb250ZW50LSVDT01QJV0gKyAubWF0LWJ1dHRvbi10b2dnbGVbX25nY29udGVudC0lQ09NUCVde2JvcmRlci1sZWZ0Om5vbmU7Ym9yZGVyLXJpZ2h0OnNvbGlkIDFweCByZ2JhKDAsMCwwLC4xMil9Lm1hdC1idXR0b24tdG9nZ2xlLWdyb3VwLWFwcGVhcmFuY2Utc3RhbmRhcmQubWF0LWJ1dHRvbi10b2dnbGUtdmVydGljYWxbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1idXR0b24tdG9nZ2xlW19uZ2NvbnRlbnQtJUNPTVAlXSArIC5tYXQtYnV0dG9uLXRvZ2dsZVtfbmdjb250ZW50LSVDT01QJV17Ym9yZGVyLWxlZnQ6bm9uZTtib3JkZXItcmlnaHQ6bm9uZTtib3JkZXItdG9wOnNvbGlkIDFweCByZ2JhKDAsMCwwLC4xMil9Lm1hdC1idXR0b24tdG9nZ2xlLWNoZWNrZWRbX25nY29udGVudC0lQ09NUCVde2JhY2tncm91bmQtY29sb3I6I2UwZTBlMDtjb2xvcjojNjE2MTYxfS5tYXQtYnV0dG9uLXRvZ2dsZS1jaGVja2VkLm1hdC1idXR0b24tdG9nZ2xlLWFwcGVhcmFuY2Utc3RhbmRhcmRbX25nY29udGVudC0lQ09NUCVde2NvbG9yOiMyMTIxMjF9Lm1hdC1idXR0b24tdG9nZ2xlLWRpc2FibGVkW19uZ2NvbnRlbnQtJUNPTVAlXXtjb2xvcjpyZ2JhKDAsMCwwLC4yNik7YmFja2dyb3VuZC1jb2xvcjojZWVlfS5tYXQtYnV0dG9uLXRvZ2dsZS1kaXNhYmxlZC5tYXQtYnV0dG9uLXRvZ2dsZS1hcHBlYXJhbmNlLXN0YW5kYXJkW19uZ2NvbnRlbnQtJUNPTVAlXXtiYWNrZ3JvdW5kOiNmZmZ9Lm1hdC1idXR0b24tdG9nZ2xlLWRpc2FibGVkLm1hdC1idXR0b24tdG9nZ2xlLWNoZWNrZWRbX25nY29udGVudC0lQ09NUCVde2JhY2tncm91bmQtY29sb3I6I2JkYmRiZH0ubWF0LWJ1dHRvbi10b2dnbGUtc3RhbmRhbG9uZS5tYXQtYnV0dG9uLXRvZ2dsZS1hcHBlYXJhbmNlLXN0YW5kYXJkW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1idXR0b24tdG9nZ2xlLWdyb3VwLWFwcGVhcmFuY2Utc3RhbmRhcmRbX25nY29udGVudC0lQ09NUCVde2JvcmRlcjpzb2xpZCAxcHggcmdiYSgwLDAsMCwuMTIpfS5tYXQtYnV0dG9uLXRvZ2dsZS1hcHBlYXJhbmNlLXN0YW5kYXJkW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtYnV0dG9uLXRvZ2dsZS1sYWJlbC1jb250ZW50W19uZ2NvbnRlbnQtJUNPTVAlXXtsaW5lLWhlaWdodDo0OHB4fS5tYXQtY2FyZFtfbmdjb250ZW50LSVDT01QJV17YmFja2dyb3VuZDojZmZmO2NvbG9yOiMyMTIxMjF9Lm1hdC1jYXJkW19uZ2NvbnRlbnQtJUNPTVAlXTpub3QoW2NsYXNzKj1tYXQtZWxldmF0aW9uLXpdKXtib3gtc2hhZG93OjBweCAycHggMXB4IC0xcHggcmdiYSgwLCAwLCAwLCAwLjIpLDBweCAxcHggMXB4IDBweCByZ2JhKDAsIDAsIDAsIDAuMTQpLDBweCAxcHggM3B4IDBweCByZ2JhKDAsIDAsIDAsIDAuMTIpfS5tYXQtY2FyZC5tYXQtY2FyZC1mbGF0W19uZ2NvbnRlbnQtJUNPTVAlXTpub3QoW2NsYXNzKj1tYXQtZWxldmF0aW9uLXpdKXtib3gtc2hhZG93OjBweCAwcHggMHB4IDBweCByZ2JhKDAsIDAsIDAsIDAuMiksMHB4IDBweCAwcHggMHB4IHJnYmEoMCwgMCwgMCwgMC4xNCksMHB4IDBweCAwcHggMHB4IHJnYmEoMCwgMCwgMCwgMC4xMil9Lm1hdC1jYXJkLXN1YnRpdGxlW19uZ2NvbnRlbnQtJUNPTVAlXXtjb2xvcjojNjE2MTYxfS5tYXQtY2hlY2tib3gtZnJhbWVbX25nY29udGVudC0lQ09NUCVde2JvcmRlci1jb2xvcjojNjE2MTYxfS5tYXQtY2hlY2tib3gtY2hlY2ttYXJrW19uZ2NvbnRlbnQtJUNPTVAlXXtmaWxsOiNmYWZhZmF9Lm1hdC1jaGVja2JveC1jaGVja21hcmstcGF0aFtfbmdjb250ZW50LSVDT01QJV17c3Ryb2tlOiNmYWZhZmEgIWltcG9ydGFudH0ubWF0LWNoZWNrYm94LW1peGVkbWFya1tfbmdjb250ZW50LSVDT01QJV17YmFja2dyb3VuZC1jb2xvcjojZmFmYWZhfS5tYXQtY2hlY2tib3gtaW5kZXRlcm1pbmF0ZS5tYXQtcHJpbWFyeVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWNoZWNrYm94LWJhY2tncm91bmRbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWNoZWNrYm94LWNoZWNrZWQubWF0LXByaW1hcnlbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1jaGVja2JveC1iYWNrZ3JvdW5kW19uZ2NvbnRlbnQtJUNPTVAlXXtiYWNrZ3JvdW5kLWNvbG9yOiNmNTdjMDB9Lm1hdC1jaGVja2JveC1pbmRldGVybWluYXRlLm1hdC1hY2NlbnRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1jaGVja2JveC1iYWNrZ3JvdW5kW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1jaGVja2JveC1jaGVja2VkLm1hdC1hY2NlbnRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1jaGVja2JveC1iYWNrZ3JvdW5kW19uZ2NvbnRlbnQtJUNPTVAlXXtiYWNrZ3JvdW5kLWNvbG9yOiNmZjk4MDB9Lm1hdC1jaGVja2JveC1pbmRldGVybWluYXRlLm1hdC13YXJuW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtY2hlY2tib3gtYmFja2dyb3VuZFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtY2hlY2tib3gtY2hlY2tlZC5tYXQtd2Fybltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWNoZWNrYm94LWJhY2tncm91bmRbX25nY29udGVudC0lQ09NUCVde2JhY2tncm91bmQtY29sb3I6I2Y0NDMzNn0ubWF0LWNoZWNrYm94LWRpc2FibGVkLm1hdC1jaGVja2JveC1jaGVja2VkW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtY2hlY2tib3gtYmFja2dyb3VuZFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtY2hlY2tib3gtZGlzYWJsZWQubWF0LWNoZWNrYm94LWluZGV0ZXJtaW5hdGVbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1jaGVja2JveC1iYWNrZ3JvdW5kW19uZ2NvbnRlbnQtJUNPTVAlXXtiYWNrZ3JvdW5kLWNvbG9yOiNiMGIwYjB9Lm1hdC1jaGVja2JveC1kaXNhYmxlZFtfbmdjb250ZW50LSVDT01QJV06bm90KC5tYXQtY2hlY2tib3gtY2hlY2tlZCkgICAubWF0LWNoZWNrYm94LWZyYW1lW19uZ2NvbnRlbnQtJUNPTVAlXXtib3JkZXItY29sb3I6I2IwYjBiMH0ubWF0LWNoZWNrYm94LWRpc2FibGVkW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtY2hlY2tib3gtbGFiZWxbX25nY29udGVudC0lQ09NUCVde2NvbG9yOiM2MTYxNjF9Lm1hdC1jaGVja2JveFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXJpcHBsZS1lbGVtZW50W19uZ2NvbnRlbnQtJUNPTVAlXXtiYWNrZ3JvdW5kLWNvbG9yOiMwMDB9Lm1hdC1jaGVja2JveC1jaGVja2VkW19uZ2NvbnRlbnQtJUNPTVAlXTpub3QoLm1hdC1jaGVja2JveC1kaXNhYmxlZCkubWF0LXByaW1hcnkgICAubWF0LXJpcHBsZS1lbGVtZW50W19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1jaGVja2JveFtfbmdjb250ZW50LSVDT01QJV06YWN0aXZlOm5vdCgubWF0LWNoZWNrYm94LWRpc2FibGVkKS5tYXQtcHJpbWFyeSAgIC5tYXQtcmlwcGxlLWVsZW1lbnRbX25nY29udGVudC0lQ09NUCVde2JhY2tncm91bmQ6I2Y1N2MwMH0ubWF0LWNoZWNrYm94LWNoZWNrZWRbX25nY29udGVudC0lQ09NUCVdOm5vdCgubWF0LWNoZWNrYm94LWRpc2FibGVkKS5tYXQtYWNjZW50ICAgLm1hdC1yaXBwbGUtZWxlbWVudFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtY2hlY2tib3hbX25nY29udGVudC0lQ09NUCVdOmFjdGl2ZTpub3QoLm1hdC1jaGVja2JveC1kaXNhYmxlZCkubWF0LWFjY2VudCAgIC5tYXQtcmlwcGxlLWVsZW1lbnRbX25nY29udGVudC0lQ09NUCVde2JhY2tncm91bmQ6I2ZmOTgwMH0ubWF0LWNoZWNrYm94LWNoZWNrZWRbX25nY29udGVudC0lQ09NUCVdOm5vdCgubWF0LWNoZWNrYm94LWRpc2FibGVkKS5tYXQtd2FybiAgIC5tYXQtcmlwcGxlLWVsZW1lbnRbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWNoZWNrYm94W19uZ2NvbnRlbnQtJUNPTVAlXTphY3RpdmU6bm90KC5tYXQtY2hlY2tib3gtZGlzYWJsZWQpLm1hdC13YXJuICAgLm1hdC1yaXBwbGUtZWxlbWVudFtfbmdjb250ZW50LSVDT01QJV17YmFja2dyb3VuZDojZjQ0MzM2fS5tYXQtY2hpcC5tYXQtc3RhbmRhcmQtY2hpcFtfbmdjb250ZW50LSVDT01QJV17YmFja2dyb3VuZC1jb2xvcjojZTBlMGUwO2NvbG9yOiMyMTIxMjF9Lm1hdC1jaGlwLm1hdC1zdGFuZGFyZC1jaGlwW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtY2hpcC1yZW1vdmVbX25nY29udGVudC0lQ09NUCVde2NvbG9yOiMyMTIxMjE7b3BhY2l0eTouNH0ubWF0LWNoaXAubWF0LXN0YW5kYXJkLWNoaXBbX25nY29udGVudC0lQ09NUCVdOm5vdCgubWF0LWNoaXAtZGlzYWJsZWQpOmFjdGl2ZXtib3gtc2hhZG93OjBweCAzcHggM3B4IC0ycHggcmdiYSgwLCAwLCAwLCAwLjIpLDBweCAzcHggNHB4IDBweCByZ2JhKDAsIDAsIDAsIDAuMTQpLDBweCAxcHggOHB4IDBweCByZ2JhKDAsIDAsIDAsIDAuMTIpfS5tYXQtY2hpcC5tYXQtc3RhbmRhcmQtY2hpcFtfbmdjb250ZW50LSVDT01QJV06bm90KC5tYXQtY2hpcC1kaXNhYmxlZCkgICAubWF0LWNoaXAtcmVtb3ZlW19uZ2NvbnRlbnQtJUNPTVAlXTpob3ZlcntvcGFjaXR5Oi41NH0ubWF0LWNoaXAubWF0LXN0YW5kYXJkLWNoaXAubWF0LWNoaXAtZGlzYWJsZWRbX25nY29udGVudC0lQ09NUCVde29wYWNpdHk6LjR9Lm1hdC1jaGlwLm1hdC1zdGFuZGFyZC1jaGlwW19uZ2NvbnRlbnQtJUNPTVAlXTo6YWZ0ZXJ7YmFja2dyb3VuZDojMDAwfS5tYXQtY2hpcC5tYXQtc3RhbmRhcmQtY2hpcC5tYXQtY2hpcC1zZWxlY3RlZC5tYXQtcHJpbWFyeVtfbmdjb250ZW50LSVDT01QJV17YmFja2dyb3VuZC1jb2xvcjojZjU3YzAwO2NvbG9yOiNmZmZ9Lm1hdC1jaGlwLm1hdC1zdGFuZGFyZC1jaGlwLm1hdC1jaGlwLXNlbGVjdGVkLm1hdC1wcmltYXJ5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtY2hpcC1yZW1vdmVbX25nY29udGVudC0lQ09NUCVde2NvbG9yOiNmZmY7b3BhY2l0eTouNH0ubWF0LWNoaXAubWF0LXN0YW5kYXJkLWNoaXAubWF0LWNoaXAtc2VsZWN0ZWQubWF0LXByaW1hcnlbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1yaXBwbGUtZWxlbWVudFtfbmdjb250ZW50LSVDT01QJV17YmFja2dyb3VuZC1jb2xvcjpyZ2JhKDI1NSwyNTUsMjU1LC4xKX0ubWF0LWNoaXAubWF0LXN0YW5kYXJkLWNoaXAubWF0LWNoaXAtc2VsZWN0ZWQubWF0LXdhcm5bX25nY29udGVudC0lQ09NUCVde2JhY2tncm91bmQtY29sb3I6I2Y0NDMzNjtjb2xvcjojZmZmfS5tYXQtY2hpcC5tYXQtc3RhbmRhcmQtY2hpcC5tYXQtY2hpcC1zZWxlY3RlZC5tYXQtd2Fybltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWNoaXAtcmVtb3ZlW19uZ2NvbnRlbnQtJUNPTVAlXXtjb2xvcjojZmZmO29wYWNpdHk6LjR9Lm1hdC1jaGlwLm1hdC1zdGFuZGFyZC1jaGlwLm1hdC1jaGlwLXNlbGVjdGVkLm1hdC13YXJuW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtcmlwcGxlLWVsZW1lbnRbX25nY29udGVudC0lQ09NUCVde2JhY2tncm91bmQtY29sb3I6cmdiYSgyNTUsMjU1LDI1NSwuMSl9Lm1hdC1jaGlwLm1hdC1zdGFuZGFyZC1jaGlwLm1hdC1jaGlwLXNlbGVjdGVkLm1hdC1hY2NlbnRbX25nY29udGVudC0lQ09NUCVde2JhY2tncm91bmQtY29sb3I6I2ZmOTgwMDtjb2xvcjojZmZmfS5tYXQtY2hpcC5tYXQtc3RhbmRhcmQtY2hpcC5tYXQtY2hpcC1zZWxlY3RlZC5tYXQtYWNjZW50W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtY2hpcC1yZW1vdmVbX25nY29udGVudC0lQ09NUCVde2NvbG9yOiNmZmY7b3BhY2l0eTouNH0ubWF0LWNoaXAubWF0LXN0YW5kYXJkLWNoaXAubWF0LWNoaXAtc2VsZWN0ZWQubWF0LWFjY2VudFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXJpcHBsZS1lbGVtZW50W19uZ2NvbnRlbnQtJUNPTVAlXXtiYWNrZ3JvdW5kLWNvbG9yOnJnYmEoMjU1LDI1NSwyNTUsLjEpfS5tYXQtdGFibGVbX25nY29udGVudC0lQ09NUCVde2JhY2tncm91bmQ6I2ZmZn0ubWF0LXRhYmxlW19uZ2NvbnRlbnQtJUNPTVAlXSAgIHRoZWFkW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10YWJsZVtfbmdjb250ZW50LSVDT01QJV0gICB0Ym9keVtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdGFibGVbX25nY29udGVudC0lQ09NUCVdICAgdGZvb3RbX25nY29udGVudC0lQ09NUCVdLCBtYXQtaGVhZGVyLXJvd1tfbmdjb250ZW50LSVDT01QJV0sIG1hdC1yb3dbX25nY29udGVudC0lQ09NUCVdLCBtYXQtZm9vdGVyLXJvd1tfbmdjb250ZW50LSVDT01QJV0sIFttYXQtaGVhZGVyLXJvd11bX25nY29udGVudC0lQ09NUCVdLCBbbWF0LXJvd11bX25nY29udGVudC0lQ09NUCVdLCBbbWF0LWZvb3Rlci1yb3ddW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10YWJsZS1zdGlja3lbX25nY29udGVudC0lQ09NUCVde2JhY2tncm91bmQ6aW5oZXJpdH1tYXQtcm93W19uZ2NvbnRlbnQtJUNPTVAlXSwgbWF0LWhlYWRlci1yb3dbX25nY29udGVudC0lQ09NUCVdLCBtYXQtZm9vdGVyLXJvd1tfbmdjb250ZW50LSVDT01QJV0sIHRoLm1hdC1oZWFkZXItY2VsbFtfbmdjb250ZW50LSVDT01QJV0sIHRkLm1hdC1jZWxsW19uZ2NvbnRlbnQtJUNPTVAlXSwgdGQubWF0LWZvb3Rlci1jZWxsW19uZ2NvbnRlbnQtJUNPTVAlXXtib3JkZXItYm90dG9tLWNvbG9yOnJnYmEoMCwwLDAsLjEyKX0ubWF0LWhlYWRlci1jZWxsW19uZ2NvbnRlbnQtJUNPTVAlXXtjb2xvcjojNjE2MTYxfS5tYXQtY2VsbFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtZm9vdGVyLWNlbGxbX25nY29udGVudC0lQ09NUCVde2NvbG9yOiMyMTIxMjF9Lm1hdC1jYWxlbmRhci1hcnJvd1tfbmdjb250ZW50LSVDT01QJV17Ym9yZGVyLXRvcC1jb2xvcjpyZ2JhKDAsMCwwLC41NCl9Lm1hdC1kYXRlcGlja2VyLXRvZ2dsZVtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtZGF0ZXBpY2tlci1jb250ZW50W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtY2FsZW5kYXItbmV4dC1idXR0b25bX25nY29udGVudC0lQ09NUCVdLCAubWF0LWRhdGVwaWNrZXItY29udGVudFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWNhbGVuZGFyLXByZXZpb3VzLWJ1dHRvbltfbmdjb250ZW50LSVDT01QJV17Y29sb3I6cmdiYSgwLDAsMCwuNTQpfS5tYXQtY2FsZW5kYXItdGFibGUtaGVhZGVyW19uZ2NvbnRlbnQtJUNPTVAlXXtjb2xvcjpyZ2JhKDAsMCwwLC4zOCl9Lm1hdC1jYWxlbmRhci10YWJsZS1oZWFkZXItZGl2aWRlcltfbmdjb250ZW50LSVDT01QJV06OmFmdGVye2JhY2tncm91bmQ6cmdiYSgwLDAsMCwuMTIpfS5tYXQtY2FsZW5kYXItYm9keS1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17Y29sb3I6IzYxNjE2MX0ubWF0LWNhbGVuZGFyLWJvZHktY2VsbC1jb250ZW50W19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1kYXRlLXJhbmdlLWlucHV0LXNlcGFyYXRvcltfbmdjb250ZW50LSVDT01QJV17Y29sb3I6IzIxMjEyMTtib3JkZXItY29sb3I6dHJhbnNwYXJlbnR9Lm1hdC1jYWxlbmRhci1ib2R5LWRpc2FibGVkW19uZ2NvbnRlbnQtJUNPTVAlXSA+IC5tYXQtY2FsZW5kYXItYm9keS1jZWxsLWNvbnRlbnRbX25nY29udGVudC0lQ09NUCVdOm5vdCgubWF0LWNhbGVuZGFyLWJvZHktc2VsZWN0ZWQpOm5vdCgubWF0LWNhbGVuZGFyLWJvZHktY29tcGFyaXNvbi1pZGVudGljYWwpe2NvbG9yOiM3NTc1NzV9Lm1hdC1mb3JtLWZpZWxkLWRpc2FibGVkW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZGF0ZS1yYW5nZS1pbnB1dC1zZXBhcmF0b3JbX25nY29udGVudC0lQ09NUCVde2NvbG9yOiM3NTc1NzV9Lm1hdC1jYWxlbmRhci1ib2R5LWNlbGxbX25nY29udGVudC0lQ09NUCVdOm5vdCgubWF0LWNhbGVuZGFyLWJvZHktZGlzYWJsZWQpOmhvdmVyID4gLm1hdC1jYWxlbmRhci1ib2R5LWNlbGwtY29udGVudFtfbmdjb250ZW50LSVDT01QJV06bm90KC5tYXQtY2FsZW5kYXItYm9keS1zZWxlY3RlZCk6bm90KC5tYXQtY2FsZW5kYXItYm9keS1jb21wYXJpc29uLWlkZW50aWNhbCksIC5jZGsta2V5Ym9hcmQtZm9jdXNlZFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWNhbGVuZGFyLWJvZHktYWN0aXZlW19uZ2NvbnRlbnQtJUNPTVAlXSA+IC5tYXQtY2FsZW5kYXItYm9keS1jZWxsLWNvbnRlbnRbX25nY29udGVudC0lQ09NUCVdOm5vdCgubWF0LWNhbGVuZGFyLWJvZHktc2VsZWN0ZWQpOm5vdCgubWF0LWNhbGVuZGFyLWJvZHktY29tcGFyaXNvbi1pZGVudGljYWwpLCAuY2RrLXByb2dyYW0tZm9jdXNlZFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWNhbGVuZGFyLWJvZHktYWN0aXZlW19uZ2NvbnRlbnQtJUNPTVAlXSA+IC5tYXQtY2FsZW5kYXItYm9keS1jZWxsLWNvbnRlbnRbX25nY29udGVudC0lQ09NUCVdOm5vdCgubWF0LWNhbGVuZGFyLWJvZHktc2VsZWN0ZWQpOm5vdCgubWF0LWNhbGVuZGFyLWJvZHktY29tcGFyaXNvbi1pZGVudGljYWwpe2JhY2tncm91bmQtY29sb3I6cmdiYSgwLDAsMCwuMDQpfS5tYXQtY2FsZW5kYXItYm9keS1pbi1wcmV2aWV3W19uZ2NvbnRlbnQtJUNPTVAlXXtjb2xvcjpyZ2JhKDAsMCwwLC4yNCl9Lm1hdC1jYWxlbmRhci1ib2R5LXRvZGF5W19uZ2NvbnRlbnQtJUNPTVAlXTpub3QoLm1hdC1jYWxlbmRhci1ib2R5LXNlbGVjdGVkKTpub3QoLm1hdC1jYWxlbmRhci1ib2R5LWNvbXBhcmlzb24taWRlbnRpY2FsKXtib3JkZXItY29sb3I6cmdiYSgwLDAsMCwuMzgpfS5tYXQtY2FsZW5kYXItYm9keS1kaXNhYmxlZFtfbmdjb250ZW50LSVDT01QJV0gPiAubWF0LWNhbGVuZGFyLWJvZHktdG9kYXlbX25nY29udGVudC0lQ09NUCVdOm5vdCgubWF0LWNhbGVuZGFyLWJvZHktc2VsZWN0ZWQpOm5vdCgubWF0LWNhbGVuZGFyLWJvZHktY29tcGFyaXNvbi1pZGVudGljYWwpe2JvcmRlci1jb2xvcjpyZ2JhKDAsMCwwLC4xOCl9Lm1hdC1jYWxlbmRhci1ib2R5LWluLXJhbmdlW19uZ2NvbnRlbnQtJUNPTVAlXTo6YmVmb3Jle2JhY2tncm91bmQ6cmdiYSgyNDUsMTI0LDAsLjIpfS5tYXQtY2FsZW5kYXItYm9keS1jb21wYXJpc29uLWlkZW50aWNhbFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtY2FsZW5kYXItYm9keS1pbi1jb21wYXJpc29uLXJhbmdlW19uZ2NvbnRlbnQtJUNPTVAlXTo6YmVmb3Jle2JhY2tncm91bmQ6cmdiYSgyNDksMTcxLDAsLjIpfS5tYXQtY2FsZW5kYXItYm9keS1jb21wYXJpc29uLWJyaWRnZS1zdGFydFtfbmdjb250ZW50LSVDT01QJV06OmJlZm9yZSwgW2Rpcj1ydGxdW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtY2FsZW5kYXItYm9keS1jb21wYXJpc29uLWJyaWRnZS1lbmRbX25nY29udGVudC0lQ09NUCVdOjpiZWZvcmV7YmFja2dyb3VuZDpsaW5lYXItZ3JhZGllbnQodG8gcmlnaHQsIHJnYmEoMjQ1LCAxMjQsIDAsIDAuMikgNTAlLCByZ2JhKDI0OSwgMTcxLCAwLCAwLjIpIDUwJSl9Lm1hdC1jYWxlbmRhci1ib2R5LWNvbXBhcmlzb24tYnJpZGdlLWVuZFtfbmdjb250ZW50LSVDT01QJV06OmJlZm9yZSwgW2Rpcj1ydGxdW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtY2FsZW5kYXItYm9keS1jb21wYXJpc29uLWJyaWRnZS1zdGFydFtfbmdjb250ZW50LSVDT01QJV06OmJlZm9yZXtiYWNrZ3JvdW5kOmxpbmVhci1ncmFkaWVudCh0byBsZWZ0LCByZ2JhKDI0NSwgMTI0LCAwLCAwLjIpIDUwJSwgcmdiYSgyNDksIDE3MSwgMCwgMC4yKSA1MCUpfS5tYXQtY2FsZW5kYXItYm9keS1pbi1yYW5nZVtfbmdjb250ZW50LSVDT01QJV0gPiAubWF0LWNhbGVuZGFyLWJvZHktY29tcGFyaXNvbi1pZGVudGljYWxbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWNhbGVuZGFyLWJvZHktaW4tY29tcGFyaXNvbi1yYW5nZS5tYXQtY2FsZW5kYXItYm9keS1pbi1yYW5nZVtfbmdjb250ZW50LSVDT01QJV06OmFmdGVye2JhY2tncm91bmQ6I2E4ZGFiNX0ubWF0LWNhbGVuZGFyLWJvZHktY29tcGFyaXNvbi1pZGVudGljYWwubWF0LWNhbGVuZGFyLWJvZHktc2VsZWN0ZWRbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWNhbGVuZGFyLWJvZHktaW4tY29tcGFyaXNvbi1yYW5nZVtfbmdjb250ZW50LSVDT01QJV0gPiAubWF0LWNhbGVuZGFyLWJvZHktc2VsZWN0ZWRbX25nY29udGVudC0lQ09NUCVde2JhY2tncm91bmQ6IzQ2YTM1ZX0ubWF0LWNhbGVuZGFyLWJvZHktc2VsZWN0ZWRbX25nY29udGVudC0lQ09NUCVde2JhY2tncm91bmQtY29sb3I6I2Y1N2MwMDtjb2xvcjojZmZmfS5tYXQtY2FsZW5kYXItYm9keS1kaXNhYmxlZFtfbmdjb250ZW50LSVDT01QJV0gPiAubWF0LWNhbGVuZGFyLWJvZHktc2VsZWN0ZWRbX25nY29udGVudC0lQ09NUCVde2JhY2tncm91bmQtY29sb3I6cmdiYSgyNDUsMTI0LDAsLjQpfS5tYXQtY2FsZW5kYXItYm9keS10b2RheS5tYXQtY2FsZW5kYXItYm9keS1zZWxlY3RlZFtfbmdjb250ZW50LSVDT01QJV17Ym94LXNoYWRvdzppbnNldCAwIDAgMCAxcHggI2ZmZn0ubWF0LWRhdGVwaWNrZXItY29udGVudFtfbmdjb250ZW50LSVDT01QJV17Ym94LXNoYWRvdzowcHggMnB4IDRweCAtMXB4IHJnYmEoMCwgMCwgMCwgMC4yKSwwcHggNHB4IDVweCAwcHggcmdiYSgwLCAwLCAwLCAwLjE0KSwwcHggMXB4IDEwcHggMHB4IHJnYmEoMCwgMCwgMCwgMC4xMik7YmFja2dyb3VuZC1jb2xvcjojZmZmO2NvbG9yOiMyMTIxMjF9Lm1hdC1kYXRlcGlja2VyLWNvbnRlbnQubWF0LWFjY2VudFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWNhbGVuZGFyLWJvZHktaW4tcmFuZ2VbX25nY29udGVudC0lQ09NUCVdOjpiZWZvcmV7YmFja2dyb3VuZDpyZ2JhKDI1NSwxNTIsMCwuMil9Lm1hdC1kYXRlcGlja2VyLWNvbnRlbnQubWF0LWFjY2VudFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWNhbGVuZGFyLWJvZHktY29tcGFyaXNvbi1pZGVudGljYWxbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWRhdGVwaWNrZXItY29udGVudC5tYXQtYWNjZW50W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtY2FsZW5kYXItYm9keS1pbi1jb21wYXJpc29uLXJhbmdlW19uZ2NvbnRlbnQtJUNPTVAlXTo6YmVmb3Jle2JhY2tncm91bmQ6cmdiYSgyNDksMTcxLDAsLjIpfS5tYXQtZGF0ZXBpY2tlci1jb250ZW50Lm1hdC1hY2NlbnRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1jYWxlbmRhci1ib2R5LWNvbXBhcmlzb24tYnJpZGdlLXN0YXJ0W19uZ2NvbnRlbnQtJUNPTVAlXTo6YmVmb3JlLCAubWF0LWRhdGVwaWNrZXItY29udGVudC5tYXQtYWNjZW50W19uZ2NvbnRlbnQtJUNPTVAlXSAgIFtkaXI9cnRsXVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWNhbGVuZGFyLWJvZHktY29tcGFyaXNvbi1icmlkZ2UtZW5kW19uZ2NvbnRlbnQtJUNPTVAlXTo6YmVmb3Jle2JhY2tncm91bmQ6bGluZWFyLWdyYWRpZW50KHRvIHJpZ2h0LCByZ2JhKDI1NSwgMTUyLCAwLCAwLjIpIDUwJSwgcmdiYSgyNDksIDE3MSwgMCwgMC4yKSA1MCUpfS5tYXQtZGF0ZXBpY2tlci1jb250ZW50Lm1hdC1hY2NlbnRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1jYWxlbmRhci1ib2R5LWNvbXBhcmlzb24tYnJpZGdlLWVuZFtfbmdjb250ZW50LSVDT01QJV06OmJlZm9yZSwgLm1hdC1kYXRlcGlja2VyLWNvbnRlbnQubWF0LWFjY2VudFtfbmdjb250ZW50LSVDT01QJV0gICBbZGlyPXJ0bF1bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1jYWxlbmRhci1ib2R5LWNvbXBhcmlzb24tYnJpZGdlLXN0YXJ0W19uZ2NvbnRlbnQtJUNPTVAlXTo6YmVmb3Jle2JhY2tncm91bmQ6bGluZWFyLWdyYWRpZW50KHRvIGxlZnQsIHJnYmEoMjU1LCAxNTIsIDAsIDAuMikgNTAlLCByZ2JhKDI0OSwgMTcxLCAwLCAwLjIpIDUwJSl9Lm1hdC1kYXRlcGlja2VyLWNvbnRlbnQubWF0LWFjY2VudFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWNhbGVuZGFyLWJvZHktaW4tcmFuZ2VbX25nY29udGVudC0lQ09NUCVdID4gLm1hdC1jYWxlbmRhci1ib2R5LWNvbXBhcmlzb24taWRlbnRpY2FsW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1kYXRlcGlja2VyLWNvbnRlbnQubWF0LWFjY2VudFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWNhbGVuZGFyLWJvZHktaW4tY29tcGFyaXNvbi1yYW5nZS5tYXQtY2FsZW5kYXItYm9keS1pbi1yYW5nZVtfbmdjb250ZW50LSVDT01QJV06OmFmdGVye2JhY2tncm91bmQ6I2E4ZGFiNX0ubWF0LWRhdGVwaWNrZXItY29udGVudC5tYXQtYWNjZW50W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtY2FsZW5kYXItYm9keS1jb21wYXJpc29uLWlkZW50aWNhbC5tYXQtY2FsZW5kYXItYm9keS1zZWxlY3RlZFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtZGF0ZXBpY2tlci1jb250ZW50Lm1hdC1hY2NlbnRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1jYWxlbmRhci1ib2R5LWluLWNvbXBhcmlzb24tcmFuZ2VbX25nY29udGVudC0lQ09NUCVdID4gLm1hdC1jYWxlbmRhci1ib2R5LXNlbGVjdGVkW19uZ2NvbnRlbnQtJUNPTVAlXXtiYWNrZ3JvdW5kOiM0NmEzNWV9Lm1hdC1kYXRlcGlja2VyLWNvbnRlbnQubWF0LWFjY2VudFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWNhbGVuZGFyLWJvZHktc2VsZWN0ZWRbX25nY29udGVudC0lQ09NUCVde2JhY2tncm91bmQtY29sb3I6I2ZmOTgwMDtjb2xvcjojZmZmfS5tYXQtZGF0ZXBpY2tlci1jb250ZW50Lm1hdC1hY2NlbnRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1jYWxlbmRhci1ib2R5LWRpc2FibGVkW19uZ2NvbnRlbnQtJUNPTVAlXSA+IC5tYXQtY2FsZW5kYXItYm9keS1zZWxlY3RlZFtfbmdjb250ZW50LSVDT01QJV17YmFja2dyb3VuZC1jb2xvcjpyZ2JhKDI1NSwxNTIsMCwuNCl9Lm1hdC1kYXRlcGlja2VyLWNvbnRlbnQubWF0LWFjY2VudFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWNhbGVuZGFyLWJvZHktdG9kYXkubWF0LWNhbGVuZGFyLWJvZHktc2VsZWN0ZWRbX25nY29udGVudC0lQ09NUCVde2JveC1zaGFkb3c6aW5zZXQgMCAwIDAgMXB4ICNmZmZ9Lm1hdC1kYXRlcGlja2VyLWNvbnRlbnQubWF0LXdhcm5bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1jYWxlbmRhci1ib2R5LWluLXJhbmdlW19uZ2NvbnRlbnQtJUNPTVAlXTo6YmVmb3Jle2JhY2tncm91bmQ6cmdiYSgyNDQsNjcsNTQsLjIpfS5tYXQtZGF0ZXBpY2tlci1jb250ZW50Lm1hdC13YXJuW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtY2FsZW5kYXItYm9keS1jb21wYXJpc29uLWlkZW50aWNhbFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtZGF0ZXBpY2tlci1jb250ZW50Lm1hdC13YXJuW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtY2FsZW5kYXItYm9keS1pbi1jb21wYXJpc29uLXJhbmdlW19uZ2NvbnRlbnQtJUNPTVAlXTo6YmVmb3Jle2JhY2tncm91bmQ6cmdiYSgyNDksMTcxLDAsLjIpfS5tYXQtZGF0ZXBpY2tlci1jb250ZW50Lm1hdC13YXJuW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtY2FsZW5kYXItYm9keS1jb21wYXJpc29uLWJyaWRnZS1zdGFydFtfbmdjb250ZW50LSVDT01QJV06OmJlZm9yZSwgLm1hdC1kYXRlcGlja2VyLWNvbnRlbnQubWF0LXdhcm5bX25nY29udGVudC0lQ09NUCVdICAgW2Rpcj1ydGxdW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtY2FsZW5kYXItYm9keS1jb21wYXJpc29uLWJyaWRnZS1lbmRbX25nY29udGVudC0lQ09NUCVdOjpiZWZvcmV7YmFja2dyb3VuZDpsaW5lYXItZ3JhZGllbnQodG8gcmlnaHQsIHJnYmEoMjQ0LCA2NywgNTQsIDAuMikgNTAlLCByZ2JhKDI0OSwgMTcxLCAwLCAwLjIpIDUwJSl9Lm1hdC1kYXRlcGlja2VyLWNvbnRlbnQubWF0LXdhcm5bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1jYWxlbmRhci1ib2R5LWNvbXBhcmlzb24tYnJpZGdlLWVuZFtfbmdjb250ZW50LSVDT01QJV06OmJlZm9yZSwgLm1hdC1kYXRlcGlja2VyLWNvbnRlbnQubWF0LXdhcm5bX25nY29udGVudC0lQ09NUCVdICAgW2Rpcj1ydGxdW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtY2FsZW5kYXItYm9keS1jb21wYXJpc29uLWJyaWRnZS1zdGFydFtfbmdjb250ZW50LSVDT01QJV06OmJlZm9yZXtiYWNrZ3JvdW5kOmxpbmVhci1ncmFkaWVudCh0byBsZWZ0LCByZ2JhKDI0NCwgNjcsIDU0LCAwLjIpIDUwJSwgcmdiYSgyNDksIDE3MSwgMCwgMC4yKSA1MCUpfS5tYXQtZGF0ZXBpY2tlci1jb250ZW50Lm1hdC13YXJuW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtY2FsZW5kYXItYm9keS1pbi1yYW5nZVtfbmdjb250ZW50LSVDT01QJV0gPiAubWF0LWNhbGVuZGFyLWJvZHktY29tcGFyaXNvbi1pZGVudGljYWxbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWRhdGVwaWNrZXItY29udGVudC5tYXQtd2Fybltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWNhbGVuZGFyLWJvZHktaW4tY29tcGFyaXNvbi1yYW5nZS5tYXQtY2FsZW5kYXItYm9keS1pbi1yYW5nZVtfbmdjb250ZW50LSVDT01QJV06OmFmdGVye2JhY2tncm91bmQ6I2E4ZGFiNX0ubWF0LWRhdGVwaWNrZXItY29udGVudC5tYXQtd2Fybltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWNhbGVuZGFyLWJvZHktY29tcGFyaXNvbi1pZGVudGljYWwubWF0LWNhbGVuZGFyLWJvZHktc2VsZWN0ZWRbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWRhdGVwaWNrZXItY29udGVudC5tYXQtd2Fybltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWNhbGVuZGFyLWJvZHktaW4tY29tcGFyaXNvbi1yYW5nZVtfbmdjb250ZW50LSVDT01QJV0gPiAubWF0LWNhbGVuZGFyLWJvZHktc2VsZWN0ZWRbX25nY29udGVudC0lQ09NUCVde2JhY2tncm91bmQ6IzQ2YTM1ZX0ubWF0LWRhdGVwaWNrZXItY29udGVudC5tYXQtd2Fybltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWNhbGVuZGFyLWJvZHktc2VsZWN0ZWRbX25nY29udGVudC0lQ09NUCVde2JhY2tncm91bmQtY29sb3I6I2Y0NDMzNjtjb2xvcjojZmZmfS5tYXQtZGF0ZXBpY2tlci1jb250ZW50Lm1hdC13YXJuW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtY2FsZW5kYXItYm9keS1kaXNhYmxlZFtfbmdjb250ZW50LSVDT01QJV0gPiAubWF0LWNhbGVuZGFyLWJvZHktc2VsZWN0ZWRbX25nY29udGVudC0lQ09NUCVde2JhY2tncm91bmQtY29sb3I6cmdiYSgyNDQsNjcsNTQsLjQpfS5tYXQtZGF0ZXBpY2tlci1jb250ZW50Lm1hdC13YXJuW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtY2FsZW5kYXItYm9keS10b2RheS5tYXQtY2FsZW5kYXItYm9keS1zZWxlY3RlZFtfbmdjb250ZW50LSVDT01QJV17Ym94LXNoYWRvdzppbnNldCAwIDAgMCAxcHggI2ZmZn0ubWF0LWRhdGVwaWNrZXItY29udGVudC10b3VjaFtfbmdjb250ZW50LSVDT01QJV17Ym94LXNoYWRvdzowcHggMHB4IDBweCAwcHggcmdiYSgwLCAwLCAwLCAwLjIpLDBweCAwcHggMHB4IDBweCByZ2JhKDAsIDAsIDAsIDAuMTQpLDBweCAwcHggMHB4IDBweCByZ2JhKDAsIDAsIDAsIDAuMTIpfS5tYXQtZGF0ZXBpY2tlci10b2dnbGUtYWN0aXZlW19uZ2NvbnRlbnQtJUNPTVAlXXtjb2xvcjojZjU3YzAwfS5tYXQtZGF0ZXBpY2tlci10b2dnbGUtYWN0aXZlLm1hdC1hY2NlbnRbX25nY29udGVudC0lQ09NUCVde2NvbG9yOiNmZjk4MDB9Lm1hdC1kYXRlcGlja2VyLXRvZ2dsZS1hY3RpdmUubWF0LXdhcm5bX25nY29udGVudC0lQ09NUCVde2NvbG9yOiNmNDQzMzZ9Lm1hdC1kYXRlLXJhbmdlLWlucHV0LWlubmVyW2Rpc2FibGVkXVtfbmdjb250ZW50LSVDT01QJV17Y29sb3I6Izc1NzU3NX0ubWF0LWRpYWxvZy1jb250YWluZXJbX25nY29udGVudC0lQ09NUCVde2JveC1zaGFkb3c6MHB4IDExcHggMTVweCAtN3B4IHJnYmEoMCwgMCwgMCwgMC4yKSwwcHggMjRweCAzOHB4IDNweCByZ2JhKDAsIDAsIDAsIDAuMTQpLDBweCA5cHggNDZweCA4cHggcmdiYSgwLCAwLCAwLCAwLjEyKTtiYWNrZ3JvdW5kOiNmZmY7Y29sb3I6IzIxMjEyMX0ubWF0LWRpdmlkZXJbX25nY29udGVudC0lQ09NUCVde2JvcmRlci10b3AtY29sb3I6cmdiYSgwLDAsMCwuMTIpfS5tYXQtZGl2aWRlci12ZXJ0aWNhbFtfbmdjb250ZW50LSVDT01QJV17Ym9yZGVyLXJpZ2h0LWNvbG9yOnJnYmEoMCwwLDAsLjEyKX0ubWF0LWV4cGFuc2lvbi1wYW5lbFtfbmdjb250ZW50LSVDT01QJV17YmFja2dyb3VuZDojZmZmO2NvbG9yOiMyMTIxMjF9Lm1hdC1leHBhbnNpb24tcGFuZWxbX25nY29udGVudC0lQ09NUCVdOm5vdChbY2xhc3MqPW1hdC1lbGV2YXRpb24tel0pe2JveC1zaGFkb3c6MHB4IDNweCAxcHggLTJweCByZ2JhKDAsIDAsIDAsIDAuMiksMHB4IDJweCAycHggMHB4IHJnYmEoMCwgMCwgMCwgMC4xNCksMHB4IDFweCA1cHggMHB4IHJnYmEoMCwgMCwgMCwgMC4xMil9Lm1hdC1hY3Rpb24tcm93W19uZ2NvbnRlbnQtJUNPTVAlXXtib3JkZXItdG9wLWNvbG9yOnJnYmEoMCwwLDAsLjEyKX0ubWF0LWV4cGFuc2lvbi1wYW5lbFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWV4cGFuc2lvbi1wYW5lbC1oZWFkZXIuY2RrLWtleWJvYXJkLWZvY3VzZWRbX25nY29udGVudC0lQ09NUCVdOm5vdChbYXJpYS1kaXNhYmxlZD10cnVlXSksIC5tYXQtZXhwYW5zaW9uLXBhbmVsW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZXhwYW5zaW9uLXBhbmVsLWhlYWRlci5jZGstcHJvZ3JhbS1mb2N1c2VkW19uZ2NvbnRlbnQtJUNPTVAlXTpub3QoW2FyaWEtZGlzYWJsZWQ9dHJ1ZV0pLCAubWF0LWV4cGFuc2lvbi1wYW5lbFtfbmdjb250ZW50LSVDT01QJV06bm90KC5tYXQtZXhwYW5kZWQpICAgLm1hdC1leHBhbnNpb24tcGFuZWwtaGVhZGVyW19uZ2NvbnRlbnQtJUNPTVAlXTpob3Zlcjpub3QoW2FyaWEtZGlzYWJsZWQ9dHJ1ZV0pe2JhY2tncm91bmQ6cmdiYSgwLDAsMCwuMDQpfUBtZWRpYShob3Zlcjogbm9uZSl7Lm1hdC1leHBhbnNpb24tcGFuZWxbX25nY29udGVudC0lQ09NUCVdOm5vdCgubWF0LWV4cGFuZGVkKTpub3QoW2FyaWEtZGlzYWJsZWQ9dHJ1ZV0pICAgLm1hdC1leHBhbnNpb24tcGFuZWwtaGVhZGVyW19uZ2NvbnRlbnQtJUNPTVAlXTpob3ZlcntiYWNrZ3JvdW5kOiNmZmZ9fS5tYXQtZXhwYW5zaW9uLXBhbmVsLWhlYWRlci10aXRsZVtfbmdjb250ZW50LSVDT01QJV17Y29sb3I6IzIxMjEyMX0ubWF0LWV4cGFuc2lvbi1wYW5lbC1oZWFkZXItZGVzY3JpcHRpb25bX25nY29udGVudC0lQ09NUCVdLCAubWF0LWV4cGFuc2lvbi1pbmRpY2F0b3JbX25nY29udGVudC0lQ09NUCVdOjphZnRlcntjb2xvcjojNjE2MTYxfS5tYXQtZXhwYW5zaW9uLXBhbmVsLWhlYWRlclthcmlhLWRpc2FibGVkPXRydWVdW19uZ2NvbnRlbnQtJUNPTVAlXXtjb2xvcjpyZ2JhKDAsMCwwLC4yNil9Lm1hdC1leHBhbnNpb24tcGFuZWwtaGVhZGVyW2FyaWEtZGlzYWJsZWQ9dHJ1ZV1bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1leHBhbnNpb24tcGFuZWwtaGVhZGVyLXRpdGxlW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1leHBhbnNpb24tcGFuZWwtaGVhZGVyW2FyaWEtZGlzYWJsZWQ9dHJ1ZV1bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1leHBhbnNpb24tcGFuZWwtaGVhZGVyLWRlc2NyaXB0aW9uW19uZ2NvbnRlbnQtJUNPTVAlXXtjb2xvcjppbmhlcml0fS5tYXQtZXhwYW5zaW9uLXBhbmVsLWhlYWRlcltfbmdjb250ZW50LSVDT01QJV17aGVpZ2h0OjQ4cHh9Lm1hdC1leHBhbnNpb24tcGFuZWwtaGVhZGVyLm1hdC1leHBhbmRlZFtfbmdjb250ZW50LSVDT01QJV17aGVpZ2h0OjY0cHh9Lm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXtjb2xvcjpyZ2JhKDk3LDk3LDk3LC42KX0ubWF0LWhpbnRbX25nY29udGVudC0lQ09NUCVde2NvbG9yOnJnYmEoOTcsOTcsOTcsLjYpfS5tYXQtZm9ybS1maWVsZC5tYXQtZm9jdXNlZFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVde2NvbG9yOiNmNTdjMDB9Lm1hdC1mb3JtLWZpZWxkLm1hdC1mb2N1c2VkW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbC5tYXQtYWNjZW50W19uZ2NvbnRlbnQtJUNPTVAlXXtjb2xvcjojZmY5ODAwfS5tYXQtZm9ybS1maWVsZC5tYXQtZm9jdXNlZFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWwubWF0LXdhcm5bX25nY29udGVudC0lQ09NUCVde2NvbG9yOiNmNDQzMzZ9Lm1hdC1mb2N1c2VkW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1yZXF1aXJlZC1tYXJrZXJbX25nY29udGVudC0lQ09NUCVde2NvbG9yOiNmZjk4MDB9Lm1hdC1mb3JtLWZpZWxkLXJpcHBsZVtfbmdjb250ZW50LSVDT01QJV17YmFja2dyb3VuZC1jb2xvcjpyZ2JhKDAsMCwwLC44Nyl9Lm1hdC1mb3JtLWZpZWxkLm1hdC1mb2N1c2VkW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1yaXBwbGVbX25nY29udGVudC0lQ09NUCVde2JhY2tncm91bmQtY29sb3I6I2Y1N2MwMH0ubWF0LWZvcm0tZmllbGQubWF0LWZvY3VzZWRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLXJpcHBsZS5tYXQtYWNjZW50W19uZ2NvbnRlbnQtJUNPTVAlXXtiYWNrZ3JvdW5kLWNvbG9yOiNmZjk4MDB9Lm1hdC1mb3JtLWZpZWxkLm1hdC1mb2N1c2VkW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1yaXBwbGUubWF0LXdhcm5bX25nY29udGVudC0lQ09NUCVde2JhY2tncm91bmQtY29sb3I6I2Y0NDMzNn0ubWF0LWZvcm0tZmllbGQtdHlwZS1tYXQtbmF0aXZlLXNlbGVjdC5tYXQtZm9jdXNlZFtfbmdjb250ZW50LSVDT01QJV06bm90KC5tYXQtZm9ybS1maWVsZC1pbnZhbGlkKSAgIC5tYXQtZm9ybS1maWVsZC1pbmZpeFtfbmdjb250ZW50LSVDT01QJV06OmFmdGVye2NvbG9yOiNmNTdjMDB9Lm1hdC1mb3JtLWZpZWxkLXR5cGUtbWF0LW5hdGl2ZS1zZWxlY3QubWF0LWZvY3VzZWRbX25nY29udGVudC0lQ09NUCVdOm5vdCgubWF0LWZvcm0tZmllbGQtaW52YWxpZCkubWF0LWFjY2VudCAgIC5tYXQtZm9ybS1maWVsZC1pbmZpeFtfbmdjb250ZW50LSVDT01QJV06OmFmdGVye2NvbG9yOiNmZjk4MDB9Lm1hdC1mb3JtLWZpZWxkLXR5cGUtbWF0LW5hdGl2ZS1zZWxlY3QubWF0LWZvY3VzZWRbX25nY29udGVudC0lQ09NUCVdOm5vdCgubWF0LWZvcm0tZmllbGQtaW52YWxpZCkubWF0LXdhcm4gICAubWF0LWZvcm0tZmllbGQtaW5maXhbX25nY29udGVudC0lQ09NUCVdOjphZnRlcntjb2xvcjojZjQ0MzM2fS5tYXQtZm9ybS1maWVsZC5tYXQtZm9ybS1maWVsZC1pbnZhbGlkW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17Y29sb3I6I2Y0NDMzNn0ubWF0LWZvcm0tZmllbGQubWF0LWZvcm0tZmllbGQtaW52YWxpZFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWwubWF0LWFjY2VudFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtZm9ybS1maWVsZC5tYXQtZm9ybS1maWVsZC1pbnZhbGlkW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtcmVxdWlyZWQtbWFya2VyW19uZ2NvbnRlbnQtJUNPTVAlXXtjb2xvcjojZjQ0MzM2fS5tYXQtZm9ybS1maWVsZC5tYXQtZm9ybS1maWVsZC1pbnZhbGlkW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1yaXBwbGVbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWZvcm0tZmllbGQubWF0LWZvcm0tZmllbGQtaW52YWxpZFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtcmlwcGxlLm1hdC1hY2NlbnRbX25nY29udGVudC0lQ09NUCVde2JhY2tncm91bmQtY29sb3I6I2Y0NDMzNn0ubWF0LWVycm9yW19uZ2NvbnRlbnQtJUNPTVAlXXtjb2xvcjojZjQ0MzM2fS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWxlZ2FjeVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVde2NvbG9yOiM2MTYxNjF9Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtbGVnYWN5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaGludFtfbmdjb250ZW50LSVDT01QJV17Y29sb3I6IzYxNjE2MX0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1sZWdhY3lbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLXVuZGVybGluZVtfbmdjb250ZW50LSVDT01QJV17YmFja2dyb3VuZC1jb2xvcjpyZ2JhKDAsMCwwLC40Mil9Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtbGVnYWN5Lm1hdC1mb3JtLWZpZWxkLWRpc2FibGVkW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC11bmRlcmxpbmVbX25nY29udGVudC0lQ09NUCVde2JhY2tncm91bmQtaW1hZ2U6bGluZWFyLWdyYWRpZW50KHRvIHJpZ2h0LCByZ2JhKDAsIDAsIDAsIDAuNDIpIDAlLCByZ2JhKDAsIDAsIDAsIDAuNDIpIDMzJSwgdHJhbnNwYXJlbnQgMCUpO2JhY2tncm91bmQtc2l6ZTo0cHggMTAwJTtiYWNrZ3JvdW5kLXJlcGVhdDpyZXBlYXQteH0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1zdGFuZGFyZFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtdW5kZXJsaW5lW19uZ2NvbnRlbnQtJUNPTVAlXXtiYWNrZ3JvdW5kLWNvbG9yOnJnYmEoMCwwLDAsLjQyKX0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1zdGFuZGFyZC5tYXQtZm9ybS1maWVsZC1kaXNhYmxlZFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtdW5kZXJsaW5lW19uZ2NvbnRlbnQtJUNPTVAlXXtiYWNrZ3JvdW5kLWltYWdlOmxpbmVhci1ncmFkaWVudCh0byByaWdodCwgcmdiYSgwLCAwLCAwLCAwLjQyKSAwJSwgcmdiYSgwLCAwLCAwLCAwLjQyKSAzMyUsIHRyYW5zcGFyZW50IDAlKTtiYWNrZ3JvdW5kLXNpemU6NHB4IDEwMCU7YmFja2dyb3VuZC1yZXBlYXQ6cmVwZWF0LXh9Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtZmlsbFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtZmxleFtfbmdjb250ZW50LSVDT01QJV17YmFja2dyb3VuZC1jb2xvcjpyZ2JhKDAsMCwwLC4wNCl9Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtZmlsbC5tYXQtZm9ybS1maWVsZC1kaXNhYmxlZFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtZmxleFtfbmdjb250ZW50LSVDT01QJV17YmFja2dyb3VuZC1jb2xvcjpyZ2JhKDAsMCwwLC4wMil9Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtZmlsbFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtdW5kZXJsaW5lW19uZ2NvbnRlbnQtJUNPTVAlXTo6YmVmb3Jle2JhY2tncm91bmQtY29sb3I6cmdiYSgwLDAsMCwuNDIpfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWZpbGwubWF0LWZvcm0tZmllbGQtZGlzYWJsZWRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXtjb2xvcjojNzU3NTc1fS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWZpbGwubWF0LWZvcm0tZmllbGQtZGlzYWJsZWRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLXVuZGVybGluZVtfbmdjb250ZW50LSVDT01QJV06OmJlZm9yZXtiYWNrZ3JvdW5kLWNvbG9yOnRyYW5zcGFyZW50fS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLW91dGxpbmVbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLW91dGxpbmVbX25nY29udGVudC0lQ09NUCVde2NvbG9yOnJnYmEoMCwwLDAsLjEyKX0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1vdXRsaW5lW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1vdXRsaW5lLXRoaWNrW19uZ2NvbnRlbnQtJUNPTVAlXXtjb2xvcjpyZ2JhKDAsMCwwLC44Nyl9Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2Utb3V0bGluZS5tYXQtZm9jdXNlZFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtb3V0bGluZS10aGlja1tfbmdjb250ZW50LSVDT01QJV17Y29sb3I6I2Y1N2MwMH0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1vdXRsaW5lLm1hdC1mb2N1c2VkLm1hdC1hY2NlbnRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLW91dGxpbmUtdGhpY2tbX25nY29udGVudC0lQ09NUCVde2NvbG9yOiNmZjk4MDB9Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2Utb3V0bGluZS5tYXQtZm9jdXNlZC5tYXQtd2Fybltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtb3V0bGluZS10aGlja1tfbmdjb250ZW50LSVDT01QJV17Y29sb3I6I2Y0NDMzNn0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1vdXRsaW5lLm1hdC1mb3JtLWZpZWxkLWludmFsaWQubWF0LWZvcm0tZmllbGQtaW52YWxpZFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtb3V0bGluZS10aGlja1tfbmdjb250ZW50LSVDT01QJV17Y29sb3I6I2Y0NDMzNn0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1vdXRsaW5lLm1hdC1mb3JtLWZpZWxkLWRpc2FibGVkW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17Y29sb3I6Izc1NzU3NX0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1vdXRsaW5lLm1hdC1mb3JtLWZpZWxkLWRpc2FibGVkW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1vdXRsaW5lW19uZ2NvbnRlbnQtJUNPTVAlXXtjb2xvcjpyZ2JhKDAsMCwwLC4wNil9Lm1hdC1pY29uLm1hdC1wcmltYXJ5W19uZ2NvbnRlbnQtJUNPTVAlXXtjb2xvcjojZjU3YzAwfS5tYXQtaWNvbi5tYXQtYWNjZW50W19uZ2NvbnRlbnQtJUNPTVAlXXtjb2xvcjojZmY5ODAwfS5tYXQtaWNvbi5tYXQtd2Fybltfbmdjb250ZW50LSVDT01QJV17Y29sb3I6I2Y0NDMzNn0ubWF0LWZvcm0tZmllbGQtdHlwZS1tYXQtbmF0aXZlLXNlbGVjdFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtaW5maXhbX25nY29udGVudC0lQ09NUCVdOjphZnRlcntjb2xvcjojNjE2MTYxfS5tYXQtaW5wdXQtZWxlbWVudFtfbmdjb250ZW50LSVDT01QJV06ZGlzYWJsZWQsIC5tYXQtZm9ybS1maWVsZC10eXBlLW1hdC1uYXRpdmUtc2VsZWN0Lm1hdC1mb3JtLWZpZWxkLWRpc2FibGVkW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1pbmZpeFtfbmdjb250ZW50LSVDT01QJV06OmFmdGVye2NvbG9yOiM3NTc1NzV9Lm1hdC1pbnB1dC1lbGVtZW50W19uZ2NvbnRlbnQtJUNPTVAlXXtjYXJldC1jb2xvcjojZjU3YzAwfS5tYXQtaW5wdXQtZWxlbWVudFtfbmdjb250ZW50LSVDT01QJV06OnBsYWNlaG9sZGVye2NvbG9yOnJnYmEoOTcsOTcsOTcsLjQyKX0ubWF0LWlucHV0LWVsZW1lbnRbX25nY29udGVudC0lQ09NUCVdOjotbW96LXBsYWNlaG9sZGVye2NvbG9yOnJnYmEoOTcsOTcsOTcsLjQyKX0ubWF0LWlucHV0LWVsZW1lbnRbX25nY29udGVudC0lQ09NUCVdOjotd2Via2l0LWlucHV0LXBsYWNlaG9sZGVye2NvbG9yOnJnYmEoOTcsOTcsOTcsLjQyKX0ubWF0LWlucHV0LWVsZW1lbnRbX25nY29udGVudC0lQ09NUCVdOi1tcy1pbnB1dC1wbGFjZWhvbGRlcntjb2xvcjpyZ2JhKDk3LDk3LDk3LC40Mil9Lm1hdC1mb3JtLWZpZWxkLm1hdC1hY2NlbnRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pbnB1dC1lbGVtZW50W19uZ2NvbnRlbnQtJUNPTVAlXXtjYXJldC1jb2xvcjojZmY5ODAwfS5tYXQtZm9ybS1maWVsZC5tYXQtd2Fybltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWlucHV0LWVsZW1lbnRbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWZvcm0tZmllbGQtaW52YWxpZFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWlucHV0LWVsZW1lbnRbX25nY29udGVudC0lQ09NUCVde2NhcmV0LWNvbG9yOiNmNDQzMzZ9Lm1hdC1mb3JtLWZpZWxkLXR5cGUtbWF0LW5hdGl2ZS1zZWxlY3QubWF0LWZvcm0tZmllbGQtaW52YWxpZFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtaW5maXhbX25nY29udGVudC0lQ09NUCVdOjphZnRlcntjb2xvcjojZjQ0MzM2fS5tYXQtbGlzdC1iYXNlW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGlzdC1pdGVtW19uZ2NvbnRlbnQtJUNPTVAlXXtjb2xvcjojMjEyMTIxfS5tYXQtbGlzdC1iYXNlW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGlzdC1vcHRpb25bX25nY29udGVudC0lQ09NUCVde2NvbG9yOiMyMTIxMjF9Lm1hdC1saXN0LWJhc2VbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1zdWJoZWFkZXJbX25nY29udGVudC0lQ09NUCVde2NvbG9yOiM2MTYxNjF9Lm1hdC1saXN0LWl0ZW0tZGlzYWJsZWRbX25nY29udGVudC0lQ09NUCVde2JhY2tncm91bmQtY29sb3I6I2VlZX0ubWF0LWxpc3Qtb3B0aW9uW19uZ2NvbnRlbnQtJUNPTVAlXTpob3ZlciwgLm1hdC1saXN0LW9wdGlvbltfbmdjb250ZW50LSVDT01QJV06Zm9jdXMsIC5tYXQtbmF2LWxpc3RbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saXN0LWl0ZW1bX25nY29udGVudC0lQ09NUCVdOmhvdmVyLCAubWF0LW5hdi1saXN0W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGlzdC1pdGVtW19uZ2NvbnRlbnQtJUNPTVAlXTpmb2N1cywgLm1hdC1hY3Rpb24tbGlzdFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpc3QtaXRlbVtfbmdjb250ZW50LSVDT01QJV06aG92ZXIsIC5tYXQtYWN0aW9uLWxpc3RbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saXN0LWl0ZW1bX25nY29udGVudC0lQ09NUCVdOmZvY3Vze2JhY2tncm91bmQ6cmdiYSgwLDAsMCwuMDQpfS5tYXQtbGlzdC1zaW5nbGUtc2VsZWN0ZWQtb3B0aW9uW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1saXN0LXNpbmdsZS1zZWxlY3RlZC1vcHRpb25bX25nY29udGVudC0lQ09NUCVdOmhvdmVyLCAubWF0LWxpc3Qtc2luZ2xlLXNlbGVjdGVkLW9wdGlvbltfbmdjb250ZW50LSVDT01QJV06Zm9jdXN7YmFja2dyb3VuZDpyZ2JhKDAsMCwwLC4xMil9Lm1hdC1tZW51LXBhbmVsW19uZ2NvbnRlbnQtJUNPTVAlXXtiYWNrZ3JvdW5kOiNmZmZ9Lm1hdC1tZW51LXBhbmVsW19uZ2NvbnRlbnQtJUNPTVAlXTpub3QoW2NsYXNzKj1tYXQtZWxldmF0aW9uLXpdKXtib3gtc2hhZG93OjBweCAycHggNHB4IC0xcHggcmdiYSgwLCAwLCAwLCAwLjIpLDBweCA0cHggNXB4IDBweCByZ2JhKDAsIDAsIDAsIDAuMTQpLDBweCAxcHggMTBweCAwcHggcmdiYSgwLCAwLCAwLCAwLjEyKX0ubWF0LW1lbnUtaXRlbVtfbmdjb250ZW50LSVDT01QJV17YmFja2dyb3VuZDp0cmFuc3BhcmVudDtjb2xvcjojMjEyMTIxfS5tYXQtbWVudS1pdGVtW2Rpc2FibGVkXVtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtbWVudS1pdGVtW2Rpc2FibGVkXVtfbmdjb250ZW50LSVDT01QJV06OmFmdGVye2NvbG9yOnJnYmEoMCwwLDAsLjM4KX0ubWF0LW1lbnUtaXRlbVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWljb24tbm8tY29sb3JbX25nY29udGVudC0lQ09NUCVdLCAubWF0LW1lbnUtaXRlbS1zdWJtZW51LXRyaWdnZXJbX25nY29udGVudC0lQ09NUCVdOjphZnRlcntjb2xvcjpyZ2JhKDAsMCwwLC41NCl9Lm1hdC1tZW51LWl0ZW1bX25nY29udGVudC0lQ09NUCVdOmhvdmVyOm5vdChbZGlzYWJsZWRdKSwgLm1hdC1tZW51LWl0ZW0uY2RrLXByb2dyYW0tZm9jdXNlZFtfbmdjb250ZW50LSVDT01QJV06bm90KFtkaXNhYmxlZF0pLCAubWF0LW1lbnUtaXRlbS5jZGsta2V5Ym9hcmQtZm9jdXNlZFtfbmdjb250ZW50LSVDT01QJV06bm90KFtkaXNhYmxlZF0pLCAubWF0LW1lbnUtaXRlbS1oaWdobGlnaHRlZFtfbmdjb250ZW50LSVDT01QJV06bm90KFtkaXNhYmxlZF0pe2JhY2tncm91bmQ6cmdiYSgwLDAsMCwuMDQpfS5tYXQtcGFnaW5hdG9yW19uZ2NvbnRlbnQtJUNPTVAlXXtiYWNrZ3JvdW5kOiNmZmZ9Lm1hdC1wYWdpbmF0b3JbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXBhZ2luYXRvci1wYWdlLXNpemVbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1zZWxlY3QtdHJpZ2dlcltfbmdjb250ZW50LSVDT01QJV17Y29sb3I6IzYxNjE2MX0ubWF0LXBhZ2luYXRvci1kZWNyZW1lbnRbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXBhZ2luYXRvci1pbmNyZW1lbnRbX25nY29udGVudC0lQ09NUCVde2JvcmRlci10b3A6MnB4IHNvbGlkIHJnYmEoMCwwLDAsLjU0KTtib3JkZXItcmlnaHQ6MnB4IHNvbGlkIHJnYmEoMCwwLDAsLjU0KX0ubWF0LXBhZ2luYXRvci1maXJzdFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtcGFnaW5hdG9yLWxhc3RbX25nY29udGVudC0lQ09NUCVde2JvcmRlci10b3A6MnB4IHNvbGlkIHJnYmEoMCwwLDAsLjU0KX0ubWF0LWljb24tYnV0dG9uW2Rpc2FibGVkXVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXBhZ2luYXRvci1kZWNyZW1lbnRbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWljb24tYnV0dG9uW2Rpc2FibGVkXVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXBhZ2luYXRvci1pbmNyZW1lbnRbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWljb24tYnV0dG9uW2Rpc2FibGVkXVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXBhZ2luYXRvci1maXJzdFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtaWNvbi1idXR0b25bZGlzYWJsZWRdW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtcGFnaW5hdG9yLWxhc3RbX25nY29udGVudC0lQ09NUCVde2JvcmRlci1jb2xvcjpyZ2JhKDAsMCwwLC4zOCl9Lm1hdC1wYWdpbmF0b3ItY29udGFpbmVyW19uZ2NvbnRlbnQtJUNPTVAlXXttaW4taGVpZ2h0OjU2cHh9Lm1hdC1wcm9ncmVzcy1iYXItYmFja2dyb3VuZFtfbmdjb250ZW50LSVDT01QJV17ZmlsbDojZmY5ODAwfS5tYXQtcHJvZ3Jlc3MtYmFyLWJ1ZmZlcltfbmdjb250ZW50LSVDT01QJV17YmFja2dyb3VuZC1jb2xvcjojZmY5ODAwfS5tYXQtcHJvZ3Jlc3MtYmFyLWZpbGxbX25nY29udGVudC0lQ09NUCVdOjphZnRlcntiYWNrZ3JvdW5kLWNvbG9yOiNmNTdjMDB9Lm1hdC1wcm9ncmVzcy1iYXIubWF0LWFjY2VudFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXByb2dyZXNzLWJhci1iYWNrZ3JvdW5kW19uZ2NvbnRlbnQtJUNPTVAlXXtmaWxsOiNmZjk4MDB9Lm1hdC1wcm9ncmVzcy1iYXIubWF0LWFjY2VudFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXByb2dyZXNzLWJhci1idWZmZXJbX25nY29udGVudC0lQ09NUCVde2JhY2tncm91bmQtY29sb3I6I2ZmOTgwMH0ubWF0LXByb2dyZXNzLWJhci5tYXQtYWNjZW50W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtcHJvZ3Jlc3MtYmFyLWZpbGxbX25nY29udGVudC0lQ09NUCVdOjphZnRlcntiYWNrZ3JvdW5kLWNvbG9yOiNmZjk4MDB9Lm1hdC1wcm9ncmVzcy1iYXIubWF0LXdhcm5bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1wcm9ncmVzcy1iYXItYmFja2dyb3VuZFtfbmdjb250ZW50LSVDT01QJV17ZmlsbDojZmZjZGQyfS5tYXQtcHJvZ3Jlc3MtYmFyLm1hdC13YXJuW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtcHJvZ3Jlc3MtYmFyLWJ1ZmZlcltfbmdjb250ZW50LSVDT01QJV17YmFja2dyb3VuZC1jb2xvcjojZmZjZGQyfS5tYXQtcHJvZ3Jlc3MtYmFyLm1hdC13YXJuW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtcHJvZ3Jlc3MtYmFyLWZpbGxbX25nY29udGVudC0lQ09NUCVdOjphZnRlcntiYWNrZ3JvdW5kLWNvbG9yOiNmNDQzMzZ9Lm1hdC1wcm9ncmVzcy1zcGlubmVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIGNpcmNsZVtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtc3Bpbm5lcltfbmdjb250ZW50LSVDT01QJV0gICBjaXJjbGVbX25nY29udGVudC0lQ09NUCVde3N0cm9rZTojZjU3YzAwfS5tYXQtcHJvZ3Jlc3Mtc3Bpbm5lci5tYXQtYWNjZW50W19uZ2NvbnRlbnQtJUNPTVAlXSAgIGNpcmNsZVtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtc3Bpbm5lci5tYXQtYWNjZW50W19uZ2NvbnRlbnQtJUNPTVAlXSAgIGNpcmNsZVtfbmdjb250ZW50LSVDT01QJV17c3Ryb2tlOiNmZjk4MDB9Lm1hdC1wcm9ncmVzcy1zcGlubmVyLm1hdC13YXJuW19uZ2NvbnRlbnQtJUNPTVAlXSAgIGNpcmNsZVtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtc3Bpbm5lci5tYXQtd2Fybltfbmdjb250ZW50LSVDT01QJV0gICBjaXJjbGVbX25nY29udGVudC0lQ09NUCVde3N0cm9rZTojZjQ0MzM2fS5tYXQtcmFkaW8tb3V0ZXItY2lyY2xlW19uZ2NvbnRlbnQtJUNPTVAlXXtib3JkZXItY29sb3I6IzYxNjE2MX0ubWF0LXJhZGlvLWJ1dHRvbi5tYXQtcHJpbWFyeS5tYXQtcmFkaW8tY2hlY2tlZFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXJhZGlvLW91dGVyLWNpcmNsZVtfbmdjb250ZW50LSVDT01QJV17Ym9yZGVyLWNvbG9yOiNmNTdjMDB9Lm1hdC1yYWRpby1idXR0b24ubWF0LXByaW1hcnlbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1yYWRpby1pbm5lci1jaXJjbGVbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXJhZGlvLWJ1dHRvbi5tYXQtcHJpbWFyeVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXJhZGlvLXJpcHBsZVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXJpcHBsZS1lbGVtZW50W19uZ2NvbnRlbnQtJUNPTVAlXTpub3QoLm1hdC1yYWRpby1wZXJzaXN0ZW50LXJpcHBsZSksIC5tYXQtcmFkaW8tYnV0dG9uLm1hdC1wcmltYXJ5Lm1hdC1yYWRpby1jaGVja2VkW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtcmFkaW8tcGVyc2lzdGVudC1yaXBwbGVbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXJhZGlvLWJ1dHRvbi5tYXQtcHJpbWFyeVtfbmdjb250ZW50LSVDT01QJV06YWN0aXZlICAgLm1hdC1yYWRpby1wZXJzaXN0ZW50LXJpcHBsZVtfbmdjb250ZW50LSVDT01QJV17YmFja2dyb3VuZC1jb2xvcjojZjU3YzAwfS5tYXQtcmFkaW8tYnV0dG9uLm1hdC1hY2NlbnQubWF0LXJhZGlvLWNoZWNrZWRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1yYWRpby1vdXRlci1jaXJjbGVbX25nY29udGVudC0lQ09NUCVde2JvcmRlci1jb2xvcjojZmY5ODAwfS5tYXQtcmFkaW8tYnV0dG9uLm1hdC1hY2NlbnRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1yYWRpby1pbm5lci1jaXJjbGVbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXJhZGlvLWJ1dHRvbi5tYXQtYWNjZW50W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtcmFkaW8tcmlwcGxlW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtcmlwcGxlLWVsZW1lbnRbX25nY29udGVudC0lQ09NUCVdOm5vdCgubWF0LXJhZGlvLXBlcnNpc3RlbnQtcmlwcGxlKSwgLm1hdC1yYWRpby1idXR0b24ubWF0LWFjY2VudC5tYXQtcmFkaW8tY2hlY2tlZFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXJhZGlvLXBlcnNpc3RlbnQtcmlwcGxlW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1yYWRpby1idXR0b24ubWF0LWFjY2VudFtfbmdjb250ZW50LSVDT01QJV06YWN0aXZlICAgLm1hdC1yYWRpby1wZXJzaXN0ZW50LXJpcHBsZVtfbmdjb250ZW50LSVDT01QJV17YmFja2dyb3VuZC1jb2xvcjojZmY5ODAwfS5tYXQtcmFkaW8tYnV0dG9uLm1hdC13YXJuLm1hdC1yYWRpby1jaGVja2VkW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtcmFkaW8tb3V0ZXItY2lyY2xlW19uZ2NvbnRlbnQtJUNPTVAlXXtib3JkZXItY29sb3I6I2Y0NDMzNn0ubWF0LXJhZGlvLWJ1dHRvbi5tYXQtd2Fybltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXJhZGlvLWlubmVyLWNpcmNsZVtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtcmFkaW8tYnV0dG9uLm1hdC13YXJuW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtcmFkaW8tcmlwcGxlW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtcmlwcGxlLWVsZW1lbnRbX25nY29udGVudC0lQ09NUCVdOm5vdCgubWF0LXJhZGlvLXBlcnNpc3RlbnQtcmlwcGxlKSwgLm1hdC1yYWRpby1idXR0b24ubWF0LXdhcm4ubWF0LXJhZGlvLWNoZWNrZWRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1yYWRpby1wZXJzaXN0ZW50LXJpcHBsZVtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtcmFkaW8tYnV0dG9uLm1hdC13YXJuW19uZ2NvbnRlbnQtJUNPTVAlXTphY3RpdmUgICAubWF0LXJhZGlvLXBlcnNpc3RlbnQtcmlwcGxlW19uZ2NvbnRlbnQtJUNPTVAlXXtiYWNrZ3JvdW5kLWNvbG9yOiNmNDQzMzZ9Lm1hdC1yYWRpby1idXR0b24ubWF0LXJhZGlvLWRpc2FibGVkLm1hdC1yYWRpby1jaGVja2VkW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtcmFkaW8tb3V0ZXItY2lyY2xlW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1yYWRpby1idXR0b24ubWF0LXJhZGlvLWRpc2FibGVkW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtcmFkaW8tb3V0ZXItY2lyY2xlW19uZ2NvbnRlbnQtJUNPTVAlXXtib3JkZXItY29sb3I6cmdiYSgwLDAsMCwuMzgpfS5tYXQtcmFkaW8tYnV0dG9uLm1hdC1yYWRpby1kaXNhYmxlZFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXJhZGlvLXJpcHBsZVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXJpcHBsZS1lbGVtZW50W19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1yYWRpby1idXR0b24ubWF0LXJhZGlvLWRpc2FibGVkW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtcmFkaW8taW5uZXItY2lyY2xlW19uZ2NvbnRlbnQtJUNPTVAlXXtiYWNrZ3JvdW5kLWNvbG9yOnJnYmEoMCwwLDAsLjM4KX0ubWF0LXJhZGlvLWJ1dHRvbi5tYXQtcmFkaW8tZGlzYWJsZWRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1yYWRpby1sYWJlbC1jb250ZW50W19uZ2NvbnRlbnQtJUNPTVAlXXtjb2xvcjpyZ2JhKDAsMCwwLC4zOCl9Lm1hdC1yYWRpby1idXR0b25bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1yaXBwbGUtZWxlbWVudFtfbmdjb250ZW50LSVDT01QJV17YmFja2dyb3VuZC1jb2xvcjojMDAwfS5tYXQtc2VsZWN0LXZhbHVlW19uZ2NvbnRlbnQtJUNPTVAlXXtjb2xvcjojMjEyMTIxfS5tYXQtc2VsZWN0LXBsYWNlaG9sZGVyW19uZ2NvbnRlbnQtJUNPTVAlXXtjb2xvcjpyZ2JhKDk3LDk3LDk3LC40Mil9Lm1hdC1zZWxlY3QtZGlzYWJsZWRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1zZWxlY3QtdmFsdWVbX25nY29udGVudC0lQ09NUCVde2NvbG9yOiM3NTc1NzV9Lm1hdC1zZWxlY3QtYXJyb3dbX25nY29udGVudC0lQ09NUCVde2NvbG9yOiM2MTYxNjF9Lm1hdC1zZWxlY3QtcGFuZWxbX25nY29udGVudC0lQ09NUCVde2JhY2tncm91bmQ6I2ZmZn0ubWF0LXNlbGVjdC1wYW5lbFtfbmdjb250ZW50LSVDT01QJV06bm90KFtjbGFzcyo9bWF0LWVsZXZhdGlvbi16XSl7Ym94LXNoYWRvdzowcHggMnB4IDRweCAtMXB4IHJnYmEoMCwgMCwgMCwgMC4yKSwwcHggNHB4IDVweCAwcHggcmdiYSgwLCAwLCAwLCAwLjE0KSwwcHggMXB4IDEwcHggMHB4IHJnYmEoMCwgMCwgMCwgMC4xMil9Lm1hdC1zZWxlY3QtcGFuZWxbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1vcHRpb24ubWF0LXNlbGVjdGVkW19uZ2NvbnRlbnQtJUNPTVAlXTpub3QoLm1hdC1vcHRpb24tbXVsdGlwbGUpe2JhY2tncm91bmQ6cmdiYSgwLDAsMCwuMTIpfS5tYXQtZm9ybS1maWVsZC5tYXQtZm9jdXNlZC5tYXQtcHJpbWFyeVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXNlbGVjdC1hcnJvd1tfbmdjb250ZW50LSVDT01QJV17Y29sb3I6I2Y1N2MwMH0ubWF0LWZvcm0tZmllbGQubWF0LWZvY3VzZWQubWF0LWFjY2VudFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXNlbGVjdC1hcnJvd1tfbmdjb250ZW50LSVDT01QJV17Y29sb3I6I2ZmOTgwMH0ubWF0LWZvcm0tZmllbGQubWF0LWZvY3VzZWQubWF0LXdhcm5bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1zZWxlY3QtYXJyb3dbX25nY29udGVudC0lQ09NUCVde2NvbG9yOiNmNDQzMzZ9Lm1hdC1mb3JtLWZpZWxkW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtc2VsZWN0Lm1hdC1zZWxlY3QtaW52YWxpZFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXNlbGVjdC1hcnJvd1tfbmdjb250ZW50LSVDT01QJV17Y29sb3I6I2Y0NDMzNn0ubWF0LWZvcm0tZmllbGRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1zZWxlY3QubWF0LXNlbGVjdC1kaXNhYmxlZFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXNlbGVjdC1hcnJvd1tfbmdjb250ZW50LSVDT01QJV17Y29sb3I6Izc1NzU3NX0ubWF0LWRyYXdlci1jb250YWluZXJbX25nY29udGVudC0lQ09NUCVde2JhY2tncm91bmQtY29sb3I6I2ZhZmFmYTtjb2xvcjojMjEyMTIxfS5tYXQtZHJhd2VyW19uZ2NvbnRlbnQtJUNPTVAlXXtiYWNrZ3JvdW5kLWNvbG9yOiNmZmY7Y29sb3I6IzIxMjEyMX0ubWF0LWRyYXdlci5tYXQtZHJhd2VyLXB1c2hbX25nY29udGVudC0lQ09NUCVde2JhY2tncm91bmQtY29sb3I6I2ZmZn0ubWF0LWRyYXdlcltfbmdjb250ZW50LSVDT01QJV06bm90KC5tYXQtZHJhd2VyLXNpZGUpe2JveC1zaGFkb3c6MHB4IDhweCAxMHB4IC01cHggcmdiYSgwLCAwLCAwLCAwLjIpLDBweCAxNnB4IDI0cHggMnB4IHJnYmEoMCwgMCwgMCwgMC4xNCksMHB4IDZweCAzMHB4IDVweCByZ2JhKDAsIDAsIDAsIDAuMTIpfS5tYXQtZHJhd2VyLXNpZGVbX25nY29udGVudC0lQ09NUCVde2JvcmRlci1yaWdodDpzb2xpZCAxcHggcmdiYSgwLDAsMCwuMTIpfS5tYXQtZHJhd2VyLXNpZGUubWF0LWRyYXdlci1lbmRbX25nY29udGVudC0lQ09NUCVde2JvcmRlci1sZWZ0OnNvbGlkIDFweCByZ2JhKDAsMCwwLC4xMik7Ym9yZGVyLXJpZ2h0Om5vbmV9W2Rpcj1ydGxdW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZHJhd2VyLXNpZGVbX25nY29udGVudC0lQ09NUCVde2JvcmRlci1sZWZ0OnNvbGlkIDFweCByZ2JhKDAsMCwwLC4xMik7Ym9yZGVyLXJpZ2h0Om5vbmV9W2Rpcj1ydGxdW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZHJhd2VyLXNpZGUubWF0LWRyYXdlci1lbmRbX25nY29udGVudC0lQ09NUCVde2JvcmRlci1sZWZ0Om5vbmU7Ym9yZGVyLXJpZ2h0OnNvbGlkIDFweCByZ2JhKDAsMCwwLC4xMil9Lm1hdC1kcmF3ZXItYmFja2Ryb3AubWF0LWRyYXdlci1zaG93bltfbmdjb250ZW50LSVDT01QJV17YmFja2dyb3VuZC1jb2xvcjpyZ2JhKDAsMCwwLC42KX0ubWF0LXNsaWRlLXRvZ2dsZS5tYXQtY2hlY2tlZFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXNsaWRlLXRvZ2dsZS10aHVtYltfbmdjb250ZW50LSVDT01QJV17YmFja2dyb3VuZC1jb2xvcjojZmY5ODAwfS5tYXQtc2xpZGUtdG9nZ2xlLm1hdC1jaGVja2VkW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtc2xpZGUtdG9nZ2xlLWJhcltfbmdjb250ZW50LSVDT01QJV17YmFja2dyb3VuZC1jb2xvcjpyZ2JhKDI1NSwxNTIsMCwuNTQpfS5tYXQtc2xpZGUtdG9nZ2xlLm1hdC1jaGVja2VkW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtcmlwcGxlLWVsZW1lbnRbX25nY29udGVudC0lQ09NUCVde2JhY2tncm91bmQtY29sb3I6I2ZmOTgwMH0ubWF0LXNsaWRlLXRvZ2dsZS5tYXQtcHJpbWFyeS5tYXQtY2hlY2tlZFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXNsaWRlLXRvZ2dsZS10aHVtYltfbmdjb250ZW50LSVDT01QJV17YmFja2dyb3VuZC1jb2xvcjojZjU3YzAwfS5tYXQtc2xpZGUtdG9nZ2xlLm1hdC1wcmltYXJ5Lm1hdC1jaGVja2VkW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtc2xpZGUtdG9nZ2xlLWJhcltfbmdjb250ZW50LSVDT01QJV17YmFja2dyb3VuZC1jb2xvcjpyZ2JhKDI0NSwxMjQsMCwuNTQpfS5tYXQtc2xpZGUtdG9nZ2xlLm1hdC1wcmltYXJ5Lm1hdC1jaGVja2VkW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtcmlwcGxlLWVsZW1lbnRbX25nY29udGVudC0lQ09NUCVde2JhY2tncm91bmQtY29sb3I6I2Y1N2MwMH0ubWF0LXNsaWRlLXRvZ2dsZS5tYXQtd2Fybi5tYXQtY2hlY2tlZFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXNsaWRlLXRvZ2dsZS10aHVtYltfbmdjb250ZW50LSVDT01QJV17YmFja2dyb3VuZC1jb2xvcjojZjQ0MzM2fS5tYXQtc2xpZGUtdG9nZ2xlLm1hdC13YXJuLm1hdC1jaGVja2VkW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtc2xpZGUtdG9nZ2xlLWJhcltfbmdjb250ZW50LSVDT01QJV17YmFja2dyb3VuZC1jb2xvcjpyZ2JhKDI0NCw2Nyw1NCwuNTQpfS5tYXQtc2xpZGUtdG9nZ2xlLm1hdC13YXJuLm1hdC1jaGVja2VkW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtcmlwcGxlLWVsZW1lbnRbX25nY29udGVudC0lQ09NUCVde2JhY2tncm91bmQtY29sb3I6I2Y0NDMzNn0ubWF0LXNsaWRlLXRvZ2dsZVtfbmdjb250ZW50LSVDT01QJV06bm90KC5tYXQtY2hlY2tlZCkgICAubWF0LXJpcHBsZS1lbGVtZW50W19uZ2NvbnRlbnQtJUNPTVAlXXtiYWNrZ3JvdW5kLWNvbG9yOiMwMDB9Lm1hdC1zbGlkZS10b2dnbGUtdGh1bWJbX25nY29udGVudC0lQ09NUCVde2JveC1zaGFkb3c6MHB4IDJweCAxcHggLTFweCByZ2JhKDAsIDAsIDAsIDAuMiksMHB4IDFweCAxcHggMHB4IHJnYmEoMCwgMCwgMCwgMC4xNCksMHB4IDFweCAzcHggMHB4IHJnYmEoMCwgMCwgMCwgMC4xMik7YmFja2dyb3VuZC1jb2xvcjojZmFmYWZhfS5tYXQtc2xpZGUtdG9nZ2xlLWJhcltfbmdjb250ZW50LSVDT01QJV17YmFja2dyb3VuZC1jb2xvcjpyZ2JhKDAsMCwwLC4zOCl9Lm1hdC1zbGlkZXItdHJhY2stYmFja2dyb3VuZFtfbmdjb250ZW50LSVDT01QJV17YmFja2dyb3VuZC1jb2xvcjpyZ2JhKDAsMCwwLC4yNil9Lm1hdC1wcmltYXJ5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtc2xpZGVyLXRyYWNrLWZpbGxbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXByaW1hcnlbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1zbGlkZXItdGh1bWJbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXByaW1hcnlbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1zbGlkZXItdGh1bWItbGFiZWxbX25nY29udGVudC0lQ09NUCVde2JhY2tncm91bmQtY29sb3I6I2Y1N2MwMH0ubWF0LXByaW1hcnlbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1zbGlkZXItdGh1bWItbGFiZWwtdGV4dFtfbmdjb250ZW50LSVDT01QJV17Y29sb3I6I2ZmZn0ubWF0LXByaW1hcnlbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1zbGlkZXItZm9jdXMtcmluZ1tfbmdjb250ZW50LSVDT01QJV17YmFja2dyb3VuZC1jb2xvcjpyZ2JhKDI0NSwxMjQsMCwuMil9Lm1hdC1hY2NlbnRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1zbGlkZXItdHJhY2stZmlsbFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtYWNjZW50W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtc2xpZGVyLXRodW1iW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1hY2NlbnRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1zbGlkZXItdGh1bWItbGFiZWxbX25nY29udGVudC0lQ09NUCVde2JhY2tncm91bmQtY29sb3I6I2ZmOTgwMH0ubWF0LWFjY2VudFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXNsaWRlci10aHVtYi1sYWJlbC10ZXh0W19uZ2NvbnRlbnQtJUNPTVAlXXtjb2xvcjojZmZmfS5tYXQtYWNjZW50W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtc2xpZGVyLWZvY3VzLXJpbmdbX25nY29udGVudC0lQ09NUCVde2JhY2tncm91bmQtY29sb3I6cmdiYSgyNTUsMTUyLDAsLjIpfS5tYXQtd2Fybltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXNsaWRlci10cmFjay1maWxsW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC13YXJuW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtc2xpZGVyLXRodW1iW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC13YXJuW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtc2xpZGVyLXRodW1iLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXtiYWNrZ3JvdW5kLWNvbG9yOiNmNDQzMzZ9Lm1hdC13YXJuW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtc2xpZGVyLXRodW1iLWxhYmVsLXRleHRbX25nY29udGVudC0lQ09NUCVde2NvbG9yOiNmZmZ9Lm1hdC13YXJuW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtc2xpZGVyLWZvY3VzLXJpbmdbX25nY29udGVudC0lQ09NUCVde2JhY2tncm91bmQtY29sb3I6cmdiYSgyNDQsNjcsNTQsLjIpfS5tYXQtc2xpZGVyW19uZ2NvbnRlbnQtJUNPTVAlXTpob3ZlciAgIC5tYXQtc2xpZGVyLXRyYWNrLWJhY2tncm91bmRbX25nY29udGVudC0lQ09NUCVdLCAuY2RrLWZvY3VzZWRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1zbGlkZXItdHJhY2stYmFja2dyb3VuZFtfbmdjb250ZW50LSVDT01QJV17YmFja2dyb3VuZC1jb2xvcjpyZ2JhKDAsMCwwLC4zOCl9Lm1hdC1zbGlkZXItZGlzYWJsZWRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1zbGlkZXItdHJhY2stYmFja2dyb3VuZFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtc2xpZGVyLWRpc2FibGVkW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtc2xpZGVyLXRyYWNrLWZpbGxbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXNsaWRlci1kaXNhYmxlZFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXNsaWRlci10aHVtYltfbmdjb250ZW50LSVDT01QJV17YmFja2dyb3VuZC1jb2xvcjpyZ2JhKDAsMCwwLC4yNil9Lm1hdC1zbGlkZXItZGlzYWJsZWRbX25nY29udGVudC0lQ09NUCVdOmhvdmVyICAgLm1hdC1zbGlkZXItdHJhY2stYmFja2dyb3VuZFtfbmdjb250ZW50LSVDT01QJV17YmFja2dyb3VuZC1jb2xvcjpyZ2JhKDAsMCwwLC4yNil9Lm1hdC1zbGlkZXItbWluLXZhbHVlW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtc2xpZGVyLWZvY3VzLXJpbmdbX25nY29udGVudC0lQ09NUCVde2JhY2tncm91bmQtY29sb3I6cmdiYSgwLDAsMCwuMTIpfS5tYXQtc2xpZGVyLW1pbi12YWx1ZS5tYXQtc2xpZGVyLXRodW1iLWxhYmVsLXNob3dpbmdbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1zbGlkZXItdGh1bWJbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXNsaWRlci1taW4tdmFsdWUubWF0LXNsaWRlci10aHVtYi1sYWJlbC1zaG93aW5nW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtc2xpZGVyLXRodW1iLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXtiYWNrZ3JvdW5kLWNvbG9yOnJnYmEoMCwwLDAsLjg3KX0ubWF0LXNsaWRlci1taW4tdmFsdWUubWF0LXNsaWRlci10aHVtYi1sYWJlbC1zaG93aW5nLmNkay1mb2N1c2VkW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtc2xpZGVyLXRodW1iW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1zbGlkZXItbWluLXZhbHVlLm1hdC1zbGlkZXItdGh1bWItbGFiZWwtc2hvd2luZy5jZGstZm9jdXNlZFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXNsaWRlci10aHVtYi1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17YmFja2dyb3VuZC1jb2xvcjpyZ2JhKDAsMCwwLC4yNil9Lm1hdC1zbGlkZXItbWluLXZhbHVlW19uZ2NvbnRlbnQtJUNPTVAlXTpub3QoLm1hdC1zbGlkZXItdGh1bWItbGFiZWwtc2hvd2luZykgICAubWF0LXNsaWRlci10aHVtYltfbmdjb250ZW50LSVDT01QJV17Ym9yZGVyLWNvbG9yOnJnYmEoMCwwLDAsLjI2KTtiYWNrZ3JvdW5kLWNvbG9yOnRyYW5zcGFyZW50fS5tYXQtc2xpZGVyLW1pbi12YWx1ZVtfbmdjb250ZW50LSVDT01QJV06bm90KC5tYXQtc2xpZGVyLXRodW1iLWxhYmVsLXNob3dpbmcpOmhvdmVyICAgLm1hdC1zbGlkZXItdGh1bWJbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXNsaWRlci1taW4tdmFsdWVbX25nY29udGVudC0lQ09NUCVdOm5vdCgubWF0LXNsaWRlci10aHVtYi1sYWJlbC1zaG93aW5nKS5jZGstZm9jdXNlZCAgIC5tYXQtc2xpZGVyLXRodW1iW19uZ2NvbnRlbnQtJUNPTVAlXXtib3JkZXItY29sb3I6cmdiYSgwLDAsMCwuMzgpfS5tYXQtc2xpZGVyLW1pbi12YWx1ZVtfbmdjb250ZW50LSVDT01QJV06bm90KC5tYXQtc2xpZGVyLXRodW1iLWxhYmVsLXNob3dpbmcpOmhvdmVyLm1hdC1zbGlkZXItZGlzYWJsZWQgICAubWF0LXNsaWRlci10aHVtYltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtc2xpZGVyLW1pbi12YWx1ZVtfbmdjb250ZW50LSVDT01QJV06bm90KC5tYXQtc2xpZGVyLXRodW1iLWxhYmVsLXNob3dpbmcpLmNkay1mb2N1c2VkLm1hdC1zbGlkZXItZGlzYWJsZWQgICAubWF0LXNsaWRlci10aHVtYltfbmdjb250ZW50LSVDT01QJV17Ym9yZGVyLWNvbG9yOnJnYmEoMCwwLDAsLjI2KX0ubWF0LXNsaWRlci1oYXMtdGlja3NbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1zbGlkZXItd3JhcHBlcltfbmdjb250ZW50LSVDT01QJV06OmFmdGVye2JvcmRlci1jb2xvcjpyZ2JhKDAsMCwwLC43KX0ubWF0LXNsaWRlci1ob3Jpem9udGFsW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtc2xpZGVyLXRpY2tzW19uZ2NvbnRlbnQtJUNPTVAlXXtiYWNrZ3JvdW5kLWltYWdlOnJlcGVhdGluZy1saW5lYXItZ3JhZGllbnQodG8gcmlnaHQsIHJnYmEoMCwgMCwgMCwgMC43KSwgcmdiYSgwLCAwLCAwLCAwLjcpIDJweCwgdHJhbnNwYXJlbnQgMCwgdHJhbnNwYXJlbnQpO2JhY2tncm91bmQtaW1hZ2U6LW1vei1yZXBlYXRpbmctbGluZWFyLWdyYWRpZW50KDAuMDAwMWRlZywgcmdiYSgwLCAwLCAwLCAwLjcpLCByZ2JhKDAsIDAsIDAsIDAuNykgMnB4LCB0cmFuc3BhcmVudCAwLCB0cmFuc3BhcmVudCl9Lm1hdC1zbGlkZXItdmVydGljYWxbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1zbGlkZXItdGlja3NbX25nY29udGVudC0lQ09NUCVde2JhY2tncm91bmQtaW1hZ2U6cmVwZWF0aW5nLWxpbmVhci1ncmFkaWVudCh0byBib3R0b20sIHJnYmEoMCwgMCwgMCwgMC43KSwgcmdiYSgwLCAwLCAwLCAwLjcpIDJweCwgdHJhbnNwYXJlbnQgMCwgdHJhbnNwYXJlbnQpfS5tYXQtc3RlcC1oZWFkZXIuY2RrLWtleWJvYXJkLWZvY3VzZWRbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXN0ZXAtaGVhZGVyLmNkay1wcm9ncmFtLWZvY3VzZWRbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXN0ZXAtaGVhZGVyW19uZ2NvbnRlbnQtJUNPTVAlXTpob3ZlcntiYWNrZ3JvdW5kLWNvbG9yOnJnYmEoMCwwLDAsLjA0KX1AbWVkaWEoaG92ZXI6IG5vbmUpey5tYXQtc3RlcC1oZWFkZXJbX25nY29udGVudC0lQ09NUCVdOmhvdmVye2JhY2tncm91bmQ6bm9uZX19Lm1hdC1zdGVwLWhlYWRlcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXN0ZXAtbGFiZWxbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXN0ZXAtaGVhZGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtc3RlcC1vcHRpb25hbFtfbmdjb250ZW50LSVDT01QJV17Y29sb3I6IzYxNjE2MX0ubWF0LXN0ZXAtaGVhZGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtc3RlcC1pY29uW19uZ2NvbnRlbnQtJUNPTVAlXXtiYWNrZ3JvdW5kLWNvbG9yOiM2MTYxNjE7Y29sb3I6I2ZmZn0ubWF0LXN0ZXAtaGVhZGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtc3RlcC1pY29uLXNlbGVjdGVkW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1zdGVwLWhlYWRlcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXN0ZXAtaWNvbi1zdGF0ZS1kb25lW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1zdGVwLWhlYWRlcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXN0ZXAtaWNvbi1zdGF0ZS1lZGl0W19uZ2NvbnRlbnQtJUNPTVAlXXtiYWNrZ3JvdW5kLWNvbG9yOiNmNTdjMDA7Y29sb3I6I2ZmZn0ubWF0LXN0ZXAtaGVhZGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtc3RlcC1pY29uLXN0YXRlLWVycm9yW19uZ2NvbnRlbnQtJUNPTVAlXXtiYWNrZ3JvdW5kLWNvbG9yOnRyYW5zcGFyZW50O2NvbG9yOiNmNDQzMzZ9Lm1hdC1zdGVwLWhlYWRlcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXN0ZXAtbGFiZWwubWF0LXN0ZXAtbGFiZWwtYWN0aXZlW19uZ2NvbnRlbnQtJUNPTVAlXXtjb2xvcjojMjEyMTIxfS5tYXQtc3RlcC1oZWFkZXJbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1zdGVwLWxhYmVsLm1hdC1zdGVwLWxhYmVsLWVycm9yW19uZ2NvbnRlbnQtJUNPTVAlXXtjb2xvcjojZjQ0MzM2fS5tYXQtc3RlcHBlci1ob3Jpem9udGFsW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1zdGVwcGVyLXZlcnRpY2FsW19uZ2NvbnRlbnQtJUNPTVAlXXtiYWNrZ3JvdW5kLWNvbG9yOiNmZmZ9Lm1hdC1zdGVwcGVyLXZlcnRpY2FsLWxpbmVbX25nY29udGVudC0lQ09NUCVdOjpiZWZvcmV7Ym9yZGVyLWxlZnQtY29sb3I6cmdiYSgwLDAsMCwuMTIpfS5tYXQtaG9yaXpvbnRhbC1zdGVwcGVyLWhlYWRlcltfbmdjb250ZW50LSVDT01QJV06OmJlZm9yZSwgLm1hdC1ob3Jpem9udGFsLXN0ZXBwZXItaGVhZGVyW19uZ2NvbnRlbnQtJUNPTVAlXTo6YWZ0ZXIsIC5tYXQtc3RlcHBlci1ob3Jpem9udGFsLWxpbmVbX25nY29udGVudC0lQ09NUCVde2JvcmRlci10b3AtY29sb3I6cmdiYSgwLDAsMCwuMTIpfS5tYXQtaG9yaXpvbnRhbC1zdGVwcGVyLWhlYWRlcltfbmdjb250ZW50LSVDT01QJV17aGVpZ2h0OjcycHh9Lm1hdC1zdGVwcGVyLWxhYmVsLXBvc2l0aW9uLWJvdHRvbVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWhvcml6b250YWwtc3RlcHBlci1oZWFkZXJbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXZlcnRpY2FsLXN0ZXBwZXItaGVhZGVyW19uZ2NvbnRlbnQtJUNPTVAlXXtwYWRkaW5nOjI0cHggMjRweH0ubWF0LXN0ZXBwZXItdmVydGljYWwtbGluZVtfbmdjb250ZW50LSVDT01QJV06OmJlZm9yZXt0b3A6LTE2cHg7Ym90dG9tOi0xNnB4fS5tYXQtc3RlcHBlci1sYWJlbC1wb3NpdGlvbi1ib3R0b21bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1ob3Jpem9udGFsLXN0ZXBwZXItaGVhZGVyW19uZ2NvbnRlbnQtJUNPTVAlXTo6YWZ0ZXIsIC5tYXQtc3RlcHBlci1sYWJlbC1wb3NpdGlvbi1ib3R0b21bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1ob3Jpem9udGFsLXN0ZXBwZXItaGVhZGVyW19uZ2NvbnRlbnQtJUNPTVAlXTo6YmVmb3Jle3RvcDozNnB4fS5tYXQtc3RlcHBlci1sYWJlbC1wb3NpdGlvbi1ib3R0b21bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1zdGVwcGVyLWhvcml6b250YWwtbGluZVtfbmdjb250ZW50LSVDT01QJV17dG9wOjM2cHh9Lm1hdC1zb3J0LWhlYWRlci1hcnJvd1tfbmdjb250ZW50LSVDT01QJV17Y29sb3I6IzYxNjE2MX0ubWF0LXRhYi1uYXYtYmFyW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10YWItaGVhZGVyW19uZ2NvbnRlbnQtJUNPTVAlXXtib3JkZXItYm90dG9tOjFweCBzb2xpZCByZ2JhKDAsMCwwLC4xMil9Lm1hdC10YWItZ3JvdXAtaW52ZXJ0ZWQtaGVhZGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtdGFiLW5hdi1iYXJbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXRhYi1ncm91cC1pbnZlcnRlZC1oZWFkZXJbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC10YWItaGVhZGVyW19uZ2NvbnRlbnQtJUNPTVAlXXtib3JkZXItdG9wOjFweCBzb2xpZCByZ2JhKDAsMCwwLC4xMik7Ym9yZGVyLWJvdHRvbTpub25lfS5tYXQtdGFiLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10YWItbGlua1tfbmdjb250ZW50LSVDT01QJV17Y29sb3I6IzIxMjEyMX0ubWF0LXRhYi1sYWJlbC5tYXQtdGFiLWRpc2FibGVkW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10YWItbGluay5tYXQtdGFiLWRpc2FibGVkW19uZ2NvbnRlbnQtJUNPTVAlXXtjb2xvcjojNzU3NTc1fS5tYXQtdGFiLWhlYWRlci1wYWdpbmF0aW9uLWNoZXZyb25bX25nY29udGVudC0lQ09NUCVde2JvcmRlci1jb2xvcjojMjEyMTIxfS5tYXQtdGFiLWhlYWRlci1wYWdpbmF0aW9uLWRpc2FibGVkW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtdGFiLWhlYWRlci1wYWdpbmF0aW9uLWNoZXZyb25bX25nY29udGVudC0lQ09NUCVde2JvcmRlci1jb2xvcjojNzU3NTc1fS5tYXQtdGFiLWdyb3VwW2NsYXNzKj1tYXQtYmFja2dyb3VuZC1dW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtdGFiLWhlYWRlcltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdGFiLW5hdi1iYXJbY2xhc3MqPW1hdC1iYWNrZ3JvdW5kLV1bX25nY29udGVudC0lQ09NUCVde2JvcmRlci1ib3R0b206bm9uZTtib3JkZXItdG9wOm5vbmV9Lm1hdC10YWItZ3JvdXAubWF0LXByaW1hcnlbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC10YWItbGFiZWwuY2RrLWtleWJvYXJkLWZvY3VzZWRbX25nY29udGVudC0lQ09NUCVdOm5vdCgubWF0LXRhYi1kaXNhYmxlZCksIC5tYXQtdGFiLWdyb3VwLm1hdC1wcmltYXJ5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtdGFiLWxhYmVsLmNkay1wcm9ncmFtLWZvY3VzZWRbX25nY29udGVudC0lQ09NUCVdOm5vdCgubWF0LXRhYi1kaXNhYmxlZCksIC5tYXQtdGFiLWdyb3VwLm1hdC1wcmltYXJ5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtdGFiLWxpbmsuY2RrLWtleWJvYXJkLWZvY3VzZWRbX25nY29udGVudC0lQ09NUCVdOm5vdCgubWF0LXRhYi1kaXNhYmxlZCksIC5tYXQtdGFiLWdyb3VwLm1hdC1wcmltYXJ5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtdGFiLWxpbmsuY2RrLXByb2dyYW0tZm9jdXNlZFtfbmdjb250ZW50LSVDT01QJV06bm90KC5tYXQtdGFiLWRpc2FibGVkKSwgLm1hdC10YWItbmF2LWJhci5tYXQtcHJpbWFyeVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXRhYi1sYWJlbC5jZGsta2V5Ym9hcmQtZm9jdXNlZFtfbmdjb250ZW50LSVDT01QJV06bm90KC5tYXQtdGFiLWRpc2FibGVkKSwgLm1hdC10YWItbmF2LWJhci5tYXQtcHJpbWFyeVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXRhYi1sYWJlbC5jZGstcHJvZ3JhbS1mb2N1c2VkW19uZ2NvbnRlbnQtJUNPTVAlXTpub3QoLm1hdC10YWItZGlzYWJsZWQpLCAubWF0LXRhYi1uYXYtYmFyLm1hdC1wcmltYXJ5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtdGFiLWxpbmsuY2RrLWtleWJvYXJkLWZvY3VzZWRbX25nY29udGVudC0lQ09NUCVdOm5vdCgubWF0LXRhYi1kaXNhYmxlZCksIC5tYXQtdGFiLW5hdi1iYXIubWF0LXByaW1hcnlbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC10YWItbGluay5jZGstcHJvZ3JhbS1mb2N1c2VkW19uZ2NvbnRlbnQtJUNPTVAlXTpub3QoLm1hdC10YWItZGlzYWJsZWQpe2JhY2tncm91bmQtY29sb3I6cmdiYSgyNTUsMTUyLDAsLjMpfS5tYXQtdGFiLWdyb3VwLm1hdC1wcmltYXJ5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaW5rLWJhcltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdGFiLW5hdi1iYXIubWF0LXByaW1hcnlbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pbmstYmFyW19uZ2NvbnRlbnQtJUNPTVAlXXtiYWNrZ3JvdW5kLWNvbG9yOiNmNTdjMDB9Lm1hdC10YWItZ3JvdXAubWF0LXByaW1hcnkubWF0LWJhY2tncm91bmQtcHJpbWFyeVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWluay1iYXJbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXRhYi1uYXYtYmFyLm1hdC1wcmltYXJ5Lm1hdC1iYWNrZ3JvdW5kLXByaW1hcnlbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pbmstYmFyW19uZ2NvbnRlbnQtJUNPTVAlXXtiYWNrZ3JvdW5kLWNvbG9yOiNmZmZ9Lm1hdC10YWItZ3JvdXAubWF0LWFjY2VudFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXRhYi1sYWJlbC5jZGsta2V5Ym9hcmQtZm9jdXNlZFtfbmdjb250ZW50LSVDT01QJV06bm90KC5tYXQtdGFiLWRpc2FibGVkKSwgLm1hdC10YWItZ3JvdXAubWF0LWFjY2VudFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXRhYi1sYWJlbC5jZGstcHJvZ3JhbS1mb2N1c2VkW19uZ2NvbnRlbnQtJUNPTVAlXTpub3QoLm1hdC10YWItZGlzYWJsZWQpLCAubWF0LXRhYi1ncm91cC5tYXQtYWNjZW50W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtdGFiLWxpbmsuY2RrLWtleWJvYXJkLWZvY3VzZWRbX25nY29udGVudC0lQ09NUCVdOm5vdCgubWF0LXRhYi1kaXNhYmxlZCksIC5tYXQtdGFiLWdyb3VwLm1hdC1hY2NlbnRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC10YWItbGluay5jZGstcHJvZ3JhbS1mb2N1c2VkW19uZ2NvbnRlbnQtJUNPTVAlXTpub3QoLm1hdC10YWItZGlzYWJsZWQpLCAubWF0LXRhYi1uYXYtYmFyLm1hdC1hY2NlbnRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC10YWItbGFiZWwuY2RrLWtleWJvYXJkLWZvY3VzZWRbX25nY29udGVudC0lQ09NUCVdOm5vdCgubWF0LXRhYi1kaXNhYmxlZCksIC5tYXQtdGFiLW5hdi1iYXIubWF0LWFjY2VudFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXRhYi1sYWJlbC5jZGstcHJvZ3JhbS1mb2N1c2VkW19uZ2NvbnRlbnQtJUNPTVAlXTpub3QoLm1hdC10YWItZGlzYWJsZWQpLCAubWF0LXRhYi1uYXYtYmFyLm1hdC1hY2NlbnRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC10YWItbGluay5jZGsta2V5Ym9hcmQtZm9jdXNlZFtfbmdjb250ZW50LSVDT01QJV06bm90KC5tYXQtdGFiLWRpc2FibGVkKSwgLm1hdC10YWItbmF2LWJhci5tYXQtYWNjZW50W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtdGFiLWxpbmsuY2RrLXByb2dyYW0tZm9jdXNlZFtfbmdjb250ZW50LSVDT01QJV06bm90KC5tYXQtdGFiLWRpc2FibGVkKXtiYWNrZ3JvdW5kLWNvbG9yOnJnYmEoMjU1LDE1MiwwLC4zKX0ubWF0LXRhYi1ncm91cC5tYXQtYWNjZW50W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaW5rLWJhcltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdGFiLW5hdi1iYXIubWF0LWFjY2VudFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWluay1iYXJbX25nY29udGVudC0lQ09NUCVde2JhY2tncm91bmQtY29sb3I6I2ZmOTgwMH0ubWF0LXRhYi1ncm91cC5tYXQtYWNjZW50Lm1hdC1iYWNrZ3JvdW5kLWFjY2VudFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWluay1iYXJbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXRhYi1uYXYtYmFyLm1hdC1hY2NlbnQubWF0LWJhY2tncm91bmQtYWNjZW50W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaW5rLWJhcltfbmdjb250ZW50LSVDT01QJV17YmFja2dyb3VuZC1jb2xvcjojZmZmfS5tYXQtdGFiLWdyb3VwLm1hdC13YXJuW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtdGFiLWxhYmVsLmNkay1rZXlib2FyZC1mb2N1c2VkW19uZ2NvbnRlbnQtJUNPTVAlXTpub3QoLm1hdC10YWItZGlzYWJsZWQpLCAubWF0LXRhYi1ncm91cC5tYXQtd2Fybltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXRhYi1sYWJlbC5jZGstcHJvZ3JhbS1mb2N1c2VkW19uZ2NvbnRlbnQtJUNPTVAlXTpub3QoLm1hdC10YWItZGlzYWJsZWQpLCAubWF0LXRhYi1ncm91cC5tYXQtd2Fybltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXRhYi1saW5rLmNkay1rZXlib2FyZC1mb2N1c2VkW19uZ2NvbnRlbnQtJUNPTVAlXTpub3QoLm1hdC10YWItZGlzYWJsZWQpLCAubWF0LXRhYi1ncm91cC5tYXQtd2Fybltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXRhYi1saW5rLmNkay1wcm9ncmFtLWZvY3VzZWRbX25nY29udGVudC0lQ09NUCVdOm5vdCgubWF0LXRhYi1kaXNhYmxlZCksIC5tYXQtdGFiLW5hdi1iYXIubWF0LXdhcm5bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC10YWItbGFiZWwuY2RrLWtleWJvYXJkLWZvY3VzZWRbX25nY29udGVudC0lQ09NUCVdOm5vdCgubWF0LXRhYi1kaXNhYmxlZCksIC5tYXQtdGFiLW5hdi1iYXIubWF0LXdhcm5bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC10YWItbGFiZWwuY2RrLXByb2dyYW0tZm9jdXNlZFtfbmdjb250ZW50LSVDT01QJV06bm90KC5tYXQtdGFiLWRpc2FibGVkKSwgLm1hdC10YWItbmF2LWJhci5tYXQtd2Fybltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXRhYi1saW5rLmNkay1rZXlib2FyZC1mb2N1c2VkW19uZ2NvbnRlbnQtJUNPTVAlXTpub3QoLm1hdC10YWItZGlzYWJsZWQpLCAubWF0LXRhYi1uYXYtYmFyLm1hdC13YXJuW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtdGFiLWxpbmsuY2RrLXByb2dyYW0tZm9jdXNlZFtfbmdjb250ZW50LSVDT01QJV06bm90KC5tYXQtdGFiLWRpc2FibGVkKXtiYWNrZ3JvdW5kLWNvbG9yOnJnYmEoMjU1LDIwNSwyMTAsLjMpfS5tYXQtdGFiLWdyb3VwLm1hdC13YXJuW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaW5rLWJhcltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdGFiLW5hdi1iYXIubWF0LXdhcm5bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pbmstYmFyW19uZ2NvbnRlbnQtJUNPTVAlXXtiYWNrZ3JvdW5kLWNvbG9yOiNmNDQzMzZ9Lm1hdC10YWItZ3JvdXAubWF0LXdhcm4ubWF0LWJhY2tncm91bmQtd2Fybltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWluay1iYXJbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXRhYi1uYXYtYmFyLm1hdC13YXJuLm1hdC1iYWNrZ3JvdW5kLXdhcm5bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pbmstYmFyW19uZ2NvbnRlbnQtJUNPTVAlXXtiYWNrZ3JvdW5kLWNvbG9yOiNmZmZ9Lm1hdC10YWItZ3JvdXAubWF0LWJhY2tncm91bmQtcHJpbWFyeVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXRhYi1sYWJlbC5jZGsta2V5Ym9hcmQtZm9jdXNlZFtfbmdjb250ZW50LSVDT01QJV06bm90KC5tYXQtdGFiLWRpc2FibGVkKSwgLm1hdC10YWItZ3JvdXAubWF0LWJhY2tncm91bmQtcHJpbWFyeVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXRhYi1sYWJlbC5jZGstcHJvZ3JhbS1mb2N1c2VkW19uZ2NvbnRlbnQtJUNPTVAlXTpub3QoLm1hdC10YWItZGlzYWJsZWQpLCAubWF0LXRhYi1ncm91cC5tYXQtYmFja2dyb3VuZC1wcmltYXJ5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtdGFiLWxpbmsuY2RrLWtleWJvYXJkLWZvY3VzZWRbX25nY29udGVudC0lQ09NUCVdOm5vdCgubWF0LXRhYi1kaXNhYmxlZCksIC5tYXQtdGFiLWdyb3VwLm1hdC1iYWNrZ3JvdW5kLXByaW1hcnlbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC10YWItbGluay5jZGstcHJvZ3JhbS1mb2N1c2VkW19uZ2NvbnRlbnQtJUNPTVAlXTpub3QoLm1hdC10YWItZGlzYWJsZWQpLCAubWF0LXRhYi1uYXYtYmFyLm1hdC1iYWNrZ3JvdW5kLXByaW1hcnlbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC10YWItbGFiZWwuY2RrLWtleWJvYXJkLWZvY3VzZWRbX25nY29udGVudC0lQ09NUCVdOm5vdCgubWF0LXRhYi1kaXNhYmxlZCksIC5tYXQtdGFiLW5hdi1iYXIubWF0LWJhY2tncm91bmQtcHJpbWFyeVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXRhYi1sYWJlbC5jZGstcHJvZ3JhbS1mb2N1c2VkW19uZ2NvbnRlbnQtJUNPTVAlXTpub3QoLm1hdC10YWItZGlzYWJsZWQpLCAubWF0LXRhYi1uYXYtYmFyLm1hdC1iYWNrZ3JvdW5kLXByaW1hcnlbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC10YWItbGluay5jZGsta2V5Ym9hcmQtZm9jdXNlZFtfbmdjb250ZW50LSVDT01QJV06bm90KC5tYXQtdGFiLWRpc2FibGVkKSwgLm1hdC10YWItbmF2LWJhci5tYXQtYmFja2dyb3VuZC1wcmltYXJ5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtdGFiLWxpbmsuY2RrLXByb2dyYW0tZm9jdXNlZFtfbmdjb250ZW50LSVDT01QJV06bm90KC5tYXQtdGFiLWRpc2FibGVkKXtiYWNrZ3JvdW5kLWNvbG9yOnJnYmEoMjU1LDE1MiwwLC4zKX0ubWF0LXRhYi1ncm91cC5tYXQtYmFja2dyb3VuZC1wcmltYXJ5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtdGFiLWhlYWRlcltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdGFiLWdyb3VwLm1hdC1iYWNrZ3JvdW5kLXByaW1hcnlbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC10YWItbGlua3NbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXRhYi1ncm91cC5tYXQtYmFja2dyb3VuZC1wcmltYXJ5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtdGFiLWhlYWRlci1wYWdpbmF0aW9uW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10YWItbmF2LWJhci5tYXQtYmFja2dyb3VuZC1wcmltYXJ5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtdGFiLWhlYWRlcltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdGFiLW5hdi1iYXIubWF0LWJhY2tncm91bmQtcHJpbWFyeVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXRhYi1saW5rc1tfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdGFiLW5hdi1iYXIubWF0LWJhY2tncm91bmQtcHJpbWFyeVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXRhYi1oZWFkZXItcGFnaW5hdGlvbltfbmdjb250ZW50LSVDT01QJV17YmFja2dyb3VuZC1jb2xvcjojZjU3YzAwfS5tYXQtdGFiLWdyb3VwLm1hdC1iYWNrZ3JvdW5kLXByaW1hcnlbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC10YWItbGFiZWxbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXRhYi1ncm91cC5tYXQtYmFja2dyb3VuZC1wcmltYXJ5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtdGFiLWxpbmtbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXRhYi1uYXYtYmFyLm1hdC1iYWNrZ3JvdW5kLXByaW1hcnlbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC10YWItbGFiZWxbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXRhYi1uYXYtYmFyLm1hdC1iYWNrZ3JvdW5kLXByaW1hcnlbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC10YWItbGlua1tfbmdjb250ZW50LSVDT01QJV17Y29sb3I6I2ZmZn0ubWF0LXRhYi1ncm91cC5tYXQtYmFja2dyb3VuZC1wcmltYXJ5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtdGFiLWxhYmVsLm1hdC10YWItZGlzYWJsZWRbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXRhYi1ncm91cC5tYXQtYmFja2dyb3VuZC1wcmltYXJ5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtdGFiLWxpbmsubWF0LXRhYi1kaXNhYmxlZFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdGFiLW5hdi1iYXIubWF0LWJhY2tncm91bmQtcHJpbWFyeVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXRhYi1sYWJlbC5tYXQtdGFiLWRpc2FibGVkW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10YWItbmF2LWJhci5tYXQtYmFja2dyb3VuZC1wcmltYXJ5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtdGFiLWxpbmsubWF0LXRhYi1kaXNhYmxlZFtfbmdjb250ZW50LSVDT01QJV17Y29sb3I6cmdiYSgyNTUsMjU1LDI1NSwuNCl9Lm1hdC10YWItZ3JvdXAubWF0LWJhY2tncm91bmQtcHJpbWFyeVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXRhYi1oZWFkZXItcGFnaW5hdGlvbi1jaGV2cm9uW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10YWItbmF2LWJhci5tYXQtYmFja2dyb3VuZC1wcmltYXJ5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtdGFiLWhlYWRlci1wYWdpbmF0aW9uLWNoZXZyb25bX25nY29udGVudC0lQ09NUCVde2JvcmRlci1jb2xvcjojZmZmfS5tYXQtdGFiLWdyb3VwLm1hdC1iYWNrZ3JvdW5kLXByaW1hcnlbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC10YWItaGVhZGVyLXBhZ2luYXRpb24tZGlzYWJsZWRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC10YWItaGVhZGVyLXBhZ2luYXRpb24tY2hldnJvbltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdGFiLW5hdi1iYXIubWF0LWJhY2tncm91bmQtcHJpbWFyeVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXRhYi1oZWFkZXItcGFnaW5hdGlvbi1kaXNhYmxlZFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXRhYi1oZWFkZXItcGFnaW5hdGlvbi1jaGV2cm9uW19uZ2NvbnRlbnQtJUNPTVAlXXtib3JkZXItY29sb3I6cmdiYSgyNTUsMjU1LDI1NSwuNCl9Lm1hdC10YWItZ3JvdXAubWF0LWJhY2tncm91bmQtcHJpbWFyeVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXJpcHBsZS1lbGVtZW50W19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10YWItbmF2LWJhci5tYXQtYmFja2dyb3VuZC1wcmltYXJ5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtcmlwcGxlLWVsZW1lbnRbX25nY29udGVudC0lQ09NUCVde2JhY2tncm91bmQtY29sb3I6cmdiYSgyNTUsMjU1LDI1NSwuMTIpfS5tYXQtdGFiLWdyb3VwLm1hdC1iYWNrZ3JvdW5kLWFjY2VudFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXRhYi1sYWJlbC5jZGsta2V5Ym9hcmQtZm9jdXNlZFtfbmdjb250ZW50LSVDT01QJV06bm90KC5tYXQtdGFiLWRpc2FibGVkKSwgLm1hdC10YWItZ3JvdXAubWF0LWJhY2tncm91bmQtYWNjZW50W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtdGFiLWxhYmVsLmNkay1wcm9ncmFtLWZvY3VzZWRbX25nY29udGVudC0lQ09NUCVdOm5vdCgubWF0LXRhYi1kaXNhYmxlZCksIC5tYXQtdGFiLWdyb3VwLm1hdC1iYWNrZ3JvdW5kLWFjY2VudFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXRhYi1saW5rLmNkay1rZXlib2FyZC1mb2N1c2VkW19uZ2NvbnRlbnQtJUNPTVAlXTpub3QoLm1hdC10YWItZGlzYWJsZWQpLCAubWF0LXRhYi1ncm91cC5tYXQtYmFja2dyb3VuZC1hY2NlbnRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC10YWItbGluay5jZGstcHJvZ3JhbS1mb2N1c2VkW19uZ2NvbnRlbnQtJUNPTVAlXTpub3QoLm1hdC10YWItZGlzYWJsZWQpLCAubWF0LXRhYi1uYXYtYmFyLm1hdC1iYWNrZ3JvdW5kLWFjY2VudFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXRhYi1sYWJlbC5jZGsta2V5Ym9hcmQtZm9jdXNlZFtfbmdjb250ZW50LSVDT01QJV06bm90KC5tYXQtdGFiLWRpc2FibGVkKSwgLm1hdC10YWItbmF2LWJhci5tYXQtYmFja2dyb3VuZC1hY2NlbnRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC10YWItbGFiZWwuY2RrLXByb2dyYW0tZm9jdXNlZFtfbmdjb250ZW50LSVDT01QJV06bm90KC5tYXQtdGFiLWRpc2FibGVkKSwgLm1hdC10YWItbmF2LWJhci5tYXQtYmFja2dyb3VuZC1hY2NlbnRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC10YWItbGluay5jZGsta2V5Ym9hcmQtZm9jdXNlZFtfbmdjb250ZW50LSVDT01QJV06bm90KC5tYXQtdGFiLWRpc2FibGVkKSwgLm1hdC10YWItbmF2LWJhci5tYXQtYmFja2dyb3VuZC1hY2NlbnRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC10YWItbGluay5jZGstcHJvZ3JhbS1mb2N1c2VkW19uZ2NvbnRlbnQtJUNPTVAlXTpub3QoLm1hdC10YWItZGlzYWJsZWQpe2JhY2tncm91bmQtY29sb3I6cmdiYSgyNTUsMTUyLDAsLjMpfS5tYXQtdGFiLWdyb3VwLm1hdC1iYWNrZ3JvdW5kLWFjY2VudFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXRhYi1oZWFkZXJbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXRhYi1ncm91cC5tYXQtYmFja2dyb3VuZC1hY2NlbnRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC10YWItbGlua3NbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXRhYi1ncm91cC5tYXQtYmFja2dyb3VuZC1hY2NlbnRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC10YWItaGVhZGVyLXBhZ2luYXRpb25bX25nY29udGVudC0lQ09NUCVdLCAubWF0LXRhYi1uYXYtYmFyLm1hdC1iYWNrZ3JvdW5kLWFjY2VudFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXRhYi1oZWFkZXJbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXRhYi1uYXYtYmFyLm1hdC1iYWNrZ3JvdW5kLWFjY2VudFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXRhYi1saW5rc1tfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdGFiLW5hdi1iYXIubWF0LWJhY2tncm91bmQtYWNjZW50W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtdGFiLWhlYWRlci1wYWdpbmF0aW9uW19uZ2NvbnRlbnQtJUNPTVAlXXtiYWNrZ3JvdW5kLWNvbG9yOiNmZjk4MDB9Lm1hdC10YWItZ3JvdXAubWF0LWJhY2tncm91bmQtYWNjZW50W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtdGFiLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10YWItZ3JvdXAubWF0LWJhY2tncm91bmQtYWNjZW50W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtdGFiLWxpbmtbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXRhYi1uYXYtYmFyLm1hdC1iYWNrZ3JvdW5kLWFjY2VudFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXRhYi1sYWJlbFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdGFiLW5hdi1iYXIubWF0LWJhY2tncm91bmQtYWNjZW50W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtdGFiLWxpbmtbX25nY29udGVudC0lQ09NUCVde2NvbG9yOiNmZmZ9Lm1hdC10YWItZ3JvdXAubWF0LWJhY2tncm91bmQtYWNjZW50W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtdGFiLWxhYmVsLm1hdC10YWItZGlzYWJsZWRbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXRhYi1ncm91cC5tYXQtYmFja2dyb3VuZC1hY2NlbnRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC10YWItbGluay5tYXQtdGFiLWRpc2FibGVkW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10YWItbmF2LWJhci5tYXQtYmFja2dyb3VuZC1hY2NlbnRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC10YWItbGFiZWwubWF0LXRhYi1kaXNhYmxlZFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdGFiLW5hdi1iYXIubWF0LWJhY2tncm91bmQtYWNjZW50W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtdGFiLWxpbmsubWF0LXRhYi1kaXNhYmxlZFtfbmdjb250ZW50LSVDT01QJV17Y29sb3I6cmdiYSgyNTUsMjU1LDI1NSwuNCl9Lm1hdC10YWItZ3JvdXAubWF0LWJhY2tncm91bmQtYWNjZW50W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtdGFiLWhlYWRlci1wYWdpbmF0aW9uLWNoZXZyb25bX25nY29udGVudC0lQ09NUCVdLCAubWF0LXRhYi1uYXYtYmFyLm1hdC1iYWNrZ3JvdW5kLWFjY2VudFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXRhYi1oZWFkZXItcGFnaW5hdGlvbi1jaGV2cm9uW19uZ2NvbnRlbnQtJUNPTVAlXXtib3JkZXItY29sb3I6I2ZmZn0ubWF0LXRhYi1ncm91cC5tYXQtYmFja2dyb3VuZC1hY2NlbnRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC10YWItaGVhZGVyLXBhZ2luYXRpb24tZGlzYWJsZWRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC10YWItaGVhZGVyLXBhZ2luYXRpb24tY2hldnJvbltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdGFiLW5hdi1iYXIubWF0LWJhY2tncm91bmQtYWNjZW50W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtdGFiLWhlYWRlci1wYWdpbmF0aW9uLWRpc2FibGVkW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtdGFiLWhlYWRlci1wYWdpbmF0aW9uLWNoZXZyb25bX25nY29udGVudC0lQ09NUCVde2JvcmRlci1jb2xvcjpyZ2JhKDI1NSwyNTUsMjU1LC40KX0ubWF0LXRhYi1ncm91cC5tYXQtYmFja2dyb3VuZC1hY2NlbnRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1yaXBwbGUtZWxlbWVudFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdGFiLW5hdi1iYXIubWF0LWJhY2tncm91bmQtYWNjZW50W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtcmlwcGxlLWVsZW1lbnRbX25nY29udGVudC0lQ09NUCVde2JhY2tncm91bmQtY29sb3I6cmdiYSgyNTUsMjU1LDI1NSwuMTIpfS5tYXQtdGFiLWdyb3VwLm1hdC1iYWNrZ3JvdW5kLXdhcm5bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC10YWItbGFiZWwuY2RrLWtleWJvYXJkLWZvY3VzZWRbX25nY29udGVudC0lQ09NUCVdOm5vdCgubWF0LXRhYi1kaXNhYmxlZCksIC5tYXQtdGFiLWdyb3VwLm1hdC1iYWNrZ3JvdW5kLXdhcm5bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC10YWItbGFiZWwuY2RrLXByb2dyYW0tZm9jdXNlZFtfbmdjb250ZW50LSVDT01QJV06bm90KC5tYXQtdGFiLWRpc2FibGVkKSwgLm1hdC10YWItZ3JvdXAubWF0LWJhY2tncm91bmQtd2Fybltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXRhYi1saW5rLmNkay1rZXlib2FyZC1mb2N1c2VkW19uZ2NvbnRlbnQtJUNPTVAlXTpub3QoLm1hdC10YWItZGlzYWJsZWQpLCAubWF0LXRhYi1ncm91cC5tYXQtYmFja2dyb3VuZC13YXJuW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtdGFiLWxpbmsuY2RrLXByb2dyYW0tZm9jdXNlZFtfbmdjb250ZW50LSVDT01QJV06bm90KC5tYXQtdGFiLWRpc2FibGVkKSwgLm1hdC10YWItbmF2LWJhci5tYXQtYmFja2dyb3VuZC13YXJuW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtdGFiLWxhYmVsLmNkay1rZXlib2FyZC1mb2N1c2VkW19uZ2NvbnRlbnQtJUNPTVAlXTpub3QoLm1hdC10YWItZGlzYWJsZWQpLCAubWF0LXRhYi1uYXYtYmFyLm1hdC1iYWNrZ3JvdW5kLXdhcm5bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC10YWItbGFiZWwuY2RrLXByb2dyYW0tZm9jdXNlZFtfbmdjb250ZW50LSVDT01QJV06bm90KC5tYXQtdGFiLWRpc2FibGVkKSwgLm1hdC10YWItbmF2LWJhci5tYXQtYmFja2dyb3VuZC13YXJuW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtdGFiLWxpbmsuY2RrLWtleWJvYXJkLWZvY3VzZWRbX25nY29udGVudC0lQ09NUCVdOm5vdCgubWF0LXRhYi1kaXNhYmxlZCksIC5tYXQtdGFiLW5hdi1iYXIubWF0LWJhY2tncm91bmQtd2Fybltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXRhYi1saW5rLmNkay1wcm9ncmFtLWZvY3VzZWRbX25nY29udGVudC0lQ09NUCVdOm5vdCgubWF0LXRhYi1kaXNhYmxlZCl7YmFja2dyb3VuZC1jb2xvcjpyZ2JhKDI1NSwyMDUsMjEwLC4zKX0ubWF0LXRhYi1ncm91cC5tYXQtYmFja2dyb3VuZC13YXJuW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtdGFiLWhlYWRlcltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdGFiLWdyb3VwLm1hdC1iYWNrZ3JvdW5kLXdhcm5bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC10YWItbGlua3NbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXRhYi1ncm91cC5tYXQtYmFja2dyb3VuZC13YXJuW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtdGFiLWhlYWRlci1wYWdpbmF0aW9uW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10YWItbmF2LWJhci5tYXQtYmFja2dyb3VuZC13YXJuW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtdGFiLWhlYWRlcltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdGFiLW5hdi1iYXIubWF0LWJhY2tncm91bmQtd2Fybltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXRhYi1saW5rc1tfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdGFiLW5hdi1iYXIubWF0LWJhY2tncm91bmQtd2Fybltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXRhYi1oZWFkZXItcGFnaW5hdGlvbltfbmdjb250ZW50LSVDT01QJV17YmFja2dyb3VuZC1jb2xvcjojZjQ0MzM2fS5tYXQtdGFiLWdyb3VwLm1hdC1iYWNrZ3JvdW5kLXdhcm5bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC10YWItbGFiZWxbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXRhYi1ncm91cC5tYXQtYmFja2dyb3VuZC13YXJuW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtdGFiLWxpbmtbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXRhYi1uYXYtYmFyLm1hdC1iYWNrZ3JvdW5kLXdhcm5bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC10YWItbGFiZWxbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXRhYi1uYXYtYmFyLm1hdC1iYWNrZ3JvdW5kLXdhcm5bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC10YWItbGlua1tfbmdjb250ZW50LSVDT01QJV17Y29sb3I6I2ZmZn0ubWF0LXRhYi1ncm91cC5tYXQtYmFja2dyb3VuZC13YXJuW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtdGFiLWxhYmVsLm1hdC10YWItZGlzYWJsZWRbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXRhYi1ncm91cC5tYXQtYmFja2dyb3VuZC13YXJuW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtdGFiLWxpbmsubWF0LXRhYi1kaXNhYmxlZFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdGFiLW5hdi1iYXIubWF0LWJhY2tncm91bmQtd2Fybltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXRhYi1sYWJlbC5tYXQtdGFiLWRpc2FibGVkW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10YWItbmF2LWJhci5tYXQtYmFja2dyb3VuZC13YXJuW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtdGFiLWxpbmsubWF0LXRhYi1kaXNhYmxlZFtfbmdjb250ZW50LSVDT01QJV17Y29sb3I6cmdiYSgyNTUsMjU1LDI1NSwuNCl9Lm1hdC10YWItZ3JvdXAubWF0LWJhY2tncm91bmQtd2Fybltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXRhYi1oZWFkZXItcGFnaW5hdGlvbi1jaGV2cm9uW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10YWItbmF2LWJhci5tYXQtYmFja2dyb3VuZC13YXJuW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtdGFiLWhlYWRlci1wYWdpbmF0aW9uLWNoZXZyb25bX25nY29udGVudC0lQ09NUCVde2JvcmRlci1jb2xvcjojZmZmfS5tYXQtdGFiLWdyb3VwLm1hdC1iYWNrZ3JvdW5kLXdhcm5bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC10YWItaGVhZGVyLXBhZ2luYXRpb24tZGlzYWJsZWRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC10YWItaGVhZGVyLXBhZ2luYXRpb24tY2hldnJvbltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdGFiLW5hdi1iYXIubWF0LWJhY2tncm91bmQtd2Fybltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXRhYi1oZWFkZXItcGFnaW5hdGlvbi1kaXNhYmxlZFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXRhYi1oZWFkZXItcGFnaW5hdGlvbi1jaGV2cm9uW19uZ2NvbnRlbnQtJUNPTVAlXXtib3JkZXItY29sb3I6cmdiYSgyNTUsMjU1LDI1NSwuNCl9Lm1hdC10YWItZ3JvdXAubWF0LWJhY2tncm91bmQtd2Fybltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXJpcHBsZS1lbGVtZW50W19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10YWItbmF2LWJhci5tYXQtYmFja2dyb3VuZC13YXJuW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtcmlwcGxlLWVsZW1lbnRbX25nY29udGVudC0lQ09NUCVde2JhY2tncm91bmQtY29sb3I6cmdiYSgyNTUsMjU1LDI1NSwuMTIpfS5tYXQtdG9vbGJhcltfbmdjb250ZW50LSVDT01QJV17YmFja2dyb3VuZDojZjVmNWY1O2NvbG9yOiMyMTIxMjF9Lm1hdC10b29sYmFyLm1hdC1wcmltYXJ5W19uZ2NvbnRlbnQtJUNPTVAlXXtiYWNrZ3JvdW5kOiNmNTdjMDA7Y29sb3I6I2ZmZn0ubWF0LXRvb2xiYXIubWF0LWFjY2VudFtfbmdjb250ZW50LSVDT01QJV17YmFja2dyb3VuZDojZmY5ODAwO2NvbG9yOiNmZmZ9Lm1hdC10b29sYmFyLm1hdC13YXJuW19uZ2NvbnRlbnQtJUNPTVAlXXtiYWNrZ3JvdW5kOiNmNDQzMzY7Y29sb3I6I2ZmZn0ubWF0LXRvb2xiYXJbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLXVuZGVybGluZVtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdG9vbGJhcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtcmlwcGxlW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10b29sYmFyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9jdXNlZFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtcmlwcGxlW19uZ2NvbnRlbnQtJUNPTVAlXXtiYWNrZ3JvdW5kLWNvbG9yOmN1cnJlbnRDb2xvcn0ubWF0LXRvb2xiYXJbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10b29sYmFyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9jdXNlZFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXRvb2xiYXJbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1zZWxlY3QtdmFsdWVbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXRvb2xiYXJbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1zZWxlY3QtYXJyb3dbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXRvb2xiYXJbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLm1hdC1mb2N1c2VkW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtc2VsZWN0LWFycm93W19uZ2NvbnRlbnQtJUNPTVAlXXtjb2xvcjppbmhlcml0fS5tYXQtdG9vbGJhcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWlucHV0LWVsZW1lbnRbX25nY29udGVudC0lQ09NUCVde2NhcmV0LWNvbG9yOmN1cnJlbnRDb2xvcn0ubWF0LXRvb2xiYXItbXVsdGlwbGUtcm93c1tfbmdjb250ZW50LSVDT01QJV17bWluLWhlaWdodDo2NHB4fS5tYXQtdG9vbGJhci1yb3dbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXRvb2xiYXItc2luZ2xlLXJvd1tfbmdjb250ZW50LSVDT01QJV17aGVpZ2h0OjY0cHh9QG1lZGlhKG1heC13aWR0aDogNTk5cHgpey5tYXQtdG9vbGJhci1tdWx0aXBsZS1yb3dzW19uZ2NvbnRlbnQtJUNPTVAlXXttaW4taGVpZ2h0OjU2cHh9Lm1hdC10b29sYmFyLXJvd1tfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdG9vbGJhci1zaW5nbGUtcm93W19uZ2NvbnRlbnQtJUNPTVAlXXtoZWlnaHQ6NTZweH19Lm1hdC10b29sdGlwW19uZ2NvbnRlbnQtJUNPTVAlXXtiYWNrZ3JvdW5kOnJnYmEoOTcsOTcsOTcsLjkpfS5tYXQtdHJlZVtfbmdjb250ZW50LSVDT01QJV17YmFja2dyb3VuZDojZmZmfS5tYXQtdHJlZS1ub2RlW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1uZXN0ZWQtdHJlZS1ub2RlW19uZ2NvbnRlbnQtJUNPTVAlXXtjb2xvcjojMjEyMTIxfS5tYXQtdHJlZS1ub2RlW19uZ2NvbnRlbnQtJUNPTVAlXXttaW4taGVpZ2h0OjQ4cHh9Lm1hdC1zbmFjay1iYXItY29udGFpbmVyW19uZ2NvbnRlbnQtJUNPTVAlXXtjb2xvcjpyZ2JhKDI1NSwyNTUsMjU1LC43KTtiYWNrZ3JvdW5kOiMzMjMyMzI7Ym94LXNoYWRvdzowcHggM3B4IDVweCAtMXB4IHJnYmEoMCwgMCwgMCwgMC4yKSwwcHggNnB4IDEwcHggMHB4IHJnYmEoMCwgMCwgMCwgMC4xNCksMHB4IDFweCAxOHB4IDBweCByZ2JhKDAsIDAsIDAsIDAuMTIpfS5tYXQtc2ltcGxlLXNuYWNrYmFyLWFjdGlvbltfbmdjb250ZW50LSVDT01QJV17Y29sb3I6I2ZmOTgwMH0uZ3JvdXAtdG9vbGJhcltfbmdjb250ZW50LSVDT01QJV17YmFja2dyb3VuZC1jb2xvcjojZmZmO2hlaWdodDo0MnB4O3BhZGRpbmc6MCAxNnB4O2Rpc3BsYXk6ZmxleDthbGlnbi1pdGVtczpjZW50ZXI7Ym9yZGVyLWJvdHRvbToxcHggc29saWQgI2ViZWJlYn0uZ3JvdXAtdGV4dFtfbmdjb250ZW50LSVDT01QJV17ZGlzcGxheTpmbGV4O2FsaWduLWl0ZW1zOmJhc2VsaW5lfS5ncm91cC10aXRsZVtfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjE0cHg7Zm9udC13ZWlnaHQ6NTAwfS5ncm91cC1jYXJkLWNvdW50W19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MTJweDtmb250LXdlaWdodDo0MDA7Y29sb3I6IzYxNjE2MTttYXJnaW4tbGVmdDo2cHh9J10sY2hhbmdlRGV0ZWN0aW9uOjB9KTtjb25zdCB3bXQ9cHYoZUQsS0QsKCh0LG4pPT50LmZpbHRlcigodD0+IWZUKHQucGx1Z2luKXx8Qm9vbGVhbihuJiZuLmdldCh0LnJ1bklkKSkpKSkpO2NsYXNzIFNtdHtjb25zdHJ1Y3Rvcih0KXt0aGlzLnN0b3JlPXQsdGhpcy5jYXJkSWRzV2l0aE1ldGFkYXRhJD10aGlzLnN0b3JlLnNlbGVjdCh3bXQpLnBpcGUoc2UoKHQ9PkV0KFtaKHQpLHRoaXMuc3RvcmUuc2VsZWN0KE1EKV0pKSksZnQoKChbdCxuXSk9Pnt0cnl7cmV0dXJue2NhcmRMaXN0OnQscmVnZXg6bmV3IFJlZ0V4cChuKX19Y2F0Y2gobil7cmV0dXJue2NhcmRMaXN0OnQscmVnZXg6bnVsbH19fSkpLEd0KCgoe3JlZ2V4OnR9KT0+bnVsbCE9PXQpKSxmdCgoKHtjYXJkTGlzdDp0LHJlZ2V4Om59KT0+dC5maWx0ZXIoKCh7dGFnOnR9KT0+bi50ZXN0KHQpKSkpKSxmdCgodD0+dC5zb3J0KCgodCxuKT0+S0sodC50YWcsbi50YWcpKSkpKSx2bigoKHQsbik9PnQubGVuZ3RoPT09bi5sZW5ndGgmJnQuZXZlcnkoKCh0LGUpPT50LmNhcmRJZD09PW5bZV0uY2FyZElkKSkpKSxjZShbXSkpfX1mdW5jdGlvbiBFbXQodCxuKXtpZigxJnQmJihLZygwLCJzcGFuIiw3KSxKcCgxKSwkZygpKSwyJnQpe2NvbnN0IHQ9Z3AoKTt3cygxKSxLcCgiIix0LmNhcmRJZHNXaXRoTWV0YWRhdGEubGVuZ3RoLCIgY2FyZHMiKX19ZnVuY3Rpb24gQW10KHQsbil7aWYoMSZ0JiZ0cCgwLCJtZXRyaWNzLWNhcmQtZ3JpZCIsOCksMiZ0KXtjb25zdCB0PWdwKCk7SmcoImNhcmRJZHNXaXRoTWV0YWRhdGEiLHQuY2FyZElkc1dpdGhNZXRhZGF0YSkoImNhcmRPYnNlcnZlciIsdC5jYXJkT2JzZXJ2ZXIpfX1mdW5jdGlvbiB6bXQodCxuKXsxJnQmJihLZygwLCJkaXYiLDkpLEpwKDEsIlBpbiBjYXJkcyBmb3IgYSBxdWljayB2aWV3IGFuZCBjb21wYXJpc29uIiksJGcoKSl9U210Lsm1ZmFjPWZ1bmN0aW9uIHQobil7cmV0dXJuIG5ldyhufHxTbXQpKFpnKGN2KSl9LFNtdC7JtWNtcD1fbyh7dHlwZTpTbXQsc2VsZWN0b3JzOltbIm1ldHJpY3MtZmlsdGVyZWQtdmlldyJdXSxpbnB1dHM6e2NhcmRPYnNlcnZlcjoiY2FyZE9ic2VydmVyIn0sZGVjbHM6Mix2YXJzOjQsY29uc3RzOltbMywiY2FyZElkc1dpdGhNZXRhZGF0YSIsImNhcmRPYnNlcnZlciJdXSx0ZW1wbGF0ZTpmdW5jdGlvbiB0KG4sZSl7MSZuJiYodHAoMCwibWV0cmljcy1maWx0ZXJlZC12aWV3LWNvbXBvbmVudCIsMCkseWYoMSwiYXN5bmMiKSksMiZuJiZKZygiY2FyZElkc1dpdGhNZXRhZGF0YSIsa2YoMSwyLGUuY2FyZElkc1dpdGhNZXRhZGF0YSQpKSgiY2FyZE9ic2VydmVyIixlLmNhcmRPYnNlcnZlcil9LGRpcmVjdGl2ZXM6W3ZtdF0scGlwZXM6W29PXSxlbmNhcHN1bGF0aW9uOjIsY2hhbmdlRGV0ZWN0aW9uOjB9KTtjbGFzcyBSbXR7fVJtdC7JtWZhYz1mdW5jdGlvbiB0KG4pe3JldHVybiBuZXcobnx8Um10KX0sUm10Lsm1Y21wPV9vKHt0eXBlOlJtdCxzZWxlY3RvcnM6W1sibWV0cmljcy1waW5uZWQtdmlldy1jb21wb25lbnQiXV0saW5wdXRzOntjYXJkT2JzZXJ2ZXI6ImNhcmRPYnNlcnZlciIsY2FyZElkc1dpdGhNZXRhZGF0YToiY2FyZElkc1dpdGhNZXRhZGF0YSJ9LGRlY2xzOjksdmFyczozLGNvbnN0czpbWzEsImdyb3VwLXRvb2xiYXIiXSxbInN2Z0ljb24iLCJrZWVwXzI0cHgiXSxbMSwiZ3JvdXAtdGV4dCJdLFsiYXJpYS1yb2xlIiwiaGVhZGluZyIsImFyaWEtbGV2ZWwiLCIzIiwxLCJncm91cC10aXRsZSJdLFsiY2xhc3MiLCJncm91cC1jYXJkLWNvdW50Iiw0LCJuZ0lmIl0sWzMsImNhcmRJZHNXaXRoTWV0YWRhdGEiLCJjYXJkT2JzZXJ2ZXIiLDQsIm5nSWYiLCJuZ0lmRWxzZSJdLFsiZW1wdHlQaW5uZWRWaWV3IiwiIl0sWzEsImdyb3VwLWNhcmQtY291bnQiXSxbMywiY2FyZElkc1dpdGhNZXRhZGF0YSIsImNhcmRPYnNlcnZlciJdLFsxLCJlbXB0eS1tZXNzYWdlIl1dLHRlbXBsYXRlOmZ1bmN0aW9uIHQobixlKXtpZigxJm4mJihLZygwLCJkaXYiLDApLHRwKDEsIm1hdC1pY29uIiwxKSxLZygyLCJzcGFuIiwyKSxLZygzLCJzcGFuIiwzKSxKcCg0LCJQaW5uZWQiKSwkZygpLFlnKDUsRW10LDIsMSwic3BhbiIsNCksJGcoKSwkZygpLFlnKDYsQW10LDEsMiwibWV0cmljcy1jYXJkLWdyaWQiLDUpLFlnKDcsem10LDIsMCwibmctdGVtcGxhdGUiLG51bGwsNixLZikpLDImbil7Y29uc3QgdD1xZyg4KTt3cyg1KSxKZygibmdJZiIsZS5jYXJkSWRzV2l0aE1ldGFkYXRhLmxlbmd0aD4xKSx3cygxKSxKZygibmdJZiIsZS5jYXJkSWRzV2l0aE1ldGFkYXRhLmxlbmd0aCkoIm5nSWZFbHNlIix0KX19LGRpcmVjdGl2ZXM6W0JCLFdNLENtdF0sc3R5bGVzOlsnLm1hdC1iYWRnZS1jb250ZW50W19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXdlaWdodDo2MDA7Zm9udC1zaXplOjEycHg7Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmfS5tYXQtYmFkZ2Utc21hbGxbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1iYWRnZS1jb250ZW50W19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6OXB4fS5tYXQtYmFkZ2UtbGFyZ2VbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1iYWRnZS1jb250ZW50W19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MjRweH0ubWF0LWgxW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1oZWFkbGluZVtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdHlwb2dyYXBoeVtfbmdjb250ZW50LSVDT01QJV0gICBoMVtfbmdjb250ZW50LSVDT01QJV17Zm9udDo0MDAgMjRweC8zMnB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtsZXR0ZXItc3BhY2luZzpub3JtYWw7bWFyZ2luOjAgMCAxNnB4fS5tYXQtaDJbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXRpdGxlW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10eXBvZ3JhcGh5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIGgyW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250OjUwMCAyMHB4LzMycHggUm9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2xldHRlci1zcGFjaW5nOm5vcm1hbDttYXJnaW46MCAwIDE2cHh9Lm1hdC1oM1tfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtc3ViaGVhZGluZy0yW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10eXBvZ3JhcGh5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIGgzW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250OjQwMCAxNnB4LzI4cHggUm9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2xldHRlci1zcGFjaW5nOm5vcm1hbDttYXJnaW46MCAwIDE2cHh9Lm1hdC1oNFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtc3ViaGVhZGluZy0xW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10eXBvZ3JhcGh5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIGg0W19uZ2NvbnRlbnQtJUNPTVAlXXtmb250OjQwMCAxNXB4LzI0cHggUm9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2xldHRlci1zcGFjaW5nOm5vcm1hbDttYXJnaW46MCAwIDE2cHh9Lm1hdC1oNVtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdHlwb2dyYXBoeVtfbmdjb250ZW50LSVDT01QJV0gICBoNVtfbmdjb250ZW50LSVDT01QJV17Zm9udDo0MDAgY2FsYygxNHB4ICogMC44MykvMjBweCBSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7bWFyZ2luOjAgMCAxMnB4fS5tYXQtaDZbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXR5cG9ncmFwaHlbX25nY29udGVudC0lQ09NUCVdICAgaDZbX25nY29udGVudC0lQ09NUCVde2ZvbnQ6NDAwIGNhbGMoMTRweCAqIDAuNjcpLzIwcHggUm9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO21hcmdpbjowIDAgMTJweH0ubWF0LWJvZHktc3Ryb25nW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1ib2R5LTJbX25nY29udGVudC0lQ09NUCVde2ZvbnQ6NTAwIDE0cHgvMjRweCBSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7bGV0dGVyLXNwYWNpbmc6bm9ybWFsfS5tYXQtYm9keVtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtYm9keS0xW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10eXBvZ3JhcGh5W19uZ2NvbnRlbnQtJUNPTVAlXXtmb250OjQwMCAxNHB4LzIwcHggUm9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2xldHRlci1zcGFjaW5nOm5vcm1hbH0ubWF0LWJvZHlbX25nY29udGVudC0lQ09NUCVdICAgcFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtYm9keS0xW19uZ2NvbnRlbnQtJUNPTVAlXSAgIHBbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXR5cG9ncmFwaHlbX25nY29udGVudC0lQ09NUCVdICAgcFtfbmdjb250ZW50LSVDT01QJV17bWFyZ2luOjAgMCAxMnB4fS5tYXQtc21hbGxbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWNhcHRpb25bX25nY29udGVudC0lQ09NUCVde2ZvbnQ6NDAwIDEycHgvMjBweCBSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7bGV0dGVyLXNwYWNpbmc6bm9ybWFsfS5tYXQtZGlzcGxheS00W19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10eXBvZ3JhcGh5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZGlzcGxheS00W19uZ2NvbnRlbnQtJUNPTVAlXXtmb250OjMwMCAxMTJweC8xMTJweCBSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7bGV0dGVyLXNwYWNpbmc6LTAuMDVlbTttYXJnaW46MCAwIDU2cHh9Lm1hdC1kaXNwbGF5LTNbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXR5cG9ncmFwaHlbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1kaXNwbGF5LTNbX25nY29udGVudC0lQ09NUCVde2ZvbnQ6NDAwIDU2cHgvNTZweCBSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7bGV0dGVyLXNwYWNpbmc6LTAuMDJlbTttYXJnaW46MCAwIDY0cHh9Lm1hdC1kaXNwbGF5LTJbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXR5cG9ncmFwaHlbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1kaXNwbGF5LTJbX25nY29udGVudC0lQ09NUCVde2ZvbnQ6NDAwIDQ1cHgvNDhweCBSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7bGV0dGVyLXNwYWNpbmc6LTAuMDA1ZW07bWFyZ2luOjAgMCA2NHB4fS5tYXQtZGlzcGxheS0xW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10eXBvZ3JhcGh5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZGlzcGxheS0xW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250OjQwMCAzNHB4LzQwcHggUm9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2xldHRlci1zcGFjaW5nOm5vcm1hbDttYXJnaW46MCAwIDY0cHh9Lm1hdC1ib3R0b20tc2hlZXQtY29udGFpbmVyW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250OjQwMCAxNHB4LzIwcHggUm9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2xldHRlci1zcGFjaW5nOm5vcm1hbH0ubWF0LWJ1dHRvbltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtcmFpc2VkLWJ1dHRvbltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtaWNvbi1idXR0b25bX25nY29udGVudC0lQ09NUCVdLCAubWF0LXN0cm9rZWQtYnV0dG9uW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1mbGF0LWJ1dHRvbltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtZmFiW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1taW5pLWZhYltfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2ZvbnQtc2l6ZToxNHB4O2ZvbnQtd2VpZ2h0OjUwMH0ubWF0LWJ1dHRvbi10b2dnbGVbX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZn0ubWF0LWNhcmRbX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZn0ubWF0LWNhcmQtdGl0bGVbX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToyNHB4O2ZvbnQtd2VpZ2h0OjUwMH0ubWF0LWNhcmQtaGVhZGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtY2FyZC10aXRsZVtfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjIwcHh9Lm1hdC1jYXJkLXN1YnRpdGxlW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1jYXJkLWNvbnRlbnRbX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToxNHB4fS5tYXQtY2hlY2tib3hbX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZn0ubWF0LWNoZWNrYm94LWxheW91dFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWNoZWNrYm94LWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXtsaW5lLWhlaWdodDoyNHB4fS5tYXQtY2hpcFtfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjE0cHg7Zm9udC13ZWlnaHQ6NTAwfS5tYXQtY2hpcFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWNoaXAtdHJhaWxpbmctaWNvbi5tYXQtaWNvbltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtY2hpcFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWNoaXAtcmVtb3ZlLm1hdC1pY29uW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MThweH0ubWF0LXRhYmxlW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWZ9Lm1hdC1oZWFkZXItY2VsbFtfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjEycHg7Zm9udC13ZWlnaHQ6NTAwfS5tYXQtY2VsbFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtZm9vdGVyLWNlbGxbX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToxNHB4fS5tYXQtY2FsZW5kYXJbX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZn0ubWF0LWNhbGVuZGFyLWJvZHlbX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToxM3B4fS5tYXQtY2FsZW5kYXItYm9keS1sYWJlbFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtY2FsZW5kYXItcGVyaW9kLWJ1dHRvbltfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjE0cHg7Zm9udC13ZWlnaHQ6NTAwfS5tYXQtY2FsZW5kYXItdGFibGUtaGVhZGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIHRoW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MTFweDtmb250LXdlaWdodDo0MDB9Lm1hdC1kaWFsb2ctdGl0bGVbX25nY29udGVudC0lQ09NUCVde2ZvbnQ6NTAwIDIwcHgvMzJweCBSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7bGV0dGVyLXNwYWNpbmc6bm9ybWFsfS5tYXQtZXhwYW5zaW9uLXBhbmVsLWhlYWRlcltfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2ZvbnQtc2l6ZToxNXB4O2ZvbnQtd2VpZ2h0OjQwMH0ubWF0LWV4cGFuc2lvbi1wYW5lbC1jb250ZW50W19uZ2NvbnRlbnQtJUNPTVAlXXtmb250OjQwMCAxNHB4LzIwcHggUm9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2xldHRlci1zcGFjaW5nOm5vcm1hbH0ubWF0LWZvcm0tZmllbGRbX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZTppbmhlcml0O2ZvbnQtd2VpZ2h0OjQwMDtsaW5lLWhlaWdodDoxLjEyNTtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7bGV0dGVyLXNwYWNpbmc6bm9ybWFsfS5tYXQtZm9ybS1maWVsZC13cmFwcGVyW19uZ2NvbnRlbnQtJUNPTVAlXXtwYWRkaW5nLWJvdHRvbToxLjM0Mzc1ZW19Lm1hdC1mb3JtLWZpZWxkLXByZWZpeFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWljb25bX25nY29udGVudC0lQ09NUCVdLCAubWF0LWZvcm0tZmllbGQtc3VmZml4W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaWNvbltfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjE1MCU7bGluZS1oZWlnaHQ6MS4xMjV9Lm1hdC1mb3JtLWZpZWxkLXByZWZpeFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWljb24tYnV0dG9uW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1mb3JtLWZpZWxkLXN1ZmZpeFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWljb24tYnV0dG9uW19uZ2NvbnRlbnQtJUNPTVAlXXtoZWlnaHQ6MS41ZW07d2lkdGg6MS41ZW19Lm1hdC1mb3JtLWZpZWxkLXByZWZpeFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWljb24tYnV0dG9uW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaWNvbltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtZm9ybS1maWVsZC1zdWZmaXhbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pY29uLWJ1dHRvbltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWljb25bX25nY29udGVudC0lQ09NUCVde2hlaWdodDoxLjEyNWVtO2xpbmUtaGVpZ2h0OjEuMTI1fS5tYXQtZm9ybS1maWVsZC1pbmZpeFtfbmdjb250ZW50LSVDT01QJV17cGFkZGluZzouNWVtIDA7Ym9yZGVyLXRvcDouODQzNzVlbSBzb2xpZCB0cmFuc3BhcmVudH0ubWF0LWZvcm0tZmllbGQtY2FuLWZsb2F0Lm1hdC1mb3JtLWZpZWxkLXNob3VsZC1mbG9hdFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWZvcm0tZmllbGQtY2FuLWZsb2F0W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaW5wdXQtc2VydmVyW19uZ2NvbnRlbnQtJUNPTVAlXTpmb2N1cyArIC5tYXQtZm9ybS1maWVsZC1sYWJlbC13cmFwcGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17dHJhbnNmb3JtOnRyYW5zbGF0ZVkoLTEuMzQzNzVlbSkgc2NhbGUoMC43NSk7d2lkdGg6MTMzLjMzMzMzMzMzMzMlfS5tYXQtZm9ybS1maWVsZC1jYW4tZmxvYXRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pbnB1dC1zZXJ2ZXJbbGFiZWxdW19uZ2NvbnRlbnQtJUNPTVAlXTpub3QoOmxhYmVsLXNob3duKSArIC5tYXQtZm9ybS1maWVsZC1sYWJlbC13cmFwcGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17dHJhbnNmb3JtOnRyYW5zbGF0ZVkoLTEuMzQzNzRlbSkgc2NhbGUoMC43NSk7d2lkdGg6MTMzLjMzMzM0MzMzMzMlfS5tYXQtZm9ybS1maWVsZC1sYWJlbC13cmFwcGVyW19uZ2NvbnRlbnQtJUNPTVAlXXt0b3A6LTAuODQzNzVlbTtwYWRkaW5nLXRvcDouODQzNzVlbX0ubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVde3RvcDoxLjM0Mzc1ZW19Lm1hdC1mb3JtLWZpZWxkLXVuZGVybGluZVtfbmdjb250ZW50LSVDT01QJV17Ym90dG9tOjEuMzQzNzVlbX0ubWF0LWZvcm0tZmllbGQtc3Vic2NyaXB0LXdyYXBwZXJbX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZTo3NSU7bWFyZ2luLXRvcDouNjY2NjY2NjY2N2VtO3RvcDpjYWxjKDEwMCUgLSAxLjc5MTY2NjY2NjdlbSl9Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtbGVnYWN5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC13cmFwcGVyW19uZ2NvbnRlbnQtJUNPTVAlXXtwYWRkaW5nLWJvdHRvbToxLjI1ZW19Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtbGVnYWN5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1pbmZpeFtfbmdjb250ZW50LSVDT01QJV17cGFkZGluZzouNDM3NWVtIDB9Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtbGVnYWN5Lm1hdC1mb3JtLWZpZWxkLWNhbi1mbG9hdC5tYXQtZm9ybS1maWVsZC1zaG91bGQtZmxvYXRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtbGVnYWN5Lm1hdC1mb3JtLWZpZWxkLWNhbi1mbG9hdFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWlucHV0LXNlcnZlcltfbmdjb250ZW50LSVDT01QJV06Zm9jdXMgKyAubWF0LWZvcm0tZmllbGQtbGFiZWwtd3JhcHBlcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVde3RyYW5zZm9ybTp0cmFuc2xhdGVZKC0xLjI4MTI1ZW0pIHNjYWxlKDAuNzUpIHBlcnNwZWN0aXZlKDEwMHB4KSB0cmFuc2xhdGVaKDAuMDAxcHgpOy1tcy10cmFuc2Zvcm06dHJhbnNsYXRlWSgtMS4yODEyNWVtKSBzY2FsZSgwLjc1KTt3aWR0aDoxMzMuMzMzMzMzMzMzMyV9Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtbGVnYWN5Lm1hdC1mb3JtLWZpZWxkLWNhbi1mbG9hdFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtYXV0b2ZpbGwtY29udHJvbFtfbmdjb250ZW50LSVDT01QJV06LXdlYmtpdC1hdXRvZmlsbCArIC5tYXQtZm9ybS1maWVsZC1sYWJlbC13cmFwcGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17dHJhbnNmb3JtOnRyYW5zbGF0ZVkoLTEuMjgxMjVlbSkgc2NhbGUoMC43NSkgcGVyc3BlY3RpdmUoMTAwcHgpIHRyYW5zbGF0ZVooMC4wMDEwMXB4KTstbXMtdHJhbnNmb3JtOnRyYW5zbGF0ZVkoLTEuMjgxMjRlbSkgc2NhbGUoMC43NSk7d2lkdGg6MTMzLjMzMzM0MzMzMzMlfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWxlZ2FjeS5tYXQtZm9ybS1maWVsZC1jYW4tZmxvYXRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pbnB1dC1zZXJ2ZXJbbGFiZWxdW19uZ2NvbnRlbnQtJUNPTVAlXTpub3QoOmxhYmVsLXNob3duKSArIC5tYXQtZm9ybS1maWVsZC1sYWJlbC13cmFwcGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17dHJhbnNmb3JtOnRyYW5zbGF0ZVkoLTEuMjgxMjVlbSkgc2NhbGUoMC43NSkgcGVyc3BlY3RpdmUoMTAwcHgpIHRyYW5zbGF0ZVooMC4wMDEwMnB4KTstbXMtdHJhbnNmb3JtOnRyYW5zbGF0ZVkoLTEuMjgxMjNlbSkgc2NhbGUoMC43NSk7d2lkdGg6MTMzLjMzMzM1MzMzMzMlfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWxlZ2FjeVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVde3RvcDoxLjI4MTI1ZW19Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtbGVnYWN5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC11bmRlcmxpbmVbX25nY29udGVudC0lQ09NUCVde2JvdHRvbToxLjI1ZW19Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtbGVnYWN5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1zdWJzY3JpcHQtd3JhcHBlcltfbmdjb250ZW50LSVDT01QJV17bWFyZ2luLXRvcDouNTQxNjY2NjY2N2VtO3RvcDpjYWxjKDEwMCUgLSAxLjY2NjY2NjY2NjdlbSl9QG1lZGlhIHByaW50ey5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWxlZ2FjeS5tYXQtZm9ybS1maWVsZC1jYW4tZmxvYXQubWF0LWZvcm0tZmllbGQtc2hvdWxkLWZsb2F0W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWxlZ2FjeS5tYXQtZm9ybS1maWVsZC1jYW4tZmxvYXRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pbnB1dC1zZXJ2ZXJbX25nY29udGVudC0lQ09NUCVdOmZvY3VzICsgLm1hdC1mb3JtLWZpZWxkLWxhYmVsLXdyYXBwZXJbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXt0cmFuc2Zvcm06dHJhbnNsYXRlWSgtMS4yODEyMmVtKSBzY2FsZSgwLjc1KX0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1sZWdhY3kubWF0LWZvcm0tZmllbGQtY2FuLWZsb2F0W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1hdXRvZmlsbC1jb250cm9sW19uZ2NvbnRlbnQtJUNPTVAlXTotd2Via2l0LWF1dG9maWxsICsgLm1hdC1mb3JtLWZpZWxkLWxhYmVsLXdyYXBwZXJbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXt0cmFuc2Zvcm06dHJhbnNsYXRlWSgtMS4yODEyMWVtKSBzY2FsZSgwLjc1KX0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1sZWdhY3kubWF0LWZvcm0tZmllbGQtY2FuLWZsb2F0W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaW5wdXQtc2VydmVyW2xhYmVsXVtfbmdjb250ZW50LSVDT01QJV06bm90KDpsYWJlbC1zaG93bikgKyAubWF0LWZvcm0tZmllbGQtbGFiZWwtd3JhcHBlcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVde3RyYW5zZm9ybTp0cmFuc2xhdGVZKC0xLjI4MTJlbSkgc2NhbGUoMC43NSl9fS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWZpbGxbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWluZml4W19uZ2NvbnRlbnQtJUNPTVAlXXtwYWRkaW5nOi4yNWVtIDAgLjc1ZW0gMH0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1maWxsW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17dG9wOjEuMDkzNzVlbTttYXJnaW4tdG9wOi0wLjVlbX0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1maWxsLm1hdC1mb3JtLWZpZWxkLWNhbi1mbG9hdC5tYXQtZm9ybS1maWVsZC1zaG91bGQtZmxvYXRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtZmlsbC5tYXQtZm9ybS1maWVsZC1jYW4tZmxvYXRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pbnB1dC1zZXJ2ZXJbX25nY29udGVudC0lQ09NUCVdOmZvY3VzICsgLm1hdC1mb3JtLWZpZWxkLWxhYmVsLXdyYXBwZXJbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXt0cmFuc2Zvcm06dHJhbnNsYXRlWSgtMC41OTM3NWVtKSBzY2FsZSgwLjc1KTt3aWR0aDoxMzMuMzMzMzMzMzMzMyV9Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtZmlsbC5tYXQtZm9ybS1maWVsZC1jYW4tZmxvYXRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pbnB1dC1zZXJ2ZXJbbGFiZWxdW19uZ2NvbnRlbnQtJUNPTVAlXTpub3QoOmxhYmVsLXNob3duKSArIC5tYXQtZm9ybS1maWVsZC1sYWJlbC13cmFwcGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17dHJhbnNmb3JtOnRyYW5zbGF0ZVkoLTAuNTkzNzRlbSkgc2NhbGUoMC43NSk7d2lkdGg6MTMzLjMzMzM0MzMzMzMlfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLW91dGxpbmVbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWluZml4W19uZ2NvbnRlbnQtJUNPTVAlXXtwYWRkaW5nOjFlbSAwIDFlbSAwfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLW91dGxpbmVbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXt0b3A6MS44NDM3NWVtO21hcmdpbi10b3A6LTAuMjVlbX0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1vdXRsaW5lLm1hdC1mb3JtLWZpZWxkLWNhbi1mbG9hdC5tYXQtZm9ybS1maWVsZC1zaG91bGQtZmxvYXRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2Utb3V0bGluZS5tYXQtZm9ybS1maWVsZC1jYW4tZmxvYXRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pbnB1dC1zZXJ2ZXJbX25nY29udGVudC0lQ09NUCVdOmZvY3VzICsgLm1hdC1mb3JtLWZpZWxkLWxhYmVsLXdyYXBwZXJbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXt0cmFuc2Zvcm06dHJhbnNsYXRlWSgtMS41OTM3NWVtKSBzY2FsZSgwLjc1KTt3aWR0aDoxMzMuMzMzMzMzMzMzMyV9Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2Utb3V0bGluZS5tYXQtZm9ybS1maWVsZC1jYW4tZmxvYXRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pbnB1dC1zZXJ2ZXJbbGFiZWxdW19uZ2NvbnRlbnQtJUNPTVAlXTpub3QoOmxhYmVsLXNob3duKSArIC5tYXQtZm9ybS1maWVsZC1sYWJlbC13cmFwcGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17dHJhbnNmb3JtOnRyYW5zbGF0ZVkoLTEuNTkzNzRlbSkgc2NhbGUoMC43NSk7d2lkdGg6MTMzLjMzMzM0MzMzMzMlfS5tYXQtZ3JpZC10aWxlLWhlYWRlcltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtZ3JpZC10aWxlLWZvb3Rlcltfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjE0cHh9Lm1hdC1ncmlkLXRpbGUtaGVhZGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGluZVtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtZ3JpZC10aWxlLWZvb3Rlcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpbmVbX25nY29udGVudC0lQ09NUCVde3doaXRlLXNwYWNlOm5vd3JhcDtvdmVyZmxvdzpoaWRkZW47dGV4dC1vdmVyZmxvdzplbGxpcHNpcztkaXNwbGF5OmJsb2NrO2JveC1zaXppbmc6Ym9yZGVyLWJveH0ubWF0LWdyaWQtdGlsZS1oZWFkZXJbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saW5lW19uZ2NvbnRlbnQtJUNPTVAlXTpudGgtY2hpbGQobisyKSwgLm1hdC1ncmlkLXRpbGUtZm9vdGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGluZVtfbmdjb250ZW50LSVDT01QJV06bnRoLWNoaWxkKG4rMil7Zm9udC1zaXplOjEycHh9aW5wdXQubWF0LWlucHV0LWVsZW1lbnRbX25nY29udGVudC0lQ09NUCVde21hcmdpbi10b3A6LTAuMDYyNWVtfS5tYXQtbWVudS1pdGVtW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7Zm9udC1zaXplOjE0cHg7Zm9udC13ZWlnaHQ6NDAwfS5tYXQtcGFnaW5hdG9yW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1wYWdpbmF0b3ItcGFnZS1zaXplW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtc2VsZWN0LXRyaWdnZXJbX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtmb250LXNpemU6MTJweH0ubWF0LXJhZGlvLWJ1dHRvbltfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmfS5tYXQtc2VsZWN0W19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWZ9Lm1hdC1zZWxlY3QtdHJpZ2dlcltfbmdjb250ZW50LSVDT01QJV17aGVpZ2h0OjEuMTI1ZW19Lm1hdC1zbGlkZS10b2dnbGUtY29udGVudFtfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmfS5tYXQtc2xpZGVyLXRodW1iLWxhYmVsLXRleHRbX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtmb250LXNpemU6MTJweDtmb250LXdlaWdodDo1MDB9Lm1hdC1zdGVwcGVyLXZlcnRpY2FsW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1zdGVwcGVyLWhvcml6b250YWxbX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZn0ubWF0LXN0ZXAtbGFiZWxbX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToxNHB4O2ZvbnQtd2VpZ2h0OjQwMH0ubWF0LXN0ZXAtc3ViLWxhYmVsLWVycm9yW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXdlaWdodDpub3JtYWx9Lm1hdC1zdGVwLWxhYmVsLWVycm9yW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MTRweH0ubWF0LXN0ZXAtbGFiZWwtc2VsZWN0ZWRbX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToxNHB4O2ZvbnQtd2VpZ2h0OjUwMH0ubWF0LXRhYi1ncm91cFtfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmfS5tYXQtdGFiLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10YWItbGlua1tfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2ZvbnQtc2l6ZToxNHB4O2ZvbnQtd2VpZ2h0OjUwMH0ubWF0LXRvb2xiYXJbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXRvb2xiYXJbX25nY29udGVudC0lQ09NUCVdICAgaDFbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXRvb2xiYXJbX25nY29udGVudC0lQ09NUCVdICAgaDJbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXRvb2xiYXJbX25nY29udGVudC0lQ09NUCVdICAgaDNbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXRvb2xiYXJbX25nY29udGVudC0lQ09NUCVdICAgaDRbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXRvb2xiYXJbX25nY29udGVudC0lQ09NUCVdICAgaDVbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXRvb2xiYXJbX25nY29udGVudC0lQ09NUCVdICAgaDZbX25nY29udGVudC0lQ09NUCVde2ZvbnQ6NTAwIDIwcHgvMzJweCBSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7bGV0dGVyLXNwYWNpbmc6bm9ybWFsO21hcmdpbjowfS5tYXQtdG9vbHRpcFtfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2ZvbnQtc2l6ZToxMHB4O3BhZGRpbmctdG9wOjZweDtwYWRkaW5nLWJvdHRvbTo2cHh9Lm1hdC10b29sdGlwLWhhbmRzZXRbX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToxNHB4O3BhZGRpbmctdG9wOjhweDtwYWRkaW5nLWJvdHRvbTo4cHh9Lm1hdC1saXN0LWl0ZW1bX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZn0ubWF0LWxpc3Qtb3B0aW9uW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWZ9Lm1hdC1saXN0LWJhc2VbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saXN0LWl0ZW1bX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToxNnB4fS5tYXQtbGlzdC1iYXNlW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGlzdC1pdGVtW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGluZVtfbmdjb250ZW50LSVDT01QJV17d2hpdGUtc3BhY2U6bm93cmFwO292ZXJmbG93OmhpZGRlbjt0ZXh0LW92ZXJmbG93OmVsbGlwc2lzO2Rpc3BsYXk6YmxvY2s7Ym94LXNpemluZzpib3JkZXItYm94fS5tYXQtbGlzdC1iYXNlW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGlzdC1pdGVtW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGluZVtfbmdjb250ZW50LSVDT01QJV06bnRoLWNoaWxkKG4rMil7Zm9udC1zaXplOjE0cHh9Lm1hdC1saXN0LWJhc2VbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saXN0LW9wdGlvbltfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjE2cHh9Lm1hdC1saXN0LWJhc2VbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saXN0LW9wdGlvbltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpbmVbX25nY29udGVudC0lQ09NUCVde3doaXRlLXNwYWNlOm5vd3JhcDtvdmVyZmxvdzpoaWRkZW47dGV4dC1vdmVyZmxvdzplbGxpcHNpcztkaXNwbGF5OmJsb2NrO2JveC1zaXppbmc6Ym9yZGVyLWJveH0ubWF0LWxpc3QtYmFzZVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpc3Qtb3B0aW9uW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGluZVtfbmdjb250ZW50LSVDT01QJV06bnRoLWNoaWxkKG4rMil7Zm9udC1zaXplOjE0cHh9Lm1hdC1saXN0LWJhc2VbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1zdWJoZWFkZXJbX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtmb250LXNpemU6MTRweDtmb250LXdlaWdodDo1MDB9Lm1hdC1saXN0LWJhc2VbZGVuc2VdW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGlzdC1pdGVtW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MTJweH0ubWF0LWxpc3QtYmFzZVtkZW5zZV1bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saXN0LWl0ZW1bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saW5lW19uZ2NvbnRlbnQtJUNPTVAlXXt3aGl0ZS1zcGFjZTpub3dyYXA7b3ZlcmZsb3c6aGlkZGVuO3RleHQtb3ZlcmZsb3c6ZWxsaXBzaXM7ZGlzcGxheTpibG9jaztib3gtc2l6aW5nOmJvcmRlci1ib3h9Lm1hdC1saXN0LWJhc2VbZGVuc2VdW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGlzdC1pdGVtW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGluZVtfbmdjb250ZW50LSVDT01QJV06bnRoLWNoaWxkKG4rMil7Zm9udC1zaXplOjEycHh9Lm1hdC1saXN0LWJhc2VbZGVuc2VdW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGlzdC1vcHRpb25bX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToxMnB4fS5tYXQtbGlzdC1iYXNlW2RlbnNlXVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpc3Qtb3B0aW9uW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGluZVtfbmdjb250ZW50LSVDT01QJV17d2hpdGUtc3BhY2U6bm93cmFwO292ZXJmbG93OmhpZGRlbjt0ZXh0LW92ZXJmbG93OmVsbGlwc2lzO2Rpc3BsYXk6YmxvY2s7Ym94LXNpemluZzpib3JkZXItYm94fS5tYXQtbGlzdC1iYXNlW2RlbnNlXVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpc3Qtb3B0aW9uW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGluZVtfbmdjb250ZW50LSVDT01QJV06bnRoLWNoaWxkKG4rMil7Zm9udC1zaXplOjEycHh9Lm1hdC1saXN0LWJhc2VbZGVuc2VdW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtc3ViaGVhZGVyW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7Zm9udC1zaXplOjEycHg7Zm9udC13ZWlnaHQ6NTAwfS5tYXQtb3B0aW9uW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7Zm9udC1zaXplOjE2cHh9Lm1hdC1vcHRncm91cC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17Zm9udDo1MDAgMTRweC8yNHB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtsZXR0ZXItc3BhY2luZzpub3JtYWx9Lm1hdC1zaW1wbGUtc25hY2tiYXJbX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtmb250LXNpemU6MTRweH0ubWF0LXNpbXBsZS1zbmFja2Jhci1hY3Rpb25bX25nY29udGVudC0lQ09NUCVde2xpbmUtaGVpZ2h0OjE7Zm9udC1mYW1pbHk6aW5oZXJpdDtmb250LXNpemU6aW5oZXJpdDtmb250LXdlaWdodDo1MDB9Lm1hdC10cmVlW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWZ9Lm1hdC10cmVlLW5vZGVbX25nY29udGVudC0lQ09NUCVdLCAubWF0LW5lc3RlZC10cmVlLW5vZGVbX25nY29udGVudC0lQ09NUCVde2ZvbnQtd2VpZ2h0OjQwMDtmb250LXNpemU6MTRweH0ubWF0LXJpcHBsZVtfbmdjb250ZW50LSVDT01QJV17b3ZlcmZsb3c6aGlkZGVuO3Bvc2l0aW9uOnJlbGF0aXZlfS5tYXQtcmlwcGxlW19uZ2NvbnRlbnQtJUNPTVAlXTpub3QoOmVtcHR5KXt0cmFuc2Zvcm06dHJhbnNsYXRlWigwKX0ubWF0LXJpcHBsZS5tYXQtcmlwcGxlLXVuYm91bmRlZFtfbmdjb250ZW50LSVDT01QJV17b3ZlcmZsb3c6dmlzaWJsZX0ubWF0LXJpcHBsZS1lbGVtZW50W19uZ2NvbnRlbnQtJUNPTVAlXXtwb3NpdGlvbjphYnNvbHV0ZTtib3JkZXItcmFkaXVzOjUwJTtwb2ludGVyLWV2ZW50czpub25lO3RyYW5zaXRpb246b3BhY2l0eSx0cmFuc2Zvcm0gMG1zIGN1YmljLWJlemllcigwLCAwLCAwLjIsIDEpO3RyYW5zZm9ybTpzY2FsZSgwKX0uY2RrLWhpZ2gtY29udHJhc3QtYWN0aXZlW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtcmlwcGxlLWVsZW1lbnRbX25nY29udGVudC0lQ09NUCVde2Rpc3BsYXk6bm9uZX0uY2RrLXZpc3VhbGx5LWhpZGRlbltfbmdjb250ZW50LSVDT01QJV17Ym9yZGVyOjA7Y2xpcDpyZWN0KDAgMCAwIDApO2hlaWdodDoxcHg7bWFyZ2luOi0xcHg7b3ZlcmZsb3c6aGlkZGVuO3BhZGRpbmc6MDtwb3NpdGlvbjphYnNvbHV0ZTt3aWR0aDoxcHg7b3V0bGluZTowOy13ZWJraXQtYXBwZWFyYW5jZTpub25lOy1tb3otYXBwZWFyYW5jZTpub25lfS5jZGstb3ZlcmxheS1jb250YWluZXJbX25nY29udGVudC0lQ09NUCVdLCAuY2RrLWdsb2JhbC1vdmVybGF5LXdyYXBwZXJbX25nY29udGVudC0lQ09NUCVde3BvaW50ZXItZXZlbnRzOm5vbmU7dG9wOjA7bGVmdDowO2hlaWdodDoxMDAlO3dpZHRoOjEwMCV9LmNkay1vdmVybGF5LWNvbnRhaW5lcltfbmdjb250ZW50LSVDT01QJV17cG9zaXRpb246Zml4ZWQ7ei1pbmRleDoxMDAwfS5jZGstb3ZlcmxheS1jb250YWluZXJbX25nY29udGVudC0lQ09NUCVdOmVtcHR5e2Rpc3BsYXk6bm9uZX0uY2RrLWdsb2JhbC1vdmVybGF5LXdyYXBwZXJbX25nY29udGVudC0lQ09NUCVde2Rpc3BsYXk6ZmxleDtwb3NpdGlvbjphYnNvbHV0ZTt6LWluZGV4OjEwMDB9LmNkay1vdmVybGF5LXBhbmVbX25nY29udGVudC0lQ09NUCVde3Bvc2l0aW9uOmFic29sdXRlO3BvaW50ZXItZXZlbnRzOmF1dG87Ym94LXNpemluZzpib3JkZXItYm94O3otaW5kZXg6MTAwMDtkaXNwbGF5OmZsZXg7bWF4LXdpZHRoOjEwMCU7bWF4LWhlaWdodDoxMDAlfS5jZGstb3ZlcmxheS1iYWNrZHJvcFtfbmdjb250ZW50LSVDT01QJV17cG9zaXRpb246YWJzb2x1dGU7dG9wOjA7Ym90dG9tOjA7bGVmdDowO3JpZ2h0OjA7ei1pbmRleDoxMDAwO3BvaW50ZXItZXZlbnRzOmF1dG87LXdlYmtpdC10YXAtaGlnaGxpZ2h0LWNvbG9yOnRyYW5zcGFyZW50O3RyYW5zaXRpb246b3BhY2l0eSA0MDBtcyBjdWJpYy1iZXppZXIoMC4yNSwgMC44LCAwLjI1LCAxKTtvcGFjaXR5OjB9LmNkay1vdmVybGF5LWJhY2tkcm9wLmNkay1vdmVybGF5LWJhY2tkcm9wLXNob3dpbmdbX25nY29udGVudC0lQ09NUCVde29wYWNpdHk6MX1AbWVkaWEgc2NyZWVuIGFuZCAoLW1zLWhpZ2gtY29udHJhc3Q6IGFjdGl2ZSl7LmNkay1vdmVybGF5LWJhY2tkcm9wLmNkay1vdmVybGF5LWJhY2tkcm9wLXNob3dpbmdbX25nY29udGVudC0lQ09NUCVde29wYWNpdHk6LjZ9fS5jZGstb3ZlcmxheS1kYXJrLWJhY2tkcm9wW19uZ2NvbnRlbnQtJUNPTVAlXXtiYWNrZ3JvdW5kOnJnYmEoMCwwLDAsLjMyKX0uY2RrLW92ZXJsYXktdHJhbnNwYXJlbnQtYmFja2Ryb3BbX25nY29udGVudC0lQ09NUCVdLCAuY2RrLW92ZXJsYXktdHJhbnNwYXJlbnQtYmFja2Ryb3AuY2RrLW92ZXJsYXktYmFja2Ryb3Atc2hvd2luZ1tfbmdjb250ZW50LSVDT01QJV17b3BhY2l0eTowfS5jZGstb3ZlcmxheS1jb25uZWN0ZWQtcG9zaXRpb24tYm91bmRpbmctYm94W19uZ2NvbnRlbnQtJUNPTVAlXXtwb3NpdGlvbjphYnNvbHV0ZTt6LWluZGV4OjEwMDA7ZGlzcGxheTpmbGV4O2ZsZXgtZGlyZWN0aW9uOmNvbHVtbjttaW4td2lkdGg6MXB4O21pbi1oZWlnaHQ6MXB4fS5jZGstZ2xvYmFsLXNjcm9sbGJsb2NrW19uZ2NvbnRlbnQtJUNPTVAlXXtwb3NpdGlvbjpmaXhlZDt3aWR0aDoxMDAlO292ZXJmbG93LXk6c2Nyb2xsfUBrZXlmcmFtZXMgY2RrLXRleHQtZmllbGQtYXV0b2ZpbGwtc3RhcnR7fUBrZXlmcmFtZXMgY2RrLXRleHQtZmllbGQtYXV0b2ZpbGwtZW5ke30uY2RrLXRleHQtZmllbGQtYXV0b2ZpbGwtbW9uaXRvcmVkW19uZ2NvbnRlbnQtJUNPTVAlXTotd2Via2l0LWF1dG9maWxse2FuaW1hdGlvbjpjZGstdGV4dC1maWVsZC1hdXRvZmlsbC1zdGFydCAwcyAxbXN9LmNkay10ZXh0LWZpZWxkLWF1dG9maWxsLW1vbml0b3JlZFtfbmdjb250ZW50LSVDT01QJV06bm90KDotd2Via2l0LWF1dG9maWxsKXthbmltYXRpb246Y2RrLXRleHQtZmllbGQtYXV0b2ZpbGwtZW5kIDBzIDFtc310ZXh0YXJlYS5jZGstdGV4dGFyZWEtYXV0b3NpemVbX25nY29udGVudC0lQ09NUCVde3Jlc2l6ZTpub25lfXRleHRhcmVhLmNkay10ZXh0YXJlYS1hdXRvc2l6ZS1tZWFzdXJpbmdbX25nY29udGVudC0lQ09NUCVde3BhZGRpbmc6MnB4IDAgIWltcG9ydGFudDtib3gtc2l6aW5nOmNvbnRlbnQtYm94ICFpbXBvcnRhbnQ7aGVpZ2h0OmF1dG8gIWltcG9ydGFudDtvdmVyZmxvdzpoaWRkZW4gIWltcG9ydGFudH10ZXh0YXJlYS5jZGstdGV4dGFyZWEtYXV0b3NpemUtbWVhc3VyaW5nLWZpcmVmb3hbX25nY29udGVudC0lQ09NUCVde3BhZGRpbmc6MnB4IDAgIWltcG9ydGFudDtib3gtc2l6aW5nOmNvbnRlbnQtYm94ICFpbXBvcnRhbnQ7aGVpZ2h0OjAgIWltcG9ydGFudH0ubWF0LWZvY3VzLWluZGljYXRvcltfbmdjb250ZW50LSVDT01QJV17cG9zaXRpb246cmVsYXRpdmV9Lm1hdC1tZGMtZm9jdXMtaW5kaWNhdG9yW19uZ2NvbnRlbnQtJUNPTVAlXXtwb3NpdGlvbjpyZWxhdGl2ZX0ubWF0LXJpcHBsZS1lbGVtZW50W19uZ2NvbnRlbnQtJUNPTVAlXXtiYWNrZ3JvdW5kLWNvbG9yOnJnYmEoMCwwLDAsLjEpfS5tYXQtb3B0aW9uW19uZ2NvbnRlbnQtJUNPTVAlXXtjb2xvcjojMjEyMTIxfS5tYXQtb3B0aW9uW19uZ2NvbnRlbnQtJUNPTVAlXTpob3Zlcjpub3QoLm1hdC1vcHRpb24tZGlzYWJsZWQpLCAubWF0LW9wdGlvbltfbmdjb250ZW50LSVDT01QJV06Zm9jdXM6bm90KC5tYXQtb3B0aW9uLWRpc2FibGVkKXtiYWNrZ3JvdW5kOnJnYmEoMCwwLDAsLjA0KX0ubWF0LW9wdGlvbi5tYXQtc2VsZWN0ZWRbX25nY29udGVudC0lQ09NUCVdOm5vdCgubWF0LW9wdGlvbi1tdWx0aXBsZSk6bm90KC5tYXQtb3B0aW9uLWRpc2FibGVkKXtiYWNrZ3JvdW5kOnJnYmEoMCwwLDAsLjA0KX0ubWF0LW9wdGlvbi5tYXQtYWN0aXZlW19uZ2NvbnRlbnQtJUNPTVAlXXtiYWNrZ3JvdW5kOnJnYmEoMCwwLDAsLjA0KTtjb2xvcjojMjEyMTIxfS5tYXQtb3B0aW9uLm1hdC1vcHRpb24tZGlzYWJsZWRbX25nY29udGVudC0lQ09NUCVde2NvbG9yOnJnYmEoMCwwLDAsLjM4KX0ubWF0LXByaW1hcnlbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1vcHRpb24ubWF0LXNlbGVjdGVkW19uZ2NvbnRlbnQtJUNPTVAlXTpub3QoLm1hdC1vcHRpb24tZGlzYWJsZWQpe2NvbG9yOiNmNTdjMDB9Lm1hdC1hY2NlbnRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1vcHRpb24ubWF0LXNlbGVjdGVkW19uZ2NvbnRlbnQtJUNPTVAlXTpub3QoLm1hdC1vcHRpb24tZGlzYWJsZWQpe2NvbG9yOiNmZjk4MDB9Lm1hdC13YXJuW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtb3B0aW9uLm1hdC1zZWxlY3RlZFtfbmdjb250ZW50LSVDT01QJV06bm90KC5tYXQtb3B0aW9uLWRpc2FibGVkKXtjb2xvcjojZjQ0MzM2fS5tYXQtb3B0Z3JvdXAtbGFiZWxbX25nY29udGVudC0lQ09NUCVde2NvbG9yOiM2MTYxNjF9Lm1hdC1vcHRncm91cC1kaXNhYmxlZFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LW9wdGdyb3VwLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXtjb2xvcjpyZ2JhKDAsMCwwLC4zOCl9Lm1hdC1wc2V1ZG8tY2hlY2tib3hbX25nY29udGVudC0lQ09NUCVde2NvbG9yOiM2MTYxNjF9Lm1hdC1wc2V1ZG8tY2hlY2tib3hbX25nY29udGVudC0lQ09NUCVdOjphZnRlcntjb2xvcjojZmFmYWZhfS5tYXQtcHNldWRvLWNoZWNrYm94LWRpc2FibGVkW19uZ2NvbnRlbnQtJUNPTVAlXXtjb2xvcjojYjBiMGIwfS5tYXQtcHJpbWFyeVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXBzZXVkby1jaGVja2JveC1jaGVja2VkW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1wcmltYXJ5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtcHNldWRvLWNoZWNrYm94LWluZGV0ZXJtaW5hdGVbX25nY29udGVudC0lQ09NUCVde2JhY2tncm91bmQ6I2Y1N2MwMH0ubWF0LXBzZXVkby1jaGVja2JveC1jaGVja2VkW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1wc2V1ZG8tY2hlY2tib3gtaW5kZXRlcm1pbmF0ZVtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtYWNjZW50W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtcHNldWRvLWNoZWNrYm94LWNoZWNrZWRbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWFjY2VudFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXBzZXVkby1jaGVja2JveC1pbmRldGVybWluYXRlW19uZ2NvbnRlbnQtJUNPTVAlXXtiYWNrZ3JvdW5kOiNmZjk4MDB9Lm1hdC13YXJuW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtcHNldWRvLWNoZWNrYm94LWNoZWNrZWRbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXdhcm5bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1wc2V1ZG8tY2hlY2tib3gtaW5kZXRlcm1pbmF0ZVtfbmdjb250ZW50LSVDT01QJV17YmFja2dyb3VuZDojZjQ0MzM2fS5tYXQtcHNldWRvLWNoZWNrYm94LWNoZWNrZWQubWF0LXBzZXVkby1jaGVja2JveC1kaXNhYmxlZFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtcHNldWRvLWNoZWNrYm94LWluZGV0ZXJtaW5hdGUubWF0LXBzZXVkby1jaGVja2JveC1kaXNhYmxlZFtfbmdjb250ZW50LSVDT01QJV17YmFja2dyb3VuZDojYjBiMGIwfS5tYXQtYXBwLWJhY2tncm91bmRbX25nY29udGVudC0lQ09NUCVde2JhY2tncm91bmQtY29sb3I6I2ZhZmFmYTtjb2xvcjojMjEyMTIxfS5tYXQtZWxldmF0aW9uLXowW19uZ2NvbnRlbnQtJUNPTVAlXXtib3gtc2hhZG93OjBweCAwcHggMHB4IDBweCByZ2JhKDAsIDAsIDAsIDAuMiksMHB4IDBweCAwcHggMHB4IHJnYmEoMCwgMCwgMCwgMC4xNCksMHB4IDBweCAwcHggMHB4IHJnYmEoMCwgMCwgMCwgMC4xMil9Lm1hdC1lbGV2YXRpb24tejFbX25nY29udGVudC0lQ09NUCVde2JveC1zaGFkb3c6MHB4IDJweCAxcHggLTFweCByZ2JhKDAsIDAsIDAsIDAuMiksMHB4IDFweCAxcHggMHB4IHJnYmEoMCwgMCwgMCwgMC4xNCksMHB4IDFweCAzcHggMHB4IHJnYmEoMCwgMCwgMCwgMC4xMil9Lm1hdC1lbGV2YXRpb24tejJbX25nY29udGVudC0lQ09NUCVde2JveC1zaGFkb3c6MHB4IDNweCAxcHggLTJweCByZ2JhKDAsIDAsIDAsIDAuMiksMHB4IDJweCAycHggMHB4IHJnYmEoMCwgMCwgMCwgMC4xNCksMHB4IDFweCA1cHggMHB4IHJnYmEoMCwgMCwgMCwgMC4xMil9Lm1hdC1lbGV2YXRpb24tejNbX25nY29udGVudC0lQ09NUCVde2JveC1zaGFkb3c6MHB4IDNweCAzcHggLTJweCByZ2JhKDAsIDAsIDAsIDAuMiksMHB4IDNweCA0cHggMHB4IHJnYmEoMCwgMCwgMCwgMC4xNCksMHB4IDFweCA4cHggMHB4IHJnYmEoMCwgMCwgMCwgMC4xMil9Lm1hdC1lbGV2YXRpb24tejRbX25nY29udGVudC0lQ09NUCVde2JveC1zaGFkb3c6MHB4IDJweCA0cHggLTFweCByZ2JhKDAsIDAsIDAsIDAuMiksMHB4IDRweCA1cHggMHB4IHJnYmEoMCwgMCwgMCwgMC4xNCksMHB4IDFweCAxMHB4IDBweCByZ2JhKDAsIDAsIDAsIDAuMTIpfS5tYXQtZWxldmF0aW9uLXo1W19uZ2NvbnRlbnQtJUNPTVAlXXtib3gtc2hhZG93OjBweCAzcHggNXB4IC0xcHggcmdiYSgwLCAwLCAwLCAwLjIpLDBweCA1cHggOHB4IDBweCByZ2JhKDAsIDAsIDAsIDAuMTQpLDBweCAxcHggMTRweCAwcHggcmdiYSgwLCAwLCAwLCAwLjEyKX0ubWF0LWVsZXZhdGlvbi16Nltfbmdjb250ZW50LSVDT01QJV17Ym94LXNoYWRvdzowcHggM3B4IDVweCAtMXB4IHJnYmEoMCwgMCwgMCwgMC4yKSwwcHggNnB4IDEwcHggMHB4IHJnYmEoMCwgMCwgMCwgMC4xNCksMHB4IDFweCAxOHB4IDBweCByZ2JhKDAsIDAsIDAsIDAuMTIpfS5tYXQtZWxldmF0aW9uLXo3W19uZ2NvbnRlbnQtJUNPTVAlXXtib3gtc2hhZG93OjBweCA0cHggNXB4IC0ycHggcmdiYSgwLCAwLCAwLCAwLjIpLDBweCA3cHggMTBweCAxcHggcmdiYSgwLCAwLCAwLCAwLjE0KSwwcHggMnB4IDE2cHggMXB4IHJnYmEoMCwgMCwgMCwgMC4xMil9Lm1hdC1lbGV2YXRpb24tejhbX25nY29udGVudC0lQ09NUCVde2JveC1zaGFkb3c6MHB4IDVweCA1cHggLTNweCByZ2JhKDAsIDAsIDAsIDAuMiksMHB4IDhweCAxMHB4IDFweCByZ2JhKDAsIDAsIDAsIDAuMTQpLDBweCAzcHggMTRweCAycHggcmdiYSgwLCAwLCAwLCAwLjEyKX0ubWF0LWVsZXZhdGlvbi16OVtfbmdjb250ZW50LSVDT01QJV17Ym94LXNoYWRvdzowcHggNXB4IDZweCAtM3B4IHJnYmEoMCwgMCwgMCwgMC4yKSwwcHggOXB4IDEycHggMXB4IHJnYmEoMCwgMCwgMCwgMC4xNCksMHB4IDNweCAxNnB4IDJweCByZ2JhKDAsIDAsIDAsIDAuMTIpfS5tYXQtZWxldmF0aW9uLXoxMFtfbmdjb250ZW50LSVDT01QJV17Ym94LXNoYWRvdzowcHggNnB4IDZweCAtM3B4IHJnYmEoMCwgMCwgMCwgMC4yKSwwcHggMTBweCAxNHB4IDFweCByZ2JhKDAsIDAsIDAsIDAuMTQpLDBweCA0cHggMThweCAzcHggcmdiYSgwLCAwLCAwLCAwLjEyKX0ubWF0LWVsZXZhdGlvbi16MTFbX25nY29udGVudC0lQ09NUCVde2JveC1zaGFkb3c6MHB4IDZweCA3cHggLTRweCByZ2JhKDAsIDAsIDAsIDAuMiksMHB4IDExcHggMTVweCAxcHggcmdiYSgwLCAwLCAwLCAwLjE0KSwwcHggNHB4IDIwcHggM3B4IHJnYmEoMCwgMCwgMCwgMC4xMil9Lm1hdC1lbGV2YXRpb24tejEyW19uZ2NvbnRlbnQtJUNPTVAlXXtib3gtc2hhZG93OjBweCA3cHggOHB4IC00cHggcmdiYSgwLCAwLCAwLCAwLjIpLDBweCAxMnB4IDE3cHggMnB4IHJnYmEoMCwgMCwgMCwgMC4xNCksMHB4IDVweCAyMnB4IDRweCByZ2JhKDAsIDAsIDAsIDAuMTIpfS5tYXQtZWxldmF0aW9uLXoxM1tfbmdjb250ZW50LSVDT01QJV17Ym94LXNoYWRvdzowcHggN3B4IDhweCAtNHB4IHJnYmEoMCwgMCwgMCwgMC4yKSwwcHggMTNweCAxOXB4IDJweCByZ2JhKDAsIDAsIDAsIDAuMTQpLDBweCA1cHggMjRweCA0cHggcmdiYSgwLCAwLCAwLCAwLjEyKX0ubWF0LWVsZXZhdGlvbi16MTRbX25nY29udGVudC0lQ09NUCVde2JveC1zaGFkb3c6MHB4IDdweCA5cHggLTRweCByZ2JhKDAsIDAsIDAsIDAuMiksMHB4IDE0cHggMjFweCAycHggcmdiYSgwLCAwLCAwLCAwLjE0KSwwcHggNXB4IDI2cHggNHB4IHJnYmEoMCwgMCwgMCwgMC4xMil9Lm1hdC1lbGV2YXRpb24tejE1W19uZ2NvbnRlbnQtJUNPTVAlXXtib3gtc2hhZG93OjBweCA4cHggOXB4IC01cHggcmdiYSgwLCAwLCAwLCAwLjIpLDBweCAxNXB4IDIycHggMnB4IHJnYmEoMCwgMCwgMCwgMC4xNCksMHB4IDZweCAyOHB4IDVweCByZ2JhKDAsIDAsIDAsIDAuMTIpfS5tYXQtZWxldmF0aW9uLXoxNltfbmdjb250ZW50LSVDT01QJV17Ym94LXNoYWRvdzowcHggOHB4IDEwcHggLTVweCByZ2JhKDAsIDAsIDAsIDAuMiksMHB4IDE2cHggMjRweCAycHggcmdiYSgwLCAwLCAwLCAwLjE0KSwwcHggNnB4IDMwcHggNXB4IHJnYmEoMCwgMCwgMCwgMC4xMil9Lm1hdC1lbGV2YXRpb24tejE3W19uZ2NvbnRlbnQtJUNPTVAlXXtib3gtc2hhZG93OjBweCA4cHggMTFweCAtNXB4IHJnYmEoMCwgMCwgMCwgMC4yKSwwcHggMTdweCAyNnB4IDJweCByZ2JhKDAsIDAsIDAsIDAuMTQpLDBweCA2cHggMzJweCA1cHggcmdiYSgwLCAwLCAwLCAwLjEyKX0ubWF0LWVsZXZhdGlvbi16MThbX25nY29udGVudC0lQ09NUCVde2JveC1zaGFkb3c6MHB4IDlweCAxMXB4IC01cHggcmdiYSgwLCAwLCAwLCAwLjIpLDBweCAxOHB4IDI4cHggMnB4IHJnYmEoMCwgMCwgMCwgMC4xNCksMHB4IDdweCAzNHB4IDZweCByZ2JhKDAsIDAsIDAsIDAuMTIpfS5tYXQtZWxldmF0aW9uLXoxOVtfbmdjb250ZW50LSVDT01QJV17Ym94LXNoYWRvdzowcHggOXB4IDEycHggLTZweCByZ2JhKDAsIDAsIDAsIDAuMiksMHB4IDE5cHggMjlweCAycHggcmdiYSgwLCAwLCAwLCAwLjE0KSwwcHggN3B4IDM2cHggNnB4IHJnYmEoMCwgMCwgMCwgMC4xMil9Lm1hdC1lbGV2YXRpb24tejIwW19uZ2NvbnRlbnQtJUNPTVAlXXtib3gtc2hhZG93OjBweCAxMHB4IDEzcHggLTZweCByZ2JhKDAsIDAsIDAsIDAuMiksMHB4IDIwcHggMzFweCAzcHggcmdiYSgwLCAwLCAwLCAwLjE0KSwwcHggOHB4IDM4cHggN3B4IHJnYmEoMCwgMCwgMCwgMC4xMil9Lm1hdC1lbGV2YXRpb24tejIxW19uZ2NvbnRlbnQtJUNPTVAlXXtib3gtc2hhZG93OjBweCAxMHB4IDEzcHggLTZweCByZ2JhKDAsIDAsIDAsIDAuMiksMHB4IDIxcHggMzNweCAzcHggcmdiYSgwLCAwLCAwLCAwLjE0KSwwcHggOHB4IDQwcHggN3B4IHJnYmEoMCwgMCwgMCwgMC4xMil9Lm1hdC1lbGV2YXRpb24tejIyW19uZ2NvbnRlbnQtJUNPTVAlXXtib3gtc2hhZG93OjBweCAxMHB4IDE0cHggLTZweCByZ2JhKDAsIDAsIDAsIDAuMiksMHB4IDIycHggMzVweCAzcHggcmdiYSgwLCAwLCAwLCAwLjE0KSwwcHggOHB4IDQycHggN3B4IHJnYmEoMCwgMCwgMCwgMC4xMil9Lm1hdC1lbGV2YXRpb24tejIzW19uZ2NvbnRlbnQtJUNPTVAlXXtib3gtc2hhZG93OjBweCAxMXB4IDE0cHggLTdweCByZ2JhKDAsIDAsIDAsIDAuMiksMHB4IDIzcHggMzZweCAzcHggcmdiYSgwLCAwLCAwLCAwLjE0KSwwcHggOXB4IDQ0cHggOHB4IHJnYmEoMCwgMCwgMCwgMC4xMil9Lm1hdC1lbGV2YXRpb24tejI0W19uZ2NvbnRlbnQtJUNPTVAlXXtib3gtc2hhZG93OjBweCAxMXB4IDE1cHggLTdweCByZ2JhKDAsIDAsIDAsIDAuMiksMHB4IDI0cHggMzhweCAzcHggcmdiYSgwLCAwLCAwLCAwLjE0KSwwcHggOXB4IDQ2cHggOHB4IHJnYmEoMCwgMCwgMCwgMC4xMil9Lm1hdC10aGVtZS1sb2FkZWQtbWFya2VyW19uZ2NvbnRlbnQtJUNPTVAlXXtkaXNwbGF5Om5vbmV9Lm1hdC1hdXRvY29tcGxldGUtcGFuZWxbX25nY29udGVudC0lQ09NUCVde2JhY2tncm91bmQ6I2ZmZjtjb2xvcjojMjEyMTIxfS5tYXQtYXV0b2NvbXBsZXRlLXBhbmVsW19uZ2NvbnRlbnQtJUNPTVAlXTpub3QoW2NsYXNzKj1tYXQtZWxldmF0aW9uLXpdKXtib3gtc2hhZG93OjBweCAycHggNHB4IC0xcHggcmdiYSgwLCAwLCAwLCAwLjIpLDBweCA0cHggNXB4IDBweCByZ2JhKDAsIDAsIDAsIDAuMTQpLDBweCAxcHggMTBweCAwcHggcmdiYSgwLCAwLCAwLCAwLjEyKX0ubWF0LWF1dG9jb21wbGV0ZS1wYW5lbFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LW9wdGlvbi5tYXQtc2VsZWN0ZWRbX25nY29udGVudC0lQ09NUCVdOm5vdCgubWF0LWFjdGl2ZSk6bm90KDpob3Zlcil7YmFja2dyb3VuZDojZmZmfS5tYXQtYXV0b2NvbXBsZXRlLXBhbmVsW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtb3B0aW9uLm1hdC1zZWxlY3RlZFtfbmdjb250ZW50LSVDT01QJV06bm90KC5tYXQtYWN0aXZlKTpub3QoOmhvdmVyKTpub3QoLm1hdC1vcHRpb24tZGlzYWJsZWQpe2NvbG9yOiMyMTIxMjF9Lm1hdC1iYWRnZS1jb250ZW50W19uZ2NvbnRlbnQtJUNPTVAlXXtjb2xvcjojZmZmO2JhY2tncm91bmQ6I2Y1N2MwMH0uY2RrLWhpZ2gtY29udHJhc3QtYWN0aXZlW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtYmFkZ2UtY29udGVudFtfbmdjb250ZW50LSVDT01QJV17b3V0bGluZTpzb2xpZCAxcHg7Ym9yZGVyLXJhZGl1czowfS5tYXQtYmFkZ2UtYWNjZW50W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtYmFkZ2UtY29udGVudFtfbmdjb250ZW50LSVDT01QJV17YmFja2dyb3VuZDojZmY5ODAwO2NvbG9yOiNmZmZ9Lm1hdC1iYWRnZS13YXJuW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtYmFkZ2UtY29udGVudFtfbmdjb250ZW50LSVDT01QJV17Y29sb3I6I2ZmZjtiYWNrZ3JvdW5kOiNmNDQzMzZ9Lm1hdC1iYWRnZVtfbmdjb250ZW50LSVDT01QJV17cG9zaXRpb246cmVsYXRpdmV9Lm1hdC1iYWRnZS1oaWRkZW5bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1iYWRnZS1jb250ZW50W19uZ2NvbnRlbnQtJUNPTVAlXXtkaXNwbGF5Om5vbmV9Lm1hdC1iYWRnZS1kaXNhYmxlZFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWJhZGdlLWNvbnRlbnRbX25nY29udGVudC0lQ09NUCVde2JhY2tncm91bmQ6I2I5YjliOTtjb2xvcjojNzU3NTc1fS5tYXQtYmFkZ2UtY29udGVudFtfbmdjb250ZW50LSVDT01QJV17cG9zaXRpb246YWJzb2x1dGU7dGV4dC1hbGlnbjpjZW50ZXI7ZGlzcGxheTppbmxpbmUtYmxvY2s7Ym9yZGVyLXJhZGl1czo1MCU7dHJhbnNpdGlvbjp0cmFuc2Zvcm0gMjAwbXMgZWFzZS1pbi1vdXQ7dHJhbnNmb3JtOnNjYWxlKDAuNik7b3ZlcmZsb3c6aGlkZGVuO3doaXRlLXNwYWNlOm5vd3JhcDt0ZXh0LW92ZXJmbG93OmVsbGlwc2lzO3BvaW50ZXItZXZlbnRzOm5vbmV9Lm5nLWFuaW1hdGUtZGlzYWJsZWRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1iYWRnZS1jb250ZW50W19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1iYWRnZS1jb250ZW50Ll9tYXQtYW5pbWF0aW9uLW5vb3BhYmxlW19uZ2NvbnRlbnQtJUNPTVAlXXt0cmFuc2l0aW9uOm5vbmV9Lm1hdC1iYWRnZS1jb250ZW50Lm1hdC1iYWRnZS1hY3RpdmVbX25nY29udGVudC0lQ09NUCVde3RyYW5zZm9ybTpub25lfS5tYXQtYmFkZ2Utc21hbGxbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1iYWRnZS1jb250ZW50W19uZ2NvbnRlbnQtJUNPTVAlXXt3aWR0aDoxNnB4O2hlaWdodDoxNnB4O2xpbmUtaGVpZ2h0OjE2cHh9Lm1hdC1iYWRnZS1zbWFsbC5tYXQtYmFkZ2UtYWJvdmVbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1iYWRnZS1jb250ZW50W19uZ2NvbnRlbnQtJUNPTVAlXXt0b3A6LThweH0ubWF0LWJhZGdlLXNtYWxsLm1hdC1iYWRnZS1iZWxvd1tfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWJhZGdlLWNvbnRlbnRbX25nY29udGVudC0lQ09NUCVde2JvdHRvbTotOHB4fS5tYXQtYmFkZ2Utc21hbGwubWF0LWJhZGdlLWJlZm9yZVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWJhZGdlLWNvbnRlbnRbX25nY29udGVudC0lQ09NUCVde2xlZnQ6LTE2cHh9W2Rpcj1ydGxdW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtYmFkZ2Utc21hbGwubWF0LWJhZGdlLWJlZm9yZVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWJhZGdlLWNvbnRlbnRbX25nY29udGVudC0lQ09NUCVde2xlZnQ6YXV0bztyaWdodDotMTZweH0ubWF0LWJhZGdlLXNtYWxsLm1hdC1iYWRnZS1hZnRlcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWJhZGdlLWNvbnRlbnRbX25nY29udGVudC0lQ09NUCVde3JpZ2h0Oi0xNnB4fVtkaXI9cnRsXVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWJhZGdlLXNtYWxsLm1hdC1iYWRnZS1hZnRlcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWJhZGdlLWNvbnRlbnRbX25nY29udGVudC0lQ09NUCVde3JpZ2h0OmF1dG87bGVmdDotMTZweH0ubWF0LWJhZGdlLXNtYWxsLm1hdC1iYWRnZS1vdmVybGFwLm1hdC1iYWRnZS1iZWZvcmVbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1iYWRnZS1jb250ZW50W19uZ2NvbnRlbnQtJUNPTVAlXXtsZWZ0Oi04cHh9W2Rpcj1ydGxdW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtYmFkZ2Utc21hbGwubWF0LWJhZGdlLW92ZXJsYXAubWF0LWJhZGdlLWJlZm9yZVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWJhZGdlLWNvbnRlbnRbX25nY29udGVudC0lQ09NUCVde2xlZnQ6YXV0bztyaWdodDotOHB4fS5tYXQtYmFkZ2Utc21hbGwubWF0LWJhZGdlLW92ZXJsYXAubWF0LWJhZGdlLWFmdGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtYmFkZ2UtY29udGVudFtfbmdjb250ZW50LSVDT01QJV17cmlnaHQ6LThweH1bZGlyPXJ0bF1bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1iYWRnZS1zbWFsbC5tYXQtYmFkZ2Utb3ZlcmxhcC5tYXQtYmFkZ2UtYWZ0ZXJbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1iYWRnZS1jb250ZW50W19uZ2NvbnRlbnQtJUNPTVAlXXtyaWdodDphdXRvO2xlZnQ6LThweH0ubWF0LWJhZGdlLW1lZGl1bVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWJhZGdlLWNvbnRlbnRbX25nY29udGVudC0lQ09NUCVde3dpZHRoOjIycHg7aGVpZ2h0OjIycHg7bGluZS1oZWlnaHQ6MjJweH0ubWF0LWJhZGdlLW1lZGl1bS5tYXQtYmFkZ2UtYWJvdmVbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1iYWRnZS1jb250ZW50W19uZ2NvbnRlbnQtJUNPTVAlXXt0b3A6LTExcHh9Lm1hdC1iYWRnZS1tZWRpdW0ubWF0LWJhZGdlLWJlbG93W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtYmFkZ2UtY29udGVudFtfbmdjb250ZW50LSVDT01QJV17Ym90dG9tOi0xMXB4fS5tYXQtYmFkZ2UtbWVkaXVtLm1hdC1iYWRnZS1iZWZvcmVbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1iYWRnZS1jb250ZW50W19uZ2NvbnRlbnQtJUNPTVAlXXtsZWZ0Oi0yMnB4fVtkaXI9cnRsXVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWJhZGdlLW1lZGl1bS5tYXQtYmFkZ2UtYmVmb3JlW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtYmFkZ2UtY29udGVudFtfbmdjb250ZW50LSVDT01QJV17bGVmdDphdXRvO3JpZ2h0Oi0yMnB4fS5tYXQtYmFkZ2UtbWVkaXVtLm1hdC1iYWRnZS1hZnRlcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWJhZGdlLWNvbnRlbnRbX25nY29udGVudC0lQ09NUCVde3JpZ2h0Oi0yMnB4fVtkaXI9cnRsXVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWJhZGdlLW1lZGl1bS5tYXQtYmFkZ2UtYWZ0ZXJbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1iYWRnZS1jb250ZW50W19uZ2NvbnRlbnQtJUNPTVAlXXtyaWdodDphdXRvO2xlZnQ6LTIycHh9Lm1hdC1iYWRnZS1tZWRpdW0ubWF0LWJhZGdlLW92ZXJsYXAubWF0LWJhZGdlLWJlZm9yZVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWJhZGdlLWNvbnRlbnRbX25nY29udGVudC0lQ09NUCVde2xlZnQ6LTExcHh9W2Rpcj1ydGxdW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtYmFkZ2UtbWVkaXVtLm1hdC1iYWRnZS1vdmVybGFwLm1hdC1iYWRnZS1iZWZvcmVbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1iYWRnZS1jb250ZW50W19uZ2NvbnRlbnQtJUNPTVAlXXtsZWZ0OmF1dG87cmlnaHQ6LTExcHh9Lm1hdC1iYWRnZS1tZWRpdW0ubWF0LWJhZGdlLW92ZXJsYXAubWF0LWJhZGdlLWFmdGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtYmFkZ2UtY29udGVudFtfbmdjb250ZW50LSVDT01QJV17cmlnaHQ6LTExcHh9W2Rpcj1ydGxdW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtYmFkZ2UtbWVkaXVtLm1hdC1iYWRnZS1vdmVybGFwLm1hdC1iYWRnZS1hZnRlcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWJhZGdlLWNvbnRlbnRbX25nY29udGVudC0lQ09NUCVde3JpZ2h0OmF1dG87bGVmdDotMTFweH0ubWF0LWJhZGdlLWxhcmdlW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtYmFkZ2UtY29udGVudFtfbmdjb250ZW50LSVDT01QJV17d2lkdGg6MjhweDtoZWlnaHQ6MjhweDtsaW5lLWhlaWdodDoyOHB4fS5tYXQtYmFkZ2UtbGFyZ2UubWF0LWJhZGdlLWFib3ZlW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtYmFkZ2UtY29udGVudFtfbmdjb250ZW50LSVDT01QJV17dG9wOi0xNHB4fS5tYXQtYmFkZ2UtbGFyZ2UubWF0LWJhZGdlLWJlbG93W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtYmFkZ2UtY29udGVudFtfbmdjb250ZW50LSVDT01QJV17Ym90dG9tOi0xNHB4fS5tYXQtYmFkZ2UtbGFyZ2UubWF0LWJhZGdlLWJlZm9yZVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWJhZGdlLWNvbnRlbnRbX25nY29udGVudC0lQ09NUCVde2xlZnQ6LTI4cHh9W2Rpcj1ydGxdW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtYmFkZ2UtbGFyZ2UubWF0LWJhZGdlLWJlZm9yZVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWJhZGdlLWNvbnRlbnRbX25nY29udGVudC0lQ09NUCVde2xlZnQ6YXV0bztyaWdodDotMjhweH0ubWF0LWJhZGdlLWxhcmdlLm1hdC1iYWRnZS1hZnRlcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWJhZGdlLWNvbnRlbnRbX25nY29udGVudC0lQ09NUCVde3JpZ2h0Oi0yOHB4fVtkaXI9cnRsXVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWJhZGdlLWxhcmdlLm1hdC1iYWRnZS1hZnRlcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWJhZGdlLWNvbnRlbnRbX25nY29udGVudC0lQ09NUCVde3JpZ2h0OmF1dG87bGVmdDotMjhweH0ubWF0LWJhZGdlLWxhcmdlLm1hdC1iYWRnZS1vdmVybGFwLm1hdC1iYWRnZS1iZWZvcmVbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1iYWRnZS1jb250ZW50W19uZ2NvbnRlbnQtJUNPTVAlXXtsZWZ0Oi0xNHB4fVtkaXI9cnRsXVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWJhZGdlLWxhcmdlLm1hdC1iYWRnZS1vdmVybGFwLm1hdC1iYWRnZS1iZWZvcmVbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1iYWRnZS1jb250ZW50W19uZ2NvbnRlbnQtJUNPTVAlXXtsZWZ0OmF1dG87cmlnaHQ6LTE0cHh9Lm1hdC1iYWRnZS1sYXJnZS5tYXQtYmFkZ2Utb3ZlcmxhcC5tYXQtYmFkZ2UtYWZ0ZXJbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1iYWRnZS1jb250ZW50W19uZ2NvbnRlbnQtJUNPTVAlXXtyaWdodDotMTRweH1bZGlyPXJ0bF1bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1iYWRnZS1sYXJnZS5tYXQtYmFkZ2Utb3ZlcmxhcC5tYXQtYmFkZ2UtYWZ0ZXJbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1iYWRnZS1jb250ZW50W19uZ2NvbnRlbnQtJUNPTVAlXXtyaWdodDphdXRvO2xlZnQ6LTE0cHh9Lm1hdC1ib3R0b20tc2hlZXQtY29udGFpbmVyW19uZ2NvbnRlbnQtJUNPTVAlXXtib3gtc2hhZG93OjBweCA4cHggMTBweCAtNXB4IHJnYmEoMCwgMCwgMCwgMC4yKSwwcHggMTZweCAyNHB4IDJweCByZ2JhKDAsIDAsIDAsIDAuMTQpLDBweCA2cHggMzBweCA1cHggcmdiYSgwLCAwLCAwLCAwLjEyKTtiYWNrZ3JvdW5kOiNmZmY7Y29sb3I6IzIxMjEyMX0ubWF0LWJ1dHRvbltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtaWNvbi1idXR0b25bX25nY29udGVudC0lQ09NUCVdLCAubWF0LXN0cm9rZWQtYnV0dG9uW19uZ2NvbnRlbnQtJUNPTVAlXXtjb2xvcjppbmhlcml0O2JhY2tncm91bmQ6dHJhbnNwYXJlbnR9Lm1hdC1idXR0b24ubWF0LXByaW1hcnlbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWljb24tYnV0dG9uLm1hdC1wcmltYXJ5W19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1zdHJva2VkLWJ1dHRvbi5tYXQtcHJpbWFyeVtfbmdjb250ZW50LSVDT01QJV17Y29sb3I6I2Y1N2MwMH0ubWF0LWJ1dHRvbi5tYXQtYWNjZW50W19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1pY29uLWJ1dHRvbi5tYXQtYWNjZW50W19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1zdHJva2VkLWJ1dHRvbi5tYXQtYWNjZW50W19uZ2NvbnRlbnQtJUNPTVAlXXtjb2xvcjojZmY5ODAwfS5tYXQtYnV0dG9uLm1hdC13YXJuW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1pY29uLWJ1dHRvbi5tYXQtd2Fybltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtc3Ryb2tlZC1idXR0b24ubWF0LXdhcm5bX25nY29udGVudC0lQ09NUCVde2NvbG9yOiNmNDQzMzZ9Lm1hdC1idXR0b24ubWF0LXByaW1hcnkubWF0LWJ1dHRvbi1kaXNhYmxlZFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtYnV0dG9uLm1hdC1hY2NlbnQubWF0LWJ1dHRvbi1kaXNhYmxlZFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtYnV0dG9uLm1hdC13YXJuLm1hdC1idXR0b24tZGlzYWJsZWRbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWJ1dHRvbi5tYXQtYnV0dG9uLWRpc2FibGVkLm1hdC1idXR0b24tZGlzYWJsZWRbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWljb24tYnV0dG9uLm1hdC1wcmltYXJ5Lm1hdC1idXR0b24tZGlzYWJsZWRbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWljb24tYnV0dG9uLm1hdC1hY2NlbnQubWF0LWJ1dHRvbi1kaXNhYmxlZFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtaWNvbi1idXR0b24ubWF0LXdhcm4ubWF0LWJ1dHRvbi1kaXNhYmxlZFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtaWNvbi1idXR0b24ubWF0LWJ1dHRvbi1kaXNhYmxlZC5tYXQtYnV0dG9uLWRpc2FibGVkW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1zdHJva2VkLWJ1dHRvbi5tYXQtcHJpbWFyeS5tYXQtYnV0dG9uLWRpc2FibGVkW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1zdHJva2VkLWJ1dHRvbi5tYXQtYWNjZW50Lm1hdC1idXR0b24tZGlzYWJsZWRbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXN0cm9rZWQtYnV0dG9uLm1hdC13YXJuLm1hdC1idXR0b24tZGlzYWJsZWRbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXN0cm9rZWQtYnV0dG9uLm1hdC1idXR0b24tZGlzYWJsZWQubWF0LWJ1dHRvbi1kaXNhYmxlZFtfbmdjb250ZW50LSVDT01QJV17Y29sb3I6cmdiYSgwLDAsMCwuMjYpfS5tYXQtYnV0dG9uLm1hdC1wcmltYXJ5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtYnV0dG9uLWZvY3VzLW92ZXJsYXlbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWljb24tYnV0dG9uLm1hdC1wcmltYXJ5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtYnV0dG9uLWZvY3VzLW92ZXJsYXlbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXN0cm9rZWQtYnV0dG9uLm1hdC1wcmltYXJ5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtYnV0dG9uLWZvY3VzLW92ZXJsYXlbX25nY29udGVudC0lQ09NUCVde2JhY2tncm91bmQtY29sb3I6I2Y1N2MwMH0ubWF0LWJ1dHRvbi5tYXQtYWNjZW50W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtYnV0dG9uLWZvY3VzLW92ZXJsYXlbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWljb24tYnV0dG9uLm1hdC1hY2NlbnRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1idXR0b24tZm9jdXMtb3ZlcmxheVtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtc3Ryb2tlZC1idXR0b24ubWF0LWFjY2VudFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWJ1dHRvbi1mb2N1cy1vdmVybGF5W19uZ2NvbnRlbnQtJUNPTVAlXXtiYWNrZ3JvdW5kLWNvbG9yOiNmZjk4MDB9Lm1hdC1idXR0b24ubWF0LXdhcm5bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1idXR0b24tZm9jdXMtb3ZlcmxheVtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtaWNvbi1idXR0b24ubWF0LXdhcm5bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1idXR0b24tZm9jdXMtb3ZlcmxheVtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtc3Ryb2tlZC1idXR0b24ubWF0LXdhcm5bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1idXR0b24tZm9jdXMtb3ZlcmxheVtfbmdjb250ZW50LSVDT01QJV17YmFja2dyb3VuZC1jb2xvcjojZjQ0MzM2fS5tYXQtYnV0dG9uLm1hdC1idXR0b24tZGlzYWJsZWRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1idXR0b24tZm9jdXMtb3ZlcmxheVtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtaWNvbi1idXR0b24ubWF0LWJ1dHRvbi1kaXNhYmxlZFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWJ1dHRvbi1mb2N1cy1vdmVybGF5W19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1zdHJva2VkLWJ1dHRvbi5tYXQtYnV0dG9uLWRpc2FibGVkW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtYnV0dG9uLWZvY3VzLW92ZXJsYXlbX25nY29udGVudC0lQ09NUCVde2JhY2tncm91bmQtY29sb3I6dHJhbnNwYXJlbnR9Lm1hdC1idXR0b25bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1yaXBwbGUtZWxlbWVudFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtaWNvbi1idXR0b25bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1yaXBwbGUtZWxlbWVudFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtc3Ryb2tlZC1idXR0b25bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1yaXBwbGUtZWxlbWVudFtfbmdjb250ZW50LSVDT01QJV17b3BhY2l0eTouMTtiYWNrZ3JvdW5kLWNvbG9yOmN1cnJlbnRDb2xvcn0ubWF0LWJ1dHRvbi1mb2N1cy1vdmVybGF5W19uZ2NvbnRlbnQtJUNPTVAlXXtiYWNrZ3JvdW5kOiMwMDB9Lm1hdC1zdHJva2VkLWJ1dHRvbltfbmdjb250ZW50LSVDT01QJV06bm90KC5tYXQtYnV0dG9uLWRpc2FibGVkKXtib3JkZXItY29sb3I6cmdiYSgwLDAsMCwuMTIpfS5tYXQtZmxhdC1idXR0b25bX25nY29udGVudC0lQ09NUCVdLCAubWF0LXJhaXNlZC1idXR0b25bX25nY29udGVudC0lQ09NUCVdLCAubWF0LWZhYltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtbWluaS1mYWJbX25nY29udGVudC0lQ09NUCVde2NvbG9yOiMyMTIxMjE7YmFja2dyb3VuZC1jb2xvcjojZmZmfS5tYXQtZmxhdC1idXR0b24ubWF0LXByaW1hcnlbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXJhaXNlZC1idXR0b24ubWF0LXByaW1hcnlbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWZhYi5tYXQtcHJpbWFyeVtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtbWluaS1mYWIubWF0LXByaW1hcnlbX25nY29udGVudC0lQ09NUCVde2NvbG9yOiNmZmZ9Lm1hdC1mbGF0LWJ1dHRvbi5tYXQtYWNjZW50W19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1yYWlzZWQtYnV0dG9uLm1hdC1hY2NlbnRbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWZhYi5tYXQtYWNjZW50W19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1taW5pLWZhYi5tYXQtYWNjZW50W19uZ2NvbnRlbnQtJUNPTVAlXXtjb2xvcjojZmZmfS5tYXQtZmxhdC1idXR0b24ubWF0LXdhcm5bX25nY29udGVudC0lQ09NUCVdLCAubWF0LXJhaXNlZC1idXR0b24ubWF0LXdhcm5bX25nY29udGVudC0lQ09NUCVdLCAubWF0LWZhYi5tYXQtd2Fybltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtbWluaS1mYWIubWF0LXdhcm5bX25nY29udGVudC0lQ09NUCVde2NvbG9yOiNmZmZ9Lm1hdC1mbGF0LWJ1dHRvbi5tYXQtcHJpbWFyeS5tYXQtYnV0dG9uLWRpc2FibGVkW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1mbGF0LWJ1dHRvbi5tYXQtYWNjZW50Lm1hdC1idXR0b24tZGlzYWJsZWRbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWZsYXQtYnV0dG9uLm1hdC13YXJuLm1hdC1idXR0b24tZGlzYWJsZWRbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWZsYXQtYnV0dG9uLm1hdC1idXR0b24tZGlzYWJsZWQubWF0LWJ1dHRvbi1kaXNhYmxlZFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtcmFpc2VkLWJ1dHRvbi5tYXQtcHJpbWFyeS5tYXQtYnV0dG9uLWRpc2FibGVkW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1yYWlzZWQtYnV0dG9uLm1hdC1hY2NlbnQubWF0LWJ1dHRvbi1kaXNhYmxlZFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtcmFpc2VkLWJ1dHRvbi5tYXQtd2Fybi5tYXQtYnV0dG9uLWRpc2FibGVkW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1yYWlzZWQtYnV0dG9uLm1hdC1idXR0b24tZGlzYWJsZWQubWF0LWJ1dHRvbi1kaXNhYmxlZFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtZmFiLm1hdC1wcmltYXJ5Lm1hdC1idXR0b24tZGlzYWJsZWRbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWZhYi5tYXQtYWNjZW50Lm1hdC1idXR0b24tZGlzYWJsZWRbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWZhYi5tYXQtd2Fybi5tYXQtYnV0dG9uLWRpc2FibGVkW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1mYWIubWF0LWJ1dHRvbi1kaXNhYmxlZC5tYXQtYnV0dG9uLWRpc2FibGVkW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1taW5pLWZhYi5tYXQtcHJpbWFyeS5tYXQtYnV0dG9uLWRpc2FibGVkW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1taW5pLWZhYi5tYXQtYWNjZW50Lm1hdC1idXR0b24tZGlzYWJsZWRbX25nY29udGVudC0lQ09NUCVdLCAubWF0LW1pbmktZmFiLm1hdC13YXJuLm1hdC1idXR0b24tZGlzYWJsZWRbX25nY29udGVudC0lQ09NUCVdLCAubWF0LW1pbmktZmFiLm1hdC1idXR0b24tZGlzYWJsZWQubWF0LWJ1dHRvbi1kaXNhYmxlZFtfbmdjb250ZW50LSVDT01QJV17Y29sb3I6cmdiYSgwLDAsMCwuMjYpfS5tYXQtZmxhdC1idXR0b24ubWF0LXByaW1hcnlbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXJhaXNlZC1idXR0b24ubWF0LXByaW1hcnlbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWZhYi5tYXQtcHJpbWFyeVtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtbWluaS1mYWIubWF0LXByaW1hcnlbX25nY29udGVudC0lQ09NUCVde2JhY2tncm91bmQtY29sb3I6I2Y1N2MwMH0ubWF0LWZsYXQtYnV0dG9uLm1hdC1hY2NlbnRbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXJhaXNlZC1idXR0b24ubWF0LWFjY2VudFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtZmFiLm1hdC1hY2NlbnRbX25nY29udGVudC0lQ09NUCVdLCAubWF0LW1pbmktZmFiLm1hdC1hY2NlbnRbX25nY29udGVudC0lQ09NUCVde2JhY2tncm91bmQtY29sb3I6I2ZmOTgwMH0ubWF0LWZsYXQtYnV0dG9uLm1hdC13YXJuW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1yYWlzZWQtYnV0dG9uLm1hdC13YXJuW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1mYWIubWF0LXdhcm5bX25nY29udGVudC0lQ09NUCVdLCAubWF0LW1pbmktZmFiLm1hdC13YXJuW19uZ2NvbnRlbnQtJUNPTVAlXXtiYWNrZ3JvdW5kLWNvbG9yOiNmNDQzMzZ9Lm1hdC1mbGF0LWJ1dHRvbi5tYXQtcHJpbWFyeS5tYXQtYnV0dG9uLWRpc2FibGVkW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1mbGF0LWJ1dHRvbi5tYXQtYWNjZW50Lm1hdC1idXR0b24tZGlzYWJsZWRbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWZsYXQtYnV0dG9uLm1hdC13YXJuLm1hdC1idXR0b24tZGlzYWJsZWRbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWZsYXQtYnV0dG9uLm1hdC1idXR0b24tZGlzYWJsZWQubWF0LWJ1dHRvbi1kaXNhYmxlZFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtcmFpc2VkLWJ1dHRvbi5tYXQtcHJpbWFyeS5tYXQtYnV0dG9uLWRpc2FibGVkW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1yYWlzZWQtYnV0dG9uLm1hdC1hY2NlbnQubWF0LWJ1dHRvbi1kaXNhYmxlZFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtcmFpc2VkLWJ1dHRvbi5tYXQtd2Fybi5tYXQtYnV0dG9uLWRpc2FibGVkW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1yYWlzZWQtYnV0dG9uLm1hdC1idXR0b24tZGlzYWJsZWQubWF0LWJ1dHRvbi1kaXNhYmxlZFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtZmFiLm1hdC1wcmltYXJ5Lm1hdC1idXR0b24tZGlzYWJsZWRbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWZhYi5tYXQtYWNjZW50Lm1hdC1idXR0b24tZGlzYWJsZWRbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWZhYi5tYXQtd2Fybi5tYXQtYnV0dG9uLWRpc2FibGVkW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1mYWIubWF0LWJ1dHRvbi1kaXNhYmxlZC5tYXQtYnV0dG9uLWRpc2FibGVkW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1taW5pLWZhYi5tYXQtcHJpbWFyeS5tYXQtYnV0dG9uLWRpc2FibGVkW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1taW5pLWZhYi5tYXQtYWNjZW50Lm1hdC1idXR0b24tZGlzYWJsZWRbX25nY29udGVudC0lQ09NUCVdLCAubWF0LW1pbmktZmFiLm1hdC13YXJuLm1hdC1idXR0b24tZGlzYWJsZWRbX25nY29udGVudC0lQ09NUCVdLCAubWF0LW1pbmktZmFiLm1hdC1idXR0b24tZGlzYWJsZWQubWF0LWJ1dHRvbi1kaXNhYmxlZFtfbmdjb250ZW50LSVDT01QJV17YmFja2dyb3VuZC1jb2xvcjpyZ2JhKDAsMCwwLC4xMil9Lm1hdC1mbGF0LWJ1dHRvbi5tYXQtcHJpbWFyeVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXJpcHBsZS1lbGVtZW50W19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1yYWlzZWQtYnV0dG9uLm1hdC1wcmltYXJ5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtcmlwcGxlLWVsZW1lbnRbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWZhYi5tYXQtcHJpbWFyeVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXJpcHBsZS1lbGVtZW50W19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1taW5pLWZhYi5tYXQtcHJpbWFyeVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXJpcHBsZS1lbGVtZW50W19uZ2NvbnRlbnQtJUNPTVAlXXtiYWNrZ3JvdW5kLWNvbG9yOnJnYmEoMjU1LDI1NSwyNTUsLjEpfS5tYXQtZmxhdC1idXR0b24ubWF0LWFjY2VudFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXJpcHBsZS1lbGVtZW50W19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1yYWlzZWQtYnV0dG9uLm1hdC1hY2NlbnRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1yaXBwbGUtZWxlbWVudFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtZmFiLm1hdC1hY2NlbnRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1yaXBwbGUtZWxlbWVudFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtbWluaS1mYWIubWF0LWFjY2VudFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXJpcHBsZS1lbGVtZW50W19uZ2NvbnRlbnQtJUNPTVAlXXtiYWNrZ3JvdW5kLWNvbG9yOnJnYmEoMjU1LDI1NSwyNTUsLjEpfS5tYXQtZmxhdC1idXR0b24ubWF0LXdhcm5bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1yaXBwbGUtZWxlbWVudFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtcmFpc2VkLWJ1dHRvbi5tYXQtd2Fybltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXJpcHBsZS1lbGVtZW50W19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1mYWIubWF0LXdhcm5bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1yaXBwbGUtZWxlbWVudFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtbWluaS1mYWIubWF0LXdhcm5bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1yaXBwbGUtZWxlbWVudFtfbmdjb250ZW50LSVDT01QJV17YmFja2dyb3VuZC1jb2xvcjpyZ2JhKDI1NSwyNTUsMjU1LC4xKX0ubWF0LXN0cm9rZWQtYnV0dG9uW19uZ2NvbnRlbnQtJUNPTVAlXTpub3QoW2NsYXNzKj1tYXQtZWxldmF0aW9uLXpdKSwgLm1hdC1mbGF0LWJ1dHRvbltfbmdjb250ZW50LSVDT01QJV06bm90KFtjbGFzcyo9bWF0LWVsZXZhdGlvbi16XSl7Ym94LXNoYWRvdzowcHggMHB4IDBweCAwcHggcmdiYSgwLCAwLCAwLCAwLjIpLDBweCAwcHggMHB4IDBweCByZ2JhKDAsIDAsIDAsIDAuMTQpLDBweCAwcHggMHB4IDBweCByZ2JhKDAsIDAsIDAsIDAuMTIpfS5tYXQtcmFpc2VkLWJ1dHRvbltfbmdjb250ZW50LSVDT01QJV06bm90KFtjbGFzcyo9bWF0LWVsZXZhdGlvbi16XSl7Ym94LXNoYWRvdzowcHggM3B4IDFweCAtMnB4IHJnYmEoMCwgMCwgMCwgMC4yKSwwcHggMnB4IDJweCAwcHggcmdiYSgwLCAwLCAwLCAwLjE0KSwwcHggMXB4IDVweCAwcHggcmdiYSgwLCAwLCAwLCAwLjEyKX0ubWF0LXJhaXNlZC1idXR0b25bX25nY29udGVudC0lQ09NUCVdOm5vdCgubWF0LWJ1dHRvbi1kaXNhYmxlZCk6YWN0aXZlOm5vdChbY2xhc3MqPW1hdC1lbGV2YXRpb24tel0pe2JveC1zaGFkb3c6MHB4IDVweCA1cHggLTNweCByZ2JhKDAsIDAsIDAsIDAuMiksMHB4IDhweCAxMHB4IDFweCByZ2JhKDAsIDAsIDAsIDAuMTQpLDBweCAzcHggMTRweCAycHggcmdiYSgwLCAwLCAwLCAwLjEyKX0ubWF0LXJhaXNlZC1idXR0b24ubWF0LWJ1dHRvbi1kaXNhYmxlZFtfbmdjb250ZW50LSVDT01QJV06bm90KFtjbGFzcyo9bWF0LWVsZXZhdGlvbi16XSl7Ym94LXNoYWRvdzowcHggMHB4IDBweCAwcHggcmdiYSgwLCAwLCAwLCAwLjIpLDBweCAwcHggMHB4IDBweCByZ2JhKDAsIDAsIDAsIDAuMTQpLDBweCAwcHggMHB4IDBweCByZ2JhKDAsIDAsIDAsIDAuMTIpfS5tYXQtZmFiW19uZ2NvbnRlbnQtJUNPTVAlXTpub3QoW2NsYXNzKj1tYXQtZWxldmF0aW9uLXpdKSwgLm1hdC1taW5pLWZhYltfbmdjb250ZW50LSVDT01QJV06bm90KFtjbGFzcyo9bWF0LWVsZXZhdGlvbi16XSl7Ym94LXNoYWRvdzowcHggM3B4IDVweCAtMXB4IHJnYmEoMCwgMCwgMCwgMC4yKSwwcHggNnB4IDEwcHggMHB4IHJnYmEoMCwgMCwgMCwgMC4xNCksMHB4IDFweCAxOHB4IDBweCByZ2JhKDAsIDAsIDAsIDAuMTIpfS5tYXQtZmFiW19uZ2NvbnRlbnQtJUNPTVAlXTpub3QoLm1hdC1idXR0b24tZGlzYWJsZWQpOmFjdGl2ZTpub3QoW2NsYXNzKj1tYXQtZWxldmF0aW9uLXpdKSwgLm1hdC1taW5pLWZhYltfbmdjb250ZW50LSVDT01QJV06bm90KC5tYXQtYnV0dG9uLWRpc2FibGVkKTphY3RpdmU6bm90KFtjbGFzcyo9bWF0LWVsZXZhdGlvbi16XSl7Ym94LXNoYWRvdzowcHggN3B4IDhweCAtNHB4IHJnYmEoMCwgMCwgMCwgMC4yKSwwcHggMTJweCAxN3B4IDJweCByZ2JhKDAsIDAsIDAsIDAuMTQpLDBweCA1cHggMjJweCA0cHggcmdiYSgwLCAwLCAwLCAwLjEyKX0ubWF0LWZhYi5tYXQtYnV0dG9uLWRpc2FibGVkW19uZ2NvbnRlbnQtJUNPTVAlXTpub3QoW2NsYXNzKj1tYXQtZWxldmF0aW9uLXpdKSwgLm1hdC1taW5pLWZhYi5tYXQtYnV0dG9uLWRpc2FibGVkW19uZ2NvbnRlbnQtJUNPTVAlXTpub3QoW2NsYXNzKj1tYXQtZWxldmF0aW9uLXpdKXtib3gtc2hhZG93OjBweCAwcHggMHB4IDBweCByZ2JhKDAsIDAsIDAsIDAuMiksMHB4IDBweCAwcHggMHB4IHJnYmEoMCwgMCwgMCwgMC4xNCksMHB4IDBweCAwcHggMHB4IHJnYmEoMCwgMCwgMCwgMC4xMil9Lm1hdC1idXR0b24tdG9nZ2xlLXN0YW5kYWxvbmVbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWJ1dHRvbi10b2dnbGUtZ3JvdXBbX25nY29udGVudC0lQ09NUCVde2JveC1zaGFkb3c6MHB4IDNweCAxcHggLTJweCByZ2JhKDAsIDAsIDAsIDAuMiksMHB4IDJweCAycHggMHB4IHJnYmEoMCwgMCwgMCwgMC4xNCksMHB4IDFweCA1cHggMHB4IHJnYmEoMCwgMCwgMCwgMC4xMil9Lm1hdC1idXR0b24tdG9nZ2xlLXN0YW5kYWxvbmUubWF0LWJ1dHRvbi10b2dnbGUtYXBwZWFyYW5jZS1zdGFuZGFyZFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtYnV0dG9uLXRvZ2dsZS1ncm91cC1hcHBlYXJhbmNlLXN0YW5kYXJkW19uZ2NvbnRlbnQtJUNPTVAlXXtib3gtc2hhZG93Om5vbmV9Lm1hdC1idXR0b24tdG9nZ2xlW19uZ2NvbnRlbnQtJUNPTVAlXXtjb2xvcjpyZ2JhKDAsMCwwLC4zOCl9Lm1hdC1idXR0b24tdG9nZ2xlW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtYnV0dG9uLXRvZ2dsZS1mb2N1cy1vdmVybGF5W19uZ2NvbnRlbnQtJUNPTVAlXXtiYWNrZ3JvdW5kLWNvbG9yOnJnYmEoMCwwLDAsLjEyKX0ubWF0LWJ1dHRvbi10b2dnbGUtYXBwZWFyYW5jZS1zdGFuZGFyZFtfbmdjb250ZW50LSVDT01QJV17Y29sb3I6IzIxMjEyMTtiYWNrZ3JvdW5kOiNmZmZ9Lm1hdC1idXR0b24tdG9nZ2xlLWFwcGVhcmFuY2Utc3RhbmRhcmRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1idXR0b24tdG9nZ2xlLWZvY3VzLW92ZXJsYXlbX25nY29udGVudC0lQ09NUCVde2JhY2tncm91bmQtY29sb3I6IzAwMH0ubWF0LWJ1dHRvbi10b2dnbGUtZ3JvdXAtYXBwZWFyYW5jZS1zdGFuZGFyZFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWJ1dHRvbi10b2dnbGVbX25nY29udGVudC0lQ09NUCVdICsgLm1hdC1idXR0b24tdG9nZ2xlW19uZ2NvbnRlbnQtJUNPTVAlXXtib3JkZXItbGVmdDpzb2xpZCAxcHggcmdiYSgwLDAsMCwuMTIpfVtkaXI9cnRsXVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWJ1dHRvbi10b2dnbGUtZ3JvdXAtYXBwZWFyYW5jZS1zdGFuZGFyZFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWJ1dHRvbi10b2dnbGVbX25nY29udGVudC0lQ09NUCVdICsgLm1hdC1idXR0b24tdG9nZ2xlW19uZ2NvbnRlbnQtJUNPTVAlXXtib3JkZXItbGVmdDpub25lO2JvcmRlci1yaWdodDpzb2xpZCAxcHggcmdiYSgwLDAsMCwuMTIpfS5tYXQtYnV0dG9uLXRvZ2dsZS1ncm91cC1hcHBlYXJhbmNlLXN0YW5kYXJkLm1hdC1idXR0b24tdG9nZ2xlLXZlcnRpY2FsW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtYnV0dG9uLXRvZ2dsZVtfbmdjb250ZW50LSVDT01QJV0gKyAubWF0LWJ1dHRvbi10b2dnbGVbX25nY29udGVudC0lQ09NUCVde2JvcmRlci1sZWZ0Om5vbmU7Ym9yZGVyLXJpZ2h0Om5vbmU7Ym9yZGVyLXRvcDpzb2xpZCAxcHggcmdiYSgwLDAsMCwuMTIpfS5tYXQtYnV0dG9uLXRvZ2dsZS1jaGVja2VkW19uZ2NvbnRlbnQtJUNPTVAlXXtiYWNrZ3JvdW5kLWNvbG9yOiNlMGUwZTA7Y29sb3I6IzYxNjE2MX0ubWF0LWJ1dHRvbi10b2dnbGUtY2hlY2tlZC5tYXQtYnV0dG9uLXRvZ2dsZS1hcHBlYXJhbmNlLXN0YW5kYXJkW19uZ2NvbnRlbnQtJUNPTVAlXXtjb2xvcjojMjEyMTIxfS5tYXQtYnV0dG9uLXRvZ2dsZS1kaXNhYmxlZFtfbmdjb250ZW50LSVDT01QJV17Y29sb3I6cmdiYSgwLDAsMCwuMjYpO2JhY2tncm91bmQtY29sb3I6I2VlZX0ubWF0LWJ1dHRvbi10b2dnbGUtZGlzYWJsZWQubWF0LWJ1dHRvbi10b2dnbGUtYXBwZWFyYW5jZS1zdGFuZGFyZFtfbmdjb250ZW50LSVDT01QJV17YmFja2dyb3VuZDojZmZmfS5tYXQtYnV0dG9uLXRvZ2dsZS1kaXNhYmxlZC5tYXQtYnV0dG9uLXRvZ2dsZS1jaGVja2VkW19uZ2NvbnRlbnQtJUNPTVAlXXtiYWNrZ3JvdW5kLWNvbG9yOiNiZGJkYmR9Lm1hdC1idXR0b24tdG9nZ2xlLXN0YW5kYWxvbmUubWF0LWJ1dHRvbi10b2dnbGUtYXBwZWFyYW5jZS1zdGFuZGFyZFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtYnV0dG9uLXRvZ2dsZS1ncm91cC1hcHBlYXJhbmNlLXN0YW5kYXJkW19uZ2NvbnRlbnQtJUNPTVAlXXtib3JkZXI6c29saWQgMXB4IHJnYmEoMCwwLDAsLjEyKX0ubWF0LWJ1dHRvbi10b2dnbGUtYXBwZWFyYW5jZS1zdGFuZGFyZFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWJ1dHRvbi10b2dnbGUtbGFiZWwtY29udGVudFtfbmdjb250ZW50LSVDT01QJV17bGluZS1oZWlnaHQ6NDhweH0ubWF0LWNhcmRbX25nY29udGVudC0lQ09NUCVde2JhY2tncm91bmQ6I2ZmZjtjb2xvcjojMjEyMTIxfS5tYXQtY2FyZFtfbmdjb250ZW50LSVDT01QJV06bm90KFtjbGFzcyo9bWF0LWVsZXZhdGlvbi16XSl7Ym94LXNoYWRvdzowcHggMnB4IDFweCAtMXB4IHJnYmEoMCwgMCwgMCwgMC4yKSwwcHggMXB4IDFweCAwcHggcmdiYSgwLCAwLCAwLCAwLjE0KSwwcHggMXB4IDNweCAwcHggcmdiYSgwLCAwLCAwLCAwLjEyKX0ubWF0LWNhcmQubWF0LWNhcmQtZmxhdFtfbmdjb250ZW50LSVDT01QJV06bm90KFtjbGFzcyo9bWF0LWVsZXZhdGlvbi16XSl7Ym94LXNoYWRvdzowcHggMHB4IDBweCAwcHggcmdiYSgwLCAwLCAwLCAwLjIpLDBweCAwcHggMHB4IDBweCByZ2JhKDAsIDAsIDAsIDAuMTQpLDBweCAwcHggMHB4IDBweCByZ2JhKDAsIDAsIDAsIDAuMTIpfS5tYXQtY2FyZC1zdWJ0aXRsZVtfbmdjb250ZW50LSVDT01QJV17Y29sb3I6IzYxNjE2MX0ubWF0LWNoZWNrYm94LWZyYW1lW19uZ2NvbnRlbnQtJUNPTVAlXXtib3JkZXItY29sb3I6IzYxNjE2MX0ubWF0LWNoZWNrYm94LWNoZWNrbWFya1tfbmdjb250ZW50LSVDT01QJV17ZmlsbDojZmFmYWZhfS5tYXQtY2hlY2tib3gtY2hlY2ttYXJrLXBhdGhbX25nY29udGVudC0lQ09NUCVde3N0cm9rZTojZmFmYWZhICFpbXBvcnRhbnR9Lm1hdC1jaGVja2JveC1taXhlZG1hcmtbX25nY29udGVudC0lQ09NUCVde2JhY2tncm91bmQtY29sb3I6I2ZhZmFmYX0ubWF0LWNoZWNrYm94LWluZGV0ZXJtaW5hdGUubWF0LXByaW1hcnlbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1jaGVja2JveC1iYWNrZ3JvdW5kW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1jaGVja2JveC1jaGVja2VkLm1hdC1wcmltYXJ5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtY2hlY2tib3gtYmFja2dyb3VuZFtfbmdjb250ZW50LSVDT01QJV17YmFja2dyb3VuZC1jb2xvcjojZjU3YzAwfS5tYXQtY2hlY2tib3gtaW5kZXRlcm1pbmF0ZS5tYXQtYWNjZW50W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtY2hlY2tib3gtYmFja2dyb3VuZFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtY2hlY2tib3gtY2hlY2tlZC5tYXQtYWNjZW50W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtY2hlY2tib3gtYmFja2dyb3VuZFtfbmdjb250ZW50LSVDT01QJV17YmFja2dyb3VuZC1jb2xvcjojZmY5ODAwfS5tYXQtY2hlY2tib3gtaW5kZXRlcm1pbmF0ZS5tYXQtd2Fybltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWNoZWNrYm94LWJhY2tncm91bmRbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWNoZWNrYm94LWNoZWNrZWQubWF0LXdhcm5bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1jaGVja2JveC1iYWNrZ3JvdW5kW19uZ2NvbnRlbnQtJUNPTVAlXXtiYWNrZ3JvdW5kLWNvbG9yOiNmNDQzMzZ9Lm1hdC1jaGVja2JveC1kaXNhYmxlZC5tYXQtY2hlY2tib3gtY2hlY2tlZFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWNoZWNrYm94LWJhY2tncm91bmRbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWNoZWNrYm94LWRpc2FibGVkLm1hdC1jaGVja2JveC1pbmRldGVybWluYXRlW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtY2hlY2tib3gtYmFja2dyb3VuZFtfbmdjb250ZW50LSVDT01QJV17YmFja2dyb3VuZC1jb2xvcjojYjBiMGIwfS5tYXQtY2hlY2tib3gtZGlzYWJsZWRbX25nY29udGVudC0lQ09NUCVdOm5vdCgubWF0LWNoZWNrYm94LWNoZWNrZWQpICAgLm1hdC1jaGVja2JveC1mcmFtZVtfbmdjb250ZW50LSVDT01QJV17Ym9yZGVyLWNvbG9yOiNiMGIwYjB9Lm1hdC1jaGVja2JveC1kaXNhYmxlZFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWNoZWNrYm94LWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXtjb2xvcjojNjE2MTYxfS5tYXQtY2hlY2tib3hbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1yaXBwbGUtZWxlbWVudFtfbmdjb250ZW50LSVDT01QJV17YmFja2dyb3VuZC1jb2xvcjojMDAwfS5tYXQtY2hlY2tib3gtY2hlY2tlZFtfbmdjb250ZW50LSVDT01QJV06bm90KC5tYXQtY2hlY2tib3gtZGlzYWJsZWQpLm1hdC1wcmltYXJ5ICAgLm1hdC1yaXBwbGUtZWxlbWVudFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtY2hlY2tib3hbX25nY29udGVudC0lQ09NUCVdOmFjdGl2ZTpub3QoLm1hdC1jaGVja2JveC1kaXNhYmxlZCkubWF0LXByaW1hcnkgICAubWF0LXJpcHBsZS1lbGVtZW50W19uZ2NvbnRlbnQtJUNPTVAlXXtiYWNrZ3JvdW5kOiNmNTdjMDB9Lm1hdC1jaGVja2JveC1jaGVja2VkW19uZ2NvbnRlbnQtJUNPTVAlXTpub3QoLm1hdC1jaGVja2JveC1kaXNhYmxlZCkubWF0LWFjY2VudCAgIC5tYXQtcmlwcGxlLWVsZW1lbnRbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWNoZWNrYm94W19uZ2NvbnRlbnQtJUNPTVAlXTphY3RpdmU6bm90KC5tYXQtY2hlY2tib3gtZGlzYWJsZWQpLm1hdC1hY2NlbnQgICAubWF0LXJpcHBsZS1lbGVtZW50W19uZ2NvbnRlbnQtJUNPTVAlXXtiYWNrZ3JvdW5kOiNmZjk4MDB9Lm1hdC1jaGVja2JveC1jaGVja2VkW19uZ2NvbnRlbnQtJUNPTVAlXTpub3QoLm1hdC1jaGVja2JveC1kaXNhYmxlZCkubWF0LXdhcm4gICAubWF0LXJpcHBsZS1lbGVtZW50W19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1jaGVja2JveFtfbmdjb250ZW50LSVDT01QJV06YWN0aXZlOm5vdCgubWF0LWNoZWNrYm94LWRpc2FibGVkKS5tYXQtd2FybiAgIC5tYXQtcmlwcGxlLWVsZW1lbnRbX25nY29udGVudC0lQ09NUCVde2JhY2tncm91bmQ6I2Y0NDMzNn0ubWF0LWNoaXAubWF0LXN0YW5kYXJkLWNoaXBbX25nY29udGVudC0lQ09NUCVde2JhY2tncm91bmQtY29sb3I6I2UwZTBlMDtjb2xvcjojMjEyMTIxfS5tYXQtY2hpcC5tYXQtc3RhbmRhcmQtY2hpcFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWNoaXAtcmVtb3ZlW19uZ2NvbnRlbnQtJUNPTVAlXXtjb2xvcjojMjEyMTIxO29wYWNpdHk6LjR9Lm1hdC1jaGlwLm1hdC1zdGFuZGFyZC1jaGlwW19uZ2NvbnRlbnQtJUNPTVAlXTpub3QoLm1hdC1jaGlwLWRpc2FibGVkKTphY3RpdmV7Ym94LXNoYWRvdzowcHggM3B4IDNweCAtMnB4IHJnYmEoMCwgMCwgMCwgMC4yKSwwcHggM3B4IDRweCAwcHggcmdiYSgwLCAwLCAwLCAwLjE0KSwwcHggMXB4IDhweCAwcHggcmdiYSgwLCAwLCAwLCAwLjEyKX0ubWF0LWNoaXAubWF0LXN0YW5kYXJkLWNoaXBbX25nY29udGVudC0lQ09NUCVdOm5vdCgubWF0LWNoaXAtZGlzYWJsZWQpICAgLm1hdC1jaGlwLXJlbW92ZVtfbmdjb250ZW50LSVDT01QJV06aG92ZXJ7b3BhY2l0eTouNTR9Lm1hdC1jaGlwLm1hdC1zdGFuZGFyZC1jaGlwLm1hdC1jaGlwLWRpc2FibGVkW19uZ2NvbnRlbnQtJUNPTVAlXXtvcGFjaXR5Oi40fS5tYXQtY2hpcC5tYXQtc3RhbmRhcmQtY2hpcFtfbmdjb250ZW50LSVDT01QJV06OmFmdGVye2JhY2tncm91bmQ6IzAwMH0ubWF0LWNoaXAubWF0LXN0YW5kYXJkLWNoaXAubWF0LWNoaXAtc2VsZWN0ZWQubWF0LXByaW1hcnlbX25nY29udGVudC0lQ09NUCVde2JhY2tncm91bmQtY29sb3I6I2Y1N2MwMDtjb2xvcjojZmZmfS5tYXQtY2hpcC5tYXQtc3RhbmRhcmQtY2hpcC5tYXQtY2hpcC1zZWxlY3RlZC5tYXQtcHJpbWFyeVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWNoaXAtcmVtb3ZlW19uZ2NvbnRlbnQtJUNPTVAlXXtjb2xvcjojZmZmO29wYWNpdHk6LjR9Lm1hdC1jaGlwLm1hdC1zdGFuZGFyZC1jaGlwLm1hdC1jaGlwLXNlbGVjdGVkLm1hdC1wcmltYXJ5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtcmlwcGxlLWVsZW1lbnRbX25nY29udGVudC0lQ09NUCVde2JhY2tncm91bmQtY29sb3I6cmdiYSgyNTUsMjU1LDI1NSwuMSl9Lm1hdC1jaGlwLm1hdC1zdGFuZGFyZC1jaGlwLm1hdC1jaGlwLXNlbGVjdGVkLm1hdC13YXJuW19uZ2NvbnRlbnQtJUNPTVAlXXtiYWNrZ3JvdW5kLWNvbG9yOiNmNDQzMzY7Y29sb3I6I2ZmZn0ubWF0LWNoaXAubWF0LXN0YW5kYXJkLWNoaXAubWF0LWNoaXAtc2VsZWN0ZWQubWF0LXdhcm5bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1jaGlwLXJlbW92ZVtfbmdjb250ZW50LSVDT01QJV17Y29sb3I6I2ZmZjtvcGFjaXR5Oi40fS5tYXQtY2hpcC5tYXQtc3RhbmRhcmQtY2hpcC5tYXQtY2hpcC1zZWxlY3RlZC5tYXQtd2Fybltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXJpcHBsZS1lbGVtZW50W19uZ2NvbnRlbnQtJUNPTVAlXXtiYWNrZ3JvdW5kLWNvbG9yOnJnYmEoMjU1LDI1NSwyNTUsLjEpfS5tYXQtY2hpcC5tYXQtc3RhbmRhcmQtY2hpcC5tYXQtY2hpcC1zZWxlY3RlZC5tYXQtYWNjZW50W19uZ2NvbnRlbnQtJUNPTVAlXXtiYWNrZ3JvdW5kLWNvbG9yOiNmZjk4MDA7Y29sb3I6I2ZmZn0ubWF0LWNoaXAubWF0LXN0YW5kYXJkLWNoaXAubWF0LWNoaXAtc2VsZWN0ZWQubWF0LWFjY2VudFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWNoaXAtcmVtb3ZlW19uZ2NvbnRlbnQtJUNPTVAlXXtjb2xvcjojZmZmO29wYWNpdHk6LjR9Lm1hdC1jaGlwLm1hdC1zdGFuZGFyZC1jaGlwLm1hdC1jaGlwLXNlbGVjdGVkLm1hdC1hY2NlbnRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1yaXBwbGUtZWxlbWVudFtfbmdjb250ZW50LSVDT01QJV17YmFja2dyb3VuZC1jb2xvcjpyZ2JhKDI1NSwyNTUsMjU1LC4xKX0ubWF0LXRhYmxlW19uZ2NvbnRlbnQtJUNPTVAlXXtiYWNrZ3JvdW5kOiNmZmZ9Lm1hdC10YWJsZVtfbmdjb250ZW50LSVDT01QJV0gICB0aGVhZFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdGFibGVbX25nY29udGVudC0lQ09NUCVdICAgdGJvZHlbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXRhYmxlW19uZ2NvbnRlbnQtJUNPTVAlXSAgIHRmb290W19uZ2NvbnRlbnQtJUNPTVAlXSwgbWF0LWhlYWRlci1yb3dbX25nY29udGVudC0lQ09NUCVdLCBtYXQtcm93W19uZ2NvbnRlbnQtJUNPTVAlXSwgbWF0LWZvb3Rlci1yb3dbX25nY29udGVudC0lQ09NUCVdLCBbbWF0LWhlYWRlci1yb3ddW19uZ2NvbnRlbnQtJUNPTVAlXSwgW21hdC1yb3ddW19uZ2NvbnRlbnQtJUNPTVAlXSwgW21hdC1mb290ZXItcm93XVtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdGFibGUtc3RpY2t5W19uZ2NvbnRlbnQtJUNPTVAlXXtiYWNrZ3JvdW5kOmluaGVyaXR9bWF0LXJvd1tfbmdjb250ZW50LSVDT01QJV0sIG1hdC1oZWFkZXItcm93W19uZ2NvbnRlbnQtJUNPTVAlXSwgbWF0LWZvb3Rlci1yb3dbX25nY29udGVudC0lQ09NUCVdLCB0aC5tYXQtaGVhZGVyLWNlbGxbX25nY29udGVudC0lQ09NUCVdLCB0ZC5tYXQtY2VsbFtfbmdjb250ZW50LSVDT01QJV0sIHRkLm1hdC1mb290ZXItY2VsbFtfbmdjb250ZW50LSVDT01QJV17Ym9yZGVyLWJvdHRvbS1jb2xvcjpyZ2JhKDAsMCwwLC4xMil9Lm1hdC1oZWFkZXItY2VsbFtfbmdjb250ZW50LSVDT01QJV17Y29sb3I6IzYxNjE2MX0ubWF0LWNlbGxbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWZvb3Rlci1jZWxsW19uZ2NvbnRlbnQtJUNPTVAlXXtjb2xvcjojMjEyMTIxfS5tYXQtY2FsZW5kYXItYXJyb3dbX25nY29udGVudC0lQ09NUCVde2JvcmRlci10b3AtY29sb3I6cmdiYSgwLDAsMCwuNTQpfS5tYXQtZGF0ZXBpY2tlci10b2dnbGVbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWRhdGVwaWNrZXItY29udGVudFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWNhbGVuZGFyLW5leHQtYnV0dG9uW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1kYXRlcGlja2VyLWNvbnRlbnRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1jYWxlbmRhci1wcmV2aW91cy1idXR0b25bX25nY29udGVudC0lQ09NUCVde2NvbG9yOnJnYmEoMCwwLDAsLjU0KX0ubWF0LWNhbGVuZGFyLXRhYmxlLWhlYWRlcltfbmdjb250ZW50LSVDT01QJV17Y29sb3I6cmdiYSgwLDAsMCwuMzgpfS5tYXQtY2FsZW5kYXItdGFibGUtaGVhZGVyLWRpdmlkZXJbX25nY29udGVudC0lQ09NUCVdOjphZnRlcntiYWNrZ3JvdW5kOnJnYmEoMCwwLDAsLjEyKX0ubWF0LWNhbGVuZGFyLWJvZHktbGFiZWxbX25nY29udGVudC0lQ09NUCVde2NvbG9yOiM2MTYxNjF9Lm1hdC1jYWxlbmRhci1ib2R5LWNlbGwtY29udGVudFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtZGF0ZS1yYW5nZS1pbnB1dC1zZXBhcmF0b3JbX25nY29udGVudC0lQ09NUCVde2NvbG9yOiMyMTIxMjE7Ym9yZGVyLWNvbG9yOnRyYW5zcGFyZW50fS5tYXQtY2FsZW5kYXItYm9keS1kaXNhYmxlZFtfbmdjb250ZW50LSVDT01QJV0gPiAubWF0LWNhbGVuZGFyLWJvZHktY2VsbC1jb250ZW50W19uZ2NvbnRlbnQtJUNPTVAlXTpub3QoLm1hdC1jYWxlbmRhci1ib2R5LXNlbGVjdGVkKTpub3QoLm1hdC1jYWxlbmRhci1ib2R5LWNvbXBhcmlzb24taWRlbnRpY2FsKXtjb2xvcjojNzU3NTc1fS5tYXQtZm9ybS1maWVsZC1kaXNhYmxlZFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWRhdGUtcmFuZ2UtaW5wdXQtc2VwYXJhdG9yW19uZ2NvbnRlbnQtJUNPTVAlXXtjb2xvcjojNzU3NTc1fS5tYXQtY2FsZW5kYXItYm9keS1jZWxsW19uZ2NvbnRlbnQtJUNPTVAlXTpub3QoLm1hdC1jYWxlbmRhci1ib2R5LWRpc2FibGVkKTpob3ZlciA+IC5tYXQtY2FsZW5kYXItYm9keS1jZWxsLWNvbnRlbnRbX25nY29udGVudC0lQ09NUCVdOm5vdCgubWF0LWNhbGVuZGFyLWJvZHktc2VsZWN0ZWQpOm5vdCgubWF0LWNhbGVuZGFyLWJvZHktY29tcGFyaXNvbi1pZGVudGljYWwpLCAuY2RrLWtleWJvYXJkLWZvY3VzZWRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1jYWxlbmRhci1ib2R5LWFjdGl2ZVtfbmdjb250ZW50LSVDT01QJV0gPiAubWF0LWNhbGVuZGFyLWJvZHktY2VsbC1jb250ZW50W19uZ2NvbnRlbnQtJUNPTVAlXTpub3QoLm1hdC1jYWxlbmRhci1ib2R5LXNlbGVjdGVkKTpub3QoLm1hdC1jYWxlbmRhci1ib2R5LWNvbXBhcmlzb24taWRlbnRpY2FsKSwgLmNkay1wcm9ncmFtLWZvY3VzZWRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1jYWxlbmRhci1ib2R5LWFjdGl2ZVtfbmdjb250ZW50LSVDT01QJV0gPiAubWF0LWNhbGVuZGFyLWJvZHktY2VsbC1jb250ZW50W19uZ2NvbnRlbnQtJUNPTVAlXTpub3QoLm1hdC1jYWxlbmRhci1ib2R5LXNlbGVjdGVkKTpub3QoLm1hdC1jYWxlbmRhci1ib2R5LWNvbXBhcmlzb24taWRlbnRpY2FsKXtiYWNrZ3JvdW5kLWNvbG9yOnJnYmEoMCwwLDAsLjA0KX0ubWF0LWNhbGVuZGFyLWJvZHktaW4tcHJldmlld1tfbmdjb250ZW50LSVDT01QJV17Y29sb3I6cmdiYSgwLDAsMCwuMjQpfS5tYXQtY2FsZW5kYXItYm9keS10b2RheVtfbmdjb250ZW50LSVDT01QJV06bm90KC5tYXQtY2FsZW5kYXItYm9keS1zZWxlY3RlZCk6bm90KC5tYXQtY2FsZW5kYXItYm9keS1jb21wYXJpc29uLWlkZW50aWNhbCl7Ym9yZGVyLWNvbG9yOnJnYmEoMCwwLDAsLjM4KX0ubWF0LWNhbGVuZGFyLWJvZHktZGlzYWJsZWRbX25nY29udGVudC0lQ09NUCVdID4gLm1hdC1jYWxlbmRhci1ib2R5LXRvZGF5W19uZ2NvbnRlbnQtJUNPTVAlXTpub3QoLm1hdC1jYWxlbmRhci1ib2R5LXNlbGVjdGVkKTpub3QoLm1hdC1jYWxlbmRhci1ib2R5LWNvbXBhcmlzb24taWRlbnRpY2FsKXtib3JkZXItY29sb3I6cmdiYSgwLDAsMCwuMTgpfS5tYXQtY2FsZW5kYXItYm9keS1pbi1yYW5nZVtfbmdjb250ZW50LSVDT01QJV06OmJlZm9yZXtiYWNrZ3JvdW5kOnJnYmEoMjQ1LDEyNCwwLC4yKX0ubWF0LWNhbGVuZGFyLWJvZHktY29tcGFyaXNvbi1pZGVudGljYWxbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWNhbGVuZGFyLWJvZHktaW4tY29tcGFyaXNvbi1yYW5nZVtfbmdjb250ZW50LSVDT01QJV06OmJlZm9yZXtiYWNrZ3JvdW5kOnJnYmEoMjQ5LDE3MSwwLC4yKX0ubWF0LWNhbGVuZGFyLWJvZHktY29tcGFyaXNvbi1icmlkZ2Utc3RhcnRbX25nY29udGVudC0lQ09NUCVdOjpiZWZvcmUsIFtkaXI9cnRsXVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWNhbGVuZGFyLWJvZHktY29tcGFyaXNvbi1icmlkZ2UtZW5kW19uZ2NvbnRlbnQtJUNPTVAlXTo6YmVmb3Jle2JhY2tncm91bmQ6bGluZWFyLWdyYWRpZW50KHRvIHJpZ2h0LCByZ2JhKDI0NSwgMTI0LCAwLCAwLjIpIDUwJSwgcmdiYSgyNDksIDE3MSwgMCwgMC4yKSA1MCUpfS5tYXQtY2FsZW5kYXItYm9keS1jb21wYXJpc29uLWJyaWRnZS1lbmRbX25nY29udGVudC0lQ09NUCVdOjpiZWZvcmUsIFtkaXI9cnRsXVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWNhbGVuZGFyLWJvZHktY29tcGFyaXNvbi1icmlkZ2Utc3RhcnRbX25nY29udGVudC0lQ09NUCVdOjpiZWZvcmV7YmFja2dyb3VuZDpsaW5lYXItZ3JhZGllbnQodG8gbGVmdCwgcmdiYSgyNDUsIDEyNCwgMCwgMC4yKSA1MCUsIHJnYmEoMjQ5LCAxNzEsIDAsIDAuMikgNTAlKX0ubWF0LWNhbGVuZGFyLWJvZHktaW4tcmFuZ2VbX25nY29udGVudC0lQ09NUCVdID4gLm1hdC1jYWxlbmRhci1ib2R5LWNvbXBhcmlzb24taWRlbnRpY2FsW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1jYWxlbmRhci1ib2R5LWluLWNvbXBhcmlzb24tcmFuZ2UubWF0LWNhbGVuZGFyLWJvZHktaW4tcmFuZ2VbX25nY29udGVudC0lQ09NUCVdOjphZnRlcntiYWNrZ3JvdW5kOiNhOGRhYjV9Lm1hdC1jYWxlbmRhci1ib2R5LWNvbXBhcmlzb24taWRlbnRpY2FsLm1hdC1jYWxlbmRhci1ib2R5LXNlbGVjdGVkW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1jYWxlbmRhci1ib2R5LWluLWNvbXBhcmlzb24tcmFuZ2VbX25nY29udGVudC0lQ09NUCVdID4gLm1hdC1jYWxlbmRhci1ib2R5LXNlbGVjdGVkW19uZ2NvbnRlbnQtJUNPTVAlXXtiYWNrZ3JvdW5kOiM0NmEzNWV9Lm1hdC1jYWxlbmRhci1ib2R5LXNlbGVjdGVkW19uZ2NvbnRlbnQtJUNPTVAlXXtiYWNrZ3JvdW5kLWNvbG9yOiNmNTdjMDA7Y29sb3I6I2ZmZn0ubWF0LWNhbGVuZGFyLWJvZHktZGlzYWJsZWRbX25nY29udGVudC0lQ09NUCVdID4gLm1hdC1jYWxlbmRhci1ib2R5LXNlbGVjdGVkW19uZ2NvbnRlbnQtJUNPTVAlXXtiYWNrZ3JvdW5kLWNvbG9yOnJnYmEoMjQ1LDEyNCwwLC40KX0ubWF0LWNhbGVuZGFyLWJvZHktdG9kYXkubWF0LWNhbGVuZGFyLWJvZHktc2VsZWN0ZWRbX25nY29udGVudC0lQ09NUCVde2JveC1zaGFkb3c6aW5zZXQgMCAwIDAgMXB4ICNmZmZ9Lm1hdC1kYXRlcGlja2VyLWNvbnRlbnRbX25nY29udGVudC0lQ09NUCVde2JveC1zaGFkb3c6MHB4IDJweCA0cHggLTFweCByZ2JhKDAsIDAsIDAsIDAuMiksMHB4IDRweCA1cHggMHB4IHJnYmEoMCwgMCwgMCwgMC4xNCksMHB4IDFweCAxMHB4IDBweCByZ2JhKDAsIDAsIDAsIDAuMTIpO2JhY2tncm91bmQtY29sb3I6I2ZmZjtjb2xvcjojMjEyMTIxfS5tYXQtZGF0ZXBpY2tlci1jb250ZW50Lm1hdC1hY2NlbnRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1jYWxlbmRhci1ib2R5LWluLXJhbmdlW19uZ2NvbnRlbnQtJUNPTVAlXTo6YmVmb3Jle2JhY2tncm91bmQ6cmdiYSgyNTUsMTUyLDAsLjIpfS5tYXQtZGF0ZXBpY2tlci1jb250ZW50Lm1hdC1hY2NlbnRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1jYWxlbmRhci1ib2R5LWNvbXBhcmlzb24taWRlbnRpY2FsW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1kYXRlcGlja2VyLWNvbnRlbnQubWF0LWFjY2VudFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWNhbGVuZGFyLWJvZHktaW4tY29tcGFyaXNvbi1yYW5nZVtfbmdjb250ZW50LSVDT01QJV06OmJlZm9yZXtiYWNrZ3JvdW5kOnJnYmEoMjQ5LDE3MSwwLC4yKX0ubWF0LWRhdGVwaWNrZXItY29udGVudC5tYXQtYWNjZW50W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtY2FsZW5kYXItYm9keS1jb21wYXJpc29uLWJyaWRnZS1zdGFydFtfbmdjb250ZW50LSVDT01QJV06OmJlZm9yZSwgLm1hdC1kYXRlcGlja2VyLWNvbnRlbnQubWF0LWFjY2VudFtfbmdjb250ZW50LSVDT01QJV0gICBbZGlyPXJ0bF1bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1jYWxlbmRhci1ib2R5LWNvbXBhcmlzb24tYnJpZGdlLWVuZFtfbmdjb250ZW50LSVDT01QJV06OmJlZm9yZXtiYWNrZ3JvdW5kOmxpbmVhci1ncmFkaWVudCh0byByaWdodCwgcmdiYSgyNTUsIDE1MiwgMCwgMC4yKSA1MCUsIHJnYmEoMjQ5LCAxNzEsIDAsIDAuMikgNTAlKX0ubWF0LWRhdGVwaWNrZXItY29udGVudC5tYXQtYWNjZW50W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtY2FsZW5kYXItYm9keS1jb21wYXJpc29uLWJyaWRnZS1lbmRbX25nY29udGVudC0lQ09NUCVdOjpiZWZvcmUsIC5tYXQtZGF0ZXBpY2tlci1jb250ZW50Lm1hdC1hY2NlbnRbX25nY29udGVudC0lQ09NUCVdICAgW2Rpcj1ydGxdW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtY2FsZW5kYXItYm9keS1jb21wYXJpc29uLWJyaWRnZS1zdGFydFtfbmdjb250ZW50LSVDT01QJV06OmJlZm9yZXtiYWNrZ3JvdW5kOmxpbmVhci1ncmFkaWVudCh0byBsZWZ0LCByZ2JhKDI1NSwgMTUyLCAwLCAwLjIpIDUwJSwgcmdiYSgyNDksIDE3MSwgMCwgMC4yKSA1MCUpfS5tYXQtZGF0ZXBpY2tlci1jb250ZW50Lm1hdC1hY2NlbnRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1jYWxlbmRhci1ib2R5LWluLXJhbmdlW19uZ2NvbnRlbnQtJUNPTVAlXSA+IC5tYXQtY2FsZW5kYXItYm9keS1jb21wYXJpc29uLWlkZW50aWNhbFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtZGF0ZXBpY2tlci1jb250ZW50Lm1hdC1hY2NlbnRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1jYWxlbmRhci1ib2R5LWluLWNvbXBhcmlzb24tcmFuZ2UubWF0LWNhbGVuZGFyLWJvZHktaW4tcmFuZ2VbX25nY29udGVudC0lQ09NUCVdOjphZnRlcntiYWNrZ3JvdW5kOiNhOGRhYjV9Lm1hdC1kYXRlcGlja2VyLWNvbnRlbnQubWF0LWFjY2VudFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWNhbGVuZGFyLWJvZHktY29tcGFyaXNvbi1pZGVudGljYWwubWF0LWNhbGVuZGFyLWJvZHktc2VsZWN0ZWRbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWRhdGVwaWNrZXItY29udGVudC5tYXQtYWNjZW50W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtY2FsZW5kYXItYm9keS1pbi1jb21wYXJpc29uLXJhbmdlW19uZ2NvbnRlbnQtJUNPTVAlXSA+IC5tYXQtY2FsZW5kYXItYm9keS1zZWxlY3RlZFtfbmdjb250ZW50LSVDT01QJV17YmFja2dyb3VuZDojNDZhMzVlfS5tYXQtZGF0ZXBpY2tlci1jb250ZW50Lm1hdC1hY2NlbnRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1jYWxlbmRhci1ib2R5LXNlbGVjdGVkW19uZ2NvbnRlbnQtJUNPTVAlXXtiYWNrZ3JvdW5kLWNvbG9yOiNmZjk4MDA7Y29sb3I6I2ZmZn0ubWF0LWRhdGVwaWNrZXItY29udGVudC5tYXQtYWNjZW50W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtY2FsZW5kYXItYm9keS1kaXNhYmxlZFtfbmdjb250ZW50LSVDT01QJV0gPiAubWF0LWNhbGVuZGFyLWJvZHktc2VsZWN0ZWRbX25nY29udGVudC0lQ09NUCVde2JhY2tncm91bmQtY29sb3I6cmdiYSgyNTUsMTUyLDAsLjQpfS5tYXQtZGF0ZXBpY2tlci1jb250ZW50Lm1hdC1hY2NlbnRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1jYWxlbmRhci1ib2R5LXRvZGF5Lm1hdC1jYWxlbmRhci1ib2R5LXNlbGVjdGVkW19uZ2NvbnRlbnQtJUNPTVAlXXtib3gtc2hhZG93Omluc2V0IDAgMCAwIDFweCAjZmZmfS5tYXQtZGF0ZXBpY2tlci1jb250ZW50Lm1hdC13YXJuW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtY2FsZW5kYXItYm9keS1pbi1yYW5nZVtfbmdjb250ZW50LSVDT01QJV06OmJlZm9yZXtiYWNrZ3JvdW5kOnJnYmEoMjQ0LDY3LDU0LC4yKX0ubWF0LWRhdGVwaWNrZXItY29udGVudC5tYXQtd2Fybltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWNhbGVuZGFyLWJvZHktY29tcGFyaXNvbi1pZGVudGljYWxbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWRhdGVwaWNrZXItY29udGVudC5tYXQtd2Fybltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWNhbGVuZGFyLWJvZHktaW4tY29tcGFyaXNvbi1yYW5nZVtfbmdjb250ZW50LSVDT01QJV06OmJlZm9yZXtiYWNrZ3JvdW5kOnJnYmEoMjQ5LDE3MSwwLC4yKX0ubWF0LWRhdGVwaWNrZXItY29udGVudC5tYXQtd2Fybltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWNhbGVuZGFyLWJvZHktY29tcGFyaXNvbi1icmlkZ2Utc3RhcnRbX25nY29udGVudC0lQ09NUCVdOjpiZWZvcmUsIC5tYXQtZGF0ZXBpY2tlci1jb250ZW50Lm1hdC13YXJuW19uZ2NvbnRlbnQtJUNPTVAlXSAgIFtkaXI9cnRsXVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWNhbGVuZGFyLWJvZHktY29tcGFyaXNvbi1icmlkZ2UtZW5kW19uZ2NvbnRlbnQtJUNPTVAlXTo6YmVmb3Jle2JhY2tncm91bmQ6bGluZWFyLWdyYWRpZW50KHRvIHJpZ2h0LCByZ2JhKDI0NCwgNjcsIDU0LCAwLjIpIDUwJSwgcmdiYSgyNDksIDE3MSwgMCwgMC4yKSA1MCUpfS5tYXQtZGF0ZXBpY2tlci1jb250ZW50Lm1hdC13YXJuW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtY2FsZW5kYXItYm9keS1jb21wYXJpc29uLWJyaWRnZS1lbmRbX25nY29udGVudC0lQ09NUCVdOjpiZWZvcmUsIC5tYXQtZGF0ZXBpY2tlci1jb250ZW50Lm1hdC13YXJuW19uZ2NvbnRlbnQtJUNPTVAlXSAgIFtkaXI9cnRsXVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWNhbGVuZGFyLWJvZHktY29tcGFyaXNvbi1icmlkZ2Utc3RhcnRbX25nY29udGVudC0lQ09NUCVdOjpiZWZvcmV7YmFja2dyb3VuZDpsaW5lYXItZ3JhZGllbnQodG8gbGVmdCwgcmdiYSgyNDQsIDY3LCA1NCwgMC4yKSA1MCUsIHJnYmEoMjQ5LCAxNzEsIDAsIDAuMikgNTAlKX0ubWF0LWRhdGVwaWNrZXItY29udGVudC5tYXQtd2Fybltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWNhbGVuZGFyLWJvZHktaW4tcmFuZ2VbX25nY29udGVudC0lQ09NUCVdID4gLm1hdC1jYWxlbmRhci1ib2R5LWNvbXBhcmlzb24taWRlbnRpY2FsW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1kYXRlcGlja2VyLWNvbnRlbnQubWF0LXdhcm5bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1jYWxlbmRhci1ib2R5LWluLWNvbXBhcmlzb24tcmFuZ2UubWF0LWNhbGVuZGFyLWJvZHktaW4tcmFuZ2VbX25nY29udGVudC0lQ09NUCVdOjphZnRlcntiYWNrZ3JvdW5kOiNhOGRhYjV9Lm1hdC1kYXRlcGlja2VyLWNvbnRlbnQubWF0LXdhcm5bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1jYWxlbmRhci1ib2R5LWNvbXBhcmlzb24taWRlbnRpY2FsLm1hdC1jYWxlbmRhci1ib2R5LXNlbGVjdGVkW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1kYXRlcGlja2VyLWNvbnRlbnQubWF0LXdhcm5bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1jYWxlbmRhci1ib2R5LWluLWNvbXBhcmlzb24tcmFuZ2VbX25nY29udGVudC0lQ09NUCVdID4gLm1hdC1jYWxlbmRhci1ib2R5LXNlbGVjdGVkW19uZ2NvbnRlbnQtJUNPTVAlXXtiYWNrZ3JvdW5kOiM0NmEzNWV9Lm1hdC1kYXRlcGlja2VyLWNvbnRlbnQubWF0LXdhcm5bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1jYWxlbmRhci1ib2R5LXNlbGVjdGVkW19uZ2NvbnRlbnQtJUNPTVAlXXtiYWNrZ3JvdW5kLWNvbG9yOiNmNDQzMzY7Y29sb3I6I2ZmZn0ubWF0LWRhdGVwaWNrZXItY29udGVudC5tYXQtd2Fybltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWNhbGVuZGFyLWJvZHktZGlzYWJsZWRbX25nY29udGVudC0lQ09NUCVdID4gLm1hdC1jYWxlbmRhci1ib2R5LXNlbGVjdGVkW19uZ2NvbnRlbnQtJUNPTVAlXXtiYWNrZ3JvdW5kLWNvbG9yOnJnYmEoMjQ0LDY3LDU0LC40KX0ubWF0LWRhdGVwaWNrZXItY29udGVudC5tYXQtd2Fybltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWNhbGVuZGFyLWJvZHktdG9kYXkubWF0LWNhbGVuZGFyLWJvZHktc2VsZWN0ZWRbX25nY29udGVudC0lQ09NUCVde2JveC1zaGFkb3c6aW5zZXQgMCAwIDAgMXB4ICNmZmZ9Lm1hdC1kYXRlcGlja2VyLWNvbnRlbnQtdG91Y2hbX25nY29udGVudC0lQ09NUCVde2JveC1zaGFkb3c6MHB4IDBweCAwcHggMHB4IHJnYmEoMCwgMCwgMCwgMC4yKSwwcHggMHB4IDBweCAwcHggcmdiYSgwLCAwLCAwLCAwLjE0KSwwcHggMHB4IDBweCAwcHggcmdiYSgwLCAwLCAwLCAwLjEyKX0ubWF0LWRhdGVwaWNrZXItdG9nZ2xlLWFjdGl2ZVtfbmdjb250ZW50LSVDT01QJV17Y29sb3I6I2Y1N2MwMH0ubWF0LWRhdGVwaWNrZXItdG9nZ2xlLWFjdGl2ZS5tYXQtYWNjZW50W19uZ2NvbnRlbnQtJUNPTVAlXXtjb2xvcjojZmY5ODAwfS5tYXQtZGF0ZXBpY2tlci10b2dnbGUtYWN0aXZlLm1hdC13YXJuW19uZ2NvbnRlbnQtJUNPTVAlXXtjb2xvcjojZjQ0MzM2fS5tYXQtZGF0ZS1yYW5nZS1pbnB1dC1pbm5lcltkaXNhYmxlZF1bX25nY29udGVudC0lQ09NUCVde2NvbG9yOiM3NTc1NzV9Lm1hdC1kaWFsb2ctY29udGFpbmVyW19uZ2NvbnRlbnQtJUNPTVAlXXtib3gtc2hhZG93OjBweCAxMXB4IDE1cHggLTdweCByZ2JhKDAsIDAsIDAsIDAuMiksMHB4IDI0cHggMzhweCAzcHggcmdiYSgwLCAwLCAwLCAwLjE0KSwwcHggOXB4IDQ2cHggOHB4IHJnYmEoMCwgMCwgMCwgMC4xMik7YmFja2dyb3VuZDojZmZmO2NvbG9yOiMyMTIxMjF9Lm1hdC1kaXZpZGVyW19uZ2NvbnRlbnQtJUNPTVAlXXtib3JkZXItdG9wLWNvbG9yOnJnYmEoMCwwLDAsLjEyKX0ubWF0LWRpdmlkZXItdmVydGljYWxbX25nY29udGVudC0lQ09NUCVde2JvcmRlci1yaWdodC1jb2xvcjpyZ2JhKDAsMCwwLC4xMil9Lm1hdC1leHBhbnNpb24tcGFuZWxbX25nY29udGVudC0lQ09NUCVde2JhY2tncm91bmQ6I2ZmZjtjb2xvcjojMjEyMTIxfS5tYXQtZXhwYW5zaW9uLXBhbmVsW19uZ2NvbnRlbnQtJUNPTVAlXTpub3QoW2NsYXNzKj1tYXQtZWxldmF0aW9uLXpdKXtib3gtc2hhZG93OjBweCAzcHggMXB4IC0ycHggcmdiYSgwLCAwLCAwLCAwLjIpLDBweCAycHggMnB4IDBweCByZ2JhKDAsIDAsIDAsIDAuMTQpLDBweCAxcHggNXB4IDBweCByZ2JhKDAsIDAsIDAsIDAuMTIpfS5tYXQtYWN0aW9uLXJvd1tfbmdjb250ZW50LSVDT01QJV17Ym9yZGVyLXRvcC1jb2xvcjpyZ2JhKDAsMCwwLC4xMil9Lm1hdC1leHBhbnNpb24tcGFuZWxbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1leHBhbnNpb24tcGFuZWwtaGVhZGVyLmNkay1rZXlib2FyZC1mb2N1c2VkW19uZ2NvbnRlbnQtJUNPTVAlXTpub3QoW2FyaWEtZGlzYWJsZWQ9dHJ1ZV0pLCAubWF0LWV4cGFuc2lvbi1wYW5lbFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWV4cGFuc2lvbi1wYW5lbC1oZWFkZXIuY2RrLXByb2dyYW0tZm9jdXNlZFtfbmdjb250ZW50LSVDT01QJV06bm90KFthcmlhLWRpc2FibGVkPXRydWVdKSwgLm1hdC1leHBhbnNpb24tcGFuZWxbX25nY29udGVudC0lQ09NUCVdOm5vdCgubWF0LWV4cGFuZGVkKSAgIC5tYXQtZXhwYW5zaW9uLXBhbmVsLWhlYWRlcltfbmdjb250ZW50LSVDT01QJV06aG92ZXI6bm90KFthcmlhLWRpc2FibGVkPXRydWVdKXtiYWNrZ3JvdW5kOnJnYmEoMCwwLDAsLjA0KX1AbWVkaWEoaG92ZXI6IG5vbmUpey5tYXQtZXhwYW5zaW9uLXBhbmVsW19uZ2NvbnRlbnQtJUNPTVAlXTpub3QoLm1hdC1leHBhbmRlZCk6bm90KFthcmlhLWRpc2FibGVkPXRydWVdKSAgIC5tYXQtZXhwYW5zaW9uLXBhbmVsLWhlYWRlcltfbmdjb250ZW50LSVDT01QJV06aG92ZXJ7YmFja2dyb3VuZDojZmZmfX0ubWF0LWV4cGFuc2lvbi1wYW5lbC1oZWFkZXItdGl0bGVbX25nY29udGVudC0lQ09NUCVde2NvbG9yOiMyMTIxMjF9Lm1hdC1leHBhbnNpb24tcGFuZWwtaGVhZGVyLWRlc2NyaXB0aW9uW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1leHBhbnNpb24taW5kaWNhdG9yW19uZ2NvbnRlbnQtJUNPTVAlXTo6YWZ0ZXJ7Y29sb3I6IzYxNjE2MX0ubWF0LWV4cGFuc2lvbi1wYW5lbC1oZWFkZXJbYXJpYS1kaXNhYmxlZD10cnVlXVtfbmdjb250ZW50LSVDT01QJV17Y29sb3I6cmdiYSgwLDAsMCwuMjYpfS5tYXQtZXhwYW5zaW9uLXBhbmVsLWhlYWRlclthcmlhLWRpc2FibGVkPXRydWVdW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZXhwYW5zaW9uLXBhbmVsLWhlYWRlci10aXRsZVtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtZXhwYW5zaW9uLXBhbmVsLWhlYWRlclthcmlhLWRpc2FibGVkPXRydWVdW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZXhwYW5zaW9uLXBhbmVsLWhlYWRlci1kZXNjcmlwdGlvbltfbmdjb250ZW50LSVDT01QJV17Y29sb3I6aW5oZXJpdH0ubWF0LWV4cGFuc2lvbi1wYW5lbC1oZWFkZXJbX25nY29udGVudC0lQ09NUCVde2hlaWdodDo0OHB4fS5tYXQtZXhwYW5zaW9uLXBhbmVsLWhlYWRlci5tYXQtZXhwYW5kZWRbX25nY29udGVudC0lQ09NUCVde2hlaWdodDo2NHB4fS5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17Y29sb3I6cmdiYSg5Nyw5Nyw5NywuNil9Lm1hdC1oaW50W19uZ2NvbnRlbnQtJUNPTVAlXXtjb2xvcjpyZ2JhKDk3LDk3LDk3LC42KX0ubWF0LWZvcm0tZmllbGQubWF0LWZvY3VzZWRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXtjb2xvcjojZjU3YzAwfS5tYXQtZm9ybS1maWVsZC5tYXQtZm9jdXNlZFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWwubWF0LWFjY2VudFtfbmdjb250ZW50LSVDT01QJV17Y29sb3I6I2ZmOTgwMH0ubWF0LWZvcm0tZmllbGQubWF0LWZvY3VzZWRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsLm1hdC13YXJuW19uZ2NvbnRlbnQtJUNPTVAlXXtjb2xvcjojZjQ0MzM2fS5tYXQtZm9jdXNlZFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtcmVxdWlyZWQtbWFya2VyW19uZ2NvbnRlbnQtJUNPTVAlXXtjb2xvcjojZmY5ODAwfS5tYXQtZm9ybS1maWVsZC1yaXBwbGVbX25nY29udGVudC0lQ09NUCVde2JhY2tncm91bmQtY29sb3I6cmdiYSgwLDAsMCwuODcpfS5tYXQtZm9ybS1maWVsZC5tYXQtZm9jdXNlZFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtcmlwcGxlW19uZ2NvbnRlbnQtJUNPTVAlXXtiYWNrZ3JvdW5kLWNvbG9yOiNmNTdjMDB9Lm1hdC1mb3JtLWZpZWxkLm1hdC1mb2N1c2VkW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1yaXBwbGUubWF0LWFjY2VudFtfbmdjb250ZW50LSVDT01QJV17YmFja2dyb3VuZC1jb2xvcjojZmY5ODAwfS5tYXQtZm9ybS1maWVsZC5tYXQtZm9jdXNlZFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtcmlwcGxlLm1hdC13YXJuW19uZ2NvbnRlbnQtJUNPTVAlXXtiYWNrZ3JvdW5kLWNvbG9yOiNmNDQzMzZ9Lm1hdC1mb3JtLWZpZWxkLXR5cGUtbWF0LW5hdGl2ZS1zZWxlY3QubWF0LWZvY3VzZWRbX25nY29udGVudC0lQ09NUCVdOm5vdCgubWF0LWZvcm0tZmllbGQtaW52YWxpZCkgICAubWF0LWZvcm0tZmllbGQtaW5maXhbX25nY29udGVudC0lQ09NUCVdOjphZnRlcntjb2xvcjojZjU3YzAwfS5tYXQtZm9ybS1maWVsZC10eXBlLW1hdC1uYXRpdmUtc2VsZWN0Lm1hdC1mb2N1c2VkW19uZ2NvbnRlbnQtJUNPTVAlXTpub3QoLm1hdC1mb3JtLWZpZWxkLWludmFsaWQpLm1hdC1hY2NlbnQgICAubWF0LWZvcm0tZmllbGQtaW5maXhbX25nY29udGVudC0lQ09NUCVdOjphZnRlcntjb2xvcjojZmY5ODAwfS5tYXQtZm9ybS1maWVsZC10eXBlLW1hdC1uYXRpdmUtc2VsZWN0Lm1hdC1mb2N1c2VkW19uZ2NvbnRlbnQtJUNPTVAlXTpub3QoLm1hdC1mb3JtLWZpZWxkLWludmFsaWQpLm1hdC13YXJuICAgLm1hdC1mb3JtLWZpZWxkLWluZml4W19uZ2NvbnRlbnQtJUNPTVAlXTo6YWZ0ZXJ7Y29sb3I6I2Y0NDMzNn0ubWF0LWZvcm0tZmllbGQubWF0LWZvcm0tZmllbGQtaW52YWxpZFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVde2NvbG9yOiNmNDQzMzZ9Lm1hdC1mb3JtLWZpZWxkLm1hdC1mb3JtLWZpZWxkLWludmFsaWRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsLm1hdC1hY2NlbnRbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWZvcm0tZmllbGQubWF0LWZvcm0tZmllbGQtaW52YWxpZFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLXJlcXVpcmVkLW1hcmtlcltfbmdjb250ZW50LSVDT01QJV17Y29sb3I6I2Y0NDMzNn0ubWF0LWZvcm0tZmllbGQubWF0LWZvcm0tZmllbGQtaW52YWxpZFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtcmlwcGxlW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1mb3JtLWZpZWxkLm1hdC1mb3JtLWZpZWxkLWludmFsaWRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLXJpcHBsZS5tYXQtYWNjZW50W19uZ2NvbnRlbnQtJUNPTVAlXXtiYWNrZ3JvdW5kLWNvbG9yOiNmNDQzMzZ9Lm1hdC1lcnJvcltfbmdjb250ZW50LSVDT01QJV17Y29sb3I6I2Y0NDMzNn0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1sZWdhY3lbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXtjb2xvcjojNjE2MTYxfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWxlZ2FjeVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWhpbnRbX25nY29udGVudC0lQ09NUCVde2NvbG9yOiM2MTYxNjF9Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtbGVnYWN5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC11bmRlcmxpbmVbX25nY29udGVudC0lQ09NUCVde2JhY2tncm91bmQtY29sb3I6cmdiYSgwLDAsMCwuNDIpfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWxlZ2FjeS5tYXQtZm9ybS1maWVsZC1kaXNhYmxlZFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtdW5kZXJsaW5lW19uZ2NvbnRlbnQtJUNPTVAlXXtiYWNrZ3JvdW5kLWltYWdlOmxpbmVhci1ncmFkaWVudCh0byByaWdodCwgcmdiYSgwLCAwLCAwLCAwLjQyKSAwJSwgcmdiYSgwLCAwLCAwLCAwLjQyKSAzMyUsIHRyYW5zcGFyZW50IDAlKTtiYWNrZ3JvdW5kLXNpemU6NHB4IDEwMCU7YmFja2dyb3VuZC1yZXBlYXQ6cmVwZWF0LXh9Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2Utc3RhbmRhcmRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLXVuZGVybGluZVtfbmdjb250ZW50LSVDT01QJV17YmFja2dyb3VuZC1jb2xvcjpyZ2JhKDAsMCwwLC40Mil9Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2Utc3RhbmRhcmQubWF0LWZvcm0tZmllbGQtZGlzYWJsZWRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLXVuZGVybGluZVtfbmdjb250ZW50LSVDT01QJV17YmFja2dyb3VuZC1pbWFnZTpsaW5lYXItZ3JhZGllbnQodG8gcmlnaHQsIHJnYmEoMCwgMCwgMCwgMC40MikgMCUsIHJnYmEoMCwgMCwgMCwgMC40MikgMzMlLCB0cmFuc3BhcmVudCAwJSk7YmFja2dyb3VuZC1zaXplOjRweCAxMDAlO2JhY2tncm91bmQtcmVwZWF0OnJlcGVhdC14fS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWZpbGxbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWZsZXhbX25nY29udGVudC0lQ09NUCVde2JhY2tncm91bmQtY29sb3I6cmdiYSgwLDAsMCwuMDQpfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWZpbGwubWF0LWZvcm0tZmllbGQtZGlzYWJsZWRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWZsZXhbX25nY29udGVudC0lQ09NUCVde2JhY2tncm91bmQtY29sb3I6cmdiYSgwLDAsMCwuMDIpfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWZpbGxbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLXVuZGVybGluZVtfbmdjb250ZW50LSVDT01QJV06OmJlZm9yZXtiYWNrZ3JvdW5kLWNvbG9yOnJnYmEoMCwwLDAsLjQyKX0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1maWxsLm1hdC1mb3JtLWZpZWxkLWRpc2FibGVkW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17Y29sb3I6Izc1NzU3NX0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1maWxsLm1hdC1mb3JtLWZpZWxkLWRpc2FibGVkW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC11bmRlcmxpbmVbX25nY29udGVudC0lQ09NUCVdOjpiZWZvcmV7YmFja2dyb3VuZC1jb2xvcjp0cmFuc3BhcmVudH0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1vdXRsaW5lW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1vdXRsaW5lW19uZ2NvbnRlbnQtJUNPTVAlXXtjb2xvcjpyZ2JhKDAsMCwwLC4xMil9Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2Utb3V0bGluZVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtb3V0bGluZS10aGlja1tfbmdjb250ZW50LSVDT01QJV17Y29sb3I6cmdiYSgwLDAsMCwuODcpfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLW91dGxpbmUubWF0LWZvY3VzZWRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLW91dGxpbmUtdGhpY2tbX25nY29udGVudC0lQ09NUCVde2NvbG9yOiNmNTdjMDB9Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2Utb3V0bGluZS5tYXQtZm9jdXNlZC5tYXQtYWNjZW50W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1vdXRsaW5lLXRoaWNrW19uZ2NvbnRlbnQtJUNPTVAlXXtjb2xvcjojZmY5ODAwfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLW91dGxpbmUubWF0LWZvY3VzZWQubWF0LXdhcm5bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLW91dGxpbmUtdGhpY2tbX25nY29udGVudC0lQ09NUCVde2NvbG9yOiNmNDQzMzZ9Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2Utb3V0bGluZS5tYXQtZm9ybS1maWVsZC1pbnZhbGlkLm1hdC1mb3JtLWZpZWxkLWludmFsaWRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLW91dGxpbmUtdGhpY2tbX25nY29udGVudC0lQ09NUCVde2NvbG9yOiNmNDQzMzZ9Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2Utb3V0bGluZS5tYXQtZm9ybS1maWVsZC1kaXNhYmxlZFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVde2NvbG9yOiM3NTc1NzV9Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2Utb3V0bGluZS5tYXQtZm9ybS1maWVsZC1kaXNhYmxlZFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtb3V0bGluZVtfbmdjb250ZW50LSVDT01QJV17Y29sb3I6cmdiYSgwLDAsMCwuMDYpfS5tYXQtaWNvbi5tYXQtcHJpbWFyeVtfbmdjb250ZW50LSVDT01QJV17Y29sb3I6I2Y1N2MwMH0ubWF0LWljb24ubWF0LWFjY2VudFtfbmdjb250ZW50LSVDT01QJV17Y29sb3I6I2ZmOTgwMH0ubWF0LWljb24ubWF0LXdhcm5bX25nY29udGVudC0lQ09NUCVde2NvbG9yOiNmNDQzMzZ9Lm1hdC1mb3JtLWZpZWxkLXR5cGUtbWF0LW5hdGl2ZS1zZWxlY3RbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWluZml4W19uZ2NvbnRlbnQtJUNPTVAlXTo6YWZ0ZXJ7Y29sb3I6IzYxNjE2MX0ubWF0LWlucHV0LWVsZW1lbnRbX25nY29udGVudC0lQ09NUCVdOmRpc2FibGVkLCAubWF0LWZvcm0tZmllbGQtdHlwZS1tYXQtbmF0aXZlLXNlbGVjdC5tYXQtZm9ybS1maWVsZC1kaXNhYmxlZFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtaW5maXhbX25nY29udGVudC0lQ09NUCVdOjphZnRlcntjb2xvcjojNzU3NTc1fS5tYXQtaW5wdXQtZWxlbWVudFtfbmdjb250ZW50LSVDT01QJV17Y2FyZXQtY29sb3I6I2Y1N2MwMH0ubWF0LWlucHV0LWVsZW1lbnRbX25nY29udGVudC0lQ09NUCVdOjpwbGFjZWhvbGRlcntjb2xvcjpyZ2JhKDk3LDk3LDk3LC40Mil9Lm1hdC1pbnB1dC1lbGVtZW50W19uZ2NvbnRlbnQtJUNPTVAlXTo6LW1vei1wbGFjZWhvbGRlcntjb2xvcjpyZ2JhKDk3LDk3LDk3LC40Mil9Lm1hdC1pbnB1dC1lbGVtZW50W19uZ2NvbnRlbnQtJUNPTVAlXTo6LXdlYmtpdC1pbnB1dC1wbGFjZWhvbGRlcntjb2xvcjpyZ2JhKDk3LDk3LDk3LC40Mil9Lm1hdC1pbnB1dC1lbGVtZW50W19uZ2NvbnRlbnQtJUNPTVAlXTotbXMtaW5wdXQtcGxhY2Vob2xkZXJ7Y29sb3I6cmdiYSg5Nyw5Nyw5NywuNDIpfS5tYXQtZm9ybS1maWVsZC5tYXQtYWNjZW50W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaW5wdXQtZWxlbWVudFtfbmdjb250ZW50LSVDT01QJV17Y2FyZXQtY29sb3I6I2ZmOTgwMH0ubWF0LWZvcm0tZmllbGQubWF0LXdhcm5bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pbnB1dC1lbGVtZW50W19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1mb3JtLWZpZWxkLWludmFsaWRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pbnB1dC1lbGVtZW50W19uZ2NvbnRlbnQtJUNPTVAlXXtjYXJldC1jb2xvcjojZjQ0MzM2fS5tYXQtZm9ybS1maWVsZC10eXBlLW1hdC1uYXRpdmUtc2VsZWN0Lm1hdC1mb3JtLWZpZWxkLWludmFsaWRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWluZml4W19uZ2NvbnRlbnQtJUNPTVAlXTo6YWZ0ZXJ7Y29sb3I6I2Y0NDMzNn0ubWF0LWxpc3QtYmFzZVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpc3QtaXRlbVtfbmdjb250ZW50LSVDT01QJV17Y29sb3I6IzIxMjEyMX0ubWF0LWxpc3QtYmFzZVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpc3Qtb3B0aW9uW19uZ2NvbnRlbnQtJUNPTVAlXXtjb2xvcjojMjEyMTIxfS5tYXQtbGlzdC1iYXNlW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtc3ViaGVhZGVyW19uZ2NvbnRlbnQtJUNPTVAlXXtjb2xvcjojNjE2MTYxfS5tYXQtbGlzdC1pdGVtLWRpc2FibGVkW19uZ2NvbnRlbnQtJUNPTVAlXXtiYWNrZ3JvdW5kLWNvbG9yOiNlZWV9Lm1hdC1saXN0LW9wdGlvbltfbmdjb250ZW50LSVDT01QJV06aG92ZXIsIC5tYXQtbGlzdC1vcHRpb25bX25nY29udGVudC0lQ09NUCVdOmZvY3VzLCAubWF0LW5hdi1saXN0W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGlzdC1pdGVtW19uZ2NvbnRlbnQtJUNPTVAlXTpob3ZlciwgLm1hdC1uYXYtbGlzdFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpc3QtaXRlbVtfbmdjb250ZW50LSVDT01QJV06Zm9jdXMsIC5tYXQtYWN0aW9uLWxpc3RbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saXN0LWl0ZW1bX25nY29udGVudC0lQ09NUCVdOmhvdmVyLCAubWF0LWFjdGlvbi1saXN0W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGlzdC1pdGVtW19uZ2NvbnRlbnQtJUNPTVAlXTpmb2N1c3tiYWNrZ3JvdW5kOnJnYmEoMCwwLDAsLjA0KX0ubWF0LWxpc3Qtc2luZ2xlLXNlbGVjdGVkLW9wdGlvbltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtbGlzdC1zaW5nbGUtc2VsZWN0ZWQtb3B0aW9uW19uZ2NvbnRlbnQtJUNPTVAlXTpob3ZlciwgLm1hdC1saXN0LXNpbmdsZS1zZWxlY3RlZC1vcHRpb25bX25nY29udGVudC0lQ09NUCVdOmZvY3Vze2JhY2tncm91bmQ6cmdiYSgwLDAsMCwuMTIpfS5tYXQtbWVudS1wYW5lbFtfbmdjb250ZW50LSVDT01QJV17YmFja2dyb3VuZDojZmZmfS5tYXQtbWVudS1wYW5lbFtfbmdjb250ZW50LSVDT01QJV06bm90KFtjbGFzcyo9bWF0LWVsZXZhdGlvbi16XSl7Ym94LXNoYWRvdzowcHggMnB4IDRweCAtMXB4IHJnYmEoMCwgMCwgMCwgMC4yKSwwcHggNHB4IDVweCAwcHggcmdiYSgwLCAwLCAwLCAwLjE0KSwwcHggMXB4IDEwcHggMHB4IHJnYmEoMCwgMCwgMCwgMC4xMil9Lm1hdC1tZW51LWl0ZW1bX25nY29udGVudC0lQ09NUCVde2JhY2tncm91bmQ6dHJhbnNwYXJlbnQ7Y29sb3I6IzIxMjEyMX0ubWF0LW1lbnUtaXRlbVtkaXNhYmxlZF1bX25nY29udGVudC0lQ09NUCVdLCAubWF0LW1lbnUtaXRlbVtkaXNhYmxlZF1bX25nY29udGVudC0lQ09NUCVdOjphZnRlcntjb2xvcjpyZ2JhKDAsMCwwLC4zOCl9Lm1hdC1tZW51LWl0ZW1bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pY29uLW5vLWNvbG9yW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1tZW51LWl0ZW0tc3VibWVudS10cmlnZ2VyW19uZ2NvbnRlbnQtJUNPTVAlXTo6YWZ0ZXJ7Y29sb3I6cmdiYSgwLDAsMCwuNTQpfS5tYXQtbWVudS1pdGVtW19uZ2NvbnRlbnQtJUNPTVAlXTpob3Zlcjpub3QoW2Rpc2FibGVkXSksIC5tYXQtbWVudS1pdGVtLmNkay1wcm9ncmFtLWZvY3VzZWRbX25nY29udGVudC0lQ09NUCVdOm5vdChbZGlzYWJsZWRdKSwgLm1hdC1tZW51LWl0ZW0uY2RrLWtleWJvYXJkLWZvY3VzZWRbX25nY29udGVudC0lQ09NUCVdOm5vdChbZGlzYWJsZWRdKSwgLm1hdC1tZW51LWl0ZW0taGlnaGxpZ2h0ZWRbX25nY29udGVudC0lQ09NUCVdOm5vdChbZGlzYWJsZWRdKXtiYWNrZ3JvdW5kOnJnYmEoMCwwLDAsLjA0KX0ubWF0LXBhZ2luYXRvcltfbmdjb250ZW50LSVDT01QJV17YmFja2dyb3VuZDojZmZmfS5tYXQtcGFnaW5hdG9yW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1wYWdpbmF0b3ItcGFnZS1zaXplW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtc2VsZWN0LXRyaWdnZXJbX25nY29udGVudC0lQ09NUCVde2NvbG9yOiM2MTYxNjF9Lm1hdC1wYWdpbmF0b3ItZGVjcmVtZW50W19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1wYWdpbmF0b3ItaW5jcmVtZW50W19uZ2NvbnRlbnQtJUNPTVAlXXtib3JkZXItdG9wOjJweCBzb2xpZCByZ2JhKDAsMCwwLC41NCk7Ym9yZGVyLXJpZ2h0OjJweCBzb2xpZCByZ2JhKDAsMCwwLC41NCl9Lm1hdC1wYWdpbmF0b3ItZmlyc3RbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXBhZ2luYXRvci1sYXN0W19uZ2NvbnRlbnQtJUNPTVAlXXtib3JkZXItdG9wOjJweCBzb2xpZCByZ2JhKDAsMCwwLC41NCl9Lm1hdC1pY29uLWJ1dHRvbltkaXNhYmxlZF1bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1wYWdpbmF0b3ItZGVjcmVtZW50W19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1pY29uLWJ1dHRvbltkaXNhYmxlZF1bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1wYWdpbmF0b3ItaW5jcmVtZW50W19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1pY29uLWJ1dHRvbltkaXNhYmxlZF1bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1wYWdpbmF0b3ItZmlyc3RbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWljb24tYnV0dG9uW2Rpc2FibGVkXVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXBhZ2luYXRvci1sYXN0W19uZ2NvbnRlbnQtJUNPTVAlXXtib3JkZXItY29sb3I6cmdiYSgwLDAsMCwuMzgpfS5tYXQtcGFnaW5hdG9yLWNvbnRhaW5lcltfbmdjb250ZW50LSVDT01QJV17bWluLWhlaWdodDo1NnB4fS5tYXQtcHJvZ3Jlc3MtYmFyLWJhY2tncm91bmRbX25nY29udGVudC0lQ09NUCVde2ZpbGw6I2ZmOTgwMH0ubWF0LXByb2dyZXNzLWJhci1idWZmZXJbX25nY29udGVudC0lQ09NUCVde2JhY2tncm91bmQtY29sb3I6I2ZmOTgwMH0ubWF0LXByb2dyZXNzLWJhci1maWxsW19uZ2NvbnRlbnQtJUNPTVAlXTo6YWZ0ZXJ7YmFja2dyb3VuZC1jb2xvcjojZjU3YzAwfS5tYXQtcHJvZ3Jlc3MtYmFyLm1hdC1hY2NlbnRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1wcm9ncmVzcy1iYXItYmFja2dyb3VuZFtfbmdjb250ZW50LSVDT01QJV17ZmlsbDojZmY5ODAwfS5tYXQtcHJvZ3Jlc3MtYmFyLm1hdC1hY2NlbnRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1wcm9ncmVzcy1iYXItYnVmZmVyW19uZ2NvbnRlbnQtJUNPTVAlXXtiYWNrZ3JvdW5kLWNvbG9yOiNmZjk4MDB9Lm1hdC1wcm9ncmVzcy1iYXIubWF0LWFjY2VudFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXByb2dyZXNzLWJhci1maWxsW19uZ2NvbnRlbnQtJUNPTVAlXTo6YWZ0ZXJ7YmFja2dyb3VuZC1jb2xvcjojZmY5ODAwfS5tYXQtcHJvZ3Jlc3MtYmFyLm1hdC13YXJuW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtcHJvZ3Jlc3MtYmFyLWJhY2tncm91bmRbX25nY29udGVudC0lQ09NUCVde2ZpbGw6I2ZmY2RkMn0ubWF0LXByb2dyZXNzLWJhci5tYXQtd2Fybltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXByb2dyZXNzLWJhci1idWZmZXJbX25nY29udGVudC0lQ09NUCVde2JhY2tncm91bmQtY29sb3I6I2ZmY2RkMn0ubWF0LXByb2dyZXNzLWJhci5tYXQtd2Fybltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXByb2dyZXNzLWJhci1maWxsW19uZ2NvbnRlbnQtJUNPTVAlXTo6YWZ0ZXJ7YmFja2dyb3VuZC1jb2xvcjojZjQ0MzM2fS5tYXQtcHJvZ3Jlc3Mtc3Bpbm5lcltfbmdjb250ZW50LSVDT01QJV0gICBjaXJjbGVbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXNwaW5uZXJbX25nY29udGVudC0lQ09NUCVdICAgY2lyY2xlW19uZ2NvbnRlbnQtJUNPTVAlXXtzdHJva2U6I2Y1N2MwMH0ubWF0LXByb2dyZXNzLXNwaW5uZXIubWF0LWFjY2VudFtfbmdjb250ZW50LSVDT01QJV0gICBjaXJjbGVbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXNwaW5uZXIubWF0LWFjY2VudFtfbmdjb250ZW50LSVDT01QJV0gICBjaXJjbGVbX25nY29udGVudC0lQ09NUCVde3N0cm9rZTojZmY5ODAwfS5tYXQtcHJvZ3Jlc3Mtc3Bpbm5lci5tYXQtd2Fybltfbmdjb250ZW50LSVDT01QJV0gICBjaXJjbGVbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXNwaW5uZXIubWF0LXdhcm5bX25nY29udGVudC0lQ09NUCVdICAgY2lyY2xlW19uZ2NvbnRlbnQtJUNPTVAlXXtzdHJva2U6I2Y0NDMzNn0ubWF0LXJhZGlvLW91dGVyLWNpcmNsZVtfbmdjb250ZW50LSVDT01QJV17Ym9yZGVyLWNvbG9yOiM2MTYxNjF9Lm1hdC1yYWRpby1idXR0b24ubWF0LXByaW1hcnkubWF0LXJhZGlvLWNoZWNrZWRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1yYWRpby1vdXRlci1jaXJjbGVbX25nY29udGVudC0lQ09NUCVde2JvcmRlci1jb2xvcjojZjU3YzAwfS5tYXQtcmFkaW8tYnV0dG9uLm1hdC1wcmltYXJ5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtcmFkaW8taW5uZXItY2lyY2xlW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1yYWRpby1idXR0b24ubWF0LXByaW1hcnlbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1yYWRpby1yaXBwbGVbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1yaXBwbGUtZWxlbWVudFtfbmdjb250ZW50LSVDT01QJV06bm90KC5tYXQtcmFkaW8tcGVyc2lzdGVudC1yaXBwbGUpLCAubWF0LXJhZGlvLWJ1dHRvbi5tYXQtcHJpbWFyeS5tYXQtcmFkaW8tY2hlY2tlZFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXJhZGlvLXBlcnNpc3RlbnQtcmlwcGxlW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1yYWRpby1idXR0b24ubWF0LXByaW1hcnlbX25nY29udGVudC0lQ09NUCVdOmFjdGl2ZSAgIC5tYXQtcmFkaW8tcGVyc2lzdGVudC1yaXBwbGVbX25nY29udGVudC0lQ09NUCVde2JhY2tncm91bmQtY29sb3I6I2Y1N2MwMH0ubWF0LXJhZGlvLWJ1dHRvbi5tYXQtYWNjZW50Lm1hdC1yYWRpby1jaGVja2VkW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtcmFkaW8tb3V0ZXItY2lyY2xlW19uZ2NvbnRlbnQtJUNPTVAlXXtib3JkZXItY29sb3I6I2ZmOTgwMH0ubWF0LXJhZGlvLWJ1dHRvbi5tYXQtYWNjZW50W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtcmFkaW8taW5uZXItY2lyY2xlW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1yYWRpby1idXR0b24ubWF0LWFjY2VudFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXJhZGlvLXJpcHBsZVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXJpcHBsZS1lbGVtZW50W19uZ2NvbnRlbnQtJUNPTVAlXTpub3QoLm1hdC1yYWRpby1wZXJzaXN0ZW50LXJpcHBsZSksIC5tYXQtcmFkaW8tYnV0dG9uLm1hdC1hY2NlbnQubWF0LXJhZGlvLWNoZWNrZWRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1yYWRpby1wZXJzaXN0ZW50LXJpcHBsZVtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtcmFkaW8tYnV0dG9uLm1hdC1hY2NlbnRbX25nY29udGVudC0lQ09NUCVdOmFjdGl2ZSAgIC5tYXQtcmFkaW8tcGVyc2lzdGVudC1yaXBwbGVbX25nY29udGVudC0lQ09NUCVde2JhY2tncm91bmQtY29sb3I6I2ZmOTgwMH0ubWF0LXJhZGlvLWJ1dHRvbi5tYXQtd2Fybi5tYXQtcmFkaW8tY2hlY2tlZFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXJhZGlvLW91dGVyLWNpcmNsZVtfbmdjb250ZW50LSVDT01QJV17Ym9yZGVyLWNvbG9yOiNmNDQzMzZ9Lm1hdC1yYWRpby1idXR0b24ubWF0LXdhcm5bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1yYWRpby1pbm5lci1jaXJjbGVbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXJhZGlvLWJ1dHRvbi5tYXQtd2Fybltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXJhZGlvLXJpcHBsZVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXJpcHBsZS1lbGVtZW50W19uZ2NvbnRlbnQtJUNPTVAlXTpub3QoLm1hdC1yYWRpby1wZXJzaXN0ZW50LXJpcHBsZSksIC5tYXQtcmFkaW8tYnV0dG9uLm1hdC13YXJuLm1hdC1yYWRpby1jaGVja2VkW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtcmFkaW8tcGVyc2lzdGVudC1yaXBwbGVbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXJhZGlvLWJ1dHRvbi5tYXQtd2Fybltfbmdjb250ZW50LSVDT01QJV06YWN0aXZlICAgLm1hdC1yYWRpby1wZXJzaXN0ZW50LXJpcHBsZVtfbmdjb250ZW50LSVDT01QJV17YmFja2dyb3VuZC1jb2xvcjojZjQ0MzM2fS5tYXQtcmFkaW8tYnV0dG9uLm1hdC1yYWRpby1kaXNhYmxlZC5tYXQtcmFkaW8tY2hlY2tlZFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXJhZGlvLW91dGVyLWNpcmNsZVtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtcmFkaW8tYnV0dG9uLm1hdC1yYWRpby1kaXNhYmxlZFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXJhZGlvLW91dGVyLWNpcmNsZVtfbmdjb250ZW50LSVDT01QJV17Ym9yZGVyLWNvbG9yOnJnYmEoMCwwLDAsLjM4KX0ubWF0LXJhZGlvLWJ1dHRvbi5tYXQtcmFkaW8tZGlzYWJsZWRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1yYWRpby1yaXBwbGVbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1yaXBwbGUtZWxlbWVudFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtcmFkaW8tYnV0dG9uLm1hdC1yYWRpby1kaXNhYmxlZFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXJhZGlvLWlubmVyLWNpcmNsZVtfbmdjb250ZW50LSVDT01QJV17YmFja2dyb3VuZC1jb2xvcjpyZ2JhKDAsMCwwLC4zOCl9Lm1hdC1yYWRpby1idXR0b24ubWF0LXJhZGlvLWRpc2FibGVkW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtcmFkaW8tbGFiZWwtY29udGVudFtfbmdjb250ZW50LSVDT01QJV17Y29sb3I6cmdiYSgwLDAsMCwuMzgpfS5tYXQtcmFkaW8tYnV0dG9uW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtcmlwcGxlLWVsZW1lbnRbX25nY29udGVudC0lQ09NUCVde2JhY2tncm91bmQtY29sb3I6IzAwMH0ubWF0LXNlbGVjdC12YWx1ZVtfbmdjb250ZW50LSVDT01QJV17Y29sb3I6IzIxMjEyMX0ubWF0LXNlbGVjdC1wbGFjZWhvbGRlcltfbmdjb250ZW50LSVDT01QJV17Y29sb3I6cmdiYSg5Nyw5Nyw5NywuNDIpfS5tYXQtc2VsZWN0LWRpc2FibGVkW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtc2VsZWN0LXZhbHVlW19uZ2NvbnRlbnQtJUNPTVAlXXtjb2xvcjojNzU3NTc1fS5tYXQtc2VsZWN0LWFycm93W19uZ2NvbnRlbnQtJUNPTVAlXXtjb2xvcjojNjE2MTYxfS5tYXQtc2VsZWN0LXBhbmVsW19uZ2NvbnRlbnQtJUNPTVAlXXtiYWNrZ3JvdW5kOiNmZmZ9Lm1hdC1zZWxlY3QtcGFuZWxbX25nY29udGVudC0lQ09NUCVdOm5vdChbY2xhc3MqPW1hdC1lbGV2YXRpb24tel0pe2JveC1zaGFkb3c6MHB4IDJweCA0cHggLTFweCByZ2JhKDAsIDAsIDAsIDAuMiksMHB4IDRweCA1cHggMHB4IHJnYmEoMCwgMCwgMCwgMC4xNCksMHB4IDFweCAxMHB4IDBweCByZ2JhKDAsIDAsIDAsIDAuMTIpfS5tYXQtc2VsZWN0LXBhbmVsW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtb3B0aW9uLm1hdC1zZWxlY3RlZFtfbmdjb250ZW50LSVDT01QJV06bm90KC5tYXQtb3B0aW9uLW11bHRpcGxlKXtiYWNrZ3JvdW5kOnJnYmEoMCwwLDAsLjEyKX0ubWF0LWZvcm0tZmllbGQubWF0LWZvY3VzZWQubWF0LXByaW1hcnlbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1zZWxlY3QtYXJyb3dbX25nY29udGVudC0lQ09NUCVde2NvbG9yOiNmNTdjMDB9Lm1hdC1mb3JtLWZpZWxkLm1hdC1mb2N1c2VkLm1hdC1hY2NlbnRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1zZWxlY3QtYXJyb3dbX25nY29udGVudC0lQ09NUCVde2NvbG9yOiNmZjk4MDB9Lm1hdC1mb3JtLWZpZWxkLm1hdC1mb2N1c2VkLm1hdC13YXJuW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtc2VsZWN0LWFycm93W19uZ2NvbnRlbnQtJUNPTVAlXXtjb2xvcjojZjQ0MzM2fS5tYXQtZm9ybS1maWVsZFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXNlbGVjdC5tYXQtc2VsZWN0LWludmFsaWRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1zZWxlY3QtYXJyb3dbX25nY29udGVudC0lQ09NUCVde2NvbG9yOiNmNDQzMzZ9Lm1hdC1mb3JtLWZpZWxkW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtc2VsZWN0Lm1hdC1zZWxlY3QtZGlzYWJsZWRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1zZWxlY3QtYXJyb3dbX25nY29udGVudC0lQ09NUCVde2NvbG9yOiM3NTc1NzV9Lm1hdC1kcmF3ZXItY29udGFpbmVyW19uZ2NvbnRlbnQtJUNPTVAlXXtiYWNrZ3JvdW5kLWNvbG9yOiNmYWZhZmE7Y29sb3I6IzIxMjEyMX0ubWF0LWRyYXdlcltfbmdjb250ZW50LSVDT01QJV17YmFja2dyb3VuZC1jb2xvcjojZmZmO2NvbG9yOiMyMTIxMjF9Lm1hdC1kcmF3ZXIubWF0LWRyYXdlci1wdXNoW19uZ2NvbnRlbnQtJUNPTVAlXXtiYWNrZ3JvdW5kLWNvbG9yOiNmZmZ9Lm1hdC1kcmF3ZXJbX25nY29udGVudC0lQ09NUCVdOm5vdCgubWF0LWRyYXdlci1zaWRlKXtib3gtc2hhZG93OjBweCA4cHggMTBweCAtNXB4IHJnYmEoMCwgMCwgMCwgMC4yKSwwcHggMTZweCAyNHB4IDJweCByZ2JhKDAsIDAsIDAsIDAuMTQpLDBweCA2cHggMzBweCA1cHggcmdiYSgwLCAwLCAwLCAwLjEyKX0ubWF0LWRyYXdlci1zaWRlW19uZ2NvbnRlbnQtJUNPTVAlXXtib3JkZXItcmlnaHQ6c29saWQgMXB4IHJnYmEoMCwwLDAsLjEyKX0ubWF0LWRyYXdlci1zaWRlLm1hdC1kcmF3ZXItZW5kW19uZ2NvbnRlbnQtJUNPTVAlXXtib3JkZXItbGVmdDpzb2xpZCAxcHggcmdiYSgwLDAsMCwuMTIpO2JvcmRlci1yaWdodDpub25lfVtkaXI9cnRsXVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWRyYXdlci1zaWRlW19uZ2NvbnRlbnQtJUNPTVAlXXtib3JkZXItbGVmdDpzb2xpZCAxcHggcmdiYSgwLDAsMCwuMTIpO2JvcmRlci1yaWdodDpub25lfVtkaXI9cnRsXVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWRyYXdlci1zaWRlLm1hdC1kcmF3ZXItZW5kW19uZ2NvbnRlbnQtJUNPTVAlXXtib3JkZXItbGVmdDpub25lO2JvcmRlci1yaWdodDpzb2xpZCAxcHggcmdiYSgwLDAsMCwuMTIpfS5tYXQtZHJhd2VyLWJhY2tkcm9wLm1hdC1kcmF3ZXItc2hvd25bX25nY29udGVudC0lQ09NUCVde2JhY2tncm91bmQtY29sb3I6cmdiYSgwLDAsMCwuNil9Lm1hdC1zbGlkZS10b2dnbGUubWF0LWNoZWNrZWRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1zbGlkZS10b2dnbGUtdGh1bWJbX25nY29udGVudC0lQ09NUCVde2JhY2tncm91bmQtY29sb3I6I2ZmOTgwMH0ubWF0LXNsaWRlLXRvZ2dsZS5tYXQtY2hlY2tlZFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXNsaWRlLXRvZ2dsZS1iYXJbX25nY29udGVudC0lQ09NUCVde2JhY2tncm91bmQtY29sb3I6cmdiYSgyNTUsMTUyLDAsLjU0KX0ubWF0LXNsaWRlLXRvZ2dsZS5tYXQtY2hlY2tlZFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXJpcHBsZS1lbGVtZW50W19uZ2NvbnRlbnQtJUNPTVAlXXtiYWNrZ3JvdW5kLWNvbG9yOiNmZjk4MDB9Lm1hdC1zbGlkZS10b2dnbGUubWF0LXByaW1hcnkubWF0LWNoZWNrZWRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1zbGlkZS10b2dnbGUtdGh1bWJbX25nY29udGVudC0lQ09NUCVde2JhY2tncm91bmQtY29sb3I6I2Y1N2MwMH0ubWF0LXNsaWRlLXRvZ2dsZS5tYXQtcHJpbWFyeS5tYXQtY2hlY2tlZFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXNsaWRlLXRvZ2dsZS1iYXJbX25nY29udGVudC0lQ09NUCVde2JhY2tncm91bmQtY29sb3I6cmdiYSgyNDUsMTI0LDAsLjU0KX0ubWF0LXNsaWRlLXRvZ2dsZS5tYXQtcHJpbWFyeS5tYXQtY2hlY2tlZFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXJpcHBsZS1lbGVtZW50W19uZ2NvbnRlbnQtJUNPTVAlXXtiYWNrZ3JvdW5kLWNvbG9yOiNmNTdjMDB9Lm1hdC1zbGlkZS10b2dnbGUubWF0LXdhcm4ubWF0LWNoZWNrZWRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1zbGlkZS10b2dnbGUtdGh1bWJbX25nY29udGVudC0lQ09NUCVde2JhY2tncm91bmQtY29sb3I6I2Y0NDMzNn0ubWF0LXNsaWRlLXRvZ2dsZS5tYXQtd2Fybi5tYXQtY2hlY2tlZFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXNsaWRlLXRvZ2dsZS1iYXJbX25nY29udGVudC0lQ09NUCVde2JhY2tncm91bmQtY29sb3I6cmdiYSgyNDQsNjcsNTQsLjU0KX0ubWF0LXNsaWRlLXRvZ2dsZS5tYXQtd2Fybi5tYXQtY2hlY2tlZFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXJpcHBsZS1lbGVtZW50W19uZ2NvbnRlbnQtJUNPTVAlXXtiYWNrZ3JvdW5kLWNvbG9yOiNmNDQzMzZ9Lm1hdC1zbGlkZS10b2dnbGVbX25nY29udGVudC0lQ09NUCVdOm5vdCgubWF0LWNoZWNrZWQpICAgLm1hdC1yaXBwbGUtZWxlbWVudFtfbmdjb250ZW50LSVDT01QJV17YmFja2dyb3VuZC1jb2xvcjojMDAwfS5tYXQtc2xpZGUtdG9nZ2xlLXRodW1iW19uZ2NvbnRlbnQtJUNPTVAlXXtib3gtc2hhZG93OjBweCAycHggMXB4IC0xcHggcmdiYSgwLCAwLCAwLCAwLjIpLDBweCAxcHggMXB4IDBweCByZ2JhKDAsIDAsIDAsIDAuMTQpLDBweCAxcHggM3B4IDBweCByZ2JhKDAsIDAsIDAsIDAuMTIpO2JhY2tncm91bmQtY29sb3I6I2ZhZmFmYX0ubWF0LXNsaWRlLXRvZ2dsZS1iYXJbX25nY29udGVudC0lQ09NUCVde2JhY2tncm91bmQtY29sb3I6cmdiYSgwLDAsMCwuMzgpfS5tYXQtc2xpZGVyLXRyYWNrLWJhY2tncm91bmRbX25nY29udGVudC0lQ09NUCVde2JhY2tncm91bmQtY29sb3I6cmdiYSgwLDAsMCwuMjYpfS5tYXQtcHJpbWFyeVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXNsaWRlci10cmFjay1maWxsW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1wcmltYXJ5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtc2xpZGVyLXRodW1iW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1wcmltYXJ5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtc2xpZGVyLXRodW1iLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXtiYWNrZ3JvdW5kLWNvbG9yOiNmNTdjMDB9Lm1hdC1wcmltYXJ5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtc2xpZGVyLXRodW1iLWxhYmVsLXRleHRbX25nY29udGVudC0lQ09NUCVde2NvbG9yOiNmZmZ9Lm1hdC1wcmltYXJ5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtc2xpZGVyLWZvY3VzLXJpbmdbX25nY29udGVudC0lQ09NUCVde2JhY2tncm91bmQtY29sb3I6cmdiYSgyNDUsMTI0LDAsLjIpfS5tYXQtYWNjZW50W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtc2xpZGVyLXRyYWNrLWZpbGxbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWFjY2VudFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXNsaWRlci10aHVtYltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtYWNjZW50W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtc2xpZGVyLXRodW1iLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXtiYWNrZ3JvdW5kLWNvbG9yOiNmZjk4MDB9Lm1hdC1hY2NlbnRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1zbGlkZXItdGh1bWItbGFiZWwtdGV4dFtfbmdjb250ZW50LSVDT01QJV17Y29sb3I6I2ZmZn0ubWF0LWFjY2VudFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXNsaWRlci1mb2N1cy1yaW5nW19uZ2NvbnRlbnQtJUNPTVAlXXtiYWNrZ3JvdW5kLWNvbG9yOnJnYmEoMjU1LDE1MiwwLC4yKX0ubWF0LXdhcm5bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1zbGlkZXItdHJhY2stZmlsbFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtd2Fybltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXNsaWRlci10aHVtYltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtd2Fybltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXNsaWRlci10aHVtYi1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17YmFja2dyb3VuZC1jb2xvcjojZjQ0MzM2fS5tYXQtd2Fybltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXNsaWRlci10aHVtYi1sYWJlbC10ZXh0W19uZ2NvbnRlbnQtJUNPTVAlXXtjb2xvcjojZmZmfS5tYXQtd2Fybltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXNsaWRlci1mb2N1cy1yaW5nW19uZ2NvbnRlbnQtJUNPTVAlXXtiYWNrZ3JvdW5kLWNvbG9yOnJnYmEoMjQ0LDY3LDU0LC4yKX0ubWF0LXNsaWRlcltfbmdjb250ZW50LSVDT01QJV06aG92ZXIgICAubWF0LXNsaWRlci10cmFjay1iYWNrZ3JvdW5kW19uZ2NvbnRlbnQtJUNPTVAlXSwgLmNkay1mb2N1c2VkW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtc2xpZGVyLXRyYWNrLWJhY2tncm91bmRbX25nY29udGVudC0lQ09NUCVde2JhY2tncm91bmQtY29sb3I6cmdiYSgwLDAsMCwuMzgpfS5tYXQtc2xpZGVyLWRpc2FibGVkW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtc2xpZGVyLXRyYWNrLWJhY2tncm91bmRbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXNsaWRlci1kaXNhYmxlZFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXNsaWRlci10cmFjay1maWxsW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1zbGlkZXItZGlzYWJsZWRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1zbGlkZXItdGh1bWJbX25nY29udGVudC0lQ09NUCVde2JhY2tncm91bmQtY29sb3I6cmdiYSgwLDAsMCwuMjYpfS5tYXQtc2xpZGVyLWRpc2FibGVkW19uZ2NvbnRlbnQtJUNPTVAlXTpob3ZlciAgIC5tYXQtc2xpZGVyLXRyYWNrLWJhY2tncm91bmRbX25nY29udGVudC0lQ09NUCVde2JhY2tncm91bmQtY29sb3I6cmdiYSgwLDAsMCwuMjYpfS5tYXQtc2xpZGVyLW1pbi12YWx1ZVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXNsaWRlci1mb2N1cy1yaW5nW19uZ2NvbnRlbnQtJUNPTVAlXXtiYWNrZ3JvdW5kLWNvbG9yOnJnYmEoMCwwLDAsLjEyKX0ubWF0LXNsaWRlci1taW4tdmFsdWUubWF0LXNsaWRlci10aHVtYi1sYWJlbC1zaG93aW5nW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtc2xpZGVyLXRodW1iW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1zbGlkZXItbWluLXZhbHVlLm1hdC1zbGlkZXItdGh1bWItbGFiZWwtc2hvd2luZ1tfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXNsaWRlci10aHVtYi1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17YmFja2dyb3VuZC1jb2xvcjpyZ2JhKDAsMCwwLC44Nyl9Lm1hdC1zbGlkZXItbWluLXZhbHVlLm1hdC1zbGlkZXItdGh1bWItbGFiZWwtc2hvd2luZy5jZGstZm9jdXNlZFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXNsaWRlci10aHVtYltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtc2xpZGVyLW1pbi12YWx1ZS5tYXQtc2xpZGVyLXRodW1iLWxhYmVsLXNob3dpbmcuY2RrLWZvY3VzZWRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1zbGlkZXItdGh1bWItbGFiZWxbX25nY29udGVudC0lQ09NUCVde2JhY2tncm91bmQtY29sb3I6cmdiYSgwLDAsMCwuMjYpfS5tYXQtc2xpZGVyLW1pbi12YWx1ZVtfbmdjb250ZW50LSVDT01QJV06bm90KC5tYXQtc2xpZGVyLXRodW1iLWxhYmVsLXNob3dpbmcpICAgLm1hdC1zbGlkZXItdGh1bWJbX25nY29udGVudC0lQ09NUCVde2JvcmRlci1jb2xvcjpyZ2JhKDAsMCwwLC4yNik7YmFja2dyb3VuZC1jb2xvcjp0cmFuc3BhcmVudH0ubWF0LXNsaWRlci1taW4tdmFsdWVbX25nY29udGVudC0lQ09NUCVdOm5vdCgubWF0LXNsaWRlci10aHVtYi1sYWJlbC1zaG93aW5nKTpob3ZlciAgIC5tYXQtc2xpZGVyLXRodW1iW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1zbGlkZXItbWluLXZhbHVlW19uZ2NvbnRlbnQtJUNPTVAlXTpub3QoLm1hdC1zbGlkZXItdGh1bWItbGFiZWwtc2hvd2luZykuY2RrLWZvY3VzZWQgICAubWF0LXNsaWRlci10aHVtYltfbmdjb250ZW50LSVDT01QJV17Ym9yZGVyLWNvbG9yOnJnYmEoMCwwLDAsLjM4KX0ubWF0LXNsaWRlci1taW4tdmFsdWVbX25nY29udGVudC0lQ09NUCVdOm5vdCgubWF0LXNsaWRlci10aHVtYi1sYWJlbC1zaG93aW5nKTpob3Zlci5tYXQtc2xpZGVyLWRpc2FibGVkICAgLm1hdC1zbGlkZXItdGh1bWJbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXNsaWRlci1taW4tdmFsdWVbX25nY29udGVudC0lQ09NUCVdOm5vdCgubWF0LXNsaWRlci10aHVtYi1sYWJlbC1zaG93aW5nKS5jZGstZm9jdXNlZC5tYXQtc2xpZGVyLWRpc2FibGVkICAgLm1hdC1zbGlkZXItdGh1bWJbX25nY29udGVudC0lQ09NUCVde2JvcmRlci1jb2xvcjpyZ2JhKDAsMCwwLC4yNil9Lm1hdC1zbGlkZXItaGFzLXRpY2tzW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtc2xpZGVyLXdyYXBwZXJbX25nY29udGVudC0lQ09NUCVdOjphZnRlcntib3JkZXItY29sb3I6cmdiYSgwLDAsMCwuNyl9Lm1hdC1zbGlkZXItaG9yaXpvbnRhbFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXNsaWRlci10aWNrc1tfbmdjb250ZW50LSVDT01QJV17YmFja2dyb3VuZC1pbWFnZTpyZXBlYXRpbmctbGluZWFyLWdyYWRpZW50KHRvIHJpZ2h0LCByZ2JhKDAsIDAsIDAsIDAuNyksIHJnYmEoMCwgMCwgMCwgMC43KSAycHgsIHRyYW5zcGFyZW50IDAsIHRyYW5zcGFyZW50KTtiYWNrZ3JvdW5kLWltYWdlOi1tb3otcmVwZWF0aW5nLWxpbmVhci1ncmFkaWVudCgwLjAwMDFkZWcsIHJnYmEoMCwgMCwgMCwgMC43KSwgcmdiYSgwLCAwLCAwLCAwLjcpIDJweCwgdHJhbnNwYXJlbnQgMCwgdHJhbnNwYXJlbnQpfS5tYXQtc2xpZGVyLXZlcnRpY2FsW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtc2xpZGVyLXRpY2tzW19uZ2NvbnRlbnQtJUNPTVAlXXtiYWNrZ3JvdW5kLWltYWdlOnJlcGVhdGluZy1saW5lYXItZ3JhZGllbnQodG8gYm90dG9tLCByZ2JhKDAsIDAsIDAsIDAuNyksIHJnYmEoMCwgMCwgMCwgMC43KSAycHgsIHRyYW5zcGFyZW50IDAsIHRyYW5zcGFyZW50KX0ubWF0LXN0ZXAtaGVhZGVyLmNkay1rZXlib2FyZC1mb2N1c2VkW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1zdGVwLWhlYWRlci5jZGstcHJvZ3JhbS1mb2N1c2VkW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1zdGVwLWhlYWRlcltfbmdjb250ZW50LSVDT01QJV06aG92ZXJ7YmFja2dyb3VuZC1jb2xvcjpyZ2JhKDAsMCwwLC4wNCl9QG1lZGlhKGhvdmVyOiBub25lKXsubWF0LXN0ZXAtaGVhZGVyW19uZ2NvbnRlbnQtJUNPTVAlXTpob3ZlcntiYWNrZ3JvdW5kOm5vbmV9fS5tYXQtc3RlcC1oZWFkZXJbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1zdGVwLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1zdGVwLWhlYWRlcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXN0ZXAtb3B0aW9uYWxbX25nY29udGVudC0lQ09NUCVde2NvbG9yOiM2MTYxNjF9Lm1hdC1zdGVwLWhlYWRlcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXN0ZXAtaWNvbltfbmdjb250ZW50LSVDT01QJV17YmFja2dyb3VuZC1jb2xvcjojNjE2MTYxO2NvbG9yOiNmZmZ9Lm1hdC1zdGVwLWhlYWRlcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXN0ZXAtaWNvbi1zZWxlY3RlZFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtc3RlcC1oZWFkZXJbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1zdGVwLWljb24tc3RhdGUtZG9uZVtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtc3RlcC1oZWFkZXJbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1zdGVwLWljb24tc3RhdGUtZWRpdFtfbmdjb250ZW50LSVDT01QJV17YmFja2dyb3VuZC1jb2xvcjojZjU3YzAwO2NvbG9yOiNmZmZ9Lm1hdC1zdGVwLWhlYWRlcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXN0ZXAtaWNvbi1zdGF0ZS1lcnJvcltfbmdjb250ZW50LSVDT01QJV17YmFja2dyb3VuZC1jb2xvcjp0cmFuc3BhcmVudDtjb2xvcjojZjQ0MzM2fS5tYXQtc3RlcC1oZWFkZXJbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1zdGVwLWxhYmVsLm1hdC1zdGVwLWxhYmVsLWFjdGl2ZVtfbmdjb250ZW50LSVDT01QJV17Y29sb3I6IzIxMjEyMX0ubWF0LXN0ZXAtaGVhZGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtc3RlcC1sYWJlbC5tYXQtc3RlcC1sYWJlbC1lcnJvcltfbmdjb250ZW50LSVDT01QJV17Y29sb3I6I2Y0NDMzNn0ubWF0LXN0ZXBwZXItaG9yaXpvbnRhbFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtc3RlcHBlci12ZXJ0aWNhbFtfbmdjb250ZW50LSVDT01QJV17YmFja2dyb3VuZC1jb2xvcjojZmZmfS5tYXQtc3RlcHBlci12ZXJ0aWNhbC1saW5lW19uZ2NvbnRlbnQtJUNPTVAlXTo6YmVmb3Jle2JvcmRlci1sZWZ0LWNvbG9yOnJnYmEoMCwwLDAsLjEyKX0ubWF0LWhvcml6b250YWwtc3RlcHBlci1oZWFkZXJbX25nY29udGVudC0lQ09NUCVdOjpiZWZvcmUsIC5tYXQtaG9yaXpvbnRhbC1zdGVwcGVyLWhlYWRlcltfbmdjb250ZW50LSVDT01QJV06OmFmdGVyLCAubWF0LXN0ZXBwZXItaG9yaXpvbnRhbC1saW5lW19uZ2NvbnRlbnQtJUNPTVAlXXtib3JkZXItdG9wLWNvbG9yOnJnYmEoMCwwLDAsLjEyKX0ubWF0LWhvcml6b250YWwtc3RlcHBlci1oZWFkZXJbX25nY29udGVudC0lQ09NUCVde2hlaWdodDo3MnB4fS5tYXQtc3RlcHBlci1sYWJlbC1wb3NpdGlvbi1ib3R0b21bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1ob3Jpem9udGFsLXN0ZXBwZXItaGVhZGVyW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC12ZXJ0aWNhbC1zdGVwcGVyLWhlYWRlcltfbmdjb250ZW50LSVDT01QJV17cGFkZGluZzoyNHB4IDI0cHh9Lm1hdC1zdGVwcGVyLXZlcnRpY2FsLWxpbmVbX25nY29udGVudC0lQ09NUCVdOjpiZWZvcmV7dG9wOi0xNnB4O2JvdHRvbTotMTZweH0ubWF0LXN0ZXBwZXItbGFiZWwtcG9zaXRpb24tYm90dG9tW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaG9yaXpvbnRhbC1zdGVwcGVyLWhlYWRlcltfbmdjb250ZW50LSVDT01QJV06OmFmdGVyLCAubWF0LXN0ZXBwZXItbGFiZWwtcG9zaXRpb24tYm90dG9tW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaG9yaXpvbnRhbC1zdGVwcGVyLWhlYWRlcltfbmdjb250ZW50LSVDT01QJV06OmJlZm9yZXt0b3A6MzZweH0ubWF0LXN0ZXBwZXItbGFiZWwtcG9zaXRpb24tYm90dG9tW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtc3RlcHBlci1ob3Jpem9udGFsLWxpbmVbX25nY29udGVudC0lQ09NUCVde3RvcDozNnB4fS5tYXQtc29ydC1oZWFkZXItYXJyb3dbX25nY29udGVudC0lQ09NUCVde2NvbG9yOiM2MTYxNjF9Lm1hdC10YWItbmF2LWJhcltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdGFiLWhlYWRlcltfbmdjb250ZW50LSVDT01QJV17Ym9yZGVyLWJvdHRvbToxcHggc29saWQgcmdiYSgwLDAsMCwuMTIpfS5tYXQtdGFiLWdyb3VwLWludmVydGVkLWhlYWRlcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXRhYi1uYXYtYmFyW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10YWItZ3JvdXAtaW52ZXJ0ZWQtaGVhZGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtdGFiLWhlYWRlcltfbmdjb250ZW50LSVDT01QJV17Ym9yZGVyLXRvcDoxcHggc29saWQgcmdiYSgwLDAsMCwuMTIpO2JvcmRlci1ib3R0b206bm9uZX0ubWF0LXRhYi1sYWJlbFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdGFiLWxpbmtbX25nY29udGVudC0lQ09NUCVde2NvbG9yOiMyMTIxMjF9Lm1hdC10YWItbGFiZWwubWF0LXRhYi1kaXNhYmxlZFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdGFiLWxpbmsubWF0LXRhYi1kaXNhYmxlZFtfbmdjb250ZW50LSVDT01QJV17Y29sb3I6Izc1NzU3NX0ubWF0LXRhYi1oZWFkZXItcGFnaW5hdGlvbi1jaGV2cm9uW19uZ2NvbnRlbnQtJUNPTVAlXXtib3JkZXItY29sb3I6IzIxMjEyMX0ubWF0LXRhYi1oZWFkZXItcGFnaW5hdGlvbi1kaXNhYmxlZFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXRhYi1oZWFkZXItcGFnaW5hdGlvbi1jaGV2cm9uW19uZ2NvbnRlbnQtJUNPTVAlXXtib3JkZXItY29sb3I6Izc1NzU3NX0ubWF0LXRhYi1ncm91cFtjbGFzcyo9bWF0LWJhY2tncm91bmQtXVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXRhYi1oZWFkZXJbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXRhYi1uYXYtYmFyW2NsYXNzKj1tYXQtYmFja2dyb3VuZC1dW19uZ2NvbnRlbnQtJUNPTVAlXXtib3JkZXItYm90dG9tOm5vbmU7Ym9yZGVyLXRvcDpub25lfS5tYXQtdGFiLWdyb3VwLm1hdC1wcmltYXJ5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtdGFiLWxhYmVsLmNkay1rZXlib2FyZC1mb2N1c2VkW19uZ2NvbnRlbnQtJUNPTVAlXTpub3QoLm1hdC10YWItZGlzYWJsZWQpLCAubWF0LXRhYi1ncm91cC5tYXQtcHJpbWFyeVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXRhYi1sYWJlbC5jZGstcHJvZ3JhbS1mb2N1c2VkW19uZ2NvbnRlbnQtJUNPTVAlXTpub3QoLm1hdC10YWItZGlzYWJsZWQpLCAubWF0LXRhYi1ncm91cC5tYXQtcHJpbWFyeVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXRhYi1saW5rLmNkay1rZXlib2FyZC1mb2N1c2VkW19uZ2NvbnRlbnQtJUNPTVAlXTpub3QoLm1hdC10YWItZGlzYWJsZWQpLCAubWF0LXRhYi1ncm91cC5tYXQtcHJpbWFyeVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXRhYi1saW5rLmNkay1wcm9ncmFtLWZvY3VzZWRbX25nY29udGVudC0lQ09NUCVdOm5vdCgubWF0LXRhYi1kaXNhYmxlZCksIC5tYXQtdGFiLW5hdi1iYXIubWF0LXByaW1hcnlbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC10YWItbGFiZWwuY2RrLWtleWJvYXJkLWZvY3VzZWRbX25nY29udGVudC0lQ09NUCVdOm5vdCgubWF0LXRhYi1kaXNhYmxlZCksIC5tYXQtdGFiLW5hdi1iYXIubWF0LXByaW1hcnlbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC10YWItbGFiZWwuY2RrLXByb2dyYW0tZm9jdXNlZFtfbmdjb250ZW50LSVDT01QJV06bm90KC5tYXQtdGFiLWRpc2FibGVkKSwgLm1hdC10YWItbmF2LWJhci5tYXQtcHJpbWFyeVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXRhYi1saW5rLmNkay1rZXlib2FyZC1mb2N1c2VkW19uZ2NvbnRlbnQtJUNPTVAlXTpub3QoLm1hdC10YWItZGlzYWJsZWQpLCAubWF0LXRhYi1uYXYtYmFyLm1hdC1wcmltYXJ5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtdGFiLWxpbmsuY2RrLXByb2dyYW0tZm9jdXNlZFtfbmdjb250ZW50LSVDT01QJV06bm90KC5tYXQtdGFiLWRpc2FibGVkKXtiYWNrZ3JvdW5kLWNvbG9yOnJnYmEoMjU1LDE1MiwwLC4zKX0ubWF0LXRhYi1ncm91cC5tYXQtcHJpbWFyeVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWluay1iYXJbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXRhYi1uYXYtYmFyLm1hdC1wcmltYXJ5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaW5rLWJhcltfbmdjb250ZW50LSVDT01QJV17YmFja2dyb3VuZC1jb2xvcjojZjU3YzAwfS5tYXQtdGFiLWdyb3VwLm1hdC1wcmltYXJ5Lm1hdC1iYWNrZ3JvdW5kLXByaW1hcnlbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pbmstYmFyW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10YWItbmF2LWJhci5tYXQtcHJpbWFyeS5tYXQtYmFja2dyb3VuZC1wcmltYXJ5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaW5rLWJhcltfbmdjb250ZW50LSVDT01QJV17YmFja2dyb3VuZC1jb2xvcjojZmZmfS5tYXQtdGFiLWdyb3VwLm1hdC1hY2NlbnRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC10YWItbGFiZWwuY2RrLWtleWJvYXJkLWZvY3VzZWRbX25nY29udGVudC0lQ09NUCVdOm5vdCgubWF0LXRhYi1kaXNhYmxlZCksIC5tYXQtdGFiLWdyb3VwLm1hdC1hY2NlbnRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC10YWItbGFiZWwuY2RrLXByb2dyYW0tZm9jdXNlZFtfbmdjb250ZW50LSVDT01QJV06bm90KC5tYXQtdGFiLWRpc2FibGVkKSwgLm1hdC10YWItZ3JvdXAubWF0LWFjY2VudFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXRhYi1saW5rLmNkay1rZXlib2FyZC1mb2N1c2VkW19uZ2NvbnRlbnQtJUNPTVAlXTpub3QoLm1hdC10YWItZGlzYWJsZWQpLCAubWF0LXRhYi1ncm91cC5tYXQtYWNjZW50W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtdGFiLWxpbmsuY2RrLXByb2dyYW0tZm9jdXNlZFtfbmdjb250ZW50LSVDT01QJV06bm90KC5tYXQtdGFiLWRpc2FibGVkKSwgLm1hdC10YWItbmF2LWJhci5tYXQtYWNjZW50W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtdGFiLWxhYmVsLmNkay1rZXlib2FyZC1mb2N1c2VkW19uZ2NvbnRlbnQtJUNPTVAlXTpub3QoLm1hdC10YWItZGlzYWJsZWQpLCAubWF0LXRhYi1uYXYtYmFyLm1hdC1hY2NlbnRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC10YWItbGFiZWwuY2RrLXByb2dyYW0tZm9jdXNlZFtfbmdjb250ZW50LSVDT01QJV06bm90KC5tYXQtdGFiLWRpc2FibGVkKSwgLm1hdC10YWItbmF2LWJhci5tYXQtYWNjZW50W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtdGFiLWxpbmsuY2RrLWtleWJvYXJkLWZvY3VzZWRbX25nY29udGVudC0lQ09NUCVdOm5vdCgubWF0LXRhYi1kaXNhYmxlZCksIC5tYXQtdGFiLW5hdi1iYXIubWF0LWFjY2VudFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXRhYi1saW5rLmNkay1wcm9ncmFtLWZvY3VzZWRbX25nY29udGVudC0lQ09NUCVdOm5vdCgubWF0LXRhYi1kaXNhYmxlZCl7YmFja2dyb3VuZC1jb2xvcjpyZ2JhKDI1NSwxNTIsMCwuMyl9Lm1hdC10YWItZ3JvdXAubWF0LWFjY2VudFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWluay1iYXJbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXRhYi1uYXYtYmFyLm1hdC1hY2NlbnRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pbmstYmFyW19uZ2NvbnRlbnQtJUNPTVAlXXtiYWNrZ3JvdW5kLWNvbG9yOiNmZjk4MDB9Lm1hdC10YWItZ3JvdXAubWF0LWFjY2VudC5tYXQtYmFja2dyb3VuZC1hY2NlbnRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pbmstYmFyW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10YWItbmF2LWJhci5tYXQtYWNjZW50Lm1hdC1iYWNrZ3JvdW5kLWFjY2VudFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWluay1iYXJbX25nY29udGVudC0lQ09NUCVde2JhY2tncm91bmQtY29sb3I6I2ZmZn0ubWF0LXRhYi1ncm91cC5tYXQtd2Fybltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXRhYi1sYWJlbC5jZGsta2V5Ym9hcmQtZm9jdXNlZFtfbmdjb250ZW50LSVDT01QJV06bm90KC5tYXQtdGFiLWRpc2FibGVkKSwgLm1hdC10YWItZ3JvdXAubWF0LXdhcm5bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC10YWItbGFiZWwuY2RrLXByb2dyYW0tZm9jdXNlZFtfbmdjb250ZW50LSVDT01QJV06bm90KC5tYXQtdGFiLWRpc2FibGVkKSwgLm1hdC10YWItZ3JvdXAubWF0LXdhcm5bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC10YWItbGluay5jZGsta2V5Ym9hcmQtZm9jdXNlZFtfbmdjb250ZW50LSVDT01QJV06bm90KC5tYXQtdGFiLWRpc2FibGVkKSwgLm1hdC10YWItZ3JvdXAubWF0LXdhcm5bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC10YWItbGluay5jZGstcHJvZ3JhbS1mb2N1c2VkW19uZ2NvbnRlbnQtJUNPTVAlXTpub3QoLm1hdC10YWItZGlzYWJsZWQpLCAubWF0LXRhYi1uYXYtYmFyLm1hdC13YXJuW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtdGFiLWxhYmVsLmNkay1rZXlib2FyZC1mb2N1c2VkW19uZ2NvbnRlbnQtJUNPTVAlXTpub3QoLm1hdC10YWItZGlzYWJsZWQpLCAubWF0LXRhYi1uYXYtYmFyLm1hdC13YXJuW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtdGFiLWxhYmVsLmNkay1wcm9ncmFtLWZvY3VzZWRbX25nY29udGVudC0lQ09NUCVdOm5vdCgubWF0LXRhYi1kaXNhYmxlZCksIC5tYXQtdGFiLW5hdi1iYXIubWF0LXdhcm5bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC10YWItbGluay5jZGsta2V5Ym9hcmQtZm9jdXNlZFtfbmdjb250ZW50LSVDT01QJV06bm90KC5tYXQtdGFiLWRpc2FibGVkKSwgLm1hdC10YWItbmF2LWJhci5tYXQtd2Fybltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXRhYi1saW5rLmNkay1wcm9ncmFtLWZvY3VzZWRbX25nY29udGVudC0lQ09NUCVdOm5vdCgubWF0LXRhYi1kaXNhYmxlZCl7YmFja2dyb3VuZC1jb2xvcjpyZ2JhKDI1NSwyMDUsMjEwLC4zKX0ubWF0LXRhYi1ncm91cC5tYXQtd2Fybltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWluay1iYXJbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXRhYi1uYXYtYmFyLm1hdC13YXJuW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaW5rLWJhcltfbmdjb250ZW50LSVDT01QJV17YmFja2dyb3VuZC1jb2xvcjojZjQ0MzM2fS5tYXQtdGFiLWdyb3VwLm1hdC13YXJuLm1hdC1iYWNrZ3JvdW5kLXdhcm5bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pbmstYmFyW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10YWItbmF2LWJhci5tYXQtd2Fybi5tYXQtYmFja2dyb3VuZC13YXJuW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaW5rLWJhcltfbmdjb250ZW50LSVDT01QJV17YmFja2dyb3VuZC1jb2xvcjojZmZmfS5tYXQtdGFiLWdyb3VwLm1hdC1iYWNrZ3JvdW5kLXByaW1hcnlbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC10YWItbGFiZWwuY2RrLWtleWJvYXJkLWZvY3VzZWRbX25nY29udGVudC0lQ09NUCVdOm5vdCgubWF0LXRhYi1kaXNhYmxlZCksIC5tYXQtdGFiLWdyb3VwLm1hdC1iYWNrZ3JvdW5kLXByaW1hcnlbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC10YWItbGFiZWwuY2RrLXByb2dyYW0tZm9jdXNlZFtfbmdjb250ZW50LSVDT01QJV06bm90KC5tYXQtdGFiLWRpc2FibGVkKSwgLm1hdC10YWItZ3JvdXAubWF0LWJhY2tncm91bmQtcHJpbWFyeVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXRhYi1saW5rLmNkay1rZXlib2FyZC1mb2N1c2VkW19uZ2NvbnRlbnQtJUNPTVAlXTpub3QoLm1hdC10YWItZGlzYWJsZWQpLCAubWF0LXRhYi1ncm91cC5tYXQtYmFja2dyb3VuZC1wcmltYXJ5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtdGFiLWxpbmsuY2RrLXByb2dyYW0tZm9jdXNlZFtfbmdjb250ZW50LSVDT01QJV06bm90KC5tYXQtdGFiLWRpc2FibGVkKSwgLm1hdC10YWItbmF2LWJhci5tYXQtYmFja2dyb3VuZC1wcmltYXJ5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtdGFiLWxhYmVsLmNkay1rZXlib2FyZC1mb2N1c2VkW19uZ2NvbnRlbnQtJUNPTVAlXTpub3QoLm1hdC10YWItZGlzYWJsZWQpLCAubWF0LXRhYi1uYXYtYmFyLm1hdC1iYWNrZ3JvdW5kLXByaW1hcnlbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC10YWItbGFiZWwuY2RrLXByb2dyYW0tZm9jdXNlZFtfbmdjb250ZW50LSVDT01QJV06bm90KC5tYXQtdGFiLWRpc2FibGVkKSwgLm1hdC10YWItbmF2LWJhci5tYXQtYmFja2dyb3VuZC1wcmltYXJ5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtdGFiLWxpbmsuY2RrLWtleWJvYXJkLWZvY3VzZWRbX25nY29udGVudC0lQ09NUCVdOm5vdCgubWF0LXRhYi1kaXNhYmxlZCksIC5tYXQtdGFiLW5hdi1iYXIubWF0LWJhY2tncm91bmQtcHJpbWFyeVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXRhYi1saW5rLmNkay1wcm9ncmFtLWZvY3VzZWRbX25nY29udGVudC0lQ09NUCVdOm5vdCgubWF0LXRhYi1kaXNhYmxlZCl7YmFja2dyb3VuZC1jb2xvcjpyZ2JhKDI1NSwxNTIsMCwuMyl9Lm1hdC10YWItZ3JvdXAubWF0LWJhY2tncm91bmQtcHJpbWFyeVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXRhYi1oZWFkZXJbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXRhYi1ncm91cC5tYXQtYmFja2dyb3VuZC1wcmltYXJ5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtdGFiLWxpbmtzW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10YWItZ3JvdXAubWF0LWJhY2tncm91bmQtcHJpbWFyeVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXRhYi1oZWFkZXItcGFnaW5hdGlvbltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdGFiLW5hdi1iYXIubWF0LWJhY2tncm91bmQtcHJpbWFyeVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXRhYi1oZWFkZXJbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXRhYi1uYXYtYmFyLm1hdC1iYWNrZ3JvdW5kLXByaW1hcnlbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC10YWItbGlua3NbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXRhYi1uYXYtYmFyLm1hdC1iYWNrZ3JvdW5kLXByaW1hcnlbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC10YWItaGVhZGVyLXBhZ2luYXRpb25bX25nY29udGVudC0lQ09NUCVde2JhY2tncm91bmQtY29sb3I6I2Y1N2MwMH0ubWF0LXRhYi1ncm91cC5tYXQtYmFja2dyb3VuZC1wcmltYXJ5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtdGFiLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10YWItZ3JvdXAubWF0LWJhY2tncm91bmQtcHJpbWFyeVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXRhYi1saW5rW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10YWItbmF2LWJhci5tYXQtYmFja2dyb3VuZC1wcmltYXJ5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtdGFiLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10YWItbmF2LWJhci5tYXQtYmFja2dyb3VuZC1wcmltYXJ5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtdGFiLWxpbmtbX25nY29udGVudC0lQ09NUCVde2NvbG9yOiNmZmZ9Lm1hdC10YWItZ3JvdXAubWF0LWJhY2tncm91bmQtcHJpbWFyeVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXRhYi1sYWJlbC5tYXQtdGFiLWRpc2FibGVkW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10YWItZ3JvdXAubWF0LWJhY2tncm91bmQtcHJpbWFyeVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXRhYi1saW5rLm1hdC10YWItZGlzYWJsZWRbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXRhYi1uYXYtYmFyLm1hdC1iYWNrZ3JvdW5kLXByaW1hcnlbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC10YWItbGFiZWwubWF0LXRhYi1kaXNhYmxlZFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdGFiLW5hdi1iYXIubWF0LWJhY2tncm91bmQtcHJpbWFyeVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXRhYi1saW5rLm1hdC10YWItZGlzYWJsZWRbX25nY29udGVudC0lQ09NUCVde2NvbG9yOnJnYmEoMjU1LDI1NSwyNTUsLjQpfS5tYXQtdGFiLWdyb3VwLm1hdC1iYWNrZ3JvdW5kLXByaW1hcnlbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC10YWItaGVhZGVyLXBhZ2luYXRpb24tY2hldnJvbltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdGFiLW5hdi1iYXIubWF0LWJhY2tncm91bmQtcHJpbWFyeVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXRhYi1oZWFkZXItcGFnaW5hdGlvbi1jaGV2cm9uW19uZ2NvbnRlbnQtJUNPTVAlXXtib3JkZXItY29sb3I6I2ZmZn0ubWF0LXRhYi1ncm91cC5tYXQtYmFja2dyb3VuZC1wcmltYXJ5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtdGFiLWhlYWRlci1wYWdpbmF0aW9uLWRpc2FibGVkW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtdGFiLWhlYWRlci1wYWdpbmF0aW9uLWNoZXZyb25bX25nY29udGVudC0lQ09NUCVdLCAubWF0LXRhYi1uYXYtYmFyLm1hdC1iYWNrZ3JvdW5kLXByaW1hcnlbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC10YWItaGVhZGVyLXBhZ2luYXRpb24tZGlzYWJsZWRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC10YWItaGVhZGVyLXBhZ2luYXRpb24tY2hldnJvbltfbmdjb250ZW50LSVDT01QJV17Ym9yZGVyLWNvbG9yOnJnYmEoMjU1LDI1NSwyNTUsLjQpfS5tYXQtdGFiLWdyb3VwLm1hdC1iYWNrZ3JvdW5kLXByaW1hcnlbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1yaXBwbGUtZWxlbWVudFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdGFiLW5hdi1iYXIubWF0LWJhY2tncm91bmQtcHJpbWFyeVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXJpcHBsZS1lbGVtZW50W19uZ2NvbnRlbnQtJUNPTVAlXXtiYWNrZ3JvdW5kLWNvbG9yOnJnYmEoMjU1LDI1NSwyNTUsLjEyKX0ubWF0LXRhYi1ncm91cC5tYXQtYmFja2dyb3VuZC1hY2NlbnRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC10YWItbGFiZWwuY2RrLWtleWJvYXJkLWZvY3VzZWRbX25nY29udGVudC0lQ09NUCVdOm5vdCgubWF0LXRhYi1kaXNhYmxlZCksIC5tYXQtdGFiLWdyb3VwLm1hdC1iYWNrZ3JvdW5kLWFjY2VudFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXRhYi1sYWJlbC5jZGstcHJvZ3JhbS1mb2N1c2VkW19uZ2NvbnRlbnQtJUNPTVAlXTpub3QoLm1hdC10YWItZGlzYWJsZWQpLCAubWF0LXRhYi1ncm91cC5tYXQtYmFja2dyb3VuZC1hY2NlbnRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC10YWItbGluay5jZGsta2V5Ym9hcmQtZm9jdXNlZFtfbmdjb250ZW50LSVDT01QJV06bm90KC5tYXQtdGFiLWRpc2FibGVkKSwgLm1hdC10YWItZ3JvdXAubWF0LWJhY2tncm91bmQtYWNjZW50W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtdGFiLWxpbmsuY2RrLXByb2dyYW0tZm9jdXNlZFtfbmdjb250ZW50LSVDT01QJV06bm90KC5tYXQtdGFiLWRpc2FibGVkKSwgLm1hdC10YWItbmF2LWJhci5tYXQtYmFja2dyb3VuZC1hY2NlbnRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC10YWItbGFiZWwuY2RrLWtleWJvYXJkLWZvY3VzZWRbX25nY29udGVudC0lQ09NUCVdOm5vdCgubWF0LXRhYi1kaXNhYmxlZCksIC5tYXQtdGFiLW5hdi1iYXIubWF0LWJhY2tncm91bmQtYWNjZW50W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtdGFiLWxhYmVsLmNkay1wcm9ncmFtLWZvY3VzZWRbX25nY29udGVudC0lQ09NUCVdOm5vdCgubWF0LXRhYi1kaXNhYmxlZCksIC5tYXQtdGFiLW5hdi1iYXIubWF0LWJhY2tncm91bmQtYWNjZW50W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtdGFiLWxpbmsuY2RrLWtleWJvYXJkLWZvY3VzZWRbX25nY29udGVudC0lQ09NUCVdOm5vdCgubWF0LXRhYi1kaXNhYmxlZCksIC5tYXQtdGFiLW5hdi1iYXIubWF0LWJhY2tncm91bmQtYWNjZW50W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtdGFiLWxpbmsuY2RrLXByb2dyYW0tZm9jdXNlZFtfbmdjb250ZW50LSVDT01QJV06bm90KC5tYXQtdGFiLWRpc2FibGVkKXtiYWNrZ3JvdW5kLWNvbG9yOnJnYmEoMjU1LDE1MiwwLC4zKX0ubWF0LXRhYi1ncm91cC5tYXQtYmFja2dyb3VuZC1hY2NlbnRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC10YWItaGVhZGVyW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10YWItZ3JvdXAubWF0LWJhY2tncm91bmQtYWNjZW50W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtdGFiLWxpbmtzW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10YWItZ3JvdXAubWF0LWJhY2tncm91bmQtYWNjZW50W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtdGFiLWhlYWRlci1wYWdpbmF0aW9uW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10YWItbmF2LWJhci5tYXQtYmFja2dyb3VuZC1hY2NlbnRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC10YWItaGVhZGVyW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10YWItbmF2LWJhci5tYXQtYmFja2dyb3VuZC1hY2NlbnRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC10YWItbGlua3NbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXRhYi1uYXYtYmFyLm1hdC1iYWNrZ3JvdW5kLWFjY2VudFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXRhYi1oZWFkZXItcGFnaW5hdGlvbltfbmdjb250ZW50LSVDT01QJV17YmFja2dyb3VuZC1jb2xvcjojZmY5ODAwfS5tYXQtdGFiLWdyb3VwLm1hdC1iYWNrZ3JvdW5kLWFjY2VudFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXRhYi1sYWJlbFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdGFiLWdyb3VwLm1hdC1iYWNrZ3JvdW5kLWFjY2VudFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXRhYi1saW5rW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10YWItbmF2LWJhci5tYXQtYmFja2dyb3VuZC1hY2NlbnRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC10YWItbGFiZWxbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXRhYi1uYXYtYmFyLm1hdC1iYWNrZ3JvdW5kLWFjY2VudFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXRhYi1saW5rW19uZ2NvbnRlbnQtJUNPTVAlXXtjb2xvcjojZmZmfS5tYXQtdGFiLWdyb3VwLm1hdC1iYWNrZ3JvdW5kLWFjY2VudFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXRhYi1sYWJlbC5tYXQtdGFiLWRpc2FibGVkW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10YWItZ3JvdXAubWF0LWJhY2tncm91bmQtYWNjZW50W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtdGFiLWxpbmsubWF0LXRhYi1kaXNhYmxlZFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdGFiLW5hdi1iYXIubWF0LWJhY2tncm91bmQtYWNjZW50W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtdGFiLWxhYmVsLm1hdC10YWItZGlzYWJsZWRbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXRhYi1uYXYtYmFyLm1hdC1iYWNrZ3JvdW5kLWFjY2VudFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXRhYi1saW5rLm1hdC10YWItZGlzYWJsZWRbX25nY29udGVudC0lQ09NUCVde2NvbG9yOnJnYmEoMjU1LDI1NSwyNTUsLjQpfS5tYXQtdGFiLWdyb3VwLm1hdC1iYWNrZ3JvdW5kLWFjY2VudFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXRhYi1oZWFkZXItcGFnaW5hdGlvbi1jaGV2cm9uW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10YWItbmF2LWJhci5tYXQtYmFja2dyb3VuZC1hY2NlbnRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC10YWItaGVhZGVyLXBhZ2luYXRpb24tY2hldnJvbltfbmdjb250ZW50LSVDT01QJV17Ym9yZGVyLWNvbG9yOiNmZmZ9Lm1hdC10YWItZ3JvdXAubWF0LWJhY2tncm91bmQtYWNjZW50W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtdGFiLWhlYWRlci1wYWdpbmF0aW9uLWRpc2FibGVkW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtdGFiLWhlYWRlci1wYWdpbmF0aW9uLWNoZXZyb25bX25nY29udGVudC0lQ09NUCVdLCAubWF0LXRhYi1uYXYtYmFyLm1hdC1iYWNrZ3JvdW5kLWFjY2VudFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXRhYi1oZWFkZXItcGFnaW5hdGlvbi1kaXNhYmxlZFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXRhYi1oZWFkZXItcGFnaW5hdGlvbi1jaGV2cm9uW19uZ2NvbnRlbnQtJUNPTVAlXXtib3JkZXItY29sb3I6cmdiYSgyNTUsMjU1LDI1NSwuNCl9Lm1hdC10YWItZ3JvdXAubWF0LWJhY2tncm91bmQtYWNjZW50W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtcmlwcGxlLWVsZW1lbnRbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXRhYi1uYXYtYmFyLm1hdC1iYWNrZ3JvdW5kLWFjY2VudFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXJpcHBsZS1lbGVtZW50W19uZ2NvbnRlbnQtJUNPTVAlXXtiYWNrZ3JvdW5kLWNvbG9yOnJnYmEoMjU1LDI1NSwyNTUsLjEyKX0ubWF0LXRhYi1ncm91cC5tYXQtYmFja2dyb3VuZC13YXJuW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtdGFiLWxhYmVsLmNkay1rZXlib2FyZC1mb2N1c2VkW19uZ2NvbnRlbnQtJUNPTVAlXTpub3QoLm1hdC10YWItZGlzYWJsZWQpLCAubWF0LXRhYi1ncm91cC5tYXQtYmFja2dyb3VuZC13YXJuW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtdGFiLWxhYmVsLmNkay1wcm9ncmFtLWZvY3VzZWRbX25nY29udGVudC0lQ09NUCVdOm5vdCgubWF0LXRhYi1kaXNhYmxlZCksIC5tYXQtdGFiLWdyb3VwLm1hdC1iYWNrZ3JvdW5kLXdhcm5bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC10YWItbGluay5jZGsta2V5Ym9hcmQtZm9jdXNlZFtfbmdjb250ZW50LSVDT01QJV06bm90KC5tYXQtdGFiLWRpc2FibGVkKSwgLm1hdC10YWItZ3JvdXAubWF0LWJhY2tncm91bmQtd2Fybltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXRhYi1saW5rLmNkay1wcm9ncmFtLWZvY3VzZWRbX25nY29udGVudC0lQ09NUCVdOm5vdCgubWF0LXRhYi1kaXNhYmxlZCksIC5tYXQtdGFiLW5hdi1iYXIubWF0LWJhY2tncm91bmQtd2Fybltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXRhYi1sYWJlbC5jZGsta2V5Ym9hcmQtZm9jdXNlZFtfbmdjb250ZW50LSVDT01QJV06bm90KC5tYXQtdGFiLWRpc2FibGVkKSwgLm1hdC10YWItbmF2LWJhci5tYXQtYmFja2dyb3VuZC13YXJuW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtdGFiLWxhYmVsLmNkay1wcm9ncmFtLWZvY3VzZWRbX25nY29udGVudC0lQ09NUCVdOm5vdCgubWF0LXRhYi1kaXNhYmxlZCksIC5tYXQtdGFiLW5hdi1iYXIubWF0LWJhY2tncm91bmQtd2Fybltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXRhYi1saW5rLmNkay1rZXlib2FyZC1mb2N1c2VkW19uZ2NvbnRlbnQtJUNPTVAlXTpub3QoLm1hdC10YWItZGlzYWJsZWQpLCAubWF0LXRhYi1uYXYtYmFyLm1hdC1iYWNrZ3JvdW5kLXdhcm5bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC10YWItbGluay5jZGstcHJvZ3JhbS1mb2N1c2VkW19uZ2NvbnRlbnQtJUNPTVAlXTpub3QoLm1hdC10YWItZGlzYWJsZWQpe2JhY2tncm91bmQtY29sb3I6cmdiYSgyNTUsMjA1LDIxMCwuMyl9Lm1hdC10YWItZ3JvdXAubWF0LWJhY2tncm91bmQtd2Fybltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXRhYi1oZWFkZXJbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXRhYi1ncm91cC5tYXQtYmFja2dyb3VuZC13YXJuW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtdGFiLWxpbmtzW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10YWItZ3JvdXAubWF0LWJhY2tncm91bmQtd2Fybltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXRhYi1oZWFkZXItcGFnaW5hdGlvbltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdGFiLW5hdi1iYXIubWF0LWJhY2tncm91bmQtd2Fybltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXRhYi1oZWFkZXJbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXRhYi1uYXYtYmFyLm1hdC1iYWNrZ3JvdW5kLXdhcm5bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC10YWItbGlua3NbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXRhYi1uYXYtYmFyLm1hdC1iYWNrZ3JvdW5kLXdhcm5bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC10YWItaGVhZGVyLXBhZ2luYXRpb25bX25nY29udGVudC0lQ09NUCVde2JhY2tncm91bmQtY29sb3I6I2Y0NDMzNn0ubWF0LXRhYi1ncm91cC5tYXQtYmFja2dyb3VuZC13YXJuW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtdGFiLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10YWItZ3JvdXAubWF0LWJhY2tncm91bmQtd2Fybltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXRhYi1saW5rW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10YWItbmF2LWJhci5tYXQtYmFja2dyb3VuZC13YXJuW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtdGFiLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10YWItbmF2LWJhci5tYXQtYmFja2dyb3VuZC13YXJuW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtdGFiLWxpbmtbX25nY29udGVudC0lQ09NUCVde2NvbG9yOiNmZmZ9Lm1hdC10YWItZ3JvdXAubWF0LWJhY2tncm91bmQtd2Fybltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXRhYi1sYWJlbC5tYXQtdGFiLWRpc2FibGVkW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10YWItZ3JvdXAubWF0LWJhY2tncm91bmQtd2Fybltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXRhYi1saW5rLm1hdC10YWItZGlzYWJsZWRbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXRhYi1uYXYtYmFyLm1hdC1iYWNrZ3JvdW5kLXdhcm5bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC10YWItbGFiZWwubWF0LXRhYi1kaXNhYmxlZFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdGFiLW5hdi1iYXIubWF0LWJhY2tncm91bmQtd2Fybltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXRhYi1saW5rLm1hdC10YWItZGlzYWJsZWRbX25nY29udGVudC0lQ09NUCVde2NvbG9yOnJnYmEoMjU1LDI1NSwyNTUsLjQpfS5tYXQtdGFiLWdyb3VwLm1hdC1iYWNrZ3JvdW5kLXdhcm5bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC10YWItaGVhZGVyLXBhZ2luYXRpb24tY2hldnJvbltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdGFiLW5hdi1iYXIubWF0LWJhY2tncm91bmQtd2Fybltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXRhYi1oZWFkZXItcGFnaW5hdGlvbi1jaGV2cm9uW19uZ2NvbnRlbnQtJUNPTVAlXXtib3JkZXItY29sb3I6I2ZmZn0ubWF0LXRhYi1ncm91cC5tYXQtYmFja2dyb3VuZC13YXJuW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtdGFiLWhlYWRlci1wYWdpbmF0aW9uLWRpc2FibGVkW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtdGFiLWhlYWRlci1wYWdpbmF0aW9uLWNoZXZyb25bX25nY29udGVudC0lQ09NUCVdLCAubWF0LXRhYi1uYXYtYmFyLm1hdC1iYWNrZ3JvdW5kLXdhcm5bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC10YWItaGVhZGVyLXBhZ2luYXRpb24tZGlzYWJsZWRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC10YWItaGVhZGVyLXBhZ2luYXRpb24tY2hldnJvbltfbmdjb250ZW50LSVDT01QJV17Ym9yZGVyLWNvbG9yOnJnYmEoMjU1LDI1NSwyNTUsLjQpfS5tYXQtdGFiLWdyb3VwLm1hdC1iYWNrZ3JvdW5kLXdhcm5bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1yaXBwbGUtZWxlbWVudFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdGFiLW5hdi1iYXIubWF0LWJhY2tncm91bmQtd2Fybltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXJpcHBsZS1lbGVtZW50W19uZ2NvbnRlbnQtJUNPTVAlXXtiYWNrZ3JvdW5kLWNvbG9yOnJnYmEoMjU1LDI1NSwyNTUsLjEyKX0ubWF0LXRvb2xiYXJbX25nY29udGVudC0lQ09NUCVde2JhY2tncm91bmQ6I2Y1ZjVmNTtjb2xvcjojMjEyMTIxfS5tYXQtdG9vbGJhci5tYXQtcHJpbWFyeVtfbmdjb250ZW50LSVDT01QJV17YmFja2dyb3VuZDojZjU3YzAwO2NvbG9yOiNmZmZ9Lm1hdC10b29sYmFyLm1hdC1hY2NlbnRbX25nY29udGVudC0lQ09NUCVde2JhY2tncm91bmQ6I2ZmOTgwMDtjb2xvcjojZmZmfS5tYXQtdG9vbGJhci5tYXQtd2Fybltfbmdjb250ZW50LSVDT01QJV17YmFja2dyb3VuZDojZjQ0MzM2O2NvbG9yOiNmZmZ9Lm1hdC10b29sYmFyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC11bmRlcmxpbmVbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXRvb2xiYXJbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLXJpcHBsZVtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdG9vbGJhcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvY3VzZWRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLXJpcHBsZVtfbmdjb250ZW50LSVDT01QJV17YmFja2dyb3VuZC1jb2xvcjpjdXJyZW50Q29sb3J9Lm1hdC10b29sYmFyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdG9vbGJhcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvY3VzZWRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10b29sYmFyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtc2VsZWN0LXZhbHVlW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10b29sYmFyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtc2VsZWN0LWFycm93W19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10b29sYmFyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC5tYXQtZm9jdXNlZFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXNlbGVjdC1hcnJvd1tfbmdjb250ZW50LSVDT01QJV17Y29sb3I6aW5oZXJpdH0ubWF0LXRvb2xiYXJbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pbnB1dC1lbGVtZW50W19uZ2NvbnRlbnQtJUNPTVAlXXtjYXJldC1jb2xvcjpjdXJyZW50Q29sb3J9Lm1hdC10b29sYmFyLW11bHRpcGxlLXJvd3NbX25nY29udGVudC0lQ09NUCVde21pbi1oZWlnaHQ6NjRweH0ubWF0LXRvb2xiYXItcm93W19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10b29sYmFyLXNpbmdsZS1yb3dbX25nY29udGVudC0lQ09NUCVde2hlaWdodDo2NHB4fUBtZWRpYShtYXgtd2lkdGg6IDU5OXB4KXsubWF0LXRvb2xiYXItbXVsdGlwbGUtcm93c1tfbmdjb250ZW50LSVDT01QJV17bWluLWhlaWdodDo1NnB4fS5tYXQtdG9vbGJhci1yb3dbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXRvb2xiYXItc2luZ2xlLXJvd1tfbmdjb250ZW50LSVDT01QJV17aGVpZ2h0OjU2cHh9fS5tYXQtdG9vbHRpcFtfbmdjb250ZW50LSVDT01QJV17YmFja2dyb3VuZDpyZ2JhKDk3LDk3LDk3LC45KX0ubWF0LXRyZWVbX25nY29udGVudC0lQ09NUCVde2JhY2tncm91bmQ6I2ZmZn0ubWF0LXRyZWUtbm9kZVtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtbmVzdGVkLXRyZWUtbm9kZVtfbmdjb250ZW50LSVDT01QJV17Y29sb3I6IzIxMjEyMX0ubWF0LXRyZWUtbm9kZVtfbmdjb250ZW50LSVDT01QJV17bWluLWhlaWdodDo0OHB4fS5tYXQtc25hY2stYmFyLWNvbnRhaW5lcltfbmdjb250ZW50LSVDT01QJV17Y29sb3I6cmdiYSgyNTUsMjU1LDI1NSwuNyk7YmFja2dyb3VuZDojMzIzMjMyO2JveC1zaGFkb3c6MHB4IDNweCA1cHggLTFweCByZ2JhKDAsIDAsIDAsIDAuMiksMHB4IDZweCAxMHB4IDBweCByZ2JhKDAsIDAsIDAsIDAuMTQpLDBweCAxcHggMThweCAwcHggcmdiYSgwLCAwLCAwLCAwLjEyKX0ubWF0LXNpbXBsZS1zbmFja2Jhci1hY3Rpb25bX25nY29udGVudC0lQ09NUCVde2NvbG9yOiNmZjk4MDB9Lmdyb3VwLXRvb2xiYXJbX25nY29udGVudC0lQ09NUCVde2JhY2tncm91bmQtY29sb3I6I2ZmZjtoZWlnaHQ6NDJweDtwYWRkaW5nOjAgMTZweDtkaXNwbGF5OmZsZXg7YWxpZ24taXRlbXM6Y2VudGVyO2JvcmRlci1ib3R0b206MXB4IHNvbGlkICNlYmViZWJ9bWF0LWljb25bX25nY29udGVudC0lQ09NUCVde2NvbG9yOiM2MTYxNjE7ZmxleDpub25lO21hcmdpbi1yaWdodDo1cHh9Lmdyb3VwLXRleHRbX25nY29udGVudC0lQ09NUCVde2Rpc3BsYXk6ZmxleDthbGlnbi1pdGVtczpiYXNlbGluZX0uZ3JvdXAtdGl0bGVbX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToxNHB4O2ZvbnQtd2VpZ2h0OjUwMH0uZ3JvdXAtY2FyZC1jb3VudFtfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjEycHg7Zm9udC13ZWlnaHQ6NDAwO2NvbG9yOiM2MTYxNjE7bWFyZ2luLWxlZnQ6NnB4fS5lbXB0eS1tZXNzYWdlW19uZ2NvbnRlbnQtJUNPTVAlXXtjb2xvcjojNjE2MTYxO3RleHQtYWxpZ246Y2VudGVyO3BhZGRpbmc6MTZweDtmb250LXNpemU6MTNweDtmb250LXN0eWxlOml0YWxpY30nXSxjaGFuZ2VEZXRlY3Rpb246MH0pO2NsYXNzIFRtdHtjb25zdHJ1Y3Rvcih0KXt0aGlzLnN0b3JlPXQsdGhpcy5jYXJkSWRzV2l0aE1ldGFkYXRhJD10aGlzLnN0b3JlLnNlbGVjdChpRCkucGlwZShjZShbXSkpfX1mdW5jdGlvbiBEbXQodCxuKXtpZigxJnQmJihLZygwLCJtYXQtb3B0aW9uIiwyKSxKcCgxKSwkZygpKSwyJnQpe2NvbnN0IHQ9bi4kaW1wbGljaXQ7SmcoInZhbHVlIix0LnZhbHVlKSgiZGlzYWJsZWQiLHQuZGlzYWJsZWQpLHdzKDEpLEtwKCIgIix0LmRpc3BsYXlUZXh0LCIgIil9fVRtdC7JtWZhYz1mdW5jdGlvbiB0KG4pe3JldHVybiBuZXcobnx8VG10KShaZyhjdikpfSxUbXQuybVjbXA9X28oe3R5cGU6VG10LHNlbGVjdG9yczpbWyJtZXRyaWNzLXBpbm5lZC12aWV3Il1dLGlucHV0czp7Y2FyZE9ic2VydmVyOiJjYXJkT2JzZXJ2ZXIifSxkZWNsczoyLHZhcnM6NCxjb25zdHM6W1szLCJjYXJkSWRzV2l0aE1ldGFkYXRhIiwiY2FyZE9ic2VydmVyIl1dLHRlbXBsYXRlOmZ1bmN0aW9uIHQobixlKXsxJm4mJih0cCgwLCJtZXRyaWNzLXBpbm5lZC12aWV3LWNvbXBvbmVudCIsMCkseWYoMSwiYXN5bmMiKSksMiZuJiZKZygiY2FyZElkc1dpdGhNZXRhZGF0YSIsa2YoMSwyLGUuY2FyZElkc1dpdGhNZXRhZGF0YSQpKSgiY2FyZE9ic2VydmVyIixlLmNhcmRPYnNlcnZlcil9LGRpcmVjdGl2ZXM6W1JtdF0scGlwZXM6W29PXSxlbmNhcHN1bGF0aW9uOjIsY2hhbmdlRGV0ZWN0aW9uOjB9KTtjbGFzcyBJbXR7Y29uc3RydWN0b3IoKXt0aGlzLnZhbHVlPSIiLHRoaXMub3B0aW9ucz1bXSx0aGlzLnNlbGVjdGlvbkNoYW5nZT1uZXcgRWZ9fUltdC7JtWZhYz1mdW5jdGlvbiB0KG4pe3JldHVybiBuZXcobnx8SW10KX0sSW10Lsm1Y21wPV9vKHt0eXBlOkltdCxzZWxlY3RvcnM6W1sidGItZHJvcGRvd24iXV0saW5wdXRzOnt2YWx1ZToidmFsdWUiLG9wdGlvbnM6Im9wdGlvbnMifSxvdXRwdXRzOntzZWxlY3Rpb25DaGFuZ2U6InNlbGVjdGlvbkNoYW5nZSJ9LGRlY2xzOjIsdmFyczoyLGNvbnN0czpbWzMsInZhbHVlIiwic2VsZWN0aW9uQ2hhbmdlIl0sWzMsInZhbHVlIiwiZGlzYWJsZWQiLDQsIm5nRm9yIiwibmdGb3JPZiJdLFszLCJ2YWx1ZSIsImRpc2FibGVkIl1dLHRlbXBsYXRlOmZ1bmN0aW9uIHQobixlKXsxJm4mJihLZygwLCJtYXQtc2VsZWN0IiwwKSxjcCgic2VsZWN0aW9uQ2hhbmdlIiwoZnVuY3Rpb24gdChuKXtyZXR1cm4gZS5zZWxlY3Rpb25DaGFuZ2UuZW1pdChuLnZhbHVlKX0pKSxZZygxLERtdCwyLDMsIm1hdC1vcHRpb24iLDEpLCRnKCkpLDImbiYmKEpnKCJ2YWx1ZSIsZS52YWx1ZSksd3MoMSksSmcoIm5nRm9yT2YiLGUub3B0aW9ucykpfSxkaXJlY3RpdmVzOltqSCxqTSxZRV0sc3R5bGVzOlsnLm1hdC1iYWRnZS1jb250ZW50W19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXdlaWdodDo2MDA7Zm9udC1zaXplOjEycHg7Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmfS5tYXQtYmFkZ2Utc21hbGxbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1iYWRnZS1jb250ZW50W19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6OXB4fS5tYXQtYmFkZ2UtbGFyZ2VbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1iYWRnZS1jb250ZW50W19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MjRweH0ubWF0LWgxW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1oZWFkbGluZVtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdHlwb2dyYXBoeVtfbmdjb250ZW50LSVDT01QJV0gICBoMVtfbmdjb250ZW50LSVDT01QJV17Zm9udDo0MDAgMjRweC8zMnB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtsZXR0ZXItc3BhY2luZzpub3JtYWw7bWFyZ2luOjAgMCAxNnB4fS5tYXQtaDJbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXRpdGxlW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10eXBvZ3JhcGh5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIGgyW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250OjUwMCAyMHB4LzMycHggUm9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2xldHRlci1zcGFjaW5nOm5vcm1hbDttYXJnaW46MCAwIDE2cHh9Lm1hdC1oM1tfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtc3ViaGVhZGluZy0yW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10eXBvZ3JhcGh5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIGgzW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250OjQwMCAxNnB4LzI4cHggUm9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2xldHRlci1zcGFjaW5nOm5vcm1hbDttYXJnaW46MCAwIDE2cHh9Lm1hdC1oNFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtc3ViaGVhZGluZy0xW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10eXBvZ3JhcGh5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIGg0W19uZ2NvbnRlbnQtJUNPTVAlXXtmb250OjQwMCAxNXB4LzI0cHggUm9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2xldHRlci1zcGFjaW5nOm5vcm1hbDttYXJnaW46MCAwIDE2cHh9Lm1hdC1oNVtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdHlwb2dyYXBoeVtfbmdjb250ZW50LSVDT01QJV0gICBoNVtfbmdjb250ZW50LSVDT01QJV17Zm9udDo0MDAgY2FsYygxNHB4ICogMC44MykvMjBweCBSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7bWFyZ2luOjAgMCAxMnB4fS5tYXQtaDZbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXR5cG9ncmFwaHlbX25nY29udGVudC0lQ09NUCVdICAgaDZbX25nY29udGVudC0lQ09NUCVde2ZvbnQ6NDAwIGNhbGMoMTRweCAqIDAuNjcpLzIwcHggUm9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO21hcmdpbjowIDAgMTJweH0ubWF0LWJvZHktc3Ryb25nW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1ib2R5LTJbX25nY29udGVudC0lQ09NUCVde2ZvbnQ6NTAwIDE0cHgvMjRweCBSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7bGV0dGVyLXNwYWNpbmc6bm9ybWFsfS5tYXQtYm9keVtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtYm9keS0xW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10eXBvZ3JhcGh5W19uZ2NvbnRlbnQtJUNPTVAlXXtmb250OjQwMCAxNHB4LzIwcHggUm9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2xldHRlci1zcGFjaW5nOm5vcm1hbH0ubWF0LWJvZHlbX25nY29udGVudC0lQ09NUCVdICAgcFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtYm9keS0xW19uZ2NvbnRlbnQtJUNPTVAlXSAgIHBbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXR5cG9ncmFwaHlbX25nY29udGVudC0lQ09NUCVdICAgcFtfbmdjb250ZW50LSVDT01QJV17bWFyZ2luOjAgMCAxMnB4fS5tYXQtc21hbGxbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWNhcHRpb25bX25nY29udGVudC0lQ09NUCVde2ZvbnQ6NDAwIDEycHgvMjBweCBSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7bGV0dGVyLXNwYWNpbmc6bm9ybWFsfS5tYXQtZGlzcGxheS00W19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10eXBvZ3JhcGh5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZGlzcGxheS00W19uZ2NvbnRlbnQtJUNPTVAlXXtmb250OjMwMCAxMTJweC8xMTJweCBSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7bGV0dGVyLXNwYWNpbmc6LTAuMDVlbTttYXJnaW46MCAwIDU2cHh9Lm1hdC1kaXNwbGF5LTNbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXR5cG9ncmFwaHlbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1kaXNwbGF5LTNbX25nY29udGVudC0lQ09NUCVde2ZvbnQ6NDAwIDU2cHgvNTZweCBSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7bGV0dGVyLXNwYWNpbmc6LTAuMDJlbTttYXJnaW46MCAwIDY0cHh9Lm1hdC1kaXNwbGF5LTJbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXR5cG9ncmFwaHlbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1kaXNwbGF5LTJbX25nY29udGVudC0lQ09NUCVde2ZvbnQ6NDAwIDQ1cHgvNDhweCBSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7bGV0dGVyLXNwYWNpbmc6LTAuMDA1ZW07bWFyZ2luOjAgMCA2NHB4fS5tYXQtZGlzcGxheS0xW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10eXBvZ3JhcGh5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZGlzcGxheS0xW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250OjQwMCAzNHB4LzQwcHggUm9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2xldHRlci1zcGFjaW5nOm5vcm1hbDttYXJnaW46MCAwIDY0cHh9Lm1hdC1ib3R0b20tc2hlZXQtY29udGFpbmVyW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250OjQwMCAxNHB4LzIwcHggUm9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2xldHRlci1zcGFjaW5nOm5vcm1hbH0ubWF0LWJ1dHRvbltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtcmFpc2VkLWJ1dHRvbltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtaWNvbi1idXR0b25bX25nY29udGVudC0lQ09NUCVdLCAubWF0LXN0cm9rZWQtYnV0dG9uW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1mbGF0LWJ1dHRvbltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtZmFiW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1taW5pLWZhYltfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2ZvbnQtc2l6ZToxNHB4O2ZvbnQtd2VpZ2h0OjUwMH0ubWF0LWJ1dHRvbi10b2dnbGVbX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZn0ubWF0LWNhcmRbX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZn0ubWF0LWNhcmQtdGl0bGVbX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToyNHB4O2ZvbnQtd2VpZ2h0OjUwMH0ubWF0LWNhcmQtaGVhZGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtY2FyZC10aXRsZVtfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjIwcHh9Lm1hdC1jYXJkLXN1YnRpdGxlW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1jYXJkLWNvbnRlbnRbX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToxNHB4fS5tYXQtY2hlY2tib3hbX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZn0ubWF0LWNoZWNrYm94LWxheW91dFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWNoZWNrYm94LWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXtsaW5lLWhlaWdodDoyNHB4fS5tYXQtY2hpcFtfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjE0cHg7Zm9udC13ZWlnaHQ6NTAwfS5tYXQtY2hpcFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWNoaXAtdHJhaWxpbmctaWNvbi5tYXQtaWNvbltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtY2hpcFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWNoaXAtcmVtb3ZlLm1hdC1pY29uW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MThweH0ubWF0LXRhYmxlW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWZ9Lm1hdC1oZWFkZXItY2VsbFtfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjEycHg7Zm9udC13ZWlnaHQ6NTAwfS5tYXQtY2VsbFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtZm9vdGVyLWNlbGxbX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToxNHB4fS5tYXQtY2FsZW5kYXJbX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZn0ubWF0LWNhbGVuZGFyLWJvZHlbX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToxM3B4fS5tYXQtY2FsZW5kYXItYm9keS1sYWJlbFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtY2FsZW5kYXItcGVyaW9kLWJ1dHRvbltfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjE0cHg7Zm9udC13ZWlnaHQ6NTAwfS5tYXQtY2FsZW5kYXItdGFibGUtaGVhZGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIHRoW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MTFweDtmb250LXdlaWdodDo0MDB9Lm1hdC1kaWFsb2ctdGl0bGVbX25nY29udGVudC0lQ09NUCVde2ZvbnQ6NTAwIDIwcHgvMzJweCBSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7bGV0dGVyLXNwYWNpbmc6bm9ybWFsfS5tYXQtZXhwYW5zaW9uLXBhbmVsLWhlYWRlcltfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2ZvbnQtc2l6ZToxNXB4O2ZvbnQtd2VpZ2h0OjQwMH0ubWF0LWV4cGFuc2lvbi1wYW5lbC1jb250ZW50W19uZ2NvbnRlbnQtJUNPTVAlXXtmb250OjQwMCAxNHB4LzIwcHggUm9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2xldHRlci1zcGFjaW5nOm5vcm1hbH0ubWF0LWZvcm0tZmllbGRbX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZTppbmhlcml0O2ZvbnQtd2VpZ2h0OjQwMDtsaW5lLWhlaWdodDoxLjEyNTtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7bGV0dGVyLXNwYWNpbmc6bm9ybWFsfS5tYXQtZm9ybS1maWVsZC13cmFwcGVyW19uZ2NvbnRlbnQtJUNPTVAlXXtwYWRkaW5nLWJvdHRvbToxLjM0Mzc1ZW19Lm1hdC1mb3JtLWZpZWxkLXByZWZpeFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWljb25bX25nY29udGVudC0lQ09NUCVdLCAubWF0LWZvcm0tZmllbGQtc3VmZml4W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaWNvbltfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjE1MCU7bGluZS1oZWlnaHQ6MS4xMjV9Lm1hdC1mb3JtLWZpZWxkLXByZWZpeFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWljb24tYnV0dG9uW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1mb3JtLWZpZWxkLXN1ZmZpeFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWljb24tYnV0dG9uW19uZ2NvbnRlbnQtJUNPTVAlXXtoZWlnaHQ6MS41ZW07d2lkdGg6MS41ZW19Lm1hdC1mb3JtLWZpZWxkLXByZWZpeFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWljb24tYnV0dG9uW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaWNvbltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtZm9ybS1maWVsZC1zdWZmaXhbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pY29uLWJ1dHRvbltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWljb25bX25nY29udGVudC0lQ09NUCVde2hlaWdodDoxLjEyNWVtO2xpbmUtaGVpZ2h0OjEuMTI1fS5tYXQtZm9ybS1maWVsZC1pbmZpeFtfbmdjb250ZW50LSVDT01QJV17cGFkZGluZzouNWVtIDA7Ym9yZGVyLXRvcDouODQzNzVlbSBzb2xpZCB0cmFuc3BhcmVudH0ubWF0LWZvcm0tZmllbGQtY2FuLWZsb2F0Lm1hdC1mb3JtLWZpZWxkLXNob3VsZC1mbG9hdFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWZvcm0tZmllbGQtY2FuLWZsb2F0W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaW5wdXQtc2VydmVyW19uZ2NvbnRlbnQtJUNPTVAlXTpmb2N1cyArIC5tYXQtZm9ybS1maWVsZC1sYWJlbC13cmFwcGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17dHJhbnNmb3JtOnRyYW5zbGF0ZVkoLTEuMzQzNzVlbSkgc2NhbGUoMC43NSk7d2lkdGg6MTMzLjMzMzMzMzMzMzMlfS5tYXQtZm9ybS1maWVsZC1jYW4tZmxvYXRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pbnB1dC1zZXJ2ZXJbbGFiZWxdW19uZ2NvbnRlbnQtJUNPTVAlXTpub3QoOmxhYmVsLXNob3duKSArIC5tYXQtZm9ybS1maWVsZC1sYWJlbC13cmFwcGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17dHJhbnNmb3JtOnRyYW5zbGF0ZVkoLTEuMzQzNzRlbSkgc2NhbGUoMC43NSk7d2lkdGg6MTMzLjMzMzM0MzMzMzMlfS5tYXQtZm9ybS1maWVsZC1sYWJlbC13cmFwcGVyW19uZ2NvbnRlbnQtJUNPTVAlXXt0b3A6LTAuODQzNzVlbTtwYWRkaW5nLXRvcDouODQzNzVlbX0ubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVde3RvcDoxLjM0Mzc1ZW19Lm1hdC1mb3JtLWZpZWxkLXVuZGVybGluZVtfbmdjb250ZW50LSVDT01QJV17Ym90dG9tOjEuMzQzNzVlbX0ubWF0LWZvcm0tZmllbGQtc3Vic2NyaXB0LXdyYXBwZXJbX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZTo3NSU7bWFyZ2luLXRvcDouNjY2NjY2NjY2N2VtO3RvcDpjYWxjKDEwMCUgLSAxLjc5MTY2NjY2NjdlbSl9Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtbGVnYWN5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC13cmFwcGVyW19uZ2NvbnRlbnQtJUNPTVAlXXtwYWRkaW5nLWJvdHRvbToxLjI1ZW19Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtbGVnYWN5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1pbmZpeFtfbmdjb250ZW50LSVDT01QJV17cGFkZGluZzouNDM3NWVtIDB9Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtbGVnYWN5Lm1hdC1mb3JtLWZpZWxkLWNhbi1mbG9hdC5tYXQtZm9ybS1maWVsZC1zaG91bGQtZmxvYXRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtbGVnYWN5Lm1hdC1mb3JtLWZpZWxkLWNhbi1mbG9hdFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWlucHV0LXNlcnZlcltfbmdjb250ZW50LSVDT01QJV06Zm9jdXMgKyAubWF0LWZvcm0tZmllbGQtbGFiZWwtd3JhcHBlcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVde3RyYW5zZm9ybTp0cmFuc2xhdGVZKC0xLjI4MTI1ZW0pIHNjYWxlKDAuNzUpIHBlcnNwZWN0aXZlKDEwMHB4KSB0cmFuc2xhdGVaKDAuMDAxcHgpOy1tcy10cmFuc2Zvcm06dHJhbnNsYXRlWSgtMS4yODEyNWVtKSBzY2FsZSgwLjc1KTt3aWR0aDoxMzMuMzMzMzMzMzMzMyV9Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtbGVnYWN5Lm1hdC1mb3JtLWZpZWxkLWNhbi1mbG9hdFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtYXV0b2ZpbGwtY29udHJvbFtfbmdjb250ZW50LSVDT01QJV06LXdlYmtpdC1hdXRvZmlsbCArIC5tYXQtZm9ybS1maWVsZC1sYWJlbC13cmFwcGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17dHJhbnNmb3JtOnRyYW5zbGF0ZVkoLTEuMjgxMjVlbSkgc2NhbGUoMC43NSkgcGVyc3BlY3RpdmUoMTAwcHgpIHRyYW5zbGF0ZVooMC4wMDEwMXB4KTstbXMtdHJhbnNmb3JtOnRyYW5zbGF0ZVkoLTEuMjgxMjRlbSkgc2NhbGUoMC43NSk7d2lkdGg6MTMzLjMzMzM0MzMzMzMlfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWxlZ2FjeS5tYXQtZm9ybS1maWVsZC1jYW4tZmxvYXRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pbnB1dC1zZXJ2ZXJbbGFiZWxdW19uZ2NvbnRlbnQtJUNPTVAlXTpub3QoOmxhYmVsLXNob3duKSArIC5tYXQtZm9ybS1maWVsZC1sYWJlbC13cmFwcGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17dHJhbnNmb3JtOnRyYW5zbGF0ZVkoLTEuMjgxMjVlbSkgc2NhbGUoMC43NSkgcGVyc3BlY3RpdmUoMTAwcHgpIHRyYW5zbGF0ZVooMC4wMDEwMnB4KTstbXMtdHJhbnNmb3JtOnRyYW5zbGF0ZVkoLTEuMjgxMjNlbSkgc2NhbGUoMC43NSk7d2lkdGg6MTMzLjMzMzM1MzMzMzMlfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWxlZ2FjeVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVde3RvcDoxLjI4MTI1ZW19Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtbGVnYWN5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC11bmRlcmxpbmVbX25nY29udGVudC0lQ09NUCVde2JvdHRvbToxLjI1ZW19Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtbGVnYWN5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1zdWJzY3JpcHQtd3JhcHBlcltfbmdjb250ZW50LSVDT01QJV17bWFyZ2luLXRvcDouNTQxNjY2NjY2N2VtO3RvcDpjYWxjKDEwMCUgLSAxLjY2NjY2NjY2NjdlbSl9QG1lZGlhIHByaW50ey5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWxlZ2FjeS5tYXQtZm9ybS1maWVsZC1jYW4tZmxvYXQubWF0LWZvcm0tZmllbGQtc2hvdWxkLWZsb2F0W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWxlZ2FjeS5tYXQtZm9ybS1maWVsZC1jYW4tZmxvYXRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pbnB1dC1zZXJ2ZXJbX25nY29udGVudC0lQ09NUCVdOmZvY3VzICsgLm1hdC1mb3JtLWZpZWxkLWxhYmVsLXdyYXBwZXJbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXt0cmFuc2Zvcm06dHJhbnNsYXRlWSgtMS4yODEyMmVtKSBzY2FsZSgwLjc1KX0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1sZWdhY3kubWF0LWZvcm0tZmllbGQtY2FuLWZsb2F0W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1hdXRvZmlsbC1jb250cm9sW19uZ2NvbnRlbnQtJUNPTVAlXTotd2Via2l0LWF1dG9maWxsICsgLm1hdC1mb3JtLWZpZWxkLWxhYmVsLXdyYXBwZXJbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXt0cmFuc2Zvcm06dHJhbnNsYXRlWSgtMS4yODEyMWVtKSBzY2FsZSgwLjc1KX0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1sZWdhY3kubWF0LWZvcm0tZmllbGQtY2FuLWZsb2F0W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaW5wdXQtc2VydmVyW2xhYmVsXVtfbmdjb250ZW50LSVDT01QJV06bm90KDpsYWJlbC1zaG93bikgKyAubWF0LWZvcm0tZmllbGQtbGFiZWwtd3JhcHBlcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVde3RyYW5zZm9ybTp0cmFuc2xhdGVZKC0xLjI4MTJlbSkgc2NhbGUoMC43NSl9fS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWZpbGxbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWluZml4W19uZ2NvbnRlbnQtJUNPTVAlXXtwYWRkaW5nOi4yNWVtIDAgLjc1ZW0gMH0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1maWxsW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17dG9wOjEuMDkzNzVlbTttYXJnaW4tdG9wOi0wLjVlbX0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1maWxsLm1hdC1mb3JtLWZpZWxkLWNhbi1mbG9hdC5tYXQtZm9ybS1maWVsZC1zaG91bGQtZmxvYXRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtZmlsbC5tYXQtZm9ybS1maWVsZC1jYW4tZmxvYXRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pbnB1dC1zZXJ2ZXJbX25nY29udGVudC0lQ09NUCVdOmZvY3VzICsgLm1hdC1mb3JtLWZpZWxkLWxhYmVsLXdyYXBwZXJbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXt0cmFuc2Zvcm06dHJhbnNsYXRlWSgtMC41OTM3NWVtKSBzY2FsZSgwLjc1KTt3aWR0aDoxMzMuMzMzMzMzMzMzMyV9Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtZmlsbC5tYXQtZm9ybS1maWVsZC1jYW4tZmxvYXRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pbnB1dC1zZXJ2ZXJbbGFiZWxdW19uZ2NvbnRlbnQtJUNPTVAlXTpub3QoOmxhYmVsLXNob3duKSArIC5tYXQtZm9ybS1maWVsZC1sYWJlbC13cmFwcGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17dHJhbnNmb3JtOnRyYW5zbGF0ZVkoLTAuNTkzNzRlbSkgc2NhbGUoMC43NSk7d2lkdGg6MTMzLjMzMzM0MzMzMzMlfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLW91dGxpbmVbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWluZml4W19uZ2NvbnRlbnQtJUNPTVAlXXtwYWRkaW5nOjFlbSAwIDFlbSAwfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLW91dGxpbmVbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXt0b3A6MS44NDM3NWVtO21hcmdpbi10b3A6LTAuMjVlbX0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1vdXRsaW5lLm1hdC1mb3JtLWZpZWxkLWNhbi1mbG9hdC5tYXQtZm9ybS1maWVsZC1zaG91bGQtZmxvYXRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2Utb3V0bGluZS5tYXQtZm9ybS1maWVsZC1jYW4tZmxvYXRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pbnB1dC1zZXJ2ZXJbX25nY29udGVudC0lQ09NUCVdOmZvY3VzICsgLm1hdC1mb3JtLWZpZWxkLWxhYmVsLXdyYXBwZXJbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXt0cmFuc2Zvcm06dHJhbnNsYXRlWSgtMS41OTM3NWVtKSBzY2FsZSgwLjc1KTt3aWR0aDoxMzMuMzMzMzMzMzMzMyV9Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2Utb3V0bGluZS5tYXQtZm9ybS1maWVsZC1jYW4tZmxvYXRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pbnB1dC1zZXJ2ZXJbbGFiZWxdW19uZ2NvbnRlbnQtJUNPTVAlXTpub3QoOmxhYmVsLXNob3duKSArIC5tYXQtZm9ybS1maWVsZC1sYWJlbC13cmFwcGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17dHJhbnNmb3JtOnRyYW5zbGF0ZVkoLTEuNTkzNzRlbSkgc2NhbGUoMC43NSk7d2lkdGg6MTMzLjMzMzM0MzMzMzMlfS5tYXQtZ3JpZC10aWxlLWhlYWRlcltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtZ3JpZC10aWxlLWZvb3Rlcltfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjE0cHh9Lm1hdC1ncmlkLXRpbGUtaGVhZGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGluZVtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtZ3JpZC10aWxlLWZvb3Rlcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpbmVbX25nY29udGVudC0lQ09NUCVde3doaXRlLXNwYWNlOm5vd3JhcDtvdmVyZmxvdzpoaWRkZW47dGV4dC1vdmVyZmxvdzplbGxpcHNpcztkaXNwbGF5OmJsb2NrO2JveC1zaXppbmc6Ym9yZGVyLWJveH0ubWF0LWdyaWQtdGlsZS1oZWFkZXJbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saW5lW19uZ2NvbnRlbnQtJUNPTVAlXTpudGgtY2hpbGQobisyKSwgLm1hdC1ncmlkLXRpbGUtZm9vdGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGluZVtfbmdjb250ZW50LSVDT01QJV06bnRoLWNoaWxkKG4rMil7Zm9udC1zaXplOjEycHh9aW5wdXQubWF0LWlucHV0LWVsZW1lbnRbX25nY29udGVudC0lQ09NUCVde21hcmdpbi10b3A6LTAuMDYyNWVtfS5tYXQtbWVudS1pdGVtW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7Zm9udC1zaXplOjE0cHg7Zm9udC13ZWlnaHQ6NDAwfS5tYXQtcGFnaW5hdG9yW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1wYWdpbmF0b3ItcGFnZS1zaXplW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtc2VsZWN0LXRyaWdnZXJbX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtmb250LXNpemU6MTJweH0ubWF0LXJhZGlvLWJ1dHRvbltfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmfS5tYXQtc2VsZWN0W19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWZ9Lm1hdC1zZWxlY3QtdHJpZ2dlcltfbmdjb250ZW50LSVDT01QJV17aGVpZ2h0OjEuMTI1ZW19Lm1hdC1zbGlkZS10b2dnbGUtY29udGVudFtfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmfS5tYXQtc2xpZGVyLXRodW1iLWxhYmVsLXRleHRbX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtmb250LXNpemU6MTJweDtmb250LXdlaWdodDo1MDB9Lm1hdC1zdGVwcGVyLXZlcnRpY2FsW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1zdGVwcGVyLWhvcml6b250YWxbX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZn0ubWF0LXN0ZXAtbGFiZWxbX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToxNHB4O2ZvbnQtd2VpZ2h0OjQwMH0ubWF0LXN0ZXAtc3ViLWxhYmVsLWVycm9yW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXdlaWdodDpub3JtYWx9Lm1hdC1zdGVwLWxhYmVsLWVycm9yW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MTRweH0ubWF0LXN0ZXAtbGFiZWwtc2VsZWN0ZWRbX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToxNHB4O2ZvbnQtd2VpZ2h0OjUwMH0ubWF0LXRhYi1ncm91cFtfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmfS5tYXQtdGFiLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10YWItbGlua1tfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2ZvbnQtc2l6ZToxNHB4O2ZvbnQtd2VpZ2h0OjUwMH0ubWF0LXRvb2xiYXJbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXRvb2xiYXJbX25nY29udGVudC0lQ09NUCVdICAgaDFbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXRvb2xiYXJbX25nY29udGVudC0lQ09NUCVdICAgaDJbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXRvb2xiYXJbX25nY29udGVudC0lQ09NUCVdICAgaDNbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXRvb2xiYXJbX25nY29udGVudC0lQ09NUCVdICAgaDRbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXRvb2xiYXJbX25nY29udGVudC0lQ09NUCVdICAgaDVbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXRvb2xiYXJbX25nY29udGVudC0lQ09NUCVdICAgaDZbX25nY29udGVudC0lQ09NUCVde2ZvbnQ6NTAwIDIwcHgvMzJweCBSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7bGV0dGVyLXNwYWNpbmc6bm9ybWFsO21hcmdpbjowfS5tYXQtdG9vbHRpcFtfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2ZvbnQtc2l6ZToxMHB4O3BhZGRpbmctdG9wOjZweDtwYWRkaW5nLWJvdHRvbTo2cHh9Lm1hdC10b29sdGlwLWhhbmRzZXRbX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToxNHB4O3BhZGRpbmctdG9wOjhweDtwYWRkaW5nLWJvdHRvbTo4cHh9Lm1hdC1saXN0LWl0ZW1bX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZn0ubWF0LWxpc3Qtb3B0aW9uW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWZ9Lm1hdC1saXN0LWJhc2VbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saXN0LWl0ZW1bX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToxNnB4fS5tYXQtbGlzdC1iYXNlW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGlzdC1pdGVtW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGluZVtfbmdjb250ZW50LSVDT01QJV17d2hpdGUtc3BhY2U6bm93cmFwO292ZXJmbG93OmhpZGRlbjt0ZXh0LW92ZXJmbG93OmVsbGlwc2lzO2Rpc3BsYXk6YmxvY2s7Ym94LXNpemluZzpib3JkZXItYm94fS5tYXQtbGlzdC1iYXNlW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGlzdC1pdGVtW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGluZVtfbmdjb250ZW50LSVDT01QJV06bnRoLWNoaWxkKG4rMil7Zm9udC1zaXplOjE0cHh9Lm1hdC1saXN0LWJhc2VbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saXN0LW9wdGlvbltfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjE2cHh9Lm1hdC1saXN0LWJhc2VbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saXN0LW9wdGlvbltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpbmVbX25nY29udGVudC0lQ09NUCVde3doaXRlLXNwYWNlOm5vd3JhcDtvdmVyZmxvdzpoaWRkZW47dGV4dC1vdmVyZmxvdzplbGxpcHNpcztkaXNwbGF5OmJsb2NrO2JveC1zaXppbmc6Ym9yZGVyLWJveH0ubWF0LWxpc3QtYmFzZVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpc3Qtb3B0aW9uW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGluZVtfbmdjb250ZW50LSVDT01QJV06bnRoLWNoaWxkKG4rMil7Zm9udC1zaXplOjE0cHh9Lm1hdC1saXN0LWJhc2VbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1zdWJoZWFkZXJbX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtmb250LXNpemU6MTRweDtmb250LXdlaWdodDo1MDB9Lm1hdC1saXN0LWJhc2VbZGVuc2VdW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGlzdC1pdGVtW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MTJweH0ubWF0LWxpc3QtYmFzZVtkZW5zZV1bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saXN0LWl0ZW1bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saW5lW19uZ2NvbnRlbnQtJUNPTVAlXXt3aGl0ZS1zcGFjZTpub3dyYXA7b3ZlcmZsb3c6aGlkZGVuO3RleHQtb3ZlcmZsb3c6ZWxsaXBzaXM7ZGlzcGxheTpibG9jaztib3gtc2l6aW5nOmJvcmRlci1ib3h9Lm1hdC1saXN0LWJhc2VbZGVuc2VdW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGlzdC1pdGVtW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGluZVtfbmdjb250ZW50LSVDT01QJV06bnRoLWNoaWxkKG4rMil7Zm9udC1zaXplOjEycHh9Lm1hdC1saXN0LWJhc2VbZGVuc2VdW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGlzdC1vcHRpb25bX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToxMnB4fS5tYXQtbGlzdC1iYXNlW2RlbnNlXVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpc3Qtb3B0aW9uW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGluZVtfbmdjb250ZW50LSVDT01QJV17d2hpdGUtc3BhY2U6bm93cmFwO292ZXJmbG93OmhpZGRlbjt0ZXh0LW92ZXJmbG93OmVsbGlwc2lzO2Rpc3BsYXk6YmxvY2s7Ym94LXNpemluZzpib3JkZXItYm94fS5tYXQtbGlzdC1iYXNlW2RlbnNlXVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpc3Qtb3B0aW9uW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGluZVtfbmdjb250ZW50LSVDT01QJV06bnRoLWNoaWxkKG4rMil7Zm9udC1zaXplOjEycHh9Lm1hdC1saXN0LWJhc2VbZGVuc2VdW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtc3ViaGVhZGVyW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7Zm9udC1zaXplOjEycHg7Zm9udC13ZWlnaHQ6NTAwfS5tYXQtb3B0aW9uW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7Zm9udC1zaXplOjE2cHh9Lm1hdC1vcHRncm91cC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17Zm9udDo1MDAgMTRweC8yNHB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtsZXR0ZXItc3BhY2luZzpub3JtYWx9Lm1hdC1zaW1wbGUtc25hY2tiYXJbX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtmb250LXNpemU6MTRweH0ubWF0LXNpbXBsZS1zbmFja2Jhci1hY3Rpb25bX25nY29udGVudC0lQ09NUCVde2xpbmUtaGVpZ2h0OjE7Zm9udC1mYW1pbHk6aW5oZXJpdDtmb250LXNpemU6aW5oZXJpdDtmb250LXdlaWdodDo1MDB9Lm1hdC10cmVlW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWZ9Lm1hdC10cmVlLW5vZGVbX25nY29udGVudC0lQ09NUCVdLCAubWF0LW5lc3RlZC10cmVlLW5vZGVbX25nY29udGVudC0lQ09NUCVde2ZvbnQtd2VpZ2h0OjQwMDtmb250LXNpemU6MTRweH0ubWF0LXJpcHBsZVtfbmdjb250ZW50LSVDT01QJV17b3ZlcmZsb3c6aGlkZGVuO3Bvc2l0aW9uOnJlbGF0aXZlfS5tYXQtcmlwcGxlW19uZ2NvbnRlbnQtJUNPTVAlXTpub3QoOmVtcHR5KXt0cmFuc2Zvcm06dHJhbnNsYXRlWigwKX0ubWF0LXJpcHBsZS5tYXQtcmlwcGxlLXVuYm91bmRlZFtfbmdjb250ZW50LSVDT01QJV17b3ZlcmZsb3c6dmlzaWJsZX0ubWF0LXJpcHBsZS1lbGVtZW50W19uZ2NvbnRlbnQtJUNPTVAlXXtwb3NpdGlvbjphYnNvbHV0ZTtib3JkZXItcmFkaXVzOjUwJTtwb2ludGVyLWV2ZW50czpub25lO3RyYW5zaXRpb246b3BhY2l0eSx0cmFuc2Zvcm0gMG1zIGN1YmljLWJlemllcigwLCAwLCAwLjIsIDEpO3RyYW5zZm9ybTpzY2FsZSgwKX0uY2RrLWhpZ2gtY29udHJhc3QtYWN0aXZlW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtcmlwcGxlLWVsZW1lbnRbX25nY29udGVudC0lQ09NUCVde2Rpc3BsYXk6bm9uZX0uY2RrLXZpc3VhbGx5LWhpZGRlbltfbmdjb250ZW50LSVDT01QJV17Ym9yZGVyOjA7Y2xpcDpyZWN0KDAgMCAwIDApO2hlaWdodDoxcHg7bWFyZ2luOi0xcHg7b3ZlcmZsb3c6aGlkZGVuO3BhZGRpbmc6MDtwb3NpdGlvbjphYnNvbHV0ZTt3aWR0aDoxcHg7b3V0bGluZTowOy13ZWJraXQtYXBwZWFyYW5jZTpub25lOy1tb3otYXBwZWFyYW5jZTpub25lfS5jZGstb3ZlcmxheS1jb250YWluZXJbX25nY29udGVudC0lQ09NUCVdLCAuY2RrLWdsb2JhbC1vdmVybGF5LXdyYXBwZXJbX25nY29udGVudC0lQ09NUCVde3BvaW50ZXItZXZlbnRzOm5vbmU7dG9wOjA7bGVmdDowO2hlaWdodDoxMDAlO3dpZHRoOjEwMCV9LmNkay1vdmVybGF5LWNvbnRhaW5lcltfbmdjb250ZW50LSVDT01QJV17cG9zaXRpb246Zml4ZWQ7ei1pbmRleDoxMDAwfS5jZGstb3ZlcmxheS1jb250YWluZXJbX25nY29udGVudC0lQ09NUCVdOmVtcHR5e2Rpc3BsYXk6bm9uZX0uY2RrLWdsb2JhbC1vdmVybGF5LXdyYXBwZXJbX25nY29udGVudC0lQ09NUCVde2Rpc3BsYXk6ZmxleDtwb3NpdGlvbjphYnNvbHV0ZTt6LWluZGV4OjEwMDB9LmNkay1vdmVybGF5LXBhbmVbX25nY29udGVudC0lQ09NUCVde3Bvc2l0aW9uOmFic29sdXRlO3BvaW50ZXItZXZlbnRzOmF1dG87Ym94LXNpemluZzpib3JkZXItYm94O3otaW5kZXg6MTAwMDtkaXNwbGF5OmZsZXg7bWF4LXdpZHRoOjEwMCU7bWF4LWhlaWdodDoxMDAlfS5jZGstb3ZlcmxheS1iYWNrZHJvcFtfbmdjb250ZW50LSVDT01QJV17cG9zaXRpb246YWJzb2x1dGU7dG9wOjA7Ym90dG9tOjA7bGVmdDowO3JpZ2h0OjA7ei1pbmRleDoxMDAwO3BvaW50ZXItZXZlbnRzOmF1dG87LXdlYmtpdC10YXAtaGlnaGxpZ2h0LWNvbG9yOnRyYW5zcGFyZW50O3RyYW5zaXRpb246b3BhY2l0eSA0MDBtcyBjdWJpYy1iZXppZXIoMC4yNSwgMC44LCAwLjI1LCAxKTtvcGFjaXR5OjB9LmNkay1vdmVybGF5LWJhY2tkcm9wLmNkay1vdmVybGF5LWJhY2tkcm9wLXNob3dpbmdbX25nY29udGVudC0lQ09NUCVde29wYWNpdHk6MX1AbWVkaWEgc2NyZWVuIGFuZCAoLW1zLWhpZ2gtY29udHJhc3Q6IGFjdGl2ZSl7LmNkay1vdmVybGF5LWJhY2tkcm9wLmNkay1vdmVybGF5LWJhY2tkcm9wLXNob3dpbmdbX25nY29udGVudC0lQ09NUCVde29wYWNpdHk6LjZ9fS5jZGstb3ZlcmxheS1kYXJrLWJhY2tkcm9wW19uZ2NvbnRlbnQtJUNPTVAlXXtiYWNrZ3JvdW5kOnJnYmEoMCwwLDAsLjMyKX0uY2RrLW92ZXJsYXktdHJhbnNwYXJlbnQtYmFja2Ryb3BbX25nY29udGVudC0lQ09NUCVdLCAuY2RrLW92ZXJsYXktdHJhbnNwYXJlbnQtYmFja2Ryb3AuY2RrLW92ZXJsYXktYmFja2Ryb3Atc2hvd2luZ1tfbmdjb250ZW50LSVDT01QJV17b3BhY2l0eTowfS5jZGstb3ZlcmxheS1jb25uZWN0ZWQtcG9zaXRpb24tYm91bmRpbmctYm94W19uZ2NvbnRlbnQtJUNPTVAlXXtwb3NpdGlvbjphYnNvbHV0ZTt6LWluZGV4OjEwMDA7ZGlzcGxheTpmbGV4O2ZsZXgtZGlyZWN0aW9uOmNvbHVtbjttaW4td2lkdGg6MXB4O21pbi1oZWlnaHQ6MXB4fS5jZGstZ2xvYmFsLXNjcm9sbGJsb2NrW19uZ2NvbnRlbnQtJUNPTVAlXXtwb3NpdGlvbjpmaXhlZDt3aWR0aDoxMDAlO292ZXJmbG93LXk6c2Nyb2xsfUBrZXlmcmFtZXMgY2RrLXRleHQtZmllbGQtYXV0b2ZpbGwtc3RhcnR7fUBrZXlmcmFtZXMgY2RrLXRleHQtZmllbGQtYXV0b2ZpbGwtZW5ke30uY2RrLXRleHQtZmllbGQtYXV0b2ZpbGwtbW9uaXRvcmVkW19uZ2NvbnRlbnQtJUNPTVAlXTotd2Via2l0LWF1dG9maWxse2FuaW1hdGlvbjpjZGstdGV4dC1maWVsZC1hdXRvZmlsbC1zdGFydCAwcyAxbXN9LmNkay10ZXh0LWZpZWxkLWF1dG9maWxsLW1vbml0b3JlZFtfbmdjb250ZW50LSVDT01QJV06bm90KDotd2Via2l0LWF1dG9maWxsKXthbmltYXRpb246Y2RrLXRleHQtZmllbGQtYXV0b2ZpbGwtZW5kIDBzIDFtc310ZXh0YXJlYS5jZGstdGV4dGFyZWEtYXV0b3NpemVbX25nY29udGVudC0lQ09NUCVde3Jlc2l6ZTpub25lfXRleHRhcmVhLmNkay10ZXh0YXJlYS1hdXRvc2l6ZS1tZWFzdXJpbmdbX25nY29udGVudC0lQ09NUCVde3BhZGRpbmc6MnB4IDAgIWltcG9ydGFudDtib3gtc2l6aW5nOmNvbnRlbnQtYm94ICFpbXBvcnRhbnQ7aGVpZ2h0OmF1dG8gIWltcG9ydGFudDtvdmVyZmxvdzpoaWRkZW4gIWltcG9ydGFudH10ZXh0YXJlYS5jZGstdGV4dGFyZWEtYXV0b3NpemUtbWVhc3VyaW5nLWZpcmVmb3hbX25nY29udGVudC0lQ09NUCVde3BhZGRpbmc6MnB4IDAgIWltcG9ydGFudDtib3gtc2l6aW5nOmNvbnRlbnQtYm94ICFpbXBvcnRhbnQ7aGVpZ2h0OjAgIWltcG9ydGFudH0ubWF0LWZvY3VzLWluZGljYXRvcltfbmdjb250ZW50LSVDT01QJV17cG9zaXRpb246cmVsYXRpdmV9Lm1hdC1tZGMtZm9jdXMtaW5kaWNhdG9yW19uZ2NvbnRlbnQtJUNPTVAlXXtwb3NpdGlvbjpyZWxhdGl2ZX0ubWF0LXJpcHBsZS1lbGVtZW50W19uZ2NvbnRlbnQtJUNPTVAlXXtiYWNrZ3JvdW5kLWNvbG9yOnJnYmEoMCwwLDAsLjEpfS5tYXQtb3B0aW9uW19uZ2NvbnRlbnQtJUNPTVAlXXtjb2xvcjojMjEyMTIxfS5tYXQtb3B0aW9uW19uZ2NvbnRlbnQtJUNPTVAlXTpob3Zlcjpub3QoLm1hdC1vcHRpb24tZGlzYWJsZWQpLCAubWF0LW9wdGlvbltfbmdjb250ZW50LSVDT01QJV06Zm9jdXM6bm90KC5tYXQtb3B0aW9uLWRpc2FibGVkKXtiYWNrZ3JvdW5kOnJnYmEoMCwwLDAsLjA0KX0ubWF0LW9wdGlvbi5tYXQtc2VsZWN0ZWRbX25nY29udGVudC0lQ09NUCVdOm5vdCgubWF0LW9wdGlvbi1tdWx0aXBsZSk6bm90KC5tYXQtb3B0aW9uLWRpc2FibGVkKXtiYWNrZ3JvdW5kOnJnYmEoMCwwLDAsLjA0KX0ubWF0LW9wdGlvbi5tYXQtYWN0aXZlW19uZ2NvbnRlbnQtJUNPTVAlXXtiYWNrZ3JvdW5kOnJnYmEoMCwwLDAsLjA0KTtjb2xvcjojMjEyMTIxfS5tYXQtb3B0aW9uLm1hdC1vcHRpb24tZGlzYWJsZWRbX25nY29udGVudC0lQ09NUCVde2NvbG9yOnJnYmEoMCwwLDAsLjM4KX0ubWF0LXByaW1hcnlbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1vcHRpb24ubWF0LXNlbGVjdGVkW19uZ2NvbnRlbnQtJUNPTVAlXTpub3QoLm1hdC1vcHRpb24tZGlzYWJsZWQpe2NvbG9yOiNmNTdjMDB9Lm1hdC1hY2NlbnRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1vcHRpb24ubWF0LXNlbGVjdGVkW19uZ2NvbnRlbnQtJUNPTVAlXTpub3QoLm1hdC1vcHRpb24tZGlzYWJsZWQpe2NvbG9yOiNmZjk4MDB9Lm1hdC13YXJuW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtb3B0aW9uLm1hdC1zZWxlY3RlZFtfbmdjb250ZW50LSVDT01QJV06bm90KC5tYXQtb3B0aW9uLWRpc2FibGVkKXtjb2xvcjojZjQ0MzM2fS5tYXQtb3B0Z3JvdXAtbGFiZWxbX25nY29udGVudC0lQ09NUCVde2NvbG9yOiM2MTYxNjF9Lm1hdC1vcHRncm91cC1kaXNhYmxlZFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LW9wdGdyb3VwLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXtjb2xvcjpyZ2JhKDAsMCwwLC4zOCl9Lm1hdC1wc2V1ZG8tY2hlY2tib3hbX25nY29udGVudC0lQ09NUCVde2NvbG9yOiM2MTYxNjF9Lm1hdC1wc2V1ZG8tY2hlY2tib3hbX25nY29udGVudC0lQ09NUCVdOjphZnRlcntjb2xvcjojZmFmYWZhfS5tYXQtcHNldWRvLWNoZWNrYm94LWRpc2FibGVkW19uZ2NvbnRlbnQtJUNPTVAlXXtjb2xvcjojYjBiMGIwfS5tYXQtcHJpbWFyeVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXBzZXVkby1jaGVja2JveC1jaGVja2VkW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1wcmltYXJ5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtcHNldWRvLWNoZWNrYm94LWluZGV0ZXJtaW5hdGVbX25nY29udGVudC0lQ09NUCVde2JhY2tncm91bmQ6I2Y1N2MwMH0ubWF0LXBzZXVkby1jaGVja2JveC1jaGVja2VkW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1wc2V1ZG8tY2hlY2tib3gtaW5kZXRlcm1pbmF0ZVtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtYWNjZW50W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtcHNldWRvLWNoZWNrYm94LWNoZWNrZWRbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWFjY2VudFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXBzZXVkby1jaGVja2JveC1pbmRldGVybWluYXRlW19uZ2NvbnRlbnQtJUNPTVAlXXtiYWNrZ3JvdW5kOiNmZjk4MDB9Lm1hdC13YXJuW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtcHNldWRvLWNoZWNrYm94LWNoZWNrZWRbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXdhcm5bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1wc2V1ZG8tY2hlY2tib3gtaW5kZXRlcm1pbmF0ZVtfbmdjb250ZW50LSVDT01QJV17YmFja2dyb3VuZDojZjQ0MzM2fS5tYXQtcHNldWRvLWNoZWNrYm94LWNoZWNrZWQubWF0LXBzZXVkby1jaGVja2JveC1kaXNhYmxlZFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtcHNldWRvLWNoZWNrYm94LWluZGV0ZXJtaW5hdGUubWF0LXBzZXVkby1jaGVja2JveC1kaXNhYmxlZFtfbmdjb250ZW50LSVDT01QJV17YmFja2dyb3VuZDojYjBiMGIwfS5tYXQtYXBwLWJhY2tncm91bmRbX25nY29udGVudC0lQ09NUCVde2JhY2tncm91bmQtY29sb3I6I2ZhZmFmYTtjb2xvcjojMjEyMTIxfS5tYXQtZWxldmF0aW9uLXowW19uZ2NvbnRlbnQtJUNPTVAlXXtib3gtc2hhZG93OjBweCAwcHggMHB4IDBweCByZ2JhKDAsIDAsIDAsIDAuMiksMHB4IDBweCAwcHggMHB4IHJnYmEoMCwgMCwgMCwgMC4xNCksMHB4IDBweCAwcHggMHB4IHJnYmEoMCwgMCwgMCwgMC4xMil9Lm1hdC1lbGV2YXRpb24tejFbX25nY29udGVudC0lQ09NUCVde2JveC1zaGFkb3c6MHB4IDJweCAxcHggLTFweCByZ2JhKDAsIDAsIDAsIDAuMiksMHB4IDFweCAxcHggMHB4IHJnYmEoMCwgMCwgMCwgMC4xNCksMHB4IDFweCAzcHggMHB4IHJnYmEoMCwgMCwgMCwgMC4xMil9Lm1hdC1lbGV2YXRpb24tejJbX25nY29udGVudC0lQ09NUCVde2JveC1zaGFkb3c6MHB4IDNweCAxcHggLTJweCByZ2JhKDAsIDAsIDAsIDAuMiksMHB4IDJweCAycHggMHB4IHJnYmEoMCwgMCwgMCwgMC4xNCksMHB4IDFweCA1cHggMHB4IHJnYmEoMCwgMCwgMCwgMC4xMil9Lm1hdC1lbGV2YXRpb24tejNbX25nY29udGVudC0lQ09NUCVde2JveC1zaGFkb3c6MHB4IDNweCAzcHggLTJweCByZ2JhKDAsIDAsIDAsIDAuMiksMHB4IDNweCA0cHggMHB4IHJnYmEoMCwgMCwgMCwgMC4xNCksMHB4IDFweCA4cHggMHB4IHJnYmEoMCwgMCwgMCwgMC4xMil9Lm1hdC1lbGV2YXRpb24tejRbX25nY29udGVudC0lQ09NUCVde2JveC1zaGFkb3c6MHB4IDJweCA0cHggLTFweCByZ2JhKDAsIDAsIDAsIDAuMiksMHB4IDRweCA1cHggMHB4IHJnYmEoMCwgMCwgMCwgMC4xNCksMHB4IDFweCAxMHB4IDBweCByZ2JhKDAsIDAsIDAsIDAuMTIpfS5tYXQtZWxldmF0aW9uLXo1W19uZ2NvbnRlbnQtJUNPTVAlXXtib3gtc2hhZG93OjBweCAzcHggNXB4IC0xcHggcmdiYSgwLCAwLCAwLCAwLjIpLDBweCA1cHggOHB4IDBweCByZ2JhKDAsIDAsIDAsIDAuMTQpLDBweCAxcHggMTRweCAwcHggcmdiYSgwLCAwLCAwLCAwLjEyKX0ubWF0LWVsZXZhdGlvbi16Nltfbmdjb250ZW50LSVDT01QJV17Ym94LXNoYWRvdzowcHggM3B4IDVweCAtMXB4IHJnYmEoMCwgMCwgMCwgMC4yKSwwcHggNnB4IDEwcHggMHB4IHJnYmEoMCwgMCwgMCwgMC4xNCksMHB4IDFweCAxOHB4IDBweCByZ2JhKDAsIDAsIDAsIDAuMTIpfS5tYXQtZWxldmF0aW9uLXo3W19uZ2NvbnRlbnQtJUNPTVAlXXtib3gtc2hhZG93OjBweCA0cHggNXB4IC0ycHggcmdiYSgwLCAwLCAwLCAwLjIpLDBweCA3cHggMTBweCAxcHggcmdiYSgwLCAwLCAwLCAwLjE0KSwwcHggMnB4IDE2cHggMXB4IHJnYmEoMCwgMCwgMCwgMC4xMil9Lm1hdC1lbGV2YXRpb24tejhbX25nY29udGVudC0lQ09NUCVde2JveC1zaGFkb3c6MHB4IDVweCA1cHggLTNweCByZ2JhKDAsIDAsIDAsIDAuMiksMHB4IDhweCAxMHB4IDFweCByZ2JhKDAsIDAsIDAsIDAuMTQpLDBweCAzcHggMTRweCAycHggcmdiYSgwLCAwLCAwLCAwLjEyKX0ubWF0LWVsZXZhdGlvbi16OVtfbmdjb250ZW50LSVDT01QJV17Ym94LXNoYWRvdzowcHggNXB4IDZweCAtM3B4IHJnYmEoMCwgMCwgMCwgMC4yKSwwcHggOXB4IDEycHggMXB4IHJnYmEoMCwgMCwgMCwgMC4xNCksMHB4IDNweCAxNnB4IDJweCByZ2JhKDAsIDAsIDAsIDAuMTIpfS5tYXQtZWxldmF0aW9uLXoxMFtfbmdjb250ZW50LSVDT01QJV17Ym94LXNoYWRvdzowcHggNnB4IDZweCAtM3B4IHJnYmEoMCwgMCwgMCwgMC4yKSwwcHggMTBweCAxNHB4IDFweCByZ2JhKDAsIDAsIDAsIDAuMTQpLDBweCA0cHggMThweCAzcHggcmdiYSgwLCAwLCAwLCAwLjEyKX0ubWF0LWVsZXZhdGlvbi16MTFbX25nY29udGVudC0lQ09NUCVde2JveC1zaGFkb3c6MHB4IDZweCA3cHggLTRweCByZ2JhKDAsIDAsIDAsIDAuMiksMHB4IDExcHggMTVweCAxcHggcmdiYSgwLCAwLCAwLCAwLjE0KSwwcHggNHB4IDIwcHggM3B4IHJnYmEoMCwgMCwgMCwgMC4xMil9Lm1hdC1lbGV2YXRpb24tejEyW19uZ2NvbnRlbnQtJUNPTVAlXXtib3gtc2hhZG93OjBweCA3cHggOHB4IC00cHggcmdiYSgwLCAwLCAwLCAwLjIpLDBweCAxMnB4IDE3cHggMnB4IHJnYmEoMCwgMCwgMCwgMC4xNCksMHB4IDVweCAyMnB4IDRweCByZ2JhKDAsIDAsIDAsIDAuMTIpfS5tYXQtZWxldmF0aW9uLXoxM1tfbmdjb250ZW50LSVDT01QJV17Ym94LXNoYWRvdzowcHggN3B4IDhweCAtNHB4IHJnYmEoMCwgMCwgMCwgMC4yKSwwcHggMTNweCAxOXB4IDJweCByZ2JhKDAsIDAsIDAsIDAuMTQpLDBweCA1cHggMjRweCA0cHggcmdiYSgwLCAwLCAwLCAwLjEyKX0ubWF0LWVsZXZhdGlvbi16MTRbX25nY29udGVudC0lQ09NUCVde2JveC1zaGFkb3c6MHB4IDdweCA5cHggLTRweCByZ2JhKDAsIDAsIDAsIDAuMiksMHB4IDE0cHggMjFweCAycHggcmdiYSgwLCAwLCAwLCAwLjE0KSwwcHggNXB4IDI2cHggNHB4IHJnYmEoMCwgMCwgMCwgMC4xMil9Lm1hdC1lbGV2YXRpb24tejE1W19uZ2NvbnRlbnQtJUNPTVAlXXtib3gtc2hhZG93OjBweCA4cHggOXB4IC01cHggcmdiYSgwLCAwLCAwLCAwLjIpLDBweCAxNXB4IDIycHggMnB4IHJnYmEoMCwgMCwgMCwgMC4xNCksMHB4IDZweCAyOHB4IDVweCByZ2JhKDAsIDAsIDAsIDAuMTIpfS5tYXQtZWxldmF0aW9uLXoxNltfbmdjb250ZW50LSVDT01QJV17Ym94LXNoYWRvdzowcHggOHB4IDEwcHggLTVweCByZ2JhKDAsIDAsIDAsIDAuMiksMHB4IDE2cHggMjRweCAycHggcmdiYSgwLCAwLCAwLCAwLjE0KSwwcHggNnB4IDMwcHggNXB4IHJnYmEoMCwgMCwgMCwgMC4xMil9Lm1hdC1lbGV2YXRpb24tejE3W19uZ2NvbnRlbnQtJUNPTVAlXXtib3gtc2hhZG93OjBweCA4cHggMTFweCAtNXB4IHJnYmEoMCwgMCwgMCwgMC4yKSwwcHggMTdweCAyNnB4IDJweCByZ2JhKDAsIDAsIDAsIDAuMTQpLDBweCA2cHggMzJweCA1cHggcmdiYSgwLCAwLCAwLCAwLjEyKX0ubWF0LWVsZXZhdGlvbi16MThbX25nY29udGVudC0lQ09NUCVde2JveC1zaGFkb3c6MHB4IDlweCAxMXB4IC01cHggcmdiYSgwLCAwLCAwLCAwLjIpLDBweCAxOHB4IDI4cHggMnB4IHJnYmEoMCwgMCwgMCwgMC4xNCksMHB4IDdweCAzNHB4IDZweCByZ2JhKDAsIDAsIDAsIDAuMTIpfS5tYXQtZWxldmF0aW9uLXoxOVtfbmdjb250ZW50LSVDT01QJV17Ym94LXNoYWRvdzowcHggOXB4IDEycHggLTZweCByZ2JhKDAsIDAsIDAsIDAuMiksMHB4IDE5cHggMjlweCAycHggcmdiYSgwLCAwLCAwLCAwLjE0KSwwcHggN3B4IDM2cHggNnB4IHJnYmEoMCwgMCwgMCwgMC4xMil9Lm1hdC1lbGV2YXRpb24tejIwW19uZ2NvbnRlbnQtJUNPTVAlXXtib3gtc2hhZG93OjBweCAxMHB4IDEzcHggLTZweCByZ2JhKDAsIDAsIDAsIDAuMiksMHB4IDIwcHggMzFweCAzcHggcmdiYSgwLCAwLCAwLCAwLjE0KSwwcHggOHB4IDM4cHggN3B4IHJnYmEoMCwgMCwgMCwgMC4xMil9Lm1hdC1lbGV2YXRpb24tejIxW19uZ2NvbnRlbnQtJUNPTVAlXXtib3gtc2hhZG93OjBweCAxMHB4IDEzcHggLTZweCByZ2JhKDAsIDAsIDAsIDAuMiksMHB4IDIxcHggMzNweCAzcHggcmdiYSgwLCAwLCAwLCAwLjE0KSwwcHggOHB4IDQwcHggN3B4IHJnYmEoMCwgMCwgMCwgMC4xMil9Lm1hdC1lbGV2YXRpb24tejIyW19uZ2NvbnRlbnQtJUNPTVAlXXtib3gtc2hhZG93OjBweCAxMHB4IDE0cHggLTZweCByZ2JhKDAsIDAsIDAsIDAuMiksMHB4IDIycHggMzVweCAzcHggcmdiYSgwLCAwLCAwLCAwLjE0KSwwcHggOHB4IDQycHggN3B4IHJnYmEoMCwgMCwgMCwgMC4xMil9Lm1hdC1lbGV2YXRpb24tejIzW19uZ2NvbnRlbnQtJUNPTVAlXXtib3gtc2hhZG93OjBweCAxMXB4IDE0cHggLTdweCByZ2JhKDAsIDAsIDAsIDAuMiksMHB4IDIzcHggMzZweCAzcHggcmdiYSgwLCAwLCAwLCAwLjE0KSwwcHggOXB4IDQ0cHggOHB4IHJnYmEoMCwgMCwgMCwgMC4xMil9Lm1hdC1lbGV2YXRpb24tejI0W19uZ2NvbnRlbnQtJUNPTVAlXXtib3gtc2hhZG93OjBweCAxMXB4IDE1cHggLTdweCByZ2JhKDAsIDAsIDAsIDAuMiksMHB4IDI0cHggMzhweCAzcHggcmdiYSgwLCAwLCAwLCAwLjE0KSwwcHggOXB4IDQ2cHggOHB4IHJnYmEoMCwgMCwgMCwgMC4xMil9Lm1hdC10aGVtZS1sb2FkZWQtbWFya2VyW19uZ2NvbnRlbnQtJUNPTVAlXXtkaXNwbGF5Om5vbmV9Lm1hdC1hdXRvY29tcGxldGUtcGFuZWxbX25nY29udGVudC0lQ09NUCVde2JhY2tncm91bmQ6I2ZmZjtjb2xvcjojMjEyMTIxfS5tYXQtYXV0b2NvbXBsZXRlLXBhbmVsW19uZ2NvbnRlbnQtJUNPTVAlXTpub3QoW2NsYXNzKj1tYXQtZWxldmF0aW9uLXpdKXtib3gtc2hhZG93OjBweCAycHggNHB4IC0xcHggcmdiYSgwLCAwLCAwLCAwLjIpLDBweCA0cHggNXB4IDBweCByZ2JhKDAsIDAsIDAsIDAuMTQpLDBweCAxcHggMTBweCAwcHggcmdiYSgwLCAwLCAwLCAwLjEyKX0ubWF0LWF1dG9jb21wbGV0ZS1wYW5lbFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LW9wdGlvbi5tYXQtc2VsZWN0ZWRbX25nY29udGVudC0lQ09NUCVdOm5vdCgubWF0LWFjdGl2ZSk6bm90KDpob3Zlcil7YmFja2dyb3VuZDojZmZmfS5tYXQtYXV0b2NvbXBsZXRlLXBhbmVsW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtb3B0aW9uLm1hdC1zZWxlY3RlZFtfbmdjb250ZW50LSVDT01QJV06bm90KC5tYXQtYWN0aXZlKTpub3QoOmhvdmVyKTpub3QoLm1hdC1vcHRpb24tZGlzYWJsZWQpe2NvbG9yOiMyMTIxMjF9Lm1hdC1iYWRnZS1jb250ZW50W19uZ2NvbnRlbnQtJUNPTVAlXXtjb2xvcjojZmZmO2JhY2tncm91bmQ6I2Y1N2MwMH0uY2RrLWhpZ2gtY29udHJhc3QtYWN0aXZlW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtYmFkZ2UtY29udGVudFtfbmdjb250ZW50LSVDT01QJV17b3V0bGluZTpzb2xpZCAxcHg7Ym9yZGVyLXJhZGl1czowfS5tYXQtYmFkZ2UtYWNjZW50W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtYmFkZ2UtY29udGVudFtfbmdjb250ZW50LSVDT01QJV17YmFja2dyb3VuZDojZmY5ODAwO2NvbG9yOiNmZmZ9Lm1hdC1iYWRnZS13YXJuW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtYmFkZ2UtY29udGVudFtfbmdjb250ZW50LSVDT01QJV17Y29sb3I6I2ZmZjtiYWNrZ3JvdW5kOiNmNDQzMzZ9Lm1hdC1iYWRnZVtfbmdjb250ZW50LSVDT01QJV17cG9zaXRpb246cmVsYXRpdmV9Lm1hdC1iYWRnZS1oaWRkZW5bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1iYWRnZS1jb250ZW50W19uZ2NvbnRlbnQtJUNPTVAlXXtkaXNwbGF5Om5vbmV9Lm1hdC1iYWRnZS1kaXNhYmxlZFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWJhZGdlLWNvbnRlbnRbX25nY29udGVudC0lQ09NUCVde2JhY2tncm91bmQ6I2I5YjliOTtjb2xvcjojNzU3NTc1fS5tYXQtYmFkZ2UtY29udGVudFtfbmdjb250ZW50LSVDT01QJV17cG9zaXRpb246YWJzb2x1dGU7dGV4dC1hbGlnbjpjZW50ZXI7ZGlzcGxheTppbmxpbmUtYmxvY2s7Ym9yZGVyLXJhZGl1czo1MCU7dHJhbnNpdGlvbjp0cmFuc2Zvcm0gMjAwbXMgZWFzZS1pbi1vdXQ7dHJhbnNmb3JtOnNjYWxlKDAuNik7b3ZlcmZsb3c6aGlkZGVuO3doaXRlLXNwYWNlOm5vd3JhcDt0ZXh0LW92ZXJmbG93OmVsbGlwc2lzO3BvaW50ZXItZXZlbnRzOm5vbmV9Lm5nLWFuaW1hdGUtZGlzYWJsZWRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1iYWRnZS1jb250ZW50W19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1iYWRnZS1jb250ZW50Ll9tYXQtYW5pbWF0aW9uLW5vb3BhYmxlW19uZ2NvbnRlbnQtJUNPTVAlXXt0cmFuc2l0aW9uOm5vbmV9Lm1hdC1iYWRnZS1jb250ZW50Lm1hdC1iYWRnZS1hY3RpdmVbX25nY29udGVudC0lQ09NUCVde3RyYW5zZm9ybTpub25lfS5tYXQtYmFkZ2Utc21hbGxbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1iYWRnZS1jb250ZW50W19uZ2NvbnRlbnQtJUNPTVAlXXt3aWR0aDoxNnB4O2hlaWdodDoxNnB4O2xpbmUtaGVpZ2h0OjE2cHh9Lm1hdC1iYWRnZS1zbWFsbC5tYXQtYmFkZ2UtYWJvdmVbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1iYWRnZS1jb250ZW50W19uZ2NvbnRlbnQtJUNPTVAlXXt0b3A6LThweH0ubWF0LWJhZGdlLXNtYWxsLm1hdC1iYWRnZS1iZWxvd1tfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWJhZGdlLWNvbnRlbnRbX25nY29udGVudC0lQ09NUCVde2JvdHRvbTotOHB4fS5tYXQtYmFkZ2Utc21hbGwubWF0LWJhZGdlLWJlZm9yZVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWJhZGdlLWNvbnRlbnRbX25nY29udGVudC0lQ09NUCVde2xlZnQ6LTE2cHh9W2Rpcj1ydGxdW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtYmFkZ2Utc21hbGwubWF0LWJhZGdlLWJlZm9yZVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWJhZGdlLWNvbnRlbnRbX25nY29udGVudC0lQ09NUCVde2xlZnQ6YXV0bztyaWdodDotMTZweH0ubWF0LWJhZGdlLXNtYWxsLm1hdC1iYWRnZS1hZnRlcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWJhZGdlLWNvbnRlbnRbX25nY29udGVudC0lQ09NUCVde3JpZ2h0Oi0xNnB4fVtkaXI9cnRsXVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWJhZGdlLXNtYWxsLm1hdC1iYWRnZS1hZnRlcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWJhZGdlLWNvbnRlbnRbX25nY29udGVudC0lQ09NUCVde3JpZ2h0OmF1dG87bGVmdDotMTZweH0ubWF0LWJhZGdlLXNtYWxsLm1hdC1iYWRnZS1vdmVybGFwLm1hdC1iYWRnZS1iZWZvcmVbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1iYWRnZS1jb250ZW50W19uZ2NvbnRlbnQtJUNPTVAlXXtsZWZ0Oi04cHh9W2Rpcj1ydGxdW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtYmFkZ2Utc21hbGwubWF0LWJhZGdlLW92ZXJsYXAubWF0LWJhZGdlLWJlZm9yZVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWJhZGdlLWNvbnRlbnRbX25nY29udGVudC0lQ09NUCVde2xlZnQ6YXV0bztyaWdodDotOHB4fS5tYXQtYmFkZ2Utc21hbGwubWF0LWJhZGdlLW92ZXJsYXAubWF0LWJhZGdlLWFmdGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtYmFkZ2UtY29udGVudFtfbmdjb250ZW50LSVDT01QJV17cmlnaHQ6LThweH1bZGlyPXJ0bF1bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1iYWRnZS1zbWFsbC5tYXQtYmFkZ2Utb3ZlcmxhcC5tYXQtYmFkZ2UtYWZ0ZXJbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1iYWRnZS1jb250ZW50W19uZ2NvbnRlbnQtJUNPTVAlXXtyaWdodDphdXRvO2xlZnQ6LThweH0ubWF0LWJhZGdlLW1lZGl1bVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWJhZGdlLWNvbnRlbnRbX25nY29udGVudC0lQ09NUCVde3dpZHRoOjIycHg7aGVpZ2h0OjIycHg7bGluZS1oZWlnaHQ6MjJweH0ubWF0LWJhZGdlLW1lZGl1bS5tYXQtYmFkZ2UtYWJvdmVbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1iYWRnZS1jb250ZW50W19uZ2NvbnRlbnQtJUNPTVAlXXt0b3A6LTExcHh9Lm1hdC1iYWRnZS1tZWRpdW0ubWF0LWJhZGdlLWJlbG93W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtYmFkZ2UtY29udGVudFtfbmdjb250ZW50LSVDT01QJV17Ym90dG9tOi0xMXB4fS5tYXQtYmFkZ2UtbWVkaXVtLm1hdC1iYWRnZS1iZWZvcmVbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1iYWRnZS1jb250ZW50W19uZ2NvbnRlbnQtJUNPTVAlXXtsZWZ0Oi0yMnB4fVtkaXI9cnRsXVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWJhZGdlLW1lZGl1bS5tYXQtYmFkZ2UtYmVmb3JlW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtYmFkZ2UtY29udGVudFtfbmdjb250ZW50LSVDT01QJV17bGVmdDphdXRvO3JpZ2h0Oi0yMnB4fS5tYXQtYmFkZ2UtbWVkaXVtLm1hdC1iYWRnZS1hZnRlcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWJhZGdlLWNvbnRlbnRbX25nY29udGVudC0lQ09NUCVde3JpZ2h0Oi0yMnB4fVtkaXI9cnRsXVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWJhZGdlLW1lZGl1bS5tYXQtYmFkZ2UtYWZ0ZXJbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1iYWRnZS1jb250ZW50W19uZ2NvbnRlbnQtJUNPTVAlXXtyaWdodDphdXRvO2xlZnQ6LTIycHh9Lm1hdC1iYWRnZS1tZWRpdW0ubWF0LWJhZGdlLW92ZXJsYXAubWF0LWJhZGdlLWJlZm9yZVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWJhZGdlLWNvbnRlbnRbX25nY29udGVudC0lQ09NUCVde2xlZnQ6LTExcHh9W2Rpcj1ydGxdW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtYmFkZ2UtbWVkaXVtLm1hdC1iYWRnZS1vdmVybGFwLm1hdC1iYWRnZS1iZWZvcmVbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1iYWRnZS1jb250ZW50W19uZ2NvbnRlbnQtJUNPTVAlXXtsZWZ0OmF1dG87cmlnaHQ6LTExcHh9Lm1hdC1iYWRnZS1tZWRpdW0ubWF0LWJhZGdlLW92ZXJsYXAubWF0LWJhZGdlLWFmdGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtYmFkZ2UtY29udGVudFtfbmdjb250ZW50LSVDT01QJV17cmlnaHQ6LTExcHh9W2Rpcj1ydGxdW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtYmFkZ2UtbWVkaXVtLm1hdC1iYWRnZS1vdmVybGFwLm1hdC1iYWRnZS1hZnRlcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWJhZGdlLWNvbnRlbnRbX25nY29udGVudC0lQ09NUCVde3JpZ2h0OmF1dG87bGVmdDotMTFweH0ubWF0LWJhZGdlLWxhcmdlW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtYmFkZ2UtY29udGVudFtfbmdjb250ZW50LSVDT01QJV17d2lkdGg6MjhweDtoZWlnaHQ6MjhweDtsaW5lLWhlaWdodDoyOHB4fS5tYXQtYmFkZ2UtbGFyZ2UubWF0LWJhZGdlLWFib3ZlW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtYmFkZ2UtY29udGVudFtfbmdjb250ZW50LSVDT01QJV17dG9wOi0xNHB4fS5tYXQtYmFkZ2UtbGFyZ2UubWF0LWJhZGdlLWJlbG93W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtYmFkZ2UtY29udGVudFtfbmdjb250ZW50LSVDT01QJV17Ym90dG9tOi0xNHB4fS5tYXQtYmFkZ2UtbGFyZ2UubWF0LWJhZGdlLWJlZm9yZVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWJhZGdlLWNvbnRlbnRbX25nY29udGVudC0lQ09NUCVde2xlZnQ6LTI4cHh9W2Rpcj1ydGxdW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtYmFkZ2UtbGFyZ2UubWF0LWJhZGdlLWJlZm9yZVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWJhZGdlLWNvbnRlbnRbX25nY29udGVudC0lQ09NUCVde2xlZnQ6YXV0bztyaWdodDotMjhweH0ubWF0LWJhZGdlLWxhcmdlLm1hdC1iYWRnZS1hZnRlcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWJhZGdlLWNvbnRlbnRbX25nY29udGVudC0lQ09NUCVde3JpZ2h0Oi0yOHB4fVtkaXI9cnRsXVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWJhZGdlLWxhcmdlLm1hdC1iYWRnZS1hZnRlcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWJhZGdlLWNvbnRlbnRbX25nY29udGVudC0lQ09NUCVde3JpZ2h0OmF1dG87bGVmdDotMjhweH0ubWF0LWJhZGdlLWxhcmdlLm1hdC1iYWRnZS1vdmVybGFwLm1hdC1iYWRnZS1iZWZvcmVbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1iYWRnZS1jb250ZW50W19uZ2NvbnRlbnQtJUNPTVAlXXtsZWZ0Oi0xNHB4fVtkaXI9cnRsXVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWJhZGdlLWxhcmdlLm1hdC1iYWRnZS1vdmVybGFwLm1hdC1iYWRnZS1iZWZvcmVbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1iYWRnZS1jb250ZW50W19uZ2NvbnRlbnQtJUNPTVAlXXtsZWZ0OmF1dG87cmlnaHQ6LTE0cHh9Lm1hdC1iYWRnZS1sYXJnZS5tYXQtYmFkZ2Utb3ZlcmxhcC5tYXQtYmFkZ2UtYWZ0ZXJbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1iYWRnZS1jb250ZW50W19uZ2NvbnRlbnQtJUNPTVAlXXtyaWdodDotMTRweH1bZGlyPXJ0bF1bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1iYWRnZS1sYXJnZS5tYXQtYmFkZ2Utb3ZlcmxhcC5tYXQtYmFkZ2UtYWZ0ZXJbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1iYWRnZS1jb250ZW50W19uZ2NvbnRlbnQtJUNPTVAlXXtyaWdodDphdXRvO2xlZnQ6LTE0cHh9Lm1hdC1ib3R0b20tc2hlZXQtY29udGFpbmVyW19uZ2NvbnRlbnQtJUNPTVAlXXtib3gtc2hhZG93OjBweCA4cHggMTBweCAtNXB4IHJnYmEoMCwgMCwgMCwgMC4yKSwwcHggMTZweCAyNHB4IDJweCByZ2JhKDAsIDAsIDAsIDAuMTQpLDBweCA2cHggMzBweCA1cHggcmdiYSgwLCAwLCAwLCAwLjEyKTtiYWNrZ3JvdW5kOiNmZmY7Y29sb3I6IzIxMjEyMX0ubWF0LWJ1dHRvbltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtaWNvbi1idXR0b25bX25nY29udGVudC0lQ09NUCVdLCAubWF0LXN0cm9rZWQtYnV0dG9uW19uZ2NvbnRlbnQtJUNPTVAlXXtjb2xvcjppbmhlcml0O2JhY2tncm91bmQ6dHJhbnNwYXJlbnR9Lm1hdC1idXR0b24ubWF0LXByaW1hcnlbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWljb24tYnV0dG9uLm1hdC1wcmltYXJ5W19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1zdHJva2VkLWJ1dHRvbi5tYXQtcHJpbWFyeVtfbmdjb250ZW50LSVDT01QJV17Y29sb3I6I2Y1N2MwMH0ubWF0LWJ1dHRvbi5tYXQtYWNjZW50W19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1pY29uLWJ1dHRvbi5tYXQtYWNjZW50W19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1zdHJva2VkLWJ1dHRvbi5tYXQtYWNjZW50W19uZ2NvbnRlbnQtJUNPTVAlXXtjb2xvcjojZmY5ODAwfS5tYXQtYnV0dG9uLm1hdC13YXJuW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1pY29uLWJ1dHRvbi5tYXQtd2Fybltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtc3Ryb2tlZC1idXR0b24ubWF0LXdhcm5bX25nY29udGVudC0lQ09NUCVde2NvbG9yOiNmNDQzMzZ9Lm1hdC1idXR0b24ubWF0LXByaW1hcnkubWF0LWJ1dHRvbi1kaXNhYmxlZFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtYnV0dG9uLm1hdC1hY2NlbnQubWF0LWJ1dHRvbi1kaXNhYmxlZFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtYnV0dG9uLm1hdC13YXJuLm1hdC1idXR0b24tZGlzYWJsZWRbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWJ1dHRvbi5tYXQtYnV0dG9uLWRpc2FibGVkLm1hdC1idXR0b24tZGlzYWJsZWRbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWljb24tYnV0dG9uLm1hdC1wcmltYXJ5Lm1hdC1idXR0b24tZGlzYWJsZWRbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWljb24tYnV0dG9uLm1hdC1hY2NlbnQubWF0LWJ1dHRvbi1kaXNhYmxlZFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtaWNvbi1idXR0b24ubWF0LXdhcm4ubWF0LWJ1dHRvbi1kaXNhYmxlZFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtaWNvbi1idXR0b24ubWF0LWJ1dHRvbi1kaXNhYmxlZC5tYXQtYnV0dG9uLWRpc2FibGVkW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1zdHJva2VkLWJ1dHRvbi5tYXQtcHJpbWFyeS5tYXQtYnV0dG9uLWRpc2FibGVkW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1zdHJva2VkLWJ1dHRvbi5tYXQtYWNjZW50Lm1hdC1idXR0b24tZGlzYWJsZWRbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXN0cm9rZWQtYnV0dG9uLm1hdC13YXJuLm1hdC1idXR0b24tZGlzYWJsZWRbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXN0cm9rZWQtYnV0dG9uLm1hdC1idXR0b24tZGlzYWJsZWQubWF0LWJ1dHRvbi1kaXNhYmxlZFtfbmdjb250ZW50LSVDT01QJV17Y29sb3I6cmdiYSgwLDAsMCwuMjYpfS5tYXQtYnV0dG9uLm1hdC1wcmltYXJ5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtYnV0dG9uLWZvY3VzLW92ZXJsYXlbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWljb24tYnV0dG9uLm1hdC1wcmltYXJ5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtYnV0dG9uLWZvY3VzLW92ZXJsYXlbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXN0cm9rZWQtYnV0dG9uLm1hdC1wcmltYXJ5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtYnV0dG9uLWZvY3VzLW92ZXJsYXlbX25nY29udGVudC0lQ09NUCVde2JhY2tncm91bmQtY29sb3I6I2Y1N2MwMH0ubWF0LWJ1dHRvbi5tYXQtYWNjZW50W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtYnV0dG9uLWZvY3VzLW92ZXJsYXlbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWljb24tYnV0dG9uLm1hdC1hY2NlbnRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1idXR0b24tZm9jdXMtb3ZlcmxheVtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtc3Ryb2tlZC1idXR0b24ubWF0LWFjY2VudFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWJ1dHRvbi1mb2N1cy1vdmVybGF5W19uZ2NvbnRlbnQtJUNPTVAlXXtiYWNrZ3JvdW5kLWNvbG9yOiNmZjk4MDB9Lm1hdC1idXR0b24ubWF0LXdhcm5bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1idXR0b24tZm9jdXMtb3ZlcmxheVtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtaWNvbi1idXR0b24ubWF0LXdhcm5bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1idXR0b24tZm9jdXMtb3ZlcmxheVtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtc3Ryb2tlZC1idXR0b24ubWF0LXdhcm5bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1idXR0b24tZm9jdXMtb3ZlcmxheVtfbmdjb250ZW50LSVDT01QJV17YmFja2dyb3VuZC1jb2xvcjojZjQ0MzM2fS5tYXQtYnV0dG9uLm1hdC1idXR0b24tZGlzYWJsZWRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1idXR0b24tZm9jdXMtb3ZlcmxheVtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtaWNvbi1idXR0b24ubWF0LWJ1dHRvbi1kaXNhYmxlZFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWJ1dHRvbi1mb2N1cy1vdmVybGF5W19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1zdHJva2VkLWJ1dHRvbi5tYXQtYnV0dG9uLWRpc2FibGVkW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtYnV0dG9uLWZvY3VzLW92ZXJsYXlbX25nY29udGVudC0lQ09NUCVde2JhY2tncm91bmQtY29sb3I6dHJhbnNwYXJlbnR9Lm1hdC1idXR0b25bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1yaXBwbGUtZWxlbWVudFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtaWNvbi1idXR0b25bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1yaXBwbGUtZWxlbWVudFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtc3Ryb2tlZC1idXR0b25bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1yaXBwbGUtZWxlbWVudFtfbmdjb250ZW50LSVDT01QJV17b3BhY2l0eTouMTtiYWNrZ3JvdW5kLWNvbG9yOmN1cnJlbnRDb2xvcn0ubWF0LWJ1dHRvbi1mb2N1cy1vdmVybGF5W19uZ2NvbnRlbnQtJUNPTVAlXXtiYWNrZ3JvdW5kOiMwMDB9Lm1hdC1zdHJva2VkLWJ1dHRvbltfbmdjb250ZW50LSVDT01QJV06bm90KC5tYXQtYnV0dG9uLWRpc2FibGVkKXtib3JkZXItY29sb3I6cmdiYSgwLDAsMCwuMTIpfS5tYXQtZmxhdC1idXR0b25bX25nY29udGVudC0lQ09NUCVdLCAubWF0LXJhaXNlZC1idXR0b25bX25nY29udGVudC0lQ09NUCVdLCAubWF0LWZhYltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtbWluaS1mYWJbX25nY29udGVudC0lQ09NUCVde2NvbG9yOiMyMTIxMjE7YmFja2dyb3VuZC1jb2xvcjojZmZmfS5tYXQtZmxhdC1idXR0b24ubWF0LXByaW1hcnlbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXJhaXNlZC1idXR0b24ubWF0LXByaW1hcnlbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWZhYi5tYXQtcHJpbWFyeVtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtbWluaS1mYWIubWF0LXByaW1hcnlbX25nY29udGVudC0lQ09NUCVde2NvbG9yOiNmZmZ9Lm1hdC1mbGF0LWJ1dHRvbi5tYXQtYWNjZW50W19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1yYWlzZWQtYnV0dG9uLm1hdC1hY2NlbnRbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWZhYi5tYXQtYWNjZW50W19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1taW5pLWZhYi5tYXQtYWNjZW50W19uZ2NvbnRlbnQtJUNPTVAlXXtjb2xvcjojZmZmfS5tYXQtZmxhdC1idXR0b24ubWF0LXdhcm5bX25nY29udGVudC0lQ09NUCVdLCAubWF0LXJhaXNlZC1idXR0b24ubWF0LXdhcm5bX25nY29udGVudC0lQ09NUCVdLCAubWF0LWZhYi5tYXQtd2Fybltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtbWluaS1mYWIubWF0LXdhcm5bX25nY29udGVudC0lQ09NUCVde2NvbG9yOiNmZmZ9Lm1hdC1mbGF0LWJ1dHRvbi5tYXQtcHJpbWFyeS5tYXQtYnV0dG9uLWRpc2FibGVkW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1mbGF0LWJ1dHRvbi5tYXQtYWNjZW50Lm1hdC1idXR0b24tZGlzYWJsZWRbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWZsYXQtYnV0dG9uLm1hdC13YXJuLm1hdC1idXR0b24tZGlzYWJsZWRbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWZsYXQtYnV0dG9uLm1hdC1idXR0b24tZGlzYWJsZWQubWF0LWJ1dHRvbi1kaXNhYmxlZFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtcmFpc2VkLWJ1dHRvbi5tYXQtcHJpbWFyeS5tYXQtYnV0dG9uLWRpc2FibGVkW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1yYWlzZWQtYnV0dG9uLm1hdC1hY2NlbnQubWF0LWJ1dHRvbi1kaXNhYmxlZFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtcmFpc2VkLWJ1dHRvbi5tYXQtd2Fybi5tYXQtYnV0dG9uLWRpc2FibGVkW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1yYWlzZWQtYnV0dG9uLm1hdC1idXR0b24tZGlzYWJsZWQubWF0LWJ1dHRvbi1kaXNhYmxlZFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtZmFiLm1hdC1wcmltYXJ5Lm1hdC1idXR0b24tZGlzYWJsZWRbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWZhYi5tYXQtYWNjZW50Lm1hdC1idXR0b24tZGlzYWJsZWRbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWZhYi5tYXQtd2Fybi5tYXQtYnV0dG9uLWRpc2FibGVkW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1mYWIubWF0LWJ1dHRvbi1kaXNhYmxlZC5tYXQtYnV0dG9uLWRpc2FibGVkW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1taW5pLWZhYi5tYXQtcHJpbWFyeS5tYXQtYnV0dG9uLWRpc2FibGVkW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1taW5pLWZhYi5tYXQtYWNjZW50Lm1hdC1idXR0b24tZGlzYWJsZWRbX25nY29udGVudC0lQ09NUCVdLCAubWF0LW1pbmktZmFiLm1hdC13YXJuLm1hdC1idXR0b24tZGlzYWJsZWRbX25nY29udGVudC0lQ09NUCVdLCAubWF0LW1pbmktZmFiLm1hdC1idXR0b24tZGlzYWJsZWQubWF0LWJ1dHRvbi1kaXNhYmxlZFtfbmdjb250ZW50LSVDT01QJV17Y29sb3I6cmdiYSgwLDAsMCwuMjYpfS5tYXQtZmxhdC1idXR0b24ubWF0LXByaW1hcnlbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXJhaXNlZC1idXR0b24ubWF0LXByaW1hcnlbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWZhYi5tYXQtcHJpbWFyeVtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtbWluaS1mYWIubWF0LXByaW1hcnlbX25nY29udGVudC0lQ09NUCVde2JhY2tncm91bmQtY29sb3I6I2Y1N2MwMH0ubWF0LWZsYXQtYnV0dG9uLm1hdC1hY2NlbnRbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXJhaXNlZC1idXR0b24ubWF0LWFjY2VudFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtZmFiLm1hdC1hY2NlbnRbX25nY29udGVudC0lQ09NUCVdLCAubWF0LW1pbmktZmFiLm1hdC1hY2NlbnRbX25nY29udGVudC0lQ09NUCVde2JhY2tncm91bmQtY29sb3I6I2ZmOTgwMH0ubWF0LWZsYXQtYnV0dG9uLm1hdC13YXJuW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1yYWlzZWQtYnV0dG9uLm1hdC13YXJuW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1mYWIubWF0LXdhcm5bX25nY29udGVudC0lQ09NUCVdLCAubWF0LW1pbmktZmFiLm1hdC13YXJuW19uZ2NvbnRlbnQtJUNPTVAlXXtiYWNrZ3JvdW5kLWNvbG9yOiNmNDQzMzZ9Lm1hdC1mbGF0LWJ1dHRvbi5tYXQtcHJpbWFyeS5tYXQtYnV0dG9uLWRpc2FibGVkW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1mbGF0LWJ1dHRvbi5tYXQtYWNjZW50Lm1hdC1idXR0b24tZGlzYWJsZWRbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWZsYXQtYnV0dG9uLm1hdC13YXJuLm1hdC1idXR0b24tZGlzYWJsZWRbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWZsYXQtYnV0dG9uLm1hdC1idXR0b24tZGlzYWJsZWQubWF0LWJ1dHRvbi1kaXNhYmxlZFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtcmFpc2VkLWJ1dHRvbi5tYXQtcHJpbWFyeS5tYXQtYnV0dG9uLWRpc2FibGVkW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1yYWlzZWQtYnV0dG9uLm1hdC1hY2NlbnQubWF0LWJ1dHRvbi1kaXNhYmxlZFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtcmFpc2VkLWJ1dHRvbi5tYXQtd2Fybi5tYXQtYnV0dG9uLWRpc2FibGVkW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1yYWlzZWQtYnV0dG9uLm1hdC1idXR0b24tZGlzYWJsZWQubWF0LWJ1dHRvbi1kaXNhYmxlZFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtZmFiLm1hdC1wcmltYXJ5Lm1hdC1idXR0b24tZGlzYWJsZWRbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWZhYi5tYXQtYWNjZW50Lm1hdC1idXR0b24tZGlzYWJsZWRbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWZhYi5tYXQtd2Fybi5tYXQtYnV0dG9uLWRpc2FibGVkW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1mYWIubWF0LWJ1dHRvbi1kaXNhYmxlZC5tYXQtYnV0dG9uLWRpc2FibGVkW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1taW5pLWZhYi5tYXQtcHJpbWFyeS5tYXQtYnV0dG9uLWRpc2FibGVkW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1taW5pLWZhYi5tYXQtYWNjZW50Lm1hdC1idXR0b24tZGlzYWJsZWRbX25nY29udGVudC0lQ09NUCVdLCAubWF0LW1pbmktZmFiLm1hdC13YXJuLm1hdC1idXR0b24tZGlzYWJsZWRbX25nY29udGVudC0lQ09NUCVdLCAubWF0LW1pbmktZmFiLm1hdC1idXR0b24tZGlzYWJsZWQubWF0LWJ1dHRvbi1kaXNhYmxlZFtfbmdjb250ZW50LSVDT01QJV17YmFja2dyb3VuZC1jb2xvcjpyZ2JhKDAsMCwwLC4xMil9Lm1hdC1mbGF0LWJ1dHRvbi5tYXQtcHJpbWFyeVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXJpcHBsZS1lbGVtZW50W19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1yYWlzZWQtYnV0dG9uLm1hdC1wcmltYXJ5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtcmlwcGxlLWVsZW1lbnRbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWZhYi5tYXQtcHJpbWFyeVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXJpcHBsZS1lbGVtZW50W19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1taW5pLWZhYi5tYXQtcHJpbWFyeVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXJpcHBsZS1lbGVtZW50W19uZ2NvbnRlbnQtJUNPTVAlXXtiYWNrZ3JvdW5kLWNvbG9yOnJnYmEoMjU1LDI1NSwyNTUsLjEpfS5tYXQtZmxhdC1idXR0b24ubWF0LWFjY2VudFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXJpcHBsZS1lbGVtZW50W19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1yYWlzZWQtYnV0dG9uLm1hdC1hY2NlbnRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1yaXBwbGUtZWxlbWVudFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtZmFiLm1hdC1hY2NlbnRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1yaXBwbGUtZWxlbWVudFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtbWluaS1mYWIubWF0LWFjY2VudFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXJpcHBsZS1lbGVtZW50W19uZ2NvbnRlbnQtJUNPTVAlXXtiYWNrZ3JvdW5kLWNvbG9yOnJnYmEoMjU1LDI1NSwyNTUsLjEpfS5tYXQtZmxhdC1idXR0b24ubWF0LXdhcm5bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1yaXBwbGUtZWxlbWVudFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtcmFpc2VkLWJ1dHRvbi5tYXQtd2Fybltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXJpcHBsZS1lbGVtZW50W19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1mYWIubWF0LXdhcm5bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1yaXBwbGUtZWxlbWVudFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtbWluaS1mYWIubWF0LXdhcm5bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1yaXBwbGUtZWxlbWVudFtfbmdjb250ZW50LSVDT01QJV17YmFja2dyb3VuZC1jb2xvcjpyZ2JhKDI1NSwyNTUsMjU1LC4xKX0ubWF0LXN0cm9rZWQtYnV0dG9uW19uZ2NvbnRlbnQtJUNPTVAlXTpub3QoW2NsYXNzKj1tYXQtZWxldmF0aW9uLXpdKSwgLm1hdC1mbGF0LWJ1dHRvbltfbmdjb250ZW50LSVDT01QJV06bm90KFtjbGFzcyo9bWF0LWVsZXZhdGlvbi16XSl7Ym94LXNoYWRvdzowcHggMHB4IDBweCAwcHggcmdiYSgwLCAwLCAwLCAwLjIpLDBweCAwcHggMHB4IDBweCByZ2JhKDAsIDAsIDAsIDAuMTQpLDBweCAwcHggMHB4IDBweCByZ2JhKDAsIDAsIDAsIDAuMTIpfS5tYXQtcmFpc2VkLWJ1dHRvbltfbmdjb250ZW50LSVDT01QJV06bm90KFtjbGFzcyo9bWF0LWVsZXZhdGlvbi16XSl7Ym94LXNoYWRvdzowcHggM3B4IDFweCAtMnB4IHJnYmEoMCwgMCwgMCwgMC4yKSwwcHggMnB4IDJweCAwcHggcmdiYSgwLCAwLCAwLCAwLjE0KSwwcHggMXB4IDVweCAwcHggcmdiYSgwLCAwLCAwLCAwLjEyKX0ubWF0LXJhaXNlZC1idXR0b25bX25nY29udGVudC0lQ09NUCVdOm5vdCgubWF0LWJ1dHRvbi1kaXNhYmxlZCk6YWN0aXZlOm5vdChbY2xhc3MqPW1hdC1lbGV2YXRpb24tel0pe2JveC1zaGFkb3c6MHB4IDVweCA1cHggLTNweCByZ2JhKDAsIDAsIDAsIDAuMiksMHB4IDhweCAxMHB4IDFweCByZ2JhKDAsIDAsIDAsIDAuMTQpLDBweCAzcHggMTRweCAycHggcmdiYSgwLCAwLCAwLCAwLjEyKX0ubWF0LXJhaXNlZC1idXR0b24ubWF0LWJ1dHRvbi1kaXNhYmxlZFtfbmdjb250ZW50LSVDT01QJV06bm90KFtjbGFzcyo9bWF0LWVsZXZhdGlvbi16XSl7Ym94LXNoYWRvdzowcHggMHB4IDBweCAwcHggcmdiYSgwLCAwLCAwLCAwLjIpLDBweCAwcHggMHB4IDBweCByZ2JhKDAsIDAsIDAsIDAuMTQpLDBweCAwcHggMHB4IDBweCByZ2JhKDAsIDAsIDAsIDAuMTIpfS5tYXQtZmFiW19uZ2NvbnRlbnQtJUNPTVAlXTpub3QoW2NsYXNzKj1tYXQtZWxldmF0aW9uLXpdKSwgLm1hdC1taW5pLWZhYltfbmdjb250ZW50LSVDT01QJV06bm90KFtjbGFzcyo9bWF0LWVsZXZhdGlvbi16XSl7Ym94LXNoYWRvdzowcHggM3B4IDVweCAtMXB4IHJnYmEoMCwgMCwgMCwgMC4yKSwwcHggNnB4IDEwcHggMHB4IHJnYmEoMCwgMCwgMCwgMC4xNCksMHB4IDFweCAxOHB4IDBweCByZ2JhKDAsIDAsIDAsIDAuMTIpfS5tYXQtZmFiW19uZ2NvbnRlbnQtJUNPTVAlXTpub3QoLm1hdC1idXR0b24tZGlzYWJsZWQpOmFjdGl2ZTpub3QoW2NsYXNzKj1tYXQtZWxldmF0aW9uLXpdKSwgLm1hdC1taW5pLWZhYltfbmdjb250ZW50LSVDT01QJV06bm90KC5tYXQtYnV0dG9uLWRpc2FibGVkKTphY3RpdmU6bm90KFtjbGFzcyo9bWF0LWVsZXZhdGlvbi16XSl7Ym94LXNoYWRvdzowcHggN3B4IDhweCAtNHB4IHJnYmEoMCwgMCwgMCwgMC4yKSwwcHggMTJweCAxN3B4IDJweCByZ2JhKDAsIDAsIDAsIDAuMTQpLDBweCA1cHggMjJweCA0cHggcmdiYSgwLCAwLCAwLCAwLjEyKX0ubWF0LWZhYi5tYXQtYnV0dG9uLWRpc2FibGVkW19uZ2NvbnRlbnQtJUNPTVAlXTpub3QoW2NsYXNzKj1tYXQtZWxldmF0aW9uLXpdKSwgLm1hdC1taW5pLWZhYi5tYXQtYnV0dG9uLWRpc2FibGVkW19uZ2NvbnRlbnQtJUNPTVAlXTpub3QoW2NsYXNzKj1tYXQtZWxldmF0aW9uLXpdKXtib3gtc2hhZG93OjBweCAwcHggMHB4IDBweCByZ2JhKDAsIDAsIDAsIDAuMiksMHB4IDBweCAwcHggMHB4IHJnYmEoMCwgMCwgMCwgMC4xNCksMHB4IDBweCAwcHggMHB4IHJnYmEoMCwgMCwgMCwgMC4xMil9Lm1hdC1idXR0b24tdG9nZ2xlLXN0YW5kYWxvbmVbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWJ1dHRvbi10b2dnbGUtZ3JvdXBbX25nY29udGVudC0lQ09NUCVde2JveC1zaGFkb3c6MHB4IDNweCAxcHggLTJweCByZ2JhKDAsIDAsIDAsIDAuMiksMHB4IDJweCAycHggMHB4IHJnYmEoMCwgMCwgMCwgMC4xNCksMHB4IDFweCA1cHggMHB4IHJnYmEoMCwgMCwgMCwgMC4xMil9Lm1hdC1idXR0b24tdG9nZ2xlLXN0YW5kYWxvbmUubWF0LWJ1dHRvbi10b2dnbGUtYXBwZWFyYW5jZS1zdGFuZGFyZFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtYnV0dG9uLXRvZ2dsZS1ncm91cC1hcHBlYXJhbmNlLXN0YW5kYXJkW19uZ2NvbnRlbnQtJUNPTVAlXXtib3gtc2hhZG93Om5vbmV9Lm1hdC1idXR0b24tdG9nZ2xlW19uZ2NvbnRlbnQtJUNPTVAlXXtjb2xvcjpyZ2JhKDAsMCwwLC4zOCl9Lm1hdC1idXR0b24tdG9nZ2xlW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtYnV0dG9uLXRvZ2dsZS1mb2N1cy1vdmVybGF5W19uZ2NvbnRlbnQtJUNPTVAlXXtiYWNrZ3JvdW5kLWNvbG9yOnJnYmEoMCwwLDAsLjEyKX0ubWF0LWJ1dHRvbi10b2dnbGUtYXBwZWFyYW5jZS1zdGFuZGFyZFtfbmdjb250ZW50LSVDT01QJV17Y29sb3I6IzIxMjEyMTtiYWNrZ3JvdW5kOiNmZmZ9Lm1hdC1idXR0b24tdG9nZ2xlLWFwcGVhcmFuY2Utc3RhbmRhcmRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1idXR0b24tdG9nZ2xlLWZvY3VzLW92ZXJsYXlbX25nY29udGVudC0lQ09NUCVde2JhY2tncm91bmQtY29sb3I6IzAwMH0ubWF0LWJ1dHRvbi10b2dnbGUtZ3JvdXAtYXBwZWFyYW5jZS1zdGFuZGFyZFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWJ1dHRvbi10b2dnbGVbX25nY29udGVudC0lQ09NUCVdICsgLm1hdC1idXR0b24tdG9nZ2xlW19uZ2NvbnRlbnQtJUNPTVAlXXtib3JkZXItbGVmdDpzb2xpZCAxcHggcmdiYSgwLDAsMCwuMTIpfVtkaXI9cnRsXVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWJ1dHRvbi10b2dnbGUtZ3JvdXAtYXBwZWFyYW5jZS1zdGFuZGFyZFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWJ1dHRvbi10b2dnbGVbX25nY29udGVudC0lQ09NUCVdICsgLm1hdC1idXR0b24tdG9nZ2xlW19uZ2NvbnRlbnQtJUNPTVAlXXtib3JkZXItbGVmdDpub25lO2JvcmRlci1yaWdodDpzb2xpZCAxcHggcmdiYSgwLDAsMCwuMTIpfS5tYXQtYnV0dG9uLXRvZ2dsZS1ncm91cC1hcHBlYXJhbmNlLXN0YW5kYXJkLm1hdC1idXR0b24tdG9nZ2xlLXZlcnRpY2FsW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtYnV0dG9uLXRvZ2dsZVtfbmdjb250ZW50LSVDT01QJV0gKyAubWF0LWJ1dHRvbi10b2dnbGVbX25nY29udGVudC0lQ09NUCVde2JvcmRlci1sZWZ0Om5vbmU7Ym9yZGVyLXJpZ2h0Om5vbmU7Ym9yZGVyLXRvcDpzb2xpZCAxcHggcmdiYSgwLDAsMCwuMTIpfS5tYXQtYnV0dG9uLXRvZ2dsZS1jaGVja2VkW19uZ2NvbnRlbnQtJUNPTVAlXXtiYWNrZ3JvdW5kLWNvbG9yOiNlMGUwZTA7Y29sb3I6IzYxNjE2MX0ubWF0LWJ1dHRvbi10b2dnbGUtY2hlY2tlZC5tYXQtYnV0dG9uLXRvZ2dsZS1hcHBlYXJhbmNlLXN0YW5kYXJkW19uZ2NvbnRlbnQtJUNPTVAlXXtjb2xvcjojMjEyMTIxfS5tYXQtYnV0dG9uLXRvZ2dsZS1kaXNhYmxlZFtfbmdjb250ZW50LSVDT01QJV17Y29sb3I6cmdiYSgwLDAsMCwuMjYpO2JhY2tncm91bmQtY29sb3I6I2VlZX0ubWF0LWJ1dHRvbi10b2dnbGUtZGlzYWJsZWQubWF0LWJ1dHRvbi10b2dnbGUtYXBwZWFyYW5jZS1zdGFuZGFyZFtfbmdjb250ZW50LSVDT01QJV17YmFja2dyb3VuZDojZmZmfS5tYXQtYnV0dG9uLXRvZ2dsZS1kaXNhYmxlZC5tYXQtYnV0dG9uLXRvZ2dsZS1jaGVja2VkW19uZ2NvbnRlbnQtJUNPTVAlXXtiYWNrZ3JvdW5kLWNvbG9yOiNiZGJkYmR9Lm1hdC1idXR0b24tdG9nZ2xlLXN0YW5kYWxvbmUubWF0LWJ1dHRvbi10b2dnbGUtYXBwZWFyYW5jZS1zdGFuZGFyZFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtYnV0dG9uLXRvZ2dsZS1ncm91cC1hcHBlYXJhbmNlLXN0YW5kYXJkW19uZ2NvbnRlbnQtJUNPTVAlXXtib3JkZXI6c29saWQgMXB4IHJnYmEoMCwwLDAsLjEyKX0ubWF0LWJ1dHRvbi10b2dnbGUtYXBwZWFyYW5jZS1zdGFuZGFyZFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWJ1dHRvbi10b2dnbGUtbGFiZWwtY29udGVudFtfbmdjb250ZW50LSVDT01QJV17bGluZS1oZWlnaHQ6NDhweH0ubWF0LWNhcmRbX25nY29udGVudC0lQ09NUCVde2JhY2tncm91bmQ6I2ZmZjtjb2xvcjojMjEyMTIxfS5tYXQtY2FyZFtfbmdjb250ZW50LSVDT01QJV06bm90KFtjbGFzcyo9bWF0LWVsZXZhdGlvbi16XSl7Ym94LXNoYWRvdzowcHggMnB4IDFweCAtMXB4IHJnYmEoMCwgMCwgMCwgMC4yKSwwcHggMXB4IDFweCAwcHggcmdiYSgwLCAwLCAwLCAwLjE0KSwwcHggMXB4IDNweCAwcHggcmdiYSgwLCAwLCAwLCAwLjEyKX0ubWF0LWNhcmQubWF0LWNhcmQtZmxhdFtfbmdjb250ZW50LSVDT01QJV06bm90KFtjbGFzcyo9bWF0LWVsZXZhdGlvbi16XSl7Ym94LXNoYWRvdzowcHggMHB4IDBweCAwcHggcmdiYSgwLCAwLCAwLCAwLjIpLDBweCAwcHggMHB4IDBweCByZ2JhKDAsIDAsIDAsIDAuMTQpLDBweCAwcHggMHB4IDBweCByZ2JhKDAsIDAsIDAsIDAuMTIpfS5tYXQtY2FyZC1zdWJ0aXRsZVtfbmdjb250ZW50LSVDT01QJV17Y29sb3I6IzYxNjE2MX0ubWF0LWNoZWNrYm94LWZyYW1lW19uZ2NvbnRlbnQtJUNPTVAlXXtib3JkZXItY29sb3I6IzYxNjE2MX0ubWF0LWNoZWNrYm94LWNoZWNrbWFya1tfbmdjb250ZW50LSVDT01QJV17ZmlsbDojZmFmYWZhfS5tYXQtY2hlY2tib3gtY2hlY2ttYXJrLXBhdGhbX25nY29udGVudC0lQ09NUCVde3N0cm9rZTojZmFmYWZhICFpbXBvcnRhbnR9Lm1hdC1jaGVja2JveC1taXhlZG1hcmtbX25nY29udGVudC0lQ09NUCVde2JhY2tncm91bmQtY29sb3I6I2ZhZmFmYX0ubWF0LWNoZWNrYm94LWluZGV0ZXJtaW5hdGUubWF0LXByaW1hcnlbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1jaGVja2JveC1iYWNrZ3JvdW5kW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1jaGVja2JveC1jaGVja2VkLm1hdC1wcmltYXJ5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtY2hlY2tib3gtYmFja2dyb3VuZFtfbmdjb250ZW50LSVDT01QJV17YmFja2dyb3VuZC1jb2xvcjojZjU3YzAwfS5tYXQtY2hlY2tib3gtaW5kZXRlcm1pbmF0ZS5tYXQtYWNjZW50W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtY2hlY2tib3gtYmFja2dyb3VuZFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtY2hlY2tib3gtY2hlY2tlZC5tYXQtYWNjZW50W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtY2hlY2tib3gtYmFja2dyb3VuZFtfbmdjb250ZW50LSVDT01QJV17YmFja2dyb3VuZC1jb2xvcjojZmY5ODAwfS5tYXQtY2hlY2tib3gtaW5kZXRlcm1pbmF0ZS5tYXQtd2Fybltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWNoZWNrYm94LWJhY2tncm91bmRbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWNoZWNrYm94LWNoZWNrZWQubWF0LXdhcm5bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1jaGVja2JveC1iYWNrZ3JvdW5kW19uZ2NvbnRlbnQtJUNPTVAlXXtiYWNrZ3JvdW5kLWNvbG9yOiNmNDQzMzZ9Lm1hdC1jaGVja2JveC1kaXNhYmxlZC5tYXQtY2hlY2tib3gtY2hlY2tlZFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWNoZWNrYm94LWJhY2tncm91bmRbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWNoZWNrYm94LWRpc2FibGVkLm1hdC1jaGVja2JveC1pbmRldGVybWluYXRlW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtY2hlY2tib3gtYmFja2dyb3VuZFtfbmdjb250ZW50LSVDT01QJV17YmFja2dyb3VuZC1jb2xvcjojYjBiMGIwfS5tYXQtY2hlY2tib3gtZGlzYWJsZWRbX25nY29udGVudC0lQ09NUCVdOm5vdCgubWF0LWNoZWNrYm94LWNoZWNrZWQpICAgLm1hdC1jaGVja2JveC1mcmFtZVtfbmdjb250ZW50LSVDT01QJV17Ym9yZGVyLWNvbG9yOiNiMGIwYjB9Lm1hdC1jaGVja2JveC1kaXNhYmxlZFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWNoZWNrYm94LWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXtjb2xvcjojNjE2MTYxfS5tYXQtY2hlY2tib3hbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1yaXBwbGUtZWxlbWVudFtfbmdjb250ZW50LSVDT01QJV17YmFja2dyb3VuZC1jb2xvcjojMDAwfS5tYXQtY2hlY2tib3gtY2hlY2tlZFtfbmdjb250ZW50LSVDT01QJV06bm90KC5tYXQtY2hlY2tib3gtZGlzYWJsZWQpLm1hdC1wcmltYXJ5ICAgLm1hdC1yaXBwbGUtZWxlbWVudFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtY2hlY2tib3hbX25nY29udGVudC0lQ09NUCVdOmFjdGl2ZTpub3QoLm1hdC1jaGVja2JveC1kaXNhYmxlZCkubWF0LXByaW1hcnkgICAubWF0LXJpcHBsZS1lbGVtZW50W19uZ2NvbnRlbnQtJUNPTVAlXXtiYWNrZ3JvdW5kOiNmNTdjMDB9Lm1hdC1jaGVja2JveC1jaGVja2VkW19uZ2NvbnRlbnQtJUNPTVAlXTpub3QoLm1hdC1jaGVja2JveC1kaXNhYmxlZCkubWF0LWFjY2VudCAgIC5tYXQtcmlwcGxlLWVsZW1lbnRbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWNoZWNrYm94W19uZ2NvbnRlbnQtJUNPTVAlXTphY3RpdmU6bm90KC5tYXQtY2hlY2tib3gtZGlzYWJsZWQpLm1hdC1hY2NlbnQgICAubWF0LXJpcHBsZS1lbGVtZW50W19uZ2NvbnRlbnQtJUNPTVAlXXtiYWNrZ3JvdW5kOiNmZjk4MDB9Lm1hdC1jaGVja2JveC1jaGVja2VkW19uZ2NvbnRlbnQtJUNPTVAlXTpub3QoLm1hdC1jaGVja2JveC1kaXNhYmxlZCkubWF0LXdhcm4gICAubWF0LXJpcHBsZS1lbGVtZW50W19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1jaGVja2JveFtfbmdjb250ZW50LSVDT01QJV06YWN0aXZlOm5vdCgubWF0LWNoZWNrYm94LWRpc2FibGVkKS5tYXQtd2FybiAgIC5tYXQtcmlwcGxlLWVsZW1lbnRbX25nY29udGVudC0lQ09NUCVde2JhY2tncm91bmQ6I2Y0NDMzNn0ubWF0LWNoaXAubWF0LXN0YW5kYXJkLWNoaXBbX25nY29udGVudC0lQ09NUCVde2JhY2tncm91bmQtY29sb3I6I2UwZTBlMDtjb2xvcjojMjEyMTIxfS5tYXQtY2hpcC5tYXQtc3RhbmRhcmQtY2hpcFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWNoaXAtcmVtb3ZlW19uZ2NvbnRlbnQtJUNPTVAlXXtjb2xvcjojMjEyMTIxO29wYWNpdHk6LjR9Lm1hdC1jaGlwLm1hdC1zdGFuZGFyZC1jaGlwW19uZ2NvbnRlbnQtJUNPTVAlXTpub3QoLm1hdC1jaGlwLWRpc2FibGVkKTphY3RpdmV7Ym94LXNoYWRvdzowcHggM3B4IDNweCAtMnB4IHJnYmEoMCwgMCwgMCwgMC4yKSwwcHggM3B4IDRweCAwcHggcmdiYSgwLCAwLCAwLCAwLjE0KSwwcHggMXB4IDhweCAwcHggcmdiYSgwLCAwLCAwLCAwLjEyKX0ubWF0LWNoaXAubWF0LXN0YW5kYXJkLWNoaXBbX25nY29udGVudC0lQ09NUCVdOm5vdCgubWF0LWNoaXAtZGlzYWJsZWQpICAgLm1hdC1jaGlwLXJlbW92ZVtfbmdjb250ZW50LSVDT01QJV06aG92ZXJ7b3BhY2l0eTouNTR9Lm1hdC1jaGlwLm1hdC1zdGFuZGFyZC1jaGlwLm1hdC1jaGlwLWRpc2FibGVkW19uZ2NvbnRlbnQtJUNPTVAlXXtvcGFjaXR5Oi40fS5tYXQtY2hpcC5tYXQtc3RhbmRhcmQtY2hpcFtfbmdjb250ZW50LSVDT01QJV06OmFmdGVye2JhY2tncm91bmQ6IzAwMH0ubWF0LWNoaXAubWF0LXN0YW5kYXJkLWNoaXAubWF0LWNoaXAtc2VsZWN0ZWQubWF0LXByaW1hcnlbX25nY29udGVudC0lQ09NUCVde2JhY2tncm91bmQtY29sb3I6I2Y1N2MwMDtjb2xvcjojZmZmfS5tYXQtY2hpcC5tYXQtc3RhbmRhcmQtY2hpcC5tYXQtY2hpcC1zZWxlY3RlZC5tYXQtcHJpbWFyeVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWNoaXAtcmVtb3ZlW19uZ2NvbnRlbnQtJUNPTVAlXXtjb2xvcjojZmZmO29wYWNpdHk6LjR9Lm1hdC1jaGlwLm1hdC1zdGFuZGFyZC1jaGlwLm1hdC1jaGlwLXNlbGVjdGVkLm1hdC1wcmltYXJ5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtcmlwcGxlLWVsZW1lbnRbX25nY29udGVudC0lQ09NUCVde2JhY2tncm91bmQtY29sb3I6cmdiYSgyNTUsMjU1LDI1NSwuMSl9Lm1hdC1jaGlwLm1hdC1zdGFuZGFyZC1jaGlwLm1hdC1jaGlwLXNlbGVjdGVkLm1hdC13YXJuW19uZ2NvbnRlbnQtJUNPTVAlXXtiYWNrZ3JvdW5kLWNvbG9yOiNmNDQzMzY7Y29sb3I6I2ZmZn0ubWF0LWNoaXAubWF0LXN0YW5kYXJkLWNoaXAubWF0LWNoaXAtc2VsZWN0ZWQubWF0LXdhcm5bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1jaGlwLXJlbW92ZVtfbmdjb250ZW50LSVDT01QJV17Y29sb3I6I2ZmZjtvcGFjaXR5Oi40fS5tYXQtY2hpcC5tYXQtc3RhbmRhcmQtY2hpcC5tYXQtY2hpcC1zZWxlY3RlZC5tYXQtd2Fybltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXJpcHBsZS1lbGVtZW50W19uZ2NvbnRlbnQtJUNPTVAlXXtiYWNrZ3JvdW5kLWNvbG9yOnJnYmEoMjU1LDI1NSwyNTUsLjEpfS5tYXQtY2hpcC5tYXQtc3RhbmRhcmQtY2hpcC5tYXQtY2hpcC1zZWxlY3RlZC5tYXQtYWNjZW50W19uZ2NvbnRlbnQtJUNPTVAlXXtiYWNrZ3JvdW5kLWNvbG9yOiNmZjk4MDA7Y29sb3I6I2ZmZn0ubWF0LWNoaXAubWF0LXN0YW5kYXJkLWNoaXAubWF0LWNoaXAtc2VsZWN0ZWQubWF0LWFjY2VudFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWNoaXAtcmVtb3ZlW19uZ2NvbnRlbnQtJUNPTVAlXXtjb2xvcjojZmZmO29wYWNpdHk6LjR9Lm1hdC1jaGlwLm1hdC1zdGFuZGFyZC1jaGlwLm1hdC1jaGlwLXNlbGVjdGVkLm1hdC1hY2NlbnRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1yaXBwbGUtZWxlbWVudFtfbmdjb250ZW50LSVDT01QJV17YmFja2dyb3VuZC1jb2xvcjpyZ2JhKDI1NSwyNTUsMjU1LC4xKX0ubWF0LXRhYmxlW19uZ2NvbnRlbnQtJUNPTVAlXXtiYWNrZ3JvdW5kOiNmZmZ9Lm1hdC10YWJsZVtfbmdjb250ZW50LSVDT01QJV0gICB0aGVhZFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdGFibGVbX25nY29udGVudC0lQ09NUCVdICAgdGJvZHlbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXRhYmxlW19uZ2NvbnRlbnQtJUNPTVAlXSAgIHRmb290W19uZ2NvbnRlbnQtJUNPTVAlXSwgbWF0LWhlYWRlci1yb3dbX25nY29udGVudC0lQ09NUCVdLCBtYXQtcm93W19uZ2NvbnRlbnQtJUNPTVAlXSwgbWF0LWZvb3Rlci1yb3dbX25nY29udGVudC0lQ09NUCVdLCBbbWF0LWhlYWRlci1yb3ddW19uZ2NvbnRlbnQtJUNPTVAlXSwgW21hdC1yb3ddW19uZ2NvbnRlbnQtJUNPTVAlXSwgW21hdC1mb290ZXItcm93XVtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdGFibGUtc3RpY2t5W19uZ2NvbnRlbnQtJUNPTVAlXXtiYWNrZ3JvdW5kOmluaGVyaXR9bWF0LXJvd1tfbmdjb250ZW50LSVDT01QJV0sIG1hdC1oZWFkZXItcm93W19uZ2NvbnRlbnQtJUNPTVAlXSwgbWF0LWZvb3Rlci1yb3dbX25nY29udGVudC0lQ09NUCVdLCB0aC5tYXQtaGVhZGVyLWNlbGxbX25nY29udGVudC0lQ09NUCVdLCB0ZC5tYXQtY2VsbFtfbmdjb250ZW50LSVDT01QJV0sIHRkLm1hdC1mb290ZXItY2VsbFtfbmdjb250ZW50LSVDT01QJV17Ym9yZGVyLWJvdHRvbS1jb2xvcjpyZ2JhKDAsMCwwLC4xMil9Lm1hdC1oZWFkZXItY2VsbFtfbmdjb250ZW50LSVDT01QJV17Y29sb3I6IzYxNjE2MX0ubWF0LWNlbGxbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWZvb3Rlci1jZWxsW19uZ2NvbnRlbnQtJUNPTVAlXXtjb2xvcjojMjEyMTIxfS5tYXQtY2FsZW5kYXItYXJyb3dbX25nY29udGVudC0lQ09NUCVde2JvcmRlci10b3AtY29sb3I6cmdiYSgwLDAsMCwuNTQpfS5tYXQtZGF0ZXBpY2tlci10b2dnbGVbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWRhdGVwaWNrZXItY29udGVudFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWNhbGVuZGFyLW5leHQtYnV0dG9uW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1kYXRlcGlja2VyLWNvbnRlbnRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1jYWxlbmRhci1wcmV2aW91cy1idXR0b25bX25nY29udGVudC0lQ09NUCVde2NvbG9yOnJnYmEoMCwwLDAsLjU0KX0ubWF0LWNhbGVuZGFyLXRhYmxlLWhlYWRlcltfbmdjb250ZW50LSVDT01QJV17Y29sb3I6cmdiYSgwLDAsMCwuMzgpfS5tYXQtY2FsZW5kYXItdGFibGUtaGVhZGVyLWRpdmlkZXJbX25nY29udGVudC0lQ09NUCVdOjphZnRlcntiYWNrZ3JvdW5kOnJnYmEoMCwwLDAsLjEyKX0ubWF0LWNhbGVuZGFyLWJvZHktbGFiZWxbX25nY29udGVudC0lQ09NUCVde2NvbG9yOiM2MTYxNjF9Lm1hdC1jYWxlbmRhci1ib2R5LWNlbGwtY29udGVudFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtZGF0ZS1yYW5nZS1pbnB1dC1zZXBhcmF0b3JbX25nY29udGVudC0lQ09NUCVde2NvbG9yOiMyMTIxMjE7Ym9yZGVyLWNvbG9yOnRyYW5zcGFyZW50fS5tYXQtY2FsZW5kYXItYm9keS1kaXNhYmxlZFtfbmdjb250ZW50LSVDT01QJV0gPiAubWF0LWNhbGVuZGFyLWJvZHktY2VsbC1jb250ZW50W19uZ2NvbnRlbnQtJUNPTVAlXTpub3QoLm1hdC1jYWxlbmRhci1ib2R5LXNlbGVjdGVkKTpub3QoLm1hdC1jYWxlbmRhci1ib2R5LWNvbXBhcmlzb24taWRlbnRpY2FsKXtjb2xvcjojNzU3NTc1fS5tYXQtZm9ybS1maWVsZC1kaXNhYmxlZFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWRhdGUtcmFuZ2UtaW5wdXQtc2VwYXJhdG9yW19uZ2NvbnRlbnQtJUNPTVAlXXtjb2xvcjojNzU3NTc1fS5tYXQtY2FsZW5kYXItYm9keS1jZWxsW19uZ2NvbnRlbnQtJUNPTVAlXTpub3QoLm1hdC1jYWxlbmRhci1ib2R5LWRpc2FibGVkKTpob3ZlciA+IC5tYXQtY2FsZW5kYXItYm9keS1jZWxsLWNvbnRlbnRbX25nY29udGVudC0lQ09NUCVdOm5vdCgubWF0LWNhbGVuZGFyLWJvZHktc2VsZWN0ZWQpOm5vdCgubWF0LWNhbGVuZGFyLWJvZHktY29tcGFyaXNvbi1pZGVudGljYWwpLCAuY2RrLWtleWJvYXJkLWZvY3VzZWRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1jYWxlbmRhci1ib2R5LWFjdGl2ZVtfbmdjb250ZW50LSVDT01QJV0gPiAubWF0LWNhbGVuZGFyLWJvZHktY2VsbC1jb250ZW50W19uZ2NvbnRlbnQtJUNPTVAlXTpub3QoLm1hdC1jYWxlbmRhci1ib2R5LXNlbGVjdGVkKTpub3QoLm1hdC1jYWxlbmRhci1ib2R5LWNvbXBhcmlzb24taWRlbnRpY2FsKSwgLmNkay1wcm9ncmFtLWZvY3VzZWRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1jYWxlbmRhci1ib2R5LWFjdGl2ZVtfbmdjb250ZW50LSVDT01QJV0gPiAubWF0LWNhbGVuZGFyLWJvZHktY2VsbC1jb250ZW50W19uZ2NvbnRlbnQtJUNPTVAlXTpub3QoLm1hdC1jYWxlbmRhci1ib2R5LXNlbGVjdGVkKTpub3QoLm1hdC1jYWxlbmRhci1ib2R5LWNvbXBhcmlzb24taWRlbnRpY2FsKXtiYWNrZ3JvdW5kLWNvbG9yOnJnYmEoMCwwLDAsLjA0KX0ubWF0LWNhbGVuZGFyLWJvZHktaW4tcHJldmlld1tfbmdjb250ZW50LSVDT01QJV17Y29sb3I6cmdiYSgwLDAsMCwuMjQpfS5tYXQtY2FsZW5kYXItYm9keS10b2RheVtfbmdjb250ZW50LSVDT01QJV06bm90KC5tYXQtY2FsZW5kYXItYm9keS1zZWxlY3RlZCk6bm90KC5tYXQtY2FsZW5kYXItYm9keS1jb21wYXJpc29uLWlkZW50aWNhbCl7Ym9yZGVyLWNvbG9yOnJnYmEoMCwwLDAsLjM4KX0ubWF0LWNhbGVuZGFyLWJvZHktZGlzYWJsZWRbX25nY29udGVudC0lQ09NUCVdID4gLm1hdC1jYWxlbmRhci1ib2R5LXRvZGF5W19uZ2NvbnRlbnQtJUNPTVAlXTpub3QoLm1hdC1jYWxlbmRhci1ib2R5LXNlbGVjdGVkKTpub3QoLm1hdC1jYWxlbmRhci1ib2R5LWNvbXBhcmlzb24taWRlbnRpY2FsKXtib3JkZXItY29sb3I6cmdiYSgwLDAsMCwuMTgpfS5tYXQtY2FsZW5kYXItYm9keS1pbi1yYW5nZVtfbmdjb250ZW50LSVDT01QJV06OmJlZm9yZXtiYWNrZ3JvdW5kOnJnYmEoMjQ1LDEyNCwwLC4yKX0ubWF0LWNhbGVuZGFyLWJvZHktY29tcGFyaXNvbi1pZGVudGljYWxbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWNhbGVuZGFyLWJvZHktaW4tY29tcGFyaXNvbi1yYW5nZVtfbmdjb250ZW50LSVDT01QJV06OmJlZm9yZXtiYWNrZ3JvdW5kOnJnYmEoMjQ5LDE3MSwwLC4yKX0ubWF0LWNhbGVuZGFyLWJvZHktY29tcGFyaXNvbi1icmlkZ2Utc3RhcnRbX25nY29udGVudC0lQ09NUCVdOjpiZWZvcmUsIFtkaXI9cnRsXVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWNhbGVuZGFyLWJvZHktY29tcGFyaXNvbi1icmlkZ2UtZW5kW19uZ2NvbnRlbnQtJUNPTVAlXTo6YmVmb3Jle2JhY2tncm91bmQ6bGluZWFyLWdyYWRpZW50KHRvIHJpZ2h0LCByZ2JhKDI0NSwgMTI0LCAwLCAwLjIpIDUwJSwgcmdiYSgyNDksIDE3MSwgMCwgMC4yKSA1MCUpfS5tYXQtY2FsZW5kYXItYm9keS1jb21wYXJpc29uLWJyaWRnZS1lbmRbX25nY29udGVudC0lQ09NUCVdOjpiZWZvcmUsIFtkaXI9cnRsXVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWNhbGVuZGFyLWJvZHktY29tcGFyaXNvbi1icmlkZ2Utc3RhcnRbX25nY29udGVudC0lQ09NUCVdOjpiZWZvcmV7YmFja2dyb3VuZDpsaW5lYXItZ3JhZGllbnQodG8gbGVmdCwgcmdiYSgyNDUsIDEyNCwgMCwgMC4yKSA1MCUsIHJnYmEoMjQ5LCAxNzEsIDAsIDAuMikgNTAlKX0ubWF0LWNhbGVuZGFyLWJvZHktaW4tcmFuZ2VbX25nY29udGVudC0lQ09NUCVdID4gLm1hdC1jYWxlbmRhci1ib2R5LWNvbXBhcmlzb24taWRlbnRpY2FsW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1jYWxlbmRhci1ib2R5LWluLWNvbXBhcmlzb24tcmFuZ2UubWF0LWNhbGVuZGFyLWJvZHktaW4tcmFuZ2VbX25nY29udGVudC0lQ09NUCVdOjphZnRlcntiYWNrZ3JvdW5kOiNhOGRhYjV9Lm1hdC1jYWxlbmRhci1ib2R5LWNvbXBhcmlzb24taWRlbnRpY2FsLm1hdC1jYWxlbmRhci1ib2R5LXNlbGVjdGVkW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1jYWxlbmRhci1ib2R5LWluLWNvbXBhcmlzb24tcmFuZ2VbX25nY29udGVudC0lQ09NUCVdID4gLm1hdC1jYWxlbmRhci1ib2R5LXNlbGVjdGVkW19uZ2NvbnRlbnQtJUNPTVAlXXtiYWNrZ3JvdW5kOiM0NmEzNWV9Lm1hdC1jYWxlbmRhci1ib2R5LXNlbGVjdGVkW19uZ2NvbnRlbnQtJUNPTVAlXXtiYWNrZ3JvdW5kLWNvbG9yOiNmNTdjMDA7Y29sb3I6I2ZmZn0ubWF0LWNhbGVuZGFyLWJvZHktZGlzYWJsZWRbX25nY29udGVudC0lQ09NUCVdID4gLm1hdC1jYWxlbmRhci1ib2R5LXNlbGVjdGVkW19uZ2NvbnRlbnQtJUNPTVAlXXtiYWNrZ3JvdW5kLWNvbG9yOnJnYmEoMjQ1LDEyNCwwLC40KX0ubWF0LWNhbGVuZGFyLWJvZHktdG9kYXkubWF0LWNhbGVuZGFyLWJvZHktc2VsZWN0ZWRbX25nY29udGVudC0lQ09NUCVde2JveC1zaGFkb3c6aW5zZXQgMCAwIDAgMXB4ICNmZmZ9Lm1hdC1kYXRlcGlja2VyLWNvbnRlbnRbX25nY29udGVudC0lQ09NUCVde2JveC1zaGFkb3c6MHB4IDJweCA0cHggLTFweCByZ2JhKDAsIDAsIDAsIDAuMiksMHB4IDRweCA1cHggMHB4IHJnYmEoMCwgMCwgMCwgMC4xNCksMHB4IDFweCAxMHB4IDBweCByZ2JhKDAsIDAsIDAsIDAuMTIpO2JhY2tncm91bmQtY29sb3I6I2ZmZjtjb2xvcjojMjEyMTIxfS5tYXQtZGF0ZXBpY2tlci1jb250ZW50Lm1hdC1hY2NlbnRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1jYWxlbmRhci1ib2R5LWluLXJhbmdlW19uZ2NvbnRlbnQtJUNPTVAlXTo6YmVmb3Jle2JhY2tncm91bmQ6cmdiYSgyNTUsMTUyLDAsLjIpfS5tYXQtZGF0ZXBpY2tlci1jb250ZW50Lm1hdC1hY2NlbnRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1jYWxlbmRhci1ib2R5LWNvbXBhcmlzb24taWRlbnRpY2FsW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1kYXRlcGlja2VyLWNvbnRlbnQubWF0LWFjY2VudFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWNhbGVuZGFyLWJvZHktaW4tY29tcGFyaXNvbi1yYW5nZVtfbmdjb250ZW50LSVDT01QJV06OmJlZm9yZXtiYWNrZ3JvdW5kOnJnYmEoMjQ5LDE3MSwwLC4yKX0ubWF0LWRhdGVwaWNrZXItY29udGVudC5tYXQtYWNjZW50W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtY2FsZW5kYXItYm9keS1jb21wYXJpc29uLWJyaWRnZS1zdGFydFtfbmdjb250ZW50LSVDT01QJV06OmJlZm9yZSwgLm1hdC1kYXRlcGlja2VyLWNvbnRlbnQubWF0LWFjY2VudFtfbmdjb250ZW50LSVDT01QJV0gICBbZGlyPXJ0bF1bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1jYWxlbmRhci1ib2R5LWNvbXBhcmlzb24tYnJpZGdlLWVuZFtfbmdjb250ZW50LSVDT01QJV06OmJlZm9yZXtiYWNrZ3JvdW5kOmxpbmVhci1ncmFkaWVudCh0byByaWdodCwgcmdiYSgyNTUsIDE1MiwgMCwgMC4yKSA1MCUsIHJnYmEoMjQ5LCAxNzEsIDAsIDAuMikgNTAlKX0ubWF0LWRhdGVwaWNrZXItY29udGVudC5tYXQtYWNjZW50W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtY2FsZW5kYXItYm9keS1jb21wYXJpc29uLWJyaWRnZS1lbmRbX25nY29udGVudC0lQ09NUCVdOjpiZWZvcmUsIC5tYXQtZGF0ZXBpY2tlci1jb250ZW50Lm1hdC1hY2NlbnRbX25nY29udGVudC0lQ09NUCVdICAgW2Rpcj1ydGxdW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtY2FsZW5kYXItYm9keS1jb21wYXJpc29uLWJyaWRnZS1zdGFydFtfbmdjb250ZW50LSVDT01QJV06OmJlZm9yZXtiYWNrZ3JvdW5kOmxpbmVhci1ncmFkaWVudCh0byBsZWZ0LCByZ2JhKDI1NSwgMTUyLCAwLCAwLjIpIDUwJSwgcmdiYSgyNDksIDE3MSwgMCwgMC4yKSA1MCUpfS5tYXQtZGF0ZXBpY2tlci1jb250ZW50Lm1hdC1hY2NlbnRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1jYWxlbmRhci1ib2R5LWluLXJhbmdlW19uZ2NvbnRlbnQtJUNPTVAlXSA+IC5tYXQtY2FsZW5kYXItYm9keS1jb21wYXJpc29uLWlkZW50aWNhbFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtZGF0ZXBpY2tlci1jb250ZW50Lm1hdC1hY2NlbnRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1jYWxlbmRhci1ib2R5LWluLWNvbXBhcmlzb24tcmFuZ2UubWF0LWNhbGVuZGFyLWJvZHktaW4tcmFuZ2VbX25nY29udGVudC0lQ09NUCVdOjphZnRlcntiYWNrZ3JvdW5kOiNhOGRhYjV9Lm1hdC1kYXRlcGlja2VyLWNvbnRlbnQubWF0LWFjY2VudFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWNhbGVuZGFyLWJvZHktY29tcGFyaXNvbi1pZGVudGljYWwubWF0LWNhbGVuZGFyLWJvZHktc2VsZWN0ZWRbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWRhdGVwaWNrZXItY29udGVudC5tYXQtYWNjZW50W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtY2FsZW5kYXItYm9keS1pbi1jb21wYXJpc29uLXJhbmdlW19uZ2NvbnRlbnQtJUNPTVAlXSA+IC5tYXQtY2FsZW5kYXItYm9keS1zZWxlY3RlZFtfbmdjb250ZW50LSVDT01QJV17YmFja2dyb3VuZDojNDZhMzVlfS5tYXQtZGF0ZXBpY2tlci1jb250ZW50Lm1hdC1hY2NlbnRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1jYWxlbmRhci1ib2R5LXNlbGVjdGVkW19uZ2NvbnRlbnQtJUNPTVAlXXtiYWNrZ3JvdW5kLWNvbG9yOiNmZjk4MDA7Y29sb3I6I2ZmZn0ubWF0LWRhdGVwaWNrZXItY29udGVudC5tYXQtYWNjZW50W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtY2FsZW5kYXItYm9keS1kaXNhYmxlZFtfbmdjb250ZW50LSVDT01QJV0gPiAubWF0LWNhbGVuZGFyLWJvZHktc2VsZWN0ZWRbX25nY29udGVudC0lQ09NUCVde2JhY2tncm91bmQtY29sb3I6cmdiYSgyNTUsMTUyLDAsLjQpfS5tYXQtZGF0ZXBpY2tlci1jb250ZW50Lm1hdC1hY2NlbnRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1jYWxlbmRhci1ib2R5LXRvZGF5Lm1hdC1jYWxlbmRhci1ib2R5LXNlbGVjdGVkW19uZ2NvbnRlbnQtJUNPTVAlXXtib3gtc2hhZG93Omluc2V0IDAgMCAwIDFweCAjZmZmfS5tYXQtZGF0ZXBpY2tlci1jb250ZW50Lm1hdC13YXJuW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtY2FsZW5kYXItYm9keS1pbi1yYW5nZVtfbmdjb250ZW50LSVDT01QJV06OmJlZm9yZXtiYWNrZ3JvdW5kOnJnYmEoMjQ0LDY3LDU0LC4yKX0ubWF0LWRhdGVwaWNrZXItY29udGVudC5tYXQtd2Fybltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWNhbGVuZGFyLWJvZHktY29tcGFyaXNvbi1pZGVudGljYWxbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWRhdGVwaWNrZXItY29udGVudC5tYXQtd2Fybltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWNhbGVuZGFyLWJvZHktaW4tY29tcGFyaXNvbi1yYW5nZVtfbmdjb250ZW50LSVDT01QJV06OmJlZm9yZXtiYWNrZ3JvdW5kOnJnYmEoMjQ5LDE3MSwwLC4yKX0ubWF0LWRhdGVwaWNrZXItY29udGVudC5tYXQtd2Fybltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWNhbGVuZGFyLWJvZHktY29tcGFyaXNvbi1icmlkZ2Utc3RhcnRbX25nY29udGVudC0lQ09NUCVdOjpiZWZvcmUsIC5tYXQtZGF0ZXBpY2tlci1jb250ZW50Lm1hdC13YXJuW19uZ2NvbnRlbnQtJUNPTVAlXSAgIFtkaXI9cnRsXVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWNhbGVuZGFyLWJvZHktY29tcGFyaXNvbi1icmlkZ2UtZW5kW19uZ2NvbnRlbnQtJUNPTVAlXTo6YmVmb3Jle2JhY2tncm91bmQ6bGluZWFyLWdyYWRpZW50KHRvIHJpZ2h0LCByZ2JhKDI0NCwgNjcsIDU0LCAwLjIpIDUwJSwgcmdiYSgyNDksIDE3MSwgMCwgMC4yKSA1MCUpfS5tYXQtZGF0ZXBpY2tlci1jb250ZW50Lm1hdC13YXJuW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtY2FsZW5kYXItYm9keS1jb21wYXJpc29uLWJyaWRnZS1lbmRbX25nY29udGVudC0lQ09NUCVdOjpiZWZvcmUsIC5tYXQtZGF0ZXBpY2tlci1jb250ZW50Lm1hdC13YXJuW19uZ2NvbnRlbnQtJUNPTVAlXSAgIFtkaXI9cnRsXVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWNhbGVuZGFyLWJvZHktY29tcGFyaXNvbi1icmlkZ2Utc3RhcnRbX25nY29udGVudC0lQ09NUCVdOjpiZWZvcmV7YmFja2dyb3VuZDpsaW5lYXItZ3JhZGllbnQodG8gbGVmdCwgcmdiYSgyNDQsIDY3LCA1NCwgMC4yKSA1MCUsIHJnYmEoMjQ5LCAxNzEsIDAsIDAuMikgNTAlKX0ubWF0LWRhdGVwaWNrZXItY29udGVudC5tYXQtd2Fybltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWNhbGVuZGFyLWJvZHktaW4tcmFuZ2VbX25nY29udGVudC0lQ09NUCVdID4gLm1hdC1jYWxlbmRhci1ib2R5LWNvbXBhcmlzb24taWRlbnRpY2FsW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1kYXRlcGlja2VyLWNvbnRlbnQubWF0LXdhcm5bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1jYWxlbmRhci1ib2R5LWluLWNvbXBhcmlzb24tcmFuZ2UubWF0LWNhbGVuZGFyLWJvZHktaW4tcmFuZ2VbX25nY29udGVudC0lQ09NUCVdOjphZnRlcntiYWNrZ3JvdW5kOiNhOGRhYjV9Lm1hdC1kYXRlcGlja2VyLWNvbnRlbnQubWF0LXdhcm5bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1jYWxlbmRhci1ib2R5LWNvbXBhcmlzb24taWRlbnRpY2FsLm1hdC1jYWxlbmRhci1ib2R5LXNlbGVjdGVkW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1kYXRlcGlja2VyLWNvbnRlbnQubWF0LXdhcm5bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1jYWxlbmRhci1ib2R5LWluLWNvbXBhcmlzb24tcmFuZ2VbX25nY29udGVudC0lQ09NUCVdID4gLm1hdC1jYWxlbmRhci1ib2R5LXNlbGVjdGVkW19uZ2NvbnRlbnQtJUNPTVAlXXtiYWNrZ3JvdW5kOiM0NmEzNWV9Lm1hdC1kYXRlcGlja2VyLWNvbnRlbnQubWF0LXdhcm5bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1jYWxlbmRhci1ib2R5LXNlbGVjdGVkW19uZ2NvbnRlbnQtJUNPTVAlXXtiYWNrZ3JvdW5kLWNvbG9yOiNmNDQzMzY7Y29sb3I6I2ZmZn0ubWF0LWRhdGVwaWNrZXItY29udGVudC5tYXQtd2Fybltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWNhbGVuZGFyLWJvZHktZGlzYWJsZWRbX25nY29udGVudC0lQ09NUCVdID4gLm1hdC1jYWxlbmRhci1ib2R5LXNlbGVjdGVkW19uZ2NvbnRlbnQtJUNPTVAlXXtiYWNrZ3JvdW5kLWNvbG9yOnJnYmEoMjQ0LDY3LDU0LC40KX0ubWF0LWRhdGVwaWNrZXItY29udGVudC5tYXQtd2Fybltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWNhbGVuZGFyLWJvZHktdG9kYXkubWF0LWNhbGVuZGFyLWJvZHktc2VsZWN0ZWRbX25nY29udGVudC0lQ09NUCVde2JveC1zaGFkb3c6aW5zZXQgMCAwIDAgMXB4ICNmZmZ9Lm1hdC1kYXRlcGlja2VyLWNvbnRlbnQtdG91Y2hbX25nY29udGVudC0lQ09NUCVde2JveC1zaGFkb3c6MHB4IDBweCAwcHggMHB4IHJnYmEoMCwgMCwgMCwgMC4yKSwwcHggMHB4IDBweCAwcHggcmdiYSgwLCAwLCAwLCAwLjE0KSwwcHggMHB4IDBweCAwcHggcmdiYSgwLCAwLCAwLCAwLjEyKX0ubWF0LWRhdGVwaWNrZXItdG9nZ2xlLWFjdGl2ZVtfbmdjb250ZW50LSVDT01QJV17Y29sb3I6I2Y1N2MwMH0ubWF0LWRhdGVwaWNrZXItdG9nZ2xlLWFjdGl2ZS5tYXQtYWNjZW50W19uZ2NvbnRlbnQtJUNPTVAlXXtjb2xvcjojZmY5ODAwfS5tYXQtZGF0ZXBpY2tlci10b2dnbGUtYWN0aXZlLm1hdC13YXJuW19uZ2NvbnRlbnQtJUNPTVAlXXtjb2xvcjojZjQ0MzM2fS5tYXQtZGF0ZS1yYW5nZS1pbnB1dC1pbm5lcltkaXNhYmxlZF1bX25nY29udGVudC0lQ09NUCVde2NvbG9yOiM3NTc1NzV9Lm1hdC1kaWFsb2ctY29udGFpbmVyW19uZ2NvbnRlbnQtJUNPTVAlXXtib3gtc2hhZG93OjBweCAxMXB4IDE1cHggLTdweCByZ2JhKDAsIDAsIDAsIDAuMiksMHB4IDI0cHggMzhweCAzcHggcmdiYSgwLCAwLCAwLCAwLjE0KSwwcHggOXB4IDQ2cHggOHB4IHJnYmEoMCwgMCwgMCwgMC4xMik7YmFja2dyb3VuZDojZmZmO2NvbG9yOiMyMTIxMjF9Lm1hdC1kaXZpZGVyW19uZ2NvbnRlbnQtJUNPTVAlXXtib3JkZXItdG9wLWNvbG9yOnJnYmEoMCwwLDAsLjEyKX0ubWF0LWRpdmlkZXItdmVydGljYWxbX25nY29udGVudC0lQ09NUCVde2JvcmRlci1yaWdodC1jb2xvcjpyZ2JhKDAsMCwwLC4xMil9Lm1hdC1leHBhbnNpb24tcGFuZWxbX25nY29udGVudC0lQ09NUCVde2JhY2tncm91bmQ6I2ZmZjtjb2xvcjojMjEyMTIxfS5tYXQtZXhwYW5zaW9uLXBhbmVsW19uZ2NvbnRlbnQtJUNPTVAlXTpub3QoW2NsYXNzKj1tYXQtZWxldmF0aW9uLXpdKXtib3gtc2hhZG93OjBweCAzcHggMXB4IC0ycHggcmdiYSgwLCAwLCAwLCAwLjIpLDBweCAycHggMnB4IDBweCByZ2JhKDAsIDAsIDAsIDAuMTQpLDBweCAxcHggNXB4IDBweCByZ2JhKDAsIDAsIDAsIDAuMTIpfS5tYXQtYWN0aW9uLXJvd1tfbmdjb250ZW50LSVDT01QJV17Ym9yZGVyLXRvcC1jb2xvcjpyZ2JhKDAsMCwwLC4xMil9Lm1hdC1leHBhbnNpb24tcGFuZWxbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1leHBhbnNpb24tcGFuZWwtaGVhZGVyLmNkay1rZXlib2FyZC1mb2N1c2VkW19uZ2NvbnRlbnQtJUNPTVAlXTpub3QoW2FyaWEtZGlzYWJsZWQ9dHJ1ZV0pLCAubWF0LWV4cGFuc2lvbi1wYW5lbFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWV4cGFuc2lvbi1wYW5lbC1oZWFkZXIuY2RrLXByb2dyYW0tZm9jdXNlZFtfbmdjb250ZW50LSVDT01QJV06bm90KFthcmlhLWRpc2FibGVkPXRydWVdKSwgLm1hdC1leHBhbnNpb24tcGFuZWxbX25nY29udGVudC0lQ09NUCVdOm5vdCgubWF0LWV4cGFuZGVkKSAgIC5tYXQtZXhwYW5zaW9uLXBhbmVsLWhlYWRlcltfbmdjb250ZW50LSVDT01QJV06aG92ZXI6bm90KFthcmlhLWRpc2FibGVkPXRydWVdKXtiYWNrZ3JvdW5kOnJnYmEoMCwwLDAsLjA0KX1AbWVkaWEoaG92ZXI6IG5vbmUpey5tYXQtZXhwYW5zaW9uLXBhbmVsW19uZ2NvbnRlbnQtJUNPTVAlXTpub3QoLm1hdC1leHBhbmRlZCk6bm90KFthcmlhLWRpc2FibGVkPXRydWVdKSAgIC5tYXQtZXhwYW5zaW9uLXBhbmVsLWhlYWRlcltfbmdjb250ZW50LSVDT01QJV06aG92ZXJ7YmFja2dyb3VuZDojZmZmfX0ubWF0LWV4cGFuc2lvbi1wYW5lbC1oZWFkZXItdGl0bGVbX25nY29udGVudC0lQ09NUCVde2NvbG9yOiMyMTIxMjF9Lm1hdC1leHBhbnNpb24tcGFuZWwtaGVhZGVyLWRlc2NyaXB0aW9uW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1leHBhbnNpb24taW5kaWNhdG9yW19uZ2NvbnRlbnQtJUNPTVAlXTo6YWZ0ZXJ7Y29sb3I6IzYxNjE2MX0ubWF0LWV4cGFuc2lvbi1wYW5lbC1oZWFkZXJbYXJpYS1kaXNhYmxlZD10cnVlXVtfbmdjb250ZW50LSVDT01QJV17Y29sb3I6cmdiYSgwLDAsMCwuMjYpfS5tYXQtZXhwYW5zaW9uLXBhbmVsLWhlYWRlclthcmlhLWRpc2FibGVkPXRydWVdW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZXhwYW5zaW9uLXBhbmVsLWhlYWRlci10aXRsZVtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtZXhwYW5zaW9uLXBhbmVsLWhlYWRlclthcmlhLWRpc2FibGVkPXRydWVdW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZXhwYW5zaW9uLXBhbmVsLWhlYWRlci1kZXNjcmlwdGlvbltfbmdjb250ZW50LSVDT01QJV17Y29sb3I6aW5oZXJpdH0ubWF0LWV4cGFuc2lvbi1wYW5lbC1oZWFkZXJbX25nY29udGVudC0lQ09NUCVde2hlaWdodDo0OHB4fS5tYXQtZXhwYW5zaW9uLXBhbmVsLWhlYWRlci5tYXQtZXhwYW5kZWRbX25nY29udGVudC0lQ09NUCVde2hlaWdodDo2NHB4fS5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17Y29sb3I6cmdiYSg5Nyw5Nyw5NywuNil9Lm1hdC1oaW50W19uZ2NvbnRlbnQtJUNPTVAlXXtjb2xvcjpyZ2JhKDk3LDk3LDk3LC42KX0ubWF0LWZvcm0tZmllbGQubWF0LWZvY3VzZWRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXtjb2xvcjojZjU3YzAwfS5tYXQtZm9ybS1maWVsZC5tYXQtZm9jdXNlZFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWwubWF0LWFjY2VudFtfbmdjb250ZW50LSVDT01QJV17Y29sb3I6I2ZmOTgwMH0ubWF0LWZvcm0tZmllbGQubWF0LWZvY3VzZWRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsLm1hdC13YXJuW19uZ2NvbnRlbnQtJUNPTVAlXXtjb2xvcjojZjQ0MzM2fS5tYXQtZm9jdXNlZFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtcmVxdWlyZWQtbWFya2VyW19uZ2NvbnRlbnQtJUNPTVAlXXtjb2xvcjojZmY5ODAwfS5tYXQtZm9ybS1maWVsZC1yaXBwbGVbX25nY29udGVudC0lQ09NUCVde2JhY2tncm91bmQtY29sb3I6cmdiYSgwLDAsMCwuODcpfS5tYXQtZm9ybS1maWVsZC5tYXQtZm9jdXNlZFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtcmlwcGxlW19uZ2NvbnRlbnQtJUNPTVAlXXtiYWNrZ3JvdW5kLWNvbG9yOiNmNTdjMDB9Lm1hdC1mb3JtLWZpZWxkLm1hdC1mb2N1c2VkW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1yaXBwbGUubWF0LWFjY2VudFtfbmdjb250ZW50LSVDT01QJV17YmFja2dyb3VuZC1jb2xvcjojZmY5ODAwfS5tYXQtZm9ybS1maWVsZC5tYXQtZm9jdXNlZFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtcmlwcGxlLm1hdC13YXJuW19uZ2NvbnRlbnQtJUNPTVAlXXtiYWNrZ3JvdW5kLWNvbG9yOiNmNDQzMzZ9Lm1hdC1mb3JtLWZpZWxkLXR5cGUtbWF0LW5hdGl2ZS1zZWxlY3QubWF0LWZvY3VzZWRbX25nY29udGVudC0lQ09NUCVdOm5vdCgubWF0LWZvcm0tZmllbGQtaW52YWxpZCkgICAubWF0LWZvcm0tZmllbGQtaW5maXhbX25nY29udGVudC0lQ09NUCVdOjphZnRlcntjb2xvcjojZjU3YzAwfS5tYXQtZm9ybS1maWVsZC10eXBlLW1hdC1uYXRpdmUtc2VsZWN0Lm1hdC1mb2N1c2VkW19uZ2NvbnRlbnQtJUNPTVAlXTpub3QoLm1hdC1mb3JtLWZpZWxkLWludmFsaWQpLm1hdC1hY2NlbnQgICAubWF0LWZvcm0tZmllbGQtaW5maXhbX25nY29udGVudC0lQ09NUCVdOjphZnRlcntjb2xvcjojZmY5ODAwfS5tYXQtZm9ybS1maWVsZC10eXBlLW1hdC1uYXRpdmUtc2VsZWN0Lm1hdC1mb2N1c2VkW19uZ2NvbnRlbnQtJUNPTVAlXTpub3QoLm1hdC1mb3JtLWZpZWxkLWludmFsaWQpLm1hdC13YXJuICAgLm1hdC1mb3JtLWZpZWxkLWluZml4W19uZ2NvbnRlbnQtJUNPTVAlXTo6YWZ0ZXJ7Y29sb3I6I2Y0NDMzNn0ubWF0LWZvcm0tZmllbGQubWF0LWZvcm0tZmllbGQtaW52YWxpZFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVde2NvbG9yOiNmNDQzMzZ9Lm1hdC1mb3JtLWZpZWxkLm1hdC1mb3JtLWZpZWxkLWludmFsaWRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsLm1hdC1hY2NlbnRbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWZvcm0tZmllbGQubWF0LWZvcm0tZmllbGQtaW52YWxpZFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLXJlcXVpcmVkLW1hcmtlcltfbmdjb250ZW50LSVDT01QJV17Y29sb3I6I2Y0NDMzNn0ubWF0LWZvcm0tZmllbGQubWF0LWZvcm0tZmllbGQtaW52YWxpZFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtcmlwcGxlW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1mb3JtLWZpZWxkLm1hdC1mb3JtLWZpZWxkLWludmFsaWRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLXJpcHBsZS5tYXQtYWNjZW50W19uZ2NvbnRlbnQtJUNPTVAlXXtiYWNrZ3JvdW5kLWNvbG9yOiNmNDQzMzZ9Lm1hdC1lcnJvcltfbmdjb250ZW50LSVDT01QJV17Y29sb3I6I2Y0NDMzNn0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1sZWdhY3lbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXtjb2xvcjojNjE2MTYxfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWxlZ2FjeVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWhpbnRbX25nY29udGVudC0lQ09NUCVde2NvbG9yOiM2MTYxNjF9Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtbGVnYWN5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC11bmRlcmxpbmVbX25nY29udGVudC0lQ09NUCVde2JhY2tncm91bmQtY29sb3I6cmdiYSgwLDAsMCwuNDIpfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWxlZ2FjeS5tYXQtZm9ybS1maWVsZC1kaXNhYmxlZFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtdW5kZXJsaW5lW19uZ2NvbnRlbnQtJUNPTVAlXXtiYWNrZ3JvdW5kLWltYWdlOmxpbmVhci1ncmFkaWVudCh0byByaWdodCwgcmdiYSgwLCAwLCAwLCAwLjQyKSAwJSwgcmdiYSgwLCAwLCAwLCAwLjQyKSAzMyUsIHRyYW5zcGFyZW50IDAlKTtiYWNrZ3JvdW5kLXNpemU6NHB4IDEwMCU7YmFja2dyb3VuZC1yZXBlYXQ6cmVwZWF0LXh9Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2Utc3RhbmRhcmRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLXVuZGVybGluZVtfbmdjb250ZW50LSVDT01QJV17YmFja2dyb3VuZC1jb2xvcjpyZ2JhKDAsMCwwLC40Mil9Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2Utc3RhbmRhcmQubWF0LWZvcm0tZmllbGQtZGlzYWJsZWRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLXVuZGVybGluZVtfbmdjb250ZW50LSVDT01QJV17YmFja2dyb3VuZC1pbWFnZTpsaW5lYXItZ3JhZGllbnQodG8gcmlnaHQsIHJnYmEoMCwgMCwgMCwgMC40MikgMCUsIHJnYmEoMCwgMCwgMCwgMC40MikgMzMlLCB0cmFuc3BhcmVudCAwJSk7YmFja2dyb3VuZC1zaXplOjRweCAxMDAlO2JhY2tncm91bmQtcmVwZWF0OnJlcGVhdC14fS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWZpbGxbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWZsZXhbX25nY29udGVudC0lQ09NUCVde2JhY2tncm91bmQtY29sb3I6cmdiYSgwLDAsMCwuMDQpfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWZpbGwubWF0LWZvcm0tZmllbGQtZGlzYWJsZWRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWZsZXhbX25nY29udGVudC0lQ09NUCVde2JhY2tncm91bmQtY29sb3I6cmdiYSgwLDAsMCwuMDIpfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWZpbGxbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLXVuZGVybGluZVtfbmdjb250ZW50LSVDT01QJV06OmJlZm9yZXtiYWNrZ3JvdW5kLWNvbG9yOnJnYmEoMCwwLDAsLjQyKX0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1maWxsLm1hdC1mb3JtLWZpZWxkLWRpc2FibGVkW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17Y29sb3I6Izc1NzU3NX0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1maWxsLm1hdC1mb3JtLWZpZWxkLWRpc2FibGVkW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC11bmRlcmxpbmVbX25nY29udGVudC0lQ09NUCVdOjpiZWZvcmV7YmFja2dyb3VuZC1jb2xvcjp0cmFuc3BhcmVudH0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1vdXRsaW5lW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1vdXRsaW5lW19uZ2NvbnRlbnQtJUNPTVAlXXtjb2xvcjpyZ2JhKDAsMCwwLC4xMil9Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2Utb3V0bGluZVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtb3V0bGluZS10aGlja1tfbmdjb250ZW50LSVDT01QJV17Y29sb3I6cmdiYSgwLDAsMCwuODcpfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLW91dGxpbmUubWF0LWZvY3VzZWRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLW91dGxpbmUtdGhpY2tbX25nY29udGVudC0lQ09NUCVde2NvbG9yOiNmNTdjMDB9Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2Utb3V0bGluZS5tYXQtZm9jdXNlZC5tYXQtYWNjZW50W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1vdXRsaW5lLXRoaWNrW19uZ2NvbnRlbnQtJUNPTVAlXXtjb2xvcjojZmY5ODAwfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLW91dGxpbmUubWF0LWZvY3VzZWQubWF0LXdhcm5bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLW91dGxpbmUtdGhpY2tbX25nY29udGVudC0lQ09NUCVde2NvbG9yOiNmNDQzMzZ9Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2Utb3V0bGluZS5tYXQtZm9ybS1maWVsZC1pbnZhbGlkLm1hdC1mb3JtLWZpZWxkLWludmFsaWRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLW91dGxpbmUtdGhpY2tbX25nY29udGVudC0lQ09NUCVde2NvbG9yOiNmNDQzMzZ9Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2Utb3V0bGluZS5tYXQtZm9ybS1maWVsZC1kaXNhYmxlZFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVde2NvbG9yOiM3NTc1NzV9Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2Utb3V0bGluZS5tYXQtZm9ybS1maWVsZC1kaXNhYmxlZFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtb3V0bGluZVtfbmdjb250ZW50LSVDT01QJV17Y29sb3I6cmdiYSgwLDAsMCwuMDYpfS5tYXQtaWNvbi5tYXQtcHJpbWFyeVtfbmdjb250ZW50LSVDT01QJV17Y29sb3I6I2Y1N2MwMH0ubWF0LWljb24ubWF0LWFjY2VudFtfbmdjb250ZW50LSVDT01QJV17Y29sb3I6I2ZmOTgwMH0ubWF0LWljb24ubWF0LXdhcm5bX25nY29udGVudC0lQ09NUCVde2NvbG9yOiNmNDQzMzZ9Lm1hdC1mb3JtLWZpZWxkLXR5cGUtbWF0LW5hdGl2ZS1zZWxlY3RbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWluZml4W19uZ2NvbnRlbnQtJUNPTVAlXTo6YWZ0ZXJ7Y29sb3I6IzYxNjE2MX0ubWF0LWlucHV0LWVsZW1lbnRbX25nY29udGVudC0lQ09NUCVdOmRpc2FibGVkLCAubWF0LWZvcm0tZmllbGQtdHlwZS1tYXQtbmF0aXZlLXNlbGVjdC5tYXQtZm9ybS1maWVsZC1kaXNhYmxlZFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtaW5maXhbX25nY29udGVudC0lQ09NUCVdOjphZnRlcntjb2xvcjojNzU3NTc1fS5tYXQtaW5wdXQtZWxlbWVudFtfbmdjb250ZW50LSVDT01QJV17Y2FyZXQtY29sb3I6I2Y1N2MwMH0ubWF0LWlucHV0LWVsZW1lbnRbX25nY29udGVudC0lQ09NUCVdOjpwbGFjZWhvbGRlcntjb2xvcjpyZ2JhKDk3LDk3LDk3LC40Mil9Lm1hdC1pbnB1dC1lbGVtZW50W19uZ2NvbnRlbnQtJUNPTVAlXTo6LW1vei1wbGFjZWhvbGRlcntjb2xvcjpyZ2JhKDk3LDk3LDk3LC40Mil9Lm1hdC1pbnB1dC1lbGVtZW50W19uZ2NvbnRlbnQtJUNPTVAlXTo6LXdlYmtpdC1pbnB1dC1wbGFjZWhvbGRlcntjb2xvcjpyZ2JhKDk3LDk3LDk3LC40Mil9Lm1hdC1pbnB1dC1lbGVtZW50W19uZ2NvbnRlbnQtJUNPTVAlXTotbXMtaW5wdXQtcGxhY2Vob2xkZXJ7Y29sb3I6cmdiYSg5Nyw5Nyw5NywuNDIpfS5tYXQtZm9ybS1maWVsZC5tYXQtYWNjZW50W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaW5wdXQtZWxlbWVudFtfbmdjb250ZW50LSVDT01QJV17Y2FyZXQtY29sb3I6I2ZmOTgwMH0ubWF0LWZvcm0tZmllbGQubWF0LXdhcm5bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pbnB1dC1lbGVtZW50W19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1mb3JtLWZpZWxkLWludmFsaWRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pbnB1dC1lbGVtZW50W19uZ2NvbnRlbnQtJUNPTVAlXXtjYXJldC1jb2xvcjojZjQ0MzM2fS5tYXQtZm9ybS1maWVsZC10eXBlLW1hdC1uYXRpdmUtc2VsZWN0Lm1hdC1mb3JtLWZpZWxkLWludmFsaWRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWluZml4W19uZ2NvbnRlbnQtJUNPTVAlXTo6YWZ0ZXJ7Y29sb3I6I2Y0NDMzNn0ubWF0LWxpc3QtYmFzZVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpc3QtaXRlbVtfbmdjb250ZW50LSVDT01QJV17Y29sb3I6IzIxMjEyMX0ubWF0LWxpc3QtYmFzZVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpc3Qtb3B0aW9uW19uZ2NvbnRlbnQtJUNPTVAlXXtjb2xvcjojMjEyMTIxfS5tYXQtbGlzdC1iYXNlW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtc3ViaGVhZGVyW19uZ2NvbnRlbnQtJUNPTVAlXXtjb2xvcjojNjE2MTYxfS5tYXQtbGlzdC1pdGVtLWRpc2FibGVkW19uZ2NvbnRlbnQtJUNPTVAlXXtiYWNrZ3JvdW5kLWNvbG9yOiNlZWV9Lm1hdC1saXN0LW9wdGlvbltfbmdjb250ZW50LSVDT01QJV06aG92ZXIsIC5tYXQtbGlzdC1vcHRpb25bX25nY29udGVudC0lQ09NUCVdOmZvY3VzLCAubWF0LW5hdi1saXN0W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGlzdC1pdGVtW19uZ2NvbnRlbnQtJUNPTVAlXTpob3ZlciwgLm1hdC1uYXYtbGlzdFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpc3QtaXRlbVtfbmdjb250ZW50LSVDT01QJV06Zm9jdXMsIC5tYXQtYWN0aW9uLWxpc3RbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saXN0LWl0ZW1bX25nY29udGVudC0lQ09NUCVdOmhvdmVyLCAubWF0LWFjdGlvbi1saXN0W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGlzdC1pdGVtW19uZ2NvbnRlbnQtJUNPTVAlXTpmb2N1c3tiYWNrZ3JvdW5kOnJnYmEoMCwwLDAsLjA0KX0ubWF0LWxpc3Qtc2luZ2xlLXNlbGVjdGVkLW9wdGlvbltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtbGlzdC1zaW5nbGUtc2VsZWN0ZWQtb3B0aW9uW19uZ2NvbnRlbnQtJUNPTVAlXTpob3ZlciwgLm1hdC1saXN0LXNpbmdsZS1zZWxlY3RlZC1vcHRpb25bX25nY29udGVudC0lQ09NUCVdOmZvY3Vze2JhY2tncm91bmQ6cmdiYSgwLDAsMCwuMTIpfS5tYXQtbWVudS1wYW5lbFtfbmdjb250ZW50LSVDT01QJV17YmFja2dyb3VuZDojZmZmfS5tYXQtbWVudS1wYW5lbFtfbmdjb250ZW50LSVDT01QJV06bm90KFtjbGFzcyo9bWF0LWVsZXZhdGlvbi16XSl7Ym94LXNoYWRvdzowcHggMnB4IDRweCAtMXB4IHJnYmEoMCwgMCwgMCwgMC4yKSwwcHggNHB4IDVweCAwcHggcmdiYSgwLCAwLCAwLCAwLjE0KSwwcHggMXB4IDEwcHggMHB4IHJnYmEoMCwgMCwgMCwgMC4xMil9Lm1hdC1tZW51LWl0ZW1bX25nY29udGVudC0lQ09NUCVde2JhY2tncm91bmQ6dHJhbnNwYXJlbnQ7Y29sb3I6IzIxMjEyMX0ubWF0LW1lbnUtaXRlbVtkaXNhYmxlZF1bX25nY29udGVudC0lQ09NUCVdLCAubWF0LW1lbnUtaXRlbVtkaXNhYmxlZF1bX25nY29udGVudC0lQ09NUCVdOjphZnRlcntjb2xvcjpyZ2JhKDAsMCwwLC4zOCl9Lm1hdC1tZW51LWl0ZW1bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pY29uLW5vLWNvbG9yW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1tZW51LWl0ZW0tc3VibWVudS10cmlnZ2VyW19uZ2NvbnRlbnQtJUNPTVAlXTo6YWZ0ZXJ7Y29sb3I6cmdiYSgwLDAsMCwuNTQpfS5tYXQtbWVudS1pdGVtW19uZ2NvbnRlbnQtJUNPTVAlXTpob3Zlcjpub3QoW2Rpc2FibGVkXSksIC5tYXQtbWVudS1pdGVtLmNkay1wcm9ncmFtLWZvY3VzZWRbX25nY29udGVudC0lQ09NUCVdOm5vdChbZGlzYWJsZWRdKSwgLm1hdC1tZW51LWl0ZW0uY2RrLWtleWJvYXJkLWZvY3VzZWRbX25nY29udGVudC0lQ09NUCVdOm5vdChbZGlzYWJsZWRdKSwgLm1hdC1tZW51LWl0ZW0taGlnaGxpZ2h0ZWRbX25nY29udGVudC0lQ09NUCVdOm5vdChbZGlzYWJsZWRdKXtiYWNrZ3JvdW5kOnJnYmEoMCwwLDAsLjA0KX0ubWF0LXBhZ2luYXRvcltfbmdjb250ZW50LSVDT01QJV17YmFja2dyb3VuZDojZmZmfS5tYXQtcGFnaW5hdG9yW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1wYWdpbmF0b3ItcGFnZS1zaXplW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtc2VsZWN0LXRyaWdnZXJbX25nY29udGVudC0lQ09NUCVde2NvbG9yOiM2MTYxNjF9Lm1hdC1wYWdpbmF0b3ItZGVjcmVtZW50W19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1wYWdpbmF0b3ItaW5jcmVtZW50W19uZ2NvbnRlbnQtJUNPTVAlXXtib3JkZXItdG9wOjJweCBzb2xpZCByZ2JhKDAsMCwwLC41NCk7Ym9yZGVyLXJpZ2h0OjJweCBzb2xpZCByZ2JhKDAsMCwwLC41NCl9Lm1hdC1wYWdpbmF0b3ItZmlyc3RbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXBhZ2luYXRvci1sYXN0W19uZ2NvbnRlbnQtJUNPTVAlXXtib3JkZXItdG9wOjJweCBzb2xpZCByZ2JhKDAsMCwwLC41NCl9Lm1hdC1pY29uLWJ1dHRvbltkaXNhYmxlZF1bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1wYWdpbmF0b3ItZGVjcmVtZW50W19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1pY29uLWJ1dHRvbltkaXNhYmxlZF1bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1wYWdpbmF0b3ItaW5jcmVtZW50W19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1pY29uLWJ1dHRvbltkaXNhYmxlZF1bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1wYWdpbmF0b3ItZmlyc3RbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWljb24tYnV0dG9uW2Rpc2FibGVkXVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXBhZ2luYXRvci1sYXN0W19uZ2NvbnRlbnQtJUNPTVAlXXtib3JkZXItY29sb3I6cmdiYSgwLDAsMCwuMzgpfS5tYXQtcGFnaW5hdG9yLWNvbnRhaW5lcltfbmdjb250ZW50LSVDT01QJV17bWluLWhlaWdodDo1NnB4fS5tYXQtcHJvZ3Jlc3MtYmFyLWJhY2tncm91bmRbX25nY29udGVudC0lQ09NUCVde2ZpbGw6I2ZmOTgwMH0ubWF0LXByb2dyZXNzLWJhci1idWZmZXJbX25nY29udGVudC0lQ09NUCVde2JhY2tncm91bmQtY29sb3I6I2ZmOTgwMH0ubWF0LXByb2dyZXNzLWJhci1maWxsW19uZ2NvbnRlbnQtJUNPTVAlXTo6YWZ0ZXJ7YmFja2dyb3VuZC1jb2xvcjojZjU3YzAwfS5tYXQtcHJvZ3Jlc3MtYmFyLm1hdC1hY2NlbnRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1wcm9ncmVzcy1iYXItYmFja2dyb3VuZFtfbmdjb250ZW50LSVDT01QJV17ZmlsbDojZmY5ODAwfS5tYXQtcHJvZ3Jlc3MtYmFyLm1hdC1hY2NlbnRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1wcm9ncmVzcy1iYXItYnVmZmVyW19uZ2NvbnRlbnQtJUNPTVAlXXtiYWNrZ3JvdW5kLWNvbG9yOiNmZjk4MDB9Lm1hdC1wcm9ncmVzcy1iYXIubWF0LWFjY2VudFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXByb2dyZXNzLWJhci1maWxsW19uZ2NvbnRlbnQtJUNPTVAlXTo6YWZ0ZXJ7YmFja2dyb3VuZC1jb2xvcjojZmY5ODAwfS5tYXQtcHJvZ3Jlc3MtYmFyLm1hdC13YXJuW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtcHJvZ3Jlc3MtYmFyLWJhY2tncm91bmRbX25nY29udGVudC0lQ09NUCVde2ZpbGw6I2ZmY2RkMn0ubWF0LXByb2dyZXNzLWJhci5tYXQtd2Fybltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXByb2dyZXNzLWJhci1idWZmZXJbX25nY29udGVudC0lQ09NUCVde2JhY2tncm91bmQtY29sb3I6I2ZmY2RkMn0ubWF0LXByb2dyZXNzLWJhci5tYXQtd2Fybltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXByb2dyZXNzLWJhci1maWxsW19uZ2NvbnRlbnQtJUNPTVAlXTo6YWZ0ZXJ7YmFja2dyb3VuZC1jb2xvcjojZjQ0MzM2fS5tYXQtcHJvZ3Jlc3Mtc3Bpbm5lcltfbmdjb250ZW50LSVDT01QJV0gICBjaXJjbGVbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXNwaW5uZXJbX25nY29udGVudC0lQ09NUCVdICAgY2lyY2xlW19uZ2NvbnRlbnQtJUNPTVAlXXtzdHJva2U6I2Y1N2MwMH0ubWF0LXByb2dyZXNzLXNwaW5uZXIubWF0LWFjY2VudFtfbmdjb250ZW50LSVDT01QJV0gICBjaXJjbGVbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXNwaW5uZXIubWF0LWFjY2VudFtfbmdjb250ZW50LSVDT01QJV0gICBjaXJjbGVbX25nY29udGVudC0lQ09NUCVde3N0cm9rZTojZmY5ODAwfS5tYXQtcHJvZ3Jlc3Mtc3Bpbm5lci5tYXQtd2Fybltfbmdjb250ZW50LSVDT01QJV0gICBjaXJjbGVbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXNwaW5uZXIubWF0LXdhcm5bX25nY29udGVudC0lQ09NUCVdICAgY2lyY2xlW19uZ2NvbnRlbnQtJUNPTVAlXXtzdHJva2U6I2Y0NDMzNn0ubWF0LXJhZGlvLW91dGVyLWNpcmNsZVtfbmdjb250ZW50LSVDT01QJV17Ym9yZGVyLWNvbG9yOiM2MTYxNjF9Lm1hdC1yYWRpby1idXR0b24ubWF0LXByaW1hcnkubWF0LXJhZGlvLWNoZWNrZWRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1yYWRpby1vdXRlci1jaXJjbGVbX25nY29udGVudC0lQ09NUCVde2JvcmRlci1jb2xvcjojZjU3YzAwfS5tYXQtcmFkaW8tYnV0dG9uLm1hdC1wcmltYXJ5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtcmFkaW8taW5uZXItY2lyY2xlW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1yYWRpby1idXR0b24ubWF0LXByaW1hcnlbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1yYWRpby1yaXBwbGVbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1yaXBwbGUtZWxlbWVudFtfbmdjb250ZW50LSVDT01QJV06bm90KC5tYXQtcmFkaW8tcGVyc2lzdGVudC1yaXBwbGUpLCAubWF0LXJhZGlvLWJ1dHRvbi5tYXQtcHJpbWFyeS5tYXQtcmFkaW8tY2hlY2tlZFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXJhZGlvLXBlcnNpc3RlbnQtcmlwcGxlW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1yYWRpby1idXR0b24ubWF0LXByaW1hcnlbX25nY29udGVudC0lQ09NUCVdOmFjdGl2ZSAgIC5tYXQtcmFkaW8tcGVyc2lzdGVudC1yaXBwbGVbX25nY29udGVudC0lQ09NUCVde2JhY2tncm91bmQtY29sb3I6I2Y1N2MwMH0ubWF0LXJhZGlvLWJ1dHRvbi5tYXQtYWNjZW50Lm1hdC1yYWRpby1jaGVja2VkW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtcmFkaW8tb3V0ZXItY2lyY2xlW19uZ2NvbnRlbnQtJUNPTVAlXXtib3JkZXItY29sb3I6I2ZmOTgwMH0ubWF0LXJhZGlvLWJ1dHRvbi5tYXQtYWNjZW50W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtcmFkaW8taW5uZXItY2lyY2xlW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1yYWRpby1idXR0b24ubWF0LWFjY2VudFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXJhZGlvLXJpcHBsZVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXJpcHBsZS1lbGVtZW50W19uZ2NvbnRlbnQtJUNPTVAlXTpub3QoLm1hdC1yYWRpby1wZXJzaXN0ZW50LXJpcHBsZSksIC5tYXQtcmFkaW8tYnV0dG9uLm1hdC1hY2NlbnQubWF0LXJhZGlvLWNoZWNrZWRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1yYWRpby1wZXJzaXN0ZW50LXJpcHBsZVtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtcmFkaW8tYnV0dG9uLm1hdC1hY2NlbnRbX25nY29udGVudC0lQ09NUCVdOmFjdGl2ZSAgIC5tYXQtcmFkaW8tcGVyc2lzdGVudC1yaXBwbGVbX25nY29udGVudC0lQ09NUCVde2JhY2tncm91bmQtY29sb3I6I2ZmOTgwMH0ubWF0LXJhZGlvLWJ1dHRvbi5tYXQtd2Fybi5tYXQtcmFkaW8tY2hlY2tlZFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXJhZGlvLW91dGVyLWNpcmNsZVtfbmdjb250ZW50LSVDT01QJV17Ym9yZGVyLWNvbG9yOiNmNDQzMzZ9Lm1hdC1yYWRpby1idXR0b24ubWF0LXdhcm5bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1yYWRpby1pbm5lci1jaXJjbGVbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXJhZGlvLWJ1dHRvbi5tYXQtd2Fybltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXJhZGlvLXJpcHBsZVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXJpcHBsZS1lbGVtZW50W19uZ2NvbnRlbnQtJUNPTVAlXTpub3QoLm1hdC1yYWRpby1wZXJzaXN0ZW50LXJpcHBsZSksIC5tYXQtcmFkaW8tYnV0dG9uLm1hdC13YXJuLm1hdC1yYWRpby1jaGVja2VkW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtcmFkaW8tcGVyc2lzdGVudC1yaXBwbGVbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXJhZGlvLWJ1dHRvbi5tYXQtd2Fybltfbmdjb250ZW50LSVDT01QJV06YWN0aXZlICAgLm1hdC1yYWRpby1wZXJzaXN0ZW50LXJpcHBsZVtfbmdjb250ZW50LSVDT01QJV17YmFja2dyb3VuZC1jb2xvcjojZjQ0MzM2fS5tYXQtcmFkaW8tYnV0dG9uLm1hdC1yYWRpby1kaXNhYmxlZC5tYXQtcmFkaW8tY2hlY2tlZFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXJhZGlvLW91dGVyLWNpcmNsZVtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtcmFkaW8tYnV0dG9uLm1hdC1yYWRpby1kaXNhYmxlZFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXJhZGlvLW91dGVyLWNpcmNsZVtfbmdjb250ZW50LSVDT01QJV17Ym9yZGVyLWNvbG9yOnJnYmEoMCwwLDAsLjM4KX0ubWF0LXJhZGlvLWJ1dHRvbi5tYXQtcmFkaW8tZGlzYWJsZWRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1yYWRpby1yaXBwbGVbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1yaXBwbGUtZWxlbWVudFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtcmFkaW8tYnV0dG9uLm1hdC1yYWRpby1kaXNhYmxlZFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXJhZGlvLWlubmVyLWNpcmNsZVtfbmdjb250ZW50LSVDT01QJV17YmFja2dyb3VuZC1jb2xvcjpyZ2JhKDAsMCwwLC4zOCl9Lm1hdC1yYWRpby1idXR0b24ubWF0LXJhZGlvLWRpc2FibGVkW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtcmFkaW8tbGFiZWwtY29udGVudFtfbmdjb250ZW50LSVDT01QJV17Y29sb3I6cmdiYSgwLDAsMCwuMzgpfS5tYXQtcmFkaW8tYnV0dG9uW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtcmlwcGxlLWVsZW1lbnRbX25nY29udGVudC0lQ09NUCVde2JhY2tncm91bmQtY29sb3I6IzAwMH0ubWF0LXNlbGVjdC12YWx1ZVtfbmdjb250ZW50LSVDT01QJV17Y29sb3I6IzIxMjEyMX0ubWF0LXNlbGVjdC1wbGFjZWhvbGRlcltfbmdjb250ZW50LSVDT01QJV17Y29sb3I6cmdiYSg5Nyw5Nyw5NywuNDIpfS5tYXQtc2VsZWN0LWRpc2FibGVkW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtc2VsZWN0LXZhbHVlW19uZ2NvbnRlbnQtJUNPTVAlXXtjb2xvcjojNzU3NTc1fS5tYXQtc2VsZWN0LWFycm93W19uZ2NvbnRlbnQtJUNPTVAlXXtjb2xvcjojNjE2MTYxfS5tYXQtc2VsZWN0LXBhbmVsW19uZ2NvbnRlbnQtJUNPTVAlXXtiYWNrZ3JvdW5kOiNmZmZ9Lm1hdC1zZWxlY3QtcGFuZWxbX25nY29udGVudC0lQ09NUCVdOm5vdChbY2xhc3MqPW1hdC1lbGV2YXRpb24tel0pe2JveC1zaGFkb3c6MHB4IDJweCA0cHggLTFweCByZ2JhKDAsIDAsIDAsIDAuMiksMHB4IDRweCA1cHggMHB4IHJnYmEoMCwgMCwgMCwgMC4xNCksMHB4IDFweCAxMHB4IDBweCByZ2JhKDAsIDAsIDAsIDAuMTIpfS5tYXQtc2VsZWN0LXBhbmVsW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtb3B0aW9uLm1hdC1zZWxlY3RlZFtfbmdjb250ZW50LSVDT01QJV06bm90KC5tYXQtb3B0aW9uLW11bHRpcGxlKXtiYWNrZ3JvdW5kOnJnYmEoMCwwLDAsLjEyKX0ubWF0LWZvcm0tZmllbGQubWF0LWZvY3VzZWQubWF0LXByaW1hcnlbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1zZWxlY3QtYXJyb3dbX25nY29udGVudC0lQ09NUCVde2NvbG9yOiNmNTdjMDB9Lm1hdC1mb3JtLWZpZWxkLm1hdC1mb2N1c2VkLm1hdC1hY2NlbnRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1zZWxlY3QtYXJyb3dbX25nY29udGVudC0lQ09NUCVde2NvbG9yOiNmZjk4MDB9Lm1hdC1mb3JtLWZpZWxkLm1hdC1mb2N1c2VkLm1hdC13YXJuW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtc2VsZWN0LWFycm93W19uZ2NvbnRlbnQtJUNPTVAlXXtjb2xvcjojZjQ0MzM2fS5tYXQtZm9ybS1maWVsZFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXNlbGVjdC5tYXQtc2VsZWN0LWludmFsaWRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1zZWxlY3QtYXJyb3dbX25nY29udGVudC0lQ09NUCVde2NvbG9yOiNmNDQzMzZ9Lm1hdC1mb3JtLWZpZWxkW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtc2VsZWN0Lm1hdC1zZWxlY3QtZGlzYWJsZWRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1zZWxlY3QtYXJyb3dbX25nY29udGVudC0lQ09NUCVde2NvbG9yOiM3NTc1NzV9Lm1hdC1kcmF3ZXItY29udGFpbmVyW19uZ2NvbnRlbnQtJUNPTVAlXXtiYWNrZ3JvdW5kLWNvbG9yOiNmYWZhZmE7Y29sb3I6IzIxMjEyMX0ubWF0LWRyYXdlcltfbmdjb250ZW50LSVDT01QJV17YmFja2dyb3VuZC1jb2xvcjojZmZmO2NvbG9yOiMyMTIxMjF9Lm1hdC1kcmF3ZXIubWF0LWRyYXdlci1wdXNoW19uZ2NvbnRlbnQtJUNPTVAlXXtiYWNrZ3JvdW5kLWNvbG9yOiNmZmZ9Lm1hdC1kcmF3ZXJbX25nY29udGVudC0lQ09NUCVdOm5vdCgubWF0LWRyYXdlci1zaWRlKXtib3gtc2hhZG93OjBweCA4cHggMTBweCAtNXB4IHJnYmEoMCwgMCwgMCwgMC4yKSwwcHggMTZweCAyNHB4IDJweCByZ2JhKDAsIDAsIDAsIDAuMTQpLDBweCA2cHggMzBweCA1cHggcmdiYSgwLCAwLCAwLCAwLjEyKX0ubWF0LWRyYXdlci1zaWRlW19uZ2NvbnRlbnQtJUNPTVAlXXtib3JkZXItcmlnaHQ6c29saWQgMXB4IHJnYmEoMCwwLDAsLjEyKX0ubWF0LWRyYXdlci1zaWRlLm1hdC1kcmF3ZXItZW5kW19uZ2NvbnRlbnQtJUNPTVAlXXtib3JkZXItbGVmdDpzb2xpZCAxcHggcmdiYSgwLDAsMCwuMTIpO2JvcmRlci1yaWdodDpub25lfVtkaXI9cnRsXVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWRyYXdlci1zaWRlW19uZ2NvbnRlbnQtJUNPTVAlXXtib3JkZXItbGVmdDpzb2xpZCAxcHggcmdiYSgwLDAsMCwuMTIpO2JvcmRlci1yaWdodDpub25lfVtkaXI9cnRsXVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWRyYXdlci1zaWRlLm1hdC1kcmF3ZXItZW5kW19uZ2NvbnRlbnQtJUNPTVAlXXtib3JkZXItbGVmdDpub25lO2JvcmRlci1yaWdodDpzb2xpZCAxcHggcmdiYSgwLDAsMCwuMTIpfS5tYXQtZHJhd2VyLWJhY2tkcm9wLm1hdC1kcmF3ZXItc2hvd25bX25nY29udGVudC0lQ09NUCVde2JhY2tncm91bmQtY29sb3I6cmdiYSgwLDAsMCwuNil9Lm1hdC1zbGlkZS10b2dnbGUubWF0LWNoZWNrZWRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1zbGlkZS10b2dnbGUtdGh1bWJbX25nY29udGVudC0lQ09NUCVde2JhY2tncm91bmQtY29sb3I6I2ZmOTgwMH0ubWF0LXNsaWRlLXRvZ2dsZS5tYXQtY2hlY2tlZFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXNsaWRlLXRvZ2dsZS1iYXJbX25nY29udGVudC0lQ09NUCVde2JhY2tncm91bmQtY29sb3I6cmdiYSgyNTUsMTUyLDAsLjU0KX0ubWF0LXNsaWRlLXRvZ2dsZS5tYXQtY2hlY2tlZFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXJpcHBsZS1lbGVtZW50W19uZ2NvbnRlbnQtJUNPTVAlXXtiYWNrZ3JvdW5kLWNvbG9yOiNmZjk4MDB9Lm1hdC1zbGlkZS10b2dnbGUubWF0LXByaW1hcnkubWF0LWNoZWNrZWRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1zbGlkZS10b2dnbGUtdGh1bWJbX25nY29udGVudC0lQ09NUCVde2JhY2tncm91bmQtY29sb3I6I2Y1N2MwMH0ubWF0LXNsaWRlLXRvZ2dsZS5tYXQtcHJpbWFyeS5tYXQtY2hlY2tlZFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXNsaWRlLXRvZ2dsZS1iYXJbX25nY29udGVudC0lQ09NUCVde2JhY2tncm91bmQtY29sb3I6cmdiYSgyNDUsMTI0LDAsLjU0KX0ubWF0LXNsaWRlLXRvZ2dsZS5tYXQtcHJpbWFyeS5tYXQtY2hlY2tlZFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXJpcHBsZS1lbGVtZW50W19uZ2NvbnRlbnQtJUNPTVAlXXtiYWNrZ3JvdW5kLWNvbG9yOiNmNTdjMDB9Lm1hdC1zbGlkZS10b2dnbGUubWF0LXdhcm4ubWF0LWNoZWNrZWRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1zbGlkZS10b2dnbGUtdGh1bWJbX25nY29udGVudC0lQ09NUCVde2JhY2tncm91bmQtY29sb3I6I2Y0NDMzNn0ubWF0LXNsaWRlLXRvZ2dsZS5tYXQtd2Fybi5tYXQtY2hlY2tlZFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXNsaWRlLXRvZ2dsZS1iYXJbX25nY29udGVudC0lQ09NUCVde2JhY2tncm91bmQtY29sb3I6cmdiYSgyNDQsNjcsNTQsLjU0KX0ubWF0LXNsaWRlLXRvZ2dsZS5tYXQtd2Fybi5tYXQtY2hlY2tlZFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXJpcHBsZS1lbGVtZW50W19uZ2NvbnRlbnQtJUNPTVAlXXtiYWNrZ3JvdW5kLWNvbG9yOiNmNDQzMzZ9Lm1hdC1zbGlkZS10b2dnbGVbX25nY29udGVudC0lQ09NUCVdOm5vdCgubWF0LWNoZWNrZWQpICAgLm1hdC1yaXBwbGUtZWxlbWVudFtfbmdjb250ZW50LSVDT01QJV17YmFja2dyb3VuZC1jb2xvcjojMDAwfS5tYXQtc2xpZGUtdG9nZ2xlLXRodW1iW19uZ2NvbnRlbnQtJUNPTVAlXXtib3gtc2hhZG93OjBweCAycHggMXB4IC0xcHggcmdiYSgwLCAwLCAwLCAwLjIpLDBweCAxcHggMXB4IDBweCByZ2JhKDAsIDAsIDAsIDAuMTQpLDBweCAxcHggM3B4IDBweCByZ2JhKDAsIDAsIDAsIDAuMTIpO2JhY2tncm91bmQtY29sb3I6I2ZhZmFmYX0ubWF0LXNsaWRlLXRvZ2dsZS1iYXJbX25nY29udGVudC0lQ09NUCVde2JhY2tncm91bmQtY29sb3I6cmdiYSgwLDAsMCwuMzgpfS5tYXQtc2xpZGVyLXRyYWNrLWJhY2tncm91bmRbX25nY29udGVudC0lQ09NUCVde2JhY2tncm91bmQtY29sb3I6cmdiYSgwLDAsMCwuMjYpfS5tYXQtcHJpbWFyeVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXNsaWRlci10cmFjay1maWxsW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1wcmltYXJ5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtc2xpZGVyLXRodW1iW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1wcmltYXJ5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtc2xpZGVyLXRodW1iLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXtiYWNrZ3JvdW5kLWNvbG9yOiNmNTdjMDB9Lm1hdC1wcmltYXJ5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtc2xpZGVyLXRodW1iLWxhYmVsLXRleHRbX25nY29udGVudC0lQ09NUCVde2NvbG9yOiNmZmZ9Lm1hdC1wcmltYXJ5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtc2xpZGVyLWZvY3VzLXJpbmdbX25nY29udGVudC0lQ09NUCVde2JhY2tncm91bmQtY29sb3I6cmdiYSgyNDUsMTI0LDAsLjIpfS5tYXQtYWNjZW50W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtc2xpZGVyLXRyYWNrLWZpbGxbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWFjY2VudFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXNsaWRlci10aHVtYltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtYWNjZW50W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtc2xpZGVyLXRodW1iLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXtiYWNrZ3JvdW5kLWNvbG9yOiNmZjk4MDB9Lm1hdC1hY2NlbnRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1zbGlkZXItdGh1bWItbGFiZWwtdGV4dFtfbmdjb250ZW50LSVDT01QJV17Y29sb3I6I2ZmZn0ubWF0LWFjY2VudFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXNsaWRlci1mb2N1cy1yaW5nW19uZ2NvbnRlbnQtJUNPTVAlXXtiYWNrZ3JvdW5kLWNvbG9yOnJnYmEoMjU1LDE1MiwwLC4yKX0ubWF0LXdhcm5bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1zbGlkZXItdHJhY2stZmlsbFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtd2Fybltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXNsaWRlci10aHVtYltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtd2Fybltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXNsaWRlci10aHVtYi1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17YmFja2dyb3VuZC1jb2xvcjojZjQ0MzM2fS5tYXQtd2Fybltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXNsaWRlci10aHVtYi1sYWJlbC10ZXh0W19uZ2NvbnRlbnQtJUNPTVAlXXtjb2xvcjojZmZmfS5tYXQtd2Fybltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXNsaWRlci1mb2N1cy1yaW5nW19uZ2NvbnRlbnQtJUNPTVAlXXtiYWNrZ3JvdW5kLWNvbG9yOnJnYmEoMjQ0LDY3LDU0LC4yKX0ubWF0LXNsaWRlcltfbmdjb250ZW50LSVDT01QJV06aG92ZXIgICAubWF0LXNsaWRlci10cmFjay1iYWNrZ3JvdW5kW19uZ2NvbnRlbnQtJUNPTVAlXSwgLmNkay1mb2N1c2VkW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtc2xpZGVyLXRyYWNrLWJhY2tncm91bmRbX25nY29udGVudC0lQ09NUCVde2JhY2tncm91bmQtY29sb3I6cmdiYSgwLDAsMCwuMzgpfS5tYXQtc2xpZGVyLWRpc2FibGVkW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtc2xpZGVyLXRyYWNrLWJhY2tncm91bmRbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXNsaWRlci1kaXNhYmxlZFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXNsaWRlci10cmFjay1maWxsW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1zbGlkZXItZGlzYWJsZWRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1zbGlkZXItdGh1bWJbX25nY29udGVudC0lQ09NUCVde2JhY2tncm91bmQtY29sb3I6cmdiYSgwLDAsMCwuMjYpfS5tYXQtc2xpZGVyLWRpc2FibGVkW19uZ2NvbnRlbnQtJUNPTVAlXTpob3ZlciAgIC5tYXQtc2xpZGVyLXRyYWNrLWJhY2tncm91bmRbX25nY29udGVudC0lQ09NUCVde2JhY2tncm91bmQtY29sb3I6cmdiYSgwLDAsMCwuMjYpfS5tYXQtc2xpZGVyLW1pbi12YWx1ZVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXNsaWRlci1mb2N1cy1yaW5nW19uZ2NvbnRlbnQtJUNPTVAlXXtiYWNrZ3JvdW5kLWNvbG9yOnJnYmEoMCwwLDAsLjEyKX0ubWF0LXNsaWRlci1taW4tdmFsdWUubWF0LXNsaWRlci10aHVtYi1sYWJlbC1zaG93aW5nW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtc2xpZGVyLXRodW1iW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1zbGlkZXItbWluLXZhbHVlLm1hdC1zbGlkZXItdGh1bWItbGFiZWwtc2hvd2luZ1tfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXNsaWRlci10aHVtYi1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17YmFja2dyb3VuZC1jb2xvcjpyZ2JhKDAsMCwwLC44Nyl9Lm1hdC1zbGlkZXItbWluLXZhbHVlLm1hdC1zbGlkZXItdGh1bWItbGFiZWwtc2hvd2luZy5jZGstZm9jdXNlZFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXNsaWRlci10aHVtYltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtc2xpZGVyLW1pbi12YWx1ZS5tYXQtc2xpZGVyLXRodW1iLWxhYmVsLXNob3dpbmcuY2RrLWZvY3VzZWRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1zbGlkZXItdGh1bWItbGFiZWxbX25nY29udGVudC0lQ09NUCVde2JhY2tncm91bmQtY29sb3I6cmdiYSgwLDAsMCwuMjYpfS5tYXQtc2xpZGVyLW1pbi12YWx1ZVtfbmdjb250ZW50LSVDT01QJV06bm90KC5tYXQtc2xpZGVyLXRodW1iLWxhYmVsLXNob3dpbmcpICAgLm1hdC1zbGlkZXItdGh1bWJbX25nY29udGVudC0lQ09NUCVde2JvcmRlci1jb2xvcjpyZ2JhKDAsMCwwLC4yNik7YmFja2dyb3VuZC1jb2xvcjp0cmFuc3BhcmVudH0ubWF0LXNsaWRlci1taW4tdmFsdWVbX25nY29udGVudC0lQ09NUCVdOm5vdCgubWF0LXNsaWRlci10aHVtYi1sYWJlbC1zaG93aW5nKTpob3ZlciAgIC5tYXQtc2xpZGVyLXRodW1iW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1zbGlkZXItbWluLXZhbHVlW19uZ2NvbnRlbnQtJUNPTVAlXTpub3QoLm1hdC1zbGlkZXItdGh1bWItbGFiZWwtc2hvd2luZykuY2RrLWZvY3VzZWQgICAubWF0LXNsaWRlci10aHVtYltfbmdjb250ZW50LSVDT01QJV17Ym9yZGVyLWNvbG9yOnJnYmEoMCwwLDAsLjM4KX0ubWF0LXNsaWRlci1taW4tdmFsdWVbX25nY29udGVudC0lQ09NUCVdOm5vdCgubWF0LXNsaWRlci10aHVtYi1sYWJlbC1zaG93aW5nKTpob3Zlci5tYXQtc2xpZGVyLWRpc2FibGVkICAgLm1hdC1zbGlkZXItdGh1bWJbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXNsaWRlci1taW4tdmFsdWVbX25nY29udGVudC0lQ09NUCVdOm5vdCgubWF0LXNsaWRlci10aHVtYi1sYWJlbC1zaG93aW5nKS5jZGstZm9jdXNlZC5tYXQtc2xpZGVyLWRpc2FibGVkICAgLm1hdC1zbGlkZXItdGh1bWJbX25nY29udGVudC0lQ09NUCVde2JvcmRlci1jb2xvcjpyZ2JhKDAsMCwwLC4yNil9Lm1hdC1zbGlkZXItaGFzLXRpY2tzW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtc2xpZGVyLXdyYXBwZXJbX25nY29udGVudC0lQ09NUCVdOjphZnRlcntib3JkZXItY29sb3I6cmdiYSgwLDAsMCwuNyl9Lm1hdC1zbGlkZXItaG9yaXpvbnRhbFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXNsaWRlci10aWNrc1tfbmdjb250ZW50LSVDT01QJV17YmFja2dyb3VuZC1pbWFnZTpyZXBlYXRpbmctbGluZWFyLWdyYWRpZW50KHRvIHJpZ2h0LCByZ2JhKDAsIDAsIDAsIDAuNyksIHJnYmEoMCwgMCwgMCwgMC43KSAycHgsIHRyYW5zcGFyZW50IDAsIHRyYW5zcGFyZW50KTtiYWNrZ3JvdW5kLWltYWdlOi1tb3otcmVwZWF0aW5nLWxpbmVhci1ncmFkaWVudCgwLjAwMDFkZWcsIHJnYmEoMCwgMCwgMCwgMC43KSwgcmdiYSgwLCAwLCAwLCAwLjcpIDJweCwgdHJhbnNwYXJlbnQgMCwgdHJhbnNwYXJlbnQpfS5tYXQtc2xpZGVyLXZlcnRpY2FsW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtc2xpZGVyLXRpY2tzW19uZ2NvbnRlbnQtJUNPTVAlXXtiYWNrZ3JvdW5kLWltYWdlOnJlcGVhdGluZy1saW5lYXItZ3JhZGllbnQodG8gYm90dG9tLCByZ2JhKDAsIDAsIDAsIDAuNyksIHJnYmEoMCwgMCwgMCwgMC43KSAycHgsIHRyYW5zcGFyZW50IDAsIHRyYW5zcGFyZW50KX0ubWF0LXN0ZXAtaGVhZGVyLmNkay1rZXlib2FyZC1mb2N1c2VkW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1zdGVwLWhlYWRlci5jZGstcHJvZ3JhbS1mb2N1c2VkW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1zdGVwLWhlYWRlcltfbmdjb250ZW50LSVDT01QJV06aG92ZXJ7YmFja2dyb3VuZC1jb2xvcjpyZ2JhKDAsMCwwLC4wNCl9QG1lZGlhKGhvdmVyOiBub25lKXsubWF0LXN0ZXAtaGVhZGVyW19uZ2NvbnRlbnQtJUNPTVAlXTpob3ZlcntiYWNrZ3JvdW5kOm5vbmV9fS5tYXQtc3RlcC1oZWFkZXJbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1zdGVwLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1zdGVwLWhlYWRlcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXN0ZXAtb3B0aW9uYWxbX25nY29udGVudC0lQ09NUCVde2NvbG9yOiM2MTYxNjF9Lm1hdC1zdGVwLWhlYWRlcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXN0ZXAtaWNvbltfbmdjb250ZW50LSVDT01QJV17YmFja2dyb3VuZC1jb2xvcjojNjE2MTYxO2NvbG9yOiNmZmZ9Lm1hdC1zdGVwLWhlYWRlcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXN0ZXAtaWNvbi1zZWxlY3RlZFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtc3RlcC1oZWFkZXJbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1zdGVwLWljb24tc3RhdGUtZG9uZVtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtc3RlcC1oZWFkZXJbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1zdGVwLWljb24tc3RhdGUtZWRpdFtfbmdjb250ZW50LSVDT01QJV17YmFja2dyb3VuZC1jb2xvcjojZjU3YzAwO2NvbG9yOiNmZmZ9Lm1hdC1zdGVwLWhlYWRlcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXN0ZXAtaWNvbi1zdGF0ZS1lcnJvcltfbmdjb250ZW50LSVDT01QJV17YmFja2dyb3VuZC1jb2xvcjp0cmFuc3BhcmVudDtjb2xvcjojZjQ0MzM2fS5tYXQtc3RlcC1oZWFkZXJbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1zdGVwLWxhYmVsLm1hdC1zdGVwLWxhYmVsLWFjdGl2ZVtfbmdjb250ZW50LSVDT01QJV17Y29sb3I6IzIxMjEyMX0ubWF0LXN0ZXAtaGVhZGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtc3RlcC1sYWJlbC5tYXQtc3RlcC1sYWJlbC1lcnJvcltfbmdjb250ZW50LSVDT01QJV17Y29sb3I6I2Y0NDMzNn0ubWF0LXN0ZXBwZXItaG9yaXpvbnRhbFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtc3RlcHBlci12ZXJ0aWNhbFtfbmdjb250ZW50LSVDT01QJV17YmFja2dyb3VuZC1jb2xvcjojZmZmfS5tYXQtc3RlcHBlci12ZXJ0aWNhbC1saW5lW19uZ2NvbnRlbnQtJUNPTVAlXTo6YmVmb3Jle2JvcmRlci1sZWZ0LWNvbG9yOnJnYmEoMCwwLDAsLjEyKX0ubWF0LWhvcml6b250YWwtc3RlcHBlci1oZWFkZXJbX25nY29udGVudC0lQ09NUCVdOjpiZWZvcmUsIC5tYXQtaG9yaXpvbnRhbC1zdGVwcGVyLWhlYWRlcltfbmdjb250ZW50LSVDT01QJV06OmFmdGVyLCAubWF0LXN0ZXBwZXItaG9yaXpvbnRhbC1saW5lW19uZ2NvbnRlbnQtJUNPTVAlXXtib3JkZXItdG9wLWNvbG9yOnJnYmEoMCwwLDAsLjEyKX0ubWF0LWhvcml6b250YWwtc3RlcHBlci1oZWFkZXJbX25nY29udGVudC0lQ09NUCVde2hlaWdodDo3MnB4fS5tYXQtc3RlcHBlci1sYWJlbC1wb3NpdGlvbi1ib3R0b21bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1ob3Jpem9udGFsLXN0ZXBwZXItaGVhZGVyW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC12ZXJ0aWNhbC1zdGVwcGVyLWhlYWRlcltfbmdjb250ZW50LSVDT01QJV17cGFkZGluZzoyNHB4IDI0cHh9Lm1hdC1zdGVwcGVyLXZlcnRpY2FsLWxpbmVbX25nY29udGVudC0lQ09NUCVdOjpiZWZvcmV7dG9wOi0xNnB4O2JvdHRvbTotMTZweH0ubWF0LXN0ZXBwZXItbGFiZWwtcG9zaXRpb24tYm90dG9tW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaG9yaXpvbnRhbC1zdGVwcGVyLWhlYWRlcltfbmdjb250ZW50LSVDT01QJV06OmFmdGVyLCAubWF0LXN0ZXBwZXItbGFiZWwtcG9zaXRpb24tYm90dG9tW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaG9yaXpvbnRhbC1zdGVwcGVyLWhlYWRlcltfbmdjb250ZW50LSVDT01QJV06OmJlZm9yZXt0b3A6MzZweH0ubWF0LXN0ZXBwZXItbGFiZWwtcG9zaXRpb24tYm90dG9tW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtc3RlcHBlci1ob3Jpem9udGFsLWxpbmVbX25nY29udGVudC0lQ09NUCVde3RvcDozNnB4fS5tYXQtc29ydC1oZWFkZXItYXJyb3dbX25nY29udGVudC0lQ09NUCVde2NvbG9yOiM2MTYxNjF9Lm1hdC10YWItbmF2LWJhcltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdGFiLWhlYWRlcltfbmdjb250ZW50LSVDT01QJV17Ym9yZGVyLWJvdHRvbToxcHggc29saWQgcmdiYSgwLDAsMCwuMTIpfS5tYXQtdGFiLWdyb3VwLWludmVydGVkLWhlYWRlcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXRhYi1uYXYtYmFyW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10YWItZ3JvdXAtaW52ZXJ0ZWQtaGVhZGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtdGFiLWhlYWRlcltfbmdjb250ZW50LSVDT01QJV17Ym9yZGVyLXRvcDoxcHggc29saWQgcmdiYSgwLDAsMCwuMTIpO2JvcmRlci1ib3R0b206bm9uZX0ubWF0LXRhYi1sYWJlbFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdGFiLWxpbmtbX25nY29udGVudC0lQ09NUCVde2NvbG9yOiMyMTIxMjF9Lm1hdC10YWItbGFiZWwubWF0LXRhYi1kaXNhYmxlZFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdGFiLWxpbmsubWF0LXRhYi1kaXNhYmxlZFtfbmdjb250ZW50LSVDT01QJV17Y29sb3I6Izc1NzU3NX0ubWF0LXRhYi1oZWFkZXItcGFnaW5hdGlvbi1jaGV2cm9uW19uZ2NvbnRlbnQtJUNPTVAlXXtib3JkZXItY29sb3I6IzIxMjEyMX0ubWF0LXRhYi1oZWFkZXItcGFnaW5hdGlvbi1kaXNhYmxlZFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXRhYi1oZWFkZXItcGFnaW5hdGlvbi1jaGV2cm9uW19uZ2NvbnRlbnQtJUNPTVAlXXtib3JkZXItY29sb3I6Izc1NzU3NX0ubWF0LXRhYi1ncm91cFtjbGFzcyo9bWF0LWJhY2tncm91bmQtXVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXRhYi1oZWFkZXJbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXRhYi1uYXYtYmFyW2NsYXNzKj1tYXQtYmFja2dyb3VuZC1dW19uZ2NvbnRlbnQtJUNPTVAlXXtib3JkZXItYm90dG9tOm5vbmU7Ym9yZGVyLXRvcDpub25lfS5tYXQtdGFiLWdyb3VwLm1hdC1wcmltYXJ5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtdGFiLWxhYmVsLmNkay1rZXlib2FyZC1mb2N1c2VkW19uZ2NvbnRlbnQtJUNPTVAlXTpub3QoLm1hdC10YWItZGlzYWJsZWQpLCAubWF0LXRhYi1ncm91cC5tYXQtcHJpbWFyeVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXRhYi1sYWJlbC5jZGstcHJvZ3JhbS1mb2N1c2VkW19uZ2NvbnRlbnQtJUNPTVAlXTpub3QoLm1hdC10YWItZGlzYWJsZWQpLCAubWF0LXRhYi1ncm91cC5tYXQtcHJpbWFyeVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXRhYi1saW5rLmNkay1rZXlib2FyZC1mb2N1c2VkW19uZ2NvbnRlbnQtJUNPTVAlXTpub3QoLm1hdC10YWItZGlzYWJsZWQpLCAubWF0LXRhYi1ncm91cC5tYXQtcHJpbWFyeVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXRhYi1saW5rLmNkay1wcm9ncmFtLWZvY3VzZWRbX25nY29udGVudC0lQ09NUCVdOm5vdCgubWF0LXRhYi1kaXNhYmxlZCksIC5tYXQtdGFiLW5hdi1iYXIubWF0LXByaW1hcnlbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC10YWItbGFiZWwuY2RrLWtleWJvYXJkLWZvY3VzZWRbX25nY29udGVudC0lQ09NUCVdOm5vdCgubWF0LXRhYi1kaXNhYmxlZCksIC5tYXQtdGFiLW5hdi1iYXIubWF0LXByaW1hcnlbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC10YWItbGFiZWwuY2RrLXByb2dyYW0tZm9jdXNlZFtfbmdjb250ZW50LSVDT01QJV06bm90KC5tYXQtdGFiLWRpc2FibGVkKSwgLm1hdC10YWItbmF2LWJhci5tYXQtcHJpbWFyeVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXRhYi1saW5rLmNkay1rZXlib2FyZC1mb2N1c2VkW19uZ2NvbnRlbnQtJUNPTVAlXTpub3QoLm1hdC10YWItZGlzYWJsZWQpLCAubWF0LXRhYi1uYXYtYmFyLm1hdC1wcmltYXJ5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtdGFiLWxpbmsuY2RrLXByb2dyYW0tZm9jdXNlZFtfbmdjb250ZW50LSVDT01QJV06bm90KC5tYXQtdGFiLWRpc2FibGVkKXtiYWNrZ3JvdW5kLWNvbG9yOnJnYmEoMjU1LDE1MiwwLC4zKX0ubWF0LXRhYi1ncm91cC5tYXQtcHJpbWFyeVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWluay1iYXJbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXRhYi1uYXYtYmFyLm1hdC1wcmltYXJ5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaW5rLWJhcltfbmdjb250ZW50LSVDT01QJV17YmFja2dyb3VuZC1jb2xvcjojZjU3YzAwfS5tYXQtdGFiLWdyb3VwLm1hdC1wcmltYXJ5Lm1hdC1iYWNrZ3JvdW5kLXByaW1hcnlbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pbmstYmFyW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10YWItbmF2LWJhci5tYXQtcHJpbWFyeS5tYXQtYmFja2dyb3VuZC1wcmltYXJ5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaW5rLWJhcltfbmdjb250ZW50LSVDT01QJV17YmFja2dyb3VuZC1jb2xvcjojZmZmfS5tYXQtdGFiLWdyb3VwLm1hdC1hY2NlbnRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC10YWItbGFiZWwuY2RrLWtleWJvYXJkLWZvY3VzZWRbX25nY29udGVudC0lQ09NUCVdOm5vdCgubWF0LXRhYi1kaXNhYmxlZCksIC5tYXQtdGFiLWdyb3VwLm1hdC1hY2NlbnRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC10YWItbGFiZWwuY2RrLXByb2dyYW0tZm9jdXNlZFtfbmdjb250ZW50LSVDT01QJV06bm90KC5tYXQtdGFiLWRpc2FibGVkKSwgLm1hdC10YWItZ3JvdXAubWF0LWFjY2VudFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXRhYi1saW5rLmNkay1rZXlib2FyZC1mb2N1c2VkW19uZ2NvbnRlbnQtJUNPTVAlXTpub3QoLm1hdC10YWItZGlzYWJsZWQpLCAubWF0LXRhYi1ncm91cC5tYXQtYWNjZW50W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtdGFiLWxpbmsuY2RrLXByb2dyYW0tZm9jdXNlZFtfbmdjb250ZW50LSVDT01QJV06bm90KC5tYXQtdGFiLWRpc2FibGVkKSwgLm1hdC10YWItbmF2LWJhci5tYXQtYWNjZW50W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtdGFiLWxhYmVsLmNkay1rZXlib2FyZC1mb2N1c2VkW19uZ2NvbnRlbnQtJUNPTVAlXTpub3QoLm1hdC10YWItZGlzYWJsZWQpLCAubWF0LXRhYi1uYXYtYmFyLm1hdC1hY2NlbnRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC10YWItbGFiZWwuY2RrLXByb2dyYW0tZm9jdXNlZFtfbmdjb250ZW50LSVDT01QJV06bm90KC5tYXQtdGFiLWRpc2FibGVkKSwgLm1hdC10YWItbmF2LWJhci5tYXQtYWNjZW50W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtdGFiLWxpbmsuY2RrLWtleWJvYXJkLWZvY3VzZWRbX25nY29udGVudC0lQ09NUCVdOm5vdCgubWF0LXRhYi1kaXNhYmxlZCksIC5tYXQtdGFiLW5hdi1iYXIubWF0LWFjY2VudFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXRhYi1saW5rLmNkay1wcm9ncmFtLWZvY3VzZWRbX25nY29udGVudC0lQ09NUCVdOm5vdCgubWF0LXRhYi1kaXNhYmxlZCl7YmFja2dyb3VuZC1jb2xvcjpyZ2JhKDI1NSwxNTIsMCwuMyl9Lm1hdC10YWItZ3JvdXAubWF0LWFjY2VudFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWluay1iYXJbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXRhYi1uYXYtYmFyLm1hdC1hY2NlbnRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pbmstYmFyW19uZ2NvbnRlbnQtJUNPTVAlXXtiYWNrZ3JvdW5kLWNvbG9yOiNmZjk4MDB9Lm1hdC10YWItZ3JvdXAubWF0LWFjY2VudC5tYXQtYmFja2dyb3VuZC1hY2NlbnRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pbmstYmFyW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10YWItbmF2LWJhci5tYXQtYWNjZW50Lm1hdC1iYWNrZ3JvdW5kLWFjY2VudFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWluay1iYXJbX25nY29udGVudC0lQ09NUCVde2JhY2tncm91bmQtY29sb3I6I2ZmZn0ubWF0LXRhYi1ncm91cC5tYXQtd2Fybltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXRhYi1sYWJlbC5jZGsta2V5Ym9hcmQtZm9jdXNlZFtfbmdjb250ZW50LSVDT01QJV06bm90KC5tYXQtdGFiLWRpc2FibGVkKSwgLm1hdC10YWItZ3JvdXAubWF0LXdhcm5bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC10YWItbGFiZWwuY2RrLXByb2dyYW0tZm9jdXNlZFtfbmdjb250ZW50LSVDT01QJV06bm90KC5tYXQtdGFiLWRpc2FibGVkKSwgLm1hdC10YWItZ3JvdXAubWF0LXdhcm5bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC10YWItbGluay5jZGsta2V5Ym9hcmQtZm9jdXNlZFtfbmdjb250ZW50LSVDT01QJV06bm90KC5tYXQtdGFiLWRpc2FibGVkKSwgLm1hdC10YWItZ3JvdXAubWF0LXdhcm5bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC10YWItbGluay5jZGstcHJvZ3JhbS1mb2N1c2VkW19uZ2NvbnRlbnQtJUNPTVAlXTpub3QoLm1hdC10YWItZGlzYWJsZWQpLCAubWF0LXRhYi1uYXYtYmFyLm1hdC13YXJuW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtdGFiLWxhYmVsLmNkay1rZXlib2FyZC1mb2N1c2VkW19uZ2NvbnRlbnQtJUNPTVAlXTpub3QoLm1hdC10YWItZGlzYWJsZWQpLCAubWF0LXRhYi1uYXYtYmFyLm1hdC13YXJuW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtdGFiLWxhYmVsLmNkay1wcm9ncmFtLWZvY3VzZWRbX25nY29udGVudC0lQ09NUCVdOm5vdCgubWF0LXRhYi1kaXNhYmxlZCksIC5tYXQtdGFiLW5hdi1iYXIubWF0LXdhcm5bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC10YWItbGluay5jZGsta2V5Ym9hcmQtZm9jdXNlZFtfbmdjb250ZW50LSVDT01QJV06bm90KC5tYXQtdGFiLWRpc2FibGVkKSwgLm1hdC10YWItbmF2LWJhci5tYXQtd2Fybltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXRhYi1saW5rLmNkay1wcm9ncmFtLWZvY3VzZWRbX25nY29udGVudC0lQ09NUCVdOm5vdCgubWF0LXRhYi1kaXNhYmxlZCl7YmFja2dyb3VuZC1jb2xvcjpyZ2JhKDI1NSwyMDUsMjEwLC4zKX0ubWF0LXRhYi1ncm91cC5tYXQtd2Fybltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWluay1iYXJbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXRhYi1uYXYtYmFyLm1hdC13YXJuW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaW5rLWJhcltfbmdjb250ZW50LSVDT01QJV17YmFja2dyb3VuZC1jb2xvcjojZjQ0MzM2fS5tYXQtdGFiLWdyb3VwLm1hdC13YXJuLm1hdC1iYWNrZ3JvdW5kLXdhcm5bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pbmstYmFyW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10YWItbmF2LWJhci5tYXQtd2Fybi5tYXQtYmFja2dyb3VuZC13YXJuW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaW5rLWJhcltfbmdjb250ZW50LSVDT01QJV17YmFja2dyb3VuZC1jb2xvcjojZmZmfS5tYXQtdGFiLWdyb3VwLm1hdC1iYWNrZ3JvdW5kLXByaW1hcnlbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC10YWItbGFiZWwuY2RrLWtleWJvYXJkLWZvY3VzZWRbX25nY29udGVudC0lQ09NUCVdOm5vdCgubWF0LXRhYi1kaXNhYmxlZCksIC5tYXQtdGFiLWdyb3VwLm1hdC1iYWNrZ3JvdW5kLXByaW1hcnlbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC10YWItbGFiZWwuY2RrLXByb2dyYW0tZm9jdXNlZFtfbmdjb250ZW50LSVDT01QJV06bm90KC5tYXQtdGFiLWRpc2FibGVkKSwgLm1hdC10YWItZ3JvdXAubWF0LWJhY2tncm91bmQtcHJpbWFyeVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXRhYi1saW5rLmNkay1rZXlib2FyZC1mb2N1c2VkW19uZ2NvbnRlbnQtJUNPTVAlXTpub3QoLm1hdC10YWItZGlzYWJsZWQpLCAubWF0LXRhYi1ncm91cC5tYXQtYmFja2dyb3VuZC1wcmltYXJ5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtdGFiLWxpbmsuY2RrLXByb2dyYW0tZm9jdXNlZFtfbmdjb250ZW50LSVDT01QJV06bm90KC5tYXQtdGFiLWRpc2FibGVkKSwgLm1hdC10YWItbmF2LWJhci5tYXQtYmFja2dyb3VuZC1wcmltYXJ5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtdGFiLWxhYmVsLmNkay1rZXlib2FyZC1mb2N1c2VkW19uZ2NvbnRlbnQtJUNPTVAlXTpub3QoLm1hdC10YWItZGlzYWJsZWQpLCAubWF0LXRhYi1uYXYtYmFyLm1hdC1iYWNrZ3JvdW5kLXByaW1hcnlbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC10YWItbGFiZWwuY2RrLXByb2dyYW0tZm9jdXNlZFtfbmdjb250ZW50LSVDT01QJV06bm90KC5tYXQtdGFiLWRpc2FibGVkKSwgLm1hdC10YWItbmF2LWJhci5tYXQtYmFja2dyb3VuZC1wcmltYXJ5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtdGFiLWxpbmsuY2RrLWtleWJvYXJkLWZvY3VzZWRbX25nY29udGVudC0lQ09NUCVdOm5vdCgubWF0LXRhYi1kaXNhYmxlZCksIC5tYXQtdGFiLW5hdi1iYXIubWF0LWJhY2tncm91bmQtcHJpbWFyeVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXRhYi1saW5rLmNkay1wcm9ncmFtLWZvY3VzZWRbX25nY29udGVudC0lQ09NUCVdOm5vdCgubWF0LXRhYi1kaXNhYmxlZCl7YmFja2dyb3VuZC1jb2xvcjpyZ2JhKDI1NSwxNTIsMCwuMyl9Lm1hdC10YWItZ3JvdXAubWF0LWJhY2tncm91bmQtcHJpbWFyeVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXRhYi1oZWFkZXJbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXRhYi1ncm91cC5tYXQtYmFja2dyb3VuZC1wcmltYXJ5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtdGFiLWxpbmtzW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10YWItZ3JvdXAubWF0LWJhY2tncm91bmQtcHJpbWFyeVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXRhYi1oZWFkZXItcGFnaW5hdGlvbltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdGFiLW5hdi1iYXIubWF0LWJhY2tncm91bmQtcHJpbWFyeVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXRhYi1oZWFkZXJbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXRhYi1uYXYtYmFyLm1hdC1iYWNrZ3JvdW5kLXByaW1hcnlbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC10YWItbGlua3NbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXRhYi1uYXYtYmFyLm1hdC1iYWNrZ3JvdW5kLXByaW1hcnlbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC10YWItaGVhZGVyLXBhZ2luYXRpb25bX25nY29udGVudC0lQ09NUCVde2JhY2tncm91bmQtY29sb3I6I2Y1N2MwMH0ubWF0LXRhYi1ncm91cC5tYXQtYmFja2dyb3VuZC1wcmltYXJ5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtdGFiLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10YWItZ3JvdXAubWF0LWJhY2tncm91bmQtcHJpbWFyeVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXRhYi1saW5rW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10YWItbmF2LWJhci5tYXQtYmFja2dyb3VuZC1wcmltYXJ5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtdGFiLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10YWItbmF2LWJhci5tYXQtYmFja2dyb3VuZC1wcmltYXJ5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtdGFiLWxpbmtbX25nY29udGVudC0lQ09NUCVde2NvbG9yOiNmZmZ9Lm1hdC10YWItZ3JvdXAubWF0LWJhY2tncm91bmQtcHJpbWFyeVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXRhYi1sYWJlbC5tYXQtdGFiLWRpc2FibGVkW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10YWItZ3JvdXAubWF0LWJhY2tncm91bmQtcHJpbWFyeVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXRhYi1saW5rLm1hdC10YWItZGlzYWJsZWRbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXRhYi1uYXYtYmFyLm1hdC1iYWNrZ3JvdW5kLXByaW1hcnlbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC10YWItbGFiZWwubWF0LXRhYi1kaXNhYmxlZFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdGFiLW5hdi1iYXIubWF0LWJhY2tncm91bmQtcHJpbWFyeVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXRhYi1saW5rLm1hdC10YWItZGlzYWJsZWRbX25nY29udGVudC0lQ09NUCVde2NvbG9yOnJnYmEoMjU1LDI1NSwyNTUsLjQpfS5tYXQtdGFiLWdyb3VwLm1hdC1iYWNrZ3JvdW5kLXByaW1hcnlbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC10YWItaGVhZGVyLXBhZ2luYXRpb24tY2hldnJvbltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdGFiLW5hdi1iYXIubWF0LWJhY2tncm91bmQtcHJpbWFyeVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXRhYi1oZWFkZXItcGFnaW5hdGlvbi1jaGV2cm9uW19uZ2NvbnRlbnQtJUNPTVAlXXtib3JkZXItY29sb3I6I2ZmZn0ubWF0LXRhYi1ncm91cC5tYXQtYmFja2dyb3VuZC1wcmltYXJ5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtdGFiLWhlYWRlci1wYWdpbmF0aW9uLWRpc2FibGVkW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtdGFiLWhlYWRlci1wYWdpbmF0aW9uLWNoZXZyb25bX25nY29udGVudC0lQ09NUCVdLCAubWF0LXRhYi1uYXYtYmFyLm1hdC1iYWNrZ3JvdW5kLXByaW1hcnlbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC10YWItaGVhZGVyLXBhZ2luYXRpb24tZGlzYWJsZWRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC10YWItaGVhZGVyLXBhZ2luYXRpb24tY2hldnJvbltfbmdjb250ZW50LSVDT01QJV17Ym9yZGVyLWNvbG9yOnJnYmEoMjU1LDI1NSwyNTUsLjQpfS5tYXQtdGFiLWdyb3VwLm1hdC1iYWNrZ3JvdW5kLXByaW1hcnlbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1yaXBwbGUtZWxlbWVudFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdGFiLW5hdi1iYXIubWF0LWJhY2tncm91bmQtcHJpbWFyeVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXJpcHBsZS1lbGVtZW50W19uZ2NvbnRlbnQtJUNPTVAlXXtiYWNrZ3JvdW5kLWNvbG9yOnJnYmEoMjU1LDI1NSwyNTUsLjEyKX0ubWF0LXRhYi1ncm91cC5tYXQtYmFja2dyb3VuZC1hY2NlbnRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC10YWItbGFiZWwuY2RrLWtleWJvYXJkLWZvY3VzZWRbX25nY29udGVudC0lQ09NUCVdOm5vdCgubWF0LXRhYi1kaXNhYmxlZCksIC5tYXQtdGFiLWdyb3VwLm1hdC1iYWNrZ3JvdW5kLWFjY2VudFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXRhYi1sYWJlbC5jZGstcHJvZ3JhbS1mb2N1c2VkW19uZ2NvbnRlbnQtJUNPTVAlXTpub3QoLm1hdC10YWItZGlzYWJsZWQpLCAubWF0LXRhYi1ncm91cC5tYXQtYmFja2dyb3VuZC1hY2NlbnRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC10YWItbGluay5jZGsta2V5Ym9hcmQtZm9jdXNlZFtfbmdjb250ZW50LSVDT01QJV06bm90KC5tYXQtdGFiLWRpc2FibGVkKSwgLm1hdC10YWItZ3JvdXAubWF0LWJhY2tncm91bmQtYWNjZW50W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtdGFiLWxpbmsuY2RrLXByb2dyYW0tZm9jdXNlZFtfbmdjb250ZW50LSVDT01QJV06bm90KC5tYXQtdGFiLWRpc2FibGVkKSwgLm1hdC10YWItbmF2LWJhci5tYXQtYmFja2dyb3VuZC1hY2NlbnRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC10YWItbGFiZWwuY2RrLWtleWJvYXJkLWZvY3VzZWRbX25nY29udGVudC0lQ09NUCVdOm5vdCgubWF0LXRhYi1kaXNhYmxlZCksIC5tYXQtdGFiLW5hdi1iYXIubWF0LWJhY2tncm91bmQtYWNjZW50W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtdGFiLWxhYmVsLmNkay1wcm9ncmFtLWZvY3VzZWRbX25nY29udGVudC0lQ09NUCVdOm5vdCgubWF0LXRhYi1kaXNhYmxlZCksIC5tYXQtdGFiLW5hdi1iYXIubWF0LWJhY2tncm91bmQtYWNjZW50W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtdGFiLWxpbmsuY2RrLWtleWJvYXJkLWZvY3VzZWRbX25nY29udGVudC0lQ09NUCVdOm5vdCgubWF0LXRhYi1kaXNhYmxlZCksIC5tYXQtdGFiLW5hdi1iYXIubWF0LWJhY2tncm91bmQtYWNjZW50W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtdGFiLWxpbmsuY2RrLXByb2dyYW0tZm9jdXNlZFtfbmdjb250ZW50LSVDT01QJV06bm90KC5tYXQtdGFiLWRpc2FibGVkKXtiYWNrZ3JvdW5kLWNvbG9yOnJnYmEoMjU1LDE1MiwwLC4zKX0ubWF0LXRhYi1ncm91cC5tYXQtYmFja2dyb3VuZC1hY2NlbnRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC10YWItaGVhZGVyW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10YWItZ3JvdXAubWF0LWJhY2tncm91bmQtYWNjZW50W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtdGFiLWxpbmtzW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10YWItZ3JvdXAubWF0LWJhY2tncm91bmQtYWNjZW50W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtdGFiLWhlYWRlci1wYWdpbmF0aW9uW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10YWItbmF2LWJhci5tYXQtYmFja2dyb3VuZC1hY2NlbnRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC10YWItaGVhZGVyW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10YWItbmF2LWJhci5tYXQtYmFja2dyb3VuZC1hY2NlbnRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC10YWItbGlua3NbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXRhYi1uYXYtYmFyLm1hdC1iYWNrZ3JvdW5kLWFjY2VudFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXRhYi1oZWFkZXItcGFnaW5hdGlvbltfbmdjb250ZW50LSVDT01QJV17YmFja2dyb3VuZC1jb2xvcjojZmY5ODAwfS5tYXQtdGFiLWdyb3VwLm1hdC1iYWNrZ3JvdW5kLWFjY2VudFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXRhYi1sYWJlbFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdGFiLWdyb3VwLm1hdC1iYWNrZ3JvdW5kLWFjY2VudFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXRhYi1saW5rW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10YWItbmF2LWJhci5tYXQtYmFja2dyb3VuZC1hY2NlbnRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC10YWItbGFiZWxbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXRhYi1uYXYtYmFyLm1hdC1iYWNrZ3JvdW5kLWFjY2VudFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXRhYi1saW5rW19uZ2NvbnRlbnQtJUNPTVAlXXtjb2xvcjojZmZmfS5tYXQtdGFiLWdyb3VwLm1hdC1iYWNrZ3JvdW5kLWFjY2VudFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXRhYi1sYWJlbC5tYXQtdGFiLWRpc2FibGVkW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10YWItZ3JvdXAubWF0LWJhY2tncm91bmQtYWNjZW50W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtdGFiLWxpbmsubWF0LXRhYi1kaXNhYmxlZFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdGFiLW5hdi1iYXIubWF0LWJhY2tncm91bmQtYWNjZW50W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtdGFiLWxhYmVsLm1hdC10YWItZGlzYWJsZWRbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXRhYi1uYXYtYmFyLm1hdC1iYWNrZ3JvdW5kLWFjY2VudFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXRhYi1saW5rLm1hdC10YWItZGlzYWJsZWRbX25nY29udGVudC0lQ09NUCVde2NvbG9yOnJnYmEoMjU1LDI1NSwyNTUsLjQpfS5tYXQtdGFiLWdyb3VwLm1hdC1iYWNrZ3JvdW5kLWFjY2VudFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXRhYi1oZWFkZXItcGFnaW5hdGlvbi1jaGV2cm9uW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10YWItbmF2LWJhci5tYXQtYmFja2dyb3VuZC1hY2NlbnRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC10YWItaGVhZGVyLXBhZ2luYXRpb24tY2hldnJvbltfbmdjb250ZW50LSVDT01QJV17Ym9yZGVyLWNvbG9yOiNmZmZ9Lm1hdC10YWItZ3JvdXAubWF0LWJhY2tncm91bmQtYWNjZW50W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtdGFiLWhlYWRlci1wYWdpbmF0aW9uLWRpc2FibGVkW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtdGFiLWhlYWRlci1wYWdpbmF0aW9uLWNoZXZyb25bX25nY29udGVudC0lQ09NUCVdLCAubWF0LXRhYi1uYXYtYmFyLm1hdC1iYWNrZ3JvdW5kLWFjY2VudFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXRhYi1oZWFkZXItcGFnaW5hdGlvbi1kaXNhYmxlZFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXRhYi1oZWFkZXItcGFnaW5hdGlvbi1jaGV2cm9uW19uZ2NvbnRlbnQtJUNPTVAlXXtib3JkZXItY29sb3I6cmdiYSgyNTUsMjU1LDI1NSwuNCl9Lm1hdC10YWItZ3JvdXAubWF0LWJhY2tncm91bmQtYWNjZW50W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtcmlwcGxlLWVsZW1lbnRbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXRhYi1uYXYtYmFyLm1hdC1iYWNrZ3JvdW5kLWFjY2VudFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXJpcHBsZS1lbGVtZW50W19uZ2NvbnRlbnQtJUNPTVAlXXtiYWNrZ3JvdW5kLWNvbG9yOnJnYmEoMjU1LDI1NSwyNTUsLjEyKX0ubWF0LXRhYi1ncm91cC5tYXQtYmFja2dyb3VuZC13YXJuW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtdGFiLWxhYmVsLmNkay1rZXlib2FyZC1mb2N1c2VkW19uZ2NvbnRlbnQtJUNPTVAlXTpub3QoLm1hdC10YWItZGlzYWJsZWQpLCAubWF0LXRhYi1ncm91cC5tYXQtYmFja2dyb3VuZC13YXJuW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtdGFiLWxhYmVsLmNkay1wcm9ncmFtLWZvY3VzZWRbX25nY29udGVudC0lQ09NUCVdOm5vdCgubWF0LXRhYi1kaXNhYmxlZCksIC5tYXQtdGFiLWdyb3VwLm1hdC1iYWNrZ3JvdW5kLXdhcm5bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC10YWItbGluay5jZGsta2V5Ym9hcmQtZm9jdXNlZFtfbmdjb250ZW50LSVDT01QJV06bm90KC5tYXQtdGFiLWRpc2FibGVkKSwgLm1hdC10YWItZ3JvdXAubWF0LWJhY2tncm91bmQtd2Fybltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXRhYi1saW5rLmNkay1wcm9ncmFtLWZvY3VzZWRbX25nY29udGVudC0lQ09NUCVdOm5vdCgubWF0LXRhYi1kaXNhYmxlZCksIC5tYXQtdGFiLW5hdi1iYXIubWF0LWJhY2tncm91bmQtd2Fybltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXRhYi1sYWJlbC5jZGsta2V5Ym9hcmQtZm9jdXNlZFtfbmdjb250ZW50LSVDT01QJV06bm90KC5tYXQtdGFiLWRpc2FibGVkKSwgLm1hdC10YWItbmF2LWJhci5tYXQtYmFja2dyb3VuZC13YXJuW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtdGFiLWxhYmVsLmNkay1wcm9ncmFtLWZvY3VzZWRbX25nY29udGVudC0lQ09NUCVdOm5vdCgubWF0LXRhYi1kaXNhYmxlZCksIC5tYXQtdGFiLW5hdi1iYXIubWF0LWJhY2tncm91bmQtd2Fybltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXRhYi1saW5rLmNkay1rZXlib2FyZC1mb2N1c2VkW19uZ2NvbnRlbnQtJUNPTVAlXTpub3QoLm1hdC10YWItZGlzYWJsZWQpLCAubWF0LXRhYi1uYXYtYmFyLm1hdC1iYWNrZ3JvdW5kLXdhcm5bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC10YWItbGluay5jZGstcHJvZ3JhbS1mb2N1c2VkW19uZ2NvbnRlbnQtJUNPTVAlXTpub3QoLm1hdC10YWItZGlzYWJsZWQpe2JhY2tncm91bmQtY29sb3I6cmdiYSgyNTUsMjA1LDIxMCwuMyl9Lm1hdC10YWItZ3JvdXAubWF0LWJhY2tncm91bmQtd2Fybltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXRhYi1oZWFkZXJbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXRhYi1ncm91cC5tYXQtYmFja2dyb3VuZC13YXJuW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtdGFiLWxpbmtzW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10YWItZ3JvdXAubWF0LWJhY2tncm91bmQtd2Fybltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXRhYi1oZWFkZXItcGFnaW5hdGlvbltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdGFiLW5hdi1iYXIubWF0LWJhY2tncm91bmQtd2Fybltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXRhYi1oZWFkZXJbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXRhYi1uYXYtYmFyLm1hdC1iYWNrZ3JvdW5kLXdhcm5bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC10YWItbGlua3NbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXRhYi1uYXYtYmFyLm1hdC1iYWNrZ3JvdW5kLXdhcm5bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC10YWItaGVhZGVyLXBhZ2luYXRpb25bX25nY29udGVudC0lQ09NUCVde2JhY2tncm91bmQtY29sb3I6I2Y0NDMzNn0ubWF0LXRhYi1ncm91cC5tYXQtYmFja2dyb3VuZC13YXJuW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtdGFiLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10YWItZ3JvdXAubWF0LWJhY2tncm91bmQtd2Fybltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXRhYi1saW5rW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10YWItbmF2LWJhci5tYXQtYmFja2dyb3VuZC13YXJuW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtdGFiLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10YWItbmF2LWJhci5tYXQtYmFja2dyb3VuZC13YXJuW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtdGFiLWxpbmtbX25nY29udGVudC0lQ09NUCVde2NvbG9yOiNmZmZ9Lm1hdC10YWItZ3JvdXAubWF0LWJhY2tncm91bmQtd2Fybltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXRhYi1sYWJlbC5tYXQtdGFiLWRpc2FibGVkW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10YWItZ3JvdXAubWF0LWJhY2tncm91bmQtd2Fybltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXRhYi1saW5rLm1hdC10YWItZGlzYWJsZWRbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXRhYi1uYXYtYmFyLm1hdC1iYWNrZ3JvdW5kLXdhcm5bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC10YWItbGFiZWwubWF0LXRhYi1kaXNhYmxlZFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdGFiLW5hdi1iYXIubWF0LWJhY2tncm91bmQtd2Fybltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXRhYi1saW5rLm1hdC10YWItZGlzYWJsZWRbX25nY29udGVudC0lQ09NUCVde2NvbG9yOnJnYmEoMjU1LDI1NSwyNTUsLjQpfS5tYXQtdGFiLWdyb3VwLm1hdC1iYWNrZ3JvdW5kLXdhcm5bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC10YWItaGVhZGVyLXBhZ2luYXRpb24tY2hldnJvbltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdGFiLW5hdi1iYXIubWF0LWJhY2tncm91bmQtd2Fybltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXRhYi1oZWFkZXItcGFnaW5hdGlvbi1jaGV2cm9uW19uZ2NvbnRlbnQtJUNPTVAlXXtib3JkZXItY29sb3I6I2ZmZn0ubWF0LXRhYi1ncm91cC5tYXQtYmFja2dyb3VuZC13YXJuW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtdGFiLWhlYWRlci1wYWdpbmF0aW9uLWRpc2FibGVkW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtdGFiLWhlYWRlci1wYWdpbmF0aW9uLWNoZXZyb25bX25nY29udGVudC0lQ09NUCVdLCAubWF0LXRhYi1uYXYtYmFyLm1hdC1iYWNrZ3JvdW5kLXdhcm5bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC10YWItaGVhZGVyLXBhZ2luYXRpb24tZGlzYWJsZWRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC10YWItaGVhZGVyLXBhZ2luYXRpb24tY2hldnJvbltfbmdjb250ZW50LSVDT01QJV17Ym9yZGVyLWNvbG9yOnJnYmEoMjU1LDI1NSwyNTUsLjQpfS5tYXQtdGFiLWdyb3VwLm1hdC1iYWNrZ3JvdW5kLXdhcm5bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1yaXBwbGUtZWxlbWVudFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdGFiLW5hdi1iYXIubWF0LWJhY2tncm91bmQtd2Fybltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXJpcHBsZS1lbGVtZW50W19uZ2NvbnRlbnQtJUNPTVAlXXtiYWNrZ3JvdW5kLWNvbG9yOnJnYmEoMjU1LDI1NSwyNTUsLjEyKX0ubWF0LXRvb2xiYXJbX25nY29udGVudC0lQ09NUCVde2JhY2tncm91bmQ6I2Y1ZjVmNTtjb2xvcjojMjEyMTIxfS5tYXQtdG9vbGJhci5tYXQtcHJpbWFyeVtfbmdjb250ZW50LSVDT01QJV17YmFja2dyb3VuZDojZjU3YzAwO2NvbG9yOiNmZmZ9Lm1hdC10b29sYmFyLm1hdC1hY2NlbnRbX25nY29udGVudC0lQ09NUCVde2JhY2tncm91bmQ6I2ZmOTgwMDtjb2xvcjojZmZmfS5tYXQtdG9vbGJhci5tYXQtd2Fybltfbmdjb250ZW50LSVDT01QJV17YmFja2dyb3VuZDojZjQ0MzM2O2NvbG9yOiNmZmZ9Lm1hdC10b29sYmFyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC11bmRlcmxpbmVbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXRvb2xiYXJbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLXJpcHBsZVtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdG9vbGJhcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvY3VzZWRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLXJpcHBsZVtfbmdjb250ZW50LSVDT01QJV17YmFja2dyb3VuZC1jb2xvcjpjdXJyZW50Q29sb3J9Lm1hdC10b29sYmFyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdG9vbGJhcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvY3VzZWRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10b29sYmFyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtc2VsZWN0LXZhbHVlW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10b29sYmFyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtc2VsZWN0LWFycm93W19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10b29sYmFyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC5tYXQtZm9jdXNlZFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXNlbGVjdC1hcnJvd1tfbmdjb250ZW50LSVDT01QJV17Y29sb3I6aW5oZXJpdH0ubWF0LXRvb2xiYXJbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pbnB1dC1lbGVtZW50W19uZ2NvbnRlbnQtJUNPTVAlXXtjYXJldC1jb2xvcjpjdXJyZW50Q29sb3J9Lm1hdC10b29sYmFyLW11bHRpcGxlLXJvd3NbX25nY29udGVudC0lQ09NUCVde21pbi1oZWlnaHQ6NjRweH0ubWF0LXRvb2xiYXItcm93W19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10b29sYmFyLXNpbmdsZS1yb3dbX25nY29udGVudC0lQ09NUCVde2hlaWdodDo2NHB4fUBtZWRpYShtYXgtd2lkdGg6IDU5OXB4KXsubWF0LXRvb2xiYXItbXVsdGlwbGUtcm93c1tfbmdjb250ZW50LSVDT01QJV17bWluLWhlaWdodDo1NnB4fS5tYXQtdG9vbGJhci1yb3dbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXRvb2xiYXItc2luZ2xlLXJvd1tfbmdjb250ZW50LSVDT01QJV17aGVpZ2h0OjU2cHh9fS5tYXQtdG9vbHRpcFtfbmdjb250ZW50LSVDT01QJV17YmFja2dyb3VuZDpyZ2JhKDk3LDk3LDk3LC45KX0ubWF0LXRyZWVbX25nY29udGVudC0lQ09NUCVde2JhY2tncm91bmQ6I2ZmZn0ubWF0LXRyZWUtbm9kZVtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtbmVzdGVkLXRyZWUtbm9kZVtfbmdjb250ZW50LSVDT01QJV17Y29sb3I6IzIxMjEyMX0ubWF0LXRyZWUtbm9kZVtfbmdjb250ZW50LSVDT01QJV17bWluLWhlaWdodDo0OHB4fS5tYXQtc25hY2stYmFyLWNvbnRhaW5lcltfbmdjb250ZW50LSVDT01QJV17Y29sb3I6cmdiYSgyNTUsMjU1LDI1NSwuNyk7YmFja2dyb3VuZDojMzIzMjMyO2JveC1zaGFkb3c6MHB4IDNweCA1cHggLTFweCByZ2JhKDAsIDAsIDAsIDAuMiksMHB4IDZweCAxMHB4IDBweCByZ2JhKDAsIDAsIDAsIDAuMTQpLDBweCAxcHggMThweCAwcHggcmdiYSgwLCAwLCAwLCAwLjEyKX0ubWF0LXNpbXBsZS1zbmFja2Jhci1hY3Rpb25bX25nY29udGVudC0lQ09NUCVde2NvbG9yOiNmZjk4MDB9bWF0LXNlbGVjdFtfbmdjb250ZW50LSVDT01QJV17Ym9yZGVyOjFweCBzb2xpZCAjOGU5OGEzO2JvcmRlci1yYWRpdXM6M3B4O2JveC1zaXppbmc6Ym9yZGVyLWJveDtwYWRkaW5nOjZweH1tYXQtc2VsZWN0W19uZ2NvbnRlbnQtJUNPTVAlXTpmb2N1c3tvdXRsaW5lLWNvbG9yOi13ZWJraXQtZm9jdXMtcmluZy1jb2xvcjtvdXRsaW5lLXN0eWxlOmF1dG99J119KTtjbGFzcyBObXR7Y29uc3RydWN0b3IodCl7dGhpcy5sb2NhbGU9dCx0aGlzLlRvb2x0aXBTb3J0RHJvcGRvd25PcHRpb25zPVt7dmFsdWU6VlQuREVGQVVMVCxkaXNwbGF5VGV4dDoiRGVmYXVsdCJ9LHt2YWx1ZTpWVC5BU0NFTkRJTkcsZGlzcGxheVRleHQ6IkFzY2VuZGluZyJ9LHt2YWx1ZTpWVC5ERVNDRU5ESU5HLGRpc3BsYXlUZXh0OiJEZXNjZW5kaW5nIn0se3ZhbHVlOlZULk5FQVJFU1QsZGlzcGxheVRleHQ6Ik5lYXJlc3QifV0sdGhpcy50b29sdGlwU29ydENoYW5nZWQ9bmV3IEVmLHRoaXMuaWdub3JlT3V0bGllcnNDaGFuZ2VkPW5ldyBFZix0aGlzLlhBeGlzVHlwZURyb3Bkb3duT3B0aW9ucz1be3ZhbHVlOldULlNURVAsZGlzcGxheVRleHQ6IlN0ZXAifSx7dmFsdWU6V1QuUkVMQVRJVkUsZGlzcGxheVRleHQ6IlJlbGF0aXZlIn0se3ZhbHVlOldULldBTExfVElNRSxkaXNwbGF5VGV4dDoiV2FsbCJ9XSx0aGlzLnhBeGlzVHlwZUNoYW5nZWQ9bmV3IEVmLHRoaXMuSGlzdG9ncmFtTW9kZURyb3Bkb3duT3B0aW9ucz1be3ZhbHVlOkhULk9GRlNFVCxkaXNwbGF5VGV4dDoiT2Zmc2V0In0se3ZhbHVlOkhULk9WRVJMQVksZGlzcGxheVRleHQ6Ik92ZXJsYXkifV0sdGhpcy5oaXN0b2dyYW1Nb2RlQ2hhbmdlZD1uZXcgRWYsdGhpcy5NQVhfU01PT1RISU5HX1ZBTFVFPS45OTksdGhpcy5NQVhfU01PT1RISU5HX1NMSURFUl9WQUxVRT0uOTksdGhpcy5zY2FsYXJTbW9vdGhpbmdDb250cm9sQ2hhbmdlZCQ9bmV3IEVmLHRoaXMuc2NhbGFyU21vb3RoaW5nQ2hhbmdlZD10aGlzLnNjYWxhclNtb290aGluZ0NvbnRyb2xDaGFuZ2VkJC5waXBlKGFuKDI1MCkpLHRoaXMuc2NhbGFyUGFydGl0aW9uWFRvZ2dsZWQ9bmV3IEVmLHRoaXMuaW1hZ2VCcmlnaHRuZXNzU2xpZGVyQ2hhbmdlZCQ9bmV3IEVmLHRoaXMuaW1hZ2VCcmlnaHRuZXNzSW5NaWxsaUNoYW5nZWQ9dGhpcy5pbWFnZUJyaWdodG5lc3NTbGlkZXJDaGFuZ2VkJC5waXBlKGFuKDI1MCkpLHRoaXMuaW1hZ2VCcmlnaHRuZXNzUmVzZXQ9bmV3IEVmLHRoaXMuaW1hZ2VDb250cmFzdFNsaWRlckNoYW5nZWQkPW5ldyBFZix0aGlzLmltYWdlQ29udHJhc3RJbk1pbGxpQ2hhbmdlZD10aGlzLmltYWdlQ29udHJhc3RTbGlkZXJDaGFuZ2VkJC5waXBlKGFuKDI1MCkpLHRoaXMuaW1hZ2VDb250cmFzdFJlc2V0PW5ldyBFZix0aGlzLmltYWdlU2hvd0FjdHVhbFNpemVDaGFuZ2VkPW5ldyBFZn1vblNjYWxhclNtb290aGluZ0lucHV0KHQpe2NvbnN0IG49dC50YXJnZXQ7aWYoIW4udmFsdWUpcmV0dXJuO2NvbnN0IGU9TWF0aC5taW4oTWF0aC5tYXgoMCxwYXJzZUZsb2F0KG4udmFsdWUpKSwuOTk5KTtlIT09cGFyc2VGbG9hdChuLnZhbHVlKSYmKG4udmFsdWU9U3RyaW5nKGUpKSx0aGlzLnNjYWxhclNtb290aGluZ0NvbnRyb2xDaGFuZ2VkJC5lbWl0KGUpfWZvcm1hdE1pbGxpVG9aZXJvdGgodCl7cmV0dXJuIFJNKHQvMWUzLHRoaXMubG9jYWxlfHwiZW4tVVMiLCIxLjAtMiIpfX1ObXQuybVmYWM9ZnVuY3Rpb24gdChuKXtyZXR1cm4gbmV3KG58fE5tdCkoWmcoTl8pKX0sTm10Lsm1Y21wPV9vKHt0eXBlOk5tdCxzZWxlY3RvcnM6W1sibWV0cmljcy1kYXNoYm9hcmQtc2V0dGluZ3MtY29tcG9uZW50Il1dLGlucHV0czp7dG9vbHRpcFNvcnQ6InRvb2x0aXBTb3J0IixpZ25vcmVPdXRsaWVyczoiaWdub3JlT3V0bGllcnMiLHhBeGlzVHlwZToieEF4aXNUeXBlIixoaXN0b2dyYW1Nb2RlOiJoaXN0b2dyYW1Nb2RlIixzY2FsYXJTbW9vdGhpbmc6InNjYWxhclNtb290aGluZyIsc2NhbGFyUGFydGl0aW9uWDoic2NhbGFyUGFydGl0aW9uWCIsaW1hZ2VCcmlnaHRuZXNzSW5NaWxsaToiaW1hZ2VCcmlnaHRuZXNzSW5NaWxsaSIsaW1hZ2VDb250cmFzdEluTWlsbGk6ImltYWdlQ29udHJhc3RJbk1pbGxpIixpbWFnZVNob3dBY3R1YWxTaXplOiJpbWFnZVNob3dBY3R1YWxTaXplIn0sb3V0cHV0czp7dG9vbHRpcFNvcnRDaGFuZ2VkOiJ0b29sdGlwU29ydENoYW5nZWQiLGlnbm9yZU91dGxpZXJzQ2hhbmdlZDoiaWdub3JlT3V0bGllcnNDaGFuZ2VkIix4QXhpc1R5cGVDaGFuZ2VkOiJ4QXhpc1R5cGVDaGFuZ2VkIixoaXN0b2dyYW1Nb2RlQ2hhbmdlZDoiaGlzdG9ncmFtTW9kZUNoYW5nZWQiLHNjYWxhclNtb290aGluZ0NoYW5nZWQ6InNjYWxhclNtb290aGluZ0NoYW5nZWQiLHNjYWxhclBhcnRpdGlvblhUb2dnbGVkOiJzY2FsYXJQYXJ0aXRpb25YVG9nZ2xlZCIsaW1hZ2VCcmlnaHRuZXNzSW5NaWxsaUNoYW5nZWQ6ImltYWdlQnJpZ2h0bmVzc0luTWlsbGlDaGFuZ2VkIixpbWFnZUJyaWdodG5lc3NSZXNldDoiaW1hZ2VCcmlnaHRuZXNzUmVzZXQiLGltYWdlQ29udHJhc3RJbk1pbGxpQ2hhbmdlZDoiaW1hZ2VDb250cmFzdEluTWlsbGlDaGFuZ2VkIixpbWFnZUNvbnRyYXN0UmVzZXQ6ImltYWdlQ29udHJhc3RSZXNldCIsaW1hZ2VTaG93QWN0dWFsU2l6ZUNoYW5nZWQ6ImltYWdlU2hvd0FjdHVhbFNpemVDaGFuZ2VkIn0sZGVjbHM6NTYsdmFyczoyOCxjb25zdHM6ZnVuY3Rpb24oKXtyZXR1cm5bWzEsImdlbmVyYWwiXSxbMSwic2VjdGlvbi10aXRsZSJdLFsxLCJjb250cm9sLXJvdyIsIngtYXhpcy10eXBlIl0sWyJpZCIsIngtYXhpcy10eXBlLWxhYmVsIiwxLCJjb250cm9sLW5hbWUiXSxbMywidmFsdWUiLCJvcHRpb25zIiwic2VsZWN0aW9uQ2hhbmdlIl0sWzEsInNjYWxhcnMiXSxbMSwiY29udHJvbC1yb3ciLCJzY2FsYXJzLXNtb290aGluZyJdLFsiaWQiLCJzY2FsYXJzLXNtb290aGluZy1sYWJlbCIsMSwiY29udHJvbC1uYW1lIl0sWzEsInNsaWRlci1yb3ciXSxbImFyaWEtbGFiZWxsZWRieSIsInNjYWxhcnMtc21vb3RoaW5nLWxhYmVsIiwiY29sb3IiLCJwcmltYXJ5IiwzLCJtYXgiLCJtaW4iLCJzdGVwIiwidmFsdWUiLCJ0aHVtYkxhYmVsIiwiaW5wdXQiXSxbImFyaWEtbGFiZWxsZWRieSIsInNjYWxhcnMtc21vb3RoaW5nLWxhYmVsIiwidHlwZSIsIm51bWJlciIsIm1pbiIsIjAiLCJzdGVwIiwiMC4wMDEiLDEsInNsaWRlci1pbnB1dCIsMywibWF4IiwidmFsdWUiLCJpbnB1dCJdLFsxLCJjb250cm9sLXJvdyIsInRvb2x0aXAtc29ydCJdLFsxLCJjb250cm9sLW5hbWUiXSxbMSwiY29udHJvbC1yb3ciLCJzY2FsYXJzLWlnbm9yZS1vdXRsaWVycyJdLFszLCJjaGVja2VkIiwiY2hhbmdlIl0sWzEsImNvbnRyb2wtcm93Iiwic2NhbGFycy1wYXJ0aXRpb24teCJdLFsic3ZnSWNvbiIsImhlbHBfb3V0bGluZV8yNHB4IiwidGl0bGUiLCJOb24tbW9ub3RvbmljIHN0ZXBzIGNhbiBvY2N1ciB3aGVuIHJldXNpbmcgYSBsb2dkaXIgd2l0aCBtdWx0aXBsZSBzdW1tYXJ5IHdyaXRlcnMgYW5kIG92ZXJsYXBwaW5nIHN0ZXBzLiBMaW5lIGNoYXJ0cywgd2l0aG91dCB0aGlzIG9wdGlvbiBlbmFibGVkLCBjYW4gYXBwZWFyIHppZyB6YWdnZWQuIFRoaXMgaXMgY29tbW9uIHdoZW4gcmVzdGFydGluZyBmcm9tIGEgY2hlY2twb2ludC5cblxuV2hlbiBlbmFibGVkLCBhIG5vbi1tb25vdG9uaWMgdGltZSBzZXJpZXMgY29tcG9zZWQgb2YgTiBtb25vdG9uaWMgcGllY2VzIHdpbGwgYmUgc2hvd24gYXMgTiBtb25vdG9uaWMgbGluZXMuIiwxLCJpbmZvIl0sWzEsIkhpc3RvZ3JhbXMiXSxbMSwiY29udHJvbC1yb3ciLCJoaXN0b2dyYW0tbW9kZSJdLFsxLCJpbWFnZSJdLFsxLCJjb250cm9sLXJvdyIsImltYWdlLWJyaWdodG5lc3MiXSxbImlkIiwiaW1hZ2UtYnJpZ2h0bmVzcy1sYWJlbCIsMSwiY29udHJvbC1uYW1lIl0sWyJhcmlhLWxhYmVsbGVkYnkiLCJpbWFnZS1icmlnaHRuZXNzLWxhYmVsIiwiY29sb3IiLCJwcmltYXJ5IiwzLCJtYXgiLCJtaW4iLCJzdGVwIiwidmFsdWUiLCJ0aHVtYkxhYmVsIiwiZGlzcGxheVdpdGgiLCJpbnB1dCJdLFsibWF0LWljb24tYnV0dG9uIiwiIiwidGl0bGUiLCJSZXNldCBicmlnaHRuZXNzIiwxLCJyZXNldC1idXR0b24iLDMsImNsaWNrIiw2LCJhcmlhLWxhYmVsIl0sWyJhcmlhLWxhYmVsIiwidW5kZWZpbmVkIiE9dHlwZW9mIG5nSTE4bkNsb3N1cmVNb2RlJiZuZ0kxOG5DbG9zdXJlTW9kZT9nb29nLmdldE1zZygiUmVzZXQgYnJpZ2h0bmVzcyIpOiRsb2NhbGl6ZWA6QSBidXR0b24gdG8gcmVzZXQgdGhlIGltYWdlIGJyaWdodG5lc3Mgc2V0dGluZ+KQn2M0ODJiM2E0N2VhMDk3NWZhOGJlMDFhZmIzZmJlYzliNzY2MjhiZDfikJ8xMTg5MTYxODU3MjQwMzc4Mzk1OlJlc2V0IGJyaWdodG5lc3NgXSxbInN2Z0ljb24iLCJzZXR0aW5nc19iYWNrdXBfcmVzdG9yZV8yNHB4Il0sWzEsImNvbnRyb2wtcm93IiwiaW1hZ2UtY29udHJhc3QiXSxbImlkIiwiaW1hZ2UtY29uc3RyYXN0LWxhYmVsIiwxLCJjb250cm9sLW5hbWUiXSxbImFyaWEtbGFiZWxsZWRieSIsImltYWdlLWNvbnN0cmFzdC1sYWJlbCIsImNvbG9yIiwicHJpbWFyeSIsMywibWF4IiwibWluIiwic3RlcCIsInZhbHVlIiwidGh1bWJMYWJlbCIsImRpc3BsYXlXaXRoIiwiaW5wdXQiXSxbIm1hdC1pY29uLWJ1dHRvbiIsIiIsInRpdGxlIiwiUmVzZXQgY29udHJhc3QiLDEsInJlc2V0LWJ1dHRvbiIsMywiY2xpY2siLDYsImFyaWEtbGFiZWwiXSxbImFyaWEtbGFiZWwiLCJ1bmRlZmluZWQiIT10eXBlb2YgbmdJMThuQ2xvc3VyZU1vZGUmJm5nSTE4bkNsb3N1cmVNb2RlP2dvb2cuZ2V0TXNnKCJSZXNldCBjb250cmFzdCIpOiRsb2NhbGl6ZWA6QSBidXR0b24gdG8gcmVzZXQgdGhlIGltYWdlIGNvbnRyYXN0IHNldHRpbmfikJ9lZDcxMmE4YjkyNzA0MWJlMTUyNTJiMjllYjUyMWViYjEzNzRiYWQ44pCfNTM3MDcwMzM0MjkyMzYxMTk1NTpSZXNldCBjb250cmFzdGBdLFsxLCJjb250cm9sLXJvdyIsImltYWdlLXNob3ctYWN0dWFsLXNpemUiXV19LHRlbXBsYXRlOmZ1bmN0aW9uIHQobixlKXsxJm4mJihLZygwLCJzZWN0aW9uIiwwKSxLZygxLCJoMyIsMSksSnAoMiwiR2VuZXJhbCIpLCRnKCksS2coMywiZGl2IiwyKSxLZyg0LCJkaXYiLDMpLEpwKDUsIkhvcml6b250YWwgQXhpcyIpLCRnKCksS2coNiwidGItZHJvcGRvd24iLDQpLGNwKCJzZWxlY3Rpb25DaGFuZ2UiLChmdW5jdGlvbiB0KG4pe3JldHVybiBlLnhBeGlzVHlwZUNoYW5nZWQuZW1pdChuKX0pKSwkZygpLCRnKCksJGcoKSxLZyg3LCJzZWN0aW9uIiw1KSxLZyg4LCJoMyIsMSksSnAoOSwiU2NhbGFycyIpLCRnKCksS2coMTAsImRpdiIsNiksS2coMTEsImRpdiIsNyksSnAoMTIsIlNtb290aGluZyIpLCRnKCksS2coMTMsImRpdiIsOCksS2coMTQsIm1hdC1zbGlkZXIiLDkpLGNwKCJpbnB1dCIsKGZ1bmN0aW9uIHQobil7cmV0dXJuIGUuc2NhbGFyU21vb3RoaW5nQ29udHJvbENoYW5nZWQkLmVtaXQobi52YWx1ZSl9KSksJGcoKSxLZygxNSwiaW5wdXQiLDEwKSxjcCgiaW5wdXQiLChmdW5jdGlvbiB0KG4pe3JldHVybiBlLm9uU2NhbGFyU21vb3RoaW5nSW5wdXQobil9KSksJGcoKSwkZygpLCRnKCksS2coMTYsImRpdiIsMTEpLEtnKDE3LCJkaXYiLDEyKSxKcCgxOCwiVG9vbHRpcCBzb3J0aW5nIG1ldGhvZCIpLCRnKCksS2coMTksInRiLWRyb3Bkb3duIiw0KSxjcCgic2VsZWN0aW9uQ2hhbmdlIiwoZnVuY3Rpb24gdChuKXtyZXR1cm4gZS50b29sdGlwU29ydENoYW5nZWQuZW1pdChuKX0pKSwkZygpLCRnKCksS2coMjAsImRpdiIsMTMpLEtnKDIxLCJtYXQtY2hlY2tib3giLDE0KSxjcCgiY2hhbmdlIiwoZnVuY3Rpb24gdChuKXtyZXR1cm4gZS5pZ25vcmVPdXRsaWVyc0NoYW5nZWQuZW1pdChuLmNoZWNrZWQpfSkpLEpwKDIyLCJJZ25vcmUgb3V0bGllcnMgaW4gY2hhcnQgc2NhbGluZyIpLCRnKCksJGcoKSxLZygyMywiZGl2IiwxNSksS2coMjQsIm1hdC1jaGVja2JveCIsMTQpLGNwKCJjaGFuZ2UiLChmdW5jdGlvbiB0KCl7cmV0dXJuIGUuc2NhbGFyUGFydGl0aW9uWFRvZ2dsZWQuZW1pdCgpfSkpLEpwKDI1LCJQYXJ0aXRpb24gbm9uLW1vbm90b25pYyBYIGF4aXMiKSwkZygpLHRwKDI2LCJtYXQtaWNvbiIsMTYpLCRnKCksJGcoKSxLZygyNywic2VjdGlvbiIsMTcpLEtnKDI4LCJoMyIsMSksSnAoMjksIkhpc3RvZ3JhbXMiKSwkZygpLEtnKDMwLCJkaXYiLDE4KSxLZygzMSwiZGl2IiwxMiksSnAoMzIsIk1vZGUiKSwkZygpLEtnKDMzLCJ0Yi1kcm9wZG93biIsNCksY3AoInNlbGVjdGlvbkNoYW5nZSIsKGZ1bmN0aW9uIHQobil7cmV0dXJuIGUuaGlzdG9ncmFtTW9kZUNoYW5nZWQuZW1pdChuKX0pKSwkZygpLCRnKCksJGcoKSxLZygzNCwic2VjdGlvbiIsMTkpLEtnKDM1LCJoMyIsMSksSnAoMzYsIkltYWdlcyIpLCRnKCksS2coMzcsImRpdiIsMjApLEtnKDM4LCJkaXYiLDIxKSxKcCgzOSwiQnJpZ2h0bmVzcyIpLCRnKCksS2coNDAsImRpdiIsOCksS2coNDEsIm1hdC1zbGlkZXIiLDIyKSxjcCgiaW5wdXQiLChmdW5jdGlvbiB0KG4pe3JldHVybiBlLmltYWdlQnJpZ2h0bmVzc1NsaWRlckNoYW5nZWQkLmVtaXQobi52YWx1ZSl9KSksJGcoKSxLZyg0MiwiYnV0dG9uIiwyMyksbHUoNDMsMjQpLGNwKCJjbGljayIsKGZ1bmN0aW9uIHQoKXtyZXR1cm4gZS5pbWFnZUJyaWdodG5lc3NSZXNldC5lbWl0KCl9KSksdHAoNDQsIm1hdC1pY29uIiwyNSksJGcoKSwkZygpLCRnKCksS2coNDUsImRpdiIsMjYpLEtnKDQ2LCJkaXYiLDI3KSxKcCg0NywiQ29udHJhc3QiKSwkZygpLEtnKDQ4LCJkaXYiLDgpLEtnKDQ5LCJtYXQtc2xpZGVyIiwyOCksY3AoImlucHV0IiwoZnVuY3Rpb24gdChuKXtyZXR1cm4gZS5pbWFnZUNvbnRyYXN0U2xpZGVyQ2hhbmdlZCQuZW1pdChuLnZhbHVlKX0pKSwkZygpLEtnKDUwLCJidXR0b24iLDI5KSxsdSg1MSwzMCksY3AoImNsaWNrIiwoZnVuY3Rpb24gdCgpe3JldHVybiBlLmltYWdlQ29udHJhc3RSZXNldC5lbWl0KCl9KSksdHAoNTIsIm1hdC1pY29uIiwyNSksJGcoKSwkZygpLCRnKCksS2coNTMsImRpdiIsMzEpLEtnKDU0LCJtYXQtY2hlY2tib3giLDE0KSxjcCgiY2hhbmdlIiwoZnVuY3Rpb24gdChuKXtyZXR1cm4gZS5pbWFnZVNob3dBY3R1YWxTaXplQ2hhbmdlZC5lbWl0KG4uY2hlY2tlZCl9KSksSnAoNTUsIlNob3cgYWN0dWFsIGltYWdlIHNpemUiKSwkZygpLCRnKCksJGcoKSksMiZuJiYod3MoNiksSmcoInZhbHVlIixlLnhBeGlzVHlwZSkoIm9wdGlvbnMiLGUuWEF4aXNUeXBlRHJvcGRvd25PcHRpb25zKSx3cyg4KSxKZygibWF4IixlLk1BWF9TTU9PVEhJTkdfU0xJREVSX1ZBTFVFKSgibWluIiwwKSgic3RlcCIsLjAxKSgidmFsdWUiLGUuc2NhbGFyU21vb3RoaW5nKSgidGh1bWJMYWJlbCIsITApLHdzKDEpLEpnKCJtYXgiLGUuTUFYX1NNT09USElOR19WQUxVRSkoInZhbHVlIixlLnNjYWxhclNtb290aGluZyksd3MoNCksSmcoInZhbHVlIixlLnRvb2x0aXBTb3J0KSgib3B0aW9ucyIsZS5Ub29sdGlwU29ydERyb3Bkb3duT3B0aW9ucyksd3MoMiksSmcoImNoZWNrZWQiLGUuaWdub3JlT3V0bGllcnMpLHdzKDMpLEpnKCJjaGVja2VkIixlLnNjYWxhclBhcnRpdGlvblgpLHdzKDkpLEpnKCJ2YWx1ZSIsZS5oaXN0b2dyYW1Nb2RlKSgib3B0aW9ucyIsZS5IaXN0b2dyYW1Nb2RlRHJvcGRvd25PcHRpb25zKSx3cyg4KSxKZygibWF4IiwyZTMpKCJtaW4iLDApKCJzdGVwIiwxMCkoInZhbHVlIixlLmltYWdlQnJpZ2h0bmVzc0luTWlsbGkpKCJ0aHVtYkxhYmVsIiwhMCkoImRpc3BsYXlXaXRoIixlLmZvcm1hdE1pbGxpVG9aZXJvdGgpLHdzKDgpLEpnKCJtYXgiLDVlMykoIm1pbiIsMCkoInN0ZXAiLDEwKSgidmFsdWUiLGUuaW1hZ2VDb250cmFzdEluTWlsbGkpKCJ0aHVtYkxhYmVsIiwhMCkoImRpc3BsYXlXaXRoIixlLmZvcm1hdE1pbGxpVG9aZXJvdGgpLHdzKDUpLEpnKCJjaGVja2VkIixlLmltYWdlU2hvd0FjdHVhbFNpemUpKX0sZGlyZWN0aXZlczpbSW10LFhXLHJWLEJCLGVBXSxzdHlsZXM6WycubWF0LWJhZGdlLWNvbnRlbnRbX25nY29udGVudC0lQ09NUCVde2ZvbnQtd2VpZ2h0OjYwMDtmb250LXNpemU6MTJweDtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWZ9Lm1hdC1iYWRnZS1zbWFsbFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWJhZGdlLWNvbnRlbnRbX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZTo5cHh9Lm1hdC1iYWRnZS1sYXJnZVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWJhZGdlLWNvbnRlbnRbX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToyNHB4fS5tYXQtaDFbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWhlYWRsaW5lW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10eXBvZ3JhcGh5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIGgxW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250OjQwMCAyNHB4LzMycHggUm9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2xldHRlci1zcGFjaW5nOm5vcm1hbDttYXJnaW46MCAwIDE2cHh9Lm1hdC1oMltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdGl0bGVbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXR5cG9ncmFwaHlbX25nY29udGVudC0lQ09NUCVdICAgaDJbX25nY29udGVudC0lQ09NUCVde2ZvbnQ6NTAwIDIwcHgvMzJweCBSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7bGV0dGVyLXNwYWNpbmc6bm9ybWFsO21hcmdpbjowIDAgMTZweH0ubWF0LWgzW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1zdWJoZWFkaW5nLTJbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXR5cG9ncmFwaHlbX25nY29udGVudC0lQ09NUCVdICAgaDNbX25nY29udGVudC0lQ09NUCVde2ZvbnQ6NDAwIDE2cHgvMjhweCBSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7bGV0dGVyLXNwYWNpbmc6bm9ybWFsO21hcmdpbjowIDAgMTZweH0ubWF0LWg0W19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1zdWJoZWFkaW5nLTFbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXR5cG9ncmFwaHlbX25nY29udGVudC0lQ09NUCVdICAgaDRbX25nY29udGVudC0lQ09NUCVde2ZvbnQ6NDAwIDE1cHgvMjRweCBSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7bGV0dGVyLXNwYWNpbmc6bm9ybWFsO21hcmdpbjowIDAgMTZweH0ubWF0LWg1W19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10eXBvZ3JhcGh5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIGg1W19uZ2NvbnRlbnQtJUNPTVAlXXtmb250OjQwMCBjYWxjKDE0cHggKiAwLjgzKS8yMHB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjttYXJnaW46MCAwIDEycHh9Lm1hdC1oNltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdHlwb2dyYXBoeVtfbmdjb250ZW50LSVDT01QJV0gICBoNltfbmdjb250ZW50LSVDT01QJV17Zm9udDo0MDAgY2FsYygxNHB4ICogMC42NykvMjBweCBSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7bWFyZ2luOjAgMCAxMnB4fS5tYXQtYm9keS1zdHJvbmdbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWJvZHktMltfbmdjb250ZW50LSVDT01QJV17Zm9udDo1MDAgMTRweC8yNHB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtsZXR0ZXItc3BhY2luZzpub3JtYWx9Lm1hdC1ib2R5W19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1ib2R5LTFbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXR5cG9ncmFwaHlbX25nY29udGVudC0lQ09NUCVde2ZvbnQ6NDAwIDE0cHgvMjBweCBSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7bGV0dGVyLXNwYWNpbmc6bm9ybWFsfS5tYXQtYm9keVtfbmdjb250ZW50LSVDT01QJV0gICBwW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1ib2R5LTFbX25nY29udGVudC0lQ09NUCVdICAgcFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdHlwb2dyYXBoeVtfbmdjb250ZW50LSVDT01QJV0gICBwW19uZ2NvbnRlbnQtJUNPTVAlXXttYXJnaW46MCAwIDEycHh9Lm1hdC1zbWFsbFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtY2FwdGlvbltfbmdjb250ZW50LSVDT01QJV17Zm9udDo0MDAgMTJweC8yMHB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtsZXR0ZXItc3BhY2luZzpub3JtYWx9Lm1hdC1kaXNwbGF5LTRbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXR5cG9ncmFwaHlbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1kaXNwbGF5LTRbX25nY29udGVudC0lQ09NUCVde2ZvbnQ6MzAwIDExMnB4LzExMnB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtsZXR0ZXItc3BhY2luZzotMC4wNWVtO21hcmdpbjowIDAgNTZweH0ubWF0LWRpc3BsYXktM1tfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdHlwb2dyYXBoeVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWRpc3BsYXktM1tfbmdjb250ZW50LSVDT01QJV17Zm9udDo0MDAgNTZweC81NnB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtsZXR0ZXItc3BhY2luZzotMC4wMmVtO21hcmdpbjowIDAgNjRweH0ubWF0LWRpc3BsYXktMltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdHlwb2dyYXBoeVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWRpc3BsYXktMltfbmdjb250ZW50LSVDT01QJV17Zm9udDo0MDAgNDVweC80OHB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtsZXR0ZXItc3BhY2luZzotMC4wMDVlbTttYXJnaW46MCAwIDY0cHh9Lm1hdC1kaXNwbGF5LTFbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXR5cG9ncmFwaHlbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1kaXNwbGF5LTFbX25nY29udGVudC0lQ09NUCVde2ZvbnQ6NDAwIDM0cHgvNDBweCBSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7bGV0dGVyLXNwYWNpbmc6bm9ybWFsO21hcmdpbjowIDAgNjRweH0ubWF0LWJvdHRvbS1zaGVldC1jb250YWluZXJbX25nY29udGVudC0lQ09NUCVde2ZvbnQ6NDAwIDE0cHgvMjBweCBSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7bGV0dGVyLXNwYWNpbmc6bm9ybWFsfS5tYXQtYnV0dG9uW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1yYWlzZWQtYnV0dG9uW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1pY29uLWJ1dHRvbltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtc3Ryb2tlZC1idXR0b25bX25nY29udGVudC0lQ09NUCVdLCAubWF0LWZsYXQtYnV0dG9uW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1mYWJbX25nY29udGVudC0lQ09NUCVdLCAubWF0LW1pbmktZmFiW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7Zm9udC1zaXplOjE0cHg7Zm9udC13ZWlnaHQ6NTAwfS5tYXQtYnV0dG9uLXRvZ2dsZVtfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmfS5tYXQtY2FyZFtfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmfS5tYXQtY2FyZC10aXRsZVtfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjI0cHg7Zm9udC13ZWlnaHQ6NTAwfS5tYXQtY2FyZC1oZWFkZXJbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1jYXJkLXRpdGxlW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MjBweH0ubWF0LWNhcmQtc3VidGl0bGVbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWNhcmQtY29udGVudFtfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjE0cHh9Lm1hdC1jaGVja2JveFtfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmfS5tYXQtY2hlY2tib3gtbGF5b3V0W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtY2hlY2tib3gtbGFiZWxbX25nY29udGVudC0lQ09NUCVde2xpbmUtaGVpZ2h0OjI0cHh9Lm1hdC1jaGlwW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MTRweDtmb250LXdlaWdodDo1MDB9Lm1hdC1jaGlwW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtY2hpcC10cmFpbGluZy1pY29uLm1hdC1pY29uW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1jaGlwW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtY2hpcC1yZW1vdmUubWF0LWljb25bX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToxOHB4fS5tYXQtdGFibGVbX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZn0ubWF0LWhlYWRlci1jZWxsW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MTJweDtmb250LXdlaWdodDo1MDB9Lm1hdC1jZWxsW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1mb290ZXItY2VsbFtfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjE0cHh9Lm1hdC1jYWxlbmRhcltfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmfS5tYXQtY2FsZW5kYXItYm9keVtfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjEzcHh9Lm1hdC1jYWxlbmRhci1ib2R5LWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1jYWxlbmRhci1wZXJpb2QtYnV0dG9uW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MTRweDtmb250LXdlaWdodDo1MDB9Lm1hdC1jYWxlbmRhci10YWJsZS1oZWFkZXJbX25nY29udGVudC0lQ09NUCVdICAgdGhbX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToxMXB4O2ZvbnQtd2VpZ2h0OjQwMH0ubWF0LWRpYWxvZy10aXRsZVtfbmdjb250ZW50LSVDT01QJV17Zm9udDo1MDAgMjBweC8zMnB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtsZXR0ZXItc3BhY2luZzpub3JtYWx9Lm1hdC1leHBhbnNpb24tcGFuZWwtaGVhZGVyW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7Zm9udC1zaXplOjE1cHg7Zm9udC13ZWlnaHQ6NDAwfS5tYXQtZXhwYW5zaW9uLXBhbmVsLWNvbnRlbnRbX25nY29udGVudC0lQ09NUCVde2ZvbnQ6NDAwIDE0cHgvMjBweCBSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7bGV0dGVyLXNwYWNpbmc6bm9ybWFsfS5tYXQtZm9ybS1maWVsZFtfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOmluaGVyaXQ7Zm9udC13ZWlnaHQ6NDAwO2xpbmUtaGVpZ2h0OjEuMTI1O2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtsZXR0ZXItc3BhY2luZzpub3JtYWx9Lm1hdC1mb3JtLWZpZWxkLXdyYXBwZXJbX25nY29udGVudC0lQ09NUCVde3BhZGRpbmctYm90dG9tOjEuMzQzNzVlbX0ubWF0LWZvcm0tZmllbGQtcHJlZml4W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaWNvbltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtZm9ybS1maWVsZC1zdWZmaXhbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pY29uW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MTUwJTtsaW5lLWhlaWdodDoxLjEyNX0ubWF0LWZvcm0tZmllbGQtcHJlZml4W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaWNvbi1idXR0b25bX25nY29udGVudC0lQ09NUCVdLCAubWF0LWZvcm0tZmllbGQtc3VmZml4W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaWNvbi1idXR0b25bX25nY29udGVudC0lQ09NUCVde2hlaWdodDoxLjVlbTt3aWR0aDoxLjVlbX0ubWF0LWZvcm0tZmllbGQtcHJlZml4W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaWNvbi1idXR0b25bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pY29uW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1mb3JtLWZpZWxkLXN1ZmZpeFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWljb24tYnV0dG9uW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaWNvbltfbmdjb250ZW50LSVDT01QJV17aGVpZ2h0OjEuMTI1ZW07bGluZS1oZWlnaHQ6MS4xMjV9Lm1hdC1mb3JtLWZpZWxkLWluZml4W19uZ2NvbnRlbnQtJUNPTVAlXXtwYWRkaW5nOi41ZW0gMDtib3JkZXItdG9wOi44NDM3NWVtIHNvbGlkIHRyYW5zcGFyZW50fS5tYXQtZm9ybS1maWVsZC1jYW4tZmxvYXQubWF0LWZvcm0tZmllbGQtc2hvdWxkLWZsb2F0W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtZm9ybS1maWVsZC1jYW4tZmxvYXRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pbnB1dC1zZXJ2ZXJbX25nY29udGVudC0lQ09NUCVdOmZvY3VzICsgLm1hdC1mb3JtLWZpZWxkLWxhYmVsLXdyYXBwZXJbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXt0cmFuc2Zvcm06dHJhbnNsYXRlWSgtMS4zNDM3NWVtKSBzY2FsZSgwLjc1KTt3aWR0aDoxMzMuMzMzMzMzMzMzMyV9Lm1hdC1mb3JtLWZpZWxkLWNhbi1mbG9hdFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWlucHV0LXNlcnZlcltsYWJlbF1bX25nY29udGVudC0lQ09NUCVdOm5vdCg6bGFiZWwtc2hvd24pICsgLm1hdC1mb3JtLWZpZWxkLWxhYmVsLXdyYXBwZXJbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXt0cmFuc2Zvcm06dHJhbnNsYXRlWSgtMS4zNDM3NGVtKSBzY2FsZSgwLjc1KTt3aWR0aDoxMzMuMzMzMzQzMzMzMyV9Lm1hdC1mb3JtLWZpZWxkLWxhYmVsLXdyYXBwZXJbX25nY29udGVudC0lQ09NUCVde3RvcDotMC44NDM3NWVtO3BhZGRpbmctdG9wOi44NDM3NWVtfS5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17dG9wOjEuMzQzNzVlbX0ubWF0LWZvcm0tZmllbGQtdW5kZXJsaW5lW19uZ2NvbnRlbnQtJUNPTVAlXXtib3R0b206MS4zNDM3NWVtfS5tYXQtZm9ybS1maWVsZC1zdWJzY3JpcHQtd3JhcHBlcltfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjc1JTttYXJnaW4tdG9wOi42NjY2NjY2NjY3ZW07dG9wOmNhbGMoMTAwJSAtIDEuNzkxNjY2NjY2N2VtKX0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1sZWdhY3lbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLXdyYXBwZXJbX25nY29udGVudC0lQ09NUCVde3BhZGRpbmctYm90dG9tOjEuMjVlbX0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1sZWdhY3lbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWluZml4W19uZ2NvbnRlbnQtJUNPTVAlXXtwYWRkaW5nOi40Mzc1ZW0gMH0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1sZWdhY3kubWF0LWZvcm0tZmllbGQtY2FuLWZsb2F0Lm1hdC1mb3JtLWZpZWxkLXNob3VsZC1mbG9hdFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1sZWdhY3kubWF0LWZvcm0tZmllbGQtY2FuLWZsb2F0W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaW5wdXQtc2VydmVyW19uZ2NvbnRlbnQtJUNPTVAlXTpmb2N1cyArIC5tYXQtZm9ybS1maWVsZC1sYWJlbC13cmFwcGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17dHJhbnNmb3JtOnRyYW5zbGF0ZVkoLTEuMjgxMjVlbSkgc2NhbGUoMC43NSkgcGVyc3BlY3RpdmUoMTAwcHgpIHRyYW5zbGF0ZVooMC4wMDFweCk7LW1zLXRyYW5zZm9ybTp0cmFuc2xhdGVZKC0xLjI4MTI1ZW0pIHNjYWxlKDAuNzUpO3dpZHRoOjEzMy4zMzMzMzMzMzMzJX0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1sZWdhY3kubWF0LWZvcm0tZmllbGQtY2FuLWZsb2F0W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1hdXRvZmlsbC1jb250cm9sW19uZ2NvbnRlbnQtJUNPTVAlXTotd2Via2l0LWF1dG9maWxsICsgLm1hdC1mb3JtLWZpZWxkLWxhYmVsLXdyYXBwZXJbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXt0cmFuc2Zvcm06dHJhbnNsYXRlWSgtMS4yODEyNWVtKSBzY2FsZSgwLjc1KSBwZXJzcGVjdGl2ZSgxMDBweCkgdHJhbnNsYXRlWigwLjAwMTAxcHgpOy1tcy10cmFuc2Zvcm06dHJhbnNsYXRlWSgtMS4yODEyNGVtKSBzY2FsZSgwLjc1KTt3aWR0aDoxMzMuMzMzMzQzMzMzMyV9Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtbGVnYWN5Lm1hdC1mb3JtLWZpZWxkLWNhbi1mbG9hdFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWlucHV0LXNlcnZlcltsYWJlbF1bX25nY29udGVudC0lQ09NUCVdOm5vdCg6bGFiZWwtc2hvd24pICsgLm1hdC1mb3JtLWZpZWxkLWxhYmVsLXdyYXBwZXJbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXt0cmFuc2Zvcm06dHJhbnNsYXRlWSgtMS4yODEyNWVtKSBzY2FsZSgwLjc1KSBwZXJzcGVjdGl2ZSgxMDBweCkgdHJhbnNsYXRlWigwLjAwMTAycHgpOy1tcy10cmFuc2Zvcm06dHJhbnNsYXRlWSgtMS4yODEyM2VtKSBzY2FsZSgwLjc1KTt3aWR0aDoxMzMuMzMzMzUzMzMzMyV9Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtbGVnYWN5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17dG9wOjEuMjgxMjVlbX0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1sZWdhY3lbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLXVuZGVybGluZVtfbmdjb250ZW50LSVDT01QJV17Ym90dG9tOjEuMjVlbX0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1sZWdhY3lbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLXN1YnNjcmlwdC13cmFwcGVyW19uZ2NvbnRlbnQtJUNPTVAlXXttYXJnaW4tdG9wOi41NDE2NjY2NjY3ZW07dG9wOmNhbGMoMTAwJSAtIDEuNjY2NjY2NjY2N2VtKX1AbWVkaWEgcHJpbnR7Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtbGVnYWN5Lm1hdC1mb3JtLWZpZWxkLWNhbi1mbG9hdC5tYXQtZm9ybS1maWVsZC1zaG91bGQtZmxvYXRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtbGVnYWN5Lm1hdC1mb3JtLWZpZWxkLWNhbi1mbG9hdFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWlucHV0LXNlcnZlcltfbmdjb250ZW50LSVDT01QJV06Zm9jdXMgKyAubWF0LWZvcm0tZmllbGQtbGFiZWwtd3JhcHBlcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVde3RyYW5zZm9ybTp0cmFuc2xhdGVZKC0xLjI4MTIyZW0pIHNjYWxlKDAuNzUpfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWxlZ2FjeS5tYXQtZm9ybS1maWVsZC1jYW4tZmxvYXRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWF1dG9maWxsLWNvbnRyb2xbX25nY29udGVudC0lQ09NUCVdOi13ZWJraXQtYXV0b2ZpbGwgKyAubWF0LWZvcm0tZmllbGQtbGFiZWwtd3JhcHBlcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVde3RyYW5zZm9ybTp0cmFuc2xhdGVZKC0xLjI4MTIxZW0pIHNjYWxlKDAuNzUpfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWxlZ2FjeS5tYXQtZm9ybS1maWVsZC1jYW4tZmxvYXRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pbnB1dC1zZXJ2ZXJbbGFiZWxdW19uZ2NvbnRlbnQtJUNPTVAlXTpub3QoOmxhYmVsLXNob3duKSArIC5tYXQtZm9ybS1maWVsZC1sYWJlbC13cmFwcGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17dHJhbnNmb3JtOnRyYW5zbGF0ZVkoLTEuMjgxMmVtKSBzY2FsZSgwLjc1KX19Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtZmlsbFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtaW5maXhbX25nY29udGVudC0lQ09NUCVde3BhZGRpbmc6LjI1ZW0gMCAuNzVlbSAwfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWZpbGxbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXt0b3A6MS4wOTM3NWVtO21hcmdpbi10b3A6LTAuNWVtfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWZpbGwubWF0LWZvcm0tZmllbGQtY2FuLWZsb2F0Lm1hdC1mb3JtLWZpZWxkLXNob3VsZC1mbG9hdFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1maWxsLm1hdC1mb3JtLWZpZWxkLWNhbi1mbG9hdFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWlucHV0LXNlcnZlcltfbmdjb250ZW50LSVDT01QJV06Zm9jdXMgKyAubWF0LWZvcm0tZmllbGQtbGFiZWwtd3JhcHBlcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVde3RyYW5zZm9ybTp0cmFuc2xhdGVZKC0wLjU5Mzc1ZW0pIHNjYWxlKDAuNzUpO3dpZHRoOjEzMy4zMzMzMzMzMzMzJX0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1maWxsLm1hdC1mb3JtLWZpZWxkLWNhbi1mbG9hdFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWlucHV0LXNlcnZlcltsYWJlbF1bX25nY29udGVudC0lQ09NUCVdOm5vdCg6bGFiZWwtc2hvd24pICsgLm1hdC1mb3JtLWZpZWxkLWxhYmVsLXdyYXBwZXJbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXt0cmFuc2Zvcm06dHJhbnNsYXRlWSgtMC41OTM3NGVtKSBzY2FsZSgwLjc1KTt3aWR0aDoxMzMuMzMzMzQzMzMzMyV9Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2Utb3V0bGluZVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtaW5maXhbX25nY29udGVudC0lQ09NUCVde3BhZGRpbmc6MWVtIDAgMWVtIDB9Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2Utb3V0bGluZVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVde3RvcDoxLjg0Mzc1ZW07bWFyZ2luLXRvcDotMC4yNWVtfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLW91dGxpbmUubWF0LWZvcm0tZmllbGQtY2FuLWZsb2F0Lm1hdC1mb3JtLWZpZWxkLXNob3VsZC1mbG9hdFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1vdXRsaW5lLm1hdC1mb3JtLWZpZWxkLWNhbi1mbG9hdFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWlucHV0LXNlcnZlcltfbmdjb250ZW50LSVDT01QJV06Zm9jdXMgKyAubWF0LWZvcm0tZmllbGQtbGFiZWwtd3JhcHBlcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVde3RyYW5zZm9ybTp0cmFuc2xhdGVZKC0xLjU5Mzc1ZW0pIHNjYWxlKDAuNzUpO3dpZHRoOjEzMy4zMzMzMzMzMzMzJX0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1vdXRsaW5lLm1hdC1mb3JtLWZpZWxkLWNhbi1mbG9hdFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWlucHV0LXNlcnZlcltsYWJlbF1bX25nY29udGVudC0lQ09NUCVdOm5vdCg6bGFiZWwtc2hvd24pICsgLm1hdC1mb3JtLWZpZWxkLWxhYmVsLXdyYXBwZXJbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXt0cmFuc2Zvcm06dHJhbnNsYXRlWSgtMS41OTM3NGVtKSBzY2FsZSgwLjc1KTt3aWR0aDoxMzMuMzMzMzQzMzMzMyV9Lm1hdC1ncmlkLXRpbGUtaGVhZGVyW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1ncmlkLXRpbGUtZm9vdGVyW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MTRweH0ubWF0LWdyaWQtdGlsZS1oZWFkZXJbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saW5lW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1ncmlkLXRpbGUtZm9vdGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGluZVtfbmdjb250ZW50LSVDT01QJV17d2hpdGUtc3BhY2U6bm93cmFwO292ZXJmbG93OmhpZGRlbjt0ZXh0LW92ZXJmbG93OmVsbGlwc2lzO2Rpc3BsYXk6YmxvY2s7Ym94LXNpemluZzpib3JkZXItYm94fS5tYXQtZ3JpZC10aWxlLWhlYWRlcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpbmVbX25nY29udGVudC0lQ09NUCVdOm50aC1jaGlsZChuKzIpLCAubWF0LWdyaWQtdGlsZS1mb290ZXJbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saW5lW19uZ2NvbnRlbnQtJUNPTVAlXTpudGgtY2hpbGQobisyKXtmb250LXNpemU6MTJweH1pbnB1dC5tYXQtaW5wdXQtZWxlbWVudFtfbmdjb250ZW50LSVDT01QJV17bWFyZ2luLXRvcDotMC4wNjI1ZW19Lm1hdC1tZW51LWl0ZW1bX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtmb250LXNpemU6MTRweDtmb250LXdlaWdodDo0MDB9Lm1hdC1wYWdpbmF0b3JbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXBhZ2luYXRvci1wYWdlLXNpemVbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1zZWxlY3QtdHJpZ2dlcltfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2ZvbnQtc2l6ZToxMnB4fS5tYXQtcmFkaW8tYnV0dG9uW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWZ9Lm1hdC1zZWxlY3RbX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZn0ubWF0LXNlbGVjdC10cmlnZ2VyW19uZ2NvbnRlbnQtJUNPTVAlXXtoZWlnaHQ6MS4xMjVlbX0ubWF0LXNsaWRlLXRvZ2dsZS1jb250ZW50W19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWZ9Lm1hdC1zbGlkZXItdGh1bWItbGFiZWwtdGV4dFtfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2ZvbnQtc2l6ZToxMnB4O2ZvbnQtd2VpZ2h0OjUwMH0ubWF0LXN0ZXBwZXItdmVydGljYWxbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXN0ZXBwZXItaG9yaXpvbnRhbFtfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmfS5tYXQtc3RlcC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjE0cHg7Zm9udC13ZWlnaHQ6NDAwfS5tYXQtc3RlcC1zdWItbGFiZWwtZXJyb3JbX25nY29udGVudC0lQ09NUCVde2ZvbnQtd2VpZ2h0Om5vcm1hbH0ubWF0LXN0ZXAtbGFiZWwtZXJyb3JbX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToxNHB4fS5tYXQtc3RlcC1sYWJlbC1zZWxlY3RlZFtfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjE0cHg7Zm9udC13ZWlnaHQ6NTAwfS5tYXQtdGFiLWdyb3VwW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWZ9Lm1hdC10YWItbGFiZWxbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXRhYi1saW5rW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7Zm9udC1zaXplOjE0cHg7Zm9udC13ZWlnaHQ6NTAwfS5tYXQtdG9vbGJhcltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdG9vbGJhcltfbmdjb250ZW50LSVDT01QJV0gICBoMVtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdG9vbGJhcltfbmdjb250ZW50LSVDT01QJV0gICBoMltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdG9vbGJhcltfbmdjb250ZW50LSVDT01QJV0gICBoM1tfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdG9vbGJhcltfbmdjb250ZW50LSVDT01QJV0gICBoNFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdG9vbGJhcltfbmdjb250ZW50LSVDT01QJV0gICBoNVtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdG9vbGJhcltfbmdjb250ZW50LSVDT01QJV0gICBoNltfbmdjb250ZW50LSVDT01QJV17Zm9udDo1MDAgMjBweC8zMnB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtsZXR0ZXItc3BhY2luZzpub3JtYWw7bWFyZ2luOjB9Lm1hdC10b29sdGlwW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7Zm9udC1zaXplOjEwcHg7cGFkZGluZy10b3A6NnB4O3BhZGRpbmctYm90dG9tOjZweH0ubWF0LXRvb2x0aXAtaGFuZHNldFtfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjE0cHg7cGFkZGluZy10b3A6OHB4O3BhZGRpbmctYm90dG9tOjhweH0ubWF0LWxpc3QtaXRlbVtfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmfS5tYXQtbGlzdC1vcHRpb25bX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZn0ubWF0LWxpc3QtYmFzZVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpc3QtaXRlbVtfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjE2cHh9Lm1hdC1saXN0LWJhc2VbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saXN0LWl0ZW1bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saW5lW19uZ2NvbnRlbnQtJUNPTVAlXXt3aGl0ZS1zcGFjZTpub3dyYXA7b3ZlcmZsb3c6aGlkZGVuO3RleHQtb3ZlcmZsb3c6ZWxsaXBzaXM7ZGlzcGxheTpibG9jaztib3gtc2l6aW5nOmJvcmRlci1ib3h9Lm1hdC1saXN0LWJhc2VbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saXN0LWl0ZW1bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saW5lW19uZ2NvbnRlbnQtJUNPTVAlXTpudGgtY2hpbGQobisyKXtmb250LXNpemU6MTRweH0ubWF0LWxpc3QtYmFzZVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpc3Qtb3B0aW9uW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MTZweH0ubWF0LWxpc3QtYmFzZVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpc3Qtb3B0aW9uW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGluZVtfbmdjb250ZW50LSVDT01QJV17d2hpdGUtc3BhY2U6bm93cmFwO292ZXJmbG93OmhpZGRlbjt0ZXh0LW92ZXJmbG93OmVsbGlwc2lzO2Rpc3BsYXk6YmxvY2s7Ym94LXNpemluZzpib3JkZXItYm94fS5tYXQtbGlzdC1iYXNlW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGlzdC1vcHRpb25bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saW5lW19uZ2NvbnRlbnQtJUNPTVAlXTpudGgtY2hpbGQobisyKXtmb250LXNpemU6MTRweH0ubWF0LWxpc3QtYmFzZVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXN1YmhlYWRlcltfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2ZvbnQtc2l6ZToxNHB4O2ZvbnQtd2VpZ2h0OjUwMH0ubWF0LWxpc3QtYmFzZVtkZW5zZV1bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saXN0LWl0ZW1bX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToxMnB4fS5tYXQtbGlzdC1iYXNlW2RlbnNlXVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpc3QtaXRlbVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpbmVbX25nY29udGVudC0lQ09NUCVde3doaXRlLXNwYWNlOm5vd3JhcDtvdmVyZmxvdzpoaWRkZW47dGV4dC1vdmVyZmxvdzplbGxpcHNpcztkaXNwbGF5OmJsb2NrO2JveC1zaXppbmc6Ym9yZGVyLWJveH0ubWF0LWxpc3QtYmFzZVtkZW5zZV1bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saXN0LWl0ZW1bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saW5lW19uZ2NvbnRlbnQtJUNPTVAlXTpudGgtY2hpbGQobisyKXtmb250LXNpemU6MTJweH0ubWF0LWxpc3QtYmFzZVtkZW5zZV1bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saXN0LW9wdGlvbltfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjEycHh9Lm1hdC1saXN0LWJhc2VbZGVuc2VdW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGlzdC1vcHRpb25bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saW5lW19uZ2NvbnRlbnQtJUNPTVAlXXt3aGl0ZS1zcGFjZTpub3dyYXA7b3ZlcmZsb3c6aGlkZGVuO3RleHQtb3ZlcmZsb3c6ZWxsaXBzaXM7ZGlzcGxheTpibG9jaztib3gtc2l6aW5nOmJvcmRlci1ib3h9Lm1hdC1saXN0LWJhc2VbZGVuc2VdW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGlzdC1vcHRpb25bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saW5lW19uZ2NvbnRlbnQtJUNPTVAlXTpudGgtY2hpbGQobisyKXtmb250LXNpemU6MTJweH0ubWF0LWxpc3QtYmFzZVtkZW5zZV1bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1zdWJoZWFkZXJbX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtmb250LXNpemU6MTJweDtmb250LXdlaWdodDo1MDB9Lm1hdC1vcHRpb25bX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtmb250LXNpemU6MTZweH0ubWF0LW9wdGdyb3VwLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250OjUwMCAxNHB4LzI0cHggUm9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2xldHRlci1zcGFjaW5nOm5vcm1hbH0ubWF0LXNpbXBsZS1zbmFja2Jhcltfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2ZvbnQtc2l6ZToxNHB4fS5tYXQtc2ltcGxlLXNuYWNrYmFyLWFjdGlvbltfbmdjb250ZW50LSVDT01QJV17bGluZS1oZWlnaHQ6MTtmb250LWZhbWlseTppbmhlcml0O2ZvbnQtc2l6ZTppbmhlcml0O2ZvbnQtd2VpZ2h0OjUwMH0ubWF0LXRyZWVbX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZn0ubWF0LXRyZWUtbm9kZVtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtbmVzdGVkLXRyZWUtbm9kZVtfbmdjb250ZW50LSVDT01QJV17Zm9udC13ZWlnaHQ6NDAwO2ZvbnQtc2l6ZToxNHB4fS5tYXQtcmlwcGxlW19uZ2NvbnRlbnQtJUNPTVAlXXtvdmVyZmxvdzpoaWRkZW47cG9zaXRpb246cmVsYXRpdmV9Lm1hdC1yaXBwbGVbX25nY29udGVudC0lQ09NUCVdOm5vdCg6ZW1wdHkpe3RyYW5zZm9ybTp0cmFuc2xhdGVaKDApfS5tYXQtcmlwcGxlLm1hdC1yaXBwbGUtdW5ib3VuZGVkW19uZ2NvbnRlbnQtJUNPTVAlXXtvdmVyZmxvdzp2aXNpYmxlfS5tYXQtcmlwcGxlLWVsZW1lbnRbX25nY29udGVudC0lQ09NUCVde3Bvc2l0aW9uOmFic29sdXRlO2JvcmRlci1yYWRpdXM6NTAlO3BvaW50ZXItZXZlbnRzOm5vbmU7dHJhbnNpdGlvbjpvcGFjaXR5LHRyYW5zZm9ybSAwbXMgY3ViaWMtYmV6aWVyKDAsIDAsIDAuMiwgMSk7dHJhbnNmb3JtOnNjYWxlKDApfS5jZGstaGlnaC1jb250cmFzdC1hY3RpdmVbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1yaXBwbGUtZWxlbWVudFtfbmdjb250ZW50LSVDT01QJV17ZGlzcGxheTpub25lfS5jZGstdmlzdWFsbHktaGlkZGVuW19uZ2NvbnRlbnQtJUNPTVAlXXtib3JkZXI6MDtjbGlwOnJlY3QoMCAwIDAgMCk7aGVpZ2h0OjFweDttYXJnaW46LTFweDtvdmVyZmxvdzpoaWRkZW47cGFkZGluZzowO3Bvc2l0aW9uOmFic29sdXRlO3dpZHRoOjFweDtvdXRsaW5lOjA7LXdlYmtpdC1hcHBlYXJhbmNlOm5vbmU7LW1vei1hcHBlYXJhbmNlOm5vbmV9LmNkay1vdmVybGF5LWNvbnRhaW5lcltfbmdjb250ZW50LSVDT01QJV0sIC5jZGstZ2xvYmFsLW92ZXJsYXktd3JhcHBlcltfbmdjb250ZW50LSVDT01QJV17cG9pbnRlci1ldmVudHM6bm9uZTt0b3A6MDtsZWZ0OjA7aGVpZ2h0OjEwMCU7d2lkdGg6MTAwJX0uY2RrLW92ZXJsYXktY29udGFpbmVyW19uZ2NvbnRlbnQtJUNPTVAlXXtwb3NpdGlvbjpmaXhlZDt6LWluZGV4OjEwMDB9LmNkay1vdmVybGF5LWNvbnRhaW5lcltfbmdjb250ZW50LSVDT01QJV06ZW1wdHl7ZGlzcGxheTpub25lfS5jZGstZ2xvYmFsLW92ZXJsYXktd3JhcHBlcltfbmdjb250ZW50LSVDT01QJV17ZGlzcGxheTpmbGV4O3Bvc2l0aW9uOmFic29sdXRlO3otaW5kZXg6MTAwMH0uY2RrLW92ZXJsYXktcGFuZVtfbmdjb250ZW50LSVDT01QJV17cG9zaXRpb246YWJzb2x1dGU7cG9pbnRlci1ldmVudHM6YXV0bztib3gtc2l6aW5nOmJvcmRlci1ib3g7ei1pbmRleDoxMDAwO2Rpc3BsYXk6ZmxleDttYXgtd2lkdGg6MTAwJTttYXgtaGVpZ2h0OjEwMCV9LmNkay1vdmVybGF5LWJhY2tkcm9wW19uZ2NvbnRlbnQtJUNPTVAlXXtwb3NpdGlvbjphYnNvbHV0ZTt0b3A6MDtib3R0b206MDtsZWZ0OjA7cmlnaHQ6MDt6LWluZGV4OjEwMDA7cG9pbnRlci1ldmVudHM6YXV0bzstd2Via2l0LXRhcC1oaWdobGlnaHQtY29sb3I6dHJhbnNwYXJlbnQ7dHJhbnNpdGlvbjpvcGFjaXR5IDQwMG1zIGN1YmljLWJlemllcigwLjI1LCAwLjgsIDAuMjUsIDEpO29wYWNpdHk6MH0uY2RrLW92ZXJsYXktYmFja2Ryb3AuY2RrLW92ZXJsYXktYmFja2Ryb3Atc2hvd2luZ1tfbmdjb250ZW50LSVDT01QJV17b3BhY2l0eToxfUBtZWRpYSBzY3JlZW4gYW5kICgtbXMtaGlnaC1jb250cmFzdDogYWN0aXZlKXsuY2RrLW92ZXJsYXktYmFja2Ryb3AuY2RrLW92ZXJsYXktYmFja2Ryb3Atc2hvd2luZ1tfbmdjb250ZW50LSVDT01QJV17b3BhY2l0eTouNn19LmNkay1vdmVybGF5LWRhcmstYmFja2Ryb3BbX25nY29udGVudC0lQ09NUCVde2JhY2tncm91bmQ6cmdiYSgwLDAsMCwuMzIpfS5jZGstb3ZlcmxheS10cmFuc3BhcmVudC1iYWNrZHJvcFtfbmdjb250ZW50LSVDT01QJV0sIC5jZGstb3ZlcmxheS10cmFuc3BhcmVudC1iYWNrZHJvcC5jZGstb3ZlcmxheS1iYWNrZHJvcC1zaG93aW5nW19uZ2NvbnRlbnQtJUNPTVAlXXtvcGFjaXR5OjB9LmNkay1vdmVybGF5LWNvbm5lY3RlZC1wb3NpdGlvbi1ib3VuZGluZy1ib3hbX25nY29udGVudC0lQ09NUCVde3Bvc2l0aW9uOmFic29sdXRlO3otaW5kZXg6MTAwMDtkaXNwbGF5OmZsZXg7ZmxleC1kaXJlY3Rpb246Y29sdW1uO21pbi13aWR0aDoxcHg7bWluLWhlaWdodDoxcHh9LmNkay1nbG9iYWwtc2Nyb2xsYmxvY2tbX25nY29udGVudC0lQ09NUCVde3Bvc2l0aW9uOmZpeGVkO3dpZHRoOjEwMCU7b3ZlcmZsb3cteTpzY3JvbGx9QGtleWZyYW1lcyBjZGstdGV4dC1maWVsZC1hdXRvZmlsbC1zdGFydHt9QGtleWZyYW1lcyBjZGstdGV4dC1maWVsZC1hdXRvZmlsbC1lbmR7fS5jZGstdGV4dC1maWVsZC1hdXRvZmlsbC1tb25pdG9yZWRbX25nY29udGVudC0lQ09NUCVdOi13ZWJraXQtYXV0b2ZpbGx7YW5pbWF0aW9uOmNkay10ZXh0LWZpZWxkLWF1dG9maWxsLXN0YXJ0IDBzIDFtc30uY2RrLXRleHQtZmllbGQtYXV0b2ZpbGwtbW9uaXRvcmVkW19uZ2NvbnRlbnQtJUNPTVAlXTpub3QoOi13ZWJraXQtYXV0b2ZpbGwpe2FuaW1hdGlvbjpjZGstdGV4dC1maWVsZC1hdXRvZmlsbC1lbmQgMHMgMW1zfXRleHRhcmVhLmNkay10ZXh0YXJlYS1hdXRvc2l6ZVtfbmdjb250ZW50LSVDT01QJV17cmVzaXplOm5vbmV9dGV4dGFyZWEuY2RrLXRleHRhcmVhLWF1dG9zaXplLW1lYXN1cmluZ1tfbmdjb250ZW50LSVDT01QJV17cGFkZGluZzoycHggMCAhaW1wb3J0YW50O2JveC1zaXppbmc6Y29udGVudC1ib3ggIWltcG9ydGFudDtoZWlnaHQ6YXV0byAhaW1wb3J0YW50O292ZXJmbG93OmhpZGRlbiAhaW1wb3J0YW50fXRleHRhcmVhLmNkay10ZXh0YXJlYS1hdXRvc2l6ZS1tZWFzdXJpbmctZmlyZWZveFtfbmdjb250ZW50LSVDT01QJV17cGFkZGluZzoycHggMCAhaW1wb3J0YW50O2JveC1zaXppbmc6Y29udGVudC1ib3ggIWltcG9ydGFudDtoZWlnaHQ6MCAhaW1wb3J0YW50fS5tYXQtZm9jdXMtaW5kaWNhdG9yW19uZ2NvbnRlbnQtJUNPTVAlXXtwb3NpdGlvbjpyZWxhdGl2ZX0ubWF0LW1kYy1mb2N1cy1pbmRpY2F0b3JbX25nY29udGVudC0lQ09NUCVde3Bvc2l0aW9uOnJlbGF0aXZlfS5tYXQtcmlwcGxlLWVsZW1lbnRbX25nY29udGVudC0lQ09NUCVde2JhY2tncm91bmQtY29sb3I6cmdiYSgwLDAsMCwuMSl9Lm1hdC1vcHRpb25bX25nY29udGVudC0lQ09NUCVde2NvbG9yOiMyMTIxMjF9Lm1hdC1vcHRpb25bX25nY29udGVudC0lQ09NUCVdOmhvdmVyOm5vdCgubWF0LW9wdGlvbi1kaXNhYmxlZCksIC5tYXQtb3B0aW9uW19uZ2NvbnRlbnQtJUNPTVAlXTpmb2N1czpub3QoLm1hdC1vcHRpb24tZGlzYWJsZWQpe2JhY2tncm91bmQ6cmdiYSgwLDAsMCwuMDQpfS5tYXQtb3B0aW9uLm1hdC1zZWxlY3RlZFtfbmdjb250ZW50LSVDT01QJV06bm90KC5tYXQtb3B0aW9uLW11bHRpcGxlKTpub3QoLm1hdC1vcHRpb24tZGlzYWJsZWQpe2JhY2tncm91bmQ6cmdiYSgwLDAsMCwuMDQpfS5tYXQtb3B0aW9uLm1hdC1hY3RpdmVbX25nY29udGVudC0lQ09NUCVde2JhY2tncm91bmQ6cmdiYSgwLDAsMCwuMDQpO2NvbG9yOiMyMTIxMjF9Lm1hdC1vcHRpb24ubWF0LW9wdGlvbi1kaXNhYmxlZFtfbmdjb250ZW50LSVDT01QJV17Y29sb3I6cmdiYSgwLDAsMCwuMzgpfS5tYXQtcHJpbWFyeVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LW9wdGlvbi5tYXQtc2VsZWN0ZWRbX25nY29udGVudC0lQ09NUCVdOm5vdCgubWF0LW9wdGlvbi1kaXNhYmxlZCl7Y29sb3I6I2Y1N2MwMH0ubWF0LWFjY2VudFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LW9wdGlvbi5tYXQtc2VsZWN0ZWRbX25nY29udGVudC0lQ09NUCVdOm5vdCgubWF0LW9wdGlvbi1kaXNhYmxlZCl7Y29sb3I6I2ZmOTgwMH0ubWF0LXdhcm5bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1vcHRpb24ubWF0LXNlbGVjdGVkW19uZ2NvbnRlbnQtJUNPTVAlXTpub3QoLm1hdC1vcHRpb24tZGlzYWJsZWQpe2NvbG9yOiNmNDQzMzZ9Lm1hdC1vcHRncm91cC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17Y29sb3I6IzYxNjE2MX0ubWF0LW9wdGdyb3VwLWRpc2FibGVkW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtb3B0Z3JvdXAtbGFiZWxbX25nY29udGVudC0lQ09NUCVde2NvbG9yOnJnYmEoMCwwLDAsLjM4KX0ubWF0LXBzZXVkby1jaGVja2JveFtfbmdjb250ZW50LSVDT01QJV17Y29sb3I6IzYxNjE2MX0ubWF0LXBzZXVkby1jaGVja2JveFtfbmdjb250ZW50LSVDT01QJV06OmFmdGVye2NvbG9yOiNmYWZhZmF9Lm1hdC1wc2V1ZG8tY2hlY2tib3gtZGlzYWJsZWRbX25nY29udGVudC0lQ09NUCVde2NvbG9yOiNiMGIwYjB9Lm1hdC1wcmltYXJ5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtcHNldWRvLWNoZWNrYm94LWNoZWNrZWRbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXByaW1hcnlbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1wc2V1ZG8tY2hlY2tib3gtaW5kZXRlcm1pbmF0ZVtfbmdjb250ZW50LSVDT01QJV17YmFja2dyb3VuZDojZjU3YzAwfS5tYXQtcHNldWRvLWNoZWNrYm94LWNoZWNrZWRbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXBzZXVkby1jaGVja2JveC1pbmRldGVybWluYXRlW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1hY2NlbnRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1wc2V1ZG8tY2hlY2tib3gtY2hlY2tlZFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtYWNjZW50W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtcHNldWRvLWNoZWNrYm94LWluZGV0ZXJtaW5hdGVbX25nY29udGVudC0lQ09NUCVde2JhY2tncm91bmQ6I2ZmOTgwMH0ubWF0LXdhcm5bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1wc2V1ZG8tY2hlY2tib3gtY2hlY2tlZFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtd2Fybltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXBzZXVkby1jaGVja2JveC1pbmRldGVybWluYXRlW19uZ2NvbnRlbnQtJUNPTVAlXXtiYWNrZ3JvdW5kOiNmNDQzMzZ9Lm1hdC1wc2V1ZG8tY2hlY2tib3gtY2hlY2tlZC5tYXQtcHNldWRvLWNoZWNrYm94LWRpc2FibGVkW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1wc2V1ZG8tY2hlY2tib3gtaW5kZXRlcm1pbmF0ZS5tYXQtcHNldWRvLWNoZWNrYm94LWRpc2FibGVkW19uZ2NvbnRlbnQtJUNPTVAlXXtiYWNrZ3JvdW5kOiNiMGIwYjB9Lm1hdC1hcHAtYmFja2dyb3VuZFtfbmdjb250ZW50LSVDT01QJV17YmFja2dyb3VuZC1jb2xvcjojZmFmYWZhO2NvbG9yOiMyMTIxMjF9Lm1hdC1lbGV2YXRpb24tejBbX25nY29udGVudC0lQ09NUCVde2JveC1zaGFkb3c6MHB4IDBweCAwcHggMHB4IHJnYmEoMCwgMCwgMCwgMC4yKSwwcHggMHB4IDBweCAwcHggcmdiYSgwLCAwLCAwLCAwLjE0KSwwcHggMHB4IDBweCAwcHggcmdiYSgwLCAwLCAwLCAwLjEyKX0ubWF0LWVsZXZhdGlvbi16MVtfbmdjb250ZW50LSVDT01QJV17Ym94LXNoYWRvdzowcHggMnB4IDFweCAtMXB4IHJnYmEoMCwgMCwgMCwgMC4yKSwwcHggMXB4IDFweCAwcHggcmdiYSgwLCAwLCAwLCAwLjE0KSwwcHggMXB4IDNweCAwcHggcmdiYSgwLCAwLCAwLCAwLjEyKX0ubWF0LWVsZXZhdGlvbi16Mltfbmdjb250ZW50LSVDT01QJV17Ym94LXNoYWRvdzowcHggM3B4IDFweCAtMnB4IHJnYmEoMCwgMCwgMCwgMC4yKSwwcHggMnB4IDJweCAwcHggcmdiYSgwLCAwLCAwLCAwLjE0KSwwcHggMXB4IDVweCAwcHggcmdiYSgwLCAwLCAwLCAwLjEyKX0ubWF0LWVsZXZhdGlvbi16M1tfbmdjb250ZW50LSVDT01QJV17Ym94LXNoYWRvdzowcHggM3B4IDNweCAtMnB4IHJnYmEoMCwgMCwgMCwgMC4yKSwwcHggM3B4IDRweCAwcHggcmdiYSgwLCAwLCAwLCAwLjE0KSwwcHggMXB4IDhweCAwcHggcmdiYSgwLCAwLCAwLCAwLjEyKX0ubWF0LWVsZXZhdGlvbi16NFtfbmdjb250ZW50LSVDT01QJV17Ym94LXNoYWRvdzowcHggMnB4IDRweCAtMXB4IHJnYmEoMCwgMCwgMCwgMC4yKSwwcHggNHB4IDVweCAwcHggcmdiYSgwLCAwLCAwLCAwLjE0KSwwcHggMXB4IDEwcHggMHB4IHJnYmEoMCwgMCwgMCwgMC4xMil9Lm1hdC1lbGV2YXRpb24tejVbX25nY29udGVudC0lQ09NUCVde2JveC1zaGFkb3c6MHB4IDNweCA1cHggLTFweCByZ2JhKDAsIDAsIDAsIDAuMiksMHB4IDVweCA4cHggMHB4IHJnYmEoMCwgMCwgMCwgMC4xNCksMHB4IDFweCAxNHB4IDBweCByZ2JhKDAsIDAsIDAsIDAuMTIpfS5tYXQtZWxldmF0aW9uLXo2W19uZ2NvbnRlbnQtJUNPTVAlXXtib3gtc2hhZG93OjBweCAzcHggNXB4IC0xcHggcmdiYSgwLCAwLCAwLCAwLjIpLDBweCA2cHggMTBweCAwcHggcmdiYSgwLCAwLCAwLCAwLjE0KSwwcHggMXB4IDE4cHggMHB4IHJnYmEoMCwgMCwgMCwgMC4xMil9Lm1hdC1lbGV2YXRpb24tejdbX25nY29udGVudC0lQ09NUCVde2JveC1zaGFkb3c6MHB4IDRweCA1cHggLTJweCByZ2JhKDAsIDAsIDAsIDAuMiksMHB4IDdweCAxMHB4IDFweCByZ2JhKDAsIDAsIDAsIDAuMTQpLDBweCAycHggMTZweCAxcHggcmdiYSgwLCAwLCAwLCAwLjEyKX0ubWF0LWVsZXZhdGlvbi16OFtfbmdjb250ZW50LSVDT01QJV17Ym94LXNoYWRvdzowcHggNXB4IDVweCAtM3B4IHJnYmEoMCwgMCwgMCwgMC4yKSwwcHggOHB4IDEwcHggMXB4IHJnYmEoMCwgMCwgMCwgMC4xNCksMHB4IDNweCAxNHB4IDJweCByZ2JhKDAsIDAsIDAsIDAuMTIpfS5tYXQtZWxldmF0aW9uLXo5W19uZ2NvbnRlbnQtJUNPTVAlXXtib3gtc2hhZG93OjBweCA1cHggNnB4IC0zcHggcmdiYSgwLCAwLCAwLCAwLjIpLDBweCA5cHggMTJweCAxcHggcmdiYSgwLCAwLCAwLCAwLjE0KSwwcHggM3B4IDE2cHggMnB4IHJnYmEoMCwgMCwgMCwgMC4xMil9Lm1hdC1lbGV2YXRpb24tejEwW19uZ2NvbnRlbnQtJUNPTVAlXXtib3gtc2hhZG93OjBweCA2cHggNnB4IC0zcHggcmdiYSgwLCAwLCAwLCAwLjIpLDBweCAxMHB4IDE0cHggMXB4IHJnYmEoMCwgMCwgMCwgMC4xNCksMHB4IDRweCAxOHB4IDNweCByZ2JhKDAsIDAsIDAsIDAuMTIpfS5tYXQtZWxldmF0aW9uLXoxMVtfbmdjb250ZW50LSVDT01QJV17Ym94LXNoYWRvdzowcHggNnB4IDdweCAtNHB4IHJnYmEoMCwgMCwgMCwgMC4yKSwwcHggMTFweCAxNXB4IDFweCByZ2JhKDAsIDAsIDAsIDAuMTQpLDBweCA0cHggMjBweCAzcHggcmdiYSgwLCAwLCAwLCAwLjEyKX0ubWF0LWVsZXZhdGlvbi16MTJbX25nY29udGVudC0lQ09NUCVde2JveC1zaGFkb3c6MHB4IDdweCA4cHggLTRweCByZ2JhKDAsIDAsIDAsIDAuMiksMHB4IDEycHggMTdweCAycHggcmdiYSgwLCAwLCAwLCAwLjE0KSwwcHggNXB4IDIycHggNHB4IHJnYmEoMCwgMCwgMCwgMC4xMil9Lm1hdC1lbGV2YXRpb24tejEzW19uZ2NvbnRlbnQtJUNPTVAlXXtib3gtc2hhZG93OjBweCA3cHggOHB4IC00cHggcmdiYSgwLCAwLCAwLCAwLjIpLDBweCAxM3B4IDE5cHggMnB4IHJnYmEoMCwgMCwgMCwgMC4xNCksMHB4IDVweCAyNHB4IDRweCByZ2JhKDAsIDAsIDAsIDAuMTIpfS5tYXQtZWxldmF0aW9uLXoxNFtfbmdjb250ZW50LSVDT01QJV17Ym94LXNoYWRvdzowcHggN3B4IDlweCAtNHB4IHJnYmEoMCwgMCwgMCwgMC4yKSwwcHggMTRweCAyMXB4IDJweCByZ2JhKDAsIDAsIDAsIDAuMTQpLDBweCA1cHggMjZweCA0cHggcmdiYSgwLCAwLCAwLCAwLjEyKX0ubWF0LWVsZXZhdGlvbi16MTVbX25nY29udGVudC0lQ09NUCVde2JveC1zaGFkb3c6MHB4IDhweCA5cHggLTVweCByZ2JhKDAsIDAsIDAsIDAuMiksMHB4IDE1cHggMjJweCAycHggcmdiYSgwLCAwLCAwLCAwLjE0KSwwcHggNnB4IDI4cHggNXB4IHJnYmEoMCwgMCwgMCwgMC4xMil9Lm1hdC1lbGV2YXRpb24tejE2W19uZ2NvbnRlbnQtJUNPTVAlXXtib3gtc2hhZG93OjBweCA4cHggMTBweCAtNXB4IHJnYmEoMCwgMCwgMCwgMC4yKSwwcHggMTZweCAyNHB4IDJweCByZ2JhKDAsIDAsIDAsIDAuMTQpLDBweCA2cHggMzBweCA1cHggcmdiYSgwLCAwLCAwLCAwLjEyKX0ubWF0LWVsZXZhdGlvbi16MTdbX25nY29udGVudC0lQ09NUCVde2JveC1zaGFkb3c6MHB4IDhweCAxMXB4IC01cHggcmdiYSgwLCAwLCAwLCAwLjIpLDBweCAxN3B4IDI2cHggMnB4IHJnYmEoMCwgMCwgMCwgMC4xNCksMHB4IDZweCAzMnB4IDVweCByZ2JhKDAsIDAsIDAsIDAuMTIpfS5tYXQtZWxldmF0aW9uLXoxOFtfbmdjb250ZW50LSVDT01QJV17Ym94LXNoYWRvdzowcHggOXB4IDExcHggLTVweCByZ2JhKDAsIDAsIDAsIDAuMiksMHB4IDE4cHggMjhweCAycHggcmdiYSgwLCAwLCAwLCAwLjE0KSwwcHggN3B4IDM0cHggNnB4IHJnYmEoMCwgMCwgMCwgMC4xMil9Lm1hdC1lbGV2YXRpb24tejE5W19uZ2NvbnRlbnQtJUNPTVAlXXtib3gtc2hhZG93OjBweCA5cHggMTJweCAtNnB4IHJnYmEoMCwgMCwgMCwgMC4yKSwwcHggMTlweCAyOXB4IDJweCByZ2JhKDAsIDAsIDAsIDAuMTQpLDBweCA3cHggMzZweCA2cHggcmdiYSgwLCAwLCAwLCAwLjEyKX0ubWF0LWVsZXZhdGlvbi16MjBbX25nY29udGVudC0lQ09NUCVde2JveC1zaGFkb3c6MHB4IDEwcHggMTNweCAtNnB4IHJnYmEoMCwgMCwgMCwgMC4yKSwwcHggMjBweCAzMXB4IDNweCByZ2JhKDAsIDAsIDAsIDAuMTQpLDBweCA4cHggMzhweCA3cHggcmdiYSgwLCAwLCAwLCAwLjEyKX0ubWF0LWVsZXZhdGlvbi16MjFbX25nY29udGVudC0lQ09NUCVde2JveC1zaGFkb3c6MHB4IDEwcHggMTNweCAtNnB4IHJnYmEoMCwgMCwgMCwgMC4yKSwwcHggMjFweCAzM3B4IDNweCByZ2JhKDAsIDAsIDAsIDAuMTQpLDBweCA4cHggNDBweCA3cHggcmdiYSgwLCAwLCAwLCAwLjEyKX0ubWF0LWVsZXZhdGlvbi16MjJbX25nY29udGVudC0lQ09NUCVde2JveC1zaGFkb3c6MHB4IDEwcHggMTRweCAtNnB4IHJnYmEoMCwgMCwgMCwgMC4yKSwwcHggMjJweCAzNXB4IDNweCByZ2JhKDAsIDAsIDAsIDAuMTQpLDBweCA4cHggNDJweCA3cHggcmdiYSgwLCAwLCAwLCAwLjEyKX0ubWF0LWVsZXZhdGlvbi16MjNbX25nY29udGVudC0lQ09NUCVde2JveC1zaGFkb3c6MHB4IDExcHggMTRweCAtN3B4IHJnYmEoMCwgMCwgMCwgMC4yKSwwcHggMjNweCAzNnB4IDNweCByZ2JhKDAsIDAsIDAsIDAuMTQpLDBweCA5cHggNDRweCA4cHggcmdiYSgwLCAwLCAwLCAwLjEyKX0ubWF0LWVsZXZhdGlvbi16MjRbX25nY29udGVudC0lQ09NUCVde2JveC1zaGFkb3c6MHB4IDExcHggMTVweCAtN3B4IHJnYmEoMCwgMCwgMCwgMC4yKSwwcHggMjRweCAzOHB4IDNweCByZ2JhKDAsIDAsIDAsIDAuMTQpLDBweCA5cHggNDZweCA4cHggcmdiYSgwLCAwLCAwLCAwLjEyKX0ubWF0LXRoZW1lLWxvYWRlZC1tYXJrZXJbX25nY29udGVudC0lQ09NUCVde2Rpc3BsYXk6bm9uZX0ubWF0LWF1dG9jb21wbGV0ZS1wYW5lbFtfbmdjb250ZW50LSVDT01QJV17YmFja2dyb3VuZDojZmZmO2NvbG9yOiMyMTIxMjF9Lm1hdC1hdXRvY29tcGxldGUtcGFuZWxbX25nY29udGVudC0lQ09NUCVdOm5vdChbY2xhc3MqPW1hdC1lbGV2YXRpb24tel0pe2JveC1zaGFkb3c6MHB4IDJweCA0cHggLTFweCByZ2JhKDAsIDAsIDAsIDAuMiksMHB4IDRweCA1cHggMHB4IHJnYmEoMCwgMCwgMCwgMC4xNCksMHB4IDFweCAxMHB4IDBweCByZ2JhKDAsIDAsIDAsIDAuMTIpfS5tYXQtYXV0b2NvbXBsZXRlLXBhbmVsW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtb3B0aW9uLm1hdC1zZWxlY3RlZFtfbmdjb250ZW50LSVDT01QJV06bm90KC5tYXQtYWN0aXZlKTpub3QoOmhvdmVyKXtiYWNrZ3JvdW5kOiNmZmZ9Lm1hdC1hdXRvY29tcGxldGUtcGFuZWxbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1vcHRpb24ubWF0LXNlbGVjdGVkW19uZ2NvbnRlbnQtJUNPTVAlXTpub3QoLm1hdC1hY3RpdmUpOm5vdCg6aG92ZXIpOm5vdCgubWF0LW9wdGlvbi1kaXNhYmxlZCl7Y29sb3I6IzIxMjEyMX0ubWF0LWJhZGdlLWNvbnRlbnRbX25nY29udGVudC0lQ09NUCVde2NvbG9yOiNmZmY7YmFja2dyb3VuZDojZjU3YzAwfS5jZGstaGlnaC1jb250cmFzdC1hY3RpdmVbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1iYWRnZS1jb250ZW50W19uZ2NvbnRlbnQtJUNPTVAlXXtvdXRsaW5lOnNvbGlkIDFweDtib3JkZXItcmFkaXVzOjB9Lm1hdC1iYWRnZS1hY2NlbnRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1iYWRnZS1jb250ZW50W19uZ2NvbnRlbnQtJUNPTVAlXXtiYWNrZ3JvdW5kOiNmZjk4MDA7Y29sb3I6I2ZmZn0ubWF0LWJhZGdlLXdhcm5bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1iYWRnZS1jb250ZW50W19uZ2NvbnRlbnQtJUNPTVAlXXtjb2xvcjojZmZmO2JhY2tncm91bmQ6I2Y0NDMzNn0ubWF0LWJhZGdlW19uZ2NvbnRlbnQtJUNPTVAlXXtwb3NpdGlvbjpyZWxhdGl2ZX0ubWF0LWJhZGdlLWhpZGRlbltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWJhZGdlLWNvbnRlbnRbX25nY29udGVudC0lQ09NUCVde2Rpc3BsYXk6bm9uZX0ubWF0LWJhZGdlLWRpc2FibGVkW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtYmFkZ2UtY29udGVudFtfbmdjb250ZW50LSVDT01QJV17YmFja2dyb3VuZDojYjliOWI5O2NvbG9yOiM3NTc1NzV9Lm1hdC1iYWRnZS1jb250ZW50W19uZ2NvbnRlbnQtJUNPTVAlXXtwb3NpdGlvbjphYnNvbHV0ZTt0ZXh0LWFsaWduOmNlbnRlcjtkaXNwbGF5OmlubGluZS1ibG9jaztib3JkZXItcmFkaXVzOjUwJTt0cmFuc2l0aW9uOnRyYW5zZm9ybSAyMDBtcyBlYXNlLWluLW91dDt0cmFuc2Zvcm06c2NhbGUoMC42KTtvdmVyZmxvdzpoaWRkZW47d2hpdGUtc3BhY2U6bm93cmFwO3RleHQtb3ZlcmZsb3c6ZWxsaXBzaXM7cG9pbnRlci1ldmVudHM6bm9uZX0ubmctYW5pbWF0ZS1kaXNhYmxlZFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWJhZGdlLWNvbnRlbnRbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWJhZGdlLWNvbnRlbnQuX21hdC1hbmltYXRpb24tbm9vcGFibGVbX25nY29udGVudC0lQ09NUCVde3RyYW5zaXRpb246bm9uZX0ubWF0LWJhZGdlLWNvbnRlbnQubWF0LWJhZGdlLWFjdGl2ZVtfbmdjb250ZW50LSVDT01QJV17dHJhbnNmb3JtOm5vbmV9Lm1hdC1iYWRnZS1zbWFsbFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWJhZGdlLWNvbnRlbnRbX25nY29udGVudC0lQ09NUCVde3dpZHRoOjE2cHg7aGVpZ2h0OjE2cHg7bGluZS1oZWlnaHQ6MTZweH0ubWF0LWJhZGdlLXNtYWxsLm1hdC1iYWRnZS1hYm92ZVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWJhZGdlLWNvbnRlbnRbX25nY29udGVudC0lQ09NUCVde3RvcDotOHB4fS5tYXQtYmFkZ2Utc21hbGwubWF0LWJhZGdlLWJlbG93W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtYmFkZ2UtY29udGVudFtfbmdjb250ZW50LSVDT01QJV17Ym90dG9tOi04cHh9Lm1hdC1iYWRnZS1zbWFsbC5tYXQtYmFkZ2UtYmVmb3JlW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtYmFkZ2UtY29udGVudFtfbmdjb250ZW50LSVDT01QJV17bGVmdDotMTZweH1bZGlyPXJ0bF1bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1iYWRnZS1zbWFsbC5tYXQtYmFkZ2UtYmVmb3JlW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtYmFkZ2UtY29udGVudFtfbmdjb250ZW50LSVDT01QJV17bGVmdDphdXRvO3JpZ2h0Oi0xNnB4fS5tYXQtYmFkZ2Utc21hbGwubWF0LWJhZGdlLWFmdGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtYmFkZ2UtY29udGVudFtfbmdjb250ZW50LSVDT01QJV17cmlnaHQ6LTE2cHh9W2Rpcj1ydGxdW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtYmFkZ2Utc21hbGwubWF0LWJhZGdlLWFmdGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtYmFkZ2UtY29udGVudFtfbmdjb250ZW50LSVDT01QJV17cmlnaHQ6YXV0bztsZWZ0Oi0xNnB4fS5tYXQtYmFkZ2Utc21hbGwubWF0LWJhZGdlLW92ZXJsYXAubWF0LWJhZGdlLWJlZm9yZVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWJhZGdlLWNvbnRlbnRbX25nY29udGVudC0lQ09NUCVde2xlZnQ6LThweH1bZGlyPXJ0bF1bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1iYWRnZS1zbWFsbC5tYXQtYmFkZ2Utb3ZlcmxhcC5tYXQtYmFkZ2UtYmVmb3JlW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtYmFkZ2UtY29udGVudFtfbmdjb250ZW50LSVDT01QJV17bGVmdDphdXRvO3JpZ2h0Oi04cHh9Lm1hdC1iYWRnZS1zbWFsbC5tYXQtYmFkZ2Utb3ZlcmxhcC5tYXQtYmFkZ2UtYWZ0ZXJbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1iYWRnZS1jb250ZW50W19uZ2NvbnRlbnQtJUNPTVAlXXtyaWdodDotOHB4fVtkaXI9cnRsXVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWJhZGdlLXNtYWxsLm1hdC1iYWRnZS1vdmVybGFwLm1hdC1iYWRnZS1hZnRlcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWJhZGdlLWNvbnRlbnRbX25nY29udGVudC0lQ09NUCVde3JpZ2h0OmF1dG87bGVmdDotOHB4fS5tYXQtYmFkZ2UtbWVkaXVtW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtYmFkZ2UtY29udGVudFtfbmdjb250ZW50LSVDT01QJV17d2lkdGg6MjJweDtoZWlnaHQ6MjJweDtsaW5lLWhlaWdodDoyMnB4fS5tYXQtYmFkZ2UtbWVkaXVtLm1hdC1iYWRnZS1hYm92ZVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWJhZGdlLWNvbnRlbnRbX25nY29udGVudC0lQ09NUCVde3RvcDotMTFweH0ubWF0LWJhZGdlLW1lZGl1bS5tYXQtYmFkZ2UtYmVsb3dbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1iYWRnZS1jb250ZW50W19uZ2NvbnRlbnQtJUNPTVAlXXtib3R0b206LTExcHh9Lm1hdC1iYWRnZS1tZWRpdW0ubWF0LWJhZGdlLWJlZm9yZVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWJhZGdlLWNvbnRlbnRbX25nY29udGVudC0lQ09NUCVde2xlZnQ6LTIycHh9W2Rpcj1ydGxdW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtYmFkZ2UtbWVkaXVtLm1hdC1iYWRnZS1iZWZvcmVbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1iYWRnZS1jb250ZW50W19uZ2NvbnRlbnQtJUNPTVAlXXtsZWZ0OmF1dG87cmlnaHQ6LTIycHh9Lm1hdC1iYWRnZS1tZWRpdW0ubWF0LWJhZGdlLWFmdGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtYmFkZ2UtY29udGVudFtfbmdjb250ZW50LSVDT01QJV17cmlnaHQ6LTIycHh9W2Rpcj1ydGxdW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtYmFkZ2UtbWVkaXVtLm1hdC1iYWRnZS1hZnRlcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWJhZGdlLWNvbnRlbnRbX25nY29udGVudC0lQ09NUCVde3JpZ2h0OmF1dG87bGVmdDotMjJweH0ubWF0LWJhZGdlLW1lZGl1bS5tYXQtYmFkZ2Utb3ZlcmxhcC5tYXQtYmFkZ2UtYmVmb3JlW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtYmFkZ2UtY29udGVudFtfbmdjb250ZW50LSVDT01QJV17bGVmdDotMTFweH1bZGlyPXJ0bF1bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1iYWRnZS1tZWRpdW0ubWF0LWJhZGdlLW92ZXJsYXAubWF0LWJhZGdlLWJlZm9yZVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWJhZGdlLWNvbnRlbnRbX25nY29udGVudC0lQ09NUCVde2xlZnQ6YXV0bztyaWdodDotMTFweH0ubWF0LWJhZGdlLW1lZGl1bS5tYXQtYmFkZ2Utb3ZlcmxhcC5tYXQtYmFkZ2UtYWZ0ZXJbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1iYWRnZS1jb250ZW50W19uZ2NvbnRlbnQtJUNPTVAlXXtyaWdodDotMTFweH1bZGlyPXJ0bF1bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1iYWRnZS1tZWRpdW0ubWF0LWJhZGdlLW92ZXJsYXAubWF0LWJhZGdlLWFmdGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtYmFkZ2UtY29udGVudFtfbmdjb250ZW50LSVDT01QJV17cmlnaHQ6YXV0bztsZWZ0Oi0xMXB4fS5tYXQtYmFkZ2UtbGFyZ2VbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1iYWRnZS1jb250ZW50W19uZ2NvbnRlbnQtJUNPTVAlXXt3aWR0aDoyOHB4O2hlaWdodDoyOHB4O2xpbmUtaGVpZ2h0OjI4cHh9Lm1hdC1iYWRnZS1sYXJnZS5tYXQtYmFkZ2UtYWJvdmVbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1iYWRnZS1jb250ZW50W19uZ2NvbnRlbnQtJUNPTVAlXXt0b3A6LTE0cHh9Lm1hdC1iYWRnZS1sYXJnZS5tYXQtYmFkZ2UtYmVsb3dbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1iYWRnZS1jb250ZW50W19uZ2NvbnRlbnQtJUNPTVAlXXtib3R0b206LTE0cHh9Lm1hdC1iYWRnZS1sYXJnZS5tYXQtYmFkZ2UtYmVmb3JlW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtYmFkZ2UtY29udGVudFtfbmdjb250ZW50LSVDT01QJV17bGVmdDotMjhweH1bZGlyPXJ0bF1bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1iYWRnZS1sYXJnZS5tYXQtYmFkZ2UtYmVmb3JlW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtYmFkZ2UtY29udGVudFtfbmdjb250ZW50LSVDT01QJV17bGVmdDphdXRvO3JpZ2h0Oi0yOHB4fS5tYXQtYmFkZ2UtbGFyZ2UubWF0LWJhZGdlLWFmdGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtYmFkZ2UtY29udGVudFtfbmdjb250ZW50LSVDT01QJV17cmlnaHQ6LTI4cHh9W2Rpcj1ydGxdW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtYmFkZ2UtbGFyZ2UubWF0LWJhZGdlLWFmdGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtYmFkZ2UtY29udGVudFtfbmdjb250ZW50LSVDT01QJV17cmlnaHQ6YXV0bztsZWZ0Oi0yOHB4fS5tYXQtYmFkZ2UtbGFyZ2UubWF0LWJhZGdlLW92ZXJsYXAubWF0LWJhZGdlLWJlZm9yZVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWJhZGdlLWNvbnRlbnRbX25nY29udGVudC0lQ09NUCVde2xlZnQ6LTE0cHh9W2Rpcj1ydGxdW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtYmFkZ2UtbGFyZ2UubWF0LWJhZGdlLW92ZXJsYXAubWF0LWJhZGdlLWJlZm9yZVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWJhZGdlLWNvbnRlbnRbX25nY29udGVudC0lQ09NUCVde2xlZnQ6YXV0bztyaWdodDotMTRweH0ubWF0LWJhZGdlLWxhcmdlLm1hdC1iYWRnZS1vdmVybGFwLm1hdC1iYWRnZS1hZnRlcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWJhZGdlLWNvbnRlbnRbX25nY29udGVudC0lQ09NUCVde3JpZ2h0Oi0xNHB4fVtkaXI9cnRsXVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWJhZGdlLWxhcmdlLm1hdC1iYWRnZS1vdmVybGFwLm1hdC1iYWRnZS1hZnRlcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWJhZGdlLWNvbnRlbnRbX25nY29udGVudC0lQ09NUCVde3JpZ2h0OmF1dG87bGVmdDotMTRweH0ubWF0LWJvdHRvbS1zaGVldC1jb250YWluZXJbX25nY29udGVudC0lQ09NUCVde2JveC1zaGFkb3c6MHB4IDhweCAxMHB4IC01cHggcmdiYSgwLCAwLCAwLCAwLjIpLDBweCAxNnB4IDI0cHggMnB4IHJnYmEoMCwgMCwgMCwgMC4xNCksMHB4IDZweCAzMHB4IDVweCByZ2JhKDAsIDAsIDAsIDAuMTIpO2JhY2tncm91bmQ6I2ZmZjtjb2xvcjojMjEyMTIxfS5tYXQtYnV0dG9uW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1pY29uLWJ1dHRvbltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtc3Ryb2tlZC1idXR0b25bX25nY29udGVudC0lQ09NUCVde2NvbG9yOmluaGVyaXQ7YmFja2dyb3VuZDp0cmFuc3BhcmVudH0ubWF0LWJ1dHRvbi5tYXQtcHJpbWFyeVtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtaWNvbi1idXR0b24ubWF0LXByaW1hcnlbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXN0cm9rZWQtYnV0dG9uLm1hdC1wcmltYXJ5W19uZ2NvbnRlbnQtJUNPTVAlXXtjb2xvcjojZjU3YzAwfS5tYXQtYnV0dG9uLm1hdC1hY2NlbnRbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWljb24tYnV0dG9uLm1hdC1hY2NlbnRbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXN0cm9rZWQtYnV0dG9uLm1hdC1hY2NlbnRbX25nY29udGVudC0lQ09NUCVde2NvbG9yOiNmZjk4MDB9Lm1hdC1idXR0b24ubWF0LXdhcm5bX25nY29udGVudC0lQ09NUCVdLCAubWF0LWljb24tYnV0dG9uLm1hdC13YXJuW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1zdHJva2VkLWJ1dHRvbi5tYXQtd2Fybltfbmdjb250ZW50LSVDT01QJV17Y29sb3I6I2Y0NDMzNn0ubWF0LWJ1dHRvbi5tYXQtcHJpbWFyeS5tYXQtYnV0dG9uLWRpc2FibGVkW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1idXR0b24ubWF0LWFjY2VudC5tYXQtYnV0dG9uLWRpc2FibGVkW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1idXR0b24ubWF0LXdhcm4ubWF0LWJ1dHRvbi1kaXNhYmxlZFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtYnV0dG9uLm1hdC1idXR0b24tZGlzYWJsZWQubWF0LWJ1dHRvbi1kaXNhYmxlZFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtaWNvbi1idXR0b24ubWF0LXByaW1hcnkubWF0LWJ1dHRvbi1kaXNhYmxlZFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtaWNvbi1idXR0b24ubWF0LWFjY2VudC5tYXQtYnV0dG9uLWRpc2FibGVkW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1pY29uLWJ1dHRvbi5tYXQtd2Fybi5tYXQtYnV0dG9uLWRpc2FibGVkW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1pY29uLWJ1dHRvbi5tYXQtYnV0dG9uLWRpc2FibGVkLm1hdC1idXR0b24tZGlzYWJsZWRbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXN0cm9rZWQtYnV0dG9uLm1hdC1wcmltYXJ5Lm1hdC1idXR0b24tZGlzYWJsZWRbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXN0cm9rZWQtYnV0dG9uLm1hdC1hY2NlbnQubWF0LWJ1dHRvbi1kaXNhYmxlZFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtc3Ryb2tlZC1idXR0b24ubWF0LXdhcm4ubWF0LWJ1dHRvbi1kaXNhYmxlZFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtc3Ryb2tlZC1idXR0b24ubWF0LWJ1dHRvbi1kaXNhYmxlZC5tYXQtYnV0dG9uLWRpc2FibGVkW19uZ2NvbnRlbnQtJUNPTVAlXXtjb2xvcjpyZ2JhKDAsMCwwLC4yNil9Lm1hdC1idXR0b24ubWF0LXByaW1hcnlbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1idXR0b24tZm9jdXMtb3ZlcmxheVtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtaWNvbi1idXR0b24ubWF0LXByaW1hcnlbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1idXR0b24tZm9jdXMtb3ZlcmxheVtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtc3Ryb2tlZC1idXR0b24ubWF0LXByaW1hcnlbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1idXR0b24tZm9jdXMtb3ZlcmxheVtfbmdjb250ZW50LSVDT01QJV17YmFja2dyb3VuZC1jb2xvcjojZjU3YzAwfS5tYXQtYnV0dG9uLm1hdC1hY2NlbnRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1idXR0b24tZm9jdXMtb3ZlcmxheVtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtaWNvbi1idXR0b24ubWF0LWFjY2VudFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWJ1dHRvbi1mb2N1cy1vdmVybGF5W19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1zdHJva2VkLWJ1dHRvbi5tYXQtYWNjZW50W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtYnV0dG9uLWZvY3VzLW92ZXJsYXlbX25nY29udGVudC0lQ09NUCVde2JhY2tncm91bmQtY29sb3I6I2ZmOTgwMH0ubWF0LWJ1dHRvbi5tYXQtd2Fybltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWJ1dHRvbi1mb2N1cy1vdmVybGF5W19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1pY29uLWJ1dHRvbi5tYXQtd2Fybltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWJ1dHRvbi1mb2N1cy1vdmVybGF5W19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1zdHJva2VkLWJ1dHRvbi5tYXQtd2Fybltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWJ1dHRvbi1mb2N1cy1vdmVybGF5W19uZ2NvbnRlbnQtJUNPTVAlXXtiYWNrZ3JvdW5kLWNvbG9yOiNmNDQzMzZ9Lm1hdC1idXR0b24ubWF0LWJ1dHRvbi1kaXNhYmxlZFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWJ1dHRvbi1mb2N1cy1vdmVybGF5W19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1pY29uLWJ1dHRvbi5tYXQtYnV0dG9uLWRpc2FibGVkW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtYnV0dG9uLWZvY3VzLW92ZXJsYXlbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXN0cm9rZWQtYnV0dG9uLm1hdC1idXR0b24tZGlzYWJsZWRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1idXR0b24tZm9jdXMtb3ZlcmxheVtfbmdjb250ZW50LSVDT01QJV17YmFja2dyb3VuZC1jb2xvcjp0cmFuc3BhcmVudH0ubWF0LWJ1dHRvbltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXJpcHBsZS1lbGVtZW50W19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1pY29uLWJ1dHRvbltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXJpcHBsZS1lbGVtZW50W19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1zdHJva2VkLWJ1dHRvbltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXJpcHBsZS1lbGVtZW50W19uZ2NvbnRlbnQtJUNPTVAlXXtvcGFjaXR5Oi4xO2JhY2tncm91bmQtY29sb3I6Y3VycmVudENvbG9yfS5tYXQtYnV0dG9uLWZvY3VzLW92ZXJsYXlbX25nY29udGVudC0lQ09NUCVde2JhY2tncm91bmQ6IzAwMH0ubWF0LXN0cm9rZWQtYnV0dG9uW19uZ2NvbnRlbnQtJUNPTVAlXTpub3QoLm1hdC1idXR0b24tZGlzYWJsZWQpe2JvcmRlci1jb2xvcjpyZ2JhKDAsMCwwLC4xMil9Lm1hdC1mbGF0LWJ1dHRvbltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtcmFpc2VkLWJ1dHRvbltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtZmFiW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1taW5pLWZhYltfbmdjb250ZW50LSVDT01QJV17Y29sb3I6IzIxMjEyMTtiYWNrZ3JvdW5kLWNvbG9yOiNmZmZ9Lm1hdC1mbGF0LWJ1dHRvbi5tYXQtcHJpbWFyeVtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtcmFpc2VkLWJ1dHRvbi5tYXQtcHJpbWFyeVtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtZmFiLm1hdC1wcmltYXJ5W19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1taW5pLWZhYi5tYXQtcHJpbWFyeVtfbmdjb250ZW50LSVDT01QJV17Y29sb3I6I2ZmZn0ubWF0LWZsYXQtYnV0dG9uLm1hdC1hY2NlbnRbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXJhaXNlZC1idXR0b24ubWF0LWFjY2VudFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtZmFiLm1hdC1hY2NlbnRbX25nY29udGVudC0lQ09NUCVdLCAubWF0LW1pbmktZmFiLm1hdC1hY2NlbnRbX25nY29udGVudC0lQ09NUCVde2NvbG9yOiNmZmZ9Lm1hdC1mbGF0LWJ1dHRvbi5tYXQtd2Fybltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtcmFpc2VkLWJ1dHRvbi5tYXQtd2Fybltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtZmFiLm1hdC13YXJuW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1taW5pLWZhYi5tYXQtd2Fybltfbmdjb250ZW50LSVDT01QJV17Y29sb3I6I2ZmZn0ubWF0LWZsYXQtYnV0dG9uLm1hdC1wcmltYXJ5Lm1hdC1idXR0b24tZGlzYWJsZWRbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWZsYXQtYnV0dG9uLm1hdC1hY2NlbnQubWF0LWJ1dHRvbi1kaXNhYmxlZFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtZmxhdC1idXR0b24ubWF0LXdhcm4ubWF0LWJ1dHRvbi1kaXNhYmxlZFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtZmxhdC1idXR0b24ubWF0LWJ1dHRvbi1kaXNhYmxlZC5tYXQtYnV0dG9uLWRpc2FibGVkW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1yYWlzZWQtYnV0dG9uLm1hdC1wcmltYXJ5Lm1hdC1idXR0b24tZGlzYWJsZWRbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXJhaXNlZC1idXR0b24ubWF0LWFjY2VudC5tYXQtYnV0dG9uLWRpc2FibGVkW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1yYWlzZWQtYnV0dG9uLm1hdC13YXJuLm1hdC1idXR0b24tZGlzYWJsZWRbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXJhaXNlZC1idXR0b24ubWF0LWJ1dHRvbi1kaXNhYmxlZC5tYXQtYnV0dG9uLWRpc2FibGVkW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1mYWIubWF0LXByaW1hcnkubWF0LWJ1dHRvbi1kaXNhYmxlZFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtZmFiLm1hdC1hY2NlbnQubWF0LWJ1dHRvbi1kaXNhYmxlZFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtZmFiLm1hdC13YXJuLm1hdC1idXR0b24tZGlzYWJsZWRbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWZhYi5tYXQtYnV0dG9uLWRpc2FibGVkLm1hdC1idXR0b24tZGlzYWJsZWRbX25nY29udGVudC0lQ09NUCVdLCAubWF0LW1pbmktZmFiLm1hdC1wcmltYXJ5Lm1hdC1idXR0b24tZGlzYWJsZWRbX25nY29udGVudC0lQ09NUCVdLCAubWF0LW1pbmktZmFiLm1hdC1hY2NlbnQubWF0LWJ1dHRvbi1kaXNhYmxlZFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtbWluaS1mYWIubWF0LXdhcm4ubWF0LWJ1dHRvbi1kaXNhYmxlZFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtbWluaS1mYWIubWF0LWJ1dHRvbi1kaXNhYmxlZC5tYXQtYnV0dG9uLWRpc2FibGVkW19uZ2NvbnRlbnQtJUNPTVAlXXtjb2xvcjpyZ2JhKDAsMCwwLC4yNil9Lm1hdC1mbGF0LWJ1dHRvbi5tYXQtcHJpbWFyeVtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtcmFpc2VkLWJ1dHRvbi5tYXQtcHJpbWFyeVtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtZmFiLm1hdC1wcmltYXJ5W19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1taW5pLWZhYi5tYXQtcHJpbWFyeVtfbmdjb250ZW50LSVDT01QJV17YmFja2dyb3VuZC1jb2xvcjojZjU3YzAwfS5tYXQtZmxhdC1idXR0b24ubWF0LWFjY2VudFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtcmFpc2VkLWJ1dHRvbi5tYXQtYWNjZW50W19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1mYWIubWF0LWFjY2VudFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtbWluaS1mYWIubWF0LWFjY2VudFtfbmdjb250ZW50LSVDT01QJV17YmFja2dyb3VuZC1jb2xvcjojZmY5ODAwfS5tYXQtZmxhdC1idXR0b24ubWF0LXdhcm5bX25nY29udGVudC0lQ09NUCVdLCAubWF0LXJhaXNlZC1idXR0b24ubWF0LXdhcm5bX25nY29udGVudC0lQ09NUCVdLCAubWF0LWZhYi5tYXQtd2Fybltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtbWluaS1mYWIubWF0LXdhcm5bX25nY29udGVudC0lQ09NUCVde2JhY2tncm91bmQtY29sb3I6I2Y0NDMzNn0ubWF0LWZsYXQtYnV0dG9uLm1hdC1wcmltYXJ5Lm1hdC1idXR0b24tZGlzYWJsZWRbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWZsYXQtYnV0dG9uLm1hdC1hY2NlbnQubWF0LWJ1dHRvbi1kaXNhYmxlZFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtZmxhdC1idXR0b24ubWF0LXdhcm4ubWF0LWJ1dHRvbi1kaXNhYmxlZFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtZmxhdC1idXR0b24ubWF0LWJ1dHRvbi1kaXNhYmxlZC5tYXQtYnV0dG9uLWRpc2FibGVkW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1yYWlzZWQtYnV0dG9uLm1hdC1wcmltYXJ5Lm1hdC1idXR0b24tZGlzYWJsZWRbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXJhaXNlZC1idXR0b24ubWF0LWFjY2VudC5tYXQtYnV0dG9uLWRpc2FibGVkW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1yYWlzZWQtYnV0dG9uLm1hdC13YXJuLm1hdC1idXR0b24tZGlzYWJsZWRbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXJhaXNlZC1idXR0b24ubWF0LWJ1dHRvbi1kaXNhYmxlZC5tYXQtYnV0dG9uLWRpc2FibGVkW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1mYWIubWF0LXByaW1hcnkubWF0LWJ1dHRvbi1kaXNhYmxlZFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtZmFiLm1hdC1hY2NlbnQubWF0LWJ1dHRvbi1kaXNhYmxlZFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtZmFiLm1hdC13YXJuLm1hdC1idXR0b24tZGlzYWJsZWRbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWZhYi5tYXQtYnV0dG9uLWRpc2FibGVkLm1hdC1idXR0b24tZGlzYWJsZWRbX25nY29udGVudC0lQ09NUCVdLCAubWF0LW1pbmktZmFiLm1hdC1wcmltYXJ5Lm1hdC1idXR0b24tZGlzYWJsZWRbX25nY29udGVudC0lQ09NUCVdLCAubWF0LW1pbmktZmFiLm1hdC1hY2NlbnQubWF0LWJ1dHRvbi1kaXNhYmxlZFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtbWluaS1mYWIubWF0LXdhcm4ubWF0LWJ1dHRvbi1kaXNhYmxlZFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtbWluaS1mYWIubWF0LWJ1dHRvbi1kaXNhYmxlZC5tYXQtYnV0dG9uLWRpc2FibGVkW19uZ2NvbnRlbnQtJUNPTVAlXXtiYWNrZ3JvdW5kLWNvbG9yOnJnYmEoMCwwLDAsLjEyKX0ubWF0LWZsYXQtYnV0dG9uLm1hdC1wcmltYXJ5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtcmlwcGxlLWVsZW1lbnRbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXJhaXNlZC1idXR0b24ubWF0LXByaW1hcnlbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1yaXBwbGUtZWxlbWVudFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtZmFiLm1hdC1wcmltYXJ5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtcmlwcGxlLWVsZW1lbnRbX25nY29udGVudC0lQ09NUCVdLCAubWF0LW1pbmktZmFiLm1hdC1wcmltYXJ5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtcmlwcGxlLWVsZW1lbnRbX25nY29udGVudC0lQ09NUCVde2JhY2tncm91bmQtY29sb3I6cmdiYSgyNTUsMjU1LDI1NSwuMSl9Lm1hdC1mbGF0LWJ1dHRvbi5tYXQtYWNjZW50W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtcmlwcGxlLWVsZW1lbnRbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXJhaXNlZC1idXR0b24ubWF0LWFjY2VudFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXJpcHBsZS1lbGVtZW50W19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1mYWIubWF0LWFjY2VudFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXJpcHBsZS1lbGVtZW50W19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1taW5pLWZhYi5tYXQtYWNjZW50W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtcmlwcGxlLWVsZW1lbnRbX25nY29udGVudC0lQ09NUCVde2JhY2tncm91bmQtY29sb3I6cmdiYSgyNTUsMjU1LDI1NSwuMSl9Lm1hdC1mbGF0LWJ1dHRvbi5tYXQtd2Fybltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXJpcHBsZS1lbGVtZW50W19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1yYWlzZWQtYnV0dG9uLm1hdC13YXJuW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtcmlwcGxlLWVsZW1lbnRbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWZhYi5tYXQtd2Fybltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXJpcHBsZS1lbGVtZW50W19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1taW5pLWZhYi5tYXQtd2Fybltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXJpcHBsZS1lbGVtZW50W19uZ2NvbnRlbnQtJUNPTVAlXXtiYWNrZ3JvdW5kLWNvbG9yOnJnYmEoMjU1LDI1NSwyNTUsLjEpfS5tYXQtc3Ryb2tlZC1idXR0b25bX25nY29udGVudC0lQ09NUCVdOm5vdChbY2xhc3MqPW1hdC1lbGV2YXRpb24tel0pLCAubWF0LWZsYXQtYnV0dG9uW19uZ2NvbnRlbnQtJUNPTVAlXTpub3QoW2NsYXNzKj1tYXQtZWxldmF0aW9uLXpdKXtib3gtc2hhZG93OjBweCAwcHggMHB4IDBweCByZ2JhKDAsIDAsIDAsIDAuMiksMHB4IDBweCAwcHggMHB4IHJnYmEoMCwgMCwgMCwgMC4xNCksMHB4IDBweCAwcHggMHB4IHJnYmEoMCwgMCwgMCwgMC4xMil9Lm1hdC1yYWlzZWQtYnV0dG9uW19uZ2NvbnRlbnQtJUNPTVAlXTpub3QoW2NsYXNzKj1tYXQtZWxldmF0aW9uLXpdKXtib3gtc2hhZG93OjBweCAzcHggMXB4IC0ycHggcmdiYSgwLCAwLCAwLCAwLjIpLDBweCAycHggMnB4IDBweCByZ2JhKDAsIDAsIDAsIDAuMTQpLDBweCAxcHggNXB4IDBweCByZ2JhKDAsIDAsIDAsIDAuMTIpfS5tYXQtcmFpc2VkLWJ1dHRvbltfbmdjb250ZW50LSVDT01QJV06bm90KC5tYXQtYnV0dG9uLWRpc2FibGVkKTphY3RpdmU6bm90KFtjbGFzcyo9bWF0LWVsZXZhdGlvbi16XSl7Ym94LXNoYWRvdzowcHggNXB4IDVweCAtM3B4IHJnYmEoMCwgMCwgMCwgMC4yKSwwcHggOHB4IDEwcHggMXB4IHJnYmEoMCwgMCwgMCwgMC4xNCksMHB4IDNweCAxNHB4IDJweCByZ2JhKDAsIDAsIDAsIDAuMTIpfS5tYXQtcmFpc2VkLWJ1dHRvbi5tYXQtYnV0dG9uLWRpc2FibGVkW19uZ2NvbnRlbnQtJUNPTVAlXTpub3QoW2NsYXNzKj1tYXQtZWxldmF0aW9uLXpdKXtib3gtc2hhZG93OjBweCAwcHggMHB4IDBweCByZ2JhKDAsIDAsIDAsIDAuMiksMHB4IDBweCAwcHggMHB4IHJnYmEoMCwgMCwgMCwgMC4xNCksMHB4IDBweCAwcHggMHB4IHJnYmEoMCwgMCwgMCwgMC4xMil9Lm1hdC1mYWJbX25nY29udGVudC0lQ09NUCVdOm5vdChbY2xhc3MqPW1hdC1lbGV2YXRpb24tel0pLCAubWF0LW1pbmktZmFiW19uZ2NvbnRlbnQtJUNPTVAlXTpub3QoW2NsYXNzKj1tYXQtZWxldmF0aW9uLXpdKXtib3gtc2hhZG93OjBweCAzcHggNXB4IC0xcHggcmdiYSgwLCAwLCAwLCAwLjIpLDBweCA2cHggMTBweCAwcHggcmdiYSgwLCAwLCAwLCAwLjE0KSwwcHggMXB4IDE4cHggMHB4IHJnYmEoMCwgMCwgMCwgMC4xMil9Lm1hdC1mYWJbX25nY29udGVudC0lQ09NUCVdOm5vdCgubWF0LWJ1dHRvbi1kaXNhYmxlZCk6YWN0aXZlOm5vdChbY2xhc3MqPW1hdC1lbGV2YXRpb24tel0pLCAubWF0LW1pbmktZmFiW19uZ2NvbnRlbnQtJUNPTVAlXTpub3QoLm1hdC1idXR0b24tZGlzYWJsZWQpOmFjdGl2ZTpub3QoW2NsYXNzKj1tYXQtZWxldmF0aW9uLXpdKXtib3gtc2hhZG93OjBweCA3cHggOHB4IC00cHggcmdiYSgwLCAwLCAwLCAwLjIpLDBweCAxMnB4IDE3cHggMnB4IHJnYmEoMCwgMCwgMCwgMC4xNCksMHB4IDVweCAyMnB4IDRweCByZ2JhKDAsIDAsIDAsIDAuMTIpfS5tYXQtZmFiLm1hdC1idXR0b24tZGlzYWJsZWRbX25nY29udGVudC0lQ09NUCVdOm5vdChbY2xhc3MqPW1hdC1lbGV2YXRpb24tel0pLCAubWF0LW1pbmktZmFiLm1hdC1idXR0b24tZGlzYWJsZWRbX25nY29udGVudC0lQ09NUCVdOm5vdChbY2xhc3MqPW1hdC1lbGV2YXRpb24tel0pe2JveC1zaGFkb3c6MHB4IDBweCAwcHggMHB4IHJnYmEoMCwgMCwgMCwgMC4yKSwwcHggMHB4IDBweCAwcHggcmdiYSgwLCAwLCAwLCAwLjE0KSwwcHggMHB4IDBweCAwcHggcmdiYSgwLCAwLCAwLCAwLjEyKX0ubWF0LWJ1dHRvbi10b2dnbGUtc3RhbmRhbG9uZVtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtYnV0dG9uLXRvZ2dsZS1ncm91cFtfbmdjb250ZW50LSVDT01QJV17Ym94LXNoYWRvdzowcHggM3B4IDFweCAtMnB4IHJnYmEoMCwgMCwgMCwgMC4yKSwwcHggMnB4IDJweCAwcHggcmdiYSgwLCAwLCAwLCAwLjE0KSwwcHggMXB4IDVweCAwcHggcmdiYSgwLCAwLCAwLCAwLjEyKX0ubWF0LWJ1dHRvbi10b2dnbGUtc3RhbmRhbG9uZS5tYXQtYnV0dG9uLXRvZ2dsZS1hcHBlYXJhbmNlLXN0YW5kYXJkW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1idXR0b24tdG9nZ2xlLWdyb3VwLWFwcGVhcmFuY2Utc3RhbmRhcmRbX25nY29udGVudC0lQ09NUCVde2JveC1zaGFkb3c6bm9uZX0ubWF0LWJ1dHRvbi10b2dnbGVbX25nY29udGVudC0lQ09NUCVde2NvbG9yOnJnYmEoMCwwLDAsLjM4KX0ubWF0LWJ1dHRvbi10b2dnbGVbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1idXR0b24tdG9nZ2xlLWZvY3VzLW92ZXJsYXlbX25nY29udGVudC0lQ09NUCVde2JhY2tncm91bmQtY29sb3I6cmdiYSgwLDAsMCwuMTIpfS5tYXQtYnV0dG9uLXRvZ2dsZS1hcHBlYXJhbmNlLXN0YW5kYXJkW19uZ2NvbnRlbnQtJUNPTVAlXXtjb2xvcjojMjEyMTIxO2JhY2tncm91bmQ6I2ZmZn0ubWF0LWJ1dHRvbi10b2dnbGUtYXBwZWFyYW5jZS1zdGFuZGFyZFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWJ1dHRvbi10b2dnbGUtZm9jdXMtb3ZlcmxheVtfbmdjb250ZW50LSVDT01QJV17YmFja2dyb3VuZC1jb2xvcjojMDAwfS5tYXQtYnV0dG9uLXRvZ2dsZS1ncm91cC1hcHBlYXJhbmNlLXN0YW5kYXJkW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtYnV0dG9uLXRvZ2dsZVtfbmdjb250ZW50LSVDT01QJV0gKyAubWF0LWJ1dHRvbi10b2dnbGVbX25nY29udGVudC0lQ09NUCVde2JvcmRlci1sZWZ0OnNvbGlkIDFweCByZ2JhKDAsMCwwLC4xMil9W2Rpcj1ydGxdW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtYnV0dG9uLXRvZ2dsZS1ncm91cC1hcHBlYXJhbmNlLXN0YW5kYXJkW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtYnV0dG9uLXRvZ2dsZVtfbmdjb250ZW50LSVDT01QJV0gKyAubWF0LWJ1dHRvbi10b2dnbGVbX25nY29udGVudC0lQ09NUCVde2JvcmRlci1sZWZ0Om5vbmU7Ym9yZGVyLXJpZ2h0OnNvbGlkIDFweCByZ2JhKDAsMCwwLC4xMil9Lm1hdC1idXR0b24tdG9nZ2xlLWdyb3VwLWFwcGVhcmFuY2Utc3RhbmRhcmQubWF0LWJ1dHRvbi10b2dnbGUtdmVydGljYWxbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1idXR0b24tdG9nZ2xlW19uZ2NvbnRlbnQtJUNPTVAlXSArIC5tYXQtYnV0dG9uLXRvZ2dsZVtfbmdjb250ZW50LSVDT01QJV17Ym9yZGVyLWxlZnQ6bm9uZTtib3JkZXItcmlnaHQ6bm9uZTtib3JkZXItdG9wOnNvbGlkIDFweCByZ2JhKDAsMCwwLC4xMil9Lm1hdC1idXR0b24tdG9nZ2xlLWNoZWNrZWRbX25nY29udGVudC0lQ09NUCVde2JhY2tncm91bmQtY29sb3I6I2UwZTBlMDtjb2xvcjojNjE2MTYxfS5tYXQtYnV0dG9uLXRvZ2dsZS1jaGVja2VkLm1hdC1idXR0b24tdG9nZ2xlLWFwcGVhcmFuY2Utc3RhbmRhcmRbX25nY29udGVudC0lQ09NUCVde2NvbG9yOiMyMTIxMjF9Lm1hdC1idXR0b24tdG9nZ2xlLWRpc2FibGVkW19uZ2NvbnRlbnQtJUNPTVAlXXtjb2xvcjpyZ2JhKDAsMCwwLC4yNik7YmFja2dyb3VuZC1jb2xvcjojZWVlfS5tYXQtYnV0dG9uLXRvZ2dsZS1kaXNhYmxlZC5tYXQtYnV0dG9uLXRvZ2dsZS1hcHBlYXJhbmNlLXN0YW5kYXJkW19uZ2NvbnRlbnQtJUNPTVAlXXtiYWNrZ3JvdW5kOiNmZmZ9Lm1hdC1idXR0b24tdG9nZ2xlLWRpc2FibGVkLm1hdC1idXR0b24tdG9nZ2xlLWNoZWNrZWRbX25nY29udGVudC0lQ09NUCVde2JhY2tncm91bmQtY29sb3I6I2JkYmRiZH0ubWF0LWJ1dHRvbi10b2dnbGUtc3RhbmRhbG9uZS5tYXQtYnV0dG9uLXRvZ2dsZS1hcHBlYXJhbmNlLXN0YW5kYXJkW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1idXR0b24tdG9nZ2xlLWdyb3VwLWFwcGVhcmFuY2Utc3RhbmRhcmRbX25nY29udGVudC0lQ09NUCVde2JvcmRlcjpzb2xpZCAxcHggcmdiYSgwLDAsMCwuMTIpfS5tYXQtYnV0dG9uLXRvZ2dsZS1hcHBlYXJhbmNlLXN0YW5kYXJkW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtYnV0dG9uLXRvZ2dsZS1sYWJlbC1jb250ZW50W19uZ2NvbnRlbnQtJUNPTVAlXXtsaW5lLWhlaWdodDo0OHB4fS5tYXQtY2FyZFtfbmdjb250ZW50LSVDT01QJV17YmFja2dyb3VuZDojZmZmO2NvbG9yOiMyMTIxMjF9Lm1hdC1jYXJkW19uZ2NvbnRlbnQtJUNPTVAlXTpub3QoW2NsYXNzKj1tYXQtZWxldmF0aW9uLXpdKXtib3gtc2hhZG93OjBweCAycHggMXB4IC0xcHggcmdiYSgwLCAwLCAwLCAwLjIpLDBweCAxcHggMXB4IDBweCByZ2JhKDAsIDAsIDAsIDAuMTQpLDBweCAxcHggM3B4IDBweCByZ2JhKDAsIDAsIDAsIDAuMTIpfS5tYXQtY2FyZC5tYXQtY2FyZC1mbGF0W19uZ2NvbnRlbnQtJUNPTVAlXTpub3QoW2NsYXNzKj1tYXQtZWxldmF0aW9uLXpdKXtib3gtc2hhZG93OjBweCAwcHggMHB4IDBweCByZ2JhKDAsIDAsIDAsIDAuMiksMHB4IDBweCAwcHggMHB4IHJnYmEoMCwgMCwgMCwgMC4xNCksMHB4IDBweCAwcHggMHB4IHJnYmEoMCwgMCwgMCwgMC4xMil9Lm1hdC1jYXJkLXN1YnRpdGxlW19uZ2NvbnRlbnQtJUNPTVAlXXtjb2xvcjojNjE2MTYxfS5tYXQtY2hlY2tib3gtZnJhbWVbX25nY29udGVudC0lQ09NUCVde2JvcmRlci1jb2xvcjojNjE2MTYxfS5tYXQtY2hlY2tib3gtY2hlY2ttYXJrW19uZ2NvbnRlbnQtJUNPTVAlXXtmaWxsOiNmYWZhZmF9Lm1hdC1jaGVja2JveC1jaGVja21hcmstcGF0aFtfbmdjb250ZW50LSVDT01QJV17c3Ryb2tlOiNmYWZhZmEgIWltcG9ydGFudH0ubWF0LWNoZWNrYm94LW1peGVkbWFya1tfbmdjb250ZW50LSVDT01QJV17YmFja2dyb3VuZC1jb2xvcjojZmFmYWZhfS5tYXQtY2hlY2tib3gtaW5kZXRlcm1pbmF0ZS5tYXQtcHJpbWFyeVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWNoZWNrYm94LWJhY2tncm91bmRbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWNoZWNrYm94LWNoZWNrZWQubWF0LXByaW1hcnlbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1jaGVja2JveC1iYWNrZ3JvdW5kW19uZ2NvbnRlbnQtJUNPTVAlXXtiYWNrZ3JvdW5kLWNvbG9yOiNmNTdjMDB9Lm1hdC1jaGVja2JveC1pbmRldGVybWluYXRlLm1hdC1hY2NlbnRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1jaGVja2JveC1iYWNrZ3JvdW5kW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1jaGVja2JveC1jaGVja2VkLm1hdC1hY2NlbnRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1jaGVja2JveC1iYWNrZ3JvdW5kW19uZ2NvbnRlbnQtJUNPTVAlXXtiYWNrZ3JvdW5kLWNvbG9yOiNmZjk4MDB9Lm1hdC1jaGVja2JveC1pbmRldGVybWluYXRlLm1hdC13YXJuW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtY2hlY2tib3gtYmFja2dyb3VuZFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtY2hlY2tib3gtY2hlY2tlZC5tYXQtd2Fybltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWNoZWNrYm94LWJhY2tncm91bmRbX25nY29udGVudC0lQ09NUCVde2JhY2tncm91bmQtY29sb3I6I2Y0NDMzNn0ubWF0LWNoZWNrYm94LWRpc2FibGVkLm1hdC1jaGVja2JveC1jaGVja2VkW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtY2hlY2tib3gtYmFja2dyb3VuZFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtY2hlY2tib3gtZGlzYWJsZWQubWF0LWNoZWNrYm94LWluZGV0ZXJtaW5hdGVbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1jaGVja2JveC1iYWNrZ3JvdW5kW19uZ2NvbnRlbnQtJUNPTVAlXXtiYWNrZ3JvdW5kLWNvbG9yOiNiMGIwYjB9Lm1hdC1jaGVja2JveC1kaXNhYmxlZFtfbmdjb250ZW50LSVDT01QJV06bm90KC5tYXQtY2hlY2tib3gtY2hlY2tlZCkgICAubWF0LWNoZWNrYm94LWZyYW1lW19uZ2NvbnRlbnQtJUNPTVAlXXtib3JkZXItY29sb3I6I2IwYjBiMH0ubWF0LWNoZWNrYm94LWRpc2FibGVkW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtY2hlY2tib3gtbGFiZWxbX25nY29udGVudC0lQ09NUCVde2NvbG9yOiM2MTYxNjF9Lm1hdC1jaGVja2JveFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXJpcHBsZS1lbGVtZW50W19uZ2NvbnRlbnQtJUNPTVAlXXtiYWNrZ3JvdW5kLWNvbG9yOiMwMDB9Lm1hdC1jaGVja2JveC1jaGVja2VkW19uZ2NvbnRlbnQtJUNPTVAlXTpub3QoLm1hdC1jaGVja2JveC1kaXNhYmxlZCkubWF0LXByaW1hcnkgICAubWF0LXJpcHBsZS1lbGVtZW50W19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1jaGVja2JveFtfbmdjb250ZW50LSVDT01QJV06YWN0aXZlOm5vdCgubWF0LWNoZWNrYm94LWRpc2FibGVkKS5tYXQtcHJpbWFyeSAgIC5tYXQtcmlwcGxlLWVsZW1lbnRbX25nY29udGVudC0lQ09NUCVde2JhY2tncm91bmQ6I2Y1N2MwMH0ubWF0LWNoZWNrYm94LWNoZWNrZWRbX25nY29udGVudC0lQ09NUCVdOm5vdCgubWF0LWNoZWNrYm94LWRpc2FibGVkKS5tYXQtYWNjZW50ICAgLm1hdC1yaXBwbGUtZWxlbWVudFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtY2hlY2tib3hbX25nY29udGVudC0lQ09NUCVdOmFjdGl2ZTpub3QoLm1hdC1jaGVja2JveC1kaXNhYmxlZCkubWF0LWFjY2VudCAgIC5tYXQtcmlwcGxlLWVsZW1lbnRbX25nY29udGVudC0lQ09NUCVde2JhY2tncm91bmQ6I2ZmOTgwMH0ubWF0LWNoZWNrYm94LWNoZWNrZWRbX25nY29udGVudC0lQ09NUCVdOm5vdCgubWF0LWNoZWNrYm94LWRpc2FibGVkKS5tYXQtd2FybiAgIC5tYXQtcmlwcGxlLWVsZW1lbnRbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWNoZWNrYm94W19uZ2NvbnRlbnQtJUNPTVAlXTphY3RpdmU6bm90KC5tYXQtY2hlY2tib3gtZGlzYWJsZWQpLm1hdC13YXJuICAgLm1hdC1yaXBwbGUtZWxlbWVudFtfbmdjb250ZW50LSVDT01QJV17YmFja2dyb3VuZDojZjQ0MzM2fS5tYXQtY2hpcC5tYXQtc3RhbmRhcmQtY2hpcFtfbmdjb250ZW50LSVDT01QJV17YmFja2dyb3VuZC1jb2xvcjojZTBlMGUwO2NvbG9yOiMyMTIxMjF9Lm1hdC1jaGlwLm1hdC1zdGFuZGFyZC1jaGlwW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtY2hpcC1yZW1vdmVbX25nY29udGVudC0lQ09NUCVde2NvbG9yOiMyMTIxMjE7b3BhY2l0eTouNH0ubWF0LWNoaXAubWF0LXN0YW5kYXJkLWNoaXBbX25nY29udGVudC0lQ09NUCVdOm5vdCgubWF0LWNoaXAtZGlzYWJsZWQpOmFjdGl2ZXtib3gtc2hhZG93OjBweCAzcHggM3B4IC0ycHggcmdiYSgwLCAwLCAwLCAwLjIpLDBweCAzcHggNHB4IDBweCByZ2JhKDAsIDAsIDAsIDAuMTQpLDBweCAxcHggOHB4IDBweCByZ2JhKDAsIDAsIDAsIDAuMTIpfS5tYXQtY2hpcC5tYXQtc3RhbmRhcmQtY2hpcFtfbmdjb250ZW50LSVDT01QJV06bm90KC5tYXQtY2hpcC1kaXNhYmxlZCkgICAubWF0LWNoaXAtcmVtb3ZlW19uZ2NvbnRlbnQtJUNPTVAlXTpob3ZlcntvcGFjaXR5Oi41NH0ubWF0LWNoaXAubWF0LXN0YW5kYXJkLWNoaXAubWF0LWNoaXAtZGlzYWJsZWRbX25nY29udGVudC0lQ09NUCVde29wYWNpdHk6LjR9Lm1hdC1jaGlwLm1hdC1zdGFuZGFyZC1jaGlwW19uZ2NvbnRlbnQtJUNPTVAlXTo6YWZ0ZXJ7YmFja2dyb3VuZDojMDAwfS5tYXQtY2hpcC5tYXQtc3RhbmRhcmQtY2hpcC5tYXQtY2hpcC1zZWxlY3RlZC5tYXQtcHJpbWFyeVtfbmdjb250ZW50LSVDT01QJV17YmFja2dyb3VuZC1jb2xvcjojZjU3YzAwO2NvbG9yOiNmZmZ9Lm1hdC1jaGlwLm1hdC1zdGFuZGFyZC1jaGlwLm1hdC1jaGlwLXNlbGVjdGVkLm1hdC1wcmltYXJ5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtY2hpcC1yZW1vdmVbX25nY29udGVudC0lQ09NUCVde2NvbG9yOiNmZmY7b3BhY2l0eTouNH0ubWF0LWNoaXAubWF0LXN0YW5kYXJkLWNoaXAubWF0LWNoaXAtc2VsZWN0ZWQubWF0LXByaW1hcnlbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1yaXBwbGUtZWxlbWVudFtfbmdjb250ZW50LSVDT01QJV17YmFja2dyb3VuZC1jb2xvcjpyZ2JhKDI1NSwyNTUsMjU1LC4xKX0ubWF0LWNoaXAubWF0LXN0YW5kYXJkLWNoaXAubWF0LWNoaXAtc2VsZWN0ZWQubWF0LXdhcm5bX25nY29udGVudC0lQ09NUCVde2JhY2tncm91bmQtY29sb3I6I2Y0NDMzNjtjb2xvcjojZmZmfS5tYXQtY2hpcC5tYXQtc3RhbmRhcmQtY2hpcC5tYXQtY2hpcC1zZWxlY3RlZC5tYXQtd2Fybltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWNoaXAtcmVtb3ZlW19uZ2NvbnRlbnQtJUNPTVAlXXtjb2xvcjojZmZmO29wYWNpdHk6LjR9Lm1hdC1jaGlwLm1hdC1zdGFuZGFyZC1jaGlwLm1hdC1jaGlwLXNlbGVjdGVkLm1hdC13YXJuW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtcmlwcGxlLWVsZW1lbnRbX25nY29udGVudC0lQ09NUCVde2JhY2tncm91bmQtY29sb3I6cmdiYSgyNTUsMjU1LDI1NSwuMSl9Lm1hdC1jaGlwLm1hdC1zdGFuZGFyZC1jaGlwLm1hdC1jaGlwLXNlbGVjdGVkLm1hdC1hY2NlbnRbX25nY29udGVudC0lQ09NUCVde2JhY2tncm91bmQtY29sb3I6I2ZmOTgwMDtjb2xvcjojZmZmfS5tYXQtY2hpcC5tYXQtc3RhbmRhcmQtY2hpcC5tYXQtY2hpcC1zZWxlY3RlZC5tYXQtYWNjZW50W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtY2hpcC1yZW1vdmVbX25nY29udGVudC0lQ09NUCVde2NvbG9yOiNmZmY7b3BhY2l0eTouNH0ubWF0LWNoaXAubWF0LXN0YW5kYXJkLWNoaXAubWF0LWNoaXAtc2VsZWN0ZWQubWF0LWFjY2VudFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXJpcHBsZS1lbGVtZW50W19uZ2NvbnRlbnQtJUNPTVAlXXtiYWNrZ3JvdW5kLWNvbG9yOnJnYmEoMjU1LDI1NSwyNTUsLjEpfS5tYXQtdGFibGVbX25nY29udGVudC0lQ09NUCVde2JhY2tncm91bmQ6I2ZmZn0ubWF0LXRhYmxlW19uZ2NvbnRlbnQtJUNPTVAlXSAgIHRoZWFkW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10YWJsZVtfbmdjb250ZW50LSVDT01QJV0gICB0Ym9keVtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdGFibGVbX25nY29udGVudC0lQ09NUCVdICAgdGZvb3RbX25nY29udGVudC0lQ09NUCVdLCBtYXQtaGVhZGVyLXJvd1tfbmdjb250ZW50LSVDT01QJV0sIG1hdC1yb3dbX25nY29udGVudC0lQ09NUCVdLCBtYXQtZm9vdGVyLXJvd1tfbmdjb250ZW50LSVDT01QJV0sIFttYXQtaGVhZGVyLXJvd11bX25nY29udGVudC0lQ09NUCVdLCBbbWF0LXJvd11bX25nY29udGVudC0lQ09NUCVdLCBbbWF0LWZvb3Rlci1yb3ddW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10YWJsZS1zdGlja3lbX25nY29udGVudC0lQ09NUCVde2JhY2tncm91bmQ6aW5oZXJpdH1tYXQtcm93W19uZ2NvbnRlbnQtJUNPTVAlXSwgbWF0LWhlYWRlci1yb3dbX25nY29udGVudC0lQ09NUCVdLCBtYXQtZm9vdGVyLXJvd1tfbmdjb250ZW50LSVDT01QJV0sIHRoLm1hdC1oZWFkZXItY2VsbFtfbmdjb250ZW50LSVDT01QJV0sIHRkLm1hdC1jZWxsW19uZ2NvbnRlbnQtJUNPTVAlXSwgdGQubWF0LWZvb3Rlci1jZWxsW19uZ2NvbnRlbnQtJUNPTVAlXXtib3JkZXItYm90dG9tLWNvbG9yOnJnYmEoMCwwLDAsLjEyKX0ubWF0LWhlYWRlci1jZWxsW19uZ2NvbnRlbnQtJUNPTVAlXXtjb2xvcjojNjE2MTYxfS5tYXQtY2VsbFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtZm9vdGVyLWNlbGxbX25nY29udGVudC0lQ09NUCVde2NvbG9yOiMyMTIxMjF9Lm1hdC1jYWxlbmRhci1hcnJvd1tfbmdjb250ZW50LSVDT01QJV17Ym9yZGVyLXRvcC1jb2xvcjpyZ2JhKDAsMCwwLC41NCl9Lm1hdC1kYXRlcGlja2VyLXRvZ2dsZVtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtZGF0ZXBpY2tlci1jb250ZW50W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtY2FsZW5kYXItbmV4dC1idXR0b25bX25nY29udGVudC0lQ09NUCVdLCAubWF0LWRhdGVwaWNrZXItY29udGVudFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWNhbGVuZGFyLXByZXZpb3VzLWJ1dHRvbltfbmdjb250ZW50LSVDT01QJV17Y29sb3I6cmdiYSgwLDAsMCwuNTQpfS5tYXQtY2FsZW5kYXItdGFibGUtaGVhZGVyW19uZ2NvbnRlbnQtJUNPTVAlXXtjb2xvcjpyZ2JhKDAsMCwwLC4zOCl9Lm1hdC1jYWxlbmRhci10YWJsZS1oZWFkZXItZGl2aWRlcltfbmdjb250ZW50LSVDT01QJV06OmFmdGVye2JhY2tncm91bmQ6cmdiYSgwLDAsMCwuMTIpfS5tYXQtY2FsZW5kYXItYm9keS1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17Y29sb3I6IzYxNjE2MX0ubWF0LWNhbGVuZGFyLWJvZHktY2VsbC1jb250ZW50W19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1kYXRlLXJhbmdlLWlucHV0LXNlcGFyYXRvcltfbmdjb250ZW50LSVDT01QJV17Y29sb3I6IzIxMjEyMTtib3JkZXItY29sb3I6dHJhbnNwYXJlbnR9Lm1hdC1jYWxlbmRhci1ib2R5LWRpc2FibGVkW19uZ2NvbnRlbnQtJUNPTVAlXSA+IC5tYXQtY2FsZW5kYXItYm9keS1jZWxsLWNvbnRlbnRbX25nY29udGVudC0lQ09NUCVdOm5vdCgubWF0LWNhbGVuZGFyLWJvZHktc2VsZWN0ZWQpOm5vdCgubWF0LWNhbGVuZGFyLWJvZHktY29tcGFyaXNvbi1pZGVudGljYWwpe2NvbG9yOiM3NTc1NzV9Lm1hdC1mb3JtLWZpZWxkLWRpc2FibGVkW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZGF0ZS1yYW5nZS1pbnB1dC1zZXBhcmF0b3JbX25nY29udGVudC0lQ09NUCVde2NvbG9yOiM3NTc1NzV9Lm1hdC1jYWxlbmRhci1ib2R5LWNlbGxbX25nY29udGVudC0lQ09NUCVdOm5vdCgubWF0LWNhbGVuZGFyLWJvZHktZGlzYWJsZWQpOmhvdmVyID4gLm1hdC1jYWxlbmRhci1ib2R5LWNlbGwtY29udGVudFtfbmdjb250ZW50LSVDT01QJV06bm90KC5tYXQtY2FsZW5kYXItYm9keS1zZWxlY3RlZCk6bm90KC5tYXQtY2FsZW5kYXItYm9keS1jb21wYXJpc29uLWlkZW50aWNhbCksIC5jZGsta2V5Ym9hcmQtZm9jdXNlZFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWNhbGVuZGFyLWJvZHktYWN0aXZlW19uZ2NvbnRlbnQtJUNPTVAlXSA+IC5tYXQtY2FsZW5kYXItYm9keS1jZWxsLWNvbnRlbnRbX25nY29udGVudC0lQ09NUCVdOm5vdCgubWF0LWNhbGVuZGFyLWJvZHktc2VsZWN0ZWQpOm5vdCgubWF0LWNhbGVuZGFyLWJvZHktY29tcGFyaXNvbi1pZGVudGljYWwpLCAuY2RrLXByb2dyYW0tZm9jdXNlZFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWNhbGVuZGFyLWJvZHktYWN0aXZlW19uZ2NvbnRlbnQtJUNPTVAlXSA+IC5tYXQtY2FsZW5kYXItYm9keS1jZWxsLWNvbnRlbnRbX25nY29udGVudC0lQ09NUCVdOm5vdCgubWF0LWNhbGVuZGFyLWJvZHktc2VsZWN0ZWQpOm5vdCgubWF0LWNhbGVuZGFyLWJvZHktY29tcGFyaXNvbi1pZGVudGljYWwpe2JhY2tncm91bmQtY29sb3I6cmdiYSgwLDAsMCwuMDQpfS5tYXQtY2FsZW5kYXItYm9keS1pbi1wcmV2aWV3W19uZ2NvbnRlbnQtJUNPTVAlXXtjb2xvcjpyZ2JhKDAsMCwwLC4yNCl9Lm1hdC1jYWxlbmRhci1ib2R5LXRvZGF5W19uZ2NvbnRlbnQtJUNPTVAlXTpub3QoLm1hdC1jYWxlbmRhci1ib2R5LXNlbGVjdGVkKTpub3QoLm1hdC1jYWxlbmRhci1ib2R5LWNvbXBhcmlzb24taWRlbnRpY2FsKXtib3JkZXItY29sb3I6cmdiYSgwLDAsMCwuMzgpfS5tYXQtY2FsZW5kYXItYm9keS1kaXNhYmxlZFtfbmdjb250ZW50LSVDT01QJV0gPiAubWF0LWNhbGVuZGFyLWJvZHktdG9kYXlbX25nY29udGVudC0lQ09NUCVdOm5vdCgubWF0LWNhbGVuZGFyLWJvZHktc2VsZWN0ZWQpOm5vdCgubWF0LWNhbGVuZGFyLWJvZHktY29tcGFyaXNvbi1pZGVudGljYWwpe2JvcmRlci1jb2xvcjpyZ2JhKDAsMCwwLC4xOCl9Lm1hdC1jYWxlbmRhci1ib2R5LWluLXJhbmdlW19uZ2NvbnRlbnQtJUNPTVAlXTo6YmVmb3Jle2JhY2tncm91bmQ6cmdiYSgyNDUsMTI0LDAsLjIpfS5tYXQtY2FsZW5kYXItYm9keS1jb21wYXJpc29uLWlkZW50aWNhbFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtY2FsZW5kYXItYm9keS1pbi1jb21wYXJpc29uLXJhbmdlW19uZ2NvbnRlbnQtJUNPTVAlXTo6YmVmb3Jle2JhY2tncm91bmQ6cmdiYSgyNDksMTcxLDAsLjIpfS5tYXQtY2FsZW5kYXItYm9keS1jb21wYXJpc29uLWJyaWRnZS1zdGFydFtfbmdjb250ZW50LSVDT01QJV06OmJlZm9yZSwgW2Rpcj1ydGxdW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtY2FsZW5kYXItYm9keS1jb21wYXJpc29uLWJyaWRnZS1lbmRbX25nY29udGVudC0lQ09NUCVdOjpiZWZvcmV7YmFja2dyb3VuZDpsaW5lYXItZ3JhZGllbnQodG8gcmlnaHQsIHJnYmEoMjQ1LCAxMjQsIDAsIDAuMikgNTAlLCByZ2JhKDI0OSwgMTcxLCAwLCAwLjIpIDUwJSl9Lm1hdC1jYWxlbmRhci1ib2R5LWNvbXBhcmlzb24tYnJpZGdlLWVuZFtfbmdjb250ZW50LSVDT01QJV06OmJlZm9yZSwgW2Rpcj1ydGxdW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtY2FsZW5kYXItYm9keS1jb21wYXJpc29uLWJyaWRnZS1zdGFydFtfbmdjb250ZW50LSVDT01QJV06OmJlZm9yZXtiYWNrZ3JvdW5kOmxpbmVhci1ncmFkaWVudCh0byBsZWZ0LCByZ2JhKDI0NSwgMTI0LCAwLCAwLjIpIDUwJSwgcmdiYSgyNDksIDE3MSwgMCwgMC4yKSA1MCUpfS5tYXQtY2FsZW5kYXItYm9keS1pbi1yYW5nZVtfbmdjb250ZW50LSVDT01QJV0gPiAubWF0LWNhbGVuZGFyLWJvZHktY29tcGFyaXNvbi1pZGVudGljYWxbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWNhbGVuZGFyLWJvZHktaW4tY29tcGFyaXNvbi1yYW5nZS5tYXQtY2FsZW5kYXItYm9keS1pbi1yYW5nZVtfbmdjb250ZW50LSVDT01QJV06OmFmdGVye2JhY2tncm91bmQ6I2E4ZGFiNX0ubWF0LWNhbGVuZGFyLWJvZHktY29tcGFyaXNvbi1pZGVudGljYWwubWF0LWNhbGVuZGFyLWJvZHktc2VsZWN0ZWRbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWNhbGVuZGFyLWJvZHktaW4tY29tcGFyaXNvbi1yYW5nZVtfbmdjb250ZW50LSVDT01QJV0gPiAubWF0LWNhbGVuZGFyLWJvZHktc2VsZWN0ZWRbX25nY29udGVudC0lQ09NUCVde2JhY2tncm91bmQ6IzQ2YTM1ZX0ubWF0LWNhbGVuZGFyLWJvZHktc2VsZWN0ZWRbX25nY29udGVudC0lQ09NUCVde2JhY2tncm91bmQtY29sb3I6I2Y1N2MwMDtjb2xvcjojZmZmfS5tYXQtY2FsZW5kYXItYm9keS1kaXNhYmxlZFtfbmdjb250ZW50LSVDT01QJV0gPiAubWF0LWNhbGVuZGFyLWJvZHktc2VsZWN0ZWRbX25nY29udGVudC0lQ09NUCVde2JhY2tncm91bmQtY29sb3I6cmdiYSgyNDUsMTI0LDAsLjQpfS5tYXQtY2FsZW5kYXItYm9keS10b2RheS5tYXQtY2FsZW5kYXItYm9keS1zZWxlY3RlZFtfbmdjb250ZW50LSVDT01QJV17Ym94LXNoYWRvdzppbnNldCAwIDAgMCAxcHggI2ZmZn0ubWF0LWRhdGVwaWNrZXItY29udGVudFtfbmdjb250ZW50LSVDT01QJV17Ym94LXNoYWRvdzowcHggMnB4IDRweCAtMXB4IHJnYmEoMCwgMCwgMCwgMC4yKSwwcHggNHB4IDVweCAwcHggcmdiYSgwLCAwLCAwLCAwLjE0KSwwcHggMXB4IDEwcHggMHB4IHJnYmEoMCwgMCwgMCwgMC4xMik7YmFja2dyb3VuZC1jb2xvcjojZmZmO2NvbG9yOiMyMTIxMjF9Lm1hdC1kYXRlcGlja2VyLWNvbnRlbnQubWF0LWFjY2VudFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWNhbGVuZGFyLWJvZHktaW4tcmFuZ2VbX25nY29udGVudC0lQ09NUCVdOjpiZWZvcmV7YmFja2dyb3VuZDpyZ2JhKDI1NSwxNTIsMCwuMil9Lm1hdC1kYXRlcGlja2VyLWNvbnRlbnQubWF0LWFjY2VudFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWNhbGVuZGFyLWJvZHktY29tcGFyaXNvbi1pZGVudGljYWxbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWRhdGVwaWNrZXItY29udGVudC5tYXQtYWNjZW50W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtY2FsZW5kYXItYm9keS1pbi1jb21wYXJpc29uLXJhbmdlW19uZ2NvbnRlbnQtJUNPTVAlXTo6YmVmb3Jle2JhY2tncm91bmQ6cmdiYSgyNDksMTcxLDAsLjIpfS5tYXQtZGF0ZXBpY2tlci1jb250ZW50Lm1hdC1hY2NlbnRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1jYWxlbmRhci1ib2R5LWNvbXBhcmlzb24tYnJpZGdlLXN0YXJ0W19uZ2NvbnRlbnQtJUNPTVAlXTo6YmVmb3JlLCAubWF0LWRhdGVwaWNrZXItY29udGVudC5tYXQtYWNjZW50W19uZ2NvbnRlbnQtJUNPTVAlXSAgIFtkaXI9cnRsXVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWNhbGVuZGFyLWJvZHktY29tcGFyaXNvbi1icmlkZ2UtZW5kW19uZ2NvbnRlbnQtJUNPTVAlXTo6YmVmb3Jle2JhY2tncm91bmQ6bGluZWFyLWdyYWRpZW50KHRvIHJpZ2h0LCByZ2JhKDI1NSwgMTUyLCAwLCAwLjIpIDUwJSwgcmdiYSgyNDksIDE3MSwgMCwgMC4yKSA1MCUpfS5tYXQtZGF0ZXBpY2tlci1jb250ZW50Lm1hdC1hY2NlbnRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1jYWxlbmRhci1ib2R5LWNvbXBhcmlzb24tYnJpZGdlLWVuZFtfbmdjb250ZW50LSVDT01QJV06OmJlZm9yZSwgLm1hdC1kYXRlcGlja2VyLWNvbnRlbnQubWF0LWFjY2VudFtfbmdjb250ZW50LSVDT01QJV0gICBbZGlyPXJ0bF1bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1jYWxlbmRhci1ib2R5LWNvbXBhcmlzb24tYnJpZGdlLXN0YXJ0W19uZ2NvbnRlbnQtJUNPTVAlXTo6YmVmb3Jle2JhY2tncm91bmQ6bGluZWFyLWdyYWRpZW50KHRvIGxlZnQsIHJnYmEoMjU1LCAxNTIsIDAsIDAuMikgNTAlLCByZ2JhKDI0OSwgMTcxLCAwLCAwLjIpIDUwJSl9Lm1hdC1kYXRlcGlja2VyLWNvbnRlbnQubWF0LWFjY2VudFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWNhbGVuZGFyLWJvZHktaW4tcmFuZ2VbX25nY29udGVudC0lQ09NUCVdID4gLm1hdC1jYWxlbmRhci1ib2R5LWNvbXBhcmlzb24taWRlbnRpY2FsW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1kYXRlcGlja2VyLWNvbnRlbnQubWF0LWFjY2VudFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWNhbGVuZGFyLWJvZHktaW4tY29tcGFyaXNvbi1yYW5nZS5tYXQtY2FsZW5kYXItYm9keS1pbi1yYW5nZVtfbmdjb250ZW50LSVDT01QJV06OmFmdGVye2JhY2tncm91bmQ6I2E4ZGFiNX0ubWF0LWRhdGVwaWNrZXItY29udGVudC5tYXQtYWNjZW50W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtY2FsZW5kYXItYm9keS1jb21wYXJpc29uLWlkZW50aWNhbC5tYXQtY2FsZW5kYXItYm9keS1zZWxlY3RlZFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtZGF0ZXBpY2tlci1jb250ZW50Lm1hdC1hY2NlbnRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1jYWxlbmRhci1ib2R5LWluLWNvbXBhcmlzb24tcmFuZ2VbX25nY29udGVudC0lQ09NUCVdID4gLm1hdC1jYWxlbmRhci1ib2R5LXNlbGVjdGVkW19uZ2NvbnRlbnQtJUNPTVAlXXtiYWNrZ3JvdW5kOiM0NmEzNWV9Lm1hdC1kYXRlcGlja2VyLWNvbnRlbnQubWF0LWFjY2VudFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWNhbGVuZGFyLWJvZHktc2VsZWN0ZWRbX25nY29udGVudC0lQ09NUCVde2JhY2tncm91bmQtY29sb3I6I2ZmOTgwMDtjb2xvcjojZmZmfS5tYXQtZGF0ZXBpY2tlci1jb250ZW50Lm1hdC1hY2NlbnRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1jYWxlbmRhci1ib2R5LWRpc2FibGVkW19uZ2NvbnRlbnQtJUNPTVAlXSA+IC5tYXQtY2FsZW5kYXItYm9keS1zZWxlY3RlZFtfbmdjb250ZW50LSVDT01QJV17YmFja2dyb3VuZC1jb2xvcjpyZ2JhKDI1NSwxNTIsMCwuNCl9Lm1hdC1kYXRlcGlja2VyLWNvbnRlbnQubWF0LWFjY2VudFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWNhbGVuZGFyLWJvZHktdG9kYXkubWF0LWNhbGVuZGFyLWJvZHktc2VsZWN0ZWRbX25nY29udGVudC0lQ09NUCVde2JveC1zaGFkb3c6aW5zZXQgMCAwIDAgMXB4ICNmZmZ9Lm1hdC1kYXRlcGlja2VyLWNvbnRlbnQubWF0LXdhcm5bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1jYWxlbmRhci1ib2R5LWluLXJhbmdlW19uZ2NvbnRlbnQtJUNPTVAlXTo6YmVmb3Jle2JhY2tncm91bmQ6cmdiYSgyNDQsNjcsNTQsLjIpfS5tYXQtZGF0ZXBpY2tlci1jb250ZW50Lm1hdC13YXJuW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtY2FsZW5kYXItYm9keS1jb21wYXJpc29uLWlkZW50aWNhbFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtZGF0ZXBpY2tlci1jb250ZW50Lm1hdC13YXJuW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtY2FsZW5kYXItYm9keS1pbi1jb21wYXJpc29uLXJhbmdlW19uZ2NvbnRlbnQtJUNPTVAlXTo6YmVmb3Jle2JhY2tncm91bmQ6cmdiYSgyNDksMTcxLDAsLjIpfS5tYXQtZGF0ZXBpY2tlci1jb250ZW50Lm1hdC13YXJuW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtY2FsZW5kYXItYm9keS1jb21wYXJpc29uLWJyaWRnZS1zdGFydFtfbmdjb250ZW50LSVDT01QJV06OmJlZm9yZSwgLm1hdC1kYXRlcGlja2VyLWNvbnRlbnQubWF0LXdhcm5bX25nY29udGVudC0lQ09NUCVdICAgW2Rpcj1ydGxdW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtY2FsZW5kYXItYm9keS1jb21wYXJpc29uLWJyaWRnZS1lbmRbX25nY29udGVudC0lQ09NUCVdOjpiZWZvcmV7YmFja2dyb3VuZDpsaW5lYXItZ3JhZGllbnQodG8gcmlnaHQsIHJnYmEoMjQ0LCA2NywgNTQsIDAuMikgNTAlLCByZ2JhKDI0OSwgMTcxLCAwLCAwLjIpIDUwJSl9Lm1hdC1kYXRlcGlja2VyLWNvbnRlbnQubWF0LXdhcm5bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1jYWxlbmRhci1ib2R5LWNvbXBhcmlzb24tYnJpZGdlLWVuZFtfbmdjb250ZW50LSVDT01QJV06OmJlZm9yZSwgLm1hdC1kYXRlcGlja2VyLWNvbnRlbnQubWF0LXdhcm5bX25nY29udGVudC0lQ09NUCVdICAgW2Rpcj1ydGxdW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtY2FsZW5kYXItYm9keS1jb21wYXJpc29uLWJyaWRnZS1zdGFydFtfbmdjb250ZW50LSVDT01QJV06OmJlZm9yZXtiYWNrZ3JvdW5kOmxpbmVhci1ncmFkaWVudCh0byBsZWZ0LCByZ2JhKDI0NCwgNjcsIDU0LCAwLjIpIDUwJSwgcmdiYSgyNDksIDE3MSwgMCwgMC4yKSA1MCUpfS5tYXQtZGF0ZXBpY2tlci1jb250ZW50Lm1hdC13YXJuW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtY2FsZW5kYXItYm9keS1pbi1yYW5nZVtfbmdjb250ZW50LSVDT01QJV0gPiAubWF0LWNhbGVuZGFyLWJvZHktY29tcGFyaXNvbi1pZGVudGljYWxbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWRhdGVwaWNrZXItY29udGVudC5tYXQtd2Fybltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWNhbGVuZGFyLWJvZHktaW4tY29tcGFyaXNvbi1yYW5nZS5tYXQtY2FsZW5kYXItYm9keS1pbi1yYW5nZVtfbmdjb250ZW50LSVDT01QJV06OmFmdGVye2JhY2tncm91bmQ6I2E4ZGFiNX0ubWF0LWRhdGVwaWNrZXItY29udGVudC5tYXQtd2Fybltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWNhbGVuZGFyLWJvZHktY29tcGFyaXNvbi1pZGVudGljYWwubWF0LWNhbGVuZGFyLWJvZHktc2VsZWN0ZWRbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWRhdGVwaWNrZXItY29udGVudC5tYXQtd2Fybltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWNhbGVuZGFyLWJvZHktaW4tY29tcGFyaXNvbi1yYW5nZVtfbmdjb250ZW50LSVDT01QJV0gPiAubWF0LWNhbGVuZGFyLWJvZHktc2VsZWN0ZWRbX25nY29udGVudC0lQ09NUCVde2JhY2tncm91bmQ6IzQ2YTM1ZX0ubWF0LWRhdGVwaWNrZXItY29udGVudC5tYXQtd2Fybltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWNhbGVuZGFyLWJvZHktc2VsZWN0ZWRbX25nY29udGVudC0lQ09NUCVde2JhY2tncm91bmQtY29sb3I6I2Y0NDMzNjtjb2xvcjojZmZmfS5tYXQtZGF0ZXBpY2tlci1jb250ZW50Lm1hdC13YXJuW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtY2FsZW5kYXItYm9keS1kaXNhYmxlZFtfbmdjb250ZW50LSVDT01QJV0gPiAubWF0LWNhbGVuZGFyLWJvZHktc2VsZWN0ZWRbX25nY29udGVudC0lQ09NUCVde2JhY2tncm91bmQtY29sb3I6cmdiYSgyNDQsNjcsNTQsLjQpfS5tYXQtZGF0ZXBpY2tlci1jb250ZW50Lm1hdC13YXJuW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtY2FsZW5kYXItYm9keS10b2RheS5tYXQtY2FsZW5kYXItYm9keS1zZWxlY3RlZFtfbmdjb250ZW50LSVDT01QJV17Ym94LXNoYWRvdzppbnNldCAwIDAgMCAxcHggI2ZmZn0ubWF0LWRhdGVwaWNrZXItY29udGVudC10b3VjaFtfbmdjb250ZW50LSVDT01QJV17Ym94LXNoYWRvdzowcHggMHB4IDBweCAwcHggcmdiYSgwLCAwLCAwLCAwLjIpLDBweCAwcHggMHB4IDBweCByZ2JhKDAsIDAsIDAsIDAuMTQpLDBweCAwcHggMHB4IDBweCByZ2JhKDAsIDAsIDAsIDAuMTIpfS5tYXQtZGF0ZXBpY2tlci10b2dnbGUtYWN0aXZlW19uZ2NvbnRlbnQtJUNPTVAlXXtjb2xvcjojZjU3YzAwfS5tYXQtZGF0ZXBpY2tlci10b2dnbGUtYWN0aXZlLm1hdC1hY2NlbnRbX25nY29udGVudC0lQ09NUCVde2NvbG9yOiNmZjk4MDB9Lm1hdC1kYXRlcGlja2VyLXRvZ2dsZS1hY3RpdmUubWF0LXdhcm5bX25nY29udGVudC0lQ09NUCVde2NvbG9yOiNmNDQzMzZ9Lm1hdC1kYXRlLXJhbmdlLWlucHV0LWlubmVyW2Rpc2FibGVkXVtfbmdjb250ZW50LSVDT01QJV17Y29sb3I6Izc1NzU3NX0ubWF0LWRpYWxvZy1jb250YWluZXJbX25nY29udGVudC0lQ09NUCVde2JveC1zaGFkb3c6MHB4IDExcHggMTVweCAtN3B4IHJnYmEoMCwgMCwgMCwgMC4yKSwwcHggMjRweCAzOHB4IDNweCByZ2JhKDAsIDAsIDAsIDAuMTQpLDBweCA5cHggNDZweCA4cHggcmdiYSgwLCAwLCAwLCAwLjEyKTtiYWNrZ3JvdW5kOiNmZmY7Y29sb3I6IzIxMjEyMX0ubWF0LWRpdmlkZXJbX25nY29udGVudC0lQ09NUCVde2JvcmRlci10b3AtY29sb3I6cmdiYSgwLDAsMCwuMTIpfS5tYXQtZGl2aWRlci12ZXJ0aWNhbFtfbmdjb250ZW50LSVDT01QJV17Ym9yZGVyLXJpZ2h0LWNvbG9yOnJnYmEoMCwwLDAsLjEyKX0ubWF0LWV4cGFuc2lvbi1wYW5lbFtfbmdjb250ZW50LSVDT01QJV17YmFja2dyb3VuZDojZmZmO2NvbG9yOiMyMTIxMjF9Lm1hdC1leHBhbnNpb24tcGFuZWxbX25nY29udGVudC0lQ09NUCVdOm5vdChbY2xhc3MqPW1hdC1lbGV2YXRpb24tel0pe2JveC1zaGFkb3c6MHB4IDNweCAxcHggLTJweCByZ2JhKDAsIDAsIDAsIDAuMiksMHB4IDJweCAycHggMHB4IHJnYmEoMCwgMCwgMCwgMC4xNCksMHB4IDFweCA1cHggMHB4IHJnYmEoMCwgMCwgMCwgMC4xMil9Lm1hdC1hY3Rpb24tcm93W19uZ2NvbnRlbnQtJUNPTVAlXXtib3JkZXItdG9wLWNvbG9yOnJnYmEoMCwwLDAsLjEyKX0ubWF0LWV4cGFuc2lvbi1wYW5lbFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWV4cGFuc2lvbi1wYW5lbC1oZWFkZXIuY2RrLWtleWJvYXJkLWZvY3VzZWRbX25nY29udGVudC0lQ09NUCVdOm5vdChbYXJpYS1kaXNhYmxlZD10cnVlXSksIC5tYXQtZXhwYW5zaW9uLXBhbmVsW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZXhwYW5zaW9uLXBhbmVsLWhlYWRlci5jZGstcHJvZ3JhbS1mb2N1c2VkW19uZ2NvbnRlbnQtJUNPTVAlXTpub3QoW2FyaWEtZGlzYWJsZWQ9dHJ1ZV0pLCAubWF0LWV4cGFuc2lvbi1wYW5lbFtfbmdjb250ZW50LSVDT01QJV06bm90KC5tYXQtZXhwYW5kZWQpICAgLm1hdC1leHBhbnNpb24tcGFuZWwtaGVhZGVyW19uZ2NvbnRlbnQtJUNPTVAlXTpob3Zlcjpub3QoW2FyaWEtZGlzYWJsZWQ9dHJ1ZV0pe2JhY2tncm91bmQ6cmdiYSgwLDAsMCwuMDQpfUBtZWRpYShob3Zlcjogbm9uZSl7Lm1hdC1leHBhbnNpb24tcGFuZWxbX25nY29udGVudC0lQ09NUCVdOm5vdCgubWF0LWV4cGFuZGVkKTpub3QoW2FyaWEtZGlzYWJsZWQ9dHJ1ZV0pICAgLm1hdC1leHBhbnNpb24tcGFuZWwtaGVhZGVyW19uZ2NvbnRlbnQtJUNPTVAlXTpob3ZlcntiYWNrZ3JvdW5kOiNmZmZ9fS5tYXQtZXhwYW5zaW9uLXBhbmVsLWhlYWRlci10aXRsZVtfbmdjb250ZW50LSVDT01QJV17Y29sb3I6IzIxMjEyMX0ubWF0LWV4cGFuc2lvbi1wYW5lbC1oZWFkZXItZGVzY3JpcHRpb25bX25nY29udGVudC0lQ09NUCVdLCAubWF0LWV4cGFuc2lvbi1pbmRpY2F0b3JbX25nY29udGVudC0lQ09NUCVdOjphZnRlcntjb2xvcjojNjE2MTYxfS5tYXQtZXhwYW5zaW9uLXBhbmVsLWhlYWRlclthcmlhLWRpc2FibGVkPXRydWVdW19uZ2NvbnRlbnQtJUNPTVAlXXtjb2xvcjpyZ2JhKDAsMCwwLC4yNil9Lm1hdC1leHBhbnNpb24tcGFuZWwtaGVhZGVyW2FyaWEtZGlzYWJsZWQ9dHJ1ZV1bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1leHBhbnNpb24tcGFuZWwtaGVhZGVyLXRpdGxlW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1leHBhbnNpb24tcGFuZWwtaGVhZGVyW2FyaWEtZGlzYWJsZWQ9dHJ1ZV1bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1leHBhbnNpb24tcGFuZWwtaGVhZGVyLWRlc2NyaXB0aW9uW19uZ2NvbnRlbnQtJUNPTVAlXXtjb2xvcjppbmhlcml0fS5tYXQtZXhwYW5zaW9uLXBhbmVsLWhlYWRlcltfbmdjb250ZW50LSVDT01QJV17aGVpZ2h0OjQ4cHh9Lm1hdC1leHBhbnNpb24tcGFuZWwtaGVhZGVyLm1hdC1leHBhbmRlZFtfbmdjb250ZW50LSVDT01QJV17aGVpZ2h0OjY0cHh9Lm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXtjb2xvcjpyZ2JhKDk3LDk3LDk3LC42KX0ubWF0LWhpbnRbX25nY29udGVudC0lQ09NUCVde2NvbG9yOnJnYmEoOTcsOTcsOTcsLjYpfS5tYXQtZm9ybS1maWVsZC5tYXQtZm9jdXNlZFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVde2NvbG9yOiNmNTdjMDB9Lm1hdC1mb3JtLWZpZWxkLm1hdC1mb2N1c2VkW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbC5tYXQtYWNjZW50W19uZ2NvbnRlbnQtJUNPTVAlXXtjb2xvcjojZmY5ODAwfS5tYXQtZm9ybS1maWVsZC5tYXQtZm9jdXNlZFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWwubWF0LXdhcm5bX25nY29udGVudC0lQ09NUCVde2NvbG9yOiNmNDQzMzZ9Lm1hdC1mb2N1c2VkW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1yZXF1aXJlZC1tYXJrZXJbX25nY29udGVudC0lQ09NUCVde2NvbG9yOiNmZjk4MDB9Lm1hdC1mb3JtLWZpZWxkLXJpcHBsZVtfbmdjb250ZW50LSVDT01QJV17YmFja2dyb3VuZC1jb2xvcjpyZ2JhKDAsMCwwLC44Nyl9Lm1hdC1mb3JtLWZpZWxkLm1hdC1mb2N1c2VkW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1yaXBwbGVbX25nY29udGVudC0lQ09NUCVde2JhY2tncm91bmQtY29sb3I6I2Y1N2MwMH0ubWF0LWZvcm0tZmllbGQubWF0LWZvY3VzZWRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLXJpcHBsZS5tYXQtYWNjZW50W19uZ2NvbnRlbnQtJUNPTVAlXXtiYWNrZ3JvdW5kLWNvbG9yOiNmZjk4MDB9Lm1hdC1mb3JtLWZpZWxkLm1hdC1mb2N1c2VkW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1yaXBwbGUubWF0LXdhcm5bX25nY29udGVudC0lQ09NUCVde2JhY2tncm91bmQtY29sb3I6I2Y0NDMzNn0ubWF0LWZvcm0tZmllbGQtdHlwZS1tYXQtbmF0aXZlLXNlbGVjdC5tYXQtZm9jdXNlZFtfbmdjb250ZW50LSVDT01QJV06bm90KC5tYXQtZm9ybS1maWVsZC1pbnZhbGlkKSAgIC5tYXQtZm9ybS1maWVsZC1pbmZpeFtfbmdjb250ZW50LSVDT01QJV06OmFmdGVye2NvbG9yOiNmNTdjMDB9Lm1hdC1mb3JtLWZpZWxkLXR5cGUtbWF0LW5hdGl2ZS1zZWxlY3QubWF0LWZvY3VzZWRbX25nY29udGVudC0lQ09NUCVdOm5vdCgubWF0LWZvcm0tZmllbGQtaW52YWxpZCkubWF0LWFjY2VudCAgIC5tYXQtZm9ybS1maWVsZC1pbmZpeFtfbmdjb250ZW50LSVDT01QJV06OmFmdGVye2NvbG9yOiNmZjk4MDB9Lm1hdC1mb3JtLWZpZWxkLXR5cGUtbWF0LW5hdGl2ZS1zZWxlY3QubWF0LWZvY3VzZWRbX25nY29udGVudC0lQ09NUCVdOm5vdCgubWF0LWZvcm0tZmllbGQtaW52YWxpZCkubWF0LXdhcm4gICAubWF0LWZvcm0tZmllbGQtaW5maXhbX25nY29udGVudC0lQ09NUCVdOjphZnRlcntjb2xvcjojZjQ0MzM2fS5tYXQtZm9ybS1maWVsZC5tYXQtZm9ybS1maWVsZC1pbnZhbGlkW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17Y29sb3I6I2Y0NDMzNn0ubWF0LWZvcm0tZmllbGQubWF0LWZvcm0tZmllbGQtaW52YWxpZFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWwubWF0LWFjY2VudFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtZm9ybS1maWVsZC5tYXQtZm9ybS1maWVsZC1pbnZhbGlkW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtcmVxdWlyZWQtbWFya2VyW19uZ2NvbnRlbnQtJUNPTVAlXXtjb2xvcjojZjQ0MzM2fS5tYXQtZm9ybS1maWVsZC5tYXQtZm9ybS1maWVsZC1pbnZhbGlkW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1yaXBwbGVbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWZvcm0tZmllbGQubWF0LWZvcm0tZmllbGQtaW52YWxpZFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtcmlwcGxlLm1hdC1hY2NlbnRbX25nY29udGVudC0lQ09NUCVde2JhY2tncm91bmQtY29sb3I6I2Y0NDMzNn0ubWF0LWVycm9yW19uZ2NvbnRlbnQtJUNPTVAlXXtjb2xvcjojZjQ0MzM2fS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWxlZ2FjeVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVde2NvbG9yOiM2MTYxNjF9Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtbGVnYWN5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaGludFtfbmdjb250ZW50LSVDT01QJV17Y29sb3I6IzYxNjE2MX0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1sZWdhY3lbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLXVuZGVybGluZVtfbmdjb250ZW50LSVDT01QJV17YmFja2dyb3VuZC1jb2xvcjpyZ2JhKDAsMCwwLC40Mil9Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtbGVnYWN5Lm1hdC1mb3JtLWZpZWxkLWRpc2FibGVkW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC11bmRlcmxpbmVbX25nY29udGVudC0lQ09NUCVde2JhY2tncm91bmQtaW1hZ2U6bGluZWFyLWdyYWRpZW50KHRvIHJpZ2h0LCByZ2JhKDAsIDAsIDAsIDAuNDIpIDAlLCByZ2JhKDAsIDAsIDAsIDAuNDIpIDMzJSwgdHJhbnNwYXJlbnQgMCUpO2JhY2tncm91bmQtc2l6ZTo0cHggMTAwJTtiYWNrZ3JvdW5kLXJlcGVhdDpyZXBlYXQteH0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1zdGFuZGFyZFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtdW5kZXJsaW5lW19uZ2NvbnRlbnQtJUNPTVAlXXtiYWNrZ3JvdW5kLWNvbG9yOnJnYmEoMCwwLDAsLjQyKX0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1zdGFuZGFyZC5tYXQtZm9ybS1maWVsZC1kaXNhYmxlZFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtdW5kZXJsaW5lW19uZ2NvbnRlbnQtJUNPTVAlXXtiYWNrZ3JvdW5kLWltYWdlOmxpbmVhci1ncmFkaWVudCh0byByaWdodCwgcmdiYSgwLCAwLCAwLCAwLjQyKSAwJSwgcmdiYSgwLCAwLCAwLCAwLjQyKSAzMyUsIHRyYW5zcGFyZW50IDAlKTtiYWNrZ3JvdW5kLXNpemU6NHB4IDEwMCU7YmFja2dyb3VuZC1yZXBlYXQ6cmVwZWF0LXh9Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtZmlsbFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtZmxleFtfbmdjb250ZW50LSVDT01QJV17YmFja2dyb3VuZC1jb2xvcjpyZ2JhKDAsMCwwLC4wNCl9Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtZmlsbC5tYXQtZm9ybS1maWVsZC1kaXNhYmxlZFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtZmxleFtfbmdjb250ZW50LSVDT01QJV17YmFja2dyb3VuZC1jb2xvcjpyZ2JhKDAsMCwwLC4wMil9Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtZmlsbFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtdW5kZXJsaW5lW19uZ2NvbnRlbnQtJUNPTVAlXTo6YmVmb3Jle2JhY2tncm91bmQtY29sb3I6cmdiYSgwLDAsMCwuNDIpfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWZpbGwubWF0LWZvcm0tZmllbGQtZGlzYWJsZWRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXtjb2xvcjojNzU3NTc1fS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWZpbGwubWF0LWZvcm0tZmllbGQtZGlzYWJsZWRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLXVuZGVybGluZVtfbmdjb250ZW50LSVDT01QJV06OmJlZm9yZXtiYWNrZ3JvdW5kLWNvbG9yOnRyYW5zcGFyZW50fS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLW91dGxpbmVbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLW91dGxpbmVbX25nY29udGVudC0lQ09NUCVde2NvbG9yOnJnYmEoMCwwLDAsLjEyKX0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1vdXRsaW5lW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1vdXRsaW5lLXRoaWNrW19uZ2NvbnRlbnQtJUNPTVAlXXtjb2xvcjpyZ2JhKDAsMCwwLC44Nyl9Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2Utb3V0bGluZS5tYXQtZm9jdXNlZFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtb3V0bGluZS10aGlja1tfbmdjb250ZW50LSVDT01QJV17Y29sb3I6I2Y1N2MwMH0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1vdXRsaW5lLm1hdC1mb2N1c2VkLm1hdC1hY2NlbnRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLW91dGxpbmUtdGhpY2tbX25nY29udGVudC0lQ09NUCVde2NvbG9yOiNmZjk4MDB9Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2Utb3V0bGluZS5tYXQtZm9jdXNlZC5tYXQtd2Fybltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtb3V0bGluZS10aGlja1tfbmdjb250ZW50LSVDT01QJV17Y29sb3I6I2Y0NDMzNn0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1vdXRsaW5lLm1hdC1mb3JtLWZpZWxkLWludmFsaWQubWF0LWZvcm0tZmllbGQtaW52YWxpZFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtb3V0bGluZS10aGlja1tfbmdjb250ZW50LSVDT01QJV17Y29sb3I6I2Y0NDMzNn0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1vdXRsaW5lLm1hdC1mb3JtLWZpZWxkLWRpc2FibGVkW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17Y29sb3I6Izc1NzU3NX0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1vdXRsaW5lLm1hdC1mb3JtLWZpZWxkLWRpc2FibGVkW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1vdXRsaW5lW19uZ2NvbnRlbnQtJUNPTVAlXXtjb2xvcjpyZ2JhKDAsMCwwLC4wNil9Lm1hdC1pY29uLm1hdC1wcmltYXJ5W19uZ2NvbnRlbnQtJUNPTVAlXXtjb2xvcjojZjU3YzAwfS5tYXQtaWNvbi5tYXQtYWNjZW50W19uZ2NvbnRlbnQtJUNPTVAlXXtjb2xvcjojZmY5ODAwfS5tYXQtaWNvbi5tYXQtd2Fybltfbmdjb250ZW50LSVDT01QJV17Y29sb3I6I2Y0NDMzNn0ubWF0LWZvcm0tZmllbGQtdHlwZS1tYXQtbmF0aXZlLXNlbGVjdFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtaW5maXhbX25nY29udGVudC0lQ09NUCVdOjphZnRlcntjb2xvcjojNjE2MTYxfS5tYXQtaW5wdXQtZWxlbWVudFtfbmdjb250ZW50LSVDT01QJV06ZGlzYWJsZWQsIC5tYXQtZm9ybS1maWVsZC10eXBlLW1hdC1uYXRpdmUtc2VsZWN0Lm1hdC1mb3JtLWZpZWxkLWRpc2FibGVkW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1pbmZpeFtfbmdjb250ZW50LSVDT01QJV06OmFmdGVye2NvbG9yOiM3NTc1NzV9Lm1hdC1pbnB1dC1lbGVtZW50W19uZ2NvbnRlbnQtJUNPTVAlXXtjYXJldC1jb2xvcjojZjU3YzAwfS5tYXQtaW5wdXQtZWxlbWVudFtfbmdjb250ZW50LSVDT01QJV06OnBsYWNlaG9sZGVye2NvbG9yOnJnYmEoOTcsOTcsOTcsLjQyKX0ubWF0LWlucHV0LWVsZW1lbnRbX25nY29udGVudC0lQ09NUCVdOjotbW96LXBsYWNlaG9sZGVye2NvbG9yOnJnYmEoOTcsOTcsOTcsLjQyKX0ubWF0LWlucHV0LWVsZW1lbnRbX25nY29udGVudC0lQ09NUCVdOjotd2Via2l0LWlucHV0LXBsYWNlaG9sZGVye2NvbG9yOnJnYmEoOTcsOTcsOTcsLjQyKX0ubWF0LWlucHV0LWVsZW1lbnRbX25nY29udGVudC0lQ09NUCVdOi1tcy1pbnB1dC1wbGFjZWhvbGRlcntjb2xvcjpyZ2JhKDk3LDk3LDk3LC40Mil9Lm1hdC1mb3JtLWZpZWxkLm1hdC1hY2NlbnRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pbnB1dC1lbGVtZW50W19uZ2NvbnRlbnQtJUNPTVAlXXtjYXJldC1jb2xvcjojZmY5ODAwfS5tYXQtZm9ybS1maWVsZC5tYXQtd2Fybltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWlucHV0LWVsZW1lbnRbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWZvcm0tZmllbGQtaW52YWxpZFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWlucHV0LWVsZW1lbnRbX25nY29udGVudC0lQ09NUCVde2NhcmV0LWNvbG9yOiNmNDQzMzZ9Lm1hdC1mb3JtLWZpZWxkLXR5cGUtbWF0LW5hdGl2ZS1zZWxlY3QubWF0LWZvcm0tZmllbGQtaW52YWxpZFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtaW5maXhbX25nY29udGVudC0lQ09NUCVdOjphZnRlcntjb2xvcjojZjQ0MzM2fS5tYXQtbGlzdC1iYXNlW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGlzdC1pdGVtW19uZ2NvbnRlbnQtJUNPTVAlXXtjb2xvcjojMjEyMTIxfS5tYXQtbGlzdC1iYXNlW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGlzdC1vcHRpb25bX25nY29udGVudC0lQ09NUCVde2NvbG9yOiMyMTIxMjF9Lm1hdC1saXN0LWJhc2VbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1zdWJoZWFkZXJbX25nY29udGVudC0lQ09NUCVde2NvbG9yOiM2MTYxNjF9Lm1hdC1saXN0LWl0ZW0tZGlzYWJsZWRbX25nY29udGVudC0lQ09NUCVde2JhY2tncm91bmQtY29sb3I6I2VlZX0ubWF0LWxpc3Qtb3B0aW9uW19uZ2NvbnRlbnQtJUNPTVAlXTpob3ZlciwgLm1hdC1saXN0LW9wdGlvbltfbmdjb250ZW50LSVDT01QJV06Zm9jdXMsIC5tYXQtbmF2LWxpc3RbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saXN0LWl0ZW1bX25nY29udGVudC0lQ09NUCVdOmhvdmVyLCAubWF0LW5hdi1saXN0W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGlzdC1pdGVtW19uZ2NvbnRlbnQtJUNPTVAlXTpmb2N1cywgLm1hdC1hY3Rpb24tbGlzdFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpc3QtaXRlbVtfbmdjb250ZW50LSVDT01QJV06aG92ZXIsIC5tYXQtYWN0aW9uLWxpc3RbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saXN0LWl0ZW1bX25nY29udGVudC0lQ09NUCVdOmZvY3Vze2JhY2tncm91bmQ6cmdiYSgwLDAsMCwuMDQpfS5tYXQtbGlzdC1zaW5nbGUtc2VsZWN0ZWQtb3B0aW9uW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1saXN0LXNpbmdsZS1zZWxlY3RlZC1vcHRpb25bX25nY29udGVudC0lQ09NUCVdOmhvdmVyLCAubWF0LWxpc3Qtc2luZ2xlLXNlbGVjdGVkLW9wdGlvbltfbmdjb250ZW50LSVDT01QJV06Zm9jdXN7YmFja2dyb3VuZDpyZ2JhKDAsMCwwLC4xMil9Lm1hdC1tZW51LXBhbmVsW19uZ2NvbnRlbnQtJUNPTVAlXXtiYWNrZ3JvdW5kOiNmZmZ9Lm1hdC1tZW51LXBhbmVsW19uZ2NvbnRlbnQtJUNPTVAlXTpub3QoW2NsYXNzKj1tYXQtZWxldmF0aW9uLXpdKXtib3gtc2hhZG93OjBweCAycHggNHB4IC0xcHggcmdiYSgwLCAwLCAwLCAwLjIpLDBweCA0cHggNXB4IDBweCByZ2JhKDAsIDAsIDAsIDAuMTQpLDBweCAxcHggMTBweCAwcHggcmdiYSgwLCAwLCAwLCAwLjEyKX0ubWF0LW1lbnUtaXRlbVtfbmdjb250ZW50LSVDT01QJV17YmFja2dyb3VuZDp0cmFuc3BhcmVudDtjb2xvcjojMjEyMTIxfS5tYXQtbWVudS1pdGVtW2Rpc2FibGVkXVtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtbWVudS1pdGVtW2Rpc2FibGVkXVtfbmdjb250ZW50LSVDT01QJV06OmFmdGVye2NvbG9yOnJnYmEoMCwwLDAsLjM4KX0ubWF0LW1lbnUtaXRlbVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWljb24tbm8tY29sb3JbX25nY29udGVudC0lQ09NUCVdLCAubWF0LW1lbnUtaXRlbS1zdWJtZW51LXRyaWdnZXJbX25nY29udGVudC0lQ09NUCVdOjphZnRlcntjb2xvcjpyZ2JhKDAsMCwwLC41NCl9Lm1hdC1tZW51LWl0ZW1bX25nY29udGVudC0lQ09NUCVdOmhvdmVyOm5vdChbZGlzYWJsZWRdKSwgLm1hdC1tZW51LWl0ZW0uY2RrLXByb2dyYW0tZm9jdXNlZFtfbmdjb250ZW50LSVDT01QJV06bm90KFtkaXNhYmxlZF0pLCAubWF0LW1lbnUtaXRlbS5jZGsta2V5Ym9hcmQtZm9jdXNlZFtfbmdjb250ZW50LSVDT01QJV06bm90KFtkaXNhYmxlZF0pLCAubWF0LW1lbnUtaXRlbS1oaWdobGlnaHRlZFtfbmdjb250ZW50LSVDT01QJV06bm90KFtkaXNhYmxlZF0pe2JhY2tncm91bmQ6cmdiYSgwLDAsMCwuMDQpfS5tYXQtcGFnaW5hdG9yW19uZ2NvbnRlbnQtJUNPTVAlXXtiYWNrZ3JvdW5kOiNmZmZ9Lm1hdC1wYWdpbmF0b3JbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXBhZ2luYXRvci1wYWdlLXNpemVbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1zZWxlY3QtdHJpZ2dlcltfbmdjb250ZW50LSVDT01QJV17Y29sb3I6IzYxNjE2MX0ubWF0LXBhZ2luYXRvci1kZWNyZW1lbnRbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXBhZ2luYXRvci1pbmNyZW1lbnRbX25nY29udGVudC0lQ09NUCVde2JvcmRlci10b3A6MnB4IHNvbGlkIHJnYmEoMCwwLDAsLjU0KTtib3JkZXItcmlnaHQ6MnB4IHNvbGlkIHJnYmEoMCwwLDAsLjU0KX0ubWF0LXBhZ2luYXRvci1maXJzdFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtcGFnaW5hdG9yLWxhc3RbX25nY29udGVudC0lQ09NUCVde2JvcmRlci10b3A6MnB4IHNvbGlkIHJnYmEoMCwwLDAsLjU0KX0ubWF0LWljb24tYnV0dG9uW2Rpc2FibGVkXVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXBhZ2luYXRvci1kZWNyZW1lbnRbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWljb24tYnV0dG9uW2Rpc2FibGVkXVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXBhZ2luYXRvci1pbmNyZW1lbnRbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWljb24tYnV0dG9uW2Rpc2FibGVkXVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXBhZ2luYXRvci1maXJzdFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtaWNvbi1idXR0b25bZGlzYWJsZWRdW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtcGFnaW5hdG9yLWxhc3RbX25nY29udGVudC0lQ09NUCVde2JvcmRlci1jb2xvcjpyZ2JhKDAsMCwwLC4zOCl9Lm1hdC1wYWdpbmF0b3ItY29udGFpbmVyW19uZ2NvbnRlbnQtJUNPTVAlXXttaW4taGVpZ2h0OjU2cHh9Lm1hdC1wcm9ncmVzcy1iYXItYmFja2dyb3VuZFtfbmdjb250ZW50LSVDT01QJV17ZmlsbDojZmY5ODAwfS5tYXQtcHJvZ3Jlc3MtYmFyLWJ1ZmZlcltfbmdjb250ZW50LSVDT01QJV17YmFja2dyb3VuZC1jb2xvcjojZmY5ODAwfS5tYXQtcHJvZ3Jlc3MtYmFyLWZpbGxbX25nY29udGVudC0lQ09NUCVdOjphZnRlcntiYWNrZ3JvdW5kLWNvbG9yOiNmNTdjMDB9Lm1hdC1wcm9ncmVzcy1iYXIubWF0LWFjY2VudFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXByb2dyZXNzLWJhci1iYWNrZ3JvdW5kW19uZ2NvbnRlbnQtJUNPTVAlXXtmaWxsOiNmZjk4MDB9Lm1hdC1wcm9ncmVzcy1iYXIubWF0LWFjY2VudFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXByb2dyZXNzLWJhci1idWZmZXJbX25nY29udGVudC0lQ09NUCVde2JhY2tncm91bmQtY29sb3I6I2ZmOTgwMH0ubWF0LXByb2dyZXNzLWJhci5tYXQtYWNjZW50W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtcHJvZ3Jlc3MtYmFyLWZpbGxbX25nY29udGVudC0lQ09NUCVdOjphZnRlcntiYWNrZ3JvdW5kLWNvbG9yOiNmZjk4MDB9Lm1hdC1wcm9ncmVzcy1iYXIubWF0LXdhcm5bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1wcm9ncmVzcy1iYXItYmFja2dyb3VuZFtfbmdjb250ZW50LSVDT01QJV17ZmlsbDojZmZjZGQyfS5tYXQtcHJvZ3Jlc3MtYmFyLm1hdC13YXJuW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtcHJvZ3Jlc3MtYmFyLWJ1ZmZlcltfbmdjb250ZW50LSVDT01QJV17YmFja2dyb3VuZC1jb2xvcjojZmZjZGQyfS5tYXQtcHJvZ3Jlc3MtYmFyLm1hdC13YXJuW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtcHJvZ3Jlc3MtYmFyLWZpbGxbX25nY29udGVudC0lQ09NUCVdOjphZnRlcntiYWNrZ3JvdW5kLWNvbG9yOiNmNDQzMzZ9Lm1hdC1wcm9ncmVzcy1zcGlubmVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIGNpcmNsZVtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtc3Bpbm5lcltfbmdjb250ZW50LSVDT01QJV0gICBjaXJjbGVbX25nY29udGVudC0lQ09NUCVde3N0cm9rZTojZjU3YzAwfS5tYXQtcHJvZ3Jlc3Mtc3Bpbm5lci5tYXQtYWNjZW50W19uZ2NvbnRlbnQtJUNPTVAlXSAgIGNpcmNsZVtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtc3Bpbm5lci5tYXQtYWNjZW50W19uZ2NvbnRlbnQtJUNPTVAlXSAgIGNpcmNsZVtfbmdjb250ZW50LSVDT01QJV17c3Ryb2tlOiNmZjk4MDB9Lm1hdC1wcm9ncmVzcy1zcGlubmVyLm1hdC13YXJuW19uZ2NvbnRlbnQtJUNPTVAlXSAgIGNpcmNsZVtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtc3Bpbm5lci5tYXQtd2Fybltfbmdjb250ZW50LSVDT01QJV0gICBjaXJjbGVbX25nY29udGVudC0lQ09NUCVde3N0cm9rZTojZjQ0MzM2fS5tYXQtcmFkaW8tb3V0ZXItY2lyY2xlW19uZ2NvbnRlbnQtJUNPTVAlXXtib3JkZXItY29sb3I6IzYxNjE2MX0ubWF0LXJhZGlvLWJ1dHRvbi5tYXQtcHJpbWFyeS5tYXQtcmFkaW8tY2hlY2tlZFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXJhZGlvLW91dGVyLWNpcmNsZVtfbmdjb250ZW50LSVDT01QJV17Ym9yZGVyLWNvbG9yOiNmNTdjMDB9Lm1hdC1yYWRpby1idXR0b24ubWF0LXByaW1hcnlbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1yYWRpby1pbm5lci1jaXJjbGVbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXJhZGlvLWJ1dHRvbi5tYXQtcHJpbWFyeVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXJhZGlvLXJpcHBsZVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXJpcHBsZS1lbGVtZW50W19uZ2NvbnRlbnQtJUNPTVAlXTpub3QoLm1hdC1yYWRpby1wZXJzaXN0ZW50LXJpcHBsZSksIC5tYXQtcmFkaW8tYnV0dG9uLm1hdC1wcmltYXJ5Lm1hdC1yYWRpby1jaGVja2VkW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtcmFkaW8tcGVyc2lzdGVudC1yaXBwbGVbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXJhZGlvLWJ1dHRvbi5tYXQtcHJpbWFyeVtfbmdjb250ZW50LSVDT01QJV06YWN0aXZlICAgLm1hdC1yYWRpby1wZXJzaXN0ZW50LXJpcHBsZVtfbmdjb250ZW50LSVDT01QJV17YmFja2dyb3VuZC1jb2xvcjojZjU3YzAwfS5tYXQtcmFkaW8tYnV0dG9uLm1hdC1hY2NlbnQubWF0LXJhZGlvLWNoZWNrZWRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1yYWRpby1vdXRlci1jaXJjbGVbX25nY29udGVudC0lQ09NUCVde2JvcmRlci1jb2xvcjojZmY5ODAwfS5tYXQtcmFkaW8tYnV0dG9uLm1hdC1hY2NlbnRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1yYWRpby1pbm5lci1jaXJjbGVbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXJhZGlvLWJ1dHRvbi5tYXQtYWNjZW50W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtcmFkaW8tcmlwcGxlW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtcmlwcGxlLWVsZW1lbnRbX25nY29udGVudC0lQ09NUCVdOm5vdCgubWF0LXJhZGlvLXBlcnNpc3RlbnQtcmlwcGxlKSwgLm1hdC1yYWRpby1idXR0b24ubWF0LWFjY2VudC5tYXQtcmFkaW8tY2hlY2tlZFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXJhZGlvLXBlcnNpc3RlbnQtcmlwcGxlW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1yYWRpby1idXR0b24ubWF0LWFjY2VudFtfbmdjb250ZW50LSVDT01QJV06YWN0aXZlICAgLm1hdC1yYWRpby1wZXJzaXN0ZW50LXJpcHBsZVtfbmdjb250ZW50LSVDT01QJV17YmFja2dyb3VuZC1jb2xvcjojZmY5ODAwfS5tYXQtcmFkaW8tYnV0dG9uLm1hdC13YXJuLm1hdC1yYWRpby1jaGVja2VkW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtcmFkaW8tb3V0ZXItY2lyY2xlW19uZ2NvbnRlbnQtJUNPTVAlXXtib3JkZXItY29sb3I6I2Y0NDMzNn0ubWF0LXJhZGlvLWJ1dHRvbi5tYXQtd2Fybltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXJhZGlvLWlubmVyLWNpcmNsZVtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtcmFkaW8tYnV0dG9uLm1hdC13YXJuW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtcmFkaW8tcmlwcGxlW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtcmlwcGxlLWVsZW1lbnRbX25nY29udGVudC0lQ09NUCVdOm5vdCgubWF0LXJhZGlvLXBlcnNpc3RlbnQtcmlwcGxlKSwgLm1hdC1yYWRpby1idXR0b24ubWF0LXdhcm4ubWF0LXJhZGlvLWNoZWNrZWRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1yYWRpby1wZXJzaXN0ZW50LXJpcHBsZVtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtcmFkaW8tYnV0dG9uLm1hdC13YXJuW19uZ2NvbnRlbnQtJUNPTVAlXTphY3RpdmUgICAubWF0LXJhZGlvLXBlcnNpc3RlbnQtcmlwcGxlW19uZ2NvbnRlbnQtJUNPTVAlXXtiYWNrZ3JvdW5kLWNvbG9yOiNmNDQzMzZ9Lm1hdC1yYWRpby1idXR0b24ubWF0LXJhZGlvLWRpc2FibGVkLm1hdC1yYWRpby1jaGVja2VkW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtcmFkaW8tb3V0ZXItY2lyY2xlW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1yYWRpby1idXR0b24ubWF0LXJhZGlvLWRpc2FibGVkW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtcmFkaW8tb3V0ZXItY2lyY2xlW19uZ2NvbnRlbnQtJUNPTVAlXXtib3JkZXItY29sb3I6cmdiYSgwLDAsMCwuMzgpfS5tYXQtcmFkaW8tYnV0dG9uLm1hdC1yYWRpby1kaXNhYmxlZFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXJhZGlvLXJpcHBsZVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXJpcHBsZS1lbGVtZW50W19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1yYWRpby1idXR0b24ubWF0LXJhZGlvLWRpc2FibGVkW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtcmFkaW8taW5uZXItY2lyY2xlW19uZ2NvbnRlbnQtJUNPTVAlXXtiYWNrZ3JvdW5kLWNvbG9yOnJnYmEoMCwwLDAsLjM4KX0ubWF0LXJhZGlvLWJ1dHRvbi5tYXQtcmFkaW8tZGlzYWJsZWRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1yYWRpby1sYWJlbC1jb250ZW50W19uZ2NvbnRlbnQtJUNPTVAlXXtjb2xvcjpyZ2JhKDAsMCwwLC4zOCl9Lm1hdC1yYWRpby1idXR0b25bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1yaXBwbGUtZWxlbWVudFtfbmdjb250ZW50LSVDT01QJV17YmFja2dyb3VuZC1jb2xvcjojMDAwfS5tYXQtc2VsZWN0LXZhbHVlW19uZ2NvbnRlbnQtJUNPTVAlXXtjb2xvcjojMjEyMTIxfS5tYXQtc2VsZWN0LXBsYWNlaG9sZGVyW19uZ2NvbnRlbnQtJUNPTVAlXXtjb2xvcjpyZ2JhKDk3LDk3LDk3LC40Mil9Lm1hdC1zZWxlY3QtZGlzYWJsZWRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1zZWxlY3QtdmFsdWVbX25nY29udGVudC0lQ09NUCVde2NvbG9yOiM3NTc1NzV9Lm1hdC1zZWxlY3QtYXJyb3dbX25nY29udGVudC0lQ09NUCVde2NvbG9yOiM2MTYxNjF9Lm1hdC1zZWxlY3QtcGFuZWxbX25nY29udGVudC0lQ09NUCVde2JhY2tncm91bmQ6I2ZmZn0ubWF0LXNlbGVjdC1wYW5lbFtfbmdjb250ZW50LSVDT01QJV06bm90KFtjbGFzcyo9bWF0LWVsZXZhdGlvbi16XSl7Ym94LXNoYWRvdzowcHggMnB4IDRweCAtMXB4IHJnYmEoMCwgMCwgMCwgMC4yKSwwcHggNHB4IDVweCAwcHggcmdiYSgwLCAwLCAwLCAwLjE0KSwwcHggMXB4IDEwcHggMHB4IHJnYmEoMCwgMCwgMCwgMC4xMil9Lm1hdC1zZWxlY3QtcGFuZWxbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1vcHRpb24ubWF0LXNlbGVjdGVkW19uZ2NvbnRlbnQtJUNPTVAlXTpub3QoLm1hdC1vcHRpb24tbXVsdGlwbGUpe2JhY2tncm91bmQ6cmdiYSgwLDAsMCwuMTIpfS5tYXQtZm9ybS1maWVsZC5tYXQtZm9jdXNlZC5tYXQtcHJpbWFyeVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXNlbGVjdC1hcnJvd1tfbmdjb250ZW50LSVDT01QJV17Y29sb3I6I2Y1N2MwMH0ubWF0LWZvcm0tZmllbGQubWF0LWZvY3VzZWQubWF0LWFjY2VudFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXNlbGVjdC1hcnJvd1tfbmdjb250ZW50LSVDT01QJV17Y29sb3I6I2ZmOTgwMH0ubWF0LWZvcm0tZmllbGQubWF0LWZvY3VzZWQubWF0LXdhcm5bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1zZWxlY3QtYXJyb3dbX25nY29udGVudC0lQ09NUCVde2NvbG9yOiNmNDQzMzZ9Lm1hdC1mb3JtLWZpZWxkW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtc2VsZWN0Lm1hdC1zZWxlY3QtaW52YWxpZFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXNlbGVjdC1hcnJvd1tfbmdjb250ZW50LSVDT01QJV17Y29sb3I6I2Y0NDMzNn0ubWF0LWZvcm0tZmllbGRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1zZWxlY3QubWF0LXNlbGVjdC1kaXNhYmxlZFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXNlbGVjdC1hcnJvd1tfbmdjb250ZW50LSVDT01QJV17Y29sb3I6Izc1NzU3NX0ubWF0LWRyYXdlci1jb250YWluZXJbX25nY29udGVudC0lQ09NUCVde2JhY2tncm91bmQtY29sb3I6I2ZhZmFmYTtjb2xvcjojMjEyMTIxfS5tYXQtZHJhd2VyW19uZ2NvbnRlbnQtJUNPTVAlXXtiYWNrZ3JvdW5kLWNvbG9yOiNmZmY7Y29sb3I6IzIxMjEyMX0ubWF0LWRyYXdlci5tYXQtZHJhd2VyLXB1c2hbX25nY29udGVudC0lQ09NUCVde2JhY2tncm91bmQtY29sb3I6I2ZmZn0ubWF0LWRyYXdlcltfbmdjb250ZW50LSVDT01QJV06bm90KC5tYXQtZHJhd2VyLXNpZGUpe2JveC1zaGFkb3c6MHB4IDhweCAxMHB4IC01cHggcmdiYSgwLCAwLCAwLCAwLjIpLDBweCAxNnB4IDI0cHggMnB4IHJnYmEoMCwgMCwgMCwgMC4xNCksMHB4IDZweCAzMHB4IDVweCByZ2JhKDAsIDAsIDAsIDAuMTIpfS5tYXQtZHJhd2VyLXNpZGVbX25nY29udGVudC0lQ09NUCVde2JvcmRlci1yaWdodDpzb2xpZCAxcHggcmdiYSgwLDAsMCwuMTIpfS5tYXQtZHJhd2VyLXNpZGUubWF0LWRyYXdlci1lbmRbX25nY29udGVudC0lQ09NUCVde2JvcmRlci1sZWZ0OnNvbGlkIDFweCByZ2JhKDAsMCwwLC4xMik7Ym9yZGVyLXJpZ2h0Om5vbmV9W2Rpcj1ydGxdW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZHJhd2VyLXNpZGVbX25nY29udGVudC0lQ09NUCVde2JvcmRlci1sZWZ0OnNvbGlkIDFweCByZ2JhKDAsMCwwLC4xMik7Ym9yZGVyLXJpZ2h0Om5vbmV9W2Rpcj1ydGxdW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZHJhd2VyLXNpZGUubWF0LWRyYXdlci1lbmRbX25nY29udGVudC0lQ09NUCVde2JvcmRlci1sZWZ0Om5vbmU7Ym9yZGVyLXJpZ2h0OnNvbGlkIDFweCByZ2JhKDAsMCwwLC4xMil9Lm1hdC1kcmF3ZXItYmFja2Ryb3AubWF0LWRyYXdlci1zaG93bltfbmdjb250ZW50LSVDT01QJV17YmFja2dyb3VuZC1jb2xvcjpyZ2JhKDAsMCwwLC42KX0ubWF0LXNsaWRlLXRvZ2dsZS5tYXQtY2hlY2tlZFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXNsaWRlLXRvZ2dsZS10aHVtYltfbmdjb250ZW50LSVDT01QJV17YmFja2dyb3VuZC1jb2xvcjojZmY5ODAwfS5tYXQtc2xpZGUtdG9nZ2xlLm1hdC1jaGVja2VkW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtc2xpZGUtdG9nZ2xlLWJhcltfbmdjb250ZW50LSVDT01QJV17YmFja2dyb3VuZC1jb2xvcjpyZ2JhKDI1NSwxNTIsMCwuNTQpfS5tYXQtc2xpZGUtdG9nZ2xlLm1hdC1jaGVja2VkW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtcmlwcGxlLWVsZW1lbnRbX25nY29udGVudC0lQ09NUCVde2JhY2tncm91bmQtY29sb3I6I2ZmOTgwMH0ubWF0LXNsaWRlLXRvZ2dsZS5tYXQtcHJpbWFyeS5tYXQtY2hlY2tlZFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXNsaWRlLXRvZ2dsZS10aHVtYltfbmdjb250ZW50LSVDT01QJV17YmFja2dyb3VuZC1jb2xvcjojZjU3YzAwfS5tYXQtc2xpZGUtdG9nZ2xlLm1hdC1wcmltYXJ5Lm1hdC1jaGVja2VkW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtc2xpZGUtdG9nZ2xlLWJhcltfbmdjb250ZW50LSVDT01QJV17YmFja2dyb3VuZC1jb2xvcjpyZ2JhKDI0NSwxMjQsMCwuNTQpfS5tYXQtc2xpZGUtdG9nZ2xlLm1hdC1wcmltYXJ5Lm1hdC1jaGVja2VkW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtcmlwcGxlLWVsZW1lbnRbX25nY29udGVudC0lQ09NUCVde2JhY2tncm91bmQtY29sb3I6I2Y1N2MwMH0ubWF0LXNsaWRlLXRvZ2dsZS5tYXQtd2Fybi5tYXQtY2hlY2tlZFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXNsaWRlLXRvZ2dsZS10aHVtYltfbmdjb250ZW50LSVDT01QJV17YmFja2dyb3VuZC1jb2xvcjojZjQ0MzM2fS5tYXQtc2xpZGUtdG9nZ2xlLm1hdC13YXJuLm1hdC1jaGVja2VkW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtc2xpZGUtdG9nZ2xlLWJhcltfbmdjb250ZW50LSVDT01QJV17YmFja2dyb3VuZC1jb2xvcjpyZ2JhKDI0NCw2Nyw1NCwuNTQpfS5tYXQtc2xpZGUtdG9nZ2xlLm1hdC13YXJuLm1hdC1jaGVja2VkW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtcmlwcGxlLWVsZW1lbnRbX25nY29udGVudC0lQ09NUCVde2JhY2tncm91bmQtY29sb3I6I2Y0NDMzNn0ubWF0LXNsaWRlLXRvZ2dsZVtfbmdjb250ZW50LSVDT01QJV06bm90KC5tYXQtY2hlY2tlZCkgICAubWF0LXJpcHBsZS1lbGVtZW50W19uZ2NvbnRlbnQtJUNPTVAlXXtiYWNrZ3JvdW5kLWNvbG9yOiMwMDB9Lm1hdC1zbGlkZS10b2dnbGUtdGh1bWJbX25nY29udGVudC0lQ09NUCVde2JveC1zaGFkb3c6MHB4IDJweCAxcHggLTFweCByZ2JhKDAsIDAsIDAsIDAuMiksMHB4IDFweCAxcHggMHB4IHJnYmEoMCwgMCwgMCwgMC4xNCksMHB4IDFweCAzcHggMHB4IHJnYmEoMCwgMCwgMCwgMC4xMik7YmFja2dyb3VuZC1jb2xvcjojZmFmYWZhfS5tYXQtc2xpZGUtdG9nZ2xlLWJhcltfbmdjb250ZW50LSVDT01QJV17YmFja2dyb3VuZC1jb2xvcjpyZ2JhKDAsMCwwLC4zOCl9Lm1hdC1zbGlkZXItdHJhY2stYmFja2dyb3VuZFtfbmdjb250ZW50LSVDT01QJV17YmFja2dyb3VuZC1jb2xvcjpyZ2JhKDAsMCwwLC4yNil9Lm1hdC1wcmltYXJ5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtc2xpZGVyLXRyYWNrLWZpbGxbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXByaW1hcnlbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1zbGlkZXItdGh1bWJbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXByaW1hcnlbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1zbGlkZXItdGh1bWItbGFiZWxbX25nY29udGVudC0lQ09NUCVde2JhY2tncm91bmQtY29sb3I6I2Y1N2MwMH0ubWF0LXByaW1hcnlbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1zbGlkZXItdGh1bWItbGFiZWwtdGV4dFtfbmdjb250ZW50LSVDT01QJV17Y29sb3I6I2ZmZn0ubWF0LXByaW1hcnlbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1zbGlkZXItZm9jdXMtcmluZ1tfbmdjb250ZW50LSVDT01QJV17YmFja2dyb3VuZC1jb2xvcjpyZ2JhKDI0NSwxMjQsMCwuMil9Lm1hdC1hY2NlbnRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1zbGlkZXItdHJhY2stZmlsbFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtYWNjZW50W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtc2xpZGVyLXRodW1iW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1hY2NlbnRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1zbGlkZXItdGh1bWItbGFiZWxbX25nY29udGVudC0lQ09NUCVde2JhY2tncm91bmQtY29sb3I6I2ZmOTgwMH0ubWF0LWFjY2VudFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXNsaWRlci10aHVtYi1sYWJlbC10ZXh0W19uZ2NvbnRlbnQtJUNPTVAlXXtjb2xvcjojZmZmfS5tYXQtYWNjZW50W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtc2xpZGVyLWZvY3VzLXJpbmdbX25nY29udGVudC0lQ09NUCVde2JhY2tncm91bmQtY29sb3I6cmdiYSgyNTUsMTUyLDAsLjIpfS5tYXQtd2Fybltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXNsaWRlci10cmFjay1maWxsW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC13YXJuW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtc2xpZGVyLXRodW1iW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC13YXJuW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtc2xpZGVyLXRodW1iLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXtiYWNrZ3JvdW5kLWNvbG9yOiNmNDQzMzZ9Lm1hdC13YXJuW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtc2xpZGVyLXRodW1iLWxhYmVsLXRleHRbX25nY29udGVudC0lQ09NUCVde2NvbG9yOiNmZmZ9Lm1hdC13YXJuW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtc2xpZGVyLWZvY3VzLXJpbmdbX25nY29udGVudC0lQ09NUCVde2JhY2tncm91bmQtY29sb3I6cmdiYSgyNDQsNjcsNTQsLjIpfS5tYXQtc2xpZGVyW19uZ2NvbnRlbnQtJUNPTVAlXTpob3ZlciAgIC5tYXQtc2xpZGVyLXRyYWNrLWJhY2tncm91bmRbX25nY29udGVudC0lQ09NUCVdLCAuY2RrLWZvY3VzZWRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1zbGlkZXItdHJhY2stYmFja2dyb3VuZFtfbmdjb250ZW50LSVDT01QJV17YmFja2dyb3VuZC1jb2xvcjpyZ2JhKDAsMCwwLC4zOCl9Lm1hdC1zbGlkZXItZGlzYWJsZWRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1zbGlkZXItdHJhY2stYmFja2dyb3VuZFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtc2xpZGVyLWRpc2FibGVkW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtc2xpZGVyLXRyYWNrLWZpbGxbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXNsaWRlci1kaXNhYmxlZFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXNsaWRlci10aHVtYltfbmdjb250ZW50LSVDT01QJV17YmFja2dyb3VuZC1jb2xvcjpyZ2JhKDAsMCwwLC4yNil9Lm1hdC1zbGlkZXItZGlzYWJsZWRbX25nY29udGVudC0lQ09NUCVdOmhvdmVyICAgLm1hdC1zbGlkZXItdHJhY2stYmFja2dyb3VuZFtfbmdjb250ZW50LSVDT01QJV17YmFja2dyb3VuZC1jb2xvcjpyZ2JhKDAsMCwwLC4yNil9Lm1hdC1zbGlkZXItbWluLXZhbHVlW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtc2xpZGVyLWZvY3VzLXJpbmdbX25nY29udGVudC0lQ09NUCVde2JhY2tncm91bmQtY29sb3I6cmdiYSgwLDAsMCwuMTIpfS5tYXQtc2xpZGVyLW1pbi12YWx1ZS5tYXQtc2xpZGVyLXRodW1iLWxhYmVsLXNob3dpbmdbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1zbGlkZXItdGh1bWJbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXNsaWRlci1taW4tdmFsdWUubWF0LXNsaWRlci10aHVtYi1sYWJlbC1zaG93aW5nW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtc2xpZGVyLXRodW1iLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXtiYWNrZ3JvdW5kLWNvbG9yOnJnYmEoMCwwLDAsLjg3KX0ubWF0LXNsaWRlci1taW4tdmFsdWUubWF0LXNsaWRlci10aHVtYi1sYWJlbC1zaG93aW5nLmNkay1mb2N1c2VkW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtc2xpZGVyLXRodW1iW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1zbGlkZXItbWluLXZhbHVlLm1hdC1zbGlkZXItdGh1bWItbGFiZWwtc2hvd2luZy5jZGstZm9jdXNlZFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXNsaWRlci10aHVtYi1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17YmFja2dyb3VuZC1jb2xvcjpyZ2JhKDAsMCwwLC4yNil9Lm1hdC1zbGlkZXItbWluLXZhbHVlW19uZ2NvbnRlbnQtJUNPTVAlXTpub3QoLm1hdC1zbGlkZXItdGh1bWItbGFiZWwtc2hvd2luZykgICAubWF0LXNsaWRlci10aHVtYltfbmdjb250ZW50LSVDT01QJV17Ym9yZGVyLWNvbG9yOnJnYmEoMCwwLDAsLjI2KTtiYWNrZ3JvdW5kLWNvbG9yOnRyYW5zcGFyZW50fS5tYXQtc2xpZGVyLW1pbi12YWx1ZVtfbmdjb250ZW50LSVDT01QJV06bm90KC5tYXQtc2xpZGVyLXRodW1iLWxhYmVsLXNob3dpbmcpOmhvdmVyICAgLm1hdC1zbGlkZXItdGh1bWJbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXNsaWRlci1taW4tdmFsdWVbX25nY29udGVudC0lQ09NUCVdOm5vdCgubWF0LXNsaWRlci10aHVtYi1sYWJlbC1zaG93aW5nKS5jZGstZm9jdXNlZCAgIC5tYXQtc2xpZGVyLXRodW1iW19uZ2NvbnRlbnQtJUNPTVAlXXtib3JkZXItY29sb3I6cmdiYSgwLDAsMCwuMzgpfS5tYXQtc2xpZGVyLW1pbi12YWx1ZVtfbmdjb250ZW50LSVDT01QJV06bm90KC5tYXQtc2xpZGVyLXRodW1iLWxhYmVsLXNob3dpbmcpOmhvdmVyLm1hdC1zbGlkZXItZGlzYWJsZWQgICAubWF0LXNsaWRlci10aHVtYltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtc2xpZGVyLW1pbi12YWx1ZVtfbmdjb250ZW50LSVDT01QJV06bm90KC5tYXQtc2xpZGVyLXRodW1iLWxhYmVsLXNob3dpbmcpLmNkay1mb2N1c2VkLm1hdC1zbGlkZXItZGlzYWJsZWQgICAubWF0LXNsaWRlci10aHVtYltfbmdjb250ZW50LSVDT01QJV17Ym9yZGVyLWNvbG9yOnJnYmEoMCwwLDAsLjI2KX0ubWF0LXNsaWRlci1oYXMtdGlja3NbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1zbGlkZXItd3JhcHBlcltfbmdjb250ZW50LSVDT01QJV06OmFmdGVye2JvcmRlci1jb2xvcjpyZ2JhKDAsMCwwLC43KX0ubWF0LXNsaWRlci1ob3Jpem9udGFsW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtc2xpZGVyLXRpY2tzW19uZ2NvbnRlbnQtJUNPTVAlXXtiYWNrZ3JvdW5kLWltYWdlOnJlcGVhdGluZy1saW5lYXItZ3JhZGllbnQodG8gcmlnaHQsIHJnYmEoMCwgMCwgMCwgMC43KSwgcmdiYSgwLCAwLCAwLCAwLjcpIDJweCwgdHJhbnNwYXJlbnQgMCwgdHJhbnNwYXJlbnQpO2JhY2tncm91bmQtaW1hZ2U6LW1vei1yZXBlYXRpbmctbGluZWFyLWdyYWRpZW50KDAuMDAwMWRlZywgcmdiYSgwLCAwLCAwLCAwLjcpLCByZ2JhKDAsIDAsIDAsIDAuNykgMnB4LCB0cmFuc3BhcmVudCAwLCB0cmFuc3BhcmVudCl9Lm1hdC1zbGlkZXItdmVydGljYWxbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1zbGlkZXItdGlja3NbX25nY29udGVudC0lQ09NUCVde2JhY2tncm91bmQtaW1hZ2U6cmVwZWF0aW5nLWxpbmVhci1ncmFkaWVudCh0byBib3R0b20sIHJnYmEoMCwgMCwgMCwgMC43KSwgcmdiYSgwLCAwLCAwLCAwLjcpIDJweCwgdHJhbnNwYXJlbnQgMCwgdHJhbnNwYXJlbnQpfS5tYXQtc3RlcC1oZWFkZXIuY2RrLWtleWJvYXJkLWZvY3VzZWRbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXN0ZXAtaGVhZGVyLmNkay1wcm9ncmFtLWZvY3VzZWRbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXN0ZXAtaGVhZGVyW19uZ2NvbnRlbnQtJUNPTVAlXTpob3ZlcntiYWNrZ3JvdW5kLWNvbG9yOnJnYmEoMCwwLDAsLjA0KX1AbWVkaWEoaG92ZXI6IG5vbmUpey5tYXQtc3RlcC1oZWFkZXJbX25nY29udGVudC0lQ09NUCVdOmhvdmVye2JhY2tncm91bmQ6bm9uZX19Lm1hdC1zdGVwLWhlYWRlcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXN0ZXAtbGFiZWxbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXN0ZXAtaGVhZGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtc3RlcC1vcHRpb25hbFtfbmdjb250ZW50LSVDT01QJV17Y29sb3I6IzYxNjE2MX0ubWF0LXN0ZXAtaGVhZGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtc3RlcC1pY29uW19uZ2NvbnRlbnQtJUNPTVAlXXtiYWNrZ3JvdW5kLWNvbG9yOiM2MTYxNjE7Y29sb3I6I2ZmZn0ubWF0LXN0ZXAtaGVhZGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtc3RlcC1pY29uLXNlbGVjdGVkW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1zdGVwLWhlYWRlcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXN0ZXAtaWNvbi1zdGF0ZS1kb25lW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1zdGVwLWhlYWRlcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXN0ZXAtaWNvbi1zdGF0ZS1lZGl0W19uZ2NvbnRlbnQtJUNPTVAlXXtiYWNrZ3JvdW5kLWNvbG9yOiNmNTdjMDA7Y29sb3I6I2ZmZn0ubWF0LXN0ZXAtaGVhZGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtc3RlcC1pY29uLXN0YXRlLWVycm9yW19uZ2NvbnRlbnQtJUNPTVAlXXtiYWNrZ3JvdW5kLWNvbG9yOnRyYW5zcGFyZW50O2NvbG9yOiNmNDQzMzZ9Lm1hdC1zdGVwLWhlYWRlcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXN0ZXAtbGFiZWwubWF0LXN0ZXAtbGFiZWwtYWN0aXZlW19uZ2NvbnRlbnQtJUNPTVAlXXtjb2xvcjojMjEyMTIxfS5tYXQtc3RlcC1oZWFkZXJbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1zdGVwLWxhYmVsLm1hdC1zdGVwLWxhYmVsLWVycm9yW19uZ2NvbnRlbnQtJUNPTVAlXXtjb2xvcjojZjQ0MzM2fS5tYXQtc3RlcHBlci1ob3Jpem9udGFsW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1zdGVwcGVyLXZlcnRpY2FsW19uZ2NvbnRlbnQtJUNPTVAlXXtiYWNrZ3JvdW5kLWNvbG9yOiNmZmZ9Lm1hdC1zdGVwcGVyLXZlcnRpY2FsLWxpbmVbX25nY29udGVudC0lQ09NUCVdOjpiZWZvcmV7Ym9yZGVyLWxlZnQtY29sb3I6cmdiYSgwLDAsMCwuMTIpfS5tYXQtaG9yaXpvbnRhbC1zdGVwcGVyLWhlYWRlcltfbmdjb250ZW50LSVDT01QJV06OmJlZm9yZSwgLm1hdC1ob3Jpem9udGFsLXN0ZXBwZXItaGVhZGVyW19uZ2NvbnRlbnQtJUNPTVAlXTo6YWZ0ZXIsIC5tYXQtc3RlcHBlci1ob3Jpem9udGFsLWxpbmVbX25nY29udGVudC0lQ09NUCVde2JvcmRlci10b3AtY29sb3I6cmdiYSgwLDAsMCwuMTIpfS5tYXQtaG9yaXpvbnRhbC1zdGVwcGVyLWhlYWRlcltfbmdjb250ZW50LSVDT01QJV17aGVpZ2h0OjcycHh9Lm1hdC1zdGVwcGVyLWxhYmVsLXBvc2l0aW9uLWJvdHRvbVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWhvcml6b250YWwtc3RlcHBlci1oZWFkZXJbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXZlcnRpY2FsLXN0ZXBwZXItaGVhZGVyW19uZ2NvbnRlbnQtJUNPTVAlXXtwYWRkaW5nOjI0cHggMjRweH0ubWF0LXN0ZXBwZXItdmVydGljYWwtbGluZVtfbmdjb250ZW50LSVDT01QJV06OmJlZm9yZXt0b3A6LTE2cHg7Ym90dG9tOi0xNnB4fS5tYXQtc3RlcHBlci1sYWJlbC1wb3NpdGlvbi1ib3R0b21bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1ob3Jpem9udGFsLXN0ZXBwZXItaGVhZGVyW19uZ2NvbnRlbnQtJUNPTVAlXTo6YWZ0ZXIsIC5tYXQtc3RlcHBlci1sYWJlbC1wb3NpdGlvbi1ib3R0b21bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1ob3Jpem9udGFsLXN0ZXBwZXItaGVhZGVyW19uZ2NvbnRlbnQtJUNPTVAlXTo6YmVmb3Jle3RvcDozNnB4fS5tYXQtc3RlcHBlci1sYWJlbC1wb3NpdGlvbi1ib3R0b21bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1zdGVwcGVyLWhvcml6b250YWwtbGluZVtfbmdjb250ZW50LSVDT01QJV17dG9wOjM2cHh9Lm1hdC1zb3J0LWhlYWRlci1hcnJvd1tfbmdjb250ZW50LSVDT01QJV17Y29sb3I6IzYxNjE2MX0ubWF0LXRhYi1uYXYtYmFyW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10YWItaGVhZGVyW19uZ2NvbnRlbnQtJUNPTVAlXXtib3JkZXItYm90dG9tOjFweCBzb2xpZCByZ2JhKDAsMCwwLC4xMil9Lm1hdC10YWItZ3JvdXAtaW52ZXJ0ZWQtaGVhZGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtdGFiLW5hdi1iYXJbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXRhYi1ncm91cC1pbnZlcnRlZC1oZWFkZXJbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC10YWItaGVhZGVyW19uZ2NvbnRlbnQtJUNPTVAlXXtib3JkZXItdG9wOjFweCBzb2xpZCByZ2JhKDAsMCwwLC4xMik7Ym9yZGVyLWJvdHRvbTpub25lfS5tYXQtdGFiLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10YWItbGlua1tfbmdjb250ZW50LSVDT01QJV17Y29sb3I6IzIxMjEyMX0ubWF0LXRhYi1sYWJlbC5tYXQtdGFiLWRpc2FibGVkW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10YWItbGluay5tYXQtdGFiLWRpc2FibGVkW19uZ2NvbnRlbnQtJUNPTVAlXXtjb2xvcjojNzU3NTc1fS5tYXQtdGFiLWhlYWRlci1wYWdpbmF0aW9uLWNoZXZyb25bX25nY29udGVudC0lQ09NUCVde2JvcmRlci1jb2xvcjojMjEyMTIxfS5tYXQtdGFiLWhlYWRlci1wYWdpbmF0aW9uLWRpc2FibGVkW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtdGFiLWhlYWRlci1wYWdpbmF0aW9uLWNoZXZyb25bX25nY29udGVudC0lQ09NUCVde2JvcmRlci1jb2xvcjojNzU3NTc1fS5tYXQtdGFiLWdyb3VwW2NsYXNzKj1tYXQtYmFja2dyb3VuZC1dW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtdGFiLWhlYWRlcltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdGFiLW5hdi1iYXJbY2xhc3MqPW1hdC1iYWNrZ3JvdW5kLV1bX25nY29udGVudC0lQ09NUCVde2JvcmRlci1ib3R0b206bm9uZTtib3JkZXItdG9wOm5vbmV9Lm1hdC10YWItZ3JvdXAubWF0LXByaW1hcnlbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC10YWItbGFiZWwuY2RrLWtleWJvYXJkLWZvY3VzZWRbX25nY29udGVudC0lQ09NUCVdOm5vdCgubWF0LXRhYi1kaXNhYmxlZCksIC5tYXQtdGFiLWdyb3VwLm1hdC1wcmltYXJ5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtdGFiLWxhYmVsLmNkay1wcm9ncmFtLWZvY3VzZWRbX25nY29udGVudC0lQ09NUCVdOm5vdCgubWF0LXRhYi1kaXNhYmxlZCksIC5tYXQtdGFiLWdyb3VwLm1hdC1wcmltYXJ5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtdGFiLWxpbmsuY2RrLWtleWJvYXJkLWZvY3VzZWRbX25nY29udGVudC0lQ09NUCVdOm5vdCgubWF0LXRhYi1kaXNhYmxlZCksIC5tYXQtdGFiLWdyb3VwLm1hdC1wcmltYXJ5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtdGFiLWxpbmsuY2RrLXByb2dyYW0tZm9jdXNlZFtfbmdjb250ZW50LSVDT01QJV06bm90KC5tYXQtdGFiLWRpc2FibGVkKSwgLm1hdC10YWItbmF2LWJhci5tYXQtcHJpbWFyeVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXRhYi1sYWJlbC5jZGsta2V5Ym9hcmQtZm9jdXNlZFtfbmdjb250ZW50LSVDT01QJV06bm90KC5tYXQtdGFiLWRpc2FibGVkKSwgLm1hdC10YWItbmF2LWJhci5tYXQtcHJpbWFyeVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXRhYi1sYWJlbC5jZGstcHJvZ3JhbS1mb2N1c2VkW19uZ2NvbnRlbnQtJUNPTVAlXTpub3QoLm1hdC10YWItZGlzYWJsZWQpLCAubWF0LXRhYi1uYXYtYmFyLm1hdC1wcmltYXJ5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtdGFiLWxpbmsuY2RrLWtleWJvYXJkLWZvY3VzZWRbX25nY29udGVudC0lQ09NUCVdOm5vdCgubWF0LXRhYi1kaXNhYmxlZCksIC5tYXQtdGFiLW5hdi1iYXIubWF0LXByaW1hcnlbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC10YWItbGluay5jZGstcHJvZ3JhbS1mb2N1c2VkW19uZ2NvbnRlbnQtJUNPTVAlXTpub3QoLm1hdC10YWItZGlzYWJsZWQpe2JhY2tncm91bmQtY29sb3I6cmdiYSgyNTUsMTUyLDAsLjMpfS5tYXQtdGFiLWdyb3VwLm1hdC1wcmltYXJ5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaW5rLWJhcltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdGFiLW5hdi1iYXIubWF0LXByaW1hcnlbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pbmstYmFyW19uZ2NvbnRlbnQtJUNPTVAlXXtiYWNrZ3JvdW5kLWNvbG9yOiNmNTdjMDB9Lm1hdC10YWItZ3JvdXAubWF0LXByaW1hcnkubWF0LWJhY2tncm91bmQtcHJpbWFyeVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWluay1iYXJbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXRhYi1uYXYtYmFyLm1hdC1wcmltYXJ5Lm1hdC1iYWNrZ3JvdW5kLXByaW1hcnlbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pbmstYmFyW19uZ2NvbnRlbnQtJUNPTVAlXXtiYWNrZ3JvdW5kLWNvbG9yOiNmZmZ9Lm1hdC10YWItZ3JvdXAubWF0LWFjY2VudFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXRhYi1sYWJlbC5jZGsta2V5Ym9hcmQtZm9jdXNlZFtfbmdjb250ZW50LSVDT01QJV06bm90KC5tYXQtdGFiLWRpc2FibGVkKSwgLm1hdC10YWItZ3JvdXAubWF0LWFjY2VudFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXRhYi1sYWJlbC5jZGstcHJvZ3JhbS1mb2N1c2VkW19uZ2NvbnRlbnQtJUNPTVAlXTpub3QoLm1hdC10YWItZGlzYWJsZWQpLCAubWF0LXRhYi1ncm91cC5tYXQtYWNjZW50W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtdGFiLWxpbmsuY2RrLWtleWJvYXJkLWZvY3VzZWRbX25nY29udGVudC0lQ09NUCVdOm5vdCgubWF0LXRhYi1kaXNhYmxlZCksIC5tYXQtdGFiLWdyb3VwLm1hdC1hY2NlbnRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC10YWItbGluay5jZGstcHJvZ3JhbS1mb2N1c2VkW19uZ2NvbnRlbnQtJUNPTVAlXTpub3QoLm1hdC10YWItZGlzYWJsZWQpLCAubWF0LXRhYi1uYXYtYmFyLm1hdC1hY2NlbnRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC10YWItbGFiZWwuY2RrLWtleWJvYXJkLWZvY3VzZWRbX25nY29udGVudC0lQ09NUCVdOm5vdCgubWF0LXRhYi1kaXNhYmxlZCksIC5tYXQtdGFiLW5hdi1iYXIubWF0LWFjY2VudFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXRhYi1sYWJlbC5jZGstcHJvZ3JhbS1mb2N1c2VkW19uZ2NvbnRlbnQtJUNPTVAlXTpub3QoLm1hdC10YWItZGlzYWJsZWQpLCAubWF0LXRhYi1uYXYtYmFyLm1hdC1hY2NlbnRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC10YWItbGluay5jZGsta2V5Ym9hcmQtZm9jdXNlZFtfbmdjb250ZW50LSVDT01QJV06bm90KC5tYXQtdGFiLWRpc2FibGVkKSwgLm1hdC10YWItbmF2LWJhci5tYXQtYWNjZW50W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtdGFiLWxpbmsuY2RrLXByb2dyYW0tZm9jdXNlZFtfbmdjb250ZW50LSVDT01QJV06bm90KC5tYXQtdGFiLWRpc2FibGVkKXtiYWNrZ3JvdW5kLWNvbG9yOnJnYmEoMjU1LDE1MiwwLC4zKX0ubWF0LXRhYi1ncm91cC5tYXQtYWNjZW50W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaW5rLWJhcltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdGFiLW5hdi1iYXIubWF0LWFjY2VudFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWluay1iYXJbX25nY29udGVudC0lQ09NUCVde2JhY2tncm91bmQtY29sb3I6I2ZmOTgwMH0ubWF0LXRhYi1ncm91cC5tYXQtYWNjZW50Lm1hdC1iYWNrZ3JvdW5kLWFjY2VudFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWluay1iYXJbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXRhYi1uYXYtYmFyLm1hdC1hY2NlbnQubWF0LWJhY2tncm91bmQtYWNjZW50W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaW5rLWJhcltfbmdjb250ZW50LSVDT01QJV17YmFja2dyb3VuZC1jb2xvcjojZmZmfS5tYXQtdGFiLWdyb3VwLm1hdC13YXJuW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtdGFiLWxhYmVsLmNkay1rZXlib2FyZC1mb2N1c2VkW19uZ2NvbnRlbnQtJUNPTVAlXTpub3QoLm1hdC10YWItZGlzYWJsZWQpLCAubWF0LXRhYi1ncm91cC5tYXQtd2Fybltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXRhYi1sYWJlbC5jZGstcHJvZ3JhbS1mb2N1c2VkW19uZ2NvbnRlbnQtJUNPTVAlXTpub3QoLm1hdC10YWItZGlzYWJsZWQpLCAubWF0LXRhYi1ncm91cC5tYXQtd2Fybltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXRhYi1saW5rLmNkay1rZXlib2FyZC1mb2N1c2VkW19uZ2NvbnRlbnQtJUNPTVAlXTpub3QoLm1hdC10YWItZGlzYWJsZWQpLCAubWF0LXRhYi1ncm91cC5tYXQtd2Fybltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXRhYi1saW5rLmNkay1wcm9ncmFtLWZvY3VzZWRbX25nY29udGVudC0lQ09NUCVdOm5vdCgubWF0LXRhYi1kaXNhYmxlZCksIC5tYXQtdGFiLW5hdi1iYXIubWF0LXdhcm5bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC10YWItbGFiZWwuY2RrLWtleWJvYXJkLWZvY3VzZWRbX25nY29udGVudC0lQ09NUCVdOm5vdCgubWF0LXRhYi1kaXNhYmxlZCksIC5tYXQtdGFiLW5hdi1iYXIubWF0LXdhcm5bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC10YWItbGFiZWwuY2RrLXByb2dyYW0tZm9jdXNlZFtfbmdjb250ZW50LSVDT01QJV06bm90KC5tYXQtdGFiLWRpc2FibGVkKSwgLm1hdC10YWItbmF2LWJhci5tYXQtd2Fybltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXRhYi1saW5rLmNkay1rZXlib2FyZC1mb2N1c2VkW19uZ2NvbnRlbnQtJUNPTVAlXTpub3QoLm1hdC10YWItZGlzYWJsZWQpLCAubWF0LXRhYi1uYXYtYmFyLm1hdC13YXJuW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtdGFiLWxpbmsuY2RrLXByb2dyYW0tZm9jdXNlZFtfbmdjb250ZW50LSVDT01QJV06bm90KC5tYXQtdGFiLWRpc2FibGVkKXtiYWNrZ3JvdW5kLWNvbG9yOnJnYmEoMjU1LDIwNSwyMTAsLjMpfS5tYXQtdGFiLWdyb3VwLm1hdC13YXJuW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaW5rLWJhcltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdGFiLW5hdi1iYXIubWF0LXdhcm5bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pbmstYmFyW19uZ2NvbnRlbnQtJUNPTVAlXXtiYWNrZ3JvdW5kLWNvbG9yOiNmNDQzMzZ9Lm1hdC10YWItZ3JvdXAubWF0LXdhcm4ubWF0LWJhY2tncm91bmQtd2Fybltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWluay1iYXJbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXRhYi1uYXYtYmFyLm1hdC13YXJuLm1hdC1iYWNrZ3JvdW5kLXdhcm5bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pbmstYmFyW19uZ2NvbnRlbnQtJUNPTVAlXXtiYWNrZ3JvdW5kLWNvbG9yOiNmZmZ9Lm1hdC10YWItZ3JvdXAubWF0LWJhY2tncm91bmQtcHJpbWFyeVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXRhYi1sYWJlbC5jZGsta2V5Ym9hcmQtZm9jdXNlZFtfbmdjb250ZW50LSVDT01QJV06bm90KC5tYXQtdGFiLWRpc2FibGVkKSwgLm1hdC10YWItZ3JvdXAubWF0LWJhY2tncm91bmQtcHJpbWFyeVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXRhYi1sYWJlbC5jZGstcHJvZ3JhbS1mb2N1c2VkW19uZ2NvbnRlbnQtJUNPTVAlXTpub3QoLm1hdC10YWItZGlzYWJsZWQpLCAubWF0LXRhYi1ncm91cC5tYXQtYmFja2dyb3VuZC1wcmltYXJ5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtdGFiLWxpbmsuY2RrLWtleWJvYXJkLWZvY3VzZWRbX25nY29udGVudC0lQ09NUCVdOm5vdCgubWF0LXRhYi1kaXNhYmxlZCksIC5tYXQtdGFiLWdyb3VwLm1hdC1iYWNrZ3JvdW5kLXByaW1hcnlbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC10YWItbGluay5jZGstcHJvZ3JhbS1mb2N1c2VkW19uZ2NvbnRlbnQtJUNPTVAlXTpub3QoLm1hdC10YWItZGlzYWJsZWQpLCAubWF0LXRhYi1uYXYtYmFyLm1hdC1iYWNrZ3JvdW5kLXByaW1hcnlbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC10YWItbGFiZWwuY2RrLWtleWJvYXJkLWZvY3VzZWRbX25nY29udGVudC0lQ09NUCVdOm5vdCgubWF0LXRhYi1kaXNhYmxlZCksIC5tYXQtdGFiLW5hdi1iYXIubWF0LWJhY2tncm91bmQtcHJpbWFyeVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXRhYi1sYWJlbC5jZGstcHJvZ3JhbS1mb2N1c2VkW19uZ2NvbnRlbnQtJUNPTVAlXTpub3QoLm1hdC10YWItZGlzYWJsZWQpLCAubWF0LXRhYi1uYXYtYmFyLm1hdC1iYWNrZ3JvdW5kLXByaW1hcnlbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC10YWItbGluay5jZGsta2V5Ym9hcmQtZm9jdXNlZFtfbmdjb250ZW50LSVDT01QJV06bm90KC5tYXQtdGFiLWRpc2FibGVkKSwgLm1hdC10YWItbmF2LWJhci5tYXQtYmFja2dyb3VuZC1wcmltYXJ5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtdGFiLWxpbmsuY2RrLXByb2dyYW0tZm9jdXNlZFtfbmdjb250ZW50LSVDT01QJV06bm90KC5tYXQtdGFiLWRpc2FibGVkKXtiYWNrZ3JvdW5kLWNvbG9yOnJnYmEoMjU1LDE1MiwwLC4zKX0ubWF0LXRhYi1ncm91cC5tYXQtYmFja2dyb3VuZC1wcmltYXJ5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtdGFiLWhlYWRlcltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdGFiLWdyb3VwLm1hdC1iYWNrZ3JvdW5kLXByaW1hcnlbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC10YWItbGlua3NbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXRhYi1ncm91cC5tYXQtYmFja2dyb3VuZC1wcmltYXJ5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtdGFiLWhlYWRlci1wYWdpbmF0aW9uW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10YWItbmF2LWJhci5tYXQtYmFja2dyb3VuZC1wcmltYXJ5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtdGFiLWhlYWRlcltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdGFiLW5hdi1iYXIubWF0LWJhY2tncm91bmQtcHJpbWFyeVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXRhYi1saW5rc1tfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdGFiLW5hdi1iYXIubWF0LWJhY2tncm91bmQtcHJpbWFyeVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXRhYi1oZWFkZXItcGFnaW5hdGlvbltfbmdjb250ZW50LSVDT01QJV17YmFja2dyb3VuZC1jb2xvcjojZjU3YzAwfS5tYXQtdGFiLWdyb3VwLm1hdC1iYWNrZ3JvdW5kLXByaW1hcnlbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC10YWItbGFiZWxbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXRhYi1ncm91cC5tYXQtYmFja2dyb3VuZC1wcmltYXJ5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtdGFiLWxpbmtbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXRhYi1uYXYtYmFyLm1hdC1iYWNrZ3JvdW5kLXByaW1hcnlbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC10YWItbGFiZWxbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXRhYi1uYXYtYmFyLm1hdC1iYWNrZ3JvdW5kLXByaW1hcnlbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC10YWItbGlua1tfbmdjb250ZW50LSVDT01QJV17Y29sb3I6I2ZmZn0ubWF0LXRhYi1ncm91cC5tYXQtYmFja2dyb3VuZC1wcmltYXJ5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtdGFiLWxhYmVsLm1hdC10YWItZGlzYWJsZWRbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXRhYi1ncm91cC5tYXQtYmFja2dyb3VuZC1wcmltYXJ5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtdGFiLWxpbmsubWF0LXRhYi1kaXNhYmxlZFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdGFiLW5hdi1iYXIubWF0LWJhY2tncm91bmQtcHJpbWFyeVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXRhYi1sYWJlbC5tYXQtdGFiLWRpc2FibGVkW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10YWItbmF2LWJhci5tYXQtYmFja2dyb3VuZC1wcmltYXJ5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtdGFiLWxpbmsubWF0LXRhYi1kaXNhYmxlZFtfbmdjb250ZW50LSVDT01QJV17Y29sb3I6cmdiYSgyNTUsMjU1LDI1NSwuNCl9Lm1hdC10YWItZ3JvdXAubWF0LWJhY2tncm91bmQtcHJpbWFyeVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXRhYi1oZWFkZXItcGFnaW5hdGlvbi1jaGV2cm9uW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10YWItbmF2LWJhci5tYXQtYmFja2dyb3VuZC1wcmltYXJ5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtdGFiLWhlYWRlci1wYWdpbmF0aW9uLWNoZXZyb25bX25nY29udGVudC0lQ09NUCVde2JvcmRlci1jb2xvcjojZmZmfS5tYXQtdGFiLWdyb3VwLm1hdC1iYWNrZ3JvdW5kLXByaW1hcnlbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC10YWItaGVhZGVyLXBhZ2luYXRpb24tZGlzYWJsZWRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC10YWItaGVhZGVyLXBhZ2luYXRpb24tY2hldnJvbltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdGFiLW5hdi1iYXIubWF0LWJhY2tncm91bmQtcHJpbWFyeVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXRhYi1oZWFkZXItcGFnaW5hdGlvbi1kaXNhYmxlZFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXRhYi1oZWFkZXItcGFnaW5hdGlvbi1jaGV2cm9uW19uZ2NvbnRlbnQtJUNPTVAlXXtib3JkZXItY29sb3I6cmdiYSgyNTUsMjU1LDI1NSwuNCl9Lm1hdC10YWItZ3JvdXAubWF0LWJhY2tncm91bmQtcHJpbWFyeVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXJpcHBsZS1lbGVtZW50W19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10YWItbmF2LWJhci5tYXQtYmFja2dyb3VuZC1wcmltYXJ5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtcmlwcGxlLWVsZW1lbnRbX25nY29udGVudC0lQ09NUCVde2JhY2tncm91bmQtY29sb3I6cmdiYSgyNTUsMjU1LDI1NSwuMTIpfS5tYXQtdGFiLWdyb3VwLm1hdC1iYWNrZ3JvdW5kLWFjY2VudFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXRhYi1sYWJlbC5jZGsta2V5Ym9hcmQtZm9jdXNlZFtfbmdjb250ZW50LSVDT01QJV06bm90KC5tYXQtdGFiLWRpc2FibGVkKSwgLm1hdC10YWItZ3JvdXAubWF0LWJhY2tncm91bmQtYWNjZW50W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtdGFiLWxhYmVsLmNkay1wcm9ncmFtLWZvY3VzZWRbX25nY29udGVudC0lQ09NUCVdOm5vdCgubWF0LXRhYi1kaXNhYmxlZCksIC5tYXQtdGFiLWdyb3VwLm1hdC1iYWNrZ3JvdW5kLWFjY2VudFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXRhYi1saW5rLmNkay1rZXlib2FyZC1mb2N1c2VkW19uZ2NvbnRlbnQtJUNPTVAlXTpub3QoLm1hdC10YWItZGlzYWJsZWQpLCAubWF0LXRhYi1ncm91cC5tYXQtYmFja2dyb3VuZC1hY2NlbnRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC10YWItbGluay5jZGstcHJvZ3JhbS1mb2N1c2VkW19uZ2NvbnRlbnQtJUNPTVAlXTpub3QoLm1hdC10YWItZGlzYWJsZWQpLCAubWF0LXRhYi1uYXYtYmFyLm1hdC1iYWNrZ3JvdW5kLWFjY2VudFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXRhYi1sYWJlbC5jZGsta2V5Ym9hcmQtZm9jdXNlZFtfbmdjb250ZW50LSVDT01QJV06bm90KC5tYXQtdGFiLWRpc2FibGVkKSwgLm1hdC10YWItbmF2LWJhci5tYXQtYmFja2dyb3VuZC1hY2NlbnRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC10YWItbGFiZWwuY2RrLXByb2dyYW0tZm9jdXNlZFtfbmdjb250ZW50LSVDT01QJV06bm90KC5tYXQtdGFiLWRpc2FibGVkKSwgLm1hdC10YWItbmF2LWJhci5tYXQtYmFja2dyb3VuZC1hY2NlbnRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC10YWItbGluay5jZGsta2V5Ym9hcmQtZm9jdXNlZFtfbmdjb250ZW50LSVDT01QJV06bm90KC5tYXQtdGFiLWRpc2FibGVkKSwgLm1hdC10YWItbmF2LWJhci5tYXQtYmFja2dyb3VuZC1hY2NlbnRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC10YWItbGluay5jZGstcHJvZ3JhbS1mb2N1c2VkW19uZ2NvbnRlbnQtJUNPTVAlXTpub3QoLm1hdC10YWItZGlzYWJsZWQpe2JhY2tncm91bmQtY29sb3I6cmdiYSgyNTUsMTUyLDAsLjMpfS5tYXQtdGFiLWdyb3VwLm1hdC1iYWNrZ3JvdW5kLWFjY2VudFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXRhYi1oZWFkZXJbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXRhYi1ncm91cC5tYXQtYmFja2dyb3VuZC1hY2NlbnRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC10YWItbGlua3NbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXRhYi1ncm91cC5tYXQtYmFja2dyb3VuZC1hY2NlbnRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC10YWItaGVhZGVyLXBhZ2luYXRpb25bX25nY29udGVudC0lQ09NUCVdLCAubWF0LXRhYi1uYXYtYmFyLm1hdC1iYWNrZ3JvdW5kLWFjY2VudFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXRhYi1oZWFkZXJbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXRhYi1uYXYtYmFyLm1hdC1iYWNrZ3JvdW5kLWFjY2VudFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXRhYi1saW5rc1tfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdGFiLW5hdi1iYXIubWF0LWJhY2tncm91bmQtYWNjZW50W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtdGFiLWhlYWRlci1wYWdpbmF0aW9uW19uZ2NvbnRlbnQtJUNPTVAlXXtiYWNrZ3JvdW5kLWNvbG9yOiNmZjk4MDB9Lm1hdC10YWItZ3JvdXAubWF0LWJhY2tncm91bmQtYWNjZW50W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtdGFiLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10YWItZ3JvdXAubWF0LWJhY2tncm91bmQtYWNjZW50W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtdGFiLWxpbmtbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXRhYi1uYXYtYmFyLm1hdC1iYWNrZ3JvdW5kLWFjY2VudFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXRhYi1sYWJlbFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdGFiLW5hdi1iYXIubWF0LWJhY2tncm91bmQtYWNjZW50W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtdGFiLWxpbmtbX25nY29udGVudC0lQ09NUCVde2NvbG9yOiNmZmZ9Lm1hdC10YWItZ3JvdXAubWF0LWJhY2tncm91bmQtYWNjZW50W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtdGFiLWxhYmVsLm1hdC10YWItZGlzYWJsZWRbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXRhYi1ncm91cC5tYXQtYmFja2dyb3VuZC1hY2NlbnRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC10YWItbGluay5tYXQtdGFiLWRpc2FibGVkW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10YWItbmF2LWJhci5tYXQtYmFja2dyb3VuZC1hY2NlbnRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC10YWItbGFiZWwubWF0LXRhYi1kaXNhYmxlZFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdGFiLW5hdi1iYXIubWF0LWJhY2tncm91bmQtYWNjZW50W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtdGFiLWxpbmsubWF0LXRhYi1kaXNhYmxlZFtfbmdjb250ZW50LSVDT01QJV17Y29sb3I6cmdiYSgyNTUsMjU1LDI1NSwuNCl9Lm1hdC10YWItZ3JvdXAubWF0LWJhY2tncm91bmQtYWNjZW50W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtdGFiLWhlYWRlci1wYWdpbmF0aW9uLWNoZXZyb25bX25nY29udGVudC0lQ09NUCVdLCAubWF0LXRhYi1uYXYtYmFyLm1hdC1iYWNrZ3JvdW5kLWFjY2VudFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXRhYi1oZWFkZXItcGFnaW5hdGlvbi1jaGV2cm9uW19uZ2NvbnRlbnQtJUNPTVAlXXtib3JkZXItY29sb3I6I2ZmZn0ubWF0LXRhYi1ncm91cC5tYXQtYmFja2dyb3VuZC1hY2NlbnRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC10YWItaGVhZGVyLXBhZ2luYXRpb24tZGlzYWJsZWRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC10YWItaGVhZGVyLXBhZ2luYXRpb24tY2hldnJvbltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdGFiLW5hdi1iYXIubWF0LWJhY2tncm91bmQtYWNjZW50W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtdGFiLWhlYWRlci1wYWdpbmF0aW9uLWRpc2FibGVkW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtdGFiLWhlYWRlci1wYWdpbmF0aW9uLWNoZXZyb25bX25nY29udGVudC0lQ09NUCVde2JvcmRlci1jb2xvcjpyZ2JhKDI1NSwyNTUsMjU1LC40KX0ubWF0LXRhYi1ncm91cC5tYXQtYmFja2dyb3VuZC1hY2NlbnRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1yaXBwbGUtZWxlbWVudFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdGFiLW5hdi1iYXIubWF0LWJhY2tncm91bmQtYWNjZW50W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtcmlwcGxlLWVsZW1lbnRbX25nY29udGVudC0lQ09NUCVde2JhY2tncm91bmQtY29sb3I6cmdiYSgyNTUsMjU1LDI1NSwuMTIpfS5tYXQtdGFiLWdyb3VwLm1hdC1iYWNrZ3JvdW5kLXdhcm5bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC10YWItbGFiZWwuY2RrLWtleWJvYXJkLWZvY3VzZWRbX25nY29udGVudC0lQ09NUCVdOm5vdCgubWF0LXRhYi1kaXNhYmxlZCksIC5tYXQtdGFiLWdyb3VwLm1hdC1iYWNrZ3JvdW5kLXdhcm5bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC10YWItbGFiZWwuY2RrLXByb2dyYW0tZm9jdXNlZFtfbmdjb250ZW50LSVDT01QJV06bm90KC5tYXQtdGFiLWRpc2FibGVkKSwgLm1hdC10YWItZ3JvdXAubWF0LWJhY2tncm91bmQtd2Fybltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXRhYi1saW5rLmNkay1rZXlib2FyZC1mb2N1c2VkW19uZ2NvbnRlbnQtJUNPTVAlXTpub3QoLm1hdC10YWItZGlzYWJsZWQpLCAubWF0LXRhYi1ncm91cC5tYXQtYmFja2dyb3VuZC13YXJuW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtdGFiLWxpbmsuY2RrLXByb2dyYW0tZm9jdXNlZFtfbmdjb250ZW50LSVDT01QJV06bm90KC5tYXQtdGFiLWRpc2FibGVkKSwgLm1hdC10YWItbmF2LWJhci5tYXQtYmFja2dyb3VuZC13YXJuW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtdGFiLWxhYmVsLmNkay1rZXlib2FyZC1mb2N1c2VkW19uZ2NvbnRlbnQtJUNPTVAlXTpub3QoLm1hdC10YWItZGlzYWJsZWQpLCAubWF0LXRhYi1uYXYtYmFyLm1hdC1iYWNrZ3JvdW5kLXdhcm5bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC10YWItbGFiZWwuY2RrLXByb2dyYW0tZm9jdXNlZFtfbmdjb250ZW50LSVDT01QJV06bm90KC5tYXQtdGFiLWRpc2FibGVkKSwgLm1hdC10YWItbmF2LWJhci5tYXQtYmFja2dyb3VuZC13YXJuW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtdGFiLWxpbmsuY2RrLWtleWJvYXJkLWZvY3VzZWRbX25nY29udGVudC0lQ09NUCVdOm5vdCgubWF0LXRhYi1kaXNhYmxlZCksIC5tYXQtdGFiLW5hdi1iYXIubWF0LWJhY2tncm91bmQtd2Fybltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXRhYi1saW5rLmNkay1wcm9ncmFtLWZvY3VzZWRbX25nY29udGVudC0lQ09NUCVdOm5vdCgubWF0LXRhYi1kaXNhYmxlZCl7YmFja2dyb3VuZC1jb2xvcjpyZ2JhKDI1NSwyMDUsMjEwLC4zKX0ubWF0LXRhYi1ncm91cC5tYXQtYmFja2dyb3VuZC13YXJuW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtdGFiLWhlYWRlcltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdGFiLWdyb3VwLm1hdC1iYWNrZ3JvdW5kLXdhcm5bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC10YWItbGlua3NbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXRhYi1ncm91cC5tYXQtYmFja2dyb3VuZC13YXJuW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtdGFiLWhlYWRlci1wYWdpbmF0aW9uW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10YWItbmF2LWJhci5tYXQtYmFja2dyb3VuZC13YXJuW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtdGFiLWhlYWRlcltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdGFiLW5hdi1iYXIubWF0LWJhY2tncm91bmQtd2Fybltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXRhYi1saW5rc1tfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdGFiLW5hdi1iYXIubWF0LWJhY2tncm91bmQtd2Fybltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXRhYi1oZWFkZXItcGFnaW5hdGlvbltfbmdjb250ZW50LSVDT01QJV17YmFja2dyb3VuZC1jb2xvcjojZjQ0MzM2fS5tYXQtdGFiLWdyb3VwLm1hdC1iYWNrZ3JvdW5kLXdhcm5bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC10YWItbGFiZWxbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXRhYi1ncm91cC5tYXQtYmFja2dyb3VuZC13YXJuW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtdGFiLWxpbmtbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXRhYi1uYXYtYmFyLm1hdC1iYWNrZ3JvdW5kLXdhcm5bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC10YWItbGFiZWxbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXRhYi1uYXYtYmFyLm1hdC1iYWNrZ3JvdW5kLXdhcm5bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC10YWItbGlua1tfbmdjb250ZW50LSVDT01QJV17Y29sb3I6I2ZmZn0ubWF0LXRhYi1ncm91cC5tYXQtYmFja2dyb3VuZC13YXJuW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtdGFiLWxhYmVsLm1hdC10YWItZGlzYWJsZWRbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXRhYi1ncm91cC5tYXQtYmFja2dyb3VuZC13YXJuW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtdGFiLWxpbmsubWF0LXRhYi1kaXNhYmxlZFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdGFiLW5hdi1iYXIubWF0LWJhY2tncm91bmQtd2Fybltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXRhYi1sYWJlbC5tYXQtdGFiLWRpc2FibGVkW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10YWItbmF2LWJhci5tYXQtYmFja2dyb3VuZC13YXJuW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtdGFiLWxpbmsubWF0LXRhYi1kaXNhYmxlZFtfbmdjb250ZW50LSVDT01QJV17Y29sb3I6cmdiYSgyNTUsMjU1LDI1NSwuNCl9Lm1hdC10YWItZ3JvdXAubWF0LWJhY2tncm91bmQtd2Fybltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXRhYi1oZWFkZXItcGFnaW5hdGlvbi1jaGV2cm9uW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10YWItbmF2LWJhci5tYXQtYmFja2dyb3VuZC13YXJuW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtdGFiLWhlYWRlci1wYWdpbmF0aW9uLWNoZXZyb25bX25nY29udGVudC0lQ09NUCVde2JvcmRlci1jb2xvcjojZmZmfS5tYXQtdGFiLWdyb3VwLm1hdC1iYWNrZ3JvdW5kLXdhcm5bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC10YWItaGVhZGVyLXBhZ2luYXRpb24tZGlzYWJsZWRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC10YWItaGVhZGVyLXBhZ2luYXRpb24tY2hldnJvbltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdGFiLW5hdi1iYXIubWF0LWJhY2tncm91bmQtd2Fybltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXRhYi1oZWFkZXItcGFnaW5hdGlvbi1kaXNhYmxlZFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXRhYi1oZWFkZXItcGFnaW5hdGlvbi1jaGV2cm9uW19uZ2NvbnRlbnQtJUNPTVAlXXtib3JkZXItY29sb3I6cmdiYSgyNTUsMjU1LDI1NSwuNCl9Lm1hdC10YWItZ3JvdXAubWF0LWJhY2tncm91bmQtd2Fybltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXJpcHBsZS1lbGVtZW50W19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10YWItbmF2LWJhci5tYXQtYmFja2dyb3VuZC13YXJuW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtcmlwcGxlLWVsZW1lbnRbX25nY29udGVudC0lQ09NUCVde2JhY2tncm91bmQtY29sb3I6cmdiYSgyNTUsMjU1LDI1NSwuMTIpfS5tYXQtdG9vbGJhcltfbmdjb250ZW50LSVDT01QJV17YmFja2dyb3VuZDojZjVmNWY1O2NvbG9yOiMyMTIxMjF9Lm1hdC10b29sYmFyLm1hdC1wcmltYXJ5W19uZ2NvbnRlbnQtJUNPTVAlXXtiYWNrZ3JvdW5kOiNmNTdjMDA7Y29sb3I6I2ZmZn0ubWF0LXRvb2xiYXIubWF0LWFjY2VudFtfbmdjb250ZW50LSVDT01QJV17YmFja2dyb3VuZDojZmY5ODAwO2NvbG9yOiNmZmZ9Lm1hdC10b29sYmFyLm1hdC13YXJuW19uZ2NvbnRlbnQtJUNPTVAlXXtiYWNrZ3JvdW5kOiNmNDQzMzY7Y29sb3I6I2ZmZn0ubWF0LXRvb2xiYXJbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLXVuZGVybGluZVtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdG9vbGJhcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtcmlwcGxlW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10b29sYmFyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9jdXNlZFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtcmlwcGxlW19uZ2NvbnRlbnQtJUNPTVAlXXtiYWNrZ3JvdW5kLWNvbG9yOmN1cnJlbnRDb2xvcn0ubWF0LXRvb2xiYXJbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10b29sYmFyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9jdXNlZFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXRvb2xiYXJbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1zZWxlY3QtdmFsdWVbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXRvb2xiYXJbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1zZWxlY3QtYXJyb3dbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXRvb2xiYXJbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLm1hdC1mb2N1c2VkW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtc2VsZWN0LWFycm93W19uZ2NvbnRlbnQtJUNPTVAlXXtjb2xvcjppbmhlcml0fS5tYXQtdG9vbGJhcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWlucHV0LWVsZW1lbnRbX25nY29udGVudC0lQ09NUCVde2NhcmV0LWNvbG9yOmN1cnJlbnRDb2xvcn0ubWF0LXRvb2xiYXItbXVsdGlwbGUtcm93c1tfbmdjb250ZW50LSVDT01QJV17bWluLWhlaWdodDo2NHB4fS5tYXQtdG9vbGJhci1yb3dbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXRvb2xiYXItc2luZ2xlLXJvd1tfbmdjb250ZW50LSVDT01QJV17aGVpZ2h0OjY0cHh9QG1lZGlhKG1heC13aWR0aDogNTk5cHgpey5tYXQtdG9vbGJhci1tdWx0aXBsZS1yb3dzW19uZ2NvbnRlbnQtJUNPTVAlXXttaW4taGVpZ2h0OjU2cHh9Lm1hdC10b29sYmFyLXJvd1tfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdG9vbGJhci1zaW5nbGUtcm93W19uZ2NvbnRlbnQtJUNPTVAlXXtoZWlnaHQ6NTZweH19Lm1hdC10b29sdGlwW19uZ2NvbnRlbnQtJUNPTVAlXXtiYWNrZ3JvdW5kOnJnYmEoOTcsOTcsOTcsLjkpfS5tYXQtdHJlZVtfbmdjb250ZW50LSVDT01QJV17YmFja2dyb3VuZDojZmZmfS5tYXQtdHJlZS1ub2RlW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1uZXN0ZWQtdHJlZS1ub2RlW19uZ2NvbnRlbnQtJUNPTVAlXXtjb2xvcjojMjEyMTIxfS5tYXQtdHJlZS1ub2RlW19uZ2NvbnRlbnQtJUNPTVAlXXttaW4taGVpZ2h0OjQ4cHh9Lm1hdC1zbmFjay1iYXItY29udGFpbmVyW19uZ2NvbnRlbnQtJUNPTVAlXXtjb2xvcjpyZ2JhKDI1NSwyNTUsMjU1LC43KTtiYWNrZ3JvdW5kOiMzMjMyMzI7Ym94LXNoYWRvdzowcHggM3B4IDVweCAtMXB4IHJnYmEoMCwgMCwgMCwgMC4yKSwwcHggNnB4IDEwcHggMHB4IHJnYmEoMCwgMCwgMCwgMC4xNCksMHB4IDFweCAxOHB4IDBweCByZ2JhKDAsIDAsIDAsIDAuMTIpfS5tYXQtc2ltcGxlLXNuYWNrYmFyLWFjdGlvbltfbmdjb250ZW50LSVDT01QJV17Y29sb3I6I2ZmOTgwMH1bX25naG9zdC0lQ09NUCVde2NvbG9yOiM2MTYxNjE7Zm9udC1zaXplOjEycHh9c2VjdGlvbltfbmdjb250ZW50LSVDT01QJV17Ym9yZGVyLWJvdHRvbToxcHggc29saWQgI2ViZWJlYjtwYWRkaW5nOjE2cHh9LnNlY3Rpb24tdGl0bGVbX25nY29udGVudC0lQ09NUCVde2NvbG9yOiMyMTIxMjE7dGV4dC10cmFuc2Zvcm06dXBwZXJjYXNlO2ZvbnQtd2VpZ2h0OjUwMDtmb250LXNpemU6MTNweDtsaW5lLWhlaWdodDpub3JtYWw7bWFyZ2luOjAgMCAxMnB4IDB9c2VjdGlvbltfbmdjb250ZW50LSVDT01QJV0gICAuY29udHJvbC1yb3dbX25nY29udGVudC0lQ09NUCVdOm5vdCg6bGFzdC1jaGlsZCl7bWFyZ2luLWJvdHRvbToxMnB4fS5jb250cm9sLW5hbWVbX25nY29udGVudC0lQ09NUCVde21hcmdpbi1ib3R0b206OHB4fS5zbGlkZXItcm93W19uZ2NvbnRlbnQtJUNPTVAlXXtkaXNwbGF5OmZsZXg7YWxpZ24taXRlbXM6Y2VudGVyO2hlaWdodDoyOHB4fS5zbGlkZXItcm93W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5yZXNldC1idXR0b25bX25nY29udGVudC0lQ09NUCVde21hcmdpbi1sZWZ0OjZweH0uc2xpZGVyLXJvd1tfbmdjb250ZW50LSVDT01QJV0gICAuc2xpZGVyLWlucHV0W19uZ2NvbnRlbnQtJUNPTVAlXXtib3JkZXI6MXB4IHNvbGlkICM4ZTk4YTM7Ym9yZGVyLXJhZGl1czoycHg7Ym94LXNpemluZzpib3JkZXItYm94O2hlaWdodDoxMDAlO21hcmdpbi1sZWZ0OjEycHg7cGFkZGluZzowIDRweH0uc2NhbGFycy1zbW9vdGhpbmdbX25nY29udGVudC0lQ09NUCVdICAgLnNsaWRlci1pbnB1dFtfbmdjb250ZW50LSVDT01QJV17ZmxleDpub25lO3dpZHRoOjVlbX0uc2NhbGFycy1wYXJ0aXRpb24teFtfbmdjb250ZW50LSVDT01QJV17YWxpZ24taXRlbXM6Y2VudGVyO2Rpc3BsYXk6ZmxleH0uc2NhbGFycy1wYXJ0aXRpb24teFtfbmdjb250ZW50LSVDT01QJV0gICAuaW5mb1tfbmdjb250ZW50LSVDT01QJV17aGVpZ2h0OjE1cHg7bWFyZ2luLWxlZnQ6NXB4O3dpZHRoOjE1cHh9bWF0LXNsaWRlcltfbmdjb250ZW50LSVDT01QJV17ZmxleDoxO21hcmdpbi1sZWZ0Oi04cHg7bWFyZ2luLXJpZ2h0Oi04cHh9dGItZHJvcGRvd25bX25nY29udGVudC0lQ09NUCVde2Rpc3BsYXk6YmxvY2t9J10sY2hhbmdlRGV0ZWN0aW9uOjB9KTtjbGFzcyBGbXR7Y29uc3RydWN0b3IodCl7dGhpcy5zdG9yZT10LHRoaXMudG9vbHRpcFNvcnQkPXRoaXMuc3RvcmUuc2VsZWN0KGREKSx0aGlzLmlnbm9yZU91dGxpZXJzJD10aGlzLnN0b3JlLnNlbGVjdChnRCksdGhpcy54QXhpc1R5cGUkPXRoaXMuc3RvcmUuc2VsZWN0KHBEKSx0aGlzLmhpc3RvZ3JhbU1vZGUkPXRoaXMuc3RvcmUuc2VsZWN0KGJEKSx0aGlzLnNjYWxhclNtb290aGluZyQ9dGhpcy5zdG9yZS5zZWxlY3QodUQpLHRoaXMuc2NhbGFyUGFydGl0aW9uWCQ9dGhpcy5zdG9yZS5zZWxlY3QoZkQpLHRoaXMuaW1hZ2VCcmlnaHRuZXNzSW5NaWxsaSQ9dGhpcy5zdG9yZS5zZWxlY3QoaEQpLHRoaXMuaW1hZ2VDb250cmFzdEluTWlsbGkkPXRoaXMuc3RvcmUuc2VsZWN0KF9EKSx0aGlzLmltYWdlU2hvd0FjdHVhbFNpemUkPXRoaXMuc3RvcmUuc2VsZWN0KENEKX1vblRvb2x0aXBTb3J0Q2hhbmdlZCh0KXt0aGlzLnN0b3JlLmRpc3BhdGNoKG1LKHtzb3J0OnR9KSl9b25JZ25vcmVPdXRsaWVyc0NoYW5nZWQoKXt0aGlzLnN0b3JlLmRpc3BhdGNoKGRLKCkpfW9uWEF4aXNUeXBlQ2hhbmdlZCh0KXt0aGlzLnN0b3JlLmRpc3BhdGNoKGdLKHt4QXhpc1R5cGU6dH0pKX1vbkhpc3RvZ3JhbU1vZGVDaGFuZ2VkKHQpe3RoaXMuc3RvcmUuZGlzcGF0Y2goTUsoe2hpc3RvZ3JhbU1vZGU6dH0pKX1vblNjYWxhclNtb290aGluZ0NoYW5nZWQodCl7dGhpcy5zdG9yZS5kaXNwYXRjaChwSyh7c21vb3RoaW5nOnR9KSl9b25TY2FsYXJQYXJ0aXRpb25YVG9nZ2xlZCgpe3RoaXMuc3RvcmUuZGlzcGF0Y2goYksoKSl9b25JbWFnZUJyaWdodG5lc3NJbk1pbGxpQ2hhbmdlZCh0KXt0aGlzLnN0b3JlLmRpc3BhdGNoKHVLKHticmlnaHRuZXNzSW5NaWxsaTp0fSkpfW9uSW1hZ2VCcmlnaHRuZXNzUmVzZXQoKXt0aGlzLnN0b3JlLmRpc3BhdGNoKGhLKCkpfW9uSW1hZ2VDb250cmFzdFJlc2V0KCl7dGhpcy5zdG9yZS5kaXNwYXRjaChfSygpKX1vbkltYWdlQ29udHJhc3RJbk1pbGxpQ2hhbmdlZCh0KXt0aGlzLnN0b3JlLmRpc3BhdGNoKGZLKHtjb250cmFzdEluTWlsbGk6dH0pKX1vbkltYWdlU2hvd0FjdHVhbFNpemVDaGFuZ2VkKCl7dGhpcy5zdG9yZS5kaXNwYXRjaChDSygpKX19Rm10Lsm1ZmFjPWZ1bmN0aW9uIHQobil7cmV0dXJuIG5ldyhufHxGbXQpKFpnKGN2KSl9LEZtdC7JtWNtcD1fbyh7dHlwZTpGbXQsc2VsZWN0b3JzOltbIm1ldHJpY3MtZGFzaGJvYXJkLXNldHRpbmdzIl1dLGRlY2xzOjEwLHZhcnM6MjcsY29uc3RzOltbMywidG9vbHRpcFNvcnQiLCJpZ25vcmVPdXRsaWVycyIsInhBeGlzVHlwZSIsImhpc3RvZ3JhbU1vZGUiLCJzY2FsYXJTbW9vdGhpbmciLCJzY2FsYXJQYXJ0aXRpb25YIiwiaW1hZ2VCcmlnaHRuZXNzSW5NaWxsaSIsImltYWdlQ29udHJhc3RJbk1pbGxpIiwiaW1hZ2VTaG93QWN0dWFsU2l6ZSIsInRvb2x0aXBTb3J0Q2hhbmdlZCIsImlnbm9yZU91dGxpZXJzQ2hhbmdlZCIsInhBeGlzVHlwZUNoYW5nZWQiLCJoaXN0b2dyYW1Nb2RlQ2hhbmdlZCIsInNjYWxhclNtb290aGluZ0NoYW5nZWQiLCJzY2FsYXJQYXJ0aXRpb25YVG9nZ2xlZCIsImltYWdlQnJpZ2h0bmVzc0luTWlsbGlDaGFuZ2VkIiwiaW1hZ2VCcmlnaHRuZXNzUmVzZXQiLCJpbWFnZUNvbnRyYXN0SW5NaWxsaUNoYW5nZWQiLCJpbWFnZUNvbnRyYXN0UmVzZXQiLCJpbWFnZVNob3dBY3R1YWxTaXplQ2hhbmdlZCJdXSx0ZW1wbGF0ZTpmdW5jdGlvbiB0KG4sZSl7MSZuJiYoS2coMCwibWV0cmljcy1kYXNoYm9hcmQtc2V0dGluZ3MtY29tcG9uZW50IiwwKSxjcCgidG9vbHRpcFNvcnRDaGFuZ2VkIiwoZnVuY3Rpb24gdChuKXtyZXR1cm4gZS5vblRvb2x0aXBTb3J0Q2hhbmdlZChuKX0pKSgiaWdub3JlT3V0bGllcnNDaGFuZ2VkIiwoZnVuY3Rpb24gdCgpe3JldHVybiBlLm9uSWdub3JlT3V0bGllcnNDaGFuZ2VkKCl9KSkoInhBeGlzVHlwZUNoYW5nZWQiLChmdW5jdGlvbiB0KG4pe3JldHVybiBlLm9uWEF4aXNUeXBlQ2hhbmdlZChuKX0pKSgiaGlzdG9ncmFtTW9kZUNoYW5nZWQiLChmdW5jdGlvbiB0KG4pe3JldHVybiBlLm9uSGlzdG9ncmFtTW9kZUNoYW5nZWQobil9KSkoInNjYWxhclNtb290aGluZ0NoYW5nZWQiLChmdW5jdGlvbiB0KG4pe3JldHVybiBlLm9uU2NhbGFyU21vb3RoaW5nQ2hhbmdlZChuKX0pKSgic2NhbGFyUGFydGl0aW9uWFRvZ2dsZWQiLChmdW5jdGlvbiB0KCl7cmV0dXJuIGUub25TY2FsYXJQYXJ0aXRpb25YVG9nZ2xlZCgpfSkpKCJpbWFnZUJyaWdodG5lc3NJbk1pbGxpQ2hhbmdlZCIsKGZ1bmN0aW9uIHQobil7cmV0dXJuIGUub25JbWFnZUJyaWdodG5lc3NJbk1pbGxpQ2hhbmdlZChuKX0pKSgiaW1hZ2VCcmlnaHRuZXNzUmVzZXQiLChmdW5jdGlvbiB0KCl7cmV0dXJuIGUub25JbWFnZUJyaWdodG5lc3NSZXNldCgpfSkpKCJpbWFnZUNvbnRyYXN0SW5NaWxsaUNoYW5nZWQiLChmdW5jdGlvbiB0KG4pe3JldHVybiBlLm9uSW1hZ2VDb250cmFzdEluTWlsbGlDaGFuZ2VkKG4pfSkpKCJpbWFnZUNvbnRyYXN0UmVzZXQiLChmdW5jdGlvbiB0KCl7cmV0dXJuIGUub25JbWFnZUNvbnRyYXN0UmVzZXQoKX0pKSgiaW1hZ2VTaG93QWN0dWFsU2l6ZUNoYW5nZWQiLChmdW5jdGlvbiB0KCl7cmV0dXJuIGUub25JbWFnZVNob3dBY3R1YWxTaXplQ2hhbmdlZCgpfSkpLHlmKDEsImFzeW5jIikseWYoMiwiYXN5bmMiKSx5ZigzLCJhc3luYyIpLHlmKDQsImFzeW5jIikseWYoNSwiYXN5bmMiKSx5Zig2LCJhc3luYyIpLHlmKDcsImFzeW5jIikseWYoOCwiYXN5bmMiKSx5Zig5LCJhc3luYyIpLCRnKCkpLDImbiYmSmcoInRvb2x0aXBTb3J0IixrZigxLDksZS50b29sdGlwU29ydCQpKSgiaWdub3JlT3V0bGllcnMiLGtmKDIsMTEsZS5pZ25vcmVPdXRsaWVycyQpKSgieEF4aXNUeXBlIixrZigzLDEzLGUueEF4aXNUeXBlJCkpKCJoaXN0b2dyYW1Nb2RlIixrZig0LDE1LGUuaGlzdG9ncmFtTW9kZSQpKSgic2NhbGFyU21vb3RoaW5nIixrZig1LDE3LGUuc2NhbGFyU21vb3RoaW5nJCkpKCJzY2FsYXJQYXJ0aXRpb25YIixrZig2LDE5LGUuc2NhbGFyUGFydGl0aW9uWCQpKSgiaW1hZ2VCcmlnaHRuZXNzSW5NaWxsaSIsa2YoNywyMSxlLmltYWdlQnJpZ2h0bmVzc0luTWlsbGkkKSkoImltYWdlQ29udHJhc3RJbk1pbGxpIixrZig4LDIzLGUuaW1hZ2VDb250cmFzdEluTWlsbGkkKSkoImltYWdlU2hvd0FjdHVhbFNpemUiLGtmKDksMjUsZS5pbWFnZVNob3dBY3R1YWxTaXplJCkpfSxkaXJlY3RpdmVzOltObXRdLHBpcGVzOltvT10sZW5jYXBzdWxhdGlvbjoyLGNoYW5nZURldGVjdGlvbjowfSk7Y2xhc3MgTG10e31mdW5jdGlvbiBIbXQodCxuKXsxJnQmJnRwKDAsIm1ldHJpY3MtZmlsdGVyZWQtdmlldyIsOCksMiZ0JiZKZygiY2FyZE9ic2VydmVyIixncCgpLmNhcmRPYnNlcnZlcil9ZnVuY3Rpb24gQm10KHQsbil7MSZ0JiZ0cCgwLCJtZXRyaWNzLXBpbm5lZC12aWV3Iiw4KSwyJnQmJkpnKCJjYXJkT2JzZXJ2ZXIiLGdwKCkuY2FyZE9ic2VydmVyKX1mdW5jdGlvbiBWbXQodCxuKXtpZigxJnQpe2NvbnN0IHQ9b3AoKTtLZygwLCJkaXYiLDEwKSxLZygxLCJkaXYiLDExKSxLZygyLCJoMiIsMTIpLEpwKDMsIlNldHRpbmdzIiksJGcoKSxLZyg0LCJidXR0b24iLDEzKSxsdSg1LDE0KSxjcCgiY2xpY2siLChmdW5jdGlvbiBuKCl7cmV0dXJuIGpyKHQpLGdwKCkub25DbG9zZVNpZGVwYW5lQnV0dG9uQ2xpY2tlZC5lbWl0KCl9KSksdHAoNiwibWF0LWljb24iLDE1KSwkZygpLCRnKCksdHAoNywibWV0cmljcy1kYXNoYm9hcmQtcmlnaHQtcGFuZSIpLCRnKCl9fUxtdC7JtWZhYz1mdW5jdGlvbiB0KG4pe3JldHVybiBuZXcobnx8TG10KX0sTG10Lsm1Y21wPV9vKHt0eXBlOkxtdCxzZWxlY3RvcnM6W1sibWV0cmljcy1kYXNoYm9hcmQtcmlnaHQtcGFuZSJdXSxkZWNsczoxLHZhcnM6MCx0ZW1wbGF0ZTpmdW5jdGlvbiB0KG4sZSl7MSZuJiZ0cCgwLCJtZXRyaWNzLWRhc2hib2FyZC1zZXR0aW5ncyIpfSxkaXJlY3RpdmVzOltGbXRdLGVuY2Fwc3VsYXRpb246MixjaGFuZ2VEZXRlY3Rpb246MH0pO2NvbnN0IGptdD1mdW5jdGlvbih0KXtyZXR1cm57Y2hlY2tlZDp0LCJzZXR0aW5ncy1idXR0b24iOiEwfX07Y2xhc3MgVW10e2NvbnN0cnVjdG9yKHQpe3RoaXMuaG9zdD10LHRoaXMub25TZXR0aW5nc0J1dHRvbkNsaWNrZWQ9bmV3IEVmLHRoaXMub25DbG9zZVNpZGVwYW5lQnV0dG9uQ2xpY2tlZD1uZXcgRWYsdGhpcy5jYXJkT2JzZXJ2ZXI9bmV3IFpLKHRoaXMuaG9zdC5uYXRpdmVFbGVtZW50LCI2MDBweCAwcHggNjAwcHggMHB4Iil9fVVtdC7JtWZhYz1mdW5jdGlvbiB0KG4pe3JldHVybiBuZXcobnx8VW10KShaZyh4dSkpfSxVbXQuybVjbXA9X28oe3R5cGU6VW10LHNlbGVjdG9yczpbWyJtZXRyaWNzLW1haW4tdmlldy1jb21wb25lbnQiXV0saW5wdXRzOntzaG93RmlsdGVyZWRWaWV3OiJzaG93RmlsdGVyZWRWaWV3Iixpc1NpZGVwYW5lT3BlbjoiaXNTaWRlcGFuZU9wZW4ifSxvdXRwdXRzOntvblNldHRpbmdzQnV0dG9uQ2xpY2tlZDoib25TZXR0aW5nc0J1dHRvbkNsaWNrZWQiLG9uQ2xvc2VTaWRlcGFuZUJ1dHRvbkNsaWNrZWQ6Im9uQ2xvc2VTaWRlcGFuZUJ1dHRvbkNsaWNrZWQifSxkZWNsczoxMyx2YXJzOjEwLGNvbnN0czpmdW5jdGlvbigpe3JldHVybltbMSwidG9vbGJhciJdLFsxLCJyaWdodC1pdGVtcyJdLFsibWF0LXN0cm9rZWQtYnV0dG9uIiwiIiwzLCJuZ0NsYXNzIiwiY2xpY2siLDYsImFyaWEtbGFiZWwiXSxbImFyaWEtbGFiZWwiLCJ1bmRlZmluZWQiIT10eXBlb2YgbmdJMThuQ2xvc3VyZU1vZGUmJm5nSTE4bkNsb3N1cmVNb2RlP2dvb2cuZ2V0TXNnKCJUb2dnbGUgc2V0dGluZ3Mgc2lkZSBwYW5lIik6JGxvY2FsaXplYDpMYWJlbCBvbiBhIHRvb2xiYXIgYnV0dG9uIHRvIHRvZ2dsZSB0aGUgc2V0dGluZ3Mgc2lkZSBwYW5lLuKQn2QzNTE2ZGI2YmJlNjg2MGE1NWJlYWI2NmU0OTY5ZGFjNjI1YjhkNzLikJ83NjU5Mjg1NDQ1NTgwODM4OTI1OlRvZ2dsZSBzZXR0aW5ncyBzaWRlIHBhbmVgXSxbInN2Z0ljb24iLCJzZXR0aW5nc18yNHB4Il0sWzEsInNwbGl0LWNvbnRlbnQiXSxbImNka1Njcm9sbGFibGUiLCIiLDEsIm1haW4iXSxbMywiY2FyZE9ic2VydmVyIiw0LCJuZ0lmIl0sWzMsImNhcmRPYnNlcnZlciJdLFsiY2xhc3MiLCJzaWRlYmFyIiw0LCJuZ0lmIl0sWzEsInNpZGViYXIiXSxbMSwiaGVhZGVyIl0sWzEsInRpdGxlIl0sWyJtYXQtaWNvbi1idXR0b24iLCIiLDMsImNsaWNrIiw2LCJhcmlhLWxhYmVsIl0sWyJhcmlhLWxhYmVsIiwidW5kZWZpbmVkIiE9dHlwZW9mIG5nSTE4bkNsb3N1cmVNb2RlJiZuZ0kxOG5DbG9zdXJlTW9kZT9nb29nLmdldE1zZygiQ2xvc2Ugc2lkZSBwYW5lIik6JGxvY2FsaXplYDpMYWJlbCBvbiBhIGJ1dHRvbiB0byBjbG9zZSB0aGUgc2V0dGluZ3Mgc2lkZSBwYW5lLuKQnzA0NTIxZGMwYjZhNjVjZjVjMzgyOTQ0YzlhOGI0Yjg0NGEzZTk1OTjikJ84MTU2NzY2OTk3NzQ3MTY1ODcxOkNsb3NlIHNpZGUgcGFuZWBdLFsic3ZnSWNvbiIsImNsb3NlXzI0cHgiXV19LHRlbXBsYXRlOmZ1bmN0aW9uIHQobixlKXsxJm4mJihLZygwLCJkaXYiLDApLHRwKDEsIm1ldHJpY3MtdGFnLWZpbHRlciIpLEtnKDIsImRpdiIsMSksS2coMywiYnV0dG9uIiwyKSxsdSg0LDMpLGNwKCJjbGljayIsKGZ1bmN0aW9uIHQoKXtyZXR1cm4gZS5vblNldHRpbmdzQnV0dG9uQ2xpY2tlZC5lbWl0KCl9KSksdHAoNSwibWF0LWljb24iLDQpLEpwKDYsIiBTZXR0aW5ncyAiKSwkZygpLCRnKCksJGcoKSxLZyg3LCJkaXYiLDUpLEtnKDgsImRpdiIsNiksWWcoOSxIbXQsMSwxLCJtZXRyaWNzLWZpbHRlcmVkLXZpZXciLDcpLFlnKDEwLEJtdCwxLDEsIm1ldHJpY3MtcGlubmVkLXZpZXciLDcpLHRwKDExLCJtZXRyaWNzLWNhcmQtZ3JvdXBzIiw4KSwkZygpLFlnKDEyLFZtdCw4LDAsImRpdiIsOSksJGcoKSksMiZuJiYod3MoMyksSmcoIm5nQ2xhc3MiLHVmKDgsam10LGUuaXNTaWRlcGFuZU9wZW4pKSxOZygiYXJpYS1wcmVzc2VkIixlLmlzU2lkZXBhbmVPcGVuKSx3cyg2KSxKZygibmdJZiIsZS5zaG93RmlsdGVyZWRWaWV3KSx3cygxKSxKZygibmdJZiIsIWUuc2hvd0ZpbHRlcmVkVmlldyksd3MoMSksVHAoImRpc3BsYXkiLGUuc2hvd0ZpbHRlcmVkVmlldz8ibm9uZSI6IiIpLEpnKCJjYXJkT2JzZXJ2ZXIiLGUuY2FyZE9ic2VydmVyKSx3cygxKSxKZygibmdJZiIsZS5pc1NpZGVwYW5lT3BlbikpfSxkaXJlY3RpdmVzOlt2JCxlQSxITSxCQixDQSxXTSx5bXQsU210LFRtdCxMbXRdLHN0eWxlczpbJy5tYXQtYmFkZ2UtY29udGVudFtfbmdjb250ZW50LSVDT01QJV17Zm9udC13ZWlnaHQ6NjAwO2ZvbnQtc2l6ZToxMnB4O2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZn0ubWF0LWJhZGdlLXNtYWxsW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtYmFkZ2UtY29udGVudFtfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjlweH0ubWF0LWJhZGdlLWxhcmdlW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtYmFkZ2UtY29udGVudFtfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjI0cHh9Lm1hdC1oMVtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtaGVhZGxpbmVbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXR5cG9ncmFwaHlbX25nY29udGVudC0lQ09NUCVdICAgaDFbX25nY29udGVudC0lQ09NUCVde2ZvbnQ6NDAwIDI0cHgvMzJweCBSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7bGV0dGVyLXNwYWNpbmc6bm9ybWFsO21hcmdpbjowIDAgMTZweH0ubWF0LWgyW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10aXRsZVtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdHlwb2dyYXBoeVtfbmdjb250ZW50LSVDT01QJV0gICBoMltfbmdjb250ZW50LSVDT01QJV17Zm9udDo1MDAgMjBweC8zMnB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtsZXR0ZXItc3BhY2luZzpub3JtYWw7bWFyZ2luOjAgMCAxNnB4fS5tYXQtaDNbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXN1YmhlYWRpbmctMltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdHlwb2dyYXBoeVtfbmdjb250ZW50LSVDT01QJV0gICBoM1tfbmdjb250ZW50LSVDT01QJV17Zm9udDo0MDAgMTZweC8yOHB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtsZXR0ZXItc3BhY2luZzpub3JtYWw7bWFyZ2luOjAgMCAxNnB4fS5tYXQtaDRbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXN1YmhlYWRpbmctMVtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdHlwb2dyYXBoeVtfbmdjb250ZW50LSVDT01QJV0gICBoNFtfbmdjb250ZW50LSVDT01QJV17Zm9udDo0MDAgMTVweC8yNHB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtsZXR0ZXItc3BhY2luZzpub3JtYWw7bWFyZ2luOjAgMCAxNnB4fS5tYXQtaDVbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXR5cG9ncmFwaHlbX25nY29udGVudC0lQ09NUCVdICAgaDVbX25nY29udGVudC0lQ09NUCVde2ZvbnQ6NDAwIGNhbGMoMTRweCAqIDAuODMpLzIwcHggUm9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO21hcmdpbjowIDAgMTJweH0ubWF0LWg2W19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10eXBvZ3JhcGh5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIGg2W19uZ2NvbnRlbnQtJUNPTVAlXXtmb250OjQwMCBjYWxjKDE0cHggKiAwLjY3KS8yMHB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjttYXJnaW46MCAwIDEycHh9Lm1hdC1ib2R5LXN0cm9uZ1tfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtYm9keS0yW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250OjUwMCAxNHB4LzI0cHggUm9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2xldHRlci1zcGFjaW5nOm5vcm1hbH0ubWF0LWJvZHlbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWJvZHktMVtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdHlwb2dyYXBoeVtfbmdjb250ZW50LSVDT01QJV17Zm9udDo0MDAgMTRweC8yMHB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtsZXR0ZXItc3BhY2luZzpub3JtYWx9Lm1hdC1ib2R5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIHBbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWJvZHktMVtfbmdjb250ZW50LSVDT01QJV0gICBwW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10eXBvZ3JhcGh5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIHBbX25nY29udGVudC0lQ09NUCVde21hcmdpbjowIDAgMTJweH0ubWF0LXNtYWxsW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1jYXB0aW9uW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250OjQwMCAxMnB4LzIwcHggUm9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2xldHRlci1zcGFjaW5nOm5vcm1hbH0ubWF0LWRpc3BsYXktNFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdHlwb2dyYXBoeVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWRpc3BsYXktNFtfbmdjb250ZW50LSVDT01QJV17Zm9udDozMDAgMTEycHgvMTEycHggUm9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2xldHRlci1zcGFjaW5nOi0wLjA1ZW07bWFyZ2luOjAgMCA1NnB4fS5tYXQtZGlzcGxheS0zW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10eXBvZ3JhcGh5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZGlzcGxheS0zW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250OjQwMCA1NnB4LzU2cHggUm9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2xldHRlci1zcGFjaW5nOi0wLjAyZW07bWFyZ2luOjAgMCA2NHB4fS5tYXQtZGlzcGxheS0yW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10eXBvZ3JhcGh5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZGlzcGxheS0yW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250OjQwMCA0NXB4LzQ4cHggUm9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2xldHRlci1zcGFjaW5nOi0wLjAwNWVtO21hcmdpbjowIDAgNjRweH0ubWF0LWRpc3BsYXktMVtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdHlwb2dyYXBoeVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWRpc3BsYXktMVtfbmdjb250ZW50LSVDT01QJV17Zm9udDo0MDAgMzRweC80MHB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtsZXR0ZXItc3BhY2luZzpub3JtYWw7bWFyZ2luOjAgMCA2NHB4fS5tYXQtYm90dG9tLXNoZWV0LWNvbnRhaW5lcltfbmdjb250ZW50LSVDT01QJV17Zm9udDo0MDAgMTRweC8yMHB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtsZXR0ZXItc3BhY2luZzpub3JtYWx9Lm1hdC1idXR0b25bX25nY29udGVudC0lQ09NUCVdLCAubWF0LXJhaXNlZC1idXR0b25bX25nY29udGVudC0lQ09NUCVdLCAubWF0LWljb24tYnV0dG9uW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1zdHJva2VkLWJ1dHRvbltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtZmxhdC1idXR0b25bX25nY29udGVudC0lQ09NUCVdLCAubWF0LWZhYltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtbWluaS1mYWJbX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtmb250LXNpemU6MTRweDtmb250LXdlaWdodDo1MDB9Lm1hdC1idXR0b24tdG9nZ2xlW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWZ9Lm1hdC1jYXJkW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWZ9Lm1hdC1jYXJkLXRpdGxlW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MjRweDtmb250LXdlaWdodDo1MDB9Lm1hdC1jYXJkLWhlYWRlcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWNhcmQtdGl0bGVbX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToyMHB4fS5tYXQtY2FyZC1zdWJ0aXRsZVtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtY2FyZC1jb250ZW50W19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MTRweH0ubWF0LWNoZWNrYm94W19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWZ9Lm1hdC1jaGVja2JveC1sYXlvdXRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1jaGVja2JveC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17bGluZS1oZWlnaHQ6MjRweH0ubWF0LWNoaXBbX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToxNHB4O2ZvbnQtd2VpZ2h0OjUwMH0ubWF0LWNoaXBbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1jaGlwLXRyYWlsaW5nLWljb24ubWF0LWljb25bX25nY29udGVudC0lQ09NUCVdLCAubWF0LWNoaXBbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1jaGlwLXJlbW92ZS5tYXQtaWNvbltfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjE4cHh9Lm1hdC10YWJsZVtfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmfS5tYXQtaGVhZGVyLWNlbGxbX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToxMnB4O2ZvbnQtd2VpZ2h0OjUwMH0ubWF0LWNlbGxbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWZvb3Rlci1jZWxsW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MTRweH0ubWF0LWNhbGVuZGFyW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWZ9Lm1hdC1jYWxlbmRhci1ib2R5W19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MTNweH0ubWF0LWNhbGVuZGFyLWJvZHktbGFiZWxbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWNhbGVuZGFyLXBlcmlvZC1idXR0b25bX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToxNHB4O2ZvbnQtd2VpZ2h0OjUwMH0ubWF0LWNhbGVuZGFyLXRhYmxlLWhlYWRlcltfbmdjb250ZW50LSVDT01QJV0gICB0aFtfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjExcHg7Zm9udC13ZWlnaHQ6NDAwfS5tYXQtZGlhbG9nLXRpdGxlW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250OjUwMCAyMHB4LzMycHggUm9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2xldHRlci1zcGFjaW5nOm5vcm1hbH0ubWF0LWV4cGFuc2lvbi1wYW5lbC1oZWFkZXJbX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtmb250LXNpemU6MTVweDtmb250LXdlaWdodDo0MDB9Lm1hdC1leHBhbnNpb24tcGFuZWwtY29udGVudFtfbmdjb250ZW50LSVDT01QJV17Zm9udDo0MDAgMTRweC8yMHB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtsZXR0ZXItc3BhY2luZzpub3JtYWx9Lm1hdC1mb3JtLWZpZWxkW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6aW5oZXJpdDtmb250LXdlaWdodDo0MDA7bGluZS1oZWlnaHQ6MS4xMjU7Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2xldHRlci1zcGFjaW5nOm5vcm1hbH0ubWF0LWZvcm0tZmllbGQtd3JhcHBlcltfbmdjb250ZW50LSVDT01QJV17cGFkZGluZy1ib3R0b206MS4zNDM3NWVtfS5tYXQtZm9ybS1maWVsZC1wcmVmaXhbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pY29uW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1mb3JtLWZpZWxkLXN1ZmZpeFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWljb25bX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToxNTAlO2xpbmUtaGVpZ2h0OjEuMTI1fS5tYXQtZm9ybS1maWVsZC1wcmVmaXhbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pY29uLWJ1dHRvbltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtZm9ybS1maWVsZC1zdWZmaXhbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pY29uLWJ1dHRvbltfbmdjb250ZW50LSVDT01QJV17aGVpZ2h0OjEuNWVtO3dpZHRoOjEuNWVtfS5tYXQtZm9ybS1maWVsZC1wcmVmaXhbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pY29uLWJ1dHRvbltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWljb25bX25nY29udGVudC0lQ09NUCVdLCAubWF0LWZvcm0tZmllbGQtc3VmZml4W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaWNvbi1idXR0b25bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pY29uW19uZ2NvbnRlbnQtJUNPTVAlXXtoZWlnaHQ6MS4xMjVlbTtsaW5lLWhlaWdodDoxLjEyNX0ubWF0LWZvcm0tZmllbGQtaW5maXhbX25nY29udGVudC0lQ09NUCVde3BhZGRpbmc6LjVlbSAwO2JvcmRlci10b3A6Ljg0Mzc1ZW0gc29saWQgdHJhbnNwYXJlbnR9Lm1hdC1mb3JtLWZpZWxkLWNhbi1mbG9hdC5tYXQtZm9ybS1maWVsZC1zaG91bGQtZmxvYXRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1mb3JtLWZpZWxkLWNhbi1mbG9hdFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWlucHV0LXNlcnZlcltfbmdjb250ZW50LSVDT01QJV06Zm9jdXMgKyAubWF0LWZvcm0tZmllbGQtbGFiZWwtd3JhcHBlcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVde3RyYW5zZm9ybTp0cmFuc2xhdGVZKC0xLjM0Mzc1ZW0pIHNjYWxlKDAuNzUpO3dpZHRoOjEzMy4zMzMzMzMzMzMzJX0ubWF0LWZvcm0tZmllbGQtY2FuLWZsb2F0W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaW5wdXQtc2VydmVyW2xhYmVsXVtfbmdjb250ZW50LSVDT01QJV06bm90KDpsYWJlbC1zaG93bikgKyAubWF0LWZvcm0tZmllbGQtbGFiZWwtd3JhcHBlcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVde3RyYW5zZm9ybTp0cmFuc2xhdGVZKC0xLjM0Mzc0ZW0pIHNjYWxlKDAuNzUpO3dpZHRoOjEzMy4zMzMzNDMzMzMzJX0ubWF0LWZvcm0tZmllbGQtbGFiZWwtd3JhcHBlcltfbmdjb250ZW50LSVDT01QJV17dG9wOi0wLjg0Mzc1ZW07cGFkZGluZy10b3A6Ljg0Mzc1ZW19Lm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXt0b3A6MS4zNDM3NWVtfS5tYXQtZm9ybS1maWVsZC11bmRlcmxpbmVbX25nY29udGVudC0lQ09NUCVde2JvdHRvbToxLjM0Mzc1ZW19Lm1hdC1mb3JtLWZpZWxkLXN1YnNjcmlwdC13cmFwcGVyW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6NzUlO21hcmdpbi10b3A6LjY2NjY2NjY2NjdlbTt0b3A6Y2FsYygxMDAlIC0gMS43OTE2NjY2NjY3ZW0pfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWxlZ2FjeVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtd3JhcHBlcltfbmdjb250ZW50LSVDT01QJV17cGFkZGluZy1ib3R0b206MS4yNWVtfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWxlZ2FjeVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtaW5maXhbX25nY29udGVudC0lQ09NUCVde3BhZGRpbmc6LjQzNzVlbSAwfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWxlZ2FjeS5tYXQtZm9ybS1maWVsZC1jYW4tZmxvYXQubWF0LWZvcm0tZmllbGQtc2hvdWxkLWZsb2F0W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWxlZ2FjeS5tYXQtZm9ybS1maWVsZC1jYW4tZmxvYXRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pbnB1dC1zZXJ2ZXJbX25nY29udGVudC0lQ09NUCVdOmZvY3VzICsgLm1hdC1mb3JtLWZpZWxkLWxhYmVsLXdyYXBwZXJbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXt0cmFuc2Zvcm06dHJhbnNsYXRlWSgtMS4yODEyNWVtKSBzY2FsZSgwLjc1KSBwZXJzcGVjdGl2ZSgxMDBweCkgdHJhbnNsYXRlWigwLjAwMXB4KTstbXMtdHJhbnNmb3JtOnRyYW5zbGF0ZVkoLTEuMjgxMjVlbSkgc2NhbGUoMC43NSk7d2lkdGg6MTMzLjMzMzMzMzMzMzMlfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWxlZ2FjeS5tYXQtZm9ybS1maWVsZC1jYW4tZmxvYXRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWF1dG9maWxsLWNvbnRyb2xbX25nY29udGVudC0lQ09NUCVdOi13ZWJraXQtYXV0b2ZpbGwgKyAubWF0LWZvcm0tZmllbGQtbGFiZWwtd3JhcHBlcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVde3RyYW5zZm9ybTp0cmFuc2xhdGVZKC0xLjI4MTI1ZW0pIHNjYWxlKDAuNzUpIHBlcnNwZWN0aXZlKDEwMHB4KSB0cmFuc2xhdGVaKDAuMDAxMDFweCk7LW1zLXRyYW5zZm9ybTp0cmFuc2xhdGVZKC0xLjI4MTI0ZW0pIHNjYWxlKDAuNzUpO3dpZHRoOjEzMy4zMzMzNDMzMzMzJX0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1sZWdhY3kubWF0LWZvcm0tZmllbGQtY2FuLWZsb2F0W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaW5wdXQtc2VydmVyW2xhYmVsXVtfbmdjb250ZW50LSVDT01QJV06bm90KDpsYWJlbC1zaG93bikgKyAubWF0LWZvcm0tZmllbGQtbGFiZWwtd3JhcHBlcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVde3RyYW5zZm9ybTp0cmFuc2xhdGVZKC0xLjI4MTI1ZW0pIHNjYWxlKDAuNzUpIHBlcnNwZWN0aXZlKDEwMHB4KSB0cmFuc2xhdGVaKDAuMDAxMDJweCk7LW1zLXRyYW5zZm9ybTp0cmFuc2xhdGVZKC0xLjI4MTIzZW0pIHNjYWxlKDAuNzUpO3dpZHRoOjEzMy4zMzMzNTMzMzMzJX0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1sZWdhY3lbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXt0b3A6MS4yODEyNWVtfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWxlZ2FjeVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtdW5kZXJsaW5lW19uZ2NvbnRlbnQtJUNPTVAlXXtib3R0b206MS4yNWVtfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWxlZ2FjeVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtc3Vic2NyaXB0LXdyYXBwZXJbX25nY29udGVudC0lQ09NUCVde21hcmdpbi10b3A6LjU0MTY2NjY2NjdlbTt0b3A6Y2FsYygxMDAlIC0gMS42NjY2NjY2NjY3ZW0pfUBtZWRpYSBwcmludHsubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1sZWdhY3kubWF0LWZvcm0tZmllbGQtY2FuLWZsb2F0Lm1hdC1mb3JtLWZpZWxkLXNob3VsZC1mbG9hdFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1sZWdhY3kubWF0LWZvcm0tZmllbGQtY2FuLWZsb2F0W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaW5wdXQtc2VydmVyW19uZ2NvbnRlbnQtJUNPTVAlXTpmb2N1cyArIC5tYXQtZm9ybS1maWVsZC1sYWJlbC13cmFwcGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17dHJhbnNmb3JtOnRyYW5zbGF0ZVkoLTEuMjgxMjJlbSkgc2NhbGUoMC43NSl9Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtbGVnYWN5Lm1hdC1mb3JtLWZpZWxkLWNhbi1mbG9hdFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtYXV0b2ZpbGwtY29udHJvbFtfbmdjb250ZW50LSVDT01QJV06LXdlYmtpdC1hdXRvZmlsbCArIC5tYXQtZm9ybS1maWVsZC1sYWJlbC13cmFwcGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17dHJhbnNmb3JtOnRyYW5zbGF0ZVkoLTEuMjgxMjFlbSkgc2NhbGUoMC43NSl9Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtbGVnYWN5Lm1hdC1mb3JtLWZpZWxkLWNhbi1mbG9hdFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWlucHV0LXNlcnZlcltsYWJlbF1bX25nY29udGVudC0lQ09NUCVdOm5vdCg6bGFiZWwtc2hvd24pICsgLm1hdC1mb3JtLWZpZWxkLWxhYmVsLXdyYXBwZXJbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXt0cmFuc2Zvcm06dHJhbnNsYXRlWSgtMS4yODEyZW0pIHNjYWxlKDAuNzUpfX0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1maWxsW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1pbmZpeFtfbmdjb250ZW50LSVDT01QJV17cGFkZGluZzouMjVlbSAwIC43NWVtIDB9Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtZmlsbFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVde3RvcDoxLjA5Mzc1ZW07bWFyZ2luLXRvcDotMC41ZW19Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtZmlsbC5tYXQtZm9ybS1maWVsZC1jYW4tZmxvYXQubWF0LWZvcm0tZmllbGQtc2hvdWxkLWZsb2F0W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWZpbGwubWF0LWZvcm0tZmllbGQtY2FuLWZsb2F0W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaW5wdXQtc2VydmVyW19uZ2NvbnRlbnQtJUNPTVAlXTpmb2N1cyArIC5tYXQtZm9ybS1maWVsZC1sYWJlbC13cmFwcGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17dHJhbnNmb3JtOnRyYW5zbGF0ZVkoLTAuNTkzNzVlbSkgc2NhbGUoMC43NSk7d2lkdGg6MTMzLjMzMzMzMzMzMzMlfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWZpbGwubWF0LWZvcm0tZmllbGQtY2FuLWZsb2F0W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaW5wdXQtc2VydmVyW2xhYmVsXVtfbmdjb250ZW50LSVDT01QJV06bm90KDpsYWJlbC1zaG93bikgKyAubWF0LWZvcm0tZmllbGQtbGFiZWwtd3JhcHBlcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVde3RyYW5zZm9ybTp0cmFuc2xhdGVZKC0wLjU5Mzc0ZW0pIHNjYWxlKDAuNzUpO3dpZHRoOjEzMy4zMzMzNDMzMzMzJX0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1vdXRsaW5lW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1pbmZpeFtfbmdjb250ZW50LSVDT01QJV17cGFkZGluZzoxZW0gMCAxZW0gMH0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1vdXRsaW5lW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17dG9wOjEuODQzNzVlbTttYXJnaW4tdG9wOi0wLjI1ZW19Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2Utb3V0bGluZS5tYXQtZm9ybS1maWVsZC1jYW4tZmxvYXQubWF0LWZvcm0tZmllbGQtc2hvdWxkLWZsb2F0W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLW91dGxpbmUubWF0LWZvcm0tZmllbGQtY2FuLWZsb2F0W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaW5wdXQtc2VydmVyW19uZ2NvbnRlbnQtJUNPTVAlXTpmb2N1cyArIC5tYXQtZm9ybS1maWVsZC1sYWJlbC13cmFwcGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17dHJhbnNmb3JtOnRyYW5zbGF0ZVkoLTEuNTkzNzVlbSkgc2NhbGUoMC43NSk7d2lkdGg6MTMzLjMzMzMzMzMzMzMlfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLW91dGxpbmUubWF0LWZvcm0tZmllbGQtY2FuLWZsb2F0W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaW5wdXQtc2VydmVyW2xhYmVsXVtfbmdjb250ZW50LSVDT01QJV06bm90KDpsYWJlbC1zaG93bikgKyAubWF0LWZvcm0tZmllbGQtbGFiZWwtd3JhcHBlcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVde3RyYW5zZm9ybTp0cmFuc2xhdGVZKC0xLjU5Mzc0ZW0pIHNjYWxlKDAuNzUpO3dpZHRoOjEzMy4zMzMzNDMzMzMzJX0ubWF0LWdyaWQtdGlsZS1oZWFkZXJbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWdyaWQtdGlsZS1mb290ZXJbX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToxNHB4fS5tYXQtZ3JpZC10aWxlLWhlYWRlcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpbmVbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWdyaWQtdGlsZS1mb290ZXJbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saW5lW19uZ2NvbnRlbnQtJUNPTVAlXXt3aGl0ZS1zcGFjZTpub3dyYXA7b3ZlcmZsb3c6aGlkZGVuO3RleHQtb3ZlcmZsb3c6ZWxsaXBzaXM7ZGlzcGxheTpibG9jaztib3gtc2l6aW5nOmJvcmRlci1ib3h9Lm1hdC1ncmlkLXRpbGUtaGVhZGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGluZVtfbmdjb250ZW50LSVDT01QJV06bnRoLWNoaWxkKG4rMiksIC5tYXQtZ3JpZC10aWxlLWZvb3Rlcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpbmVbX25nY29udGVudC0lQ09NUCVdOm50aC1jaGlsZChuKzIpe2ZvbnQtc2l6ZToxMnB4fWlucHV0Lm1hdC1pbnB1dC1lbGVtZW50W19uZ2NvbnRlbnQtJUNPTVAlXXttYXJnaW4tdG9wOi0wLjA2MjVlbX0ubWF0LW1lbnUtaXRlbVtfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2ZvbnQtc2l6ZToxNHB4O2ZvbnQtd2VpZ2h0OjQwMH0ubWF0LXBhZ2luYXRvcltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtcGFnaW5hdG9yLXBhZ2Utc2l6ZVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXNlbGVjdC10cmlnZ2VyW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7Zm9udC1zaXplOjEycHh9Lm1hdC1yYWRpby1idXR0b25bX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZn0ubWF0LXNlbGVjdFtfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmfS5tYXQtc2VsZWN0LXRyaWdnZXJbX25nY29udGVudC0lQ09NUCVde2hlaWdodDoxLjEyNWVtfS5tYXQtc2xpZGUtdG9nZ2xlLWNvbnRlbnRbX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZn0ubWF0LXNsaWRlci10aHVtYi1sYWJlbC10ZXh0W19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7Zm9udC1zaXplOjEycHg7Zm9udC13ZWlnaHQ6NTAwfS5tYXQtc3RlcHBlci12ZXJ0aWNhbFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtc3RlcHBlci1ob3Jpem9udGFsW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWZ9Lm1hdC1zdGVwLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MTRweDtmb250LXdlaWdodDo0MDB9Lm1hdC1zdGVwLXN1Yi1sYWJlbC1lcnJvcltfbmdjb250ZW50LSVDT01QJV17Zm9udC13ZWlnaHQ6bm9ybWFsfS5tYXQtc3RlcC1sYWJlbC1lcnJvcltfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjE0cHh9Lm1hdC1zdGVwLWxhYmVsLXNlbGVjdGVkW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MTRweDtmb250LXdlaWdodDo1MDB9Lm1hdC10YWItZ3JvdXBbX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZn0ubWF0LXRhYi1sYWJlbFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdGFiLWxpbmtbX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtmb250LXNpemU6MTRweDtmb250LXdlaWdodDo1MDB9Lm1hdC10b29sYmFyW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10b29sYmFyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIGgxW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10b29sYmFyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIGgyW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10b29sYmFyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIGgzW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10b29sYmFyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIGg0W19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10b29sYmFyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIGg1W19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10b29sYmFyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIGg2W19uZ2NvbnRlbnQtJUNPTVAlXXtmb250OjUwMCAyMHB4LzMycHggUm9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2xldHRlci1zcGFjaW5nOm5vcm1hbDttYXJnaW46MH0ubWF0LXRvb2x0aXBbX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtmb250LXNpemU6MTBweDtwYWRkaW5nLXRvcDo2cHg7cGFkZGluZy1ib3R0b206NnB4fS5tYXQtdG9vbHRpcC1oYW5kc2V0W19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MTRweDtwYWRkaW5nLXRvcDo4cHg7cGFkZGluZy1ib3R0b206OHB4fS5tYXQtbGlzdC1pdGVtW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWZ9Lm1hdC1saXN0LW9wdGlvbltfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmfS5tYXQtbGlzdC1iYXNlW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGlzdC1pdGVtW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MTZweH0ubWF0LWxpc3QtYmFzZVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpc3QtaXRlbVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpbmVbX25nY29udGVudC0lQ09NUCVde3doaXRlLXNwYWNlOm5vd3JhcDtvdmVyZmxvdzpoaWRkZW47dGV4dC1vdmVyZmxvdzplbGxpcHNpcztkaXNwbGF5OmJsb2NrO2JveC1zaXppbmc6Ym9yZGVyLWJveH0ubWF0LWxpc3QtYmFzZVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpc3QtaXRlbVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpbmVbX25nY29udGVudC0lQ09NUCVdOm50aC1jaGlsZChuKzIpe2ZvbnQtc2l6ZToxNHB4fS5tYXQtbGlzdC1iYXNlW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGlzdC1vcHRpb25bX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToxNnB4fS5tYXQtbGlzdC1iYXNlW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGlzdC1vcHRpb25bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saW5lW19uZ2NvbnRlbnQtJUNPTVAlXXt3aGl0ZS1zcGFjZTpub3dyYXA7b3ZlcmZsb3c6aGlkZGVuO3RleHQtb3ZlcmZsb3c6ZWxsaXBzaXM7ZGlzcGxheTpibG9jaztib3gtc2l6aW5nOmJvcmRlci1ib3h9Lm1hdC1saXN0LWJhc2VbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saXN0LW9wdGlvbltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpbmVbX25nY29udGVudC0lQ09NUCVdOm50aC1jaGlsZChuKzIpe2ZvbnQtc2l6ZToxNHB4fS5tYXQtbGlzdC1iYXNlW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtc3ViaGVhZGVyW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7Zm9udC1zaXplOjE0cHg7Zm9udC13ZWlnaHQ6NTAwfS5tYXQtbGlzdC1iYXNlW2RlbnNlXVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpc3QtaXRlbVtfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjEycHh9Lm1hdC1saXN0LWJhc2VbZGVuc2VdW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGlzdC1pdGVtW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGluZVtfbmdjb250ZW50LSVDT01QJV17d2hpdGUtc3BhY2U6bm93cmFwO292ZXJmbG93OmhpZGRlbjt0ZXh0LW92ZXJmbG93OmVsbGlwc2lzO2Rpc3BsYXk6YmxvY2s7Ym94LXNpemluZzpib3JkZXItYm94fS5tYXQtbGlzdC1iYXNlW2RlbnNlXVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpc3QtaXRlbVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpbmVbX25nY29udGVudC0lQ09NUCVdOm50aC1jaGlsZChuKzIpe2ZvbnQtc2l6ZToxMnB4fS5tYXQtbGlzdC1iYXNlW2RlbnNlXVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpc3Qtb3B0aW9uW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MTJweH0ubWF0LWxpc3QtYmFzZVtkZW5zZV1bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saXN0LW9wdGlvbltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpbmVbX25nY29udGVudC0lQ09NUCVde3doaXRlLXNwYWNlOm5vd3JhcDtvdmVyZmxvdzpoaWRkZW47dGV4dC1vdmVyZmxvdzplbGxpcHNpcztkaXNwbGF5OmJsb2NrO2JveC1zaXppbmc6Ym9yZGVyLWJveH0ubWF0LWxpc3QtYmFzZVtkZW5zZV1bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saXN0LW9wdGlvbltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpbmVbX25nY29udGVudC0lQ09NUCVdOm50aC1jaGlsZChuKzIpe2ZvbnQtc2l6ZToxMnB4fS5tYXQtbGlzdC1iYXNlW2RlbnNlXVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXN1YmhlYWRlcltfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2ZvbnQtc2l6ZToxMnB4O2ZvbnQtd2VpZ2h0OjUwMH0ubWF0LW9wdGlvbltfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2ZvbnQtc2l6ZToxNnB4fS5tYXQtb3B0Z3JvdXAtbGFiZWxbX25nY29udGVudC0lQ09NUCVde2ZvbnQ6NTAwIDE0cHgvMjRweCBSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7bGV0dGVyLXNwYWNpbmc6bm9ybWFsfS5tYXQtc2ltcGxlLXNuYWNrYmFyW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7Zm9udC1zaXplOjE0cHh9Lm1hdC1zaW1wbGUtc25hY2tiYXItYWN0aW9uW19uZ2NvbnRlbnQtJUNPTVAlXXtsaW5lLWhlaWdodDoxO2ZvbnQtZmFtaWx5OmluaGVyaXQ7Zm9udC1zaXplOmluaGVyaXQ7Zm9udC13ZWlnaHQ6NTAwfS5tYXQtdHJlZVtfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmfS5tYXQtdHJlZS1ub2RlW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1uZXN0ZWQtdHJlZS1ub2RlW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXdlaWdodDo0MDA7Zm9udC1zaXplOjE0cHh9Lm1hdC1yaXBwbGVbX25nY29udGVudC0lQ09NUCVde292ZXJmbG93OmhpZGRlbjtwb3NpdGlvbjpyZWxhdGl2ZX0ubWF0LXJpcHBsZVtfbmdjb250ZW50LSVDT01QJV06bm90KDplbXB0eSl7dHJhbnNmb3JtOnRyYW5zbGF0ZVooMCl9Lm1hdC1yaXBwbGUubWF0LXJpcHBsZS11bmJvdW5kZWRbX25nY29udGVudC0lQ09NUCVde292ZXJmbG93OnZpc2libGV9Lm1hdC1yaXBwbGUtZWxlbWVudFtfbmdjb250ZW50LSVDT01QJV17cG9zaXRpb246YWJzb2x1dGU7Ym9yZGVyLXJhZGl1czo1MCU7cG9pbnRlci1ldmVudHM6bm9uZTt0cmFuc2l0aW9uOm9wYWNpdHksdHJhbnNmb3JtIDBtcyBjdWJpYy1iZXppZXIoMCwgMCwgMC4yLCAxKTt0cmFuc2Zvcm06c2NhbGUoMCl9LmNkay1oaWdoLWNvbnRyYXN0LWFjdGl2ZVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXJpcHBsZS1lbGVtZW50W19uZ2NvbnRlbnQtJUNPTVAlXXtkaXNwbGF5Om5vbmV9LmNkay12aXN1YWxseS1oaWRkZW5bX25nY29udGVudC0lQ09NUCVde2JvcmRlcjowO2NsaXA6cmVjdCgwIDAgMCAwKTtoZWlnaHQ6MXB4O21hcmdpbjotMXB4O292ZXJmbG93OmhpZGRlbjtwYWRkaW5nOjA7cG9zaXRpb246YWJzb2x1dGU7d2lkdGg6MXB4O291dGxpbmU6MDstd2Via2l0LWFwcGVhcmFuY2U6bm9uZTstbW96LWFwcGVhcmFuY2U6bm9uZX0uY2RrLW92ZXJsYXktY29udGFpbmVyW19uZ2NvbnRlbnQtJUNPTVAlXSwgLmNkay1nbG9iYWwtb3ZlcmxheS13cmFwcGVyW19uZ2NvbnRlbnQtJUNPTVAlXXtwb2ludGVyLWV2ZW50czpub25lO3RvcDowO2xlZnQ6MDtoZWlnaHQ6MTAwJTt3aWR0aDoxMDAlfS5jZGstb3ZlcmxheS1jb250YWluZXJbX25nY29udGVudC0lQ09NUCVde3Bvc2l0aW9uOmZpeGVkO3otaW5kZXg6MTAwMH0uY2RrLW92ZXJsYXktY29udGFpbmVyW19uZ2NvbnRlbnQtJUNPTVAlXTplbXB0eXtkaXNwbGF5Om5vbmV9LmNkay1nbG9iYWwtb3ZlcmxheS13cmFwcGVyW19uZ2NvbnRlbnQtJUNPTVAlXXtkaXNwbGF5OmZsZXg7cG9zaXRpb246YWJzb2x1dGU7ei1pbmRleDoxMDAwfS5jZGstb3ZlcmxheS1wYW5lW19uZ2NvbnRlbnQtJUNPTVAlXXtwb3NpdGlvbjphYnNvbHV0ZTtwb2ludGVyLWV2ZW50czphdXRvO2JveC1zaXppbmc6Ym9yZGVyLWJveDt6LWluZGV4OjEwMDA7ZGlzcGxheTpmbGV4O21heC13aWR0aDoxMDAlO21heC1oZWlnaHQ6MTAwJX0uY2RrLW92ZXJsYXktYmFja2Ryb3BbX25nY29udGVudC0lQ09NUCVde3Bvc2l0aW9uOmFic29sdXRlO3RvcDowO2JvdHRvbTowO2xlZnQ6MDtyaWdodDowO3otaW5kZXg6MTAwMDtwb2ludGVyLWV2ZW50czphdXRvOy13ZWJraXQtdGFwLWhpZ2hsaWdodC1jb2xvcjp0cmFuc3BhcmVudDt0cmFuc2l0aW9uOm9wYWNpdHkgNDAwbXMgY3ViaWMtYmV6aWVyKDAuMjUsIDAuOCwgMC4yNSwgMSk7b3BhY2l0eTowfS5jZGstb3ZlcmxheS1iYWNrZHJvcC5jZGstb3ZlcmxheS1iYWNrZHJvcC1zaG93aW5nW19uZ2NvbnRlbnQtJUNPTVAlXXtvcGFjaXR5OjF9QG1lZGlhIHNjcmVlbiBhbmQgKC1tcy1oaWdoLWNvbnRyYXN0OiBhY3RpdmUpey5jZGstb3ZlcmxheS1iYWNrZHJvcC5jZGstb3ZlcmxheS1iYWNrZHJvcC1zaG93aW5nW19uZ2NvbnRlbnQtJUNPTVAlXXtvcGFjaXR5Oi42fX0uY2RrLW92ZXJsYXktZGFyay1iYWNrZHJvcFtfbmdjb250ZW50LSVDT01QJV17YmFja2dyb3VuZDpyZ2JhKDAsMCwwLC4zMil9LmNkay1vdmVybGF5LXRyYW5zcGFyZW50LWJhY2tkcm9wW19uZ2NvbnRlbnQtJUNPTVAlXSwgLmNkay1vdmVybGF5LXRyYW5zcGFyZW50LWJhY2tkcm9wLmNkay1vdmVybGF5LWJhY2tkcm9wLXNob3dpbmdbX25nY29udGVudC0lQ09NUCVde29wYWNpdHk6MH0uY2RrLW92ZXJsYXktY29ubmVjdGVkLXBvc2l0aW9uLWJvdW5kaW5nLWJveFtfbmdjb250ZW50LSVDT01QJV17cG9zaXRpb246YWJzb2x1dGU7ei1pbmRleDoxMDAwO2Rpc3BsYXk6ZmxleDtmbGV4LWRpcmVjdGlvbjpjb2x1bW47bWluLXdpZHRoOjFweDttaW4taGVpZ2h0OjFweH0uY2RrLWdsb2JhbC1zY3JvbGxibG9ja1tfbmdjb250ZW50LSVDT01QJV17cG9zaXRpb246Zml4ZWQ7d2lkdGg6MTAwJTtvdmVyZmxvdy15OnNjcm9sbH1Aa2V5ZnJhbWVzIGNkay10ZXh0LWZpZWxkLWF1dG9maWxsLXN0YXJ0e31Aa2V5ZnJhbWVzIGNkay10ZXh0LWZpZWxkLWF1dG9maWxsLWVuZHt9LmNkay10ZXh0LWZpZWxkLWF1dG9maWxsLW1vbml0b3JlZFtfbmdjb250ZW50LSVDT01QJV06LXdlYmtpdC1hdXRvZmlsbHthbmltYXRpb246Y2RrLXRleHQtZmllbGQtYXV0b2ZpbGwtc3RhcnQgMHMgMW1zfS5jZGstdGV4dC1maWVsZC1hdXRvZmlsbC1tb25pdG9yZWRbX25nY29udGVudC0lQ09NUCVdOm5vdCg6LXdlYmtpdC1hdXRvZmlsbCl7YW5pbWF0aW9uOmNkay10ZXh0LWZpZWxkLWF1dG9maWxsLWVuZCAwcyAxbXN9dGV4dGFyZWEuY2RrLXRleHRhcmVhLWF1dG9zaXplW19uZ2NvbnRlbnQtJUNPTVAlXXtyZXNpemU6bm9uZX10ZXh0YXJlYS5jZGstdGV4dGFyZWEtYXV0b3NpemUtbWVhc3VyaW5nW19uZ2NvbnRlbnQtJUNPTVAlXXtwYWRkaW5nOjJweCAwICFpbXBvcnRhbnQ7Ym94LXNpemluZzpjb250ZW50LWJveCAhaW1wb3J0YW50O2hlaWdodDphdXRvICFpbXBvcnRhbnQ7b3ZlcmZsb3c6aGlkZGVuICFpbXBvcnRhbnR9dGV4dGFyZWEuY2RrLXRleHRhcmVhLWF1dG9zaXplLW1lYXN1cmluZy1maXJlZm94W19uZ2NvbnRlbnQtJUNPTVAlXXtwYWRkaW5nOjJweCAwICFpbXBvcnRhbnQ7Ym94LXNpemluZzpjb250ZW50LWJveCAhaW1wb3J0YW50O2hlaWdodDowICFpbXBvcnRhbnR9Lm1hdC1mb2N1cy1pbmRpY2F0b3JbX25nY29udGVudC0lQ09NUCVde3Bvc2l0aW9uOnJlbGF0aXZlfS5tYXQtbWRjLWZvY3VzLWluZGljYXRvcltfbmdjb250ZW50LSVDT01QJV17cG9zaXRpb246cmVsYXRpdmV9Lm1hdC1yaXBwbGUtZWxlbWVudFtfbmdjb250ZW50LSVDT01QJV17YmFja2dyb3VuZC1jb2xvcjpyZ2JhKDAsMCwwLC4xKX0ubWF0LW9wdGlvbltfbmdjb250ZW50LSVDT01QJV17Y29sb3I6IzIxMjEyMX0ubWF0LW9wdGlvbltfbmdjb250ZW50LSVDT01QJV06aG92ZXI6bm90KC5tYXQtb3B0aW9uLWRpc2FibGVkKSwgLm1hdC1vcHRpb25bX25nY29udGVudC0lQ09NUCVdOmZvY3VzOm5vdCgubWF0LW9wdGlvbi1kaXNhYmxlZCl7YmFja2dyb3VuZDpyZ2JhKDAsMCwwLC4wNCl9Lm1hdC1vcHRpb24ubWF0LXNlbGVjdGVkW19uZ2NvbnRlbnQtJUNPTVAlXTpub3QoLm1hdC1vcHRpb24tbXVsdGlwbGUpOm5vdCgubWF0LW9wdGlvbi1kaXNhYmxlZCl7YmFja2dyb3VuZDpyZ2JhKDAsMCwwLC4wNCl9Lm1hdC1vcHRpb24ubWF0LWFjdGl2ZVtfbmdjb250ZW50LSVDT01QJV17YmFja2dyb3VuZDpyZ2JhKDAsMCwwLC4wNCk7Y29sb3I6IzIxMjEyMX0ubWF0LW9wdGlvbi5tYXQtb3B0aW9uLWRpc2FibGVkW19uZ2NvbnRlbnQtJUNPTVAlXXtjb2xvcjpyZ2JhKDAsMCwwLC4zOCl9Lm1hdC1wcmltYXJ5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtb3B0aW9uLm1hdC1zZWxlY3RlZFtfbmdjb250ZW50LSVDT01QJV06bm90KC5tYXQtb3B0aW9uLWRpc2FibGVkKXtjb2xvcjojZjU3YzAwfS5tYXQtYWNjZW50W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtb3B0aW9uLm1hdC1zZWxlY3RlZFtfbmdjb250ZW50LSVDT01QJV06bm90KC5tYXQtb3B0aW9uLWRpc2FibGVkKXtjb2xvcjojZmY5ODAwfS5tYXQtd2Fybltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LW9wdGlvbi5tYXQtc2VsZWN0ZWRbX25nY29udGVudC0lQ09NUCVdOm5vdCgubWF0LW9wdGlvbi1kaXNhYmxlZCl7Y29sb3I6I2Y0NDMzNn0ubWF0LW9wdGdyb3VwLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXtjb2xvcjojNjE2MTYxfS5tYXQtb3B0Z3JvdXAtZGlzYWJsZWRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1vcHRncm91cC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17Y29sb3I6cmdiYSgwLDAsMCwuMzgpfS5tYXQtcHNldWRvLWNoZWNrYm94W19uZ2NvbnRlbnQtJUNPTVAlXXtjb2xvcjojNjE2MTYxfS5tYXQtcHNldWRvLWNoZWNrYm94W19uZ2NvbnRlbnQtJUNPTVAlXTo6YWZ0ZXJ7Y29sb3I6I2ZhZmFmYX0ubWF0LXBzZXVkby1jaGVja2JveC1kaXNhYmxlZFtfbmdjb250ZW50LSVDT01QJV17Y29sb3I6I2IwYjBiMH0ubWF0LXByaW1hcnlbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1wc2V1ZG8tY2hlY2tib3gtY2hlY2tlZFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtcHJpbWFyeVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXBzZXVkby1jaGVja2JveC1pbmRldGVybWluYXRlW19uZ2NvbnRlbnQtJUNPTVAlXXtiYWNrZ3JvdW5kOiNmNTdjMDB9Lm1hdC1wc2V1ZG8tY2hlY2tib3gtY2hlY2tlZFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtcHNldWRvLWNoZWNrYm94LWluZGV0ZXJtaW5hdGVbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWFjY2VudFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXBzZXVkby1jaGVja2JveC1jaGVja2VkW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1hY2NlbnRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1wc2V1ZG8tY2hlY2tib3gtaW5kZXRlcm1pbmF0ZVtfbmdjb250ZW50LSVDT01QJV17YmFja2dyb3VuZDojZmY5ODAwfS5tYXQtd2Fybltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXBzZXVkby1jaGVja2JveC1jaGVja2VkW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC13YXJuW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtcHNldWRvLWNoZWNrYm94LWluZGV0ZXJtaW5hdGVbX25nY29udGVudC0lQ09NUCVde2JhY2tncm91bmQ6I2Y0NDMzNn0ubWF0LXBzZXVkby1jaGVja2JveC1jaGVja2VkLm1hdC1wc2V1ZG8tY2hlY2tib3gtZGlzYWJsZWRbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXBzZXVkby1jaGVja2JveC1pbmRldGVybWluYXRlLm1hdC1wc2V1ZG8tY2hlY2tib3gtZGlzYWJsZWRbX25nY29udGVudC0lQ09NUCVde2JhY2tncm91bmQ6I2IwYjBiMH0ubWF0LWFwcC1iYWNrZ3JvdW5kW19uZ2NvbnRlbnQtJUNPTVAlXXtiYWNrZ3JvdW5kLWNvbG9yOiNmYWZhZmE7Y29sb3I6IzIxMjEyMX0ubWF0LWVsZXZhdGlvbi16MFtfbmdjb250ZW50LSVDT01QJV17Ym94LXNoYWRvdzowcHggMHB4IDBweCAwcHggcmdiYSgwLCAwLCAwLCAwLjIpLDBweCAwcHggMHB4IDBweCByZ2JhKDAsIDAsIDAsIDAuMTQpLDBweCAwcHggMHB4IDBweCByZ2JhKDAsIDAsIDAsIDAuMTIpfS5tYXQtZWxldmF0aW9uLXoxW19uZ2NvbnRlbnQtJUNPTVAlXXtib3gtc2hhZG93OjBweCAycHggMXB4IC0xcHggcmdiYSgwLCAwLCAwLCAwLjIpLDBweCAxcHggMXB4IDBweCByZ2JhKDAsIDAsIDAsIDAuMTQpLDBweCAxcHggM3B4IDBweCByZ2JhKDAsIDAsIDAsIDAuMTIpfS5tYXQtZWxldmF0aW9uLXoyW19uZ2NvbnRlbnQtJUNPTVAlXXtib3gtc2hhZG93OjBweCAzcHggMXB4IC0ycHggcmdiYSgwLCAwLCAwLCAwLjIpLDBweCAycHggMnB4IDBweCByZ2JhKDAsIDAsIDAsIDAuMTQpLDBweCAxcHggNXB4IDBweCByZ2JhKDAsIDAsIDAsIDAuMTIpfS5tYXQtZWxldmF0aW9uLXozW19uZ2NvbnRlbnQtJUNPTVAlXXtib3gtc2hhZG93OjBweCAzcHggM3B4IC0ycHggcmdiYSgwLCAwLCAwLCAwLjIpLDBweCAzcHggNHB4IDBweCByZ2JhKDAsIDAsIDAsIDAuMTQpLDBweCAxcHggOHB4IDBweCByZ2JhKDAsIDAsIDAsIDAuMTIpfS5tYXQtZWxldmF0aW9uLXo0W19uZ2NvbnRlbnQtJUNPTVAlXXtib3gtc2hhZG93OjBweCAycHggNHB4IC0xcHggcmdiYSgwLCAwLCAwLCAwLjIpLDBweCA0cHggNXB4IDBweCByZ2JhKDAsIDAsIDAsIDAuMTQpLDBweCAxcHggMTBweCAwcHggcmdiYSgwLCAwLCAwLCAwLjEyKX0ubWF0LWVsZXZhdGlvbi16NVtfbmdjb250ZW50LSVDT01QJV17Ym94LXNoYWRvdzowcHggM3B4IDVweCAtMXB4IHJnYmEoMCwgMCwgMCwgMC4yKSwwcHggNXB4IDhweCAwcHggcmdiYSgwLCAwLCAwLCAwLjE0KSwwcHggMXB4IDE0cHggMHB4IHJnYmEoMCwgMCwgMCwgMC4xMil9Lm1hdC1lbGV2YXRpb24tejZbX25nY29udGVudC0lQ09NUCVde2JveC1zaGFkb3c6MHB4IDNweCA1cHggLTFweCByZ2JhKDAsIDAsIDAsIDAuMiksMHB4IDZweCAxMHB4IDBweCByZ2JhKDAsIDAsIDAsIDAuMTQpLDBweCAxcHggMThweCAwcHggcmdiYSgwLCAwLCAwLCAwLjEyKX0ubWF0LWVsZXZhdGlvbi16N1tfbmdjb250ZW50LSVDT01QJV17Ym94LXNoYWRvdzowcHggNHB4IDVweCAtMnB4IHJnYmEoMCwgMCwgMCwgMC4yKSwwcHggN3B4IDEwcHggMXB4IHJnYmEoMCwgMCwgMCwgMC4xNCksMHB4IDJweCAxNnB4IDFweCByZ2JhKDAsIDAsIDAsIDAuMTIpfS5tYXQtZWxldmF0aW9uLXo4W19uZ2NvbnRlbnQtJUNPTVAlXXtib3gtc2hhZG93OjBweCA1cHggNXB4IC0zcHggcmdiYSgwLCAwLCAwLCAwLjIpLDBweCA4cHggMTBweCAxcHggcmdiYSgwLCAwLCAwLCAwLjE0KSwwcHggM3B4IDE0cHggMnB4IHJnYmEoMCwgMCwgMCwgMC4xMil9Lm1hdC1lbGV2YXRpb24tejlbX25nY29udGVudC0lQ09NUCVde2JveC1zaGFkb3c6MHB4IDVweCA2cHggLTNweCByZ2JhKDAsIDAsIDAsIDAuMiksMHB4IDlweCAxMnB4IDFweCByZ2JhKDAsIDAsIDAsIDAuMTQpLDBweCAzcHggMTZweCAycHggcmdiYSgwLCAwLCAwLCAwLjEyKX0ubWF0LWVsZXZhdGlvbi16MTBbX25nY29udGVudC0lQ09NUCVde2JveC1zaGFkb3c6MHB4IDZweCA2cHggLTNweCByZ2JhKDAsIDAsIDAsIDAuMiksMHB4IDEwcHggMTRweCAxcHggcmdiYSgwLCAwLCAwLCAwLjE0KSwwcHggNHB4IDE4cHggM3B4IHJnYmEoMCwgMCwgMCwgMC4xMil9Lm1hdC1lbGV2YXRpb24tejExW19uZ2NvbnRlbnQtJUNPTVAlXXtib3gtc2hhZG93OjBweCA2cHggN3B4IC00cHggcmdiYSgwLCAwLCAwLCAwLjIpLDBweCAxMXB4IDE1cHggMXB4IHJnYmEoMCwgMCwgMCwgMC4xNCksMHB4IDRweCAyMHB4IDNweCByZ2JhKDAsIDAsIDAsIDAuMTIpfS5tYXQtZWxldmF0aW9uLXoxMltfbmdjb250ZW50LSVDT01QJV17Ym94LXNoYWRvdzowcHggN3B4IDhweCAtNHB4IHJnYmEoMCwgMCwgMCwgMC4yKSwwcHggMTJweCAxN3B4IDJweCByZ2JhKDAsIDAsIDAsIDAuMTQpLDBweCA1cHggMjJweCA0cHggcmdiYSgwLCAwLCAwLCAwLjEyKX0ubWF0LWVsZXZhdGlvbi16MTNbX25nY29udGVudC0lQ09NUCVde2JveC1zaGFkb3c6MHB4IDdweCA4cHggLTRweCByZ2JhKDAsIDAsIDAsIDAuMiksMHB4IDEzcHggMTlweCAycHggcmdiYSgwLCAwLCAwLCAwLjE0KSwwcHggNXB4IDI0cHggNHB4IHJnYmEoMCwgMCwgMCwgMC4xMil9Lm1hdC1lbGV2YXRpb24tejE0W19uZ2NvbnRlbnQtJUNPTVAlXXtib3gtc2hhZG93OjBweCA3cHggOXB4IC00cHggcmdiYSgwLCAwLCAwLCAwLjIpLDBweCAxNHB4IDIxcHggMnB4IHJnYmEoMCwgMCwgMCwgMC4xNCksMHB4IDVweCAyNnB4IDRweCByZ2JhKDAsIDAsIDAsIDAuMTIpfS5tYXQtZWxldmF0aW9uLXoxNVtfbmdjb250ZW50LSVDT01QJV17Ym94LXNoYWRvdzowcHggOHB4IDlweCAtNXB4IHJnYmEoMCwgMCwgMCwgMC4yKSwwcHggMTVweCAyMnB4IDJweCByZ2JhKDAsIDAsIDAsIDAuMTQpLDBweCA2cHggMjhweCA1cHggcmdiYSgwLCAwLCAwLCAwLjEyKX0ubWF0LWVsZXZhdGlvbi16MTZbX25nY29udGVudC0lQ09NUCVde2JveC1zaGFkb3c6MHB4IDhweCAxMHB4IC01cHggcmdiYSgwLCAwLCAwLCAwLjIpLDBweCAxNnB4IDI0cHggMnB4IHJnYmEoMCwgMCwgMCwgMC4xNCksMHB4IDZweCAzMHB4IDVweCByZ2JhKDAsIDAsIDAsIDAuMTIpfS5tYXQtZWxldmF0aW9uLXoxN1tfbmdjb250ZW50LSVDT01QJV17Ym94LXNoYWRvdzowcHggOHB4IDExcHggLTVweCByZ2JhKDAsIDAsIDAsIDAuMiksMHB4IDE3cHggMjZweCAycHggcmdiYSgwLCAwLCAwLCAwLjE0KSwwcHggNnB4IDMycHggNXB4IHJnYmEoMCwgMCwgMCwgMC4xMil9Lm1hdC1lbGV2YXRpb24tejE4W19uZ2NvbnRlbnQtJUNPTVAlXXtib3gtc2hhZG93OjBweCA5cHggMTFweCAtNXB4IHJnYmEoMCwgMCwgMCwgMC4yKSwwcHggMThweCAyOHB4IDJweCByZ2JhKDAsIDAsIDAsIDAuMTQpLDBweCA3cHggMzRweCA2cHggcmdiYSgwLCAwLCAwLCAwLjEyKX0ubWF0LWVsZXZhdGlvbi16MTlbX25nY29udGVudC0lQ09NUCVde2JveC1zaGFkb3c6MHB4IDlweCAxMnB4IC02cHggcmdiYSgwLCAwLCAwLCAwLjIpLDBweCAxOXB4IDI5cHggMnB4IHJnYmEoMCwgMCwgMCwgMC4xNCksMHB4IDdweCAzNnB4IDZweCByZ2JhKDAsIDAsIDAsIDAuMTIpfS5tYXQtZWxldmF0aW9uLXoyMFtfbmdjb250ZW50LSVDT01QJV17Ym94LXNoYWRvdzowcHggMTBweCAxM3B4IC02cHggcmdiYSgwLCAwLCAwLCAwLjIpLDBweCAyMHB4IDMxcHggM3B4IHJnYmEoMCwgMCwgMCwgMC4xNCksMHB4IDhweCAzOHB4IDdweCByZ2JhKDAsIDAsIDAsIDAuMTIpfS5tYXQtZWxldmF0aW9uLXoyMVtfbmdjb250ZW50LSVDT01QJV17Ym94LXNoYWRvdzowcHggMTBweCAxM3B4IC02cHggcmdiYSgwLCAwLCAwLCAwLjIpLDBweCAyMXB4IDMzcHggM3B4IHJnYmEoMCwgMCwgMCwgMC4xNCksMHB4IDhweCA0MHB4IDdweCByZ2JhKDAsIDAsIDAsIDAuMTIpfS5tYXQtZWxldmF0aW9uLXoyMltfbmdjb250ZW50LSVDT01QJV17Ym94LXNoYWRvdzowcHggMTBweCAxNHB4IC02cHggcmdiYSgwLCAwLCAwLCAwLjIpLDBweCAyMnB4IDM1cHggM3B4IHJnYmEoMCwgMCwgMCwgMC4xNCksMHB4IDhweCA0MnB4IDdweCByZ2JhKDAsIDAsIDAsIDAuMTIpfS5tYXQtZWxldmF0aW9uLXoyM1tfbmdjb250ZW50LSVDT01QJV17Ym94LXNoYWRvdzowcHggMTFweCAxNHB4IC03cHggcmdiYSgwLCAwLCAwLCAwLjIpLDBweCAyM3B4IDM2cHggM3B4IHJnYmEoMCwgMCwgMCwgMC4xNCksMHB4IDlweCA0NHB4IDhweCByZ2JhKDAsIDAsIDAsIDAuMTIpfS5tYXQtZWxldmF0aW9uLXoyNFtfbmdjb250ZW50LSVDT01QJV17Ym94LXNoYWRvdzowcHggMTFweCAxNXB4IC03cHggcmdiYSgwLCAwLCAwLCAwLjIpLDBweCAyNHB4IDM4cHggM3B4IHJnYmEoMCwgMCwgMCwgMC4xNCksMHB4IDlweCA0NnB4IDhweCByZ2JhKDAsIDAsIDAsIDAuMTIpfS5tYXQtdGhlbWUtbG9hZGVkLW1hcmtlcltfbmdjb250ZW50LSVDT01QJV17ZGlzcGxheTpub25lfS5tYXQtYXV0b2NvbXBsZXRlLXBhbmVsW19uZ2NvbnRlbnQtJUNPTVAlXXtiYWNrZ3JvdW5kOiNmZmY7Y29sb3I6IzIxMjEyMX0ubWF0LWF1dG9jb21wbGV0ZS1wYW5lbFtfbmdjb250ZW50LSVDT01QJV06bm90KFtjbGFzcyo9bWF0LWVsZXZhdGlvbi16XSl7Ym94LXNoYWRvdzowcHggMnB4IDRweCAtMXB4IHJnYmEoMCwgMCwgMCwgMC4yKSwwcHggNHB4IDVweCAwcHggcmdiYSgwLCAwLCAwLCAwLjE0KSwwcHggMXB4IDEwcHggMHB4IHJnYmEoMCwgMCwgMCwgMC4xMil9Lm1hdC1hdXRvY29tcGxldGUtcGFuZWxbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1vcHRpb24ubWF0LXNlbGVjdGVkW19uZ2NvbnRlbnQtJUNPTVAlXTpub3QoLm1hdC1hY3RpdmUpOm5vdCg6aG92ZXIpe2JhY2tncm91bmQ6I2ZmZn0ubWF0LWF1dG9jb21wbGV0ZS1wYW5lbFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LW9wdGlvbi5tYXQtc2VsZWN0ZWRbX25nY29udGVudC0lQ09NUCVdOm5vdCgubWF0LWFjdGl2ZSk6bm90KDpob3Zlcik6bm90KC5tYXQtb3B0aW9uLWRpc2FibGVkKXtjb2xvcjojMjEyMTIxfS5tYXQtYmFkZ2UtY29udGVudFtfbmdjb250ZW50LSVDT01QJV17Y29sb3I6I2ZmZjtiYWNrZ3JvdW5kOiNmNTdjMDB9LmNkay1oaWdoLWNvbnRyYXN0LWFjdGl2ZVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWJhZGdlLWNvbnRlbnRbX25nY29udGVudC0lQ09NUCVde291dGxpbmU6c29saWQgMXB4O2JvcmRlci1yYWRpdXM6MH0ubWF0LWJhZGdlLWFjY2VudFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWJhZGdlLWNvbnRlbnRbX25nY29udGVudC0lQ09NUCVde2JhY2tncm91bmQ6I2ZmOTgwMDtjb2xvcjojZmZmfS5tYXQtYmFkZ2Utd2Fybltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWJhZGdlLWNvbnRlbnRbX25nY29udGVudC0lQ09NUCVde2NvbG9yOiNmZmY7YmFja2dyb3VuZDojZjQ0MzM2fS5tYXQtYmFkZ2VbX25nY29udGVudC0lQ09NUCVde3Bvc2l0aW9uOnJlbGF0aXZlfS5tYXQtYmFkZ2UtaGlkZGVuW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtYmFkZ2UtY29udGVudFtfbmdjb250ZW50LSVDT01QJV17ZGlzcGxheTpub25lfS5tYXQtYmFkZ2UtZGlzYWJsZWRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1iYWRnZS1jb250ZW50W19uZ2NvbnRlbnQtJUNPTVAlXXtiYWNrZ3JvdW5kOiNiOWI5Yjk7Y29sb3I6Izc1NzU3NX0ubWF0LWJhZGdlLWNvbnRlbnRbX25nY29udGVudC0lQ09NUCVde3Bvc2l0aW9uOmFic29sdXRlO3RleHQtYWxpZ246Y2VudGVyO2Rpc3BsYXk6aW5saW5lLWJsb2NrO2JvcmRlci1yYWRpdXM6NTAlO3RyYW5zaXRpb246dHJhbnNmb3JtIDIwMG1zIGVhc2UtaW4tb3V0O3RyYW5zZm9ybTpzY2FsZSgwLjYpO292ZXJmbG93OmhpZGRlbjt3aGl0ZS1zcGFjZTpub3dyYXA7dGV4dC1vdmVyZmxvdzplbGxpcHNpcztwb2ludGVyLWV2ZW50czpub25lfS5uZy1hbmltYXRlLWRpc2FibGVkW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtYmFkZ2UtY29udGVudFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtYmFkZ2UtY29udGVudC5fbWF0LWFuaW1hdGlvbi1ub29wYWJsZVtfbmdjb250ZW50LSVDT01QJV17dHJhbnNpdGlvbjpub25lfS5tYXQtYmFkZ2UtY29udGVudC5tYXQtYmFkZ2UtYWN0aXZlW19uZ2NvbnRlbnQtJUNPTVAlXXt0cmFuc2Zvcm06bm9uZX0ubWF0LWJhZGdlLXNtYWxsW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtYmFkZ2UtY29udGVudFtfbmdjb250ZW50LSVDT01QJV17d2lkdGg6MTZweDtoZWlnaHQ6MTZweDtsaW5lLWhlaWdodDoxNnB4fS5tYXQtYmFkZ2Utc21hbGwubWF0LWJhZGdlLWFib3ZlW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtYmFkZ2UtY29udGVudFtfbmdjb250ZW50LSVDT01QJV17dG9wOi04cHh9Lm1hdC1iYWRnZS1zbWFsbC5tYXQtYmFkZ2UtYmVsb3dbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1iYWRnZS1jb250ZW50W19uZ2NvbnRlbnQtJUNPTVAlXXtib3R0b206LThweH0ubWF0LWJhZGdlLXNtYWxsLm1hdC1iYWRnZS1iZWZvcmVbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1iYWRnZS1jb250ZW50W19uZ2NvbnRlbnQtJUNPTVAlXXtsZWZ0Oi0xNnB4fVtkaXI9cnRsXVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWJhZGdlLXNtYWxsLm1hdC1iYWRnZS1iZWZvcmVbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1iYWRnZS1jb250ZW50W19uZ2NvbnRlbnQtJUNPTVAlXXtsZWZ0OmF1dG87cmlnaHQ6LTE2cHh9Lm1hdC1iYWRnZS1zbWFsbC5tYXQtYmFkZ2UtYWZ0ZXJbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1iYWRnZS1jb250ZW50W19uZ2NvbnRlbnQtJUNPTVAlXXtyaWdodDotMTZweH1bZGlyPXJ0bF1bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1iYWRnZS1zbWFsbC5tYXQtYmFkZ2UtYWZ0ZXJbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1iYWRnZS1jb250ZW50W19uZ2NvbnRlbnQtJUNPTVAlXXtyaWdodDphdXRvO2xlZnQ6LTE2cHh9Lm1hdC1iYWRnZS1zbWFsbC5tYXQtYmFkZ2Utb3ZlcmxhcC5tYXQtYmFkZ2UtYmVmb3JlW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtYmFkZ2UtY29udGVudFtfbmdjb250ZW50LSVDT01QJV17bGVmdDotOHB4fVtkaXI9cnRsXVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWJhZGdlLXNtYWxsLm1hdC1iYWRnZS1vdmVybGFwLm1hdC1iYWRnZS1iZWZvcmVbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1iYWRnZS1jb250ZW50W19uZ2NvbnRlbnQtJUNPTVAlXXtsZWZ0OmF1dG87cmlnaHQ6LThweH0ubWF0LWJhZGdlLXNtYWxsLm1hdC1iYWRnZS1vdmVybGFwLm1hdC1iYWRnZS1hZnRlcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWJhZGdlLWNvbnRlbnRbX25nY29udGVudC0lQ09NUCVde3JpZ2h0Oi04cHh9W2Rpcj1ydGxdW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtYmFkZ2Utc21hbGwubWF0LWJhZGdlLW92ZXJsYXAubWF0LWJhZGdlLWFmdGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtYmFkZ2UtY29udGVudFtfbmdjb250ZW50LSVDT01QJV17cmlnaHQ6YXV0bztsZWZ0Oi04cHh9Lm1hdC1iYWRnZS1tZWRpdW1bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1iYWRnZS1jb250ZW50W19uZ2NvbnRlbnQtJUNPTVAlXXt3aWR0aDoyMnB4O2hlaWdodDoyMnB4O2xpbmUtaGVpZ2h0OjIycHh9Lm1hdC1iYWRnZS1tZWRpdW0ubWF0LWJhZGdlLWFib3ZlW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtYmFkZ2UtY29udGVudFtfbmdjb250ZW50LSVDT01QJV17dG9wOi0xMXB4fS5tYXQtYmFkZ2UtbWVkaXVtLm1hdC1iYWRnZS1iZWxvd1tfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWJhZGdlLWNvbnRlbnRbX25nY29udGVudC0lQ09NUCVde2JvdHRvbTotMTFweH0ubWF0LWJhZGdlLW1lZGl1bS5tYXQtYmFkZ2UtYmVmb3JlW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtYmFkZ2UtY29udGVudFtfbmdjb250ZW50LSVDT01QJV17bGVmdDotMjJweH1bZGlyPXJ0bF1bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1iYWRnZS1tZWRpdW0ubWF0LWJhZGdlLWJlZm9yZVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWJhZGdlLWNvbnRlbnRbX25nY29udGVudC0lQ09NUCVde2xlZnQ6YXV0bztyaWdodDotMjJweH0ubWF0LWJhZGdlLW1lZGl1bS5tYXQtYmFkZ2UtYWZ0ZXJbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1iYWRnZS1jb250ZW50W19uZ2NvbnRlbnQtJUNPTVAlXXtyaWdodDotMjJweH1bZGlyPXJ0bF1bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1iYWRnZS1tZWRpdW0ubWF0LWJhZGdlLWFmdGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtYmFkZ2UtY29udGVudFtfbmdjb250ZW50LSVDT01QJV17cmlnaHQ6YXV0bztsZWZ0Oi0yMnB4fS5tYXQtYmFkZ2UtbWVkaXVtLm1hdC1iYWRnZS1vdmVybGFwLm1hdC1iYWRnZS1iZWZvcmVbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1iYWRnZS1jb250ZW50W19uZ2NvbnRlbnQtJUNPTVAlXXtsZWZ0Oi0xMXB4fVtkaXI9cnRsXVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWJhZGdlLW1lZGl1bS5tYXQtYmFkZ2Utb3ZlcmxhcC5tYXQtYmFkZ2UtYmVmb3JlW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtYmFkZ2UtY29udGVudFtfbmdjb250ZW50LSVDT01QJV17bGVmdDphdXRvO3JpZ2h0Oi0xMXB4fS5tYXQtYmFkZ2UtbWVkaXVtLm1hdC1iYWRnZS1vdmVybGFwLm1hdC1iYWRnZS1hZnRlcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWJhZGdlLWNvbnRlbnRbX25nY29udGVudC0lQ09NUCVde3JpZ2h0Oi0xMXB4fVtkaXI9cnRsXVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWJhZGdlLW1lZGl1bS5tYXQtYmFkZ2Utb3ZlcmxhcC5tYXQtYmFkZ2UtYWZ0ZXJbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1iYWRnZS1jb250ZW50W19uZ2NvbnRlbnQtJUNPTVAlXXtyaWdodDphdXRvO2xlZnQ6LTExcHh9Lm1hdC1iYWRnZS1sYXJnZVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWJhZGdlLWNvbnRlbnRbX25nY29udGVudC0lQ09NUCVde3dpZHRoOjI4cHg7aGVpZ2h0OjI4cHg7bGluZS1oZWlnaHQ6MjhweH0ubWF0LWJhZGdlLWxhcmdlLm1hdC1iYWRnZS1hYm92ZVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWJhZGdlLWNvbnRlbnRbX25nY29udGVudC0lQ09NUCVde3RvcDotMTRweH0ubWF0LWJhZGdlLWxhcmdlLm1hdC1iYWRnZS1iZWxvd1tfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWJhZGdlLWNvbnRlbnRbX25nY29udGVudC0lQ09NUCVde2JvdHRvbTotMTRweH0ubWF0LWJhZGdlLWxhcmdlLm1hdC1iYWRnZS1iZWZvcmVbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1iYWRnZS1jb250ZW50W19uZ2NvbnRlbnQtJUNPTVAlXXtsZWZ0Oi0yOHB4fVtkaXI9cnRsXVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWJhZGdlLWxhcmdlLm1hdC1iYWRnZS1iZWZvcmVbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1iYWRnZS1jb250ZW50W19uZ2NvbnRlbnQtJUNPTVAlXXtsZWZ0OmF1dG87cmlnaHQ6LTI4cHh9Lm1hdC1iYWRnZS1sYXJnZS5tYXQtYmFkZ2UtYWZ0ZXJbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1iYWRnZS1jb250ZW50W19uZ2NvbnRlbnQtJUNPTVAlXXtyaWdodDotMjhweH1bZGlyPXJ0bF1bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1iYWRnZS1sYXJnZS5tYXQtYmFkZ2UtYWZ0ZXJbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1iYWRnZS1jb250ZW50W19uZ2NvbnRlbnQtJUNPTVAlXXtyaWdodDphdXRvO2xlZnQ6LTI4cHh9Lm1hdC1iYWRnZS1sYXJnZS5tYXQtYmFkZ2Utb3ZlcmxhcC5tYXQtYmFkZ2UtYmVmb3JlW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtYmFkZ2UtY29udGVudFtfbmdjb250ZW50LSVDT01QJV17bGVmdDotMTRweH1bZGlyPXJ0bF1bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1iYWRnZS1sYXJnZS5tYXQtYmFkZ2Utb3ZlcmxhcC5tYXQtYmFkZ2UtYmVmb3JlW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtYmFkZ2UtY29udGVudFtfbmdjb250ZW50LSVDT01QJV17bGVmdDphdXRvO3JpZ2h0Oi0xNHB4fS5tYXQtYmFkZ2UtbGFyZ2UubWF0LWJhZGdlLW92ZXJsYXAubWF0LWJhZGdlLWFmdGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtYmFkZ2UtY29udGVudFtfbmdjb250ZW50LSVDT01QJV17cmlnaHQ6LTE0cHh9W2Rpcj1ydGxdW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtYmFkZ2UtbGFyZ2UubWF0LWJhZGdlLW92ZXJsYXAubWF0LWJhZGdlLWFmdGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtYmFkZ2UtY29udGVudFtfbmdjb250ZW50LSVDT01QJV17cmlnaHQ6YXV0bztsZWZ0Oi0xNHB4fS5tYXQtYm90dG9tLXNoZWV0LWNvbnRhaW5lcltfbmdjb250ZW50LSVDT01QJV17Ym94LXNoYWRvdzowcHggOHB4IDEwcHggLTVweCByZ2JhKDAsIDAsIDAsIDAuMiksMHB4IDE2cHggMjRweCAycHggcmdiYSgwLCAwLCAwLCAwLjE0KSwwcHggNnB4IDMwcHggNXB4IHJnYmEoMCwgMCwgMCwgMC4xMik7YmFja2dyb3VuZDojZmZmO2NvbG9yOiMyMTIxMjF9Lm1hdC1idXR0b25bX25nY29udGVudC0lQ09NUCVdLCAubWF0LWljb24tYnV0dG9uW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1zdHJva2VkLWJ1dHRvbltfbmdjb250ZW50LSVDT01QJV17Y29sb3I6aW5oZXJpdDtiYWNrZ3JvdW5kOnRyYW5zcGFyZW50fS5tYXQtYnV0dG9uLm1hdC1wcmltYXJ5W19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1pY29uLWJ1dHRvbi5tYXQtcHJpbWFyeVtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtc3Ryb2tlZC1idXR0b24ubWF0LXByaW1hcnlbX25nY29udGVudC0lQ09NUCVde2NvbG9yOiNmNTdjMDB9Lm1hdC1idXR0b24ubWF0LWFjY2VudFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtaWNvbi1idXR0b24ubWF0LWFjY2VudFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtc3Ryb2tlZC1idXR0b24ubWF0LWFjY2VudFtfbmdjb250ZW50LSVDT01QJV17Y29sb3I6I2ZmOTgwMH0ubWF0LWJ1dHRvbi5tYXQtd2Fybltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtaWNvbi1idXR0b24ubWF0LXdhcm5bX25nY29udGVudC0lQ09NUCVdLCAubWF0LXN0cm9rZWQtYnV0dG9uLm1hdC13YXJuW19uZ2NvbnRlbnQtJUNPTVAlXXtjb2xvcjojZjQ0MzM2fS5tYXQtYnV0dG9uLm1hdC1wcmltYXJ5Lm1hdC1idXR0b24tZGlzYWJsZWRbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWJ1dHRvbi5tYXQtYWNjZW50Lm1hdC1idXR0b24tZGlzYWJsZWRbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWJ1dHRvbi5tYXQtd2Fybi5tYXQtYnV0dG9uLWRpc2FibGVkW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1idXR0b24ubWF0LWJ1dHRvbi1kaXNhYmxlZC5tYXQtYnV0dG9uLWRpc2FibGVkW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1pY29uLWJ1dHRvbi5tYXQtcHJpbWFyeS5tYXQtYnV0dG9uLWRpc2FibGVkW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1pY29uLWJ1dHRvbi5tYXQtYWNjZW50Lm1hdC1idXR0b24tZGlzYWJsZWRbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWljb24tYnV0dG9uLm1hdC13YXJuLm1hdC1idXR0b24tZGlzYWJsZWRbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWljb24tYnV0dG9uLm1hdC1idXR0b24tZGlzYWJsZWQubWF0LWJ1dHRvbi1kaXNhYmxlZFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtc3Ryb2tlZC1idXR0b24ubWF0LXByaW1hcnkubWF0LWJ1dHRvbi1kaXNhYmxlZFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtc3Ryb2tlZC1idXR0b24ubWF0LWFjY2VudC5tYXQtYnV0dG9uLWRpc2FibGVkW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1zdHJva2VkLWJ1dHRvbi5tYXQtd2Fybi5tYXQtYnV0dG9uLWRpc2FibGVkW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1zdHJva2VkLWJ1dHRvbi5tYXQtYnV0dG9uLWRpc2FibGVkLm1hdC1idXR0b24tZGlzYWJsZWRbX25nY29udGVudC0lQ09NUCVde2NvbG9yOnJnYmEoMCwwLDAsLjI2KX0ubWF0LWJ1dHRvbi5tYXQtcHJpbWFyeVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWJ1dHRvbi1mb2N1cy1vdmVybGF5W19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1pY29uLWJ1dHRvbi5tYXQtcHJpbWFyeVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWJ1dHRvbi1mb2N1cy1vdmVybGF5W19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1zdHJva2VkLWJ1dHRvbi5tYXQtcHJpbWFyeVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWJ1dHRvbi1mb2N1cy1vdmVybGF5W19uZ2NvbnRlbnQtJUNPTVAlXXtiYWNrZ3JvdW5kLWNvbG9yOiNmNTdjMDB9Lm1hdC1idXR0b24ubWF0LWFjY2VudFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWJ1dHRvbi1mb2N1cy1vdmVybGF5W19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1pY29uLWJ1dHRvbi5tYXQtYWNjZW50W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtYnV0dG9uLWZvY3VzLW92ZXJsYXlbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXN0cm9rZWQtYnV0dG9uLm1hdC1hY2NlbnRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1idXR0b24tZm9jdXMtb3ZlcmxheVtfbmdjb250ZW50LSVDT01QJV17YmFja2dyb3VuZC1jb2xvcjojZmY5ODAwfS5tYXQtYnV0dG9uLm1hdC13YXJuW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtYnV0dG9uLWZvY3VzLW92ZXJsYXlbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWljb24tYnV0dG9uLm1hdC13YXJuW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtYnV0dG9uLWZvY3VzLW92ZXJsYXlbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXN0cm9rZWQtYnV0dG9uLm1hdC13YXJuW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtYnV0dG9uLWZvY3VzLW92ZXJsYXlbX25nY29udGVudC0lQ09NUCVde2JhY2tncm91bmQtY29sb3I6I2Y0NDMzNn0ubWF0LWJ1dHRvbi5tYXQtYnV0dG9uLWRpc2FibGVkW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtYnV0dG9uLWZvY3VzLW92ZXJsYXlbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWljb24tYnV0dG9uLm1hdC1idXR0b24tZGlzYWJsZWRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1idXR0b24tZm9jdXMtb3ZlcmxheVtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtc3Ryb2tlZC1idXR0b24ubWF0LWJ1dHRvbi1kaXNhYmxlZFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWJ1dHRvbi1mb2N1cy1vdmVybGF5W19uZ2NvbnRlbnQtJUNPTVAlXXtiYWNrZ3JvdW5kLWNvbG9yOnRyYW5zcGFyZW50fS5tYXQtYnV0dG9uW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtcmlwcGxlLWVsZW1lbnRbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWljb24tYnV0dG9uW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtcmlwcGxlLWVsZW1lbnRbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXN0cm9rZWQtYnV0dG9uW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtcmlwcGxlLWVsZW1lbnRbX25nY29udGVudC0lQ09NUCVde29wYWNpdHk6LjE7YmFja2dyb3VuZC1jb2xvcjpjdXJyZW50Q29sb3J9Lm1hdC1idXR0b24tZm9jdXMtb3ZlcmxheVtfbmdjb250ZW50LSVDT01QJV17YmFja2dyb3VuZDojMDAwfS5tYXQtc3Ryb2tlZC1idXR0b25bX25nY29udGVudC0lQ09NUCVdOm5vdCgubWF0LWJ1dHRvbi1kaXNhYmxlZCl7Ym9yZGVyLWNvbG9yOnJnYmEoMCwwLDAsLjEyKX0ubWF0LWZsYXQtYnV0dG9uW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1yYWlzZWQtYnV0dG9uW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1mYWJbX25nY29udGVudC0lQ09NUCVdLCAubWF0LW1pbmktZmFiW19uZ2NvbnRlbnQtJUNPTVAlXXtjb2xvcjojMjEyMTIxO2JhY2tncm91bmQtY29sb3I6I2ZmZn0ubWF0LWZsYXQtYnV0dG9uLm1hdC1wcmltYXJ5W19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1yYWlzZWQtYnV0dG9uLm1hdC1wcmltYXJ5W19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1mYWIubWF0LXByaW1hcnlbX25nY29udGVudC0lQ09NUCVdLCAubWF0LW1pbmktZmFiLm1hdC1wcmltYXJ5W19uZ2NvbnRlbnQtJUNPTVAlXXtjb2xvcjojZmZmfS5tYXQtZmxhdC1idXR0b24ubWF0LWFjY2VudFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtcmFpc2VkLWJ1dHRvbi5tYXQtYWNjZW50W19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1mYWIubWF0LWFjY2VudFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtbWluaS1mYWIubWF0LWFjY2VudFtfbmdjb250ZW50LSVDT01QJV17Y29sb3I6I2ZmZn0ubWF0LWZsYXQtYnV0dG9uLm1hdC13YXJuW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1yYWlzZWQtYnV0dG9uLm1hdC13YXJuW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1mYWIubWF0LXdhcm5bX25nY29udGVudC0lQ09NUCVdLCAubWF0LW1pbmktZmFiLm1hdC13YXJuW19uZ2NvbnRlbnQtJUNPTVAlXXtjb2xvcjojZmZmfS5tYXQtZmxhdC1idXR0b24ubWF0LXByaW1hcnkubWF0LWJ1dHRvbi1kaXNhYmxlZFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtZmxhdC1idXR0b24ubWF0LWFjY2VudC5tYXQtYnV0dG9uLWRpc2FibGVkW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1mbGF0LWJ1dHRvbi5tYXQtd2Fybi5tYXQtYnV0dG9uLWRpc2FibGVkW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1mbGF0LWJ1dHRvbi5tYXQtYnV0dG9uLWRpc2FibGVkLm1hdC1idXR0b24tZGlzYWJsZWRbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXJhaXNlZC1idXR0b24ubWF0LXByaW1hcnkubWF0LWJ1dHRvbi1kaXNhYmxlZFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtcmFpc2VkLWJ1dHRvbi5tYXQtYWNjZW50Lm1hdC1idXR0b24tZGlzYWJsZWRbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXJhaXNlZC1idXR0b24ubWF0LXdhcm4ubWF0LWJ1dHRvbi1kaXNhYmxlZFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtcmFpc2VkLWJ1dHRvbi5tYXQtYnV0dG9uLWRpc2FibGVkLm1hdC1idXR0b24tZGlzYWJsZWRbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWZhYi5tYXQtcHJpbWFyeS5tYXQtYnV0dG9uLWRpc2FibGVkW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1mYWIubWF0LWFjY2VudC5tYXQtYnV0dG9uLWRpc2FibGVkW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1mYWIubWF0LXdhcm4ubWF0LWJ1dHRvbi1kaXNhYmxlZFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtZmFiLm1hdC1idXR0b24tZGlzYWJsZWQubWF0LWJ1dHRvbi1kaXNhYmxlZFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtbWluaS1mYWIubWF0LXByaW1hcnkubWF0LWJ1dHRvbi1kaXNhYmxlZFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtbWluaS1mYWIubWF0LWFjY2VudC5tYXQtYnV0dG9uLWRpc2FibGVkW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1taW5pLWZhYi5tYXQtd2Fybi5tYXQtYnV0dG9uLWRpc2FibGVkW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1taW5pLWZhYi5tYXQtYnV0dG9uLWRpc2FibGVkLm1hdC1idXR0b24tZGlzYWJsZWRbX25nY29udGVudC0lQ09NUCVde2NvbG9yOnJnYmEoMCwwLDAsLjI2KX0ubWF0LWZsYXQtYnV0dG9uLm1hdC1wcmltYXJ5W19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1yYWlzZWQtYnV0dG9uLm1hdC1wcmltYXJ5W19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1mYWIubWF0LXByaW1hcnlbX25nY29udGVudC0lQ09NUCVdLCAubWF0LW1pbmktZmFiLm1hdC1wcmltYXJ5W19uZ2NvbnRlbnQtJUNPTVAlXXtiYWNrZ3JvdW5kLWNvbG9yOiNmNTdjMDB9Lm1hdC1mbGF0LWJ1dHRvbi5tYXQtYWNjZW50W19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1yYWlzZWQtYnV0dG9uLm1hdC1hY2NlbnRbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWZhYi5tYXQtYWNjZW50W19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1taW5pLWZhYi5tYXQtYWNjZW50W19uZ2NvbnRlbnQtJUNPTVAlXXtiYWNrZ3JvdW5kLWNvbG9yOiNmZjk4MDB9Lm1hdC1mbGF0LWJ1dHRvbi5tYXQtd2Fybltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtcmFpc2VkLWJ1dHRvbi5tYXQtd2Fybltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtZmFiLm1hdC13YXJuW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1taW5pLWZhYi5tYXQtd2Fybltfbmdjb250ZW50LSVDT01QJV17YmFja2dyb3VuZC1jb2xvcjojZjQ0MzM2fS5tYXQtZmxhdC1idXR0b24ubWF0LXByaW1hcnkubWF0LWJ1dHRvbi1kaXNhYmxlZFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtZmxhdC1idXR0b24ubWF0LWFjY2VudC5tYXQtYnV0dG9uLWRpc2FibGVkW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1mbGF0LWJ1dHRvbi5tYXQtd2Fybi5tYXQtYnV0dG9uLWRpc2FibGVkW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1mbGF0LWJ1dHRvbi5tYXQtYnV0dG9uLWRpc2FibGVkLm1hdC1idXR0b24tZGlzYWJsZWRbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXJhaXNlZC1idXR0b24ubWF0LXByaW1hcnkubWF0LWJ1dHRvbi1kaXNhYmxlZFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtcmFpc2VkLWJ1dHRvbi5tYXQtYWNjZW50Lm1hdC1idXR0b24tZGlzYWJsZWRbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXJhaXNlZC1idXR0b24ubWF0LXdhcm4ubWF0LWJ1dHRvbi1kaXNhYmxlZFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtcmFpc2VkLWJ1dHRvbi5tYXQtYnV0dG9uLWRpc2FibGVkLm1hdC1idXR0b24tZGlzYWJsZWRbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWZhYi5tYXQtcHJpbWFyeS5tYXQtYnV0dG9uLWRpc2FibGVkW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1mYWIubWF0LWFjY2VudC5tYXQtYnV0dG9uLWRpc2FibGVkW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1mYWIubWF0LXdhcm4ubWF0LWJ1dHRvbi1kaXNhYmxlZFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtZmFiLm1hdC1idXR0b24tZGlzYWJsZWQubWF0LWJ1dHRvbi1kaXNhYmxlZFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtbWluaS1mYWIubWF0LXByaW1hcnkubWF0LWJ1dHRvbi1kaXNhYmxlZFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtbWluaS1mYWIubWF0LWFjY2VudC5tYXQtYnV0dG9uLWRpc2FibGVkW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1taW5pLWZhYi5tYXQtd2Fybi5tYXQtYnV0dG9uLWRpc2FibGVkW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1taW5pLWZhYi5tYXQtYnV0dG9uLWRpc2FibGVkLm1hdC1idXR0b24tZGlzYWJsZWRbX25nY29udGVudC0lQ09NUCVde2JhY2tncm91bmQtY29sb3I6cmdiYSgwLDAsMCwuMTIpfS5tYXQtZmxhdC1idXR0b24ubWF0LXByaW1hcnlbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1yaXBwbGUtZWxlbWVudFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtcmFpc2VkLWJ1dHRvbi5tYXQtcHJpbWFyeVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXJpcHBsZS1lbGVtZW50W19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1mYWIubWF0LXByaW1hcnlbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1yaXBwbGUtZWxlbWVudFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtbWluaS1mYWIubWF0LXByaW1hcnlbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1yaXBwbGUtZWxlbWVudFtfbmdjb250ZW50LSVDT01QJV17YmFja2dyb3VuZC1jb2xvcjpyZ2JhKDI1NSwyNTUsMjU1LC4xKX0ubWF0LWZsYXQtYnV0dG9uLm1hdC1hY2NlbnRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1yaXBwbGUtZWxlbWVudFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtcmFpc2VkLWJ1dHRvbi5tYXQtYWNjZW50W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtcmlwcGxlLWVsZW1lbnRbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWZhYi5tYXQtYWNjZW50W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtcmlwcGxlLWVsZW1lbnRbX25nY29udGVudC0lQ09NUCVdLCAubWF0LW1pbmktZmFiLm1hdC1hY2NlbnRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1yaXBwbGUtZWxlbWVudFtfbmdjb250ZW50LSVDT01QJV17YmFja2dyb3VuZC1jb2xvcjpyZ2JhKDI1NSwyNTUsMjU1LC4xKX0ubWF0LWZsYXQtYnV0dG9uLm1hdC13YXJuW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtcmlwcGxlLWVsZW1lbnRbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXJhaXNlZC1idXR0b24ubWF0LXdhcm5bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1yaXBwbGUtZWxlbWVudFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtZmFiLm1hdC13YXJuW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtcmlwcGxlLWVsZW1lbnRbX25nY29udGVudC0lQ09NUCVdLCAubWF0LW1pbmktZmFiLm1hdC13YXJuW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtcmlwcGxlLWVsZW1lbnRbX25nY29udGVudC0lQ09NUCVde2JhY2tncm91bmQtY29sb3I6cmdiYSgyNTUsMjU1LDI1NSwuMSl9Lm1hdC1zdHJva2VkLWJ1dHRvbltfbmdjb250ZW50LSVDT01QJV06bm90KFtjbGFzcyo9bWF0LWVsZXZhdGlvbi16XSksIC5tYXQtZmxhdC1idXR0b25bX25nY29udGVudC0lQ09NUCVdOm5vdChbY2xhc3MqPW1hdC1lbGV2YXRpb24tel0pe2JveC1zaGFkb3c6MHB4IDBweCAwcHggMHB4IHJnYmEoMCwgMCwgMCwgMC4yKSwwcHggMHB4IDBweCAwcHggcmdiYSgwLCAwLCAwLCAwLjE0KSwwcHggMHB4IDBweCAwcHggcmdiYSgwLCAwLCAwLCAwLjEyKX0ubWF0LXJhaXNlZC1idXR0b25bX25nY29udGVudC0lQ09NUCVdOm5vdChbY2xhc3MqPW1hdC1lbGV2YXRpb24tel0pe2JveC1zaGFkb3c6MHB4IDNweCAxcHggLTJweCByZ2JhKDAsIDAsIDAsIDAuMiksMHB4IDJweCAycHggMHB4IHJnYmEoMCwgMCwgMCwgMC4xNCksMHB4IDFweCA1cHggMHB4IHJnYmEoMCwgMCwgMCwgMC4xMil9Lm1hdC1yYWlzZWQtYnV0dG9uW19uZ2NvbnRlbnQtJUNPTVAlXTpub3QoLm1hdC1idXR0b24tZGlzYWJsZWQpOmFjdGl2ZTpub3QoW2NsYXNzKj1tYXQtZWxldmF0aW9uLXpdKXtib3gtc2hhZG93OjBweCA1cHggNXB4IC0zcHggcmdiYSgwLCAwLCAwLCAwLjIpLDBweCA4cHggMTBweCAxcHggcmdiYSgwLCAwLCAwLCAwLjE0KSwwcHggM3B4IDE0cHggMnB4IHJnYmEoMCwgMCwgMCwgMC4xMil9Lm1hdC1yYWlzZWQtYnV0dG9uLm1hdC1idXR0b24tZGlzYWJsZWRbX25nY29udGVudC0lQ09NUCVdOm5vdChbY2xhc3MqPW1hdC1lbGV2YXRpb24tel0pe2JveC1zaGFkb3c6MHB4IDBweCAwcHggMHB4IHJnYmEoMCwgMCwgMCwgMC4yKSwwcHggMHB4IDBweCAwcHggcmdiYSgwLCAwLCAwLCAwLjE0KSwwcHggMHB4IDBweCAwcHggcmdiYSgwLCAwLCAwLCAwLjEyKX0ubWF0LWZhYltfbmdjb250ZW50LSVDT01QJV06bm90KFtjbGFzcyo9bWF0LWVsZXZhdGlvbi16XSksIC5tYXQtbWluaS1mYWJbX25nY29udGVudC0lQ09NUCVdOm5vdChbY2xhc3MqPW1hdC1lbGV2YXRpb24tel0pe2JveC1zaGFkb3c6MHB4IDNweCA1cHggLTFweCByZ2JhKDAsIDAsIDAsIDAuMiksMHB4IDZweCAxMHB4IDBweCByZ2JhKDAsIDAsIDAsIDAuMTQpLDBweCAxcHggMThweCAwcHggcmdiYSgwLCAwLCAwLCAwLjEyKX0ubWF0LWZhYltfbmdjb250ZW50LSVDT01QJV06bm90KC5tYXQtYnV0dG9uLWRpc2FibGVkKTphY3RpdmU6bm90KFtjbGFzcyo9bWF0LWVsZXZhdGlvbi16XSksIC5tYXQtbWluaS1mYWJbX25nY29udGVudC0lQ09NUCVdOm5vdCgubWF0LWJ1dHRvbi1kaXNhYmxlZCk6YWN0aXZlOm5vdChbY2xhc3MqPW1hdC1lbGV2YXRpb24tel0pe2JveC1zaGFkb3c6MHB4IDdweCA4cHggLTRweCByZ2JhKDAsIDAsIDAsIDAuMiksMHB4IDEycHggMTdweCAycHggcmdiYSgwLCAwLCAwLCAwLjE0KSwwcHggNXB4IDIycHggNHB4IHJnYmEoMCwgMCwgMCwgMC4xMil9Lm1hdC1mYWIubWF0LWJ1dHRvbi1kaXNhYmxlZFtfbmdjb250ZW50LSVDT01QJV06bm90KFtjbGFzcyo9bWF0LWVsZXZhdGlvbi16XSksIC5tYXQtbWluaS1mYWIubWF0LWJ1dHRvbi1kaXNhYmxlZFtfbmdjb250ZW50LSVDT01QJV06bm90KFtjbGFzcyo9bWF0LWVsZXZhdGlvbi16XSl7Ym94LXNoYWRvdzowcHggMHB4IDBweCAwcHggcmdiYSgwLCAwLCAwLCAwLjIpLDBweCAwcHggMHB4IDBweCByZ2JhKDAsIDAsIDAsIDAuMTQpLDBweCAwcHggMHB4IDBweCByZ2JhKDAsIDAsIDAsIDAuMTIpfS5tYXQtYnV0dG9uLXRvZ2dsZS1zdGFuZGFsb25lW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1idXR0b24tdG9nZ2xlLWdyb3VwW19uZ2NvbnRlbnQtJUNPTVAlXXtib3gtc2hhZG93OjBweCAzcHggMXB4IC0ycHggcmdiYSgwLCAwLCAwLCAwLjIpLDBweCAycHggMnB4IDBweCByZ2JhKDAsIDAsIDAsIDAuMTQpLDBweCAxcHggNXB4IDBweCByZ2JhKDAsIDAsIDAsIDAuMTIpfS5tYXQtYnV0dG9uLXRvZ2dsZS1zdGFuZGFsb25lLm1hdC1idXR0b24tdG9nZ2xlLWFwcGVhcmFuY2Utc3RhbmRhcmRbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWJ1dHRvbi10b2dnbGUtZ3JvdXAtYXBwZWFyYW5jZS1zdGFuZGFyZFtfbmdjb250ZW50LSVDT01QJV17Ym94LXNoYWRvdzpub25lfS5tYXQtYnV0dG9uLXRvZ2dsZVtfbmdjb250ZW50LSVDT01QJV17Y29sb3I6cmdiYSgwLDAsMCwuMzgpfS5tYXQtYnV0dG9uLXRvZ2dsZVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWJ1dHRvbi10b2dnbGUtZm9jdXMtb3ZlcmxheVtfbmdjb250ZW50LSVDT01QJV17YmFja2dyb3VuZC1jb2xvcjpyZ2JhKDAsMCwwLC4xMil9Lm1hdC1idXR0b24tdG9nZ2xlLWFwcGVhcmFuY2Utc3RhbmRhcmRbX25nY29udGVudC0lQ09NUCVde2NvbG9yOiMyMTIxMjE7YmFja2dyb3VuZDojZmZmfS5tYXQtYnV0dG9uLXRvZ2dsZS1hcHBlYXJhbmNlLXN0YW5kYXJkW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtYnV0dG9uLXRvZ2dsZS1mb2N1cy1vdmVybGF5W19uZ2NvbnRlbnQtJUNPTVAlXXtiYWNrZ3JvdW5kLWNvbG9yOiMwMDB9Lm1hdC1idXR0b24tdG9nZ2xlLWdyb3VwLWFwcGVhcmFuY2Utc3RhbmRhcmRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1idXR0b24tdG9nZ2xlW19uZ2NvbnRlbnQtJUNPTVAlXSArIC5tYXQtYnV0dG9uLXRvZ2dsZVtfbmdjb250ZW50LSVDT01QJV17Ym9yZGVyLWxlZnQ6c29saWQgMXB4IHJnYmEoMCwwLDAsLjEyKX1bZGlyPXJ0bF1bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1idXR0b24tdG9nZ2xlLWdyb3VwLWFwcGVhcmFuY2Utc3RhbmRhcmRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1idXR0b24tdG9nZ2xlW19uZ2NvbnRlbnQtJUNPTVAlXSArIC5tYXQtYnV0dG9uLXRvZ2dsZVtfbmdjb250ZW50LSVDT01QJV17Ym9yZGVyLWxlZnQ6bm9uZTtib3JkZXItcmlnaHQ6c29saWQgMXB4IHJnYmEoMCwwLDAsLjEyKX0ubWF0LWJ1dHRvbi10b2dnbGUtZ3JvdXAtYXBwZWFyYW5jZS1zdGFuZGFyZC5tYXQtYnV0dG9uLXRvZ2dsZS12ZXJ0aWNhbFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWJ1dHRvbi10b2dnbGVbX25nY29udGVudC0lQ09NUCVdICsgLm1hdC1idXR0b24tdG9nZ2xlW19uZ2NvbnRlbnQtJUNPTVAlXXtib3JkZXItbGVmdDpub25lO2JvcmRlci1yaWdodDpub25lO2JvcmRlci10b3A6c29saWQgMXB4IHJnYmEoMCwwLDAsLjEyKX0ubWF0LWJ1dHRvbi10b2dnbGUtY2hlY2tlZFtfbmdjb250ZW50LSVDT01QJV17YmFja2dyb3VuZC1jb2xvcjojZTBlMGUwO2NvbG9yOiM2MTYxNjF9Lm1hdC1idXR0b24tdG9nZ2xlLWNoZWNrZWQubWF0LWJ1dHRvbi10b2dnbGUtYXBwZWFyYW5jZS1zdGFuZGFyZFtfbmdjb250ZW50LSVDT01QJV17Y29sb3I6IzIxMjEyMX0ubWF0LWJ1dHRvbi10b2dnbGUtZGlzYWJsZWRbX25nY29udGVudC0lQ09NUCVde2NvbG9yOnJnYmEoMCwwLDAsLjI2KTtiYWNrZ3JvdW5kLWNvbG9yOiNlZWV9Lm1hdC1idXR0b24tdG9nZ2xlLWRpc2FibGVkLm1hdC1idXR0b24tdG9nZ2xlLWFwcGVhcmFuY2Utc3RhbmRhcmRbX25nY29udGVudC0lQ09NUCVde2JhY2tncm91bmQ6I2ZmZn0ubWF0LWJ1dHRvbi10b2dnbGUtZGlzYWJsZWQubWF0LWJ1dHRvbi10b2dnbGUtY2hlY2tlZFtfbmdjb250ZW50LSVDT01QJV17YmFja2dyb3VuZC1jb2xvcjojYmRiZGJkfS5tYXQtYnV0dG9uLXRvZ2dsZS1zdGFuZGFsb25lLm1hdC1idXR0b24tdG9nZ2xlLWFwcGVhcmFuY2Utc3RhbmRhcmRbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWJ1dHRvbi10b2dnbGUtZ3JvdXAtYXBwZWFyYW5jZS1zdGFuZGFyZFtfbmdjb250ZW50LSVDT01QJV17Ym9yZGVyOnNvbGlkIDFweCByZ2JhKDAsMCwwLC4xMil9Lm1hdC1idXR0b24tdG9nZ2xlLWFwcGVhcmFuY2Utc3RhbmRhcmRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1idXR0b24tdG9nZ2xlLWxhYmVsLWNvbnRlbnRbX25nY29udGVudC0lQ09NUCVde2xpbmUtaGVpZ2h0OjQ4cHh9Lm1hdC1jYXJkW19uZ2NvbnRlbnQtJUNPTVAlXXtiYWNrZ3JvdW5kOiNmZmY7Y29sb3I6IzIxMjEyMX0ubWF0LWNhcmRbX25nY29udGVudC0lQ09NUCVdOm5vdChbY2xhc3MqPW1hdC1lbGV2YXRpb24tel0pe2JveC1zaGFkb3c6MHB4IDJweCAxcHggLTFweCByZ2JhKDAsIDAsIDAsIDAuMiksMHB4IDFweCAxcHggMHB4IHJnYmEoMCwgMCwgMCwgMC4xNCksMHB4IDFweCAzcHggMHB4IHJnYmEoMCwgMCwgMCwgMC4xMil9Lm1hdC1jYXJkLm1hdC1jYXJkLWZsYXRbX25nY29udGVudC0lQ09NUCVdOm5vdChbY2xhc3MqPW1hdC1lbGV2YXRpb24tel0pe2JveC1zaGFkb3c6MHB4IDBweCAwcHggMHB4IHJnYmEoMCwgMCwgMCwgMC4yKSwwcHggMHB4IDBweCAwcHggcmdiYSgwLCAwLCAwLCAwLjE0KSwwcHggMHB4IDBweCAwcHggcmdiYSgwLCAwLCAwLCAwLjEyKX0ubWF0LWNhcmQtc3VidGl0bGVbX25nY29udGVudC0lQ09NUCVde2NvbG9yOiM2MTYxNjF9Lm1hdC1jaGVja2JveC1mcmFtZVtfbmdjb250ZW50LSVDT01QJV17Ym9yZGVyLWNvbG9yOiM2MTYxNjF9Lm1hdC1jaGVja2JveC1jaGVja21hcmtbX25nY29udGVudC0lQ09NUCVde2ZpbGw6I2ZhZmFmYX0ubWF0LWNoZWNrYm94LWNoZWNrbWFyay1wYXRoW19uZ2NvbnRlbnQtJUNPTVAlXXtzdHJva2U6I2ZhZmFmYSAhaW1wb3J0YW50fS5tYXQtY2hlY2tib3gtbWl4ZWRtYXJrW19uZ2NvbnRlbnQtJUNPTVAlXXtiYWNrZ3JvdW5kLWNvbG9yOiNmYWZhZmF9Lm1hdC1jaGVja2JveC1pbmRldGVybWluYXRlLm1hdC1wcmltYXJ5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtY2hlY2tib3gtYmFja2dyb3VuZFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtY2hlY2tib3gtY2hlY2tlZC5tYXQtcHJpbWFyeVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWNoZWNrYm94LWJhY2tncm91bmRbX25nY29udGVudC0lQ09NUCVde2JhY2tncm91bmQtY29sb3I6I2Y1N2MwMH0ubWF0LWNoZWNrYm94LWluZGV0ZXJtaW5hdGUubWF0LWFjY2VudFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWNoZWNrYm94LWJhY2tncm91bmRbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWNoZWNrYm94LWNoZWNrZWQubWF0LWFjY2VudFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWNoZWNrYm94LWJhY2tncm91bmRbX25nY29udGVudC0lQ09NUCVde2JhY2tncm91bmQtY29sb3I6I2ZmOTgwMH0ubWF0LWNoZWNrYm94LWluZGV0ZXJtaW5hdGUubWF0LXdhcm5bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1jaGVja2JveC1iYWNrZ3JvdW5kW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1jaGVja2JveC1jaGVja2VkLm1hdC13YXJuW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtY2hlY2tib3gtYmFja2dyb3VuZFtfbmdjb250ZW50LSVDT01QJV17YmFja2dyb3VuZC1jb2xvcjojZjQ0MzM2fS5tYXQtY2hlY2tib3gtZGlzYWJsZWQubWF0LWNoZWNrYm94LWNoZWNrZWRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1jaGVja2JveC1iYWNrZ3JvdW5kW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1jaGVja2JveC1kaXNhYmxlZC5tYXQtY2hlY2tib3gtaW5kZXRlcm1pbmF0ZVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWNoZWNrYm94LWJhY2tncm91bmRbX25nY29udGVudC0lQ09NUCVde2JhY2tncm91bmQtY29sb3I6I2IwYjBiMH0ubWF0LWNoZWNrYm94LWRpc2FibGVkW19uZ2NvbnRlbnQtJUNPTVAlXTpub3QoLm1hdC1jaGVja2JveC1jaGVja2VkKSAgIC5tYXQtY2hlY2tib3gtZnJhbWVbX25nY29udGVudC0lQ09NUCVde2JvcmRlci1jb2xvcjojYjBiMGIwfS5tYXQtY2hlY2tib3gtZGlzYWJsZWRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1jaGVja2JveC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17Y29sb3I6IzYxNjE2MX0ubWF0LWNoZWNrYm94W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtcmlwcGxlLWVsZW1lbnRbX25nY29udGVudC0lQ09NUCVde2JhY2tncm91bmQtY29sb3I6IzAwMH0ubWF0LWNoZWNrYm94LWNoZWNrZWRbX25nY29udGVudC0lQ09NUCVdOm5vdCgubWF0LWNoZWNrYm94LWRpc2FibGVkKS5tYXQtcHJpbWFyeSAgIC5tYXQtcmlwcGxlLWVsZW1lbnRbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWNoZWNrYm94W19uZ2NvbnRlbnQtJUNPTVAlXTphY3RpdmU6bm90KC5tYXQtY2hlY2tib3gtZGlzYWJsZWQpLm1hdC1wcmltYXJ5ICAgLm1hdC1yaXBwbGUtZWxlbWVudFtfbmdjb250ZW50LSVDT01QJV17YmFja2dyb3VuZDojZjU3YzAwfS5tYXQtY2hlY2tib3gtY2hlY2tlZFtfbmdjb250ZW50LSVDT01QJV06bm90KC5tYXQtY2hlY2tib3gtZGlzYWJsZWQpLm1hdC1hY2NlbnQgICAubWF0LXJpcHBsZS1lbGVtZW50W19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1jaGVja2JveFtfbmdjb250ZW50LSVDT01QJV06YWN0aXZlOm5vdCgubWF0LWNoZWNrYm94LWRpc2FibGVkKS5tYXQtYWNjZW50ICAgLm1hdC1yaXBwbGUtZWxlbWVudFtfbmdjb250ZW50LSVDT01QJV17YmFja2dyb3VuZDojZmY5ODAwfS5tYXQtY2hlY2tib3gtY2hlY2tlZFtfbmdjb250ZW50LSVDT01QJV06bm90KC5tYXQtY2hlY2tib3gtZGlzYWJsZWQpLm1hdC13YXJuICAgLm1hdC1yaXBwbGUtZWxlbWVudFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtY2hlY2tib3hbX25nY29udGVudC0lQ09NUCVdOmFjdGl2ZTpub3QoLm1hdC1jaGVja2JveC1kaXNhYmxlZCkubWF0LXdhcm4gICAubWF0LXJpcHBsZS1lbGVtZW50W19uZ2NvbnRlbnQtJUNPTVAlXXtiYWNrZ3JvdW5kOiNmNDQzMzZ9Lm1hdC1jaGlwLm1hdC1zdGFuZGFyZC1jaGlwW19uZ2NvbnRlbnQtJUNPTVAlXXtiYWNrZ3JvdW5kLWNvbG9yOiNlMGUwZTA7Y29sb3I6IzIxMjEyMX0ubWF0LWNoaXAubWF0LXN0YW5kYXJkLWNoaXBbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1jaGlwLXJlbW92ZVtfbmdjb250ZW50LSVDT01QJV17Y29sb3I6IzIxMjEyMTtvcGFjaXR5Oi40fS5tYXQtY2hpcC5tYXQtc3RhbmRhcmQtY2hpcFtfbmdjb250ZW50LSVDT01QJV06bm90KC5tYXQtY2hpcC1kaXNhYmxlZCk6YWN0aXZle2JveC1zaGFkb3c6MHB4IDNweCAzcHggLTJweCByZ2JhKDAsIDAsIDAsIDAuMiksMHB4IDNweCA0cHggMHB4IHJnYmEoMCwgMCwgMCwgMC4xNCksMHB4IDFweCA4cHggMHB4IHJnYmEoMCwgMCwgMCwgMC4xMil9Lm1hdC1jaGlwLm1hdC1zdGFuZGFyZC1jaGlwW19uZ2NvbnRlbnQtJUNPTVAlXTpub3QoLm1hdC1jaGlwLWRpc2FibGVkKSAgIC5tYXQtY2hpcC1yZW1vdmVbX25nY29udGVudC0lQ09NUCVdOmhvdmVye29wYWNpdHk6LjU0fS5tYXQtY2hpcC5tYXQtc3RhbmRhcmQtY2hpcC5tYXQtY2hpcC1kaXNhYmxlZFtfbmdjb250ZW50LSVDT01QJV17b3BhY2l0eTouNH0ubWF0LWNoaXAubWF0LXN0YW5kYXJkLWNoaXBbX25nY29udGVudC0lQ09NUCVdOjphZnRlcntiYWNrZ3JvdW5kOiMwMDB9Lm1hdC1jaGlwLm1hdC1zdGFuZGFyZC1jaGlwLm1hdC1jaGlwLXNlbGVjdGVkLm1hdC1wcmltYXJ5W19uZ2NvbnRlbnQtJUNPTVAlXXtiYWNrZ3JvdW5kLWNvbG9yOiNmNTdjMDA7Y29sb3I6I2ZmZn0ubWF0LWNoaXAubWF0LXN0YW5kYXJkLWNoaXAubWF0LWNoaXAtc2VsZWN0ZWQubWF0LXByaW1hcnlbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1jaGlwLXJlbW92ZVtfbmdjb250ZW50LSVDT01QJV17Y29sb3I6I2ZmZjtvcGFjaXR5Oi40fS5tYXQtY2hpcC5tYXQtc3RhbmRhcmQtY2hpcC5tYXQtY2hpcC1zZWxlY3RlZC5tYXQtcHJpbWFyeVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXJpcHBsZS1lbGVtZW50W19uZ2NvbnRlbnQtJUNPTVAlXXtiYWNrZ3JvdW5kLWNvbG9yOnJnYmEoMjU1LDI1NSwyNTUsLjEpfS5tYXQtY2hpcC5tYXQtc3RhbmRhcmQtY2hpcC5tYXQtY2hpcC1zZWxlY3RlZC5tYXQtd2Fybltfbmdjb250ZW50LSVDT01QJV17YmFja2dyb3VuZC1jb2xvcjojZjQ0MzM2O2NvbG9yOiNmZmZ9Lm1hdC1jaGlwLm1hdC1zdGFuZGFyZC1jaGlwLm1hdC1jaGlwLXNlbGVjdGVkLm1hdC13YXJuW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtY2hpcC1yZW1vdmVbX25nY29udGVudC0lQ09NUCVde2NvbG9yOiNmZmY7b3BhY2l0eTouNH0ubWF0LWNoaXAubWF0LXN0YW5kYXJkLWNoaXAubWF0LWNoaXAtc2VsZWN0ZWQubWF0LXdhcm5bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1yaXBwbGUtZWxlbWVudFtfbmdjb250ZW50LSVDT01QJV17YmFja2dyb3VuZC1jb2xvcjpyZ2JhKDI1NSwyNTUsMjU1LC4xKX0ubWF0LWNoaXAubWF0LXN0YW5kYXJkLWNoaXAubWF0LWNoaXAtc2VsZWN0ZWQubWF0LWFjY2VudFtfbmdjb250ZW50LSVDT01QJV17YmFja2dyb3VuZC1jb2xvcjojZmY5ODAwO2NvbG9yOiNmZmZ9Lm1hdC1jaGlwLm1hdC1zdGFuZGFyZC1jaGlwLm1hdC1jaGlwLXNlbGVjdGVkLm1hdC1hY2NlbnRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1jaGlwLXJlbW92ZVtfbmdjb250ZW50LSVDT01QJV17Y29sb3I6I2ZmZjtvcGFjaXR5Oi40fS5tYXQtY2hpcC5tYXQtc3RhbmRhcmQtY2hpcC5tYXQtY2hpcC1zZWxlY3RlZC5tYXQtYWNjZW50W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtcmlwcGxlLWVsZW1lbnRbX25nY29udGVudC0lQ09NUCVde2JhY2tncm91bmQtY29sb3I6cmdiYSgyNTUsMjU1LDI1NSwuMSl9Lm1hdC10YWJsZVtfbmdjb250ZW50LSVDT01QJV17YmFja2dyb3VuZDojZmZmfS5tYXQtdGFibGVbX25nY29udGVudC0lQ09NUCVdICAgdGhlYWRbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXRhYmxlW19uZ2NvbnRlbnQtJUNPTVAlXSAgIHRib2R5W19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10YWJsZVtfbmdjb250ZW50LSVDT01QJV0gICB0Zm9vdFtfbmdjb250ZW50LSVDT01QJV0sIG1hdC1oZWFkZXItcm93W19uZ2NvbnRlbnQtJUNPTVAlXSwgbWF0LXJvd1tfbmdjb250ZW50LSVDT01QJV0sIG1hdC1mb290ZXItcm93W19uZ2NvbnRlbnQtJUNPTVAlXSwgW21hdC1oZWFkZXItcm93XVtfbmdjb250ZW50LSVDT01QJV0sIFttYXQtcm93XVtfbmdjb250ZW50LSVDT01QJV0sIFttYXQtZm9vdGVyLXJvd11bX25nY29udGVudC0lQ09NUCVdLCAubWF0LXRhYmxlLXN0aWNreVtfbmdjb250ZW50LSVDT01QJV17YmFja2dyb3VuZDppbmhlcml0fW1hdC1yb3dbX25nY29udGVudC0lQ09NUCVdLCBtYXQtaGVhZGVyLXJvd1tfbmdjb250ZW50LSVDT01QJV0sIG1hdC1mb290ZXItcm93W19uZ2NvbnRlbnQtJUNPTVAlXSwgdGgubWF0LWhlYWRlci1jZWxsW19uZ2NvbnRlbnQtJUNPTVAlXSwgdGQubWF0LWNlbGxbX25nY29udGVudC0lQ09NUCVdLCB0ZC5tYXQtZm9vdGVyLWNlbGxbX25nY29udGVudC0lQ09NUCVde2JvcmRlci1ib3R0b20tY29sb3I6cmdiYSgwLDAsMCwuMTIpfS5tYXQtaGVhZGVyLWNlbGxbX25nY29udGVudC0lQ09NUCVde2NvbG9yOiM2MTYxNjF9Lm1hdC1jZWxsW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1mb290ZXItY2VsbFtfbmdjb250ZW50LSVDT01QJV17Y29sb3I6IzIxMjEyMX0ubWF0LWNhbGVuZGFyLWFycm93W19uZ2NvbnRlbnQtJUNPTVAlXXtib3JkZXItdG9wLWNvbG9yOnJnYmEoMCwwLDAsLjU0KX0ubWF0LWRhdGVwaWNrZXItdG9nZ2xlW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1kYXRlcGlja2VyLWNvbnRlbnRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1jYWxlbmRhci1uZXh0LWJ1dHRvbltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtZGF0ZXBpY2tlci1jb250ZW50W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtY2FsZW5kYXItcHJldmlvdXMtYnV0dG9uW19uZ2NvbnRlbnQtJUNPTVAlXXtjb2xvcjpyZ2JhKDAsMCwwLC41NCl9Lm1hdC1jYWxlbmRhci10YWJsZS1oZWFkZXJbX25nY29udGVudC0lQ09NUCVde2NvbG9yOnJnYmEoMCwwLDAsLjM4KX0ubWF0LWNhbGVuZGFyLXRhYmxlLWhlYWRlci1kaXZpZGVyW19uZ2NvbnRlbnQtJUNPTVAlXTo6YWZ0ZXJ7YmFja2dyb3VuZDpyZ2JhKDAsMCwwLC4xMil9Lm1hdC1jYWxlbmRhci1ib2R5LWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXtjb2xvcjojNjE2MTYxfS5tYXQtY2FsZW5kYXItYm9keS1jZWxsLWNvbnRlbnRbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWRhdGUtcmFuZ2UtaW5wdXQtc2VwYXJhdG9yW19uZ2NvbnRlbnQtJUNPTVAlXXtjb2xvcjojMjEyMTIxO2JvcmRlci1jb2xvcjp0cmFuc3BhcmVudH0ubWF0LWNhbGVuZGFyLWJvZHktZGlzYWJsZWRbX25nY29udGVudC0lQ09NUCVdID4gLm1hdC1jYWxlbmRhci1ib2R5LWNlbGwtY29udGVudFtfbmdjb250ZW50LSVDT01QJV06bm90KC5tYXQtY2FsZW5kYXItYm9keS1zZWxlY3RlZCk6bm90KC5tYXQtY2FsZW5kYXItYm9keS1jb21wYXJpc29uLWlkZW50aWNhbCl7Y29sb3I6Izc1NzU3NX0ubWF0LWZvcm0tZmllbGQtZGlzYWJsZWRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1kYXRlLXJhbmdlLWlucHV0LXNlcGFyYXRvcltfbmdjb250ZW50LSVDT01QJV17Y29sb3I6Izc1NzU3NX0ubWF0LWNhbGVuZGFyLWJvZHktY2VsbFtfbmdjb250ZW50LSVDT01QJV06bm90KC5tYXQtY2FsZW5kYXItYm9keS1kaXNhYmxlZCk6aG92ZXIgPiAubWF0LWNhbGVuZGFyLWJvZHktY2VsbC1jb250ZW50W19uZ2NvbnRlbnQtJUNPTVAlXTpub3QoLm1hdC1jYWxlbmRhci1ib2R5LXNlbGVjdGVkKTpub3QoLm1hdC1jYWxlbmRhci1ib2R5LWNvbXBhcmlzb24taWRlbnRpY2FsKSwgLmNkay1rZXlib2FyZC1mb2N1c2VkW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtY2FsZW5kYXItYm9keS1hY3RpdmVbX25nY29udGVudC0lQ09NUCVdID4gLm1hdC1jYWxlbmRhci1ib2R5LWNlbGwtY29udGVudFtfbmdjb250ZW50LSVDT01QJV06bm90KC5tYXQtY2FsZW5kYXItYm9keS1zZWxlY3RlZCk6bm90KC5tYXQtY2FsZW5kYXItYm9keS1jb21wYXJpc29uLWlkZW50aWNhbCksIC5jZGstcHJvZ3JhbS1mb2N1c2VkW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtY2FsZW5kYXItYm9keS1hY3RpdmVbX25nY29udGVudC0lQ09NUCVdID4gLm1hdC1jYWxlbmRhci1ib2R5LWNlbGwtY29udGVudFtfbmdjb250ZW50LSVDT01QJV06bm90KC5tYXQtY2FsZW5kYXItYm9keS1zZWxlY3RlZCk6bm90KC5tYXQtY2FsZW5kYXItYm9keS1jb21wYXJpc29uLWlkZW50aWNhbCl7YmFja2dyb3VuZC1jb2xvcjpyZ2JhKDAsMCwwLC4wNCl9Lm1hdC1jYWxlbmRhci1ib2R5LWluLXByZXZpZXdbX25nY29udGVudC0lQ09NUCVde2NvbG9yOnJnYmEoMCwwLDAsLjI0KX0ubWF0LWNhbGVuZGFyLWJvZHktdG9kYXlbX25nY29udGVudC0lQ09NUCVdOm5vdCgubWF0LWNhbGVuZGFyLWJvZHktc2VsZWN0ZWQpOm5vdCgubWF0LWNhbGVuZGFyLWJvZHktY29tcGFyaXNvbi1pZGVudGljYWwpe2JvcmRlci1jb2xvcjpyZ2JhKDAsMCwwLC4zOCl9Lm1hdC1jYWxlbmRhci1ib2R5LWRpc2FibGVkW19uZ2NvbnRlbnQtJUNPTVAlXSA+IC5tYXQtY2FsZW5kYXItYm9keS10b2RheVtfbmdjb250ZW50LSVDT01QJV06bm90KC5tYXQtY2FsZW5kYXItYm9keS1zZWxlY3RlZCk6bm90KC5tYXQtY2FsZW5kYXItYm9keS1jb21wYXJpc29uLWlkZW50aWNhbCl7Ym9yZGVyLWNvbG9yOnJnYmEoMCwwLDAsLjE4KX0ubWF0LWNhbGVuZGFyLWJvZHktaW4tcmFuZ2VbX25nY29udGVudC0lQ09NUCVdOjpiZWZvcmV7YmFja2dyb3VuZDpyZ2JhKDI0NSwxMjQsMCwuMil9Lm1hdC1jYWxlbmRhci1ib2R5LWNvbXBhcmlzb24taWRlbnRpY2FsW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1jYWxlbmRhci1ib2R5LWluLWNvbXBhcmlzb24tcmFuZ2VbX25nY29udGVudC0lQ09NUCVdOjpiZWZvcmV7YmFja2dyb3VuZDpyZ2JhKDI0OSwxNzEsMCwuMil9Lm1hdC1jYWxlbmRhci1ib2R5LWNvbXBhcmlzb24tYnJpZGdlLXN0YXJ0W19uZ2NvbnRlbnQtJUNPTVAlXTo6YmVmb3JlLCBbZGlyPXJ0bF1bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1jYWxlbmRhci1ib2R5LWNvbXBhcmlzb24tYnJpZGdlLWVuZFtfbmdjb250ZW50LSVDT01QJV06OmJlZm9yZXtiYWNrZ3JvdW5kOmxpbmVhci1ncmFkaWVudCh0byByaWdodCwgcmdiYSgyNDUsIDEyNCwgMCwgMC4yKSA1MCUsIHJnYmEoMjQ5LCAxNzEsIDAsIDAuMikgNTAlKX0ubWF0LWNhbGVuZGFyLWJvZHktY29tcGFyaXNvbi1icmlkZ2UtZW5kW19uZ2NvbnRlbnQtJUNPTVAlXTo6YmVmb3JlLCBbZGlyPXJ0bF1bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1jYWxlbmRhci1ib2R5LWNvbXBhcmlzb24tYnJpZGdlLXN0YXJ0W19uZ2NvbnRlbnQtJUNPTVAlXTo6YmVmb3Jle2JhY2tncm91bmQ6bGluZWFyLWdyYWRpZW50KHRvIGxlZnQsIHJnYmEoMjQ1LCAxMjQsIDAsIDAuMikgNTAlLCByZ2JhKDI0OSwgMTcxLCAwLCAwLjIpIDUwJSl9Lm1hdC1jYWxlbmRhci1ib2R5LWluLXJhbmdlW19uZ2NvbnRlbnQtJUNPTVAlXSA+IC5tYXQtY2FsZW5kYXItYm9keS1jb21wYXJpc29uLWlkZW50aWNhbFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtY2FsZW5kYXItYm9keS1pbi1jb21wYXJpc29uLXJhbmdlLm1hdC1jYWxlbmRhci1ib2R5LWluLXJhbmdlW19uZ2NvbnRlbnQtJUNPTVAlXTo6YWZ0ZXJ7YmFja2dyb3VuZDojYThkYWI1fS5tYXQtY2FsZW5kYXItYm9keS1jb21wYXJpc29uLWlkZW50aWNhbC5tYXQtY2FsZW5kYXItYm9keS1zZWxlY3RlZFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtY2FsZW5kYXItYm9keS1pbi1jb21wYXJpc29uLXJhbmdlW19uZ2NvbnRlbnQtJUNPTVAlXSA+IC5tYXQtY2FsZW5kYXItYm9keS1zZWxlY3RlZFtfbmdjb250ZW50LSVDT01QJV17YmFja2dyb3VuZDojNDZhMzVlfS5tYXQtY2FsZW5kYXItYm9keS1zZWxlY3RlZFtfbmdjb250ZW50LSVDT01QJV17YmFja2dyb3VuZC1jb2xvcjojZjU3YzAwO2NvbG9yOiNmZmZ9Lm1hdC1jYWxlbmRhci1ib2R5LWRpc2FibGVkW19uZ2NvbnRlbnQtJUNPTVAlXSA+IC5tYXQtY2FsZW5kYXItYm9keS1zZWxlY3RlZFtfbmdjb250ZW50LSVDT01QJV17YmFja2dyb3VuZC1jb2xvcjpyZ2JhKDI0NSwxMjQsMCwuNCl9Lm1hdC1jYWxlbmRhci1ib2R5LXRvZGF5Lm1hdC1jYWxlbmRhci1ib2R5LXNlbGVjdGVkW19uZ2NvbnRlbnQtJUNPTVAlXXtib3gtc2hhZG93Omluc2V0IDAgMCAwIDFweCAjZmZmfS5tYXQtZGF0ZXBpY2tlci1jb250ZW50W19uZ2NvbnRlbnQtJUNPTVAlXXtib3gtc2hhZG93OjBweCAycHggNHB4IC0xcHggcmdiYSgwLCAwLCAwLCAwLjIpLDBweCA0cHggNXB4IDBweCByZ2JhKDAsIDAsIDAsIDAuMTQpLDBweCAxcHggMTBweCAwcHggcmdiYSgwLCAwLCAwLCAwLjEyKTtiYWNrZ3JvdW5kLWNvbG9yOiNmZmY7Y29sb3I6IzIxMjEyMX0ubWF0LWRhdGVwaWNrZXItY29udGVudC5tYXQtYWNjZW50W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtY2FsZW5kYXItYm9keS1pbi1yYW5nZVtfbmdjb250ZW50LSVDT01QJV06OmJlZm9yZXtiYWNrZ3JvdW5kOnJnYmEoMjU1LDE1MiwwLC4yKX0ubWF0LWRhdGVwaWNrZXItY29udGVudC5tYXQtYWNjZW50W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtY2FsZW5kYXItYm9keS1jb21wYXJpc29uLWlkZW50aWNhbFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtZGF0ZXBpY2tlci1jb250ZW50Lm1hdC1hY2NlbnRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1jYWxlbmRhci1ib2R5LWluLWNvbXBhcmlzb24tcmFuZ2VbX25nY29udGVudC0lQ09NUCVdOjpiZWZvcmV7YmFja2dyb3VuZDpyZ2JhKDI0OSwxNzEsMCwuMil9Lm1hdC1kYXRlcGlja2VyLWNvbnRlbnQubWF0LWFjY2VudFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWNhbGVuZGFyLWJvZHktY29tcGFyaXNvbi1icmlkZ2Utc3RhcnRbX25nY29udGVudC0lQ09NUCVdOjpiZWZvcmUsIC5tYXQtZGF0ZXBpY2tlci1jb250ZW50Lm1hdC1hY2NlbnRbX25nY29udGVudC0lQ09NUCVdICAgW2Rpcj1ydGxdW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtY2FsZW5kYXItYm9keS1jb21wYXJpc29uLWJyaWRnZS1lbmRbX25nY29udGVudC0lQ09NUCVdOjpiZWZvcmV7YmFja2dyb3VuZDpsaW5lYXItZ3JhZGllbnQodG8gcmlnaHQsIHJnYmEoMjU1LCAxNTIsIDAsIDAuMikgNTAlLCByZ2JhKDI0OSwgMTcxLCAwLCAwLjIpIDUwJSl9Lm1hdC1kYXRlcGlja2VyLWNvbnRlbnQubWF0LWFjY2VudFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWNhbGVuZGFyLWJvZHktY29tcGFyaXNvbi1icmlkZ2UtZW5kW19uZ2NvbnRlbnQtJUNPTVAlXTo6YmVmb3JlLCAubWF0LWRhdGVwaWNrZXItY29udGVudC5tYXQtYWNjZW50W19uZ2NvbnRlbnQtJUNPTVAlXSAgIFtkaXI9cnRsXVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWNhbGVuZGFyLWJvZHktY29tcGFyaXNvbi1icmlkZ2Utc3RhcnRbX25nY29udGVudC0lQ09NUCVdOjpiZWZvcmV7YmFja2dyb3VuZDpsaW5lYXItZ3JhZGllbnQodG8gbGVmdCwgcmdiYSgyNTUsIDE1MiwgMCwgMC4yKSA1MCUsIHJnYmEoMjQ5LCAxNzEsIDAsIDAuMikgNTAlKX0ubWF0LWRhdGVwaWNrZXItY29udGVudC5tYXQtYWNjZW50W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtY2FsZW5kYXItYm9keS1pbi1yYW5nZVtfbmdjb250ZW50LSVDT01QJV0gPiAubWF0LWNhbGVuZGFyLWJvZHktY29tcGFyaXNvbi1pZGVudGljYWxbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWRhdGVwaWNrZXItY29udGVudC5tYXQtYWNjZW50W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtY2FsZW5kYXItYm9keS1pbi1jb21wYXJpc29uLXJhbmdlLm1hdC1jYWxlbmRhci1ib2R5LWluLXJhbmdlW19uZ2NvbnRlbnQtJUNPTVAlXTo6YWZ0ZXJ7YmFja2dyb3VuZDojYThkYWI1fS5tYXQtZGF0ZXBpY2tlci1jb250ZW50Lm1hdC1hY2NlbnRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1jYWxlbmRhci1ib2R5LWNvbXBhcmlzb24taWRlbnRpY2FsLm1hdC1jYWxlbmRhci1ib2R5LXNlbGVjdGVkW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1kYXRlcGlja2VyLWNvbnRlbnQubWF0LWFjY2VudFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWNhbGVuZGFyLWJvZHktaW4tY29tcGFyaXNvbi1yYW5nZVtfbmdjb250ZW50LSVDT01QJV0gPiAubWF0LWNhbGVuZGFyLWJvZHktc2VsZWN0ZWRbX25nY29udGVudC0lQ09NUCVde2JhY2tncm91bmQ6IzQ2YTM1ZX0ubWF0LWRhdGVwaWNrZXItY29udGVudC5tYXQtYWNjZW50W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtY2FsZW5kYXItYm9keS1zZWxlY3RlZFtfbmdjb250ZW50LSVDT01QJV17YmFja2dyb3VuZC1jb2xvcjojZmY5ODAwO2NvbG9yOiNmZmZ9Lm1hdC1kYXRlcGlja2VyLWNvbnRlbnQubWF0LWFjY2VudFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWNhbGVuZGFyLWJvZHktZGlzYWJsZWRbX25nY29udGVudC0lQ09NUCVdID4gLm1hdC1jYWxlbmRhci1ib2R5LXNlbGVjdGVkW19uZ2NvbnRlbnQtJUNPTVAlXXtiYWNrZ3JvdW5kLWNvbG9yOnJnYmEoMjU1LDE1MiwwLC40KX0ubWF0LWRhdGVwaWNrZXItY29udGVudC5tYXQtYWNjZW50W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtY2FsZW5kYXItYm9keS10b2RheS5tYXQtY2FsZW5kYXItYm9keS1zZWxlY3RlZFtfbmdjb250ZW50LSVDT01QJV17Ym94LXNoYWRvdzppbnNldCAwIDAgMCAxcHggI2ZmZn0ubWF0LWRhdGVwaWNrZXItY29udGVudC5tYXQtd2Fybltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWNhbGVuZGFyLWJvZHktaW4tcmFuZ2VbX25nY29udGVudC0lQ09NUCVdOjpiZWZvcmV7YmFja2dyb3VuZDpyZ2JhKDI0NCw2Nyw1NCwuMil9Lm1hdC1kYXRlcGlja2VyLWNvbnRlbnQubWF0LXdhcm5bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1jYWxlbmRhci1ib2R5LWNvbXBhcmlzb24taWRlbnRpY2FsW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1kYXRlcGlja2VyLWNvbnRlbnQubWF0LXdhcm5bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1jYWxlbmRhci1ib2R5LWluLWNvbXBhcmlzb24tcmFuZ2VbX25nY29udGVudC0lQ09NUCVdOjpiZWZvcmV7YmFja2dyb3VuZDpyZ2JhKDI0OSwxNzEsMCwuMil9Lm1hdC1kYXRlcGlja2VyLWNvbnRlbnQubWF0LXdhcm5bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1jYWxlbmRhci1ib2R5LWNvbXBhcmlzb24tYnJpZGdlLXN0YXJ0W19uZ2NvbnRlbnQtJUNPTVAlXTo6YmVmb3JlLCAubWF0LWRhdGVwaWNrZXItY29udGVudC5tYXQtd2Fybltfbmdjb250ZW50LSVDT01QJV0gICBbZGlyPXJ0bF1bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1jYWxlbmRhci1ib2R5LWNvbXBhcmlzb24tYnJpZGdlLWVuZFtfbmdjb250ZW50LSVDT01QJV06OmJlZm9yZXtiYWNrZ3JvdW5kOmxpbmVhci1ncmFkaWVudCh0byByaWdodCwgcmdiYSgyNDQsIDY3LCA1NCwgMC4yKSA1MCUsIHJnYmEoMjQ5LCAxNzEsIDAsIDAuMikgNTAlKX0ubWF0LWRhdGVwaWNrZXItY29udGVudC5tYXQtd2Fybltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWNhbGVuZGFyLWJvZHktY29tcGFyaXNvbi1icmlkZ2UtZW5kW19uZ2NvbnRlbnQtJUNPTVAlXTo6YmVmb3JlLCAubWF0LWRhdGVwaWNrZXItY29udGVudC5tYXQtd2Fybltfbmdjb250ZW50LSVDT01QJV0gICBbZGlyPXJ0bF1bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1jYWxlbmRhci1ib2R5LWNvbXBhcmlzb24tYnJpZGdlLXN0YXJ0W19uZ2NvbnRlbnQtJUNPTVAlXTo6YmVmb3Jle2JhY2tncm91bmQ6bGluZWFyLWdyYWRpZW50KHRvIGxlZnQsIHJnYmEoMjQ0LCA2NywgNTQsIDAuMikgNTAlLCByZ2JhKDI0OSwgMTcxLCAwLCAwLjIpIDUwJSl9Lm1hdC1kYXRlcGlja2VyLWNvbnRlbnQubWF0LXdhcm5bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1jYWxlbmRhci1ib2R5LWluLXJhbmdlW19uZ2NvbnRlbnQtJUNPTVAlXSA+IC5tYXQtY2FsZW5kYXItYm9keS1jb21wYXJpc29uLWlkZW50aWNhbFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtZGF0ZXBpY2tlci1jb250ZW50Lm1hdC13YXJuW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtY2FsZW5kYXItYm9keS1pbi1jb21wYXJpc29uLXJhbmdlLm1hdC1jYWxlbmRhci1ib2R5LWluLXJhbmdlW19uZ2NvbnRlbnQtJUNPTVAlXTo6YWZ0ZXJ7YmFja2dyb3VuZDojYThkYWI1fS5tYXQtZGF0ZXBpY2tlci1jb250ZW50Lm1hdC13YXJuW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtY2FsZW5kYXItYm9keS1jb21wYXJpc29uLWlkZW50aWNhbC5tYXQtY2FsZW5kYXItYm9keS1zZWxlY3RlZFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtZGF0ZXBpY2tlci1jb250ZW50Lm1hdC13YXJuW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtY2FsZW5kYXItYm9keS1pbi1jb21wYXJpc29uLXJhbmdlW19uZ2NvbnRlbnQtJUNPTVAlXSA+IC5tYXQtY2FsZW5kYXItYm9keS1zZWxlY3RlZFtfbmdjb250ZW50LSVDT01QJV17YmFja2dyb3VuZDojNDZhMzVlfS5tYXQtZGF0ZXBpY2tlci1jb250ZW50Lm1hdC13YXJuW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtY2FsZW5kYXItYm9keS1zZWxlY3RlZFtfbmdjb250ZW50LSVDT01QJV17YmFja2dyb3VuZC1jb2xvcjojZjQ0MzM2O2NvbG9yOiNmZmZ9Lm1hdC1kYXRlcGlja2VyLWNvbnRlbnQubWF0LXdhcm5bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1jYWxlbmRhci1ib2R5LWRpc2FibGVkW19uZ2NvbnRlbnQtJUNPTVAlXSA+IC5tYXQtY2FsZW5kYXItYm9keS1zZWxlY3RlZFtfbmdjb250ZW50LSVDT01QJV17YmFja2dyb3VuZC1jb2xvcjpyZ2JhKDI0NCw2Nyw1NCwuNCl9Lm1hdC1kYXRlcGlja2VyLWNvbnRlbnQubWF0LXdhcm5bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1jYWxlbmRhci1ib2R5LXRvZGF5Lm1hdC1jYWxlbmRhci1ib2R5LXNlbGVjdGVkW19uZ2NvbnRlbnQtJUNPTVAlXXtib3gtc2hhZG93Omluc2V0IDAgMCAwIDFweCAjZmZmfS5tYXQtZGF0ZXBpY2tlci1jb250ZW50LXRvdWNoW19uZ2NvbnRlbnQtJUNPTVAlXXtib3gtc2hhZG93OjBweCAwcHggMHB4IDBweCByZ2JhKDAsIDAsIDAsIDAuMiksMHB4IDBweCAwcHggMHB4IHJnYmEoMCwgMCwgMCwgMC4xNCksMHB4IDBweCAwcHggMHB4IHJnYmEoMCwgMCwgMCwgMC4xMil9Lm1hdC1kYXRlcGlja2VyLXRvZ2dsZS1hY3RpdmVbX25nY29udGVudC0lQ09NUCVde2NvbG9yOiNmNTdjMDB9Lm1hdC1kYXRlcGlja2VyLXRvZ2dsZS1hY3RpdmUubWF0LWFjY2VudFtfbmdjb250ZW50LSVDT01QJV17Y29sb3I6I2ZmOTgwMH0ubWF0LWRhdGVwaWNrZXItdG9nZ2xlLWFjdGl2ZS5tYXQtd2Fybltfbmdjb250ZW50LSVDT01QJV17Y29sb3I6I2Y0NDMzNn0ubWF0LWRhdGUtcmFuZ2UtaW5wdXQtaW5uZXJbZGlzYWJsZWRdW19uZ2NvbnRlbnQtJUNPTVAlXXtjb2xvcjojNzU3NTc1fS5tYXQtZGlhbG9nLWNvbnRhaW5lcltfbmdjb250ZW50LSVDT01QJV17Ym94LXNoYWRvdzowcHggMTFweCAxNXB4IC03cHggcmdiYSgwLCAwLCAwLCAwLjIpLDBweCAyNHB4IDM4cHggM3B4IHJnYmEoMCwgMCwgMCwgMC4xNCksMHB4IDlweCA0NnB4IDhweCByZ2JhKDAsIDAsIDAsIDAuMTIpO2JhY2tncm91bmQ6I2ZmZjtjb2xvcjojMjEyMTIxfS5tYXQtZGl2aWRlcltfbmdjb250ZW50LSVDT01QJV17Ym9yZGVyLXRvcC1jb2xvcjpyZ2JhKDAsMCwwLC4xMil9Lm1hdC1kaXZpZGVyLXZlcnRpY2FsW19uZ2NvbnRlbnQtJUNPTVAlXXtib3JkZXItcmlnaHQtY29sb3I6cmdiYSgwLDAsMCwuMTIpfS5tYXQtZXhwYW5zaW9uLXBhbmVsW19uZ2NvbnRlbnQtJUNPTVAlXXtiYWNrZ3JvdW5kOiNmZmY7Y29sb3I6IzIxMjEyMX0ubWF0LWV4cGFuc2lvbi1wYW5lbFtfbmdjb250ZW50LSVDT01QJV06bm90KFtjbGFzcyo9bWF0LWVsZXZhdGlvbi16XSl7Ym94LXNoYWRvdzowcHggM3B4IDFweCAtMnB4IHJnYmEoMCwgMCwgMCwgMC4yKSwwcHggMnB4IDJweCAwcHggcmdiYSgwLCAwLCAwLCAwLjE0KSwwcHggMXB4IDVweCAwcHggcmdiYSgwLCAwLCAwLCAwLjEyKX0ubWF0LWFjdGlvbi1yb3dbX25nY29udGVudC0lQ09NUCVde2JvcmRlci10b3AtY29sb3I6cmdiYSgwLDAsMCwuMTIpfS5tYXQtZXhwYW5zaW9uLXBhbmVsW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZXhwYW5zaW9uLXBhbmVsLWhlYWRlci5jZGsta2V5Ym9hcmQtZm9jdXNlZFtfbmdjb250ZW50LSVDT01QJV06bm90KFthcmlhLWRpc2FibGVkPXRydWVdKSwgLm1hdC1leHBhbnNpb24tcGFuZWxbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1leHBhbnNpb24tcGFuZWwtaGVhZGVyLmNkay1wcm9ncmFtLWZvY3VzZWRbX25nY29udGVudC0lQ09NUCVdOm5vdChbYXJpYS1kaXNhYmxlZD10cnVlXSksIC5tYXQtZXhwYW5zaW9uLXBhbmVsW19uZ2NvbnRlbnQtJUNPTVAlXTpub3QoLm1hdC1leHBhbmRlZCkgICAubWF0LWV4cGFuc2lvbi1wYW5lbC1oZWFkZXJbX25nY29udGVudC0lQ09NUCVdOmhvdmVyOm5vdChbYXJpYS1kaXNhYmxlZD10cnVlXSl7YmFja2dyb3VuZDpyZ2JhKDAsMCwwLC4wNCl9QG1lZGlhKGhvdmVyOiBub25lKXsubWF0LWV4cGFuc2lvbi1wYW5lbFtfbmdjb250ZW50LSVDT01QJV06bm90KC5tYXQtZXhwYW5kZWQpOm5vdChbYXJpYS1kaXNhYmxlZD10cnVlXSkgICAubWF0LWV4cGFuc2lvbi1wYW5lbC1oZWFkZXJbX25nY29udGVudC0lQ09NUCVdOmhvdmVye2JhY2tncm91bmQ6I2ZmZn19Lm1hdC1leHBhbnNpb24tcGFuZWwtaGVhZGVyLXRpdGxlW19uZ2NvbnRlbnQtJUNPTVAlXXtjb2xvcjojMjEyMTIxfS5tYXQtZXhwYW5zaW9uLXBhbmVsLWhlYWRlci1kZXNjcmlwdGlvbltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtZXhwYW5zaW9uLWluZGljYXRvcltfbmdjb250ZW50LSVDT01QJV06OmFmdGVye2NvbG9yOiM2MTYxNjF9Lm1hdC1leHBhbnNpb24tcGFuZWwtaGVhZGVyW2FyaWEtZGlzYWJsZWQ9dHJ1ZV1bX25nY29udGVudC0lQ09NUCVde2NvbG9yOnJnYmEoMCwwLDAsLjI2KX0ubWF0LWV4cGFuc2lvbi1wYW5lbC1oZWFkZXJbYXJpYS1kaXNhYmxlZD10cnVlXVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWV4cGFuc2lvbi1wYW5lbC1oZWFkZXItdGl0bGVbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWV4cGFuc2lvbi1wYW5lbC1oZWFkZXJbYXJpYS1kaXNhYmxlZD10cnVlXVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWV4cGFuc2lvbi1wYW5lbC1oZWFkZXItZGVzY3JpcHRpb25bX25nY29udGVudC0lQ09NUCVde2NvbG9yOmluaGVyaXR9Lm1hdC1leHBhbnNpb24tcGFuZWwtaGVhZGVyW19uZ2NvbnRlbnQtJUNPTVAlXXtoZWlnaHQ6NDhweH0ubWF0LWV4cGFuc2lvbi1wYW5lbC1oZWFkZXIubWF0LWV4cGFuZGVkW19uZ2NvbnRlbnQtJUNPTVAlXXtoZWlnaHQ6NjRweH0ubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVde2NvbG9yOnJnYmEoOTcsOTcsOTcsLjYpfS5tYXQtaGludFtfbmdjb250ZW50LSVDT01QJV17Y29sb3I6cmdiYSg5Nyw5Nyw5NywuNil9Lm1hdC1mb3JtLWZpZWxkLm1hdC1mb2N1c2VkW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17Y29sb3I6I2Y1N2MwMH0ubWF0LWZvcm0tZmllbGQubWF0LWZvY3VzZWRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsLm1hdC1hY2NlbnRbX25nY29udGVudC0lQ09NUCVde2NvbG9yOiNmZjk4MDB9Lm1hdC1mb3JtLWZpZWxkLm1hdC1mb2N1c2VkW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbC5tYXQtd2Fybltfbmdjb250ZW50LSVDT01QJV17Y29sb3I6I2Y0NDMzNn0ubWF0LWZvY3VzZWRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLXJlcXVpcmVkLW1hcmtlcltfbmdjb250ZW50LSVDT01QJV17Y29sb3I6I2ZmOTgwMH0ubWF0LWZvcm0tZmllbGQtcmlwcGxlW19uZ2NvbnRlbnQtJUNPTVAlXXtiYWNrZ3JvdW5kLWNvbG9yOnJnYmEoMCwwLDAsLjg3KX0ubWF0LWZvcm0tZmllbGQubWF0LWZvY3VzZWRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLXJpcHBsZVtfbmdjb250ZW50LSVDT01QJV17YmFja2dyb3VuZC1jb2xvcjojZjU3YzAwfS5tYXQtZm9ybS1maWVsZC5tYXQtZm9jdXNlZFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtcmlwcGxlLm1hdC1hY2NlbnRbX25nY29udGVudC0lQ09NUCVde2JhY2tncm91bmQtY29sb3I6I2ZmOTgwMH0ubWF0LWZvcm0tZmllbGQubWF0LWZvY3VzZWRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLXJpcHBsZS5tYXQtd2Fybltfbmdjb250ZW50LSVDT01QJV17YmFja2dyb3VuZC1jb2xvcjojZjQ0MzM2fS5tYXQtZm9ybS1maWVsZC10eXBlLW1hdC1uYXRpdmUtc2VsZWN0Lm1hdC1mb2N1c2VkW19uZ2NvbnRlbnQtJUNPTVAlXTpub3QoLm1hdC1mb3JtLWZpZWxkLWludmFsaWQpICAgLm1hdC1mb3JtLWZpZWxkLWluZml4W19uZ2NvbnRlbnQtJUNPTVAlXTo6YWZ0ZXJ7Y29sb3I6I2Y1N2MwMH0ubWF0LWZvcm0tZmllbGQtdHlwZS1tYXQtbmF0aXZlLXNlbGVjdC5tYXQtZm9jdXNlZFtfbmdjb250ZW50LSVDT01QJV06bm90KC5tYXQtZm9ybS1maWVsZC1pbnZhbGlkKS5tYXQtYWNjZW50ICAgLm1hdC1mb3JtLWZpZWxkLWluZml4W19uZ2NvbnRlbnQtJUNPTVAlXTo6YWZ0ZXJ7Y29sb3I6I2ZmOTgwMH0ubWF0LWZvcm0tZmllbGQtdHlwZS1tYXQtbmF0aXZlLXNlbGVjdC5tYXQtZm9jdXNlZFtfbmdjb250ZW50LSVDT01QJV06bm90KC5tYXQtZm9ybS1maWVsZC1pbnZhbGlkKS5tYXQtd2FybiAgIC5tYXQtZm9ybS1maWVsZC1pbmZpeFtfbmdjb250ZW50LSVDT01QJV06OmFmdGVye2NvbG9yOiNmNDQzMzZ9Lm1hdC1mb3JtLWZpZWxkLm1hdC1mb3JtLWZpZWxkLWludmFsaWRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXtjb2xvcjojZjQ0MzM2fS5tYXQtZm9ybS1maWVsZC5tYXQtZm9ybS1maWVsZC1pbnZhbGlkW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbC5tYXQtYWNjZW50W19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1mb3JtLWZpZWxkLm1hdC1mb3JtLWZpZWxkLWludmFsaWRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1yZXF1aXJlZC1tYXJrZXJbX25nY29udGVudC0lQ09NUCVde2NvbG9yOiNmNDQzMzZ9Lm1hdC1mb3JtLWZpZWxkLm1hdC1mb3JtLWZpZWxkLWludmFsaWRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLXJpcHBsZVtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtZm9ybS1maWVsZC5tYXQtZm9ybS1maWVsZC1pbnZhbGlkW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1yaXBwbGUubWF0LWFjY2VudFtfbmdjb250ZW50LSVDT01QJV17YmFja2dyb3VuZC1jb2xvcjojZjQ0MzM2fS5tYXQtZXJyb3JbX25nY29udGVudC0lQ09NUCVde2NvbG9yOiNmNDQzMzZ9Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtbGVnYWN5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17Y29sb3I6IzYxNjE2MX0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1sZWdhY3lbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1oaW50W19uZ2NvbnRlbnQtJUNPTVAlXXtjb2xvcjojNjE2MTYxfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWxlZ2FjeVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtdW5kZXJsaW5lW19uZ2NvbnRlbnQtJUNPTVAlXXtiYWNrZ3JvdW5kLWNvbG9yOnJnYmEoMCwwLDAsLjQyKX0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1sZWdhY3kubWF0LWZvcm0tZmllbGQtZGlzYWJsZWRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLXVuZGVybGluZVtfbmdjb250ZW50LSVDT01QJV17YmFja2dyb3VuZC1pbWFnZTpsaW5lYXItZ3JhZGllbnQodG8gcmlnaHQsIHJnYmEoMCwgMCwgMCwgMC40MikgMCUsIHJnYmEoMCwgMCwgMCwgMC40MikgMzMlLCB0cmFuc3BhcmVudCAwJSk7YmFja2dyb3VuZC1zaXplOjRweCAxMDAlO2JhY2tncm91bmQtcmVwZWF0OnJlcGVhdC14fS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLXN0YW5kYXJkW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC11bmRlcmxpbmVbX25nY29udGVudC0lQ09NUCVde2JhY2tncm91bmQtY29sb3I6cmdiYSgwLDAsMCwuNDIpfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLXN0YW5kYXJkLm1hdC1mb3JtLWZpZWxkLWRpc2FibGVkW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC11bmRlcmxpbmVbX25nY29udGVudC0lQ09NUCVde2JhY2tncm91bmQtaW1hZ2U6bGluZWFyLWdyYWRpZW50KHRvIHJpZ2h0LCByZ2JhKDAsIDAsIDAsIDAuNDIpIDAlLCByZ2JhKDAsIDAsIDAsIDAuNDIpIDMzJSwgdHJhbnNwYXJlbnQgMCUpO2JhY2tncm91bmQtc2l6ZTo0cHggMTAwJTtiYWNrZ3JvdW5kLXJlcGVhdDpyZXBlYXQteH0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1maWxsW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1mbGV4W19uZ2NvbnRlbnQtJUNPTVAlXXtiYWNrZ3JvdW5kLWNvbG9yOnJnYmEoMCwwLDAsLjA0KX0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1maWxsLm1hdC1mb3JtLWZpZWxkLWRpc2FibGVkW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1mbGV4W19uZ2NvbnRlbnQtJUNPTVAlXXtiYWNrZ3JvdW5kLWNvbG9yOnJnYmEoMCwwLDAsLjAyKX0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1maWxsW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC11bmRlcmxpbmVbX25nY29udGVudC0lQ09NUCVdOjpiZWZvcmV7YmFja2dyb3VuZC1jb2xvcjpyZ2JhKDAsMCwwLC40Mil9Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtZmlsbC5tYXQtZm9ybS1maWVsZC1kaXNhYmxlZFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVde2NvbG9yOiM3NTc1NzV9Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtZmlsbC5tYXQtZm9ybS1maWVsZC1kaXNhYmxlZFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtdW5kZXJsaW5lW19uZ2NvbnRlbnQtJUNPTVAlXTo6YmVmb3Jle2JhY2tncm91bmQtY29sb3I6dHJhbnNwYXJlbnR9Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2Utb3V0bGluZVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtb3V0bGluZVtfbmdjb250ZW50LSVDT01QJV17Y29sb3I6cmdiYSgwLDAsMCwuMTIpfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLW91dGxpbmVbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLW91dGxpbmUtdGhpY2tbX25nY29udGVudC0lQ09NUCVde2NvbG9yOnJnYmEoMCwwLDAsLjg3KX0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1vdXRsaW5lLm1hdC1mb2N1c2VkW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1vdXRsaW5lLXRoaWNrW19uZ2NvbnRlbnQtJUNPTVAlXXtjb2xvcjojZjU3YzAwfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLW91dGxpbmUubWF0LWZvY3VzZWQubWF0LWFjY2VudFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtb3V0bGluZS10aGlja1tfbmdjb250ZW50LSVDT01QJV17Y29sb3I6I2ZmOTgwMH0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1vdXRsaW5lLm1hdC1mb2N1c2VkLm1hdC13YXJuW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1vdXRsaW5lLXRoaWNrW19uZ2NvbnRlbnQtJUNPTVAlXXtjb2xvcjojZjQ0MzM2fS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLW91dGxpbmUubWF0LWZvcm0tZmllbGQtaW52YWxpZC5tYXQtZm9ybS1maWVsZC1pbnZhbGlkW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1vdXRsaW5lLXRoaWNrW19uZ2NvbnRlbnQtJUNPTVAlXXtjb2xvcjojZjQ0MzM2fS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLW91dGxpbmUubWF0LWZvcm0tZmllbGQtZGlzYWJsZWRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXtjb2xvcjojNzU3NTc1fS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLW91dGxpbmUubWF0LWZvcm0tZmllbGQtZGlzYWJsZWRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLW91dGxpbmVbX25nY29udGVudC0lQ09NUCVde2NvbG9yOnJnYmEoMCwwLDAsLjA2KX0ubWF0LWljb24ubWF0LXByaW1hcnlbX25nY29udGVudC0lQ09NUCVde2NvbG9yOiNmNTdjMDB9Lm1hdC1pY29uLm1hdC1hY2NlbnRbX25nY29udGVudC0lQ09NUCVde2NvbG9yOiNmZjk4MDB9Lm1hdC1pY29uLm1hdC13YXJuW19uZ2NvbnRlbnQtJUNPTVAlXXtjb2xvcjojZjQ0MzM2fS5tYXQtZm9ybS1maWVsZC10eXBlLW1hdC1uYXRpdmUtc2VsZWN0W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1pbmZpeFtfbmdjb250ZW50LSVDT01QJV06OmFmdGVye2NvbG9yOiM2MTYxNjF9Lm1hdC1pbnB1dC1lbGVtZW50W19uZ2NvbnRlbnQtJUNPTVAlXTpkaXNhYmxlZCwgLm1hdC1mb3JtLWZpZWxkLXR5cGUtbWF0LW5hdGl2ZS1zZWxlY3QubWF0LWZvcm0tZmllbGQtZGlzYWJsZWRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWluZml4W19uZ2NvbnRlbnQtJUNPTVAlXTo6YWZ0ZXJ7Y29sb3I6Izc1NzU3NX0ubWF0LWlucHV0LWVsZW1lbnRbX25nY29udGVudC0lQ09NUCVde2NhcmV0LWNvbG9yOiNmNTdjMDB9Lm1hdC1pbnB1dC1lbGVtZW50W19uZ2NvbnRlbnQtJUNPTVAlXTo6cGxhY2Vob2xkZXJ7Y29sb3I6cmdiYSg5Nyw5Nyw5NywuNDIpfS5tYXQtaW5wdXQtZWxlbWVudFtfbmdjb250ZW50LSVDT01QJV06Oi1tb3otcGxhY2Vob2xkZXJ7Y29sb3I6cmdiYSg5Nyw5Nyw5NywuNDIpfS5tYXQtaW5wdXQtZWxlbWVudFtfbmdjb250ZW50LSVDT01QJV06Oi13ZWJraXQtaW5wdXQtcGxhY2Vob2xkZXJ7Y29sb3I6cmdiYSg5Nyw5Nyw5NywuNDIpfS5tYXQtaW5wdXQtZWxlbWVudFtfbmdjb250ZW50LSVDT01QJV06LW1zLWlucHV0LXBsYWNlaG9sZGVye2NvbG9yOnJnYmEoOTcsOTcsOTcsLjQyKX0ubWF0LWZvcm0tZmllbGQubWF0LWFjY2VudFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWlucHV0LWVsZW1lbnRbX25nY29udGVudC0lQ09NUCVde2NhcmV0LWNvbG9yOiNmZjk4MDB9Lm1hdC1mb3JtLWZpZWxkLm1hdC13YXJuW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaW5wdXQtZWxlbWVudFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtZm9ybS1maWVsZC1pbnZhbGlkW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaW5wdXQtZWxlbWVudFtfbmdjb250ZW50LSVDT01QJV17Y2FyZXQtY29sb3I6I2Y0NDMzNn0ubWF0LWZvcm0tZmllbGQtdHlwZS1tYXQtbmF0aXZlLXNlbGVjdC5tYXQtZm9ybS1maWVsZC1pbnZhbGlkW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1pbmZpeFtfbmdjb250ZW50LSVDT01QJV06OmFmdGVye2NvbG9yOiNmNDQzMzZ9Lm1hdC1saXN0LWJhc2VbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saXN0LWl0ZW1bX25nY29udGVudC0lQ09NUCVde2NvbG9yOiMyMTIxMjF9Lm1hdC1saXN0LWJhc2VbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saXN0LW9wdGlvbltfbmdjb250ZW50LSVDT01QJV17Y29sb3I6IzIxMjEyMX0ubWF0LWxpc3QtYmFzZVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXN1YmhlYWRlcltfbmdjb250ZW50LSVDT01QJV17Y29sb3I6IzYxNjE2MX0ubWF0LWxpc3QtaXRlbS1kaXNhYmxlZFtfbmdjb250ZW50LSVDT01QJV17YmFja2dyb3VuZC1jb2xvcjojZWVlfS5tYXQtbGlzdC1vcHRpb25bX25nY29udGVudC0lQ09NUCVdOmhvdmVyLCAubWF0LWxpc3Qtb3B0aW9uW19uZ2NvbnRlbnQtJUNPTVAlXTpmb2N1cywgLm1hdC1uYXYtbGlzdFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpc3QtaXRlbVtfbmdjb250ZW50LSVDT01QJV06aG92ZXIsIC5tYXQtbmF2LWxpc3RbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saXN0LWl0ZW1bX25nY29udGVudC0lQ09NUCVdOmZvY3VzLCAubWF0LWFjdGlvbi1saXN0W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGlzdC1pdGVtW19uZ2NvbnRlbnQtJUNPTVAlXTpob3ZlciwgLm1hdC1hY3Rpb24tbGlzdFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpc3QtaXRlbVtfbmdjb250ZW50LSVDT01QJV06Zm9jdXN7YmFja2dyb3VuZDpyZ2JhKDAsMCwwLC4wNCl9Lm1hdC1saXN0LXNpbmdsZS1zZWxlY3RlZC1vcHRpb25bX25nY29udGVudC0lQ09NUCVdLCAubWF0LWxpc3Qtc2luZ2xlLXNlbGVjdGVkLW9wdGlvbltfbmdjb250ZW50LSVDT01QJV06aG92ZXIsIC5tYXQtbGlzdC1zaW5nbGUtc2VsZWN0ZWQtb3B0aW9uW19uZ2NvbnRlbnQtJUNPTVAlXTpmb2N1c3tiYWNrZ3JvdW5kOnJnYmEoMCwwLDAsLjEyKX0ubWF0LW1lbnUtcGFuZWxbX25nY29udGVudC0lQ09NUCVde2JhY2tncm91bmQ6I2ZmZn0ubWF0LW1lbnUtcGFuZWxbX25nY29udGVudC0lQ09NUCVdOm5vdChbY2xhc3MqPW1hdC1lbGV2YXRpb24tel0pe2JveC1zaGFkb3c6MHB4IDJweCA0cHggLTFweCByZ2JhKDAsIDAsIDAsIDAuMiksMHB4IDRweCA1cHggMHB4IHJnYmEoMCwgMCwgMCwgMC4xNCksMHB4IDFweCAxMHB4IDBweCByZ2JhKDAsIDAsIDAsIDAuMTIpfS5tYXQtbWVudS1pdGVtW19uZ2NvbnRlbnQtJUNPTVAlXXtiYWNrZ3JvdW5kOnRyYW5zcGFyZW50O2NvbG9yOiMyMTIxMjF9Lm1hdC1tZW51LWl0ZW1bZGlzYWJsZWRdW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1tZW51LWl0ZW1bZGlzYWJsZWRdW19uZ2NvbnRlbnQtJUNPTVAlXTo6YWZ0ZXJ7Y29sb3I6cmdiYSgwLDAsMCwuMzgpfS5tYXQtbWVudS1pdGVtW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaWNvbi1uby1jb2xvcltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtbWVudS1pdGVtLXN1Ym1lbnUtdHJpZ2dlcltfbmdjb250ZW50LSVDT01QJV06OmFmdGVye2NvbG9yOnJnYmEoMCwwLDAsLjU0KX0ubWF0LW1lbnUtaXRlbVtfbmdjb250ZW50LSVDT01QJV06aG92ZXI6bm90KFtkaXNhYmxlZF0pLCAubWF0LW1lbnUtaXRlbS5jZGstcHJvZ3JhbS1mb2N1c2VkW19uZ2NvbnRlbnQtJUNPTVAlXTpub3QoW2Rpc2FibGVkXSksIC5tYXQtbWVudS1pdGVtLmNkay1rZXlib2FyZC1mb2N1c2VkW19uZ2NvbnRlbnQtJUNPTVAlXTpub3QoW2Rpc2FibGVkXSksIC5tYXQtbWVudS1pdGVtLWhpZ2hsaWdodGVkW19uZ2NvbnRlbnQtJUNPTVAlXTpub3QoW2Rpc2FibGVkXSl7YmFja2dyb3VuZDpyZ2JhKDAsMCwwLC4wNCl9Lm1hdC1wYWdpbmF0b3JbX25nY29udGVudC0lQ09NUCVde2JhY2tncm91bmQ6I2ZmZn0ubWF0LXBhZ2luYXRvcltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtcGFnaW5hdG9yLXBhZ2Utc2l6ZVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXNlbGVjdC10cmlnZ2VyW19uZ2NvbnRlbnQtJUNPTVAlXXtjb2xvcjojNjE2MTYxfS5tYXQtcGFnaW5hdG9yLWRlY3JlbWVudFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtcGFnaW5hdG9yLWluY3JlbWVudFtfbmdjb250ZW50LSVDT01QJV17Ym9yZGVyLXRvcDoycHggc29saWQgcmdiYSgwLDAsMCwuNTQpO2JvcmRlci1yaWdodDoycHggc29saWQgcmdiYSgwLDAsMCwuNTQpfS5tYXQtcGFnaW5hdG9yLWZpcnN0W19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1wYWdpbmF0b3ItbGFzdFtfbmdjb250ZW50LSVDT01QJV17Ym9yZGVyLXRvcDoycHggc29saWQgcmdiYSgwLDAsMCwuNTQpfS5tYXQtaWNvbi1idXR0b25bZGlzYWJsZWRdW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtcGFnaW5hdG9yLWRlY3JlbWVudFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtaWNvbi1idXR0b25bZGlzYWJsZWRdW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtcGFnaW5hdG9yLWluY3JlbWVudFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtaWNvbi1idXR0b25bZGlzYWJsZWRdW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtcGFnaW5hdG9yLWZpcnN0W19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1pY29uLWJ1dHRvbltkaXNhYmxlZF1bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1wYWdpbmF0b3ItbGFzdFtfbmdjb250ZW50LSVDT01QJV17Ym9yZGVyLWNvbG9yOnJnYmEoMCwwLDAsLjM4KX0ubWF0LXBhZ2luYXRvci1jb250YWluZXJbX25nY29udGVudC0lQ09NUCVde21pbi1oZWlnaHQ6NTZweH0ubWF0LXByb2dyZXNzLWJhci1iYWNrZ3JvdW5kW19uZ2NvbnRlbnQtJUNPTVAlXXtmaWxsOiNmZjk4MDB9Lm1hdC1wcm9ncmVzcy1iYXItYnVmZmVyW19uZ2NvbnRlbnQtJUNPTVAlXXtiYWNrZ3JvdW5kLWNvbG9yOiNmZjk4MDB9Lm1hdC1wcm9ncmVzcy1iYXItZmlsbFtfbmdjb250ZW50LSVDT01QJV06OmFmdGVye2JhY2tncm91bmQtY29sb3I6I2Y1N2MwMH0ubWF0LXByb2dyZXNzLWJhci5tYXQtYWNjZW50W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtcHJvZ3Jlc3MtYmFyLWJhY2tncm91bmRbX25nY29udGVudC0lQ09NUCVde2ZpbGw6I2ZmOTgwMH0ubWF0LXByb2dyZXNzLWJhci5tYXQtYWNjZW50W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtcHJvZ3Jlc3MtYmFyLWJ1ZmZlcltfbmdjb250ZW50LSVDT01QJV17YmFja2dyb3VuZC1jb2xvcjojZmY5ODAwfS5tYXQtcHJvZ3Jlc3MtYmFyLm1hdC1hY2NlbnRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1wcm9ncmVzcy1iYXItZmlsbFtfbmdjb250ZW50LSVDT01QJV06OmFmdGVye2JhY2tncm91bmQtY29sb3I6I2ZmOTgwMH0ubWF0LXByb2dyZXNzLWJhci5tYXQtd2Fybltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXByb2dyZXNzLWJhci1iYWNrZ3JvdW5kW19uZ2NvbnRlbnQtJUNPTVAlXXtmaWxsOiNmZmNkZDJ9Lm1hdC1wcm9ncmVzcy1iYXIubWF0LXdhcm5bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1wcm9ncmVzcy1iYXItYnVmZmVyW19uZ2NvbnRlbnQtJUNPTVAlXXtiYWNrZ3JvdW5kLWNvbG9yOiNmZmNkZDJ9Lm1hdC1wcm9ncmVzcy1iYXIubWF0LXdhcm5bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1wcm9ncmVzcy1iYXItZmlsbFtfbmdjb250ZW50LSVDT01QJV06OmFmdGVye2JhY2tncm91bmQtY29sb3I6I2Y0NDMzNn0ubWF0LXByb2dyZXNzLXNwaW5uZXJbX25nY29udGVudC0lQ09NUCVdICAgY2lyY2xlW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1zcGlubmVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIGNpcmNsZVtfbmdjb250ZW50LSVDT01QJV17c3Ryb2tlOiNmNTdjMDB9Lm1hdC1wcm9ncmVzcy1zcGlubmVyLm1hdC1hY2NlbnRbX25nY29udGVudC0lQ09NUCVdICAgY2lyY2xlW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1zcGlubmVyLm1hdC1hY2NlbnRbX25nY29udGVudC0lQ09NUCVdICAgY2lyY2xlW19uZ2NvbnRlbnQtJUNPTVAlXXtzdHJva2U6I2ZmOTgwMH0ubWF0LXByb2dyZXNzLXNwaW5uZXIubWF0LXdhcm5bX25nY29udGVudC0lQ09NUCVdICAgY2lyY2xlW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1zcGlubmVyLm1hdC13YXJuW19uZ2NvbnRlbnQtJUNPTVAlXSAgIGNpcmNsZVtfbmdjb250ZW50LSVDT01QJV17c3Ryb2tlOiNmNDQzMzZ9Lm1hdC1yYWRpby1vdXRlci1jaXJjbGVbX25nY29udGVudC0lQ09NUCVde2JvcmRlci1jb2xvcjojNjE2MTYxfS5tYXQtcmFkaW8tYnV0dG9uLm1hdC1wcmltYXJ5Lm1hdC1yYWRpby1jaGVja2VkW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtcmFkaW8tb3V0ZXItY2lyY2xlW19uZ2NvbnRlbnQtJUNPTVAlXXtib3JkZXItY29sb3I6I2Y1N2MwMH0ubWF0LXJhZGlvLWJ1dHRvbi5tYXQtcHJpbWFyeVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXJhZGlvLWlubmVyLWNpcmNsZVtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtcmFkaW8tYnV0dG9uLm1hdC1wcmltYXJ5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtcmFkaW8tcmlwcGxlW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtcmlwcGxlLWVsZW1lbnRbX25nY29udGVudC0lQ09NUCVdOm5vdCgubWF0LXJhZGlvLXBlcnNpc3RlbnQtcmlwcGxlKSwgLm1hdC1yYWRpby1idXR0b24ubWF0LXByaW1hcnkubWF0LXJhZGlvLWNoZWNrZWRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1yYWRpby1wZXJzaXN0ZW50LXJpcHBsZVtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtcmFkaW8tYnV0dG9uLm1hdC1wcmltYXJ5W19uZ2NvbnRlbnQtJUNPTVAlXTphY3RpdmUgICAubWF0LXJhZGlvLXBlcnNpc3RlbnQtcmlwcGxlW19uZ2NvbnRlbnQtJUNPTVAlXXtiYWNrZ3JvdW5kLWNvbG9yOiNmNTdjMDB9Lm1hdC1yYWRpby1idXR0b24ubWF0LWFjY2VudC5tYXQtcmFkaW8tY2hlY2tlZFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXJhZGlvLW91dGVyLWNpcmNsZVtfbmdjb250ZW50LSVDT01QJV17Ym9yZGVyLWNvbG9yOiNmZjk4MDB9Lm1hdC1yYWRpby1idXR0b24ubWF0LWFjY2VudFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXJhZGlvLWlubmVyLWNpcmNsZVtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtcmFkaW8tYnV0dG9uLm1hdC1hY2NlbnRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1yYWRpby1yaXBwbGVbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1yaXBwbGUtZWxlbWVudFtfbmdjb250ZW50LSVDT01QJV06bm90KC5tYXQtcmFkaW8tcGVyc2lzdGVudC1yaXBwbGUpLCAubWF0LXJhZGlvLWJ1dHRvbi5tYXQtYWNjZW50Lm1hdC1yYWRpby1jaGVja2VkW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtcmFkaW8tcGVyc2lzdGVudC1yaXBwbGVbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXJhZGlvLWJ1dHRvbi5tYXQtYWNjZW50W19uZ2NvbnRlbnQtJUNPTVAlXTphY3RpdmUgICAubWF0LXJhZGlvLXBlcnNpc3RlbnQtcmlwcGxlW19uZ2NvbnRlbnQtJUNPTVAlXXtiYWNrZ3JvdW5kLWNvbG9yOiNmZjk4MDB9Lm1hdC1yYWRpby1idXR0b24ubWF0LXdhcm4ubWF0LXJhZGlvLWNoZWNrZWRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1yYWRpby1vdXRlci1jaXJjbGVbX25nY29udGVudC0lQ09NUCVde2JvcmRlci1jb2xvcjojZjQ0MzM2fS5tYXQtcmFkaW8tYnV0dG9uLm1hdC13YXJuW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtcmFkaW8taW5uZXItY2lyY2xlW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1yYWRpby1idXR0b24ubWF0LXdhcm5bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1yYWRpby1yaXBwbGVbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1yaXBwbGUtZWxlbWVudFtfbmdjb250ZW50LSVDT01QJV06bm90KC5tYXQtcmFkaW8tcGVyc2lzdGVudC1yaXBwbGUpLCAubWF0LXJhZGlvLWJ1dHRvbi5tYXQtd2Fybi5tYXQtcmFkaW8tY2hlY2tlZFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXJhZGlvLXBlcnNpc3RlbnQtcmlwcGxlW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1yYWRpby1idXR0b24ubWF0LXdhcm5bX25nY29udGVudC0lQ09NUCVdOmFjdGl2ZSAgIC5tYXQtcmFkaW8tcGVyc2lzdGVudC1yaXBwbGVbX25nY29udGVudC0lQ09NUCVde2JhY2tncm91bmQtY29sb3I6I2Y0NDMzNn0ubWF0LXJhZGlvLWJ1dHRvbi5tYXQtcmFkaW8tZGlzYWJsZWQubWF0LXJhZGlvLWNoZWNrZWRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1yYWRpby1vdXRlci1jaXJjbGVbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXJhZGlvLWJ1dHRvbi5tYXQtcmFkaW8tZGlzYWJsZWRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1yYWRpby1vdXRlci1jaXJjbGVbX25nY29udGVudC0lQ09NUCVde2JvcmRlci1jb2xvcjpyZ2JhKDAsMCwwLC4zOCl9Lm1hdC1yYWRpby1idXR0b24ubWF0LXJhZGlvLWRpc2FibGVkW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtcmFkaW8tcmlwcGxlW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtcmlwcGxlLWVsZW1lbnRbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXJhZGlvLWJ1dHRvbi5tYXQtcmFkaW8tZGlzYWJsZWRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1yYWRpby1pbm5lci1jaXJjbGVbX25nY29udGVudC0lQ09NUCVde2JhY2tncm91bmQtY29sb3I6cmdiYSgwLDAsMCwuMzgpfS5tYXQtcmFkaW8tYnV0dG9uLm1hdC1yYWRpby1kaXNhYmxlZFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXJhZGlvLWxhYmVsLWNvbnRlbnRbX25nY29udGVudC0lQ09NUCVde2NvbG9yOnJnYmEoMCwwLDAsLjM4KX0ubWF0LXJhZGlvLWJ1dHRvbltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXJpcHBsZS1lbGVtZW50W19uZ2NvbnRlbnQtJUNPTVAlXXtiYWNrZ3JvdW5kLWNvbG9yOiMwMDB9Lm1hdC1zZWxlY3QtdmFsdWVbX25nY29udGVudC0lQ09NUCVde2NvbG9yOiMyMTIxMjF9Lm1hdC1zZWxlY3QtcGxhY2Vob2xkZXJbX25nY29udGVudC0lQ09NUCVde2NvbG9yOnJnYmEoOTcsOTcsOTcsLjQyKX0ubWF0LXNlbGVjdC1kaXNhYmxlZFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXNlbGVjdC12YWx1ZVtfbmdjb250ZW50LSVDT01QJV17Y29sb3I6Izc1NzU3NX0ubWF0LXNlbGVjdC1hcnJvd1tfbmdjb250ZW50LSVDT01QJV17Y29sb3I6IzYxNjE2MX0ubWF0LXNlbGVjdC1wYW5lbFtfbmdjb250ZW50LSVDT01QJV17YmFja2dyb3VuZDojZmZmfS5tYXQtc2VsZWN0LXBhbmVsW19uZ2NvbnRlbnQtJUNPTVAlXTpub3QoW2NsYXNzKj1tYXQtZWxldmF0aW9uLXpdKXtib3gtc2hhZG93OjBweCAycHggNHB4IC0xcHggcmdiYSgwLCAwLCAwLCAwLjIpLDBweCA0cHggNXB4IDBweCByZ2JhKDAsIDAsIDAsIDAuMTQpLDBweCAxcHggMTBweCAwcHggcmdiYSgwLCAwLCAwLCAwLjEyKX0ubWF0LXNlbGVjdC1wYW5lbFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LW9wdGlvbi5tYXQtc2VsZWN0ZWRbX25nY29udGVudC0lQ09NUCVdOm5vdCgubWF0LW9wdGlvbi1tdWx0aXBsZSl7YmFja2dyb3VuZDpyZ2JhKDAsMCwwLC4xMil9Lm1hdC1mb3JtLWZpZWxkLm1hdC1mb2N1c2VkLm1hdC1wcmltYXJ5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtc2VsZWN0LWFycm93W19uZ2NvbnRlbnQtJUNPTVAlXXtjb2xvcjojZjU3YzAwfS5tYXQtZm9ybS1maWVsZC5tYXQtZm9jdXNlZC5tYXQtYWNjZW50W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtc2VsZWN0LWFycm93W19uZ2NvbnRlbnQtJUNPTVAlXXtjb2xvcjojZmY5ODAwfS5tYXQtZm9ybS1maWVsZC5tYXQtZm9jdXNlZC5tYXQtd2Fybltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXNlbGVjdC1hcnJvd1tfbmdjb250ZW50LSVDT01QJV17Y29sb3I6I2Y0NDMzNn0ubWF0LWZvcm0tZmllbGRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1zZWxlY3QubWF0LXNlbGVjdC1pbnZhbGlkW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtc2VsZWN0LWFycm93W19uZ2NvbnRlbnQtJUNPTVAlXXtjb2xvcjojZjQ0MzM2fS5tYXQtZm9ybS1maWVsZFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXNlbGVjdC5tYXQtc2VsZWN0LWRpc2FibGVkW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtc2VsZWN0LWFycm93W19uZ2NvbnRlbnQtJUNPTVAlXXtjb2xvcjojNzU3NTc1fS5tYXQtZHJhd2VyLWNvbnRhaW5lcltfbmdjb250ZW50LSVDT01QJV17YmFja2dyb3VuZC1jb2xvcjojZmFmYWZhO2NvbG9yOiMyMTIxMjF9Lm1hdC1kcmF3ZXJbX25nY29udGVudC0lQ09NUCVde2JhY2tncm91bmQtY29sb3I6I2ZmZjtjb2xvcjojMjEyMTIxfS5tYXQtZHJhd2VyLm1hdC1kcmF3ZXItcHVzaFtfbmdjb250ZW50LSVDT01QJV17YmFja2dyb3VuZC1jb2xvcjojZmZmfS5tYXQtZHJhd2VyW19uZ2NvbnRlbnQtJUNPTVAlXTpub3QoLm1hdC1kcmF3ZXItc2lkZSl7Ym94LXNoYWRvdzowcHggOHB4IDEwcHggLTVweCByZ2JhKDAsIDAsIDAsIDAuMiksMHB4IDE2cHggMjRweCAycHggcmdiYSgwLCAwLCAwLCAwLjE0KSwwcHggNnB4IDMwcHggNXB4IHJnYmEoMCwgMCwgMCwgMC4xMil9Lm1hdC1kcmF3ZXItc2lkZVtfbmdjb250ZW50LSVDT01QJV17Ym9yZGVyLXJpZ2h0OnNvbGlkIDFweCByZ2JhKDAsMCwwLC4xMil9Lm1hdC1kcmF3ZXItc2lkZS5tYXQtZHJhd2VyLWVuZFtfbmdjb250ZW50LSVDT01QJV17Ym9yZGVyLWxlZnQ6c29saWQgMXB4IHJnYmEoMCwwLDAsLjEyKTtib3JkZXItcmlnaHQ6bm9uZX1bZGlyPXJ0bF1bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1kcmF3ZXItc2lkZVtfbmdjb250ZW50LSVDT01QJV17Ym9yZGVyLWxlZnQ6c29saWQgMXB4IHJnYmEoMCwwLDAsLjEyKTtib3JkZXItcmlnaHQ6bm9uZX1bZGlyPXJ0bF1bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1kcmF3ZXItc2lkZS5tYXQtZHJhd2VyLWVuZFtfbmdjb250ZW50LSVDT01QJV17Ym9yZGVyLWxlZnQ6bm9uZTtib3JkZXItcmlnaHQ6c29saWQgMXB4IHJnYmEoMCwwLDAsLjEyKX0ubWF0LWRyYXdlci1iYWNrZHJvcC5tYXQtZHJhd2VyLXNob3duW19uZ2NvbnRlbnQtJUNPTVAlXXtiYWNrZ3JvdW5kLWNvbG9yOnJnYmEoMCwwLDAsLjYpfS5tYXQtc2xpZGUtdG9nZ2xlLm1hdC1jaGVja2VkW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtc2xpZGUtdG9nZ2xlLXRodW1iW19uZ2NvbnRlbnQtJUNPTVAlXXtiYWNrZ3JvdW5kLWNvbG9yOiNmZjk4MDB9Lm1hdC1zbGlkZS10b2dnbGUubWF0LWNoZWNrZWRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1zbGlkZS10b2dnbGUtYmFyW19uZ2NvbnRlbnQtJUNPTVAlXXtiYWNrZ3JvdW5kLWNvbG9yOnJnYmEoMjU1LDE1MiwwLC41NCl9Lm1hdC1zbGlkZS10b2dnbGUubWF0LWNoZWNrZWRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1yaXBwbGUtZWxlbWVudFtfbmdjb250ZW50LSVDT01QJV17YmFja2dyb3VuZC1jb2xvcjojZmY5ODAwfS5tYXQtc2xpZGUtdG9nZ2xlLm1hdC1wcmltYXJ5Lm1hdC1jaGVja2VkW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtc2xpZGUtdG9nZ2xlLXRodW1iW19uZ2NvbnRlbnQtJUNPTVAlXXtiYWNrZ3JvdW5kLWNvbG9yOiNmNTdjMDB9Lm1hdC1zbGlkZS10b2dnbGUubWF0LXByaW1hcnkubWF0LWNoZWNrZWRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1zbGlkZS10b2dnbGUtYmFyW19uZ2NvbnRlbnQtJUNPTVAlXXtiYWNrZ3JvdW5kLWNvbG9yOnJnYmEoMjQ1LDEyNCwwLC41NCl9Lm1hdC1zbGlkZS10b2dnbGUubWF0LXByaW1hcnkubWF0LWNoZWNrZWRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1yaXBwbGUtZWxlbWVudFtfbmdjb250ZW50LSVDT01QJV17YmFja2dyb3VuZC1jb2xvcjojZjU3YzAwfS5tYXQtc2xpZGUtdG9nZ2xlLm1hdC13YXJuLm1hdC1jaGVja2VkW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtc2xpZGUtdG9nZ2xlLXRodW1iW19uZ2NvbnRlbnQtJUNPTVAlXXtiYWNrZ3JvdW5kLWNvbG9yOiNmNDQzMzZ9Lm1hdC1zbGlkZS10b2dnbGUubWF0LXdhcm4ubWF0LWNoZWNrZWRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1zbGlkZS10b2dnbGUtYmFyW19uZ2NvbnRlbnQtJUNPTVAlXXtiYWNrZ3JvdW5kLWNvbG9yOnJnYmEoMjQ0LDY3LDU0LC41NCl9Lm1hdC1zbGlkZS10b2dnbGUubWF0LXdhcm4ubWF0LWNoZWNrZWRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1yaXBwbGUtZWxlbWVudFtfbmdjb250ZW50LSVDT01QJV17YmFja2dyb3VuZC1jb2xvcjojZjQ0MzM2fS5tYXQtc2xpZGUtdG9nZ2xlW19uZ2NvbnRlbnQtJUNPTVAlXTpub3QoLm1hdC1jaGVja2VkKSAgIC5tYXQtcmlwcGxlLWVsZW1lbnRbX25nY29udGVudC0lQ09NUCVde2JhY2tncm91bmQtY29sb3I6IzAwMH0ubWF0LXNsaWRlLXRvZ2dsZS10aHVtYltfbmdjb250ZW50LSVDT01QJV17Ym94LXNoYWRvdzowcHggMnB4IDFweCAtMXB4IHJnYmEoMCwgMCwgMCwgMC4yKSwwcHggMXB4IDFweCAwcHggcmdiYSgwLCAwLCAwLCAwLjE0KSwwcHggMXB4IDNweCAwcHggcmdiYSgwLCAwLCAwLCAwLjEyKTtiYWNrZ3JvdW5kLWNvbG9yOiNmYWZhZmF9Lm1hdC1zbGlkZS10b2dnbGUtYmFyW19uZ2NvbnRlbnQtJUNPTVAlXXtiYWNrZ3JvdW5kLWNvbG9yOnJnYmEoMCwwLDAsLjM4KX0ubWF0LXNsaWRlci10cmFjay1iYWNrZ3JvdW5kW19uZ2NvbnRlbnQtJUNPTVAlXXtiYWNrZ3JvdW5kLWNvbG9yOnJnYmEoMCwwLDAsLjI2KX0ubWF0LXByaW1hcnlbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1zbGlkZXItdHJhY2stZmlsbFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtcHJpbWFyeVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXNsaWRlci10aHVtYltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtcHJpbWFyeVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXNsaWRlci10aHVtYi1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17YmFja2dyb3VuZC1jb2xvcjojZjU3YzAwfS5tYXQtcHJpbWFyeVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXNsaWRlci10aHVtYi1sYWJlbC10ZXh0W19uZ2NvbnRlbnQtJUNPTVAlXXtjb2xvcjojZmZmfS5tYXQtcHJpbWFyeVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXNsaWRlci1mb2N1cy1yaW5nW19uZ2NvbnRlbnQtJUNPTVAlXXtiYWNrZ3JvdW5kLWNvbG9yOnJnYmEoMjQ1LDEyNCwwLC4yKX0ubWF0LWFjY2VudFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXNsaWRlci10cmFjay1maWxsW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1hY2NlbnRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1zbGlkZXItdGh1bWJbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWFjY2VudFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXNsaWRlci10aHVtYi1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17YmFja2dyb3VuZC1jb2xvcjojZmY5ODAwfS5tYXQtYWNjZW50W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtc2xpZGVyLXRodW1iLWxhYmVsLXRleHRbX25nY29udGVudC0lQ09NUCVde2NvbG9yOiNmZmZ9Lm1hdC1hY2NlbnRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1zbGlkZXItZm9jdXMtcmluZ1tfbmdjb250ZW50LSVDT01QJV17YmFja2dyb3VuZC1jb2xvcjpyZ2JhKDI1NSwxNTIsMCwuMil9Lm1hdC13YXJuW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtc2xpZGVyLXRyYWNrLWZpbGxbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXdhcm5bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1zbGlkZXItdGh1bWJbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXdhcm5bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1zbGlkZXItdGh1bWItbGFiZWxbX25nY29udGVudC0lQ09NUCVde2JhY2tncm91bmQtY29sb3I6I2Y0NDMzNn0ubWF0LXdhcm5bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1zbGlkZXItdGh1bWItbGFiZWwtdGV4dFtfbmdjb250ZW50LSVDT01QJV17Y29sb3I6I2ZmZn0ubWF0LXdhcm5bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1zbGlkZXItZm9jdXMtcmluZ1tfbmdjb250ZW50LSVDT01QJV17YmFja2dyb3VuZC1jb2xvcjpyZ2JhKDI0NCw2Nyw1NCwuMil9Lm1hdC1zbGlkZXJbX25nY29udGVudC0lQ09NUCVdOmhvdmVyICAgLm1hdC1zbGlkZXItdHJhY2stYmFja2dyb3VuZFtfbmdjb250ZW50LSVDT01QJV0sIC5jZGstZm9jdXNlZFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXNsaWRlci10cmFjay1iYWNrZ3JvdW5kW19uZ2NvbnRlbnQtJUNPTVAlXXtiYWNrZ3JvdW5kLWNvbG9yOnJnYmEoMCwwLDAsLjM4KX0ubWF0LXNsaWRlci1kaXNhYmxlZFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXNsaWRlci10cmFjay1iYWNrZ3JvdW5kW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1zbGlkZXItZGlzYWJsZWRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1zbGlkZXItdHJhY2stZmlsbFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtc2xpZGVyLWRpc2FibGVkW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtc2xpZGVyLXRodW1iW19uZ2NvbnRlbnQtJUNPTVAlXXtiYWNrZ3JvdW5kLWNvbG9yOnJnYmEoMCwwLDAsLjI2KX0ubWF0LXNsaWRlci1kaXNhYmxlZFtfbmdjb250ZW50LSVDT01QJV06aG92ZXIgICAubWF0LXNsaWRlci10cmFjay1iYWNrZ3JvdW5kW19uZ2NvbnRlbnQtJUNPTVAlXXtiYWNrZ3JvdW5kLWNvbG9yOnJnYmEoMCwwLDAsLjI2KX0ubWF0LXNsaWRlci1taW4tdmFsdWVbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1zbGlkZXItZm9jdXMtcmluZ1tfbmdjb250ZW50LSVDT01QJV17YmFja2dyb3VuZC1jb2xvcjpyZ2JhKDAsMCwwLC4xMil9Lm1hdC1zbGlkZXItbWluLXZhbHVlLm1hdC1zbGlkZXItdGh1bWItbGFiZWwtc2hvd2luZ1tfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXNsaWRlci10aHVtYltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtc2xpZGVyLW1pbi12YWx1ZS5tYXQtc2xpZGVyLXRodW1iLWxhYmVsLXNob3dpbmdbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1zbGlkZXItdGh1bWItbGFiZWxbX25nY29udGVudC0lQ09NUCVde2JhY2tncm91bmQtY29sb3I6cmdiYSgwLDAsMCwuODcpfS5tYXQtc2xpZGVyLW1pbi12YWx1ZS5tYXQtc2xpZGVyLXRodW1iLWxhYmVsLXNob3dpbmcuY2RrLWZvY3VzZWRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1zbGlkZXItdGh1bWJbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXNsaWRlci1taW4tdmFsdWUubWF0LXNsaWRlci10aHVtYi1sYWJlbC1zaG93aW5nLmNkay1mb2N1c2VkW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtc2xpZGVyLXRodW1iLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXtiYWNrZ3JvdW5kLWNvbG9yOnJnYmEoMCwwLDAsLjI2KX0ubWF0LXNsaWRlci1taW4tdmFsdWVbX25nY29udGVudC0lQ09NUCVdOm5vdCgubWF0LXNsaWRlci10aHVtYi1sYWJlbC1zaG93aW5nKSAgIC5tYXQtc2xpZGVyLXRodW1iW19uZ2NvbnRlbnQtJUNPTVAlXXtib3JkZXItY29sb3I6cmdiYSgwLDAsMCwuMjYpO2JhY2tncm91bmQtY29sb3I6dHJhbnNwYXJlbnR9Lm1hdC1zbGlkZXItbWluLXZhbHVlW19uZ2NvbnRlbnQtJUNPTVAlXTpub3QoLm1hdC1zbGlkZXItdGh1bWItbGFiZWwtc2hvd2luZyk6aG92ZXIgICAubWF0LXNsaWRlci10aHVtYltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtc2xpZGVyLW1pbi12YWx1ZVtfbmdjb250ZW50LSVDT01QJV06bm90KC5tYXQtc2xpZGVyLXRodW1iLWxhYmVsLXNob3dpbmcpLmNkay1mb2N1c2VkICAgLm1hdC1zbGlkZXItdGh1bWJbX25nY29udGVudC0lQ09NUCVde2JvcmRlci1jb2xvcjpyZ2JhKDAsMCwwLC4zOCl9Lm1hdC1zbGlkZXItbWluLXZhbHVlW19uZ2NvbnRlbnQtJUNPTVAlXTpub3QoLm1hdC1zbGlkZXItdGh1bWItbGFiZWwtc2hvd2luZyk6aG92ZXIubWF0LXNsaWRlci1kaXNhYmxlZCAgIC5tYXQtc2xpZGVyLXRodW1iW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1zbGlkZXItbWluLXZhbHVlW19uZ2NvbnRlbnQtJUNPTVAlXTpub3QoLm1hdC1zbGlkZXItdGh1bWItbGFiZWwtc2hvd2luZykuY2RrLWZvY3VzZWQubWF0LXNsaWRlci1kaXNhYmxlZCAgIC5tYXQtc2xpZGVyLXRodW1iW19uZ2NvbnRlbnQtJUNPTVAlXXtib3JkZXItY29sb3I6cmdiYSgwLDAsMCwuMjYpfS5tYXQtc2xpZGVyLWhhcy10aWNrc1tfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXNsaWRlci13cmFwcGVyW19uZ2NvbnRlbnQtJUNPTVAlXTo6YWZ0ZXJ7Ym9yZGVyLWNvbG9yOnJnYmEoMCwwLDAsLjcpfS5tYXQtc2xpZGVyLWhvcml6b250YWxbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1zbGlkZXItdGlja3NbX25nY29udGVudC0lQ09NUCVde2JhY2tncm91bmQtaW1hZ2U6cmVwZWF0aW5nLWxpbmVhci1ncmFkaWVudCh0byByaWdodCwgcmdiYSgwLCAwLCAwLCAwLjcpLCByZ2JhKDAsIDAsIDAsIDAuNykgMnB4LCB0cmFuc3BhcmVudCAwLCB0cmFuc3BhcmVudCk7YmFja2dyb3VuZC1pbWFnZTotbW96LXJlcGVhdGluZy1saW5lYXItZ3JhZGllbnQoMC4wMDAxZGVnLCByZ2JhKDAsIDAsIDAsIDAuNyksIHJnYmEoMCwgMCwgMCwgMC43KSAycHgsIHRyYW5zcGFyZW50IDAsIHRyYW5zcGFyZW50KX0ubWF0LXNsaWRlci12ZXJ0aWNhbFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXNsaWRlci10aWNrc1tfbmdjb250ZW50LSVDT01QJV17YmFja2dyb3VuZC1pbWFnZTpyZXBlYXRpbmctbGluZWFyLWdyYWRpZW50KHRvIGJvdHRvbSwgcmdiYSgwLCAwLCAwLCAwLjcpLCByZ2JhKDAsIDAsIDAsIDAuNykgMnB4LCB0cmFuc3BhcmVudCAwLCB0cmFuc3BhcmVudCl9Lm1hdC1zdGVwLWhlYWRlci5jZGsta2V5Ym9hcmQtZm9jdXNlZFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtc3RlcC1oZWFkZXIuY2RrLXByb2dyYW0tZm9jdXNlZFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtc3RlcC1oZWFkZXJbX25nY29udGVudC0lQ09NUCVdOmhvdmVye2JhY2tncm91bmQtY29sb3I6cmdiYSgwLDAsMCwuMDQpfUBtZWRpYShob3Zlcjogbm9uZSl7Lm1hdC1zdGVwLWhlYWRlcltfbmdjb250ZW50LSVDT01QJV06aG92ZXJ7YmFja2dyb3VuZDpub25lfX0ubWF0LXN0ZXAtaGVhZGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtc3RlcC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtc3RlcC1oZWFkZXJbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1zdGVwLW9wdGlvbmFsW19uZ2NvbnRlbnQtJUNPTVAlXXtjb2xvcjojNjE2MTYxfS5tYXQtc3RlcC1oZWFkZXJbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1zdGVwLWljb25bX25nY29udGVudC0lQ09NUCVde2JhY2tncm91bmQtY29sb3I6IzYxNjE2MTtjb2xvcjojZmZmfS5tYXQtc3RlcC1oZWFkZXJbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1zdGVwLWljb24tc2VsZWN0ZWRbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXN0ZXAtaGVhZGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtc3RlcC1pY29uLXN0YXRlLWRvbmVbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXN0ZXAtaGVhZGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtc3RlcC1pY29uLXN0YXRlLWVkaXRbX25nY29udGVudC0lQ09NUCVde2JhY2tncm91bmQtY29sb3I6I2Y1N2MwMDtjb2xvcjojZmZmfS5tYXQtc3RlcC1oZWFkZXJbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1zdGVwLWljb24tc3RhdGUtZXJyb3JbX25nY29udGVudC0lQ09NUCVde2JhY2tncm91bmQtY29sb3I6dHJhbnNwYXJlbnQ7Y29sb3I6I2Y0NDMzNn0ubWF0LXN0ZXAtaGVhZGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtc3RlcC1sYWJlbC5tYXQtc3RlcC1sYWJlbC1hY3RpdmVbX25nY29udGVudC0lQ09NUCVde2NvbG9yOiMyMTIxMjF9Lm1hdC1zdGVwLWhlYWRlcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXN0ZXAtbGFiZWwubWF0LXN0ZXAtbGFiZWwtZXJyb3JbX25nY29udGVudC0lQ09NUCVde2NvbG9yOiNmNDQzMzZ9Lm1hdC1zdGVwcGVyLWhvcml6b250YWxbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXN0ZXBwZXItdmVydGljYWxbX25nY29udGVudC0lQ09NUCVde2JhY2tncm91bmQtY29sb3I6I2ZmZn0ubWF0LXN0ZXBwZXItdmVydGljYWwtbGluZVtfbmdjb250ZW50LSVDT01QJV06OmJlZm9yZXtib3JkZXItbGVmdC1jb2xvcjpyZ2JhKDAsMCwwLC4xMil9Lm1hdC1ob3Jpem9udGFsLXN0ZXBwZXItaGVhZGVyW19uZ2NvbnRlbnQtJUNPTVAlXTo6YmVmb3JlLCAubWF0LWhvcml6b250YWwtc3RlcHBlci1oZWFkZXJbX25nY29udGVudC0lQ09NUCVdOjphZnRlciwgLm1hdC1zdGVwcGVyLWhvcml6b250YWwtbGluZVtfbmdjb250ZW50LSVDT01QJV17Ym9yZGVyLXRvcC1jb2xvcjpyZ2JhKDAsMCwwLC4xMil9Lm1hdC1ob3Jpem9udGFsLXN0ZXBwZXItaGVhZGVyW19uZ2NvbnRlbnQtJUNPTVAlXXtoZWlnaHQ6NzJweH0ubWF0LXN0ZXBwZXItbGFiZWwtcG9zaXRpb24tYm90dG9tW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaG9yaXpvbnRhbC1zdGVwcGVyLWhlYWRlcltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdmVydGljYWwtc3RlcHBlci1oZWFkZXJbX25nY29udGVudC0lQ09NUCVde3BhZGRpbmc6MjRweCAyNHB4fS5tYXQtc3RlcHBlci12ZXJ0aWNhbC1saW5lW19uZ2NvbnRlbnQtJUNPTVAlXTo6YmVmb3Jle3RvcDotMTZweDtib3R0b206LTE2cHh9Lm1hdC1zdGVwcGVyLWxhYmVsLXBvc2l0aW9uLWJvdHRvbVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWhvcml6b250YWwtc3RlcHBlci1oZWFkZXJbX25nY29udGVudC0lQ09NUCVdOjphZnRlciwgLm1hdC1zdGVwcGVyLWxhYmVsLXBvc2l0aW9uLWJvdHRvbVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWhvcml6b250YWwtc3RlcHBlci1oZWFkZXJbX25nY29udGVudC0lQ09NUCVdOjpiZWZvcmV7dG9wOjM2cHh9Lm1hdC1zdGVwcGVyLWxhYmVsLXBvc2l0aW9uLWJvdHRvbVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXN0ZXBwZXItaG9yaXpvbnRhbC1saW5lW19uZ2NvbnRlbnQtJUNPTVAlXXt0b3A6MzZweH0ubWF0LXNvcnQtaGVhZGVyLWFycm93W19uZ2NvbnRlbnQtJUNPTVAlXXtjb2xvcjojNjE2MTYxfS5tYXQtdGFiLW5hdi1iYXJbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXRhYi1oZWFkZXJbX25nY29udGVudC0lQ09NUCVde2JvcmRlci1ib3R0b206MXB4IHNvbGlkIHJnYmEoMCwwLDAsLjEyKX0ubWF0LXRhYi1ncm91cC1pbnZlcnRlZC1oZWFkZXJbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC10YWItbmF2LWJhcltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdGFiLWdyb3VwLWludmVydGVkLWhlYWRlcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXRhYi1oZWFkZXJbX25nY29udGVudC0lQ09NUCVde2JvcmRlci10b3A6MXB4IHNvbGlkIHJnYmEoMCwwLDAsLjEyKTtib3JkZXItYm90dG9tOm5vbmV9Lm1hdC10YWItbGFiZWxbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXRhYi1saW5rW19uZ2NvbnRlbnQtJUNPTVAlXXtjb2xvcjojMjEyMTIxfS5tYXQtdGFiLWxhYmVsLm1hdC10YWItZGlzYWJsZWRbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXRhYi1saW5rLm1hdC10YWItZGlzYWJsZWRbX25nY29udGVudC0lQ09NUCVde2NvbG9yOiM3NTc1NzV9Lm1hdC10YWItaGVhZGVyLXBhZ2luYXRpb24tY2hldnJvbltfbmdjb250ZW50LSVDT01QJV17Ym9yZGVyLWNvbG9yOiMyMTIxMjF9Lm1hdC10YWItaGVhZGVyLXBhZ2luYXRpb24tZGlzYWJsZWRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC10YWItaGVhZGVyLXBhZ2luYXRpb24tY2hldnJvbltfbmdjb250ZW50LSVDT01QJV17Ym9yZGVyLWNvbG9yOiM3NTc1NzV9Lm1hdC10YWItZ3JvdXBbY2xhc3MqPW1hdC1iYWNrZ3JvdW5kLV1bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC10YWItaGVhZGVyW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10YWItbmF2LWJhcltjbGFzcyo9bWF0LWJhY2tncm91bmQtXVtfbmdjb250ZW50LSVDT01QJV17Ym9yZGVyLWJvdHRvbTpub25lO2JvcmRlci10b3A6bm9uZX0ubWF0LXRhYi1ncm91cC5tYXQtcHJpbWFyeVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXRhYi1sYWJlbC5jZGsta2V5Ym9hcmQtZm9jdXNlZFtfbmdjb250ZW50LSVDT01QJV06bm90KC5tYXQtdGFiLWRpc2FibGVkKSwgLm1hdC10YWItZ3JvdXAubWF0LXByaW1hcnlbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC10YWItbGFiZWwuY2RrLXByb2dyYW0tZm9jdXNlZFtfbmdjb250ZW50LSVDT01QJV06bm90KC5tYXQtdGFiLWRpc2FibGVkKSwgLm1hdC10YWItZ3JvdXAubWF0LXByaW1hcnlbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC10YWItbGluay5jZGsta2V5Ym9hcmQtZm9jdXNlZFtfbmdjb250ZW50LSVDT01QJV06bm90KC5tYXQtdGFiLWRpc2FibGVkKSwgLm1hdC10YWItZ3JvdXAubWF0LXByaW1hcnlbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC10YWItbGluay5jZGstcHJvZ3JhbS1mb2N1c2VkW19uZ2NvbnRlbnQtJUNPTVAlXTpub3QoLm1hdC10YWItZGlzYWJsZWQpLCAubWF0LXRhYi1uYXYtYmFyLm1hdC1wcmltYXJ5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtdGFiLWxhYmVsLmNkay1rZXlib2FyZC1mb2N1c2VkW19uZ2NvbnRlbnQtJUNPTVAlXTpub3QoLm1hdC10YWItZGlzYWJsZWQpLCAubWF0LXRhYi1uYXYtYmFyLm1hdC1wcmltYXJ5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtdGFiLWxhYmVsLmNkay1wcm9ncmFtLWZvY3VzZWRbX25nY29udGVudC0lQ09NUCVdOm5vdCgubWF0LXRhYi1kaXNhYmxlZCksIC5tYXQtdGFiLW5hdi1iYXIubWF0LXByaW1hcnlbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC10YWItbGluay5jZGsta2V5Ym9hcmQtZm9jdXNlZFtfbmdjb250ZW50LSVDT01QJV06bm90KC5tYXQtdGFiLWRpc2FibGVkKSwgLm1hdC10YWItbmF2LWJhci5tYXQtcHJpbWFyeVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXRhYi1saW5rLmNkay1wcm9ncmFtLWZvY3VzZWRbX25nY29udGVudC0lQ09NUCVdOm5vdCgubWF0LXRhYi1kaXNhYmxlZCl7YmFja2dyb3VuZC1jb2xvcjpyZ2JhKDI1NSwxNTIsMCwuMyl9Lm1hdC10YWItZ3JvdXAubWF0LXByaW1hcnlbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pbmstYmFyW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10YWItbmF2LWJhci5tYXQtcHJpbWFyeVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWluay1iYXJbX25nY29udGVudC0lQ09NUCVde2JhY2tncm91bmQtY29sb3I6I2Y1N2MwMH0ubWF0LXRhYi1ncm91cC5tYXQtcHJpbWFyeS5tYXQtYmFja2dyb3VuZC1wcmltYXJ5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaW5rLWJhcltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdGFiLW5hdi1iYXIubWF0LXByaW1hcnkubWF0LWJhY2tncm91bmQtcHJpbWFyeVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWluay1iYXJbX25nY29udGVudC0lQ09NUCVde2JhY2tncm91bmQtY29sb3I6I2ZmZn0ubWF0LXRhYi1ncm91cC5tYXQtYWNjZW50W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtdGFiLWxhYmVsLmNkay1rZXlib2FyZC1mb2N1c2VkW19uZ2NvbnRlbnQtJUNPTVAlXTpub3QoLm1hdC10YWItZGlzYWJsZWQpLCAubWF0LXRhYi1ncm91cC5tYXQtYWNjZW50W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtdGFiLWxhYmVsLmNkay1wcm9ncmFtLWZvY3VzZWRbX25nY29udGVudC0lQ09NUCVdOm5vdCgubWF0LXRhYi1kaXNhYmxlZCksIC5tYXQtdGFiLWdyb3VwLm1hdC1hY2NlbnRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC10YWItbGluay5jZGsta2V5Ym9hcmQtZm9jdXNlZFtfbmdjb250ZW50LSVDT01QJV06bm90KC5tYXQtdGFiLWRpc2FibGVkKSwgLm1hdC10YWItZ3JvdXAubWF0LWFjY2VudFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXRhYi1saW5rLmNkay1wcm9ncmFtLWZvY3VzZWRbX25nY29udGVudC0lQ09NUCVdOm5vdCgubWF0LXRhYi1kaXNhYmxlZCksIC5tYXQtdGFiLW5hdi1iYXIubWF0LWFjY2VudFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXRhYi1sYWJlbC5jZGsta2V5Ym9hcmQtZm9jdXNlZFtfbmdjb250ZW50LSVDT01QJV06bm90KC5tYXQtdGFiLWRpc2FibGVkKSwgLm1hdC10YWItbmF2LWJhci5tYXQtYWNjZW50W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtdGFiLWxhYmVsLmNkay1wcm9ncmFtLWZvY3VzZWRbX25nY29udGVudC0lQ09NUCVdOm5vdCgubWF0LXRhYi1kaXNhYmxlZCksIC5tYXQtdGFiLW5hdi1iYXIubWF0LWFjY2VudFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXRhYi1saW5rLmNkay1rZXlib2FyZC1mb2N1c2VkW19uZ2NvbnRlbnQtJUNPTVAlXTpub3QoLm1hdC10YWItZGlzYWJsZWQpLCAubWF0LXRhYi1uYXYtYmFyLm1hdC1hY2NlbnRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC10YWItbGluay5jZGstcHJvZ3JhbS1mb2N1c2VkW19uZ2NvbnRlbnQtJUNPTVAlXTpub3QoLm1hdC10YWItZGlzYWJsZWQpe2JhY2tncm91bmQtY29sb3I6cmdiYSgyNTUsMTUyLDAsLjMpfS5tYXQtdGFiLWdyb3VwLm1hdC1hY2NlbnRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pbmstYmFyW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10YWItbmF2LWJhci5tYXQtYWNjZW50W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaW5rLWJhcltfbmdjb250ZW50LSVDT01QJV17YmFja2dyb3VuZC1jb2xvcjojZmY5ODAwfS5tYXQtdGFiLWdyb3VwLm1hdC1hY2NlbnQubWF0LWJhY2tncm91bmQtYWNjZW50W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaW5rLWJhcltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdGFiLW5hdi1iYXIubWF0LWFjY2VudC5tYXQtYmFja2dyb3VuZC1hY2NlbnRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pbmstYmFyW19uZ2NvbnRlbnQtJUNPTVAlXXtiYWNrZ3JvdW5kLWNvbG9yOiNmZmZ9Lm1hdC10YWItZ3JvdXAubWF0LXdhcm5bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC10YWItbGFiZWwuY2RrLWtleWJvYXJkLWZvY3VzZWRbX25nY29udGVudC0lQ09NUCVdOm5vdCgubWF0LXRhYi1kaXNhYmxlZCksIC5tYXQtdGFiLWdyb3VwLm1hdC13YXJuW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtdGFiLWxhYmVsLmNkay1wcm9ncmFtLWZvY3VzZWRbX25nY29udGVudC0lQ09NUCVdOm5vdCgubWF0LXRhYi1kaXNhYmxlZCksIC5tYXQtdGFiLWdyb3VwLm1hdC13YXJuW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtdGFiLWxpbmsuY2RrLWtleWJvYXJkLWZvY3VzZWRbX25nY29udGVudC0lQ09NUCVdOm5vdCgubWF0LXRhYi1kaXNhYmxlZCksIC5tYXQtdGFiLWdyb3VwLm1hdC13YXJuW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtdGFiLWxpbmsuY2RrLXByb2dyYW0tZm9jdXNlZFtfbmdjb250ZW50LSVDT01QJV06bm90KC5tYXQtdGFiLWRpc2FibGVkKSwgLm1hdC10YWItbmF2LWJhci5tYXQtd2Fybltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXRhYi1sYWJlbC5jZGsta2V5Ym9hcmQtZm9jdXNlZFtfbmdjb250ZW50LSVDT01QJV06bm90KC5tYXQtdGFiLWRpc2FibGVkKSwgLm1hdC10YWItbmF2LWJhci5tYXQtd2Fybltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXRhYi1sYWJlbC5jZGstcHJvZ3JhbS1mb2N1c2VkW19uZ2NvbnRlbnQtJUNPTVAlXTpub3QoLm1hdC10YWItZGlzYWJsZWQpLCAubWF0LXRhYi1uYXYtYmFyLm1hdC13YXJuW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtdGFiLWxpbmsuY2RrLWtleWJvYXJkLWZvY3VzZWRbX25nY29udGVudC0lQ09NUCVdOm5vdCgubWF0LXRhYi1kaXNhYmxlZCksIC5tYXQtdGFiLW5hdi1iYXIubWF0LXdhcm5bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC10YWItbGluay5jZGstcHJvZ3JhbS1mb2N1c2VkW19uZ2NvbnRlbnQtJUNPTVAlXTpub3QoLm1hdC10YWItZGlzYWJsZWQpe2JhY2tncm91bmQtY29sb3I6cmdiYSgyNTUsMjA1LDIxMCwuMyl9Lm1hdC10YWItZ3JvdXAubWF0LXdhcm5bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pbmstYmFyW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10YWItbmF2LWJhci5tYXQtd2Fybltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWluay1iYXJbX25nY29udGVudC0lQ09NUCVde2JhY2tncm91bmQtY29sb3I6I2Y0NDMzNn0ubWF0LXRhYi1ncm91cC5tYXQtd2Fybi5tYXQtYmFja2dyb3VuZC13YXJuW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaW5rLWJhcltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdGFiLW5hdi1iYXIubWF0LXdhcm4ubWF0LWJhY2tncm91bmQtd2Fybltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWluay1iYXJbX25nY29udGVudC0lQ09NUCVde2JhY2tncm91bmQtY29sb3I6I2ZmZn0ubWF0LXRhYi1ncm91cC5tYXQtYmFja2dyb3VuZC1wcmltYXJ5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtdGFiLWxhYmVsLmNkay1rZXlib2FyZC1mb2N1c2VkW19uZ2NvbnRlbnQtJUNPTVAlXTpub3QoLm1hdC10YWItZGlzYWJsZWQpLCAubWF0LXRhYi1ncm91cC5tYXQtYmFja2dyb3VuZC1wcmltYXJ5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtdGFiLWxhYmVsLmNkay1wcm9ncmFtLWZvY3VzZWRbX25nY29udGVudC0lQ09NUCVdOm5vdCgubWF0LXRhYi1kaXNhYmxlZCksIC5tYXQtdGFiLWdyb3VwLm1hdC1iYWNrZ3JvdW5kLXByaW1hcnlbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC10YWItbGluay5jZGsta2V5Ym9hcmQtZm9jdXNlZFtfbmdjb250ZW50LSVDT01QJV06bm90KC5tYXQtdGFiLWRpc2FibGVkKSwgLm1hdC10YWItZ3JvdXAubWF0LWJhY2tncm91bmQtcHJpbWFyeVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXRhYi1saW5rLmNkay1wcm9ncmFtLWZvY3VzZWRbX25nY29udGVudC0lQ09NUCVdOm5vdCgubWF0LXRhYi1kaXNhYmxlZCksIC5tYXQtdGFiLW5hdi1iYXIubWF0LWJhY2tncm91bmQtcHJpbWFyeVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXRhYi1sYWJlbC5jZGsta2V5Ym9hcmQtZm9jdXNlZFtfbmdjb250ZW50LSVDT01QJV06bm90KC5tYXQtdGFiLWRpc2FibGVkKSwgLm1hdC10YWItbmF2LWJhci5tYXQtYmFja2dyb3VuZC1wcmltYXJ5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtdGFiLWxhYmVsLmNkay1wcm9ncmFtLWZvY3VzZWRbX25nY29udGVudC0lQ09NUCVdOm5vdCgubWF0LXRhYi1kaXNhYmxlZCksIC5tYXQtdGFiLW5hdi1iYXIubWF0LWJhY2tncm91bmQtcHJpbWFyeVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXRhYi1saW5rLmNkay1rZXlib2FyZC1mb2N1c2VkW19uZ2NvbnRlbnQtJUNPTVAlXTpub3QoLm1hdC10YWItZGlzYWJsZWQpLCAubWF0LXRhYi1uYXYtYmFyLm1hdC1iYWNrZ3JvdW5kLXByaW1hcnlbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC10YWItbGluay5jZGstcHJvZ3JhbS1mb2N1c2VkW19uZ2NvbnRlbnQtJUNPTVAlXTpub3QoLm1hdC10YWItZGlzYWJsZWQpe2JhY2tncm91bmQtY29sb3I6cmdiYSgyNTUsMTUyLDAsLjMpfS5tYXQtdGFiLWdyb3VwLm1hdC1iYWNrZ3JvdW5kLXByaW1hcnlbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC10YWItaGVhZGVyW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10YWItZ3JvdXAubWF0LWJhY2tncm91bmQtcHJpbWFyeVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXRhYi1saW5rc1tfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdGFiLWdyb3VwLm1hdC1iYWNrZ3JvdW5kLXByaW1hcnlbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC10YWItaGVhZGVyLXBhZ2luYXRpb25bX25nY29udGVudC0lQ09NUCVdLCAubWF0LXRhYi1uYXYtYmFyLm1hdC1iYWNrZ3JvdW5kLXByaW1hcnlbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC10YWItaGVhZGVyW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10YWItbmF2LWJhci5tYXQtYmFja2dyb3VuZC1wcmltYXJ5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtdGFiLWxpbmtzW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10YWItbmF2LWJhci5tYXQtYmFja2dyb3VuZC1wcmltYXJ5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtdGFiLWhlYWRlci1wYWdpbmF0aW9uW19uZ2NvbnRlbnQtJUNPTVAlXXtiYWNrZ3JvdW5kLWNvbG9yOiNmNTdjMDB9Lm1hdC10YWItZ3JvdXAubWF0LWJhY2tncm91bmQtcHJpbWFyeVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXRhYi1sYWJlbFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdGFiLWdyb3VwLm1hdC1iYWNrZ3JvdW5kLXByaW1hcnlbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC10YWItbGlua1tfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdGFiLW5hdi1iYXIubWF0LWJhY2tncm91bmQtcHJpbWFyeVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXRhYi1sYWJlbFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdGFiLW5hdi1iYXIubWF0LWJhY2tncm91bmQtcHJpbWFyeVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXRhYi1saW5rW19uZ2NvbnRlbnQtJUNPTVAlXXtjb2xvcjojZmZmfS5tYXQtdGFiLWdyb3VwLm1hdC1iYWNrZ3JvdW5kLXByaW1hcnlbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC10YWItbGFiZWwubWF0LXRhYi1kaXNhYmxlZFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdGFiLWdyb3VwLm1hdC1iYWNrZ3JvdW5kLXByaW1hcnlbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC10YWItbGluay5tYXQtdGFiLWRpc2FibGVkW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10YWItbmF2LWJhci5tYXQtYmFja2dyb3VuZC1wcmltYXJ5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtdGFiLWxhYmVsLm1hdC10YWItZGlzYWJsZWRbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXRhYi1uYXYtYmFyLm1hdC1iYWNrZ3JvdW5kLXByaW1hcnlbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC10YWItbGluay5tYXQtdGFiLWRpc2FibGVkW19uZ2NvbnRlbnQtJUNPTVAlXXtjb2xvcjpyZ2JhKDI1NSwyNTUsMjU1LC40KX0ubWF0LXRhYi1ncm91cC5tYXQtYmFja2dyb3VuZC1wcmltYXJ5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtdGFiLWhlYWRlci1wYWdpbmF0aW9uLWNoZXZyb25bX25nY29udGVudC0lQ09NUCVdLCAubWF0LXRhYi1uYXYtYmFyLm1hdC1iYWNrZ3JvdW5kLXByaW1hcnlbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC10YWItaGVhZGVyLXBhZ2luYXRpb24tY2hldnJvbltfbmdjb250ZW50LSVDT01QJV17Ym9yZGVyLWNvbG9yOiNmZmZ9Lm1hdC10YWItZ3JvdXAubWF0LWJhY2tncm91bmQtcHJpbWFyeVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXRhYi1oZWFkZXItcGFnaW5hdGlvbi1kaXNhYmxlZFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXRhYi1oZWFkZXItcGFnaW5hdGlvbi1jaGV2cm9uW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10YWItbmF2LWJhci5tYXQtYmFja2dyb3VuZC1wcmltYXJ5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtdGFiLWhlYWRlci1wYWdpbmF0aW9uLWRpc2FibGVkW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtdGFiLWhlYWRlci1wYWdpbmF0aW9uLWNoZXZyb25bX25nY29udGVudC0lQ09NUCVde2JvcmRlci1jb2xvcjpyZ2JhKDI1NSwyNTUsMjU1LC40KX0ubWF0LXRhYi1ncm91cC5tYXQtYmFja2dyb3VuZC1wcmltYXJ5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtcmlwcGxlLWVsZW1lbnRbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXRhYi1uYXYtYmFyLm1hdC1iYWNrZ3JvdW5kLXByaW1hcnlbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1yaXBwbGUtZWxlbWVudFtfbmdjb250ZW50LSVDT01QJV17YmFja2dyb3VuZC1jb2xvcjpyZ2JhKDI1NSwyNTUsMjU1LC4xMil9Lm1hdC10YWItZ3JvdXAubWF0LWJhY2tncm91bmQtYWNjZW50W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtdGFiLWxhYmVsLmNkay1rZXlib2FyZC1mb2N1c2VkW19uZ2NvbnRlbnQtJUNPTVAlXTpub3QoLm1hdC10YWItZGlzYWJsZWQpLCAubWF0LXRhYi1ncm91cC5tYXQtYmFja2dyb3VuZC1hY2NlbnRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC10YWItbGFiZWwuY2RrLXByb2dyYW0tZm9jdXNlZFtfbmdjb250ZW50LSVDT01QJV06bm90KC5tYXQtdGFiLWRpc2FibGVkKSwgLm1hdC10YWItZ3JvdXAubWF0LWJhY2tncm91bmQtYWNjZW50W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtdGFiLWxpbmsuY2RrLWtleWJvYXJkLWZvY3VzZWRbX25nY29udGVudC0lQ09NUCVdOm5vdCgubWF0LXRhYi1kaXNhYmxlZCksIC5tYXQtdGFiLWdyb3VwLm1hdC1iYWNrZ3JvdW5kLWFjY2VudFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXRhYi1saW5rLmNkay1wcm9ncmFtLWZvY3VzZWRbX25nY29udGVudC0lQ09NUCVdOm5vdCgubWF0LXRhYi1kaXNhYmxlZCksIC5tYXQtdGFiLW5hdi1iYXIubWF0LWJhY2tncm91bmQtYWNjZW50W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtdGFiLWxhYmVsLmNkay1rZXlib2FyZC1mb2N1c2VkW19uZ2NvbnRlbnQtJUNPTVAlXTpub3QoLm1hdC10YWItZGlzYWJsZWQpLCAubWF0LXRhYi1uYXYtYmFyLm1hdC1iYWNrZ3JvdW5kLWFjY2VudFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXRhYi1sYWJlbC5jZGstcHJvZ3JhbS1mb2N1c2VkW19uZ2NvbnRlbnQtJUNPTVAlXTpub3QoLm1hdC10YWItZGlzYWJsZWQpLCAubWF0LXRhYi1uYXYtYmFyLm1hdC1iYWNrZ3JvdW5kLWFjY2VudFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXRhYi1saW5rLmNkay1rZXlib2FyZC1mb2N1c2VkW19uZ2NvbnRlbnQtJUNPTVAlXTpub3QoLm1hdC10YWItZGlzYWJsZWQpLCAubWF0LXRhYi1uYXYtYmFyLm1hdC1iYWNrZ3JvdW5kLWFjY2VudFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXRhYi1saW5rLmNkay1wcm9ncmFtLWZvY3VzZWRbX25nY29udGVudC0lQ09NUCVdOm5vdCgubWF0LXRhYi1kaXNhYmxlZCl7YmFja2dyb3VuZC1jb2xvcjpyZ2JhKDI1NSwxNTIsMCwuMyl9Lm1hdC10YWItZ3JvdXAubWF0LWJhY2tncm91bmQtYWNjZW50W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtdGFiLWhlYWRlcltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdGFiLWdyb3VwLm1hdC1iYWNrZ3JvdW5kLWFjY2VudFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXRhYi1saW5rc1tfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdGFiLWdyb3VwLm1hdC1iYWNrZ3JvdW5kLWFjY2VudFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXRhYi1oZWFkZXItcGFnaW5hdGlvbltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdGFiLW5hdi1iYXIubWF0LWJhY2tncm91bmQtYWNjZW50W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtdGFiLWhlYWRlcltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdGFiLW5hdi1iYXIubWF0LWJhY2tncm91bmQtYWNjZW50W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtdGFiLWxpbmtzW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10YWItbmF2LWJhci5tYXQtYmFja2dyb3VuZC1hY2NlbnRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC10YWItaGVhZGVyLXBhZ2luYXRpb25bX25nY29udGVudC0lQ09NUCVde2JhY2tncm91bmQtY29sb3I6I2ZmOTgwMH0ubWF0LXRhYi1ncm91cC5tYXQtYmFja2dyb3VuZC1hY2NlbnRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC10YWItbGFiZWxbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXRhYi1ncm91cC5tYXQtYmFja2dyb3VuZC1hY2NlbnRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC10YWItbGlua1tfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdGFiLW5hdi1iYXIubWF0LWJhY2tncm91bmQtYWNjZW50W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtdGFiLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10YWItbmF2LWJhci5tYXQtYmFja2dyb3VuZC1hY2NlbnRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC10YWItbGlua1tfbmdjb250ZW50LSVDT01QJV17Y29sb3I6I2ZmZn0ubWF0LXRhYi1ncm91cC5tYXQtYmFja2dyb3VuZC1hY2NlbnRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC10YWItbGFiZWwubWF0LXRhYi1kaXNhYmxlZFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdGFiLWdyb3VwLm1hdC1iYWNrZ3JvdW5kLWFjY2VudFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXRhYi1saW5rLm1hdC10YWItZGlzYWJsZWRbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXRhYi1uYXYtYmFyLm1hdC1iYWNrZ3JvdW5kLWFjY2VudFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXRhYi1sYWJlbC5tYXQtdGFiLWRpc2FibGVkW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10YWItbmF2LWJhci5tYXQtYmFja2dyb3VuZC1hY2NlbnRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC10YWItbGluay5tYXQtdGFiLWRpc2FibGVkW19uZ2NvbnRlbnQtJUNPTVAlXXtjb2xvcjpyZ2JhKDI1NSwyNTUsMjU1LC40KX0ubWF0LXRhYi1ncm91cC5tYXQtYmFja2dyb3VuZC1hY2NlbnRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC10YWItaGVhZGVyLXBhZ2luYXRpb24tY2hldnJvbltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdGFiLW5hdi1iYXIubWF0LWJhY2tncm91bmQtYWNjZW50W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtdGFiLWhlYWRlci1wYWdpbmF0aW9uLWNoZXZyb25bX25nY29udGVudC0lQ09NUCVde2JvcmRlci1jb2xvcjojZmZmfS5tYXQtdGFiLWdyb3VwLm1hdC1iYWNrZ3JvdW5kLWFjY2VudFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXRhYi1oZWFkZXItcGFnaW5hdGlvbi1kaXNhYmxlZFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXRhYi1oZWFkZXItcGFnaW5hdGlvbi1jaGV2cm9uW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10YWItbmF2LWJhci5tYXQtYmFja2dyb3VuZC1hY2NlbnRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC10YWItaGVhZGVyLXBhZ2luYXRpb24tZGlzYWJsZWRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC10YWItaGVhZGVyLXBhZ2luYXRpb24tY2hldnJvbltfbmdjb250ZW50LSVDT01QJV17Ym9yZGVyLWNvbG9yOnJnYmEoMjU1LDI1NSwyNTUsLjQpfS5tYXQtdGFiLWdyb3VwLm1hdC1iYWNrZ3JvdW5kLWFjY2VudFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXJpcHBsZS1lbGVtZW50W19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10YWItbmF2LWJhci5tYXQtYmFja2dyb3VuZC1hY2NlbnRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1yaXBwbGUtZWxlbWVudFtfbmdjb250ZW50LSVDT01QJV17YmFja2dyb3VuZC1jb2xvcjpyZ2JhKDI1NSwyNTUsMjU1LC4xMil9Lm1hdC10YWItZ3JvdXAubWF0LWJhY2tncm91bmQtd2Fybltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXRhYi1sYWJlbC5jZGsta2V5Ym9hcmQtZm9jdXNlZFtfbmdjb250ZW50LSVDT01QJV06bm90KC5tYXQtdGFiLWRpc2FibGVkKSwgLm1hdC10YWItZ3JvdXAubWF0LWJhY2tncm91bmQtd2Fybltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXRhYi1sYWJlbC5jZGstcHJvZ3JhbS1mb2N1c2VkW19uZ2NvbnRlbnQtJUNPTVAlXTpub3QoLm1hdC10YWItZGlzYWJsZWQpLCAubWF0LXRhYi1ncm91cC5tYXQtYmFja2dyb3VuZC13YXJuW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtdGFiLWxpbmsuY2RrLWtleWJvYXJkLWZvY3VzZWRbX25nY29udGVudC0lQ09NUCVdOm5vdCgubWF0LXRhYi1kaXNhYmxlZCksIC5tYXQtdGFiLWdyb3VwLm1hdC1iYWNrZ3JvdW5kLXdhcm5bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC10YWItbGluay5jZGstcHJvZ3JhbS1mb2N1c2VkW19uZ2NvbnRlbnQtJUNPTVAlXTpub3QoLm1hdC10YWItZGlzYWJsZWQpLCAubWF0LXRhYi1uYXYtYmFyLm1hdC1iYWNrZ3JvdW5kLXdhcm5bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC10YWItbGFiZWwuY2RrLWtleWJvYXJkLWZvY3VzZWRbX25nY29udGVudC0lQ09NUCVdOm5vdCgubWF0LXRhYi1kaXNhYmxlZCksIC5tYXQtdGFiLW5hdi1iYXIubWF0LWJhY2tncm91bmQtd2Fybltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXRhYi1sYWJlbC5jZGstcHJvZ3JhbS1mb2N1c2VkW19uZ2NvbnRlbnQtJUNPTVAlXTpub3QoLm1hdC10YWItZGlzYWJsZWQpLCAubWF0LXRhYi1uYXYtYmFyLm1hdC1iYWNrZ3JvdW5kLXdhcm5bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC10YWItbGluay5jZGsta2V5Ym9hcmQtZm9jdXNlZFtfbmdjb250ZW50LSVDT01QJV06bm90KC5tYXQtdGFiLWRpc2FibGVkKSwgLm1hdC10YWItbmF2LWJhci5tYXQtYmFja2dyb3VuZC13YXJuW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtdGFiLWxpbmsuY2RrLXByb2dyYW0tZm9jdXNlZFtfbmdjb250ZW50LSVDT01QJV06bm90KC5tYXQtdGFiLWRpc2FibGVkKXtiYWNrZ3JvdW5kLWNvbG9yOnJnYmEoMjU1LDIwNSwyMTAsLjMpfS5tYXQtdGFiLWdyb3VwLm1hdC1iYWNrZ3JvdW5kLXdhcm5bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC10YWItaGVhZGVyW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10YWItZ3JvdXAubWF0LWJhY2tncm91bmQtd2Fybltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXRhYi1saW5rc1tfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdGFiLWdyb3VwLm1hdC1iYWNrZ3JvdW5kLXdhcm5bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC10YWItaGVhZGVyLXBhZ2luYXRpb25bX25nY29udGVudC0lQ09NUCVdLCAubWF0LXRhYi1uYXYtYmFyLm1hdC1iYWNrZ3JvdW5kLXdhcm5bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC10YWItaGVhZGVyW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10YWItbmF2LWJhci5tYXQtYmFja2dyb3VuZC13YXJuW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtdGFiLWxpbmtzW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10YWItbmF2LWJhci5tYXQtYmFja2dyb3VuZC13YXJuW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtdGFiLWhlYWRlci1wYWdpbmF0aW9uW19uZ2NvbnRlbnQtJUNPTVAlXXtiYWNrZ3JvdW5kLWNvbG9yOiNmNDQzMzZ9Lm1hdC10YWItZ3JvdXAubWF0LWJhY2tncm91bmQtd2Fybltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXRhYi1sYWJlbFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdGFiLWdyb3VwLm1hdC1iYWNrZ3JvdW5kLXdhcm5bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC10YWItbGlua1tfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdGFiLW5hdi1iYXIubWF0LWJhY2tncm91bmQtd2Fybltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXRhYi1sYWJlbFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdGFiLW5hdi1iYXIubWF0LWJhY2tncm91bmQtd2Fybltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXRhYi1saW5rW19uZ2NvbnRlbnQtJUNPTVAlXXtjb2xvcjojZmZmfS5tYXQtdGFiLWdyb3VwLm1hdC1iYWNrZ3JvdW5kLXdhcm5bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC10YWItbGFiZWwubWF0LXRhYi1kaXNhYmxlZFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdGFiLWdyb3VwLm1hdC1iYWNrZ3JvdW5kLXdhcm5bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC10YWItbGluay5tYXQtdGFiLWRpc2FibGVkW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10YWItbmF2LWJhci5tYXQtYmFja2dyb3VuZC13YXJuW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtdGFiLWxhYmVsLm1hdC10YWItZGlzYWJsZWRbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXRhYi1uYXYtYmFyLm1hdC1iYWNrZ3JvdW5kLXdhcm5bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC10YWItbGluay5tYXQtdGFiLWRpc2FibGVkW19uZ2NvbnRlbnQtJUNPTVAlXXtjb2xvcjpyZ2JhKDI1NSwyNTUsMjU1LC40KX0ubWF0LXRhYi1ncm91cC5tYXQtYmFja2dyb3VuZC13YXJuW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtdGFiLWhlYWRlci1wYWdpbmF0aW9uLWNoZXZyb25bX25nY29udGVudC0lQ09NUCVdLCAubWF0LXRhYi1uYXYtYmFyLm1hdC1iYWNrZ3JvdW5kLXdhcm5bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC10YWItaGVhZGVyLXBhZ2luYXRpb24tY2hldnJvbltfbmdjb250ZW50LSVDT01QJV17Ym9yZGVyLWNvbG9yOiNmZmZ9Lm1hdC10YWItZ3JvdXAubWF0LWJhY2tncm91bmQtd2Fybltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXRhYi1oZWFkZXItcGFnaW5hdGlvbi1kaXNhYmxlZFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXRhYi1oZWFkZXItcGFnaW5hdGlvbi1jaGV2cm9uW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10YWItbmF2LWJhci5tYXQtYmFja2dyb3VuZC13YXJuW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtdGFiLWhlYWRlci1wYWdpbmF0aW9uLWRpc2FibGVkW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtdGFiLWhlYWRlci1wYWdpbmF0aW9uLWNoZXZyb25bX25nY29udGVudC0lQ09NUCVde2JvcmRlci1jb2xvcjpyZ2JhKDI1NSwyNTUsMjU1LC40KX0ubWF0LXRhYi1ncm91cC5tYXQtYmFja2dyb3VuZC13YXJuW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtcmlwcGxlLWVsZW1lbnRbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXRhYi1uYXYtYmFyLm1hdC1iYWNrZ3JvdW5kLXdhcm5bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1yaXBwbGUtZWxlbWVudFtfbmdjb250ZW50LSVDT01QJV17YmFja2dyb3VuZC1jb2xvcjpyZ2JhKDI1NSwyNTUsMjU1LC4xMil9Lm1hdC10b29sYmFyW19uZ2NvbnRlbnQtJUNPTVAlXXtiYWNrZ3JvdW5kOiNmNWY1ZjU7Y29sb3I6IzIxMjEyMX0ubWF0LXRvb2xiYXIubWF0LXByaW1hcnlbX25nY29udGVudC0lQ09NUCVde2JhY2tncm91bmQ6I2Y1N2MwMDtjb2xvcjojZmZmfS5tYXQtdG9vbGJhci5tYXQtYWNjZW50W19uZ2NvbnRlbnQtJUNPTVAlXXtiYWNrZ3JvdW5kOiNmZjk4MDA7Y29sb3I6I2ZmZn0ubWF0LXRvb2xiYXIubWF0LXdhcm5bX25nY29udGVudC0lQ09NUCVde2JhY2tncm91bmQ6I2Y0NDMzNjtjb2xvcjojZmZmfS5tYXQtdG9vbGJhcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtdW5kZXJsaW5lW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10b29sYmFyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1yaXBwbGVbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXRvb2xiYXJbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb2N1c2VkW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1yaXBwbGVbX25nY29udGVudC0lQ09NUCVde2JhY2tncm91bmQtY29sb3I6Y3VycmVudENvbG9yfS5tYXQtdG9vbGJhcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXRvb2xiYXJbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb2N1c2VkW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdG9vbGJhcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXNlbGVjdC12YWx1ZVtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdG9vbGJhcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXNlbGVjdC1hcnJvd1tfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdG9vbGJhcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQubWF0LWZvY3VzZWRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1zZWxlY3QtYXJyb3dbX25nY29udGVudC0lQ09NUCVde2NvbG9yOmluaGVyaXR9Lm1hdC10b29sYmFyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaW5wdXQtZWxlbWVudFtfbmdjb250ZW50LSVDT01QJV17Y2FyZXQtY29sb3I6Y3VycmVudENvbG9yfS5tYXQtdG9vbGJhci1tdWx0aXBsZS1yb3dzW19uZ2NvbnRlbnQtJUNPTVAlXXttaW4taGVpZ2h0OjY0cHh9Lm1hdC10b29sYmFyLXJvd1tfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdG9vbGJhci1zaW5nbGUtcm93W19uZ2NvbnRlbnQtJUNPTVAlXXtoZWlnaHQ6NjRweH1AbWVkaWEobWF4LXdpZHRoOiA1OTlweCl7Lm1hdC10b29sYmFyLW11bHRpcGxlLXJvd3NbX25nY29udGVudC0lQ09NUCVde21pbi1oZWlnaHQ6NTZweH0ubWF0LXRvb2xiYXItcm93W19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10b29sYmFyLXNpbmdsZS1yb3dbX25nY29udGVudC0lQ09NUCVde2hlaWdodDo1NnB4fX0ubWF0LXRvb2x0aXBbX25nY29udGVudC0lQ09NUCVde2JhY2tncm91bmQ6cmdiYSg5Nyw5Nyw5NywuOSl9Lm1hdC10cmVlW19uZ2NvbnRlbnQtJUNPTVAlXXtiYWNrZ3JvdW5kOiNmZmZ9Lm1hdC10cmVlLW5vZGVbX25nY29udGVudC0lQ09NUCVdLCAubWF0LW5lc3RlZC10cmVlLW5vZGVbX25nY29udGVudC0lQ09NUCVde2NvbG9yOiMyMTIxMjF9Lm1hdC10cmVlLW5vZGVbX25nY29udGVudC0lQ09NUCVde21pbi1oZWlnaHQ6NDhweH0ubWF0LXNuYWNrLWJhci1jb250YWluZXJbX25nY29udGVudC0lQ09NUCVde2NvbG9yOnJnYmEoMjU1LDI1NSwyNTUsLjcpO2JhY2tncm91bmQ6IzMyMzIzMjtib3gtc2hhZG93OjBweCAzcHggNXB4IC0xcHggcmdiYSgwLCAwLCAwLCAwLjIpLDBweCA2cHggMTBweCAwcHggcmdiYSgwLCAwLCAwLCAwLjE0KSwwcHggMXB4IDE4cHggMHB4IHJnYmEoMCwgMCwgMCwgMC4xMil9Lm1hdC1zaW1wbGUtc25hY2tiYXItYWN0aW9uW19uZ2NvbnRlbnQtJUNPTVAlXXtjb2xvcjojZmY5ODAwfVtfbmdob3N0LSVDT01QJV17ZGlzcGxheTpmbGV4O2ZsZXgtZGlyZWN0aW9uOmNvbHVtbjtoZWlnaHQ6MTAwJX0udG9vbGJhcltfbmdjb250ZW50LSVDT01QJV17ZmxleDpub25lO2Rpc3BsYXk6ZmxleDthbGlnbi1pdGVtczpjZW50ZXI7anVzdGlmeS1jb250ZW50OnNwYWNlLWJldHdlZW47aGVpZ2h0OjQ4cHg7cGFkZGluZzowIDE2cHg7YmFja2dyb3VuZC1jb2xvcjojZmZmO2JvcmRlci1ib3R0b206MXB4IHNvbGlkICNlYmViZWJ9LnRvb2xiYXJbX25nY29udGVudC0lQ09NUCVdICAgbWV0cmljcy10YWctZmlsdGVyW19uZ2NvbnRlbnQtJUNPTVAlXXtmbGV4OjEgMSAxMDBweH0udG9vbGJhcltfbmdjb250ZW50LSVDT01QJV0gICAucmlnaHQtaXRlbXNbX25nY29udGVudC0lQ09NUCVde2JvcmRlci1sZWZ0OjFweCBzb2xpZCAjZWJlYmViO21hcmdpbi1sZWZ0OjE2cHg7cGFkZGluZy1sZWZ0OjE2cHh9LnNwbGl0LWNvbnRlbnRbX25nY29udGVudC0lQ09NUCVde2Rpc3BsYXk6ZmxleDtvdmVyZmxvdy15OmF1dG87ZmxleDoxfS5tYWluW19uZ2NvbnRlbnQtJUNPTVAlXSwgLnNpZGViYXJbX25nY29udGVudC0lQ09NUCVde292ZXJmbG93LXg6aGlkZGVuO292ZXJmbG93LXk6YXV0bzt3aWxsLWNoYW5nZTp0cmFuc2Zvcm07Y29udGFpbjpzdHJpY3R9Lm1haW5bX25nY29udGVudC0lQ09NUCVde2JhY2tncm91bmQtY29sb3I6I2Y1ZjZmNztmbGV4OjEgMTtkaXNwbGF5OmZsZXg7ZmxleC1kaXJlY3Rpb246Y29sdW1ufS5tYWluW19uZ2NvbnRlbnQtJUNPTVAlXSAgIG1ldHJpY3MtZmlsdGVyZWQtdmlld1tfbmdjb250ZW50LSVDT01QJV0sIC5tYWluW19uZ2NvbnRlbnQtJUNPTVAlXSAgIG1ldHJpY3MtcGlubmVkLXZpZXdbX25nY29udGVudC0lQ09NUCVde2JvcmRlci1ib3R0b206MXB4IHNvbGlkICNlYmViZWJ9LnNpZGViYXJbX25nY29udGVudC0lQ09NUCVde2ZsZXg6MCAwIDI1MHB4O2JhY2tncm91bmQtY29sb3I6I2ZmZjtib3JkZXItbGVmdDoxcHggc29saWQgI2ViZWJlYn0uc2lkZWJhcltfbmdjb250ZW50LSVDT01QJV0gICAuaGVhZGVyW19uZ2NvbnRlbnQtJUNPTVAlXXtkaXNwbGF5OmZsZXg7YWxpZ24taXRlbXM6Y2VudGVyO2p1c3RpZnktY29udGVudDpzcGFjZS1iZXR3ZWVuO2hlaWdodDo0MnB4O3BhZGRpbmc6MCAxNnB4O2JvcmRlci1ib3R0b206MXB4IHNvbGlkICNlYmViZWJ9LnNpZGViYXJbX25nY29udGVudC0lQ09NUCVdICAgLmhlYWRlcltfbmdjb250ZW50LSVDT01QJV0gICAudGl0bGVbX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToxOHB4O2ZvbnQtd2VpZ2h0OjQwMDtsaW5lLWhlaWdodDpub3JtYWw7bWFyZ2luOjB9LnNldHRpbmdzLWJ1dHRvbltfbmdjb250ZW50LSVDT01QJV17Y29sb3I6IzYxNjE2MTtkaXNwbGF5OmlubGluZS1mbGV4fS5zZXR0aW5ncy1idXR0b24uY2hlY2tlZFtfbmdjb250ZW50LSVDT01QJV17YmFja2dyb3VuZC1jb2xvcjojZTBlMGUwO2JvcmRlci1jb2xvcjojZTBlMGUwfS5zZXR0aW5ncy1idXR0b25bX25nY29udGVudC0lQ09NUCVdICAgICAubWF0LWJ1dHRvbi13cmFwcGVye2Rpc3BsYXk6aW5saW5lLWZsZXg7YWxpZ24taXRlbXM6Y2VudGVyfS5zZXR0aW5ncy1idXR0b25bX25nY29udGVudC0lQ09NUCVdICAgbWF0LWljb25bX25nY29udGVudC0lQ09NUCVde21hcmdpbi1yaWdodDo0cHh9J10sY2hhbmdlRGV0ZWN0aW9uOjB9KTtjbGFzcyBXbXR7Y29uc3RydWN0b3IodCl7dGhpcy5zdG9yZT10LHRoaXMuaXNTaWRlcGFuZU9wZW49ITAsdGhpcy5zaG93RmlsdGVyZWRWaWV3JD10aGlzLnN0b3JlLnNlbGVjdChNRCkucGlwZShmdCgodD0+dC5sZW5ndGg+MCkpKX1vblNldHRpbmdzQnV0dG9uQ2xpY2tlZCgpe3RoaXMuaXNTaWRlcGFuZU9wZW49IXRoaXMuaXNTaWRlcGFuZU9wZW59b25DbG9zZVNpZGVwYW5lQnV0dG9uQ2xpY2tlZCgpe3RoaXMuaXNTaWRlcGFuZU9wZW49ITF9fVdtdC7JtWZhYz1mdW5jdGlvbiB0KG4pe3JldHVybiBuZXcobnx8V210KShaZyhjdikpfSxXbXQuybVjbXA9X28oe3R5cGU6V210LHNlbGVjdG9yczpbWyJtZXRyaWNzLW1haW4tdmlldyJdXSxkZWNsczoyLHZhcnM6NCxjb25zdHM6W1szLCJzaG93RmlsdGVyZWRWaWV3IiwiaXNTaWRlcGFuZU9wZW4iLCJvblNldHRpbmdzQnV0dG9uQ2xpY2tlZCIsIm9uQ2xvc2VTaWRlcGFuZUJ1dHRvbkNsaWNrZWQiXV0sdGVtcGxhdGU6ZnVuY3Rpb24gdChuLGUpezEmbiYmKEtnKDAsIm1ldHJpY3MtbWFpbi12aWV3LWNvbXBvbmVudCIsMCksY3AoIm9uU2V0dGluZ3NCdXR0b25DbGlja2VkIiwoZnVuY3Rpb24gdCgpe3JldHVybiBlLm9uU2V0dGluZ3NCdXR0b25DbGlja2VkKCl9KSkoIm9uQ2xvc2VTaWRlcGFuZUJ1dHRvbkNsaWNrZWQiLChmdW5jdGlvbiB0KCl7cmV0dXJuIGUub25DbG9zZVNpZGVwYW5lQnV0dG9uQ2xpY2tlZCgpfSkpLHlmKDEsImFzeW5jIiksJGcoKSksMiZuJiZKZygic2hvd0ZpbHRlcmVkVmlldyIsa2YoMSwyLGUuc2hvd0ZpbHRlcmVkVmlldyQpKSgiaXNTaWRlcGFuZU9wZW4iLGUuaXNTaWRlcGFuZU9wZW4pfSxkaXJlY3RpdmVzOltVbXRdLHBpcGVzOltvT10sZW5jYXBzdWxhdGlvbjoyLGNoYW5nZURldGVjdGlvbjowfSk7Y2xhc3MgR210e31HbXQuybVmYWM9ZnVuY3Rpb24gdChuKXtyZXR1cm4gbmV3KG58fEdtdCl9LEdtdC7JtWNtcD1fbyh7dHlwZTpHbXQsc2VsZWN0b3JzOltbIm1ldHJpY3MtZGFzaGJvYXJkIl1dLGRlY2xzOjMsdmFyczowLHRlbXBsYXRlOmZ1bmN0aW9uIHQobixlKXsxJm4mJihLZygwLCJuYXYiKSx0cCgxLCJydW5zLXNlbGVjdG9yIiksJGcoKSx0cCgyLCJtZXRyaWNzLW1haW4tdmlldyIpKX0sZGlyZWN0aXZlczpbckssV210XSxzdHlsZXM6WycubWF0LWJhZGdlLWNvbnRlbnRbX25nY29udGVudC0lQ09NUCVde2ZvbnQtd2VpZ2h0OjYwMDtmb250LXNpemU6MTJweDtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWZ9Lm1hdC1iYWRnZS1zbWFsbFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWJhZGdlLWNvbnRlbnRbX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZTo5cHh9Lm1hdC1iYWRnZS1sYXJnZVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWJhZGdlLWNvbnRlbnRbX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToyNHB4fS5tYXQtaDFbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWhlYWRsaW5lW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10eXBvZ3JhcGh5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIGgxW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250OjQwMCAyNHB4LzMycHggUm9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2xldHRlci1zcGFjaW5nOm5vcm1hbDttYXJnaW46MCAwIDE2cHh9Lm1hdC1oMltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdGl0bGVbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXR5cG9ncmFwaHlbX25nY29udGVudC0lQ09NUCVdICAgaDJbX25nY29udGVudC0lQ09NUCVde2ZvbnQ6NTAwIDIwcHgvMzJweCBSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7bGV0dGVyLXNwYWNpbmc6bm9ybWFsO21hcmdpbjowIDAgMTZweH0ubWF0LWgzW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1zdWJoZWFkaW5nLTJbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXR5cG9ncmFwaHlbX25nY29udGVudC0lQ09NUCVdICAgaDNbX25nY29udGVudC0lQ09NUCVde2ZvbnQ6NDAwIDE2cHgvMjhweCBSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7bGV0dGVyLXNwYWNpbmc6bm9ybWFsO21hcmdpbjowIDAgMTZweH0ubWF0LWg0W19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1zdWJoZWFkaW5nLTFbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXR5cG9ncmFwaHlbX25nY29udGVudC0lQ09NUCVdICAgaDRbX25nY29udGVudC0lQ09NUCVde2ZvbnQ6NDAwIDE1cHgvMjRweCBSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7bGV0dGVyLXNwYWNpbmc6bm9ybWFsO21hcmdpbjowIDAgMTZweH0ubWF0LWg1W19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10eXBvZ3JhcGh5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIGg1W19uZ2NvbnRlbnQtJUNPTVAlXXtmb250OjQwMCBjYWxjKDE0cHggKiAwLjgzKS8yMHB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjttYXJnaW46MCAwIDEycHh9Lm1hdC1oNltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdHlwb2dyYXBoeVtfbmdjb250ZW50LSVDT01QJV0gICBoNltfbmdjb250ZW50LSVDT01QJV17Zm9udDo0MDAgY2FsYygxNHB4ICogMC42NykvMjBweCBSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7bWFyZ2luOjAgMCAxMnB4fS5tYXQtYm9keS1zdHJvbmdbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWJvZHktMltfbmdjb250ZW50LSVDT01QJV17Zm9udDo1MDAgMTRweC8yNHB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtsZXR0ZXItc3BhY2luZzpub3JtYWx9Lm1hdC1ib2R5W19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1ib2R5LTFbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXR5cG9ncmFwaHlbX25nY29udGVudC0lQ09NUCVde2ZvbnQ6NDAwIDE0cHgvMjBweCBSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7bGV0dGVyLXNwYWNpbmc6bm9ybWFsfS5tYXQtYm9keVtfbmdjb250ZW50LSVDT01QJV0gICBwW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1ib2R5LTFbX25nY29udGVudC0lQ09NUCVdICAgcFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdHlwb2dyYXBoeVtfbmdjb250ZW50LSVDT01QJV0gICBwW19uZ2NvbnRlbnQtJUNPTVAlXXttYXJnaW46MCAwIDEycHh9Lm1hdC1zbWFsbFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtY2FwdGlvbltfbmdjb250ZW50LSVDT01QJV17Zm9udDo0MDAgMTJweC8yMHB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtsZXR0ZXItc3BhY2luZzpub3JtYWx9Lm1hdC1kaXNwbGF5LTRbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXR5cG9ncmFwaHlbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1kaXNwbGF5LTRbX25nY29udGVudC0lQ09NUCVde2ZvbnQ6MzAwIDExMnB4LzExMnB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtsZXR0ZXItc3BhY2luZzotMC4wNWVtO21hcmdpbjowIDAgNTZweH0ubWF0LWRpc3BsYXktM1tfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdHlwb2dyYXBoeVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWRpc3BsYXktM1tfbmdjb250ZW50LSVDT01QJV17Zm9udDo0MDAgNTZweC81NnB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtsZXR0ZXItc3BhY2luZzotMC4wMmVtO21hcmdpbjowIDAgNjRweH0ubWF0LWRpc3BsYXktMltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdHlwb2dyYXBoeVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWRpc3BsYXktMltfbmdjb250ZW50LSVDT01QJV17Zm9udDo0MDAgNDVweC80OHB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtsZXR0ZXItc3BhY2luZzotMC4wMDVlbTttYXJnaW46MCAwIDY0cHh9Lm1hdC1kaXNwbGF5LTFbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXR5cG9ncmFwaHlbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1kaXNwbGF5LTFbX25nY29udGVudC0lQ09NUCVde2ZvbnQ6NDAwIDM0cHgvNDBweCBSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7bGV0dGVyLXNwYWNpbmc6bm9ybWFsO21hcmdpbjowIDAgNjRweH0ubWF0LWJvdHRvbS1zaGVldC1jb250YWluZXJbX25nY29udGVudC0lQ09NUCVde2ZvbnQ6NDAwIDE0cHgvMjBweCBSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7bGV0dGVyLXNwYWNpbmc6bm9ybWFsfS5tYXQtYnV0dG9uW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1yYWlzZWQtYnV0dG9uW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1pY29uLWJ1dHRvbltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtc3Ryb2tlZC1idXR0b25bX25nY29udGVudC0lQ09NUCVdLCAubWF0LWZsYXQtYnV0dG9uW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1mYWJbX25nY29udGVudC0lQ09NUCVdLCAubWF0LW1pbmktZmFiW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7Zm9udC1zaXplOjE0cHg7Zm9udC13ZWlnaHQ6NTAwfS5tYXQtYnV0dG9uLXRvZ2dsZVtfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmfS5tYXQtY2FyZFtfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmfS5tYXQtY2FyZC10aXRsZVtfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjI0cHg7Zm9udC13ZWlnaHQ6NTAwfS5tYXQtY2FyZC1oZWFkZXJbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1jYXJkLXRpdGxlW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MjBweH0ubWF0LWNhcmQtc3VidGl0bGVbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWNhcmQtY29udGVudFtfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjE0cHh9Lm1hdC1jaGVja2JveFtfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmfS5tYXQtY2hlY2tib3gtbGF5b3V0W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtY2hlY2tib3gtbGFiZWxbX25nY29udGVudC0lQ09NUCVde2xpbmUtaGVpZ2h0OjI0cHh9Lm1hdC1jaGlwW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MTRweDtmb250LXdlaWdodDo1MDB9Lm1hdC1jaGlwW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtY2hpcC10cmFpbGluZy1pY29uLm1hdC1pY29uW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1jaGlwW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtY2hpcC1yZW1vdmUubWF0LWljb25bX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToxOHB4fS5tYXQtdGFibGVbX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZn0ubWF0LWhlYWRlci1jZWxsW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MTJweDtmb250LXdlaWdodDo1MDB9Lm1hdC1jZWxsW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1mb290ZXItY2VsbFtfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjE0cHh9Lm1hdC1jYWxlbmRhcltfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmfS5tYXQtY2FsZW5kYXItYm9keVtfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjEzcHh9Lm1hdC1jYWxlbmRhci1ib2R5LWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1jYWxlbmRhci1wZXJpb2QtYnV0dG9uW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MTRweDtmb250LXdlaWdodDo1MDB9Lm1hdC1jYWxlbmRhci10YWJsZS1oZWFkZXJbX25nY29udGVudC0lQ09NUCVdICAgdGhbX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToxMXB4O2ZvbnQtd2VpZ2h0OjQwMH0ubWF0LWRpYWxvZy10aXRsZVtfbmdjb250ZW50LSVDT01QJV17Zm9udDo1MDAgMjBweC8zMnB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtsZXR0ZXItc3BhY2luZzpub3JtYWx9Lm1hdC1leHBhbnNpb24tcGFuZWwtaGVhZGVyW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7Zm9udC1zaXplOjE1cHg7Zm9udC13ZWlnaHQ6NDAwfS5tYXQtZXhwYW5zaW9uLXBhbmVsLWNvbnRlbnRbX25nY29udGVudC0lQ09NUCVde2ZvbnQ6NDAwIDE0cHgvMjBweCBSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7bGV0dGVyLXNwYWNpbmc6bm9ybWFsfS5tYXQtZm9ybS1maWVsZFtfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOmluaGVyaXQ7Zm9udC13ZWlnaHQ6NDAwO2xpbmUtaGVpZ2h0OjEuMTI1O2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtsZXR0ZXItc3BhY2luZzpub3JtYWx9Lm1hdC1mb3JtLWZpZWxkLXdyYXBwZXJbX25nY29udGVudC0lQ09NUCVde3BhZGRpbmctYm90dG9tOjEuMzQzNzVlbX0ubWF0LWZvcm0tZmllbGQtcHJlZml4W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaWNvbltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtZm9ybS1maWVsZC1zdWZmaXhbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pY29uW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MTUwJTtsaW5lLWhlaWdodDoxLjEyNX0ubWF0LWZvcm0tZmllbGQtcHJlZml4W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaWNvbi1idXR0b25bX25nY29udGVudC0lQ09NUCVdLCAubWF0LWZvcm0tZmllbGQtc3VmZml4W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaWNvbi1idXR0b25bX25nY29udGVudC0lQ09NUCVde2hlaWdodDoxLjVlbTt3aWR0aDoxLjVlbX0ubWF0LWZvcm0tZmllbGQtcHJlZml4W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaWNvbi1idXR0b25bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pY29uW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1mb3JtLWZpZWxkLXN1ZmZpeFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWljb24tYnV0dG9uW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaWNvbltfbmdjb250ZW50LSVDT01QJV17aGVpZ2h0OjEuMTI1ZW07bGluZS1oZWlnaHQ6MS4xMjV9Lm1hdC1mb3JtLWZpZWxkLWluZml4W19uZ2NvbnRlbnQtJUNPTVAlXXtwYWRkaW5nOi41ZW0gMDtib3JkZXItdG9wOi44NDM3NWVtIHNvbGlkIHRyYW5zcGFyZW50fS5tYXQtZm9ybS1maWVsZC1jYW4tZmxvYXQubWF0LWZvcm0tZmllbGQtc2hvdWxkLWZsb2F0W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtZm9ybS1maWVsZC1jYW4tZmxvYXRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pbnB1dC1zZXJ2ZXJbX25nY29udGVudC0lQ09NUCVdOmZvY3VzICsgLm1hdC1mb3JtLWZpZWxkLWxhYmVsLXdyYXBwZXJbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXt0cmFuc2Zvcm06dHJhbnNsYXRlWSgtMS4zNDM3NWVtKSBzY2FsZSgwLjc1KTt3aWR0aDoxMzMuMzMzMzMzMzMzMyV9Lm1hdC1mb3JtLWZpZWxkLWNhbi1mbG9hdFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWlucHV0LXNlcnZlcltsYWJlbF1bX25nY29udGVudC0lQ09NUCVdOm5vdCg6bGFiZWwtc2hvd24pICsgLm1hdC1mb3JtLWZpZWxkLWxhYmVsLXdyYXBwZXJbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXt0cmFuc2Zvcm06dHJhbnNsYXRlWSgtMS4zNDM3NGVtKSBzY2FsZSgwLjc1KTt3aWR0aDoxMzMuMzMzMzQzMzMzMyV9Lm1hdC1mb3JtLWZpZWxkLWxhYmVsLXdyYXBwZXJbX25nY29udGVudC0lQ09NUCVde3RvcDotMC44NDM3NWVtO3BhZGRpbmctdG9wOi44NDM3NWVtfS5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17dG9wOjEuMzQzNzVlbX0ubWF0LWZvcm0tZmllbGQtdW5kZXJsaW5lW19uZ2NvbnRlbnQtJUNPTVAlXXtib3R0b206MS4zNDM3NWVtfS5tYXQtZm9ybS1maWVsZC1zdWJzY3JpcHQtd3JhcHBlcltfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjc1JTttYXJnaW4tdG9wOi42NjY2NjY2NjY3ZW07dG9wOmNhbGMoMTAwJSAtIDEuNzkxNjY2NjY2N2VtKX0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1sZWdhY3lbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLXdyYXBwZXJbX25nY29udGVudC0lQ09NUCVde3BhZGRpbmctYm90dG9tOjEuMjVlbX0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1sZWdhY3lbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWluZml4W19uZ2NvbnRlbnQtJUNPTVAlXXtwYWRkaW5nOi40Mzc1ZW0gMH0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1sZWdhY3kubWF0LWZvcm0tZmllbGQtY2FuLWZsb2F0Lm1hdC1mb3JtLWZpZWxkLXNob3VsZC1mbG9hdFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1sZWdhY3kubWF0LWZvcm0tZmllbGQtY2FuLWZsb2F0W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaW5wdXQtc2VydmVyW19uZ2NvbnRlbnQtJUNPTVAlXTpmb2N1cyArIC5tYXQtZm9ybS1maWVsZC1sYWJlbC13cmFwcGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17dHJhbnNmb3JtOnRyYW5zbGF0ZVkoLTEuMjgxMjVlbSkgc2NhbGUoMC43NSkgcGVyc3BlY3RpdmUoMTAwcHgpIHRyYW5zbGF0ZVooMC4wMDFweCk7LW1zLXRyYW5zZm9ybTp0cmFuc2xhdGVZKC0xLjI4MTI1ZW0pIHNjYWxlKDAuNzUpO3dpZHRoOjEzMy4zMzMzMzMzMzMzJX0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1sZWdhY3kubWF0LWZvcm0tZmllbGQtY2FuLWZsb2F0W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1hdXRvZmlsbC1jb250cm9sW19uZ2NvbnRlbnQtJUNPTVAlXTotd2Via2l0LWF1dG9maWxsICsgLm1hdC1mb3JtLWZpZWxkLWxhYmVsLXdyYXBwZXJbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXt0cmFuc2Zvcm06dHJhbnNsYXRlWSgtMS4yODEyNWVtKSBzY2FsZSgwLjc1KSBwZXJzcGVjdGl2ZSgxMDBweCkgdHJhbnNsYXRlWigwLjAwMTAxcHgpOy1tcy10cmFuc2Zvcm06dHJhbnNsYXRlWSgtMS4yODEyNGVtKSBzY2FsZSgwLjc1KTt3aWR0aDoxMzMuMzMzMzQzMzMzMyV9Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtbGVnYWN5Lm1hdC1mb3JtLWZpZWxkLWNhbi1mbG9hdFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWlucHV0LXNlcnZlcltsYWJlbF1bX25nY29udGVudC0lQ09NUCVdOm5vdCg6bGFiZWwtc2hvd24pICsgLm1hdC1mb3JtLWZpZWxkLWxhYmVsLXdyYXBwZXJbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXt0cmFuc2Zvcm06dHJhbnNsYXRlWSgtMS4yODEyNWVtKSBzY2FsZSgwLjc1KSBwZXJzcGVjdGl2ZSgxMDBweCkgdHJhbnNsYXRlWigwLjAwMTAycHgpOy1tcy10cmFuc2Zvcm06dHJhbnNsYXRlWSgtMS4yODEyM2VtKSBzY2FsZSgwLjc1KTt3aWR0aDoxMzMuMzMzMzUzMzMzMyV9Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtbGVnYWN5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17dG9wOjEuMjgxMjVlbX0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1sZWdhY3lbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLXVuZGVybGluZVtfbmdjb250ZW50LSVDT01QJV17Ym90dG9tOjEuMjVlbX0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1sZWdhY3lbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLXN1YnNjcmlwdC13cmFwcGVyW19uZ2NvbnRlbnQtJUNPTVAlXXttYXJnaW4tdG9wOi41NDE2NjY2NjY3ZW07dG9wOmNhbGMoMTAwJSAtIDEuNjY2NjY2NjY2N2VtKX1AbWVkaWEgcHJpbnR7Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtbGVnYWN5Lm1hdC1mb3JtLWZpZWxkLWNhbi1mbG9hdC5tYXQtZm9ybS1maWVsZC1zaG91bGQtZmxvYXRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtbGVnYWN5Lm1hdC1mb3JtLWZpZWxkLWNhbi1mbG9hdFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWlucHV0LXNlcnZlcltfbmdjb250ZW50LSVDT01QJV06Zm9jdXMgKyAubWF0LWZvcm0tZmllbGQtbGFiZWwtd3JhcHBlcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVde3RyYW5zZm9ybTp0cmFuc2xhdGVZKC0xLjI4MTIyZW0pIHNjYWxlKDAuNzUpfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWxlZ2FjeS5tYXQtZm9ybS1maWVsZC1jYW4tZmxvYXRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWF1dG9maWxsLWNvbnRyb2xbX25nY29udGVudC0lQ09NUCVdOi13ZWJraXQtYXV0b2ZpbGwgKyAubWF0LWZvcm0tZmllbGQtbGFiZWwtd3JhcHBlcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVde3RyYW5zZm9ybTp0cmFuc2xhdGVZKC0xLjI4MTIxZW0pIHNjYWxlKDAuNzUpfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWxlZ2FjeS5tYXQtZm9ybS1maWVsZC1jYW4tZmxvYXRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pbnB1dC1zZXJ2ZXJbbGFiZWxdW19uZ2NvbnRlbnQtJUNPTVAlXTpub3QoOmxhYmVsLXNob3duKSArIC5tYXQtZm9ybS1maWVsZC1sYWJlbC13cmFwcGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17dHJhbnNmb3JtOnRyYW5zbGF0ZVkoLTEuMjgxMmVtKSBzY2FsZSgwLjc1KX19Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtZmlsbFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtaW5maXhbX25nY29udGVudC0lQ09NUCVde3BhZGRpbmc6LjI1ZW0gMCAuNzVlbSAwfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWZpbGxbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXt0b3A6MS4wOTM3NWVtO21hcmdpbi10b3A6LTAuNWVtfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWZpbGwubWF0LWZvcm0tZmllbGQtY2FuLWZsb2F0Lm1hdC1mb3JtLWZpZWxkLXNob3VsZC1mbG9hdFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1maWxsLm1hdC1mb3JtLWZpZWxkLWNhbi1mbG9hdFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWlucHV0LXNlcnZlcltfbmdjb250ZW50LSVDT01QJV06Zm9jdXMgKyAubWF0LWZvcm0tZmllbGQtbGFiZWwtd3JhcHBlcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVde3RyYW5zZm9ybTp0cmFuc2xhdGVZKC0wLjU5Mzc1ZW0pIHNjYWxlKDAuNzUpO3dpZHRoOjEzMy4zMzMzMzMzMzMzJX0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1maWxsLm1hdC1mb3JtLWZpZWxkLWNhbi1mbG9hdFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWlucHV0LXNlcnZlcltsYWJlbF1bX25nY29udGVudC0lQ09NUCVdOm5vdCg6bGFiZWwtc2hvd24pICsgLm1hdC1mb3JtLWZpZWxkLWxhYmVsLXdyYXBwZXJbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXt0cmFuc2Zvcm06dHJhbnNsYXRlWSgtMC41OTM3NGVtKSBzY2FsZSgwLjc1KTt3aWR0aDoxMzMuMzMzMzQzMzMzMyV9Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2Utb3V0bGluZVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtaW5maXhbX25nY29udGVudC0lQ09NUCVde3BhZGRpbmc6MWVtIDAgMWVtIDB9Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2Utb3V0bGluZVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVde3RvcDoxLjg0Mzc1ZW07bWFyZ2luLXRvcDotMC4yNWVtfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLW91dGxpbmUubWF0LWZvcm0tZmllbGQtY2FuLWZsb2F0Lm1hdC1mb3JtLWZpZWxkLXNob3VsZC1mbG9hdFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1vdXRsaW5lLm1hdC1mb3JtLWZpZWxkLWNhbi1mbG9hdFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWlucHV0LXNlcnZlcltfbmdjb250ZW50LSVDT01QJV06Zm9jdXMgKyAubWF0LWZvcm0tZmllbGQtbGFiZWwtd3JhcHBlcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVde3RyYW5zZm9ybTp0cmFuc2xhdGVZKC0xLjU5Mzc1ZW0pIHNjYWxlKDAuNzUpO3dpZHRoOjEzMy4zMzMzMzMzMzMzJX0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1vdXRsaW5lLm1hdC1mb3JtLWZpZWxkLWNhbi1mbG9hdFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWlucHV0LXNlcnZlcltsYWJlbF1bX25nY29udGVudC0lQ09NUCVdOm5vdCg6bGFiZWwtc2hvd24pICsgLm1hdC1mb3JtLWZpZWxkLWxhYmVsLXdyYXBwZXJbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXt0cmFuc2Zvcm06dHJhbnNsYXRlWSgtMS41OTM3NGVtKSBzY2FsZSgwLjc1KTt3aWR0aDoxMzMuMzMzMzQzMzMzMyV9Lm1hdC1ncmlkLXRpbGUtaGVhZGVyW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1ncmlkLXRpbGUtZm9vdGVyW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MTRweH0ubWF0LWdyaWQtdGlsZS1oZWFkZXJbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saW5lW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1ncmlkLXRpbGUtZm9vdGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGluZVtfbmdjb250ZW50LSVDT01QJV17d2hpdGUtc3BhY2U6bm93cmFwO292ZXJmbG93OmhpZGRlbjt0ZXh0LW92ZXJmbG93OmVsbGlwc2lzO2Rpc3BsYXk6YmxvY2s7Ym94LXNpemluZzpib3JkZXItYm94fS5tYXQtZ3JpZC10aWxlLWhlYWRlcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpbmVbX25nY29udGVudC0lQ09NUCVdOm50aC1jaGlsZChuKzIpLCAubWF0LWdyaWQtdGlsZS1mb290ZXJbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saW5lW19uZ2NvbnRlbnQtJUNPTVAlXTpudGgtY2hpbGQobisyKXtmb250LXNpemU6MTJweH1pbnB1dC5tYXQtaW5wdXQtZWxlbWVudFtfbmdjb250ZW50LSVDT01QJV17bWFyZ2luLXRvcDotMC4wNjI1ZW19Lm1hdC1tZW51LWl0ZW1bX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtmb250LXNpemU6MTRweDtmb250LXdlaWdodDo0MDB9Lm1hdC1wYWdpbmF0b3JbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXBhZ2luYXRvci1wYWdlLXNpemVbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1zZWxlY3QtdHJpZ2dlcltfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2ZvbnQtc2l6ZToxMnB4fS5tYXQtcmFkaW8tYnV0dG9uW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWZ9Lm1hdC1zZWxlY3RbX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZn0ubWF0LXNlbGVjdC10cmlnZ2VyW19uZ2NvbnRlbnQtJUNPTVAlXXtoZWlnaHQ6MS4xMjVlbX0ubWF0LXNsaWRlLXRvZ2dsZS1jb250ZW50W19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWZ9Lm1hdC1zbGlkZXItdGh1bWItbGFiZWwtdGV4dFtfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2ZvbnQtc2l6ZToxMnB4O2ZvbnQtd2VpZ2h0OjUwMH0ubWF0LXN0ZXBwZXItdmVydGljYWxbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXN0ZXBwZXItaG9yaXpvbnRhbFtfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmfS5tYXQtc3RlcC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjE0cHg7Zm9udC13ZWlnaHQ6NDAwfS5tYXQtc3RlcC1zdWItbGFiZWwtZXJyb3JbX25nY29udGVudC0lQ09NUCVde2ZvbnQtd2VpZ2h0Om5vcm1hbH0ubWF0LXN0ZXAtbGFiZWwtZXJyb3JbX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToxNHB4fS5tYXQtc3RlcC1sYWJlbC1zZWxlY3RlZFtfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjE0cHg7Zm9udC13ZWlnaHQ6NTAwfS5tYXQtdGFiLWdyb3VwW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWZ9Lm1hdC10YWItbGFiZWxbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXRhYi1saW5rW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7Zm9udC1zaXplOjE0cHg7Zm9udC13ZWlnaHQ6NTAwfS5tYXQtdG9vbGJhcltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdG9vbGJhcltfbmdjb250ZW50LSVDT01QJV0gICBoMVtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdG9vbGJhcltfbmdjb250ZW50LSVDT01QJV0gICBoMltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdG9vbGJhcltfbmdjb250ZW50LSVDT01QJV0gICBoM1tfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdG9vbGJhcltfbmdjb250ZW50LSVDT01QJV0gICBoNFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdG9vbGJhcltfbmdjb250ZW50LSVDT01QJV0gICBoNVtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdG9vbGJhcltfbmdjb250ZW50LSVDT01QJV0gICBoNltfbmdjb250ZW50LSVDT01QJV17Zm9udDo1MDAgMjBweC8zMnB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtsZXR0ZXItc3BhY2luZzpub3JtYWw7bWFyZ2luOjB9Lm1hdC10b29sdGlwW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7Zm9udC1zaXplOjEwcHg7cGFkZGluZy10b3A6NnB4O3BhZGRpbmctYm90dG9tOjZweH0ubWF0LXRvb2x0aXAtaGFuZHNldFtfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjE0cHg7cGFkZGluZy10b3A6OHB4O3BhZGRpbmctYm90dG9tOjhweH0ubWF0LWxpc3QtaXRlbVtfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmfS5tYXQtbGlzdC1vcHRpb25bX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZn0ubWF0LWxpc3QtYmFzZVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpc3QtaXRlbVtfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjE2cHh9Lm1hdC1saXN0LWJhc2VbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saXN0LWl0ZW1bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saW5lW19uZ2NvbnRlbnQtJUNPTVAlXXt3aGl0ZS1zcGFjZTpub3dyYXA7b3ZlcmZsb3c6aGlkZGVuO3RleHQtb3ZlcmZsb3c6ZWxsaXBzaXM7ZGlzcGxheTpibG9jaztib3gtc2l6aW5nOmJvcmRlci1ib3h9Lm1hdC1saXN0LWJhc2VbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saXN0LWl0ZW1bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saW5lW19uZ2NvbnRlbnQtJUNPTVAlXTpudGgtY2hpbGQobisyKXtmb250LXNpemU6MTRweH0ubWF0LWxpc3QtYmFzZVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpc3Qtb3B0aW9uW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MTZweH0ubWF0LWxpc3QtYmFzZVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpc3Qtb3B0aW9uW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGluZVtfbmdjb250ZW50LSVDT01QJV17d2hpdGUtc3BhY2U6bm93cmFwO292ZXJmbG93OmhpZGRlbjt0ZXh0LW92ZXJmbG93OmVsbGlwc2lzO2Rpc3BsYXk6YmxvY2s7Ym94LXNpemluZzpib3JkZXItYm94fS5tYXQtbGlzdC1iYXNlW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGlzdC1vcHRpb25bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saW5lW19uZ2NvbnRlbnQtJUNPTVAlXTpudGgtY2hpbGQobisyKXtmb250LXNpemU6MTRweH0ubWF0LWxpc3QtYmFzZVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXN1YmhlYWRlcltfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2ZvbnQtc2l6ZToxNHB4O2ZvbnQtd2VpZ2h0OjUwMH0ubWF0LWxpc3QtYmFzZVtkZW5zZV1bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saXN0LWl0ZW1bX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToxMnB4fS5tYXQtbGlzdC1iYXNlW2RlbnNlXVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpc3QtaXRlbVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpbmVbX25nY29udGVudC0lQ09NUCVde3doaXRlLXNwYWNlOm5vd3JhcDtvdmVyZmxvdzpoaWRkZW47dGV4dC1vdmVyZmxvdzplbGxpcHNpcztkaXNwbGF5OmJsb2NrO2JveC1zaXppbmc6Ym9yZGVyLWJveH0ubWF0LWxpc3QtYmFzZVtkZW5zZV1bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saXN0LWl0ZW1bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saW5lW19uZ2NvbnRlbnQtJUNPTVAlXTpudGgtY2hpbGQobisyKXtmb250LXNpemU6MTJweH0ubWF0LWxpc3QtYmFzZVtkZW5zZV1bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saXN0LW9wdGlvbltfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjEycHh9Lm1hdC1saXN0LWJhc2VbZGVuc2VdW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGlzdC1vcHRpb25bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saW5lW19uZ2NvbnRlbnQtJUNPTVAlXXt3aGl0ZS1zcGFjZTpub3dyYXA7b3ZlcmZsb3c6aGlkZGVuO3RleHQtb3ZlcmZsb3c6ZWxsaXBzaXM7ZGlzcGxheTpibG9jaztib3gtc2l6aW5nOmJvcmRlci1ib3h9Lm1hdC1saXN0LWJhc2VbZGVuc2VdW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGlzdC1vcHRpb25bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saW5lW19uZ2NvbnRlbnQtJUNPTVAlXTpudGgtY2hpbGQobisyKXtmb250LXNpemU6MTJweH0ubWF0LWxpc3QtYmFzZVtkZW5zZV1bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1zdWJoZWFkZXJbX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtmb250LXNpemU6MTJweDtmb250LXdlaWdodDo1MDB9Lm1hdC1vcHRpb25bX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtmb250LXNpemU6MTZweH0ubWF0LW9wdGdyb3VwLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250OjUwMCAxNHB4LzI0cHggUm9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2xldHRlci1zcGFjaW5nOm5vcm1hbH0ubWF0LXNpbXBsZS1zbmFja2Jhcltfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2ZvbnQtc2l6ZToxNHB4fS5tYXQtc2ltcGxlLXNuYWNrYmFyLWFjdGlvbltfbmdjb250ZW50LSVDT01QJV17bGluZS1oZWlnaHQ6MTtmb250LWZhbWlseTppbmhlcml0O2ZvbnQtc2l6ZTppbmhlcml0O2ZvbnQtd2VpZ2h0OjUwMH0ubWF0LXRyZWVbX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZn0ubWF0LXRyZWUtbm9kZVtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtbmVzdGVkLXRyZWUtbm9kZVtfbmdjb250ZW50LSVDT01QJV17Zm9udC13ZWlnaHQ6NDAwO2ZvbnQtc2l6ZToxNHB4fS5tYXQtcmlwcGxlW19uZ2NvbnRlbnQtJUNPTVAlXXtvdmVyZmxvdzpoaWRkZW47cG9zaXRpb246cmVsYXRpdmV9Lm1hdC1yaXBwbGVbX25nY29udGVudC0lQ09NUCVdOm5vdCg6ZW1wdHkpe3RyYW5zZm9ybTp0cmFuc2xhdGVaKDApfS5tYXQtcmlwcGxlLm1hdC1yaXBwbGUtdW5ib3VuZGVkW19uZ2NvbnRlbnQtJUNPTVAlXXtvdmVyZmxvdzp2aXNpYmxlfS5tYXQtcmlwcGxlLWVsZW1lbnRbX25nY29udGVudC0lQ09NUCVde3Bvc2l0aW9uOmFic29sdXRlO2JvcmRlci1yYWRpdXM6NTAlO3BvaW50ZXItZXZlbnRzOm5vbmU7dHJhbnNpdGlvbjpvcGFjaXR5LHRyYW5zZm9ybSAwbXMgY3ViaWMtYmV6aWVyKDAsIDAsIDAuMiwgMSk7dHJhbnNmb3JtOnNjYWxlKDApfS5jZGstaGlnaC1jb250cmFzdC1hY3RpdmVbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1yaXBwbGUtZWxlbWVudFtfbmdjb250ZW50LSVDT01QJV17ZGlzcGxheTpub25lfS5jZGstdmlzdWFsbHktaGlkZGVuW19uZ2NvbnRlbnQtJUNPTVAlXXtib3JkZXI6MDtjbGlwOnJlY3QoMCAwIDAgMCk7aGVpZ2h0OjFweDttYXJnaW46LTFweDtvdmVyZmxvdzpoaWRkZW47cGFkZGluZzowO3Bvc2l0aW9uOmFic29sdXRlO3dpZHRoOjFweDtvdXRsaW5lOjA7LXdlYmtpdC1hcHBlYXJhbmNlOm5vbmU7LW1vei1hcHBlYXJhbmNlOm5vbmV9LmNkay1vdmVybGF5LWNvbnRhaW5lcltfbmdjb250ZW50LSVDT01QJV0sIC5jZGstZ2xvYmFsLW92ZXJsYXktd3JhcHBlcltfbmdjb250ZW50LSVDT01QJV17cG9pbnRlci1ldmVudHM6bm9uZTt0b3A6MDtsZWZ0OjA7aGVpZ2h0OjEwMCU7d2lkdGg6MTAwJX0uY2RrLW92ZXJsYXktY29udGFpbmVyW19uZ2NvbnRlbnQtJUNPTVAlXXtwb3NpdGlvbjpmaXhlZDt6LWluZGV4OjEwMDB9LmNkay1vdmVybGF5LWNvbnRhaW5lcltfbmdjb250ZW50LSVDT01QJV06ZW1wdHl7ZGlzcGxheTpub25lfS5jZGstZ2xvYmFsLW92ZXJsYXktd3JhcHBlcltfbmdjb250ZW50LSVDT01QJV17ZGlzcGxheTpmbGV4O3Bvc2l0aW9uOmFic29sdXRlO3otaW5kZXg6MTAwMH0uY2RrLW92ZXJsYXktcGFuZVtfbmdjb250ZW50LSVDT01QJV17cG9zaXRpb246YWJzb2x1dGU7cG9pbnRlci1ldmVudHM6YXV0bztib3gtc2l6aW5nOmJvcmRlci1ib3g7ei1pbmRleDoxMDAwO2Rpc3BsYXk6ZmxleDttYXgtd2lkdGg6MTAwJTttYXgtaGVpZ2h0OjEwMCV9LmNkay1vdmVybGF5LWJhY2tkcm9wW19uZ2NvbnRlbnQtJUNPTVAlXXtwb3NpdGlvbjphYnNvbHV0ZTt0b3A6MDtib3R0b206MDtsZWZ0OjA7cmlnaHQ6MDt6LWluZGV4OjEwMDA7cG9pbnRlci1ldmVudHM6YXV0bzstd2Via2l0LXRhcC1oaWdobGlnaHQtY29sb3I6dHJhbnNwYXJlbnQ7dHJhbnNpdGlvbjpvcGFjaXR5IDQwMG1zIGN1YmljLWJlemllcigwLjI1LCAwLjgsIDAuMjUsIDEpO29wYWNpdHk6MH0uY2RrLW92ZXJsYXktYmFja2Ryb3AuY2RrLW92ZXJsYXktYmFja2Ryb3Atc2hvd2luZ1tfbmdjb250ZW50LSVDT01QJV17b3BhY2l0eToxfUBtZWRpYSBzY3JlZW4gYW5kICgtbXMtaGlnaC1jb250cmFzdDogYWN0aXZlKXsuY2RrLW92ZXJsYXktYmFja2Ryb3AuY2RrLW92ZXJsYXktYmFja2Ryb3Atc2hvd2luZ1tfbmdjb250ZW50LSVDT01QJV17b3BhY2l0eTouNn19LmNkay1vdmVybGF5LWRhcmstYmFja2Ryb3BbX25nY29udGVudC0lQ09NUCVde2JhY2tncm91bmQ6cmdiYSgwLDAsMCwuMzIpfS5jZGstb3ZlcmxheS10cmFuc3BhcmVudC1iYWNrZHJvcFtfbmdjb250ZW50LSVDT01QJV0sIC5jZGstb3ZlcmxheS10cmFuc3BhcmVudC1iYWNrZHJvcC5jZGstb3ZlcmxheS1iYWNrZHJvcC1zaG93aW5nW19uZ2NvbnRlbnQtJUNPTVAlXXtvcGFjaXR5OjB9LmNkay1vdmVybGF5LWNvbm5lY3RlZC1wb3NpdGlvbi1ib3VuZGluZy1ib3hbX25nY29udGVudC0lQ09NUCVde3Bvc2l0aW9uOmFic29sdXRlO3otaW5kZXg6MTAwMDtkaXNwbGF5OmZsZXg7ZmxleC1kaXJlY3Rpb246Y29sdW1uO21pbi13aWR0aDoxcHg7bWluLWhlaWdodDoxcHh9LmNkay1nbG9iYWwtc2Nyb2xsYmxvY2tbX25nY29udGVudC0lQ09NUCVde3Bvc2l0aW9uOmZpeGVkO3dpZHRoOjEwMCU7b3ZlcmZsb3cteTpzY3JvbGx9QGtleWZyYW1lcyBjZGstdGV4dC1maWVsZC1hdXRvZmlsbC1zdGFydHt9QGtleWZyYW1lcyBjZGstdGV4dC1maWVsZC1hdXRvZmlsbC1lbmR7fS5jZGstdGV4dC1maWVsZC1hdXRvZmlsbC1tb25pdG9yZWRbX25nY29udGVudC0lQ09NUCVdOi13ZWJraXQtYXV0b2ZpbGx7YW5pbWF0aW9uOmNkay10ZXh0LWZpZWxkLWF1dG9maWxsLXN0YXJ0IDBzIDFtc30uY2RrLXRleHQtZmllbGQtYXV0b2ZpbGwtbW9uaXRvcmVkW19uZ2NvbnRlbnQtJUNPTVAlXTpub3QoOi13ZWJraXQtYXV0b2ZpbGwpe2FuaW1hdGlvbjpjZGstdGV4dC1maWVsZC1hdXRvZmlsbC1lbmQgMHMgMW1zfXRleHRhcmVhLmNkay10ZXh0YXJlYS1hdXRvc2l6ZVtfbmdjb250ZW50LSVDT01QJV17cmVzaXplOm5vbmV9dGV4dGFyZWEuY2RrLXRleHRhcmVhLWF1dG9zaXplLW1lYXN1cmluZ1tfbmdjb250ZW50LSVDT01QJV17cGFkZGluZzoycHggMCAhaW1wb3J0YW50O2JveC1zaXppbmc6Y29udGVudC1ib3ggIWltcG9ydGFudDtoZWlnaHQ6YXV0byAhaW1wb3J0YW50O292ZXJmbG93OmhpZGRlbiAhaW1wb3J0YW50fXRleHRhcmVhLmNkay10ZXh0YXJlYS1hdXRvc2l6ZS1tZWFzdXJpbmctZmlyZWZveFtfbmdjb250ZW50LSVDT01QJV17cGFkZGluZzoycHggMCAhaW1wb3J0YW50O2JveC1zaXppbmc6Y29udGVudC1ib3ggIWltcG9ydGFudDtoZWlnaHQ6MCAhaW1wb3J0YW50fS5tYXQtZm9jdXMtaW5kaWNhdG9yW19uZ2NvbnRlbnQtJUNPTVAlXXtwb3NpdGlvbjpyZWxhdGl2ZX0ubWF0LW1kYy1mb2N1cy1pbmRpY2F0b3JbX25nY29udGVudC0lQ09NUCVde3Bvc2l0aW9uOnJlbGF0aXZlfS5tYXQtcmlwcGxlLWVsZW1lbnRbX25nY29udGVudC0lQ09NUCVde2JhY2tncm91bmQtY29sb3I6cmdiYSgwLDAsMCwuMSl9Lm1hdC1vcHRpb25bX25nY29udGVudC0lQ09NUCVde2NvbG9yOiMyMTIxMjF9Lm1hdC1vcHRpb25bX25nY29udGVudC0lQ09NUCVdOmhvdmVyOm5vdCgubWF0LW9wdGlvbi1kaXNhYmxlZCksIC5tYXQtb3B0aW9uW19uZ2NvbnRlbnQtJUNPTVAlXTpmb2N1czpub3QoLm1hdC1vcHRpb24tZGlzYWJsZWQpe2JhY2tncm91bmQ6cmdiYSgwLDAsMCwuMDQpfS5tYXQtb3B0aW9uLm1hdC1zZWxlY3RlZFtfbmdjb250ZW50LSVDT01QJV06bm90KC5tYXQtb3B0aW9uLW11bHRpcGxlKTpub3QoLm1hdC1vcHRpb24tZGlzYWJsZWQpe2JhY2tncm91bmQ6cmdiYSgwLDAsMCwuMDQpfS5tYXQtb3B0aW9uLm1hdC1hY3RpdmVbX25nY29udGVudC0lQ09NUCVde2JhY2tncm91bmQ6cmdiYSgwLDAsMCwuMDQpO2NvbG9yOiMyMTIxMjF9Lm1hdC1vcHRpb24ubWF0LW9wdGlvbi1kaXNhYmxlZFtfbmdjb250ZW50LSVDT01QJV17Y29sb3I6cmdiYSgwLDAsMCwuMzgpfS5tYXQtcHJpbWFyeVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LW9wdGlvbi5tYXQtc2VsZWN0ZWRbX25nY29udGVudC0lQ09NUCVdOm5vdCgubWF0LW9wdGlvbi1kaXNhYmxlZCl7Y29sb3I6I2Y1N2MwMH0ubWF0LWFjY2VudFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LW9wdGlvbi5tYXQtc2VsZWN0ZWRbX25nY29udGVudC0lQ09NUCVdOm5vdCgubWF0LW9wdGlvbi1kaXNhYmxlZCl7Y29sb3I6I2ZmOTgwMH0ubWF0LXdhcm5bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1vcHRpb24ubWF0LXNlbGVjdGVkW19uZ2NvbnRlbnQtJUNPTVAlXTpub3QoLm1hdC1vcHRpb24tZGlzYWJsZWQpe2NvbG9yOiNmNDQzMzZ9Lm1hdC1vcHRncm91cC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17Y29sb3I6IzYxNjE2MX0ubWF0LW9wdGdyb3VwLWRpc2FibGVkW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtb3B0Z3JvdXAtbGFiZWxbX25nY29udGVudC0lQ09NUCVde2NvbG9yOnJnYmEoMCwwLDAsLjM4KX0ubWF0LXBzZXVkby1jaGVja2JveFtfbmdjb250ZW50LSVDT01QJV17Y29sb3I6IzYxNjE2MX0ubWF0LXBzZXVkby1jaGVja2JveFtfbmdjb250ZW50LSVDT01QJV06OmFmdGVye2NvbG9yOiNmYWZhZmF9Lm1hdC1wc2V1ZG8tY2hlY2tib3gtZGlzYWJsZWRbX25nY29udGVudC0lQ09NUCVde2NvbG9yOiNiMGIwYjB9Lm1hdC1wcmltYXJ5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtcHNldWRvLWNoZWNrYm94LWNoZWNrZWRbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXByaW1hcnlbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1wc2V1ZG8tY2hlY2tib3gtaW5kZXRlcm1pbmF0ZVtfbmdjb250ZW50LSVDT01QJV17YmFja2dyb3VuZDojZjU3YzAwfS5tYXQtcHNldWRvLWNoZWNrYm94LWNoZWNrZWRbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXBzZXVkby1jaGVja2JveC1pbmRldGVybWluYXRlW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1hY2NlbnRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1wc2V1ZG8tY2hlY2tib3gtY2hlY2tlZFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtYWNjZW50W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtcHNldWRvLWNoZWNrYm94LWluZGV0ZXJtaW5hdGVbX25nY29udGVudC0lQ09NUCVde2JhY2tncm91bmQ6I2ZmOTgwMH0ubWF0LXdhcm5bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1wc2V1ZG8tY2hlY2tib3gtY2hlY2tlZFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtd2Fybltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXBzZXVkby1jaGVja2JveC1pbmRldGVybWluYXRlW19uZ2NvbnRlbnQtJUNPTVAlXXtiYWNrZ3JvdW5kOiNmNDQzMzZ9Lm1hdC1wc2V1ZG8tY2hlY2tib3gtY2hlY2tlZC5tYXQtcHNldWRvLWNoZWNrYm94LWRpc2FibGVkW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1wc2V1ZG8tY2hlY2tib3gtaW5kZXRlcm1pbmF0ZS5tYXQtcHNldWRvLWNoZWNrYm94LWRpc2FibGVkW19uZ2NvbnRlbnQtJUNPTVAlXXtiYWNrZ3JvdW5kOiNiMGIwYjB9Lm1hdC1hcHAtYmFja2dyb3VuZFtfbmdjb250ZW50LSVDT01QJV17YmFja2dyb3VuZC1jb2xvcjojZmFmYWZhO2NvbG9yOiMyMTIxMjF9Lm1hdC1lbGV2YXRpb24tejBbX25nY29udGVudC0lQ09NUCVde2JveC1zaGFkb3c6MHB4IDBweCAwcHggMHB4IHJnYmEoMCwgMCwgMCwgMC4yKSwwcHggMHB4IDBweCAwcHggcmdiYSgwLCAwLCAwLCAwLjE0KSwwcHggMHB4IDBweCAwcHggcmdiYSgwLCAwLCAwLCAwLjEyKX0ubWF0LWVsZXZhdGlvbi16MVtfbmdjb250ZW50LSVDT01QJV17Ym94LXNoYWRvdzowcHggMnB4IDFweCAtMXB4IHJnYmEoMCwgMCwgMCwgMC4yKSwwcHggMXB4IDFweCAwcHggcmdiYSgwLCAwLCAwLCAwLjE0KSwwcHggMXB4IDNweCAwcHggcmdiYSgwLCAwLCAwLCAwLjEyKX0ubWF0LWVsZXZhdGlvbi16Mltfbmdjb250ZW50LSVDT01QJV17Ym94LXNoYWRvdzowcHggM3B4IDFweCAtMnB4IHJnYmEoMCwgMCwgMCwgMC4yKSwwcHggMnB4IDJweCAwcHggcmdiYSgwLCAwLCAwLCAwLjE0KSwwcHggMXB4IDVweCAwcHggcmdiYSgwLCAwLCAwLCAwLjEyKX0ubWF0LWVsZXZhdGlvbi16M1tfbmdjb250ZW50LSVDT01QJV17Ym94LXNoYWRvdzowcHggM3B4IDNweCAtMnB4IHJnYmEoMCwgMCwgMCwgMC4yKSwwcHggM3B4IDRweCAwcHggcmdiYSgwLCAwLCAwLCAwLjE0KSwwcHggMXB4IDhweCAwcHggcmdiYSgwLCAwLCAwLCAwLjEyKX0ubWF0LWVsZXZhdGlvbi16NFtfbmdjb250ZW50LSVDT01QJV17Ym94LXNoYWRvdzowcHggMnB4IDRweCAtMXB4IHJnYmEoMCwgMCwgMCwgMC4yKSwwcHggNHB4IDVweCAwcHggcmdiYSgwLCAwLCAwLCAwLjE0KSwwcHggMXB4IDEwcHggMHB4IHJnYmEoMCwgMCwgMCwgMC4xMil9Lm1hdC1lbGV2YXRpb24tejVbX25nY29udGVudC0lQ09NUCVde2JveC1zaGFkb3c6MHB4IDNweCA1cHggLTFweCByZ2JhKDAsIDAsIDAsIDAuMiksMHB4IDVweCA4cHggMHB4IHJnYmEoMCwgMCwgMCwgMC4xNCksMHB4IDFweCAxNHB4IDBweCByZ2JhKDAsIDAsIDAsIDAuMTIpfS5tYXQtZWxldmF0aW9uLXo2W19uZ2NvbnRlbnQtJUNPTVAlXXtib3gtc2hhZG93OjBweCAzcHggNXB4IC0xcHggcmdiYSgwLCAwLCAwLCAwLjIpLDBweCA2cHggMTBweCAwcHggcmdiYSgwLCAwLCAwLCAwLjE0KSwwcHggMXB4IDE4cHggMHB4IHJnYmEoMCwgMCwgMCwgMC4xMil9Lm1hdC1lbGV2YXRpb24tejdbX25nY29udGVudC0lQ09NUCVde2JveC1zaGFkb3c6MHB4IDRweCA1cHggLTJweCByZ2JhKDAsIDAsIDAsIDAuMiksMHB4IDdweCAxMHB4IDFweCByZ2JhKDAsIDAsIDAsIDAuMTQpLDBweCAycHggMTZweCAxcHggcmdiYSgwLCAwLCAwLCAwLjEyKX0ubWF0LWVsZXZhdGlvbi16OFtfbmdjb250ZW50LSVDT01QJV17Ym94LXNoYWRvdzowcHggNXB4IDVweCAtM3B4IHJnYmEoMCwgMCwgMCwgMC4yKSwwcHggOHB4IDEwcHggMXB4IHJnYmEoMCwgMCwgMCwgMC4xNCksMHB4IDNweCAxNHB4IDJweCByZ2JhKDAsIDAsIDAsIDAuMTIpfS5tYXQtZWxldmF0aW9uLXo5W19uZ2NvbnRlbnQtJUNPTVAlXXtib3gtc2hhZG93OjBweCA1cHggNnB4IC0zcHggcmdiYSgwLCAwLCAwLCAwLjIpLDBweCA5cHggMTJweCAxcHggcmdiYSgwLCAwLCAwLCAwLjE0KSwwcHggM3B4IDE2cHggMnB4IHJnYmEoMCwgMCwgMCwgMC4xMil9Lm1hdC1lbGV2YXRpb24tejEwW19uZ2NvbnRlbnQtJUNPTVAlXXtib3gtc2hhZG93OjBweCA2cHggNnB4IC0zcHggcmdiYSgwLCAwLCAwLCAwLjIpLDBweCAxMHB4IDE0cHggMXB4IHJnYmEoMCwgMCwgMCwgMC4xNCksMHB4IDRweCAxOHB4IDNweCByZ2JhKDAsIDAsIDAsIDAuMTIpfS5tYXQtZWxldmF0aW9uLXoxMVtfbmdjb250ZW50LSVDT01QJV17Ym94LXNoYWRvdzowcHggNnB4IDdweCAtNHB4IHJnYmEoMCwgMCwgMCwgMC4yKSwwcHggMTFweCAxNXB4IDFweCByZ2JhKDAsIDAsIDAsIDAuMTQpLDBweCA0cHggMjBweCAzcHggcmdiYSgwLCAwLCAwLCAwLjEyKX0ubWF0LWVsZXZhdGlvbi16MTJbX25nY29udGVudC0lQ09NUCVde2JveC1zaGFkb3c6MHB4IDdweCA4cHggLTRweCByZ2JhKDAsIDAsIDAsIDAuMiksMHB4IDEycHggMTdweCAycHggcmdiYSgwLCAwLCAwLCAwLjE0KSwwcHggNXB4IDIycHggNHB4IHJnYmEoMCwgMCwgMCwgMC4xMil9Lm1hdC1lbGV2YXRpb24tejEzW19uZ2NvbnRlbnQtJUNPTVAlXXtib3gtc2hhZG93OjBweCA3cHggOHB4IC00cHggcmdiYSgwLCAwLCAwLCAwLjIpLDBweCAxM3B4IDE5cHggMnB4IHJnYmEoMCwgMCwgMCwgMC4xNCksMHB4IDVweCAyNHB4IDRweCByZ2JhKDAsIDAsIDAsIDAuMTIpfS5tYXQtZWxldmF0aW9uLXoxNFtfbmdjb250ZW50LSVDT01QJV17Ym94LXNoYWRvdzowcHggN3B4IDlweCAtNHB4IHJnYmEoMCwgMCwgMCwgMC4yKSwwcHggMTRweCAyMXB4IDJweCByZ2JhKDAsIDAsIDAsIDAuMTQpLDBweCA1cHggMjZweCA0cHggcmdiYSgwLCAwLCAwLCAwLjEyKX0ubWF0LWVsZXZhdGlvbi16MTVbX25nY29udGVudC0lQ09NUCVde2JveC1zaGFkb3c6MHB4IDhweCA5cHggLTVweCByZ2JhKDAsIDAsIDAsIDAuMiksMHB4IDE1cHggMjJweCAycHggcmdiYSgwLCAwLCAwLCAwLjE0KSwwcHggNnB4IDI4cHggNXB4IHJnYmEoMCwgMCwgMCwgMC4xMil9Lm1hdC1lbGV2YXRpb24tejE2W19uZ2NvbnRlbnQtJUNPTVAlXXtib3gtc2hhZG93OjBweCA4cHggMTBweCAtNXB4IHJnYmEoMCwgMCwgMCwgMC4yKSwwcHggMTZweCAyNHB4IDJweCByZ2JhKDAsIDAsIDAsIDAuMTQpLDBweCA2cHggMzBweCA1cHggcmdiYSgwLCAwLCAwLCAwLjEyKX0ubWF0LWVsZXZhdGlvbi16MTdbX25nY29udGVudC0lQ09NUCVde2JveC1zaGFkb3c6MHB4IDhweCAxMXB4IC01cHggcmdiYSgwLCAwLCAwLCAwLjIpLDBweCAxN3B4IDI2cHggMnB4IHJnYmEoMCwgMCwgMCwgMC4xNCksMHB4IDZweCAzMnB4IDVweCByZ2JhKDAsIDAsIDAsIDAuMTIpfS5tYXQtZWxldmF0aW9uLXoxOFtfbmdjb250ZW50LSVDT01QJV17Ym94LXNoYWRvdzowcHggOXB4IDExcHggLTVweCByZ2JhKDAsIDAsIDAsIDAuMiksMHB4IDE4cHggMjhweCAycHggcmdiYSgwLCAwLCAwLCAwLjE0KSwwcHggN3B4IDM0cHggNnB4IHJnYmEoMCwgMCwgMCwgMC4xMil9Lm1hdC1lbGV2YXRpb24tejE5W19uZ2NvbnRlbnQtJUNPTVAlXXtib3gtc2hhZG93OjBweCA5cHggMTJweCAtNnB4IHJnYmEoMCwgMCwgMCwgMC4yKSwwcHggMTlweCAyOXB4IDJweCByZ2JhKDAsIDAsIDAsIDAuMTQpLDBweCA3cHggMzZweCA2cHggcmdiYSgwLCAwLCAwLCAwLjEyKX0ubWF0LWVsZXZhdGlvbi16MjBbX25nY29udGVudC0lQ09NUCVde2JveC1zaGFkb3c6MHB4IDEwcHggMTNweCAtNnB4IHJnYmEoMCwgMCwgMCwgMC4yKSwwcHggMjBweCAzMXB4IDNweCByZ2JhKDAsIDAsIDAsIDAuMTQpLDBweCA4cHggMzhweCA3cHggcmdiYSgwLCAwLCAwLCAwLjEyKX0ubWF0LWVsZXZhdGlvbi16MjFbX25nY29udGVudC0lQ09NUCVde2JveC1zaGFkb3c6MHB4IDEwcHggMTNweCAtNnB4IHJnYmEoMCwgMCwgMCwgMC4yKSwwcHggMjFweCAzM3B4IDNweCByZ2JhKDAsIDAsIDAsIDAuMTQpLDBweCA4cHggNDBweCA3cHggcmdiYSgwLCAwLCAwLCAwLjEyKX0ubWF0LWVsZXZhdGlvbi16MjJbX25nY29udGVudC0lQ09NUCVde2JveC1zaGFkb3c6MHB4IDEwcHggMTRweCAtNnB4IHJnYmEoMCwgMCwgMCwgMC4yKSwwcHggMjJweCAzNXB4IDNweCByZ2JhKDAsIDAsIDAsIDAuMTQpLDBweCA4cHggNDJweCA3cHggcmdiYSgwLCAwLCAwLCAwLjEyKX0ubWF0LWVsZXZhdGlvbi16MjNbX25nY29udGVudC0lQ09NUCVde2JveC1zaGFkb3c6MHB4IDExcHggMTRweCAtN3B4IHJnYmEoMCwgMCwgMCwgMC4yKSwwcHggMjNweCAzNnB4IDNweCByZ2JhKDAsIDAsIDAsIDAuMTQpLDBweCA5cHggNDRweCA4cHggcmdiYSgwLCAwLCAwLCAwLjEyKX0ubWF0LWVsZXZhdGlvbi16MjRbX25nY29udGVudC0lQ09NUCVde2JveC1zaGFkb3c6MHB4IDExcHggMTVweCAtN3B4IHJnYmEoMCwgMCwgMCwgMC4yKSwwcHggMjRweCAzOHB4IDNweCByZ2JhKDAsIDAsIDAsIDAuMTQpLDBweCA5cHggNDZweCA4cHggcmdiYSgwLCAwLCAwLCAwLjEyKX0ubWF0LXRoZW1lLWxvYWRlZC1tYXJrZXJbX25nY29udGVudC0lQ09NUCVde2Rpc3BsYXk6bm9uZX0ubWF0LWF1dG9jb21wbGV0ZS1wYW5lbFtfbmdjb250ZW50LSVDT01QJV17YmFja2dyb3VuZDojZmZmO2NvbG9yOiMyMTIxMjF9Lm1hdC1hdXRvY29tcGxldGUtcGFuZWxbX25nY29udGVudC0lQ09NUCVdOm5vdChbY2xhc3MqPW1hdC1lbGV2YXRpb24tel0pe2JveC1zaGFkb3c6MHB4IDJweCA0cHggLTFweCByZ2JhKDAsIDAsIDAsIDAuMiksMHB4IDRweCA1cHggMHB4IHJnYmEoMCwgMCwgMCwgMC4xNCksMHB4IDFweCAxMHB4IDBweCByZ2JhKDAsIDAsIDAsIDAuMTIpfS5tYXQtYXV0b2NvbXBsZXRlLXBhbmVsW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtb3B0aW9uLm1hdC1zZWxlY3RlZFtfbmdjb250ZW50LSVDT01QJV06bm90KC5tYXQtYWN0aXZlKTpub3QoOmhvdmVyKXtiYWNrZ3JvdW5kOiNmZmZ9Lm1hdC1hdXRvY29tcGxldGUtcGFuZWxbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1vcHRpb24ubWF0LXNlbGVjdGVkW19uZ2NvbnRlbnQtJUNPTVAlXTpub3QoLm1hdC1hY3RpdmUpOm5vdCg6aG92ZXIpOm5vdCgubWF0LW9wdGlvbi1kaXNhYmxlZCl7Y29sb3I6IzIxMjEyMX0ubWF0LWJhZGdlLWNvbnRlbnRbX25nY29udGVudC0lQ09NUCVde2NvbG9yOiNmZmY7YmFja2dyb3VuZDojZjU3YzAwfS5jZGstaGlnaC1jb250cmFzdC1hY3RpdmVbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1iYWRnZS1jb250ZW50W19uZ2NvbnRlbnQtJUNPTVAlXXtvdXRsaW5lOnNvbGlkIDFweDtib3JkZXItcmFkaXVzOjB9Lm1hdC1iYWRnZS1hY2NlbnRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1iYWRnZS1jb250ZW50W19uZ2NvbnRlbnQtJUNPTVAlXXtiYWNrZ3JvdW5kOiNmZjk4MDA7Y29sb3I6I2ZmZn0ubWF0LWJhZGdlLXdhcm5bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1iYWRnZS1jb250ZW50W19uZ2NvbnRlbnQtJUNPTVAlXXtjb2xvcjojZmZmO2JhY2tncm91bmQ6I2Y0NDMzNn0ubWF0LWJhZGdlW19uZ2NvbnRlbnQtJUNPTVAlXXtwb3NpdGlvbjpyZWxhdGl2ZX0ubWF0LWJhZGdlLWhpZGRlbltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWJhZGdlLWNvbnRlbnRbX25nY29udGVudC0lQ09NUCVde2Rpc3BsYXk6bm9uZX0ubWF0LWJhZGdlLWRpc2FibGVkW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtYmFkZ2UtY29udGVudFtfbmdjb250ZW50LSVDT01QJV17YmFja2dyb3VuZDojYjliOWI5O2NvbG9yOiM3NTc1NzV9Lm1hdC1iYWRnZS1jb250ZW50W19uZ2NvbnRlbnQtJUNPTVAlXXtwb3NpdGlvbjphYnNvbHV0ZTt0ZXh0LWFsaWduOmNlbnRlcjtkaXNwbGF5OmlubGluZS1ibG9jaztib3JkZXItcmFkaXVzOjUwJTt0cmFuc2l0aW9uOnRyYW5zZm9ybSAyMDBtcyBlYXNlLWluLW91dDt0cmFuc2Zvcm06c2NhbGUoMC42KTtvdmVyZmxvdzpoaWRkZW47d2hpdGUtc3BhY2U6bm93cmFwO3RleHQtb3ZlcmZsb3c6ZWxsaXBzaXM7cG9pbnRlci1ldmVudHM6bm9uZX0ubmctYW5pbWF0ZS1kaXNhYmxlZFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWJhZGdlLWNvbnRlbnRbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWJhZGdlLWNvbnRlbnQuX21hdC1hbmltYXRpb24tbm9vcGFibGVbX25nY29udGVudC0lQ09NUCVde3RyYW5zaXRpb246bm9uZX0ubWF0LWJhZGdlLWNvbnRlbnQubWF0LWJhZGdlLWFjdGl2ZVtfbmdjb250ZW50LSVDT01QJV17dHJhbnNmb3JtOm5vbmV9Lm1hdC1iYWRnZS1zbWFsbFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWJhZGdlLWNvbnRlbnRbX25nY29udGVudC0lQ09NUCVde3dpZHRoOjE2cHg7aGVpZ2h0OjE2cHg7bGluZS1oZWlnaHQ6MTZweH0ubWF0LWJhZGdlLXNtYWxsLm1hdC1iYWRnZS1hYm92ZVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWJhZGdlLWNvbnRlbnRbX25nY29udGVudC0lQ09NUCVde3RvcDotOHB4fS5tYXQtYmFkZ2Utc21hbGwubWF0LWJhZGdlLWJlbG93W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtYmFkZ2UtY29udGVudFtfbmdjb250ZW50LSVDT01QJV17Ym90dG9tOi04cHh9Lm1hdC1iYWRnZS1zbWFsbC5tYXQtYmFkZ2UtYmVmb3JlW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtYmFkZ2UtY29udGVudFtfbmdjb250ZW50LSVDT01QJV17bGVmdDotMTZweH1bZGlyPXJ0bF1bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1iYWRnZS1zbWFsbC5tYXQtYmFkZ2UtYmVmb3JlW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtYmFkZ2UtY29udGVudFtfbmdjb250ZW50LSVDT01QJV17bGVmdDphdXRvO3JpZ2h0Oi0xNnB4fS5tYXQtYmFkZ2Utc21hbGwubWF0LWJhZGdlLWFmdGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtYmFkZ2UtY29udGVudFtfbmdjb250ZW50LSVDT01QJV17cmlnaHQ6LTE2cHh9W2Rpcj1ydGxdW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtYmFkZ2Utc21hbGwubWF0LWJhZGdlLWFmdGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtYmFkZ2UtY29udGVudFtfbmdjb250ZW50LSVDT01QJV17cmlnaHQ6YXV0bztsZWZ0Oi0xNnB4fS5tYXQtYmFkZ2Utc21hbGwubWF0LWJhZGdlLW92ZXJsYXAubWF0LWJhZGdlLWJlZm9yZVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWJhZGdlLWNvbnRlbnRbX25nY29udGVudC0lQ09NUCVde2xlZnQ6LThweH1bZGlyPXJ0bF1bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1iYWRnZS1zbWFsbC5tYXQtYmFkZ2Utb3ZlcmxhcC5tYXQtYmFkZ2UtYmVmb3JlW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtYmFkZ2UtY29udGVudFtfbmdjb250ZW50LSVDT01QJV17bGVmdDphdXRvO3JpZ2h0Oi04cHh9Lm1hdC1iYWRnZS1zbWFsbC5tYXQtYmFkZ2Utb3ZlcmxhcC5tYXQtYmFkZ2UtYWZ0ZXJbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1iYWRnZS1jb250ZW50W19uZ2NvbnRlbnQtJUNPTVAlXXtyaWdodDotOHB4fVtkaXI9cnRsXVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWJhZGdlLXNtYWxsLm1hdC1iYWRnZS1vdmVybGFwLm1hdC1iYWRnZS1hZnRlcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWJhZGdlLWNvbnRlbnRbX25nY29udGVudC0lQ09NUCVde3JpZ2h0OmF1dG87bGVmdDotOHB4fS5tYXQtYmFkZ2UtbWVkaXVtW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtYmFkZ2UtY29udGVudFtfbmdjb250ZW50LSVDT01QJV17d2lkdGg6MjJweDtoZWlnaHQ6MjJweDtsaW5lLWhlaWdodDoyMnB4fS5tYXQtYmFkZ2UtbWVkaXVtLm1hdC1iYWRnZS1hYm92ZVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWJhZGdlLWNvbnRlbnRbX25nY29udGVudC0lQ09NUCVde3RvcDotMTFweH0ubWF0LWJhZGdlLW1lZGl1bS5tYXQtYmFkZ2UtYmVsb3dbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1iYWRnZS1jb250ZW50W19uZ2NvbnRlbnQtJUNPTVAlXXtib3R0b206LTExcHh9Lm1hdC1iYWRnZS1tZWRpdW0ubWF0LWJhZGdlLWJlZm9yZVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWJhZGdlLWNvbnRlbnRbX25nY29udGVudC0lQ09NUCVde2xlZnQ6LTIycHh9W2Rpcj1ydGxdW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtYmFkZ2UtbWVkaXVtLm1hdC1iYWRnZS1iZWZvcmVbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1iYWRnZS1jb250ZW50W19uZ2NvbnRlbnQtJUNPTVAlXXtsZWZ0OmF1dG87cmlnaHQ6LTIycHh9Lm1hdC1iYWRnZS1tZWRpdW0ubWF0LWJhZGdlLWFmdGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtYmFkZ2UtY29udGVudFtfbmdjb250ZW50LSVDT01QJV17cmlnaHQ6LTIycHh9W2Rpcj1ydGxdW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtYmFkZ2UtbWVkaXVtLm1hdC1iYWRnZS1hZnRlcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWJhZGdlLWNvbnRlbnRbX25nY29udGVudC0lQ09NUCVde3JpZ2h0OmF1dG87bGVmdDotMjJweH0ubWF0LWJhZGdlLW1lZGl1bS5tYXQtYmFkZ2Utb3ZlcmxhcC5tYXQtYmFkZ2UtYmVmb3JlW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtYmFkZ2UtY29udGVudFtfbmdjb250ZW50LSVDT01QJV17bGVmdDotMTFweH1bZGlyPXJ0bF1bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1iYWRnZS1tZWRpdW0ubWF0LWJhZGdlLW92ZXJsYXAubWF0LWJhZGdlLWJlZm9yZVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWJhZGdlLWNvbnRlbnRbX25nY29udGVudC0lQ09NUCVde2xlZnQ6YXV0bztyaWdodDotMTFweH0ubWF0LWJhZGdlLW1lZGl1bS5tYXQtYmFkZ2Utb3ZlcmxhcC5tYXQtYmFkZ2UtYWZ0ZXJbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1iYWRnZS1jb250ZW50W19uZ2NvbnRlbnQtJUNPTVAlXXtyaWdodDotMTFweH1bZGlyPXJ0bF1bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1iYWRnZS1tZWRpdW0ubWF0LWJhZGdlLW92ZXJsYXAubWF0LWJhZGdlLWFmdGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtYmFkZ2UtY29udGVudFtfbmdjb250ZW50LSVDT01QJV17cmlnaHQ6YXV0bztsZWZ0Oi0xMXB4fS5tYXQtYmFkZ2UtbGFyZ2VbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1iYWRnZS1jb250ZW50W19uZ2NvbnRlbnQtJUNPTVAlXXt3aWR0aDoyOHB4O2hlaWdodDoyOHB4O2xpbmUtaGVpZ2h0OjI4cHh9Lm1hdC1iYWRnZS1sYXJnZS5tYXQtYmFkZ2UtYWJvdmVbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1iYWRnZS1jb250ZW50W19uZ2NvbnRlbnQtJUNPTVAlXXt0b3A6LTE0cHh9Lm1hdC1iYWRnZS1sYXJnZS5tYXQtYmFkZ2UtYmVsb3dbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1iYWRnZS1jb250ZW50W19uZ2NvbnRlbnQtJUNPTVAlXXtib3R0b206LTE0cHh9Lm1hdC1iYWRnZS1sYXJnZS5tYXQtYmFkZ2UtYmVmb3JlW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtYmFkZ2UtY29udGVudFtfbmdjb250ZW50LSVDT01QJV17bGVmdDotMjhweH1bZGlyPXJ0bF1bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1iYWRnZS1sYXJnZS5tYXQtYmFkZ2UtYmVmb3JlW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtYmFkZ2UtY29udGVudFtfbmdjb250ZW50LSVDT01QJV17bGVmdDphdXRvO3JpZ2h0Oi0yOHB4fS5tYXQtYmFkZ2UtbGFyZ2UubWF0LWJhZGdlLWFmdGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtYmFkZ2UtY29udGVudFtfbmdjb250ZW50LSVDT01QJV17cmlnaHQ6LTI4cHh9W2Rpcj1ydGxdW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtYmFkZ2UtbGFyZ2UubWF0LWJhZGdlLWFmdGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtYmFkZ2UtY29udGVudFtfbmdjb250ZW50LSVDT01QJV17cmlnaHQ6YXV0bztsZWZ0Oi0yOHB4fS5tYXQtYmFkZ2UtbGFyZ2UubWF0LWJhZGdlLW92ZXJsYXAubWF0LWJhZGdlLWJlZm9yZVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWJhZGdlLWNvbnRlbnRbX25nY29udGVudC0lQ09NUCVde2xlZnQ6LTE0cHh9W2Rpcj1ydGxdW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtYmFkZ2UtbGFyZ2UubWF0LWJhZGdlLW92ZXJsYXAubWF0LWJhZGdlLWJlZm9yZVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWJhZGdlLWNvbnRlbnRbX25nY29udGVudC0lQ09NUCVde2xlZnQ6YXV0bztyaWdodDotMTRweH0ubWF0LWJhZGdlLWxhcmdlLm1hdC1iYWRnZS1vdmVybGFwLm1hdC1iYWRnZS1hZnRlcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWJhZGdlLWNvbnRlbnRbX25nY29udGVudC0lQ09NUCVde3JpZ2h0Oi0xNHB4fVtkaXI9cnRsXVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWJhZGdlLWxhcmdlLm1hdC1iYWRnZS1vdmVybGFwLm1hdC1iYWRnZS1hZnRlcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWJhZGdlLWNvbnRlbnRbX25nY29udGVudC0lQ09NUCVde3JpZ2h0OmF1dG87bGVmdDotMTRweH0ubWF0LWJvdHRvbS1zaGVldC1jb250YWluZXJbX25nY29udGVudC0lQ09NUCVde2JveC1zaGFkb3c6MHB4IDhweCAxMHB4IC01cHggcmdiYSgwLCAwLCAwLCAwLjIpLDBweCAxNnB4IDI0cHggMnB4IHJnYmEoMCwgMCwgMCwgMC4xNCksMHB4IDZweCAzMHB4IDVweCByZ2JhKDAsIDAsIDAsIDAuMTIpO2JhY2tncm91bmQ6I2ZmZjtjb2xvcjojMjEyMTIxfS5tYXQtYnV0dG9uW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1pY29uLWJ1dHRvbltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtc3Ryb2tlZC1idXR0b25bX25nY29udGVudC0lQ09NUCVde2NvbG9yOmluaGVyaXQ7YmFja2dyb3VuZDp0cmFuc3BhcmVudH0ubWF0LWJ1dHRvbi5tYXQtcHJpbWFyeVtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtaWNvbi1idXR0b24ubWF0LXByaW1hcnlbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXN0cm9rZWQtYnV0dG9uLm1hdC1wcmltYXJ5W19uZ2NvbnRlbnQtJUNPTVAlXXtjb2xvcjojZjU3YzAwfS5tYXQtYnV0dG9uLm1hdC1hY2NlbnRbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWljb24tYnV0dG9uLm1hdC1hY2NlbnRbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXN0cm9rZWQtYnV0dG9uLm1hdC1hY2NlbnRbX25nY29udGVudC0lQ09NUCVde2NvbG9yOiNmZjk4MDB9Lm1hdC1idXR0b24ubWF0LXdhcm5bX25nY29udGVudC0lQ09NUCVdLCAubWF0LWljb24tYnV0dG9uLm1hdC13YXJuW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1zdHJva2VkLWJ1dHRvbi5tYXQtd2Fybltfbmdjb250ZW50LSVDT01QJV17Y29sb3I6I2Y0NDMzNn0ubWF0LWJ1dHRvbi5tYXQtcHJpbWFyeS5tYXQtYnV0dG9uLWRpc2FibGVkW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1idXR0b24ubWF0LWFjY2VudC5tYXQtYnV0dG9uLWRpc2FibGVkW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1idXR0b24ubWF0LXdhcm4ubWF0LWJ1dHRvbi1kaXNhYmxlZFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtYnV0dG9uLm1hdC1idXR0b24tZGlzYWJsZWQubWF0LWJ1dHRvbi1kaXNhYmxlZFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtaWNvbi1idXR0b24ubWF0LXByaW1hcnkubWF0LWJ1dHRvbi1kaXNhYmxlZFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtaWNvbi1idXR0b24ubWF0LWFjY2VudC5tYXQtYnV0dG9uLWRpc2FibGVkW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1pY29uLWJ1dHRvbi5tYXQtd2Fybi5tYXQtYnV0dG9uLWRpc2FibGVkW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1pY29uLWJ1dHRvbi5tYXQtYnV0dG9uLWRpc2FibGVkLm1hdC1idXR0b24tZGlzYWJsZWRbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXN0cm9rZWQtYnV0dG9uLm1hdC1wcmltYXJ5Lm1hdC1idXR0b24tZGlzYWJsZWRbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXN0cm9rZWQtYnV0dG9uLm1hdC1hY2NlbnQubWF0LWJ1dHRvbi1kaXNhYmxlZFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtc3Ryb2tlZC1idXR0b24ubWF0LXdhcm4ubWF0LWJ1dHRvbi1kaXNhYmxlZFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtc3Ryb2tlZC1idXR0b24ubWF0LWJ1dHRvbi1kaXNhYmxlZC5tYXQtYnV0dG9uLWRpc2FibGVkW19uZ2NvbnRlbnQtJUNPTVAlXXtjb2xvcjpyZ2JhKDAsMCwwLC4yNil9Lm1hdC1idXR0b24ubWF0LXByaW1hcnlbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1idXR0b24tZm9jdXMtb3ZlcmxheVtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtaWNvbi1idXR0b24ubWF0LXByaW1hcnlbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1idXR0b24tZm9jdXMtb3ZlcmxheVtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtc3Ryb2tlZC1idXR0b24ubWF0LXByaW1hcnlbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1idXR0b24tZm9jdXMtb3ZlcmxheVtfbmdjb250ZW50LSVDT01QJV17YmFja2dyb3VuZC1jb2xvcjojZjU3YzAwfS5tYXQtYnV0dG9uLm1hdC1hY2NlbnRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1idXR0b24tZm9jdXMtb3ZlcmxheVtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtaWNvbi1idXR0b24ubWF0LWFjY2VudFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWJ1dHRvbi1mb2N1cy1vdmVybGF5W19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1zdHJva2VkLWJ1dHRvbi5tYXQtYWNjZW50W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtYnV0dG9uLWZvY3VzLW92ZXJsYXlbX25nY29udGVudC0lQ09NUCVde2JhY2tncm91bmQtY29sb3I6I2ZmOTgwMH0ubWF0LWJ1dHRvbi5tYXQtd2Fybltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWJ1dHRvbi1mb2N1cy1vdmVybGF5W19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1pY29uLWJ1dHRvbi5tYXQtd2Fybltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWJ1dHRvbi1mb2N1cy1vdmVybGF5W19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1zdHJva2VkLWJ1dHRvbi5tYXQtd2Fybltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWJ1dHRvbi1mb2N1cy1vdmVybGF5W19uZ2NvbnRlbnQtJUNPTVAlXXtiYWNrZ3JvdW5kLWNvbG9yOiNmNDQzMzZ9Lm1hdC1idXR0b24ubWF0LWJ1dHRvbi1kaXNhYmxlZFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWJ1dHRvbi1mb2N1cy1vdmVybGF5W19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1pY29uLWJ1dHRvbi5tYXQtYnV0dG9uLWRpc2FibGVkW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtYnV0dG9uLWZvY3VzLW92ZXJsYXlbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXN0cm9rZWQtYnV0dG9uLm1hdC1idXR0b24tZGlzYWJsZWRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1idXR0b24tZm9jdXMtb3ZlcmxheVtfbmdjb250ZW50LSVDT01QJV17YmFja2dyb3VuZC1jb2xvcjp0cmFuc3BhcmVudH0ubWF0LWJ1dHRvbltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXJpcHBsZS1lbGVtZW50W19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1pY29uLWJ1dHRvbltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXJpcHBsZS1lbGVtZW50W19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1zdHJva2VkLWJ1dHRvbltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXJpcHBsZS1lbGVtZW50W19uZ2NvbnRlbnQtJUNPTVAlXXtvcGFjaXR5Oi4xO2JhY2tncm91bmQtY29sb3I6Y3VycmVudENvbG9yfS5tYXQtYnV0dG9uLWZvY3VzLW92ZXJsYXlbX25nY29udGVudC0lQ09NUCVde2JhY2tncm91bmQ6IzAwMH0ubWF0LXN0cm9rZWQtYnV0dG9uW19uZ2NvbnRlbnQtJUNPTVAlXTpub3QoLm1hdC1idXR0b24tZGlzYWJsZWQpe2JvcmRlci1jb2xvcjpyZ2JhKDAsMCwwLC4xMil9Lm1hdC1mbGF0LWJ1dHRvbltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtcmFpc2VkLWJ1dHRvbltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtZmFiW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1taW5pLWZhYltfbmdjb250ZW50LSVDT01QJV17Y29sb3I6IzIxMjEyMTtiYWNrZ3JvdW5kLWNvbG9yOiNmZmZ9Lm1hdC1mbGF0LWJ1dHRvbi5tYXQtcHJpbWFyeVtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtcmFpc2VkLWJ1dHRvbi5tYXQtcHJpbWFyeVtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtZmFiLm1hdC1wcmltYXJ5W19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1taW5pLWZhYi5tYXQtcHJpbWFyeVtfbmdjb250ZW50LSVDT01QJV17Y29sb3I6I2ZmZn0ubWF0LWZsYXQtYnV0dG9uLm1hdC1hY2NlbnRbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXJhaXNlZC1idXR0b24ubWF0LWFjY2VudFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtZmFiLm1hdC1hY2NlbnRbX25nY29udGVudC0lQ09NUCVdLCAubWF0LW1pbmktZmFiLm1hdC1hY2NlbnRbX25nY29udGVudC0lQ09NUCVde2NvbG9yOiNmZmZ9Lm1hdC1mbGF0LWJ1dHRvbi5tYXQtd2Fybltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtcmFpc2VkLWJ1dHRvbi5tYXQtd2Fybltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtZmFiLm1hdC13YXJuW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1taW5pLWZhYi5tYXQtd2Fybltfbmdjb250ZW50LSVDT01QJV17Y29sb3I6I2ZmZn0ubWF0LWZsYXQtYnV0dG9uLm1hdC1wcmltYXJ5Lm1hdC1idXR0b24tZGlzYWJsZWRbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWZsYXQtYnV0dG9uLm1hdC1hY2NlbnQubWF0LWJ1dHRvbi1kaXNhYmxlZFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtZmxhdC1idXR0b24ubWF0LXdhcm4ubWF0LWJ1dHRvbi1kaXNhYmxlZFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtZmxhdC1idXR0b24ubWF0LWJ1dHRvbi1kaXNhYmxlZC5tYXQtYnV0dG9uLWRpc2FibGVkW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1yYWlzZWQtYnV0dG9uLm1hdC1wcmltYXJ5Lm1hdC1idXR0b24tZGlzYWJsZWRbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXJhaXNlZC1idXR0b24ubWF0LWFjY2VudC5tYXQtYnV0dG9uLWRpc2FibGVkW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1yYWlzZWQtYnV0dG9uLm1hdC13YXJuLm1hdC1idXR0b24tZGlzYWJsZWRbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXJhaXNlZC1idXR0b24ubWF0LWJ1dHRvbi1kaXNhYmxlZC5tYXQtYnV0dG9uLWRpc2FibGVkW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1mYWIubWF0LXByaW1hcnkubWF0LWJ1dHRvbi1kaXNhYmxlZFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtZmFiLm1hdC1hY2NlbnQubWF0LWJ1dHRvbi1kaXNhYmxlZFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtZmFiLm1hdC13YXJuLm1hdC1idXR0b24tZGlzYWJsZWRbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWZhYi5tYXQtYnV0dG9uLWRpc2FibGVkLm1hdC1idXR0b24tZGlzYWJsZWRbX25nY29udGVudC0lQ09NUCVdLCAubWF0LW1pbmktZmFiLm1hdC1wcmltYXJ5Lm1hdC1idXR0b24tZGlzYWJsZWRbX25nY29udGVudC0lQ09NUCVdLCAubWF0LW1pbmktZmFiLm1hdC1hY2NlbnQubWF0LWJ1dHRvbi1kaXNhYmxlZFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtbWluaS1mYWIubWF0LXdhcm4ubWF0LWJ1dHRvbi1kaXNhYmxlZFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtbWluaS1mYWIubWF0LWJ1dHRvbi1kaXNhYmxlZC5tYXQtYnV0dG9uLWRpc2FibGVkW19uZ2NvbnRlbnQtJUNPTVAlXXtjb2xvcjpyZ2JhKDAsMCwwLC4yNil9Lm1hdC1mbGF0LWJ1dHRvbi5tYXQtcHJpbWFyeVtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtcmFpc2VkLWJ1dHRvbi5tYXQtcHJpbWFyeVtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtZmFiLm1hdC1wcmltYXJ5W19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1taW5pLWZhYi5tYXQtcHJpbWFyeVtfbmdjb250ZW50LSVDT01QJV17YmFja2dyb3VuZC1jb2xvcjojZjU3YzAwfS5tYXQtZmxhdC1idXR0b24ubWF0LWFjY2VudFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtcmFpc2VkLWJ1dHRvbi5tYXQtYWNjZW50W19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1mYWIubWF0LWFjY2VudFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtbWluaS1mYWIubWF0LWFjY2VudFtfbmdjb250ZW50LSVDT01QJV17YmFja2dyb3VuZC1jb2xvcjojZmY5ODAwfS5tYXQtZmxhdC1idXR0b24ubWF0LXdhcm5bX25nY29udGVudC0lQ09NUCVdLCAubWF0LXJhaXNlZC1idXR0b24ubWF0LXdhcm5bX25nY29udGVudC0lQ09NUCVdLCAubWF0LWZhYi5tYXQtd2Fybltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtbWluaS1mYWIubWF0LXdhcm5bX25nY29udGVudC0lQ09NUCVde2JhY2tncm91bmQtY29sb3I6I2Y0NDMzNn0ubWF0LWZsYXQtYnV0dG9uLm1hdC1wcmltYXJ5Lm1hdC1idXR0b24tZGlzYWJsZWRbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWZsYXQtYnV0dG9uLm1hdC1hY2NlbnQubWF0LWJ1dHRvbi1kaXNhYmxlZFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtZmxhdC1idXR0b24ubWF0LXdhcm4ubWF0LWJ1dHRvbi1kaXNhYmxlZFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtZmxhdC1idXR0b24ubWF0LWJ1dHRvbi1kaXNhYmxlZC5tYXQtYnV0dG9uLWRpc2FibGVkW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1yYWlzZWQtYnV0dG9uLm1hdC1wcmltYXJ5Lm1hdC1idXR0b24tZGlzYWJsZWRbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXJhaXNlZC1idXR0b24ubWF0LWFjY2VudC5tYXQtYnV0dG9uLWRpc2FibGVkW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1yYWlzZWQtYnV0dG9uLm1hdC13YXJuLm1hdC1idXR0b24tZGlzYWJsZWRbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXJhaXNlZC1idXR0b24ubWF0LWJ1dHRvbi1kaXNhYmxlZC5tYXQtYnV0dG9uLWRpc2FibGVkW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1mYWIubWF0LXByaW1hcnkubWF0LWJ1dHRvbi1kaXNhYmxlZFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtZmFiLm1hdC1hY2NlbnQubWF0LWJ1dHRvbi1kaXNhYmxlZFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtZmFiLm1hdC13YXJuLm1hdC1idXR0b24tZGlzYWJsZWRbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWZhYi5tYXQtYnV0dG9uLWRpc2FibGVkLm1hdC1idXR0b24tZGlzYWJsZWRbX25nY29udGVudC0lQ09NUCVdLCAubWF0LW1pbmktZmFiLm1hdC1wcmltYXJ5Lm1hdC1idXR0b24tZGlzYWJsZWRbX25nY29udGVudC0lQ09NUCVdLCAubWF0LW1pbmktZmFiLm1hdC1hY2NlbnQubWF0LWJ1dHRvbi1kaXNhYmxlZFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtbWluaS1mYWIubWF0LXdhcm4ubWF0LWJ1dHRvbi1kaXNhYmxlZFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtbWluaS1mYWIubWF0LWJ1dHRvbi1kaXNhYmxlZC5tYXQtYnV0dG9uLWRpc2FibGVkW19uZ2NvbnRlbnQtJUNPTVAlXXtiYWNrZ3JvdW5kLWNvbG9yOnJnYmEoMCwwLDAsLjEyKX0ubWF0LWZsYXQtYnV0dG9uLm1hdC1wcmltYXJ5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtcmlwcGxlLWVsZW1lbnRbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXJhaXNlZC1idXR0b24ubWF0LXByaW1hcnlbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1yaXBwbGUtZWxlbWVudFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtZmFiLm1hdC1wcmltYXJ5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtcmlwcGxlLWVsZW1lbnRbX25nY29udGVudC0lQ09NUCVdLCAubWF0LW1pbmktZmFiLm1hdC1wcmltYXJ5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtcmlwcGxlLWVsZW1lbnRbX25nY29udGVudC0lQ09NUCVde2JhY2tncm91bmQtY29sb3I6cmdiYSgyNTUsMjU1LDI1NSwuMSl9Lm1hdC1mbGF0LWJ1dHRvbi5tYXQtYWNjZW50W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtcmlwcGxlLWVsZW1lbnRbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXJhaXNlZC1idXR0b24ubWF0LWFjY2VudFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXJpcHBsZS1lbGVtZW50W19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1mYWIubWF0LWFjY2VudFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXJpcHBsZS1lbGVtZW50W19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1taW5pLWZhYi5tYXQtYWNjZW50W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtcmlwcGxlLWVsZW1lbnRbX25nY29udGVudC0lQ09NUCVde2JhY2tncm91bmQtY29sb3I6cmdiYSgyNTUsMjU1LDI1NSwuMSl9Lm1hdC1mbGF0LWJ1dHRvbi5tYXQtd2Fybltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXJpcHBsZS1lbGVtZW50W19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1yYWlzZWQtYnV0dG9uLm1hdC13YXJuW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtcmlwcGxlLWVsZW1lbnRbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWZhYi5tYXQtd2Fybltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXJpcHBsZS1lbGVtZW50W19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1taW5pLWZhYi5tYXQtd2Fybltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXJpcHBsZS1lbGVtZW50W19uZ2NvbnRlbnQtJUNPTVAlXXtiYWNrZ3JvdW5kLWNvbG9yOnJnYmEoMjU1LDI1NSwyNTUsLjEpfS5tYXQtc3Ryb2tlZC1idXR0b25bX25nY29udGVudC0lQ09NUCVdOm5vdChbY2xhc3MqPW1hdC1lbGV2YXRpb24tel0pLCAubWF0LWZsYXQtYnV0dG9uW19uZ2NvbnRlbnQtJUNPTVAlXTpub3QoW2NsYXNzKj1tYXQtZWxldmF0aW9uLXpdKXtib3gtc2hhZG93OjBweCAwcHggMHB4IDBweCByZ2JhKDAsIDAsIDAsIDAuMiksMHB4IDBweCAwcHggMHB4IHJnYmEoMCwgMCwgMCwgMC4xNCksMHB4IDBweCAwcHggMHB4IHJnYmEoMCwgMCwgMCwgMC4xMil9Lm1hdC1yYWlzZWQtYnV0dG9uW19uZ2NvbnRlbnQtJUNPTVAlXTpub3QoW2NsYXNzKj1tYXQtZWxldmF0aW9uLXpdKXtib3gtc2hhZG93OjBweCAzcHggMXB4IC0ycHggcmdiYSgwLCAwLCAwLCAwLjIpLDBweCAycHggMnB4IDBweCByZ2JhKDAsIDAsIDAsIDAuMTQpLDBweCAxcHggNXB4IDBweCByZ2JhKDAsIDAsIDAsIDAuMTIpfS5tYXQtcmFpc2VkLWJ1dHRvbltfbmdjb250ZW50LSVDT01QJV06bm90KC5tYXQtYnV0dG9uLWRpc2FibGVkKTphY3RpdmU6bm90KFtjbGFzcyo9bWF0LWVsZXZhdGlvbi16XSl7Ym94LXNoYWRvdzowcHggNXB4IDVweCAtM3B4IHJnYmEoMCwgMCwgMCwgMC4yKSwwcHggOHB4IDEwcHggMXB4IHJnYmEoMCwgMCwgMCwgMC4xNCksMHB4IDNweCAxNHB4IDJweCByZ2JhKDAsIDAsIDAsIDAuMTIpfS5tYXQtcmFpc2VkLWJ1dHRvbi5tYXQtYnV0dG9uLWRpc2FibGVkW19uZ2NvbnRlbnQtJUNPTVAlXTpub3QoW2NsYXNzKj1tYXQtZWxldmF0aW9uLXpdKXtib3gtc2hhZG93OjBweCAwcHggMHB4IDBweCByZ2JhKDAsIDAsIDAsIDAuMiksMHB4IDBweCAwcHggMHB4IHJnYmEoMCwgMCwgMCwgMC4xNCksMHB4IDBweCAwcHggMHB4IHJnYmEoMCwgMCwgMCwgMC4xMil9Lm1hdC1mYWJbX25nY29udGVudC0lQ09NUCVdOm5vdChbY2xhc3MqPW1hdC1lbGV2YXRpb24tel0pLCAubWF0LW1pbmktZmFiW19uZ2NvbnRlbnQtJUNPTVAlXTpub3QoW2NsYXNzKj1tYXQtZWxldmF0aW9uLXpdKXtib3gtc2hhZG93OjBweCAzcHggNXB4IC0xcHggcmdiYSgwLCAwLCAwLCAwLjIpLDBweCA2cHggMTBweCAwcHggcmdiYSgwLCAwLCAwLCAwLjE0KSwwcHggMXB4IDE4cHggMHB4IHJnYmEoMCwgMCwgMCwgMC4xMil9Lm1hdC1mYWJbX25nY29udGVudC0lQ09NUCVdOm5vdCgubWF0LWJ1dHRvbi1kaXNhYmxlZCk6YWN0aXZlOm5vdChbY2xhc3MqPW1hdC1lbGV2YXRpb24tel0pLCAubWF0LW1pbmktZmFiW19uZ2NvbnRlbnQtJUNPTVAlXTpub3QoLm1hdC1idXR0b24tZGlzYWJsZWQpOmFjdGl2ZTpub3QoW2NsYXNzKj1tYXQtZWxldmF0aW9uLXpdKXtib3gtc2hhZG93OjBweCA3cHggOHB4IC00cHggcmdiYSgwLCAwLCAwLCAwLjIpLDBweCAxMnB4IDE3cHggMnB4IHJnYmEoMCwgMCwgMCwgMC4xNCksMHB4IDVweCAyMnB4IDRweCByZ2JhKDAsIDAsIDAsIDAuMTIpfS5tYXQtZmFiLm1hdC1idXR0b24tZGlzYWJsZWRbX25nY29udGVudC0lQ09NUCVdOm5vdChbY2xhc3MqPW1hdC1lbGV2YXRpb24tel0pLCAubWF0LW1pbmktZmFiLm1hdC1idXR0b24tZGlzYWJsZWRbX25nY29udGVudC0lQ09NUCVdOm5vdChbY2xhc3MqPW1hdC1lbGV2YXRpb24tel0pe2JveC1zaGFkb3c6MHB4IDBweCAwcHggMHB4IHJnYmEoMCwgMCwgMCwgMC4yKSwwcHggMHB4IDBweCAwcHggcmdiYSgwLCAwLCAwLCAwLjE0KSwwcHggMHB4IDBweCAwcHggcmdiYSgwLCAwLCAwLCAwLjEyKX0ubWF0LWJ1dHRvbi10b2dnbGUtc3RhbmRhbG9uZVtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtYnV0dG9uLXRvZ2dsZS1ncm91cFtfbmdjb250ZW50LSVDT01QJV17Ym94LXNoYWRvdzowcHggM3B4IDFweCAtMnB4IHJnYmEoMCwgMCwgMCwgMC4yKSwwcHggMnB4IDJweCAwcHggcmdiYSgwLCAwLCAwLCAwLjE0KSwwcHggMXB4IDVweCAwcHggcmdiYSgwLCAwLCAwLCAwLjEyKX0ubWF0LWJ1dHRvbi10b2dnbGUtc3RhbmRhbG9uZS5tYXQtYnV0dG9uLXRvZ2dsZS1hcHBlYXJhbmNlLXN0YW5kYXJkW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1idXR0b24tdG9nZ2xlLWdyb3VwLWFwcGVhcmFuY2Utc3RhbmRhcmRbX25nY29udGVudC0lQ09NUCVde2JveC1zaGFkb3c6bm9uZX0ubWF0LWJ1dHRvbi10b2dnbGVbX25nY29udGVudC0lQ09NUCVde2NvbG9yOnJnYmEoMCwwLDAsLjM4KX0ubWF0LWJ1dHRvbi10b2dnbGVbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1idXR0b24tdG9nZ2xlLWZvY3VzLW92ZXJsYXlbX25nY29udGVudC0lQ09NUCVde2JhY2tncm91bmQtY29sb3I6cmdiYSgwLDAsMCwuMTIpfS5tYXQtYnV0dG9uLXRvZ2dsZS1hcHBlYXJhbmNlLXN0YW5kYXJkW19uZ2NvbnRlbnQtJUNPTVAlXXtjb2xvcjojMjEyMTIxO2JhY2tncm91bmQ6I2ZmZn0ubWF0LWJ1dHRvbi10b2dnbGUtYXBwZWFyYW5jZS1zdGFuZGFyZFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWJ1dHRvbi10b2dnbGUtZm9jdXMtb3ZlcmxheVtfbmdjb250ZW50LSVDT01QJV17YmFja2dyb3VuZC1jb2xvcjojMDAwfS5tYXQtYnV0dG9uLXRvZ2dsZS1ncm91cC1hcHBlYXJhbmNlLXN0YW5kYXJkW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtYnV0dG9uLXRvZ2dsZVtfbmdjb250ZW50LSVDT01QJV0gKyAubWF0LWJ1dHRvbi10b2dnbGVbX25nY29udGVudC0lQ09NUCVde2JvcmRlci1sZWZ0OnNvbGlkIDFweCByZ2JhKDAsMCwwLC4xMil9W2Rpcj1ydGxdW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtYnV0dG9uLXRvZ2dsZS1ncm91cC1hcHBlYXJhbmNlLXN0YW5kYXJkW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtYnV0dG9uLXRvZ2dsZVtfbmdjb250ZW50LSVDT01QJV0gKyAubWF0LWJ1dHRvbi10b2dnbGVbX25nY29udGVudC0lQ09NUCVde2JvcmRlci1sZWZ0Om5vbmU7Ym9yZGVyLXJpZ2h0OnNvbGlkIDFweCByZ2JhKDAsMCwwLC4xMil9Lm1hdC1idXR0b24tdG9nZ2xlLWdyb3VwLWFwcGVhcmFuY2Utc3RhbmRhcmQubWF0LWJ1dHRvbi10b2dnbGUtdmVydGljYWxbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1idXR0b24tdG9nZ2xlW19uZ2NvbnRlbnQtJUNPTVAlXSArIC5tYXQtYnV0dG9uLXRvZ2dsZVtfbmdjb250ZW50LSVDT01QJV17Ym9yZGVyLWxlZnQ6bm9uZTtib3JkZXItcmlnaHQ6bm9uZTtib3JkZXItdG9wOnNvbGlkIDFweCByZ2JhKDAsMCwwLC4xMil9Lm1hdC1idXR0b24tdG9nZ2xlLWNoZWNrZWRbX25nY29udGVudC0lQ09NUCVde2JhY2tncm91bmQtY29sb3I6I2UwZTBlMDtjb2xvcjojNjE2MTYxfS5tYXQtYnV0dG9uLXRvZ2dsZS1jaGVja2VkLm1hdC1idXR0b24tdG9nZ2xlLWFwcGVhcmFuY2Utc3RhbmRhcmRbX25nY29udGVudC0lQ09NUCVde2NvbG9yOiMyMTIxMjF9Lm1hdC1idXR0b24tdG9nZ2xlLWRpc2FibGVkW19uZ2NvbnRlbnQtJUNPTVAlXXtjb2xvcjpyZ2JhKDAsMCwwLC4yNik7YmFja2dyb3VuZC1jb2xvcjojZWVlfS5tYXQtYnV0dG9uLXRvZ2dsZS1kaXNhYmxlZC5tYXQtYnV0dG9uLXRvZ2dsZS1hcHBlYXJhbmNlLXN0YW5kYXJkW19uZ2NvbnRlbnQtJUNPTVAlXXtiYWNrZ3JvdW5kOiNmZmZ9Lm1hdC1idXR0b24tdG9nZ2xlLWRpc2FibGVkLm1hdC1idXR0b24tdG9nZ2xlLWNoZWNrZWRbX25nY29udGVudC0lQ09NUCVde2JhY2tncm91bmQtY29sb3I6I2JkYmRiZH0ubWF0LWJ1dHRvbi10b2dnbGUtc3RhbmRhbG9uZS5tYXQtYnV0dG9uLXRvZ2dsZS1hcHBlYXJhbmNlLXN0YW5kYXJkW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1idXR0b24tdG9nZ2xlLWdyb3VwLWFwcGVhcmFuY2Utc3RhbmRhcmRbX25nY29udGVudC0lQ09NUCVde2JvcmRlcjpzb2xpZCAxcHggcmdiYSgwLDAsMCwuMTIpfS5tYXQtYnV0dG9uLXRvZ2dsZS1hcHBlYXJhbmNlLXN0YW5kYXJkW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtYnV0dG9uLXRvZ2dsZS1sYWJlbC1jb250ZW50W19uZ2NvbnRlbnQtJUNPTVAlXXtsaW5lLWhlaWdodDo0OHB4fS5tYXQtY2FyZFtfbmdjb250ZW50LSVDT01QJV17YmFja2dyb3VuZDojZmZmO2NvbG9yOiMyMTIxMjF9Lm1hdC1jYXJkW19uZ2NvbnRlbnQtJUNPTVAlXTpub3QoW2NsYXNzKj1tYXQtZWxldmF0aW9uLXpdKXtib3gtc2hhZG93OjBweCAycHggMXB4IC0xcHggcmdiYSgwLCAwLCAwLCAwLjIpLDBweCAxcHggMXB4IDBweCByZ2JhKDAsIDAsIDAsIDAuMTQpLDBweCAxcHggM3B4IDBweCByZ2JhKDAsIDAsIDAsIDAuMTIpfS5tYXQtY2FyZC5tYXQtY2FyZC1mbGF0W19uZ2NvbnRlbnQtJUNPTVAlXTpub3QoW2NsYXNzKj1tYXQtZWxldmF0aW9uLXpdKXtib3gtc2hhZG93OjBweCAwcHggMHB4IDBweCByZ2JhKDAsIDAsIDAsIDAuMiksMHB4IDBweCAwcHggMHB4IHJnYmEoMCwgMCwgMCwgMC4xNCksMHB4IDBweCAwcHggMHB4IHJnYmEoMCwgMCwgMCwgMC4xMil9Lm1hdC1jYXJkLXN1YnRpdGxlW19uZ2NvbnRlbnQtJUNPTVAlXXtjb2xvcjojNjE2MTYxfS5tYXQtY2hlY2tib3gtZnJhbWVbX25nY29udGVudC0lQ09NUCVde2JvcmRlci1jb2xvcjojNjE2MTYxfS5tYXQtY2hlY2tib3gtY2hlY2ttYXJrW19uZ2NvbnRlbnQtJUNPTVAlXXtmaWxsOiNmYWZhZmF9Lm1hdC1jaGVja2JveC1jaGVja21hcmstcGF0aFtfbmdjb250ZW50LSVDT01QJV17c3Ryb2tlOiNmYWZhZmEgIWltcG9ydGFudH0ubWF0LWNoZWNrYm94LW1peGVkbWFya1tfbmdjb250ZW50LSVDT01QJV17YmFja2dyb3VuZC1jb2xvcjojZmFmYWZhfS5tYXQtY2hlY2tib3gtaW5kZXRlcm1pbmF0ZS5tYXQtcHJpbWFyeVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWNoZWNrYm94LWJhY2tncm91bmRbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWNoZWNrYm94LWNoZWNrZWQubWF0LXByaW1hcnlbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1jaGVja2JveC1iYWNrZ3JvdW5kW19uZ2NvbnRlbnQtJUNPTVAlXXtiYWNrZ3JvdW5kLWNvbG9yOiNmNTdjMDB9Lm1hdC1jaGVja2JveC1pbmRldGVybWluYXRlLm1hdC1hY2NlbnRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1jaGVja2JveC1iYWNrZ3JvdW5kW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1jaGVja2JveC1jaGVja2VkLm1hdC1hY2NlbnRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1jaGVja2JveC1iYWNrZ3JvdW5kW19uZ2NvbnRlbnQtJUNPTVAlXXtiYWNrZ3JvdW5kLWNvbG9yOiNmZjk4MDB9Lm1hdC1jaGVja2JveC1pbmRldGVybWluYXRlLm1hdC13YXJuW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtY2hlY2tib3gtYmFja2dyb3VuZFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtY2hlY2tib3gtY2hlY2tlZC5tYXQtd2Fybltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWNoZWNrYm94LWJhY2tncm91bmRbX25nY29udGVudC0lQ09NUCVde2JhY2tncm91bmQtY29sb3I6I2Y0NDMzNn0ubWF0LWNoZWNrYm94LWRpc2FibGVkLm1hdC1jaGVja2JveC1jaGVja2VkW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtY2hlY2tib3gtYmFja2dyb3VuZFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtY2hlY2tib3gtZGlzYWJsZWQubWF0LWNoZWNrYm94LWluZGV0ZXJtaW5hdGVbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1jaGVja2JveC1iYWNrZ3JvdW5kW19uZ2NvbnRlbnQtJUNPTVAlXXtiYWNrZ3JvdW5kLWNvbG9yOiNiMGIwYjB9Lm1hdC1jaGVja2JveC1kaXNhYmxlZFtfbmdjb250ZW50LSVDT01QJV06bm90KC5tYXQtY2hlY2tib3gtY2hlY2tlZCkgICAubWF0LWNoZWNrYm94LWZyYW1lW19uZ2NvbnRlbnQtJUNPTVAlXXtib3JkZXItY29sb3I6I2IwYjBiMH0ubWF0LWNoZWNrYm94LWRpc2FibGVkW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtY2hlY2tib3gtbGFiZWxbX25nY29udGVudC0lQ09NUCVde2NvbG9yOiM2MTYxNjF9Lm1hdC1jaGVja2JveFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXJpcHBsZS1lbGVtZW50W19uZ2NvbnRlbnQtJUNPTVAlXXtiYWNrZ3JvdW5kLWNvbG9yOiMwMDB9Lm1hdC1jaGVja2JveC1jaGVja2VkW19uZ2NvbnRlbnQtJUNPTVAlXTpub3QoLm1hdC1jaGVja2JveC1kaXNhYmxlZCkubWF0LXByaW1hcnkgICAubWF0LXJpcHBsZS1lbGVtZW50W19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1jaGVja2JveFtfbmdjb250ZW50LSVDT01QJV06YWN0aXZlOm5vdCgubWF0LWNoZWNrYm94LWRpc2FibGVkKS5tYXQtcHJpbWFyeSAgIC5tYXQtcmlwcGxlLWVsZW1lbnRbX25nY29udGVudC0lQ09NUCVde2JhY2tncm91bmQ6I2Y1N2MwMH0ubWF0LWNoZWNrYm94LWNoZWNrZWRbX25nY29udGVudC0lQ09NUCVdOm5vdCgubWF0LWNoZWNrYm94LWRpc2FibGVkKS5tYXQtYWNjZW50ICAgLm1hdC1yaXBwbGUtZWxlbWVudFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtY2hlY2tib3hbX25nY29udGVudC0lQ09NUCVdOmFjdGl2ZTpub3QoLm1hdC1jaGVja2JveC1kaXNhYmxlZCkubWF0LWFjY2VudCAgIC5tYXQtcmlwcGxlLWVsZW1lbnRbX25nY29udGVudC0lQ09NUCVde2JhY2tncm91bmQ6I2ZmOTgwMH0ubWF0LWNoZWNrYm94LWNoZWNrZWRbX25nY29udGVudC0lQ09NUCVdOm5vdCgubWF0LWNoZWNrYm94LWRpc2FibGVkKS5tYXQtd2FybiAgIC5tYXQtcmlwcGxlLWVsZW1lbnRbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWNoZWNrYm94W19uZ2NvbnRlbnQtJUNPTVAlXTphY3RpdmU6bm90KC5tYXQtY2hlY2tib3gtZGlzYWJsZWQpLm1hdC13YXJuICAgLm1hdC1yaXBwbGUtZWxlbWVudFtfbmdjb250ZW50LSVDT01QJV17YmFja2dyb3VuZDojZjQ0MzM2fS5tYXQtY2hpcC5tYXQtc3RhbmRhcmQtY2hpcFtfbmdjb250ZW50LSVDT01QJV17YmFja2dyb3VuZC1jb2xvcjojZTBlMGUwO2NvbG9yOiMyMTIxMjF9Lm1hdC1jaGlwLm1hdC1zdGFuZGFyZC1jaGlwW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtY2hpcC1yZW1vdmVbX25nY29udGVudC0lQ09NUCVde2NvbG9yOiMyMTIxMjE7b3BhY2l0eTouNH0ubWF0LWNoaXAubWF0LXN0YW5kYXJkLWNoaXBbX25nY29udGVudC0lQ09NUCVdOm5vdCgubWF0LWNoaXAtZGlzYWJsZWQpOmFjdGl2ZXtib3gtc2hhZG93OjBweCAzcHggM3B4IC0ycHggcmdiYSgwLCAwLCAwLCAwLjIpLDBweCAzcHggNHB4IDBweCByZ2JhKDAsIDAsIDAsIDAuMTQpLDBweCAxcHggOHB4IDBweCByZ2JhKDAsIDAsIDAsIDAuMTIpfS5tYXQtY2hpcC5tYXQtc3RhbmRhcmQtY2hpcFtfbmdjb250ZW50LSVDT01QJV06bm90KC5tYXQtY2hpcC1kaXNhYmxlZCkgICAubWF0LWNoaXAtcmVtb3ZlW19uZ2NvbnRlbnQtJUNPTVAlXTpob3ZlcntvcGFjaXR5Oi41NH0ubWF0LWNoaXAubWF0LXN0YW5kYXJkLWNoaXAubWF0LWNoaXAtZGlzYWJsZWRbX25nY29udGVudC0lQ09NUCVde29wYWNpdHk6LjR9Lm1hdC1jaGlwLm1hdC1zdGFuZGFyZC1jaGlwW19uZ2NvbnRlbnQtJUNPTVAlXTo6YWZ0ZXJ7YmFja2dyb3VuZDojMDAwfS5tYXQtY2hpcC5tYXQtc3RhbmRhcmQtY2hpcC5tYXQtY2hpcC1zZWxlY3RlZC5tYXQtcHJpbWFyeVtfbmdjb250ZW50LSVDT01QJV17YmFja2dyb3VuZC1jb2xvcjojZjU3YzAwO2NvbG9yOiNmZmZ9Lm1hdC1jaGlwLm1hdC1zdGFuZGFyZC1jaGlwLm1hdC1jaGlwLXNlbGVjdGVkLm1hdC1wcmltYXJ5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtY2hpcC1yZW1vdmVbX25nY29udGVudC0lQ09NUCVde2NvbG9yOiNmZmY7b3BhY2l0eTouNH0ubWF0LWNoaXAubWF0LXN0YW5kYXJkLWNoaXAubWF0LWNoaXAtc2VsZWN0ZWQubWF0LXByaW1hcnlbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1yaXBwbGUtZWxlbWVudFtfbmdjb250ZW50LSVDT01QJV17YmFja2dyb3VuZC1jb2xvcjpyZ2JhKDI1NSwyNTUsMjU1LC4xKX0ubWF0LWNoaXAubWF0LXN0YW5kYXJkLWNoaXAubWF0LWNoaXAtc2VsZWN0ZWQubWF0LXdhcm5bX25nY29udGVudC0lQ09NUCVde2JhY2tncm91bmQtY29sb3I6I2Y0NDMzNjtjb2xvcjojZmZmfS5tYXQtY2hpcC5tYXQtc3RhbmRhcmQtY2hpcC5tYXQtY2hpcC1zZWxlY3RlZC5tYXQtd2Fybltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWNoaXAtcmVtb3ZlW19uZ2NvbnRlbnQtJUNPTVAlXXtjb2xvcjojZmZmO29wYWNpdHk6LjR9Lm1hdC1jaGlwLm1hdC1zdGFuZGFyZC1jaGlwLm1hdC1jaGlwLXNlbGVjdGVkLm1hdC13YXJuW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtcmlwcGxlLWVsZW1lbnRbX25nY29udGVudC0lQ09NUCVde2JhY2tncm91bmQtY29sb3I6cmdiYSgyNTUsMjU1LDI1NSwuMSl9Lm1hdC1jaGlwLm1hdC1zdGFuZGFyZC1jaGlwLm1hdC1jaGlwLXNlbGVjdGVkLm1hdC1hY2NlbnRbX25nY29udGVudC0lQ09NUCVde2JhY2tncm91bmQtY29sb3I6I2ZmOTgwMDtjb2xvcjojZmZmfS5tYXQtY2hpcC5tYXQtc3RhbmRhcmQtY2hpcC5tYXQtY2hpcC1zZWxlY3RlZC5tYXQtYWNjZW50W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtY2hpcC1yZW1vdmVbX25nY29udGVudC0lQ09NUCVde2NvbG9yOiNmZmY7b3BhY2l0eTouNH0ubWF0LWNoaXAubWF0LXN0YW5kYXJkLWNoaXAubWF0LWNoaXAtc2VsZWN0ZWQubWF0LWFjY2VudFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXJpcHBsZS1lbGVtZW50W19uZ2NvbnRlbnQtJUNPTVAlXXtiYWNrZ3JvdW5kLWNvbG9yOnJnYmEoMjU1LDI1NSwyNTUsLjEpfS5tYXQtdGFibGVbX25nY29udGVudC0lQ09NUCVde2JhY2tncm91bmQ6I2ZmZn0ubWF0LXRhYmxlW19uZ2NvbnRlbnQtJUNPTVAlXSAgIHRoZWFkW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10YWJsZVtfbmdjb250ZW50LSVDT01QJV0gICB0Ym9keVtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdGFibGVbX25nY29udGVudC0lQ09NUCVdICAgdGZvb3RbX25nY29udGVudC0lQ09NUCVdLCBtYXQtaGVhZGVyLXJvd1tfbmdjb250ZW50LSVDT01QJV0sIG1hdC1yb3dbX25nY29udGVudC0lQ09NUCVdLCBtYXQtZm9vdGVyLXJvd1tfbmdjb250ZW50LSVDT01QJV0sIFttYXQtaGVhZGVyLXJvd11bX25nY29udGVudC0lQ09NUCVdLCBbbWF0LXJvd11bX25nY29udGVudC0lQ09NUCVdLCBbbWF0LWZvb3Rlci1yb3ddW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10YWJsZS1zdGlja3lbX25nY29udGVudC0lQ09NUCVde2JhY2tncm91bmQ6aW5oZXJpdH1tYXQtcm93W19uZ2NvbnRlbnQtJUNPTVAlXSwgbWF0LWhlYWRlci1yb3dbX25nY29udGVudC0lQ09NUCVdLCBtYXQtZm9vdGVyLXJvd1tfbmdjb250ZW50LSVDT01QJV0sIHRoLm1hdC1oZWFkZXItY2VsbFtfbmdjb250ZW50LSVDT01QJV0sIHRkLm1hdC1jZWxsW19uZ2NvbnRlbnQtJUNPTVAlXSwgdGQubWF0LWZvb3Rlci1jZWxsW19uZ2NvbnRlbnQtJUNPTVAlXXtib3JkZXItYm90dG9tLWNvbG9yOnJnYmEoMCwwLDAsLjEyKX0ubWF0LWhlYWRlci1jZWxsW19uZ2NvbnRlbnQtJUNPTVAlXXtjb2xvcjojNjE2MTYxfS5tYXQtY2VsbFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtZm9vdGVyLWNlbGxbX25nY29udGVudC0lQ09NUCVde2NvbG9yOiMyMTIxMjF9Lm1hdC1jYWxlbmRhci1hcnJvd1tfbmdjb250ZW50LSVDT01QJV17Ym9yZGVyLXRvcC1jb2xvcjpyZ2JhKDAsMCwwLC41NCl9Lm1hdC1kYXRlcGlja2VyLXRvZ2dsZVtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtZGF0ZXBpY2tlci1jb250ZW50W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtY2FsZW5kYXItbmV4dC1idXR0b25bX25nY29udGVudC0lQ09NUCVdLCAubWF0LWRhdGVwaWNrZXItY29udGVudFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWNhbGVuZGFyLXByZXZpb3VzLWJ1dHRvbltfbmdjb250ZW50LSVDT01QJV17Y29sb3I6cmdiYSgwLDAsMCwuNTQpfS5tYXQtY2FsZW5kYXItdGFibGUtaGVhZGVyW19uZ2NvbnRlbnQtJUNPTVAlXXtjb2xvcjpyZ2JhKDAsMCwwLC4zOCl9Lm1hdC1jYWxlbmRhci10YWJsZS1oZWFkZXItZGl2aWRlcltfbmdjb250ZW50LSVDT01QJV06OmFmdGVye2JhY2tncm91bmQ6cmdiYSgwLDAsMCwuMTIpfS5tYXQtY2FsZW5kYXItYm9keS1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17Y29sb3I6IzYxNjE2MX0ubWF0LWNhbGVuZGFyLWJvZHktY2VsbC1jb250ZW50W19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1kYXRlLXJhbmdlLWlucHV0LXNlcGFyYXRvcltfbmdjb250ZW50LSVDT01QJV17Y29sb3I6IzIxMjEyMTtib3JkZXItY29sb3I6dHJhbnNwYXJlbnR9Lm1hdC1jYWxlbmRhci1ib2R5LWRpc2FibGVkW19uZ2NvbnRlbnQtJUNPTVAlXSA+IC5tYXQtY2FsZW5kYXItYm9keS1jZWxsLWNvbnRlbnRbX25nY29udGVudC0lQ09NUCVdOm5vdCgubWF0LWNhbGVuZGFyLWJvZHktc2VsZWN0ZWQpOm5vdCgubWF0LWNhbGVuZGFyLWJvZHktY29tcGFyaXNvbi1pZGVudGljYWwpe2NvbG9yOiM3NTc1NzV9Lm1hdC1mb3JtLWZpZWxkLWRpc2FibGVkW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZGF0ZS1yYW5nZS1pbnB1dC1zZXBhcmF0b3JbX25nY29udGVudC0lQ09NUCVde2NvbG9yOiM3NTc1NzV9Lm1hdC1jYWxlbmRhci1ib2R5LWNlbGxbX25nY29udGVudC0lQ09NUCVdOm5vdCgubWF0LWNhbGVuZGFyLWJvZHktZGlzYWJsZWQpOmhvdmVyID4gLm1hdC1jYWxlbmRhci1ib2R5LWNlbGwtY29udGVudFtfbmdjb250ZW50LSVDT01QJV06bm90KC5tYXQtY2FsZW5kYXItYm9keS1zZWxlY3RlZCk6bm90KC5tYXQtY2FsZW5kYXItYm9keS1jb21wYXJpc29uLWlkZW50aWNhbCksIC5jZGsta2V5Ym9hcmQtZm9jdXNlZFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWNhbGVuZGFyLWJvZHktYWN0aXZlW19uZ2NvbnRlbnQtJUNPTVAlXSA+IC5tYXQtY2FsZW5kYXItYm9keS1jZWxsLWNvbnRlbnRbX25nY29udGVudC0lQ09NUCVdOm5vdCgubWF0LWNhbGVuZGFyLWJvZHktc2VsZWN0ZWQpOm5vdCgubWF0LWNhbGVuZGFyLWJvZHktY29tcGFyaXNvbi1pZGVudGljYWwpLCAuY2RrLXByb2dyYW0tZm9jdXNlZFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWNhbGVuZGFyLWJvZHktYWN0aXZlW19uZ2NvbnRlbnQtJUNPTVAlXSA+IC5tYXQtY2FsZW5kYXItYm9keS1jZWxsLWNvbnRlbnRbX25nY29udGVudC0lQ09NUCVdOm5vdCgubWF0LWNhbGVuZGFyLWJvZHktc2VsZWN0ZWQpOm5vdCgubWF0LWNhbGVuZGFyLWJvZHktY29tcGFyaXNvbi1pZGVudGljYWwpe2JhY2tncm91bmQtY29sb3I6cmdiYSgwLDAsMCwuMDQpfS5tYXQtY2FsZW5kYXItYm9keS1pbi1wcmV2aWV3W19uZ2NvbnRlbnQtJUNPTVAlXXtjb2xvcjpyZ2JhKDAsMCwwLC4yNCl9Lm1hdC1jYWxlbmRhci1ib2R5LXRvZGF5W19uZ2NvbnRlbnQtJUNPTVAlXTpub3QoLm1hdC1jYWxlbmRhci1ib2R5LXNlbGVjdGVkKTpub3QoLm1hdC1jYWxlbmRhci1ib2R5LWNvbXBhcmlzb24taWRlbnRpY2FsKXtib3JkZXItY29sb3I6cmdiYSgwLDAsMCwuMzgpfS5tYXQtY2FsZW5kYXItYm9keS1kaXNhYmxlZFtfbmdjb250ZW50LSVDT01QJV0gPiAubWF0LWNhbGVuZGFyLWJvZHktdG9kYXlbX25nY29udGVudC0lQ09NUCVdOm5vdCgubWF0LWNhbGVuZGFyLWJvZHktc2VsZWN0ZWQpOm5vdCgubWF0LWNhbGVuZGFyLWJvZHktY29tcGFyaXNvbi1pZGVudGljYWwpe2JvcmRlci1jb2xvcjpyZ2JhKDAsMCwwLC4xOCl9Lm1hdC1jYWxlbmRhci1ib2R5LWluLXJhbmdlW19uZ2NvbnRlbnQtJUNPTVAlXTo6YmVmb3Jle2JhY2tncm91bmQ6cmdiYSgyNDUsMTI0LDAsLjIpfS5tYXQtY2FsZW5kYXItYm9keS1jb21wYXJpc29uLWlkZW50aWNhbFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtY2FsZW5kYXItYm9keS1pbi1jb21wYXJpc29uLXJhbmdlW19uZ2NvbnRlbnQtJUNPTVAlXTo6YmVmb3Jle2JhY2tncm91bmQ6cmdiYSgyNDksMTcxLDAsLjIpfS5tYXQtY2FsZW5kYXItYm9keS1jb21wYXJpc29uLWJyaWRnZS1zdGFydFtfbmdjb250ZW50LSVDT01QJV06OmJlZm9yZSwgW2Rpcj1ydGxdW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtY2FsZW5kYXItYm9keS1jb21wYXJpc29uLWJyaWRnZS1lbmRbX25nY29udGVudC0lQ09NUCVdOjpiZWZvcmV7YmFja2dyb3VuZDpsaW5lYXItZ3JhZGllbnQodG8gcmlnaHQsIHJnYmEoMjQ1LCAxMjQsIDAsIDAuMikgNTAlLCByZ2JhKDI0OSwgMTcxLCAwLCAwLjIpIDUwJSl9Lm1hdC1jYWxlbmRhci1ib2R5LWNvbXBhcmlzb24tYnJpZGdlLWVuZFtfbmdjb250ZW50LSVDT01QJV06OmJlZm9yZSwgW2Rpcj1ydGxdW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtY2FsZW5kYXItYm9keS1jb21wYXJpc29uLWJyaWRnZS1zdGFydFtfbmdjb250ZW50LSVDT01QJV06OmJlZm9yZXtiYWNrZ3JvdW5kOmxpbmVhci1ncmFkaWVudCh0byBsZWZ0LCByZ2JhKDI0NSwgMTI0LCAwLCAwLjIpIDUwJSwgcmdiYSgyNDksIDE3MSwgMCwgMC4yKSA1MCUpfS5tYXQtY2FsZW5kYXItYm9keS1pbi1yYW5nZVtfbmdjb250ZW50LSVDT01QJV0gPiAubWF0LWNhbGVuZGFyLWJvZHktY29tcGFyaXNvbi1pZGVudGljYWxbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWNhbGVuZGFyLWJvZHktaW4tY29tcGFyaXNvbi1yYW5nZS5tYXQtY2FsZW5kYXItYm9keS1pbi1yYW5nZVtfbmdjb250ZW50LSVDT01QJV06OmFmdGVye2JhY2tncm91bmQ6I2E4ZGFiNX0ubWF0LWNhbGVuZGFyLWJvZHktY29tcGFyaXNvbi1pZGVudGljYWwubWF0LWNhbGVuZGFyLWJvZHktc2VsZWN0ZWRbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWNhbGVuZGFyLWJvZHktaW4tY29tcGFyaXNvbi1yYW5nZVtfbmdjb250ZW50LSVDT01QJV0gPiAubWF0LWNhbGVuZGFyLWJvZHktc2VsZWN0ZWRbX25nY29udGVudC0lQ09NUCVde2JhY2tncm91bmQ6IzQ2YTM1ZX0ubWF0LWNhbGVuZGFyLWJvZHktc2VsZWN0ZWRbX25nY29udGVudC0lQ09NUCVde2JhY2tncm91bmQtY29sb3I6I2Y1N2MwMDtjb2xvcjojZmZmfS5tYXQtY2FsZW5kYXItYm9keS1kaXNhYmxlZFtfbmdjb250ZW50LSVDT01QJV0gPiAubWF0LWNhbGVuZGFyLWJvZHktc2VsZWN0ZWRbX25nY29udGVudC0lQ09NUCVde2JhY2tncm91bmQtY29sb3I6cmdiYSgyNDUsMTI0LDAsLjQpfS5tYXQtY2FsZW5kYXItYm9keS10b2RheS5tYXQtY2FsZW5kYXItYm9keS1zZWxlY3RlZFtfbmdjb250ZW50LSVDT01QJV17Ym94LXNoYWRvdzppbnNldCAwIDAgMCAxcHggI2ZmZn0ubWF0LWRhdGVwaWNrZXItY29udGVudFtfbmdjb250ZW50LSVDT01QJV17Ym94LXNoYWRvdzowcHggMnB4IDRweCAtMXB4IHJnYmEoMCwgMCwgMCwgMC4yKSwwcHggNHB4IDVweCAwcHggcmdiYSgwLCAwLCAwLCAwLjE0KSwwcHggMXB4IDEwcHggMHB4IHJnYmEoMCwgMCwgMCwgMC4xMik7YmFja2dyb3VuZC1jb2xvcjojZmZmO2NvbG9yOiMyMTIxMjF9Lm1hdC1kYXRlcGlja2VyLWNvbnRlbnQubWF0LWFjY2VudFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWNhbGVuZGFyLWJvZHktaW4tcmFuZ2VbX25nY29udGVudC0lQ09NUCVdOjpiZWZvcmV7YmFja2dyb3VuZDpyZ2JhKDI1NSwxNTIsMCwuMil9Lm1hdC1kYXRlcGlja2VyLWNvbnRlbnQubWF0LWFjY2VudFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWNhbGVuZGFyLWJvZHktY29tcGFyaXNvbi1pZGVudGljYWxbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWRhdGVwaWNrZXItY29udGVudC5tYXQtYWNjZW50W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtY2FsZW5kYXItYm9keS1pbi1jb21wYXJpc29uLXJhbmdlW19uZ2NvbnRlbnQtJUNPTVAlXTo6YmVmb3Jle2JhY2tncm91bmQ6cmdiYSgyNDksMTcxLDAsLjIpfS5tYXQtZGF0ZXBpY2tlci1jb250ZW50Lm1hdC1hY2NlbnRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1jYWxlbmRhci1ib2R5LWNvbXBhcmlzb24tYnJpZGdlLXN0YXJ0W19uZ2NvbnRlbnQtJUNPTVAlXTo6YmVmb3JlLCAubWF0LWRhdGVwaWNrZXItY29udGVudC5tYXQtYWNjZW50W19uZ2NvbnRlbnQtJUNPTVAlXSAgIFtkaXI9cnRsXVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWNhbGVuZGFyLWJvZHktY29tcGFyaXNvbi1icmlkZ2UtZW5kW19uZ2NvbnRlbnQtJUNPTVAlXTo6YmVmb3Jle2JhY2tncm91bmQ6bGluZWFyLWdyYWRpZW50KHRvIHJpZ2h0LCByZ2JhKDI1NSwgMTUyLCAwLCAwLjIpIDUwJSwgcmdiYSgyNDksIDE3MSwgMCwgMC4yKSA1MCUpfS5tYXQtZGF0ZXBpY2tlci1jb250ZW50Lm1hdC1hY2NlbnRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1jYWxlbmRhci1ib2R5LWNvbXBhcmlzb24tYnJpZGdlLWVuZFtfbmdjb250ZW50LSVDT01QJV06OmJlZm9yZSwgLm1hdC1kYXRlcGlja2VyLWNvbnRlbnQubWF0LWFjY2VudFtfbmdjb250ZW50LSVDT01QJV0gICBbZGlyPXJ0bF1bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1jYWxlbmRhci1ib2R5LWNvbXBhcmlzb24tYnJpZGdlLXN0YXJ0W19uZ2NvbnRlbnQtJUNPTVAlXTo6YmVmb3Jle2JhY2tncm91bmQ6bGluZWFyLWdyYWRpZW50KHRvIGxlZnQsIHJnYmEoMjU1LCAxNTIsIDAsIDAuMikgNTAlLCByZ2JhKDI0OSwgMTcxLCAwLCAwLjIpIDUwJSl9Lm1hdC1kYXRlcGlja2VyLWNvbnRlbnQubWF0LWFjY2VudFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWNhbGVuZGFyLWJvZHktaW4tcmFuZ2VbX25nY29udGVudC0lQ09NUCVdID4gLm1hdC1jYWxlbmRhci1ib2R5LWNvbXBhcmlzb24taWRlbnRpY2FsW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1kYXRlcGlja2VyLWNvbnRlbnQubWF0LWFjY2VudFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWNhbGVuZGFyLWJvZHktaW4tY29tcGFyaXNvbi1yYW5nZS5tYXQtY2FsZW5kYXItYm9keS1pbi1yYW5nZVtfbmdjb250ZW50LSVDT01QJV06OmFmdGVye2JhY2tncm91bmQ6I2E4ZGFiNX0ubWF0LWRhdGVwaWNrZXItY29udGVudC5tYXQtYWNjZW50W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtY2FsZW5kYXItYm9keS1jb21wYXJpc29uLWlkZW50aWNhbC5tYXQtY2FsZW5kYXItYm9keS1zZWxlY3RlZFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtZGF0ZXBpY2tlci1jb250ZW50Lm1hdC1hY2NlbnRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1jYWxlbmRhci1ib2R5LWluLWNvbXBhcmlzb24tcmFuZ2VbX25nY29udGVudC0lQ09NUCVdID4gLm1hdC1jYWxlbmRhci1ib2R5LXNlbGVjdGVkW19uZ2NvbnRlbnQtJUNPTVAlXXtiYWNrZ3JvdW5kOiM0NmEzNWV9Lm1hdC1kYXRlcGlja2VyLWNvbnRlbnQubWF0LWFjY2VudFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWNhbGVuZGFyLWJvZHktc2VsZWN0ZWRbX25nY29udGVudC0lQ09NUCVde2JhY2tncm91bmQtY29sb3I6I2ZmOTgwMDtjb2xvcjojZmZmfS5tYXQtZGF0ZXBpY2tlci1jb250ZW50Lm1hdC1hY2NlbnRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1jYWxlbmRhci1ib2R5LWRpc2FibGVkW19uZ2NvbnRlbnQtJUNPTVAlXSA+IC5tYXQtY2FsZW5kYXItYm9keS1zZWxlY3RlZFtfbmdjb250ZW50LSVDT01QJV17YmFja2dyb3VuZC1jb2xvcjpyZ2JhKDI1NSwxNTIsMCwuNCl9Lm1hdC1kYXRlcGlja2VyLWNvbnRlbnQubWF0LWFjY2VudFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWNhbGVuZGFyLWJvZHktdG9kYXkubWF0LWNhbGVuZGFyLWJvZHktc2VsZWN0ZWRbX25nY29udGVudC0lQ09NUCVde2JveC1zaGFkb3c6aW5zZXQgMCAwIDAgMXB4ICNmZmZ9Lm1hdC1kYXRlcGlja2VyLWNvbnRlbnQubWF0LXdhcm5bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1jYWxlbmRhci1ib2R5LWluLXJhbmdlW19uZ2NvbnRlbnQtJUNPTVAlXTo6YmVmb3Jle2JhY2tncm91bmQ6cmdiYSgyNDQsNjcsNTQsLjIpfS5tYXQtZGF0ZXBpY2tlci1jb250ZW50Lm1hdC13YXJuW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtY2FsZW5kYXItYm9keS1jb21wYXJpc29uLWlkZW50aWNhbFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtZGF0ZXBpY2tlci1jb250ZW50Lm1hdC13YXJuW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtY2FsZW5kYXItYm9keS1pbi1jb21wYXJpc29uLXJhbmdlW19uZ2NvbnRlbnQtJUNPTVAlXTo6YmVmb3Jle2JhY2tncm91bmQ6cmdiYSgyNDksMTcxLDAsLjIpfS5tYXQtZGF0ZXBpY2tlci1jb250ZW50Lm1hdC13YXJuW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtY2FsZW5kYXItYm9keS1jb21wYXJpc29uLWJyaWRnZS1zdGFydFtfbmdjb250ZW50LSVDT01QJV06OmJlZm9yZSwgLm1hdC1kYXRlcGlja2VyLWNvbnRlbnQubWF0LXdhcm5bX25nY29udGVudC0lQ09NUCVdICAgW2Rpcj1ydGxdW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtY2FsZW5kYXItYm9keS1jb21wYXJpc29uLWJyaWRnZS1lbmRbX25nY29udGVudC0lQ09NUCVdOjpiZWZvcmV7YmFja2dyb3VuZDpsaW5lYXItZ3JhZGllbnQodG8gcmlnaHQsIHJnYmEoMjQ0LCA2NywgNTQsIDAuMikgNTAlLCByZ2JhKDI0OSwgMTcxLCAwLCAwLjIpIDUwJSl9Lm1hdC1kYXRlcGlja2VyLWNvbnRlbnQubWF0LXdhcm5bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1jYWxlbmRhci1ib2R5LWNvbXBhcmlzb24tYnJpZGdlLWVuZFtfbmdjb250ZW50LSVDT01QJV06OmJlZm9yZSwgLm1hdC1kYXRlcGlja2VyLWNvbnRlbnQubWF0LXdhcm5bX25nY29udGVudC0lQ09NUCVdICAgW2Rpcj1ydGxdW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtY2FsZW5kYXItYm9keS1jb21wYXJpc29uLWJyaWRnZS1zdGFydFtfbmdjb250ZW50LSVDT01QJV06OmJlZm9yZXtiYWNrZ3JvdW5kOmxpbmVhci1ncmFkaWVudCh0byBsZWZ0LCByZ2JhKDI0NCwgNjcsIDU0LCAwLjIpIDUwJSwgcmdiYSgyNDksIDE3MSwgMCwgMC4yKSA1MCUpfS5tYXQtZGF0ZXBpY2tlci1jb250ZW50Lm1hdC13YXJuW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtY2FsZW5kYXItYm9keS1pbi1yYW5nZVtfbmdjb250ZW50LSVDT01QJV0gPiAubWF0LWNhbGVuZGFyLWJvZHktY29tcGFyaXNvbi1pZGVudGljYWxbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWRhdGVwaWNrZXItY29udGVudC5tYXQtd2Fybltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWNhbGVuZGFyLWJvZHktaW4tY29tcGFyaXNvbi1yYW5nZS5tYXQtY2FsZW5kYXItYm9keS1pbi1yYW5nZVtfbmdjb250ZW50LSVDT01QJV06OmFmdGVye2JhY2tncm91bmQ6I2E4ZGFiNX0ubWF0LWRhdGVwaWNrZXItY29udGVudC5tYXQtd2Fybltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWNhbGVuZGFyLWJvZHktY29tcGFyaXNvbi1pZGVudGljYWwubWF0LWNhbGVuZGFyLWJvZHktc2VsZWN0ZWRbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWRhdGVwaWNrZXItY29udGVudC5tYXQtd2Fybltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWNhbGVuZGFyLWJvZHktaW4tY29tcGFyaXNvbi1yYW5nZVtfbmdjb250ZW50LSVDT01QJV0gPiAubWF0LWNhbGVuZGFyLWJvZHktc2VsZWN0ZWRbX25nY29udGVudC0lQ09NUCVde2JhY2tncm91bmQ6IzQ2YTM1ZX0ubWF0LWRhdGVwaWNrZXItY29udGVudC5tYXQtd2Fybltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWNhbGVuZGFyLWJvZHktc2VsZWN0ZWRbX25nY29udGVudC0lQ09NUCVde2JhY2tncm91bmQtY29sb3I6I2Y0NDMzNjtjb2xvcjojZmZmfS5tYXQtZGF0ZXBpY2tlci1jb250ZW50Lm1hdC13YXJuW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtY2FsZW5kYXItYm9keS1kaXNhYmxlZFtfbmdjb250ZW50LSVDT01QJV0gPiAubWF0LWNhbGVuZGFyLWJvZHktc2VsZWN0ZWRbX25nY29udGVudC0lQ09NUCVde2JhY2tncm91bmQtY29sb3I6cmdiYSgyNDQsNjcsNTQsLjQpfS5tYXQtZGF0ZXBpY2tlci1jb250ZW50Lm1hdC13YXJuW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtY2FsZW5kYXItYm9keS10b2RheS5tYXQtY2FsZW5kYXItYm9keS1zZWxlY3RlZFtfbmdjb250ZW50LSVDT01QJV17Ym94LXNoYWRvdzppbnNldCAwIDAgMCAxcHggI2ZmZn0ubWF0LWRhdGVwaWNrZXItY29udGVudC10b3VjaFtfbmdjb250ZW50LSVDT01QJV17Ym94LXNoYWRvdzowcHggMHB4IDBweCAwcHggcmdiYSgwLCAwLCAwLCAwLjIpLDBweCAwcHggMHB4IDBweCByZ2JhKDAsIDAsIDAsIDAuMTQpLDBweCAwcHggMHB4IDBweCByZ2JhKDAsIDAsIDAsIDAuMTIpfS5tYXQtZGF0ZXBpY2tlci10b2dnbGUtYWN0aXZlW19uZ2NvbnRlbnQtJUNPTVAlXXtjb2xvcjojZjU3YzAwfS5tYXQtZGF0ZXBpY2tlci10b2dnbGUtYWN0aXZlLm1hdC1hY2NlbnRbX25nY29udGVudC0lQ09NUCVde2NvbG9yOiNmZjk4MDB9Lm1hdC1kYXRlcGlja2VyLXRvZ2dsZS1hY3RpdmUubWF0LXdhcm5bX25nY29udGVudC0lQ09NUCVde2NvbG9yOiNmNDQzMzZ9Lm1hdC1kYXRlLXJhbmdlLWlucHV0LWlubmVyW2Rpc2FibGVkXVtfbmdjb250ZW50LSVDT01QJV17Y29sb3I6Izc1NzU3NX0ubWF0LWRpYWxvZy1jb250YWluZXJbX25nY29udGVudC0lQ09NUCVde2JveC1zaGFkb3c6MHB4IDExcHggMTVweCAtN3B4IHJnYmEoMCwgMCwgMCwgMC4yKSwwcHggMjRweCAzOHB4IDNweCByZ2JhKDAsIDAsIDAsIDAuMTQpLDBweCA5cHggNDZweCA4cHggcmdiYSgwLCAwLCAwLCAwLjEyKTtiYWNrZ3JvdW5kOiNmZmY7Y29sb3I6IzIxMjEyMX0ubWF0LWRpdmlkZXJbX25nY29udGVudC0lQ09NUCVde2JvcmRlci10b3AtY29sb3I6cmdiYSgwLDAsMCwuMTIpfS5tYXQtZGl2aWRlci12ZXJ0aWNhbFtfbmdjb250ZW50LSVDT01QJV17Ym9yZGVyLXJpZ2h0LWNvbG9yOnJnYmEoMCwwLDAsLjEyKX0ubWF0LWV4cGFuc2lvbi1wYW5lbFtfbmdjb250ZW50LSVDT01QJV17YmFja2dyb3VuZDojZmZmO2NvbG9yOiMyMTIxMjF9Lm1hdC1leHBhbnNpb24tcGFuZWxbX25nY29udGVudC0lQ09NUCVdOm5vdChbY2xhc3MqPW1hdC1lbGV2YXRpb24tel0pe2JveC1zaGFkb3c6MHB4IDNweCAxcHggLTJweCByZ2JhKDAsIDAsIDAsIDAuMiksMHB4IDJweCAycHggMHB4IHJnYmEoMCwgMCwgMCwgMC4xNCksMHB4IDFweCA1cHggMHB4IHJnYmEoMCwgMCwgMCwgMC4xMil9Lm1hdC1hY3Rpb24tcm93W19uZ2NvbnRlbnQtJUNPTVAlXXtib3JkZXItdG9wLWNvbG9yOnJnYmEoMCwwLDAsLjEyKX0ubWF0LWV4cGFuc2lvbi1wYW5lbFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWV4cGFuc2lvbi1wYW5lbC1oZWFkZXIuY2RrLWtleWJvYXJkLWZvY3VzZWRbX25nY29udGVudC0lQ09NUCVdOm5vdChbYXJpYS1kaXNhYmxlZD10cnVlXSksIC5tYXQtZXhwYW5zaW9uLXBhbmVsW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZXhwYW5zaW9uLXBhbmVsLWhlYWRlci5jZGstcHJvZ3JhbS1mb2N1c2VkW19uZ2NvbnRlbnQtJUNPTVAlXTpub3QoW2FyaWEtZGlzYWJsZWQ9dHJ1ZV0pLCAubWF0LWV4cGFuc2lvbi1wYW5lbFtfbmdjb250ZW50LSVDT01QJV06bm90KC5tYXQtZXhwYW5kZWQpICAgLm1hdC1leHBhbnNpb24tcGFuZWwtaGVhZGVyW19uZ2NvbnRlbnQtJUNPTVAlXTpob3Zlcjpub3QoW2FyaWEtZGlzYWJsZWQ9dHJ1ZV0pe2JhY2tncm91bmQ6cmdiYSgwLDAsMCwuMDQpfUBtZWRpYShob3Zlcjogbm9uZSl7Lm1hdC1leHBhbnNpb24tcGFuZWxbX25nY29udGVudC0lQ09NUCVdOm5vdCgubWF0LWV4cGFuZGVkKTpub3QoW2FyaWEtZGlzYWJsZWQ9dHJ1ZV0pICAgLm1hdC1leHBhbnNpb24tcGFuZWwtaGVhZGVyW19uZ2NvbnRlbnQtJUNPTVAlXTpob3ZlcntiYWNrZ3JvdW5kOiNmZmZ9fS5tYXQtZXhwYW5zaW9uLXBhbmVsLWhlYWRlci10aXRsZVtfbmdjb250ZW50LSVDT01QJV17Y29sb3I6IzIxMjEyMX0ubWF0LWV4cGFuc2lvbi1wYW5lbC1oZWFkZXItZGVzY3JpcHRpb25bX25nY29udGVudC0lQ09NUCVdLCAubWF0LWV4cGFuc2lvbi1pbmRpY2F0b3JbX25nY29udGVudC0lQ09NUCVdOjphZnRlcntjb2xvcjojNjE2MTYxfS5tYXQtZXhwYW5zaW9uLXBhbmVsLWhlYWRlclthcmlhLWRpc2FibGVkPXRydWVdW19uZ2NvbnRlbnQtJUNPTVAlXXtjb2xvcjpyZ2JhKDAsMCwwLC4yNil9Lm1hdC1leHBhbnNpb24tcGFuZWwtaGVhZGVyW2FyaWEtZGlzYWJsZWQ9dHJ1ZV1bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1leHBhbnNpb24tcGFuZWwtaGVhZGVyLXRpdGxlW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1leHBhbnNpb24tcGFuZWwtaGVhZGVyW2FyaWEtZGlzYWJsZWQ9dHJ1ZV1bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1leHBhbnNpb24tcGFuZWwtaGVhZGVyLWRlc2NyaXB0aW9uW19uZ2NvbnRlbnQtJUNPTVAlXXtjb2xvcjppbmhlcml0fS5tYXQtZXhwYW5zaW9uLXBhbmVsLWhlYWRlcltfbmdjb250ZW50LSVDT01QJV17aGVpZ2h0OjQ4cHh9Lm1hdC1leHBhbnNpb24tcGFuZWwtaGVhZGVyLm1hdC1leHBhbmRlZFtfbmdjb250ZW50LSVDT01QJV17aGVpZ2h0OjY0cHh9Lm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXtjb2xvcjpyZ2JhKDk3LDk3LDk3LC42KX0ubWF0LWhpbnRbX25nY29udGVudC0lQ09NUCVde2NvbG9yOnJnYmEoOTcsOTcsOTcsLjYpfS5tYXQtZm9ybS1maWVsZC5tYXQtZm9jdXNlZFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVde2NvbG9yOiNmNTdjMDB9Lm1hdC1mb3JtLWZpZWxkLm1hdC1mb2N1c2VkW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbC5tYXQtYWNjZW50W19uZ2NvbnRlbnQtJUNPTVAlXXtjb2xvcjojZmY5ODAwfS5tYXQtZm9ybS1maWVsZC5tYXQtZm9jdXNlZFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWwubWF0LXdhcm5bX25nY29udGVudC0lQ09NUCVde2NvbG9yOiNmNDQzMzZ9Lm1hdC1mb2N1c2VkW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1yZXF1aXJlZC1tYXJrZXJbX25nY29udGVudC0lQ09NUCVde2NvbG9yOiNmZjk4MDB9Lm1hdC1mb3JtLWZpZWxkLXJpcHBsZVtfbmdjb250ZW50LSVDT01QJV17YmFja2dyb3VuZC1jb2xvcjpyZ2JhKDAsMCwwLC44Nyl9Lm1hdC1mb3JtLWZpZWxkLm1hdC1mb2N1c2VkW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1yaXBwbGVbX25nY29udGVudC0lQ09NUCVde2JhY2tncm91bmQtY29sb3I6I2Y1N2MwMH0ubWF0LWZvcm0tZmllbGQubWF0LWZvY3VzZWRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLXJpcHBsZS5tYXQtYWNjZW50W19uZ2NvbnRlbnQtJUNPTVAlXXtiYWNrZ3JvdW5kLWNvbG9yOiNmZjk4MDB9Lm1hdC1mb3JtLWZpZWxkLm1hdC1mb2N1c2VkW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1yaXBwbGUubWF0LXdhcm5bX25nY29udGVudC0lQ09NUCVde2JhY2tncm91bmQtY29sb3I6I2Y0NDMzNn0ubWF0LWZvcm0tZmllbGQtdHlwZS1tYXQtbmF0aXZlLXNlbGVjdC5tYXQtZm9jdXNlZFtfbmdjb250ZW50LSVDT01QJV06bm90KC5tYXQtZm9ybS1maWVsZC1pbnZhbGlkKSAgIC5tYXQtZm9ybS1maWVsZC1pbmZpeFtfbmdjb250ZW50LSVDT01QJV06OmFmdGVye2NvbG9yOiNmNTdjMDB9Lm1hdC1mb3JtLWZpZWxkLXR5cGUtbWF0LW5hdGl2ZS1zZWxlY3QubWF0LWZvY3VzZWRbX25nY29udGVudC0lQ09NUCVdOm5vdCgubWF0LWZvcm0tZmllbGQtaW52YWxpZCkubWF0LWFjY2VudCAgIC5tYXQtZm9ybS1maWVsZC1pbmZpeFtfbmdjb250ZW50LSVDT01QJV06OmFmdGVye2NvbG9yOiNmZjk4MDB9Lm1hdC1mb3JtLWZpZWxkLXR5cGUtbWF0LW5hdGl2ZS1zZWxlY3QubWF0LWZvY3VzZWRbX25nY29udGVudC0lQ09NUCVdOm5vdCgubWF0LWZvcm0tZmllbGQtaW52YWxpZCkubWF0LXdhcm4gICAubWF0LWZvcm0tZmllbGQtaW5maXhbX25nY29udGVudC0lQ09NUCVdOjphZnRlcntjb2xvcjojZjQ0MzM2fS5tYXQtZm9ybS1maWVsZC5tYXQtZm9ybS1maWVsZC1pbnZhbGlkW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17Y29sb3I6I2Y0NDMzNn0ubWF0LWZvcm0tZmllbGQubWF0LWZvcm0tZmllbGQtaW52YWxpZFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWwubWF0LWFjY2VudFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtZm9ybS1maWVsZC5tYXQtZm9ybS1maWVsZC1pbnZhbGlkW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtcmVxdWlyZWQtbWFya2VyW19uZ2NvbnRlbnQtJUNPTVAlXXtjb2xvcjojZjQ0MzM2fS5tYXQtZm9ybS1maWVsZC5tYXQtZm9ybS1maWVsZC1pbnZhbGlkW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1yaXBwbGVbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWZvcm0tZmllbGQubWF0LWZvcm0tZmllbGQtaW52YWxpZFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtcmlwcGxlLm1hdC1hY2NlbnRbX25nY29udGVudC0lQ09NUCVde2JhY2tncm91bmQtY29sb3I6I2Y0NDMzNn0ubWF0LWVycm9yW19uZ2NvbnRlbnQtJUNPTVAlXXtjb2xvcjojZjQ0MzM2fS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWxlZ2FjeVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVde2NvbG9yOiM2MTYxNjF9Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtbGVnYWN5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaGludFtfbmdjb250ZW50LSVDT01QJV17Y29sb3I6IzYxNjE2MX0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1sZWdhY3lbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLXVuZGVybGluZVtfbmdjb250ZW50LSVDT01QJV17YmFja2dyb3VuZC1jb2xvcjpyZ2JhKDAsMCwwLC40Mil9Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtbGVnYWN5Lm1hdC1mb3JtLWZpZWxkLWRpc2FibGVkW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC11bmRlcmxpbmVbX25nY29udGVudC0lQ09NUCVde2JhY2tncm91bmQtaW1hZ2U6bGluZWFyLWdyYWRpZW50KHRvIHJpZ2h0LCByZ2JhKDAsIDAsIDAsIDAuNDIpIDAlLCByZ2JhKDAsIDAsIDAsIDAuNDIpIDMzJSwgdHJhbnNwYXJlbnQgMCUpO2JhY2tncm91bmQtc2l6ZTo0cHggMTAwJTtiYWNrZ3JvdW5kLXJlcGVhdDpyZXBlYXQteH0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1zdGFuZGFyZFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtdW5kZXJsaW5lW19uZ2NvbnRlbnQtJUNPTVAlXXtiYWNrZ3JvdW5kLWNvbG9yOnJnYmEoMCwwLDAsLjQyKX0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1zdGFuZGFyZC5tYXQtZm9ybS1maWVsZC1kaXNhYmxlZFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtdW5kZXJsaW5lW19uZ2NvbnRlbnQtJUNPTVAlXXtiYWNrZ3JvdW5kLWltYWdlOmxpbmVhci1ncmFkaWVudCh0byByaWdodCwgcmdiYSgwLCAwLCAwLCAwLjQyKSAwJSwgcmdiYSgwLCAwLCAwLCAwLjQyKSAzMyUsIHRyYW5zcGFyZW50IDAlKTtiYWNrZ3JvdW5kLXNpemU6NHB4IDEwMCU7YmFja2dyb3VuZC1yZXBlYXQ6cmVwZWF0LXh9Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtZmlsbFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtZmxleFtfbmdjb250ZW50LSVDT01QJV17YmFja2dyb3VuZC1jb2xvcjpyZ2JhKDAsMCwwLC4wNCl9Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtZmlsbC5tYXQtZm9ybS1maWVsZC1kaXNhYmxlZFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtZmxleFtfbmdjb250ZW50LSVDT01QJV17YmFja2dyb3VuZC1jb2xvcjpyZ2JhKDAsMCwwLC4wMil9Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtZmlsbFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtdW5kZXJsaW5lW19uZ2NvbnRlbnQtJUNPTVAlXTo6YmVmb3Jle2JhY2tncm91bmQtY29sb3I6cmdiYSgwLDAsMCwuNDIpfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWZpbGwubWF0LWZvcm0tZmllbGQtZGlzYWJsZWRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXtjb2xvcjojNzU3NTc1fS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWZpbGwubWF0LWZvcm0tZmllbGQtZGlzYWJsZWRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLXVuZGVybGluZVtfbmdjb250ZW50LSVDT01QJV06OmJlZm9yZXtiYWNrZ3JvdW5kLWNvbG9yOnRyYW5zcGFyZW50fS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLW91dGxpbmVbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLW91dGxpbmVbX25nY29udGVudC0lQ09NUCVde2NvbG9yOnJnYmEoMCwwLDAsLjEyKX0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1vdXRsaW5lW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1vdXRsaW5lLXRoaWNrW19uZ2NvbnRlbnQtJUNPTVAlXXtjb2xvcjpyZ2JhKDAsMCwwLC44Nyl9Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2Utb3V0bGluZS5tYXQtZm9jdXNlZFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtb3V0bGluZS10aGlja1tfbmdjb250ZW50LSVDT01QJV17Y29sb3I6I2Y1N2MwMH0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1vdXRsaW5lLm1hdC1mb2N1c2VkLm1hdC1hY2NlbnRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLW91dGxpbmUtdGhpY2tbX25nY29udGVudC0lQ09NUCVde2NvbG9yOiNmZjk4MDB9Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2Utb3V0bGluZS5tYXQtZm9jdXNlZC5tYXQtd2Fybltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtb3V0bGluZS10aGlja1tfbmdjb250ZW50LSVDT01QJV17Y29sb3I6I2Y0NDMzNn0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1vdXRsaW5lLm1hdC1mb3JtLWZpZWxkLWludmFsaWQubWF0LWZvcm0tZmllbGQtaW52YWxpZFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtb3V0bGluZS10aGlja1tfbmdjb250ZW50LSVDT01QJV17Y29sb3I6I2Y0NDMzNn0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1vdXRsaW5lLm1hdC1mb3JtLWZpZWxkLWRpc2FibGVkW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17Y29sb3I6Izc1NzU3NX0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1vdXRsaW5lLm1hdC1mb3JtLWZpZWxkLWRpc2FibGVkW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1vdXRsaW5lW19uZ2NvbnRlbnQtJUNPTVAlXXtjb2xvcjpyZ2JhKDAsMCwwLC4wNil9Lm1hdC1pY29uLm1hdC1wcmltYXJ5W19uZ2NvbnRlbnQtJUNPTVAlXXtjb2xvcjojZjU3YzAwfS5tYXQtaWNvbi5tYXQtYWNjZW50W19uZ2NvbnRlbnQtJUNPTVAlXXtjb2xvcjojZmY5ODAwfS5tYXQtaWNvbi5tYXQtd2Fybltfbmdjb250ZW50LSVDT01QJV17Y29sb3I6I2Y0NDMzNn0ubWF0LWZvcm0tZmllbGQtdHlwZS1tYXQtbmF0aXZlLXNlbGVjdFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtaW5maXhbX25nY29udGVudC0lQ09NUCVdOjphZnRlcntjb2xvcjojNjE2MTYxfS5tYXQtaW5wdXQtZWxlbWVudFtfbmdjb250ZW50LSVDT01QJV06ZGlzYWJsZWQsIC5tYXQtZm9ybS1maWVsZC10eXBlLW1hdC1uYXRpdmUtc2VsZWN0Lm1hdC1mb3JtLWZpZWxkLWRpc2FibGVkW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1pbmZpeFtfbmdjb250ZW50LSVDT01QJV06OmFmdGVye2NvbG9yOiM3NTc1NzV9Lm1hdC1pbnB1dC1lbGVtZW50W19uZ2NvbnRlbnQtJUNPTVAlXXtjYXJldC1jb2xvcjojZjU3YzAwfS5tYXQtaW5wdXQtZWxlbWVudFtfbmdjb250ZW50LSVDT01QJV06OnBsYWNlaG9sZGVye2NvbG9yOnJnYmEoOTcsOTcsOTcsLjQyKX0ubWF0LWlucHV0LWVsZW1lbnRbX25nY29udGVudC0lQ09NUCVdOjotbW96LXBsYWNlaG9sZGVye2NvbG9yOnJnYmEoOTcsOTcsOTcsLjQyKX0ubWF0LWlucHV0LWVsZW1lbnRbX25nY29udGVudC0lQ09NUCVdOjotd2Via2l0LWlucHV0LXBsYWNlaG9sZGVye2NvbG9yOnJnYmEoOTcsOTcsOTcsLjQyKX0ubWF0LWlucHV0LWVsZW1lbnRbX25nY29udGVudC0lQ09NUCVdOi1tcy1pbnB1dC1wbGFjZWhvbGRlcntjb2xvcjpyZ2JhKDk3LDk3LDk3LC40Mil9Lm1hdC1mb3JtLWZpZWxkLm1hdC1hY2NlbnRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pbnB1dC1lbGVtZW50W19uZ2NvbnRlbnQtJUNPTVAlXXtjYXJldC1jb2xvcjojZmY5ODAwfS5tYXQtZm9ybS1maWVsZC5tYXQtd2Fybltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWlucHV0LWVsZW1lbnRbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWZvcm0tZmllbGQtaW52YWxpZFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWlucHV0LWVsZW1lbnRbX25nY29udGVudC0lQ09NUCVde2NhcmV0LWNvbG9yOiNmNDQzMzZ9Lm1hdC1mb3JtLWZpZWxkLXR5cGUtbWF0LW5hdGl2ZS1zZWxlY3QubWF0LWZvcm0tZmllbGQtaW52YWxpZFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtaW5maXhbX25nY29udGVudC0lQ09NUCVdOjphZnRlcntjb2xvcjojZjQ0MzM2fS5tYXQtbGlzdC1iYXNlW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGlzdC1pdGVtW19uZ2NvbnRlbnQtJUNPTVAlXXtjb2xvcjojMjEyMTIxfS5tYXQtbGlzdC1iYXNlW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGlzdC1vcHRpb25bX25nY29udGVudC0lQ09NUCVde2NvbG9yOiMyMTIxMjF9Lm1hdC1saXN0LWJhc2VbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1zdWJoZWFkZXJbX25nY29udGVudC0lQ09NUCVde2NvbG9yOiM2MTYxNjF9Lm1hdC1saXN0LWl0ZW0tZGlzYWJsZWRbX25nY29udGVudC0lQ09NUCVde2JhY2tncm91bmQtY29sb3I6I2VlZX0ubWF0LWxpc3Qtb3B0aW9uW19uZ2NvbnRlbnQtJUNPTVAlXTpob3ZlciwgLm1hdC1saXN0LW9wdGlvbltfbmdjb250ZW50LSVDT01QJV06Zm9jdXMsIC5tYXQtbmF2LWxpc3RbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saXN0LWl0ZW1bX25nY29udGVudC0lQ09NUCVdOmhvdmVyLCAubWF0LW5hdi1saXN0W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGlzdC1pdGVtW19uZ2NvbnRlbnQtJUNPTVAlXTpmb2N1cywgLm1hdC1hY3Rpb24tbGlzdFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpc3QtaXRlbVtfbmdjb250ZW50LSVDT01QJV06aG92ZXIsIC5tYXQtYWN0aW9uLWxpc3RbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saXN0LWl0ZW1bX25nY29udGVudC0lQ09NUCVdOmZvY3Vze2JhY2tncm91bmQ6cmdiYSgwLDAsMCwuMDQpfS5tYXQtbGlzdC1zaW5nbGUtc2VsZWN0ZWQtb3B0aW9uW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1saXN0LXNpbmdsZS1zZWxlY3RlZC1vcHRpb25bX25nY29udGVudC0lQ09NUCVdOmhvdmVyLCAubWF0LWxpc3Qtc2luZ2xlLXNlbGVjdGVkLW9wdGlvbltfbmdjb250ZW50LSVDT01QJV06Zm9jdXN7YmFja2dyb3VuZDpyZ2JhKDAsMCwwLC4xMil9Lm1hdC1tZW51LXBhbmVsW19uZ2NvbnRlbnQtJUNPTVAlXXtiYWNrZ3JvdW5kOiNmZmZ9Lm1hdC1tZW51LXBhbmVsW19uZ2NvbnRlbnQtJUNPTVAlXTpub3QoW2NsYXNzKj1tYXQtZWxldmF0aW9uLXpdKXtib3gtc2hhZG93OjBweCAycHggNHB4IC0xcHggcmdiYSgwLCAwLCAwLCAwLjIpLDBweCA0cHggNXB4IDBweCByZ2JhKDAsIDAsIDAsIDAuMTQpLDBweCAxcHggMTBweCAwcHggcmdiYSgwLCAwLCAwLCAwLjEyKX0ubWF0LW1lbnUtaXRlbVtfbmdjb250ZW50LSVDT01QJV17YmFja2dyb3VuZDp0cmFuc3BhcmVudDtjb2xvcjojMjEyMTIxfS5tYXQtbWVudS1pdGVtW2Rpc2FibGVkXVtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtbWVudS1pdGVtW2Rpc2FibGVkXVtfbmdjb250ZW50LSVDT01QJV06OmFmdGVye2NvbG9yOnJnYmEoMCwwLDAsLjM4KX0ubWF0LW1lbnUtaXRlbVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWljb24tbm8tY29sb3JbX25nY29udGVudC0lQ09NUCVdLCAubWF0LW1lbnUtaXRlbS1zdWJtZW51LXRyaWdnZXJbX25nY29udGVudC0lQ09NUCVdOjphZnRlcntjb2xvcjpyZ2JhKDAsMCwwLC41NCl9Lm1hdC1tZW51LWl0ZW1bX25nY29udGVudC0lQ09NUCVdOmhvdmVyOm5vdChbZGlzYWJsZWRdKSwgLm1hdC1tZW51LWl0ZW0uY2RrLXByb2dyYW0tZm9jdXNlZFtfbmdjb250ZW50LSVDT01QJV06bm90KFtkaXNhYmxlZF0pLCAubWF0LW1lbnUtaXRlbS5jZGsta2V5Ym9hcmQtZm9jdXNlZFtfbmdjb250ZW50LSVDT01QJV06bm90KFtkaXNhYmxlZF0pLCAubWF0LW1lbnUtaXRlbS1oaWdobGlnaHRlZFtfbmdjb250ZW50LSVDT01QJV06bm90KFtkaXNhYmxlZF0pe2JhY2tncm91bmQ6cmdiYSgwLDAsMCwuMDQpfS5tYXQtcGFnaW5hdG9yW19uZ2NvbnRlbnQtJUNPTVAlXXtiYWNrZ3JvdW5kOiNmZmZ9Lm1hdC1wYWdpbmF0b3JbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXBhZ2luYXRvci1wYWdlLXNpemVbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1zZWxlY3QtdHJpZ2dlcltfbmdjb250ZW50LSVDT01QJV17Y29sb3I6IzYxNjE2MX0ubWF0LXBhZ2luYXRvci1kZWNyZW1lbnRbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXBhZ2luYXRvci1pbmNyZW1lbnRbX25nY29udGVudC0lQ09NUCVde2JvcmRlci10b3A6MnB4IHNvbGlkIHJnYmEoMCwwLDAsLjU0KTtib3JkZXItcmlnaHQ6MnB4IHNvbGlkIHJnYmEoMCwwLDAsLjU0KX0ubWF0LXBhZ2luYXRvci1maXJzdFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtcGFnaW5hdG9yLWxhc3RbX25nY29udGVudC0lQ09NUCVde2JvcmRlci10b3A6MnB4IHNvbGlkIHJnYmEoMCwwLDAsLjU0KX0ubWF0LWljb24tYnV0dG9uW2Rpc2FibGVkXVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXBhZ2luYXRvci1kZWNyZW1lbnRbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWljb24tYnV0dG9uW2Rpc2FibGVkXVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXBhZ2luYXRvci1pbmNyZW1lbnRbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWljb24tYnV0dG9uW2Rpc2FibGVkXVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXBhZ2luYXRvci1maXJzdFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtaWNvbi1idXR0b25bZGlzYWJsZWRdW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtcGFnaW5hdG9yLWxhc3RbX25nY29udGVudC0lQ09NUCVde2JvcmRlci1jb2xvcjpyZ2JhKDAsMCwwLC4zOCl9Lm1hdC1wYWdpbmF0b3ItY29udGFpbmVyW19uZ2NvbnRlbnQtJUNPTVAlXXttaW4taGVpZ2h0OjU2cHh9Lm1hdC1wcm9ncmVzcy1iYXItYmFja2dyb3VuZFtfbmdjb250ZW50LSVDT01QJV17ZmlsbDojZmY5ODAwfS5tYXQtcHJvZ3Jlc3MtYmFyLWJ1ZmZlcltfbmdjb250ZW50LSVDT01QJV17YmFja2dyb3VuZC1jb2xvcjojZmY5ODAwfS5tYXQtcHJvZ3Jlc3MtYmFyLWZpbGxbX25nY29udGVudC0lQ09NUCVdOjphZnRlcntiYWNrZ3JvdW5kLWNvbG9yOiNmNTdjMDB9Lm1hdC1wcm9ncmVzcy1iYXIubWF0LWFjY2VudFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXByb2dyZXNzLWJhci1iYWNrZ3JvdW5kW19uZ2NvbnRlbnQtJUNPTVAlXXtmaWxsOiNmZjk4MDB9Lm1hdC1wcm9ncmVzcy1iYXIubWF0LWFjY2VudFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXByb2dyZXNzLWJhci1idWZmZXJbX25nY29udGVudC0lQ09NUCVde2JhY2tncm91bmQtY29sb3I6I2ZmOTgwMH0ubWF0LXByb2dyZXNzLWJhci5tYXQtYWNjZW50W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtcHJvZ3Jlc3MtYmFyLWZpbGxbX25nY29udGVudC0lQ09NUCVdOjphZnRlcntiYWNrZ3JvdW5kLWNvbG9yOiNmZjk4MDB9Lm1hdC1wcm9ncmVzcy1iYXIubWF0LXdhcm5bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1wcm9ncmVzcy1iYXItYmFja2dyb3VuZFtfbmdjb250ZW50LSVDT01QJV17ZmlsbDojZmZjZGQyfS5tYXQtcHJvZ3Jlc3MtYmFyLm1hdC13YXJuW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtcHJvZ3Jlc3MtYmFyLWJ1ZmZlcltfbmdjb250ZW50LSVDT01QJV17YmFja2dyb3VuZC1jb2xvcjojZmZjZGQyfS5tYXQtcHJvZ3Jlc3MtYmFyLm1hdC13YXJuW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtcHJvZ3Jlc3MtYmFyLWZpbGxbX25nY29udGVudC0lQ09NUCVdOjphZnRlcntiYWNrZ3JvdW5kLWNvbG9yOiNmNDQzMzZ9Lm1hdC1wcm9ncmVzcy1zcGlubmVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIGNpcmNsZVtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtc3Bpbm5lcltfbmdjb250ZW50LSVDT01QJV0gICBjaXJjbGVbX25nY29udGVudC0lQ09NUCVde3N0cm9rZTojZjU3YzAwfS5tYXQtcHJvZ3Jlc3Mtc3Bpbm5lci5tYXQtYWNjZW50W19uZ2NvbnRlbnQtJUNPTVAlXSAgIGNpcmNsZVtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtc3Bpbm5lci5tYXQtYWNjZW50W19uZ2NvbnRlbnQtJUNPTVAlXSAgIGNpcmNsZVtfbmdjb250ZW50LSVDT01QJV17c3Ryb2tlOiNmZjk4MDB9Lm1hdC1wcm9ncmVzcy1zcGlubmVyLm1hdC13YXJuW19uZ2NvbnRlbnQtJUNPTVAlXSAgIGNpcmNsZVtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtc3Bpbm5lci5tYXQtd2Fybltfbmdjb250ZW50LSVDT01QJV0gICBjaXJjbGVbX25nY29udGVudC0lQ09NUCVde3N0cm9rZTojZjQ0MzM2fS5tYXQtcmFkaW8tb3V0ZXItY2lyY2xlW19uZ2NvbnRlbnQtJUNPTVAlXXtib3JkZXItY29sb3I6IzYxNjE2MX0ubWF0LXJhZGlvLWJ1dHRvbi5tYXQtcHJpbWFyeS5tYXQtcmFkaW8tY2hlY2tlZFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXJhZGlvLW91dGVyLWNpcmNsZVtfbmdjb250ZW50LSVDT01QJV17Ym9yZGVyLWNvbG9yOiNmNTdjMDB9Lm1hdC1yYWRpby1idXR0b24ubWF0LXByaW1hcnlbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1yYWRpby1pbm5lci1jaXJjbGVbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXJhZGlvLWJ1dHRvbi5tYXQtcHJpbWFyeVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXJhZGlvLXJpcHBsZVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXJpcHBsZS1lbGVtZW50W19uZ2NvbnRlbnQtJUNPTVAlXTpub3QoLm1hdC1yYWRpby1wZXJzaXN0ZW50LXJpcHBsZSksIC5tYXQtcmFkaW8tYnV0dG9uLm1hdC1wcmltYXJ5Lm1hdC1yYWRpby1jaGVja2VkW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtcmFkaW8tcGVyc2lzdGVudC1yaXBwbGVbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXJhZGlvLWJ1dHRvbi5tYXQtcHJpbWFyeVtfbmdjb250ZW50LSVDT01QJV06YWN0aXZlICAgLm1hdC1yYWRpby1wZXJzaXN0ZW50LXJpcHBsZVtfbmdjb250ZW50LSVDT01QJV17YmFja2dyb3VuZC1jb2xvcjojZjU3YzAwfS5tYXQtcmFkaW8tYnV0dG9uLm1hdC1hY2NlbnQubWF0LXJhZGlvLWNoZWNrZWRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1yYWRpby1vdXRlci1jaXJjbGVbX25nY29udGVudC0lQ09NUCVde2JvcmRlci1jb2xvcjojZmY5ODAwfS5tYXQtcmFkaW8tYnV0dG9uLm1hdC1hY2NlbnRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1yYWRpby1pbm5lci1jaXJjbGVbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXJhZGlvLWJ1dHRvbi5tYXQtYWNjZW50W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtcmFkaW8tcmlwcGxlW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtcmlwcGxlLWVsZW1lbnRbX25nY29udGVudC0lQ09NUCVdOm5vdCgubWF0LXJhZGlvLXBlcnNpc3RlbnQtcmlwcGxlKSwgLm1hdC1yYWRpby1idXR0b24ubWF0LWFjY2VudC5tYXQtcmFkaW8tY2hlY2tlZFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXJhZGlvLXBlcnNpc3RlbnQtcmlwcGxlW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1yYWRpby1idXR0b24ubWF0LWFjY2VudFtfbmdjb250ZW50LSVDT01QJV06YWN0aXZlICAgLm1hdC1yYWRpby1wZXJzaXN0ZW50LXJpcHBsZVtfbmdjb250ZW50LSVDT01QJV17YmFja2dyb3VuZC1jb2xvcjojZmY5ODAwfS5tYXQtcmFkaW8tYnV0dG9uLm1hdC13YXJuLm1hdC1yYWRpby1jaGVja2VkW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtcmFkaW8tb3V0ZXItY2lyY2xlW19uZ2NvbnRlbnQtJUNPTVAlXXtib3JkZXItY29sb3I6I2Y0NDMzNn0ubWF0LXJhZGlvLWJ1dHRvbi5tYXQtd2Fybltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXJhZGlvLWlubmVyLWNpcmNsZVtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtcmFkaW8tYnV0dG9uLm1hdC13YXJuW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtcmFkaW8tcmlwcGxlW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtcmlwcGxlLWVsZW1lbnRbX25nY29udGVudC0lQ09NUCVdOm5vdCgubWF0LXJhZGlvLXBlcnNpc3RlbnQtcmlwcGxlKSwgLm1hdC1yYWRpby1idXR0b24ubWF0LXdhcm4ubWF0LXJhZGlvLWNoZWNrZWRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1yYWRpby1wZXJzaXN0ZW50LXJpcHBsZVtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtcmFkaW8tYnV0dG9uLm1hdC13YXJuW19uZ2NvbnRlbnQtJUNPTVAlXTphY3RpdmUgICAubWF0LXJhZGlvLXBlcnNpc3RlbnQtcmlwcGxlW19uZ2NvbnRlbnQtJUNPTVAlXXtiYWNrZ3JvdW5kLWNvbG9yOiNmNDQzMzZ9Lm1hdC1yYWRpby1idXR0b24ubWF0LXJhZGlvLWRpc2FibGVkLm1hdC1yYWRpby1jaGVja2VkW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtcmFkaW8tb3V0ZXItY2lyY2xlW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1yYWRpby1idXR0b24ubWF0LXJhZGlvLWRpc2FibGVkW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtcmFkaW8tb3V0ZXItY2lyY2xlW19uZ2NvbnRlbnQtJUNPTVAlXXtib3JkZXItY29sb3I6cmdiYSgwLDAsMCwuMzgpfS5tYXQtcmFkaW8tYnV0dG9uLm1hdC1yYWRpby1kaXNhYmxlZFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXJhZGlvLXJpcHBsZVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXJpcHBsZS1lbGVtZW50W19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1yYWRpby1idXR0b24ubWF0LXJhZGlvLWRpc2FibGVkW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtcmFkaW8taW5uZXItY2lyY2xlW19uZ2NvbnRlbnQtJUNPTVAlXXtiYWNrZ3JvdW5kLWNvbG9yOnJnYmEoMCwwLDAsLjM4KX0ubWF0LXJhZGlvLWJ1dHRvbi5tYXQtcmFkaW8tZGlzYWJsZWRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1yYWRpby1sYWJlbC1jb250ZW50W19uZ2NvbnRlbnQtJUNPTVAlXXtjb2xvcjpyZ2JhKDAsMCwwLC4zOCl9Lm1hdC1yYWRpby1idXR0b25bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1yaXBwbGUtZWxlbWVudFtfbmdjb250ZW50LSVDT01QJV17YmFja2dyb3VuZC1jb2xvcjojMDAwfS5tYXQtc2VsZWN0LXZhbHVlW19uZ2NvbnRlbnQtJUNPTVAlXXtjb2xvcjojMjEyMTIxfS5tYXQtc2VsZWN0LXBsYWNlaG9sZGVyW19uZ2NvbnRlbnQtJUNPTVAlXXtjb2xvcjpyZ2JhKDk3LDk3LDk3LC40Mil9Lm1hdC1zZWxlY3QtZGlzYWJsZWRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1zZWxlY3QtdmFsdWVbX25nY29udGVudC0lQ09NUCVde2NvbG9yOiM3NTc1NzV9Lm1hdC1zZWxlY3QtYXJyb3dbX25nY29udGVudC0lQ09NUCVde2NvbG9yOiM2MTYxNjF9Lm1hdC1zZWxlY3QtcGFuZWxbX25nY29udGVudC0lQ09NUCVde2JhY2tncm91bmQ6I2ZmZn0ubWF0LXNlbGVjdC1wYW5lbFtfbmdjb250ZW50LSVDT01QJV06bm90KFtjbGFzcyo9bWF0LWVsZXZhdGlvbi16XSl7Ym94LXNoYWRvdzowcHggMnB4IDRweCAtMXB4IHJnYmEoMCwgMCwgMCwgMC4yKSwwcHggNHB4IDVweCAwcHggcmdiYSgwLCAwLCAwLCAwLjE0KSwwcHggMXB4IDEwcHggMHB4IHJnYmEoMCwgMCwgMCwgMC4xMil9Lm1hdC1zZWxlY3QtcGFuZWxbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1vcHRpb24ubWF0LXNlbGVjdGVkW19uZ2NvbnRlbnQtJUNPTVAlXTpub3QoLm1hdC1vcHRpb24tbXVsdGlwbGUpe2JhY2tncm91bmQ6cmdiYSgwLDAsMCwuMTIpfS5tYXQtZm9ybS1maWVsZC5tYXQtZm9jdXNlZC5tYXQtcHJpbWFyeVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXNlbGVjdC1hcnJvd1tfbmdjb250ZW50LSVDT01QJV17Y29sb3I6I2Y1N2MwMH0ubWF0LWZvcm0tZmllbGQubWF0LWZvY3VzZWQubWF0LWFjY2VudFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXNlbGVjdC1hcnJvd1tfbmdjb250ZW50LSVDT01QJV17Y29sb3I6I2ZmOTgwMH0ubWF0LWZvcm0tZmllbGQubWF0LWZvY3VzZWQubWF0LXdhcm5bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1zZWxlY3QtYXJyb3dbX25nY29udGVudC0lQ09NUCVde2NvbG9yOiNmNDQzMzZ9Lm1hdC1mb3JtLWZpZWxkW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtc2VsZWN0Lm1hdC1zZWxlY3QtaW52YWxpZFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXNlbGVjdC1hcnJvd1tfbmdjb250ZW50LSVDT01QJV17Y29sb3I6I2Y0NDMzNn0ubWF0LWZvcm0tZmllbGRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1zZWxlY3QubWF0LXNlbGVjdC1kaXNhYmxlZFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXNlbGVjdC1hcnJvd1tfbmdjb250ZW50LSVDT01QJV17Y29sb3I6Izc1NzU3NX0ubWF0LWRyYXdlci1jb250YWluZXJbX25nY29udGVudC0lQ09NUCVde2JhY2tncm91bmQtY29sb3I6I2ZhZmFmYTtjb2xvcjojMjEyMTIxfS5tYXQtZHJhd2VyW19uZ2NvbnRlbnQtJUNPTVAlXXtiYWNrZ3JvdW5kLWNvbG9yOiNmZmY7Y29sb3I6IzIxMjEyMX0ubWF0LWRyYXdlci5tYXQtZHJhd2VyLXB1c2hbX25nY29udGVudC0lQ09NUCVde2JhY2tncm91bmQtY29sb3I6I2ZmZn0ubWF0LWRyYXdlcltfbmdjb250ZW50LSVDT01QJV06bm90KC5tYXQtZHJhd2VyLXNpZGUpe2JveC1zaGFkb3c6MHB4IDhweCAxMHB4IC01cHggcmdiYSgwLCAwLCAwLCAwLjIpLDBweCAxNnB4IDI0cHggMnB4IHJnYmEoMCwgMCwgMCwgMC4xNCksMHB4IDZweCAzMHB4IDVweCByZ2JhKDAsIDAsIDAsIDAuMTIpfS5tYXQtZHJhd2VyLXNpZGVbX25nY29udGVudC0lQ09NUCVde2JvcmRlci1yaWdodDpzb2xpZCAxcHggcmdiYSgwLDAsMCwuMTIpfS5tYXQtZHJhd2VyLXNpZGUubWF0LWRyYXdlci1lbmRbX25nY29udGVudC0lQ09NUCVde2JvcmRlci1sZWZ0OnNvbGlkIDFweCByZ2JhKDAsMCwwLC4xMik7Ym9yZGVyLXJpZ2h0Om5vbmV9W2Rpcj1ydGxdW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZHJhd2VyLXNpZGVbX25nY29udGVudC0lQ09NUCVde2JvcmRlci1sZWZ0OnNvbGlkIDFweCByZ2JhKDAsMCwwLC4xMik7Ym9yZGVyLXJpZ2h0Om5vbmV9W2Rpcj1ydGxdW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZHJhd2VyLXNpZGUubWF0LWRyYXdlci1lbmRbX25nY29udGVudC0lQ09NUCVde2JvcmRlci1sZWZ0Om5vbmU7Ym9yZGVyLXJpZ2h0OnNvbGlkIDFweCByZ2JhKDAsMCwwLC4xMil9Lm1hdC1kcmF3ZXItYmFja2Ryb3AubWF0LWRyYXdlci1zaG93bltfbmdjb250ZW50LSVDT01QJV17YmFja2dyb3VuZC1jb2xvcjpyZ2JhKDAsMCwwLC42KX0ubWF0LXNsaWRlLXRvZ2dsZS5tYXQtY2hlY2tlZFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXNsaWRlLXRvZ2dsZS10aHVtYltfbmdjb250ZW50LSVDT01QJV17YmFja2dyb3VuZC1jb2xvcjojZmY5ODAwfS5tYXQtc2xpZGUtdG9nZ2xlLm1hdC1jaGVja2VkW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtc2xpZGUtdG9nZ2xlLWJhcltfbmdjb250ZW50LSVDT01QJV17YmFja2dyb3VuZC1jb2xvcjpyZ2JhKDI1NSwxNTIsMCwuNTQpfS5tYXQtc2xpZGUtdG9nZ2xlLm1hdC1jaGVja2VkW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtcmlwcGxlLWVsZW1lbnRbX25nY29udGVudC0lQ09NUCVde2JhY2tncm91bmQtY29sb3I6I2ZmOTgwMH0ubWF0LXNsaWRlLXRvZ2dsZS5tYXQtcHJpbWFyeS5tYXQtY2hlY2tlZFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXNsaWRlLXRvZ2dsZS10aHVtYltfbmdjb250ZW50LSVDT01QJV17YmFja2dyb3VuZC1jb2xvcjojZjU3YzAwfS5tYXQtc2xpZGUtdG9nZ2xlLm1hdC1wcmltYXJ5Lm1hdC1jaGVja2VkW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtc2xpZGUtdG9nZ2xlLWJhcltfbmdjb250ZW50LSVDT01QJV17YmFja2dyb3VuZC1jb2xvcjpyZ2JhKDI0NSwxMjQsMCwuNTQpfS5tYXQtc2xpZGUtdG9nZ2xlLm1hdC1wcmltYXJ5Lm1hdC1jaGVja2VkW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtcmlwcGxlLWVsZW1lbnRbX25nY29udGVudC0lQ09NUCVde2JhY2tncm91bmQtY29sb3I6I2Y1N2MwMH0ubWF0LXNsaWRlLXRvZ2dsZS5tYXQtd2Fybi5tYXQtY2hlY2tlZFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXNsaWRlLXRvZ2dsZS10aHVtYltfbmdjb250ZW50LSVDT01QJV17YmFja2dyb3VuZC1jb2xvcjojZjQ0MzM2fS5tYXQtc2xpZGUtdG9nZ2xlLm1hdC13YXJuLm1hdC1jaGVja2VkW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtc2xpZGUtdG9nZ2xlLWJhcltfbmdjb250ZW50LSVDT01QJV17YmFja2dyb3VuZC1jb2xvcjpyZ2JhKDI0NCw2Nyw1NCwuNTQpfS5tYXQtc2xpZGUtdG9nZ2xlLm1hdC13YXJuLm1hdC1jaGVja2VkW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtcmlwcGxlLWVsZW1lbnRbX25nY29udGVudC0lQ09NUCVde2JhY2tncm91bmQtY29sb3I6I2Y0NDMzNn0ubWF0LXNsaWRlLXRvZ2dsZVtfbmdjb250ZW50LSVDT01QJV06bm90KC5tYXQtY2hlY2tlZCkgICAubWF0LXJpcHBsZS1lbGVtZW50W19uZ2NvbnRlbnQtJUNPTVAlXXtiYWNrZ3JvdW5kLWNvbG9yOiMwMDB9Lm1hdC1zbGlkZS10b2dnbGUtdGh1bWJbX25nY29udGVudC0lQ09NUCVde2JveC1zaGFkb3c6MHB4IDJweCAxcHggLTFweCByZ2JhKDAsIDAsIDAsIDAuMiksMHB4IDFweCAxcHggMHB4IHJnYmEoMCwgMCwgMCwgMC4xNCksMHB4IDFweCAzcHggMHB4IHJnYmEoMCwgMCwgMCwgMC4xMik7YmFja2dyb3VuZC1jb2xvcjojZmFmYWZhfS5tYXQtc2xpZGUtdG9nZ2xlLWJhcltfbmdjb250ZW50LSVDT01QJV17YmFja2dyb3VuZC1jb2xvcjpyZ2JhKDAsMCwwLC4zOCl9Lm1hdC1zbGlkZXItdHJhY2stYmFja2dyb3VuZFtfbmdjb250ZW50LSVDT01QJV17YmFja2dyb3VuZC1jb2xvcjpyZ2JhKDAsMCwwLC4yNil9Lm1hdC1wcmltYXJ5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtc2xpZGVyLXRyYWNrLWZpbGxbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXByaW1hcnlbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1zbGlkZXItdGh1bWJbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXByaW1hcnlbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1zbGlkZXItdGh1bWItbGFiZWxbX25nY29udGVudC0lQ09NUCVde2JhY2tncm91bmQtY29sb3I6I2Y1N2MwMH0ubWF0LXByaW1hcnlbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1zbGlkZXItdGh1bWItbGFiZWwtdGV4dFtfbmdjb250ZW50LSVDT01QJV17Y29sb3I6I2ZmZn0ubWF0LXByaW1hcnlbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1zbGlkZXItZm9jdXMtcmluZ1tfbmdjb250ZW50LSVDT01QJV17YmFja2dyb3VuZC1jb2xvcjpyZ2JhKDI0NSwxMjQsMCwuMil9Lm1hdC1hY2NlbnRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1zbGlkZXItdHJhY2stZmlsbFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtYWNjZW50W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtc2xpZGVyLXRodW1iW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1hY2NlbnRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1zbGlkZXItdGh1bWItbGFiZWxbX25nY29udGVudC0lQ09NUCVde2JhY2tncm91bmQtY29sb3I6I2ZmOTgwMH0ubWF0LWFjY2VudFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXNsaWRlci10aHVtYi1sYWJlbC10ZXh0W19uZ2NvbnRlbnQtJUNPTVAlXXtjb2xvcjojZmZmfS5tYXQtYWNjZW50W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtc2xpZGVyLWZvY3VzLXJpbmdbX25nY29udGVudC0lQ09NUCVde2JhY2tncm91bmQtY29sb3I6cmdiYSgyNTUsMTUyLDAsLjIpfS5tYXQtd2Fybltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXNsaWRlci10cmFjay1maWxsW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC13YXJuW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtc2xpZGVyLXRodW1iW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC13YXJuW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtc2xpZGVyLXRodW1iLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXtiYWNrZ3JvdW5kLWNvbG9yOiNmNDQzMzZ9Lm1hdC13YXJuW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtc2xpZGVyLXRodW1iLWxhYmVsLXRleHRbX25nY29udGVudC0lQ09NUCVde2NvbG9yOiNmZmZ9Lm1hdC13YXJuW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtc2xpZGVyLWZvY3VzLXJpbmdbX25nY29udGVudC0lQ09NUCVde2JhY2tncm91bmQtY29sb3I6cmdiYSgyNDQsNjcsNTQsLjIpfS5tYXQtc2xpZGVyW19uZ2NvbnRlbnQtJUNPTVAlXTpob3ZlciAgIC5tYXQtc2xpZGVyLXRyYWNrLWJhY2tncm91bmRbX25nY29udGVudC0lQ09NUCVdLCAuY2RrLWZvY3VzZWRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1zbGlkZXItdHJhY2stYmFja2dyb3VuZFtfbmdjb250ZW50LSVDT01QJV17YmFja2dyb3VuZC1jb2xvcjpyZ2JhKDAsMCwwLC4zOCl9Lm1hdC1zbGlkZXItZGlzYWJsZWRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1zbGlkZXItdHJhY2stYmFja2dyb3VuZFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtc2xpZGVyLWRpc2FibGVkW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtc2xpZGVyLXRyYWNrLWZpbGxbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXNsaWRlci1kaXNhYmxlZFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXNsaWRlci10aHVtYltfbmdjb250ZW50LSVDT01QJV17YmFja2dyb3VuZC1jb2xvcjpyZ2JhKDAsMCwwLC4yNil9Lm1hdC1zbGlkZXItZGlzYWJsZWRbX25nY29udGVudC0lQ09NUCVdOmhvdmVyICAgLm1hdC1zbGlkZXItdHJhY2stYmFja2dyb3VuZFtfbmdjb250ZW50LSVDT01QJV17YmFja2dyb3VuZC1jb2xvcjpyZ2JhKDAsMCwwLC4yNil9Lm1hdC1zbGlkZXItbWluLXZhbHVlW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtc2xpZGVyLWZvY3VzLXJpbmdbX25nY29udGVudC0lQ09NUCVde2JhY2tncm91bmQtY29sb3I6cmdiYSgwLDAsMCwuMTIpfS5tYXQtc2xpZGVyLW1pbi12YWx1ZS5tYXQtc2xpZGVyLXRodW1iLWxhYmVsLXNob3dpbmdbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1zbGlkZXItdGh1bWJbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXNsaWRlci1taW4tdmFsdWUubWF0LXNsaWRlci10aHVtYi1sYWJlbC1zaG93aW5nW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtc2xpZGVyLXRodW1iLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXtiYWNrZ3JvdW5kLWNvbG9yOnJnYmEoMCwwLDAsLjg3KX0ubWF0LXNsaWRlci1taW4tdmFsdWUubWF0LXNsaWRlci10aHVtYi1sYWJlbC1zaG93aW5nLmNkay1mb2N1c2VkW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtc2xpZGVyLXRodW1iW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1zbGlkZXItbWluLXZhbHVlLm1hdC1zbGlkZXItdGh1bWItbGFiZWwtc2hvd2luZy5jZGstZm9jdXNlZFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXNsaWRlci10aHVtYi1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17YmFja2dyb3VuZC1jb2xvcjpyZ2JhKDAsMCwwLC4yNil9Lm1hdC1zbGlkZXItbWluLXZhbHVlW19uZ2NvbnRlbnQtJUNPTVAlXTpub3QoLm1hdC1zbGlkZXItdGh1bWItbGFiZWwtc2hvd2luZykgICAubWF0LXNsaWRlci10aHVtYltfbmdjb250ZW50LSVDT01QJV17Ym9yZGVyLWNvbG9yOnJnYmEoMCwwLDAsLjI2KTtiYWNrZ3JvdW5kLWNvbG9yOnRyYW5zcGFyZW50fS5tYXQtc2xpZGVyLW1pbi12YWx1ZVtfbmdjb250ZW50LSVDT01QJV06bm90KC5tYXQtc2xpZGVyLXRodW1iLWxhYmVsLXNob3dpbmcpOmhvdmVyICAgLm1hdC1zbGlkZXItdGh1bWJbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXNsaWRlci1taW4tdmFsdWVbX25nY29udGVudC0lQ09NUCVdOm5vdCgubWF0LXNsaWRlci10aHVtYi1sYWJlbC1zaG93aW5nKS5jZGstZm9jdXNlZCAgIC5tYXQtc2xpZGVyLXRodW1iW19uZ2NvbnRlbnQtJUNPTVAlXXtib3JkZXItY29sb3I6cmdiYSgwLDAsMCwuMzgpfS5tYXQtc2xpZGVyLW1pbi12YWx1ZVtfbmdjb250ZW50LSVDT01QJV06bm90KC5tYXQtc2xpZGVyLXRodW1iLWxhYmVsLXNob3dpbmcpOmhvdmVyLm1hdC1zbGlkZXItZGlzYWJsZWQgICAubWF0LXNsaWRlci10aHVtYltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtc2xpZGVyLW1pbi12YWx1ZVtfbmdjb250ZW50LSVDT01QJV06bm90KC5tYXQtc2xpZGVyLXRodW1iLWxhYmVsLXNob3dpbmcpLmNkay1mb2N1c2VkLm1hdC1zbGlkZXItZGlzYWJsZWQgICAubWF0LXNsaWRlci10aHVtYltfbmdjb250ZW50LSVDT01QJV17Ym9yZGVyLWNvbG9yOnJnYmEoMCwwLDAsLjI2KX0ubWF0LXNsaWRlci1oYXMtdGlja3NbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1zbGlkZXItd3JhcHBlcltfbmdjb250ZW50LSVDT01QJV06OmFmdGVye2JvcmRlci1jb2xvcjpyZ2JhKDAsMCwwLC43KX0ubWF0LXNsaWRlci1ob3Jpem9udGFsW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtc2xpZGVyLXRpY2tzW19uZ2NvbnRlbnQtJUNPTVAlXXtiYWNrZ3JvdW5kLWltYWdlOnJlcGVhdGluZy1saW5lYXItZ3JhZGllbnQodG8gcmlnaHQsIHJnYmEoMCwgMCwgMCwgMC43KSwgcmdiYSgwLCAwLCAwLCAwLjcpIDJweCwgdHJhbnNwYXJlbnQgMCwgdHJhbnNwYXJlbnQpO2JhY2tncm91bmQtaW1hZ2U6LW1vei1yZXBlYXRpbmctbGluZWFyLWdyYWRpZW50KDAuMDAwMWRlZywgcmdiYSgwLCAwLCAwLCAwLjcpLCByZ2JhKDAsIDAsIDAsIDAuNykgMnB4LCB0cmFuc3BhcmVudCAwLCB0cmFuc3BhcmVudCl9Lm1hdC1zbGlkZXItdmVydGljYWxbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1zbGlkZXItdGlja3NbX25nY29udGVudC0lQ09NUCVde2JhY2tncm91bmQtaW1hZ2U6cmVwZWF0aW5nLWxpbmVhci1ncmFkaWVudCh0byBib3R0b20sIHJnYmEoMCwgMCwgMCwgMC43KSwgcmdiYSgwLCAwLCAwLCAwLjcpIDJweCwgdHJhbnNwYXJlbnQgMCwgdHJhbnNwYXJlbnQpfS5tYXQtc3RlcC1oZWFkZXIuY2RrLWtleWJvYXJkLWZvY3VzZWRbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXN0ZXAtaGVhZGVyLmNkay1wcm9ncmFtLWZvY3VzZWRbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXN0ZXAtaGVhZGVyW19uZ2NvbnRlbnQtJUNPTVAlXTpob3ZlcntiYWNrZ3JvdW5kLWNvbG9yOnJnYmEoMCwwLDAsLjA0KX1AbWVkaWEoaG92ZXI6IG5vbmUpey5tYXQtc3RlcC1oZWFkZXJbX25nY29udGVudC0lQ09NUCVdOmhvdmVye2JhY2tncm91bmQ6bm9uZX19Lm1hdC1zdGVwLWhlYWRlcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXN0ZXAtbGFiZWxbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXN0ZXAtaGVhZGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtc3RlcC1vcHRpb25hbFtfbmdjb250ZW50LSVDT01QJV17Y29sb3I6IzYxNjE2MX0ubWF0LXN0ZXAtaGVhZGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtc3RlcC1pY29uW19uZ2NvbnRlbnQtJUNPTVAlXXtiYWNrZ3JvdW5kLWNvbG9yOiM2MTYxNjE7Y29sb3I6I2ZmZn0ubWF0LXN0ZXAtaGVhZGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtc3RlcC1pY29uLXNlbGVjdGVkW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1zdGVwLWhlYWRlcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXN0ZXAtaWNvbi1zdGF0ZS1kb25lW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1zdGVwLWhlYWRlcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXN0ZXAtaWNvbi1zdGF0ZS1lZGl0W19uZ2NvbnRlbnQtJUNPTVAlXXtiYWNrZ3JvdW5kLWNvbG9yOiNmNTdjMDA7Y29sb3I6I2ZmZn0ubWF0LXN0ZXAtaGVhZGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtc3RlcC1pY29uLXN0YXRlLWVycm9yW19uZ2NvbnRlbnQtJUNPTVAlXXtiYWNrZ3JvdW5kLWNvbG9yOnRyYW5zcGFyZW50O2NvbG9yOiNmNDQzMzZ9Lm1hdC1zdGVwLWhlYWRlcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXN0ZXAtbGFiZWwubWF0LXN0ZXAtbGFiZWwtYWN0aXZlW19uZ2NvbnRlbnQtJUNPTVAlXXtjb2xvcjojMjEyMTIxfS5tYXQtc3RlcC1oZWFkZXJbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1zdGVwLWxhYmVsLm1hdC1zdGVwLWxhYmVsLWVycm9yW19uZ2NvbnRlbnQtJUNPTVAlXXtjb2xvcjojZjQ0MzM2fS5tYXQtc3RlcHBlci1ob3Jpem9udGFsW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1zdGVwcGVyLXZlcnRpY2FsW19uZ2NvbnRlbnQtJUNPTVAlXXtiYWNrZ3JvdW5kLWNvbG9yOiNmZmZ9Lm1hdC1zdGVwcGVyLXZlcnRpY2FsLWxpbmVbX25nY29udGVudC0lQ09NUCVdOjpiZWZvcmV7Ym9yZGVyLWxlZnQtY29sb3I6cmdiYSgwLDAsMCwuMTIpfS5tYXQtaG9yaXpvbnRhbC1zdGVwcGVyLWhlYWRlcltfbmdjb250ZW50LSVDT01QJV06OmJlZm9yZSwgLm1hdC1ob3Jpem9udGFsLXN0ZXBwZXItaGVhZGVyW19uZ2NvbnRlbnQtJUNPTVAlXTo6YWZ0ZXIsIC5tYXQtc3RlcHBlci1ob3Jpem9udGFsLWxpbmVbX25nY29udGVudC0lQ09NUCVde2JvcmRlci10b3AtY29sb3I6cmdiYSgwLDAsMCwuMTIpfS5tYXQtaG9yaXpvbnRhbC1zdGVwcGVyLWhlYWRlcltfbmdjb250ZW50LSVDT01QJV17aGVpZ2h0OjcycHh9Lm1hdC1zdGVwcGVyLWxhYmVsLXBvc2l0aW9uLWJvdHRvbVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWhvcml6b250YWwtc3RlcHBlci1oZWFkZXJbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXZlcnRpY2FsLXN0ZXBwZXItaGVhZGVyW19uZ2NvbnRlbnQtJUNPTVAlXXtwYWRkaW5nOjI0cHggMjRweH0ubWF0LXN0ZXBwZXItdmVydGljYWwtbGluZVtfbmdjb250ZW50LSVDT01QJV06OmJlZm9yZXt0b3A6LTE2cHg7Ym90dG9tOi0xNnB4fS5tYXQtc3RlcHBlci1sYWJlbC1wb3NpdGlvbi1ib3R0b21bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1ob3Jpem9udGFsLXN0ZXBwZXItaGVhZGVyW19uZ2NvbnRlbnQtJUNPTVAlXTo6YWZ0ZXIsIC5tYXQtc3RlcHBlci1sYWJlbC1wb3NpdGlvbi1ib3R0b21bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1ob3Jpem9udGFsLXN0ZXBwZXItaGVhZGVyW19uZ2NvbnRlbnQtJUNPTVAlXTo6YmVmb3Jle3RvcDozNnB4fS5tYXQtc3RlcHBlci1sYWJlbC1wb3NpdGlvbi1ib3R0b21bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1zdGVwcGVyLWhvcml6b250YWwtbGluZVtfbmdjb250ZW50LSVDT01QJV17dG9wOjM2cHh9Lm1hdC1zb3J0LWhlYWRlci1hcnJvd1tfbmdjb250ZW50LSVDT01QJV17Y29sb3I6IzYxNjE2MX0ubWF0LXRhYi1uYXYtYmFyW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10YWItaGVhZGVyW19uZ2NvbnRlbnQtJUNPTVAlXXtib3JkZXItYm90dG9tOjFweCBzb2xpZCByZ2JhKDAsMCwwLC4xMil9Lm1hdC10YWItZ3JvdXAtaW52ZXJ0ZWQtaGVhZGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtdGFiLW5hdi1iYXJbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXRhYi1ncm91cC1pbnZlcnRlZC1oZWFkZXJbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC10YWItaGVhZGVyW19uZ2NvbnRlbnQtJUNPTVAlXXtib3JkZXItdG9wOjFweCBzb2xpZCByZ2JhKDAsMCwwLC4xMik7Ym9yZGVyLWJvdHRvbTpub25lfS5tYXQtdGFiLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10YWItbGlua1tfbmdjb250ZW50LSVDT01QJV17Y29sb3I6IzIxMjEyMX0ubWF0LXRhYi1sYWJlbC5tYXQtdGFiLWRpc2FibGVkW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10YWItbGluay5tYXQtdGFiLWRpc2FibGVkW19uZ2NvbnRlbnQtJUNPTVAlXXtjb2xvcjojNzU3NTc1fS5tYXQtdGFiLWhlYWRlci1wYWdpbmF0aW9uLWNoZXZyb25bX25nY29udGVudC0lQ09NUCVde2JvcmRlci1jb2xvcjojMjEyMTIxfS5tYXQtdGFiLWhlYWRlci1wYWdpbmF0aW9uLWRpc2FibGVkW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtdGFiLWhlYWRlci1wYWdpbmF0aW9uLWNoZXZyb25bX25nY29udGVudC0lQ09NUCVde2JvcmRlci1jb2xvcjojNzU3NTc1fS5tYXQtdGFiLWdyb3VwW2NsYXNzKj1tYXQtYmFja2dyb3VuZC1dW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtdGFiLWhlYWRlcltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdGFiLW5hdi1iYXJbY2xhc3MqPW1hdC1iYWNrZ3JvdW5kLV1bX25nY29udGVudC0lQ09NUCVde2JvcmRlci1ib3R0b206bm9uZTtib3JkZXItdG9wOm5vbmV9Lm1hdC10YWItZ3JvdXAubWF0LXByaW1hcnlbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC10YWItbGFiZWwuY2RrLWtleWJvYXJkLWZvY3VzZWRbX25nY29udGVudC0lQ09NUCVdOm5vdCgubWF0LXRhYi1kaXNhYmxlZCksIC5tYXQtdGFiLWdyb3VwLm1hdC1wcmltYXJ5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtdGFiLWxhYmVsLmNkay1wcm9ncmFtLWZvY3VzZWRbX25nY29udGVudC0lQ09NUCVdOm5vdCgubWF0LXRhYi1kaXNhYmxlZCksIC5tYXQtdGFiLWdyb3VwLm1hdC1wcmltYXJ5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtdGFiLWxpbmsuY2RrLWtleWJvYXJkLWZvY3VzZWRbX25nY29udGVudC0lQ09NUCVdOm5vdCgubWF0LXRhYi1kaXNhYmxlZCksIC5tYXQtdGFiLWdyb3VwLm1hdC1wcmltYXJ5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtdGFiLWxpbmsuY2RrLXByb2dyYW0tZm9jdXNlZFtfbmdjb250ZW50LSVDT01QJV06bm90KC5tYXQtdGFiLWRpc2FibGVkKSwgLm1hdC10YWItbmF2LWJhci5tYXQtcHJpbWFyeVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXRhYi1sYWJlbC5jZGsta2V5Ym9hcmQtZm9jdXNlZFtfbmdjb250ZW50LSVDT01QJV06bm90KC5tYXQtdGFiLWRpc2FibGVkKSwgLm1hdC10YWItbmF2LWJhci5tYXQtcHJpbWFyeVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXRhYi1sYWJlbC5jZGstcHJvZ3JhbS1mb2N1c2VkW19uZ2NvbnRlbnQtJUNPTVAlXTpub3QoLm1hdC10YWItZGlzYWJsZWQpLCAubWF0LXRhYi1uYXYtYmFyLm1hdC1wcmltYXJ5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtdGFiLWxpbmsuY2RrLWtleWJvYXJkLWZvY3VzZWRbX25nY29udGVudC0lQ09NUCVdOm5vdCgubWF0LXRhYi1kaXNhYmxlZCksIC5tYXQtdGFiLW5hdi1iYXIubWF0LXByaW1hcnlbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC10YWItbGluay5jZGstcHJvZ3JhbS1mb2N1c2VkW19uZ2NvbnRlbnQtJUNPTVAlXTpub3QoLm1hdC10YWItZGlzYWJsZWQpe2JhY2tncm91bmQtY29sb3I6cmdiYSgyNTUsMTUyLDAsLjMpfS5tYXQtdGFiLWdyb3VwLm1hdC1wcmltYXJ5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaW5rLWJhcltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdGFiLW5hdi1iYXIubWF0LXByaW1hcnlbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pbmstYmFyW19uZ2NvbnRlbnQtJUNPTVAlXXtiYWNrZ3JvdW5kLWNvbG9yOiNmNTdjMDB9Lm1hdC10YWItZ3JvdXAubWF0LXByaW1hcnkubWF0LWJhY2tncm91bmQtcHJpbWFyeVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWluay1iYXJbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXRhYi1uYXYtYmFyLm1hdC1wcmltYXJ5Lm1hdC1iYWNrZ3JvdW5kLXByaW1hcnlbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pbmstYmFyW19uZ2NvbnRlbnQtJUNPTVAlXXtiYWNrZ3JvdW5kLWNvbG9yOiNmZmZ9Lm1hdC10YWItZ3JvdXAubWF0LWFjY2VudFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXRhYi1sYWJlbC5jZGsta2V5Ym9hcmQtZm9jdXNlZFtfbmdjb250ZW50LSVDT01QJV06bm90KC5tYXQtdGFiLWRpc2FibGVkKSwgLm1hdC10YWItZ3JvdXAubWF0LWFjY2VudFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXRhYi1sYWJlbC5jZGstcHJvZ3JhbS1mb2N1c2VkW19uZ2NvbnRlbnQtJUNPTVAlXTpub3QoLm1hdC10YWItZGlzYWJsZWQpLCAubWF0LXRhYi1ncm91cC5tYXQtYWNjZW50W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtdGFiLWxpbmsuY2RrLWtleWJvYXJkLWZvY3VzZWRbX25nY29udGVudC0lQ09NUCVdOm5vdCgubWF0LXRhYi1kaXNhYmxlZCksIC5tYXQtdGFiLWdyb3VwLm1hdC1hY2NlbnRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC10YWItbGluay5jZGstcHJvZ3JhbS1mb2N1c2VkW19uZ2NvbnRlbnQtJUNPTVAlXTpub3QoLm1hdC10YWItZGlzYWJsZWQpLCAubWF0LXRhYi1uYXYtYmFyLm1hdC1hY2NlbnRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC10YWItbGFiZWwuY2RrLWtleWJvYXJkLWZvY3VzZWRbX25nY29udGVudC0lQ09NUCVdOm5vdCgubWF0LXRhYi1kaXNhYmxlZCksIC5tYXQtdGFiLW5hdi1iYXIubWF0LWFjY2VudFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXRhYi1sYWJlbC5jZGstcHJvZ3JhbS1mb2N1c2VkW19uZ2NvbnRlbnQtJUNPTVAlXTpub3QoLm1hdC10YWItZGlzYWJsZWQpLCAubWF0LXRhYi1uYXYtYmFyLm1hdC1hY2NlbnRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC10YWItbGluay5jZGsta2V5Ym9hcmQtZm9jdXNlZFtfbmdjb250ZW50LSVDT01QJV06bm90KC5tYXQtdGFiLWRpc2FibGVkKSwgLm1hdC10YWItbmF2LWJhci5tYXQtYWNjZW50W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtdGFiLWxpbmsuY2RrLXByb2dyYW0tZm9jdXNlZFtfbmdjb250ZW50LSVDT01QJV06bm90KC5tYXQtdGFiLWRpc2FibGVkKXtiYWNrZ3JvdW5kLWNvbG9yOnJnYmEoMjU1LDE1MiwwLC4zKX0ubWF0LXRhYi1ncm91cC5tYXQtYWNjZW50W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaW5rLWJhcltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdGFiLW5hdi1iYXIubWF0LWFjY2VudFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWluay1iYXJbX25nY29udGVudC0lQ09NUCVde2JhY2tncm91bmQtY29sb3I6I2ZmOTgwMH0ubWF0LXRhYi1ncm91cC5tYXQtYWNjZW50Lm1hdC1iYWNrZ3JvdW5kLWFjY2VudFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWluay1iYXJbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXRhYi1uYXYtYmFyLm1hdC1hY2NlbnQubWF0LWJhY2tncm91bmQtYWNjZW50W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaW5rLWJhcltfbmdjb250ZW50LSVDT01QJV17YmFja2dyb3VuZC1jb2xvcjojZmZmfS5tYXQtdGFiLWdyb3VwLm1hdC13YXJuW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtdGFiLWxhYmVsLmNkay1rZXlib2FyZC1mb2N1c2VkW19uZ2NvbnRlbnQtJUNPTVAlXTpub3QoLm1hdC10YWItZGlzYWJsZWQpLCAubWF0LXRhYi1ncm91cC5tYXQtd2Fybltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXRhYi1sYWJlbC5jZGstcHJvZ3JhbS1mb2N1c2VkW19uZ2NvbnRlbnQtJUNPTVAlXTpub3QoLm1hdC10YWItZGlzYWJsZWQpLCAubWF0LXRhYi1ncm91cC5tYXQtd2Fybltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXRhYi1saW5rLmNkay1rZXlib2FyZC1mb2N1c2VkW19uZ2NvbnRlbnQtJUNPTVAlXTpub3QoLm1hdC10YWItZGlzYWJsZWQpLCAubWF0LXRhYi1ncm91cC5tYXQtd2Fybltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXRhYi1saW5rLmNkay1wcm9ncmFtLWZvY3VzZWRbX25nY29udGVudC0lQ09NUCVdOm5vdCgubWF0LXRhYi1kaXNhYmxlZCksIC5tYXQtdGFiLW5hdi1iYXIubWF0LXdhcm5bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC10YWItbGFiZWwuY2RrLWtleWJvYXJkLWZvY3VzZWRbX25nY29udGVudC0lQ09NUCVdOm5vdCgubWF0LXRhYi1kaXNhYmxlZCksIC5tYXQtdGFiLW5hdi1iYXIubWF0LXdhcm5bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC10YWItbGFiZWwuY2RrLXByb2dyYW0tZm9jdXNlZFtfbmdjb250ZW50LSVDT01QJV06bm90KC5tYXQtdGFiLWRpc2FibGVkKSwgLm1hdC10YWItbmF2LWJhci5tYXQtd2Fybltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXRhYi1saW5rLmNkay1rZXlib2FyZC1mb2N1c2VkW19uZ2NvbnRlbnQtJUNPTVAlXTpub3QoLm1hdC10YWItZGlzYWJsZWQpLCAubWF0LXRhYi1uYXYtYmFyLm1hdC13YXJuW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtdGFiLWxpbmsuY2RrLXByb2dyYW0tZm9jdXNlZFtfbmdjb250ZW50LSVDT01QJV06bm90KC5tYXQtdGFiLWRpc2FibGVkKXtiYWNrZ3JvdW5kLWNvbG9yOnJnYmEoMjU1LDIwNSwyMTAsLjMpfS5tYXQtdGFiLWdyb3VwLm1hdC13YXJuW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaW5rLWJhcltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdGFiLW5hdi1iYXIubWF0LXdhcm5bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pbmstYmFyW19uZ2NvbnRlbnQtJUNPTVAlXXtiYWNrZ3JvdW5kLWNvbG9yOiNmNDQzMzZ9Lm1hdC10YWItZ3JvdXAubWF0LXdhcm4ubWF0LWJhY2tncm91bmQtd2Fybltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWluay1iYXJbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXRhYi1uYXYtYmFyLm1hdC13YXJuLm1hdC1iYWNrZ3JvdW5kLXdhcm5bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pbmstYmFyW19uZ2NvbnRlbnQtJUNPTVAlXXtiYWNrZ3JvdW5kLWNvbG9yOiNmZmZ9Lm1hdC10YWItZ3JvdXAubWF0LWJhY2tncm91bmQtcHJpbWFyeVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXRhYi1sYWJlbC5jZGsta2V5Ym9hcmQtZm9jdXNlZFtfbmdjb250ZW50LSVDT01QJV06bm90KC5tYXQtdGFiLWRpc2FibGVkKSwgLm1hdC10YWItZ3JvdXAubWF0LWJhY2tncm91bmQtcHJpbWFyeVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXRhYi1sYWJlbC5jZGstcHJvZ3JhbS1mb2N1c2VkW19uZ2NvbnRlbnQtJUNPTVAlXTpub3QoLm1hdC10YWItZGlzYWJsZWQpLCAubWF0LXRhYi1ncm91cC5tYXQtYmFja2dyb3VuZC1wcmltYXJ5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtdGFiLWxpbmsuY2RrLWtleWJvYXJkLWZvY3VzZWRbX25nY29udGVudC0lQ09NUCVdOm5vdCgubWF0LXRhYi1kaXNhYmxlZCksIC5tYXQtdGFiLWdyb3VwLm1hdC1iYWNrZ3JvdW5kLXByaW1hcnlbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC10YWItbGluay5jZGstcHJvZ3JhbS1mb2N1c2VkW19uZ2NvbnRlbnQtJUNPTVAlXTpub3QoLm1hdC10YWItZGlzYWJsZWQpLCAubWF0LXRhYi1uYXYtYmFyLm1hdC1iYWNrZ3JvdW5kLXByaW1hcnlbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC10YWItbGFiZWwuY2RrLWtleWJvYXJkLWZvY3VzZWRbX25nY29udGVudC0lQ09NUCVdOm5vdCgubWF0LXRhYi1kaXNhYmxlZCksIC5tYXQtdGFiLW5hdi1iYXIubWF0LWJhY2tncm91bmQtcHJpbWFyeVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXRhYi1sYWJlbC5jZGstcHJvZ3JhbS1mb2N1c2VkW19uZ2NvbnRlbnQtJUNPTVAlXTpub3QoLm1hdC10YWItZGlzYWJsZWQpLCAubWF0LXRhYi1uYXYtYmFyLm1hdC1iYWNrZ3JvdW5kLXByaW1hcnlbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC10YWItbGluay5jZGsta2V5Ym9hcmQtZm9jdXNlZFtfbmdjb250ZW50LSVDT01QJV06bm90KC5tYXQtdGFiLWRpc2FibGVkKSwgLm1hdC10YWItbmF2LWJhci5tYXQtYmFja2dyb3VuZC1wcmltYXJ5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtdGFiLWxpbmsuY2RrLXByb2dyYW0tZm9jdXNlZFtfbmdjb250ZW50LSVDT01QJV06bm90KC5tYXQtdGFiLWRpc2FibGVkKXtiYWNrZ3JvdW5kLWNvbG9yOnJnYmEoMjU1LDE1MiwwLC4zKX0ubWF0LXRhYi1ncm91cC5tYXQtYmFja2dyb3VuZC1wcmltYXJ5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtdGFiLWhlYWRlcltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdGFiLWdyb3VwLm1hdC1iYWNrZ3JvdW5kLXByaW1hcnlbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC10YWItbGlua3NbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXRhYi1ncm91cC5tYXQtYmFja2dyb3VuZC1wcmltYXJ5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtdGFiLWhlYWRlci1wYWdpbmF0aW9uW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10YWItbmF2LWJhci5tYXQtYmFja2dyb3VuZC1wcmltYXJ5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtdGFiLWhlYWRlcltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdGFiLW5hdi1iYXIubWF0LWJhY2tncm91bmQtcHJpbWFyeVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXRhYi1saW5rc1tfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdGFiLW5hdi1iYXIubWF0LWJhY2tncm91bmQtcHJpbWFyeVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXRhYi1oZWFkZXItcGFnaW5hdGlvbltfbmdjb250ZW50LSVDT01QJV17YmFja2dyb3VuZC1jb2xvcjojZjU3YzAwfS5tYXQtdGFiLWdyb3VwLm1hdC1iYWNrZ3JvdW5kLXByaW1hcnlbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC10YWItbGFiZWxbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXRhYi1ncm91cC5tYXQtYmFja2dyb3VuZC1wcmltYXJ5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtdGFiLWxpbmtbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXRhYi1uYXYtYmFyLm1hdC1iYWNrZ3JvdW5kLXByaW1hcnlbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC10YWItbGFiZWxbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXRhYi1uYXYtYmFyLm1hdC1iYWNrZ3JvdW5kLXByaW1hcnlbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC10YWItbGlua1tfbmdjb250ZW50LSVDT01QJV17Y29sb3I6I2ZmZn0ubWF0LXRhYi1ncm91cC5tYXQtYmFja2dyb3VuZC1wcmltYXJ5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtdGFiLWxhYmVsLm1hdC10YWItZGlzYWJsZWRbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXRhYi1ncm91cC5tYXQtYmFja2dyb3VuZC1wcmltYXJ5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtdGFiLWxpbmsubWF0LXRhYi1kaXNhYmxlZFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdGFiLW5hdi1iYXIubWF0LWJhY2tncm91bmQtcHJpbWFyeVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXRhYi1sYWJlbC5tYXQtdGFiLWRpc2FibGVkW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10YWItbmF2LWJhci5tYXQtYmFja2dyb3VuZC1wcmltYXJ5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtdGFiLWxpbmsubWF0LXRhYi1kaXNhYmxlZFtfbmdjb250ZW50LSVDT01QJV17Y29sb3I6cmdiYSgyNTUsMjU1LDI1NSwuNCl9Lm1hdC10YWItZ3JvdXAubWF0LWJhY2tncm91bmQtcHJpbWFyeVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXRhYi1oZWFkZXItcGFnaW5hdGlvbi1jaGV2cm9uW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10YWItbmF2LWJhci5tYXQtYmFja2dyb3VuZC1wcmltYXJ5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtdGFiLWhlYWRlci1wYWdpbmF0aW9uLWNoZXZyb25bX25nY29udGVudC0lQ09NUCVde2JvcmRlci1jb2xvcjojZmZmfS5tYXQtdGFiLWdyb3VwLm1hdC1iYWNrZ3JvdW5kLXByaW1hcnlbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC10YWItaGVhZGVyLXBhZ2luYXRpb24tZGlzYWJsZWRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC10YWItaGVhZGVyLXBhZ2luYXRpb24tY2hldnJvbltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdGFiLW5hdi1iYXIubWF0LWJhY2tncm91bmQtcHJpbWFyeVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXRhYi1oZWFkZXItcGFnaW5hdGlvbi1kaXNhYmxlZFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXRhYi1oZWFkZXItcGFnaW5hdGlvbi1jaGV2cm9uW19uZ2NvbnRlbnQtJUNPTVAlXXtib3JkZXItY29sb3I6cmdiYSgyNTUsMjU1LDI1NSwuNCl9Lm1hdC10YWItZ3JvdXAubWF0LWJhY2tncm91bmQtcHJpbWFyeVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXJpcHBsZS1lbGVtZW50W19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10YWItbmF2LWJhci5tYXQtYmFja2dyb3VuZC1wcmltYXJ5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtcmlwcGxlLWVsZW1lbnRbX25nY29udGVudC0lQ09NUCVde2JhY2tncm91bmQtY29sb3I6cmdiYSgyNTUsMjU1LDI1NSwuMTIpfS5tYXQtdGFiLWdyb3VwLm1hdC1iYWNrZ3JvdW5kLWFjY2VudFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXRhYi1sYWJlbC5jZGsta2V5Ym9hcmQtZm9jdXNlZFtfbmdjb250ZW50LSVDT01QJV06bm90KC5tYXQtdGFiLWRpc2FibGVkKSwgLm1hdC10YWItZ3JvdXAubWF0LWJhY2tncm91bmQtYWNjZW50W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtdGFiLWxhYmVsLmNkay1wcm9ncmFtLWZvY3VzZWRbX25nY29udGVudC0lQ09NUCVdOm5vdCgubWF0LXRhYi1kaXNhYmxlZCksIC5tYXQtdGFiLWdyb3VwLm1hdC1iYWNrZ3JvdW5kLWFjY2VudFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXRhYi1saW5rLmNkay1rZXlib2FyZC1mb2N1c2VkW19uZ2NvbnRlbnQtJUNPTVAlXTpub3QoLm1hdC10YWItZGlzYWJsZWQpLCAubWF0LXRhYi1ncm91cC5tYXQtYmFja2dyb3VuZC1hY2NlbnRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC10YWItbGluay5jZGstcHJvZ3JhbS1mb2N1c2VkW19uZ2NvbnRlbnQtJUNPTVAlXTpub3QoLm1hdC10YWItZGlzYWJsZWQpLCAubWF0LXRhYi1uYXYtYmFyLm1hdC1iYWNrZ3JvdW5kLWFjY2VudFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXRhYi1sYWJlbC5jZGsta2V5Ym9hcmQtZm9jdXNlZFtfbmdjb250ZW50LSVDT01QJV06bm90KC5tYXQtdGFiLWRpc2FibGVkKSwgLm1hdC10YWItbmF2LWJhci5tYXQtYmFja2dyb3VuZC1hY2NlbnRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC10YWItbGFiZWwuY2RrLXByb2dyYW0tZm9jdXNlZFtfbmdjb250ZW50LSVDT01QJV06bm90KC5tYXQtdGFiLWRpc2FibGVkKSwgLm1hdC10YWItbmF2LWJhci5tYXQtYmFja2dyb3VuZC1hY2NlbnRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC10YWItbGluay5jZGsta2V5Ym9hcmQtZm9jdXNlZFtfbmdjb250ZW50LSVDT01QJV06bm90KC5tYXQtdGFiLWRpc2FibGVkKSwgLm1hdC10YWItbmF2LWJhci5tYXQtYmFja2dyb3VuZC1hY2NlbnRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC10YWItbGluay5jZGstcHJvZ3JhbS1mb2N1c2VkW19uZ2NvbnRlbnQtJUNPTVAlXTpub3QoLm1hdC10YWItZGlzYWJsZWQpe2JhY2tncm91bmQtY29sb3I6cmdiYSgyNTUsMTUyLDAsLjMpfS5tYXQtdGFiLWdyb3VwLm1hdC1iYWNrZ3JvdW5kLWFjY2VudFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXRhYi1oZWFkZXJbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXRhYi1ncm91cC5tYXQtYmFja2dyb3VuZC1hY2NlbnRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC10YWItbGlua3NbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXRhYi1ncm91cC5tYXQtYmFja2dyb3VuZC1hY2NlbnRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC10YWItaGVhZGVyLXBhZ2luYXRpb25bX25nY29udGVudC0lQ09NUCVdLCAubWF0LXRhYi1uYXYtYmFyLm1hdC1iYWNrZ3JvdW5kLWFjY2VudFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXRhYi1oZWFkZXJbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXRhYi1uYXYtYmFyLm1hdC1iYWNrZ3JvdW5kLWFjY2VudFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXRhYi1saW5rc1tfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdGFiLW5hdi1iYXIubWF0LWJhY2tncm91bmQtYWNjZW50W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtdGFiLWhlYWRlci1wYWdpbmF0aW9uW19uZ2NvbnRlbnQtJUNPTVAlXXtiYWNrZ3JvdW5kLWNvbG9yOiNmZjk4MDB9Lm1hdC10YWItZ3JvdXAubWF0LWJhY2tncm91bmQtYWNjZW50W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtdGFiLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10YWItZ3JvdXAubWF0LWJhY2tncm91bmQtYWNjZW50W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtdGFiLWxpbmtbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXRhYi1uYXYtYmFyLm1hdC1iYWNrZ3JvdW5kLWFjY2VudFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXRhYi1sYWJlbFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdGFiLW5hdi1iYXIubWF0LWJhY2tncm91bmQtYWNjZW50W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtdGFiLWxpbmtbX25nY29udGVudC0lQ09NUCVde2NvbG9yOiNmZmZ9Lm1hdC10YWItZ3JvdXAubWF0LWJhY2tncm91bmQtYWNjZW50W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtdGFiLWxhYmVsLm1hdC10YWItZGlzYWJsZWRbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXRhYi1ncm91cC5tYXQtYmFja2dyb3VuZC1hY2NlbnRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC10YWItbGluay5tYXQtdGFiLWRpc2FibGVkW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10YWItbmF2LWJhci5tYXQtYmFja2dyb3VuZC1hY2NlbnRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC10YWItbGFiZWwubWF0LXRhYi1kaXNhYmxlZFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdGFiLW5hdi1iYXIubWF0LWJhY2tncm91bmQtYWNjZW50W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtdGFiLWxpbmsubWF0LXRhYi1kaXNhYmxlZFtfbmdjb250ZW50LSVDT01QJV17Y29sb3I6cmdiYSgyNTUsMjU1LDI1NSwuNCl9Lm1hdC10YWItZ3JvdXAubWF0LWJhY2tncm91bmQtYWNjZW50W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtdGFiLWhlYWRlci1wYWdpbmF0aW9uLWNoZXZyb25bX25nY29udGVudC0lQ09NUCVdLCAubWF0LXRhYi1uYXYtYmFyLm1hdC1iYWNrZ3JvdW5kLWFjY2VudFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXRhYi1oZWFkZXItcGFnaW5hdGlvbi1jaGV2cm9uW19uZ2NvbnRlbnQtJUNPTVAlXXtib3JkZXItY29sb3I6I2ZmZn0ubWF0LXRhYi1ncm91cC5tYXQtYmFja2dyb3VuZC1hY2NlbnRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC10YWItaGVhZGVyLXBhZ2luYXRpb24tZGlzYWJsZWRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC10YWItaGVhZGVyLXBhZ2luYXRpb24tY2hldnJvbltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdGFiLW5hdi1iYXIubWF0LWJhY2tncm91bmQtYWNjZW50W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtdGFiLWhlYWRlci1wYWdpbmF0aW9uLWRpc2FibGVkW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtdGFiLWhlYWRlci1wYWdpbmF0aW9uLWNoZXZyb25bX25nY29udGVudC0lQ09NUCVde2JvcmRlci1jb2xvcjpyZ2JhKDI1NSwyNTUsMjU1LC40KX0ubWF0LXRhYi1ncm91cC5tYXQtYmFja2dyb3VuZC1hY2NlbnRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1yaXBwbGUtZWxlbWVudFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdGFiLW5hdi1iYXIubWF0LWJhY2tncm91bmQtYWNjZW50W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtcmlwcGxlLWVsZW1lbnRbX25nY29udGVudC0lQ09NUCVde2JhY2tncm91bmQtY29sb3I6cmdiYSgyNTUsMjU1LDI1NSwuMTIpfS5tYXQtdGFiLWdyb3VwLm1hdC1iYWNrZ3JvdW5kLXdhcm5bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC10YWItbGFiZWwuY2RrLWtleWJvYXJkLWZvY3VzZWRbX25nY29udGVudC0lQ09NUCVdOm5vdCgubWF0LXRhYi1kaXNhYmxlZCksIC5tYXQtdGFiLWdyb3VwLm1hdC1iYWNrZ3JvdW5kLXdhcm5bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC10YWItbGFiZWwuY2RrLXByb2dyYW0tZm9jdXNlZFtfbmdjb250ZW50LSVDT01QJV06bm90KC5tYXQtdGFiLWRpc2FibGVkKSwgLm1hdC10YWItZ3JvdXAubWF0LWJhY2tncm91bmQtd2Fybltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXRhYi1saW5rLmNkay1rZXlib2FyZC1mb2N1c2VkW19uZ2NvbnRlbnQtJUNPTVAlXTpub3QoLm1hdC10YWItZGlzYWJsZWQpLCAubWF0LXRhYi1ncm91cC5tYXQtYmFja2dyb3VuZC13YXJuW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtdGFiLWxpbmsuY2RrLXByb2dyYW0tZm9jdXNlZFtfbmdjb250ZW50LSVDT01QJV06bm90KC5tYXQtdGFiLWRpc2FibGVkKSwgLm1hdC10YWItbmF2LWJhci5tYXQtYmFja2dyb3VuZC13YXJuW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtdGFiLWxhYmVsLmNkay1rZXlib2FyZC1mb2N1c2VkW19uZ2NvbnRlbnQtJUNPTVAlXTpub3QoLm1hdC10YWItZGlzYWJsZWQpLCAubWF0LXRhYi1uYXYtYmFyLm1hdC1iYWNrZ3JvdW5kLXdhcm5bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC10YWItbGFiZWwuY2RrLXByb2dyYW0tZm9jdXNlZFtfbmdjb250ZW50LSVDT01QJV06bm90KC5tYXQtdGFiLWRpc2FibGVkKSwgLm1hdC10YWItbmF2LWJhci5tYXQtYmFja2dyb3VuZC13YXJuW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtdGFiLWxpbmsuY2RrLWtleWJvYXJkLWZvY3VzZWRbX25nY29udGVudC0lQ09NUCVdOm5vdCgubWF0LXRhYi1kaXNhYmxlZCksIC5tYXQtdGFiLW5hdi1iYXIubWF0LWJhY2tncm91bmQtd2Fybltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXRhYi1saW5rLmNkay1wcm9ncmFtLWZvY3VzZWRbX25nY29udGVudC0lQ09NUCVdOm5vdCgubWF0LXRhYi1kaXNhYmxlZCl7YmFja2dyb3VuZC1jb2xvcjpyZ2JhKDI1NSwyMDUsMjEwLC4zKX0ubWF0LXRhYi1ncm91cC5tYXQtYmFja2dyb3VuZC13YXJuW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtdGFiLWhlYWRlcltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdGFiLWdyb3VwLm1hdC1iYWNrZ3JvdW5kLXdhcm5bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC10YWItbGlua3NbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXRhYi1ncm91cC5tYXQtYmFja2dyb3VuZC13YXJuW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtdGFiLWhlYWRlci1wYWdpbmF0aW9uW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10YWItbmF2LWJhci5tYXQtYmFja2dyb3VuZC13YXJuW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtdGFiLWhlYWRlcltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdGFiLW5hdi1iYXIubWF0LWJhY2tncm91bmQtd2Fybltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXRhYi1saW5rc1tfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdGFiLW5hdi1iYXIubWF0LWJhY2tncm91bmQtd2Fybltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXRhYi1oZWFkZXItcGFnaW5hdGlvbltfbmdjb250ZW50LSVDT01QJV17YmFja2dyb3VuZC1jb2xvcjojZjQ0MzM2fS5tYXQtdGFiLWdyb3VwLm1hdC1iYWNrZ3JvdW5kLXdhcm5bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC10YWItbGFiZWxbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXRhYi1ncm91cC5tYXQtYmFja2dyb3VuZC13YXJuW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtdGFiLWxpbmtbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXRhYi1uYXYtYmFyLm1hdC1iYWNrZ3JvdW5kLXdhcm5bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC10YWItbGFiZWxbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXRhYi1uYXYtYmFyLm1hdC1iYWNrZ3JvdW5kLXdhcm5bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC10YWItbGlua1tfbmdjb250ZW50LSVDT01QJV17Y29sb3I6I2ZmZn0ubWF0LXRhYi1ncm91cC5tYXQtYmFja2dyb3VuZC13YXJuW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtdGFiLWxhYmVsLm1hdC10YWItZGlzYWJsZWRbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXRhYi1ncm91cC5tYXQtYmFja2dyb3VuZC13YXJuW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtdGFiLWxpbmsubWF0LXRhYi1kaXNhYmxlZFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdGFiLW5hdi1iYXIubWF0LWJhY2tncm91bmQtd2Fybltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXRhYi1sYWJlbC5tYXQtdGFiLWRpc2FibGVkW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10YWItbmF2LWJhci5tYXQtYmFja2dyb3VuZC13YXJuW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtdGFiLWxpbmsubWF0LXRhYi1kaXNhYmxlZFtfbmdjb250ZW50LSVDT01QJV17Y29sb3I6cmdiYSgyNTUsMjU1LDI1NSwuNCl9Lm1hdC10YWItZ3JvdXAubWF0LWJhY2tncm91bmQtd2Fybltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXRhYi1oZWFkZXItcGFnaW5hdGlvbi1jaGV2cm9uW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10YWItbmF2LWJhci5tYXQtYmFja2dyb3VuZC13YXJuW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtdGFiLWhlYWRlci1wYWdpbmF0aW9uLWNoZXZyb25bX25nY29udGVudC0lQ09NUCVde2JvcmRlci1jb2xvcjojZmZmfS5tYXQtdGFiLWdyb3VwLm1hdC1iYWNrZ3JvdW5kLXdhcm5bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC10YWItaGVhZGVyLXBhZ2luYXRpb24tZGlzYWJsZWRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC10YWItaGVhZGVyLXBhZ2luYXRpb24tY2hldnJvbltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdGFiLW5hdi1iYXIubWF0LWJhY2tncm91bmQtd2Fybltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXRhYi1oZWFkZXItcGFnaW5hdGlvbi1kaXNhYmxlZFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXRhYi1oZWFkZXItcGFnaW5hdGlvbi1jaGV2cm9uW19uZ2NvbnRlbnQtJUNPTVAlXXtib3JkZXItY29sb3I6cmdiYSgyNTUsMjU1LDI1NSwuNCl9Lm1hdC10YWItZ3JvdXAubWF0LWJhY2tncm91bmQtd2Fybltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXJpcHBsZS1lbGVtZW50W19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10YWItbmF2LWJhci5tYXQtYmFja2dyb3VuZC13YXJuW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtcmlwcGxlLWVsZW1lbnRbX25nY29udGVudC0lQ09NUCVde2JhY2tncm91bmQtY29sb3I6cmdiYSgyNTUsMjU1LDI1NSwuMTIpfS5tYXQtdG9vbGJhcltfbmdjb250ZW50LSVDT01QJV17YmFja2dyb3VuZDojZjVmNWY1O2NvbG9yOiMyMTIxMjF9Lm1hdC10b29sYmFyLm1hdC1wcmltYXJ5W19uZ2NvbnRlbnQtJUNPTVAlXXtiYWNrZ3JvdW5kOiNmNTdjMDA7Y29sb3I6I2ZmZn0ubWF0LXRvb2xiYXIubWF0LWFjY2VudFtfbmdjb250ZW50LSVDT01QJV17YmFja2dyb3VuZDojZmY5ODAwO2NvbG9yOiNmZmZ9Lm1hdC10b29sYmFyLm1hdC13YXJuW19uZ2NvbnRlbnQtJUNPTVAlXXtiYWNrZ3JvdW5kOiNmNDQzMzY7Y29sb3I6I2ZmZn0ubWF0LXRvb2xiYXJbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLXVuZGVybGluZVtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdG9vbGJhcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtcmlwcGxlW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10b29sYmFyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9jdXNlZFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtcmlwcGxlW19uZ2NvbnRlbnQtJUNPTVAlXXtiYWNrZ3JvdW5kLWNvbG9yOmN1cnJlbnRDb2xvcn0ubWF0LXRvb2xiYXJbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10b29sYmFyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9jdXNlZFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXRvb2xiYXJbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1zZWxlY3QtdmFsdWVbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXRvb2xiYXJbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1zZWxlY3QtYXJyb3dbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXRvb2xiYXJbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLm1hdC1mb2N1c2VkW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtc2VsZWN0LWFycm93W19uZ2NvbnRlbnQtJUNPTVAlXXtjb2xvcjppbmhlcml0fS5tYXQtdG9vbGJhcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWlucHV0LWVsZW1lbnRbX25nY29udGVudC0lQ09NUCVde2NhcmV0LWNvbG9yOmN1cnJlbnRDb2xvcn0ubWF0LXRvb2xiYXItbXVsdGlwbGUtcm93c1tfbmdjb250ZW50LSVDT01QJV17bWluLWhlaWdodDo2NHB4fS5tYXQtdG9vbGJhci1yb3dbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXRvb2xiYXItc2luZ2xlLXJvd1tfbmdjb250ZW50LSVDT01QJV17aGVpZ2h0OjY0cHh9QG1lZGlhKG1heC13aWR0aDogNTk5cHgpey5tYXQtdG9vbGJhci1tdWx0aXBsZS1yb3dzW19uZ2NvbnRlbnQtJUNPTVAlXXttaW4taGVpZ2h0OjU2cHh9Lm1hdC10b29sYmFyLXJvd1tfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdG9vbGJhci1zaW5nbGUtcm93W19uZ2NvbnRlbnQtJUNPTVAlXXtoZWlnaHQ6NTZweH19Lm1hdC10b29sdGlwW19uZ2NvbnRlbnQtJUNPTVAlXXtiYWNrZ3JvdW5kOnJnYmEoOTcsOTcsOTcsLjkpfS5tYXQtdHJlZVtfbmdjb250ZW50LSVDT01QJV17YmFja2dyb3VuZDojZmZmfS5tYXQtdHJlZS1ub2RlW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1uZXN0ZWQtdHJlZS1ub2RlW19uZ2NvbnRlbnQtJUNPTVAlXXtjb2xvcjojMjEyMTIxfS5tYXQtdHJlZS1ub2RlW19uZ2NvbnRlbnQtJUNPTVAlXXttaW4taGVpZ2h0OjQ4cHh9Lm1hdC1zbmFjay1iYXItY29udGFpbmVyW19uZ2NvbnRlbnQtJUNPTVAlXXtjb2xvcjpyZ2JhKDI1NSwyNTUsMjU1LC43KTtiYWNrZ3JvdW5kOiMzMjMyMzI7Ym94LXNoYWRvdzowcHggM3B4IDVweCAtMXB4IHJnYmEoMCwgMCwgMCwgMC4yKSwwcHggNnB4IDEwcHggMHB4IHJnYmEoMCwgMCwgMCwgMC4xNCksMHB4IDFweCAxOHB4IDBweCByZ2JhKDAsIDAsIDAsIDAuMTIpfS5tYXQtc2ltcGxlLXNuYWNrYmFyLWFjdGlvbltfbmdjb250ZW50LSVDT01QJV17Y29sb3I6I2ZmOTgwMH1bX25naG9zdC0lQ09NUCVde2Rpc3BsYXk6ZmxleDtoZWlnaHQ6MTAwJX1uYXZbX25nY29udGVudC0lQ09NUCVde2JvcmRlci1yaWdodDoxcHggc29saWQgI2ViZWJlYjtmbGV4Om5vbmU7d2lkdGg6MzQwcHh9bWV0cmljcy1tYWluLXZpZXdbX25nY29udGVudC0lQ09NUCVde2ZsZXg6MSAxfSddLGNoYW5nZURldGVjdGlvbjowfSk7Y2xhc3MgWW10e31ZbXQuybVtb2Q9eG8oe3R5cGU6WW10fSksWW10Lsm1aW5qPUdlKHtmYWN0b3J5OmZ1bmN0aW9uIHQobil7cmV0dXJuIG5ldyhufHxZbXQpfX0pLCgidW5kZWZpbmVkIj09dHlwZW9mIG5nSml0TW9kZXx8bmdKaXRNb2RlKSYmeW8oWW10LHtkZWNsYXJhdGlvbnM6W0dsdF0sZXhwb3J0czpbR2x0XX0pO2NsYXNzIHFtdHt9cW10Lsm1bW9kPXhvKHt0eXBlOnFtdH0pLHFtdC7JtWluaj1HZSh7ZmFjdG9yeTpmdW5jdGlvbiB0KG4pe3JldHVybiBuZXcobnx8cW10KX0saW1wb3J0czpbW1BPXV19KSwoInVuZGVmaW5lZCI9PXR5cGVvZiBuZ0ppdE1vZGV8fG5nSml0TW9kZSkmJnlvKHFtdCx7ZGVjbGFyYXRpb25zOltTJF0saW1wb3J0czpbUE9dLGV4cG9ydHM6W1MkXX0pO2NsYXNzIFptdHt9Wm10Lsm1bW9kPXhvKHt0eXBlOlptdH0pLFptdC7JtWluaj1HZSh7ZmFjdG9yeTpmdW5jdGlvbiB0KG4pe3JldHVybiBuZXcobnx8Wm10KX0saW1wb3J0czpbW1BPXV19KSwoInVuZGVmaW5lZCI9PXR5cGVvZiBuZ0ppdE1vZGV8fG5nSml0TW9kZSkmJnlvKFptdCx7ZGVjbGFyYXRpb25zOlt6JCxBJF0saW1wb3J0czpbUE9dLGV4cG9ydHM6W3okXX0pO2NsYXNzIFhtdHt9WG10Lsm1bW9kPXhvKHt0eXBlOlhtdH0pLFhtdC7JtWluaj1HZSh7ZmFjdG9yeTpmdW5jdGlvbiB0KG4pe3JldHVybiBuZXcobnx8WG10KX0saW1wb3J0czpbW1BPLFltdCxvQSxWQixfWixucSxabXQscW10XV19KSwoInVuZGVmaW5lZCI9PXR5cGVvZiBuZ0ppdE1vZGV8fG5nSml0TW9kZSkmJnlvKFhtdCx7ZGVjbGFyYXRpb25zOltLbHQsUWx0XSxpbXBvcnRzOltQTyxZbXQsb0EsVkIsX1osbnEsWm10LHFtdF0sZXhwb3J0czpbS2x0XX0pO2NsYXNzIEptdHt9Sm10Lsm1bW9kPXhvKHt0eXBlOkptdH0pLEptdC7JtWluaj1HZSh7ZmFjdG9yeTpmdW5jdGlvbiB0KG4pe3JldHVybiBuZXcobnx8Sm10KX0saW1wb3J0czpbW1BPLG9BLFZCLF9aLEtXLFptdCxxbXRdXX0pLCgidW5kZWZpbmVkIj09dHlwZW9mIG5nSml0TW9kZXx8bmdKaXRNb2RlKSYmeW8oSm10LHtkZWNsYXJhdGlvbnM6W0IkLEgkXSxpbXBvcnRzOltQTyxvQSxWQixfWixLVyxabXQscW10XSxleHBvcnRzOltCJF19KTtjbGFzcyBRbXR7fVFtdC7JtW1vZD14byh7dHlwZTpRbXR9KSxRbXQuybVpbmo9R2Uoe2ZhY3Rvcnk6ZnVuY3Rpb24gdChuKXtyZXR1cm4gbmV3KG58fFFtdCl9fSksKCJ1bmRlZmluZWQiPT10eXBlb2YgbmdKaXRNb2RlfHxuZ0ppdE1vZGUpJiZ5byhRbXQse2RlY2xhcmF0aW9uczpbbjBdLGV4cG9ydHM6W24wXX0pO2NsYXNzIEttdHt9S210Lsm1bW9kPXhvKHt0eXBlOkttdH0pLEttdC7JtWluaj1HZSh7ZmFjdG9yeTpmdW5jdGlvbiB0KG4pe3JldHVybiBuZXcobnx8S210KX0saW1wb3J0czpbW1BPLHl6LG9BLFZCLHhWLEZxXV19KSwoInVuZGVmaW5lZCI9PXR5cGVvZiBuZ0ppdE1vZGV8fG5nSml0TW9kZSkmJnlvKEttdCx7ZGVjbGFyYXRpb25zOltobHQsZGx0LCRzdF0saW1wb3J0czpbUE8seXosb0EsVkIseFYsRnFdLGV4cG9ydHM6W2hsdCxkbHQsJHN0XX0pO2NsYXNzICRtdHt9JG10Lsm1bW9kPXhvKHt0eXBlOiRtdH0pLCRtdC7JtWluaj1HZSh7ZmFjdG9yeTpmdW5jdGlvbiB0KG4pe3JldHVybiBuZXcobnx8JG10KX0saW1wb3J0czpbW1BPLHl6LEttdCxucV1dfSksKCJ1bmRlZmluZWQiPT10eXBlb2YgbmdKaXRNb2RlfHxuZ0ppdE1vZGUpJiZ5bygkbXQse2RlY2xhcmF0aW9uczpba2x0XSxpbXBvcnRzOltQTyx5eixLbXQsbnFdLGV4cG9ydHM6W2tsdF19KTtjbGFzcyB0ZHR7fXRkdC7JtW1vZD14byh7dHlwZTp0ZHR9KSx0ZHQuybVpbmo9R2Uoe2ZhY3Rvcnk6ZnVuY3Rpb24gdChuKXtyZXR1cm4gbmV3KG58fHRkdCl9LGltcG9ydHM6W1tQTyxPSCxvQSxPQix4VixVSCxFVF1dfSksKCJ1bmRlZmluZWQiPT10eXBlb2YgbmdKaXRNb2RlfHxuZ0ppdE1vZGUpJiZ5byh0ZHQse2RlY2xhcmF0aW9uczpbJCQsSyRdLGltcG9ydHM6W1BPLE9ILG9BLE9CLHhWLFVILEVUXSxleHBvcnRzOlskJF19KTtjbGFzcyBuZHR7fW5kdC7JtW1vZD14byh7dHlwZTpuZHR9KSxuZHQuybVpbmo9R2Uoe2ZhY3Rvcnk6ZnVuY3Rpb24gdChuKXtyZXR1cm4gbmV3KG58fG5kdCl9LGltcG9ydHM6W1tQTyx0ZHQsUW10LCRtdCxvQSxWQixGcSxfWixucSxxbXRdXX0pLCgidW5kZWZpbmVkIj09dHlwZW9mIG5nSml0TW9kZXx8bmdKaXRNb2RlKSYmeW8obmR0LHtkZWNsYXJhdGlvbnM6W2psdCxGbHRdLGltcG9ydHM6W1BPLHRkdCxRbXQsJG10LG9BLFZCLEZxLF9aLG5xLHFtdF0sZXhwb3J0czpbamx0XX0pO2NsYXNzIGVkdHt9ZWR0Lsm1bW9kPXhvKHt0eXBlOmVkdH0pLGVkdC7JtWluaj1HZSh7ZmFjdG9yeTpmdW5jdGlvbiB0KG4pe3JldHVybiBuZXcobnx8ZWR0KX0saW1wb3J0czpbW1BPLEptdCxuZHQsWG10XV19KSwoInVuZGVmaW5lZCI9PXR5cGVvZiBuZ0ppdE1vZGV8fG5nSml0TW9kZSkmJnlvKGVkdCx7ZGVjbGFyYXRpb25zOltYSyxhbXQsb210XSxpbXBvcnRzOltQTyxKbXQsbmR0LFhtdF0sZXhwb3J0czpbWEssb210XX0pO2NvbnN0IGFkdD1bImJ1dHRvbiJdLG9kdD1uZXcgRmEoIk1BVF9CVVRUT05fVE9HR0xFX0RFRkFVTFRfT1BUSU9OUyIpLHJkdD1uZXcgRmEoIk1hdEJ1dHRvblRvZ2dsZUdyb3VwIiksaWR0PXtwcm92aWRlOk1GLHVzZUV4aXN0aW5nOmFhKCgoKT0+bGR0KSksbXVsdGk6ITB9O2xldCBjZHQ9MDtjbGFzcyBzZHR7Y29uc3RydWN0b3IodCxuKXt0aGlzLnNvdXJjZT10LHRoaXMudmFsdWU9bn19Y2xhc3MgbGR0e2NvbnN0cnVjdG9yKHQsbil7dGhpcy5fY2hhbmdlRGV0ZWN0b3I9dCx0aGlzLl92ZXJ0aWNhbD0hMSx0aGlzLl9tdWx0aXBsZT0hMSx0aGlzLl9kaXNhYmxlZD0hMSx0aGlzLl9jb250cm9sVmFsdWVBY2Nlc3NvckNoYW5nZUZuPSgpPT57fSx0aGlzLl9vblRvdWNoZWQ9KCk9Pnt9LHRoaXMuX25hbWU9Im1hdC1idXR0b24tdG9nZ2xlLWdyb3VwLSIrY2R0KyssdGhpcy52YWx1ZUNoYW5nZT1uZXcgRWYsdGhpcy5jaGFuZ2U9bmV3IEVmLHRoaXMuYXBwZWFyYW5jZT1uJiZuLmFwcGVhcmFuY2U/bi5hcHBlYXJhbmNlOiJzdGFuZGFyZCJ9Z2V0IG5hbWUoKXtyZXR1cm4gdGhpcy5fbmFtZX1zZXQgbmFtZSh0KXt0aGlzLl9uYW1lPXQsdGhpcy5fYnV0dG9uVG9nZ2xlcyYmdGhpcy5fYnV0dG9uVG9nZ2xlcy5mb3JFYWNoKCh0PT57dC5uYW1lPXRoaXMuX25hbWUsdC5fbWFya0ZvckNoZWNrKCl9KSl9Z2V0IHZlcnRpY2FsKCl7cmV0dXJuIHRoaXMuX3ZlcnRpY2FsfXNldCB2ZXJ0aWNhbCh0KXt0aGlzLl92ZXJ0aWNhbD1Hdyh0KX1nZXQgdmFsdWUoKXtjb25zdCB0PXRoaXMuX3NlbGVjdGlvbk1vZGVsP3RoaXMuX3NlbGVjdGlvbk1vZGVsLnNlbGVjdGVkOltdO3JldHVybiB0aGlzLm11bHRpcGxlP3QubWFwKCh0PT50LnZhbHVlKSk6dFswXT90WzBdLnZhbHVlOnZvaWQgMH1zZXQgdmFsdWUodCl7dGhpcy5fc2V0U2VsZWN0aW9uQnlWYWx1ZSh0KSx0aGlzLnZhbHVlQ2hhbmdlLmVtaXQodGhpcy52YWx1ZSl9Z2V0IHNlbGVjdGVkKCl7Y29uc3QgdD10aGlzLl9zZWxlY3Rpb25Nb2RlbD90aGlzLl9zZWxlY3Rpb25Nb2RlbC5zZWxlY3RlZDpbXTtyZXR1cm4gdGhpcy5tdWx0aXBsZT90OnRbMF18fG51bGx9Z2V0IG11bHRpcGxlKCl7cmV0dXJuIHRoaXMuX211bHRpcGxlfXNldCBtdWx0aXBsZSh0KXt0aGlzLl9tdWx0aXBsZT1Hdyh0KX1nZXQgZGlzYWJsZWQoKXtyZXR1cm4gdGhpcy5fZGlzYWJsZWR9c2V0IGRpc2FibGVkKHQpe3RoaXMuX2Rpc2FibGVkPUd3KHQpLHRoaXMuX2J1dHRvblRvZ2dsZXMmJnRoaXMuX2J1dHRvblRvZ2dsZXMuZm9yRWFjaCgodD0+dC5fbWFya0ZvckNoZWNrKCkpKX1uZ09uSW5pdCgpe3RoaXMuX3NlbGVjdGlvbk1vZGVsPW5ldyBtQSh0aGlzLm11bHRpcGxlLHZvaWQgMCwhMSl9bmdBZnRlckNvbnRlbnRJbml0KCl7dGhpcy5fc2VsZWN0aW9uTW9kZWwuc2VsZWN0KC4uLnRoaXMuX2J1dHRvblRvZ2dsZXMuZmlsdGVyKCh0PT50LmNoZWNrZWQpKSl9d3JpdGVWYWx1ZSh0KXt0aGlzLnZhbHVlPXQsdGhpcy5fY2hhbmdlRGV0ZWN0b3IubWFya0ZvckNoZWNrKCl9cmVnaXN0ZXJPbkNoYW5nZSh0KXt0aGlzLl9jb250cm9sVmFsdWVBY2Nlc3NvckNoYW5nZUZuPXR9cmVnaXN0ZXJPblRvdWNoZWQodCl7dGhpcy5fb25Ub3VjaGVkPXR9c2V0RGlzYWJsZWRTdGF0ZSh0KXt0aGlzLmRpc2FibGVkPXR9X2VtaXRDaGFuZ2VFdmVudCgpe2NvbnN0IHQ9dGhpcy5zZWxlY3RlZCxuPUFycmF5LmlzQXJyYXkodCk/dFt0Lmxlbmd0aC0xXTp0LGU9bmV3IHNkdChuLHRoaXMudmFsdWUpO3RoaXMuX2NvbnRyb2xWYWx1ZUFjY2Vzc29yQ2hhbmdlRm4oZS52YWx1ZSksdGhpcy5jaGFuZ2UuZW1pdChlKX1fc3luY0J1dHRvblRvZ2dsZSh0LG4sZT0hMSxhPSExKXt0aGlzLm11bHRpcGxlfHwhdGhpcy5zZWxlY3RlZHx8dC5jaGVja2VkfHwodGhpcy5zZWxlY3RlZC5jaGVja2VkPSExKSx0aGlzLl9zZWxlY3Rpb25Nb2RlbD9uP3RoaXMuX3NlbGVjdGlvbk1vZGVsLnNlbGVjdCh0KTp0aGlzLl9zZWxlY3Rpb25Nb2RlbC5kZXNlbGVjdCh0KTphPSEwLGE/UHJvbWlzZS5yZXNvbHZlKCkudGhlbigoKCk9PnRoaXMuX3VwZGF0ZU1vZGVsVmFsdWUoZSkpKTp0aGlzLl91cGRhdGVNb2RlbFZhbHVlKGUpfV9pc1NlbGVjdGVkKHQpe3JldHVybiB0aGlzLl9zZWxlY3Rpb25Nb2RlbCYmdGhpcy5fc2VsZWN0aW9uTW9kZWwuaXNTZWxlY3RlZCh0KX1faXNQcmVjaGVja2VkKHQpe3JldHVybiB2b2lkIDAhPT10aGlzLl9yYXdWYWx1ZSYmKHRoaXMubXVsdGlwbGUmJkFycmF5LmlzQXJyYXkodGhpcy5fcmF3VmFsdWUpP3RoaXMuX3Jhd1ZhbHVlLnNvbWUoKG49Pm51bGwhPXQudmFsdWUmJm49PT10LnZhbHVlKSk6dC52YWx1ZT09PXRoaXMuX3Jhd1ZhbHVlKX1fc2V0U2VsZWN0aW9uQnlWYWx1ZSh0KXtpZih0aGlzLl9yYXdWYWx1ZT10LHRoaXMuX2J1dHRvblRvZ2dsZXMpaWYodGhpcy5tdWx0aXBsZSYmdCl7aWYoIUFycmF5LmlzQXJyYXkodCkmJigidW5kZWZpbmVkIj09dHlwZW9mIG5nRGV2TW9kZXx8bmdEZXZNb2RlKSl0aHJvdyBFcnJvcigiVmFsdWUgbXVzdCBiZSBhbiBhcnJheSBpbiBtdWx0aXBsZS1zZWxlY3Rpb24gbW9kZS4iKTt0aGlzLl9jbGVhclNlbGVjdGlvbigpLHQuZm9yRWFjaCgodD0+dGhpcy5fc2VsZWN0VmFsdWUodCkpKX1lbHNlIHRoaXMuX2NsZWFyU2VsZWN0aW9uKCksdGhpcy5fc2VsZWN0VmFsdWUodCl9X2NsZWFyU2VsZWN0aW9uKCl7dGhpcy5fc2VsZWN0aW9uTW9kZWwuY2xlYXIoKSx0aGlzLl9idXR0b25Ub2dnbGVzLmZvckVhY2goKHQ9PnQuY2hlY2tlZD0hMSkpfV9zZWxlY3RWYWx1ZSh0KXtjb25zdCBuPXRoaXMuX2J1dHRvblRvZ2dsZXMuZmluZCgobj0+bnVsbCE9bi52YWx1ZSYmbi52YWx1ZT09PXQpKTtuJiYobi5jaGVja2VkPSEwLHRoaXMuX3NlbGVjdGlvbk1vZGVsLnNlbGVjdChuKSl9X3VwZGF0ZU1vZGVsVmFsdWUodCl7dCYmdGhpcy5fZW1pdENoYW5nZUV2ZW50KCksdGhpcy52YWx1ZUNoYW5nZS5lbWl0KHRoaXMudmFsdWUpfX1sZHQuybVmYWM9ZnVuY3Rpb24gdChuKXtyZXR1cm4gbmV3KG58fGxkdCkoWmcoVm0pLFpnKG9kdCw4KSl9LGxkdC7JtWRpcj12byh7dHlwZTpsZHQsc2VsZWN0b3JzOltbIm1hdC1idXR0b24tdG9nZ2xlLWdyb3VwIl1dLGNvbnRlbnRRdWVyaWVzOmZ1bmN0aW9uIHQobixlLGEpe3ZhciBvOzEmbiYmR2YoYSxkZHQsITApLDImbiYmVmYobz1aZigpKSYmKGUuX2J1dHRvblRvZ2dsZXM9byl9LGhvc3RBdHRyczpbInJvbGUiLCJncm91cCIsMSwibWF0LWJ1dHRvbi10b2dnbGUtZ3JvdXAiXSxob3N0VmFyczo1LGhvc3RCaW5kaW5nczpmdW5jdGlvbiB0KG4sZSl7MiZuJiYoTmcoImFyaWEtZGlzYWJsZWQiLGUuZGlzYWJsZWQpLERwKCJtYXQtYnV0dG9uLXRvZ2dsZS12ZXJ0aWNhbCIsZS52ZXJ0aWNhbCkoIm1hdC1idXR0b24tdG9nZ2xlLWdyb3VwLWFwcGVhcmFuY2Utc3RhbmRhcmQiLCJzdGFuZGFyZCI9PT1lLmFwcGVhcmFuY2UpKX0saW5wdXRzOnthcHBlYXJhbmNlOiJhcHBlYXJhbmNlIixuYW1lOiJuYW1lIix2ZXJ0aWNhbDoidmVydGljYWwiLHZhbHVlOiJ2YWx1ZSIsbXVsdGlwbGU6Im11bHRpcGxlIixkaXNhYmxlZDoiZGlzYWJsZWQifSxvdXRwdXRzOnt2YWx1ZUNoYW5nZToidmFsdWVDaGFuZ2UiLGNoYW5nZToiY2hhbmdlIn0sZXhwb3J0QXM6WyJtYXRCdXR0b25Ub2dnbGVHcm91cCJdLGZlYXR1cmVzOltNdShbaWR0LHtwcm92aWRlOnJkdCx1c2VFeGlzdGluZzpsZHR9XSldfSksbGR0LmN0b3JQYXJhbWV0ZXJzPSgpPT5be3R5cGU6Vm19LHt0eXBlOnZvaWQgMCxkZWNvcmF0b3JzOlt7dHlwZTpOZX0se3R5cGU6SWUsYXJnczpbb2R0XX1dfV0sbGR0LnByb3BEZWNvcmF0b3JzPXtfYnV0dG9uVG9nZ2xlczpbe3R5cGU6cWQsYXJnczpbYWEoKCgpPT5kZHQpKSx7ZGVzY2VuZGFudHM6ITB9XX1dLGFwcGVhcmFuY2U6W3t0eXBlOmZffV0sbmFtZTpbe3R5cGU6Zl99XSx2ZXJ0aWNhbDpbe3R5cGU6Zl99XSx2YWx1ZTpbe3R5cGU6Zl99XSx2YWx1ZUNoYW5nZTpbe3R5cGU6aF99XSxtdWx0aXBsZTpbe3R5cGU6Zl99XSxkaXNhYmxlZDpbe3R5cGU6Zl99XSxjaGFuZ2U6W3t0eXBlOmhffV19O2NvbnN0IG1kdD1hRShjbGFzc3t9KTtjbGFzcyBkZHQgZXh0ZW5kcyBtZHR7Y29uc3RydWN0b3IodCxuLGUsYSxvLHIpe3N1cGVyKCksdGhpcy5fY2hhbmdlRGV0ZWN0b3JSZWY9bix0aGlzLl9lbGVtZW50UmVmPWUsdGhpcy5fZm9jdXNNb25pdG9yPWEsdGhpcy5faXNTaW5nbGVTZWxlY3Rvcj0hMSx0aGlzLl9jaGVja2VkPSExLHRoaXMuYXJpYUxhYmVsbGVkYnk9bnVsbCx0aGlzLl9kaXNhYmxlZD0hMSx0aGlzLmNoYW5nZT1uZXcgRWY7Y29uc3QgaT1OdW1iZXIobyk7dGhpcy50YWJJbmRleD1pfHwwPT09aT9pOm51bGwsdGhpcy5idXR0b25Ub2dnbGVHcm91cD10LHRoaXMuYXBwZWFyYW5jZT1yJiZyLmFwcGVhcmFuY2U/ci5hcHBlYXJhbmNlOiJzdGFuZGFyZCJ9Z2V0IGJ1dHRvbklkKCl7cmV0dXJuYCR7dGhpcy5pZH0tYnV0dG9uYH1nZXQgYXBwZWFyYW5jZSgpe3JldHVybiB0aGlzLmJ1dHRvblRvZ2dsZUdyb3VwP3RoaXMuYnV0dG9uVG9nZ2xlR3JvdXAuYXBwZWFyYW5jZTp0aGlzLl9hcHBlYXJhbmNlfXNldCBhcHBlYXJhbmNlKHQpe3RoaXMuX2FwcGVhcmFuY2U9dH1nZXQgY2hlY2tlZCgpe3JldHVybiB0aGlzLmJ1dHRvblRvZ2dsZUdyb3VwP3RoaXMuYnV0dG9uVG9nZ2xlR3JvdXAuX2lzU2VsZWN0ZWQodGhpcyk6dGhpcy5fY2hlY2tlZH1zZXQgY2hlY2tlZCh0KXtjb25zdCBuPUd3KHQpO24hPT10aGlzLl9jaGVja2VkJiYodGhpcy5fY2hlY2tlZD1uLHRoaXMuYnV0dG9uVG9nZ2xlR3JvdXAmJnRoaXMuYnV0dG9uVG9nZ2xlR3JvdXAuX3N5bmNCdXR0b25Ub2dnbGUodGhpcyx0aGlzLl9jaGVja2VkKSx0aGlzLl9jaGFuZ2VEZXRlY3RvclJlZi5tYXJrRm9yQ2hlY2soKSl9Z2V0IGRpc2FibGVkKCl7cmV0dXJuIHRoaXMuX2Rpc2FibGVkfHx0aGlzLmJ1dHRvblRvZ2dsZUdyb3VwJiZ0aGlzLmJ1dHRvblRvZ2dsZUdyb3VwLmRpc2FibGVkfXNldCBkaXNhYmxlZCh0KXt0aGlzLl9kaXNhYmxlZD1Hdyh0KX1uZ09uSW5pdCgpe2NvbnN0IHQ9dGhpcy5idXR0b25Ub2dnbGVHcm91cDt0aGlzLl9pc1NpbmdsZVNlbGVjdG9yPXQmJiF0Lm11bHRpcGxlLHRoaXMuaWQ9dGhpcy5pZHx8Im1hdC1idXR0b24tdG9nZ2xlLSIrY2R0KyssdGhpcy5faXNTaW5nbGVTZWxlY3RvciYmKHRoaXMubmFtZT10Lm5hbWUpLHQmJih0Ll9pc1ByZWNoZWNrZWQodGhpcyk/dGhpcy5jaGVja2VkPSEwOnQuX2lzU2VsZWN0ZWQodGhpcykhPT10aGlzLl9jaGVja2VkJiZ0Ll9zeW5jQnV0dG9uVG9nZ2xlKHRoaXMsdGhpcy5fY2hlY2tlZCkpfW5nQWZ0ZXJWaWV3SW5pdCgpe3RoaXMuX2ZvY3VzTW9uaXRvci5tb25pdG9yKHRoaXMuX2VsZW1lbnRSZWYsITApfW5nT25EZXN0cm95KCl7Y29uc3QgdD10aGlzLmJ1dHRvblRvZ2dsZUdyb3VwO3RoaXMuX2ZvY3VzTW9uaXRvci5zdG9wTW9uaXRvcmluZyh0aGlzLl9lbGVtZW50UmVmKSx0JiZ0Ll9pc1NlbGVjdGVkKHRoaXMpJiZ0Ll9zeW5jQnV0dG9uVG9nZ2xlKHRoaXMsITEsITEsITApfWZvY3VzKHQpe3RoaXMuX2J1dHRvbkVsZW1lbnQubmF0aXZlRWxlbWVudC5mb2N1cyh0KX1fb25CdXR0b25DbGljaygpe2NvbnN0IHQ9ISF0aGlzLl9pc1NpbmdsZVNlbGVjdG9yfHwhdGhpcy5fY2hlY2tlZDt0IT09dGhpcy5fY2hlY2tlZCYmKHRoaXMuX2NoZWNrZWQ9dCx0aGlzLmJ1dHRvblRvZ2dsZUdyb3VwJiYodGhpcy5idXR0b25Ub2dnbGVHcm91cC5fc3luY0J1dHRvblRvZ2dsZSh0aGlzLHRoaXMuX2NoZWNrZWQsITApLHRoaXMuYnV0dG9uVG9nZ2xlR3JvdXAuX29uVG91Y2hlZCgpKSksdGhpcy5jaGFuZ2UuZW1pdChuZXcgc2R0KHRoaXMsdGhpcy52YWx1ZSkpfV9tYXJrRm9yQ2hlY2soKXt0aGlzLl9jaGFuZ2VEZXRlY3RvclJlZi5tYXJrRm9yQ2hlY2soKX19ZGR0Lsm1ZmFjPWZ1bmN0aW9uIHQobil7cmV0dXJuIG5ldyhufHxkZHQpKFpnKHJkdCw4KSxaZyhWbSksWmcoeHUpLFpnKFRTKSxYZygidGFiaW5kZXgiKSxaZyhvZHQsOCkpfSxkZHQuybVjbXA9X28oe3R5cGU6ZGR0LHNlbGVjdG9yczpbWyJtYXQtYnV0dG9uLXRvZ2dsZSJdXSx2aWV3UXVlcnk6ZnVuY3Rpb24gdChuLGUpe3ZhciBhOzEmbiYmVWYoYWR0LCEwKSwyJm4mJlZmKGE9WmYoKSkmJihlLl9idXR0b25FbGVtZW50PWEuZmlyc3QpfSxob3N0QXR0cnM6WzEsIm1hdC1idXR0b24tdG9nZ2xlIl0saG9zdFZhcnM6MTEsaG9zdEJpbmRpbmdzOmZ1bmN0aW9uIHQobixlKXsxJm4mJmNwKCJmb2N1cyIsKGZ1bmN0aW9uIHQoKXtyZXR1cm4gZS5mb2N1cygpfSkpLDImbiYmKE5nKCJ0YWJpbmRleCIsLTEpKCJpZCIsZS5pZCkoIm5hbWUiLG51bGwpLERwKCJtYXQtYnV0dG9uLXRvZ2dsZS1zdGFuZGFsb25lIiwhZS5idXR0b25Ub2dnbGVHcm91cCkoIm1hdC1idXR0b24tdG9nZ2xlLWNoZWNrZWQiLGUuY2hlY2tlZCkoIm1hdC1idXR0b24tdG9nZ2xlLWRpc2FibGVkIixlLmRpc2FibGVkKSgibWF0LWJ1dHRvbi10b2dnbGUtYXBwZWFyYW5jZS1zdGFuZGFyZCIsInN0YW5kYXJkIj09PWUuYXBwZWFyYW5jZSkpfSxpbnB1dHM6e2Rpc2FibGVSaXBwbGU6ImRpc2FibGVSaXBwbGUiLGFyaWFMYWJlbGxlZGJ5OlsiYXJpYS1sYWJlbGxlZGJ5IiwiYXJpYUxhYmVsbGVkYnkiXSx0YWJJbmRleDoidGFiSW5kZXgiLGFwcGVhcmFuY2U6ImFwcGVhcmFuY2UiLGNoZWNrZWQ6ImNoZWNrZWQiLGRpc2FibGVkOiJkaXNhYmxlZCIsaWQ6ImlkIixuYW1lOiJuYW1lIixhcmlhTGFiZWw6WyJhcmlhLWxhYmVsIiwiYXJpYUxhYmVsIl0sdmFsdWU6InZhbHVlIn0sb3V0cHV0czp7Y2hhbmdlOiJjaGFuZ2UifSxleHBvcnRBczpbIm1hdEJ1dHRvblRvZ2dsZSJdLGZlYXR1cmVzOltoZ10sbmdDb250ZW50U2VsZWN0b3JzOlsiKiJdLGRlY2xzOjYsdmFyczo5LGNvbnN0czpbWyJ0eXBlIiwiYnV0dG9uIiwxLCJtYXQtYnV0dG9uLXRvZ2dsZS1idXR0b24iLCJtYXQtZm9jdXMtaW5kaWNhdG9yIiwzLCJpZCIsImRpc2FibGVkIiwiY2xpY2siXSxbImJ1dHRvbiIsIiJdLFsxLCJtYXQtYnV0dG9uLXRvZ2dsZS1sYWJlbC1jb250ZW50Il0sWzEsIm1hdC1idXR0b24tdG9nZ2xlLWZvY3VzLW92ZXJsYXkiXSxbIm1hdFJpcHBsZSIsIiIsMSwibWF0LWJ1dHRvbi10b2dnbGUtcmlwcGxlIiwzLCJtYXRSaXBwbGVUcmlnZ2VyIiwibWF0UmlwcGxlRGlzYWJsZWQiXV0sdGVtcGxhdGU6ZnVuY3Rpb24gdChuLGUpe2lmKDEmbiYmKGJwKCksS2coMCwiYnV0dG9uIiwwLDEpLGNwKCJjbGljayIsKGZ1bmN0aW9uIHQoKXtyZXR1cm4gZS5fb25CdXR0b25DbGljaygpfSkpLEtnKDIsInNwYW4iLDIpLGhwKDMpLCRnKCksJGcoKSx0cCg0LCJzcGFuIiwzKSx0cCg1LCJzcGFuIiw0KSksMiZuKXtjb25zdCB0PXFnKDEpO0pnKCJpZCIsZS5idXR0b25JZCkoImRpc2FibGVkIixlLmRpc2FibGVkfHxudWxsKSxOZygidGFiaW5kZXgiLGUuZGlzYWJsZWQ/LTE6ZS50YWJJbmRleCkoImFyaWEtcHJlc3NlZCIsZS5jaGVja2VkKSgibmFtZSIsZS5uYW1lfHxudWxsKSgiYXJpYS1sYWJlbCIsZS5hcmlhTGFiZWwpKCJhcmlhLWxhYmVsbGVkYnkiLGUuYXJpYUxhYmVsbGVkYnkpLHdzKDUpLEpnKCJtYXRSaXBwbGVUcmlnZ2VyIix0KSgibWF0UmlwcGxlRGlzYWJsZWQiLGUuZGlzYWJsZVJpcHBsZXx8ZS5kaXNhYmxlZCl9fSxkaXJlY3RpdmVzOlt6RV0sc3R5bGVzOlsiLm1hdC1idXR0b24tdG9nZ2xlLXN0YW5kYWxvbmUsLm1hdC1idXR0b24tdG9nZ2xlLWdyb3Vwe3Bvc2l0aW9uOnJlbGF0aXZlO2Rpc3BsYXk6aW5saW5lLWZsZXg7ZmxleC1kaXJlY3Rpb246cm93O3doaXRlLXNwYWNlOm5vd3JhcDtvdmVyZmxvdzpoaWRkZW47Ym9yZGVyLXJhZGl1czoycHg7LXdlYmtpdC10YXAtaGlnaGxpZ2h0LWNvbG9yOnRyYW5zcGFyZW50fS5jZGstaGlnaC1jb250cmFzdC1hY3RpdmUgLm1hdC1idXR0b24tdG9nZ2xlLXN0YW5kYWxvbmUsLmNkay1oaWdoLWNvbnRyYXN0LWFjdGl2ZSAubWF0LWJ1dHRvbi10b2dnbGUtZ3JvdXB7b3V0bGluZTpzb2xpZCAxcHh9Lm1hdC1idXR0b24tdG9nZ2xlLXN0YW5kYWxvbmUubWF0LWJ1dHRvbi10b2dnbGUtYXBwZWFyYW5jZS1zdGFuZGFyZCwubWF0LWJ1dHRvbi10b2dnbGUtZ3JvdXAtYXBwZWFyYW5jZS1zdGFuZGFyZHtib3JkZXItcmFkaXVzOjRweH0uY2RrLWhpZ2gtY29udHJhc3QtYWN0aXZlIC5tYXQtYnV0dG9uLXRvZ2dsZS1zdGFuZGFsb25lLm1hdC1idXR0b24tdG9nZ2xlLWFwcGVhcmFuY2Utc3RhbmRhcmQsLmNkay1oaWdoLWNvbnRyYXN0LWFjdGl2ZSAubWF0LWJ1dHRvbi10b2dnbGUtZ3JvdXAtYXBwZWFyYW5jZS1zdGFuZGFyZHtvdXRsaW5lOjB9Lm1hdC1idXR0b24tdG9nZ2xlLXZlcnRpY2Fse2ZsZXgtZGlyZWN0aW9uOmNvbHVtbn0ubWF0LWJ1dHRvbi10b2dnbGUtdmVydGljYWwgLm1hdC1idXR0b24tdG9nZ2xlLWxhYmVsLWNvbnRlbnR7ZGlzcGxheTpibG9ja30ubWF0LWJ1dHRvbi10b2dnbGV7d2hpdGUtc3BhY2U6bm93cmFwO3Bvc2l0aW9uOnJlbGF0aXZlfS5tYXQtYnV0dG9uLXRvZ2dsZSAubWF0LWljb24gc3Zne3ZlcnRpY2FsLWFsaWduOnRvcH0ubWF0LWJ1dHRvbi10b2dnbGUuY2RrLWtleWJvYXJkLWZvY3VzZWQgLm1hdC1idXR0b24tdG9nZ2xlLWZvY3VzLW92ZXJsYXl7b3BhY2l0eToxfS5jZGstaGlnaC1jb250cmFzdC1hY3RpdmUgLm1hdC1idXR0b24tdG9nZ2xlLmNkay1rZXlib2FyZC1mb2N1c2VkIC5tYXQtYnV0dG9uLXRvZ2dsZS1mb2N1cy1vdmVybGF5e29wYWNpdHk6LjV9Lm1hdC1idXR0b24tdG9nZ2xlLWFwcGVhcmFuY2Utc3RhbmRhcmQ6bm90KC5tYXQtYnV0dG9uLXRvZ2dsZS1kaXNhYmxlZCk6aG92ZXIgLm1hdC1idXR0b24tdG9nZ2xlLWZvY3VzLW92ZXJsYXl7b3BhY2l0eTouMDR9Lm1hdC1idXR0b24tdG9nZ2xlLWFwcGVhcmFuY2Utc3RhbmRhcmQuY2RrLWtleWJvYXJkLWZvY3VzZWQ6bm90KC5tYXQtYnV0dG9uLXRvZ2dsZS1kaXNhYmxlZCkgLm1hdC1idXR0b24tdG9nZ2xlLWZvY3VzLW92ZXJsYXl7b3BhY2l0eTouMTJ9LmNkay1oaWdoLWNvbnRyYXN0LWFjdGl2ZSAubWF0LWJ1dHRvbi10b2dnbGUtYXBwZWFyYW5jZS1zdGFuZGFyZC5jZGsta2V5Ym9hcmQtZm9jdXNlZDpub3QoLm1hdC1idXR0b24tdG9nZ2xlLWRpc2FibGVkKSAubWF0LWJ1dHRvbi10b2dnbGUtZm9jdXMtb3ZlcmxheXtvcGFjaXR5Oi41fUBtZWRpYShob3Zlcjogbm9uZSl7Lm1hdC1idXR0b24tdG9nZ2xlLWFwcGVhcmFuY2Utc3RhbmRhcmQ6bm90KC5tYXQtYnV0dG9uLXRvZ2dsZS1kaXNhYmxlZCk6aG92ZXIgLm1hdC1idXR0b24tdG9nZ2xlLWZvY3VzLW92ZXJsYXl7ZGlzcGxheTpub25lfX0ubWF0LWJ1dHRvbi10b2dnbGUtbGFiZWwtY29udGVudHstd2Via2l0LXVzZXItc2VsZWN0Om5vbmU7LW1vei11c2VyLXNlbGVjdDpub25lOy1tcy11c2VyLXNlbGVjdDpub25lO3VzZXItc2VsZWN0Om5vbmU7ZGlzcGxheTppbmxpbmUtYmxvY2s7bGluZS1oZWlnaHQ6MzZweDtwYWRkaW5nOjAgMTZweDtwb3NpdGlvbjpyZWxhdGl2ZX0ubWF0LWJ1dHRvbi10b2dnbGUtYXBwZWFyYW5jZS1zdGFuZGFyZCAubWF0LWJ1dHRvbi10b2dnbGUtbGFiZWwtY29udGVudHtwYWRkaW5nOjAgMTJweH0ubWF0LWJ1dHRvbi10b2dnbGUtbGFiZWwtY29udGVudD4qe3ZlcnRpY2FsLWFsaWduOm1pZGRsZX0ubWF0LWJ1dHRvbi10b2dnbGUtZm9jdXMtb3ZlcmxheXtib3JkZXItcmFkaXVzOmluaGVyaXQ7cG9pbnRlci1ldmVudHM6bm9uZTtvcGFjaXR5OjA7dG9wOjA7bGVmdDowO3JpZ2h0OjA7Ym90dG9tOjA7cG9zaXRpb246YWJzb2x1dGV9Lm1hdC1idXR0b24tdG9nZ2xlLWNoZWNrZWQgLm1hdC1idXR0b24tdG9nZ2xlLWZvY3VzLW92ZXJsYXl7Ym9yZGVyLWJvdHRvbTpzb2xpZCAzNnB4fS5jZGstaGlnaC1jb250cmFzdC1hY3RpdmUgLm1hdC1idXR0b24tdG9nZ2xlLWNoZWNrZWQgLm1hdC1idXR0b24tdG9nZ2xlLWZvY3VzLW92ZXJsYXl7b3BhY2l0eTouNTtoZWlnaHQ6MH0uY2RrLWhpZ2gtY29udHJhc3QtYWN0aXZlIC5tYXQtYnV0dG9uLXRvZ2dsZS1jaGVja2VkLm1hdC1idXR0b24tdG9nZ2xlLWFwcGVhcmFuY2Utc3RhbmRhcmQgLm1hdC1idXR0b24tdG9nZ2xlLWZvY3VzLW92ZXJsYXl7Ym9yZGVyLWJvdHRvbTpzb2xpZCA1MDBweH0ubWF0LWJ1dHRvbi10b2dnbGUgLm1hdC1idXR0b24tdG9nZ2xlLXJpcHBsZXt0b3A6MDtsZWZ0OjA7cmlnaHQ6MDtib3R0b206MDtwb3NpdGlvbjphYnNvbHV0ZTtwb2ludGVyLWV2ZW50czpub25lfS5tYXQtYnV0dG9uLXRvZ2dsZS1idXR0b257Ym9yZGVyOjA7YmFja2dyb3VuZDpub25lO2NvbG9yOmluaGVyaXQ7cGFkZGluZzowO21hcmdpbjowO2ZvbnQ6aW5oZXJpdDtvdXRsaW5lOm5vbmU7d2lkdGg6MTAwJTtjdXJzb3I6cG9pbnRlcn0ubWF0LWJ1dHRvbi10b2dnbGUtZGlzYWJsZWQgLm1hdC1idXR0b24tdG9nZ2xlLWJ1dHRvbntjdXJzb3I6ZGVmYXVsdH0ubWF0LWJ1dHRvbi10b2dnbGUtYnV0dG9uOjotbW96LWZvY3VzLWlubmVye2JvcmRlcjowfVxuIl0sZW5jYXBzdWxhdGlvbjoyLGNoYW5nZURldGVjdGlvbjowfSksZGR0LmN0b3JQYXJhbWV0ZXJzPSgpPT5be3R5cGU6bGR0LGRlY29yYXRvcnM6W3t0eXBlOk5lfSx7dHlwZTpJZSxhcmdzOltyZHRdfV19LHt0eXBlOlZtfSx7dHlwZTp4dX0se3R5cGU6VFN9LHt0eXBlOlN0cmluZyxkZWNvcmF0b3JzOlt7dHlwZTpCZSxhcmdzOlsidGFiaW5kZXgiXX1dfSx7dHlwZTp2b2lkIDAsZGVjb3JhdG9yczpbe3R5cGU6TmV9LHt0eXBlOkllLGFyZ3M6W29kdF19XX1dLGRkdC5wcm9wRGVjb3JhdG9ycz17YXJpYUxhYmVsOlt7dHlwZTpmXyxhcmdzOlsiYXJpYS1sYWJlbCJdfV0sYXJpYUxhYmVsbGVkYnk6W3t0eXBlOmZfLGFyZ3M6WyJhcmlhLWxhYmVsbGVkYnkiXX1dLF9idXR0b25FbGVtZW50Olt7dHlwZTpYZCxhcmdzOlsiYnV0dG9uIl19XSxpZDpbe3R5cGU6Zl99XSxuYW1lOlt7dHlwZTpmX31dLHZhbHVlOlt7dHlwZTpmX31dLHRhYkluZGV4Olt7dHlwZTpmX31dLGFwcGVhcmFuY2U6W3t0eXBlOmZffV0sY2hlY2tlZDpbe3R5cGU6Zl99XSxkaXNhYmxlZDpbe3R5cGU6Zl99XSxjaGFuZ2U6W3t0eXBlOmhffV19OwovKioKICAgICAqIEBsaWNlbnNlCiAgICAgKiBDb3B5cmlnaHQgR29vZ2xlIExMQyBBbGwgUmlnaHRzIFJlc2VydmVkLgogICAgICoKICAgICAqIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGFuIE1JVC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCiAgICAgKiBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlIGF0IGh0dHBzOi8vYW5ndWxhci5pby9saWNlbnNlCiAgICAgKi8KY2xhc3MgZ2R0e31nZHQuybVtb2Q9eG8oe3R5cGU6Z2R0fSksZ2R0Lsm1aW5qPUdlKHtmYWN0b3J5OmZ1bmN0aW9uIHQobil7cmV0dXJuIG5ldyhufHxnZHQpfSxpbXBvcnRzOltbdEUsUkVdLHRFXX0pLCgidW5kZWZpbmVkIj09dHlwZW9mIG5nSml0TW9kZXx8bmdKaXRNb2RlKSYmeW8oZ2R0LHtkZWNsYXJhdGlvbnM6ZnVuY3Rpb24oKXtyZXR1cm5bbGR0LGRkdF19LGltcG9ydHM6ZnVuY3Rpb24oKXtyZXR1cm5bdEUsUkVdfSxleHBvcnRzOmZ1bmN0aW9uKCl7cmV0dXJuW3RFLGxkdCxkZHRdfX0pO2NsYXNzIHBkdHt9cGR0Lsm1bW9kPXhvKHt0eXBlOnBkdH0pLHBkdC7JtWluaj1HZSh7ZmFjdG9yeTpmdW5jdGlvbiB0KG4pe3JldHVybiBuZXcobnx8cGR0KX0saW1wb3J0czpbW1BPLFVIXV19KSwoInVuZGVmaW5lZCI9PXR5cGVvZiBuZ0ppdE1vZGV8fG5nSml0TW9kZSkmJnlvKHBkdCx7ZGVjbGFyYXRpb25zOltJbXRdLGltcG9ydHM6W1BPLFVIXSxleHBvcnRzOltJbXRdfSk7Y2xhc3MgYmR0e31iZHQuybVtb2Q9eG8oe3R5cGU6YmR0fSksYmR0Lsm1aW5qPUdlKHtmYWN0b3J5OmZ1bmN0aW9uIHQobil7cmV0dXJuIG5ldyhufHxiZHQpfSxpbXBvcnRzOltbUE8scGR0LG9BLGdkdCxtVixWQixVSCxLV11dfSksKCJ1bmRlZmluZWQiPT10eXBlb2YgbmdKaXRNb2RlfHxuZ0ppdE1vZGUpJiZ5byhiZHQse2RlY2xhcmF0aW9uczpbTG10LE5tdCxGbXRdLGltcG9ydHM6W1BPLHBkdCxvQSxnZHQsbVYsVkIsVUgsS1ddLGV4cG9ydHM6W0xtdF19KTtjbGFzcyB1ZHR7fXVkdC7JtW1vZD14byh7dHlwZTp1ZHR9KSx1ZHQuybVpbmo9R2Uoe2ZhY3Rvcnk6ZnVuY3Rpb24gdChuKXtyZXR1cm4gbmV3KG58fHVkdCl9LGltcG9ydHM6W1tlZHQsUE8sUCQsb0EsVkIseFYsYmR0LHZBXV19KSwoInVuZGVmaW5lZCI9PXR5cGVvZiBuZ0ppdE1vZGV8fG5nSml0TW9kZSkmJnlvKHVkdCx7ZGVjbGFyYXRpb25zOltfbXQsQ210LFBtdCx5bXQsdm10LFNtdCxVbXQsV210LGskLHYkLFJtdCxUbXRdLGltcG9ydHM6W2VkdCxQTyxQJCxvQSxWQix4VixiZHQsdkFdLGV4cG9ydHM6W1dtdF19KTtjbGFzcyBmZHR7fWZkdC7JtW1vZD14byh7dHlwZTpmZHR9KSxmZHQuybVpbmo9R2Uoe2ZhY3Rvcnk6ZnVuY3Rpb24gdChuKXtyZXR1cm4gbmV3KG58fGZkdCl9LGltcG9ydHM6W1tQTyxiZHQsaUssdWR0XV19KSwoInVuZGVmaW5lZCI9PXR5cGVvZiBuZ0ppdE1vZGV8fG5nSml0TW9kZSkmJnlvKGZkdCx7ZGVjbGFyYXRpb25zOltHbXRdLGltcG9ydHM6W1BPLGJkdCxpSyx1ZHRdLGV4cG9ydHM6W0dtdF19KTtjbGFzcyBoZHR7fWhkdC7JtW1vZD14byh7dHlwZTpoZHR9KSxoZHQuybVpbmo9R2Uoe2ZhY3Rvcnk6ZnVuY3Rpb24gdChuKXtyZXR1cm4gbmV3KG58fGhkdCl9LHByb3ZpZGVyczpbe3Byb3ZpZGU6R0ssdXNlRmFjdG9yeTpmdW5jdGlvbiBfZHQodCl7cmV0dXJuIHQ/e2luaXRpYWxTdGF0ZTpPYmplY3QuYXNzaWduKE9iamVjdC5hc3NpZ24oe30sTEspLHtzZXR0aW5nczp0fSl9Ontpbml0aWFsU3RhdGU6TEt9fSxkZXBzOltZS119LHtwcm92aWRlOllLLHVzZVZhbHVlOllUfV0saW1wb3J0czpbW1BPLGlLLGdxLmZvclBsdWdpbihkVCxHbXQpLEVULGZkdCxJdi5mb3JGZWF0dXJlKEdULChmdW5jdGlvbiBDZHQodCxuKXtyZXR1cm4geksoSEssRkspKHQsbil9KSxHSyksZncuZm9yRmVhdHVyZShbV0tdKSxNdy5yZWdpc3RlckFsZXJ0QWN0aW9ucygoZnVuY3Rpb24gTWR0KCl7cmV0dXJuW3thY3Rpb25DcmVhdG9yOlNLLGFsZXJ0RnJvbUFjdGlvbjp0PT57Y29uc3R7d2FzUGlubmVkOm4sY2FuQ3JlYXRlTmV3UGluczplfT10O3JldHVybiBufHxlP251bGw6e2xvY2FsaXplZE1lc3NhZ2U6Ik1heCBwaW4gbGltaXQgZXhjZWVkZWQuIFJlbW92ZSBleGlzdGluZyBwaW5zIGJlZm9yZSBhZGRpbmcgbW9yZS4gU2VlIGh0dHBzOi8vZ2l0aHViLmNvbS90ZW5zb3JmbG93L3RlbnNvcmJvYXJkL2lzc3Vlcy80MjQyIn19fV19KSldXX0pLCgidW5kZWZpbmVkIj09dHlwZW9mIG5nSml0TW9kZXx8bmdKaXRNb2RlKSYmeW8oaGR0LHtpbXBvcnRzOltQTyxpSyxncSxFVCxmZHQsRHYsdXcsTXddfSk7Y29uc3QgT2R0PSJucG1pIjt2YXIgUGR0LHhkdCx5ZHQsa2R0OyEoZnVuY3Rpb24odCl7dFt0LkFORD0wXT0iQU5EIn0pKFBkdHx8KFBkdD17fSkpLChmdW5jdGlvbih0KXt0W3QuTUVUUklDPTBdPSJNRVRSSUMiLHRbdC5PUEVSQVRPUj0xXT0iT1BFUkFUT1IifSkoeGR0fHwoeGR0PXt9KSksKGZ1bmN0aW9uKHQpe3RbdC5ERUZBVUxUPTBdPSJERUZBVUxUIix0W3QuRU1CRURESU5HUz0xXT0iRU1CRURESU5HUyJ9KSh5ZHR8fCh5ZHQ9e30pKSwoZnVuY3Rpb24odCl7dFt0LkRFU0NFTkRJTkc9MF09IkRFU0NFTkRJTkciLHRbdC5BU0NFTkRORz0xXT0iQVNDRU5ETkciLHRbdC5TSU1JTEFSPTJdPSJTSU1JTEFSIix0W3QuRElTU0lNSUxBUj0zXT0iRElTU0lNSUxBUiJ9KShrZHR8fChrZHQ9e30pKTtjbGFzcyB2ZHR7fXZkdC7JtWZhYz1mdW5jdGlvbiB0KG4pe3JldHVybiBuZXcobnx8dmR0KX0sdmR0Lsm1Y21wPV9vKHt0eXBlOnZkdCxzZWxlY3RvcnM6W1sibnBtaS1pbmFjdGl2ZS12aWV3Il1dLGRlY2xzOjYsdmFyczowLGNvbnN0czpbWzEsImNvbnRhaW5lciJdLFsxLCJ0aXRsZSJdXSx0ZW1wbGF0ZTpmdW5jdGlvbiB0KG4sZSl7MSZuJiYoS2coMCwiZGl2IiksS2coMSwiZGl2IiwwKSxLZygyLCJkaXYiLDEpLEpwKDMsIm5QTUkgaXMgaW5hY3RpdmUgYmVjYXVzZSBubyBkYXRhIGlzIGF2YWlsYWJsZS4iKSwkZygpLEtnKDQsImRpdiIpLEpwKDUsIiBUbyB1c2UgdGhlIG5QTUksIGNhbGN1bGF0ZSBuUE1JIHZhbHVlcywgYW5kIGxvZyB0aGVtIHVzaW5nIHRoZSBzdW1tYXJ5IHdyaXRlci4gIiksJGcoKSwkZygpLCRnKCkpfSxzdHlsZXM6WyIuY29udGFpbmVyW19uZ2NvbnRlbnQtJUNPTVAlXSB7XG4gIGhlaWdodDogMTAwJTtcbiAgZm9udC1mYW1pbHk6IFJvYm90bztcbiAgZm9udC1zaXplOiAxNXB4O1xuICBwYWRkaW5nOiA1MHB4O1xufVxuXG4udGl0bGVbX25nY29udGVudC0lQ09NUCVdIHtcbiAgZm9udC1zaXplOiAxMzUlO1xuICBmb250LXdlaWdodDogYm9sZDtcbiAgbWFyZ2luLWJvdHRvbTogMjVweDtcbn0iXX0pO2NvbnN0IHdkdD11dihPZHQpLFNkdD1wdih3ZHQsKHQ9PnQucGx1Z2luRGF0YUxvYWRlZC5zdGF0ZSkpLEVkdD1wdih3ZHQsKHQ9PnQuYW5ub3RhdGlvbkRhdGEpKSxBZHQ9cHYod2R0LCh0PT50LnJ1blRvTWV0cmljcykpLHpkdD1wdih3ZHQsKHQ9PnQuZW1iZWRkaW5nRGF0YVNldCkpLFJkdD1wdih3ZHQsKHQ9PnQuc2VsZWN0ZWRBbm5vdGF0aW9ucykpLFRkdD1wdih3ZHQsKHQ9PnQuZmxhZ2dlZEFubm90YXRpb25zKSksRGR0PXB2KHdkdCwodD0+dC5oaWRkZW5Bbm5vdGF0aW9ucykpLElkdD1wdih3ZHQsKHQ9PnQuYW5ub3RhdGlvbnNSZWdleCkpLE5kdD1wdih3ZHQsKHQ9PnQubWV0cmljc1JlZ2V4KSksRmR0PXB2KHdkdCwodD0+dC5tZXRyaWNBcml0aG1ldGljKSksTGR0PXB2KHdkdCwodD0+dC5tZXRyaWNGaWx0ZXJzKSksSGR0PXB2KHdkdCwodD0+dC5zb3J0KSksQmR0PXB2KHdkdCwodD0+dC5wY0V4cGFuZGVkKSksVmR0PXB2KHdkdCwodD0+dC5hbm5vdGF0aW9uc0V4cGFuZGVkKSksamR0PXB2KHdkdCwodD0+dC5zaWRlYmFyRXhwYW5kZWQpKSxVZHQ9cHYod2R0LCh0PT50LnNob3dDb3VudHMpKSxXZHQ9cHYod2R0LCh0PT50LnNob3dIaWRkZW5Bbm5vdGF0aW9ucykpLEdkdD1wdih3ZHQsKHQ9PnQudmlld0FjdGl2ZSkpLFlkdD1wdih3ZHQsKHQ9PnQuc2lkZWJhcldpZHRoKSkscWR0PXB2KHdkdCwodD0+dC5lbWJlZGRpbmdzTWV0cmljKSksWmR0PXB2KHdkdCwodD0+dC5lbWJlZGRpbmdzU2lkZWJhcldpZHRoKSksWGR0PXB2KHdkdCwodD0+dC5lbWJlZGRpbmdzU2lkZWJhckV4cGFuZGVkKSksSmR0PU9rKCJbTlBNSV0gblBNSSBMb2FkZWQiKSxRZHQ9T2soIltOUE1JXSBuUE1JIFBsdWdpbiBEYXRhIFJlcXVlc3RlZCIpLEtkdD1PaygiW05QTUldIG5QTUkgUGx1Z2luIERhdGEgTG9hZGVkIix7X2FzOiJwcm9wcyIsX3A6dm9pZCAwfSksJGR0PU9rKCJbTlBNSV0gblBNSSBQbHVnaW4gRGF0YSBSZXF1ZXN0IEZhaWxlZCIpLHRndD1PaygiW05QTUldIEFkZGluZy9SZW1vdmluZyBBbm5vdGF0aW9ucyB0by9mcm9tIFNlbGVjdGVkIix7X2FzOiJwcm9wcyIsX3A6dm9pZCAwfSksbmd0PU9rKCJbTlBNSV0gQW5ub3RhdGlvbnMgU2V0Iix7X2FzOiJwcm9wcyIsX3A6dm9pZCAwfSksZWd0PU9rKCJbTlBNSV0gQ2xlYXJpbmcgdGhlIEFubm90YXRpb24gU2VsZWN0aW9uIiksYWd0PU9rKCJbTlBNSV0gQWRkaW5nL1JlbW92aW5nIEFubm90YXRpb25zIHRvL2Zyb20gRmxhZ2dlZCIse19hczoicHJvcHMiLF9wOnZvaWQgMH0pLG9ndD1PaygiW05QTUldIEFkZGluZy9SZW1vdmluZyBBbm5vdGF0aW9ucyB0by9mcm9tIEhpZGRlbiIse19hczoicHJvcHMiLF9wOnZvaWQgMH0pLHJndD1PaygiW05QTUldIEFubm90YXRpb25zIFJlZ2V4IENoYW5nZWQiLHtfYXM6InByb3BzIixfcDp2b2lkIDB9KSxpZ3Q9T2soIltOUE1JXSBNZXRyaWNzIFJlZ2V4IENoYW5nZWQiLHtfYXM6InByb3BzIixfcDp2b2lkIDB9KSxjZ3Q9T2soIltOUE1JXSBNZXRyaWMgRmlsdGVyIEFkZGVkIix7X2FzOiJwcm9wcyIsX3A6dm9pZCAwfSksc2d0PU9rKCJbTlBNSV0gTWV0cmljIEZpbHRlciBSZW1vdmVkIix7X2FzOiJwcm9wcyIsX3A6dm9pZCAwfSksbGd0PU9rKCJbTlBNSV0gTWV0cmljIEZpbHRlciBDaGFuZ2VkIix7X2FzOiJwcm9wcyIsX3A6dm9pZCAwfSksbWd0PU9rKCJbTlBNSV0gQW5ub3RhdGlvbiBTb3J0IENoYW5nZWQiLHtfYXM6InByb3BzIixfcDp2b2lkIDB9KSxkZ3Q9T2soIltOUE1JXSBTaW1pbGFyaXR5IFNvcnQgQ2hhbmdlZCIse19hczoicHJvcHMiLF9wOnZvaWQgMH0pLGdndD1PaygiW05QTUldIFRvZ2dsZSBQQyBFeHBhbmRlZCIpLHBndD1PaygiW05QTUldIFRvZ2dsZSBBbm5vdGF0aW9ucyBFeHBhbmRlZCIpLGJndD1PaygiW05QTUldIFRvZ2dsZSBTaWRlYmFyIEV4cGFuZGVkIiksdWd0PU9rKCJbTlBNSV0gU2hvdyBDb3VudHMgVG9nZ2xlZCIpLGZndD1PaygiW05QTUldIFNob3cgSGlkZGVuIEFubm90YXRpb25zIFRvZ2dsZWQiKSxoZ3Q9T2soIltOUE1JXSBFbWJlZGRpbmdzIFZpZXcgVG9nZ2xlZCIse19hczoicHJvcHMiLF9wOnZvaWQgMH0pLF9ndD1PaygiW05QTUldIFNpZGViYXIgV2lkdGggQ2hhbmdlZCIse19hczoicHJvcHMiLF9wOnZvaWQgMH0pLENndD1PaygiW05QTUldIEVtYmVkZGluZ3MgU2lkZWJhciBXaWR0aCBDaGFuZ2VkIix7X2FzOiJwcm9wcyIsX3A6dm9pZCAwfSksTWd0PU9rKCJbTlBNSV0gVG9nZ2xlIEVtYmVkZGluZ3MgU2lkZWJhciBFeHBhbmRlZCIpLE9ndD1PaygiW05QTUldIENoYW5nZSBFbWJlZGRpbmcgRGF0YVNldCIse19hczoicHJvcHMiLF9wOnZvaWQgMH0pO2Z1bmN0aW9uIFBndCh0KXtyZXR1cm4gdC5zdGFydHNXaXRoKCJjb3VudEAiKX1mdW5jdGlvbiB4Z3QodCl7cmV0dXJuIHQuc3RhcnRzV2l0aCgiblBNSUAiKXx8dC5zdGFydHNXaXRoKCJuUE1JX2RpZmZAIil9ZnVuY3Rpb24geWd0KHQpe3JldHVybiB0LnN0YXJ0c1dpdGgoIm5QTUlAIil9ZnVuY3Rpb24ga2d0KHQpe3JldHVybiB0LnNwbGl0KCJAIiwyKVsxXX1jb25zdCB2Z3Q9VXYoe3BsdWdpbkRhdGFMb2FkZWQ6e3N0YXRlOmZSLk5PVF9MT0FERUQsbGFzdExvYWRlZFRpbWVJbk1zOm51bGx9LGFubm90YXRpb25EYXRhOnt9LHJ1blRvTWV0cmljczp7fSxzZWxlY3RlZEFubm90YXRpb25zOltdLGZsYWdnZWRBbm5vdGF0aW9uczpbXSxoaWRkZW5Bbm5vdGF0aW9uczpbXSxhbm5vdGF0aW9uc1JlZ2V4OiIiLG1ldHJpY3NSZWdleDoiIixtZXRyaWNBcml0aG1ldGljOltdLG1ldHJpY0ZpbHRlcnM6e30sc29ydDp7bWV0cmljOiIiLG9yZGVyOmtkdC5ERVNDRU5ESU5HfSxwY0V4cGFuZGVkOiEwLGFubm90YXRpb25zRXhwYW5kZWQ6ITAsc2lkZWJhckV4cGFuZGVkOiEwLHNob3dDb3VudHM6ITAsc2hvd0hpZGRlbkFubm90YXRpb25zOiExLHNpZGViYXJXaWR0aDozMDAsdmlld0FjdGl2ZTp5ZHQuREVGQVVMVCxlbWJlZGRpbmdzTWV0cmljOiIiLGVtYmVkZGluZ3NTaWRlYmFyV2lkdGg6NTAwLGVtYmVkZGluZ3NTaWRlYmFyRXhwYW5kZWQ6ITB9LGp2KFFkdCwodD0+T2JqZWN0LmFzc2lnbihPYmplY3QuYXNzaWduKHt9LHQpLHtwbHVnaW5EYXRhTG9hZGVkOk9iamVjdC5hc3NpZ24oT2JqZWN0LmFzc2lnbih7fSx0LnBsdWdpbkRhdGFMb2FkZWQpLHtzdGF0ZTpmUi5MT0FESU5HfSl9KSkpLGp2KCRkdCwodD0+T2JqZWN0LmFzc2lnbihPYmplY3QuYXNzaWduKHt9LHQpLHtwbHVnaW5EYXRhTG9hZGVkOk9iamVjdC5hc3NpZ24oT2JqZWN0LmFzc2lnbih7fSx0LnBsdWdpbkRhdGFMb2FkZWQpLHtzdGF0ZTpmUi5GQUlMRUR9KX0pKSksanYoS2R0LCgodCx7YW5ub3RhdGlvbkRhdGE6bixtZXRyaWNzOmUsZW1iZWRkaW5nRGF0YVNldDphfSk9Pntjb25zdCBvPXt9O2Zvcihjb25zdCB0IGluIGUpe29bdF09W107Zm9yKGNvbnN0IG4gb2YgZVt0XSl4Z3QobikmJm9bdF0ucHVzaChuKX1yZXR1cm4gT2JqZWN0LmFzc2lnbihPYmplY3QuYXNzaWduKHt9LHQpLHtydW5Ub01ldHJpY3M6byxhbm5vdGF0aW9uRGF0YTpuLGVtYmVkZGluZ0RhdGFTZXQ6YSxwbHVnaW5EYXRhTG9hZGVkOntzdGF0ZTpmUi5MT0FERUQsbGFzdExvYWRlZFRpbWVJbk1zOkRhdGUubm93KCl9fSl9KSksanYodGd0LCgodCx7YW5ub3RhdGlvbnM6bn0pPT57Y29uc3QgZT1uZXcgU2V0KFsuLi50LnNlbGVjdGVkQW5ub3RhdGlvbnMsLi4ubl0pO2lmKGUuc2l6ZT09PXQuc2VsZWN0ZWRBbm5vdGF0aW9ucy5sZW5ndGgpZm9yKGNvbnN0IHQgb2YgbillLmRlbGV0ZSh0KTtyZXR1cm4gT2JqZWN0LmFzc2lnbihPYmplY3QuYXNzaWduKHt9LHQpLHtzZWxlY3RlZEFubm90YXRpb25zOlsuLi5lXX0pfSkpLGp2KG5ndCwoKHQse2Fubm90YXRpb25zOm59KT0+T2JqZWN0LmFzc2lnbihPYmplY3QuYXNzaWduKHt9LHQpLHtzZWxlY3RlZEFubm90YXRpb25zOm59KSkpLGp2KGVndCwodD0+T2JqZWN0LmFzc2lnbihPYmplY3QuYXNzaWduKHt9LHQpLHtzZWxlY3RlZEFubm90YXRpb25zOltdfSkpKSxqdihhZ3QsKCh0LHthbm5vdGF0aW9uczpufSk9Pntjb25zdCBlPW5ldyBTZXQoWy4uLnQuZmxhZ2dlZEFubm90YXRpb25zLC4uLm5dKTtpZihlLnNpemU9PT10LmZsYWdnZWRBbm5vdGF0aW9ucy5sZW5ndGgpZm9yKGNvbnN0IHQgb2YgbillLmRlbGV0ZSh0KTtyZXR1cm4gT2JqZWN0LmFzc2lnbihPYmplY3QuYXNzaWduKHt9LHQpLHtmbGFnZ2VkQW5ub3RhdGlvbnM6Wy4uLmVdLHNlbGVjdGVkQW5ub3RhdGlvbnM6W119KX0pKSxqdihvZ3QsKCh0LHthbm5vdGF0aW9uczpufSk9Pntjb25zdCBlPW5ldyBTZXQoWy4uLnQuaGlkZGVuQW5ub3RhdGlvbnMsLi4ubl0pO2lmKGUuc2l6ZT09PXQuaGlkZGVuQW5ub3RhdGlvbnMubGVuZ3RoKWZvcihjb25zdCB0IG9mIG4pZS5kZWxldGUodCk7cmV0dXJuIE9iamVjdC5hc3NpZ24oT2JqZWN0LmFzc2lnbih7fSx0KSx7aGlkZGVuQW5ub3RhdGlvbnM6Wy4uLmVdLHNlbGVjdGVkQW5ub3RhdGlvbnM6W119KX0pKSxqdihyZ3QsKCh0LHtyZWdleDpufSk9Pk9iamVjdC5hc3NpZ24oT2JqZWN0LmFzc2lnbih7fSx0KSx7YW5ub3RhdGlvbnNSZWdleDpufSkpKSxqdihpZ3QsKCh0LHtyZWdleDpufSk9Pk9iamVjdC5hc3NpZ24oT2JqZWN0LmFzc2lnbih7fSx0KSx7bWV0cmljc1JlZ2V4Om59KSkpLGp2KGNndCwoKHQse21ldHJpYzpufSk9PntpZih0Lm1ldHJpY0ZpbHRlcnNbbl0pcmV0dXJuIHQ7Y29uc3QgZT1bXTtyZXR1cm4gMCE9PXQubWV0cmljQXJpdGhtZXRpYy5sZW5ndGgmJmUucHVzaCh7a2luZDp4ZHQuT1BFUkFUT1Isb3BlcmF0b3I6UGR0LkFORH0pLGUucHVzaCh7a2luZDp4ZHQuTUVUUklDLG1ldHJpYzpufSksT2JqZWN0LmFzc2lnbihPYmplY3QuYXNzaWduKHt9LHQpLHttZXRyaWNBcml0aG1ldGljOlsuLi50Lm1ldHJpY0FyaXRobWV0aWMsLi4uZV0sbWV0cmljRmlsdGVyczpPYmplY3QuYXNzaWduKE9iamVjdC5hc3NpZ24oe30sdC5tZXRyaWNGaWx0ZXJzKSx7W25dOnttYXg6MSxtaW46LTEsaW5jbHVkZU5hTjohMX19KSxzb3J0OnttZXRyaWM6bixvcmRlcjprZHQuREVTQ0VORElOR319KX0pKSxqdihzZ3QsKCh0LHttZXRyaWM6bn0pPT57aWYoIXQubWV0cmljRmlsdGVyc1tuXSlyZXR1cm4gdDtsZXQgZT0wLGE9MCxvPTI7Y29uc3Qgcj1fUih0Lm1ldHJpY0ZpbHRlcnMsWyJzeW1ib2wiPT10eXBlb2Ygbj9uOm4rIiJdKTtmb3IoY29uc3QgYSBpbiB0Lm1ldHJpY0FyaXRobWV0aWMpe2NvbnN0IG89dC5tZXRyaWNBcml0aG1ldGljW2FdO28ua2luZD09PXhkdC5NRVRSSUMmJm8ubWV0cmljPT09biYmKGU9cGFyc2VJbnQoYSkpfXJldHVybiAwIT09ZSYmKGE9ZS0xLG89ZSsxKSxPYmplY3QuYXNzaWduKE9iamVjdC5hc3NpZ24oe30sdCkse21ldHJpY0FyaXRobWV0aWM6Wy4uLnQubWV0cmljQXJpdGhtZXRpYy5zbGljZSgwLGEpLC4uLnQubWV0cmljQXJpdGhtZXRpYy5zbGljZShvKV0sbWV0cmljRmlsdGVyczpyfSl9KSksanYobGd0LCgodCx7bWV0cmljOm4sbWF4OmUsbWluOmEsaW5jbHVkZU5hTjpvfSk9PnQubWV0cmljRmlsdGVyc1tuXT9PYmplY3QuYXNzaWduKE9iamVjdC5hc3NpZ24oe30sdCkse21ldHJpY0ZpbHRlcnM6T2JqZWN0LmFzc2lnbihPYmplY3QuYXNzaWduKHt9LHQubWV0cmljRmlsdGVycykse1tuXTp7bWF4OmUsbWluOmEsaW5jbHVkZU5hTjpvfX0pfSk6dCkpLGp2KG1ndCwoKHQse21ldHJpYzpufSk9Pntjb25zdCBlPXttZXRyaWM6bixvcmRlcjprZHQuREVTQ0VORElOR307cmV0dXJuIHQuc29ydC5tZXRyaWM9PT1uJiZ0LnNvcnQub3JkZXI9PT1rZHQuREVTQ0VORElORyYmKGUub3JkZXI9a2R0LkFTQ0VORE5HKSxPYmplY3QuYXNzaWduKE9iamVjdC5hc3NpZ24oe30sdCkse3NvcnQ6ZX0pfSkpLGp2KGRndCwoKHQse2Fubm90YXRpb246bn0pPT57Y29uc3QgZT17bWV0cmljOm4sb3JkZXI6a2R0LlNJTUlMQVJ9O3JldHVybiB0LnNvcnQubWV0cmljPT09biYmdC5zb3J0Lm9yZGVyPT09a2R0LlNJTUlMQVImJihlLm9yZGVyPWtkdC5ESVNTSU1JTEFSKSxPYmplY3QuYXNzaWduKE9iamVjdC5hc3NpZ24oe30sdCkse3NvcnQ6ZX0pfSkpLGp2KGdndCwodD0+T2JqZWN0LmFzc2lnbihPYmplY3QuYXNzaWduKHt9LHQpLHtwY0V4cGFuZGVkOiF0LnBjRXhwYW5kZWR9KSkpLGp2KHBndCwodD0+T2JqZWN0LmFzc2lnbihPYmplY3QuYXNzaWduKHt9LHQpLHthbm5vdGF0aW9uc0V4cGFuZGVkOiF0LmFubm90YXRpb25zRXhwYW5kZWR9KSkpLGp2KGJndCwodD0+T2JqZWN0LmFzc2lnbihPYmplY3QuYXNzaWduKHt9LHQpLHtzaWRlYmFyRXhwYW5kZWQ6IXQuc2lkZWJhckV4cGFuZGVkfSkpKSxqdih1Z3QsKHQ9Pk9iamVjdC5hc3NpZ24oT2JqZWN0LmFzc2lnbih7fSx0KSx7c2hvd0NvdW50czohdC5zaG93Q291bnRzfSkpKSxqdihmZ3QsKHQ9Pk9iamVjdC5hc3NpZ24oT2JqZWN0LmFzc2lnbih7fSx0KSx7c2hvd0hpZGRlbkFubm90YXRpb25zOiF0LnNob3dIaWRkZW5Bbm5vdGF0aW9uc30pKSksanYoaGd0LCgodCx7bWV0cmljOm59KT0+e2xldCBlPXlkdC5FTUJFRERJTkdTLGE9bjtyZXR1cm4gbj09PXQuZW1iZWRkaW5nc01ldHJpYyYmKGU9eWR0LkRFRkFVTFQsYT0iIiksT2JqZWN0LmFzc2lnbihPYmplY3QuYXNzaWduKHt9LHQpLHt2aWV3QWN0aXZlOmUsZW1iZWRkaW5nc01ldHJpYzphfSl9KSksanYoX2d0LCgodCx7c2lkZWJhcldpZHRoOm59KT0+T2JqZWN0LmFzc2lnbihPYmplY3QuYXNzaWduKHt9LHQpLHtzaWRlYmFyV2lkdGg6bn0pKSksanYoQ2d0LCgodCx7c2lkZWJhcldpZHRoOm59KT0+T2JqZWN0LmFzc2lnbihPYmplY3QuYXNzaWduKHt9LHQpLHtlbWJlZGRpbmdzU2lkZWJhcldpZHRoOm59KSkpLGp2KE1ndCwodD0+T2JqZWN0LmFzc2lnbihPYmplY3QuYXNzaWduKHt9LHQpLHtlbWJlZGRpbmdzU2lkZWJhckV4cGFuZGVkOiF0LmVtYmVkZGluZ3NTaWRlYmFyRXhwYW5kZWR9KSkpLGp2KE9ndCwoKHQse2RhdGFTZXQ6bn0pPT5PYmplY3QuYXNzaWduKE9iamVjdC5hc3NpZ24oe30sdCkse2VtYmVkZGluZ0RhdGFTZXQ6bn0pKSkpO2Z1bmN0aW9uIHdndCh0LG4pezEmdCYmdHAoMCwibWF0LWljb24iLDcpfWZ1bmN0aW9uIFNndCh0LG4pe2lmKDEmdCYmKEtnKDAsIm1hdC1vcHRpb24iLDgpLEpwKDEpLCRnKCkpLDImdCl7Y29uc3QgdD1uLiRpbXBsaWNpdDtKZygidmFsdWUiLHQpLHdzKDEpLFFwKHQpfX1jbGFzcyBFZ3R7Y29uc3RydWN0b3IoKXt0aGlzLm9uUmVnZXhGaWx0ZXJWYWx1ZUNoYW5nZT1uZXcgRWYsdGhpcy5vbkFkZEZpbHRlcj1uZXcgRWZ9b25PcHRpb25TZWxlY3RlZCh0LG4pe3RoaXMub25BZGRGaWx0ZXIuZW1pdCh0Lm9wdGlvbi52YWx1ZSksbi52YWx1ZT0iIn19RWd0Lsm1ZmFjPWZ1bmN0aW9uIHQobil7cmV0dXJuIG5ldyhufHxFZ3QpfSxFZ3QuybVjbXA9X28oe3R5cGU6RWd0LHNlbGVjdG9yczpbWyJtZXRyaWMtc2VhcmNoLWNvbXBvbmVudCJdXSxob3N0VmFyczoyLGhvc3RCaW5kaW5nczpmdW5jdGlvbiB0KG4sZSl7MiZuJiZEcCgidmFsaWQiLGUuaXNSZWdleEZpbHRlclZhbGlkKX0saW5wdXRzOntjb21wbGV0aW9uczoiY29tcGxldGlvbnMiLHJlZ2V4RmlsdGVyVmFsdWU6InJlZ2V4RmlsdGVyVmFsdWUiLGlzUmVnZXhGaWx0ZXJWYWxpZDoiaXNSZWdleEZpbHRlclZhbGlkIn0sb3V0cHV0czp7b25SZWdleEZpbHRlclZhbHVlQ2hhbmdlOiJvblJlZ2V4RmlsdGVyVmFsdWVDaGFuZ2UiLG9uQWRkRmlsdGVyOiJvbkFkZEZpbHRlciJ9LGRlY2xzOjcsdmFyczo0LGNvbnN0czpbWyJzdmdJY29uIiwic2VhcmNoXzI0cHgiXSxbIm1hdElucHV0IiwiIiwiYXV0b2NvbXBsZXRlIiwib2ZmIiwicGxhY2Vob2xkZXIiLCJBZGQgTWV0cmljIEZpbHRlciIsMywidmFsdWUiLCJtYXRBdXRvY29tcGxldGUiLCJpbnB1dCJdLFsibWF0SW5wdXQiLCIiXSxbInN2Z0ljb24iLCJlcnJvcl8yNHB4IiwiY2xhc3MiLCJlcnJvci1pY29uIiwibWF0VG9vbHRpcCIsIkludmFsaWQgcmVnZXggZmlsdGVyLiBUaGUgcmVzdWx0IG1heSBiZSBzdGFsZS4iLDQsIm5nSWYiXSxbImF1dG9BY3RpdmVGaXJzdE9wdGlvbiIsIiIsMywib3B0aW9uU2VsZWN0ZWQiXSxbImZpbHRlck1hdGNoZXMiLCJtYXRBdXRvY29tcGxldGUiXSxbMywidmFsdWUiLDQsIm5nRm9yIiwibmdGb3JPZiJdLFsic3ZnSWNvbiIsImVycm9yXzI0cHgiLCJtYXRUb29sdGlwIiwiSW52YWxpZCByZWdleCBmaWx0ZXIuIFRoZSByZXN1bHQgbWF5IGJlIHN0YWxlLiIsMSwiZXJyb3ItaWNvbiJdLFszLCJ2YWx1ZSJdXSx0ZW1wbGF0ZTpmdW5jdGlvbiB0KG4sZSl7aWYoMSZuKXtjb25zdCB0PW9wKCk7dHAoMCwibWF0LWljb24iLDApLEtnKDEsImlucHV0IiwxLDIpLGNwKCJpbnB1dCIsKGZ1bmN0aW9uIHQobil7cmV0dXJuIGUub25SZWdleEZpbHRlclZhbHVlQ2hhbmdlLmVtaXQobi50YXJnZXQudmFsdWUpfSkpLCRnKCksWWcoMyx3Z3QsMSwwLCJtYXQtaWNvbiIsMyksS2coNCwibWF0LWF1dG9jb21wbGV0ZSIsNCw1KSxjcCgib3B0aW9uU2VsZWN0ZWQiLChmdW5jdGlvbiBuKGEpe2pyKHQpO2NvbnN0IG89cWcoMik7cmV0dXJuIGUub25PcHRpb25TZWxlY3RlZChhLG8pfSkpLFlnKDYsU2d0LDIsMiwibWF0LW9wdGlvbiIsNiksJGcoKX1pZigyJm4pe2NvbnN0IHQ9cWcoNSk7d3MoMSksSmcoInZhbHVlIixlLnJlZ2V4RmlsdGVyVmFsdWUpKCJtYXRBdXRvY29tcGxldGUiLHQpLHdzKDIpLEpnKCJuZ0lmIiwhZS5pc1JlZ2V4RmlsdGVyVmFsaWQpLHdzKDMpLEpnKCJuZ0Zvck9mIixlLmNvbXBsZXRpb25zKX19LGRpcmVjdGl2ZXM6W0JCLFBWLE0kLFdNLG0kLGpNLFlFXSxzdHlsZXM6WycubWF0LWJhZGdlLWNvbnRlbnRbX25nY29udGVudC0lQ09NUCVde2ZvbnQtd2VpZ2h0OjYwMDtmb250LXNpemU6MTJweDtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWZ9Lm1hdC1iYWRnZS1zbWFsbFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWJhZGdlLWNvbnRlbnRbX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZTo5cHh9Lm1hdC1iYWRnZS1sYXJnZVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWJhZGdlLWNvbnRlbnRbX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToyNHB4fS5tYXQtaDFbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWhlYWRsaW5lW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10eXBvZ3JhcGh5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIGgxW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250OjQwMCAyNHB4LzMycHggUm9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2xldHRlci1zcGFjaW5nOm5vcm1hbDttYXJnaW46MCAwIDE2cHh9Lm1hdC1oMltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdGl0bGVbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXR5cG9ncmFwaHlbX25nY29udGVudC0lQ09NUCVdICAgaDJbX25nY29udGVudC0lQ09NUCVde2ZvbnQ6NTAwIDIwcHgvMzJweCBSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7bGV0dGVyLXNwYWNpbmc6bm9ybWFsO21hcmdpbjowIDAgMTZweH0ubWF0LWgzW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1zdWJoZWFkaW5nLTJbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXR5cG9ncmFwaHlbX25nY29udGVudC0lQ09NUCVdICAgaDNbX25nY29udGVudC0lQ09NUCVde2ZvbnQ6NDAwIDE2cHgvMjhweCBSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7bGV0dGVyLXNwYWNpbmc6bm9ybWFsO21hcmdpbjowIDAgMTZweH0ubWF0LWg0W19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1zdWJoZWFkaW5nLTFbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXR5cG9ncmFwaHlbX25nY29udGVudC0lQ09NUCVdICAgaDRbX25nY29udGVudC0lQ09NUCVde2ZvbnQ6NDAwIDE1cHgvMjRweCBSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7bGV0dGVyLXNwYWNpbmc6bm9ybWFsO21hcmdpbjowIDAgMTZweH0ubWF0LWg1W19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10eXBvZ3JhcGh5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIGg1W19uZ2NvbnRlbnQtJUNPTVAlXXtmb250OjQwMCBjYWxjKDE0cHggKiAwLjgzKS8yMHB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjttYXJnaW46MCAwIDEycHh9Lm1hdC1oNltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdHlwb2dyYXBoeVtfbmdjb250ZW50LSVDT01QJV0gICBoNltfbmdjb250ZW50LSVDT01QJV17Zm9udDo0MDAgY2FsYygxNHB4ICogMC42NykvMjBweCBSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7bWFyZ2luOjAgMCAxMnB4fS5tYXQtYm9keS1zdHJvbmdbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWJvZHktMltfbmdjb250ZW50LSVDT01QJV17Zm9udDo1MDAgMTRweC8yNHB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtsZXR0ZXItc3BhY2luZzpub3JtYWx9Lm1hdC1ib2R5W19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1ib2R5LTFbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXR5cG9ncmFwaHlbX25nY29udGVudC0lQ09NUCVde2ZvbnQ6NDAwIDE0cHgvMjBweCBSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7bGV0dGVyLXNwYWNpbmc6bm9ybWFsfS5tYXQtYm9keVtfbmdjb250ZW50LSVDT01QJV0gICBwW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1ib2R5LTFbX25nY29udGVudC0lQ09NUCVdICAgcFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdHlwb2dyYXBoeVtfbmdjb250ZW50LSVDT01QJV0gICBwW19uZ2NvbnRlbnQtJUNPTVAlXXttYXJnaW46MCAwIDEycHh9Lm1hdC1zbWFsbFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtY2FwdGlvbltfbmdjb250ZW50LSVDT01QJV17Zm9udDo0MDAgMTJweC8yMHB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtsZXR0ZXItc3BhY2luZzpub3JtYWx9Lm1hdC1kaXNwbGF5LTRbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXR5cG9ncmFwaHlbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1kaXNwbGF5LTRbX25nY29udGVudC0lQ09NUCVde2ZvbnQ6MzAwIDExMnB4LzExMnB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtsZXR0ZXItc3BhY2luZzotMC4wNWVtO21hcmdpbjowIDAgNTZweH0ubWF0LWRpc3BsYXktM1tfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdHlwb2dyYXBoeVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWRpc3BsYXktM1tfbmdjb250ZW50LSVDT01QJV17Zm9udDo0MDAgNTZweC81NnB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtsZXR0ZXItc3BhY2luZzotMC4wMmVtO21hcmdpbjowIDAgNjRweH0ubWF0LWRpc3BsYXktMltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdHlwb2dyYXBoeVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWRpc3BsYXktMltfbmdjb250ZW50LSVDT01QJV17Zm9udDo0MDAgNDVweC80OHB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtsZXR0ZXItc3BhY2luZzotMC4wMDVlbTttYXJnaW46MCAwIDY0cHh9Lm1hdC1kaXNwbGF5LTFbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXR5cG9ncmFwaHlbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1kaXNwbGF5LTFbX25nY29udGVudC0lQ09NUCVde2ZvbnQ6NDAwIDM0cHgvNDBweCBSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7bGV0dGVyLXNwYWNpbmc6bm9ybWFsO21hcmdpbjowIDAgNjRweH0ubWF0LWJvdHRvbS1zaGVldC1jb250YWluZXJbX25nY29udGVudC0lQ09NUCVde2ZvbnQ6NDAwIDE0cHgvMjBweCBSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7bGV0dGVyLXNwYWNpbmc6bm9ybWFsfS5tYXQtYnV0dG9uW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1yYWlzZWQtYnV0dG9uW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1pY29uLWJ1dHRvbltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtc3Ryb2tlZC1idXR0b25bX25nY29udGVudC0lQ09NUCVdLCAubWF0LWZsYXQtYnV0dG9uW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1mYWJbX25nY29udGVudC0lQ09NUCVdLCAubWF0LW1pbmktZmFiW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7Zm9udC1zaXplOjE0cHg7Zm9udC13ZWlnaHQ6NTAwfS5tYXQtYnV0dG9uLXRvZ2dsZVtfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmfS5tYXQtY2FyZFtfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmfS5tYXQtY2FyZC10aXRsZVtfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjI0cHg7Zm9udC13ZWlnaHQ6NTAwfS5tYXQtY2FyZC1oZWFkZXJbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1jYXJkLXRpdGxlW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MjBweH0ubWF0LWNhcmQtc3VidGl0bGVbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWNhcmQtY29udGVudFtfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjE0cHh9Lm1hdC1jaGVja2JveFtfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmfS5tYXQtY2hlY2tib3gtbGF5b3V0W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtY2hlY2tib3gtbGFiZWxbX25nY29udGVudC0lQ09NUCVde2xpbmUtaGVpZ2h0OjI0cHh9Lm1hdC1jaGlwW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MTRweDtmb250LXdlaWdodDo1MDB9Lm1hdC1jaGlwW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtY2hpcC10cmFpbGluZy1pY29uLm1hdC1pY29uW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1jaGlwW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtY2hpcC1yZW1vdmUubWF0LWljb25bX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToxOHB4fS5tYXQtdGFibGVbX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZn0ubWF0LWhlYWRlci1jZWxsW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MTJweDtmb250LXdlaWdodDo1MDB9Lm1hdC1jZWxsW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1mb290ZXItY2VsbFtfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjE0cHh9Lm1hdC1jYWxlbmRhcltfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmfS5tYXQtY2FsZW5kYXItYm9keVtfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjEzcHh9Lm1hdC1jYWxlbmRhci1ib2R5LWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1jYWxlbmRhci1wZXJpb2QtYnV0dG9uW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MTRweDtmb250LXdlaWdodDo1MDB9Lm1hdC1jYWxlbmRhci10YWJsZS1oZWFkZXJbX25nY29udGVudC0lQ09NUCVdICAgdGhbX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToxMXB4O2ZvbnQtd2VpZ2h0OjQwMH0ubWF0LWRpYWxvZy10aXRsZVtfbmdjb250ZW50LSVDT01QJV17Zm9udDo1MDAgMjBweC8zMnB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtsZXR0ZXItc3BhY2luZzpub3JtYWx9Lm1hdC1leHBhbnNpb24tcGFuZWwtaGVhZGVyW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7Zm9udC1zaXplOjE1cHg7Zm9udC13ZWlnaHQ6NDAwfS5tYXQtZXhwYW5zaW9uLXBhbmVsLWNvbnRlbnRbX25nY29udGVudC0lQ09NUCVde2ZvbnQ6NDAwIDE0cHgvMjBweCBSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7bGV0dGVyLXNwYWNpbmc6bm9ybWFsfS5tYXQtZm9ybS1maWVsZFtfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOmluaGVyaXQ7Zm9udC13ZWlnaHQ6NDAwO2xpbmUtaGVpZ2h0OjEuMTI1O2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtsZXR0ZXItc3BhY2luZzpub3JtYWx9Lm1hdC1mb3JtLWZpZWxkLXdyYXBwZXJbX25nY29udGVudC0lQ09NUCVde3BhZGRpbmctYm90dG9tOjEuMzQzNzVlbX0ubWF0LWZvcm0tZmllbGQtcHJlZml4W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaWNvbltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtZm9ybS1maWVsZC1zdWZmaXhbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pY29uW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MTUwJTtsaW5lLWhlaWdodDoxLjEyNX0ubWF0LWZvcm0tZmllbGQtcHJlZml4W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaWNvbi1idXR0b25bX25nY29udGVudC0lQ09NUCVdLCAubWF0LWZvcm0tZmllbGQtc3VmZml4W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaWNvbi1idXR0b25bX25nY29udGVudC0lQ09NUCVde2hlaWdodDoxLjVlbTt3aWR0aDoxLjVlbX0ubWF0LWZvcm0tZmllbGQtcHJlZml4W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaWNvbi1idXR0b25bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pY29uW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1mb3JtLWZpZWxkLXN1ZmZpeFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWljb24tYnV0dG9uW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaWNvbltfbmdjb250ZW50LSVDT01QJV17aGVpZ2h0OjEuMTI1ZW07bGluZS1oZWlnaHQ6MS4xMjV9Lm1hdC1mb3JtLWZpZWxkLWluZml4W19uZ2NvbnRlbnQtJUNPTVAlXXtwYWRkaW5nOi41ZW0gMDtib3JkZXItdG9wOi44NDM3NWVtIHNvbGlkIHRyYW5zcGFyZW50fS5tYXQtZm9ybS1maWVsZC1jYW4tZmxvYXQubWF0LWZvcm0tZmllbGQtc2hvdWxkLWZsb2F0W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtZm9ybS1maWVsZC1jYW4tZmxvYXRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pbnB1dC1zZXJ2ZXJbX25nY29udGVudC0lQ09NUCVdOmZvY3VzICsgLm1hdC1mb3JtLWZpZWxkLWxhYmVsLXdyYXBwZXJbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXt0cmFuc2Zvcm06dHJhbnNsYXRlWSgtMS4zNDM3NWVtKSBzY2FsZSgwLjc1KTt3aWR0aDoxMzMuMzMzMzMzMzMzMyV9Lm1hdC1mb3JtLWZpZWxkLWNhbi1mbG9hdFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWlucHV0LXNlcnZlcltsYWJlbF1bX25nY29udGVudC0lQ09NUCVdOm5vdCg6bGFiZWwtc2hvd24pICsgLm1hdC1mb3JtLWZpZWxkLWxhYmVsLXdyYXBwZXJbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXt0cmFuc2Zvcm06dHJhbnNsYXRlWSgtMS4zNDM3NGVtKSBzY2FsZSgwLjc1KTt3aWR0aDoxMzMuMzMzMzQzMzMzMyV9Lm1hdC1mb3JtLWZpZWxkLWxhYmVsLXdyYXBwZXJbX25nY29udGVudC0lQ09NUCVde3RvcDotMC44NDM3NWVtO3BhZGRpbmctdG9wOi44NDM3NWVtfS5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17dG9wOjEuMzQzNzVlbX0ubWF0LWZvcm0tZmllbGQtdW5kZXJsaW5lW19uZ2NvbnRlbnQtJUNPTVAlXXtib3R0b206MS4zNDM3NWVtfS5tYXQtZm9ybS1maWVsZC1zdWJzY3JpcHQtd3JhcHBlcltfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjc1JTttYXJnaW4tdG9wOi42NjY2NjY2NjY3ZW07dG9wOmNhbGMoMTAwJSAtIDEuNzkxNjY2NjY2N2VtKX0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1sZWdhY3lbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLXdyYXBwZXJbX25nY29udGVudC0lQ09NUCVde3BhZGRpbmctYm90dG9tOjEuMjVlbX0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1sZWdhY3lbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWluZml4W19uZ2NvbnRlbnQtJUNPTVAlXXtwYWRkaW5nOi40Mzc1ZW0gMH0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1sZWdhY3kubWF0LWZvcm0tZmllbGQtY2FuLWZsb2F0Lm1hdC1mb3JtLWZpZWxkLXNob3VsZC1mbG9hdFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1sZWdhY3kubWF0LWZvcm0tZmllbGQtY2FuLWZsb2F0W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaW5wdXQtc2VydmVyW19uZ2NvbnRlbnQtJUNPTVAlXTpmb2N1cyArIC5tYXQtZm9ybS1maWVsZC1sYWJlbC13cmFwcGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17dHJhbnNmb3JtOnRyYW5zbGF0ZVkoLTEuMjgxMjVlbSkgc2NhbGUoMC43NSkgcGVyc3BlY3RpdmUoMTAwcHgpIHRyYW5zbGF0ZVooMC4wMDFweCk7LW1zLXRyYW5zZm9ybTp0cmFuc2xhdGVZKC0xLjI4MTI1ZW0pIHNjYWxlKDAuNzUpO3dpZHRoOjEzMy4zMzMzMzMzMzMzJX0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1sZWdhY3kubWF0LWZvcm0tZmllbGQtY2FuLWZsb2F0W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1hdXRvZmlsbC1jb250cm9sW19uZ2NvbnRlbnQtJUNPTVAlXTotd2Via2l0LWF1dG9maWxsICsgLm1hdC1mb3JtLWZpZWxkLWxhYmVsLXdyYXBwZXJbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXt0cmFuc2Zvcm06dHJhbnNsYXRlWSgtMS4yODEyNWVtKSBzY2FsZSgwLjc1KSBwZXJzcGVjdGl2ZSgxMDBweCkgdHJhbnNsYXRlWigwLjAwMTAxcHgpOy1tcy10cmFuc2Zvcm06dHJhbnNsYXRlWSgtMS4yODEyNGVtKSBzY2FsZSgwLjc1KTt3aWR0aDoxMzMuMzMzMzQzMzMzMyV9Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtbGVnYWN5Lm1hdC1mb3JtLWZpZWxkLWNhbi1mbG9hdFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWlucHV0LXNlcnZlcltsYWJlbF1bX25nY29udGVudC0lQ09NUCVdOm5vdCg6bGFiZWwtc2hvd24pICsgLm1hdC1mb3JtLWZpZWxkLWxhYmVsLXdyYXBwZXJbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXt0cmFuc2Zvcm06dHJhbnNsYXRlWSgtMS4yODEyNWVtKSBzY2FsZSgwLjc1KSBwZXJzcGVjdGl2ZSgxMDBweCkgdHJhbnNsYXRlWigwLjAwMTAycHgpOy1tcy10cmFuc2Zvcm06dHJhbnNsYXRlWSgtMS4yODEyM2VtKSBzY2FsZSgwLjc1KTt3aWR0aDoxMzMuMzMzMzUzMzMzMyV9Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtbGVnYWN5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17dG9wOjEuMjgxMjVlbX0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1sZWdhY3lbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLXVuZGVybGluZVtfbmdjb250ZW50LSVDT01QJV17Ym90dG9tOjEuMjVlbX0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1sZWdhY3lbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLXN1YnNjcmlwdC13cmFwcGVyW19uZ2NvbnRlbnQtJUNPTVAlXXttYXJnaW4tdG9wOi41NDE2NjY2NjY3ZW07dG9wOmNhbGMoMTAwJSAtIDEuNjY2NjY2NjY2N2VtKX1AbWVkaWEgcHJpbnR7Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtbGVnYWN5Lm1hdC1mb3JtLWZpZWxkLWNhbi1mbG9hdC5tYXQtZm9ybS1maWVsZC1zaG91bGQtZmxvYXRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtbGVnYWN5Lm1hdC1mb3JtLWZpZWxkLWNhbi1mbG9hdFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWlucHV0LXNlcnZlcltfbmdjb250ZW50LSVDT01QJV06Zm9jdXMgKyAubWF0LWZvcm0tZmllbGQtbGFiZWwtd3JhcHBlcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVde3RyYW5zZm9ybTp0cmFuc2xhdGVZKC0xLjI4MTIyZW0pIHNjYWxlKDAuNzUpfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWxlZ2FjeS5tYXQtZm9ybS1maWVsZC1jYW4tZmxvYXRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWF1dG9maWxsLWNvbnRyb2xbX25nY29udGVudC0lQ09NUCVdOi13ZWJraXQtYXV0b2ZpbGwgKyAubWF0LWZvcm0tZmllbGQtbGFiZWwtd3JhcHBlcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVde3RyYW5zZm9ybTp0cmFuc2xhdGVZKC0xLjI4MTIxZW0pIHNjYWxlKDAuNzUpfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWxlZ2FjeS5tYXQtZm9ybS1maWVsZC1jYW4tZmxvYXRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pbnB1dC1zZXJ2ZXJbbGFiZWxdW19uZ2NvbnRlbnQtJUNPTVAlXTpub3QoOmxhYmVsLXNob3duKSArIC5tYXQtZm9ybS1maWVsZC1sYWJlbC13cmFwcGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17dHJhbnNmb3JtOnRyYW5zbGF0ZVkoLTEuMjgxMmVtKSBzY2FsZSgwLjc1KX19Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtZmlsbFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtaW5maXhbX25nY29udGVudC0lQ09NUCVde3BhZGRpbmc6LjI1ZW0gMCAuNzVlbSAwfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWZpbGxbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXt0b3A6MS4wOTM3NWVtO21hcmdpbi10b3A6LTAuNWVtfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWZpbGwubWF0LWZvcm0tZmllbGQtY2FuLWZsb2F0Lm1hdC1mb3JtLWZpZWxkLXNob3VsZC1mbG9hdFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1maWxsLm1hdC1mb3JtLWZpZWxkLWNhbi1mbG9hdFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWlucHV0LXNlcnZlcltfbmdjb250ZW50LSVDT01QJV06Zm9jdXMgKyAubWF0LWZvcm0tZmllbGQtbGFiZWwtd3JhcHBlcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVde3RyYW5zZm9ybTp0cmFuc2xhdGVZKC0wLjU5Mzc1ZW0pIHNjYWxlKDAuNzUpO3dpZHRoOjEzMy4zMzMzMzMzMzMzJX0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1maWxsLm1hdC1mb3JtLWZpZWxkLWNhbi1mbG9hdFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWlucHV0LXNlcnZlcltsYWJlbF1bX25nY29udGVudC0lQ09NUCVdOm5vdCg6bGFiZWwtc2hvd24pICsgLm1hdC1mb3JtLWZpZWxkLWxhYmVsLXdyYXBwZXJbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXt0cmFuc2Zvcm06dHJhbnNsYXRlWSgtMC41OTM3NGVtKSBzY2FsZSgwLjc1KTt3aWR0aDoxMzMuMzMzMzQzMzMzMyV9Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2Utb3V0bGluZVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtaW5maXhbX25nY29udGVudC0lQ09NUCVde3BhZGRpbmc6MWVtIDAgMWVtIDB9Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2Utb3V0bGluZVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVde3RvcDoxLjg0Mzc1ZW07bWFyZ2luLXRvcDotMC4yNWVtfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLW91dGxpbmUubWF0LWZvcm0tZmllbGQtY2FuLWZsb2F0Lm1hdC1mb3JtLWZpZWxkLXNob3VsZC1mbG9hdFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1vdXRsaW5lLm1hdC1mb3JtLWZpZWxkLWNhbi1mbG9hdFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWlucHV0LXNlcnZlcltfbmdjb250ZW50LSVDT01QJV06Zm9jdXMgKyAubWF0LWZvcm0tZmllbGQtbGFiZWwtd3JhcHBlcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVde3RyYW5zZm9ybTp0cmFuc2xhdGVZKC0xLjU5Mzc1ZW0pIHNjYWxlKDAuNzUpO3dpZHRoOjEzMy4zMzMzMzMzMzMzJX0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1vdXRsaW5lLm1hdC1mb3JtLWZpZWxkLWNhbi1mbG9hdFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWlucHV0LXNlcnZlcltsYWJlbF1bX25nY29udGVudC0lQ09NUCVdOm5vdCg6bGFiZWwtc2hvd24pICsgLm1hdC1mb3JtLWZpZWxkLWxhYmVsLXdyYXBwZXJbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXt0cmFuc2Zvcm06dHJhbnNsYXRlWSgtMS41OTM3NGVtKSBzY2FsZSgwLjc1KTt3aWR0aDoxMzMuMzMzMzQzMzMzMyV9Lm1hdC1ncmlkLXRpbGUtaGVhZGVyW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1ncmlkLXRpbGUtZm9vdGVyW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MTRweH0ubWF0LWdyaWQtdGlsZS1oZWFkZXJbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saW5lW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1ncmlkLXRpbGUtZm9vdGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGluZVtfbmdjb250ZW50LSVDT01QJV17d2hpdGUtc3BhY2U6bm93cmFwO292ZXJmbG93OmhpZGRlbjt0ZXh0LW92ZXJmbG93OmVsbGlwc2lzO2Rpc3BsYXk6YmxvY2s7Ym94LXNpemluZzpib3JkZXItYm94fS5tYXQtZ3JpZC10aWxlLWhlYWRlcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpbmVbX25nY29udGVudC0lQ09NUCVdOm50aC1jaGlsZChuKzIpLCAubWF0LWdyaWQtdGlsZS1mb290ZXJbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saW5lW19uZ2NvbnRlbnQtJUNPTVAlXTpudGgtY2hpbGQobisyKXtmb250LXNpemU6MTJweH1pbnB1dC5tYXQtaW5wdXQtZWxlbWVudFtfbmdjb250ZW50LSVDT01QJV17bWFyZ2luLXRvcDotMC4wNjI1ZW19Lm1hdC1tZW51LWl0ZW1bX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtmb250LXNpemU6MTRweDtmb250LXdlaWdodDo0MDB9Lm1hdC1wYWdpbmF0b3JbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXBhZ2luYXRvci1wYWdlLXNpemVbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1zZWxlY3QtdHJpZ2dlcltfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2ZvbnQtc2l6ZToxMnB4fS5tYXQtcmFkaW8tYnV0dG9uW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWZ9Lm1hdC1zZWxlY3RbX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZn0ubWF0LXNlbGVjdC10cmlnZ2VyW19uZ2NvbnRlbnQtJUNPTVAlXXtoZWlnaHQ6MS4xMjVlbX0ubWF0LXNsaWRlLXRvZ2dsZS1jb250ZW50W19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWZ9Lm1hdC1zbGlkZXItdGh1bWItbGFiZWwtdGV4dFtfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2ZvbnQtc2l6ZToxMnB4O2ZvbnQtd2VpZ2h0OjUwMH0ubWF0LXN0ZXBwZXItdmVydGljYWxbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXN0ZXBwZXItaG9yaXpvbnRhbFtfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmfS5tYXQtc3RlcC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjE0cHg7Zm9udC13ZWlnaHQ6NDAwfS5tYXQtc3RlcC1zdWItbGFiZWwtZXJyb3JbX25nY29udGVudC0lQ09NUCVde2ZvbnQtd2VpZ2h0Om5vcm1hbH0ubWF0LXN0ZXAtbGFiZWwtZXJyb3JbX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToxNHB4fS5tYXQtc3RlcC1sYWJlbC1zZWxlY3RlZFtfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjE0cHg7Zm9udC13ZWlnaHQ6NTAwfS5tYXQtdGFiLWdyb3VwW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWZ9Lm1hdC10YWItbGFiZWxbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXRhYi1saW5rW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7Zm9udC1zaXplOjE0cHg7Zm9udC13ZWlnaHQ6NTAwfS5tYXQtdG9vbGJhcltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdG9vbGJhcltfbmdjb250ZW50LSVDT01QJV0gICBoMVtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdG9vbGJhcltfbmdjb250ZW50LSVDT01QJV0gICBoMltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdG9vbGJhcltfbmdjb250ZW50LSVDT01QJV0gICBoM1tfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdG9vbGJhcltfbmdjb250ZW50LSVDT01QJV0gICBoNFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdG9vbGJhcltfbmdjb250ZW50LSVDT01QJV0gICBoNVtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdG9vbGJhcltfbmdjb250ZW50LSVDT01QJV0gICBoNltfbmdjb250ZW50LSVDT01QJV17Zm9udDo1MDAgMjBweC8zMnB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtsZXR0ZXItc3BhY2luZzpub3JtYWw7bWFyZ2luOjB9Lm1hdC10b29sdGlwW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7Zm9udC1zaXplOjEwcHg7cGFkZGluZy10b3A6NnB4O3BhZGRpbmctYm90dG9tOjZweH0ubWF0LXRvb2x0aXAtaGFuZHNldFtfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjE0cHg7cGFkZGluZy10b3A6OHB4O3BhZGRpbmctYm90dG9tOjhweH0ubWF0LWxpc3QtaXRlbVtfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmfS5tYXQtbGlzdC1vcHRpb25bX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZn0ubWF0LWxpc3QtYmFzZVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpc3QtaXRlbVtfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjE2cHh9Lm1hdC1saXN0LWJhc2VbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saXN0LWl0ZW1bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saW5lW19uZ2NvbnRlbnQtJUNPTVAlXXt3aGl0ZS1zcGFjZTpub3dyYXA7b3ZlcmZsb3c6aGlkZGVuO3RleHQtb3ZlcmZsb3c6ZWxsaXBzaXM7ZGlzcGxheTpibG9jaztib3gtc2l6aW5nOmJvcmRlci1ib3h9Lm1hdC1saXN0LWJhc2VbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saXN0LWl0ZW1bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saW5lW19uZ2NvbnRlbnQtJUNPTVAlXTpudGgtY2hpbGQobisyKXtmb250LXNpemU6MTRweH0ubWF0LWxpc3QtYmFzZVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpc3Qtb3B0aW9uW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MTZweH0ubWF0LWxpc3QtYmFzZVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpc3Qtb3B0aW9uW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGluZVtfbmdjb250ZW50LSVDT01QJV17d2hpdGUtc3BhY2U6bm93cmFwO292ZXJmbG93OmhpZGRlbjt0ZXh0LW92ZXJmbG93OmVsbGlwc2lzO2Rpc3BsYXk6YmxvY2s7Ym94LXNpemluZzpib3JkZXItYm94fS5tYXQtbGlzdC1iYXNlW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGlzdC1vcHRpb25bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saW5lW19uZ2NvbnRlbnQtJUNPTVAlXTpudGgtY2hpbGQobisyKXtmb250LXNpemU6MTRweH0ubWF0LWxpc3QtYmFzZVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXN1YmhlYWRlcltfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2ZvbnQtc2l6ZToxNHB4O2ZvbnQtd2VpZ2h0OjUwMH0ubWF0LWxpc3QtYmFzZVtkZW5zZV1bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saXN0LWl0ZW1bX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToxMnB4fS5tYXQtbGlzdC1iYXNlW2RlbnNlXVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpc3QtaXRlbVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpbmVbX25nY29udGVudC0lQ09NUCVde3doaXRlLXNwYWNlOm5vd3JhcDtvdmVyZmxvdzpoaWRkZW47dGV4dC1vdmVyZmxvdzplbGxpcHNpcztkaXNwbGF5OmJsb2NrO2JveC1zaXppbmc6Ym9yZGVyLWJveH0ubWF0LWxpc3QtYmFzZVtkZW5zZV1bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saXN0LWl0ZW1bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saW5lW19uZ2NvbnRlbnQtJUNPTVAlXTpudGgtY2hpbGQobisyKXtmb250LXNpemU6MTJweH0ubWF0LWxpc3QtYmFzZVtkZW5zZV1bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saXN0LW9wdGlvbltfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjEycHh9Lm1hdC1saXN0LWJhc2VbZGVuc2VdW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGlzdC1vcHRpb25bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saW5lW19uZ2NvbnRlbnQtJUNPTVAlXXt3aGl0ZS1zcGFjZTpub3dyYXA7b3ZlcmZsb3c6aGlkZGVuO3RleHQtb3ZlcmZsb3c6ZWxsaXBzaXM7ZGlzcGxheTpibG9jaztib3gtc2l6aW5nOmJvcmRlci1ib3h9Lm1hdC1saXN0LWJhc2VbZGVuc2VdW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGlzdC1vcHRpb25bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saW5lW19uZ2NvbnRlbnQtJUNPTVAlXTpudGgtY2hpbGQobisyKXtmb250LXNpemU6MTJweH0ubWF0LWxpc3QtYmFzZVtkZW5zZV1bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1zdWJoZWFkZXJbX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtmb250LXNpemU6MTJweDtmb250LXdlaWdodDo1MDB9Lm1hdC1vcHRpb25bX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtmb250LXNpemU6MTZweH0ubWF0LW9wdGdyb3VwLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250OjUwMCAxNHB4LzI0cHggUm9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2xldHRlci1zcGFjaW5nOm5vcm1hbH0ubWF0LXNpbXBsZS1zbmFja2Jhcltfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2ZvbnQtc2l6ZToxNHB4fS5tYXQtc2ltcGxlLXNuYWNrYmFyLWFjdGlvbltfbmdjb250ZW50LSVDT01QJV17bGluZS1oZWlnaHQ6MTtmb250LWZhbWlseTppbmhlcml0O2ZvbnQtc2l6ZTppbmhlcml0O2ZvbnQtd2VpZ2h0OjUwMH0ubWF0LXRyZWVbX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZn0ubWF0LXRyZWUtbm9kZVtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtbmVzdGVkLXRyZWUtbm9kZVtfbmdjb250ZW50LSVDT01QJV17Zm9udC13ZWlnaHQ6NDAwO2ZvbnQtc2l6ZToxNHB4fS5tYXQtcmlwcGxlW19uZ2NvbnRlbnQtJUNPTVAlXXtvdmVyZmxvdzpoaWRkZW47cG9zaXRpb246cmVsYXRpdmV9Lm1hdC1yaXBwbGVbX25nY29udGVudC0lQ09NUCVdOm5vdCg6ZW1wdHkpe3RyYW5zZm9ybTp0cmFuc2xhdGVaKDApfS5tYXQtcmlwcGxlLm1hdC1yaXBwbGUtdW5ib3VuZGVkW19uZ2NvbnRlbnQtJUNPTVAlXXtvdmVyZmxvdzp2aXNpYmxlfS5tYXQtcmlwcGxlLWVsZW1lbnRbX25nY29udGVudC0lQ09NUCVde3Bvc2l0aW9uOmFic29sdXRlO2JvcmRlci1yYWRpdXM6NTAlO3BvaW50ZXItZXZlbnRzOm5vbmU7dHJhbnNpdGlvbjpvcGFjaXR5LHRyYW5zZm9ybSAwbXMgY3ViaWMtYmV6aWVyKDAsIDAsIDAuMiwgMSk7dHJhbnNmb3JtOnNjYWxlKDApfS5jZGstaGlnaC1jb250cmFzdC1hY3RpdmVbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1yaXBwbGUtZWxlbWVudFtfbmdjb250ZW50LSVDT01QJV17ZGlzcGxheTpub25lfS5jZGstdmlzdWFsbHktaGlkZGVuW19uZ2NvbnRlbnQtJUNPTVAlXXtib3JkZXI6MDtjbGlwOnJlY3QoMCAwIDAgMCk7aGVpZ2h0OjFweDttYXJnaW46LTFweDtvdmVyZmxvdzpoaWRkZW47cGFkZGluZzowO3Bvc2l0aW9uOmFic29sdXRlO3dpZHRoOjFweDtvdXRsaW5lOjA7LXdlYmtpdC1hcHBlYXJhbmNlOm5vbmU7LW1vei1hcHBlYXJhbmNlOm5vbmV9LmNkay1vdmVybGF5LWNvbnRhaW5lcltfbmdjb250ZW50LSVDT01QJV0sIC5jZGstZ2xvYmFsLW92ZXJsYXktd3JhcHBlcltfbmdjb250ZW50LSVDT01QJV17cG9pbnRlci1ldmVudHM6bm9uZTt0b3A6MDtsZWZ0OjA7aGVpZ2h0OjEwMCU7d2lkdGg6MTAwJX0uY2RrLW92ZXJsYXktY29udGFpbmVyW19uZ2NvbnRlbnQtJUNPTVAlXXtwb3NpdGlvbjpmaXhlZDt6LWluZGV4OjEwMDB9LmNkay1vdmVybGF5LWNvbnRhaW5lcltfbmdjb250ZW50LSVDT01QJV06ZW1wdHl7ZGlzcGxheTpub25lfS5jZGstZ2xvYmFsLW92ZXJsYXktd3JhcHBlcltfbmdjb250ZW50LSVDT01QJV17ZGlzcGxheTpmbGV4O3Bvc2l0aW9uOmFic29sdXRlO3otaW5kZXg6MTAwMH0uY2RrLW92ZXJsYXktcGFuZVtfbmdjb250ZW50LSVDT01QJV17cG9zaXRpb246YWJzb2x1dGU7cG9pbnRlci1ldmVudHM6YXV0bztib3gtc2l6aW5nOmJvcmRlci1ib3g7ei1pbmRleDoxMDAwO2Rpc3BsYXk6ZmxleDttYXgtd2lkdGg6MTAwJTttYXgtaGVpZ2h0OjEwMCV9LmNkay1vdmVybGF5LWJhY2tkcm9wW19uZ2NvbnRlbnQtJUNPTVAlXXtwb3NpdGlvbjphYnNvbHV0ZTt0b3A6MDtib3R0b206MDtsZWZ0OjA7cmlnaHQ6MDt6LWluZGV4OjEwMDA7cG9pbnRlci1ldmVudHM6YXV0bzstd2Via2l0LXRhcC1oaWdobGlnaHQtY29sb3I6dHJhbnNwYXJlbnQ7dHJhbnNpdGlvbjpvcGFjaXR5IDQwMG1zIGN1YmljLWJlemllcigwLjI1LCAwLjgsIDAuMjUsIDEpO29wYWNpdHk6MH0uY2RrLW92ZXJsYXktYmFja2Ryb3AuY2RrLW92ZXJsYXktYmFja2Ryb3Atc2hvd2luZ1tfbmdjb250ZW50LSVDT01QJV17b3BhY2l0eToxfUBtZWRpYSBzY3JlZW4gYW5kICgtbXMtaGlnaC1jb250cmFzdDogYWN0aXZlKXsuY2RrLW92ZXJsYXktYmFja2Ryb3AuY2RrLW92ZXJsYXktYmFja2Ryb3Atc2hvd2luZ1tfbmdjb250ZW50LSVDT01QJV17b3BhY2l0eTouNn19LmNkay1vdmVybGF5LWRhcmstYmFja2Ryb3BbX25nY29udGVudC0lQ09NUCVde2JhY2tncm91bmQ6cmdiYSgwLDAsMCwuMzIpfS5jZGstb3ZlcmxheS10cmFuc3BhcmVudC1iYWNrZHJvcFtfbmdjb250ZW50LSVDT01QJV0sIC5jZGstb3ZlcmxheS10cmFuc3BhcmVudC1iYWNrZHJvcC5jZGstb3ZlcmxheS1iYWNrZHJvcC1zaG93aW5nW19uZ2NvbnRlbnQtJUNPTVAlXXtvcGFjaXR5OjB9LmNkay1vdmVybGF5LWNvbm5lY3RlZC1wb3NpdGlvbi1ib3VuZGluZy1ib3hbX25nY29udGVudC0lQ09NUCVde3Bvc2l0aW9uOmFic29sdXRlO3otaW5kZXg6MTAwMDtkaXNwbGF5OmZsZXg7ZmxleC1kaXJlY3Rpb246Y29sdW1uO21pbi13aWR0aDoxcHg7bWluLWhlaWdodDoxcHh9LmNkay1nbG9iYWwtc2Nyb2xsYmxvY2tbX25nY29udGVudC0lQ09NUCVde3Bvc2l0aW9uOmZpeGVkO3dpZHRoOjEwMCU7b3ZlcmZsb3cteTpzY3JvbGx9QGtleWZyYW1lcyBjZGstdGV4dC1maWVsZC1hdXRvZmlsbC1zdGFydHt9QGtleWZyYW1lcyBjZGstdGV4dC1maWVsZC1hdXRvZmlsbC1lbmR7fS5jZGstdGV4dC1maWVsZC1hdXRvZmlsbC1tb25pdG9yZWRbX25nY29udGVudC0lQ09NUCVdOi13ZWJraXQtYXV0b2ZpbGx7YW5pbWF0aW9uOmNkay10ZXh0LWZpZWxkLWF1dG9maWxsLXN0YXJ0IDBzIDFtc30uY2RrLXRleHQtZmllbGQtYXV0b2ZpbGwtbW9uaXRvcmVkW19uZ2NvbnRlbnQtJUNPTVAlXTpub3QoOi13ZWJraXQtYXV0b2ZpbGwpe2FuaW1hdGlvbjpjZGstdGV4dC1maWVsZC1hdXRvZmlsbC1lbmQgMHMgMW1zfXRleHRhcmVhLmNkay10ZXh0YXJlYS1hdXRvc2l6ZVtfbmdjb250ZW50LSVDT01QJV17cmVzaXplOm5vbmV9dGV4dGFyZWEuY2RrLXRleHRhcmVhLWF1dG9zaXplLW1lYXN1cmluZ1tfbmdjb250ZW50LSVDT01QJV17cGFkZGluZzoycHggMCAhaW1wb3J0YW50O2JveC1zaXppbmc6Y29udGVudC1ib3ggIWltcG9ydGFudDtoZWlnaHQ6YXV0byAhaW1wb3J0YW50O292ZXJmbG93OmhpZGRlbiAhaW1wb3J0YW50fXRleHRhcmVhLmNkay10ZXh0YXJlYS1hdXRvc2l6ZS1tZWFzdXJpbmctZmlyZWZveFtfbmdjb250ZW50LSVDT01QJV17cGFkZGluZzoycHggMCAhaW1wb3J0YW50O2JveC1zaXppbmc6Y29udGVudC1ib3ggIWltcG9ydGFudDtoZWlnaHQ6MCAhaW1wb3J0YW50fS5tYXQtZm9jdXMtaW5kaWNhdG9yW19uZ2NvbnRlbnQtJUNPTVAlXXtwb3NpdGlvbjpyZWxhdGl2ZX0ubWF0LW1kYy1mb2N1cy1pbmRpY2F0b3JbX25nY29udGVudC0lQ09NUCVde3Bvc2l0aW9uOnJlbGF0aXZlfS5tYXQtcmlwcGxlLWVsZW1lbnRbX25nY29udGVudC0lQ09NUCVde2JhY2tncm91bmQtY29sb3I6cmdiYSgwLDAsMCwuMSl9Lm1hdC1vcHRpb25bX25nY29udGVudC0lQ09NUCVde2NvbG9yOiMyMTIxMjF9Lm1hdC1vcHRpb25bX25nY29udGVudC0lQ09NUCVdOmhvdmVyOm5vdCgubWF0LW9wdGlvbi1kaXNhYmxlZCksIC5tYXQtb3B0aW9uW19uZ2NvbnRlbnQtJUNPTVAlXTpmb2N1czpub3QoLm1hdC1vcHRpb24tZGlzYWJsZWQpe2JhY2tncm91bmQ6cmdiYSgwLDAsMCwuMDQpfS5tYXQtb3B0aW9uLm1hdC1zZWxlY3RlZFtfbmdjb250ZW50LSVDT01QJV06bm90KC5tYXQtb3B0aW9uLW11bHRpcGxlKTpub3QoLm1hdC1vcHRpb24tZGlzYWJsZWQpe2JhY2tncm91bmQ6cmdiYSgwLDAsMCwuMDQpfS5tYXQtb3B0aW9uLm1hdC1hY3RpdmVbX25nY29udGVudC0lQ09NUCVde2JhY2tncm91bmQ6cmdiYSgwLDAsMCwuMDQpO2NvbG9yOiMyMTIxMjF9Lm1hdC1vcHRpb24ubWF0LW9wdGlvbi1kaXNhYmxlZFtfbmdjb250ZW50LSVDT01QJV17Y29sb3I6cmdiYSgwLDAsMCwuMzgpfS5tYXQtcHJpbWFyeVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LW9wdGlvbi5tYXQtc2VsZWN0ZWRbX25nY29udGVudC0lQ09NUCVdOm5vdCgubWF0LW9wdGlvbi1kaXNhYmxlZCl7Y29sb3I6I2Y1N2MwMH0ubWF0LWFjY2VudFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LW9wdGlvbi5tYXQtc2VsZWN0ZWRbX25nY29udGVudC0lQ09NUCVdOm5vdCgubWF0LW9wdGlvbi1kaXNhYmxlZCl7Y29sb3I6I2ZmOTgwMH0ubWF0LXdhcm5bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1vcHRpb24ubWF0LXNlbGVjdGVkW19uZ2NvbnRlbnQtJUNPTVAlXTpub3QoLm1hdC1vcHRpb24tZGlzYWJsZWQpe2NvbG9yOiNmNDQzMzZ9Lm1hdC1vcHRncm91cC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17Y29sb3I6IzYxNjE2MX0ubWF0LW9wdGdyb3VwLWRpc2FibGVkW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtb3B0Z3JvdXAtbGFiZWxbX25nY29udGVudC0lQ09NUCVde2NvbG9yOnJnYmEoMCwwLDAsLjM4KX0ubWF0LXBzZXVkby1jaGVja2JveFtfbmdjb250ZW50LSVDT01QJV17Y29sb3I6IzYxNjE2MX0ubWF0LXBzZXVkby1jaGVja2JveFtfbmdjb250ZW50LSVDT01QJV06OmFmdGVye2NvbG9yOiNmYWZhZmF9Lm1hdC1wc2V1ZG8tY2hlY2tib3gtZGlzYWJsZWRbX25nY29udGVudC0lQ09NUCVde2NvbG9yOiNiMGIwYjB9Lm1hdC1wcmltYXJ5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtcHNldWRvLWNoZWNrYm94LWNoZWNrZWRbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXByaW1hcnlbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1wc2V1ZG8tY2hlY2tib3gtaW5kZXRlcm1pbmF0ZVtfbmdjb250ZW50LSVDT01QJV17YmFja2dyb3VuZDojZjU3YzAwfS5tYXQtcHNldWRvLWNoZWNrYm94LWNoZWNrZWRbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXBzZXVkby1jaGVja2JveC1pbmRldGVybWluYXRlW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1hY2NlbnRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1wc2V1ZG8tY2hlY2tib3gtY2hlY2tlZFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtYWNjZW50W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtcHNldWRvLWNoZWNrYm94LWluZGV0ZXJtaW5hdGVbX25nY29udGVudC0lQ09NUCVde2JhY2tncm91bmQ6I2ZmOTgwMH0ubWF0LXdhcm5bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1wc2V1ZG8tY2hlY2tib3gtY2hlY2tlZFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtd2Fybltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXBzZXVkby1jaGVja2JveC1pbmRldGVybWluYXRlW19uZ2NvbnRlbnQtJUNPTVAlXXtiYWNrZ3JvdW5kOiNmNDQzMzZ9Lm1hdC1wc2V1ZG8tY2hlY2tib3gtY2hlY2tlZC5tYXQtcHNldWRvLWNoZWNrYm94LWRpc2FibGVkW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1wc2V1ZG8tY2hlY2tib3gtaW5kZXRlcm1pbmF0ZS5tYXQtcHNldWRvLWNoZWNrYm94LWRpc2FibGVkW19uZ2NvbnRlbnQtJUNPTVAlXXtiYWNrZ3JvdW5kOiNiMGIwYjB9Lm1hdC1hcHAtYmFja2dyb3VuZFtfbmdjb250ZW50LSVDT01QJV17YmFja2dyb3VuZC1jb2xvcjojZmFmYWZhO2NvbG9yOiMyMTIxMjF9Lm1hdC1lbGV2YXRpb24tejBbX25nY29udGVudC0lQ09NUCVde2JveC1zaGFkb3c6MHB4IDBweCAwcHggMHB4IHJnYmEoMCwgMCwgMCwgMC4yKSwwcHggMHB4IDBweCAwcHggcmdiYSgwLCAwLCAwLCAwLjE0KSwwcHggMHB4IDBweCAwcHggcmdiYSgwLCAwLCAwLCAwLjEyKX0ubWF0LWVsZXZhdGlvbi16MVtfbmdjb250ZW50LSVDT01QJV17Ym94LXNoYWRvdzowcHggMnB4IDFweCAtMXB4IHJnYmEoMCwgMCwgMCwgMC4yKSwwcHggMXB4IDFweCAwcHggcmdiYSgwLCAwLCAwLCAwLjE0KSwwcHggMXB4IDNweCAwcHggcmdiYSgwLCAwLCAwLCAwLjEyKX0ubWF0LWVsZXZhdGlvbi16Mltfbmdjb250ZW50LSVDT01QJV17Ym94LXNoYWRvdzowcHggM3B4IDFweCAtMnB4IHJnYmEoMCwgMCwgMCwgMC4yKSwwcHggMnB4IDJweCAwcHggcmdiYSgwLCAwLCAwLCAwLjE0KSwwcHggMXB4IDVweCAwcHggcmdiYSgwLCAwLCAwLCAwLjEyKX0ubWF0LWVsZXZhdGlvbi16M1tfbmdjb250ZW50LSVDT01QJV17Ym94LXNoYWRvdzowcHggM3B4IDNweCAtMnB4IHJnYmEoMCwgMCwgMCwgMC4yKSwwcHggM3B4IDRweCAwcHggcmdiYSgwLCAwLCAwLCAwLjE0KSwwcHggMXB4IDhweCAwcHggcmdiYSgwLCAwLCAwLCAwLjEyKX0ubWF0LWVsZXZhdGlvbi16NFtfbmdjb250ZW50LSVDT01QJV17Ym94LXNoYWRvdzowcHggMnB4IDRweCAtMXB4IHJnYmEoMCwgMCwgMCwgMC4yKSwwcHggNHB4IDVweCAwcHggcmdiYSgwLCAwLCAwLCAwLjE0KSwwcHggMXB4IDEwcHggMHB4IHJnYmEoMCwgMCwgMCwgMC4xMil9Lm1hdC1lbGV2YXRpb24tejVbX25nY29udGVudC0lQ09NUCVde2JveC1zaGFkb3c6MHB4IDNweCA1cHggLTFweCByZ2JhKDAsIDAsIDAsIDAuMiksMHB4IDVweCA4cHggMHB4IHJnYmEoMCwgMCwgMCwgMC4xNCksMHB4IDFweCAxNHB4IDBweCByZ2JhKDAsIDAsIDAsIDAuMTIpfS5tYXQtZWxldmF0aW9uLXo2W19uZ2NvbnRlbnQtJUNPTVAlXXtib3gtc2hhZG93OjBweCAzcHggNXB4IC0xcHggcmdiYSgwLCAwLCAwLCAwLjIpLDBweCA2cHggMTBweCAwcHggcmdiYSgwLCAwLCAwLCAwLjE0KSwwcHggMXB4IDE4cHggMHB4IHJnYmEoMCwgMCwgMCwgMC4xMil9Lm1hdC1lbGV2YXRpb24tejdbX25nY29udGVudC0lQ09NUCVde2JveC1zaGFkb3c6MHB4IDRweCA1cHggLTJweCByZ2JhKDAsIDAsIDAsIDAuMiksMHB4IDdweCAxMHB4IDFweCByZ2JhKDAsIDAsIDAsIDAuMTQpLDBweCAycHggMTZweCAxcHggcmdiYSgwLCAwLCAwLCAwLjEyKX0ubWF0LWVsZXZhdGlvbi16OFtfbmdjb250ZW50LSVDT01QJV17Ym94LXNoYWRvdzowcHggNXB4IDVweCAtM3B4IHJnYmEoMCwgMCwgMCwgMC4yKSwwcHggOHB4IDEwcHggMXB4IHJnYmEoMCwgMCwgMCwgMC4xNCksMHB4IDNweCAxNHB4IDJweCByZ2JhKDAsIDAsIDAsIDAuMTIpfS5tYXQtZWxldmF0aW9uLXo5W19uZ2NvbnRlbnQtJUNPTVAlXXtib3gtc2hhZG93OjBweCA1cHggNnB4IC0zcHggcmdiYSgwLCAwLCAwLCAwLjIpLDBweCA5cHggMTJweCAxcHggcmdiYSgwLCAwLCAwLCAwLjE0KSwwcHggM3B4IDE2cHggMnB4IHJnYmEoMCwgMCwgMCwgMC4xMil9Lm1hdC1lbGV2YXRpb24tejEwW19uZ2NvbnRlbnQtJUNPTVAlXXtib3gtc2hhZG93OjBweCA2cHggNnB4IC0zcHggcmdiYSgwLCAwLCAwLCAwLjIpLDBweCAxMHB4IDE0cHggMXB4IHJnYmEoMCwgMCwgMCwgMC4xNCksMHB4IDRweCAxOHB4IDNweCByZ2JhKDAsIDAsIDAsIDAuMTIpfS5tYXQtZWxldmF0aW9uLXoxMVtfbmdjb250ZW50LSVDT01QJV17Ym94LXNoYWRvdzowcHggNnB4IDdweCAtNHB4IHJnYmEoMCwgMCwgMCwgMC4yKSwwcHggMTFweCAxNXB4IDFweCByZ2JhKDAsIDAsIDAsIDAuMTQpLDBweCA0cHggMjBweCAzcHggcmdiYSgwLCAwLCAwLCAwLjEyKX0ubWF0LWVsZXZhdGlvbi16MTJbX25nY29udGVudC0lQ09NUCVde2JveC1zaGFkb3c6MHB4IDdweCA4cHggLTRweCByZ2JhKDAsIDAsIDAsIDAuMiksMHB4IDEycHggMTdweCAycHggcmdiYSgwLCAwLCAwLCAwLjE0KSwwcHggNXB4IDIycHggNHB4IHJnYmEoMCwgMCwgMCwgMC4xMil9Lm1hdC1lbGV2YXRpb24tejEzW19uZ2NvbnRlbnQtJUNPTVAlXXtib3gtc2hhZG93OjBweCA3cHggOHB4IC00cHggcmdiYSgwLCAwLCAwLCAwLjIpLDBweCAxM3B4IDE5cHggMnB4IHJnYmEoMCwgMCwgMCwgMC4xNCksMHB4IDVweCAyNHB4IDRweCByZ2JhKDAsIDAsIDAsIDAuMTIpfS5tYXQtZWxldmF0aW9uLXoxNFtfbmdjb250ZW50LSVDT01QJV17Ym94LXNoYWRvdzowcHggN3B4IDlweCAtNHB4IHJnYmEoMCwgMCwgMCwgMC4yKSwwcHggMTRweCAyMXB4IDJweCByZ2JhKDAsIDAsIDAsIDAuMTQpLDBweCA1cHggMjZweCA0cHggcmdiYSgwLCAwLCAwLCAwLjEyKX0ubWF0LWVsZXZhdGlvbi16MTVbX25nY29udGVudC0lQ09NUCVde2JveC1zaGFkb3c6MHB4IDhweCA5cHggLTVweCByZ2JhKDAsIDAsIDAsIDAuMiksMHB4IDE1cHggMjJweCAycHggcmdiYSgwLCAwLCAwLCAwLjE0KSwwcHggNnB4IDI4cHggNXB4IHJnYmEoMCwgMCwgMCwgMC4xMil9Lm1hdC1lbGV2YXRpb24tejE2W19uZ2NvbnRlbnQtJUNPTVAlXXtib3gtc2hhZG93OjBweCA4cHggMTBweCAtNXB4IHJnYmEoMCwgMCwgMCwgMC4yKSwwcHggMTZweCAyNHB4IDJweCByZ2JhKDAsIDAsIDAsIDAuMTQpLDBweCA2cHggMzBweCA1cHggcmdiYSgwLCAwLCAwLCAwLjEyKX0ubWF0LWVsZXZhdGlvbi16MTdbX25nY29udGVudC0lQ09NUCVde2JveC1zaGFkb3c6MHB4IDhweCAxMXB4IC01cHggcmdiYSgwLCAwLCAwLCAwLjIpLDBweCAxN3B4IDI2cHggMnB4IHJnYmEoMCwgMCwgMCwgMC4xNCksMHB4IDZweCAzMnB4IDVweCByZ2JhKDAsIDAsIDAsIDAuMTIpfS5tYXQtZWxldmF0aW9uLXoxOFtfbmdjb250ZW50LSVDT01QJV17Ym94LXNoYWRvdzowcHggOXB4IDExcHggLTVweCByZ2JhKDAsIDAsIDAsIDAuMiksMHB4IDE4cHggMjhweCAycHggcmdiYSgwLCAwLCAwLCAwLjE0KSwwcHggN3B4IDM0cHggNnB4IHJnYmEoMCwgMCwgMCwgMC4xMil9Lm1hdC1lbGV2YXRpb24tejE5W19uZ2NvbnRlbnQtJUNPTVAlXXtib3gtc2hhZG93OjBweCA5cHggMTJweCAtNnB4IHJnYmEoMCwgMCwgMCwgMC4yKSwwcHggMTlweCAyOXB4IDJweCByZ2JhKDAsIDAsIDAsIDAuMTQpLDBweCA3cHggMzZweCA2cHggcmdiYSgwLCAwLCAwLCAwLjEyKX0ubWF0LWVsZXZhdGlvbi16MjBbX25nY29udGVudC0lQ09NUCVde2JveC1zaGFkb3c6MHB4IDEwcHggMTNweCAtNnB4IHJnYmEoMCwgMCwgMCwgMC4yKSwwcHggMjBweCAzMXB4IDNweCByZ2JhKDAsIDAsIDAsIDAuMTQpLDBweCA4cHggMzhweCA3cHggcmdiYSgwLCAwLCAwLCAwLjEyKX0ubWF0LWVsZXZhdGlvbi16MjFbX25nY29udGVudC0lQ09NUCVde2JveC1zaGFkb3c6MHB4IDEwcHggMTNweCAtNnB4IHJnYmEoMCwgMCwgMCwgMC4yKSwwcHggMjFweCAzM3B4IDNweCByZ2JhKDAsIDAsIDAsIDAuMTQpLDBweCA4cHggNDBweCA3cHggcmdiYSgwLCAwLCAwLCAwLjEyKX0ubWF0LWVsZXZhdGlvbi16MjJbX25nY29udGVudC0lQ09NUCVde2JveC1zaGFkb3c6MHB4IDEwcHggMTRweCAtNnB4IHJnYmEoMCwgMCwgMCwgMC4yKSwwcHggMjJweCAzNXB4IDNweCByZ2JhKDAsIDAsIDAsIDAuMTQpLDBweCA4cHggNDJweCA3cHggcmdiYSgwLCAwLCAwLCAwLjEyKX0ubWF0LWVsZXZhdGlvbi16MjNbX25nY29udGVudC0lQ09NUCVde2JveC1zaGFkb3c6MHB4IDExcHggMTRweCAtN3B4IHJnYmEoMCwgMCwgMCwgMC4yKSwwcHggMjNweCAzNnB4IDNweCByZ2JhKDAsIDAsIDAsIDAuMTQpLDBweCA5cHggNDRweCA4cHggcmdiYSgwLCAwLCAwLCAwLjEyKX0ubWF0LWVsZXZhdGlvbi16MjRbX25nY29udGVudC0lQ09NUCVde2JveC1zaGFkb3c6MHB4IDExcHggMTVweCAtN3B4IHJnYmEoMCwgMCwgMCwgMC4yKSwwcHggMjRweCAzOHB4IDNweCByZ2JhKDAsIDAsIDAsIDAuMTQpLDBweCA5cHggNDZweCA4cHggcmdiYSgwLCAwLCAwLCAwLjEyKX0ubWF0LXRoZW1lLWxvYWRlZC1tYXJrZXJbX25nY29udGVudC0lQ09NUCVde2Rpc3BsYXk6bm9uZX0ubWF0LWF1dG9jb21wbGV0ZS1wYW5lbFtfbmdjb250ZW50LSVDT01QJV17YmFja2dyb3VuZDojZmZmO2NvbG9yOiMyMTIxMjF9Lm1hdC1hdXRvY29tcGxldGUtcGFuZWxbX25nY29udGVudC0lQ09NUCVdOm5vdChbY2xhc3MqPW1hdC1lbGV2YXRpb24tel0pe2JveC1zaGFkb3c6MHB4IDJweCA0cHggLTFweCByZ2JhKDAsIDAsIDAsIDAuMiksMHB4IDRweCA1cHggMHB4IHJnYmEoMCwgMCwgMCwgMC4xNCksMHB4IDFweCAxMHB4IDBweCByZ2JhKDAsIDAsIDAsIDAuMTIpfS5tYXQtYXV0b2NvbXBsZXRlLXBhbmVsW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtb3B0aW9uLm1hdC1zZWxlY3RlZFtfbmdjb250ZW50LSVDT01QJV06bm90KC5tYXQtYWN0aXZlKTpub3QoOmhvdmVyKXtiYWNrZ3JvdW5kOiNmZmZ9Lm1hdC1hdXRvY29tcGxldGUtcGFuZWxbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1vcHRpb24ubWF0LXNlbGVjdGVkW19uZ2NvbnRlbnQtJUNPTVAlXTpub3QoLm1hdC1hY3RpdmUpOm5vdCg6aG92ZXIpOm5vdCgubWF0LW9wdGlvbi1kaXNhYmxlZCl7Y29sb3I6IzIxMjEyMX0ubWF0LWJhZGdlLWNvbnRlbnRbX25nY29udGVudC0lQ09NUCVde2NvbG9yOiNmZmY7YmFja2dyb3VuZDojZjU3YzAwfS5jZGstaGlnaC1jb250cmFzdC1hY3RpdmVbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1iYWRnZS1jb250ZW50W19uZ2NvbnRlbnQtJUNPTVAlXXtvdXRsaW5lOnNvbGlkIDFweDtib3JkZXItcmFkaXVzOjB9Lm1hdC1iYWRnZS1hY2NlbnRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1iYWRnZS1jb250ZW50W19uZ2NvbnRlbnQtJUNPTVAlXXtiYWNrZ3JvdW5kOiNmZjk4MDA7Y29sb3I6I2ZmZn0ubWF0LWJhZGdlLXdhcm5bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1iYWRnZS1jb250ZW50W19uZ2NvbnRlbnQtJUNPTVAlXXtjb2xvcjojZmZmO2JhY2tncm91bmQ6I2Y0NDMzNn0ubWF0LWJhZGdlW19uZ2NvbnRlbnQtJUNPTVAlXXtwb3NpdGlvbjpyZWxhdGl2ZX0ubWF0LWJhZGdlLWhpZGRlbltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWJhZGdlLWNvbnRlbnRbX25nY29udGVudC0lQ09NUCVde2Rpc3BsYXk6bm9uZX0ubWF0LWJhZGdlLWRpc2FibGVkW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtYmFkZ2UtY29udGVudFtfbmdjb250ZW50LSVDT01QJV17YmFja2dyb3VuZDojYjliOWI5O2NvbG9yOiM3NTc1NzV9Lm1hdC1iYWRnZS1jb250ZW50W19uZ2NvbnRlbnQtJUNPTVAlXXtwb3NpdGlvbjphYnNvbHV0ZTt0ZXh0LWFsaWduOmNlbnRlcjtkaXNwbGF5OmlubGluZS1ibG9jaztib3JkZXItcmFkaXVzOjUwJTt0cmFuc2l0aW9uOnRyYW5zZm9ybSAyMDBtcyBlYXNlLWluLW91dDt0cmFuc2Zvcm06c2NhbGUoMC42KTtvdmVyZmxvdzpoaWRkZW47d2hpdGUtc3BhY2U6bm93cmFwO3RleHQtb3ZlcmZsb3c6ZWxsaXBzaXM7cG9pbnRlci1ldmVudHM6bm9uZX0ubmctYW5pbWF0ZS1kaXNhYmxlZFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWJhZGdlLWNvbnRlbnRbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWJhZGdlLWNvbnRlbnQuX21hdC1hbmltYXRpb24tbm9vcGFibGVbX25nY29udGVudC0lQ09NUCVde3RyYW5zaXRpb246bm9uZX0ubWF0LWJhZGdlLWNvbnRlbnQubWF0LWJhZGdlLWFjdGl2ZVtfbmdjb250ZW50LSVDT01QJV17dHJhbnNmb3JtOm5vbmV9Lm1hdC1iYWRnZS1zbWFsbFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWJhZGdlLWNvbnRlbnRbX25nY29udGVudC0lQ09NUCVde3dpZHRoOjE2cHg7aGVpZ2h0OjE2cHg7bGluZS1oZWlnaHQ6MTZweH0ubWF0LWJhZGdlLXNtYWxsLm1hdC1iYWRnZS1hYm92ZVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWJhZGdlLWNvbnRlbnRbX25nY29udGVudC0lQ09NUCVde3RvcDotOHB4fS5tYXQtYmFkZ2Utc21hbGwubWF0LWJhZGdlLWJlbG93W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtYmFkZ2UtY29udGVudFtfbmdjb250ZW50LSVDT01QJV17Ym90dG9tOi04cHh9Lm1hdC1iYWRnZS1zbWFsbC5tYXQtYmFkZ2UtYmVmb3JlW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtYmFkZ2UtY29udGVudFtfbmdjb250ZW50LSVDT01QJV17bGVmdDotMTZweH1bZGlyPXJ0bF1bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1iYWRnZS1zbWFsbC5tYXQtYmFkZ2UtYmVmb3JlW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtYmFkZ2UtY29udGVudFtfbmdjb250ZW50LSVDT01QJV17bGVmdDphdXRvO3JpZ2h0Oi0xNnB4fS5tYXQtYmFkZ2Utc21hbGwubWF0LWJhZGdlLWFmdGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtYmFkZ2UtY29udGVudFtfbmdjb250ZW50LSVDT01QJV17cmlnaHQ6LTE2cHh9W2Rpcj1ydGxdW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtYmFkZ2Utc21hbGwubWF0LWJhZGdlLWFmdGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtYmFkZ2UtY29udGVudFtfbmdjb250ZW50LSVDT01QJV17cmlnaHQ6YXV0bztsZWZ0Oi0xNnB4fS5tYXQtYmFkZ2Utc21hbGwubWF0LWJhZGdlLW92ZXJsYXAubWF0LWJhZGdlLWJlZm9yZVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWJhZGdlLWNvbnRlbnRbX25nY29udGVudC0lQ09NUCVde2xlZnQ6LThweH1bZGlyPXJ0bF1bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1iYWRnZS1zbWFsbC5tYXQtYmFkZ2Utb3ZlcmxhcC5tYXQtYmFkZ2UtYmVmb3JlW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtYmFkZ2UtY29udGVudFtfbmdjb250ZW50LSVDT01QJV17bGVmdDphdXRvO3JpZ2h0Oi04cHh9Lm1hdC1iYWRnZS1zbWFsbC5tYXQtYmFkZ2Utb3ZlcmxhcC5tYXQtYmFkZ2UtYWZ0ZXJbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1iYWRnZS1jb250ZW50W19uZ2NvbnRlbnQtJUNPTVAlXXtyaWdodDotOHB4fVtkaXI9cnRsXVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWJhZGdlLXNtYWxsLm1hdC1iYWRnZS1vdmVybGFwLm1hdC1iYWRnZS1hZnRlcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWJhZGdlLWNvbnRlbnRbX25nY29udGVudC0lQ09NUCVde3JpZ2h0OmF1dG87bGVmdDotOHB4fS5tYXQtYmFkZ2UtbWVkaXVtW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtYmFkZ2UtY29udGVudFtfbmdjb250ZW50LSVDT01QJV17d2lkdGg6MjJweDtoZWlnaHQ6MjJweDtsaW5lLWhlaWdodDoyMnB4fS5tYXQtYmFkZ2UtbWVkaXVtLm1hdC1iYWRnZS1hYm92ZVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWJhZGdlLWNvbnRlbnRbX25nY29udGVudC0lQ09NUCVde3RvcDotMTFweH0ubWF0LWJhZGdlLW1lZGl1bS5tYXQtYmFkZ2UtYmVsb3dbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1iYWRnZS1jb250ZW50W19uZ2NvbnRlbnQtJUNPTVAlXXtib3R0b206LTExcHh9Lm1hdC1iYWRnZS1tZWRpdW0ubWF0LWJhZGdlLWJlZm9yZVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWJhZGdlLWNvbnRlbnRbX25nY29udGVudC0lQ09NUCVde2xlZnQ6LTIycHh9W2Rpcj1ydGxdW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtYmFkZ2UtbWVkaXVtLm1hdC1iYWRnZS1iZWZvcmVbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1iYWRnZS1jb250ZW50W19uZ2NvbnRlbnQtJUNPTVAlXXtsZWZ0OmF1dG87cmlnaHQ6LTIycHh9Lm1hdC1iYWRnZS1tZWRpdW0ubWF0LWJhZGdlLWFmdGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtYmFkZ2UtY29udGVudFtfbmdjb250ZW50LSVDT01QJV17cmlnaHQ6LTIycHh9W2Rpcj1ydGxdW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtYmFkZ2UtbWVkaXVtLm1hdC1iYWRnZS1hZnRlcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWJhZGdlLWNvbnRlbnRbX25nY29udGVudC0lQ09NUCVde3JpZ2h0OmF1dG87bGVmdDotMjJweH0ubWF0LWJhZGdlLW1lZGl1bS5tYXQtYmFkZ2Utb3ZlcmxhcC5tYXQtYmFkZ2UtYmVmb3JlW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtYmFkZ2UtY29udGVudFtfbmdjb250ZW50LSVDT01QJV17bGVmdDotMTFweH1bZGlyPXJ0bF1bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1iYWRnZS1tZWRpdW0ubWF0LWJhZGdlLW92ZXJsYXAubWF0LWJhZGdlLWJlZm9yZVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWJhZGdlLWNvbnRlbnRbX25nY29udGVudC0lQ09NUCVde2xlZnQ6YXV0bztyaWdodDotMTFweH0ubWF0LWJhZGdlLW1lZGl1bS5tYXQtYmFkZ2Utb3ZlcmxhcC5tYXQtYmFkZ2UtYWZ0ZXJbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1iYWRnZS1jb250ZW50W19uZ2NvbnRlbnQtJUNPTVAlXXtyaWdodDotMTFweH1bZGlyPXJ0bF1bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1iYWRnZS1tZWRpdW0ubWF0LWJhZGdlLW92ZXJsYXAubWF0LWJhZGdlLWFmdGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtYmFkZ2UtY29udGVudFtfbmdjb250ZW50LSVDT01QJV17cmlnaHQ6YXV0bztsZWZ0Oi0xMXB4fS5tYXQtYmFkZ2UtbGFyZ2VbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1iYWRnZS1jb250ZW50W19uZ2NvbnRlbnQtJUNPTVAlXXt3aWR0aDoyOHB4O2hlaWdodDoyOHB4O2xpbmUtaGVpZ2h0OjI4cHh9Lm1hdC1iYWRnZS1sYXJnZS5tYXQtYmFkZ2UtYWJvdmVbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1iYWRnZS1jb250ZW50W19uZ2NvbnRlbnQtJUNPTVAlXXt0b3A6LTE0cHh9Lm1hdC1iYWRnZS1sYXJnZS5tYXQtYmFkZ2UtYmVsb3dbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1iYWRnZS1jb250ZW50W19uZ2NvbnRlbnQtJUNPTVAlXXtib3R0b206LTE0cHh9Lm1hdC1iYWRnZS1sYXJnZS5tYXQtYmFkZ2UtYmVmb3JlW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtYmFkZ2UtY29udGVudFtfbmdjb250ZW50LSVDT01QJV17bGVmdDotMjhweH1bZGlyPXJ0bF1bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1iYWRnZS1sYXJnZS5tYXQtYmFkZ2UtYmVmb3JlW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtYmFkZ2UtY29udGVudFtfbmdjb250ZW50LSVDT01QJV17bGVmdDphdXRvO3JpZ2h0Oi0yOHB4fS5tYXQtYmFkZ2UtbGFyZ2UubWF0LWJhZGdlLWFmdGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtYmFkZ2UtY29udGVudFtfbmdjb250ZW50LSVDT01QJV17cmlnaHQ6LTI4cHh9W2Rpcj1ydGxdW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtYmFkZ2UtbGFyZ2UubWF0LWJhZGdlLWFmdGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtYmFkZ2UtY29udGVudFtfbmdjb250ZW50LSVDT01QJV17cmlnaHQ6YXV0bztsZWZ0Oi0yOHB4fS5tYXQtYmFkZ2UtbGFyZ2UubWF0LWJhZGdlLW92ZXJsYXAubWF0LWJhZGdlLWJlZm9yZVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWJhZGdlLWNvbnRlbnRbX25nY29udGVudC0lQ09NUCVde2xlZnQ6LTE0cHh9W2Rpcj1ydGxdW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtYmFkZ2UtbGFyZ2UubWF0LWJhZGdlLW92ZXJsYXAubWF0LWJhZGdlLWJlZm9yZVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWJhZGdlLWNvbnRlbnRbX25nY29udGVudC0lQ09NUCVde2xlZnQ6YXV0bztyaWdodDotMTRweH0ubWF0LWJhZGdlLWxhcmdlLm1hdC1iYWRnZS1vdmVybGFwLm1hdC1iYWRnZS1hZnRlcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWJhZGdlLWNvbnRlbnRbX25nY29udGVudC0lQ09NUCVde3JpZ2h0Oi0xNHB4fVtkaXI9cnRsXVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWJhZGdlLWxhcmdlLm1hdC1iYWRnZS1vdmVybGFwLm1hdC1iYWRnZS1hZnRlcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWJhZGdlLWNvbnRlbnRbX25nY29udGVudC0lQ09NUCVde3JpZ2h0OmF1dG87bGVmdDotMTRweH0ubWF0LWJvdHRvbS1zaGVldC1jb250YWluZXJbX25nY29udGVudC0lQ09NUCVde2JveC1zaGFkb3c6MHB4IDhweCAxMHB4IC01cHggcmdiYSgwLCAwLCAwLCAwLjIpLDBweCAxNnB4IDI0cHggMnB4IHJnYmEoMCwgMCwgMCwgMC4xNCksMHB4IDZweCAzMHB4IDVweCByZ2JhKDAsIDAsIDAsIDAuMTIpO2JhY2tncm91bmQ6I2ZmZjtjb2xvcjojMjEyMTIxfS5tYXQtYnV0dG9uW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1pY29uLWJ1dHRvbltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtc3Ryb2tlZC1idXR0b25bX25nY29udGVudC0lQ09NUCVde2NvbG9yOmluaGVyaXQ7YmFja2dyb3VuZDp0cmFuc3BhcmVudH0ubWF0LWJ1dHRvbi5tYXQtcHJpbWFyeVtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtaWNvbi1idXR0b24ubWF0LXByaW1hcnlbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXN0cm9rZWQtYnV0dG9uLm1hdC1wcmltYXJ5W19uZ2NvbnRlbnQtJUNPTVAlXXtjb2xvcjojZjU3YzAwfS5tYXQtYnV0dG9uLm1hdC1hY2NlbnRbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWljb24tYnV0dG9uLm1hdC1hY2NlbnRbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXN0cm9rZWQtYnV0dG9uLm1hdC1hY2NlbnRbX25nY29udGVudC0lQ09NUCVde2NvbG9yOiNmZjk4MDB9Lm1hdC1idXR0b24ubWF0LXdhcm5bX25nY29udGVudC0lQ09NUCVdLCAubWF0LWljb24tYnV0dG9uLm1hdC13YXJuW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1zdHJva2VkLWJ1dHRvbi5tYXQtd2Fybltfbmdjb250ZW50LSVDT01QJV17Y29sb3I6I2Y0NDMzNn0ubWF0LWJ1dHRvbi5tYXQtcHJpbWFyeS5tYXQtYnV0dG9uLWRpc2FibGVkW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1idXR0b24ubWF0LWFjY2VudC5tYXQtYnV0dG9uLWRpc2FibGVkW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1idXR0b24ubWF0LXdhcm4ubWF0LWJ1dHRvbi1kaXNhYmxlZFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtYnV0dG9uLm1hdC1idXR0b24tZGlzYWJsZWQubWF0LWJ1dHRvbi1kaXNhYmxlZFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtaWNvbi1idXR0b24ubWF0LXByaW1hcnkubWF0LWJ1dHRvbi1kaXNhYmxlZFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtaWNvbi1idXR0b24ubWF0LWFjY2VudC5tYXQtYnV0dG9uLWRpc2FibGVkW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1pY29uLWJ1dHRvbi5tYXQtd2Fybi5tYXQtYnV0dG9uLWRpc2FibGVkW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1pY29uLWJ1dHRvbi5tYXQtYnV0dG9uLWRpc2FibGVkLm1hdC1idXR0b24tZGlzYWJsZWRbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXN0cm9rZWQtYnV0dG9uLm1hdC1wcmltYXJ5Lm1hdC1idXR0b24tZGlzYWJsZWRbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXN0cm9rZWQtYnV0dG9uLm1hdC1hY2NlbnQubWF0LWJ1dHRvbi1kaXNhYmxlZFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtc3Ryb2tlZC1idXR0b24ubWF0LXdhcm4ubWF0LWJ1dHRvbi1kaXNhYmxlZFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtc3Ryb2tlZC1idXR0b24ubWF0LWJ1dHRvbi1kaXNhYmxlZC5tYXQtYnV0dG9uLWRpc2FibGVkW19uZ2NvbnRlbnQtJUNPTVAlXXtjb2xvcjpyZ2JhKDAsMCwwLC4yNil9Lm1hdC1idXR0b24ubWF0LXByaW1hcnlbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1idXR0b24tZm9jdXMtb3ZlcmxheVtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtaWNvbi1idXR0b24ubWF0LXByaW1hcnlbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1idXR0b24tZm9jdXMtb3ZlcmxheVtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtc3Ryb2tlZC1idXR0b24ubWF0LXByaW1hcnlbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1idXR0b24tZm9jdXMtb3ZlcmxheVtfbmdjb250ZW50LSVDT01QJV17YmFja2dyb3VuZC1jb2xvcjojZjU3YzAwfS5tYXQtYnV0dG9uLm1hdC1hY2NlbnRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1idXR0b24tZm9jdXMtb3ZlcmxheVtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtaWNvbi1idXR0b24ubWF0LWFjY2VudFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWJ1dHRvbi1mb2N1cy1vdmVybGF5W19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1zdHJva2VkLWJ1dHRvbi5tYXQtYWNjZW50W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtYnV0dG9uLWZvY3VzLW92ZXJsYXlbX25nY29udGVudC0lQ09NUCVde2JhY2tncm91bmQtY29sb3I6I2ZmOTgwMH0ubWF0LWJ1dHRvbi5tYXQtd2Fybltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWJ1dHRvbi1mb2N1cy1vdmVybGF5W19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1pY29uLWJ1dHRvbi5tYXQtd2Fybltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWJ1dHRvbi1mb2N1cy1vdmVybGF5W19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1zdHJva2VkLWJ1dHRvbi5tYXQtd2Fybltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWJ1dHRvbi1mb2N1cy1vdmVybGF5W19uZ2NvbnRlbnQtJUNPTVAlXXtiYWNrZ3JvdW5kLWNvbG9yOiNmNDQzMzZ9Lm1hdC1idXR0b24ubWF0LWJ1dHRvbi1kaXNhYmxlZFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWJ1dHRvbi1mb2N1cy1vdmVybGF5W19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1pY29uLWJ1dHRvbi5tYXQtYnV0dG9uLWRpc2FibGVkW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtYnV0dG9uLWZvY3VzLW92ZXJsYXlbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXN0cm9rZWQtYnV0dG9uLm1hdC1idXR0b24tZGlzYWJsZWRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1idXR0b24tZm9jdXMtb3ZlcmxheVtfbmdjb250ZW50LSVDT01QJV17YmFja2dyb3VuZC1jb2xvcjp0cmFuc3BhcmVudH0ubWF0LWJ1dHRvbltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXJpcHBsZS1lbGVtZW50W19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1pY29uLWJ1dHRvbltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXJpcHBsZS1lbGVtZW50W19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1zdHJva2VkLWJ1dHRvbltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXJpcHBsZS1lbGVtZW50W19uZ2NvbnRlbnQtJUNPTVAlXXtvcGFjaXR5Oi4xO2JhY2tncm91bmQtY29sb3I6Y3VycmVudENvbG9yfS5tYXQtYnV0dG9uLWZvY3VzLW92ZXJsYXlbX25nY29udGVudC0lQ09NUCVde2JhY2tncm91bmQ6IzAwMH0ubWF0LXN0cm9rZWQtYnV0dG9uW19uZ2NvbnRlbnQtJUNPTVAlXTpub3QoLm1hdC1idXR0b24tZGlzYWJsZWQpe2JvcmRlci1jb2xvcjpyZ2JhKDAsMCwwLC4xMil9Lm1hdC1mbGF0LWJ1dHRvbltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtcmFpc2VkLWJ1dHRvbltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtZmFiW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1taW5pLWZhYltfbmdjb250ZW50LSVDT01QJV17Y29sb3I6IzIxMjEyMTtiYWNrZ3JvdW5kLWNvbG9yOiNmZmZ9Lm1hdC1mbGF0LWJ1dHRvbi5tYXQtcHJpbWFyeVtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtcmFpc2VkLWJ1dHRvbi5tYXQtcHJpbWFyeVtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtZmFiLm1hdC1wcmltYXJ5W19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1taW5pLWZhYi5tYXQtcHJpbWFyeVtfbmdjb250ZW50LSVDT01QJV17Y29sb3I6I2ZmZn0ubWF0LWZsYXQtYnV0dG9uLm1hdC1hY2NlbnRbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXJhaXNlZC1idXR0b24ubWF0LWFjY2VudFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtZmFiLm1hdC1hY2NlbnRbX25nY29udGVudC0lQ09NUCVdLCAubWF0LW1pbmktZmFiLm1hdC1hY2NlbnRbX25nY29udGVudC0lQ09NUCVde2NvbG9yOiNmZmZ9Lm1hdC1mbGF0LWJ1dHRvbi5tYXQtd2Fybltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtcmFpc2VkLWJ1dHRvbi5tYXQtd2Fybltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtZmFiLm1hdC13YXJuW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1taW5pLWZhYi5tYXQtd2Fybltfbmdjb250ZW50LSVDT01QJV17Y29sb3I6I2ZmZn0ubWF0LWZsYXQtYnV0dG9uLm1hdC1wcmltYXJ5Lm1hdC1idXR0b24tZGlzYWJsZWRbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWZsYXQtYnV0dG9uLm1hdC1hY2NlbnQubWF0LWJ1dHRvbi1kaXNhYmxlZFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtZmxhdC1idXR0b24ubWF0LXdhcm4ubWF0LWJ1dHRvbi1kaXNhYmxlZFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtZmxhdC1idXR0b24ubWF0LWJ1dHRvbi1kaXNhYmxlZC5tYXQtYnV0dG9uLWRpc2FibGVkW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1yYWlzZWQtYnV0dG9uLm1hdC1wcmltYXJ5Lm1hdC1idXR0b24tZGlzYWJsZWRbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXJhaXNlZC1idXR0b24ubWF0LWFjY2VudC5tYXQtYnV0dG9uLWRpc2FibGVkW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1yYWlzZWQtYnV0dG9uLm1hdC13YXJuLm1hdC1idXR0b24tZGlzYWJsZWRbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXJhaXNlZC1idXR0b24ubWF0LWJ1dHRvbi1kaXNhYmxlZC5tYXQtYnV0dG9uLWRpc2FibGVkW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1mYWIubWF0LXByaW1hcnkubWF0LWJ1dHRvbi1kaXNhYmxlZFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtZmFiLm1hdC1hY2NlbnQubWF0LWJ1dHRvbi1kaXNhYmxlZFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtZmFiLm1hdC13YXJuLm1hdC1idXR0b24tZGlzYWJsZWRbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWZhYi5tYXQtYnV0dG9uLWRpc2FibGVkLm1hdC1idXR0b24tZGlzYWJsZWRbX25nY29udGVudC0lQ09NUCVdLCAubWF0LW1pbmktZmFiLm1hdC1wcmltYXJ5Lm1hdC1idXR0b24tZGlzYWJsZWRbX25nY29udGVudC0lQ09NUCVdLCAubWF0LW1pbmktZmFiLm1hdC1hY2NlbnQubWF0LWJ1dHRvbi1kaXNhYmxlZFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtbWluaS1mYWIubWF0LXdhcm4ubWF0LWJ1dHRvbi1kaXNhYmxlZFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtbWluaS1mYWIubWF0LWJ1dHRvbi1kaXNhYmxlZC5tYXQtYnV0dG9uLWRpc2FibGVkW19uZ2NvbnRlbnQtJUNPTVAlXXtjb2xvcjpyZ2JhKDAsMCwwLC4yNil9Lm1hdC1mbGF0LWJ1dHRvbi5tYXQtcHJpbWFyeVtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtcmFpc2VkLWJ1dHRvbi5tYXQtcHJpbWFyeVtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtZmFiLm1hdC1wcmltYXJ5W19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1taW5pLWZhYi5tYXQtcHJpbWFyeVtfbmdjb250ZW50LSVDT01QJV17YmFja2dyb3VuZC1jb2xvcjojZjU3YzAwfS5tYXQtZmxhdC1idXR0b24ubWF0LWFjY2VudFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtcmFpc2VkLWJ1dHRvbi5tYXQtYWNjZW50W19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1mYWIubWF0LWFjY2VudFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtbWluaS1mYWIubWF0LWFjY2VudFtfbmdjb250ZW50LSVDT01QJV17YmFja2dyb3VuZC1jb2xvcjojZmY5ODAwfS5tYXQtZmxhdC1idXR0b24ubWF0LXdhcm5bX25nY29udGVudC0lQ09NUCVdLCAubWF0LXJhaXNlZC1idXR0b24ubWF0LXdhcm5bX25nY29udGVudC0lQ09NUCVdLCAubWF0LWZhYi5tYXQtd2Fybltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtbWluaS1mYWIubWF0LXdhcm5bX25nY29udGVudC0lQ09NUCVde2JhY2tncm91bmQtY29sb3I6I2Y0NDMzNn0ubWF0LWZsYXQtYnV0dG9uLm1hdC1wcmltYXJ5Lm1hdC1idXR0b24tZGlzYWJsZWRbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWZsYXQtYnV0dG9uLm1hdC1hY2NlbnQubWF0LWJ1dHRvbi1kaXNhYmxlZFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtZmxhdC1idXR0b24ubWF0LXdhcm4ubWF0LWJ1dHRvbi1kaXNhYmxlZFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtZmxhdC1idXR0b24ubWF0LWJ1dHRvbi1kaXNhYmxlZC5tYXQtYnV0dG9uLWRpc2FibGVkW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1yYWlzZWQtYnV0dG9uLm1hdC1wcmltYXJ5Lm1hdC1idXR0b24tZGlzYWJsZWRbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXJhaXNlZC1idXR0b24ubWF0LWFjY2VudC5tYXQtYnV0dG9uLWRpc2FibGVkW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1yYWlzZWQtYnV0dG9uLm1hdC13YXJuLm1hdC1idXR0b24tZGlzYWJsZWRbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXJhaXNlZC1idXR0b24ubWF0LWJ1dHRvbi1kaXNhYmxlZC5tYXQtYnV0dG9uLWRpc2FibGVkW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1mYWIubWF0LXByaW1hcnkubWF0LWJ1dHRvbi1kaXNhYmxlZFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtZmFiLm1hdC1hY2NlbnQubWF0LWJ1dHRvbi1kaXNhYmxlZFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtZmFiLm1hdC13YXJuLm1hdC1idXR0b24tZGlzYWJsZWRbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWZhYi5tYXQtYnV0dG9uLWRpc2FibGVkLm1hdC1idXR0b24tZGlzYWJsZWRbX25nY29udGVudC0lQ09NUCVdLCAubWF0LW1pbmktZmFiLm1hdC1wcmltYXJ5Lm1hdC1idXR0b24tZGlzYWJsZWRbX25nY29udGVudC0lQ09NUCVdLCAubWF0LW1pbmktZmFiLm1hdC1hY2NlbnQubWF0LWJ1dHRvbi1kaXNhYmxlZFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtbWluaS1mYWIubWF0LXdhcm4ubWF0LWJ1dHRvbi1kaXNhYmxlZFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtbWluaS1mYWIubWF0LWJ1dHRvbi1kaXNhYmxlZC5tYXQtYnV0dG9uLWRpc2FibGVkW19uZ2NvbnRlbnQtJUNPTVAlXXtiYWNrZ3JvdW5kLWNvbG9yOnJnYmEoMCwwLDAsLjEyKX0ubWF0LWZsYXQtYnV0dG9uLm1hdC1wcmltYXJ5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtcmlwcGxlLWVsZW1lbnRbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXJhaXNlZC1idXR0b24ubWF0LXByaW1hcnlbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1yaXBwbGUtZWxlbWVudFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtZmFiLm1hdC1wcmltYXJ5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtcmlwcGxlLWVsZW1lbnRbX25nY29udGVudC0lQ09NUCVdLCAubWF0LW1pbmktZmFiLm1hdC1wcmltYXJ5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtcmlwcGxlLWVsZW1lbnRbX25nY29udGVudC0lQ09NUCVde2JhY2tncm91bmQtY29sb3I6cmdiYSgyNTUsMjU1LDI1NSwuMSl9Lm1hdC1mbGF0LWJ1dHRvbi5tYXQtYWNjZW50W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtcmlwcGxlLWVsZW1lbnRbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXJhaXNlZC1idXR0b24ubWF0LWFjY2VudFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXJpcHBsZS1lbGVtZW50W19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1mYWIubWF0LWFjY2VudFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXJpcHBsZS1lbGVtZW50W19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1taW5pLWZhYi5tYXQtYWNjZW50W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtcmlwcGxlLWVsZW1lbnRbX25nY29udGVudC0lQ09NUCVde2JhY2tncm91bmQtY29sb3I6cmdiYSgyNTUsMjU1LDI1NSwuMSl9Lm1hdC1mbGF0LWJ1dHRvbi5tYXQtd2Fybltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXJpcHBsZS1lbGVtZW50W19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1yYWlzZWQtYnV0dG9uLm1hdC13YXJuW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtcmlwcGxlLWVsZW1lbnRbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWZhYi5tYXQtd2Fybltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXJpcHBsZS1lbGVtZW50W19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1taW5pLWZhYi5tYXQtd2Fybltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXJpcHBsZS1lbGVtZW50W19uZ2NvbnRlbnQtJUNPTVAlXXtiYWNrZ3JvdW5kLWNvbG9yOnJnYmEoMjU1LDI1NSwyNTUsLjEpfS5tYXQtc3Ryb2tlZC1idXR0b25bX25nY29udGVudC0lQ09NUCVdOm5vdChbY2xhc3MqPW1hdC1lbGV2YXRpb24tel0pLCAubWF0LWZsYXQtYnV0dG9uW19uZ2NvbnRlbnQtJUNPTVAlXTpub3QoW2NsYXNzKj1tYXQtZWxldmF0aW9uLXpdKXtib3gtc2hhZG93OjBweCAwcHggMHB4IDBweCByZ2JhKDAsIDAsIDAsIDAuMiksMHB4IDBweCAwcHggMHB4IHJnYmEoMCwgMCwgMCwgMC4xNCksMHB4IDBweCAwcHggMHB4IHJnYmEoMCwgMCwgMCwgMC4xMil9Lm1hdC1yYWlzZWQtYnV0dG9uW19uZ2NvbnRlbnQtJUNPTVAlXTpub3QoW2NsYXNzKj1tYXQtZWxldmF0aW9uLXpdKXtib3gtc2hhZG93OjBweCAzcHggMXB4IC0ycHggcmdiYSgwLCAwLCAwLCAwLjIpLDBweCAycHggMnB4IDBweCByZ2JhKDAsIDAsIDAsIDAuMTQpLDBweCAxcHggNXB4IDBweCByZ2JhKDAsIDAsIDAsIDAuMTIpfS5tYXQtcmFpc2VkLWJ1dHRvbltfbmdjb250ZW50LSVDT01QJV06bm90KC5tYXQtYnV0dG9uLWRpc2FibGVkKTphY3RpdmU6bm90KFtjbGFzcyo9bWF0LWVsZXZhdGlvbi16XSl7Ym94LXNoYWRvdzowcHggNXB4IDVweCAtM3B4IHJnYmEoMCwgMCwgMCwgMC4yKSwwcHggOHB4IDEwcHggMXB4IHJnYmEoMCwgMCwgMCwgMC4xNCksMHB4IDNweCAxNHB4IDJweCByZ2JhKDAsIDAsIDAsIDAuMTIpfS5tYXQtcmFpc2VkLWJ1dHRvbi5tYXQtYnV0dG9uLWRpc2FibGVkW19uZ2NvbnRlbnQtJUNPTVAlXTpub3QoW2NsYXNzKj1tYXQtZWxldmF0aW9uLXpdKXtib3gtc2hhZG93OjBweCAwcHggMHB4IDBweCByZ2JhKDAsIDAsIDAsIDAuMiksMHB4IDBweCAwcHggMHB4IHJnYmEoMCwgMCwgMCwgMC4xNCksMHB4IDBweCAwcHggMHB4IHJnYmEoMCwgMCwgMCwgMC4xMil9Lm1hdC1mYWJbX25nY29udGVudC0lQ09NUCVdOm5vdChbY2xhc3MqPW1hdC1lbGV2YXRpb24tel0pLCAubWF0LW1pbmktZmFiW19uZ2NvbnRlbnQtJUNPTVAlXTpub3QoW2NsYXNzKj1tYXQtZWxldmF0aW9uLXpdKXtib3gtc2hhZG93OjBweCAzcHggNXB4IC0xcHggcmdiYSgwLCAwLCAwLCAwLjIpLDBweCA2cHggMTBweCAwcHggcmdiYSgwLCAwLCAwLCAwLjE0KSwwcHggMXB4IDE4cHggMHB4IHJnYmEoMCwgMCwgMCwgMC4xMil9Lm1hdC1mYWJbX25nY29udGVudC0lQ09NUCVdOm5vdCgubWF0LWJ1dHRvbi1kaXNhYmxlZCk6YWN0aXZlOm5vdChbY2xhc3MqPW1hdC1lbGV2YXRpb24tel0pLCAubWF0LW1pbmktZmFiW19uZ2NvbnRlbnQtJUNPTVAlXTpub3QoLm1hdC1idXR0b24tZGlzYWJsZWQpOmFjdGl2ZTpub3QoW2NsYXNzKj1tYXQtZWxldmF0aW9uLXpdKXtib3gtc2hhZG93OjBweCA3cHggOHB4IC00cHggcmdiYSgwLCAwLCAwLCAwLjIpLDBweCAxMnB4IDE3cHggMnB4IHJnYmEoMCwgMCwgMCwgMC4xNCksMHB4IDVweCAyMnB4IDRweCByZ2JhKDAsIDAsIDAsIDAuMTIpfS5tYXQtZmFiLm1hdC1idXR0b24tZGlzYWJsZWRbX25nY29udGVudC0lQ09NUCVdOm5vdChbY2xhc3MqPW1hdC1lbGV2YXRpb24tel0pLCAubWF0LW1pbmktZmFiLm1hdC1idXR0b24tZGlzYWJsZWRbX25nY29udGVudC0lQ09NUCVdOm5vdChbY2xhc3MqPW1hdC1lbGV2YXRpb24tel0pe2JveC1zaGFkb3c6MHB4IDBweCAwcHggMHB4IHJnYmEoMCwgMCwgMCwgMC4yKSwwcHggMHB4IDBweCAwcHggcmdiYSgwLCAwLCAwLCAwLjE0KSwwcHggMHB4IDBweCAwcHggcmdiYSgwLCAwLCAwLCAwLjEyKX0ubWF0LWJ1dHRvbi10b2dnbGUtc3RhbmRhbG9uZVtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtYnV0dG9uLXRvZ2dsZS1ncm91cFtfbmdjb250ZW50LSVDT01QJV17Ym94LXNoYWRvdzowcHggM3B4IDFweCAtMnB4IHJnYmEoMCwgMCwgMCwgMC4yKSwwcHggMnB4IDJweCAwcHggcmdiYSgwLCAwLCAwLCAwLjE0KSwwcHggMXB4IDVweCAwcHggcmdiYSgwLCAwLCAwLCAwLjEyKX0ubWF0LWJ1dHRvbi10b2dnbGUtc3RhbmRhbG9uZS5tYXQtYnV0dG9uLXRvZ2dsZS1hcHBlYXJhbmNlLXN0YW5kYXJkW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1idXR0b24tdG9nZ2xlLWdyb3VwLWFwcGVhcmFuY2Utc3RhbmRhcmRbX25nY29udGVudC0lQ09NUCVde2JveC1zaGFkb3c6bm9uZX0ubWF0LWJ1dHRvbi10b2dnbGVbX25nY29udGVudC0lQ09NUCVde2NvbG9yOnJnYmEoMCwwLDAsLjM4KX0ubWF0LWJ1dHRvbi10b2dnbGVbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1idXR0b24tdG9nZ2xlLWZvY3VzLW92ZXJsYXlbX25nY29udGVudC0lQ09NUCVde2JhY2tncm91bmQtY29sb3I6cmdiYSgwLDAsMCwuMTIpfS5tYXQtYnV0dG9uLXRvZ2dsZS1hcHBlYXJhbmNlLXN0YW5kYXJkW19uZ2NvbnRlbnQtJUNPTVAlXXtjb2xvcjojMjEyMTIxO2JhY2tncm91bmQ6I2ZmZn0ubWF0LWJ1dHRvbi10b2dnbGUtYXBwZWFyYW5jZS1zdGFuZGFyZFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWJ1dHRvbi10b2dnbGUtZm9jdXMtb3ZlcmxheVtfbmdjb250ZW50LSVDT01QJV17YmFja2dyb3VuZC1jb2xvcjojMDAwfS5tYXQtYnV0dG9uLXRvZ2dsZS1ncm91cC1hcHBlYXJhbmNlLXN0YW5kYXJkW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtYnV0dG9uLXRvZ2dsZVtfbmdjb250ZW50LSVDT01QJV0gKyAubWF0LWJ1dHRvbi10b2dnbGVbX25nY29udGVudC0lQ09NUCVde2JvcmRlci1sZWZ0OnNvbGlkIDFweCByZ2JhKDAsMCwwLC4xMil9W2Rpcj1ydGxdW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtYnV0dG9uLXRvZ2dsZS1ncm91cC1hcHBlYXJhbmNlLXN0YW5kYXJkW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtYnV0dG9uLXRvZ2dsZVtfbmdjb250ZW50LSVDT01QJV0gKyAubWF0LWJ1dHRvbi10b2dnbGVbX25nY29udGVudC0lQ09NUCVde2JvcmRlci1sZWZ0Om5vbmU7Ym9yZGVyLXJpZ2h0OnNvbGlkIDFweCByZ2JhKDAsMCwwLC4xMil9Lm1hdC1idXR0b24tdG9nZ2xlLWdyb3VwLWFwcGVhcmFuY2Utc3RhbmRhcmQubWF0LWJ1dHRvbi10b2dnbGUtdmVydGljYWxbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1idXR0b24tdG9nZ2xlW19uZ2NvbnRlbnQtJUNPTVAlXSArIC5tYXQtYnV0dG9uLXRvZ2dsZVtfbmdjb250ZW50LSVDT01QJV17Ym9yZGVyLWxlZnQ6bm9uZTtib3JkZXItcmlnaHQ6bm9uZTtib3JkZXItdG9wOnNvbGlkIDFweCByZ2JhKDAsMCwwLC4xMil9Lm1hdC1idXR0b24tdG9nZ2xlLWNoZWNrZWRbX25nY29udGVudC0lQ09NUCVde2JhY2tncm91bmQtY29sb3I6I2UwZTBlMDtjb2xvcjojNjE2MTYxfS5tYXQtYnV0dG9uLXRvZ2dsZS1jaGVja2VkLm1hdC1idXR0b24tdG9nZ2xlLWFwcGVhcmFuY2Utc3RhbmRhcmRbX25nY29udGVudC0lQ09NUCVde2NvbG9yOiMyMTIxMjF9Lm1hdC1idXR0b24tdG9nZ2xlLWRpc2FibGVkW19uZ2NvbnRlbnQtJUNPTVAlXXtjb2xvcjpyZ2JhKDAsMCwwLC4yNik7YmFja2dyb3VuZC1jb2xvcjojZWVlfS5tYXQtYnV0dG9uLXRvZ2dsZS1kaXNhYmxlZC5tYXQtYnV0dG9uLXRvZ2dsZS1hcHBlYXJhbmNlLXN0YW5kYXJkW19uZ2NvbnRlbnQtJUNPTVAlXXtiYWNrZ3JvdW5kOiNmZmZ9Lm1hdC1idXR0b24tdG9nZ2xlLWRpc2FibGVkLm1hdC1idXR0b24tdG9nZ2xlLWNoZWNrZWRbX25nY29udGVudC0lQ09NUCVde2JhY2tncm91bmQtY29sb3I6I2JkYmRiZH0ubWF0LWJ1dHRvbi10b2dnbGUtc3RhbmRhbG9uZS5tYXQtYnV0dG9uLXRvZ2dsZS1hcHBlYXJhbmNlLXN0YW5kYXJkW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1idXR0b24tdG9nZ2xlLWdyb3VwLWFwcGVhcmFuY2Utc3RhbmRhcmRbX25nY29udGVudC0lQ09NUCVde2JvcmRlcjpzb2xpZCAxcHggcmdiYSgwLDAsMCwuMTIpfS5tYXQtYnV0dG9uLXRvZ2dsZS1hcHBlYXJhbmNlLXN0YW5kYXJkW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtYnV0dG9uLXRvZ2dsZS1sYWJlbC1jb250ZW50W19uZ2NvbnRlbnQtJUNPTVAlXXtsaW5lLWhlaWdodDo0OHB4fS5tYXQtY2FyZFtfbmdjb250ZW50LSVDT01QJV17YmFja2dyb3VuZDojZmZmO2NvbG9yOiMyMTIxMjF9Lm1hdC1jYXJkW19uZ2NvbnRlbnQtJUNPTVAlXTpub3QoW2NsYXNzKj1tYXQtZWxldmF0aW9uLXpdKXtib3gtc2hhZG93OjBweCAycHggMXB4IC0xcHggcmdiYSgwLCAwLCAwLCAwLjIpLDBweCAxcHggMXB4IDBweCByZ2JhKDAsIDAsIDAsIDAuMTQpLDBweCAxcHggM3B4IDBweCByZ2JhKDAsIDAsIDAsIDAuMTIpfS5tYXQtY2FyZC5tYXQtY2FyZC1mbGF0W19uZ2NvbnRlbnQtJUNPTVAlXTpub3QoW2NsYXNzKj1tYXQtZWxldmF0aW9uLXpdKXtib3gtc2hhZG93OjBweCAwcHggMHB4IDBweCByZ2JhKDAsIDAsIDAsIDAuMiksMHB4IDBweCAwcHggMHB4IHJnYmEoMCwgMCwgMCwgMC4xNCksMHB4IDBweCAwcHggMHB4IHJnYmEoMCwgMCwgMCwgMC4xMil9Lm1hdC1jYXJkLXN1YnRpdGxlW19uZ2NvbnRlbnQtJUNPTVAlXXtjb2xvcjojNjE2MTYxfS5tYXQtY2hlY2tib3gtZnJhbWVbX25nY29udGVudC0lQ09NUCVde2JvcmRlci1jb2xvcjojNjE2MTYxfS5tYXQtY2hlY2tib3gtY2hlY2ttYXJrW19uZ2NvbnRlbnQtJUNPTVAlXXtmaWxsOiNmYWZhZmF9Lm1hdC1jaGVja2JveC1jaGVja21hcmstcGF0aFtfbmdjb250ZW50LSVDT01QJV17c3Ryb2tlOiNmYWZhZmEgIWltcG9ydGFudH0ubWF0LWNoZWNrYm94LW1peGVkbWFya1tfbmdjb250ZW50LSVDT01QJV17YmFja2dyb3VuZC1jb2xvcjojZmFmYWZhfS5tYXQtY2hlY2tib3gtaW5kZXRlcm1pbmF0ZS5tYXQtcHJpbWFyeVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWNoZWNrYm94LWJhY2tncm91bmRbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWNoZWNrYm94LWNoZWNrZWQubWF0LXByaW1hcnlbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1jaGVja2JveC1iYWNrZ3JvdW5kW19uZ2NvbnRlbnQtJUNPTVAlXXtiYWNrZ3JvdW5kLWNvbG9yOiNmNTdjMDB9Lm1hdC1jaGVja2JveC1pbmRldGVybWluYXRlLm1hdC1hY2NlbnRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1jaGVja2JveC1iYWNrZ3JvdW5kW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1jaGVja2JveC1jaGVja2VkLm1hdC1hY2NlbnRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1jaGVja2JveC1iYWNrZ3JvdW5kW19uZ2NvbnRlbnQtJUNPTVAlXXtiYWNrZ3JvdW5kLWNvbG9yOiNmZjk4MDB9Lm1hdC1jaGVja2JveC1pbmRldGVybWluYXRlLm1hdC13YXJuW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtY2hlY2tib3gtYmFja2dyb3VuZFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtY2hlY2tib3gtY2hlY2tlZC5tYXQtd2Fybltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWNoZWNrYm94LWJhY2tncm91bmRbX25nY29udGVudC0lQ09NUCVde2JhY2tncm91bmQtY29sb3I6I2Y0NDMzNn0ubWF0LWNoZWNrYm94LWRpc2FibGVkLm1hdC1jaGVja2JveC1jaGVja2VkW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtY2hlY2tib3gtYmFja2dyb3VuZFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtY2hlY2tib3gtZGlzYWJsZWQubWF0LWNoZWNrYm94LWluZGV0ZXJtaW5hdGVbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1jaGVja2JveC1iYWNrZ3JvdW5kW19uZ2NvbnRlbnQtJUNPTVAlXXtiYWNrZ3JvdW5kLWNvbG9yOiNiMGIwYjB9Lm1hdC1jaGVja2JveC1kaXNhYmxlZFtfbmdjb250ZW50LSVDT01QJV06bm90KC5tYXQtY2hlY2tib3gtY2hlY2tlZCkgICAubWF0LWNoZWNrYm94LWZyYW1lW19uZ2NvbnRlbnQtJUNPTVAlXXtib3JkZXItY29sb3I6I2IwYjBiMH0ubWF0LWNoZWNrYm94LWRpc2FibGVkW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtY2hlY2tib3gtbGFiZWxbX25nY29udGVudC0lQ09NUCVde2NvbG9yOiM2MTYxNjF9Lm1hdC1jaGVja2JveFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXJpcHBsZS1lbGVtZW50W19uZ2NvbnRlbnQtJUNPTVAlXXtiYWNrZ3JvdW5kLWNvbG9yOiMwMDB9Lm1hdC1jaGVja2JveC1jaGVja2VkW19uZ2NvbnRlbnQtJUNPTVAlXTpub3QoLm1hdC1jaGVja2JveC1kaXNhYmxlZCkubWF0LXByaW1hcnkgICAubWF0LXJpcHBsZS1lbGVtZW50W19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1jaGVja2JveFtfbmdjb250ZW50LSVDT01QJV06YWN0aXZlOm5vdCgubWF0LWNoZWNrYm94LWRpc2FibGVkKS5tYXQtcHJpbWFyeSAgIC5tYXQtcmlwcGxlLWVsZW1lbnRbX25nY29udGVudC0lQ09NUCVde2JhY2tncm91bmQ6I2Y1N2MwMH0ubWF0LWNoZWNrYm94LWNoZWNrZWRbX25nY29udGVudC0lQ09NUCVdOm5vdCgubWF0LWNoZWNrYm94LWRpc2FibGVkKS5tYXQtYWNjZW50ICAgLm1hdC1yaXBwbGUtZWxlbWVudFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtY2hlY2tib3hbX25nY29udGVudC0lQ09NUCVdOmFjdGl2ZTpub3QoLm1hdC1jaGVja2JveC1kaXNhYmxlZCkubWF0LWFjY2VudCAgIC5tYXQtcmlwcGxlLWVsZW1lbnRbX25nY29udGVudC0lQ09NUCVde2JhY2tncm91bmQ6I2ZmOTgwMH0ubWF0LWNoZWNrYm94LWNoZWNrZWRbX25nY29udGVudC0lQ09NUCVdOm5vdCgubWF0LWNoZWNrYm94LWRpc2FibGVkKS5tYXQtd2FybiAgIC5tYXQtcmlwcGxlLWVsZW1lbnRbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWNoZWNrYm94W19uZ2NvbnRlbnQtJUNPTVAlXTphY3RpdmU6bm90KC5tYXQtY2hlY2tib3gtZGlzYWJsZWQpLm1hdC13YXJuICAgLm1hdC1yaXBwbGUtZWxlbWVudFtfbmdjb250ZW50LSVDT01QJV17YmFja2dyb3VuZDojZjQ0MzM2fS5tYXQtY2hpcC5tYXQtc3RhbmRhcmQtY2hpcFtfbmdjb250ZW50LSVDT01QJV17YmFja2dyb3VuZC1jb2xvcjojZTBlMGUwO2NvbG9yOiMyMTIxMjF9Lm1hdC1jaGlwLm1hdC1zdGFuZGFyZC1jaGlwW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtY2hpcC1yZW1vdmVbX25nY29udGVudC0lQ09NUCVde2NvbG9yOiMyMTIxMjE7b3BhY2l0eTouNH0ubWF0LWNoaXAubWF0LXN0YW5kYXJkLWNoaXBbX25nY29udGVudC0lQ09NUCVdOm5vdCgubWF0LWNoaXAtZGlzYWJsZWQpOmFjdGl2ZXtib3gtc2hhZG93OjBweCAzcHggM3B4IC0ycHggcmdiYSgwLCAwLCAwLCAwLjIpLDBweCAzcHggNHB4IDBweCByZ2JhKDAsIDAsIDAsIDAuMTQpLDBweCAxcHggOHB4IDBweCByZ2JhKDAsIDAsIDAsIDAuMTIpfS5tYXQtY2hpcC5tYXQtc3RhbmRhcmQtY2hpcFtfbmdjb250ZW50LSVDT01QJV06bm90KC5tYXQtY2hpcC1kaXNhYmxlZCkgICAubWF0LWNoaXAtcmVtb3ZlW19uZ2NvbnRlbnQtJUNPTVAlXTpob3ZlcntvcGFjaXR5Oi41NH0ubWF0LWNoaXAubWF0LXN0YW5kYXJkLWNoaXAubWF0LWNoaXAtZGlzYWJsZWRbX25nY29udGVudC0lQ09NUCVde29wYWNpdHk6LjR9Lm1hdC1jaGlwLm1hdC1zdGFuZGFyZC1jaGlwW19uZ2NvbnRlbnQtJUNPTVAlXTo6YWZ0ZXJ7YmFja2dyb3VuZDojMDAwfS5tYXQtY2hpcC5tYXQtc3RhbmRhcmQtY2hpcC5tYXQtY2hpcC1zZWxlY3RlZC5tYXQtcHJpbWFyeVtfbmdjb250ZW50LSVDT01QJV17YmFja2dyb3VuZC1jb2xvcjojZjU3YzAwO2NvbG9yOiNmZmZ9Lm1hdC1jaGlwLm1hdC1zdGFuZGFyZC1jaGlwLm1hdC1jaGlwLXNlbGVjdGVkLm1hdC1wcmltYXJ5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtY2hpcC1yZW1vdmVbX25nY29udGVudC0lQ09NUCVde2NvbG9yOiNmZmY7b3BhY2l0eTouNH0ubWF0LWNoaXAubWF0LXN0YW5kYXJkLWNoaXAubWF0LWNoaXAtc2VsZWN0ZWQubWF0LXByaW1hcnlbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1yaXBwbGUtZWxlbWVudFtfbmdjb250ZW50LSVDT01QJV17YmFja2dyb3VuZC1jb2xvcjpyZ2JhKDI1NSwyNTUsMjU1LC4xKX0ubWF0LWNoaXAubWF0LXN0YW5kYXJkLWNoaXAubWF0LWNoaXAtc2VsZWN0ZWQubWF0LXdhcm5bX25nY29udGVudC0lQ09NUCVde2JhY2tncm91bmQtY29sb3I6I2Y0NDMzNjtjb2xvcjojZmZmfS5tYXQtY2hpcC5tYXQtc3RhbmRhcmQtY2hpcC5tYXQtY2hpcC1zZWxlY3RlZC5tYXQtd2Fybltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWNoaXAtcmVtb3ZlW19uZ2NvbnRlbnQtJUNPTVAlXXtjb2xvcjojZmZmO29wYWNpdHk6LjR9Lm1hdC1jaGlwLm1hdC1zdGFuZGFyZC1jaGlwLm1hdC1jaGlwLXNlbGVjdGVkLm1hdC13YXJuW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtcmlwcGxlLWVsZW1lbnRbX25nY29udGVudC0lQ09NUCVde2JhY2tncm91bmQtY29sb3I6cmdiYSgyNTUsMjU1LDI1NSwuMSl9Lm1hdC1jaGlwLm1hdC1zdGFuZGFyZC1jaGlwLm1hdC1jaGlwLXNlbGVjdGVkLm1hdC1hY2NlbnRbX25nY29udGVudC0lQ09NUCVde2JhY2tncm91bmQtY29sb3I6I2ZmOTgwMDtjb2xvcjojZmZmfS5tYXQtY2hpcC5tYXQtc3RhbmRhcmQtY2hpcC5tYXQtY2hpcC1zZWxlY3RlZC5tYXQtYWNjZW50W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtY2hpcC1yZW1vdmVbX25nY29udGVudC0lQ09NUCVde2NvbG9yOiNmZmY7b3BhY2l0eTouNH0ubWF0LWNoaXAubWF0LXN0YW5kYXJkLWNoaXAubWF0LWNoaXAtc2VsZWN0ZWQubWF0LWFjY2VudFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXJpcHBsZS1lbGVtZW50W19uZ2NvbnRlbnQtJUNPTVAlXXtiYWNrZ3JvdW5kLWNvbG9yOnJnYmEoMjU1LDI1NSwyNTUsLjEpfS5tYXQtdGFibGVbX25nY29udGVudC0lQ09NUCVde2JhY2tncm91bmQ6I2ZmZn0ubWF0LXRhYmxlW19uZ2NvbnRlbnQtJUNPTVAlXSAgIHRoZWFkW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10YWJsZVtfbmdjb250ZW50LSVDT01QJV0gICB0Ym9keVtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdGFibGVbX25nY29udGVudC0lQ09NUCVdICAgdGZvb3RbX25nY29udGVudC0lQ09NUCVdLCBtYXQtaGVhZGVyLXJvd1tfbmdjb250ZW50LSVDT01QJV0sIG1hdC1yb3dbX25nY29udGVudC0lQ09NUCVdLCBtYXQtZm9vdGVyLXJvd1tfbmdjb250ZW50LSVDT01QJV0sIFttYXQtaGVhZGVyLXJvd11bX25nY29udGVudC0lQ09NUCVdLCBbbWF0LXJvd11bX25nY29udGVudC0lQ09NUCVdLCBbbWF0LWZvb3Rlci1yb3ddW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10YWJsZS1zdGlja3lbX25nY29udGVudC0lQ09NUCVde2JhY2tncm91bmQ6aW5oZXJpdH1tYXQtcm93W19uZ2NvbnRlbnQtJUNPTVAlXSwgbWF0LWhlYWRlci1yb3dbX25nY29udGVudC0lQ09NUCVdLCBtYXQtZm9vdGVyLXJvd1tfbmdjb250ZW50LSVDT01QJV0sIHRoLm1hdC1oZWFkZXItY2VsbFtfbmdjb250ZW50LSVDT01QJV0sIHRkLm1hdC1jZWxsW19uZ2NvbnRlbnQtJUNPTVAlXSwgdGQubWF0LWZvb3Rlci1jZWxsW19uZ2NvbnRlbnQtJUNPTVAlXXtib3JkZXItYm90dG9tLWNvbG9yOnJnYmEoMCwwLDAsLjEyKX0ubWF0LWhlYWRlci1jZWxsW19uZ2NvbnRlbnQtJUNPTVAlXXtjb2xvcjojNjE2MTYxfS5tYXQtY2VsbFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtZm9vdGVyLWNlbGxbX25nY29udGVudC0lQ09NUCVde2NvbG9yOiMyMTIxMjF9Lm1hdC1jYWxlbmRhci1hcnJvd1tfbmdjb250ZW50LSVDT01QJV17Ym9yZGVyLXRvcC1jb2xvcjpyZ2JhKDAsMCwwLC41NCl9Lm1hdC1kYXRlcGlja2VyLXRvZ2dsZVtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtZGF0ZXBpY2tlci1jb250ZW50W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtY2FsZW5kYXItbmV4dC1idXR0b25bX25nY29udGVudC0lQ09NUCVdLCAubWF0LWRhdGVwaWNrZXItY29udGVudFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWNhbGVuZGFyLXByZXZpb3VzLWJ1dHRvbltfbmdjb250ZW50LSVDT01QJV17Y29sb3I6cmdiYSgwLDAsMCwuNTQpfS5tYXQtY2FsZW5kYXItdGFibGUtaGVhZGVyW19uZ2NvbnRlbnQtJUNPTVAlXXtjb2xvcjpyZ2JhKDAsMCwwLC4zOCl9Lm1hdC1jYWxlbmRhci10YWJsZS1oZWFkZXItZGl2aWRlcltfbmdjb250ZW50LSVDT01QJV06OmFmdGVye2JhY2tncm91bmQ6cmdiYSgwLDAsMCwuMTIpfS5tYXQtY2FsZW5kYXItYm9keS1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17Y29sb3I6IzYxNjE2MX0ubWF0LWNhbGVuZGFyLWJvZHktY2VsbC1jb250ZW50W19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1kYXRlLXJhbmdlLWlucHV0LXNlcGFyYXRvcltfbmdjb250ZW50LSVDT01QJV17Y29sb3I6IzIxMjEyMTtib3JkZXItY29sb3I6dHJhbnNwYXJlbnR9Lm1hdC1jYWxlbmRhci1ib2R5LWRpc2FibGVkW19uZ2NvbnRlbnQtJUNPTVAlXSA+IC5tYXQtY2FsZW5kYXItYm9keS1jZWxsLWNvbnRlbnRbX25nY29udGVudC0lQ09NUCVdOm5vdCgubWF0LWNhbGVuZGFyLWJvZHktc2VsZWN0ZWQpOm5vdCgubWF0LWNhbGVuZGFyLWJvZHktY29tcGFyaXNvbi1pZGVudGljYWwpe2NvbG9yOiM3NTc1NzV9Lm1hdC1mb3JtLWZpZWxkLWRpc2FibGVkW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZGF0ZS1yYW5nZS1pbnB1dC1zZXBhcmF0b3JbX25nY29udGVudC0lQ09NUCVde2NvbG9yOiM3NTc1NzV9Lm1hdC1jYWxlbmRhci1ib2R5LWNlbGxbX25nY29udGVudC0lQ09NUCVdOm5vdCgubWF0LWNhbGVuZGFyLWJvZHktZGlzYWJsZWQpOmhvdmVyID4gLm1hdC1jYWxlbmRhci1ib2R5LWNlbGwtY29udGVudFtfbmdjb250ZW50LSVDT01QJV06bm90KC5tYXQtY2FsZW5kYXItYm9keS1zZWxlY3RlZCk6bm90KC5tYXQtY2FsZW5kYXItYm9keS1jb21wYXJpc29uLWlkZW50aWNhbCksIC5jZGsta2V5Ym9hcmQtZm9jdXNlZFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWNhbGVuZGFyLWJvZHktYWN0aXZlW19uZ2NvbnRlbnQtJUNPTVAlXSA+IC5tYXQtY2FsZW5kYXItYm9keS1jZWxsLWNvbnRlbnRbX25nY29udGVudC0lQ09NUCVdOm5vdCgubWF0LWNhbGVuZGFyLWJvZHktc2VsZWN0ZWQpOm5vdCgubWF0LWNhbGVuZGFyLWJvZHktY29tcGFyaXNvbi1pZGVudGljYWwpLCAuY2RrLXByb2dyYW0tZm9jdXNlZFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWNhbGVuZGFyLWJvZHktYWN0aXZlW19uZ2NvbnRlbnQtJUNPTVAlXSA+IC5tYXQtY2FsZW5kYXItYm9keS1jZWxsLWNvbnRlbnRbX25nY29udGVudC0lQ09NUCVdOm5vdCgubWF0LWNhbGVuZGFyLWJvZHktc2VsZWN0ZWQpOm5vdCgubWF0LWNhbGVuZGFyLWJvZHktY29tcGFyaXNvbi1pZGVudGljYWwpe2JhY2tncm91bmQtY29sb3I6cmdiYSgwLDAsMCwuMDQpfS5tYXQtY2FsZW5kYXItYm9keS1pbi1wcmV2aWV3W19uZ2NvbnRlbnQtJUNPTVAlXXtjb2xvcjpyZ2JhKDAsMCwwLC4yNCl9Lm1hdC1jYWxlbmRhci1ib2R5LXRvZGF5W19uZ2NvbnRlbnQtJUNPTVAlXTpub3QoLm1hdC1jYWxlbmRhci1ib2R5LXNlbGVjdGVkKTpub3QoLm1hdC1jYWxlbmRhci1ib2R5LWNvbXBhcmlzb24taWRlbnRpY2FsKXtib3JkZXItY29sb3I6cmdiYSgwLDAsMCwuMzgpfS5tYXQtY2FsZW5kYXItYm9keS1kaXNhYmxlZFtfbmdjb250ZW50LSVDT01QJV0gPiAubWF0LWNhbGVuZGFyLWJvZHktdG9kYXlbX25nY29udGVudC0lQ09NUCVdOm5vdCgubWF0LWNhbGVuZGFyLWJvZHktc2VsZWN0ZWQpOm5vdCgubWF0LWNhbGVuZGFyLWJvZHktY29tcGFyaXNvbi1pZGVudGljYWwpe2JvcmRlci1jb2xvcjpyZ2JhKDAsMCwwLC4xOCl9Lm1hdC1jYWxlbmRhci1ib2R5LWluLXJhbmdlW19uZ2NvbnRlbnQtJUNPTVAlXTo6YmVmb3Jle2JhY2tncm91bmQ6cmdiYSgyNDUsMTI0LDAsLjIpfS5tYXQtY2FsZW5kYXItYm9keS1jb21wYXJpc29uLWlkZW50aWNhbFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtY2FsZW5kYXItYm9keS1pbi1jb21wYXJpc29uLXJhbmdlW19uZ2NvbnRlbnQtJUNPTVAlXTo6YmVmb3Jle2JhY2tncm91bmQ6cmdiYSgyNDksMTcxLDAsLjIpfS5tYXQtY2FsZW5kYXItYm9keS1jb21wYXJpc29uLWJyaWRnZS1zdGFydFtfbmdjb250ZW50LSVDT01QJV06OmJlZm9yZSwgW2Rpcj1ydGxdW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtY2FsZW5kYXItYm9keS1jb21wYXJpc29uLWJyaWRnZS1lbmRbX25nY29udGVudC0lQ09NUCVdOjpiZWZvcmV7YmFja2dyb3VuZDpsaW5lYXItZ3JhZGllbnQodG8gcmlnaHQsIHJnYmEoMjQ1LCAxMjQsIDAsIDAuMikgNTAlLCByZ2JhKDI0OSwgMTcxLCAwLCAwLjIpIDUwJSl9Lm1hdC1jYWxlbmRhci1ib2R5LWNvbXBhcmlzb24tYnJpZGdlLWVuZFtfbmdjb250ZW50LSVDT01QJV06OmJlZm9yZSwgW2Rpcj1ydGxdW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtY2FsZW5kYXItYm9keS1jb21wYXJpc29uLWJyaWRnZS1zdGFydFtfbmdjb250ZW50LSVDT01QJV06OmJlZm9yZXtiYWNrZ3JvdW5kOmxpbmVhci1ncmFkaWVudCh0byBsZWZ0LCByZ2JhKDI0NSwgMTI0LCAwLCAwLjIpIDUwJSwgcmdiYSgyNDksIDE3MSwgMCwgMC4yKSA1MCUpfS5tYXQtY2FsZW5kYXItYm9keS1pbi1yYW5nZVtfbmdjb250ZW50LSVDT01QJV0gPiAubWF0LWNhbGVuZGFyLWJvZHktY29tcGFyaXNvbi1pZGVudGljYWxbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWNhbGVuZGFyLWJvZHktaW4tY29tcGFyaXNvbi1yYW5nZS5tYXQtY2FsZW5kYXItYm9keS1pbi1yYW5nZVtfbmdjb250ZW50LSVDT01QJV06OmFmdGVye2JhY2tncm91bmQ6I2E4ZGFiNX0ubWF0LWNhbGVuZGFyLWJvZHktY29tcGFyaXNvbi1pZGVudGljYWwubWF0LWNhbGVuZGFyLWJvZHktc2VsZWN0ZWRbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWNhbGVuZGFyLWJvZHktaW4tY29tcGFyaXNvbi1yYW5nZVtfbmdjb250ZW50LSVDT01QJV0gPiAubWF0LWNhbGVuZGFyLWJvZHktc2VsZWN0ZWRbX25nY29udGVudC0lQ09NUCVde2JhY2tncm91bmQ6IzQ2YTM1ZX0ubWF0LWNhbGVuZGFyLWJvZHktc2VsZWN0ZWRbX25nY29udGVudC0lQ09NUCVde2JhY2tncm91bmQtY29sb3I6I2Y1N2MwMDtjb2xvcjojZmZmfS5tYXQtY2FsZW5kYXItYm9keS1kaXNhYmxlZFtfbmdjb250ZW50LSVDT01QJV0gPiAubWF0LWNhbGVuZGFyLWJvZHktc2VsZWN0ZWRbX25nY29udGVudC0lQ09NUCVde2JhY2tncm91bmQtY29sb3I6cmdiYSgyNDUsMTI0LDAsLjQpfS5tYXQtY2FsZW5kYXItYm9keS10b2RheS5tYXQtY2FsZW5kYXItYm9keS1zZWxlY3RlZFtfbmdjb250ZW50LSVDT01QJV17Ym94LXNoYWRvdzppbnNldCAwIDAgMCAxcHggI2ZmZn0ubWF0LWRhdGVwaWNrZXItY29udGVudFtfbmdjb250ZW50LSVDT01QJV17Ym94LXNoYWRvdzowcHggMnB4IDRweCAtMXB4IHJnYmEoMCwgMCwgMCwgMC4yKSwwcHggNHB4IDVweCAwcHggcmdiYSgwLCAwLCAwLCAwLjE0KSwwcHggMXB4IDEwcHggMHB4IHJnYmEoMCwgMCwgMCwgMC4xMik7YmFja2dyb3VuZC1jb2xvcjojZmZmO2NvbG9yOiMyMTIxMjF9Lm1hdC1kYXRlcGlja2VyLWNvbnRlbnQubWF0LWFjY2VudFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWNhbGVuZGFyLWJvZHktaW4tcmFuZ2VbX25nY29udGVudC0lQ09NUCVdOjpiZWZvcmV7YmFja2dyb3VuZDpyZ2JhKDI1NSwxNTIsMCwuMil9Lm1hdC1kYXRlcGlja2VyLWNvbnRlbnQubWF0LWFjY2VudFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWNhbGVuZGFyLWJvZHktY29tcGFyaXNvbi1pZGVudGljYWxbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWRhdGVwaWNrZXItY29udGVudC5tYXQtYWNjZW50W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtY2FsZW5kYXItYm9keS1pbi1jb21wYXJpc29uLXJhbmdlW19uZ2NvbnRlbnQtJUNPTVAlXTo6YmVmb3Jle2JhY2tncm91bmQ6cmdiYSgyNDksMTcxLDAsLjIpfS5tYXQtZGF0ZXBpY2tlci1jb250ZW50Lm1hdC1hY2NlbnRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1jYWxlbmRhci1ib2R5LWNvbXBhcmlzb24tYnJpZGdlLXN0YXJ0W19uZ2NvbnRlbnQtJUNPTVAlXTo6YmVmb3JlLCAubWF0LWRhdGVwaWNrZXItY29udGVudC5tYXQtYWNjZW50W19uZ2NvbnRlbnQtJUNPTVAlXSAgIFtkaXI9cnRsXVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWNhbGVuZGFyLWJvZHktY29tcGFyaXNvbi1icmlkZ2UtZW5kW19uZ2NvbnRlbnQtJUNPTVAlXTo6YmVmb3Jle2JhY2tncm91bmQ6bGluZWFyLWdyYWRpZW50KHRvIHJpZ2h0LCByZ2JhKDI1NSwgMTUyLCAwLCAwLjIpIDUwJSwgcmdiYSgyNDksIDE3MSwgMCwgMC4yKSA1MCUpfS5tYXQtZGF0ZXBpY2tlci1jb250ZW50Lm1hdC1hY2NlbnRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1jYWxlbmRhci1ib2R5LWNvbXBhcmlzb24tYnJpZGdlLWVuZFtfbmdjb250ZW50LSVDT01QJV06OmJlZm9yZSwgLm1hdC1kYXRlcGlja2VyLWNvbnRlbnQubWF0LWFjY2VudFtfbmdjb250ZW50LSVDT01QJV0gICBbZGlyPXJ0bF1bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1jYWxlbmRhci1ib2R5LWNvbXBhcmlzb24tYnJpZGdlLXN0YXJ0W19uZ2NvbnRlbnQtJUNPTVAlXTo6YmVmb3Jle2JhY2tncm91bmQ6bGluZWFyLWdyYWRpZW50KHRvIGxlZnQsIHJnYmEoMjU1LCAxNTIsIDAsIDAuMikgNTAlLCByZ2JhKDI0OSwgMTcxLCAwLCAwLjIpIDUwJSl9Lm1hdC1kYXRlcGlja2VyLWNvbnRlbnQubWF0LWFjY2VudFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWNhbGVuZGFyLWJvZHktaW4tcmFuZ2VbX25nY29udGVudC0lQ09NUCVdID4gLm1hdC1jYWxlbmRhci1ib2R5LWNvbXBhcmlzb24taWRlbnRpY2FsW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1kYXRlcGlja2VyLWNvbnRlbnQubWF0LWFjY2VudFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWNhbGVuZGFyLWJvZHktaW4tY29tcGFyaXNvbi1yYW5nZS5tYXQtY2FsZW5kYXItYm9keS1pbi1yYW5nZVtfbmdjb250ZW50LSVDT01QJV06OmFmdGVye2JhY2tncm91bmQ6I2E4ZGFiNX0ubWF0LWRhdGVwaWNrZXItY29udGVudC5tYXQtYWNjZW50W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtY2FsZW5kYXItYm9keS1jb21wYXJpc29uLWlkZW50aWNhbC5tYXQtY2FsZW5kYXItYm9keS1zZWxlY3RlZFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtZGF0ZXBpY2tlci1jb250ZW50Lm1hdC1hY2NlbnRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1jYWxlbmRhci1ib2R5LWluLWNvbXBhcmlzb24tcmFuZ2VbX25nY29udGVudC0lQ09NUCVdID4gLm1hdC1jYWxlbmRhci1ib2R5LXNlbGVjdGVkW19uZ2NvbnRlbnQtJUNPTVAlXXtiYWNrZ3JvdW5kOiM0NmEzNWV9Lm1hdC1kYXRlcGlja2VyLWNvbnRlbnQubWF0LWFjY2VudFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWNhbGVuZGFyLWJvZHktc2VsZWN0ZWRbX25nY29udGVudC0lQ09NUCVde2JhY2tncm91bmQtY29sb3I6I2ZmOTgwMDtjb2xvcjojZmZmfS5tYXQtZGF0ZXBpY2tlci1jb250ZW50Lm1hdC1hY2NlbnRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1jYWxlbmRhci1ib2R5LWRpc2FibGVkW19uZ2NvbnRlbnQtJUNPTVAlXSA+IC5tYXQtY2FsZW5kYXItYm9keS1zZWxlY3RlZFtfbmdjb250ZW50LSVDT01QJV17YmFja2dyb3VuZC1jb2xvcjpyZ2JhKDI1NSwxNTIsMCwuNCl9Lm1hdC1kYXRlcGlja2VyLWNvbnRlbnQubWF0LWFjY2VudFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWNhbGVuZGFyLWJvZHktdG9kYXkubWF0LWNhbGVuZGFyLWJvZHktc2VsZWN0ZWRbX25nY29udGVudC0lQ09NUCVde2JveC1zaGFkb3c6aW5zZXQgMCAwIDAgMXB4ICNmZmZ9Lm1hdC1kYXRlcGlja2VyLWNvbnRlbnQubWF0LXdhcm5bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1jYWxlbmRhci1ib2R5LWluLXJhbmdlW19uZ2NvbnRlbnQtJUNPTVAlXTo6YmVmb3Jle2JhY2tncm91bmQ6cmdiYSgyNDQsNjcsNTQsLjIpfS5tYXQtZGF0ZXBpY2tlci1jb250ZW50Lm1hdC13YXJuW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtY2FsZW5kYXItYm9keS1jb21wYXJpc29uLWlkZW50aWNhbFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtZGF0ZXBpY2tlci1jb250ZW50Lm1hdC13YXJuW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtY2FsZW5kYXItYm9keS1pbi1jb21wYXJpc29uLXJhbmdlW19uZ2NvbnRlbnQtJUNPTVAlXTo6YmVmb3Jle2JhY2tncm91bmQ6cmdiYSgyNDksMTcxLDAsLjIpfS5tYXQtZGF0ZXBpY2tlci1jb250ZW50Lm1hdC13YXJuW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtY2FsZW5kYXItYm9keS1jb21wYXJpc29uLWJyaWRnZS1zdGFydFtfbmdjb250ZW50LSVDT01QJV06OmJlZm9yZSwgLm1hdC1kYXRlcGlja2VyLWNvbnRlbnQubWF0LXdhcm5bX25nY29udGVudC0lQ09NUCVdICAgW2Rpcj1ydGxdW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtY2FsZW5kYXItYm9keS1jb21wYXJpc29uLWJyaWRnZS1lbmRbX25nY29udGVudC0lQ09NUCVdOjpiZWZvcmV7YmFja2dyb3VuZDpsaW5lYXItZ3JhZGllbnQodG8gcmlnaHQsIHJnYmEoMjQ0LCA2NywgNTQsIDAuMikgNTAlLCByZ2JhKDI0OSwgMTcxLCAwLCAwLjIpIDUwJSl9Lm1hdC1kYXRlcGlja2VyLWNvbnRlbnQubWF0LXdhcm5bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1jYWxlbmRhci1ib2R5LWNvbXBhcmlzb24tYnJpZGdlLWVuZFtfbmdjb250ZW50LSVDT01QJV06OmJlZm9yZSwgLm1hdC1kYXRlcGlja2VyLWNvbnRlbnQubWF0LXdhcm5bX25nY29udGVudC0lQ09NUCVdICAgW2Rpcj1ydGxdW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtY2FsZW5kYXItYm9keS1jb21wYXJpc29uLWJyaWRnZS1zdGFydFtfbmdjb250ZW50LSVDT01QJV06OmJlZm9yZXtiYWNrZ3JvdW5kOmxpbmVhci1ncmFkaWVudCh0byBsZWZ0LCByZ2JhKDI0NCwgNjcsIDU0LCAwLjIpIDUwJSwgcmdiYSgyNDksIDE3MSwgMCwgMC4yKSA1MCUpfS5tYXQtZGF0ZXBpY2tlci1jb250ZW50Lm1hdC13YXJuW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtY2FsZW5kYXItYm9keS1pbi1yYW5nZVtfbmdjb250ZW50LSVDT01QJV0gPiAubWF0LWNhbGVuZGFyLWJvZHktY29tcGFyaXNvbi1pZGVudGljYWxbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWRhdGVwaWNrZXItY29udGVudC5tYXQtd2Fybltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWNhbGVuZGFyLWJvZHktaW4tY29tcGFyaXNvbi1yYW5nZS5tYXQtY2FsZW5kYXItYm9keS1pbi1yYW5nZVtfbmdjb250ZW50LSVDT01QJV06OmFmdGVye2JhY2tncm91bmQ6I2E4ZGFiNX0ubWF0LWRhdGVwaWNrZXItY29udGVudC5tYXQtd2Fybltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWNhbGVuZGFyLWJvZHktY29tcGFyaXNvbi1pZGVudGljYWwubWF0LWNhbGVuZGFyLWJvZHktc2VsZWN0ZWRbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWRhdGVwaWNrZXItY29udGVudC5tYXQtd2Fybltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWNhbGVuZGFyLWJvZHktaW4tY29tcGFyaXNvbi1yYW5nZVtfbmdjb250ZW50LSVDT01QJV0gPiAubWF0LWNhbGVuZGFyLWJvZHktc2VsZWN0ZWRbX25nY29udGVudC0lQ09NUCVde2JhY2tncm91bmQ6IzQ2YTM1ZX0ubWF0LWRhdGVwaWNrZXItY29udGVudC5tYXQtd2Fybltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWNhbGVuZGFyLWJvZHktc2VsZWN0ZWRbX25nY29udGVudC0lQ09NUCVde2JhY2tncm91bmQtY29sb3I6I2Y0NDMzNjtjb2xvcjojZmZmfS5tYXQtZGF0ZXBpY2tlci1jb250ZW50Lm1hdC13YXJuW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtY2FsZW5kYXItYm9keS1kaXNhYmxlZFtfbmdjb250ZW50LSVDT01QJV0gPiAubWF0LWNhbGVuZGFyLWJvZHktc2VsZWN0ZWRbX25nY29udGVudC0lQ09NUCVde2JhY2tncm91bmQtY29sb3I6cmdiYSgyNDQsNjcsNTQsLjQpfS5tYXQtZGF0ZXBpY2tlci1jb250ZW50Lm1hdC13YXJuW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtY2FsZW5kYXItYm9keS10b2RheS5tYXQtY2FsZW5kYXItYm9keS1zZWxlY3RlZFtfbmdjb250ZW50LSVDT01QJV17Ym94LXNoYWRvdzppbnNldCAwIDAgMCAxcHggI2ZmZn0ubWF0LWRhdGVwaWNrZXItY29udGVudC10b3VjaFtfbmdjb250ZW50LSVDT01QJV17Ym94LXNoYWRvdzowcHggMHB4IDBweCAwcHggcmdiYSgwLCAwLCAwLCAwLjIpLDBweCAwcHggMHB4IDBweCByZ2JhKDAsIDAsIDAsIDAuMTQpLDBweCAwcHggMHB4IDBweCByZ2JhKDAsIDAsIDAsIDAuMTIpfS5tYXQtZGF0ZXBpY2tlci10b2dnbGUtYWN0aXZlW19uZ2NvbnRlbnQtJUNPTVAlXXtjb2xvcjojZjU3YzAwfS5tYXQtZGF0ZXBpY2tlci10b2dnbGUtYWN0aXZlLm1hdC1hY2NlbnRbX25nY29udGVudC0lQ09NUCVde2NvbG9yOiNmZjk4MDB9Lm1hdC1kYXRlcGlja2VyLXRvZ2dsZS1hY3RpdmUubWF0LXdhcm5bX25nY29udGVudC0lQ09NUCVde2NvbG9yOiNmNDQzMzZ9Lm1hdC1kYXRlLXJhbmdlLWlucHV0LWlubmVyW2Rpc2FibGVkXVtfbmdjb250ZW50LSVDT01QJV17Y29sb3I6Izc1NzU3NX0ubWF0LWRpYWxvZy1jb250YWluZXJbX25nY29udGVudC0lQ09NUCVde2JveC1zaGFkb3c6MHB4IDExcHggMTVweCAtN3B4IHJnYmEoMCwgMCwgMCwgMC4yKSwwcHggMjRweCAzOHB4IDNweCByZ2JhKDAsIDAsIDAsIDAuMTQpLDBweCA5cHggNDZweCA4cHggcmdiYSgwLCAwLCAwLCAwLjEyKTtiYWNrZ3JvdW5kOiNmZmY7Y29sb3I6IzIxMjEyMX0ubWF0LWRpdmlkZXJbX25nY29udGVudC0lQ09NUCVde2JvcmRlci10b3AtY29sb3I6cmdiYSgwLDAsMCwuMTIpfS5tYXQtZGl2aWRlci12ZXJ0aWNhbFtfbmdjb250ZW50LSVDT01QJV17Ym9yZGVyLXJpZ2h0LWNvbG9yOnJnYmEoMCwwLDAsLjEyKX0ubWF0LWV4cGFuc2lvbi1wYW5lbFtfbmdjb250ZW50LSVDT01QJV17YmFja2dyb3VuZDojZmZmO2NvbG9yOiMyMTIxMjF9Lm1hdC1leHBhbnNpb24tcGFuZWxbX25nY29udGVudC0lQ09NUCVdOm5vdChbY2xhc3MqPW1hdC1lbGV2YXRpb24tel0pe2JveC1zaGFkb3c6MHB4IDNweCAxcHggLTJweCByZ2JhKDAsIDAsIDAsIDAuMiksMHB4IDJweCAycHggMHB4IHJnYmEoMCwgMCwgMCwgMC4xNCksMHB4IDFweCA1cHggMHB4IHJnYmEoMCwgMCwgMCwgMC4xMil9Lm1hdC1hY3Rpb24tcm93W19uZ2NvbnRlbnQtJUNPTVAlXXtib3JkZXItdG9wLWNvbG9yOnJnYmEoMCwwLDAsLjEyKX0ubWF0LWV4cGFuc2lvbi1wYW5lbFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWV4cGFuc2lvbi1wYW5lbC1oZWFkZXIuY2RrLWtleWJvYXJkLWZvY3VzZWRbX25nY29udGVudC0lQ09NUCVdOm5vdChbYXJpYS1kaXNhYmxlZD10cnVlXSksIC5tYXQtZXhwYW5zaW9uLXBhbmVsW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZXhwYW5zaW9uLXBhbmVsLWhlYWRlci5jZGstcHJvZ3JhbS1mb2N1c2VkW19uZ2NvbnRlbnQtJUNPTVAlXTpub3QoW2FyaWEtZGlzYWJsZWQ9dHJ1ZV0pLCAubWF0LWV4cGFuc2lvbi1wYW5lbFtfbmdjb250ZW50LSVDT01QJV06bm90KC5tYXQtZXhwYW5kZWQpICAgLm1hdC1leHBhbnNpb24tcGFuZWwtaGVhZGVyW19uZ2NvbnRlbnQtJUNPTVAlXTpob3Zlcjpub3QoW2FyaWEtZGlzYWJsZWQ9dHJ1ZV0pe2JhY2tncm91bmQ6cmdiYSgwLDAsMCwuMDQpfUBtZWRpYShob3Zlcjogbm9uZSl7Lm1hdC1leHBhbnNpb24tcGFuZWxbX25nY29udGVudC0lQ09NUCVdOm5vdCgubWF0LWV4cGFuZGVkKTpub3QoW2FyaWEtZGlzYWJsZWQ9dHJ1ZV0pICAgLm1hdC1leHBhbnNpb24tcGFuZWwtaGVhZGVyW19uZ2NvbnRlbnQtJUNPTVAlXTpob3ZlcntiYWNrZ3JvdW5kOiNmZmZ9fS5tYXQtZXhwYW5zaW9uLXBhbmVsLWhlYWRlci10aXRsZVtfbmdjb250ZW50LSVDT01QJV17Y29sb3I6IzIxMjEyMX0ubWF0LWV4cGFuc2lvbi1wYW5lbC1oZWFkZXItZGVzY3JpcHRpb25bX25nY29udGVudC0lQ09NUCVdLCAubWF0LWV4cGFuc2lvbi1pbmRpY2F0b3JbX25nY29udGVudC0lQ09NUCVdOjphZnRlcntjb2xvcjojNjE2MTYxfS5tYXQtZXhwYW5zaW9uLXBhbmVsLWhlYWRlclthcmlhLWRpc2FibGVkPXRydWVdW19uZ2NvbnRlbnQtJUNPTVAlXXtjb2xvcjpyZ2JhKDAsMCwwLC4yNil9Lm1hdC1leHBhbnNpb24tcGFuZWwtaGVhZGVyW2FyaWEtZGlzYWJsZWQ9dHJ1ZV1bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1leHBhbnNpb24tcGFuZWwtaGVhZGVyLXRpdGxlW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1leHBhbnNpb24tcGFuZWwtaGVhZGVyW2FyaWEtZGlzYWJsZWQ9dHJ1ZV1bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1leHBhbnNpb24tcGFuZWwtaGVhZGVyLWRlc2NyaXB0aW9uW19uZ2NvbnRlbnQtJUNPTVAlXXtjb2xvcjppbmhlcml0fS5tYXQtZXhwYW5zaW9uLXBhbmVsLWhlYWRlcltfbmdjb250ZW50LSVDT01QJV17aGVpZ2h0OjQ4cHh9Lm1hdC1leHBhbnNpb24tcGFuZWwtaGVhZGVyLm1hdC1leHBhbmRlZFtfbmdjb250ZW50LSVDT01QJV17aGVpZ2h0OjY0cHh9Lm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXtjb2xvcjpyZ2JhKDk3LDk3LDk3LC42KX0ubWF0LWhpbnRbX25nY29udGVudC0lQ09NUCVde2NvbG9yOnJnYmEoOTcsOTcsOTcsLjYpfS5tYXQtZm9ybS1maWVsZC5tYXQtZm9jdXNlZFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVde2NvbG9yOiNmNTdjMDB9Lm1hdC1mb3JtLWZpZWxkLm1hdC1mb2N1c2VkW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbC5tYXQtYWNjZW50W19uZ2NvbnRlbnQtJUNPTVAlXXtjb2xvcjojZmY5ODAwfS5tYXQtZm9ybS1maWVsZC5tYXQtZm9jdXNlZFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWwubWF0LXdhcm5bX25nY29udGVudC0lQ09NUCVde2NvbG9yOiNmNDQzMzZ9Lm1hdC1mb2N1c2VkW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1yZXF1aXJlZC1tYXJrZXJbX25nY29udGVudC0lQ09NUCVde2NvbG9yOiNmZjk4MDB9Lm1hdC1mb3JtLWZpZWxkLXJpcHBsZVtfbmdjb250ZW50LSVDT01QJV17YmFja2dyb3VuZC1jb2xvcjpyZ2JhKDAsMCwwLC44Nyl9Lm1hdC1mb3JtLWZpZWxkLm1hdC1mb2N1c2VkW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1yaXBwbGVbX25nY29udGVudC0lQ09NUCVde2JhY2tncm91bmQtY29sb3I6I2Y1N2MwMH0ubWF0LWZvcm0tZmllbGQubWF0LWZvY3VzZWRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLXJpcHBsZS5tYXQtYWNjZW50W19uZ2NvbnRlbnQtJUNPTVAlXXtiYWNrZ3JvdW5kLWNvbG9yOiNmZjk4MDB9Lm1hdC1mb3JtLWZpZWxkLm1hdC1mb2N1c2VkW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1yaXBwbGUubWF0LXdhcm5bX25nY29udGVudC0lQ09NUCVde2JhY2tncm91bmQtY29sb3I6I2Y0NDMzNn0ubWF0LWZvcm0tZmllbGQtdHlwZS1tYXQtbmF0aXZlLXNlbGVjdC5tYXQtZm9jdXNlZFtfbmdjb250ZW50LSVDT01QJV06bm90KC5tYXQtZm9ybS1maWVsZC1pbnZhbGlkKSAgIC5tYXQtZm9ybS1maWVsZC1pbmZpeFtfbmdjb250ZW50LSVDT01QJV06OmFmdGVye2NvbG9yOiNmNTdjMDB9Lm1hdC1mb3JtLWZpZWxkLXR5cGUtbWF0LW5hdGl2ZS1zZWxlY3QubWF0LWZvY3VzZWRbX25nY29udGVudC0lQ09NUCVdOm5vdCgubWF0LWZvcm0tZmllbGQtaW52YWxpZCkubWF0LWFjY2VudCAgIC5tYXQtZm9ybS1maWVsZC1pbmZpeFtfbmdjb250ZW50LSVDT01QJV06OmFmdGVye2NvbG9yOiNmZjk4MDB9Lm1hdC1mb3JtLWZpZWxkLXR5cGUtbWF0LW5hdGl2ZS1zZWxlY3QubWF0LWZvY3VzZWRbX25nY29udGVudC0lQ09NUCVdOm5vdCgubWF0LWZvcm0tZmllbGQtaW52YWxpZCkubWF0LXdhcm4gICAubWF0LWZvcm0tZmllbGQtaW5maXhbX25nY29udGVudC0lQ09NUCVdOjphZnRlcntjb2xvcjojZjQ0MzM2fS5tYXQtZm9ybS1maWVsZC5tYXQtZm9ybS1maWVsZC1pbnZhbGlkW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17Y29sb3I6I2Y0NDMzNn0ubWF0LWZvcm0tZmllbGQubWF0LWZvcm0tZmllbGQtaW52YWxpZFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWwubWF0LWFjY2VudFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtZm9ybS1maWVsZC5tYXQtZm9ybS1maWVsZC1pbnZhbGlkW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtcmVxdWlyZWQtbWFya2VyW19uZ2NvbnRlbnQtJUNPTVAlXXtjb2xvcjojZjQ0MzM2fS5tYXQtZm9ybS1maWVsZC5tYXQtZm9ybS1maWVsZC1pbnZhbGlkW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1yaXBwbGVbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWZvcm0tZmllbGQubWF0LWZvcm0tZmllbGQtaW52YWxpZFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtcmlwcGxlLm1hdC1hY2NlbnRbX25nY29udGVudC0lQ09NUCVde2JhY2tncm91bmQtY29sb3I6I2Y0NDMzNn0ubWF0LWVycm9yW19uZ2NvbnRlbnQtJUNPTVAlXXtjb2xvcjojZjQ0MzM2fS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWxlZ2FjeVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVde2NvbG9yOiM2MTYxNjF9Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtbGVnYWN5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaGludFtfbmdjb250ZW50LSVDT01QJV17Y29sb3I6IzYxNjE2MX0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1sZWdhY3lbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLXVuZGVybGluZVtfbmdjb250ZW50LSVDT01QJV17YmFja2dyb3VuZC1jb2xvcjpyZ2JhKDAsMCwwLC40Mil9Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtbGVnYWN5Lm1hdC1mb3JtLWZpZWxkLWRpc2FibGVkW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC11bmRlcmxpbmVbX25nY29udGVudC0lQ09NUCVde2JhY2tncm91bmQtaW1hZ2U6bGluZWFyLWdyYWRpZW50KHRvIHJpZ2h0LCByZ2JhKDAsIDAsIDAsIDAuNDIpIDAlLCByZ2JhKDAsIDAsIDAsIDAuNDIpIDMzJSwgdHJhbnNwYXJlbnQgMCUpO2JhY2tncm91bmQtc2l6ZTo0cHggMTAwJTtiYWNrZ3JvdW5kLXJlcGVhdDpyZXBlYXQteH0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1zdGFuZGFyZFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtdW5kZXJsaW5lW19uZ2NvbnRlbnQtJUNPTVAlXXtiYWNrZ3JvdW5kLWNvbG9yOnJnYmEoMCwwLDAsLjQyKX0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1zdGFuZGFyZC5tYXQtZm9ybS1maWVsZC1kaXNhYmxlZFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtdW5kZXJsaW5lW19uZ2NvbnRlbnQtJUNPTVAlXXtiYWNrZ3JvdW5kLWltYWdlOmxpbmVhci1ncmFkaWVudCh0byByaWdodCwgcmdiYSgwLCAwLCAwLCAwLjQyKSAwJSwgcmdiYSgwLCAwLCAwLCAwLjQyKSAzMyUsIHRyYW5zcGFyZW50IDAlKTtiYWNrZ3JvdW5kLXNpemU6NHB4IDEwMCU7YmFja2dyb3VuZC1yZXBlYXQ6cmVwZWF0LXh9Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtZmlsbFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtZmxleFtfbmdjb250ZW50LSVDT01QJV17YmFja2dyb3VuZC1jb2xvcjpyZ2JhKDAsMCwwLC4wNCl9Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtZmlsbC5tYXQtZm9ybS1maWVsZC1kaXNhYmxlZFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtZmxleFtfbmdjb250ZW50LSVDT01QJV17YmFja2dyb3VuZC1jb2xvcjpyZ2JhKDAsMCwwLC4wMil9Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtZmlsbFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtdW5kZXJsaW5lW19uZ2NvbnRlbnQtJUNPTVAlXTo6YmVmb3Jle2JhY2tncm91bmQtY29sb3I6cmdiYSgwLDAsMCwuNDIpfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWZpbGwubWF0LWZvcm0tZmllbGQtZGlzYWJsZWRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXtjb2xvcjojNzU3NTc1fS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWZpbGwubWF0LWZvcm0tZmllbGQtZGlzYWJsZWRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLXVuZGVybGluZVtfbmdjb250ZW50LSVDT01QJV06OmJlZm9yZXtiYWNrZ3JvdW5kLWNvbG9yOnRyYW5zcGFyZW50fS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLW91dGxpbmVbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLW91dGxpbmVbX25nY29udGVudC0lQ09NUCVde2NvbG9yOnJnYmEoMCwwLDAsLjEyKX0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1vdXRsaW5lW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1vdXRsaW5lLXRoaWNrW19uZ2NvbnRlbnQtJUNPTVAlXXtjb2xvcjpyZ2JhKDAsMCwwLC44Nyl9Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2Utb3V0bGluZS5tYXQtZm9jdXNlZFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtb3V0bGluZS10aGlja1tfbmdjb250ZW50LSVDT01QJV17Y29sb3I6I2Y1N2MwMH0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1vdXRsaW5lLm1hdC1mb2N1c2VkLm1hdC1hY2NlbnRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLW91dGxpbmUtdGhpY2tbX25nY29udGVudC0lQ09NUCVde2NvbG9yOiNmZjk4MDB9Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2Utb3V0bGluZS5tYXQtZm9jdXNlZC5tYXQtd2Fybltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtb3V0bGluZS10aGlja1tfbmdjb250ZW50LSVDT01QJV17Y29sb3I6I2Y0NDMzNn0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1vdXRsaW5lLm1hdC1mb3JtLWZpZWxkLWludmFsaWQubWF0LWZvcm0tZmllbGQtaW52YWxpZFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtb3V0bGluZS10aGlja1tfbmdjb250ZW50LSVDT01QJV17Y29sb3I6I2Y0NDMzNn0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1vdXRsaW5lLm1hdC1mb3JtLWZpZWxkLWRpc2FibGVkW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17Y29sb3I6Izc1NzU3NX0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1vdXRsaW5lLm1hdC1mb3JtLWZpZWxkLWRpc2FibGVkW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1vdXRsaW5lW19uZ2NvbnRlbnQtJUNPTVAlXXtjb2xvcjpyZ2JhKDAsMCwwLC4wNil9Lm1hdC1pY29uLm1hdC1wcmltYXJ5W19uZ2NvbnRlbnQtJUNPTVAlXXtjb2xvcjojZjU3YzAwfS5tYXQtaWNvbi5tYXQtYWNjZW50W19uZ2NvbnRlbnQtJUNPTVAlXXtjb2xvcjojZmY5ODAwfS5tYXQtaWNvbi5tYXQtd2Fybltfbmdjb250ZW50LSVDT01QJV17Y29sb3I6I2Y0NDMzNn0ubWF0LWZvcm0tZmllbGQtdHlwZS1tYXQtbmF0aXZlLXNlbGVjdFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtaW5maXhbX25nY29udGVudC0lQ09NUCVdOjphZnRlcntjb2xvcjojNjE2MTYxfS5tYXQtaW5wdXQtZWxlbWVudFtfbmdjb250ZW50LSVDT01QJV06ZGlzYWJsZWQsIC5tYXQtZm9ybS1maWVsZC10eXBlLW1hdC1uYXRpdmUtc2VsZWN0Lm1hdC1mb3JtLWZpZWxkLWRpc2FibGVkW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1pbmZpeFtfbmdjb250ZW50LSVDT01QJV06OmFmdGVye2NvbG9yOiM3NTc1NzV9Lm1hdC1pbnB1dC1lbGVtZW50W19uZ2NvbnRlbnQtJUNPTVAlXXtjYXJldC1jb2xvcjojZjU3YzAwfS5tYXQtaW5wdXQtZWxlbWVudFtfbmdjb250ZW50LSVDT01QJV06OnBsYWNlaG9sZGVye2NvbG9yOnJnYmEoOTcsOTcsOTcsLjQyKX0ubWF0LWlucHV0LWVsZW1lbnRbX25nY29udGVudC0lQ09NUCVdOjotbW96LXBsYWNlaG9sZGVye2NvbG9yOnJnYmEoOTcsOTcsOTcsLjQyKX0ubWF0LWlucHV0LWVsZW1lbnRbX25nY29udGVudC0lQ09NUCVdOjotd2Via2l0LWlucHV0LXBsYWNlaG9sZGVye2NvbG9yOnJnYmEoOTcsOTcsOTcsLjQyKX0ubWF0LWlucHV0LWVsZW1lbnRbX25nY29udGVudC0lQ09NUCVdOi1tcy1pbnB1dC1wbGFjZWhvbGRlcntjb2xvcjpyZ2JhKDk3LDk3LDk3LC40Mil9Lm1hdC1mb3JtLWZpZWxkLm1hdC1hY2NlbnRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pbnB1dC1lbGVtZW50W19uZ2NvbnRlbnQtJUNPTVAlXXtjYXJldC1jb2xvcjojZmY5ODAwfS5tYXQtZm9ybS1maWVsZC5tYXQtd2Fybltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWlucHV0LWVsZW1lbnRbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWZvcm0tZmllbGQtaW52YWxpZFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWlucHV0LWVsZW1lbnRbX25nY29udGVudC0lQ09NUCVde2NhcmV0LWNvbG9yOiNmNDQzMzZ9Lm1hdC1mb3JtLWZpZWxkLXR5cGUtbWF0LW5hdGl2ZS1zZWxlY3QubWF0LWZvcm0tZmllbGQtaW52YWxpZFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtaW5maXhbX25nY29udGVudC0lQ09NUCVdOjphZnRlcntjb2xvcjojZjQ0MzM2fS5tYXQtbGlzdC1iYXNlW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGlzdC1pdGVtW19uZ2NvbnRlbnQtJUNPTVAlXXtjb2xvcjojMjEyMTIxfS5tYXQtbGlzdC1iYXNlW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGlzdC1vcHRpb25bX25nY29udGVudC0lQ09NUCVde2NvbG9yOiMyMTIxMjF9Lm1hdC1saXN0LWJhc2VbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1zdWJoZWFkZXJbX25nY29udGVudC0lQ09NUCVde2NvbG9yOiM2MTYxNjF9Lm1hdC1saXN0LWl0ZW0tZGlzYWJsZWRbX25nY29udGVudC0lQ09NUCVde2JhY2tncm91bmQtY29sb3I6I2VlZX0ubWF0LWxpc3Qtb3B0aW9uW19uZ2NvbnRlbnQtJUNPTVAlXTpob3ZlciwgLm1hdC1saXN0LW9wdGlvbltfbmdjb250ZW50LSVDT01QJV06Zm9jdXMsIC5tYXQtbmF2LWxpc3RbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saXN0LWl0ZW1bX25nY29udGVudC0lQ09NUCVdOmhvdmVyLCAubWF0LW5hdi1saXN0W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGlzdC1pdGVtW19uZ2NvbnRlbnQtJUNPTVAlXTpmb2N1cywgLm1hdC1hY3Rpb24tbGlzdFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpc3QtaXRlbVtfbmdjb250ZW50LSVDT01QJV06aG92ZXIsIC5tYXQtYWN0aW9uLWxpc3RbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saXN0LWl0ZW1bX25nY29udGVudC0lQ09NUCVdOmZvY3Vze2JhY2tncm91bmQ6cmdiYSgwLDAsMCwuMDQpfS5tYXQtbGlzdC1zaW5nbGUtc2VsZWN0ZWQtb3B0aW9uW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1saXN0LXNpbmdsZS1zZWxlY3RlZC1vcHRpb25bX25nY29udGVudC0lQ09NUCVdOmhvdmVyLCAubWF0LWxpc3Qtc2luZ2xlLXNlbGVjdGVkLW9wdGlvbltfbmdjb250ZW50LSVDT01QJV06Zm9jdXN7YmFja2dyb3VuZDpyZ2JhKDAsMCwwLC4xMil9Lm1hdC1tZW51LXBhbmVsW19uZ2NvbnRlbnQtJUNPTVAlXXtiYWNrZ3JvdW5kOiNmZmZ9Lm1hdC1tZW51LXBhbmVsW19uZ2NvbnRlbnQtJUNPTVAlXTpub3QoW2NsYXNzKj1tYXQtZWxldmF0aW9uLXpdKXtib3gtc2hhZG93OjBweCAycHggNHB4IC0xcHggcmdiYSgwLCAwLCAwLCAwLjIpLDBweCA0cHggNXB4IDBweCByZ2JhKDAsIDAsIDAsIDAuMTQpLDBweCAxcHggMTBweCAwcHggcmdiYSgwLCAwLCAwLCAwLjEyKX0ubWF0LW1lbnUtaXRlbVtfbmdjb250ZW50LSVDT01QJV17YmFja2dyb3VuZDp0cmFuc3BhcmVudDtjb2xvcjojMjEyMTIxfS5tYXQtbWVudS1pdGVtW2Rpc2FibGVkXVtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtbWVudS1pdGVtW2Rpc2FibGVkXVtfbmdjb250ZW50LSVDT01QJV06OmFmdGVye2NvbG9yOnJnYmEoMCwwLDAsLjM4KX0ubWF0LW1lbnUtaXRlbVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWljb24tbm8tY29sb3JbX25nY29udGVudC0lQ09NUCVdLCAubWF0LW1lbnUtaXRlbS1zdWJtZW51LXRyaWdnZXJbX25nY29udGVudC0lQ09NUCVdOjphZnRlcntjb2xvcjpyZ2JhKDAsMCwwLC41NCl9Lm1hdC1tZW51LWl0ZW1bX25nY29udGVudC0lQ09NUCVdOmhvdmVyOm5vdChbZGlzYWJsZWRdKSwgLm1hdC1tZW51LWl0ZW0uY2RrLXByb2dyYW0tZm9jdXNlZFtfbmdjb250ZW50LSVDT01QJV06bm90KFtkaXNhYmxlZF0pLCAubWF0LW1lbnUtaXRlbS5jZGsta2V5Ym9hcmQtZm9jdXNlZFtfbmdjb250ZW50LSVDT01QJV06bm90KFtkaXNhYmxlZF0pLCAubWF0LW1lbnUtaXRlbS1oaWdobGlnaHRlZFtfbmdjb250ZW50LSVDT01QJV06bm90KFtkaXNhYmxlZF0pe2JhY2tncm91bmQ6cmdiYSgwLDAsMCwuMDQpfS5tYXQtcGFnaW5hdG9yW19uZ2NvbnRlbnQtJUNPTVAlXXtiYWNrZ3JvdW5kOiNmZmZ9Lm1hdC1wYWdpbmF0b3JbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXBhZ2luYXRvci1wYWdlLXNpemVbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1zZWxlY3QtdHJpZ2dlcltfbmdjb250ZW50LSVDT01QJV17Y29sb3I6IzYxNjE2MX0ubWF0LXBhZ2luYXRvci1kZWNyZW1lbnRbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXBhZ2luYXRvci1pbmNyZW1lbnRbX25nY29udGVudC0lQ09NUCVde2JvcmRlci10b3A6MnB4IHNvbGlkIHJnYmEoMCwwLDAsLjU0KTtib3JkZXItcmlnaHQ6MnB4IHNvbGlkIHJnYmEoMCwwLDAsLjU0KX0ubWF0LXBhZ2luYXRvci1maXJzdFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtcGFnaW5hdG9yLWxhc3RbX25nY29udGVudC0lQ09NUCVde2JvcmRlci10b3A6MnB4IHNvbGlkIHJnYmEoMCwwLDAsLjU0KX0ubWF0LWljb24tYnV0dG9uW2Rpc2FibGVkXVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXBhZ2luYXRvci1kZWNyZW1lbnRbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWljb24tYnV0dG9uW2Rpc2FibGVkXVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXBhZ2luYXRvci1pbmNyZW1lbnRbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWljb24tYnV0dG9uW2Rpc2FibGVkXVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXBhZ2luYXRvci1maXJzdFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtaWNvbi1idXR0b25bZGlzYWJsZWRdW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtcGFnaW5hdG9yLWxhc3RbX25nY29udGVudC0lQ09NUCVde2JvcmRlci1jb2xvcjpyZ2JhKDAsMCwwLC4zOCl9Lm1hdC1wYWdpbmF0b3ItY29udGFpbmVyW19uZ2NvbnRlbnQtJUNPTVAlXXttaW4taGVpZ2h0OjU2cHh9Lm1hdC1wcm9ncmVzcy1iYXItYmFja2dyb3VuZFtfbmdjb250ZW50LSVDT01QJV17ZmlsbDojZmY5ODAwfS5tYXQtcHJvZ3Jlc3MtYmFyLWJ1ZmZlcltfbmdjb250ZW50LSVDT01QJV17YmFja2dyb3VuZC1jb2xvcjojZmY5ODAwfS5tYXQtcHJvZ3Jlc3MtYmFyLWZpbGxbX25nY29udGVudC0lQ09NUCVdOjphZnRlcntiYWNrZ3JvdW5kLWNvbG9yOiNmNTdjMDB9Lm1hdC1wcm9ncmVzcy1iYXIubWF0LWFjY2VudFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXByb2dyZXNzLWJhci1iYWNrZ3JvdW5kW19uZ2NvbnRlbnQtJUNPTVAlXXtmaWxsOiNmZjk4MDB9Lm1hdC1wcm9ncmVzcy1iYXIubWF0LWFjY2VudFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXByb2dyZXNzLWJhci1idWZmZXJbX25nY29udGVudC0lQ09NUCVde2JhY2tncm91bmQtY29sb3I6I2ZmOTgwMH0ubWF0LXByb2dyZXNzLWJhci5tYXQtYWNjZW50W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtcHJvZ3Jlc3MtYmFyLWZpbGxbX25nY29udGVudC0lQ09NUCVdOjphZnRlcntiYWNrZ3JvdW5kLWNvbG9yOiNmZjk4MDB9Lm1hdC1wcm9ncmVzcy1iYXIubWF0LXdhcm5bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1wcm9ncmVzcy1iYXItYmFja2dyb3VuZFtfbmdjb250ZW50LSVDT01QJV17ZmlsbDojZmZjZGQyfS5tYXQtcHJvZ3Jlc3MtYmFyLm1hdC13YXJuW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtcHJvZ3Jlc3MtYmFyLWJ1ZmZlcltfbmdjb250ZW50LSVDT01QJV17YmFja2dyb3VuZC1jb2xvcjojZmZjZGQyfS5tYXQtcHJvZ3Jlc3MtYmFyLm1hdC13YXJuW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtcHJvZ3Jlc3MtYmFyLWZpbGxbX25nY29udGVudC0lQ09NUCVdOjphZnRlcntiYWNrZ3JvdW5kLWNvbG9yOiNmNDQzMzZ9Lm1hdC1wcm9ncmVzcy1zcGlubmVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIGNpcmNsZVtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtc3Bpbm5lcltfbmdjb250ZW50LSVDT01QJV0gICBjaXJjbGVbX25nY29udGVudC0lQ09NUCVde3N0cm9rZTojZjU3YzAwfS5tYXQtcHJvZ3Jlc3Mtc3Bpbm5lci5tYXQtYWNjZW50W19uZ2NvbnRlbnQtJUNPTVAlXSAgIGNpcmNsZVtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtc3Bpbm5lci5tYXQtYWNjZW50W19uZ2NvbnRlbnQtJUNPTVAlXSAgIGNpcmNsZVtfbmdjb250ZW50LSVDT01QJV17c3Ryb2tlOiNmZjk4MDB9Lm1hdC1wcm9ncmVzcy1zcGlubmVyLm1hdC13YXJuW19uZ2NvbnRlbnQtJUNPTVAlXSAgIGNpcmNsZVtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtc3Bpbm5lci5tYXQtd2Fybltfbmdjb250ZW50LSVDT01QJV0gICBjaXJjbGVbX25nY29udGVudC0lQ09NUCVde3N0cm9rZTojZjQ0MzM2fS5tYXQtcmFkaW8tb3V0ZXItY2lyY2xlW19uZ2NvbnRlbnQtJUNPTVAlXXtib3JkZXItY29sb3I6IzYxNjE2MX0ubWF0LXJhZGlvLWJ1dHRvbi5tYXQtcHJpbWFyeS5tYXQtcmFkaW8tY2hlY2tlZFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXJhZGlvLW91dGVyLWNpcmNsZVtfbmdjb250ZW50LSVDT01QJV17Ym9yZGVyLWNvbG9yOiNmNTdjMDB9Lm1hdC1yYWRpby1idXR0b24ubWF0LXByaW1hcnlbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1yYWRpby1pbm5lci1jaXJjbGVbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXJhZGlvLWJ1dHRvbi5tYXQtcHJpbWFyeVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXJhZGlvLXJpcHBsZVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXJpcHBsZS1lbGVtZW50W19uZ2NvbnRlbnQtJUNPTVAlXTpub3QoLm1hdC1yYWRpby1wZXJzaXN0ZW50LXJpcHBsZSksIC5tYXQtcmFkaW8tYnV0dG9uLm1hdC1wcmltYXJ5Lm1hdC1yYWRpby1jaGVja2VkW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtcmFkaW8tcGVyc2lzdGVudC1yaXBwbGVbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXJhZGlvLWJ1dHRvbi5tYXQtcHJpbWFyeVtfbmdjb250ZW50LSVDT01QJV06YWN0aXZlICAgLm1hdC1yYWRpby1wZXJzaXN0ZW50LXJpcHBsZVtfbmdjb250ZW50LSVDT01QJV17YmFja2dyb3VuZC1jb2xvcjojZjU3YzAwfS5tYXQtcmFkaW8tYnV0dG9uLm1hdC1hY2NlbnQubWF0LXJhZGlvLWNoZWNrZWRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1yYWRpby1vdXRlci1jaXJjbGVbX25nY29udGVudC0lQ09NUCVde2JvcmRlci1jb2xvcjojZmY5ODAwfS5tYXQtcmFkaW8tYnV0dG9uLm1hdC1hY2NlbnRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1yYWRpby1pbm5lci1jaXJjbGVbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXJhZGlvLWJ1dHRvbi5tYXQtYWNjZW50W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtcmFkaW8tcmlwcGxlW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtcmlwcGxlLWVsZW1lbnRbX25nY29udGVudC0lQ09NUCVdOm5vdCgubWF0LXJhZGlvLXBlcnNpc3RlbnQtcmlwcGxlKSwgLm1hdC1yYWRpby1idXR0b24ubWF0LWFjY2VudC5tYXQtcmFkaW8tY2hlY2tlZFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXJhZGlvLXBlcnNpc3RlbnQtcmlwcGxlW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1yYWRpby1idXR0b24ubWF0LWFjY2VudFtfbmdjb250ZW50LSVDT01QJV06YWN0aXZlICAgLm1hdC1yYWRpby1wZXJzaXN0ZW50LXJpcHBsZVtfbmdjb250ZW50LSVDT01QJV17YmFja2dyb3VuZC1jb2xvcjojZmY5ODAwfS5tYXQtcmFkaW8tYnV0dG9uLm1hdC13YXJuLm1hdC1yYWRpby1jaGVja2VkW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtcmFkaW8tb3V0ZXItY2lyY2xlW19uZ2NvbnRlbnQtJUNPTVAlXXtib3JkZXItY29sb3I6I2Y0NDMzNn0ubWF0LXJhZGlvLWJ1dHRvbi5tYXQtd2Fybltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXJhZGlvLWlubmVyLWNpcmNsZVtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtcmFkaW8tYnV0dG9uLm1hdC13YXJuW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtcmFkaW8tcmlwcGxlW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtcmlwcGxlLWVsZW1lbnRbX25nY29udGVudC0lQ09NUCVdOm5vdCgubWF0LXJhZGlvLXBlcnNpc3RlbnQtcmlwcGxlKSwgLm1hdC1yYWRpby1idXR0b24ubWF0LXdhcm4ubWF0LXJhZGlvLWNoZWNrZWRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1yYWRpby1wZXJzaXN0ZW50LXJpcHBsZVtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtcmFkaW8tYnV0dG9uLm1hdC13YXJuW19uZ2NvbnRlbnQtJUNPTVAlXTphY3RpdmUgICAubWF0LXJhZGlvLXBlcnNpc3RlbnQtcmlwcGxlW19uZ2NvbnRlbnQtJUNPTVAlXXtiYWNrZ3JvdW5kLWNvbG9yOiNmNDQzMzZ9Lm1hdC1yYWRpby1idXR0b24ubWF0LXJhZGlvLWRpc2FibGVkLm1hdC1yYWRpby1jaGVja2VkW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtcmFkaW8tb3V0ZXItY2lyY2xlW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1yYWRpby1idXR0b24ubWF0LXJhZGlvLWRpc2FibGVkW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtcmFkaW8tb3V0ZXItY2lyY2xlW19uZ2NvbnRlbnQtJUNPTVAlXXtib3JkZXItY29sb3I6cmdiYSgwLDAsMCwuMzgpfS5tYXQtcmFkaW8tYnV0dG9uLm1hdC1yYWRpby1kaXNhYmxlZFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXJhZGlvLXJpcHBsZVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXJpcHBsZS1lbGVtZW50W19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1yYWRpby1idXR0b24ubWF0LXJhZGlvLWRpc2FibGVkW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtcmFkaW8taW5uZXItY2lyY2xlW19uZ2NvbnRlbnQtJUNPTVAlXXtiYWNrZ3JvdW5kLWNvbG9yOnJnYmEoMCwwLDAsLjM4KX0ubWF0LXJhZGlvLWJ1dHRvbi5tYXQtcmFkaW8tZGlzYWJsZWRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1yYWRpby1sYWJlbC1jb250ZW50W19uZ2NvbnRlbnQtJUNPTVAlXXtjb2xvcjpyZ2JhKDAsMCwwLC4zOCl9Lm1hdC1yYWRpby1idXR0b25bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1yaXBwbGUtZWxlbWVudFtfbmdjb250ZW50LSVDT01QJV17YmFja2dyb3VuZC1jb2xvcjojMDAwfS5tYXQtc2VsZWN0LXZhbHVlW19uZ2NvbnRlbnQtJUNPTVAlXXtjb2xvcjojMjEyMTIxfS5tYXQtc2VsZWN0LXBsYWNlaG9sZGVyW19uZ2NvbnRlbnQtJUNPTVAlXXtjb2xvcjpyZ2JhKDk3LDk3LDk3LC40Mil9Lm1hdC1zZWxlY3QtZGlzYWJsZWRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1zZWxlY3QtdmFsdWVbX25nY29udGVudC0lQ09NUCVde2NvbG9yOiM3NTc1NzV9Lm1hdC1zZWxlY3QtYXJyb3dbX25nY29udGVudC0lQ09NUCVde2NvbG9yOiM2MTYxNjF9Lm1hdC1zZWxlY3QtcGFuZWxbX25nY29udGVudC0lQ09NUCVde2JhY2tncm91bmQ6I2ZmZn0ubWF0LXNlbGVjdC1wYW5lbFtfbmdjb250ZW50LSVDT01QJV06bm90KFtjbGFzcyo9bWF0LWVsZXZhdGlvbi16XSl7Ym94LXNoYWRvdzowcHggMnB4IDRweCAtMXB4IHJnYmEoMCwgMCwgMCwgMC4yKSwwcHggNHB4IDVweCAwcHggcmdiYSgwLCAwLCAwLCAwLjE0KSwwcHggMXB4IDEwcHggMHB4IHJnYmEoMCwgMCwgMCwgMC4xMil9Lm1hdC1zZWxlY3QtcGFuZWxbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1vcHRpb24ubWF0LXNlbGVjdGVkW19uZ2NvbnRlbnQtJUNPTVAlXTpub3QoLm1hdC1vcHRpb24tbXVsdGlwbGUpe2JhY2tncm91bmQ6cmdiYSgwLDAsMCwuMTIpfS5tYXQtZm9ybS1maWVsZC5tYXQtZm9jdXNlZC5tYXQtcHJpbWFyeVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXNlbGVjdC1hcnJvd1tfbmdjb250ZW50LSVDT01QJV17Y29sb3I6I2Y1N2MwMH0ubWF0LWZvcm0tZmllbGQubWF0LWZvY3VzZWQubWF0LWFjY2VudFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXNlbGVjdC1hcnJvd1tfbmdjb250ZW50LSVDT01QJV17Y29sb3I6I2ZmOTgwMH0ubWF0LWZvcm0tZmllbGQubWF0LWZvY3VzZWQubWF0LXdhcm5bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1zZWxlY3QtYXJyb3dbX25nY29udGVudC0lQ09NUCVde2NvbG9yOiNmNDQzMzZ9Lm1hdC1mb3JtLWZpZWxkW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtc2VsZWN0Lm1hdC1zZWxlY3QtaW52YWxpZFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXNlbGVjdC1hcnJvd1tfbmdjb250ZW50LSVDT01QJV17Y29sb3I6I2Y0NDMzNn0ubWF0LWZvcm0tZmllbGRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1zZWxlY3QubWF0LXNlbGVjdC1kaXNhYmxlZFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXNlbGVjdC1hcnJvd1tfbmdjb250ZW50LSVDT01QJV17Y29sb3I6Izc1NzU3NX0ubWF0LWRyYXdlci1jb250YWluZXJbX25nY29udGVudC0lQ09NUCVde2JhY2tncm91bmQtY29sb3I6I2ZhZmFmYTtjb2xvcjojMjEyMTIxfS5tYXQtZHJhd2VyW19uZ2NvbnRlbnQtJUNPTVAlXXtiYWNrZ3JvdW5kLWNvbG9yOiNmZmY7Y29sb3I6IzIxMjEyMX0ubWF0LWRyYXdlci5tYXQtZHJhd2VyLXB1c2hbX25nY29udGVudC0lQ09NUCVde2JhY2tncm91bmQtY29sb3I6I2ZmZn0ubWF0LWRyYXdlcltfbmdjb250ZW50LSVDT01QJV06bm90KC5tYXQtZHJhd2VyLXNpZGUpe2JveC1zaGFkb3c6MHB4IDhweCAxMHB4IC01cHggcmdiYSgwLCAwLCAwLCAwLjIpLDBweCAxNnB4IDI0cHggMnB4IHJnYmEoMCwgMCwgMCwgMC4xNCksMHB4IDZweCAzMHB4IDVweCByZ2JhKDAsIDAsIDAsIDAuMTIpfS5tYXQtZHJhd2VyLXNpZGVbX25nY29udGVudC0lQ09NUCVde2JvcmRlci1yaWdodDpzb2xpZCAxcHggcmdiYSgwLDAsMCwuMTIpfS5tYXQtZHJhd2VyLXNpZGUubWF0LWRyYXdlci1lbmRbX25nY29udGVudC0lQ09NUCVde2JvcmRlci1sZWZ0OnNvbGlkIDFweCByZ2JhKDAsMCwwLC4xMik7Ym9yZGVyLXJpZ2h0Om5vbmV9W2Rpcj1ydGxdW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZHJhd2VyLXNpZGVbX25nY29udGVudC0lQ09NUCVde2JvcmRlci1sZWZ0OnNvbGlkIDFweCByZ2JhKDAsMCwwLC4xMik7Ym9yZGVyLXJpZ2h0Om5vbmV9W2Rpcj1ydGxdW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZHJhd2VyLXNpZGUubWF0LWRyYXdlci1lbmRbX25nY29udGVudC0lQ09NUCVde2JvcmRlci1sZWZ0Om5vbmU7Ym9yZGVyLXJpZ2h0OnNvbGlkIDFweCByZ2JhKDAsMCwwLC4xMil9Lm1hdC1kcmF3ZXItYmFja2Ryb3AubWF0LWRyYXdlci1zaG93bltfbmdjb250ZW50LSVDT01QJV17YmFja2dyb3VuZC1jb2xvcjpyZ2JhKDAsMCwwLC42KX0ubWF0LXNsaWRlLXRvZ2dsZS5tYXQtY2hlY2tlZFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXNsaWRlLXRvZ2dsZS10aHVtYltfbmdjb250ZW50LSVDT01QJV17YmFja2dyb3VuZC1jb2xvcjojZmY5ODAwfS5tYXQtc2xpZGUtdG9nZ2xlLm1hdC1jaGVja2VkW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtc2xpZGUtdG9nZ2xlLWJhcltfbmdjb250ZW50LSVDT01QJV17YmFja2dyb3VuZC1jb2xvcjpyZ2JhKDI1NSwxNTIsMCwuNTQpfS5tYXQtc2xpZGUtdG9nZ2xlLm1hdC1jaGVja2VkW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtcmlwcGxlLWVsZW1lbnRbX25nY29udGVudC0lQ09NUCVde2JhY2tncm91bmQtY29sb3I6I2ZmOTgwMH0ubWF0LXNsaWRlLXRvZ2dsZS5tYXQtcHJpbWFyeS5tYXQtY2hlY2tlZFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXNsaWRlLXRvZ2dsZS10aHVtYltfbmdjb250ZW50LSVDT01QJV17YmFja2dyb3VuZC1jb2xvcjojZjU3YzAwfS5tYXQtc2xpZGUtdG9nZ2xlLm1hdC1wcmltYXJ5Lm1hdC1jaGVja2VkW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtc2xpZGUtdG9nZ2xlLWJhcltfbmdjb250ZW50LSVDT01QJV17YmFja2dyb3VuZC1jb2xvcjpyZ2JhKDI0NSwxMjQsMCwuNTQpfS5tYXQtc2xpZGUtdG9nZ2xlLm1hdC1wcmltYXJ5Lm1hdC1jaGVja2VkW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtcmlwcGxlLWVsZW1lbnRbX25nY29udGVudC0lQ09NUCVde2JhY2tncm91bmQtY29sb3I6I2Y1N2MwMH0ubWF0LXNsaWRlLXRvZ2dsZS5tYXQtd2Fybi5tYXQtY2hlY2tlZFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXNsaWRlLXRvZ2dsZS10aHVtYltfbmdjb250ZW50LSVDT01QJV17YmFja2dyb3VuZC1jb2xvcjojZjQ0MzM2fS5tYXQtc2xpZGUtdG9nZ2xlLm1hdC13YXJuLm1hdC1jaGVja2VkW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtc2xpZGUtdG9nZ2xlLWJhcltfbmdjb250ZW50LSVDT01QJV17YmFja2dyb3VuZC1jb2xvcjpyZ2JhKDI0NCw2Nyw1NCwuNTQpfS5tYXQtc2xpZGUtdG9nZ2xlLm1hdC13YXJuLm1hdC1jaGVja2VkW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtcmlwcGxlLWVsZW1lbnRbX25nY29udGVudC0lQ09NUCVde2JhY2tncm91bmQtY29sb3I6I2Y0NDMzNn0ubWF0LXNsaWRlLXRvZ2dsZVtfbmdjb250ZW50LSVDT01QJV06bm90KC5tYXQtY2hlY2tlZCkgICAubWF0LXJpcHBsZS1lbGVtZW50W19uZ2NvbnRlbnQtJUNPTVAlXXtiYWNrZ3JvdW5kLWNvbG9yOiMwMDB9Lm1hdC1zbGlkZS10b2dnbGUtdGh1bWJbX25nY29udGVudC0lQ09NUCVde2JveC1zaGFkb3c6MHB4IDJweCAxcHggLTFweCByZ2JhKDAsIDAsIDAsIDAuMiksMHB4IDFweCAxcHggMHB4IHJnYmEoMCwgMCwgMCwgMC4xNCksMHB4IDFweCAzcHggMHB4IHJnYmEoMCwgMCwgMCwgMC4xMik7YmFja2dyb3VuZC1jb2xvcjojZmFmYWZhfS5tYXQtc2xpZGUtdG9nZ2xlLWJhcltfbmdjb250ZW50LSVDT01QJV17YmFja2dyb3VuZC1jb2xvcjpyZ2JhKDAsMCwwLC4zOCl9Lm1hdC1zbGlkZXItdHJhY2stYmFja2dyb3VuZFtfbmdjb250ZW50LSVDT01QJV17YmFja2dyb3VuZC1jb2xvcjpyZ2JhKDAsMCwwLC4yNil9Lm1hdC1wcmltYXJ5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtc2xpZGVyLXRyYWNrLWZpbGxbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXByaW1hcnlbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1zbGlkZXItdGh1bWJbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXByaW1hcnlbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1zbGlkZXItdGh1bWItbGFiZWxbX25nY29udGVudC0lQ09NUCVde2JhY2tncm91bmQtY29sb3I6I2Y1N2MwMH0ubWF0LXByaW1hcnlbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1zbGlkZXItdGh1bWItbGFiZWwtdGV4dFtfbmdjb250ZW50LSVDT01QJV17Y29sb3I6I2ZmZn0ubWF0LXByaW1hcnlbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1zbGlkZXItZm9jdXMtcmluZ1tfbmdjb250ZW50LSVDT01QJV17YmFja2dyb3VuZC1jb2xvcjpyZ2JhKDI0NSwxMjQsMCwuMil9Lm1hdC1hY2NlbnRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1zbGlkZXItdHJhY2stZmlsbFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtYWNjZW50W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtc2xpZGVyLXRodW1iW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1hY2NlbnRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1zbGlkZXItdGh1bWItbGFiZWxbX25nY29udGVudC0lQ09NUCVde2JhY2tncm91bmQtY29sb3I6I2ZmOTgwMH0ubWF0LWFjY2VudFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXNsaWRlci10aHVtYi1sYWJlbC10ZXh0W19uZ2NvbnRlbnQtJUNPTVAlXXtjb2xvcjojZmZmfS5tYXQtYWNjZW50W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtc2xpZGVyLWZvY3VzLXJpbmdbX25nY29udGVudC0lQ09NUCVde2JhY2tncm91bmQtY29sb3I6cmdiYSgyNTUsMTUyLDAsLjIpfS5tYXQtd2Fybltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXNsaWRlci10cmFjay1maWxsW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC13YXJuW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtc2xpZGVyLXRodW1iW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC13YXJuW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtc2xpZGVyLXRodW1iLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXtiYWNrZ3JvdW5kLWNvbG9yOiNmNDQzMzZ9Lm1hdC13YXJuW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtc2xpZGVyLXRodW1iLWxhYmVsLXRleHRbX25nY29udGVudC0lQ09NUCVde2NvbG9yOiNmZmZ9Lm1hdC13YXJuW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtc2xpZGVyLWZvY3VzLXJpbmdbX25nY29udGVudC0lQ09NUCVde2JhY2tncm91bmQtY29sb3I6cmdiYSgyNDQsNjcsNTQsLjIpfS5tYXQtc2xpZGVyW19uZ2NvbnRlbnQtJUNPTVAlXTpob3ZlciAgIC5tYXQtc2xpZGVyLXRyYWNrLWJhY2tncm91bmRbX25nY29udGVudC0lQ09NUCVdLCAuY2RrLWZvY3VzZWRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1zbGlkZXItdHJhY2stYmFja2dyb3VuZFtfbmdjb250ZW50LSVDT01QJV17YmFja2dyb3VuZC1jb2xvcjpyZ2JhKDAsMCwwLC4zOCl9Lm1hdC1zbGlkZXItZGlzYWJsZWRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1zbGlkZXItdHJhY2stYmFja2dyb3VuZFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtc2xpZGVyLWRpc2FibGVkW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtc2xpZGVyLXRyYWNrLWZpbGxbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXNsaWRlci1kaXNhYmxlZFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXNsaWRlci10aHVtYltfbmdjb250ZW50LSVDT01QJV17YmFja2dyb3VuZC1jb2xvcjpyZ2JhKDAsMCwwLC4yNil9Lm1hdC1zbGlkZXItZGlzYWJsZWRbX25nY29udGVudC0lQ09NUCVdOmhvdmVyICAgLm1hdC1zbGlkZXItdHJhY2stYmFja2dyb3VuZFtfbmdjb250ZW50LSVDT01QJV17YmFja2dyb3VuZC1jb2xvcjpyZ2JhKDAsMCwwLC4yNil9Lm1hdC1zbGlkZXItbWluLXZhbHVlW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtc2xpZGVyLWZvY3VzLXJpbmdbX25nY29udGVudC0lQ09NUCVde2JhY2tncm91bmQtY29sb3I6cmdiYSgwLDAsMCwuMTIpfS5tYXQtc2xpZGVyLW1pbi12YWx1ZS5tYXQtc2xpZGVyLXRodW1iLWxhYmVsLXNob3dpbmdbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1zbGlkZXItdGh1bWJbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXNsaWRlci1taW4tdmFsdWUubWF0LXNsaWRlci10aHVtYi1sYWJlbC1zaG93aW5nW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtc2xpZGVyLXRodW1iLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXtiYWNrZ3JvdW5kLWNvbG9yOnJnYmEoMCwwLDAsLjg3KX0ubWF0LXNsaWRlci1taW4tdmFsdWUubWF0LXNsaWRlci10aHVtYi1sYWJlbC1zaG93aW5nLmNkay1mb2N1c2VkW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtc2xpZGVyLXRodW1iW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1zbGlkZXItbWluLXZhbHVlLm1hdC1zbGlkZXItdGh1bWItbGFiZWwtc2hvd2luZy5jZGstZm9jdXNlZFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXNsaWRlci10aHVtYi1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17YmFja2dyb3VuZC1jb2xvcjpyZ2JhKDAsMCwwLC4yNil9Lm1hdC1zbGlkZXItbWluLXZhbHVlW19uZ2NvbnRlbnQtJUNPTVAlXTpub3QoLm1hdC1zbGlkZXItdGh1bWItbGFiZWwtc2hvd2luZykgICAubWF0LXNsaWRlci10aHVtYltfbmdjb250ZW50LSVDT01QJV17Ym9yZGVyLWNvbG9yOnJnYmEoMCwwLDAsLjI2KTtiYWNrZ3JvdW5kLWNvbG9yOnRyYW5zcGFyZW50fS5tYXQtc2xpZGVyLW1pbi12YWx1ZVtfbmdjb250ZW50LSVDT01QJV06bm90KC5tYXQtc2xpZGVyLXRodW1iLWxhYmVsLXNob3dpbmcpOmhvdmVyICAgLm1hdC1zbGlkZXItdGh1bWJbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXNsaWRlci1taW4tdmFsdWVbX25nY29udGVudC0lQ09NUCVdOm5vdCgubWF0LXNsaWRlci10aHVtYi1sYWJlbC1zaG93aW5nKS5jZGstZm9jdXNlZCAgIC5tYXQtc2xpZGVyLXRodW1iW19uZ2NvbnRlbnQtJUNPTVAlXXtib3JkZXItY29sb3I6cmdiYSgwLDAsMCwuMzgpfS5tYXQtc2xpZGVyLW1pbi12YWx1ZVtfbmdjb250ZW50LSVDT01QJV06bm90KC5tYXQtc2xpZGVyLXRodW1iLWxhYmVsLXNob3dpbmcpOmhvdmVyLm1hdC1zbGlkZXItZGlzYWJsZWQgICAubWF0LXNsaWRlci10aHVtYltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtc2xpZGVyLW1pbi12YWx1ZVtfbmdjb250ZW50LSVDT01QJV06bm90KC5tYXQtc2xpZGVyLXRodW1iLWxhYmVsLXNob3dpbmcpLmNkay1mb2N1c2VkLm1hdC1zbGlkZXItZGlzYWJsZWQgICAubWF0LXNsaWRlci10aHVtYltfbmdjb250ZW50LSVDT01QJV17Ym9yZGVyLWNvbG9yOnJnYmEoMCwwLDAsLjI2KX0ubWF0LXNsaWRlci1oYXMtdGlja3NbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1zbGlkZXItd3JhcHBlcltfbmdjb250ZW50LSVDT01QJV06OmFmdGVye2JvcmRlci1jb2xvcjpyZ2JhKDAsMCwwLC43KX0ubWF0LXNsaWRlci1ob3Jpem9udGFsW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtc2xpZGVyLXRpY2tzW19uZ2NvbnRlbnQtJUNPTVAlXXtiYWNrZ3JvdW5kLWltYWdlOnJlcGVhdGluZy1saW5lYXItZ3JhZGllbnQodG8gcmlnaHQsIHJnYmEoMCwgMCwgMCwgMC43KSwgcmdiYSgwLCAwLCAwLCAwLjcpIDJweCwgdHJhbnNwYXJlbnQgMCwgdHJhbnNwYXJlbnQpO2JhY2tncm91bmQtaW1hZ2U6LW1vei1yZXBlYXRpbmctbGluZWFyLWdyYWRpZW50KDAuMDAwMWRlZywgcmdiYSgwLCAwLCAwLCAwLjcpLCByZ2JhKDAsIDAsIDAsIDAuNykgMnB4LCB0cmFuc3BhcmVudCAwLCB0cmFuc3BhcmVudCl9Lm1hdC1zbGlkZXItdmVydGljYWxbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1zbGlkZXItdGlja3NbX25nY29udGVudC0lQ09NUCVde2JhY2tncm91bmQtaW1hZ2U6cmVwZWF0aW5nLWxpbmVhci1ncmFkaWVudCh0byBib3R0b20sIHJnYmEoMCwgMCwgMCwgMC43KSwgcmdiYSgwLCAwLCAwLCAwLjcpIDJweCwgdHJhbnNwYXJlbnQgMCwgdHJhbnNwYXJlbnQpfS5tYXQtc3RlcC1oZWFkZXIuY2RrLWtleWJvYXJkLWZvY3VzZWRbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXN0ZXAtaGVhZGVyLmNkay1wcm9ncmFtLWZvY3VzZWRbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXN0ZXAtaGVhZGVyW19uZ2NvbnRlbnQtJUNPTVAlXTpob3ZlcntiYWNrZ3JvdW5kLWNvbG9yOnJnYmEoMCwwLDAsLjA0KX1AbWVkaWEoaG92ZXI6IG5vbmUpey5tYXQtc3RlcC1oZWFkZXJbX25nY29udGVudC0lQ09NUCVdOmhvdmVye2JhY2tncm91bmQ6bm9uZX19Lm1hdC1zdGVwLWhlYWRlcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXN0ZXAtbGFiZWxbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXN0ZXAtaGVhZGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtc3RlcC1vcHRpb25hbFtfbmdjb250ZW50LSVDT01QJV17Y29sb3I6IzYxNjE2MX0ubWF0LXN0ZXAtaGVhZGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtc3RlcC1pY29uW19uZ2NvbnRlbnQtJUNPTVAlXXtiYWNrZ3JvdW5kLWNvbG9yOiM2MTYxNjE7Y29sb3I6I2ZmZn0ubWF0LXN0ZXAtaGVhZGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtc3RlcC1pY29uLXNlbGVjdGVkW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1zdGVwLWhlYWRlcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXN0ZXAtaWNvbi1zdGF0ZS1kb25lW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1zdGVwLWhlYWRlcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXN0ZXAtaWNvbi1zdGF0ZS1lZGl0W19uZ2NvbnRlbnQtJUNPTVAlXXtiYWNrZ3JvdW5kLWNvbG9yOiNmNTdjMDA7Y29sb3I6I2ZmZn0ubWF0LXN0ZXAtaGVhZGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtc3RlcC1pY29uLXN0YXRlLWVycm9yW19uZ2NvbnRlbnQtJUNPTVAlXXtiYWNrZ3JvdW5kLWNvbG9yOnRyYW5zcGFyZW50O2NvbG9yOiNmNDQzMzZ9Lm1hdC1zdGVwLWhlYWRlcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXN0ZXAtbGFiZWwubWF0LXN0ZXAtbGFiZWwtYWN0aXZlW19uZ2NvbnRlbnQtJUNPTVAlXXtjb2xvcjojMjEyMTIxfS5tYXQtc3RlcC1oZWFkZXJbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1zdGVwLWxhYmVsLm1hdC1zdGVwLWxhYmVsLWVycm9yW19uZ2NvbnRlbnQtJUNPTVAlXXtjb2xvcjojZjQ0MzM2fS5tYXQtc3RlcHBlci1ob3Jpem9udGFsW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1zdGVwcGVyLXZlcnRpY2FsW19uZ2NvbnRlbnQtJUNPTVAlXXtiYWNrZ3JvdW5kLWNvbG9yOiNmZmZ9Lm1hdC1zdGVwcGVyLXZlcnRpY2FsLWxpbmVbX25nY29udGVudC0lQ09NUCVdOjpiZWZvcmV7Ym9yZGVyLWxlZnQtY29sb3I6cmdiYSgwLDAsMCwuMTIpfS5tYXQtaG9yaXpvbnRhbC1zdGVwcGVyLWhlYWRlcltfbmdjb250ZW50LSVDT01QJV06OmJlZm9yZSwgLm1hdC1ob3Jpem9udGFsLXN0ZXBwZXItaGVhZGVyW19uZ2NvbnRlbnQtJUNPTVAlXTo6YWZ0ZXIsIC5tYXQtc3RlcHBlci1ob3Jpem9udGFsLWxpbmVbX25nY29udGVudC0lQ09NUCVde2JvcmRlci10b3AtY29sb3I6cmdiYSgwLDAsMCwuMTIpfS5tYXQtaG9yaXpvbnRhbC1zdGVwcGVyLWhlYWRlcltfbmdjb250ZW50LSVDT01QJV17aGVpZ2h0OjcycHh9Lm1hdC1zdGVwcGVyLWxhYmVsLXBvc2l0aW9uLWJvdHRvbVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWhvcml6b250YWwtc3RlcHBlci1oZWFkZXJbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXZlcnRpY2FsLXN0ZXBwZXItaGVhZGVyW19uZ2NvbnRlbnQtJUNPTVAlXXtwYWRkaW5nOjI0cHggMjRweH0ubWF0LXN0ZXBwZXItdmVydGljYWwtbGluZVtfbmdjb250ZW50LSVDT01QJV06OmJlZm9yZXt0b3A6LTE2cHg7Ym90dG9tOi0xNnB4fS5tYXQtc3RlcHBlci1sYWJlbC1wb3NpdGlvbi1ib3R0b21bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1ob3Jpem9udGFsLXN0ZXBwZXItaGVhZGVyW19uZ2NvbnRlbnQtJUNPTVAlXTo6YWZ0ZXIsIC5tYXQtc3RlcHBlci1sYWJlbC1wb3NpdGlvbi1ib3R0b21bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1ob3Jpem9udGFsLXN0ZXBwZXItaGVhZGVyW19uZ2NvbnRlbnQtJUNPTVAlXTo6YmVmb3Jle3RvcDozNnB4fS5tYXQtc3RlcHBlci1sYWJlbC1wb3NpdGlvbi1ib3R0b21bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1zdGVwcGVyLWhvcml6b250YWwtbGluZVtfbmdjb250ZW50LSVDT01QJV17dG9wOjM2cHh9Lm1hdC1zb3J0LWhlYWRlci1hcnJvd1tfbmdjb250ZW50LSVDT01QJV17Y29sb3I6IzYxNjE2MX0ubWF0LXRhYi1uYXYtYmFyW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10YWItaGVhZGVyW19uZ2NvbnRlbnQtJUNPTVAlXXtib3JkZXItYm90dG9tOjFweCBzb2xpZCByZ2JhKDAsMCwwLC4xMil9Lm1hdC10YWItZ3JvdXAtaW52ZXJ0ZWQtaGVhZGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtdGFiLW5hdi1iYXJbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXRhYi1ncm91cC1pbnZlcnRlZC1oZWFkZXJbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC10YWItaGVhZGVyW19uZ2NvbnRlbnQtJUNPTVAlXXtib3JkZXItdG9wOjFweCBzb2xpZCByZ2JhKDAsMCwwLC4xMik7Ym9yZGVyLWJvdHRvbTpub25lfS5tYXQtdGFiLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10YWItbGlua1tfbmdjb250ZW50LSVDT01QJV17Y29sb3I6IzIxMjEyMX0ubWF0LXRhYi1sYWJlbC5tYXQtdGFiLWRpc2FibGVkW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10YWItbGluay5tYXQtdGFiLWRpc2FibGVkW19uZ2NvbnRlbnQtJUNPTVAlXXtjb2xvcjojNzU3NTc1fS5tYXQtdGFiLWhlYWRlci1wYWdpbmF0aW9uLWNoZXZyb25bX25nY29udGVudC0lQ09NUCVde2JvcmRlci1jb2xvcjojMjEyMTIxfS5tYXQtdGFiLWhlYWRlci1wYWdpbmF0aW9uLWRpc2FibGVkW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtdGFiLWhlYWRlci1wYWdpbmF0aW9uLWNoZXZyb25bX25nY29udGVudC0lQ09NUCVde2JvcmRlci1jb2xvcjojNzU3NTc1fS5tYXQtdGFiLWdyb3VwW2NsYXNzKj1tYXQtYmFja2dyb3VuZC1dW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtdGFiLWhlYWRlcltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdGFiLW5hdi1iYXJbY2xhc3MqPW1hdC1iYWNrZ3JvdW5kLV1bX25nY29udGVudC0lQ09NUCVde2JvcmRlci1ib3R0b206bm9uZTtib3JkZXItdG9wOm5vbmV9Lm1hdC10YWItZ3JvdXAubWF0LXByaW1hcnlbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC10YWItbGFiZWwuY2RrLWtleWJvYXJkLWZvY3VzZWRbX25nY29udGVudC0lQ09NUCVdOm5vdCgubWF0LXRhYi1kaXNhYmxlZCksIC5tYXQtdGFiLWdyb3VwLm1hdC1wcmltYXJ5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtdGFiLWxhYmVsLmNkay1wcm9ncmFtLWZvY3VzZWRbX25nY29udGVudC0lQ09NUCVdOm5vdCgubWF0LXRhYi1kaXNhYmxlZCksIC5tYXQtdGFiLWdyb3VwLm1hdC1wcmltYXJ5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtdGFiLWxpbmsuY2RrLWtleWJvYXJkLWZvY3VzZWRbX25nY29udGVudC0lQ09NUCVdOm5vdCgubWF0LXRhYi1kaXNhYmxlZCksIC5tYXQtdGFiLWdyb3VwLm1hdC1wcmltYXJ5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtdGFiLWxpbmsuY2RrLXByb2dyYW0tZm9jdXNlZFtfbmdjb250ZW50LSVDT01QJV06bm90KC5tYXQtdGFiLWRpc2FibGVkKSwgLm1hdC10YWItbmF2LWJhci5tYXQtcHJpbWFyeVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXRhYi1sYWJlbC5jZGsta2V5Ym9hcmQtZm9jdXNlZFtfbmdjb250ZW50LSVDT01QJV06bm90KC5tYXQtdGFiLWRpc2FibGVkKSwgLm1hdC10YWItbmF2LWJhci5tYXQtcHJpbWFyeVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXRhYi1sYWJlbC5jZGstcHJvZ3JhbS1mb2N1c2VkW19uZ2NvbnRlbnQtJUNPTVAlXTpub3QoLm1hdC10YWItZGlzYWJsZWQpLCAubWF0LXRhYi1uYXYtYmFyLm1hdC1wcmltYXJ5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtdGFiLWxpbmsuY2RrLWtleWJvYXJkLWZvY3VzZWRbX25nY29udGVudC0lQ09NUCVdOm5vdCgubWF0LXRhYi1kaXNhYmxlZCksIC5tYXQtdGFiLW5hdi1iYXIubWF0LXByaW1hcnlbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC10YWItbGluay5jZGstcHJvZ3JhbS1mb2N1c2VkW19uZ2NvbnRlbnQtJUNPTVAlXTpub3QoLm1hdC10YWItZGlzYWJsZWQpe2JhY2tncm91bmQtY29sb3I6cmdiYSgyNTUsMTUyLDAsLjMpfS5tYXQtdGFiLWdyb3VwLm1hdC1wcmltYXJ5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaW5rLWJhcltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdGFiLW5hdi1iYXIubWF0LXByaW1hcnlbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pbmstYmFyW19uZ2NvbnRlbnQtJUNPTVAlXXtiYWNrZ3JvdW5kLWNvbG9yOiNmNTdjMDB9Lm1hdC10YWItZ3JvdXAubWF0LXByaW1hcnkubWF0LWJhY2tncm91bmQtcHJpbWFyeVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWluay1iYXJbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXRhYi1uYXYtYmFyLm1hdC1wcmltYXJ5Lm1hdC1iYWNrZ3JvdW5kLXByaW1hcnlbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pbmstYmFyW19uZ2NvbnRlbnQtJUNPTVAlXXtiYWNrZ3JvdW5kLWNvbG9yOiNmZmZ9Lm1hdC10YWItZ3JvdXAubWF0LWFjY2VudFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXRhYi1sYWJlbC5jZGsta2V5Ym9hcmQtZm9jdXNlZFtfbmdjb250ZW50LSVDT01QJV06bm90KC5tYXQtdGFiLWRpc2FibGVkKSwgLm1hdC10YWItZ3JvdXAubWF0LWFjY2VudFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXRhYi1sYWJlbC5jZGstcHJvZ3JhbS1mb2N1c2VkW19uZ2NvbnRlbnQtJUNPTVAlXTpub3QoLm1hdC10YWItZGlzYWJsZWQpLCAubWF0LXRhYi1ncm91cC5tYXQtYWNjZW50W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtdGFiLWxpbmsuY2RrLWtleWJvYXJkLWZvY3VzZWRbX25nY29udGVudC0lQ09NUCVdOm5vdCgubWF0LXRhYi1kaXNhYmxlZCksIC5tYXQtdGFiLWdyb3VwLm1hdC1hY2NlbnRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC10YWItbGluay5jZGstcHJvZ3JhbS1mb2N1c2VkW19uZ2NvbnRlbnQtJUNPTVAlXTpub3QoLm1hdC10YWItZGlzYWJsZWQpLCAubWF0LXRhYi1uYXYtYmFyLm1hdC1hY2NlbnRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC10YWItbGFiZWwuY2RrLWtleWJvYXJkLWZvY3VzZWRbX25nY29udGVudC0lQ09NUCVdOm5vdCgubWF0LXRhYi1kaXNhYmxlZCksIC5tYXQtdGFiLW5hdi1iYXIubWF0LWFjY2VudFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXRhYi1sYWJlbC5jZGstcHJvZ3JhbS1mb2N1c2VkW19uZ2NvbnRlbnQtJUNPTVAlXTpub3QoLm1hdC10YWItZGlzYWJsZWQpLCAubWF0LXRhYi1uYXYtYmFyLm1hdC1hY2NlbnRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC10YWItbGluay5jZGsta2V5Ym9hcmQtZm9jdXNlZFtfbmdjb250ZW50LSVDT01QJV06bm90KC5tYXQtdGFiLWRpc2FibGVkKSwgLm1hdC10YWItbmF2LWJhci5tYXQtYWNjZW50W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtdGFiLWxpbmsuY2RrLXByb2dyYW0tZm9jdXNlZFtfbmdjb250ZW50LSVDT01QJV06bm90KC5tYXQtdGFiLWRpc2FibGVkKXtiYWNrZ3JvdW5kLWNvbG9yOnJnYmEoMjU1LDE1MiwwLC4zKX0ubWF0LXRhYi1ncm91cC5tYXQtYWNjZW50W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaW5rLWJhcltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdGFiLW5hdi1iYXIubWF0LWFjY2VudFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWluay1iYXJbX25nY29udGVudC0lQ09NUCVde2JhY2tncm91bmQtY29sb3I6I2ZmOTgwMH0ubWF0LXRhYi1ncm91cC5tYXQtYWNjZW50Lm1hdC1iYWNrZ3JvdW5kLWFjY2VudFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWluay1iYXJbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXRhYi1uYXYtYmFyLm1hdC1hY2NlbnQubWF0LWJhY2tncm91bmQtYWNjZW50W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaW5rLWJhcltfbmdjb250ZW50LSVDT01QJV17YmFja2dyb3VuZC1jb2xvcjojZmZmfS5tYXQtdGFiLWdyb3VwLm1hdC13YXJuW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtdGFiLWxhYmVsLmNkay1rZXlib2FyZC1mb2N1c2VkW19uZ2NvbnRlbnQtJUNPTVAlXTpub3QoLm1hdC10YWItZGlzYWJsZWQpLCAubWF0LXRhYi1ncm91cC5tYXQtd2Fybltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXRhYi1sYWJlbC5jZGstcHJvZ3JhbS1mb2N1c2VkW19uZ2NvbnRlbnQtJUNPTVAlXTpub3QoLm1hdC10YWItZGlzYWJsZWQpLCAubWF0LXRhYi1ncm91cC5tYXQtd2Fybltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXRhYi1saW5rLmNkay1rZXlib2FyZC1mb2N1c2VkW19uZ2NvbnRlbnQtJUNPTVAlXTpub3QoLm1hdC10YWItZGlzYWJsZWQpLCAubWF0LXRhYi1ncm91cC5tYXQtd2Fybltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXRhYi1saW5rLmNkay1wcm9ncmFtLWZvY3VzZWRbX25nY29udGVudC0lQ09NUCVdOm5vdCgubWF0LXRhYi1kaXNhYmxlZCksIC5tYXQtdGFiLW5hdi1iYXIubWF0LXdhcm5bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC10YWItbGFiZWwuY2RrLWtleWJvYXJkLWZvY3VzZWRbX25nY29udGVudC0lQ09NUCVdOm5vdCgubWF0LXRhYi1kaXNhYmxlZCksIC5tYXQtdGFiLW5hdi1iYXIubWF0LXdhcm5bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC10YWItbGFiZWwuY2RrLXByb2dyYW0tZm9jdXNlZFtfbmdjb250ZW50LSVDT01QJV06bm90KC5tYXQtdGFiLWRpc2FibGVkKSwgLm1hdC10YWItbmF2LWJhci5tYXQtd2Fybltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXRhYi1saW5rLmNkay1rZXlib2FyZC1mb2N1c2VkW19uZ2NvbnRlbnQtJUNPTVAlXTpub3QoLm1hdC10YWItZGlzYWJsZWQpLCAubWF0LXRhYi1uYXYtYmFyLm1hdC13YXJuW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtdGFiLWxpbmsuY2RrLXByb2dyYW0tZm9jdXNlZFtfbmdjb250ZW50LSVDT01QJV06bm90KC5tYXQtdGFiLWRpc2FibGVkKXtiYWNrZ3JvdW5kLWNvbG9yOnJnYmEoMjU1LDIwNSwyMTAsLjMpfS5tYXQtdGFiLWdyb3VwLm1hdC13YXJuW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaW5rLWJhcltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdGFiLW5hdi1iYXIubWF0LXdhcm5bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pbmstYmFyW19uZ2NvbnRlbnQtJUNPTVAlXXtiYWNrZ3JvdW5kLWNvbG9yOiNmNDQzMzZ9Lm1hdC10YWItZ3JvdXAubWF0LXdhcm4ubWF0LWJhY2tncm91bmQtd2Fybltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWluay1iYXJbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXRhYi1uYXYtYmFyLm1hdC13YXJuLm1hdC1iYWNrZ3JvdW5kLXdhcm5bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pbmstYmFyW19uZ2NvbnRlbnQtJUNPTVAlXXtiYWNrZ3JvdW5kLWNvbG9yOiNmZmZ9Lm1hdC10YWItZ3JvdXAubWF0LWJhY2tncm91bmQtcHJpbWFyeVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXRhYi1sYWJlbC5jZGsta2V5Ym9hcmQtZm9jdXNlZFtfbmdjb250ZW50LSVDT01QJV06bm90KC5tYXQtdGFiLWRpc2FibGVkKSwgLm1hdC10YWItZ3JvdXAubWF0LWJhY2tncm91bmQtcHJpbWFyeVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXRhYi1sYWJlbC5jZGstcHJvZ3JhbS1mb2N1c2VkW19uZ2NvbnRlbnQtJUNPTVAlXTpub3QoLm1hdC10YWItZGlzYWJsZWQpLCAubWF0LXRhYi1ncm91cC5tYXQtYmFja2dyb3VuZC1wcmltYXJ5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtdGFiLWxpbmsuY2RrLWtleWJvYXJkLWZvY3VzZWRbX25nY29udGVudC0lQ09NUCVdOm5vdCgubWF0LXRhYi1kaXNhYmxlZCksIC5tYXQtdGFiLWdyb3VwLm1hdC1iYWNrZ3JvdW5kLXByaW1hcnlbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC10YWItbGluay5jZGstcHJvZ3JhbS1mb2N1c2VkW19uZ2NvbnRlbnQtJUNPTVAlXTpub3QoLm1hdC10YWItZGlzYWJsZWQpLCAubWF0LXRhYi1uYXYtYmFyLm1hdC1iYWNrZ3JvdW5kLXByaW1hcnlbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC10YWItbGFiZWwuY2RrLWtleWJvYXJkLWZvY3VzZWRbX25nY29udGVudC0lQ09NUCVdOm5vdCgubWF0LXRhYi1kaXNhYmxlZCksIC5tYXQtdGFiLW5hdi1iYXIubWF0LWJhY2tncm91bmQtcHJpbWFyeVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXRhYi1sYWJlbC5jZGstcHJvZ3JhbS1mb2N1c2VkW19uZ2NvbnRlbnQtJUNPTVAlXTpub3QoLm1hdC10YWItZGlzYWJsZWQpLCAubWF0LXRhYi1uYXYtYmFyLm1hdC1iYWNrZ3JvdW5kLXByaW1hcnlbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC10YWItbGluay5jZGsta2V5Ym9hcmQtZm9jdXNlZFtfbmdjb250ZW50LSVDT01QJV06bm90KC5tYXQtdGFiLWRpc2FibGVkKSwgLm1hdC10YWItbmF2LWJhci5tYXQtYmFja2dyb3VuZC1wcmltYXJ5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtdGFiLWxpbmsuY2RrLXByb2dyYW0tZm9jdXNlZFtfbmdjb250ZW50LSVDT01QJV06bm90KC5tYXQtdGFiLWRpc2FibGVkKXtiYWNrZ3JvdW5kLWNvbG9yOnJnYmEoMjU1LDE1MiwwLC4zKX0ubWF0LXRhYi1ncm91cC5tYXQtYmFja2dyb3VuZC1wcmltYXJ5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtdGFiLWhlYWRlcltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdGFiLWdyb3VwLm1hdC1iYWNrZ3JvdW5kLXByaW1hcnlbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC10YWItbGlua3NbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXRhYi1ncm91cC5tYXQtYmFja2dyb3VuZC1wcmltYXJ5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtdGFiLWhlYWRlci1wYWdpbmF0aW9uW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10YWItbmF2LWJhci5tYXQtYmFja2dyb3VuZC1wcmltYXJ5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtdGFiLWhlYWRlcltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdGFiLW5hdi1iYXIubWF0LWJhY2tncm91bmQtcHJpbWFyeVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXRhYi1saW5rc1tfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdGFiLW5hdi1iYXIubWF0LWJhY2tncm91bmQtcHJpbWFyeVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXRhYi1oZWFkZXItcGFnaW5hdGlvbltfbmdjb250ZW50LSVDT01QJV17YmFja2dyb3VuZC1jb2xvcjojZjU3YzAwfS5tYXQtdGFiLWdyb3VwLm1hdC1iYWNrZ3JvdW5kLXByaW1hcnlbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC10YWItbGFiZWxbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXRhYi1ncm91cC5tYXQtYmFja2dyb3VuZC1wcmltYXJ5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtdGFiLWxpbmtbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXRhYi1uYXYtYmFyLm1hdC1iYWNrZ3JvdW5kLXByaW1hcnlbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC10YWItbGFiZWxbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXRhYi1uYXYtYmFyLm1hdC1iYWNrZ3JvdW5kLXByaW1hcnlbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC10YWItbGlua1tfbmdjb250ZW50LSVDT01QJV17Y29sb3I6I2ZmZn0ubWF0LXRhYi1ncm91cC5tYXQtYmFja2dyb3VuZC1wcmltYXJ5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtdGFiLWxhYmVsLm1hdC10YWItZGlzYWJsZWRbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXRhYi1ncm91cC5tYXQtYmFja2dyb3VuZC1wcmltYXJ5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtdGFiLWxpbmsubWF0LXRhYi1kaXNhYmxlZFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdGFiLW5hdi1iYXIubWF0LWJhY2tncm91bmQtcHJpbWFyeVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXRhYi1sYWJlbC5tYXQtdGFiLWRpc2FibGVkW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10YWItbmF2LWJhci5tYXQtYmFja2dyb3VuZC1wcmltYXJ5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtdGFiLWxpbmsubWF0LXRhYi1kaXNhYmxlZFtfbmdjb250ZW50LSVDT01QJV17Y29sb3I6cmdiYSgyNTUsMjU1LDI1NSwuNCl9Lm1hdC10YWItZ3JvdXAubWF0LWJhY2tncm91bmQtcHJpbWFyeVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXRhYi1oZWFkZXItcGFnaW5hdGlvbi1jaGV2cm9uW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10YWItbmF2LWJhci5tYXQtYmFja2dyb3VuZC1wcmltYXJ5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtdGFiLWhlYWRlci1wYWdpbmF0aW9uLWNoZXZyb25bX25nY29udGVudC0lQ09NUCVde2JvcmRlci1jb2xvcjojZmZmfS5tYXQtdGFiLWdyb3VwLm1hdC1iYWNrZ3JvdW5kLXByaW1hcnlbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC10YWItaGVhZGVyLXBhZ2luYXRpb24tZGlzYWJsZWRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC10YWItaGVhZGVyLXBhZ2luYXRpb24tY2hldnJvbltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdGFiLW5hdi1iYXIubWF0LWJhY2tncm91bmQtcHJpbWFyeVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXRhYi1oZWFkZXItcGFnaW5hdGlvbi1kaXNhYmxlZFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXRhYi1oZWFkZXItcGFnaW5hdGlvbi1jaGV2cm9uW19uZ2NvbnRlbnQtJUNPTVAlXXtib3JkZXItY29sb3I6cmdiYSgyNTUsMjU1LDI1NSwuNCl9Lm1hdC10YWItZ3JvdXAubWF0LWJhY2tncm91bmQtcHJpbWFyeVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXJpcHBsZS1lbGVtZW50W19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10YWItbmF2LWJhci5tYXQtYmFja2dyb3VuZC1wcmltYXJ5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtcmlwcGxlLWVsZW1lbnRbX25nY29udGVudC0lQ09NUCVde2JhY2tncm91bmQtY29sb3I6cmdiYSgyNTUsMjU1LDI1NSwuMTIpfS5tYXQtdGFiLWdyb3VwLm1hdC1iYWNrZ3JvdW5kLWFjY2VudFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXRhYi1sYWJlbC5jZGsta2V5Ym9hcmQtZm9jdXNlZFtfbmdjb250ZW50LSVDT01QJV06bm90KC5tYXQtdGFiLWRpc2FibGVkKSwgLm1hdC10YWItZ3JvdXAubWF0LWJhY2tncm91bmQtYWNjZW50W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtdGFiLWxhYmVsLmNkay1wcm9ncmFtLWZvY3VzZWRbX25nY29udGVudC0lQ09NUCVdOm5vdCgubWF0LXRhYi1kaXNhYmxlZCksIC5tYXQtdGFiLWdyb3VwLm1hdC1iYWNrZ3JvdW5kLWFjY2VudFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXRhYi1saW5rLmNkay1rZXlib2FyZC1mb2N1c2VkW19uZ2NvbnRlbnQtJUNPTVAlXTpub3QoLm1hdC10YWItZGlzYWJsZWQpLCAubWF0LXRhYi1ncm91cC5tYXQtYmFja2dyb3VuZC1hY2NlbnRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC10YWItbGluay5jZGstcHJvZ3JhbS1mb2N1c2VkW19uZ2NvbnRlbnQtJUNPTVAlXTpub3QoLm1hdC10YWItZGlzYWJsZWQpLCAubWF0LXRhYi1uYXYtYmFyLm1hdC1iYWNrZ3JvdW5kLWFjY2VudFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXRhYi1sYWJlbC5jZGsta2V5Ym9hcmQtZm9jdXNlZFtfbmdjb250ZW50LSVDT01QJV06bm90KC5tYXQtdGFiLWRpc2FibGVkKSwgLm1hdC10YWItbmF2LWJhci5tYXQtYmFja2dyb3VuZC1hY2NlbnRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC10YWItbGFiZWwuY2RrLXByb2dyYW0tZm9jdXNlZFtfbmdjb250ZW50LSVDT01QJV06bm90KC5tYXQtdGFiLWRpc2FibGVkKSwgLm1hdC10YWItbmF2LWJhci5tYXQtYmFja2dyb3VuZC1hY2NlbnRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC10YWItbGluay5jZGsta2V5Ym9hcmQtZm9jdXNlZFtfbmdjb250ZW50LSVDT01QJV06bm90KC5tYXQtdGFiLWRpc2FibGVkKSwgLm1hdC10YWItbmF2LWJhci5tYXQtYmFja2dyb3VuZC1hY2NlbnRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC10YWItbGluay5jZGstcHJvZ3JhbS1mb2N1c2VkW19uZ2NvbnRlbnQtJUNPTVAlXTpub3QoLm1hdC10YWItZGlzYWJsZWQpe2JhY2tncm91bmQtY29sb3I6cmdiYSgyNTUsMTUyLDAsLjMpfS5tYXQtdGFiLWdyb3VwLm1hdC1iYWNrZ3JvdW5kLWFjY2VudFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXRhYi1oZWFkZXJbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXRhYi1ncm91cC5tYXQtYmFja2dyb3VuZC1hY2NlbnRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC10YWItbGlua3NbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXRhYi1ncm91cC5tYXQtYmFja2dyb3VuZC1hY2NlbnRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC10YWItaGVhZGVyLXBhZ2luYXRpb25bX25nY29udGVudC0lQ09NUCVdLCAubWF0LXRhYi1uYXYtYmFyLm1hdC1iYWNrZ3JvdW5kLWFjY2VudFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXRhYi1oZWFkZXJbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXRhYi1uYXYtYmFyLm1hdC1iYWNrZ3JvdW5kLWFjY2VudFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXRhYi1saW5rc1tfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdGFiLW5hdi1iYXIubWF0LWJhY2tncm91bmQtYWNjZW50W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtdGFiLWhlYWRlci1wYWdpbmF0aW9uW19uZ2NvbnRlbnQtJUNPTVAlXXtiYWNrZ3JvdW5kLWNvbG9yOiNmZjk4MDB9Lm1hdC10YWItZ3JvdXAubWF0LWJhY2tncm91bmQtYWNjZW50W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtdGFiLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10YWItZ3JvdXAubWF0LWJhY2tncm91bmQtYWNjZW50W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtdGFiLWxpbmtbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXRhYi1uYXYtYmFyLm1hdC1iYWNrZ3JvdW5kLWFjY2VudFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXRhYi1sYWJlbFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdGFiLW5hdi1iYXIubWF0LWJhY2tncm91bmQtYWNjZW50W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtdGFiLWxpbmtbX25nY29udGVudC0lQ09NUCVde2NvbG9yOiNmZmZ9Lm1hdC10YWItZ3JvdXAubWF0LWJhY2tncm91bmQtYWNjZW50W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtdGFiLWxhYmVsLm1hdC10YWItZGlzYWJsZWRbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXRhYi1ncm91cC5tYXQtYmFja2dyb3VuZC1hY2NlbnRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC10YWItbGluay5tYXQtdGFiLWRpc2FibGVkW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10YWItbmF2LWJhci5tYXQtYmFja2dyb3VuZC1hY2NlbnRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC10YWItbGFiZWwubWF0LXRhYi1kaXNhYmxlZFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdGFiLW5hdi1iYXIubWF0LWJhY2tncm91bmQtYWNjZW50W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtdGFiLWxpbmsubWF0LXRhYi1kaXNhYmxlZFtfbmdjb250ZW50LSVDT01QJV17Y29sb3I6cmdiYSgyNTUsMjU1LDI1NSwuNCl9Lm1hdC10YWItZ3JvdXAubWF0LWJhY2tncm91bmQtYWNjZW50W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtdGFiLWhlYWRlci1wYWdpbmF0aW9uLWNoZXZyb25bX25nY29udGVudC0lQ09NUCVdLCAubWF0LXRhYi1uYXYtYmFyLm1hdC1iYWNrZ3JvdW5kLWFjY2VudFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXRhYi1oZWFkZXItcGFnaW5hdGlvbi1jaGV2cm9uW19uZ2NvbnRlbnQtJUNPTVAlXXtib3JkZXItY29sb3I6I2ZmZn0ubWF0LXRhYi1ncm91cC5tYXQtYmFja2dyb3VuZC1hY2NlbnRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC10YWItaGVhZGVyLXBhZ2luYXRpb24tZGlzYWJsZWRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC10YWItaGVhZGVyLXBhZ2luYXRpb24tY2hldnJvbltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdGFiLW5hdi1iYXIubWF0LWJhY2tncm91bmQtYWNjZW50W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtdGFiLWhlYWRlci1wYWdpbmF0aW9uLWRpc2FibGVkW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtdGFiLWhlYWRlci1wYWdpbmF0aW9uLWNoZXZyb25bX25nY29udGVudC0lQ09NUCVde2JvcmRlci1jb2xvcjpyZ2JhKDI1NSwyNTUsMjU1LC40KX0ubWF0LXRhYi1ncm91cC5tYXQtYmFja2dyb3VuZC1hY2NlbnRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1yaXBwbGUtZWxlbWVudFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdGFiLW5hdi1iYXIubWF0LWJhY2tncm91bmQtYWNjZW50W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtcmlwcGxlLWVsZW1lbnRbX25nY29udGVudC0lQ09NUCVde2JhY2tncm91bmQtY29sb3I6cmdiYSgyNTUsMjU1LDI1NSwuMTIpfS5tYXQtdGFiLWdyb3VwLm1hdC1iYWNrZ3JvdW5kLXdhcm5bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC10YWItbGFiZWwuY2RrLWtleWJvYXJkLWZvY3VzZWRbX25nY29udGVudC0lQ09NUCVdOm5vdCgubWF0LXRhYi1kaXNhYmxlZCksIC5tYXQtdGFiLWdyb3VwLm1hdC1iYWNrZ3JvdW5kLXdhcm5bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC10YWItbGFiZWwuY2RrLXByb2dyYW0tZm9jdXNlZFtfbmdjb250ZW50LSVDT01QJV06bm90KC5tYXQtdGFiLWRpc2FibGVkKSwgLm1hdC10YWItZ3JvdXAubWF0LWJhY2tncm91bmQtd2Fybltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXRhYi1saW5rLmNkay1rZXlib2FyZC1mb2N1c2VkW19uZ2NvbnRlbnQtJUNPTVAlXTpub3QoLm1hdC10YWItZGlzYWJsZWQpLCAubWF0LXRhYi1ncm91cC5tYXQtYmFja2dyb3VuZC13YXJuW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtdGFiLWxpbmsuY2RrLXByb2dyYW0tZm9jdXNlZFtfbmdjb250ZW50LSVDT01QJV06bm90KC5tYXQtdGFiLWRpc2FibGVkKSwgLm1hdC10YWItbmF2LWJhci5tYXQtYmFja2dyb3VuZC13YXJuW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtdGFiLWxhYmVsLmNkay1rZXlib2FyZC1mb2N1c2VkW19uZ2NvbnRlbnQtJUNPTVAlXTpub3QoLm1hdC10YWItZGlzYWJsZWQpLCAubWF0LXRhYi1uYXYtYmFyLm1hdC1iYWNrZ3JvdW5kLXdhcm5bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC10YWItbGFiZWwuY2RrLXByb2dyYW0tZm9jdXNlZFtfbmdjb250ZW50LSVDT01QJV06bm90KC5tYXQtdGFiLWRpc2FibGVkKSwgLm1hdC10YWItbmF2LWJhci5tYXQtYmFja2dyb3VuZC13YXJuW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtdGFiLWxpbmsuY2RrLWtleWJvYXJkLWZvY3VzZWRbX25nY29udGVudC0lQ09NUCVdOm5vdCgubWF0LXRhYi1kaXNhYmxlZCksIC5tYXQtdGFiLW5hdi1iYXIubWF0LWJhY2tncm91bmQtd2Fybltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXRhYi1saW5rLmNkay1wcm9ncmFtLWZvY3VzZWRbX25nY29udGVudC0lQ09NUCVdOm5vdCgubWF0LXRhYi1kaXNhYmxlZCl7YmFja2dyb3VuZC1jb2xvcjpyZ2JhKDI1NSwyMDUsMjEwLC4zKX0ubWF0LXRhYi1ncm91cC5tYXQtYmFja2dyb3VuZC13YXJuW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtdGFiLWhlYWRlcltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdGFiLWdyb3VwLm1hdC1iYWNrZ3JvdW5kLXdhcm5bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC10YWItbGlua3NbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXRhYi1ncm91cC5tYXQtYmFja2dyb3VuZC13YXJuW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtdGFiLWhlYWRlci1wYWdpbmF0aW9uW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10YWItbmF2LWJhci5tYXQtYmFja2dyb3VuZC13YXJuW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtdGFiLWhlYWRlcltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdGFiLW5hdi1iYXIubWF0LWJhY2tncm91bmQtd2Fybltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXRhYi1saW5rc1tfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdGFiLW5hdi1iYXIubWF0LWJhY2tncm91bmQtd2Fybltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXRhYi1oZWFkZXItcGFnaW5hdGlvbltfbmdjb250ZW50LSVDT01QJV17YmFja2dyb3VuZC1jb2xvcjojZjQ0MzM2fS5tYXQtdGFiLWdyb3VwLm1hdC1iYWNrZ3JvdW5kLXdhcm5bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC10YWItbGFiZWxbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXRhYi1ncm91cC5tYXQtYmFja2dyb3VuZC13YXJuW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtdGFiLWxpbmtbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXRhYi1uYXYtYmFyLm1hdC1iYWNrZ3JvdW5kLXdhcm5bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC10YWItbGFiZWxbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXRhYi1uYXYtYmFyLm1hdC1iYWNrZ3JvdW5kLXdhcm5bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC10YWItbGlua1tfbmdjb250ZW50LSVDT01QJV17Y29sb3I6I2ZmZn0ubWF0LXRhYi1ncm91cC5tYXQtYmFja2dyb3VuZC13YXJuW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtdGFiLWxhYmVsLm1hdC10YWItZGlzYWJsZWRbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXRhYi1ncm91cC5tYXQtYmFja2dyb3VuZC13YXJuW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtdGFiLWxpbmsubWF0LXRhYi1kaXNhYmxlZFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdGFiLW5hdi1iYXIubWF0LWJhY2tncm91bmQtd2Fybltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXRhYi1sYWJlbC5tYXQtdGFiLWRpc2FibGVkW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10YWItbmF2LWJhci5tYXQtYmFja2dyb3VuZC13YXJuW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtdGFiLWxpbmsubWF0LXRhYi1kaXNhYmxlZFtfbmdjb250ZW50LSVDT01QJV17Y29sb3I6cmdiYSgyNTUsMjU1LDI1NSwuNCl9Lm1hdC10YWItZ3JvdXAubWF0LWJhY2tncm91bmQtd2Fybltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXRhYi1oZWFkZXItcGFnaW5hdGlvbi1jaGV2cm9uW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10YWItbmF2LWJhci5tYXQtYmFja2dyb3VuZC13YXJuW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtdGFiLWhlYWRlci1wYWdpbmF0aW9uLWNoZXZyb25bX25nY29udGVudC0lQ09NUCVde2JvcmRlci1jb2xvcjojZmZmfS5tYXQtdGFiLWdyb3VwLm1hdC1iYWNrZ3JvdW5kLXdhcm5bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC10YWItaGVhZGVyLXBhZ2luYXRpb24tZGlzYWJsZWRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC10YWItaGVhZGVyLXBhZ2luYXRpb24tY2hldnJvbltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdGFiLW5hdi1iYXIubWF0LWJhY2tncm91bmQtd2Fybltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXRhYi1oZWFkZXItcGFnaW5hdGlvbi1kaXNhYmxlZFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXRhYi1oZWFkZXItcGFnaW5hdGlvbi1jaGV2cm9uW19uZ2NvbnRlbnQtJUNPTVAlXXtib3JkZXItY29sb3I6cmdiYSgyNTUsMjU1LDI1NSwuNCl9Lm1hdC10YWItZ3JvdXAubWF0LWJhY2tncm91bmQtd2Fybltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXJpcHBsZS1lbGVtZW50W19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10YWItbmF2LWJhci5tYXQtYmFja2dyb3VuZC13YXJuW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtcmlwcGxlLWVsZW1lbnRbX25nY29udGVudC0lQ09NUCVde2JhY2tncm91bmQtY29sb3I6cmdiYSgyNTUsMjU1LDI1NSwuMTIpfS5tYXQtdG9vbGJhcltfbmdjb250ZW50LSVDT01QJV17YmFja2dyb3VuZDojZjVmNWY1O2NvbG9yOiMyMTIxMjF9Lm1hdC10b29sYmFyLm1hdC1wcmltYXJ5W19uZ2NvbnRlbnQtJUNPTVAlXXtiYWNrZ3JvdW5kOiNmNTdjMDA7Y29sb3I6I2ZmZn0ubWF0LXRvb2xiYXIubWF0LWFjY2VudFtfbmdjb250ZW50LSVDT01QJV17YmFja2dyb3VuZDojZmY5ODAwO2NvbG9yOiNmZmZ9Lm1hdC10b29sYmFyLm1hdC13YXJuW19uZ2NvbnRlbnQtJUNPTVAlXXtiYWNrZ3JvdW5kOiNmNDQzMzY7Y29sb3I6I2ZmZn0ubWF0LXRvb2xiYXJbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLXVuZGVybGluZVtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdG9vbGJhcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtcmlwcGxlW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10b29sYmFyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9jdXNlZFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtcmlwcGxlW19uZ2NvbnRlbnQtJUNPTVAlXXtiYWNrZ3JvdW5kLWNvbG9yOmN1cnJlbnRDb2xvcn0ubWF0LXRvb2xiYXJbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10b29sYmFyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9jdXNlZFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXRvb2xiYXJbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1zZWxlY3QtdmFsdWVbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXRvb2xiYXJbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1zZWxlY3QtYXJyb3dbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXRvb2xiYXJbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLm1hdC1mb2N1c2VkW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtc2VsZWN0LWFycm93W19uZ2NvbnRlbnQtJUNPTVAlXXtjb2xvcjppbmhlcml0fS5tYXQtdG9vbGJhcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWlucHV0LWVsZW1lbnRbX25nY29udGVudC0lQ09NUCVde2NhcmV0LWNvbG9yOmN1cnJlbnRDb2xvcn0ubWF0LXRvb2xiYXItbXVsdGlwbGUtcm93c1tfbmdjb250ZW50LSVDT01QJV17bWluLWhlaWdodDo2NHB4fS5tYXQtdG9vbGJhci1yb3dbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXRvb2xiYXItc2luZ2xlLXJvd1tfbmdjb250ZW50LSVDT01QJV17aGVpZ2h0OjY0cHh9QG1lZGlhKG1heC13aWR0aDogNTk5cHgpey5tYXQtdG9vbGJhci1tdWx0aXBsZS1yb3dzW19uZ2NvbnRlbnQtJUNPTVAlXXttaW4taGVpZ2h0OjU2cHh9Lm1hdC10b29sYmFyLXJvd1tfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdG9vbGJhci1zaW5nbGUtcm93W19uZ2NvbnRlbnQtJUNPTVAlXXtoZWlnaHQ6NTZweH19Lm1hdC10b29sdGlwW19uZ2NvbnRlbnQtJUNPTVAlXXtiYWNrZ3JvdW5kOnJnYmEoOTcsOTcsOTcsLjkpfS5tYXQtdHJlZVtfbmdjb250ZW50LSVDT01QJV17YmFja2dyb3VuZDojZmZmfS5tYXQtdHJlZS1ub2RlW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1uZXN0ZWQtdHJlZS1ub2RlW19uZ2NvbnRlbnQtJUNPTVAlXXtjb2xvcjojMjEyMTIxfS5tYXQtdHJlZS1ub2RlW19uZ2NvbnRlbnQtJUNPTVAlXXttaW4taGVpZ2h0OjQ4cHh9Lm1hdC1zbmFjay1iYXItY29udGFpbmVyW19uZ2NvbnRlbnQtJUNPTVAlXXtjb2xvcjpyZ2JhKDI1NSwyNTUsMjU1LC43KTtiYWNrZ3JvdW5kOiMzMjMyMzI7Ym94LXNoYWRvdzowcHggM3B4IDVweCAtMXB4IHJnYmEoMCwgMCwgMCwgMC4yKSwwcHggNnB4IDEwcHggMHB4IHJnYmEoMCwgMCwgMCwgMC4xNCksMHB4IDFweCAxOHB4IDBweCByZ2JhKDAsIDAsIDAsIDAuMTIpfS5tYXQtc2ltcGxlLXNuYWNrYmFyLWFjdGlvbltfbmdjb250ZW50LSVDT01QJV17Y29sb3I6I2ZmOTgwMH1tYXQtaWNvbltfbmdjb250ZW50LSVDT01QJV17ZmxleDpub25lO21hcmdpbi1yaWdodDo1cHh9W19uZ2hvc3QtJUNPTVAlXXtkaXNwbGF5OmZsZXg7cGFkZGluZzowIDEwcHg7cG9zaXRpb246cmVsYXRpdmU7Zm9udC1zaXplOi45ZW19W19uZ2hvc3QtJUNPTVAlXTpub3QoLnZhbGlkKXtjb2xvcjojYzYyODI4fVtfbmdob3N0LSVDT01QJV06bm90KC52YWxpZCkgICBpbnB1dFtfbmdjb250ZW50LSVDT01QJV17Y2FyZXQtY29sb3I6Y3VycmVudENvbG9yfSddLGNoYW5nZURldGVjdGlvbjowfSk7Y2xhc3MgQWd0e2NvbnN0cnVjdG9yKHQpe3RoaXMuc3RvcmU9dCx0aGlzLm1ldHJpY3NSZWdleCQ9dGhpcy5zdG9yZS5zZWxlY3QoTmR0KSx0aGlzLmFjdGl2ZVJ1bnMkPXRoaXMuc3RvcmUucGlwZShsdihLRCkpLnBpcGUoZnQoKHQ9PnQ/QXJyYXkuZnJvbSh0LmVudHJpZXMoKSkuZmlsdGVyKCh0PT50WzFdKSkubWFwKCh0PT50WzBdKSk6W10pKSksdGhpcy5tZXRyaWNzRm9yQWN0aXZlUnVucyQ9RXQodGhpcy5hY3RpdmVSdW5zJCx0aGlzLnN0b3JlLnNlbGVjdChBZHQpKS5waXBlKGZ0KCgoW3Qsbl0pPT57Y29uc3QgZT1uZXcgU2V0O2Zvcihjb25zdCBhIG9mIHQpaWYoblthXSlmb3IoY29uc3QgdCBvZiBuW2FdKWUuYWRkKHQpO3JldHVyblsuLi5lXX0pKSksdGhpcy5pc01ldHJpY3NGaWx0ZXJWYWxpZCQ9dGhpcy5tZXRyaWNzUmVnZXgkLnBpcGUoZnQoKHQ9Pnt0cnl7cmV0dXJuIEJvb2xlYW4obmV3IFJlZ0V4cCh0KSl9Y2F0Y2godCl7cmV0dXJuITF9fSkpKSx0aGlzLm1ldHJpY0ZpbHRlcktleXMkPXRoaXMuc3RvcmUucGlwZShsdihMZHQpKS5waXBlKGZ0KCh0PT5PYmplY3Qua2V5cyh0KSkpKSx0aGlzLmNvbXBsZXRpb25zJD1FdCh0aGlzLm1ldHJpY3NGb3JBY3RpdmVSdW5zJCx0aGlzLm1ldHJpY3NSZWdleCQsdGhpcy5tZXRyaWNGaWx0ZXJLZXlzJCkucGlwZShmdCgoKFt0LG4sZV0pPT57Y29uc3QgYT10LmZpbHRlcigodD0+IWUuaW5jbHVkZXModCkpKTt0cnl7Y29uc3QgdD1uZXcgUmVnRXhwKG4sImkiKTtyZXR1cm4gYS5maWx0ZXIoKG49PnQudGVzdChuKSkpLnNvcnQoKX1jYXRjaCh0KXtyZXR1cm5bXX19KSkpfW9uRmlsdGVyQ2hhbmdlKHQpe3RoaXMuc3RvcmUuZGlzcGF0Y2goaWd0KHtyZWdleDp0fSkpfW9uQWRkRmlsdGVyKHQpe3RoaXMuc3RvcmUuZGlzcGF0Y2goY2d0KHttZXRyaWM6dH0pKSx0aGlzLnN0b3JlLmRpc3BhdGNoKGlndCh7cmVnZXg6IiJ9KSl9fWZ1bmN0aW9uIHpndCh0LG4sZSl7Y29uc3QgYT1bW24sLi4uZV1dO2lmKCFlLmxlbmd0aHx8IXQubGVuZ3RoKXJldHVybiJkYXRhOnRleHQvY3N2O2NoYXJzZXQ9dXRmLTgsIithLm1hcCgodD0+dC5qb2luKCIsIikpKS5qb2luKCJcbiIpO2NvbnN0IG89ZS5tYXAoKHQ9PmtndCh0KSkpO2Zvcihjb25zdFtlLHJdb2YgdCl7Y29uc3QgdD1yLmZpbHRlcigodD0+dC5ydW49PT1uKSk7aWYodC5sZW5ndGgpe2NvbnN0IG49W2VdO2Zvcihjb25zdCBlIG9mIG8pe2NvbnN0IGE9dC5maW5kKCh0PT50Lm1ldHJpYz09PWUpKTtuLnB1c2godm9pZCAwPT09YT8ibnVsbCI6YCR7YS5uUE1JVmFsdWV9YCl9YS5wdXNoKG4pfX1yZXR1cm4iZGF0YTp0ZXh0L2NzdjtjaGFyc2V0PXV0Zi04LCIrYS5tYXAoKHQ9PnQuam9pbigiLCIpKSkuam9pbigiXG4iKX1BZ3QuybVmYWM9ZnVuY3Rpb24gdChuKXtyZXR1cm4gbmV3KG58fEFndCkoWmcoY3YpKX0sQWd0Lsm1Y21wPV9vKHt0eXBlOkFndCxzZWxlY3RvcnM6W1sibnBtaS1tZXRyaWMtc2VhcmNoIl1dLGRlY2xzOjQsdmFyczo5LGNvbnN0czpbWzMsInJlZ2V4RmlsdGVyVmFsdWUiLCJjb21wbGV0aW9ucyIsImlzUmVnZXhGaWx0ZXJWYWxpZCIsIm9uUmVnZXhGaWx0ZXJWYWx1ZUNoYW5nZSIsIm9uQWRkRmlsdGVyIl1dLHRlbXBsYXRlOmZ1bmN0aW9uIHQobixlKXsxJm4mJihLZygwLCJtZXRyaWMtc2VhcmNoLWNvbXBvbmVudCIsMCksY3AoIm9uUmVnZXhGaWx0ZXJWYWx1ZUNoYW5nZSIsKGZ1bmN0aW9uIHQobil7cmV0dXJuIGUub25GaWx0ZXJDaGFuZ2Uobil9KSkoIm9uQWRkRmlsdGVyIiwoZnVuY3Rpb24gdChuKXtyZXR1cm4gZS5vbkFkZEZpbHRlcihuKX0pKSx5ZigxLCJhc3luYyIpLHlmKDIsImFzeW5jIikseWYoMywiYXN5bmMiKSwkZygpKSwyJm4mJkpnKCJyZWdleEZpbHRlclZhbHVlIixrZigxLDMsZS5tZXRyaWNzUmVnZXgkKSkoImNvbXBsZXRpb25zIixrZigyLDUsZS5jb21wbGV0aW9ucyQpKSgiaXNSZWdleEZpbHRlclZhbGlkIixrZigzLDcsZS5pc01ldHJpY3NGaWx0ZXJWYWxpZCQpKX0sZGlyZWN0aXZlczpbRWd0XSxwaXBlczpbb09dLGVuY2Fwc3VsYXRpb246MixjaGFuZ2VEZXRlY3Rpb246MH0pO2NvbnN0IFJndD1mdW5jdGlvbih0KXtyZXR1cm57ImFjdGl2ZS1idXR0b24iOnR9fTtjbGFzcyBUZ3R7ZG93bmxvYWRSZXN1bHRzKCl7Zm9yKGNvbnN0IHQgb2YgdGhpcy5ydW5zKXtjb25zdCBuPXpndCh0aGlzLmZsYWdnZWREYXRhLHQsdGhpcy5tZXRyaWNzKSxlPWRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoImEiKTtlLnNldEF0dHJpYnV0ZSgiaHJlZiIsbiksZS5zZXRBdHRyaWJ1dGUoImRvd25sb2FkIixgcmVwb3J0XyR7dH0uY3N2YCksZS5jbGljaygpfX19VGd0Lsm1ZmFjPWZ1bmN0aW9uIHQobil7cmV0dXJuIG5ldyhufHxUZ3QpfSxUZ3QuybVjbXA9X28oe3R5cGU6VGd0LHNlbGVjdG9yczpbWyJyZXN1bHRzLWRvd25sb2FkLWNvbXBvbmVudCJdXSxpbnB1dHM6e251bUZsYWdnZWRBbm5vdGF0aW9uczoibnVtRmxhZ2dlZEFubm90YXRpb25zIixydW5zOiJydW5zIixmbGFnZ2VkRGF0YToiZmxhZ2dlZERhdGEiLG1ldHJpY3M6Im1ldHJpY3MifSxkZWNsczo0LHZhcnM6NSxjb25zdHM6W1sibWF0LXN0cm9rZWQtYnV0dG9uIiwiIiwidGl0bGUiLCJFeHBvcnQgQ1NWIHJlcG9ydHMgb2YgYWxsIGZsYWdnZWQgYW5ub3RhdGlvbnMuIFdpbGwgZ2VuZXJhdGUgb25lIENTViBwZXIgYWN0aXZlIHJ1bi4iLDMsImRpc2FibGVkIiwibmdDbGFzcyIsImNsaWNrIl0sWzEsImJ1dHRvbi1jb250ZW50cyJdLFsic3ZnSWNvbiIsImdldF9hcHBfMjRweCJdXSx0ZW1wbGF0ZTpmdW5jdGlvbiB0KG4sZSl7MSZuJiYoS2coMCwiYnV0dG9uIiwwKSxjcCgiY2xpY2siLChmdW5jdGlvbiB0KCl7cmV0dXJuIGUuZG93bmxvYWRSZXN1bHRzKCl9KSksS2coMSwic3BhbiIsMSksdHAoMiwibWF0LWljb24iLDIpLEpwKDMpLCRnKCksJGcoKSksMiZuJiYoSmcoImRpc2FibGVkIiwwPT09ZS5udW1GbGFnZ2VkQW5ub3RhdGlvbnMpKCJuZ0NsYXNzIix1ZigzLFJndCxlLm51bUZsYWdnZWRBbm5vdGF0aW9ucz4wKSksd3MoMyksS3AoIiBGbGFnZ2VkIFJvd3MgKCIsZS5udW1GbGFnZ2VkQW5ub3RhdGlvbnMsIikgIikpfSxkaXJlY3RpdmVzOltlQSxITSxCQl0sc3R5bGVzOlsnLm1hdC1iYWRnZS1jb250ZW50W19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXdlaWdodDo2MDA7Zm9udC1zaXplOjEycHg7Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmfS5tYXQtYmFkZ2Utc21hbGxbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1iYWRnZS1jb250ZW50W19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6OXB4fS5tYXQtYmFkZ2UtbGFyZ2VbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1iYWRnZS1jb250ZW50W19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MjRweH0ubWF0LWgxW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1oZWFkbGluZVtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdHlwb2dyYXBoeVtfbmdjb250ZW50LSVDT01QJV0gICBoMVtfbmdjb250ZW50LSVDT01QJV17Zm9udDo0MDAgMjRweC8zMnB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtsZXR0ZXItc3BhY2luZzpub3JtYWw7bWFyZ2luOjAgMCAxNnB4fS5tYXQtaDJbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXRpdGxlW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10eXBvZ3JhcGh5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIGgyW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250OjUwMCAyMHB4LzMycHggUm9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2xldHRlci1zcGFjaW5nOm5vcm1hbDttYXJnaW46MCAwIDE2cHh9Lm1hdC1oM1tfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtc3ViaGVhZGluZy0yW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10eXBvZ3JhcGh5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIGgzW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250OjQwMCAxNnB4LzI4cHggUm9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2xldHRlci1zcGFjaW5nOm5vcm1hbDttYXJnaW46MCAwIDE2cHh9Lm1hdC1oNFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtc3ViaGVhZGluZy0xW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10eXBvZ3JhcGh5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIGg0W19uZ2NvbnRlbnQtJUNPTVAlXXtmb250OjQwMCAxNXB4LzI0cHggUm9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2xldHRlci1zcGFjaW5nOm5vcm1hbDttYXJnaW46MCAwIDE2cHh9Lm1hdC1oNVtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdHlwb2dyYXBoeVtfbmdjb250ZW50LSVDT01QJV0gICBoNVtfbmdjb250ZW50LSVDT01QJV17Zm9udDo0MDAgY2FsYygxNHB4ICogMC44MykvMjBweCBSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7bWFyZ2luOjAgMCAxMnB4fS5tYXQtaDZbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXR5cG9ncmFwaHlbX25nY29udGVudC0lQ09NUCVdICAgaDZbX25nY29udGVudC0lQ09NUCVde2ZvbnQ6NDAwIGNhbGMoMTRweCAqIDAuNjcpLzIwcHggUm9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO21hcmdpbjowIDAgMTJweH0ubWF0LWJvZHktc3Ryb25nW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1ib2R5LTJbX25nY29udGVudC0lQ09NUCVde2ZvbnQ6NTAwIDE0cHgvMjRweCBSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7bGV0dGVyLXNwYWNpbmc6bm9ybWFsfS5tYXQtYm9keVtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtYm9keS0xW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10eXBvZ3JhcGh5W19uZ2NvbnRlbnQtJUNPTVAlXXtmb250OjQwMCAxNHB4LzIwcHggUm9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2xldHRlci1zcGFjaW5nOm5vcm1hbH0ubWF0LWJvZHlbX25nY29udGVudC0lQ09NUCVdICAgcFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtYm9keS0xW19uZ2NvbnRlbnQtJUNPTVAlXSAgIHBbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXR5cG9ncmFwaHlbX25nY29udGVudC0lQ09NUCVdICAgcFtfbmdjb250ZW50LSVDT01QJV17bWFyZ2luOjAgMCAxMnB4fS5tYXQtc21hbGxbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWNhcHRpb25bX25nY29udGVudC0lQ09NUCVde2ZvbnQ6NDAwIDEycHgvMjBweCBSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7bGV0dGVyLXNwYWNpbmc6bm9ybWFsfS5tYXQtZGlzcGxheS00W19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10eXBvZ3JhcGh5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZGlzcGxheS00W19uZ2NvbnRlbnQtJUNPTVAlXXtmb250OjMwMCAxMTJweC8xMTJweCBSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7bGV0dGVyLXNwYWNpbmc6LTAuMDVlbTttYXJnaW46MCAwIDU2cHh9Lm1hdC1kaXNwbGF5LTNbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXR5cG9ncmFwaHlbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1kaXNwbGF5LTNbX25nY29udGVudC0lQ09NUCVde2ZvbnQ6NDAwIDU2cHgvNTZweCBSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7bGV0dGVyLXNwYWNpbmc6LTAuMDJlbTttYXJnaW46MCAwIDY0cHh9Lm1hdC1kaXNwbGF5LTJbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXR5cG9ncmFwaHlbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1kaXNwbGF5LTJbX25nY29udGVudC0lQ09NUCVde2ZvbnQ6NDAwIDQ1cHgvNDhweCBSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7bGV0dGVyLXNwYWNpbmc6LTAuMDA1ZW07bWFyZ2luOjAgMCA2NHB4fS5tYXQtZGlzcGxheS0xW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10eXBvZ3JhcGh5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZGlzcGxheS0xW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250OjQwMCAzNHB4LzQwcHggUm9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2xldHRlci1zcGFjaW5nOm5vcm1hbDttYXJnaW46MCAwIDY0cHh9Lm1hdC1ib3R0b20tc2hlZXQtY29udGFpbmVyW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250OjQwMCAxNHB4LzIwcHggUm9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2xldHRlci1zcGFjaW5nOm5vcm1hbH0ubWF0LWJ1dHRvbltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtcmFpc2VkLWJ1dHRvbltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtaWNvbi1idXR0b25bX25nY29udGVudC0lQ09NUCVdLCAubWF0LXN0cm9rZWQtYnV0dG9uW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1mbGF0LWJ1dHRvbltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtZmFiW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1taW5pLWZhYltfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2ZvbnQtc2l6ZToxNHB4O2ZvbnQtd2VpZ2h0OjUwMH0ubWF0LWJ1dHRvbi10b2dnbGVbX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZn0ubWF0LWNhcmRbX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZn0ubWF0LWNhcmQtdGl0bGVbX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToyNHB4O2ZvbnQtd2VpZ2h0OjUwMH0ubWF0LWNhcmQtaGVhZGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtY2FyZC10aXRsZVtfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjIwcHh9Lm1hdC1jYXJkLXN1YnRpdGxlW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1jYXJkLWNvbnRlbnRbX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToxNHB4fS5tYXQtY2hlY2tib3hbX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZn0ubWF0LWNoZWNrYm94LWxheW91dFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWNoZWNrYm94LWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXtsaW5lLWhlaWdodDoyNHB4fS5tYXQtY2hpcFtfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjE0cHg7Zm9udC13ZWlnaHQ6NTAwfS5tYXQtY2hpcFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWNoaXAtdHJhaWxpbmctaWNvbi5tYXQtaWNvbltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtY2hpcFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWNoaXAtcmVtb3ZlLm1hdC1pY29uW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MThweH0ubWF0LXRhYmxlW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWZ9Lm1hdC1oZWFkZXItY2VsbFtfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjEycHg7Zm9udC13ZWlnaHQ6NTAwfS5tYXQtY2VsbFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtZm9vdGVyLWNlbGxbX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToxNHB4fS5tYXQtY2FsZW5kYXJbX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZn0ubWF0LWNhbGVuZGFyLWJvZHlbX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToxM3B4fS5tYXQtY2FsZW5kYXItYm9keS1sYWJlbFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtY2FsZW5kYXItcGVyaW9kLWJ1dHRvbltfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjE0cHg7Zm9udC13ZWlnaHQ6NTAwfS5tYXQtY2FsZW5kYXItdGFibGUtaGVhZGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIHRoW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MTFweDtmb250LXdlaWdodDo0MDB9Lm1hdC1kaWFsb2ctdGl0bGVbX25nY29udGVudC0lQ09NUCVde2ZvbnQ6NTAwIDIwcHgvMzJweCBSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7bGV0dGVyLXNwYWNpbmc6bm9ybWFsfS5tYXQtZXhwYW5zaW9uLXBhbmVsLWhlYWRlcltfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2ZvbnQtc2l6ZToxNXB4O2ZvbnQtd2VpZ2h0OjQwMH0ubWF0LWV4cGFuc2lvbi1wYW5lbC1jb250ZW50W19uZ2NvbnRlbnQtJUNPTVAlXXtmb250OjQwMCAxNHB4LzIwcHggUm9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2xldHRlci1zcGFjaW5nOm5vcm1hbH0ubWF0LWZvcm0tZmllbGRbX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZTppbmhlcml0O2ZvbnQtd2VpZ2h0OjQwMDtsaW5lLWhlaWdodDoxLjEyNTtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7bGV0dGVyLXNwYWNpbmc6bm9ybWFsfS5tYXQtZm9ybS1maWVsZC13cmFwcGVyW19uZ2NvbnRlbnQtJUNPTVAlXXtwYWRkaW5nLWJvdHRvbToxLjM0Mzc1ZW19Lm1hdC1mb3JtLWZpZWxkLXByZWZpeFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWljb25bX25nY29udGVudC0lQ09NUCVdLCAubWF0LWZvcm0tZmllbGQtc3VmZml4W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaWNvbltfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjE1MCU7bGluZS1oZWlnaHQ6MS4xMjV9Lm1hdC1mb3JtLWZpZWxkLXByZWZpeFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWljb24tYnV0dG9uW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1mb3JtLWZpZWxkLXN1ZmZpeFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWljb24tYnV0dG9uW19uZ2NvbnRlbnQtJUNPTVAlXXtoZWlnaHQ6MS41ZW07d2lkdGg6MS41ZW19Lm1hdC1mb3JtLWZpZWxkLXByZWZpeFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWljb24tYnV0dG9uW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaWNvbltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtZm9ybS1maWVsZC1zdWZmaXhbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pY29uLWJ1dHRvbltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWljb25bX25nY29udGVudC0lQ09NUCVde2hlaWdodDoxLjEyNWVtO2xpbmUtaGVpZ2h0OjEuMTI1fS5tYXQtZm9ybS1maWVsZC1pbmZpeFtfbmdjb250ZW50LSVDT01QJV17cGFkZGluZzouNWVtIDA7Ym9yZGVyLXRvcDouODQzNzVlbSBzb2xpZCB0cmFuc3BhcmVudH0ubWF0LWZvcm0tZmllbGQtY2FuLWZsb2F0Lm1hdC1mb3JtLWZpZWxkLXNob3VsZC1mbG9hdFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWZvcm0tZmllbGQtY2FuLWZsb2F0W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaW5wdXQtc2VydmVyW19uZ2NvbnRlbnQtJUNPTVAlXTpmb2N1cyArIC5tYXQtZm9ybS1maWVsZC1sYWJlbC13cmFwcGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17dHJhbnNmb3JtOnRyYW5zbGF0ZVkoLTEuMzQzNzVlbSkgc2NhbGUoMC43NSk7d2lkdGg6MTMzLjMzMzMzMzMzMzMlfS5tYXQtZm9ybS1maWVsZC1jYW4tZmxvYXRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pbnB1dC1zZXJ2ZXJbbGFiZWxdW19uZ2NvbnRlbnQtJUNPTVAlXTpub3QoOmxhYmVsLXNob3duKSArIC5tYXQtZm9ybS1maWVsZC1sYWJlbC13cmFwcGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17dHJhbnNmb3JtOnRyYW5zbGF0ZVkoLTEuMzQzNzRlbSkgc2NhbGUoMC43NSk7d2lkdGg6MTMzLjMzMzM0MzMzMzMlfS5tYXQtZm9ybS1maWVsZC1sYWJlbC13cmFwcGVyW19uZ2NvbnRlbnQtJUNPTVAlXXt0b3A6LTAuODQzNzVlbTtwYWRkaW5nLXRvcDouODQzNzVlbX0ubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVde3RvcDoxLjM0Mzc1ZW19Lm1hdC1mb3JtLWZpZWxkLXVuZGVybGluZVtfbmdjb250ZW50LSVDT01QJV17Ym90dG9tOjEuMzQzNzVlbX0ubWF0LWZvcm0tZmllbGQtc3Vic2NyaXB0LXdyYXBwZXJbX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZTo3NSU7bWFyZ2luLXRvcDouNjY2NjY2NjY2N2VtO3RvcDpjYWxjKDEwMCUgLSAxLjc5MTY2NjY2NjdlbSl9Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtbGVnYWN5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC13cmFwcGVyW19uZ2NvbnRlbnQtJUNPTVAlXXtwYWRkaW5nLWJvdHRvbToxLjI1ZW19Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtbGVnYWN5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1pbmZpeFtfbmdjb250ZW50LSVDT01QJV17cGFkZGluZzouNDM3NWVtIDB9Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtbGVnYWN5Lm1hdC1mb3JtLWZpZWxkLWNhbi1mbG9hdC5tYXQtZm9ybS1maWVsZC1zaG91bGQtZmxvYXRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtbGVnYWN5Lm1hdC1mb3JtLWZpZWxkLWNhbi1mbG9hdFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWlucHV0LXNlcnZlcltfbmdjb250ZW50LSVDT01QJV06Zm9jdXMgKyAubWF0LWZvcm0tZmllbGQtbGFiZWwtd3JhcHBlcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVde3RyYW5zZm9ybTp0cmFuc2xhdGVZKC0xLjI4MTI1ZW0pIHNjYWxlKDAuNzUpIHBlcnNwZWN0aXZlKDEwMHB4KSB0cmFuc2xhdGVaKDAuMDAxcHgpOy1tcy10cmFuc2Zvcm06dHJhbnNsYXRlWSgtMS4yODEyNWVtKSBzY2FsZSgwLjc1KTt3aWR0aDoxMzMuMzMzMzMzMzMzMyV9Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtbGVnYWN5Lm1hdC1mb3JtLWZpZWxkLWNhbi1mbG9hdFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtYXV0b2ZpbGwtY29udHJvbFtfbmdjb250ZW50LSVDT01QJV06LXdlYmtpdC1hdXRvZmlsbCArIC5tYXQtZm9ybS1maWVsZC1sYWJlbC13cmFwcGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17dHJhbnNmb3JtOnRyYW5zbGF0ZVkoLTEuMjgxMjVlbSkgc2NhbGUoMC43NSkgcGVyc3BlY3RpdmUoMTAwcHgpIHRyYW5zbGF0ZVooMC4wMDEwMXB4KTstbXMtdHJhbnNmb3JtOnRyYW5zbGF0ZVkoLTEuMjgxMjRlbSkgc2NhbGUoMC43NSk7d2lkdGg6MTMzLjMzMzM0MzMzMzMlfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWxlZ2FjeS5tYXQtZm9ybS1maWVsZC1jYW4tZmxvYXRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pbnB1dC1zZXJ2ZXJbbGFiZWxdW19uZ2NvbnRlbnQtJUNPTVAlXTpub3QoOmxhYmVsLXNob3duKSArIC5tYXQtZm9ybS1maWVsZC1sYWJlbC13cmFwcGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17dHJhbnNmb3JtOnRyYW5zbGF0ZVkoLTEuMjgxMjVlbSkgc2NhbGUoMC43NSkgcGVyc3BlY3RpdmUoMTAwcHgpIHRyYW5zbGF0ZVooMC4wMDEwMnB4KTstbXMtdHJhbnNmb3JtOnRyYW5zbGF0ZVkoLTEuMjgxMjNlbSkgc2NhbGUoMC43NSk7d2lkdGg6MTMzLjMzMzM1MzMzMzMlfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWxlZ2FjeVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVde3RvcDoxLjI4MTI1ZW19Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtbGVnYWN5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC11bmRlcmxpbmVbX25nY29udGVudC0lQ09NUCVde2JvdHRvbToxLjI1ZW19Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtbGVnYWN5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1zdWJzY3JpcHQtd3JhcHBlcltfbmdjb250ZW50LSVDT01QJV17bWFyZ2luLXRvcDouNTQxNjY2NjY2N2VtO3RvcDpjYWxjKDEwMCUgLSAxLjY2NjY2NjY2NjdlbSl9QG1lZGlhIHByaW50ey5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWxlZ2FjeS5tYXQtZm9ybS1maWVsZC1jYW4tZmxvYXQubWF0LWZvcm0tZmllbGQtc2hvdWxkLWZsb2F0W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWxlZ2FjeS5tYXQtZm9ybS1maWVsZC1jYW4tZmxvYXRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pbnB1dC1zZXJ2ZXJbX25nY29udGVudC0lQ09NUCVdOmZvY3VzICsgLm1hdC1mb3JtLWZpZWxkLWxhYmVsLXdyYXBwZXJbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXt0cmFuc2Zvcm06dHJhbnNsYXRlWSgtMS4yODEyMmVtKSBzY2FsZSgwLjc1KX0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1sZWdhY3kubWF0LWZvcm0tZmllbGQtY2FuLWZsb2F0W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1hdXRvZmlsbC1jb250cm9sW19uZ2NvbnRlbnQtJUNPTVAlXTotd2Via2l0LWF1dG9maWxsICsgLm1hdC1mb3JtLWZpZWxkLWxhYmVsLXdyYXBwZXJbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXt0cmFuc2Zvcm06dHJhbnNsYXRlWSgtMS4yODEyMWVtKSBzY2FsZSgwLjc1KX0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1sZWdhY3kubWF0LWZvcm0tZmllbGQtY2FuLWZsb2F0W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaW5wdXQtc2VydmVyW2xhYmVsXVtfbmdjb250ZW50LSVDT01QJV06bm90KDpsYWJlbC1zaG93bikgKyAubWF0LWZvcm0tZmllbGQtbGFiZWwtd3JhcHBlcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVde3RyYW5zZm9ybTp0cmFuc2xhdGVZKC0xLjI4MTJlbSkgc2NhbGUoMC43NSl9fS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWZpbGxbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWluZml4W19uZ2NvbnRlbnQtJUNPTVAlXXtwYWRkaW5nOi4yNWVtIDAgLjc1ZW0gMH0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1maWxsW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17dG9wOjEuMDkzNzVlbTttYXJnaW4tdG9wOi0wLjVlbX0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1maWxsLm1hdC1mb3JtLWZpZWxkLWNhbi1mbG9hdC5tYXQtZm9ybS1maWVsZC1zaG91bGQtZmxvYXRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtZmlsbC5tYXQtZm9ybS1maWVsZC1jYW4tZmxvYXRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pbnB1dC1zZXJ2ZXJbX25nY29udGVudC0lQ09NUCVdOmZvY3VzICsgLm1hdC1mb3JtLWZpZWxkLWxhYmVsLXdyYXBwZXJbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXt0cmFuc2Zvcm06dHJhbnNsYXRlWSgtMC41OTM3NWVtKSBzY2FsZSgwLjc1KTt3aWR0aDoxMzMuMzMzMzMzMzMzMyV9Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtZmlsbC5tYXQtZm9ybS1maWVsZC1jYW4tZmxvYXRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pbnB1dC1zZXJ2ZXJbbGFiZWxdW19uZ2NvbnRlbnQtJUNPTVAlXTpub3QoOmxhYmVsLXNob3duKSArIC5tYXQtZm9ybS1maWVsZC1sYWJlbC13cmFwcGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17dHJhbnNmb3JtOnRyYW5zbGF0ZVkoLTAuNTkzNzRlbSkgc2NhbGUoMC43NSk7d2lkdGg6MTMzLjMzMzM0MzMzMzMlfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLW91dGxpbmVbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWluZml4W19uZ2NvbnRlbnQtJUNPTVAlXXtwYWRkaW5nOjFlbSAwIDFlbSAwfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLW91dGxpbmVbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXt0b3A6MS44NDM3NWVtO21hcmdpbi10b3A6LTAuMjVlbX0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1vdXRsaW5lLm1hdC1mb3JtLWZpZWxkLWNhbi1mbG9hdC5tYXQtZm9ybS1maWVsZC1zaG91bGQtZmxvYXRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2Utb3V0bGluZS5tYXQtZm9ybS1maWVsZC1jYW4tZmxvYXRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pbnB1dC1zZXJ2ZXJbX25nY29udGVudC0lQ09NUCVdOmZvY3VzICsgLm1hdC1mb3JtLWZpZWxkLWxhYmVsLXdyYXBwZXJbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXt0cmFuc2Zvcm06dHJhbnNsYXRlWSgtMS41OTM3NWVtKSBzY2FsZSgwLjc1KTt3aWR0aDoxMzMuMzMzMzMzMzMzMyV9Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2Utb3V0bGluZS5tYXQtZm9ybS1maWVsZC1jYW4tZmxvYXRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pbnB1dC1zZXJ2ZXJbbGFiZWxdW19uZ2NvbnRlbnQtJUNPTVAlXTpub3QoOmxhYmVsLXNob3duKSArIC5tYXQtZm9ybS1maWVsZC1sYWJlbC13cmFwcGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17dHJhbnNmb3JtOnRyYW5zbGF0ZVkoLTEuNTkzNzRlbSkgc2NhbGUoMC43NSk7d2lkdGg6MTMzLjMzMzM0MzMzMzMlfS5tYXQtZ3JpZC10aWxlLWhlYWRlcltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtZ3JpZC10aWxlLWZvb3Rlcltfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjE0cHh9Lm1hdC1ncmlkLXRpbGUtaGVhZGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGluZVtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtZ3JpZC10aWxlLWZvb3Rlcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpbmVbX25nY29udGVudC0lQ09NUCVde3doaXRlLXNwYWNlOm5vd3JhcDtvdmVyZmxvdzpoaWRkZW47dGV4dC1vdmVyZmxvdzplbGxpcHNpcztkaXNwbGF5OmJsb2NrO2JveC1zaXppbmc6Ym9yZGVyLWJveH0ubWF0LWdyaWQtdGlsZS1oZWFkZXJbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saW5lW19uZ2NvbnRlbnQtJUNPTVAlXTpudGgtY2hpbGQobisyKSwgLm1hdC1ncmlkLXRpbGUtZm9vdGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGluZVtfbmdjb250ZW50LSVDT01QJV06bnRoLWNoaWxkKG4rMil7Zm9udC1zaXplOjEycHh9aW5wdXQubWF0LWlucHV0LWVsZW1lbnRbX25nY29udGVudC0lQ09NUCVde21hcmdpbi10b3A6LTAuMDYyNWVtfS5tYXQtbWVudS1pdGVtW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7Zm9udC1zaXplOjE0cHg7Zm9udC13ZWlnaHQ6NDAwfS5tYXQtcGFnaW5hdG9yW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1wYWdpbmF0b3ItcGFnZS1zaXplW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtc2VsZWN0LXRyaWdnZXJbX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtmb250LXNpemU6MTJweH0ubWF0LXJhZGlvLWJ1dHRvbltfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmfS5tYXQtc2VsZWN0W19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWZ9Lm1hdC1zZWxlY3QtdHJpZ2dlcltfbmdjb250ZW50LSVDT01QJV17aGVpZ2h0OjEuMTI1ZW19Lm1hdC1zbGlkZS10b2dnbGUtY29udGVudFtfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmfS5tYXQtc2xpZGVyLXRodW1iLWxhYmVsLXRleHRbX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtmb250LXNpemU6MTJweDtmb250LXdlaWdodDo1MDB9Lm1hdC1zdGVwcGVyLXZlcnRpY2FsW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1zdGVwcGVyLWhvcml6b250YWxbX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZn0ubWF0LXN0ZXAtbGFiZWxbX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToxNHB4O2ZvbnQtd2VpZ2h0OjQwMH0ubWF0LXN0ZXAtc3ViLWxhYmVsLWVycm9yW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXdlaWdodDpub3JtYWx9Lm1hdC1zdGVwLWxhYmVsLWVycm9yW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MTRweH0ubWF0LXN0ZXAtbGFiZWwtc2VsZWN0ZWRbX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToxNHB4O2ZvbnQtd2VpZ2h0OjUwMH0ubWF0LXRhYi1ncm91cFtfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmfS5tYXQtdGFiLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10YWItbGlua1tfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2ZvbnQtc2l6ZToxNHB4O2ZvbnQtd2VpZ2h0OjUwMH0ubWF0LXRvb2xiYXJbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXRvb2xiYXJbX25nY29udGVudC0lQ09NUCVdICAgaDFbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXRvb2xiYXJbX25nY29udGVudC0lQ09NUCVdICAgaDJbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXRvb2xiYXJbX25nY29udGVudC0lQ09NUCVdICAgaDNbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXRvb2xiYXJbX25nY29udGVudC0lQ09NUCVdICAgaDRbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXRvb2xiYXJbX25nY29udGVudC0lQ09NUCVdICAgaDVbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXRvb2xiYXJbX25nY29udGVudC0lQ09NUCVdICAgaDZbX25nY29udGVudC0lQ09NUCVde2ZvbnQ6NTAwIDIwcHgvMzJweCBSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7bGV0dGVyLXNwYWNpbmc6bm9ybWFsO21hcmdpbjowfS5tYXQtdG9vbHRpcFtfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2ZvbnQtc2l6ZToxMHB4O3BhZGRpbmctdG9wOjZweDtwYWRkaW5nLWJvdHRvbTo2cHh9Lm1hdC10b29sdGlwLWhhbmRzZXRbX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToxNHB4O3BhZGRpbmctdG9wOjhweDtwYWRkaW5nLWJvdHRvbTo4cHh9Lm1hdC1saXN0LWl0ZW1bX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZn0ubWF0LWxpc3Qtb3B0aW9uW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWZ9Lm1hdC1saXN0LWJhc2VbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saXN0LWl0ZW1bX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToxNnB4fS5tYXQtbGlzdC1iYXNlW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGlzdC1pdGVtW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGluZVtfbmdjb250ZW50LSVDT01QJV17d2hpdGUtc3BhY2U6bm93cmFwO292ZXJmbG93OmhpZGRlbjt0ZXh0LW92ZXJmbG93OmVsbGlwc2lzO2Rpc3BsYXk6YmxvY2s7Ym94LXNpemluZzpib3JkZXItYm94fS5tYXQtbGlzdC1iYXNlW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGlzdC1pdGVtW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGluZVtfbmdjb250ZW50LSVDT01QJV06bnRoLWNoaWxkKG4rMil7Zm9udC1zaXplOjE0cHh9Lm1hdC1saXN0LWJhc2VbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saXN0LW9wdGlvbltfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjE2cHh9Lm1hdC1saXN0LWJhc2VbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saXN0LW9wdGlvbltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpbmVbX25nY29udGVudC0lQ09NUCVde3doaXRlLXNwYWNlOm5vd3JhcDtvdmVyZmxvdzpoaWRkZW47dGV4dC1vdmVyZmxvdzplbGxpcHNpcztkaXNwbGF5OmJsb2NrO2JveC1zaXppbmc6Ym9yZGVyLWJveH0ubWF0LWxpc3QtYmFzZVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpc3Qtb3B0aW9uW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGluZVtfbmdjb250ZW50LSVDT01QJV06bnRoLWNoaWxkKG4rMil7Zm9udC1zaXplOjE0cHh9Lm1hdC1saXN0LWJhc2VbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1zdWJoZWFkZXJbX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtmb250LXNpemU6MTRweDtmb250LXdlaWdodDo1MDB9Lm1hdC1saXN0LWJhc2VbZGVuc2VdW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGlzdC1pdGVtW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MTJweH0ubWF0LWxpc3QtYmFzZVtkZW5zZV1bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saXN0LWl0ZW1bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saW5lW19uZ2NvbnRlbnQtJUNPTVAlXXt3aGl0ZS1zcGFjZTpub3dyYXA7b3ZlcmZsb3c6aGlkZGVuO3RleHQtb3ZlcmZsb3c6ZWxsaXBzaXM7ZGlzcGxheTpibG9jaztib3gtc2l6aW5nOmJvcmRlci1ib3h9Lm1hdC1saXN0LWJhc2VbZGVuc2VdW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGlzdC1pdGVtW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGluZVtfbmdjb250ZW50LSVDT01QJV06bnRoLWNoaWxkKG4rMil7Zm9udC1zaXplOjEycHh9Lm1hdC1saXN0LWJhc2VbZGVuc2VdW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGlzdC1vcHRpb25bX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToxMnB4fS5tYXQtbGlzdC1iYXNlW2RlbnNlXVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpc3Qtb3B0aW9uW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGluZVtfbmdjb250ZW50LSVDT01QJV17d2hpdGUtc3BhY2U6bm93cmFwO292ZXJmbG93OmhpZGRlbjt0ZXh0LW92ZXJmbG93OmVsbGlwc2lzO2Rpc3BsYXk6YmxvY2s7Ym94LXNpemluZzpib3JkZXItYm94fS5tYXQtbGlzdC1iYXNlW2RlbnNlXVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpc3Qtb3B0aW9uW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGluZVtfbmdjb250ZW50LSVDT01QJV06bnRoLWNoaWxkKG4rMil7Zm9udC1zaXplOjEycHh9Lm1hdC1saXN0LWJhc2VbZGVuc2VdW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtc3ViaGVhZGVyW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7Zm9udC1zaXplOjEycHg7Zm9udC13ZWlnaHQ6NTAwfS5tYXQtb3B0aW9uW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7Zm9udC1zaXplOjE2cHh9Lm1hdC1vcHRncm91cC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17Zm9udDo1MDAgMTRweC8yNHB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtsZXR0ZXItc3BhY2luZzpub3JtYWx9Lm1hdC1zaW1wbGUtc25hY2tiYXJbX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtmb250LXNpemU6MTRweH0ubWF0LXNpbXBsZS1zbmFja2Jhci1hY3Rpb25bX25nY29udGVudC0lQ09NUCVde2xpbmUtaGVpZ2h0OjE7Zm9udC1mYW1pbHk6aW5oZXJpdDtmb250LXNpemU6aW5oZXJpdDtmb250LXdlaWdodDo1MDB9Lm1hdC10cmVlW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWZ9Lm1hdC10cmVlLW5vZGVbX25nY29udGVudC0lQ09NUCVdLCAubWF0LW5lc3RlZC10cmVlLW5vZGVbX25nY29udGVudC0lQ09NUCVde2ZvbnQtd2VpZ2h0OjQwMDtmb250LXNpemU6MTRweH0ubWF0LXJpcHBsZVtfbmdjb250ZW50LSVDT01QJV17b3ZlcmZsb3c6aGlkZGVuO3Bvc2l0aW9uOnJlbGF0aXZlfS5tYXQtcmlwcGxlW19uZ2NvbnRlbnQtJUNPTVAlXTpub3QoOmVtcHR5KXt0cmFuc2Zvcm06dHJhbnNsYXRlWigwKX0ubWF0LXJpcHBsZS5tYXQtcmlwcGxlLXVuYm91bmRlZFtfbmdjb250ZW50LSVDT01QJV17b3ZlcmZsb3c6dmlzaWJsZX0ubWF0LXJpcHBsZS1lbGVtZW50W19uZ2NvbnRlbnQtJUNPTVAlXXtwb3NpdGlvbjphYnNvbHV0ZTtib3JkZXItcmFkaXVzOjUwJTtwb2ludGVyLWV2ZW50czpub25lO3RyYW5zaXRpb246b3BhY2l0eSx0cmFuc2Zvcm0gMG1zIGN1YmljLWJlemllcigwLCAwLCAwLjIsIDEpO3RyYW5zZm9ybTpzY2FsZSgwKX0uY2RrLWhpZ2gtY29udHJhc3QtYWN0aXZlW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtcmlwcGxlLWVsZW1lbnRbX25nY29udGVudC0lQ09NUCVde2Rpc3BsYXk6bm9uZX0uY2RrLXZpc3VhbGx5LWhpZGRlbltfbmdjb250ZW50LSVDT01QJV17Ym9yZGVyOjA7Y2xpcDpyZWN0KDAgMCAwIDApO2hlaWdodDoxcHg7bWFyZ2luOi0xcHg7b3ZlcmZsb3c6aGlkZGVuO3BhZGRpbmc6MDtwb3NpdGlvbjphYnNvbHV0ZTt3aWR0aDoxcHg7b3V0bGluZTowOy13ZWJraXQtYXBwZWFyYW5jZTpub25lOy1tb3otYXBwZWFyYW5jZTpub25lfS5jZGstb3ZlcmxheS1jb250YWluZXJbX25nY29udGVudC0lQ09NUCVdLCAuY2RrLWdsb2JhbC1vdmVybGF5LXdyYXBwZXJbX25nY29udGVudC0lQ09NUCVde3BvaW50ZXItZXZlbnRzOm5vbmU7dG9wOjA7bGVmdDowO2hlaWdodDoxMDAlO3dpZHRoOjEwMCV9LmNkay1vdmVybGF5LWNvbnRhaW5lcltfbmdjb250ZW50LSVDT01QJV17cG9zaXRpb246Zml4ZWQ7ei1pbmRleDoxMDAwfS5jZGstb3ZlcmxheS1jb250YWluZXJbX25nY29udGVudC0lQ09NUCVdOmVtcHR5e2Rpc3BsYXk6bm9uZX0uY2RrLWdsb2JhbC1vdmVybGF5LXdyYXBwZXJbX25nY29udGVudC0lQ09NUCVde2Rpc3BsYXk6ZmxleDtwb3NpdGlvbjphYnNvbHV0ZTt6LWluZGV4OjEwMDB9LmNkay1vdmVybGF5LXBhbmVbX25nY29udGVudC0lQ09NUCVde3Bvc2l0aW9uOmFic29sdXRlO3BvaW50ZXItZXZlbnRzOmF1dG87Ym94LXNpemluZzpib3JkZXItYm94O3otaW5kZXg6MTAwMDtkaXNwbGF5OmZsZXg7bWF4LXdpZHRoOjEwMCU7bWF4LWhlaWdodDoxMDAlfS5jZGstb3ZlcmxheS1iYWNrZHJvcFtfbmdjb250ZW50LSVDT01QJV17cG9zaXRpb246YWJzb2x1dGU7dG9wOjA7Ym90dG9tOjA7bGVmdDowO3JpZ2h0OjA7ei1pbmRleDoxMDAwO3BvaW50ZXItZXZlbnRzOmF1dG87LXdlYmtpdC10YXAtaGlnaGxpZ2h0LWNvbG9yOnRyYW5zcGFyZW50O3RyYW5zaXRpb246b3BhY2l0eSA0MDBtcyBjdWJpYy1iZXppZXIoMC4yNSwgMC44LCAwLjI1LCAxKTtvcGFjaXR5OjB9LmNkay1vdmVybGF5LWJhY2tkcm9wLmNkay1vdmVybGF5LWJhY2tkcm9wLXNob3dpbmdbX25nY29udGVudC0lQ09NUCVde29wYWNpdHk6MX1AbWVkaWEgc2NyZWVuIGFuZCAoLW1zLWhpZ2gtY29udHJhc3Q6IGFjdGl2ZSl7LmNkay1vdmVybGF5LWJhY2tkcm9wLmNkay1vdmVybGF5LWJhY2tkcm9wLXNob3dpbmdbX25nY29udGVudC0lQ09NUCVde29wYWNpdHk6LjZ9fS5jZGstb3ZlcmxheS1kYXJrLWJhY2tkcm9wW19uZ2NvbnRlbnQtJUNPTVAlXXtiYWNrZ3JvdW5kOnJnYmEoMCwwLDAsLjMyKX0uY2RrLW92ZXJsYXktdHJhbnNwYXJlbnQtYmFja2Ryb3BbX25nY29udGVudC0lQ09NUCVdLCAuY2RrLW92ZXJsYXktdHJhbnNwYXJlbnQtYmFja2Ryb3AuY2RrLW92ZXJsYXktYmFja2Ryb3Atc2hvd2luZ1tfbmdjb250ZW50LSVDT01QJV17b3BhY2l0eTowfS5jZGstb3ZlcmxheS1jb25uZWN0ZWQtcG9zaXRpb24tYm91bmRpbmctYm94W19uZ2NvbnRlbnQtJUNPTVAlXXtwb3NpdGlvbjphYnNvbHV0ZTt6LWluZGV4OjEwMDA7ZGlzcGxheTpmbGV4O2ZsZXgtZGlyZWN0aW9uOmNvbHVtbjttaW4td2lkdGg6MXB4O21pbi1oZWlnaHQ6MXB4fS5jZGstZ2xvYmFsLXNjcm9sbGJsb2NrW19uZ2NvbnRlbnQtJUNPTVAlXXtwb3NpdGlvbjpmaXhlZDt3aWR0aDoxMDAlO292ZXJmbG93LXk6c2Nyb2xsfUBrZXlmcmFtZXMgY2RrLXRleHQtZmllbGQtYXV0b2ZpbGwtc3RhcnR7fUBrZXlmcmFtZXMgY2RrLXRleHQtZmllbGQtYXV0b2ZpbGwtZW5ke30uY2RrLXRleHQtZmllbGQtYXV0b2ZpbGwtbW9uaXRvcmVkW19uZ2NvbnRlbnQtJUNPTVAlXTotd2Via2l0LWF1dG9maWxse2FuaW1hdGlvbjpjZGstdGV4dC1maWVsZC1hdXRvZmlsbC1zdGFydCAwcyAxbXN9LmNkay10ZXh0LWZpZWxkLWF1dG9maWxsLW1vbml0b3JlZFtfbmdjb250ZW50LSVDT01QJV06bm90KDotd2Via2l0LWF1dG9maWxsKXthbmltYXRpb246Y2RrLXRleHQtZmllbGQtYXV0b2ZpbGwtZW5kIDBzIDFtc310ZXh0YXJlYS5jZGstdGV4dGFyZWEtYXV0b3NpemVbX25nY29udGVudC0lQ09NUCVde3Jlc2l6ZTpub25lfXRleHRhcmVhLmNkay10ZXh0YXJlYS1hdXRvc2l6ZS1tZWFzdXJpbmdbX25nY29udGVudC0lQ09NUCVde3BhZGRpbmc6MnB4IDAgIWltcG9ydGFudDtib3gtc2l6aW5nOmNvbnRlbnQtYm94ICFpbXBvcnRhbnQ7aGVpZ2h0OmF1dG8gIWltcG9ydGFudDtvdmVyZmxvdzpoaWRkZW4gIWltcG9ydGFudH10ZXh0YXJlYS5jZGstdGV4dGFyZWEtYXV0b3NpemUtbWVhc3VyaW5nLWZpcmVmb3hbX25nY29udGVudC0lQ09NUCVde3BhZGRpbmc6MnB4IDAgIWltcG9ydGFudDtib3gtc2l6aW5nOmNvbnRlbnQtYm94ICFpbXBvcnRhbnQ7aGVpZ2h0OjAgIWltcG9ydGFudH0ubWF0LWZvY3VzLWluZGljYXRvcltfbmdjb250ZW50LSVDT01QJV17cG9zaXRpb246cmVsYXRpdmV9Lm1hdC1tZGMtZm9jdXMtaW5kaWNhdG9yW19uZ2NvbnRlbnQtJUNPTVAlXXtwb3NpdGlvbjpyZWxhdGl2ZX0ubWF0LXJpcHBsZS1lbGVtZW50W19uZ2NvbnRlbnQtJUNPTVAlXXtiYWNrZ3JvdW5kLWNvbG9yOnJnYmEoMCwwLDAsLjEpfS5tYXQtb3B0aW9uW19uZ2NvbnRlbnQtJUNPTVAlXXtjb2xvcjojMjEyMTIxfS5tYXQtb3B0aW9uW19uZ2NvbnRlbnQtJUNPTVAlXTpob3Zlcjpub3QoLm1hdC1vcHRpb24tZGlzYWJsZWQpLCAubWF0LW9wdGlvbltfbmdjb250ZW50LSVDT01QJV06Zm9jdXM6bm90KC5tYXQtb3B0aW9uLWRpc2FibGVkKXtiYWNrZ3JvdW5kOnJnYmEoMCwwLDAsLjA0KX0ubWF0LW9wdGlvbi5tYXQtc2VsZWN0ZWRbX25nY29udGVudC0lQ09NUCVdOm5vdCgubWF0LW9wdGlvbi1tdWx0aXBsZSk6bm90KC5tYXQtb3B0aW9uLWRpc2FibGVkKXtiYWNrZ3JvdW5kOnJnYmEoMCwwLDAsLjA0KX0ubWF0LW9wdGlvbi5tYXQtYWN0aXZlW19uZ2NvbnRlbnQtJUNPTVAlXXtiYWNrZ3JvdW5kOnJnYmEoMCwwLDAsLjA0KTtjb2xvcjojMjEyMTIxfS5tYXQtb3B0aW9uLm1hdC1vcHRpb24tZGlzYWJsZWRbX25nY29udGVudC0lQ09NUCVde2NvbG9yOnJnYmEoMCwwLDAsLjM4KX0ubWF0LXByaW1hcnlbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1vcHRpb24ubWF0LXNlbGVjdGVkW19uZ2NvbnRlbnQtJUNPTVAlXTpub3QoLm1hdC1vcHRpb24tZGlzYWJsZWQpe2NvbG9yOiNmNTdjMDB9Lm1hdC1hY2NlbnRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1vcHRpb24ubWF0LXNlbGVjdGVkW19uZ2NvbnRlbnQtJUNPTVAlXTpub3QoLm1hdC1vcHRpb24tZGlzYWJsZWQpe2NvbG9yOiNmZjk4MDB9Lm1hdC13YXJuW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtb3B0aW9uLm1hdC1zZWxlY3RlZFtfbmdjb250ZW50LSVDT01QJV06bm90KC5tYXQtb3B0aW9uLWRpc2FibGVkKXtjb2xvcjojZjQ0MzM2fS5tYXQtb3B0Z3JvdXAtbGFiZWxbX25nY29udGVudC0lQ09NUCVde2NvbG9yOiM2MTYxNjF9Lm1hdC1vcHRncm91cC1kaXNhYmxlZFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LW9wdGdyb3VwLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXtjb2xvcjpyZ2JhKDAsMCwwLC4zOCl9Lm1hdC1wc2V1ZG8tY2hlY2tib3hbX25nY29udGVudC0lQ09NUCVde2NvbG9yOiM2MTYxNjF9Lm1hdC1wc2V1ZG8tY2hlY2tib3hbX25nY29udGVudC0lQ09NUCVdOjphZnRlcntjb2xvcjojZmFmYWZhfS5tYXQtcHNldWRvLWNoZWNrYm94LWRpc2FibGVkW19uZ2NvbnRlbnQtJUNPTVAlXXtjb2xvcjojYjBiMGIwfS5tYXQtcHJpbWFyeVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXBzZXVkby1jaGVja2JveC1jaGVja2VkW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1wcmltYXJ5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtcHNldWRvLWNoZWNrYm94LWluZGV0ZXJtaW5hdGVbX25nY29udGVudC0lQ09NUCVde2JhY2tncm91bmQ6I2Y1N2MwMH0ubWF0LXBzZXVkby1jaGVja2JveC1jaGVja2VkW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1wc2V1ZG8tY2hlY2tib3gtaW5kZXRlcm1pbmF0ZVtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtYWNjZW50W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtcHNldWRvLWNoZWNrYm94LWNoZWNrZWRbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWFjY2VudFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXBzZXVkby1jaGVja2JveC1pbmRldGVybWluYXRlW19uZ2NvbnRlbnQtJUNPTVAlXXtiYWNrZ3JvdW5kOiNmZjk4MDB9Lm1hdC13YXJuW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtcHNldWRvLWNoZWNrYm94LWNoZWNrZWRbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXdhcm5bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1wc2V1ZG8tY2hlY2tib3gtaW5kZXRlcm1pbmF0ZVtfbmdjb250ZW50LSVDT01QJV17YmFja2dyb3VuZDojZjQ0MzM2fS5tYXQtcHNldWRvLWNoZWNrYm94LWNoZWNrZWQubWF0LXBzZXVkby1jaGVja2JveC1kaXNhYmxlZFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtcHNldWRvLWNoZWNrYm94LWluZGV0ZXJtaW5hdGUubWF0LXBzZXVkby1jaGVja2JveC1kaXNhYmxlZFtfbmdjb250ZW50LSVDT01QJV17YmFja2dyb3VuZDojYjBiMGIwfS5tYXQtYXBwLWJhY2tncm91bmRbX25nY29udGVudC0lQ09NUCVde2JhY2tncm91bmQtY29sb3I6I2ZhZmFmYTtjb2xvcjojMjEyMTIxfS5tYXQtZWxldmF0aW9uLXowW19uZ2NvbnRlbnQtJUNPTVAlXXtib3gtc2hhZG93OjBweCAwcHggMHB4IDBweCByZ2JhKDAsIDAsIDAsIDAuMiksMHB4IDBweCAwcHggMHB4IHJnYmEoMCwgMCwgMCwgMC4xNCksMHB4IDBweCAwcHggMHB4IHJnYmEoMCwgMCwgMCwgMC4xMil9Lm1hdC1lbGV2YXRpb24tejFbX25nY29udGVudC0lQ09NUCVde2JveC1zaGFkb3c6MHB4IDJweCAxcHggLTFweCByZ2JhKDAsIDAsIDAsIDAuMiksMHB4IDFweCAxcHggMHB4IHJnYmEoMCwgMCwgMCwgMC4xNCksMHB4IDFweCAzcHggMHB4IHJnYmEoMCwgMCwgMCwgMC4xMil9Lm1hdC1lbGV2YXRpb24tejJbX25nY29udGVudC0lQ09NUCVde2JveC1zaGFkb3c6MHB4IDNweCAxcHggLTJweCByZ2JhKDAsIDAsIDAsIDAuMiksMHB4IDJweCAycHggMHB4IHJnYmEoMCwgMCwgMCwgMC4xNCksMHB4IDFweCA1cHggMHB4IHJnYmEoMCwgMCwgMCwgMC4xMil9Lm1hdC1lbGV2YXRpb24tejNbX25nY29udGVudC0lQ09NUCVde2JveC1zaGFkb3c6MHB4IDNweCAzcHggLTJweCByZ2JhKDAsIDAsIDAsIDAuMiksMHB4IDNweCA0cHggMHB4IHJnYmEoMCwgMCwgMCwgMC4xNCksMHB4IDFweCA4cHggMHB4IHJnYmEoMCwgMCwgMCwgMC4xMil9Lm1hdC1lbGV2YXRpb24tejRbX25nY29udGVudC0lQ09NUCVde2JveC1zaGFkb3c6MHB4IDJweCA0cHggLTFweCByZ2JhKDAsIDAsIDAsIDAuMiksMHB4IDRweCA1cHggMHB4IHJnYmEoMCwgMCwgMCwgMC4xNCksMHB4IDFweCAxMHB4IDBweCByZ2JhKDAsIDAsIDAsIDAuMTIpfS5tYXQtZWxldmF0aW9uLXo1W19uZ2NvbnRlbnQtJUNPTVAlXXtib3gtc2hhZG93OjBweCAzcHggNXB4IC0xcHggcmdiYSgwLCAwLCAwLCAwLjIpLDBweCA1cHggOHB4IDBweCByZ2JhKDAsIDAsIDAsIDAuMTQpLDBweCAxcHggMTRweCAwcHggcmdiYSgwLCAwLCAwLCAwLjEyKX0ubWF0LWVsZXZhdGlvbi16Nltfbmdjb250ZW50LSVDT01QJV17Ym94LXNoYWRvdzowcHggM3B4IDVweCAtMXB4IHJnYmEoMCwgMCwgMCwgMC4yKSwwcHggNnB4IDEwcHggMHB4IHJnYmEoMCwgMCwgMCwgMC4xNCksMHB4IDFweCAxOHB4IDBweCByZ2JhKDAsIDAsIDAsIDAuMTIpfS5tYXQtZWxldmF0aW9uLXo3W19uZ2NvbnRlbnQtJUNPTVAlXXtib3gtc2hhZG93OjBweCA0cHggNXB4IC0ycHggcmdiYSgwLCAwLCAwLCAwLjIpLDBweCA3cHggMTBweCAxcHggcmdiYSgwLCAwLCAwLCAwLjE0KSwwcHggMnB4IDE2cHggMXB4IHJnYmEoMCwgMCwgMCwgMC4xMil9Lm1hdC1lbGV2YXRpb24tejhbX25nY29udGVudC0lQ09NUCVde2JveC1zaGFkb3c6MHB4IDVweCA1cHggLTNweCByZ2JhKDAsIDAsIDAsIDAuMiksMHB4IDhweCAxMHB4IDFweCByZ2JhKDAsIDAsIDAsIDAuMTQpLDBweCAzcHggMTRweCAycHggcmdiYSgwLCAwLCAwLCAwLjEyKX0ubWF0LWVsZXZhdGlvbi16OVtfbmdjb250ZW50LSVDT01QJV17Ym94LXNoYWRvdzowcHggNXB4IDZweCAtM3B4IHJnYmEoMCwgMCwgMCwgMC4yKSwwcHggOXB4IDEycHggMXB4IHJnYmEoMCwgMCwgMCwgMC4xNCksMHB4IDNweCAxNnB4IDJweCByZ2JhKDAsIDAsIDAsIDAuMTIpfS5tYXQtZWxldmF0aW9uLXoxMFtfbmdjb250ZW50LSVDT01QJV17Ym94LXNoYWRvdzowcHggNnB4IDZweCAtM3B4IHJnYmEoMCwgMCwgMCwgMC4yKSwwcHggMTBweCAxNHB4IDFweCByZ2JhKDAsIDAsIDAsIDAuMTQpLDBweCA0cHggMThweCAzcHggcmdiYSgwLCAwLCAwLCAwLjEyKX0ubWF0LWVsZXZhdGlvbi16MTFbX25nY29udGVudC0lQ09NUCVde2JveC1zaGFkb3c6MHB4IDZweCA3cHggLTRweCByZ2JhKDAsIDAsIDAsIDAuMiksMHB4IDExcHggMTVweCAxcHggcmdiYSgwLCAwLCAwLCAwLjE0KSwwcHggNHB4IDIwcHggM3B4IHJnYmEoMCwgMCwgMCwgMC4xMil9Lm1hdC1lbGV2YXRpb24tejEyW19uZ2NvbnRlbnQtJUNPTVAlXXtib3gtc2hhZG93OjBweCA3cHggOHB4IC00cHggcmdiYSgwLCAwLCAwLCAwLjIpLDBweCAxMnB4IDE3cHggMnB4IHJnYmEoMCwgMCwgMCwgMC4xNCksMHB4IDVweCAyMnB4IDRweCByZ2JhKDAsIDAsIDAsIDAuMTIpfS5tYXQtZWxldmF0aW9uLXoxM1tfbmdjb250ZW50LSVDT01QJV17Ym94LXNoYWRvdzowcHggN3B4IDhweCAtNHB4IHJnYmEoMCwgMCwgMCwgMC4yKSwwcHggMTNweCAxOXB4IDJweCByZ2JhKDAsIDAsIDAsIDAuMTQpLDBweCA1cHggMjRweCA0cHggcmdiYSgwLCAwLCAwLCAwLjEyKX0ubWF0LWVsZXZhdGlvbi16MTRbX25nY29udGVudC0lQ09NUCVde2JveC1zaGFkb3c6MHB4IDdweCA5cHggLTRweCByZ2JhKDAsIDAsIDAsIDAuMiksMHB4IDE0cHggMjFweCAycHggcmdiYSgwLCAwLCAwLCAwLjE0KSwwcHggNXB4IDI2cHggNHB4IHJnYmEoMCwgMCwgMCwgMC4xMil9Lm1hdC1lbGV2YXRpb24tejE1W19uZ2NvbnRlbnQtJUNPTVAlXXtib3gtc2hhZG93OjBweCA4cHggOXB4IC01cHggcmdiYSgwLCAwLCAwLCAwLjIpLDBweCAxNXB4IDIycHggMnB4IHJnYmEoMCwgMCwgMCwgMC4xNCksMHB4IDZweCAyOHB4IDVweCByZ2JhKDAsIDAsIDAsIDAuMTIpfS5tYXQtZWxldmF0aW9uLXoxNltfbmdjb250ZW50LSVDT01QJV17Ym94LXNoYWRvdzowcHggOHB4IDEwcHggLTVweCByZ2JhKDAsIDAsIDAsIDAuMiksMHB4IDE2cHggMjRweCAycHggcmdiYSgwLCAwLCAwLCAwLjE0KSwwcHggNnB4IDMwcHggNXB4IHJnYmEoMCwgMCwgMCwgMC4xMil9Lm1hdC1lbGV2YXRpb24tejE3W19uZ2NvbnRlbnQtJUNPTVAlXXtib3gtc2hhZG93OjBweCA4cHggMTFweCAtNXB4IHJnYmEoMCwgMCwgMCwgMC4yKSwwcHggMTdweCAyNnB4IDJweCByZ2JhKDAsIDAsIDAsIDAuMTQpLDBweCA2cHggMzJweCA1cHggcmdiYSgwLCAwLCAwLCAwLjEyKX0ubWF0LWVsZXZhdGlvbi16MThbX25nY29udGVudC0lQ09NUCVde2JveC1zaGFkb3c6MHB4IDlweCAxMXB4IC01cHggcmdiYSgwLCAwLCAwLCAwLjIpLDBweCAxOHB4IDI4cHggMnB4IHJnYmEoMCwgMCwgMCwgMC4xNCksMHB4IDdweCAzNHB4IDZweCByZ2JhKDAsIDAsIDAsIDAuMTIpfS5tYXQtZWxldmF0aW9uLXoxOVtfbmdjb250ZW50LSVDT01QJV17Ym94LXNoYWRvdzowcHggOXB4IDEycHggLTZweCByZ2JhKDAsIDAsIDAsIDAuMiksMHB4IDE5cHggMjlweCAycHggcmdiYSgwLCAwLCAwLCAwLjE0KSwwcHggN3B4IDM2cHggNnB4IHJnYmEoMCwgMCwgMCwgMC4xMil9Lm1hdC1lbGV2YXRpb24tejIwW19uZ2NvbnRlbnQtJUNPTVAlXXtib3gtc2hhZG93OjBweCAxMHB4IDEzcHggLTZweCByZ2JhKDAsIDAsIDAsIDAuMiksMHB4IDIwcHggMzFweCAzcHggcmdiYSgwLCAwLCAwLCAwLjE0KSwwcHggOHB4IDM4cHggN3B4IHJnYmEoMCwgMCwgMCwgMC4xMil9Lm1hdC1lbGV2YXRpb24tejIxW19uZ2NvbnRlbnQtJUNPTVAlXXtib3gtc2hhZG93OjBweCAxMHB4IDEzcHggLTZweCByZ2JhKDAsIDAsIDAsIDAuMiksMHB4IDIxcHggMzNweCAzcHggcmdiYSgwLCAwLCAwLCAwLjE0KSwwcHggOHB4IDQwcHggN3B4IHJnYmEoMCwgMCwgMCwgMC4xMil9Lm1hdC1lbGV2YXRpb24tejIyW19uZ2NvbnRlbnQtJUNPTVAlXXtib3gtc2hhZG93OjBweCAxMHB4IDE0cHggLTZweCByZ2JhKDAsIDAsIDAsIDAuMiksMHB4IDIycHggMzVweCAzcHggcmdiYSgwLCAwLCAwLCAwLjE0KSwwcHggOHB4IDQycHggN3B4IHJnYmEoMCwgMCwgMCwgMC4xMil9Lm1hdC1lbGV2YXRpb24tejIzW19uZ2NvbnRlbnQtJUNPTVAlXXtib3gtc2hhZG93OjBweCAxMXB4IDE0cHggLTdweCByZ2JhKDAsIDAsIDAsIDAuMiksMHB4IDIzcHggMzZweCAzcHggcmdiYSgwLCAwLCAwLCAwLjE0KSwwcHggOXB4IDQ0cHggOHB4IHJnYmEoMCwgMCwgMCwgMC4xMil9Lm1hdC1lbGV2YXRpb24tejI0W19uZ2NvbnRlbnQtJUNPTVAlXXtib3gtc2hhZG93OjBweCAxMXB4IDE1cHggLTdweCByZ2JhKDAsIDAsIDAsIDAuMiksMHB4IDI0cHggMzhweCAzcHggcmdiYSgwLCAwLCAwLCAwLjE0KSwwcHggOXB4IDQ2cHggOHB4IHJnYmEoMCwgMCwgMCwgMC4xMil9Lm1hdC10aGVtZS1sb2FkZWQtbWFya2VyW19uZ2NvbnRlbnQtJUNPTVAlXXtkaXNwbGF5Om5vbmV9Lm1hdC1hdXRvY29tcGxldGUtcGFuZWxbX25nY29udGVudC0lQ09NUCVde2JhY2tncm91bmQ6I2ZmZjtjb2xvcjojMjEyMTIxfS5tYXQtYXV0b2NvbXBsZXRlLXBhbmVsW19uZ2NvbnRlbnQtJUNPTVAlXTpub3QoW2NsYXNzKj1tYXQtZWxldmF0aW9uLXpdKXtib3gtc2hhZG93OjBweCAycHggNHB4IC0xcHggcmdiYSgwLCAwLCAwLCAwLjIpLDBweCA0cHggNXB4IDBweCByZ2JhKDAsIDAsIDAsIDAuMTQpLDBweCAxcHggMTBweCAwcHggcmdiYSgwLCAwLCAwLCAwLjEyKX0ubWF0LWF1dG9jb21wbGV0ZS1wYW5lbFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LW9wdGlvbi5tYXQtc2VsZWN0ZWRbX25nY29udGVudC0lQ09NUCVdOm5vdCgubWF0LWFjdGl2ZSk6bm90KDpob3Zlcil7YmFja2dyb3VuZDojZmZmfS5tYXQtYXV0b2NvbXBsZXRlLXBhbmVsW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtb3B0aW9uLm1hdC1zZWxlY3RlZFtfbmdjb250ZW50LSVDT01QJV06bm90KC5tYXQtYWN0aXZlKTpub3QoOmhvdmVyKTpub3QoLm1hdC1vcHRpb24tZGlzYWJsZWQpe2NvbG9yOiMyMTIxMjF9Lm1hdC1iYWRnZS1jb250ZW50W19uZ2NvbnRlbnQtJUNPTVAlXXtjb2xvcjojZmZmO2JhY2tncm91bmQ6I2Y1N2MwMH0uY2RrLWhpZ2gtY29udHJhc3QtYWN0aXZlW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtYmFkZ2UtY29udGVudFtfbmdjb250ZW50LSVDT01QJV17b3V0bGluZTpzb2xpZCAxcHg7Ym9yZGVyLXJhZGl1czowfS5tYXQtYmFkZ2UtYWNjZW50W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtYmFkZ2UtY29udGVudFtfbmdjb250ZW50LSVDT01QJV17YmFja2dyb3VuZDojZmY5ODAwO2NvbG9yOiNmZmZ9Lm1hdC1iYWRnZS13YXJuW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtYmFkZ2UtY29udGVudFtfbmdjb250ZW50LSVDT01QJV17Y29sb3I6I2ZmZjtiYWNrZ3JvdW5kOiNmNDQzMzZ9Lm1hdC1iYWRnZVtfbmdjb250ZW50LSVDT01QJV17cG9zaXRpb246cmVsYXRpdmV9Lm1hdC1iYWRnZS1oaWRkZW5bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1iYWRnZS1jb250ZW50W19uZ2NvbnRlbnQtJUNPTVAlXXtkaXNwbGF5Om5vbmV9Lm1hdC1iYWRnZS1kaXNhYmxlZFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWJhZGdlLWNvbnRlbnRbX25nY29udGVudC0lQ09NUCVde2JhY2tncm91bmQ6I2I5YjliOTtjb2xvcjojNzU3NTc1fS5tYXQtYmFkZ2UtY29udGVudFtfbmdjb250ZW50LSVDT01QJV17cG9zaXRpb246YWJzb2x1dGU7dGV4dC1hbGlnbjpjZW50ZXI7ZGlzcGxheTppbmxpbmUtYmxvY2s7Ym9yZGVyLXJhZGl1czo1MCU7dHJhbnNpdGlvbjp0cmFuc2Zvcm0gMjAwbXMgZWFzZS1pbi1vdXQ7dHJhbnNmb3JtOnNjYWxlKDAuNik7b3ZlcmZsb3c6aGlkZGVuO3doaXRlLXNwYWNlOm5vd3JhcDt0ZXh0LW92ZXJmbG93OmVsbGlwc2lzO3BvaW50ZXItZXZlbnRzOm5vbmV9Lm5nLWFuaW1hdGUtZGlzYWJsZWRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1iYWRnZS1jb250ZW50W19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1iYWRnZS1jb250ZW50Ll9tYXQtYW5pbWF0aW9uLW5vb3BhYmxlW19uZ2NvbnRlbnQtJUNPTVAlXXt0cmFuc2l0aW9uOm5vbmV9Lm1hdC1iYWRnZS1jb250ZW50Lm1hdC1iYWRnZS1hY3RpdmVbX25nY29udGVudC0lQ09NUCVde3RyYW5zZm9ybTpub25lfS5tYXQtYmFkZ2Utc21hbGxbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1iYWRnZS1jb250ZW50W19uZ2NvbnRlbnQtJUNPTVAlXXt3aWR0aDoxNnB4O2hlaWdodDoxNnB4O2xpbmUtaGVpZ2h0OjE2cHh9Lm1hdC1iYWRnZS1zbWFsbC5tYXQtYmFkZ2UtYWJvdmVbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1iYWRnZS1jb250ZW50W19uZ2NvbnRlbnQtJUNPTVAlXXt0b3A6LThweH0ubWF0LWJhZGdlLXNtYWxsLm1hdC1iYWRnZS1iZWxvd1tfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWJhZGdlLWNvbnRlbnRbX25nY29udGVudC0lQ09NUCVde2JvdHRvbTotOHB4fS5tYXQtYmFkZ2Utc21hbGwubWF0LWJhZGdlLWJlZm9yZVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWJhZGdlLWNvbnRlbnRbX25nY29udGVudC0lQ09NUCVde2xlZnQ6LTE2cHh9W2Rpcj1ydGxdW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtYmFkZ2Utc21hbGwubWF0LWJhZGdlLWJlZm9yZVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWJhZGdlLWNvbnRlbnRbX25nY29udGVudC0lQ09NUCVde2xlZnQ6YXV0bztyaWdodDotMTZweH0ubWF0LWJhZGdlLXNtYWxsLm1hdC1iYWRnZS1hZnRlcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWJhZGdlLWNvbnRlbnRbX25nY29udGVudC0lQ09NUCVde3JpZ2h0Oi0xNnB4fVtkaXI9cnRsXVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWJhZGdlLXNtYWxsLm1hdC1iYWRnZS1hZnRlcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWJhZGdlLWNvbnRlbnRbX25nY29udGVudC0lQ09NUCVde3JpZ2h0OmF1dG87bGVmdDotMTZweH0ubWF0LWJhZGdlLXNtYWxsLm1hdC1iYWRnZS1vdmVybGFwLm1hdC1iYWRnZS1iZWZvcmVbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1iYWRnZS1jb250ZW50W19uZ2NvbnRlbnQtJUNPTVAlXXtsZWZ0Oi04cHh9W2Rpcj1ydGxdW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtYmFkZ2Utc21hbGwubWF0LWJhZGdlLW92ZXJsYXAubWF0LWJhZGdlLWJlZm9yZVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWJhZGdlLWNvbnRlbnRbX25nY29udGVudC0lQ09NUCVde2xlZnQ6YXV0bztyaWdodDotOHB4fS5tYXQtYmFkZ2Utc21hbGwubWF0LWJhZGdlLW92ZXJsYXAubWF0LWJhZGdlLWFmdGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtYmFkZ2UtY29udGVudFtfbmdjb250ZW50LSVDT01QJV17cmlnaHQ6LThweH1bZGlyPXJ0bF1bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1iYWRnZS1zbWFsbC5tYXQtYmFkZ2Utb3ZlcmxhcC5tYXQtYmFkZ2UtYWZ0ZXJbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1iYWRnZS1jb250ZW50W19uZ2NvbnRlbnQtJUNPTVAlXXtyaWdodDphdXRvO2xlZnQ6LThweH0ubWF0LWJhZGdlLW1lZGl1bVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWJhZGdlLWNvbnRlbnRbX25nY29udGVudC0lQ09NUCVde3dpZHRoOjIycHg7aGVpZ2h0OjIycHg7bGluZS1oZWlnaHQ6MjJweH0ubWF0LWJhZGdlLW1lZGl1bS5tYXQtYmFkZ2UtYWJvdmVbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1iYWRnZS1jb250ZW50W19uZ2NvbnRlbnQtJUNPTVAlXXt0b3A6LTExcHh9Lm1hdC1iYWRnZS1tZWRpdW0ubWF0LWJhZGdlLWJlbG93W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtYmFkZ2UtY29udGVudFtfbmdjb250ZW50LSVDT01QJV17Ym90dG9tOi0xMXB4fS5tYXQtYmFkZ2UtbWVkaXVtLm1hdC1iYWRnZS1iZWZvcmVbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1iYWRnZS1jb250ZW50W19uZ2NvbnRlbnQtJUNPTVAlXXtsZWZ0Oi0yMnB4fVtkaXI9cnRsXVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWJhZGdlLW1lZGl1bS5tYXQtYmFkZ2UtYmVmb3JlW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtYmFkZ2UtY29udGVudFtfbmdjb250ZW50LSVDT01QJV17bGVmdDphdXRvO3JpZ2h0Oi0yMnB4fS5tYXQtYmFkZ2UtbWVkaXVtLm1hdC1iYWRnZS1hZnRlcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWJhZGdlLWNvbnRlbnRbX25nY29udGVudC0lQ09NUCVde3JpZ2h0Oi0yMnB4fVtkaXI9cnRsXVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWJhZGdlLW1lZGl1bS5tYXQtYmFkZ2UtYWZ0ZXJbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1iYWRnZS1jb250ZW50W19uZ2NvbnRlbnQtJUNPTVAlXXtyaWdodDphdXRvO2xlZnQ6LTIycHh9Lm1hdC1iYWRnZS1tZWRpdW0ubWF0LWJhZGdlLW92ZXJsYXAubWF0LWJhZGdlLWJlZm9yZVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWJhZGdlLWNvbnRlbnRbX25nY29udGVudC0lQ09NUCVde2xlZnQ6LTExcHh9W2Rpcj1ydGxdW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtYmFkZ2UtbWVkaXVtLm1hdC1iYWRnZS1vdmVybGFwLm1hdC1iYWRnZS1iZWZvcmVbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1iYWRnZS1jb250ZW50W19uZ2NvbnRlbnQtJUNPTVAlXXtsZWZ0OmF1dG87cmlnaHQ6LTExcHh9Lm1hdC1iYWRnZS1tZWRpdW0ubWF0LWJhZGdlLW92ZXJsYXAubWF0LWJhZGdlLWFmdGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtYmFkZ2UtY29udGVudFtfbmdjb250ZW50LSVDT01QJV17cmlnaHQ6LTExcHh9W2Rpcj1ydGxdW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtYmFkZ2UtbWVkaXVtLm1hdC1iYWRnZS1vdmVybGFwLm1hdC1iYWRnZS1hZnRlcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWJhZGdlLWNvbnRlbnRbX25nY29udGVudC0lQ09NUCVde3JpZ2h0OmF1dG87bGVmdDotMTFweH0ubWF0LWJhZGdlLWxhcmdlW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtYmFkZ2UtY29udGVudFtfbmdjb250ZW50LSVDT01QJV17d2lkdGg6MjhweDtoZWlnaHQ6MjhweDtsaW5lLWhlaWdodDoyOHB4fS5tYXQtYmFkZ2UtbGFyZ2UubWF0LWJhZGdlLWFib3ZlW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtYmFkZ2UtY29udGVudFtfbmdjb250ZW50LSVDT01QJV17dG9wOi0xNHB4fS5tYXQtYmFkZ2UtbGFyZ2UubWF0LWJhZGdlLWJlbG93W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtYmFkZ2UtY29udGVudFtfbmdjb250ZW50LSVDT01QJV17Ym90dG9tOi0xNHB4fS5tYXQtYmFkZ2UtbGFyZ2UubWF0LWJhZGdlLWJlZm9yZVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWJhZGdlLWNvbnRlbnRbX25nY29udGVudC0lQ09NUCVde2xlZnQ6LTI4cHh9W2Rpcj1ydGxdW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtYmFkZ2UtbGFyZ2UubWF0LWJhZGdlLWJlZm9yZVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWJhZGdlLWNvbnRlbnRbX25nY29udGVudC0lQ09NUCVde2xlZnQ6YXV0bztyaWdodDotMjhweH0ubWF0LWJhZGdlLWxhcmdlLm1hdC1iYWRnZS1hZnRlcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWJhZGdlLWNvbnRlbnRbX25nY29udGVudC0lQ09NUCVde3JpZ2h0Oi0yOHB4fVtkaXI9cnRsXVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWJhZGdlLWxhcmdlLm1hdC1iYWRnZS1hZnRlcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWJhZGdlLWNvbnRlbnRbX25nY29udGVudC0lQ09NUCVde3JpZ2h0OmF1dG87bGVmdDotMjhweH0ubWF0LWJhZGdlLWxhcmdlLm1hdC1iYWRnZS1vdmVybGFwLm1hdC1iYWRnZS1iZWZvcmVbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1iYWRnZS1jb250ZW50W19uZ2NvbnRlbnQtJUNPTVAlXXtsZWZ0Oi0xNHB4fVtkaXI9cnRsXVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWJhZGdlLWxhcmdlLm1hdC1iYWRnZS1vdmVybGFwLm1hdC1iYWRnZS1iZWZvcmVbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1iYWRnZS1jb250ZW50W19uZ2NvbnRlbnQtJUNPTVAlXXtsZWZ0OmF1dG87cmlnaHQ6LTE0cHh9Lm1hdC1iYWRnZS1sYXJnZS5tYXQtYmFkZ2Utb3ZlcmxhcC5tYXQtYmFkZ2UtYWZ0ZXJbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1iYWRnZS1jb250ZW50W19uZ2NvbnRlbnQtJUNPTVAlXXtyaWdodDotMTRweH1bZGlyPXJ0bF1bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1iYWRnZS1sYXJnZS5tYXQtYmFkZ2Utb3ZlcmxhcC5tYXQtYmFkZ2UtYWZ0ZXJbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1iYWRnZS1jb250ZW50W19uZ2NvbnRlbnQtJUNPTVAlXXtyaWdodDphdXRvO2xlZnQ6LTE0cHh9Lm1hdC1ib3R0b20tc2hlZXQtY29udGFpbmVyW19uZ2NvbnRlbnQtJUNPTVAlXXtib3gtc2hhZG93OjBweCA4cHggMTBweCAtNXB4IHJnYmEoMCwgMCwgMCwgMC4yKSwwcHggMTZweCAyNHB4IDJweCByZ2JhKDAsIDAsIDAsIDAuMTQpLDBweCA2cHggMzBweCA1cHggcmdiYSgwLCAwLCAwLCAwLjEyKTtiYWNrZ3JvdW5kOiNmZmY7Y29sb3I6IzIxMjEyMX0ubWF0LWJ1dHRvbltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtaWNvbi1idXR0b25bX25nY29udGVudC0lQ09NUCVdLCAubWF0LXN0cm9rZWQtYnV0dG9uW19uZ2NvbnRlbnQtJUNPTVAlXXtjb2xvcjppbmhlcml0O2JhY2tncm91bmQ6dHJhbnNwYXJlbnR9Lm1hdC1idXR0b24ubWF0LXByaW1hcnlbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWljb24tYnV0dG9uLm1hdC1wcmltYXJ5W19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1zdHJva2VkLWJ1dHRvbi5tYXQtcHJpbWFyeVtfbmdjb250ZW50LSVDT01QJV17Y29sb3I6I2Y1N2MwMH0ubWF0LWJ1dHRvbi5tYXQtYWNjZW50W19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1pY29uLWJ1dHRvbi5tYXQtYWNjZW50W19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1zdHJva2VkLWJ1dHRvbi5tYXQtYWNjZW50W19uZ2NvbnRlbnQtJUNPTVAlXXtjb2xvcjojZmY5ODAwfS5tYXQtYnV0dG9uLm1hdC13YXJuW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1pY29uLWJ1dHRvbi5tYXQtd2Fybltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtc3Ryb2tlZC1idXR0b24ubWF0LXdhcm5bX25nY29udGVudC0lQ09NUCVde2NvbG9yOiNmNDQzMzZ9Lm1hdC1idXR0b24ubWF0LXByaW1hcnkubWF0LWJ1dHRvbi1kaXNhYmxlZFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtYnV0dG9uLm1hdC1hY2NlbnQubWF0LWJ1dHRvbi1kaXNhYmxlZFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtYnV0dG9uLm1hdC13YXJuLm1hdC1idXR0b24tZGlzYWJsZWRbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWJ1dHRvbi5tYXQtYnV0dG9uLWRpc2FibGVkLm1hdC1idXR0b24tZGlzYWJsZWRbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWljb24tYnV0dG9uLm1hdC1wcmltYXJ5Lm1hdC1idXR0b24tZGlzYWJsZWRbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWljb24tYnV0dG9uLm1hdC1hY2NlbnQubWF0LWJ1dHRvbi1kaXNhYmxlZFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtaWNvbi1idXR0b24ubWF0LXdhcm4ubWF0LWJ1dHRvbi1kaXNhYmxlZFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtaWNvbi1idXR0b24ubWF0LWJ1dHRvbi1kaXNhYmxlZC5tYXQtYnV0dG9uLWRpc2FibGVkW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1zdHJva2VkLWJ1dHRvbi5tYXQtcHJpbWFyeS5tYXQtYnV0dG9uLWRpc2FibGVkW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1zdHJva2VkLWJ1dHRvbi5tYXQtYWNjZW50Lm1hdC1idXR0b24tZGlzYWJsZWRbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXN0cm9rZWQtYnV0dG9uLm1hdC13YXJuLm1hdC1idXR0b24tZGlzYWJsZWRbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXN0cm9rZWQtYnV0dG9uLm1hdC1idXR0b24tZGlzYWJsZWQubWF0LWJ1dHRvbi1kaXNhYmxlZFtfbmdjb250ZW50LSVDT01QJV17Y29sb3I6cmdiYSgwLDAsMCwuMjYpfS5tYXQtYnV0dG9uLm1hdC1wcmltYXJ5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtYnV0dG9uLWZvY3VzLW92ZXJsYXlbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWljb24tYnV0dG9uLm1hdC1wcmltYXJ5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtYnV0dG9uLWZvY3VzLW92ZXJsYXlbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXN0cm9rZWQtYnV0dG9uLm1hdC1wcmltYXJ5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtYnV0dG9uLWZvY3VzLW92ZXJsYXlbX25nY29udGVudC0lQ09NUCVde2JhY2tncm91bmQtY29sb3I6I2Y1N2MwMH0ubWF0LWJ1dHRvbi5tYXQtYWNjZW50W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtYnV0dG9uLWZvY3VzLW92ZXJsYXlbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWljb24tYnV0dG9uLm1hdC1hY2NlbnRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1idXR0b24tZm9jdXMtb3ZlcmxheVtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtc3Ryb2tlZC1idXR0b24ubWF0LWFjY2VudFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWJ1dHRvbi1mb2N1cy1vdmVybGF5W19uZ2NvbnRlbnQtJUNPTVAlXXtiYWNrZ3JvdW5kLWNvbG9yOiNmZjk4MDB9Lm1hdC1idXR0b24ubWF0LXdhcm5bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1idXR0b24tZm9jdXMtb3ZlcmxheVtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtaWNvbi1idXR0b24ubWF0LXdhcm5bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1idXR0b24tZm9jdXMtb3ZlcmxheVtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtc3Ryb2tlZC1idXR0b24ubWF0LXdhcm5bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1idXR0b24tZm9jdXMtb3ZlcmxheVtfbmdjb250ZW50LSVDT01QJV17YmFja2dyb3VuZC1jb2xvcjojZjQ0MzM2fS5tYXQtYnV0dG9uLm1hdC1idXR0b24tZGlzYWJsZWRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1idXR0b24tZm9jdXMtb3ZlcmxheVtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtaWNvbi1idXR0b24ubWF0LWJ1dHRvbi1kaXNhYmxlZFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWJ1dHRvbi1mb2N1cy1vdmVybGF5W19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1zdHJva2VkLWJ1dHRvbi5tYXQtYnV0dG9uLWRpc2FibGVkW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtYnV0dG9uLWZvY3VzLW92ZXJsYXlbX25nY29udGVudC0lQ09NUCVde2JhY2tncm91bmQtY29sb3I6dHJhbnNwYXJlbnR9Lm1hdC1idXR0b25bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1yaXBwbGUtZWxlbWVudFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtaWNvbi1idXR0b25bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1yaXBwbGUtZWxlbWVudFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtc3Ryb2tlZC1idXR0b25bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1yaXBwbGUtZWxlbWVudFtfbmdjb250ZW50LSVDT01QJV17b3BhY2l0eTouMTtiYWNrZ3JvdW5kLWNvbG9yOmN1cnJlbnRDb2xvcn0ubWF0LWJ1dHRvbi1mb2N1cy1vdmVybGF5W19uZ2NvbnRlbnQtJUNPTVAlXXtiYWNrZ3JvdW5kOiMwMDB9Lm1hdC1zdHJva2VkLWJ1dHRvbltfbmdjb250ZW50LSVDT01QJV06bm90KC5tYXQtYnV0dG9uLWRpc2FibGVkKXtib3JkZXItY29sb3I6cmdiYSgwLDAsMCwuMTIpfS5tYXQtZmxhdC1idXR0b25bX25nY29udGVudC0lQ09NUCVdLCAubWF0LXJhaXNlZC1idXR0b25bX25nY29udGVudC0lQ09NUCVdLCAubWF0LWZhYltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtbWluaS1mYWJbX25nY29udGVudC0lQ09NUCVde2NvbG9yOiMyMTIxMjE7YmFja2dyb3VuZC1jb2xvcjojZmZmfS5tYXQtZmxhdC1idXR0b24ubWF0LXByaW1hcnlbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXJhaXNlZC1idXR0b24ubWF0LXByaW1hcnlbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWZhYi5tYXQtcHJpbWFyeVtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtbWluaS1mYWIubWF0LXByaW1hcnlbX25nY29udGVudC0lQ09NUCVde2NvbG9yOiNmZmZ9Lm1hdC1mbGF0LWJ1dHRvbi5tYXQtYWNjZW50W19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1yYWlzZWQtYnV0dG9uLm1hdC1hY2NlbnRbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWZhYi5tYXQtYWNjZW50W19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1taW5pLWZhYi5tYXQtYWNjZW50W19uZ2NvbnRlbnQtJUNPTVAlXXtjb2xvcjojZmZmfS5tYXQtZmxhdC1idXR0b24ubWF0LXdhcm5bX25nY29udGVudC0lQ09NUCVdLCAubWF0LXJhaXNlZC1idXR0b24ubWF0LXdhcm5bX25nY29udGVudC0lQ09NUCVdLCAubWF0LWZhYi5tYXQtd2Fybltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtbWluaS1mYWIubWF0LXdhcm5bX25nY29udGVudC0lQ09NUCVde2NvbG9yOiNmZmZ9Lm1hdC1mbGF0LWJ1dHRvbi5tYXQtcHJpbWFyeS5tYXQtYnV0dG9uLWRpc2FibGVkW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1mbGF0LWJ1dHRvbi5tYXQtYWNjZW50Lm1hdC1idXR0b24tZGlzYWJsZWRbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWZsYXQtYnV0dG9uLm1hdC13YXJuLm1hdC1idXR0b24tZGlzYWJsZWRbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWZsYXQtYnV0dG9uLm1hdC1idXR0b24tZGlzYWJsZWQubWF0LWJ1dHRvbi1kaXNhYmxlZFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtcmFpc2VkLWJ1dHRvbi5tYXQtcHJpbWFyeS5tYXQtYnV0dG9uLWRpc2FibGVkW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1yYWlzZWQtYnV0dG9uLm1hdC1hY2NlbnQubWF0LWJ1dHRvbi1kaXNhYmxlZFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtcmFpc2VkLWJ1dHRvbi5tYXQtd2Fybi5tYXQtYnV0dG9uLWRpc2FibGVkW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1yYWlzZWQtYnV0dG9uLm1hdC1idXR0b24tZGlzYWJsZWQubWF0LWJ1dHRvbi1kaXNhYmxlZFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtZmFiLm1hdC1wcmltYXJ5Lm1hdC1idXR0b24tZGlzYWJsZWRbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWZhYi5tYXQtYWNjZW50Lm1hdC1idXR0b24tZGlzYWJsZWRbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWZhYi5tYXQtd2Fybi5tYXQtYnV0dG9uLWRpc2FibGVkW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1mYWIubWF0LWJ1dHRvbi1kaXNhYmxlZC5tYXQtYnV0dG9uLWRpc2FibGVkW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1taW5pLWZhYi5tYXQtcHJpbWFyeS5tYXQtYnV0dG9uLWRpc2FibGVkW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1taW5pLWZhYi5tYXQtYWNjZW50Lm1hdC1idXR0b24tZGlzYWJsZWRbX25nY29udGVudC0lQ09NUCVdLCAubWF0LW1pbmktZmFiLm1hdC13YXJuLm1hdC1idXR0b24tZGlzYWJsZWRbX25nY29udGVudC0lQ09NUCVdLCAubWF0LW1pbmktZmFiLm1hdC1idXR0b24tZGlzYWJsZWQubWF0LWJ1dHRvbi1kaXNhYmxlZFtfbmdjb250ZW50LSVDT01QJV17Y29sb3I6cmdiYSgwLDAsMCwuMjYpfS5tYXQtZmxhdC1idXR0b24ubWF0LXByaW1hcnlbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXJhaXNlZC1idXR0b24ubWF0LXByaW1hcnlbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWZhYi5tYXQtcHJpbWFyeVtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtbWluaS1mYWIubWF0LXByaW1hcnlbX25nY29udGVudC0lQ09NUCVde2JhY2tncm91bmQtY29sb3I6I2Y1N2MwMH0ubWF0LWZsYXQtYnV0dG9uLm1hdC1hY2NlbnRbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXJhaXNlZC1idXR0b24ubWF0LWFjY2VudFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtZmFiLm1hdC1hY2NlbnRbX25nY29udGVudC0lQ09NUCVdLCAubWF0LW1pbmktZmFiLm1hdC1hY2NlbnRbX25nY29udGVudC0lQ09NUCVde2JhY2tncm91bmQtY29sb3I6I2ZmOTgwMH0ubWF0LWZsYXQtYnV0dG9uLm1hdC13YXJuW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1yYWlzZWQtYnV0dG9uLm1hdC13YXJuW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1mYWIubWF0LXdhcm5bX25nY29udGVudC0lQ09NUCVdLCAubWF0LW1pbmktZmFiLm1hdC13YXJuW19uZ2NvbnRlbnQtJUNPTVAlXXtiYWNrZ3JvdW5kLWNvbG9yOiNmNDQzMzZ9Lm1hdC1mbGF0LWJ1dHRvbi5tYXQtcHJpbWFyeS5tYXQtYnV0dG9uLWRpc2FibGVkW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1mbGF0LWJ1dHRvbi5tYXQtYWNjZW50Lm1hdC1idXR0b24tZGlzYWJsZWRbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWZsYXQtYnV0dG9uLm1hdC13YXJuLm1hdC1idXR0b24tZGlzYWJsZWRbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWZsYXQtYnV0dG9uLm1hdC1idXR0b24tZGlzYWJsZWQubWF0LWJ1dHRvbi1kaXNhYmxlZFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtcmFpc2VkLWJ1dHRvbi5tYXQtcHJpbWFyeS5tYXQtYnV0dG9uLWRpc2FibGVkW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1yYWlzZWQtYnV0dG9uLm1hdC1hY2NlbnQubWF0LWJ1dHRvbi1kaXNhYmxlZFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtcmFpc2VkLWJ1dHRvbi5tYXQtd2Fybi5tYXQtYnV0dG9uLWRpc2FibGVkW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1yYWlzZWQtYnV0dG9uLm1hdC1idXR0b24tZGlzYWJsZWQubWF0LWJ1dHRvbi1kaXNhYmxlZFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtZmFiLm1hdC1wcmltYXJ5Lm1hdC1idXR0b24tZGlzYWJsZWRbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWZhYi5tYXQtYWNjZW50Lm1hdC1idXR0b24tZGlzYWJsZWRbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWZhYi5tYXQtd2Fybi5tYXQtYnV0dG9uLWRpc2FibGVkW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1mYWIubWF0LWJ1dHRvbi1kaXNhYmxlZC5tYXQtYnV0dG9uLWRpc2FibGVkW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1taW5pLWZhYi5tYXQtcHJpbWFyeS5tYXQtYnV0dG9uLWRpc2FibGVkW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1taW5pLWZhYi5tYXQtYWNjZW50Lm1hdC1idXR0b24tZGlzYWJsZWRbX25nY29udGVudC0lQ09NUCVdLCAubWF0LW1pbmktZmFiLm1hdC13YXJuLm1hdC1idXR0b24tZGlzYWJsZWRbX25nY29udGVudC0lQ09NUCVdLCAubWF0LW1pbmktZmFiLm1hdC1idXR0b24tZGlzYWJsZWQubWF0LWJ1dHRvbi1kaXNhYmxlZFtfbmdjb250ZW50LSVDT01QJV17YmFja2dyb3VuZC1jb2xvcjpyZ2JhKDAsMCwwLC4xMil9Lm1hdC1mbGF0LWJ1dHRvbi5tYXQtcHJpbWFyeVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXJpcHBsZS1lbGVtZW50W19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1yYWlzZWQtYnV0dG9uLm1hdC1wcmltYXJ5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtcmlwcGxlLWVsZW1lbnRbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWZhYi5tYXQtcHJpbWFyeVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXJpcHBsZS1lbGVtZW50W19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1taW5pLWZhYi5tYXQtcHJpbWFyeVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXJpcHBsZS1lbGVtZW50W19uZ2NvbnRlbnQtJUNPTVAlXXtiYWNrZ3JvdW5kLWNvbG9yOnJnYmEoMjU1LDI1NSwyNTUsLjEpfS5tYXQtZmxhdC1idXR0b24ubWF0LWFjY2VudFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXJpcHBsZS1lbGVtZW50W19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1yYWlzZWQtYnV0dG9uLm1hdC1hY2NlbnRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1yaXBwbGUtZWxlbWVudFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtZmFiLm1hdC1hY2NlbnRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1yaXBwbGUtZWxlbWVudFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtbWluaS1mYWIubWF0LWFjY2VudFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXJpcHBsZS1lbGVtZW50W19uZ2NvbnRlbnQtJUNPTVAlXXtiYWNrZ3JvdW5kLWNvbG9yOnJnYmEoMjU1LDI1NSwyNTUsLjEpfS5tYXQtZmxhdC1idXR0b24ubWF0LXdhcm5bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1yaXBwbGUtZWxlbWVudFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtcmFpc2VkLWJ1dHRvbi5tYXQtd2Fybltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXJpcHBsZS1lbGVtZW50W19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1mYWIubWF0LXdhcm5bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1yaXBwbGUtZWxlbWVudFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtbWluaS1mYWIubWF0LXdhcm5bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1yaXBwbGUtZWxlbWVudFtfbmdjb250ZW50LSVDT01QJV17YmFja2dyb3VuZC1jb2xvcjpyZ2JhKDI1NSwyNTUsMjU1LC4xKX0ubWF0LXN0cm9rZWQtYnV0dG9uW19uZ2NvbnRlbnQtJUNPTVAlXTpub3QoW2NsYXNzKj1tYXQtZWxldmF0aW9uLXpdKSwgLm1hdC1mbGF0LWJ1dHRvbltfbmdjb250ZW50LSVDT01QJV06bm90KFtjbGFzcyo9bWF0LWVsZXZhdGlvbi16XSl7Ym94LXNoYWRvdzowcHggMHB4IDBweCAwcHggcmdiYSgwLCAwLCAwLCAwLjIpLDBweCAwcHggMHB4IDBweCByZ2JhKDAsIDAsIDAsIDAuMTQpLDBweCAwcHggMHB4IDBweCByZ2JhKDAsIDAsIDAsIDAuMTIpfS5tYXQtcmFpc2VkLWJ1dHRvbltfbmdjb250ZW50LSVDT01QJV06bm90KFtjbGFzcyo9bWF0LWVsZXZhdGlvbi16XSl7Ym94LXNoYWRvdzowcHggM3B4IDFweCAtMnB4IHJnYmEoMCwgMCwgMCwgMC4yKSwwcHggMnB4IDJweCAwcHggcmdiYSgwLCAwLCAwLCAwLjE0KSwwcHggMXB4IDVweCAwcHggcmdiYSgwLCAwLCAwLCAwLjEyKX0ubWF0LXJhaXNlZC1idXR0b25bX25nY29udGVudC0lQ09NUCVdOm5vdCgubWF0LWJ1dHRvbi1kaXNhYmxlZCk6YWN0aXZlOm5vdChbY2xhc3MqPW1hdC1lbGV2YXRpb24tel0pe2JveC1zaGFkb3c6MHB4IDVweCA1cHggLTNweCByZ2JhKDAsIDAsIDAsIDAuMiksMHB4IDhweCAxMHB4IDFweCByZ2JhKDAsIDAsIDAsIDAuMTQpLDBweCAzcHggMTRweCAycHggcmdiYSgwLCAwLCAwLCAwLjEyKX0ubWF0LXJhaXNlZC1idXR0b24ubWF0LWJ1dHRvbi1kaXNhYmxlZFtfbmdjb250ZW50LSVDT01QJV06bm90KFtjbGFzcyo9bWF0LWVsZXZhdGlvbi16XSl7Ym94LXNoYWRvdzowcHggMHB4IDBweCAwcHggcmdiYSgwLCAwLCAwLCAwLjIpLDBweCAwcHggMHB4IDBweCByZ2JhKDAsIDAsIDAsIDAuMTQpLDBweCAwcHggMHB4IDBweCByZ2JhKDAsIDAsIDAsIDAuMTIpfS5tYXQtZmFiW19uZ2NvbnRlbnQtJUNPTVAlXTpub3QoW2NsYXNzKj1tYXQtZWxldmF0aW9uLXpdKSwgLm1hdC1taW5pLWZhYltfbmdjb250ZW50LSVDT01QJV06bm90KFtjbGFzcyo9bWF0LWVsZXZhdGlvbi16XSl7Ym94LXNoYWRvdzowcHggM3B4IDVweCAtMXB4IHJnYmEoMCwgMCwgMCwgMC4yKSwwcHggNnB4IDEwcHggMHB4IHJnYmEoMCwgMCwgMCwgMC4xNCksMHB4IDFweCAxOHB4IDBweCByZ2JhKDAsIDAsIDAsIDAuMTIpfS5tYXQtZmFiW19uZ2NvbnRlbnQtJUNPTVAlXTpub3QoLm1hdC1idXR0b24tZGlzYWJsZWQpOmFjdGl2ZTpub3QoW2NsYXNzKj1tYXQtZWxldmF0aW9uLXpdKSwgLm1hdC1taW5pLWZhYltfbmdjb250ZW50LSVDT01QJV06bm90KC5tYXQtYnV0dG9uLWRpc2FibGVkKTphY3RpdmU6bm90KFtjbGFzcyo9bWF0LWVsZXZhdGlvbi16XSl7Ym94LXNoYWRvdzowcHggN3B4IDhweCAtNHB4IHJnYmEoMCwgMCwgMCwgMC4yKSwwcHggMTJweCAxN3B4IDJweCByZ2JhKDAsIDAsIDAsIDAuMTQpLDBweCA1cHggMjJweCA0cHggcmdiYSgwLCAwLCAwLCAwLjEyKX0ubWF0LWZhYi5tYXQtYnV0dG9uLWRpc2FibGVkW19uZ2NvbnRlbnQtJUNPTVAlXTpub3QoW2NsYXNzKj1tYXQtZWxldmF0aW9uLXpdKSwgLm1hdC1taW5pLWZhYi5tYXQtYnV0dG9uLWRpc2FibGVkW19uZ2NvbnRlbnQtJUNPTVAlXTpub3QoW2NsYXNzKj1tYXQtZWxldmF0aW9uLXpdKXtib3gtc2hhZG93OjBweCAwcHggMHB4IDBweCByZ2JhKDAsIDAsIDAsIDAuMiksMHB4IDBweCAwcHggMHB4IHJnYmEoMCwgMCwgMCwgMC4xNCksMHB4IDBweCAwcHggMHB4IHJnYmEoMCwgMCwgMCwgMC4xMil9Lm1hdC1idXR0b24tdG9nZ2xlLXN0YW5kYWxvbmVbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWJ1dHRvbi10b2dnbGUtZ3JvdXBbX25nY29udGVudC0lQ09NUCVde2JveC1zaGFkb3c6MHB4IDNweCAxcHggLTJweCByZ2JhKDAsIDAsIDAsIDAuMiksMHB4IDJweCAycHggMHB4IHJnYmEoMCwgMCwgMCwgMC4xNCksMHB4IDFweCA1cHggMHB4IHJnYmEoMCwgMCwgMCwgMC4xMil9Lm1hdC1idXR0b24tdG9nZ2xlLXN0YW5kYWxvbmUubWF0LWJ1dHRvbi10b2dnbGUtYXBwZWFyYW5jZS1zdGFuZGFyZFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtYnV0dG9uLXRvZ2dsZS1ncm91cC1hcHBlYXJhbmNlLXN0YW5kYXJkW19uZ2NvbnRlbnQtJUNPTVAlXXtib3gtc2hhZG93Om5vbmV9Lm1hdC1idXR0b24tdG9nZ2xlW19uZ2NvbnRlbnQtJUNPTVAlXXtjb2xvcjpyZ2JhKDAsMCwwLC4zOCl9Lm1hdC1idXR0b24tdG9nZ2xlW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtYnV0dG9uLXRvZ2dsZS1mb2N1cy1vdmVybGF5W19uZ2NvbnRlbnQtJUNPTVAlXXtiYWNrZ3JvdW5kLWNvbG9yOnJnYmEoMCwwLDAsLjEyKX0ubWF0LWJ1dHRvbi10b2dnbGUtYXBwZWFyYW5jZS1zdGFuZGFyZFtfbmdjb250ZW50LSVDT01QJV17Y29sb3I6IzIxMjEyMTtiYWNrZ3JvdW5kOiNmZmZ9Lm1hdC1idXR0b24tdG9nZ2xlLWFwcGVhcmFuY2Utc3RhbmRhcmRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1idXR0b24tdG9nZ2xlLWZvY3VzLW92ZXJsYXlbX25nY29udGVudC0lQ09NUCVde2JhY2tncm91bmQtY29sb3I6IzAwMH0ubWF0LWJ1dHRvbi10b2dnbGUtZ3JvdXAtYXBwZWFyYW5jZS1zdGFuZGFyZFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWJ1dHRvbi10b2dnbGVbX25nY29udGVudC0lQ09NUCVdICsgLm1hdC1idXR0b24tdG9nZ2xlW19uZ2NvbnRlbnQtJUNPTVAlXXtib3JkZXItbGVmdDpzb2xpZCAxcHggcmdiYSgwLDAsMCwuMTIpfVtkaXI9cnRsXVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWJ1dHRvbi10b2dnbGUtZ3JvdXAtYXBwZWFyYW5jZS1zdGFuZGFyZFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWJ1dHRvbi10b2dnbGVbX25nY29udGVudC0lQ09NUCVdICsgLm1hdC1idXR0b24tdG9nZ2xlW19uZ2NvbnRlbnQtJUNPTVAlXXtib3JkZXItbGVmdDpub25lO2JvcmRlci1yaWdodDpzb2xpZCAxcHggcmdiYSgwLDAsMCwuMTIpfS5tYXQtYnV0dG9uLXRvZ2dsZS1ncm91cC1hcHBlYXJhbmNlLXN0YW5kYXJkLm1hdC1idXR0b24tdG9nZ2xlLXZlcnRpY2FsW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtYnV0dG9uLXRvZ2dsZVtfbmdjb250ZW50LSVDT01QJV0gKyAubWF0LWJ1dHRvbi10b2dnbGVbX25nY29udGVudC0lQ09NUCVde2JvcmRlci1sZWZ0Om5vbmU7Ym9yZGVyLXJpZ2h0Om5vbmU7Ym9yZGVyLXRvcDpzb2xpZCAxcHggcmdiYSgwLDAsMCwuMTIpfS5tYXQtYnV0dG9uLXRvZ2dsZS1jaGVja2VkW19uZ2NvbnRlbnQtJUNPTVAlXXtiYWNrZ3JvdW5kLWNvbG9yOiNlMGUwZTA7Y29sb3I6IzYxNjE2MX0ubWF0LWJ1dHRvbi10b2dnbGUtY2hlY2tlZC5tYXQtYnV0dG9uLXRvZ2dsZS1hcHBlYXJhbmNlLXN0YW5kYXJkW19uZ2NvbnRlbnQtJUNPTVAlXXtjb2xvcjojMjEyMTIxfS5tYXQtYnV0dG9uLXRvZ2dsZS1kaXNhYmxlZFtfbmdjb250ZW50LSVDT01QJV17Y29sb3I6cmdiYSgwLDAsMCwuMjYpO2JhY2tncm91bmQtY29sb3I6I2VlZX0ubWF0LWJ1dHRvbi10b2dnbGUtZGlzYWJsZWQubWF0LWJ1dHRvbi10b2dnbGUtYXBwZWFyYW5jZS1zdGFuZGFyZFtfbmdjb250ZW50LSVDT01QJV17YmFja2dyb3VuZDojZmZmfS5tYXQtYnV0dG9uLXRvZ2dsZS1kaXNhYmxlZC5tYXQtYnV0dG9uLXRvZ2dsZS1jaGVja2VkW19uZ2NvbnRlbnQtJUNPTVAlXXtiYWNrZ3JvdW5kLWNvbG9yOiNiZGJkYmR9Lm1hdC1idXR0b24tdG9nZ2xlLXN0YW5kYWxvbmUubWF0LWJ1dHRvbi10b2dnbGUtYXBwZWFyYW5jZS1zdGFuZGFyZFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtYnV0dG9uLXRvZ2dsZS1ncm91cC1hcHBlYXJhbmNlLXN0YW5kYXJkW19uZ2NvbnRlbnQtJUNPTVAlXXtib3JkZXI6c29saWQgMXB4IHJnYmEoMCwwLDAsLjEyKX0ubWF0LWJ1dHRvbi10b2dnbGUtYXBwZWFyYW5jZS1zdGFuZGFyZFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWJ1dHRvbi10b2dnbGUtbGFiZWwtY29udGVudFtfbmdjb250ZW50LSVDT01QJV17bGluZS1oZWlnaHQ6NDhweH0ubWF0LWNhcmRbX25nY29udGVudC0lQ09NUCVde2JhY2tncm91bmQ6I2ZmZjtjb2xvcjojMjEyMTIxfS5tYXQtY2FyZFtfbmdjb250ZW50LSVDT01QJV06bm90KFtjbGFzcyo9bWF0LWVsZXZhdGlvbi16XSl7Ym94LXNoYWRvdzowcHggMnB4IDFweCAtMXB4IHJnYmEoMCwgMCwgMCwgMC4yKSwwcHggMXB4IDFweCAwcHggcmdiYSgwLCAwLCAwLCAwLjE0KSwwcHggMXB4IDNweCAwcHggcmdiYSgwLCAwLCAwLCAwLjEyKX0ubWF0LWNhcmQubWF0LWNhcmQtZmxhdFtfbmdjb250ZW50LSVDT01QJV06bm90KFtjbGFzcyo9bWF0LWVsZXZhdGlvbi16XSl7Ym94LXNoYWRvdzowcHggMHB4IDBweCAwcHggcmdiYSgwLCAwLCAwLCAwLjIpLDBweCAwcHggMHB4IDBweCByZ2JhKDAsIDAsIDAsIDAuMTQpLDBweCAwcHggMHB4IDBweCByZ2JhKDAsIDAsIDAsIDAuMTIpfS5tYXQtY2FyZC1zdWJ0aXRsZVtfbmdjb250ZW50LSVDT01QJV17Y29sb3I6IzYxNjE2MX0ubWF0LWNoZWNrYm94LWZyYW1lW19uZ2NvbnRlbnQtJUNPTVAlXXtib3JkZXItY29sb3I6IzYxNjE2MX0ubWF0LWNoZWNrYm94LWNoZWNrbWFya1tfbmdjb250ZW50LSVDT01QJV17ZmlsbDojZmFmYWZhfS5tYXQtY2hlY2tib3gtY2hlY2ttYXJrLXBhdGhbX25nY29udGVudC0lQ09NUCVde3N0cm9rZTojZmFmYWZhICFpbXBvcnRhbnR9Lm1hdC1jaGVja2JveC1taXhlZG1hcmtbX25nY29udGVudC0lQ09NUCVde2JhY2tncm91bmQtY29sb3I6I2ZhZmFmYX0ubWF0LWNoZWNrYm94LWluZGV0ZXJtaW5hdGUubWF0LXByaW1hcnlbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1jaGVja2JveC1iYWNrZ3JvdW5kW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1jaGVja2JveC1jaGVja2VkLm1hdC1wcmltYXJ5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtY2hlY2tib3gtYmFja2dyb3VuZFtfbmdjb250ZW50LSVDT01QJV17YmFja2dyb3VuZC1jb2xvcjojZjU3YzAwfS5tYXQtY2hlY2tib3gtaW5kZXRlcm1pbmF0ZS5tYXQtYWNjZW50W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtY2hlY2tib3gtYmFja2dyb3VuZFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtY2hlY2tib3gtY2hlY2tlZC5tYXQtYWNjZW50W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtY2hlY2tib3gtYmFja2dyb3VuZFtfbmdjb250ZW50LSVDT01QJV17YmFja2dyb3VuZC1jb2xvcjojZmY5ODAwfS5tYXQtY2hlY2tib3gtaW5kZXRlcm1pbmF0ZS5tYXQtd2Fybltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWNoZWNrYm94LWJhY2tncm91bmRbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWNoZWNrYm94LWNoZWNrZWQubWF0LXdhcm5bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1jaGVja2JveC1iYWNrZ3JvdW5kW19uZ2NvbnRlbnQtJUNPTVAlXXtiYWNrZ3JvdW5kLWNvbG9yOiNmNDQzMzZ9Lm1hdC1jaGVja2JveC1kaXNhYmxlZC5tYXQtY2hlY2tib3gtY2hlY2tlZFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWNoZWNrYm94LWJhY2tncm91bmRbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWNoZWNrYm94LWRpc2FibGVkLm1hdC1jaGVja2JveC1pbmRldGVybWluYXRlW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtY2hlY2tib3gtYmFja2dyb3VuZFtfbmdjb250ZW50LSVDT01QJV17YmFja2dyb3VuZC1jb2xvcjojYjBiMGIwfS5tYXQtY2hlY2tib3gtZGlzYWJsZWRbX25nY29udGVudC0lQ09NUCVdOm5vdCgubWF0LWNoZWNrYm94LWNoZWNrZWQpICAgLm1hdC1jaGVja2JveC1mcmFtZVtfbmdjb250ZW50LSVDT01QJV17Ym9yZGVyLWNvbG9yOiNiMGIwYjB9Lm1hdC1jaGVja2JveC1kaXNhYmxlZFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWNoZWNrYm94LWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXtjb2xvcjojNjE2MTYxfS5tYXQtY2hlY2tib3hbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1yaXBwbGUtZWxlbWVudFtfbmdjb250ZW50LSVDT01QJV17YmFja2dyb3VuZC1jb2xvcjojMDAwfS5tYXQtY2hlY2tib3gtY2hlY2tlZFtfbmdjb250ZW50LSVDT01QJV06bm90KC5tYXQtY2hlY2tib3gtZGlzYWJsZWQpLm1hdC1wcmltYXJ5ICAgLm1hdC1yaXBwbGUtZWxlbWVudFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtY2hlY2tib3hbX25nY29udGVudC0lQ09NUCVdOmFjdGl2ZTpub3QoLm1hdC1jaGVja2JveC1kaXNhYmxlZCkubWF0LXByaW1hcnkgICAubWF0LXJpcHBsZS1lbGVtZW50W19uZ2NvbnRlbnQtJUNPTVAlXXtiYWNrZ3JvdW5kOiNmNTdjMDB9Lm1hdC1jaGVja2JveC1jaGVja2VkW19uZ2NvbnRlbnQtJUNPTVAlXTpub3QoLm1hdC1jaGVja2JveC1kaXNhYmxlZCkubWF0LWFjY2VudCAgIC5tYXQtcmlwcGxlLWVsZW1lbnRbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWNoZWNrYm94W19uZ2NvbnRlbnQtJUNPTVAlXTphY3RpdmU6bm90KC5tYXQtY2hlY2tib3gtZGlzYWJsZWQpLm1hdC1hY2NlbnQgICAubWF0LXJpcHBsZS1lbGVtZW50W19uZ2NvbnRlbnQtJUNPTVAlXXtiYWNrZ3JvdW5kOiNmZjk4MDB9Lm1hdC1jaGVja2JveC1jaGVja2VkW19uZ2NvbnRlbnQtJUNPTVAlXTpub3QoLm1hdC1jaGVja2JveC1kaXNhYmxlZCkubWF0LXdhcm4gICAubWF0LXJpcHBsZS1lbGVtZW50W19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1jaGVja2JveFtfbmdjb250ZW50LSVDT01QJV06YWN0aXZlOm5vdCgubWF0LWNoZWNrYm94LWRpc2FibGVkKS5tYXQtd2FybiAgIC5tYXQtcmlwcGxlLWVsZW1lbnRbX25nY29udGVudC0lQ09NUCVde2JhY2tncm91bmQ6I2Y0NDMzNn0ubWF0LWNoaXAubWF0LXN0YW5kYXJkLWNoaXBbX25nY29udGVudC0lQ09NUCVde2JhY2tncm91bmQtY29sb3I6I2UwZTBlMDtjb2xvcjojMjEyMTIxfS5tYXQtY2hpcC5tYXQtc3RhbmRhcmQtY2hpcFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWNoaXAtcmVtb3ZlW19uZ2NvbnRlbnQtJUNPTVAlXXtjb2xvcjojMjEyMTIxO29wYWNpdHk6LjR9Lm1hdC1jaGlwLm1hdC1zdGFuZGFyZC1jaGlwW19uZ2NvbnRlbnQtJUNPTVAlXTpub3QoLm1hdC1jaGlwLWRpc2FibGVkKTphY3RpdmV7Ym94LXNoYWRvdzowcHggM3B4IDNweCAtMnB4IHJnYmEoMCwgMCwgMCwgMC4yKSwwcHggM3B4IDRweCAwcHggcmdiYSgwLCAwLCAwLCAwLjE0KSwwcHggMXB4IDhweCAwcHggcmdiYSgwLCAwLCAwLCAwLjEyKX0ubWF0LWNoaXAubWF0LXN0YW5kYXJkLWNoaXBbX25nY29udGVudC0lQ09NUCVdOm5vdCgubWF0LWNoaXAtZGlzYWJsZWQpICAgLm1hdC1jaGlwLXJlbW92ZVtfbmdjb250ZW50LSVDT01QJV06aG92ZXJ7b3BhY2l0eTouNTR9Lm1hdC1jaGlwLm1hdC1zdGFuZGFyZC1jaGlwLm1hdC1jaGlwLWRpc2FibGVkW19uZ2NvbnRlbnQtJUNPTVAlXXtvcGFjaXR5Oi40fS5tYXQtY2hpcC5tYXQtc3RhbmRhcmQtY2hpcFtfbmdjb250ZW50LSVDT01QJV06OmFmdGVye2JhY2tncm91bmQ6IzAwMH0ubWF0LWNoaXAubWF0LXN0YW5kYXJkLWNoaXAubWF0LWNoaXAtc2VsZWN0ZWQubWF0LXByaW1hcnlbX25nY29udGVudC0lQ09NUCVde2JhY2tncm91bmQtY29sb3I6I2Y1N2MwMDtjb2xvcjojZmZmfS5tYXQtY2hpcC5tYXQtc3RhbmRhcmQtY2hpcC5tYXQtY2hpcC1zZWxlY3RlZC5tYXQtcHJpbWFyeVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWNoaXAtcmVtb3ZlW19uZ2NvbnRlbnQtJUNPTVAlXXtjb2xvcjojZmZmO29wYWNpdHk6LjR9Lm1hdC1jaGlwLm1hdC1zdGFuZGFyZC1jaGlwLm1hdC1jaGlwLXNlbGVjdGVkLm1hdC1wcmltYXJ5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtcmlwcGxlLWVsZW1lbnRbX25nY29udGVudC0lQ09NUCVde2JhY2tncm91bmQtY29sb3I6cmdiYSgyNTUsMjU1LDI1NSwuMSl9Lm1hdC1jaGlwLm1hdC1zdGFuZGFyZC1jaGlwLm1hdC1jaGlwLXNlbGVjdGVkLm1hdC13YXJuW19uZ2NvbnRlbnQtJUNPTVAlXXtiYWNrZ3JvdW5kLWNvbG9yOiNmNDQzMzY7Y29sb3I6I2ZmZn0ubWF0LWNoaXAubWF0LXN0YW5kYXJkLWNoaXAubWF0LWNoaXAtc2VsZWN0ZWQubWF0LXdhcm5bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1jaGlwLXJlbW92ZVtfbmdjb250ZW50LSVDT01QJV17Y29sb3I6I2ZmZjtvcGFjaXR5Oi40fS5tYXQtY2hpcC5tYXQtc3RhbmRhcmQtY2hpcC5tYXQtY2hpcC1zZWxlY3RlZC5tYXQtd2Fybltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXJpcHBsZS1lbGVtZW50W19uZ2NvbnRlbnQtJUNPTVAlXXtiYWNrZ3JvdW5kLWNvbG9yOnJnYmEoMjU1LDI1NSwyNTUsLjEpfS5tYXQtY2hpcC5tYXQtc3RhbmRhcmQtY2hpcC5tYXQtY2hpcC1zZWxlY3RlZC5tYXQtYWNjZW50W19uZ2NvbnRlbnQtJUNPTVAlXXtiYWNrZ3JvdW5kLWNvbG9yOiNmZjk4MDA7Y29sb3I6I2ZmZn0ubWF0LWNoaXAubWF0LXN0YW5kYXJkLWNoaXAubWF0LWNoaXAtc2VsZWN0ZWQubWF0LWFjY2VudFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWNoaXAtcmVtb3ZlW19uZ2NvbnRlbnQtJUNPTVAlXXtjb2xvcjojZmZmO29wYWNpdHk6LjR9Lm1hdC1jaGlwLm1hdC1zdGFuZGFyZC1jaGlwLm1hdC1jaGlwLXNlbGVjdGVkLm1hdC1hY2NlbnRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1yaXBwbGUtZWxlbWVudFtfbmdjb250ZW50LSVDT01QJV17YmFja2dyb3VuZC1jb2xvcjpyZ2JhKDI1NSwyNTUsMjU1LC4xKX0ubWF0LXRhYmxlW19uZ2NvbnRlbnQtJUNPTVAlXXtiYWNrZ3JvdW5kOiNmZmZ9Lm1hdC10YWJsZVtfbmdjb250ZW50LSVDT01QJV0gICB0aGVhZFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdGFibGVbX25nY29udGVudC0lQ09NUCVdICAgdGJvZHlbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXRhYmxlW19uZ2NvbnRlbnQtJUNPTVAlXSAgIHRmb290W19uZ2NvbnRlbnQtJUNPTVAlXSwgbWF0LWhlYWRlci1yb3dbX25nY29udGVudC0lQ09NUCVdLCBtYXQtcm93W19uZ2NvbnRlbnQtJUNPTVAlXSwgbWF0LWZvb3Rlci1yb3dbX25nY29udGVudC0lQ09NUCVdLCBbbWF0LWhlYWRlci1yb3ddW19uZ2NvbnRlbnQtJUNPTVAlXSwgW21hdC1yb3ddW19uZ2NvbnRlbnQtJUNPTVAlXSwgW21hdC1mb290ZXItcm93XVtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdGFibGUtc3RpY2t5W19uZ2NvbnRlbnQtJUNPTVAlXXtiYWNrZ3JvdW5kOmluaGVyaXR9bWF0LXJvd1tfbmdjb250ZW50LSVDT01QJV0sIG1hdC1oZWFkZXItcm93W19uZ2NvbnRlbnQtJUNPTVAlXSwgbWF0LWZvb3Rlci1yb3dbX25nY29udGVudC0lQ09NUCVdLCB0aC5tYXQtaGVhZGVyLWNlbGxbX25nY29udGVudC0lQ09NUCVdLCB0ZC5tYXQtY2VsbFtfbmdjb250ZW50LSVDT01QJV0sIHRkLm1hdC1mb290ZXItY2VsbFtfbmdjb250ZW50LSVDT01QJV17Ym9yZGVyLWJvdHRvbS1jb2xvcjpyZ2JhKDAsMCwwLC4xMil9Lm1hdC1oZWFkZXItY2VsbFtfbmdjb250ZW50LSVDT01QJV17Y29sb3I6IzYxNjE2MX0ubWF0LWNlbGxbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWZvb3Rlci1jZWxsW19uZ2NvbnRlbnQtJUNPTVAlXXtjb2xvcjojMjEyMTIxfS5tYXQtY2FsZW5kYXItYXJyb3dbX25nY29udGVudC0lQ09NUCVde2JvcmRlci10b3AtY29sb3I6cmdiYSgwLDAsMCwuNTQpfS5tYXQtZGF0ZXBpY2tlci10b2dnbGVbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWRhdGVwaWNrZXItY29udGVudFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWNhbGVuZGFyLW5leHQtYnV0dG9uW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1kYXRlcGlja2VyLWNvbnRlbnRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1jYWxlbmRhci1wcmV2aW91cy1idXR0b25bX25nY29udGVudC0lQ09NUCVde2NvbG9yOnJnYmEoMCwwLDAsLjU0KX0ubWF0LWNhbGVuZGFyLXRhYmxlLWhlYWRlcltfbmdjb250ZW50LSVDT01QJV17Y29sb3I6cmdiYSgwLDAsMCwuMzgpfS5tYXQtY2FsZW5kYXItdGFibGUtaGVhZGVyLWRpdmlkZXJbX25nY29udGVudC0lQ09NUCVdOjphZnRlcntiYWNrZ3JvdW5kOnJnYmEoMCwwLDAsLjEyKX0ubWF0LWNhbGVuZGFyLWJvZHktbGFiZWxbX25nY29udGVudC0lQ09NUCVde2NvbG9yOiM2MTYxNjF9Lm1hdC1jYWxlbmRhci1ib2R5LWNlbGwtY29udGVudFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtZGF0ZS1yYW5nZS1pbnB1dC1zZXBhcmF0b3JbX25nY29udGVudC0lQ09NUCVde2NvbG9yOiMyMTIxMjE7Ym9yZGVyLWNvbG9yOnRyYW5zcGFyZW50fS5tYXQtY2FsZW5kYXItYm9keS1kaXNhYmxlZFtfbmdjb250ZW50LSVDT01QJV0gPiAubWF0LWNhbGVuZGFyLWJvZHktY2VsbC1jb250ZW50W19uZ2NvbnRlbnQtJUNPTVAlXTpub3QoLm1hdC1jYWxlbmRhci1ib2R5LXNlbGVjdGVkKTpub3QoLm1hdC1jYWxlbmRhci1ib2R5LWNvbXBhcmlzb24taWRlbnRpY2FsKXtjb2xvcjojNzU3NTc1fS5tYXQtZm9ybS1maWVsZC1kaXNhYmxlZFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWRhdGUtcmFuZ2UtaW5wdXQtc2VwYXJhdG9yW19uZ2NvbnRlbnQtJUNPTVAlXXtjb2xvcjojNzU3NTc1fS5tYXQtY2FsZW5kYXItYm9keS1jZWxsW19uZ2NvbnRlbnQtJUNPTVAlXTpub3QoLm1hdC1jYWxlbmRhci1ib2R5LWRpc2FibGVkKTpob3ZlciA+IC5tYXQtY2FsZW5kYXItYm9keS1jZWxsLWNvbnRlbnRbX25nY29udGVudC0lQ09NUCVdOm5vdCgubWF0LWNhbGVuZGFyLWJvZHktc2VsZWN0ZWQpOm5vdCgubWF0LWNhbGVuZGFyLWJvZHktY29tcGFyaXNvbi1pZGVudGljYWwpLCAuY2RrLWtleWJvYXJkLWZvY3VzZWRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1jYWxlbmRhci1ib2R5LWFjdGl2ZVtfbmdjb250ZW50LSVDT01QJV0gPiAubWF0LWNhbGVuZGFyLWJvZHktY2VsbC1jb250ZW50W19uZ2NvbnRlbnQtJUNPTVAlXTpub3QoLm1hdC1jYWxlbmRhci1ib2R5LXNlbGVjdGVkKTpub3QoLm1hdC1jYWxlbmRhci1ib2R5LWNvbXBhcmlzb24taWRlbnRpY2FsKSwgLmNkay1wcm9ncmFtLWZvY3VzZWRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1jYWxlbmRhci1ib2R5LWFjdGl2ZVtfbmdjb250ZW50LSVDT01QJV0gPiAubWF0LWNhbGVuZGFyLWJvZHktY2VsbC1jb250ZW50W19uZ2NvbnRlbnQtJUNPTVAlXTpub3QoLm1hdC1jYWxlbmRhci1ib2R5LXNlbGVjdGVkKTpub3QoLm1hdC1jYWxlbmRhci1ib2R5LWNvbXBhcmlzb24taWRlbnRpY2FsKXtiYWNrZ3JvdW5kLWNvbG9yOnJnYmEoMCwwLDAsLjA0KX0ubWF0LWNhbGVuZGFyLWJvZHktaW4tcHJldmlld1tfbmdjb250ZW50LSVDT01QJV17Y29sb3I6cmdiYSgwLDAsMCwuMjQpfS5tYXQtY2FsZW5kYXItYm9keS10b2RheVtfbmdjb250ZW50LSVDT01QJV06bm90KC5tYXQtY2FsZW5kYXItYm9keS1zZWxlY3RlZCk6bm90KC5tYXQtY2FsZW5kYXItYm9keS1jb21wYXJpc29uLWlkZW50aWNhbCl7Ym9yZGVyLWNvbG9yOnJnYmEoMCwwLDAsLjM4KX0ubWF0LWNhbGVuZGFyLWJvZHktZGlzYWJsZWRbX25nY29udGVudC0lQ09NUCVdID4gLm1hdC1jYWxlbmRhci1ib2R5LXRvZGF5W19uZ2NvbnRlbnQtJUNPTVAlXTpub3QoLm1hdC1jYWxlbmRhci1ib2R5LXNlbGVjdGVkKTpub3QoLm1hdC1jYWxlbmRhci1ib2R5LWNvbXBhcmlzb24taWRlbnRpY2FsKXtib3JkZXItY29sb3I6cmdiYSgwLDAsMCwuMTgpfS5tYXQtY2FsZW5kYXItYm9keS1pbi1yYW5nZVtfbmdjb250ZW50LSVDT01QJV06OmJlZm9yZXtiYWNrZ3JvdW5kOnJnYmEoMjQ1LDEyNCwwLC4yKX0ubWF0LWNhbGVuZGFyLWJvZHktY29tcGFyaXNvbi1pZGVudGljYWxbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWNhbGVuZGFyLWJvZHktaW4tY29tcGFyaXNvbi1yYW5nZVtfbmdjb250ZW50LSVDT01QJV06OmJlZm9yZXtiYWNrZ3JvdW5kOnJnYmEoMjQ5LDE3MSwwLC4yKX0ubWF0LWNhbGVuZGFyLWJvZHktY29tcGFyaXNvbi1icmlkZ2Utc3RhcnRbX25nY29udGVudC0lQ09NUCVdOjpiZWZvcmUsIFtkaXI9cnRsXVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWNhbGVuZGFyLWJvZHktY29tcGFyaXNvbi1icmlkZ2UtZW5kW19uZ2NvbnRlbnQtJUNPTVAlXTo6YmVmb3Jle2JhY2tncm91bmQ6bGluZWFyLWdyYWRpZW50KHRvIHJpZ2h0LCByZ2JhKDI0NSwgMTI0LCAwLCAwLjIpIDUwJSwgcmdiYSgyNDksIDE3MSwgMCwgMC4yKSA1MCUpfS5tYXQtY2FsZW5kYXItYm9keS1jb21wYXJpc29uLWJyaWRnZS1lbmRbX25nY29udGVudC0lQ09NUCVdOjpiZWZvcmUsIFtkaXI9cnRsXVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWNhbGVuZGFyLWJvZHktY29tcGFyaXNvbi1icmlkZ2Utc3RhcnRbX25nY29udGVudC0lQ09NUCVdOjpiZWZvcmV7YmFja2dyb3VuZDpsaW5lYXItZ3JhZGllbnQodG8gbGVmdCwgcmdiYSgyNDUsIDEyNCwgMCwgMC4yKSA1MCUsIHJnYmEoMjQ5LCAxNzEsIDAsIDAuMikgNTAlKX0ubWF0LWNhbGVuZGFyLWJvZHktaW4tcmFuZ2VbX25nY29udGVudC0lQ09NUCVdID4gLm1hdC1jYWxlbmRhci1ib2R5LWNvbXBhcmlzb24taWRlbnRpY2FsW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1jYWxlbmRhci1ib2R5LWluLWNvbXBhcmlzb24tcmFuZ2UubWF0LWNhbGVuZGFyLWJvZHktaW4tcmFuZ2VbX25nY29udGVudC0lQ09NUCVdOjphZnRlcntiYWNrZ3JvdW5kOiNhOGRhYjV9Lm1hdC1jYWxlbmRhci1ib2R5LWNvbXBhcmlzb24taWRlbnRpY2FsLm1hdC1jYWxlbmRhci1ib2R5LXNlbGVjdGVkW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1jYWxlbmRhci1ib2R5LWluLWNvbXBhcmlzb24tcmFuZ2VbX25nY29udGVudC0lQ09NUCVdID4gLm1hdC1jYWxlbmRhci1ib2R5LXNlbGVjdGVkW19uZ2NvbnRlbnQtJUNPTVAlXXtiYWNrZ3JvdW5kOiM0NmEzNWV9Lm1hdC1jYWxlbmRhci1ib2R5LXNlbGVjdGVkW19uZ2NvbnRlbnQtJUNPTVAlXXtiYWNrZ3JvdW5kLWNvbG9yOiNmNTdjMDA7Y29sb3I6I2ZmZn0ubWF0LWNhbGVuZGFyLWJvZHktZGlzYWJsZWRbX25nY29udGVudC0lQ09NUCVdID4gLm1hdC1jYWxlbmRhci1ib2R5LXNlbGVjdGVkW19uZ2NvbnRlbnQtJUNPTVAlXXtiYWNrZ3JvdW5kLWNvbG9yOnJnYmEoMjQ1LDEyNCwwLC40KX0ubWF0LWNhbGVuZGFyLWJvZHktdG9kYXkubWF0LWNhbGVuZGFyLWJvZHktc2VsZWN0ZWRbX25nY29udGVudC0lQ09NUCVde2JveC1zaGFkb3c6aW5zZXQgMCAwIDAgMXB4ICNmZmZ9Lm1hdC1kYXRlcGlja2VyLWNvbnRlbnRbX25nY29udGVudC0lQ09NUCVde2JveC1zaGFkb3c6MHB4IDJweCA0cHggLTFweCByZ2JhKDAsIDAsIDAsIDAuMiksMHB4IDRweCA1cHggMHB4IHJnYmEoMCwgMCwgMCwgMC4xNCksMHB4IDFweCAxMHB4IDBweCByZ2JhKDAsIDAsIDAsIDAuMTIpO2JhY2tncm91bmQtY29sb3I6I2ZmZjtjb2xvcjojMjEyMTIxfS5tYXQtZGF0ZXBpY2tlci1jb250ZW50Lm1hdC1hY2NlbnRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1jYWxlbmRhci1ib2R5LWluLXJhbmdlW19uZ2NvbnRlbnQtJUNPTVAlXTo6YmVmb3Jle2JhY2tncm91bmQ6cmdiYSgyNTUsMTUyLDAsLjIpfS5tYXQtZGF0ZXBpY2tlci1jb250ZW50Lm1hdC1hY2NlbnRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1jYWxlbmRhci1ib2R5LWNvbXBhcmlzb24taWRlbnRpY2FsW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1kYXRlcGlja2VyLWNvbnRlbnQubWF0LWFjY2VudFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWNhbGVuZGFyLWJvZHktaW4tY29tcGFyaXNvbi1yYW5nZVtfbmdjb250ZW50LSVDT01QJV06OmJlZm9yZXtiYWNrZ3JvdW5kOnJnYmEoMjQ5LDE3MSwwLC4yKX0ubWF0LWRhdGVwaWNrZXItY29udGVudC5tYXQtYWNjZW50W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtY2FsZW5kYXItYm9keS1jb21wYXJpc29uLWJyaWRnZS1zdGFydFtfbmdjb250ZW50LSVDT01QJV06OmJlZm9yZSwgLm1hdC1kYXRlcGlja2VyLWNvbnRlbnQubWF0LWFjY2VudFtfbmdjb250ZW50LSVDT01QJV0gICBbZGlyPXJ0bF1bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1jYWxlbmRhci1ib2R5LWNvbXBhcmlzb24tYnJpZGdlLWVuZFtfbmdjb250ZW50LSVDT01QJV06OmJlZm9yZXtiYWNrZ3JvdW5kOmxpbmVhci1ncmFkaWVudCh0byByaWdodCwgcmdiYSgyNTUsIDE1MiwgMCwgMC4yKSA1MCUsIHJnYmEoMjQ5LCAxNzEsIDAsIDAuMikgNTAlKX0ubWF0LWRhdGVwaWNrZXItY29udGVudC5tYXQtYWNjZW50W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtY2FsZW5kYXItYm9keS1jb21wYXJpc29uLWJyaWRnZS1lbmRbX25nY29udGVudC0lQ09NUCVdOjpiZWZvcmUsIC5tYXQtZGF0ZXBpY2tlci1jb250ZW50Lm1hdC1hY2NlbnRbX25nY29udGVudC0lQ09NUCVdICAgW2Rpcj1ydGxdW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtY2FsZW5kYXItYm9keS1jb21wYXJpc29uLWJyaWRnZS1zdGFydFtfbmdjb250ZW50LSVDT01QJV06OmJlZm9yZXtiYWNrZ3JvdW5kOmxpbmVhci1ncmFkaWVudCh0byBsZWZ0LCByZ2JhKDI1NSwgMTUyLCAwLCAwLjIpIDUwJSwgcmdiYSgyNDksIDE3MSwgMCwgMC4yKSA1MCUpfS5tYXQtZGF0ZXBpY2tlci1jb250ZW50Lm1hdC1hY2NlbnRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1jYWxlbmRhci1ib2R5LWluLXJhbmdlW19uZ2NvbnRlbnQtJUNPTVAlXSA+IC5tYXQtY2FsZW5kYXItYm9keS1jb21wYXJpc29uLWlkZW50aWNhbFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtZGF0ZXBpY2tlci1jb250ZW50Lm1hdC1hY2NlbnRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1jYWxlbmRhci1ib2R5LWluLWNvbXBhcmlzb24tcmFuZ2UubWF0LWNhbGVuZGFyLWJvZHktaW4tcmFuZ2VbX25nY29udGVudC0lQ09NUCVdOjphZnRlcntiYWNrZ3JvdW5kOiNhOGRhYjV9Lm1hdC1kYXRlcGlja2VyLWNvbnRlbnQubWF0LWFjY2VudFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWNhbGVuZGFyLWJvZHktY29tcGFyaXNvbi1pZGVudGljYWwubWF0LWNhbGVuZGFyLWJvZHktc2VsZWN0ZWRbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWRhdGVwaWNrZXItY29udGVudC5tYXQtYWNjZW50W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtY2FsZW5kYXItYm9keS1pbi1jb21wYXJpc29uLXJhbmdlW19uZ2NvbnRlbnQtJUNPTVAlXSA+IC5tYXQtY2FsZW5kYXItYm9keS1zZWxlY3RlZFtfbmdjb250ZW50LSVDT01QJV17YmFja2dyb3VuZDojNDZhMzVlfS5tYXQtZGF0ZXBpY2tlci1jb250ZW50Lm1hdC1hY2NlbnRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1jYWxlbmRhci1ib2R5LXNlbGVjdGVkW19uZ2NvbnRlbnQtJUNPTVAlXXtiYWNrZ3JvdW5kLWNvbG9yOiNmZjk4MDA7Y29sb3I6I2ZmZn0ubWF0LWRhdGVwaWNrZXItY29udGVudC5tYXQtYWNjZW50W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtY2FsZW5kYXItYm9keS1kaXNhYmxlZFtfbmdjb250ZW50LSVDT01QJV0gPiAubWF0LWNhbGVuZGFyLWJvZHktc2VsZWN0ZWRbX25nY29udGVudC0lQ09NUCVde2JhY2tncm91bmQtY29sb3I6cmdiYSgyNTUsMTUyLDAsLjQpfS5tYXQtZGF0ZXBpY2tlci1jb250ZW50Lm1hdC1hY2NlbnRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1jYWxlbmRhci1ib2R5LXRvZGF5Lm1hdC1jYWxlbmRhci1ib2R5LXNlbGVjdGVkW19uZ2NvbnRlbnQtJUNPTVAlXXtib3gtc2hhZG93Omluc2V0IDAgMCAwIDFweCAjZmZmfS5tYXQtZGF0ZXBpY2tlci1jb250ZW50Lm1hdC13YXJuW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtY2FsZW5kYXItYm9keS1pbi1yYW5nZVtfbmdjb250ZW50LSVDT01QJV06OmJlZm9yZXtiYWNrZ3JvdW5kOnJnYmEoMjQ0LDY3LDU0LC4yKX0ubWF0LWRhdGVwaWNrZXItY29udGVudC5tYXQtd2Fybltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWNhbGVuZGFyLWJvZHktY29tcGFyaXNvbi1pZGVudGljYWxbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWRhdGVwaWNrZXItY29udGVudC5tYXQtd2Fybltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWNhbGVuZGFyLWJvZHktaW4tY29tcGFyaXNvbi1yYW5nZVtfbmdjb250ZW50LSVDT01QJV06OmJlZm9yZXtiYWNrZ3JvdW5kOnJnYmEoMjQ5LDE3MSwwLC4yKX0ubWF0LWRhdGVwaWNrZXItY29udGVudC5tYXQtd2Fybltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWNhbGVuZGFyLWJvZHktY29tcGFyaXNvbi1icmlkZ2Utc3RhcnRbX25nY29udGVudC0lQ09NUCVdOjpiZWZvcmUsIC5tYXQtZGF0ZXBpY2tlci1jb250ZW50Lm1hdC13YXJuW19uZ2NvbnRlbnQtJUNPTVAlXSAgIFtkaXI9cnRsXVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWNhbGVuZGFyLWJvZHktY29tcGFyaXNvbi1icmlkZ2UtZW5kW19uZ2NvbnRlbnQtJUNPTVAlXTo6YmVmb3Jle2JhY2tncm91bmQ6bGluZWFyLWdyYWRpZW50KHRvIHJpZ2h0LCByZ2JhKDI0NCwgNjcsIDU0LCAwLjIpIDUwJSwgcmdiYSgyNDksIDE3MSwgMCwgMC4yKSA1MCUpfS5tYXQtZGF0ZXBpY2tlci1jb250ZW50Lm1hdC13YXJuW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtY2FsZW5kYXItYm9keS1jb21wYXJpc29uLWJyaWRnZS1lbmRbX25nY29udGVudC0lQ09NUCVdOjpiZWZvcmUsIC5tYXQtZGF0ZXBpY2tlci1jb250ZW50Lm1hdC13YXJuW19uZ2NvbnRlbnQtJUNPTVAlXSAgIFtkaXI9cnRsXVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWNhbGVuZGFyLWJvZHktY29tcGFyaXNvbi1icmlkZ2Utc3RhcnRbX25nY29udGVudC0lQ09NUCVdOjpiZWZvcmV7YmFja2dyb3VuZDpsaW5lYXItZ3JhZGllbnQodG8gbGVmdCwgcmdiYSgyNDQsIDY3LCA1NCwgMC4yKSA1MCUsIHJnYmEoMjQ5LCAxNzEsIDAsIDAuMikgNTAlKX0ubWF0LWRhdGVwaWNrZXItY29udGVudC5tYXQtd2Fybltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWNhbGVuZGFyLWJvZHktaW4tcmFuZ2VbX25nY29udGVudC0lQ09NUCVdID4gLm1hdC1jYWxlbmRhci1ib2R5LWNvbXBhcmlzb24taWRlbnRpY2FsW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1kYXRlcGlja2VyLWNvbnRlbnQubWF0LXdhcm5bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1jYWxlbmRhci1ib2R5LWluLWNvbXBhcmlzb24tcmFuZ2UubWF0LWNhbGVuZGFyLWJvZHktaW4tcmFuZ2VbX25nY29udGVudC0lQ09NUCVdOjphZnRlcntiYWNrZ3JvdW5kOiNhOGRhYjV9Lm1hdC1kYXRlcGlja2VyLWNvbnRlbnQubWF0LXdhcm5bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1jYWxlbmRhci1ib2R5LWNvbXBhcmlzb24taWRlbnRpY2FsLm1hdC1jYWxlbmRhci1ib2R5LXNlbGVjdGVkW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1kYXRlcGlja2VyLWNvbnRlbnQubWF0LXdhcm5bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1jYWxlbmRhci1ib2R5LWluLWNvbXBhcmlzb24tcmFuZ2VbX25nY29udGVudC0lQ09NUCVdID4gLm1hdC1jYWxlbmRhci1ib2R5LXNlbGVjdGVkW19uZ2NvbnRlbnQtJUNPTVAlXXtiYWNrZ3JvdW5kOiM0NmEzNWV9Lm1hdC1kYXRlcGlja2VyLWNvbnRlbnQubWF0LXdhcm5bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1jYWxlbmRhci1ib2R5LXNlbGVjdGVkW19uZ2NvbnRlbnQtJUNPTVAlXXtiYWNrZ3JvdW5kLWNvbG9yOiNmNDQzMzY7Y29sb3I6I2ZmZn0ubWF0LWRhdGVwaWNrZXItY29udGVudC5tYXQtd2Fybltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWNhbGVuZGFyLWJvZHktZGlzYWJsZWRbX25nY29udGVudC0lQ09NUCVdID4gLm1hdC1jYWxlbmRhci1ib2R5LXNlbGVjdGVkW19uZ2NvbnRlbnQtJUNPTVAlXXtiYWNrZ3JvdW5kLWNvbG9yOnJnYmEoMjQ0LDY3LDU0LC40KX0ubWF0LWRhdGVwaWNrZXItY29udGVudC5tYXQtd2Fybltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWNhbGVuZGFyLWJvZHktdG9kYXkubWF0LWNhbGVuZGFyLWJvZHktc2VsZWN0ZWRbX25nY29udGVudC0lQ09NUCVde2JveC1zaGFkb3c6aW5zZXQgMCAwIDAgMXB4ICNmZmZ9Lm1hdC1kYXRlcGlja2VyLWNvbnRlbnQtdG91Y2hbX25nY29udGVudC0lQ09NUCVde2JveC1zaGFkb3c6MHB4IDBweCAwcHggMHB4IHJnYmEoMCwgMCwgMCwgMC4yKSwwcHggMHB4IDBweCAwcHggcmdiYSgwLCAwLCAwLCAwLjE0KSwwcHggMHB4IDBweCAwcHggcmdiYSgwLCAwLCAwLCAwLjEyKX0ubWF0LWRhdGVwaWNrZXItdG9nZ2xlLWFjdGl2ZVtfbmdjb250ZW50LSVDT01QJV17Y29sb3I6I2Y1N2MwMH0ubWF0LWRhdGVwaWNrZXItdG9nZ2xlLWFjdGl2ZS5tYXQtYWNjZW50W19uZ2NvbnRlbnQtJUNPTVAlXXtjb2xvcjojZmY5ODAwfS5tYXQtZGF0ZXBpY2tlci10b2dnbGUtYWN0aXZlLm1hdC13YXJuW19uZ2NvbnRlbnQtJUNPTVAlXXtjb2xvcjojZjQ0MzM2fS5tYXQtZGF0ZS1yYW5nZS1pbnB1dC1pbm5lcltkaXNhYmxlZF1bX25nY29udGVudC0lQ09NUCVde2NvbG9yOiM3NTc1NzV9Lm1hdC1kaWFsb2ctY29udGFpbmVyW19uZ2NvbnRlbnQtJUNPTVAlXXtib3gtc2hhZG93OjBweCAxMXB4IDE1cHggLTdweCByZ2JhKDAsIDAsIDAsIDAuMiksMHB4IDI0cHggMzhweCAzcHggcmdiYSgwLCAwLCAwLCAwLjE0KSwwcHggOXB4IDQ2cHggOHB4IHJnYmEoMCwgMCwgMCwgMC4xMik7YmFja2dyb3VuZDojZmZmO2NvbG9yOiMyMTIxMjF9Lm1hdC1kaXZpZGVyW19uZ2NvbnRlbnQtJUNPTVAlXXtib3JkZXItdG9wLWNvbG9yOnJnYmEoMCwwLDAsLjEyKX0ubWF0LWRpdmlkZXItdmVydGljYWxbX25nY29udGVudC0lQ09NUCVde2JvcmRlci1yaWdodC1jb2xvcjpyZ2JhKDAsMCwwLC4xMil9Lm1hdC1leHBhbnNpb24tcGFuZWxbX25nY29udGVudC0lQ09NUCVde2JhY2tncm91bmQ6I2ZmZjtjb2xvcjojMjEyMTIxfS5tYXQtZXhwYW5zaW9uLXBhbmVsW19uZ2NvbnRlbnQtJUNPTVAlXTpub3QoW2NsYXNzKj1tYXQtZWxldmF0aW9uLXpdKXtib3gtc2hhZG93OjBweCAzcHggMXB4IC0ycHggcmdiYSgwLCAwLCAwLCAwLjIpLDBweCAycHggMnB4IDBweCByZ2JhKDAsIDAsIDAsIDAuMTQpLDBweCAxcHggNXB4IDBweCByZ2JhKDAsIDAsIDAsIDAuMTIpfS5tYXQtYWN0aW9uLXJvd1tfbmdjb250ZW50LSVDT01QJV17Ym9yZGVyLXRvcC1jb2xvcjpyZ2JhKDAsMCwwLC4xMil9Lm1hdC1leHBhbnNpb24tcGFuZWxbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1leHBhbnNpb24tcGFuZWwtaGVhZGVyLmNkay1rZXlib2FyZC1mb2N1c2VkW19uZ2NvbnRlbnQtJUNPTVAlXTpub3QoW2FyaWEtZGlzYWJsZWQ9dHJ1ZV0pLCAubWF0LWV4cGFuc2lvbi1wYW5lbFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWV4cGFuc2lvbi1wYW5lbC1oZWFkZXIuY2RrLXByb2dyYW0tZm9jdXNlZFtfbmdjb250ZW50LSVDT01QJV06bm90KFthcmlhLWRpc2FibGVkPXRydWVdKSwgLm1hdC1leHBhbnNpb24tcGFuZWxbX25nY29udGVudC0lQ09NUCVdOm5vdCgubWF0LWV4cGFuZGVkKSAgIC5tYXQtZXhwYW5zaW9uLXBhbmVsLWhlYWRlcltfbmdjb250ZW50LSVDT01QJV06aG92ZXI6bm90KFthcmlhLWRpc2FibGVkPXRydWVdKXtiYWNrZ3JvdW5kOnJnYmEoMCwwLDAsLjA0KX1AbWVkaWEoaG92ZXI6IG5vbmUpey5tYXQtZXhwYW5zaW9uLXBhbmVsW19uZ2NvbnRlbnQtJUNPTVAlXTpub3QoLm1hdC1leHBhbmRlZCk6bm90KFthcmlhLWRpc2FibGVkPXRydWVdKSAgIC5tYXQtZXhwYW5zaW9uLXBhbmVsLWhlYWRlcltfbmdjb250ZW50LSVDT01QJV06aG92ZXJ7YmFja2dyb3VuZDojZmZmfX0ubWF0LWV4cGFuc2lvbi1wYW5lbC1oZWFkZXItdGl0bGVbX25nY29udGVudC0lQ09NUCVde2NvbG9yOiMyMTIxMjF9Lm1hdC1leHBhbnNpb24tcGFuZWwtaGVhZGVyLWRlc2NyaXB0aW9uW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1leHBhbnNpb24taW5kaWNhdG9yW19uZ2NvbnRlbnQtJUNPTVAlXTo6YWZ0ZXJ7Y29sb3I6IzYxNjE2MX0ubWF0LWV4cGFuc2lvbi1wYW5lbC1oZWFkZXJbYXJpYS1kaXNhYmxlZD10cnVlXVtfbmdjb250ZW50LSVDT01QJV17Y29sb3I6cmdiYSgwLDAsMCwuMjYpfS5tYXQtZXhwYW5zaW9uLXBhbmVsLWhlYWRlclthcmlhLWRpc2FibGVkPXRydWVdW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZXhwYW5zaW9uLXBhbmVsLWhlYWRlci10aXRsZVtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtZXhwYW5zaW9uLXBhbmVsLWhlYWRlclthcmlhLWRpc2FibGVkPXRydWVdW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZXhwYW5zaW9uLXBhbmVsLWhlYWRlci1kZXNjcmlwdGlvbltfbmdjb250ZW50LSVDT01QJV17Y29sb3I6aW5oZXJpdH0ubWF0LWV4cGFuc2lvbi1wYW5lbC1oZWFkZXJbX25nY29udGVudC0lQ09NUCVde2hlaWdodDo0OHB4fS5tYXQtZXhwYW5zaW9uLXBhbmVsLWhlYWRlci5tYXQtZXhwYW5kZWRbX25nY29udGVudC0lQ09NUCVde2hlaWdodDo2NHB4fS5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17Y29sb3I6cmdiYSg5Nyw5Nyw5NywuNil9Lm1hdC1oaW50W19uZ2NvbnRlbnQtJUNPTVAlXXtjb2xvcjpyZ2JhKDk3LDk3LDk3LC42KX0ubWF0LWZvcm0tZmllbGQubWF0LWZvY3VzZWRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXtjb2xvcjojZjU3YzAwfS5tYXQtZm9ybS1maWVsZC5tYXQtZm9jdXNlZFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWwubWF0LWFjY2VudFtfbmdjb250ZW50LSVDT01QJV17Y29sb3I6I2ZmOTgwMH0ubWF0LWZvcm0tZmllbGQubWF0LWZvY3VzZWRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsLm1hdC13YXJuW19uZ2NvbnRlbnQtJUNPTVAlXXtjb2xvcjojZjQ0MzM2fS5tYXQtZm9jdXNlZFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtcmVxdWlyZWQtbWFya2VyW19uZ2NvbnRlbnQtJUNPTVAlXXtjb2xvcjojZmY5ODAwfS5tYXQtZm9ybS1maWVsZC1yaXBwbGVbX25nY29udGVudC0lQ09NUCVde2JhY2tncm91bmQtY29sb3I6cmdiYSgwLDAsMCwuODcpfS5tYXQtZm9ybS1maWVsZC5tYXQtZm9jdXNlZFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtcmlwcGxlW19uZ2NvbnRlbnQtJUNPTVAlXXtiYWNrZ3JvdW5kLWNvbG9yOiNmNTdjMDB9Lm1hdC1mb3JtLWZpZWxkLm1hdC1mb2N1c2VkW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1yaXBwbGUubWF0LWFjY2VudFtfbmdjb250ZW50LSVDT01QJV17YmFja2dyb3VuZC1jb2xvcjojZmY5ODAwfS5tYXQtZm9ybS1maWVsZC5tYXQtZm9jdXNlZFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtcmlwcGxlLm1hdC13YXJuW19uZ2NvbnRlbnQtJUNPTVAlXXtiYWNrZ3JvdW5kLWNvbG9yOiNmNDQzMzZ9Lm1hdC1mb3JtLWZpZWxkLXR5cGUtbWF0LW5hdGl2ZS1zZWxlY3QubWF0LWZvY3VzZWRbX25nY29udGVudC0lQ09NUCVdOm5vdCgubWF0LWZvcm0tZmllbGQtaW52YWxpZCkgICAubWF0LWZvcm0tZmllbGQtaW5maXhbX25nY29udGVudC0lQ09NUCVdOjphZnRlcntjb2xvcjojZjU3YzAwfS5tYXQtZm9ybS1maWVsZC10eXBlLW1hdC1uYXRpdmUtc2VsZWN0Lm1hdC1mb2N1c2VkW19uZ2NvbnRlbnQtJUNPTVAlXTpub3QoLm1hdC1mb3JtLWZpZWxkLWludmFsaWQpLm1hdC1hY2NlbnQgICAubWF0LWZvcm0tZmllbGQtaW5maXhbX25nY29udGVudC0lQ09NUCVdOjphZnRlcntjb2xvcjojZmY5ODAwfS5tYXQtZm9ybS1maWVsZC10eXBlLW1hdC1uYXRpdmUtc2VsZWN0Lm1hdC1mb2N1c2VkW19uZ2NvbnRlbnQtJUNPTVAlXTpub3QoLm1hdC1mb3JtLWZpZWxkLWludmFsaWQpLm1hdC13YXJuICAgLm1hdC1mb3JtLWZpZWxkLWluZml4W19uZ2NvbnRlbnQtJUNPTVAlXTo6YWZ0ZXJ7Y29sb3I6I2Y0NDMzNn0ubWF0LWZvcm0tZmllbGQubWF0LWZvcm0tZmllbGQtaW52YWxpZFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVde2NvbG9yOiNmNDQzMzZ9Lm1hdC1mb3JtLWZpZWxkLm1hdC1mb3JtLWZpZWxkLWludmFsaWRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsLm1hdC1hY2NlbnRbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWZvcm0tZmllbGQubWF0LWZvcm0tZmllbGQtaW52YWxpZFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLXJlcXVpcmVkLW1hcmtlcltfbmdjb250ZW50LSVDT01QJV17Y29sb3I6I2Y0NDMzNn0ubWF0LWZvcm0tZmllbGQubWF0LWZvcm0tZmllbGQtaW52YWxpZFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtcmlwcGxlW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1mb3JtLWZpZWxkLm1hdC1mb3JtLWZpZWxkLWludmFsaWRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLXJpcHBsZS5tYXQtYWNjZW50W19uZ2NvbnRlbnQtJUNPTVAlXXtiYWNrZ3JvdW5kLWNvbG9yOiNmNDQzMzZ9Lm1hdC1lcnJvcltfbmdjb250ZW50LSVDT01QJV17Y29sb3I6I2Y0NDMzNn0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1sZWdhY3lbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXtjb2xvcjojNjE2MTYxfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWxlZ2FjeVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWhpbnRbX25nY29udGVudC0lQ09NUCVde2NvbG9yOiM2MTYxNjF9Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtbGVnYWN5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC11bmRlcmxpbmVbX25nY29udGVudC0lQ09NUCVde2JhY2tncm91bmQtY29sb3I6cmdiYSgwLDAsMCwuNDIpfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWxlZ2FjeS5tYXQtZm9ybS1maWVsZC1kaXNhYmxlZFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtdW5kZXJsaW5lW19uZ2NvbnRlbnQtJUNPTVAlXXtiYWNrZ3JvdW5kLWltYWdlOmxpbmVhci1ncmFkaWVudCh0byByaWdodCwgcmdiYSgwLCAwLCAwLCAwLjQyKSAwJSwgcmdiYSgwLCAwLCAwLCAwLjQyKSAzMyUsIHRyYW5zcGFyZW50IDAlKTtiYWNrZ3JvdW5kLXNpemU6NHB4IDEwMCU7YmFja2dyb3VuZC1yZXBlYXQ6cmVwZWF0LXh9Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2Utc3RhbmRhcmRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLXVuZGVybGluZVtfbmdjb250ZW50LSVDT01QJV17YmFja2dyb3VuZC1jb2xvcjpyZ2JhKDAsMCwwLC40Mil9Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2Utc3RhbmRhcmQubWF0LWZvcm0tZmllbGQtZGlzYWJsZWRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLXVuZGVybGluZVtfbmdjb250ZW50LSVDT01QJV17YmFja2dyb3VuZC1pbWFnZTpsaW5lYXItZ3JhZGllbnQodG8gcmlnaHQsIHJnYmEoMCwgMCwgMCwgMC40MikgMCUsIHJnYmEoMCwgMCwgMCwgMC40MikgMzMlLCB0cmFuc3BhcmVudCAwJSk7YmFja2dyb3VuZC1zaXplOjRweCAxMDAlO2JhY2tncm91bmQtcmVwZWF0OnJlcGVhdC14fS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWZpbGxbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWZsZXhbX25nY29udGVudC0lQ09NUCVde2JhY2tncm91bmQtY29sb3I6cmdiYSgwLDAsMCwuMDQpfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWZpbGwubWF0LWZvcm0tZmllbGQtZGlzYWJsZWRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWZsZXhbX25nY29udGVudC0lQ09NUCVde2JhY2tncm91bmQtY29sb3I6cmdiYSgwLDAsMCwuMDIpfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWZpbGxbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLXVuZGVybGluZVtfbmdjb250ZW50LSVDT01QJV06OmJlZm9yZXtiYWNrZ3JvdW5kLWNvbG9yOnJnYmEoMCwwLDAsLjQyKX0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1maWxsLm1hdC1mb3JtLWZpZWxkLWRpc2FibGVkW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17Y29sb3I6Izc1NzU3NX0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1maWxsLm1hdC1mb3JtLWZpZWxkLWRpc2FibGVkW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC11bmRlcmxpbmVbX25nY29udGVudC0lQ09NUCVdOjpiZWZvcmV7YmFja2dyb3VuZC1jb2xvcjp0cmFuc3BhcmVudH0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1vdXRsaW5lW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1vdXRsaW5lW19uZ2NvbnRlbnQtJUNPTVAlXXtjb2xvcjpyZ2JhKDAsMCwwLC4xMil9Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2Utb3V0bGluZVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtb3V0bGluZS10aGlja1tfbmdjb250ZW50LSVDT01QJV17Y29sb3I6cmdiYSgwLDAsMCwuODcpfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLW91dGxpbmUubWF0LWZvY3VzZWRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLW91dGxpbmUtdGhpY2tbX25nY29udGVudC0lQ09NUCVde2NvbG9yOiNmNTdjMDB9Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2Utb3V0bGluZS5tYXQtZm9jdXNlZC5tYXQtYWNjZW50W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1vdXRsaW5lLXRoaWNrW19uZ2NvbnRlbnQtJUNPTVAlXXtjb2xvcjojZmY5ODAwfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLW91dGxpbmUubWF0LWZvY3VzZWQubWF0LXdhcm5bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLW91dGxpbmUtdGhpY2tbX25nY29udGVudC0lQ09NUCVde2NvbG9yOiNmNDQzMzZ9Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2Utb3V0bGluZS5tYXQtZm9ybS1maWVsZC1pbnZhbGlkLm1hdC1mb3JtLWZpZWxkLWludmFsaWRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLW91dGxpbmUtdGhpY2tbX25nY29udGVudC0lQ09NUCVde2NvbG9yOiNmNDQzMzZ9Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2Utb3V0bGluZS5tYXQtZm9ybS1maWVsZC1kaXNhYmxlZFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVde2NvbG9yOiM3NTc1NzV9Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2Utb3V0bGluZS5tYXQtZm9ybS1maWVsZC1kaXNhYmxlZFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtb3V0bGluZVtfbmdjb250ZW50LSVDT01QJV17Y29sb3I6cmdiYSgwLDAsMCwuMDYpfS5tYXQtaWNvbi5tYXQtcHJpbWFyeVtfbmdjb250ZW50LSVDT01QJV17Y29sb3I6I2Y1N2MwMH0ubWF0LWljb24ubWF0LWFjY2VudFtfbmdjb250ZW50LSVDT01QJV17Y29sb3I6I2ZmOTgwMH0ubWF0LWljb24ubWF0LXdhcm5bX25nY29udGVudC0lQ09NUCVde2NvbG9yOiNmNDQzMzZ9Lm1hdC1mb3JtLWZpZWxkLXR5cGUtbWF0LW5hdGl2ZS1zZWxlY3RbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWluZml4W19uZ2NvbnRlbnQtJUNPTVAlXTo6YWZ0ZXJ7Y29sb3I6IzYxNjE2MX0ubWF0LWlucHV0LWVsZW1lbnRbX25nY29udGVudC0lQ09NUCVdOmRpc2FibGVkLCAubWF0LWZvcm0tZmllbGQtdHlwZS1tYXQtbmF0aXZlLXNlbGVjdC5tYXQtZm9ybS1maWVsZC1kaXNhYmxlZFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtaW5maXhbX25nY29udGVudC0lQ09NUCVdOjphZnRlcntjb2xvcjojNzU3NTc1fS5tYXQtaW5wdXQtZWxlbWVudFtfbmdjb250ZW50LSVDT01QJV17Y2FyZXQtY29sb3I6I2Y1N2MwMH0ubWF0LWlucHV0LWVsZW1lbnRbX25nY29udGVudC0lQ09NUCVdOjpwbGFjZWhvbGRlcntjb2xvcjpyZ2JhKDk3LDk3LDk3LC40Mil9Lm1hdC1pbnB1dC1lbGVtZW50W19uZ2NvbnRlbnQtJUNPTVAlXTo6LW1vei1wbGFjZWhvbGRlcntjb2xvcjpyZ2JhKDk3LDk3LDk3LC40Mil9Lm1hdC1pbnB1dC1lbGVtZW50W19uZ2NvbnRlbnQtJUNPTVAlXTo6LXdlYmtpdC1pbnB1dC1wbGFjZWhvbGRlcntjb2xvcjpyZ2JhKDk3LDk3LDk3LC40Mil9Lm1hdC1pbnB1dC1lbGVtZW50W19uZ2NvbnRlbnQtJUNPTVAlXTotbXMtaW5wdXQtcGxhY2Vob2xkZXJ7Y29sb3I6cmdiYSg5Nyw5Nyw5NywuNDIpfS5tYXQtZm9ybS1maWVsZC5tYXQtYWNjZW50W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaW5wdXQtZWxlbWVudFtfbmdjb250ZW50LSVDT01QJV17Y2FyZXQtY29sb3I6I2ZmOTgwMH0ubWF0LWZvcm0tZmllbGQubWF0LXdhcm5bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pbnB1dC1lbGVtZW50W19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1mb3JtLWZpZWxkLWludmFsaWRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pbnB1dC1lbGVtZW50W19uZ2NvbnRlbnQtJUNPTVAlXXtjYXJldC1jb2xvcjojZjQ0MzM2fS5tYXQtZm9ybS1maWVsZC10eXBlLW1hdC1uYXRpdmUtc2VsZWN0Lm1hdC1mb3JtLWZpZWxkLWludmFsaWRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWluZml4W19uZ2NvbnRlbnQtJUNPTVAlXTo6YWZ0ZXJ7Y29sb3I6I2Y0NDMzNn0ubWF0LWxpc3QtYmFzZVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpc3QtaXRlbVtfbmdjb250ZW50LSVDT01QJV17Y29sb3I6IzIxMjEyMX0ubWF0LWxpc3QtYmFzZVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpc3Qtb3B0aW9uW19uZ2NvbnRlbnQtJUNPTVAlXXtjb2xvcjojMjEyMTIxfS5tYXQtbGlzdC1iYXNlW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtc3ViaGVhZGVyW19uZ2NvbnRlbnQtJUNPTVAlXXtjb2xvcjojNjE2MTYxfS5tYXQtbGlzdC1pdGVtLWRpc2FibGVkW19uZ2NvbnRlbnQtJUNPTVAlXXtiYWNrZ3JvdW5kLWNvbG9yOiNlZWV9Lm1hdC1saXN0LW9wdGlvbltfbmdjb250ZW50LSVDT01QJV06aG92ZXIsIC5tYXQtbGlzdC1vcHRpb25bX25nY29udGVudC0lQ09NUCVdOmZvY3VzLCAubWF0LW5hdi1saXN0W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGlzdC1pdGVtW19uZ2NvbnRlbnQtJUNPTVAlXTpob3ZlciwgLm1hdC1uYXYtbGlzdFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpc3QtaXRlbVtfbmdjb250ZW50LSVDT01QJV06Zm9jdXMsIC5tYXQtYWN0aW9uLWxpc3RbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saXN0LWl0ZW1bX25nY29udGVudC0lQ09NUCVdOmhvdmVyLCAubWF0LWFjdGlvbi1saXN0W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGlzdC1pdGVtW19uZ2NvbnRlbnQtJUNPTVAlXTpmb2N1c3tiYWNrZ3JvdW5kOnJnYmEoMCwwLDAsLjA0KX0ubWF0LWxpc3Qtc2luZ2xlLXNlbGVjdGVkLW9wdGlvbltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtbGlzdC1zaW5nbGUtc2VsZWN0ZWQtb3B0aW9uW19uZ2NvbnRlbnQtJUNPTVAlXTpob3ZlciwgLm1hdC1saXN0LXNpbmdsZS1zZWxlY3RlZC1vcHRpb25bX25nY29udGVudC0lQ09NUCVdOmZvY3Vze2JhY2tncm91bmQ6cmdiYSgwLDAsMCwuMTIpfS5tYXQtbWVudS1wYW5lbFtfbmdjb250ZW50LSVDT01QJV17YmFja2dyb3VuZDojZmZmfS5tYXQtbWVudS1wYW5lbFtfbmdjb250ZW50LSVDT01QJV06bm90KFtjbGFzcyo9bWF0LWVsZXZhdGlvbi16XSl7Ym94LXNoYWRvdzowcHggMnB4IDRweCAtMXB4IHJnYmEoMCwgMCwgMCwgMC4yKSwwcHggNHB4IDVweCAwcHggcmdiYSgwLCAwLCAwLCAwLjE0KSwwcHggMXB4IDEwcHggMHB4IHJnYmEoMCwgMCwgMCwgMC4xMil9Lm1hdC1tZW51LWl0ZW1bX25nY29udGVudC0lQ09NUCVde2JhY2tncm91bmQ6dHJhbnNwYXJlbnQ7Y29sb3I6IzIxMjEyMX0ubWF0LW1lbnUtaXRlbVtkaXNhYmxlZF1bX25nY29udGVudC0lQ09NUCVdLCAubWF0LW1lbnUtaXRlbVtkaXNhYmxlZF1bX25nY29udGVudC0lQ09NUCVdOjphZnRlcntjb2xvcjpyZ2JhKDAsMCwwLC4zOCl9Lm1hdC1tZW51LWl0ZW1bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pY29uLW5vLWNvbG9yW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1tZW51LWl0ZW0tc3VibWVudS10cmlnZ2VyW19uZ2NvbnRlbnQtJUNPTVAlXTo6YWZ0ZXJ7Y29sb3I6cmdiYSgwLDAsMCwuNTQpfS5tYXQtbWVudS1pdGVtW19uZ2NvbnRlbnQtJUNPTVAlXTpob3Zlcjpub3QoW2Rpc2FibGVkXSksIC5tYXQtbWVudS1pdGVtLmNkay1wcm9ncmFtLWZvY3VzZWRbX25nY29udGVudC0lQ09NUCVdOm5vdChbZGlzYWJsZWRdKSwgLm1hdC1tZW51LWl0ZW0uY2RrLWtleWJvYXJkLWZvY3VzZWRbX25nY29udGVudC0lQ09NUCVdOm5vdChbZGlzYWJsZWRdKSwgLm1hdC1tZW51LWl0ZW0taGlnaGxpZ2h0ZWRbX25nY29udGVudC0lQ09NUCVdOm5vdChbZGlzYWJsZWRdKXtiYWNrZ3JvdW5kOnJnYmEoMCwwLDAsLjA0KX0ubWF0LXBhZ2luYXRvcltfbmdjb250ZW50LSVDT01QJV17YmFja2dyb3VuZDojZmZmfS5tYXQtcGFnaW5hdG9yW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1wYWdpbmF0b3ItcGFnZS1zaXplW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtc2VsZWN0LXRyaWdnZXJbX25nY29udGVudC0lQ09NUCVde2NvbG9yOiM2MTYxNjF9Lm1hdC1wYWdpbmF0b3ItZGVjcmVtZW50W19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1wYWdpbmF0b3ItaW5jcmVtZW50W19uZ2NvbnRlbnQtJUNPTVAlXXtib3JkZXItdG9wOjJweCBzb2xpZCByZ2JhKDAsMCwwLC41NCk7Ym9yZGVyLXJpZ2h0OjJweCBzb2xpZCByZ2JhKDAsMCwwLC41NCl9Lm1hdC1wYWdpbmF0b3ItZmlyc3RbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXBhZ2luYXRvci1sYXN0W19uZ2NvbnRlbnQtJUNPTVAlXXtib3JkZXItdG9wOjJweCBzb2xpZCByZ2JhKDAsMCwwLC41NCl9Lm1hdC1pY29uLWJ1dHRvbltkaXNhYmxlZF1bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1wYWdpbmF0b3ItZGVjcmVtZW50W19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1pY29uLWJ1dHRvbltkaXNhYmxlZF1bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1wYWdpbmF0b3ItaW5jcmVtZW50W19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1pY29uLWJ1dHRvbltkaXNhYmxlZF1bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1wYWdpbmF0b3ItZmlyc3RbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWljb24tYnV0dG9uW2Rpc2FibGVkXVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXBhZ2luYXRvci1sYXN0W19uZ2NvbnRlbnQtJUNPTVAlXXtib3JkZXItY29sb3I6cmdiYSgwLDAsMCwuMzgpfS5tYXQtcGFnaW5hdG9yLWNvbnRhaW5lcltfbmdjb250ZW50LSVDT01QJV17bWluLWhlaWdodDo1NnB4fS5tYXQtcHJvZ3Jlc3MtYmFyLWJhY2tncm91bmRbX25nY29udGVudC0lQ09NUCVde2ZpbGw6I2ZmOTgwMH0ubWF0LXByb2dyZXNzLWJhci1idWZmZXJbX25nY29udGVudC0lQ09NUCVde2JhY2tncm91bmQtY29sb3I6I2ZmOTgwMH0ubWF0LXByb2dyZXNzLWJhci1maWxsW19uZ2NvbnRlbnQtJUNPTVAlXTo6YWZ0ZXJ7YmFja2dyb3VuZC1jb2xvcjojZjU3YzAwfS5tYXQtcHJvZ3Jlc3MtYmFyLm1hdC1hY2NlbnRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1wcm9ncmVzcy1iYXItYmFja2dyb3VuZFtfbmdjb250ZW50LSVDT01QJV17ZmlsbDojZmY5ODAwfS5tYXQtcHJvZ3Jlc3MtYmFyLm1hdC1hY2NlbnRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1wcm9ncmVzcy1iYXItYnVmZmVyW19uZ2NvbnRlbnQtJUNPTVAlXXtiYWNrZ3JvdW5kLWNvbG9yOiNmZjk4MDB9Lm1hdC1wcm9ncmVzcy1iYXIubWF0LWFjY2VudFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXByb2dyZXNzLWJhci1maWxsW19uZ2NvbnRlbnQtJUNPTVAlXTo6YWZ0ZXJ7YmFja2dyb3VuZC1jb2xvcjojZmY5ODAwfS5tYXQtcHJvZ3Jlc3MtYmFyLm1hdC13YXJuW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtcHJvZ3Jlc3MtYmFyLWJhY2tncm91bmRbX25nY29udGVudC0lQ09NUCVde2ZpbGw6I2ZmY2RkMn0ubWF0LXByb2dyZXNzLWJhci5tYXQtd2Fybltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXByb2dyZXNzLWJhci1idWZmZXJbX25nY29udGVudC0lQ09NUCVde2JhY2tncm91bmQtY29sb3I6I2ZmY2RkMn0ubWF0LXByb2dyZXNzLWJhci5tYXQtd2Fybltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXByb2dyZXNzLWJhci1maWxsW19uZ2NvbnRlbnQtJUNPTVAlXTo6YWZ0ZXJ7YmFja2dyb3VuZC1jb2xvcjojZjQ0MzM2fS5tYXQtcHJvZ3Jlc3Mtc3Bpbm5lcltfbmdjb250ZW50LSVDT01QJV0gICBjaXJjbGVbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXNwaW5uZXJbX25nY29udGVudC0lQ09NUCVdICAgY2lyY2xlW19uZ2NvbnRlbnQtJUNPTVAlXXtzdHJva2U6I2Y1N2MwMH0ubWF0LXByb2dyZXNzLXNwaW5uZXIubWF0LWFjY2VudFtfbmdjb250ZW50LSVDT01QJV0gICBjaXJjbGVbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXNwaW5uZXIubWF0LWFjY2VudFtfbmdjb250ZW50LSVDT01QJV0gICBjaXJjbGVbX25nY29udGVudC0lQ09NUCVde3N0cm9rZTojZmY5ODAwfS5tYXQtcHJvZ3Jlc3Mtc3Bpbm5lci5tYXQtd2Fybltfbmdjb250ZW50LSVDT01QJV0gICBjaXJjbGVbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXNwaW5uZXIubWF0LXdhcm5bX25nY29udGVudC0lQ09NUCVdICAgY2lyY2xlW19uZ2NvbnRlbnQtJUNPTVAlXXtzdHJva2U6I2Y0NDMzNn0ubWF0LXJhZGlvLW91dGVyLWNpcmNsZVtfbmdjb250ZW50LSVDT01QJV17Ym9yZGVyLWNvbG9yOiM2MTYxNjF9Lm1hdC1yYWRpby1idXR0b24ubWF0LXByaW1hcnkubWF0LXJhZGlvLWNoZWNrZWRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1yYWRpby1vdXRlci1jaXJjbGVbX25nY29udGVudC0lQ09NUCVde2JvcmRlci1jb2xvcjojZjU3YzAwfS5tYXQtcmFkaW8tYnV0dG9uLm1hdC1wcmltYXJ5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtcmFkaW8taW5uZXItY2lyY2xlW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1yYWRpby1idXR0b24ubWF0LXByaW1hcnlbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1yYWRpby1yaXBwbGVbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1yaXBwbGUtZWxlbWVudFtfbmdjb250ZW50LSVDT01QJV06bm90KC5tYXQtcmFkaW8tcGVyc2lzdGVudC1yaXBwbGUpLCAubWF0LXJhZGlvLWJ1dHRvbi5tYXQtcHJpbWFyeS5tYXQtcmFkaW8tY2hlY2tlZFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXJhZGlvLXBlcnNpc3RlbnQtcmlwcGxlW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1yYWRpby1idXR0b24ubWF0LXByaW1hcnlbX25nY29udGVudC0lQ09NUCVdOmFjdGl2ZSAgIC5tYXQtcmFkaW8tcGVyc2lzdGVudC1yaXBwbGVbX25nY29udGVudC0lQ09NUCVde2JhY2tncm91bmQtY29sb3I6I2Y1N2MwMH0ubWF0LXJhZGlvLWJ1dHRvbi5tYXQtYWNjZW50Lm1hdC1yYWRpby1jaGVja2VkW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtcmFkaW8tb3V0ZXItY2lyY2xlW19uZ2NvbnRlbnQtJUNPTVAlXXtib3JkZXItY29sb3I6I2ZmOTgwMH0ubWF0LXJhZGlvLWJ1dHRvbi5tYXQtYWNjZW50W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtcmFkaW8taW5uZXItY2lyY2xlW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1yYWRpby1idXR0b24ubWF0LWFjY2VudFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXJhZGlvLXJpcHBsZVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXJpcHBsZS1lbGVtZW50W19uZ2NvbnRlbnQtJUNPTVAlXTpub3QoLm1hdC1yYWRpby1wZXJzaXN0ZW50LXJpcHBsZSksIC5tYXQtcmFkaW8tYnV0dG9uLm1hdC1hY2NlbnQubWF0LXJhZGlvLWNoZWNrZWRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1yYWRpby1wZXJzaXN0ZW50LXJpcHBsZVtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtcmFkaW8tYnV0dG9uLm1hdC1hY2NlbnRbX25nY29udGVudC0lQ09NUCVdOmFjdGl2ZSAgIC5tYXQtcmFkaW8tcGVyc2lzdGVudC1yaXBwbGVbX25nY29udGVudC0lQ09NUCVde2JhY2tncm91bmQtY29sb3I6I2ZmOTgwMH0ubWF0LXJhZGlvLWJ1dHRvbi5tYXQtd2Fybi5tYXQtcmFkaW8tY2hlY2tlZFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXJhZGlvLW91dGVyLWNpcmNsZVtfbmdjb250ZW50LSVDT01QJV17Ym9yZGVyLWNvbG9yOiNmNDQzMzZ9Lm1hdC1yYWRpby1idXR0b24ubWF0LXdhcm5bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1yYWRpby1pbm5lci1jaXJjbGVbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXJhZGlvLWJ1dHRvbi5tYXQtd2Fybltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXJhZGlvLXJpcHBsZVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXJpcHBsZS1lbGVtZW50W19uZ2NvbnRlbnQtJUNPTVAlXTpub3QoLm1hdC1yYWRpby1wZXJzaXN0ZW50LXJpcHBsZSksIC5tYXQtcmFkaW8tYnV0dG9uLm1hdC13YXJuLm1hdC1yYWRpby1jaGVja2VkW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtcmFkaW8tcGVyc2lzdGVudC1yaXBwbGVbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXJhZGlvLWJ1dHRvbi5tYXQtd2Fybltfbmdjb250ZW50LSVDT01QJV06YWN0aXZlICAgLm1hdC1yYWRpby1wZXJzaXN0ZW50LXJpcHBsZVtfbmdjb250ZW50LSVDT01QJV17YmFja2dyb3VuZC1jb2xvcjojZjQ0MzM2fS5tYXQtcmFkaW8tYnV0dG9uLm1hdC1yYWRpby1kaXNhYmxlZC5tYXQtcmFkaW8tY2hlY2tlZFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXJhZGlvLW91dGVyLWNpcmNsZVtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtcmFkaW8tYnV0dG9uLm1hdC1yYWRpby1kaXNhYmxlZFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXJhZGlvLW91dGVyLWNpcmNsZVtfbmdjb250ZW50LSVDT01QJV17Ym9yZGVyLWNvbG9yOnJnYmEoMCwwLDAsLjM4KX0ubWF0LXJhZGlvLWJ1dHRvbi5tYXQtcmFkaW8tZGlzYWJsZWRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1yYWRpby1yaXBwbGVbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1yaXBwbGUtZWxlbWVudFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtcmFkaW8tYnV0dG9uLm1hdC1yYWRpby1kaXNhYmxlZFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXJhZGlvLWlubmVyLWNpcmNsZVtfbmdjb250ZW50LSVDT01QJV17YmFja2dyb3VuZC1jb2xvcjpyZ2JhKDAsMCwwLC4zOCl9Lm1hdC1yYWRpby1idXR0b24ubWF0LXJhZGlvLWRpc2FibGVkW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtcmFkaW8tbGFiZWwtY29udGVudFtfbmdjb250ZW50LSVDT01QJV17Y29sb3I6cmdiYSgwLDAsMCwuMzgpfS5tYXQtcmFkaW8tYnV0dG9uW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtcmlwcGxlLWVsZW1lbnRbX25nY29udGVudC0lQ09NUCVde2JhY2tncm91bmQtY29sb3I6IzAwMH0ubWF0LXNlbGVjdC12YWx1ZVtfbmdjb250ZW50LSVDT01QJV17Y29sb3I6IzIxMjEyMX0ubWF0LXNlbGVjdC1wbGFjZWhvbGRlcltfbmdjb250ZW50LSVDT01QJV17Y29sb3I6cmdiYSg5Nyw5Nyw5NywuNDIpfS5tYXQtc2VsZWN0LWRpc2FibGVkW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtc2VsZWN0LXZhbHVlW19uZ2NvbnRlbnQtJUNPTVAlXXtjb2xvcjojNzU3NTc1fS5tYXQtc2VsZWN0LWFycm93W19uZ2NvbnRlbnQtJUNPTVAlXXtjb2xvcjojNjE2MTYxfS5tYXQtc2VsZWN0LXBhbmVsW19uZ2NvbnRlbnQtJUNPTVAlXXtiYWNrZ3JvdW5kOiNmZmZ9Lm1hdC1zZWxlY3QtcGFuZWxbX25nY29udGVudC0lQ09NUCVdOm5vdChbY2xhc3MqPW1hdC1lbGV2YXRpb24tel0pe2JveC1zaGFkb3c6MHB4IDJweCA0cHggLTFweCByZ2JhKDAsIDAsIDAsIDAuMiksMHB4IDRweCA1cHggMHB4IHJnYmEoMCwgMCwgMCwgMC4xNCksMHB4IDFweCAxMHB4IDBweCByZ2JhKDAsIDAsIDAsIDAuMTIpfS5tYXQtc2VsZWN0LXBhbmVsW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtb3B0aW9uLm1hdC1zZWxlY3RlZFtfbmdjb250ZW50LSVDT01QJV06bm90KC5tYXQtb3B0aW9uLW11bHRpcGxlKXtiYWNrZ3JvdW5kOnJnYmEoMCwwLDAsLjEyKX0ubWF0LWZvcm0tZmllbGQubWF0LWZvY3VzZWQubWF0LXByaW1hcnlbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1zZWxlY3QtYXJyb3dbX25nY29udGVudC0lQ09NUCVde2NvbG9yOiNmNTdjMDB9Lm1hdC1mb3JtLWZpZWxkLm1hdC1mb2N1c2VkLm1hdC1hY2NlbnRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1zZWxlY3QtYXJyb3dbX25nY29udGVudC0lQ09NUCVde2NvbG9yOiNmZjk4MDB9Lm1hdC1mb3JtLWZpZWxkLm1hdC1mb2N1c2VkLm1hdC13YXJuW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtc2VsZWN0LWFycm93W19uZ2NvbnRlbnQtJUNPTVAlXXtjb2xvcjojZjQ0MzM2fS5tYXQtZm9ybS1maWVsZFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXNlbGVjdC5tYXQtc2VsZWN0LWludmFsaWRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1zZWxlY3QtYXJyb3dbX25nY29udGVudC0lQ09NUCVde2NvbG9yOiNmNDQzMzZ9Lm1hdC1mb3JtLWZpZWxkW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtc2VsZWN0Lm1hdC1zZWxlY3QtZGlzYWJsZWRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1zZWxlY3QtYXJyb3dbX25nY29udGVudC0lQ09NUCVde2NvbG9yOiM3NTc1NzV9Lm1hdC1kcmF3ZXItY29udGFpbmVyW19uZ2NvbnRlbnQtJUNPTVAlXXtiYWNrZ3JvdW5kLWNvbG9yOiNmYWZhZmE7Y29sb3I6IzIxMjEyMX0ubWF0LWRyYXdlcltfbmdjb250ZW50LSVDT01QJV17YmFja2dyb3VuZC1jb2xvcjojZmZmO2NvbG9yOiMyMTIxMjF9Lm1hdC1kcmF3ZXIubWF0LWRyYXdlci1wdXNoW19uZ2NvbnRlbnQtJUNPTVAlXXtiYWNrZ3JvdW5kLWNvbG9yOiNmZmZ9Lm1hdC1kcmF3ZXJbX25nY29udGVudC0lQ09NUCVdOm5vdCgubWF0LWRyYXdlci1zaWRlKXtib3gtc2hhZG93OjBweCA4cHggMTBweCAtNXB4IHJnYmEoMCwgMCwgMCwgMC4yKSwwcHggMTZweCAyNHB4IDJweCByZ2JhKDAsIDAsIDAsIDAuMTQpLDBweCA2cHggMzBweCA1cHggcmdiYSgwLCAwLCAwLCAwLjEyKX0ubWF0LWRyYXdlci1zaWRlW19uZ2NvbnRlbnQtJUNPTVAlXXtib3JkZXItcmlnaHQ6c29saWQgMXB4IHJnYmEoMCwwLDAsLjEyKX0ubWF0LWRyYXdlci1zaWRlLm1hdC1kcmF3ZXItZW5kW19uZ2NvbnRlbnQtJUNPTVAlXXtib3JkZXItbGVmdDpzb2xpZCAxcHggcmdiYSgwLDAsMCwuMTIpO2JvcmRlci1yaWdodDpub25lfVtkaXI9cnRsXVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWRyYXdlci1zaWRlW19uZ2NvbnRlbnQtJUNPTVAlXXtib3JkZXItbGVmdDpzb2xpZCAxcHggcmdiYSgwLDAsMCwuMTIpO2JvcmRlci1yaWdodDpub25lfVtkaXI9cnRsXVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWRyYXdlci1zaWRlLm1hdC1kcmF3ZXItZW5kW19uZ2NvbnRlbnQtJUNPTVAlXXtib3JkZXItbGVmdDpub25lO2JvcmRlci1yaWdodDpzb2xpZCAxcHggcmdiYSgwLDAsMCwuMTIpfS5tYXQtZHJhd2VyLWJhY2tkcm9wLm1hdC1kcmF3ZXItc2hvd25bX25nY29udGVudC0lQ09NUCVde2JhY2tncm91bmQtY29sb3I6cmdiYSgwLDAsMCwuNil9Lm1hdC1zbGlkZS10b2dnbGUubWF0LWNoZWNrZWRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1zbGlkZS10b2dnbGUtdGh1bWJbX25nY29udGVudC0lQ09NUCVde2JhY2tncm91bmQtY29sb3I6I2ZmOTgwMH0ubWF0LXNsaWRlLXRvZ2dsZS5tYXQtY2hlY2tlZFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXNsaWRlLXRvZ2dsZS1iYXJbX25nY29udGVudC0lQ09NUCVde2JhY2tncm91bmQtY29sb3I6cmdiYSgyNTUsMTUyLDAsLjU0KX0ubWF0LXNsaWRlLXRvZ2dsZS5tYXQtY2hlY2tlZFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXJpcHBsZS1lbGVtZW50W19uZ2NvbnRlbnQtJUNPTVAlXXtiYWNrZ3JvdW5kLWNvbG9yOiNmZjk4MDB9Lm1hdC1zbGlkZS10b2dnbGUubWF0LXByaW1hcnkubWF0LWNoZWNrZWRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1zbGlkZS10b2dnbGUtdGh1bWJbX25nY29udGVudC0lQ09NUCVde2JhY2tncm91bmQtY29sb3I6I2Y1N2MwMH0ubWF0LXNsaWRlLXRvZ2dsZS5tYXQtcHJpbWFyeS5tYXQtY2hlY2tlZFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXNsaWRlLXRvZ2dsZS1iYXJbX25nY29udGVudC0lQ09NUCVde2JhY2tncm91bmQtY29sb3I6cmdiYSgyNDUsMTI0LDAsLjU0KX0ubWF0LXNsaWRlLXRvZ2dsZS5tYXQtcHJpbWFyeS5tYXQtY2hlY2tlZFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXJpcHBsZS1lbGVtZW50W19uZ2NvbnRlbnQtJUNPTVAlXXtiYWNrZ3JvdW5kLWNvbG9yOiNmNTdjMDB9Lm1hdC1zbGlkZS10b2dnbGUubWF0LXdhcm4ubWF0LWNoZWNrZWRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1zbGlkZS10b2dnbGUtdGh1bWJbX25nY29udGVudC0lQ09NUCVde2JhY2tncm91bmQtY29sb3I6I2Y0NDMzNn0ubWF0LXNsaWRlLXRvZ2dsZS5tYXQtd2Fybi5tYXQtY2hlY2tlZFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXNsaWRlLXRvZ2dsZS1iYXJbX25nY29udGVudC0lQ09NUCVde2JhY2tncm91bmQtY29sb3I6cmdiYSgyNDQsNjcsNTQsLjU0KX0ubWF0LXNsaWRlLXRvZ2dsZS5tYXQtd2Fybi5tYXQtY2hlY2tlZFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXJpcHBsZS1lbGVtZW50W19uZ2NvbnRlbnQtJUNPTVAlXXtiYWNrZ3JvdW5kLWNvbG9yOiNmNDQzMzZ9Lm1hdC1zbGlkZS10b2dnbGVbX25nY29udGVudC0lQ09NUCVdOm5vdCgubWF0LWNoZWNrZWQpICAgLm1hdC1yaXBwbGUtZWxlbWVudFtfbmdjb250ZW50LSVDT01QJV17YmFja2dyb3VuZC1jb2xvcjojMDAwfS5tYXQtc2xpZGUtdG9nZ2xlLXRodW1iW19uZ2NvbnRlbnQtJUNPTVAlXXtib3gtc2hhZG93OjBweCAycHggMXB4IC0xcHggcmdiYSgwLCAwLCAwLCAwLjIpLDBweCAxcHggMXB4IDBweCByZ2JhKDAsIDAsIDAsIDAuMTQpLDBweCAxcHggM3B4IDBweCByZ2JhKDAsIDAsIDAsIDAuMTIpO2JhY2tncm91bmQtY29sb3I6I2ZhZmFmYX0ubWF0LXNsaWRlLXRvZ2dsZS1iYXJbX25nY29udGVudC0lQ09NUCVde2JhY2tncm91bmQtY29sb3I6cmdiYSgwLDAsMCwuMzgpfS5tYXQtc2xpZGVyLXRyYWNrLWJhY2tncm91bmRbX25nY29udGVudC0lQ09NUCVde2JhY2tncm91bmQtY29sb3I6cmdiYSgwLDAsMCwuMjYpfS5tYXQtcHJpbWFyeVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXNsaWRlci10cmFjay1maWxsW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1wcmltYXJ5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtc2xpZGVyLXRodW1iW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1wcmltYXJ5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtc2xpZGVyLXRodW1iLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXtiYWNrZ3JvdW5kLWNvbG9yOiNmNTdjMDB9Lm1hdC1wcmltYXJ5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtc2xpZGVyLXRodW1iLWxhYmVsLXRleHRbX25nY29udGVudC0lQ09NUCVde2NvbG9yOiNmZmZ9Lm1hdC1wcmltYXJ5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtc2xpZGVyLWZvY3VzLXJpbmdbX25nY29udGVudC0lQ09NUCVde2JhY2tncm91bmQtY29sb3I6cmdiYSgyNDUsMTI0LDAsLjIpfS5tYXQtYWNjZW50W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtc2xpZGVyLXRyYWNrLWZpbGxbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWFjY2VudFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXNsaWRlci10aHVtYltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtYWNjZW50W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtc2xpZGVyLXRodW1iLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXtiYWNrZ3JvdW5kLWNvbG9yOiNmZjk4MDB9Lm1hdC1hY2NlbnRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1zbGlkZXItdGh1bWItbGFiZWwtdGV4dFtfbmdjb250ZW50LSVDT01QJV17Y29sb3I6I2ZmZn0ubWF0LWFjY2VudFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXNsaWRlci1mb2N1cy1yaW5nW19uZ2NvbnRlbnQtJUNPTVAlXXtiYWNrZ3JvdW5kLWNvbG9yOnJnYmEoMjU1LDE1MiwwLC4yKX0ubWF0LXdhcm5bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1zbGlkZXItdHJhY2stZmlsbFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtd2Fybltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXNsaWRlci10aHVtYltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtd2Fybltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXNsaWRlci10aHVtYi1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17YmFja2dyb3VuZC1jb2xvcjojZjQ0MzM2fS5tYXQtd2Fybltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXNsaWRlci10aHVtYi1sYWJlbC10ZXh0W19uZ2NvbnRlbnQtJUNPTVAlXXtjb2xvcjojZmZmfS5tYXQtd2Fybltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXNsaWRlci1mb2N1cy1yaW5nW19uZ2NvbnRlbnQtJUNPTVAlXXtiYWNrZ3JvdW5kLWNvbG9yOnJnYmEoMjQ0LDY3LDU0LC4yKX0ubWF0LXNsaWRlcltfbmdjb250ZW50LSVDT01QJV06aG92ZXIgICAubWF0LXNsaWRlci10cmFjay1iYWNrZ3JvdW5kW19uZ2NvbnRlbnQtJUNPTVAlXSwgLmNkay1mb2N1c2VkW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtc2xpZGVyLXRyYWNrLWJhY2tncm91bmRbX25nY29udGVudC0lQ09NUCVde2JhY2tncm91bmQtY29sb3I6cmdiYSgwLDAsMCwuMzgpfS5tYXQtc2xpZGVyLWRpc2FibGVkW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtc2xpZGVyLXRyYWNrLWJhY2tncm91bmRbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXNsaWRlci1kaXNhYmxlZFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXNsaWRlci10cmFjay1maWxsW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1zbGlkZXItZGlzYWJsZWRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1zbGlkZXItdGh1bWJbX25nY29udGVudC0lQ09NUCVde2JhY2tncm91bmQtY29sb3I6cmdiYSgwLDAsMCwuMjYpfS5tYXQtc2xpZGVyLWRpc2FibGVkW19uZ2NvbnRlbnQtJUNPTVAlXTpob3ZlciAgIC5tYXQtc2xpZGVyLXRyYWNrLWJhY2tncm91bmRbX25nY29udGVudC0lQ09NUCVde2JhY2tncm91bmQtY29sb3I6cmdiYSgwLDAsMCwuMjYpfS5tYXQtc2xpZGVyLW1pbi12YWx1ZVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXNsaWRlci1mb2N1cy1yaW5nW19uZ2NvbnRlbnQtJUNPTVAlXXtiYWNrZ3JvdW5kLWNvbG9yOnJnYmEoMCwwLDAsLjEyKX0ubWF0LXNsaWRlci1taW4tdmFsdWUubWF0LXNsaWRlci10aHVtYi1sYWJlbC1zaG93aW5nW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtc2xpZGVyLXRodW1iW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1zbGlkZXItbWluLXZhbHVlLm1hdC1zbGlkZXItdGh1bWItbGFiZWwtc2hvd2luZ1tfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXNsaWRlci10aHVtYi1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17YmFja2dyb3VuZC1jb2xvcjpyZ2JhKDAsMCwwLC44Nyl9Lm1hdC1zbGlkZXItbWluLXZhbHVlLm1hdC1zbGlkZXItdGh1bWItbGFiZWwtc2hvd2luZy5jZGstZm9jdXNlZFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXNsaWRlci10aHVtYltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtc2xpZGVyLW1pbi12YWx1ZS5tYXQtc2xpZGVyLXRodW1iLWxhYmVsLXNob3dpbmcuY2RrLWZvY3VzZWRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1zbGlkZXItdGh1bWItbGFiZWxbX25nY29udGVudC0lQ09NUCVde2JhY2tncm91bmQtY29sb3I6cmdiYSgwLDAsMCwuMjYpfS5tYXQtc2xpZGVyLW1pbi12YWx1ZVtfbmdjb250ZW50LSVDT01QJV06bm90KC5tYXQtc2xpZGVyLXRodW1iLWxhYmVsLXNob3dpbmcpICAgLm1hdC1zbGlkZXItdGh1bWJbX25nY29udGVudC0lQ09NUCVde2JvcmRlci1jb2xvcjpyZ2JhKDAsMCwwLC4yNik7YmFja2dyb3VuZC1jb2xvcjp0cmFuc3BhcmVudH0ubWF0LXNsaWRlci1taW4tdmFsdWVbX25nY29udGVudC0lQ09NUCVdOm5vdCgubWF0LXNsaWRlci10aHVtYi1sYWJlbC1zaG93aW5nKTpob3ZlciAgIC5tYXQtc2xpZGVyLXRodW1iW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1zbGlkZXItbWluLXZhbHVlW19uZ2NvbnRlbnQtJUNPTVAlXTpub3QoLm1hdC1zbGlkZXItdGh1bWItbGFiZWwtc2hvd2luZykuY2RrLWZvY3VzZWQgICAubWF0LXNsaWRlci10aHVtYltfbmdjb250ZW50LSVDT01QJV17Ym9yZGVyLWNvbG9yOnJnYmEoMCwwLDAsLjM4KX0ubWF0LXNsaWRlci1taW4tdmFsdWVbX25nY29udGVudC0lQ09NUCVdOm5vdCgubWF0LXNsaWRlci10aHVtYi1sYWJlbC1zaG93aW5nKTpob3Zlci5tYXQtc2xpZGVyLWRpc2FibGVkICAgLm1hdC1zbGlkZXItdGh1bWJbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXNsaWRlci1taW4tdmFsdWVbX25nY29udGVudC0lQ09NUCVdOm5vdCgubWF0LXNsaWRlci10aHVtYi1sYWJlbC1zaG93aW5nKS5jZGstZm9jdXNlZC5tYXQtc2xpZGVyLWRpc2FibGVkICAgLm1hdC1zbGlkZXItdGh1bWJbX25nY29udGVudC0lQ09NUCVde2JvcmRlci1jb2xvcjpyZ2JhKDAsMCwwLC4yNil9Lm1hdC1zbGlkZXItaGFzLXRpY2tzW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtc2xpZGVyLXdyYXBwZXJbX25nY29udGVudC0lQ09NUCVdOjphZnRlcntib3JkZXItY29sb3I6cmdiYSgwLDAsMCwuNyl9Lm1hdC1zbGlkZXItaG9yaXpvbnRhbFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXNsaWRlci10aWNrc1tfbmdjb250ZW50LSVDT01QJV17YmFja2dyb3VuZC1pbWFnZTpyZXBlYXRpbmctbGluZWFyLWdyYWRpZW50KHRvIHJpZ2h0LCByZ2JhKDAsIDAsIDAsIDAuNyksIHJnYmEoMCwgMCwgMCwgMC43KSAycHgsIHRyYW5zcGFyZW50IDAsIHRyYW5zcGFyZW50KTtiYWNrZ3JvdW5kLWltYWdlOi1tb3otcmVwZWF0aW5nLWxpbmVhci1ncmFkaWVudCgwLjAwMDFkZWcsIHJnYmEoMCwgMCwgMCwgMC43KSwgcmdiYSgwLCAwLCAwLCAwLjcpIDJweCwgdHJhbnNwYXJlbnQgMCwgdHJhbnNwYXJlbnQpfS5tYXQtc2xpZGVyLXZlcnRpY2FsW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtc2xpZGVyLXRpY2tzW19uZ2NvbnRlbnQtJUNPTVAlXXtiYWNrZ3JvdW5kLWltYWdlOnJlcGVhdGluZy1saW5lYXItZ3JhZGllbnQodG8gYm90dG9tLCByZ2JhKDAsIDAsIDAsIDAuNyksIHJnYmEoMCwgMCwgMCwgMC43KSAycHgsIHRyYW5zcGFyZW50IDAsIHRyYW5zcGFyZW50KX0ubWF0LXN0ZXAtaGVhZGVyLmNkay1rZXlib2FyZC1mb2N1c2VkW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1zdGVwLWhlYWRlci5jZGstcHJvZ3JhbS1mb2N1c2VkW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1zdGVwLWhlYWRlcltfbmdjb250ZW50LSVDT01QJV06aG92ZXJ7YmFja2dyb3VuZC1jb2xvcjpyZ2JhKDAsMCwwLC4wNCl9QG1lZGlhKGhvdmVyOiBub25lKXsubWF0LXN0ZXAtaGVhZGVyW19uZ2NvbnRlbnQtJUNPTVAlXTpob3ZlcntiYWNrZ3JvdW5kOm5vbmV9fS5tYXQtc3RlcC1oZWFkZXJbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1zdGVwLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1zdGVwLWhlYWRlcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXN0ZXAtb3B0aW9uYWxbX25nY29udGVudC0lQ09NUCVde2NvbG9yOiM2MTYxNjF9Lm1hdC1zdGVwLWhlYWRlcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXN0ZXAtaWNvbltfbmdjb250ZW50LSVDT01QJV17YmFja2dyb3VuZC1jb2xvcjojNjE2MTYxO2NvbG9yOiNmZmZ9Lm1hdC1zdGVwLWhlYWRlcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXN0ZXAtaWNvbi1zZWxlY3RlZFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtc3RlcC1oZWFkZXJbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1zdGVwLWljb24tc3RhdGUtZG9uZVtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtc3RlcC1oZWFkZXJbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1zdGVwLWljb24tc3RhdGUtZWRpdFtfbmdjb250ZW50LSVDT01QJV17YmFja2dyb3VuZC1jb2xvcjojZjU3YzAwO2NvbG9yOiNmZmZ9Lm1hdC1zdGVwLWhlYWRlcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXN0ZXAtaWNvbi1zdGF0ZS1lcnJvcltfbmdjb250ZW50LSVDT01QJV17YmFja2dyb3VuZC1jb2xvcjp0cmFuc3BhcmVudDtjb2xvcjojZjQ0MzM2fS5tYXQtc3RlcC1oZWFkZXJbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1zdGVwLWxhYmVsLm1hdC1zdGVwLWxhYmVsLWFjdGl2ZVtfbmdjb250ZW50LSVDT01QJV17Y29sb3I6IzIxMjEyMX0ubWF0LXN0ZXAtaGVhZGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtc3RlcC1sYWJlbC5tYXQtc3RlcC1sYWJlbC1lcnJvcltfbmdjb250ZW50LSVDT01QJV17Y29sb3I6I2Y0NDMzNn0ubWF0LXN0ZXBwZXItaG9yaXpvbnRhbFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtc3RlcHBlci12ZXJ0aWNhbFtfbmdjb250ZW50LSVDT01QJV17YmFja2dyb3VuZC1jb2xvcjojZmZmfS5tYXQtc3RlcHBlci12ZXJ0aWNhbC1saW5lW19uZ2NvbnRlbnQtJUNPTVAlXTo6YmVmb3Jle2JvcmRlci1sZWZ0LWNvbG9yOnJnYmEoMCwwLDAsLjEyKX0ubWF0LWhvcml6b250YWwtc3RlcHBlci1oZWFkZXJbX25nY29udGVudC0lQ09NUCVdOjpiZWZvcmUsIC5tYXQtaG9yaXpvbnRhbC1zdGVwcGVyLWhlYWRlcltfbmdjb250ZW50LSVDT01QJV06OmFmdGVyLCAubWF0LXN0ZXBwZXItaG9yaXpvbnRhbC1saW5lW19uZ2NvbnRlbnQtJUNPTVAlXXtib3JkZXItdG9wLWNvbG9yOnJnYmEoMCwwLDAsLjEyKX0ubWF0LWhvcml6b250YWwtc3RlcHBlci1oZWFkZXJbX25nY29udGVudC0lQ09NUCVde2hlaWdodDo3MnB4fS5tYXQtc3RlcHBlci1sYWJlbC1wb3NpdGlvbi1ib3R0b21bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1ob3Jpem9udGFsLXN0ZXBwZXItaGVhZGVyW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC12ZXJ0aWNhbC1zdGVwcGVyLWhlYWRlcltfbmdjb250ZW50LSVDT01QJV17cGFkZGluZzoyNHB4IDI0cHh9Lm1hdC1zdGVwcGVyLXZlcnRpY2FsLWxpbmVbX25nY29udGVudC0lQ09NUCVdOjpiZWZvcmV7dG9wOi0xNnB4O2JvdHRvbTotMTZweH0ubWF0LXN0ZXBwZXItbGFiZWwtcG9zaXRpb24tYm90dG9tW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaG9yaXpvbnRhbC1zdGVwcGVyLWhlYWRlcltfbmdjb250ZW50LSVDT01QJV06OmFmdGVyLCAubWF0LXN0ZXBwZXItbGFiZWwtcG9zaXRpb24tYm90dG9tW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaG9yaXpvbnRhbC1zdGVwcGVyLWhlYWRlcltfbmdjb250ZW50LSVDT01QJV06OmJlZm9yZXt0b3A6MzZweH0ubWF0LXN0ZXBwZXItbGFiZWwtcG9zaXRpb24tYm90dG9tW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtc3RlcHBlci1ob3Jpem9udGFsLWxpbmVbX25nY29udGVudC0lQ09NUCVde3RvcDozNnB4fS5tYXQtc29ydC1oZWFkZXItYXJyb3dbX25nY29udGVudC0lQ09NUCVde2NvbG9yOiM2MTYxNjF9Lm1hdC10YWItbmF2LWJhcltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdGFiLWhlYWRlcltfbmdjb250ZW50LSVDT01QJV17Ym9yZGVyLWJvdHRvbToxcHggc29saWQgcmdiYSgwLDAsMCwuMTIpfS5tYXQtdGFiLWdyb3VwLWludmVydGVkLWhlYWRlcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXRhYi1uYXYtYmFyW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10YWItZ3JvdXAtaW52ZXJ0ZWQtaGVhZGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtdGFiLWhlYWRlcltfbmdjb250ZW50LSVDT01QJV17Ym9yZGVyLXRvcDoxcHggc29saWQgcmdiYSgwLDAsMCwuMTIpO2JvcmRlci1ib3R0b206bm9uZX0ubWF0LXRhYi1sYWJlbFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdGFiLWxpbmtbX25nY29udGVudC0lQ09NUCVde2NvbG9yOiMyMTIxMjF9Lm1hdC10YWItbGFiZWwubWF0LXRhYi1kaXNhYmxlZFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdGFiLWxpbmsubWF0LXRhYi1kaXNhYmxlZFtfbmdjb250ZW50LSVDT01QJV17Y29sb3I6Izc1NzU3NX0ubWF0LXRhYi1oZWFkZXItcGFnaW5hdGlvbi1jaGV2cm9uW19uZ2NvbnRlbnQtJUNPTVAlXXtib3JkZXItY29sb3I6IzIxMjEyMX0ubWF0LXRhYi1oZWFkZXItcGFnaW5hdGlvbi1kaXNhYmxlZFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXRhYi1oZWFkZXItcGFnaW5hdGlvbi1jaGV2cm9uW19uZ2NvbnRlbnQtJUNPTVAlXXtib3JkZXItY29sb3I6Izc1NzU3NX0ubWF0LXRhYi1ncm91cFtjbGFzcyo9bWF0LWJhY2tncm91bmQtXVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXRhYi1oZWFkZXJbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXRhYi1uYXYtYmFyW2NsYXNzKj1tYXQtYmFja2dyb3VuZC1dW19uZ2NvbnRlbnQtJUNPTVAlXXtib3JkZXItYm90dG9tOm5vbmU7Ym9yZGVyLXRvcDpub25lfS5tYXQtdGFiLWdyb3VwLm1hdC1wcmltYXJ5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtdGFiLWxhYmVsLmNkay1rZXlib2FyZC1mb2N1c2VkW19uZ2NvbnRlbnQtJUNPTVAlXTpub3QoLm1hdC10YWItZGlzYWJsZWQpLCAubWF0LXRhYi1ncm91cC5tYXQtcHJpbWFyeVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXRhYi1sYWJlbC5jZGstcHJvZ3JhbS1mb2N1c2VkW19uZ2NvbnRlbnQtJUNPTVAlXTpub3QoLm1hdC10YWItZGlzYWJsZWQpLCAubWF0LXRhYi1ncm91cC5tYXQtcHJpbWFyeVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXRhYi1saW5rLmNkay1rZXlib2FyZC1mb2N1c2VkW19uZ2NvbnRlbnQtJUNPTVAlXTpub3QoLm1hdC10YWItZGlzYWJsZWQpLCAubWF0LXRhYi1ncm91cC5tYXQtcHJpbWFyeVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXRhYi1saW5rLmNkay1wcm9ncmFtLWZvY3VzZWRbX25nY29udGVudC0lQ09NUCVdOm5vdCgubWF0LXRhYi1kaXNhYmxlZCksIC5tYXQtdGFiLW5hdi1iYXIubWF0LXByaW1hcnlbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC10YWItbGFiZWwuY2RrLWtleWJvYXJkLWZvY3VzZWRbX25nY29udGVudC0lQ09NUCVdOm5vdCgubWF0LXRhYi1kaXNhYmxlZCksIC5tYXQtdGFiLW5hdi1iYXIubWF0LXByaW1hcnlbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC10YWItbGFiZWwuY2RrLXByb2dyYW0tZm9jdXNlZFtfbmdjb250ZW50LSVDT01QJV06bm90KC5tYXQtdGFiLWRpc2FibGVkKSwgLm1hdC10YWItbmF2LWJhci5tYXQtcHJpbWFyeVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXRhYi1saW5rLmNkay1rZXlib2FyZC1mb2N1c2VkW19uZ2NvbnRlbnQtJUNPTVAlXTpub3QoLm1hdC10YWItZGlzYWJsZWQpLCAubWF0LXRhYi1uYXYtYmFyLm1hdC1wcmltYXJ5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtdGFiLWxpbmsuY2RrLXByb2dyYW0tZm9jdXNlZFtfbmdjb250ZW50LSVDT01QJV06bm90KC5tYXQtdGFiLWRpc2FibGVkKXtiYWNrZ3JvdW5kLWNvbG9yOnJnYmEoMjU1LDE1MiwwLC4zKX0ubWF0LXRhYi1ncm91cC5tYXQtcHJpbWFyeVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWluay1iYXJbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXRhYi1uYXYtYmFyLm1hdC1wcmltYXJ5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaW5rLWJhcltfbmdjb250ZW50LSVDT01QJV17YmFja2dyb3VuZC1jb2xvcjojZjU3YzAwfS5tYXQtdGFiLWdyb3VwLm1hdC1wcmltYXJ5Lm1hdC1iYWNrZ3JvdW5kLXByaW1hcnlbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pbmstYmFyW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10YWItbmF2LWJhci5tYXQtcHJpbWFyeS5tYXQtYmFja2dyb3VuZC1wcmltYXJ5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaW5rLWJhcltfbmdjb250ZW50LSVDT01QJV17YmFja2dyb3VuZC1jb2xvcjojZmZmfS5tYXQtdGFiLWdyb3VwLm1hdC1hY2NlbnRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC10YWItbGFiZWwuY2RrLWtleWJvYXJkLWZvY3VzZWRbX25nY29udGVudC0lQ09NUCVdOm5vdCgubWF0LXRhYi1kaXNhYmxlZCksIC5tYXQtdGFiLWdyb3VwLm1hdC1hY2NlbnRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC10YWItbGFiZWwuY2RrLXByb2dyYW0tZm9jdXNlZFtfbmdjb250ZW50LSVDT01QJV06bm90KC5tYXQtdGFiLWRpc2FibGVkKSwgLm1hdC10YWItZ3JvdXAubWF0LWFjY2VudFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXRhYi1saW5rLmNkay1rZXlib2FyZC1mb2N1c2VkW19uZ2NvbnRlbnQtJUNPTVAlXTpub3QoLm1hdC10YWItZGlzYWJsZWQpLCAubWF0LXRhYi1ncm91cC5tYXQtYWNjZW50W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtdGFiLWxpbmsuY2RrLXByb2dyYW0tZm9jdXNlZFtfbmdjb250ZW50LSVDT01QJV06bm90KC5tYXQtdGFiLWRpc2FibGVkKSwgLm1hdC10YWItbmF2LWJhci5tYXQtYWNjZW50W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtdGFiLWxhYmVsLmNkay1rZXlib2FyZC1mb2N1c2VkW19uZ2NvbnRlbnQtJUNPTVAlXTpub3QoLm1hdC10YWItZGlzYWJsZWQpLCAubWF0LXRhYi1uYXYtYmFyLm1hdC1hY2NlbnRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC10YWItbGFiZWwuY2RrLXByb2dyYW0tZm9jdXNlZFtfbmdjb250ZW50LSVDT01QJV06bm90KC5tYXQtdGFiLWRpc2FibGVkKSwgLm1hdC10YWItbmF2LWJhci5tYXQtYWNjZW50W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtdGFiLWxpbmsuY2RrLWtleWJvYXJkLWZvY3VzZWRbX25nY29udGVudC0lQ09NUCVdOm5vdCgubWF0LXRhYi1kaXNhYmxlZCksIC5tYXQtdGFiLW5hdi1iYXIubWF0LWFjY2VudFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXRhYi1saW5rLmNkay1wcm9ncmFtLWZvY3VzZWRbX25nY29udGVudC0lQ09NUCVdOm5vdCgubWF0LXRhYi1kaXNhYmxlZCl7YmFja2dyb3VuZC1jb2xvcjpyZ2JhKDI1NSwxNTIsMCwuMyl9Lm1hdC10YWItZ3JvdXAubWF0LWFjY2VudFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWluay1iYXJbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXRhYi1uYXYtYmFyLm1hdC1hY2NlbnRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pbmstYmFyW19uZ2NvbnRlbnQtJUNPTVAlXXtiYWNrZ3JvdW5kLWNvbG9yOiNmZjk4MDB9Lm1hdC10YWItZ3JvdXAubWF0LWFjY2VudC5tYXQtYmFja2dyb3VuZC1hY2NlbnRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pbmstYmFyW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10YWItbmF2LWJhci5tYXQtYWNjZW50Lm1hdC1iYWNrZ3JvdW5kLWFjY2VudFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWluay1iYXJbX25nY29udGVudC0lQ09NUCVde2JhY2tncm91bmQtY29sb3I6I2ZmZn0ubWF0LXRhYi1ncm91cC5tYXQtd2Fybltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXRhYi1sYWJlbC5jZGsta2V5Ym9hcmQtZm9jdXNlZFtfbmdjb250ZW50LSVDT01QJV06bm90KC5tYXQtdGFiLWRpc2FibGVkKSwgLm1hdC10YWItZ3JvdXAubWF0LXdhcm5bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC10YWItbGFiZWwuY2RrLXByb2dyYW0tZm9jdXNlZFtfbmdjb250ZW50LSVDT01QJV06bm90KC5tYXQtdGFiLWRpc2FibGVkKSwgLm1hdC10YWItZ3JvdXAubWF0LXdhcm5bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC10YWItbGluay5jZGsta2V5Ym9hcmQtZm9jdXNlZFtfbmdjb250ZW50LSVDT01QJV06bm90KC5tYXQtdGFiLWRpc2FibGVkKSwgLm1hdC10YWItZ3JvdXAubWF0LXdhcm5bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC10YWItbGluay5jZGstcHJvZ3JhbS1mb2N1c2VkW19uZ2NvbnRlbnQtJUNPTVAlXTpub3QoLm1hdC10YWItZGlzYWJsZWQpLCAubWF0LXRhYi1uYXYtYmFyLm1hdC13YXJuW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtdGFiLWxhYmVsLmNkay1rZXlib2FyZC1mb2N1c2VkW19uZ2NvbnRlbnQtJUNPTVAlXTpub3QoLm1hdC10YWItZGlzYWJsZWQpLCAubWF0LXRhYi1uYXYtYmFyLm1hdC13YXJuW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtdGFiLWxhYmVsLmNkay1wcm9ncmFtLWZvY3VzZWRbX25nY29udGVudC0lQ09NUCVdOm5vdCgubWF0LXRhYi1kaXNhYmxlZCksIC5tYXQtdGFiLW5hdi1iYXIubWF0LXdhcm5bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC10YWItbGluay5jZGsta2V5Ym9hcmQtZm9jdXNlZFtfbmdjb250ZW50LSVDT01QJV06bm90KC5tYXQtdGFiLWRpc2FibGVkKSwgLm1hdC10YWItbmF2LWJhci5tYXQtd2Fybltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXRhYi1saW5rLmNkay1wcm9ncmFtLWZvY3VzZWRbX25nY29udGVudC0lQ09NUCVdOm5vdCgubWF0LXRhYi1kaXNhYmxlZCl7YmFja2dyb3VuZC1jb2xvcjpyZ2JhKDI1NSwyMDUsMjEwLC4zKX0ubWF0LXRhYi1ncm91cC5tYXQtd2Fybltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWluay1iYXJbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXRhYi1uYXYtYmFyLm1hdC13YXJuW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaW5rLWJhcltfbmdjb250ZW50LSVDT01QJV17YmFja2dyb3VuZC1jb2xvcjojZjQ0MzM2fS5tYXQtdGFiLWdyb3VwLm1hdC13YXJuLm1hdC1iYWNrZ3JvdW5kLXdhcm5bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pbmstYmFyW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10YWItbmF2LWJhci5tYXQtd2Fybi5tYXQtYmFja2dyb3VuZC13YXJuW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaW5rLWJhcltfbmdjb250ZW50LSVDT01QJV17YmFja2dyb3VuZC1jb2xvcjojZmZmfS5tYXQtdGFiLWdyb3VwLm1hdC1iYWNrZ3JvdW5kLXByaW1hcnlbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC10YWItbGFiZWwuY2RrLWtleWJvYXJkLWZvY3VzZWRbX25nY29udGVudC0lQ09NUCVdOm5vdCgubWF0LXRhYi1kaXNhYmxlZCksIC5tYXQtdGFiLWdyb3VwLm1hdC1iYWNrZ3JvdW5kLXByaW1hcnlbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC10YWItbGFiZWwuY2RrLXByb2dyYW0tZm9jdXNlZFtfbmdjb250ZW50LSVDT01QJV06bm90KC5tYXQtdGFiLWRpc2FibGVkKSwgLm1hdC10YWItZ3JvdXAubWF0LWJhY2tncm91bmQtcHJpbWFyeVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXRhYi1saW5rLmNkay1rZXlib2FyZC1mb2N1c2VkW19uZ2NvbnRlbnQtJUNPTVAlXTpub3QoLm1hdC10YWItZGlzYWJsZWQpLCAubWF0LXRhYi1ncm91cC5tYXQtYmFja2dyb3VuZC1wcmltYXJ5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtdGFiLWxpbmsuY2RrLXByb2dyYW0tZm9jdXNlZFtfbmdjb250ZW50LSVDT01QJV06bm90KC5tYXQtdGFiLWRpc2FibGVkKSwgLm1hdC10YWItbmF2LWJhci5tYXQtYmFja2dyb3VuZC1wcmltYXJ5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtdGFiLWxhYmVsLmNkay1rZXlib2FyZC1mb2N1c2VkW19uZ2NvbnRlbnQtJUNPTVAlXTpub3QoLm1hdC10YWItZGlzYWJsZWQpLCAubWF0LXRhYi1uYXYtYmFyLm1hdC1iYWNrZ3JvdW5kLXByaW1hcnlbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC10YWItbGFiZWwuY2RrLXByb2dyYW0tZm9jdXNlZFtfbmdjb250ZW50LSVDT01QJV06bm90KC5tYXQtdGFiLWRpc2FibGVkKSwgLm1hdC10YWItbmF2LWJhci5tYXQtYmFja2dyb3VuZC1wcmltYXJ5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtdGFiLWxpbmsuY2RrLWtleWJvYXJkLWZvY3VzZWRbX25nY29udGVudC0lQ09NUCVdOm5vdCgubWF0LXRhYi1kaXNhYmxlZCksIC5tYXQtdGFiLW5hdi1iYXIubWF0LWJhY2tncm91bmQtcHJpbWFyeVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXRhYi1saW5rLmNkay1wcm9ncmFtLWZvY3VzZWRbX25nY29udGVudC0lQ09NUCVdOm5vdCgubWF0LXRhYi1kaXNhYmxlZCl7YmFja2dyb3VuZC1jb2xvcjpyZ2JhKDI1NSwxNTIsMCwuMyl9Lm1hdC10YWItZ3JvdXAubWF0LWJhY2tncm91bmQtcHJpbWFyeVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXRhYi1oZWFkZXJbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXRhYi1ncm91cC5tYXQtYmFja2dyb3VuZC1wcmltYXJ5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtdGFiLWxpbmtzW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10YWItZ3JvdXAubWF0LWJhY2tncm91bmQtcHJpbWFyeVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXRhYi1oZWFkZXItcGFnaW5hdGlvbltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdGFiLW5hdi1iYXIubWF0LWJhY2tncm91bmQtcHJpbWFyeVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXRhYi1oZWFkZXJbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXRhYi1uYXYtYmFyLm1hdC1iYWNrZ3JvdW5kLXByaW1hcnlbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC10YWItbGlua3NbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXRhYi1uYXYtYmFyLm1hdC1iYWNrZ3JvdW5kLXByaW1hcnlbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC10YWItaGVhZGVyLXBhZ2luYXRpb25bX25nY29udGVudC0lQ09NUCVde2JhY2tncm91bmQtY29sb3I6I2Y1N2MwMH0ubWF0LXRhYi1ncm91cC5tYXQtYmFja2dyb3VuZC1wcmltYXJ5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtdGFiLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10YWItZ3JvdXAubWF0LWJhY2tncm91bmQtcHJpbWFyeVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXRhYi1saW5rW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10YWItbmF2LWJhci5tYXQtYmFja2dyb3VuZC1wcmltYXJ5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtdGFiLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10YWItbmF2LWJhci5tYXQtYmFja2dyb3VuZC1wcmltYXJ5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtdGFiLWxpbmtbX25nY29udGVudC0lQ09NUCVde2NvbG9yOiNmZmZ9Lm1hdC10YWItZ3JvdXAubWF0LWJhY2tncm91bmQtcHJpbWFyeVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXRhYi1sYWJlbC5tYXQtdGFiLWRpc2FibGVkW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10YWItZ3JvdXAubWF0LWJhY2tncm91bmQtcHJpbWFyeVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXRhYi1saW5rLm1hdC10YWItZGlzYWJsZWRbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXRhYi1uYXYtYmFyLm1hdC1iYWNrZ3JvdW5kLXByaW1hcnlbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC10YWItbGFiZWwubWF0LXRhYi1kaXNhYmxlZFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdGFiLW5hdi1iYXIubWF0LWJhY2tncm91bmQtcHJpbWFyeVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXRhYi1saW5rLm1hdC10YWItZGlzYWJsZWRbX25nY29udGVudC0lQ09NUCVde2NvbG9yOnJnYmEoMjU1LDI1NSwyNTUsLjQpfS5tYXQtdGFiLWdyb3VwLm1hdC1iYWNrZ3JvdW5kLXByaW1hcnlbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC10YWItaGVhZGVyLXBhZ2luYXRpb24tY2hldnJvbltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdGFiLW5hdi1iYXIubWF0LWJhY2tncm91bmQtcHJpbWFyeVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXRhYi1oZWFkZXItcGFnaW5hdGlvbi1jaGV2cm9uW19uZ2NvbnRlbnQtJUNPTVAlXXtib3JkZXItY29sb3I6I2ZmZn0ubWF0LXRhYi1ncm91cC5tYXQtYmFja2dyb3VuZC1wcmltYXJ5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtdGFiLWhlYWRlci1wYWdpbmF0aW9uLWRpc2FibGVkW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtdGFiLWhlYWRlci1wYWdpbmF0aW9uLWNoZXZyb25bX25nY29udGVudC0lQ09NUCVdLCAubWF0LXRhYi1uYXYtYmFyLm1hdC1iYWNrZ3JvdW5kLXByaW1hcnlbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC10YWItaGVhZGVyLXBhZ2luYXRpb24tZGlzYWJsZWRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC10YWItaGVhZGVyLXBhZ2luYXRpb24tY2hldnJvbltfbmdjb250ZW50LSVDT01QJV17Ym9yZGVyLWNvbG9yOnJnYmEoMjU1LDI1NSwyNTUsLjQpfS5tYXQtdGFiLWdyb3VwLm1hdC1iYWNrZ3JvdW5kLXByaW1hcnlbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1yaXBwbGUtZWxlbWVudFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdGFiLW5hdi1iYXIubWF0LWJhY2tncm91bmQtcHJpbWFyeVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXJpcHBsZS1lbGVtZW50W19uZ2NvbnRlbnQtJUNPTVAlXXtiYWNrZ3JvdW5kLWNvbG9yOnJnYmEoMjU1LDI1NSwyNTUsLjEyKX0ubWF0LXRhYi1ncm91cC5tYXQtYmFja2dyb3VuZC1hY2NlbnRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC10YWItbGFiZWwuY2RrLWtleWJvYXJkLWZvY3VzZWRbX25nY29udGVudC0lQ09NUCVdOm5vdCgubWF0LXRhYi1kaXNhYmxlZCksIC5tYXQtdGFiLWdyb3VwLm1hdC1iYWNrZ3JvdW5kLWFjY2VudFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXRhYi1sYWJlbC5jZGstcHJvZ3JhbS1mb2N1c2VkW19uZ2NvbnRlbnQtJUNPTVAlXTpub3QoLm1hdC10YWItZGlzYWJsZWQpLCAubWF0LXRhYi1ncm91cC5tYXQtYmFja2dyb3VuZC1hY2NlbnRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC10YWItbGluay5jZGsta2V5Ym9hcmQtZm9jdXNlZFtfbmdjb250ZW50LSVDT01QJV06bm90KC5tYXQtdGFiLWRpc2FibGVkKSwgLm1hdC10YWItZ3JvdXAubWF0LWJhY2tncm91bmQtYWNjZW50W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtdGFiLWxpbmsuY2RrLXByb2dyYW0tZm9jdXNlZFtfbmdjb250ZW50LSVDT01QJV06bm90KC5tYXQtdGFiLWRpc2FibGVkKSwgLm1hdC10YWItbmF2LWJhci5tYXQtYmFja2dyb3VuZC1hY2NlbnRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC10YWItbGFiZWwuY2RrLWtleWJvYXJkLWZvY3VzZWRbX25nY29udGVudC0lQ09NUCVdOm5vdCgubWF0LXRhYi1kaXNhYmxlZCksIC5tYXQtdGFiLW5hdi1iYXIubWF0LWJhY2tncm91bmQtYWNjZW50W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtdGFiLWxhYmVsLmNkay1wcm9ncmFtLWZvY3VzZWRbX25nY29udGVudC0lQ09NUCVdOm5vdCgubWF0LXRhYi1kaXNhYmxlZCksIC5tYXQtdGFiLW5hdi1iYXIubWF0LWJhY2tncm91bmQtYWNjZW50W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtdGFiLWxpbmsuY2RrLWtleWJvYXJkLWZvY3VzZWRbX25nY29udGVudC0lQ09NUCVdOm5vdCgubWF0LXRhYi1kaXNhYmxlZCksIC5tYXQtdGFiLW5hdi1iYXIubWF0LWJhY2tncm91bmQtYWNjZW50W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtdGFiLWxpbmsuY2RrLXByb2dyYW0tZm9jdXNlZFtfbmdjb250ZW50LSVDT01QJV06bm90KC5tYXQtdGFiLWRpc2FibGVkKXtiYWNrZ3JvdW5kLWNvbG9yOnJnYmEoMjU1LDE1MiwwLC4zKX0ubWF0LXRhYi1ncm91cC5tYXQtYmFja2dyb3VuZC1hY2NlbnRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC10YWItaGVhZGVyW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10YWItZ3JvdXAubWF0LWJhY2tncm91bmQtYWNjZW50W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtdGFiLWxpbmtzW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10YWItZ3JvdXAubWF0LWJhY2tncm91bmQtYWNjZW50W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtdGFiLWhlYWRlci1wYWdpbmF0aW9uW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10YWItbmF2LWJhci5tYXQtYmFja2dyb3VuZC1hY2NlbnRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC10YWItaGVhZGVyW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10YWItbmF2LWJhci5tYXQtYmFja2dyb3VuZC1hY2NlbnRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC10YWItbGlua3NbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXRhYi1uYXYtYmFyLm1hdC1iYWNrZ3JvdW5kLWFjY2VudFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXRhYi1oZWFkZXItcGFnaW5hdGlvbltfbmdjb250ZW50LSVDT01QJV17YmFja2dyb3VuZC1jb2xvcjojZmY5ODAwfS5tYXQtdGFiLWdyb3VwLm1hdC1iYWNrZ3JvdW5kLWFjY2VudFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXRhYi1sYWJlbFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdGFiLWdyb3VwLm1hdC1iYWNrZ3JvdW5kLWFjY2VudFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXRhYi1saW5rW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10YWItbmF2LWJhci5tYXQtYmFja2dyb3VuZC1hY2NlbnRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC10YWItbGFiZWxbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXRhYi1uYXYtYmFyLm1hdC1iYWNrZ3JvdW5kLWFjY2VudFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXRhYi1saW5rW19uZ2NvbnRlbnQtJUNPTVAlXXtjb2xvcjojZmZmfS5tYXQtdGFiLWdyb3VwLm1hdC1iYWNrZ3JvdW5kLWFjY2VudFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXRhYi1sYWJlbC5tYXQtdGFiLWRpc2FibGVkW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10YWItZ3JvdXAubWF0LWJhY2tncm91bmQtYWNjZW50W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtdGFiLWxpbmsubWF0LXRhYi1kaXNhYmxlZFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdGFiLW5hdi1iYXIubWF0LWJhY2tncm91bmQtYWNjZW50W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtdGFiLWxhYmVsLm1hdC10YWItZGlzYWJsZWRbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXRhYi1uYXYtYmFyLm1hdC1iYWNrZ3JvdW5kLWFjY2VudFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXRhYi1saW5rLm1hdC10YWItZGlzYWJsZWRbX25nY29udGVudC0lQ09NUCVde2NvbG9yOnJnYmEoMjU1LDI1NSwyNTUsLjQpfS5tYXQtdGFiLWdyb3VwLm1hdC1iYWNrZ3JvdW5kLWFjY2VudFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXRhYi1oZWFkZXItcGFnaW5hdGlvbi1jaGV2cm9uW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10YWItbmF2LWJhci5tYXQtYmFja2dyb3VuZC1hY2NlbnRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC10YWItaGVhZGVyLXBhZ2luYXRpb24tY2hldnJvbltfbmdjb250ZW50LSVDT01QJV17Ym9yZGVyLWNvbG9yOiNmZmZ9Lm1hdC10YWItZ3JvdXAubWF0LWJhY2tncm91bmQtYWNjZW50W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtdGFiLWhlYWRlci1wYWdpbmF0aW9uLWRpc2FibGVkW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtdGFiLWhlYWRlci1wYWdpbmF0aW9uLWNoZXZyb25bX25nY29udGVudC0lQ09NUCVdLCAubWF0LXRhYi1uYXYtYmFyLm1hdC1iYWNrZ3JvdW5kLWFjY2VudFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXRhYi1oZWFkZXItcGFnaW5hdGlvbi1kaXNhYmxlZFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXRhYi1oZWFkZXItcGFnaW5hdGlvbi1jaGV2cm9uW19uZ2NvbnRlbnQtJUNPTVAlXXtib3JkZXItY29sb3I6cmdiYSgyNTUsMjU1LDI1NSwuNCl9Lm1hdC10YWItZ3JvdXAubWF0LWJhY2tncm91bmQtYWNjZW50W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtcmlwcGxlLWVsZW1lbnRbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXRhYi1uYXYtYmFyLm1hdC1iYWNrZ3JvdW5kLWFjY2VudFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXJpcHBsZS1lbGVtZW50W19uZ2NvbnRlbnQtJUNPTVAlXXtiYWNrZ3JvdW5kLWNvbG9yOnJnYmEoMjU1LDI1NSwyNTUsLjEyKX0ubWF0LXRhYi1ncm91cC5tYXQtYmFja2dyb3VuZC13YXJuW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtdGFiLWxhYmVsLmNkay1rZXlib2FyZC1mb2N1c2VkW19uZ2NvbnRlbnQtJUNPTVAlXTpub3QoLm1hdC10YWItZGlzYWJsZWQpLCAubWF0LXRhYi1ncm91cC5tYXQtYmFja2dyb3VuZC13YXJuW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtdGFiLWxhYmVsLmNkay1wcm9ncmFtLWZvY3VzZWRbX25nY29udGVudC0lQ09NUCVdOm5vdCgubWF0LXRhYi1kaXNhYmxlZCksIC5tYXQtdGFiLWdyb3VwLm1hdC1iYWNrZ3JvdW5kLXdhcm5bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC10YWItbGluay5jZGsta2V5Ym9hcmQtZm9jdXNlZFtfbmdjb250ZW50LSVDT01QJV06bm90KC5tYXQtdGFiLWRpc2FibGVkKSwgLm1hdC10YWItZ3JvdXAubWF0LWJhY2tncm91bmQtd2Fybltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXRhYi1saW5rLmNkay1wcm9ncmFtLWZvY3VzZWRbX25nY29udGVudC0lQ09NUCVdOm5vdCgubWF0LXRhYi1kaXNhYmxlZCksIC5tYXQtdGFiLW5hdi1iYXIubWF0LWJhY2tncm91bmQtd2Fybltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXRhYi1sYWJlbC5jZGsta2V5Ym9hcmQtZm9jdXNlZFtfbmdjb250ZW50LSVDT01QJV06bm90KC5tYXQtdGFiLWRpc2FibGVkKSwgLm1hdC10YWItbmF2LWJhci5tYXQtYmFja2dyb3VuZC13YXJuW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtdGFiLWxhYmVsLmNkay1wcm9ncmFtLWZvY3VzZWRbX25nY29udGVudC0lQ09NUCVdOm5vdCgubWF0LXRhYi1kaXNhYmxlZCksIC5tYXQtdGFiLW5hdi1iYXIubWF0LWJhY2tncm91bmQtd2Fybltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXRhYi1saW5rLmNkay1rZXlib2FyZC1mb2N1c2VkW19uZ2NvbnRlbnQtJUNPTVAlXTpub3QoLm1hdC10YWItZGlzYWJsZWQpLCAubWF0LXRhYi1uYXYtYmFyLm1hdC1iYWNrZ3JvdW5kLXdhcm5bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC10YWItbGluay5jZGstcHJvZ3JhbS1mb2N1c2VkW19uZ2NvbnRlbnQtJUNPTVAlXTpub3QoLm1hdC10YWItZGlzYWJsZWQpe2JhY2tncm91bmQtY29sb3I6cmdiYSgyNTUsMjA1LDIxMCwuMyl9Lm1hdC10YWItZ3JvdXAubWF0LWJhY2tncm91bmQtd2Fybltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXRhYi1oZWFkZXJbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXRhYi1ncm91cC5tYXQtYmFja2dyb3VuZC13YXJuW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtdGFiLWxpbmtzW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10YWItZ3JvdXAubWF0LWJhY2tncm91bmQtd2Fybltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXRhYi1oZWFkZXItcGFnaW5hdGlvbltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdGFiLW5hdi1iYXIubWF0LWJhY2tncm91bmQtd2Fybltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXRhYi1oZWFkZXJbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXRhYi1uYXYtYmFyLm1hdC1iYWNrZ3JvdW5kLXdhcm5bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC10YWItbGlua3NbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXRhYi1uYXYtYmFyLm1hdC1iYWNrZ3JvdW5kLXdhcm5bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC10YWItaGVhZGVyLXBhZ2luYXRpb25bX25nY29udGVudC0lQ09NUCVde2JhY2tncm91bmQtY29sb3I6I2Y0NDMzNn0ubWF0LXRhYi1ncm91cC5tYXQtYmFja2dyb3VuZC13YXJuW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtdGFiLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10YWItZ3JvdXAubWF0LWJhY2tncm91bmQtd2Fybltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXRhYi1saW5rW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10YWItbmF2LWJhci5tYXQtYmFja2dyb3VuZC13YXJuW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtdGFiLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10YWItbmF2LWJhci5tYXQtYmFja2dyb3VuZC13YXJuW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtdGFiLWxpbmtbX25nY29udGVudC0lQ09NUCVde2NvbG9yOiNmZmZ9Lm1hdC10YWItZ3JvdXAubWF0LWJhY2tncm91bmQtd2Fybltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXRhYi1sYWJlbC5tYXQtdGFiLWRpc2FibGVkW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10YWItZ3JvdXAubWF0LWJhY2tncm91bmQtd2Fybltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXRhYi1saW5rLm1hdC10YWItZGlzYWJsZWRbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXRhYi1uYXYtYmFyLm1hdC1iYWNrZ3JvdW5kLXdhcm5bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC10YWItbGFiZWwubWF0LXRhYi1kaXNhYmxlZFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdGFiLW5hdi1iYXIubWF0LWJhY2tncm91bmQtd2Fybltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXRhYi1saW5rLm1hdC10YWItZGlzYWJsZWRbX25nY29udGVudC0lQ09NUCVde2NvbG9yOnJnYmEoMjU1LDI1NSwyNTUsLjQpfS5tYXQtdGFiLWdyb3VwLm1hdC1iYWNrZ3JvdW5kLXdhcm5bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC10YWItaGVhZGVyLXBhZ2luYXRpb24tY2hldnJvbltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdGFiLW5hdi1iYXIubWF0LWJhY2tncm91bmQtd2Fybltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXRhYi1oZWFkZXItcGFnaW5hdGlvbi1jaGV2cm9uW19uZ2NvbnRlbnQtJUNPTVAlXXtib3JkZXItY29sb3I6I2ZmZn0ubWF0LXRhYi1ncm91cC5tYXQtYmFja2dyb3VuZC13YXJuW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtdGFiLWhlYWRlci1wYWdpbmF0aW9uLWRpc2FibGVkW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtdGFiLWhlYWRlci1wYWdpbmF0aW9uLWNoZXZyb25bX25nY29udGVudC0lQ09NUCVdLCAubWF0LXRhYi1uYXYtYmFyLm1hdC1iYWNrZ3JvdW5kLXdhcm5bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC10YWItaGVhZGVyLXBhZ2luYXRpb24tZGlzYWJsZWRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC10YWItaGVhZGVyLXBhZ2luYXRpb24tY2hldnJvbltfbmdjb250ZW50LSVDT01QJV17Ym9yZGVyLWNvbG9yOnJnYmEoMjU1LDI1NSwyNTUsLjQpfS5tYXQtdGFiLWdyb3VwLm1hdC1iYWNrZ3JvdW5kLXdhcm5bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1yaXBwbGUtZWxlbWVudFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdGFiLW5hdi1iYXIubWF0LWJhY2tncm91bmQtd2Fybltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXJpcHBsZS1lbGVtZW50W19uZ2NvbnRlbnQtJUNPTVAlXXtiYWNrZ3JvdW5kLWNvbG9yOnJnYmEoMjU1LDI1NSwyNTUsLjEyKX0ubWF0LXRvb2xiYXJbX25nY29udGVudC0lQ09NUCVde2JhY2tncm91bmQ6I2Y1ZjVmNTtjb2xvcjojMjEyMTIxfS5tYXQtdG9vbGJhci5tYXQtcHJpbWFyeVtfbmdjb250ZW50LSVDT01QJV17YmFja2dyb3VuZDojZjU3YzAwO2NvbG9yOiNmZmZ9Lm1hdC10b29sYmFyLm1hdC1hY2NlbnRbX25nY29udGVudC0lQ09NUCVde2JhY2tncm91bmQ6I2ZmOTgwMDtjb2xvcjojZmZmfS5tYXQtdG9vbGJhci5tYXQtd2Fybltfbmdjb250ZW50LSVDT01QJV17YmFja2dyb3VuZDojZjQ0MzM2O2NvbG9yOiNmZmZ9Lm1hdC10b29sYmFyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC11bmRlcmxpbmVbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXRvb2xiYXJbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLXJpcHBsZVtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdG9vbGJhcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvY3VzZWRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLXJpcHBsZVtfbmdjb250ZW50LSVDT01QJV17YmFja2dyb3VuZC1jb2xvcjpjdXJyZW50Q29sb3J9Lm1hdC10b29sYmFyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdG9vbGJhcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvY3VzZWRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10b29sYmFyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtc2VsZWN0LXZhbHVlW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10b29sYmFyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtc2VsZWN0LWFycm93W19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10b29sYmFyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC5tYXQtZm9jdXNlZFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXNlbGVjdC1hcnJvd1tfbmdjb250ZW50LSVDT01QJV17Y29sb3I6aW5oZXJpdH0ubWF0LXRvb2xiYXJbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pbnB1dC1lbGVtZW50W19uZ2NvbnRlbnQtJUNPTVAlXXtjYXJldC1jb2xvcjpjdXJyZW50Q29sb3J9Lm1hdC10b29sYmFyLW11bHRpcGxlLXJvd3NbX25nY29udGVudC0lQ09NUCVde21pbi1oZWlnaHQ6NjRweH0ubWF0LXRvb2xiYXItcm93W19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10b29sYmFyLXNpbmdsZS1yb3dbX25nY29udGVudC0lQ09NUCVde2hlaWdodDo2NHB4fUBtZWRpYShtYXgtd2lkdGg6IDU5OXB4KXsubWF0LXRvb2xiYXItbXVsdGlwbGUtcm93c1tfbmdjb250ZW50LSVDT01QJV17bWluLWhlaWdodDo1NnB4fS5tYXQtdG9vbGJhci1yb3dbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXRvb2xiYXItc2luZ2xlLXJvd1tfbmdjb250ZW50LSVDT01QJV17aGVpZ2h0OjU2cHh9fS5tYXQtdG9vbHRpcFtfbmdjb250ZW50LSVDT01QJV17YmFja2dyb3VuZDpyZ2JhKDk3LDk3LDk3LC45KX0ubWF0LXRyZWVbX25nY29udGVudC0lQ09NUCVde2JhY2tncm91bmQ6I2ZmZn0ubWF0LXRyZWUtbm9kZVtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtbmVzdGVkLXRyZWUtbm9kZVtfbmdjb250ZW50LSVDT01QJV17Y29sb3I6IzIxMjEyMX0ubWF0LXRyZWUtbm9kZVtfbmdjb250ZW50LSVDT01QJV17bWluLWhlaWdodDo0OHB4fS5tYXQtc25hY2stYmFyLWNvbnRhaW5lcltfbmdjb250ZW50LSVDT01QJV17Y29sb3I6cmdiYSgyNTUsMjU1LDI1NSwuNyk7YmFja2dyb3VuZDojMzIzMjMyO2JveC1zaGFkb3c6MHB4IDNweCA1cHggLTFweCByZ2JhKDAsIDAsIDAsIDAuMiksMHB4IDZweCAxMHB4IDBweCByZ2JhKDAsIDAsIDAsIDAuMTQpLDBweCAxcHggMThweCAwcHggcmdiYSgwLCAwLCAwLCAwLjEyKX0ubWF0LXNpbXBsZS1zbmFja2Jhci1hY3Rpb25bX25nY29udGVudC0lQ09NUCVde2NvbG9yOiNmZjk4MDB9LmFjdGl2ZS1idXR0b25bX25nY29udGVudC0lQ09NUCVde2JhY2tncm91bmQtY29sb3I6I2ZmOTgwMDtib3JkZXI6MXB4IHNvbGlkICNlYmViZWI7Y29sb3I6I2ZmZn0uYnV0dG9uLWNvbnRlbnRzW19uZ2NvbnRlbnQtJUNPTVAlXXthbGlnbi1pdGVtczpjZW50ZXI7ZGlzcGxheTpmbGV4O3RleHQtdHJhbnNmb3JtOnVwcGVyY2FzZX1tYXQtaWNvbltfbmdjb250ZW50LSVDT01QJV17bWFyZ2luLXJpZ2h0OjZweH0nXSxjaGFuZ2VEZXRlY3Rpb246MH0pO2NsYXNzIERndHtjb25zdHJ1Y3Rvcih0KXt0aGlzLnN0b3JlPXQsdGhpcy5mbGFnZ2VkQW5ub3RhdGlvbnMkPXRoaXMuc3RvcmUuc2VsZWN0KFRkdCksdGhpcy5udW1GbGFnZ2VkQW5ub3RhdGlvbnMkPXRoaXMuZmxhZ2dlZEFubm90YXRpb25zJC5waXBlKGZ0KCh0PT50Lmxlbmd0aCkpKSx0aGlzLmFjdGl2ZVJ1bnMkPXRoaXMuc3RvcmUuc2VsZWN0KEtEKS5waXBlKGZ0KCh0PT50P0FycmF5LmZyb20odC5lbnRyaWVzKCkpLmZpbHRlcigodD0+dFsxXSkpLm1hcCgodD0+dFswXSkpOltdKSkpLHRoaXMuZmxhZ2dlZERhdGEkPUV0KFt0aGlzLnN0b3JlLnNlbGVjdChFZHQpLHRoaXMuZmxhZ2dlZEFubm90YXRpb25zJF0pLnBpcGUoZnQoKChbdCxuXSk9Pntjb25zdCBlPW5ldyBTZXQobik7cmV0dXJuIE9iamVjdC5lbnRyaWVzKHQpLmZpbHRlcigodD0+ZS5oYXModFswXSkpKX0pKSksdGhpcy5tZXRyaWNzJD1FdChbdGhpcy5zdG9yZS5zZWxlY3QoQWR0KSx0aGlzLmFjdGl2ZVJ1bnMkLHRoaXMuc3RvcmUuc2VsZWN0KExkdCldKS5waXBlKGZ0KCgoW3QsbixlXSk9PntsZXQgYT1PYmplY3Qua2V5cyhlKTtmb3IoY29uc3QgZSBvZiBuKXRbZV0mJihhPWEuY29uY2F0KHRbZV0uZmlsdGVyKCh0PT55Z3QodCkpKSkpO3JldHVybiBhPVsuLi5uZXcgU2V0KGEpXSxhfSkpKX19RGd0Lsm1ZmFjPWZ1bmN0aW9uIHQobil7cmV0dXJuIG5ldyhufHxEZ3QpKFpnKGN2KSl9LERndC7JtWNtcD1fbyh7dHlwZTpEZ3Qsc2VsZWN0b3JzOltbIm5wbWktcmVzdWx0cy1kb3dubG9hZCJdXSxkZWNsczo1LHZhcnM6MTIsY29uc3RzOltbMywibnVtRmxhZ2dlZEFubm90YXRpb25zIiwicnVucyIsImZsYWdnZWREYXRhIiwibWV0cmljcyJdXSx0ZW1wbGF0ZTpmdW5jdGlvbiB0KG4sZSl7MSZuJiYodHAoMCwicmVzdWx0cy1kb3dubG9hZC1jb21wb25lbnQiLDApLHlmKDEsImFzeW5jIikseWYoMiwiYXN5bmMiKSx5ZigzLCJhc3luYyIpLHlmKDQsImFzeW5jIikpLDImbiYmSmcoIm51bUZsYWdnZWRBbm5vdGF0aW9ucyIsa2YoMSw0LGUubnVtRmxhZ2dlZEFubm90YXRpb25zJCkpKCJydW5zIixrZigyLDYsZS5hY3RpdmVSdW5zJCkpKCJmbGFnZ2VkRGF0YSIsa2YoMyw4LGUuZmxhZ2dlZERhdGEkKSkoIm1ldHJpY3MiLGtmKDQsMTAsZS5tZXRyaWNzJCkpfSxkaXJlY3RpdmVzOltUZ3RdLHBpcGVzOltvT10sZW5jYXBzdWxhdGlvbjoyLGNoYW5nZURldGVjdGlvbjowfSk7Y29uc3QgSWd0PW5ldyBGYSgiTWF0Q2hpcFJlbW92ZSIpLE5ndD1uZXcgRmEoIk1hdENoaXBBdmF0YXIiKSxGZ3Q9bmV3IEZhKCJNYXRDaGlwVHJhaWxpbmdJY29uIiksTGd0PW9FKGVFKGFFKGNsYXNze2NvbnN0cnVjdG9yKHQpe3RoaXMuX2VsZW1lbnRSZWY9dH19KSwicHJpbWFyeSIpLC0xKTtjbGFzcyBIZ3R7fUhndC7JtWZhYz1mdW5jdGlvbiB0KG4pe3JldHVybiBuZXcobnx8SGd0KX0sSGd0Lsm1ZGlyPXZvKHt0eXBlOkhndCxzZWxlY3RvcnM6W1sibWF0LWNoaXAtYXZhdGFyIl0sWyIiLCJtYXRDaGlwQXZhdGFyIiwiIl1dLGhvc3RBdHRyczpbMSwibWF0LWNoaXAtYXZhdGFyIl0sZmVhdHVyZXM6W011KFt7cHJvdmlkZTpOZ3QsdXNlRXhpc3Rpbmc6SGd0fV0pXX0pO2NsYXNzIEJndHt9Qmd0Lsm1ZmFjPWZ1bmN0aW9uIHQobil7cmV0dXJuIG5ldyhufHxCZ3QpfSxCZ3QuybVkaXI9dm8oe3R5cGU6Qmd0LHNlbGVjdG9yczpbWyJtYXQtY2hpcC10cmFpbGluZy1pY29uIl0sWyIiLCJtYXRDaGlwVHJhaWxpbmdJY29uIiwiIl1dLGhvc3RBdHRyczpbMSwibWF0LWNoaXAtdHJhaWxpbmctaWNvbiJdLGZlYXR1cmVzOltNdShbe3Byb3ZpZGU6Rmd0LHVzZUV4aXN0aW5nOkJndH1dKV19KTtjbGFzcyBWZ3QgZXh0ZW5kcyBMZ3R7Y29uc3RydWN0b3IodCxuLGUsYSxvLHIsaSxjKXtzdXBlcih0KSx0aGlzLl9lbGVtZW50UmVmPXQsdGhpcy5fbmdab25lPW4sdGhpcy5fY2hhbmdlRGV0ZWN0b3JSZWY9cix0aGlzLl9oYXNGb2N1cz0hMSx0aGlzLmNoaXBMaXN0U2VsZWN0YWJsZT0hMCx0aGlzLl9jaGlwTGlzdE11bHRpcGxlPSExLHRoaXMuX2NoaXBMaXN0RGlzYWJsZWQ9ITEsdGhpcy5fc2VsZWN0ZWQ9ITEsdGhpcy5fc2VsZWN0YWJsZT0hMCx0aGlzLl9kaXNhYmxlZD0hMSx0aGlzLl9yZW1vdmFibGU9ITAsdGhpcy5fb25Gb2N1cz1uZXcgeCx0aGlzLl9vbkJsdXI9bmV3IHgsdGhpcy5zZWxlY3Rpb25DaGFuZ2U9bmV3IEVmLHRoaXMuZGVzdHJveWVkPW5ldyBFZix0aGlzLnJlbW92ZWQ9bmV3IEVmLHRoaXMuX2FkZEhvc3RDbGFzc05hbWUoKSx0aGlzLl9jaGlwUmlwcGxlVGFyZ2V0PShjfHxkb2N1bWVudCkuY3JlYXRlRWxlbWVudCgiZGl2IiksdGhpcy5fY2hpcFJpcHBsZVRhcmdldC5jbGFzc0xpc3QuYWRkKCJtYXQtY2hpcC1yaXBwbGUiKSx0aGlzLl9lbGVtZW50UmVmLm5hdGl2ZUVsZW1lbnQuYXBwZW5kQ2hpbGQodGhpcy5fY2hpcFJpcHBsZVRhcmdldCksdGhpcy5fY2hpcFJpcHBsZT1uZXcgRUUodGhpcyxuLHRoaXMuX2NoaXBSaXBwbGVUYXJnZXQsZSksdGhpcy5fY2hpcFJpcHBsZS5zZXR1cFRyaWdnZXJFdmVudHModCksdGhpcy5yaXBwbGVDb25maWc9YXx8e30sdGhpcy5fYW5pbWF0aW9uc0Rpc2FibGVkPSJOb29wQW5pbWF0aW9ucyI9PT1vLHRoaXMudGFiSW5kZXg9bnVsbCE9aSYmcGFyc2VJbnQoaSl8fC0xfWdldCByaXBwbGVEaXNhYmxlZCgpe3JldHVybiB0aGlzLmRpc2FibGVkfHx0aGlzLmRpc2FibGVSaXBwbGV8fCEhdGhpcy5yaXBwbGVDb25maWcuZGlzYWJsZWR9Z2V0IHNlbGVjdGVkKCl7cmV0dXJuIHRoaXMuX3NlbGVjdGVkfXNldCBzZWxlY3RlZCh0KXtjb25zdCBuPUd3KHQpO24hPT10aGlzLl9zZWxlY3RlZCYmKHRoaXMuX3NlbGVjdGVkPW4sdGhpcy5fZGlzcGF0Y2hTZWxlY3Rpb25DaGFuZ2UoKSl9Z2V0IHZhbHVlKCl7cmV0dXJuIHZvaWQgMCE9PXRoaXMuX3ZhbHVlP3RoaXMuX3ZhbHVlOnRoaXMuX2VsZW1lbnRSZWYubmF0aXZlRWxlbWVudC50ZXh0Q29udGVudH1zZXQgdmFsdWUodCl7dGhpcy5fdmFsdWU9dH1nZXQgc2VsZWN0YWJsZSgpe3JldHVybiB0aGlzLl9zZWxlY3RhYmxlJiZ0aGlzLmNoaXBMaXN0U2VsZWN0YWJsZX1zZXQgc2VsZWN0YWJsZSh0KXt0aGlzLl9zZWxlY3RhYmxlPUd3KHQpfWdldCBkaXNhYmxlZCgpe3JldHVybiB0aGlzLl9jaGlwTGlzdERpc2FibGVkfHx0aGlzLl9kaXNhYmxlZH1zZXQgZGlzYWJsZWQodCl7dGhpcy5fZGlzYWJsZWQ9R3codCl9Z2V0IHJlbW92YWJsZSgpe3JldHVybiB0aGlzLl9yZW1vdmFibGV9c2V0IHJlbW92YWJsZSh0KXt0aGlzLl9yZW1vdmFibGU9R3codCl9Z2V0IGFyaWFTZWxlY3RlZCgpe3JldHVybiB0aGlzLnNlbGVjdGFibGUmJih0aGlzLl9jaGlwTGlzdE11bHRpcGxlfHx0aGlzLnNlbGVjdGVkKT90aGlzLnNlbGVjdGVkLnRvU3RyaW5nKCk6bnVsbH1fYWRkSG9zdENsYXNzTmFtZSgpe2NvbnN0IHQ9Im1hdC1iYXNpYy1jaGlwIixuPXRoaXMuX2VsZW1lbnRSZWYubmF0aXZlRWxlbWVudDtuLmhhc0F0dHJpYnV0ZSh0KXx8bi50YWdOYW1lLnRvTG93ZXJDYXNlKCk9PT10P24uY2xhc3NMaXN0LmFkZCh0KTpuLmNsYXNzTGlzdC5hZGQoIm1hdC1zdGFuZGFyZC1jaGlwIil9bmdPbkRlc3Ryb3koKXt0aGlzLmRlc3Ryb3llZC5lbWl0KHtjaGlwOnRoaXN9KSx0aGlzLl9jaGlwUmlwcGxlLl9yZW1vdmVUcmlnZ2VyRXZlbnRzKCl9c2VsZWN0KCl7dGhpcy5fc2VsZWN0ZWR8fCh0aGlzLl9zZWxlY3RlZD0hMCx0aGlzLl9kaXNwYXRjaFNlbGVjdGlvbkNoYW5nZSgpLHRoaXMuX21hcmtGb3JDaGVjaygpKX1kZXNlbGVjdCgpe3RoaXMuX3NlbGVjdGVkJiYodGhpcy5fc2VsZWN0ZWQ9ITEsdGhpcy5fZGlzcGF0Y2hTZWxlY3Rpb25DaGFuZ2UoKSx0aGlzLl9tYXJrRm9yQ2hlY2soKSl9c2VsZWN0VmlhSW50ZXJhY3Rpb24oKXt0aGlzLl9zZWxlY3RlZHx8KHRoaXMuX3NlbGVjdGVkPSEwLHRoaXMuX2Rpc3BhdGNoU2VsZWN0aW9uQ2hhbmdlKCEwKSx0aGlzLl9tYXJrRm9yQ2hlY2soKSl9dG9nZ2xlU2VsZWN0ZWQodD0hMSl7cmV0dXJuIHRoaXMuX3NlbGVjdGVkPSF0aGlzLnNlbGVjdGVkLHRoaXMuX2Rpc3BhdGNoU2VsZWN0aW9uQ2hhbmdlKHQpLHRoaXMuX21hcmtGb3JDaGVjaygpLHRoaXMuc2VsZWN0ZWR9Zm9jdXMoKXt0aGlzLl9oYXNGb2N1c3x8KHRoaXMuX2VsZW1lbnRSZWYubmF0aXZlRWxlbWVudC5mb2N1cygpLHRoaXMuX29uRm9jdXMubmV4dCh7Y2hpcDp0aGlzfSkpLHRoaXMuX2hhc0ZvY3VzPSEwfXJlbW92ZSgpe3RoaXMucmVtb3ZhYmxlJiZ0aGlzLnJlbW92ZWQuZW1pdCh7Y2hpcDp0aGlzfSl9X2hhbmRsZUNsaWNrKHQpe3RoaXMuZGlzYWJsZWQ/dC5wcmV2ZW50RGVmYXVsdCgpOnQuc3RvcFByb3BhZ2F0aW9uKCl9X2hhbmRsZUtleWRvd24odCl7aWYoIXRoaXMuZGlzYWJsZWQpc3dpdGNoKHQua2V5Q29kZSl7Y2FzZSA0NjpjYXNlIDg6dGhpcy5yZW1vdmUoKSx0LnByZXZlbnREZWZhdWx0KCk7YnJlYWs7Y2FzZSBWdzp0aGlzLnNlbGVjdGFibGUmJnRoaXMudG9nZ2xlU2VsZWN0ZWQoITApLHQucHJldmVudERlZmF1bHQoKX19X2JsdXIoKXt0aGlzLl9uZ1pvbmUub25TdGFibGUucGlwZShUbigxKSkuc3Vic2NyaWJlKCgoKT0+e3RoaXMuX25nWm9uZS5ydW4oKCgpPT57dGhpcy5faGFzRm9jdXM9ITEsdGhpcy5fb25CbHVyLm5leHQoe2NoaXA6dGhpc30pfSkpfSkpfV9kaXNwYXRjaFNlbGVjdGlvbkNoYW5nZSh0PSExKXt0aGlzLnNlbGVjdGlvbkNoYW5nZS5lbWl0KHtzb3VyY2U6dGhpcyxpc1VzZXJJbnB1dDp0LHNlbGVjdGVkOnRoaXMuX3NlbGVjdGVkfSl9X21hcmtGb3JDaGVjaygpe3RoaXMuX2NoYW5nZURldGVjdG9yUmVmJiZ0aGlzLl9jaGFuZ2VEZXRlY3RvclJlZi5tYXJrRm9yQ2hlY2soKX19Vmd0Lsm1ZmFjPWZ1bmN0aW9uIHQobil7cmV0dXJuIG5ldyhufHxWZ3QpKFpnKHh1KSxaZyhKXyksWmcoU3cpLFpnKEFFLDgpLFpnKGRrLDgpLFpnKFZtKSxYZygidGFiaW5kZXgiKSxaZyh6Qyw4KSl9LFZndC7JtWRpcj12byh7dHlwZTpWZ3Qsc2VsZWN0b3JzOltbIm1hdC1iYXNpYy1jaGlwIl0sWyIiLCJtYXQtYmFzaWMtY2hpcCIsIiJdLFsibWF0LWNoaXAiXSxbIiIsIm1hdC1jaGlwIiwiIl1dLGNvbnRlbnRRdWVyaWVzOmZ1bmN0aW9uIHQobixlLGEpe3ZhciBvOzEmbiYmKEdmKGEsTmd0LCEwKSxHZihhLEZndCwhMCksR2YoYSxJZ3QsITApKSwyJm4mJihWZihvPVpmKCkpJiYoZS5hdmF0YXI9by5maXJzdCksVmYobz1aZigpKSYmKGUudHJhaWxpbmdJY29uPW8uZmlyc3QpLFZmKG89WmYoKSkmJihlLnJlbW92ZUljb249by5maXJzdCkpfSxob3N0QXR0cnM6WyJyb2xlIiwib3B0aW9uIiwxLCJtYXQtY2hpcCIsIm1hdC1mb2N1cy1pbmRpY2F0b3IiXSxob3N0VmFyczoxNCxob3N0QmluZGluZ3M6ZnVuY3Rpb24gdChuLGUpezEmbiYmY3AoImNsaWNrIiwoZnVuY3Rpb24gdChuKXtyZXR1cm4gZS5faGFuZGxlQ2xpY2sobil9KSkoImtleWRvd24iLChmdW5jdGlvbiB0KG4pe3JldHVybiBlLl9oYW5kbGVLZXlkb3duKG4pfSkpKCJmb2N1cyIsKGZ1bmN0aW9uIHQoKXtyZXR1cm4gZS5mb2N1cygpfSkpKCJibHVyIiwoZnVuY3Rpb24gdCgpe3JldHVybiBlLl9ibHVyKCl9KSksMiZuJiYoTmcoInRhYmluZGV4IixlLmRpc2FibGVkP251bGw6ZS50YWJJbmRleCkoImRpc2FibGVkIixlLmRpc2FibGVkfHxudWxsKSgiYXJpYS1kaXNhYmxlZCIsZS5kaXNhYmxlZC50b1N0cmluZygpKSgiYXJpYS1zZWxlY3RlZCIsZS5hcmlhU2VsZWN0ZWQpLERwKCJtYXQtY2hpcC1zZWxlY3RlZCIsZS5zZWxlY3RlZCkoIm1hdC1jaGlwLXdpdGgtYXZhdGFyIixlLmF2YXRhcikoIm1hdC1jaGlwLXdpdGgtdHJhaWxpbmctaWNvbiIsZS50cmFpbGluZ0ljb258fGUucmVtb3ZlSWNvbikoIm1hdC1jaGlwLWRpc2FibGVkIixlLmRpc2FibGVkKSgiX21hdC1hbmltYXRpb24tbm9vcGFibGUiLGUuX2FuaW1hdGlvbnNEaXNhYmxlZCkpfSxpbnB1dHM6e2NvbG9yOiJjb2xvciIsZGlzYWJsZVJpcHBsZToiZGlzYWJsZVJpcHBsZSIsdGFiSW5kZXg6InRhYkluZGV4IixzZWxlY3RlZDoic2VsZWN0ZWQiLHZhbHVlOiJ2YWx1ZSIsc2VsZWN0YWJsZToic2VsZWN0YWJsZSIsZGlzYWJsZWQ6ImRpc2FibGVkIixyZW1vdmFibGU6InJlbW92YWJsZSJ9LG91dHB1dHM6e3NlbGVjdGlvbkNoYW5nZToic2VsZWN0aW9uQ2hhbmdlIixkZXN0cm95ZWQ6ImRlc3Ryb3llZCIscmVtb3ZlZDoicmVtb3ZlZCJ9LGV4cG9ydEFzOlsibWF0Q2hpcCJdLGZlYXR1cmVzOltoZ119KSxWZ3QuY3RvclBhcmFtZXRlcnM9KCk9Plt7dHlwZTp4dX0se3R5cGU6Sl99LHt0eXBlOlN3fSx7dHlwZTp2b2lkIDAsZGVjb3JhdG9yczpbe3R5cGU6TmV9LHt0eXBlOkllLGFyZ3M6W0FFXX1dfSx7dHlwZTpTdHJpbmcsZGVjb3JhdG9yczpbe3R5cGU6TmV9LHt0eXBlOkllLGFyZ3M6W2RrXX1dfSx7dHlwZTpWbX0se3R5cGU6U3RyaW5nLGRlY29yYXRvcnM6W3t0eXBlOkJlLGFyZ3M6WyJ0YWJpbmRleCJdfV19LHt0eXBlOnZvaWQgMCxkZWNvcmF0b3JzOlt7dHlwZTpOZX0se3R5cGU6SWUsYXJnczpbekNdfV19XSxWZ3QucHJvcERlY29yYXRvcnM9e2F2YXRhcjpbe3R5cGU6WmQsYXJnczpbTmd0XX1dLHRyYWlsaW5nSWNvbjpbe3R5cGU6WmQsYXJnczpbRmd0XX1dLHJlbW92ZUljb246W3t0eXBlOlpkLGFyZ3M6W0lndF19XSxzZWxlY3RlZDpbe3R5cGU6Zl99XSx2YWx1ZTpbe3R5cGU6Zl99XSxzZWxlY3RhYmxlOlt7dHlwZTpmX31dLGRpc2FibGVkOlt7dHlwZTpmX31dLHJlbW92YWJsZTpbe3R5cGU6Zl99XSxzZWxlY3Rpb25DaGFuZ2U6W3t0eXBlOmhffV0sZGVzdHJveWVkOlt7dHlwZTpoX31dLHJlbW92ZWQ6W3t0eXBlOmhffV19O2NsYXNzIGpndHtjb25zdHJ1Y3Rvcih0LG4pe3RoaXMuX3BhcmVudENoaXA9dCxuJiYiQlVUVE9OIj09PW4ubmF0aXZlRWxlbWVudC5ub2RlTmFtZSYmbi5uYXRpdmVFbGVtZW50LnNldEF0dHJpYnV0ZSgidHlwZSIsImJ1dHRvbiIpfV9oYW5kbGVDbGljayh0KXtjb25zdCBuPXRoaXMuX3BhcmVudENoaXA7bi5yZW1vdmFibGUmJiFuLmRpc2FibGVkJiZuLnJlbW92ZSgpLHQuc3RvcFByb3BhZ2F0aW9uKCl9fWpndC7JtWZhYz1mdW5jdGlvbiB0KG4pe3JldHVybiBuZXcobnx8amd0KShaZyhWZ3QpLFpnKHh1KSl9LGpndC7JtWRpcj12byh7dHlwZTpqZ3Qsc2VsZWN0b3JzOltbIiIsIm1hdENoaXBSZW1vdmUiLCIiXV0saG9zdEF0dHJzOlsxLCJtYXQtY2hpcC1yZW1vdmUiLCJtYXQtY2hpcC10cmFpbGluZy1pY29uIl0saG9zdEJpbmRpbmdzOmZ1bmN0aW9uIHQobixlKXsxJm4mJmNwKCJjbGljayIsKGZ1bmN0aW9uIHQobil7cmV0dXJuIGUuX2hhbmRsZUNsaWNrKG4pfSkpfSxmZWF0dXJlczpbTXUoW3twcm92aWRlOklndCx1c2VFeGlzdGluZzpqZ3R9XSldfSksamd0LmN0b3JQYXJhbWV0ZXJzPSgpPT5be3R5cGU6Vmd0fSx7dHlwZTp4dX1dCi8qKgogICAgICogQGxpY2Vuc2UKICAgICAqIENvcHlyaWdodCBHb29nbGUgTExDIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCiAgICAgKgogICAgICogVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYW4gTUlULXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKICAgICAqIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUgYXQgaHR0cHM6Ly9hbmd1bGFyLmlvL2xpY2Vuc2UKICAgICAqLztjb25zdCBVZ3Q9bmV3IEZhKCJtYXQtY2hpcHMtZGVmYXVsdC1vcHRpb25zIiksV2d0PXJFKAovKioKICAgICAqIEBsaWNlbnNlCiAgICAgKiBDb3B5cmlnaHQgR29vZ2xlIExMQyBBbGwgUmlnaHRzIFJlc2VydmVkLgogICAgICoKICAgICAqIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGFuIE1JVC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCiAgICAgKiBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlIGF0IGh0dHBzOi8vYW5ndWxhci5pby9saWNlbnNlCiAgICAgKi8KY2xhc3N7Y29uc3RydWN0b3IodCxuLGUsYSl7dGhpcy5fZGVmYXVsdEVycm9yU3RhdGVNYXRjaGVyPXQsdGhpcy5fcGFyZW50Rm9ybT1uLHRoaXMuX3BhcmVudEZvcm1Hcm91cD1lLHRoaXMubmdDb250cm9sPWF9fSk7bGV0IEdndD0wO2NsYXNzIFlndHtjb25zdHJ1Y3Rvcih0LG4pe3RoaXMuc291cmNlPXQsdGhpcy52YWx1ZT1ufX1jbGFzcyBxZ3QgZXh0ZW5kcyBXZ3R7Y29uc3RydWN0b3IodCxuLGUsYSxvLHIsaSl7c3VwZXIocixhLG8saSksdGhpcy5fZWxlbWVudFJlZj10LHRoaXMuX2NoYW5nZURldGVjdG9yUmVmPW4sdGhpcy5fZGlyPWUsdGhpcy5uZ0NvbnRyb2w9aSx0aGlzLmNvbnRyb2xUeXBlPSJtYXQtY2hpcC1saXN0Iix0aGlzLl9sYXN0RGVzdHJveWVkQ2hpcEluZGV4PW51bGwsdGhpcy5fZGVzdHJveWVkPW5ldyB4LHRoaXMuX3VpZD0ibWF0LWNoaXAtbGlzdC0iK0dndCsrLHRoaXMuX3RhYkluZGV4PTAsdGhpcy5fdXNlclRhYkluZGV4PW51bGwsdGhpcy5fb25Ub3VjaGVkPSgpPT57fSx0aGlzLl9vbkNoYW5nZT0oKT0+e30sdGhpcy5fbXVsdGlwbGU9ITEsdGhpcy5fY29tcGFyZVdpdGg9KHQsbik9PnQ9PT1uLHRoaXMuX3JlcXVpcmVkPSExLHRoaXMuX2Rpc2FibGVkPSExLHRoaXMuYXJpYU9yaWVudGF0aW9uPSJob3Jpem9udGFsIix0aGlzLl9zZWxlY3RhYmxlPSEwLHRoaXMuY2hhbmdlPW5ldyBFZix0aGlzLnZhbHVlQ2hhbmdlPW5ldyBFZix0aGlzLm5nQ29udHJvbCYmKHRoaXMubmdDb250cm9sLnZhbHVlQWNjZXNzb3I9dGhpcyl9Z2V0IHNlbGVjdGVkKCl7cmV0dXJuIHRoaXMubXVsdGlwbGU/dGhpcy5fc2VsZWN0aW9uTW9kZWwuc2VsZWN0ZWQ6dGhpcy5fc2VsZWN0aW9uTW9kZWwuc2VsZWN0ZWRbMF19Z2V0IHJvbGUoKXtyZXR1cm4gdGhpcy5lbXB0eT9udWxsOiJsaXN0Ym94In1nZXQgbXVsdGlwbGUoKXtyZXR1cm4gdGhpcy5fbXVsdGlwbGV9c2V0IG11bHRpcGxlKHQpe3RoaXMuX211bHRpcGxlPUd3KHQpLHRoaXMuX3N5bmNDaGlwc1N0YXRlKCl9Z2V0IGNvbXBhcmVXaXRoKCl7cmV0dXJuIHRoaXMuX2NvbXBhcmVXaXRofXNldCBjb21wYXJlV2l0aCh0KXt0aGlzLl9jb21wYXJlV2l0aD10LHRoaXMuX3NlbGVjdGlvbk1vZGVsJiZ0aGlzLl9pbml0aWFsaXplU2VsZWN0aW9uKCl9Z2V0IHZhbHVlKCl7cmV0dXJuIHRoaXMuX3ZhbHVlfXNldCB2YWx1ZSh0KXt0aGlzLndyaXRlVmFsdWUodCksdGhpcy5fdmFsdWU9dH1nZXQgaWQoKXtyZXR1cm4gdGhpcy5fY2hpcElucHV0P3RoaXMuX2NoaXBJbnB1dC5pZDp0aGlzLl91aWR9Z2V0IHJlcXVpcmVkKCl7cmV0dXJuIHRoaXMuX3JlcXVpcmVkfXNldCByZXF1aXJlZCh0KXt0aGlzLl9yZXF1aXJlZD1Hdyh0KSx0aGlzLnN0YXRlQ2hhbmdlcy5uZXh0KCl9Z2V0IHBsYWNlaG9sZGVyKCl7cmV0dXJuIHRoaXMuX2NoaXBJbnB1dD90aGlzLl9jaGlwSW5wdXQucGxhY2Vob2xkZXI6dGhpcy5fcGxhY2Vob2xkZXJ9c2V0IHBsYWNlaG9sZGVyKHQpe3RoaXMuX3BsYWNlaG9sZGVyPXQsdGhpcy5zdGF0ZUNoYW5nZXMubmV4dCgpfWdldCBmb2N1c2VkKCl7cmV0dXJuIHRoaXMuX2NoaXBJbnB1dCYmdGhpcy5fY2hpcElucHV0LmZvY3VzZWR8fHRoaXMuX2hhc0ZvY3VzZWRDaGlwKCl9Z2V0IGVtcHR5KCl7cmV0dXJuKCF0aGlzLl9jaGlwSW5wdXR8fHRoaXMuX2NoaXBJbnB1dC5lbXB0eSkmJighdGhpcy5jaGlwc3x8MD09PXRoaXMuY2hpcHMubGVuZ3RoKX1nZXQgc2hvdWxkTGFiZWxGbG9hdCgpe3JldHVybiF0aGlzLmVtcHR5fHx0aGlzLmZvY3VzZWR9Z2V0IGRpc2FibGVkKCl7cmV0dXJuIHRoaXMubmdDb250cm9sPyEhdGhpcy5uZ0NvbnRyb2wuZGlzYWJsZWQ6dGhpcy5fZGlzYWJsZWR9c2V0IGRpc2FibGVkKHQpe3RoaXMuX2Rpc2FibGVkPUd3KHQpLHRoaXMuX3N5bmNDaGlwc1N0YXRlKCl9Z2V0IHNlbGVjdGFibGUoKXtyZXR1cm4gdGhpcy5fc2VsZWN0YWJsZX1zZXQgc2VsZWN0YWJsZSh0KXt0aGlzLl9zZWxlY3RhYmxlPUd3KHQpLHRoaXMuY2hpcHMmJnRoaXMuY2hpcHMuZm9yRWFjaCgodD0+dC5jaGlwTGlzdFNlbGVjdGFibGU9dGhpcy5fc2VsZWN0YWJsZSkpfXNldCB0YWJJbmRleCh0KXt0aGlzLl91c2VyVGFiSW5kZXg9dCx0aGlzLl90YWJJbmRleD10fWdldCBjaGlwU2VsZWN0aW9uQ2hhbmdlcygpe3JldHVybiBXdCguLi50aGlzLmNoaXBzLm1hcCgodD0+dC5zZWxlY3Rpb25DaGFuZ2UpKSl9Z2V0IGNoaXBGb2N1c0NoYW5nZXMoKXtyZXR1cm4gV3QoLi4udGhpcy5jaGlwcy5tYXAoKHQ9PnQuX29uRm9jdXMpKSl9Z2V0IGNoaXBCbHVyQ2hhbmdlcygpe3JldHVybiBXdCguLi50aGlzLmNoaXBzLm1hcCgodD0+dC5fb25CbHVyKSkpfWdldCBjaGlwUmVtb3ZlQ2hhbmdlcygpe3JldHVybiBXdCguLi50aGlzLmNoaXBzLm1hcCgodD0+dC5kZXN0cm95ZWQpKSl9bmdBZnRlckNvbnRlbnRJbml0KCl7dGhpcy5fa2V5TWFuYWdlcj1uZXcgbVModGhpcy5jaGlwcykud2l0aFdyYXAoKS53aXRoVmVydGljYWxPcmllbnRhdGlvbigpLndpdGhIb21lQW5kRW5kKCkud2l0aEhvcml6b250YWxPcmllbnRhdGlvbih0aGlzLl9kaXI/dGhpcy5fZGlyLnZhbHVlOiJsdHIiKSx0aGlzLl9kaXImJnRoaXMuX2Rpci5jaGFuZ2UucGlwZShkZSh0aGlzLl9kZXN0cm95ZWQpKS5zdWJzY3JpYmUoKHQ9PnRoaXMuX2tleU1hbmFnZXIud2l0aEhvcml6b250YWxPcmllbnRhdGlvbih0KSkpLHRoaXMuX2tleU1hbmFnZXIudGFiT3V0LnBpcGUoZGUodGhpcy5fZGVzdHJveWVkKSkuc3Vic2NyaWJlKCgoKT0+e3RoaXMuX2FsbG93Rm9jdXNFc2NhcGUoKX0pKSx0aGlzLmNoaXBzLmNoYW5nZXMucGlwZShjZShudWxsKSxkZSh0aGlzLl9kZXN0cm95ZWQpKS5zdWJzY3JpYmUoKCgpPT57dGhpcy5kaXNhYmxlZCYmUHJvbWlzZS5yZXNvbHZlKCkudGhlbigoKCk9Pnt0aGlzLl9zeW5jQ2hpcHNTdGF0ZSgpfSkpLHRoaXMuX3Jlc2V0Q2hpcHMoKSx0aGlzLl9pbml0aWFsaXplU2VsZWN0aW9uKCksdGhpcy5fdXBkYXRlVGFiSW5kZXgoKSx0aGlzLl91cGRhdGVGb2N1c0ZvckRlc3Ryb3llZENoaXBzKCksdGhpcy5zdGF0ZUNoYW5nZXMubmV4dCgpfSkpfW5nT25Jbml0KCl7dGhpcy5fc2VsZWN0aW9uTW9kZWw9bmV3IG1BKHRoaXMubXVsdGlwbGUsdm9pZCAwLCExKSx0aGlzLnN0YXRlQ2hhbmdlcy5uZXh0KCl9bmdEb0NoZWNrKCl7dGhpcy5uZ0NvbnRyb2wmJih0aGlzLnVwZGF0ZUVycm9yU3RhdGUoKSx0aGlzLm5nQ29udHJvbC5kaXNhYmxlZCE9PXRoaXMuX2Rpc2FibGVkJiYodGhpcy5kaXNhYmxlZD0hIXRoaXMubmdDb250cm9sLmRpc2FibGVkKSl9bmdPbkRlc3Ryb3koKXt0aGlzLl9kZXN0cm95ZWQubmV4dCgpLHRoaXMuX2Rlc3Ryb3llZC5jb21wbGV0ZSgpLHRoaXMuc3RhdGVDaGFuZ2VzLmNvbXBsZXRlKCksdGhpcy5fZHJvcFN1YnNjcmlwdGlvbnMoKX1yZWdpc3RlcklucHV0KHQpe3RoaXMuX2NoaXBJbnB1dD10LHRoaXMuX2VsZW1lbnRSZWYubmF0aXZlRWxlbWVudC5zZXRBdHRyaWJ1dGUoImRhdGEtbWF0LWNoaXAtaW5wdXQiLHQuaWQpfXNldERlc2NyaWJlZEJ5SWRzKHQpe3RoaXMuX2FyaWFEZXNjcmliZWRieT10LmpvaW4oIiAiKX13cml0ZVZhbHVlKHQpe3RoaXMuY2hpcHMmJnRoaXMuX3NldFNlbGVjdGlvbkJ5VmFsdWUodCwhMSl9cmVnaXN0ZXJPbkNoYW5nZSh0KXt0aGlzLl9vbkNoYW5nZT10fXJlZ2lzdGVyT25Ub3VjaGVkKHQpe3RoaXMuX29uVG91Y2hlZD10fXNldERpc2FibGVkU3RhdGUodCl7dGhpcy5kaXNhYmxlZD10LHRoaXMuc3RhdGVDaGFuZ2VzLm5leHQoKX1vbkNvbnRhaW5lckNsaWNrKHQpe3RoaXMuX29yaWdpbmF0ZXNGcm9tQ2hpcCh0KXx8dGhpcy5mb2N1cygpfWZvY3VzKHQpe3RoaXMuZGlzYWJsZWR8fHRoaXMuX2NoaXBJbnB1dCYmdGhpcy5fY2hpcElucHV0LmZvY3VzZWR8fCh0aGlzLmNoaXBzLmxlbmd0aD4wPyh0aGlzLl9rZXlNYW5hZ2VyLnNldEZpcnN0SXRlbUFjdGl2ZSgpLHRoaXMuc3RhdGVDaGFuZ2VzLm5leHQoKSk6KHRoaXMuX2ZvY3VzSW5wdXQodCksdGhpcy5zdGF0ZUNoYW5nZXMubmV4dCgpKSl9X2ZvY3VzSW5wdXQodCl7dGhpcy5fY2hpcElucHV0JiZ0aGlzLl9jaGlwSW5wdXQuZm9jdXModCl9X2tleWRvd24odCl7Y29uc3Qgbj10LnRhcmdldDs4PT09dC5rZXlDb2RlJiZ0aGlzLl9pc0lucHV0RW1wdHkobik/KHRoaXMuX2tleU1hbmFnZXIuc2V0TGFzdEl0ZW1BY3RpdmUoKSx0LnByZXZlbnREZWZhdWx0KCkpOm4mJm4uY2xhc3NMaXN0LmNvbnRhaW5zKCJtYXQtY2hpcCIpJiYodGhpcy5fa2V5TWFuYWdlci5vbktleWRvd24odCksdGhpcy5zdGF0ZUNoYW5nZXMubmV4dCgpKX1fdXBkYXRlVGFiSW5kZXgoKXt0aGlzLl90YWJJbmRleD10aGlzLl91c2VyVGFiSW5kZXh8fCgwPT09dGhpcy5jaGlwcy5sZW5ndGg/LTE6MCl9X3VwZGF0ZUZvY3VzRm9yRGVzdHJveWVkQ2hpcHMoKXtpZihudWxsIT10aGlzLl9sYXN0RGVzdHJveWVkQ2hpcEluZGV4KWlmKHRoaXMuY2hpcHMubGVuZ3RoKXtjb25zdCB0PU1hdGgubWluKHRoaXMuX2xhc3REZXN0cm95ZWRDaGlwSW5kZXgsdGhpcy5jaGlwcy5sZW5ndGgtMSk7dGhpcy5fa2V5TWFuYWdlci5zZXRBY3RpdmVJdGVtKHQpfWVsc2UgdGhpcy5mb2N1cygpO3RoaXMuX2xhc3REZXN0cm95ZWRDaGlwSW5kZXg9bnVsbH1faXNWYWxpZEluZGV4KHQpe3JldHVybiB0Pj0wJiZ0PHRoaXMuY2hpcHMubGVuZ3RofV9pc0lucHV0RW1wdHkodCl7cmV0dXJuISghdHx8ImlucHV0IiE9PXQubm9kZU5hbWUudG9Mb3dlckNhc2UoKXx8dC52YWx1ZSl9X3NldFNlbGVjdGlvbkJ5VmFsdWUodCxuPSEwKXtpZih0aGlzLl9jbGVhclNlbGVjdGlvbigpLHRoaXMuY2hpcHMuZm9yRWFjaCgodD0+dC5kZXNlbGVjdCgpKSksQXJyYXkuaXNBcnJheSh0KSl0LmZvckVhY2goKHQ9PnRoaXMuX3NlbGVjdFZhbHVlKHQsbikpKSx0aGlzLl9zb3J0VmFsdWVzKCk7ZWxzZXtjb25zdCBlPXRoaXMuX3NlbGVjdFZhbHVlKHQsbik7ZSYmbiYmdGhpcy5fa2V5TWFuYWdlci5zZXRBY3RpdmVJdGVtKGUpfX1fc2VsZWN0VmFsdWUodCxuPSEwKXtjb25zdCBlPXRoaXMuY2hpcHMuZmluZCgobj0+bnVsbCE9bi52YWx1ZSYmdGhpcy5fY29tcGFyZVdpdGgobi52YWx1ZSx0KSkpO3JldHVybiBlJiYobj9lLnNlbGVjdFZpYUludGVyYWN0aW9uKCk6ZS5zZWxlY3QoKSx0aGlzLl9zZWxlY3Rpb25Nb2RlbC5zZWxlY3QoZSkpLGV9X2luaXRpYWxpemVTZWxlY3Rpb24oKXtQcm9taXNlLnJlc29sdmUoKS50aGVuKCgoKT0+eyh0aGlzLm5nQ29udHJvbHx8dGhpcy5fdmFsdWUpJiYodGhpcy5fc2V0U2VsZWN0aW9uQnlWYWx1ZSh0aGlzLm5nQ29udHJvbD90aGlzLm5nQ29udHJvbC52YWx1ZTp0aGlzLl92YWx1ZSwhMSksdGhpcy5zdGF0ZUNoYW5nZXMubmV4dCgpKX0pKX1fY2xlYXJTZWxlY3Rpb24odCl7dGhpcy5fc2VsZWN0aW9uTW9kZWwuY2xlYXIoKSx0aGlzLmNoaXBzLmZvckVhY2goKG49PntuIT09dCYmbi5kZXNlbGVjdCgpfSkpLHRoaXMuc3RhdGVDaGFuZ2VzLm5leHQoKX1fc29ydFZhbHVlcygpe3RoaXMuX211bHRpcGxlJiYodGhpcy5fc2VsZWN0aW9uTW9kZWwuY2xlYXIoKSx0aGlzLmNoaXBzLmZvckVhY2goKHQ9Pnt0LnNlbGVjdGVkJiZ0aGlzLl9zZWxlY3Rpb25Nb2RlbC5zZWxlY3QodCl9KSksdGhpcy5zdGF0ZUNoYW5nZXMubmV4dCgpKX1fcHJvcGFnYXRlQ2hhbmdlcyh0KXtsZXQgbj1udWxsO249QXJyYXkuaXNBcnJheSh0aGlzLnNlbGVjdGVkKT90aGlzLnNlbGVjdGVkLm1hcCgodD0+dC52YWx1ZSkpOnRoaXMuc2VsZWN0ZWQ/dGhpcy5zZWxlY3RlZC52YWx1ZTp0LHRoaXMuX3ZhbHVlPW4sdGhpcy5jaGFuZ2UuZW1pdChuZXcgWWd0KHRoaXMsbikpLHRoaXMudmFsdWVDaGFuZ2UuZW1pdChuKSx0aGlzLl9vbkNoYW5nZShuKSx0aGlzLl9jaGFuZ2VEZXRlY3RvclJlZi5tYXJrRm9yQ2hlY2soKX1fYmx1cigpe3RoaXMuX2hhc0ZvY3VzZWRDaGlwKCl8fHRoaXMuX2tleU1hbmFnZXIuc2V0QWN0aXZlSXRlbSgtMSksdGhpcy5kaXNhYmxlZHx8KHRoaXMuX2NoaXBJbnB1dD9zZXRUaW1lb3V0KCgoKT0+e3RoaXMuZm9jdXNlZHx8dGhpcy5fbWFya0FzVG91Y2hlZCgpfSkpOnRoaXMuX21hcmtBc1RvdWNoZWQoKSl9X21hcmtBc1RvdWNoZWQoKXt0aGlzLl9vblRvdWNoZWQoKSx0aGlzLl9jaGFuZ2VEZXRlY3RvclJlZi5tYXJrRm9yQ2hlY2soKSx0aGlzLnN0YXRlQ2hhbmdlcy5uZXh0KCl9X2FsbG93Rm9jdXNFc2NhcGUoKXstMSE9PXRoaXMuX3RhYkluZGV4JiYodGhpcy5fdGFiSW5kZXg9LTEsc2V0VGltZW91dCgoKCk9Pnt0aGlzLl90YWJJbmRleD10aGlzLl91c2VyVGFiSW5kZXh8fDAsdGhpcy5fY2hhbmdlRGV0ZWN0b3JSZWYubWFya0ZvckNoZWNrKCl9KSkpfV9yZXNldENoaXBzKCl7dGhpcy5fZHJvcFN1YnNjcmlwdGlvbnMoKSx0aGlzLl9saXN0ZW5Ub0NoaXBzRm9jdXMoKSx0aGlzLl9saXN0ZW5Ub0NoaXBzU2VsZWN0aW9uKCksdGhpcy5fbGlzdGVuVG9DaGlwc1JlbW92ZWQoKX1fZHJvcFN1YnNjcmlwdGlvbnMoKXt0aGlzLl9jaGlwRm9jdXNTdWJzY3JpcHRpb24mJih0aGlzLl9jaGlwRm9jdXNTdWJzY3JpcHRpb24udW5zdWJzY3JpYmUoKSx0aGlzLl9jaGlwRm9jdXNTdWJzY3JpcHRpb249bnVsbCksdGhpcy5fY2hpcEJsdXJTdWJzY3JpcHRpb24mJih0aGlzLl9jaGlwQmx1clN1YnNjcmlwdGlvbi51bnN1YnNjcmliZSgpLHRoaXMuX2NoaXBCbHVyU3Vic2NyaXB0aW9uPW51bGwpLHRoaXMuX2NoaXBTZWxlY3Rpb25TdWJzY3JpcHRpb24mJih0aGlzLl9jaGlwU2VsZWN0aW9uU3Vic2NyaXB0aW9uLnVuc3Vic2NyaWJlKCksdGhpcy5fY2hpcFNlbGVjdGlvblN1YnNjcmlwdGlvbj1udWxsKSx0aGlzLl9jaGlwUmVtb3ZlU3Vic2NyaXB0aW9uJiYodGhpcy5fY2hpcFJlbW92ZVN1YnNjcmlwdGlvbi51bnN1YnNjcmliZSgpLHRoaXMuX2NoaXBSZW1vdmVTdWJzY3JpcHRpb249bnVsbCl9X2xpc3RlblRvQ2hpcHNTZWxlY3Rpb24oKXt0aGlzLl9jaGlwU2VsZWN0aW9uU3Vic2NyaXB0aW9uPXRoaXMuY2hpcFNlbGVjdGlvbkNoYW5nZXMuc3Vic2NyaWJlKCh0PT57dC5zb3VyY2Uuc2VsZWN0ZWQ/dGhpcy5fc2VsZWN0aW9uTW9kZWwuc2VsZWN0KHQuc291cmNlKTp0aGlzLl9zZWxlY3Rpb25Nb2RlbC5kZXNlbGVjdCh0LnNvdXJjZSksdGhpcy5tdWx0aXBsZXx8dGhpcy5jaGlwcy5mb3JFYWNoKCh0PT57IXRoaXMuX3NlbGVjdGlvbk1vZGVsLmlzU2VsZWN0ZWQodCkmJnQuc2VsZWN0ZWQmJnQuZGVzZWxlY3QoKX0pKSx0LmlzVXNlcklucHV0JiZ0aGlzLl9wcm9wYWdhdGVDaGFuZ2VzKCl9KSl9X2xpc3RlblRvQ2hpcHNGb2N1cygpe3RoaXMuX2NoaXBGb2N1c1N1YnNjcmlwdGlvbj10aGlzLmNoaXBGb2N1c0NoYW5nZXMuc3Vic2NyaWJlKCh0PT57bGV0IG49dGhpcy5jaGlwcy50b0FycmF5KCkuaW5kZXhPZih0LmNoaXApO3RoaXMuX2lzVmFsaWRJbmRleChuKSYmdGhpcy5fa2V5TWFuYWdlci51cGRhdGVBY3RpdmVJdGVtKG4pLHRoaXMuc3RhdGVDaGFuZ2VzLm5leHQoKX0pKSx0aGlzLl9jaGlwQmx1clN1YnNjcmlwdGlvbj10aGlzLmNoaXBCbHVyQ2hhbmdlcy5zdWJzY3JpYmUoKCgpPT57dGhpcy5fYmx1cigpLHRoaXMuc3RhdGVDaGFuZ2VzLm5leHQoKX0pKX1fbGlzdGVuVG9DaGlwc1JlbW92ZWQoKXt0aGlzLl9jaGlwUmVtb3ZlU3Vic2NyaXB0aW9uPXRoaXMuY2hpcFJlbW92ZUNoYW5nZXMuc3Vic2NyaWJlKCh0PT57Y29uc3Qgbj10LmNoaXAsZT10aGlzLmNoaXBzLnRvQXJyYXkoKS5pbmRleE9mKHQuY2hpcCk7dGhpcy5faXNWYWxpZEluZGV4KGUpJiZuLl9oYXNGb2N1cyYmKHRoaXMuX2xhc3REZXN0cm95ZWRDaGlwSW5kZXg9ZSl9KSl9X29yaWdpbmF0ZXNGcm9tQ2hpcCh0KXtsZXQgbj10LnRhcmdldDtmb3IoO24mJm4hPT10aGlzLl9lbGVtZW50UmVmLm5hdGl2ZUVsZW1lbnQ7KXtpZihuLmNsYXNzTGlzdC5jb250YWlucygibWF0LWNoaXAiKSlyZXR1cm4hMDtuPW4ucGFyZW50RWxlbWVudH1yZXR1cm4hMX1faGFzRm9jdXNlZENoaXAoKXtyZXR1cm4gdGhpcy5jaGlwcyYmdGhpcy5jaGlwcy5zb21lKCh0PT50Ll9oYXNGb2N1cykpfV9zeW5jQ2hpcHNTdGF0ZSgpe3RoaXMuY2hpcHMmJnRoaXMuY2hpcHMuZm9yRWFjaCgodD0+e3QuX2NoaXBMaXN0RGlzYWJsZWQ9dGhpcy5fZGlzYWJsZWQsdC5fY2hpcExpc3RNdWx0aXBsZT10aGlzLm11bHRpcGxlfSkpfX1xZ3QuybVmYWM9ZnVuY3Rpb24gdChuKXtyZXR1cm4gbmV3KG58fHFndCkoWmcoeHUpLFpnKFZtKSxaZyhVUyw4KSxaZyhMTCw4KSxaZyhLTCw4KSxaZyhPRSksWmcoQUYsMTApKX0scWd0Lsm1Y21wPV9vKHt0eXBlOnFndCxzZWxlY3RvcnM6W1sibWF0LWNoaXAtbGlzdCJdXSxjb250ZW50UXVlcmllczpmdW5jdGlvbiB0KG4sZSxhKXt2YXIgbzsxJm4mJkdmKGEsVmd0LCEwKSwyJm4mJlZmKG89WmYoKSkmJihlLmNoaXBzPW8pfSxob3N0QXR0cnM6WzEsIm1hdC1jaGlwLWxpc3QiXSxob3N0VmFyczoxNSxob3N0QmluZGluZ3M6ZnVuY3Rpb24gdChuLGUpezEmbiYmY3AoImZvY3VzIiwoZnVuY3Rpb24gdCgpe3JldHVybiBlLmZvY3VzKCl9KSkoImJsdXIiLChmdW5jdGlvbiB0KCl7cmV0dXJuIGUuX2JsdXIoKX0pKSgia2V5ZG93biIsKGZ1bmN0aW9uIHQobil7cmV0dXJuIGUuX2tleWRvd24obil9KSksMiZuJiYoZWIoImlkIixlLl91aWQpLE5nKCJ0YWJpbmRleCIsZS5kaXNhYmxlZD9udWxsOmUuX3RhYkluZGV4KSgiYXJpYS1kZXNjcmliZWRieSIsZS5fYXJpYURlc2NyaWJlZGJ5fHxudWxsKSgiYXJpYS1yZXF1aXJlZCIsZS5yb2xlP2UucmVxdWlyZWQ6bnVsbCkoImFyaWEtZGlzYWJsZWQiLGUuZGlzYWJsZWQudG9TdHJpbmcoKSkoImFyaWEtaW52YWxpZCIsZS5lcnJvclN0YXRlKSgiYXJpYS1tdWx0aXNlbGVjdGFibGUiLGUubXVsdGlwbGUpKCJyb2xlIixlLnJvbGUpKCJhcmlhLW9yaWVudGF0aW9uIixlLmFyaWFPcmllbnRhdGlvbiksRHAoIm1hdC1jaGlwLWxpc3QtZGlzYWJsZWQiLGUuZGlzYWJsZWQpKCJtYXQtY2hpcC1saXN0LWludmFsaWQiLGUuZXJyb3JTdGF0ZSkoIm1hdC1jaGlwLWxpc3QtcmVxdWlyZWQiLGUucmVxdWlyZWQpKX0saW5wdXRzOnthcmlhT3JpZW50YXRpb246WyJhcmlhLW9yaWVudGF0aW9uIiwiYXJpYU9yaWVudGF0aW9uIl0sbXVsdGlwbGU6Im11bHRpcGxlIixjb21wYXJlV2l0aDoiY29tcGFyZVdpdGgiLHZhbHVlOiJ2YWx1ZSIscmVxdWlyZWQ6InJlcXVpcmVkIixwbGFjZWhvbGRlcjoicGxhY2Vob2xkZXIiLGRpc2FibGVkOiJkaXNhYmxlZCIsc2VsZWN0YWJsZToic2VsZWN0YWJsZSIsdGFiSW5kZXg6InRhYkluZGV4IixlcnJvclN0YXRlTWF0Y2hlcjoiZXJyb3JTdGF0ZU1hdGNoZXIifSxvdXRwdXRzOntjaGFuZ2U6ImNoYW5nZSIsdmFsdWVDaGFuZ2U6InZhbHVlQ2hhbmdlIn0sZXhwb3J0QXM6WyJtYXRDaGlwTGlzdCJdLGZlYXR1cmVzOltNdShbe3Byb3ZpZGU6YUYsdXNlRXhpc3Rpbmc6cWd0fV0pLGhnXSxuZ0NvbnRlbnRTZWxlY3RvcnM6WyIqIl0sZGVjbHM6Mix2YXJzOjAsY29uc3RzOltbMSwibWF0LWNoaXAtbGlzdC13cmFwcGVyIl1dLHRlbXBsYXRlOmZ1bmN0aW9uIHQobixlKXsxJm4mJihicCgpLEtnKDAsImRpdiIsMCksaHAoMSksJGcoKSl9LHN0eWxlczpbJy5tYXQtY2hpcHtwb3NpdGlvbjpyZWxhdGl2ZTtib3gtc2l6aW5nOmJvcmRlci1ib3g7LXdlYmtpdC10YXAtaGlnaGxpZ2h0LWNvbG9yOnRyYW5zcGFyZW50O3RyYW5zZm9ybTp0cmFuc2xhdGVaKDApO2JvcmRlcjpub25lOy13ZWJraXQtYXBwZWFyYW5jZTpub25lOy1tb3otYXBwZWFyYW5jZTpub25lfS5tYXQtc3RhbmRhcmQtY2hpcHt0cmFuc2l0aW9uOmJveC1zaGFkb3cgMjgwbXMgY3ViaWMtYmV6aWVyKDAuNCwgMCwgMC4yLCAxKTtkaXNwbGF5OmlubGluZS1mbGV4O3BhZGRpbmc6N3B4IDEycHg7Ym9yZGVyLXJhZGl1czoxNnB4O2FsaWduLWl0ZW1zOmNlbnRlcjtjdXJzb3I6ZGVmYXVsdDttaW4taGVpZ2h0OjMycHg7aGVpZ2h0OjFweH0uX21hdC1hbmltYXRpb24tbm9vcGFibGUubWF0LXN0YW5kYXJkLWNoaXB7dHJhbnNpdGlvbjpub25lO2FuaW1hdGlvbjpub25lfS5tYXQtc3RhbmRhcmQtY2hpcCAubWF0LWNoaXAtcmVtb3ZlLm1hdC1pY29ue3dpZHRoOjE4cHg7aGVpZ2h0OjE4cHh9Lm1hdC1zdGFuZGFyZC1jaGlwOjphZnRlcnt0b3A6MDtsZWZ0OjA7cmlnaHQ6MDtib3R0b206MDtwb3NpdGlvbjphYnNvbHV0ZTtib3JkZXItcmFkaXVzOmluaGVyaXQ7b3BhY2l0eTowO2NvbnRlbnQ6IiI7cG9pbnRlci1ldmVudHM6bm9uZTt0cmFuc2l0aW9uOm9wYWNpdHkgMjAwbXMgY3ViaWMtYmV6aWVyKDAuMzUsIDAsIDAuMjUsIDEpfS5tYXQtc3RhbmRhcmQtY2hpcDpob3Zlcjo6YWZ0ZXJ7b3BhY2l0eTouMTJ9Lm1hdC1zdGFuZGFyZC1jaGlwOmZvY3Vze291dGxpbmU6bm9uZX0ubWF0LXN0YW5kYXJkLWNoaXA6Zm9jdXM6OmFmdGVye29wYWNpdHk6LjE2fS5jZGstaGlnaC1jb250cmFzdC1hY3RpdmUgLm1hdC1zdGFuZGFyZC1jaGlwe291dGxpbmU6c29saWQgMXB4fS5jZGstaGlnaC1jb250cmFzdC1hY3RpdmUgLm1hdC1zdGFuZGFyZC1jaGlwOmZvY3Vze291dGxpbmU6ZG90dGVkIDJweH0ubWF0LXN0YW5kYXJkLWNoaXAubWF0LWNoaXAtZGlzYWJsZWQ6OmFmdGVye29wYWNpdHk6MH0ubWF0LXN0YW5kYXJkLWNoaXAubWF0LWNoaXAtZGlzYWJsZWQgLm1hdC1jaGlwLXJlbW92ZSwubWF0LXN0YW5kYXJkLWNoaXAubWF0LWNoaXAtZGlzYWJsZWQgLm1hdC1jaGlwLXRyYWlsaW5nLWljb257Y3Vyc29yOmRlZmF1bHR9Lm1hdC1zdGFuZGFyZC1jaGlwLm1hdC1jaGlwLXdpdGgtdHJhaWxpbmctaWNvbi5tYXQtY2hpcC13aXRoLWF2YXRhciwubWF0LXN0YW5kYXJkLWNoaXAubWF0LWNoaXAtd2l0aC1hdmF0YXJ7cGFkZGluZy10b3A6MDtwYWRkaW5nLWJvdHRvbTowfS5tYXQtc3RhbmRhcmQtY2hpcC5tYXQtY2hpcC13aXRoLXRyYWlsaW5nLWljb24ubWF0LWNoaXAtd2l0aC1hdmF0YXJ7cGFkZGluZy1yaWdodDo4cHg7cGFkZGluZy1sZWZ0OjB9W2Rpcj1ydGxdIC5tYXQtc3RhbmRhcmQtY2hpcC5tYXQtY2hpcC13aXRoLXRyYWlsaW5nLWljb24ubWF0LWNoaXAtd2l0aC1hdmF0YXJ7cGFkZGluZy1sZWZ0OjhweDtwYWRkaW5nLXJpZ2h0OjB9Lm1hdC1zdGFuZGFyZC1jaGlwLm1hdC1jaGlwLXdpdGgtdHJhaWxpbmctaWNvbntwYWRkaW5nLXRvcDo3cHg7cGFkZGluZy1ib3R0b206N3B4O3BhZGRpbmctcmlnaHQ6OHB4O3BhZGRpbmctbGVmdDoxMnB4fVtkaXI9cnRsXSAubWF0LXN0YW5kYXJkLWNoaXAubWF0LWNoaXAtd2l0aC10cmFpbGluZy1pY29ue3BhZGRpbmctbGVmdDo4cHg7cGFkZGluZy1yaWdodDoxMnB4fS5tYXQtc3RhbmRhcmQtY2hpcC5tYXQtY2hpcC13aXRoLWF2YXRhcntwYWRkaW5nLWxlZnQ6MDtwYWRkaW5nLXJpZ2h0OjEycHh9W2Rpcj1ydGxdIC5tYXQtc3RhbmRhcmQtY2hpcC5tYXQtY2hpcC13aXRoLWF2YXRhcntwYWRkaW5nLXJpZ2h0OjA7cGFkZGluZy1sZWZ0OjEycHh9Lm1hdC1zdGFuZGFyZC1jaGlwIC5tYXQtY2hpcC1hdmF0YXJ7d2lkdGg6MjRweDtoZWlnaHQ6MjRweDttYXJnaW4tcmlnaHQ6OHB4O21hcmdpbi1sZWZ0OjRweH1bZGlyPXJ0bF0gLm1hdC1zdGFuZGFyZC1jaGlwIC5tYXQtY2hpcC1hdmF0YXJ7bWFyZ2luLWxlZnQ6OHB4O21hcmdpbi1yaWdodDo0cHh9Lm1hdC1zdGFuZGFyZC1jaGlwIC5tYXQtY2hpcC1yZW1vdmUsLm1hdC1zdGFuZGFyZC1jaGlwIC5tYXQtY2hpcC10cmFpbGluZy1pY29ue3dpZHRoOjE4cHg7aGVpZ2h0OjE4cHg7Y3Vyc29yOnBvaW50ZXJ9Lm1hdC1zdGFuZGFyZC1jaGlwIC5tYXQtY2hpcC1yZW1vdmUsLm1hdC1zdGFuZGFyZC1jaGlwIC5tYXQtY2hpcC10cmFpbGluZy1pY29ue21hcmdpbi1sZWZ0OjhweDttYXJnaW4tcmlnaHQ6MH1bZGlyPXJ0bF0gLm1hdC1zdGFuZGFyZC1jaGlwIC5tYXQtY2hpcC1yZW1vdmUsW2Rpcj1ydGxdIC5tYXQtc3RhbmRhcmQtY2hpcCAubWF0LWNoaXAtdHJhaWxpbmctaWNvbnttYXJnaW4tcmlnaHQ6OHB4O21hcmdpbi1sZWZ0OjB9Lm1hdC1jaGlwLXJpcHBsZXt0b3A6MDtsZWZ0OjA7cmlnaHQ6MDtib3R0b206MDtwb3NpdGlvbjphYnNvbHV0ZTtwb2ludGVyLWV2ZW50czpub25lO2JvcmRlci1yYWRpdXM6aW5oZXJpdDtvdmVyZmxvdzpoaWRkZW59Lm1hdC1jaGlwLWxpc3Qtd3JhcHBlcntkaXNwbGF5OmZsZXg7ZmxleC1kaXJlY3Rpb246cm93O2ZsZXgtd3JhcDp3cmFwO2FsaWduLWl0ZW1zOmNlbnRlcjttYXJnaW46LTRweH0ubWF0LWNoaXAtbGlzdC13cmFwcGVyIGlucHV0Lm1hdC1pbnB1dC1lbGVtZW50LC5tYXQtY2hpcC1saXN0LXdyYXBwZXIgLm1hdC1zdGFuZGFyZC1jaGlwe21hcmdpbjo0cHh9Lm1hdC1jaGlwLWxpc3Qtc3RhY2tlZCAubWF0LWNoaXAtbGlzdC13cmFwcGVye2ZsZXgtZGlyZWN0aW9uOmNvbHVtbjthbGlnbi1pdGVtczpmbGV4LXN0YXJ0fS5tYXQtY2hpcC1saXN0LXN0YWNrZWQgLm1hdC1jaGlwLWxpc3Qtd3JhcHBlciAubWF0LXN0YW5kYXJkLWNoaXB7d2lkdGg6MTAwJX0ubWF0LWNoaXAtYXZhdGFye2JvcmRlci1yYWRpdXM6NTAlO2p1c3RpZnktY29udGVudDpjZW50ZXI7YWxpZ24taXRlbXM6Y2VudGVyO2Rpc3BsYXk6ZmxleDtvdmVyZmxvdzpoaWRkZW47b2JqZWN0LWZpdDpjb3Zlcn1pbnB1dC5tYXQtY2hpcC1pbnB1dHt3aWR0aDoxNTBweDttYXJnaW46NHB4O2ZsZXg6MSAwIDE1MHB4fVxuJ10sZW5jYXBzdWxhdGlvbjoyLGNoYW5nZURldGVjdGlvbjowfSkscWd0LmN0b3JQYXJhbWV0ZXJzPSgpPT5be3R5cGU6eHV9LHt0eXBlOlZtfSx7dHlwZTpVUyxkZWNvcmF0b3JzOlt7dHlwZTpOZX1dfSx7dHlwZTpMTCxkZWNvcmF0b3JzOlt7dHlwZTpOZX1dfSx7dHlwZTpLTCxkZWNvcmF0b3JzOlt7dHlwZTpOZX1dfSx7dHlwZTpPRX0se3R5cGU6QUYsZGVjb3JhdG9yczpbe3R5cGU6TmV9LHt0eXBlOkZlfV19XSxxZ3QucHJvcERlY29yYXRvcnM9e2Vycm9yU3RhdGVNYXRjaGVyOlt7dHlwZTpmX31dLG11bHRpcGxlOlt7dHlwZTpmX31dLGNvbXBhcmVXaXRoOlt7dHlwZTpmX31dLHZhbHVlOlt7dHlwZTpmX31dLHJlcXVpcmVkOlt7dHlwZTpmX31dLHBsYWNlaG9sZGVyOlt7dHlwZTpmX31dLGRpc2FibGVkOlt7dHlwZTpmX31dLGFyaWFPcmllbnRhdGlvbjpbe3R5cGU6Zl8sYXJnczpbImFyaWEtb3JpZW50YXRpb24iXX1dLHNlbGVjdGFibGU6W3t0eXBlOmZffV0sdGFiSW5kZXg6W3t0eXBlOmZffV0sY2hhbmdlOlt7dHlwZTpoX31dLHZhbHVlQ2hhbmdlOlt7dHlwZTpoX31dLGNoaXBzOlt7dHlwZTpxZCxhcmdzOltWZ3Qse2Rlc2NlbmRhbnRzOiEwfV19XX07Ci8qKgogICAgICogQGxpY2Vuc2UKICAgICAqIENvcHlyaWdodCBHb29nbGUgTExDIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCiAgICAgKgogICAgICogVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYW4gTUlULXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKICAgICAqIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUgYXQgaHR0cHM6Ly9hbmd1bGFyLmlvL2xpY2Vuc2UKICAgICAqLwpsZXQgWmd0PTA7Y2xhc3MgWGd0e2NvbnN0cnVjdG9yKHQsbil7dGhpcy5fZWxlbWVudFJlZj10LHRoaXMuX2RlZmF1bHRPcHRpb25zPW4sdGhpcy5mb2N1c2VkPSExLHRoaXMuX2FkZE9uQmx1cj0hMSx0aGlzLnNlcGFyYXRvcktleUNvZGVzPXRoaXMuX2RlZmF1bHRPcHRpb25zLnNlcGFyYXRvcktleUNvZGVzLHRoaXMuY2hpcEVuZD1uZXcgRWYsdGhpcy5wbGFjZWhvbGRlcj0iIix0aGlzLmlkPSJtYXQtY2hpcC1saXN0LWlucHV0LSIrWmd0KyssdGhpcy5fZGlzYWJsZWQ9ITEsdGhpcy5faW5wdXRFbGVtZW50PXRoaXMuX2VsZW1lbnRSZWYubmF0aXZlRWxlbWVudH1zZXQgY2hpcExpc3QodCl7dCYmKHRoaXMuX2NoaXBMaXN0PXQsdGhpcy5fY2hpcExpc3QucmVnaXN0ZXJJbnB1dCh0aGlzKSl9Z2V0IGFkZE9uQmx1cigpe3JldHVybiB0aGlzLl9hZGRPbkJsdXJ9c2V0IGFkZE9uQmx1cih0KXt0aGlzLl9hZGRPbkJsdXI9R3codCl9Z2V0IGRpc2FibGVkKCl7cmV0dXJuIHRoaXMuX2Rpc2FibGVkfHx0aGlzLl9jaGlwTGlzdCYmdGhpcy5fY2hpcExpc3QuZGlzYWJsZWR9c2V0IGRpc2FibGVkKHQpe3RoaXMuX2Rpc2FibGVkPUd3KHQpfWdldCBlbXB0eSgpe3JldHVybiF0aGlzLl9pbnB1dEVsZW1lbnQudmFsdWV9bmdPbkNoYW5nZXMoKXt0aGlzLl9jaGlwTGlzdC5zdGF0ZUNoYW5nZXMubmV4dCgpfV9rZXlkb3duKHQpe3QmJjk9PT10LmtleUNvZGUmJiFXdyh0LCJzaGlmdEtleSIpJiZ0aGlzLl9jaGlwTGlzdC5fYWxsb3dGb2N1c0VzY2FwZSgpLHRoaXMuX2VtaXRDaGlwRW5kKHQpfV9ibHVyKCl7dGhpcy5hZGRPbkJsdXImJnRoaXMuX2VtaXRDaGlwRW5kKCksdGhpcy5mb2N1c2VkPSExLHRoaXMuX2NoaXBMaXN0LmZvY3VzZWR8fHRoaXMuX2NoaXBMaXN0Ll9ibHVyKCksdGhpcy5fY2hpcExpc3Quc3RhdGVDaGFuZ2VzLm5leHQoKX1fZm9jdXMoKXt0aGlzLmZvY3VzZWQ9ITAsdGhpcy5fY2hpcExpc3Quc3RhdGVDaGFuZ2VzLm5leHQoKX1fZW1pdENoaXBFbmQodCl7IXRoaXMuX2lucHV0RWxlbWVudC52YWx1ZSYmdCYmdGhpcy5fY2hpcExpc3QuX2tleWRvd24odCksdCYmIXRoaXMuX2lzU2VwYXJhdG9yS2V5KHQpfHwodGhpcy5jaGlwRW5kLmVtaXQoe2lucHV0OnRoaXMuX2lucHV0RWxlbWVudCx2YWx1ZTp0aGlzLl9pbnB1dEVsZW1lbnQudmFsdWV9KSx0JiZ0LnByZXZlbnREZWZhdWx0KCkpfV9vbklucHV0KCl7dGhpcy5fY2hpcExpc3Quc3RhdGVDaGFuZ2VzLm5leHQoKX1mb2N1cyh0KXt0aGlzLl9pbnB1dEVsZW1lbnQuZm9jdXModCl9X2lzU2VwYXJhdG9yS2V5KHQpe3JldHVybiFXdyh0KSYmbmV3IFNldCh0aGlzLnNlcGFyYXRvcktleUNvZGVzKS5oYXModC5rZXlDb2RlKX19WGd0Lsm1ZmFjPWZ1bmN0aW9uIHQobil7cmV0dXJuIG5ldyhufHxYZ3QpKFpnKHh1KSxaZyhVZ3QpKX0sWGd0Lsm1ZGlyPXZvKHt0eXBlOlhndCxzZWxlY3RvcnM6W1siaW5wdXQiLCJtYXRDaGlwSW5wdXRGb3IiLCIiXV0saG9zdEF0dHJzOlsxLCJtYXQtY2hpcC1pbnB1dCIsIm1hdC1pbnB1dC1lbGVtZW50Il0saG9zdFZhcnM6NSxob3N0QmluZGluZ3M6ZnVuY3Rpb24gdChuLGUpezEmbiYmY3AoImtleWRvd24iLChmdW5jdGlvbiB0KG4pe3JldHVybiBlLl9rZXlkb3duKG4pfSkpKCJibHVyIiwoZnVuY3Rpb24gdCgpe3JldHVybiBlLl9ibHVyKCl9KSkoImZvY3VzIiwoZnVuY3Rpb24gdCgpe3JldHVybiBlLl9mb2N1cygpfSkpKCJpbnB1dCIsKGZ1bmN0aW9uIHQoKXtyZXR1cm4gZS5fb25JbnB1dCgpfSkpLDImbiYmKGViKCJpZCIsZS5pZCksTmcoImRpc2FibGVkIixlLmRpc2FibGVkfHxudWxsKSgicGxhY2Vob2xkZXIiLGUucGxhY2Vob2xkZXJ8fG51bGwpKCJhcmlhLWludmFsaWQiLGUuX2NoaXBMaXN0JiZlLl9jaGlwTGlzdC5uZ0NvbnRyb2w/ZS5fY2hpcExpc3QubmdDb250cm9sLmludmFsaWQ6bnVsbCkoImFyaWEtcmVxdWlyZWQiLGUuX2NoaXBMaXN0JiZlLl9jaGlwTGlzdC5yZXF1aXJlZHx8bnVsbCkpfSxpbnB1dHM6e3NlcGFyYXRvcktleUNvZGVzOlsibWF0Q2hpcElucHV0U2VwYXJhdG9yS2V5Q29kZXMiLCJzZXBhcmF0b3JLZXlDb2RlcyJdLHBsYWNlaG9sZGVyOiJwbGFjZWhvbGRlciIsaWQ6ImlkIixjaGlwTGlzdDpbIm1hdENoaXBJbnB1dEZvciIsImNoaXBMaXN0Il0sYWRkT25CbHVyOlsibWF0Q2hpcElucHV0QWRkT25CbHVyIiwiYWRkT25CbHVyIl0sZGlzYWJsZWQ6ImRpc2FibGVkIn0sb3V0cHV0czp7Y2hpcEVuZDoibWF0Q2hpcElucHV0VG9rZW5FbmQifSxleHBvcnRBczpbIm1hdENoaXBJbnB1dCIsIm1hdENoaXBJbnB1dEZvciJdLGZlYXR1cmVzOltwcl19KSxYZ3QuY3RvclBhcmFtZXRlcnM9KCk9Plt7dHlwZTp4dX0se3R5cGU6dm9pZCAwLGRlY29yYXRvcnM6W3t0eXBlOkllLGFyZ3M6W1VndF19XX1dLFhndC5wcm9wRGVjb3JhdG9ycz17Y2hpcExpc3Q6W3t0eXBlOmZfLGFyZ3M6WyJtYXRDaGlwSW5wdXRGb3IiXX1dLGFkZE9uQmx1cjpbe3R5cGU6Zl8sYXJnczpbIm1hdENoaXBJbnB1dEFkZE9uQmx1ciJdfV0sc2VwYXJhdG9yS2V5Q29kZXM6W3t0eXBlOmZfLGFyZ3M6WyJtYXRDaGlwSW5wdXRTZXBhcmF0b3JLZXlDb2RlcyJdfV0sY2hpcEVuZDpbe3R5cGU6aF8sYXJnczpbIm1hdENoaXBJbnB1dFRva2VuRW5kIl19XSxwbGFjZWhvbGRlcjpbe3R5cGU6Zl99XSxpZDpbe3R5cGU6Zl99XSxkaXNhYmxlZDpbe3R5cGU6Zl99XX07Y29uc3QgSmd0PXtzZXBhcmF0b3JLZXlDb2RlczpbSHddfTtjbGFzcyBRZ3R7fVFndC7JtW1vZD14byh7dHlwZTpRZ3R9KSxRZ3QuybVpbmo9R2Uoe2ZhY3Rvcnk6ZnVuY3Rpb24gdChuKXtyZXR1cm4gbmV3KG58fFFndCl9LHByb3ZpZGVyczpbT0Use3Byb3ZpZGU6VWd0LHVzZVZhbHVlOkpndH1dfSksKCJ1bmRlZmluZWQiPT10eXBlb2YgbmdKaXRNb2RlfHxuZ0ppdE1vZGUpJiZ5byhRZ3Qse2RlY2xhcmF0aW9uczpbcWd0LFZndCxYZ3Qsamd0LEhndCxCZ3RdLGV4cG9ydHM6W3FndCxWZ3QsWGd0LGpndCxIZ3QsQmd0XX0pO2NvbnN0IEtndD1mdW5jdGlvbih0LG4pe3JldHVybnsiZW1iZWRkaW5nLXNlbGVjdGVkIjp0LCJlbWJlZGRpbmctdW5zZWxlY3RlZCI6bn19O2Z1bmN0aW9uICRndCh0LG4pe2lmKDEmdCl7Y29uc3QgdD1vcCgpO0tnKDAsIm1hdC1pY29uIiw1KSxjcCgiY2xpY2siLChmdW5jdGlvbiBuKCl7anIodCk7Y29uc3QgZT1ncCgpO3JldHVybiBlLm9uU2VsZWN0LmVtaXQoZS5tZXRyaWMpfSkpLCRnKCl9aWYoMiZ0KXtjb25zdCB0PWdwKCk7SmcoIm5nQ2xhc3MiLGZmKDEsS2d0LHQuZW1iZWRkaW5nc01ldHJpYz09PXQubWV0cmljLHQuZW1iZWRkaW5nc01ldHJpYyE9PXQubWV0cmljKSl9fWNvbnN0IHRwdD1mdW5jdGlvbih0KXtyZXR1cm57d2lkdGg6dH19LG5wdD1mdW5jdGlvbih0KXtyZXR1cm57InZhbHVlLWludmFsaWQiOnR9fTtjbGFzcyBlcHR7Y29uc3RydWN0b3IoKXt0aGlzLm9uUmVtb3ZlPW5ldyBFZix0aGlzLm9uU2VsZWN0PW5ldyBFZix0aGlzLm9uRmlsdGVyQ2hhbmdlPW5ldyBFZix0aGlzLmZvY3VzTWluPSExLHRoaXMuZm9jdXNNYXg9ITEsdGhpcy5uZ1Vuc3Vic2NyaWJlPW5ldyB4fW5nT25Jbml0KCl7dGhpcy5taW5Gb3JtQ29udHJvbD1uZXcgVEwodGhpcy5maWx0ZXJWYWx1ZXMubWluLFtIRi5yZXF1aXJlZCxIRi5taW4oLTEpLEhGLm1heCgxKSx0aGlzLm1pblZhbHVlVmFsaWRhdG9yLmJpbmQodGhpcyldKSx0aGlzLm1heEZvcm1Db250cm9sPW5ldyBUTCh0aGlzLmZpbHRlclZhbHVlcy5tYXgsW0hGLnJlcXVpcmVkLEhGLm1pbigtMSksSEYubWF4KDEpLHRoaXMubWF4VmFsdWVWYWxpZGF0b3IuYmluZCh0aGlzKV0pLHRoaXMubWluRm9ybUNvbnRyb2wudmFsdWVDaGFuZ2VzLnBpcGUoZGUodGhpcy5uZ1Vuc3Vic2NyaWJlKSkuc3Vic2NyaWJlKCgoKT0+e3RoaXMubWluRm9ybUNvbnRyb2wudmFsaWQmJnRoaXMubWF4Rm9ybUNvbnRyb2wudmFsaWQmJnRoaXMub25GaWx0ZXJDaGFuZ2UuZW1pdCh7bWluOnBhcnNlRmxvYXQodGhpcy5taW5Gb3JtQ29udHJvbC52YWx1ZSksbWF4OnBhcnNlRmxvYXQodGhpcy5tYXhGb3JtQ29udHJvbC52YWx1ZSl9KX0pKSx0aGlzLm1heEZvcm1Db250cm9sLnZhbHVlQ2hhbmdlcy5waXBlKGRlKHRoaXMubmdVbnN1YnNjcmliZSkpLnN1YnNjcmliZSgoKCk9Pnt0aGlzLm1pbkZvcm1Db250cm9sLnZhbGlkJiZ0aGlzLm1heEZvcm1Db250cm9sLnZhbGlkJiZ0aGlzLm9uRmlsdGVyQ2hhbmdlLmVtaXQoe21pbjpwYXJzZUZsb2F0KHRoaXMubWluRm9ybUNvbnRyb2wudmFsdWUpLG1heDpwYXJzZUZsb2F0KHRoaXMubWF4Rm9ybUNvbnRyb2wudmFsdWUpfSl9KSl9bmdPbkNoYW5nZXModCl7dGhpcy5taW5Gb3JtQ29udHJvbCYmdGhpcy5tYXhGb3JtQ29udHJvbCYmKHRoaXMubWluRm9ybUNvbnRyb2wuc2V0VmFsdWUodGhpcy5maWx0ZXJWYWx1ZXMubWluLHtlbWl0RXZlbnQ6ITF9KSx0aGlzLm1heEZvcm1Db250cm9sLnNldFZhbHVlKHRoaXMuZmlsdGVyVmFsdWVzLm1heCx7ZW1pdEV2ZW50OiExfSkpfW5nT25EZXN0cm95KCl7dGhpcy5uZ1Vuc3Vic2NyaWJlLm5leHQoKSx0aGlzLm5nVW5zdWJzY3JpYmUuY29tcGxldGUoKX1taW5WYWx1ZVZhbGlkYXRvcih0KXtyZXR1cm4gdGhpcy5tYXhGb3JtQ29udHJvbCYmIk5hTiIhPT10LnZhbHVlP2lzTmFOKHBhcnNlRmxvYXQodC52YWx1ZSkpP3t2YWx1ZToidGhlIHN0cmluZyB5b3UgZW50ZXJlZCBpcyBuZWl0aGVyIE5hTiBub3IgYSBudW1iZXIifTpwYXJzZUZsb2F0KHQudmFsdWUpPnBhcnNlRmxvYXQodGhpcy5tYXhGb3JtQ29udHJvbC52YWx1ZSk/e3ZhbHVlOiJ0aGUgbnVtYmVyIHlvdSBlbnRlcmVkIGlzIGxhcmdlciB0aGFuIHRoZSBtYXggdmFsdWUifTpudWxsOm51bGx9bWF4VmFsdWVWYWxpZGF0b3IodCl7cmV0dXJuIHRoaXMubWluRm9ybUNvbnRyb2w/Ik5hTiI9PT10aGlzLm1pbkZvcm1Db250cm9sLnZhbHVlJiYiTmFOIj09PXQudmFsdWU/bnVsbDppc05hTihwYXJzZUZsb2F0KHQudmFsdWUpKT97dmFsdWU6InRoZSBzdHJpbmcgeW91IGVudGVyZWQgaXMgbmVpdGhlciBOYU4gbm9yIGEgbnVtYmVyIn06dC52YWx1ZTx0aGlzLm1pbkZvcm1Db250cm9sLnZhbHVlP3t2YWx1ZToidGhlIG51bWJlciB5b3UgZW50ZXJlZCBpcyBzbWFsbGVyIHRoYW4gdGhlIG1pbiB2YWx1ZSJ9Om51bGw6bnVsbH1nZXRFcnJvckRlc2NyaXB0aW9uKHQpe2lmKHQpe2NvbnN0IG49T2JqZWN0LmtleXModClbMF07cmV0dXJuInJlcXVpcmVkIj09PW4/InlvdSBkaWQgbm90IGVudGVyIGFueXRoaW5nIjoibWluIj09PW4/InRoZSBudW1iZXIgbXVzdCBiZSBhdCBsZWFzdCAtMS4wIjoibWF4Ij09PW4/InRoZSBudW1iZXIgaXMgYmlnZ2VyIHRoYW4gMS4wIjp0W25dfXJldHVybiIifX1lcHQuybVmYWM9ZnVuY3Rpb24gdChuKXtyZXR1cm4gbmV3KG58fGVwdCl9LGVwdC7JtWNtcD1fbyh7dHlwZTplcHQsc2VsZWN0b3JzOltbIm1ldHJpYy1hcml0aG1ldGljLWVsZW1lbnQtY29tcG9uZW50Il1dLGlucHV0czp7bWV0cmljOiJtZXRyaWMiLGZpbHRlclZhbHVlczoiZmlsdGVyVmFsdWVzIixoYXNFbWJlZGRpbmdzRGF0YToiaGFzRW1iZWRkaW5nc0RhdGEiLGVtYmVkZGluZ3NNZXRyaWM6ImVtYmVkZGluZ3NNZXRyaWMifSxvdXRwdXRzOntvblJlbW92ZToib25SZW1vdmUiLG9uU2VsZWN0OiJvblNlbGVjdCIsb25GaWx0ZXJDaGFuZ2U6Im9uRmlsdGVyQ2hhbmdlIn0sZmVhdHVyZXM6W3ByXSxkZWNsczoxMCx2YXJzOjIyLGNvbnN0czpbWzEsImZpbHRlci1jaGlwIiwzLCJyZW1vdmVkIl0sWyJjbGFzcyIsImVtYmVkZGluZ3MtYnV0dG9uIiwic3ZnSWNvbiIsImdyb3VwX3dvcmtfMjRweCIsMywibmdDbGFzcyIsImNsaWNrIiw0LCJuZ0lmIl0sWzEsIm1ldHJpYy1hcml0aG1ldGljLWVsZW1lbnQtcmFuZ2UiLDMsImtleWRvd24iXSxbIm1hdElucHV0IiwiIiwxLCJpbnB1dC1maWVsZCIsMywidmFsdWUiLCJtYXRUb29sdGlwIiwibWF0VG9vbHRpcERpc2FibGVkIiwibmdTdHlsZSIsIm5nQ2xhc3MiLCJmb3JtQ29udHJvbCIsImZvY3VzIiwiZm9jdXNvdXQiXSxbIm1hdENoaXBSZW1vdmUiLCIiLCJzdmdJY29uIiwiY2FuY2VsXzI0cHgiXSxbInN2Z0ljb24iLCJncm91cF93b3JrXzI0cHgiLDEsImVtYmVkZGluZ3MtYnV0dG9uIiwzLCJuZ0NsYXNzIiwiY2xpY2siXV0sdGVtcGxhdGU6ZnVuY3Rpb24gdChuLGUpezEmbiYmKEtnKDAsIm1hdC1jaGlwIiwwKSxjcCgicmVtb3ZlZCIsKGZ1bmN0aW9uIHQoKXtyZXR1cm4gZS5vblJlbW92ZS5lbWl0KGUubWV0cmljKX0pKSxZZygxLCRndCwxLDQsIm1hdC1pY29uIiwxKSxKcCgyKSxLZygzLCJkaXYiLDIpLGNwKCJrZXlkb3duIiwoZnVuY3Rpb24gdChuKXtyZXR1cm4gbi5zdG9wUHJvcGFnYXRpb24oKX0pKSxKcCg0LCIgWyAiKSxLZyg1LCJpbnB1dCIsMyksY3AoImZvY3VzIiwoZnVuY3Rpb24gdCgpe3JldHVybiBlLmZvY3VzTWluPSEwfSkpKCJmb2N1c291dCIsKGZ1bmN0aW9uIHQoKXtyZXR1cm4gZS5mb2N1c01pbj0hMX0pKSwkZygpLEpwKDYsIiA7ICIpLEtnKDcsImlucHV0IiwzKSxjcCgiZm9jdXMiLChmdW5jdGlvbiB0KCl7cmV0dXJuIGUuZm9jdXNNYXg9ITB9KSkoImZvY3Vzb3V0IiwoZnVuY3Rpb24gdCgpe3JldHVybiBlLmZvY3VzTWF4PSExfSkpLCRnKCksSnAoOCwiIF0gIiksJGcoKSx0cCg5LCJtYXQtaWNvbiIsNCksJGcoKSksMiZuJiYod3MoMSksSmcoIm5nSWYiLGUuaGFzRW1iZWRkaW5nc0RhdGEpLHdzKDEpLEtwKCIgIixlLm1ldHJpYywiICIpLHdzKDMpLEpnKCJ2YWx1ZSIsZS5maWx0ZXJWYWx1ZXMubWluKSgibWF0VG9vbHRpcCIsZS5nZXRFcnJvckRlc2NyaXB0aW9uKGUubWluRm9ybUNvbnRyb2wuZXJyb3JzKSkoIm1hdFRvb2x0aXBEaXNhYmxlZCIsIWUubWluRm9ybUNvbnRyb2wuaW52YWxpZCkoIm5nU3R5bGUiLHVmKDE0LHRwdCxlLmZvY3VzTWluPyIxMDBweCI6ZS5taW5Gb3JtQ29udHJvbC52YWx1ZS50b1N0cmluZygpLmxlbmd0aCsiY2giKSkoIm5nQ2xhc3MiLHVmKDE2LG5wdCwhZS5taW5Gb3JtQ29udHJvbC52YWxpZCkpKCJmb3JtQ29udHJvbCIsZS5taW5Gb3JtQ29udHJvbCksd3MoMiksSmcoInZhbHVlIixlLmZpbHRlclZhbHVlcy5tYXgpKCJtYXRUb29sdGlwIixlLmdldEVycm9yRGVzY3JpcHRpb24oZS5tYXhGb3JtQ29udHJvbC5lcnJvcnMpKSgibWF0VG9vbHRpcERpc2FibGVkIiwhZS5tYXhGb3JtQ29udHJvbC5pbnZhbGlkKSgibmdTdHlsZSIsdWYoMTgsdHB0LGUuZm9jdXNNYXg/IjEwMHB4IjplLm1heEZvcm1Db250cm9sLnZhbHVlLnRvU3RyaW5nKCkubGVuZ3RoKyJjaCIpKSgibmdDbGFzcyIsdWYoMjAsbnB0LCFlLm1heEZvcm1Db250cm9sLnZhbGlkKSkoImZvcm1Db250cm9sIixlLm1heEZvcm1Db250cm9sKSl9LGRpcmVjdGl2ZXM6W1ZndCxXTSxrRixZcSwkTSxITSxSRixKTCxCQixqZ3RdLHN0eWxlczpbJy5tYXQtYmFkZ2UtY29udGVudFtfbmdjb250ZW50LSVDT01QJV17Zm9udC13ZWlnaHQ6NjAwO2ZvbnQtc2l6ZToxMnB4O2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZn0ubWF0LWJhZGdlLXNtYWxsW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtYmFkZ2UtY29udGVudFtfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjlweH0ubWF0LWJhZGdlLWxhcmdlW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtYmFkZ2UtY29udGVudFtfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjI0cHh9Lm1hdC1oMVtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtaGVhZGxpbmVbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXR5cG9ncmFwaHlbX25nY29udGVudC0lQ09NUCVdICAgaDFbX25nY29udGVudC0lQ09NUCVde2ZvbnQ6NDAwIDI0cHgvMzJweCBSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7bGV0dGVyLXNwYWNpbmc6bm9ybWFsO21hcmdpbjowIDAgMTZweH0ubWF0LWgyW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10aXRsZVtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdHlwb2dyYXBoeVtfbmdjb250ZW50LSVDT01QJV0gICBoMltfbmdjb250ZW50LSVDT01QJV17Zm9udDo1MDAgMjBweC8zMnB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtsZXR0ZXItc3BhY2luZzpub3JtYWw7bWFyZ2luOjAgMCAxNnB4fS5tYXQtaDNbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXN1YmhlYWRpbmctMltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdHlwb2dyYXBoeVtfbmdjb250ZW50LSVDT01QJV0gICBoM1tfbmdjb250ZW50LSVDT01QJV17Zm9udDo0MDAgMTZweC8yOHB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtsZXR0ZXItc3BhY2luZzpub3JtYWw7bWFyZ2luOjAgMCAxNnB4fS5tYXQtaDRbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXN1YmhlYWRpbmctMVtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdHlwb2dyYXBoeVtfbmdjb250ZW50LSVDT01QJV0gICBoNFtfbmdjb250ZW50LSVDT01QJV17Zm9udDo0MDAgMTVweC8yNHB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtsZXR0ZXItc3BhY2luZzpub3JtYWw7bWFyZ2luOjAgMCAxNnB4fS5tYXQtaDVbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXR5cG9ncmFwaHlbX25nY29udGVudC0lQ09NUCVdICAgaDVbX25nY29udGVudC0lQ09NUCVde2ZvbnQ6NDAwIGNhbGMoMTRweCAqIDAuODMpLzIwcHggUm9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO21hcmdpbjowIDAgMTJweH0ubWF0LWg2W19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10eXBvZ3JhcGh5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIGg2W19uZ2NvbnRlbnQtJUNPTVAlXXtmb250OjQwMCBjYWxjKDE0cHggKiAwLjY3KS8yMHB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjttYXJnaW46MCAwIDEycHh9Lm1hdC1ib2R5LXN0cm9uZ1tfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtYm9keS0yW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250OjUwMCAxNHB4LzI0cHggUm9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2xldHRlci1zcGFjaW5nOm5vcm1hbH0ubWF0LWJvZHlbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWJvZHktMVtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdHlwb2dyYXBoeVtfbmdjb250ZW50LSVDT01QJV17Zm9udDo0MDAgMTRweC8yMHB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtsZXR0ZXItc3BhY2luZzpub3JtYWx9Lm1hdC1ib2R5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIHBbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWJvZHktMVtfbmdjb250ZW50LSVDT01QJV0gICBwW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10eXBvZ3JhcGh5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIHBbX25nY29udGVudC0lQ09NUCVde21hcmdpbjowIDAgMTJweH0ubWF0LXNtYWxsW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1jYXB0aW9uW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250OjQwMCAxMnB4LzIwcHggUm9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2xldHRlci1zcGFjaW5nOm5vcm1hbH0ubWF0LWRpc3BsYXktNFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdHlwb2dyYXBoeVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWRpc3BsYXktNFtfbmdjb250ZW50LSVDT01QJV17Zm9udDozMDAgMTEycHgvMTEycHggUm9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2xldHRlci1zcGFjaW5nOi0wLjA1ZW07bWFyZ2luOjAgMCA1NnB4fS5tYXQtZGlzcGxheS0zW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10eXBvZ3JhcGh5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZGlzcGxheS0zW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250OjQwMCA1NnB4LzU2cHggUm9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2xldHRlci1zcGFjaW5nOi0wLjAyZW07bWFyZ2luOjAgMCA2NHB4fS5tYXQtZGlzcGxheS0yW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10eXBvZ3JhcGh5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZGlzcGxheS0yW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250OjQwMCA0NXB4LzQ4cHggUm9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2xldHRlci1zcGFjaW5nOi0wLjAwNWVtO21hcmdpbjowIDAgNjRweH0ubWF0LWRpc3BsYXktMVtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdHlwb2dyYXBoeVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWRpc3BsYXktMVtfbmdjb250ZW50LSVDT01QJV17Zm9udDo0MDAgMzRweC80MHB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtsZXR0ZXItc3BhY2luZzpub3JtYWw7bWFyZ2luOjAgMCA2NHB4fS5tYXQtYm90dG9tLXNoZWV0LWNvbnRhaW5lcltfbmdjb250ZW50LSVDT01QJV17Zm9udDo0MDAgMTRweC8yMHB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtsZXR0ZXItc3BhY2luZzpub3JtYWx9Lm1hdC1idXR0b25bX25nY29udGVudC0lQ09NUCVdLCAubWF0LXJhaXNlZC1idXR0b25bX25nY29udGVudC0lQ09NUCVdLCAubWF0LWljb24tYnV0dG9uW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1zdHJva2VkLWJ1dHRvbltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtZmxhdC1idXR0b25bX25nY29udGVudC0lQ09NUCVdLCAubWF0LWZhYltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtbWluaS1mYWJbX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtmb250LXNpemU6MTRweDtmb250LXdlaWdodDo1MDB9Lm1hdC1idXR0b24tdG9nZ2xlW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWZ9Lm1hdC1jYXJkW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWZ9Lm1hdC1jYXJkLXRpdGxlW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MjRweDtmb250LXdlaWdodDo1MDB9Lm1hdC1jYXJkLWhlYWRlcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWNhcmQtdGl0bGVbX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToyMHB4fS5tYXQtY2FyZC1zdWJ0aXRsZVtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtY2FyZC1jb250ZW50W19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MTRweH0ubWF0LWNoZWNrYm94W19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWZ9Lm1hdC1jaGVja2JveC1sYXlvdXRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1jaGVja2JveC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17bGluZS1oZWlnaHQ6MjRweH0ubWF0LWNoaXBbX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToxNHB4O2ZvbnQtd2VpZ2h0OjUwMH0ubWF0LWNoaXBbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1jaGlwLXRyYWlsaW5nLWljb24ubWF0LWljb25bX25nY29udGVudC0lQ09NUCVdLCAubWF0LWNoaXBbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1jaGlwLXJlbW92ZS5tYXQtaWNvbltfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjE4cHh9Lm1hdC10YWJsZVtfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmfS5tYXQtaGVhZGVyLWNlbGxbX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToxMnB4O2ZvbnQtd2VpZ2h0OjUwMH0ubWF0LWNlbGxbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWZvb3Rlci1jZWxsW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MTRweH0ubWF0LWNhbGVuZGFyW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWZ9Lm1hdC1jYWxlbmRhci1ib2R5W19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MTNweH0ubWF0LWNhbGVuZGFyLWJvZHktbGFiZWxbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWNhbGVuZGFyLXBlcmlvZC1idXR0b25bX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToxNHB4O2ZvbnQtd2VpZ2h0OjUwMH0ubWF0LWNhbGVuZGFyLXRhYmxlLWhlYWRlcltfbmdjb250ZW50LSVDT01QJV0gICB0aFtfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjExcHg7Zm9udC13ZWlnaHQ6NDAwfS5tYXQtZGlhbG9nLXRpdGxlW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250OjUwMCAyMHB4LzMycHggUm9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2xldHRlci1zcGFjaW5nOm5vcm1hbH0ubWF0LWV4cGFuc2lvbi1wYW5lbC1oZWFkZXJbX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtmb250LXNpemU6MTVweDtmb250LXdlaWdodDo0MDB9Lm1hdC1leHBhbnNpb24tcGFuZWwtY29udGVudFtfbmdjb250ZW50LSVDT01QJV17Zm9udDo0MDAgMTRweC8yMHB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtsZXR0ZXItc3BhY2luZzpub3JtYWx9Lm1hdC1mb3JtLWZpZWxkW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6aW5oZXJpdDtmb250LXdlaWdodDo0MDA7bGluZS1oZWlnaHQ6MS4xMjU7Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2xldHRlci1zcGFjaW5nOm5vcm1hbH0ubWF0LWZvcm0tZmllbGQtd3JhcHBlcltfbmdjb250ZW50LSVDT01QJV17cGFkZGluZy1ib3R0b206MS4zNDM3NWVtfS5tYXQtZm9ybS1maWVsZC1wcmVmaXhbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pY29uW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1mb3JtLWZpZWxkLXN1ZmZpeFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWljb25bX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToxNTAlO2xpbmUtaGVpZ2h0OjEuMTI1fS5tYXQtZm9ybS1maWVsZC1wcmVmaXhbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pY29uLWJ1dHRvbltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtZm9ybS1maWVsZC1zdWZmaXhbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pY29uLWJ1dHRvbltfbmdjb250ZW50LSVDT01QJV17aGVpZ2h0OjEuNWVtO3dpZHRoOjEuNWVtfS5tYXQtZm9ybS1maWVsZC1wcmVmaXhbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pY29uLWJ1dHRvbltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWljb25bX25nY29udGVudC0lQ09NUCVdLCAubWF0LWZvcm0tZmllbGQtc3VmZml4W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaWNvbi1idXR0b25bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pY29uW19uZ2NvbnRlbnQtJUNPTVAlXXtoZWlnaHQ6MS4xMjVlbTtsaW5lLWhlaWdodDoxLjEyNX0ubWF0LWZvcm0tZmllbGQtaW5maXhbX25nY29udGVudC0lQ09NUCVde3BhZGRpbmc6LjVlbSAwO2JvcmRlci10b3A6Ljg0Mzc1ZW0gc29saWQgdHJhbnNwYXJlbnR9Lm1hdC1mb3JtLWZpZWxkLWNhbi1mbG9hdC5tYXQtZm9ybS1maWVsZC1zaG91bGQtZmxvYXRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1mb3JtLWZpZWxkLWNhbi1mbG9hdFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWlucHV0LXNlcnZlcltfbmdjb250ZW50LSVDT01QJV06Zm9jdXMgKyAubWF0LWZvcm0tZmllbGQtbGFiZWwtd3JhcHBlcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVde3RyYW5zZm9ybTp0cmFuc2xhdGVZKC0xLjM0Mzc1ZW0pIHNjYWxlKDAuNzUpO3dpZHRoOjEzMy4zMzMzMzMzMzMzJX0ubWF0LWZvcm0tZmllbGQtY2FuLWZsb2F0W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaW5wdXQtc2VydmVyW2xhYmVsXVtfbmdjb250ZW50LSVDT01QJV06bm90KDpsYWJlbC1zaG93bikgKyAubWF0LWZvcm0tZmllbGQtbGFiZWwtd3JhcHBlcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVde3RyYW5zZm9ybTp0cmFuc2xhdGVZKC0xLjM0Mzc0ZW0pIHNjYWxlKDAuNzUpO3dpZHRoOjEzMy4zMzMzNDMzMzMzJX0ubWF0LWZvcm0tZmllbGQtbGFiZWwtd3JhcHBlcltfbmdjb250ZW50LSVDT01QJV17dG9wOi0wLjg0Mzc1ZW07cGFkZGluZy10b3A6Ljg0Mzc1ZW19Lm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXt0b3A6MS4zNDM3NWVtfS5tYXQtZm9ybS1maWVsZC11bmRlcmxpbmVbX25nY29udGVudC0lQ09NUCVde2JvdHRvbToxLjM0Mzc1ZW19Lm1hdC1mb3JtLWZpZWxkLXN1YnNjcmlwdC13cmFwcGVyW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6NzUlO21hcmdpbi10b3A6LjY2NjY2NjY2NjdlbTt0b3A6Y2FsYygxMDAlIC0gMS43OTE2NjY2NjY3ZW0pfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWxlZ2FjeVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtd3JhcHBlcltfbmdjb250ZW50LSVDT01QJV17cGFkZGluZy1ib3R0b206MS4yNWVtfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWxlZ2FjeVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtaW5maXhbX25nY29udGVudC0lQ09NUCVde3BhZGRpbmc6LjQzNzVlbSAwfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWxlZ2FjeS5tYXQtZm9ybS1maWVsZC1jYW4tZmxvYXQubWF0LWZvcm0tZmllbGQtc2hvdWxkLWZsb2F0W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWxlZ2FjeS5tYXQtZm9ybS1maWVsZC1jYW4tZmxvYXRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pbnB1dC1zZXJ2ZXJbX25nY29udGVudC0lQ09NUCVdOmZvY3VzICsgLm1hdC1mb3JtLWZpZWxkLWxhYmVsLXdyYXBwZXJbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXt0cmFuc2Zvcm06dHJhbnNsYXRlWSgtMS4yODEyNWVtKSBzY2FsZSgwLjc1KSBwZXJzcGVjdGl2ZSgxMDBweCkgdHJhbnNsYXRlWigwLjAwMXB4KTstbXMtdHJhbnNmb3JtOnRyYW5zbGF0ZVkoLTEuMjgxMjVlbSkgc2NhbGUoMC43NSk7d2lkdGg6MTMzLjMzMzMzMzMzMzMlfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWxlZ2FjeS5tYXQtZm9ybS1maWVsZC1jYW4tZmxvYXRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWF1dG9maWxsLWNvbnRyb2xbX25nY29udGVudC0lQ09NUCVdOi13ZWJraXQtYXV0b2ZpbGwgKyAubWF0LWZvcm0tZmllbGQtbGFiZWwtd3JhcHBlcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVde3RyYW5zZm9ybTp0cmFuc2xhdGVZKC0xLjI4MTI1ZW0pIHNjYWxlKDAuNzUpIHBlcnNwZWN0aXZlKDEwMHB4KSB0cmFuc2xhdGVaKDAuMDAxMDFweCk7LW1zLXRyYW5zZm9ybTp0cmFuc2xhdGVZKC0xLjI4MTI0ZW0pIHNjYWxlKDAuNzUpO3dpZHRoOjEzMy4zMzMzNDMzMzMzJX0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1sZWdhY3kubWF0LWZvcm0tZmllbGQtY2FuLWZsb2F0W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaW5wdXQtc2VydmVyW2xhYmVsXVtfbmdjb250ZW50LSVDT01QJV06bm90KDpsYWJlbC1zaG93bikgKyAubWF0LWZvcm0tZmllbGQtbGFiZWwtd3JhcHBlcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVde3RyYW5zZm9ybTp0cmFuc2xhdGVZKC0xLjI4MTI1ZW0pIHNjYWxlKDAuNzUpIHBlcnNwZWN0aXZlKDEwMHB4KSB0cmFuc2xhdGVaKDAuMDAxMDJweCk7LW1zLXRyYW5zZm9ybTp0cmFuc2xhdGVZKC0xLjI4MTIzZW0pIHNjYWxlKDAuNzUpO3dpZHRoOjEzMy4zMzMzNTMzMzMzJX0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1sZWdhY3lbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXt0b3A6MS4yODEyNWVtfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWxlZ2FjeVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtdW5kZXJsaW5lW19uZ2NvbnRlbnQtJUNPTVAlXXtib3R0b206MS4yNWVtfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWxlZ2FjeVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtc3Vic2NyaXB0LXdyYXBwZXJbX25nY29udGVudC0lQ09NUCVde21hcmdpbi10b3A6LjU0MTY2NjY2NjdlbTt0b3A6Y2FsYygxMDAlIC0gMS42NjY2NjY2NjY3ZW0pfUBtZWRpYSBwcmludHsubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1sZWdhY3kubWF0LWZvcm0tZmllbGQtY2FuLWZsb2F0Lm1hdC1mb3JtLWZpZWxkLXNob3VsZC1mbG9hdFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1sZWdhY3kubWF0LWZvcm0tZmllbGQtY2FuLWZsb2F0W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaW5wdXQtc2VydmVyW19uZ2NvbnRlbnQtJUNPTVAlXTpmb2N1cyArIC5tYXQtZm9ybS1maWVsZC1sYWJlbC13cmFwcGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17dHJhbnNmb3JtOnRyYW5zbGF0ZVkoLTEuMjgxMjJlbSkgc2NhbGUoMC43NSl9Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtbGVnYWN5Lm1hdC1mb3JtLWZpZWxkLWNhbi1mbG9hdFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtYXV0b2ZpbGwtY29udHJvbFtfbmdjb250ZW50LSVDT01QJV06LXdlYmtpdC1hdXRvZmlsbCArIC5tYXQtZm9ybS1maWVsZC1sYWJlbC13cmFwcGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17dHJhbnNmb3JtOnRyYW5zbGF0ZVkoLTEuMjgxMjFlbSkgc2NhbGUoMC43NSl9Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtbGVnYWN5Lm1hdC1mb3JtLWZpZWxkLWNhbi1mbG9hdFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWlucHV0LXNlcnZlcltsYWJlbF1bX25nY29udGVudC0lQ09NUCVdOm5vdCg6bGFiZWwtc2hvd24pICsgLm1hdC1mb3JtLWZpZWxkLWxhYmVsLXdyYXBwZXJbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXt0cmFuc2Zvcm06dHJhbnNsYXRlWSgtMS4yODEyZW0pIHNjYWxlKDAuNzUpfX0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1maWxsW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1pbmZpeFtfbmdjb250ZW50LSVDT01QJV17cGFkZGluZzouMjVlbSAwIC43NWVtIDB9Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtZmlsbFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVde3RvcDoxLjA5Mzc1ZW07bWFyZ2luLXRvcDotMC41ZW19Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtZmlsbC5tYXQtZm9ybS1maWVsZC1jYW4tZmxvYXQubWF0LWZvcm0tZmllbGQtc2hvdWxkLWZsb2F0W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWZpbGwubWF0LWZvcm0tZmllbGQtY2FuLWZsb2F0W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaW5wdXQtc2VydmVyW19uZ2NvbnRlbnQtJUNPTVAlXTpmb2N1cyArIC5tYXQtZm9ybS1maWVsZC1sYWJlbC13cmFwcGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17dHJhbnNmb3JtOnRyYW5zbGF0ZVkoLTAuNTkzNzVlbSkgc2NhbGUoMC43NSk7d2lkdGg6MTMzLjMzMzMzMzMzMzMlfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWZpbGwubWF0LWZvcm0tZmllbGQtY2FuLWZsb2F0W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaW5wdXQtc2VydmVyW2xhYmVsXVtfbmdjb250ZW50LSVDT01QJV06bm90KDpsYWJlbC1zaG93bikgKyAubWF0LWZvcm0tZmllbGQtbGFiZWwtd3JhcHBlcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVde3RyYW5zZm9ybTp0cmFuc2xhdGVZKC0wLjU5Mzc0ZW0pIHNjYWxlKDAuNzUpO3dpZHRoOjEzMy4zMzMzNDMzMzMzJX0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1vdXRsaW5lW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1pbmZpeFtfbmdjb250ZW50LSVDT01QJV17cGFkZGluZzoxZW0gMCAxZW0gMH0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1vdXRsaW5lW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17dG9wOjEuODQzNzVlbTttYXJnaW4tdG9wOi0wLjI1ZW19Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2Utb3V0bGluZS5tYXQtZm9ybS1maWVsZC1jYW4tZmxvYXQubWF0LWZvcm0tZmllbGQtc2hvdWxkLWZsb2F0W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLW91dGxpbmUubWF0LWZvcm0tZmllbGQtY2FuLWZsb2F0W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaW5wdXQtc2VydmVyW19uZ2NvbnRlbnQtJUNPTVAlXTpmb2N1cyArIC5tYXQtZm9ybS1maWVsZC1sYWJlbC13cmFwcGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17dHJhbnNmb3JtOnRyYW5zbGF0ZVkoLTEuNTkzNzVlbSkgc2NhbGUoMC43NSk7d2lkdGg6MTMzLjMzMzMzMzMzMzMlfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLW91dGxpbmUubWF0LWZvcm0tZmllbGQtY2FuLWZsb2F0W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaW5wdXQtc2VydmVyW2xhYmVsXVtfbmdjb250ZW50LSVDT01QJV06bm90KDpsYWJlbC1zaG93bikgKyAubWF0LWZvcm0tZmllbGQtbGFiZWwtd3JhcHBlcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVde3RyYW5zZm9ybTp0cmFuc2xhdGVZKC0xLjU5Mzc0ZW0pIHNjYWxlKDAuNzUpO3dpZHRoOjEzMy4zMzMzNDMzMzMzJX0ubWF0LWdyaWQtdGlsZS1oZWFkZXJbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWdyaWQtdGlsZS1mb290ZXJbX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToxNHB4fS5tYXQtZ3JpZC10aWxlLWhlYWRlcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpbmVbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWdyaWQtdGlsZS1mb290ZXJbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saW5lW19uZ2NvbnRlbnQtJUNPTVAlXXt3aGl0ZS1zcGFjZTpub3dyYXA7b3ZlcmZsb3c6aGlkZGVuO3RleHQtb3ZlcmZsb3c6ZWxsaXBzaXM7ZGlzcGxheTpibG9jaztib3gtc2l6aW5nOmJvcmRlci1ib3h9Lm1hdC1ncmlkLXRpbGUtaGVhZGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGluZVtfbmdjb250ZW50LSVDT01QJV06bnRoLWNoaWxkKG4rMiksIC5tYXQtZ3JpZC10aWxlLWZvb3Rlcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpbmVbX25nY29udGVudC0lQ09NUCVdOm50aC1jaGlsZChuKzIpe2ZvbnQtc2l6ZToxMnB4fWlucHV0Lm1hdC1pbnB1dC1lbGVtZW50W19uZ2NvbnRlbnQtJUNPTVAlXXttYXJnaW4tdG9wOi0wLjA2MjVlbX0ubWF0LW1lbnUtaXRlbVtfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2ZvbnQtc2l6ZToxNHB4O2ZvbnQtd2VpZ2h0OjQwMH0ubWF0LXBhZ2luYXRvcltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtcGFnaW5hdG9yLXBhZ2Utc2l6ZVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXNlbGVjdC10cmlnZ2VyW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7Zm9udC1zaXplOjEycHh9Lm1hdC1yYWRpby1idXR0b25bX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZn0ubWF0LXNlbGVjdFtfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmfS5tYXQtc2VsZWN0LXRyaWdnZXJbX25nY29udGVudC0lQ09NUCVde2hlaWdodDoxLjEyNWVtfS5tYXQtc2xpZGUtdG9nZ2xlLWNvbnRlbnRbX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZn0ubWF0LXNsaWRlci10aHVtYi1sYWJlbC10ZXh0W19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7Zm9udC1zaXplOjEycHg7Zm9udC13ZWlnaHQ6NTAwfS5tYXQtc3RlcHBlci12ZXJ0aWNhbFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtc3RlcHBlci1ob3Jpem9udGFsW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWZ9Lm1hdC1zdGVwLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MTRweDtmb250LXdlaWdodDo0MDB9Lm1hdC1zdGVwLXN1Yi1sYWJlbC1lcnJvcltfbmdjb250ZW50LSVDT01QJV17Zm9udC13ZWlnaHQ6bm9ybWFsfS5tYXQtc3RlcC1sYWJlbC1lcnJvcltfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjE0cHh9Lm1hdC1zdGVwLWxhYmVsLXNlbGVjdGVkW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MTRweDtmb250LXdlaWdodDo1MDB9Lm1hdC10YWItZ3JvdXBbX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZn0ubWF0LXRhYi1sYWJlbFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdGFiLWxpbmtbX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtmb250LXNpemU6MTRweDtmb250LXdlaWdodDo1MDB9Lm1hdC10b29sYmFyW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10b29sYmFyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIGgxW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10b29sYmFyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIGgyW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10b29sYmFyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIGgzW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10b29sYmFyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIGg0W19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10b29sYmFyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIGg1W19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10b29sYmFyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIGg2W19uZ2NvbnRlbnQtJUNPTVAlXXtmb250OjUwMCAyMHB4LzMycHggUm9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2xldHRlci1zcGFjaW5nOm5vcm1hbDttYXJnaW46MH0ubWF0LXRvb2x0aXBbX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtmb250LXNpemU6MTBweDtwYWRkaW5nLXRvcDo2cHg7cGFkZGluZy1ib3R0b206NnB4fS5tYXQtdG9vbHRpcC1oYW5kc2V0W19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MTRweDtwYWRkaW5nLXRvcDo4cHg7cGFkZGluZy1ib3R0b206OHB4fS5tYXQtbGlzdC1pdGVtW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWZ9Lm1hdC1saXN0LW9wdGlvbltfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmfS5tYXQtbGlzdC1iYXNlW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGlzdC1pdGVtW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MTZweH0ubWF0LWxpc3QtYmFzZVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpc3QtaXRlbVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpbmVbX25nY29udGVudC0lQ09NUCVde3doaXRlLXNwYWNlOm5vd3JhcDtvdmVyZmxvdzpoaWRkZW47dGV4dC1vdmVyZmxvdzplbGxpcHNpcztkaXNwbGF5OmJsb2NrO2JveC1zaXppbmc6Ym9yZGVyLWJveH0ubWF0LWxpc3QtYmFzZVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpc3QtaXRlbVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpbmVbX25nY29udGVudC0lQ09NUCVdOm50aC1jaGlsZChuKzIpe2ZvbnQtc2l6ZToxNHB4fS5tYXQtbGlzdC1iYXNlW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGlzdC1vcHRpb25bX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToxNnB4fS5tYXQtbGlzdC1iYXNlW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGlzdC1vcHRpb25bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saW5lW19uZ2NvbnRlbnQtJUNPTVAlXXt3aGl0ZS1zcGFjZTpub3dyYXA7b3ZlcmZsb3c6aGlkZGVuO3RleHQtb3ZlcmZsb3c6ZWxsaXBzaXM7ZGlzcGxheTpibG9jaztib3gtc2l6aW5nOmJvcmRlci1ib3h9Lm1hdC1saXN0LWJhc2VbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saXN0LW9wdGlvbltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpbmVbX25nY29udGVudC0lQ09NUCVdOm50aC1jaGlsZChuKzIpe2ZvbnQtc2l6ZToxNHB4fS5tYXQtbGlzdC1iYXNlW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtc3ViaGVhZGVyW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7Zm9udC1zaXplOjE0cHg7Zm9udC13ZWlnaHQ6NTAwfS5tYXQtbGlzdC1iYXNlW2RlbnNlXVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpc3QtaXRlbVtfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjEycHh9Lm1hdC1saXN0LWJhc2VbZGVuc2VdW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGlzdC1pdGVtW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGluZVtfbmdjb250ZW50LSVDT01QJV17d2hpdGUtc3BhY2U6bm93cmFwO292ZXJmbG93OmhpZGRlbjt0ZXh0LW92ZXJmbG93OmVsbGlwc2lzO2Rpc3BsYXk6YmxvY2s7Ym94LXNpemluZzpib3JkZXItYm94fS5tYXQtbGlzdC1iYXNlW2RlbnNlXVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpc3QtaXRlbVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpbmVbX25nY29udGVudC0lQ09NUCVdOm50aC1jaGlsZChuKzIpe2ZvbnQtc2l6ZToxMnB4fS5tYXQtbGlzdC1iYXNlW2RlbnNlXVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpc3Qtb3B0aW9uW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MTJweH0ubWF0LWxpc3QtYmFzZVtkZW5zZV1bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saXN0LW9wdGlvbltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpbmVbX25nY29udGVudC0lQ09NUCVde3doaXRlLXNwYWNlOm5vd3JhcDtvdmVyZmxvdzpoaWRkZW47dGV4dC1vdmVyZmxvdzplbGxpcHNpcztkaXNwbGF5OmJsb2NrO2JveC1zaXppbmc6Ym9yZGVyLWJveH0ubWF0LWxpc3QtYmFzZVtkZW5zZV1bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saXN0LW9wdGlvbltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpbmVbX25nY29udGVudC0lQ09NUCVdOm50aC1jaGlsZChuKzIpe2ZvbnQtc2l6ZToxMnB4fS5tYXQtbGlzdC1iYXNlW2RlbnNlXVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXN1YmhlYWRlcltfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2ZvbnQtc2l6ZToxMnB4O2ZvbnQtd2VpZ2h0OjUwMH0ubWF0LW9wdGlvbltfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2ZvbnQtc2l6ZToxNnB4fS5tYXQtb3B0Z3JvdXAtbGFiZWxbX25nY29udGVudC0lQ09NUCVde2ZvbnQ6NTAwIDE0cHgvMjRweCBSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7bGV0dGVyLXNwYWNpbmc6bm9ybWFsfS5tYXQtc2ltcGxlLXNuYWNrYmFyW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7Zm9udC1zaXplOjE0cHh9Lm1hdC1zaW1wbGUtc25hY2tiYXItYWN0aW9uW19uZ2NvbnRlbnQtJUNPTVAlXXtsaW5lLWhlaWdodDoxO2ZvbnQtZmFtaWx5OmluaGVyaXQ7Zm9udC1zaXplOmluaGVyaXQ7Zm9udC13ZWlnaHQ6NTAwfS5tYXQtdHJlZVtfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmfS5tYXQtdHJlZS1ub2RlW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1uZXN0ZWQtdHJlZS1ub2RlW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXdlaWdodDo0MDA7Zm9udC1zaXplOjE0cHh9Lm1hdC1yaXBwbGVbX25nY29udGVudC0lQ09NUCVde292ZXJmbG93OmhpZGRlbjtwb3NpdGlvbjpyZWxhdGl2ZX0ubWF0LXJpcHBsZVtfbmdjb250ZW50LSVDT01QJV06bm90KDplbXB0eSl7dHJhbnNmb3JtOnRyYW5zbGF0ZVooMCl9Lm1hdC1yaXBwbGUubWF0LXJpcHBsZS11bmJvdW5kZWRbX25nY29udGVudC0lQ09NUCVde292ZXJmbG93OnZpc2libGV9Lm1hdC1yaXBwbGUtZWxlbWVudFtfbmdjb250ZW50LSVDT01QJV17cG9zaXRpb246YWJzb2x1dGU7Ym9yZGVyLXJhZGl1czo1MCU7cG9pbnRlci1ldmVudHM6bm9uZTt0cmFuc2l0aW9uOm9wYWNpdHksdHJhbnNmb3JtIDBtcyBjdWJpYy1iZXppZXIoMCwgMCwgMC4yLCAxKTt0cmFuc2Zvcm06c2NhbGUoMCl9LmNkay1oaWdoLWNvbnRyYXN0LWFjdGl2ZVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXJpcHBsZS1lbGVtZW50W19uZ2NvbnRlbnQtJUNPTVAlXXtkaXNwbGF5Om5vbmV9LmNkay12aXN1YWxseS1oaWRkZW5bX25nY29udGVudC0lQ09NUCVde2JvcmRlcjowO2NsaXA6cmVjdCgwIDAgMCAwKTtoZWlnaHQ6MXB4O21hcmdpbjotMXB4O292ZXJmbG93OmhpZGRlbjtwYWRkaW5nOjA7cG9zaXRpb246YWJzb2x1dGU7d2lkdGg6MXB4O291dGxpbmU6MDstd2Via2l0LWFwcGVhcmFuY2U6bm9uZTstbW96LWFwcGVhcmFuY2U6bm9uZX0uY2RrLW92ZXJsYXktY29udGFpbmVyW19uZ2NvbnRlbnQtJUNPTVAlXSwgLmNkay1nbG9iYWwtb3ZlcmxheS13cmFwcGVyW19uZ2NvbnRlbnQtJUNPTVAlXXtwb2ludGVyLWV2ZW50czpub25lO3RvcDowO2xlZnQ6MDtoZWlnaHQ6MTAwJTt3aWR0aDoxMDAlfS5jZGstb3ZlcmxheS1jb250YWluZXJbX25nY29udGVudC0lQ09NUCVde3Bvc2l0aW9uOmZpeGVkO3otaW5kZXg6MTAwMH0uY2RrLW92ZXJsYXktY29udGFpbmVyW19uZ2NvbnRlbnQtJUNPTVAlXTplbXB0eXtkaXNwbGF5Om5vbmV9LmNkay1nbG9iYWwtb3ZlcmxheS13cmFwcGVyW19uZ2NvbnRlbnQtJUNPTVAlXXtkaXNwbGF5OmZsZXg7cG9zaXRpb246YWJzb2x1dGU7ei1pbmRleDoxMDAwfS5jZGstb3ZlcmxheS1wYW5lW19uZ2NvbnRlbnQtJUNPTVAlXXtwb3NpdGlvbjphYnNvbHV0ZTtwb2ludGVyLWV2ZW50czphdXRvO2JveC1zaXppbmc6Ym9yZGVyLWJveDt6LWluZGV4OjEwMDA7ZGlzcGxheTpmbGV4O21heC13aWR0aDoxMDAlO21heC1oZWlnaHQ6MTAwJX0uY2RrLW92ZXJsYXktYmFja2Ryb3BbX25nY29udGVudC0lQ09NUCVde3Bvc2l0aW9uOmFic29sdXRlO3RvcDowO2JvdHRvbTowO2xlZnQ6MDtyaWdodDowO3otaW5kZXg6MTAwMDtwb2ludGVyLWV2ZW50czphdXRvOy13ZWJraXQtdGFwLWhpZ2hsaWdodC1jb2xvcjp0cmFuc3BhcmVudDt0cmFuc2l0aW9uOm9wYWNpdHkgNDAwbXMgY3ViaWMtYmV6aWVyKDAuMjUsIDAuOCwgMC4yNSwgMSk7b3BhY2l0eTowfS5jZGstb3ZlcmxheS1iYWNrZHJvcC5jZGstb3ZlcmxheS1iYWNrZHJvcC1zaG93aW5nW19uZ2NvbnRlbnQtJUNPTVAlXXtvcGFjaXR5OjF9QG1lZGlhIHNjcmVlbiBhbmQgKC1tcy1oaWdoLWNvbnRyYXN0OiBhY3RpdmUpey5jZGstb3ZlcmxheS1iYWNrZHJvcC5jZGstb3ZlcmxheS1iYWNrZHJvcC1zaG93aW5nW19uZ2NvbnRlbnQtJUNPTVAlXXtvcGFjaXR5Oi42fX0uY2RrLW92ZXJsYXktZGFyay1iYWNrZHJvcFtfbmdjb250ZW50LSVDT01QJV17YmFja2dyb3VuZDpyZ2JhKDAsMCwwLC4zMil9LmNkay1vdmVybGF5LXRyYW5zcGFyZW50LWJhY2tkcm9wW19uZ2NvbnRlbnQtJUNPTVAlXSwgLmNkay1vdmVybGF5LXRyYW5zcGFyZW50LWJhY2tkcm9wLmNkay1vdmVybGF5LWJhY2tkcm9wLXNob3dpbmdbX25nY29udGVudC0lQ09NUCVde29wYWNpdHk6MH0uY2RrLW92ZXJsYXktY29ubmVjdGVkLXBvc2l0aW9uLWJvdW5kaW5nLWJveFtfbmdjb250ZW50LSVDT01QJV17cG9zaXRpb246YWJzb2x1dGU7ei1pbmRleDoxMDAwO2Rpc3BsYXk6ZmxleDtmbGV4LWRpcmVjdGlvbjpjb2x1bW47bWluLXdpZHRoOjFweDttaW4taGVpZ2h0OjFweH0uY2RrLWdsb2JhbC1zY3JvbGxibG9ja1tfbmdjb250ZW50LSVDT01QJV17cG9zaXRpb246Zml4ZWQ7d2lkdGg6MTAwJTtvdmVyZmxvdy15OnNjcm9sbH1Aa2V5ZnJhbWVzIGNkay10ZXh0LWZpZWxkLWF1dG9maWxsLXN0YXJ0e31Aa2V5ZnJhbWVzIGNkay10ZXh0LWZpZWxkLWF1dG9maWxsLWVuZHt9LmNkay10ZXh0LWZpZWxkLWF1dG9maWxsLW1vbml0b3JlZFtfbmdjb250ZW50LSVDT01QJV06LXdlYmtpdC1hdXRvZmlsbHthbmltYXRpb246Y2RrLXRleHQtZmllbGQtYXV0b2ZpbGwtc3RhcnQgMHMgMW1zfS5jZGstdGV4dC1maWVsZC1hdXRvZmlsbC1tb25pdG9yZWRbX25nY29udGVudC0lQ09NUCVdOm5vdCg6LXdlYmtpdC1hdXRvZmlsbCl7YW5pbWF0aW9uOmNkay10ZXh0LWZpZWxkLWF1dG9maWxsLWVuZCAwcyAxbXN9dGV4dGFyZWEuY2RrLXRleHRhcmVhLWF1dG9zaXplW19uZ2NvbnRlbnQtJUNPTVAlXXtyZXNpemU6bm9uZX10ZXh0YXJlYS5jZGstdGV4dGFyZWEtYXV0b3NpemUtbWVhc3VyaW5nW19uZ2NvbnRlbnQtJUNPTVAlXXtwYWRkaW5nOjJweCAwICFpbXBvcnRhbnQ7Ym94LXNpemluZzpjb250ZW50LWJveCAhaW1wb3J0YW50O2hlaWdodDphdXRvICFpbXBvcnRhbnQ7b3ZlcmZsb3c6aGlkZGVuICFpbXBvcnRhbnR9dGV4dGFyZWEuY2RrLXRleHRhcmVhLWF1dG9zaXplLW1lYXN1cmluZy1maXJlZm94W19uZ2NvbnRlbnQtJUNPTVAlXXtwYWRkaW5nOjJweCAwICFpbXBvcnRhbnQ7Ym94LXNpemluZzpjb250ZW50LWJveCAhaW1wb3J0YW50O2hlaWdodDowICFpbXBvcnRhbnR9Lm1hdC1mb2N1cy1pbmRpY2F0b3JbX25nY29udGVudC0lQ09NUCVde3Bvc2l0aW9uOnJlbGF0aXZlfS5tYXQtbWRjLWZvY3VzLWluZGljYXRvcltfbmdjb250ZW50LSVDT01QJV17cG9zaXRpb246cmVsYXRpdmV9Lm1hdC1yaXBwbGUtZWxlbWVudFtfbmdjb250ZW50LSVDT01QJV17YmFja2dyb3VuZC1jb2xvcjpyZ2JhKDAsMCwwLC4xKX0ubWF0LW9wdGlvbltfbmdjb250ZW50LSVDT01QJV17Y29sb3I6IzIxMjEyMX0ubWF0LW9wdGlvbltfbmdjb250ZW50LSVDT01QJV06aG92ZXI6bm90KC5tYXQtb3B0aW9uLWRpc2FibGVkKSwgLm1hdC1vcHRpb25bX25nY29udGVudC0lQ09NUCVdOmZvY3VzOm5vdCgubWF0LW9wdGlvbi1kaXNhYmxlZCl7YmFja2dyb3VuZDpyZ2JhKDAsMCwwLC4wNCl9Lm1hdC1vcHRpb24ubWF0LXNlbGVjdGVkW19uZ2NvbnRlbnQtJUNPTVAlXTpub3QoLm1hdC1vcHRpb24tbXVsdGlwbGUpOm5vdCgubWF0LW9wdGlvbi1kaXNhYmxlZCl7YmFja2dyb3VuZDpyZ2JhKDAsMCwwLC4wNCl9Lm1hdC1vcHRpb24ubWF0LWFjdGl2ZVtfbmdjb250ZW50LSVDT01QJV17YmFja2dyb3VuZDpyZ2JhKDAsMCwwLC4wNCk7Y29sb3I6IzIxMjEyMX0ubWF0LW9wdGlvbi5tYXQtb3B0aW9uLWRpc2FibGVkW19uZ2NvbnRlbnQtJUNPTVAlXXtjb2xvcjpyZ2JhKDAsMCwwLC4zOCl9Lm1hdC1wcmltYXJ5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtb3B0aW9uLm1hdC1zZWxlY3RlZFtfbmdjb250ZW50LSVDT01QJV06bm90KC5tYXQtb3B0aW9uLWRpc2FibGVkKXtjb2xvcjojZjU3YzAwfS5tYXQtYWNjZW50W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtb3B0aW9uLm1hdC1zZWxlY3RlZFtfbmdjb250ZW50LSVDT01QJV06bm90KC5tYXQtb3B0aW9uLWRpc2FibGVkKXtjb2xvcjojZmY5ODAwfS5tYXQtd2Fybltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LW9wdGlvbi5tYXQtc2VsZWN0ZWRbX25nY29udGVudC0lQ09NUCVdOm5vdCgubWF0LW9wdGlvbi1kaXNhYmxlZCl7Y29sb3I6I2Y0NDMzNn0ubWF0LW9wdGdyb3VwLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXtjb2xvcjojNjE2MTYxfS5tYXQtb3B0Z3JvdXAtZGlzYWJsZWRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1vcHRncm91cC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17Y29sb3I6cmdiYSgwLDAsMCwuMzgpfS5tYXQtcHNldWRvLWNoZWNrYm94W19uZ2NvbnRlbnQtJUNPTVAlXXtjb2xvcjojNjE2MTYxfS5tYXQtcHNldWRvLWNoZWNrYm94W19uZ2NvbnRlbnQtJUNPTVAlXTo6YWZ0ZXJ7Y29sb3I6I2ZhZmFmYX0ubWF0LXBzZXVkby1jaGVja2JveC1kaXNhYmxlZFtfbmdjb250ZW50LSVDT01QJV17Y29sb3I6I2IwYjBiMH0ubWF0LXByaW1hcnlbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1wc2V1ZG8tY2hlY2tib3gtY2hlY2tlZFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtcHJpbWFyeVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXBzZXVkby1jaGVja2JveC1pbmRldGVybWluYXRlW19uZ2NvbnRlbnQtJUNPTVAlXXtiYWNrZ3JvdW5kOiNmNTdjMDB9Lm1hdC1wc2V1ZG8tY2hlY2tib3gtY2hlY2tlZFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtcHNldWRvLWNoZWNrYm94LWluZGV0ZXJtaW5hdGVbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWFjY2VudFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXBzZXVkby1jaGVja2JveC1jaGVja2VkW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1hY2NlbnRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1wc2V1ZG8tY2hlY2tib3gtaW5kZXRlcm1pbmF0ZVtfbmdjb250ZW50LSVDT01QJV17YmFja2dyb3VuZDojZmY5ODAwfS5tYXQtd2Fybltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXBzZXVkby1jaGVja2JveC1jaGVja2VkW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC13YXJuW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtcHNldWRvLWNoZWNrYm94LWluZGV0ZXJtaW5hdGVbX25nY29udGVudC0lQ09NUCVde2JhY2tncm91bmQ6I2Y0NDMzNn0ubWF0LXBzZXVkby1jaGVja2JveC1jaGVja2VkLm1hdC1wc2V1ZG8tY2hlY2tib3gtZGlzYWJsZWRbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXBzZXVkby1jaGVja2JveC1pbmRldGVybWluYXRlLm1hdC1wc2V1ZG8tY2hlY2tib3gtZGlzYWJsZWRbX25nY29udGVudC0lQ09NUCVde2JhY2tncm91bmQ6I2IwYjBiMH0ubWF0LWFwcC1iYWNrZ3JvdW5kW19uZ2NvbnRlbnQtJUNPTVAlXXtiYWNrZ3JvdW5kLWNvbG9yOiNmYWZhZmE7Y29sb3I6IzIxMjEyMX0ubWF0LWVsZXZhdGlvbi16MFtfbmdjb250ZW50LSVDT01QJV17Ym94LXNoYWRvdzowcHggMHB4IDBweCAwcHggcmdiYSgwLCAwLCAwLCAwLjIpLDBweCAwcHggMHB4IDBweCByZ2JhKDAsIDAsIDAsIDAuMTQpLDBweCAwcHggMHB4IDBweCByZ2JhKDAsIDAsIDAsIDAuMTIpfS5tYXQtZWxldmF0aW9uLXoxW19uZ2NvbnRlbnQtJUNPTVAlXXtib3gtc2hhZG93OjBweCAycHggMXB4IC0xcHggcmdiYSgwLCAwLCAwLCAwLjIpLDBweCAxcHggMXB4IDBweCByZ2JhKDAsIDAsIDAsIDAuMTQpLDBweCAxcHggM3B4IDBweCByZ2JhKDAsIDAsIDAsIDAuMTIpfS5tYXQtZWxldmF0aW9uLXoyW19uZ2NvbnRlbnQtJUNPTVAlXXtib3gtc2hhZG93OjBweCAzcHggMXB4IC0ycHggcmdiYSgwLCAwLCAwLCAwLjIpLDBweCAycHggMnB4IDBweCByZ2JhKDAsIDAsIDAsIDAuMTQpLDBweCAxcHggNXB4IDBweCByZ2JhKDAsIDAsIDAsIDAuMTIpfS5tYXQtZWxldmF0aW9uLXozW19uZ2NvbnRlbnQtJUNPTVAlXXtib3gtc2hhZG93OjBweCAzcHggM3B4IC0ycHggcmdiYSgwLCAwLCAwLCAwLjIpLDBweCAzcHggNHB4IDBweCByZ2JhKDAsIDAsIDAsIDAuMTQpLDBweCAxcHggOHB4IDBweCByZ2JhKDAsIDAsIDAsIDAuMTIpfS5tYXQtZWxldmF0aW9uLXo0W19uZ2NvbnRlbnQtJUNPTVAlXXtib3gtc2hhZG93OjBweCAycHggNHB4IC0xcHggcmdiYSgwLCAwLCAwLCAwLjIpLDBweCA0cHggNXB4IDBweCByZ2JhKDAsIDAsIDAsIDAuMTQpLDBweCAxcHggMTBweCAwcHggcmdiYSgwLCAwLCAwLCAwLjEyKX0ubWF0LWVsZXZhdGlvbi16NVtfbmdjb250ZW50LSVDT01QJV17Ym94LXNoYWRvdzowcHggM3B4IDVweCAtMXB4IHJnYmEoMCwgMCwgMCwgMC4yKSwwcHggNXB4IDhweCAwcHggcmdiYSgwLCAwLCAwLCAwLjE0KSwwcHggMXB4IDE0cHggMHB4IHJnYmEoMCwgMCwgMCwgMC4xMil9Lm1hdC1lbGV2YXRpb24tejZbX25nY29udGVudC0lQ09NUCVde2JveC1zaGFkb3c6MHB4IDNweCA1cHggLTFweCByZ2JhKDAsIDAsIDAsIDAuMiksMHB4IDZweCAxMHB4IDBweCByZ2JhKDAsIDAsIDAsIDAuMTQpLDBweCAxcHggMThweCAwcHggcmdiYSgwLCAwLCAwLCAwLjEyKX0ubWF0LWVsZXZhdGlvbi16N1tfbmdjb250ZW50LSVDT01QJV17Ym94LXNoYWRvdzowcHggNHB4IDVweCAtMnB4IHJnYmEoMCwgMCwgMCwgMC4yKSwwcHggN3B4IDEwcHggMXB4IHJnYmEoMCwgMCwgMCwgMC4xNCksMHB4IDJweCAxNnB4IDFweCByZ2JhKDAsIDAsIDAsIDAuMTIpfS5tYXQtZWxldmF0aW9uLXo4W19uZ2NvbnRlbnQtJUNPTVAlXXtib3gtc2hhZG93OjBweCA1cHggNXB4IC0zcHggcmdiYSgwLCAwLCAwLCAwLjIpLDBweCA4cHggMTBweCAxcHggcmdiYSgwLCAwLCAwLCAwLjE0KSwwcHggM3B4IDE0cHggMnB4IHJnYmEoMCwgMCwgMCwgMC4xMil9Lm1hdC1lbGV2YXRpb24tejlbX25nY29udGVudC0lQ09NUCVde2JveC1zaGFkb3c6MHB4IDVweCA2cHggLTNweCByZ2JhKDAsIDAsIDAsIDAuMiksMHB4IDlweCAxMnB4IDFweCByZ2JhKDAsIDAsIDAsIDAuMTQpLDBweCAzcHggMTZweCAycHggcmdiYSgwLCAwLCAwLCAwLjEyKX0ubWF0LWVsZXZhdGlvbi16MTBbX25nY29udGVudC0lQ09NUCVde2JveC1zaGFkb3c6MHB4IDZweCA2cHggLTNweCByZ2JhKDAsIDAsIDAsIDAuMiksMHB4IDEwcHggMTRweCAxcHggcmdiYSgwLCAwLCAwLCAwLjE0KSwwcHggNHB4IDE4cHggM3B4IHJnYmEoMCwgMCwgMCwgMC4xMil9Lm1hdC1lbGV2YXRpb24tejExW19uZ2NvbnRlbnQtJUNPTVAlXXtib3gtc2hhZG93OjBweCA2cHggN3B4IC00cHggcmdiYSgwLCAwLCAwLCAwLjIpLDBweCAxMXB4IDE1cHggMXB4IHJnYmEoMCwgMCwgMCwgMC4xNCksMHB4IDRweCAyMHB4IDNweCByZ2JhKDAsIDAsIDAsIDAuMTIpfS5tYXQtZWxldmF0aW9uLXoxMltfbmdjb250ZW50LSVDT01QJV17Ym94LXNoYWRvdzowcHggN3B4IDhweCAtNHB4IHJnYmEoMCwgMCwgMCwgMC4yKSwwcHggMTJweCAxN3B4IDJweCByZ2JhKDAsIDAsIDAsIDAuMTQpLDBweCA1cHggMjJweCA0cHggcmdiYSgwLCAwLCAwLCAwLjEyKX0ubWF0LWVsZXZhdGlvbi16MTNbX25nY29udGVudC0lQ09NUCVde2JveC1zaGFkb3c6MHB4IDdweCA4cHggLTRweCByZ2JhKDAsIDAsIDAsIDAuMiksMHB4IDEzcHggMTlweCAycHggcmdiYSgwLCAwLCAwLCAwLjE0KSwwcHggNXB4IDI0cHggNHB4IHJnYmEoMCwgMCwgMCwgMC4xMil9Lm1hdC1lbGV2YXRpb24tejE0W19uZ2NvbnRlbnQtJUNPTVAlXXtib3gtc2hhZG93OjBweCA3cHggOXB4IC00cHggcmdiYSgwLCAwLCAwLCAwLjIpLDBweCAxNHB4IDIxcHggMnB4IHJnYmEoMCwgMCwgMCwgMC4xNCksMHB4IDVweCAyNnB4IDRweCByZ2JhKDAsIDAsIDAsIDAuMTIpfS5tYXQtZWxldmF0aW9uLXoxNVtfbmdjb250ZW50LSVDT01QJV17Ym94LXNoYWRvdzowcHggOHB4IDlweCAtNXB4IHJnYmEoMCwgMCwgMCwgMC4yKSwwcHggMTVweCAyMnB4IDJweCByZ2JhKDAsIDAsIDAsIDAuMTQpLDBweCA2cHggMjhweCA1cHggcmdiYSgwLCAwLCAwLCAwLjEyKX0ubWF0LWVsZXZhdGlvbi16MTZbX25nY29udGVudC0lQ09NUCVde2JveC1zaGFkb3c6MHB4IDhweCAxMHB4IC01cHggcmdiYSgwLCAwLCAwLCAwLjIpLDBweCAxNnB4IDI0cHggMnB4IHJnYmEoMCwgMCwgMCwgMC4xNCksMHB4IDZweCAzMHB4IDVweCByZ2JhKDAsIDAsIDAsIDAuMTIpfS5tYXQtZWxldmF0aW9uLXoxN1tfbmdjb250ZW50LSVDT01QJV17Ym94LXNoYWRvdzowcHggOHB4IDExcHggLTVweCByZ2JhKDAsIDAsIDAsIDAuMiksMHB4IDE3cHggMjZweCAycHggcmdiYSgwLCAwLCAwLCAwLjE0KSwwcHggNnB4IDMycHggNXB4IHJnYmEoMCwgMCwgMCwgMC4xMil9Lm1hdC1lbGV2YXRpb24tejE4W19uZ2NvbnRlbnQtJUNPTVAlXXtib3gtc2hhZG93OjBweCA5cHggMTFweCAtNXB4IHJnYmEoMCwgMCwgMCwgMC4yKSwwcHggMThweCAyOHB4IDJweCByZ2JhKDAsIDAsIDAsIDAuMTQpLDBweCA3cHggMzRweCA2cHggcmdiYSgwLCAwLCAwLCAwLjEyKX0ubWF0LWVsZXZhdGlvbi16MTlbX25nY29udGVudC0lQ09NUCVde2JveC1zaGFkb3c6MHB4IDlweCAxMnB4IC02cHggcmdiYSgwLCAwLCAwLCAwLjIpLDBweCAxOXB4IDI5cHggMnB4IHJnYmEoMCwgMCwgMCwgMC4xNCksMHB4IDdweCAzNnB4IDZweCByZ2JhKDAsIDAsIDAsIDAuMTIpfS5tYXQtZWxldmF0aW9uLXoyMFtfbmdjb250ZW50LSVDT01QJV17Ym94LXNoYWRvdzowcHggMTBweCAxM3B4IC02cHggcmdiYSgwLCAwLCAwLCAwLjIpLDBweCAyMHB4IDMxcHggM3B4IHJnYmEoMCwgMCwgMCwgMC4xNCksMHB4IDhweCAzOHB4IDdweCByZ2JhKDAsIDAsIDAsIDAuMTIpfS5tYXQtZWxldmF0aW9uLXoyMVtfbmdjb250ZW50LSVDT01QJV17Ym94LXNoYWRvdzowcHggMTBweCAxM3B4IC02cHggcmdiYSgwLCAwLCAwLCAwLjIpLDBweCAyMXB4IDMzcHggM3B4IHJnYmEoMCwgMCwgMCwgMC4xNCksMHB4IDhweCA0MHB4IDdweCByZ2JhKDAsIDAsIDAsIDAuMTIpfS5tYXQtZWxldmF0aW9uLXoyMltfbmdjb250ZW50LSVDT01QJV17Ym94LXNoYWRvdzowcHggMTBweCAxNHB4IC02cHggcmdiYSgwLCAwLCAwLCAwLjIpLDBweCAyMnB4IDM1cHggM3B4IHJnYmEoMCwgMCwgMCwgMC4xNCksMHB4IDhweCA0MnB4IDdweCByZ2JhKDAsIDAsIDAsIDAuMTIpfS5tYXQtZWxldmF0aW9uLXoyM1tfbmdjb250ZW50LSVDT01QJV17Ym94LXNoYWRvdzowcHggMTFweCAxNHB4IC03cHggcmdiYSgwLCAwLCAwLCAwLjIpLDBweCAyM3B4IDM2cHggM3B4IHJnYmEoMCwgMCwgMCwgMC4xNCksMHB4IDlweCA0NHB4IDhweCByZ2JhKDAsIDAsIDAsIDAuMTIpfS5tYXQtZWxldmF0aW9uLXoyNFtfbmdjb250ZW50LSVDT01QJV17Ym94LXNoYWRvdzowcHggMTFweCAxNXB4IC03cHggcmdiYSgwLCAwLCAwLCAwLjIpLDBweCAyNHB4IDM4cHggM3B4IHJnYmEoMCwgMCwgMCwgMC4xNCksMHB4IDlweCA0NnB4IDhweCByZ2JhKDAsIDAsIDAsIDAuMTIpfS5tYXQtdGhlbWUtbG9hZGVkLW1hcmtlcltfbmdjb250ZW50LSVDT01QJV17ZGlzcGxheTpub25lfS5tYXQtYXV0b2NvbXBsZXRlLXBhbmVsW19uZ2NvbnRlbnQtJUNPTVAlXXtiYWNrZ3JvdW5kOiNmZmY7Y29sb3I6IzIxMjEyMX0ubWF0LWF1dG9jb21wbGV0ZS1wYW5lbFtfbmdjb250ZW50LSVDT01QJV06bm90KFtjbGFzcyo9bWF0LWVsZXZhdGlvbi16XSl7Ym94LXNoYWRvdzowcHggMnB4IDRweCAtMXB4IHJnYmEoMCwgMCwgMCwgMC4yKSwwcHggNHB4IDVweCAwcHggcmdiYSgwLCAwLCAwLCAwLjE0KSwwcHggMXB4IDEwcHggMHB4IHJnYmEoMCwgMCwgMCwgMC4xMil9Lm1hdC1hdXRvY29tcGxldGUtcGFuZWxbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1vcHRpb24ubWF0LXNlbGVjdGVkW19uZ2NvbnRlbnQtJUNPTVAlXTpub3QoLm1hdC1hY3RpdmUpOm5vdCg6aG92ZXIpe2JhY2tncm91bmQ6I2ZmZn0ubWF0LWF1dG9jb21wbGV0ZS1wYW5lbFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LW9wdGlvbi5tYXQtc2VsZWN0ZWRbX25nY29udGVudC0lQ09NUCVdOm5vdCgubWF0LWFjdGl2ZSk6bm90KDpob3Zlcik6bm90KC5tYXQtb3B0aW9uLWRpc2FibGVkKXtjb2xvcjojMjEyMTIxfS5tYXQtYmFkZ2UtY29udGVudFtfbmdjb250ZW50LSVDT01QJV17Y29sb3I6I2ZmZjtiYWNrZ3JvdW5kOiNmNTdjMDB9LmNkay1oaWdoLWNvbnRyYXN0LWFjdGl2ZVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWJhZGdlLWNvbnRlbnRbX25nY29udGVudC0lQ09NUCVde291dGxpbmU6c29saWQgMXB4O2JvcmRlci1yYWRpdXM6MH0ubWF0LWJhZGdlLWFjY2VudFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWJhZGdlLWNvbnRlbnRbX25nY29udGVudC0lQ09NUCVde2JhY2tncm91bmQ6I2ZmOTgwMDtjb2xvcjojZmZmfS5tYXQtYmFkZ2Utd2Fybltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWJhZGdlLWNvbnRlbnRbX25nY29udGVudC0lQ09NUCVde2NvbG9yOiNmZmY7YmFja2dyb3VuZDojZjQ0MzM2fS5tYXQtYmFkZ2VbX25nY29udGVudC0lQ09NUCVde3Bvc2l0aW9uOnJlbGF0aXZlfS5tYXQtYmFkZ2UtaGlkZGVuW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtYmFkZ2UtY29udGVudFtfbmdjb250ZW50LSVDT01QJV17ZGlzcGxheTpub25lfS5tYXQtYmFkZ2UtZGlzYWJsZWRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1iYWRnZS1jb250ZW50W19uZ2NvbnRlbnQtJUNPTVAlXXtiYWNrZ3JvdW5kOiNiOWI5Yjk7Y29sb3I6Izc1NzU3NX0ubWF0LWJhZGdlLWNvbnRlbnRbX25nY29udGVudC0lQ09NUCVde3Bvc2l0aW9uOmFic29sdXRlO3RleHQtYWxpZ246Y2VudGVyO2Rpc3BsYXk6aW5saW5lLWJsb2NrO2JvcmRlci1yYWRpdXM6NTAlO3RyYW5zaXRpb246dHJhbnNmb3JtIDIwMG1zIGVhc2UtaW4tb3V0O3RyYW5zZm9ybTpzY2FsZSgwLjYpO292ZXJmbG93OmhpZGRlbjt3aGl0ZS1zcGFjZTpub3dyYXA7dGV4dC1vdmVyZmxvdzplbGxpcHNpcztwb2ludGVyLWV2ZW50czpub25lfS5uZy1hbmltYXRlLWRpc2FibGVkW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtYmFkZ2UtY29udGVudFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtYmFkZ2UtY29udGVudC5fbWF0LWFuaW1hdGlvbi1ub29wYWJsZVtfbmdjb250ZW50LSVDT01QJV17dHJhbnNpdGlvbjpub25lfS5tYXQtYmFkZ2UtY29udGVudC5tYXQtYmFkZ2UtYWN0aXZlW19uZ2NvbnRlbnQtJUNPTVAlXXt0cmFuc2Zvcm06bm9uZX0ubWF0LWJhZGdlLXNtYWxsW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtYmFkZ2UtY29udGVudFtfbmdjb250ZW50LSVDT01QJV17d2lkdGg6MTZweDtoZWlnaHQ6MTZweDtsaW5lLWhlaWdodDoxNnB4fS5tYXQtYmFkZ2Utc21hbGwubWF0LWJhZGdlLWFib3ZlW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtYmFkZ2UtY29udGVudFtfbmdjb250ZW50LSVDT01QJV17dG9wOi04cHh9Lm1hdC1iYWRnZS1zbWFsbC5tYXQtYmFkZ2UtYmVsb3dbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1iYWRnZS1jb250ZW50W19uZ2NvbnRlbnQtJUNPTVAlXXtib3R0b206LThweH0ubWF0LWJhZGdlLXNtYWxsLm1hdC1iYWRnZS1iZWZvcmVbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1iYWRnZS1jb250ZW50W19uZ2NvbnRlbnQtJUNPTVAlXXtsZWZ0Oi0xNnB4fVtkaXI9cnRsXVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWJhZGdlLXNtYWxsLm1hdC1iYWRnZS1iZWZvcmVbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1iYWRnZS1jb250ZW50W19uZ2NvbnRlbnQtJUNPTVAlXXtsZWZ0OmF1dG87cmlnaHQ6LTE2cHh9Lm1hdC1iYWRnZS1zbWFsbC5tYXQtYmFkZ2UtYWZ0ZXJbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1iYWRnZS1jb250ZW50W19uZ2NvbnRlbnQtJUNPTVAlXXtyaWdodDotMTZweH1bZGlyPXJ0bF1bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1iYWRnZS1zbWFsbC5tYXQtYmFkZ2UtYWZ0ZXJbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1iYWRnZS1jb250ZW50W19uZ2NvbnRlbnQtJUNPTVAlXXtyaWdodDphdXRvO2xlZnQ6LTE2cHh9Lm1hdC1iYWRnZS1zbWFsbC5tYXQtYmFkZ2Utb3ZlcmxhcC5tYXQtYmFkZ2UtYmVmb3JlW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtYmFkZ2UtY29udGVudFtfbmdjb250ZW50LSVDT01QJV17bGVmdDotOHB4fVtkaXI9cnRsXVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWJhZGdlLXNtYWxsLm1hdC1iYWRnZS1vdmVybGFwLm1hdC1iYWRnZS1iZWZvcmVbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1iYWRnZS1jb250ZW50W19uZ2NvbnRlbnQtJUNPTVAlXXtsZWZ0OmF1dG87cmlnaHQ6LThweH0ubWF0LWJhZGdlLXNtYWxsLm1hdC1iYWRnZS1vdmVybGFwLm1hdC1iYWRnZS1hZnRlcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWJhZGdlLWNvbnRlbnRbX25nY29udGVudC0lQ09NUCVde3JpZ2h0Oi04cHh9W2Rpcj1ydGxdW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtYmFkZ2Utc21hbGwubWF0LWJhZGdlLW92ZXJsYXAubWF0LWJhZGdlLWFmdGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtYmFkZ2UtY29udGVudFtfbmdjb250ZW50LSVDT01QJV17cmlnaHQ6YXV0bztsZWZ0Oi04cHh9Lm1hdC1iYWRnZS1tZWRpdW1bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1iYWRnZS1jb250ZW50W19uZ2NvbnRlbnQtJUNPTVAlXXt3aWR0aDoyMnB4O2hlaWdodDoyMnB4O2xpbmUtaGVpZ2h0OjIycHh9Lm1hdC1iYWRnZS1tZWRpdW0ubWF0LWJhZGdlLWFib3ZlW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtYmFkZ2UtY29udGVudFtfbmdjb250ZW50LSVDT01QJV17dG9wOi0xMXB4fS5tYXQtYmFkZ2UtbWVkaXVtLm1hdC1iYWRnZS1iZWxvd1tfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWJhZGdlLWNvbnRlbnRbX25nY29udGVudC0lQ09NUCVde2JvdHRvbTotMTFweH0ubWF0LWJhZGdlLW1lZGl1bS5tYXQtYmFkZ2UtYmVmb3JlW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtYmFkZ2UtY29udGVudFtfbmdjb250ZW50LSVDT01QJV17bGVmdDotMjJweH1bZGlyPXJ0bF1bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1iYWRnZS1tZWRpdW0ubWF0LWJhZGdlLWJlZm9yZVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWJhZGdlLWNvbnRlbnRbX25nY29udGVudC0lQ09NUCVde2xlZnQ6YXV0bztyaWdodDotMjJweH0ubWF0LWJhZGdlLW1lZGl1bS5tYXQtYmFkZ2UtYWZ0ZXJbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1iYWRnZS1jb250ZW50W19uZ2NvbnRlbnQtJUNPTVAlXXtyaWdodDotMjJweH1bZGlyPXJ0bF1bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1iYWRnZS1tZWRpdW0ubWF0LWJhZGdlLWFmdGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtYmFkZ2UtY29udGVudFtfbmdjb250ZW50LSVDT01QJV17cmlnaHQ6YXV0bztsZWZ0Oi0yMnB4fS5tYXQtYmFkZ2UtbWVkaXVtLm1hdC1iYWRnZS1vdmVybGFwLm1hdC1iYWRnZS1iZWZvcmVbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1iYWRnZS1jb250ZW50W19uZ2NvbnRlbnQtJUNPTVAlXXtsZWZ0Oi0xMXB4fVtkaXI9cnRsXVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWJhZGdlLW1lZGl1bS5tYXQtYmFkZ2Utb3ZlcmxhcC5tYXQtYmFkZ2UtYmVmb3JlW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtYmFkZ2UtY29udGVudFtfbmdjb250ZW50LSVDT01QJV17bGVmdDphdXRvO3JpZ2h0Oi0xMXB4fS5tYXQtYmFkZ2UtbWVkaXVtLm1hdC1iYWRnZS1vdmVybGFwLm1hdC1iYWRnZS1hZnRlcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWJhZGdlLWNvbnRlbnRbX25nY29udGVudC0lQ09NUCVde3JpZ2h0Oi0xMXB4fVtkaXI9cnRsXVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWJhZGdlLW1lZGl1bS5tYXQtYmFkZ2Utb3ZlcmxhcC5tYXQtYmFkZ2UtYWZ0ZXJbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1iYWRnZS1jb250ZW50W19uZ2NvbnRlbnQtJUNPTVAlXXtyaWdodDphdXRvO2xlZnQ6LTExcHh9Lm1hdC1iYWRnZS1sYXJnZVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWJhZGdlLWNvbnRlbnRbX25nY29udGVudC0lQ09NUCVde3dpZHRoOjI4cHg7aGVpZ2h0OjI4cHg7bGluZS1oZWlnaHQ6MjhweH0ubWF0LWJhZGdlLWxhcmdlLm1hdC1iYWRnZS1hYm92ZVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWJhZGdlLWNvbnRlbnRbX25nY29udGVudC0lQ09NUCVde3RvcDotMTRweH0ubWF0LWJhZGdlLWxhcmdlLm1hdC1iYWRnZS1iZWxvd1tfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWJhZGdlLWNvbnRlbnRbX25nY29udGVudC0lQ09NUCVde2JvdHRvbTotMTRweH0ubWF0LWJhZGdlLWxhcmdlLm1hdC1iYWRnZS1iZWZvcmVbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1iYWRnZS1jb250ZW50W19uZ2NvbnRlbnQtJUNPTVAlXXtsZWZ0Oi0yOHB4fVtkaXI9cnRsXVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWJhZGdlLWxhcmdlLm1hdC1iYWRnZS1iZWZvcmVbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1iYWRnZS1jb250ZW50W19uZ2NvbnRlbnQtJUNPTVAlXXtsZWZ0OmF1dG87cmlnaHQ6LTI4cHh9Lm1hdC1iYWRnZS1sYXJnZS5tYXQtYmFkZ2UtYWZ0ZXJbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1iYWRnZS1jb250ZW50W19uZ2NvbnRlbnQtJUNPTVAlXXtyaWdodDotMjhweH1bZGlyPXJ0bF1bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1iYWRnZS1sYXJnZS5tYXQtYmFkZ2UtYWZ0ZXJbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1iYWRnZS1jb250ZW50W19uZ2NvbnRlbnQtJUNPTVAlXXtyaWdodDphdXRvO2xlZnQ6LTI4cHh9Lm1hdC1iYWRnZS1sYXJnZS5tYXQtYmFkZ2Utb3ZlcmxhcC5tYXQtYmFkZ2UtYmVmb3JlW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtYmFkZ2UtY29udGVudFtfbmdjb250ZW50LSVDT01QJV17bGVmdDotMTRweH1bZGlyPXJ0bF1bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1iYWRnZS1sYXJnZS5tYXQtYmFkZ2Utb3ZlcmxhcC5tYXQtYmFkZ2UtYmVmb3JlW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtYmFkZ2UtY29udGVudFtfbmdjb250ZW50LSVDT01QJV17bGVmdDphdXRvO3JpZ2h0Oi0xNHB4fS5tYXQtYmFkZ2UtbGFyZ2UubWF0LWJhZGdlLW92ZXJsYXAubWF0LWJhZGdlLWFmdGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtYmFkZ2UtY29udGVudFtfbmdjb250ZW50LSVDT01QJV17cmlnaHQ6LTE0cHh9W2Rpcj1ydGxdW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtYmFkZ2UtbGFyZ2UubWF0LWJhZGdlLW92ZXJsYXAubWF0LWJhZGdlLWFmdGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtYmFkZ2UtY29udGVudFtfbmdjb250ZW50LSVDT01QJV17cmlnaHQ6YXV0bztsZWZ0Oi0xNHB4fS5tYXQtYm90dG9tLXNoZWV0LWNvbnRhaW5lcltfbmdjb250ZW50LSVDT01QJV17Ym94LXNoYWRvdzowcHggOHB4IDEwcHggLTVweCByZ2JhKDAsIDAsIDAsIDAuMiksMHB4IDE2cHggMjRweCAycHggcmdiYSgwLCAwLCAwLCAwLjE0KSwwcHggNnB4IDMwcHggNXB4IHJnYmEoMCwgMCwgMCwgMC4xMik7YmFja2dyb3VuZDojZmZmO2NvbG9yOiMyMTIxMjF9Lm1hdC1idXR0b25bX25nY29udGVudC0lQ09NUCVdLCAubWF0LWljb24tYnV0dG9uW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1zdHJva2VkLWJ1dHRvbltfbmdjb250ZW50LSVDT01QJV17Y29sb3I6aW5oZXJpdDtiYWNrZ3JvdW5kOnRyYW5zcGFyZW50fS5tYXQtYnV0dG9uLm1hdC1wcmltYXJ5W19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1pY29uLWJ1dHRvbi5tYXQtcHJpbWFyeVtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtc3Ryb2tlZC1idXR0b24ubWF0LXByaW1hcnlbX25nY29udGVudC0lQ09NUCVde2NvbG9yOiNmNTdjMDB9Lm1hdC1idXR0b24ubWF0LWFjY2VudFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtaWNvbi1idXR0b24ubWF0LWFjY2VudFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtc3Ryb2tlZC1idXR0b24ubWF0LWFjY2VudFtfbmdjb250ZW50LSVDT01QJV17Y29sb3I6I2ZmOTgwMH0ubWF0LWJ1dHRvbi5tYXQtd2Fybltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtaWNvbi1idXR0b24ubWF0LXdhcm5bX25nY29udGVudC0lQ09NUCVdLCAubWF0LXN0cm9rZWQtYnV0dG9uLm1hdC13YXJuW19uZ2NvbnRlbnQtJUNPTVAlXXtjb2xvcjojZjQ0MzM2fS5tYXQtYnV0dG9uLm1hdC1wcmltYXJ5Lm1hdC1idXR0b24tZGlzYWJsZWRbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWJ1dHRvbi5tYXQtYWNjZW50Lm1hdC1idXR0b24tZGlzYWJsZWRbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWJ1dHRvbi5tYXQtd2Fybi5tYXQtYnV0dG9uLWRpc2FibGVkW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1idXR0b24ubWF0LWJ1dHRvbi1kaXNhYmxlZC5tYXQtYnV0dG9uLWRpc2FibGVkW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1pY29uLWJ1dHRvbi5tYXQtcHJpbWFyeS5tYXQtYnV0dG9uLWRpc2FibGVkW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1pY29uLWJ1dHRvbi5tYXQtYWNjZW50Lm1hdC1idXR0b24tZGlzYWJsZWRbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWljb24tYnV0dG9uLm1hdC13YXJuLm1hdC1idXR0b24tZGlzYWJsZWRbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWljb24tYnV0dG9uLm1hdC1idXR0b24tZGlzYWJsZWQubWF0LWJ1dHRvbi1kaXNhYmxlZFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtc3Ryb2tlZC1idXR0b24ubWF0LXByaW1hcnkubWF0LWJ1dHRvbi1kaXNhYmxlZFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtc3Ryb2tlZC1idXR0b24ubWF0LWFjY2VudC5tYXQtYnV0dG9uLWRpc2FibGVkW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1zdHJva2VkLWJ1dHRvbi5tYXQtd2Fybi5tYXQtYnV0dG9uLWRpc2FibGVkW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1zdHJva2VkLWJ1dHRvbi5tYXQtYnV0dG9uLWRpc2FibGVkLm1hdC1idXR0b24tZGlzYWJsZWRbX25nY29udGVudC0lQ09NUCVde2NvbG9yOnJnYmEoMCwwLDAsLjI2KX0ubWF0LWJ1dHRvbi5tYXQtcHJpbWFyeVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWJ1dHRvbi1mb2N1cy1vdmVybGF5W19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1pY29uLWJ1dHRvbi5tYXQtcHJpbWFyeVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWJ1dHRvbi1mb2N1cy1vdmVybGF5W19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1zdHJva2VkLWJ1dHRvbi5tYXQtcHJpbWFyeVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWJ1dHRvbi1mb2N1cy1vdmVybGF5W19uZ2NvbnRlbnQtJUNPTVAlXXtiYWNrZ3JvdW5kLWNvbG9yOiNmNTdjMDB9Lm1hdC1idXR0b24ubWF0LWFjY2VudFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWJ1dHRvbi1mb2N1cy1vdmVybGF5W19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1pY29uLWJ1dHRvbi5tYXQtYWNjZW50W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtYnV0dG9uLWZvY3VzLW92ZXJsYXlbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXN0cm9rZWQtYnV0dG9uLm1hdC1hY2NlbnRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1idXR0b24tZm9jdXMtb3ZlcmxheVtfbmdjb250ZW50LSVDT01QJV17YmFja2dyb3VuZC1jb2xvcjojZmY5ODAwfS5tYXQtYnV0dG9uLm1hdC13YXJuW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtYnV0dG9uLWZvY3VzLW92ZXJsYXlbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWljb24tYnV0dG9uLm1hdC13YXJuW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtYnV0dG9uLWZvY3VzLW92ZXJsYXlbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXN0cm9rZWQtYnV0dG9uLm1hdC13YXJuW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtYnV0dG9uLWZvY3VzLW92ZXJsYXlbX25nY29udGVudC0lQ09NUCVde2JhY2tncm91bmQtY29sb3I6I2Y0NDMzNn0ubWF0LWJ1dHRvbi5tYXQtYnV0dG9uLWRpc2FibGVkW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtYnV0dG9uLWZvY3VzLW92ZXJsYXlbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWljb24tYnV0dG9uLm1hdC1idXR0b24tZGlzYWJsZWRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1idXR0b24tZm9jdXMtb3ZlcmxheVtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtc3Ryb2tlZC1idXR0b24ubWF0LWJ1dHRvbi1kaXNhYmxlZFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWJ1dHRvbi1mb2N1cy1vdmVybGF5W19uZ2NvbnRlbnQtJUNPTVAlXXtiYWNrZ3JvdW5kLWNvbG9yOnRyYW5zcGFyZW50fS5tYXQtYnV0dG9uW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtcmlwcGxlLWVsZW1lbnRbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWljb24tYnV0dG9uW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtcmlwcGxlLWVsZW1lbnRbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXN0cm9rZWQtYnV0dG9uW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtcmlwcGxlLWVsZW1lbnRbX25nY29udGVudC0lQ09NUCVde29wYWNpdHk6LjE7YmFja2dyb3VuZC1jb2xvcjpjdXJyZW50Q29sb3J9Lm1hdC1idXR0b24tZm9jdXMtb3ZlcmxheVtfbmdjb250ZW50LSVDT01QJV17YmFja2dyb3VuZDojMDAwfS5tYXQtc3Ryb2tlZC1idXR0b25bX25nY29udGVudC0lQ09NUCVdOm5vdCgubWF0LWJ1dHRvbi1kaXNhYmxlZCl7Ym9yZGVyLWNvbG9yOnJnYmEoMCwwLDAsLjEyKX0ubWF0LWZsYXQtYnV0dG9uW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1yYWlzZWQtYnV0dG9uW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1mYWJbX25nY29udGVudC0lQ09NUCVdLCAubWF0LW1pbmktZmFiW19uZ2NvbnRlbnQtJUNPTVAlXXtjb2xvcjojMjEyMTIxO2JhY2tncm91bmQtY29sb3I6I2ZmZn0ubWF0LWZsYXQtYnV0dG9uLm1hdC1wcmltYXJ5W19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1yYWlzZWQtYnV0dG9uLm1hdC1wcmltYXJ5W19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1mYWIubWF0LXByaW1hcnlbX25nY29udGVudC0lQ09NUCVdLCAubWF0LW1pbmktZmFiLm1hdC1wcmltYXJ5W19uZ2NvbnRlbnQtJUNPTVAlXXtjb2xvcjojZmZmfS5tYXQtZmxhdC1idXR0b24ubWF0LWFjY2VudFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtcmFpc2VkLWJ1dHRvbi5tYXQtYWNjZW50W19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1mYWIubWF0LWFjY2VudFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtbWluaS1mYWIubWF0LWFjY2VudFtfbmdjb250ZW50LSVDT01QJV17Y29sb3I6I2ZmZn0ubWF0LWZsYXQtYnV0dG9uLm1hdC13YXJuW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1yYWlzZWQtYnV0dG9uLm1hdC13YXJuW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1mYWIubWF0LXdhcm5bX25nY29udGVudC0lQ09NUCVdLCAubWF0LW1pbmktZmFiLm1hdC13YXJuW19uZ2NvbnRlbnQtJUNPTVAlXXtjb2xvcjojZmZmfS5tYXQtZmxhdC1idXR0b24ubWF0LXByaW1hcnkubWF0LWJ1dHRvbi1kaXNhYmxlZFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtZmxhdC1idXR0b24ubWF0LWFjY2VudC5tYXQtYnV0dG9uLWRpc2FibGVkW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1mbGF0LWJ1dHRvbi5tYXQtd2Fybi5tYXQtYnV0dG9uLWRpc2FibGVkW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1mbGF0LWJ1dHRvbi5tYXQtYnV0dG9uLWRpc2FibGVkLm1hdC1idXR0b24tZGlzYWJsZWRbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXJhaXNlZC1idXR0b24ubWF0LXByaW1hcnkubWF0LWJ1dHRvbi1kaXNhYmxlZFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtcmFpc2VkLWJ1dHRvbi5tYXQtYWNjZW50Lm1hdC1idXR0b24tZGlzYWJsZWRbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXJhaXNlZC1idXR0b24ubWF0LXdhcm4ubWF0LWJ1dHRvbi1kaXNhYmxlZFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtcmFpc2VkLWJ1dHRvbi5tYXQtYnV0dG9uLWRpc2FibGVkLm1hdC1idXR0b24tZGlzYWJsZWRbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWZhYi5tYXQtcHJpbWFyeS5tYXQtYnV0dG9uLWRpc2FibGVkW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1mYWIubWF0LWFjY2VudC5tYXQtYnV0dG9uLWRpc2FibGVkW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1mYWIubWF0LXdhcm4ubWF0LWJ1dHRvbi1kaXNhYmxlZFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtZmFiLm1hdC1idXR0b24tZGlzYWJsZWQubWF0LWJ1dHRvbi1kaXNhYmxlZFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtbWluaS1mYWIubWF0LXByaW1hcnkubWF0LWJ1dHRvbi1kaXNhYmxlZFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtbWluaS1mYWIubWF0LWFjY2VudC5tYXQtYnV0dG9uLWRpc2FibGVkW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1taW5pLWZhYi5tYXQtd2Fybi5tYXQtYnV0dG9uLWRpc2FibGVkW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1taW5pLWZhYi5tYXQtYnV0dG9uLWRpc2FibGVkLm1hdC1idXR0b24tZGlzYWJsZWRbX25nY29udGVudC0lQ09NUCVde2NvbG9yOnJnYmEoMCwwLDAsLjI2KX0ubWF0LWZsYXQtYnV0dG9uLm1hdC1wcmltYXJ5W19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1yYWlzZWQtYnV0dG9uLm1hdC1wcmltYXJ5W19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1mYWIubWF0LXByaW1hcnlbX25nY29udGVudC0lQ09NUCVdLCAubWF0LW1pbmktZmFiLm1hdC1wcmltYXJ5W19uZ2NvbnRlbnQtJUNPTVAlXXtiYWNrZ3JvdW5kLWNvbG9yOiNmNTdjMDB9Lm1hdC1mbGF0LWJ1dHRvbi5tYXQtYWNjZW50W19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1yYWlzZWQtYnV0dG9uLm1hdC1hY2NlbnRbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWZhYi5tYXQtYWNjZW50W19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1taW5pLWZhYi5tYXQtYWNjZW50W19uZ2NvbnRlbnQtJUNPTVAlXXtiYWNrZ3JvdW5kLWNvbG9yOiNmZjk4MDB9Lm1hdC1mbGF0LWJ1dHRvbi5tYXQtd2Fybltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtcmFpc2VkLWJ1dHRvbi5tYXQtd2Fybltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtZmFiLm1hdC13YXJuW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1taW5pLWZhYi5tYXQtd2Fybltfbmdjb250ZW50LSVDT01QJV17YmFja2dyb3VuZC1jb2xvcjojZjQ0MzM2fS5tYXQtZmxhdC1idXR0b24ubWF0LXByaW1hcnkubWF0LWJ1dHRvbi1kaXNhYmxlZFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtZmxhdC1idXR0b24ubWF0LWFjY2VudC5tYXQtYnV0dG9uLWRpc2FibGVkW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1mbGF0LWJ1dHRvbi5tYXQtd2Fybi5tYXQtYnV0dG9uLWRpc2FibGVkW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1mbGF0LWJ1dHRvbi5tYXQtYnV0dG9uLWRpc2FibGVkLm1hdC1idXR0b24tZGlzYWJsZWRbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXJhaXNlZC1idXR0b24ubWF0LXByaW1hcnkubWF0LWJ1dHRvbi1kaXNhYmxlZFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtcmFpc2VkLWJ1dHRvbi5tYXQtYWNjZW50Lm1hdC1idXR0b24tZGlzYWJsZWRbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXJhaXNlZC1idXR0b24ubWF0LXdhcm4ubWF0LWJ1dHRvbi1kaXNhYmxlZFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtcmFpc2VkLWJ1dHRvbi5tYXQtYnV0dG9uLWRpc2FibGVkLm1hdC1idXR0b24tZGlzYWJsZWRbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWZhYi5tYXQtcHJpbWFyeS5tYXQtYnV0dG9uLWRpc2FibGVkW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1mYWIubWF0LWFjY2VudC5tYXQtYnV0dG9uLWRpc2FibGVkW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1mYWIubWF0LXdhcm4ubWF0LWJ1dHRvbi1kaXNhYmxlZFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtZmFiLm1hdC1idXR0b24tZGlzYWJsZWQubWF0LWJ1dHRvbi1kaXNhYmxlZFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtbWluaS1mYWIubWF0LXByaW1hcnkubWF0LWJ1dHRvbi1kaXNhYmxlZFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtbWluaS1mYWIubWF0LWFjY2VudC5tYXQtYnV0dG9uLWRpc2FibGVkW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1taW5pLWZhYi5tYXQtd2Fybi5tYXQtYnV0dG9uLWRpc2FibGVkW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1taW5pLWZhYi5tYXQtYnV0dG9uLWRpc2FibGVkLm1hdC1idXR0b24tZGlzYWJsZWRbX25nY29udGVudC0lQ09NUCVde2JhY2tncm91bmQtY29sb3I6cmdiYSgwLDAsMCwuMTIpfS5tYXQtZmxhdC1idXR0b24ubWF0LXByaW1hcnlbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1yaXBwbGUtZWxlbWVudFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtcmFpc2VkLWJ1dHRvbi5tYXQtcHJpbWFyeVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXJpcHBsZS1lbGVtZW50W19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1mYWIubWF0LXByaW1hcnlbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1yaXBwbGUtZWxlbWVudFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtbWluaS1mYWIubWF0LXByaW1hcnlbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1yaXBwbGUtZWxlbWVudFtfbmdjb250ZW50LSVDT01QJV17YmFja2dyb3VuZC1jb2xvcjpyZ2JhKDI1NSwyNTUsMjU1LC4xKX0ubWF0LWZsYXQtYnV0dG9uLm1hdC1hY2NlbnRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1yaXBwbGUtZWxlbWVudFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtcmFpc2VkLWJ1dHRvbi5tYXQtYWNjZW50W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtcmlwcGxlLWVsZW1lbnRbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWZhYi5tYXQtYWNjZW50W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtcmlwcGxlLWVsZW1lbnRbX25nY29udGVudC0lQ09NUCVdLCAubWF0LW1pbmktZmFiLm1hdC1hY2NlbnRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1yaXBwbGUtZWxlbWVudFtfbmdjb250ZW50LSVDT01QJV17YmFja2dyb3VuZC1jb2xvcjpyZ2JhKDI1NSwyNTUsMjU1LC4xKX0ubWF0LWZsYXQtYnV0dG9uLm1hdC13YXJuW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtcmlwcGxlLWVsZW1lbnRbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXJhaXNlZC1idXR0b24ubWF0LXdhcm5bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1yaXBwbGUtZWxlbWVudFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtZmFiLm1hdC13YXJuW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtcmlwcGxlLWVsZW1lbnRbX25nY29udGVudC0lQ09NUCVdLCAubWF0LW1pbmktZmFiLm1hdC13YXJuW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtcmlwcGxlLWVsZW1lbnRbX25nY29udGVudC0lQ09NUCVde2JhY2tncm91bmQtY29sb3I6cmdiYSgyNTUsMjU1LDI1NSwuMSl9Lm1hdC1zdHJva2VkLWJ1dHRvbltfbmdjb250ZW50LSVDT01QJV06bm90KFtjbGFzcyo9bWF0LWVsZXZhdGlvbi16XSksIC5tYXQtZmxhdC1idXR0b25bX25nY29udGVudC0lQ09NUCVdOm5vdChbY2xhc3MqPW1hdC1lbGV2YXRpb24tel0pe2JveC1zaGFkb3c6MHB4IDBweCAwcHggMHB4IHJnYmEoMCwgMCwgMCwgMC4yKSwwcHggMHB4IDBweCAwcHggcmdiYSgwLCAwLCAwLCAwLjE0KSwwcHggMHB4IDBweCAwcHggcmdiYSgwLCAwLCAwLCAwLjEyKX0ubWF0LXJhaXNlZC1idXR0b25bX25nY29udGVudC0lQ09NUCVdOm5vdChbY2xhc3MqPW1hdC1lbGV2YXRpb24tel0pe2JveC1zaGFkb3c6MHB4IDNweCAxcHggLTJweCByZ2JhKDAsIDAsIDAsIDAuMiksMHB4IDJweCAycHggMHB4IHJnYmEoMCwgMCwgMCwgMC4xNCksMHB4IDFweCA1cHggMHB4IHJnYmEoMCwgMCwgMCwgMC4xMil9Lm1hdC1yYWlzZWQtYnV0dG9uW19uZ2NvbnRlbnQtJUNPTVAlXTpub3QoLm1hdC1idXR0b24tZGlzYWJsZWQpOmFjdGl2ZTpub3QoW2NsYXNzKj1tYXQtZWxldmF0aW9uLXpdKXtib3gtc2hhZG93OjBweCA1cHggNXB4IC0zcHggcmdiYSgwLCAwLCAwLCAwLjIpLDBweCA4cHggMTBweCAxcHggcmdiYSgwLCAwLCAwLCAwLjE0KSwwcHggM3B4IDE0cHggMnB4IHJnYmEoMCwgMCwgMCwgMC4xMil9Lm1hdC1yYWlzZWQtYnV0dG9uLm1hdC1idXR0b24tZGlzYWJsZWRbX25nY29udGVudC0lQ09NUCVdOm5vdChbY2xhc3MqPW1hdC1lbGV2YXRpb24tel0pe2JveC1zaGFkb3c6MHB4IDBweCAwcHggMHB4IHJnYmEoMCwgMCwgMCwgMC4yKSwwcHggMHB4IDBweCAwcHggcmdiYSgwLCAwLCAwLCAwLjE0KSwwcHggMHB4IDBweCAwcHggcmdiYSgwLCAwLCAwLCAwLjEyKX0ubWF0LWZhYltfbmdjb250ZW50LSVDT01QJV06bm90KFtjbGFzcyo9bWF0LWVsZXZhdGlvbi16XSksIC5tYXQtbWluaS1mYWJbX25nY29udGVudC0lQ09NUCVdOm5vdChbY2xhc3MqPW1hdC1lbGV2YXRpb24tel0pe2JveC1zaGFkb3c6MHB4IDNweCA1cHggLTFweCByZ2JhKDAsIDAsIDAsIDAuMiksMHB4IDZweCAxMHB4IDBweCByZ2JhKDAsIDAsIDAsIDAuMTQpLDBweCAxcHggMThweCAwcHggcmdiYSgwLCAwLCAwLCAwLjEyKX0ubWF0LWZhYltfbmdjb250ZW50LSVDT01QJV06bm90KC5tYXQtYnV0dG9uLWRpc2FibGVkKTphY3RpdmU6bm90KFtjbGFzcyo9bWF0LWVsZXZhdGlvbi16XSksIC5tYXQtbWluaS1mYWJbX25nY29udGVudC0lQ09NUCVdOm5vdCgubWF0LWJ1dHRvbi1kaXNhYmxlZCk6YWN0aXZlOm5vdChbY2xhc3MqPW1hdC1lbGV2YXRpb24tel0pe2JveC1zaGFkb3c6MHB4IDdweCA4cHggLTRweCByZ2JhKDAsIDAsIDAsIDAuMiksMHB4IDEycHggMTdweCAycHggcmdiYSgwLCAwLCAwLCAwLjE0KSwwcHggNXB4IDIycHggNHB4IHJnYmEoMCwgMCwgMCwgMC4xMil9Lm1hdC1mYWIubWF0LWJ1dHRvbi1kaXNhYmxlZFtfbmdjb250ZW50LSVDT01QJV06bm90KFtjbGFzcyo9bWF0LWVsZXZhdGlvbi16XSksIC5tYXQtbWluaS1mYWIubWF0LWJ1dHRvbi1kaXNhYmxlZFtfbmdjb250ZW50LSVDT01QJV06bm90KFtjbGFzcyo9bWF0LWVsZXZhdGlvbi16XSl7Ym94LXNoYWRvdzowcHggMHB4IDBweCAwcHggcmdiYSgwLCAwLCAwLCAwLjIpLDBweCAwcHggMHB4IDBweCByZ2JhKDAsIDAsIDAsIDAuMTQpLDBweCAwcHggMHB4IDBweCByZ2JhKDAsIDAsIDAsIDAuMTIpfS5tYXQtYnV0dG9uLXRvZ2dsZS1zdGFuZGFsb25lW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1idXR0b24tdG9nZ2xlLWdyb3VwW19uZ2NvbnRlbnQtJUNPTVAlXXtib3gtc2hhZG93OjBweCAzcHggMXB4IC0ycHggcmdiYSgwLCAwLCAwLCAwLjIpLDBweCAycHggMnB4IDBweCByZ2JhKDAsIDAsIDAsIDAuMTQpLDBweCAxcHggNXB4IDBweCByZ2JhKDAsIDAsIDAsIDAuMTIpfS5tYXQtYnV0dG9uLXRvZ2dsZS1zdGFuZGFsb25lLm1hdC1idXR0b24tdG9nZ2xlLWFwcGVhcmFuY2Utc3RhbmRhcmRbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWJ1dHRvbi10b2dnbGUtZ3JvdXAtYXBwZWFyYW5jZS1zdGFuZGFyZFtfbmdjb250ZW50LSVDT01QJV17Ym94LXNoYWRvdzpub25lfS5tYXQtYnV0dG9uLXRvZ2dsZVtfbmdjb250ZW50LSVDT01QJV17Y29sb3I6cmdiYSgwLDAsMCwuMzgpfS5tYXQtYnV0dG9uLXRvZ2dsZVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWJ1dHRvbi10b2dnbGUtZm9jdXMtb3ZlcmxheVtfbmdjb250ZW50LSVDT01QJV17YmFja2dyb3VuZC1jb2xvcjpyZ2JhKDAsMCwwLC4xMil9Lm1hdC1idXR0b24tdG9nZ2xlLWFwcGVhcmFuY2Utc3RhbmRhcmRbX25nY29udGVudC0lQ09NUCVde2NvbG9yOiMyMTIxMjE7YmFja2dyb3VuZDojZmZmfS5tYXQtYnV0dG9uLXRvZ2dsZS1hcHBlYXJhbmNlLXN0YW5kYXJkW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtYnV0dG9uLXRvZ2dsZS1mb2N1cy1vdmVybGF5W19uZ2NvbnRlbnQtJUNPTVAlXXtiYWNrZ3JvdW5kLWNvbG9yOiMwMDB9Lm1hdC1idXR0b24tdG9nZ2xlLWdyb3VwLWFwcGVhcmFuY2Utc3RhbmRhcmRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1idXR0b24tdG9nZ2xlW19uZ2NvbnRlbnQtJUNPTVAlXSArIC5tYXQtYnV0dG9uLXRvZ2dsZVtfbmdjb250ZW50LSVDT01QJV17Ym9yZGVyLWxlZnQ6c29saWQgMXB4IHJnYmEoMCwwLDAsLjEyKX1bZGlyPXJ0bF1bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1idXR0b24tdG9nZ2xlLWdyb3VwLWFwcGVhcmFuY2Utc3RhbmRhcmRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1idXR0b24tdG9nZ2xlW19uZ2NvbnRlbnQtJUNPTVAlXSArIC5tYXQtYnV0dG9uLXRvZ2dsZVtfbmdjb250ZW50LSVDT01QJV17Ym9yZGVyLWxlZnQ6bm9uZTtib3JkZXItcmlnaHQ6c29saWQgMXB4IHJnYmEoMCwwLDAsLjEyKX0ubWF0LWJ1dHRvbi10b2dnbGUtZ3JvdXAtYXBwZWFyYW5jZS1zdGFuZGFyZC5tYXQtYnV0dG9uLXRvZ2dsZS12ZXJ0aWNhbFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWJ1dHRvbi10b2dnbGVbX25nY29udGVudC0lQ09NUCVdICsgLm1hdC1idXR0b24tdG9nZ2xlW19uZ2NvbnRlbnQtJUNPTVAlXXtib3JkZXItbGVmdDpub25lO2JvcmRlci1yaWdodDpub25lO2JvcmRlci10b3A6c29saWQgMXB4IHJnYmEoMCwwLDAsLjEyKX0ubWF0LWJ1dHRvbi10b2dnbGUtY2hlY2tlZFtfbmdjb250ZW50LSVDT01QJV17YmFja2dyb3VuZC1jb2xvcjojZTBlMGUwO2NvbG9yOiM2MTYxNjF9Lm1hdC1idXR0b24tdG9nZ2xlLWNoZWNrZWQubWF0LWJ1dHRvbi10b2dnbGUtYXBwZWFyYW5jZS1zdGFuZGFyZFtfbmdjb250ZW50LSVDT01QJV17Y29sb3I6IzIxMjEyMX0ubWF0LWJ1dHRvbi10b2dnbGUtZGlzYWJsZWRbX25nY29udGVudC0lQ09NUCVde2NvbG9yOnJnYmEoMCwwLDAsLjI2KTtiYWNrZ3JvdW5kLWNvbG9yOiNlZWV9Lm1hdC1idXR0b24tdG9nZ2xlLWRpc2FibGVkLm1hdC1idXR0b24tdG9nZ2xlLWFwcGVhcmFuY2Utc3RhbmRhcmRbX25nY29udGVudC0lQ09NUCVde2JhY2tncm91bmQ6I2ZmZn0ubWF0LWJ1dHRvbi10b2dnbGUtZGlzYWJsZWQubWF0LWJ1dHRvbi10b2dnbGUtY2hlY2tlZFtfbmdjb250ZW50LSVDT01QJV17YmFja2dyb3VuZC1jb2xvcjojYmRiZGJkfS5tYXQtYnV0dG9uLXRvZ2dsZS1zdGFuZGFsb25lLm1hdC1idXR0b24tdG9nZ2xlLWFwcGVhcmFuY2Utc3RhbmRhcmRbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWJ1dHRvbi10b2dnbGUtZ3JvdXAtYXBwZWFyYW5jZS1zdGFuZGFyZFtfbmdjb250ZW50LSVDT01QJV17Ym9yZGVyOnNvbGlkIDFweCByZ2JhKDAsMCwwLC4xMil9Lm1hdC1idXR0b24tdG9nZ2xlLWFwcGVhcmFuY2Utc3RhbmRhcmRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1idXR0b24tdG9nZ2xlLWxhYmVsLWNvbnRlbnRbX25nY29udGVudC0lQ09NUCVde2xpbmUtaGVpZ2h0OjQ4cHh9Lm1hdC1jYXJkW19uZ2NvbnRlbnQtJUNPTVAlXXtiYWNrZ3JvdW5kOiNmZmY7Y29sb3I6IzIxMjEyMX0ubWF0LWNhcmRbX25nY29udGVudC0lQ09NUCVdOm5vdChbY2xhc3MqPW1hdC1lbGV2YXRpb24tel0pe2JveC1zaGFkb3c6MHB4IDJweCAxcHggLTFweCByZ2JhKDAsIDAsIDAsIDAuMiksMHB4IDFweCAxcHggMHB4IHJnYmEoMCwgMCwgMCwgMC4xNCksMHB4IDFweCAzcHggMHB4IHJnYmEoMCwgMCwgMCwgMC4xMil9Lm1hdC1jYXJkLm1hdC1jYXJkLWZsYXRbX25nY29udGVudC0lQ09NUCVdOm5vdChbY2xhc3MqPW1hdC1lbGV2YXRpb24tel0pe2JveC1zaGFkb3c6MHB4IDBweCAwcHggMHB4IHJnYmEoMCwgMCwgMCwgMC4yKSwwcHggMHB4IDBweCAwcHggcmdiYSgwLCAwLCAwLCAwLjE0KSwwcHggMHB4IDBweCAwcHggcmdiYSgwLCAwLCAwLCAwLjEyKX0ubWF0LWNhcmQtc3VidGl0bGVbX25nY29udGVudC0lQ09NUCVde2NvbG9yOiM2MTYxNjF9Lm1hdC1jaGVja2JveC1mcmFtZVtfbmdjb250ZW50LSVDT01QJV17Ym9yZGVyLWNvbG9yOiM2MTYxNjF9Lm1hdC1jaGVja2JveC1jaGVja21hcmtbX25nY29udGVudC0lQ09NUCVde2ZpbGw6I2ZhZmFmYX0ubWF0LWNoZWNrYm94LWNoZWNrbWFyay1wYXRoW19uZ2NvbnRlbnQtJUNPTVAlXXtzdHJva2U6I2ZhZmFmYSAhaW1wb3J0YW50fS5tYXQtY2hlY2tib3gtbWl4ZWRtYXJrW19uZ2NvbnRlbnQtJUNPTVAlXXtiYWNrZ3JvdW5kLWNvbG9yOiNmYWZhZmF9Lm1hdC1jaGVja2JveC1pbmRldGVybWluYXRlLm1hdC1wcmltYXJ5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtY2hlY2tib3gtYmFja2dyb3VuZFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtY2hlY2tib3gtY2hlY2tlZC5tYXQtcHJpbWFyeVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWNoZWNrYm94LWJhY2tncm91bmRbX25nY29udGVudC0lQ09NUCVde2JhY2tncm91bmQtY29sb3I6I2Y1N2MwMH0ubWF0LWNoZWNrYm94LWluZGV0ZXJtaW5hdGUubWF0LWFjY2VudFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWNoZWNrYm94LWJhY2tncm91bmRbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWNoZWNrYm94LWNoZWNrZWQubWF0LWFjY2VudFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWNoZWNrYm94LWJhY2tncm91bmRbX25nY29udGVudC0lQ09NUCVde2JhY2tncm91bmQtY29sb3I6I2ZmOTgwMH0ubWF0LWNoZWNrYm94LWluZGV0ZXJtaW5hdGUubWF0LXdhcm5bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1jaGVja2JveC1iYWNrZ3JvdW5kW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1jaGVja2JveC1jaGVja2VkLm1hdC13YXJuW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtY2hlY2tib3gtYmFja2dyb3VuZFtfbmdjb250ZW50LSVDT01QJV17YmFja2dyb3VuZC1jb2xvcjojZjQ0MzM2fS5tYXQtY2hlY2tib3gtZGlzYWJsZWQubWF0LWNoZWNrYm94LWNoZWNrZWRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1jaGVja2JveC1iYWNrZ3JvdW5kW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1jaGVja2JveC1kaXNhYmxlZC5tYXQtY2hlY2tib3gtaW5kZXRlcm1pbmF0ZVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWNoZWNrYm94LWJhY2tncm91bmRbX25nY29udGVudC0lQ09NUCVde2JhY2tncm91bmQtY29sb3I6I2IwYjBiMH0ubWF0LWNoZWNrYm94LWRpc2FibGVkW19uZ2NvbnRlbnQtJUNPTVAlXTpub3QoLm1hdC1jaGVja2JveC1jaGVja2VkKSAgIC5tYXQtY2hlY2tib3gtZnJhbWVbX25nY29udGVudC0lQ09NUCVde2JvcmRlci1jb2xvcjojYjBiMGIwfS5tYXQtY2hlY2tib3gtZGlzYWJsZWRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1jaGVja2JveC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17Y29sb3I6IzYxNjE2MX0ubWF0LWNoZWNrYm94W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtcmlwcGxlLWVsZW1lbnRbX25nY29udGVudC0lQ09NUCVde2JhY2tncm91bmQtY29sb3I6IzAwMH0ubWF0LWNoZWNrYm94LWNoZWNrZWRbX25nY29udGVudC0lQ09NUCVdOm5vdCgubWF0LWNoZWNrYm94LWRpc2FibGVkKS5tYXQtcHJpbWFyeSAgIC5tYXQtcmlwcGxlLWVsZW1lbnRbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWNoZWNrYm94W19uZ2NvbnRlbnQtJUNPTVAlXTphY3RpdmU6bm90KC5tYXQtY2hlY2tib3gtZGlzYWJsZWQpLm1hdC1wcmltYXJ5ICAgLm1hdC1yaXBwbGUtZWxlbWVudFtfbmdjb250ZW50LSVDT01QJV17YmFja2dyb3VuZDojZjU3YzAwfS5tYXQtY2hlY2tib3gtY2hlY2tlZFtfbmdjb250ZW50LSVDT01QJV06bm90KC5tYXQtY2hlY2tib3gtZGlzYWJsZWQpLm1hdC1hY2NlbnQgICAubWF0LXJpcHBsZS1lbGVtZW50W19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1jaGVja2JveFtfbmdjb250ZW50LSVDT01QJV06YWN0aXZlOm5vdCgubWF0LWNoZWNrYm94LWRpc2FibGVkKS5tYXQtYWNjZW50ICAgLm1hdC1yaXBwbGUtZWxlbWVudFtfbmdjb250ZW50LSVDT01QJV17YmFja2dyb3VuZDojZmY5ODAwfS5tYXQtY2hlY2tib3gtY2hlY2tlZFtfbmdjb250ZW50LSVDT01QJV06bm90KC5tYXQtY2hlY2tib3gtZGlzYWJsZWQpLm1hdC13YXJuICAgLm1hdC1yaXBwbGUtZWxlbWVudFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtY2hlY2tib3hbX25nY29udGVudC0lQ09NUCVdOmFjdGl2ZTpub3QoLm1hdC1jaGVja2JveC1kaXNhYmxlZCkubWF0LXdhcm4gICAubWF0LXJpcHBsZS1lbGVtZW50W19uZ2NvbnRlbnQtJUNPTVAlXXtiYWNrZ3JvdW5kOiNmNDQzMzZ9Lm1hdC1jaGlwLm1hdC1zdGFuZGFyZC1jaGlwW19uZ2NvbnRlbnQtJUNPTVAlXXtiYWNrZ3JvdW5kLWNvbG9yOiNlMGUwZTA7Y29sb3I6IzIxMjEyMX0ubWF0LWNoaXAubWF0LXN0YW5kYXJkLWNoaXBbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1jaGlwLXJlbW92ZVtfbmdjb250ZW50LSVDT01QJV17Y29sb3I6IzIxMjEyMTtvcGFjaXR5Oi40fS5tYXQtY2hpcC5tYXQtc3RhbmRhcmQtY2hpcFtfbmdjb250ZW50LSVDT01QJV06bm90KC5tYXQtY2hpcC1kaXNhYmxlZCk6YWN0aXZle2JveC1zaGFkb3c6MHB4IDNweCAzcHggLTJweCByZ2JhKDAsIDAsIDAsIDAuMiksMHB4IDNweCA0cHggMHB4IHJnYmEoMCwgMCwgMCwgMC4xNCksMHB4IDFweCA4cHggMHB4IHJnYmEoMCwgMCwgMCwgMC4xMil9Lm1hdC1jaGlwLm1hdC1zdGFuZGFyZC1jaGlwW19uZ2NvbnRlbnQtJUNPTVAlXTpub3QoLm1hdC1jaGlwLWRpc2FibGVkKSAgIC5tYXQtY2hpcC1yZW1vdmVbX25nY29udGVudC0lQ09NUCVdOmhvdmVye29wYWNpdHk6LjU0fS5tYXQtY2hpcC5tYXQtc3RhbmRhcmQtY2hpcC5tYXQtY2hpcC1kaXNhYmxlZFtfbmdjb250ZW50LSVDT01QJV17b3BhY2l0eTouNH0ubWF0LWNoaXAubWF0LXN0YW5kYXJkLWNoaXBbX25nY29udGVudC0lQ09NUCVdOjphZnRlcntiYWNrZ3JvdW5kOiMwMDB9Lm1hdC1jaGlwLm1hdC1zdGFuZGFyZC1jaGlwLm1hdC1jaGlwLXNlbGVjdGVkLm1hdC1wcmltYXJ5W19uZ2NvbnRlbnQtJUNPTVAlXXtiYWNrZ3JvdW5kLWNvbG9yOiNmNTdjMDA7Y29sb3I6I2ZmZn0ubWF0LWNoaXAubWF0LXN0YW5kYXJkLWNoaXAubWF0LWNoaXAtc2VsZWN0ZWQubWF0LXByaW1hcnlbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1jaGlwLXJlbW92ZVtfbmdjb250ZW50LSVDT01QJV17Y29sb3I6I2ZmZjtvcGFjaXR5Oi40fS5tYXQtY2hpcC5tYXQtc3RhbmRhcmQtY2hpcC5tYXQtY2hpcC1zZWxlY3RlZC5tYXQtcHJpbWFyeVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXJpcHBsZS1lbGVtZW50W19uZ2NvbnRlbnQtJUNPTVAlXXtiYWNrZ3JvdW5kLWNvbG9yOnJnYmEoMjU1LDI1NSwyNTUsLjEpfS5tYXQtY2hpcC5tYXQtc3RhbmRhcmQtY2hpcC5tYXQtY2hpcC1zZWxlY3RlZC5tYXQtd2Fybltfbmdjb250ZW50LSVDT01QJV17YmFja2dyb3VuZC1jb2xvcjojZjQ0MzM2O2NvbG9yOiNmZmZ9Lm1hdC1jaGlwLm1hdC1zdGFuZGFyZC1jaGlwLm1hdC1jaGlwLXNlbGVjdGVkLm1hdC13YXJuW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtY2hpcC1yZW1vdmVbX25nY29udGVudC0lQ09NUCVde2NvbG9yOiNmZmY7b3BhY2l0eTouNH0ubWF0LWNoaXAubWF0LXN0YW5kYXJkLWNoaXAubWF0LWNoaXAtc2VsZWN0ZWQubWF0LXdhcm5bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1yaXBwbGUtZWxlbWVudFtfbmdjb250ZW50LSVDT01QJV17YmFja2dyb3VuZC1jb2xvcjpyZ2JhKDI1NSwyNTUsMjU1LC4xKX0ubWF0LWNoaXAubWF0LXN0YW5kYXJkLWNoaXAubWF0LWNoaXAtc2VsZWN0ZWQubWF0LWFjY2VudFtfbmdjb250ZW50LSVDT01QJV17YmFja2dyb3VuZC1jb2xvcjojZmY5ODAwO2NvbG9yOiNmZmZ9Lm1hdC1jaGlwLm1hdC1zdGFuZGFyZC1jaGlwLm1hdC1jaGlwLXNlbGVjdGVkLm1hdC1hY2NlbnRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1jaGlwLXJlbW92ZVtfbmdjb250ZW50LSVDT01QJV17Y29sb3I6I2ZmZjtvcGFjaXR5Oi40fS5tYXQtY2hpcC5tYXQtc3RhbmRhcmQtY2hpcC5tYXQtY2hpcC1zZWxlY3RlZC5tYXQtYWNjZW50W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtcmlwcGxlLWVsZW1lbnRbX25nY29udGVudC0lQ09NUCVde2JhY2tncm91bmQtY29sb3I6cmdiYSgyNTUsMjU1LDI1NSwuMSl9Lm1hdC10YWJsZVtfbmdjb250ZW50LSVDT01QJV17YmFja2dyb3VuZDojZmZmfS5tYXQtdGFibGVbX25nY29udGVudC0lQ09NUCVdICAgdGhlYWRbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXRhYmxlW19uZ2NvbnRlbnQtJUNPTVAlXSAgIHRib2R5W19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10YWJsZVtfbmdjb250ZW50LSVDT01QJV0gICB0Zm9vdFtfbmdjb250ZW50LSVDT01QJV0sIG1hdC1oZWFkZXItcm93W19uZ2NvbnRlbnQtJUNPTVAlXSwgbWF0LXJvd1tfbmdjb250ZW50LSVDT01QJV0sIG1hdC1mb290ZXItcm93W19uZ2NvbnRlbnQtJUNPTVAlXSwgW21hdC1oZWFkZXItcm93XVtfbmdjb250ZW50LSVDT01QJV0sIFttYXQtcm93XVtfbmdjb250ZW50LSVDT01QJV0sIFttYXQtZm9vdGVyLXJvd11bX25nY29udGVudC0lQ09NUCVdLCAubWF0LXRhYmxlLXN0aWNreVtfbmdjb250ZW50LSVDT01QJV17YmFja2dyb3VuZDppbmhlcml0fW1hdC1yb3dbX25nY29udGVudC0lQ09NUCVdLCBtYXQtaGVhZGVyLXJvd1tfbmdjb250ZW50LSVDT01QJV0sIG1hdC1mb290ZXItcm93W19uZ2NvbnRlbnQtJUNPTVAlXSwgdGgubWF0LWhlYWRlci1jZWxsW19uZ2NvbnRlbnQtJUNPTVAlXSwgdGQubWF0LWNlbGxbX25nY29udGVudC0lQ09NUCVdLCB0ZC5tYXQtZm9vdGVyLWNlbGxbX25nY29udGVudC0lQ09NUCVde2JvcmRlci1ib3R0b20tY29sb3I6cmdiYSgwLDAsMCwuMTIpfS5tYXQtaGVhZGVyLWNlbGxbX25nY29udGVudC0lQ09NUCVde2NvbG9yOiM2MTYxNjF9Lm1hdC1jZWxsW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1mb290ZXItY2VsbFtfbmdjb250ZW50LSVDT01QJV17Y29sb3I6IzIxMjEyMX0ubWF0LWNhbGVuZGFyLWFycm93W19uZ2NvbnRlbnQtJUNPTVAlXXtib3JkZXItdG9wLWNvbG9yOnJnYmEoMCwwLDAsLjU0KX0ubWF0LWRhdGVwaWNrZXItdG9nZ2xlW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1kYXRlcGlja2VyLWNvbnRlbnRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1jYWxlbmRhci1uZXh0LWJ1dHRvbltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtZGF0ZXBpY2tlci1jb250ZW50W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtY2FsZW5kYXItcHJldmlvdXMtYnV0dG9uW19uZ2NvbnRlbnQtJUNPTVAlXXtjb2xvcjpyZ2JhKDAsMCwwLC41NCl9Lm1hdC1jYWxlbmRhci10YWJsZS1oZWFkZXJbX25nY29udGVudC0lQ09NUCVde2NvbG9yOnJnYmEoMCwwLDAsLjM4KX0ubWF0LWNhbGVuZGFyLXRhYmxlLWhlYWRlci1kaXZpZGVyW19uZ2NvbnRlbnQtJUNPTVAlXTo6YWZ0ZXJ7YmFja2dyb3VuZDpyZ2JhKDAsMCwwLC4xMil9Lm1hdC1jYWxlbmRhci1ib2R5LWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXtjb2xvcjojNjE2MTYxfS5tYXQtY2FsZW5kYXItYm9keS1jZWxsLWNvbnRlbnRbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWRhdGUtcmFuZ2UtaW5wdXQtc2VwYXJhdG9yW19uZ2NvbnRlbnQtJUNPTVAlXXtjb2xvcjojMjEyMTIxO2JvcmRlci1jb2xvcjp0cmFuc3BhcmVudH0ubWF0LWNhbGVuZGFyLWJvZHktZGlzYWJsZWRbX25nY29udGVudC0lQ09NUCVdID4gLm1hdC1jYWxlbmRhci1ib2R5LWNlbGwtY29udGVudFtfbmdjb250ZW50LSVDT01QJV06bm90KC5tYXQtY2FsZW5kYXItYm9keS1zZWxlY3RlZCk6bm90KC5tYXQtY2FsZW5kYXItYm9keS1jb21wYXJpc29uLWlkZW50aWNhbCl7Y29sb3I6Izc1NzU3NX0ubWF0LWZvcm0tZmllbGQtZGlzYWJsZWRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1kYXRlLXJhbmdlLWlucHV0LXNlcGFyYXRvcltfbmdjb250ZW50LSVDT01QJV17Y29sb3I6Izc1NzU3NX0ubWF0LWNhbGVuZGFyLWJvZHktY2VsbFtfbmdjb250ZW50LSVDT01QJV06bm90KC5tYXQtY2FsZW5kYXItYm9keS1kaXNhYmxlZCk6aG92ZXIgPiAubWF0LWNhbGVuZGFyLWJvZHktY2VsbC1jb250ZW50W19uZ2NvbnRlbnQtJUNPTVAlXTpub3QoLm1hdC1jYWxlbmRhci1ib2R5LXNlbGVjdGVkKTpub3QoLm1hdC1jYWxlbmRhci1ib2R5LWNvbXBhcmlzb24taWRlbnRpY2FsKSwgLmNkay1rZXlib2FyZC1mb2N1c2VkW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtY2FsZW5kYXItYm9keS1hY3RpdmVbX25nY29udGVudC0lQ09NUCVdID4gLm1hdC1jYWxlbmRhci1ib2R5LWNlbGwtY29udGVudFtfbmdjb250ZW50LSVDT01QJV06bm90KC5tYXQtY2FsZW5kYXItYm9keS1zZWxlY3RlZCk6bm90KC5tYXQtY2FsZW5kYXItYm9keS1jb21wYXJpc29uLWlkZW50aWNhbCksIC5jZGstcHJvZ3JhbS1mb2N1c2VkW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtY2FsZW5kYXItYm9keS1hY3RpdmVbX25nY29udGVudC0lQ09NUCVdID4gLm1hdC1jYWxlbmRhci1ib2R5LWNlbGwtY29udGVudFtfbmdjb250ZW50LSVDT01QJV06bm90KC5tYXQtY2FsZW5kYXItYm9keS1zZWxlY3RlZCk6bm90KC5tYXQtY2FsZW5kYXItYm9keS1jb21wYXJpc29uLWlkZW50aWNhbCl7YmFja2dyb3VuZC1jb2xvcjpyZ2JhKDAsMCwwLC4wNCl9Lm1hdC1jYWxlbmRhci1ib2R5LWluLXByZXZpZXdbX25nY29udGVudC0lQ09NUCVde2NvbG9yOnJnYmEoMCwwLDAsLjI0KX0ubWF0LWNhbGVuZGFyLWJvZHktdG9kYXlbX25nY29udGVudC0lQ09NUCVdOm5vdCgubWF0LWNhbGVuZGFyLWJvZHktc2VsZWN0ZWQpOm5vdCgubWF0LWNhbGVuZGFyLWJvZHktY29tcGFyaXNvbi1pZGVudGljYWwpe2JvcmRlci1jb2xvcjpyZ2JhKDAsMCwwLC4zOCl9Lm1hdC1jYWxlbmRhci1ib2R5LWRpc2FibGVkW19uZ2NvbnRlbnQtJUNPTVAlXSA+IC5tYXQtY2FsZW5kYXItYm9keS10b2RheVtfbmdjb250ZW50LSVDT01QJV06bm90KC5tYXQtY2FsZW5kYXItYm9keS1zZWxlY3RlZCk6bm90KC5tYXQtY2FsZW5kYXItYm9keS1jb21wYXJpc29uLWlkZW50aWNhbCl7Ym9yZGVyLWNvbG9yOnJnYmEoMCwwLDAsLjE4KX0ubWF0LWNhbGVuZGFyLWJvZHktaW4tcmFuZ2VbX25nY29udGVudC0lQ09NUCVdOjpiZWZvcmV7YmFja2dyb3VuZDpyZ2JhKDI0NSwxMjQsMCwuMil9Lm1hdC1jYWxlbmRhci1ib2R5LWNvbXBhcmlzb24taWRlbnRpY2FsW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1jYWxlbmRhci1ib2R5LWluLWNvbXBhcmlzb24tcmFuZ2VbX25nY29udGVudC0lQ09NUCVdOjpiZWZvcmV7YmFja2dyb3VuZDpyZ2JhKDI0OSwxNzEsMCwuMil9Lm1hdC1jYWxlbmRhci1ib2R5LWNvbXBhcmlzb24tYnJpZGdlLXN0YXJ0W19uZ2NvbnRlbnQtJUNPTVAlXTo6YmVmb3JlLCBbZGlyPXJ0bF1bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1jYWxlbmRhci1ib2R5LWNvbXBhcmlzb24tYnJpZGdlLWVuZFtfbmdjb250ZW50LSVDT01QJV06OmJlZm9yZXtiYWNrZ3JvdW5kOmxpbmVhci1ncmFkaWVudCh0byByaWdodCwgcmdiYSgyNDUsIDEyNCwgMCwgMC4yKSA1MCUsIHJnYmEoMjQ5LCAxNzEsIDAsIDAuMikgNTAlKX0ubWF0LWNhbGVuZGFyLWJvZHktY29tcGFyaXNvbi1icmlkZ2UtZW5kW19uZ2NvbnRlbnQtJUNPTVAlXTo6YmVmb3JlLCBbZGlyPXJ0bF1bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1jYWxlbmRhci1ib2R5LWNvbXBhcmlzb24tYnJpZGdlLXN0YXJ0W19uZ2NvbnRlbnQtJUNPTVAlXTo6YmVmb3Jle2JhY2tncm91bmQ6bGluZWFyLWdyYWRpZW50KHRvIGxlZnQsIHJnYmEoMjQ1LCAxMjQsIDAsIDAuMikgNTAlLCByZ2JhKDI0OSwgMTcxLCAwLCAwLjIpIDUwJSl9Lm1hdC1jYWxlbmRhci1ib2R5LWluLXJhbmdlW19uZ2NvbnRlbnQtJUNPTVAlXSA+IC5tYXQtY2FsZW5kYXItYm9keS1jb21wYXJpc29uLWlkZW50aWNhbFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtY2FsZW5kYXItYm9keS1pbi1jb21wYXJpc29uLXJhbmdlLm1hdC1jYWxlbmRhci1ib2R5LWluLXJhbmdlW19uZ2NvbnRlbnQtJUNPTVAlXTo6YWZ0ZXJ7YmFja2dyb3VuZDojYThkYWI1fS5tYXQtY2FsZW5kYXItYm9keS1jb21wYXJpc29uLWlkZW50aWNhbC5tYXQtY2FsZW5kYXItYm9keS1zZWxlY3RlZFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtY2FsZW5kYXItYm9keS1pbi1jb21wYXJpc29uLXJhbmdlW19uZ2NvbnRlbnQtJUNPTVAlXSA+IC5tYXQtY2FsZW5kYXItYm9keS1zZWxlY3RlZFtfbmdjb250ZW50LSVDT01QJV17YmFja2dyb3VuZDojNDZhMzVlfS5tYXQtY2FsZW5kYXItYm9keS1zZWxlY3RlZFtfbmdjb250ZW50LSVDT01QJV17YmFja2dyb3VuZC1jb2xvcjojZjU3YzAwO2NvbG9yOiNmZmZ9Lm1hdC1jYWxlbmRhci1ib2R5LWRpc2FibGVkW19uZ2NvbnRlbnQtJUNPTVAlXSA+IC5tYXQtY2FsZW5kYXItYm9keS1zZWxlY3RlZFtfbmdjb250ZW50LSVDT01QJV17YmFja2dyb3VuZC1jb2xvcjpyZ2JhKDI0NSwxMjQsMCwuNCl9Lm1hdC1jYWxlbmRhci1ib2R5LXRvZGF5Lm1hdC1jYWxlbmRhci1ib2R5LXNlbGVjdGVkW19uZ2NvbnRlbnQtJUNPTVAlXXtib3gtc2hhZG93Omluc2V0IDAgMCAwIDFweCAjZmZmfS5tYXQtZGF0ZXBpY2tlci1jb250ZW50W19uZ2NvbnRlbnQtJUNPTVAlXXtib3gtc2hhZG93OjBweCAycHggNHB4IC0xcHggcmdiYSgwLCAwLCAwLCAwLjIpLDBweCA0cHggNXB4IDBweCByZ2JhKDAsIDAsIDAsIDAuMTQpLDBweCAxcHggMTBweCAwcHggcmdiYSgwLCAwLCAwLCAwLjEyKTtiYWNrZ3JvdW5kLWNvbG9yOiNmZmY7Y29sb3I6IzIxMjEyMX0ubWF0LWRhdGVwaWNrZXItY29udGVudC5tYXQtYWNjZW50W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtY2FsZW5kYXItYm9keS1pbi1yYW5nZVtfbmdjb250ZW50LSVDT01QJV06OmJlZm9yZXtiYWNrZ3JvdW5kOnJnYmEoMjU1LDE1MiwwLC4yKX0ubWF0LWRhdGVwaWNrZXItY29udGVudC5tYXQtYWNjZW50W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtY2FsZW5kYXItYm9keS1jb21wYXJpc29uLWlkZW50aWNhbFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtZGF0ZXBpY2tlci1jb250ZW50Lm1hdC1hY2NlbnRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1jYWxlbmRhci1ib2R5LWluLWNvbXBhcmlzb24tcmFuZ2VbX25nY29udGVudC0lQ09NUCVdOjpiZWZvcmV7YmFja2dyb3VuZDpyZ2JhKDI0OSwxNzEsMCwuMil9Lm1hdC1kYXRlcGlja2VyLWNvbnRlbnQubWF0LWFjY2VudFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWNhbGVuZGFyLWJvZHktY29tcGFyaXNvbi1icmlkZ2Utc3RhcnRbX25nY29udGVudC0lQ09NUCVdOjpiZWZvcmUsIC5tYXQtZGF0ZXBpY2tlci1jb250ZW50Lm1hdC1hY2NlbnRbX25nY29udGVudC0lQ09NUCVdICAgW2Rpcj1ydGxdW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtY2FsZW5kYXItYm9keS1jb21wYXJpc29uLWJyaWRnZS1lbmRbX25nY29udGVudC0lQ09NUCVdOjpiZWZvcmV7YmFja2dyb3VuZDpsaW5lYXItZ3JhZGllbnQodG8gcmlnaHQsIHJnYmEoMjU1LCAxNTIsIDAsIDAuMikgNTAlLCByZ2JhKDI0OSwgMTcxLCAwLCAwLjIpIDUwJSl9Lm1hdC1kYXRlcGlja2VyLWNvbnRlbnQubWF0LWFjY2VudFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWNhbGVuZGFyLWJvZHktY29tcGFyaXNvbi1icmlkZ2UtZW5kW19uZ2NvbnRlbnQtJUNPTVAlXTo6YmVmb3JlLCAubWF0LWRhdGVwaWNrZXItY29udGVudC5tYXQtYWNjZW50W19uZ2NvbnRlbnQtJUNPTVAlXSAgIFtkaXI9cnRsXVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWNhbGVuZGFyLWJvZHktY29tcGFyaXNvbi1icmlkZ2Utc3RhcnRbX25nY29udGVudC0lQ09NUCVdOjpiZWZvcmV7YmFja2dyb3VuZDpsaW5lYXItZ3JhZGllbnQodG8gbGVmdCwgcmdiYSgyNTUsIDE1MiwgMCwgMC4yKSA1MCUsIHJnYmEoMjQ5LCAxNzEsIDAsIDAuMikgNTAlKX0ubWF0LWRhdGVwaWNrZXItY29udGVudC5tYXQtYWNjZW50W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtY2FsZW5kYXItYm9keS1pbi1yYW5nZVtfbmdjb250ZW50LSVDT01QJV0gPiAubWF0LWNhbGVuZGFyLWJvZHktY29tcGFyaXNvbi1pZGVudGljYWxbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWRhdGVwaWNrZXItY29udGVudC5tYXQtYWNjZW50W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtY2FsZW5kYXItYm9keS1pbi1jb21wYXJpc29uLXJhbmdlLm1hdC1jYWxlbmRhci1ib2R5LWluLXJhbmdlW19uZ2NvbnRlbnQtJUNPTVAlXTo6YWZ0ZXJ7YmFja2dyb3VuZDojYThkYWI1fS5tYXQtZGF0ZXBpY2tlci1jb250ZW50Lm1hdC1hY2NlbnRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1jYWxlbmRhci1ib2R5LWNvbXBhcmlzb24taWRlbnRpY2FsLm1hdC1jYWxlbmRhci1ib2R5LXNlbGVjdGVkW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1kYXRlcGlja2VyLWNvbnRlbnQubWF0LWFjY2VudFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWNhbGVuZGFyLWJvZHktaW4tY29tcGFyaXNvbi1yYW5nZVtfbmdjb250ZW50LSVDT01QJV0gPiAubWF0LWNhbGVuZGFyLWJvZHktc2VsZWN0ZWRbX25nY29udGVudC0lQ09NUCVde2JhY2tncm91bmQ6IzQ2YTM1ZX0ubWF0LWRhdGVwaWNrZXItY29udGVudC5tYXQtYWNjZW50W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtY2FsZW5kYXItYm9keS1zZWxlY3RlZFtfbmdjb250ZW50LSVDT01QJV17YmFja2dyb3VuZC1jb2xvcjojZmY5ODAwO2NvbG9yOiNmZmZ9Lm1hdC1kYXRlcGlja2VyLWNvbnRlbnQubWF0LWFjY2VudFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWNhbGVuZGFyLWJvZHktZGlzYWJsZWRbX25nY29udGVudC0lQ09NUCVdID4gLm1hdC1jYWxlbmRhci1ib2R5LXNlbGVjdGVkW19uZ2NvbnRlbnQtJUNPTVAlXXtiYWNrZ3JvdW5kLWNvbG9yOnJnYmEoMjU1LDE1MiwwLC40KX0ubWF0LWRhdGVwaWNrZXItY29udGVudC5tYXQtYWNjZW50W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtY2FsZW5kYXItYm9keS10b2RheS5tYXQtY2FsZW5kYXItYm9keS1zZWxlY3RlZFtfbmdjb250ZW50LSVDT01QJV17Ym94LXNoYWRvdzppbnNldCAwIDAgMCAxcHggI2ZmZn0ubWF0LWRhdGVwaWNrZXItY29udGVudC5tYXQtd2Fybltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWNhbGVuZGFyLWJvZHktaW4tcmFuZ2VbX25nY29udGVudC0lQ09NUCVdOjpiZWZvcmV7YmFja2dyb3VuZDpyZ2JhKDI0NCw2Nyw1NCwuMil9Lm1hdC1kYXRlcGlja2VyLWNvbnRlbnQubWF0LXdhcm5bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1jYWxlbmRhci1ib2R5LWNvbXBhcmlzb24taWRlbnRpY2FsW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1kYXRlcGlja2VyLWNvbnRlbnQubWF0LXdhcm5bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1jYWxlbmRhci1ib2R5LWluLWNvbXBhcmlzb24tcmFuZ2VbX25nY29udGVudC0lQ09NUCVdOjpiZWZvcmV7YmFja2dyb3VuZDpyZ2JhKDI0OSwxNzEsMCwuMil9Lm1hdC1kYXRlcGlja2VyLWNvbnRlbnQubWF0LXdhcm5bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1jYWxlbmRhci1ib2R5LWNvbXBhcmlzb24tYnJpZGdlLXN0YXJ0W19uZ2NvbnRlbnQtJUNPTVAlXTo6YmVmb3JlLCAubWF0LWRhdGVwaWNrZXItY29udGVudC5tYXQtd2Fybltfbmdjb250ZW50LSVDT01QJV0gICBbZGlyPXJ0bF1bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1jYWxlbmRhci1ib2R5LWNvbXBhcmlzb24tYnJpZGdlLWVuZFtfbmdjb250ZW50LSVDT01QJV06OmJlZm9yZXtiYWNrZ3JvdW5kOmxpbmVhci1ncmFkaWVudCh0byByaWdodCwgcmdiYSgyNDQsIDY3LCA1NCwgMC4yKSA1MCUsIHJnYmEoMjQ5LCAxNzEsIDAsIDAuMikgNTAlKX0ubWF0LWRhdGVwaWNrZXItY29udGVudC5tYXQtd2Fybltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWNhbGVuZGFyLWJvZHktY29tcGFyaXNvbi1icmlkZ2UtZW5kW19uZ2NvbnRlbnQtJUNPTVAlXTo6YmVmb3JlLCAubWF0LWRhdGVwaWNrZXItY29udGVudC5tYXQtd2Fybltfbmdjb250ZW50LSVDT01QJV0gICBbZGlyPXJ0bF1bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1jYWxlbmRhci1ib2R5LWNvbXBhcmlzb24tYnJpZGdlLXN0YXJ0W19uZ2NvbnRlbnQtJUNPTVAlXTo6YmVmb3Jle2JhY2tncm91bmQ6bGluZWFyLWdyYWRpZW50KHRvIGxlZnQsIHJnYmEoMjQ0LCA2NywgNTQsIDAuMikgNTAlLCByZ2JhKDI0OSwgMTcxLCAwLCAwLjIpIDUwJSl9Lm1hdC1kYXRlcGlja2VyLWNvbnRlbnQubWF0LXdhcm5bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1jYWxlbmRhci1ib2R5LWluLXJhbmdlW19uZ2NvbnRlbnQtJUNPTVAlXSA+IC5tYXQtY2FsZW5kYXItYm9keS1jb21wYXJpc29uLWlkZW50aWNhbFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtZGF0ZXBpY2tlci1jb250ZW50Lm1hdC13YXJuW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtY2FsZW5kYXItYm9keS1pbi1jb21wYXJpc29uLXJhbmdlLm1hdC1jYWxlbmRhci1ib2R5LWluLXJhbmdlW19uZ2NvbnRlbnQtJUNPTVAlXTo6YWZ0ZXJ7YmFja2dyb3VuZDojYThkYWI1fS5tYXQtZGF0ZXBpY2tlci1jb250ZW50Lm1hdC13YXJuW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtY2FsZW5kYXItYm9keS1jb21wYXJpc29uLWlkZW50aWNhbC5tYXQtY2FsZW5kYXItYm9keS1zZWxlY3RlZFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtZGF0ZXBpY2tlci1jb250ZW50Lm1hdC13YXJuW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtY2FsZW5kYXItYm9keS1pbi1jb21wYXJpc29uLXJhbmdlW19uZ2NvbnRlbnQtJUNPTVAlXSA+IC5tYXQtY2FsZW5kYXItYm9keS1zZWxlY3RlZFtfbmdjb250ZW50LSVDT01QJV17YmFja2dyb3VuZDojNDZhMzVlfS5tYXQtZGF0ZXBpY2tlci1jb250ZW50Lm1hdC13YXJuW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtY2FsZW5kYXItYm9keS1zZWxlY3RlZFtfbmdjb250ZW50LSVDT01QJV17YmFja2dyb3VuZC1jb2xvcjojZjQ0MzM2O2NvbG9yOiNmZmZ9Lm1hdC1kYXRlcGlja2VyLWNvbnRlbnQubWF0LXdhcm5bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1jYWxlbmRhci1ib2R5LWRpc2FibGVkW19uZ2NvbnRlbnQtJUNPTVAlXSA+IC5tYXQtY2FsZW5kYXItYm9keS1zZWxlY3RlZFtfbmdjb250ZW50LSVDT01QJV17YmFja2dyb3VuZC1jb2xvcjpyZ2JhKDI0NCw2Nyw1NCwuNCl9Lm1hdC1kYXRlcGlja2VyLWNvbnRlbnQubWF0LXdhcm5bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1jYWxlbmRhci1ib2R5LXRvZGF5Lm1hdC1jYWxlbmRhci1ib2R5LXNlbGVjdGVkW19uZ2NvbnRlbnQtJUNPTVAlXXtib3gtc2hhZG93Omluc2V0IDAgMCAwIDFweCAjZmZmfS5tYXQtZGF0ZXBpY2tlci1jb250ZW50LXRvdWNoW19uZ2NvbnRlbnQtJUNPTVAlXXtib3gtc2hhZG93OjBweCAwcHggMHB4IDBweCByZ2JhKDAsIDAsIDAsIDAuMiksMHB4IDBweCAwcHggMHB4IHJnYmEoMCwgMCwgMCwgMC4xNCksMHB4IDBweCAwcHggMHB4IHJnYmEoMCwgMCwgMCwgMC4xMil9Lm1hdC1kYXRlcGlja2VyLXRvZ2dsZS1hY3RpdmVbX25nY29udGVudC0lQ09NUCVde2NvbG9yOiNmNTdjMDB9Lm1hdC1kYXRlcGlja2VyLXRvZ2dsZS1hY3RpdmUubWF0LWFjY2VudFtfbmdjb250ZW50LSVDT01QJV17Y29sb3I6I2ZmOTgwMH0ubWF0LWRhdGVwaWNrZXItdG9nZ2xlLWFjdGl2ZS5tYXQtd2Fybltfbmdjb250ZW50LSVDT01QJV17Y29sb3I6I2Y0NDMzNn0ubWF0LWRhdGUtcmFuZ2UtaW5wdXQtaW5uZXJbZGlzYWJsZWRdW19uZ2NvbnRlbnQtJUNPTVAlXXtjb2xvcjojNzU3NTc1fS5tYXQtZGlhbG9nLWNvbnRhaW5lcltfbmdjb250ZW50LSVDT01QJV17Ym94LXNoYWRvdzowcHggMTFweCAxNXB4IC03cHggcmdiYSgwLCAwLCAwLCAwLjIpLDBweCAyNHB4IDM4cHggM3B4IHJnYmEoMCwgMCwgMCwgMC4xNCksMHB4IDlweCA0NnB4IDhweCByZ2JhKDAsIDAsIDAsIDAuMTIpO2JhY2tncm91bmQ6I2ZmZjtjb2xvcjojMjEyMTIxfS5tYXQtZGl2aWRlcltfbmdjb250ZW50LSVDT01QJV17Ym9yZGVyLXRvcC1jb2xvcjpyZ2JhKDAsMCwwLC4xMil9Lm1hdC1kaXZpZGVyLXZlcnRpY2FsW19uZ2NvbnRlbnQtJUNPTVAlXXtib3JkZXItcmlnaHQtY29sb3I6cmdiYSgwLDAsMCwuMTIpfS5tYXQtZXhwYW5zaW9uLXBhbmVsW19uZ2NvbnRlbnQtJUNPTVAlXXtiYWNrZ3JvdW5kOiNmZmY7Y29sb3I6IzIxMjEyMX0ubWF0LWV4cGFuc2lvbi1wYW5lbFtfbmdjb250ZW50LSVDT01QJV06bm90KFtjbGFzcyo9bWF0LWVsZXZhdGlvbi16XSl7Ym94LXNoYWRvdzowcHggM3B4IDFweCAtMnB4IHJnYmEoMCwgMCwgMCwgMC4yKSwwcHggMnB4IDJweCAwcHggcmdiYSgwLCAwLCAwLCAwLjE0KSwwcHggMXB4IDVweCAwcHggcmdiYSgwLCAwLCAwLCAwLjEyKX0ubWF0LWFjdGlvbi1yb3dbX25nY29udGVudC0lQ09NUCVde2JvcmRlci10b3AtY29sb3I6cmdiYSgwLDAsMCwuMTIpfS5tYXQtZXhwYW5zaW9uLXBhbmVsW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZXhwYW5zaW9uLXBhbmVsLWhlYWRlci5jZGsta2V5Ym9hcmQtZm9jdXNlZFtfbmdjb250ZW50LSVDT01QJV06bm90KFthcmlhLWRpc2FibGVkPXRydWVdKSwgLm1hdC1leHBhbnNpb24tcGFuZWxbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1leHBhbnNpb24tcGFuZWwtaGVhZGVyLmNkay1wcm9ncmFtLWZvY3VzZWRbX25nY29udGVudC0lQ09NUCVdOm5vdChbYXJpYS1kaXNhYmxlZD10cnVlXSksIC5tYXQtZXhwYW5zaW9uLXBhbmVsW19uZ2NvbnRlbnQtJUNPTVAlXTpub3QoLm1hdC1leHBhbmRlZCkgICAubWF0LWV4cGFuc2lvbi1wYW5lbC1oZWFkZXJbX25nY29udGVudC0lQ09NUCVdOmhvdmVyOm5vdChbYXJpYS1kaXNhYmxlZD10cnVlXSl7YmFja2dyb3VuZDpyZ2JhKDAsMCwwLC4wNCl9QG1lZGlhKGhvdmVyOiBub25lKXsubWF0LWV4cGFuc2lvbi1wYW5lbFtfbmdjb250ZW50LSVDT01QJV06bm90KC5tYXQtZXhwYW5kZWQpOm5vdChbYXJpYS1kaXNhYmxlZD10cnVlXSkgICAubWF0LWV4cGFuc2lvbi1wYW5lbC1oZWFkZXJbX25nY29udGVudC0lQ09NUCVdOmhvdmVye2JhY2tncm91bmQ6I2ZmZn19Lm1hdC1leHBhbnNpb24tcGFuZWwtaGVhZGVyLXRpdGxlW19uZ2NvbnRlbnQtJUNPTVAlXXtjb2xvcjojMjEyMTIxfS5tYXQtZXhwYW5zaW9uLXBhbmVsLWhlYWRlci1kZXNjcmlwdGlvbltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtZXhwYW5zaW9uLWluZGljYXRvcltfbmdjb250ZW50LSVDT01QJV06OmFmdGVye2NvbG9yOiM2MTYxNjF9Lm1hdC1leHBhbnNpb24tcGFuZWwtaGVhZGVyW2FyaWEtZGlzYWJsZWQ9dHJ1ZV1bX25nY29udGVudC0lQ09NUCVde2NvbG9yOnJnYmEoMCwwLDAsLjI2KX0ubWF0LWV4cGFuc2lvbi1wYW5lbC1oZWFkZXJbYXJpYS1kaXNhYmxlZD10cnVlXVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWV4cGFuc2lvbi1wYW5lbC1oZWFkZXItdGl0bGVbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWV4cGFuc2lvbi1wYW5lbC1oZWFkZXJbYXJpYS1kaXNhYmxlZD10cnVlXVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWV4cGFuc2lvbi1wYW5lbC1oZWFkZXItZGVzY3JpcHRpb25bX25nY29udGVudC0lQ09NUCVde2NvbG9yOmluaGVyaXR9Lm1hdC1leHBhbnNpb24tcGFuZWwtaGVhZGVyW19uZ2NvbnRlbnQtJUNPTVAlXXtoZWlnaHQ6NDhweH0ubWF0LWV4cGFuc2lvbi1wYW5lbC1oZWFkZXIubWF0LWV4cGFuZGVkW19uZ2NvbnRlbnQtJUNPTVAlXXtoZWlnaHQ6NjRweH0ubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVde2NvbG9yOnJnYmEoOTcsOTcsOTcsLjYpfS5tYXQtaGludFtfbmdjb250ZW50LSVDT01QJV17Y29sb3I6cmdiYSg5Nyw5Nyw5NywuNil9Lm1hdC1mb3JtLWZpZWxkLm1hdC1mb2N1c2VkW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17Y29sb3I6I2Y1N2MwMH0ubWF0LWZvcm0tZmllbGQubWF0LWZvY3VzZWRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsLm1hdC1hY2NlbnRbX25nY29udGVudC0lQ09NUCVde2NvbG9yOiNmZjk4MDB9Lm1hdC1mb3JtLWZpZWxkLm1hdC1mb2N1c2VkW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbC5tYXQtd2Fybltfbmdjb250ZW50LSVDT01QJV17Y29sb3I6I2Y0NDMzNn0ubWF0LWZvY3VzZWRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLXJlcXVpcmVkLW1hcmtlcltfbmdjb250ZW50LSVDT01QJV17Y29sb3I6I2ZmOTgwMH0ubWF0LWZvcm0tZmllbGQtcmlwcGxlW19uZ2NvbnRlbnQtJUNPTVAlXXtiYWNrZ3JvdW5kLWNvbG9yOnJnYmEoMCwwLDAsLjg3KX0ubWF0LWZvcm0tZmllbGQubWF0LWZvY3VzZWRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLXJpcHBsZVtfbmdjb250ZW50LSVDT01QJV17YmFja2dyb3VuZC1jb2xvcjojZjU3YzAwfS5tYXQtZm9ybS1maWVsZC5tYXQtZm9jdXNlZFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtcmlwcGxlLm1hdC1hY2NlbnRbX25nY29udGVudC0lQ09NUCVde2JhY2tncm91bmQtY29sb3I6I2ZmOTgwMH0ubWF0LWZvcm0tZmllbGQubWF0LWZvY3VzZWRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLXJpcHBsZS5tYXQtd2Fybltfbmdjb250ZW50LSVDT01QJV17YmFja2dyb3VuZC1jb2xvcjojZjQ0MzM2fS5tYXQtZm9ybS1maWVsZC10eXBlLW1hdC1uYXRpdmUtc2VsZWN0Lm1hdC1mb2N1c2VkW19uZ2NvbnRlbnQtJUNPTVAlXTpub3QoLm1hdC1mb3JtLWZpZWxkLWludmFsaWQpICAgLm1hdC1mb3JtLWZpZWxkLWluZml4W19uZ2NvbnRlbnQtJUNPTVAlXTo6YWZ0ZXJ7Y29sb3I6I2Y1N2MwMH0ubWF0LWZvcm0tZmllbGQtdHlwZS1tYXQtbmF0aXZlLXNlbGVjdC5tYXQtZm9jdXNlZFtfbmdjb250ZW50LSVDT01QJV06bm90KC5tYXQtZm9ybS1maWVsZC1pbnZhbGlkKS5tYXQtYWNjZW50ICAgLm1hdC1mb3JtLWZpZWxkLWluZml4W19uZ2NvbnRlbnQtJUNPTVAlXTo6YWZ0ZXJ7Y29sb3I6I2ZmOTgwMH0ubWF0LWZvcm0tZmllbGQtdHlwZS1tYXQtbmF0aXZlLXNlbGVjdC5tYXQtZm9jdXNlZFtfbmdjb250ZW50LSVDT01QJV06bm90KC5tYXQtZm9ybS1maWVsZC1pbnZhbGlkKS5tYXQtd2FybiAgIC5tYXQtZm9ybS1maWVsZC1pbmZpeFtfbmdjb250ZW50LSVDT01QJV06OmFmdGVye2NvbG9yOiNmNDQzMzZ9Lm1hdC1mb3JtLWZpZWxkLm1hdC1mb3JtLWZpZWxkLWludmFsaWRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXtjb2xvcjojZjQ0MzM2fS5tYXQtZm9ybS1maWVsZC5tYXQtZm9ybS1maWVsZC1pbnZhbGlkW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbC5tYXQtYWNjZW50W19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1mb3JtLWZpZWxkLm1hdC1mb3JtLWZpZWxkLWludmFsaWRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1yZXF1aXJlZC1tYXJrZXJbX25nY29udGVudC0lQ09NUCVde2NvbG9yOiNmNDQzMzZ9Lm1hdC1mb3JtLWZpZWxkLm1hdC1mb3JtLWZpZWxkLWludmFsaWRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLXJpcHBsZVtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtZm9ybS1maWVsZC5tYXQtZm9ybS1maWVsZC1pbnZhbGlkW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1yaXBwbGUubWF0LWFjY2VudFtfbmdjb250ZW50LSVDT01QJV17YmFja2dyb3VuZC1jb2xvcjojZjQ0MzM2fS5tYXQtZXJyb3JbX25nY29udGVudC0lQ09NUCVde2NvbG9yOiNmNDQzMzZ9Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtbGVnYWN5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17Y29sb3I6IzYxNjE2MX0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1sZWdhY3lbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1oaW50W19uZ2NvbnRlbnQtJUNPTVAlXXtjb2xvcjojNjE2MTYxfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWxlZ2FjeVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtdW5kZXJsaW5lW19uZ2NvbnRlbnQtJUNPTVAlXXtiYWNrZ3JvdW5kLWNvbG9yOnJnYmEoMCwwLDAsLjQyKX0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1sZWdhY3kubWF0LWZvcm0tZmllbGQtZGlzYWJsZWRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLXVuZGVybGluZVtfbmdjb250ZW50LSVDT01QJV17YmFja2dyb3VuZC1pbWFnZTpsaW5lYXItZ3JhZGllbnQodG8gcmlnaHQsIHJnYmEoMCwgMCwgMCwgMC40MikgMCUsIHJnYmEoMCwgMCwgMCwgMC40MikgMzMlLCB0cmFuc3BhcmVudCAwJSk7YmFja2dyb3VuZC1zaXplOjRweCAxMDAlO2JhY2tncm91bmQtcmVwZWF0OnJlcGVhdC14fS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLXN0YW5kYXJkW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC11bmRlcmxpbmVbX25nY29udGVudC0lQ09NUCVde2JhY2tncm91bmQtY29sb3I6cmdiYSgwLDAsMCwuNDIpfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLXN0YW5kYXJkLm1hdC1mb3JtLWZpZWxkLWRpc2FibGVkW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC11bmRlcmxpbmVbX25nY29udGVudC0lQ09NUCVde2JhY2tncm91bmQtaW1hZ2U6bGluZWFyLWdyYWRpZW50KHRvIHJpZ2h0LCByZ2JhKDAsIDAsIDAsIDAuNDIpIDAlLCByZ2JhKDAsIDAsIDAsIDAuNDIpIDMzJSwgdHJhbnNwYXJlbnQgMCUpO2JhY2tncm91bmQtc2l6ZTo0cHggMTAwJTtiYWNrZ3JvdW5kLXJlcGVhdDpyZXBlYXQteH0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1maWxsW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1mbGV4W19uZ2NvbnRlbnQtJUNPTVAlXXtiYWNrZ3JvdW5kLWNvbG9yOnJnYmEoMCwwLDAsLjA0KX0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1maWxsLm1hdC1mb3JtLWZpZWxkLWRpc2FibGVkW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1mbGV4W19uZ2NvbnRlbnQtJUNPTVAlXXtiYWNrZ3JvdW5kLWNvbG9yOnJnYmEoMCwwLDAsLjAyKX0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1maWxsW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC11bmRlcmxpbmVbX25nY29udGVudC0lQ09NUCVdOjpiZWZvcmV7YmFja2dyb3VuZC1jb2xvcjpyZ2JhKDAsMCwwLC40Mil9Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtZmlsbC5tYXQtZm9ybS1maWVsZC1kaXNhYmxlZFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVde2NvbG9yOiM3NTc1NzV9Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtZmlsbC5tYXQtZm9ybS1maWVsZC1kaXNhYmxlZFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtdW5kZXJsaW5lW19uZ2NvbnRlbnQtJUNPTVAlXTo6YmVmb3Jle2JhY2tncm91bmQtY29sb3I6dHJhbnNwYXJlbnR9Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2Utb3V0bGluZVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtb3V0bGluZVtfbmdjb250ZW50LSVDT01QJV17Y29sb3I6cmdiYSgwLDAsMCwuMTIpfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLW91dGxpbmVbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLW91dGxpbmUtdGhpY2tbX25nY29udGVudC0lQ09NUCVde2NvbG9yOnJnYmEoMCwwLDAsLjg3KX0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1vdXRsaW5lLm1hdC1mb2N1c2VkW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1vdXRsaW5lLXRoaWNrW19uZ2NvbnRlbnQtJUNPTVAlXXtjb2xvcjojZjU3YzAwfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLW91dGxpbmUubWF0LWZvY3VzZWQubWF0LWFjY2VudFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtb3V0bGluZS10aGlja1tfbmdjb250ZW50LSVDT01QJV17Y29sb3I6I2ZmOTgwMH0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1vdXRsaW5lLm1hdC1mb2N1c2VkLm1hdC13YXJuW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1vdXRsaW5lLXRoaWNrW19uZ2NvbnRlbnQtJUNPTVAlXXtjb2xvcjojZjQ0MzM2fS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLW91dGxpbmUubWF0LWZvcm0tZmllbGQtaW52YWxpZC5tYXQtZm9ybS1maWVsZC1pbnZhbGlkW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1vdXRsaW5lLXRoaWNrW19uZ2NvbnRlbnQtJUNPTVAlXXtjb2xvcjojZjQ0MzM2fS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLW91dGxpbmUubWF0LWZvcm0tZmllbGQtZGlzYWJsZWRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXtjb2xvcjojNzU3NTc1fS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLW91dGxpbmUubWF0LWZvcm0tZmllbGQtZGlzYWJsZWRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLW91dGxpbmVbX25nY29udGVudC0lQ09NUCVde2NvbG9yOnJnYmEoMCwwLDAsLjA2KX0ubWF0LWljb24ubWF0LXByaW1hcnlbX25nY29udGVudC0lQ09NUCVde2NvbG9yOiNmNTdjMDB9Lm1hdC1pY29uLm1hdC1hY2NlbnRbX25nY29udGVudC0lQ09NUCVde2NvbG9yOiNmZjk4MDB9Lm1hdC1pY29uLm1hdC13YXJuW19uZ2NvbnRlbnQtJUNPTVAlXXtjb2xvcjojZjQ0MzM2fS5tYXQtZm9ybS1maWVsZC10eXBlLW1hdC1uYXRpdmUtc2VsZWN0W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1pbmZpeFtfbmdjb250ZW50LSVDT01QJV06OmFmdGVye2NvbG9yOiM2MTYxNjF9Lm1hdC1pbnB1dC1lbGVtZW50W19uZ2NvbnRlbnQtJUNPTVAlXTpkaXNhYmxlZCwgLm1hdC1mb3JtLWZpZWxkLXR5cGUtbWF0LW5hdGl2ZS1zZWxlY3QubWF0LWZvcm0tZmllbGQtZGlzYWJsZWRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWluZml4W19uZ2NvbnRlbnQtJUNPTVAlXTo6YWZ0ZXJ7Y29sb3I6Izc1NzU3NX0ubWF0LWlucHV0LWVsZW1lbnRbX25nY29udGVudC0lQ09NUCVde2NhcmV0LWNvbG9yOiNmNTdjMDB9Lm1hdC1pbnB1dC1lbGVtZW50W19uZ2NvbnRlbnQtJUNPTVAlXTo6cGxhY2Vob2xkZXJ7Y29sb3I6cmdiYSg5Nyw5Nyw5NywuNDIpfS5tYXQtaW5wdXQtZWxlbWVudFtfbmdjb250ZW50LSVDT01QJV06Oi1tb3otcGxhY2Vob2xkZXJ7Y29sb3I6cmdiYSg5Nyw5Nyw5NywuNDIpfS5tYXQtaW5wdXQtZWxlbWVudFtfbmdjb250ZW50LSVDT01QJV06Oi13ZWJraXQtaW5wdXQtcGxhY2Vob2xkZXJ7Y29sb3I6cmdiYSg5Nyw5Nyw5NywuNDIpfS5tYXQtaW5wdXQtZWxlbWVudFtfbmdjb250ZW50LSVDT01QJV06LW1zLWlucHV0LXBsYWNlaG9sZGVye2NvbG9yOnJnYmEoOTcsOTcsOTcsLjQyKX0ubWF0LWZvcm0tZmllbGQubWF0LWFjY2VudFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWlucHV0LWVsZW1lbnRbX25nY29udGVudC0lQ09NUCVde2NhcmV0LWNvbG9yOiNmZjk4MDB9Lm1hdC1mb3JtLWZpZWxkLm1hdC13YXJuW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaW5wdXQtZWxlbWVudFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtZm9ybS1maWVsZC1pbnZhbGlkW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaW5wdXQtZWxlbWVudFtfbmdjb250ZW50LSVDT01QJV17Y2FyZXQtY29sb3I6I2Y0NDMzNn0ubWF0LWZvcm0tZmllbGQtdHlwZS1tYXQtbmF0aXZlLXNlbGVjdC5tYXQtZm9ybS1maWVsZC1pbnZhbGlkW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1pbmZpeFtfbmdjb250ZW50LSVDT01QJV06OmFmdGVye2NvbG9yOiNmNDQzMzZ9Lm1hdC1saXN0LWJhc2VbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saXN0LWl0ZW1bX25nY29udGVudC0lQ09NUCVde2NvbG9yOiMyMTIxMjF9Lm1hdC1saXN0LWJhc2VbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saXN0LW9wdGlvbltfbmdjb250ZW50LSVDT01QJV17Y29sb3I6IzIxMjEyMX0ubWF0LWxpc3QtYmFzZVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXN1YmhlYWRlcltfbmdjb250ZW50LSVDT01QJV17Y29sb3I6IzYxNjE2MX0ubWF0LWxpc3QtaXRlbS1kaXNhYmxlZFtfbmdjb250ZW50LSVDT01QJV17YmFja2dyb3VuZC1jb2xvcjojZWVlfS5tYXQtbGlzdC1vcHRpb25bX25nY29udGVudC0lQ09NUCVdOmhvdmVyLCAubWF0LWxpc3Qtb3B0aW9uW19uZ2NvbnRlbnQtJUNPTVAlXTpmb2N1cywgLm1hdC1uYXYtbGlzdFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpc3QtaXRlbVtfbmdjb250ZW50LSVDT01QJV06aG92ZXIsIC5tYXQtbmF2LWxpc3RbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saXN0LWl0ZW1bX25nY29udGVudC0lQ09NUCVdOmZvY3VzLCAubWF0LWFjdGlvbi1saXN0W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGlzdC1pdGVtW19uZ2NvbnRlbnQtJUNPTVAlXTpob3ZlciwgLm1hdC1hY3Rpb24tbGlzdFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpc3QtaXRlbVtfbmdjb250ZW50LSVDT01QJV06Zm9jdXN7YmFja2dyb3VuZDpyZ2JhKDAsMCwwLC4wNCl9Lm1hdC1saXN0LXNpbmdsZS1zZWxlY3RlZC1vcHRpb25bX25nY29udGVudC0lQ09NUCVdLCAubWF0LWxpc3Qtc2luZ2xlLXNlbGVjdGVkLW9wdGlvbltfbmdjb250ZW50LSVDT01QJV06aG92ZXIsIC5tYXQtbGlzdC1zaW5nbGUtc2VsZWN0ZWQtb3B0aW9uW19uZ2NvbnRlbnQtJUNPTVAlXTpmb2N1c3tiYWNrZ3JvdW5kOnJnYmEoMCwwLDAsLjEyKX0ubWF0LW1lbnUtcGFuZWxbX25nY29udGVudC0lQ09NUCVde2JhY2tncm91bmQ6I2ZmZn0ubWF0LW1lbnUtcGFuZWxbX25nY29udGVudC0lQ09NUCVdOm5vdChbY2xhc3MqPW1hdC1lbGV2YXRpb24tel0pe2JveC1zaGFkb3c6MHB4IDJweCA0cHggLTFweCByZ2JhKDAsIDAsIDAsIDAuMiksMHB4IDRweCA1cHggMHB4IHJnYmEoMCwgMCwgMCwgMC4xNCksMHB4IDFweCAxMHB4IDBweCByZ2JhKDAsIDAsIDAsIDAuMTIpfS5tYXQtbWVudS1pdGVtW19uZ2NvbnRlbnQtJUNPTVAlXXtiYWNrZ3JvdW5kOnRyYW5zcGFyZW50O2NvbG9yOiMyMTIxMjF9Lm1hdC1tZW51LWl0ZW1bZGlzYWJsZWRdW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1tZW51LWl0ZW1bZGlzYWJsZWRdW19uZ2NvbnRlbnQtJUNPTVAlXTo6YWZ0ZXJ7Y29sb3I6cmdiYSgwLDAsMCwuMzgpfS5tYXQtbWVudS1pdGVtW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaWNvbi1uby1jb2xvcltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtbWVudS1pdGVtLXN1Ym1lbnUtdHJpZ2dlcltfbmdjb250ZW50LSVDT01QJV06OmFmdGVye2NvbG9yOnJnYmEoMCwwLDAsLjU0KX0ubWF0LW1lbnUtaXRlbVtfbmdjb250ZW50LSVDT01QJV06aG92ZXI6bm90KFtkaXNhYmxlZF0pLCAubWF0LW1lbnUtaXRlbS5jZGstcHJvZ3JhbS1mb2N1c2VkW19uZ2NvbnRlbnQtJUNPTVAlXTpub3QoW2Rpc2FibGVkXSksIC5tYXQtbWVudS1pdGVtLmNkay1rZXlib2FyZC1mb2N1c2VkW19uZ2NvbnRlbnQtJUNPTVAlXTpub3QoW2Rpc2FibGVkXSksIC5tYXQtbWVudS1pdGVtLWhpZ2hsaWdodGVkW19uZ2NvbnRlbnQtJUNPTVAlXTpub3QoW2Rpc2FibGVkXSl7YmFja2dyb3VuZDpyZ2JhKDAsMCwwLC4wNCl9Lm1hdC1wYWdpbmF0b3JbX25nY29udGVudC0lQ09NUCVde2JhY2tncm91bmQ6I2ZmZn0ubWF0LXBhZ2luYXRvcltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtcGFnaW5hdG9yLXBhZ2Utc2l6ZVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXNlbGVjdC10cmlnZ2VyW19uZ2NvbnRlbnQtJUNPTVAlXXtjb2xvcjojNjE2MTYxfS5tYXQtcGFnaW5hdG9yLWRlY3JlbWVudFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtcGFnaW5hdG9yLWluY3JlbWVudFtfbmdjb250ZW50LSVDT01QJV17Ym9yZGVyLXRvcDoycHggc29saWQgcmdiYSgwLDAsMCwuNTQpO2JvcmRlci1yaWdodDoycHggc29saWQgcmdiYSgwLDAsMCwuNTQpfS5tYXQtcGFnaW5hdG9yLWZpcnN0W19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1wYWdpbmF0b3ItbGFzdFtfbmdjb250ZW50LSVDT01QJV17Ym9yZGVyLXRvcDoycHggc29saWQgcmdiYSgwLDAsMCwuNTQpfS5tYXQtaWNvbi1idXR0b25bZGlzYWJsZWRdW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtcGFnaW5hdG9yLWRlY3JlbWVudFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtaWNvbi1idXR0b25bZGlzYWJsZWRdW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtcGFnaW5hdG9yLWluY3JlbWVudFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtaWNvbi1idXR0b25bZGlzYWJsZWRdW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtcGFnaW5hdG9yLWZpcnN0W19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1pY29uLWJ1dHRvbltkaXNhYmxlZF1bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1wYWdpbmF0b3ItbGFzdFtfbmdjb250ZW50LSVDT01QJV17Ym9yZGVyLWNvbG9yOnJnYmEoMCwwLDAsLjM4KX0ubWF0LXBhZ2luYXRvci1jb250YWluZXJbX25nY29udGVudC0lQ09NUCVde21pbi1oZWlnaHQ6NTZweH0ubWF0LXByb2dyZXNzLWJhci1iYWNrZ3JvdW5kW19uZ2NvbnRlbnQtJUNPTVAlXXtmaWxsOiNmZjk4MDB9Lm1hdC1wcm9ncmVzcy1iYXItYnVmZmVyW19uZ2NvbnRlbnQtJUNPTVAlXXtiYWNrZ3JvdW5kLWNvbG9yOiNmZjk4MDB9Lm1hdC1wcm9ncmVzcy1iYXItZmlsbFtfbmdjb250ZW50LSVDT01QJV06OmFmdGVye2JhY2tncm91bmQtY29sb3I6I2Y1N2MwMH0ubWF0LXByb2dyZXNzLWJhci5tYXQtYWNjZW50W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtcHJvZ3Jlc3MtYmFyLWJhY2tncm91bmRbX25nY29udGVudC0lQ09NUCVde2ZpbGw6I2ZmOTgwMH0ubWF0LXByb2dyZXNzLWJhci5tYXQtYWNjZW50W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtcHJvZ3Jlc3MtYmFyLWJ1ZmZlcltfbmdjb250ZW50LSVDT01QJV17YmFja2dyb3VuZC1jb2xvcjojZmY5ODAwfS5tYXQtcHJvZ3Jlc3MtYmFyLm1hdC1hY2NlbnRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1wcm9ncmVzcy1iYXItZmlsbFtfbmdjb250ZW50LSVDT01QJV06OmFmdGVye2JhY2tncm91bmQtY29sb3I6I2ZmOTgwMH0ubWF0LXByb2dyZXNzLWJhci5tYXQtd2Fybltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXByb2dyZXNzLWJhci1iYWNrZ3JvdW5kW19uZ2NvbnRlbnQtJUNPTVAlXXtmaWxsOiNmZmNkZDJ9Lm1hdC1wcm9ncmVzcy1iYXIubWF0LXdhcm5bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1wcm9ncmVzcy1iYXItYnVmZmVyW19uZ2NvbnRlbnQtJUNPTVAlXXtiYWNrZ3JvdW5kLWNvbG9yOiNmZmNkZDJ9Lm1hdC1wcm9ncmVzcy1iYXIubWF0LXdhcm5bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1wcm9ncmVzcy1iYXItZmlsbFtfbmdjb250ZW50LSVDT01QJV06OmFmdGVye2JhY2tncm91bmQtY29sb3I6I2Y0NDMzNn0ubWF0LXByb2dyZXNzLXNwaW5uZXJbX25nY29udGVudC0lQ09NUCVdICAgY2lyY2xlW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1zcGlubmVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIGNpcmNsZVtfbmdjb250ZW50LSVDT01QJV17c3Ryb2tlOiNmNTdjMDB9Lm1hdC1wcm9ncmVzcy1zcGlubmVyLm1hdC1hY2NlbnRbX25nY29udGVudC0lQ09NUCVdICAgY2lyY2xlW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1zcGlubmVyLm1hdC1hY2NlbnRbX25nY29udGVudC0lQ09NUCVdICAgY2lyY2xlW19uZ2NvbnRlbnQtJUNPTVAlXXtzdHJva2U6I2ZmOTgwMH0ubWF0LXByb2dyZXNzLXNwaW5uZXIubWF0LXdhcm5bX25nY29udGVudC0lQ09NUCVdICAgY2lyY2xlW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1zcGlubmVyLm1hdC13YXJuW19uZ2NvbnRlbnQtJUNPTVAlXSAgIGNpcmNsZVtfbmdjb250ZW50LSVDT01QJV17c3Ryb2tlOiNmNDQzMzZ9Lm1hdC1yYWRpby1vdXRlci1jaXJjbGVbX25nY29udGVudC0lQ09NUCVde2JvcmRlci1jb2xvcjojNjE2MTYxfS5tYXQtcmFkaW8tYnV0dG9uLm1hdC1wcmltYXJ5Lm1hdC1yYWRpby1jaGVja2VkW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtcmFkaW8tb3V0ZXItY2lyY2xlW19uZ2NvbnRlbnQtJUNPTVAlXXtib3JkZXItY29sb3I6I2Y1N2MwMH0ubWF0LXJhZGlvLWJ1dHRvbi5tYXQtcHJpbWFyeVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXJhZGlvLWlubmVyLWNpcmNsZVtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtcmFkaW8tYnV0dG9uLm1hdC1wcmltYXJ5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtcmFkaW8tcmlwcGxlW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtcmlwcGxlLWVsZW1lbnRbX25nY29udGVudC0lQ09NUCVdOm5vdCgubWF0LXJhZGlvLXBlcnNpc3RlbnQtcmlwcGxlKSwgLm1hdC1yYWRpby1idXR0b24ubWF0LXByaW1hcnkubWF0LXJhZGlvLWNoZWNrZWRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1yYWRpby1wZXJzaXN0ZW50LXJpcHBsZVtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtcmFkaW8tYnV0dG9uLm1hdC1wcmltYXJ5W19uZ2NvbnRlbnQtJUNPTVAlXTphY3RpdmUgICAubWF0LXJhZGlvLXBlcnNpc3RlbnQtcmlwcGxlW19uZ2NvbnRlbnQtJUNPTVAlXXtiYWNrZ3JvdW5kLWNvbG9yOiNmNTdjMDB9Lm1hdC1yYWRpby1idXR0b24ubWF0LWFjY2VudC5tYXQtcmFkaW8tY2hlY2tlZFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXJhZGlvLW91dGVyLWNpcmNsZVtfbmdjb250ZW50LSVDT01QJV17Ym9yZGVyLWNvbG9yOiNmZjk4MDB9Lm1hdC1yYWRpby1idXR0b24ubWF0LWFjY2VudFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXJhZGlvLWlubmVyLWNpcmNsZVtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtcmFkaW8tYnV0dG9uLm1hdC1hY2NlbnRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1yYWRpby1yaXBwbGVbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1yaXBwbGUtZWxlbWVudFtfbmdjb250ZW50LSVDT01QJV06bm90KC5tYXQtcmFkaW8tcGVyc2lzdGVudC1yaXBwbGUpLCAubWF0LXJhZGlvLWJ1dHRvbi5tYXQtYWNjZW50Lm1hdC1yYWRpby1jaGVja2VkW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtcmFkaW8tcGVyc2lzdGVudC1yaXBwbGVbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXJhZGlvLWJ1dHRvbi5tYXQtYWNjZW50W19uZ2NvbnRlbnQtJUNPTVAlXTphY3RpdmUgICAubWF0LXJhZGlvLXBlcnNpc3RlbnQtcmlwcGxlW19uZ2NvbnRlbnQtJUNPTVAlXXtiYWNrZ3JvdW5kLWNvbG9yOiNmZjk4MDB9Lm1hdC1yYWRpby1idXR0b24ubWF0LXdhcm4ubWF0LXJhZGlvLWNoZWNrZWRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1yYWRpby1vdXRlci1jaXJjbGVbX25nY29udGVudC0lQ09NUCVde2JvcmRlci1jb2xvcjojZjQ0MzM2fS5tYXQtcmFkaW8tYnV0dG9uLm1hdC13YXJuW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtcmFkaW8taW5uZXItY2lyY2xlW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1yYWRpby1idXR0b24ubWF0LXdhcm5bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1yYWRpby1yaXBwbGVbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1yaXBwbGUtZWxlbWVudFtfbmdjb250ZW50LSVDT01QJV06bm90KC5tYXQtcmFkaW8tcGVyc2lzdGVudC1yaXBwbGUpLCAubWF0LXJhZGlvLWJ1dHRvbi5tYXQtd2Fybi5tYXQtcmFkaW8tY2hlY2tlZFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXJhZGlvLXBlcnNpc3RlbnQtcmlwcGxlW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1yYWRpby1idXR0b24ubWF0LXdhcm5bX25nY29udGVudC0lQ09NUCVdOmFjdGl2ZSAgIC5tYXQtcmFkaW8tcGVyc2lzdGVudC1yaXBwbGVbX25nY29udGVudC0lQ09NUCVde2JhY2tncm91bmQtY29sb3I6I2Y0NDMzNn0ubWF0LXJhZGlvLWJ1dHRvbi5tYXQtcmFkaW8tZGlzYWJsZWQubWF0LXJhZGlvLWNoZWNrZWRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1yYWRpby1vdXRlci1jaXJjbGVbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXJhZGlvLWJ1dHRvbi5tYXQtcmFkaW8tZGlzYWJsZWRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1yYWRpby1vdXRlci1jaXJjbGVbX25nY29udGVudC0lQ09NUCVde2JvcmRlci1jb2xvcjpyZ2JhKDAsMCwwLC4zOCl9Lm1hdC1yYWRpby1idXR0b24ubWF0LXJhZGlvLWRpc2FibGVkW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtcmFkaW8tcmlwcGxlW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtcmlwcGxlLWVsZW1lbnRbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXJhZGlvLWJ1dHRvbi5tYXQtcmFkaW8tZGlzYWJsZWRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1yYWRpby1pbm5lci1jaXJjbGVbX25nY29udGVudC0lQ09NUCVde2JhY2tncm91bmQtY29sb3I6cmdiYSgwLDAsMCwuMzgpfS5tYXQtcmFkaW8tYnV0dG9uLm1hdC1yYWRpby1kaXNhYmxlZFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXJhZGlvLWxhYmVsLWNvbnRlbnRbX25nY29udGVudC0lQ09NUCVde2NvbG9yOnJnYmEoMCwwLDAsLjM4KX0ubWF0LXJhZGlvLWJ1dHRvbltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXJpcHBsZS1lbGVtZW50W19uZ2NvbnRlbnQtJUNPTVAlXXtiYWNrZ3JvdW5kLWNvbG9yOiMwMDB9Lm1hdC1zZWxlY3QtdmFsdWVbX25nY29udGVudC0lQ09NUCVde2NvbG9yOiMyMTIxMjF9Lm1hdC1zZWxlY3QtcGxhY2Vob2xkZXJbX25nY29udGVudC0lQ09NUCVde2NvbG9yOnJnYmEoOTcsOTcsOTcsLjQyKX0ubWF0LXNlbGVjdC1kaXNhYmxlZFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXNlbGVjdC12YWx1ZVtfbmdjb250ZW50LSVDT01QJV17Y29sb3I6Izc1NzU3NX0ubWF0LXNlbGVjdC1hcnJvd1tfbmdjb250ZW50LSVDT01QJV17Y29sb3I6IzYxNjE2MX0ubWF0LXNlbGVjdC1wYW5lbFtfbmdjb250ZW50LSVDT01QJV17YmFja2dyb3VuZDojZmZmfS5tYXQtc2VsZWN0LXBhbmVsW19uZ2NvbnRlbnQtJUNPTVAlXTpub3QoW2NsYXNzKj1tYXQtZWxldmF0aW9uLXpdKXtib3gtc2hhZG93OjBweCAycHggNHB4IC0xcHggcmdiYSgwLCAwLCAwLCAwLjIpLDBweCA0cHggNXB4IDBweCByZ2JhKDAsIDAsIDAsIDAuMTQpLDBweCAxcHggMTBweCAwcHggcmdiYSgwLCAwLCAwLCAwLjEyKX0ubWF0LXNlbGVjdC1wYW5lbFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LW9wdGlvbi5tYXQtc2VsZWN0ZWRbX25nY29udGVudC0lQ09NUCVdOm5vdCgubWF0LW9wdGlvbi1tdWx0aXBsZSl7YmFja2dyb3VuZDpyZ2JhKDAsMCwwLC4xMil9Lm1hdC1mb3JtLWZpZWxkLm1hdC1mb2N1c2VkLm1hdC1wcmltYXJ5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtc2VsZWN0LWFycm93W19uZ2NvbnRlbnQtJUNPTVAlXXtjb2xvcjojZjU3YzAwfS5tYXQtZm9ybS1maWVsZC5tYXQtZm9jdXNlZC5tYXQtYWNjZW50W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtc2VsZWN0LWFycm93W19uZ2NvbnRlbnQtJUNPTVAlXXtjb2xvcjojZmY5ODAwfS5tYXQtZm9ybS1maWVsZC5tYXQtZm9jdXNlZC5tYXQtd2Fybltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXNlbGVjdC1hcnJvd1tfbmdjb250ZW50LSVDT01QJV17Y29sb3I6I2Y0NDMzNn0ubWF0LWZvcm0tZmllbGRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1zZWxlY3QubWF0LXNlbGVjdC1pbnZhbGlkW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtc2VsZWN0LWFycm93W19uZ2NvbnRlbnQtJUNPTVAlXXtjb2xvcjojZjQ0MzM2fS5tYXQtZm9ybS1maWVsZFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXNlbGVjdC5tYXQtc2VsZWN0LWRpc2FibGVkW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtc2VsZWN0LWFycm93W19uZ2NvbnRlbnQtJUNPTVAlXXtjb2xvcjojNzU3NTc1fS5tYXQtZHJhd2VyLWNvbnRhaW5lcltfbmdjb250ZW50LSVDT01QJV17YmFja2dyb3VuZC1jb2xvcjojZmFmYWZhO2NvbG9yOiMyMTIxMjF9Lm1hdC1kcmF3ZXJbX25nY29udGVudC0lQ09NUCVde2JhY2tncm91bmQtY29sb3I6I2ZmZjtjb2xvcjojMjEyMTIxfS5tYXQtZHJhd2VyLm1hdC1kcmF3ZXItcHVzaFtfbmdjb250ZW50LSVDT01QJV17YmFja2dyb3VuZC1jb2xvcjojZmZmfS5tYXQtZHJhd2VyW19uZ2NvbnRlbnQtJUNPTVAlXTpub3QoLm1hdC1kcmF3ZXItc2lkZSl7Ym94LXNoYWRvdzowcHggOHB4IDEwcHggLTVweCByZ2JhKDAsIDAsIDAsIDAuMiksMHB4IDE2cHggMjRweCAycHggcmdiYSgwLCAwLCAwLCAwLjE0KSwwcHggNnB4IDMwcHggNXB4IHJnYmEoMCwgMCwgMCwgMC4xMil9Lm1hdC1kcmF3ZXItc2lkZVtfbmdjb250ZW50LSVDT01QJV17Ym9yZGVyLXJpZ2h0OnNvbGlkIDFweCByZ2JhKDAsMCwwLC4xMil9Lm1hdC1kcmF3ZXItc2lkZS5tYXQtZHJhd2VyLWVuZFtfbmdjb250ZW50LSVDT01QJV17Ym9yZGVyLWxlZnQ6c29saWQgMXB4IHJnYmEoMCwwLDAsLjEyKTtib3JkZXItcmlnaHQ6bm9uZX1bZGlyPXJ0bF1bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1kcmF3ZXItc2lkZVtfbmdjb250ZW50LSVDT01QJV17Ym9yZGVyLWxlZnQ6c29saWQgMXB4IHJnYmEoMCwwLDAsLjEyKTtib3JkZXItcmlnaHQ6bm9uZX1bZGlyPXJ0bF1bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1kcmF3ZXItc2lkZS5tYXQtZHJhd2VyLWVuZFtfbmdjb250ZW50LSVDT01QJV17Ym9yZGVyLWxlZnQ6bm9uZTtib3JkZXItcmlnaHQ6c29saWQgMXB4IHJnYmEoMCwwLDAsLjEyKX0ubWF0LWRyYXdlci1iYWNrZHJvcC5tYXQtZHJhd2VyLXNob3duW19uZ2NvbnRlbnQtJUNPTVAlXXtiYWNrZ3JvdW5kLWNvbG9yOnJnYmEoMCwwLDAsLjYpfS5tYXQtc2xpZGUtdG9nZ2xlLm1hdC1jaGVja2VkW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtc2xpZGUtdG9nZ2xlLXRodW1iW19uZ2NvbnRlbnQtJUNPTVAlXXtiYWNrZ3JvdW5kLWNvbG9yOiNmZjk4MDB9Lm1hdC1zbGlkZS10b2dnbGUubWF0LWNoZWNrZWRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1zbGlkZS10b2dnbGUtYmFyW19uZ2NvbnRlbnQtJUNPTVAlXXtiYWNrZ3JvdW5kLWNvbG9yOnJnYmEoMjU1LDE1MiwwLC41NCl9Lm1hdC1zbGlkZS10b2dnbGUubWF0LWNoZWNrZWRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1yaXBwbGUtZWxlbWVudFtfbmdjb250ZW50LSVDT01QJV17YmFja2dyb3VuZC1jb2xvcjojZmY5ODAwfS5tYXQtc2xpZGUtdG9nZ2xlLm1hdC1wcmltYXJ5Lm1hdC1jaGVja2VkW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtc2xpZGUtdG9nZ2xlLXRodW1iW19uZ2NvbnRlbnQtJUNPTVAlXXtiYWNrZ3JvdW5kLWNvbG9yOiNmNTdjMDB9Lm1hdC1zbGlkZS10b2dnbGUubWF0LXByaW1hcnkubWF0LWNoZWNrZWRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1zbGlkZS10b2dnbGUtYmFyW19uZ2NvbnRlbnQtJUNPTVAlXXtiYWNrZ3JvdW5kLWNvbG9yOnJnYmEoMjQ1LDEyNCwwLC41NCl9Lm1hdC1zbGlkZS10b2dnbGUubWF0LXByaW1hcnkubWF0LWNoZWNrZWRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1yaXBwbGUtZWxlbWVudFtfbmdjb250ZW50LSVDT01QJV17YmFja2dyb3VuZC1jb2xvcjojZjU3YzAwfS5tYXQtc2xpZGUtdG9nZ2xlLm1hdC13YXJuLm1hdC1jaGVja2VkW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtc2xpZGUtdG9nZ2xlLXRodW1iW19uZ2NvbnRlbnQtJUNPTVAlXXtiYWNrZ3JvdW5kLWNvbG9yOiNmNDQzMzZ9Lm1hdC1zbGlkZS10b2dnbGUubWF0LXdhcm4ubWF0LWNoZWNrZWRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1zbGlkZS10b2dnbGUtYmFyW19uZ2NvbnRlbnQtJUNPTVAlXXtiYWNrZ3JvdW5kLWNvbG9yOnJnYmEoMjQ0LDY3LDU0LC41NCl9Lm1hdC1zbGlkZS10b2dnbGUubWF0LXdhcm4ubWF0LWNoZWNrZWRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1yaXBwbGUtZWxlbWVudFtfbmdjb250ZW50LSVDT01QJV17YmFja2dyb3VuZC1jb2xvcjojZjQ0MzM2fS5tYXQtc2xpZGUtdG9nZ2xlW19uZ2NvbnRlbnQtJUNPTVAlXTpub3QoLm1hdC1jaGVja2VkKSAgIC5tYXQtcmlwcGxlLWVsZW1lbnRbX25nY29udGVudC0lQ09NUCVde2JhY2tncm91bmQtY29sb3I6IzAwMH0ubWF0LXNsaWRlLXRvZ2dsZS10aHVtYltfbmdjb250ZW50LSVDT01QJV17Ym94LXNoYWRvdzowcHggMnB4IDFweCAtMXB4IHJnYmEoMCwgMCwgMCwgMC4yKSwwcHggMXB4IDFweCAwcHggcmdiYSgwLCAwLCAwLCAwLjE0KSwwcHggMXB4IDNweCAwcHggcmdiYSgwLCAwLCAwLCAwLjEyKTtiYWNrZ3JvdW5kLWNvbG9yOiNmYWZhZmF9Lm1hdC1zbGlkZS10b2dnbGUtYmFyW19uZ2NvbnRlbnQtJUNPTVAlXXtiYWNrZ3JvdW5kLWNvbG9yOnJnYmEoMCwwLDAsLjM4KX0ubWF0LXNsaWRlci10cmFjay1iYWNrZ3JvdW5kW19uZ2NvbnRlbnQtJUNPTVAlXXtiYWNrZ3JvdW5kLWNvbG9yOnJnYmEoMCwwLDAsLjI2KX0ubWF0LXByaW1hcnlbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1zbGlkZXItdHJhY2stZmlsbFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtcHJpbWFyeVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXNsaWRlci10aHVtYltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtcHJpbWFyeVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXNsaWRlci10aHVtYi1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17YmFja2dyb3VuZC1jb2xvcjojZjU3YzAwfS5tYXQtcHJpbWFyeVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXNsaWRlci10aHVtYi1sYWJlbC10ZXh0W19uZ2NvbnRlbnQtJUNPTVAlXXtjb2xvcjojZmZmfS5tYXQtcHJpbWFyeVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXNsaWRlci1mb2N1cy1yaW5nW19uZ2NvbnRlbnQtJUNPTVAlXXtiYWNrZ3JvdW5kLWNvbG9yOnJnYmEoMjQ1LDEyNCwwLC4yKX0ubWF0LWFjY2VudFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXNsaWRlci10cmFjay1maWxsW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1hY2NlbnRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1zbGlkZXItdGh1bWJbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWFjY2VudFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXNsaWRlci10aHVtYi1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17YmFja2dyb3VuZC1jb2xvcjojZmY5ODAwfS5tYXQtYWNjZW50W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtc2xpZGVyLXRodW1iLWxhYmVsLXRleHRbX25nY29udGVudC0lQ09NUCVde2NvbG9yOiNmZmZ9Lm1hdC1hY2NlbnRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1zbGlkZXItZm9jdXMtcmluZ1tfbmdjb250ZW50LSVDT01QJV17YmFja2dyb3VuZC1jb2xvcjpyZ2JhKDI1NSwxNTIsMCwuMil9Lm1hdC13YXJuW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtc2xpZGVyLXRyYWNrLWZpbGxbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXdhcm5bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1zbGlkZXItdGh1bWJbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXdhcm5bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1zbGlkZXItdGh1bWItbGFiZWxbX25nY29udGVudC0lQ09NUCVde2JhY2tncm91bmQtY29sb3I6I2Y0NDMzNn0ubWF0LXdhcm5bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1zbGlkZXItdGh1bWItbGFiZWwtdGV4dFtfbmdjb250ZW50LSVDT01QJV17Y29sb3I6I2ZmZn0ubWF0LXdhcm5bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1zbGlkZXItZm9jdXMtcmluZ1tfbmdjb250ZW50LSVDT01QJV17YmFja2dyb3VuZC1jb2xvcjpyZ2JhKDI0NCw2Nyw1NCwuMil9Lm1hdC1zbGlkZXJbX25nY29udGVudC0lQ09NUCVdOmhvdmVyICAgLm1hdC1zbGlkZXItdHJhY2stYmFja2dyb3VuZFtfbmdjb250ZW50LSVDT01QJV0sIC5jZGstZm9jdXNlZFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXNsaWRlci10cmFjay1iYWNrZ3JvdW5kW19uZ2NvbnRlbnQtJUNPTVAlXXtiYWNrZ3JvdW5kLWNvbG9yOnJnYmEoMCwwLDAsLjM4KX0ubWF0LXNsaWRlci1kaXNhYmxlZFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXNsaWRlci10cmFjay1iYWNrZ3JvdW5kW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1zbGlkZXItZGlzYWJsZWRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1zbGlkZXItdHJhY2stZmlsbFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtc2xpZGVyLWRpc2FibGVkW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtc2xpZGVyLXRodW1iW19uZ2NvbnRlbnQtJUNPTVAlXXtiYWNrZ3JvdW5kLWNvbG9yOnJnYmEoMCwwLDAsLjI2KX0ubWF0LXNsaWRlci1kaXNhYmxlZFtfbmdjb250ZW50LSVDT01QJV06aG92ZXIgICAubWF0LXNsaWRlci10cmFjay1iYWNrZ3JvdW5kW19uZ2NvbnRlbnQtJUNPTVAlXXtiYWNrZ3JvdW5kLWNvbG9yOnJnYmEoMCwwLDAsLjI2KX0ubWF0LXNsaWRlci1taW4tdmFsdWVbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1zbGlkZXItZm9jdXMtcmluZ1tfbmdjb250ZW50LSVDT01QJV17YmFja2dyb3VuZC1jb2xvcjpyZ2JhKDAsMCwwLC4xMil9Lm1hdC1zbGlkZXItbWluLXZhbHVlLm1hdC1zbGlkZXItdGh1bWItbGFiZWwtc2hvd2luZ1tfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXNsaWRlci10aHVtYltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtc2xpZGVyLW1pbi12YWx1ZS5tYXQtc2xpZGVyLXRodW1iLWxhYmVsLXNob3dpbmdbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1zbGlkZXItdGh1bWItbGFiZWxbX25nY29udGVudC0lQ09NUCVde2JhY2tncm91bmQtY29sb3I6cmdiYSgwLDAsMCwuODcpfS5tYXQtc2xpZGVyLW1pbi12YWx1ZS5tYXQtc2xpZGVyLXRodW1iLWxhYmVsLXNob3dpbmcuY2RrLWZvY3VzZWRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1zbGlkZXItdGh1bWJbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXNsaWRlci1taW4tdmFsdWUubWF0LXNsaWRlci10aHVtYi1sYWJlbC1zaG93aW5nLmNkay1mb2N1c2VkW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtc2xpZGVyLXRodW1iLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXtiYWNrZ3JvdW5kLWNvbG9yOnJnYmEoMCwwLDAsLjI2KX0ubWF0LXNsaWRlci1taW4tdmFsdWVbX25nY29udGVudC0lQ09NUCVdOm5vdCgubWF0LXNsaWRlci10aHVtYi1sYWJlbC1zaG93aW5nKSAgIC5tYXQtc2xpZGVyLXRodW1iW19uZ2NvbnRlbnQtJUNPTVAlXXtib3JkZXItY29sb3I6cmdiYSgwLDAsMCwuMjYpO2JhY2tncm91bmQtY29sb3I6dHJhbnNwYXJlbnR9Lm1hdC1zbGlkZXItbWluLXZhbHVlW19uZ2NvbnRlbnQtJUNPTVAlXTpub3QoLm1hdC1zbGlkZXItdGh1bWItbGFiZWwtc2hvd2luZyk6aG92ZXIgICAubWF0LXNsaWRlci10aHVtYltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtc2xpZGVyLW1pbi12YWx1ZVtfbmdjb250ZW50LSVDT01QJV06bm90KC5tYXQtc2xpZGVyLXRodW1iLWxhYmVsLXNob3dpbmcpLmNkay1mb2N1c2VkICAgLm1hdC1zbGlkZXItdGh1bWJbX25nY29udGVudC0lQ09NUCVde2JvcmRlci1jb2xvcjpyZ2JhKDAsMCwwLC4zOCl9Lm1hdC1zbGlkZXItbWluLXZhbHVlW19uZ2NvbnRlbnQtJUNPTVAlXTpub3QoLm1hdC1zbGlkZXItdGh1bWItbGFiZWwtc2hvd2luZyk6aG92ZXIubWF0LXNsaWRlci1kaXNhYmxlZCAgIC5tYXQtc2xpZGVyLXRodW1iW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1zbGlkZXItbWluLXZhbHVlW19uZ2NvbnRlbnQtJUNPTVAlXTpub3QoLm1hdC1zbGlkZXItdGh1bWItbGFiZWwtc2hvd2luZykuY2RrLWZvY3VzZWQubWF0LXNsaWRlci1kaXNhYmxlZCAgIC5tYXQtc2xpZGVyLXRodW1iW19uZ2NvbnRlbnQtJUNPTVAlXXtib3JkZXItY29sb3I6cmdiYSgwLDAsMCwuMjYpfS5tYXQtc2xpZGVyLWhhcy10aWNrc1tfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXNsaWRlci13cmFwcGVyW19uZ2NvbnRlbnQtJUNPTVAlXTo6YWZ0ZXJ7Ym9yZGVyLWNvbG9yOnJnYmEoMCwwLDAsLjcpfS5tYXQtc2xpZGVyLWhvcml6b250YWxbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1zbGlkZXItdGlja3NbX25nY29udGVudC0lQ09NUCVde2JhY2tncm91bmQtaW1hZ2U6cmVwZWF0aW5nLWxpbmVhci1ncmFkaWVudCh0byByaWdodCwgcmdiYSgwLCAwLCAwLCAwLjcpLCByZ2JhKDAsIDAsIDAsIDAuNykgMnB4LCB0cmFuc3BhcmVudCAwLCB0cmFuc3BhcmVudCk7YmFja2dyb3VuZC1pbWFnZTotbW96LXJlcGVhdGluZy1saW5lYXItZ3JhZGllbnQoMC4wMDAxZGVnLCByZ2JhKDAsIDAsIDAsIDAuNyksIHJnYmEoMCwgMCwgMCwgMC43KSAycHgsIHRyYW5zcGFyZW50IDAsIHRyYW5zcGFyZW50KX0ubWF0LXNsaWRlci12ZXJ0aWNhbFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXNsaWRlci10aWNrc1tfbmdjb250ZW50LSVDT01QJV17YmFja2dyb3VuZC1pbWFnZTpyZXBlYXRpbmctbGluZWFyLWdyYWRpZW50KHRvIGJvdHRvbSwgcmdiYSgwLCAwLCAwLCAwLjcpLCByZ2JhKDAsIDAsIDAsIDAuNykgMnB4LCB0cmFuc3BhcmVudCAwLCB0cmFuc3BhcmVudCl9Lm1hdC1zdGVwLWhlYWRlci5jZGsta2V5Ym9hcmQtZm9jdXNlZFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtc3RlcC1oZWFkZXIuY2RrLXByb2dyYW0tZm9jdXNlZFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtc3RlcC1oZWFkZXJbX25nY29udGVudC0lQ09NUCVdOmhvdmVye2JhY2tncm91bmQtY29sb3I6cmdiYSgwLDAsMCwuMDQpfUBtZWRpYShob3Zlcjogbm9uZSl7Lm1hdC1zdGVwLWhlYWRlcltfbmdjb250ZW50LSVDT01QJV06aG92ZXJ7YmFja2dyb3VuZDpub25lfX0ubWF0LXN0ZXAtaGVhZGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtc3RlcC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtc3RlcC1oZWFkZXJbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1zdGVwLW9wdGlvbmFsW19uZ2NvbnRlbnQtJUNPTVAlXXtjb2xvcjojNjE2MTYxfS5tYXQtc3RlcC1oZWFkZXJbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1zdGVwLWljb25bX25nY29udGVudC0lQ09NUCVde2JhY2tncm91bmQtY29sb3I6IzYxNjE2MTtjb2xvcjojZmZmfS5tYXQtc3RlcC1oZWFkZXJbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1zdGVwLWljb24tc2VsZWN0ZWRbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXN0ZXAtaGVhZGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtc3RlcC1pY29uLXN0YXRlLWRvbmVbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXN0ZXAtaGVhZGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtc3RlcC1pY29uLXN0YXRlLWVkaXRbX25nY29udGVudC0lQ09NUCVde2JhY2tncm91bmQtY29sb3I6I2Y1N2MwMDtjb2xvcjojZmZmfS5tYXQtc3RlcC1oZWFkZXJbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1zdGVwLWljb24tc3RhdGUtZXJyb3JbX25nY29udGVudC0lQ09NUCVde2JhY2tncm91bmQtY29sb3I6dHJhbnNwYXJlbnQ7Y29sb3I6I2Y0NDMzNn0ubWF0LXN0ZXAtaGVhZGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtc3RlcC1sYWJlbC5tYXQtc3RlcC1sYWJlbC1hY3RpdmVbX25nY29udGVudC0lQ09NUCVde2NvbG9yOiMyMTIxMjF9Lm1hdC1zdGVwLWhlYWRlcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXN0ZXAtbGFiZWwubWF0LXN0ZXAtbGFiZWwtZXJyb3JbX25nY29udGVudC0lQ09NUCVde2NvbG9yOiNmNDQzMzZ9Lm1hdC1zdGVwcGVyLWhvcml6b250YWxbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXN0ZXBwZXItdmVydGljYWxbX25nY29udGVudC0lQ09NUCVde2JhY2tncm91bmQtY29sb3I6I2ZmZn0ubWF0LXN0ZXBwZXItdmVydGljYWwtbGluZVtfbmdjb250ZW50LSVDT01QJV06OmJlZm9yZXtib3JkZXItbGVmdC1jb2xvcjpyZ2JhKDAsMCwwLC4xMil9Lm1hdC1ob3Jpem9udGFsLXN0ZXBwZXItaGVhZGVyW19uZ2NvbnRlbnQtJUNPTVAlXTo6YmVmb3JlLCAubWF0LWhvcml6b250YWwtc3RlcHBlci1oZWFkZXJbX25nY29udGVudC0lQ09NUCVdOjphZnRlciwgLm1hdC1zdGVwcGVyLWhvcml6b250YWwtbGluZVtfbmdjb250ZW50LSVDT01QJV17Ym9yZGVyLXRvcC1jb2xvcjpyZ2JhKDAsMCwwLC4xMil9Lm1hdC1ob3Jpem9udGFsLXN0ZXBwZXItaGVhZGVyW19uZ2NvbnRlbnQtJUNPTVAlXXtoZWlnaHQ6NzJweH0ubWF0LXN0ZXBwZXItbGFiZWwtcG9zaXRpb24tYm90dG9tW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaG9yaXpvbnRhbC1zdGVwcGVyLWhlYWRlcltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdmVydGljYWwtc3RlcHBlci1oZWFkZXJbX25nY29udGVudC0lQ09NUCVde3BhZGRpbmc6MjRweCAyNHB4fS5tYXQtc3RlcHBlci12ZXJ0aWNhbC1saW5lW19uZ2NvbnRlbnQtJUNPTVAlXTo6YmVmb3Jle3RvcDotMTZweDtib3R0b206LTE2cHh9Lm1hdC1zdGVwcGVyLWxhYmVsLXBvc2l0aW9uLWJvdHRvbVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWhvcml6b250YWwtc3RlcHBlci1oZWFkZXJbX25nY29udGVudC0lQ09NUCVdOjphZnRlciwgLm1hdC1zdGVwcGVyLWxhYmVsLXBvc2l0aW9uLWJvdHRvbVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWhvcml6b250YWwtc3RlcHBlci1oZWFkZXJbX25nY29udGVudC0lQ09NUCVdOjpiZWZvcmV7dG9wOjM2cHh9Lm1hdC1zdGVwcGVyLWxhYmVsLXBvc2l0aW9uLWJvdHRvbVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXN0ZXBwZXItaG9yaXpvbnRhbC1saW5lW19uZ2NvbnRlbnQtJUNPTVAlXXt0b3A6MzZweH0ubWF0LXNvcnQtaGVhZGVyLWFycm93W19uZ2NvbnRlbnQtJUNPTVAlXXtjb2xvcjojNjE2MTYxfS5tYXQtdGFiLW5hdi1iYXJbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXRhYi1oZWFkZXJbX25nY29udGVudC0lQ09NUCVde2JvcmRlci1ib3R0b206MXB4IHNvbGlkIHJnYmEoMCwwLDAsLjEyKX0ubWF0LXRhYi1ncm91cC1pbnZlcnRlZC1oZWFkZXJbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC10YWItbmF2LWJhcltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdGFiLWdyb3VwLWludmVydGVkLWhlYWRlcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXRhYi1oZWFkZXJbX25nY29udGVudC0lQ09NUCVde2JvcmRlci10b3A6MXB4IHNvbGlkIHJnYmEoMCwwLDAsLjEyKTtib3JkZXItYm90dG9tOm5vbmV9Lm1hdC10YWItbGFiZWxbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXRhYi1saW5rW19uZ2NvbnRlbnQtJUNPTVAlXXtjb2xvcjojMjEyMTIxfS5tYXQtdGFiLWxhYmVsLm1hdC10YWItZGlzYWJsZWRbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXRhYi1saW5rLm1hdC10YWItZGlzYWJsZWRbX25nY29udGVudC0lQ09NUCVde2NvbG9yOiM3NTc1NzV9Lm1hdC10YWItaGVhZGVyLXBhZ2luYXRpb24tY2hldnJvbltfbmdjb250ZW50LSVDT01QJV17Ym9yZGVyLWNvbG9yOiMyMTIxMjF9Lm1hdC10YWItaGVhZGVyLXBhZ2luYXRpb24tZGlzYWJsZWRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC10YWItaGVhZGVyLXBhZ2luYXRpb24tY2hldnJvbltfbmdjb250ZW50LSVDT01QJV17Ym9yZGVyLWNvbG9yOiM3NTc1NzV9Lm1hdC10YWItZ3JvdXBbY2xhc3MqPW1hdC1iYWNrZ3JvdW5kLV1bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC10YWItaGVhZGVyW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10YWItbmF2LWJhcltjbGFzcyo9bWF0LWJhY2tncm91bmQtXVtfbmdjb250ZW50LSVDT01QJV17Ym9yZGVyLWJvdHRvbTpub25lO2JvcmRlci10b3A6bm9uZX0ubWF0LXRhYi1ncm91cC5tYXQtcHJpbWFyeVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXRhYi1sYWJlbC5jZGsta2V5Ym9hcmQtZm9jdXNlZFtfbmdjb250ZW50LSVDT01QJV06bm90KC5tYXQtdGFiLWRpc2FibGVkKSwgLm1hdC10YWItZ3JvdXAubWF0LXByaW1hcnlbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC10YWItbGFiZWwuY2RrLXByb2dyYW0tZm9jdXNlZFtfbmdjb250ZW50LSVDT01QJV06bm90KC5tYXQtdGFiLWRpc2FibGVkKSwgLm1hdC10YWItZ3JvdXAubWF0LXByaW1hcnlbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC10YWItbGluay5jZGsta2V5Ym9hcmQtZm9jdXNlZFtfbmdjb250ZW50LSVDT01QJV06bm90KC5tYXQtdGFiLWRpc2FibGVkKSwgLm1hdC10YWItZ3JvdXAubWF0LXByaW1hcnlbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC10YWItbGluay5jZGstcHJvZ3JhbS1mb2N1c2VkW19uZ2NvbnRlbnQtJUNPTVAlXTpub3QoLm1hdC10YWItZGlzYWJsZWQpLCAubWF0LXRhYi1uYXYtYmFyLm1hdC1wcmltYXJ5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtdGFiLWxhYmVsLmNkay1rZXlib2FyZC1mb2N1c2VkW19uZ2NvbnRlbnQtJUNPTVAlXTpub3QoLm1hdC10YWItZGlzYWJsZWQpLCAubWF0LXRhYi1uYXYtYmFyLm1hdC1wcmltYXJ5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtdGFiLWxhYmVsLmNkay1wcm9ncmFtLWZvY3VzZWRbX25nY29udGVudC0lQ09NUCVdOm5vdCgubWF0LXRhYi1kaXNhYmxlZCksIC5tYXQtdGFiLW5hdi1iYXIubWF0LXByaW1hcnlbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC10YWItbGluay5jZGsta2V5Ym9hcmQtZm9jdXNlZFtfbmdjb250ZW50LSVDT01QJV06bm90KC5tYXQtdGFiLWRpc2FibGVkKSwgLm1hdC10YWItbmF2LWJhci5tYXQtcHJpbWFyeVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXRhYi1saW5rLmNkay1wcm9ncmFtLWZvY3VzZWRbX25nY29udGVudC0lQ09NUCVdOm5vdCgubWF0LXRhYi1kaXNhYmxlZCl7YmFja2dyb3VuZC1jb2xvcjpyZ2JhKDI1NSwxNTIsMCwuMyl9Lm1hdC10YWItZ3JvdXAubWF0LXByaW1hcnlbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pbmstYmFyW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10YWItbmF2LWJhci5tYXQtcHJpbWFyeVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWluay1iYXJbX25nY29udGVudC0lQ09NUCVde2JhY2tncm91bmQtY29sb3I6I2Y1N2MwMH0ubWF0LXRhYi1ncm91cC5tYXQtcHJpbWFyeS5tYXQtYmFja2dyb3VuZC1wcmltYXJ5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaW5rLWJhcltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdGFiLW5hdi1iYXIubWF0LXByaW1hcnkubWF0LWJhY2tncm91bmQtcHJpbWFyeVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWluay1iYXJbX25nY29udGVudC0lQ09NUCVde2JhY2tncm91bmQtY29sb3I6I2ZmZn0ubWF0LXRhYi1ncm91cC5tYXQtYWNjZW50W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtdGFiLWxhYmVsLmNkay1rZXlib2FyZC1mb2N1c2VkW19uZ2NvbnRlbnQtJUNPTVAlXTpub3QoLm1hdC10YWItZGlzYWJsZWQpLCAubWF0LXRhYi1ncm91cC5tYXQtYWNjZW50W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtdGFiLWxhYmVsLmNkay1wcm9ncmFtLWZvY3VzZWRbX25nY29udGVudC0lQ09NUCVdOm5vdCgubWF0LXRhYi1kaXNhYmxlZCksIC5tYXQtdGFiLWdyb3VwLm1hdC1hY2NlbnRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC10YWItbGluay5jZGsta2V5Ym9hcmQtZm9jdXNlZFtfbmdjb250ZW50LSVDT01QJV06bm90KC5tYXQtdGFiLWRpc2FibGVkKSwgLm1hdC10YWItZ3JvdXAubWF0LWFjY2VudFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXRhYi1saW5rLmNkay1wcm9ncmFtLWZvY3VzZWRbX25nY29udGVudC0lQ09NUCVdOm5vdCgubWF0LXRhYi1kaXNhYmxlZCksIC5tYXQtdGFiLW5hdi1iYXIubWF0LWFjY2VudFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXRhYi1sYWJlbC5jZGsta2V5Ym9hcmQtZm9jdXNlZFtfbmdjb250ZW50LSVDT01QJV06bm90KC5tYXQtdGFiLWRpc2FibGVkKSwgLm1hdC10YWItbmF2LWJhci5tYXQtYWNjZW50W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtdGFiLWxhYmVsLmNkay1wcm9ncmFtLWZvY3VzZWRbX25nY29udGVudC0lQ09NUCVdOm5vdCgubWF0LXRhYi1kaXNhYmxlZCksIC5tYXQtdGFiLW5hdi1iYXIubWF0LWFjY2VudFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXRhYi1saW5rLmNkay1rZXlib2FyZC1mb2N1c2VkW19uZ2NvbnRlbnQtJUNPTVAlXTpub3QoLm1hdC10YWItZGlzYWJsZWQpLCAubWF0LXRhYi1uYXYtYmFyLm1hdC1hY2NlbnRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC10YWItbGluay5jZGstcHJvZ3JhbS1mb2N1c2VkW19uZ2NvbnRlbnQtJUNPTVAlXTpub3QoLm1hdC10YWItZGlzYWJsZWQpe2JhY2tncm91bmQtY29sb3I6cmdiYSgyNTUsMTUyLDAsLjMpfS5tYXQtdGFiLWdyb3VwLm1hdC1hY2NlbnRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pbmstYmFyW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10YWItbmF2LWJhci5tYXQtYWNjZW50W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaW5rLWJhcltfbmdjb250ZW50LSVDT01QJV17YmFja2dyb3VuZC1jb2xvcjojZmY5ODAwfS5tYXQtdGFiLWdyb3VwLm1hdC1hY2NlbnQubWF0LWJhY2tncm91bmQtYWNjZW50W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaW5rLWJhcltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdGFiLW5hdi1iYXIubWF0LWFjY2VudC5tYXQtYmFja2dyb3VuZC1hY2NlbnRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pbmstYmFyW19uZ2NvbnRlbnQtJUNPTVAlXXtiYWNrZ3JvdW5kLWNvbG9yOiNmZmZ9Lm1hdC10YWItZ3JvdXAubWF0LXdhcm5bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC10YWItbGFiZWwuY2RrLWtleWJvYXJkLWZvY3VzZWRbX25nY29udGVudC0lQ09NUCVdOm5vdCgubWF0LXRhYi1kaXNhYmxlZCksIC5tYXQtdGFiLWdyb3VwLm1hdC13YXJuW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtdGFiLWxhYmVsLmNkay1wcm9ncmFtLWZvY3VzZWRbX25nY29udGVudC0lQ09NUCVdOm5vdCgubWF0LXRhYi1kaXNhYmxlZCksIC5tYXQtdGFiLWdyb3VwLm1hdC13YXJuW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtdGFiLWxpbmsuY2RrLWtleWJvYXJkLWZvY3VzZWRbX25nY29udGVudC0lQ09NUCVdOm5vdCgubWF0LXRhYi1kaXNhYmxlZCksIC5tYXQtdGFiLWdyb3VwLm1hdC13YXJuW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtdGFiLWxpbmsuY2RrLXByb2dyYW0tZm9jdXNlZFtfbmdjb250ZW50LSVDT01QJV06bm90KC5tYXQtdGFiLWRpc2FibGVkKSwgLm1hdC10YWItbmF2LWJhci5tYXQtd2Fybltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXRhYi1sYWJlbC5jZGsta2V5Ym9hcmQtZm9jdXNlZFtfbmdjb250ZW50LSVDT01QJV06bm90KC5tYXQtdGFiLWRpc2FibGVkKSwgLm1hdC10YWItbmF2LWJhci5tYXQtd2Fybltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXRhYi1sYWJlbC5jZGstcHJvZ3JhbS1mb2N1c2VkW19uZ2NvbnRlbnQtJUNPTVAlXTpub3QoLm1hdC10YWItZGlzYWJsZWQpLCAubWF0LXRhYi1uYXYtYmFyLm1hdC13YXJuW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtdGFiLWxpbmsuY2RrLWtleWJvYXJkLWZvY3VzZWRbX25nY29udGVudC0lQ09NUCVdOm5vdCgubWF0LXRhYi1kaXNhYmxlZCksIC5tYXQtdGFiLW5hdi1iYXIubWF0LXdhcm5bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC10YWItbGluay5jZGstcHJvZ3JhbS1mb2N1c2VkW19uZ2NvbnRlbnQtJUNPTVAlXTpub3QoLm1hdC10YWItZGlzYWJsZWQpe2JhY2tncm91bmQtY29sb3I6cmdiYSgyNTUsMjA1LDIxMCwuMyl9Lm1hdC10YWItZ3JvdXAubWF0LXdhcm5bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pbmstYmFyW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10YWItbmF2LWJhci5tYXQtd2Fybltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWluay1iYXJbX25nY29udGVudC0lQ09NUCVde2JhY2tncm91bmQtY29sb3I6I2Y0NDMzNn0ubWF0LXRhYi1ncm91cC5tYXQtd2Fybi5tYXQtYmFja2dyb3VuZC13YXJuW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaW5rLWJhcltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdGFiLW5hdi1iYXIubWF0LXdhcm4ubWF0LWJhY2tncm91bmQtd2Fybltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWluay1iYXJbX25nY29udGVudC0lQ09NUCVde2JhY2tncm91bmQtY29sb3I6I2ZmZn0ubWF0LXRhYi1ncm91cC5tYXQtYmFja2dyb3VuZC1wcmltYXJ5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtdGFiLWxhYmVsLmNkay1rZXlib2FyZC1mb2N1c2VkW19uZ2NvbnRlbnQtJUNPTVAlXTpub3QoLm1hdC10YWItZGlzYWJsZWQpLCAubWF0LXRhYi1ncm91cC5tYXQtYmFja2dyb3VuZC1wcmltYXJ5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtdGFiLWxhYmVsLmNkay1wcm9ncmFtLWZvY3VzZWRbX25nY29udGVudC0lQ09NUCVdOm5vdCgubWF0LXRhYi1kaXNhYmxlZCksIC5tYXQtdGFiLWdyb3VwLm1hdC1iYWNrZ3JvdW5kLXByaW1hcnlbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC10YWItbGluay5jZGsta2V5Ym9hcmQtZm9jdXNlZFtfbmdjb250ZW50LSVDT01QJV06bm90KC5tYXQtdGFiLWRpc2FibGVkKSwgLm1hdC10YWItZ3JvdXAubWF0LWJhY2tncm91bmQtcHJpbWFyeVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXRhYi1saW5rLmNkay1wcm9ncmFtLWZvY3VzZWRbX25nY29udGVudC0lQ09NUCVdOm5vdCgubWF0LXRhYi1kaXNhYmxlZCksIC5tYXQtdGFiLW5hdi1iYXIubWF0LWJhY2tncm91bmQtcHJpbWFyeVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXRhYi1sYWJlbC5jZGsta2V5Ym9hcmQtZm9jdXNlZFtfbmdjb250ZW50LSVDT01QJV06bm90KC5tYXQtdGFiLWRpc2FibGVkKSwgLm1hdC10YWItbmF2LWJhci5tYXQtYmFja2dyb3VuZC1wcmltYXJ5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtdGFiLWxhYmVsLmNkay1wcm9ncmFtLWZvY3VzZWRbX25nY29udGVudC0lQ09NUCVdOm5vdCgubWF0LXRhYi1kaXNhYmxlZCksIC5tYXQtdGFiLW5hdi1iYXIubWF0LWJhY2tncm91bmQtcHJpbWFyeVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXRhYi1saW5rLmNkay1rZXlib2FyZC1mb2N1c2VkW19uZ2NvbnRlbnQtJUNPTVAlXTpub3QoLm1hdC10YWItZGlzYWJsZWQpLCAubWF0LXRhYi1uYXYtYmFyLm1hdC1iYWNrZ3JvdW5kLXByaW1hcnlbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC10YWItbGluay5jZGstcHJvZ3JhbS1mb2N1c2VkW19uZ2NvbnRlbnQtJUNPTVAlXTpub3QoLm1hdC10YWItZGlzYWJsZWQpe2JhY2tncm91bmQtY29sb3I6cmdiYSgyNTUsMTUyLDAsLjMpfS5tYXQtdGFiLWdyb3VwLm1hdC1iYWNrZ3JvdW5kLXByaW1hcnlbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC10YWItaGVhZGVyW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10YWItZ3JvdXAubWF0LWJhY2tncm91bmQtcHJpbWFyeVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXRhYi1saW5rc1tfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdGFiLWdyb3VwLm1hdC1iYWNrZ3JvdW5kLXByaW1hcnlbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC10YWItaGVhZGVyLXBhZ2luYXRpb25bX25nY29udGVudC0lQ09NUCVdLCAubWF0LXRhYi1uYXYtYmFyLm1hdC1iYWNrZ3JvdW5kLXByaW1hcnlbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC10YWItaGVhZGVyW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10YWItbmF2LWJhci5tYXQtYmFja2dyb3VuZC1wcmltYXJ5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtdGFiLWxpbmtzW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10YWItbmF2LWJhci5tYXQtYmFja2dyb3VuZC1wcmltYXJ5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtdGFiLWhlYWRlci1wYWdpbmF0aW9uW19uZ2NvbnRlbnQtJUNPTVAlXXtiYWNrZ3JvdW5kLWNvbG9yOiNmNTdjMDB9Lm1hdC10YWItZ3JvdXAubWF0LWJhY2tncm91bmQtcHJpbWFyeVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXRhYi1sYWJlbFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdGFiLWdyb3VwLm1hdC1iYWNrZ3JvdW5kLXByaW1hcnlbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC10YWItbGlua1tfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdGFiLW5hdi1iYXIubWF0LWJhY2tncm91bmQtcHJpbWFyeVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXRhYi1sYWJlbFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdGFiLW5hdi1iYXIubWF0LWJhY2tncm91bmQtcHJpbWFyeVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXRhYi1saW5rW19uZ2NvbnRlbnQtJUNPTVAlXXtjb2xvcjojZmZmfS5tYXQtdGFiLWdyb3VwLm1hdC1iYWNrZ3JvdW5kLXByaW1hcnlbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC10YWItbGFiZWwubWF0LXRhYi1kaXNhYmxlZFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdGFiLWdyb3VwLm1hdC1iYWNrZ3JvdW5kLXByaW1hcnlbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC10YWItbGluay5tYXQtdGFiLWRpc2FibGVkW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10YWItbmF2LWJhci5tYXQtYmFja2dyb3VuZC1wcmltYXJ5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtdGFiLWxhYmVsLm1hdC10YWItZGlzYWJsZWRbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXRhYi1uYXYtYmFyLm1hdC1iYWNrZ3JvdW5kLXByaW1hcnlbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC10YWItbGluay5tYXQtdGFiLWRpc2FibGVkW19uZ2NvbnRlbnQtJUNPTVAlXXtjb2xvcjpyZ2JhKDI1NSwyNTUsMjU1LC40KX0ubWF0LXRhYi1ncm91cC5tYXQtYmFja2dyb3VuZC1wcmltYXJ5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtdGFiLWhlYWRlci1wYWdpbmF0aW9uLWNoZXZyb25bX25nY29udGVudC0lQ09NUCVdLCAubWF0LXRhYi1uYXYtYmFyLm1hdC1iYWNrZ3JvdW5kLXByaW1hcnlbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC10YWItaGVhZGVyLXBhZ2luYXRpb24tY2hldnJvbltfbmdjb250ZW50LSVDT01QJV17Ym9yZGVyLWNvbG9yOiNmZmZ9Lm1hdC10YWItZ3JvdXAubWF0LWJhY2tncm91bmQtcHJpbWFyeVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXRhYi1oZWFkZXItcGFnaW5hdGlvbi1kaXNhYmxlZFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXRhYi1oZWFkZXItcGFnaW5hdGlvbi1jaGV2cm9uW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10YWItbmF2LWJhci5tYXQtYmFja2dyb3VuZC1wcmltYXJ5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtdGFiLWhlYWRlci1wYWdpbmF0aW9uLWRpc2FibGVkW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtdGFiLWhlYWRlci1wYWdpbmF0aW9uLWNoZXZyb25bX25nY29udGVudC0lQ09NUCVde2JvcmRlci1jb2xvcjpyZ2JhKDI1NSwyNTUsMjU1LC40KX0ubWF0LXRhYi1ncm91cC5tYXQtYmFja2dyb3VuZC1wcmltYXJ5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtcmlwcGxlLWVsZW1lbnRbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXRhYi1uYXYtYmFyLm1hdC1iYWNrZ3JvdW5kLXByaW1hcnlbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1yaXBwbGUtZWxlbWVudFtfbmdjb250ZW50LSVDT01QJV17YmFja2dyb3VuZC1jb2xvcjpyZ2JhKDI1NSwyNTUsMjU1LC4xMil9Lm1hdC10YWItZ3JvdXAubWF0LWJhY2tncm91bmQtYWNjZW50W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtdGFiLWxhYmVsLmNkay1rZXlib2FyZC1mb2N1c2VkW19uZ2NvbnRlbnQtJUNPTVAlXTpub3QoLm1hdC10YWItZGlzYWJsZWQpLCAubWF0LXRhYi1ncm91cC5tYXQtYmFja2dyb3VuZC1hY2NlbnRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC10YWItbGFiZWwuY2RrLXByb2dyYW0tZm9jdXNlZFtfbmdjb250ZW50LSVDT01QJV06bm90KC5tYXQtdGFiLWRpc2FibGVkKSwgLm1hdC10YWItZ3JvdXAubWF0LWJhY2tncm91bmQtYWNjZW50W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtdGFiLWxpbmsuY2RrLWtleWJvYXJkLWZvY3VzZWRbX25nY29udGVudC0lQ09NUCVdOm5vdCgubWF0LXRhYi1kaXNhYmxlZCksIC5tYXQtdGFiLWdyb3VwLm1hdC1iYWNrZ3JvdW5kLWFjY2VudFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXRhYi1saW5rLmNkay1wcm9ncmFtLWZvY3VzZWRbX25nY29udGVudC0lQ09NUCVdOm5vdCgubWF0LXRhYi1kaXNhYmxlZCksIC5tYXQtdGFiLW5hdi1iYXIubWF0LWJhY2tncm91bmQtYWNjZW50W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtdGFiLWxhYmVsLmNkay1rZXlib2FyZC1mb2N1c2VkW19uZ2NvbnRlbnQtJUNPTVAlXTpub3QoLm1hdC10YWItZGlzYWJsZWQpLCAubWF0LXRhYi1uYXYtYmFyLm1hdC1iYWNrZ3JvdW5kLWFjY2VudFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXRhYi1sYWJlbC5jZGstcHJvZ3JhbS1mb2N1c2VkW19uZ2NvbnRlbnQtJUNPTVAlXTpub3QoLm1hdC10YWItZGlzYWJsZWQpLCAubWF0LXRhYi1uYXYtYmFyLm1hdC1iYWNrZ3JvdW5kLWFjY2VudFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXRhYi1saW5rLmNkay1rZXlib2FyZC1mb2N1c2VkW19uZ2NvbnRlbnQtJUNPTVAlXTpub3QoLm1hdC10YWItZGlzYWJsZWQpLCAubWF0LXRhYi1uYXYtYmFyLm1hdC1iYWNrZ3JvdW5kLWFjY2VudFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXRhYi1saW5rLmNkay1wcm9ncmFtLWZvY3VzZWRbX25nY29udGVudC0lQ09NUCVdOm5vdCgubWF0LXRhYi1kaXNhYmxlZCl7YmFja2dyb3VuZC1jb2xvcjpyZ2JhKDI1NSwxNTIsMCwuMyl9Lm1hdC10YWItZ3JvdXAubWF0LWJhY2tncm91bmQtYWNjZW50W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtdGFiLWhlYWRlcltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdGFiLWdyb3VwLm1hdC1iYWNrZ3JvdW5kLWFjY2VudFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXRhYi1saW5rc1tfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdGFiLWdyb3VwLm1hdC1iYWNrZ3JvdW5kLWFjY2VudFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXRhYi1oZWFkZXItcGFnaW5hdGlvbltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdGFiLW5hdi1iYXIubWF0LWJhY2tncm91bmQtYWNjZW50W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtdGFiLWhlYWRlcltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdGFiLW5hdi1iYXIubWF0LWJhY2tncm91bmQtYWNjZW50W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtdGFiLWxpbmtzW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10YWItbmF2LWJhci5tYXQtYmFja2dyb3VuZC1hY2NlbnRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC10YWItaGVhZGVyLXBhZ2luYXRpb25bX25nY29udGVudC0lQ09NUCVde2JhY2tncm91bmQtY29sb3I6I2ZmOTgwMH0ubWF0LXRhYi1ncm91cC5tYXQtYmFja2dyb3VuZC1hY2NlbnRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC10YWItbGFiZWxbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXRhYi1ncm91cC5tYXQtYmFja2dyb3VuZC1hY2NlbnRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC10YWItbGlua1tfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdGFiLW5hdi1iYXIubWF0LWJhY2tncm91bmQtYWNjZW50W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtdGFiLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10YWItbmF2LWJhci5tYXQtYmFja2dyb3VuZC1hY2NlbnRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC10YWItbGlua1tfbmdjb250ZW50LSVDT01QJV17Y29sb3I6I2ZmZn0ubWF0LXRhYi1ncm91cC5tYXQtYmFja2dyb3VuZC1hY2NlbnRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC10YWItbGFiZWwubWF0LXRhYi1kaXNhYmxlZFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdGFiLWdyb3VwLm1hdC1iYWNrZ3JvdW5kLWFjY2VudFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXRhYi1saW5rLm1hdC10YWItZGlzYWJsZWRbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXRhYi1uYXYtYmFyLm1hdC1iYWNrZ3JvdW5kLWFjY2VudFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXRhYi1sYWJlbC5tYXQtdGFiLWRpc2FibGVkW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10YWItbmF2LWJhci5tYXQtYmFja2dyb3VuZC1hY2NlbnRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC10YWItbGluay5tYXQtdGFiLWRpc2FibGVkW19uZ2NvbnRlbnQtJUNPTVAlXXtjb2xvcjpyZ2JhKDI1NSwyNTUsMjU1LC40KX0ubWF0LXRhYi1ncm91cC5tYXQtYmFja2dyb3VuZC1hY2NlbnRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC10YWItaGVhZGVyLXBhZ2luYXRpb24tY2hldnJvbltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdGFiLW5hdi1iYXIubWF0LWJhY2tncm91bmQtYWNjZW50W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtdGFiLWhlYWRlci1wYWdpbmF0aW9uLWNoZXZyb25bX25nY29udGVudC0lQ09NUCVde2JvcmRlci1jb2xvcjojZmZmfS5tYXQtdGFiLWdyb3VwLm1hdC1iYWNrZ3JvdW5kLWFjY2VudFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXRhYi1oZWFkZXItcGFnaW5hdGlvbi1kaXNhYmxlZFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXRhYi1oZWFkZXItcGFnaW5hdGlvbi1jaGV2cm9uW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10YWItbmF2LWJhci5tYXQtYmFja2dyb3VuZC1hY2NlbnRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC10YWItaGVhZGVyLXBhZ2luYXRpb24tZGlzYWJsZWRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC10YWItaGVhZGVyLXBhZ2luYXRpb24tY2hldnJvbltfbmdjb250ZW50LSVDT01QJV17Ym9yZGVyLWNvbG9yOnJnYmEoMjU1LDI1NSwyNTUsLjQpfS5tYXQtdGFiLWdyb3VwLm1hdC1iYWNrZ3JvdW5kLWFjY2VudFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXJpcHBsZS1lbGVtZW50W19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10YWItbmF2LWJhci5tYXQtYmFja2dyb3VuZC1hY2NlbnRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1yaXBwbGUtZWxlbWVudFtfbmdjb250ZW50LSVDT01QJV17YmFja2dyb3VuZC1jb2xvcjpyZ2JhKDI1NSwyNTUsMjU1LC4xMil9Lm1hdC10YWItZ3JvdXAubWF0LWJhY2tncm91bmQtd2Fybltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXRhYi1sYWJlbC5jZGsta2V5Ym9hcmQtZm9jdXNlZFtfbmdjb250ZW50LSVDT01QJV06bm90KC5tYXQtdGFiLWRpc2FibGVkKSwgLm1hdC10YWItZ3JvdXAubWF0LWJhY2tncm91bmQtd2Fybltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXRhYi1sYWJlbC5jZGstcHJvZ3JhbS1mb2N1c2VkW19uZ2NvbnRlbnQtJUNPTVAlXTpub3QoLm1hdC10YWItZGlzYWJsZWQpLCAubWF0LXRhYi1ncm91cC5tYXQtYmFja2dyb3VuZC13YXJuW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtdGFiLWxpbmsuY2RrLWtleWJvYXJkLWZvY3VzZWRbX25nY29udGVudC0lQ09NUCVdOm5vdCgubWF0LXRhYi1kaXNhYmxlZCksIC5tYXQtdGFiLWdyb3VwLm1hdC1iYWNrZ3JvdW5kLXdhcm5bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC10YWItbGluay5jZGstcHJvZ3JhbS1mb2N1c2VkW19uZ2NvbnRlbnQtJUNPTVAlXTpub3QoLm1hdC10YWItZGlzYWJsZWQpLCAubWF0LXRhYi1uYXYtYmFyLm1hdC1iYWNrZ3JvdW5kLXdhcm5bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC10YWItbGFiZWwuY2RrLWtleWJvYXJkLWZvY3VzZWRbX25nY29udGVudC0lQ09NUCVdOm5vdCgubWF0LXRhYi1kaXNhYmxlZCksIC5tYXQtdGFiLW5hdi1iYXIubWF0LWJhY2tncm91bmQtd2Fybltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXRhYi1sYWJlbC5jZGstcHJvZ3JhbS1mb2N1c2VkW19uZ2NvbnRlbnQtJUNPTVAlXTpub3QoLm1hdC10YWItZGlzYWJsZWQpLCAubWF0LXRhYi1uYXYtYmFyLm1hdC1iYWNrZ3JvdW5kLXdhcm5bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC10YWItbGluay5jZGsta2V5Ym9hcmQtZm9jdXNlZFtfbmdjb250ZW50LSVDT01QJV06bm90KC5tYXQtdGFiLWRpc2FibGVkKSwgLm1hdC10YWItbmF2LWJhci5tYXQtYmFja2dyb3VuZC13YXJuW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtdGFiLWxpbmsuY2RrLXByb2dyYW0tZm9jdXNlZFtfbmdjb250ZW50LSVDT01QJV06bm90KC5tYXQtdGFiLWRpc2FibGVkKXtiYWNrZ3JvdW5kLWNvbG9yOnJnYmEoMjU1LDIwNSwyMTAsLjMpfS5tYXQtdGFiLWdyb3VwLm1hdC1iYWNrZ3JvdW5kLXdhcm5bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC10YWItaGVhZGVyW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10YWItZ3JvdXAubWF0LWJhY2tncm91bmQtd2Fybltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXRhYi1saW5rc1tfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdGFiLWdyb3VwLm1hdC1iYWNrZ3JvdW5kLXdhcm5bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC10YWItaGVhZGVyLXBhZ2luYXRpb25bX25nY29udGVudC0lQ09NUCVdLCAubWF0LXRhYi1uYXYtYmFyLm1hdC1iYWNrZ3JvdW5kLXdhcm5bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC10YWItaGVhZGVyW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10YWItbmF2LWJhci5tYXQtYmFja2dyb3VuZC13YXJuW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtdGFiLWxpbmtzW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10YWItbmF2LWJhci5tYXQtYmFja2dyb3VuZC13YXJuW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtdGFiLWhlYWRlci1wYWdpbmF0aW9uW19uZ2NvbnRlbnQtJUNPTVAlXXtiYWNrZ3JvdW5kLWNvbG9yOiNmNDQzMzZ9Lm1hdC10YWItZ3JvdXAubWF0LWJhY2tncm91bmQtd2Fybltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXRhYi1sYWJlbFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdGFiLWdyb3VwLm1hdC1iYWNrZ3JvdW5kLXdhcm5bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC10YWItbGlua1tfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdGFiLW5hdi1iYXIubWF0LWJhY2tncm91bmQtd2Fybltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXRhYi1sYWJlbFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdGFiLW5hdi1iYXIubWF0LWJhY2tncm91bmQtd2Fybltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXRhYi1saW5rW19uZ2NvbnRlbnQtJUNPTVAlXXtjb2xvcjojZmZmfS5tYXQtdGFiLWdyb3VwLm1hdC1iYWNrZ3JvdW5kLXdhcm5bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC10YWItbGFiZWwubWF0LXRhYi1kaXNhYmxlZFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdGFiLWdyb3VwLm1hdC1iYWNrZ3JvdW5kLXdhcm5bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC10YWItbGluay5tYXQtdGFiLWRpc2FibGVkW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10YWItbmF2LWJhci5tYXQtYmFja2dyb3VuZC13YXJuW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtdGFiLWxhYmVsLm1hdC10YWItZGlzYWJsZWRbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXRhYi1uYXYtYmFyLm1hdC1iYWNrZ3JvdW5kLXdhcm5bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC10YWItbGluay5tYXQtdGFiLWRpc2FibGVkW19uZ2NvbnRlbnQtJUNPTVAlXXtjb2xvcjpyZ2JhKDI1NSwyNTUsMjU1LC40KX0ubWF0LXRhYi1ncm91cC5tYXQtYmFja2dyb3VuZC13YXJuW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtdGFiLWhlYWRlci1wYWdpbmF0aW9uLWNoZXZyb25bX25nY29udGVudC0lQ09NUCVdLCAubWF0LXRhYi1uYXYtYmFyLm1hdC1iYWNrZ3JvdW5kLXdhcm5bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC10YWItaGVhZGVyLXBhZ2luYXRpb24tY2hldnJvbltfbmdjb250ZW50LSVDT01QJV17Ym9yZGVyLWNvbG9yOiNmZmZ9Lm1hdC10YWItZ3JvdXAubWF0LWJhY2tncm91bmQtd2Fybltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXRhYi1oZWFkZXItcGFnaW5hdGlvbi1kaXNhYmxlZFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXRhYi1oZWFkZXItcGFnaW5hdGlvbi1jaGV2cm9uW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10YWItbmF2LWJhci5tYXQtYmFja2dyb3VuZC13YXJuW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtdGFiLWhlYWRlci1wYWdpbmF0aW9uLWRpc2FibGVkW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtdGFiLWhlYWRlci1wYWdpbmF0aW9uLWNoZXZyb25bX25nY29udGVudC0lQ09NUCVde2JvcmRlci1jb2xvcjpyZ2JhKDI1NSwyNTUsMjU1LC40KX0ubWF0LXRhYi1ncm91cC5tYXQtYmFja2dyb3VuZC13YXJuW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtcmlwcGxlLWVsZW1lbnRbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXRhYi1uYXYtYmFyLm1hdC1iYWNrZ3JvdW5kLXdhcm5bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1yaXBwbGUtZWxlbWVudFtfbmdjb250ZW50LSVDT01QJV17YmFja2dyb3VuZC1jb2xvcjpyZ2JhKDI1NSwyNTUsMjU1LC4xMil9Lm1hdC10b29sYmFyW19uZ2NvbnRlbnQtJUNPTVAlXXtiYWNrZ3JvdW5kOiNmNWY1ZjU7Y29sb3I6IzIxMjEyMX0ubWF0LXRvb2xiYXIubWF0LXByaW1hcnlbX25nY29udGVudC0lQ09NUCVde2JhY2tncm91bmQ6I2Y1N2MwMDtjb2xvcjojZmZmfS5tYXQtdG9vbGJhci5tYXQtYWNjZW50W19uZ2NvbnRlbnQtJUNPTVAlXXtiYWNrZ3JvdW5kOiNmZjk4MDA7Y29sb3I6I2ZmZn0ubWF0LXRvb2xiYXIubWF0LXdhcm5bX25nY29udGVudC0lQ09NUCVde2JhY2tncm91bmQ6I2Y0NDMzNjtjb2xvcjojZmZmfS5tYXQtdG9vbGJhcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtdW5kZXJsaW5lW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10b29sYmFyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1yaXBwbGVbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXRvb2xiYXJbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb2N1c2VkW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1yaXBwbGVbX25nY29udGVudC0lQ09NUCVde2JhY2tncm91bmQtY29sb3I6Y3VycmVudENvbG9yfS5tYXQtdG9vbGJhcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXRvb2xiYXJbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb2N1c2VkW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdG9vbGJhcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXNlbGVjdC12YWx1ZVtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdG9vbGJhcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXNlbGVjdC1hcnJvd1tfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdG9vbGJhcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQubWF0LWZvY3VzZWRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1zZWxlY3QtYXJyb3dbX25nY29udGVudC0lQ09NUCVde2NvbG9yOmluaGVyaXR9Lm1hdC10b29sYmFyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaW5wdXQtZWxlbWVudFtfbmdjb250ZW50LSVDT01QJV17Y2FyZXQtY29sb3I6Y3VycmVudENvbG9yfS5tYXQtdG9vbGJhci1tdWx0aXBsZS1yb3dzW19uZ2NvbnRlbnQtJUNPTVAlXXttaW4taGVpZ2h0OjY0cHh9Lm1hdC10b29sYmFyLXJvd1tfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdG9vbGJhci1zaW5nbGUtcm93W19uZ2NvbnRlbnQtJUNPTVAlXXtoZWlnaHQ6NjRweH1AbWVkaWEobWF4LXdpZHRoOiA1OTlweCl7Lm1hdC10b29sYmFyLW11bHRpcGxlLXJvd3NbX25nY29udGVudC0lQ09NUCVde21pbi1oZWlnaHQ6NTZweH0ubWF0LXRvb2xiYXItcm93W19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10b29sYmFyLXNpbmdsZS1yb3dbX25nY29udGVudC0lQ09NUCVde2hlaWdodDo1NnB4fX0ubWF0LXRvb2x0aXBbX25nY29udGVudC0lQ09NUCVde2JhY2tncm91bmQ6cmdiYSg5Nyw5Nyw5NywuOSl9Lm1hdC10cmVlW19uZ2NvbnRlbnQtJUNPTVAlXXtiYWNrZ3JvdW5kOiNmZmZ9Lm1hdC10cmVlLW5vZGVbX25nY29udGVudC0lQ09NUCVdLCAubWF0LW5lc3RlZC10cmVlLW5vZGVbX25nY29udGVudC0lQ09NUCVde2NvbG9yOiMyMTIxMjF9Lm1hdC10cmVlLW5vZGVbX25nY29udGVudC0lQ09NUCVde21pbi1oZWlnaHQ6NDhweH0ubWF0LXNuYWNrLWJhci1jb250YWluZXJbX25nY29udGVudC0lQ09NUCVde2NvbG9yOnJnYmEoMjU1LDI1NSwyNTUsLjcpO2JhY2tncm91bmQ6IzMyMzIzMjtib3gtc2hhZG93OjBweCAzcHggNXB4IC0xcHggcmdiYSgwLCAwLCAwLCAwLjIpLDBweCA2cHggMTBweCAwcHggcmdiYSgwLCAwLCAwLCAwLjE0KSwwcHggMXB4IDE4cHggMHB4IHJnYmEoMCwgMCwgMCwgMC4xMil9Lm1hdC1zaW1wbGUtc25hY2tiYXItYWN0aW9uW19uZ2NvbnRlbnQtJUNPTVAlXXtjb2xvcjojZmY5ODAwfS5maWx0ZXItY2hpcFtfbmdjb250ZW50LSVDT01QJV17YWxpZ24taXRlbXM6Y2VudGVyO2Rpc3BsYXk6ZmxleDttYXJnaW4tbGVmdDo1cHh9Lm1ldHJpYy1hcml0aG1ldGljLWVsZW1lbnQtcmFuZ2VbX25nY29udGVudC0lQ09NUCVde2FsaWduLWl0ZW1zOmNlbnRlcjtiYWNrZ3JvdW5kLWNvbG9yOiNmZmY7Zm9udC1zaXplOi44ZW07aGVpZ2h0OjMwcHg7anVzdGlmeS1jb250ZW50OmNlbnRlcjtsaW5lLWhlaWdodDozMHB4O3BhZGRpbmc6MCA1cHg7bWFyZ2luLWxlZnQ6NXB4fS5pbnB1dC1maWVsZFtfbmdjb250ZW50LSVDT01QJV17YmFja2dyb3VuZC1jb2xvcjp0cmFuc3BhcmVudDtib3JkZXI6bm9uZTtmb250LWZhbWlseTptb25vc3BhY2U7Zm9udC1zaXplOjEuMWVtO3RyYW5zaXRpb246d2lkdGggMXN9LmlucHV0LWZpZWxkW19uZ2NvbnRlbnQtJUNPTVAlXTpmb2N1c3tiYWNrZ3JvdW5kLWNvbG9yOnJnYmEoMCwwLDAsLjEyKTtib3JkZXI6bm9uZTtvdXRsaW5lOm5vbmV9LnZhbHVlLWludmFsaWRbX25nY29udGVudC0lQ09NUCVde2NvbG9yOiNmNDQzMzZ9LmVtYmVkZGluZy1zZWxlY3RlZFtfbmdjb250ZW50LSVDT01QJV17Y29sb3I6I2Y1N2MwMDtvcGFjaXR5OjF9LmVtYmVkZGluZy11bnNlbGVjdGVkW19uZ2NvbnRlbnQtJUNPTVAlXXtvcGFjaXR5Oi40fS5lbWJlZGRpbmdzLWJ1dHRvbltfbmdjb250ZW50LSVDT01QJV17d2lkdGg6MThweDtoZWlnaHQ6MThweDttYXJnaW4tcmlnaHQ6OHB4O2N1cnNvcjpwb2ludGVyfSddLGNoYW5nZURldGVjdGlvbjowfSk7Y2xhc3MgYXB0e2NvbnN0cnVjdG9yKHQpe3RoaXMuc3RvcmU9dCx0aGlzLmZpbHRlclZhbHVlcyQ9dGhpcy5zdG9yZS5waXBlKGx2KExkdCkpLnBpcGUoZnQoKHQ9Pntjb25zdCBuPXRbdGhpcy5tZXRyaWNdO3JldHVybiBuP3ttaW46bi5pbmNsdWRlTmFOPyJOYU4iOnRoaXMucm91bmRUb1RocmVlRGVjaW1hbFBvaW50cyhuLm1pbiksbWF4Om4ubWF4PG4ubWluPyJOYU4iOnRoaXMucm91bmRUb1RocmVlRGVjaW1hbFBvaW50cyhuLm1heCl9OnttaW46LTEsbWF4OjF9fSkpKSx0aGlzLmhhc0VtYmVkZGluZ3NEYXRhJD10aGlzLnN0b3JlLnBpcGUobHYoemR0KSkucGlwZShmdCgodD0+dm9pZCAwIT09dCkpKSx0aGlzLmVtYmVkZGluZ3NNZXRyaWMkPXRoaXMuc3RvcmUucGlwZShsdihxZHQpKX1yZW1vdmUodCl7dGhpcy5zdG9yZS5kaXNwYXRjaChzZ3Qoe21ldHJpYzp0fSkpfXNlbGVjdCh0KXt0aGlzLnN0b3JlLmRpc3BhdGNoKGhndCh7bWV0cmljOnR9KSl9ZmlsdGVyQ2hhbmdlKHQpe2NvbnN0IG49aXNOYU4odC5taW4pPy0xOnQubWluLGU9aXNOYU4odC5tYXgpPy0yOnQubWF4LGE9aXNOYU4odC5taW4pO3RoaXMuc3RvcmUuZGlzcGF0Y2gobGd0KHttZXRyaWM6dGhpcy5tZXRyaWMsbWF4OmUsbWluOm4saW5jbHVkZU5hTjphfSkpfXJvdW5kVG9UaHJlZURlY2ltYWxQb2ludHModCl7cmV0dXJuIE1hdGgucm91bmQoMWUzKih0K051bWJlci5FUFNJTE9OKSkvMWUzfX1hcHQuybVmYWM9ZnVuY3Rpb24gdChuKXtyZXR1cm4gbmV3KG58fGFwdCkoWmcoY3YpKX0sYXB0Lsm1Y21wPV9vKHt0eXBlOmFwdCxzZWxlY3RvcnM6W1sibnBtaS1tZXRyaWMtYXJpdGhtZXRpYy1lbGVtZW50Il1dLGlucHV0czp7bWV0cmljOiJtZXRyaWMifSxkZWNsczo0LHZhcnM6MTAsY29uc3RzOltbMywibWV0cmljIiwiZmlsdGVyVmFsdWVzIiwiaGFzRW1iZWRkaW5nc0RhdGEiLCJlbWJlZGRpbmdzTWV0cmljIiwib25SZW1vdmUiLCJvblNlbGVjdCIsIm9uRmlsdGVyQ2hhbmdlIl1dLHRlbXBsYXRlOmZ1bmN0aW9uIHQobixlKXsxJm4mJihLZygwLCJtZXRyaWMtYXJpdGhtZXRpYy1lbGVtZW50LWNvbXBvbmVudCIsMCksY3AoIm9uUmVtb3ZlIiwoZnVuY3Rpb24gdChuKXtyZXR1cm4gZS5yZW1vdmUobil9KSkoIm9uU2VsZWN0IiwoZnVuY3Rpb24gdChuKXtyZXR1cm4gZS5zZWxlY3Qobil9KSkoIm9uRmlsdGVyQ2hhbmdlIiwoZnVuY3Rpb24gdChuKXtyZXR1cm4gZS5maWx0ZXJDaGFuZ2Uobil9KSkseWYoMSwiYXN5bmMiKSx5ZigyLCJhc3luYyIpLHlmKDMsImFzeW5jIiksJGcoKSksMiZuJiZKZygibWV0cmljIixlLm1ldHJpYykoImZpbHRlclZhbHVlcyIsa2YoMSw0LGUuZmlsdGVyVmFsdWVzJCkpKCJoYXNFbWJlZGRpbmdzRGF0YSIsa2YoMiw2LGUuaGFzRW1iZWRkaW5nc0RhdGEkKSkoImVtYmVkZGluZ3NNZXRyaWMiLGtmKDMsOCxlLmVtYmVkZGluZ3NNZXRyaWMkKSl9LGRpcmVjdGl2ZXM6W2VwdF0scGlwZXM6W29PXSxlbmNhcHN1bGF0aW9uOjIsY2hhbmdlRGV0ZWN0aW9uOjB9KTtjbGFzcyBvcHR7Y29uc3RydWN0b3IoKXt0aGlzLk9wZXJhdG9yPVBkdH19ZnVuY3Rpb24gcnB0KHQsbil7MSZ0JiZ0cCgwLCJucG1pLW1ldHJpYy1hcml0aG1ldGljLWVsZW1lbnQiLDQpLDImdCYmSmcoIm1ldHJpYyIsZ3AoKS4kaW1wbGljaXQubWV0cmljKX1mdW5jdGlvbiBpcHQodCxuKXsxJnQmJnRwKDAsIm5wbWktbWV0cmljLWFyaXRobWV0aWMtb3BlcmF0b3IiLDUpLDImdCYmSmcoIm9wZXJhdG9yIixncCgpLiRpbXBsaWNpdC5vcGVyYXRvcil9ZnVuY3Rpb24gY3B0KHQsbil7aWYoMSZ0JiYoS2coMCwiZGl2IiksWWcoMSxycHQsMSwxLCJucG1pLW1ldHJpYy1hcml0aG1ldGljLWVsZW1lbnQiLDIpLFlnKDIsaXB0LDEsMSwibnBtaS1tZXRyaWMtYXJpdGhtZXRpYy1vcGVyYXRvciIsMyksJGcoKSksMiZ0KXtjb25zdCB0PW4uJGltcGxpY2l0LGU9Z3AoKTt3cygxKSxKZygibmdJZiIsdC5raW5kPT09ZS5Bcml0aG1ldGljS2luZC5NRVRSSUMpLHdzKDEpLEpnKCJuZ0lmIix0LmtpbmQ9PT1lLkFyaXRobWV0aWNLaW5kLk9QRVJBVE9SKX19b3B0Lsm1ZmFjPWZ1bmN0aW9uIHQobil7cmV0dXJuIG5ldyhufHxvcHQpfSxvcHQuybVjbXA9X28oe3R5cGU6b3B0LHNlbGVjdG9yczpbWyJucG1pLW1ldHJpYy1hcml0aG1ldGljLW9wZXJhdG9yIl1dLGlucHV0czp7b3BlcmF0b3I6Im9wZXJhdG9yIn0sZGVjbHM6Mix2YXJzOjEsdGVtcGxhdGU6ZnVuY3Rpb24gdChuLGUpezEmbiYmKEtnKDAsIm1hdC1jaGlwIiksSnAoMSksJGcoKSksMiZuJiYod3MoMSksS3AoIiAiLGUub3BlcmF0b3I9PT1lLk9wZXJhdG9yLkFORD8iJiI6IiIsIiAiKSl9LGRpcmVjdGl2ZXM6W1ZndF0sZW5jYXBzdWxhdGlvbjoyLGNoYW5nZURldGVjdGlvbjowfSk7Y2xhc3Mgc3B0e2NvbnN0cnVjdG9yKCl7dGhpcy5Bcml0aG1ldGljS2luZD14ZHR9fXNwdC7JtWZhYz1mdW5jdGlvbiB0KG4pe3JldHVybiBuZXcobnx8c3B0KX0sc3B0Lsm1Y21wPV9vKHt0eXBlOnNwdCxzZWxlY3RvcnM6W1sibWV0cmljLWFyaXRobWV0aWMtY29tcG9uZW50Il1dLGlucHV0czp7bWV0cmljQXJpdGhtZXRpYzoibWV0cmljQXJpdGhtZXRpYyJ9LGRlY2xzOjIsdmFyczoyLGNvbnN0czpbWzMsInNlbGVjdGFibGUiXSxbNCwibmdGb3IiLCJuZ0Zvck9mIl0sWzMsIm1ldHJpYyIsNCwibmdJZiJdLFszLCJvcGVyYXRvciIsNCwibmdJZiJdLFszLCJtZXRyaWMiXSxbMywib3BlcmF0b3IiXV0sdGVtcGxhdGU6ZnVuY3Rpb24gdChuLGUpezEmbiYmKEtnKDAsIm1hdC1jaGlwLWxpc3QiLDApLFlnKDEsY3B0LDMsMiwiZGl2IiwxKSwkZygpKSwyJm4mJihKZygic2VsZWN0YWJsZSIsITEpLHdzKDEpLEpnKCJuZ0Zvck9mIixlLm1ldHJpY0FyaXRobWV0aWMpKX0sZGlyZWN0aXZlczpbcWd0LGpNLFdNLGFwdCxvcHRdLHN0eWxlczpbIltfbmdob3N0LSVDT01QJV17YWxpZ24taXRlbXM6Y2VudGVyO2Rpc3BsYXk6ZmxleDtmbGV4LWRpcmVjdGlvbjpyb3c7ZmxleC13cmFwOndyYXB9Il0sY2hhbmdlRGV0ZWN0aW9uOjB9KTtjbGFzcyBscHR7Y29uc3RydWN0b3IodCl7dGhpcy5zdG9yZT10LHRoaXMubWV0cmljQXJpdGhtZXRpYyQ9dGhpcy5zdG9yZS5waXBlKGx2KEZkdCkpfX1scHQuybVmYWM9ZnVuY3Rpb24gdChuKXtyZXR1cm4gbmV3KG58fGxwdCkoWmcoY3YpKX0sbHB0Lsm1Y21wPV9vKHt0eXBlOmxwdCxzZWxlY3RvcnM6W1sibnBtaS1tZXRyaWMtYXJpdGhtZXRpYyJdXSxkZWNsczoyLHZhcnM6Myxjb25zdHM6W1szLCJtZXRyaWNBcml0aG1ldGljIl1dLHRlbXBsYXRlOmZ1bmN0aW9uIHQobixlKXsxJm4mJih0cCgwLCJtZXRyaWMtYXJpdGhtZXRpYy1jb21wb25lbnQiLDApLHlmKDEsImFzeW5jIikpLDImbiYmSmcoIm1ldHJpY0FyaXRobWV0aWMiLGtmKDEsMSxlLm1ldHJpY0FyaXRobWV0aWMkKSl9LGRpcmVjdGl2ZXM6W3NwdF0scGlwZXM6W29PXSxlbmNhcHN1bGF0aW9uOjIsY2hhbmdlRGV0ZWN0aW9uOjB9KTtjbGFzcyBtcHR7fWZ1bmN0aW9uIGRwdCh0LG4sZSl7aWYoZSlyZXR1cm4gdDtjb25zdCBhPU9iamVjdC5hc3NpZ24oe30sdCk7cmV0dXJuIG4uZm9yRWFjaCgodD0+ZGVsZXRlIGFbdF0pKSxhfW1wdC7JtWZhYz1mdW5jdGlvbiB0KG4pe3JldHVybiBuZXcobnx8bXB0KX0sbXB0Lsm1Y21wPV9vKHt0eXBlOm1wdCxzZWxlY3RvcnM6W1sibnBtaS1kYXRhLXNlbGVjdGlvbiJdXSxkZWNsczo0LHZhcnM6MCxjb25zdHM6W1sxLCJkYXRhLXNlbGVjdGlvbiJdLFsxLCJtZXRyaWNzLXNlbGVjdG9yIl1dLHRlbXBsYXRlOmZ1bmN0aW9uIHQobixlKXsxJm4mJihLZygwLCJkaXYiLDApLHRwKDEsIm5wbWktbWV0cmljLXNlYXJjaCIsMSksdHAoMiwibnBtaS1yZXN1bHRzLWRvd25sb2FkIiksJGcoKSx0cCgzLCJucG1pLW1ldHJpYy1hcml0aG1ldGljIikpfSxkaXJlY3RpdmVzOltBZ3QsRGd0LGxwdF0sc3R5bGVzOlsnLm1hdC1iYWRnZS1jb250ZW50W19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXdlaWdodDo2MDA7Zm9udC1zaXplOjEycHg7Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmfS5tYXQtYmFkZ2Utc21hbGxbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1iYWRnZS1jb250ZW50W19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6OXB4fS5tYXQtYmFkZ2UtbGFyZ2VbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1iYWRnZS1jb250ZW50W19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MjRweH0ubWF0LWgxW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1oZWFkbGluZVtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdHlwb2dyYXBoeVtfbmdjb250ZW50LSVDT01QJV0gICBoMVtfbmdjb250ZW50LSVDT01QJV17Zm9udDo0MDAgMjRweC8zMnB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtsZXR0ZXItc3BhY2luZzpub3JtYWw7bWFyZ2luOjAgMCAxNnB4fS5tYXQtaDJbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXRpdGxlW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10eXBvZ3JhcGh5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIGgyW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250OjUwMCAyMHB4LzMycHggUm9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2xldHRlci1zcGFjaW5nOm5vcm1hbDttYXJnaW46MCAwIDE2cHh9Lm1hdC1oM1tfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtc3ViaGVhZGluZy0yW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10eXBvZ3JhcGh5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIGgzW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250OjQwMCAxNnB4LzI4cHggUm9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2xldHRlci1zcGFjaW5nOm5vcm1hbDttYXJnaW46MCAwIDE2cHh9Lm1hdC1oNFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtc3ViaGVhZGluZy0xW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10eXBvZ3JhcGh5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIGg0W19uZ2NvbnRlbnQtJUNPTVAlXXtmb250OjQwMCAxNXB4LzI0cHggUm9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2xldHRlci1zcGFjaW5nOm5vcm1hbDttYXJnaW46MCAwIDE2cHh9Lm1hdC1oNVtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdHlwb2dyYXBoeVtfbmdjb250ZW50LSVDT01QJV0gICBoNVtfbmdjb250ZW50LSVDT01QJV17Zm9udDo0MDAgY2FsYygxNHB4ICogMC44MykvMjBweCBSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7bWFyZ2luOjAgMCAxMnB4fS5tYXQtaDZbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXR5cG9ncmFwaHlbX25nY29udGVudC0lQ09NUCVdICAgaDZbX25nY29udGVudC0lQ09NUCVde2ZvbnQ6NDAwIGNhbGMoMTRweCAqIDAuNjcpLzIwcHggUm9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO21hcmdpbjowIDAgMTJweH0ubWF0LWJvZHktc3Ryb25nW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1ib2R5LTJbX25nY29udGVudC0lQ09NUCVde2ZvbnQ6NTAwIDE0cHgvMjRweCBSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7bGV0dGVyLXNwYWNpbmc6bm9ybWFsfS5tYXQtYm9keVtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtYm9keS0xW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10eXBvZ3JhcGh5W19uZ2NvbnRlbnQtJUNPTVAlXXtmb250OjQwMCAxNHB4LzIwcHggUm9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2xldHRlci1zcGFjaW5nOm5vcm1hbH0ubWF0LWJvZHlbX25nY29udGVudC0lQ09NUCVdICAgcFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtYm9keS0xW19uZ2NvbnRlbnQtJUNPTVAlXSAgIHBbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXR5cG9ncmFwaHlbX25nY29udGVudC0lQ09NUCVdICAgcFtfbmdjb250ZW50LSVDT01QJV17bWFyZ2luOjAgMCAxMnB4fS5tYXQtc21hbGxbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWNhcHRpb25bX25nY29udGVudC0lQ09NUCVde2ZvbnQ6NDAwIDEycHgvMjBweCBSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7bGV0dGVyLXNwYWNpbmc6bm9ybWFsfS5tYXQtZGlzcGxheS00W19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10eXBvZ3JhcGh5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZGlzcGxheS00W19uZ2NvbnRlbnQtJUNPTVAlXXtmb250OjMwMCAxMTJweC8xMTJweCBSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7bGV0dGVyLXNwYWNpbmc6LTAuMDVlbTttYXJnaW46MCAwIDU2cHh9Lm1hdC1kaXNwbGF5LTNbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXR5cG9ncmFwaHlbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1kaXNwbGF5LTNbX25nY29udGVudC0lQ09NUCVde2ZvbnQ6NDAwIDU2cHgvNTZweCBSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7bGV0dGVyLXNwYWNpbmc6LTAuMDJlbTttYXJnaW46MCAwIDY0cHh9Lm1hdC1kaXNwbGF5LTJbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXR5cG9ncmFwaHlbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1kaXNwbGF5LTJbX25nY29udGVudC0lQ09NUCVde2ZvbnQ6NDAwIDQ1cHgvNDhweCBSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7bGV0dGVyLXNwYWNpbmc6LTAuMDA1ZW07bWFyZ2luOjAgMCA2NHB4fS5tYXQtZGlzcGxheS0xW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10eXBvZ3JhcGh5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZGlzcGxheS0xW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250OjQwMCAzNHB4LzQwcHggUm9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2xldHRlci1zcGFjaW5nOm5vcm1hbDttYXJnaW46MCAwIDY0cHh9Lm1hdC1ib3R0b20tc2hlZXQtY29udGFpbmVyW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250OjQwMCAxNHB4LzIwcHggUm9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2xldHRlci1zcGFjaW5nOm5vcm1hbH0ubWF0LWJ1dHRvbltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtcmFpc2VkLWJ1dHRvbltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtaWNvbi1idXR0b25bX25nY29udGVudC0lQ09NUCVdLCAubWF0LXN0cm9rZWQtYnV0dG9uW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1mbGF0LWJ1dHRvbltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtZmFiW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1taW5pLWZhYltfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2ZvbnQtc2l6ZToxNHB4O2ZvbnQtd2VpZ2h0OjUwMH0ubWF0LWJ1dHRvbi10b2dnbGVbX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZn0ubWF0LWNhcmRbX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZn0ubWF0LWNhcmQtdGl0bGVbX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToyNHB4O2ZvbnQtd2VpZ2h0OjUwMH0ubWF0LWNhcmQtaGVhZGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtY2FyZC10aXRsZVtfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjIwcHh9Lm1hdC1jYXJkLXN1YnRpdGxlW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1jYXJkLWNvbnRlbnRbX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToxNHB4fS5tYXQtY2hlY2tib3hbX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZn0ubWF0LWNoZWNrYm94LWxheW91dFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWNoZWNrYm94LWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXtsaW5lLWhlaWdodDoyNHB4fS5tYXQtY2hpcFtfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjE0cHg7Zm9udC13ZWlnaHQ6NTAwfS5tYXQtY2hpcFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWNoaXAtdHJhaWxpbmctaWNvbi5tYXQtaWNvbltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtY2hpcFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWNoaXAtcmVtb3ZlLm1hdC1pY29uW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MThweH0ubWF0LXRhYmxlW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWZ9Lm1hdC1oZWFkZXItY2VsbFtfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjEycHg7Zm9udC13ZWlnaHQ6NTAwfS5tYXQtY2VsbFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtZm9vdGVyLWNlbGxbX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToxNHB4fS5tYXQtY2FsZW5kYXJbX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZn0ubWF0LWNhbGVuZGFyLWJvZHlbX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToxM3B4fS5tYXQtY2FsZW5kYXItYm9keS1sYWJlbFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtY2FsZW5kYXItcGVyaW9kLWJ1dHRvbltfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjE0cHg7Zm9udC13ZWlnaHQ6NTAwfS5tYXQtY2FsZW5kYXItdGFibGUtaGVhZGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIHRoW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MTFweDtmb250LXdlaWdodDo0MDB9Lm1hdC1kaWFsb2ctdGl0bGVbX25nY29udGVudC0lQ09NUCVde2ZvbnQ6NTAwIDIwcHgvMzJweCBSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7bGV0dGVyLXNwYWNpbmc6bm9ybWFsfS5tYXQtZXhwYW5zaW9uLXBhbmVsLWhlYWRlcltfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2ZvbnQtc2l6ZToxNXB4O2ZvbnQtd2VpZ2h0OjQwMH0ubWF0LWV4cGFuc2lvbi1wYW5lbC1jb250ZW50W19uZ2NvbnRlbnQtJUNPTVAlXXtmb250OjQwMCAxNHB4LzIwcHggUm9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2xldHRlci1zcGFjaW5nOm5vcm1hbH0ubWF0LWZvcm0tZmllbGRbX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZTppbmhlcml0O2ZvbnQtd2VpZ2h0OjQwMDtsaW5lLWhlaWdodDoxLjEyNTtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7bGV0dGVyLXNwYWNpbmc6bm9ybWFsfS5tYXQtZm9ybS1maWVsZC13cmFwcGVyW19uZ2NvbnRlbnQtJUNPTVAlXXtwYWRkaW5nLWJvdHRvbToxLjM0Mzc1ZW19Lm1hdC1mb3JtLWZpZWxkLXByZWZpeFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWljb25bX25nY29udGVudC0lQ09NUCVdLCAubWF0LWZvcm0tZmllbGQtc3VmZml4W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaWNvbltfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjE1MCU7bGluZS1oZWlnaHQ6MS4xMjV9Lm1hdC1mb3JtLWZpZWxkLXByZWZpeFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWljb24tYnV0dG9uW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1mb3JtLWZpZWxkLXN1ZmZpeFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWljb24tYnV0dG9uW19uZ2NvbnRlbnQtJUNPTVAlXXtoZWlnaHQ6MS41ZW07d2lkdGg6MS41ZW19Lm1hdC1mb3JtLWZpZWxkLXByZWZpeFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWljb24tYnV0dG9uW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaWNvbltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtZm9ybS1maWVsZC1zdWZmaXhbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pY29uLWJ1dHRvbltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWljb25bX25nY29udGVudC0lQ09NUCVde2hlaWdodDoxLjEyNWVtO2xpbmUtaGVpZ2h0OjEuMTI1fS5tYXQtZm9ybS1maWVsZC1pbmZpeFtfbmdjb250ZW50LSVDT01QJV17cGFkZGluZzouNWVtIDA7Ym9yZGVyLXRvcDouODQzNzVlbSBzb2xpZCB0cmFuc3BhcmVudH0ubWF0LWZvcm0tZmllbGQtY2FuLWZsb2F0Lm1hdC1mb3JtLWZpZWxkLXNob3VsZC1mbG9hdFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWZvcm0tZmllbGQtY2FuLWZsb2F0W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaW5wdXQtc2VydmVyW19uZ2NvbnRlbnQtJUNPTVAlXTpmb2N1cyArIC5tYXQtZm9ybS1maWVsZC1sYWJlbC13cmFwcGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17dHJhbnNmb3JtOnRyYW5zbGF0ZVkoLTEuMzQzNzVlbSkgc2NhbGUoMC43NSk7d2lkdGg6MTMzLjMzMzMzMzMzMzMlfS5tYXQtZm9ybS1maWVsZC1jYW4tZmxvYXRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pbnB1dC1zZXJ2ZXJbbGFiZWxdW19uZ2NvbnRlbnQtJUNPTVAlXTpub3QoOmxhYmVsLXNob3duKSArIC5tYXQtZm9ybS1maWVsZC1sYWJlbC13cmFwcGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17dHJhbnNmb3JtOnRyYW5zbGF0ZVkoLTEuMzQzNzRlbSkgc2NhbGUoMC43NSk7d2lkdGg6MTMzLjMzMzM0MzMzMzMlfS5tYXQtZm9ybS1maWVsZC1sYWJlbC13cmFwcGVyW19uZ2NvbnRlbnQtJUNPTVAlXXt0b3A6LTAuODQzNzVlbTtwYWRkaW5nLXRvcDouODQzNzVlbX0ubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVde3RvcDoxLjM0Mzc1ZW19Lm1hdC1mb3JtLWZpZWxkLXVuZGVybGluZVtfbmdjb250ZW50LSVDT01QJV17Ym90dG9tOjEuMzQzNzVlbX0ubWF0LWZvcm0tZmllbGQtc3Vic2NyaXB0LXdyYXBwZXJbX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZTo3NSU7bWFyZ2luLXRvcDouNjY2NjY2NjY2N2VtO3RvcDpjYWxjKDEwMCUgLSAxLjc5MTY2NjY2NjdlbSl9Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtbGVnYWN5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC13cmFwcGVyW19uZ2NvbnRlbnQtJUNPTVAlXXtwYWRkaW5nLWJvdHRvbToxLjI1ZW19Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtbGVnYWN5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1pbmZpeFtfbmdjb250ZW50LSVDT01QJV17cGFkZGluZzouNDM3NWVtIDB9Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtbGVnYWN5Lm1hdC1mb3JtLWZpZWxkLWNhbi1mbG9hdC5tYXQtZm9ybS1maWVsZC1zaG91bGQtZmxvYXRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtbGVnYWN5Lm1hdC1mb3JtLWZpZWxkLWNhbi1mbG9hdFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWlucHV0LXNlcnZlcltfbmdjb250ZW50LSVDT01QJV06Zm9jdXMgKyAubWF0LWZvcm0tZmllbGQtbGFiZWwtd3JhcHBlcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVde3RyYW5zZm9ybTp0cmFuc2xhdGVZKC0xLjI4MTI1ZW0pIHNjYWxlKDAuNzUpIHBlcnNwZWN0aXZlKDEwMHB4KSB0cmFuc2xhdGVaKDAuMDAxcHgpOy1tcy10cmFuc2Zvcm06dHJhbnNsYXRlWSgtMS4yODEyNWVtKSBzY2FsZSgwLjc1KTt3aWR0aDoxMzMuMzMzMzMzMzMzMyV9Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtbGVnYWN5Lm1hdC1mb3JtLWZpZWxkLWNhbi1mbG9hdFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtYXV0b2ZpbGwtY29udHJvbFtfbmdjb250ZW50LSVDT01QJV06LXdlYmtpdC1hdXRvZmlsbCArIC5tYXQtZm9ybS1maWVsZC1sYWJlbC13cmFwcGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17dHJhbnNmb3JtOnRyYW5zbGF0ZVkoLTEuMjgxMjVlbSkgc2NhbGUoMC43NSkgcGVyc3BlY3RpdmUoMTAwcHgpIHRyYW5zbGF0ZVooMC4wMDEwMXB4KTstbXMtdHJhbnNmb3JtOnRyYW5zbGF0ZVkoLTEuMjgxMjRlbSkgc2NhbGUoMC43NSk7d2lkdGg6MTMzLjMzMzM0MzMzMzMlfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWxlZ2FjeS5tYXQtZm9ybS1maWVsZC1jYW4tZmxvYXRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pbnB1dC1zZXJ2ZXJbbGFiZWxdW19uZ2NvbnRlbnQtJUNPTVAlXTpub3QoOmxhYmVsLXNob3duKSArIC5tYXQtZm9ybS1maWVsZC1sYWJlbC13cmFwcGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17dHJhbnNmb3JtOnRyYW5zbGF0ZVkoLTEuMjgxMjVlbSkgc2NhbGUoMC43NSkgcGVyc3BlY3RpdmUoMTAwcHgpIHRyYW5zbGF0ZVooMC4wMDEwMnB4KTstbXMtdHJhbnNmb3JtOnRyYW5zbGF0ZVkoLTEuMjgxMjNlbSkgc2NhbGUoMC43NSk7d2lkdGg6MTMzLjMzMzM1MzMzMzMlfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWxlZ2FjeVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVde3RvcDoxLjI4MTI1ZW19Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtbGVnYWN5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC11bmRlcmxpbmVbX25nY29udGVudC0lQ09NUCVde2JvdHRvbToxLjI1ZW19Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtbGVnYWN5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1zdWJzY3JpcHQtd3JhcHBlcltfbmdjb250ZW50LSVDT01QJV17bWFyZ2luLXRvcDouNTQxNjY2NjY2N2VtO3RvcDpjYWxjKDEwMCUgLSAxLjY2NjY2NjY2NjdlbSl9QG1lZGlhIHByaW50ey5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWxlZ2FjeS5tYXQtZm9ybS1maWVsZC1jYW4tZmxvYXQubWF0LWZvcm0tZmllbGQtc2hvdWxkLWZsb2F0W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWxlZ2FjeS5tYXQtZm9ybS1maWVsZC1jYW4tZmxvYXRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pbnB1dC1zZXJ2ZXJbX25nY29udGVudC0lQ09NUCVdOmZvY3VzICsgLm1hdC1mb3JtLWZpZWxkLWxhYmVsLXdyYXBwZXJbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXt0cmFuc2Zvcm06dHJhbnNsYXRlWSgtMS4yODEyMmVtKSBzY2FsZSgwLjc1KX0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1sZWdhY3kubWF0LWZvcm0tZmllbGQtY2FuLWZsb2F0W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1hdXRvZmlsbC1jb250cm9sW19uZ2NvbnRlbnQtJUNPTVAlXTotd2Via2l0LWF1dG9maWxsICsgLm1hdC1mb3JtLWZpZWxkLWxhYmVsLXdyYXBwZXJbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXt0cmFuc2Zvcm06dHJhbnNsYXRlWSgtMS4yODEyMWVtKSBzY2FsZSgwLjc1KX0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1sZWdhY3kubWF0LWZvcm0tZmllbGQtY2FuLWZsb2F0W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaW5wdXQtc2VydmVyW2xhYmVsXVtfbmdjb250ZW50LSVDT01QJV06bm90KDpsYWJlbC1zaG93bikgKyAubWF0LWZvcm0tZmllbGQtbGFiZWwtd3JhcHBlcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVde3RyYW5zZm9ybTp0cmFuc2xhdGVZKC0xLjI4MTJlbSkgc2NhbGUoMC43NSl9fS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWZpbGxbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWluZml4W19uZ2NvbnRlbnQtJUNPTVAlXXtwYWRkaW5nOi4yNWVtIDAgLjc1ZW0gMH0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1maWxsW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17dG9wOjEuMDkzNzVlbTttYXJnaW4tdG9wOi0wLjVlbX0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1maWxsLm1hdC1mb3JtLWZpZWxkLWNhbi1mbG9hdC5tYXQtZm9ybS1maWVsZC1zaG91bGQtZmxvYXRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtZmlsbC5tYXQtZm9ybS1maWVsZC1jYW4tZmxvYXRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pbnB1dC1zZXJ2ZXJbX25nY29udGVudC0lQ09NUCVdOmZvY3VzICsgLm1hdC1mb3JtLWZpZWxkLWxhYmVsLXdyYXBwZXJbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXt0cmFuc2Zvcm06dHJhbnNsYXRlWSgtMC41OTM3NWVtKSBzY2FsZSgwLjc1KTt3aWR0aDoxMzMuMzMzMzMzMzMzMyV9Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtZmlsbC5tYXQtZm9ybS1maWVsZC1jYW4tZmxvYXRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pbnB1dC1zZXJ2ZXJbbGFiZWxdW19uZ2NvbnRlbnQtJUNPTVAlXTpub3QoOmxhYmVsLXNob3duKSArIC5tYXQtZm9ybS1maWVsZC1sYWJlbC13cmFwcGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17dHJhbnNmb3JtOnRyYW5zbGF0ZVkoLTAuNTkzNzRlbSkgc2NhbGUoMC43NSk7d2lkdGg6MTMzLjMzMzM0MzMzMzMlfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLW91dGxpbmVbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWluZml4W19uZ2NvbnRlbnQtJUNPTVAlXXtwYWRkaW5nOjFlbSAwIDFlbSAwfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLW91dGxpbmVbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXt0b3A6MS44NDM3NWVtO21hcmdpbi10b3A6LTAuMjVlbX0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1vdXRsaW5lLm1hdC1mb3JtLWZpZWxkLWNhbi1mbG9hdC5tYXQtZm9ybS1maWVsZC1zaG91bGQtZmxvYXRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2Utb3V0bGluZS5tYXQtZm9ybS1maWVsZC1jYW4tZmxvYXRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pbnB1dC1zZXJ2ZXJbX25nY29udGVudC0lQ09NUCVdOmZvY3VzICsgLm1hdC1mb3JtLWZpZWxkLWxhYmVsLXdyYXBwZXJbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXt0cmFuc2Zvcm06dHJhbnNsYXRlWSgtMS41OTM3NWVtKSBzY2FsZSgwLjc1KTt3aWR0aDoxMzMuMzMzMzMzMzMzMyV9Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2Utb3V0bGluZS5tYXQtZm9ybS1maWVsZC1jYW4tZmxvYXRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pbnB1dC1zZXJ2ZXJbbGFiZWxdW19uZ2NvbnRlbnQtJUNPTVAlXTpub3QoOmxhYmVsLXNob3duKSArIC5tYXQtZm9ybS1maWVsZC1sYWJlbC13cmFwcGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17dHJhbnNmb3JtOnRyYW5zbGF0ZVkoLTEuNTkzNzRlbSkgc2NhbGUoMC43NSk7d2lkdGg6MTMzLjMzMzM0MzMzMzMlfS5tYXQtZ3JpZC10aWxlLWhlYWRlcltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtZ3JpZC10aWxlLWZvb3Rlcltfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjE0cHh9Lm1hdC1ncmlkLXRpbGUtaGVhZGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGluZVtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtZ3JpZC10aWxlLWZvb3Rlcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpbmVbX25nY29udGVudC0lQ09NUCVde3doaXRlLXNwYWNlOm5vd3JhcDtvdmVyZmxvdzpoaWRkZW47dGV4dC1vdmVyZmxvdzplbGxpcHNpcztkaXNwbGF5OmJsb2NrO2JveC1zaXppbmc6Ym9yZGVyLWJveH0ubWF0LWdyaWQtdGlsZS1oZWFkZXJbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saW5lW19uZ2NvbnRlbnQtJUNPTVAlXTpudGgtY2hpbGQobisyKSwgLm1hdC1ncmlkLXRpbGUtZm9vdGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGluZVtfbmdjb250ZW50LSVDT01QJV06bnRoLWNoaWxkKG4rMil7Zm9udC1zaXplOjEycHh9aW5wdXQubWF0LWlucHV0LWVsZW1lbnRbX25nY29udGVudC0lQ09NUCVde21hcmdpbi10b3A6LTAuMDYyNWVtfS5tYXQtbWVudS1pdGVtW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7Zm9udC1zaXplOjE0cHg7Zm9udC13ZWlnaHQ6NDAwfS5tYXQtcGFnaW5hdG9yW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1wYWdpbmF0b3ItcGFnZS1zaXplW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtc2VsZWN0LXRyaWdnZXJbX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtmb250LXNpemU6MTJweH0ubWF0LXJhZGlvLWJ1dHRvbltfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmfS5tYXQtc2VsZWN0W19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWZ9Lm1hdC1zZWxlY3QtdHJpZ2dlcltfbmdjb250ZW50LSVDT01QJV17aGVpZ2h0OjEuMTI1ZW19Lm1hdC1zbGlkZS10b2dnbGUtY29udGVudFtfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmfS5tYXQtc2xpZGVyLXRodW1iLWxhYmVsLXRleHRbX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtmb250LXNpemU6MTJweDtmb250LXdlaWdodDo1MDB9Lm1hdC1zdGVwcGVyLXZlcnRpY2FsW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1zdGVwcGVyLWhvcml6b250YWxbX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZn0ubWF0LXN0ZXAtbGFiZWxbX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToxNHB4O2ZvbnQtd2VpZ2h0OjQwMH0ubWF0LXN0ZXAtc3ViLWxhYmVsLWVycm9yW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXdlaWdodDpub3JtYWx9Lm1hdC1zdGVwLWxhYmVsLWVycm9yW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MTRweH0ubWF0LXN0ZXAtbGFiZWwtc2VsZWN0ZWRbX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToxNHB4O2ZvbnQtd2VpZ2h0OjUwMH0ubWF0LXRhYi1ncm91cFtfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmfS5tYXQtdGFiLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10YWItbGlua1tfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2ZvbnQtc2l6ZToxNHB4O2ZvbnQtd2VpZ2h0OjUwMH0ubWF0LXRvb2xiYXJbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXRvb2xiYXJbX25nY29udGVudC0lQ09NUCVdICAgaDFbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXRvb2xiYXJbX25nY29udGVudC0lQ09NUCVdICAgaDJbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXRvb2xiYXJbX25nY29udGVudC0lQ09NUCVdICAgaDNbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXRvb2xiYXJbX25nY29udGVudC0lQ09NUCVdICAgaDRbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXRvb2xiYXJbX25nY29udGVudC0lQ09NUCVdICAgaDVbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXRvb2xiYXJbX25nY29udGVudC0lQ09NUCVdICAgaDZbX25nY29udGVudC0lQ09NUCVde2ZvbnQ6NTAwIDIwcHgvMzJweCBSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7bGV0dGVyLXNwYWNpbmc6bm9ybWFsO21hcmdpbjowfS5tYXQtdG9vbHRpcFtfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2ZvbnQtc2l6ZToxMHB4O3BhZGRpbmctdG9wOjZweDtwYWRkaW5nLWJvdHRvbTo2cHh9Lm1hdC10b29sdGlwLWhhbmRzZXRbX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToxNHB4O3BhZGRpbmctdG9wOjhweDtwYWRkaW5nLWJvdHRvbTo4cHh9Lm1hdC1saXN0LWl0ZW1bX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZn0ubWF0LWxpc3Qtb3B0aW9uW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWZ9Lm1hdC1saXN0LWJhc2VbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saXN0LWl0ZW1bX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToxNnB4fS5tYXQtbGlzdC1iYXNlW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGlzdC1pdGVtW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGluZVtfbmdjb250ZW50LSVDT01QJV17d2hpdGUtc3BhY2U6bm93cmFwO292ZXJmbG93OmhpZGRlbjt0ZXh0LW92ZXJmbG93OmVsbGlwc2lzO2Rpc3BsYXk6YmxvY2s7Ym94LXNpemluZzpib3JkZXItYm94fS5tYXQtbGlzdC1iYXNlW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGlzdC1pdGVtW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGluZVtfbmdjb250ZW50LSVDT01QJV06bnRoLWNoaWxkKG4rMil7Zm9udC1zaXplOjE0cHh9Lm1hdC1saXN0LWJhc2VbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saXN0LW9wdGlvbltfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjE2cHh9Lm1hdC1saXN0LWJhc2VbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saXN0LW9wdGlvbltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpbmVbX25nY29udGVudC0lQ09NUCVde3doaXRlLXNwYWNlOm5vd3JhcDtvdmVyZmxvdzpoaWRkZW47dGV4dC1vdmVyZmxvdzplbGxpcHNpcztkaXNwbGF5OmJsb2NrO2JveC1zaXppbmc6Ym9yZGVyLWJveH0ubWF0LWxpc3QtYmFzZVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpc3Qtb3B0aW9uW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGluZVtfbmdjb250ZW50LSVDT01QJV06bnRoLWNoaWxkKG4rMil7Zm9udC1zaXplOjE0cHh9Lm1hdC1saXN0LWJhc2VbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1zdWJoZWFkZXJbX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtmb250LXNpemU6MTRweDtmb250LXdlaWdodDo1MDB9Lm1hdC1saXN0LWJhc2VbZGVuc2VdW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGlzdC1pdGVtW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MTJweH0ubWF0LWxpc3QtYmFzZVtkZW5zZV1bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saXN0LWl0ZW1bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saW5lW19uZ2NvbnRlbnQtJUNPTVAlXXt3aGl0ZS1zcGFjZTpub3dyYXA7b3ZlcmZsb3c6aGlkZGVuO3RleHQtb3ZlcmZsb3c6ZWxsaXBzaXM7ZGlzcGxheTpibG9jaztib3gtc2l6aW5nOmJvcmRlci1ib3h9Lm1hdC1saXN0LWJhc2VbZGVuc2VdW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGlzdC1pdGVtW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGluZVtfbmdjb250ZW50LSVDT01QJV06bnRoLWNoaWxkKG4rMil7Zm9udC1zaXplOjEycHh9Lm1hdC1saXN0LWJhc2VbZGVuc2VdW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGlzdC1vcHRpb25bX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToxMnB4fS5tYXQtbGlzdC1iYXNlW2RlbnNlXVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpc3Qtb3B0aW9uW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGluZVtfbmdjb250ZW50LSVDT01QJV17d2hpdGUtc3BhY2U6bm93cmFwO292ZXJmbG93OmhpZGRlbjt0ZXh0LW92ZXJmbG93OmVsbGlwc2lzO2Rpc3BsYXk6YmxvY2s7Ym94LXNpemluZzpib3JkZXItYm94fS5tYXQtbGlzdC1iYXNlW2RlbnNlXVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpc3Qtb3B0aW9uW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGluZVtfbmdjb250ZW50LSVDT01QJV06bnRoLWNoaWxkKG4rMil7Zm9udC1zaXplOjEycHh9Lm1hdC1saXN0LWJhc2VbZGVuc2VdW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtc3ViaGVhZGVyW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7Zm9udC1zaXplOjEycHg7Zm9udC13ZWlnaHQ6NTAwfS5tYXQtb3B0aW9uW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7Zm9udC1zaXplOjE2cHh9Lm1hdC1vcHRncm91cC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17Zm9udDo1MDAgMTRweC8yNHB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtsZXR0ZXItc3BhY2luZzpub3JtYWx9Lm1hdC1zaW1wbGUtc25hY2tiYXJbX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtmb250LXNpemU6MTRweH0ubWF0LXNpbXBsZS1zbmFja2Jhci1hY3Rpb25bX25nY29udGVudC0lQ09NUCVde2xpbmUtaGVpZ2h0OjE7Zm9udC1mYW1pbHk6aW5oZXJpdDtmb250LXNpemU6aW5oZXJpdDtmb250LXdlaWdodDo1MDB9Lm1hdC10cmVlW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWZ9Lm1hdC10cmVlLW5vZGVbX25nY29udGVudC0lQ09NUCVdLCAubWF0LW5lc3RlZC10cmVlLW5vZGVbX25nY29udGVudC0lQ09NUCVde2ZvbnQtd2VpZ2h0OjQwMDtmb250LXNpemU6MTRweH0ubWF0LXJpcHBsZVtfbmdjb250ZW50LSVDT01QJV17b3ZlcmZsb3c6aGlkZGVuO3Bvc2l0aW9uOnJlbGF0aXZlfS5tYXQtcmlwcGxlW19uZ2NvbnRlbnQtJUNPTVAlXTpub3QoOmVtcHR5KXt0cmFuc2Zvcm06dHJhbnNsYXRlWigwKX0ubWF0LXJpcHBsZS5tYXQtcmlwcGxlLXVuYm91bmRlZFtfbmdjb250ZW50LSVDT01QJV17b3ZlcmZsb3c6dmlzaWJsZX0ubWF0LXJpcHBsZS1lbGVtZW50W19uZ2NvbnRlbnQtJUNPTVAlXXtwb3NpdGlvbjphYnNvbHV0ZTtib3JkZXItcmFkaXVzOjUwJTtwb2ludGVyLWV2ZW50czpub25lO3RyYW5zaXRpb246b3BhY2l0eSx0cmFuc2Zvcm0gMG1zIGN1YmljLWJlemllcigwLCAwLCAwLjIsIDEpO3RyYW5zZm9ybTpzY2FsZSgwKX0uY2RrLWhpZ2gtY29udHJhc3QtYWN0aXZlW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtcmlwcGxlLWVsZW1lbnRbX25nY29udGVudC0lQ09NUCVde2Rpc3BsYXk6bm9uZX0uY2RrLXZpc3VhbGx5LWhpZGRlbltfbmdjb250ZW50LSVDT01QJV17Ym9yZGVyOjA7Y2xpcDpyZWN0KDAgMCAwIDApO2hlaWdodDoxcHg7bWFyZ2luOi0xcHg7b3ZlcmZsb3c6aGlkZGVuO3BhZGRpbmc6MDtwb3NpdGlvbjphYnNvbHV0ZTt3aWR0aDoxcHg7b3V0bGluZTowOy13ZWJraXQtYXBwZWFyYW5jZTpub25lOy1tb3otYXBwZWFyYW5jZTpub25lfS5jZGstb3ZlcmxheS1jb250YWluZXJbX25nY29udGVudC0lQ09NUCVdLCAuY2RrLWdsb2JhbC1vdmVybGF5LXdyYXBwZXJbX25nY29udGVudC0lQ09NUCVde3BvaW50ZXItZXZlbnRzOm5vbmU7dG9wOjA7bGVmdDowO2hlaWdodDoxMDAlO3dpZHRoOjEwMCV9LmNkay1vdmVybGF5LWNvbnRhaW5lcltfbmdjb250ZW50LSVDT01QJV17cG9zaXRpb246Zml4ZWQ7ei1pbmRleDoxMDAwfS5jZGstb3ZlcmxheS1jb250YWluZXJbX25nY29udGVudC0lQ09NUCVdOmVtcHR5e2Rpc3BsYXk6bm9uZX0uY2RrLWdsb2JhbC1vdmVybGF5LXdyYXBwZXJbX25nY29udGVudC0lQ09NUCVde2Rpc3BsYXk6ZmxleDtwb3NpdGlvbjphYnNvbHV0ZTt6LWluZGV4OjEwMDB9LmNkay1vdmVybGF5LXBhbmVbX25nY29udGVudC0lQ09NUCVde3Bvc2l0aW9uOmFic29sdXRlO3BvaW50ZXItZXZlbnRzOmF1dG87Ym94LXNpemluZzpib3JkZXItYm94O3otaW5kZXg6MTAwMDtkaXNwbGF5OmZsZXg7bWF4LXdpZHRoOjEwMCU7bWF4LWhlaWdodDoxMDAlfS5jZGstb3ZlcmxheS1iYWNrZHJvcFtfbmdjb250ZW50LSVDT01QJV17cG9zaXRpb246YWJzb2x1dGU7dG9wOjA7Ym90dG9tOjA7bGVmdDowO3JpZ2h0OjA7ei1pbmRleDoxMDAwO3BvaW50ZXItZXZlbnRzOmF1dG87LXdlYmtpdC10YXAtaGlnaGxpZ2h0LWNvbG9yOnRyYW5zcGFyZW50O3RyYW5zaXRpb246b3BhY2l0eSA0MDBtcyBjdWJpYy1iZXppZXIoMC4yNSwgMC44LCAwLjI1LCAxKTtvcGFjaXR5OjB9LmNkay1vdmVybGF5LWJhY2tkcm9wLmNkay1vdmVybGF5LWJhY2tkcm9wLXNob3dpbmdbX25nY29udGVudC0lQ09NUCVde29wYWNpdHk6MX1AbWVkaWEgc2NyZWVuIGFuZCAoLW1zLWhpZ2gtY29udHJhc3Q6IGFjdGl2ZSl7LmNkay1vdmVybGF5LWJhY2tkcm9wLmNkay1vdmVybGF5LWJhY2tkcm9wLXNob3dpbmdbX25nY29udGVudC0lQ09NUCVde29wYWNpdHk6LjZ9fS5jZGstb3ZlcmxheS1kYXJrLWJhY2tkcm9wW19uZ2NvbnRlbnQtJUNPTVAlXXtiYWNrZ3JvdW5kOnJnYmEoMCwwLDAsLjMyKX0uY2RrLW92ZXJsYXktdHJhbnNwYXJlbnQtYmFja2Ryb3BbX25nY29udGVudC0lQ09NUCVdLCAuY2RrLW92ZXJsYXktdHJhbnNwYXJlbnQtYmFja2Ryb3AuY2RrLW92ZXJsYXktYmFja2Ryb3Atc2hvd2luZ1tfbmdjb250ZW50LSVDT01QJV17b3BhY2l0eTowfS5jZGstb3ZlcmxheS1jb25uZWN0ZWQtcG9zaXRpb24tYm91bmRpbmctYm94W19uZ2NvbnRlbnQtJUNPTVAlXXtwb3NpdGlvbjphYnNvbHV0ZTt6LWluZGV4OjEwMDA7ZGlzcGxheTpmbGV4O2ZsZXgtZGlyZWN0aW9uOmNvbHVtbjttaW4td2lkdGg6MXB4O21pbi1oZWlnaHQ6MXB4fS5jZGstZ2xvYmFsLXNjcm9sbGJsb2NrW19uZ2NvbnRlbnQtJUNPTVAlXXtwb3NpdGlvbjpmaXhlZDt3aWR0aDoxMDAlO292ZXJmbG93LXk6c2Nyb2xsfUBrZXlmcmFtZXMgY2RrLXRleHQtZmllbGQtYXV0b2ZpbGwtc3RhcnR7fUBrZXlmcmFtZXMgY2RrLXRleHQtZmllbGQtYXV0b2ZpbGwtZW5ke30uY2RrLXRleHQtZmllbGQtYXV0b2ZpbGwtbW9uaXRvcmVkW19uZ2NvbnRlbnQtJUNPTVAlXTotd2Via2l0LWF1dG9maWxse2FuaW1hdGlvbjpjZGstdGV4dC1maWVsZC1hdXRvZmlsbC1zdGFydCAwcyAxbXN9LmNkay10ZXh0LWZpZWxkLWF1dG9maWxsLW1vbml0b3JlZFtfbmdjb250ZW50LSVDT01QJV06bm90KDotd2Via2l0LWF1dG9maWxsKXthbmltYXRpb246Y2RrLXRleHQtZmllbGQtYXV0b2ZpbGwtZW5kIDBzIDFtc310ZXh0YXJlYS5jZGstdGV4dGFyZWEtYXV0b3NpemVbX25nY29udGVudC0lQ09NUCVde3Jlc2l6ZTpub25lfXRleHRhcmVhLmNkay10ZXh0YXJlYS1hdXRvc2l6ZS1tZWFzdXJpbmdbX25nY29udGVudC0lQ09NUCVde3BhZGRpbmc6MnB4IDAgIWltcG9ydGFudDtib3gtc2l6aW5nOmNvbnRlbnQtYm94ICFpbXBvcnRhbnQ7aGVpZ2h0OmF1dG8gIWltcG9ydGFudDtvdmVyZmxvdzpoaWRkZW4gIWltcG9ydGFudH10ZXh0YXJlYS5jZGstdGV4dGFyZWEtYXV0b3NpemUtbWVhc3VyaW5nLWZpcmVmb3hbX25nY29udGVudC0lQ09NUCVde3BhZGRpbmc6MnB4IDAgIWltcG9ydGFudDtib3gtc2l6aW5nOmNvbnRlbnQtYm94ICFpbXBvcnRhbnQ7aGVpZ2h0OjAgIWltcG9ydGFudH0ubWF0LWZvY3VzLWluZGljYXRvcltfbmdjb250ZW50LSVDT01QJV17cG9zaXRpb246cmVsYXRpdmV9Lm1hdC1tZGMtZm9jdXMtaW5kaWNhdG9yW19uZ2NvbnRlbnQtJUNPTVAlXXtwb3NpdGlvbjpyZWxhdGl2ZX0ubWF0LXJpcHBsZS1lbGVtZW50W19uZ2NvbnRlbnQtJUNPTVAlXXtiYWNrZ3JvdW5kLWNvbG9yOnJnYmEoMCwwLDAsLjEpfS5tYXQtb3B0aW9uW19uZ2NvbnRlbnQtJUNPTVAlXXtjb2xvcjojMjEyMTIxfS5tYXQtb3B0aW9uW19uZ2NvbnRlbnQtJUNPTVAlXTpob3Zlcjpub3QoLm1hdC1vcHRpb24tZGlzYWJsZWQpLCAubWF0LW9wdGlvbltfbmdjb250ZW50LSVDT01QJV06Zm9jdXM6bm90KC5tYXQtb3B0aW9uLWRpc2FibGVkKXtiYWNrZ3JvdW5kOnJnYmEoMCwwLDAsLjA0KX0ubWF0LW9wdGlvbi5tYXQtc2VsZWN0ZWRbX25nY29udGVudC0lQ09NUCVdOm5vdCgubWF0LW9wdGlvbi1tdWx0aXBsZSk6bm90KC5tYXQtb3B0aW9uLWRpc2FibGVkKXtiYWNrZ3JvdW5kOnJnYmEoMCwwLDAsLjA0KX0ubWF0LW9wdGlvbi5tYXQtYWN0aXZlW19uZ2NvbnRlbnQtJUNPTVAlXXtiYWNrZ3JvdW5kOnJnYmEoMCwwLDAsLjA0KTtjb2xvcjojMjEyMTIxfS5tYXQtb3B0aW9uLm1hdC1vcHRpb24tZGlzYWJsZWRbX25nY29udGVudC0lQ09NUCVde2NvbG9yOnJnYmEoMCwwLDAsLjM4KX0ubWF0LXByaW1hcnlbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1vcHRpb24ubWF0LXNlbGVjdGVkW19uZ2NvbnRlbnQtJUNPTVAlXTpub3QoLm1hdC1vcHRpb24tZGlzYWJsZWQpe2NvbG9yOiNmNTdjMDB9Lm1hdC1hY2NlbnRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1vcHRpb24ubWF0LXNlbGVjdGVkW19uZ2NvbnRlbnQtJUNPTVAlXTpub3QoLm1hdC1vcHRpb24tZGlzYWJsZWQpe2NvbG9yOiNmZjk4MDB9Lm1hdC13YXJuW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtb3B0aW9uLm1hdC1zZWxlY3RlZFtfbmdjb250ZW50LSVDT01QJV06bm90KC5tYXQtb3B0aW9uLWRpc2FibGVkKXtjb2xvcjojZjQ0MzM2fS5tYXQtb3B0Z3JvdXAtbGFiZWxbX25nY29udGVudC0lQ09NUCVde2NvbG9yOiM2MTYxNjF9Lm1hdC1vcHRncm91cC1kaXNhYmxlZFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LW9wdGdyb3VwLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXtjb2xvcjpyZ2JhKDAsMCwwLC4zOCl9Lm1hdC1wc2V1ZG8tY2hlY2tib3hbX25nY29udGVudC0lQ09NUCVde2NvbG9yOiM2MTYxNjF9Lm1hdC1wc2V1ZG8tY2hlY2tib3hbX25nY29udGVudC0lQ09NUCVdOjphZnRlcntjb2xvcjojZmFmYWZhfS5tYXQtcHNldWRvLWNoZWNrYm94LWRpc2FibGVkW19uZ2NvbnRlbnQtJUNPTVAlXXtjb2xvcjojYjBiMGIwfS5tYXQtcHJpbWFyeVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXBzZXVkby1jaGVja2JveC1jaGVja2VkW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1wcmltYXJ5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtcHNldWRvLWNoZWNrYm94LWluZGV0ZXJtaW5hdGVbX25nY29udGVudC0lQ09NUCVde2JhY2tncm91bmQ6I2Y1N2MwMH0ubWF0LXBzZXVkby1jaGVja2JveC1jaGVja2VkW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1wc2V1ZG8tY2hlY2tib3gtaW5kZXRlcm1pbmF0ZVtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtYWNjZW50W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtcHNldWRvLWNoZWNrYm94LWNoZWNrZWRbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWFjY2VudFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXBzZXVkby1jaGVja2JveC1pbmRldGVybWluYXRlW19uZ2NvbnRlbnQtJUNPTVAlXXtiYWNrZ3JvdW5kOiNmZjk4MDB9Lm1hdC13YXJuW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtcHNldWRvLWNoZWNrYm94LWNoZWNrZWRbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXdhcm5bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1wc2V1ZG8tY2hlY2tib3gtaW5kZXRlcm1pbmF0ZVtfbmdjb250ZW50LSVDT01QJV17YmFja2dyb3VuZDojZjQ0MzM2fS5tYXQtcHNldWRvLWNoZWNrYm94LWNoZWNrZWQubWF0LXBzZXVkby1jaGVja2JveC1kaXNhYmxlZFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtcHNldWRvLWNoZWNrYm94LWluZGV0ZXJtaW5hdGUubWF0LXBzZXVkby1jaGVja2JveC1kaXNhYmxlZFtfbmdjb250ZW50LSVDT01QJV17YmFja2dyb3VuZDojYjBiMGIwfS5tYXQtYXBwLWJhY2tncm91bmRbX25nY29udGVudC0lQ09NUCVde2JhY2tncm91bmQtY29sb3I6I2ZhZmFmYTtjb2xvcjojMjEyMTIxfS5tYXQtZWxldmF0aW9uLXowW19uZ2NvbnRlbnQtJUNPTVAlXXtib3gtc2hhZG93OjBweCAwcHggMHB4IDBweCByZ2JhKDAsIDAsIDAsIDAuMiksMHB4IDBweCAwcHggMHB4IHJnYmEoMCwgMCwgMCwgMC4xNCksMHB4IDBweCAwcHggMHB4IHJnYmEoMCwgMCwgMCwgMC4xMil9Lm1hdC1lbGV2YXRpb24tejFbX25nY29udGVudC0lQ09NUCVde2JveC1zaGFkb3c6MHB4IDJweCAxcHggLTFweCByZ2JhKDAsIDAsIDAsIDAuMiksMHB4IDFweCAxcHggMHB4IHJnYmEoMCwgMCwgMCwgMC4xNCksMHB4IDFweCAzcHggMHB4IHJnYmEoMCwgMCwgMCwgMC4xMil9Lm1hdC1lbGV2YXRpb24tejJbX25nY29udGVudC0lQ09NUCVde2JveC1zaGFkb3c6MHB4IDNweCAxcHggLTJweCByZ2JhKDAsIDAsIDAsIDAuMiksMHB4IDJweCAycHggMHB4IHJnYmEoMCwgMCwgMCwgMC4xNCksMHB4IDFweCA1cHggMHB4IHJnYmEoMCwgMCwgMCwgMC4xMil9Lm1hdC1lbGV2YXRpb24tejNbX25nY29udGVudC0lQ09NUCVde2JveC1zaGFkb3c6MHB4IDNweCAzcHggLTJweCByZ2JhKDAsIDAsIDAsIDAuMiksMHB4IDNweCA0cHggMHB4IHJnYmEoMCwgMCwgMCwgMC4xNCksMHB4IDFweCA4cHggMHB4IHJnYmEoMCwgMCwgMCwgMC4xMil9Lm1hdC1lbGV2YXRpb24tejRbX25nY29udGVudC0lQ09NUCVde2JveC1zaGFkb3c6MHB4IDJweCA0cHggLTFweCByZ2JhKDAsIDAsIDAsIDAuMiksMHB4IDRweCA1cHggMHB4IHJnYmEoMCwgMCwgMCwgMC4xNCksMHB4IDFweCAxMHB4IDBweCByZ2JhKDAsIDAsIDAsIDAuMTIpfS5tYXQtZWxldmF0aW9uLXo1W19uZ2NvbnRlbnQtJUNPTVAlXXtib3gtc2hhZG93OjBweCAzcHggNXB4IC0xcHggcmdiYSgwLCAwLCAwLCAwLjIpLDBweCA1cHggOHB4IDBweCByZ2JhKDAsIDAsIDAsIDAuMTQpLDBweCAxcHggMTRweCAwcHggcmdiYSgwLCAwLCAwLCAwLjEyKX0ubWF0LWVsZXZhdGlvbi16Nltfbmdjb250ZW50LSVDT01QJV17Ym94LXNoYWRvdzowcHggM3B4IDVweCAtMXB4IHJnYmEoMCwgMCwgMCwgMC4yKSwwcHggNnB4IDEwcHggMHB4IHJnYmEoMCwgMCwgMCwgMC4xNCksMHB4IDFweCAxOHB4IDBweCByZ2JhKDAsIDAsIDAsIDAuMTIpfS5tYXQtZWxldmF0aW9uLXo3W19uZ2NvbnRlbnQtJUNPTVAlXXtib3gtc2hhZG93OjBweCA0cHggNXB4IC0ycHggcmdiYSgwLCAwLCAwLCAwLjIpLDBweCA3cHggMTBweCAxcHggcmdiYSgwLCAwLCAwLCAwLjE0KSwwcHggMnB4IDE2cHggMXB4IHJnYmEoMCwgMCwgMCwgMC4xMil9Lm1hdC1lbGV2YXRpb24tejhbX25nY29udGVudC0lQ09NUCVde2JveC1zaGFkb3c6MHB4IDVweCA1cHggLTNweCByZ2JhKDAsIDAsIDAsIDAuMiksMHB4IDhweCAxMHB4IDFweCByZ2JhKDAsIDAsIDAsIDAuMTQpLDBweCAzcHggMTRweCAycHggcmdiYSgwLCAwLCAwLCAwLjEyKX0ubWF0LWVsZXZhdGlvbi16OVtfbmdjb250ZW50LSVDT01QJV17Ym94LXNoYWRvdzowcHggNXB4IDZweCAtM3B4IHJnYmEoMCwgMCwgMCwgMC4yKSwwcHggOXB4IDEycHggMXB4IHJnYmEoMCwgMCwgMCwgMC4xNCksMHB4IDNweCAxNnB4IDJweCByZ2JhKDAsIDAsIDAsIDAuMTIpfS5tYXQtZWxldmF0aW9uLXoxMFtfbmdjb250ZW50LSVDT01QJV17Ym94LXNoYWRvdzowcHggNnB4IDZweCAtM3B4IHJnYmEoMCwgMCwgMCwgMC4yKSwwcHggMTBweCAxNHB4IDFweCByZ2JhKDAsIDAsIDAsIDAuMTQpLDBweCA0cHggMThweCAzcHggcmdiYSgwLCAwLCAwLCAwLjEyKX0ubWF0LWVsZXZhdGlvbi16MTFbX25nY29udGVudC0lQ09NUCVde2JveC1zaGFkb3c6MHB4IDZweCA3cHggLTRweCByZ2JhKDAsIDAsIDAsIDAuMiksMHB4IDExcHggMTVweCAxcHggcmdiYSgwLCAwLCAwLCAwLjE0KSwwcHggNHB4IDIwcHggM3B4IHJnYmEoMCwgMCwgMCwgMC4xMil9Lm1hdC1lbGV2YXRpb24tejEyW19uZ2NvbnRlbnQtJUNPTVAlXXtib3gtc2hhZG93OjBweCA3cHggOHB4IC00cHggcmdiYSgwLCAwLCAwLCAwLjIpLDBweCAxMnB4IDE3cHggMnB4IHJnYmEoMCwgMCwgMCwgMC4xNCksMHB4IDVweCAyMnB4IDRweCByZ2JhKDAsIDAsIDAsIDAuMTIpfS5tYXQtZWxldmF0aW9uLXoxM1tfbmdjb250ZW50LSVDT01QJV17Ym94LXNoYWRvdzowcHggN3B4IDhweCAtNHB4IHJnYmEoMCwgMCwgMCwgMC4yKSwwcHggMTNweCAxOXB4IDJweCByZ2JhKDAsIDAsIDAsIDAuMTQpLDBweCA1cHggMjRweCA0cHggcmdiYSgwLCAwLCAwLCAwLjEyKX0ubWF0LWVsZXZhdGlvbi16MTRbX25nY29udGVudC0lQ09NUCVde2JveC1zaGFkb3c6MHB4IDdweCA5cHggLTRweCByZ2JhKDAsIDAsIDAsIDAuMiksMHB4IDE0cHggMjFweCAycHggcmdiYSgwLCAwLCAwLCAwLjE0KSwwcHggNXB4IDI2cHggNHB4IHJnYmEoMCwgMCwgMCwgMC4xMil9Lm1hdC1lbGV2YXRpb24tejE1W19uZ2NvbnRlbnQtJUNPTVAlXXtib3gtc2hhZG93OjBweCA4cHggOXB4IC01cHggcmdiYSgwLCAwLCAwLCAwLjIpLDBweCAxNXB4IDIycHggMnB4IHJnYmEoMCwgMCwgMCwgMC4xNCksMHB4IDZweCAyOHB4IDVweCByZ2JhKDAsIDAsIDAsIDAuMTIpfS5tYXQtZWxldmF0aW9uLXoxNltfbmdjb250ZW50LSVDT01QJV17Ym94LXNoYWRvdzowcHggOHB4IDEwcHggLTVweCByZ2JhKDAsIDAsIDAsIDAuMiksMHB4IDE2cHggMjRweCAycHggcmdiYSgwLCAwLCAwLCAwLjE0KSwwcHggNnB4IDMwcHggNXB4IHJnYmEoMCwgMCwgMCwgMC4xMil9Lm1hdC1lbGV2YXRpb24tejE3W19uZ2NvbnRlbnQtJUNPTVAlXXtib3gtc2hhZG93OjBweCA4cHggMTFweCAtNXB4IHJnYmEoMCwgMCwgMCwgMC4yKSwwcHggMTdweCAyNnB4IDJweCByZ2JhKDAsIDAsIDAsIDAuMTQpLDBweCA2cHggMzJweCA1cHggcmdiYSgwLCAwLCAwLCAwLjEyKX0ubWF0LWVsZXZhdGlvbi16MThbX25nY29udGVudC0lQ09NUCVde2JveC1zaGFkb3c6MHB4IDlweCAxMXB4IC01cHggcmdiYSgwLCAwLCAwLCAwLjIpLDBweCAxOHB4IDI4cHggMnB4IHJnYmEoMCwgMCwgMCwgMC4xNCksMHB4IDdweCAzNHB4IDZweCByZ2JhKDAsIDAsIDAsIDAuMTIpfS5tYXQtZWxldmF0aW9uLXoxOVtfbmdjb250ZW50LSVDT01QJV17Ym94LXNoYWRvdzowcHggOXB4IDEycHggLTZweCByZ2JhKDAsIDAsIDAsIDAuMiksMHB4IDE5cHggMjlweCAycHggcmdiYSgwLCAwLCAwLCAwLjE0KSwwcHggN3B4IDM2cHggNnB4IHJnYmEoMCwgMCwgMCwgMC4xMil9Lm1hdC1lbGV2YXRpb24tejIwW19uZ2NvbnRlbnQtJUNPTVAlXXtib3gtc2hhZG93OjBweCAxMHB4IDEzcHggLTZweCByZ2JhKDAsIDAsIDAsIDAuMiksMHB4IDIwcHggMzFweCAzcHggcmdiYSgwLCAwLCAwLCAwLjE0KSwwcHggOHB4IDM4cHggN3B4IHJnYmEoMCwgMCwgMCwgMC4xMil9Lm1hdC1lbGV2YXRpb24tejIxW19uZ2NvbnRlbnQtJUNPTVAlXXtib3gtc2hhZG93OjBweCAxMHB4IDEzcHggLTZweCByZ2JhKDAsIDAsIDAsIDAuMiksMHB4IDIxcHggMzNweCAzcHggcmdiYSgwLCAwLCAwLCAwLjE0KSwwcHggOHB4IDQwcHggN3B4IHJnYmEoMCwgMCwgMCwgMC4xMil9Lm1hdC1lbGV2YXRpb24tejIyW19uZ2NvbnRlbnQtJUNPTVAlXXtib3gtc2hhZG93OjBweCAxMHB4IDE0cHggLTZweCByZ2JhKDAsIDAsIDAsIDAuMiksMHB4IDIycHggMzVweCAzcHggcmdiYSgwLCAwLCAwLCAwLjE0KSwwcHggOHB4IDQycHggN3B4IHJnYmEoMCwgMCwgMCwgMC4xMil9Lm1hdC1lbGV2YXRpb24tejIzW19uZ2NvbnRlbnQtJUNPTVAlXXtib3gtc2hhZG93OjBweCAxMXB4IDE0cHggLTdweCByZ2JhKDAsIDAsIDAsIDAuMiksMHB4IDIzcHggMzZweCAzcHggcmdiYSgwLCAwLCAwLCAwLjE0KSwwcHggOXB4IDQ0cHggOHB4IHJnYmEoMCwgMCwgMCwgMC4xMil9Lm1hdC1lbGV2YXRpb24tejI0W19uZ2NvbnRlbnQtJUNPTVAlXXtib3gtc2hhZG93OjBweCAxMXB4IDE1cHggLTdweCByZ2JhKDAsIDAsIDAsIDAuMiksMHB4IDI0cHggMzhweCAzcHggcmdiYSgwLCAwLCAwLCAwLjE0KSwwcHggOXB4IDQ2cHggOHB4IHJnYmEoMCwgMCwgMCwgMC4xMil9Lm1hdC10aGVtZS1sb2FkZWQtbWFya2VyW19uZ2NvbnRlbnQtJUNPTVAlXXtkaXNwbGF5Om5vbmV9Lm1hdC1hdXRvY29tcGxldGUtcGFuZWxbX25nY29udGVudC0lQ09NUCVde2JhY2tncm91bmQ6I2ZmZjtjb2xvcjojMjEyMTIxfS5tYXQtYXV0b2NvbXBsZXRlLXBhbmVsW19uZ2NvbnRlbnQtJUNPTVAlXTpub3QoW2NsYXNzKj1tYXQtZWxldmF0aW9uLXpdKXtib3gtc2hhZG93OjBweCAycHggNHB4IC0xcHggcmdiYSgwLCAwLCAwLCAwLjIpLDBweCA0cHggNXB4IDBweCByZ2JhKDAsIDAsIDAsIDAuMTQpLDBweCAxcHggMTBweCAwcHggcmdiYSgwLCAwLCAwLCAwLjEyKX0ubWF0LWF1dG9jb21wbGV0ZS1wYW5lbFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LW9wdGlvbi5tYXQtc2VsZWN0ZWRbX25nY29udGVudC0lQ09NUCVdOm5vdCgubWF0LWFjdGl2ZSk6bm90KDpob3Zlcil7YmFja2dyb3VuZDojZmZmfS5tYXQtYXV0b2NvbXBsZXRlLXBhbmVsW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtb3B0aW9uLm1hdC1zZWxlY3RlZFtfbmdjb250ZW50LSVDT01QJV06bm90KC5tYXQtYWN0aXZlKTpub3QoOmhvdmVyKTpub3QoLm1hdC1vcHRpb24tZGlzYWJsZWQpe2NvbG9yOiMyMTIxMjF9Lm1hdC1iYWRnZS1jb250ZW50W19uZ2NvbnRlbnQtJUNPTVAlXXtjb2xvcjojZmZmO2JhY2tncm91bmQ6I2Y1N2MwMH0uY2RrLWhpZ2gtY29udHJhc3QtYWN0aXZlW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtYmFkZ2UtY29udGVudFtfbmdjb250ZW50LSVDT01QJV17b3V0bGluZTpzb2xpZCAxcHg7Ym9yZGVyLXJhZGl1czowfS5tYXQtYmFkZ2UtYWNjZW50W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtYmFkZ2UtY29udGVudFtfbmdjb250ZW50LSVDT01QJV17YmFja2dyb3VuZDojZmY5ODAwO2NvbG9yOiNmZmZ9Lm1hdC1iYWRnZS13YXJuW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtYmFkZ2UtY29udGVudFtfbmdjb250ZW50LSVDT01QJV17Y29sb3I6I2ZmZjtiYWNrZ3JvdW5kOiNmNDQzMzZ9Lm1hdC1iYWRnZVtfbmdjb250ZW50LSVDT01QJV17cG9zaXRpb246cmVsYXRpdmV9Lm1hdC1iYWRnZS1oaWRkZW5bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1iYWRnZS1jb250ZW50W19uZ2NvbnRlbnQtJUNPTVAlXXtkaXNwbGF5Om5vbmV9Lm1hdC1iYWRnZS1kaXNhYmxlZFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWJhZGdlLWNvbnRlbnRbX25nY29udGVudC0lQ09NUCVde2JhY2tncm91bmQ6I2I5YjliOTtjb2xvcjojNzU3NTc1fS5tYXQtYmFkZ2UtY29udGVudFtfbmdjb250ZW50LSVDT01QJV17cG9zaXRpb246YWJzb2x1dGU7dGV4dC1hbGlnbjpjZW50ZXI7ZGlzcGxheTppbmxpbmUtYmxvY2s7Ym9yZGVyLXJhZGl1czo1MCU7dHJhbnNpdGlvbjp0cmFuc2Zvcm0gMjAwbXMgZWFzZS1pbi1vdXQ7dHJhbnNmb3JtOnNjYWxlKDAuNik7b3ZlcmZsb3c6aGlkZGVuO3doaXRlLXNwYWNlOm5vd3JhcDt0ZXh0LW92ZXJmbG93OmVsbGlwc2lzO3BvaW50ZXItZXZlbnRzOm5vbmV9Lm5nLWFuaW1hdGUtZGlzYWJsZWRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1iYWRnZS1jb250ZW50W19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1iYWRnZS1jb250ZW50Ll9tYXQtYW5pbWF0aW9uLW5vb3BhYmxlW19uZ2NvbnRlbnQtJUNPTVAlXXt0cmFuc2l0aW9uOm5vbmV9Lm1hdC1iYWRnZS1jb250ZW50Lm1hdC1iYWRnZS1hY3RpdmVbX25nY29udGVudC0lQ09NUCVde3RyYW5zZm9ybTpub25lfS5tYXQtYmFkZ2Utc21hbGxbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1iYWRnZS1jb250ZW50W19uZ2NvbnRlbnQtJUNPTVAlXXt3aWR0aDoxNnB4O2hlaWdodDoxNnB4O2xpbmUtaGVpZ2h0OjE2cHh9Lm1hdC1iYWRnZS1zbWFsbC5tYXQtYmFkZ2UtYWJvdmVbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1iYWRnZS1jb250ZW50W19uZ2NvbnRlbnQtJUNPTVAlXXt0b3A6LThweH0ubWF0LWJhZGdlLXNtYWxsLm1hdC1iYWRnZS1iZWxvd1tfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWJhZGdlLWNvbnRlbnRbX25nY29udGVudC0lQ09NUCVde2JvdHRvbTotOHB4fS5tYXQtYmFkZ2Utc21hbGwubWF0LWJhZGdlLWJlZm9yZVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWJhZGdlLWNvbnRlbnRbX25nY29udGVudC0lQ09NUCVde2xlZnQ6LTE2cHh9W2Rpcj1ydGxdW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtYmFkZ2Utc21hbGwubWF0LWJhZGdlLWJlZm9yZVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWJhZGdlLWNvbnRlbnRbX25nY29udGVudC0lQ09NUCVde2xlZnQ6YXV0bztyaWdodDotMTZweH0ubWF0LWJhZGdlLXNtYWxsLm1hdC1iYWRnZS1hZnRlcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWJhZGdlLWNvbnRlbnRbX25nY29udGVudC0lQ09NUCVde3JpZ2h0Oi0xNnB4fVtkaXI9cnRsXVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWJhZGdlLXNtYWxsLm1hdC1iYWRnZS1hZnRlcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWJhZGdlLWNvbnRlbnRbX25nY29udGVudC0lQ09NUCVde3JpZ2h0OmF1dG87bGVmdDotMTZweH0ubWF0LWJhZGdlLXNtYWxsLm1hdC1iYWRnZS1vdmVybGFwLm1hdC1iYWRnZS1iZWZvcmVbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1iYWRnZS1jb250ZW50W19uZ2NvbnRlbnQtJUNPTVAlXXtsZWZ0Oi04cHh9W2Rpcj1ydGxdW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtYmFkZ2Utc21hbGwubWF0LWJhZGdlLW92ZXJsYXAubWF0LWJhZGdlLWJlZm9yZVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWJhZGdlLWNvbnRlbnRbX25nY29udGVudC0lQ09NUCVde2xlZnQ6YXV0bztyaWdodDotOHB4fS5tYXQtYmFkZ2Utc21hbGwubWF0LWJhZGdlLW92ZXJsYXAubWF0LWJhZGdlLWFmdGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtYmFkZ2UtY29udGVudFtfbmdjb250ZW50LSVDT01QJV17cmlnaHQ6LThweH1bZGlyPXJ0bF1bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1iYWRnZS1zbWFsbC5tYXQtYmFkZ2Utb3ZlcmxhcC5tYXQtYmFkZ2UtYWZ0ZXJbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1iYWRnZS1jb250ZW50W19uZ2NvbnRlbnQtJUNPTVAlXXtyaWdodDphdXRvO2xlZnQ6LThweH0ubWF0LWJhZGdlLW1lZGl1bVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWJhZGdlLWNvbnRlbnRbX25nY29udGVudC0lQ09NUCVde3dpZHRoOjIycHg7aGVpZ2h0OjIycHg7bGluZS1oZWlnaHQ6MjJweH0ubWF0LWJhZGdlLW1lZGl1bS5tYXQtYmFkZ2UtYWJvdmVbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1iYWRnZS1jb250ZW50W19uZ2NvbnRlbnQtJUNPTVAlXXt0b3A6LTExcHh9Lm1hdC1iYWRnZS1tZWRpdW0ubWF0LWJhZGdlLWJlbG93W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtYmFkZ2UtY29udGVudFtfbmdjb250ZW50LSVDT01QJV17Ym90dG9tOi0xMXB4fS5tYXQtYmFkZ2UtbWVkaXVtLm1hdC1iYWRnZS1iZWZvcmVbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1iYWRnZS1jb250ZW50W19uZ2NvbnRlbnQtJUNPTVAlXXtsZWZ0Oi0yMnB4fVtkaXI9cnRsXVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWJhZGdlLW1lZGl1bS5tYXQtYmFkZ2UtYmVmb3JlW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtYmFkZ2UtY29udGVudFtfbmdjb250ZW50LSVDT01QJV17bGVmdDphdXRvO3JpZ2h0Oi0yMnB4fS5tYXQtYmFkZ2UtbWVkaXVtLm1hdC1iYWRnZS1hZnRlcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWJhZGdlLWNvbnRlbnRbX25nY29udGVudC0lQ09NUCVde3JpZ2h0Oi0yMnB4fVtkaXI9cnRsXVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWJhZGdlLW1lZGl1bS5tYXQtYmFkZ2UtYWZ0ZXJbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1iYWRnZS1jb250ZW50W19uZ2NvbnRlbnQtJUNPTVAlXXtyaWdodDphdXRvO2xlZnQ6LTIycHh9Lm1hdC1iYWRnZS1tZWRpdW0ubWF0LWJhZGdlLW92ZXJsYXAubWF0LWJhZGdlLWJlZm9yZVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWJhZGdlLWNvbnRlbnRbX25nY29udGVudC0lQ09NUCVde2xlZnQ6LTExcHh9W2Rpcj1ydGxdW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtYmFkZ2UtbWVkaXVtLm1hdC1iYWRnZS1vdmVybGFwLm1hdC1iYWRnZS1iZWZvcmVbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1iYWRnZS1jb250ZW50W19uZ2NvbnRlbnQtJUNPTVAlXXtsZWZ0OmF1dG87cmlnaHQ6LTExcHh9Lm1hdC1iYWRnZS1tZWRpdW0ubWF0LWJhZGdlLW92ZXJsYXAubWF0LWJhZGdlLWFmdGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtYmFkZ2UtY29udGVudFtfbmdjb250ZW50LSVDT01QJV17cmlnaHQ6LTExcHh9W2Rpcj1ydGxdW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtYmFkZ2UtbWVkaXVtLm1hdC1iYWRnZS1vdmVybGFwLm1hdC1iYWRnZS1hZnRlcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWJhZGdlLWNvbnRlbnRbX25nY29udGVudC0lQ09NUCVde3JpZ2h0OmF1dG87bGVmdDotMTFweH0ubWF0LWJhZGdlLWxhcmdlW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtYmFkZ2UtY29udGVudFtfbmdjb250ZW50LSVDT01QJV17d2lkdGg6MjhweDtoZWlnaHQ6MjhweDtsaW5lLWhlaWdodDoyOHB4fS5tYXQtYmFkZ2UtbGFyZ2UubWF0LWJhZGdlLWFib3ZlW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtYmFkZ2UtY29udGVudFtfbmdjb250ZW50LSVDT01QJV17dG9wOi0xNHB4fS5tYXQtYmFkZ2UtbGFyZ2UubWF0LWJhZGdlLWJlbG93W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtYmFkZ2UtY29udGVudFtfbmdjb250ZW50LSVDT01QJV17Ym90dG9tOi0xNHB4fS5tYXQtYmFkZ2UtbGFyZ2UubWF0LWJhZGdlLWJlZm9yZVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWJhZGdlLWNvbnRlbnRbX25nY29udGVudC0lQ09NUCVde2xlZnQ6LTI4cHh9W2Rpcj1ydGxdW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtYmFkZ2UtbGFyZ2UubWF0LWJhZGdlLWJlZm9yZVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWJhZGdlLWNvbnRlbnRbX25nY29udGVudC0lQ09NUCVde2xlZnQ6YXV0bztyaWdodDotMjhweH0ubWF0LWJhZGdlLWxhcmdlLm1hdC1iYWRnZS1hZnRlcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWJhZGdlLWNvbnRlbnRbX25nY29udGVudC0lQ09NUCVde3JpZ2h0Oi0yOHB4fVtkaXI9cnRsXVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWJhZGdlLWxhcmdlLm1hdC1iYWRnZS1hZnRlcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWJhZGdlLWNvbnRlbnRbX25nY29udGVudC0lQ09NUCVde3JpZ2h0OmF1dG87bGVmdDotMjhweH0ubWF0LWJhZGdlLWxhcmdlLm1hdC1iYWRnZS1vdmVybGFwLm1hdC1iYWRnZS1iZWZvcmVbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1iYWRnZS1jb250ZW50W19uZ2NvbnRlbnQtJUNPTVAlXXtsZWZ0Oi0xNHB4fVtkaXI9cnRsXVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWJhZGdlLWxhcmdlLm1hdC1iYWRnZS1vdmVybGFwLm1hdC1iYWRnZS1iZWZvcmVbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1iYWRnZS1jb250ZW50W19uZ2NvbnRlbnQtJUNPTVAlXXtsZWZ0OmF1dG87cmlnaHQ6LTE0cHh9Lm1hdC1iYWRnZS1sYXJnZS5tYXQtYmFkZ2Utb3ZlcmxhcC5tYXQtYmFkZ2UtYWZ0ZXJbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1iYWRnZS1jb250ZW50W19uZ2NvbnRlbnQtJUNPTVAlXXtyaWdodDotMTRweH1bZGlyPXJ0bF1bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1iYWRnZS1sYXJnZS5tYXQtYmFkZ2Utb3ZlcmxhcC5tYXQtYmFkZ2UtYWZ0ZXJbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1iYWRnZS1jb250ZW50W19uZ2NvbnRlbnQtJUNPTVAlXXtyaWdodDphdXRvO2xlZnQ6LTE0cHh9Lm1hdC1ib3R0b20tc2hlZXQtY29udGFpbmVyW19uZ2NvbnRlbnQtJUNPTVAlXXtib3gtc2hhZG93OjBweCA4cHggMTBweCAtNXB4IHJnYmEoMCwgMCwgMCwgMC4yKSwwcHggMTZweCAyNHB4IDJweCByZ2JhKDAsIDAsIDAsIDAuMTQpLDBweCA2cHggMzBweCA1cHggcmdiYSgwLCAwLCAwLCAwLjEyKTtiYWNrZ3JvdW5kOiNmZmY7Y29sb3I6IzIxMjEyMX0ubWF0LWJ1dHRvbltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtaWNvbi1idXR0b25bX25nY29udGVudC0lQ09NUCVdLCAubWF0LXN0cm9rZWQtYnV0dG9uW19uZ2NvbnRlbnQtJUNPTVAlXXtjb2xvcjppbmhlcml0O2JhY2tncm91bmQ6dHJhbnNwYXJlbnR9Lm1hdC1idXR0b24ubWF0LXByaW1hcnlbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWljb24tYnV0dG9uLm1hdC1wcmltYXJ5W19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1zdHJva2VkLWJ1dHRvbi5tYXQtcHJpbWFyeVtfbmdjb250ZW50LSVDT01QJV17Y29sb3I6I2Y1N2MwMH0ubWF0LWJ1dHRvbi5tYXQtYWNjZW50W19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1pY29uLWJ1dHRvbi5tYXQtYWNjZW50W19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1zdHJva2VkLWJ1dHRvbi5tYXQtYWNjZW50W19uZ2NvbnRlbnQtJUNPTVAlXXtjb2xvcjojZmY5ODAwfS5tYXQtYnV0dG9uLm1hdC13YXJuW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1pY29uLWJ1dHRvbi5tYXQtd2Fybltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtc3Ryb2tlZC1idXR0b24ubWF0LXdhcm5bX25nY29udGVudC0lQ09NUCVde2NvbG9yOiNmNDQzMzZ9Lm1hdC1idXR0b24ubWF0LXByaW1hcnkubWF0LWJ1dHRvbi1kaXNhYmxlZFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtYnV0dG9uLm1hdC1hY2NlbnQubWF0LWJ1dHRvbi1kaXNhYmxlZFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtYnV0dG9uLm1hdC13YXJuLm1hdC1idXR0b24tZGlzYWJsZWRbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWJ1dHRvbi5tYXQtYnV0dG9uLWRpc2FibGVkLm1hdC1idXR0b24tZGlzYWJsZWRbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWljb24tYnV0dG9uLm1hdC1wcmltYXJ5Lm1hdC1idXR0b24tZGlzYWJsZWRbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWljb24tYnV0dG9uLm1hdC1hY2NlbnQubWF0LWJ1dHRvbi1kaXNhYmxlZFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtaWNvbi1idXR0b24ubWF0LXdhcm4ubWF0LWJ1dHRvbi1kaXNhYmxlZFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtaWNvbi1idXR0b24ubWF0LWJ1dHRvbi1kaXNhYmxlZC5tYXQtYnV0dG9uLWRpc2FibGVkW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1zdHJva2VkLWJ1dHRvbi5tYXQtcHJpbWFyeS5tYXQtYnV0dG9uLWRpc2FibGVkW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1zdHJva2VkLWJ1dHRvbi5tYXQtYWNjZW50Lm1hdC1idXR0b24tZGlzYWJsZWRbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXN0cm9rZWQtYnV0dG9uLm1hdC13YXJuLm1hdC1idXR0b24tZGlzYWJsZWRbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXN0cm9rZWQtYnV0dG9uLm1hdC1idXR0b24tZGlzYWJsZWQubWF0LWJ1dHRvbi1kaXNhYmxlZFtfbmdjb250ZW50LSVDT01QJV17Y29sb3I6cmdiYSgwLDAsMCwuMjYpfS5tYXQtYnV0dG9uLm1hdC1wcmltYXJ5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtYnV0dG9uLWZvY3VzLW92ZXJsYXlbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWljb24tYnV0dG9uLm1hdC1wcmltYXJ5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtYnV0dG9uLWZvY3VzLW92ZXJsYXlbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXN0cm9rZWQtYnV0dG9uLm1hdC1wcmltYXJ5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtYnV0dG9uLWZvY3VzLW92ZXJsYXlbX25nY29udGVudC0lQ09NUCVde2JhY2tncm91bmQtY29sb3I6I2Y1N2MwMH0ubWF0LWJ1dHRvbi5tYXQtYWNjZW50W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtYnV0dG9uLWZvY3VzLW92ZXJsYXlbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWljb24tYnV0dG9uLm1hdC1hY2NlbnRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1idXR0b24tZm9jdXMtb3ZlcmxheVtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtc3Ryb2tlZC1idXR0b24ubWF0LWFjY2VudFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWJ1dHRvbi1mb2N1cy1vdmVybGF5W19uZ2NvbnRlbnQtJUNPTVAlXXtiYWNrZ3JvdW5kLWNvbG9yOiNmZjk4MDB9Lm1hdC1idXR0b24ubWF0LXdhcm5bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1idXR0b24tZm9jdXMtb3ZlcmxheVtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtaWNvbi1idXR0b24ubWF0LXdhcm5bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1idXR0b24tZm9jdXMtb3ZlcmxheVtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtc3Ryb2tlZC1idXR0b24ubWF0LXdhcm5bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1idXR0b24tZm9jdXMtb3ZlcmxheVtfbmdjb250ZW50LSVDT01QJV17YmFja2dyb3VuZC1jb2xvcjojZjQ0MzM2fS5tYXQtYnV0dG9uLm1hdC1idXR0b24tZGlzYWJsZWRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1idXR0b24tZm9jdXMtb3ZlcmxheVtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtaWNvbi1idXR0b24ubWF0LWJ1dHRvbi1kaXNhYmxlZFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWJ1dHRvbi1mb2N1cy1vdmVybGF5W19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1zdHJva2VkLWJ1dHRvbi5tYXQtYnV0dG9uLWRpc2FibGVkW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtYnV0dG9uLWZvY3VzLW92ZXJsYXlbX25nY29udGVudC0lQ09NUCVde2JhY2tncm91bmQtY29sb3I6dHJhbnNwYXJlbnR9Lm1hdC1idXR0b25bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1yaXBwbGUtZWxlbWVudFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtaWNvbi1idXR0b25bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1yaXBwbGUtZWxlbWVudFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtc3Ryb2tlZC1idXR0b25bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1yaXBwbGUtZWxlbWVudFtfbmdjb250ZW50LSVDT01QJV17b3BhY2l0eTouMTtiYWNrZ3JvdW5kLWNvbG9yOmN1cnJlbnRDb2xvcn0ubWF0LWJ1dHRvbi1mb2N1cy1vdmVybGF5W19uZ2NvbnRlbnQtJUNPTVAlXXtiYWNrZ3JvdW5kOiMwMDB9Lm1hdC1zdHJva2VkLWJ1dHRvbltfbmdjb250ZW50LSVDT01QJV06bm90KC5tYXQtYnV0dG9uLWRpc2FibGVkKXtib3JkZXItY29sb3I6cmdiYSgwLDAsMCwuMTIpfS5tYXQtZmxhdC1idXR0b25bX25nY29udGVudC0lQ09NUCVdLCAubWF0LXJhaXNlZC1idXR0b25bX25nY29udGVudC0lQ09NUCVdLCAubWF0LWZhYltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtbWluaS1mYWJbX25nY29udGVudC0lQ09NUCVde2NvbG9yOiMyMTIxMjE7YmFja2dyb3VuZC1jb2xvcjojZmZmfS5tYXQtZmxhdC1idXR0b24ubWF0LXByaW1hcnlbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXJhaXNlZC1idXR0b24ubWF0LXByaW1hcnlbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWZhYi5tYXQtcHJpbWFyeVtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtbWluaS1mYWIubWF0LXByaW1hcnlbX25nY29udGVudC0lQ09NUCVde2NvbG9yOiNmZmZ9Lm1hdC1mbGF0LWJ1dHRvbi5tYXQtYWNjZW50W19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1yYWlzZWQtYnV0dG9uLm1hdC1hY2NlbnRbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWZhYi5tYXQtYWNjZW50W19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1taW5pLWZhYi5tYXQtYWNjZW50W19uZ2NvbnRlbnQtJUNPTVAlXXtjb2xvcjojZmZmfS5tYXQtZmxhdC1idXR0b24ubWF0LXdhcm5bX25nY29udGVudC0lQ09NUCVdLCAubWF0LXJhaXNlZC1idXR0b24ubWF0LXdhcm5bX25nY29udGVudC0lQ09NUCVdLCAubWF0LWZhYi5tYXQtd2Fybltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtbWluaS1mYWIubWF0LXdhcm5bX25nY29udGVudC0lQ09NUCVde2NvbG9yOiNmZmZ9Lm1hdC1mbGF0LWJ1dHRvbi5tYXQtcHJpbWFyeS5tYXQtYnV0dG9uLWRpc2FibGVkW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1mbGF0LWJ1dHRvbi5tYXQtYWNjZW50Lm1hdC1idXR0b24tZGlzYWJsZWRbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWZsYXQtYnV0dG9uLm1hdC13YXJuLm1hdC1idXR0b24tZGlzYWJsZWRbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWZsYXQtYnV0dG9uLm1hdC1idXR0b24tZGlzYWJsZWQubWF0LWJ1dHRvbi1kaXNhYmxlZFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtcmFpc2VkLWJ1dHRvbi5tYXQtcHJpbWFyeS5tYXQtYnV0dG9uLWRpc2FibGVkW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1yYWlzZWQtYnV0dG9uLm1hdC1hY2NlbnQubWF0LWJ1dHRvbi1kaXNhYmxlZFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtcmFpc2VkLWJ1dHRvbi5tYXQtd2Fybi5tYXQtYnV0dG9uLWRpc2FibGVkW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1yYWlzZWQtYnV0dG9uLm1hdC1idXR0b24tZGlzYWJsZWQubWF0LWJ1dHRvbi1kaXNhYmxlZFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtZmFiLm1hdC1wcmltYXJ5Lm1hdC1idXR0b24tZGlzYWJsZWRbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWZhYi5tYXQtYWNjZW50Lm1hdC1idXR0b24tZGlzYWJsZWRbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWZhYi5tYXQtd2Fybi5tYXQtYnV0dG9uLWRpc2FibGVkW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1mYWIubWF0LWJ1dHRvbi1kaXNhYmxlZC5tYXQtYnV0dG9uLWRpc2FibGVkW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1taW5pLWZhYi5tYXQtcHJpbWFyeS5tYXQtYnV0dG9uLWRpc2FibGVkW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1taW5pLWZhYi5tYXQtYWNjZW50Lm1hdC1idXR0b24tZGlzYWJsZWRbX25nY29udGVudC0lQ09NUCVdLCAubWF0LW1pbmktZmFiLm1hdC13YXJuLm1hdC1idXR0b24tZGlzYWJsZWRbX25nY29udGVudC0lQ09NUCVdLCAubWF0LW1pbmktZmFiLm1hdC1idXR0b24tZGlzYWJsZWQubWF0LWJ1dHRvbi1kaXNhYmxlZFtfbmdjb250ZW50LSVDT01QJV17Y29sb3I6cmdiYSgwLDAsMCwuMjYpfS5tYXQtZmxhdC1idXR0b24ubWF0LXByaW1hcnlbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXJhaXNlZC1idXR0b24ubWF0LXByaW1hcnlbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWZhYi5tYXQtcHJpbWFyeVtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtbWluaS1mYWIubWF0LXByaW1hcnlbX25nY29udGVudC0lQ09NUCVde2JhY2tncm91bmQtY29sb3I6I2Y1N2MwMH0ubWF0LWZsYXQtYnV0dG9uLm1hdC1hY2NlbnRbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXJhaXNlZC1idXR0b24ubWF0LWFjY2VudFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtZmFiLm1hdC1hY2NlbnRbX25nY29udGVudC0lQ09NUCVdLCAubWF0LW1pbmktZmFiLm1hdC1hY2NlbnRbX25nY29udGVudC0lQ09NUCVde2JhY2tncm91bmQtY29sb3I6I2ZmOTgwMH0ubWF0LWZsYXQtYnV0dG9uLm1hdC13YXJuW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1yYWlzZWQtYnV0dG9uLm1hdC13YXJuW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1mYWIubWF0LXdhcm5bX25nY29udGVudC0lQ09NUCVdLCAubWF0LW1pbmktZmFiLm1hdC13YXJuW19uZ2NvbnRlbnQtJUNPTVAlXXtiYWNrZ3JvdW5kLWNvbG9yOiNmNDQzMzZ9Lm1hdC1mbGF0LWJ1dHRvbi5tYXQtcHJpbWFyeS5tYXQtYnV0dG9uLWRpc2FibGVkW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1mbGF0LWJ1dHRvbi5tYXQtYWNjZW50Lm1hdC1idXR0b24tZGlzYWJsZWRbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWZsYXQtYnV0dG9uLm1hdC13YXJuLm1hdC1idXR0b24tZGlzYWJsZWRbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWZsYXQtYnV0dG9uLm1hdC1idXR0b24tZGlzYWJsZWQubWF0LWJ1dHRvbi1kaXNhYmxlZFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtcmFpc2VkLWJ1dHRvbi5tYXQtcHJpbWFyeS5tYXQtYnV0dG9uLWRpc2FibGVkW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1yYWlzZWQtYnV0dG9uLm1hdC1hY2NlbnQubWF0LWJ1dHRvbi1kaXNhYmxlZFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtcmFpc2VkLWJ1dHRvbi5tYXQtd2Fybi5tYXQtYnV0dG9uLWRpc2FibGVkW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1yYWlzZWQtYnV0dG9uLm1hdC1idXR0b24tZGlzYWJsZWQubWF0LWJ1dHRvbi1kaXNhYmxlZFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtZmFiLm1hdC1wcmltYXJ5Lm1hdC1idXR0b24tZGlzYWJsZWRbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWZhYi5tYXQtYWNjZW50Lm1hdC1idXR0b24tZGlzYWJsZWRbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWZhYi5tYXQtd2Fybi5tYXQtYnV0dG9uLWRpc2FibGVkW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1mYWIubWF0LWJ1dHRvbi1kaXNhYmxlZC5tYXQtYnV0dG9uLWRpc2FibGVkW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1taW5pLWZhYi5tYXQtcHJpbWFyeS5tYXQtYnV0dG9uLWRpc2FibGVkW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1taW5pLWZhYi5tYXQtYWNjZW50Lm1hdC1idXR0b24tZGlzYWJsZWRbX25nY29udGVudC0lQ09NUCVdLCAubWF0LW1pbmktZmFiLm1hdC13YXJuLm1hdC1idXR0b24tZGlzYWJsZWRbX25nY29udGVudC0lQ09NUCVdLCAubWF0LW1pbmktZmFiLm1hdC1idXR0b24tZGlzYWJsZWQubWF0LWJ1dHRvbi1kaXNhYmxlZFtfbmdjb250ZW50LSVDT01QJV17YmFja2dyb3VuZC1jb2xvcjpyZ2JhKDAsMCwwLC4xMil9Lm1hdC1mbGF0LWJ1dHRvbi5tYXQtcHJpbWFyeVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXJpcHBsZS1lbGVtZW50W19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1yYWlzZWQtYnV0dG9uLm1hdC1wcmltYXJ5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtcmlwcGxlLWVsZW1lbnRbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWZhYi5tYXQtcHJpbWFyeVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXJpcHBsZS1lbGVtZW50W19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1taW5pLWZhYi5tYXQtcHJpbWFyeVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXJpcHBsZS1lbGVtZW50W19uZ2NvbnRlbnQtJUNPTVAlXXtiYWNrZ3JvdW5kLWNvbG9yOnJnYmEoMjU1LDI1NSwyNTUsLjEpfS5tYXQtZmxhdC1idXR0b24ubWF0LWFjY2VudFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXJpcHBsZS1lbGVtZW50W19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1yYWlzZWQtYnV0dG9uLm1hdC1hY2NlbnRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1yaXBwbGUtZWxlbWVudFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtZmFiLm1hdC1hY2NlbnRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1yaXBwbGUtZWxlbWVudFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtbWluaS1mYWIubWF0LWFjY2VudFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXJpcHBsZS1lbGVtZW50W19uZ2NvbnRlbnQtJUNPTVAlXXtiYWNrZ3JvdW5kLWNvbG9yOnJnYmEoMjU1LDI1NSwyNTUsLjEpfS5tYXQtZmxhdC1idXR0b24ubWF0LXdhcm5bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1yaXBwbGUtZWxlbWVudFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtcmFpc2VkLWJ1dHRvbi5tYXQtd2Fybltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXJpcHBsZS1lbGVtZW50W19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1mYWIubWF0LXdhcm5bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1yaXBwbGUtZWxlbWVudFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtbWluaS1mYWIubWF0LXdhcm5bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1yaXBwbGUtZWxlbWVudFtfbmdjb250ZW50LSVDT01QJV17YmFja2dyb3VuZC1jb2xvcjpyZ2JhKDI1NSwyNTUsMjU1LC4xKX0ubWF0LXN0cm9rZWQtYnV0dG9uW19uZ2NvbnRlbnQtJUNPTVAlXTpub3QoW2NsYXNzKj1tYXQtZWxldmF0aW9uLXpdKSwgLm1hdC1mbGF0LWJ1dHRvbltfbmdjb250ZW50LSVDT01QJV06bm90KFtjbGFzcyo9bWF0LWVsZXZhdGlvbi16XSl7Ym94LXNoYWRvdzowcHggMHB4IDBweCAwcHggcmdiYSgwLCAwLCAwLCAwLjIpLDBweCAwcHggMHB4IDBweCByZ2JhKDAsIDAsIDAsIDAuMTQpLDBweCAwcHggMHB4IDBweCByZ2JhKDAsIDAsIDAsIDAuMTIpfS5tYXQtcmFpc2VkLWJ1dHRvbltfbmdjb250ZW50LSVDT01QJV06bm90KFtjbGFzcyo9bWF0LWVsZXZhdGlvbi16XSl7Ym94LXNoYWRvdzowcHggM3B4IDFweCAtMnB4IHJnYmEoMCwgMCwgMCwgMC4yKSwwcHggMnB4IDJweCAwcHggcmdiYSgwLCAwLCAwLCAwLjE0KSwwcHggMXB4IDVweCAwcHggcmdiYSgwLCAwLCAwLCAwLjEyKX0ubWF0LXJhaXNlZC1idXR0b25bX25nY29udGVudC0lQ09NUCVdOm5vdCgubWF0LWJ1dHRvbi1kaXNhYmxlZCk6YWN0aXZlOm5vdChbY2xhc3MqPW1hdC1lbGV2YXRpb24tel0pe2JveC1zaGFkb3c6MHB4IDVweCA1cHggLTNweCByZ2JhKDAsIDAsIDAsIDAuMiksMHB4IDhweCAxMHB4IDFweCByZ2JhKDAsIDAsIDAsIDAuMTQpLDBweCAzcHggMTRweCAycHggcmdiYSgwLCAwLCAwLCAwLjEyKX0ubWF0LXJhaXNlZC1idXR0b24ubWF0LWJ1dHRvbi1kaXNhYmxlZFtfbmdjb250ZW50LSVDT01QJV06bm90KFtjbGFzcyo9bWF0LWVsZXZhdGlvbi16XSl7Ym94LXNoYWRvdzowcHggMHB4IDBweCAwcHggcmdiYSgwLCAwLCAwLCAwLjIpLDBweCAwcHggMHB4IDBweCByZ2JhKDAsIDAsIDAsIDAuMTQpLDBweCAwcHggMHB4IDBweCByZ2JhKDAsIDAsIDAsIDAuMTIpfS5tYXQtZmFiW19uZ2NvbnRlbnQtJUNPTVAlXTpub3QoW2NsYXNzKj1tYXQtZWxldmF0aW9uLXpdKSwgLm1hdC1taW5pLWZhYltfbmdjb250ZW50LSVDT01QJV06bm90KFtjbGFzcyo9bWF0LWVsZXZhdGlvbi16XSl7Ym94LXNoYWRvdzowcHggM3B4IDVweCAtMXB4IHJnYmEoMCwgMCwgMCwgMC4yKSwwcHggNnB4IDEwcHggMHB4IHJnYmEoMCwgMCwgMCwgMC4xNCksMHB4IDFweCAxOHB4IDBweCByZ2JhKDAsIDAsIDAsIDAuMTIpfS5tYXQtZmFiW19uZ2NvbnRlbnQtJUNPTVAlXTpub3QoLm1hdC1idXR0b24tZGlzYWJsZWQpOmFjdGl2ZTpub3QoW2NsYXNzKj1tYXQtZWxldmF0aW9uLXpdKSwgLm1hdC1taW5pLWZhYltfbmdjb250ZW50LSVDT01QJV06bm90KC5tYXQtYnV0dG9uLWRpc2FibGVkKTphY3RpdmU6bm90KFtjbGFzcyo9bWF0LWVsZXZhdGlvbi16XSl7Ym94LXNoYWRvdzowcHggN3B4IDhweCAtNHB4IHJnYmEoMCwgMCwgMCwgMC4yKSwwcHggMTJweCAxN3B4IDJweCByZ2JhKDAsIDAsIDAsIDAuMTQpLDBweCA1cHggMjJweCA0cHggcmdiYSgwLCAwLCAwLCAwLjEyKX0ubWF0LWZhYi5tYXQtYnV0dG9uLWRpc2FibGVkW19uZ2NvbnRlbnQtJUNPTVAlXTpub3QoW2NsYXNzKj1tYXQtZWxldmF0aW9uLXpdKSwgLm1hdC1taW5pLWZhYi5tYXQtYnV0dG9uLWRpc2FibGVkW19uZ2NvbnRlbnQtJUNPTVAlXTpub3QoW2NsYXNzKj1tYXQtZWxldmF0aW9uLXpdKXtib3gtc2hhZG93OjBweCAwcHggMHB4IDBweCByZ2JhKDAsIDAsIDAsIDAuMiksMHB4IDBweCAwcHggMHB4IHJnYmEoMCwgMCwgMCwgMC4xNCksMHB4IDBweCAwcHggMHB4IHJnYmEoMCwgMCwgMCwgMC4xMil9Lm1hdC1idXR0b24tdG9nZ2xlLXN0YW5kYWxvbmVbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWJ1dHRvbi10b2dnbGUtZ3JvdXBbX25nY29udGVudC0lQ09NUCVde2JveC1zaGFkb3c6MHB4IDNweCAxcHggLTJweCByZ2JhKDAsIDAsIDAsIDAuMiksMHB4IDJweCAycHggMHB4IHJnYmEoMCwgMCwgMCwgMC4xNCksMHB4IDFweCA1cHggMHB4IHJnYmEoMCwgMCwgMCwgMC4xMil9Lm1hdC1idXR0b24tdG9nZ2xlLXN0YW5kYWxvbmUubWF0LWJ1dHRvbi10b2dnbGUtYXBwZWFyYW5jZS1zdGFuZGFyZFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtYnV0dG9uLXRvZ2dsZS1ncm91cC1hcHBlYXJhbmNlLXN0YW5kYXJkW19uZ2NvbnRlbnQtJUNPTVAlXXtib3gtc2hhZG93Om5vbmV9Lm1hdC1idXR0b24tdG9nZ2xlW19uZ2NvbnRlbnQtJUNPTVAlXXtjb2xvcjpyZ2JhKDAsMCwwLC4zOCl9Lm1hdC1idXR0b24tdG9nZ2xlW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtYnV0dG9uLXRvZ2dsZS1mb2N1cy1vdmVybGF5W19uZ2NvbnRlbnQtJUNPTVAlXXtiYWNrZ3JvdW5kLWNvbG9yOnJnYmEoMCwwLDAsLjEyKX0ubWF0LWJ1dHRvbi10b2dnbGUtYXBwZWFyYW5jZS1zdGFuZGFyZFtfbmdjb250ZW50LSVDT01QJV17Y29sb3I6IzIxMjEyMTtiYWNrZ3JvdW5kOiNmZmZ9Lm1hdC1idXR0b24tdG9nZ2xlLWFwcGVhcmFuY2Utc3RhbmRhcmRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1idXR0b24tdG9nZ2xlLWZvY3VzLW92ZXJsYXlbX25nY29udGVudC0lQ09NUCVde2JhY2tncm91bmQtY29sb3I6IzAwMH0ubWF0LWJ1dHRvbi10b2dnbGUtZ3JvdXAtYXBwZWFyYW5jZS1zdGFuZGFyZFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWJ1dHRvbi10b2dnbGVbX25nY29udGVudC0lQ09NUCVdICsgLm1hdC1idXR0b24tdG9nZ2xlW19uZ2NvbnRlbnQtJUNPTVAlXXtib3JkZXItbGVmdDpzb2xpZCAxcHggcmdiYSgwLDAsMCwuMTIpfVtkaXI9cnRsXVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWJ1dHRvbi10b2dnbGUtZ3JvdXAtYXBwZWFyYW5jZS1zdGFuZGFyZFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWJ1dHRvbi10b2dnbGVbX25nY29udGVudC0lQ09NUCVdICsgLm1hdC1idXR0b24tdG9nZ2xlW19uZ2NvbnRlbnQtJUNPTVAlXXtib3JkZXItbGVmdDpub25lO2JvcmRlci1yaWdodDpzb2xpZCAxcHggcmdiYSgwLDAsMCwuMTIpfS5tYXQtYnV0dG9uLXRvZ2dsZS1ncm91cC1hcHBlYXJhbmNlLXN0YW5kYXJkLm1hdC1idXR0b24tdG9nZ2xlLXZlcnRpY2FsW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtYnV0dG9uLXRvZ2dsZVtfbmdjb250ZW50LSVDT01QJV0gKyAubWF0LWJ1dHRvbi10b2dnbGVbX25nY29udGVudC0lQ09NUCVde2JvcmRlci1sZWZ0Om5vbmU7Ym9yZGVyLXJpZ2h0Om5vbmU7Ym9yZGVyLXRvcDpzb2xpZCAxcHggcmdiYSgwLDAsMCwuMTIpfS5tYXQtYnV0dG9uLXRvZ2dsZS1jaGVja2VkW19uZ2NvbnRlbnQtJUNPTVAlXXtiYWNrZ3JvdW5kLWNvbG9yOiNlMGUwZTA7Y29sb3I6IzYxNjE2MX0ubWF0LWJ1dHRvbi10b2dnbGUtY2hlY2tlZC5tYXQtYnV0dG9uLXRvZ2dsZS1hcHBlYXJhbmNlLXN0YW5kYXJkW19uZ2NvbnRlbnQtJUNPTVAlXXtjb2xvcjojMjEyMTIxfS5tYXQtYnV0dG9uLXRvZ2dsZS1kaXNhYmxlZFtfbmdjb250ZW50LSVDT01QJV17Y29sb3I6cmdiYSgwLDAsMCwuMjYpO2JhY2tncm91bmQtY29sb3I6I2VlZX0ubWF0LWJ1dHRvbi10b2dnbGUtZGlzYWJsZWQubWF0LWJ1dHRvbi10b2dnbGUtYXBwZWFyYW5jZS1zdGFuZGFyZFtfbmdjb250ZW50LSVDT01QJV17YmFja2dyb3VuZDojZmZmfS5tYXQtYnV0dG9uLXRvZ2dsZS1kaXNhYmxlZC5tYXQtYnV0dG9uLXRvZ2dsZS1jaGVja2VkW19uZ2NvbnRlbnQtJUNPTVAlXXtiYWNrZ3JvdW5kLWNvbG9yOiNiZGJkYmR9Lm1hdC1idXR0b24tdG9nZ2xlLXN0YW5kYWxvbmUubWF0LWJ1dHRvbi10b2dnbGUtYXBwZWFyYW5jZS1zdGFuZGFyZFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtYnV0dG9uLXRvZ2dsZS1ncm91cC1hcHBlYXJhbmNlLXN0YW5kYXJkW19uZ2NvbnRlbnQtJUNPTVAlXXtib3JkZXI6c29saWQgMXB4IHJnYmEoMCwwLDAsLjEyKX0ubWF0LWJ1dHRvbi10b2dnbGUtYXBwZWFyYW5jZS1zdGFuZGFyZFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWJ1dHRvbi10b2dnbGUtbGFiZWwtY29udGVudFtfbmdjb250ZW50LSVDT01QJV17bGluZS1oZWlnaHQ6NDhweH0ubWF0LWNhcmRbX25nY29udGVudC0lQ09NUCVde2JhY2tncm91bmQ6I2ZmZjtjb2xvcjojMjEyMTIxfS5tYXQtY2FyZFtfbmdjb250ZW50LSVDT01QJV06bm90KFtjbGFzcyo9bWF0LWVsZXZhdGlvbi16XSl7Ym94LXNoYWRvdzowcHggMnB4IDFweCAtMXB4IHJnYmEoMCwgMCwgMCwgMC4yKSwwcHggMXB4IDFweCAwcHggcmdiYSgwLCAwLCAwLCAwLjE0KSwwcHggMXB4IDNweCAwcHggcmdiYSgwLCAwLCAwLCAwLjEyKX0ubWF0LWNhcmQubWF0LWNhcmQtZmxhdFtfbmdjb250ZW50LSVDT01QJV06bm90KFtjbGFzcyo9bWF0LWVsZXZhdGlvbi16XSl7Ym94LXNoYWRvdzowcHggMHB4IDBweCAwcHggcmdiYSgwLCAwLCAwLCAwLjIpLDBweCAwcHggMHB4IDBweCByZ2JhKDAsIDAsIDAsIDAuMTQpLDBweCAwcHggMHB4IDBweCByZ2JhKDAsIDAsIDAsIDAuMTIpfS5tYXQtY2FyZC1zdWJ0aXRsZVtfbmdjb250ZW50LSVDT01QJV17Y29sb3I6IzYxNjE2MX0ubWF0LWNoZWNrYm94LWZyYW1lW19uZ2NvbnRlbnQtJUNPTVAlXXtib3JkZXItY29sb3I6IzYxNjE2MX0ubWF0LWNoZWNrYm94LWNoZWNrbWFya1tfbmdjb250ZW50LSVDT01QJV17ZmlsbDojZmFmYWZhfS5tYXQtY2hlY2tib3gtY2hlY2ttYXJrLXBhdGhbX25nY29udGVudC0lQ09NUCVde3N0cm9rZTojZmFmYWZhICFpbXBvcnRhbnR9Lm1hdC1jaGVja2JveC1taXhlZG1hcmtbX25nY29udGVudC0lQ09NUCVde2JhY2tncm91bmQtY29sb3I6I2ZhZmFmYX0ubWF0LWNoZWNrYm94LWluZGV0ZXJtaW5hdGUubWF0LXByaW1hcnlbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1jaGVja2JveC1iYWNrZ3JvdW5kW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1jaGVja2JveC1jaGVja2VkLm1hdC1wcmltYXJ5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtY2hlY2tib3gtYmFja2dyb3VuZFtfbmdjb250ZW50LSVDT01QJV17YmFja2dyb3VuZC1jb2xvcjojZjU3YzAwfS5tYXQtY2hlY2tib3gtaW5kZXRlcm1pbmF0ZS5tYXQtYWNjZW50W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtY2hlY2tib3gtYmFja2dyb3VuZFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtY2hlY2tib3gtY2hlY2tlZC5tYXQtYWNjZW50W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtY2hlY2tib3gtYmFja2dyb3VuZFtfbmdjb250ZW50LSVDT01QJV17YmFja2dyb3VuZC1jb2xvcjojZmY5ODAwfS5tYXQtY2hlY2tib3gtaW5kZXRlcm1pbmF0ZS5tYXQtd2Fybltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWNoZWNrYm94LWJhY2tncm91bmRbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWNoZWNrYm94LWNoZWNrZWQubWF0LXdhcm5bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1jaGVja2JveC1iYWNrZ3JvdW5kW19uZ2NvbnRlbnQtJUNPTVAlXXtiYWNrZ3JvdW5kLWNvbG9yOiNmNDQzMzZ9Lm1hdC1jaGVja2JveC1kaXNhYmxlZC5tYXQtY2hlY2tib3gtY2hlY2tlZFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWNoZWNrYm94LWJhY2tncm91bmRbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWNoZWNrYm94LWRpc2FibGVkLm1hdC1jaGVja2JveC1pbmRldGVybWluYXRlW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtY2hlY2tib3gtYmFja2dyb3VuZFtfbmdjb250ZW50LSVDT01QJV17YmFja2dyb3VuZC1jb2xvcjojYjBiMGIwfS5tYXQtY2hlY2tib3gtZGlzYWJsZWRbX25nY29udGVudC0lQ09NUCVdOm5vdCgubWF0LWNoZWNrYm94LWNoZWNrZWQpICAgLm1hdC1jaGVja2JveC1mcmFtZVtfbmdjb250ZW50LSVDT01QJV17Ym9yZGVyLWNvbG9yOiNiMGIwYjB9Lm1hdC1jaGVja2JveC1kaXNhYmxlZFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWNoZWNrYm94LWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXtjb2xvcjojNjE2MTYxfS5tYXQtY2hlY2tib3hbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1yaXBwbGUtZWxlbWVudFtfbmdjb250ZW50LSVDT01QJV17YmFja2dyb3VuZC1jb2xvcjojMDAwfS5tYXQtY2hlY2tib3gtY2hlY2tlZFtfbmdjb250ZW50LSVDT01QJV06bm90KC5tYXQtY2hlY2tib3gtZGlzYWJsZWQpLm1hdC1wcmltYXJ5ICAgLm1hdC1yaXBwbGUtZWxlbWVudFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtY2hlY2tib3hbX25nY29udGVudC0lQ09NUCVdOmFjdGl2ZTpub3QoLm1hdC1jaGVja2JveC1kaXNhYmxlZCkubWF0LXByaW1hcnkgICAubWF0LXJpcHBsZS1lbGVtZW50W19uZ2NvbnRlbnQtJUNPTVAlXXtiYWNrZ3JvdW5kOiNmNTdjMDB9Lm1hdC1jaGVja2JveC1jaGVja2VkW19uZ2NvbnRlbnQtJUNPTVAlXTpub3QoLm1hdC1jaGVja2JveC1kaXNhYmxlZCkubWF0LWFjY2VudCAgIC5tYXQtcmlwcGxlLWVsZW1lbnRbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWNoZWNrYm94W19uZ2NvbnRlbnQtJUNPTVAlXTphY3RpdmU6bm90KC5tYXQtY2hlY2tib3gtZGlzYWJsZWQpLm1hdC1hY2NlbnQgICAubWF0LXJpcHBsZS1lbGVtZW50W19uZ2NvbnRlbnQtJUNPTVAlXXtiYWNrZ3JvdW5kOiNmZjk4MDB9Lm1hdC1jaGVja2JveC1jaGVja2VkW19uZ2NvbnRlbnQtJUNPTVAlXTpub3QoLm1hdC1jaGVja2JveC1kaXNhYmxlZCkubWF0LXdhcm4gICAubWF0LXJpcHBsZS1lbGVtZW50W19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1jaGVja2JveFtfbmdjb250ZW50LSVDT01QJV06YWN0aXZlOm5vdCgubWF0LWNoZWNrYm94LWRpc2FibGVkKS5tYXQtd2FybiAgIC5tYXQtcmlwcGxlLWVsZW1lbnRbX25nY29udGVudC0lQ09NUCVde2JhY2tncm91bmQ6I2Y0NDMzNn0ubWF0LWNoaXAubWF0LXN0YW5kYXJkLWNoaXBbX25nY29udGVudC0lQ09NUCVde2JhY2tncm91bmQtY29sb3I6I2UwZTBlMDtjb2xvcjojMjEyMTIxfS5tYXQtY2hpcC5tYXQtc3RhbmRhcmQtY2hpcFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWNoaXAtcmVtb3ZlW19uZ2NvbnRlbnQtJUNPTVAlXXtjb2xvcjojMjEyMTIxO29wYWNpdHk6LjR9Lm1hdC1jaGlwLm1hdC1zdGFuZGFyZC1jaGlwW19uZ2NvbnRlbnQtJUNPTVAlXTpub3QoLm1hdC1jaGlwLWRpc2FibGVkKTphY3RpdmV7Ym94LXNoYWRvdzowcHggM3B4IDNweCAtMnB4IHJnYmEoMCwgMCwgMCwgMC4yKSwwcHggM3B4IDRweCAwcHggcmdiYSgwLCAwLCAwLCAwLjE0KSwwcHggMXB4IDhweCAwcHggcmdiYSgwLCAwLCAwLCAwLjEyKX0ubWF0LWNoaXAubWF0LXN0YW5kYXJkLWNoaXBbX25nY29udGVudC0lQ09NUCVdOm5vdCgubWF0LWNoaXAtZGlzYWJsZWQpICAgLm1hdC1jaGlwLXJlbW92ZVtfbmdjb250ZW50LSVDT01QJV06aG92ZXJ7b3BhY2l0eTouNTR9Lm1hdC1jaGlwLm1hdC1zdGFuZGFyZC1jaGlwLm1hdC1jaGlwLWRpc2FibGVkW19uZ2NvbnRlbnQtJUNPTVAlXXtvcGFjaXR5Oi40fS5tYXQtY2hpcC5tYXQtc3RhbmRhcmQtY2hpcFtfbmdjb250ZW50LSVDT01QJV06OmFmdGVye2JhY2tncm91bmQ6IzAwMH0ubWF0LWNoaXAubWF0LXN0YW5kYXJkLWNoaXAubWF0LWNoaXAtc2VsZWN0ZWQubWF0LXByaW1hcnlbX25nY29udGVudC0lQ09NUCVde2JhY2tncm91bmQtY29sb3I6I2Y1N2MwMDtjb2xvcjojZmZmfS5tYXQtY2hpcC5tYXQtc3RhbmRhcmQtY2hpcC5tYXQtY2hpcC1zZWxlY3RlZC5tYXQtcHJpbWFyeVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWNoaXAtcmVtb3ZlW19uZ2NvbnRlbnQtJUNPTVAlXXtjb2xvcjojZmZmO29wYWNpdHk6LjR9Lm1hdC1jaGlwLm1hdC1zdGFuZGFyZC1jaGlwLm1hdC1jaGlwLXNlbGVjdGVkLm1hdC1wcmltYXJ5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtcmlwcGxlLWVsZW1lbnRbX25nY29udGVudC0lQ09NUCVde2JhY2tncm91bmQtY29sb3I6cmdiYSgyNTUsMjU1LDI1NSwuMSl9Lm1hdC1jaGlwLm1hdC1zdGFuZGFyZC1jaGlwLm1hdC1jaGlwLXNlbGVjdGVkLm1hdC13YXJuW19uZ2NvbnRlbnQtJUNPTVAlXXtiYWNrZ3JvdW5kLWNvbG9yOiNmNDQzMzY7Y29sb3I6I2ZmZn0ubWF0LWNoaXAubWF0LXN0YW5kYXJkLWNoaXAubWF0LWNoaXAtc2VsZWN0ZWQubWF0LXdhcm5bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1jaGlwLXJlbW92ZVtfbmdjb250ZW50LSVDT01QJV17Y29sb3I6I2ZmZjtvcGFjaXR5Oi40fS5tYXQtY2hpcC5tYXQtc3RhbmRhcmQtY2hpcC5tYXQtY2hpcC1zZWxlY3RlZC5tYXQtd2Fybltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXJpcHBsZS1lbGVtZW50W19uZ2NvbnRlbnQtJUNPTVAlXXtiYWNrZ3JvdW5kLWNvbG9yOnJnYmEoMjU1LDI1NSwyNTUsLjEpfS5tYXQtY2hpcC5tYXQtc3RhbmRhcmQtY2hpcC5tYXQtY2hpcC1zZWxlY3RlZC5tYXQtYWNjZW50W19uZ2NvbnRlbnQtJUNPTVAlXXtiYWNrZ3JvdW5kLWNvbG9yOiNmZjk4MDA7Y29sb3I6I2ZmZn0ubWF0LWNoaXAubWF0LXN0YW5kYXJkLWNoaXAubWF0LWNoaXAtc2VsZWN0ZWQubWF0LWFjY2VudFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWNoaXAtcmVtb3ZlW19uZ2NvbnRlbnQtJUNPTVAlXXtjb2xvcjojZmZmO29wYWNpdHk6LjR9Lm1hdC1jaGlwLm1hdC1zdGFuZGFyZC1jaGlwLm1hdC1jaGlwLXNlbGVjdGVkLm1hdC1hY2NlbnRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1yaXBwbGUtZWxlbWVudFtfbmdjb250ZW50LSVDT01QJV17YmFja2dyb3VuZC1jb2xvcjpyZ2JhKDI1NSwyNTUsMjU1LC4xKX0ubWF0LXRhYmxlW19uZ2NvbnRlbnQtJUNPTVAlXXtiYWNrZ3JvdW5kOiNmZmZ9Lm1hdC10YWJsZVtfbmdjb250ZW50LSVDT01QJV0gICB0aGVhZFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdGFibGVbX25nY29udGVudC0lQ09NUCVdICAgdGJvZHlbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXRhYmxlW19uZ2NvbnRlbnQtJUNPTVAlXSAgIHRmb290W19uZ2NvbnRlbnQtJUNPTVAlXSwgbWF0LWhlYWRlci1yb3dbX25nY29udGVudC0lQ09NUCVdLCBtYXQtcm93W19uZ2NvbnRlbnQtJUNPTVAlXSwgbWF0LWZvb3Rlci1yb3dbX25nY29udGVudC0lQ09NUCVdLCBbbWF0LWhlYWRlci1yb3ddW19uZ2NvbnRlbnQtJUNPTVAlXSwgW21hdC1yb3ddW19uZ2NvbnRlbnQtJUNPTVAlXSwgW21hdC1mb290ZXItcm93XVtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdGFibGUtc3RpY2t5W19uZ2NvbnRlbnQtJUNPTVAlXXtiYWNrZ3JvdW5kOmluaGVyaXR9bWF0LXJvd1tfbmdjb250ZW50LSVDT01QJV0sIG1hdC1oZWFkZXItcm93W19uZ2NvbnRlbnQtJUNPTVAlXSwgbWF0LWZvb3Rlci1yb3dbX25nY29udGVudC0lQ09NUCVdLCB0aC5tYXQtaGVhZGVyLWNlbGxbX25nY29udGVudC0lQ09NUCVdLCB0ZC5tYXQtY2VsbFtfbmdjb250ZW50LSVDT01QJV0sIHRkLm1hdC1mb290ZXItY2VsbFtfbmdjb250ZW50LSVDT01QJV17Ym9yZGVyLWJvdHRvbS1jb2xvcjpyZ2JhKDAsMCwwLC4xMil9Lm1hdC1oZWFkZXItY2VsbFtfbmdjb250ZW50LSVDT01QJV17Y29sb3I6IzYxNjE2MX0ubWF0LWNlbGxbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWZvb3Rlci1jZWxsW19uZ2NvbnRlbnQtJUNPTVAlXXtjb2xvcjojMjEyMTIxfS5tYXQtY2FsZW5kYXItYXJyb3dbX25nY29udGVudC0lQ09NUCVde2JvcmRlci10b3AtY29sb3I6cmdiYSgwLDAsMCwuNTQpfS5tYXQtZGF0ZXBpY2tlci10b2dnbGVbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWRhdGVwaWNrZXItY29udGVudFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWNhbGVuZGFyLW5leHQtYnV0dG9uW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1kYXRlcGlja2VyLWNvbnRlbnRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1jYWxlbmRhci1wcmV2aW91cy1idXR0b25bX25nY29udGVudC0lQ09NUCVde2NvbG9yOnJnYmEoMCwwLDAsLjU0KX0ubWF0LWNhbGVuZGFyLXRhYmxlLWhlYWRlcltfbmdjb250ZW50LSVDT01QJV17Y29sb3I6cmdiYSgwLDAsMCwuMzgpfS5tYXQtY2FsZW5kYXItdGFibGUtaGVhZGVyLWRpdmlkZXJbX25nY29udGVudC0lQ09NUCVdOjphZnRlcntiYWNrZ3JvdW5kOnJnYmEoMCwwLDAsLjEyKX0ubWF0LWNhbGVuZGFyLWJvZHktbGFiZWxbX25nY29udGVudC0lQ09NUCVde2NvbG9yOiM2MTYxNjF9Lm1hdC1jYWxlbmRhci1ib2R5LWNlbGwtY29udGVudFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtZGF0ZS1yYW5nZS1pbnB1dC1zZXBhcmF0b3JbX25nY29udGVudC0lQ09NUCVde2NvbG9yOiMyMTIxMjE7Ym9yZGVyLWNvbG9yOnRyYW5zcGFyZW50fS5tYXQtY2FsZW5kYXItYm9keS1kaXNhYmxlZFtfbmdjb250ZW50LSVDT01QJV0gPiAubWF0LWNhbGVuZGFyLWJvZHktY2VsbC1jb250ZW50W19uZ2NvbnRlbnQtJUNPTVAlXTpub3QoLm1hdC1jYWxlbmRhci1ib2R5LXNlbGVjdGVkKTpub3QoLm1hdC1jYWxlbmRhci1ib2R5LWNvbXBhcmlzb24taWRlbnRpY2FsKXtjb2xvcjojNzU3NTc1fS5tYXQtZm9ybS1maWVsZC1kaXNhYmxlZFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWRhdGUtcmFuZ2UtaW5wdXQtc2VwYXJhdG9yW19uZ2NvbnRlbnQtJUNPTVAlXXtjb2xvcjojNzU3NTc1fS5tYXQtY2FsZW5kYXItYm9keS1jZWxsW19uZ2NvbnRlbnQtJUNPTVAlXTpub3QoLm1hdC1jYWxlbmRhci1ib2R5LWRpc2FibGVkKTpob3ZlciA+IC5tYXQtY2FsZW5kYXItYm9keS1jZWxsLWNvbnRlbnRbX25nY29udGVudC0lQ09NUCVdOm5vdCgubWF0LWNhbGVuZGFyLWJvZHktc2VsZWN0ZWQpOm5vdCgubWF0LWNhbGVuZGFyLWJvZHktY29tcGFyaXNvbi1pZGVudGljYWwpLCAuY2RrLWtleWJvYXJkLWZvY3VzZWRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1jYWxlbmRhci1ib2R5LWFjdGl2ZVtfbmdjb250ZW50LSVDT01QJV0gPiAubWF0LWNhbGVuZGFyLWJvZHktY2VsbC1jb250ZW50W19uZ2NvbnRlbnQtJUNPTVAlXTpub3QoLm1hdC1jYWxlbmRhci1ib2R5LXNlbGVjdGVkKTpub3QoLm1hdC1jYWxlbmRhci1ib2R5LWNvbXBhcmlzb24taWRlbnRpY2FsKSwgLmNkay1wcm9ncmFtLWZvY3VzZWRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1jYWxlbmRhci1ib2R5LWFjdGl2ZVtfbmdjb250ZW50LSVDT01QJV0gPiAubWF0LWNhbGVuZGFyLWJvZHktY2VsbC1jb250ZW50W19uZ2NvbnRlbnQtJUNPTVAlXTpub3QoLm1hdC1jYWxlbmRhci1ib2R5LXNlbGVjdGVkKTpub3QoLm1hdC1jYWxlbmRhci1ib2R5LWNvbXBhcmlzb24taWRlbnRpY2FsKXtiYWNrZ3JvdW5kLWNvbG9yOnJnYmEoMCwwLDAsLjA0KX0ubWF0LWNhbGVuZGFyLWJvZHktaW4tcHJldmlld1tfbmdjb250ZW50LSVDT01QJV17Y29sb3I6cmdiYSgwLDAsMCwuMjQpfS5tYXQtY2FsZW5kYXItYm9keS10b2RheVtfbmdjb250ZW50LSVDT01QJV06bm90KC5tYXQtY2FsZW5kYXItYm9keS1zZWxlY3RlZCk6bm90KC5tYXQtY2FsZW5kYXItYm9keS1jb21wYXJpc29uLWlkZW50aWNhbCl7Ym9yZGVyLWNvbG9yOnJnYmEoMCwwLDAsLjM4KX0ubWF0LWNhbGVuZGFyLWJvZHktZGlzYWJsZWRbX25nY29udGVudC0lQ09NUCVdID4gLm1hdC1jYWxlbmRhci1ib2R5LXRvZGF5W19uZ2NvbnRlbnQtJUNPTVAlXTpub3QoLm1hdC1jYWxlbmRhci1ib2R5LXNlbGVjdGVkKTpub3QoLm1hdC1jYWxlbmRhci1ib2R5LWNvbXBhcmlzb24taWRlbnRpY2FsKXtib3JkZXItY29sb3I6cmdiYSgwLDAsMCwuMTgpfS5tYXQtY2FsZW5kYXItYm9keS1pbi1yYW5nZVtfbmdjb250ZW50LSVDT01QJV06OmJlZm9yZXtiYWNrZ3JvdW5kOnJnYmEoMjQ1LDEyNCwwLC4yKX0ubWF0LWNhbGVuZGFyLWJvZHktY29tcGFyaXNvbi1pZGVudGljYWxbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWNhbGVuZGFyLWJvZHktaW4tY29tcGFyaXNvbi1yYW5nZVtfbmdjb250ZW50LSVDT01QJV06OmJlZm9yZXtiYWNrZ3JvdW5kOnJnYmEoMjQ5LDE3MSwwLC4yKX0ubWF0LWNhbGVuZGFyLWJvZHktY29tcGFyaXNvbi1icmlkZ2Utc3RhcnRbX25nY29udGVudC0lQ09NUCVdOjpiZWZvcmUsIFtkaXI9cnRsXVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWNhbGVuZGFyLWJvZHktY29tcGFyaXNvbi1icmlkZ2UtZW5kW19uZ2NvbnRlbnQtJUNPTVAlXTo6YmVmb3Jle2JhY2tncm91bmQ6bGluZWFyLWdyYWRpZW50KHRvIHJpZ2h0LCByZ2JhKDI0NSwgMTI0LCAwLCAwLjIpIDUwJSwgcmdiYSgyNDksIDE3MSwgMCwgMC4yKSA1MCUpfS5tYXQtY2FsZW5kYXItYm9keS1jb21wYXJpc29uLWJyaWRnZS1lbmRbX25nY29udGVudC0lQ09NUCVdOjpiZWZvcmUsIFtkaXI9cnRsXVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWNhbGVuZGFyLWJvZHktY29tcGFyaXNvbi1icmlkZ2Utc3RhcnRbX25nY29udGVudC0lQ09NUCVdOjpiZWZvcmV7YmFja2dyb3VuZDpsaW5lYXItZ3JhZGllbnQodG8gbGVmdCwgcmdiYSgyNDUsIDEyNCwgMCwgMC4yKSA1MCUsIHJnYmEoMjQ5LCAxNzEsIDAsIDAuMikgNTAlKX0ubWF0LWNhbGVuZGFyLWJvZHktaW4tcmFuZ2VbX25nY29udGVudC0lQ09NUCVdID4gLm1hdC1jYWxlbmRhci1ib2R5LWNvbXBhcmlzb24taWRlbnRpY2FsW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1jYWxlbmRhci1ib2R5LWluLWNvbXBhcmlzb24tcmFuZ2UubWF0LWNhbGVuZGFyLWJvZHktaW4tcmFuZ2VbX25nY29udGVudC0lQ09NUCVdOjphZnRlcntiYWNrZ3JvdW5kOiNhOGRhYjV9Lm1hdC1jYWxlbmRhci1ib2R5LWNvbXBhcmlzb24taWRlbnRpY2FsLm1hdC1jYWxlbmRhci1ib2R5LXNlbGVjdGVkW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1jYWxlbmRhci1ib2R5LWluLWNvbXBhcmlzb24tcmFuZ2VbX25nY29udGVudC0lQ09NUCVdID4gLm1hdC1jYWxlbmRhci1ib2R5LXNlbGVjdGVkW19uZ2NvbnRlbnQtJUNPTVAlXXtiYWNrZ3JvdW5kOiM0NmEzNWV9Lm1hdC1jYWxlbmRhci1ib2R5LXNlbGVjdGVkW19uZ2NvbnRlbnQtJUNPTVAlXXtiYWNrZ3JvdW5kLWNvbG9yOiNmNTdjMDA7Y29sb3I6I2ZmZn0ubWF0LWNhbGVuZGFyLWJvZHktZGlzYWJsZWRbX25nY29udGVudC0lQ09NUCVdID4gLm1hdC1jYWxlbmRhci1ib2R5LXNlbGVjdGVkW19uZ2NvbnRlbnQtJUNPTVAlXXtiYWNrZ3JvdW5kLWNvbG9yOnJnYmEoMjQ1LDEyNCwwLC40KX0ubWF0LWNhbGVuZGFyLWJvZHktdG9kYXkubWF0LWNhbGVuZGFyLWJvZHktc2VsZWN0ZWRbX25nY29udGVudC0lQ09NUCVde2JveC1zaGFkb3c6aW5zZXQgMCAwIDAgMXB4ICNmZmZ9Lm1hdC1kYXRlcGlja2VyLWNvbnRlbnRbX25nY29udGVudC0lQ09NUCVde2JveC1zaGFkb3c6MHB4IDJweCA0cHggLTFweCByZ2JhKDAsIDAsIDAsIDAuMiksMHB4IDRweCA1cHggMHB4IHJnYmEoMCwgMCwgMCwgMC4xNCksMHB4IDFweCAxMHB4IDBweCByZ2JhKDAsIDAsIDAsIDAuMTIpO2JhY2tncm91bmQtY29sb3I6I2ZmZjtjb2xvcjojMjEyMTIxfS5tYXQtZGF0ZXBpY2tlci1jb250ZW50Lm1hdC1hY2NlbnRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1jYWxlbmRhci1ib2R5LWluLXJhbmdlW19uZ2NvbnRlbnQtJUNPTVAlXTo6YmVmb3Jle2JhY2tncm91bmQ6cmdiYSgyNTUsMTUyLDAsLjIpfS5tYXQtZGF0ZXBpY2tlci1jb250ZW50Lm1hdC1hY2NlbnRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1jYWxlbmRhci1ib2R5LWNvbXBhcmlzb24taWRlbnRpY2FsW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1kYXRlcGlja2VyLWNvbnRlbnQubWF0LWFjY2VudFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWNhbGVuZGFyLWJvZHktaW4tY29tcGFyaXNvbi1yYW5nZVtfbmdjb250ZW50LSVDT01QJV06OmJlZm9yZXtiYWNrZ3JvdW5kOnJnYmEoMjQ5LDE3MSwwLC4yKX0ubWF0LWRhdGVwaWNrZXItY29udGVudC5tYXQtYWNjZW50W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtY2FsZW5kYXItYm9keS1jb21wYXJpc29uLWJyaWRnZS1zdGFydFtfbmdjb250ZW50LSVDT01QJV06OmJlZm9yZSwgLm1hdC1kYXRlcGlja2VyLWNvbnRlbnQubWF0LWFjY2VudFtfbmdjb250ZW50LSVDT01QJV0gICBbZGlyPXJ0bF1bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1jYWxlbmRhci1ib2R5LWNvbXBhcmlzb24tYnJpZGdlLWVuZFtfbmdjb250ZW50LSVDT01QJV06OmJlZm9yZXtiYWNrZ3JvdW5kOmxpbmVhci1ncmFkaWVudCh0byByaWdodCwgcmdiYSgyNTUsIDE1MiwgMCwgMC4yKSA1MCUsIHJnYmEoMjQ5LCAxNzEsIDAsIDAuMikgNTAlKX0ubWF0LWRhdGVwaWNrZXItY29udGVudC5tYXQtYWNjZW50W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtY2FsZW5kYXItYm9keS1jb21wYXJpc29uLWJyaWRnZS1lbmRbX25nY29udGVudC0lQ09NUCVdOjpiZWZvcmUsIC5tYXQtZGF0ZXBpY2tlci1jb250ZW50Lm1hdC1hY2NlbnRbX25nY29udGVudC0lQ09NUCVdICAgW2Rpcj1ydGxdW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtY2FsZW5kYXItYm9keS1jb21wYXJpc29uLWJyaWRnZS1zdGFydFtfbmdjb250ZW50LSVDT01QJV06OmJlZm9yZXtiYWNrZ3JvdW5kOmxpbmVhci1ncmFkaWVudCh0byBsZWZ0LCByZ2JhKDI1NSwgMTUyLCAwLCAwLjIpIDUwJSwgcmdiYSgyNDksIDE3MSwgMCwgMC4yKSA1MCUpfS5tYXQtZGF0ZXBpY2tlci1jb250ZW50Lm1hdC1hY2NlbnRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1jYWxlbmRhci1ib2R5LWluLXJhbmdlW19uZ2NvbnRlbnQtJUNPTVAlXSA+IC5tYXQtY2FsZW5kYXItYm9keS1jb21wYXJpc29uLWlkZW50aWNhbFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtZGF0ZXBpY2tlci1jb250ZW50Lm1hdC1hY2NlbnRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1jYWxlbmRhci1ib2R5LWluLWNvbXBhcmlzb24tcmFuZ2UubWF0LWNhbGVuZGFyLWJvZHktaW4tcmFuZ2VbX25nY29udGVudC0lQ09NUCVdOjphZnRlcntiYWNrZ3JvdW5kOiNhOGRhYjV9Lm1hdC1kYXRlcGlja2VyLWNvbnRlbnQubWF0LWFjY2VudFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWNhbGVuZGFyLWJvZHktY29tcGFyaXNvbi1pZGVudGljYWwubWF0LWNhbGVuZGFyLWJvZHktc2VsZWN0ZWRbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWRhdGVwaWNrZXItY29udGVudC5tYXQtYWNjZW50W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtY2FsZW5kYXItYm9keS1pbi1jb21wYXJpc29uLXJhbmdlW19uZ2NvbnRlbnQtJUNPTVAlXSA+IC5tYXQtY2FsZW5kYXItYm9keS1zZWxlY3RlZFtfbmdjb250ZW50LSVDT01QJV17YmFja2dyb3VuZDojNDZhMzVlfS5tYXQtZGF0ZXBpY2tlci1jb250ZW50Lm1hdC1hY2NlbnRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1jYWxlbmRhci1ib2R5LXNlbGVjdGVkW19uZ2NvbnRlbnQtJUNPTVAlXXtiYWNrZ3JvdW5kLWNvbG9yOiNmZjk4MDA7Y29sb3I6I2ZmZn0ubWF0LWRhdGVwaWNrZXItY29udGVudC5tYXQtYWNjZW50W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtY2FsZW5kYXItYm9keS1kaXNhYmxlZFtfbmdjb250ZW50LSVDT01QJV0gPiAubWF0LWNhbGVuZGFyLWJvZHktc2VsZWN0ZWRbX25nY29udGVudC0lQ09NUCVde2JhY2tncm91bmQtY29sb3I6cmdiYSgyNTUsMTUyLDAsLjQpfS5tYXQtZGF0ZXBpY2tlci1jb250ZW50Lm1hdC1hY2NlbnRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1jYWxlbmRhci1ib2R5LXRvZGF5Lm1hdC1jYWxlbmRhci1ib2R5LXNlbGVjdGVkW19uZ2NvbnRlbnQtJUNPTVAlXXtib3gtc2hhZG93Omluc2V0IDAgMCAwIDFweCAjZmZmfS5tYXQtZGF0ZXBpY2tlci1jb250ZW50Lm1hdC13YXJuW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtY2FsZW5kYXItYm9keS1pbi1yYW5nZVtfbmdjb250ZW50LSVDT01QJV06OmJlZm9yZXtiYWNrZ3JvdW5kOnJnYmEoMjQ0LDY3LDU0LC4yKX0ubWF0LWRhdGVwaWNrZXItY29udGVudC5tYXQtd2Fybltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWNhbGVuZGFyLWJvZHktY29tcGFyaXNvbi1pZGVudGljYWxbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWRhdGVwaWNrZXItY29udGVudC5tYXQtd2Fybltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWNhbGVuZGFyLWJvZHktaW4tY29tcGFyaXNvbi1yYW5nZVtfbmdjb250ZW50LSVDT01QJV06OmJlZm9yZXtiYWNrZ3JvdW5kOnJnYmEoMjQ5LDE3MSwwLC4yKX0ubWF0LWRhdGVwaWNrZXItY29udGVudC5tYXQtd2Fybltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWNhbGVuZGFyLWJvZHktY29tcGFyaXNvbi1icmlkZ2Utc3RhcnRbX25nY29udGVudC0lQ09NUCVdOjpiZWZvcmUsIC5tYXQtZGF0ZXBpY2tlci1jb250ZW50Lm1hdC13YXJuW19uZ2NvbnRlbnQtJUNPTVAlXSAgIFtkaXI9cnRsXVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWNhbGVuZGFyLWJvZHktY29tcGFyaXNvbi1icmlkZ2UtZW5kW19uZ2NvbnRlbnQtJUNPTVAlXTo6YmVmb3Jle2JhY2tncm91bmQ6bGluZWFyLWdyYWRpZW50KHRvIHJpZ2h0LCByZ2JhKDI0NCwgNjcsIDU0LCAwLjIpIDUwJSwgcmdiYSgyNDksIDE3MSwgMCwgMC4yKSA1MCUpfS5tYXQtZGF0ZXBpY2tlci1jb250ZW50Lm1hdC13YXJuW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtY2FsZW5kYXItYm9keS1jb21wYXJpc29uLWJyaWRnZS1lbmRbX25nY29udGVudC0lQ09NUCVdOjpiZWZvcmUsIC5tYXQtZGF0ZXBpY2tlci1jb250ZW50Lm1hdC13YXJuW19uZ2NvbnRlbnQtJUNPTVAlXSAgIFtkaXI9cnRsXVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWNhbGVuZGFyLWJvZHktY29tcGFyaXNvbi1icmlkZ2Utc3RhcnRbX25nY29udGVudC0lQ09NUCVdOjpiZWZvcmV7YmFja2dyb3VuZDpsaW5lYXItZ3JhZGllbnQodG8gbGVmdCwgcmdiYSgyNDQsIDY3LCA1NCwgMC4yKSA1MCUsIHJnYmEoMjQ5LCAxNzEsIDAsIDAuMikgNTAlKX0ubWF0LWRhdGVwaWNrZXItY29udGVudC5tYXQtd2Fybltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWNhbGVuZGFyLWJvZHktaW4tcmFuZ2VbX25nY29udGVudC0lQ09NUCVdID4gLm1hdC1jYWxlbmRhci1ib2R5LWNvbXBhcmlzb24taWRlbnRpY2FsW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1kYXRlcGlja2VyLWNvbnRlbnQubWF0LXdhcm5bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1jYWxlbmRhci1ib2R5LWluLWNvbXBhcmlzb24tcmFuZ2UubWF0LWNhbGVuZGFyLWJvZHktaW4tcmFuZ2VbX25nY29udGVudC0lQ09NUCVdOjphZnRlcntiYWNrZ3JvdW5kOiNhOGRhYjV9Lm1hdC1kYXRlcGlja2VyLWNvbnRlbnQubWF0LXdhcm5bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1jYWxlbmRhci1ib2R5LWNvbXBhcmlzb24taWRlbnRpY2FsLm1hdC1jYWxlbmRhci1ib2R5LXNlbGVjdGVkW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1kYXRlcGlja2VyLWNvbnRlbnQubWF0LXdhcm5bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1jYWxlbmRhci1ib2R5LWluLWNvbXBhcmlzb24tcmFuZ2VbX25nY29udGVudC0lQ09NUCVdID4gLm1hdC1jYWxlbmRhci1ib2R5LXNlbGVjdGVkW19uZ2NvbnRlbnQtJUNPTVAlXXtiYWNrZ3JvdW5kOiM0NmEzNWV9Lm1hdC1kYXRlcGlja2VyLWNvbnRlbnQubWF0LXdhcm5bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1jYWxlbmRhci1ib2R5LXNlbGVjdGVkW19uZ2NvbnRlbnQtJUNPTVAlXXtiYWNrZ3JvdW5kLWNvbG9yOiNmNDQzMzY7Y29sb3I6I2ZmZn0ubWF0LWRhdGVwaWNrZXItY29udGVudC5tYXQtd2Fybltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWNhbGVuZGFyLWJvZHktZGlzYWJsZWRbX25nY29udGVudC0lQ09NUCVdID4gLm1hdC1jYWxlbmRhci1ib2R5LXNlbGVjdGVkW19uZ2NvbnRlbnQtJUNPTVAlXXtiYWNrZ3JvdW5kLWNvbG9yOnJnYmEoMjQ0LDY3LDU0LC40KX0ubWF0LWRhdGVwaWNrZXItY29udGVudC5tYXQtd2Fybltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWNhbGVuZGFyLWJvZHktdG9kYXkubWF0LWNhbGVuZGFyLWJvZHktc2VsZWN0ZWRbX25nY29udGVudC0lQ09NUCVde2JveC1zaGFkb3c6aW5zZXQgMCAwIDAgMXB4ICNmZmZ9Lm1hdC1kYXRlcGlja2VyLWNvbnRlbnQtdG91Y2hbX25nY29udGVudC0lQ09NUCVde2JveC1zaGFkb3c6MHB4IDBweCAwcHggMHB4IHJnYmEoMCwgMCwgMCwgMC4yKSwwcHggMHB4IDBweCAwcHggcmdiYSgwLCAwLCAwLCAwLjE0KSwwcHggMHB4IDBweCAwcHggcmdiYSgwLCAwLCAwLCAwLjEyKX0ubWF0LWRhdGVwaWNrZXItdG9nZ2xlLWFjdGl2ZVtfbmdjb250ZW50LSVDT01QJV17Y29sb3I6I2Y1N2MwMH0ubWF0LWRhdGVwaWNrZXItdG9nZ2xlLWFjdGl2ZS5tYXQtYWNjZW50W19uZ2NvbnRlbnQtJUNPTVAlXXtjb2xvcjojZmY5ODAwfS5tYXQtZGF0ZXBpY2tlci10b2dnbGUtYWN0aXZlLm1hdC13YXJuW19uZ2NvbnRlbnQtJUNPTVAlXXtjb2xvcjojZjQ0MzM2fS5tYXQtZGF0ZS1yYW5nZS1pbnB1dC1pbm5lcltkaXNhYmxlZF1bX25nY29udGVudC0lQ09NUCVde2NvbG9yOiM3NTc1NzV9Lm1hdC1kaWFsb2ctY29udGFpbmVyW19uZ2NvbnRlbnQtJUNPTVAlXXtib3gtc2hhZG93OjBweCAxMXB4IDE1cHggLTdweCByZ2JhKDAsIDAsIDAsIDAuMiksMHB4IDI0cHggMzhweCAzcHggcmdiYSgwLCAwLCAwLCAwLjE0KSwwcHggOXB4IDQ2cHggOHB4IHJnYmEoMCwgMCwgMCwgMC4xMik7YmFja2dyb3VuZDojZmZmO2NvbG9yOiMyMTIxMjF9Lm1hdC1kaXZpZGVyW19uZ2NvbnRlbnQtJUNPTVAlXXtib3JkZXItdG9wLWNvbG9yOnJnYmEoMCwwLDAsLjEyKX0ubWF0LWRpdmlkZXItdmVydGljYWxbX25nY29udGVudC0lQ09NUCVde2JvcmRlci1yaWdodC1jb2xvcjpyZ2JhKDAsMCwwLC4xMil9Lm1hdC1leHBhbnNpb24tcGFuZWxbX25nY29udGVudC0lQ09NUCVde2JhY2tncm91bmQ6I2ZmZjtjb2xvcjojMjEyMTIxfS5tYXQtZXhwYW5zaW9uLXBhbmVsW19uZ2NvbnRlbnQtJUNPTVAlXTpub3QoW2NsYXNzKj1tYXQtZWxldmF0aW9uLXpdKXtib3gtc2hhZG93OjBweCAzcHggMXB4IC0ycHggcmdiYSgwLCAwLCAwLCAwLjIpLDBweCAycHggMnB4IDBweCByZ2JhKDAsIDAsIDAsIDAuMTQpLDBweCAxcHggNXB4IDBweCByZ2JhKDAsIDAsIDAsIDAuMTIpfS5tYXQtYWN0aW9uLXJvd1tfbmdjb250ZW50LSVDT01QJV17Ym9yZGVyLXRvcC1jb2xvcjpyZ2JhKDAsMCwwLC4xMil9Lm1hdC1leHBhbnNpb24tcGFuZWxbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1leHBhbnNpb24tcGFuZWwtaGVhZGVyLmNkay1rZXlib2FyZC1mb2N1c2VkW19uZ2NvbnRlbnQtJUNPTVAlXTpub3QoW2FyaWEtZGlzYWJsZWQ9dHJ1ZV0pLCAubWF0LWV4cGFuc2lvbi1wYW5lbFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWV4cGFuc2lvbi1wYW5lbC1oZWFkZXIuY2RrLXByb2dyYW0tZm9jdXNlZFtfbmdjb250ZW50LSVDT01QJV06bm90KFthcmlhLWRpc2FibGVkPXRydWVdKSwgLm1hdC1leHBhbnNpb24tcGFuZWxbX25nY29udGVudC0lQ09NUCVdOm5vdCgubWF0LWV4cGFuZGVkKSAgIC5tYXQtZXhwYW5zaW9uLXBhbmVsLWhlYWRlcltfbmdjb250ZW50LSVDT01QJV06aG92ZXI6bm90KFthcmlhLWRpc2FibGVkPXRydWVdKXtiYWNrZ3JvdW5kOnJnYmEoMCwwLDAsLjA0KX1AbWVkaWEoaG92ZXI6IG5vbmUpey5tYXQtZXhwYW5zaW9uLXBhbmVsW19uZ2NvbnRlbnQtJUNPTVAlXTpub3QoLm1hdC1leHBhbmRlZCk6bm90KFthcmlhLWRpc2FibGVkPXRydWVdKSAgIC5tYXQtZXhwYW5zaW9uLXBhbmVsLWhlYWRlcltfbmdjb250ZW50LSVDT01QJV06aG92ZXJ7YmFja2dyb3VuZDojZmZmfX0ubWF0LWV4cGFuc2lvbi1wYW5lbC1oZWFkZXItdGl0bGVbX25nY29udGVudC0lQ09NUCVde2NvbG9yOiMyMTIxMjF9Lm1hdC1leHBhbnNpb24tcGFuZWwtaGVhZGVyLWRlc2NyaXB0aW9uW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1leHBhbnNpb24taW5kaWNhdG9yW19uZ2NvbnRlbnQtJUNPTVAlXTo6YWZ0ZXJ7Y29sb3I6IzYxNjE2MX0ubWF0LWV4cGFuc2lvbi1wYW5lbC1oZWFkZXJbYXJpYS1kaXNhYmxlZD10cnVlXVtfbmdjb250ZW50LSVDT01QJV17Y29sb3I6cmdiYSgwLDAsMCwuMjYpfS5tYXQtZXhwYW5zaW9uLXBhbmVsLWhlYWRlclthcmlhLWRpc2FibGVkPXRydWVdW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZXhwYW5zaW9uLXBhbmVsLWhlYWRlci10aXRsZVtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtZXhwYW5zaW9uLXBhbmVsLWhlYWRlclthcmlhLWRpc2FibGVkPXRydWVdW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZXhwYW5zaW9uLXBhbmVsLWhlYWRlci1kZXNjcmlwdGlvbltfbmdjb250ZW50LSVDT01QJV17Y29sb3I6aW5oZXJpdH0ubWF0LWV4cGFuc2lvbi1wYW5lbC1oZWFkZXJbX25nY29udGVudC0lQ09NUCVde2hlaWdodDo0OHB4fS5tYXQtZXhwYW5zaW9uLXBhbmVsLWhlYWRlci5tYXQtZXhwYW5kZWRbX25nY29udGVudC0lQ09NUCVde2hlaWdodDo2NHB4fS5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17Y29sb3I6cmdiYSg5Nyw5Nyw5NywuNil9Lm1hdC1oaW50W19uZ2NvbnRlbnQtJUNPTVAlXXtjb2xvcjpyZ2JhKDk3LDk3LDk3LC42KX0ubWF0LWZvcm0tZmllbGQubWF0LWZvY3VzZWRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXtjb2xvcjojZjU3YzAwfS5tYXQtZm9ybS1maWVsZC5tYXQtZm9jdXNlZFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWwubWF0LWFjY2VudFtfbmdjb250ZW50LSVDT01QJV17Y29sb3I6I2ZmOTgwMH0ubWF0LWZvcm0tZmllbGQubWF0LWZvY3VzZWRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsLm1hdC13YXJuW19uZ2NvbnRlbnQtJUNPTVAlXXtjb2xvcjojZjQ0MzM2fS5tYXQtZm9jdXNlZFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtcmVxdWlyZWQtbWFya2VyW19uZ2NvbnRlbnQtJUNPTVAlXXtjb2xvcjojZmY5ODAwfS5tYXQtZm9ybS1maWVsZC1yaXBwbGVbX25nY29udGVudC0lQ09NUCVde2JhY2tncm91bmQtY29sb3I6cmdiYSgwLDAsMCwuODcpfS5tYXQtZm9ybS1maWVsZC5tYXQtZm9jdXNlZFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtcmlwcGxlW19uZ2NvbnRlbnQtJUNPTVAlXXtiYWNrZ3JvdW5kLWNvbG9yOiNmNTdjMDB9Lm1hdC1mb3JtLWZpZWxkLm1hdC1mb2N1c2VkW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1yaXBwbGUubWF0LWFjY2VudFtfbmdjb250ZW50LSVDT01QJV17YmFja2dyb3VuZC1jb2xvcjojZmY5ODAwfS5tYXQtZm9ybS1maWVsZC5tYXQtZm9jdXNlZFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtcmlwcGxlLm1hdC13YXJuW19uZ2NvbnRlbnQtJUNPTVAlXXtiYWNrZ3JvdW5kLWNvbG9yOiNmNDQzMzZ9Lm1hdC1mb3JtLWZpZWxkLXR5cGUtbWF0LW5hdGl2ZS1zZWxlY3QubWF0LWZvY3VzZWRbX25nY29udGVudC0lQ09NUCVdOm5vdCgubWF0LWZvcm0tZmllbGQtaW52YWxpZCkgICAubWF0LWZvcm0tZmllbGQtaW5maXhbX25nY29udGVudC0lQ09NUCVdOjphZnRlcntjb2xvcjojZjU3YzAwfS5tYXQtZm9ybS1maWVsZC10eXBlLW1hdC1uYXRpdmUtc2VsZWN0Lm1hdC1mb2N1c2VkW19uZ2NvbnRlbnQtJUNPTVAlXTpub3QoLm1hdC1mb3JtLWZpZWxkLWludmFsaWQpLm1hdC1hY2NlbnQgICAubWF0LWZvcm0tZmllbGQtaW5maXhbX25nY29udGVudC0lQ09NUCVdOjphZnRlcntjb2xvcjojZmY5ODAwfS5tYXQtZm9ybS1maWVsZC10eXBlLW1hdC1uYXRpdmUtc2VsZWN0Lm1hdC1mb2N1c2VkW19uZ2NvbnRlbnQtJUNPTVAlXTpub3QoLm1hdC1mb3JtLWZpZWxkLWludmFsaWQpLm1hdC13YXJuICAgLm1hdC1mb3JtLWZpZWxkLWluZml4W19uZ2NvbnRlbnQtJUNPTVAlXTo6YWZ0ZXJ7Y29sb3I6I2Y0NDMzNn0ubWF0LWZvcm0tZmllbGQubWF0LWZvcm0tZmllbGQtaW52YWxpZFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVde2NvbG9yOiNmNDQzMzZ9Lm1hdC1mb3JtLWZpZWxkLm1hdC1mb3JtLWZpZWxkLWludmFsaWRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsLm1hdC1hY2NlbnRbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWZvcm0tZmllbGQubWF0LWZvcm0tZmllbGQtaW52YWxpZFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLXJlcXVpcmVkLW1hcmtlcltfbmdjb250ZW50LSVDT01QJV17Y29sb3I6I2Y0NDMzNn0ubWF0LWZvcm0tZmllbGQubWF0LWZvcm0tZmllbGQtaW52YWxpZFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtcmlwcGxlW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1mb3JtLWZpZWxkLm1hdC1mb3JtLWZpZWxkLWludmFsaWRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLXJpcHBsZS5tYXQtYWNjZW50W19uZ2NvbnRlbnQtJUNPTVAlXXtiYWNrZ3JvdW5kLWNvbG9yOiNmNDQzMzZ9Lm1hdC1lcnJvcltfbmdjb250ZW50LSVDT01QJV17Y29sb3I6I2Y0NDMzNn0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1sZWdhY3lbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXtjb2xvcjojNjE2MTYxfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWxlZ2FjeVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWhpbnRbX25nY29udGVudC0lQ09NUCVde2NvbG9yOiM2MTYxNjF9Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtbGVnYWN5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC11bmRlcmxpbmVbX25nY29udGVudC0lQ09NUCVde2JhY2tncm91bmQtY29sb3I6cmdiYSgwLDAsMCwuNDIpfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWxlZ2FjeS5tYXQtZm9ybS1maWVsZC1kaXNhYmxlZFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtdW5kZXJsaW5lW19uZ2NvbnRlbnQtJUNPTVAlXXtiYWNrZ3JvdW5kLWltYWdlOmxpbmVhci1ncmFkaWVudCh0byByaWdodCwgcmdiYSgwLCAwLCAwLCAwLjQyKSAwJSwgcmdiYSgwLCAwLCAwLCAwLjQyKSAzMyUsIHRyYW5zcGFyZW50IDAlKTtiYWNrZ3JvdW5kLXNpemU6NHB4IDEwMCU7YmFja2dyb3VuZC1yZXBlYXQ6cmVwZWF0LXh9Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2Utc3RhbmRhcmRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLXVuZGVybGluZVtfbmdjb250ZW50LSVDT01QJV17YmFja2dyb3VuZC1jb2xvcjpyZ2JhKDAsMCwwLC40Mil9Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2Utc3RhbmRhcmQubWF0LWZvcm0tZmllbGQtZGlzYWJsZWRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLXVuZGVybGluZVtfbmdjb250ZW50LSVDT01QJV17YmFja2dyb3VuZC1pbWFnZTpsaW5lYXItZ3JhZGllbnQodG8gcmlnaHQsIHJnYmEoMCwgMCwgMCwgMC40MikgMCUsIHJnYmEoMCwgMCwgMCwgMC40MikgMzMlLCB0cmFuc3BhcmVudCAwJSk7YmFja2dyb3VuZC1zaXplOjRweCAxMDAlO2JhY2tncm91bmQtcmVwZWF0OnJlcGVhdC14fS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWZpbGxbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWZsZXhbX25nY29udGVudC0lQ09NUCVde2JhY2tncm91bmQtY29sb3I6cmdiYSgwLDAsMCwuMDQpfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWZpbGwubWF0LWZvcm0tZmllbGQtZGlzYWJsZWRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWZsZXhbX25nY29udGVudC0lQ09NUCVde2JhY2tncm91bmQtY29sb3I6cmdiYSgwLDAsMCwuMDIpfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWZpbGxbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLXVuZGVybGluZVtfbmdjb250ZW50LSVDT01QJV06OmJlZm9yZXtiYWNrZ3JvdW5kLWNvbG9yOnJnYmEoMCwwLDAsLjQyKX0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1maWxsLm1hdC1mb3JtLWZpZWxkLWRpc2FibGVkW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17Y29sb3I6Izc1NzU3NX0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1maWxsLm1hdC1mb3JtLWZpZWxkLWRpc2FibGVkW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC11bmRlcmxpbmVbX25nY29udGVudC0lQ09NUCVdOjpiZWZvcmV7YmFja2dyb3VuZC1jb2xvcjp0cmFuc3BhcmVudH0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1vdXRsaW5lW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1vdXRsaW5lW19uZ2NvbnRlbnQtJUNPTVAlXXtjb2xvcjpyZ2JhKDAsMCwwLC4xMil9Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2Utb3V0bGluZVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtb3V0bGluZS10aGlja1tfbmdjb250ZW50LSVDT01QJV17Y29sb3I6cmdiYSgwLDAsMCwuODcpfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLW91dGxpbmUubWF0LWZvY3VzZWRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLW91dGxpbmUtdGhpY2tbX25nY29udGVudC0lQ09NUCVde2NvbG9yOiNmNTdjMDB9Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2Utb3V0bGluZS5tYXQtZm9jdXNlZC5tYXQtYWNjZW50W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1vdXRsaW5lLXRoaWNrW19uZ2NvbnRlbnQtJUNPTVAlXXtjb2xvcjojZmY5ODAwfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLW91dGxpbmUubWF0LWZvY3VzZWQubWF0LXdhcm5bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLW91dGxpbmUtdGhpY2tbX25nY29udGVudC0lQ09NUCVde2NvbG9yOiNmNDQzMzZ9Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2Utb3V0bGluZS5tYXQtZm9ybS1maWVsZC1pbnZhbGlkLm1hdC1mb3JtLWZpZWxkLWludmFsaWRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLW91dGxpbmUtdGhpY2tbX25nY29udGVudC0lQ09NUCVde2NvbG9yOiNmNDQzMzZ9Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2Utb3V0bGluZS5tYXQtZm9ybS1maWVsZC1kaXNhYmxlZFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVde2NvbG9yOiM3NTc1NzV9Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2Utb3V0bGluZS5tYXQtZm9ybS1maWVsZC1kaXNhYmxlZFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtb3V0bGluZVtfbmdjb250ZW50LSVDT01QJV17Y29sb3I6cmdiYSgwLDAsMCwuMDYpfS5tYXQtaWNvbi5tYXQtcHJpbWFyeVtfbmdjb250ZW50LSVDT01QJV17Y29sb3I6I2Y1N2MwMH0ubWF0LWljb24ubWF0LWFjY2VudFtfbmdjb250ZW50LSVDT01QJV17Y29sb3I6I2ZmOTgwMH0ubWF0LWljb24ubWF0LXdhcm5bX25nY29udGVudC0lQ09NUCVde2NvbG9yOiNmNDQzMzZ9Lm1hdC1mb3JtLWZpZWxkLXR5cGUtbWF0LW5hdGl2ZS1zZWxlY3RbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWluZml4W19uZ2NvbnRlbnQtJUNPTVAlXTo6YWZ0ZXJ7Y29sb3I6IzYxNjE2MX0ubWF0LWlucHV0LWVsZW1lbnRbX25nY29udGVudC0lQ09NUCVdOmRpc2FibGVkLCAubWF0LWZvcm0tZmllbGQtdHlwZS1tYXQtbmF0aXZlLXNlbGVjdC5tYXQtZm9ybS1maWVsZC1kaXNhYmxlZFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtaW5maXhbX25nY29udGVudC0lQ09NUCVdOjphZnRlcntjb2xvcjojNzU3NTc1fS5tYXQtaW5wdXQtZWxlbWVudFtfbmdjb250ZW50LSVDT01QJV17Y2FyZXQtY29sb3I6I2Y1N2MwMH0ubWF0LWlucHV0LWVsZW1lbnRbX25nY29udGVudC0lQ09NUCVdOjpwbGFjZWhvbGRlcntjb2xvcjpyZ2JhKDk3LDk3LDk3LC40Mil9Lm1hdC1pbnB1dC1lbGVtZW50W19uZ2NvbnRlbnQtJUNPTVAlXTo6LW1vei1wbGFjZWhvbGRlcntjb2xvcjpyZ2JhKDk3LDk3LDk3LC40Mil9Lm1hdC1pbnB1dC1lbGVtZW50W19uZ2NvbnRlbnQtJUNPTVAlXTo6LXdlYmtpdC1pbnB1dC1wbGFjZWhvbGRlcntjb2xvcjpyZ2JhKDk3LDk3LDk3LC40Mil9Lm1hdC1pbnB1dC1lbGVtZW50W19uZ2NvbnRlbnQtJUNPTVAlXTotbXMtaW5wdXQtcGxhY2Vob2xkZXJ7Y29sb3I6cmdiYSg5Nyw5Nyw5NywuNDIpfS5tYXQtZm9ybS1maWVsZC5tYXQtYWNjZW50W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaW5wdXQtZWxlbWVudFtfbmdjb250ZW50LSVDT01QJV17Y2FyZXQtY29sb3I6I2ZmOTgwMH0ubWF0LWZvcm0tZmllbGQubWF0LXdhcm5bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pbnB1dC1lbGVtZW50W19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1mb3JtLWZpZWxkLWludmFsaWRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pbnB1dC1lbGVtZW50W19uZ2NvbnRlbnQtJUNPTVAlXXtjYXJldC1jb2xvcjojZjQ0MzM2fS5tYXQtZm9ybS1maWVsZC10eXBlLW1hdC1uYXRpdmUtc2VsZWN0Lm1hdC1mb3JtLWZpZWxkLWludmFsaWRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWluZml4W19uZ2NvbnRlbnQtJUNPTVAlXTo6YWZ0ZXJ7Y29sb3I6I2Y0NDMzNn0ubWF0LWxpc3QtYmFzZVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpc3QtaXRlbVtfbmdjb250ZW50LSVDT01QJV17Y29sb3I6IzIxMjEyMX0ubWF0LWxpc3QtYmFzZVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpc3Qtb3B0aW9uW19uZ2NvbnRlbnQtJUNPTVAlXXtjb2xvcjojMjEyMTIxfS5tYXQtbGlzdC1iYXNlW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtc3ViaGVhZGVyW19uZ2NvbnRlbnQtJUNPTVAlXXtjb2xvcjojNjE2MTYxfS5tYXQtbGlzdC1pdGVtLWRpc2FibGVkW19uZ2NvbnRlbnQtJUNPTVAlXXtiYWNrZ3JvdW5kLWNvbG9yOiNlZWV9Lm1hdC1saXN0LW9wdGlvbltfbmdjb250ZW50LSVDT01QJV06aG92ZXIsIC5tYXQtbGlzdC1vcHRpb25bX25nY29udGVudC0lQ09NUCVdOmZvY3VzLCAubWF0LW5hdi1saXN0W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGlzdC1pdGVtW19uZ2NvbnRlbnQtJUNPTVAlXTpob3ZlciwgLm1hdC1uYXYtbGlzdFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpc3QtaXRlbVtfbmdjb250ZW50LSVDT01QJV06Zm9jdXMsIC5tYXQtYWN0aW9uLWxpc3RbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saXN0LWl0ZW1bX25nY29udGVudC0lQ09NUCVdOmhvdmVyLCAubWF0LWFjdGlvbi1saXN0W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGlzdC1pdGVtW19uZ2NvbnRlbnQtJUNPTVAlXTpmb2N1c3tiYWNrZ3JvdW5kOnJnYmEoMCwwLDAsLjA0KX0ubWF0LWxpc3Qtc2luZ2xlLXNlbGVjdGVkLW9wdGlvbltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtbGlzdC1zaW5nbGUtc2VsZWN0ZWQtb3B0aW9uW19uZ2NvbnRlbnQtJUNPTVAlXTpob3ZlciwgLm1hdC1saXN0LXNpbmdsZS1zZWxlY3RlZC1vcHRpb25bX25nY29udGVudC0lQ09NUCVdOmZvY3Vze2JhY2tncm91bmQ6cmdiYSgwLDAsMCwuMTIpfS5tYXQtbWVudS1wYW5lbFtfbmdjb250ZW50LSVDT01QJV17YmFja2dyb3VuZDojZmZmfS5tYXQtbWVudS1wYW5lbFtfbmdjb250ZW50LSVDT01QJV06bm90KFtjbGFzcyo9bWF0LWVsZXZhdGlvbi16XSl7Ym94LXNoYWRvdzowcHggMnB4IDRweCAtMXB4IHJnYmEoMCwgMCwgMCwgMC4yKSwwcHggNHB4IDVweCAwcHggcmdiYSgwLCAwLCAwLCAwLjE0KSwwcHggMXB4IDEwcHggMHB4IHJnYmEoMCwgMCwgMCwgMC4xMil9Lm1hdC1tZW51LWl0ZW1bX25nY29udGVudC0lQ09NUCVde2JhY2tncm91bmQ6dHJhbnNwYXJlbnQ7Y29sb3I6IzIxMjEyMX0ubWF0LW1lbnUtaXRlbVtkaXNhYmxlZF1bX25nY29udGVudC0lQ09NUCVdLCAubWF0LW1lbnUtaXRlbVtkaXNhYmxlZF1bX25nY29udGVudC0lQ09NUCVdOjphZnRlcntjb2xvcjpyZ2JhKDAsMCwwLC4zOCl9Lm1hdC1tZW51LWl0ZW1bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pY29uLW5vLWNvbG9yW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1tZW51LWl0ZW0tc3VibWVudS10cmlnZ2VyW19uZ2NvbnRlbnQtJUNPTVAlXTo6YWZ0ZXJ7Y29sb3I6cmdiYSgwLDAsMCwuNTQpfS5tYXQtbWVudS1pdGVtW19uZ2NvbnRlbnQtJUNPTVAlXTpob3Zlcjpub3QoW2Rpc2FibGVkXSksIC5tYXQtbWVudS1pdGVtLmNkay1wcm9ncmFtLWZvY3VzZWRbX25nY29udGVudC0lQ09NUCVdOm5vdChbZGlzYWJsZWRdKSwgLm1hdC1tZW51LWl0ZW0uY2RrLWtleWJvYXJkLWZvY3VzZWRbX25nY29udGVudC0lQ09NUCVdOm5vdChbZGlzYWJsZWRdKSwgLm1hdC1tZW51LWl0ZW0taGlnaGxpZ2h0ZWRbX25nY29udGVudC0lQ09NUCVdOm5vdChbZGlzYWJsZWRdKXtiYWNrZ3JvdW5kOnJnYmEoMCwwLDAsLjA0KX0ubWF0LXBhZ2luYXRvcltfbmdjb250ZW50LSVDT01QJV17YmFja2dyb3VuZDojZmZmfS5tYXQtcGFnaW5hdG9yW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1wYWdpbmF0b3ItcGFnZS1zaXplW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtc2VsZWN0LXRyaWdnZXJbX25nY29udGVudC0lQ09NUCVde2NvbG9yOiM2MTYxNjF9Lm1hdC1wYWdpbmF0b3ItZGVjcmVtZW50W19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1wYWdpbmF0b3ItaW5jcmVtZW50W19uZ2NvbnRlbnQtJUNPTVAlXXtib3JkZXItdG9wOjJweCBzb2xpZCByZ2JhKDAsMCwwLC41NCk7Ym9yZGVyLXJpZ2h0OjJweCBzb2xpZCByZ2JhKDAsMCwwLC41NCl9Lm1hdC1wYWdpbmF0b3ItZmlyc3RbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXBhZ2luYXRvci1sYXN0W19uZ2NvbnRlbnQtJUNPTVAlXXtib3JkZXItdG9wOjJweCBzb2xpZCByZ2JhKDAsMCwwLC41NCl9Lm1hdC1pY29uLWJ1dHRvbltkaXNhYmxlZF1bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1wYWdpbmF0b3ItZGVjcmVtZW50W19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1pY29uLWJ1dHRvbltkaXNhYmxlZF1bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1wYWdpbmF0b3ItaW5jcmVtZW50W19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1pY29uLWJ1dHRvbltkaXNhYmxlZF1bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1wYWdpbmF0b3ItZmlyc3RbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWljb24tYnV0dG9uW2Rpc2FibGVkXVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXBhZ2luYXRvci1sYXN0W19uZ2NvbnRlbnQtJUNPTVAlXXtib3JkZXItY29sb3I6cmdiYSgwLDAsMCwuMzgpfS5tYXQtcGFnaW5hdG9yLWNvbnRhaW5lcltfbmdjb250ZW50LSVDT01QJV17bWluLWhlaWdodDo1NnB4fS5tYXQtcHJvZ3Jlc3MtYmFyLWJhY2tncm91bmRbX25nY29udGVudC0lQ09NUCVde2ZpbGw6I2ZmOTgwMH0ubWF0LXByb2dyZXNzLWJhci1idWZmZXJbX25nY29udGVudC0lQ09NUCVde2JhY2tncm91bmQtY29sb3I6I2ZmOTgwMH0ubWF0LXByb2dyZXNzLWJhci1maWxsW19uZ2NvbnRlbnQtJUNPTVAlXTo6YWZ0ZXJ7YmFja2dyb3VuZC1jb2xvcjojZjU3YzAwfS5tYXQtcHJvZ3Jlc3MtYmFyLm1hdC1hY2NlbnRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1wcm9ncmVzcy1iYXItYmFja2dyb3VuZFtfbmdjb250ZW50LSVDT01QJV17ZmlsbDojZmY5ODAwfS5tYXQtcHJvZ3Jlc3MtYmFyLm1hdC1hY2NlbnRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1wcm9ncmVzcy1iYXItYnVmZmVyW19uZ2NvbnRlbnQtJUNPTVAlXXtiYWNrZ3JvdW5kLWNvbG9yOiNmZjk4MDB9Lm1hdC1wcm9ncmVzcy1iYXIubWF0LWFjY2VudFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXByb2dyZXNzLWJhci1maWxsW19uZ2NvbnRlbnQtJUNPTVAlXTo6YWZ0ZXJ7YmFja2dyb3VuZC1jb2xvcjojZmY5ODAwfS5tYXQtcHJvZ3Jlc3MtYmFyLm1hdC13YXJuW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtcHJvZ3Jlc3MtYmFyLWJhY2tncm91bmRbX25nY29udGVudC0lQ09NUCVde2ZpbGw6I2ZmY2RkMn0ubWF0LXByb2dyZXNzLWJhci5tYXQtd2Fybltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXByb2dyZXNzLWJhci1idWZmZXJbX25nY29udGVudC0lQ09NUCVde2JhY2tncm91bmQtY29sb3I6I2ZmY2RkMn0ubWF0LXByb2dyZXNzLWJhci5tYXQtd2Fybltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXByb2dyZXNzLWJhci1maWxsW19uZ2NvbnRlbnQtJUNPTVAlXTo6YWZ0ZXJ7YmFja2dyb3VuZC1jb2xvcjojZjQ0MzM2fS5tYXQtcHJvZ3Jlc3Mtc3Bpbm5lcltfbmdjb250ZW50LSVDT01QJV0gICBjaXJjbGVbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXNwaW5uZXJbX25nY29udGVudC0lQ09NUCVdICAgY2lyY2xlW19uZ2NvbnRlbnQtJUNPTVAlXXtzdHJva2U6I2Y1N2MwMH0ubWF0LXByb2dyZXNzLXNwaW5uZXIubWF0LWFjY2VudFtfbmdjb250ZW50LSVDT01QJV0gICBjaXJjbGVbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXNwaW5uZXIubWF0LWFjY2VudFtfbmdjb250ZW50LSVDT01QJV0gICBjaXJjbGVbX25nY29udGVudC0lQ09NUCVde3N0cm9rZTojZmY5ODAwfS5tYXQtcHJvZ3Jlc3Mtc3Bpbm5lci5tYXQtd2Fybltfbmdjb250ZW50LSVDT01QJV0gICBjaXJjbGVbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXNwaW5uZXIubWF0LXdhcm5bX25nY29udGVudC0lQ09NUCVdICAgY2lyY2xlW19uZ2NvbnRlbnQtJUNPTVAlXXtzdHJva2U6I2Y0NDMzNn0ubWF0LXJhZGlvLW91dGVyLWNpcmNsZVtfbmdjb250ZW50LSVDT01QJV17Ym9yZGVyLWNvbG9yOiM2MTYxNjF9Lm1hdC1yYWRpby1idXR0b24ubWF0LXByaW1hcnkubWF0LXJhZGlvLWNoZWNrZWRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1yYWRpby1vdXRlci1jaXJjbGVbX25nY29udGVudC0lQ09NUCVde2JvcmRlci1jb2xvcjojZjU3YzAwfS5tYXQtcmFkaW8tYnV0dG9uLm1hdC1wcmltYXJ5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtcmFkaW8taW5uZXItY2lyY2xlW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1yYWRpby1idXR0b24ubWF0LXByaW1hcnlbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1yYWRpby1yaXBwbGVbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1yaXBwbGUtZWxlbWVudFtfbmdjb250ZW50LSVDT01QJV06bm90KC5tYXQtcmFkaW8tcGVyc2lzdGVudC1yaXBwbGUpLCAubWF0LXJhZGlvLWJ1dHRvbi5tYXQtcHJpbWFyeS5tYXQtcmFkaW8tY2hlY2tlZFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXJhZGlvLXBlcnNpc3RlbnQtcmlwcGxlW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1yYWRpby1idXR0b24ubWF0LXByaW1hcnlbX25nY29udGVudC0lQ09NUCVdOmFjdGl2ZSAgIC5tYXQtcmFkaW8tcGVyc2lzdGVudC1yaXBwbGVbX25nY29udGVudC0lQ09NUCVde2JhY2tncm91bmQtY29sb3I6I2Y1N2MwMH0ubWF0LXJhZGlvLWJ1dHRvbi5tYXQtYWNjZW50Lm1hdC1yYWRpby1jaGVja2VkW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtcmFkaW8tb3V0ZXItY2lyY2xlW19uZ2NvbnRlbnQtJUNPTVAlXXtib3JkZXItY29sb3I6I2ZmOTgwMH0ubWF0LXJhZGlvLWJ1dHRvbi5tYXQtYWNjZW50W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtcmFkaW8taW5uZXItY2lyY2xlW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1yYWRpby1idXR0b24ubWF0LWFjY2VudFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXJhZGlvLXJpcHBsZVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXJpcHBsZS1lbGVtZW50W19uZ2NvbnRlbnQtJUNPTVAlXTpub3QoLm1hdC1yYWRpby1wZXJzaXN0ZW50LXJpcHBsZSksIC5tYXQtcmFkaW8tYnV0dG9uLm1hdC1hY2NlbnQubWF0LXJhZGlvLWNoZWNrZWRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1yYWRpby1wZXJzaXN0ZW50LXJpcHBsZVtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtcmFkaW8tYnV0dG9uLm1hdC1hY2NlbnRbX25nY29udGVudC0lQ09NUCVdOmFjdGl2ZSAgIC5tYXQtcmFkaW8tcGVyc2lzdGVudC1yaXBwbGVbX25nY29udGVudC0lQ09NUCVde2JhY2tncm91bmQtY29sb3I6I2ZmOTgwMH0ubWF0LXJhZGlvLWJ1dHRvbi5tYXQtd2Fybi5tYXQtcmFkaW8tY2hlY2tlZFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXJhZGlvLW91dGVyLWNpcmNsZVtfbmdjb250ZW50LSVDT01QJV17Ym9yZGVyLWNvbG9yOiNmNDQzMzZ9Lm1hdC1yYWRpby1idXR0b24ubWF0LXdhcm5bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1yYWRpby1pbm5lci1jaXJjbGVbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXJhZGlvLWJ1dHRvbi5tYXQtd2Fybltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXJhZGlvLXJpcHBsZVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXJpcHBsZS1lbGVtZW50W19uZ2NvbnRlbnQtJUNPTVAlXTpub3QoLm1hdC1yYWRpby1wZXJzaXN0ZW50LXJpcHBsZSksIC5tYXQtcmFkaW8tYnV0dG9uLm1hdC13YXJuLm1hdC1yYWRpby1jaGVja2VkW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtcmFkaW8tcGVyc2lzdGVudC1yaXBwbGVbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXJhZGlvLWJ1dHRvbi5tYXQtd2Fybltfbmdjb250ZW50LSVDT01QJV06YWN0aXZlICAgLm1hdC1yYWRpby1wZXJzaXN0ZW50LXJpcHBsZVtfbmdjb250ZW50LSVDT01QJV17YmFja2dyb3VuZC1jb2xvcjojZjQ0MzM2fS5tYXQtcmFkaW8tYnV0dG9uLm1hdC1yYWRpby1kaXNhYmxlZC5tYXQtcmFkaW8tY2hlY2tlZFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXJhZGlvLW91dGVyLWNpcmNsZVtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtcmFkaW8tYnV0dG9uLm1hdC1yYWRpby1kaXNhYmxlZFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXJhZGlvLW91dGVyLWNpcmNsZVtfbmdjb250ZW50LSVDT01QJV17Ym9yZGVyLWNvbG9yOnJnYmEoMCwwLDAsLjM4KX0ubWF0LXJhZGlvLWJ1dHRvbi5tYXQtcmFkaW8tZGlzYWJsZWRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1yYWRpby1yaXBwbGVbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1yaXBwbGUtZWxlbWVudFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtcmFkaW8tYnV0dG9uLm1hdC1yYWRpby1kaXNhYmxlZFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXJhZGlvLWlubmVyLWNpcmNsZVtfbmdjb250ZW50LSVDT01QJV17YmFja2dyb3VuZC1jb2xvcjpyZ2JhKDAsMCwwLC4zOCl9Lm1hdC1yYWRpby1idXR0b24ubWF0LXJhZGlvLWRpc2FibGVkW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtcmFkaW8tbGFiZWwtY29udGVudFtfbmdjb250ZW50LSVDT01QJV17Y29sb3I6cmdiYSgwLDAsMCwuMzgpfS5tYXQtcmFkaW8tYnV0dG9uW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtcmlwcGxlLWVsZW1lbnRbX25nY29udGVudC0lQ09NUCVde2JhY2tncm91bmQtY29sb3I6IzAwMH0ubWF0LXNlbGVjdC12YWx1ZVtfbmdjb250ZW50LSVDT01QJV17Y29sb3I6IzIxMjEyMX0ubWF0LXNlbGVjdC1wbGFjZWhvbGRlcltfbmdjb250ZW50LSVDT01QJV17Y29sb3I6cmdiYSg5Nyw5Nyw5NywuNDIpfS5tYXQtc2VsZWN0LWRpc2FibGVkW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtc2VsZWN0LXZhbHVlW19uZ2NvbnRlbnQtJUNPTVAlXXtjb2xvcjojNzU3NTc1fS5tYXQtc2VsZWN0LWFycm93W19uZ2NvbnRlbnQtJUNPTVAlXXtjb2xvcjojNjE2MTYxfS5tYXQtc2VsZWN0LXBhbmVsW19uZ2NvbnRlbnQtJUNPTVAlXXtiYWNrZ3JvdW5kOiNmZmZ9Lm1hdC1zZWxlY3QtcGFuZWxbX25nY29udGVudC0lQ09NUCVdOm5vdChbY2xhc3MqPW1hdC1lbGV2YXRpb24tel0pe2JveC1zaGFkb3c6MHB4IDJweCA0cHggLTFweCByZ2JhKDAsIDAsIDAsIDAuMiksMHB4IDRweCA1cHggMHB4IHJnYmEoMCwgMCwgMCwgMC4xNCksMHB4IDFweCAxMHB4IDBweCByZ2JhKDAsIDAsIDAsIDAuMTIpfS5tYXQtc2VsZWN0LXBhbmVsW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtb3B0aW9uLm1hdC1zZWxlY3RlZFtfbmdjb250ZW50LSVDT01QJV06bm90KC5tYXQtb3B0aW9uLW11bHRpcGxlKXtiYWNrZ3JvdW5kOnJnYmEoMCwwLDAsLjEyKX0ubWF0LWZvcm0tZmllbGQubWF0LWZvY3VzZWQubWF0LXByaW1hcnlbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1zZWxlY3QtYXJyb3dbX25nY29udGVudC0lQ09NUCVde2NvbG9yOiNmNTdjMDB9Lm1hdC1mb3JtLWZpZWxkLm1hdC1mb2N1c2VkLm1hdC1hY2NlbnRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1zZWxlY3QtYXJyb3dbX25nY29udGVudC0lQ09NUCVde2NvbG9yOiNmZjk4MDB9Lm1hdC1mb3JtLWZpZWxkLm1hdC1mb2N1c2VkLm1hdC13YXJuW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtc2VsZWN0LWFycm93W19uZ2NvbnRlbnQtJUNPTVAlXXtjb2xvcjojZjQ0MzM2fS5tYXQtZm9ybS1maWVsZFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXNlbGVjdC5tYXQtc2VsZWN0LWludmFsaWRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1zZWxlY3QtYXJyb3dbX25nY29udGVudC0lQ09NUCVde2NvbG9yOiNmNDQzMzZ9Lm1hdC1mb3JtLWZpZWxkW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtc2VsZWN0Lm1hdC1zZWxlY3QtZGlzYWJsZWRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1zZWxlY3QtYXJyb3dbX25nY29udGVudC0lQ09NUCVde2NvbG9yOiM3NTc1NzV9Lm1hdC1kcmF3ZXItY29udGFpbmVyW19uZ2NvbnRlbnQtJUNPTVAlXXtiYWNrZ3JvdW5kLWNvbG9yOiNmYWZhZmE7Y29sb3I6IzIxMjEyMX0ubWF0LWRyYXdlcltfbmdjb250ZW50LSVDT01QJV17YmFja2dyb3VuZC1jb2xvcjojZmZmO2NvbG9yOiMyMTIxMjF9Lm1hdC1kcmF3ZXIubWF0LWRyYXdlci1wdXNoW19uZ2NvbnRlbnQtJUNPTVAlXXtiYWNrZ3JvdW5kLWNvbG9yOiNmZmZ9Lm1hdC1kcmF3ZXJbX25nY29udGVudC0lQ09NUCVdOm5vdCgubWF0LWRyYXdlci1zaWRlKXtib3gtc2hhZG93OjBweCA4cHggMTBweCAtNXB4IHJnYmEoMCwgMCwgMCwgMC4yKSwwcHggMTZweCAyNHB4IDJweCByZ2JhKDAsIDAsIDAsIDAuMTQpLDBweCA2cHggMzBweCA1cHggcmdiYSgwLCAwLCAwLCAwLjEyKX0ubWF0LWRyYXdlci1zaWRlW19uZ2NvbnRlbnQtJUNPTVAlXXtib3JkZXItcmlnaHQ6c29saWQgMXB4IHJnYmEoMCwwLDAsLjEyKX0ubWF0LWRyYXdlci1zaWRlLm1hdC1kcmF3ZXItZW5kW19uZ2NvbnRlbnQtJUNPTVAlXXtib3JkZXItbGVmdDpzb2xpZCAxcHggcmdiYSgwLDAsMCwuMTIpO2JvcmRlci1yaWdodDpub25lfVtkaXI9cnRsXVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWRyYXdlci1zaWRlW19uZ2NvbnRlbnQtJUNPTVAlXXtib3JkZXItbGVmdDpzb2xpZCAxcHggcmdiYSgwLDAsMCwuMTIpO2JvcmRlci1yaWdodDpub25lfVtkaXI9cnRsXVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWRyYXdlci1zaWRlLm1hdC1kcmF3ZXItZW5kW19uZ2NvbnRlbnQtJUNPTVAlXXtib3JkZXItbGVmdDpub25lO2JvcmRlci1yaWdodDpzb2xpZCAxcHggcmdiYSgwLDAsMCwuMTIpfS5tYXQtZHJhd2VyLWJhY2tkcm9wLm1hdC1kcmF3ZXItc2hvd25bX25nY29udGVudC0lQ09NUCVde2JhY2tncm91bmQtY29sb3I6cmdiYSgwLDAsMCwuNil9Lm1hdC1zbGlkZS10b2dnbGUubWF0LWNoZWNrZWRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1zbGlkZS10b2dnbGUtdGh1bWJbX25nY29udGVudC0lQ09NUCVde2JhY2tncm91bmQtY29sb3I6I2ZmOTgwMH0ubWF0LXNsaWRlLXRvZ2dsZS5tYXQtY2hlY2tlZFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXNsaWRlLXRvZ2dsZS1iYXJbX25nY29udGVudC0lQ09NUCVde2JhY2tncm91bmQtY29sb3I6cmdiYSgyNTUsMTUyLDAsLjU0KX0ubWF0LXNsaWRlLXRvZ2dsZS5tYXQtY2hlY2tlZFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXJpcHBsZS1lbGVtZW50W19uZ2NvbnRlbnQtJUNPTVAlXXtiYWNrZ3JvdW5kLWNvbG9yOiNmZjk4MDB9Lm1hdC1zbGlkZS10b2dnbGUubWF0LXByaW1hcnkubWF0LWNoZWNrZWRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1zbGlkZS10b2dnbGUtdGh1bWJbX25nY29udGVudC0lQ09NUCVde2JhY2tncm91bmQtY29sb3I6I2Y1N2MwMH0ubWF0LXNsaWRlLXRvZ2dsZS5tYXQtcHJpbWFyeS5tYXQtY2hlY2tlZFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXNsaWRlLXRvZ2dsZS1iYXJbX25nY29udGVudC0lQ09NUCVde2JhY2tncm91bmQtY29sb3I6cmdiYSgyNDUsMTI0LDAsLjU0KX0ubWF0LXNsaWRlLXRvZ2dsZS5tYXQtcHJpbWFyeS5tYXQtY2hlY2tlZFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXJpcHBsZS1lbGVtZW50W19uZ2NvbnRlbnQtJUNPTVAlXXtiYWNrZ3JvdW5kLWNvbG9yOiNmNTdjMDB9Lm1hdC1zbGlkZS10b2dnbGUubWF0LXdhcm4ubWF0LWNoZWNrZWRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1zbGlkZS10b2dnbGUtdGh1bWJbX25nY29udGVudC0lQ09NUCVde2JhY2tncm91bmQtY29sb3I6I2Y0NDMzNn0ubWF0LXNsaWRlLXRvZ2dsZS5tYXQtd2Fybi5tYXQtY2hlY2tlZFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXNsaWRlLXRvZ2dsZS1iYXJbX25nY29udGVudC0lQ09NUCVde2JhY2tncm91bmQtY29sb3I6cmdiYSgyNDQsNjcsNTQsLjU0KX0ubWF0LXNsaWRlLXRvZ2dsZS5tYXQtd2Fybi5tYXQtY2hlY2tlZFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXJpcHBsZS1lbGVtZW50W19uZ2NvbnRlbnQtJUNPTVAlXXtiYWNrZ3JvdW5kLWNvbG9yOiNmNDQzMzZ9Lm1hdC1zbGlkZS10b2dnbGVbX25nY29udGVudC0lQ09NUCVdOm5vdCgubWF0LWNoZWNrZWQpICAgLm1hdC1yaXBwbGUtZWxlbWVudFtfbmdjb250ZW50LSVDT01QJV17YmFja2dyb3VuZC1jb2xvcjojMDAwfS5tYXQtc2xpZGUtdG9nZ2xlLXRodW1iW19uZ2NvbnRlbnQtJUNPTVAlXXtib3gtc2hhZG93OjBweCAycHggMXB4IC0xcHggcmdiYSgwLCAwLCAwLCAwLjIpLDBweCAxcHggMXB4IDBweCByZ2JhKDAsIDAsIDAsIDAuMTQpLDBweCAxcHggM3B4IDBweCByZ2JhKDAsIDAsIDAsIDAuMTIpO2JhY2tncm91bmQtY29sb3I6I2ZhZmFmYX0ubWF0LXNsaWRlLXRvZ2dsZS1iYXJbX25nY29udGVudC0lQ09NUCVde2JhY2tncm91bmQtY29sb3I6cmdiYSgwLDAsMCwuMzgpfS5tYXQtc2xpZGVyLXRyYWNrLWJhY2tncm91bmRbX25nY29udGVudC0lQ09NUCVde2JhY2tncm91bmQtY29sb3I6cmdiYSgwLDAsMCwuMjYpfS5tYXQtcHJpbWFyeVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXNsaWRlci10cmFjay1maWxsW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1wcmltYXJ5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtc2xpZGVyLXRodW1iW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1wcmltYXJ5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtc2xpZGVyLXRodW1iLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXtiYWNrZ3JvdW5kLWNvbG9yOiNmNTdjMDB9Lm1hdC1wcmltYXJ5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtc2xpZGVyLXRodW1iLWxhYmVsLXRleHRbX25nY29udGVudC0lQ09NUCVde2NvbG9yOiNmZmZ9Lm1hdC1wcmltYXJ5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtc2xpZGVyLWZvY3VzLXJpbmdbX25nY29udGVudC0lQ09NUCVde2JhY2tncm91bmQtY29sb3I6cmdiYSgyNDUsMTI0LDAsLjIpfS5tYXQtYWNjZW50W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtc2xpZGVyLXRyYWNrLWZpbGxbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWFjY2VudFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXNsaWRlci10aHVtYltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtYWNjZW50W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtc2xpZGVyLXRodW1iLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXtiYWNrZ3JvdW5kLWNvbG9yOiNmZjk4MDB9Lm1hdC1hY2NlbnRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1zbGlkZXItdGh1bWItbGFiZWwtdGV4dFtfbmdjb250ZW50LSVDT01QJV17Y29sb3I6I2ZmZn0ubWF0LWFjY2VudFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXNsaWRlci1mb2N1cy1yaW5nW19uZ2NvbnRlbnQtJUNPTVAlXXtiYWNrZ3JvdW5kLWNvbG9yOnJnYmEoMjU1LDE1MiwwLC4yKX0ubWF0LXdhcm5bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1zbGlkZXItdHJhY2stZmlsbFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtd2Fybltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXNsaWRlci10aHVtYltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtd2Fybltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXNsaWRlci10aHVtYi1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17YmFja2dyb3VuZC1jb2xvcjojZjQ0MzM2fS5tYXQtd2Fybltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXNsaWRlci10aHVtYi1sYWJlbC10ZXh0W19uZ2NvbnRlbnQtJUNPTVAlXXtjb2xvcjojZmZmfS5tYXQtd2Fybltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXNsaWRlci1mb2N1cy1yaW5nW19uZ2NvbnRlbnQtJUNPTVAlXXtiYWNrZ3JvdW5kLWNvbG9yOnJnYmEoMjQ0LDY3LDU0LC4yKX0ubWF0LXNsaWRlcltfbmdjb250ZW50LSVDT01QJV06aG92ZXIgICAubWF0LXNsaWRlci10cmFjay1iYWNrZ3JvdW5kW19uZ2NvbnRlbnQtJUNPTVAlXSwgLmNkay1mb2N1c2VkW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtc2xpZGVyLXRyYWNrLWJhY2tncm91bmRbX25nY29udGVudC0lQ09NUCVde2JhY2tncm91bmQtY29sb3I6cmdiYSgwLDAsMCwuMzgpfS5tYXQtc2xpZGVyLWRpc2FibGVkW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtc2xpZGVyLXRyYWNrLWJhY2tncm91bmRbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXNsaWRlci1kaXNhYmxlZFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXNsaWRlci10cmFjay1maWxsW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1zbGlkZXItZGlzYWJsZWRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1zbGlkZXItdGh1bWJbX25nY29udGVudC0lQ09NUCVde2JhY2tncm91bmQtY29sb3I6cmdiYSgwLDAsMCwuMjYpfS5tYXQtc2xpZGVyLWRpc2FibGVkW19uZ2NvbnRlbnQtJUNPTVAlXTpob3ZlciAgIC5tYXQtc2xpZGVyLXRyYWNrLWJhY2tncm91bmRbX25nY29udGVudC0lQ09NUCVde2JhY2tncm91bmQtY29sb3I6cmdiYSgwLDAsMCwuMjYpfS5tYXQtc2xpZGVyLW1pbi12YWx1ZVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXNsaWRlci1mb2N1cy1yaW5nW19uZ2NvbnRlbnQtJUNPTVAlXXtiYWNrZ3JvdW5kLWNvbG9yOnJnYmEoMCwwLDAsLjEyKX0ubWF0LXNsaWRlci1taW4tdmFsdWUubWF0LXNsaWRlci10aHVtYi1sYWJlbC1zaG93aW5nW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtc2xpZGVyLXRodW1iW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1zbGlkZXItbWluLXZhbHVlLm1hdC1zbGlkZXItdGh1bWItbGFiZWwtc2hvd2luZ1tfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXNsaWRlci10aHVtYi1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17YmFja2dyb3VuZC1jb2xvcjpyZ2JhKDAsMCwwLC44Nyl9Lm1hdC1zbGlkZXItbWluLXZhbHVlLm1hdC1zbGlkZXItdGh1bWItbGFiZWwtc2hvd2luZy5jZGstZm9jdXNlZFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXNsaWRlci10aHVtYltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtc2xpZGVyLW1pbi12YWx1ZS5tYXQtc2xpZGVyLXRodW1iLWxhYmVsLXNob3dpbmcuY2RrLWZvY3VzZWRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1zbGlkZXItdGh1bWItbGFiZWxbX25nY29udGVudC0lQ09NUCVde2JhY2tncm91bmQtY29sb3I6cmdiYSgwLDAsMCwuMjYpfS5tYXQtc2xpZGVyLW1pbi12YWx1ZVtfbmdjb250ZW50LSVDT01QJV06bm90KC5tYXQtc2xpZGVyLXRodW1iLWxhYmVsLXNob3dpbmcpICAgLm1hdC1zbGlkZXItdGh1bWJbX25nY29udGVudC0lQ09NUCVde2JvcmRlci1jb2xvcjpyZ2JhKDAsMCwwLC4yNik7YmFja2dyb3VuZC1jb2xvcjp0cmFuc3BhcmVudH0ubWF0LXNsaWRlci1taW4tdmFsdWVbX25nY29udGVudC0lQ09NUCVdOm5vdCgubWF0LXNsaWRlci10aHVtYi1sYWJlbC1zaG93aW5nKTpob3ZlciAgIC5tYXQtc2xpZGVyLXRodW1iW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1zbGlkZXItbWluLXZhbHVlW19uZ2NvbnRlbnQtJUNPTVAlXTpub3QoLm1hdC1zbGlkZXItdGh1bWItbGFiZWwtc2hvd2luZykuY2RrLWZvY3VzZWQgICAubWF0LXNsaWRlci10aHVtYltfbmdjb250ZW50LSVDT01QJV17Ym9yZGVyLWNvbG9yOnJnYmEoMCwwLDAsLjM4KX0ubWF0LXNsaWRlci1taW4tdmFsdWVbX25nY29udGVudC0lQ09NUCVdOm5vdCgubWF0LXNsaWRlci10aHVtYi1sYWJlbC1zaG93aW5nKTpob3Zlci5tYXQtc2xpZGVyLWRpc2FibGVkICAgLm1hdC1zbGlkZXItdGh1bWJbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXNsaWRlci1taW4tdmFsdWVbX25nY29udGVudC0lQ09NUCVdOm5vdCgubWF0LXNsaWRlci10aHVtYi1sYWJlbC1zaG93aW5nKS5jZGstZm9jdXNlZC5tYXQtc2xpZGVyLWRpc2FibGVkICAgLm1hdC1zbGlkZXItdGh1bWJbX25nY29udGVudC0lQ09NUCVde2JvcmRlci1jb2xvcjpyZ2JhKDAsMCwwLC4yNil9Lm1hdC1zbGlkZXItaGFzLXRpY2tzW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtc2xpZGVyLXdyYXBwZXJbX25nY29udGVudC0lQ09NUCVdOjphZnRlcntib3JkZXItY29sb3I6cmdiYSgwLDAsMCwuNyl9Lm1hdC1zbGlkZXItaG9yaXpvbnRhbFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXNsaWRlci10aWNrc1tfbmdjb250ZW50LSVDT01QJV17YmFja2dyb3VuZC1pbWFnZTpyZXBlYXRpbmctbGluZWFyLWdyYWRpZW50KHRvIHJpZ2h0LCByZ2JhKDAsIDAsIDAsIDAuNyksIHJnYmEoMCwgMCwgMCwgMC43KSAycHgsIHRyYW5zcGFyZW50IDAsIHRyYW5zcGFyZW50KTtiYWNrZ3JvdW5kLWltYWdlOi1tb3otcmVwZWF0aW5nLWxpbmVhci1ncmFkaWVudCgwLjAwMDFkZWcsIHJnYmEoMCwgMCwgMCwgMC43KSwgcmdiYSgwLCAwLCAwLCAwLjcpIDJweCwgdHJhbnNwYXJlbnQgMCwgdHJhbnNwYXJlbnQpfS5tYXQtc2xpZGVyLXZlcnRpY2FsW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtc2xpZGVyLXRpY2tzW19uZ2NvbnRlbnQtJUNPTVAlXXtiYWNrZ3JvdW5kLWltYWdlOnJlcGVhdGluZy1saW5lYXItZ3JhZGllbnQodG8gYm90dG9tLCByZ2JhKDAsIDAsIDAsIDAuNyksIHJnYmEoMCwgMCwgMCwgMC43KSAycHgsIHRyYW5zcGFyZW50IDAsIHRyYW5zcGFyZW50KX0ubWF0LXN0ZXAtaGVhZGVyLmNkay1rZXlib2FyZC1mb2N1c2VkW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1zdGVwLWhlYWRlci5jZGstcHJvZ3JhbS1mb2N1c2VkW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1zdGVwLWhlYWRlcltfbmdjb250ZW50LSVDT01QJV06aG92ZXJ7YmFja2dyb3VuZC1jb2xvcjpyZ2JhKDAsMCwwLC4wNCl9QG1lZGlhKGhvdmVyOiBub25lKXsubWF0LXN0ZXAtaGVhZGVyW19uZ2NvbnRlbnQtJUNPTVAlXTpob3ZlcntiYWNrZ3JvdW5kOm5vbmV9fS5tYXQtc3RlcC1oZWFkZXJbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1zdGVwLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1zdGVwLWhlYWRlcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXN0ZXAtb3B0aW9uYWxbX25nY29udGVudC0lQ09NUCVde2NvbG9yOiM2MTYxNjF9Lm1hdC1zdGVwLWhlYWRlcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXN0ZXAtaWNvbltfbmdjb250ZW50LSVDT01QJV17YmFja2dyb3VuZC1jb2xvcjojNjE2MTYxO2NvbG9yOiNmZmZ9Lm1hdC1zdGVwLWhlYWRlcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXN0ZXAtaWNvbi1zZWxlY3RlZFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtc3RlcC1oZWFkZXJbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1zdGVwLWljb24tc3RhdGUtZG9uZVtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtc3RlcC1oZWFkZXJbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1zdGVwLWljb24tc3RhdGUtZWRpdFtfbmdjb250ZW50LSVDT01QJV17YmFja2dyb3VuZC1jb2xvcjojZjU3YzAwO2NvbG9yOiNmZmZ9Lm1hdC1zdGVwLWhlYWRlcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXN0ZXAtaWNvbi1zdGF0ZS1lcnJvcltfbmdjb250ZW50LSVDT01QJV17YmFja2dyb3VuZC1jb2xvcjp0cmFuc3BhcmVudDtjb2xvcjojZjQ0MzM2fS5tYXQtc3RlcC1oZWFkZXJbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1zdGVwLWxhYmVsLm1hdC1zdGVwLWxhYmVsLWFjdGl2ZVtfbmdjb250ZW50LSVDT01QJV17Y29sb3I6IzIxMjEyMX0ubWF0LXN0ZXAtaGVhZGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtc3RlcC1sYWJlbC5tYXQtc3RlcC1sYWJlbC1lcnJvcltfbmdjb250ZW50LSVDT01QJV17Y29sb3I6I2Y0NDMzNn0ubWF0LXN0ZXBwZXItaG9yaXpvbnRhbFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtc3RlcHBlci12ZXJ0aWNhbFtfbmdjb250ZW50LSVDT01QJV17YmFja2dyb3VuZC1jb2xvcjojZmZmfS5tYXQtc3RlcHBlci12ZXJ0aWNhbC1saW5lW19uZ2NvbnRlbnQtJUNPTVAlXTo6YmVmb3Jle2JvcmRlci1sZWZ0LWNvbG9yOnJnYmEoMCwwLDAsLjEyKX0ubWF0LWhvcml6b250YWwtc3RlcHBlci1oZWFkZXJbX25nY29udGVudC0lQ09NUCVdOjpiZWZvcmUsIC5tYXQtaG9yaXpvbnRhbC1zdGVwcGVyLWhlYWRlcltfbmdjb250ZW50LSVDT01QJV06OmFmdGVyLCAubWF0LXN0ZXBwZXItaG9yaXpvbnRhbC1saW5lW19uZ2NvbnRlbnQtJUNPTVAlXXtib3JkZXItdG9wLWNvbG9yOnJnYmEoMCwwLDAsLjEyKX0ubWF0LWhvcml6b250YWwtc3RlcHBlci1oZWFkZXJbX25nY29udGVudC0lQ09NUCVde2hlaWdodDo3MnB4fS5tYXQtc3RlcHBlci1sYWJlbC1wb3NpdGlvbi1ib3R0b21bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1ob3Jpem9udGFsLXN0ZXBwZXItaGVhZGVyW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC12ZXJ0aWNhbC1zdGVwcGVyLWhlYWRlcltfbmdjb250ZW50LSVDT01QJV17cGFkZGluZzoyNHB4IDI0cHh9Lm1hdC1zdGVwcGVyLXZlcnRpY2FsLWxpbmVbX25nY29udGVudC0lQ09NUCVdOjpiZWZvcmV7dG9wOi0xNnB4O2JvdHRvbTotMTZweH0ubWF0LXN0ZXBwZXItbGFiZWwtcG9zaXRpb24tYm90dG9tW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaG9yaXpvbnRhbC1zdGVwcGVyLWhlYWRlcltfbmdjb250ZW50LSVDT01QJV06OmFmdGVyLCAubWF0LXN0ZXBwZXItbGFiZWwtcG9zaXRpb24tYm90dG9tW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaG9yaXpvbnRhbC1zdGVwcGVyLWhlYWRlcltfbmdjb250ZW50LSVDT01QJV06OmJlZm9yZXt0b3A6MzZweH0ubWF0LXN0ZXBwZXItbGFiZWwtcG9zaXRpb24tYm90dG9tW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtc3RlcHBlci1ob3Jpem9udGFsLWxpbmVbX25nY29udGVudC0lQ09NUCVde3RvcDozNnB4fS5tYXQtc29ydC1oZWFkZXItYXJyb3dbX25nY29udGVudC0lQ09NUCVde2NvbG9yOiM2MTYxNjF9Lm1hdC10YWItbmF2LWJhcltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdGFiLWhlYWRlcltfbmdjb250ZW50LSVDT01QJV17Ym9yZGVyLWJvdHRvbToxcHggc29saWQgcmdiYSgwLDAsMCwuMTIpfS5tYXQtdGFiLWdyb3VwLWludmVydGVkLWhlYWRlcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXRhYi1uYXYtYmFyW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10YWItZ3JvdXAtaW52ZXJ0ZWQtaGVhZGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtdGFiLWhlYWRlcltfbmdjb250ZW50LSVDT01QJV17Ym9yZGVyLXRvcDoxcHggc29saWQgcmdiYSgwLDAsMCwuMTIpO2JvcmRlci1ib3R0b206bm9uZX0ubWF0LXRhYi1sYWJlbFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdGFiLWxpbmtbX25nY29udGVudC0lQ09NUCVde2NvbG9yOiMyMTIxMjF9Lm1hdC10YWItbGFiZWwubWF0LXRhYi1kaXNhYmxlZFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdGFiLWxpbmsubWF0LXRhYi1kaXNhYmxlZFtfbmdjb250ZW50LSVDT01QJV17Y29sb3I6Izc1NzU3NX0ubWF0LXRhYi1oZWFkZXItcGFnaW5hdGlvbi1jaGV2cm9uW19uZ2NvbnRlbnQtJUNPTVAlXXtib3JkZXItY29sb3I6IzIxMjEyMX0ubWF0LXRhYi1oZWFkZXItcGFnaW5hdGlvbi1kaXNhYmxlZFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXRhYi1oZWFkZXItcGFnaW5hdGlvbi1jaGV2cm9uW19uZ2NvbnRlbnQtJUNPTVAlXXtib3JkZXItY29sb3I6Izc1NzU3NX0ubWF0LXRhYi1ncm91cFtjbGFzcyo9bWF0LWJhY2tncm91bmQtXVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXRhYi1oZWFkZXJbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXRhYi1uYXYtYmFyW2NsYXNzKj1tYXQtYmFja2dyb3VuZC1dW19uZ2NvbnRlbnQtJUNPTVAlXXtib3JkZXItYm90dG9tOm5vbmU7Ym9yZGVyLXRvcDpub25lfS5tYXQtdGFiLWdyb3VwLm1hdC1wcmltYXJ5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtdGFiLWxhYmVsLmNkay1rZXlib2FyZC1mb2N1c2VkW19uZ2NvbnRlbnQtJUNPTVAlXTpub3QoLm1hdC10YWItZGlzYWJsZWQpLCAubWF0LXRhYi1ncm91cC5tYXQtcHJpbWFyeVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXRhYi1sYWJlbC5jZGstcHJvZ3JhbS1mb2N1c2VkW19uZ2NvbnRlbnQtJUNPTVAlXTpub3QoLm1hdC10YWItZGlzYWJsZWQpLCAubWF0LXRhYi1ncm91cC5tYXQtcHJpbWFyeVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXRhYi1saW5rLmNkay1rZXlib2FyZC1mb2N1c2VkW19uZ2NvbnRlbnQtJUNPTVAlXTpub3QoLm1hdC10YWItZGlzYWJsZWQpLCAubWF0LXRhYi1ncm91cC5tYXQtcHJpbWFyeVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXRhYi1saW5rLmNkay1wcm9ncmFtLWZvY3VzZWRbX25nY29udGVudC0lQ09NUCVdOm5vdCgubWF0LXRhYi1kaXNhYmxlZCksIC5tYXQtdGFiLW5hdi1iYXIubWF0LXByaW1hcnlbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC10YWItbGFiZWwuY2RrLWtleWJvYXJkLWZvY3VzZWRbX25nY29udGVudC0lQ09NUCVdOm5vdCgubWF0LXRhYi1kaXNhYmxlZCksIC5tYXQtdGFiLW5hdi1iYXIubWF0LXByaW1hcnlbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC10YWItbGFiZWwuY2RrLXByb2dyYW0tZm9jdXNlZFtfbmdjb250ZW50LSVDT01QJV06bm90KC5tYXQtdGFiLWRpc2FibGVkKSwgLm1hdC10YWItbmF2LWJhci5tYXQtcHJpbWFyeVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXRhYi1saW5rLmNkay1rZXlib2FyZC1mb2N1c2VkW19uZ2NvbnRlbnQtJUNPTVAlXTpub3QoLm1hdC10YWItZGlzYWJsZWQpLCAubWF0LXRhYi1uYXYtYmFyLm1hdC1wcmltYXJ5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtdGFiLWxpbmsuY2RrLXByb2dyYW0tZm9jdXNlZFtfbmdjb250ZW50LSVDT01QJV06bm90KC5tYXQtdGFiLWRpc2FibGVkKXtiYWNrZ3JvdW5kLWNvbG9yOnJnYmEoMjU1LDE1MiwwLC4zKX0ubWF0LXRhYi1ncm91cC5tYXQtcHJpbWFyeVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWluay1iYXJbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXRhYi1uYXYtYmFyLm1hdC1wcmltYXJ5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaW5rLWJhcltfbmdjb250ZW50LSVDT01QJV17YmFja2dyb3VuZC1jb2xvcjojZjU3YzAwfS5tYXQtdGFiLWdyb3VwLm1hdC1wcmltYXJ5Lm1hdC1iYWNrZ3JvdW5kLXByaW1hcnlbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pbmstYmFyW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10YWItbmF2LWJhci5tYXQtcHJpbWFyeS5tYXQtYmFja2dyb3VuZC1wcmltYXJ5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaW5rLWJhcltfbmdjb250ZW50LSVDT01QJV17YmFja2dyb3VuZC1jb2xvcjojZmZmfS5tYXQtdGFiLWdyb3VwLm1hdC1hY2NlbnRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC10YWItbGFiZWwuY2RrLWtleWJvYXJkLWZvY3VzZWRbX25nY29udGVudC0lQ09NUCVdOm5vdCgubWF0LXRhYi1kaXNhYmxlZCksIC5tYXQtdGFiLWdyb3VwLm1hdC1hY2NlbnRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC10YWItbGFiZWwuY2RrLXByb2dyYW0tZm9jdXNlZFtfbmdjb250ZW50LSVDT01QJV06bm90KC5tYXQtdGFiLWRpc2FibGVkKSwgLm1hdC10YWItZ3JvdXAubWF0LWFjY2VudFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXRhYi1saW5rLmNkay1rZXlib2FyZC1mb2N1c2VkW19uZ2NvbnRlbnQtJUNPTVAlXTpub3QoLm1hdC10YWItZGlzYWJsZWQpLCAubWF0LXRhYi1ncm91cC5tYXQtYWNjZW50W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtdGFiLWxpbmsuY2RrLXByb2dyYW0tZm9jdXNlZFtfbmdjb250ZW50LSVDT01QJV06bm90KC5tYXQtdGFiLWRpc2FibGVkKSwgLm1hdC10YWItbmF2LWJhci5tYXQtYWNjZW50W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtdGFiLWxhYmVsLmNkay1rZXlib2FyZC1mb2N1c2VkW19uZ2NvbnRlbnQtJUNPTVAlXTpub3QoLm1hdC10YWItZGlzYWJsZWQpLCAubWF0LXRhYi1uYXYtYmFyLm1hdC1hY2NlbnRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC10YWItbGFiZWwuY2RrLXByb2dyYW0tZm9jdXNlZFtfbmdjb250ZW50LSVDT01QJV06bm90KC5tYXQtdGFiLWRpc2FibGVkKSwgLm1hdC10YWItbmF2LWJhci5tYXQtYWNjZW50W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtdGFiLWxpbmsuY2RrLWtleWJvYXJkLWZvY3VzZWRbX25nY29udGVudC0lQ09NUCVdOm5vdCgubWF0LXRhYi1kaXNhYmxlZCksIC5tYXQtdGFiLW5hdi1iYXIubWF0LWFjY2VudFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXRhYi1saW5rLmNkay1wcm9ncmFtLWZvY3VzZWRbX25nY29udGVudC0lQ09NUCVdOm5vdCgubWF0LXRhYi1kaXNhYmxlZCl7YmFja2dyb3VuZC1jb2xvcjpyZ2JhKDI1NSwxNTIsMCwuMyl9Lm1hdC10YWItZ3JvdXAubWF0LWFjY2VudFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWluay1iYXJbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXRhYi1uYXYtYmFyLm1hdC1hY2NlbnRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pbmstYmFyW19uZ2NvbnRlbnQtJUNPTVAlXXtiYWNrZ3JvdW5kLWNvbG9yOiNmZjk4MDB9Lm1hdC10YWItZ3JvdXAubWF0LWFjY2VudC5tYXQtYmFja2dyb3VuZC1hY2NlbnRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pbmstYmFyW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10YWItbmF2LWJhci5tYXQtYWNjZW50Lm1hdC1iYWNrZ3JvdW5kLWFjY2VudFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWluay1iYXJbX25nY29udGVudC0lQ09NUCVde2JhY2tncm91bmQtY29sb3I6I2ZmZn0ubWF0LXRhYi1ncm91cC5tYXQtd2Fybltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXRhYi1sYWJlbC5jZGsta2V5Ym9hcmQtZm9jdXNlZFtfbmdjb250ZW50LSVDT01QJV06bm90KC5tYXQtdGFiLWRpc2FibGVkKSwgLm1hdC10YWItZ3JvdXAubWF0LXdhcm5bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC10YWItbGFiZWwuY2RrLXByb2dyYW0tZm9jdXNlZFtfbmdjb250ZW50LSVDT01QJV06bm90KC5tYXQtdGFiLWRpc2FibGVkKSwgLm1hdC10YWItZ3JvdXAubWF0LXdhcm5bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC10YWItbGluay5jZGsta2V5Ym9hcmQtZm9jdXNlZFtfbmdjb250ZW50LSVDT01QJV06bm90KC5tYXQtdGFiLWRpc2FibGVkKSwgLm1hdC10YWItZ3JvdXAubWF0LXdhcm5bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC10YWItbGluay5jZGstcHJvZ3JhbS1mb2N1c2VkW19uZ2NvbnRlbnQtJUNPTVAlXTpub3QoLm1hdC10YWItZGlzYWJsZWQpLCAubWF0LXRhYi1uYXYtYmFyLm1hdC13YXJuW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtdGFiLWxhYmVsLmNkay1rZXlib2FyZC1mb2N1c2VkW19uZ2NvbnRlbnQtJUNPTVAlXTpub3QoLm1hdC10YWItZGlzYWJsZWQpLCAubWF0LXRhYi1uYXYtYmFyLm1hdC13YXJuW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtdGFiLWxhYmVsLmNkay1wcm9ncmFtLWZvY3VzZWRbX25nY29udGVudC0lQ09NUCVdOm5vdCgubWF0LXRhYi1kaXNhYmxlZCksIC5tYXQtdGFiLW5hdi1iYXIubWF0LXdhcm5bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC10YWItbGluay5jZGsta2V5Ym9hcmQtZm9jdXNlZFtfbmdjb250ZW50LSVDT01QJV06bm90KC5tYXQtdGFiLWRpc2FibGVkKSwgLm1hdC10YWItbmF2LWJhci5tYXQtd2Fybltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXRhYi1saW5rLmNkay1wcm9ncmFtLWZvY3VzZWRbX25nY29udGVudC0lQ09NUCVdOm5vdCgubWF0LXRhYi1kaXNhYmxlZCl7YmFja2dyb3VuZC1jb2xvcjpyZ2JhKDI1NSwyMDUsMjEwLC4zKX0ubWF0LXRhYi1ncm91cC5tYXQtd2Fybltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWluay1iYXJbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXRhYi1uYXYtYmFyLm1hdC13YXJuW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaW5rLWJhcltfbmdjb250ZW50LSVDT01QJV17YmFja2dyb3VuZC1jb2xvcjojZjQ0MzM2fS5tYXQtdGFiLWdyb3VwLm1hdC13YXJuLm1hdC1iYWNrZ3JvdW5kLXdhcm5bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pbmstYmFyW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10YWItbmF2LWJhci5tYXQtd2Fybi5tYXQtYmFja2dyb3VuZC13YXJuW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaW5rLWJhcltfbmdjb250ZW50LSVDT01QJV17YmFja2dyb3VuZC1jb2xvcjojZmZmfS5tYXQtdGFiLWdyb3VwLm1hdC1iYWNrZ3JvdW5kLXByaW1hcnlbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC10YWItbGFiZWwuY2RrLWtleWJvYXJkLWZvY3VzZWRbX25nY29udGVudC0lQ09NUCVdOm5vdCgubWF0LXRhYi1kaXNhYmxlZCksIC5tYXQtdGFiLWdyb3VwLm1hdC1iYWNrZ3JvdW5kLXByaW1hcnlbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC10YWItbGFiZWwuY2RrLXByb2dyYW0tZm9jdXNlZFtfbmdjb250ZW50LSVDT01QJV06bm90KC5tYXQtdGFiLWRpc2FibGVkKSwgLm1hdC10YWItZ3JvdXAubWF0LWJhY2tncm91bmQtcHJpbWFyeVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXRhYi1saW5rLmNkay1rZXlib2FyZC1mb2N1c2VkW19uZ2NvbnRlbnQtJUNPTVAlXTpub3QoLm1hdC10YWItZGlzYWJsZWQpLCAubWF0LXRhYi1ncm91cC5tYXQtYmFja2dyb3VuZC1wcmltYXJ5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtdGFiLWxpbmsuY2RrLXByb2dyYW0tZm9jdXNlZFtfbmdjb250ZW50LSVDT01QJV06bm90KC5tYXQtdGFiLWRpc2FibGVkKSwgLm1hdC10YWItbmF2LWJhci5tYXQtYmFja2dyb3VuZC1wcmltYXJ5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtdGFiLWxhYmVsLmNkay1rZXlib2FyZC1mb2N1c2VkW19uZ2NvbnRlbnQtJUNPTVAlXTpub3QoLm1hdC10YWItZGlzYWJsZWQpLCAubWF0LXRhYi1uYXYtYmFyLm1hdC1iYWNrZ3JvdW5kLXByaW1hcnlbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC10YWItbGFiZWwuY2RrLXByb2dyYW0tZm9jdXNlZFtfbmdjb250ZW50LSVDT01QJV06bm90KC5tYXQtdGFiLWRpc2FibGVkKSwgLm1hdC10YWItbmF2LWJhci5tYXQtYmFja2dyb3VuZC1wcmltYXJ5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtdGFiLWxpbmsuY2RrLWtleWJvYXJkLWZvY3VzZWRbX25nY29udGVudC0lQ09NUCVdOm5vdCgubWF0LXRhYi1kaXNhYmxlZCksIC5tYXQtdGFiLW5hdi1iYXIubWF0LWJhY2tncm91bmQtcHJpbWFyeVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXRhYi1saW5rLmNkay1wcm9ncmFtLWZvY3VzZWRbX25nY29udGVudC0lQ09NUCVdOm5vdCgubWF0LXRhYi1kaXNhYmxlZCl7YmFja2dyb3VuZC1jb2xvcjpyZ2JhKDI1NSwxNTIsMCwuMyl9Lm1hdC10YWItZ3JvdXAubWF0LWJhY2tncm91bmQtcHJpbWFyeVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXRhYi1oZWFkZXJbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXRhYi1ncm91cC5tYXQtYmFja2dyb3VuZC1wcmltYXJ5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtdGFiLWxpbmtzW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10YWItZ3JvdXAubWF0LWJhY2tncm91bmQtcHJpbWFyeVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXRhYi1oZWFkZXItcGFnaW5hdGlvbltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdGFiLW5hdi1iYXIubWF0LWJhY2tncm91bmQtcHJpbWFyeVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXRhYi1oZWFkZXJbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXRhYi1uYXYtYmFyLm1hdC1iYWNrZ3JvdW5kLXByaW1hcnlbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC10YWItbGlua3NbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXRhYi1uYXYtYmFyLm1hdC1iYWNrZ3JvdW5kLXByaW1hcnlbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC10YWItaGVhZGVyLXBhZ2luYXRpb25bX25nY29udGVudC0lQ09NUCVde2JhY2tncm91bmQtY29sb3I6I2Y1N2MwMH0ubWF0LXRhYi1ncm91cC5tYXQtYmFja2dyb3VuZC1wcmltYXJ5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtdGFiLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10YWItZ3JvdXAubWF0LWJhY2tncm91bmQtcHJpbWFyeVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXRhYi1saW5rW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10YWItbmF2LWJhci5tYXQtYmFja2dyb3VuZC1wcmltYXJ5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtdGFiLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10YWItbmF2LWJhci5tYXQtYmFja2dyb3VuZC1wcmltYXJ5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtdGFiLWxpbmtbX25nY29udGVudC0lQ09NUCVde2NvbG9yOiNmZmZ9Lm1hdC10YWItZ3JvdXAubWF0LWJhY2tncm91bmQtcHJpbWFyeVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXRhYi1sYWJlbC5tYXQtdGFiLWRpc2FibGVkW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10YWItZ3JvdXAubWF0LWJhY2tncm91bmQtcHJpbWFyeVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXRhYi1saW5rLm1hdC10YWItZGlzYWJsZWRbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXRhYi1uYXYtYmFyLm1hdC1iYWNrZ3JvdW5kLXByaW1hcnlbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC10YWItbGFiZWwubWF0LXRhYi1kaXNhYmxlZFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdGFiLW5hdi1iYXIubWF0LWJhY2tncm91bmQtcHJpbWFyeVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXRhYi1saW5rLm1hdC10YWItZGlzYWJsZWRbX25nY29udGVudC0lQ09NUCVde2NvbG9yOnJnYmEoMjU1LDI1NSwyNTUsLjQpfS5tYXQtdGFiLWdyb3VwLm1hdC1iYWNrZ3JvdW5kLXByaW1hcnlbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC10YWItaGVhZGVyLXBhZ2luYXRpb24tY2hldnJvbltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdGFiLW5hdi1iYXIubWF0LWJhY2tncm91bmQtcHJpbWFyeVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXRhYi1oZWFkZXItcGFnaW5hdGlvbi1jaGV2cm9uW19uZ2NvbnRlbnQtJUNPTVAlXXtib3JkZXItY29sb3I6I2ZmZn0ubWF0LXRhYi1ncm91cC5tYXQtYmFja2dyb3VuZC1wcmltYXJ5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtdGFiLWhlYWRlci1wYWdpbmF0aW9uLWRpc2FibGVkW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtdGFiLWhlYWRlci1wYWdpbmF0aW9uLWNoZXZyb25bX25nY29udGVudC0lQ09NUCVdLCAubWF0LXRhYi1uYXYtYmFyLm1hdC1iYWNrZ3JvdW5kLXByaW1hcnlbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC10YWItaGVhZGVyLXBhZ2luYXRpb24tZGlzYWJsZWRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC10YWItaGVhZGVyLXBhZ2luYXRpb24tY2hldnJvbltfbmdjb250ZW50LSVDT01QJV17Ym9yZGVyLWNvbG9yOnJnYmEoMjU1LDI1NSwyNTUsLjQpfS5tYXQtdGFiLWdyb3VwLm1hdC1iYWNrZ3JvdW5kLXByaW1hcnlbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1yaXBwbGUtZWxlbWVudFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdGFiLW5hdi1iYXIubWF0LWJhY2tncm91bmQtcHJpbWFyeVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXJpcHBsZS1lbGVtZW50W19uZ2NvbnRlbnQtJUNPTVAlXXtiYWNrZ3JvdW5kLWNvbG9yOnJnYmEoMjU1LDI1NSwyNTUsLjEyKX0ubWF0LXRhYi1ncm91cC5tYXQtYmFja2dyb3VuZC1hY2NlbnRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC10YWItbGFiZWwuY2RrLWtleWJvYXJkLWZvY3VzZWRbX25nY29udGVudC0lQ09NUCVdOm5vdCgubWF0LXRhYi1kaXNhYmxlZCksIC5tYXQtdGFiLWdyb3VwLm1hdC1iYWNrZ3JvdW5kLWFjY2VudFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXRhYi1sYWJlbC5jZGstcHJvZ3JhbS1mb2N1c2VkW19uZ2NvbnRlbnQtJUNPTVAlXTpub3QoLm1hdC10YWItZGlzYWJsZWQpLCAubWF0LXRhYi1ncm91cC5tYXQtYmFja2dyb3VuZC1hY2NlbnRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC10YWItbGluay5jZGsta2V5Ym9hcmQtZm9jdXNlZFtfbmdjb250ZW50LSVDT01QJV06bm90KC5tYXQtdGFiLWRpc2FibGVkKSwgLm1hdC10YWItZ3JvdXAubWF0LWJhY2tncm91bmQtYWNjZW50W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtdGFiLWxpbmsuY2RrLXByb2dyYW0tZm9jdXNlZFtfbmdjb250ZW50LSVDT01QJV06bm90KC5tYXQtdGFiLWRpc2FibGVkKSwgLm1hdC10YWItbmF2LWJhci5tYXQtYmFja2dyb3VuZC1hY2NlbnRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC10YWItbGFiZWwuY2RrLWtleWJvYXJkLWZvY3VzZWRbX25nY29udGVudC0lQ09NUCVdOm5vdCgubWF0LXRhYi1kaXNhYmxlZCksIC5tYXQtdGFiLW5hdi1iYXIubWF0LWJhY2tncm91bmQtYWNjZW50W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtdGFiLWxhYmVsLmNkay1wcm9ncmFtLWZvY3VzZWRbX25nY29udGVudC0lQ09NUCVdOm5vdCgubWF0LXRhYi1kaXNhYmxlZCksIC5tYXQtdGFiLW5hdi1iYXIubWF0LWJhY2tncm91bmQtYWNjZW50W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtdGFiLWxpbmsuY2RrLWtleWJvYXJkLWZvY3VzZWRbX25nY29udGVudC0lQ09NUCVdOm5vdCgubWF0LXRhYi1kaXNhYmxlZCksIC5tYXQtdGFiLW5hdi1iYXIubWF0LWJhY2tncm91bmQtYWNjZW50W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtdGFiLWxpbmsuY2RrLXByb2dyYW0tZm9jdXNlZFtfbmdjb250ZW50LSVDT01QJV06bm90KC5tYXQtdGFiLWRpc2FibGVkKXtiYWNrZ3JvdW5kLWNvbG9yOnJnYmEoMjU1LDE1MiwwLC4zKX0ubWF0LXRhYi1ncm91cC5tYXQtYmFja2dyb3VuZC1hY2NlbnRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC10YWItaGVhZGVyW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10YWItZ3JvdXAubWF0LWJhY2tncm91bmQtYWNjZW50W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtdGFiLWxpbmtzW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10YWItZ3JvdXAubWF0LWJhY2tncm91bmQtYWNjZW50W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtdGFiLWhlYWRlci1wYWdpbmF0aW9uW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10YWItbmF2LWJhci5tYXQtYmFja2dyb3VuZC1hY2NlbnRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC10YWItaGVhZGVyW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10YWItbmF2LWJhci5tYXQtYmFja2dyb3VuZC1hY2NlbnRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC10YWItbGlua3NbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXRhYi1uYXYtYmFyLm1hdC1iYWNrZ3JvdW5kLWFjY2VudFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXRhYi1oZWFkZXItcGFnaW5hdGlvbltfbmdjb250ZW50LSVDT01QJV17YmFja2dyb3VuZC1jb2xvcjojZmY5ODAwfS5tYXQtdGFiLWdyb3VwLm1hdC1iYWNrZ3JvdW5kLWFjY2VudFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXRhYi1sYWJlbFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdGFiLWdyb3VwLm1hdC1iYWNrZ3JvdW5kLWFjY2VudFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXRhYi1saW5rW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10YWItbmF2LWJhci5tYXQtYmFja2dyb3VuZC1hY2NlbnRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC10YWItbGFiZWxbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXRhYi1uYXYtYmFyLm1hdC1iYWNrZ3JvdW5kLWFjY2VudFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXRhYi1saW5rW19uZ2NvbnRlbnQtJUNPTVAlXXtjb2xvcjojZmZmfS5tYXQtdGFiLWdyb3VwLm1hdC1iYWNrZ3JvdW5kLWFjY2VudFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXRhYi1sYWJlbC5tYXQtdGFiLWRpc2FibGVkW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10YWItZ3JvdXAubWF0LWJhY2tncm91bmQtYWNjZW50W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtdGFiLWxpbmsubWF0LXRhYi1kaXNhYmxlZFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdGFiLW5hdi1iYXIubWF0LWJhY2tncm91bmQtYWNjZW50W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtdGFiLWxhYmVsLm1hdC10YWItZGlzYWJsZWRbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXRhYi1uYXYtYmFyLm1hdC1iYWNrZ3JvdW5kLWFjY2VudFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXRhYi1saW5rLm1hdC10YWItZGlzYWJsZWRbX25nY29udGVudC0lQ09NUCVde2NvbG9yOnJnYmEoMjU1LDI1NSwyNTUsLjQpfS5tYXQtdGFiLWdyb3VwLm1hdC1iYWNrZ3JvdW5kLWFjY2VudFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXRhYi1oZWFkZXItcGFnaW5hdGlvbi1jaGV2cm9uW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10YWItbmF2LWJhci5tYXQtYmFja2dyb3VuZC1hY2NlbnRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC10YWItaGVhZGVyLXBhZ2luYXRpb24tY2hldnJvbltfbmdjb250ZW50LSVDT01QJV17Ym9yZGVyLWNvbG9yOiNmZmZ9Lm1hdC10YWItZ3JvdXAubWF0LWJhY2tncm91bmQtYWNjZW50W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtdGFiLWhlYWRlci1wYWdpbmF0aW9uLWRpc2FibGVkW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtdGFiLWhlYWRlci1wYWdpbmF0aW9uLWNoZXZyb25bX25nY29udGVudC0lQ09NUCVdLCAubWF0LXRhYi1uYXYtYmFyLm1hdC1iYWNrZ3JvdW5kLWFjY2VudFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXRhYi1oZWFkZXItcGFnaW5hdGlvbi1kaXNhYmxlZFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXRhYi1oZWFkZXItcGFnaW5hdGlvbi1jaGV2cm9uW19uZ2NvbnRlbnQtJUNPTVAlXXtib3JkZXItY29sb3I6cmdiYSgyNTUsMjU1LDI1NSwuNCl9Lm1hdC10YWItZ3JvdXAubWF0LWJhY2tncm91bmQtYWNjZW50W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtcmlwcGxlLWVsZW1lbnRbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXRhYi1uYXYtYmFyLm1hdC1iYWNrZ3JvdW5kLWFjY2VudFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXJpcHBsZS1lbGVtZW50W19uZ2NvbnRlbnQtJUNPTVAlXXtiYWNrZ3JvdW5kLWNvbG9yOnJnYmEoMjU1LDI1NSwyNTUsLjEyKX0ubWF0LXRhYi1ncm91cC5tYXQtYmFja2dyb3VuZC13YXJuW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtdGFiLWxhYmVsLmNkay1rZXlib2FyZC1mb2N1c2VkW19uZ2NvbnRlbnQtJUNPTVAlXTpub3QoLm1hdC10YWItZGlzYWJsZWQpLCAubWF0LXRhYi1ncm91cC5tYXQtYmFja2dyb3VuZC13YXJuW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtdGFiLWxhYmVsLmNkay1wcm9ncmFtLWZvY3VzZWRbX25nY29udGVudC0lQ09NUCVdOm5vdCgubWF0LXRhYi1kaXNhYmxlZCksIC5tYXQtdGFiLWdyb3VwLm1hdC1iYWNrZ3JvdW5kLXdhcm5bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC10YWItbGluay5jZGsta2V5Ym9hcmQtZm9jdXNlZFtfbmdjb250ZW50LSVDT01QJV06bm90KC5tYXQtdGFiLWRpc2FibGVkKSwgLm1hdC10YWItZ3JvdXAubWF0LWJhY2tncm91bmQtd2Fybltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXRhYi1saW5rLmNkay1wcm9ncmFtLWZvY3VzZWRbX25nY29udGVudC0lQ09NUCVdOm5vdCgubWF0LXRhYi1kaXNhYmxlZCksIC5tYXQtdGFiLW5hdi1iYXIubWF0LWJhY2tncm91bmQtd2Fybltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXRhYi1sYWJlbC5jZGsta2V5Ym9hcmQtZm9jdXNlZFtfbmdjb250ZW50LSVDT01QJV06bm90KC5tYXQtdGFiLWRpc2FibGVkKSwgLm1hdC10YWItbmF2LWJhci5tYXQtYmFja2dyb3VuZC13YXJuW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtdGFiLWxhYmVsLmNkay1wcm9ncmFtLWZvY3VzZWRbX25nY29udGVudC0lQ09NUCVdOm5vdCgubWF0LXRhYi1kaXNhYmxlZCksIC5tYXQtdGFiLW5hdi1iYXIubWF0LWJhY2tncm91bmQtd2Fybltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXRhYi1saW5rLmNkay1rZXlib2FyZC1mb2N1c2VkW19uZ2NvbnRlbnQtJUNPTVAlXTpub3QoLm1hdC10YWItZGlzYWJsZWQpLCAubWF0LXRhYi1uYXYtYmFyLm1hdC1iYWNrZ3JvdW5kLXdhcm5bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC10YWItbGluay5jZGstcHJvZ3JhbS1mb2N1c2VkW19uZ2NvbnRlbnQtJUNPTVAlXTpub3QoLm1hdC10YWItZGlzYWJsZWQpe2JhY2tncm91bmQtY29sb3I6cmdiYSgyNTUsMjA1LDIxMCwuMyl9Lm1hdC10YWItZ3JvdXAubWF0LWJhY2tncm91bmQtd2Fybltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXRhYi1oZWFkZXJbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXRhYi1ncm91cC5tYXQtYmFja2dyb3VuZC13YXJuW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtdGFiLWxpbmtzW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10YWItZ3JvdXAubWF0LWJhY2tncm91bmQtd2Fybltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXRhYi1oZWFkZXItcGFnaW5hdGlvbltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdGFiLW5hdi1iYXIubWF0LWJhY2tncm91bmQtd2Fybltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXRhYi1oZWFkZXJbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXRhYi1uYXYtYmFyLm1hdC1iYWNrZ3JvdW5kLXdhcm5bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC10YWItbGlua3NbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXRhYi1uYXYtYmFyLm1hdC1iYWNrZ3JvdW5kLXdhcm5bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC10YWItaGVhZGVyLXBhZ2luYXRpb25bX25nY29udGVudC0lQ09NUCVde2JhY2tncm91bmQtY29sb3I6I2Y0NDMzNn0ubWF0LXRhYi1ncm91cC5tYXQtYmFja2dyb3VuZC13YXJuW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtdGFiLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10YWItZ3JvdXAubWF0LWJhY2tncm91bmQtd2Fybltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXRhYi1saW5rW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10YWItbmF2LWJhci5tYXQtYmFja2dyb3VuZC13YXJuW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtdGFiLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10YWItbmF2LWJhci5tYXQtYmFja2dyb3VuZC13YXJuW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtdGFiLWxpbmtbX25nY29udGVudC0lQ09NUCVde2NvbG9yOiNmZmZ9Lm1hdC10YWItZ3JvdXAubWF0LWJhY2tncm91bmQtd2Fybltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXRhYi1sYWJlbC5tYXQtdGFiLWRpc2FibGVkW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10YWItZ3JvdXAubWF0LWJhY2tncm91bmQtd2Fybltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXRhYi1saW5rLm1hdC10YWItZGlzYWJsZWRbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXRhYi1uYXYtYmFyLm1hdC1iYWNrZ3JvdW5kLXdhcm5bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC10YWItbGFiZWwubWF0LXRhYi1kaXNhYmxlZFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdGFiLW5hdi1iYXIubWF0LWJhY2tncm91bmQtd2Fybltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXRhYi1saW5rLm1hdC10YWItZGlzYWJsZWRbX25nY29udGVudC0lQ09NUCVde2NvbG9yOnJnYmEoMjU1LDI1NSwyNTUsLjQpfS5tYXQtdGFiLWdyb3VwLm1hdC1iYWNrZ3JvdW5kLXdhcm5bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC10YWItaGVhZGVyLXBhZ2luYXRpb24tY2hldnJvbltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdGFiLW5hdi1iYXIubWF0LWJhY2tncm91bmQtd2Fybltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXRhYi1oZWFkZXItcGFnaW5hdGlvbi1jaGV2cm9uW19uZ2NvbnRlbnQtJUNPTVAlXXtib3JkZXItY29sb3I6I2ZmZn0ubWF0LXRhYi1ncm91cC5tYXQtYmFja2dyb3VuZC13YXJuW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtdGFiLWhlYWRlci1wYWdpbmF0aW9uLWRpc2FibGVkW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtdGFiLWhlYWRlci1wYWdpbmF0aW9uLWNoZXZyb25bX25nY29udGVudC0lQ09NUCVdLCAubWF0LXRhYi1uYXYtYmFyLm1hdC1iYWNrZ3JvdW5kLXdhcm5bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC10YWItaGVhZGVyLXBhZ2luYXRpb24tZGlzYWJsZWRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC10YWItaGVhZGVyLXBhZ2luYXRpb24tY2hldnJvbltfbmdjb250ZW50LSVDT01QJV17Ym9yZGVyLWNvbG9yOnJnYmEoMjU1LDI1NSwyNTUsLjQpfS5tYXQtdGFiLWdyb3VwLm1hdC1iYWNrZ3JvdW5kLXdhcm5bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1yaXBwbGUtZWxlbWVudFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdGFiLW5hdi1iYXIubWF0LWJhY2tncm91bmQtd2Fybltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXJpcHBsZS1lbGVtZW50W19uZ2NvbnRlbnQtJUNPTVAlXXtiYWNrZ3JvdW5kLWNvbG9yOnJnYmEoMjU1LDI1NSwyNTUsLjEyKX0ubWF0LXRvb2xiYXJbX25nY29udGVudC0lQ09NUCVde2JhY2tncm91bmQ6I2Y1ZjVmNTtjb2xvcjojMjEyMTIxfS5tYXQtdG9vbGJhci5tYXQtcHJpbWFyeVtfbmdjb250ZW50LSVDT01QJV17YmFja2dyb3VuZDojZjU3YzAwO2NvbG9yOiNmZmZ9Lm1hdC10b29sYmFyLm1hdC1hY2NlbnRbX25nY29udGVudC0lQ09NUCVde2JhY2tncm91bmQ6I2ZmOTgwMDtjb2xvcjojZmZmfS5tYXQtdG9vbGJhci5tYXQtd2Fybltfbmdjb250ZW50LSVDT01QJV17YmFja2dyb3VuZDojZjQ0MzM2O2NvbG9yOiNmZmZ9Lm1hdC10b29sYmFyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC11bmRlcmxpbmVbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXRvb2xiYXJbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLXJpcHBsZVtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdG9vbGJhcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvY3VzZWRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLXJpcHBsZVtfbmdjb250ZW50LSVDT01QJV17YmFja2dyb3VuZC1jb2xvcjpjdXJyZW50Q29sb3J9Lm1hdC10b29sYmFyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdG9vbGJhcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvY3VzZWRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10b29sYmFyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtc2VsZWN0LXZhbHVlW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10b29sYmFyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtc2VsZWN0LWFycm93W19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10b29sYmFyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC5tYXQtZm9jdXNlZFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXNlbGVjdC1hcnJvd1tfbmdjb250ZW50LSVDT01QJV17Y29sb3I6aW5oZXJpdH0ubWF0LXRvb2xiYXJbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pbnB1dC1lbGVtZW50W19uZ2NvbnRlbnQtJUNPTVAlXXtjYXJldC1jb2xvcjpjdXJyZW50Q29sb3J9Lm1hdC10b29sYmFyLW11bHRpcGxlLXJvd3NbX25nY29udGVudC0lQ09NUCVde21pbi1oZWlnaHQ6NjRweH0ubWF0LXRvb2xiYXItcm93W19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10b29sYmFyLXNpbmdsZS1yb3dbX25nY29udGVudC0lQ09NUCVde2hlaWdodDo2NHB4fUBtZWRpYShtYXgtd2lkdGg6IDU5OXB4KXsubWF0LXRvb2xiYXItbXVsdGlwbGUtcm93c1tfbmdjb250ZW50LSVDT01QJV17bWluLWhlaWdodDo1NnB4fS5tYXQtdG9vbGJhci1yb3dbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXRvb2xiYXItc2luZ2xlLXJvd1tfbmdjb250ZW50LSVDT01QJV17aGVpZ2h0OjU2cHh9fS5tYXQtdG9vbHRpcFtfbmdjb250ZW50LSVDT01QJV17YmFja2dyb3VuZDpyZ2JhKDk3LDk3LDk3LC45KX0ubWF0LXRyZWVbX25nY29udGVudC0lQ09NUCVde2JhY2tncm91bmQ6I2ZmZn0ubWF0LXRyZWUtbm9kZVtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtbmVzdGVkLXRyZWUtbm9kZVtfbmdjb250ZW50LSVDT01QJV17Y29sb3I6IzIxMjEyMX0ubWF0LXRyZWUtbm9kZVtfbmdjb250ZW50LSVDT01QJV17bWluLWhlaWdodDo0OHB4fS5tYXQtc25hY2stYmFyLWNvbnRhaW5lcltfbmdjb250ZW50LSVDT01QJV17Y29sb3I6cmdiYSgyNTUsMjU1LDI1NSwuNyk7YmFja2dyb3VuZDojMzIzMjMyO2JveC1zaGFkb3c6MHB4IDNweCA1cHggLTFweCByZ2JhKDAsIDAsIDAsIDAuMiksMHB4IDZweCAxMHB4IDBweCByZ2JhKDAsIDAsIDAsIDAuMTQpLDBweCAxcHggMThweCAwcHggcmdiYSgwLCAwLCAwLCAwLjEyKX0ubWF0LXNpbXBsZS1zbmFja2Jhci1hY3Rpb25bX25nY29udGVudC0lQ09NUCVde2NvbG9yOiNmZjk4MDB9W19uZ2hvc3QtJUNPTVAlXXtkaXNwbGF5OmZsZXg7ZmxleC1kaXJlY3Rpb246Y29sdW1uO2JhY2tncm91bmQtY29sb3I6I2ZmZjtib3JkZXI6MXB4IHNvbGlkICNlYmViZWI7cGFkZGluZzoxMHB4IDIwcHh9LmRhdGEtc2VsZWN0aW9uW19uZ2NvbnRlbnQtJUNPTVAlXXtkaXNwbGF5OmZsZXg7YWxpZ24taXRlbXM6Y2VudGVyfS5tZXRyaWNzLXNlbGVjdG9yW19uZ2NvbnRlbnQtJUNPTVAlXXtmbGV4OjEgMX0nXSxjaGFuZ2VEZXRlY3Rpb246MH0pO2NvbnN0IGdwdD1bImNoYXJ0Il07Y2xhc3MgcHB0e2NvbnN0cnVjdG9yKCl7dGhpcy5vblJlbW92ZT1uZXcgRWYsdGhpcy5vblVwZGF0ZUZpbHRlcj1uZXcgRWYsdGhpcy5oZWlnaHQ9MzAwLHRoaXMuY2hhcnRXaWR0aD0wLHRoaXMuY2hhcnRIZWlnaHQ9MCx0aGlzLmRyYXdIZWlnaHQ9MCx0aGlzLmRyYXdXaWR0aD0wLHRoaXMubWFyZ2luPXt0b3A6MjAscmlnaHQ6MTAsYm90dG9tOjIwLGxlZnQ6MTB9LHRoaXMuZHJhd01hcmdpbj17dG9wOjAscmlnaHQ6MCxib3R0b206MjAsbGVmdDoyMH0sdGhpcy5icnVzaD0oZnVuY3Rpb24gdCgpe3JldHVybihmdW5jdGlvbiB0KG4pe3ZhciBlLGE9UzMsbz13MyxyPUUzLGk9ITAsYz1TMCgic3RhcnQiLCJicnVzaCIsImVuZCIpLHM9NjtmdW5jdGlvbiBsKHQpe3ZhciBlPXQucHJvcGVydHkoIl9fYnJ1c2giLGYpLnNlbGVjdEFsbCgiLm92ZXJsYXkiKS5kYXRhKFt2Mygib3ZlcmxheSIpXSk7ZS5lbnRlcigpLmFwcGVuZCgicmVjdCIpLmF0dHIoImNsYXNzIiwib3ZlcmxheSIpLmF0dHIoInBvaW50ZXItZXZlbnRzIiwiYWxsIikuYXR0cigiY3Vyc29yIixPMy5vdmVybGF5KS5tZXJnZShlKS5lYWNoKChmdW5jdGlvbigpe3ZhciB0PUEzKHRoaXMpLmV4dGVudDtqMSh0aGlzKS5hdHRyKCJ4Iix0WzBdWzBdKS5hdHRyKCJ5Iix0WzBdWzFdKS5hdHRyKCJ3aWR0aCIsdFsxXVswXS10WzBdWzBdKS5hdHRyKCJoZWlnaHQiLHRbMV1bMV0tdFswXVsxXSl9KSksdC5zZWxlY3RBbGwoIi5zZWxlY3Rpb24iKS5kYXRhKFt2Mygic2VsZWN0aW9uIildKS5lbnRlcigpLmFwcGVuZCgicmVjdCIpLmF0dHIoImNsYXNzIiwic2VsZWN0aW9uIikuYXR0cigiY3Vyc29yIixPMy5zZWxlY3Rpb24pLmF0dHIoImZpbGwiLCIjNzc3IikuYXR0cigiZmlsbC1vcGFjaXR5IiwuMykuYXR0cigic3Ryb2tlIiwiI2ZmZiIpLmF0dHIoInNoYXBlLXJlbmRlcmluZyIsImNyaXNwRWRnZXMiKTt2YXIgYT10LnNlbGVjdEFsbCgiLmhhbmRsZSIpLmRhdGEobi5oYW5kbGVzLChmdW5jdGlvbih0KXtyZXR1cm4gdC50eXBlfSkpO2EuZXhpdCgpLnJlbW92ZSgpLGEuZW50ZXIoKS5hcHBlbmQoInJlY3QiKS5hdHRyKCJjbGFzcyIsKGZ1bmN0aW9uKHQpe3JldHVybiJoYW5kbGUgaGFuZGxlLS0iK3QudHlwZX0pKS5hdHRyKCJjdXJzb3IiLChmdW5jdGlvbih0KXtyZXR1cm4gTzNbdC50eXBlXX0pKSx0LmVhY2gobSkuYXR0cigiZmlsbCIsIm5vbmUiKS5hdHRyKCJwb2ludGVyLWV2ZW50cyIsImFsbCIpLm9uKCJtb3VzZWRvd24uYnJ1c2giLHApLmZpbHRlcihyKS5vbigidG91Y2hzdGFydC5icnVzaCIscCkub24oInRvdWNobW92ZS5icnVzaCIsYikub24oInRvdWNoZW5kLmJydXNoIHRvdWNoY2FuY2VsLmJydXNoIix1KS5zdHlsZSgidG91Y2gtYWN0aW9uIiwibm9uZSIpLnN0eWxlKCItd2Via2l0LXRhcC1oaWdobGlnaHQtY29sb3IiLCJyZ2JhKDAsMCwwLDApIil9ZnVuY3Rpb24gbSgpe3ZhciB0PWoxKHRoaXMpLG49QTModGhpcykuc2VsZWN0aW9uO24/KHQuc2VsZWN0QWxsKCIuc2VsZWN0aW9uIikuc3R5bGUoImRpc3BsYXkiLG51bGwpLmF0dHIoIngiLG5bMF1bMF0pLmF0dHIoInkiLG5bMF1bMV0pLmF0dHIoIndpZHRoIixuWzFdWzBdLW5bMF1bMF0pLmF0dHIoImhlaWdodCIsblsxXVsxXS1uWzBdWzFdKSx0LnNlbGVjdEFsbCgiLmhhbmRsZSIpLnN0eWxlKCJkaXNwbGF5IixudWxsKS5hdHRyKCJ4IiwoZnVuY3Rpb24odCl7cmV0dXJuImUiPT09dC50eXBlW3QudHlwZS5sZW5ndGgtMV0/blsxXVswXS1zLzI6blswXVswXS1zLzJ9KSkuYXR0cigieSIsKGZ1bmN0aW9uKHQpe3JldHVybiJzIj09PXQudHlwZVswXT9uWzFdWzFdLXMvMjpuWzBdWzFdLXMvMn0pKS5hdHRyKCJ3aWR0aCIsKGZ1bmN0aW9uKHQpe3JldHVybiJuIj09PXQudHlwZXx8InMiPT09dC50eXBlP25bMV1bMF0tblswXVswXStzOnN9KSkuYXR0cigiaGVpZ2h0IiwoZnVuY3Rpb24odCl7cmV0dXJuImUiPT09dC50eXBlfHwidyI9PT10LnR5cGU/blsxXVsxXS1uWzBdWzFdK3M6c30pKSk6dC5zZWxlY3RBbGwoIi5zZWxlY3Rpb24sLmhhbmRsZSIpLnN0eWxlKCJkaXNwbGF5Iiwibm9uZSIpLmF0dHIoIngiLG51bGwpLmF0dHIoInkiLG51bGwpLmF0dHIoIndpZHRoIixudWxsKS5hdHRyKCJoZWlnaHQiLG51bGwpfWZ1bmN0aW9uIGQodCxuLGUpe3JldHVybiFlJiZ0Ll9fYnJ1c2guZW1pdHRlcnx8bmV3IGcodCxuKX1mdW5jdGlvbiBnKHQsbil7dGhpcy50aGF0PXQsdGhpcy5hcmdzPW4sdGhpcy5zdGF0ZT10Ll9fYnJ1c2gsdGhpcy5hY3RpdmU9MH1mdW5jdGlvbiBwKCl7aWYoKCFlfHxBMS50b3VjaGVzKSYmby5hcHBseSh0aGlzLGFyZ3VtZW50cykpe3ZhciB0LGEscixjLHMsbCxnLHAsYix1LGYsaD10aGlzLF89QTEudGFyZ2V0Ll9fZGF0YV9fLnR5cGUsQz0ic2VsZWN0aW9uIj09PShpJiZBMS5tZXRhS2V5P189Im92ZXJsYXkiOl8pP2czOmkmJkExLmFsdEtleT91MzpiMyxNPW49PT1NMz9udWxsOnkzW19dLE89bj09PUMzP251bGw6azNbX10sUD1BMyhoKSx4PVAuZXh0ZW50LHk9UC5zZWxlY3Rpb24saz14WzBdWzBdLHY9eFswXVsxXSx3PXhbMV1bMF0sUz14WzFdWzFdLEU9MCxBPTAsej1NJiZPJiZpJiZBMS5zaGlmdEtleSxSPUExLnRvdWNoZXM/XzMoQTEuY2hhbmdlZFRvdWNoZXNbMF0uaWRlbnRpZmllcik6RzEsVD1SKGgpLEQ9VCxJPWQoaCxhcmd1bWVudHMsITApLmJlZm9yZXN0YXJ0KCk7Im92ZXJsYXkiPT09Xz8oeSYmKGI9ITApLFAuc2VsZWN0aW9uPXk9W1t0PW49PT1NMz9rOlRbMF0scj1uPT09QzM/djpUWzFdXSxbcz1uPT09TTM/dzp0LGc9bj09PUMzP1M6cl1dKToodD15WzBdWzBdLHI9eVswXVsxXSxzPXlbMV1bMF0sZz15WzFdWzFdKSxhPXQsYz1yLGw9cyxwPWc7dmFyIE49ajEoaCkuYXR0cigicG9pbnRlci1ldmVudHMiLCJub25lIiksRj1OLnNlbGVjdEFsbCgiLm92ZXJsYXkiKS5hdHRyKCJjdXJzb3IiLE8zW19dKTtpZihBMS50b3VjaGVzKUkubW92ZWQ9SCxJLmVuZGVkPVY7ZWxzZXt2YXIgTD1qMShBMS52aWV3KS5vbigibW91c2Vtb3ZlLmJydXNoIixILCEwKS5vbigibW91c2V1cC5icnVzaCIsViwhMCk7aSYmTC5vbigia2V5ZG93bi5icnVzaCIsaiwhMCkub24oImtleXVwLmJydXNoIixVLCEwKSxxMShBMS52aWV3KX1zMygpLGM0KGgpLG0uY2FsbChoKSxJLnN0YXJ0KCl9ZnVuY3Rpb24gSCgpe3ZhciB0PVIoaCk7IXp8fHV8fGZ8fChNYXRoLmFicyh0WzBdLURbMF0pPk1hdGguYWJzKHRbMV0tRFsxXSk/Zj0hMDp1PSEwKSxEPXQsYj0hMCxsMygpLEIoKX1mdW5jdGlvbiBCKCl7dmFyIG47c3dpdGNoKEU9RFswXS1UWzBdLEE9RFsxXS1UWzFdLEMpe2Nhc2UgcDM6Y2FzZSBnMzpNJiYoRT1NYXRoLm1heChrLXQsTWF0aC5taW4ody1zLEUpKSxhPXQrRSxsPXMrRSksTyYmKEE9TWF0aC5tYXgodi1yLE1hdGgubWluKFMtZyxBKSksYz1yK0EscD1nK0EpO2JyZWFrO2Nhc2UgYjM6TTwwPyhFPU1hdGgubWF4KGstdCxNYXRoLm1pbih3LXQsRSkpLGE9dCtFLGw9cyk6TT4wJiYoRT1NYXRoLm1heChrLXMsTWF0aC5taW4ody1zLEUpKSxhPXQsbD1zK0UpLE88MD8oQT1NYXRoLm1heCh2LXIsTWF0aC5taW4oUy1yLEEpKSxjPXIrQSxwPWcpOk8+MCYmKEE9TWF0aC5tYXgodi1nLE1hdGgubWluKFMtZyxBKSksYz1yLHA9ZytBKTticmVhaztjYXNlIHUzOk0mJihhPU1hdGgubWF4KGssTWF0aC5taW4odyx0LUUqTSkpLGw9TWF0aC5tYXgoayxNYXRoLm1pbih3LHMrRSpNKSkpLE8mJihjPU1hdGgubWF4KHYsTWF0aC5taW4oUyxyLUEqTykpLHA9TWF0aC5tYXgodixNYXRoLm1pbihTLGcrQSpPKSkpfWw8YSYmKE0qPS0xLG49dCx0PXMscz1uLG49YSxhPWwsbD1uLF8gaW4gUDMmJkYuYXR0cigiY3Vyc29yIixPM1tfPVAzW19dXSkpLHA8YyYmKE8qPS0xLG49cixyPWcsZz1uLG49YyxjPXAscD1uLF8gaW4geDMmJkYuYXR0cigiY3Vyc29yIixPM1tfPXgzW19dXSkpLFAuc2VsZWN0aW9uJiYoeT1QLnNlbGVjdGlvbiksdSYmKGE9eVswXVswXSxsPXlbMV1bMF0pLGYmJihjPXlbMF1bMV0scD15WzFdWzFdKSx5WzBdWzBdPT09YSYmeVswXVsxXT09PWMmJnlbMV1bMF09PT1sJiZ5WzFdWzFdPT09cHx8KFAuc2VsZWN0aW9uPVtbYSxjXSxbbCxwXV0sbS5jYWxsKGgpLEkuYnJ1c2goKSl9ZnVuY3Rpb24gVigpe2lmKHMzKCksQTEudG91Y2hlcyl7aWYoQTEudG91Y2hlcy5sZW5ndGgpcmV0dXJuO2UmJmNsZWFyVGltZW91dChlKSxlPXNldFRpbWVvdXQoKGZ1bmN0aW9uKCl7ZT1udWxsfSksNTAwKX1lbHNlIFoxKEExLnZpZXcsYiksTC5vbigia2V5ZG93bi5icnVzaCBrZXl1cC5icnVzaCBtb3VzZW1vdmUuYnJ1c2ggbW91c2V1cC5icnVzaCIsbnVsbCk7Ti5hdHRyKCJwb2ludGVyLWV2ZW50cyIsImFsbCIpLEYuYXR0cigiY3Vyc29yIixPMy5vdmVybGF5KSxQLnNlbGVjdGlvbiYmKHk9UC5zZWxlY3Rpb24pLHozKHkpJiYoUC5zZWxlY3Rpb249bnVsbCxtLmNhbGwoaCkpLEkuZW5kKCl9ZnVuY3Rpb24gaigpe3N3aXRjaChBMS5rZXlDb2RlKXtjYXNlIDE2Ono9TSYmTzticmVhaztjYXNlIDE4OkM9PT1iMyYmKE0mJihzPWwtRSpNLHQ9YStFKk0pLE8mJihnPXAtQSpPLHI9YytBKk8pLEM9dTMsQigpKTticmVhaztjYXNlIDMyOkMhPT1iMyYmQyE9PXUzfHwoTTwwP3M9bC1FOk0+MCYmKHQ9YS1FKSxPPDA/Zz1wLUE6Tz4wJiYocj1jLUEpLEM9cDMsRi5hdHRyKCJjdXJzb3IiLE8zLnNlbGVjdGlvbiksQigpKTticmVhaztkZWZhdWx0OnJldHVybn1sMygpfWZ1bmN0aW9uIFUoKXtzd2l0Y2goQTEua2V5Q29kZSl7Y2FzZSAxNjp6JiYodT1mPXo9ITEsQigpKTticmVhaztjYXNlIDE4OkM9PT11MyYmKE08MD9zPWw6TT4wJiYodD1hKSxPPDA/Zz1wOk8+MCYmKHI9YyksQz1iMyxCKCkpO2JyZWFrO2Nhc2UgMzI6Qz09PXAzJiYoQTEuYWx0S2V5PyhNJiYocz1sLUUqTSx0PWErRSpNKSxPJiYoZz1wLUEqTyxyPWMrQSpPKSxDPXUzKTooTTwwP3M9bDpNPjAmJih0PWEpLE88MD9nPXA6Tz4wJiYocj1jKSxDPWIzKSxGLmF0dHIoImN1cnNvciIsTzNbX10pLEIoKSk7YnJlYWs7ZGVmYXVsdDpyZXR1cm59bDMoKX19ZnVuY3Rpb24gYigpe2QodGhpcyxhcmd1bWVudHMpLm1vdmVkKCl9ZnVuY3Rpb24gdSgpe2QodGhpcyxhcmd1bWVudHMpLmVuZGVkKCl9ZnVuY3Rpb24gZigpe3ZhciB0PXRoaXMuX19icnVzaHx8e3NlbGVjdGlvbjpudWxsfTtyZXR1cm4gdC5leHRlbnQ9aDMoYS5hcHBseSh0aGlzLGFyZ3VtZW50cykpLHQuZGltPW4sdH1yZXR1cm4gbC5tb3ZlPWZ1bmN0aW9uKHQsZSl7dC5zZWxlY3Rpb24/dC5vbigic3RhcnQuYnJ1c2giLChmdW5jdGlvbigpe2QodGhpcyxhcmd1bWVudHMpLmJlZm9yZXN0YXJ0KCkuc3RhcnQoKX0pKS5vbigiaW50ZXJydXB0LmJydXNoIGVuZC5icnVzaCIsKGZ1bmN0aW9uKCl7ZCh0aGlzLGFyZ3VtZW50cykuZW5kKCl9KSkudHdlZW4oImJydXNoIiwoZnVuY3Rpb24oKXt2YXIgdD10aGlzLGE9dC5fX2JydXNoLG89ZCh0LGFyZ3VtZW50cykscj1hLnNlbGVjdGlvbixpPW4uaW5wdXQoImZ1bmN0aW9uIj09dHlwZW9mIGU/ZS5hcHBseSh0aGlzLGFyZ3VtZW50cyk6ZSxhLmV4dGVudCksYz1NNShyLGkpO2Z1bmN0aW9uIHMobil7YS5zZWxlY3Rpb249MT09PW4mJm51bGw9PT1pP251bGw6YyhuKSxtLmNhbGwodCksby5icnVzaCgpfXJldHVybiBudWxsIT09ciYmbnVsbCE9PWk/czpzKDEpfSkpOnQuZWFjaCgoZnVuY3Rpb24oKXt2YXIgdD10aGlzLGE9YXJndW1lbnRzLG89dC5fX2JydXNoLHI9bi5pbnB1dCgiZnVuY3Rpb24iPT10eXBlb2YgZT9lLmFwcGx5KHQsYSk6ZSxvLmV4dGVudCksaT1kKHQsYSkuYmVmb3Jlc3RhcnQoKTtjNCh0KSxvLnNlbGVjdGlvbj1udWxsPT09cj9udWxsOnIsbS5jYWxsKHQpLGkuc3RhcnQoKS5icnVzaCgpLmVuZCgpfSkpfSxsLmNsZWFyPWZ1bmN0aW9uKHQpe2wubW92ZSh0LG51bGwpfSxnLnByb3RvdHlwZT17YmVmb3Jlc3RhcnQ6ZnVuY3Rpb24oKXtyZXR1cm4gMT09Kyt0aGlzLmFjdGl2ZSYmKHRoaXMuc3RhdGUuZW1pdHRlcj10aGlzLHRoaXMuc3RhcnRpbmc9ITApLHRoaXN9LHN0YXJ0OmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuc3RhcnRpbmc/KHRoaXMuc3RhcnRpbmc9ITEsdGhpcy5lbWl0KCJzdGFydCIpKTp0aGlzLmVtaXQoImJydXNoIiksdGhpc30sYnJ1c2g6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5lbWl0KCJicnVzaCIpLHRoaXN9LGVuZDpmdW5jdGlvbigpe3JldHVybiAwPT0tLXRoaXMuYWN0aXZlJiYoZGVsZXRlIHRoaXMuc3RhdGUuZW1pdHRlcix0aGlzLmVtaXQoImVuZCIpKSx0aGlzfSxlbWl0OmZ1bmN0aW9uKHQpeyEoZnVuY3Rpb24gZSh0LG4sYSxvKXt2YXIgcj1BMTt0LnNvdXJjZUV2ZW50PUExLEExPXQ7dHJ5e24uYXBwbHkoYSxvKX1maW5hbGx5e0ExPXJ9fSkobmV3IGMzKGwsdCxuLm91dHB1dCh0aGlzLnN0YXRlLnNlbGVjdGlvbikpLGMuYXBwbHksYyxbdCx0aGlzLnRoYXQsdGhpcy5hcmdzXSl9fSxsLmV4dGVudD1mdW5jdGlvbih0KXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8oYT0iZnVuY3Rpb24iPT10eXBlb2YgdD90OmkzKGgzKHQpKSxsKTphfSxsLmZpbHRlcj1mdW5jdGlvbih0KXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8obz0iZnVuY3Rpb24iPT10eXBlb2YgdD90OmkzKCEhdCksbCk6b30sbC50b3VjaGFibGU9ZnVuY3Rpb24odCl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KHI9ImZ1bmN0aW9uIj09dHlwZW9mIHQ/dDppMyghIXQpLGwpOnJ9LGwuaGFuZGxlU2l6ZT1mdW5jdGlvbih0KXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8ocz0rdCxsKTpzfSxsLmtleU1vZGlmaWVycz1mdW5jdGlvbih0KXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8oaT0hIXQsbCk6aX0sbC5vbj1mdW5jdGlvbigpe3ZhciB0PWMub24uYXBwbHkoYyxhcmd1bWVudHMpO3JldHVybiB0PT09Yz9sOnR9LGx9KShNMyl9KSgpLHRoaXMubWF4QmluU2l6ZT0wLHRoaXMuYXJlYT0oZnVuY3Rpb24gbigpe3ZhciB0PU44LG49bnVsbCxlPVQ4KDApLGE9Rjgsbz1UOCghMCkscj1udWxsLGk9STgsYz1udWxsO2Z1bmN0aW9uIHMocyl7dmFyIGwsbSxkLGcscCxiPXMubGVuZ3RoLHU9ITEsZj1uZXcgQXJyYXkoYiksaD1uZXcgQXJyYXkoYik7Zm9yKG51bGw9PXImJihjPWkocD1GMygpKSksbD0wO2w8PWI7KytsKXtpZighKGw8YiYmbyhnPXNbbF0sbCxzKSk9PT11KWlmKHU9IXUpbT1sLGMuYXJlYVN0YXJ0KCksYy5saW5lU3RhcnQoKTtlbHNle2ZvcihjLmxpbmVFbmQoKSxjLmxpbmVTdGFydCgpLGQ9bC0xO2Q+PW07LS1kKWMucG9pbnQoZltkXSxoW2RdKTtjLmxpbmVFbmQoKSxjLmFyZWFFbmQoKX11JiYoZltsXT0rdChnLGwscyksaFtsXT0rZShnLGwscyksYy5wb2ludChuPytuKGcsbCxzKTpmW2xdLGE/K2EoZyxsLHMpOmhbbF0pKX1pZihwKXJldHVybiBjPW51bGwscCsiInx8bnVsbH1mdW5jdGlvbiBsKCl7cmV0dXJuIEw4KCkuZGVmaW5lZChvKS5jdXJ2ZShpKS5jb250ZXh0KHIpfXJldHVybiBzLng9ZnVuY3Rpb24oZSl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KHQ9ImZ1bmN0aW9uIj09dHlwZW9mIGU/ZTpUOCgrZSksbj1udWxsLHMpOnR9LHMueDA9ZnVuY3Rpb24obil7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KHQ9ImZ1bmN0aW9uIj09dHlwZW9mIG4/bjpUOCgrbikscyk6dH0scy54MT1mdW5jdGlvbih0KXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8obj1udWxsPT10P251bGw6ImZ1bmN0aW9uIj09dHlwZW9mIHQ/dDpUOCgrdCkscyk6bn0scy55PWZ1bmN0aW9uKHQpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyhlPSJmdW5jdGlvbiI9PXR5cGVvZiB0P3Q6VDgoK3QpLGE9bnVsbCxzKTplfSxzLnkwPWZ1bmN0aW9uKHQpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyhlPSJmdW5jdGlvbiI9PXR5cGVvZiB0P3Q6VDgoK3QpLHMpOmV9LHMueTE9ZnVuY3Rpb24odCl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KGE9bnVsbD09dD9udWxsOiJmdW5jdGlvbiI9PXR5cGVvZiB0P3Q6VDgoK3QpLHMpOmF9LHMubGluZVgwPXMubGluZVkwPWZ1bmN0aW9uKCl7cmV0dXJuIGwoKS54KHQpLnkoZSl9LHMubGluZVkxPWZ1bmN0aW9uKCl7cmV0dXJuIGwoKS54KHQpLnkoYSl9LHMubGluZVgxPWZ1bmN0aW9uKCl7cmV0dXJuIGwoKS54KG4pLnkoZSl9LHMuZGVmaW5lZD1mdW5jdGlvbih0KXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8obz0iZnVuY3Rpb24iPT10eXBlb2YgdD90OlQ4KCEhdCkscyk6b30scy5jdXJ2ZT1mdW5jdGlvbih0KXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8oaT10LG51bGwhPXImJihjPWkocikpLHMpOml9LHMuY29udGV4dD1mdW5jdGlvbih0KXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8obnVsbD09dD9yPWM9bnVsbDpjPWkocj10KSxzKTpyfSxzfSkoKS54MChmdW5jdGlvbih0KXtyZXR1cm4gdGhpcy54U2NhbGVOdW0oLXQubGVuZ3RoKX0uYmluZCh0aGlzKSkueDEoZnVuY3Rpb24odCl7cmV0dXJuIHRoaXMueFNjYWxlTnVtKHQubGVuZ3RoKX0uYmluZCh0aGlzKSkueShmdW5jdGlvbih0KXtyZXR1cm4gdC54MD09PS0xLzA/dGhpcy5jaGFydEhlaWdodC10aGlzLmRyYXdNYXJnaW4udG9wOnRoaXMueVNjYWxlKCh0LngxK3QueDApLzIpfS5iaW5kKHRoaXMpKS5jdXJ2ZShqOCl9bmdBZnRlclZpZXdJbml0KCl7dGhpcy51cGRhdGVEaW1lbnNpb25zKCksdGhpcy5zdmc9ajEodGhpcy5jaGFydENvbnRhaW5lci5uYXRpdmVFbGVtZW50KS5zZWxlY3QoInN2ZyIpLHRoaXMubWFpbkNvbnRhaW5lcj10aGlzLnN2Zy5hcHBlbmQoImciKS5hdHRyKCJ0cmFuc2Zvcm0iLGB0cmFuc2xhdGUoJHt0aGlzLm1hcmdpbi5sZWZ0fSwgJHt0aGlzLm1hcmdpbi50b3B9KWApLHRoaXMuZHJhd0NvbnRhaW5lcj10aGlzLm1haW5Db250YWluZXIuYXBwZW5kKCJnIikuYXR0cigidHJhbnNmb3JtIixgdHJhbnNsYXRlKCR7dGhpcy5kcmF3TWFyZ2luLmxlZnR9LCAke3RoaXMuZHJhd01hcmdpbi50b3B9KWApLHRoaXMuZG90c0dyb3VwPXRoaXMuZHJhd0NvbnRhaW5lci5hcHBlbmQoImciKS5hdHRyKCJjbGFzcyIsImRvdHNHcm91cCIpLHRoaXMueUF4aXNHcm91cD10aGlzLm1haW5Db250YWluZXIuYXBwZW5kKCJnIikuYXR0cigiY2xhc3MiLCJheGlzIGF4aXMtLXkiKSx0aGlzLnhBeGlzR3JvdXA9dGhpcy5tYWluQ29udGFpbmVyLmFwcGVuZCgiZyIpLmF0dHIoImNsYXNzIiwiYXhpcyBheGlzLS14IiksdGhpcy5taXNjR3JvdXA9dGhpcy5kcmF3Q29udGFpbmVyLmFwcGVuZCgiZyIpLHRoaXMueFNjYWxlPWQ2KCkucGFkZGluZyguMDUpLHRoaXMueEF4aXM9KGZ1bmN0aW9uIHQobil7cmV0dXJuIHYwKDMsbil9KSh0aGlzLnhTY2FsZSksdGhpcy55U2NhbGU9azYoKS5yYW5nZShbdGhpcy5kcmF3SGVpZ2h0LDBdKSx0aGlzLnlBeGlzPShmdW5jdGlvbiBuKHQpe3JldHVybiB2MCg0LHQpfSkodGhpcy55U2NhbGUpLHRoaXMueFNjYWxlTnVtPWs2KCksdGhpcy5pbml0aWFsaXplQnJ1c2goKSx0aGlzLmRyYXdNaXNjKCksdGhpcy5yZWRyYXcoKX1uZ09uQ2hhbmdlcyh0KXt0aGlzLnN2ZyYmdGhpcy5yZWRyYXcoKX1yZWRyYXcoKXt0aGlzLnVwZGF0ZURpbWVuc2lvbnMoKSx0aGlzLnNldE1heEJpblNpemUoKSx0aGlzLnVwZGF0ZUF4ZXMoKSx0aGlzLmRyYXcoKX11cGRhdGVEaW1lbnNpb25zKCl7dGhpcy5jaGFydFdpZHRoPXRoaXMud2lkdGgtdGhpcy5tYXJnaW4ubGVmdC10aGlzLm1hcmdpbi5yaWdodCx0aGlzLmRyYXdXaWR0aD10aGlzLmNoYXJ0V2lkdGgtdGhpcy5kcmF3TWFyZ2luLmxlZnQtdGhpcy5kcmF3TWFyZ2luLnJpZ2h0LHRoaXMuY2hhcnRIZWlnaHQ9dGhpcy5oZWlnaHQtdGhpcy5tYXJnaW4udG9wLXRoaXMubWFyZ2luLmJvdHRvbSx0aGlzLmRyYXdIZWlnaHQ9dGhpcy5jaGFydEhlaWdodC10aGlzLmRyYXdNYXJnaW4udG9wLXRoaXMuZHJhd01hcmdpbi5ib3R0b219c2V0TWF4QmluU2l6ZSgpe09iamVjdC52YWx1ZXModGhpcy5jaGFydERhdGEudmlvbGluRGF0YSkuZm9yRWFjaCgodD0+e2NvbnN0IG49dC5tYXAoKHQ9PnQubGVuZ3RoKSksZT1NYXRoLm1heCguLi5uKTt0aGlzLm1heEJpblNpemU9TWF0aC5tYXgoZSx0aGlzLm1heEJpblNpemUpfSkpfXVwZGF0ZUF4ZXMoKXt0aGlzLnhTY2FsZS5yYW5nZShbMCx0aGlzLmRyYXdXaWR0aF0pLmRvbWFpbihPYmplY3Qua2V5cyh0aGlzLmNoYXJ0RGF0YS52aW9saW5EYXRhKSksdGhpcy55U2NhbGUuZG9tYWluKFt0aGlzLmNoYXJ0RGF0YS5leHRyZW1lcy5taW4sdGhpcy5jaGFydERhdGEuZXh0cmVtZXMubWF4XSksdGhpcy54U2NhbGVOdW0ucmFuZ2UoWzAsdGhpcy54U2NhbGUuYmFuZHdpZHRoKCldKS5kb21haW4oWy10aGlzLm1heEJpblNpemUsdGhpcy5tYXhCaW5TaXplXSl9aW5pdGlhbGl6ZUJydXNoKCl7dGhpcy5icnVzaC5vbigiZW5kIix0aGlzLmJydXNoTW92ZWQuYmluZCh0aGlzKSl9ZHJhdygpe3RoaXMuZHJhd0F4ZXMoKSx0aGlzLmRyYXdQbG90KCksdGhpcy5yZWZyZXNoTWlzYygpLHRoaXMucmVmcmVzaEJydXNoKCl9ZHJhd0F4ZXMoKXt0aGlzLnlBeGlzR3JvdXAuYXR0cigidHJhbnNmb3JtIixgdHJhbnNsYXRlKCR7dGhpcy5kcmF3TWFyZ2luLmxlZnR9LFxuICAgICAgJHt0aGlzLmRyYXdNYXJnaW4udG9wfSlgKS5jYWxsKHRoaXMueUF4aXMpLHRoaXMueEF4aXNHcm91cC5hdHRyKCJ0cmFuc2Zvcm0iLGB0cmFuc2xhdGUoJHt0aGlzLmRyYXdNYXJnaW4ubGVmdH0sXG4gICAgICAke3RoaXMuZHJhd01hcmdpbi50b3ArdGhpcy5jaGFydEhlaWdodH0pYCkuY2FsbCh0aGlzLnhBeGlzKX1kcmF3UGxvdCgpe2NvbnN0IHQ9dGhpcy5kb3RzR3JvdXAuc2VsZWN0QWxsKCIudmlvbGluLXBsb3QiKS5kYXRhKE9iamVjdC5lbnRyaWVzKHRoaXMuY2hhcnREYXRhLnZpb2xpbkRhdGEpKTt0LmVudGVyKCkuYXBwZW5kKCJwYXRoIikuYXR0cigiY2xhc3MiLCJ2aW9saW4tcGxvdCIpLnN0eWxlKCJzdHJva2UiLGZ1bmN0aW9uKHQpe3JldHVybiB0aGlzLmNvbG9yU2NhbGUodFswXSl9LmJpbmQodGhpcykpLnN0eWxlKCJmaWxsIixmdW5jdGlvbih0KXtyZXR1cm5gJHt0aGlzLmNvbG9yU2NhbGUodFswXSl9MzNgfS5iaW5kKHRoaXMpKS5hdHRyKCJ0cmFuc2Zvcm0iLGZ1bmN0aW9uKHQpe3JldHVybmB0cmFuc2xhdGUoJHt0aGlzLnhTY2FsZSh0WzBdKX0sIDApYH0uYmluZCh0aGlzKSkuZGF0dW0oKGZ1bmN0aW9uKHQpe3JldHVybiB0WzFdfSkpLmF0dHIoImQiLHRoaXMuYXJlYSksdC5hdHRyKCJ0cmFuc2Zvcm0iLGZ1bmN0aW9uKHQpe3JldHVybmB0cmFuc2xhdGUoJHt0aGlzLnhTY2FsZSh0WzBdKX0sIDApYH0uYmluZCh0aGlzKSkuZGF0dW0oKGZ1bmN0aW9uKHQpe3JldHVybiB0WzFdfSkpLmF0dHIoImQiLHRoaXMuYXJlYSksdC5leGl0KCkucmVtb3ZlKCl9ZHJhd01pc2MoKXt0aGlzLnplcm9MaW5lPXRoaXMubWlzY0dyb3VwLmFwcGVuZCgibGluZSIpLnN0eWxlKCJzdHJva2UiLCJibGFjayIpLmF0dHIoIngxIiwwKS5hdHRyKCJ5MSIsdGhpcy55U2NhbGUoMCkpLmF0dHIoIngyIix0aGlzLmRyYXdXaWR0aCkuYXR0cigieTIiLHRoaXMueVNjYWxlKDApKSx0aGlzLm5hblRleHQ9dGhpcy5taXNjR3JvdXAuYXBwZW5kKCJ0ZXh0Iikuc3R5bGUoImZpbGwiLCJibGFjayIpLnRleHQoIk5hTiIpLmF0dHIoImZvbnQtc2l6ZSIsIjEwcHgiKS5hdHRyKCJ0ZXh0LWFuY2hvciIsImVuZCIpLmF0dHIoImFsaWdubWVudC1iYXNlbGluZSIsIm1pZGRsZSIpLmF0dHIoIngiLC01KS5hdHRyKCJ5Iix0aGlzLmNoYXJ0SGVpZ2h0LXRoaXMuZHJhd01hcmdpbi50b3ApLHRoaXMubmFuTGluZT10aGlzLm1pc2NHcm91cC5hcHBlbmQoImxpbmUiKS5zdHlsZSgic3Ryb2tlIiwiZ3JleSIpLnN0eWxlKCJzdHJva2UtZGFzaGFycmF5IiwiMywgMyIpLmF0dHIoIngxIiwwKS5hdHRyKCJ5MSIsdGhpcy5jaGFydEhlaWdodC10aGlzLmRyYXdNYXJnaW4udG9wKS5hdHRyKCJ4MiIsdGhpcy5kcmF3V2lkdGgpLmF0dHIoInkyIix0aGlzLmNoYXJ0SGVpZ2h0LXRoaXMuZHJhd01hcmdpbi50b3ApfXJlZnJlc2hNaXNjKCl7dGhpcy56ZXJvTGluZS5hdHRyKCJ5MSIsdGhpcy55U2NhbGUoMCkpLmF0dHIoIngyIix0aGlzLmRyYXdXaWR0aCkuYXR0cigieTIiLHRoaXMueVNjYWxlKDApKSx0aGlzLm5hblRleHQuYXR0cigieSIsdGhpcy5jaGFydEhlaWdodC10aGlzLmRyYXdNYXJnaW4udG9wKSx0aGlzLm5hbkxpbmUuYXR0cigieTEiLHRoaXMuZHJhd0hlaWdodCt0aGlzLmRyYXdNYXJnaW4udG9wKS5hdHRyKCJ4MiIsdGhpcy5kcmF3V2lkdGgpLmF0dHIoInkyIix0aGlzLmRyYXdIZWlnaHQrdGhpcy5kcmF3TWFyZ2luLnRvcCl9cmVmcmVzaEJydXNoKCl7dGhpcy5icnVzaC5leHRlbnQoW1swLDBdLFt0aGlzLmRyYXdXaWR0aCx0aGlzLmRyYXdIZWlnaHQrdGhpcy5tYXJnaW4udG9wXV0pO2NvbnN0IHQ9WzAsdGhpcy5kcmF3SGVpZ2h0K3RoaXMubWFyZ2luLnRvcF07aWYodGhpcy5maWx0ZXIubWF4PHRoaXMuZmlsdGVyLm1pbil0WzBdPXRoaXMuZmlsdGVyLmluY2x1ZGVOYU4/dGhpcy55U2NhbGUodGhpcy5jaGFydERhdGEuZXh0cmVtZXMubWluKTp0WzFdO2Vsc2V7aWYoIXRoaXMuZmlsdGVyLmluY2x1ZGVOYU4pe2NvbnN0IG49TWF0aC5tYXgodGhpcy5jaGFydERhdGEuZXh0cmVtZXMubWluLHRoaXMuZmlsdGVyLm1pbik7dFsxXT10aGlzLnlTY2FsZShuKX1jb25zdCBuPU1hdGgubWluKHRoaXMuY2hhcnREYXRhLmV4dHJlbWVzLm1heCx0aGlzLmZpbHRlci5tYXgpO3RbMF09dGhpcy55U2NhbGUobil9dGhpcy5kcmF3Q29udGFpbmVyLmNhbGwodGhpcy5icnVzaCkuY2FsbCh0aGlzLmJydXNoLm1vdmUsdCl9YnJ1c2hNb3ZlZCgpe2lmKCFBMSlyZXR1cm47aWYoIUExLnNvdXJjZUV2ZW50KXJldHVybjtjb25zdCB0PUExLnNlbGVjdGlvbjtpZih0KXtsZXQgbj0hMSxlPS0yLGE9dGhpcy5jaGFydERhdGEuZXh0cmVtZXMubWluO3RbMF08PXRoaXMuZHJhd0hlaWdodCt0aGlzLm1hcmdpbi50b3AmJnRbMV0+PXRoaXMuZHJhd0hlaWdodCYmKG49ITApLHRbMF08dGhpcy5kcmF3SGVpZ2h0JiYoZT10aGlzLnlTY2FsZS5pbnZlcnQodFswXSkpLHRbMV08dGhpcy5kcmF3SGVpZ2h0JiYoYT10aGlzLnlTY2FsZS5pbnZlcnQodFsxXSkpLHRoaXMub25VcGRhdGVGaWx0ZXIuZW1pdCh7bWF4OmUsbWluOmEsaW5jbHVkZU5hTjpufSl9ZWxzZSB0aGlzLm9uVXBkYXRlRmlsdGVyLmVtaXQoe21heDoxLG1pbjotMSxpbmNsdWRlTmFOOiEwfSl9fXBwdC7JtWZhYz1mdW5jdGlvbiB0KG4pe3JldHVybiBuZXcobnx8cHB0KX0scHB0Lsm1Y21wPV9vKHt0eXBlOnBwdCxzZWxlY3RvcnM6W1sidmlvbGluLWZpbHRlci1jb21wb25lbnQiXV0sdmlld1F1ZXJ5OmZ1bmN0aW9uIHQobixlKXt2YXIgYTsxJm4mJmpmKGdwdCwhMCx4dSksMiZuJiZWZihhPVpmKCkpJiYoZS5jaGFydENvbnRhaW5lcj1hLmZpcnN0KX0saW5wdXRzOnttZXRyaWNOYW1lOiJtZXRyaWNOYW1lIixmaWx0ZXI6ImZpbHRlciIsY2hhcnREYXRhOiJjaGFydERhdGEiLHdpZHRoOiJ3aWR0aCIsY29sb3JTY2FsZToiY29sb3JTY2FsZSJ9LG91dHB1dHM6e29uUmVtb3ZlOiJvblJlbW92ZSIsb25VcGRhdGVGaWx0ZXI6Im9uVXBkYXRlRmlsdGVyIn0sZmVhdHVyZXM6W3ByXSxkZWNsczoxMCx2YXJzOjEsY29uc3RzOmZ1bmN0aW9uKCl7cmV0dXJuW1sxLCJjaGFydC1jb250YWluZXIiXSxbInRpdGxlIiwiU2hvd3MgdGhlIG5QTUkgdmFsdWUgZGlzdHJpYnV0aW9uIHBlciBydW4uIFJhbmdlcyBvZiBzZWxlY3RlZCB2YWx1ZXMgY2FuIGJlIG1hbmlwdWxhdGVkIGJ5IG1vZGlmeWluZyB0aGUgZ3JleSBib3guIiwxLCJjaGFydC1oZWFkIl0sWzEsImNoYXJ0LWhlYWRpbmciXSxbIm1hdC1pY29uLWJ1dHRvbiIsIiIsMywiY2xpY2siLDYsImFyaWEtbGFiZWwiXSxbImFyaWEtbGFiZWwiLCJ1bmRlZmluZWQiIT10eXBlb2YgbmdJMThuQ2xvc3VyZU1vZGUmJm5nSTE4bkNsb3N1cmVNb2RlP2dvb2cuZ2V0TXNnKCJSZW1vdmUgRmlsdGVyIik6JGxvY2FsaXplYDpMYWJlbCBmb3IgYSBidXR0b24gdGhhdCByZW1vdmVzIGEgbWV0cmljIGZpbHRlci7ikJ9hNmJmYWQ1OGJiMzYzZDVjODkxZDBhNTQ3NGIxZDc3ZWY5MGEzNGRh4pCfODQ1NDk2MTc5Nzc2MjkwNzYyNDpSZW1vdmUgRmlsdGVyYF0sWyJzdmdJY29uIiwiY2xlYXJfMjRweCJdLFsxLCJjaGFydCJdLFsiY2hhcnQiLCIiXSxbMSwiZHJhdy1hcmVhIl1dfSx0ZW1wbGF0ZTpmdW5jdGlvbiB0KG4sZSl7MSZuJiYoS2coMCwiZGl2IiwwKSxLZygxLCJkaXYiLDEpLEtnKDIsImRpdiIsMiksSnAoMyksJGcoKSxLZyg0LCJidXR0b24iLDMpLGx1KDUsNCksY3AoImNsaWNrIiwoZnVuY3Rpb24gdCgpe3JldHVybiBlLm9uUmVtb3ZlLmVtaXQoKX0pKSx0cCg2LCJtYXQtaWNvbiIsNSksJGcoKSwkZygpLEtnKDcsImRpdiIsNiw3KSx1aSgpLHRwKDksInN2ZyIsOCksJGcoKSwkZygpKSwyJm4mJih3cygzKSxRcChlLm1ldHJpY05hbWUpKX0sZGlyZWN0aXZlczpbZUEsQkJdLHN0eWxlczpbJy5tYXQtYmFkZ2UtY29udGVudFtfbmdjb250ZW50LSVDT01QJV17Zm9udC13ZWlnaHQ6NjAwO2ZvbnQtc2l6ZToxMnB4O2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZn0ubWF0LWJhZGdlLXNtYWxsW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtYmFkZ2UtY29udGVudFtfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjlweH0ubWF0LWJhZGdlLWxhcmdlW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtYmFkZ2UtY29udGVudFtfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjI0cHh9Lm1hdC1oMVtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtaGVhZGxpbmVbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXR5cG9ncmFwaHlbX25nY29udGVudC0lQ09NUCVdICAgaDFbX25nY29udGVudC0lQ09NUCVde2ZvbnQ6NDAwIDI0cHgvMzJweCBSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7bGV0dGVyLXNwYWNpbmc6bm9ybWFsO21hcmdpbjowIDAgMTZweH0ubWF0LWgyW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10aXRsZVtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdHlwb2dyYXBoeVtfbmdjb250ZW50LSVDT01QJV0gICBoMltfbmdjb250ZW50LSVDT01QJV17Zm9udDo1MDAgMjBweC8zMnB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtsZXR0ZXItc3BhY2luZzpub3JtYWw7bWFyZ2luOjAgMCAxNnB4fS5tYXQtaDNbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXN1YmhlYWRpbmctMltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdHlwb2dyYXBoeVtfbmdjb250ZW50LSVDT01QJV0gICBoM1tfbmdjb250ZW50LSVDT01QJV17Zm9udDo0MDAgMTZweC8yOHB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtsZXR0ZXItc3BhY2luZzpub3JtYWw7bWFyZ2luOjAgMCAxNnB4fS5tYXQtaDRbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXN1YmhlYWRpbmctMVtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdHlwb2dyYXBoeVtfbmdjb250ZW50LSVDT01QJV0gICBoNFtfbmdjb250ZW50LSVDT01QJV17Zm9udDo0MDAgMTVweC8yNHB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtsZXR0ZXItc3BhY2luZzpub3JtYWw7bWFyZ2luOjAgMCAxNnB4fS5tYXQtaDVbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXR5cG9ncmFwaHlbX25nY29udGVudC0lQ09NUCVdICAgaDVbX25nY29udGVudC0lQ09NUCVde2ZvbnQ6NDAwIGNhbGMoMTRweCAqIDAuODMpLzIwcHggUm9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO21hcmdpbjowIDAgMTJweH0ubWF0LWg2W19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10eXBvZ3JhcGh5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIGg2W19uZ2NvbnRlbnQtJUNPTVAlXXtmb250OjQwMCBjYWxjKDE0cHggKiAwLjY3KS8yMHB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjttYXJnaW46MCAwIDEycHh9Lm1hdC1ib2R5LXN0cm9uZ1tfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtYm9keS0yW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250OjUwMCAxNHB4LzI0cHggUm9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2xldHRlci1zcGFjaW5nOm5vcm1hbH0ubWF0LWJvZHlbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWJvZHktMVtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdHlwb2dyYXBoeVtfbmdjb250ZW50LSVDT01QJV17Zm9udDo0MDAgMTRweC8yMHB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtsZXR0ZXItc3BhY2luZzpub3JtYWx9Lm1hdC1ib2R5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIHBbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWJvZHktMVtfbmdjb250ZW50LSVDT01QJV0gICBwW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10eXBvZ3JhcGh5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIHBbX25nY29udGVudC0lQ09NUCVde21hcmdpbjowIDAgMTJweH0ubWF0LXNtYWxsW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1jYXB0aW9uW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250OjQwMCAxMnB4LzIwcHggUm9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2xldHRlci1zcGFjaW5nOm5vcm1hbH0ubWF0LWRpc3BsYXktNFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdHlwb2dyYXBoeVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWRpc3BsYXktNFtfbmdjb250ZW50LSVDT01QJV17Zm9udDozMDAgMTEycHgvMTEycHggUm9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2xldHRlci1zcGFjaW5nOi0wLjA1ZW07bWFyZ2luOjAgMCA1NnB4fS5tYXQtZGlzcGxheS0zW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10eXBvZ3JhcGh5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZGlzcGxheS0zW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250OjQwMCA1NnB4LzU2cHggUm9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2xldHRlci1zcGFjaW5nOi0wLjAyZW07bWFyZ2luOjAgMCA2NHB4fS5tYXQtZGlzcGxheS0yW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10eXBvZ3JhcGh5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZGlzcGxheS0yW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250OjQwMCA0NXB4LzQ4cHggUm9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2xldHRlci1zcGFjaW5nOi0wLjAwNWVtO21hcmdpbjowIDAgNjRweH0ubWF0LWRpc3BsYXktMVtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdHlwb2dyYXBoeVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWRpc3BsYXktMVtfbmdjb250ZW50LSVDT01QJV17Zm9udDo0MDAgMzRweC80MHB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtsZXR0ZXItc3BhY2luZzpub3JtYWw7bWFyZ2luOjAgMCA2NHB4fS5tYXQtYm90dG9tLXNoZWV0LWNvbnRhaW5lcltfbmdjb250ZW50LSVDT01QJV17Zm9udDo0MDAgMTRweC8yMHB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtsZXR0ZXItc3BhY2luZzpub3JtYWx9Lm1hdC1idXR0b25bX25nY29udGVudC0lQ09NUCVdLCAubWF0LXJhaXNlZC1idXR0b25bX25nY29udGVudC0lQ09NUCVdLCAubWF0LWljb24tYnV0dG9uW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1zdHJva2VkLWJ1dHRvbltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtZmxhdC1idXR0b25bX25nY29udGVudC0lQ09NUCVdLCAubWF0LWZhYltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtbWluaS1mYWJbX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtmb250LXNpemU6MTRweDtmb250LXdlaWdodDo1MDB9Lm1hdC1idXR0b24tdG9nZ2xlW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWZ9Lm1hdC1jYXJkW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWZ9Lm1hdC1jYXJkLXRpdGxlW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MjRweDtmb250LXdlaWdodDo1MDB9Lm1hdC1jYXJkLWhlYWRlcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWNhcmQtdGl0bGVbX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToyMHB4fS5tYXQtY2FyZC1zdWJ0aXRsZVtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtY2FyZC1jb250ZW50W19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MTRweH0ubWF0LWNoZWNrYm94W19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWZ9Lm1hdC1jaGVja2JveC1sYXlvdXRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1jaGVja2JveC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17bGluZS1oZWlnaHQ6MjRweH0ubWF0LWNoaXBbX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToxNHB4O2ZvbnQtd2VpZ2h0OjUwMH0ubWF0LWNoaXBbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1jaGlwLXRyYWlsaW5nLWljb24ubWF0LWljb25bX25nY29udGVudC0lQ09NUCVdLCAubWF0LWNoaXBbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1jaGlwLXJlbW92ZS5tYXQtaWNvbltfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjE4cHh9Lm1hdC10YWJsZVtfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmfS5tYXQtaGVhZGVyLWNlbGxbX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToxMnB4O2ZvbnQtd2VpZ2h0OjUwMH0ubWF0LWNlbGxbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWZvb3Rlci1jZWxsW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MTRweH0ubWF0LWNhbGVuZGFyW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWZ9Lm1hdC1jYWxlbmRhci1ib2R5W19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MTNweH0ubWF0LWNhbGVuZGFyLWJvZHktbGFiZWxbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWNhbGVuZGFyLXBlcmlvZC1idXR0b25bX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToxNHB4O2ZvbnQtd2VpZ2h0OjUwMH0ubWF0LWNhbGVuZGFyLXRhYmxlLWhlYWRlcltfbmdjb250ZW50LSVDT01QJV0gICB0aFtfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjExcHg7Zm9udC13ZWlnaHQ6NDAwfS5tYXQtZGlhbG9nLXRpdGxlW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250OjUwMCAyMHB4LzMycHggUm9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2xldHRlci1zcGFjaW5nOm5vcm1hbH0ubWF0LWV4cGFuc2lvbi1wYW5lbC1oZWFkZXJbX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtmb250LXNpemU6MTVweDtmb250LXdlaWdodDo0MDB9Lm1hdC1leHBhbnNpb24tcGFuZWwtY29udGVudFtfbmdjb250ZW50LSVDT01QJV17Zm9udDo0MDAgMTRweC8yMHB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtsZXR0ZXItc3BhY2luZzpub3JtYWx9Lm1hdC1mb3JtLWZpZWxkW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6aW5oZXJpdDtmb250LXdlaWdodDo0MDA7bGluZS1oZWlnaHQ6MS4xMjU7Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2xldHRlci1zcGFjaW5nOm5vcm1hbH0ubWF0LWZvcm0tZmllbGQtd3JhcHBlcltfbmdjb250ZW50LSVDT01QJV17cGFkZGluZy1ib3R0b206MS4zNDM3NWVtfS5tYXQtZm9ybS1maWVsZC1wcmVmaXhbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pY29uW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1mb3JtLWZpZWxkLXN1ZmZpeFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWljb25bX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToxNTAlO2xpbmUtaGVpZ2h0OjEuMTI1fS5tYXQtZm9ybS1maWVsZC1wcmVmaXhbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pY29uLWJ1dHRvbltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtZm9ybS1maWVsZC1zdWZmaXhbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pY29uLWJ1dHRvbltfbmdjb250ZW50LSVDT01QJV17aGVpZ2h0OjEuNWVtO3dpZHRoOjEuNWVtfS5tYXQtZm9ybS1maWVsZC1wcmVmaXhbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pY29uLWJ1dHRvbltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWljb25bX25nY29udGVudC0lQ09NUCVdLCAubWF0LWZvcm0tZmllbGQtc3VmZml4W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaWNvbi1idXR0b25bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pY29uW19uZ2NvbnRlbnQtJUNPTVAlXXtoZWlnaHQ6MS4xMjVlbTtsaW5lLWhlaWdodDoxLjEyNX0ubWF0LWZvcm0tZmllbGQtaW5maXhbX25nY29udGVudC0lQ09NUCVde3BhZGRpbmc6LjVlbSAwO2JvcmRlci10b3A6Ljg0Mzc1ZW0gc29saWQgdHJhbnNwYXJlbnR9Lm1hdC1mb3JtLWZpZWxkLWNhbi1mbG9hdC5tYXQtZm9ybS1maWVsZC1zaG91bGQtZmxvYXRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1mb3JtLWZpZWxkLWNhbi1mbG9hdFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWlucHV0LXNlcnZlcltfbmdjb250ZW50LSVDT01QJV06Zm9jdXMgKyAubWF0LWZvcm0tZmllbGQtbGFiZWwtd3JhcHBlcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVde3RyYW5zZm9ybTp0cmFuc2xhdGVZKC0xLjM0Mzc1ZW0pIHNjYWxlKDAuNzUpO3dpZHRoOjEzMy4zMzMzMzMzMzMzJX0ubWF0LWZvcm0tZmllbGQtY2FuLWZsb2F0W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaW5wdXQtc2VydmVyW2xhYmVsXVtfbmdjb250ZW50LSVDT01QJV06bm90KDpsYWJlbC1zaG93bikgKyAubWF0LWZvcm0tZmllbGQtbGFiZWwtd3JhcHBlcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVde3RyYW5zZm9ybTp0cmFuc2xhdGVZKC0xLjM0Mzc0ZW0pIHNjYWxlKDAuNzUpO3dpZHRoOjEzMy4zMzMzNDMzMzMzJX0ubWF0LWZvcm0tZmllbGQtbGFiZWwtd3JhcHBlcltfbmdjb250ZW50LSVDT01QJV17dG9wOi0wLjg0Mzc1ZW07cGFkZGluZy10b3A6Ljg0Mzc1ZW19Lm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXt0b3A6MS4zNDM3NWVtfS5tYXQtZm9ybS1maWVsZC11bmRlcmxpbmVbX25nY29udGVudC0lQ09NUCVde2JvdHRvbToxLjM0Mzc1ZW19Lm1hdC1mb3JtLWZpZWxkLXN1YnNjcmlwdC13cmFwcGVyW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6NzUlO21hcmdpbi10b3A6LjY2NjY2NjY2NjdlbTt0b3A6Y2FsYygxMDAlIC0gMS43OTE2NjY2NjY3ZW0pfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWxlZ2FjeVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtd3JhcHBlcltfbmdjb250ZW50LSVDT01QJV17cGFkZGluZy1ib3R0b206MS4yNWVtfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWxlZ2FjeVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtaW5maXhbX25nY29udGVudC0lQ09NUCVde3BhZGRpbmc6LjQzNzVlbSAwfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWxlZ2FjeS5tYXQtZm9ybS1maWVsZC1jYW4tZmxvYXQubWF0LWZvcm0tZmllbGQtc2hvdWxkLWZsb2F0W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWxlZ2FjeS5tYXQtZm9ybS1maWVsZC1jYW4tZmxvYXRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pbnB1dC1zZXJ2ZXJbX25nY29udGVudC0lQ09NUCVdOmZvY3VzICsgLm1hdC1mb3JtLWZpZWxkLWxhYmVsLXdyYXBwZXJbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXt0cmFuc2Zvcm06dHJhbnNsYXRlWSgtMS4yODEyNWVtKSBzY2FsZSgwLjc1KSBwZXJzcGVjdGl2ZSgxMDBweCkgdHJhbnNsYXRlWigwLjAwMXB4KTstbXMtdHJhbnNmb3JtOnRyYW5zbGF0ZVkoLTEuMjgxMjVlbSkgc2NhbGUoMC43NSk7d2lkdGg6MTMzLjMzMzMzMzMzMzMlfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWxlZ2FjeS5tYXQtZm9ybS1maWVsZC1jYW4tZmxvYXRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWF1dG9maWxsLWNvbnRyb2xbX25nY29udGVudC0lQ09NUCVdOi13ZWJraXQtYXV0b2ZpbGwgKyAubWF0LWZvcm0tZmllbGQtbGFiZWwtd3JhcHBlcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVde3RyYW5zZm9ybTp0cmFuc2xhdGVZKC0xLjI4MTI1ZW0pIHNjYWxlKDAuNzUpIHBlcnNwZWN0aXZlKDEwMHB4KSB0cmFuc2xhdGVaKDAuMDAxMDFweCk7LW1zLXRyYW5zZm9ybTp0cmFuc2xhdGVZKC0xLjI4MTI0ZW0pIHNjYWxlKDAuNzUpO3dpZHRoOjEzMy4zMzMzNDMzMzMzJX0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1sZWdhY3kubWF0LWZvcm0tZmllbGQtY2FuLWZsb2F0W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaW5wdXQtc2VydmVyW2xhYmVsXVtfbmdjb250ZW50LSVDT01QJV06bm90KDpsYWJlbC1zaG93bikgKyAubWF0LWZvcm0tZmllbGQtbGFiZWwtd3JhcHBlcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVde3RyYW5zZm9ybTp0cmFuc2xhdGVZKC0xLjI4MTI1ZW0pIHNjYWxlKDAuNzUpIHBlcnNwZWN0aXZlKDEwMHB4KSB0cmFuc2xhdGVaKDAuMDAxMDJweCk7LW1zLXRyYW5zZm9ybTp0cmFuc2xhdGVZKC0xLjI4MTIzZW0pIHNjYWxlKDAuNzUpO3dpZHRoOjEzMy4zMzMzNTMzMzMzJX0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1sZWdhY3lbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXt0b3A6MS4yODEyNWVtfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWxlZ2FjeVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtdW5kZXJsaW5lW19uZ2NvbnRlbnQtJUNPTVAlXXtib3R0b206MS4yNWVtfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWxlZ2FjeVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtc3Vic2NyaXB0LXdyYXBwZXJbX25nY29udGVudC0lQ09NUCVde21hcmdpbi10b3A6LjU0MTY2NjY2NjdlbTt0b3A6Y2FsYygxMDAlIC0gMS42NjY2NjY2NjY3ZW0pfUBtZWRpYSBwcmludHsubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1sZWdhY3kubWF0LWZvcm0tZmllbGQtY2FuLWZsb2F0Lm1hdC1mb3JtLWZpZWxkLXNob3VsZC1mbG9hdFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1sZWdhY3kubWF0LWZvcm0tZmllbGQtY2FuLWZsb2F0W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaW5wdXQtc2VydmVyW19uZ2NvbnRlbnQtJUNPTVAlXTpmb2N1cyArIC5tYXQtZm9ybS1maWVsZC1sYWJlbC13cmFwcGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17dHJhbnNmb3JtOnRyYW5zbGF0ZVkoLTEuMjgxMjJlbSkgc2NhbGUoMC43NSl9Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtbGVnYWN5Lm1hdC1mb3JtLWZpZWxkLWNhbi1mbG9hdFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtYXV0b2ZpbGwtY29udHJvbFtfbmdjb250ZW50LSVDT01QJV06LXdlYmtpdC1hdXRvZmlsbCArIC5tYXQtZm9ybS1maWVsZC1sYWJlbC13cmFwcGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17dHJhbnNmb3JtOnRyYW5zbGF0ZVkoLTEuMjgxMjFlbSkgc2NhbGUoMC43NSl9Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtbGVnYWN5Lm1hdC1mb3JtLWZpZWxkLWNhbi1mbG9hdFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWlucHV0LXNlcnZlcltsYWJlbF1bX25nY29udGVudC0lQ09NUCVdOm5vdCg6bGFiZWwtc2hvd24pICsgLm1hdC1mb3JtLWZpZWxkLWxhYmVsLXdyYXBwZXJbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXt0cmFuc2Zvcm06dHJhbnNsYXRlWSgtMS4yODEyZW0pIHNjYWxlKDAuNzUpfX0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1maWxsW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1pbmZpeFtfbmdjb250ZW50LSVDT01QJV17cGFkZGluZzouMjVlbSAwIC43NWVtIDB9Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtZmlsbFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVde3RvcDoxLjA5Mzc1ZW07bWFyZ2luLXRvcDotMC41ZW19Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtZmlsbC5tYXQtZm9ybS1maWVsZC1jYW4tZmxvYXQubWF0LWZvcm0tZmllbGQtc2hvdWxkLWZsb2F0W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWZpbGwubWF0LWZvcm0tZmllbGQtY2FuLWZsb2F0W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaW5wdXQtc2VydmVyW19uZ2NvbnRlbnQtJUNPTVAlXTpmb2N1cyArIC5tYXQtZm9ybS1maWVsZC1sYWJlbC13cmFwcGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17dHJhbnNmb3JtOnRyYW5zbGF0ZVkoLTAuNTkzNzVlbSkgc2NhbGUoMC43NSk7d2lkdGg6MTMzLjMzMzMzMzMzMzMlfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWZpbGwubWF0LWZvcm0tZmllbGQtY2FuLWZsb2F0W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaW5wdXQtc2VydmVyW2xhYmVsXVtfbmdjb250ZW50LSVDT01QJV06bm90KDpsYWJlbC1zaG93bikgKyAubWF0LWZvcm0tZmllbGQtbGFiZWwtd3JhcHBlcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVde3RyYW5zZm9ybTp0cmFuc2xhdGVZKC0wLjU5Mzc0ZW0pIHNjYWxlKDAuNzUpO3dpZHRoOjEzMy4zMzMzNDMzMzMzJX0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1vdXRsaW5lW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1pbmZpeFtfbmdjb250ZW50LSVDT01QJV17cGFkZGluZzoxZW0gMCAxZW0gMH0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1vdXRsaW5lW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17dG9wOjEuODQzNzVlbTttYXJnaW4tdG9wOi0wLjI1ZW19Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2Utb3V0bGluZS5tYXQtZm9ybS1maWVsZC1jYW4tZmxvYXQubWF0LWZvcm0tZmllbGQtc2hvdWxkLWZsb2F0W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLW91dGxpbmUubWF0LWZvcm0tZmllbGQtY2FuLWZsb2F0W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaW5wdXQtc2VydmVyW19uZ2NvbnRlbnQtJUNPTVAlXTpmb2N1cyArIC5tYXQtZm9ybS1maWVsZC1sYWJlbC13cmFwcGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17dHJhbnNmb3JtOnRyYW5zbGF0ZVkoLTEuNTkzNzVlbSkgc2NhbGUoMC43NSk7d2lkdGg6MTMzLjMzMzMzMzMzMzMlfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLW91dGxpbmUubWF0LWZvcm0tZmllbGQtY2FuLWZsb2F0W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaW5wdXQtc2VydmVyW2xhYmVsXVtfbmdjb250ZW50LSVDT01QJV06bm90KDpsYWJlbC1zaG93bikgKyAubWF0LWZvcm0tZmllbGQtbGFiZWwtd3JhcHBlcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVde3RyYW5zZm9ybTp0cmFuc2xhdGVZKC0xLjU5Mzc0ZW0pIHNjYWxlKDAuNzUpO3dpZHRoOjEzMy4zMzMzNDMzMzMzJX0ubWF0LWdyaWQtdGlsZS1oZWFkZXJbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWdyaWQtdGlsZS1mb290ZXJbX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToxNHB4fS5tYXQtZ3JpZC10aWxlLWhlYWRlcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpbmVbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWdyaWQtdGlsZS1mb290ZXJbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saW5lW19uZ2NvbnRlbnQtJUNPTVAlXXt3aGl0ZS1zcGFjZTpub3dyYXA7b3ZlcmZsb3c6aGlkZGVuO3RleHQtb3ZlcmZsb3c6ZWxsaXBzaXM7ZGlzcGxheTpibG9jaztib3gtc2l6aW5nOmJvcmRlci1ib3h9Lm1hdC1ncmlkLXRpbGUtaGVhZGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGluZVtfbmdjb250ZW50LSVDT01QJV06bnRoLWNoaWxkKG4rMiksIC5tYXQtZ3JpZC10aWxlLWZvb3Rlcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpbmVbX25nY29udGVudC0lQ09NUCVdOm50aC1jaGlsZChuKzIpe2ZvbnQtc2l6ZToxMnB4fWlucHV0Lm1hdC1pbnB1dC1lbGVtZW50W19uZ2NvbnRlbnQtJUNPTVAlXXttYXJnaW4tdG9wOi0wLjA2MjVlbX0ubWF0LW1lbnUtaXRlbVtfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2ZvbnQtc2l6ZToxNHB4O2ZvbnQtd2VpZ2h0OjQwMH0ubWF0LXBhZ2luYXRvcltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtcGFnaW5hdG9yLXBhZ2Utc2l6ZVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXNlbGVjdC10cmlnZ2VyW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7Zm9udC1zaXplOjEycHh9Lm1hdC1yYWRpby1idXR0b25bX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZn0ubWF0LXNlbGVjdFtfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmfS5tYXQtc2VsZWN0LXRyaWdnZXJbX25nY29udGVudC0lQ09NUCVde2hlaWdodDoxLjEyNWVtfS5tYXQtc2xpZGUtdG9nZ2xlLWNvbnRlbnRbX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZn0ubWF0LXNsaWRlci10aHVtYi1sYWJlbC10ZXh0W19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7Zm9udC1zaXplOjEycHg7Zm9udC13ZWlnaHQ6NTAwfS5tYXQtc3RlcHBlci12ZXJ0aWNhbFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtc3RlcHBlci1ob3Jpem9udGFsW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWZ9Lm1hdC1zdGVwLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MTRweDtmb250LXdlaWdodDo0MDB9Lm1hdC1zdGVwLXN1Yi1sYWJlbC1lcnJvcltfbmdjb250ZW50LSVDT01QJV17Zm9udC13ZWlnaHQ6bm9ybWFsfS5tYXQtc3RlcC1sYWJlbC1lcnJvcltfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjE0cHh9Lm1hdC1zdGVwLWxhYmVsLXNlbGVjdGVkW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MTRweDtmb250LXdlaWdodDo1MDB9Lm1hdC10YWItZ3JvdXBbX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZn0ubWF0LXRhYi1sYWJlbFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdGFiLWxpbmtbX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtmb250LXNpemU6MTRweDtmb250LXdlaWdodDo1MDB9Lm1hdC10b29sYmFyW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10b29sYmFyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIGgxW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10b29sYmFyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIGgyW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10b29sYmFyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIGgzW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10b29sYmFyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIGg0W19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10b29sYmFyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIGg1W19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10b29sYmFyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIGg2W19uZ2NvbnRlbnQtJUNPTVAlXXtmb250OjUwMCAyMHB4LzMycHggUm9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2xldHRlci1zcGFjaW5nOm5vcm1hbDttYXJnaW46MH0ubWF0LXRvb2x0aXBbX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtmb250LXNpemU6MTBweDtwYWRkaW5nLXRvcDo2cHg7cGFkZGluZy1ib3R0b206NnB4fS5tYXQtdG9vbHRpcC1oYW5kc2V0W19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MTRweDtwYWRkaW5nLXRvcDo4cHg7cGFkZGluZy1ib3R0b206OHB4fS5tYXQtbGlzdC1pdGVtW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWZ9Lm1hdC1saXN0LW9wdGlvbltfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmfS5tYXQtbGlzdC1iYXNlW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGlzdC1pdGVtW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MTZweH0ubWF0LWxpc3QtYmFzZVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpc3QtaXRlbVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpbmVbX25nY29udGVudC0lQ09NUCVde3doaXRlLXNwYWNlOm5vd3JhcDtvdmVyZmxvdzpoaWRkZW47dGV4dC1vdmVyZmxvdzplbGxpcHNpcztkaXNwbGF5OmJsb2NrO2JveC1zaXppbmc6Ym9yZGVyLWJveH0ubWF0LWxpc3QtYmFzZVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpc3QtaXRlbVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpbmVbX25nY29udGVudC0lQ09NUCVdOm50aC1jaGlsZChuKzIpe2ZvbnQtc2l6ZToxNHB4fS5tYXQtbGlzdC1iYXNlW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGlzdC1vcHRpb25bX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToxNnB4fS5tYXQtbGlzdC1iYXNlW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGlzdC1vcHRpb25bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saW5lW19uZ2NvbnRlbnQtJUNPTVAlXXt3aGl0ZS1zcGFjZTpub3dyYXA7b3ZlcmZsb3c6aGlkZGVuO3RleHQtb3ZlcmZsb3c6ZWxsaXBzaXM7ZGlzcGxheTpibG9jaztib3gtc2l6aW5nOmJvcmRlci1ib3h9Lm1hdC1saXN0LWJhc2VbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saXN0LW9wdGlvbltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpbmVbX25nY29udGVudC0lQ09NUCVdOm50aC1jaGlsZChuKzIpe2ZvbnQtc2l6ZToxNHB4fS5tYXQtbGlzdC1iYXNlW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtc3ViaGVhZGVyW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7Zm9udC1zaXplOjE0cHg7Zm9udC13ZWlnaHQ6NTAwfS5tYXQtbGlzdC1iYXNlW2RlbnNlXVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpc3QtaXRlbVtfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjEycHh9Lm1hdC1saXN0LWJhc2VbZGVuc2VdW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGlzdC1pdGVtW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGluZVtfbmdjb250ZW50LSVDT01QJV17d2hpdGUtc3BhY2U6bm93cmFwO292ZXJmbG93OmhpZGRlbjt0ZXh0LW92ZXJmbG93OmVsbGlwc2lzO2Rpc3BsYXk6YmxvY2s7Ym94LXNpemluZzpib3JkZXItYm94fS5tYXQtbGlzdC1iYXNlW2RlbnNlXVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpc3QtaXRlbVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpbmVbX25nY29udGVudC0lQ09NUCVdOm50aC1jaGlsZChuKzIpe2ZvbnQtc2l6ZToxMnB4fS5tYXQtbGlzdC1iYXNlW2RlbnNlXVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpc3Qtb3B0aW9uW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MTJweH0ubWF0LWxpc3QtYmFzZVtkZW5zZV1bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saXN0LW9wdGlvbltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpbmVbX25nY29udGVudC0lQ09NUCVde3doaXRlLXNwYWNlOm5vd3JhcDtvdmVyZmxvdzpoaWRkZW47dGV4dC1vdmVyZmxvdzplbGxpcHNpcztkaXNwbGF5OmJsb2NrO2JveC1zaXppbmc6Ym9yZGVyLWJveH0ubWF0LWxpc3QtYmFzZVtkZW5zZV1bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saXN0LW9wdGlvbltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpbmVbX25nY29udGVudC0lQ09NUCVdOm50aC1jaGlsZChuKzIpe2ZvbnQtc2l6ZToxMnB4fS5tYXQtbGlzdC1iYXNlW2RlbnNlXVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXN1YmhlYWRlcltfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2ZvbnQtc2l6ZToxMnB4O2ZvbnQtd2VpZ2h0OjUwMH0ubWF0LW9wdGlvbltfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2ZvbnQtc2l6ZToxNnB4fS5tYXQtb3B0Z3JvdXAtbGFiZWxbX25nY29udGVudC0lQ09NUCVde2ZvbnQ6NTAwIDE0cHgvMjRweCBSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7bGV0dGVyLXNwYWNpbmc6bm9ybWFsfS5tYXQtc2ltcGxlLXNuYWNrYmFyW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7Zm9udC1zaXplOjE0cHh9Lm1hdC1zaW1wbGUtc25hY2tiYXItYWN0aW9uW19uZ2NvbnRlbnQtJUNPTVAlXXtsaW5lLWhlaWdodDoxO2ZvbnQtZmFtaWx5OmluaGVyaXQ7Zm9udC1zaXplOmluaGVyaXQ7Zm9udC13ZWlnaHQ6NTAwfS5tYXQtdHJlZVtfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmfS5tYXQtdHJlZS1ub2RlW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1uZXN0ZWQtdHJlZS1ub2RlW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXdlaWdodDo0MDA7Zm9udC1zaXplOjE0cHh9Lm1hdC1yaXBwbGVbX25nY29udGVudC0lQ09NUCVde292ZXJmbG93OmhpZGRlbjtwb3NpdGlvbjpyZWxhdGl2ZX0ubWF0LXJpcHBsZVtfbmdjb250ZW50LSVDT01QJV06bm90KDplbXB0eSl7dHJhbnNmb3JtOnRyYW5zbGF0ZVooMCl9Lm1hdC1yaXBwbGUubWF0LXJpcHBsZS11bmJvdW5kZWRbX25nY29udGVudC0lQ09NUCVde292ZXJmbG93OnZpc2libGV9Lm1hdC1yaXBwbGUtZWxlbWVudFtfbmdjb250ZW50LSVDT01QJV17cG9zaXRpb246YWJzb2x1dGU7Ym9yZGVyLXJhZGl1czo1MCU7cG9pbnRlci1ldmVudHM6bm9uZTt0cmFuc2l0aW9uOm9wYWNpdHksdHJhbnNmb3JtIDBtcyBjdWJpYy1iZXppZXIoMCwgMCwgMC4yLCAxKTt0cmFuc2Zvcm06c2NhbGUoMCl9LmNkay1oaWdoLWNvbnRyYXN0LWFjdGl2ZVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXJpcHBsZS1lbGVtZW50W19uZ2NvbnRlbnQtJUNPTVAlXXtkaXNwbGF5Om5vbmV9LmNkay12aXN1YWxseS1oaWRkZW5bX25nY29udGVudC0lQ09NUCVde2JvcmRlcjowO2NsaXA6cmVjdCgwIDAgMCAwKTtoZWlnaHQ6MXB4O21hcmdpbjotMXB4O292ZXJmbG93OmhpZGRlbjtwYWRkaW5nOjA7cG9zaXRpb246YWJzb2x1dGU7d2lkdGg6MXB4O291dGxpbmU6MDstd2Via2l0LWFwcGVhcmFuY2U6bm9uZTstbW96LWFwcGVhcmFuY2U6bm9uZX0uY2RrLW92ZXJsYXktY29udGFpbmVyW19uZ2NvbnRlbnQtJUNPTVAlXSwgLmNkay1nbG9iYWwtb3ZlcmxheS13cmFwcGVyW19uZ2NvbnRlbnQtJUNPTVAlXXtwb2ludGVyLWV2ZW50czpub25lO3RvcDowO2xlZnQ6MDtoZWlnaHQ6MTAwJTt3aWR0aDoxMDAlfS5jZGstb3ZlcmxheS1jb250YWluZXJbX25nY29udGVudC0lQ09NUCVde3Bvc2l0aW9uOmZpeGVkO3otaW5kZXg6MTAwMH0uY2RrLW92ZXJsYXktY29udGFpbmVyW19uZ2NvbnRlbnQtJUNPTVAlXTplbXB0eXtkaXNwbGF5Om5vbmV9LmNkay1nbG9iYWwtb3ZlcmxheS13cmFwcGVyW19uZ2NvbnRlbnQtJUNPTVAlXXtkaXNwbGF5OmZsZXg7cG9zaXRpb246YWJzb2x1dGU7ei1pbmRleDoxMDAwfS5jZGstb3ZlcmxheS1wYW5lW19uZ2NvbnRlbnQtJUNPTVAlXXtwb3NpdGlvbjphYnNvbHV0ZTtwb2ludGVyLWV2ZW50czphdXRvO2JveC1zaXppbmc6Ym9yZGVyLWJveDt6LWluZGV4OjEwMDA7ZGlzcGxheTpmbGV4O21heC13aWR0aDoxMDAlO21heC1oZWlnaHQ6MTAwJX0uY2RrLW92ZXJsYXktYmFja2Ryb3BbX25nY29udGVudC0lQ09NUCVde3Bvc2l0aW9uOmFic29sdXRlO3RvcDowO2JvdHRvbTowO2xlZnQ6MDtyaWdodDowO3otaW5kZXg6MTAwMDtwb2ludGVyLWV2ZW50czphdXRvOy13ZWJraXQtdGFwLWhpZ2hsaWdodC1jb2xvcjp0cmFuc3BhcmVudDt0cmFuc2l0aW9uOm9wYWNpdHkgNDAwbXMgY3ViaWMtYmV6aWVyKDAuMjUsIDAuOCwgMC4yNSwgMSk7b3BhY2l0eTowfS5jZGstb3ZlcmxheS1iYWNrZHJvcC5jZGstb3ZlcmxheS1iYWNrZHJvcC1zaG93aW5nW19uZ2NvbnRlbnQtJUNPTVAlXXtvcGFjaXR5OjF9QG1lZGlhIHNjcmVlbiBhbmQgKC1tcy1oaWdoLWNvbnRyYXN0OiBhY3RpdmUpey5jZGstb3ZlcmxheS1iYWNrZHJvcC5jZGstb3ZlcmxheS1iYWNrZHJvcC1zaG93aW5nW19uZ2NvbnRlbnQtJUNPTVAlXXtvcGFjaXR5Oi42fX0uY2RrLW92ZXJsYXktZGFyay1iYWNrZHJvcFtfbmdjb250ZW50LSVDT01QJV17YmFja2dyb3VuZDpyZ2JhKDAsMCwwLC4zMil9LmNkay1vdmVybGF5LXRyYW5zcGFyZW50LWJhY2tkcm9wW19uZ2NvbnRlbnQtJUNPTVAlXSwgLmNkay1vdmVybGF5LXRyYW5zcGFyZW50LWJhY2tkcm9wLmNkay1vdmVybGF5LWJhY2tkcm9wLXNob3dpbmdbX25nY29udGVudC0lQ09NUCVde29wYWNpdHk6MH0uY2RrLW92ZXJsYXktY29ubmVjdGVkLXBvc2l0aW9uLWJvdW5kaW5nLWJveFtfbmdjb250ZW50LSVDT01QJV17cG9zaXRpb246YWJzb2x1dGU7ei1pbmRleDoxMDAwO2Rpc3BsYXk6ZmxleDtmbGV4LWRpcmVjdGlvbjpjb2x1bW47bWluLXdpZHRoOjFweDttaW4taGVpZ2h0OjFweH0uY2RrLWdsb2JhbC1zY3JvbGxibG9ja1tfbmdjb250ZW50LSVDT01QJV17cG9zaXRpb246Zml4ZWQ7d2lkdGg6MTAwJTtvdmVyZmxvdy15OnNjcm9sbH1Aa2V5ZnJhbWVzIGNkay10ZXh0LWZpZWxkLWF1dG9maWxsLXN0YXJ0e31Aa2V5ZnJhbWVzIGNkay10ZXh0LWZpZWxkLWF1dG9maWxsLWVuZHt9LmNkay10ZXh0LWZpZWxkLWF1dG9maWxsLW1vbml0b3JlZFtfbmdjb250ZW50LSVDT01QJV06LXdlYmtpdC1hdXRvZmlsbHthbmltYXRpb246Y2RrLXRleHQtZmllbGQtYXV0b2ZpbGwtc3RhcnQgMHMgMW1zfS5jZGstdGV4dC1maWVsZC1hdXRvZmlsbC1tb25pdG9yZWRbX25nY29udGVudC0lQ09NUCVdOm5vdCg6LXdlYmtpdC1hdXRvZmlsbCl7YW5pbWF0aW9uOmNkay10ZXh0LWZpZWxkLWF1dG9maWxsLWVuZCAwcyAxbXN9dGV4dGFyZWEuY2RrLXRleHRhcmVhLWF1dG9zaXplW19uZ2NvbnRlbnQtJUNPTVAlXXtyZXNpemU6bm9uZX10ZXh0YXJlYS5jZGstdGV4dGFyZWEtYXV0b3NpemUtbWVhc3VyaW5nW19uZ2NvbnRlbnQtJUNPTVAlXXtwYWRkaW5nOjJweCAwICFpbXBvcnRhbnQ7Ym94LXNpemluZzpjb250ZW50LWJveCAhaW1wb3J0YW50O2hlaWdodDphdXRvICFpbXBvcnRhbnQ7b3ZlcmZsb3c6aGlkZGVuICFpbXBvcnRhbnR9dGV4dGFyZWEuY2RrLXRleHRhcmVhLWF1dG9zaXplLW1lYXN1cmluZy1maXJlZm94W19uZ2NvbnRlbnQtJUNPTVAlXXtwYWRkaW5nOjJweCAwICFpbXBvcnRhbnQ7Ym94LXNpemluZzpjb250ZW50LWJveCAhaW1wb3J0YW50O2hlaWdodDowICFpbXBvcnRhbnR9Lm1hdC1mb2N1cy1pbmRpY2F0b3JbX25nY29udGVudC0lQ09NUCVde3Bvc2l0aW9uOnJlbGF0aXZlfS5tYXQtbWRjLWZvY3VzLWluZGljYXRvcltfbmdjb250ZW50LSVDT01QJV17cG9zaXRpb246cmVsYXRpdmV9Lm1hdC1yaXBwbGUtZWxlbWVudFtfbmdjb250ZW50LSVDT01QJV17YmFja2dyb3VuZC1jb2xvcjpyZ2JhKDAsMCwwLC4xKX0ubWF0LW9wdGlvbltfbmdjb250ZW50LSVDT01QJV17Y29sb3I6IzIxMjEyMX0ubWF0LW9wdGlvbltfbmdjb250ZW50LSVDT01QJV06aG92ZXI6bm90KC5tYXQtb3B0aW9uLWRpc2FibGVkKSwgLm1hdC1vcHRpb25bX25nY29udGVudC0lQ09NUCVdOmZvY3VzOm5vdCgubWF0LW9wdGlvbi1kaXNhYmxlZCl7YmFja2dyb3VuZDpyZ2JhKDAsMCwwLC4wNCl9Lm1hdC1vcHRpb24ubWF0LXNlbGVjdGVkW19uZ2NvbnRlbnQtJUNPTVAlXTpub3QoLm1hdC1vcHRpb24tbXVsdGlwbGUpOm5vdCgubWF0LW9wdGlvbi1kaXNhYmxlZCl7YmFja2dyb3VuZDpyZ2JhKDAsMCwwLC4wNCl9Lm1hdC1vcHRpb24ubWF0LWFjdGl2ZVtfbmdjb250ZW50LSVDT01QJV17YmFja2dyb3VuZDpyZ2JhKDAsMCwwLC4wNCk7Y29sb3I6IzIxMjEyMX0ubWF0LW9wdGlvbi5tYXQtb3B0aW9uLWRpc2FibGVkW19uZ2NvbnRlbnQtJUNPTVAlXXtjb2xvcjpyZ2JhKDAsMCwwLC4zOCl9Lm1hdC1wcmltYXJ5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtb3B0aW9uLm1hdC1zZWxlY3RlZFtfbmdjb250ZW50LSVDT01QJV06bm90KC5tYXQtb3B0aW9uLWRpc2FibGVkKXtjb2xvcjojZjU3YzAwfS5tYXQtYWNjZW50W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtb3B0aW9uLm1hdC1zZWxlY3RlZFtfbmdjb250ZW50LSVDT01QJV06bm90KC5tYXQtb3B0aW9uLWRpc2FibGVkKXtjb2xvcjojZmY5ODAwfS5tYXQtd2Fybltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LW9wdGlvbi5tYXQtc2VsZWN0ZWRbX25nY29udGVudC0lQ09NUCVdOm5vdCgubWF0LW9wdGlvbi1kaXNhYmxlZCl7Y29sb3I6I2Y0NDMzNn0ubWF0LW9wdGdyb3VwLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXtjb2xvcjojNjE2MTYxfS5tYXQtb3B0Z3JvdXAtZGlzYWJsZWRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1vcHRncm91cC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17Y29sb3I6cmdiYSgwLDAsMCwuMzgpfS5tYXQtcHNldWRvLWNoZWNrYm94W19uZ2NvbnRlbnQtJUNPTVAlXXtjb2xvcjojNjE2MTYxfS5tYXQtcHNldWRvLWNoZWNrYm94W19uZ2NvbnRlbnQtJUNPTVAlXTo6YWZ0ZXJ7Y29sb3I6I2ZhZmFmYX0ubWF0LXBzZXVkby1jaGVja2JveC1kaXNhYmxlZFtfbmdjb250ZW50LSVDT01QJV17Y29sb3I6I2IwYjBiMH0ubWF0LXByaW1hcnlbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1wc2V1ZG8tY2hlY2tib3gtY2hlY2tlZFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtcHJpbWFyeVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXBzZXVkby1jaGVja2JveC1pbmRldGVybWluYXRlW19uZ2NvbnRlbnQtJUNPTVAlXXtiYWNrZ3JvdW5kOiNmNTdjMDB9Lm1hdC1wc2V1ZG8tY2hlY2tib3gtY2hlY2tlZFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtcHNldWRvLWNoZWNrYm94LWluZGV0ZXJtaW5hdGVbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWFjY2VudFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXBzZXVkby1jaGVja2JveC1jaGVja2VkW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1hY2NlbnRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1wc2V1ZG8tY2hlY2tib3gtaW5kZXRlcm1pbmF0ZVtfbmdjb250ZW50LSVDT01QJV17YmFja2dyb3VuZDojZmY5ODAwfS5tYXQtd2Fybltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXBzZXVkby1jaGVja2JveC1jaGVja2VkW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC13YXJuW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtcHNldWRvLWNoZWNrYm94LWluZGV0ZXJtaW5hdGVbX25nY29udGVudC0lQ09NUCVde2JhY2tncm91bmQ6I2Y0NDMzNn0ubWF0LXBzZXVkby1jaGVja2JveC1jaGVja2VkLm1hdC1wc2V1ZG8tY2hlY2tib3gtZGlzYWJsZWRbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXBzZXVkby1jaGVja2JveC1pbmRldGVybWluYXRlLm1hdC1wc2V1ZG8tY2hlY2tib3gtZGlzYWJsZWRbX25nY29udGVudC0lQ09NUCVde2JhY2tncm91bmQ6I2IwYjBiMH0ubWF0LWFwcC1iYWNrZ3JvdW5kW19uZ2NvbnRlbnQtJUNPTVAlXXtiYWNrZ3JvdW5kLWNvbG9yOiNmYWZhZmE7Y29sb3I6IzIxMjEyMX0ubWF0LWVsZXZhdGlvbi16MFtfbmdjb250ZW50LSVDT01QJV17Ym94LXNoYWRvdzowcHggMHB4IDBweCAwcHggcmdiYSgwLCAwLCAwLCAwLjIpLDBweCAwcHggMHB4IDBweCByZ2JhKDAsIDAsIDAsIDAuMTQpLDBweCAwcHggMHB4IDBweCByZ2JhKDAsIDAsIDAsIDAuMTIpfS5tYXQtZWxldmF0aW9uLXoxW19uZ2NvbnRlbnQtJUNPTVAlXXtib3gtc2hhZG93OjBweCAycHggMXB4IC0xcHggcmdiYSgwLCAwLCAwLCAwLjIpLDBweCAxcHggMXB4IDBweCByZ2JhKDAsIDAsIDAsIDAuMTQpLDBweCAxcHggM3B4IDBweCByZ2JhKDAsIDAsIDAsIDAuMTIpfS5tYXQtZWxldmF0aW9uLXoyW19uZ2NvbnRlbnQtJUNPTVAlXXtib3gtc2hhZG93OjBweCAzcHggMXB4IC0ycHggcmdiYSgwLCAwLCAwLCAwLjIpLDBweCAycHggMnB4IDBweCByZ2JhKDAsIDAsIDAsIDAuMTQpLDBweCAxcHggNXB4IDBweCByZ2JhKDAsIDAsIDAsIDAuMTIpfS5tYXQtZWxldmF0aW9uLXozW19uZ2NvbnRlbnQtJUNPTVAlXXtib3gtc2hhZG93OjBweCAzcHggM3B4IC0ycHggcmdiYSgwLCAwLCAwLCAwLjIpLDBweCAzcHggNHB4IDBweCByZ2JhKDAsIDAsIDAsIDAuMTQpLDBweCAxcHggOHB4IDBweCByZ2JhKDAsIDAsIDAsIDAuMTIpfS5tYXQtZWxldmF0aW9uLXo0W19uZ2NvbnRlbnQtJUNPTVAlXXtib3gtc2hhZG93OjBweCAycHggNHB4IC0xcHggcmdiYSgwLCAwLCAwLCAwLjIpLDBweCA0cHggNXB4IDBweCByZ2JhKDAsIDAsIDAsIDAuMTQpLDBweCAxcHggMTBweCAwcHggcmdiYSgwLCAwLCAwLCAwLjEyKX0ubWF0LWVsZXZhdGlvbi16NVtfbmdjb250ZW50LSVDT01QJV17Ym94LXNoYWRvdzowcHggM3B4IDVweCAtMXB4IHJnYmEoMCwgMCwgMCwgMC4yKSwwcHggNXB4IDhweCAwcHggcmdiYSgwLCAwLCAwLCAwLjE0KSwwcHggMXB4IDE0cHggMHB4IHJnYmEoMCwgMCwgMCwgMC4xMil9Lm1hdC1lbGV2YXRpb24tejZbX25nY29udGVudC0lQ09NUCVde2JveC1zaGFkb3c6MHB4IDNweCA1cHggLTFweCByZ2JhKDAsIDAsIDAsIDAuMiksMHB4IDZweCAxMHB4IDBweCByZ2JhKDAsIDAsIDAsIDAuMTQpLDBweCAxcHggMThweCAwcHggcmdiYSgwLCAwLCAwLCAwLjEyKX0ubWF0LWVsZXZhdGlvbi16N1tfbmdjb250ZW50LSVDT01QJV17Ym94LXNoYWRvdzowcHggNHB4IDVweCAtMnB4IHJnYmEoMCwgMCwgMCwgMC4yKSwwcHggN3B4IDEwcHggMXB4IHJnYmEoMCwgMCwgMCwgMC4xNCksMHB4IDJweCAxNnB4IDFweCByZ2JhKDAsIDAsIDAsIDAuMTIpfS5tYXQtZWxldmF0aW9uLXo4W19uZ2NvbnRlbnQtJUNPTVAlXXtib3gtc2hhZG93OjBweCA1cHggNXB4IC0zcHggcmdiYSgwLCAwLCAwLCAwLjIpLDBweCA4cHggMTBweCAxcHggcmdiYSgwLCAwLCAwLCAwLjE0KSwwcHggM3B4IDE0cHggMnB4IHJnYmEoMCwgMCwgMCwgMC4xMil9Lm1hdC1lbGV2YXRpb24tejlbX25nY29udGVudC0lQ09NUCVde2JveC1zaGFkb3c6MHB4IDVweCA2cHggLTNweCByZ2JhKDAsIDAsIDAsIDAuMiksMHB4IDlweCAxMnB4IDFweCByZ2JhKDAsIDAsIDAsIDAuMTQpLDBweCAzcHggMTZweCAycHggcmdiYSgwLCAwLCAwLCAwLjEyKX0ubWF0LWVsZXZhdGlvbi16MTBbX25nY29udGVudC0lQ09NUCVde2JveC1zaGFkb3c6MHB4IDZweCA2cHggLTNweCByZ2JhKDAsIDAsIDAsIDAuMiksMHB4IDEwcHggMTRweCAxcHggcmdiYSgwLCAwLCAwLCAwLjE0KSwwcHggNHB4IDE4cHggM3B4IHJnYmEoMCwgMCwgMCwgMC4xMil9Lm1hdC1lbGV2YXRpb24tejExW19uZ2NvbnRlbnQtJUNPTVAlXXtib3gtc2hhZG93OjBweCA2cHggN3B4IC00cHggcmdiYSgwLCAwLCAwLCAwLjIpLDBweCAxMXB4IDE1cHggMXB4IHJnYmEoMCwgMCwgMCwgMC4xNCksMHB4IDRweCAyMHB4IDNweCByZ2JhKDAsIDAsIDAsIDAuMTIpfS5tYXQtZWxldmF0aW9uLXoxMltfbmdjb250ZW50LSVDT01QJV17Ym94LXNoYWRvdzowcHggN3B4IDhweCAtNHB4IHJnYmEoMCwgMCwgMCwgMC4yKSwwcHggMTJweCAxN3B4IDJweCByZ2JhKDAsIDAsIDAsIDAuMTQpLDBweCA1cHggMjJweCA0cHggcmdiYSgwLCAwLCAwLCAwLjEyKX0ubWF0LWVsZXZhdGlvbi16MTNbX25nY29udGVudC0lQ09NUCVde2JveC1zaGFkb3c6MHB4IDdweCA4cHggLTRweCByZ2JhKDAsIDAsIDAsIDAuMiksMHB4IDEzcHggMTlweCAycHggcmdiYSgwLCAwLCAwLCAwLjE0KSwwcHggNXB4IDI0cHggNHB4IHJnYmEoMCwgMCwgMCwgMC4xMil9Lm1hdC1lbGV2YXRpb24tejE0W19uZ2NvbnRlbnQtJUNPTVAlXXtib3gtc2hhZG93OjBweCA3cHggOXB4IC00cHggcmdiYSgwLCAwLCAwLCAwLjIpLDBweCAxNHB4IDIxcHggMnB4IHJnYmEoMCwgMCwgMCwgMC4xNCksMHB4IDVweCAyNnB4IDRweCByZ2JhKDAsIDAsIDAsIDAuMTIpfS5tYXQtZWxldmF0aW9uLXoxNVtfbmdjb250ZW50LSVDT01QJV17Ym94LXNoYWRvdzowcHggOHB4IDlweCAtNXB4IHJnYmEoMCwgMCwgMCwgMC4yKSwwcHggMTVweCAyMnB4IDJweCByZ2JhKDAsIDAsIDAsIDAuMTQpLDBweCA2cHggMjhweCA1cHggcmdiYSgwLCAwLCAwLCAwLjEyKX0ubWF0LWVsZXZhdGlvbi16MTZbX25nY29udGVudC0lQ09NUCVde2JveC1zaGFkb3c6MHB4IDhweCAxMHB4IC01cHggcmdiYSgwLCAwLCAwLCAwLjIpLDBweCAxNnB4IDI0cHggMnB4IHJnYmEoMCwgMCwgMCwgMC4xNCksMHB4IDZweCAzMHB4IDVweCByZ2JhKDAsIDAsIDAsIDAuMTIpfS5tYXQtZWxldmF0aW9uLXoxN1tfbmdjb250ZW50LSVDT01QJV17Ym94LXNoYWRvdzowcHggOHB4IDExcHggLTVweCByZ2JhKDAsIDAsIDAsIDAuMiksMHB4IDE3cHggMjZweCAycHggcmdiYSgwLCAwLCAwLCAwLjE0KSwwcHggNnB4IDMycHggNXB4IHJnYmEoMCwgMCwgMCwgMC4xMil9Lm1hdC1lbGV2YXRpb24tejE4W19uZ2NvbnRlbnQtJUNPTVAlXXtib3gtc2hhZG93OjBweCA5cHggMTFweCAtNXB4IHJnYmEoMCwgMCwgMCwgMC4yKSwwcHggMThweCAyOHB4IDJweCByZ2JhKDAsIDAsIDAsIDAuMTQpLDBweCA3cHggMzRweCA2cHggcmdiYSgwLCAwLCAwLCAwLjEyKX0ubWF0LWVsZXZhdGlvbi16MTlbX25nY29udGVudC0lQ09NUCVde2JveC1zaGFkb3c6MHB4IDlweCAxMnB4IC02cHggcmdiYSgwLCAwLCAwLCAwLjIpLDBweCAxOXB4IDI5cHggMnB4IHJnYmEoMCwgMCwgMCwgMC4xNCksMHB4IDdweCAzNnB4IDZweCByZ2JhKDAsIDAsIDAsIDAuMTIpfS5tYXQtZWxldmF0aW9uLXoyMFtfbmdjb250ZW50LSVDT01QJV17Ym94LXNoYWRvdzowcHggMTBweCAxM3B4IC02cHggcmdiYSgwLCAwLCAwLCAwLjIpLDBweCAyMHB4IDMxcHggM3B4IHJnYmEoMCwgMCwgMCwgMC4xNCksMHB4IDhweCAzOHB4IDdweCByZ2JhKDAsIDAsIDAsIDAuMTIpfS5tYXQtZWxldmF0aW9uLXoyMVtfbmdjb250ZW50LSVDT01QJV17Ym94LXNoYWRvdzowcHggMTBweCAxM3B4IC02cHggcmdiYSgwLCAwLCAwLCAwLjIpLDBweCAyMXB4IDMzcHggM3B4IHJnYmEoMCwgMCwgMCwgMC4xNCksMHB4IDhweCA0MHB4IDdweCByZ2JhKDAsIDAsIDAsIDAuMTIpfS5tYXQtZWxldmF0aW9uLXoyMltfbmdjb250ZW50LSVDT01QJV17Ym94LXNoYWRvdzowcHggMTBweCAxNHB4IC02cHggcmdiYSgwLCAwLCAwLCAwLjIpLDBweCAyMnB4IDM1cHggM3B4IHJnYmEoMCwgMCwgMCwgMC4xNCksMHB4IDhweCA0MnB4IDdweCByZ2JhKDAsIDAsIDAsIDAuMTIpfS5tYXQtZWxldmF0aW9uLXoyM1tfbmdjb250ZW50LSVDT01QJV17Ym94LXNoYWRvdzowcHggMTFweCAxNHB4IC03cHggcmdiYSgwLCAwLCAwLCAwLjIpLDBweCAyM3B4IDM2cHggM3B4IHJnYmEoMCwgMCwgMCwgMC4xNCksMHB4IDlweCA0NHB4IDhweCByZ2JhKDAsIDAsIDAsIDAuMTIpfS5tYXQtZWxldmF0aW9uLXoyNFtfbmdjb250ZW50LSVDT01QJV17Ym94LXNoYWRvdzowcHggMTFweCAxNXB4IC03cHggcmdiYSgwLCAwLCAwLCAwLjIpLDBweCAyNHB4IDM4cHggM3B4IHJnYmEoMCwgMCwgMCwgMC4xNCksMHB4IDlweCA0NnB4IDhweCByZ2JhKDAsIDAsIDAsIDAuMTIpfS5tYXQtdGhlbWUtbG9hZGVkLW1hcmtlcltfbmdjb250ZW50LSVDT01QJV17ZGlzcGxheTpub25lfS5tYXQtYXV0b2NvbXBsZXRlLXBhbmVsW19uZ2NvbnRlbnQtJUNPTVAlXXtiYWNrZ3JvdW5kOiNmZmY7Y29sb3I6IzIxMjEyMX0ubWF0LWF1dG9jb21wbGV0ZS1wYW5lbFtfbmdjb250ZW50LSVDT01QJV06bm90KFtjbGFzcyo9bWF0LWVsZXZhdGlvbi16XSl7Ym94LXNoYWRvdzowcHggMnB4IDRweCAtMXB4IHJnYmEoMCwgMCwgMCwgMC4yKSwwcHggNHB4IDVweCAwcHggcmdiYSgwLCAwLCAwLCAwLjE0KSwwcHggMXB4IDEwcHggMHB4IHJnYmEoMCwgMCwgMCwgMC4xMil9Lm1hdC1hdXRvY29tcGxldGUtcGFuZWxbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1vcHRpb24ubWF0LXNlbGVjdGVkW19uZ2NvbnRlbnQtJUNPTVAlXTpub3QoLm1hdC1hY3RpdmUpOm5vdCg6aG92ZXIpe2JhY2tncm91bmQ6I2ZmZn0ubWF0LWF1dG9jb21wbGV0ZS1wYW5lbFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LW9wdGlvbi5tYXQtc2VsZWN0ZWRbX25nY29udGVudC0lQ09NUCVdOm5vdCgubWF0LWFjdGl2ZSk6bm90KDpob3Zlcik6bm90KC5tYXQtb3B0aW9uLWRpc2FibGVkKXtjb2xvcjojMjEyMTIxfS5tYXQtYmFkZ2UtY29udGVudFtfbmdjb250ZW50LSVDT01QJV17Y29sb3I6I2ZmZjtiYWNrZ3JvdW5kOiNmNTdjMDB9LmNkay1oaWdoLWNvbnRyYXN0LWFjdGl2ZVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWJhZGdlLWNvbnRlbnRbX25nY29udGVudC0lQ09NUCVde291dGxpbmU6c29saWQgMXB4O2JvcmRlci1yYWRpdXM6MH0ubWF0LWJhZGdlLWFjY2VudFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWJhZGdlLWNvbnRlbnRbX25nY29udGVudC0lQ09NUCVde2JhY2tncm91bmQ6I2ZmOTgwMDtjb2xvcjojZmZmfS5tYXQtYmFkZ2Utd2Fybltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWJhZGdlLWNvbnRlbnRbX25nY29udGVudC0lQ09NUCVde2NvbG9yOiNmZmY7YmFja2dyb3VuZDojZjQ0MzM2fS5tYXQtYmFkZ2VbX25nY29udGVudC0lQ09NUCVde3Bvc2l0aW9uOnJlbGF0aXZlfS5tYXQtYmFkZ2UtaGlkZGVuW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtYmFkZ2UtY29udGVudFtfbmdjb250ZW50LSVDT01QJV17ZGlzcGxheTpub25lfS5tYXQtYmFkZ2UtZGlzYWJsZWRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1iYWRnZS1jb250ZW50W19uZ2NvbnRlbnQtJUNPTVAlXXtiYWNrZ3JvdW5kOiNiOWI5Yjk7Y29sb3I6Izc1NzU3NX0ubWF0LWJhZGdlLWNvbnRlbnRbX25nY29udGVudC0lQ09NUCVde3Bvc2l0aW9uOmFic29sdXRlO3RleHQtYWxpZ246Y2VudGVyO2Rpc3BsYXk6aW5saW5lLWJsb2NrO2JvcmRlci1yYWRpdXM6NTAlO3RyYW5zaXRpb246dHJhbnNmb3JtIDIwMG1zIGVhc2UtaW4tb3V0O3RyYW5zZm9ybTpzY2FsZSgwLjYpO292ZXJmbG93OmhpZGRlbjt3aGl0ZS1zcGFjZTpub3dyYXA7dGV4dC1vdmVyZmxvdzplbGxpcHNpcztwb2ludGVyLWV2ZW50czpub25lfS5uZy1hbmltYXRlLWRpc2FibGVkW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtYmFkZ2UtY29udGVudFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtYmFkZ2UtY29udGVudC5fbWF0LWFuaW1hdGlvbi1ub29wYWJsZVtfbmdjb250ZW50LSVDT01QJV17dHJhbnNpdGlvbjpub25lfS5tYXQtYmFkZ2UtY29udGVudC5tYXQtYmFkZ2UtYWN0aXZlW19uZ2NvbnRlbnQtJUNPTVAlXXt0cmFuc2Zvcm06bm9uZX0ubWF0LWJhZGdlLXNtYWxsW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtYmFkZ2UtY29udGVudFtfbmdjb250ZW50LSVDT01QJV17d2lkdGg6MTZweDtoZWlnaHQ6MTZweDtsaW5lLWhlaWdodDoxNnB4fS5tYXQtYmFkZ2Utc21hbGwubWF0LWJhZGdlLWFib3ZlW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtYmFkZ2UtY29udGVudFtfbmdjb250ZW50LSVDT01QJV17dG9wOi04cHh9Lm1hdC1iYWRnZS1zbWFsbC5tYXQtYmFkZ2UtYmVsb3dbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1iYWRnZS1jb250ZW50W19uZ2NvbnRlbnQtJUNPTVAlXXtib3R0b206LThweH0ubWF0LWJhZGdlLXNtYWxsLm1hdC1iYWRnZS1iZWZvcmVbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1iYWRnZS1jb250ZW50W19uZ2NvbnRlbnQtJUNPTVAlXXtsZWZ0Oi0xNnB4fVtkaXI9cnRsXVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWJhZGdlLXNtYWxsLm1hdC1iYWRnZS1iZWZvcmVbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1iYWRnZS1jb250ZW50W19uZ2NvbnRlbnQtJUNPTVAlXXtsZWZ0OmF1dG87cmlnaHQ6LTE2cHh9Lm1hdC1iYWRnZS1zbWFsbC5tYXQtYmFkZ2UtYWZ0ZXJbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1iYWRnZS1jb250ZW50W19uZ2NvbnRlbnQtJUNPTVAlXXtyaWdodDotMTZweH1bZGlyPXJ0bF1bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1iYWRnZS1zbWFsbC5tYXQtYmFkZ2UtYWZ0ZXJbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1iYWRnZS1jb250ZW50W19uZ2NvbnRlbnQtJUNPTVAlXXtyaWdodDphdXRvO2xlZnQ6LTE2cHh9Lm1hdC1iYWRnZS1zbWFsbC5tYXQtYmFkZ2Utb3ZlcmxhcC5tYXQtYmFkZ2UtYmVmb3JlW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtYmFkZ2UtY29udGVudFtfbmdjb250ZW50LSVDT01QJV17bGVmdDotOHB4fVtkaXI9cnRsXVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWJhZGdlLXNtYWxsLm1hdC1iYWRnZS1vdmVybGFwLm1hdC1iYWRnZS1iZWZvcmVbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1iYWRnZS1jb250ZW50W19uZ2NvbnRlbnQtJUNPTVAlXXtsZWZ0OmF1dG87cmlnaHQ6LThweH0ubWF0LWJhZGdlLXNtYWxsLm1hdC1iYWRnZS1vdmVybGFwLm1hdC1iYWRnZS1hZnRlcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWJhZGdlLWNvbnRlbnRbX25nY29udGVudC0lQ09NUCVde3JpZ2h0Oi04cHh9W2Rpcj1ydGxdW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtYmFkZ2Utc21hbGwubWF0LWJhZGdlLW92ZXJsYXAubWF0LWJhZGdlLWFmdGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtYmFkZ2UtY29udGVudFtfbmdjb250ZW50LSVDT01QJV17cmlnaHQ6YXV0bztsZWZ0Oi04cHh9Lm1hdC1iYWRnZS1tZWRpdW1bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1iYWRnZS1jb250ZW50W19uZ2NvbnRlbnQtJUNPTVAlXXt3aWR0aDoyMnB4O2hlaWdodDoyMnB4O2xpbmUtaGVpZ2h0OjIycHh9Lm1hdC1iYWRnZS1tZWRpdW0ubWF0LWJhZGdlLWFib3ZlW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtYmFkZ2UtY29udGVudFtfbmdjb250ZW50LSVDT01QJV17dG9wOi0xMXB4fS5tYXQtYmFkZ2UtbWVkaXVtLm1hdC1iYWRnZS1iZWxvd1tfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWJhZGdlLWNvbnRlbnRbX25nY29udGVudC0lQ09NUCVde2JvdHRvbTotMTFweH0ubWF0LWJhZGdlLW1lZGl1bS5tYXQtYmFkZ2UtYmVmb3JlW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtYmFkZ2UtY29udGVudFtfbmdjb250ZW50LSVDT01QJV17bGVmdDotMjJweH1bZGlyPXJ0bF1bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1iYWRnZS1tZWRpdW0ubWF0LWJhZGdlLWJlZm9yZVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWJhZGdlLWNvbnRlbnRbX25nY29udGVudC0lQ09NUCVde2xlZnQ6YXV0bztyaWdodDotMjJweH0ubWF0LWJhZGdlLW1lZGl1bS5tYXQtYmFkZ2UtYWZ0ZXJbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1iYWRnZS1jb250ZW50W19uZ2NvbnRlbnQtJUNPTVAlXXtyaWdodDotMjJweH1bZGlyPXJ0bF1bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1iYWRnZS1tZWRpdW0ubWF0LWJhZGdlLWFmdGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtYmFkZ2UtY29udGVudFtfbmdjb250ZW50LSVDT01QJV17cmlnaHQ6YXV0bztsZWZ0Oi0yMnB4fS5tYXQtYmFkZ2UtbWVkaXVtLm1hdC1iYWRnZS1vdmVybGFwLm1hdC1iYWRnZS1iZWZvcmVbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1iYWRnZS1jb250ZW50W19uZ2NvbnRlbnQtJUNPTVAlXXtsZWZ0Oi0xMXB4fVtkaXI9cnRsXVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWJhZGdlLW1lZGl1bS5tYXQtYmFkZ2Utb3ZlcmxhcC5tYXQtYmFkZ2UtYmVmb3JlW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtYmFkZ2UtY29udGVudFtfbmdjb250ZW50LSVDT01QJV17bGVmdDphdXRvO3JpZ2h0Oi0xMXB4fS5tYXQtYmFkZ2UtbWVkaXVtLm1hdC1iYWRnZS1vdmVybGFwLm1hdC1iYWRnZS1hZnRlcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWJhZGdlLWNvbnRlbnRbX25nY29udGVudC0lQ09NUCVde3JpZ2h0Oi0xMXB4fVtkaXI9cnRsXVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWJhZGdlLW1lZGl1bS5tYXQtYmFkZ2Utb3ZlcmxhcC5tYXQtYmFkZ2UtYWZ0ZXJbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1iYWRnZS1jb250ZW50W19uZ2NvbnRlbnQtJUNPTVAlXXtyaWdodDphdXRvO2xlZnQ6LTExcHh9Lm1hdC1iYWRnZS1sYXJnZVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWJhZGdlLWNvbnRlbnRbX25nY29udGVudC0lQ09NUCVde3dpZHRoOjI4cHg7aGVpZ2h0OjI4cHg7bGluZS1oZWlnaHQ6MjhweH0ubWF0LWJhZGdlLWxhcmdlLm1hdC1iYWRnZS1hYm92ZVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWJhZGdlLWNvbnRlbnRbX25nY29udGVudC0lQ09NUCVde3RvcDotMTRweH0ubWF0LWJhZGdlLWxhcmdlLm1hdC1iYWRnZS1iZWxvd1tfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWJhZGdlLWNvbnRlbnRbX25nY29udGVudC0lQ09NUCVde2JvdHRvbTotMTRweH0ubWF0LWJhZGdlLWxhcmdlLm1hdC1iYWRnZS1iZWZvcmVbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1iYWRnZS1jb250ZW50W19uZ2NvbnRlbnQtJUNPTVAlXXtsZWZ0Oi0yOHB4fVtkaXI9cnRsXVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWJhZGdlLWxhcmdlLm1hdC1iYWRnZS1iZWZvcmVbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1iYWRnZS1jb250ZW50W19uZ2NvbnRlbnQtJUNPTVAlXXtsZWZ0OmF1dG87cmlnaHQ6LTI4cHh9Lm1hdC1iYWRnZS1sYXJnZS5tYXQtYmFkZ2UtYWZ0ZXJbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1iYWRnZS1jb250ZW50W19uZ2NvbnRlbnQtJUNPTVAlXXtyaWdodDotMjhweH1bZGlyPXJ0bF1bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1iYWRnZS1sYXJnZS5tYXQtYmFkZ2UtYWZ0ZXJbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1iYWRnZS1jb250ZW50W19uZ2NvbnRlbnQtJUNPTVAlXXtyaWdodDphdXRvO2xlZnQ6LTI4cHh9Lm1hdC1iYWRnZS1sYXJnZS5tYXQtYmFkZ2Utb3ZlcmxhcC5tYXQtYmFkZ2UtYmVmb3JlW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtYmFkZ2UtY29udGVudFtfbmdjb250ZW50LSVDT01QJV17bGVmdDotMTRweH1bZGlyPXJ0bF1bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1iYWRnZS1sYXJnZS5tYXQtYmFkZ2Utb3ZlcmxhcC5tYXQtYmFkZ2UtYmVmb3JlW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtYmFkZ2UtY29udGVudFtfbmdjb250ZW50LSVDT01QJV17bGVmdDphdXRvO3JpZ2h0Oi0xNHB4fS5tYXQtYmFkZ2UtbGFyZ2UubWF0LWJhZGdlLW92ZXJsYXAubWF0LWJhZGdlLWFmdGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtYmFkZ2UtY29udGVudFtfbmdjb250ZW50LSVDT01QJV17cmlnaHQ6LTE0cHh9W2Rpcj1ydGxdW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtYmFkZ2UtbGFyZ2UubWF0LWJhZGdlLW92ZXJsYXAubWF0LWJhZGdlLWFmdGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtYmFkZ2UtY29udGVudFtfbmdjb250ZW50LSVDT01QJV17cmlnaHQ6YXV0bztsZWZ0Oi0xNHB4fS5tYXQtYm90dG9tLXNoZWV0LWNvbnRhaW5lcltfbmdjb250ZW50LSVDT01QJV17Ym94LXNoYWRvdzowcHggOHB4IDEwcHggLTVweCByZ2JhKDAsIDAsIDAsIDAuMiksMHB4IDE2cHggMjRweCAycHggcmdiYSgwLCAwLCAwLCAwLjE0KSwwcHggNnB4IDMwcHggNXB4IHJnYmEoMCwgMCwgMCwgMC4xMik7YmFja2dyb3VuZDojZmZmO2NvbG9yOiMyMTIxMjF9Lm1hdC1idXR0b25bX25nY29udGVudC0lQ09NUCVdLCAubWF0LWljb24tYnV0dG9uW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1zdHJva2VkLWJ1dHRvbltfbmdjb250ZW50LSVDT01QJV17Y29sb3I6aW5oZXJpdDtiYWNrZ3JvdW5kOnRyYW5zcGFyZW50fS5tYXQtYnV0dG9uLm1hdC1wcmltYXJ5W19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1pY29uLWJ1dHRvbi5tYXQtcHJpbWFyeVtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtc3Ryb2tlZC1idXR0b24ubWF0LXByaW1hcnlbX25nY29udGVudC0lQ09NUCVde2NvbG9yOiNmNTdjMDB9Lm1hdC1idXR0b24ubWF0LWFjY2VudFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtaWNvbi1idXR0b24ubWF0LWFjY2VudFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtc3Ryb2tlZC1idXR0b24ubWF0LWFjY2VudFtfbmdjb250ZW50LSVDT01QJV17Y29sb3I6I2ZmOTgwMH0ubWF0LWJ1dHRvbi5tYXQtd2Fybltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtaWNvbi1idXR0b24ubWF0LXdhcm5bX25nY29udGVudC0lQ09NUCVdLCAubWF0LXN0cm9rZWQtYnV0dG9uLm1hdC13YXJuW19uZ2NvbnRlbnQtJUNPTVAlXXtjb2xvcjojZjQ0MzM2fS5tYXQtYnV0dG9uLm1hdC1wcmltYXJ5Lm1hdC1idXR0b24tZGlzYWJsZWRbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWJ1dHRvbi5tYXQtYWNjZW50Lm1hdC1idXR0b24tZGlzYWJsZWRbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWJ1dHRvbi5tYXQtd2Fybi5tYXQtYnV0dG9uLWRpc2FibGVkW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1idXR0b24ubWF0LWJ1dHRvbi1kaXNhYmxlZC5tYXQtYnV0dG9uLWRpc2FibGVkW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1pY29uLWJ1dHRvbi5tYXQtcHJpbWFyeS5tYXQtYnV0dG9uLWRpc2FibGVkW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1pY29uLWJ1dHRvbi5tYXQtYWNjZW50Lm1hdC1idXR0b24tZGlzYWJsZWRbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWljb24tYnV0dG9uLm1hdC13YXJuLm1hdC1idXR0b24tZGlzYWJsZWRbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWljb24tYnV0dG9uLm1hdC1idXR0b24tZGlzYWJsZWQubWF0LWJ1dHRvbi1kaXNhYmxlZFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtc3Ryb2tlZC1idXR0b24ubWF0LXByaW1hcnkubWF0LWJ1dHRvbi1kaXNhYmxlZFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtc3Ryb2tlZC1idXR0b24ubWF0LWFjY2VudC5tYXQtYnV0dG9uLWRpc2FibGVkW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1zdHJva2VkLWJ1dHRvbi5tYXQtd2Fybi5tYXQtYnV0dG9uLWRpc2FibGVkW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1zdHJva2VkLWJ1dHRvbi5tYXQtYnV0dG9uLWRpc2FibGVkLm1hdC1idXR0b24tZGlzYWJsZWRbX25nY29udGVudC0lQ09NUCVde2NvbG9yOnJnYmEoMCwwLDAsLjI2KX0ubWF0LWJ1dHRvbi5tYXQtcHJpbWFyeVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWJ1dHRvbi1mb2N1cy1vdmVybGF5W19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1pY29uLWJ1dHRvbi5tYXQtcHJpbWFyeVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWJ1dHRvbi1mb2N1cy1vdmVybGF5W19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1zdHJva2VkLWJ1dHRvbi5tYXQtcHJpbWFyeVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWJ1dHRvbi1mb2N1cy1vdmVybGF5W19uZ2NvbnRlbnQtJUNPTVAlXXtiYWNrZ3JvdW5kLWNvbG9yOiNmNTdjMDB9Lm1hdC1idXR0b24ubWF0LWFjY2VudFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWJ1dHRvbi1mb2N1cy1vdmVybGF5W19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1pY29uLWJ1dHRvbi5tYXQtYWNjZW50W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtYnV0dG9uLWZvY3VzLW92ZXJsYXlbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXN0cm9rZWQtYnV0dG9uLm1hdC1hY2NlbnRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1idXR0b24tZm9jdXMtb3ZlcmxheVtfbmdjb250ZW50LSVDT01QJV17YmFja2dyb3VuZC1jb2xvcjojZmY5ODAwfS5tYXQtYnV0dG9uLm1hdC13YXJuW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtYnV0dG9uLWZvY3VzLW92ZXJsYXlbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWljb24tYnV0dG9uLm1hdC13YXJuW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtYnV0dG9uLWZvY3VzLW92ZXJsYXlbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXN0cm9rZWQtYnV0dG9uLm1hdC13YXJuW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtYnV0dG9uLWZvY3VzLW92ZXJsYXlbX25nY29udGVudC0lQ09NUCVde2JhY2tncm91bmQtY29sb3I6I2Y0NDMzNn0ubWF0LWJ1dHRvbi5tYXQtYnV0dG9uLWRpc2FibGVkW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtYnV0dG9uLWZvY3VzLW92ZXJsYXlbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWljb24tYnV0dG9uLm1hdC1idXR0b24tZGlzYWJsZWRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1idXR0b24tZm9jdXMtb3ZlcmxheVtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtc3Ryb2tlZC1idXR0b24ubWF0LWJ1dHRvbi1kaXNhYmxlZFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWJ1dHRvbi1mb2N1cy1vdmVybGF5W19uZ2NvbnRlbnQtJUNPTVAlXXtiYWNrZ3JvdW5kLWNvbG9yOnRyYW5zcGFyZW50fS5tYXQtYnV0dG9uW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtcmlwcGxlLWVsZW1lbnRbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWljb24tYnV0dG9uW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtcmlwcGxlLWVsZW1lbnRbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXN0cm9rZWQtYnV0dG9uW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtcmlwcGxlLWVsZW1lbnRbX25nY29udGVudC0lQ09NUCVde29wYWNpdHk6LjE7YmFja2dyb3VuZC1jb2xvcjpjdXJyZW50Q29sb3J9Lm1hdC1idXR0b24tZm9jdXMtb3ZlcmxheVtfbmdjb250ZW50LSVDT01QJV17YmFja2dyb3VuZDojMDAwfS5tYXQtc3Ryb2tlZC1idXR0b25bX25nY29udGVudC0lQ09NUCVdOm5vdCgubWF0LWJ1dHRvbi1kaXNhYmxlZCl7Ym9yZGVyLWNvbG9yOnJnYmEoMCwwLDAsLjEyKX0ubWF0LWZsYXQtYnV0dG9uW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1yYWlzZWQtYnV0dG9uW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1mYWJbX25nY29udGVudC0lQ09NUCVdLCAubWF0LW1pbmktZmFiW19uZ2NvbnRlbnQtJUNPTVAlXXtjb2xvcjojMjEyMTIxO2JhY2tncm91bmQtY29sb3I6I2ZmZn0ubWF0LWZsYXQtYnV0dG9uLm1hdC1wcmltYXJ5W19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1yYWlzZWQtYnV0dG9uLm1hdC1wcmltYXJ5W19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1mYWIubWF0LXByaW1hcnlbX25nY29udGVudC0lQ09NUCVdLCAubWF0LW1pbmktZmFiLm1hdC1wcmltYXJ5W19uZ2NvbnRlbnQtJUNPTVAlXXtjb2xvcjojZmZmfS5tYXQtZmxhdC1idXR0b24ubWF0LWFjY2VudFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtcmFpc2VkLWJ1dHRvbi5tYXQtYWNjZW50W19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1mYWIubWF0LWFjY2VudFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtbWluaS1mYWIubWF0LWFjY2VudFtfbmdjb250ZW50LSVDT01QJV17Y29sb3I6I2ZmZn0ubWF0LWZsYXQtYnV0dG9uLm1hdC13YXJuW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1yYWlzZWQtYnV0dG9uLm1hdC13YXJuW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1mYWIubWF0LXdhcm5bX25nY29udGVudC0lQ09NUCVdLCAubWF0LW1pbmktZmFiLm1hdC13YXJuW19uZ2NvbnRlbnQtJUNPTVAlXXtjb2xvcjojZmZmfS5tYXQtZmxhdC1idXR0b24ubWF0LXByaW1hcnkubWF0LWJ1dHRvbi1kaXNhYmxlZFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtZmxhdC1idXR0b24ubWF0LWFjY2VudC5tYXQtYnV0dG9uLWRpc2FibGVkW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1mbGF0LWJ1dHRvbi5tYXQtd2Fybi5tYXQtYnV0dG9uLWRpc2FibGVkW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1mbGF0LWJ1dHRvbi5tYXQtYnV0dG9uLWRpc2FibGVkLm1hdC1idXR0b24tZGlzYWJsZWRbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXJhaXNlZC1idXR0b24ubWF0LXByaW1hcnkubWF0LWJ1dHRvbi1kaXNhYmxlZFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtcmFpc2VkLWJ1dHRvbi5tYXQtYWNjZW50Lm1hdC1idXR0b24tZGlzYWJsZWRbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXJhaXNlZC1idXR0b24ubWF0LXdhcm4ubWF0LWJ1dHRvbi1kaXNhYmxlZFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtcmFpc2VkLWJ1dHRvbi5tYXQtYnV0dG9uLWRpc2FibGVkLm1hdC1idXR0b24tZGlzYWJsZWRbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWZhYi5tYXQtcHJpbWFyeS5tYXQtYnV0dG9uLWRpc2FibGVkW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1mYWIubWF0LWFjY2VudC5tYXQtYnV0dG9uLWRpc2FibGVkW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1mYWIubWF0LXdhcm4ubWF0LWJ1dHRvbi1kaXNhYmxlZFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtZmFiLm1hdC1idXR0b24tZGlzYWJsZWQubWF0LWJ1dHRvbi1kaXNhYmxlZFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtbWluaS1mYWIubWF0LXByaW1hcnkubWF0LWJ1dHRvbi1kaXNhYmxlZFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtbWluaS1mYWIubWF0LWFjY2VudC5tYXQtYnV0dG9uLWRpc2FibGVkW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1taW5pLWZhYi5tYXQtd2Fybi5tYXQtYnV0dG9uLWRpc2FibGVkW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1taW5pLWZhYi5tYXQtYnV0dG9uLWRpc2FibGVkLm1hdC1idXR0b24tZGlzYWJsZWRbX25nY29udGVudC0lQ09NUCVde2NvbG9yOnJnYmEoMCwwLDAsLjI2KX0ubWF0LWZsYXQtYnV0dG9uLm1hdC1wcmltYXJ5W19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1yYWlzZWQtYnV0dG9uLm1hdC1wcmltYXJ5W19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1mYWIubWF0LXByaW1hcnlbX25nY29udGVudC0lQ09NUCVdLCAubWF0LW1pbmktZmFiLm1hdC1wcmltYXJ5W19uZ2NvbnRlbnQtJUNPTVAlXXtiYWNrZ3JvdW5kLWNvbG9yOiNmNTdjMDB9Lm1hdC1mbGF0LWJ1dHRvbi5tYXQtYWNjZW50W19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1yYWlzZWQtYnV0dG9uLm1hdC1hY2NlbnRbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWZhYi5tYXQtYWNjZW50W19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1taW5pLWZhYi5tYXQtYWNjZW50W19uZ2NvbnRlbnQtJUNPTVAlXXtiYWNrZ3JvdW5kLWNvbG9yOiNmZjk4MDB9Lm1hdC1mbGF0LWJ1dHRvbi5tYXQtd2Fybltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtcmFpc2VkLWJ1dHRvbi5tYXQtd2Fybltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtZmFiLm1hdC13YXJuW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1taW5pLWZhYi5tYXQtd2Fybltfbmdjb250ZW50LSVDT01QJV17YmFja2dyb3VuZC1jb2xvcjojZjQ0MzM2fS5tYXQtZmxhdC1idXR0b24ubWF0LXByaW1hcnkubWF0LWJ1dHRvbi1kaXNhYmxlZFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtZmxhdC1idXR0b24ubWF0LWFjY2VudC5tYXQtYnV0dG9uLWRpc2FibGVkW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1mbGF0LWJ1dHRvbi5tYXQtd2Fybi5tYXQtYnV0dG9uLWRpc2FibGVkW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1mbGF0LWJ1dHRvbi5tYXQtYnV0dG9uLWRpc2FibGVkLm1hdC1idXR0b24tZGlzYWJsZWRbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXJhaXNlZC1idXR0b24ubWF0LXByaW1hcnkubWF0LWJ1dHRvbi1kaXNhYmxlZFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtcmFpc2VkLWJ1dHRvbi5tYXQtYWNjZW50Lm1hdC1idXR0b24tZGlzYWJsZWRbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXJhaXNlZC1idXR0b24ubWF0LXdhcm4ubWF0LWJ1dHRvbi1kaXNhYmxlZFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtcmFpc2VkLWJ1dHRvbi5tYXQtYnV0dG9uLWRpc2FibGVkLm1hdC1idXR0b24tZGlzYWJsZWRbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWZhYi5tYXQtcHJpbWFyeS5tYXQtYnV0dG9uLWRpc2FibGVkW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1mYWIubWF0LWFjY2VudC5tYXQtYnV0dG9uLWRpc2FibGVkW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1mYWIubWF0LXdhcm4ubWF0LWJ1dHRvbi1kaXNhYmxlZFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtZmFiLm1hdC1idXR0b24tZGlzYWJsZWQubWF0LWJ1dHRvbi1kaXNhYmxlZFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtbWluaS1mYWIubWF0LXByaW1hcnkubWF0LWJ1dHRvbi1kaXNhYmxlZFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtbWluaS1mYWIubWF0LWFjY2VudC5tYXQtYnV0dG9uLWRpc2FibGVkW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1taW5pLWZhYi5tYXQtd2Fybi5tYXQtYnV0dG9uLWRpc2FibGVkW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1taW5pLWZhYi5tYXQtYnV0dG9uLWRpc2FibGVkLm1hdC1idXR0b24tZGlzYWJsZWRbX25nY29udGVudC0lQ09NUCVde2JhY2tncm91bmQtY29sb3I6cmdiYSgwLDAsMCwuMTIpfS5tYXQtZmxhdC1idXR0b24ubWF0LXByaW1hcnlbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1yaXBwbGUtZWxlbWVudFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtcmFpc2VkLWJ1dHRvbi5tYXQtcHJpbWFyeVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXJpcHBsZS1lbGVtZW50W19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1mYWIubWF0LXByaW1hcnlbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1yaXBwbGUtZWxlbWVudFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtbWluaS1mYWIubWF0LXByaW1hcnlbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1yaXBwbGUtZWxlbWVudFtfbmdjb250ZW50LSVDT01QJV17YmFja2dyb3VuZC1jb2xvcjpyZ2JhKDI1NSwyNTUsMjU1LC4xKX0ubWF0LWZsYXQtYnV0dG9uLm1hdC1hY2NlbnRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1yaXBwbGUtZWxlbWVudFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtcmFpc2VkLWJ1dHRvbi5tYXQtYWNjZW50W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtcmlwcGxlLWVsZW1lbnRbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWZhYi5tYXQtYWNjZW50W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtcmlwcGxlLWVsZW1lbnRbX25nY29udGVudC0lQ09NUCVdLCAubWF0LW1pbmktZmFiLm1hdC1hY2NlbnRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1yaXBwbGUtZWxlbWVudFtfbmdjb250ZW50LSVDT01QJV17YmFja2dyb3VuZC1jb2xvcjpyZ2JhKDI1NSwyNTUsMjU1LC4xKX0ubWF0LWZsYXQtYnV0dG9uLm1hdC13YXJuW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtcmlwcGxlLWVsZW1lbnRbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXJhaXNlZC1idXR0b24ubWF0LXdhcm5bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1yaXBwbGUtZWxlbWVudFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtZmFiLm1hdC13YXJuW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtcmlwcGxlLWVsZW1lbnRbX25nY29udGVudC0lQ09NUCVdLCAubWF0LW1pbmktZmFiLm1hdC13YXJuW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtcmlwcGxlLWVsZW1lbnRbX25nY29udGVudC0lQ09NUCVde2JhY2tncm91bmQtY29sb3I6cmdiYSgyNTUsMjU1LDI1NSwuMSl9Lm1hdC1zdHJva2VkLWJ1dHRvbltfbmdjb250ZW50LSVDT01QJV06bm90KFtjbGFzcyo9bWF0LWVsZXZhdGlvbi16XSksIC5tYXQtZmxhdC1idXR0b25bX25nY29udGVudC0lQ09NUCVdOm5vdChbY2xhc3MqPW1hdC1lbGV2YXRpb24tel0pe2JveC1zaGFkb3c6MHB4IDBweCAwcHggMHB4IHJnYmEoMCwgMCwgMCwgMC4yKSwwcHggMHB4IDBweCAwcHggcmdiYSgwLCAwLCAwLCAwLjE0KSwwcHggMHB4IDBweCAwcHggcmdiYSgwLCAwLCAwLCAwLjEyKX0ubWF0LXJhaXNlZC1idXR0b25bX25nY29udGVudC0lQ09NUCVdOm5vdChbY2xhc3MqPW1hdC1lbGV2YXRpb24tel0pe2JveC1zaGFkb3c6MHB4IDNweCAxcHggLTJweCByZ2JhKDAsIDAsIDAsIDAuMiksMHB4IDJweCAycHggMHB4IHJnYmEoMCwgMCwgMCwgMC4xNCksMHB4IDFweCA1cHggMHB4IHJnYmEoMCwgMCwgMCwgMC4xMil9Lm1hdC1yYWlzZWQtYnV0dG9uW19uZ2NvbnRlbnQtJUNPTVAlXTpub3QoLm1hdC1idXR0b24tZGlzYWJsZWQpOmFjdGl2ZTpub3QoW2NsYXNzKj1tYXQtZWxldmF0aW9uLXpdKXtib3gtc2hhZG93OjBweCA1cHggNXB4IC0zcHggcmdiYSgwLCAwLCAwLCAwLjIpLDBweCA4cHggMTBweCAxcHggcmdiYSgwLCAwLCAwLCAwLjE0KSwwcHggM3B4IDE0cHggMnB4IHJnYmEoMCwgMCwgMCwgMC4xMil9Lm1hdC1yYWlzZWQtYnV0dG9uLm1hdC1idXR0b24tZGlzYWJsZWRbX25nY29udGVudC0lQ09NUCVdOm5vdChbY2xhc3MqPW1hdC1lbGV2YXRpb24tel0pe2JveC1zaGFkb3c6MHB4IDBweCAwcHggMHB4IHJnYmEoMCwgMCwgMCwgMC4yKSwwcHggMHB4IDBweCAwcHggcmdiYSgwLCAwLCAwLCAwLjE0KSwwcHggMHB4IDBweCAwcHggcmdiYSgwLCAwLCAwLCAwLjEyKX0ubWF0LWZhYltfbmdjb250ZW50LSVDT01QJV06bm90KFtjbGFzcyo9bWF0LWVsZXZhdGlvbi16XSksIC5tYXQtbWluaS1mYWJbX25nY29udGVudC0lQ09NUCVdOm5vdChbY2xhc3MqPW1hdC1lbGV2YXRpb24tel0pe2JveC1zaGFkb3c6MHB4IDNweCA1cHggLTFweCByZ2JhKDAsIDAsIDAsIDAuMiksMHB4IDZweCAxMHB4IDBweCByZ2JhKDAsIDAsIDAsIDAuMTQpLDBweCAxcHggMThweCAwcHggcmdiYSgwLCAwLCAwLCAwLjEyKX0ubWF0LWZhYltfbmdjb250ZW50LSVDT01QJV06bm90KC5tYXQtYnV0dG9uLWRpc2FibGVkKTphY3RpdmU6bm90KFtjbGFzcyo9bWF0LWVsZXZhdGlvbi16XSksIC5tYXQtbWluaS1mYWJbX25nY29udGVudC0lQ09NUCVdOm5vdCgubWF0LWJ1dHRvbi1kaXNhYmxlZCk6YWN0aXZlOm5vdChbY2xhc3MqPW1hdC1lbGV2YXRpb24tel0pe2JveC1zaGFkb3c6MHB4IDdweCA4cHggLTRweCByZ2JhKDAsIDAsIDAsIDAuMiksMHB4IDEycHggMTdweCAycHggcmdiYSgwLCAwLCAwLCAwLjE0KSwwcHggNXB4IDIycHggNHB4IHJnYmEoMCwgMCwgMCwgMC4xMil9Lm1hdC1mYWIubWF0LWJ1dHRvbi1kaXNhYmxlZFtfbmdjb250ZW50LSVDT01QJV06bm90KFtjbGFzcyo9bWF0LWVsZXZhdGlvbi16XSksIC5tYXQtbWluaS1mYWIubWF0LWJ1dHRvbi1kaXNhYmxlZFtfbmdjb250ZW50LSVDT01QJV06bm90KFtjbGFzcyo9bWF0LWVsZXZhdGlvbi16XSl7Ym94LXNoYWRvdzowcHggMHB4IDBweCAwcHggcmdiYSgwLCAwLCAwLCAwLjIpLDBweCAwcHggMHB4IDBweCByZ2JhKDAsIDAsIDAsIDAuMTQpLDBweCAwcHggMHB4IDBweCByZ2JhKDAsIDAsIDAsIDAuMTIpfS5tYXQtYnV0dG9uLXRvZ2dsZS1zdGFuZGFsb25lW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1idXR0b24tdG9nZ2xlLWdyb3VwW19uZ2NvbnRlbnQtJUNPTVAlXXtib3gtc2hhZG93OjBweCAzcHggMXB4IC0ycHggcmdiYSgwLCAwLCAwLCAwLjIpLDBweCAycHggMnB4IDBweCByZ2JhKDAsIDAsIDAsIDAuMTQpLDBweCAxcHggNXB4IDBweCByZ2JhKDAsIDAsIDAsIDAuMTIpfS5tYXQtYnV0dG9uLXRvZ2dsZS1zdGFuZGFsb25lLm1hdC1idXR0b24tdG9nZ2xlLWFwcGVhcmFuY2Utc3RhbmRhcmRbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWJ1dHRvbi10b2dnbGUtZ3JvdXAtYXBwZWFyYW5jZS1zdGFuZGFyZFtfbmdjb250ZW50LSVDT01QJV17Ym94LXNoYWRvdzpub25lfS5tYXQtYnV0dG9uLXRvZ2dsZVtfbmdjb250ZW50LSVDT01QJV17Y29sb3I6cmdiYSgwLDAsMCwuMzgpfS5tYXQtYnV0dG9uLXRvZ2dsZVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWJ1dHRvbi10b2dnbGUtZm9jdXMtb3ZlcmxheVtfbmdjb250ZW50LSVDT01QJV17YmFja2dyb3VuZC1jb2xvcjpyZ2JhKDAsMCwwLC4xMil9Lm1hdC1idXR0b24tdG9nZ2xlLWFwcGVhcmFuY2Utc3RhbmRhcmRbX25nY29udGVudC0lQ09NUCVde2NvbG9yOiMyMTIxMjE7YmFja2dyb3VuZDojZmZmfS5tYXQtYnV0dG9uLXRvZ2dsZS1hcHBlYXJhbmNlLXN0YW5kYXJkW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtYnV0dG9uLXRvZ2dsZS1mb2N1cy1vdmVybGF5W19uZ2NvbnRlbnQtJUNPTVAlXXtiYWNrZ3JvdW5kLWNvbG9yOiMwMDB9Lm1hdC1idXR0b24tdG9nZ2xlLWdyb3VwLWFwcGVhcmFuY2Utc3RhbmRhcmRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1idXR0b24tdG9nZ2xlW19uZ2NvbnRlbnQtJUNPTVAlXSArIC5tYXQtYnV0dG9uLXRvZ2dsZVtfbmdjb250ZW50LSVDT01QJV17Ym9yZGVyLWxlZnQ6c29saWQgMXB4IHJnYmEoMCwwLDAsLjEyKX1bZGlyPXJ0bF1bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1idXR0b24tdG9nZ2xlLWdyb3VwLWFwcGVhcmFuY2Utc3RhbmRhcmRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1idXR0b24tdG9nZ2xlW19uZ2NvbnRlbnQtJUNPTVAlXSArIC5tYXQtYnV0dG9uLXRvZ2dsZVtfbmdjb250ZW50LSVDT01QJV17Ym9yZGVyLWxlZnQ6bm9uZTtib3JkZXItcmlnaHQ6c29saWQgMXB4IHJnYmEoMCwwLDAsLjEyKX0ubWF0LWJ1dHRvbi10b2dnbGUtZ3JvdXAtYXBwZWFyYW5jZS1zdGFuZGFyZC5tYXQtYnV0dG9uLXRvZ2dsZS12ZXJ0aWNhbFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWJ1dHRvbi10b2dnbGVbX25nY29udGVudC0lQ09NUCVdICsgLm1hdC1idXR0b24tdG9nZ2xlW19uZ2NvbnRlbnQtJUNPTVAlXXtib3JkZXItbGVmdDpub25lO2JvcmRlci1yaWdodDpub25lO2JvcmRlci10b3A6c29saWQgMXB4IHJnYmEoMCwwLDAsLjEyKX0ubWF0LWJ1dHRvbi10b2dnbGUtY2hlY2tlZFtfbmdjb250ZW50LSVDT01QJV17YmFja2dyb3VuZC1jb2xvcjojZTBlMGUwO2NvbG9yOiM2MTYxNjF9Lm1hdC1idXR0b24tdG9nZ2xlLWNoZWNrZWQubWF0LWJ1dHRvbi10b2dnbGUtYXBwZWFyYW5jZS1zdGFuZGFyZFtfbmdjb250ZW50LSVDT01QJV17Y29sb3I6IzIxMjEyMX0ubWF0LWJ1dHRvbi10b2dnbGUtZGlzYWJsZWRbX25nY29udGVudC0lQ09NUCVde2NvbG9yOnJnYmEoMCwwLDAsLjI2KTtiYWNrZ3JvdW5kLWNvbG9yOiNlZWV9Lm1hdC1idXR0b24tdG9nZ2xlLWRpc2FibGVkLm1hdC1idXR0b24tdG9nZ2xlLWFwcGVhcmFuY2Utc3RhbmRhcmRbX25nY29udGVudC0lQ09NUCVde2JhY2tncm91bmQ6I2ZmZn0ubWF0LWJ1dHRvbi10b2dnbGUtZGlzYWJsZWQubWF0LWJ1dHRvbi10b2dnbGUtY2hlY2tlZFtfbmdjb250ZW50LSVDT01QJV17YmFja2dyb3VuZC1jb2xvcjojYmRiZGJkfS5tYXQtYnV0dG9uLXRvZ2dsZS1zdGFuZGFsb25lLm1hdC1idXR0b24tdG9nZ2xlLWFwcGVhcmFuY2Utc3RhbmRhcmRbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWJ1dHRvbi10b2dnbGUtZ3JvdXAtYXBwZWFyYW5jZS1zdGFuZGFyZFtfbmdjb250ZW50LSVDT01QJV17Ym9yZGVyOnNvbGlkIDFweCByZ2JhKDAsMCwwLC4xMil9Lm1hdC1idXR0b24tdG9nZ2xlLWFwcGVhcmFuY2Utc3RhbmRhcmRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1idXR0b24tdG9nZ2xlLWxhYmVsLWNvbnRlbnRbX25nY29udGVudC0lQ09NUCVde2xpbmUtaGVpZ2h0OjQ4cHh9Lm1hdC1jYXJkW19uZ2NvbnRlbnQtJUNPTVAlXXtiYWNrZ3JvdW5kOiNmZmY7Y29sb3I6IzIxMjEyMX0ubWF0LWNhcmRbX25nY29udGVudC0lQ09NUCVdOm5vdChbY2xhc3MqPW1hdC1lbGV2YXRpb24tel0pe2JveC1zaGFkb3c6MHB4IDJweCAxcHggLTFweCByZ2JhKDAsIDAsIDAsIDAuMiksMHB4IDFweCAxcHggMHB4IHJnYmEoMCwgMCwgMCwgMC4xNCksMHB4IDFweCAzcHggMHB4IHJnYmEoMCwgMCwgMCwgMC4xMil9Lm1hdC1jYXJkLm1hdC1jYXJkLWZsYXRbX25nY29udGVudC0lQ09NUCVdOm5vdChbY2xhc3MqPW1hdC1lbGV2YXRpb24tel0pe2JveC1zaGFkb3c6MHB4IDBweCAwcHggMHB4IHJnYmEoMCwgMCwgMCwgMC4yKSwwcHggMHB4IDBweCAwcHggcmdiYSgwLCAwLCAwLCAwLjE0KSwwcHggMHB4IDBweCAwcHggcmdiYSgwLCAwLCAwLCAwLjEyKX0ubWF0LWNhcmQtc3VidGl0bGVbX25nY29udGVudC0lQ09NUCVde2NvbG9yOiM2MTYxNjF9Lm1hdC1jaGVja2JveC1mcmFtZVtfbmdjb250ZW50LSVDT01QJV17Ym9yZGVyLWNvbG9yOiM2MTYxNjF9Lm1hdC1jaGVja2JveC1jaGVja21hcmtbX25nY29udGVudC0lQ09NUCVde2ZpbGw6I2ZhZmFmYX0ubWF0LWNoZWNrYm94LWNoZWNrbWFyay1wYXRoW19uZ2NvbnRlbnQtJUNPTVAlXXtzdHJva2U6I2ZhZmFmYSAhaW1wb3J0YW50fS5tYXQtY2hlY2tib3gtbWl4ZWRtYXJrW19uZ2NvbnRlbnQtJUNPTVAlXXtiYWNrZ3JvdW5kLWNvbG9yOiNmYWZhZmF9Lm1hdC1jaGVja2JveC1pbmRldGVybWluYXRlLm1hdC1wcmltYXJ5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtY2hlY2tib3gtYmFja2dyb3VuZFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtY2hlY2tib3gtY2hlY2tlZC5tYXQtcHJpbWFyeVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWNoZWNrYm94LWJhY2tncm91bmRbX25nY29udGVudC0lQ09NUCVde2JhY2tncm91bmQtY29sb3I6I2Y1N2MwMH0ubWF0LWNoZWNrYm94LWluZGV0ZXJtaW5hdGUubWF0LWFjY2VudFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWNoZWNrYm94LWJhY2tncm91bmRbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWNoZWNrYm94LWNoZWNrZWQubWF0LWFjY2VudFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWNoZWNrYm94LWJhY2tncm91bmRbX25nY29udGVudC0lQ09NUCVde2JhY2tncm91bmQtY29sb3I6I2ZmOTgwMH0ubWF0LWNoZWNrYm94LWluZGV0ZXJtaW5hdGUubWF0LXdhcm5bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1jaGVja2JveC1iYWNrZ3JvdW5kW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1jaGVja2JveC1jaGVja2VkLm1hdC13YXJuW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtY2hlY2tib3gtYmFja2dyb3VuZFtfbmdjb250ZW50LSVDT01QJV17YmFja2dyb3VuZC1jb2xvcjojZjQ0MzM2fS5tYXQtY2hlY2tib3gtZGlzYWJsZWQubWF0LWNoZWNrYm94LWNoZWNrZWRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1jaGVja2JveC1iYWNrZ3JvdW5kW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1jaGVja2JveC1kaXNhYmxlZC5tYXQtY2hlY2tib3gtaW5kZXRlcm1pbmF0ZVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWNoZWNrYm94LWJhY2tncm91bmRbX25nY29udGVudC0lQ09NUCVde2JhY2tncm91bmQtY29sb3I6I2IwYjBiMH0ubWF0LWNoZWNrYm94LWRpc2FibGVkW19uZ2NvbnRlbnQtJUNPTVAlXTpub3QoLm1hdC1jaGVja2JveC1jaGVja2VkKSAgIC5tYXQtY2hlY2tib3gtZnJhbWVbX25nY29udGVudC0lQ09NUCVde2JvcmRlci1jb2xvcjojYjBiMGIwfS5tYXQtY2hlY2tib3gtZGlzYWJsZWRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1jaGVja2JveC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17Y29sb3I6IzYxNjE2MX0ubWF0LWNoZWNrYm94W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtcmlwcGxlLWVsZW1lbnRbX25nY29udGVudC0lQ09NUCVde2JhY2tncm91bmQtY29sb3I6IzAwMH0ubWF0LWNoZWNrYm94LWNoZWNrZWRbX25nY29udGVudC0lQ09NUCVdOm5vdCgubWF0LWNoZWNrYm94LWRpc2FibGVkKS5tYXQtcHJpbWFyeSAgIC5tYXQtcmlwcGxlLWVsZW1lbnRbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWNoZWNrYm94W19uZ2NvbnRlbnQtJUNPTVAlXTphY3RpdmU6bm90KC5tYXQtY2hlY2tib3gtZGlzYWJsZWQpLm1hdC1wcmltYXJ5ICAgLm1hdC1yaXBwbGUtZWxlbWVudFtfbmdjb250ZW50LSVDT01QJV17YmFja2dyb3VuZDojZjU3YzAwfS5tYXQtY2hlY2tib3gtY2hlY2tlZFtfbmdjb250ZW50LSVDT01QJV06bm90KC5tYXQtY2hlY2tib3gtZGlzYWJsZWQpLm1hdC1hY2NlbnQgICAubWF0LXJpcHBsZS1lbGVtZW50W19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1jaGVja2JveFtfbmdjb250ZW50LSVDT01QJV06YWN0aXZlOm5vdCgubWF0LWNoZWNrYm94LWRpc2FibGVkKS5tYXQtYWNjZW50ICAgLm1hdC1yaXBwbGUtZWxlbWVudFtfbmdjb250ZW50LSVDT01QJV17YmFja2dyb3VuZDojZmY5ODAwfS5tYXQtY2hlY2tib3gtY2hlY2tlZFtfbmdjb250ZW50LSVDT01QJV06bm90KC5tYXQtY2hlY2tib3gtZGlzYWJsZWQpLm1hdC13YXJuICAgLm1hdC1yaXBwbGUtZWxlbWVudFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtY2hlY2tib3hbX25nY29udGVudC0lQ09NUCVdOmFjdGl2ZTpub3QoLm1hdC1jaGVja2JveC1kaXNhYmxlZCkubWF0LXdhcm4gICAubWF0LXJpcHBsZS1lbGVtZW50W19uZ2NvbnRlbnQtJUNPTVAlXXtiYWNrZ3JvdW5kOiNmNDQzMzZ9Lm1hdC1jaGlwLm1hdC1zdGFuZGFyZC1jaGlwW19uZ2NvbnRlbnQtJUNPTVAlXXtiYWNrZ3JvdW5kLWNvbG9yOiNlMGUwZTA7Y29sb3I6IzIxMjEyMX0ubWF0LWNoaXAubWF0LXN0YW5kYXJkLWNoaXBbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1jaGlwLXJlbW92ZVtfbmdjb250ZW50LSVDT01QJV17Y29sb3I6IzIxMjEyMTtvcGFjaXR5Oi40fS5tYXQtY2hpcC5tYXQtc3RhbmRhcmQtY2hpcFtfbmdjb250ZW50LSVDT01QJV06bm90KC5tYXQtY2hpcC1kaXNhYmxlZCk6YWN0aXZle2JveC1zaGFkb3c6MHB4IDNweCAzcHggLTJweCByZ2JhKDAsIDAsIDAsIDAuMiksMHB4IDNweCA0cHggMHB4IHJnYmEoMCwgMCwgMCwgMC4xNCksMHB4IDFweCA4cHggMHB4IHJnYmEoMCwgMCwgMCwgMC4xMil9Lm1hdC1jaGlwLm1hdC1zdGFuZGFyZC1jaGlwW19uZ2NvbnRlbnQtJUNPTVAlXTpub3QoLm1hdC1jaGlwLWRpc2FibGVkKSAgIC5tYXQtY2hpcC1yZW1vdmVbX25nY29udGVudC0lQ09NUCVdOmhvdmVye29wYWNpdHk6LjU0fS5tYXQtY2hpcC5tYXQtc3RhbmRhcmQtY2hpcC5tYXQtY2hpcC1kaXNhYmxlZFtfbmdjb250ZW50LSVDT01QJV17b3BhY2l0eTouNH0ubWF0LWNoaXAubWF0LXN0YW5kYXJkLWNoaXBbX25nY29udGVudC0lQ09NUCVdOjphZnRlcntiYWNrZ3JvdW5kOiMwMDB9Lm1hdC1jaGlwLm1hdC1zdGFuZGFyZC1jaGlwLm1hdC1jaGlwLXNlbGVjdGVkLm1hdC1wcmltYXJ5W19uZ2NvbnRlbnQtJUNPTVAlXXtiYWNrZ3JvdW5kLWNvbG9yOiNmNTdjMDA7Y29sb3I6I2ZmZn0ubWF0LWNoaXAubWF0LXN0YW5kYXJkLWNoaXAubWF0LWNoaXAtc2VsZWN0ZWQubWF0LXByaW1hcnlbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1jaGlwLXJlbW92ZVtfbmdjb250ZW50LSVDT01QJV17Y29sb3I6I2ZmZjtvcGFjaXR5Oi40fS5tYXQtY2hpcC5tYXQtc3RhbmRhcmQtY2hpcC5tYXQtY2hpcC1zZWxlY3RlZC5tYXQtcHJpbWFyeVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXJpcHBsZS1lbGVtZW50W19uZ2NvbnRlbnQtJUNPTVAlXXtiYWNrZ3JvdW5kLWNvbG9yOnJnYmEoMjU1LDI1NSwyNTUsLjEpfS5tYXQtY2hpcC5tYXQtc3RhbmRhcmQtY2hpcC5tYXQtY2hpcC1zZWxlY3RlZC5tYXQtd2Fybltfbmdjb250ZW50LSVDT01QJV17YmFja2dyb3VuZC1jb2xvcjojZjQ0MzM2O2NvbG9yOiNmZmZ9Lm1hdC1jaGlwLm1hdC1zdGFuZGFyZC1jaGlwLm1hdC1jaGlwLXNlbGVjdGVkLm1hdC13YXJuW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtY2hpcC1yZW1vdmVbX25nY29udGVudC0lQ09NUCVde2NvbG9yOiNmZmY7b3BhY2l0eTouNH0ubWF0LWNoaXAubWF0LXN0YW5kYXJkLWNoaXAubWF0LWNoaXAtc2VsZWN0ZWQubWF0LXdhcm5bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1yaXBwbGUtZWxlbWVudFtfbmdjb250ZW50LSVDT01QJV17YmFja2dyb3VuZC1jb2xvcjpyZ2JhKDI1NSwyNTUsMjU1LC4xKX0ubWF0LWNoaXAubWF0LXN0YW5kYXJkLWNoaXAubWF0LWNoaXAtc2VsZWN0ZWQubWF0LWFjY2VudFtfbmdjb250ZW50LSVDT01QJV17YmFja2dyb3VuZC1jb2xvcjojZmY5ODAwO2NvbG9yOiNmZmZ9Lm1hdC1jaGlwLm1hdC1zdGFuZGFyZC1jaGlwLm1hdC1jaGlwLXNlbGVjdGVkLm1hdC1hY2NlbnRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1jaGlwLXJlbW92ZVtfbmdjb250ZW50LSVDT01QJV17Y29sb3I6I2ZmZjtvcGFjaXR5Oi40fS5tYXQtY2hpcC5tYXQtc3RhbmRhcmQtY2hpcC5tYXQtY2hpcC1zZWxlY3RlZC5tYXQtYWNjZW50W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtcmlwcGxlLWVsZW1lbnRbX25nY29udGVudC0lQ09NUCVde2JhY2tncm91bmQtY29sb3I6cmdiYSgyNTUsMjU1LDI1NSwuMSl9Lm1hdC10YWJsZVtfbmdjb250ZW50LSVDT01QJV17YmFja2dyb3VuZDojZmZmfS5tYXQtdGFibGVbX25nY29udGVudC0lQ09NUCVdICAgdGhlYWRbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXRhYmxlW19uZ2NvbnRlbnQtJUNPTVAlXSAgIHRib2R5W19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10YWJsZVtfbmdjb250ZW50LSVDT01QJV0gICB0Zm9vdFtfbmdjb250ZW50LSVDT01QJV0sIG1hdC1oZWFkZXItcm93W19uZ2NvbnRlbnQtJUNPTVAlXSwgbWF0LXJvd1tfbmdjb250ZW50LSVDT01QJV0sIG1hdC1mb290ZXItcm93W19uZ2NvbnRlbnQtJUNPTVAlXSwgW21hdC1oZWFkZXItcm93XVtfbmdjb250ZW50LSVDT01QJV0sIFttYXQtcm93XVtfbmdjb250ZW50LSVDT01QJV0sIFttYXQtZm9vdGVyLXJvd11bX25nY29udGVudC0lQ09NUCVdLCAubWF0LXRhYmxlLXN0aWNreVtfbmdjb250ZW50LSVDT01QJV17YmFja2dyb3VuZDppbmhlcml0fW1hdC1yb3dbX25nY29udGVudC0lQ09NUCVdLCBtYXQtaGVhZGVyLXJvd1tfbmdjb250ZW50LSVDT01QJV0sIG1hdC1mb290ZXItcm93W19uZ2NvbnRlbnQtJUNPTVAlXSwgdGgubWF0LWhlYWRlci1jZWxsW19uZ2NvbnRlbnQtJUNPTVAlXSwgdGQubWF0LWNlbGxbX25nY29udGVudC0lQ09NUCVdLCB0ZC5tYXQtZm9vdGVyLWNlbGxbX25nY29udGVudC0lQ09NUCVde2JvcmRlci1ib3R0b20tY29sb3I6cmdiYSgwLDAsMCwuMTIpfS5tYXQtaGVhZGVyLWNlbGxbX25nY29udGVudC0lQ09NUCVde2NvbG9yOiM2MTYxNjF9Lm1hdC1jZWxsW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1mb290ZXItY2VsbFtfbmdjb250ZW50LSVDT01QJV17Y29sb3I6IzIxMjEyMX0ubWF0LWNhbGVuZGFyLWFycm93W19uZ2NvbnRlbnQtJUNPTVAlXXtib3JkZXItdG9wLWNvbG9yOnJnYmEoMCwwLDAsLjU0KX0ubWF0LWRhdGVwaWNrZXItdG9nZ2xlW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1kYXRlcGlja2VyLWNvbnRlbnRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1jYWxlbmRhci1uZXh0LWJ1dHRvbltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtZGF0ZXBpY2tlci1jb250ZW50W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtY2FsZW5kYXItcHJldmlvdXMtYnV0dG9uW19uZ2NvbnRlbnQtJUNPTVAlXXtjb2xvcjpyZ2JhKDAsMCwwLC41NCl9Lm1hdC1jYWxlbmRhci10YWJsZS1oZWFkZXJbX25nY29udGVudC0lQ09NUCVde2NvbG9yOnJnYmEoMCwwLDAsLjM4KX0ubWF0LWNhbGVuZGFyLXRhYmxlLWhlYWRlci1kaXZpZGVyW19uZ2NvbnRlbnQtJUNPTVAlXTo6YWZ0ZXJ7YmFja2dyb3VuZDpyZ2JhKDAsMCwwLC4xMil9Lm1hdC1jYWxlbmRhci1ib2R5LWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXtjb2xvcjojNjE2MTYxfS5tYXQtY2FsZW5kYXItYm9keS1jZWxsLWNvbnRlbnRbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWRhdGUtcmFuZ2UtaW5wdXQtc2VwYXJhdG9yW19uZ2NvbnRlbnQtJUNPTVAlXXtjb2xvcjojMjEyMTIxO2JvcmRlci1jb2xvcjp0cmFuc3BhcmVudH0ubWF0LWNhbGVuZGFyLWJvZHktZGlzYWJsZWRbX25nY29udGVudC0lQ09NUCVdID4gLm1hdC1jYWxlbmRhci1ib2R5LWNlbGwtY29udGVudFtfbmdjb250ZW50LSVDT01QJV06bm90KC5tYXQtY2FsZW5kYXItYm9keS1zZWxlY3RlZCk6bm90KC5tYXQtY2FsZW5kYXItYm9keS1jb21wYXJpc29uLWlkZW50aWNhbCl7Y29sb3I6Izc1NzU3NX0ubWF0LWZvcm0tZmllbGQtZGlzYWJsZWRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1kYXRlLXJhbmdlLWlucHV0LXNlcGFyYXRvcltfbmdjb250ZW50LSVDT01QJV17Y29sb3I6Izc1NzU3NX0ubWF0LWNhbGVuZGFyLWJvZHktY2VsbFtfbmdjb250ZW50LSVDT01QJV06bm90KC5tYXQtY2FsZW5kYXItYm9keS1kaXNhYmxlZCk6aG92ZXIgPiAubWF0LWNhbGVuZGFyLWJvZHktY2VsbC1jb250ZW50W19uZ2NvbnRlbnQtJUNPTVAlXTpub3QoLm1hdC1jYWxlbmRhci1ib2R5LXNlbGVjdGVkKTpub3QoLm1hdC1jYWxlbmRhci1ib2R5LWNvbXBhcmlzb24taWRlbnRpY2FsKSwgLmNkay1rZXlib2FyZC1mb2N1c2VkW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtY2FsZW5kYXItYm9keS1hY3RpdmVbX25nY29udGVudC0lQ09NUCVdID4gLm1hdC1jYWxlbmRhci1ib2R5LWNlbGwtY29udGVudFtfbmdjb250ZW50LSVDT01QJV06bm90KC5tYXQtY2FsZW5kYXItYm9keS1zZWxlY3RlZCk6bm90KC5tYXQtY2FsZW5kYXItYm9keS1jb21wYXJpc29uLWlkZW50aWNhbCksIC5jZGstcHJvZ3JhbS1mb2N1c2VkW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtY2FsZW5kYXItYm9keS1hY3RpdmVbX25nY29udGVudC0lQ09NUCVdID4gLm1hdC1jYWxlbmRhci1ib2R5LWNlbGwtY29udGVudFtfbmdjb250ZW50LSVDT01QJV06bm90KC5tYXQtY2FsZW5kYXItYm9keS1zZWxlY3RlZCk6bm90KC5tYXQtY2FsZW5kYXItYm9keS1jb21wYXJpc29uLWlkZW50aWNhbCl7YmFja2dyb3VuZC1jb2xvcjpyZ2JhKDAsMCwwLC4wNCl9Lm1hdC1jYWxlbmRhci1ib2R5LWluLXByZXZpZXdbX25nY29udGVudC0lQ09NUCVde2NvbG9yOnJnYmEoMCwwLDAsLjI0KX0ubWF0LWNhbGVuZGFyLWJvZHktdG9kYXlbX25nY29udGVudC0lQ09NUCVdOm5vdCgubWF0LWNhbGVuZGFyLWJvZHktc2VsZWN0ZWQpOm5vdCgubWF0LWNhbGVuZGFyLWJvZHktY29tcGFyaXNvbi1pZGVudGljYWwpe2JvcmRlci1jb2xvcjpyZ2JhKDAsMCwwLC4zOCl9Lm1hdC1jYWxlbmRhci1ib2R5LWRpc2FibGVkW19uZ2NvbnRlbnQtJUNPTVAlXSA+IC5tYXQtY2FsZW5kYXItYm9keS10b2RheVtfbmdjb250ZW50LSVDT01QJV06bm90KC5tYXQtY2FsZW5kYXItYm9keS1zZWxlY3RlZCk6bm90KC5tYXQtY2FsZW5kYXItYm9keS1jb21wYXJpc29uLWlkZW50aWNhbCl7Ym9yZGVyLWNvbG9yOnJnYmEoMCwwLDAsLjE4KX0ubWF0LWNhbGVuZGFyLWJvZHktaW4tcmFuZ2VbX25nY29udGVudC0lQ09NUCVdOjpiZWZvcmV7YmFja2dyb3VuZDpyZ2JhKDI0NSwxMjQsMCwuMil9Lm1hdC1jYWxlbmRhci1ib2R5LWNvbXBhcmlzb24taWRlbnRpY2FsW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1jYWxlbmRhci1ib2R5LWluLWNvbXBhcmlzb24tcmFuZ2VbX25nY29udGVudC0lQ09NUCVdOjpiZWZvcmV7YmFja2dyb3VuZDpyZ2JhKDI0OSwxNzEsMCwuMil9Lm1hdC1jYWxlbmRhci1ib2R5LWNvbXBhcmlzb24tYnJpZGdlLXN0YXJ0W19uZ2NvbnRlbnQtJUNPTVAlXTo6YmVmb3JlLCBbZGlyPXJ0bF1bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1jYWxlbmRhci1ib2R5LWNvbXBhcmlzb24tYnJpZGdlLWVuZFtfbmdjb250ZW50LSVDT01QJV06OmJlZm9yZXtiYWNrZ3JvdW5kOmxpbmVhci1ncmFkaWVudCh0byByaWdodCwgcmdiYSgyNDUsIDEyNCwgMCwgMC4yKSA1MCUsIHJnYmEoMjQ5LCAxNzEsIDAsIDAuMikgNTAlKX0ubWF0LWNhbGVuZGFyLWJvZHktY29tcGFyaXNvbi1icmlkZ2UtZW5kW19uZ2NvbnRlbnQtJUNPTVAlXTo6YmVmb3JlLCBbZGlyPXJ0bF1bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1jYWxlbmRhci1ib2R5LWNvbXBhcmlzb24tYnJpZGdlLXN0YXJ0W19uZ2NvbnRlbnQtJUNPTVAlXTo6YmVmb3Jle2JhY2tncm91bmQ6bGluZWFyLWdyYWRpZW50KHRvIGxlZnQsIHJnYmEoMjQ1LCAxMjQsIDAsIDAuMikgNTAlLCByZ2JhKDI0OSwgMTcxLCAwLCAwLjIpIDUwJSl9Lm1hdC1jYWxlbmRhci1ib2R5LWluLXJhbmdlW19uZ2NvbnRlbnQtJUNPTVAlXSA+IC5tYXQtY2FsZW5kYXItYm9keS1jb21wYXJpc29uLWlkZW50aWNhbFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtY2FsZW5kYXItYm9keS1pbi1jb21wYXJpc29uLXJhbmdlLm1hdC1jYWxlbmRhci1ib2R5LWluLXJhbmdlW19uZ2NvbnRlbnQtJUNPTVAlXTo6YWZ0ZXJ7YmFja2dyb3VuZDojYThkYWI1fS5tYXQtY2FsZW5kYXItYm9keS1jb21wYXJpc29uLWlkZW50aWNhbC5tYXQtY2FsZW5kYXItYm9keS1zZWxlY3RlZFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtY2FsZW5kYXItYm9keS1pbi1jb21wYXJpc29uLXJhbmdlW19uZ2NvbnRlbnQtJUNPTVAlXSA+IC5tYXQtY2FsZW5kYXItYm9keS1zZWxlY3RlZFtfbmdjb250ZW50LSVDT01QJV17YmFja2dyb3VuZDojNDZhMzVlfS5tYXQtY2FsZW5kYXItYm9keS1zZWxlY3RlZFtfbmdjb250ZW50LSVDT01QJV17YmFja2dyb3VuZC1jb2xvcjojZjU3YzAwO2NvbG9yOiNmZmZ9Lm1hdC1jYWxlbmRhci1ib2R5LWRpc2FibGVkW19uZ2NvbnRlbnQtJUNPTVAlXSA+IC5tYXQtY2FsZW5kYXItYm9keS1zZWxlY3RlZFtfbmdjb250ZW50LSVDT01QJV17YmFja2dyb3VuZC1jb2xvcjpyZ2JhKDI0NSwxMjQsMCwuNCl9Lm1hdC1jYWxlbmRhci1ib2R5LXRvZGF5Lm1hdC1jYWxlbmRhci1ib2R5LXNlbGVjdGVkW19uZ2NvbnRlbnQtJUNPTVAlXXtib3gtc2hhZG93Omluc2V0IDAgMCAwIDFweCAjZmZmfS5tYXQtZGF0ZXBpY2tlci1jb250ZW50W19uZ2NvbnRlbnQtJUNPTVAlXXtib3gtc2hhZG93OjBweCAycHggNHB4IC0xcHggcmdiYSgwLCAwLCAwLCAwLjIpLDBweCA0cHggNXB4IDBweCByZ2JhKDAsIDAsIDAsIDAuMTQpLDBweCAxcHggMTBweCAwcHggcmdiYSgwLCAwLCAwLCAwLjEyKTtiYWNrZ3JvdW5kLWNvbG9yOiNmZmY7Y29sb3I6IzIxMjEyMX0ubWF0LWRhdGVwaWNrZXItY29udGVudC5tYXQtYWNjZW50W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtY2FsZW5kYXItYm9keS1pbi1yYW5nZVtfbmdjb250ZW50LSVDT01QJV06OmJlZm9yZXtiYWNrZ3JvdW5kOnJnYmEoMjU1LDE1MiwwLC4yKX0ubWF0LWRhdGVwaWNrZXItY29udGVudC5tYXQtYWNjZW50W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtY2FsZW5kYXItYm9keS1jb21wYXJpc29uLWlkZW50aWNhbFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtZGF0ZXBpY2tlci1jb250ZW50Lm1hdC1hY2NlbnRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1jYWxlbmRhci1ib2R5LWluLWNvbXBhcmlzb24tcmFuZ2VbX25nY29udGVudC0lQ09NUCVdOjpiZWZvcmV7YmFja2dyb3VuZDpyZ2JhKDI0OSwxNzEsMCwuMil9Lm1hdC1kYXRlcGlja2VyLWNvbnRlbnQubWF0LWFjY2VudFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWNhbGVuZGFyLWJvZHktY29tcGFyaXNvbi1icmlkZ2Utc3RhcnRbX25nY29udGVudC0lQ09NUCVdOjpiZWZvcmUsIC5tYXQtZGF0ZXBpY2tlci1jb250ZW50Lm1hdC1hY2NlbnRbX25nY29udGVudC0lQ09NUCVdICAgW2Rpcj1ydGxdW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtY2FsZW5kYXItYm9keS1jb21wYXJpc29uLWJyaWRnZS1lbmRbX25nY29udGVudC0lQ09NUCVdOjpiZWZvcmV7YmFja2dyb3VuZDpsaW5lYXItZ3JhZGllbnQodG8gcmlnaHQsIHJnYmEoMjU1LCAxNTIsIDAsIDAuMikgNTAlLCByZ2JhKDI0OSwgMTcxLCAwLCAwLjIpIDUwJSl9Lm1hdC1kYXRlcGlja2VyLWNvbnRlbnQubWF0LWFjY2VudFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWNhbGVuZGFyLWJvZHktY29tcGFyaXNvbi1icmlkZ2UtZW5kW19uZ2NvbnRlbnQtJUNPTVAlXTo6YmVmb3JlLCAubWF0LWRhdGVwaWNrZXItY29udGVudC5tYXQtYWNjZW50W19uZ2NvbnRlbnQtJUNPTVAlXSAgIFtkaXI9cnRsXVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWNhbGVuZGFyLWJvZHktY29tcGFyaXNvbi1icmlkZ2Utc3RhcnRbX25nY29udGVudC0lQ09NUCVdOjpiZWZvcmV7YmFja2dyb3VuZDpsaW5lYXItZ3JhZGllbnQodG8gbGVmdCwgcmdiYSgyNTUsIDE1MiwgMCwgMC4yKSA1MCUsIHJnYmEoMjQ5LCAxNzEsIDAsIDAuMikgNTAlKX0ubWF0LWRhdGVwaWNrZXItY29udGVudC5tYXQtYWNjZW50W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtY2FsZW5kYXItYm9keS1pbi1yYW5nZVtfbmdjb250ZW50LSVDT01QJV0gPiAubWF0LWNhbGVuZGFyLWJvZHktY29tcGFyaXNvbi1pZGVudGljYWxbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWRhdGVwaWNrZXItY29udGVudC5tYXQtYWNjZW50W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtY2FsZW5kYXItYm9keS1pbi1jb21wYXJpc29uLXJhbmdlLm1hdC1jYWxlbmRhci1ib2R5LWluLXJhbmdlW19uZ2NvbnRlbnQtJUNPTVAlXTo6YWZ0ZXJ7YmFja2dyb3VuZDojYThkYWI1fS5tYXQtZGF0ZXBpY2tlci1jb250ZW50Lm1hdC1hY2NlbnRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1jYWxlbmRhci1ib2R5LWNvbXBhcmlzb24taWRlbnRpY2FsLm1hdC1jYWxlbmRhci1ib2R5LXNlbGVjdGVkW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1kYXRlcGlja2VyLWNvbnRlbnQubWF0LWFjY2VudFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWNhbGVuZGFyLWJvZHktaW4tY29tcGFyaXNvbi1yYW5nZVtfbmdjb250ZW50LSVDT01QJV0gPiAubWF0LWNhbGVuZGFyLWJvZHktc2VsZWN0ZWRbX25nY29udGVudC0lQ09NUCVde2JhY2tncm91bmQ6IzQ2YTM1ZX0ubWF0LWRhdGVwaWNrZXItY29udGVudC5tYXQtYWNjZW50W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtY2FsZW5kYXItYm9keS1zZWxlY3RlZFtfbmdjb250ZW50LSVDT01QJV17YmFja2dyb3VuZC1jb2xvcjojZmY5ODAwO2NvbG9yOiNmZmZ9Lm1hdC1kYXRlcGlja2VyLWNvbnRlbnQubWF0LWFjY2VudFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWNhbGVuZGFyLWJvZHktZGlzYWJsZWRbX25nY29udGVudC0lQ09NUCVdID4gLm1hdC1jYWxlbmRhci1ib2R5LXNlbGVjdGVkW19uZ2NvbnRlbnQtJUNPTVAlXXtiYWNrZ3JvdW5kLWNvbG9yOnJnYmEoMjU1LDE1MiwwLC40KX0ubWF0LWRhdGVwaWNrZXItY29udGVudC5tYXQtYWNjZW50W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtY2FsZW5kYXItYm9keS10b2RheS5tYXQtY2FsZW5kYXItYm9keS1zZWxlY3RlZFtfbmdjb250ZW50LSVDT01QJV17Ym94LXNoYWRvdzppbnNldCAwIDAgMCAxcHggI2ZmZn0ubWF0LWRhdGVwaWNrZXItY29udGVudC5tYXQtd2Fybltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWNhbGVuZGFyLWJvZHktaW4tcmFuZ2VbX25nY29udGVudC0lQ09NUCVdOjpiZWZvcmV7YmFja2dyb3VuZDpyZ2JhKDI0NCw2Nyw1NCwuMil9Lm1hdC1kYXRlcGlja2VyLWNvbnRlbnQubWF0LXdhcm5bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1jYWxlbmRhci1ib2R5LWNvbXBhcmlzb24taWRlbnRpY2FsW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1kYXRlcGlja2VyLWNvbnRlbnQubWF0LXdhcm5bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1jYWxlbmRhci1ib2R5LWluLWNvbXBhcmlzb24tcmFuZ2VbX25nY29udGVudC0lQ09NUCVdOjpiZWZvcmV7YmFja2dyb3VuZDpyZ2JhKDI0OSwxNzEsMCwuMil9Lm1hdC1kYXRlcGlja2VyLWNvbnRlbnQubWF0LXdhcm5bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1jYWxlbmRhci1ib2R5LWNvbXBhcmlzb24tYnJpZGdlLXN0YXJ0W19uZ2NvbnRlbnQtJUNPTVAlXTo6YmVmb3JlLCAubWF0LWRhdGVwaWNrZXItY29udGVudC5tYXQtd2Fybltfbmdjb250ZW50LSVDT01QJV0gICBbZGlyPXJ0bF1bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1jYWxlbmRhci1ib2R5LWNvbXBhcmlzb24tYnJpZGdlLWVuZFtfbmdjb250ZW50LSVDT01QJV06OmJlZm9yZXtiYWNrZ3JvdW5kOmxpbmVhci1ncmFkaWVudCh0byByaWdodCwgcmdiYSgyNDQsIDY3LCA1NCwgMC4yKSA1MCUsIHJnYmEoMjQ5LCAxNzEsIDAsIDAuMikgNTAlKX0ubWF0LWRhdGVwaWNrZXItY29udGVudC5tYXQtd2Fybltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWNhbGVuZGFyLWJvZHktY29tcGFyaXNvbi1icmlkZ2UtZW5kW19uZ2NvbnRlbnQtJUNPTVAlXTo6YmVmb3JlLCAubWF0LWRhdGVwaWNrZXItY29udGVudC5tYXQtd2Fybltfbmdjb250ZW50LSVDT01QJV0gICBbZGlyPXJ0bF1bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1jYWxlbmRhci1ib2R5LWNvbXBhcmlzb24tYnJpZGdlLXN0YXJ0W19uZ2NvbnRlbnQtJUNPTVAlXTo6YmVmb3Jle2JhY2tncm91bmQ6bGluZWFyLWdyYWRpZW50KHRvIGxlZnQsIHJnYmEoMjQ0LCA2NywgNTQsIDAuMikgNTAlLCByZ2JhKDI0OSwgMTcxLCAwLCAwLjIpIDUwJSl9Lm1hdC1kYXRlcGlja2VyLWNvbnRlbnQubWF0LXdhcm5bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1jYWxlbmRhci1ib2R5LWluLXJhbmdlW19uZ2NvbnRlbnQtJUNPTVAlXSA+IC5tYXQtY2FsZW5kYXItYm9keS1jb21wYXJpc29uLWlkZW50aWNhbFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtZGF0ZXBpY2tlci1jb250ZW50Lm1hdC13YXJuW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtY2FsZW5kYXItYm9keS1pbi1jb21wYXJpc29uLXJhbmdlLm1hdC1jYWxlbmRhci1ib2R5LWluLXJhbmdlW19uZ2NvbnRlbnQtJUNPTVAlXTo6YWZ0ZXJ7YmFja2dyb3VuZDojYThkYWI1fS5tYXQtZGF0ZXBpY2tlci1jb250ZW50Lm1hdC13YXJuW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtY2FsZW5kYXItYm9keS1jb21wYXJpc29uLWlkZW50aWNhbC5tYXQtY2FsZW5kYXItYm9keS1zZWxlY3RlZFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtZGF0ZXBpY2tlci1jb250ZW50Lm1hdC13YXJuW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtY2FsZW5kYXItYm9keS1pbi1jb21wYXJpc29uLXJhbmdlW19uZ2NvbnRlbnQtJUNPTVAlXSA+IC5tYXQtY2FsZW5kYXItYm9keS1zZWxlY3RlZFtfbmdjb250ZW50LSVDT01QJV17YmFja2dyb3VuZDojNDZhMzVlfS5tYXQtZGF0ZXBpY2tlci1jb250ZW50Lm1hdC13YXJuW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtY2FsZW5kYXItYm9keS1zZWxlY3RlZFtfbmdjb250ZW50LSVDT01QJV17YmFja2dyb3VuZC1jb2xvcjojZjQ0MzM2O2NvbG9yOiNmZmZ9Lm1hdC1kYXRlcGlja2VyLWNvbnRlbnQubWF0LXdhcm5bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1jYWxlbmRhci1ib2R5LWRpc2FibGVkW19uZ2NvbnRlbnQtJUNPTVAlXSA+IC5tYXQtY2FsZW5kYXItYm9keS1zZWxlY3RlZFtfbmdjb250ZW50LSVDT01QJV17YmFja2dyb3VuZC1jb2xvcjpyZ2JhKDI0NCw2Nyw1NCwuNCl9Lm1hdC1kYXRlcGlja2VyLWNvbnRlbnQubWF0LXdhcm5bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1jYWxlbmRhci1ib2R5LXRvZGF5Lm1hdC1jYWxlbmRhci1ib2R5LXNlbGVjdGVkW19uZ2NvbnRlbnQtJUNPTVAlXXtib3gtc2hhZG93Omluc2V0IDAgMCAwIDFweCAjZmZmfS5tYXQtZGF0ZXBpY2tlci1jb250ZW50LXRvdWNoW19uZ2NvbnRlbnQtJUNPTVAlXXtib3gtc2hhZG93OjBweCAwcHggMHB4IDBweCByZ2JhKDAsIDAsIDAsIDAuMiksMHB4IDBweCAwcHggMHB4IHJnYmEoMCwgMCwgMCwgMC4xNCksMHB4IDBweCAwcHggMHB4IHJnYmEoMCwgMCwgMCwgMC4xMil9Lm1hdC1kYXRlcGlja2VyLXRvZ2dsZS1hY3RpdmVbX25nY29udGVudC0lQ09NUCVde2NvbG9yOiNmNTdjMDB9Lm1hdC1kYXRlcGlja2VyLXRvZ2dsZS1hY3RpdmUubWF0LWFjY2VudFtfbmdjb250ZW50LSVDT01QJV17Y29sb3I6I2ZmOTgwMH0ubWF0LWRhdGVwaWNrZXItdG9nZ2xlLWFjdGl2ZS5tYXQtd2Fybltfbmdjb250ZW50LSVDT01QJV17Y29sb3I6I2Y0NDMzNn0ubWF0LWRhdGUtcmFuZ2UtaW5wdXQtaW5uZXJbZGlzYWJsZWRdW19uZ2NvbnRlbnQtJUNPTVAlXXtjb2xvcjojNzU3NTc1fS5tYXQtZGlhbG9nLWNvbnRhaW5lcltfbmdjb250ZW50LSVDT01QJV17Ym94LXNoYWRvdzowcHggMTFweCAxNXB4IC03cHggcmdiYSgwLCAwLCAwLCAwLjIpLDBweCAyNHB4IDM4cHggM3B4IHJnYmEoMCwgMCwgMCwgMC4xNCksMHB4IDlweCA0NnB4IDhweCByZ2JhKDAsIDAsIDAsIDAuMTIpO2JhY2tncm91bmQ6I2ZmZjtjb2xvcjojMjEyMTIxfS5tYXQtZGl2aWRlcltfbmdjb250ZW50LSVDT01QJV17Ym9yZGVyLXRvcC1jb2xvcjpyZ2JhKDAsMCwwLC4xMil9Lm1hdC1kaXZpZGVyLXZlcnRpY2FsW19uZ2NvbnRlbnQtJUNPTVAlXXtib3JkZXItcmlnaHQtY29sb3I6cmdiYSgwLDAsMCwuMTIpfS5tYXQtZXhwYW5zaW9uLXBhbmVsW19uZ2NvbnRlbnQtJUNPTVAlXXtiYWNrZ3JvdW5kOiNmZmY7Y29sb3I6IzIxMjEyMX0ubWF0LWV4cGFuc2lvbi1wYW5lbFtfbmdjb250ZW50LSVDT01QJV06bm90KFtjbGFzcyo9bWF0LWVsZXZhdGlvbi16XSl7Ym94LXNoYWRvdzowcHggM3B4IDFweCAtMnB4IHJnYmEoMCwgMCwgMCwgMC4yKSwwcHggMnB4IDJweCAwcHggcmdiYSgwLCAwLCAwLCAwLjE0KSwwcHggMXB4IDVweCAwcHggcmdiYSgwLCAwLCAwLCAwLjEyKX0ubWF0LWFjdGlvbi1yb3dbX25nY29udGVudC0lQ09NUCVde2JvcmRlci10b3AtY29sb3I6cmdiYSgwLDAsMCwuMTIpfS5tYXQtZXhwYW5zaW9uLXBhbmVsW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZXhwYW5zaW9uLXBhbmVsLWhlYWRlci5jZGsta2V5Ym9hcmQtZm9jdXNlZFtfbmdjb250ZW50LSVDT01QJV06bm90KFthcmlhLWRpc2FibGVkPXRydWVdKSwgLm1hdC1leHBhbnNpb24tcGFuZWxbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1leHBhbnNpb24tcGFuZWwtaGVhZGVyLmNkay1wcm9ncmFtLWZvY3VzZWRbX25nY29udGVudC0lQ09NUCVdOm5vdChbYXJpYS1kaXNhYmxlZD10cnVlXSksIC5tYXQtZXhwYW5zaW9uLXBhbmVsW19uZ2NvbnRlbnQtJUNPTVAlXTpub3QoLm1hdC1leHBhbmRlZCkgICAubWF0LWV4cGFuc2lvbi1wYW5lbC1oZWFkZXJbX25nY29udGVudC0lQ09NUCVdOmhvdmVyOm5vdChbYXJpYS1kaXNhYmxlZD10cnVlXSl7YmFja2dyb3VuZDpyZ2JhKDAsMCwwLC4wNCl9QG1lZGlhKGhvdmVyOiBub25lKXsubWF0LWV4cGFuc2lvbi1wYW5lbFtfbmdjb250ZW50LSVDT01QJV06bm90KC5tYXQtZXhwYW5kZWQpOm5vdChbYXJpYS1kaXNhYmxlZD10cnVlXSkgICAubWF0LWV4cGFuc2lvbi1wYW5lbC1oZWFkZXJbX25nY29udGVudC0lQ09NUCVdOmhvdmVye2JhY2tncm91bmQ6I2ZmZn19Lm1hdC1leHBhbnNpb24tcGFuZWwtaGVhZGVyLXRpdGxlW19uZ2NvbnRlbnQtJUNPTVAlXXtjb2xvcjojMjEyMTIxfS5tYXQtZXhwYW5zaW9uLXBhbmVsLWhlYWRlci1kZXNjcmlwdGlvbltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtZXhwYW5zaW9uLWluZGljYXRvcltfbmdjb250ZW50LSVDT01QJV06OmFmdGVye2NvbG9yOiM2MTYxNjF9Lm1hdC1leHBhbnNpb24tcGFuZWwtaGVhZGVyW2FyaWEtZGlzYWJsZWQ9dHJ1ZV1bX25nY29udGVudC0lQ09NUCVde2NvbG9yOnJnYmEoMCwwLDAsLjI2KX0ubWF0LWV4cGFuc2lvbi1wYW5lbC1oZWFkZXJbYXJpYS1kaXNhYmxlZD10cnVlXVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWV4cGFuc2lvbi1wYW5lbC1oZWFkZXItdGl0bGVbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWV4cGFuc2lvbi1wYW5lbC1oZWFkZXJbYXJpYS1kaXNhYmxlZD10cnVlXVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWV4cGFuc2lvbi1wYW5lbC1oZWFkZXItZGVzY3JpcHRpb25bX25nY29udGVudC0lQ09NUCVde2NvbG9yOmluaGVyaXR9Lm1hdC1leHBhbnNpb24tcGFuZWwtaGVhZGVyW19uZ2NvbnRlbnQtJUNPTVAlXXtoZWlnaHQ6NDhweH0ubWF0LWV4cGFuc2lvbi1wYW5lbC1oZWFkZXIubWF0LWV4cGFuZGVkW19uZ2NvbnRlbnQtJUNPTVAlXXtoZWlnaHQ6NjRweH0ubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVde2NvbG9yOnJnYmEoOTcsOTcsOTcsLjYpfS5tYXQtaGludFtfbmdjb250ZW50LSVDT01QJV17Y29sb3I6cmdiYSg5Nyw5Nyw5NywuNil9Lm1hdC1mb3JtLWZpZWxkLm1hdC1mb2N1c2VkW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17Y29sb3I6I2Y1N2MwMH0ubWF0LWZvcm0tZmllbGQubWF0LWZvY3VzZWRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsLm1hdC1hY2NlbnRbX25nY29udGVudC0lQ09NUCVde2NvbG9yOiNmZjk4MDB9Lm1hdC1mb3JtLWZpZWxkLm1hdC1mb2N1c2VkW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbC5tYXQtd2Fybltfbmdjb250ZW50LSVDT01QJV17Y29sb3I6I2Y0NDMzNn0ubWF0LWZvY3VzZWRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLXJlcXVpcmVkLW1hcmtlcltfbmdjb250ZW50LSVDT01QJV17Y29sb3I6I2ZmOTgwMH0ubWF0LWZvcm0tZmllbGQtcmlwcGxlW19uZ2NvbnRlbnQtJUNPTVAlXXtiYWNrZ3JvdW5kLWNvbG9yOnJnYmEoMCwwLDAsLjg3KX0ubWF0LWZvcm0tZmllbGQubWF0LWZvY3VzZWRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLXJpcHBsZVtfbmdjb250ZW50LSVDT01QJV17YmFja2dyb3VuZC1jb2xvcjojZjU3YzAwfS5tYXQtZm9ybS1maWVsZC5tYXQtZm9jdXNlZFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtcmlwcGxlLm1hdC1hY2NlbnRbX25nY29udGVudC0lQ09NUCVde2JhY2tncm91bmQtY29sb3I6I2ZmOTgwMH0ubWF0LWZvcm0tZmllbGQubWF0LWZvY3VzZWRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLXJpcHBsZS5tYXQtd2Fybltfbmdjb250ZW50LSVDT01QJV17YmFja2dyb3VuZC1jb2xvcjojZjQ0MzM2fS5tYXQtZm9ybS1maWVsZC10eXBlLW1hdC1uYXRpdmUtc2VsZWN0Lm1hdC1mb2N1c2VkW19uZ2NvbnRlbnQtJUNPTVAlXTpub3QoLm1hdC1mb3JtLWZpZWxkLWludmFsaWQpICAgLm1hdC1mb3JtLWZpZWxkLWluZml4W19uZ2NvbnRlbnQtJUNPTVAlXTo6YWZ0ZXJ7Y29sb3I6I2Y1N2MwMH0ubWF0LWZvcm0tZmllbGQtdHlwZS1tYXQtbmF0aXZlLXNlbGVjdC5tYXQtZm9jdXNlZFtfbmdjb250ZW50LSVDT01QJV06bm90KC5tYXQtZm9ybS1maWVsZC1pbnZhbGlkKS5tYXQtYWNjZW50ICAgLm1hdC1mb3JtLWZpZWxkLWluZml4W19uZ2NvbnRlbnQtJUNPTVAlXTo6YWZ0ZXJ7Y29sb3I6I2ZmOTgwMH0ubWF0LWZvcm0tZmllbGQtdHlwZS1tYXQtbmF0aXZlLXNlbGVjdC5tYXQtZm9jdXNlZFtfbmdjb250ZW50LSVDT01QJV06bm90KC5tYXQtZm9ybS1maWVsZC1pbnZhbGlkKS5tYXQtd2FybiAgIC5tYXQtZm9ybS1maWVsZC1pbmZpeFtfbmdjb250ZW50LSVDT01QJV06OmFmdGVye2NvbG9yOiNmNDQzMzZ9Lm1hdC1mb3JtLWZpZWxkLm1hdC1mb3JtLWZpZWxkLWludmFsaWRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXtjb2xvcjojZjQ0MzM2fS5tYXQtZm9ybS1maWVsZC5tYXQtZm9ybS1maWVsZC1pbnZhbGlkW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbC5tYXQtYWNjZW50W19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1mb3JtLWZpZWxkLm1hdC1mb3JtLWZpZWxkLWludmFsaWRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1yZXF1aXJlZC1tYXJrZXJbX25nY29udGVudC0lQ09NUCVde2NvbG9yOiNmNDQzMzZ9Lm1hdC1mb3JtLWZpZWxkLm1hdC1mb3JtLWZpZWxkLWludmFsaWRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLXJpcHBsZVtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtZm9ybS1maWVsZC5tYXQtZm9ybS1maWVsZC1pbnZhbGlkW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1yaXBwbGUubWF0LWFjY2VudFtfbmdjb250ZW50LSVDT01QJV17YmFja2dyb3VuZC1jb2xvcjojZjQ0MzM2fS5tYXQtZXJyb3JbX25nY29udGVudC0lQ09NUCVde2NvbG9yOiNmNDQzMzZ9Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtbGVnYWN5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17Y29sb3I6IzYxNjE2MX0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1sZWdhY3lbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1oaW50W19uZ2NvbnRlbnQtJUNPTVAlXXtjb2xvcjojNjE2MTYxfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWxlZ2FjeVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtdW5kZXJsaW5lW19uZ2NvbnRlbnQtJUNPTVAlXXtiYWNrZ3JvdW5kLWNvbG9yOnJnYmEoMCwwLDAsLjQyKX0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1sZWdhY3kubWF0LWZvcm0tZmllbGQtZGlzYWJsZWRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLXVuZGVybGluZVtfbmdjb250ZW50LSVDT01QJV17YmFja2dyb3VuZC1pbWFnZTpsaW5lYXItZ3JhZGllbnQodG8gcmlnaHQsIHJnYmEoMCwgMCwgMCwgMC40MikgMCUsIHJnYmEoMCwgMCwgMCwgMC40MikgMzMlLCB0cmFuc3BhcmVudCAwJSk7YmFja2dyb3VuZC1zaXplOjRweCAxMDAlO2JhY2tncm91bmQtcmVwZWF0OnJlcGVhdC14fS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLXN0YW5kYXJkW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC11bmRlcmxpbmVbX25nY29udGVudC0lQ09NUCVde2JhY2tncm91bmQtY29sb3I6cmdiYSgwLDAsMCwuNDIpfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLXN0YW5kYXJkLm1hdC1mb3JtLWZpZWxkLWRpc2FibGVkW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC11bmRlcmxpbmVbX25nY29udGVudC0lQ09NUCVde2JhY2tncm91bmQtaW1hZ2U6bGluZWFyLWdyYWRpZW50KHRvIHJpZ2h0LCByZ2JhKDAsIDAsIDAsIDAuNDIpIDAlLCByZ2JhKDAsIDAsIDAsIDAuNDIpIDMzJSwgdHJhbnNwYXJlbnQgMCUpO2JhY2tncm91bmQtc2l6ZTo0cHggMTAwJTtiYWNrZ3JvdW5kLXJlcGVhdDpyZXBlYXQteH0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1maWxsW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1mbGV4W19uZ2NvbnRlbnQtJUNPTVAlXXtiYWNrZ3JvdW5kLWNvbG9yOnJnYmEoMCwwLDAsLjA0KX0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1maWxsLm1hdC1mb3JtLWZpZWxkLWRpc2FibGVkW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1mbGV4W19uZ2NvbnRlbnQtJUNPTVAlXXtiYWNrZ3JvdW5kLWNvbG9yOnJnYmEoMCwwLDAsLjAyKX0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1maWxsW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC11bmRlcmxpbmVbX25nY29udGVudC0lQ09NUCVdOjpiZWZvcmV7YmFja2dyb3VuZC1jb2xvcjpyZ2JhKDAsMCwwLC40Mil9Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtZmlsbC5tYXQtZm9ybS1maWVsZC1kaXNhYmxlZFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVde2NvbG9yOiM3NTc1NzV9Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtZmlsbC5tYXQtZm9ybS1maWVsZC1kaXNhYmxlZFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtdW5kZXJsaW5lW19uZ2NvbnRlbnQtJUNPTVAlXTo6YmVmb3Jle2JhY2tncm91bmQtY29sb3I6dHJhbnNwYXJlbnR9Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2Utb3V0bGluZVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtb3V0bGluZVtfbmdjb250ZW50LSVDT01QJV17Y29sb3I6cmdiYSgwLDAsMCwuMTIpfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLW91dGxpbmVbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLW91dGxpbmUtdGhpY2tbX25nY29udGVudC0lQ09NUCVde2NvbG9yOnJnYmEoMCwwLDAsLjg3KX0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1vdXRsaW5lLm1hdC1mb2N1c2VkW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1vdXRsaW5lLXRoaWNrW19uZ2NvbnRlbnQtJUNPTVAlXXtjb2xvcjojZjU3YzAwfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLW91dGxpbmUubWF0LWZvY3VzZWQubWF0LWFjY2VudFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtb3V0bGluZS10aGlja1tfbmdjb250ZW50LSVDT01QJV17Y29sb3I6I2ZmOTgwMH0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1vdXRsaW5lLm1hdC1mb2N1c2VkLm1hdC13YXJuW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1vdXRsaW5lLXRoaWNrW19uZ2NvbnRlbnQtJUNPTVAlXXtjb2xvcjojZjQ0MzM2fS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLW91dGxpbmUubWF0LWZvcm0tZmllbGQtaW52YWxpZC5tYXQtZm9ybS1maWVsZC1pbnZhbGlkW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1vdXRsaW5lLXRoaWNrW19uZ2NvbnRlbnQtJUNPTVAlXXtjb2xvcjojZjQ0MzM2fS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLW91dGxpbmUubWF0LWZvcm0tZmllbGQtZGlzYWJsZWRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXtjb2xvcjojNzU3NTc1fS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLW91dGxpbmUubWF0LWZvcm0tZmllbGQtZGlzYWJsZWRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLW91dGxpbmVbX25nY29udGVudC0lQ09NUCVde2NvbG9yOnJnYmEoMCwwLDAsLjA2KX0ubWF0LWljb24ubWF0LXByaW1hcnlbX25nY29udGVudC0lQ09NUCVde2NvbG9yOiNmNTdjMDB9Lm1hdC1pY29uLm1hdC1hY2NlbnRbX25nY29udGVudC0lQ09NUCVde2NvbG9yOiNmZjk4MDB9Lm1hdC1pY29uLm1hdC13YXJuW19uZ2NvbnRlbnQtJUNPTVAlXXtjb2xvcjojZjQ0MzM2fS5tYXQtZm9ybS1maWVsZC10eXBlLW1hdC1uYXRpdmUtc2VsZWN0W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1pbmZpeFtfbmdjb250ZW50LSVDT01QJV06OmFmdGVye2NvbG9yOiM2MTYxNjF9Lm1hdC1pbnB1dC1lbGVtZW50W19uZ2NvbnRlbnQtJUNPTVAlXTpkaXNhYmxlZCwgLm1hdC1mb3JtLWZpZWxkLXR5cGUtbWF0LW5hdGl2ZS1zZWxlY3QubWF0LWZvcm0tZmllbGQtZGlzYWJsZWRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWluZml4W19uZ2NvbnRlbnQtJUNPTVAlXTo6YWZ0ZXJ7Y29sb3I6Izc1NzU3NX0ubWF0LWlucHV0LWVsZW1lbnRbX25nY29udGVudC0lQ09NUCVde2NhcmV0LWNvbG9yOiNmNTdjMDB9Lm1hdC1pbnB1dC1lbGVtZW50W19uZ2NvbnRlbnQtJUNPTVAlXTo6cGxhY2Vob2xkZXJ7Y29sb3I6cmdiYSg5Nyw5Nyw5NywuNDIpfS5tYXQtaW5wdXQtZWxlbWVudFtfbmdjb250ZW50LSVDT01QJV06Oi1tb3otcGxhY2Vob2xkZXJ7Y29sb3I6cmdiYSg5Nyw5Nyw5NywuNDIpfS5tYXQtaW5wdXQtZWxlbWVudFtfbmdjb250ZW50LSVDT01QJV06Oi13ZWJraXQtaW5wdXQtcGxhY2Vob2xkZXJ7Y29sb3I6cmdiYSg5Nyw5Nyw5NywuNDIpfS5tYXQtaW5wdXQtZWxlbWVudFtfbmdjb250ZW50LSVDT01QJV06LW1zLWlucHV0LXBsYWNlaG9sZGVye2NvbG9yOnJnYmEoOTcsOTcsOTcsLjQyKX0ubWF0LWZvcm0tZmllbGQubWF0LWFjY2VudFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWlucHV0LWVsZW1lbnRbX25nY29udGVudC0lQ09NUCVde2NhcmV0LWNvbG9yOiNmZjk4MDB9Lm1hdC1mb3JtLWZpZWxkLm1hdC13YXJuW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaW5wdXQtZWxlbWVudFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtZm9ybS1maWVsZC1pbnZhbGlkW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaW5wdXQtZWxlbWVudFtfbmdjb250ZW50LSVDT01QJV17Y2FyZXQtY29sb3I6I2Y0NDMzNn0ubWF0LWZvcm0tZmllbGQtdHlwZS1tYXQtbmF0aXZlLXNlbGVjdC5tYXQtZm9ybS1maWVsZC1pbnZhbGlkW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1pbmZpeFtfbmdjb250ZW50LSVDT01QJV06OmFmdGVye2NvbG9yOiNmNDQzMzZ9Lm1hdC1saXN0LWJhc2VbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saXN0LWl0ZW1bX25nY29udGVudC0lQ09NUCVde2NvbG9yOiMyMTIxMjF9Lm1hdC1saXN0LWJhc2VbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saXN0LW9wdGlvbltfbmdjb250ZW50LSVDT01QJV17Y29sb3I6IzIxMjEyMX0ubWF0LWxpc3QtYmFzZVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXN1YmhlYWRlcltfbmdjb250ZW50LSVDT01QJV17Y29sb3I6IzYxNjE2MX0ubWF0LWxpc3QtaXRlbS1kaXNhYmxlZFtfbmdjb250ZW50LSVDT01QJV17YmFja2dyb3VuZC1jb2xvcjojZWVlfS5tYXQtbGlzdC1vcHRpb25bX25nY29udGVudC0lQ09NUCVdOmhvdmVyLCAubWF0LWxpc3Qtb3B0aW9uW19uZ2NvbnRlbnQtJUNPTVAlXTpmb2N1cywgLm1hdC1uYXYtbGlzdFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpc3QtaXRlbVtfbmdjb250ZW50LSVDT01QJV06aG92ZXIsIC5tYXQtbmF2LWxpc3RbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saXN0LWl0ZW1bX25nY29udGVudC0lQ09NUCVdOmZvY3VzLCAubWF0LWFjdGlvbi1saXN0W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGlzdC1pdGVtW19uZ2NvbnRlbnQtJUNPTVAlXTpob3ZlciwgLm1hdC1hY3Rpb24tbGlzdFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpc3QtaXRlbVtfbmdjb250ZW50LSVDT01QJV06Zm9jdXN7YmFja2dyb3VuZDpyZ2JhKDAsMCwwLC4wNCl9Lm1hdC1saXN0LXNpbmdsZS1zZWxlY3RlZC1vcHRpb25bX25nY29udGVudC0lQ09NUCVdLCAubWF0LWxpc3Qtc2luZ2xlLXNlbGVjdGVkLW9wdGlvbltfbmdjb250ZW50LSVDT01QJV06aG92ZXIsIC5tYXQtbGlzdC1zaW5nbGUtc2VsZWN0ZWQtb3B0aW9uW19uZ2NvbnRlbnQtJUNPTVAlXTpmb2N1c3tiYWNrZ3JvdW5kOnJnYmEoMCwwLDAsLjEyKX0ubWF0LW1lbnUtcGFuZWxbX25nY29udGVudC0lQ09NUCVde2JhY2tncm91bmQ6I2ZmZn0ubWF0LW1lbnUtcGFuZWxbX25nY29udGVudC0lQ09NUCVdOm5vdChbY2xhc3MqPW1hdC1lbGV2YXRpb24tel0pe2JveC1zaGFkb3c6MHB4IDJweCA0cHggLTFweCByZ2JhKDAsIDAsIDAsIDAuMiksMHB4IDRweCA1cHggMHB4IHJnYmEoMCwgMCwgMCwgMC4xNCksMHB4IDFweCAxMHB4IDBweCByZ2JhKDAsIDAsIDAsIDAuMTIpfS5tYXQtbWVudS1pdGVtW19uZ2NvbnRlbnQtJUNPTVAlXXtiYWNrZ3JvdW5kOnRyYW5zcGFyZW50O2NvbG9yOiMyMTIxMjF9Lm1hdC1tZW51LWl0ZW1bZGlzYWJsZWRdW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1tZW51LWl0ZW1bZGlzYWJsZWRdW19uZ2NvbnRlbnQtJUNPTVAlXTo6YWZ0ZXJ7Y29sb3I6cmdiYSgwLDAsMCwuMzgpfS5tYXQtbWVudS1pdGVtW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaWNvbi1uby1jb2xvcltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtbWVudS1pdGVtLXN1Ym1lbnUtdHJpZ2dlcltfbmdjb250ZW50LSVDT01QJV06OmFmdGVye2NvbG9yOnJnYmEoMCwwLDAsLjU0KX0ubWF0LW1lbnUtaXRlbVtfbmdjb250ZW50LSVDT01QJV06aG92ZXI6bm90KFtkaXNhYmxlZF0pLCAubWF0LW1lbnUtaXRlbS5jZGstcHJvZ3JhbS1mb2N1c2VkW19uZ2NvbnRlbnQtJUNPTVAlXTpub3QoW2Rpc2FibGVkXSksIC5tYXQtbWVudS1pdGVtLmNkay1rZXlib2FyZC1mb2N1c2VkW19uZ2NvbnRlbnQtJUNPTVAlXTpub3QoW2Rpc2FibGVkXSksIC5tYXQtbWVudS1pdGVtLWhpZ2hsaWdodGVkW19uZ2NvbnRlbnQtJUNPTVAlXTpub3QoW2Rpc2FibGVkXSl7YmFja2dyb3VuZDpyZ2JhKDAsMCwwLC4wNCl9Lm1hdC1wYWdpbmF0b3JbX25nY29udGVudC0lQ09NUCVde2JhY2tncm91bmQ6I2ZmZn0ubWF0LXBhZ2luYXRvcltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtcGFnaW5hdG9yLXBhZ2Utc2l6ZVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXNlbGVjdC10cmlnZ2VyW19uZ2NvbnRlbnQtJUNPTVAlXXtjb2xvcjojNjE2MTYxfS5tYXQtcGFnaW5hdG9yLWRlY3JlbWVudFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtcGFnaW5hdG9yLWluY3JlbWVudFtfbmdjb250ZW50LSVDT01QJV17Ym9yZGVyLXRvcDoycHggc29saWQgcmdiYSgwLDAsMCwuNTQpO2JvcmRlci1yaWdodDoycHggc29saWQgcmdiYSgwLDAsMCwuNTQpfS5tYXQtcGFnaW5hdG9yLWZpcnN0W19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1wYWdpbmF0b3ItbGFzdFtfbmdjb250ZW50LSVDT01QJV17Ym9yZGVyLXRvcDoycHggc29saWQgcmdiYSgwLDAsMCwuNTQpfS5tYXQtaWNvbi1idXR0b25bZGlzYWJsZWRdW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtcGFnaW5hdG9yLWRlY3JlbWVudFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtaWNvbi1idXR0b25bZGlzYWJsZWRdW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtcGFnaW5hdG9yLWluY3JlbWVudFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtaWNvbi1idXR0b25bZGlzYWJsZWRdW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtcGFnaW5hdG9yLWZpcnN0W19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1pY29uLWJ1dHRvbltkaXNhYmxlZF1bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1wYWdpbmF0b3ItbGFzdFtfbmdjb250ZW50LSVDT01QJV17Ym9yZGVyLWNvbG9yOnJnYmEoMCwwLDAsLjM4KX0ubWF0LXBhZ2luYXRvci1jb250YWluZXJbX25nY29udGVudC0lQ09NUCVde21pbi1oZWlnaHQ6NTZweH0ubWF0LXByb2dyZXNzLWJhci1iYWNrZ3JvdW5kW19uZ2NvbnRlbnQtJUNPTVAlXXtmaWxsOiNmZjk4MDB9Lm1hdC1wcm9ncmVzcy1iYXItYnVmZmVyW19uZ2NvbnRlbnQtJUNPTVAlXXtiYWNrZ3JvdW5kLWNvbG9yOiNmZjk4MDB9Lm1hdC1wcm9ncmVzcy1iYXItZmlsbFtfbmdjb250ZW50LSVDT01QJV06OmFmdGVye2JhY2tncm91bmQtY29sb3I6I2Y1N2MwMH0ubWF0LXByb2dyZXNzLWJhci5tYXQtYWNjZW50W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtcHJvZ3Jlc3MtYmFyLWJhY2tncm91bmRbX25nY29udGVudC0lQ09NUCVde2ZpbGw6I2ZmOTgwMH0ubWF0LXByb2dyZXNzLWJhci5tYXQtYWNjZW50W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtcHJvZ3Jlc3MtYmFyLWJ1ZmZlcltfbmdjb250ZW50LSVDT01QJV17YmFja2dyb3VuZC1jb2xvcjojZmY5ODAwfS5tYXQtcHJvZ3Jlc3MtYmFyLm1hdC1hY2NlbnRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1wcm9ncmVzcy1iYXItZmlsbFtfbmdjb250ZW50LSVDT01QJV06OmFmdGVye2JhY2tncm91bmQtY29sb3I6I2ZmOTgwMH0ubWF0LXByb2dyZXNzLWJhci5tYXQtd2Fybltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXByb2dyZXNzLWJhci1iYWNrZ3JvdW5kW19uZ2NvbnRlbnQtJUNPTVAlXXtmaWxsOiNmZmNkZDJ9Lm1hdC1wcm9ncmVzcy1iYXIubWF0LXdhcm5bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1wcm9ncmVzcy1iYXItYnVmZmVyW19uZ2NvbnRlbnQtJUNPTVAlXXtiYWNrZ3JvdW5kLWNvbG9yOiNmZmNkZDJ9Lm1hdC1wcm9ncmVzcy1iYXIubWF0LXdhcm5bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1wcm9ncmVzcy1iYXItZmlsbFtfbmdjb250ZW50LSVDT01QJV06OmFmdGVye2JhY2tncm91bmQtY29sb3I6I2Y0NDMzNn0ubWF0LXByb2dyZXNzLXNwaW5uZXJbX25nY29udGVudC0lQ09NUCVdICAgY2lyY2xlW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1zcGlubmVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIGNpcmNsZVtfbmdjb250ZW50LSVDT01QJV17c3Ryb2tlOiNmNTdjMDB9Lm1hdC1wcm9ncmVzcy1zcGlubmVyLm1hdC1hY2NlbnRbX25nY29udGVudC0lQ09NUCVdICAgY2lyY2xlW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1zcGlubmVyLm1hdC1hY2NlbnRbX25nY29udGVudC0lQ09NUCVdICAgY2lyY2xlW19uZ2NvbnRlbnQtJUNPTVAlXXtzdHJva2U6I2ZmOTgwMH0ubWF0LXByb2dyZXNzLXNwaW5uZXIubWF0LXdhcm5bX25nY29udGVudC0lQ09NUCVdICAgY2lyY2xlW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1zcGlubmVyLm1hdC13YXJuW19uZ2NvbnRlbnQtJUNPTVAlXSAgIGNpcmNsZVtfbmdjb250ZW50LSVDT01QJV17c3Ryb2tlOiNmNDQzMzZ9Lm1hdC1yYWRpby1vdXRlci1jaXJjbGVbX25nY29udGVudC0lQ09NUCVde2JvcmRlci1jb2xvcjojNjE2MTYxfS5tYXQtcmFkaW8tYnV0dG9uLm1hdC1wcmltYXJ5Lm1hdC1yYWRpby1jaGVja2VkW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtcmFkaW8tb3V0ZXItY2lyY2xlW19uZ2NvbnRlbnQtJUNPTVAlXXtib3JkZXItY29sb3I6I2Y1N2MwMH0ubWF0LXJhZGlvLWJ1dHRvbi5tYXQtcHJpbWFyeVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXJhZGlvLWlubmVyLWNpcmNsZVtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtcmFkaW8tYnV0dG9uLm1hdC1wcmltYXJ5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtcmFkaW8tcmlwcGxlW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtcmlwcGxlLWVsZW1lbnRbX25nY29udGVudC0lQ09NUCVdOm5vdCgubWF0LXJhZGlvLXBlcnNpc3RlbnQtcmlwcGxlKSwgLm1hdC1yYWRpby1idXR0b24ubWF0LXByaW1hcnkubWF0LXJhZGlvLWNoZWNrZWRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1yYWRpby1wZXJzaXN0ZW50LXJpcHBsZVtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtcmFkaW8tYnV0dG9uLm1hdC1wcmltYXJ5W19uZ2NvbnRlbnQtJUNPTVAlXTphY3RpdmUgICAubWF0LXJhZGlvLXBlcnNpc3RlbnQtcmlwcGxlW19uZ2NvbnRlbnQtJUNPTVAlXXtiYWNrZ3JvdW5kLWNvbG9yOiNmNTdjMDB9Lm1hdC1yYWRpby1idXR0b24ubWF0LWFjY2VudC5tYXQtcmFkaW8tY2hlY2tlZFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXJhZGlvLW91dGVyLWNpcmNsZVtfbmdjb250ZW50LSVDT01QJV17Ym9yZGVyLWNvbG9yOiNmZjk4MDB9Lm1hdC1yYWRpby1idXR0b24ubWF0LWFjY2VudFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXJhZGlvLWlubmVyLWNpcmNsZVtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtcmFkaW8tYnV0dG9uLm1hdC1hY2NlbnRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1yYWRpby1yaXBwbGVbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1yaXBwbGUtZWxlbWVudFtfbmdjb250ZW50LSVDT01QJV06bm90KC5tYXQtcmFkaW8tcGVyc2lzdGVudC1yaXBwbGUpLCAubWF0LXJhZGlvLWJ1dHRvbi5tYXQtYWNjZW50Lm1hdC1yYWRpby1jaGVja2VkW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtcmFkaW8tcGVyc2lzdGVudC1yaXBwbGVbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXJhZGlvLWJ1dHRvbi5tYXQtYWNjZW50W19uZ2NvbnRlbnQtJUNPTVAlXTphY3RpdmUgICAubWF0LXJhZGlvLXBlcnNpc3RlbnQtcmlwcGxlW19uZ2NvbnRlbnQtJUNPTVAlXXtiYWNrZ3JvdW5kLWNvbG9yOiNmZjk4MDB9Lm1hdC1yYWRpby1idXR0b24ubWF0LXdhcm4ubWF0LXJhZGlvLWNoZWNrZWRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1yYWRpby1vdXRlci1jaXJjbGVbX25nY29udGVudC0lQ09NUCVde2JvcmRlci1jb2xvcjojZjQ0MzM2fS5tYXQtcmFkaW8tYnV0dG9uLm1hdC13YXJuW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtcmFkaW8taW5uZXItY2lyY2xlW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1yYWRpby1idXR0b24ubWF0LXdhcm5bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1yYWRpby1yaXBwbGVbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1yaXBwbGUtZWxlbWVudFtfbmdjb250ZW50LSVDT01QJV06bm90KC5tYXQtcmFkaW8tcGVyc2lzdGVudC1yaXBwbGUpLCAubWF0LXJhZGlvLWJ1dHRvbi5tYXQtd2Fybi5tYXQtcmFkaW8tY2hlY2tlZFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXJhZGlvLXBlcnNpc3RlbnQtcmlwcGxlW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1yYWRpby1idXR0b24ubWF0LXdhcm5bX25nY29udGVudC0lQ09NUCVdOmFjdGl2ZSAgIC5tYXQtcmFkaW8tcGVyc2lzdGVudC1yaXBwbGVbX25nY29udGVudC0lQ09NUCVde2JhY2tncm91bmQtY29sb3I6I2Y0NDMzNn0ubWF0LXJhZGlvLWJ1dHRvbi5tYXQtcmFkaW8tZGlzYWJsZWQubWF0LXJhZGlvLWNoZWNrZWRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1yYWRpby1vdXRlci1jaXJjbGVbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXJhZGlvLWJ1dHRvbi5tYXQtcmFkaW8tZGlzYWJsZWRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1yYWRpby1vdXRlci1jaXJjbGVbX25nY29udGVudC0lQ09NUCVde2JvcmRlci1jb2xvcjpyZ2JhKDAsMCwwLC4zOCl9Lm1hdC1yYWRpby1idXR0b24ubWF0LXJhZGlvLWRpc2FibGVkW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtcmFkaW8tcmlwcGxlW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtcmlwcGxlLWVsZW1lbnRbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXJhZGlvLWJ1dHRvbi5tYXQtcmFkaW8tZGlzYWJsZWRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1yYWRpby1pbm5lci1jaXJjbGVbX25nY29udGVudC0lQ09NUCVde2JhY2tncm91bmQtY29sb3I6cmdiYSgwLDAsMCwuMzgpfS5tYXQtcmFkaW8tYnV0dG9uLm1hdC1yYWRpby1kaXNhYmxlZFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXJhZGlvLWxhYmVsLWNvbnRlbnRbX25nY29udGVudC0lQ09NUCVde2NvbG9yOnJnYmEoMCwwLDAsLjM4KX0ubWF0LXJhZGlvLWJ1dHRvbltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXJpcHBsZS1lbGVtZW50W19uZ2NvbnRlbnQtJUNPTVAlXXtiYWNrZ3JvdW5kLWNvbG9yOiMwMDB9Lm1hdC1zZWxlY3QtdmFsdWVbX25nY29udGVudC0lQ09NUCVde2NvbG9yOiMyMTIxMjF9Lm1hdC1zZWxlY3QtcGxhY2Vob2xkZXJbX25nY29udGVudC0lQ09NUCVde2NvbG9yOnJnYmEoOTcsOTcsOTcsLjQyKX0ubWF0LXNlbGVjdC1kaXNhYmxlZFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXNlbGVjdC12YWx1ZVtfbmdjb250ZW50LSVDT01QJV17Y29sb3I6Izc1NzU3NX0ubWF0LXNlbGVjdC1hcnJvd1tfbmdjb250ZW50LSVDT01QJV17Y29sb3I6IzYxNjE2MX0ubWF0LXNlbGVjdC1wYW5lbFtfbmdjb250ZW50LSVDT01QJV17YmFja2dyb3VuZDojZmZmfS5tYXQtc2VsZWN0LXBhbmVsW19uZ2NvbnRlbnQtJUNPTVAlXTpub3QoW2NsYXNzKj1tYXQtZWxldmF0aW9uLXpdKXtib3gtc2hhZG93OjBweCAycHggNHB4IC0xcHggcmdiYSgwLCAwLCAwLCAwLjIpLDBweCA0cHggNXB4IDBweCByZ2JhKDAsIDAsIDAsIDAuMTQpLDBweCAxcHggMTBweCAwcHggcmdiYSgwLCAwLCAwLCAwLjEyKX0ubWF0LXNlbGVjdC1wYW5lbFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LW9wdGlvbi5tYXQtc2VsZWN0ZWRbX25nY29udGVudC0lQ09NUCVdOm5vdCgubWF0LW9wdGlvbi1tdWx0aXBsZSl7YmFja2dyb3VuZDpyZ2JhKDAsMCwwLC4xMil9Lm1hdC1mb3JtLWZpZWxkLm1hdC1mb2N1c2VkLm1hdC1wcmltYXJ5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtc2VsZWN0LWFycm93W19uZ2NvbnRlbnQtJUNPTVAlXXtjb2xvcjojZjU3YzAwfS5tYXQtZm9ybS1maWVsZC5tYXQtZm9jdXNlZC5tYXQtYWNjZW50W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtc2VsZWN0LWFycm93W19uZ2NvbnRlbnQtJUNPTVAlXXtjb2xvcjojZmY5ODAwfS5tYXQtZm9ybS1maWVsZC5tYXQtZm9jdXNlZC5tYXQtd2Fybltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXNlbGVjdC1hcnJvd1tfbmdjb250ZW50LSVDT01QJV17Y29sb3I6I2Y0NDMzNn0ubWF0LWZvcm0tZmllbGRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1zZWxlY3QubWF0LXNlbGVjdC1pbnZhbGlkW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtc2VsZWN0LWFycm93W19uZ2NvbnRlbnQtJUNPTVAlXXtjb2xvcjojZjQ0MzM2fS5tYXQtZm9ybS1maWVsZFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXNlbGVjdC5tYXQtc2VsZWN0LWRpc2FibGVkW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtc2VsZWN0LWFycm93W19uZ2NvbnRlbnQtJUNPTVAlXXtjb2xvcjojNzU3NTc1fS5tYXQtZHJhd2VyLWNvbnRhaW5lcltfbmdjb250ZW50LSVDT01QJV17YmFja2dyb3VuZC1jb2xvcjojZmFmYWZhO2NvbG9yOiMyMTIxMjF9Lm1hdC1kcmF3ZXJbX25nY29udGVudC0lQ09NUCVde2JhY2tncm91bmQtY29sb3I6I2ZmZjtjb2xvcjojMjEyMTIxfS5tYXQtZHJhd2VyLm1hdC1kcmF3ZXItcHVzaFtfbmdjb250ZW50LSVDT01QJV17YmFja2dyb3VuZC1jb2xvcjojZmZmfS5tYXQtZHJhd2VyW19uZ2NvbnRlbnQtJUNPTVAlXTpub3QoLm1hdC1kcmF3ZXItc2lkZSl7Ym94LXNoYWRvdzowcHggOHB4IDEwcHggLTVweCByZ2JhKDAsIDAsIDAsIDAuMiksMHB4IDE2cHggMjRweCAycHggcmdiYSgwLCAwLCAwLCAwLjE0KSwwcHggNnB4IDMwcHggNXB4IHJnYmEoMCwgMCwgMCwgMC4xMil9Lm1hdC1kcmF3ZXItc2lkZVtfbmdjb250ZW50LSVDT01QJV17Ym9yZGVyLXJpZ2h0OnNvbGlkIDFweCByZ2JhKDAsMCwwLC4xMil9Lm1hdC1kcmF3ZXItc2lkZS5tYXQtZHJhd2VyLWVuZFtfbmdjb250ZW50LSVDT01QJV17Ym9yZGVyLWxlZnQ6c29saWQgMXB4IHJnYmEoMCwwLDAsLjEyKTtib3JkZXItcmlnaHQ6bm9uZX1bZGlyPXJ0bF1bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1kcmF3ZXItc2lkZVtfbmdjb250ZW50LSVDT01QJV17Ym9yZGVyLWxlZnQ6c29saWQgMXB4IHJnYmEoMCwwLDAsLjEyKTtib3JkZXItcmlnaHQ6bm9uZX1bZGlyPXJ0bF1bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1kcmF3ZXItc2lkZS5tYXQtZHJhd2VyLWVuZFtfbmdjb250ZW50LSVDT01QJV17Ym9yZGVyLWxlZnQ6bm9uZTtib3JkZXItcmlnaHQ6c29saWQgMXB4IHJnYmEoMCwwLDAsLjEyKX0ubWF0LWRyYXdlci1iYWNrZHJvcC5tYXQtZHJhd2VyLXNob3duW19uZ2NvbnRlbnQtJUNPTVAlXXtiYWNrZ3JvdW5kLWNvbG9yOnJnYmEoMCwwLDAsLjYpfS5tYXQtc2xpZGUtdG9nZ2xlLm1hdC1jaGVja2VkW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtc2xpZGUtdG9nZ2xlLXRodW1iW19uZ2NvbnRlbnQtJUNPTVAlXXtiYWNrZ3JvdW5kLWNvbG9yOiNmZjk4MDB9Lm1hdC1zbGlkZS10b2dnbGUubWF0LWNoZWNrZWRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1zbGlkZS10b2dnbGUtYmFyW19uZ2NvbnRlbnQtJUNPTVAlXXtiYWNrZ3JvdW5kLWNvbG9yOnJnYmEoMjU1LDE1MiwwLC41NCl9Lm1hdC1zbGlkZS10b2dnbGUubWF0LWNoZWNrZWRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1yaXBwbGUtZWxlbWVudFtfbmdjb250ZW50LSVDT01QJV17YmFja2dyb3VuZC1jb2xvcjojZmY5ODAwfS5tYXQtc2xpZGUtdG9nZ2xlLm1hdC1wcmltYXJ5Lm1hdC1jaGVja2VkW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtc2xpZGUtdG9nZ2xlLXRodW1iW19uZ2NvbnRlbnQtJUNPTVAlXXtiYWNrZ3JvdW5kLWNvbG9yOiNmNTdjMDB9Lm1hdC1zbGlkZS10b2dnbGUubWF0LXByaW1hcnkubWF0LWNoZWNrZWRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1zbGlkZS10b2dnbGUtYmFyW19uZ2NvbnRlbnQtJUNPTVAlXXtiYWNrZ3JvdW5kLWNvbG9yOnJnYmEoMjQ1LDEyNCwwLC41NCl9Lm1hdC1zbGlkZS10b2dnbGUubWF0LXByaW1hcnkubWF0LWNoZWNrZWRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1yaXBwbGUtZWxlbWVudFtfbmdjb250ZW50LSVDT01QJV17YmFja2dyb3VuZC1jb2xvcjojZjU3YzAwfS5tYXQtc2xpZGUtdG9nZ2xlLm1hdC13YXJuLm1hdC1jaGVja2VkW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtc2xpZGUtdG9nZ2xlLXRodW1iW19uZ2NvbnRlbnQtJUNPTVAlXXtiYWNrZ3JvdW5kLWNvbG9yOiNmNDQzMzZ9Lm1hdC1zbGlkZS10b2dnbGUubWF0LXdhcm4ubWF0LWNoZWNrZWRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1zbGlkZS10b2dnbGUtYmFyW19uZ2NvbnRlbnQtJUNPTVAlXXtiYWNrZ3JvdW5kLWNvbG9yOnJnYmEoMjQ0LDY3LDU0LC41NCl9Lm1hdC1zbGlkZS10b2dnbGUubWF0LXdhcm4ubWF0LWNoZWNrZWRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1yaXBwbGUtZWxlbWVudFtfbmdjb250ZW50LSVDT01QJV17YmFja2dyb3VuZC1jb2xvcjojZjQ0MzM2fS5tYXQtc2xpZGUtdG9nZ2xlW19uZ2NvbnRlbnQtJUNPTVAlXTpub3QoLm1hdC1jaGVja2VkKSAgIC5tYXQtcmlwcGxlLWVsZW1lbnRbX25nY29udGVudC0lQ09NUCVde2JhY2tncm91bmQtY29sb3I6IzAwMH0ubWF0LXNsaWRlLXRvZ2dsZS10aHVtYltfbmdjb250ZW50LSVDT01QJV17Ym94LXNoYWRvdzowcHggMnB4IDFweCAtMXB4IHJnYmEoMCwgMCwgMCwgMC4yKSwwcHggMXB4IDFweCAwcHggcmdiYSgwLCAwLCAwLCAwLjE0KSwwcHggMXB4IDNweCAwcHggcmdiYSgwLCAwLCAwLCAwLjEyKTtiYWNrZ3JvdW5kLWNvbG9yOiNmYWZhZmF9Lm1hdC1zbGlkZS10b2dnbGUtYmFyW19uZ2NvbnRlbnQtJUNPTVAlXXtiYWNrZ3JvdW5kLWNvbG9yOnJnYmEoMCwwLDAsLjM4KX0ubWF0LXNsaWRlci10cmFjay1iYWNrZ3JvdW5kW19uZ2NvbnRlbnQtJUNPTVAlXXtiYWNrZ3JvdW5kLWNvbG9yOnJnYmEoMCwwLDAsLjI2KX0ubWF0LXByaW1hcnlbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1zbGlkZXItdHJhY2stZmlsbFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtcHJpbWFyeVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXNsaWRlci10aHVtYltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtcHJpbWFyeVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXNsaWRlci10aHVtYi1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17YmFja2dyb3VuZC1jb2xvcjojZjU3YzAwfS5tYXQtcHJpbWFyeVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXNsaWRlci10aHVtYi1sYWJlbC10ZXh0W19uZ2NvbnRlbnQtJUNPTVAlXXtjb2xvcjojZmZmfS5tYXQtcHJpbWFyeVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXNsaWRlci1mb2N1cy1yaW5nW19uZ2NvbnRlbnQtJUNPTVAlXXtiYWNrZ3JvdW5kLWNvbG9yOnJnYmEoMjQ1LDEyNCwwLC4yKX0ubWF0LWFjY2VudFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXNsaWRlci10cmFjay1maWxsW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1hY2NlbnRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1zbGlkZXItdGh1bWJbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWFjY2VudFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXNsaWRlci10aHVtYi1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17YmFja2dyb3VuZC1jb2xvcjojZmY5ODAwfS5tYXQtYWNjZW50W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtc2xpZGVyLXRodW1iLWxhYmVsLXRleHRbX25nY29udGVudC0lQ09NUCVde2NvbG9yOiNmZmZ9Lm1hdC1hY2NlbnRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1zbGlkZXItZm9jdXMtcmluZ1tfbmdjb250ZW50LSVDT01QJV17YmFja2dyb3VuZC1jb2xvcjpyZ2JhKDI1NSwxNTIsMCwuMil9Lm1hdC13YXJuW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtc2xpZGVyLXRyYWNrLWZpbGxbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXdhcm5bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1zbGlkZXItdGh1bWJbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXdhcm5bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1zbGlkZXItdGh1bWItbGFiZWxbX25nY29udGVudC0lQ09NUCVde2JhY2tncm91bmQtY29sb3I6I2Y0NDMzNn0ubWF0LXdhcm5bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1zbGlkZXItdGh1bWItbGFiZWwtdGV4dFtfbmdjb250ZW50LSVDT01QJV17Y29sb3I6I2ZmZn0ubWF0LXdhcm5bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1zbGlkZXItZm9jdXMtcmluZ1tfbmdjb250ZW50LSVDT01QJV17YmFja2dyb3VuZC1jb2xvcjpyZ2JhKDI0NCw2Nyw1NCwuMil9Lm1hdC1zbGlkZXJbX25nY29udGVudC0lQ09NUCVdOmhvdmVyICAgLm1hdC1zbGlkZXItdHJhY2stYmFja2dyb3VuZFtfbmdjb250ZW50LSVDT01QJV0sIC5jZGstZm9jdXNlZFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXNsaWRlci10cmFjay1iYWNrZ3JvdW5kW19uZ2NvbnRlbnQtJUNPTVAlXXtiYWNrZ3JvdW5kLWNvbG9yOnJnYmEoMCwwLDAsLjM4KX0ubWF0LXNsaWRlci1kaXNhYmxlZFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXNsaWRlci10cmFjay1iYWNrZ3JvdW5kW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1zbGlkZXItZGlzYWJsZWRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1zbGlkZXItdHJhY2stZmlsbFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtc2xpZGVyLWRpc2FibGVkW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtc2xpZGVyLXRodW1iW19uZ2NvbnRlbnQtJUNPTVAlXXtiYWNrZ3JvdW5kLWNvbG9yOnJnYmEoMCwwLDAsLjI2KX0ubWF0LXNsaWRlci1kaXNhYmxlZFtfbmdjb250ZW50LSVDT01QJV06aG92ZXIgICAubWF0LXNsaWRlci10cmFjay1iYWNrZ3JvdW5kW19uZ2NvbnRlbnQtJUNPTVAlXXtiYWNrZ3JvdW5kLWNvbG9yOnJnYmEoMCwwLDAsLjI2KX0ubWF0LXNsaWRlci1taW4tdmFsdWVbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1zbGlkZXItZm9jdXMtcmluZ1tfbmdjb250ZW50LSVDT01QJV17YmFja2dyb3VuZC1jb2xvcjpyZ2JhKDAsMCwwLC4xMil9Lm1hdC1zbGlkZXItbWluLXZhbHVlLm1hdC1zbGlkZXItdGh1bWItbGFiZWwtc2hvd2luZ1tfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXNsaWRlci10aHVtYltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtc2xpZGVyLW1pbi12YWx1ZS5tYXQtc2xpZGVyLXRodW1iLWxhYmVsLXNob3dpbmdbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1zbGlkZXItdGh1bWItbGFiZWxbX25nY29udGVudC0lQ09NUCVde2JhY2tncm91bmQtY29sb3I6cmdiYSgwLDAsMCwuODcpfS5tYXQtc2xpZGVyLW1pbi12YWx1ZS5tYXQtc2xpZGVyLXRodW1iLWxhYmVsLXNob3dpbmcuY2RrLWZvY3VzZWRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1zbGlkZXItdGh1bWJbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXNsaWRlci1taW4tdmFsdWUubWF0LXNsaWRlci10aHVtYi1sYWJlbC1zaG93aW5nLmNkay1mb2N1c2VkW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtc2xpZGVyLXRodW1iLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXtiYWNrZ3JvdW5kLWNvbG9yOnJnYmEoMCwwLDAsLjI2KX0ubWF0LXNsaWRlci1taW4tdmFsdWVbX25nY29udGVudC0lQ09NUCVdOm5vdCgubWF0LXNsaWRlci10aHVtYi1sYWJlbC1zaG93aW5nKSAgIC5tYXQtc2xpZGVyLXRodW1iW19uZ2NvbnRlbnQtJUNPTVAlXXtib3JkZXItY29sb3I6cmdiYSgwLDAsMCwuMjYpO2JhY2tncm91bmQtY29sb3I6dHJhbnNwYXJlbnR9Lm1hdC1zbGlkZXItbWluLXZhbHVlW19uZ2NvbnRlbnQtJUNPTVAlXTpub3QoLm1hdC1zbGlkZXItdGh1bWItbGFiZWwtc2hvd2luZyk6aG92ZXIgICAubWF0LXNsaWRlci10aHVtYltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtc2xpZGVyLW1pbi12YWx1ZVtfbmdjb250ZW50LSVDT01QJV06bm90KC5tYXQtc2xpZGVyLXRodW1iLWxhYmVsLXNob3dpbmcpLmNkay1mb2N1c2VkICAgLm1hdC1zbGlkZXItdGh1bWJbX25nY29udGVudC0lQ09NUCVde2JvcmRlci1jb2xvcjpyZ2JhKDAsMCwwLC4zOCl9Lm1hdC1zbGlkZXItbWluLXZhbHVlW19uZ2NvbnRlbnQtJUNPTVAlXTpub3QoLm1hdC1zbGlkZXItdGh1bWItbGFiZWwtc2hvd2luZyk6aG92ZXIubWF0LXNsaWRlci1kaXNhYmxlZCAgIC5tYXQtc2xpZGVyLXRodW1iW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1zbGlkZXItbWluLXZhbHVlW19uZ2NvbnRlbnQtJUNPTVAlXTpub3QoLm1hdC1zbGlkZXItdGh1bWItbGFiZWwtc2hvd2luZykuY2RrLWZvY3VzZWQubWF0LXNsaWRlci1kaXNhYmxlZCAgIC5tYXQtc2xpZGVyLXRodW1iW19uZ2NvbnRlbnQtJUNPTVAlXXtib3JkZXItY29sb3I6cmdiYSgwLDAsMCwuMjYpfS5tYXQtc2xpZGVyLWhhcy10aWNrc1tfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXNsaWRlci13cmFwcGVyW19uZ2NvbnRlbnQtJUNPTVAlXTo6YWZ0ZXJ7Ym9yZGVyLWNvbG9yOnJnYmEoMCwwLDAsLjcpfS5tYXQtc2xpZGVyLWhvcml6b250YWxbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1zbGlkZXItdGlja3NbX25nY29udGVudC0lQ09NUCVde2JhY2tncm91bmQtaW1hZ2U6cmVwZWF0aW5nLWxpbmVhci1ncmFkaWVudCh0byByaWdodCwgcmdiYSgwLCAwLCAwLCAwLjcpLCByZ2JhKDAsIDAsIDAsIDAuNykgMnB4LCB0cmFuc3BhcmVudCAwLCB0cmFuc3BhcmVudCk7YmFja2dyb3VuZC1pbWFnZTotbW96LXJlcGVhdGluZy1saW5lYXItZ3JhZGllbnQoMC4wMDAxZGVnLCByZ2JhKDAsIDAsIDAsIDAuNyksIHJnYmEoMCwgMCwgMCwgMC43KSAycHgsIHRyYW5zcGFyZW50IDAsIHRyYW5zcGFyZW50KX0ubWF0LXNsaWRlci12ZXJ0aWNhbFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXNsaWRlci10aWNrc1tfbmdjb250ZW50LSVDT01QJV17YmFja2dyb3VuZC1pbWFnZTpyZXBlYXRpbmctbGluZWFyLWdyYWRpZW50KHRvIGJvdHRvbSwgcmdiYSgwLCAwLCAwLCAwLjcpLCByZ2JhKDAsIDAsIDAsIDAuNykgMnB4LCB0cmFuc3BhcmVudCAwLCB0cmFuc3BhcmVudCl9Lm1hdC1zdGVwLWhlYWRlci5jZGsta2V5Ym9hcmQtZm9jdXNlZFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtc3RlcC1oZWFkZXIuY2RrLXByb2dyYW0tZm9jdXNlZFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtc3RlcC1oZWFkZXJbX25nY29udGVudC0lQ09NUCVdOmhvdmVye2JhY2tncm91bmQtY29sb3I6cmdiYSgwLDAsMCwuMDQpfUBtZWRpYShob3Zlcjogbm9uZSl7Lm1hdC1zdGVwLWhlYWRlcltfbmdjb250ZW50LSVDT01QJV06aG92ZXJ7YmFja2dyb3VuZDpub25lfX0ubWF0LXN0ZXAtaGVhZGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtc3RlcC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtc3RlcC1oZWFkZXJbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1zdGVwLW9wdGlvbmFsW19uZ2NvbnRlbnQtJUNPTVAlXXtjb2xvcjojNjE2MTYxfS5tYXQtc3RlcC1oZWFkZXJbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1zdGVwLWljb25bX25nY29udGVudC0lQ09NUCVde2JhY2tncm91bmQtY29sb3I6IzYxNjE2MTtjb2xvcjojZmZmfS5tYXQtc3RlcC1oZWFkZXJbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1zdGVwLWljb24tc2VsZWN0ZWRbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXN0ZXAtaGVhZGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtc3RlcC1pY29uLXN0YXRlLWRvbmVbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXN0ZXAtaGVhZGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtc3RlcC1pY29uLXN0YXRlLWVkaXRbX25nY29udGVudC0lQ09NUCVde2JhY2tncm91bmQtY29sb3I6I2Y1N2MwMDtjb2xvcjojZmZmfS5tYXQtc3RlcC1oZWFkZXJbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1zdGVwLWljb24tc3RhdGUtZXJyb3JbX25nY29udGVudC0lQ09NUCVde2JhY2tncm91bmQtY29sb3I6dHJhbnNwYXJlbnQ7Y29sb3I6I2Y0NDMzNn0ubWF0LXN0ZXAtaGVhZGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtc3RlcC1sYWJlbC5tYXQtc3RlcC1sYWJlbC1hY3RpdmVbX25nY29udGVudC0lQ09NUCVde2NvbG9yOiMyMTIxMjF9Lm1hdC1zdGVwLWhlYWRlcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXN0ZXAtbGFiZWwubWF0LXN0ZXAtbGFiZWwtZXJyb3JbX25nY29udGVudC0lQ09NUCVde2NvbG9yOiNmNDQzMzZ9Lm1hdC1zdGVwcGVyLWhvcml6b250YWxbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXN0ZXBwZXItdmVydGljYWxbX25nY29udGVudC0lQ09NUCVde2JhY2tncm91bmQtY29sb3I6I2ZmZn0ubWF0LXN0ZXBwZXItdmVydGljYWwtbGluZVtfbmdjb250ZW50LSVDT01QJV06OmJlZm9yZXtib3JkZXItbGVmdC1jb2xvcjpyZ2JhKDAsMCwwLC4xMil9Lm1hdC1ob3Jpem9udGFsLXN0ZXBwZXItaGVhZGVyW19uZ2NvbnRlbnQtJUNPTVAlXTo6YmVmb3JlLCAubWF0LWhvcml6b250YWwtc3RlcHBlci1oZWFkZXJbX25nY29udGVudC0lQ09NUCVdOjphZnRlciwgLm1hdC1zdGVwcGVyLWhvcml6b250YWwtbGluZVtfbmdjb250ZW50LSVDT01QJV17Ym9yZGVyLXRvcC1jb2xvcjpyZ2JhKDAsMCwwLC4xMil9Lm1hdC1ob3Jpem9udGFsLXN0ZXBwZXItaGVhZGVyW19uZ2NvbnRlbnQtJUNPTVAlXXtoZWlnaHQ6NzJweH0ubWF0LXN0ZXBwZXItbGFiZWwtcG9zaXRpb24tYm90dG9tW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaG9yaXpvbnRhbC1zdGVwcGVyLWhlYWRlcltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdmVydGljYWwtc3RlcHBlci1oZWFkZXJbX25nY29udGVudC0lQ09NUCVde3BhZGRpbmc6MjRweCAyNHB4fS5tYXQtc3RlcHBlci12ZXJ0aWNhbC1saW5lW19uZ2NvbnRlbnQtJUNPTVAlXTo6YmVmb3Jle3RvcDotMTZweDtib3R0b206LTE2cHh9Lm1hdC1zdGVwcGVyLWxhYmVsLXBvc2l0aW9uLWJvdHRvbVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWhvcml6b250YWwtc3RlcHBlci1oZWFkZXJbX25nY29udGVudC0lQ09NUCVdOjphZnRlciwgLm1hdC1zdGVwcGVyLWxhYmVsLXBvc2l0aW9uLWJvdHRvbVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWhvcml6b250YWwtc3RlcHBlci1oZWFkZXJbX25nY29udGVudC0lQ09NUCVdOjpiZWZvcmV7dG9wOjM2cHh9Lm1hdC1zdGVwcGVyLWxhYmVsLXBvc2l0aW9uLWJvdHRvbVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXN0ZXBwZXItaG9yaXpvbnRhbC1saW5lW19uZ2NvbnRlbnQtJUNPTVAlXXt0b3A6MzZweH0ubWF0LXNvcnQtaGVhZGVyLWFycm93W19uZ2NvbnRlbnQtJUNPTVAlXXtjb2xvcjojNjE2MTYxfS5tYXQtdGFiLW5hdi1iYXJbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXRhYi1oZWFkZXJbX25nY29udGVudC0lQ09NUCVde2JvcmRlci1ib3R0b206MXB4IHNvbGlkIHJnYmEoMCwwLDAsLjEyKX0ubWF0LXRhYi1ncm91cC1pbnZlcnRlZC1oZWFkZXJbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC10YWItbmF2LWJhcltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdGFiLWdyb3VwLWludmVydGVkLWhlYWRlcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXRhYi1oZWFkZXJbX25nY29udGVudC0lQ09NUCVde2JvcmRlci10b3A6MXB4IHNvbGlkIHJnYmEoMCwwLDAsLjEyKTtib3JkZXItYm90dG9tOm5vbmV9Lm1hdC10YWItbGFiZWxbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXRhYi1saW5rW19uZ2NvbnRlbnQtJUNPTVAlXXtjb2xvcjojMjEyMTIxfS5tYXQtdGFiLWxhYmVsLm1hdC10YWItZGlzYWJsZWRbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXRhYi1saW5rLm1hdC10YWItZGlzYWJsZWRbX25nY29udGVudC0lQ09NUCVde2NvbG9yOiM3NTc1NzV9Lm1hdC10YWItaGVhZGVyLXBhZ2luYXRpb24tY2hldnJvbltfbmdjb250ZW50LSVDT01QJV17Ym9yZGVyLWNvbG9yOiMyMTIxMjF9Lm1hdC10YWItaGVhZGVyLXBhZ2luYXRpb24tZGlzYWJsZWRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC10YWItaGVhZGVyLXBhZ2luYXRpb24tY2hldnJvbltfbmdjb250ZW50LSVDT01QJV17Ym9yZGVyLWNvbG9yOiM3NTc1NzV9Lm1hdC10YWItZ3JvdXBbY2xhc3MqPW1hdC1iYWNrZ3JvdW5kLV1bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC10YWItaGVhZGVyW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10YWItbmF2LWJhcltjbGFzcyo9bWF0LWJhY2tncm91bmQtXVtfbmdjb250ZW50LSVDT01QJV17Ym9yZGVyLWJvdHRvbTpub25lO2JvcmRlci10b3A6bm9uZX0ubWF0LXRhYi1ncm91cC5tYXQtcHJpbWFyeVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXRhYi1sYWJlbC5jZGsta2V5Ym9hcmQtZm9jdXNlZFtfbmdjb250ZW50LSVDT01QJV06bm90KC5tYXQtdGFiLWRpc2FibGVkKSwgLm1hdC10YWItZ3JvdXAubWF0LXByaW1hcnlbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC10YWItbGFiZWwuY2RrLXByb2dyYW0tZm9jdXNlZFtfbmdjb250ZW50LSVDT01QJV06bm90KC5tYXQtdGFiLWRpc2FibGVkKSwgLm1hdC10YWItZ3JvdXAubWF0LXByaW1hcnlbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC10YWItbGluay5jZGsta2V5Ym9hcmQtZm9jdXNlZFtfbmdjb250ZW50LSVDT01QJV06bm90KC5tYXQtdGFiLWRpc2FibGVkKSwgLm1hdC10YWItZ3JvdXAubWF0LXByaW1hcnlbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC10YWItbGluay5jZGstcHJvZ3JhbS1mb2N1c2VkW19uZ2NvbnRlbnQtJUNPTVAlXTpub3QoLm1hdC10YWItZGlzYWJsZWQpLCAubWF0LXRhYi1uYXYtYmFyLm1hdC1wcmltYXJ5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtdGFiLWxhYmVsLmNkay1rZXlib2FyZC1mb2N1c2VkW19uZ2NvbnRlbnQtJUNPTVAlXTpub3QoLm1hdC10YWItZGlzYWJsZWQpLCAubWF0LXRhYi1uYXYtYmFyLm1hdC1wcmltYXJ5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtdGFiLWxhYmVsLmNkay1wcm9ncmFtLWZvY3VzZWRbX25nY29udGVudC0lQ09NUCVdOm5vdCgubWF0LXRhYi1kaXNhYmxlZCksIC5tYXQtdGFiLW5hdi1iYXIubWF0LXByaW1hcnlbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC10YWItbGluay5jZGsta2V5Ym9hcmQtZm9jdXNlZFtfbmdjb250ZW50LSVDT01QJV06bm90KC5tYXQtdGFiLWRpc2FibGVkKSwgLm1hdC10YWItbmF2LWJhci5tYXQtcHJpbWFyeVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXRhYi1saW5rLmNkay1wcm9ncmFtLWZvY3VzZWRbX25nY29udGVudC0lQ09NUCVdOm5vdCgubWF0LXRhYi1kaXNhYmxlZCl7YmFja2dyb3VuZC1jb2xvcjpyZ2JhKDI1NSwxNTIsMCwuMyl9Lm1hdC10YWItZ3JvdXAubWF0LXByaW1hcnlbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pbmstYmFyW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10YWItbmF2LWJhci5tYXQtcHJpbWFyeVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWluay1iYXJbX25nY29udGVudC0lQ09NUCVde2JhY2tncm91bmQtY29sb3I6I2Y1N2MwMH0ubWF0LXRhYi1ncm91cC5tYXQtcHJpbWFyeS5tYXQtYmFja2dyb3VuZC1wcmltYXJ5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaW5rLWJhcltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdGFiLW5hdi1iYXIubWF0LXByaW1hcnkubWF0LWJhY2tncm91bmQtcHJpbWFyeVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWluay1iYXJbX25nY29udGVudC0lQ09NUCVde2JhY2tncm91bmQtY29sb3I6I2ZmZn0ubWF0LXRhYi1ncm91cC5tYXQtYWNjZW50W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtdGFiLWxhYmVsLmNkay1rZXlib2FyZC1mb2N1c2VkW19uZ2NvbnRlbnQtJUNPTVAlXTpub3QoLm1hdC10YWItZGlzYWJsZWQpLCAubWF0LXRhYi1ncm91cC5tYXQtYWNjZW50W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtdGFiLWxhYmVsLmNkay1wcm9ncmFtLWZvY3VzZWRbX25nY29udGVudC0lQ09NUCVdOm5vdCgubWF0LXRhYi1kaXNhYmxlZCksIC5tYXQtdGFiLWdyb3VwLm1hdC1hY2NlbnRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC10YWItbGluay5jZGsta2V5Ym9hcmQtZm9jdXNlZFtfbmdjb250ZW50LSVDT01QJV06bm90KC5tYXQtdGFiLWRpc2FibGVkKSwgLm1hdC10YWItZ3JvdXAubWF0LWFjY2VudFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXRhYi1saW5rLmNkay1wcm9ncmFtLWZvY3VzZWRbX25nY29udGVudC0lQ09NUCVdOm5vdCgubWF0LXRhYi1kaXNhYmxlZCksIC5tYXQtdGFiLW5hdi1iYXIubWF0LWFjY2VudFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXRhYi1sYWJlbC5jZGsta2V5Ym9hcmQtZm9jdXNlZFtfbmdjb250ZW50LSVDT01QJV06bm90KC5tYXQtdGFiLWRpc2FibGVkKSwgLm1hdC10YWItbmF2LWJhci5tYXQtYWNjZW50W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtdGFiLWxhYmVsLmNkay1wcm9ncmFtLWZvY3VzZWRbX25nY29udGVudC0lQ09NUCVdOm5vdCgubWF0LXRhYi1kaXNhYmxlZCksIC5tYXQtdGFiLW5hdi1iYXIubWF0LWFjY2VudFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXRhYi1saW5rLmNkay1rZXlib2FyZC1mb2N1c2VkW19uZ2NvbnRlbnQtJUNPTVAlXTpub3QoLm1hdC10YWItZGlzYWJsZWQpLCAubWF0LXRhYi1uYXYtYmFyLm1hdC1hY2NlbnRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC10YWItbGluay5jZGstcHJvZ3JhbS1mb2N1c2VkW19uZ2NvbnRlbnQtJUNPTVAlXTpub3QoLm1hdC10YWItZGlzYWJsZWQpe2JhY2tncm91bmQtY29sb3I6cmdiYSgyNTUsMTUyLDAsLjMpfS5tYXQtdGFiLWdyb3VwLm1hdC1hY2NlbnRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pbmstYmFyW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10YWItbmF2LWJhci5tYXQtYWNjZW50W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaW5rLWJhcltfbmdjb250ZW50LSVDT01QJV17YmFja2dyb3VuZC1jb2xvcjojZmY5ODAwfS5tYXQtdGFiLWdyb3VwLm1hdC1hY2NlbnQubWF0LWJhY2tncm91bmQtYWNjZW50W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaW5rLWJhcltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdGFiLW5hdi1iYXIubWF0LWFjY2VudC5tYXQtYmFja2dyb3VuZC1hY2NlbnRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pbmstYmFyW19uZ2NvbnRlbnQtJUNPTVAlXXtiYWNrZ3JvdW5kLWNvbG9yOiNmZmZ9Lm1hdC10YWItZ3JvdXAubWF0LXdhcm5bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC10YWItbGFiZWwuY2RrLWtleWJvYXJkLWZvY3VzZWRbX25nY29udGVudC0lQ09NUCVdOm5vdCgubWF0LXRhYi1kaXNhYmxlZCksIC5tYXQtdGFiLWdyb3VwLm1hdC13YXJuW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtdGFiLWxhYmVsLmNkay1wcm9ncmFtLWZvY3VzZWRbX25nY29udGVudC0lQ09NUCVdOm5vdCgubWF0LXRhYi1kaXNhYmxlZCksIC5tYXQtdGFiLWdyb3VwLm1hdC13YXJuW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtdGFiLWxpbmsuY2RrLWtleWJvYXJkLWZvY3VzZWRbX25nY29udGVudC0lQ09NUCVdOm5vdCgubWF0LXRhYi1kaXNhYmxlZCksIC5tYXQtdGFiLWdyb3VwLm1hdC13YXJuW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtdGFiLWxpbmsuY2RrLXByb2dyYW0tZm9jdXNlZFtfbmdjb250ZW50LSVDT01QJV06bm90KC5tYXQtdGFiLWRpc2FibGVkKSwgLm1hdC10YWItbmF2LWJhci5tYXQtd2Fybltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXRhYi1sYWJlbC5jZGsta2V5Ym9hcmQtZm9jdXNlZFtfbmdjb250ZW50LSVDT01QJV06bm90KC5tYXQtdGFiLWRpc2FibGVkKSwgLm1hdC10YWItbmF2LWJhci5tYXQtd2Fybltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXRhYi1sYWJlbC5jZGstcHJvZ3JhbS1mb2N1c2VkW19uZ2NvbnRlbnQtJUNPTVAlXTpub3QoLm1hdC10YWItZGlzYWJsZWQpLCAubWF0LXRhYi1uYXYtYmFyLm1hdC13YXJuW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtdGFiLWxpbmsuY2RrLWtleWJvYXJkLWZvY3VzZWRbX25nY29udGVudC0lQ09NUCVdOm5vdCgubWF0LXRhYi1kaXNhYmxlZCksIC5tYXQtdGFiLW5hdi1iYXIubWF0LXdhcm5bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC10YWItbGluay5jZGstcHJvZ3JhbS1mb2N1c2VkW19uZ2NvbnRlbnQtJUNPTVAlXTpub3QoLm1hdC10YWItZGlzYWJsZWQpe2JhY2tncm91bmQtY29sb3I6cmdiYSgyNTUsMjA1LDIxMCwuMyl9Lm1hdC10YWItZ3JvdXAubWF0LXdhcm5bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pbmstYmFyW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10YWItbmF2LWJhci5tYXQtd2Fybltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWluay1iYXJbX25nY29udGVudC0lQ09NUCVde2JhY2tncm91bmQtY29sb3I6I2Y0NDMzNn0ubWF0LXRhYi1ncm91cC5tYXQtd2Fybi5tYXQtYmFja2dyb3VuZC13YXJuW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaW5rLWJhcltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdGFiLW5hdi1iYXIubWF0LXdhcm4ubWF0LWJhY2tncm91bmQtd2Fybltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWluay1iYXJbX25nY29udGVudC0lQ09NUCVde2JhY2tncm91bmQtY29sb3I6I2ZmZn0ubWF0LXRhYi1ncm91cC5tYXQtYmFja2dyb3VuZC1wcmltYXJ5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtdGFiLWxhYmVsLmNkay1rZXlib2FyZC1mb2N1c2VkW19uZ2NvbnRlbnQtJUNPTVAlXTpub3QoLm1hdC10YWItZGlzYWJsZWQpLCAubWF0LXRhYi1ncm91cC5tYXQtYmFja2dyb3VuZC1wcmltYXJ5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtdGFiLWxhYmVsLmNkay1wcm9ncmFtLWZvY3VzZWRbX25nY29udGVudC0lQ09NUCVdOm5vdCgubWF0LXRhYi1kaXNhYmxlZCksIC5tYXQtdGFiLWdyb3VwLm1hdC1iYWNrZ3JvdW5kLXByaW1hcnlbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC10YWItbGluay5jZGsta2V5Ym9hcmQtZm9jdXNlZFtfbmdjb250ZW50LSVDT01QJV06bm90KC5tYXQtdGFiLWRpc2FibGVkKSwgLm1hdC10YWItZ3JvdXAubWF0LWJhY2tncm91bmQtcHJpbWFyeVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXRhYi1saW5rLmNkay1wcm9ncmFtLWZvY3VzZWRbX25nY29udGVudC0lQ09NUCVdOm5vdCgubWF0LXRhYi1kaXNhYmxlZCksIC5tYXQtdGFiLW5hdi1iYXIubWF0LWJhY2tncm91bmQtcHJpbWFyeVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXRhYi1sYWJlbC5jZGsta2V5Ym9hcmQtZm9jdXNlZFtfbmdjb250ZW50LSVDT01QJV06bm90KC5tYXQtdGFiLWRpc2FibGVkKSwgLm1hdC10YWItbmF2LWJhci5tYXQtYmFja2dyb3VuZC1wcmltYXJ5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtdGFiLWxhYmVsLmNkay1wcm9ncmFtLWZvY3VzZWRbX25nY29udGVudC0lQ09NUCVdOm5vdCgubWF0LXRhYi1kaXNhYmxlZCksIC5tYXQtdGFiLW5hdi1iYXIubWF0LWJhY2tncm91bmQtcHJpbWFyeVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXRhYi1saW5rLmNkay1rZXlib2FyZC1mb2N1c2VkW19uZ2NvbnRlbnQtJUNPTVAlXTpub3QoLm1hdC10YWItZGlzYWJsZWQpLCAubWF0LXRhYi1uYXYtYmFyLm1hdC1iYWNrZ3JvdW5kLXByaW1hcnlbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC10YWItbGluay5jZGstcHJvZ3JhbS1mb2N1c2VkW19uZ2NvbnRlbnQtJUNPTVAlXTpub3QoLm1hdC10YWItZGlzYWJsZWQpe2JhY2tncm91bmQtY29sb3I6cmdiYSgyNTUsMTUyLDAsLjMpfS5tYXQtdGFiLWdyb3VwLm1hdC1iYWNrZ3JvdW5kLXByaW1hcnlbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC10YWItaGVhZGVyW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10YWItZ3JvdXAubWF0LWJhY2tncm91bmQtcHJpbWFyeVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXRhYi1saW5rc1tfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdGFiLWdyb3VwLm1hdC1iYWNrZ3JvdW5kLXByaW1hcnlbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC10YWItaGVhZGVyLXBhZ2luYXRpb25bX25nY29udGVudC0lQ09NUCVdLCAubWF0LXRhYi1uYXYtYmFyLm1hdC1iYWNrZ3JvdW5kLXByaW1hcnlbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC10YWItaGVhZGVyW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10YWItbmF2LWJhci5tYXQtYmFja2dyb3VuZC1wcmltYXJ5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtdGFiLWxpbmtzW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10YWItbmF2LWJhci5tYXQtYmFja2dyb3VuZC1wcmltYXJ5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtdGFiLWhlYWRlci1wYWdpbmF0aW9uW19uZ2NvbnRlbnQtJUNPTVAlXXtiYWNrZ3JvdW5kLWNvbG9yOiNmNTdjMDB9Lm1hdC10YWItZ3JvdXAubWF0LWJhY2tncm91bmQtcHJpbWFyeVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXRhYi1sYWJlbFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdGFiLWdyb3VwLm1hdC1iYWNrZ3JvdW5kLXByaW1hcnlbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC10YWItbGlua1tfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdGFiLW5hdi1iYXIubWF0LWJhY2tncm91bmQtcHJpbWFyeVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXRhYi1sYWJlbFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdGFiLW5hdi1iYXIubWF0LWJhY2tncm91bmQtcHJpbWFyeVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXRhYi1saW5rW19uZ2NvbnRlbnQtJUNPTVAlXXtjb2xvcjojZmZmfS5tYXQtdGFiLWdyb3VwLm1hdC1iYWNrZ3JvdW5kLXByaW1hcnlbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC10YWItbGFiZWwubWF0LXRhYi1kaXNhYmxlZFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdGFiLWdyb3VwLm1hdC1iYWNrZ3JvdW5kLXByaW1hcnlbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC10YWItbGluay5tYXQtdGFiLWRpc2FibGVkW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10YWItbmF2LWJhci5tYXQtYmFja2dyb3VuZC1wcmltYXJ5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtdGFiLWxhYmVsLm1hdC10YWItZGlzYWJsZWRbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXRhYi1uYXYtYmFyLm1hdC1iYWNrZ3JvdW5kLXByaW1hcnlbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC10YWItbGluay5tYXQtdGFiLWRpc2FibGVkW19uZ2NvbnRlbnQtJUNPTVAlXXtjb2xvcjpyZ2JhKDI1NSwyNTUsMjU1LC40KX0ubWF0LXRhYi1ncm91cC5tYXQtYmFja2dyb3VuZC1wcmltYXJ5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtdGFiLWhlYWRlci1wYWdpbmF0aW9uLWNoZXZyb25bX25nY29udGVudC0lQ09NUCVdLCAubWF0LXRhYi1uYXYtYmFyLm1hdC1iYWNrZ3JvdW5kLXByaW1hcnlbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC10YWItaGVhZGVyLXBhZ2luYXRpb24tY2hldnJvbltfbmdjb250ZW50LSVDT01QJV17Ym9yZGVyLWNvbG9yOiNmZmZ9Lm1hdC10YWItZ3JvdXAubWF0LWJhY2tncm91bmQtcHJpbWFyeVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXRhYi1oZWFkZXItcGFnaW5hdGlvbi1kaXNhYmxlZFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXRhYi1oZWFkZXItcGFnaW5hdGlvbi1jaGV2cm9uW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10YWItbmF2LWJhci5tYXQtYmFja2dyb3VuZC1wcmltYXJ5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtdGFiLWhlYWRlci1wYWdpbmF0aW9uLWRpc2FibGVkW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtdGFiLWhlYWRlci1wYWdpbmF0aW9uLWNoZXZyb25bX25nY29udGVudC0lQ09NUCVde2JvcmRlci1jb2xvcjpyZ2JhKDI1NSwyNTUsMjU1LC40KX0ubWF0LXRhYi1ncm91cC5tYXQtYmFja2dyb3VuZC1wcmltYXJ5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtcmlwcGxlLWVsZW1lbnRbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXRhYi1uYXYtYmFyLm1hdC1iYWNrZ3JvdW5kLXByaW1hcnlbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1yaXBwbGUtZWxlbWVudFtfbmdjb250ZW50LSVDT01QJV17YmFja2dyb3VuZC1jb2xvcjpyZ2JhKDI1NSwyNTUsMjU1LC4xMil9Lm1hdC10YWItZ3JvdXAubWF0LWJhY2tncm91bmQtYWNjZW50W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtdGFiLWxhYmVsLmNkay1rZXlib2FyZC1mb2N1c2VkW19uZ2NvbnRlbnQtJUNPTVAlXTpub3QoLm1hdC10YWItZGlzYWJsZWQpLCAubWF0LXRhYi1ncm91cC5tYXQtYmFja2dyb3VuZC1hY2NlbnRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC10YWItbGFiZWwuY2RrLXByb2dyYW0tZm9jdXNlZFtfbmdjb250ZW50LSVDT01QJV06bm90KC5tYXQtdGFiLWRpc2FibGVkKSwgLm1hdC10YWItZ3JvdXAubWF0LWJhY2tncm91bmQtYWNjZW50W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtdGFiLWxpbmsuY2RrLWtleWJvYXJkLWZvY3VzZWRbX25nY29udGVudC0lQ09NUCVdOm5vdCgubWF0LXRhYi1kaXNhYmxlZCksIC5tYXQtdGFiLWdyb3VwLm1hdC1iYWNrZ3JvdW5kLWFjY2VudFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXRhYi1saW5rLmNkay1wcm9ncmFtLWZvY3VzZWRbX25nY29udGVudC0lQ09NUCVdOm5vdCgubWF0LXRhYi1kaXNhYmxlZCksIC5tYXQtdGFiLW5hdi1iYXIubWF0LWJhY2tncm91bmQtYWNjZW50W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtdGFiLWxhYmVsLmNkay1rZXlib2FyZC1mb2N1c2VkW19uZ2NvbnRlbnQtJUNPTVAlXTpub3QoLm1hdC10YWItZGlzYWJsZWQpLCAubWF0LXRhYi1uYXYtYmFyLm1hdC1iYWNrZ3JvdW5kLWFjY2VudFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXRhYi1sYWJlbC5jZGstcHJvZ3JhbS1mb2N1c2VkW19uZ2NvbnRlbnQtJUNPTVAlXTpub3QoLm1hdC10YWItZGlzYWJsZWQpLCAubWF0LXRhYi1uYXYtYmFyLm1hdC1iYWNrZ3JvdW5kLWFjY2VudFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXRhYi1saW5rLmNkay1rZXlib2FyZC1mb2N1c2VkW19uZ2NvbnRlbnQtJUNPTVAlXTpub3QoLm1hdC10YWItZGlzYWJsZWQpLCAubWF0LXRhYi1uYXYtYmFyLm1hdC1iYWNrZ3JvdW5kLWFjY2VudFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXRhYi1saW5rLmNkay1wcm9ncmFtLWZvY3VzZWRbX25nY29udGVudC0lQ09NUCVdOm5vdCgubWF0LXRhYi1kaXNhYmxlZCl7YmFja2dyb3VuZC1jb2xvcjpyZ2JhKDI1NSwxNTIsMCwuMyl9Lm1hdC10YWItZ3JvdXAubWF0LWJhY2tncm91bmQtYWNjZW50W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtdGFiLWhlYWRlcltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdGFiLWdyb3VwLm1hdC1iYWNrZ3JvdW5kLWFjY2VudFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXRhYi1saW5rc1tfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdGFiLWdyb3VwLm1hdC1iYWNrZ3JvdW5kLWFjY2VudFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXRhYi1oZWFkZXItcGFnaW5hdGlvbltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdGFiLW5hdi1iYXIubWF0LWJhY2tncm91bmQtYWNjZW50W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtdGFiLWhlYWRlcltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdGFiLW5hdi1iYXIubWF0LWJhY2tncm91bmQtYWNjZW50W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtdGFiLWxpbmtzW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10YWItbmF2LWJhci5tYXQtYmFja2dyb3VuZC1hY2NlbnRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC10YWItaGVhZGVyLXBhZ2luYXRpb25bX25nY29udGVudC0lQ09NUCVde2JhY2tncm91bmQtY29sb3I6I2ZmOTgwMH0ubWF0LXRhYi1ncm91cC5tYXQtYmFja2dyb3VuZC1hY2NlbnRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC10YWItbGFiZWxbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXRhYi1ncm91cC5tYXQtYmFja2dyb3VuZC1hY2NlbnRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC10YWItbGlua1tfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdGFiLW5hdi1iYXIubWF0LWJhY2tncm91bmQtYWNjZW50W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtdGFiLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10YWItbmF2LWJhci5tYXQtYmFja2dyb3VuZC1hY2NlbnRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC10YWItbGlua1tfbmdjb250ZW50LSVDT01QJV17Y29sb3I6I2ZmZn0ubWF0LXRhYi1ncm91cC5tYXQtYmFja2dyb3VuZC1hY2NlbnRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC10YWItbGFiZWwubWF0LXRhYi1kaXNhYmxlZFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdGFiLWdyb3VwLm1hdC1iYWNrZ3JvdW5kLWFjY2VudFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXRhYi1saW5rLm1hdC10YWItZGlzYWJsZWRbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXRhYi1uYXYtYmFyLm1hdC1iYWNrZ3JvdW5kLWFjY2VudFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXRhYi1sYWJlbC5tYXQtdGFiLWRpc2FibGVkW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10YWItbmF2LWJhci5tYXQtYmFja2dyb3VuZC1hY2NlbnRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC10YWItbGluay5tYXQtdGFiLWRpc2FibGVkW19uZ2NvbnRlbnQtJUNPTVAlXXtjb2xvcjpyZ2JhKDI1NSwyNTUsMjU1LC40KX0ubWF0LXRhYi1ncm91cC5tYXQtYmFja2dyb3VuZC1hY2NlbnRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC10YWItaGVhZGVyLXBhZ2luYXRpb24tY2hldnJvbltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdGFiLW5hdi1iYXIubWF0LWJhY2tncm91bmQtYWNjZW50W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtdGFiLWhlYWRlci1wYWdpbmF0aW9uLWNoZXZyb25bX25nY29udGVudC0lQ09NUCVde2JvcmRlci1jb2xvcjojZmZmfS5tYXQtdGFiLWdyb3VwLm1hdC1iYWNrZ3JvdW5kLWFjY2VudFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXRhYi1oZWFkZXItcGFnaW5hdGlvbi1kaXNhYmxlZFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXRhYi1oZWFkZXItcGFnaW5hdGlvbi1jaGV2cm9uW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10YWItbmF2LWJhci5tYXQtYmFja2dyb3VuZC1hY2NlbnRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC10YWItaGVhZGVyLXBhZ2luYXRpb24tZGlzYWJsZWRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC10YWItaGVhZGVyLXBhZ2luYXRpb24tY2hldnJvbltfbmdjb250ZW50LSVDT01QJV17Ym9yZGVyLWNvbG9yOnJnYmEoMjU1LDI1NSwyNTUsLjQpfS5tYXQtdGFiLWdyb3VwLm1hdC1iYWNrZ3JvdW5kLWFjY2VudFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXJpcHBsZS1lbGVtZW50W19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10YWItbmF2LWJhci5tYXQtYmFja2dyb3VuZC1hY2NlbnRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1yaXBwbGUtZWxlbWVudFtfbmdjb250ZW50LSVDT01QJV17YmFja2dyb3VuZC1jb2xvcjpyZ2JhKDI1NSwyNTUsMjU1LC4xMil9Lm1hdC10YWItZ3JvdXAubWF0LWJhY2tncm91bmQtd2Fybltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXRhYi1sYWJlbC5jZGsta2V5Ym9hcmQtZm9jdXNlZFtfbmdjb250ZW50LSVDT01QJV06bm90KC5tYXQtdGFiLWRpc2FibGVkKSwgLm1hdC10YWItZ3JvdXAubWF0LWJhY2tncm91bmQtd2Fybltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXRhYi1sYWJlbC5jZGstcHJvZ3JhbS1mb2N1c2VkW19uZ2NvbnRlbnQtJUNPTVAlXTpub3QoLm1hdC10YWItZGlzYWJsZWQpLCAubWF0LXRhYi1ncm91cC5tYXQtYmFja2dyb3VuZC13YXJuW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtdGFiLWxpbmsuY2RrLWtleWJvYXJkLWZvY3VzZWRbX25nY29udGVudC0lQ09NUCVdOm5vdCgubWF0LXRhYi1kaXNhYmxlZCksIC5tYXQtdGFiLWdyb3VwLm1hdC1iYWNrZ3JvdW5kLXdhcm5bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC10YWItbGluay5jZGstcHJvZ3JhbS1mb2N1c2VkW19uZ2NvbnRlbnQtJUNPTVAlXTpub3QoLm1hdC10YWItZGlzYWJsZWQpLCAubWF0LXRhYi1uYXYtYmFyLm1hdC1iYWNrZ3JvdW5kLXdhcm5bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC10YWItbGFiZWwuY2RrLWtleWJvYXJkLWZvY3VzZWRbX25nY29udGVudC0lQ09NUCVdOm5vdCgubWF0LXRhYi1kaXNhYmxlZCksIC5tYXQtdGFiLW5hdi1iYXIubWF0LWJhY2tncm91bmQtd2Fybltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXRhYi1sYWJlbC5jZGstcHJvZ3JhbS1mb2N1c2VkW19uZ2NvbnRlbnQtJUNPTVAlXTpub3QoLm1hdC10YWItZGlzYWJsZWQpLCAubWF0LXRhYi1uYXYtYmFyLm1hdC1iYWNrZ3JvdW5kLXdhcm5bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC10YWItbGluay5jZGsta2V5Ym9hcmQtZm9jdXNlZFtfbmdjb250ZW50LSVDT01QJV06bm90KC5tYXQtdGFiLWRpc2FibGVkKSwgLm1hdC10YWItbmF2LWJhci5tYXQtYmFja2dyb3VuZC13YXJuW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtdGFiLWxpbmsuY2RrLXByb2dyYW0tZm9jdXNlZFtfbmdjb250ZW50LSVDT01QJV06bm90KC5tYXQtdGFiLWRpc2FibGVkKXtiYWNrZ3JvdW5kLWNvbG9yOnJnYmEoMjU1LDIwNSwyMTAsLjMpfS5tYXQtdGFiLWdyb3VwLm1hdC1iYWNrZ3JvdW5kLXdhcm5bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC10YWItaGVhZGVyW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10YWItZ3JvdXAubWF0LWJhY2tncm91bmQtd2Fybltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXRhYi1saW5rc1tfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdGFiLWdyb3VwLm1hdC1iYWNrZ3JvdW5kLXdhcm5bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC10YWItaGVhZGVyLXBhZ2luYXRpb25bX25nY29udGVudC0lQ09NUCVdLCAubWF0LXRhYi1uYXYtYmFyLm1hdC1iYWNrZ3JvdW5kLXdhcm5bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC10YWItaGVhZGVyW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10YWItbmF2LWJhci5tYXQtYmFja2dyb3VuZC13YXJuW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtdGFiLWxpbmtzW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10YWItbmF2LWJhci5tYXQtYmFja2dyb3VuZC13YXJuW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtdGFiLWhlYWRlci1wYWdpbmF0aW9uW19uZ2NvbnRlbnQtJUNPTVAlXXtiYWNrZ3JvdW5kLWNvbG9yOiNmNDQzMzZ9Lm1hdC10YWItZ3JvdXAubWF0LWJhY2tncm91bmQtd2Fybltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXRhYi1sYWJlbFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdGFiLWdyb3VwLm1hdC1iYWNrZ3JvdW5kLXdhcm5bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC10YWItbGlua1tfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdGFiLW5hdi1iYXIubWF0LWJhY2tncm91bmQtd2Fybltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXRhYi1sYWJlbFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdGFiLW5hdi1iYXIubWF0LWJhY2tncm91bmQtd2Fybltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXRhYi1saW5rW19uZ2NvbnRlbnQtJUNPTVAlXXtjb2xvcjojZmZmfS5tYXQtdGFiLWdyb3VwLm1hdC1iYWNrZ3JvdW5kLXdhcm5bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC10YWItbGFiZWwubWF0LXRhYi1kaXNhYmxlZFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdGFiLWdyb3VwLm1hdC1iYWNrZ3JvdW5kLXdhcm5bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC10YWItbGluay5tYXQtdGFiLWRpc2FibGVkW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10YWItbmF2LWJhci5tYXQtYmFja2dyb3VuZC13YXJuW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtdGFiLWxhYmVsLm1hdC10YWItZGlzYWJsZWRbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXRhYi1uYXYtYmFyLm1hdC1iYWNrZ3JvdW5kLXdhcm5bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC10YWItbGluay5tYXQtdGFiLWRpc2FibGVkW19uZ2NvbnRlbnQtJUNPTVAlXXtjb2xvcjpyZ2JhKDI1NSwyNTUsMjU1LC40KX0ubWF0LXRhYi1ncm91cC5tYXQtYmFja2dyb3VuZC13YXJuW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtdGFiLWhlYWRlci1wYWdpbmF0aW9uLWNoZXZyb25bX25nY29udGVudC0lQ09NUCVdLCAubWF0LXRhYi1uYXYtYmFyLm1hdC1iYWNrZ3JvdW5kLXdhcm5bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC10YWItaGVhZGVyLXBhZ2luYXRpb24tY2hldnJvbltfbmdjb250ZW50LSVDT01QJV17Ym9yZGVyLWNvbG9yOiNmZmZ9Lm1hdC10YWItZ3JvdXAubWF0LWJhY2tncm91bmQtd2Fybltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXRhYi1oZWFkZXItcGFnaW5hdGlvbi1kaXNhYmxlZFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXRhYi1oZWFkZXItcGFnaW5hdGlvbi1jaGV2cm9uW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10YWItbmF2LWJhci5tYXQtYmFja2dyb3VuZC13YXJuW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtdGFiLWhlYWRlci1wYWdpbmF0aW9uLWRpc2FibGVkW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtdGFiLWhlYWRlci1wYWdpbmF0aW9uLWNoZXZyb25bX25nY29udGVudC0lQ09NUCVde2JvcmRlci1jb2xvcjpyZ2JhKDI1NSwyNTUsMjU1LC40KX0ubWF0LXRhYi1ncm91cC5tYXQtYmFja2dyb3VuZC13YXJuW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtcmlwcGxlLWVsZW1lbnRbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXRhYi1uYXYtYmFyLm1hdC1iYWNrZ3JvdW5kLXdhcm5bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1yaXBwbGUtZWxlbWVudFtfbmdjb250ZW50LSVDT01QJV17YmFja2dyb3VuZC1jb2xvcjpyZ2JhKDI1NSwyNTUsMjU1LC4xMil9Lm1hdC10b29sYmFyW19uZ2NvbnRlbnQtJUNPTVAlXXtiYWNrZ3JvdW5kOiNmNWY1ZjU7Y29sb3I6IzIxMjEyMX0ubWF0LXRvb2xiYXIubWF0LXByaW1hcnlbX25nY29udGVudC0lQ09NUCVde2JhY2tncm91bmQ6I2Y1N2MwMDtjb2xvcjojZmZmfS5tYXQtdG9vbGJhci5tYXQtYWNjZW50W19uZ2NvbnRlbnQtJUNPTVAlXXtiYWNrZ3JvdW5kOiNmZjk4MDA7Y29sb3I6I2ZmZn0ubWF0LXRvb2xiYXIubWF0LXdhcm5bX25nY29udGVudC0lQ09NUCVde2JhY2tncm91bmQ6I2Y0NDMzNjtjb2xvcjojZmZmfS5tYXQtdG9vbGJhcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtdW5kZXJsaW5lW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10b29sYmFyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1yaXBwbGVbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXRvb2xiYXJbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb2N1c2VkW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1yaXBwbGVbX25nY29udGVudC0lQ09NUCVde2JhY2tncm91bmQtY29sb3I6Y3VycmVudENvbG9yfS5tYXQtdG9vbGJhcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXRvb2xiYXJbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb2N1c2VkW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdG9vbGJhcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXNlbGVjdC12YWx1ZVtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdG9vbGJhcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXNlbGVjdC1hcnJvd1tfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdG9vbGJhcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQubWF0LWZvY3VzZWRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1zZWxlY3QtYXJyb3dbX25nY29udGVudC0lQ09NUCVde2NvbG9yOmluaGVyaXR9Lm1hdC10b29sYmFyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaW5wdXQtZWxlbWVudFtfbmdjb250ZW50LSVDT01QJV17Y2FyZXQtY29sb3I6Y3VycmVudENvbG9yfS5tYXQtdG9vbGJhci1tdWx0aXBsZS1yb3dzW19uZ2NvbnRlbnQtJUNPTVAlXXttaW4taGVpZ2h0OjY0cHh9Lm1hdC10b29sYmFyLXJvd1tfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdG9vbGJhci1zaW5nbGUtcm93W19uZ2NvbnRlbnQtJUNPTVAlXXtoZWlnaHQ6NjRweH1AbWVkaWEobWF4LXdpZHRoOiA1OTlweCl7Lm1hdC10b29sYmFyLW11bHRpcGxlLXJvd3NbX25nY29udGVudC0lQ09NUCVde21pbi1oZWlnaHQ6NTZweH0ubWF0LXRvb2xiYXItcm93W19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10b29sYmFyLXNpbmdsZS1yb3dbX25nY29udGVudC0lQ09NUCVde2hlaWdodDo1NnB4fX0ubWF0LXRvb2x0aXBbX25nY29udGVudC0lQ09NUCVde2JhY2tncm91bmQ6cmdiYSg5Nyw5Nyw5NywuOSl9Lm1hdC10cmVlW19uZ2NvbnRlbnQtJUNPTVAlXXtiYWNrZ3JvdW5kOiNmZmZ9Lm1hdC10cmVlLW5vZGVbX25nY29udGVudC0lQ09NUCVdLCAubWF0LW5lc3RlZC10cmVlLW5vZGVbX25nY29udGVudC0lQ09NUCVde2NvbG9yOiMyMTIxMjF9Lm1hdC10cmVlLW5vZGVbX25nY29udGVudC0lQ09NUCVde21pbi1oZWlnaHQ6NDhweH0ubWF0LXNuYWNrLWJhci1jb250YWluZXJbX25nY29udGVudC0lQ09NUCVde2NvbG9yOnJnYmEoMjU1LDI1NSwyNTUsLjcpO2JhY2tncm91bmQ6IzMyMzIzMjtib3gtc2hhZG93OjBweCAzcHggNXB4IC0xcHggcmdiYSgwLCAwLCAwLCAwLjIpLDBweCA2cHggMTBweCAwcHggcmdiYSgwLCAwLCAwLCAwLjE0KSwwcHggMXB4IDE4cHggMHB4IHJnYmEoMCwgMCwgMCwgMC4xMil9Lm1hdC1zaW1wbGUtc25hY2tiYXItYWN0aW9uW19uZ2NvbnRlbnQtJUNPTVAlXXtjb2xvcjojZmY5ODAwfS5jaGFydC1jb250YWluZXJbX25nY29udGVudC0lQ09NUCVde2JhY2tncm91bmQtY29sb3I6I2ZmZjtib3JkZXItYm90dG9tOjFweCBzb2xpZCAjZWJlYmViO2Rpc3BsYXk6ZmxleDtmbGV4LWRpcmVjdGlvbjpjb2x1bW47b3ZlcmZsb3c6aGlkZGVufS5jaGFydFtfbmdjb250ZW50LSVDT01QJV17aGVpZ2h0OjMwMHB4O3dpZHRoOjEwMCV9LmNoYXJ0LWhlYWRbX25nY29udGVudC0lQ09NUCVde2FsaWduLWl0ZW1zOmNlbnRlcjtkaXNwbGF5OmZsZXg7anVzdGlmeS1jb250ZW50OnNwYWNlLWJldHdlZW59LmNoYXJ0LWhlYWRpbmdbX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToxM3B4O3BhZGRpbmctbGVmdDoxMHB4O3BhZGRpbmctdG9wOjEwcHh9LmRyYXctYXJlYVtfbmdjb250ZW50LSVDT01QJV17aGVpZ2h0OjEwMCU7d2lkdGg6MTAwJX0uc3Ryb2tlZC1saW5lW19uZ2NvbnRlbnQtJUNPTVAlXXtzdHJva2U6cmdiYSgwLDAsMCwuMTIpO3N0cm9rZS1kYXNoYXJyYXk6MyAzfSddLGNoYW5nZURldGVjdGlvbjowfSk7Y2xhc3MgYnB0e2NvbnN0cnVjdG9yKHQpe3RoaXMuc3RvcmU9dCx0aGlzLmFjdGl2ZVJ1bnMkPXRoaXMuc3RvcmUucGlwZShsdihLRCkpLnBpcGUoZnQoKHQ9PnQ/QXJyYXkuZnJvbSh0LmVudHJpZXMoKSkuZmlsdGVyKCh0PT50WzFdKSkubWFwKCh0PT50WzBdKSk6W10pKSksdGhpcy52aXNpYmxlQW5ub3RhdGlvbnMkPUV0KFt0aGlzLnN0b3JlLnNlbGVjdChFZHQpLHRoaXMuc3RvcmUuc2VsZWN0KERkdCksdGhpcy5zdG9yZS5zZWxlY3QoV2R0KV0pLnBpcGUoZnQoKChbdCxuLGVdKT0+ZHB0KHQsbixlKSkpKSx0aGlzLmNoYXJ0V2lkdGgkPXRoaXMuc3RvcmUucGlwZShsdihZZHQpKS5waXBlKGZ0KCh0PT5NYXRoLm1heCgxNTAsdCkpKSksdGhpcy5ydW5Db2xvclNjYWxlJD10aGlzLnN0b3JlLnNlbGVjdChHRCkucGlwZShmdCgodD0+bj0+e2lmKCF0Lmhhc093blByb3BlcnR5KG4pKXRocm93IG5ldyBFcnJvcihgW0NvbG9yIHNjYWxlXSB1bmtub3duIHJ1bklkOiAke259LmApO3JldHVybiB0W25dfSkpKX1uZ09uSW5pdCgpe3RoaXMuY2hhcnREYXRhJD1FdChbdGhpcy52aXNpYmxlQW5ub3RhdGlvbnMkLHRoaXMuYWN0aXZlUnVucyRdKS5waXBlKGZ0KCgoW3Qsbl0pPT4oZnVuY3Rpb24gZSh0LG4sYSl7Y29uc3Qgbz17fSxyPXt9LGk9bmV3IFNldChuKSxjPWtndChhKSxzPXttYXg6LTEsbWluOjF9O09iamVjdC52YWx1ZXModCkuZm9yRWFjaCgodD0+e3QuZm9yRWFjaCgodD0+e2NvbnN0IG49dC5ydW47aWYoaS5oYXMobikmJnQubWV0cmljPT09YylpZihudWxsPT09dC5uUE1JVmFsdWUpcltuXT9yW25dLnB1c2gobnVsbCk6cltuXT1bbnVsbF07ZWxzZXtjb25zdCBlPXQublBNSVZhbHVlO3MubWF4PXMubWF4PGU/ZTpzLm1heCxzLm1pbj1zLm1pbj5lP2U6cy5taW4sb1t0LnJ1bl0/b1tuXS5wdXNoKGUpOm9bbl09W2VdfX0pKX0pKTtjb25zdCBsPXt9LG09aDAoKS5kb21haW4oW3MubWluLHMubWF4XSkudmFsdWUoKHQ9PnQpKSxkPWgwKCkuZG9tYWluKFstMS8wLDEvMF0pLnRocmVzaG9sZHMoMCkudmFsdWUoKHQ9PnQpKTtmb3IoY29uc3QgdCBvZiBpKWlmKGxbdF09bShvW3RdKSxyW3RdKXtjb25zdCBuPWQoclt0XSk7bFt0XS51bnNoaWZ0KG5bMF0pfXJldHVybnt2aW9saW5EYXRhOmwsZXh0cmVtZXM6c319KSh0LG4sdGhpcy5tZXRyaWNOYW1lKSkpKX1yZW1vdmVNZXRyaWMoKXt0aGlzLnN0b3JlLmRpc3BhdGNoKHNndCh7bWV0cmljOnRoaXMubWV0cmljTmFtZX0pKX11cGRhdGVGaWx0ZXIodCl7dGhpcy5zdG9yZS5kaXNwYXRjaChsZ3QoT2JqZWN0LmFzc2lnbih7bWV0cmljOnRoaXMubWV0cmljTmFtZX0sdCkpKX19ZnVuY3Rpb24gdXB0KHQsbil7aWYoMSZ0JiZ0cCgwLCJucG1pLXZpb2xpbi1maWx0ZXIiLDkpLDImdCl7Y29uc3QgdD1uLiRpbXBsaWNpdDtKZygibWV0cmljTmFtZSIsdFswXSkoImZpbHRlciIsdFsxXSl9fWZ1bmN0aW9uIGZwdCh0LG4pezEmdCYmKEtnKDAsImRpdiIsMTApLEtnKDEsInNwYW4iLDExKSxKcCgyLCIgWW91IGNhbiBhZGQgbW9yZSBmaWx0ZXJzIGF0IHRoZSB0b3AuICIpLCRnKCksJGcoKSl9YnB0Lsm1ZmFjPWZ1bmN0aW9uIHQobil7cmV0dXJuIG5ldyhufHxicHQpKFpnKGN2KSl9LGJwdC7JtWNtcD1fbyh7dHlwZTpicHQsc2VsZWN0b3JzOltbIm5wbWktdmlvbGluLWZpbHRlciJdXSxpbnB1dHM6e21ldHJpY05hbWU6Im1ldHJpY05hbWUiLGZpbHRlcjoiZmlsdGVyIn0sZGVjbHM6NCx2YXJzOjExLGNvbnN0czpbWzMsIm1ldHJpY05hbWUiLCJmaWx0ZXIiLCJjaGFydERhdGEiLCJ3aWR0aCIsImNvbG9yU2NhbGUiLCJvblJlbW92ZSIsIm9uVXBkYXRlRmlsdGVyIl1dLHRlbXBsYXRlOmZ1bmN0aW9uIHQobixlKXsxJm4mJihLZygwLCJ2aW9saW4tZmlsdGVyLWNvbXBvbmVudCIsMCksY3AoIm9uUmVtb3ZlIiwoZnVuY3Rpb24gdCgpe3JldHVybiBlLnJlbW92ZU1ldHJpYygpfSkpKCJvblVwZGF0ZUZpbHRlciIsKGZ1bmN0aW9uIHQobil7cmV0dXJuIGUudXBkYXRlRmlsdGVyKG4pfSkpLHlmKDEsImFzeW5jIikseWYoMiwiYXN5bmMiKSx5ZigzLCJhc3luYyIpLCRnKCkpLDImbiYmSmcoIm1ldHJpY05hbWUiLGUubWV0cmljTmFtZSkoImZpbHRlciIsZS5maWx0ZXIpKCJjaGFydERhdGEiLGtmKDEsNSxlLmNoYXJ0RGF0YSQpKSgid2lkdGgiLGtmKDIsNyxlLmNoYXJ0V2lkdGgkKSkoImNvbG9yU2NhbGUiLGtmKDMsOSxlLnJ1bkNvbG9yU2NhbGUkKSl9LGRpcmVjdGl2ZXM6W3BwdF0scGlwZXM6W29PXSxlbmNhcHN1bGF0aW9uOjIsY2hhbmdlRGV0ZWN0aW9uOjB9KTtjbGFzcyBocHR7Y29uc3RydWN0b3IoKXt0aGlzLnRvZ2dsZVNpZGViYXJFeHBhbmRlZD1uZXcgRWZ9fWhwdC7JtWZhYz1mdW5jdGlvbiB0KG4pe3JldHVybiBuZXcobnx8aHB0KX0saHB0Lsm1Y21wPV9vKHt0eXBlOmhwdCxzZWxlY3RvcnM6W1sidmlvbGluLWZpbHRlcnMtY29tcG9uZW50Il1dLGlucHV0czp7c2lkZWJhckV4cGFuZGVkOiJzaWRlYmFyRXhwYW5kZWQiLG1ldHJpY0ZpbHRlcnM6Im1ldHJpY0ZpbHRlcnMifSxvdXRwdXRzOnt0b2dnbGVTaWRlYmFyRXhwYW5kZWQ6InRvZ2dsZVNpZGViYXJFeHBhbmRlZCJ9LGRlY2xzOjEwLHZhcnM6Mixjb25zdHM6ZnVuY3Rpb24oKXtyZXR1cm5bWzEsImZpbHRlcnMtdG9vbGJhciJdLFsxLCJmaWx0ZXJzLXRpdGxlIl0sWzEsInNpZGUtdG9nZ2xlIl0sWyJtYXQtaWNvbi1idXR0b24iLCIiLDMsImNsaWNrIiw2LCJhcmlhLWxhYmVsIl0sWyJhcmlhLWxhYmVsIiwidW5kZWZpbmVkIiE9dHlwZW9mIG5nSTE4bkNsb3N1cmVNb2RlJiZuZ0kxOG5DbG9zdXJlTW9kZT9nb29nLmdldE1zZygiRXhwYW5kL0hpZGUgU2lkZWJhciIpOiRsb2NhbGl6ZWA6TGFiZWwgZm9yIGEgYnV0dG9uIHRoYXQgZXhwYW5kcy9oaWRlcyB0aGUgc2lkZWJhci7ikJ80OGMyOTkwM2NlODgxYWI2MTA4OGY4ZDQ5ZDgyNzIwMzcxNmFhZWQ04pCfNDY1ODYwMjk5MTk3MDI2MDIxNTpFeHBhbmQvSGlkZSBTaWRlYmFyYF0sWyJzdmdJY29uIiwiY2hldnJvbl9sZWZ0XzI0cHgiXSxbMSwiZmlsdGVycyJdLFszLCJtZXRyaWNOYW1lIiwiZmlsdGVyIiw0LCJuZ0ZvciIsIm5nRm9yT2YiXSxbImNsYXNzIiwiZmlsdGVycy1oaW50Iiw0LCJuZ0lmIl0sWzMsIm1ldHJpY05hbWUiLCJmaWx0ZXIiXSxbMSwiZmlsdGVycy1oaW50Il0sWzEsImZpbHRlcnMtaGludC10ZXh0Il1dfSx0ZW1wbGF0ZTpmdW5jdGlvbiB0KG4sZSl7MSZuJiYoS2coMCwiZGl2IiwwKSxLZygxLCJoMyIsMSksSnAoMiwiQWN0aXZlIEZpbHRlcnMiKSwkZygpLEtnKDMsImRpdiIsMiksS2coNCwiYnV0dG9uIiwzKSxsdSg1LDQpLGNwKCJjbGljayIsKGZ1bmN0aW9uIHQoKXtyZXR1cm4gZS50b2dnbGVTaWRlYmFyRXhwYW5kZWQuZW1pdCgpfSkpLHRwKDYsIm1hdC1pY29uIiw1KSwkZygpLCRnKCksJGcoKSxLZyg3LCJkaXYiLDYpLFlnKDgsdXB0LDEsMiwibnBtaS12aW9saW4tZmlsdGVyIiw3KSwkZygpLFlnKDksZnB0LDMsMCwiZGl2Iiw4KSksMiZuJiYod3MoOCksSmcoIm5nRm9yT2YiLGUubWV0cmljRmlsdGVycyksd3MoMSksSmcoIm5nSWYiLDA9PT1lLm1ldHJpY0ZpbHRlcnMubGVuZ3RoKSl9LGRpcmVjdGl2ZXM6W2VBLEJCLGpNLFdNLGJwdF0sc3R5bGVzOlsnLm1hdC1iYWRnZS1jb250ZW50W19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXdlaWdodDo2MDA7Zm9udC1zaXplOjEycHg7Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmfS5tYXQtYmFkZ2Utc21hbGxbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1iYWRnZS1jb250ZW50W19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6OXB4fS5tYXQtYmFkZ2UtbGFyZ2VbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1iYWRnZS1jb250ZW50W19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MjRweH0ubWF0LWgxW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1oZWFkbGluZVtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdHlwb2dyYXBoeVtfbmdjb250ZW50LSVDT01QJV0gICBoMVtfbmdjb250ZW50LSVDT01QJV17Zm9udDo0MDAgMjRweC8zMnB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtsZXR0ZXItc3BhY2luZzpub3JtYWw7bWFyZ2luOjAgMCAxNnB4fS5tYXQtaDJbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXRpdGxlW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10eXBvZ3JhcGh5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIGgyW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250OjUwMCAyMHB4LzMycHggUm9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2xldHRlci1zcGFjaW5nOm5vcm1hbDttYXJnaW46MCAwIDE2cHh9Lm1hdC1oM1tfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtc3ViaGVhZGluZy0yW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10eXBvZ3JhcGh5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIGgzW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250OjQwMCAxNnB4LzI4cHggUm9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2xldHRlci1zcGFjaW5nOm5vcm1hbDttYXJnaW46MCAwIDE2cHh9Lm1hdC1oNFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtc3ViaGVhZGluZy0xW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10eXBvZ3JhcGh5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIGg0W19uZ2NvbnRlbnQtJUNPTVAlXXtmb250OjQwMCAxNXB4LzI0cHggUm9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2xldHRlci1zcGFjaW5nOm5vcm1hbDttYXJnaW46MCAwIDE2cHh9Lm1hdC1oNVtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdHlwb2dyYXBoeVtfbmdjb250ZW50LSVDT01QJV0gICBoNVtfbmdjb250ZW50LSVDT01QJV17Zm9udDo0MDAgY2FsYygxNHB4ICogMC44MykvMjBweCBSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7bWFyZ2luOjAgMCAxMnB4fS5tYXQtaDZbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXR5cG9ncmFwaHlbX25nY29udGVudC0lQ09NUCVdICAgaDZbX25nY29udGVudC0lQ09NUCVde2ZvbnQ6NDAwIGNhbGMoMTRweCAqIDAuNjcpLzIwcHggUm9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO21hcmdpbjowIDAgMTJweH0ubWF0LWJvZHktc3Ryb25nW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1ib2R5LTJbX25nY29udGVudC0lQ09NUCVde2ZvbnQ6NTAwIDE0cHgvMjRweCBSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7bGV0dGVyLXNwYWNpbmc6bm9ybWFsfS5tYXQtYm9keVtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtYm9keS0xW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10eXBvZ3JhcGh5W19uZ2NvbnRlbnQtJUNPTVAlXXtmb250OjQwMCAxNHB4LzIwcHggUm9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2xldHRlci1zcGFjaW5nOm5vcm1hbH0ubWF0LWJvZHlbX25nY29udGVudC0lQ09NUCVdICAgcFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtYm9keS0xW19uZ2NvbnRlbnQtJUNPTVAlXSAgIHBbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXR5cG9ncmFwaHlbX25nY29udGVudC0lQ09NUCVdICAgcFtfbmdjb250ZW50LSVDT01QJV17bWFyZ2luOjAgMCAxMnB4fS5tYXQtc21hbGxbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWNhcHRpb25bX25nY29udGVudC0lQ09NUCVde2ZvbnQ6NDAwIDEycHgvMjBweCBSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7bGV0dGVyLXNwYWNpbmc6bm9ybWFsfS5tYXQtZGlzcGxheS00W19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10eXBvZ3JhcGh5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZGlzcGxheS00W19uZ2NvbnRlbnQtJUNPTVAlXXtmb250OjMwMCAxMTJweC8xMTJweCBSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7bGV0dGVyLXNwYWNpbmc6LTAuMDVlbTttYXJnaW46MCAwIDU2cHh9Lm1hdC1kaXNwbGF5LTNbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXR5cG9ncmFwaHlbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1kaXNwbGF5LTNbX25nY29udGVudC0lQ09NUCVde2ZvbnQ6NDAwIDU2cHgvNTZweCBSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7bGV0dGVyLXNwYWNpbmc6LTAuMDJlbTttYXJnaW46MCAwIDY0cHh9Lm1hdC1kaXNwbGF5LTJbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXR5cG9ncmFwaHlbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1kaXNwbGF5LTJbX25nY29udGVudC0lQ09NUCVde2ZvbnQ6NDAwIDQ1cHgvNDhweCBSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7bGV0dGVyLXNwYWNpbmc6LTAuMDA1ZW07bWFyZ2luOjAgMCA2NHB4fS5tYXQtZGlzcGxheS0xW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10eXBvZ3JhcGh5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZGlzcGxheS0xW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250OjQwMCAzNHB4LzQwcHggUm9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2xldHRlci1zcGFjaW5nOm5vcm1hbDttYXJnaW46MCAwIDY0cHh9Lm1hdC1ib3R0b20tc2hlZXQtY29udGFpbmVyW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250OjQwMCAxNHB4LzIwcHggUm9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2xldHRlci1zcGFjaW5nOm5vcm1hbH0ubWF0LWJ1dHRvbltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtcmFpc2VkLWJ1dHRvbltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtaWNvbi1idXR0b25bX25nY29udGVudC0lQ09NUCVdLCAubWF0LXN0cm9rZWQtYnV0dG9uW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1mbGF0LWJ1dHRvbltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtZmFiW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1taW5pLWZhYltfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2ZvbnQtc2l6ZToxNHB4O2ZvbnQtd2VpZ2h0OjUwMH0ubWF0LWJ1dHRvbi10b2dnbGVbX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZn0ubWF0LWNhcmRbX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZn0ubWF0LWNhcmQtdGl0bGVbX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToyNHB4O2ZvbnQtd2VpZ2h0OjUwMH0ubWF0LWNhcmQtaGVhZGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtY2FyZC10aXRsZVtfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjIwcHh9Lm1hdC1jYXJkLXN1YnRpdGxlW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1jYXJkLWNvbnRlbnRbX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToxNHB4fS5tYXQtY2hlY2tib3hbX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZn0ubWF0LWNoZWNrYm94LWxheW91dFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWNoZWNrYm94LWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXtsaW5lLWhlaWdodDoyNHB4fS5tYXQtY2hpcFtfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjE0cHg7Zm9udC13ZWlnaHQ6NTAwfS5tYXQtY2hpcFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWNoaXAtdHJhaWxpbmctaWNvbi5tYXQtaWNvbltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtY2hpcFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWNoaXAtcmVtb3ZlLm1hdC1pY29uW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MThweH0ubWF0LXRhYmxlW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWZ9Lm1hdC1oZWFkZXItY2VsbFtfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjEycHg7Zm9udC13ZWlnaHQ6NTAwfS5tYXQtY2VsbFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtZm9vdGVyLWNlbGxbX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToxNHB4fS5tYXQtY2FsZW5kYXJbX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZn0ubWF0LWNhbGVuZGFyLWJvZHlbX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToxM3B4fS5tYXQtY2FsZW5kYXItYm9keS1sYWJlbFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtY2FsZW5kYXItcGVyaW9kLWJ1dHRvbltfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjE0cHg7Zm9udC13ZWlnaHQ6NTAwfS5tYXQtY2FsZW5kYXItdGFibGUtaGVhZGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIHRoW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MTFweDtmb250LXdlaWdodDo0MDB9Lm1hdC1kaWFsb2ctdGl0bGVbX25nY29udGVudC0lQ09NUCVde2ZvbnQ6NTAwIDIwcHgvMzJweCBSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7bGV0dGVyLXNwYWNpbmc6bm9ybWFsfS5tYXQtZXhwYW5zaW9uLXBhbmVsLWhlYWRlcltfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2ZvbnQtc2l6ZToxNXB4O2ZvbnQtd2VpZ2h0OjQwMH0ubWF0LWV4cGFuc2lvbi1wYW5lbC1jb250ZW50W19uZ2NvbnRlbnQtJUNPTVAlXXtmb250OjQwMCAxNHB4LzIwcHggUm9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2xldHRlci1zcGFjaW5nOm5vcm1hbH0ubWF0LWZvcm0tZmllbGRbX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZTppbmhlcml0O2ZvbnQtd2VpZ2h0OjQwMDtsaW5lLWhlaWdodDoxLjEyNTtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7bGV0dGVyLXNwYWNpbmc6bm9ybWFsfS5tYXQtZm9ybS1maWVsZC13cmFwcGVyW19uZ2NvbnRlbnQtJUNPTVAlXXtwYWRkaW5nLWJvdHRvbToxLjM0Mzc1ZW19Lm1hdC1mb3JtLWZpZWxkLXByZWZpeFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWljb25bX25nY29udGVudC0lQ09NUCVdLCAubWF0LWZvcm0tZmllbGQtc3VmZml4W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaWNvbltfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjE1MCU7bGluZS1oZWlnaHQ6MS4xMjV9Lm1hdC1mb3JtLWZpZWxkLXByZWZpeFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWljb24tYnV0dG9uW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1mb3JtLWZpZWxkLXN1ZmZpeFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWljb24tYnV0dG9uW19uZ2NvbnRlbnQtJUNPTVAlXXtoZWlnaHQ6MS41ZW07d2lkdGg6MS41ZW19Lm1hdC1mb3JtLWZpZWxkLXByZWZpeFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWljb24tYnV0dG9uW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaWNvbltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtZm9ybS1maWVsZC1zdWZmaXhbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pY29uLWJ1dHRvbltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWljb25bX25nY29udGVudC0lQ09NUCVde2hlaWdodDoxLjEyNWVtO2xpbmUtaGVpZ2h0OjEuMTI1fS5tYXQtZm9ybS1maWVsZC1pbmZpeFtfbmdjb250ZW50LSVDT01QJV17cGFkZGluZzouNWVtIDA7Ym9yZGVyLXRvcDouODQzNzVlbSBzb2xpZCB0cmFuc3BhcmVudH0ubWF0LWZvcm0tZmllbGQtY2FuLWZsb2F0Lm1hdC1mb3JtLWZpZWxkLXNob3VsZC1mbG9hdFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWZvcm0tZmllbGQtY2FuLWZsb2F0W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaW5wdXQtc2VydmVyW19uZ2NvbnRlbnQtJUNPTVAlXTpmb2N1cyArIC5tYXQtZm9ybS1maWVsZC1sYWJlbC13cmFwcGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17dHJhbnNmb3JtOnRyYW5zbGF0ZVkoLTEuMzQzNzVlbSkgc2NhbGUoMC43NSk7d2lkdGg6MTMzLjMzMzMzMzMzMzMlfS5tYXQtZm9ybS1maWVsZC1jYW4tZmxvYXRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pbnB1dC1zZXJ2ZXJbbGFiZWxdW19uZ2NvbnRlbnQtJUNPTVAlXTpub3QoOmxhYmVsLXNob3duKSArIC5tYXQtZm9ybS1maWVsZC1sYWJlbC13cmFwcGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17dHJhbnNmb3JtOnRyYW5zbGF0ZVkoLTEuMzQzNzRlbSkgc2NhbGUoMC43NSk7d2lkdGg6MTMzLjMzMzM0MzMzMzMlfS5tYXQtZm9ybS1maWVsZC1sYWJlbC13cmFwcGVyW19uZ2NvbnRlbnQtJUNPTVAlXXt0b3A6LTAuODQzNzVlbTtwYWRkaW5nLXRvcDouODQzNzVlbX0ubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVde3RvcDoxLjM0Mzc1ZW19Lm1hdC1mb3JtLWZpZWxkLXVuZGVybGluZVtfbmdjb250ZW50LSVDT01QJV17Ym90dG9tOjEuMzQzNzVlbX0ubWF0LWZvcm0tZmllbGQtc3Vic2NyaXB0LXdyYXBwZXJbX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZTo3NSU7bWFyZ2luLXRvcDouNjY2NjY2NjY2N2VtO3RvcDpjYWxjKDEwMCUgLSAxLjc5MTY2NjY2NjdlbSl9Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtbGVnYWN5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC13cmFwcGVyW19uZ2NvbnRlbnQtJUNPTVAlXXtwYWRkaW5nLWJvdHRvbToxLjI1ZW19Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtbGVnYWN5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1pbmZpeFtfbmdjb250ZW50LSVDT01QJV17cGFkZGluZzouNDM3NWVtIDB9Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtbGVnYWN5Lm1hdC1mb3JtLWZpZWxkLWNhbi1mbG9hdC5tYXQtZm9ybS1maWVsZC1zaG91bGQtZmxvYXRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtbGVnYWN5Lm1hdC1mb3JtLWZpZWxkLWNhbi1mbG9hdFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWlucHV0LXNlcnZlcltfbmdjb250ZW50LSVDT01QJV06Zm9jdXMgKyAubWF0LWZvcm0tZmllbGQtbGFiZWwtd3JhcHBlcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVde3RyYW5zZm9ybTp0cmFuc2xhdGVZKC0xLjI4MTI1ZW0pIHNjYWxlKDAuNzUpIHBlcnNwZWN0aXZlKDEwMHB4KSB0cmFuc2xhdGVaKDAuMDAxcHgpOy1tcy10cmFuc2Zvcm06dHJhbnNsYXRlWSgtMS4yODEyNWVtKSBzY2FsZSgwLjc1KTt3aWR0aDoxMzMuMzMzMzMzMzMzMyV9Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtbGVnYWN5Lm1hdC1mb3JtLWZpZWxkLWNhbi1mbG9hdFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtYXV0b2ZpbGwtY29udHJvbFtfbmdjb250ZW50LSVDT01QJV06LXdlYmtpdC1hdXRvZmlsbCArIC5tYXQtZm9ybS1maWVsZC1sYWJlbC13cmFwcGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17dHJhbnNmb3JtOnRyYW5zbGF0ZVkoLTEuMjgxMjVlbSkgc2NhbGUoMC43NSkgcGVyc3BlY3RpdmUoMTAwcHgpIHRyYW5zbGF0ZVooMC4wMDEwMXB4KTstbXMtdHJhbnNmb3JtOnRyYW5zbGF0ZVkoLTEuMjgxMjRlbSkgc2NhbGUoMC43NSk7d2lkdGg6MTMzLjMzMzM0MzMzMzMlfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWxlZ2FjeS5tYXQtZm9ybS1maWVsZC1jYW4tZmxvYXRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pbnB1dC1zZXJ2ZXJbbGFiZWxdW19uZ2NvbnRlbnQtJUNPTVAlXTpub3QoOmxhYmVsLXNob3duKSArIC5tYXQtZm9ybS1maWVsZC1sYWJlbC13cmFwcGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17dHJhbnNmb3JtOnRyYW5zbGF0ZVkoLTEuMjgxMjVlbSkgc2NhbGUoMC43NSkgcGVyc3BlY3RpdmUoMTAwcHgpIHRyYW5zbGF0ZVooMC4wMDEwMnB4KTstbXMtdHJhbnNmb3JtOnRyYW5zbGF0ZVkoLTEuMjgxMjNlbSkgc2NhbGUoMC43NSk7d2lkdGg6MTMzLjMzMzM1MzMzMzMlfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWxlZ2FjeVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVde3RvcDoxLjI4MTI1ZW19Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtbGVnYWN5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC11bmRlcmxpbmVbX25nY29udGVudC0lQ09NUCVde2JvdHRvbToxLjI1ZW19Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtbGVnYWN5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1zdWJzY3JpcHQtd3JhcHBlcltfbmdjb250ZW50LSVDT01QJV17bWFyZ2luLXRvcDouNTQxNjY2NjY2N2VtO3RvcDpjYWxjKDEwMCUgLSAxLjY2NjY2NjY2NjdlbSl9QG1lZGlhIHByaW50ey5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWxlZ2FjeS5tYXQtZm9ybS1maWVsZC1jYW4tZmxvYXQubWF0LWZvcm0tZmllbGQtc2hvdWxkLWZsb2F0W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWxlZ2FjeS5tYXQtZm9ybS1maWVsZC1jYW4tZmxvYXRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pbnB1dC1zZXJ2ZXJbX25nY29udGVudC0lQ09NUCVdOmZvY3VzICsgLm1hdC1mb3JtLWZpZWxkLWxhYmVsLXdyYXBwZXJbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXt0cmFuc2Zvcm06dHJhbnNsYXRlWSgtMS4yODEyMmVtKSBzY2FsZSgwLjc1KX0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1sZWdhY3kubWF0LWZvcm0tZmllbGQtY2FuLWZsb2F0W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1hdXRvZmlsbC1jb250cm9sW19uZ2NvbnRlbnQtJUNPTVAlXTotd2Via2l0LWF1dG9maWxsICsgLm1hdC1mb3JtLWZpZWxkLWxhYmVsLXdyYXBwZXJbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXt0cmFuc2Zvcm06dHJhbnNsYXRlWSgtMS4yODEyMWVtKSBzY2FsZSgwLjc1KX0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1sZWdhY3kubWF0LWZvcm0tZmllbGQtY2FuLWZsb2F0W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaW5wdXQtc2VydmVyW2xhYmVsXVtfbmdjb250ZW50LSVDT01QJV06bm90KDpsYWJlbC1zaG93bikgKyAubWF0LWZvcm0tZmllbGQtbGFiZWwtd3JhcHBlcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVde3RyYW5zZm9ybTp0cmFuc2xhdGVZKC0xLjI4MTJlbSkgc2NhbGUoMC43NSl9fS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWZpbGxbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWluZml4W19uZ2NvbnRlbnQtJUNPTVAlXXtwYWRkaW5nOi4yNWVtIDAgLjc1ZW0gMH0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1maWxsW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17dG9wOjEuMDkzNzVlbTttYXJnaW4tdG9wOi0wLjVlbX0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1maWxsLm1hdC1mb3JtLWZpZWxkLWNhbi1mbG9hdC5tYXQtZm9ybS1maWVsZC1zaG91bGQtZmxvYXRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtZmlsbC5tYXQtZm9ybS1maWVsZC1jYW4tZmxvYXRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pbnB1dC1zZXJ2ZXJbX25nY29udGVudC0lQ09NUCVdOmZvY3VzICsgLm1hdC1mb3JtLWZpZWxkLWxhYmVsLXdyYXBwZXJbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXt0cmFuc2Zvcm06dHJhbnNsYXRlWSgtMC41OTM3NWVtKSBzY2FsZSgwLjc1KTt3aWR0aDoxMzMuMzMzMzMzMzMzMyV9Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtZmlsbC5tYXQtZm9ybS1maWVsZC1jYW4tZmxvYXRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pbnB1dC1zZXJ2ZXJbbGFiZWxdW19uZ2NvbnRlbnQtJUNPTVAlXTpub3QoOmxhYmVsLXNob3duKSArIC5tYXQtZm9ybS1maWVsZC1sYWJlbC13cmFwcGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17dHJhbnNmb3JtOnRyYW5zbGF0ZVkoLTAuNTkzNzRlbSkgc2NhbGUoMC43NSk7d2lkdGg6MTMzLjMzMzM0MzMzMzMlfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLW91dGxpbmVbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWluZml4W19uZ2NvbnRlbnQtJUNPTVAlXXtwYWRkaW5nOjFlbSAwIDFlbSAwfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLW91dGxpbmVbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXt0b3A6MS44NDM3NWVtO21hcmdpbi10b3A6LTAuMjVlbX0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1vdXRsaW5lLm1hdC1mb3JtLWZpZWxkLWNhbi1mbG9hdC5tYXQtZm9ybS1maWVsZC1zaG91bGQtZmxvYXRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2Utb3V0bGluZS5tYXQtZm9ybS1maWVsZC1jYW4tZmxvYXRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pbnB1dC1zZXJ2ZXJbX25nY29udGVudC0lQ09NUCVdOmZvY3VzICsgLm1hdC1mb3JtLWZpZWxkLWxhYmVsLXdyYXBwZXJbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXt0cmFuc2Zvcm06dHJhbnNsYXRlWSgtMS41OTM3NWVtKSBzY2FsZSgwLjc1KTt3aWR0aDoxMzMuMzMzMzMzMzMzMyV9Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2Utb3V0bGluZS5tYXQtZm9ybS1maWVsZC1jYW4tZmxvYXRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pbnB1dC1zZXJ2ZXJbbGFiZWxdW19uZ2NvbnRlbnQtJUNPTVAlXTpub3QoOmxhYmVsLXNob3duKSArIC5tYXQtZm9ybS1maWVsZC1sYWJlbC13cmFwcGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17dHJhbnNmb3JtOnRyYW5zbGF0ZVkoLTEuNTkzNzRlbSkgc2NhbGUoMC43NSk7d2lkdGg6MTMzLjMzMzM0MzMzMzMlfS5tYXQtZ3JpZC10aWxlLWhlYWRlcltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtZ3JpZC10aWxlLWZvb3Rlcltfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjE0cHh9Lm1hdC1ncmlkLXRpbGUtaGVhZGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGluZVtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtZ3JpZC10aWxlLWZvb3Rlcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpbmVbX25nY29udGVudC0lQ09NUCVde3doaXRlLXNwYWNlOm5vd3JhcDtvdmVyZmxvdzpoaWRkZW47dGV4dC1vdmVyZmxvdzplbGxpcHNpcztkaXNwbGF5OmJsb2NrO2JveC1zaXppbmc6Ym9yZGVyLWJveH0ubWF0LWdyaWQtdGlsZS1oZWFkZXJbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saW5lW19uZ2NvbnRlbnQtJUNPTVAlXTpudGgtY2hpbGQobisyKSwgLm1hdC1ncmlkLXRpbGUtZm9vdGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGluZVtfbmdjb250ZW50LSVDT01QJV06bnRoLWNoaWxkKG4rMil7Zm9udC1zaXplOjEycHh9aW5wdXQubWF0LWlucHV0LWVsZW1lbnRbX25nY29udGVudC0lQ09NUCVde21hcmdpbi10b3A6LTAuMDYyNWVtfS5tYXQtbWVudS1pdGVtW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7Zm9udC1zaXplOjE0cHg7Zm9udC13ZWlnaHQ6NDAwfS5tYXQtcGFnaW5hdG9yW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1wYWdpbmF0b3ItcGFnZS1zaXplW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtc2VsZWN0LXRyaWdnZXJbX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtmb250LXNpemU6MTJweH0ubWF0LXJhZGlvLWJ1dHRvbltfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmfS5tYXQtc2VsZWN0W19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWZ9Lm1hdC1zZWxlY3QtdHJpZ2dlcltfbmdjb250ZW50LSVDT01QJV17aGVpZ2h0OjEuMTI1ZW19Lm1hdC1zbGlkZS10b2dnbGUtY29udGVudFtfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmfS5tYXQtc2xpZGVyLXRodW1iLWxhYmVsLXRleHRbX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtmb250LXNpemU6MTJweDtmb250LXdlaWdodDo1MDB9Lm1hdC1zdGVwcGVyLXZlcnRpY2FsW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1zdGVwcGVyLWhvcml6b250YWxbX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZn0ubWF0LXN0ZXAtbGFiZWxbX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToxNHB4O2ZvbnQtd2VpZ2h0OjQwMH0ubWF0LXN0ZXAtc3ViLWxhYmVsLWVycm9yW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXdlaWdodDpub3JtYWx9Lm1hdC1zdGVwLWxhYmVsLWVycm9yW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MTRweH0ubWF0LXN0ZXAtbGFiZWwtc2VsZWN0ZWRbX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToxNHB4O2ZvbnQtd2VpZ2h0OjUwMH0ubWF0LXRhYi1ncm91cFtfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmfS5tYXQtdGFiLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10YWItbGlua1tfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2ZvbnQtc2l6ZToxNHB4O2ZvbnQtd2VpZ2h0OjUwMH0ubWF0LXRvb2xiYXJbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXRvb2xiYXJbX25nY29udGVudC0lQ09NUCVdICAgaDFbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXRvb2xiYXJbX25nY29udGVudC0lQ09NUCVdICAgaDJbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXRvb2xiYXJbX25nY29udGVudC0lQ09NUCVdICAgaDNbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXRvb2xiYXJbX25nY29udGVudC0lQ09NUCVdICAgaDRbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXRvb2xiYXJbX25nY29udGVudC0lQ09NUCVdICAgaDVbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXRvb2xiYXJbX25nY29udGVudC0lQ09NUCVdICAgaDZbX25nY29udGVudC0lQ09NUCVde2ZvbnQ6NTAwIDIwcHgvMzJweCBSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7bGV0dGVyLXNwYWNpbmc6bm9ybWFsO21hcmdpbjowfS5tYXQtdG9vbHRpcFtfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2ZvbnQtc2l6ZToxMHB4O3BhZGRpbmctdG9wOjZweDtwYWRkaW5nLWJvdHRvbTo2cHh9Lm1hdC10b29sdGlwLWhhbmRzZXRbX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToxNHB4O3BhZGRpbmctdG9wOjhweDtwYWRkaW5nLWJvdHRvbTo4cHh9Lm1hdC1saXN0LWl0ZW1bX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZn0ubWF0LWxpc3Qtb3B0aW9uW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWZ9Lm1hdC1saXN0LWJhc2VbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saXN0LWl0ZW1bX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToxNnB4fS5tYXQtbGlzdC1iYXNlW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGlzdC1pdGVtW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGluZVtfbmdjb250ZW50LSVDT01QJV17d2hpdGUtc3BhY2U6bm93cmFwO292ZXJmbG93OmhpZGRlbjt0ZXh0LW92ZXJmbG93OmVsbGlwc2lzO2Rpc3BsYXk6YmxvY2s7Ym94LXNpemluZzpib3JkZXItYm94fS5tYXQtbGlzdC1iYXNlW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGlzdC1pdGVtW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGluZVtfbmdjb250ZW50LSVDT01QJV06bnRoLWNoaWxkKG4rMil7Zm9udC1zaXplOjE0cHh9Lm1hdC1saXN0LWJhc2VbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saXN0LW9wdGlvbltfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjE2cHh9Lm1hdC1saXN0LWJhc2VbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saXN0LW9wdGlvbltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpbmVbX25nY29udGVudC0lQ09NUCVde3doaXRlLXNwYWNlOm5vd3JhcDtvdmVyZmxvdzpoaWRkZW47dGV4dC1vdmVyZmxvdzplbGxpcHNpcztkaXNwbGF5OmJsb2NrO2JveC1zaXppbmc6Ym9yZGVyLWJveH0ubWF0LWxpc3QtYmFzZVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpc3Qtb3B0aW9uW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGluZVtfbmdjb250ZW50LSVDT01QJV06bnRoLWNoaWxkKG4rMil7Zm9udC1zaXplOjE0cHh9Lm1hdC1saXN0LWJhc2VbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1zdWJoZWFkZXJbX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtmb250LXNpemU6MTRweDtmb250LXdlaWdodDo1MDB9Lm1hdC1saXN0LWJhc2VbZGVuc2VdW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGlzdC1pdGVtW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MTJweH0ubWF0LWxpc3QtYmFzZVtkZW5zZV1bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saXN0LWl0ZW1bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saW5lW19uZ2NvbnRlbnQtJUNPTVAlXXt3aGl0ZS1zcGFjZTpub3dyYXA7b3ZlcmZsb3c6aGlkZGVuO3RleHQtb3ZlcmZsb3c6ZWxsaXBzaXM7ZGlzcGxheTpibG9jaztib3gtc2l6aW5nOmJvcmRlci1ib3h9Lm1hdC1saXN0LWJhc2VbZGVuc2VdW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGlzdC1pdGVtW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGluZVtfbmdjb250ZW50LSVDT01QJV06bnRoLWNoaWxkKG4rMil7Zm9udC1zaXplOjEycHh9Lm1hdC1saXN0LWJhc2VbZGVuc2VdW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGlzdC1vcHRpb25bX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToxMnB4fS5tYXQtbGlzdC1iYXNlW2RlbnNlXVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpc3Qtb3B0aW9uW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGluZVtfbmdjb250ZW50LSVDT01QJV17d2hpdGUtc3BhY2U6bm93cmFwO292ZXJmbG93OmhpZGRlbjt0ZXh0LW92ZXJmbG93OmVsbGlwc2lzO2Rpc3BsYXk6YmxvY2s7Ym94LXNpemluZzpib3JkZXItYm94fS5tYXQtbGlzdC1iYXNlW2RlbnNlXVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpc3Qtb3B0aW9uW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGluZVtfbmdjb250ZW50LSVDT01QJV06bnRoLWNoaWxkKG4rMil7Zm9udC1zaXplOjEycHh9Lm1hdC1saXN0LWJhc2VbZGVuc2VdW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtc3ViaGVhZGVyW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7Zm9udC1zaXplOjEycHg7Zm9udC13ZWlnaHQ6NTAwfS5tYXQtb3B0aW9uW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7Zm9udC1zaXplOjE2cHh9Lm1hdC1vcHRncm91cC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17Zm9udDo1MDAgMTRweC8yNHB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtsZXR0ZXItc3BhY2luZzpub3JtYWx9Lm1hdC1zaW1wbGUtc25hY2tiYXJbX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtmb250LXNpemU6MTRweH0ubWF0LXNpbXBsZS1zbmFja2Jhci1hY3Rpb25bX25nY29udGVudC0lQ09NUCVde2xpbmUtaGVpZ2h0OjE7Zm9udC1mYW1pbHk6aW5oZXJpdDtmb250LXNpemU6aW5oZXJpdDtmb250LXdlaWdodDo1MDB9Lm1hdC10cmVlW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWZ9Lm1hdC10cmVlLW5vZGVbX25nY29udGVudC0lQ09NUCVdLCAubWF0LW5lc3RlZC10cmVlLW5vZGVbX25nY29udGVudC0lQ09NUCVde2ZvbnQtd2VpZ2h0OjQwMDtmb250LXNpemU6MTRweH0ubWF0LXJpcHBsZVtfbmdjb250ZW50LSVDT01QJV17b3ZlcmZsb3c6aGlkZGVuO3Bvc2l0aW9uOnJlbGF0aXZlfS5tYXQtcmlwcGxlW19uZ2NvbnRlbnQtJUNPTVAlXTpub3QoOmVtcHR5KXt0cmFuc2Zvcm06dHJhbnNsYXRlWigwKX0ubWF0LXJpcHBsZS5tYXQtcmlwcGxlLXVuYm91bmRlZFtfbmdjb250ZW50LSVDT01QJV17b3ZlcmZsb3c6dmlzaWJsZX0ubWF0LXJpcHBsZS1lbGVtZW50W19uZ2NvbnRlbnQtJUNPTVAlXXtwb3NpdGlvbjphYnNvbHV0ZTtib3JkZXItcmFkaXVzOjUwJTtwb2ludGVyLWV2ZW50czpub25lO3RyYW5zaXRpb246b3BhY2l0eSx0cmFuc2Zvcm0gMG1zIGN1YmljLWJlemllcigwLCAwLCAwLjIsIDEpO3RyYW5zZm9ybTpzY2FsZSgwKX0uY2RrLWhpZ2gtY29udHJhc3QtYWN0aXZlW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtcmlwcGxlLWVsZW1lbnRbX25nY29udGVudC0lQ09NUCVde2Rpc3BsYXk6bm9uZX0uY2RrLXZpc3VhbGx5LWhpZGRlbltfbmdjb250ZW50LSVDT01QJV17Ym9yZGVyOjA7Y2xpcDpyZWN0KDAgMCAwIDApO2hlaWdodDoxcHg7bWFyZ2luOi0xcHg7b3ZlcmZsb3c6aGlkZGVuO3BhZGRpbmc6MDtwb3NpdGlvbjphYnNvbHV0ZTt3aWR0aDoxcHg7b3V0bGluZTowOy13ZWJraXQtYXBwZWFyYW5jZTpub25lOy1tb3otYXBwZWFyYW5jZTpub25lfS5jZGstb3ZlcmxheS1jb250YWluZXJbX25nY29udGVudC0lQ09NUCVdLCAuY2RrLWdsb2JhbC1vdmVybGF5LXdyYXBwZXJbX25nY29udGVudC0lQ09NUCVde3BvaW50ZXItZXZlbnRzOm5vbmU7dG9wOjA7bGVmdDowO2hlaWdodDoxMDAlO3dpZHRoOjEwMCV9LmNkay1vdmVybGF5LWNvbnRhaW5lcltfbmdjb250ZW50LSVDT01QJV17cG9zaXRpb246Zml4ZWQ7ei1pbmRleDoxMDAwfS5jZGstb3ZlcmxheS1jb250YWluZXJbX25nY29udGVudC0lQ09NUCVdOmVtcHR5e2Rpc3BsYXk6bm9uZX0uY2RrLWdsb2JhbC1vdmVybGF5LXdyYXBwZXJbX25nY29udGVudC0lQ09NUCVde2Rpc3BsYXk6ZmxleDtwb3NpdGlvbjphYnNvbHV0ZTt6LWluZGV4OjEwMDB9LmNkay1vdmVybGF5LXBhbmVbX25nY29udGVudC0lQ09NUCVde3Bvc2l0aW9uOmFic29sdXRlO3BvaW50ZXItZXZlbnRzOmF1dG87Ym94LXNpemluZzpib3JkZXItYm94O3otaW5kZXg6MTAwMDtkaXNwbGF5OmZsZXg7bWF4LXdpZHRoOjEwMCU7bWF4LWhlaWdodDoxMDAlfS5jZGstb3ZlcmxheS1iYWNrZHJvcFtfbmdjb250ZW50LSVDT01QJV17cG9zaXRpb246YWJzb2x1dGU7dG9wOjA7Ym90dG9tOjA7bGVmdDowO3JpZ2h0OjA7ei1pbmRleDoxMDAwO3BvaW50ZXItZXZlbnRzOmF1dG87LXdlYmtpdC10YXAtaGlnaGxpZ2h0LWNvbG9yOnRyYW5zcGFyZW50O3RyYW5zaXRpb246b3BhY2l0eSA0MDBtcyBjdWJpYy1iZXppZXIoMC4yNSwgMC44LCAwLjI1LCAxKTtvcGFjaXR5OjB9LmNkay1vdmVybGF5LWJhY2tkcm9wLmNkay1vdmVybGF5LWJhY2tkcm9wLXNob3dpbmdbX25nY29udGVudC0lQ09NUCVde29wYWNpdHk6MX1AbWVkaWEgc2NyZWVuIGFuZCAoLW1zLWhpZ2gtY29udHJhc3Q6IGFjdGl2ZSl7LmNkay1vdmVybGF5LWJhY2tkcm9wLmNkay1vdmVybGF5LWJhY2tkcm9wLXNob3dpbmdbX25nY29udGVudC0lQ09NUCVde29wYWNpdHk6LjZ9fS5jZGstb3ZlcmxheS1kYXJrLWJhY2tkcm9wW19uZ2NvbnRlbnQtJUNPTVAlXXtiYWNrZ3JvdW5kOnJnYmEoMCwwLDAsLjMyKX0uY2RrLW92ZXJsYXktdHJhbnNwYXJlbnQtYmFja2Ryb3BbX25nY29udGVudC0lQ09NUCVdLCAuY2RrLW92ZXJsYXktdHJhbnNwYXJlbnQtYmFja2Ryb3AuY2RrLW92ZXJsYXktYmFja2Ryb3Atc2hvd2luZ1tfbmdjb250ZW50LSVDT01QJV17b3BhY2l0eTowfS5jZGstb3ZlcmxheS1jb25uZWN0ZWQtcG9zaXRpb24tYm91bmRpbmctYm94W19uZ2NvbnRlbnQtJUNPTVAlXXtwb3NpdGlvbjphYnNvbHV0ZTt6LWluZGV4OjEwMDA7ZGlzcGxheTpmbGV4O2ZsZXgtZGlyZWN0aW9uOmNvbHVtbjttaW4td2lkdGg6MXB4O21pbi1oZWlnaHQ6MXB4fS5jZGstZ2xvYmFsLXNjcm9sbGJsb2NrW19uZ2NvbnRlbnQtJUNPTVAlXXtwb3NpdGlvbjpmaXhlZDt3aWR0aDoxMDAlO292ZXJmbG93LXk6c2Nyb2xsfUBrZXlmcmFtZXMgY2RrLXRleHQtZmllbGQtYXV0b2ZpbGwtc3RhcnR7fUBrZXlmcmFtZXMgY2RrLXRleHQtZmllbGQtYXV0b2ZpbGwtZW5ke30uY2RrLXRleHQtZmllbGQtYXV0b2ZpbGwtbW9uaXRvcmVkW19uZ2NvbnRlbnQtJUNPTVAlXTotd2Via2l0LWF1dG9maWxse2FuaW1hdGlvbjpjZGstdGV4dC1maWVsZC1hdXRvZmlsbC1zdGFydCAwcyAxbXN9LmNkay10ZXh0LWZpZWxkLWF1dG9maWxsLW1vbml0b3JlZFtfbmdjb250ZW50LSVDT01QJV06bm90KDotd2Via2l0LWF1dG9maWxsKXthbmltYXRpb246Y2RrLXRleHQtZmllbGQtYXV0b2ZpbGwtZW5kIDBzIDFtc310ZXh0YXJlYS5jZGstdGV4dGFyZWEtYXV0b3NpemVbX25nY29udGVudC0lQ09NUCVde3Jlc2l6ZTpub25lfXRleHRhcmVhLmNkay10ZXh0YXJlYS1hdXRvc2l6ZS1tZWFzdXJpbmdbX25nY29udGVudC0lQ09NUCVde3BhZGRpbmc6MnB4IDAgIWltcG9ydGFudDtib3gtc2l6aW5nOmNvbnRlbnQtYm94ICFpbXBvcnRhbnQ7aGVpZ2h0OmF1dG8gIWltcG9ydGFudDtvdmVyZmxvdzpoaWRkZW4gIWltcG9ydGFudH10ZXh0YXJlYS5jZGstdGV4dGFyZWEtYXV0b3NpemUtbWVhc3VyaW5nLWZpcmVmb3hbX25nY29udGVudC0lQ09NUCVde3BhZGRpbmc6MnB4IDAgIWltcG9ydGFudDtib3gtc2l6aW5nOmNvbnRlbnQtYm94ICFpbXBvcnRhbnQ7aGVpZ2h0OjAgIWltcG9ydGFudH0ubWF0LWZvY3VzLWluZGljYXRvcltfbmdjb250ZW50LSVDT01QJV17cG9zaXRpb246cmVsYXRpdmV9Lm1hdC1tZGMtZm9jdXMtaW5kaWNhdG9yW19uZ2NvbnRlbnQtJUNPTVAlXXtwb3NpdGlvbjpyZWxhdGl2ZX0ubWF0LXJpcHBsZS1lbGVtZW50W19uZ2NvbnRlbnQtJUNPTVAlXXtiYWNrZ3JvdW5kLWNvbG9yOnJnYmEoMCwwLDAsLjEpfS5tYXQtb3B0aW9uW19uZ2NvbnRlbnQtJUNPTVAlXXtjb2xvcjojMjEyMTIxfS5tYXQtb3B0aW9uW19uZ2NvbnRlbnQtJUNPTVAlXTpob3Zlcjpub3QoLm1hdC1vcHRpb24tZGlzYWJsZWQpLCAubWF0LW9wdGlvbltfbmdjb250ZW50LSVDT01QJV06Zm9jdXM6bm90KC5tYXQtb3B0aW9uLWRpc2FibGVkKXtiYWNrZ3JvdW5kOnJnYmEoMCwwLDAsLjA0KX0ubWF0LW9wdGlvbi5tYXQtc2VsZWN0ZWRbX25nY29udGVudC0lQ09NUCVdOm5vdCgubWF0LW9wdGlvbi1tdWx0aXBsZSk6bm90KC5tYXQtb3B0aW9uLWRpc2FibGVkKXtiYWNrZ3JvdW5kOnJnYmEoMCwwLDAsLjA0KX0ubWF0LW9wdGlvbi5tYXQtYWN0aXZlW19uZ2NvbnRlbnQtJUNPTVAlXXtiYWNrZ3JvdW5kOnJnYmEoMCwwLDAsLjA0KTtjb2xvcjojMjEyMTIxfS5tYXQtb3B0aW9uLm1hdC1vcHRpb24tZGlzYWJsZWRbX25nY29udGVudC0lQ09NUCVde2NvbG9yOnJnYmEoMCwwLDAsLjM4KX0ubWF0LXByaW1hcnlbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1vcHRpb24ubWF0LXNlbGVjdGVkW19uZ2NvbnRlbnQtJUNPTVAlXTpub3QoLm1hdC1vcHRpb24tZGlzYWJsZWQpe2NvbG9yOiNmNTdjMDB9Lm1hdC1hY2NlbnRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1vcHRpb24ubWF0LXNlbGVjdGVkW19uZ2NvbnRlbnQtJUNPTVAlXTpub3QoLm1hdC1vcHRpb24tZGlzYWJsZWQpe2NvbG9yOiNmZjk4MDB9Lm1hdC13YXJuW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtb3B0aW9uLm1hdC1zZWxlY3RlZFtfbmdjb250ZW50LSVDT01QJV06bm90KC5tYXQtb3B0aW9uLWRpc2FibGVkKXtjb2xvcjojZjQ0MzM2fS5tYXQtb3B0Z3JvdXAtbGFiZWxbX25nY29udGVudC0lQ09NUCVde2NvbG9yOiM2MTYxNjF9Lm1hdC1vcHRncm91cC1kaXNhYmxlZFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LW9wdGdyb3VwLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXtjb2xvcjpyZ2JhKDAsMCwwLC4zOCl9Lm1hdC1wc2V1ZG8tY2hlY2tib3hbX25nY29udGVudC0lQ09NUCVde2NvbG9yOiM2MTYxNjF9Lm1hdC1wc2V1ZG8tY2hlY2tib3hbX25nY29udGVudC0lQ09NUCVdOjphZnRlcntjb2xvcjojZmFmYWZhfS5tYXQtcHNldWRvLWNoZWNrYm94LWRpc2FibGVkW19uZ2NvbnRlbnQtJUNPTVAlXXtjb2xvcjojYjBiMGIwfS5tYXQtcHJpbWFyeVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXBzZXVkby1jaGVja2JveC1jaGVja2VkW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1wcmltYXJ5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtcHNldWRvLWNoZWNrYm94LWluZGV0ZXJtaW5hdGVbX25nY29udGVudC0lQ09NUCVde2JhY2tncm91bmQ6I2Y1N2MwMH0ubWF0LXBzZXVkby1jaGVja2JveC1jaGVja2VkW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1wc2V1ZG8tY2hlY2tib3gtaW5kZXRlcm1pbmF0ZVtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtYWNjZW50W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtcHNldWRvLWNoZWNrYm94LWNoZWNrZWRbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWFjY2VudFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXBzZXVkby1jaGVja2JveC1pbmRldGVybWluYXRlW19uZ2NvbnRlbnQtJUNPTVAlXXtiYWNrZ3JvdW5kOiNmZjk4MDB9Lm1hdC13YXJuW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtcHNldWRvLWNoZWNrYm94LWNoZWNrZWRbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXdhcm5bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1wc2V1ZG8tY2hlY2tib3gtaW5kZXRlcm1pbmF0ZVtfbmdjb250ZW50LSVDT01QJV17YmFja2dyb3VuZDojZjQ0MzM2fS5tYXQtcHNldWRvLWNoZWNrYm94LWNoZWNrZWQubWF0LXBzZXVkby1jaGVja2JveC1kaXNhYmxlZFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtcHNldWRvLWNoZWNrYm94LWluZGV0ZXJtaW5hdGUubWF0LXBzZXVkby1jaGVja2JveC1kaXNhYmxlZFtfbmdjb250ZW50LSVDT01QJV17YmFja2dyb3VuZDojYjBiMGIwfS5tYXQtYXBwLWJhY2tncm91bmRbX25nY29udGVudC0lQ09NUCVde2JhY2tncm91bmQtY29sb3I6I2ZhZmFmYTtjb2xvcjojMjEyMTIxfS5tYXQtZWxldmF0aW9uLXowW19uZ2NvbnRlbnQtJUNPTVAlXXtib3gtc2hhZG93OjBweCAwcHggMHB4IDBweCByZ2JhKDAsIDAsIDAsIDAuMiksMHB4IDBweCAwcHggMHB4IHJnYmEoMCwgMCwgMCwgMC4xNCksMHB4IDBweCAwcHggMHB4IHJnYmEoMCwgMCwgMCwgMC4xMil9Lm1hdC1lbGV2YXRpb24tejFbX25nY29udGVudC0lQ09NUCVde2JveC1zaGFkb3c6MHB4IDJweCAxcHggLTFweCByZ2JhKDAsIDAsIDAsIDAuMiksMHB4IDFweCAxcHggMHB4IHJnYmEoMCwgMCwgMCwgMC4xNCksMHB4IDFweCAzcHggMHB4IHJnYmEoMCwgMCwgMCwgMC4xMil9Lm1hdC1lbGV2YXRpb24tejJbX25nY29udGVudC0lQ09NUCVde2JveC1zaGFkb3c6MHB4IDNweCAxcHggLTJweCByZ2JhKDAsIDAsIDAsIDAuMiksMHB4IDJweCAycHggMHB4IHJnYmEoMCwgMCwgMCwgMC4xNCksMHB4IDFweCA1cHggMHB4IHJnYmEoMCwgMCwgMCwgMC4xMil9Lm1hdC1lbGV2YXRpb24tejNbX25nY29udGVudC0lQ09NUCVde2JveC1zaGFkb3c6MHB4IDNweCAzcHggLTJweCByZ2JhKDAsIDAsIDAsIDAuMiksMHB4IDNweCA0cHggMHB4IHJnYmEoMCwgMCwgMCwgMC4xNCksMHB4IDFweCA4cHggMHB4IHJnYmEoMCwgMCwgMCwgMC4xMil9Lm1hdC1lbGV2YXRpb24tejRbX25nY29udGVudC0lQ09NUCVde2JveC1zaGFkb3c6MHB4IDJweCA0cHggLTFweCByZ2JhKDAsIDAsIDAsIDAuMiksMHB4IDRweCA1cHggMHB4IHJnYmEoMCwgMCwgMCwgMC4xNCksMHB4IDFweCAxMHB4IDBweCByZ2JhKDAsIDAsIDAsIDAuMTIpfS5tYXQtZWxldmF0aW9uLXo1W19uZ2NvbnRlbnQtJUNPTVAlXXtib3gtc2hhZG93OjBweCAzcHggNXB4IC0xcHggcmdiYSgwLCAwLCAwLCAwLjIpLDBweCA1cHggOHB4IDBweCByZ2JhKDAsIDAsIDAsIDAuMTQpLDBweCAxcHggMTRweCAwcHggcmdiYSgwLCAwLCAwLCAwLjEyKX0ubWF0LWVsZXZhdGlvbi16Nltfbmdjb250ZW50LSVDT01QJV17Ym94LXNoYWRvdzowcHggM3B4IDVweCAtMXB4IHJnYmEoMCwgMCwgMCwgMC4yKSwwcHggNnB4IDEwcHggMHB4IHJnYmEoMCwgMCwgMCwgMC4xNCksMHB4IDFweCAxOHB4IDBweCByZ2JhKDAsIDAsIDAsIDAuMTIpfS5tYXQtZWxldmF0aW9uLXo3W19uZ2NvbnRlbnQtJUNPTVAlXXtib3gtc2hhZG93OjBweCA0cHggNXB4IC0ycHggcmdiYSgwLCAwLCAwLCAwLjIpLDBweCA3cHggMTBweCAxcHggcmdiYSgwLCAwLCAwLCAwLjE0KSwwcHggMnB4IDE2cHggMXB4IHJnYmEoMCwgMCwgMCwgMC4xMil9Lm1hdC1lbGV2YXRpb24tejhbX25nY29udGVudC0lQ09NUCVde2JveC1zaGFkb3c6MHB4IDVweCA1cHggLTNweCByZ2JhKDAsIDAsIDAsIDAuMiksMHB4IDhweCAxMHB4IDFweCByZ2JhKDAsIDAsIDAsIDAuMTQpLDBweCAzcHggMTRweCAycHggcmdiYSgwLCAwLCAwLCAwLjEyKX0ubWF0LWVsZXZhdGlvbi16OVtfbmdjb250ZW50LSVDT01QJV17Ym94LXNoYWRvdzowcHggNXB4IDZweCAtM3B4IHJnYmEoMCwgMCwgMCwgMC4yKSwwcHggOXB4IDEycHggMXB4IHJnYmEoMCwgMCwgMCwgMC4xNCksMHB4IDNweCAxNnB4IDJweCByZ2JhKDAsIDAsIDAsIDAuMTIpfS5tYXQtZWxldmF0aW9uLXoxMFtfbmdjb250ZW50LSVDT01QJV17Ym94LXNoYWRvdzowcHggNnB4IDZweCAtM3B4IHJnYmEoMCwgMCwgMCwgMC4yKSwwcHggMTBweCAxNHB4IDFweCByZ2JhKDAsIDAsIDAsIDAuMTQpLDBweCA0cHggMThweCAzcHggcmdiYSgwLCAwLCAwLCAwLjEyKX0ubWF0LWVsZXZhdGlvbi16MTFbX25nY29udGVudC0lQ09NUCVde2JveC1zaGFkb3c6MHB4IDZweCA3cHggLTRweCByZ2JhKDAsIDAsIDAsIDAuMiksMHB4IDExcHggMTVweCAxcHggcmdiYSgwLCAwLCAwLCAwLjE0KSwwcHggNHB4IDIwcHggM3B4IHJnYmEoMCwgMCwgMCwgMC4xMil9Lm1hdC1lbGV2YXRpb24tejEyW19uZ2NvbnRlbnQtJUNPTVAlXXtib3gtc2hhZG93OjBweCA3cHggOHB4IC00cHggcmdiYSgwLCAwLCAwLCAwLjIpLDBweCAxMnB4IDE3cHggMnB4IHJnYmEoMCwgMCwgMCwgMC4xNCksMHB4IDVweCAyMnB4IDRweCByZ2JhKDAsIDAsIDAsIDAuMTIpfS5tYXQtZWxldmF0aW9uLXoxM1tfbmdjb250ZW50LSVDT01QJV17Ym94LXNoYWRvdzowcHggN3B4IDhweCAtNHB4IHJnYmEoMCwgMCwgMCwgMC4yKSwwcHggMTNweCAxOXB4IDJweCByZ2JhKDAsIDAsIDAsIDAuMTQpLDBweCA1cHggMjRweCA0cHggcmdiYSgwLCAwLCAwLCAwLjEyKX0ubWF0LWVsZXZhdGlvbi16MTRbX25nY29udGVudC0lQ09NUCVde2JveC1zaGFkb3c6MHB4IDdweCA5cHggLTRweCByZ2JhKDAsIDAsIDAsIDAuMiksMHB4IDE0cHggMjFweCAycHggcmdiYSgwLCAwLCAwLCAwLjE0KSwwcHggNXB4IDI2cHggNHB4IHJnYmEoMCwgMCwgMCwgMC4xMil9Lm1hdC1lbGV2YXRpb24tejE1W19uZ2NvbnRlbnQtJUNPTVAlXXtib3gtc2hhZG93OjBweCA4cHggOXB4IC01cHggcmdiYSgwLCAwLCAwLCAwLjIpLDBweCAxNXB4IDIycHggMnB4IHJnYmEoMCwgMCwgMCwgMC4xNCksMHB4IDZweCAyOHB4IDVweCByZ2JhKDAsIDAsIDAsIDAuMTIpfS5tYXQtZWxldmF0aW9uLXoxNltfbmdjb250ZW50LSVDT01QJV17Ym94LXNoYWRvdzowcHggOHB4IDEwcHggLTVweCByZ2JhKDAsIDAsIDAsIDAuMiksMHB4IDE2cHggMjRweCAycHggcmdiYSgwLCAwLCAwLCAwLjE0KSwwcHggNnB4IDMwcHggNXB4IHJnYmEoMCwgMCwgMCwgMC4xMil9Lm1hdC1lbGV2YXRpb24tejE3W19uZ2NvbnRlbnQtJUNPTVAlXXtib3gtc2hhZG93OjBweCA4cHggMTFweCAtNXB4IHJnYmEoMCwgMCwgMCwgMC4yKSwwcHggMTdweCAyNnB4IDJweCByZ2JhKDAsIDAsIDAsIDAuMTQpLDBweCA2cHggMzJweCA1cHggcmdiYSgwLCAwLCAwLCAwLjEyKX0ubWF0LWVsZXZhdGlvbi16MThbX25nY29udGVudC0lQ09NUCVde2JveC1zaGFkb3c6MHB4IDlweCAxMXB4IC01cHggcmdiYSgwLCAwLCAwLCAwLjIpLDBweCAxOHB4IDI4cHggMnB4IHJnYmEoMCwgMCwgMCwgMC4xNCksMHB4IDdweCAzNHB4IDZweCByZ2JhKDAsIDAsIDAsIDAuMTIpfS5tYXQtZWxldmF0aW9uLXoxOVtfbmdjb250ZW50LSVDT01QJV17Ym94LXNoYWRvdzowcHggOXB4IDEycHggLTZweCByZ2JhKDAsIDAsIDAsIDAuMiksMHB4IDE5cHggMjlweCAycHggcmdiYSgwLCAwLCAwLCAwLjE0KSwwcHggN3B4IDM2cHggNnB4IHJnYmEoMCwgMCwgMCwgMC4xMil9Lm1hdC1lbGV2YXRpb24tejIwW19uZ2NvbnRlbnQtJUNPTVAlXXtib3gtc2hhZG93OjBweCAxMHB4IDEzcHggLTZweCByZ2JhKDAsIDAsIDAsIDAuMiksMHB4IDIwcHggMzFweCAzcHggcmdiYSgwLCAwLCAwLCAwLjE0KSwwcHggOHB4IDM4cHggN3B4IHJnYmEoMCwgMCwgMCwgMC4xMil9Lm1hdC1lbGV2YXRpb24tejIxW19uZ2NvbnRlbnQtJUNPTVAlXXtib3gtc2hhZG93OjBweCAxMHB4IDEzcHggLTZweCByZ2JhKDAsIDAsIDAsIDAuMiksMHB4IDIxcHggMzNweCAzcHggcmdiYSgwLCAwLCAwLCAwLjE0KSwwcHggOHB4IDQwcHggN3B4IHJnYmEoMCwgMCwgMCwgMC4xMil9Lm1hdC1lbGV2YXRpb24tejIyW19uZ2NvbnRlbnQtJUNPTVAlXXtib3gtc2hhZG93OjBweCAxMHB4IDE0cHggLTZweCByZ2JhKDAsIDAsIDAsIDAuMiksMHB4IDIycHggMzVweCAzcHggcmdiYSgwLCAwLCAwLCAwLjE0KSwwcHggOHB4IDQycHggN3B4IHJnYmEoMCwgMCwgMCwgMC4xMil9Lm1hdC1lbGV2YXRpb24tejIzW19uZ2NvbnRlbnQtJUNPTVAlXXtib3gtc2hhZG93OjBweCAxMXB4IDE0cHggLTdweCByZ2JhKDAsIDAsIDAsIDAuMiksMHB4IDIzcHggMzZweCAzcHggcmdiYSgwLCAwLCAwLCAwLjE0KSwwcHggOXB4IDQ0cHggOHB4IHJnYmEoMCwgMCwgMCwgMC4xMil9Lm1hdC1lbGV2YXRpb24tejI0W19uZ2NvbnRlbnQtJUNPTVAlXXtib3gtc2hhZG93OjBweCAxMXB4IDE1cHggLTdweCByZ2JhKDAsIDAsIDAsIDAuMiksMHB4IDI0cHggMzhweCAzcHggcmdiYSgwLCAwLCAwLCAwLjE0KSwwcHggOXB4IDQ2cHggOHB4IHJnYmEoMCwgMCwgMCwgMC4xMil9Lm1hdC10aGVtZS1sb2FkZWQtbWFya2VyW19uZ2NvbnRlbnQtJUNPTVAlXXtkaXNwbGF5Om5vbmV9Lm1hdC1hdXRvY29tcGxldGUtcGFuZWxbX25nY29udGVudC0lQ09NUCVde2JhY2tncm91bmQ6I2ZmZjtjb2xvcjojMjEyMTIxfS5tYXQtYXV0b2NvbXBsZXRlLXBhbmVsW19uZ2NvbnRlbnQtJUNPTVAlXTpub3QoW2NsYXNzKj1tYXQtZWxldmF0aW9uLXpdKXtib3gtc2hhZG93OjBweCAycHggNHB4IC0xcHggcmdiYSgwLCAwLCAwLCAwLjIpLDBweCA0cHggNXB4IDBweCByZ2JhKDAsIDAsIDAsIDAuMTQpLDBweCAxcHggMTBweCAwcHggcmdiYSgwLCAwLCAwLCAwLjEyKX0ubWF0LWF1dG9jb21wbGV0ZS1wYW5lbFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LW9wdGlvbi5tYXQtc2VsZWN0ZWRbX25nY29udGVudC0lQ09NUCVdOm5vdCgubWF0LWFjdGl2ZSk6bm90KDpob3Zlcil7YmFja2dyb3VuZDojZmZmfS5tYXQtYXV0b2NvbXBsZXRlLXBhbmVsW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtb3B0aW9uLm1hdC1zZWxlY3RlZFtfbmdjb250ZW50LSVDT01QJV06bm90KC5tYXQtYWN0aXZlKTpub3QoOmhvdmVyKTpub3QoLm1hdC1vcHRpb24tZGlzYWJsZWQpe2NvbG9yOiMyMTIxMjF9Lm1hdC1iYWRnZS1jb250ZW50W19uZ2NvbnRlbnQtJUNPTVAlXXtjb2xvcjojZmZmO2JhY2tncm91bmQ6I2Y1N2MwMH0uY2RrLWhpZ2gtY29udHJhc3QtYWN0aXZlW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtYmFkZ2UtY29udGVudFtfbmdjb250ZW50LSVDT01QJV17b3V0bGluZTpzb2xpZCAxcHg7Ym9yZGVyLXJhZGl1czowfS5tYXQtYmFkZ2UtYWNjZW50W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtYmFkZ2UtY29udGVudFtfbmdjb250ZW50LSVDT01QJV17YmFja2dyb3VuZDojZmY5ODAwO2NvbG9yOiNmZmZ9Lm1hdC1iYWRnZS13YXJuW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtYmFkZ2UtY29udGVudFtfbmdjb250ZW50LSVDT01QJV17Y29sb3I6I2ZmZjtiYWNrZ3JvdW5kOiNmNDQzMzZ9Lm1hdC1iYWRnZVtfbmdjb250ZW50LSVDT01QJV17cG9zaXRpb246cmVsYXRpdmV9Lm1hdC1iYWRnZS1oaWRkZW5bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1iYWRnZS1jb250ZW50W19uZ2NvbnRlbnQtJUNPTVAlXXtkaXNwbGF5Om5vbmV9Lm1hdC1iYWRnZS1kaXNhYmxlZFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWJhZGdlLWNvbnRlbnRbX25nY29udGVudC0lQ09NUCVde2JhY2tncm91bmQ6I2I5YjliOTtjb2xvcjojNzU3NTc1fS5tYXQtYmFkZ2UtY29udGVudFtfbmdjb250ZW50LSVDT01QJV17cG9zaXRpb246YWJzb2x1dGU7dGV4dC1hbGlnbjpjZW50ZXI7ZGlzcGxheTppbmxpbmUtYmxvY2s7Ym9yZGVyLXJhZGl1czo1MCU7dHJhbnNpdGlvbjp0cmFuc2Zvcm0gMjAwbXMgZWFzZS1pbi1vdXQ7dHJhbnNmb3JtOnNjYWxlKDAuNik7b3ZlcmZsb3c6aGlkZGVuO3doaXRlLXNwYWNlOm5vd3JhcDt0ZXh0LW92ZXJmbG93OmVsbGlwc2lzO3BvaW50ZXItZXZlbnRzOm5vbmV9Lm5nLWFuaW1hdGUtZGlzYWJsZWRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1iYWRnZS1jb250ZW50W19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1iYWRnZS1jb250ZW50Ll9tYXQtYW5pbWF0aW9uLW5vb3BhYmxlW19uZ2NvbnRlbnQtJUNPTVAlXXt0cmFuc2l0aW9uOm5vbmV9Lm1hdC1iYWRnZS1jb250ZW50Lm1hdC1iYWRnZS1hY3RpdmVbX25nY29udGVudC0lQ09NUCVde3RyYW5zZm9ybTpub25lfS5tYXQtYmFkZ2Utc21hbGxbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1iYWRnZS1jb250ZW50W19uZ2NvbnRlbnQtJUNPTVAlXXt3aWR0aDoxNnB4O2hlaWdodDoxNnB4O2xpbmUtaGVpZ2h0OjE2cHh9Lm1hdC1iYWRnZS1zbWFsbC5tYXQtYmFkZ2UtYWJvdmVbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1iYWRnZS1jb250ZW50W19uZ2NvbnRlbnQtJUNPTVAlXXt0b3A6LThweH0ubWF0LWJhZGdlLXNtYWxsLm1hdC1iYWRnZS1iZWxvd1tfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWJhZGdlLWNvbnRlbnRbX25nY29udGVudC0lQ09NUCVde2JvdHRvbTotOHB4fS5tYXQtYmFkZ2Utc21hbGwubWF0LWJhZGdlLWJlZm9yZVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWJhZGdlLWNvbnRlbnRbX25nY29udGVudC0lQ09NUCVde2xlZnQ6LTE2cHh9W2Rpcj1ydGxdW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtYmFkZ2Utc21hbGwubWF0LWJhZGdlLWJlZm9yZVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWJhZGdlLWNvbnRlbnRbX25nY29udGVudC0lQ09NUCVde2xlZnQ6YXV0bztyaWdodDotMTZweH0ubWF0LWJhZGdlLXNtYWxsLm1hdC1iYWRnZS1hZnRlcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWJhZGdlLWNvbnRlbnRbX25nY29udGVudC0lQ09NUCVde3JpZ2h0Oi0xNnB4fVtkaXI9cnRsXVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWJhZGdlLXNtYWxsLm1hdC1iYWRnZS1hZnRlcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWJhZGdlLWNvbnRlbnRbX25nY29udGVudC0lQ09NUCVde3JpZ2h0OmF1dG87bGVmdDotMTZweH0ubWF0LWJhZGdlLXNtYWxsLm1hdC1iYWRnZS1vdmVybGFwLm1hdC1iYWRnZS1iZWZvcmVbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1iYWRnZS1jb250ZW50W19uZ2NvbnRlbnQtJUNPTVAlXXtsZWZ0Oi04cHh9W2Rpcj1ydGxdW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtYmFkZ2Utc21hbGwubWF0LWJhZGdlLW92ZXJsYXAubWF0LWJhZGdlLWJlZm9yZVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWJhZGdlLWNvbnRlbnRbX25nY29udGVudC0lQ09NUCVde2xlZnQ6YXV0bztyaWdodDotOHB4fS5tYXQtYmFkZ2Utc21hbGwubWF0LWJhZGdlLW92ZXJsYXAubWF0LWJhZGdlLWFmdGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtYmFkZ2UtY29udGVudFtfbmdjb250ZW50LSVDT01QJV17cmlnaHQ6LThweH1bZGlyPXJ0bF1bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1iYWRnZS1zbWFsbC5tYXQtYmFkZ2Utb3ZlcmxhcC5tYXQtYmFkZ2UtYWZ0ZXJbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1iYWRnZS1jb250ZW50W19uZ2NvbnRlbnQtJUNPTVAlXXtyaWdodDphdXRvO2xlZnQ6LThweH0ubWF0LWJhZGdlLW1lZGl1bVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWJhZGdlLWNvbnRlbnRbX25nY29udGVudC0lQ09NUCVde3dpZHRoOjIycHg7aGVpZ2h0OjIycHg7bGluZS1oZWlnaHQ6MjJweH0ubWF0LWJhZGdlLW1lZGl1bS5tYXQtYmFkZ2UtYWJvdmVbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1iYWRnZS1jb250ZW50W19uZ2NvbnRlbnQtJUNPTVAlXXt0b3A6LTExcHh9Lm1hdC1iYWRnZS1tZWRpdW0ubWF0LWJhZGdlLWJlbG93W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtYmFkZ2UtY29udGVudFtfbmdjb250ZW50LSVDT01QJV17Ym90dG9tOi0xMXB4fS5tYXQtYmFkZ2UtbWVkaXVtLm1hdC1iYWRnZS1iZWZvcmVbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1iYWRnZS1jb250ZW50W19uZ2NvbnRlbnQtJUNPTVAlXXtsZWZ0Oi0yMnB4fVtkaXI9cnRsXVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWJhZGdlLW1lZGl1bS5tYXQtYmFkZ2UtYmVmb3JlW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtYmFkZ2UtY29udGVudFtfbmdjb250ZW50LSVDT01QJV17bGVmdDphdXRvO3JpZ2h0Oi0yMnB4fS5tYXQtYmFkZ2UtbWVkaXVtLm1hdC1iYWRnZS1hZnRlcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWJhZGdlLWNvbnRlbnRbX25nY29udGVudC0lQ09NUCVde3JpZ2h0Oi0yMnB4fVtkaXI9cnRsXVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWJhZGdlLW1lZGl1bS5tYXQtYmFkZ2UtYWZ0ZXJbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1iYWRnZS1jb250ZW50W19uZ2NvbnRlbnQtJUNPTVAlXXtyaWdodDphdXRvO2xlZnQ6LTIycHh9Lm1hdC1iYWRnZS1tZWRpdW0ubWF0LWJhZGdlLW92ZXJsYXAubWF0LWJhZGdlLWJlZm9yZVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWJhZGdlLWNvbnRlbnRbX25nY29udGVudC0lQ09NUCVde2xlZnQ6LTExcHh9W2Rpcj1ydGxdW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtYmFkZ2UtbWVkaXVtLm1hdC1iYWRnZS1vdmVybGFwLm1hdC1iYWRnZS1iZWZvcmVbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1iYWRnZS1jb250ZW50W19uZ2NvbnRlbnQtJUNPTVAlXXtsZWZ0OmF1dG87cmlnaHQ6LTExcHh9Lm1hdC1iYWRnZS1tZWRpdW0ubWF0LWJhZGdlLW92ZXJsYXAubWF0LWJhZGdlLWFmdGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtYmFkZ2UtY29udGVudFtfbmdjb250ZW50LSVDT01QJV17cmlnaHQ6LTExcHh9W2Rpcj1ydGxdW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtYmFkZ2UtbWVkaXVtLm1hdC1iYWRnZS1vdmVybGFwLm1hdC1iYWRnZS1hZnRlcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWJhZGdlLWNvbnRlbnRbX25nY29udGVudC0lQ09NUCVde3JpZ2h0OmF1dG87bGVmdDotMTFweH0ubWF0LWJhZGdlLWxhcmdlW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtYmFkZ2UtY29udGVudFtfbmdjb250ZW50LSVDT01QJV17d2lkdGg6MjhweDtoZWlnaHQ6MjhweDtsaW5lLWhlaWdodDoyOHB4fS5tYXQtYmFkZ2UtbGFyZ2UubWF0LWJhZGdlLWFib3ZlW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtYmFkZ2UtY29udGVudFtfbmdjb250ZW50LSVDT01QJV17dG9wOi0xNHB4fS5tYXQtYmFkZ2UtbGFyZ2UubWF0LWJhZGdlLWJlbG93W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtYmFkZ2UtY29udGVudFtfbmdjb250ZW50LSVDT01QJV17Ym90dG9tOi0xNHB4fS5tYXQtYmFkZ2UtbGFyZ2UubWF0LWJhZGdlLWJlZm9yZVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWJhZGdlLWNvbnRlbnRbX25nY29udGVudC0lQ09NUCVde2xlZnQ6LTI4cHh9W2Rpcj1ydGxdW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtYmFkZ2UtbGFyZ2UubWF0LWJhZGdlLWJlZm9yZVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWJhZGdlLWNvbnRlbnRbX25nY29udGVudC0lQ09NUCVde2xlZnQ6YXV0bztyaWdodDotMjhweH0ubWF0LWJhZGdlLWxhcmdlLm1hdC1iYWRnZS1hZnRlcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWJhZGdlLWNvbnRlbnRbX25nY29udGVudC0lQ09NUCVde3JpZ2h0Oi0yOHB4fVtkaXI9cnRsXVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWJhZGdlLWxhcmdlLm1hdC1iYWRnZS1hZnRlcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWJhZGdlLWNvbnRlbnRbX25nY29udGVudC0lQ09NUCVde3JpZ2h0OmF1dG87bGVmdDotMjhweH0ubWF0LWJhZGdlLWxhcmdlLm1hdC1iYWRnZS1vdmVybGFwLm1hdC1iYWRnZS1iZWZvcmVbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1iYWRnZS1jb250ZW50W19uZ2NvbnRlbnQtJUNPTVAlXXtsZWZ0Oi0xNHB4fVtkaXI9cnRsXVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWJhZGdlLWxhcmdlLm1hdC1iYWRnZS1vdmVybGFwLm1hdC1iYWRnZS1iZWZvcmVbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1iYWRnZS1jb250ZW50W19uZ2NvbnRlbnQtJUNPTVAlXXtsZWZ0OmF1dG87cmlnaHQ6LTE0cHh9Lm1hdC1iYWRnZS1sYXJnZS5tYXQtYmFkZ2Utb3ZlcmxhcC5tYXQtYmFkZ2UtYWZ0ZXJbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1iYWRnZS1jb250ZW50W19uZ2NvbnRlbnQtJUNPTVAlXXtyaWdodDotMTRweH1bZGlyPXJ0bF1bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1iYWRnZS1sYXJnZS5tYXQtYmFkZ2Utb3ZlcmxhcC5tYXQtYmFkZ2UtYWZ0ZXJbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1iYWRnZS1jb250ZW50W19uZ2NvbnRlbnQtJUNPTVAlXXtyaWdodDphdXRvO2xlZnQ6LTE0cHh9Lm1hdC1ib3R0b20tc2hlZXQtY29udGFpbmVyW19uZ2NvbnRlbnQtJUNPTVAlXXtib3gtc2hhZG93OjBweCA4cHggMTBweCAtNXB4IHJnYmEoMCwgMCwgMCwgMC4yKSwwcHggMTZweCAyNHB4IDJweCByZ2JhKDAsIDAsIDAsIDAuMTQpLDBweCA2cHggMzBweCA1cHggcmdiYSgwLCAwLCAwLCAwLjEyKTtiYWNrZ3JvdW5kOiNmZmY7Y29sb3I6IzIxMjEyMX0ubWF0LWJ1dHRvbltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtaWNvbi1idXR0b25bX25nY29udGVudC0lQ09NUCVdLCAubWF0LXN0cm9rZWQtYnV0dG9uW19uZ2NvbnRlbnQtJUNPTVAlXXtjb2xvcjppbmhlcml0O2JhY2tncm91bmQ6dHJhbnNwYXJlbnR9Lm1hdC1idXR0b24ubWF0LXByaW1hcnlbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWljb24tYnV0dG9uLm1hdC1wcmltYXJ5W19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1zdHJva2VkLWJ1dHRvbi5tYXQtcHJpbWFyeVtfbmdjb250ZW50LSVDT01QJV17Y29sb3I6I2Y1N2MwMH0ubWF0LWJ1dHRvbi5tYXQtYWNjZW50W19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1pY29uLWJ1dHRvbi5tYXQtYWNjZW50W19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1zdHJva2VkLWJ1dHRvbi5tYXQtYWNjZW50W19uZ2NvbnRlbnQtJUNPTVAlXXtjb2xvcjojZmY5ODAwfS5tYXQtYnV0dG9uLm1hdC13YXJuW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1pY29uLWJ1dHRvbi5tYXQtd2Fybltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtc3Ryb2tlZC1idXR0b24ubWF0LXdhcm5bX25nY29udGVudC0lQ09NUCVde2NvbG9yOiNmNDQzMzZ9Lm1hdC1idXR0b24ubWF0LXByaW1hcnkubWF0LWJ1dHRvbi1kaXNhYmxlZFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtYnV0dG9uLm1hdC1hY2NlbnQubWF0LWJ1dHRvbi1kaXNhYmxlZFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtYnV0dG9uLm1hdC13YXJuLm1hdC1idXR0b24tZGlzYWJsZWRbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWJ1dHRvbi5tYXQtYnV0dG9uLWRpc2FibGVkLm1hdC1idXR0b24tZGlzYWJsZWRbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWljb24tYnV0dG9uLm1hdC1wcmltYXJ5Lm1hdC1idXR0b24tZGlzYWJsZWRbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWljb24tYnV0dG9uLm1hdC1hY2NlbnQubWF0LWJ1dHRvbi1kaXNhYmxlZFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtaWNvbi1idXR0b24ubWF0LXdhcm4ubWF0LWJ1dHRvbi1kaXNhYmxlZFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtaWNvbi1idXR0b24ubWF0LWJ1dHRvbi1kaXNhYmxlZC5tYXQtYnV0dG9uLWRpc2FibGVkW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1zdHJva2VkLWJ1dHRvbi5tYXQtcHJpbWFyeS5tYXQtYnV0dG9uLWRpc2FibGVkW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1zdHJva2VkLWJ1dHRvbi5tYXQtYWNjZW50Lm1hdC1idXR0b24tZGlzYWJsZWRbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXN0cm9rZWQtYnV0dG9uLm1hdC13YXJuLm1hdC1idXR0b24tZGlzYWJsZWRbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXN0cm9rZWQtYnV0dG9uLm1hdC1idXR0b24tZGlzYWJsZWQubWF0LWJ1dHRvbi1kaXNhYmxlZFtfbmdjb250ZW50LSVDT01QJV17Y29sb3I6cmdiYSgwLDAsMCwuMjYpfS5tYXQtYnV0dG9uLm1hdC1wcmltYXJ5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtYnV0dG9uLWZvY3VzLW92ZXJsYXlbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWljb24tYnV0dG9uLm1hdC1wcmltYXJ5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtYnV0dG9uLWZvY3VzLW92ZXJsYXlbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXN0cm9rZWQtYnV0dG9uLm1hdC1wcmltYXJ5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtYnV0dG9uLWZvY3VzLW92ZXJsYXlbX25nY29udGVudC0lQ09NUCVde2JhY2tncm91bmQtY29sb3I6I2Y1N2MwMH0ubWF0LWJ1dHRvbi5tYXQtYWNjZW50W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtYnV0dG9uLWZvY3VzLW92ZXJsYXlbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWljb24tYnV0dG9uLm1hdC1hY2NlbnRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1idXR0b24tZm9jdXMtb3ZlcmxheVtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtc3Ryb2tlZC1idXR0b24ubWF0LWFjY2VudFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWJ1dHRvbi1mb2N1cy1vdmVybGF5W19uZ2NvbnRlbnQtJUNPTVAlXXtiYWNrZ3JvdW5kLWNvbG9yOiNmZjk4MDB9Lm1hdC1idXR0b24ubWF0LXdhcm5bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1idXR0b24tZm9jdXMtb3ZlcmxheVtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtaWNvbi1idXR0b24ubWF0LXdhcm5bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1idXR0b24tZm9jdXMtb3ZlcmxheVtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtc3Ryb2tlZC1idXR0b24ubWF0LXdhcm5bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1idXR0b24tZm9jdXMtb3ZlcmxheVtfbmdjb250ZW50LSVDT01QJV17YmFja2dyb3VuZC1jb2xvcjojZjQ0MzM2fS5tYXQtYnV0dG9uLm1hdC1idXR0b24tZGlzYWJsZWRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1idXR0b24tZm9jdXMtb3ZlcmxheVtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtaWNvbi1idXR0b24ubWF0LWJ1dHRvbi1kaXNhYmxlZFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWJ1dHRvbi1mb2N1cy1vdmVybGF5W19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1zdHJva2VkLWJ1dHRvbi5tYXQtYnV0dG9uLWRpc2FibGVkW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtYnV0dG9uLWZvY3VzLW92ZXJsYXlbX25nY29udGVudC0lQ09NUCVde2JhY2tncm91bmQtY29sb3I6dHJhbnNwYXJlbnR9Lm1hdC1idXR0b25bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1yaXBwbGUtZWxlbWVudFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtaWNvbi1idXR0b25bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1yaXBwbGUtZWxlbWVudFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtc3Ryb2tlZC1idXR0b25bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1yaXBwbGUtZWxlbWVudFtfbmdjb250ZW50LSVDT01QJV17b3BhY2l0eTouMTtiYWNrZ3JvdW5kLWNvbG9yOmN1cnJlbnRDb2xvcn0ubWF0LWJ1dHRvbi1mb2N1cy1vdmVybGF5W19uZ2NvbnRlbnQtJUNPTVAlXXtiYWNrZ3JvdW5kOiMwMDB9Lm1hdC1zdHJva2VkLWJ1dHRvbltfbmdjb250ZW50LSVDT01QJV06bm90KC5tYXQtYnV0dG9uLWRpc2FibGVkKXtib3JkZXItY29sb3I6cmdiYSgwLDAsMCwuMTIpfS5tYXQtZmxhdC1idXR0b25bX25nY29udGVudC0lQ09NUCVdLCAubWF0LXJhaXNlZC1idXR0b25bX25nY29udGVudC0lQ09NUCVdLCAubWF0LWZhYltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtbWluaS1mYWJbX25nY29udGVudC0lQ09NUCVde2NvbG9yOiMyMTIxMjE7YmFja2dyb3VuZC1jb2xvcjojZmZmfS5tYXQtZmxhdC1idXR0b24ubWF0LXByaW1hcnlbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXJhaXNlZC1idXR0b24ubWF0LXByaW1hcnlbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWZhYi5tYXQtcHJpbWFyeVtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtbWluaS1mYWIubWF0LXByaW1hcnlbX25nY29udGVudC0lQ09NUCVde2NvbG9yOiNmZmZ9Lm1hdC1mbGF0LWJ1dHRvbi5tYXQtYWNjZW50W19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1yYWlzZWQtYnV0dG9uLm1hdC1hY2NlbnRbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWZhYi5tYXQtYWNjZW50W19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1taW5pLWZhYi5tYXQtYWNjZW50W19uZ2NvbnRlbnQtJUNPTVAlXXtjb2xvcjojZmZmfS5tYXQtZmxhdC1idXR0b24ubWF0LXdhcm5bX25nY29udGVudC0lQ09NUCVdLCAubWF0LXJhaXNlZC1idXR0b24ubWF0LXdhcm5bX25nY29udGVudC0lQ09NUCVdLCAubWF0LWZhYi5tYXQtd2Fybltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtbWluaS1mYWIubWF0LXdhcm5bX25nY29udGVudC0lQ09NUCVde2NvbG9yOiNmZmZ9Lm1hdC1mbGF0LWJ1dHRvbi5tYXQtcHJpbWFyeS5tYXQtYnV0dG9uLWRpc2FibGVkW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1mbGF0LWJ1dHRvbi5tYXQtYWNjZW50Lm1hdC1idXR0b24tZGlzYWJsZWRbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWZsYXQtYnV0dG9uLm1hdC13YXJuLm1hdC1idXR0b24tZGlzYWJsZWRbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWZsYXQtYnV0dG9uLm1hdC1idXR0b24tZGlzYWJsZWQubWF0LWJ1dHRvbi1kaXNhYmxlZFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtcmFpc2VkLWJ1dHRvbi5tYXQtcHJpbWFyeS5tYXQtYnV0dG9uLWRpc2FibGVkW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1yYWlzZWQtYnV0dG9uLm1hdC1hY2NlbnQubWF0LWJ1dHRvbi1kaXNhYmxlZFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtcmFpc2VkLWJ1dHRvbi5tYXQtd2Fybi5tYXQtYnV0dG9uLWRpc2FibGVkW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1yYWlzZWQtYnV0dG9uLm1hdC1idXR0b24tZGlzYWJsZWQubWF0LWJ1dHRvbi1kaXNhYmxlZFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtZmFiLm1hdC1wcmltYXJ5Lm1hdC1idXR0b24tZGlzYWJsZWRbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWZhYi5tYXQtYWNjZW50Lm1hdC1idXR0b24tZGlzYWJsZWRbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWZhYi5tYXQtd2Fybi5tYXQtYnV0dG9uLWRpc2FibGVkW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1mYWIubWF0LWJ1dHRvbi1kaXNhYmxlZC5tYXQtYnV0dG9uLWRpc2FibGVkW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1taW5pLWZhYi5tYXQtcHJpbWFyeS5tYXQtYnV0dG9uLWRpc2FibGVkW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1taW5pLWZhYi5tYXQtYWNjZW50Lm1hdC1idXR0b24tZGlzYWJsZWRbX25nY29udGVudC0lQ09NUCVdLCAubWF0LW1pbmktZmFiLm1hdC13YXJuLm1hdC1idXR0b24tZGlzYWJsZWRbX25nY29udGVudC0lQ09NUCVdLCAubWF0LW1pbmktZmFiLm1hdC1idXR0b24tZGlzYWJsZWQubWF0LWJ1dHRvbi1kaXNhYmxlZFtfbmdjb250ZW50LSVDT01QJV17Y29sb3I6cmdiYSgwLDAsMCwuMjYpfS5tYXQtZmxhdC1idXR0b24ubWF0LXByaW1hcnlbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXJhaXNlZC1idXR0b24ubWF0LXByaW1hcnlbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWZhYi5tYXQtcHJpbWFyeVtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtbWluaS1mYWIubWF0LXByaW1hcnlbX25nY29udGVudC0lQ09NUCVde2JhY2tncm91bmQtY29sb3I6I2Y1N2MwMH0ubWF0LWZsYXQtYnV0dG9uLm1hdC1hY2NlbnRbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXJhaXNlZC1idXR0b24ubWF0LWFjY2VudFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtZmFiLm1hdC1hY2NlbnRbX25nY29udGVudC0lQ09NUCVdLCAubWF0LW1pbmktZmFiLm1hdC1hY2NlbnRbX25nY29udGVudC0lQ09NUCVde2JhY2tncm91bmQtY29sb3I6I2ZmOTgwMH0ubWF0LWZsYXQtYnV0dG9uLm1hdC13YXJuW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1yYWlzZWQtYnV0dG9uLm1hdC13YXJuW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1mYWIubWF0LXdhcm5bX25nY29udGVudC0lQ09NUCVdLCAubWF0LW1pbmktZmFiLm1hdC13YXJuW19uZ2NvbnRlbnQtJUNPTVAlXXtiYWNrZ3JvdW5kLWNvbG9yOiNmNDQzMzZ9Lm1hdC1mbGF0LWJ1dHRvbi5tYXQtcHJpbWFyeS5tYXQtYnV0dG9uLWRpc2FibGVkW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1mbGF0LWJ1dHRvbi5tYXQtYWNjZW50Lm1hdC1idXR0b24tZGlzYWJsZWRbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWZsYXQtYnV0dG9uLm1hdC13YXJuLm1hdC1idXR0b24tZGlzYWJsZWRbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWZsYXQtYnV0dG9uLm1hdC1idXR0b24tZGlzYWJsZWQubWF0LWJ1dHRvbi1kaXNhYmxlZFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtcmFpc2VkLWJ1dHRvbi5tYXQtcHJpbWFyeS5tYXQtYnV0dG9uLWRpc2FibGVkW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1yYWlzZWQtYnV0dG9uLm1hdC1hY2NlbnQubWF0LWJ1dHRvbi1kaXNhYmxlZFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtcmFpc2VkLWJ1dHRvbi5tYXQtd2Fybi5tYXQtYnV0dG9uLWRpc2FibGVkW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1yYWlzZWQtYnV0dG9uLm1hdC1idXR0b24tZGlzYWJsZWQubWF0LWJ1dHRvbi1kaXNhYmxlZFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtZmFiLm1hdC1wcmltYXJ5Lm1hdC1idXR0b24tZGlzYWJsZWRbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWZhYi5tYXQtYWNjZW50Lm1hdC1idXR0b24tZGlzYWJsZWRbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWZhYi5tYXQtd2Fybi5tYXQtYnV0dG9uLWRpc2FibGVkW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1mYWIubWF0LWJ1dHRvbi1kaXNhYmxlZC5tYXQtYnV0dG9uLWRpc2FibGVkW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1taW5pLWZhYi5tYXQtcHJpbWFyeS5tYXQtYnV0dG9uLWRpc2FibGVkW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1taW5pLWZhYi5tYXQtYWNjZW50Lm1hdC1idXR0b24tZGlzYWJsZWRbX25nY29udGVudC0lQ09NUCVdLCAubWF0LW1pbmktZmFiLm1hdC13YXJuLm1hdC1idXR0b24tZGlzYWJsZWRbX25nY29udGVudC0lQ09NUCVdLCAubWF0LW1pbmktZmFiLm1hdC1idXR0b24tZGlzYWJsZWQubWF0LWJ1dHRvbi1kaXNhYmxlZFtfbmdjb250ZW50LSVDT01QJV17YmFja2dyb3VuZC1jb2xvcjpyZ2JhKDAsMCwwLC4xMil9Lm1hdC1mbGF0LWJ1dHRvbi5tYXQtcHJpbWFyeVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXJpcHBsZS1lbGVtZW50W19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1yYWlzZWQtYnV0dG9uLm1hdC1wcmltYXJ5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtcmlwcGxlLWVsZW1lbnRbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWZhYi5tYXQtcHJpbWFyeVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXJpcHBsZS1lbGVtZW50W19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1taW5pLWZhYi5tYXQtcHJpbWFyeVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXJpcHBsZS1lbGVtZW50W19uZ2NvbnRlbnQtJUNPTVAlXXtiYWNrZ3JvdW5kLWNvbG9yOnJnYmEoMjU1LDI1NSwyNTUsLjEpfS5tYXQtZmxhdC1idXR0b24ubWF0LWFjY2VudFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXJpcHBsZS1lbGVtZW50W19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1yYWlzZWQtYnV0dG9uLm1hdC1hY2NlbnRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1yaXBwbGUtZWxlbWVudFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtZmFiLm1hdC1hY2NlbnRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1yaXBwbGUtZWxlbWVudFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtbWluaS1mYWIubWF0LWFjY2VudFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXJpcHBsZS1lbGVtZW50W19uZ2NvbnRlbnQtJUNPTVAlXXtiYWNrZ3JvdW5kLWNvbG9yOnJnYmEoMjU1LDI1NSwyNTUsLjEpfS5tYXQtZmxhdC1idXR0b24ubWF0LXdhcm5bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1yaXBwbGUtZWxlbWVudFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtcmFpc2VkLWJ1dHRvbi5tYXQtd2Fybltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXJpcHBsZS1lbGVtZW50W19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1mYWIubWF0LXdhcm5bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1yaXBwbGUtZWxlbWVudFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtbWluaS1mYWIubWF0LXdhcm5bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1yaXBwbGUtZWxlbWVudFtfbmdjb250ZW50LSVDT01QJV17YmFja2dyb3VuZC1jb2xvcjpyZ2JhKDI1NSwyNTUsMjU1LC4xKX0ubWF0LXN0cm9rZWQtYnV0dG9uW19uZ2NvbnRlbnQtJUNPTVAlXTpub3QoW2NsYXNzKj1tYXQtZWxldmF0aW9uLXpdKSwgLm1hdC1mbGF0LWJ1dHRvbltfbmdjb250ZW50LSVDT01QJV06bm90KFtjbGFzcyo9bWF0LWVsZXZhdGlvbi16XSl7Ym94LXNoYWRvdzowcHggMHB4IDBweCAwcHggcmdiYSgwLCAwLCAwLCAwLjIpLDBweCAwcHggMHB4IDBweCByZ2JhKDAsIDAsIDAsIDAuMTQpLDBweCAwcHggMHB4IDBweCByZ2JhKDAsIDAsIDAsIDAuMTIpfS5tYXQtcmFpc2VkLWJ1dHRvbltfbmdjb250ZW50LSVDT01QJV06bm90KFtjbGFzcyo9bWF0LWVsZXZhdGlvbi16XSl7Ym94LXNoYWRvdzowcHggM3B4IDFweCAtMnB4IHJnYmEoMCwgMCwgMCwgMC4yKSwwcHggMnB4IDJweCAwcHggcmdiYSgwLCAwLCAwLCAwLjE0KSwwcHggMXB4IDVweCAwcHggcmdiYSgwLCAwLCAwLCAwLjEyKX0ubWF0LXJhaXNlZC1idXR0b25bX25nY29udGVudC0lQ09NUCVdOm5vdCgubWF0LWJ1dHRvbi1kaXNhYmxlZCk6YWN0aXZlOm5vdChbY2xhc3MqPW1hdC1lbGV2YXRpb24tel0pe2JveC1zaGFkb3c6MHB4IDVweCA1cHggLTNweCByZ2JhKDAsIDAsIDAsIDAuMiksMHB4IDhweCAxMHB4IDFweCByZ2JhKDAsIDAsIDAsIDAuMTQpLDBweCAzcHggMTRweCAycHggcmdiYSgwLCAwLCAwLCAwLjEyKX0ubWF0LXJhaXNlZC1idXR0b24ubWF0LWJ1dHRvbi1kaXNhYmxlZFtfbmdjb250ZW50LSVDT01QJV06bm90KFtjbGFzcyo9bWF0LWVsZXZhdGlvbi16XSl7Ym94LXNoYWRvdzowcHggMHB4IDBweCAwcHggcmdiYSgwLCAwLCAwLCAwLjIpLDBweCAwcHggMHB4IDBweCByZ2JhKDAsIDAsIDAsIDAuMTQpLDBweCAwcHggMHB4IDBweCByZ2JhKDAsIDAsIDAsIDAuMTIpfS5tYXQtZmFiW19uZ2NvbnRlbnQtJUNPTVAlXTpub3QoW2NsYXNzKj1tYXQtZWxldmF0aW9uLXpdKSwgLm1hdC1taW5pLWZhYltfbmdjb250ZW50LSVDT01QJV06bm90KFtjbGFzcyo9bWF0LWVsZXZhdGlvbi16XSl7Ym94LXNoYWRvdzowcHggM3B4IDVweCAtMXB4IHJnYmEoMCwgMCwgMCwgMC4yKSwwcHggNnB4IDEwcHggMHB4IHJnYmEoMCwgMCwgMCwgMC4xNCksMHB4IDFweCAxOHB4IDBweCByZ2JhKDAsIDAsIDAsIDAuMTIpfS5tYXQtZmFiW19uZ2NvbnRlbnQtJUNPTVAlXTpub3QoLm1hdC1idXR0b24tZGlzYWJsZWQpOmFjdGl2ZTpub3QoW2NsYXNzKj1tYXQtZWxldmF0aW9uLXpdKSwgLm1hdC1taW5pLWZhYltfbmdjb250ZW50LSVDT01QJV06bm90KC5tYXQtYnV0dG9uLWRpc2FibGVkKTphY3RpdmU6bm90KFtjbGFzcyo9bWF0LWVsZXZhdGlvbi16XSl7Ym94LXNoYWRvdzowcHggN3B4IDhweCAtNHB4IHJnYmEoMCwgMCwgMCwgMC4yKSwwcHggMTJweCAxN3B4IDJweCByZ2JhKDAsIDAsIDAsIDAuMTQpLDBweCA1cHggMjJweCA0cHggcmdiYSgwLCAwLCAwLCAwLjEyKX0ubWF0LWZhYi5tYXQtYnV0dG9uLWRpc2FibGVkW19uZ2NvbnRlbnQtJUNPTVAlXTpub3QoW2NsYXNzKj1tYXQtZWxldmF0aW9uLXpdKSwgLm1hdC1taW5pLWZhYi5tYXQtYnV0dG9uLWRpc2FibGVkW19uZ2NvbnRlbnQtJUNPTVAlXTpub3QoW2NsYXNzKj1tYXQtZWxldmF0aW9uLXpdKXtib3gtc2hhZG93OjBweCAwcHggMHB4IDBweCByZ2JhKDAsIDAsIDAsIDAuMiksMHB4IDBweCAwcHggMHB4IHJnYmEoMCwgMCwgMCwgMC4xNCksMHB4IDBweCAwcHggMHB4IHJnYmEoMCwgMCwgMCwgMC4xMil9Lm1hdC1idXR0b24tdG9nZ2xlLXN0YW5kYWxvbmVbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWJ1dHRvbi10b2dnbGUtZ3JvdXBbX25nY29udGVudC0lQ09NUCVde2JveC1zaGFkb3c6MHB4IDNweCAxcHggLTJweCByZ2JhKDAsIDAsIDAsIDAuMiksMHB4IDJweCAycHggMHB4IHJnYmEoMCwgMCwgMCwgMC4xNCksMHB4IDFweCA1cHggMHB4IHJnYmEoMCwgMCwgMCwgMC4xMil9Lm1hdC1idXR0b24tdG9nZ2xlLXN0YW5kYWxvbmUubWF0LWJ1dHRvbi10b2dnbGUtYXBwZWFyYW5jZS1zdGFuZGFyZFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtYnV0dG9uLXRvZ2dsZS1ncm91cC1hcHBlYXJhbmNlLXN0YW5kYXJkW19uZ2NvbnRlbnQtJUNPTVAlXXtib3gtc2hhZG93Om5vbmV9Lm1hdC1idXR0b24tdG9nZ2xlW19uZ2NvbnRlbnQtJUNPTVAlXXtjb2xvcjpyZ2JhKDAsMCwwLC4zOCl9Lm1hdC1idXR0b24tdG9nZ2xlW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtYnV0dG9uLXRvZ2dsZS1mb2N1cy1vdmVybGF5W19uZ2NvbnRlbnQtJUNPTVAlXXtiYWNrZ3JvdW5kLWNvbG9yOnJnYmEoMCwwLDAsLjEyKX0ubWF0LWJ1dHRvbi10b2dnbGUtYXBwZWFyYW5jZS1zdGFuZGFyZFtfbmdjb250ZW50LSVDT01QJV17Y29sb3I6IzIxMjEyMTtiYWNrZ3JvdW5kOiNmZmZ9Lm1hdC1idXR0b24tdG9nZ2xlLWFwcGVhcmFuY2Utc3RhbmRhcmRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1idXR0b24tdG9nZ2xlLWZvY3VzLW92ZXJsYXlbX25nY29udGVudC0lQ09NUCVde2JhY2tncm91bmQtY29sb3I6IzAwMH0ubWF0LWJ1dHRvbi10b2dnbGUtZ3JvdXAtYXBwZWFyYW5jZS1zdGFuZGFyZFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWJ1dHRvbi10b2dnbGVbX25nY29udGVudC0lQ09NUCVdICsgLm1hdC1idXR0b24tdG9nZ2xlW19uZ2NvbnRlbnQtJUNPTVAlXXtib3JkZXItbGVmdDpzb2xpZCAxcHggcmdiYSgwLDAsMCwuMTIpfVtkaXI9cnRsXVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWJ1dHRvbi10b2dnbGUtZ3JvdXAtYXBwZWFyYW5jZS1zdGFuZGFyZFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWJ1dHRvbi10b2dnbGVbX25nY29udGVudC0lQ09NUCVdICsgLm1hdC1idXR0b24tdG9nZ2xlW19uZ2NvbnRlbnQtJUNPTVAlXXtib3JkZXItbGVmdDpub25lO2JvcmRlci1yaWdodDpzb2xpZCAxcHggcmdiYSgwLDAsMCwuMTIpfS5tYXQtYnV0dG9uLXRvZ2dsZS1ncm91cC1hcHBlYXJhbmNlLXN0YW5kYXJkLm1hdC1idXR0b24tdG9nZ2xlLXZlcnRpY2FsW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtYnV0dG9uLXRvZ2dsZVtfbmdjb250ZW50LSVDT01QJV0gKyAubWF0LWJ1dHRvbi10b2dnbGVbX25nY29udGVudC0lQ09NUCVde2JvcmRlci1sZWZ0Om5vbmU7Ym9yZGVyLXJpZ2h0Om5vbmU7Ym9yZGVyLXRvcDpzb2xpZCAxcHggcmdiYSgwLDAsMCwuMTIpfS5tYXQtYnV0dG9uLXRvZ2dsZS1jaGVja2VkW19uZ2NvbnRlbnQtJUNPTVAlXXtiYWNrZ3JvdW5kLWNvbG9yOiNlMGUwZTA7Y29sb3I6IzYxNjE2MX0ubWF0LWJ1dHRvbi10b2dnbGUtY2hlY2tlZC5tYXQtYnV0dG9uLXRvZ2dsZS1hcHBlYXJhbmNlLXN0YW5kYXJkW19uZ2NvbnRlbnQtJUNPTVAlXXtjb2xvcjojMjEyMTIxfS5tYXQtYnV0dG9uLXRvZ2dsZS1kaXNhYmxlZFtfbmdjb250ZW50LSVDT01QJV17Y29sb3I6cmdiYSgwLDAsMCwuMjYpO2JhY2tncm91bmQtY29sb3I6I2VlZX0ubWF0LWJ1dHRvbi10b2dnbGUtZGlzYWJsZWQubWF0LWJ1dHRvbi10b2dnbGUtYXBwZWFyYW5jZS1zdGFuZGFyZFtfbmdjb250ZW50LSVDT01QJV17YmFja2dyb3VuZDojZmZmfS5tYXQtYnV0dG9uLXRvZ2dsZS1kaXNhYmxlZC5tYXQtYnV0dG9uLXRvZ2dsZS1jaGVja2VkW19uZ2NvbnRlbnQtJUNPTVAlXXtiYWNrZ3JvdW5kLWNvbG9yOiNiZGJkYmR9Lm1hdC1idXR0b24tdG9nZ2xlLXN0YW5kYWxvbmUubWF0LWJ1dHRvbi10b2dnbGUtYXBwZWFyYW5jZS1zdGFuZGFyZFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtYnV0dG9uLXRvZ2dsZS1ncm91cC1hcHBlYXJhbmNlLXN0YW5kYXJkW19uZ2NvbnRlbnQtJUNPTVAlXXtib3JkZXI6c29saWQgMXB4IHJnYmEoMCwwLDAsLjEyKX0ubWF0LWJ1dHRvbi10b2dnbGUtYXBwZWFyYW5jZS1zdGFuZGFyZFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWJ1dHRvbi10b2dnbGUtbGFiZWwtY29udGVudFtfbmdjb250ZW50LSVDT01QJV17bGluZS1oZWlnaHQ6NDhweH0ubWF0LWNhcmRbX25nY29udGVudC0lQ09NUCVde2JhY2tncm91bmQ6I2ZmZjtjb2xvcjojMjEyMTIxfS5tYXQtY2FyZFtfbmdjb250ZW50LSVDT01QJV06bm90KFtjbGFzcyo9bWF0LWVsZXZhdGlvbi16XSl7Ym94LXNoYWRvdzowcHggMnB4IDFweCAtMXB4IHJnYmEoMCwgMCwgMCwgMC4yKSwwcHggMXB4IDFweCAwcHggcmdiYSgwLCAwLCAwLCAwLjE0KSwwcHggMXB4IDNweCAwcHggcmdiYSgwLCAwLCAwLCAwLjEyKX0ubWF0LWNhcmQubWF0LWNhcmQtZmxhdFtfbmdjb250ZW50LSVDT01QJV06bm90KFtjbGFzcyo9bWF0LWVsZXZhdGlvbi16XSl7Ym94LXNoYWRvdzowcHggMHB4IDBweCAwcHggcmdiYSgwLCAwLCAwLCAwLjIpLDBweCAwcHggMHB4IDBweCByZ2JhKDAsIDAsIDAsIDAuMTQpLDBweCAwcHggMHB4IDBweCByZ2JhKDAsIDAsIDAsIDAuMTIpfS5tYXQtY2FyZC1zdWJ0aXRsZVtfbmdjb250ZW50LSVDT01QJV17Y29sb3I6IzYxNjE2MX0ubWF0LWNoZWNrYm94LWZyYW1lW19uZ2NvbnRlbnQtJUNPTVAlXXtib3JkZXItY29sb3I6IzYxNjE2MX0ubWF0LWNoZWNrYm94LWNoZWNrbWFya1tfbmdjb250ZW50LSVDT01QJV17ZmlsbDojZmFmYWZhfS5tYXQtY2hlY2tib3gtY2hlY2ttYXJrLXBhdGhbX25nY29udGVudC0lQ09NUCVde3N0cm9rZTojZmFmYWZhICFpbXBvcnRhbnR9Lm1hdC1jaGVja2JveC1taXhlZG1hcmtbX25nY29udGVudC0lQ09NUCVde2JhY2tncm91bmQtY29sb3I6I2ZhZmFmYX0ubWF0LWNoZWNrYm94LWluZGV0ZXJtaW5hdGUubWF0LXByaW1hcnlbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1jaGVja2JveC1iYWNrZ3JvdW5kW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1jaGVja2JveC1jaGVja2VkLm1hdC1wcmltYXJ5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtY2hlY2tib3gtYmFja2dyb3VuZFtfbmdjb250ZW50LSVDT01QJV17YmFja2dyb3VuZC1jb2xvcjojZjU3YzAwfS5tYXQtY2hlY2tib3gtaW5kZXRlcm1pbmF0ZS5tYXQtYWNjZW50W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtY2hlY2tib3gtYmFja2dyb3VuZFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtY2hlY2tib3gtY2hlY2tlZC5tYXQtYWNjZW50W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtY2hlY2tib3gtYmFja2dyb3VuZFtfbmdjb250ZW50LSVDT01QJV17YmFja2dyb3VuZC1jb2xvcjojZmY5ODAwfS5tYXQtY2hlY2tib3gtaW5kZXRlcm1pbmF0ZS5tYXQtd2Fybltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWNoZWNrYm94LWJhY2tncm91bmRbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWNoZWNrYm94LWNoZWNrZWQubWF0LXdhcm5bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1jaGVja2JveC1iYWNrZ3JvdW5kW19uZ2NvbnRlbnQtJUNPTVAlXXtiYWNrZ3JvdW5kLWNvbG9yOiNmNDQzMzZ9Lm1hdC1jaGVja2JveC1kaXNhYmxlZC5tYXQtY2hlY2tib3gtY2hlY2tlZFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWNoZWNrYm94LWJhY2tncm91bmRbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWNoZWNrYm94LWRpc2FibGVkLm1hdC1jaGVja2JveC1pbmRldGVybWluYXRlW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtY2hlY2tib3gtYmFja2dyb3VuZFtfbmdjb250ZW50LSVDT01QJV17YmFja2dyb3VuZC1jb2xvcjojYjBiMGIwfS5tYXQtY2hlY2tib3gtZGlzYWJsZWRbX25nY29udGVudC0lQ09NUCVdOm5vdCgubWF0LWNoZWNrYm94LWNoZWNrZWQpICAgLm1hdC1jaGVja2JveC1mcmFtZVtfbmdjb250ZW50LSVDT01QJV17Ym9yZGVyLWNvbG9yOiNiMGIwYjB9Lm1hdC1jaGVja2JveC1kaXNhYmxlZFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWNoZWNrYm94LWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXtjb2xvcjojNjE2MTYxfS5tYXQtY2hlY2tib3hbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1yaXBwbGUtZWxlbWVudFtfbmdjb250ZW50LSVDT01QJV17YmFja2dyb3VuZC1jb2xvcjojMDAwfS5tYXQtY2hlY2tib3gtY2hlY2tlZFtfbmdjb250ZW50LSVDT01QJV06bm90KC5tYXQtY2hlY2tib3gtZGlzYWJsZWQpLm1hdC1wcmltYXJ5ICAgLm1hdC1yaXBwbGUtZWxlbWVudFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtY2hlY2tib3hbX25nY29udGVudC0lQ09NUCVdOmFjdGl2ZTpub3QoLm1hdC1jaGVja2JveC1kaXNhYmxlZCkubWF0LXByaW1hcnkgICAubWF0LXJpcHBsZS1lbGVtZW50W19uZ2NvbnRlbnQtJUNPTVAlXXtiYWNrZ3JvdW5kOiNmNTdjMDB9Lm1hdC1jaGVja2JveC1jaGVja2VkW19uZ2NvbnRlbnQtJUNPTVAlXTpub3QoLm1hdC1jaGVja2JveC1kaXNhYmxlZCkubWF0LWFjY2VudCAgIC5tYXQtcmlwcGxlLWVsZW1lbnRbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWNoZWNrYm94W19uZ2NvbnRlbnQtJUNPTVAlXTphY3RpdmU6bm90KC5tYXQtY2hlY2tib3gtZGlzYWJsZWQpLm1hdC1hY2NlbnQgICAubWF0LXJpcHBsZS1lbGVtZW50W19uZ2NvbnRlbnQtJUNPTVAlXXtiYWNrZ3JvdW5kOiNmZjk4MDB9Lm1hdC1jaGVja2JveC1jaGVja2VkW19uZ2NvbnRlbnQtJUNPTVAlXTpub3QoLm1hdC1jaGVja2JveC1kaXNhYmxlZCkubWF0LXdhcm4gICAubWF0LXJpcHBsZS1lbGVtZW50W19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1jaGVja2JveFtfbmdjb250ZW50LSVDT01QJV06YWN0aXZlOm5vdCgubWF0LWNoZWNrYm94LWRpc2FibGVkKS5tYXQtd2FybiAgIC5tYXQtcmlwcGxlLWVsZW1lbnRbX25nY29udGVudC0lQ09NUCVde2JhY2tncm91bmQ6I2Y0NDMzNn0ubWF0LWNoaXAubWF0LXN0YW5kYXJkLWNoaXBbX25nY29udGVudC0lQ09NUCVde2JhY2tncm91bmQtY29sb3I6I2UwZTBlMDtjb2xvcjojMjEyMTIxfS5tYXQtY2hpcC5tYXQtc3RhbmRhcmQtY2hpcFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWNoaXAtcmVtb3ZlW19uZ2NvbnRlbnQtJUNPTVAlXXtjb2xvcjojMjEyMTIxO29wYWNpdHk6LjR9Lm1hdC1jaGlwLm1hdC1zdGFuZGFyZC1jaGlwW19uZ2NvbnRlbnQtJUNPTVAlXTpub3QoLm1hdC1jaGlwLWRpc2FibGVkKTphY3RpdmV7Ym94LXNoYWRvdzowcHggM3B4IDNweCAtMnB4IHJnYmEoMCwgMCwgMCwgMC4yKSwwcHggM3B4IDRweCAwcHggcmdiYSgwLCAwLCAwLCAwLjE0KSwwcHggMXB4IDhweCAwcHggcmdiYSgwLCAwLCAwLCAwLjEyKX0ubWF0LWNoaXAubWF0LXN0YW5kYXJkLWNoaXBbX25nY29udGVudC0lQ09NUCVdOm5vdCgubWF0LWNoaXAtZGlzYWJsZWQpICAgLm1hdC1jaGlwLXJlbW92ZVtfbmdjb250ZW50LSVDT01QJV06aG92ZXJ7b3BhY2l0eTouNTR9Lm1hdC1jaGlwLm1hdC1zdGFuZGFyZC1jaGlwLm1hdC1jaGlwLWRpc2FibGVkW19uZ2NvbnRlbnQtJUNPTVAlXXtvcGFjaXR5Oi40fS5tYXQtY2hpcC5tYXQtc3RhbmRhcmQtY2hpcFtfbmdjb250ZW50LSVDT01QJV06OmFmdGVye2JhY2tncm91bmQ6IzAwMH0ubWF0LWNoaXAubWF0LXN0YW5kYXJkLWNoaXAubWF0LWNoaXAtc2VsZWN0ZWQubWF0LXByaW1hcnlbX25nY29udGVudC0lQ09NUCVde2JhY2tncm91bmQtY29sb3I6I2Y1N2MwMDtjb2xvcjojZmZmfS5tYXQtY2hpcC5tYXQtc3RhbmRhcmQtY2hpcC5tYXQtY2hpcC1zZWxlY3RlZC5tYXQtcHJpbWFyeVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWNoaXAtcmVtb3ZlW19uZ2NvbnRlbnQtJUNPTVAlXXtjb2xvcjojZmZmO29wYWNpdHk6LjR9Lm1hdC1jaGlwLm1hdC1zdGFuZGFyZC1jaGlwLm1hdC1jaGlwLXNlbGVjdGVkLm1hdC1wcmltYXJ5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtcmlwcGxlLWVsZW1lbnRbX25nY29udGVudC0lQ09NUCVde2JhY2tncm91bmQtY29sb3I6cmdiYSgyNTUsMjU1LDI1NSwuMSl9Lm1hdC1jaGlwLm1hdC1zdGFuZGFyZC1jaGlwLm1hdC1jaGlwLXNlbGVjdGVkLm1hdC13YXJuW19uZ2NvbnRlbnQtJUNPTVAlXXtiYWNrZ3JvdW5kLWNvbG9yOiNmNDQzMzY7Y29sb3I6I2ZmZn0ubWF0LWNoaXAubWF0LXN0YW5kYXJkLWNoaXAubWF0LWNoaXAtc2VsZWN0ZWQubWF0LXdhcm5bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1jaGlwLXJlbW92ZVtfbmdjb250ZW50LSVDT01QJV17Y29sb3I6I2ZmZjtvcGFjaXR5Oi40fS5tYXQtY2hpcC5tYXQtc3RhbmRhcmQtY2hpcC5tYXQtY2hpcC1zZWxlY3RlZC5tYXQtd2Fybltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXJpcHBsZS1lbGVtZW50W19uZ2NvbnRlbnQtJUNPTVAlXXtiYWNrZ3JvdW5kLWNvbG9yOnJnYmEoMjU1LDI1NSwyNTUsLjEpfS5tYXQtY2hpcC5tYXQtc3RhbmRhcmQtY2hpcC5tYXQtY2hpcC1zZWxlY3RlZC5tYXQtYWNjZW50W19uZ2NvbnRlbnQtJUNPTVAlXXtiYWNrZ3JvdW5kLWNvbG9yOiNmZjk4MDA7Y29sb3I6I2ZmZn0ubWF0LWNoaXAubWF0LXN0YW5kYXJkLWNoaXAubWF0LWNoaXAtc2VsZWN0ZWQubWF0LWFjY2VudFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWNoaXAtcmVtb3ZlW19uZ2NvbnRlbnQtJUNPTVAlXXtjb2xvcjojZmZmO29wYWNpdHk6LjR9Lm1hdC1jaGlwLm1hdC1zdGFuZGFyZC1jaGlwLm1hdC1jaGlwLXNlbGVjdGVkLm1hdC1hY2NlbnRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1yaXBwbGUtZWxlbWVudFtfbmdjb250ZW50LSVDT01QJV17YmFja2dyb3VuZC1jb2xvcjpyZ2JhKDI1NSwyNTUsMjU1LC4xKX0ubWF0LXRhYmxlW19uZ2NvbnRlbnQtJUNPTVAlXXtiYWNrZ3JvdW5kOiNmZmZ9Lm1hdC10YWJsZVtfbmdjb250ZW50LSVDT01QJV0gICB0aGVhZFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdGFibGVbX25nY29udGVudC0lQ09NUCVdICAgdGJvZHlbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXRhYmxlW19uZ2NvbnRlbnQtJUNPTVAlXSAgIHRmb290W19uZ2NvbnRlbnQtJUNPTVAlXSwgbWF0LWhlYWRlci1yb3dbX25nY29udGVudC0lQ09NUCVdLCBtYXQtcm93W19uZ2NvbnRlbnQtJUNPTVAlXSwgbWF0LWZvb3Rlci1yb3dbX25nY29udGVudC0lQ09NUCVdLCBbbWF0LWhlYWRlci1yb3ddW19uZ2NvbnRlbnQtJUNPTVAlXSwgW21hdC1yb3ddW19uZ2NvbnRlbnQtJUNPTVAlXSwgW21hdC1mb290ZXItcm93XVtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdGFibGUtc3RpY2t5W19uZ2NvbnRlbnQtJUNPTVAlXXtiYWNrZ3JvdW5kOmluaGVyaXR9bWF0LXJvd1tfbmdjb250ZW50LSVDT01QJV0sIG1hdC1oZWFkZXItcm93W19uZ2NvbnRlbnQtJUNPTVAlXSwgbWF0LWZvb3Rlci1yb3dbX25nY29udGVudC0lQ09NUCVdLCB0aC5tYXQtaGVhZGVyLWNlbGxbX25nY29udGVudC0lQ09NUCVdLCB0ZC5tYXQtY2VsbFtfbmdjb250ZW50LSVDT01QJV0sIHRkLm1hdC1mb290ZXItY2VsbFtfbmdjb250ZW50LSVDT01QJV17Ym9yZGVyLWJvdHRvbS1jb2xvcjpyZ2JhKDAsMCwwLC4xMil9Lm1hdC1oZWFkZXItY2VsbFtfbmdjb250ZW50LSVDT01QJV17Y29sb3I6IzYxNjE2MX0ubWF0LWNlbGxbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWZvb3Rlci1jZWxsW19uZ2NvbnRlbnQtJUNPTVAlXXtjb2xvcjojMjEyMTIxfS5tYXQtY2FsZW5kYXItYXJyb3dbX25nY29udGVudC0lQ09NUCVde2JvcmRlci10b3AtY29sb3I6cmdiYSgwLDAsMCwuNTQpfS5tYXQtZGF0ZXBpY2tlci10b2dnbGVbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWRhdGVwaWNrZXItY29udGVudFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWNhbGVuZGFyLW5leHQtYnV0dG9uW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1kYXRlcGlja2VyLWNvbnRlbnRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1jYWxlbmRhci1wcmV2aW91cy1idXR0b25bX25nY29udGVudC0lQ09NUCVde2NvbG9yOnJnYmEoMCwwLDAsLjU0KX0ubWF0LWNhbGVuZGFyLXRhYmxlLWhlYWRlcltfbmdjb250ZW50LSVDT01QJV17Y29sb3I6cmdiYSgwLDAsMCwuMzgpfS5tYXQtY2FsZW5kYXItdGFibGUtaGVhZGVyLWRpdmlkZXJbX25nY29udGVudC0lQ09NUCVdOjphZnRlcntiYWNrZ3JvdW5kOnJnYmEoMCwwLDAsLjEyKX0ubWF0LWNhbGVuZGFyLWJvZHktbGFiZWxbX25nY29udGVudC0lQ09NUCVde2NvbG9yOiM2MTYxNjF9Lm1hdC1jYWxlbmRhci1ib2R5LWNlbGwtY29udGVudFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtZGF0ZS1yYW5nZS1pbnB1dC1zZXBhcmF0b3JbX25nY29udGVudC0lQ09NUCVde2NvbG9yOiMyMTIxMjE7Ym9yZGVyLWNvbG9yOnRyYW5zcGFyZW50fS5tYXQtY2FsZW5kYXItYm9keS1kaXNhYmxlZFtfbmdjb250ZW50LSVDT01QJV0gPiAubWF0LWNhbGVuZGFyLWJvZHktY2VsbC1jb250ZW50W19uZ2NvbnRlbnQtJUNPTVAlXTpub3QoLm1hdC1jYWxlbmRhci1ib2R5LXNlbGVjdGVkKTpub3QoLm1hdC1jYWxlbmRhci1ib2R5LWNvbXBhcmlzb24taWRlbnRpY2FsKXtjb2xvcjojNzU3NTc1fS5tYXQtZm9ybS1maWVsZC1kaXNhYmxlZFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWRhdGUtcmFuZ2UtaW5wdXQtc2VwYXJhdG9yW19uZ2NvbnRlbnQtJUNPTVAlXXtjb2xvcjojNzU3NTc1fS5tYXQtY2FsZW5kYXItYm9keS1jZWxsW19uZ2NvbnRlbnQtJUNPTVAlXTpub3QoLm1hdC1jYWxlbmRhci1ib2R5LWRpc2FibGVkKTpob3ZlciA+IC5tYXQtY2FsZW5kYXItYm9keS1jZWxsLWNvbnRlbnRbX25nY29udGVudC0lQ09NUCVdOm5vdCgubWF0LWNhbGVuZGFyLWJvZHktc2VsZWN0ZWQpOm5vdCgubWF0LWNhbGVuZGFyLWJvZHktY29tcGFyaXNvbi1pZGVudGljYWwpLCAuY2RrLWtleWJvYXJkLWZvY3VzZWRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1jYWxlbmRhci1ib2R5LWFjdGl2ZVtfbmdjb250ZW50LSVDT01QJV0gPiAubWF0LWNhbGVuZGFyLWJvZHktY2VsbC1jb250ZW50W19uZ2NvbnRlbnQtJUNPTVAlXTpub3QoLm1hdC1jYWxlbmRhci1ib2R5LXNlbGVjdGVkKTpub3QoLm1hdC1jYWxlbmRhci1ib2R5LWNvbXBhcmlzb24taWRlbnRpY2FsKSwgLmNkay1wcm9ncmFtLWZvY3VzZWRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1jYWxlbmRhci1ib2R5LWFjdGl2ZVtfbmdjb250ZW50LSVDT01QJV0gPiAubWF0LWNhbGVuZGFyLWJvZHktY2VsbC1jb250ZW50W19uZ2NvbnRlbnQtJUNPTVAlXTpub3QoLm1hdC1jYWxlbmRhci1ib2R5LXNlbGVjdGVkKTpub3QoLm1hdC1jYWxlbmRhci1ib2R5LWNvbXBhcmlzb24taWRlbnRpY2FsKXtiYWNrZ3JvdW5kLWNvbG9yOnJnYmEoMCwwLDAsLjA0KX0ubWF0LWNhbGVuZGFyLWJvZHktaW4tcHJldmlld1tfbmdjb250ZW50LSVDT01QJV17Y29sb3I6cmdiYSgwLDAsMCwuMjQpfS5tYXQtY2FsZW5kYXItYm9keS10b2RheVtfbmdjb250ZW50LSVDT01QJV06bm90KC5tYXQtY2FsZW5kYXItYm9keS1zZWxlY3RlZCk6bm90KC5tYXQtY2FsZW5kYXItYm9keS1jb21wYXJpc29uLWlkZW50aWNhbCl7Ym9yZGVyLWNvbG9yOnJnYmEoMCwwLDAsLjM4KX0ubWF0LWNhbGVuZGFyLWJvZHktZGlzYWJsZWRbX25nY29udGVudC0lQ09NUCVdID4gLm1hdC1jYWxlbmRhci1ib2R5LXRvZGF5W19uZ2NvbnRlbnQtJUNPTVAlXTpub3QoLm1hdC1jYWxlbmRhci1ib2R5LXNlbGVjdGVkKTpub3QoLm1hdC1jYWxlbmRhci1ib2R5LWNvbXBhcmlzb24taWRlbnRpY2FsKXtib3JkZXItY29sb3I6cmdiYSgwLDAsMCwuMTgpfS5tYXQtY2FsZW5kYXItYm9keS1pbi1yYW5nZVtfbmdjb250ZW50LSVDT01QJV06OmJlZm9yZXtiYWNrZ3JvdW5kOnJnYmEoMjQ1LDEyNCwwLC4yKX0ubWF0LWNhbGVuZGFyLWJvZHktY29tcGFyaXNvbi1pZGVudGljYWxbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWNhbGVuZGFyLWJvZHktaW4tY29tcGFyaXNvbi1yYW5nZVtfbmdjb250ZW50LSVDT01QJV06OmJlZm9yZXtiYWNrZ3JvdW5kOnJnYmEoMjQ5LDE3MSwwLC4yKX0ubWF0LWNhbGVuZGFyLWJvZHktY29tcGFyaXNvbi1icmlkZ2Utc3RhcnRbX25nY29udGVudC0lQ09NUCVdOjpiZWZvcmUsIFtkaXI9cnRsXVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWNhbGVuZGFyLWJvZHktY29tcGFyaXNvbi1icmlkZ2UtZW5kW19uZ2NvbnRlbnQtJUNPTVAlXTo6YmVmb3Jle2JhY2tncm91bmQ6bGluZWFyLWdyYWRpZW50KHRvIHJpZ2h0LCByZ2JhKDI0NSwgMTI0LCAwLCAwLjIpIDUwJSwgcmdiYSgyNDksIDE3MSwgMCwgMC4yKSA1MCUpfS5tYXQtY2FsZW5kYXItYm9keS1jb21wYXJpc29uLWJyaWRnZS1lbmRbX25nY29udGVudC0lQ09NUCVdOjpiZWZvcmUsIFtkaXI9cnRsXVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWNhbGVuZGFyLWJvZHktY29tcGFyaXNvbi1icmlkZ2Utc3RhcnRbX25nY29udGVudC0lQ09NUCVdOjpiZWZvcmV7YmFja2dyb3VuZDpsaW5lYXItZ3JhZGllbnQodG8gbGVmdCwgcmdiYSgyNDUsIDEyNCwgMCwgMC4yKSA1MCUsIHJnYmEoMjQ5LCAxNzEsIDAsIDAuMikgNTAlKX0ubWF0LWNhbGVuZGFyLWJvZHktaW4tcmFuZ2VbX25nY29udGVudC0lQ09NUCVdID4gLm1hdC1jYWxlbmRhci1ib2R5LWNvbXBhcmlzb24taWRlbnRpY2FsW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1jYWxlbmRhci1ib2R5LWluLWNvbXBhcmlzb24tcmFuZ2UubWF0LWNhbGVuZGFyLWJvZHktaW4tcmFuZ2VbX25nY29udGVudC0lQ09NUCVdOjphZnRlcntiYWNrZ3JvdW5kOiNhOGRhYjV9Lm1hdC1jYWxlbmRhci1ib2R5LWNvbXBhcmlzb24taWRlbnRpY2FsLm1hdC1jYWxlbmRhci1ib2R5LXNlbGVjdGVkW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1jYWxlbmRhci1ib2R5LWluLWNvbXBhcmlzb24tcmFuZ2VbX25nY29udGVudC0lQ09NUCVdID4gLm1hdC1jYWxlbmRhci1ib2R5LXNlbGVjdGVkW19uZ2NvbnRlbnQtJUNPTVAlXXtiYWNrZ3JvdW5kOiM0NmEzNWV9Lm1hdC1jYWxlbmRhci1ib2R5LXNlbGVjdGVkW19uZ2NvbnRlbnQtJUNPTVAlXXtiYWNrZ3JvdW5kLWNvbG9yOiNmNTdjMDA7Y29sb3I6I2ZmZn0ubWF0LWNhbGVuZGFyLWJvZHktZGlzYWJsZWRbX25nY29udGVudC0lQ09NUCVdID4gLm1hdC1jYWxlbmRhci1ib2R5LXNlbGVjdGVkW19uZ2NvbnRlbnQtJUNPTVAlXXtiYWNrZ3JvdW5kLWNvbG9yOnJnYmEoMjQ1LDEyNCwwLC40KX0ubWF0LWNhbGVuZGFyLWJvZHktdG9kYXkubWF0LWNhbGVuZGFyLWJvZHktc2VsZWN0ZWRbX25nY29udGVudC0lQ09NUCVde2JveC1zaGFkb3c6aW5zZXQgMCAwIDAgMXB4ICNmZmZ9Lm1hdC1kYXRlcGlja2VyLWNvbnRlbnRbX25nY29udGVudC0lQ09NUCVde2JveC1zaGFkb3c6MHB4IDJweCA0cHggLTFweCByZ2JhKDAsIDAsIDAsIDAuMiksMHB4IDRweCA1cHggMHB4IHJnYmEoMCwgMCwgMCwgMC4xNCksMHB4IDFweCAxMHB4IDBweCByZ2JhKDAsIDAsIDAsIDAuMTIpO2JhY2tncm91bmQtY29sb3I6I2ZmZjtjb2xvcjojMjEyMTIxfS5tYXQtZGF0ZXBpY2tlci1jb250ZW50Lm1hdC1hY2NlbnRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1jYWxlbmRhci1ib2R5LWluLXJhbmdlW19uZ2NvbnRlbnQtJUNPTVAlXTo6YmVmb3Jle2JhY2tncm91bmQ6cmdiYSgyNTUsMTUyLDAsLjIpfS5tYXQtZGF0ZXBpY2tlci1jb250ZW50Lm1hdC1hY2NlbnRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1jYWxlbmRhci1ib2R5LWNvbXBhcmlzb24taWRlbnRpY2FsW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1kYXRlcGlja2VyLWNvbnRlbnQubWF0LWFjY2VudFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWNhbGVuZGFyLWJvZHktaW4tY29tcGFyaXNvbi1yYW5nZVtfbmdjb250ZW50LSVDT01QJV06OmJlZm9yZXtiYWNrZ3JvdW5kOnJnYmEoMjQ5LDE3MSwwLC4yKX0ubWF0LWRhdGVwaWNrZXItY29udGVudC5tYXQtYWNjZW50W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtY2FsZW5kYXItYm9keS1jb21wYXJpc29uLWJyaWRnZS1zdGFydFtfbmdjb250ZW50LSVDT01QJV06OmJlZm9yZSwgLm1hdC1kYXRlcGlja2VyLWNvbnRlbnQubWF0LWFjY2VudFtfbmdjb250ZW50LSVDT01QJV0gICBbZGlyPXJ0bF1bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1jYWxlbmRhci1ib2R5LWNvbXBhcmlzb24tYnJpZGdlLWVuZFtfbmdjb250ZW50LSVDT01QJV06OmJlZm9yZXtiYWNrZ3JvdW5kOmxpbmVhci1ncmFkaWVudCh0byByaWdodCwgcmdiYSgyNTUsIDE1MiwgMCwgMC4yKSA1MCUsIHJnYmEoMjQ5LCAxNzEsIDAsIDAuMikgNTAlKX0ubWF0LWRhdGVwaWNrZXItY29udGVudC5tYXQtYWNjZW50W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtY2FsZW5kYXItYm9keS1jb21wYXJpc29uLWJyaWRnZS1lbmRbX25nY29udGVudC0lQ09NUCVdOjpiZWZvcmUsIC5tYXQtZGF0ZXBpY2tlci1jb250ZW50Lm1hdC1hY2NlbnRbX25nY29udGVudC0lQ09NUCVdICAgW2Rpcj1ydGxdW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtY2FsZW5kYXItYm9keS1jb21wYXJpc29uLWJyaWRnZS1zdGFydFtfbmdjb250ZW50LSVDT01QJV06OmJlZm9yZXtiYWNrZ3JvdW5kOmxpbmVhci1ncmFkaWVudCh0byBsZWZ0LCByZ2JhKDI1NSwgMTUyLCAwLCAwLjIpIDUwJSwgcmdiYSgyNDksIDE3MSwgMCwgMC4yKSA1MCUpfS5tYXQtZGF0ZXBpY2tlci1jb250ZW50Lm1hdC1hY2NlbnRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1jYWxlbmRhci1ib2R5LWluLXJhbmdlW19uZ2NvbnRlbnQtJUNPTVAlXSA+IC5tYXQtY2FsZW5kYXItYm9keS1jb21wYXJpc29uLWlkZW50aWNhbFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtZGF0ZXBpY2tlci1jb250ZW50Lm1hdC1hY2NlbnRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1jYWxlbmRhci1ib2R5LWluLWNvbXBhcmlzb24tcmFuZ2UubWF0LWNhbGVuZGFyLWJvZHktaW4tcmFuZ2VbX25nY29udGVudC0lQ09NUCVdOjphZnRlcntiYWNrZ3JvdW5kOiNhOGRhYjV9Lm1hdC1kYXRlcGlja2VyLWNvbnRlbnQubWF0LWFjY2VudFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWNhbGVuZGFyLWJvZHktY29tcGFyaXNvbi1pZGVudGljYWwubWF0LWNhbGVuZGFyLWJvZHktc2VsZWN0ZWRbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWRhdGVwaWNrZXItY29udGVudC5tYXQtYWNjZW50W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtY2FsZW5kYXItYm9keS1pbi1jb21wYXJpc29uLXJhbmdlW19uZ2NvbnRlbnQtJUNPTVAlXSA+IC5tYXQtY2FsZW5kYXItYm9keS1zZWxlY3RlZFtfbmdjb250ZW50LSVDT01QJV17YmFja2dyb3VuZDojNDZhMzVlfS5tYXQtZGF0ZXBpY2tlci1jb250ZW50Lm1hdC1hY2NlbnRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1jYWxlbmRhci1ib2R5LXNlbGVjdGVkW19uZ2NvbnRlbnQtJUNPTVAlXXtiYWNrZ3JvdW5kLWNvbG9yOiNmZjk4MDA7Y29sb3I6I2ZmZn0ubWF0LWRhdGVwaWNrZXItY29udGVudC5tYXQtYWNjZW50W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtY2FsZW5kYXItYm9keS1kaXNhYmxlZFtfbmdjb250ZW50LSVDT01QJV0gPiAubWF0LWNhbGVuZGFyLWJvZHktc2VsZWN0ZWRbX25nY29udGVudC0lQ09NUCVde2JhY2tncm91bmQtY29sb3I6cmdiYSgyNTUsMTUyLDAsLjQpfS5tYXQtZGF0ZXBpY2tlci1jb250ZW50Lm1hdC1hY2NlbnRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1jYWxlbmRhci1ib2R5LXRvZGF5Lm1hdC1jYWxlbmRhci1ib2R5LXNlbGVjdGVkW19uZ2NvbnRlbnQtJUNPTVAlXXtib3gtc2hhZG93Omluc2V0IDAgMCAwIDFweCAjZmZmfS5tYXQtZGF0ZXBpY2tlci1jb250ZW50Lm1hdC13YXJuW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtY2FsZW5kYXItYm9keS1pbi1yYW5nZVtfbmdjb250ZW50LSVDT01QJV06OmJlZm9yZXtiYWNrZ3JvdW5kOnJnYmEoMjQ0LDY3LDU0LC4yKX0ubWF0LWRhdGVwaWNrZXItY29udGVudC5tYXQtd2Fybltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWNhbGVuZGFyLWJvZHktY29tcGFyaXNvbi1pZGVudGljYWxbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWRhdGVwaWNrZXItY29udGVudC5tYXQtd2Fybltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWNhbGVuZGFyLWJvZHktaW4tY29tcGFyaXNvbi1yYW5nZVtfbmdjb250ZW50LSVDT01QJV06OmJlZm9yZXtiYWNrZ3JvdW5kOnJnYmEoMjQ5LDE3MSwwLC4yKX0ubWF0LWRhdGVwaWNrZXItY29udGVudC5tYXQtd2Fybltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWNhbGVuZGFyLWJvZHktY29tcGFyaXNvbi1icmlkZ2Utc3RhcnRbX25nY29udGVudC0lQ09NUCVdOjpiZWZvcmUsIC5tYXQtZGF0ZXBpY2tlci1jb250ZW50Lm1hdC13YXJuW19uZ2NvbnRlbnQtJUNPTVAlXSAgIFtkaXI9cnRsXVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWNhbGVuZGFyLWJvZHktY29tcGFyaXNvbi1icmlkZ2UtZW5kW19uZ2NvbnRlbnQtJUNPTVAlXTo6YmVmb3Jle2JhY2tncm91bmQ6bGluZWFyLWdyYWRpZW50KHRvIHJpZ2h0LCByZ2JhKDI0NCwgNjcsIDU0LCAwLjIpIDUwJSwgcmdiYSgyNDksIDE3MSwgMCwgMC4yKSA1MCUpfS5tYXQtZGF0ZXBpY2tlci1jb250ZW50Lm1hdC13YXJuW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtY2FsZW5kYXItYm9keS1jb21wYXJpc29uLWJyaWRnZS1lbmRbX25nY29udGVudC0lQ09NUCVdOjpiZWZvcmUsIC5tYXQtZGF0ZXBpY2tlci1jb250ZW50Lm1hdC13YXJuW19uZ2NvbnRlbnQtJUNPTVAlXSAgIFtkaXI9cnRsXVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWNhbGVuZGFyLWJvZHktY29tcGFyaXNvbi1icmlkZ2Utc3RhcnRbX25nY29udGVudC0lQ09NUCVdOjpiZWZvcmV7YmFja2dyb3VuZDpsaW5lYXItZ3JhZGllbnQodG8gbGVmdCwgcmdiYSgyNDQsIDY3LCA1NCwgMC4yKSA1MCUsIHJnYmEoMjQ5LCAxNzEsIDAsIDAuMikgNTAlKX0ubWF0LWRhdGVwaWNrZXItY29udGVudC5tYXQtd2Fybltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWNhbGVuZGFyLWJvZHktaW4tcmFuZ2VbX25nY29udGVudC0lQ09NUCVdID4gLm1hdC1jYWxlbmRhci1ib2R5LWNvbXBhcmlzb24taWRlbnRpY2FsW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1kYXRlcGlja2VyLWNvbnRlbnQubWF0LXdhcm5bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1jYWxlbmRhci1ib2R5LWluLWNvbXBhcmlzb24tcmFuZ2UubWF0LWNhbGVuZGFyLWJvZHktaW4tcmFuZ2VbX25nY29udGVudC0lQ09NUCVdOjphZnRlcntiYWNrZ3JvdW5kOiNhOGRhYjV9Lm1hdC1kYXRlcGlja2VyLWNvbnRlbnQubWF0LXdhcm5bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1jYWxlbmRhci1ib2R5LWNvbXBhcmlzb24taWRlbnRpY2FsLm1hdC1jYWxlbmRhci1ib2R5LXNlbGVjdGVkW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1kYXRlcGlja2VyLWNvbnRlbnQubWF0LXdhcm5bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1jYWxlbmRhci1ib2R5LWluLWNvbXBhcmlzb24tcmFuZ2VbX25nY29udGVudC0lQ09NUCVdID4gLm1hdC1jYWxlbmRhci1ib2R5LXNlbGVjdGVkW19uZ2NvbnRlbnQtJUNPTVAlXXtiYWNrZ3JvdW5kOiM0NmEzNWV9Lm1hdC1kYXRlcGlja2VyLWNvbnRlbnQubWF0LXdhcm5bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1jYWxlbmRhci1ib2R5LXNlbGVjdGVkW19uZ2NvbnRlbnQtJUNPTVAlXXtiYWNrZ3JvdW5kLWNvbG9yOiNmNDQzMzY7Y29sb3I6I2ZmZn0ubWF0LWRhdGVwaWNrZXItY29udGVudC5tYXQtd2Fybltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWNhbGVuZGFyLWJvZHktZGlzYWJsZWRbX25nY29udGVudC0lQ09NUCVdID4gLm1hdC1jYWxlbmRhci1ib2R5LXNlbGVjdGVkW19uZ2NvbnRlbnQtJUNPTVAlXXtiYWNrZ3JvdW5kLWNvbG9yOnJnYmEoMjQ0LDY3LDU0LC40KX0ubWF0LWRhdGVwaWNrZXItY29udGVudC5tYXQtd2Fybltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWNhbGVuZGFyLWJvZHktdG9kYXkubWF0LWNhbGVuZGFyLWJvZHktc2VsZWN0ZWRbX25nY29udGVudC0lQ09NUCVde2JveC1zaGFkb3c6aW5zZXQgMCAwIDAgMXB4ICNmZmZ9Lm1hdC1kYXRlcGlja2VyLWNvbnRlbnQtdG91Y2hbX25nY29udGVudC0lQ09NUCVde2JveC1zaGFkb3c6MHB4IDBweCAwcHggMHB4IHJnYmEoMCwgMCwgMCwgMC4yKSwwcHggMHB4IDBweCAwcHggcmdiYSgwLCAwLCAwLCAwLjE0KSwwcHggMHB4IDBweCAwcHggcmdiYSgwLCAwLCAwLCAwLjEyKX0ubWF0LWRhdGVwaWNrZXItdG9nZ2xlLWFjdGl2ZVtfbmdjb250ZW50LSVDT01QJV17Y29sb3I6I2Y1N2MwMH0ubWF0LWRhdGVwaWNrZXItdG9nZ2xlLWFjdGl2ZS5tYXQtYWNjZW50W19uZ2NvbnRlbnQtJUNPTVAlXXtjb2xvcjojZmY5ODAwfS5tYXQtZGF0ZXBpY2tlci10b2dnbGUtYWN0aXZlLm1hdC13YXJuW19uZ2NvbnRlbnQtJUNPTVAlXXtjb2xvcjojZjQ0MzM2fS5tYXQtZGF0ZS1yYW5nZS1pbnB1dC1pbm5lcltkaXNhYmxlZF1bX25nY29udGVudC0lQ09NUCVde2NvbG9yOiM3NTc1NzV9Lm1hdC1kaWFsb2ctY29udGFpbmVyW19uZ2NvbnRlbnQtJUNPTVAlXXtib3gtc2hhZG93OjBweCAxMXB4IDE1cHggLTdweCByZ2JhKDAsIDAsIDAsIDAuMiksMHB4IDI0cHggMzhweCAzcHggcmdiYSgwLCAwLCAwLCAwLjE0KSwwcHggOXB4IDQ2cHggOHB4IHJnYmEoMCwgMCwgMCwgMC4xMik7YmFja2dyb3VuZDojZmZmO2NvbG9yOiMyMTIxMjF9Lm1hdC1kaXZpZGVyW19uZ2NvbnRlbnQtJUNPTVAlXXtib3JkZXItdG9wLWNvbG9yOnJnYmEoMCwwLDAsLjEyKX0ubWF0LWRpdmlkZXItdmVydGljYWxbX25nY29udGVudC0lQ09NUCVde2JvcmRlci1yaWdodC1jb2xvcjpyZ2JhKDAsMCwwLC4xMil9Lm1hdC1leHBhbnNpb24tcGFuZWxbX25nY29udGVudC0lQ09NUCVde2JhY2tncm91bmQ6I2ZmZjtjb2xvcjojMjEyMTIxfS5tYXQtZXhwYW5zaW9uLXBhbmVsW19uZ2NvbnRlbnQtJUNPTVAlXTpub3QoW2NsYXNzKj1tYXQtZWxldmF0aW9uLXpdKXtib3gtc2hhZG93OjBweCAzcHggMXB4IC0ycHggcmdiYSgwLCAwLCAwLCAwLjIpLDBweCAycHggMnB4IDBweCByZ2JhKDAsIDAsIDAsIDAuMTQpLDBweCAxcHggNXB4IDBweCByZ2JhKDAsIDAsIDAsIDAuMTIpfS5tYXQtYWN0aW9uLXJvd1tfbmdjb250ZW50LSVDT01QJV17Ym9yZGVyLXRvcC1jb2xvcjpyZ2JhKDAsMCwwLC4xMil9Lm1hdC1leHBhbnNpb24tcGFuZWxbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1leHBhbnNpb24tcGFuZWwtaGVhZGVyLmNkay1rZXlib2FyZC1mb2N1c2VkW19uZ2NvbnRlbnQtJUNPTVAlXTpub3QoW2FyaWEtZGlzYWJsZWQ9dHJ1ZV0pLCAubWF0LWV4cGFuc2lvbi1wYW5lbFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWV4cGFuc2lvbi1wYW5lbC1oZWFkZXIuY2RrLXByb2dyYW0tZm9jdXNlZFtfbmdjb250ZW50LSVDT01QJV06bm90KFthcmlhLWRpc2FibGVkPXRydWVdKSwgLm1hdC1leHBhbnNpb24tcGFuZWxbX25nY29udGVudC0lQ09NUCVdOm5vdCgubWF0LWV4cGFuZGVkKSAgIC5tYXQtZXhwYW5zaW9uLXBhbmVsLWhlYWRlcltfbmdjb250ZW50LSVDT01QJV06aG92ZXI6bm90KFthcmlhLWRpc2FibGVkPXRydWVdKXtiYWNrZ3JvdW5kOnJnYmEoMCwwLDAsLjA0KX1AbWVkaWEoaG92ZXI6IG5vbmUpey5tYXQtZXhwYW5zaW9uLXBhbmVsW19uZ2NvbnRlbnQtJUNPTVAlXTpub3QoLm1hdC1leHBhbmRlZCk6bm90KFthcmlhLWRpc2FibGVkPXRydWVdKSAgIC5tYXQtZXhwYW5zaW9uLXBhbmVsLWhlYWRlcltfbmdjb250ZW50LSVDT01QJV06aG92ZXJ7YmFja2dyb3VuZDojZmZmfX0ubWF0LWV4cGFuc2lvbi1wYW5lbC1oZWFkZXItdGl0bGVbX25nY29udGVudC0lQ09NUCVde2NvbG9yOiMyMTIxMjF9Lm1hdC1leHBhbnNpb24tcGFuZWwtaGVhZGVyLWRlc2NyaXB0aW9uW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1leHBhbnNpb24taW5kaWNhdG9yW19uZ2NvbnRlbnQtJUNPTVAlXTo6YWZ0ZXJ7Y29sb3I6IzYxNjE2MX0ubWF0LWV4cGFuc2lvbi1wYW5lbC1oZWFkZXJbYXJpYS1kaXNhYmxlZD10cnVlXVtfbmdjb250ZW50LSVDT01QJV17Y29sb3I6cmdiYSgwLDAsMCwuMjYpfS5tYXQtZXhwYW5zaW9uLXBhbmVsLWhlYWRlclthcmlhLWRpc2FibGVkPXRydWVdW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZXhwYW5zaW9uLXBhbmVsLWhlYWRlci10aXRsZVtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtZXhwYW5zaW9uLXBhbmVsLWhlYWRlclthcmlhLWRpc2FibGVkPXRydWVdW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZXhwYW5zaW9uLXBhbmVsLWhlYWRlci1kZXNjcmlwdGlvbltfbmdjb250ZW50LSVDT01QJV17Y29sb3I6aW5oZXJpdH0ubWF0LWV4cGFuc2lvbi1wYW5lbC1oZWFkZXJbX25nY29udGVudC0lQ09NUCVde2hlaWdodDo0OHB4fS5tYXQtZXhwYW5zaW9uLXBhbmVsLWhlYWRlci5tYXQtZXhwYW5kZWRbX25nY29udGVudC0lQ09NUCVde2hlaWdodDo2NHB4fS5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17Y29sb3I6cmdiYSg5Nyw5Nyw5NywuNil9Lm1hdC1oaW50W19uZ2NvbnRlbnQtJUNPTVAlXXtjb2xvcjpyZ2JhKDk3LDk3LDk3LC42KX0ubWF0LWZvcm0tZmllbGQubWF0LWZvY3VzZWRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXtjb2xvcjojZjU3YzAwfS5tYXQtZm9ybS1maWVsZC5tYXQtZm9jdXNlZFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWwubWF0LWFjY2VudFtfbmdjb250ZW50LSVDT01QJV17Y29sb3I6I2ZmOTgwMH0ubWF0LWZvcm0tZmllbGQubWF0LWZvY3VzZWRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsLm1hdC13YXJuW19uZ2NvbnRlbnQtJUNPTVAlXXtjb2xvcjojZjQ0MzM2fS5tYXQtZm9jdXNlZFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtcmVxdWlyZWQtbWFya2VyW19uZ2NvbnRlbnQtJUNPTVAlXXtjb2xvcjojZmY5ODAwfS5tYXQtZm9ybS1maWVsZC1yaXBwbGVbX25nY29udGVudC0lQ09NUCVde2JhY2tncm91bmQtY29sb3I6cmdiYSgwLDAsMCwuODcpfS5tYXQtZm9ybS1maWVsZC5tYXQtZm9jdXNlZFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtcmlwcGxlW19uZ2NvbnRlbnQtJUNPTVAlXXtiYWNrZ3JvdW5kLWNvbG9yOiNmNTdjMDB9Lm1hdC1mb3JtLWZpZWxkLm1hdC1mb2N1c2VkW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1yaXBwbGUubWF0LWFjY2VudFtfbmdjb250ZW50LSVDT01QJV17YmFja2dyb3VuZC1jb2xvcjojZmY5ODAwfS5tYXQtZm9ybS1maWVsZC5tYXQtZm9jdXNlZFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtcmlwcGxlLm1hdC13YXJuW19uZ2NvbnRlbnQtJUNPTVAlXXtiYWNrZ3JvdW5kLWNvbG9yOiNmNDQzMzZ9Lm1hdC1mb3JtLWZpZWxkLXR5cGUtbWF0LW5hdGl2ZS1zZWxlY3QubWF0LWZvY3VzZWRbX25nY29udGVudC0lQ09NUCVdOm5vdCgubWF0LWZvcm0tZmllbGQtaW52YWxpZCkgICAubWF0LWZvcm0tZmllbGQtaW5maXhbX25nY29udGVudC0lQ09NUCVdOjphZnRlcntjb2xvcjojZjU3YzAwfS5tYXQtZm9ybS1maWVsZC10eXBlLW1hdC1uYXRpdmUtc2VsZWN0Lm1hdC1mb2N1c2VkW19uZ2NvbnRlbnQtJUNPTVAlXTpub3QoLm1hdC1mb3JtLWZpZWxkLWludmFsaWQpLm1hdC1hY2NlbnQgICAubWF0LWZvcm0tZmllbGQtaW5maXhbX25nY29udGVudC0lQ09NUCVdOjphZnRlcntjb2xvcjojZmY5ODAwfS5tYXQtZm9ybS1maWVsZC10eXBlLW1hdC1uYXRpdmUtc2VsZWN0Lm1hdC1mb2N1c2VkW19uZ2NvbnRlbnQtJUNPTVAlXTpub3QoLm1hdC1mb3JtLWZpZWxkLWludmFsaWQpLm1hdC13YXJuICAgLm1hdC1mb3JtLWZpZWxkLWluZml4W19uZ2NvbnRlbnQtJUNPTVAlXTo6YWZ0ZXJ7Y29sb3I6I2Y0NDMzNn0ubWF0LWZvcm0tZmllbGQubWF0LWZvcm0tZmllbGQtaW52YWxpZFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVde2NvbG9yOiNmNDQzMzZ9Lm1hdC1mb3JtLWZpZWxkLm1hdC1mb3JtLWZpZWxkLWludmFsaWRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsLm1hdC1hY2NlbnRbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWZvcm0tZmllbGQubWF0LWZvcm0tZmllbGQtaW52YWxpZFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLXJlcXVpcmVkLW1hcmtlcltfbmdjb250ZW50LSVDT01QJV17Y29sb3I6I2Y0NDMzNn0ubWF0LWZvcm0tZmllbGQubWF0LWZvcm0tZmllbGQtaW52YWxpZFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtcmlwcGxlW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1mb3JtLWZpZWxkLm1hdC1mb3JtLWZpZWxkLWludmFsaWRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLXJpcHBsZS5tYXQtYWNjZW50W19uZ2NvbnRlbnQtJUNPTVAlXXtiYWNrZ3JvdW5kLWNvbG9yOiNmNDQzMzZ9Lm1hdC1lcnJvcltfbmdjb250ZW50LSVDT01QJV17Y29sb3I6I2Y0NDMzNn0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1sZWdhY3lbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXtjb2xvcjojNjE2MTYxfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWxlZ2FjeVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWhpbnRbX25nY29udGVudC0lQ09NUCVde2NvbG9yOiM2MTYxNjF9Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtbGVnYWN5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC11bmRlcmxpbmVbX25nY29udGVudC0lQ09NUCVde2JhY2tncm91bmQtY29sb3I6cmdiYSgwLDAsMCwuNDIpfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWxlZ2FjeS5tYXQtZm9ybS1maWVsZC1kaXNhYmxlZFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtdW5kZXJsaW5lW19uZ2NvbnRlbnQtJUNPTVAlXXtiYWNrZ3JvdW5kLWltYWdlOmxpbmVhci1ncmFkaWVudCh0byByaWdodCwgcmdiYSgwLCAwLCAwLCAwLjQyKSAwJSwgcmdiYSgwLCAwLCAwLCAwLjQyKSAzMyUsIHRyYW5zcGFyZW50IDAlKTtiYWNrZ3JvdW5kLXNpemU6NHB4IDEwMCU7YmFja2dyb3VuZC1yZXBlYXQ6cmVwZWF0LXh9Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2Utc3RhbmRhcmRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLXVuZGVybGluZVtfbmdjb250ZW50LSVDT01QJV17YmFja2dyb3VuZC1jb2xvcjpyZ2JhKDAsMCwwLC40Mil9Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2Utc3RhbmRhcmQubWF0LWZvcm0tZmllbGQtZGlzYWJsZWRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLXVuZGVybGluZVtfbmdjb250ZW50LSVDT01QJV17YmFja2dyb3VuZC1pbWFnZTpsaW5lYXItZ3JhZGllbnQodG8gcmlnaHQsIHJnYmEoMCwgMCwgMCwgMC40MikgMCUsIHJnYmEoMCwgMCwgMCwgMC40MikgMzMlLCB0cmFuc3BhcmVudCAwJSk7YmFja2dyb3VuZC1zaXplOjRweCAxMDAlO2JhY2tncm91bmQtcmVwZWF0OnJlcGVhdC14fS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWZpbGxbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWZsZXhbX25nY29udGVudC0lQ09NUCVde2JhY2tncm91bmQtY29sb3I6cmdiYSgwLDAsMCwuMDQpfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWZpbGwubWF0LWZvcm0tZmllbGQtZGlzYWJsZWRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWZsZXhbX25nY29udGVudC0lQ09NUCVde2JhY2tncm91bmQtY29sb3I6cmdiYSgwLDAsMCwuMDIpfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWZpbGxbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLXVuZGVybGluZVtfbmdjb250ZW50LSVDT01QJV06OmJlZm9yZXtiYWNrZ3JvdW5kLWNvbG9yOnJnYmEoMCwwLDAsLjQyKX0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1maWxsLm1hdC1mb3JtLWZpZWxkLWRpc2FibGVkW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17Y29sb3I6Izc1NzU3NX0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1maWxsLm1hdC1mb3JtLWZpZWxkLWRpc2FibGVkW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC11bmRlcmxpbmVbX25nY29udGVudC0lQ09NUCVdOjpiZWZvcmV7YmFja2dyb3VuZC1jb2xvcjp0cmFuc3BhcmVudH0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1vdXRsaW5lW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1vdXRsaW5lW19uZ2NvbnRlbnQtJUNPTVAlXXtjb2xvcjpyZ2JhKDAsMCwwLC4xMil9Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2Utb3V0bGluZVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtb3V0bGluZS10aGlja1tfbmdjb250ZW50LSVDT01QJV17Y29sb3I6cmdiYSgwLDAsMCwuODcpfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLW91dGxpbmUubWF0LWZvY3VzZWRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLW91dGxpbmUtdGhpY2tbX25nY29udGVudC0lQ09NUCVde2NvbG9yOiNmNTdjMDB9Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2Utb3V0bGluZS5tYXQtZm9jdXNlZC5tYXQtYWNjZW50W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1vdXRsaW5lLXRoaWNrW19uZ2NvbnRlbnQtJUNPTVAlXXtjb2xvcjojZmY5ODAwfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLW91dGxpbmUubWF0LWZvY3VzZWQubWF0LXdhcm5bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLW91dGxpbmUtdGhpY2tbX25nY29udGVudC0lQ09NUCVde2NvbG9yOiNmNDQzMzZ9Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2Utb3V0bGluZS5tYXQtZm9ybS1maWVsZC1pbnZhbGlkLm1hdC1mb3JtLWZpZWxkLWludmFsaWRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLW91dGxpbmUtdGhpY2tbX25nY29udGVudC0lQ09NUCVde2NvbG9yOiNmNDQzMzZ9Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2Utb3V0bGluZS5tYXQtZm9ybS1maWVsZC1kaXNhYmxlZFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVde2NvbG9yOiM3NTc1NzV9Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2Utb3V0bGluZS5tYXQtZm9ybS1maWVsZC1kaXNhYmxlZFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtb3V0bGluZVtfbmdjb250ZW50LSVDT01QJV17Y29sb3I6cmdiYSgwLDAsMCwuMDYpfS5tYXQtaWNvbi5tYXQtcHJpbWFyeVtfbmdjb250ZW50LSVDT01QJV17Y29sb3I6I2Y1N2MwMH0ubWF0LWljb24ubWF0LWFjY2VudFtfbmdjb250ZW50LSVDT01QJV17Y29sb3I6I2ZmOTgwMH0ubWF0LWljb24ubWF0LXdhcm5bX25nY29udGVudC0lQ09NUCVde2NvbG9yOiNmNDQzMzZ9Lm1hdC1mb3JtLWZpZWxkLXR5cGUtbWF0LW5hdGl2ZS1zZWxlY3RbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWluZml4W19uZ2NvbnRlbnQtJUNPTVAlXTo6YWZ0ZXJ7Y29sb3I6IzYxNjE2MX0ubWF0LWlucHV0LWVsZW1lbnRbX25nY29udGVudC0lQ09NUCVdOmRpc2FibGVkLCAubWF0LWZvcm0tZmllbGQtdHlwZS1tYXQtbmF0aXZlLXNlbGVjdC5tYXQtZm9ybS1maWVsZC1kaXNhYmxlZFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtaW5maXhbX25nY29udGVudC0lQ09NUCVdOjphZnRlcntjb2xvcjojNzU3NTc1fS5tYXQtaW5wdXQtZWxlbWVudFtfbmdjb250ZW50LSVDT01QJV17Y2FyZXQtY29sb3I6I2Y1N2MwMH0ubWF0LWlucHV0LWVsZW1lbnRbX25nY29udGVudC0lQ09NUCVdOjpwbGFjZWhvbGRlcntjb2xvcjpyZ2JhKDk3LDk3LDk3LC40Mil9Lm1hdC1pbnB1dC1lbGVtZW50W19uZ2NvbnRlbnQtJUNPTVAlXTo6LW1vei1wbGFjZWhvbGRlcntjb2xvcjpyZ2JhKDk3LDk3LDk3LC40Mil9Lm1hdC1pbnB1dC1lbGVtZW50W19uZ2NvbnRlbnQtJUNPTVAlXTo6LXdlYmtpdC1pbnB1dC1wbGFjZWhvbGRlcntjb2xvcjpyZ2JhKDk3LDk3LDk3LC40Mil9Lm1hdC1pbnB1dC1lbGVtZW50W19uZ2NvbnRlbnQtJUNPTVAlXTotbXMtaW5wdXQtcGxhY2Vob2xkZXJ7Y29sb3I6cmdiYSg5Nyw5Nyw5NywuNDIpfS5tYXQtZm9ybS1maWVsZC5tYXQtYWNjZW50W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaW5wdXQtZWxlbWVudFtfbmdjb250ZW50LSVDT01QJV17Y2FyZXQtY29sb3I6I2ZmOTgwMH0ubWF0LWZvcm0tZmllbGQubWF0LXdhcm5bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pbnB1dC1lbGVtZW50W19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1mb3JtLWZpZWxkLWludmFsaWRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pbnB1dC1lbGVtZW50W19uZ2NvbnRlbnQtJUNPTVAlXXtjYXJldC1jb2xvcjojZjQ0MzM2fS5tYXQtZm9ybS1maWVsZC10eXBlLW1hdC1uYXRpdmUtc2VsZWN0Lm1hdC1mb3JtLWZpZWxkLWludmFsaWRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWluZml4W19uZ2NvbnRlbnQtJUNPTVAlXTo6YWZ0ZXJ7Y29sb3I6I2Y0NDMzNn0ubWF0LWxpc3QtYmFzZVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpc3QtaXRlbVtfbmdjb250ZW50LSVDT01QJV17Y29sb3I6IzIxMjEyMX0ubWF0LWxpc3QtYmFzZVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpc3Qtb3B0aW9uW19uZ2NvbnRlbnQtJUNPTVAlXXtjb2xvcjojMjEyMTIxfS5tYXQtbGlzdC1iYXNlW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtc3ViaGVhZGVyW19uZ2NvbnRlbnQtJUNPTVAlXXtjb2xvcjojNjE2MTYxfS5tYXQtbGlzdC1pdGVtLWRpc2FibGVkW19uZ2NvbnRlbnQtJUNPTVAlXXtiYWNrZ3JvdW5kLWNvbG9yOiNlZWV9Lm1hdC1saXN0LW9wdGlvbltfbmdjb250ZW50LSVDT01QJV06aG92ZXIsIC5tYXQtbGlzdC1vcHRpb25bX25nY29udGVudC0lQ09NUCVdOmZvY3VzLCAubWF0LW5hdi1saXN0W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGlzdC1pdGVtW19uZ2NvbnRlbnQtJUNPTVAlXTpob3ZlciwgLm1hdC1uYXYtbGlzdFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpc3QtaXRlbVtfbmdjb250ZW50LSVDT01QJV06Zm9jdXMsIC5tYXQtYWN0aW9uLWxpc3RbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saXN0LWl0ZW1bX25nY29udGVudC0lQ09NUCVdOmhvdmVyLCAubWF0LWFjdGlvbi1saXN0W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGlzdC1pdGVtW19uZ2NvbnRlbnQtJUNPTVAlXTpmb2N1c3tiYWNrZ3JvdW5kOnJnYmEoMCwwLDAsLjA0KX0ubWF0LWxpc3Qtc2luZ2xlLXNlbGVjdGVkLW9wdGlvbltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtbGlzdC1zaW5nbGUtc2VsZWN0ZWQtb3B0aW9uW19uZ2NvbnRlbnQtJUNPTVAlXTpob3ZlciwgLm1hdC1saXN0LXNpbmdsZS1zZWxlY3RlZC1vcHRpb25bX25nY29udGVudC0lQ09NUCVdOmZvY3Vze2JhY2tncm91bmQ6cmdiYSgwLDAsMCwuMTIpfS5tYXQtbWVudS1wYW5lbFtfbmdjb250ZW50LSVDT01QJV17YmFja2dyb3VuZDojZmZmfS5tYXQtbWVudS1wYW5lbFtfbmdjb250ZW50LSVDT01QJV06bm90KFtjbGFzcyo9bWF0LWVsZXZhdGlvbi16XSl7Ym94LXNoYWRvdzowcHggMnB4IDRweCAtMXB4IHJnYmEoMCwgMCwgMCwgMC4yKSwwcHggNHB4IDVweCAwcHggcmdiYSgwLCAwLCAwLCAwLjE0KSwwcHggMXB4IDEwcHggMHB4IHJnYmEoMCwgMCwgMCwgMC4xMil9Lm1hdC1tZW51LWl0ZW1bX25nY29udGVudC0lQ09NUCVde2JhY2tncm91bmQ6dHJhbnNwYXJlbnQ7Y29sb3I6IzIxMjEyMX0ubWF0LW1lbnUtaXRlbVtkaXNhYmxlZF1bX25nY29udGVudC0lQ09NUCVdLCAubWF0LW1lbnUtaXRlbVtkaXNhYmxlZF1bX25nY29udGVudC0lQ09NUCVdOjphZnRlcntjb2xvcjpyZ2JhKDAsMCwwLC4zOCl9Lm1hdC1tZW51LWl0ZW1bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pY29uLW5vLWNvbG9yW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1tZW51LWl0ZW0tc3VibWVudS10cmlnZ2VyW19uZ2NvbnRlbnQtJUNPTVAlXTo6YWZ0ZXJ7Y29sb3I6cmdiYSgwLDAsMCwuNTQpfS5tYXQtbWVudS1pdGVtW19uZ2NvbnRlbnQtJUNPTVAlXTpob3Zlcjpub3QoW2Rpc2FibGVkXSksIC5tYXQtbWVudS1pdGVtLmNkay1wcm9ncmFtLWZvY3VzZWRbX25nY29udGVudC0lQ09NUCVdOm5vdChbZGlzYWJsZWRdKSwgLm1hdC1tZW51LWl0ZW0uY2RrLWtleWJvYXJkLWZvY3VzZWRbX25nY29udGVudC0lQ09NUCVdOm5vdChbZGlzYWJsZWRdKSwgLm1hdC1tZW51LWl0ZW0taGlnaGxpZ2h0ZWRbX25nY29udGVudC0lQ09NUCVdOm5vdChbZGlzYWJsZWRdKXtiYWNrZ3JvdW5kOnJnYmEoMCwwLDAsLjA0KX0ubWF0LXBhZ2luYXRvcltfbmdjb250ZW50LSVDT01QJV17YmFja2dyb3VuZDojZmZmfS5tYXQtcGFnaW5hdG9yW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1wYWdpbmF0b3ItcGFnZS1zaXplW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtc2VsZWN0LXRyaWdnZXJbX25nY29udGVudC0lQ09NUCVde2NvbG9yOiM2MTYxNjF9Lm1hdC1wYWdpbmF0b3ItZGVjcmVtZW50W19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1wYWdpbmF0b3ItaW5jcmVtZW50W19uZ2NvbnRlbnQtJUNPTVAlXXtib3JkZXItdG9wOjJweCBzb2xpZCByZ2JhKDAsMCwwLC41NCk7Ym9yZGVyLXJpZ2h0OjJweCBzb2xpZCByZ2JhKDAsMCwwLC41NCl9Lm1hdC1wYWdpbmF0b3ItZmlyc3RbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXBhZ2luYXRvci1sYXN0W19uZ2NvbnRlbnQtJUNPTVAlXXtib3JkZXItdG9wOjJweCBzb2xpZCByZ2JhKDAsMCwwLC41NCl9Lm1hdC1pY29uLWJ1dHRvbltkaXNhYmxlZF1bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1wYWdpbmF0b3ItZGVjcmVtZW50W19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1pY29uLWJ1dHRvbltkaXNhYmxlZF1bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1wYWdpbmF0b3ItaW5jcmVtZW50W19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1pY29uLWJ1dHRvbltkaXNhYmxlZF1bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1wYWdpbmF0b3ItZmlyc3RbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWljb24tYnV0dG9uW2Rpc2FibGVkXVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXBhZ2luYXRvci1sYXN0W19uZ2NvbnRlbnQtJUNPTVAlXXtib3JkZXItY29sb3I6cmdiYSgwLDAsMCwuMzgpfS5tYXQtcGFnaW5hdG9yLWNvbnRhaW5lcltfbmdjb250ZW50LSVDT01QJV17bWluLWhlaWdodDo1NnB4fS5tYXQtcHJvZ3Jlc3MtYmFyLWJhY2tncm91bmRbX25nY29udGVudC0lQ09NUCVde2ZpbGw6I2ZmOTgwMH0ubWF0LXByb2dyZXNzLWJhci1idWZmZXJbX25nY29udGVudC0lQ09NUCVde2JhY2tncm91bmQtY29sb3I6I2ZmOTgwMH0ubWF0LXByb2dyZXNzLWJhci1maWxsW19uZ2NvbnRlbnQtJUNPTVAlXTo6YWZ0ZXJ7YmFja2dyb3VuZC1jb2xvcjojZjU3YzAwfS5tYXQtcHJvZ3Jlc3MtYmFyLm1hdC1hY2NlbnRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1wcm9ncmVzcy1iYXItYmFja2dyb3VuZFtfbmdjb250ZW50LSVDT01QJV17ZmlsbDojZmY5ODAwfS5tYXQtcHJvZ3Jlc3MtYmFyLm1hdC1hY2NlbnRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1wcm9ncmVzcy1iYXItYnVmZmVyW19uZ2NvbnRlbnQtJUNPTVAlXXtiYWNrZ3JvdW5kLWNvbG9yOiNmZjk4MDB9Lm1hdC1wcm9ncmVzcy1iYXIubWF0LWFjY2VudFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXByb2dyZXNzLWJhci1maWxsW19uZ2NvbnRlbnQtJUNPTVAlXTo6YWZ0ZXJ7YmFja2dyb3VuZC1jb2xvcjojZmY5ODAwfS5tYXQtcHJvZ3Jlc3MtYmFyLm1hdC13YXJuW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtcHJvZ3Jlc3MtYmFyLWJhY2tncm91bmRbX25nY29udGVudC0lQ09NUCVde2ZpbGw6I2ZmY2RkMn0ubWF0LXByb2dyZXNzLWJhci5tYXQtd2Fybltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXByb2dyZXNzLWJhci1idWZmZXJbX25nY29udGVudC0lQ09NUCVde2JhY2tncm91bmQtY29sb3I6I2ZmY2RkMn0ubWF0LXByb2dyZXNzLWJhci5tYXQtd2Fybltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXByb2dyZXNzLWJhci1maWxsW19uZ2NvbnRlbnQtJUNPTVAlXTo6YWZ0ZXJ7YmFja2dyb3VuZC1jb2xvcjojZjQ0MzM2fS5tYXQtcHJvZ3Jlc3Mtc3Bpbm5lcltfbmdjb250ZW50LSVDT01QJV0gICBjaXJjbGVbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXNwaW5uZXJbX25nY29udGVudC0lQ09NUCVdICAgY2lyY2xlW19uZ2NvbnRlbnQtJUNPTVAlXXtzdHJva2U6I2Y1N2MwMH0ubWF0LXByb2dyZXNzLXNwaW5uZXIubWF0LWFjY2VudFtfbmdjb250ZW50LSVDT01QJV0gICBjaXJjbGVbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXNwaW5uZXIubWF0LWFjY2VudFtfbmdjb250ZW50LSVDT01QJV0gICBjaXJjbGVbX25nY29udGVudC0lQ09NUCVde3N0cm9rZTojZmY5ODAwfS5tYXQtcHJvZ3Jlc3Mtc3Bpbm5lci5tYXQtd2Fybltfbmdjb250ZW50LSVDT01QJV0gICBjaXJjbGVbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXNwaW5uZXIubWF0LXdhcm5bX25nY29udGVudC0lQ09NUCVdICAgY2lyY2xlW19uZ2NvbnRlbnQtJUNPTVAlXXtzdHJva2U6I2Y0NDMzNn0ubWF0LXJhZGlvLW91dGVyLWNpcmNsZVtfbmdjb250ZW50LSVDT01QJV17Ym9yZGVyLWNvbG9yOiM2MTYxNjF9Lm1hdC1yYWRpby1idXR0b24ubWF0LXByaW1hcnkubWF0LXJhZGlvLWNoZWNrZWRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1yYWRpby1vdXRlci1jaXJjbGVbX25nY29udGVudC0lQ09NUCVde2JvcmRlci1jb2xvcjojZjU3YzAwfS5tYXQtcmFkaW8tYnV0dG9uLm1hdC1wcmltYXJ5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtcmFkaW8taW5uZXItY2lyY2xlW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1yYWRpby1idXR0b24ubWF0LXByaW1hcnlbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1yYWRpby1yaXBwbGVbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1yaXBwbGUtZWxlbWVudFtfbmdjb250ZW50LSVDT01QJV06bm90KC5tYXQtcmFkaW8tcGVyc2lzdGVudC1yaXBwbGUpLCAubWF0LXJhZGlvLWJ1dHRvbi5tYXQtcHJpbWFyeS5tYXQtcmFkaW8tY2hlY2tlZFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXJhZGlvLXBlcnNpc3RlbnQtcmlwcGxlW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1yYWRpby1idXR0b24ubWF0LXByaW1hcnlbX25nY29udGVudC0lQ09NUCVdOmFjdGl2ZSAgIC5tYXQtcmFkaW8tcGVyc2lzdGVudC1yaXBwbGVbX25nY29udGVudC0lQ09NUCVde2JhY2tncm91bmQtY29sb3I6I2Y1N2MwMH0ubWF0LXJhZGlvLWJ1dHRvbi5tYXQtYWNjZW50Lm1hdC1yYWRpby1jaGVja2VkW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtcmFkaW8tb3V0ZXItY2lyY2xlW19uZ2NvbnRlbnQtJUNPTVAlXXtib3JkZXItY29sb3I6I2ZmOTgwMH0ubWF0LXJhZGlvLWJ1dHRvbi5tYXQtYWNjZW50W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtcmFkaW8taW5uZXItY2lyY2xlW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1yYWRpby1idXR0b24ubWF0LWFjY2VudFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXJhZGlvLXJpcHBsZVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXJpcHBsZS1lbGVtZW50W19uZ2NvbnRlbnQtJUNPTVAlXTpub3QoLm1hdC1yYWRpby1wZXJzaXN0ZW50LXJpcHBsZSksIC5tYXQtcmFkaW8tYnV0dG9uLm1hdC1hY2NlbnQubWF0LXJhZGlvLWNoZWNrZWRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1yYWRpby1wZXJzaXN0ZW50LXJpcHBsZVtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtcmFkaW8tYnV0dG9uLm1hdC1hY2NlbnRbX25nY29udGVudC0lQ09NUCVdOmFjdGl2ZSAgIC5tYXQtcmFkaW8tcGVyc2lzdGVudC1yaXBwbGVbX25nY29udGVudC0lQ09NUCVde2JhY2tncm91bmQtY29sb3I6I2ZmOTgwMH0ubWF0LXJhZGlvLWJ1dHRvbi5tYXQtd2Fybi5tYXQtcmFkaW8tY2hlY2tlZFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXJhZGlvLW91dGVyLWNpcmNsZVtfbmdjb250ZW50LSVDT01QJV17Ym9yZGVyLWNvbG9yOiNmNDQzMzZ9Lm1hdC1yYWRpby1idXR0b24ubWF0LXdhcm5bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1yYWRpby1pbm5lci1jaXJjbGVbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXJhZGlvLWJ1dHRvbi5tYXQtd2Fybltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXJhZGlvLXJpcHBsZVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXJpcHBsZS1lbGVtZW50W19uZ2NvbnRlbnQtJUNPTVAlXTpub3QoLm1hdC1yYWRpby1wZXJzaXN0ZW50LXJpcHBsZSksIC5tYXQtcmFkaW8tYnV0dG9uLm1hdC13YXJuLm1hdC1yYWRpby1jaGVja2VkW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtcmFkaW8tcGVyc2lzdGVudC1yaXBwbGVbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXJhZGlvLWJ1dHRvbi5tYXQtd2Fybltfbmdjb250ZW50LSVDT01QJV06YWN0aXZlICAgLm1hdC1yYWRpby1wZXJzaXN0ZW50LXJpcHBsZVtfbmdjb250ZW50LSVDT01QJV17YmFja2dyb3VuZC1jb2xvcjojZjQ0MzM2fS5tYXQtcmFkaW8tYnV0dG9uLm1hdC1yYWRpby1kaXNhYmxlZC5tYXQtcmFkaW8tY2hlY2tlZFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXJhZGlvLW91dGVyLWNpcmNsZVtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtcmFkaW8tYnV0dG9uLm1hdC1yYWRpby1kaXNhYmxlZFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXJhZGlvLW91dGVyLWNpcmNsZVtfbmdjb250ZW50LSVDT01QJV17Ym9yZGVyLWNvbG9yOnJnYmEoMCwwLDAsLjM4KX0ubWF0LXJhZGlvLWJ1dHRvbi5tYXQtcmFkaW8tZGlzYWJsZWRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1yYWRpby1yaXBwbGVbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1yaXBwbGUtZWxlbWVudFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtcmFkaW8tYnV0dG9uLm1hdC1yYWRpby1kaXNhYmxlZFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXJhZGlvLWlubmVyLWNpcmNsZVtfbmdjb250ZW50LSVDT01QJV17YmFja2dyb3VuZC1jb2xvcjpyZ2JhKDAsMCwwLC4zOCl9Lm1hdC1yYWRpby1idXR0b24ubWF0LXJhZGlvLWRpc2FibGVkW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtcmFkaW8tbGFiZWwtY29udGVudFtfbmdjb250ZW50LSVDT01QJV17Y29sb3I6cmdiYSgwLDAsMCwuMzgpfS5tYXQtcmFkaW8tYnV0dG9uW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtcmlwcGxlLWVsZW1lbnRbX25nY29udGVudC0lQ09NUCVde2JhY2tncm91bmQtY29sb3I6IzAwMH0ubWF0LXNlbGVjdC12YWx1ZVtfbmdjb250ZW50LSVDT01QJV17Y29sb3I6IzIxMjEyMX0ubWF0LXNlbGVjdC1wbGFjZWhvbGRlcltfbmdjb250ZW50LSVDT01QJV17Y29sb3I6cmdiYSg5Nyw5Nyw5NywuNDIpfS5tYXQtc2VsZWN0LWRpc2FibGVkW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtc2VsZWN0LXZhbHVlW19uZ2NvbnRlbnQtJUNPTVAlXXtjb2xvcjojNzU3NTc1fS5tYXQtc2VsZWN0LWFycm93W19uZ2NvbnRlbnQtJUNPTVAlXXtjb2xvcjojNjE2MTYxfS5tYXQtc2VsZWN0LXBhbmVsW19uZ2NvbnRlbnQtJUNPTVAlXXtiYWNrZ3JvdW5kOiNmZmZ9Lm1hdC1zZWxlY3QtcGFuZWxbX25nY29udGVudC0lQ09NUCVdOm5vdChbY2xhc3MqPW1hdC1lbGV2YXRpb24tel0pe2JveC1zaGFkb3c6MHB4IDJweCA0cHggLTFweCByZ2JhKDAsIDAsIDAsIDAuMiksMHB4IDRweCA1cHggMHB4IHJnYmEoMCwgMCwgMCwgMC4xNCksMHB4IDFweCAxMHB4IDBweCByZ2JhKDAsIDAsIDAsIDAuMTIpfS5tYXQtc2VsZWN0LXBhbmVsW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtb3B0aW9uLm1hdC1zZWxlY3RlZFtfbmdjb250ZW50LSVDT01QJV06bm90KC5tYXQtb3B0aW9uLW11bHRpcGxlKXtiYWNrZ3JvdW5kOnJnYmEoMCwwLDAsLjEyKX0ubWF0LWZvcm0tZmllbGQubWF0LWZvY3VzZWQubWF0LXByaW1hcnlbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1zZWxlY3QtYXJyb3dbX25nY29udGVudC0lQ09NUCVde2NvbG9yOiNmNTdjMDB9Lm1hdC1mb3JtLWZpZWxkLm1hdC1mb2N1c2VkLm1hdC1hY2NlbnRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1zZWxlY3QtYXJyb3dbX25nY29udGVudC0lQ09NUCVde2NvbG9yOiNmZjk4MDB9Lm1hdC1mb3JtLWZpZWxkLm1hdC1mb2N1c2VkLm1hdC13YXJuW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtc2VsZWN0LWFycm93W19uZ2NvbnRlbnQtJUNPTVAlXXtjb2xvcjojZjQ0MzM2fS5tYXQtZm9ybS1maWVsZFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXNlbGVjdC5tYXQtc2VsZWN0LWludmFsaWRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1zZWxlY3QtYXJyb3dbX25nY29udGVudC0lQ09NUCVde2NvbG9yOiNmNDQzMzZ9Lm1hdC1mb3JtLWZpZWxkW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtc2VsZWN0Lm1hdC1zZWxlY3QtZGlzYWJsZWRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1zZWxlY3QtYXJyb3dbX25nY29udGVudC0lQ09NUCVde2NvbG9yOiM3NTc1NzV9Lm1hdC1kcmF3ZXItY29udGFpbmVyW19uZ2NvbnRlbnQtJUNPTVAlXXtiYWNrZ3JvdW5kLWNvbG9yOiNmYWZhZmE7Y29sb3I6IzIxMjEyMX0ubWF0LWRyYXdlcltfbmdjb250ZW50LSVDT01QJV17YmFja2dyb3VuZC1jb2xvcjojZmZmO2NvbG9yOiMyMTIxMjF9Lm1hdC1kcmF3ZXIubWF0LWRyYXdlci1wdXNoW19uZ2NvbnRlbnQtJUNPTVAlXXtiYWNrZ3JvdW5kLWNvbG9yOiNmZmZ9Lm1hdC1kcmF3ZXJbX25nY29udGVudC0lQ09NUCVdOm5vdCgubWF0LWRyYXdlci1zaWRlKXtib3gtc2hhZG93OjBweCA4cHggMTBweCAtNXB4IHJnYmEoMCwgMCwgMCwgMC4yKSwwcHggMTZweCAyNHB4IDJweCByZ2JhKDAsIDAsIDAsIDAuMTQpLDBweCA2cHggMzBweCA1cHggcmdiYSgwLCAwLCAwLCAwLjEyKX0ubWF0LWRyYXdlci1zaWRlW19uZ2NvbnRlbnQtJUNPTVAlXXtib3JkZXItcmlnaHQ6c29saWQgMXB4IHJnYmEoMCwwLDAsLjEyKX0ubWF0LWRyYXdlci1zaWRlLm1hdC1kcmF3ZXItZW5kW19uZ2NvbnRlbnQtJUNPTVAlXXtib3JkZXItbGVmdDpzb2xpZCAxcHggcmdiYSgwLDAsMCwuMTIpO2JvcmRlci1yaWdodDpub25lfVtkaXI9cnRsXVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWRyYXdlci1zaWRlW19uZ2NvbnRlbnQtJUNPTVAlXXtib3JkZXItbGVmdDpzb2xpZCAxcHggcmdiYSgwLDAsMCwuMTIpO2JvcmRlci1yaWdodDpub25lfVtkaXI9cnRsXVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWRyYXdlci1zaWRlLm1hdC1kcmF3ZXItZW5kW19uZ2NvbnRlbnQtJUNPTVAlXXtib3JkZXItbGVmdDpub25lO2JvcmRlci1yaWdodDpzb2xpZCAxcHggcmdiYSgwLDAsMCwuMTIpfS5tYXQtZHJhd2VyLWJhY2tkcm9wLm1hdC1kcmF3ZXItc2hvd25bX25nY29udGVudC0lQ09NUCVde2JhY2tncm91bmQtY29sb3I6cmdiYSgwLDAsMCwuNil9Lm1hdC1zbGlkZS10b2dnbGUubWF0LWNoZWNrZWRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1zbGlkZS10b2dnbGUtdGh1bWJbX25nY29udGVudC0lQ09NUCVde2JhY2tncm91bmQtY29sb3I6I2ZmOTgwMH0ubWF0LXNsaWRlLXRvZ2dsZS5tYXQtY2hlY2tlZFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXNsaWRlLXRvZ2dsZS1iYXJbX25nY29udGVudC0lQ09NUCVde2JhY2tncm91bmQtY29sb3I6cmdiYSgyNTUsMTUyLDAsLjU0KX0ubWF0LXNsaWRlLXRvZ2dsZS5tYXQtY2hlY2tlZFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXJpcHBsZS1lbGVtZW50W19uZ2NvbnRlbnQtJUNPTVAlXXtiYWNrZ3JvdW5kLWNvbG9yOiNmZjk4MDB9Lm1hdC1zbGlkZS10b2dnbGUubWF0LXByaW1hcnkubWF0LWNoZWNrZWRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1zbGlkZS10b2dnbGUtdGh1bWJbX25nY29udGVudC0lQ09NUCVde2JhY2tncm91bmQtY29sb3I6I2Y1N2MwMH0ubWF0LXNsaWRlLXRvZ2dsZS5tYXQtcHJpbWFyeS5tYXQtY2hlY2tlZFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXNsaWRlLXRvZ2dsZS1iYXJbX25nY29udGVudC0lQ09NUCVde2JhY2tncm91bmQtY29sb3I6cmdiYSgyNDUsMTI0LDAsLjU0KX0ubWF0LXNsaWRlLXRvZ2dsZS5tYXQtcHJpbWFyeS5tYXQtY2hlY2tlZFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXJpcHBsZS1lbGVtZW50W19uZ2NvbnRlbnQtJUNPTVAlXXtiYWNrZ3JvdW5kLWNvbG9yOiNmNTdjMDB9Lm1hdC1zbGlkZS10b2dnbGUubWF0LXdhcm4ubWF0LWNoZWNrZWRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1zbGlkZS10b2dnbGUtdGh1bWJbX25nY29udGVudC0lQ09NUCVde2JhY2tncm91bmQtY29sb3I6I2Y0NDMzNn0ubWF0LXNsaWRlLXRvZ2dsZS5tYXQtd2Fybi5tYXQtY2hlY2tlZFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXNsaWRlLXRvZ2dsZS1iYXJbX25nY29udGVudC0lQ09NUCVde2JhY2tncm91bmQtY29sb3I6cmdiYSgyNDQsNjcsNTQsLjU0KX0ubWF0LXNsaWRlLXRvZ2dsZS5tYXQtd2Fybi5tYXQtY2hlY2tlZFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXJpcHBsZS1lbGVtZW50W19uZ2NvbnRlbnQtJUNPTVAlXXtiYWNrZ3JvdW5kLWNvbG9yOiNmNDQzMzZ9Lm1hdC1zbGlkZS10b2dnbGVbX25nY29udGVudC0lQ09NUCVdOm5vdCgubWF0LWNoZWNrZWQpICAgLm1hdC1yaXBwbGUtZWxlbWVudFtfbmdjb250ZW50LSVDT01QJV17YmFja2dyb3VuZC1jb2xvcjojMDAwfS5tYXQtc2xpZGUtdG9nZ2xlLXRodW1iW19uZ2NvbnRlbnQtJUNPTVAlXXtib3gtc2hhZG93OjBweCAycHggMXB4IC0xcHggcmdiYSgwLCAwLCAwLCAwLjIpLDBweCAxcHggMXB4IDBweCByZ2JhKDAsIDAsIDAsIDAuMTQpLDBweCAxcHggM3B4IDBweCByZ2JhKDAsIDAsIDAsIDAuMTIpO2JhY2tncm91bmQtY29sb3I6I2ZhZmFmYX0ubWF0LXNsaWRlLXRvZ2dsZS1iYXJbX25nY29udGVudC0lQ09NUCVde2JhY2tncm91bmQtY29sb3I6cmdiYSgwLDAsMCwuMzgpfS5tYXQtc2xpZGVyLXRyYWNrLWJhY2tncm91bmRbX25nY29udGVudC0lQ09NUCVde2JhY2tncm91bmQtY29sb3I6cmdiYSgwLDAsMCwuMjYpfS5tYXQtcHJpbWFyeVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXNsaWRlci10cmFjay1maWxsW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1wcmltYXJ5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtc2xpZGVyLXRodW1iW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1wcmltYXJ5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtc2xpZGVyLXRodW1iLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXtiYWNrZ3JvdW5kLWNvbG9yOiNmNTdjMDB9Lm1hdC1wcmltYXJ5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtc2xpZGVyLXRodW1iLWxhYmVsLXRleHRbX25nY29udGVudC0lQ09NUCVde2NvbG9yOiNmZmZ9Lm1hdC1wcmltYXJ5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtc2xpZGVyLWZvY3VzLXJpbmdbX25nY29udGVudC0lQ09NUCVde2JhY2tncm91bmQtY29sb3I6cmdiYSgyNDUsMTI0LDAsLjIpfS5tYXQtYWNjZW50W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtc2xpZGVyLXRyYWNrLWZpbGxbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWFjY2VudFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXNsaWRlci10aHVtYltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtYWNjZW50W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtc2xpZGVyLXRodW1iLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXtiYWNrZ3JvdW5kLWNvbG9yOiNmZjk4MDB9Lm1hdC1hY2NlbnRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1zbGlkZXItdGh1bWItbGFiZWwtdGV4dFtfbmdjb250ZW50LSVDT01QJV17Y29sb3I6I2ZmZn0ubWF0LWFjY2VudFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXNsaWRlci1mb2N1cy1yaW5nW19uZ2NvbnRlbnQtJUNPTVAlXXtiYWNrZ3JvdW5kLWNvbG9yOnJnYmEoMjU1LDE1MiwwLC4yKX0ubWF0LXdhcm5bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1zbGlkZXItdHJhY2stZmlsbFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtd2Fybltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXNsaWRlci10aHVtYltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtd2Fybltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXNsaWRlci10aHVtYi1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17YmFja2dyb3VuZC1jb2xvcjojZjQ0MzM2fS5tYXQtd2Fybltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXNsaWRlci10aHVtYi1sYWJlbC10ZXh0W19uZ2NvbnRlbnQtJUNPTVAlXXtjb2xvcjojZmZmfS5tYXQtd2Fybltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXNsaWRlci1mb2N1cy1yaW5nW19uZ2NvbnRlbnQtJUNPTVAlXXtiYWNrZ3JvdW5kLWNvbG9yOnJnYmEoMjQ0LDY3LDU0LC4yKX0ubWF0LXNsaWRlcltfbmdjb250ZW50LSVDT01QJV06aG92ZXIgICAubWF0LXNsaWRlci10cmFjay1iYWNrZ3JvdW5kW19uZ2NvbnRlbnQtJUNPTVAlXSwgLmNkay1mb2N1c2VkW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtc2xpZGVyLXRyYWNrLWJhY2tncm91bmRbX25nY29udGVudC0lQ09NUCVde2JhY2tncm91bmQtY29sb3I6cmdiYSgwLDAsMCwuMzgpfS5tYXQtc2xpZGVyLWRpc2FibGVkW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtc2xpZGVyLXRyYWNrLWJhY2tncm91bmRbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXNsaWRlci1kaXNhYmxlZFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXNsaWRlci10cmFjay1maWxsW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1zbGlkZXItZGlzYWJsZWRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1zbGlkZXItdGh1bWJbX25nY29udGVudC0lQ09NUCVde2JhY2tncm91bmQtY29sb3I6cmdiYSgwLDAsMCwuMjYpfS5tYXQtc2xpZGVyLWRpc2FibGVkW19uZ2NvbnRlbnQtJUNPTVAlXTpob3ZlciAgIC5tYXQtc2xpZGVyLXRyYWNrLWJhY2tncm91bmRbX25nY29udGVudC0lQ09NUCVde2JhY2tncm91bmQtY29sb3I6cmdiYSgwLDAsMCwuMjYpfS5tYXQtc2xpZGVyLW1pbi12YWx1ZVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXNsaWRlci1mb2N1cy1yaW5nW19uZ2NvbnRlbnQtJUNPTVAlXXtiYWNrZ3JvdW5kLWNvbG9yOnJnYmEoMCwwLDAsLjEyKX0ubWF0LXNsaWRlci1taW4tdmFsdWUubWF0LXNsaWRlci10aHVtYi1sYWJlbC1zaG93aW5nW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtc2xpZGVyLXRodW1iW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1zbGlkZXItbWluLXZhbHVlLm1hdC1zbGlkZXItdGh1bWItbGFiZWwtc2hvd2luZ1tfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXNsaWRlci10aHVtYi1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17YmFja2dyb3VuZC1jb2xvcjpyZ2JhKDAsMCwwLC44Nyl9Lm1hdC1zbGlkZXItbWluLXZhbHVlLm1hdC1zbGlkZXItdGh1bWItbGFiZWwtc2hvd2luZy5jZGstZm9jdXNlZFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXNsaWRlci10aHVtYltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtc2xpZGVyLW1pbi12YWx1ZS5tYXQtc2xpZGVyLXRodW1iLWxhYmVsLXNob3dpbmcuY2RrLWZvY3VzZWRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1zbGlkZXItdGh1bWItbGFiZWxbX25nY29udGVudC0lQ09NUCVde2JhY2tncm91bmQtY29sb3I6cmdiYSgwLDAsMCwuMjYpfS5tYXQtc2xpZGVyLW1pbi12YWx1ZVtfbmdjb250ZW50LSVDT01QJV06bm90KC5tYXQtc2xpZGVyLXRodW1iLWxhYmVsLXNob3dpbmcpICAgLm1hdC1zbGlkZXItdGh1bWJbX25nY29udGVudC0lQ09NUCVde2JvcmRlci1jb2xvcjpyZ2JhKDAsMCwwLC4yNik7YmFja2dyb3VuZC1jb2xvcjp0cmFuc3BhcmVudH0ubWF0LXNsaWRlci1taW4tdmFsdWVbX25nY29udGVudC0lQ09NUCVdOm5vdCgubWF0LXNsaWRlci10aHVtYi1sYWJlbC1zaG93aW5nKTpob3ZlciAgIC5tYXQtc2xpZGVyLXRodW1iW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1zbGlkZXItbWluLXZhbHVlW19uZ2NvbnRlbnQtJUNPTVAlXTpub3QoLm1hdC1zbGlkZXItdGh1bWItbGFiZWwtc2hvd2luZykuY2RrLWZvY3VzZWQgICAubWF0LXNsaWRlci10aHVtYltfbmdjb250ZW50LSVDT01QJV17Ym9yZGVyLWNvbG9yOnJnYmEoMCwwLDAsLjM4KX0ubWF0LXNsaWRlci1taW4tdmFsdWVbX25nY29udGVudC0lQ09NUCVdOm5vdCgubWF0LXNsaWRlci10aHVtYi1sYWJlbC1zaG93aW5nKTpob3Zlci5tYXQtc2xpZGVyLWRpc2FibGVkICAgLm1hdC1zbGlkZXItdGh1bWJbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXNsaWRlci1taW4tdmFsdWVbX25nY29udGVudC0lQ09NUCVdOm5vdCgubWF0LXNsaWRlci10aHVtYi1sYWJlbC1zaG93aW5nKS5jZGstZm9jdXNlZC5tYXQtc2xpZGVyLWRpc2FibGVkICAgLm1hdC1zbGlkZXItdGh1bWJbX25nY29udGVudC0lQ09NUCVde2JvcmRlci1jb2xvcjpyZ2JhKDAsMCwwLC4yNil9Lm1hdC1zbGlkZXItaGFzLXRpY2tzW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtc2xpZGVyLXdyYXBwZXJbX25nY29udGVudC0lQ09NUCVdOjphZnRlcntib3JkZXItY29sb3I6cmdiYSgwLDAsMCwuNyl9Lm1hdC1zbGlkZXItaG9yaXpvbnRhbFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXNsaWRlci10aWNrc1tfbmdjb250ZW50LSVDT01QJV17YmFja2dyb3VuZC1pbWFnZTpyZXBlYXRpbmctbGluZWFyLWdyYWRpZW50KHRvIHJpZ2h0LCByZ2JhKDAsIDAsIDAsIDAuNyksIHJnYmEoMCwgMCwgMCwgMC43KSAycHgsIHRyYW5zcGFyZW50IDAsIHRyYW5zcGFyZW50KTtiYWNrZ3JvdW5kLWltYWdlOi1tb3otcmVwZWF0aW5nLWxpbmVhci1ncmFkaWVudCgwLjAwMDFkZWcsIHJnYmEoMCwgMCwgMCwgMC43KSwgcmdiYSgwLCAwLCAwLCAwLjcpIDJweCwgdHJhbnNwYXJlbnQgMCwgdHJhbnNwYXJlbnQpfS5tYXQtc2xpZGVyLXZlcnRpY2FsW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtc2xpZGVyLXRpY2tzW19uZ2NvbnRlbnQtJUNPTVAlXXtiYWNrZ3JvdW5kLWltYWdlOnJlcGVhdGluZy1saW5lYXItZ3JhZGllbnQodG8gYm90dG9tLCByZ2JhKDAsIDAsIDAsIDAuNyksIHJnYmEoMCwgMCwgMCwgMC43KSAycHgsIHRyYW5zcGFyZW50IDAsIHRyYW5zcGFyZW50KX0ubWF0LXN0ZXAtaGVhZGVyLmNkay1rZXlib2FyZC1mb2N1c2VkW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1zdGVwLWhlYWRlci5jZGstcHJvZ3JhbS1mb2N1c2VkW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1zdGVwLWhlYWRlcltfbmdjb250ZW50LSVDT01QJV06aG92ZXJ7YmFja2dyb3VuZC1jb2xvcjpyZ2JhKDAsMCwwLC4wNCl9QG1lZGlhKGhvdmVyOiBub25lKXsubWF0LXN0ZXAtaGVhZGVyW19uZ2NvbnRlbnQtJUNPTVAlXTpob3ZlcntiYWNrZ3JvdW5kOm5vbmV9fS5tYXQtc3RlcC1oZWFkZXJbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1zdGVwLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1zdGVwLWhlYWRlcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXN0ZXAtb3B0aW9uYWxbX25nY29udGVudC0lQ09NUCVde2NvbG9yOiM2MTYxNjF9Lm1hdC1zdGVwLWhlYWRlcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXN0ZXAtaWNvbltfbmdjb250ZW50LSVDT01QJV17YmFja2dyb3VuZC1jb2xvcjojNjE2MTYxO2NvbG9yOiNmZmZ9Lm1hdC1zdGVwLWhlYWRlcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXN0ZXAtaWNvbi1zZWxlY3RlZFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtc3RlcC1oZWFkZXJbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1zdGVwLWljb24tc3RhdGUtZG9uZVtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtc3RlcC1oZWFkZXJbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1zdGVwLWljb24tc3RhdGUtZWRpdFtfbmdjb250ZW50LSVDT01QJV17YmFja2dyb3VuZC1jb2xvcjojZjU3YzAwO2NvbG9yOiNmZmZ9Lm1hdC1zdGVwLWhlYWRlcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXN0ZXAtaWNvbi1zdGF0ZS1lcnJvcltfbmdjb250ZW50LSVDT01QJV17YmFja2dyb3VuZC1jb2xvcjp0cmFuc3BhcmVudDtjb2xvcjojZjQ0MzM2fS5tYXQtc3RlcC1oZWFkZXJbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1zdGVwLWxhYmVsLm1hdC1zdGVwLWxhYmVsLWFjdGl2ZVtfbmdjb250ZW50LSVDT01QJV17Y29sb3I6IzIxMjEyMX0ubWF0LXN0ZXAtaGVhZGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtc3RlcC1sYWJlbC5tYXQtc3RlcC1sYWJlbC1lcnJvcltfbmdjb250ZW50LSVDT01QJV17Y29sb3I6I2Y0NDMzNn0ubWF0LXN0ZXBwZXItaG9yaXpvbnRhbFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtc3RlcHBlci12ZXJ0aWNhbFtfbmdjb250ZW50LSVDT01QJV17YmFja2dyb3VuZC1jb2xvcjojZmZmfS5tYXQtc3RlcHBlci12ZXJ0aWNhbC1saW5lW19uZ2NvbnRlbnQtJUNPTVAlXTo6YmVmb3Jle2JvcmRlci1sZWZ0LWNvbG9yOnJnYmEoMCwwLDAsLjEyKX0ubWF0LWhvcml6b250YWwtc3RlcHBlci1oZWFkZXJbX25nY29udGVudC0lQ09NUCVdOjpiZWZvcmUsIC5tYXQtaG9yaXpvbnRhbC1zdGVwcGVyLWhlYWRlcltfbmdjb250ZW50LSVDT01QJV06OmFmdGVyLCAubWF0LXN0ZXBwZXItaG9yaXpvbnRhbC1saW5lW19uZ2NvbnRlbnQtJUNPTVAlXXtib3JkZXItdG9wLWNvbG9yOnJnYmEoMCwwLDAsLjEyKX0ubWF0LWhvcml6b250YWwtc3RlcHBlci1oZWFkZXJbX25nY29udGVudC0lQ09NUCVde2hlaWdodDo3MnB4fS5tYXQtc3RlcHBlci1sYWJlbC1wb3NpdGlvbi1ib3R0b21bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1ob3Jpem9udGFsLXN0ZXBwZXItaGVhZGVyW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC12ZXJ0aWNhbC1zdGVwcGVyLWhlYWRlcltfbmdjb250ZW50LSVDT01QJV17cGFkZGluZzoyNHB4IDI0cHh9Lm1hdC1zdGVwcGVyLXZlcnRpY2FsLWxpbmVbX25nY29udGVudC0lQ09NUCVdOjpiZWZvcmV7dG9wOi0xNnB4O2JvdHRvbTotMTZweH0ubWF0LXN0ZXBwZXItbGFiZWwtcG9zaXRpb24tYm90dG9tW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaG9yaXpvbnRhbC1zdGVwcGVyLWhlYWRlcltfbmdjb250ZW50LSVDT01QJV06OmFmdGVyLCAubWF0LXN0ZXBwZXItbGFiZWwtcG9zaXRpb24tYm90dG9tW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaG9yaXpvbnRhbC1zdGVwcGVyLWhlYWRlcltfbmdjb250ZW50LSVDT01QJV06OmJlZm9yZXt0b3A6MzZweH0ubWF0LXN0ZXBwZXItbGFiZWwtcG9zaXRpb24tYm90dG9tW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtc3RlcHBlci1ob3Jpem9udGFsLWxpbmVbX25nY29udGVudC0lQ09NUCVde3RvcDozNnB4fS5tYXQtc29ydC1oZWFkZXItYXJyb3dbX25nY29udGVudC0lQ09NUCVde2NvbG9yOiM2MTYxNjF9Lm1hdC10YWItbmF2LWJhcltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdGFiLWhlYWRlcltfbmdjb250ZW50LSVDT01QJV17Ym9yZGVyLWJvdHRvbToxcHggc29saWQgcmdiYSgwLDAsMCwuMTIpfS5tYXQtdGFiLWdyb3VwLWludmVydGVkLWhlYWRlcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXRhYi1uYXYtYmFyW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10YWItZ3JvdXAtaW52ZXJ0ZWQtaGVhZGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtdGFiLWhlYWRlcltfbmdjb250ZW50LSVDT01QJV17Ym9yZGVyLXRvcDoxcHggc29saWQgcmdiYSgwLDAsMCwuMTIpO2JvcmRlci1ib3R0b206bm9uZX0ubWF0LXRhYi1sYWJlbFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdGFiLWxpbmtbX25nY29udGVudC0lQ09NUCVde2NvbG9yOiMyMTIxMjF9Lm1hdC10YWItbGFiZWwubWF0LXRhYi1kaXNhYmxlZFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdGFiLWxpbmsubWF0LXRhYi1kaXNhYmxlZFtfbmdjb250ZW50LSVDT01QJV17Y29sb3I6Izc1NzU3NX0ubWF0LXRhYi1oZWFkZXItcGFnaW5hdGlvbi1jaGV2cm9uW19uZ2NvbnRlbnQtJUNPTVAlXXtib3JkZXItY29sb3I6IzIxMjEyMX0ubWF0LXRhYi1oZWFkZXItcGFnaW5hdGlvbi1kaXNhYmxlZFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXRhYi1oZWFkZXItcGFnaW5hdGlvbi1jaGV2cm9uW19uZ2NvbnRlbnQtJUNPTVAlXXtib3JkZXItY29sb3I6Izc1NzU3NX0ubWF0LXRhYi1ncm91cFtjbGFzcyo9bWF0LWJhY2tncm91bmQtXVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXRhYi1oZWFkZXJbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXRhYi1uYXYtYmFyW2NsYXNzKj1tYXQtYmFja2dyb3VuZC1dW19uZ2NvbnRlbnQtJUNPTVAlXXtib3JkZXItYm90dG9tOm5vbmU7Ym9yZGVyLXRvcDpub25lfS5tYXQtdGFiLWdyb3VwLm1hdC1wcmltYXJ5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtdGFiLWxhYmVsLmNkay1rZXlib2FyZC1mb2N1c2VkW19uZ2NvbnRlbnQtJUNPTVAlXTpub3QoLm1hdC10YWItZGlzYWJsZWQpLCAubWF0LXRhYi1ncm91cC5tYXQtcHJpbWFyeVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXRhYi1sYWJlbC5jZGstcHJvZ3JhbS1mb2N1c2VkW19uZ2NvbnRlbnQtJUNPTVAlXTpub3QoLm1hdC10YWItZGlzYWJsZWQpLCAubWF0LXRhYi1ncm91cC5tYXQtcHJpbWFyeVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXRhYi1saW5rLmNkay1rZXlib2FyZC1mb2N1c2VkW19uZ2NvbnRlbnQtJUNPTVAlXTpub3QoLm1hdC10YWItZGlzYWJsZWQpLCAubWF0LXRhYi1ncm91cC5tYXQtcHJpbWFyeVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXRhYi1saW5rLmNkay1wcm9ncmFtLWZvY3VzZWRbX25nY29udGVudC0lQ09NUCVdOm5vdCgubWF0LXRhYi1kaXNhYmxlZCksIC5tYXQtdGFiLW5hdi1iYXIubWF0LXByaW1hcnlbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC10YWItbGFiZWwuY2RrLWtleWJvYXJkLWZvY3VzZWRbX25nY29udGVudC0lQ09NUCVdOm5vdCgubWF0LXRhYi1kaXNhYmxlZCksIC5tYXQtdGFiLW5hdi1iYXIubWF0LXByaW1hcnlbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC10YWItbGFiZWwuY2RrLXByb2dyYW0tZm9jdXNlZFtfbmdjb250ZW50LSVDT01QJV06bm90KC5tYXQtdGFiLWRpc2FibGVkKSwgLm1hdC10YWItbmF2LWJhci5tYXQtcHJpbWFyeVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXRhYi1saW5rLmNkay1rZXlib2FyZC1mb2N1c2VkW19uZ2NvbnRlbnQtJUNPTVAlXTpub3QoLm1hdC10YWItZGlzYWJsZWQpLCAubWF0LXRhYi1uYXYtYmFyLm1hdC1wcmltYXJ5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtdGFiLWxpbmsuY2RrLXByb2dyYW0tZm9jdXNlZFtfbmdjb250ZW50LSVDT01QJV06bm90KC5tYXQtdGFiLWRpc2FibGVkKXtiYWNrZ3JvdW5kLWNvbG9yOnJnYmEoMjU1LDE1MiwwLC4zKX0ubWF0LXRhYi1ncm91cC5tYXQtcHJpbWFyeVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWluay1iYXJbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXRhYi1uYXYtYmFyLm1hdC1wcmltYXJ5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaW5rLWJhcltfbmdjb250ZW50LSVDT01QJV17YmFja2dyb3VuZC1jb2xvcjojZjU3YzAwfS5tYXQtdGFiLWdyb3VwLm1hdC1wcmltYXJ5Lm1hdC1iYWNrZ3JvdW5kLXByaW1hcnlbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pbmstYmFyW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10YWItbmF2LWJhci5tYXQtcHJpbWFyeS5tYXQtYmFja2dyb3VuZC1wcmltYXJ5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaW5rLWJhcltfbmdjb250ZW50LSVDT01QJV17YmFja2dyb3VuZC1jb2xvcjojZmZmfS5tYXQtdGFiLWdyb3VwLm1hdC1hY2NlbnRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC10YWItbGFiZWwuY2RrLWtleWJvYXJkLWZvY3VzZWRbX25nY29udGVudC0lQ09NUCVdOm5vdCgubWF0LXRhYi1kaXNhYmxlZCksIC5tYXQtdGFiLWdyb3VwLm1hdC1hY2NlbnRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC10YWItbGFiZWwuY2RrLXByb2dyYW0tZm9jdXNlZFtfbmdjb250ZW50LSVDT01QJV06bm90KC5tYXQtdGFiLWRpc2FibGVkKSwgLm1hdC10YWItZ3JvdXAubWF0LWFjY2VudFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXRhYi1saW5rLmNkay1rZXlib2FyZC1mb2N1c2VkW19uZ2NvbnRlbnQtJUNPTVAlXTpub3QoLm1hdC10YWItZGlzYWJsZWQpLCAubWF0LXRhYi1ncm91cC5tYXQtYWNjZW50W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtdGFiLWxpbmsuY2RrLXByb2dyYW0tZm9jdXNlZFtfbmdjb250ZW50LSVDT01QJV06bm90KC5tYXQtdGFiLWRpc2FibGVkKSwgLm1hdC10YWItbmF2LWJhci5tYXQtYWNjZW50W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtdGFiLWxhYmVsLmNkay1rZXlib2FyZC1mb2N1c2VkW19uZ2NvbnRlbnQtJUNPTVAlXTpub3QoLm1hdC10YWItZGlzYWJsZWQpLCAubWF0LXRhYi1uYXYtYmFyLm1hdC1hY2NlbnRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC10YWItbGFiZWwuY2RrLXByb2dyYW0tZm9jdXNlZFtfbmdjb250ZW50LSVDT01QJV06bm90KC5tYXQtdGFiLWRpc2FibGVkKSwgLm1hdC10YWItbmF2LWJhci5tYXQtYWNjZW50W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtdGFiLWxpbmsuY2RrLWtleWJvYXJkLWZvY3VzZWRbX25nY29udGVudC0lQ09NUCVdOm5vdCgubWF0LXRhYi1kaXNhYmxlZCksIC5tYXQtdGFiLW5hdi1iYXIubWF0LWFjY2VudFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXRhYi1saW5rLmNkay1wcm9ncmFtLWZvY3VzZWRbX25nY29udGVudC0lQ09NUCVdOm5vdCgubWF0LXRhYi1kaXNhYmxlZCl7YmFja2dyb3VuZC1jb2xvcjpyZ2JhKDI1NSwxNTIsMCwuMyl9Lm1hdC10YWItZ3JvdXAubWF0LWFjY2VudFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWluay1iYXJbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXRhYi1uYXYtYmFyLm1hdC1hY2NlbnRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pbmstYmFyW19uZ2NvbnRlbnQtJUNPTVAlXXtiYWNrZ3JvdW5kLWNvbG9yOiNmZjk4MDB9Lm1hdC10YWItZ3JvdXAubWF0LWFjY2VudC5tYXQtYmFja2dyb3VuZC1hY2NlbnRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pbmstYmFyW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10YWItbmF2LWJhci5tYXQtYWNjZW50Lm1hdC1iYWNrZ3JvdW5kLWFjY2VudFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWluay1iYXJbX25nY29udGVudC0lQ09NUCVde2JhY2tncm91bmQtY29sb3I6I2ZmZn0ubWF0LXRhYi1ncm91cC5tYXQtd2Fybltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXRhYi1sYWJlbC5jZGsta2V5Ym9hcmQtZm9jdXNlZFtfbmdjb250ZW50LSVDT01QJV06bm90KC5tYXQtdGFiLWRpc2FibGVkKSwgLm1hdC10YWItZ3JvdXAubWF0LXdhcm5bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC10YWItbGFiZWwuY2RrLXByb2dyYW0tZm9jdXNlZFtfbmdjb250ZW50LSVDT01QJV06bm90KC5tYXQtdGFiLWRpc2FibGVkKSwgLm1hdC10YWItZ3JvdXAubWF0LXdhcm5bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC10YWItbGluay5jZGsta2V5Ym9hcmQtZm9jdXNlZFtfbmdjb250ZW50LSVDT01QJV06bm90KC5tYXQtdGFiLWRpc2FibGVkKSwgLm1hdC10YWItZ3JvdXAubWF0LXdhcm5bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC10YWItbGluay5jZGstcHJvZ3JhbS1mb2N1c2VkW19uZ2NvbnRlbnQtJUNPTVAlXTpub3QoLm1hdC10YWItZGlzYWJsZWQpLCAubWF0LXRhYi1uYXYtYmFyLm1hdC13YXJuW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtdGFiLWxhYmVsLmNkay1rZXlib2FyZC1mb2N1c2VkW19uZ2NvbnRlbnQtJUNPTVAlXTpub3QoLm1hdC10YWItZGlzYWJsZWQpLCAubWF0LXRhYi1uYXYtYmFyLm1hdC13YXJuW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtdGFiLWxhYmVsLmNkay1wcm9ncmFtLWZvY3VzZWRbX25nY29udGVudC0lQ09NUCVdOm5vdCgubWF0LXRhYi1kaXNhYmxlZCksIC5tYXQtdGFiLW5hdi1iYXIubWF0LXdhcm5bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC10YWItbGluay5jZGsta2V5Ym9hcmQtZm9jdXNlZFtfbmdjb250ZW50LSVDT01QJV06bm90KC5tYXQtdGFiLWRpc2FibGVkKSwgLm1hdC10YWItbmF2LWJhci5tYXQtd2Fybltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXRhYi1saW5rLmNkay1wcm9ncmFtLWZvY3VzZWRbX25nY29udGVudC0lQ09NUCVdOm5vdCgubWF0LXRhYi1kaXNhYmxlZCl7YmFja2dyb3VuZC1jb2xvcjpyZ2JhKDI1NSwyMDUsMjEwLC4zKX0ubWF0LXRhYi1ncm91cC5tYXQtd2Fybltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWluay1iYXJbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXRhYi1uYXYtYmFyLm1hdC13YXJuW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaW5rLWJhcltfbmdjb250ZW50LSVDT01QJV17YmFja2dyb3VuZC1jb2xvcjojZjQ0MzM2fS5tYXQtdGFiLWdyb3VwLm1hdC13YXJuLm1hdC1iYWNrZ3JvdW5kLXdhcm5bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pbmstYmFyW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10YWItbmF2LWJhci5tYXQtd2Fybi5tYXQtYmFja2dyb3VuZC13YXJuW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaW5rLWJhcltfbmdjb250ZW50LSVDT01QJV17YmFja2dyb3VuZC1jb2xvcjojZmZmfS5tYXQtdGFiLWdyb3VwLm1hdC1iYWNrZ3JvdW5kLXByaW1hcnlbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC10YWItbGFiZWwuY2RrLWtleWJvYXJkLWZvY3VzZWRbX25nY29udGVudC0lQ09NUCVdOm5vdCgubWF0LXRhYi1kaXNhYmxlZCksIC5tYXQtdGFiLWdyb3VwLm1hdC1iYWNrZ3JvdW5kLXByaW1hcnlbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC10YWItbGFiZWwuY2RrLXByb2dyYW0tZm9jdXNlZFtfbmdjb250ZW50LSVDT01QJV06bm90KC5tYXQtdGFiLWRpc2FibGVkKSwgLm1hdC10YWItZ3JvdXAubWF0LWJhY2tncm91bmQtcHJpbWFyeVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXRhYi1saW5rLmNkay1rZXlib2FyZC1mb2N1c2VkW19uZ2NvbnRlbnQtJUNPTVAlXTpub3QoLm1hdC10YWItZGlzYWJsZWQpLCAubWF0LXRhYi1ncm91cC5tYXQtYmFja2dyb3VuZC1wcmltYXJ5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtdGFiLWxpbmsuY2RrLXByb2dyYW0tZm9jdXNlZFtfbmdjb250ZW50LSVDT01QJV06bm90KC5tYXQtdGFiLWRpc2FibGVkKSwgLm1hdC10YWItbmF2LWJhci5tYXQtYmFja2dyb3VuZC1wcmltYXJ5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtdGFiLWxhYmVsLmNkay1rZXlib2FyZC1mb2N1c2VkW19uZ2NvbnRlbnQtJUNPTVAlXTpub3QoLm1hdC10YWItZGlzYWJsZWQpLCAubWF0LXRhYi1uYXYtYmFyLm1hdC1iYWNrZ3JvdW5kLXByaW1hcnlbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC10YWItbGFiZWwuY2RrLXByb2dyYW0tZm9jdXNlZFtfbmdjb250ZW50LSVDT01QJV06bm90KC5tYXQtdGFiLWRpc2FibGVkKSwgLm1hdC10YWItbmF2LWJhci5tYXQtYmFja2dyb3VuZC1wcmltYXJ5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtdGFiLWxpbmsuY2RrLWtleWJvYXJkLWZvY3VzZWRbX25nY29udGVudC0lQ09NUCVdOm5vdCgubWF0LXRhYi1kaXNhYmxlZCksIC5tYXQtdGFiLW5hdi1iYXIubWF0LWJhY2tncm91bmQtcHJpbWFyeVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXRhYi1saW5rLmNkay1wcm9ncmFtLWZvY3VzZWRbX25nY29udGVudC0lQ09NUCVdOm5vdCgubWF0LXRhYi1kaXNhYmxlZCl7YmFja2dyb3VuZC1jb2xvcjpyZ2JhKDI1NSwxNTIsMCwuMyl9Lm1hdC10YWItZ3JvdXAubWF0LWJhY2tncm91bmQtcHJpbWFyeVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXRhYi1oZWFkZXJbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXRhYi1ncm91cC5tYXQtYmFja2dyb3VuZC1wcmltYXJ5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtdGFiLWxpbmtzW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10YWItZ3JvdXAubWF0LWJhY2tncm91bmQtcHJpbWFyeVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXRhYi1oZWFkZXItcGFnaW5hdGlvbltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdGFiLW5hdi1iYXIubWF0LWJhY2tncm91bmQtcHJpbWFyeVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXRhYi1oZWFkZXJbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXRhYi1uYXYtYmFyLm1hdC1iYWNrZ3JvdW5kLXByaW1hcnlbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC10YWItbGlua3NbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXRhYi1uYXYtYmFyLm1hdC1iYWNrZ3JvdW5kLXByaW1hcnlbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC10YWItaGVhZGVyLXBhZ2luYXRpb25bX25nY29udGVudC0lQ09NUCVde2JhY2tncm91bmQtY29sb3I6I2Y1N2MwMH0ubWF0LXRhYi1ncm91cC5tYXQtYmFja2dyb3VuZC1wcmltYXJ5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtdGFiLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10YWItZ3JvdXAubWF0LWJhY2tncm91bmQtcHJpbWFyeVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXRhYi1saW5rW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10YWItbmF2LWJhci5tYXQtYmFja2dyb3VuZC1wcmltYXJ5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtdGFiLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10YWItbmF2LWJhci5tYXQtYmFja2dyb3VuZC1wcmltYXJ5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtdGFiLWxpbmtbX25nY29udGVudC0lQ09NUCVde2NvbG9yOiNmZmZ9Lm1hdC10YWItZ3JvdXAubWF0LWJhY2tncm91bmQtcHJpbWFyeVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXRhYi1sYWJlbC5tYXQtdGFiLWRpc2FibGVkW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10YWItZ3JvdXAubWF0LWJhY2tncm91bmQtcHJpbWFyeVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXRhYi1saW5rLm1hdC10YWItZGlzYWJsZWRbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXRhYi1uYXYtYmFyLm1hdC1iYWNrZ3JvdW5kLXByaW1hcnlbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC10YWItbGFiZWwubWF0LXRhYi1kaXNhYmxlZFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdGFiLW5hdi1iYXIubWF0LWJhY2tncm91bmQtcHJpbWFyeVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXRhYi1saW5rLm1hdC10YWItZGlzYWJsZWRbX25nY29udGVudC0lQ09NUCVde2NvbG9yOnJnYmEoMjU1LDI1NSwyNTUsLjQpfS5tYXQtdGFiLWdyb3VwLm1hdC1iYWNrZ3JvdW5kLXByaW1hcnlbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC10YWItaGVhZGVyLXBhZ2luYXRpb24tY2hldnJvbltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdGFiLW5hdi1iYXIubWF0LWJhY2tncm91bmQtcHJpbWFyeVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXRhYi1oZWFkZXItcGFnaW5hdGlvbi1jaGV2cm9uW19uZ2NvbnRlbnQtJUNPTVAlXXtib3JkZXItY29sb3I6I2ZmZn0ubWF0LXRhYi1ncm91cC5tYXQtYmFja2dyb3VuZC1wcmltYXJ5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtdGFiLWhlYWRlci1wYWdpbmF0aW9uLWRpc2FibGVkW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtdGFiLWhlYWRlci1wYWdpbmF0aW9uLWNoZXZyb25bX25nY29udGVudC0lQ09NUCVdLCAubWF0LXRhYi1uYXYtYmFyLm1hdC1iYWNrZ3JvdW5kLXByaW1hcnlbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC10YWItaGVhZGVyLXBhZ2luYXRpb24tZGlzYWJsZWRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC10YWItaGVhZGVyLXBhZ2luYXRpb24tY2hldnJvbltfbmdjb250ZW50LSVDT01QJV17Ym9yZGVyLWNvbG9yOnJnYmEoMjU1LDI1NSwyNTUsLjQpfS5tYXQtdGFiLWdyb3VwLm1hdC1iYWNrZ3JvdW5kLXByaW1hcnlbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1yaXBwbGUtZWxlbWVudFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdGFiLW5hdi1iYXIubWF0LWJhY2tncm91bmQtcHJpbWFyeVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXJpcHBsZS1lbGVtZW50W19uZ2NvbnRlbnQtJUNPTVAlXXtiYWNrZ3JvdW5kLWNvbG9yOnJnYmEoMjU1LDI1NSwyNTUsLjEyKX0ubWF0LXRhYi1ncm91cC5tYXQtYmFja2dyb3VuZC1hY2NlbnRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC10YWItbGFiZWwuY2RrLWtleWJvYXJkLWZvY3VzZWRbX25nY29udGVudC0lQ09NUCVdOm5vdCgubWF0LXRhYi1kaXNhYmxlZCksIC5tYXQtdGFiLWdyb3VwLm1hdC1iYWNrZ3JvdW5kLWFjY2VudFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXRhYi1sYWJlbC5jZGstcHJvZ3JhbS1mb2N1c2VkW19uZ2NvbnRlbnQtJUNPTVAlXTpub3QoLm1hdC10YWItZGlzYWJsZWQpLCAubWF0LXRhYi1ncm91cC5tYXQtYmFja2dyb3VuZC1hY2NlbnRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC10YWItbGluay5jZGsta2V5Ym9hcmQtZm9jdXNlZFtfbmdjb250ZW50LSVDT01QJV06bm90KC5tYXQtdGFiLWRpc2FibGVkKSwgLm1hdC10YWItZ3JvdXAubWF0LWJhY2tncm91bmQtYWNjZW50W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtdGFiLWxpbmsuY2RrLXByb2dyYW0tZm9jdXNlZFtfbmdjb250ZW50LSVDT01QJV06bm90KC5tYXQtdGFiLWRpc2FibGVkKSwgLm1hdC10YWItbmF2LWJhci5tYXQtYmFja2dyb3VuZC1hY2NlbnRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC10YWItbGFiZWwuY2RrLWtleWJvYXJkLWZvY3VzZWRbX25nY29udGVudC0lQ09NUCVdOm5vdCgubWF0LXRhYi1kaXNhYmxlZCksIC5tYXQtdGFiLW5hdi1iYXIubWF0LWJhY2tncm91bmQtYWNjZW50W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtdGFiLWxhYmVsLmNkay1wcm9ncmFtLWZvY3VzZWRbX25nY29udGVudC0lQ09NUCVdOm5vdCgubWF0LXRhYi1kaXNhYmxlZCksIC5tYXQtdGFiLW5hdi1iYXIubWF0LWJhY2tncm91bmQtYWNjZW50W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtdGFiLWxpbmsuY2RrLWtleWJvYXJkLWZvY3VzZWRbX25nY29udGVudC0lQ09NUCVdOm5vdCgubWF0LXRhYi1kaXNhYmxlZCksIC5tYXQtdGFiLW5hdi1iYXIubWF0LWJhY2tncm91bmQtYWNjZW50W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtdGFiLWxpbmsuY2RrLXByb2dyYW0tZm9jdXNlZFtfbmdjb250ZW50LSVDT01QJV06bm90KC5tYXQtdGFiLWRpc2FibGVkKXtiYWNrZ3JvdW5kLWNvbG9yOnJnYmEoMjU1LDE1MiwwLC4zKX0ubWF0LXRhYi1ncm91cC5tYXQtYmFja2dyb3VuZC1hY2NlbnRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC10YWItaGVhZGVyW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10YWItZ3JvdXAubWF0LWJhY2tncm91bmQtYWNjZW50W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtdGFiLWxpbmtzW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10YWItZ3JvdXAubWF0LWJhY2tncm91bmQtYWNjZW50W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtdGFiLWhlYWRlci1wYWdpbmF0aW9uW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10YWItbmF2LWJhci5tYXQtYmFja2dyb3VuZC1hY2NlbnRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC10YWItaGVhZGVyW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10YWItbmF2LWJhci5tYXQtYmFja2dyb3VuZC1hY2NlbnRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC10YWItbGlua3NbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXRhYi1uYXYtYmFyLm1hdC1iYWNrZ3JvdW5kLWFjY2VudFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXRhYi1oZWFkZXItcGFnaW5hdGlvbltfbmdjb250ZW50LSVDT01QJV17YmFja2dyb3VuZC1jb2xvcjojZmY5ODAwfS5tYXQtdGFiLWdyb3VwLm1hdC1iYWNrZ3JvdW5kLWFjY2VudFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXRhYi1sYWJlbFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdGFiLWdyb3VwLm1hdC1iYWNrZ3JvdW5kLWFjY2VudFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXRhYi1saW5rW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10YWItbmF2LWJhci5tYXQtYmFja2dyb3VuZC1hY2NlbnRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC10YWItbGFiZWxbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXRhYi1uYXYtYmFyLm1hdC1iYWNrZ3JvdW5kLWFjY2VudFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXRhYi1saW5rW19uZ2NvbnRlbnQtJUNPTVAlXXtjb2xvcjojZmZmfS5tYXQtdGFiLWdyb3VwLm1hdC1iYWNrZ3JvdW5kLWFjY2VudFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXRhYi1sYWJlbC5tYXQtdGFiLWRpc2FibGVkW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10YWItZ3JvdXAubWF0LWJhY2tncm91bmQtYWNjZW50W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtdGFiLWxpbmsubWF0LXRhYi1kaXNhYmxlZFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdGFiLW5hdi1iYXIubWF0LWJhY2tncm91bmQtYWNjZW50W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtdGFiLWxhYmVsLm1hdC10YWItZGlzYWJsZWRbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXRhYi1uYXYtYmFyLm1hdC1iYWNrZ3JvdW5kLWFjY2VudFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXRhYi1saW5rLm1hdC10YWItZGlzYWJsZWRbX25nY29udGVudC0lQ09NUCVde2NvbG9yOnJnYmEoMjU1LDI1NSwyNTUsLjQpfS5tYXQtdGFiLWdyb3VwLm1hdC1iYWNrZ3JvdW5kLWFjY2VudFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXRhYi1oZWFkZXItcGFnaW5hdGlvbi1jaGV2cm9uW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10YWItbmF2LWJhci5tYXQtYmFja2dyb3VuZC1hY2NlbnRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC10YWItaGVhZGVyLXBhZ2luYXRpb24tY2hldnJvbltfbmdjb250ZW50LSVDT01QJV17Ym9yZGVyLWNvbG9yOiNmZmZ9Lm1hdC10YWItZ3JvdXAubWF0LWJhY2tncm91bmQtYWNjZW50W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtdGFiLWhlYWRlci1wYWdpbmF0aW9uLWRpc2FibGVkW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtdGFiLWhlYWRlci1wYWdpbmF0aW9uLWNoZXZyb25bX25nY29udGVudC0lQ09NUCVdLCAubWF0LXRhYi1uYXYtYmFyLm1hdC1iYWNrZ3JvdW5kLWFjY2VudFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXRhYi1oZWFkZXItcGFnaW5hdGlvbi1kaXNhYmxlZFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXRhYi1oZWFkZXItcGFnaW5hdGlvbi1jaGV2cm9uW19uZ2NvbnRlbnQtJUNPTVAlXXtib3JkZXItY29sb3I6cmdiYSgyNTUsMjU1LDI1NSwuNCl9Lm1hdC10YWItZ3JvdXAubWF0LWJhY2tncm91bmQtYWNjZW50W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtcmlwcGxlLWVsZW1lbnRbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXRhYi1uYXYtYmFyLm1hdC1iYWNrZ3JvdW5kLWFjY2VudFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXJpcHBsZS1lbGVtZW50W19uZ2NvbnRlbnQtJUNPTVAlXXtiYWNrZ3JvdW5kLWNvbG9yOnJnYmEoMjU1LDI1NSwyNTUsLjEyKX0ubWF0LXRhYi1ncm91cC5tYXQtYmFja2dyb3VuZC13YXJuW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtdGFiLWxhYmVsLmNkay1rZXlib2FyZC1mb2N1c2VkW19uZ2NvbnRlbnQtJUNPTVAlXTpub3QoLm1hdC10YWItZGlzYWJsZWQpLCAubWF0LXRhYi1ncm91cC5tYXQtYmFja2dyb3VuZC13YXJuW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtdGFiLWxhYmVsLmNkay1wcm9ncmFtLWZvY3VzZWRbX25nY29udGVudC0lQ09NUCVdOm5vdCgubWF0LXRhYi1kaXNhYmxlZCksIC5tYXQtdGFiLWdyb3VwLm1hdC1iYWNrZ3JvdW5kLXdhcm5bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC10YWItbGluay5jZGsta2V5Ym9hcmQtZm9jdXNlZFtfbmdjb250ZW50LSVDT01QJV06bm90KC5tYXQtdGFiLWRpc2FibGVkKSwgLm1hdC10YWItZ3JvdXAubWF0LWJhY2tncm91bmQtd2Fybltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXRhYi1saW5rLmNkay1wcm9ncmFtLWZvY3VzZWRbX25nY29udGVudC0lQ09NUCVdOm5vdCgubWF0LXRhYi1kaXNhYmxlZCksIC5tYXQtdGFiLW5hdi1iYXIubWF0LWJhY2tncm91bmQtd2Fybltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXRhYi1sYWJlbC5jZGsta2V5Ym9hcmQtZm9jdXNlZFtfbmdjb250ZW50LSVDT01QJV06bm90KC5tYXQtdGFiLWRpc2FibGVkKSwgLm1hdC10YWItbmF2LWJhci5tYXQtYmFja2dyb3VuZC13YXJuW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtdGFiLWxhYmVsLmNkay1wcm9ncmFtLWZvY3VzZWRbX25nY29udGVudC0lQ09NUCVdOm5vdCgubWF0LXRhYi1kaXNhYmxlZCksIC5tYXQtdGFiLW5hdi1iYXIubWF0LWJhY2tncm91bmQtd2Fybltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXRhYi1saW5rLmNkay1rZXlib2FyZC1mb2N1c2VkW19uZ2NvbnRlbnQtJUNPTVAlXTpub3QoLm1hdC10YWItZGlzYWJsZWQpLCAubWF0LXRhYi1uYXYtYmFyLm1hdC1iYWNrZ3JvdW5kLXdhcm5bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC10YWItbGluay5jZGstcHJvZ3JhbS1mb2N1c2VkW19uZ2NvbnRlbnQtJUNPTVAlXTpub3QoLm1hdC10YWItZGlzYWJsZWQpe2JhY2tncm91bmQtY29sb3I6cmdiYSgyNTUsMjA1LDIxMCwuMyl9Lm1hdC10YWItZ3JvdXAubWF0LWJhY2tncm91bmQtd2Fybltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXRhYi1oZWFkZXJbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXRhYi1ncm91cC5tYXQtYmFja2dyb3VuZC13YXJuW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtdGFiLWxpbmtzW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10YWItZ3JvdXAubWF0LWJhY2tncm91bmQtd2Fybltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXRhYi1oZWFkZXItcGFnaW5hdGlvbltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdGFiLW5hdi1iYXIubWF0LWJhY2tncm91bmQtd2Fybltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXRhYi1oZWFkZXJbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXRhYi1uYXYtYmFyLm1hdC1iYWNrZ3JvdW5kLXdhcm5bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC10YWItbGlua3NbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXRhYi1uYXYtYmFyLm1hdC1iYWNrZ3JvdW5kLXdhcm5bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC10YWItaGVhZGVyLXBhZ2luYXRpb25bX25nY29udGVudC0lQ09NUCVde2JhY2tncm91bmQtY29sb3I6I2Y0NDMzNn0ubWF0LXRhYi1ncm91cC5tYXQtYmFja2dyb3VuZC13YXJuW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtdGFiLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10YWItZ3JvdXAubWF0LWJhY2tncm91bmQtd2Fybltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXRhYi1saW5rW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10YWItbmF2LWJhci5tYXQtYmFja2dyb3VuZC13YXJuW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtdGFiLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10YWItbmF2LWJhci5tYXQtYmFja2dyb3VuZC13YXJuW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtdGFiLWxpbmtbX25nY29udGVudC0lQ09NUCVde2NvbG9yOiNmZmZ9Lm1hdC10YWItZ3JvdXAubWF0LWJhY2tncm91bmQtd2Fybltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXRhYi1sYWJlbC5tYXQtdGFiLWRpc2FibGVkW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10YWItZ3JvdXAubWF0LWJhY2tncm91bmQtd2Fybltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXRhYi1saW5rLm1hdC10YWItZGlzYWJsZWRbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXRhYi1uYXYtYmFyLm1hdC1iYWNrZ3JvdW5kLXdhcm5bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC10YWItbGFiZWwubWF0LXRhYi1kaXNhYmxlZFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdGFiLW5hdi1iYXIubWF0LWJhY2tncm91bmQtd2Fybltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXRhYi1saW5rLm1hdC10YWItZGlzYWJsZWRbX25nY29udGVudC0lQ09NUCVde2NvbG9yOnJnYmEoMjU1LDI1NSwyNTUsLjQpfS5tYXQtdGFiLWdyb3VwLm1hdC1iYWNrZ3JvdW5kLXdhcm5bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC10YWItaGVhZGVyLXBhZ2luYXRpb24tY2hldnJvbltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdGFiLW5hdi1iYXIubWF0LWJhY2tncm91bmQtd2Fybltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXRhYi1oZWFkZXItcGFnaW5hdGlvbi1jaGV2cm9uW19uZ2NvbnRlbnQtJUNPTVAlXXtib3JkZXItY29sb3I6I2ZmZn0ubWF0LXRhYi1ncm91cC5tYXQtYmFja2dyb3VuZC13YXJuW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtdGFiLWhlYWRlci1wYWdpbmF0aW9uLWRpc2FibGVkW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtdGFiLWhlYWRlci1wYWdpbmF0aW9uLWNoZXZyb25bX25nY29udGVudC0lQ09NUCVdLCAubWF0LXRhYi1uYXYtYmFyLm1hdC1iYWNrZ3JvdW5kLXdhcm5bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC10YWItaGVhZGVyLXBhZ2luYXRpb24tZGlzYWJsZWRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC10YWItaGVhZGVyLXBhZ2luYXRpb24tY2hldnJvbltfbmdjb250ZW50LSVDT01QJV17Ym9yZGVyLWNvbG9yOnJnYmEoMjU1LDI1NSwyNTUsLjQpfS5tYXQtdGFiLWdyb3VwLm1hdC1iYWNrZ3JvdW5kLXdhcm5bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1yaXBwbGUtZWxlbWVudFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdGFiLW5hdi1iYXIubWF0LWJhY2tncm91bmQtd2Fybltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXJpcHBsZS1lbGVtZW50W19uZ2NvbnRlbnQtJUNPTVAlXXtiYWNrZ3JvdW5kLWNvbG9yOnJnYmEoMjU1LDI1NSwyNTUsLjEyKX0ubWF0LXRvb2xiYXJbX25nY29udGVudC0lQ09NUCVde2JhY2tncm91bmQ6I2Y1ZjVmNTtjb2xvcjojMjEyMTIxfS5tYXQtdG9vbGJhci5tYXQtcHJpbWFyeVtfbmdjb250ZW50LSVDT01QJV17YmFja2dyb3VuZDojZjU3YzAwO2NvbG9yOiNmZmZ9Lm1hdC10b29sYmFyLm1hdC1hY2NlbnRbX25nY29udGVudC0lQ09NUCVde2JhY2tncm91bmQ6I2ZmOTgwMDtjb2xvcjojZmZmfS5tYXQtdG9vbGJhci5tYXQtd2Fybltfbmdjb250ZW50LSVDT01QJV17YmFja2dyb3VuZDojZjQ0MzM2O2NvbG9yOiNmZmZ9Lm1hdC10b29sYmFyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC11bmRlcmxpbmVbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXRvb2xiYXJbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLXJpcHBsZVtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdG9vbGJhcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvY3VzZWRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLXJpcHBsZVtfbmdjb250ZW50LSVDT01QJV17YmFja2dyb3VuZC1jb2xvcjpjdXJyZW50Q29sb3J9Lm1hdC10b29sYmFyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdG9vbGJhcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvY3VzZWRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10b29sYmFyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtc2VsZWN0LXZhbHVlW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10b29sYmFyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtc2VsZWN0LWFycm93W19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10b29sYmFyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC5tYXQtZm9jdXNlZFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXNlbGVjdC1hcnJvd1tfbmdjb250ZW50LSVDT01QJV17Y29sb3I6aW5oZXJpdH0ubWF0LXRvb2xiYXJbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pbnB1dC1lbGVtZW50W19uZ2NvbnRlbnQtJUNPTVAlXXtjYXJldC1jb2xvcjpjdXJyZW50Q29sb3J9Lm1hdC10b29sYmFyLW11bHRpcGxlLXJvd3NbX25nY29udGVudC0lQ09NUCVde21pbi1oZWlnaHQ6NjRweH0ubWF0LXRvb2xiYXItcm93W19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10b29sYmFyLXNpbmdsZS1yb3dbX25nY29udGVudC0lQ09NUCVde2hlaWdodDo2NHB4fUBtZWRpYShtYXgtd2lkdGg6IDU5OXB4KXsubWF0LXRvb2xiYXItbXVsdGlwbGUtcm93c1tfbmdjb250ZW50LSVDT01QJV17bWluLWhlaWdodDo1NnB4fS5tYXQtdG9vbGJhci1yb3dbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXRvb2xiYXItc2luZ2xlLXJvd1tfbmdjb250ZW50LSVDT01QJV17aGVpZ2h0OjU2cHh9fS5tYXQtdG9vbHRpcFtfbmdjb250ZW50LSVDT01QJV17YmFja2dyb3VuZDpyZ2JhKDk3LDk3LDk3LC45KX0ubWF0LXRyZWVbX25nY29udGVudC0lQ09NUCVde2JhY2tncm91bmQ6I2ZmZn0ubWF0LXRyZWUtbm9kZVtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtbmVzdGVkLXRyZWUtbm9kZVtfbmdjb250ZW50LSVDT01QJV17Y29sb3I6IzIxMjEyMX0ubWF0LXRyZWUtbm9kZVtfbmdjb250ZW50LSVDT01QJV17bWluLWhlaWdodDo0OHB4fS5tYXQtc25hY2stYmFyLWNvbnRhaW5lcltfbmdjb250ZW50LSVDT01QJV17Y29sb3I6cmdiYSgyNTUsMjU1LDI1NSwuNyk7YmFja2dyb3VuZDojMzIzMjMyO2JveC1zaGFkb3c6MHB4IDNweCA1cHggLTFweCByZ2JhKDAsIDAsIDAsIDAuMiksMHB4IDZweCAxMHB4IDBweCByZ2JhKDAsIDAsIDAsIDAuMTQpLDBweCAxcHggMThweCAwcHggcmdiYSgwLCAwLCAwLCAwLjEyKX0ubWF0LXNpbXBsZS1zbmFja2Jhci1hY3Rpb25bX25nY29udGVudC0lQ09NUCVde2NvbG9yOiNmZjk4MDB9W19uZ2hvc3QtJUNPTVAlXXtkaXNwbGF5OmZsZXg7ZmxleC1kaXJlY3Rpb246Y29sdW1uO2hlaWdodDoxMDAlfS5maWx0ZXJzLXRvb2xiYXJbX25nY29udGVudC0lQ09NUCVde2FsaWduLWl0ZW1zOmNlbnRlcjtib3JkZXItYm90dG9tOjFweCBzb2xpZCAjZWJlYmViO2Rpc3BsYXk6ZmxleDtoZWlnaHQ6NDJweDtqdXN0aWZ5LWNvbnRlbnQ6c3BhY2UtYmV0d2VlbjtwYWRkaW5nOjAgMTBweH0uZmlsdGVycy10aXRsZVtfbmdjb250ZW50LSVDT01QJV17ZGlzcGxheTppbmxpbmU7Zm9udC1zaXplOjE0cHg7Zm9udC13ZWlnaHQ6NTAwfS5zaWRlLXRvZ2dsZVtfbmdjb250ZW50LSVDT01QJV17YWxpZ24taXRlbXM6Y2VudGVyO2JhY2tncm91bmQtY29sb3I6I2ZmZjtib3JkZXItcmFkaXVzOjNweDtib3JkZXI6MXB4IHNvbGlkICNlYmViZWI7ZGlzcGxheTpmbGV4O2hlaWdodDozMHB4O2p1c3RpZnktY29udGVudDpjZW50ZXI7d2lkdGg6MzBweH0uZmlsdGVyc1tfbmdjb250ZW50LSVDT01QJV17b3ZlcmZsb3cteTphdXRvfS5maWx0ZXJzLWhpbnRbX25nY29udGVudC0lQ09NUCVde2FsaWduLWl0ZW1zOmNlbnRlcjtkaXNwbGF5OmZsZXg7aGVpZ2h0OjQycHg7cGFkZGluZzowIDE2cHh9LmZpbHRlcnMtaGludC10ZXh0W19uZ2NvbnRlbnQtJUNPTVAlXXtjb2xvcjpyZ2JhKDAsMCwwLC4zOCl9J10sY2hhbmdlRGV0ZWN0aW9uOjB9KTtjbGFzcyBfcHR7Y29uc3RydWN0b3IodCl7dGhpcy5zdG9yZT10LHRoaXMuc2lkZWJhckV4cGFuZGVkJD10aGlzLnN0b3JlLnNlbGVjdChqZHQpLHRoaXMubWV0cmljRmlsdGVycyQ9dGhpcy5zdG9yZS5zZWxlY3QoTGR0KS5waXBlKGZ0KCh0PT5PYmplY3QuZW50cmllcyh0KSkpKX1vblRvZ2dsZVNpZGViYXJFeHBhbmRlZCgpe3RoaXMuc3RvcmUuZGlzcGF0Y2goYmd0KCkpfX1mdW5jdGlvbiBDcHQodCxuLGUpe3JldHVybiB0Lmxlbmd0aCE9bi5sZW5ndGg/ZTpuLm1hcCgoKG4sZSk9Pm4tdFtlXSkpLm1hcCgodD0+TWF0aC5wb3codCwyKSkpLnJlZHVjZSgoKHQsbik9PnQrbiksMCl9X3B0Lsm1ZmFjPWZ1bmN0aW9uIHQobil7cmV0dXJuIG5ldyhufHxfcHQpKFpnKGN2KSl9LF9wdC7JtWNtcD1fbyh7dHlwZTpfcHQsc2VsZWN0b3JzOltbIm5wbWktdmlvbGluLWZpbHRlcnMiXV0sZGVjbHM6Myx2YXJzOjYsY29uc3RzOltbMywic2lkZWJhckV4cGFuZGVkIiwibWV0cmljRmlsdGVycyIsInRvZ2dsZVNpZGViYXJFeHBhbmRlZCJdXSx0ZW1wbGF0ZTpmdW5jdGlvbiB0KG4sZSl7MSZuJiYoS2coMCwidmlvbGluLWZpbHRlcnMtY29tcG9uZW50IiwwKSxjcCgidG9nZ2xlU2lkZWJhckV4cGFuZGVkIiwoZnVuY3Rpb24gdCgpe3JldHVybiBlLm9uVG9nZ2xlU2lkZWJhckV4cGFuZGVkKCl9KSkseWYoMSwiYXN5bmMiKSx5ZigyLCJhc3luYyIpLCRnKCkpLDImbiYmSmcoInNpZGViYXJFeHBhbmRlZCIsa2YoMSwyLGUuc2lkZWJhckV4cGFuZGVkJCkpKCJtZXRyaWNGaWx0ZXJzIixrZigyLDQsZS5tZXRyaWNGaWx0ZXJzJCkpfSxkaXJlY3RpdmVzOltocHRdLHBpcGVzOltvT10sZW5jYXBzdWxhdGlvbjoyLGNoYW5nZURldGVjdGlvbjowfSk7Y29uc3QgTXB0PVsidGh1bWJDb250YWluZXIiXSxPcHQ9WyJ0b2dnbGVCYXIiXSxQcHQ9WyJpbnB1dCJdLHhwdD1mdW5jdGlvbigpe3JldHVybntlbnRlckR1cmF0aW9uOjE1MH19LHlwdD1uZXcgRmEoIm1hdC1zbGlkZS10b2dnbGUtZGVmYXVsdC1vcHRpb25zIix7cHJvdmlkZWRJbjoicm9vdCIsZmFjdG9yeTooKT0+KHtkaXNhYmxlVG9nZ2xlVmFsdWU6ITF9KX0pOwovKioKICAgICAqIEBsaWNlbnNlCiAgICAgKiBDb3B5cmlnaHQgR29vZ2xlIExMQyBBbGwgUmlnaHRzIFJlc2VydmVkLgogICAgICoKICAgICAqIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGFuIE1JVC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCiAgICAgKiBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlIGF0IGh0dHBzOi8vYW5ndWxhci5pby9saWNlbnNlCiAgICAgKi8KbGV0IGtwdD0wO2NvbnN0IHZwdD17cHJvdmlkZTpNRix1c2VFeGlzdGluZzphYSgoKCk9PkVwdCkpLG11bHRpOiEwfTtjbGFzcyB3cHR7Y29uc3RydWN0b3IodCxuKXt0aGlzLnNvdXJjZT10LHRoaXMuY2hlY2tlZD1ufX1jb25zdCBTcHQ9b0UoZUUoYUUobkUoY2xhc3N7Y29uc3RydWN0b3IodCl7dGhpcy5fZWxlbWVudFJlZj10fX0pKSwiYWNjZW50IikpO2NsYXNzIEVwdCBleHRlbmRzIFNwdHtjb25zdHJ1Y3Rvcih0LG4sZSxhLG8scil7c3VwZXIodCksdGhpcy5fZm9jdXNNb25pdG9yPW4sdGhpcy5fY2hhbmdlRGV0ZWN0b3JSZWY9ZSx0aGlzLmRlZmF1bHRzPW8sdGhpcy5fYW5pbWF0aW9uTW9kZT1yLHRoaXMuX29uQ2hhbmdlPXQ9Pnt9LHRoaXMuX29uVG91Y2hlZD0oKT0+e30sdGhpcy5fdW5pcXVlSWQ9Im1hdC1zbGlkZS10b2dnbGUtIisgKytrcHQsdGhpcy5fcmVxdWlyZWQ9ITEsdGhpcy5fY2hlY2tlZD0hMSx0aGlzLm5hbWU9bnVsbCx0aGlzLmlkPXRoaXMuX3VuaXF1ZUlkLHRoaXMubGFiZWxQb3NpdGlvbj0iYWZ0ZXIiLHRoaXMuYXJpYUxhYmVsPW51bGwsdGhpcy5hcmlhTGFiZWxsZWRieT1udWxsLHRoaXMuY2hhbmdlPW5ldyBFZix0aGlzLnRvZ2dsZUNoYW5nZT1uZXcgRWYsdGhpcy50YWJJbmRleD1wYXJzZUludChhKXx8MH1nZXQgcmVxdWlyZWQoKXtyZXR1cm4gdGhpcy5fcmVxdWlyZWR9c2V0IHJlcXVpcmVkKHQpe3RoaXMuX3JlcXVpcmVkPUd3KHQpfWdldCBjaGVja2VkKCl7cmV0dXJuIHRoaXMuX2NoZWNrZWR9c2V0IGNoZWNrZWQodCl7dGhpcy5fY2hlY2tlZD1Hdyh0KSx0aGlzLl9jaGFuZ2VEZXRlY3RvclJlZi5tYXJrRm9yQ2hlY2soKX1nZXQgaW5wdXRJZCgpe3JldHVybmAke3RoaXMuaWR8fHRoaXMuX3VuaXF1ZUlkfS1pbnB1dGB9bmdBZnRlckNvbnRlbnRJbml0KCl7dGhpcy5fZm9jdXNNb25pdG9yLm1vbml0b3IodGhpcy5fZWxlbWVudFJlZiwhMCkuc3Vic2NyaWJlKCh0PT57ImtleWJvYXJkIj09PXR8fCJwcm9ncmFtIj09PXQ/dGhpcy5faW5wdXRFbGVtZW50Lm5hdGl2ZUVsZW1lbnQuZm9jdXMoKTp0fHxQcm9taXNlLnJlc29sdmUoKS50aGVuKCgoKT0+dGhpcy5fb25Ub3VjaGVkKCkpKX0pKX1uZ09uRGVzdHJveSgpe3RoaXMuX2ZvY3VzTW9uaXRvci5zdG9wTW9uaXRvcmluZyh0aGlzLl9lbGVtZW50UmVmKX1fb25DaGFuZ2VFdmVudCh0KXt0LnN0b3BQcm9wYWdhdGlvbigpLHRoaXMudG9nZ2xlQ2hhbmdlLmVtaXQoKSx0aGlzLmRlZmF1bHRzLmRpc2FibGVUb2dnbGVWYWx1ZT90aGlzLl9pbnB1dEVsZW1lbnQubmF0aXZlRWxlbWVudC5jaGVja2VkPXRoaXMuY2hlY2tlZDoodGhpcy5jaGVja2VkPXRoaXMuX2lucHV0RWxlbWVudC5uYXRpdmVFbGVtZW50LmNoZWNrZWQsdGhpcy5fZW1pdENoYW5nZUV2ZW50KCkpfV9vbklucHV0Q2xpY2sodCl7dC5zdG9wUHJvcGFnYXRpb24oKX13cml0ZVZhbHVlKHQpe3RoaXMuY2hlY2tlZD0hIXR9cmVnaXN0ZXJPbkNoYW5nZSh0KXt0aGlzLl9vbkNoYW5nZT10fXJlZ2lzdGVyT25Ub3VjaGVkKHQpe3RoaXMuX29uVG91Y2hlZD10fXNldERpc2FibGVkU3RhdGUodCl7dGhpcy5kaXNhYmxlZD10LHRoaXMuX2NoYW5nZURldGVjdG9yUmVmLm1hcmtGb3JDaGVjaygpfWZvY3VzKHQpe3RoaXMuX2ZvY3VzTW9uaXRvci5mb2N1c1ZpYSh0aGlzLl9pbnB1dEVsZW1lbnQsImtleWJvYXJkIix0KX10b2dnbGUoKXt0aGlzLmNoZWNrZWQ9IXRoaXMuY2hlY2tlZCx0aGlzLl9vbkNoYW5nZSh0aGlzLmNoZWNrZWQpfV9lbWl0Q2hhbmdlRXZlbnQoKXt0aGlzLl9vbkNoYW5nZSh0aGlzLmNoZWNrZWQpLHRoaXMuY2hhbmdlLmVtaXQobmV3IHdwdCh0aGlzLHRoaXMuY2hlY2tlZCkpfV9vbkxhYmVsVGV4dENoYW5nZSgpe3RoaXMuX2NoYW5nZURldGVjdG9yUmVmLmRldGVjdENoYW5nZXMoKX19RXB0Lsm1ZmFjPWZ1bmN0aW9uIHQobil7cmV0dXJuIG5ldyhufHxFcHQpKFpnKHh1KSxaZyhUUyksWmcoVm0pLFhnKCJ0YWJpbmRleCIpLFpnKHlwdCksWmcoZGssOCkpfSxFcHQuybVjbXA9X28oe3R5cGU6RXB0LHNlbGVjdG9yczpbWyJtYXQtc2xpZGUtdG9nZ2xlIl1dLHZpZXdRdWVyeTpmdW5jdGlvbiB0KG4sZSl7dmFyIGE7MSZuJiYoVWYoTXB0LCEwKSxVZihPcHQsITApLFVmKFBwdCwhMCkpLDImbiYmKFZmKGE9WmYoKSkmJihlLl90aHVtYkVsPWEuZmlyc3QpLFZmKGE9WmYoKSkmJihlLl90aHVtYkJhckVsPWEuZmlyc3QpLFZmKGE9WmYoKSkmJihlLl9pbnB1dEVsZW1lbnQ9YS5maXJzdCkpfSxob3N0QXR0cnM6WzEsIm1hdC1zbGlkZS10b2dnbGUiXSxob3N0VmFyczoxMixob3N0QmluZGluZ3M6ZnVuY3Rpb24gdChuLGUpezImbiYmKGViKCJpZCIsZS5pZCksTmcoInRhYmluZGV4IixlLmRpc2FibGVkP251bGw6LTEpKCJhcmlhLWxhYmVsIixudWxsKSgiYXJpYS1sYWJlbGxlZGJ5IixudWxsKSxEcCgibWF0LWNoZWNrZWQiLGUuY2hlY2tlZCkoIm1hdC1kaXNhYmxlZCIsZS5kaXNhYmxlZCkoIm1hdC1zbGlkZS10b2dnbGUtbGFiZWwtYmVmb3JlIiwiYmVmb3JlIj09ZS5sYWJlbFBvc2l0aW9uKSgiX21hdC1hbmltYXRpb24tbm9vcGFibGUiLCJOb29wQW5pbWF0aW9ucyI9PT1lLl9hbmltYXRpb25Nb2RlKSl9LGlucHV0czp7ZGlzYWJsZWQ6ImRpc2FibGVkIixkaXNhYmxlUmlwcGxlOiJkaXNhYmxlUmlwcGxlIixjb2xvcjoiY29sb3IiLHRhYkluZGV4OiJ0YWJJbmRleCIsbmFtZToibmFtZSIsaWQ6ImlkIixsYWJlbFBvc2l0aW9uOiJsYWJlbFBvc2l0aW9uIixhcmlhTGFiZWw6WyJhcmlhLWxhYmVsIiwiYXJpYUxhYmVsIl0sYXJpYUxhYmVsbGVkYnk6WyJhcmlhLWxhYmVsbGVkYnkiLCJhcmlhTGFiZWxsZWRieSJdLHJlcXVpcmVkOiJyZXF1aXJlZCIsY2hlY2tlZDoiY2hlY2tlZCJ9LG91dHB1dHM6e2NoYW5nZToiY2hhbmdlIix0b2dnbGVDaGFuZ2U6InRvZ2dsZUNoYW5nZSJ9LGV4cG9ydEFzOlsibWF0U2xpZGVUb2dnbGUiXSxmZWF0dXJlczpbTXUoW3ZwdF0pLGhnXSxuZ0NvbnRlbnRTZWxlY3RvcnM6WyIqIl0sZGVjbHM6MTYsdmFyczoxOCxjb25zdHM6W1sxLCJtYXQtc2xpZGUtdG9nZ2xlLWxhYmVsIl0sWyJsYWJlbCIsIiJdLFsxLCJtYXQtc2xpZGUtdG9nZ2xlLWJhciJdLFsidG9nZ2xlQmFyIiwiIl0sWyJ0eXBlIiwiY2hlY2tib3giLCJyb2xlIiwic3dpdGNoIiwxLCJtYXQtc2xpZGUtdG9nZ2xlLWlucHV0IiwiY2RrLXZpc3VhbGx5LWhpZGRlbiIsMywiaWQiLCJyZXF1aXJlZCIsInRhYkluZGV4IiwiY2hlY2tlZCIsImRpc2FibGVkIiwiY2hhbmdlIiwiY2xpY2siXSxbImlucHV0IiwiIl0sWzEsIm1hdC1zbGlkZS10b2dnbGUtdGh1bWItY29udGFpbmVyIl0sWyJ0aHVtYkNvbnRhaW5lciIsIiJdLFsxLCJtYXQtc2xpZGUtdG9nZ2xlLXRodW1iIl0sWyJtYXQtcmlwcGxlIiwiIiwxLCJtYXQtc2xpZGUtdG9nZ2xlLXJpcHBsZSIsIm1hdC1mb2N1cy1pbmRpY2F0b3IiLDMsIm1hdFJpcHBsZVRyaWdnZXIiLCJtYXRSaXBwbGVEaXNhYmxlZCIsIm1hdFJpcHBsZUNlbnRlcmVkIiwibWF0UmlwcGxlUmFkaXVzIiwibWF0UmlwcGxlQW5pbWF0aW9uIl0sWzEsIm1hdC1yaXBwbGUtZWxlbWVudCIsIm1hdC1zbGlkZS10b2dnbGUtcGVyc2lzdGVudC1yaXBwbGUiXSxbMSwibWF0LXNsaWRlLXRvZ2dsZS1jb250ZW50IiwzLCJjZGtPYnNlcnZlQ29udGVudCJdLFsibGFiZWxDb250ZW50IiwiIl0sWzIsImRpc3BsYXkiLCJub25lIl1dLHRlbXBsYXRlOmZ1bmN0aW9uIHQobixlKXtpZigxJm4mJihicCgpLEtnKDAsImxhYmVsIiwwLDEpLEtnKDIsImRpdiIsMiwzKSxLZyg0LCJpbnB1dCIsNCw1KSxjcCgiY2hhbmdlIiwoZnVuY3Rpb24gdChuKXtyZXR1cm4gZS5fb25DaGFuZ2VFdmVudChuKX0pKSgiY2xpY2siLChmdW5jdGlvbiB0KG4pe3JldHVybiBlLl9vbklucHV0Q2xpY2sobil9KSksJGcoKSxLZyg2LCJkaXYiLDYsNyksdHAoOCwiZGl2Iiw4KSxLZyg5LCJkaXYiLDkpLHRwKDEwLCJkaXYiLDEwKSwkZygpLCRnKCksJGcoKSxLZygxMSwic3BhbiIsMTEsMTIpLGNwKCJjZGtPYnNlcnZlQ29udGVudCIsKGZ1bmN0aW9uIHQoKXtyZXR1cm4gZS5fb25MYWJlbFRleHRDaGFuZ2UoKX0pKSxLZygxMywic3BhbiIsMTMpLEpwKDE0LCLCoCIpLCRnKCksaHAoMTUpLCRnKCksJGcoKSksMiZuKXtjb25zdCB0PXFnKDEpLG49cWcoMTIpO05nKCJmb3IiLGUuaW5wdXRJZCksd3MoMiksRHAoIm1hdC1zbGlkZS10b2dnbGUtYmFyLW5vLXNpZGUtbWFyZ2luIiwhbi50ZXh0Q29udGVudHx8IW4udGV4dENvbnRlbnQudHJpbSgpKSx3cygyKSxKZygiaWQiLGUuaW5wdXRJZCkoInJlcXVpcmVkIixlLnJlcXVpcmVkKSgidGFiSW5kZXgiLGUudGFiSW5kZXgpKCJjaGVja2VkIixlLmNoZWNrZWQpKCJkaXNhYmxlZCIsZS5kaXNhYmxlZCksTmcoIm5hbWUiLGUubmFtZSkoImFyaWEtY2hlY2tlZCIsZS5jaGVja2VkLnRvU3RyaW5nKCkpKCJhcmlhLWxhYmVsIixlLmFyaWFMYWJlbCkoImFyaWEtbGFiZWxsZWRieSIsZS5hcmlhTGFiZWxsZWRieSksd3MoNSksSmcoIm1hdFJpcHBsZVRyaWdnZXIiLHQpKCJtYXRSaXBwbGVEaXNhYmxlZCIsZS5kaXNhYmxlUmlwcGxlfHxlLmRpc2FibGVkKSgibWF0UmlwcGxlQ2VudGVyZWQiLCEwKSgibWF0UmlwcGxlUmFkaXVzIiwyMCkoIm1hdFJpcHBsZUFuaW1hdGlvbiIsYmYoMTcseHB0KSl9fSxkaXJlY3RpdmVzOlt6RSwkd10sc3R5bGVzOlsiLm1hdC1zbGlkZS10b2dnbGV7ZGlzcGxheTppbmxpbmUtYmxvY2s7aGVpZ2h0OjI0cHg7bWF4LXdpZHRoOjEwMCU7bGluZS1oZWlnaHQ6MjRweDt3aGl0ZS1zcGFjZTpub3dyYXA7b3V0bGluZTpub25lOy13ZWJraXQtdGFwLWhpZ2hsaWdodC1jb2xvcjp0cmFuc3BhcmVudH0ubWF0LXNsaWRlLXRvZ2dsZS5tYXQtY2hlY2tlZCAubWF0LXNsaWRlLXRvZ2dsZS10aHVtYi1jb250YWluZXJ7dHJhbnNmb3JtOnRyYW5zbGF0ZTNkKDE2cHgsIDAsIDApfVtkaXI9cnRsXSAubWF0LXNsaWRlLXRvZ2dsZS5tYXQtY2hlY2tlZCAubWF0LXNsaWRlLXRvZ2dsZS10aHVtYi1jb250YWluZXJ7dHJhbnNmb3JtOnRyYW5zbGF0ZTNkKC0xNnB4LCAwLCAwKX0ubWF0LXNsaWRlLXRvZ2dsZS5tYXQtZGlzYWJsZWR7b3BhY2l0eTouMzh9Lm1hdC1zbGlkZS10b2dnbGUubWF0LWRpc2FibGVkIC5tYXQtc2xpZGUtdG9nZ2xlLWxhYmVsLC5tYXQtc2xpZGUtdG9nZ2xlLm1hdC1kaXNhYmxlZCAubWF0LXNsaWRlLXRvZ2dsZS10aHVtYi1jb250YWluZXJ7Y3Vyc29yOmRlZmF1bHR9Lm1hdC1zbGlkZS10b2dnbGUtbGFiZWx7ZGlzcGxheTpmbGV4O2ZsZXg6MTtmbGV4LWRpcmVjdGlvbjpyb3c7YWxpZ24taXRlbXM6Y2VudGVyO2hlaWdodDppbmhlcml0O2N1cnNvcjpwb2ludGVyfS5tYXQtc2xpZGUtdG9nZ2xlLWNvbnRlbnR7d2hpdGUtc3BhY2U6bm93cmFwO292ZXJmbG93OmhpZGRlbjt0ZXh0LW92ZXJmbG93OmVsbGlwc2lzfS5tYXQtc2xpZGUtdG9nZ2xlLWxhYmVsLWJlZm9yZSAubWF0LXNsaWRlLXRvZ2dsZS1sYWJlbHtvcmRlcjoxfS5tYXQtc2xpZGUtdG9nZ2xlLWxhYmVsLWJlZm9yZSAubWF0LXNsaWRlLXRvZ2dsZS1iYXJ7b3JkZXI6Mn1bZGlyPXJ0bF0gLm1hdC1zbGlkZS10b2dnbGUtbGFiZWwtYmVmb3JlIC5tYXQtc2xpZGUtdG9nZ2xlLWJhciwubWF0LXNsaWRlLXRvZ2dsZS1iYXJ7bWFyZ2luLXJpZ2h0OjhweDttYXJnaW4tbGVmdDowfVtkaXI9cnRsXSAubWF0LXNsaWRlLXRvZ2dsZS1iYXIsLm1hdC1zbGlkZS10b2dnbGUtbGFiZWwtYmVmb3JlIC5tYXQtc2xpZGUtdG9nZ2xlLWJhcnttYXJnaW4tbGVmdDo4cHg7bWFyZ2luLXJpZ2h0OjB9Lm1hdC1zbGlkZS10b2dnbGUtYmFyLW5vLXNpZGUtbWFyZ2lue21hcmdpbi1sZWZ0OjA7bWFyZ2luLXJpZ2h0OjB9Lm1hdC1zbGlkZS10b2dnbGUtdGh1bWItY29udGFpbmVye3Bvc2l0aW9uOmFic29sdXRlO3otaW5kZXg6MTt3aWR0aDoyMHB4O2hlaWdodDoyMHB4O3RvcDotM3B4O2xlZnQ6MDt0cmFuc2Zvcm06dHJhbnNsYXRlM2QoMCwgMCwgMCk7dHJhbnNpdGlvbjphbGwgODBtcyBsaW5lYXI7dHJhbnNpdGlvbi1wcm9wZXJ0eTp0cmFuc2Zvcm19Ll9tYXQtYW5pbWF0aW9uLW5vb3BhYmxlIC5tYXQtc2xpZGUtdG9nZ2xlLXRodW1iLWNvbnRhaW5lcnt0cmFuc2l0aW9uOm5vbmV9W2Rpcj1ydGxdIC5tYXQtc2xpZGUtdG9nZ2xlLXRodW1iLWNvbnRhaW5lcntsZWZ0OmF1dG87cmlnaHQ6MH0ubWF0LXNsaWRlLXRvZ2dsZS10aHVtYntoZWlnaHQ6MjBweDt3aWR0aDoyMHB4O2JvcmRlci1yYWRpdXM6NTAlfS5tYXQtc2xpZGUtdG9nZ2xlLWJhcntwb3NpdGlvbjpyZWxhdGl2ZTt3aWR0aDozNnB4O2hlaWdodDoxNHB4O2ZsZXgtc2hyaW5rOjA7Ym9yZGVyLXJhZGl1czo4cHh9Lm1hdC1zbGlkZS10b2dnbGUtaW5wdXR7Ym90dG9tOjA7bGVmdDoxMHB4fVtkaXI9cnRsXSAubWF0LXNsaWRlLXRvZ2dsZS1pbnB1dHtsZWZ0OmF1dG87cmlnaHQ6MTBweH0ubWF0LXNsaWRlLXRvZ2dsZS1iYXIsLm1hdC1zbGlkZS10b2dnbGUtdGh1bWJ7dHJhbnNpdGlvbjphbGwgODBtcyBsaW5lYXI7dHJhbnNpdGlvbi1wcm9wZXJ0eTpiYWNrZ3JvdW5kLWNvbG9yO3RyYW5zaXRpb24tZGVsYXk6NTBtc30uX21hdC1hbmltYXRpb24tbm9vcGFibGUgLm1hdC1zbGlkZS10b2dnbGUtYmFyLC5fbWF0LWFuaW1hdGlvbi1ub29wYWJsZSAubWF0LXNsaWRlLXRvZ2dsZS10aHVtYnt0cmFuc2l0aW9uOm5vbmV9Lm1hdC1zbGlkZS10b2dnbGUgLm1hdC1zbGlkZS10b2dnbGUtcmlwcGxle3Bvc2l0aW9uOmFic29sdXRlO3RvcDpjYWxjKDUwJSAtIDIwcHgpO2xlZnQ6Y2FsYyg1MCUgLSAyMHB4KTtoZWlnaHQ6NDBweDt3aWR0aDo0MHB4O3otaW5kZXg6MTtwb2ludGVyLWV2ZW50czpub25lfS5tYXQtc2xpZGUtdG9nZ2xlIC5tYXQtc2xpZGUtdG9nZ2xlLXJpcHBsZSAubWF0LXJpcHBsZS1lbGVtZW50Om5vdCgubWF0LXNsaWRlLXRvZ2dsZS1wZXJzaXN0ZW50LXJpcHBsZSl7b3BhY2l0eTouMTJ9Lm1hdC1zbGlkZS10b2dnbGUtcGVyc2lzdGVudC1yaXBwbGV7d2lkdGg6MTAwJTtoZWlnaHQ6MTAwJTt0cmFuc2Zvcm06bm9uZX0ubWF0LXNsaWRlLXRvZ2dsZS1iYXI6aG92ZXIgLm1hdC1zbGlkZS10b2dnbGUtcGVyc2lzdGVudC1yaXBwbGV7b3BhY2l0eTouMDR9Lm1hdC1zbGlkZS10b2dnbGU6bm90KC5tYXQtZGlzYWJsZWQpLmNkay1rZXlib2FyZC1mb2N1c2VkIC5tYXQtc2xpZGUtdG9nZ2xlLXBlcnNpc3RlbnQtcmlwcGxle29wYWNpdHk6LjEyfS5tYXQtc2xpZGUtdG9nZ2xlLXBlcnNpc3RlbnQtcmlwcGxlLC5tYXQtc2xpZGUtdG9nZ2xlLm1hdC1kaXNhYmxlZCAubWF0LXNsaWRlLXRvZ2dsZS1iYXI6aG92ZXIgLm1hdC1zbGlkZS10b2dnbGUtcGVyc2lzdGVudC1yaXBwbGV7b3BhY2l0eTowfUBtZWRpYShob3Zlcjogbm9uZSl7Lm1hdC1zbGlkZS10b2dnbGUtYmFyOmhvdmVyIC5tYXQtc2xpZGUtdG9nZ2xlLXBlcnNpc3RlbnQtcmlwcGxle2Rpc3BsYXk6bm9uZX19LmNkay1oaWdoLWNvbnRyYXN0LWFjdGl2ZSAubWF0LXNsaWRlLXRvZ2dsZS10aHVtYiwuY2RrLWhpZ2gtY29udHJhc3QtYWN0aXZlIC5tYXQtc2xpZGUtdG9nZ2xlLWJhcntib3JkZXI6MXB4IHNvbGlkfS5jZGstaGlnaC1jb250cmFzdC1hY3RpdmUgLm1hdC1zbGlkZS10b2dnbGUuY2RrLWtleWJvYXJkLWZvY3VzZWQgLm1hdC1zbGlkZS10b2dnbGUtYmFye291dGxpbmU6MnB4IGRvdHRlZDtvdXRsaW5lLW9mZnNldDo1cHh9XG4iXSxlbmNhcHN1bGF0aW9uOjIsY2hhbmdlRGV0ZWN0aW9uOjB9KSxFcHQuY3RvclBhcmFtZXRlcnM9KCk9Plt7dHlwZTp4dX0se3R5cGU6VFN9LHt0eXBlOlZtfSx7dHlwZTpTdHJpbmcsZGVjb3JhdG9yczpbe3R5cGU6QmUsYXJnczpbInRhYmluZGV4Il19XX0se3R5cGU6dm9pZCAwLGRlY29yYXRvcnM6W3t0eXBlOkllLGFyZ3M6W3lwdF19XX0se3R5cGU6U3RyaW5nLGRlY29yYXRvcnM6W3t0eXBlOk5lfSx7dHlwZTpJZSxhcmdzOltka119XX1dLEVwdC5wcm9wRGVjb3JhdG9ycz17X3RodW1iRWw6W3t0eXBlOlhkLGFyZ3M6WyJ0aHVtYkNvbnRhaW5lciJdfV0sX3RodW1iQmFyRWw6W3t0eXBlOlhkLGFyZ3M6WyJ0b2dnbGVCYXIiXX1dLG5hbWU6W3t0eXBlOmZffV0saWQ6W3t0eXBlOmZffV0sbGFiZWxQb3NpdGlvbjpbe3R5cGU6Zl99XSxhcmlhTGFiZWw6W3t0eXBlOmZfLGFyZ3M6WyJhcmlhLWxhYmVsIl19XSxhcmlhTGFiZWxsZWRieTpbe3R5cGU6Zl8sYXJnczpbImFyaWEtbGFiZWxsZWRieSJdfV0scmVxdWlyZWQ6W3t0eXBlOmZffV0sY2hlY2tlZDpbe3R5cGU6Zl99XSxjaGFuZ2U6W3t0eXBlOmhffV0sdG9nZ2xlQ2hhbmdlOlt7dHlwZTpoX31dLF9pbnB1dEVsZW1lbnQ6W3t0eXBlOlhkLGFyZ3M6WyJpbnB1dCJdfV19OwovKioKICAgICAqIEBsaWNlbnNlCiAgICAgKiBDb3B5cmlnaHQgR29vZ2xlIExMQyBBbGwgUmlnaHRzIFJlc2VydmVkLgogICAgICoKICAgICAqIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGFuIE1JVC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCiAgICAgKiBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlIGF0IGh0dHBzOi8vYW5ndWxhci5pby9saWNlbnNlCiAgICAgKi8KY29uc3QgQXB0PXtwcm92aWRlOk5GLHVzZUV4aXN0aW5nOmFhKCgoKT0+enB0KSksbXVsdGk6ITB9O2NsYXNzIHpwdCBleHRlbmRzIGxIe316cHQuybVmYWM9ZnVuY3Rpb24gdChuKXtyZXR1cm4gUnB0KG58fHpwdCl9LHpwdC7JtWRpcj12byh7dHlwZTp6cHQsc2VsZWN0b3JzOltbIm1hdC1zbGlkZS10b2dnbGUiLCJyZXF1aXJlZCIsIiIsImZvcm1Db250cm9sTmFtZSIsIiJdLFsibWF0LXNsaWRlLXRvZ2dsZSIsInJlcXVpcmVkIiwiIiwiZm9ybUNvbnRyb2wiLCIiXSxbIm1hdC1zbGlkZS10b2dnbGUiLCJyZXF1aXJlZCIsIiIsIm5nTW9kZWwiLCIiXV0sZmVhdHVyZXM6W011KFtBcHRdKSxoZ119KTtjb25zdCBScHQ9dGMoenB0KTsKLyoqCiAgICAgKiBAbGljZW5zZQogICAgICogQ29weXJpZ2h0IEdvb2dsZSBMTEMgQWxsIFJpZ2h0cyBSZXNlcnZlZC4KICAgICAqCiAgICAgKiBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhbiBNSVQtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQogICAgICogZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZSBhdCBodHRwczovL2FuZ3VsYXIuaW8vbGljZW5zZQogICAgICovY2xhc3MgVHB0e31UcHQuybVtb2Q9eG8oe3R5cGU6VHB0fSksVHB0Lsm1aW5qPUdlKHtmYWN0b3J5OmZ1bmN0aW9uIHQobil7cmV0dXJuIG5ldyhufHxUcHQpfX0pLCgidW5kZWZpbmVkIj09dHlwZW9mIG5nSml0TW9kZXx8bmdKaXRNb2RlKSYmeW8oVHB0LHtkZWNsYXJhdGlvbnM6W3pwdF0sZXhwb3J0czpbenB0XX0pO2NsYXNzIERwdHt9ZnVuY3Rpb24gSXB0KHQsbil7MSZ0JiZ0cCgwLCJtYXQtaWNvbiIsMyl9RHB0Lsm1bW9kPXhvKHt0eXBlOkRwdH0pLERwdC7JtWluaj1HZSh7ZmFjdG9yeTpmdW5jdGlvbiB0KG4pe3JldHVybiBuZXcobnx8RHB0KX0saW1wb3J0czpbW1RwdCxSRSx0RSx0U10sVHB0LHRFXX0pLCgidW5kZWZpbmVkIj09dHlwZW9mIG5nSml0TW9kZXx8bmdKaXRNb2RlKSYmeW8oRHB0LHtkZWNsYXJhdGlvbnM6ZnVuY3Rpb24oKXtyZXR1cm5bRXB0XX0saW1wb3J0czpmdW5jdGlvbigpe3JldHVybltUcHQsUkUsdEUsdFNdfSxleHBvcnRzOmZ1bmN0aW9uKCl7cmV0dXJuW1RwdCxFcHQsdEVdfX0pO2NsYXNzIE5wdHtjb25zdHJ1Y3Rvcigpe3RoaXMub25SZWdleEZpbHRlclZhbHVlQ2hhbmdlPW5ldyBFZn19TnB0Lsm1ZmFjPWZ1bmN0aW9uIHQobil7cmV0dXJuIG5ldyhufHxOcHQpfSxOcHQuybVjbXA9X28oe3R5cGU6TnB0LHNlbGVjdG9yczpbWyJucG1pLWFubm90YXRpb25zLXNlYXJjaC1jb21wb25lbnQiXV0saG9zdFZhcnM6Mixob3N0QmluZGluZ3M6ZnVuY3Rpb24gdChuLGUpezImbiYmRHAoInZhbGlkIixlLmlzUmVnZXhGaWx0ZXJWYWxpZCl9LGlucHV0czp7cmVnZXhGaWx0ZXJWYWx1ZToicmVnZXhGaWx0ZXJWYWx1ZSIsaXNSZWdleEZpbHRlclZhbGlkOiJpc1JlZ2V4RmlsdGVyVmFsaWQifSxvdXRwdXRzOntvblJlZ2V4RmlsdGVyVmFsdWVDaGFuZ2U6Im9uUmVnZXhGaWx0ZXJWYWx1ZUNoYW5nZSJ9LGRlY2xzOjMsdmFyczoyLGNvbnN0czpbWyJzdmdJY29uIiwic2VhcmNoXzI0cHgiXSxbImF1dG9jb21wbGV0ZSIsIm9mZiIsInBsYWNlaG9sZGVyIiwiRmlsdGVyIEFubm90YXRpb25zIiwzLCJ2YWx1ZSIsImlucHV0Il0sWyJzdmdJY29uIiwiZXJyb3JfMjRweCIsImNsYXNzIiwiZXJyb3ItaWNvbiIsIm1hdFRvb2x0aXAiLCJJbnZhbGlkIHJlZ2V4IGZpbHRlci4gVGhlIHJlc3VsdCBtYXkgYmUgc3RhbGUuIiw0LCJuZ0lmIl0sWyJzdmdJY29uIiwiZXJyb3JfMjRweCIsIm1hdFRvb2x0aXAiLCJJbnZhbGlkIHJlZ2V4IGZpbHRlci4gVGhlIHJlc3VsdCBtYXkgYmUgc3RhbGUuIiwxLCJlcnJvci1pY29uIl1dLHRlbXBsYXRlOmZ1bmN0aW9uIHQobixlKXsxJm4mJih0cCgwLCJtYXQtaWNvbiIsMCksS2coMSwiaW5wdXQiLDEpLGNwKCJpbnB1dCIsKGZ1bmN0aW9uIHQobil7cmV0dXJuIGUub25SZWdleEZpbHRlclZhbHVlQ2hhbmdlLmVtaXQobi50YXJnZXQudmFsdWUpfSkpLCRnKCksWWcoMixJcHQsMSwwLCJtYXQtaWNvbiIsMikpLDImbiYmKHdzKDEpLEpnKCJ2YWx1ZSIsZS5yZWdleEZpbHRlclZhbHVlKSx3cygxKSxKZygibmdJZiIsIWUuaXNSZWdleEZpbHRlclZhbGlkKSl9LGRpcmVjdGl2ZXM6W0JCLFdNXSxzdHlsZXM6WycubWF0LWJhZGdlLWNvbnRlbnRbX25nY29udGVudC0lQ09NUCVde2ZvbnQtd2VpZ2h0OjYwMDtmb250LXNpemU6MTJweDtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWZ9Lm1hdC1iYWRnZS1zbWFsbFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWJhZGdlLWNvbnRlbnRbX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZTo5cHh9Lm1hdC1iYWRnZS1sYXJnZVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWJhZGdlLWNvbnRlbnRbX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToyNHB4fS5tYXQtaDFbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWhlYWRsaW5lW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10eXBvZ3JhcGh5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIGgxW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250OjQwMCAyNHB4LzMycHggUm9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2xldHRlci1zcGFjaW5nOm5vcm1hbDttYXJnaW46MCAwIDE2cHh9Lm1hdC1oMltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdGl0bGVbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXR5cG9ncmFwaHlbX25nY29udGVudC0lQ09NUCVdICAgaDJbX25nY29udGVudC0lQ09NUCVde2ZvbnQ6NTAwIDIwcHgvMzJweCBSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7bGV0dGVyLXNwYWNpbmc6bm9ybWFsO21hcmdpbjowIDAgMTZweH0ubWF0LWgzW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1zdWJoZWFkaW5nLTJbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXR5cG9ncmFwaHlbX25nY29udGVudC0lQ09NUCVdICAgaDNbX25nY29udGVudC0lQ09NUCVde2ZvbnQ6NDAwIDE2cHgvMjhweCBSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7bGV0dGVyLXNwYWNpbmc6bm9ybWFsO21hcmdpbjowIDAgMTZweH0ubWF0LWg0W19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1zdWJoZWFkaW5nLTFbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXR5cG9ncmFwaHlbX25nY29udGVudC0lQ09NUCVdICAgaDRbX25nY29udGVudC0lQ09NUCVde2ZvbnQ6NDAwIDE1cHgvMjRweCBSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7bGV0dGVyLXNwYWNpbmc6bm9ybWFsO21hcmdpbjowIDAgMTZweH0ubWF0LWg1W19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10eXBvZ3JhcGh5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIGg1W19uZ2NvbnRlbnQtJUNPTVAlXXtmb250OjQwMCBjYWxjKDE0cHggKiAwLjgzKS8yMHB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjttYXJnaW46MCAwIDEycHh9Lm1hdC1oNltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdHlwb2dyYXBoeVtfbmdjb250ZW50LSVDT01QJV0gICBoNltfbmdjb250ZW50LSVDT01QJV17Zm9udDo0MDAgY2FsYygxNHB4ICogMC42NykvMjBweCBSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7bWFyZ2luOjAgMCAxMnB4fS5tYXQtYm9keS1zdHJvbmdbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWJvZHktMltfbmdjb250ZW50LSVDT01QJV17Zm9udDo1MDAgMTRweC8yNHB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtsZXR0ZXItc3BhY2luZzpub3JtYWx9Lm1hdC1ib2R5W19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1ib2R5LTFbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXR5cG9ncmFwaHlbX25nY29udGVudC0lQ09NUCVde2ZvbnQ6NDAwIDE0cHgvMjBweCBSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7bGV0dGVyLXNwYWNpbmc6bm9ybWFsfS5tYXQtYm9keVtfbmdjb250ZW50LSVDT01QJV0gICBwW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1ib2R5LTFbX25nY29udGVudC0lQ09NUCVdICAgcFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdHlwb2dyYXBoeVtfbmdjb250ZW50LSVDT01QJV0gICBwW19uZ2NvbnRlbnQtJUNPTVAlXXttYXJnaW46MCAwIDEycHh9Lm1hdC1zbWFsbFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtY2FwdGlvbltfbmdjb250ZW50LSVDT01QJV17Zm9udDo0MDAgMTJweC8yMHB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtsZXR0ZXItc3BhY2luZzpub3JtYWx9Lm1hdC1kaXNwbGF5LTRbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXR5cG9ncmFwaHlbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1kaXNwbGF5LTRbX25nY29udGVudC0lQ09NUCVde2ZvbnQ6MzAwIDExMnB4LzExMnB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtsZXR0ZXItc3BhY2luZzotMC4wNWVtO21hcmdpbjowIDAgNTZweH0ubWF0LWRpc3BsYXktM1tfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdHlwb2dyYXBoeVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWRpc3BsYXktM1tfbmdjb250ZW50LSVDT01QJV17Zm9udDo0MDAgNTZweC81NnB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtsZXR0ZXItc3BhY2luZzotMC4wMmVtO21hcmdpbjowIDAgNjRweH0ubWF0LWRpc3BsYXktMltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdHlwb2dyYXBoeVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWRpc3BsYXktMltfbmdjb250ZW50LSVDT01QJV17Zm9udDo0MDAgNDVweC80OHB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtsZXR0ZXItc3BhY2luZzotMC4wMDVlbTttYXJnaW46MCAwIDY0cHh9Lm1hdC1kaXNwbGF5LTFbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXR5cG9ncmFwaHlbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1kaXNwbGF5LTFbX25nY29udGVudC0lQ09NUCVde2ZvbnQ6NDAwIDM0cHgvNDBweCBSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7bGV0dGVyLXNwYWNpbmc6bm9ybWFsO21hcmdpbjowIDAgNjRweH0ubWF0LWJvdHRvbS1zaGVldC1jb250YWluZXJbX25nY29udGVudC0lQ09NUCVde2ZvbnQ6NDAwIDE0cHgvMjBweCBSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7bGV0dGVyLXNwYWNpbmc6bm9ybWFsfS5tYXQtYnV0dG9uW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1yYWlzZWQtYnV0dG9uW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1pY29uLWJ1dHRvbltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtc3Ryb2tlZC1idXR0b25bX25nY29udGVudC0lQ09NUCVdLCAubWF0LWZsYXQtYnV0dG9uW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1mYWJbX25nY29udGVudC0lQ09NUCVdLCAubWF0LW1pbmktZmFiW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7Zm9udC1zaXplOjE0cHg7Zm9udC13ZWlnaHQ6NTAwfS5tYXQtYnV0dG9uLXRvZ2dsZVtfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmfS5tYXQtY2FyZFtfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmfS5tYXQtY2FyZC10aXRsZVtfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjI0cHg7Zm9udC13ZWlnaHQ6NTAwfS5tYXQtY2FyZC1oZWFkZXJbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1jYXJkLXRpdGxlW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MjBweH0ubWF0LWNhcmQtc3VidGl0bGVbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWNhcmQtY29udGVudFtfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjE0cHh9Lm1hdC1jaGVja2JveFtfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmfS5tYXQtY2hlY2tib3gtbGF5b3V0W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtY2hlY2tib3gtbGFiZWxbX25nY29udGVudC0lQ09NUCVde2xpbmUtaGVpZ2h0OjI0cHh9Lm1hdC1jaGlwW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MTRweDtmb250LXdlaWdodDo1MDB9Lm1hdC1jaGlwW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtY2hpcC10cmFpbGluZy1pY29uLm1hdC1pY29uW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1jaGlwW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtY2hpcC1yZW1vdmUubWF0LWljb25bX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToxOHB4fS5tYXQtdGFibGVbX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZn0ubWF0LWhlYWRlci1jZWxsW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MTJweDtmb250LXdlaWdodDo1MDB9Lm1hdC1jZWxsW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1mb290ZXItY2VsbFtfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjE0cHh9Lm1hdC1jYWxlbmRhcltfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmfS5tYXQtY2FsZW5kYXItYm9keVtfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjEzcHh9Lm1hdC1jYWxlbmRhci1ib2R5LWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1jYWxlbmRhci1wZXJpb2QtYnV0dG9uW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MTRweDtmb250LXdlaWdodDo1MDB9Lm1hdC1jYWxlbmRhci10YWJsZS1oZWFkZXJbX25nY29udGVudC0lQ09NUCVdICAgdGhbX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToxMXB4O2ZvbnQtd2VpZ2h0OjQwMH0ubWF0LWRpYWxvZy10aXRsZVtfbmdjb250ZW50LSVDT01QJV17Zm9udDo1MDAgMjBweC8zMnB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtsZXR0ZXItc3BhY2luZzpub3JtYWx9Lm1hdC1leHBhbnNpb24tcGFuZWwtaGVhZGVyW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7Zm9udC1zaXplOjE1cHg7Zm9udC13ZWlnaHQ6NDAwfS5tYXQtZXhwYW5zaW9uLXBhbmVsLWNvbnRlbnRbX25nY29udGVudC0lQ09NUCVde2ZvbnQ6NDAwIDE0cHgvMjBweCBSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7bGV0dGVyLXNwYWNpbmc6bm9ybWFsfS5tYXQtZm9ybS1maWVsZFtfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOmluaGVyaXQ7Zm9udC13ZWlnaHQ6NDAwO2xpbmUtaGVpZ2h0OjEuMTI1O2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtsZXR0ZXItc3BhY2luZzpub3JtYWx9Lm1hdC1mb3JtLWZpZWxkLXdyYXBwZXJbX25nY29udGVudC0lQ09NUCVde3BhZGRpbmctYm90dG9tOjEuMzQzNzVlbX0ubWF0LWZvcm0tZmllbGQtcHJlZml4W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaWNvbltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtZm9ybS1maWVsZC1zdWZmaXhbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pY29uW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MTUwJTtsaW5lLWhlaWdodDoxLjEyNX0ubWF0LWZvcm0tZmllbGQtcHJlZml4W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaWNvbi1idXR0b25bX25nY29udGVudC0lQ09NUCVdLCAubWF0LWZvcm0tZmllbGQtc3VmZml4W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaWNvbi1idXR0b25bX25nY29udGVudC0lQ09NUCVde2hlaWdodDoxLjVlbTt3aWR0aDoxLjVlbX0ubWF0LWZvcm0tZmllbGQtcHJlZml4W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaWNvbi1idXR0b25bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pY29uW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1mb3JtLWZpZWxkLXN1ZmZpeFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWljb24tYnV0dG9uW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaWNvbltfbmdjb250ZW50LSVDT01QJV17aGVpZ2h0OjEuMTI1ZW07bGluZS1oZWlnaHQ6MS4xMjV9Lm1hdC1mb3JtLWZpZWxkLWluZml4W19uZ2NvbnRlbnQtJUNPTVAlXXtwYWRkaW5nOi41ZW0gMDtib3JkZXItdG9wOi44NDM3NWVtIHNvbGlkIHRyYW5zcGFyZW50fS5tYXQtZm9ybS1maWVsZC1jYW4tZmxvYXQubWF0LWZvcm0tZmllbGQtc2hvdWxkLWZsb2F0W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtZm9ybS1maWVsZC1jYW4tZmxvYXRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pbnB1dC1zZXJ2ZXJbX25nY29udGVudC0lQ09NUCVdOmZvY3VzICsgLm1hdC1mb3JtLWZpZWxkLWxhYmVsLXdyYXBwZXJbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXt0cmFuc2Zvcm06dHJhbnNsYXRlWSgtMS4zNDM3NWVtKSBzY2FsZSgwLjc1KTt3aWR0aDoxMzMuMzMzMzMzMzMzMyV9Lm1hdC1mb3JtLWZpZWxkLWNhbi1mbG9hdFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWlucHV0LXNlcnZlcltsYWJlbF1bX25nY29udGVudC0lQ09NUCVdOm5vdCg6bGFiZWwtc2hvd24pICsgLm1hdC1mb3JtLWZpZWxkLWxhYmVsLXdyYXBwZXJbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXt0cmFuc2Zvcm06dHJhbnNsYXRlWSgtMS4zNDM3NGVtKSBzY2FsZSgwLjc1KTt3aWR0aDoxMzMuMzMzMzQzMzMzMyV9Lm1hdC1mb3JtLWZpZWxkLWxhYmVsLXdyYXBwZXJbX25nY29udGVudC0lQ09NUCVde3RvcDotMC44NDM3NWVtO3BhZGRpbmctdG9wOi44NDM3NWVtfS5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17dG9wOjEuMzQzNzVlbX0ubWF0LWZvcm0tZmllbGQtdW5kZXJsaW5lW19uZ2NvbnRlbnQtJUNPTVAlXXtib3R0b206MS4zNDM3NWVtfS5tYXQtZm9ybS1maWVsZC1zdWJzY3JpcHQtd3JhcHBlcltfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjc1JTttYXJnaW4tdG9wOi42NjY2NjY2NjY3ZW07dG9wOmNhbGMoMTAwJSAtIDEuNzkxNjY2NjY2N2VtKX0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1sZWdhY3lbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLXdyYXBwZXJbX25nY29udGVudC0lQ09NUCVde3BhZGRpbmctYm90dG9tOjEuMjVlbX0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1sZWdhY3lbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWluZml4W19uZ2NvbnRlbnQtJUNPTVAlXXtwYWRkaW5nOi40Mzc1ZW0gMH0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1sZWdhY3kubWF0LWZvcm0tZmllbGQtY2FuLWZsb2F0Lm1hdC1mb3JtLWZpZWxkLXNob3VsZC1mbG9hdFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1sZWdhY3kubWF0LWZvcm0tZmllbGQtY2FuLWZsb2F0W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaW5wdXQtc2VydmVyW19uZ2NvbnRlbnQtJUNPTVAlXTpmb2N1cyArIC5tYXQtZm9ybS1maWVsZC1sYWJlbC13cmFwcGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17dHJhbnNmb3JtOnRyYW5zbGF0ZVkoLTEuMjgxMjVlbSkgc2NhbGUoMC43NSkgcGVyc3BlY3RpdmUoMTAwcHgpIHRyYW5zbGF0ZVooMC4wMDFweCk7LW1zLXRyYW5zZm9ybTp0cmFuc2xhdGVZKC0xLjI4MTI1ZW0pIHNjYWxlKDAuNzUpO3dpZHRoOjEzMy4zMzMzMzMzMzMzJX0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1sZWdhY3kubWF0LWZvcm0tZmllbGQtY2FuLWZsb2F0W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1hdXRvZmlsbC1jb250cm9sW19uZ2NvbnRlbnQtJUNPTVAlXTotd2Via2l0LWF1dG9maWxsICsgLm1hdC1mb3JtLWZpZWxkLWxhYmVsLXdyYXBwZXJbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXt0cmFuc2Zvcm06dHJhbnNsYXRlWSgtMS4yODEyNWVtKSBzY2FsZSgwLjc1KSBwZXJzcGVjdGl2ZSgxMDBweCkgdHJhbnNsYXRlWigwLjAwMTAxcHgpOy1tcy10cmFuc2Zvcm06dHJhbnNsYXRlWSgtMS4yODEyNGVtKSBzY2FsZSgwLjc1KTt3aWR0aDoxMzMuMzMzMzQzMzMzMyV9Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtbGVnYWN5Lm1hdC1mb3JtLWZpZWxkLWNhbi1mbG9hdFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWlucHV0LXNlcnZlcltsYWJlbF1bX25nY29udGVudC0lQ09NUCVdOm5vdCg6bGFiZWwtc2hvd24pICsgLm1hdC1mb3JtLWZpZWxkLWxhYmVsLXdyYXBwZXJbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXt0cmFuc2Zvcm06dHJhbnNsYXRlWSgtMS4yODEyNWVtKSBzY2FsZSgwLjc1KSBwZXJzcGVjdGl2ZSgxMDBweCkgdHJhbnNsYXRlWigwLjAwMTAycHgpOy1tcy10cmFuc2Zvcm06dHJhbnNsYXRlWSgtMS4yODEyM2VtKSBzY2FsZSgwLjc1KTt3aWR0aDoxMzMuMzMzMzUzMzMzMyV9Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtbGVnYWN5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17dG9wOjEuMjgxMjVlbX0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1sZWdhY3lbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLXVuZGVybGluZVtfbmdjb250ZW50LSVDT01QJV17Ym90dG9tOjEuMjVlbX0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1sZWdhY3lbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLXN1YnNjcmlwdC13cmFwcGVyW19uZ2NvbnRlbnQtJUNPTVAlXXttYXJnaW4tdG9wOi41NDE2NjY2NjY3ZW07dG9wOmNhbGMoMTAwJSAtIDEuNjY2NjY2NjY2N2VtKX1AbWVkaWEgcHJpbnR7Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtbGVnYWN5Lm1hdC1mb3JtLWZpZWxkLWNhbi1mbG9hdC5tYXQtZm9ybS1maWVsZC1zaG91bGQtZmxvYXRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtbGVnYWN5Lm1hdC1mb3JtLWZpZWxkLWNhbi1mbG9hdFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWlucHV0LXNlcnZlcltfbmdjb250ZW50LSVDT01QJV06Zm9jdXMgKyAubWF0LWZvcm0tZmllbGQtbGFiZWwtd3JhcHBlcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVde3RyYW5zZm9ybTp0cmFuc2xhdGVZKC0xLjI4MTIyZW0pIHNjYWxlKDAuNzUpfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWxlZ2FjeS5tYXQtZm9ybS1maWVsZC1jYW4tZmxvYXRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWF1dG9maWxsLWNvbnRyb2xbX25nY29udGVudC0lQ09NUCVdOi13ZWJraXQtYXV0b2ZpbGwgKyAubWF0LWZvcm0tZmllbGQtbGFiZWwtd3JhcHBlcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVde3RyYW5zZm9ybTp0cmFuc2xhdGVZKC0xLjI4MTIxZW0pIHNjYWxlKDAuNzUpfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWxlZ2FjeS5tYXQtZm9ybS1maWVsZC1jYW4tZmxvYXRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pbnB1dC1zZXJ2ZXJbbGFiZWxdW19uZ2NvbnRlbnQtJUNPTVAlXTpub3QoOmxhYmVsLXNob3duKSArIC5tYXQtZm9ybS1maWVsZC1sYWJlbC13cmFwcGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17dHJhbnNmb3JtOnRyYW5zbGF0ZVkoLTEuMjgxMmVtKSBzY2FsZSgwLjc1KX19Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtZmlsbFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtaW5maXhbX25nY29udGVudC0lQ09NUCVde3BhZGRpbmc6LjI1ZW0gMCAuNzVlbSAwfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWZpbGxbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXt0b3A6MS4wOTM3NWVtO21hcmdpbi10b3A6LTAuNWVtfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWZpbGwubWF0LWZvcm0tZmllbGQtY2FuLWZsb2F0Lm1hdC1mb3JtLWZpZWxkLXNob3VsZC1mbG9hdFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1maWxsLm1hdC1mb3JtLWZpZWxkLWNhbi1mbG9hdFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWlucHV0LXNlcnZlcltfbmdjb250ZW50LSVDT01QJV06Zm9jdXMgKyAubWF0LWZvcm0tZmllbGQtbGFiZWwtd3JhcHBlcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVde3RyYW5zZm9ybTp0cmFuc2xhdGVZKC0wLjU5Mzc1ZW0pIHNjYWxlKDAuNzUpO3dpZHRoOjEzMy4zMzMzMzMzMzMzJX0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1maWxsLm1hdC1mb3JtLWZpZWxkLWNhbi1mbG9hdFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWlucHV0LXNlcnZlcltsYWJlbF1bX25nY29udGVudC0lQ09NUCVdOm5vdCg6bGFiZWwtc2hvd24pICsgLm1hdC1mb3JtLWZpZWxkLWxhYmVsLXdyYXBwZXJbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXt0cmFuc2Zvcm06dHJhbnNsYXRlWSgtMC41OTM3NGVtKSBzY2FsZSgwLjc1KTt3aWR0aDoxMzMuMzMzMzQzMzMzMyV9Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2Utb3V0bGluZVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtaW5maXhbX25nY29udGVudC0lQ09NUCVde3BhZGRpbmc6MWVtIDAgMWVtIDB9Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2Utb3V0bGluZVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVde3RvcDoxLjg0Mzc1ZW07bWFyZ2luLXRvcDotMC4yNWVtfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLW91dGxpbmUubWF0LWZvcm0tZmllbGQtY2FuLWZsb2F0Lm1hdC1mb3JtLWZpZWxkLXNob3VsZC1mbG9hdFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1vdXRsaW5lLm1hdC1mb3JtLWZpZWxkLWNhbi1mbG9hdFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWlucHV0LXNlcnZlcltfbmdjb250ZW50LSVDT01QJV06Zm9jdXMgKyAubWF0LWZvcm0tZmllbGQtbGFiZWwtd3JhcHBlcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVde3RyYW5zZm9ybTp0cmFuc2xhdGVZKC0xLjU5Mzc1ZW0pIHNjYWxlKDAuNzUpO3dpZHRoOjEzMy4zMzMzMzMzMzMzJX0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1vdXRsaW5lLm1hdC1mb3JtLWZpZWxkLWNhbi1mbG9hdFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWlucHV0LXNlcnZlcltsYWJlbF1bX25nY29udGVudC0lQ09NUCVdOm5vdCg6bGFiZWwtc2hvd24pICsgLm1hdC1mb3JtLWZpZWxkLWxhYmVsLXdyYXBwZXJbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXt0cmFuc2Zvcm06dHJhbnNsYXRlWSgtMS41OTM3NGVtKSBzY2FsZSgwLjc1KTt3aWR0aDoxMzMuMzMzMzQzMzMzMyV9Lm1hdC1ncmlkLXRpbGUtaGVhZGVyW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1ncmlkLXRpbGUtZm9vdGVyW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MTRweH0ubWF0LWdyaWQtdGlsZS1oZWFkZXJbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saW5lW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1ncmlkLXRpbGUtZm9vdGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGluZVtfbmdjb250ZW50LSVDT01QJV17d2hpdGUtc3BhY2U6bm93cmFwO292ZXJmbG93OmhpZGRlbjt0ZXh0LW92ZXJmbG93OmVsbGlwc2lzO2Rpc3BsYXk6YmxvY2s7Ym94LXNpemluZzpib3JkZXItYm94fS5tYXQtZ3JpZC10aWxlLWhlYWRlcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpbmVbX25nY29udGVudC0lQ09NUCVdOm50aC1jaGlsZChuKzIpLCAubWF0LWdyaWQtdGlsZS1mb290ZXJbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saW5lW19uZ2NvbnRlbnQtJUNPTVAlXTpudGgtY2hpbGQobisyKXtmb250LXNpemU6MTJweH1pbnB1dC5tYXQtaW5wdXQtZWxlbWVudFtfbmdjb250ZW50LSVDT01QJV17bWFyZ2luLXRvcDotMC4wNjI1ZW19Lm1hdC1tZW51LWl0ZW1bX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtmb250LXNpemU6MTRweDtmb250LXdlaWdodDo0MDB9Lm1hdC1wYWdpbmF0b3JbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXBhZ2luYXRvci1wYWdlLXNpemVbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1zZWxlY3QtdHJpZ2dlcltfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2ZvbnQtc2l6ZToxMnB4fS5tYXQtcmFkaW8tYnV0dG9uW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWZ9Lm1hdC1zZWxlY3RbX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZn0ubWF0LXNlbGVjdC10cmlnZ2VyW19uZ2NvbnRlbnQtJUNPTVAlXXtoZWlnaHQ6MS4xMjVlbX0ubWF0LXNsaWRlLXRvZ2dsZS1jb250ZW50W19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWZ9Lm1hdC1zbGlkZXItdGh1bWItbGFiZWwtdGV4dFtfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2ZvbnQtc2l6ZToxMnB4O2ZvbnQtd2VpZ2h0OjUwMH0ubWF0LXN0ZXBwZXItdmVydGljYWxbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXN0ZXBwZXItaG9yaXpvbnRhbFtfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmfS5tYXQtc3RlcC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjE0cHg7Zm9udC13ZWlnaHQ6NDAwfS5tYXQtc3RlcC1zdWItbGFiZWwtZXJyb3JbX25nY29udGVudC0lQ09NUCVde2ZvbnQtd2VpZ2h0Om5vcm1hbH0ubWF0LXN0ZXAtbGFiZWwtZXJyb3JbX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToxNHB4fS5tYXQtc3RlcC1sYWJlbC1zZWxlY3RlZFtfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjE0cHg7Zm9udC13ZWlnaHQ6NTAwfS5tYXQtdGFiLWdyb3VwW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWZ9Lm1hdC10YWItbGFiZWxbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXRhYi1saW5rW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7Zm9udC1zaXplOjE0cHg7Zm9udC13ZWlnaHQ6NTAwfS5tYXQtdG9vbGJhcltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdG9vbGJhcltfbmdjb250ZW50LSVDT01QJV0gICBoMVtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdG9vbGJhcltfbmdjb250ZW50LSVDT01QJV0gICBoMltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdG9vbGJhcltfbmdjb250ZW50LSVDT01QJV0gICBoM1tfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdG9vbGJhcltfbmdjb250ZW50LSVDT01QJV0gICBoNFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdG9vbGJhcltfbmdjb250ZW50LSVDT01QJV0gICBoNVtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdG9vbGJhcltfbmdjb250ZW50LSVDT01QJV0gICBoNltfbmdjb250ZW50LSVDT01QJV17Zm9udDo1MDAgMjBweC8zMnB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtsZXR0ZXItc3BhY2luZzpub3JtYWw7bWFyZ2luOjB9Lm1hdC10b29sdGlwW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7Zm9udC1zaXplOjEwcHg7cGFkZGluZy10b3A6NnB4O3BhZGRpbmctYm90dG9tOjZweH0ubWF0LXRvb2x0aXAtaGFuZHNldFtfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjE0cHg7cGFkZGluZy10b3A6OHB4O3BhZGRpbmctYm90dG9tOjhweH0ubWF0LWxpc3QtaXRlbVtfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmfS5tYXQtbGlzdC1vcHRpb25bX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZn0ubWF0LWxpc3QtYmFzZVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpc3QtaXRlbVtfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjE2cHh9Lm1hdC1saXN0LWJhc2VbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saXN0LWl0ZW1bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saW5lW19uZ2NvbnRlbnQtJUNPTVAlXXt3aGl0ZS1zcGFjZTpub3dyYXA7b3ZlcmZsb3c6aGlkZGVuO3RleHQtb3ZlcmZsb3c6ZWxsaXBzaXM7ZGlzcGxheTpibG9jaztib3gtc2l6aW5nOmJvcmRlci1ib3h9Lm1hdC1saXN0LWJhc2VbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saXN0LWl0ZW1bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saW5lW19uZ2NvbnRlbnQtJUNPTVAlXTpudGgtY2hpbGQobisyKXtmb250LXNpemU6MTRweH0ubWF0LWxpc3QtYmFzZVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpc3Qtb3B0aW9uW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MTZweH0ubWF0LWxpc3QtYmFzZVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpc3Qtb3B0aW9uW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGluZVtfbmdjb250ZW50LSVDT01QJV17d2hpdGUtc3BhY2U6bm93cmFwO292ZXJmbG93OmhpZGRlbjt0ZXh0LW92ZXJmbG93OmVsbGlwc2lzO2Rpc3BsYXk6YmxvY2s7Ym94LXNpemluZzpib3JkZXItYm94fS5tYXQtbGlzdC1iYXNlW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGlzdC1vcHRpb25bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saW5lW19uZ2NvbnRlbnQtJUNPTVAlXTpudGgtY2hpbGQobisyKXtmb250LXNpemU6MTRweH0ubWF0LWxpc3QtYmFzZVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXN1YmhlYWRlcltfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2ZvbnQtc2l6ZToxNHB4O2ZvbnQtd2VpZ2h0OjUwMH0ubWF0LWxpc3QtYmFzZVtkZW5zZV1bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saXN0LWl0ZW1bX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToxMnB4fS5tYXQtbGlzdC1iYXNlW2RlbnNlXVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpc3QtaXRlbVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpbmVbX25nY29udGVudC0lQ09NUCVde3doaXRlLXNwYWNlOm5vd3JhcDtvdmVyZmxvdzpoaWRkZW47dGV4dC1vdmVyZmxvdzplbGxpcHNpcztkaXNwbGF5OmJsb2NrO2JveC1zaXppbmc6Ym9yZGVyLWJveH0ubWF0LWxpc3QtYmFzZVtkZW5zZV1bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saXN0LWl0ZW1bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saW5lW19uZ2NvbnRlbnQtJUNPTVAlXTpudGgtY2hpbGQobisyKXtmb250LXNpemU6MTJweH0ubWF0LWxpc3QtYmFzZVtkZW5zZV1bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saXN0LW9wdGlvbltfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjEycHh9Lm1hdC1saXN0LWJhc2VbZGVuc2VdW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGlzdC1vcHRpb25bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saW5lW19uZ2NvbnRlbnQtJUNPTVAlXXt3aGl0ZS1zcGFjZTpub3dyYXA7b3ZlcmZsb3c6aGlkZGVuO3RleHQtb3ZlcmZsb3c6ZWxsaXBzaXM7ZGlzcGxheTpibG9jaztib3gtc2l6aW5nOmJvcmRlci1ib3h9Lm1hdC1saXN0LWJhc2VbZGVuc2VdW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGlzdC1vcHRpb25bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saW5lW19uZ2NvbnRlbnQtJUNPTVAlXTpudGgtY2hpbGQobisyKXtmb250LXNpemU6MTJweH0ubWF0LWxpc3QtYmFzZVtkZW5zZV1bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1zdWJoZWFkZXJbX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtmb250LXNpemU6MTJweDtmb250LXdlaWdodDo1MDB9Lm1hdC1vcHRpb25bX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtmb250LXNpemU6MTZweH0ubWF0LW9wdGdyb3VwLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250OjUwMCAxNHB4LzI0cHggUm9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2xldHRlci1zcGFjaW5nOm5vcm1hbH0ubWF0LXNpbXBsZS1zbmFja2Jhcltfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2ZvbnQtc2l6ZToxNHB4fS5tYXQtc2ltcGxlLXNuYWNrYmFyLWFjdGlvbltfbmdjb250ZW50LSVDT01QJV17bGluZS1oZWlnaHQ6MTtmb250LWZhbWlseTppbmhlcml0O2ZvbnQtc2l6ZTppbmhlcml0O2ZvbnQtd2VpZ2h0OjUwMH0ubWF0LXRyZWVbX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZn0ubWF0LXRyZWUtbm9kZVtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtbmVzdGVkLXRyZWUtbm9kZVtfbmdjb250ZW50LSVDT01QJV17Zm9udC13ZWlnaHQ6NDAwO2ZvbnQtc2l6ZToxNHB4fS5tYXQtcmlwcGxlW19uZ2NvbnRlbnQtJUNPTVAlXXtvdmVyZmxvdzpoaWRkZW47cG9zaXRpb246cmVsYXRpdmV9Lm1hdC1yaXBwbGVbX25nY29udGVudC0lQ09NUCVdOm5vdCg6ZW1wdHkpe3RyYW5zZm9ybTp0cmFuc2xhdGVaKDApfS5tYXQtcmlwcGxlLm1hdC1yaXBwbGUtdW5ib3VuZGVkW19uZ2NvbnRlbnQtJUNPTVAlXXtvdmVyZmxvdzp2aXNpYmxlfS5tYXQtcmlwcGxlLWVsZW1lbnRbX25nY29udGVudC0lQ09NUCVde3Bvc2l0aW9uOmFic29sdXRlO2JvcmRlci1yYWRpdXM6NTAlO3BvaW50ZXItZXZlbnRzOm5vbmU7dHJhbnNpdGlvbjpvcGFjaXR5LHRyYW5zZm9ybSAwbXMgY3ViaWMtYmV6aWVyKDAsIDAsIDAuMiwgMSk7dHJhbnNmb3JtOnNjYWxlKDApfS5jZGstaGlnaC1jb250cmFzdC1hY3RpdmVbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1yaXBwbGUtZWxlbWVudFtfbmdjb250ZW50LSVDT01QJV17ZGlzcGxheTpub25lfS5jZGstdmlzdWFsbHktaGlkZGVuW19uZ2NvbnRlbnQtJUNPTVAlXXtib3JkZXI6MDtjbGlwOnJlY3QoMCAwIDAgMCk7aGVpZ2h0OjFweDttYXJnaW46LTFweDtvdmVyZmxvdzpoaWRkZW47cGFkZGluZzowO3Bvc2l0aW9uOmFic29sdXRlO3dpZHRoOjFweDtvdXRsaW5lOjA7LXdlYmtpdC1hcHBlYXJhbmNlOm5vbmU7LW1vei1hcHBlYXJhbmNlOm5vbmV9LmNkay1vdmVybGF5LWNvbnRhaW5lcltfbmdjb250ZW50LSVDT01QJV0sIC5jZGstZ2xvYmFsLW92ZXJsYXktd3JhcHBlcltfbmdjb250ZW50LSVDT01QJV17cG9pbnRlci1ldmVudHM6bm9uZTt0b3A6MDtsZWZ0OjA7aGVpZ2h0OjEwMCU7d2lkdGg6MTAwJX0uY2RrLW92ZXJsYXktY29udGFpbmVyW19uZ2NvbnRlbnQtJUNPTVAlXXtwb3NpdGlvbjpmaXhlZDt6LWluZGV4OjEwMDB9LmNkay1vdmVybGF5LWNvbnRhaW5lcltfbmdjb250ZW50LSVDT01QJV06ZW1wdHl7ZGlzcGxheTpub25lfS5jZGstZ2xvYmFsLW92ZXJsYXktd3JhcHBlcltfbmdjb250ZW50LSVDT01QJV17ZGlzcGxheTpmbGV4O3Bvc2l0aW9uOmFic29sdXRlO3otaW5kZXg6MTAwMH0uY2RrLW92ZXJsYXktcGFuZVtfbmdjb250ZW50LSVDT01QJV17cG9zaXRpb246YWJzb2x1dGU7cG9pbnRlci1ldmVudHM6YXV0bztib3gtc2l6aW5nOmJvcmRlci1ib3g7ei1pbmRleDoxMDAwO2Rpc3BsYXk6ZmxleDttYXgtd2lkdGg6MTAwJTttYXgtaGVpZ2h0OjEwMCV9LmNkay1vdmVybGF5LWJhY2tkcm9wW19uZ2NvbnRlbnQtJUNPTVAlXXtwb3NpdGlvbjphYnNvbHV0ZTt0b3A6MDtib3R0b206MDtsZWZ0OjA7cmlnaHQ6MDt6LWluZGV4OjEwMDA7cG9pbnRlci1ldmVudHM6YXV0bzstd2Via2l0LXRhcC1oaWdobGlnaHQtY29sb3I6dHJhbnNwYXJlbnQ7dHJhbnNpdGlvbjpvcGFjaXR5IDQwMG1zIGN1YmljLWJlemllcigwLjI1LCAwLjgsIDAuMjUsIDEpO29wYWNpdHk6MH0uY2RrLW92ZXJsYXktYmFja2Ryb3AuY2RrLW92ZXJsYXktYmFja2Ryb3Atc2hvd2luZ1tfbmdjb250ZW50LSVDT01QJV17b3BhY2l0eToxfUBtZWRpYSBzY3JlZW4gYW5kICgtbXMtaGlnaC1jb250cmFzdDogYWN0aXZlKXsuY2RrLW92ZXJsYXktYmFja2Ryb3AuY2RrLW92ZXJsYXktYmFja2Ryb3Atc2hvd2luZ1tfbmdjb250ZW50LSVDT01QJV17b3BhY2l0eTouNn19LmNkay1vdmVybGF5LWRhcmstYmFja2Ryb3BbX25nY29udGVudC0lQ09NUCVde2JhY2tncm91bmQ6cmdiYSgwLDAsMCwuMzIpfS5jZGstb3ZlcmxheS10cmFuc3BhcmVudC1iYWNrZHJvcFtfbmdjb250ZW50LSVDT01QJV0sIC5jZGstb3ZlcmxheS10cmFuc3BhcmVudC1iYWNrZHJvcC5jZGstb3ZlcmxheS1iYWNrZHJvcC1zaG93aW5nW19uZ2NvbnRlbnQtJUNPTVAlXXtvcGFjaXR5OjB9LmNkay1vdmVybGF5LWNvbm5lY3RlZC1wb3NpdGlvbi1ib3VuZGluZy1ib3hbX25nY29udGVudC0lQ09NUCVde3Bvc2l0aW9uOmFic29sdXRlO3otaW5kZXg6MTAwMDtkaXNwbGF5OmZsZXg7ZmxleC1kaXJlY3Rpb246Y29sdW1uO21pbi13aWR0aDoxcHg7bWluLWhlaWdodDoxcHh9LmNkay1nbG9iYWwtc2Nyb2xsYmxvY2tbX25nY29udGVudC0lQ09NUCVde3Bvc2l0aW9uOmZpeGVkO3dpZHRoOjEwMCU7b3ZlcmZsb3cteTpzY3JvbGx9QGtleWZyYW1lcyBjZGstdGV4dC1maWVsZC1hdXRvZmlsbC1zdGFydHt9QGtleWZyYW1lcyBjZGstdGV4dC1maWVsZC1hdXRvZmlsbC1lbmR7fS5jZGstdGV4dC1maWVsZC1hdXRvZmlsbC1tb25pdG9yZWRbX25nY29udGVudC0lQ09NUCVdOi13ZWJraXQtYXV0b2ZpbGx7YW5pbWF0aW9uOmNkay10ZXh0LWZpZWxkLWF1dG9maWxsLXN0YXJ0IDBzIDFtc30uY2RrLXRleHQtZmllbGQtYXV0b2ZpbGwtbW9uaXRvcmVkW19uZ2NvbnRlbnQtJUNPTVAlXTpub3QoOi13ZWJraXQtYXV0b2ZpbGwpe2FuaW1hdGlvbjpjZGstdGV4dC1maWVsZC1hdXRvZmlsbC1lbmQgMHMgMW1zfXRleHRhcmVhLmNkay10ZXh0YXJlYS1hdXRvc2l6ZVtfbmdjb250ZW50LSVDT01QJV17cmVzaXplOm5vbmV9dGV4dGFyZWEuY2RrLXRleHRhcmVhLWF1dG9zaXplLW1lYXN1cmluZ1tfbmdjb250ZW50LSVDT01QJV17cGFkZGluZzoycHggMCAhaW1wb3J0YW50O2JveC1zaXppbmc6Y29udGVudC1ib3ggIWltcG9ydGFudDtoZWlnaHQ6YXV0byAhaW1wb3J0YW50O292ZXJmbG93OmhpZGRlbiAhaW1wb3J0YW50fXRleHRhcmVhLmNkay10ZXh0YXJlYS1hdXRvc2l6ZS1tZWFzdXJpbmctZmlyZWZveFtfbmdjb250ZW50LSVDT01QJV17cGFkZGluZzoycHggMCAhaW1wb3J0YW50O2JveC1zaXppbmc6Y29udGVudC1ib3ggIWltcG9ydGFudDtoZWlnaHQ6MCAhaW1wb3J0YW50fS5tYXQtZm9jdXMtaW5kaWNhdG9yW19uZ2NvbnRlbnQtJUNPTVAlXXtwb3NpdGlvbjpyZWxhdGl2ZX0ubWF0LW1kYy1mb2N1cy1pbmRpY2F0b3JbX25nY29udGVudC0lQ09NUCVde3Bvc2l0aW9uOnJlbGF0aXZlfS5tYXQtcmlwcGxlLWVsZW1lbnRbX25nY29udGVudC0lQ09NUCVde2JhY2tncm91bmQtY29sb3I6cmdiYSgwLDAsMCwuMSl9Lm1hdC1vcHRpb25bX25nY29udGVudC0lQ09NUCVde2NvbG9yOiMyMTIxMjF9Lm1hdC1vcHRpb25bX25nY29udGVudC0lQ09NUCVdOmhvdmVyOm5vdCgubWF0LW9wdGlvbi1kaXNhYmxlZCksIC5tYXQtb3B0aW9uW19uZ2NvbnRlbnQtJUNPTVAlXTpmb2N1czpub3QoLm1hdC1vcHRpb24tZGlzYWJsZWQpe2JhY2tncm91bmQ6cmdiYSgwLDAsMCwuMDQpfS5tYXQtb3B0aW9uLm1hdC1zZWxlY3RlZFtfbmdjb250ZW50LSVDT01QJV06bm90KC5tYXQtb3B0aW9uLW11bHRpcGxlKTpub3QoLm1hdC1vcHRpb24tZGlzYWJsZWQpe2JhY2tncm91bmQ6cmdiYSgwLDAsMCwuMDQpfS5tYXQtb3B0aW9uLm1hdC1hY3RpdmVbX25nY29udGVudC0lQ09NUCVde2JhY2tncm91bmQ6cmdiYSgwLDAsMCwuMDQpO2NvbG9yOiMyMTIxMjF9Lm1hdC1vcHRpb24ubWF0LW9wdGlvbi1kaXNhYmxlZFtfbmdjb250ZW50LSVDT01QJV17Y29sb3I6cmdiYSgwLDAsMCwuMzgpfS5tYXQtcHJpbWFyeVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LW9wdGlvbi5tYXQtc2VsZWN0ZWRbX25nY29udGVudC0lQ09NUCVdOm5vdCgubWF0LW9wdGlvbi1kaXNhYmxlZCl7Y29sb3I6I2Y1N2MwMH0ubWF0LWFjY2VudFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LW9wdGlvbi5tYXQtc2VsZWN0ZWRbX25nY29udGVudC0lQ09NUCVdOm5vdCgubWF0LW9wdGlvbi1kaXNhYmxlZCl7Y29sb3I6I2ZmOTgwMH0ubWF0LXdhcm5bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1vcHRpb24ubWF0LXNlbGVjdGVkW19uZ2NvbnRlbnQtJUNPTVAlXTpub3QoLm1hdC1vcHRpb24tZGlzYWJsZWQpe2NvbG9yOiNmNDQzMzZ9Lm1hdC1vcHRncm91cC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17Y29sb3I6IzYxNjE2MX0ubWF0LW9wdGdyb3VwLWRpc2FibGVkW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtb3B0Z3JvdXAtbGFiZWxbX25nY29udGVudC0lQ09NUCVde2NvbG9yOnJnYmEoMCwwLDAsLjM4KX0ubWF0LXBzZXVkby1jaGVja2JveFtfbmdjb250ZW50LSVDT01QJV17Y29sb3I6IzYxNjE2MX0ubWF0LXBzZXVkby1jaGVja2JveFtfbmdjb250ZW50LSVDT01QJV06OmFmdGVye2NvbG9yOiNmYWZhZmF9Lm1hdC1wc2V1ZG8tY2hlY2tib3gtZGlzYWJsZWRbX25nY29udGVudC0lQ09NUCVde2NvbG9yOiNiMGIwYjB9Lm1hdC1wcmltYXJ5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtcHNldWRvLWNoZWNrYm94LWNoZWNrZWRbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXByaW1hcnlbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1wc2V1ZG8tY2hlY2tib3gtaW5kZXRlcm1pbmF0ZVtfbmdjb250ZW50LSVDT01QJV17YmFja2dyb3VuZDojZjU3YzAwfS5tYXQtcHNldWRvLWNoZWNrYm94LWNoZWNrZWRbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXBzZXVkby1jaGVja2JveC1pbmRldGVybWluYXRlW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1hY2NlbnRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1wc2V1ZG8tY2hlY2tib3gtY2hlY2tlZFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtYWNjZW50W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtcHNldWRvLWNoZWNrYm94LWluZGV0ZXJtaW5hdGVbX25nY29udGVudC0lQ09NUCVde2JhY2tncm91bmQ6I2ZmOTgwMH0ubWF0LXdhcm5bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1wc2V1ZG8tY2hlY2tib3gtY2hlY2tlZFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtd2Fybltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXBzZXVkby1jaGVja2JveC1pbmRldGVybWluYXRlW19uZ2NvbnRlbnQtJUNPTVAlXXtiYWNrZ3JvdW5kOiNmNDQzMzZ9Lm1hdC1wc2V1ZG8tY2hlY2tib3gtY2hlY2tlZC5tYXQtcHNldWRvLWNoZWNrYm94LWRpc2FibGVkW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1wc2V1ZG8tY2hlY2tib3gtaW5kZXRlcm1pbmF0ZS5tYXQtcHNldWRvLWNoZWNrYm94LWRpc2FibGVkW19uZ2NvbnRlbnQtJUNPTVAlXXtiYWNrZ3JvdW5kOiNiMGIwYjB9Lm1hdC1hcHAtYmFja2dyb3VuZFtfbmdjb250ZW50LSVDT01QJV17YmFja2dyb3VuZC1jb2xvcjojZmFmYWZhO2NvbG9yOiMyMTIxMjF9Lm1hdC1lbGV2YXRpb24tejBbX25nY29udGVudC0lQ09NUCVde2JveC1zaGFkb3c6MHB4IDBweCAwcHggMHB4IHJnYmEoMCwgMCwgMCwgMC4yKSwwcHggMHB4IDBweCAwcHggcmdiYSgwLCAwLCAwLCAwLjE0KSwwcHggMHB4IDBweCAwcHggcmdiYSgwLCAwLCAwLCAwLjEyKX0ubWF0LWVsZXZhdGlvbi16MVtfbmdjb250ZW50LSVDT01QJV17Ym94LXNoYWRvdzowcHggMnB4IDFweCAtMXB4IHJnYmEoMCwgMCwgMCwgMC4yKSwwcHggMXB4IDFweCAwcHggcmdiYSgwLCAwLCAwLCAwLjE0KSwwcHggMXB4IDNweCAwcHggcmdiYSgwLCAwLCAwLCAwLjEyKX0ubWF0LWVsZXZhdGlvbi16Mltfbmdjb250ZW50LSVDT01QJV17Ym94LXNoYWRvdzowcHggM3B4IDFweCAtMnB4IHJnYmEoMCwgMCwgMCwgMC4yKSwwcHggMnB4IDJweCAwcHggcmdiYSgwLCAwLCAwLCAwLjE0KSwwcHggMXB4IDVweCAwcHggcmdiYSgwLCAwLCAwLCAwLjEyKX0ubWF0LWVsZXZhdGlvbi16M1tfbmdjb250ZW50LSVDT01QJV17Ym94LXNoYWRvdzowcHggM3B4IDNweCAtMnB4IHJnYmEoMCwgMCwgMCwgMC4yKSwwcHggM3B4IDRweCAwcHggcmdiYSgwLCAwLCAwLCAwLjE0KSwwcHggMXB4IDhweCAwcHggcmdiYSgwLCAwLCAwLCAwLjEyKX0ubWF0LWVsZXZhdGlvbi16NFtfbmdjb250ZW50LSVDT01QJV17Ym94LXNoYWRvdzowcHggMnB4IDRweCAtMXB4IHJnYmEoMCwgMCwgMCwgMC4yKSwwcHggNHB4IDVweCAwcHggcmdiYSgwLCAwLCAwLCAwLjE0KSwwcHggMXB4IDEwcHggMHB4IHJnYmEoMCwgMCwgMCwgMC4xMil9Lm1hdC1lbGV2YXRpb24tejVbX25nY29udGVudC0lQ09NUCVde2JveC1zaGFkb3c6MHB4IDNweCA1cHggLTFweCByZ2JhKDAsIDAsIDAsIDAuMiksMHB4IDVweCA4cHggMHB4IHJnYmEoMCwgMCwgMCwgMC4xNCksMHB4IDFweCAxNHB4IDBweCByZ2JhKDAsIDAsIDAsIDAuMTIpfS5tYXQtZWxldmF0aW9uLXo2W19uZ2NvbnRlbnQtJUNPTVAlXXtib3gtc2hhZG93OjBweCAzcHggNXB4IC0xcHggcmdiYSgwLCAwLCAwLCAwLjIpLDBweCA2cHggMTBweCAwcHggcmdiYSgwLCAwLCAwLCAwLjE0KSwwcHggMXB4IDE4cHggMHB4IHJnYmEoMCwgMCwgMCwgMC4xMil9Lm1hdC1lbGV2YXRpb24tejdbX25nY29udGVudC0lQ09NUCVde2JveC1zaGFkb3c6MHB4IDRweCA1cHggLTJweCByZ2JhKDAsIDAsIDAsIDAuMiksMHB4IDdweCAxMHB4IDFweCByZ2JhKDAsIDAsIDAsIDAuMTQpLDBweCAycHggMTZweCAxcHggcmdiYSgwLCAwLCAwLCAwLjEyKX0ubWF0LWVsZXZhdGlvbi16OFtfbmdjb250ZW50LSVDT01QJV17Ym94LXNoYWRvdzowcHggNXB4IDVweCAtM3B4IHJnYmEoMCwgMCwgMCwgMC4yKSwwcHggOHB4IDEwcHggMXB4IHJnYmEoMCwgMCwgMCwgMC4xNCksMHB4IDNweCAxNHB4IDJweCByZ2JhKDAsIDAsIDAsIDAuMTIpfS5tYXQtZWxldmF0aW9uLXo5W19uZ2NvbnRlbnQtJUNPTVAlXXtib3gtc2hhZG93OjBweCA1cHggNnB4IC0zcHggcmdiYSgwLCAwLCAwLCAwLjIpLDBweCA5cHggMTJweCAxcHggcmdiYSgwLCAwLCAwLCAwLjE0KSwwcHggM3B4IDE2cHggMnB4IHJnYmEoMCwgMCwgMCwgMC4xMil9Lm1hdC1lbGV2YXRpb24tejEwW19uZ2NvbnRlbnQtJUNPTVAlXXtib3gtc2hhZG93OjBweCA2cHggNnB4IC0zcHggcmdiYSgwLCAwLCAwLCAwLjIpLDBweCAxMHB4IDE0cHggMXB4IHJnYmEoMCwgMCwgMCwgMC4xNCksMHB4IDRweCAxOHB4IDNweCByZ2JhKDAsIDAsIDAsIDAuMTIpfS5tYXQtZWxldmF0aW9uLXoxMVtfbmdjb250ZW50LSVDT01QJV17Ym94LXNoYWRvdzowcHggNnB4IDdweCAtNHB4IHJnYmEoMCwgMCwgMCwgMC4yKSwwcHggMTFweCAxNXB4IDFweCByZ2JhKDAsIDAsIDAsIDAuMTQpLDBweCA0cHggMjBweCAzcHggcmdiYSgwLCAwLCAwLCAwLjEyKX0ubWF0LWVsZXZhdGlvbi16MTJbX25nY29udGVudC0lQ09NUCVde2JveC1zaGFkb3c6MHB4IDdweCA4cHggLTRweCByZ2JhKDAsIDAsIDAsIDAuMiksMHB4IDEycHggMTdweCAycHggcmdiYSgwLCAwLCAwLCAwLjE0KSwwcHggNXB4IDIycHggNHB4IHJnYmEoMCwgMCwgMCwgMC4xMil9Lm1hdC1lbGV2YXRpb24tejEzW19uZ2NvbnRlbnQtJUNPTVAlXXtib3gtc2hhZG93OjBweCA3cHggOHB4IC00cHggcmdiYSgwLCAwLCAwLCAwLjIpLDBweCAxM3B4IDE5cHggMnB4IHJnYmEoMCwgMCwgMCwgMC4xNCksMHB4IDVweCAyNHB4IDRweCByZ2JhKDAsIDAsIDAsIDAuMTIpfS5tYXQtZWxldmF0aW9uLXoxNFtfbmdjb250ZW50LSVDT01QJV17Ym94LXNoYWRvdzowcHggN3B4IDlweCAtNHB4IHJnYmEoMCwgMCwgMCwgMC4yKSwwcHggMTRweCAyMXB4IDJweCByZ2JhKDAsIDAsIDAsIDAuMTQpLDBweCA1cHggMjZweCA0cHggcmdiYSgwLCAwLCAwLCAwLjEyKX0ubWF0LWVsZXZhdGlvbi16MTVbX25nY29udGVudC0lQ09NUCVde2JveC1zaGFkb3c6MHB4IDhweCA5cHggLTVweCByZ2JhKDAsIDAsIDAsIDAuMiksMHB4IDE1cHggMjJweCAycHggcmdiYSgwLCAwLCAwLCAwLjE0KSwwcHggNnB4IDI4cHggNXB4IHJnYmEoMCwgMCwgMCwgMC4xMil9Lm1hdC1lbGV2YXRpb24tejE2W19uZ2NvbnRlbnQtJUNPTVAlXXtib3gtc2hhZG93OjBweCA4cHggMTBweCAtNXB4IHJnYmEoMCwgMCwgMCwgMC4yKSwwcHggMTZweCAyNHB4IDJweCByZ2JhKDAsIDAsIDAsIDAuMTQpLDBweCA2cHggMzBweCA1cHggcmdiYSgwLCAwLCAwLCAwLjEyKX0ubWF0LWVsZXZhdGlvbi16MTdbX25nY29udGVudC0lQ09NUCVde2JveC1zaGFkb3c6MHB4IDhweCAxMXB4IC01cHggcmdiYSgwLCAwLCAwLCAwLjIpLDBweCAxN3B4IDI2cHggMnB4IHJnYmEoMCwgMCwgMCwgMC4xNCksMHB4IDZweCAzMnB4IDVweCByZ2JhKDAsIDAsIDAsIDAuMTIpfS5tYXQtZWxldmF0aW9uLXoxOFtfbmdjb250ZW50LSVDT01QJV17Ym94LXNoYWRvdzowcHggOXB4IDExcHggLTVweCByZ2JhKDAsIDAsIDAsIDAuMiksMHB4IDE4cHggMjhweCAycHggcmdiYSgwLCAwLCAwLCAwLjE0KSwwcHggN3B4IDM0cHggNnB4IHJnYmEoMCwgMCwgMCwgMC4xMil9Lm1hdC1lbGV2YXRpb24tejE5W19uZ2NvbnRlbnQtJUNPTVAlXXtib3gtc2hhZG93OjBweCA5cHggMTJweCAtNnB4IHJnYmEoMCwgMCwgMCwgMC4yKSwwcHggMTlweCAyOXB4IDJweCByZ2JhKDAsIDAsIDAsIDAuMTQpLDBweCA3cHggMzZweCA2cHggcmdiYSgwLCAwLCAwLCAwLjEyKX0ubWF0LWVsZXZhdGlvbi16MjBbX25nY29udGVudC0lQ09NUCVde2JveC1zaGFkb3c6MHB4IDEwcHggMTNweCAtNnB4IHJnYmEoMCwgMCwgMCwgMC4yKSwwcHggMjBweCAzMXB4IDNweCByZ2JhKDAsIDAsIDAsIDAuMTQpLDBweCA4cHggMzhweCA3cHggcmdiYSgwLCAwLCAwLCAwLjEyKX0ubWF0LWVsZXZhdGlvbi16MjFbX25nY29udGVudC0lQ09NUCVde2JveC1zaGFkb3c6MHB4IDEwcHggMTNweCAtNnB4IHJnYmEoMCwgMCwgMCwgMC4yKSwwcHggMjFweCAzM3B4IDNweCByZ2JhKDAsIDAsIDAsIDAuMTQpLDBweCA4cHggNDBweCA3cHggcmdiYSgwLCAwLCAwLCAwLjEyKX0ubWF0LWVsZXZhdGlvbi16MjJbX25nY29udGVudC0lQ09NUCVde2JveC1zaGFkb3c6MHB4IDEwcHggMTRweCAtNnB4IHJnYmEoMCwgMCwgMCwgMC4yKSwwcHggMjJweCAzNXB4IDNweCByZ2JhKDAsIDAsIDAsIDAuMTQpLDBweCA4cHggNDJweCA3cHggcmdiYSgwLCAwLCAwLCAwLjEyKX0ubWF0LWVsZXZhdGlvbi16MjNbX25nY29udGVudC0lQ09NUCVde2JveC1zaGFkb3c6MHB4IDExcHggMTRweCAtN3B4IHJnYmEoMCwgMCwgMCwgMC4yKSwwcHggMjNweCAzNnB4IDNweCByZ2JhKDAsIDAsIDAsIDAuMTQpLDBweCA5cHggNDRweCA4cHggcmdiYSgwLCAwLCAwLCAwLjEyKX0ubWF0LWVsZXZhdGlvbi16MjRbX25nY29udGVudC0lQ09NUCVde2JveC1zaGFkb3c6MHB4IDExcHggMTVweCAtN3B4IHJnYmEoMCwgMCwgMCwgMC4yKSwwcHggMjRweCAzOHB4IDNweCByZ2JhKDAsIDAsIDAsIDAuMTQpLDBweCA5cHggNDZweCA4cHggcmdiYSgwLCAwLCAwLCAwLjEyKX0ubWF0LXRoZW1lLWxvYWRlZC1tYXJrZXJbX25nY29udGVudC0lQ09NUCVde2Rpc3BsYXk6bm9uZX0ubWF0LWF1dG9jb21wbGV0ZS1wYW5lbFtfbmdjb250ZW50LSVDT01QJV17YmFja2dyb3VuZDojZmZmO2NvbG9yOiMyMTIxMjF9Lm1hdC1hdXRvY29tcGxldGUtcGFuZWxbX25nY29udGVudC0lQ09NUCVdOm5vdChbY2xhc3MqPW1hdC1lbGV2YXRpb24tel0pe2JveC1zaGFkb3c6MHB4IDJweCA0cHggLTFweCByZ2JhKDAsIDAsIDAsIDAuMiksMHB4IDRweCA1cHggMHB4IHJnYmEoMCwgMCwgMCwgMC4xNCksMHB4IDFweCAxMHB4IDBweCByZ2JhKDAsIDAsIDAsIDAuMTIpfS5tYXQtYXV0b2NvbXBsZXRlLXBhbmVsW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtb3B0aW9uLm1hdC1zZWxlY3RlZFtfbmdjb250ZW50LSVDT01QJV06bm90KC5tYXQtYWN0aXZlKTpub3QoOmhvdmVyKXtiYWNrZ3JvdW5kOiNmZmZ9Lm1hdC1hdXRvY29tcGxldGUtcGFuZWxbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1vcHRpb24ubWF0LXNlbGVjdGVkW19uZ2NvbnRlbnQtJUNPTVAlXTpub3QoLm1hdC1hY3RpdmUpOm5vdCg6aG92ZXIpOm5vdCgubWF0LW9wdGlvbi1kaXNhYmxlZCl7Y29sb3I6IzIxMjEyMX0ubWF0LWJhZGdlLWNvbnRlbnRbX25nY29udGVudC0lQ09NUCVde2NvbG9yOiNmZmY7YmFja2dyb3VuZDojZjU3YzAwfS5jZGstaGlnaC1jb250cmFzdC1hY3RpdmVbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1iYWRnZS1jb250ZW50W19uZ2NvbnRlbnQtJUNPTVAlXXtvdXRsaW5lOnNvbGlkIDFweDtib3JkZXItcmFkaXVzOjB9Lm1hdC1iYWRnZS1hY2NlbnRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1iYWRnZS1jb250ZW50W19uZ2NvbnRlbnQtJUNPTVAlXXtiYWNrZ3JvdW5kOiNmZjk4MDA7Y29sb3I6I2ZmZn0ubWF0LWJhZGdlLXdhcm5bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1iYWRnZS1jb250ZW50W19uZ2NvbnRlbnQtJUNPTVAlXXtjb2xvcjojZmZmO2JhY2tncm91bmQ6I2Y0NDMzNn0ubWF0LWJhZGdlW19uZ2NvbnRlbnQtJUNPTVAlXXtwb3NpdGlvbjpyZWxhdGl2ZX0ubWF0LWJhZGdlLWhpZGRlbltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWJhZGdlLWNvbnRlbnRbX25nY29udGVudC0lQ09NUCVde2Rpc3BsYXk6bm9uZX0ubWF0LWJhZGdlLWRpc2FibGVkW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtYmFkZ2UtY29udGVudFtfbmdjb250ZW50LSVDT01QJV17YmFja2dyb3VuZDojYjliOWI5O2NvbG9yOiM3NTc1NzV9Lm1hdC1iYWRnZS1jb250ZW50W19uZ2NvbnRlbnQtJUNPTVAlXXtwb3NpdGlvbjphYnNvbHV0ZTt0ZXh0LWFsaWduOmNlbnRlcjtkaXNwbGF5OmlubGluZS1ibG9jaztib3JkZXItcmFkaXVzOjUwJTt0cmFuc2l0aW9uOnRyYW5zZm9ybSAyMDBtcyBlYXNlLWluLW91dDt0cmFuc2Zvcm06c2NhbGUoMC42KTtvdmVyZmxvdzpoaWRkZW47d2hpdGUtc3BhY2U6bm93cmFwO3RleHQtb3ZlcmZsb3c6ZWxsaXBzaXM7cG9pbnRlci1ldmVudHM6bm9uZX0ubmctYW5pbWF0ZS1kaXNhYmxlZFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWJhZGdlLWNvbnRlbnRbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWJhZGdlLWNvbnRlbnQuX21hdC1hbmltYXRpb24tbm9vcGFibGVbX25nY29udGVudC0lQ09NUCVde3RyYW5zaXRpb246bm9uZX0ubWF0LWJhZGdlLWNvbnRlbnQubWF0LWJhZGdlLWFjdGl2ZVtfbmdjb250ZW50LSVDT01QJV17dHJhbnNmb3JtOm5vbmV9Lm1hdC1iYWRnZS1zbWFsbFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWJhZGdlLWNvbnRlbnRbX25nY29udGVudC0lQ09NUCVde3dpZHRoOjE2cHg7aGVpZ2h0OjE2cHg7bGluZS1oZWlnaHQ6MTZweH0ubWF0LWJhZGdlLXNtYWxsLm1hdC1iYWRnZS1hYm92ZVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWJhZGdlLWNvbnRlbnRbX25nY29udGVudC0lQ09NUCVde3RvcDotOHB4fS5tYXQtYmFkZ2Utc21hbGwubWF0LWJhZGdlLWJlbG93W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtYmFkZ2UtY29udGVudFtfbmdjb250ZW50LSVDT01QJV17Ym90dG9tOi04cHh9Lm1hdC1iYWRnZS1zbWFsbC5tYXQtYmFkZ2UtYmVmb3JlW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtYmFkZ2UtY29udGVudFtfbmdjb250ZW50LSVDT01QJV17bGVmdDotMTZweH1bZGlyPXJ0bF1bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1iYWRnZS1zbWFsbC5tYXQtYmFkZ2UtYmVmb3JlW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtYmFkZ2UtY29udGVudFtfbmdjb250ZW50LSVDT01QJV17bGVmdDphdXRvO3JpZ2h0Oi0xNnB4fS5tYXQtYmFkZ2Utc21hbGwubWF0LWJhZGdlLWFmdGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtYmFkZ2UtY29udGVudFtfbmdjb250ZW50LSVDT01QJV17cmlnaHQ6LTE2cHh9W2Rpcj1ydGxdW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtYmFkZ2Utc21hbGwubWF0LWJhZGdlLWFmdGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtYmFkZ2UtY29udGVudFtfbmdjb250ZW50LSVDT01QJV17cmlnaHQ6YXV0bztsZWZ0Oi0xNnB4fS5tYXQtYmFkZ2Utc21hbGwubWF0LWJhZGdlLW92ZXJsYXAubWF0LWJhZGdlLWJlZm9yZVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWJhZGdlLWNvbnRlbnRbX25nY29udGVudC0lQ09NUCVde2xlZnQ6LThweH1bZGlyPXJ0bF1bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1iYWRnZS1zbWFsbC5tYXQtYmFkZ2Utb3ZlcmxhcC5tYXQtYmFkZ2UtYmVmb3JlW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtYmFkZ2UtY29udGVudFtfbmdjb250ZW50LSVDT01QJV17bGVmdDphdXRvO3JpZ2h0Oi04cHh9Lm1hdC1iYWRnZS1zbWFsbC5tYXQtYmFkZ2Utb3ZlcmxhcC5tYXQtYmFkZ2UtYWZ0ZXJbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1iYWRnZS1jb250ZW50W19uZ2NvbnRlbnQtJUNPTVAlXXtyaWdodDotOHB4fVtkaXI9cnRsXVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWJhZGdlLXNtYWxsLm1hdC1iYWRnZS1vdmVybGFwLm1hdC1iYWRnZS1hZnRlcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWJhZGdlLWNvbnRlbnRbX25nY29udGVudC0lQ09NUCVde3JpZ2h0OmF1dG87bGVmdDotOHB4fS5tYXQtYmFkZ2UtbWVkaXVtW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtYmFkZ2UtY29udGVudFtfbmdjb250ZW50LSVDT01QJV17d2lkdGg6MjJweDtoZWlnaHQ6MjJweDtsaW5lLWhlaWdodDoyMnB4fS5tYXQtYmFkZ2UtbWVkaXVtLm1hdC1iYWRnZS1hYm92ZVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWJhZGdlLWNvbnRlbnRbX25nY29udGVudC0lQ09NUCVde3RvcDotMTFweH0ubWF0LWJhZGdlLW1lZGl1bS5tYXQtYmFkZ2UtYmVsb3dbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1iYWRnZS1jb250ZW50W19uZ2NvbnRlbnQtJUNPTVAlXXtib3R0b206LTExcHh9Lm1hdC1iYWRnZS1tZWRpdW0ubWF0LWJhZGdlLWJlZm9yZVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWJhZGdlLWNvbnRlbnRbX25nY29udGVudC0lQ09NUCVde2xlZnQ6LTIycHh9W2Rpcj1ydGxdW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtYmFkZ2UtbWVkaXVtLm1hdC1iYWRnZS1iZWZvcmVbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1iYWRnZS1jb250ZW50W19uZ2NvbnRlbnQtJUNPTVAlXXtsZWZ0OmF1dG87cmlnaHQ6LTIycHh9Lm1hdC1iYWRnZS1tZWRpdW0ubWF0LWJhZGdlLWFmdGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtYmFkZ2UtY29udGVudFtfbmdjb250ZW50LSVDT01QJV17cmlnaHQ6LTIycHh9W2Rpcj1ydGxdW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtYmFkZ2UtbWVkaXVtLm1hdC1iYWRnZS1hZnRlcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWJhZGdlLWNvbnRlbnRbX25nY29udGVudC0lQ09NUCVde3JpZ2h0OmF1dG87bGVmdDotMjJweH0ubWF0LWJhZGdlLW1lZGl1bS5tYXQtYmFkZ2Utb3ZlcmxhcC5tYXQtYmFkZ2UtYmVmb3JlW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtYmFkZ2UtY29udGVudFtfbmdjb250ZW50LSVDT01QJV17bGVmdDotMTFweH1bZGlyPXJ0bF1bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1iYWRnZS1tZWRpdW0ubWF0LWJhZGdlLW92ZXJsYXAubWF0LWJhZGdlLWJlZm9yZVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWJhZGdlLWNvbnRlbnRbX25nY29udGVudC0lQ09NUCVde2xlZnQ6YXV0bztyaWdodDotMTFweH0ubWF0LWJhZGdlLW1lZGl1bS5tYXQtYmFkZ2Utb3ZlcmxhcC5tYXQtYmFkZ2UtYWZ0ZXJbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1iYWRnZS1jb250ZW50W19uZ2NvbnRlbnQtJUNPTVAlXXtyaWdodDotMTFweH1bZGlyPXJ0bF1bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1iYWRnZS1tZWRpdW0ubWF0LWJhZGdlLW92ZXJsYXAubWF0LWJhZGdlLWFmdGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtYmFkZ2UtY29udGVudFtfbmdjb250ZW50LSVDT01QJV17cmlnaHQ6YXV0bztsZWZ0Oi0xMXB4fS5tYXQtYmFkZ2UtbGFyZ2VbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1iYWRnZS1jb250ZW50W19uZ2NvbnRlbnQtJUNPTVAlXXt3aWR0aDoyOHB4O2hlaWdodDoyOHB4O2xpbmUtaGVpZ2h0OjI4cHh9Lm1hdC1iYWRnZS1sYXJnZS5tYXQtYmFkZ2UtYWJvdmVbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1iYWRnZS1jb250ZW50W19uZ2NvbnRlbnQtJUNPTVAlXXt0b3A6LTE0cHh9Lm1hdC1iYWRnZS1sYXJnZS5tYXQtYmFkZ2UtYmVsb3dbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1iYWRnZS1jb250ZW50W19uZ2NvbnRlbnQtJUNPTVAlXXtib3R0b206LTE0cHh9Lm1hdC1iYWRnZS1sYXJnZS5tYXQtYmFkZ2UtYmVmb3JlW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtYmFkZ2UtY29udGVudFtfbmdjb250ZW50LSVDT01QJV17bGVmdDotMjhweH1bZGlyPXJ0bF1bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1iYWRnZS1sYXJnZS5tYXQtYmFkZ2UtYmVmb3JlW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtYmFkZ2UtY29udGVudFtfbmdjb250ZW50LSVDT01QJV17bGVmdDphdXRvO3JpZ2h0Oi0yOHB4fS5tYXQtYmFkZ2UtbGFyZ2UubWF0LWJhZGdlLWFmdGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtYmFkZ2UtY29udGVudFtfbmdjb250ZW50LSVDT01QJV17cmlnaHQ6LTI4cHh9W2Rpcj1ydGxdW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtYmFkZ2UtbGFyZ2UubWF0LWJhZGdlLWFmdGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtYmFkZ2UtY29udGVudFtfbmdjb250ZW50LSVDT01QJV17cmlnaHQ6YXV0bztsZWZ0Oi0yOHB4fS5tYXQtYmFkZ2UtbGFyZ2UubWF0LWJhZGdlLW92ZXJsYXAubWF0LWJhZGdlLWJlZm9yZVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWJhZGdlLWNvbnRlbnRbX25nY29udGVudC0lQ09NUCVde2xlZnQ6LTE0cHh9W2Rpcj1ydGxdW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtYmFkZ2UtbGFyZ2UubWF0LWJhZGdlLW92ZXJsYXAubWF0LWJhZGdlLWJlZm9yZVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWJhZGdlLWNvbnRlbnRbX25nY29udGVudC0lQ09NUCVde2xlZnQ6YXV0bztyaWdodDotMTRweH0ubWF0LWJhZGdlLWxhcmdlLm1hdC1iYWRnZS1vdmVybGFwLm1hdC1iYWRnZS1hZnRlcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWJhZGdlLWNvbnRlbnRbX25nY29udGVudC0lQ09NUCVde3JpZ2h0Oi0xNHB4fVtkaXI9cnRsXVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWJhZGdlLWxhcmdlLm1hdC1iYWRnZS1vdmVybGFwLm1hdC1iYWRnZS1hZnRlcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWJhZGdlLWNvbnRlbnRbX25nY29udGVudC0lQ09NUCVde3JpZ2h0OmF1dG87bGVmdDotMTRweH0ubWF0LWJvdHRvbS1zaGVldC1jb250YWluZXJbX25nY29udGVudC0lQ09NUCVde2JveC1zaGFkb3c6MHB4IDhweCAxMHB4IC01cHggcmdiYSgwLCAwLCAwLCAwLjIpLDBweCAxNnB4IDI0cHggMnB4IHJnYmEoMCwgMCwgMCwgMC4xNCksMHB4IDZweCAzMHB4IDVweCByZ2JhKDAsIDAsIDAsIDAuMTIpO2JhY2tncm91bmQ6I2ZmZjtjb2xvcjojMjEyMTIxfS5tYXQtYnV0dG9uW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1pY29uLWJ1dHRvbltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtc3Ryb2tlZC1idXR0b25bX25nY29udGVudC0lQ09NUCVde2NvbG9yOmluaGVyaXQ7YmFja2dyb3VuZDp0cmFuc3BhcmVudH0ubWF0LWJ1dHRvbi5tYXQtcHJpbWFyeVtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtaWNvbi1idXR0b24ubWF0LXByaW1hcnlbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXN0cm9rZWQtYnV0dG9uLm1hdC1wcmltYXJ5W19uZ2NvbnRlbnQtJUNPTVAlXXtjb2xvcjojZjU3YzAwfS5tYXQtYnV0dG9uLm1hdC1hY2NlbnRbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWljb24tYnV0dG9uLm1hdC1hY2NlbnRbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXN0cm9rZWQtYnV0dG9uLm1hdC1hY2NlbnRbX25nY29udGVudC0lQ09NUCVde2NvbG9yOiNmZjk4MDB9Lm1hdC1idXR0b24ubWF0LXdhcm5bX25nY29udGVudC0lQ09NUCVdLCAubWF0LWljb24tYnV0dG9uLm1hdC13YXJuW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1zdHJva2VkLWJ1dHRvbi5tYXQtd2Fybltfbmdjb250ZW50LSVDT01QJV17Y29sb3I6I2Y0NDMzNn0ubWF0LWJ1dHRvbi5tYXQtcHJpbWFyeS5tYXQtYnV0dG9uLWRpc2FibGVkW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1idXR0b24ubWF0LWFjY2VudC5tYXQtYnV0dG9uLWRpc2FibGVkW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1idXR0b24ubWF0LXdhcm4ubWF0LWJ1dHRvbi1kaXNhYmxlZFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtYnV0dG9uLm1hdC1idXR0b24tZGlzYWJsZWQubWF0LWJ1dHRvbi1kaXNhYmxlZFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtaWNvbi1idXR0b24ubWF0LXByaW1hcnkubWF0LWJ1dHRvbi1kaXNhYmxlZFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtaWNvbi1idXR0b24ubWF0LWFjY2VudC5tYXQtYnV0dG9uLWRpc2FibGVkW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1pY29uLWJ1dHRvbi5tYXQtd2Fybi5tYXQtYnV0dG9uLWRpc2FibGVkW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1pY29uLWJ1dHRvbi5tYXQtYnV0dG9uLWRpc2FibGVkLm1hdC1idXR0b24tZGlzYWJsZWRbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXN0cm9rZWQtYnV0dG9uLm1hdC1wcmltYXJ5Lm1hdC1idXR0b24tZGlzYWJsZWRbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXN0cm9rZWQtYnV0dG9uLm1hdC1hY2NlbnQubWF0LWJ1dHRvbi1kaXNhYmxlZFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtc3Ryb2tlZC1idXR0b24ubWF0LXdhcm4ubWF0LWJ1dHRvbi1kaXNhYmxlZFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtc3Ryb2tlZC1idXR0b24ubWF0LWJ1dHRvbi1kaXNhYmxlZC5tYXQtYnV0dG9uLWRpc2FibGVkW19uZ2NvbnRlbnQtJUNPTVAlXXtjb2xvcjpyZ2JhKDAsMCwwLC4yNil9Lm1hdC1idXR0b24ubWF0LXByaW1hcnlbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1idXR0b24tZm9jdXMtb3ZlcmxheVtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtaWNvbi1idXR0b24ubWF0LXByaW1hcnlbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1idXR0b24tZm9jdXMtb3ZlcmxheVtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtc3Ryb2tlZC1idXR0b24ubWF0LXByaW1hcnlbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1idXR0b24tZm9jdXMtb3ZlcmxheVtfbmdjb250ZW50LSVDT01QJV17YmFja2dyb3VuZC1jb2xvcjojZjU3YzAwfS5tYXQtYnV0dG9uLm1hdC1hY2NlbnRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1idXR0b24tZm9jdXMtb3ZlcmxheVtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtaWNvbi1idXR0b24ubWF0LWFjY2VudFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWJ1dHRvbi1mb2N1cy1vdmVybGF5W19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1zdHJva2VkLWJ1dHRvbi5tYXQtYWNjZW50W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtYnV0dG9uLWZvY3VzLW92ZXJsYXlbX25nY29udGVudC0lQ09NUCVde2JhY2tncm91bmQtY29sb3I6I2ZmOTgwMH0ubWF0LWJ1dHRvbi5tYXQtd2Fybltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWJ1dHRvbi1mb2N1cy1vdmVybGF5W19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1pY29uLWJ1dHRvbi5tYXQtd2Fybltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWJ1dHRvbi1mb2N1cy1vdmVybGF5W19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1zdHJva2VkLWJ1dHRvbi5tYXQtd2Fybltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWJ1dHRvbi1mb2N1cy1vdmVybGF5W19uZ2NvbnRlbnQtJUNPTVAlXXtiYWNrZ3JvdW5kLWNvbG9yOiNmNDQzMzZ9Lm1hdC1idXR0b24ubWF0LWJ1dHRvbi1kaXNhYmxlZFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWJ1dHRvbi1mb2N1cy1vdmVybGF5W19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1pY29uLWJ1dHRvbi5tYXQtYnV0dG9uLWRpc2FibGVkW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtYnV0dG9uLWZvY3VzLW92ZXJsYXlbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXN0cm9rZWQtYnV0dG9uLm1hdC1idXR0b24tZGlzYWJsZWRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1idXR0b24tZm9jdXMtb3ZlcmxheVtfbmdjb250ZW50LSVDT01QJV17YmFja2dyb3VuZC1jb2xvcjp0cmFuc3BhcmVudH0ubWF0LWJ1dHRvbltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXJpcHBsZS1lbGVtZW50W19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1pY29uLWJ1dHRvbltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXJpcHBsZS1lbGVtZW50W19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1zdHJva2VkLWJ1dHRvbltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXJpcHBsZS1lbGVtZW50W19uZ2NvbnRlbnQtJUNPTVAlXXtvcGFjaXR5Oi4xO2JhY2tncm91bmQtY29sb3I6Y3VycmVudENvbG9yfS5tYXQtYnV0dG9uLWZvY3VzLW92ZXJsYXlbX25nY29udGVudC0lQ09NUCVde2JhY2tncm91bmQ6IzAwMH0ubWF0LXN0cm9rZWQtYnV0dG9uW19uZ2NvbnRlbnQtJUNPTVAlXTpub3QoLm1hdC1idXR0b24tZGlzYWJsZWQpe2JvcmRlci1jb2xvcjpyZ2JhKDAsMCwwLC4xMil9Lm1hdC1mbGF0LWJ1dHRvbltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtcmFpc2VkLWJ1dHRvbltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtZmFiW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1taW5pLWZhYltfbmdjb250ZW50LSVDT01QJV17Y29sb3I6IzIxMjEyMTtiYWNrZ3JvdW5kLWNvbG9yOiNmZmZ9Lm1hdC1mbGF0LWJ1dHRvbi5tYXQtcHJpbWFyeVtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtcmFpc2VkLWJ1dHRvbi5tYXQtcHJpbWFyeVtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtZmFiLm1hdC1wcmltYXJ5W19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1taW5pLWZhYi5tYXQtcHJpbWFyeVtfbmdjb250ZW50LSVDT01QJV17Y29sb3I6I2ZmZn0ubWF0LWZsYXQtYnV0dG9uLm1hdC1hY2NlbnRbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXJhaXNlZC1idXR0b24ubWF0LWFjY2VudFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtZmFiLm1hdC1hY2NlbnRbX25nY29udGVudC0lQ09NUCVdLCAubWF0LW1pbmktZmFiLm1hdC1hY2NlbnRbX25nY29udGVudC0lQ09NUCVde2NvbG9yOiNmZmZ9Lm1hdC1mbGF0LWJ1dHRvbi5tYXQtd2Fybltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtcmFpc2VkLWJ1dHRvbi5tYXQtd2Fybltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtZmFiLm1hdC13YXJuW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1taW5pLWZhYi5tYXQtd2Fybltfbmdjb250ZW50LSVDT01QJV17Y29sb3I6I2ZmZn0ubWF0LWZsYXQtYnV0dG9uLm1hdC1wcmltYXJ5Lm1hdC1idXR0b24tZGlzYWJsZWRbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWZsYXQtYnV0dG9uLm1hdC1hY2NlbnQubWF0LWJ1dHRvbi1kaXNhYmxlZFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtZmxhdC1idXR0b24ubWF0LXdhcm4ubWF0LWJ1dHRvbi1kaXNhYmxlZFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtZmxhdC1idXR0b24ubWF0LWJ1dHRvbi1kaXNhYmxlZC5tYXQtYnV0dG9uLWRpc2FibGVkW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1yYWlzZWQtYnV0dG9uLm1hdC1wcmltYXJ5Lm1hdC1idXR0b24tZGlzYWJsZWRbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXJhaXNlZC1idXR0b24ubWF0LWFjY2VudC5tYXQtYnV0dG9uLWRpc2FibGVkW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1yYWlzZWQtYnV0dG9uLm1hdC13YXJuLm1hdC1idXR0b24tZGlzYWJsZWRbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXJhaXNlZC1idXR0b24ubWF0LWJ1dHRvbi1kaXNhYmxlZC5tYXQtYnV0dG9uLWRpc2FibGVkW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1mYWIubWF0LXByaW1hcnkubWF0LWJ1dHRvbi1kaXNhYmxlZFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtZmFiLm1hdC1hY2NlbnQubWF0LWJ1dHRvbi1kaXNhYmxlZFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtZmFiLm1hdC13YXJuLm1hdC1idXR0b24tZGlzYWJsZWRbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWZhYi5tYXQtYnV0dG9uLWRpc2FibGVkLm1hdC1idXR0b24tZGlzYWJsZWRbX25nY29udGVudC0lQ09NUCVdLCAubWF0LW1pbmktZmFiLm1hdC1wcmltYXJ5Lm1hdC1idXR0b24tZGlzYWJsZWRbX25nY29udGVudC0lQ09NUCVdLCAubWF0LW1pbmktZmFiLm1hdC1hY2NlbnQubWF0LWJ1dHRvbi1kaXNhYmxlZFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtbWluaS1mYWIubWF0LXdhcm4ubWF0LWJ1dHRvbi1kaXNhYmxlZFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtbWluaS1mYWIubWF0LWJ1dHRvbi1kaXNhYmxlZC5tYXQtYnV0dG9uLWRpc2FibGVkW19uZ2NvbnRlbnQtJUNPTVAlXXtjb2xvcjpyZ2JhKDAsMCwwLC4yNil9Lm1hdC1mbGF0LWJ1dHRvbi5tYXQtcHJpbWFyeVtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtcmFpc2VkLWJ1dHRvbi5tYXQtcHJpbWFyeVtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtZmFiLm1hdC1wcmltYXJ5W19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1taW5pLWZhYi5tYXQtcHJpbWFyeVtfbmdjb250ZW50LSVDT01QJV17YmFja2dyb3VuZC1jb2xvcjojZjU3YzAwfS5tYXQtZmxhdC1idXR0b24ubWF0LWFjY2VudFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtcmFpc2VkLWJ1dHRvbi5tYXQtYWNjZW50W19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1mYWIubWF0LWFjY2VudFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtbWluaS1mYWIubWF0LWFjY2VudFtfbmdjb250ZW50LSVDT01QJV17YmFja2dyb3VuZC1jb2xvcjojZmY5ODAwfS5tYXQtZmxhdC1idXR0b24ubWF0LXdhcm5bX25nY29udGVudC0lQ09NUCVdLCAubWF0LXJhaXNlZC1idXR0b24ubWF0LXdhcm5bX25nY29udGVudC0lQ09NUCVdLCAubWF0LWZhYi5tYXQtd2Fybltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtbWluaS1mYWIubWF0LXdhcm5bX25nY29udGVudC0lQ09NUCVde2JhY2tncm91bmQtY29sb3I6I2Y0NDMzNn0ubWF0LWZsYXQtYnV0dG9uLm1hdC1wcmltYXJ5Lm1hdC1idXR0b24tZGlzYWJsZWRbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWZsYXQtYnV0dG9uLm1hdC1hY2NlbnQubWF0LWJ1dHRvbi1kaXNhYmxlZFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtZmxhdC1idXR0b24ubWF0LXdhcm4ubWF0LWJ1dHRvbi1kaXNhYmxlZFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtZmxhdC1idXR0b24ubWF0LWJ1dHRvbi1kaXNhYmxlZC5tYXQtYnV0dG9uLWRpc2FibGVkW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1yYWlzZWQtYnV0dG9uLm1hdC1wcmltYXJ5Lm1hdC1idXR0b24tZGlzYWJsZWRbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXJhaXNlZC1idXR0b24ubWF0LWFjY2VudC5tYXQtYnV0dG9uLWRpc2FibGVkW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1yYWlzZWQtYnV0dG9uLm1hdC13YXJuLm1hdC1idXR0b24tZGlzYWJsZWRbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXJhaXNlZC1idXR0b24ubWF0LWJ1dHRvbi1kaXNhYmxlZC5tYXQtYnV0dG9uLWRpc2FibGVkW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1mYWIubWF0LXByaW1hcnkubWF0LWJ1dHRvbi1kaXNhYmxlZFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtZmFiLm1hdC1hY2NlbnQubWF0LWJ1dHRvbi1kaXNhYmxlZFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtZmFiLm1hdC13YXJuLm1hdC1idXR0b24tZGlzYWJsZWRbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWZhYi5tYXQtYnV0dG9uLWRpc2FibGVkLm1hdC1idXR0b24tZGlzYWJsZWRbX25nY29udGVudC0lQ09NUCVdLCAubWF0LW1pbmktZmFiLm1hdC1wcmltYXJ5Lm1hdC1idXR0b24tZGlzYWJsZWRbX25nY29udGVudC0lQ09NUCVdLCAubWF0LW1pbmktZmFiLm1hdC1hY2NlbnQubWF0LWJ1dHRvbi1kaXNhYmxlZFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtbWluaS1mYWIubWF0LXdhcm4ubWF0LWJ1dHRvbi1kaXNhYmxlZFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtbWluaS1mYWIubWF0LWJ1dHRvbi1kaXNhYmxlZC5tYXQtYnV0dG9uLWRpc2FibGVkW19uZ2NvbnRlbnQtJUNPTVAlXXtiYWNrZ3JvdW5kLWNvbG9yOnJnYmEoMCwwLDAsLjEyKX0ubWF0LWZsYXQtYnV0dG9uLm1hdC1wcmltYXJ5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtcmlwcGxlLWVsZW1lbnRbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXJhaXNlZC1idXR0b24ubWF0LXByaW1hcnlbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1yaXBwbGUtZWxlbWVudFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtZmFiLm1hdC1wcmltYXJ5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtcmlwcGxlLWVsZW1lbnRbX25nY29udGVudC0lQ09NUCVdLCAubWF0LW1pbmktZmFiLm1hdC1wcmltYXJ5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtcmlwcGxlLWVsZW1lbnRbX25nY29udGVudC0lQ09NUCVde2JhY2tncm91bmQtY29sb3I6cmdiYSgyNTUsMjU1LDI1NSwuMSl9Lm1hdC1mbGF0LWJ1dHRvbi5tYXQtYWNjZW50W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtcmlwcGxlLWVsZW1lbnRbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXJhaXNlZC1idXR0b24ubWF0LWFjY2VudFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXJpcHBsZS1lbGVtZW50W19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1mYWIubWF0LWFjY2VudFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXJpcHBsZS1lbGVtZW50W19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1taW5pLWZhYi5tYXQtYWNjZW50W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtcmlwcGxlLWVsZW1lbnRbX25nY29udGVudC0lQ09NUCVde2JhY2tncm91bmQtY29sb3I6cmdiYSgyNTUsMjU1LDI1NSwuMSl9Lm1hdC1mbGF0LWJ1dHRvbi5tYXQtd2Fybltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXJpcHBsZS1lbGVtZW50W19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1yYWlzZWQtYnV0dG9uLm1hdC13YXJuW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtcmlwcGxlLWVsZW1lbnRbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWZhYi5tYXQtd2Fybltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXJpcHBsZS1lbGVtZW50W19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1taW5pLWZhYi5tYXQtd2Fybltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXJpcHBsZS1lbGVtZW50W19uZ2NvbnRlbnQtJUNPTVAlXXtiYWNrZ3JvdW5kLWNvbG9yOnJnYmEoMjU1LDI1NSwyNTUsLjEpfS5tYXQtc3Ryb2tlZC1idXR0b25bX25nY29udGVudC0lQ09NUCVdOm5vdChbY2xhc3MqPW1hdC1lbGV2YXRpb24tel0pLCAubWF0LWZsYXQtYnV0dG9uW19uZ2NvbnRlbnQtJUNPTVAlXTpub3QoW2NsYXNzKj1tYXQtZWxldmF0aW9uLXpdKXtib3gtc2hhZG93OjBweCAwcHggMHB4IDBweCByZ2JhKDAsIDAsIDAsIDAuMiksMHB4IDBweCAwcHggMHB4IHJnYmEoMCwgMCwgMCwgMC4xNCksMHB4IDBweCAwcHggMHB4IHJnYmEoMCwgMCwgMCwgMC4xMil9Lm1hdC1yYWlzZWQtYnV0dG9uW19uZ2NvbnRlbnQtJUNPTVAlXTpub3QoW2NsYXNzKj1tYXQtZWxldmF0aW9uLXpdKXtib3gtc2hhZG93OjBweCAzcHggMXB4IC0ycHggcmdiYSgwLCAwLCAwLCAwLjIpLDBweCAycHggMnB4IDBweCByZ2JhKDAsIDAsIDAsIDAuMTQpLDBweCAxcHggNXB4IDBweCByZ2JhKDAsIDAsIDAsIDAuMTIpfS5tYXQtcmFpc2VkLWJ1dHRvbltfbmdjb250ZW50LSVDT01QJV06bm90KC5tYXQtYnV0dG9uLWRpc2FibGVkKTphY3RpdmU6bm90KFtjbGFzcyo9bWF0LWVsZXZhdGlvbi16XSl7Ym94LXNoYWRvdzowcHggNXB4IDVweCAtM3B4IHJnYmEoMCwgMCwgMCwgMC4yKSwwcHggOHB4IDEwcHggMXB4IHJnYmEoMCwgMCwgMCwgMC4xNCksMHB4IDNweCAxNHB4IDJweCByZ2JhKDAsIDAsIDAsIDAuMTIpfS5tYXQtcmFpc2VkLWJ1dHRvbi5tYXQtYnV0dG9uLWRpc2FibGVkW19uZ2NvbnRlbnQtJUNPTVAlXTpub3QoW2NsYXNzKj1tYXQtZWxldmF0aW9uLXpdKXtib3gtc2hhZG93OjBweCAwcHggMHB4IDBweCByZ2JhKDAsIDAsIDAsIDAuMiksMHB4IDBweCAwcHggMHB4IHJnYmEoMCwgMCwgMCwgMC4xNCksMHB4IDBweCAwcHggMHB4IHJnYmEoMCwgMCwgMCwgMC4xMil9Lm1hdC1mYWJbX25nY29udGVudC0lQ09NUCVdOm5vdChbY2xhc3MqPW1hdC1lbGV2YXRpb24tel0pLCAubWF0LW1pbmktZmFiW19uZ2NvbnRlbnQtJUNPTVAlXTpub3QoW2NsYXNzKj1tYXQtZWxldmF0aW9uLXpdKXtib3gtc2hhZG93OjBweCAzcHggNXB4IC0xcHggcmdiYSgwLCAwLCAwLCAwLjIpLDBweCA2cHggMTBweCAwcHggcmdiYSgwLCAwLCAwLCAwLjE0KSwwcHggMXB4IDE4cHggMHB4IHJnYmEoMCwgMCwgMCwgMC4xMil9Lm1hdC1mYWJbX25nY29udGVudC0lQ09NUCVdOm5vdCgubWF0LWJ1dHRvbi1kaXNhYmxlZCk6YWN0aXZlOm5vdChbY2xhc3MqPW1hdC1lbGV2YXRpb24tel0pLCAubWF0LW1pbmktZmFiW19uZ2NvbnRlbnQtJUNPTVAlXTpub3QoLm1hdC1idXR0b24tZGlzYWJsZWQpOmFjdGl2ZTpub3QoW2NsYXNzKj1tYXQtZWxldmF0aW9uLXpdKXtib3gtc2hhZG93OjBweCA3cHggOHB4IC00cHggcmdiYSgwLCAwLCAwLCAwLjIpLDBweCAxMnB4IDE3cHggMnB4IHJnYmEoMCwgMCwgMCwgMC4xNCksMHB4IDVweCAyMnB4IDRweCByZ2JhKDAsIDAsIDAsIDAuMTIpfS5tYXQtZmFiLm1hdC1idXR0b24tZGlzYWJsZWRbX25nY29udGVudC0lQ09NUCVdOm5vdChbY2xhc3MqPW1hdC1lbGV2YXRpb24tel0pLCAubWF0LW1pbmktZmFiLm1hdC1idXR0b24tZGlzYWJsZWRbX25nY29udGVudC0lQ09NUCVdOm5vdChbY2xhc3MqPW1hdC1lbGV2YXRpb24tel0pe2JveC1zaGFkb3c6MHB4IDBweCAwcHggMHB4IHJnYmEoMCwgMCwgMCwgMC4yKSwwcHggMHB4IDBweCAwcHggcmdiYSgwLCAwLCAwLCAwLjE0KSwwcHggMHB4IDBweCAwcHggcmdiYSgwLCAwLCAwLCAwLjEyKX0ubWF0LWJ1dHRvbi10b2dnbGUtc3RhbmRhbG9uZVtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtYnV0dG9uLXRvZ2dsZS1ncm91cFtfbmdjb250ZW50LSVDT01QJV17Ym94LXNoYWRvdzowcHggM3B4IDFweCAtMnB4IHJnYmEoMCwgMCwgMCwgMC4yKSwwcHggMnB4IDJweCAwcHggcmdiYSgwLCAwLCAwLCAwLjE0KSwwcHggMXB4IDVweCAwcHggcmdiYSgwLCAwLCAwLCAwLjEyKX0ubWF0LWJ1dHRvbi10b2dnbGUtc3RhbmRhbG9uZS5tYXQtYnV0dG9uLXRvZ2dsZS1hcHBlYXJhbmNlLXN0YW5kYXJkW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1idXR0b24tdG9nZ2xlLWdyb3VwLWFwcGVhcmFuY2Utc3RhbmRhcmRbX25nY29udGVudC0lQ09NUCVde2JveC1zaGFkb3c6bm9uZX0ubWF0LWJ1dHRvbi10b2dnbGVbX25nY29udGVudC0lQ09NUCVde2NvbG9yOnJnYmEoMCwwLDAsLjM4KX0ubWF0LWJ1dHRvbi10b2dnbGVbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1idXR0b24tdG9nZ2xlLWZvY3VzLW92ZXJsYXlbX25nY29udGVudC0lQ09NUCVde2JhY2tncm91bmQtY29sb3I6cmdiYSgwLDAsMCwuMTIpfS5tYXQtYnV0dG9uLXRvZ2dsZS1hcHBlYXJhbmNlLXN0YW5kYXJkW19uZ2NvbnRlbnQtJUNPTVAlXXtjb2xvcjojMjEyMTIxO2JhY2tncm91bmQ6I2ZmZn0ubWF0LWJ1dHRvbi10b2dnbGUtYXBwZWFyYW5jZS1zdGFuZGFyZFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWJ1dHRvbi10b2dnbGUtZm9jdXMtb3ZlcmxheVtfbmdjb250ZW50LSVDT01QJV17YmFja2dyb3VuZC1jb2xvcjojMDAwfS5tYXQtYnV0dG9uLXRvZ2dsZS1ncm91cC1hcHBlYXJhbmNlLXN0YW5kYXJkW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtYnV0dG9uLXRvZ2dsZVtfbmdjb250ZW50LSVDT01QJV0gKyAubWF0LWJ1dHRvbi10b2dnbGVbX25nY29udGVudC0lQ09NUCVde2JvcmRlci1sZWZ0OnNvbGlkIDFweCByZ2JhKDAsMCwwLC4xMil9W2Rpcj1ydGxdW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtYnV0dG9uLXRvZ2dsZS1ncm91cC1hcHBlYXJhbmNlLXN0YW5kYXJkW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtYnV0dG9uLXRvZ2dsZVtfbmdjb250ZW50LSVDT01QJV0gKyAubWF0LWJ1dHRvbi10b2dnbGVbX25nY29udGVudC0lQ09NUCVde2JvcmRlci1sZWZ0Om5vbmU7Ym9yZGVyLXJpZ2h0OnNvbGlkIDFweCByZ2JhKDAsMCwwLC4xMil9Lm1hdC1idXR0b24tdG9nZ2xlLWdyb3VwLWFwcGVhcmFuY2Utc3RhbmRhcmQubWF0LWJ1dHRvbi10b2dnbGUtdmVydGljYWxbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1idXR0b24tdG9nZ2xlW19uZ2NvbnRlbnQtJUNPTVAlXSArIC5tYXQtYnV0dG9uLXRvZ2dsZVtfbmdjb250ZW50LSVDT01QJV17Ym9yZGVyLWxlZnQ6bm9uZTtib3JkZXItcmlnaHQ6bm9uZTtib3JkZXItdG9wOnNvbGlkIDFweCByZ2JhKDAsMCwwLC4xMil9Lm1hdC1idXR0b24tdG9nZ2xlLWNoZWNrZWRbX25nY29udGVudC0lQ09NUCVde2JhY2tncm91bmQtY29sb3I6I2UwZTBlMDtjb2xvcjojNjE2MTYxfS5tYXQtYnV0dG9uLXRvZ2dsZS1jaGVja2VkLm1hdC1idXR0b24tdG9nZ2xlLWFwcGVhcmFuY2Utc3RhbmRhcmRbX25nY29udGVudC0lQ09NUCVde2NvbG9yOiMyMTIxMjF9Lm1hdC1idXR0b24tdG9nZ2xlLWRpc2FibGVkW19uZ2NvbnRlbnQtJUNPTVAlXXtjb2xvcjpyZ2JhKDAsMCwwLC4yNik7YmFja2dyb3VuZC1jb2xvcjojZWVlfS5tYXQtYnV0dG9uLXRvZ2dsZS1kaXNhYmxlZC5tYXQtYnV0dG9uLXRvZ2dsZS1hcHBlYXJhbmNlLXN0YW5kYXJkW19uZ2NvbnRlbnQtJUNPTVAlXXtiYWNrZ3JvdW5kOiNmZmZ9Lm1hdC1idXR0b24tdG9nZ2xlLWRpc2FibGVkLm1hdC1idXR0b24tdG9nZ2xlLWNoZWNrZWRbX25nY29udGVudC0lQ09NUCVde2JhY2tncm91bmQtY29sb3I6I2JkYmRiZH0ubWF0LWJ1dHRvbi10b2dnbGUtc3RhbmRhbG9uZS5tYXQtYnV0dG9uLXRvZ2dsZS1hcHBlYXJhbmNlLXN0YW5kYXJkW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1idXR0b24tdG9nZ2xlLWdyb3VwLWFwcGVhcmFuY2Utc3RhbmRhcmRbX25nY29udGVudC0lQ09NUCVde2JvcmRlcjpzb2xpZCAxcHggcmdiYSgwLDAsMCwuMTIpfS5tYXQtYnV0dG9uLXRvZ2dsZS1hcHBlYXJhbmNlLXN0YW5kYXJkW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtYnV0dG9uLXRvZ2dsZS1sYWJlbC1jb250ZW50W19uZ2NvbnRlbnQtJUNPTVAlXXtsaW5lLWhlaWdodDo0OHB4fS5tYXQtY2FyZFtfbmdjb250ZW50LSVDT01QJV17YmFja2dyb3VuZDojZmZmO2NvbG9yOiMyMTIxMjF9Lm1hdC1jYXJkW19uZ2NvbnRlbnQtJUNPTVAlXTpub3QoW2NsYXNzKj1tYXQtZWxldmF0aW9uLXpdKXtib3gtc2hhZG93OjBweCAycHggMXB4IC0xcHggcmdiYSgwLCAwLCAwLCAwLjIpLDBweCAxcHggMXB4IDBweCByZ2JhKDAsIDAsIDAsIDAuMTQpLDBweCAxcHggM3B4IDBweCByZ2JhKDAsIDAsIDAsIDAuMTIpfS5tYXQtY2FyZC5tYXQtY2FyZC1mbGF0W19uZ2NvbnRlbnQtJUNPTVAlXTpub3QoW2NsYXNzKj1tYXQtZWxldmF0aW9uLXpdKXtib3gtc2hhZG93OjBweCAwcHggMHB4IDBweCByZ2JhKDAsIDAsIDAsIDAuMiksMHB4IDBweCAwcHggMHB4IHJnYmEoMCwgMCwgMCwgMC4xNCksMHB4IDBweCAwcHggMHB4IHJnYmEoMCwgMCwgMCwgMC4xMil9Lm1hdC1jYXJkLXN1YnRpdGxlW19uZ2NvbnRlbnQtJUNPTVAlXXtjb2xvcjojNjE2MTYxfS5tYXQtY2hlY2tib3gtZnJhbWVbX25nY29udGVudC0lQ09NUCVde2JvcmRlci1jb2xvcjojNjE2MTYxfS5tYXQtY2hlY2tib3gtY2hlY2ttYXJrW19uZ2NvbnRlbnQtJUNPTVAlXXtmaWxsOiNmYWZhZmF9Lm1hdC1jaGVja2JveC1jaGVja21hcmstcGF0aFtfbmdjb250ZW50LSVDT01QJV17c3Ryb2tlOiNmYWZhZmEgIWltcG9ydGFudH0ubWF0LWNoZWNrYm94LW1peGVkbWFya1tfbmdjb250ZW50LSVDT01QJV17YmFja2dyb3VuZC1jb2xvcjojZmFmYWZhfS5tYXQtY2hlY2tib3gtaW5kZXRlcm1pbmF0ZS5tYXQtcHJpbWFyeVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWNoZWNrYm94LWJhY2tncm91bmRbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWNoZWNrYm94LWNoZWNrZWQubWF0LXByaW1hcnlbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1jaGVja2JveC1iYWNrZ3JvdW5kW19uZ2NvbnRlbnQtJUNPTVAlXXtiYWNrZ3JvdW5kLWNvbG9yOiNmNTdjMDB9Lm1hdC1jaGVja2JveC1pbmRldGVybWluYXRlLm1hdC1hY2NlbnRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1jaGVja2JveC1iYWNrZ3JvdW5kW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1jaGVja2JveC1jaGVja2VkLm1hdC1hY2NlbnRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1jaGVja2JveC1iYWNrZ3JvdW5kW19uZ2NvbnRlbnQtJUNPTVAlXXtiYWNrZ3JvdW5kLWNvbG9yOiNmZjk4MDB9Lm1hdC1jaGVja2JveC1pbmRldGVybWluYXRlLm1hdC13YXJuW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtY2hlY2tib3gtYmFja2dyb3VuZFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtY2hlY2tib3gtY2hlY2tlZC5tYXQtd2Fybltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWNoZWNrYm94LWJhY2tncm91bmRbX25nY29udGVudC0lQ09NUCVde2JhY2tncm91bmQtY29sb3I6I2Y0NDMzNn0ubWF0LWNoZWNrYm94LWRpc2FibGVkLm1hdC1jaGVja2JveC1jaGVja2VkW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtY2hlY2tib3gtYmFja2dyb3VuZFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtY2hlY2tib3gtZGlzYWJsZWQubWF0LWNoZWNrYm94LWluZGV0ZXJtaW5hdGVbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1jaGVja2JveC1iYWNrZ3JvdW5kW19uZ2NvbnRlbnQtJUNPTVAlXXtiYWNrZ3JvdW5kLWNvbG9yOiNiMGIwYjB9Lm1hdC1jaGVja2JveC1kaXNhYmxlZFtfbmdjb250ZW50LSVDT01QJV06bm90KC5tYXQtY2hlY2tib3gtY2hlY2tlZCkgICAubWF0LWNoZWNrYm94LWZyYW1lW19uZ2NvbnRlbnQtJUNPTVAlXXtib3JkZXItY29sb3I6I2IwYjBiMH0ubWF0LWNoZWNrYm94LWRpc2FibGVkW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtY2hlY2tib3gtbGFiZWxbX25nY29udGVudC0lQ09NUCVde2NvbG9yOiM2MTYxNjF9Lm1hdC1jaGVja2JveFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXJpcHBsZS1lbGVtZW50W19uZ2NvbnRlbnQtJUNPTVAlXXtiYWNrZ3JvdW5kLWNvbG9yOiMwMDB9Lm1hdC1jaGVja2JveC1jaGVja2VkW19uZ2NvbnRlbnQtJUNPTVAlXTpub3QoLm1hdC1jaGVja2JveC1kaXNhYmxlZCkubWF0LXByaW1hcnkgICAubWF0LXJpcHBsZS1lbGVtZW50W19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1jaGVja2JveFtfbmdjb250ZW50LSVDT01QJV06YWN0aXZlOm5vdCgubWF0LWNoZWNrYm94LWRpc2FibGVkKS5tYXQtcHJpbWFyeSAgIC5tYXQtcmlwcGxlLWVsZW1lbnRbX25nY29udGVudC0lQ09NUCVde2JhY2tncm91bmQ6I2Y1N2MwMH0ubWF0LWNoZWNrYm94LWNoZWNrZWRbX25nY29udGVudC0lQ09NUCVdOm5vdCgubWF0LWNoZWNrYm94LWRpc2FibGVkKS5tYXQtYWNjZW50ICAgLm1hdC1yaXBwbGUtZWxlbWVudFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtY2hlY2tib3hbX25nY29udGVudC0lQ09NUCVdOmFjdGl2ZTpub3QoLm1hdC1jaGVja2JveC1kaXNhYmxlZCkubWF0LWFjY2VudCAgIC5tYXQtcmlwcGxlLWVsZW1lbnRbX25nY29udGVudC0lQ09NUCVde2JhY2tncm91bmQ6I2ZmOTgwMH0ubWF0LWNoZWNrYm94LWNoZWNrZWRbX25nY29udGVudC0lQ09NUCVdOm5vdCgubWF0LWNoZWNrYm94LWRpc2FibGVkKS5tYXQtd2FybiAgIC5tYXQtcmlwcGxlLWVsZW1lbnRbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWNoZWNrYm94W19uZ2NvbnRlbnQtJUNPTVAlXTphY3RpdmU6bm90KC5tYXQtY2hlY2tib3gtZGlzYWJsZWQpLm1hdC13YXJuICAgLm1hdC1yaXBwbGUtZWxlbWVudFtfbmdjb250ZW50LSVDT01QJV17YmFja2dyb3VuZDojZjQ0MzM2fS5tYXQtY2hpcC5tYXQtc3RhbmRhcmQtY2hpcFtfbmdjb250ZW50LSVDT01QJV17YmFja2dyb3VuZC1jb2xvcjojZTBlMGUwO2NvbG9yOiMyMTIxMjF9Lm1hdC1jaGlwLm1hdC1zdGFuZGFyZC1jaGlwW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtY2hpcC1yZW1vdmVbX25nY29udGVudC0lQ09NUCVde2NvbG9yOiMyMTIxMjE7b3BhY2l0eTouNH0ubWF0LWNoaXAubWF0LXN0YW5kYXJkLWNoaXBbX25nY29udGVudC0lQ09NUCVdOm5vdCgubWF0LWNoaXAtZGlzYWJsZWQpOmFjdGl2ZXtib3gtc2hhZG93OjBweCAzcHggM3B4IC0ycHggcmdiYSgwLCAwLCAwLCAwLjIpLDBweCAzcHggNHB4IDBweCByZ2JhKDAsIDAsIDAsIDAuMTQpLDBweCAxcHggOHB4IDBweCByZ2JhKDAsIDAsIDAsIDAuMTIpfS5tYXQtY2hpcC5tYXQtc3RhbmRhcmQtY2hpcFtfbmdjb250ZW50LSVDT01QJV06bm90KC5tYXQtY2hpcC1kaXNhYmxlZCkgICAubWF0LWNoaXAtcmVtb3ZlW19uZ2NvbnRlbnQtJUNPTVAlXTpob3ZlcntvcGFjaXR5Oi41NH0ubWF0LWNoaXAubWF0LXN0YW5kYXJkLWNoaXAubWF0LWNoaXAtZGlzYWJsZWRbX25nY29udGVudC0lQ09NUCVde29wYWNpdHk6LjR9Lm1hdC1jaGlwLm1hdC1zdGFuZGFyZC1jaGlwW19uZ2NvbnRlbnQtJUNPTVAlXTo6YWZ0ZXJ7YmFja2dyb3VuZDojMDAwfS5tYXQtY2hpcC5tYXQtc3RhbmRhcmQtY2hpcC5tYXQtY2hpcC1zZWxlY3RlZC5tYXQtcHJpbWFyeVtfbmdjb250ZW50LSVDT01QJV17YmFja2dyb3VuZC1jb2xvcjojZjU3YzAwO2NvbG9yOiNmZmZ9Lm1hdC1jaGlwLm1hdC1zdGFuZGFyZC1jaGlwLm1hdC1jaGlwLXNlbGVjdGVkLm1hdC1wcmltYXJ5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtY2hpcC1yZW1vdmVbX25nY29udGVudC0lQ09NUCVde2NvbG9yOiNmZmY7b3BhY2l0eTouNH0ubWF0LWNoaXAubWF0LXN0YW5kYXJkLWNoaXAubWF0LWNoaXAtc2VsZWN0ZWQubWF0LXByaW1hcnlbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1yaXBwbGUtZWxlbWVudFtfbmdjb250ZW50LSVDT01QJV17YmFja2dyb3VuZC1jb2xvcjpyZ2JhKDI1NSwyNTUsMjU1LC4xKX0ubWF0LWNoaXAubWF0LXN0YW5kYXJkLWNoaXAubWF0LWNoaXAtc2VsZWN0ZWQubWF0LXdhcm5bX25nY29udGVudC0lQ09NUCVde2JhY2tncm91bmQtY29sb3I6I2Y0NDMzNjtjb2xvcjojZmZmfS5tYXQtY2hpcC5tYXQtc3RhbmRhcmQtY2hpcC5tYXQtY2hpcC1zZWxlY3RlZC5tYXQtd2Fybltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWNoaXAtcmVtb3ZlW19uZ2NvbnRlbnQtJUNPTVAlXXtjb2xvcjojZmZmO29wYWNpdHk6LjR9Lm1hdC1jaGlwLm1hdC1zdGFuZGFyZC1jaGlwLm1hdC1jaGlwLXNlbGVjdGVkLm1hdC13YXJuW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtcmlwcGxlLWVsZW1lbnRbX25nY29udGVudC0lQ09NUCVde2JhY2tncm91bmQtY29sb3I6cmdiYSgyNTUsMjU1LDI1NSwuMSl9Lm1hdC1jaGlwLm1hdC1zdGFuZGFyZC1jaGlwLm1hdC1jaGlwLXNlbGVjdGVkLm1hdC1hY2NlbnRbX25nY29udGVudC0lQ09NUCVde2JhY2tncm91bmQtY29sb3I6I2ZmOTgwMDtjb2xvcjojZmZmfS5tYXQtY2hpcC5tYXQtc3RhbmRhcmQtY2hpcC5tYXQtY2hpcC1zZWxlY3RlZC5tYXQtYWNjZW50W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtY2hpcC1yZW1vdmVbX25nY29udGVudC0lQ09NUCVde2NvbG9yOiNmZmY7b3BhY2l0eTouNH0ubWF0LWNoaXAubWF0LXN0YW5kYXJkLWNoaXAubWF0LWNoaXAtc2VsZWN0ZWQubWF0LWFjY2VudFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXJpcHBsZS1lbGVtZW50W19uZ2NvbnRlbnQtJUNPTVAlXXtiYWNrZ3JvdW5kLWNvbG9yOnJnYmEoMjU1LDI1NSwyNTUsLjEpfS5tYXQtdGFibGVbX25nY29udGVudC0lQ09NUCVde2JhY2tncm91bmQ6I2ZmZn0ubWF0LXRhYmxlW19uZ2NvbnRlbnQtJUNPTVAlXSAgIHRoZWFkW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10YWJsZVtfbmdjb250ZW50LSVDT01QJV0gICB0Ym9keVtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdGFibGVbX25nY29udGVudC0lQ09NUCVdICAgdGZvb3RbX25nY29udGVudC0lQ09NUCVdLCBtYXQtaGVhZGVyLXJvd1tfbmdjb250ZW50LSVDT01QJV0sIG1hdC1yb3dbX25nY29udGVudC0lQ09NUCVdLCBtYXQtZm9vdGVyLXJvd1tfbmdjb250ZW50LSVDT01QJV0sIFttYXQtaGVhZGVyLXJvd11bX25nY29udGVudC0lQ09NUCVdLCBbbWF0LXJvd11bX25nY29udGVudC0lQ09NUCVdLCBbbWF0LWZvb3Rlci1yb3ddW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10YWJsZS1zdGlja3lbX25nY29udGVudC0lQ09NUCVde2JhY2tncm91bmQ6aW5oZXJpdH1tYXQtcm93W19uZ2NvbnRlbnQtJUNPTVAlXSwgbWF0LWhlYWRlci1yb3dbX25nY29udGVudC0lQ09NUCVdLCBtYXQtZm9vdGVyLXJvd1tfbmdjb250ZW50LSVDT01QJV0sIHRoLm1hdC1oZWFkZXItY2VsbFtfbmdjb250ZW50LSVDT01QJV0sIHRkLm1hdC1jZWxsW19uZ2NvbnRlbnQtJUNPTVAlXSwgdGQubWF0LWZvb3Rlci1jZWxsW19uZ2NvbnRlbnQtJUNPTVAlXXtib3JkZXItYm90dG9tLWNvbG9yOnJnYmEoMCwwLDAsLjEyKX0ubWF0LWhlYWRlci1jZWxsW19uZ2NvbnRlbnQtJUNPTVAlXXtjb2xvcjojNjE2MTYxfS5tYXQtY2VsbFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtZm9vdGVyLWNlbGxbX25nY29udGVudC0lQ09NUCVde2NvbG9yOiMyMTIxMjF9Lm1hdC1jYWxlbmRhci1hcnJvd1tfbmdjb250ZW50LSVDT01QJV17Ym9yZGVyLXRvcC1jb2xvcjpyZ2JhKDAsMCwwLC41NCl9Lm1hdC1kYXRlcGlja2VyLXRvZ2dsZVtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtZGF0ZXBpY2tlci1jb250ZW50W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtY2FsZW5kYXItbmV4dC1idXR0b25bX25nY29udGVudC0lQ09NUCVdLCAubWF0LWRhdGVwaWNrZXItY29udGVudFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWNhbGVuZGFyLXByZXZpb3VzLWJ1dHRvbltfbmdjb250ZW50LSVDT01QJV17Y29sb3I6cmdiYSgwLDAsMCwuNTQpfS5tYXQtY2FsZW5kYXItdGFibGUtaGVhZGVyW19uZ2NvbnRlbnQtJUNPTVAlXXtjb2xvcjpyZ2JhKDAsMCwwLC4zOCl9Lm1hdC1jYWxlbmRhci10YWJsZS1oZWFkZXItZGl2aWRlcltfbmdjb250ZW50LSVDT01QJV06OmFmdGVye2JhY2tncm91bmQ6cmdiYSgwLDAsMCwuMTIpfS5tYXQtY2FsZW5kYXItYm9keS1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17Y29sb3I6IzYxNjE2MX0ubWF0LWNhbGVuZGFyLWJvZHktY2VsbC1jb250ZW50W19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1kYXRlLXJhbmdlLWlucHV0LXNlcGFyYXRvcltfbmdjb250ZW50LSVDT01QJV17Y29sb3I6IzIxMjEyMTtib3JkZXItY29sb3I6dHJhbnNwYXJlbnR9Lm1hdC1jYWxlbmRhci1ib2R5LWRpc2FibGVkW19uZ2NvbnRlbnQtJUNPTVAlXSA+IC5tYXQtY2FsZW5kYXItYm9keS1jZWxsLWNvbnRlbnRbX25nY29udGVudC0lQ09NUCVdOm5vdCgubWF0LWNhbGVuZGFyLWJvZHktc2VsZWN0ZWQpOm5vdCgubWF0LWNhbGVuZGFyLWJvZHktY29tcGFyaXNvbi1pZGVudGljYWwpe2NvbG9yOiM3NTc1NzV9Lm1hdC1mb3JtLWZpZWxkLWRpc2FibGVkW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZGF0ZS1yYW5nZS1pbnB1dC1zZXBhcmF0b3JbX25nY29udGVudC0lQ09NUCVde2NvbG9yOiM3NTc1NzV9Lm1hdC1jYWxlbmRhci1ib2R5LWNlbGxbX25nY29udGVudC0lQ09NUCVdOm5vdCgubWF0LWNhbGVuZGFyLWJvZHktZGlzYWJsZWQpOmhvdmVyID4gLm1hdC1jYWxlbmRhci1ib2R5LWNlbGwtY29udGVudFtfbmdjb250ZW50LSVDT01QJV06bm90KC5tYXQtY2FsZW5kYXItYm9keS1zZWxlY3RlZCk6bm90KC5tYXQtY2FsZW5kYXItYm9keS1jb21wYXJpc29uLWlkZW50aWNhbCksIC5jZGsta2V5Ym9hcmQtZm9jdXNlZFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWNhbGVuZGFyLWJvZHktYWN0aXZlW19uZ2NvbnRlbnQtJUNPTVAlXSA+IC5tYXQtY2FsZW5kYXItYm9keS1jZWxsLWNvbnRlbnRbX25nY29udGVudC0lQ09NUCVdOm5vdCgubWF0LWNhbGVuZGFyLWJvZHktc2VsZWN0ZWQpOm5vdCgubWF0LWNhbGVuZGFyLWJvZHktY29tcGFyaXNvbi1pZGVudGljYWwpLCAuY2RrLXByb2dyYW0tZm9jdXNlZFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWNhbGVuZGFyLWJvZHktYWN0aXZlW19uZ2NvbnRlbnQtJUNPTVAlXSA+IC5tYXQtY2FsZW5kYXItYm9keS1jZWxsLWNvbnRlbnRbX25nY29udGVudC0lQ09NUCVdOm5vdCgubWF0LWNhbGVuZGFyLWJvZHktc2VsZWN0ZWQpOm5vdCgubWF0LWNhbGVuZGFyLWJvZHktY29tcGFyaXNvbi1pZGVudGljYWwpe2JhY2tncm91bmQtY29sb3I6cmdiYSgwLDAsMCwuMDQpfS5tYXQtY2FsZW5kYXItYm9keS1pbi1wcmV2aWV3W19uZ2NvbnRlbnQtJUNPTVAlXXtjb2xvcjpyZ2JhKDAsMCwwLC4yNCl9Lm1hdC1jYWxlbmRhci1ib2R5LXRvZGF5W19uZ2NvbnRlbnQtJUNPTVAlXTpub3QoLm1hdC1jYWxlbmRhci1ib2R5LXNlbGVjdGVkKTpub3QoLm1hdC1jYWxlbmRhci1ib2R5LWNvbXBhcmlzb24taWRlbnRpY2FsKXtib3JkZXItY29sb3I6cmdiYSgwLDAsMCwuMzgpfS5tYXQtY2FsZW5kYXItYm9keS1kaXNhYmxlZFtfbmdjb250ZW50LSVDT01QJV0gPiAubWF0LWNhbGVuZGFyLWJvZHktdG9kYXlbX25nY29udGVudC0lQ09NUCVdOm5vdCgubWF0LWNhbGVuZGFyLWJvZHktc2VsZWN0ZWQpOm5vdCgubWF0LWNhbGVuZGFyLWJvZHktY29tcGFyaXNvbi1pZGVudGljYWwpe2JvcmRlci1jb2xvcjpyZ2JhKDAsMCwwLC4xOCl9Lm1hdC1jYWxlbmRhci1ib2R5LWluLXJhbmdlW19uZ2NvbnRlbnQtJUNPTVAlXTo6YmVmb3Jle2JhY2tncm91bmQ6cmdiYSgyNDUsMTI0LDAsLjIpfS5tYXQtY2FsZW5kYXItYm9keS1jb21wYXJpc29uLWlkZW50aWNhbFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtY2FsZW5kYXItYm9keS1pbi1jb21wYXJpc29uLXJhbmdlW19uZ2NvbnRlbnQtJUNPTVAlXTo6YmVmb3Jle2JhY2tncm91bmQ6cmdiYSgyNDksMTcxLDAsLjIpfS5tYXQtY2FsZW5kYXItYm9keS1jb21wYXJpc29uLWJyaWRnZS1zdGFydFtfbmdjb250ZW50LSVDT01QJV06OmJlZm9yZSwgW2Rpcj1ydGxdW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtY2FsZW5kYXItYm9keS1jb21wYXJpc29uLWJyaWRnZS1lbmRbX25nY29udGVudC0lQ09NUCVdOjpiZWZvcmV7YmFja2dyb3VuZDpsaW5lYXItZ3JhZGllbnQodG8gcmlnaHQsIHJnYmEoMjQ1LCAxMjQsIDAsIDAuMikgNTAlLCByZ2JhKDI0OSwgMTcxLCAwLCAwLjIpIDUwJSl9Lm1hdC1jYWxlbmRhci1ib2R5LWNvbXBhcmlzb24tYnJpZGdlLWVuZFtfbmdjb250ZW50LSVDT01QJV06OmJlZm9yZSwgW2Rpcj1ydGxdW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtY2FsZW5kYXItYm9keS1jb21wYXJpc29uLWJyaWRnZS1zdGFydFtfbmdjb250ZW50LSVDT01QJV06OmJlZm9yZXtiYWNrZ3JvdW5kOmxpbmVhci1ncmFkaWVudCh0byBsZWZ0LCByZ2JhKDI0NSwgMTI0LCAwLCAwLjIpIDUwJSwgcmdiYSgyNDksIDE3MSwgMCwgMC4yKSA1MCUpfS5tYXQtY2FsZW5kYXItYm9keS1pbi1yYW5nZVtfbmdjb250ZW50LSVDT01QJV0gPiAubWF0LWNhbGVuZGFyLWJvZHktY29tcGFyaXNvbi1pZGVudGljYWxbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWNhbGVuZGFyLWJvZHktaW4tY29tcGFyaXNvbi1yYW5nZS5tYXQtY2FsZW5kYXItYm9keS1pbi1yYW5nZVtfbmdjb250ZW50LSVDT01QJV06OmFmdGVye2JhY2tncm91bmQ6I2E4ZGFiNX0ubWF0LWNhbGVuZGFyLWJvZHktY29tcGFyaXNvbi1pZGVudGljYWwubWF0LWNhbGVuZGFyLWJvZHktc2VsZWN0ZWRbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWNhbGVuZGFyLWJvZHktaW4tY29tcGFyaXNvbi1yYW5nZVtfbmdjb250ZW50LSVDT01QJV0gPiAubWF0LWNhbGVuZGFyLWJvZHktc2VsZWN0ZWRbX25nY29udGVudC0lQ09NUCVde2JhY2tncm91bmQ6IzQ2YTM1ZX0ubWF0LWNhbGVuZGFyLWJvZHktc2VsZWN0ZWRbX25nY29udGVudC0lQ09NUCVde2JhY2tncm91bmQtY29sb3I6I2Y1N2MwMDtjb2xvcjojZmZmfS5tYXQtY2FsZW5kYXItYm9keS1kaXNhYmxlZFtfbmdjb250ZW50LSVDT01QJV0gPiAubWF0LWNhbGVuZGFyLWJvZHktc2VsZWN0ZWRbX25nY29udGVudC0lQ09NUCVde2JhY2tncm91bmQtY29sb3I6cmdiYSgyNDUsMTI0LDAsLjQpfS5tYXQtY2FsZW5kYXItYm9keS10b2RheS5tYXQtY2FsZW5kYXItYm9keS1zZWxlY3RlZFtfbmdjb250ZW50LSVDT01QJV17Ym94LXNoYWRvdzppbnNldCAwIDAgMCAxcHggI2ZmZn0ubWF0LWRhdGVwaWNrZXItY29udGVudFtfbmdjb250ZW50LSVDT01QJV17Ym94LXNoYWRvdzowcHggMnB4IDRweCAtMXB4IHJnYmEoMCwgMCwgMCwgMC4yKSwwcHggNHB4IDVweCAwcHggcmdiYSgwLCAwLCAwLCAwLjE0KSwwcHggMXB4IDEwcHggMHB4IHJnYmEoMCwgMCwgMCwgMC4xMik7YmFja2dyb3VuZC1jb2xvcjojZmZmO2NvbG9yOiMyMTIxMjF9Lm1hdC1kYXRlcGlja2VyLWNvbnRlbnQubWF0LWFjY2VudFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWNhbGVuZGFyLWJvZHktaW4tcmFuZ2VbX25nY29udGVudC0lQ09NUCVdOjpiZWZvcmV7YmFja2dyb3VuZDpyZ2JhKDI1NSwxNTIsMCwuMil9Lm1hdC1kYXRlcGlja2VyLWNvbnRlbnQubWF0LWFjY2VudFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWNhbGVuZGFyLWJvZHktY29tcGFyaXNvbi1pZGVudGljYWxbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWRhdGVwaWNrZXItY29udGVudC5tYXQtYWNjZW50W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtY2FsZW5kYXItYm9keS1pbi1jb21wYXJpc29uLXJhbmdlW19uZ2NvbnRlbnQtJUNPTVAlXTo6YmVmb3Jle2JhY2tncm91bmQ6cmdiYSgyNDksMTcxLDAsLjIpfS5tYXQtZGF0ZXBpY2tlci1jb250ZW50Lm1hdC1hY2NlbnRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1jYWxlbmRhci1ib2R5LWNvbXBhcmlzb24tYnJpZGdlLXN0YXJ0W19uZ2NvbnRlbnQtJUNPTVAlXTo6YmVmb3JlLCAubWF0LWRhdGVwaWNrZXItY29udGVudC5tYXQtYWNjZW50W19uZ2NvbnRlbnQtJUNPTVAlXSAgIFtkaXI9cnRsXVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWNhbGVuZGFyLWJvZHktY29tcGFyaXNvbi1icmlkZ2UtZW5kW19uZ2NvbnRlbnQtJUNPTVAlXTo6YmVmb3Jle2JhY2tncm91bmQ6bGluZWFyLWdyYWRpZW50KHRvIHJpZ2h0LCByZ2JhKDI1NSwgMTUyLCAwLCAwLjIpIDUwJSwgcmdiYSgyNDksIDE3MSwgMCwgMC4yKSA1MCUpfS5tYXQtZGF0ZXBpY2tlci1jb250ZW50Lm1hdC1hY2NlbnRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1jYWxlbmRhci1ib2R5LWNvbXBhcmlzb24tYnJpZGdlLWVuZFtfbmdjb250ZW50LSVDT01QJV06OmJlZm9yZSwgLm1hdC1kYXRlcGlja2VyLWNvbnRlbnQubWF0LWFjY2VudFtfbmdjb250ZW50LSVDT01QJV0gICBbZGlyPXJ0bF1bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1jYWxlbmRhci1ib2R5LWNvbXBhcmlzb24tYnJpZGdlLXN0YXJ0W19uZ2NvbnRlbnQtJUNPTVAlXTo6YmVmb3Jle2JhY2tncm91bmQ6bGluZWFyLWdyYWRpZW50KHRvIGxlZnQsIHJnYmEoMjU1LCAxNTIsIDAsIDAuMikgNTAlLCByZ2JhKDI0OSwgMTcxLCAwLCAwLjIpIDUwJSl9Lm1hdC1kYXRlcGlja2VyLWNvbnRlbnQubWF0LWFjY2VudFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWNhbGVuZGFyLWJvZHktaW4tcmFuZ2VbX25nY29udGVudC0lQ09NUCVdID4gLm1hdC1jYWxlbmRhci1ib2R5LWNvbXBhcmlzb24taWRlbnRpY2FsW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1kYXRlcGlja2VyLWNvbnRlbnQubWF0LWFjY2VudFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWNhbGVuZGFyLWJvZHktaW4tY29tcGFyaXNvbi1yYW5nZS5tYXQtY2FsZW5kYXItYm9keS1pbi1yYW5nZVtfbmdjb250ZW50LSVDT01QJV06OmFmdGVye2JhY2tncm91bmQ6I2E4ZGFiNX0ubWF0LWRhdGVwaWNrZXItY29udGVudC5tYXQtYWNjZW50W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtY2FsZW5kYXItYm9keS1jb21wYXJpc29uLWlkZW50aWNhbC5tYXQtY2FsZW5kYXItYm9keS1zZWxlY3RlZFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtZGF0ZXBpY2tlci1jb250ZW50Lm1hdC1hY2NlbnRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1jYWxlbmRhci1ib2R5LWluLWNvbXBhcmlzb24tcmFuZ2VbX25nY29udGVudC0lQ09NUCVdID4gLm1hdC1jYWxlbmRhci1ib2R5LXNlbGVjdGVkW19uZ2NvbnRlbnQtJUNPTVAlXXtiYWNrZ3JvdW5kOiM0NmEzNWV9Lm1hdC1kYXRlcGlja2VyLWNvbnRlbnQubWF0LWFjY2VudFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWNhbGVuZGFyLWJvZHktc2VsZWN0ZWRbX25nY29udGVudC0lQ09NUCVde2JhY2tncm91bmQtY29sb3I6I2ZmOTgwMDtjb2xvcjojZmZmfS5tYXQtZGF0ZXBpY2tlci1jb250ZW50Lm1hdC1hY2NlbnRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1jYWxlbmRhci1ib2R5LWRpc2FibGVkW19uZ2NvbnRlbnQtJUNPTVAlXSA+IC5tYXQtY2FsZW5kYXItYm9keS1zZWxlY3RlZFtfbmdjb250ZW50LSVDT01QJV17YmFja2dyb3VuZC1jb2xvcjpyZ2JhKDI1NSwxNTIsMCwuNCl9Lm1hdC1kYXRlcGlja2VyLWNvbnRlbnQubWF0LWFjY2VudFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWNhbGVuZGFyLWJvZHktdG9kYXkubWF0LWNhbGVuZGFyLWJvZHktc2VsZWN0ZWRbX25nY29udGVudC0lQ09NUCVde2JveC1zaGFkb3c6aW5zZXQgMCAwIDAgMXB4ICNmZmZ9Lm1hdC1kYXRlcGlja2VyLWNvbnRlbnQubWF0LXdhcm5bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1jYWxlbmRhci1ib2R5LWluLXJhbmdlW19uZ2NvbnRlbnQtJUNPTVAlXTo6YmVmb3Jle2JhY2tncm91bmQ6cmdiYSgyNDQsNjcsNTQsLjIpfS5tYXQtZGF0ZXBpY2tlci1jb250ZW50Lm1hdC13YXJuW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtY2FsZW5kYXItYm9keS1jb21wYXJpc29uLWlkZW50aWNhbFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtZGF0ZXBpY2tlci1jb250ZW50Lm1hdC13YXJuW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtY2FsZW5kYXItYm9keS1pbi1jb21wYXJpc29uLXJhbmdlW19uZ2NvbnRlbnQtJUNPTVAlXTo6YmVmb3Jle2JhY2tncm91bmQ6cmdiYSgyNDksMTcxLDAsLjIpfS5tYXQtZGF0ZXBpY2tlci1jb250ZW50Lm1hdC13YXJuW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtY2FsZW5kYXItYm9keS1jb21wYXJpc29uLWJyaWRnZS1zdGFydFtfbmdjb250ZW50LSVDT01QJV06OmJlZm9yZSwgLm1hdC1kYXRlcGlja2VyLWNvbnRlbnQubWF0LXdhcm5bX25nY29udGVudC0lQ09NUCVdICAgW2Rpcj1ydGxdW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtY2FsZW5kYXItYm9keS1jb21wYXJpc29uLWJyaWRnZS1lbmRbX25nY29udGVudC0lQ09NUCVdOjpiZWZvcmV7YmFja2dyb3VuZDpsaW5lYXItZ3JhZGllbnQodG8gcmlnaHQsIHJnYmEoMjQ0LCA2NywgNTQsIDAuMikgNTAlLCByZ2JhKDI0OSwgMTcxLCAwLCAwLjIpIDUwJSl9Lm1hdC1kYXRlcGlja2VyLWNvbnRlbnQubWF0LXdhcm5bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1jYWxlbmRhci1ib2R5LWNvbXBhcmlzb24tYnJpZGdlLWVuZFtfbmdjb250ZW50LSVDT01QJV06OmJlZm9yZSwgLm1hdC1kYXRlcGlja2VyLWNvbnRlbnQubWF0LXdhcm5bX25nY29udGVudC0lQ09NUCVdICAgW2Rpcj1ydGxdW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtY2FsZW5kYXItYm9keS1jb21wYXJpc29uLWJyaWRnZS1zdGFydFtfbmdjb250ZW50LSVDT01QJV06OmJlZm9yZXtiYWNrZ3JvdW5kOmxpbmVhci1ncmFkaWVudCh0byBsZWZ0LCByZ2JhKDI0NCwgNjcsIDU0LCAwLjIpIDUwJSwgcmdiYSgyNDksIDE3MSwgMCwgMC4yKSA1MCUpfS5tYXQtZGF0ZXBpY2tlci1jb250ZW50Lm1hdC13YXJuW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtY2FsZW5kYXItYm9keS1pbi1yYW5nZVtfbmdjb250ZW50LSVDT01QJV0gPiAubWF0LWNhbGVuZGFyLWJvZHktY29tcGFyaXNvbi1pZGVudGljYWxbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWRhdGVwaWNrZXItY29udGVudC5tYXQtd2Fybltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWNhbGVuZGFyLWJvZHktaW4tY29tcGFyaXNvbi1yYW5nZS5tYXQtY2FsZW5kYXItYm9keS1pbi1yYW5nZVtfbmdjb250ZW50LSVDT01QJV06OmFmdGVye2JhY2tncm91bmQ6I2E4ZGFiNX0ubWF0LWRhdGVwaWNrZXItY29udGVudC5tYXQtd2Fybltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWNhbGVuZGFyLWJvZHktY29tcGFyaXNvbi1pZGVudGljYWwubWF0LWNhbGVuZGFyLWJvZHktc2VsZWN0ZWRbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWRhdGVwaWNrZXItY29udGVudC5tYXQtd2Fybltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWNhbGVuZGFyLWJvZHktaW4tY29tcGFyaXNvbi1yYW5nZVtfbmdjb250ZW50LSVDT01QJV0gPiAubWF0LWNhbGVuZGFyLWJvZHktc2VsZWN0ZWRbX25nY29udGVudC0lQ09NUCVde2JhY2tncm91bmQ6IzQ2YTM1ZX0ubWF0LWRhdGVwaWNrZXItY29udGVudC5tYXQtd2Fybltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWNhbGVuZGFyLWJvZHktc2VsZWN0ZWRbX25nY29udGVudC0lQ09NUCVde2JhY2tncm91bmQtY29sb3I6I2Y0NDMzNjtjb2xvcjojZmZmfS5tYXQtZGF0ZXBpY2tlci1jb250ZW50Lm1hdC13YXJuW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtY2FsZW5kYXItYm9keS1kaXNhYmxlZFtfbmdjb250ZW50LSVDT01QJV0gPiAubWF0LWNhbGVuZGFyLWJvZHktc2VsZWN0ZWRbX25nY29udGVudC0lQ09NUCVde2JhY2tncm91bmQtY29sb3I6cmdiYSgyNDQsNjcsNTQsLjQpfS5tYXQtZGF0ZXBpY2tlci1jb250ZW50Lm1hdC13YXJuW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtY2FsZW5kYXItYm9keS10b2RheS5tYXQtY2FsZW5kYXItYm9keS1zZWxlY3RlZFtfbmdjb250ZW50LSVDT01QJV17Ym94LXNoYWRvdzppbnNldCAwIDAgMCAxcHggI2ZmZn0ubWF0LWRhdGVwaWNrZXItY29udGVudC10b3VjaFtfbmdjb250ZW50LSVDT01QJV17Ym94LXNoYWRvdzowcHggMHB4IDBweCAwcHggcmdiYSgwLCAwLCAwLCAwLjIpLDBweCAwcHggMHB4IDBweCByZ2JhKDAsIDAsIDAsIDAuMTQpLDBweCAwcHggMHB4IDBweCByZ2JhKDAsIDAsIDAsIDAuMTIpfS5tYXQtZGF0ZXBpY2tlci10b2dnbGUtYWN0aXZlW19uZ2NvbnRlbnQtJUNPTVAlXXtjb2xvcjojZjU3YzAwfS5tYXQtZGF0ZXBpY2tlci10b2dnbGUtYWN0aXZlLm1hdC1hY2NlbnRbX25nY29udGVudC0lQ09NUCVde2NvbG9yOiNmZjk4MDB9Lm1hdC1kYXRlcGlja2VyLXRvZ2dsZS1hY3RpdmUubWF0LXdhcm5bX25nY29udGVudC0lQ09NUCVde2NvbG9yOiNmNDQzMzZ9Lm1hdC1kYXRlLXJhbmdlLWlucHV0LWlubmVyW2Rpc2FibGVkXVtfbmdjb250ZW50LSVDT01QJV17Y29sb3I6Izc1NzU3NX0ubWF0LWRpYWxvZy1jb250YWluZXJbX25nY29udGVudC0lQ09NUCVde2JveC1zaGFkb3c6MHB4IDExcHggMTVweCAtN3B4IHJnYmEoMCwgMCwgMCwgMC4yKSwwcHggMjRweCAzOHB4IDNweCByZ2JhKDAsIDAsIDAsIDAuMTQpLDBweCA5cHggNDZweCA4cHggcmdiYSgwLCAwLCAwLCAwLjEyKTtiYWNrZ3JvdW5kOiNmZmY7Y29sb3I6IzIxMjEyMX0ubWF0LWRpdmlkZXJbX25nY29udGVudC0lQ09NUCVde2JvcmRlci10b3AtY29sb3I6cmdiYSgwLDAsMCwuMTIpfS5tYXQtZGl2aWRlci12ZXJ0aWNhbFtfbmdjb250ZW50LSVDT01QJV17Ym9yZGVyLXJpZ2h0LWNvbG9yOnJnYmEoMCwwLDAsLjEyKX0ubWF0LWV4cGFuc2lvbi1wYW5lbFtfbmdjb250ZW50LSVDT01QJV17YmFja2dyb3VuZDojZmZmO2NvbG9yOiMyMTIxMjF9Lm1hdC1leHBhbnNpb24tcGFuZWxbX25nY29udGVudC0lQ09NUCVdOm5vdChbY2xhc3MqPW1hdC1lbGV2YXRpb24tel0pe2JveC1zaGFkb3c6MHB4IDNweCAxcHggLTJweCByZ2JhKDAsIDAsIDAsIDAuMiksMHB4IDJweCAycHggMHB4IHJnYmEoMCwgMCwgMCwgMC4xNCksMHB4IDFweCA1cHggMHB4IHJnYmEoMCwgMCwgMCwgMC4xMil9Lm1hdC1hY3Rpb24tcm93W19uZ2NvbnRlbnQtJUNPTVAlXXtib3JkZXItdG9wLWNvbG9yOnJnYmEoMCwwLDAsLjEyKX0ubWF0LWV4cGFuc2lvbi1wYW5lbFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWV4cGFuc2lvbi1wYW5lbC1oZWFkZXIuY2RrLWtleWJvYXJkLWZvY3VzZWRbX25nY29udGVudC0lQ09NUCVdOm5vdChbYXJpYS1kaXNhYmxlZD10cnVlXSksIC5tYXQtZXhwYW5zaW9uLXBhbmVsW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZXhwYW5zaW9uLXBhbmVsLWhlYWRlci5jZGstcHJvZ3JhbS1mb2N1c2VkW19uZ2NvbnRlbnQtJUNPTVAlXTpub3QoW2FyaWEtZGlzYWJsZWQ9dHJ1ZV0pLCAubWF0LWV4cGFuc2lvbi1wYW5lbFtfbmdjb250ZW50LSVDT01QJV06bm90KC5tYXQtZXhwYW5kZWQpICAgLm1hdC1leHBhbnNpb24tcGFuZWwtaGVhZGVyW19uZ2NvbnRlbnQtJUNPTVAlXTpob3Zlcjpub3QoW2FyaWEtZGlzYWJsZWQ9dHJ1ZV0pe2JhY2tncm91bmQ6cmdiYSgwLDAsMCwuMDQpfUBtZWRpYShob3Zlcjogbm9uZSl7Lm1hdC1leHBhbnNpb24tcGFuZWxbX25nY29udGVudC0lQ09NUCVdOm5vdCgubWF0LWV4cGFuZGVkKTpub3QoW2FyaWEtZGlzYWJsZWQ9dHJ1ZV0pICAgLm1hdC1leHBhbnNpb24tcGFuZWwtaGVhZGVyW19uZ2NvbnRlbnQtJUNPTVAlXTpob3ZlcntiYWNrZ3JvdW5kOiNmZmZ9fS5tYXQtZXhwYW5zaW9uLXBhbmVsLWhlYWRlci10aXRsZVtfbmdjb250ZW50LSVDT01QJV17Y29sb3I6IzIxMjEyMX0ubWF0LWV4cGFuc2lvbi1wYW5lbC1oZWFkZXItZGVzY3JpcHRpb25bX25nY29udGVudC0lQ09NUCVdLCAubWF0LWV4cGFuc2lvbi1pbmRpY2F0b3JbX25nY29udGVudC0lQ09NUCVdOjphZnRlcntjb2xvcjojNjE2MTYxfS5tYXQtZXhwYW5zaW9uLXBhbmVsLWhlYWRlclthcmlhLWRpc2FibGVkPXRydWVdW19uZ2NvbnRlbnQtJUNPTVAlXXtjb2xvcjpyZ2JhKDAsMCwwLC4yNil9Lm1hdC1leHBhbnNpb24tcGFuZWwtaGVhZGVyW2FyaWEtZGlzYWJsZWQ9dHJ1ZV1bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1leHBhbnNpb24tcGFuZWwtaGVhZGVyLXRpdGxlW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1leHBhbnNpb24tcGFuZWwtaGVhZGVyW2FyaWEtZGlzYWJsZWQ9dHJ1ZV1bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1leHBhbnNpb24tcGFuZWwtaGVhZGVyLWRlc2NyaXB0aW9uW19uZ2NvbnRlbnQtJUNPTVAlXXtjb2xvcjppbmhlcml0fS5tYXQtZXhwYW5zaW9uLXBhbmVsLWhlYWRlcltfbmdjb250ZW50LSVDT01QJV17aGVpZ2h0OjQ4cHh9Lm1hdC1leHBhbnNpb24tcGFuZWwtaGVhZGVyLm1hdC1leHBhbmRlZFtfbmdjb250ZW50LSVDT01QJV17aGVpZ2h0OjY0cHh9Lm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXtjb2xvcjpyZ2JhKDk3LDk3LDk3LC42KX0ubWF0LWhpbnRbX25nY29udGVudC0lQ09NUCVde2NvbG9yOnJnYmEoOTcsOTcsOTcsLjYpfS5tYXQtZm9ybS1maWVsZC5tYXQtZm9jdXNlZFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVde2NvbG9yOiNmNTdjMDB9Lm1hdC1mb3JtLWZpZWxkLm1hdC1mb2N1c2VkW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbC5tYXQtYWNjZW50W19uZ2NvbnRlbnQtJUNPTVAlXXtjb2xvcjojZmY5ODAwfS5tYXQtZm9ybS1maWVsZC5tYXQtZm9jdXNlZFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWwubWF0LXdhcm5bX25nY29udGVudC0lQ09NUCVde2NvbG9yOiNmNDQzMzZ9Lm1hdC1mb2N1c2VkW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1yZXF1aXJlZC1tYXJrZXJbX25nY29udGVudC0lQ09NUCVde2NvbG9yOiNmZjk4MDB9Lm1hdC1mb3JtLWZpZWxkLXJpcHBsZVtfbmdjb250ZW50LSVDT01QJV17YmFja2dyb3VuZC1jb2xvcjpyZ2JhKDAsMCwwLC44Nyl9Lm1hdC1mb3JtLWZpZWxkLm1hdC1mb2N1c2VkW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1yaXBwbGVbX25nY29udGVudC0lQ09NUCVde2JhY2tncm91bmQtY29sb3I6I2Y1N2MwMH0ubWF0LWZvcm0tZmllbGQubWF0LWZvY3VzZWRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLXJpcHBsZS5tYXQtYWNjZW50W19uZ2NvbnRlbnQtJUNPTVAlXXtiYWNrZ3JvdW5kLWNvbG9yOiNmZjk4MDB9Lm1hdC1mb3JtLWZpZWxkLm1hdC1mb2N1c2VkW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1yaXBwbGUubWF0LXdhcm5bX25nY29udGVudC0lQ09NUCVde2JhY2tncm91bmQtY29sb3I6I2Y0NDMzNn0ubWF0LWZvcm0tZmllbGQtdHlwZS1tYXQtbmF0aXZlLXNlbGVjdC5tYXQtZm9jdXNlZFtfbmdjb250ZW50LSVDT01QJV06bm90KC5tYXQtZm9ybS1maWVsZC1pbnZhbGlkKSAgIC5tYXQtZm9ybS1maWVsZC1pbmZpeFtfbmdjb250ZW50LSVDT01QJV06OmFmdGVye2NvbG9yOiNmNTdjMDB9Lm1hdC1mb3JtLWZpZWxkLXR5cGUtbWF0LW5hdGl2ZS1zZWxlY3QubWF0LWZvY3VzZWRbX25nY29udGVudC0lQ09NUCVdOm5vdCgubWF0LWZvcm0tZmllbGQtaW52YWxpZCkubWF0LWFjY2VudCAgIC5tYXQtZm9ybS1maWVsZC1pbmZpeFtfbmdjb250ZW50LSVDT01QJV06OmFmdGVye2NvbG9yOiNmZjk4MDB9Lm1hdC1mb3JtLWZpZWxkLXR5cGUtbWF0LW5hdGl2ZS1zZWxlY3QubWF0LWZvY3VzZWRbX25nY29udGVudC0lQ09NUCVdOm5vdCgubWF0LWZvcm0tZmllbGQtaW52YWxpZCkubWF0LXdhcm4gICAubWF0LWZvcm0tZmllbGQtaW5maXhbX25nY29udGVudC0lQ09NUCVdOjphZnRlcntjb2xvcjojZjQ0MzM2fS5tYXQtZm9ybS1maWVsZC5tYXQtZm9ybS1maWVsZC1pbnZhbGlkW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17Y29sb3I6I2Y0NDMzNn0ubWF0LWZvcm0tZmllbGQubWF0LWZvcm0tZmllbGQtaW52YWxpZFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWwubWF0LWFjY2VudFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtZm9ybS1maWVsZC5tYXQtZm9ybS1maWVsZC1pbnZhbGlkW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtcmVxdWlyZWQtbWFya2VyW19uZ2NvbnRlbnQtJUNPTVAlXXtjb2xvcjojZjQ0MzM2fS5tYXQtZm9ybS1maWVsZC5tYXQtZm9ybS1maWVsZC1pbnZhbGlkW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1yaXBwbGVbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWZvcm0tZmllbGQubWF0LWZvcm0tZmllbGQtaW52YWxpZFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtcmlwcGxlLm1hdC1hY2NlbnRbX25nY29udGVudC0lQ09NUCVde2JhY2tncm91bmQtY29sb3I6I2Y0NDMzNn0ubWF0LWVycm9yW19uZ2NvbnRlbnQtJUNPTVAlXXtjb2xvcjojZjQ0MzM2fS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWxlZ2FjeVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVde2NvbG9yOiM2MTYxNjF9Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtbGVnYWN5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaGludFtfbmdjb250ZW50LSVDT01QJV17Y29sb3I6IzYxNjE2MX0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1sZWdhY3lbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLXVuZGVybGluZVtfbmdjb250ZW50LSVDT01QJV17YmFja2dyb3VuZC1jb2xvcjpyZ2JhKDAsMCwwLC40Mil9Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtbGVnYWN5Lm1hdC1mb3JtLWZpZWxkLWRpc2FibGVkW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC11bmRlcmxpbmVbX25nY29udGVudC0lQ09NUCVde2JhY2tncm91bmQtaW1hZ2U6bGluZWFyLWdyYWRpZW50KHRvIHJpZ2h0LCByZ2JhKDAsIDAsIDAsIDAuNDIpIDAlLCByZ2JhKDAsIDAsIDAsIDAuNDIpIDMzJSwgdHJhbnNwYXJlbnQgMCUpO2JhY2tncm91bmQtc2l6ZTo0cHggMTAwJTtiYWNrZ3JvdW5kLXJlcGVhdDpyZXBlYXQteH0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1zdGFuZGFyZFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtdW5kZXJsaW5lW19uZ2NvbnRlbnQtJUNPTVAlXXtiYWNrZ3JvdW5kLWNvbG9yOnJnYmEoMCwwLDAsLjQyKX0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1zdGFuZGFyZC5tYXQtZm9ybS1maWVsZC1kaXNhYmxlZFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtdW5kZXJsaW5lW19uZ2NvbnRlbnQtJUNPTVAlXXtiYWNrZ3JvdW5kLWltYWdlOmxpbmVhci1ncmFkaWVudCh0byByaWdodCwgcmdiYSgwLCAwLCAwLCAwLjQyKSAwJSwgcmdiYSgwLCAwLCAwLCAwLjQyKSAzMyUsIHRyYW5zcGFyZW50IDAlKTtiYWNrZ3JvdW5kLXNpemU6NHB4IDEwMCU7YmFja2dyb3VuZC1yZXBlYXQ6cmVwZWF0LXh9Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtZmlsbFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtZmxleFtfbmdjb250ZW50LSVDT01QJV17YmFja2dyb3VuZC1jb2xvcjpyZ2JhKDAsMCwwLC4wNCl9Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtZmlsbC5tYXQtZm9ybS1maWVsZC1kaXNhYmxlZFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtZmxleFtfbmdjb250ZW50LSVDT01QJV17YmFja2dyb3VuZC1jb2xvcjpyZ2JhKDAsMCwwLC4wMil9Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtZmlsbFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtdW5kZXJsaW5lW19uZ2NvbnRlbnQtJUNPTVAlXTo6YmVmb3Jle2JhY2tncm91bmQtY29sb3I6cmdiYSgwLDAsMCwuNDIpfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWZpbGwubWF0LWZvcm0tZmllbGQtZGlzYWJsZWRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXtjb2xvcjojNzU3NTc1fS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWZpbGwubWF0LWZvcm0tZmllbGQtZGlzYWJsZWRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLXVuZGVybGluZVtfbmdjb250ZW50LSVDT01QJV06OmJlZm9yZXtiYWNrZ3JvdW5kLWNvbG9yOnRyYW5zcGFyZW50fS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLW91dGxpbmVbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLW91dGxpbmVbX25nY29udGVudC0lQ09NUCVde2NvbG9yOnJnYmEoMCwwLDAsLjEyKX0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1vdXRsaW5lW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1vdXRsaW5lLXRoaWNrW19uZ2NvbnRlbnQtJUNPTVAlXXtjb2xvcjpyZ2JhKDAsMCwwLC44Nyl9Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2Utb3V0bGluZS5tYXQtZm9jdXNlZFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtb3V0bGluZS10aGlja1tfbmdjb250ZW50LSVDT01QJV17Y29sb3I6I2Y1N2MwMH0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1vdXRsaW5lLm1hdC1mb2N1c2VkLm1hdC1hY2NlbnRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLW91dGxpbmUtdGhpY2tbX25nY29udGVudC0lQ09NUCVde2NvbG9yOiNmZjk4MDB9Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2Utb3V0bGluZS5tYXQtZm9jdXNlZC5tYXQtd2Fybltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtb3V0bGluZS10aGlja1tfbmdjb250ZW50LSVDT01QJV17Y29sb3I6I2Y0NDMzNn0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1vdXRsaW5lLm1hdC1mb3JtLWZpZWxkLWludmFsaWQubWF0LWZvcm0tZmllbGQtaW52YWxpZFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtb3V0bGluZS10aGlja1tfbmdjb250ZW50LSVDT01QJV17Y29sb3I6I2Y0NDMzNn0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1vdXRsaW5lLm1hdC1mb3JtLWZpZWxkLWRpc2FibGVkW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17Y29sb3I6Izc1NzU3NX0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1vdXRsaW5lLm1hdC1mb3JtLWZpZWxkLWRpc2FibGVkW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1vdXRsaW5lW19uZ2NvbnRlbnQtJUNPTVAlXXtjb2xvcjpyZ2JhKDAsMCwwLC4wNil9Lm1hdC1pY29uLm1hdC1wcmltYXJ5W19uZ2NvbnRlbnQtJUNPTVAlXXtjb2xvcjojZjU3YzAwfS5tYXQtaWNvbi5tYXQtYWNjZW50W19uZ2NvbnRlbnQtJUNPTVAlXXtjb2xvcjojZmY5ODAwfS5tYXQtaWNvbi5tYXQtd2Fybltfbmdjb250ZW50LSVDT01QJV17Y29sb3I6I2Y0NDMzNn0ubWF0LWZvcm0tZmllbGQtdHlwZS1tYXQtbmF0aXZlLXNlbGVjdFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtaW5maXhbX25nY29udGVudC0lQ09NUCVdOjphZnRlcntjb2xvcjojNjE2MTYxfS5tYXQtaW5wdXQtZWxlbWVudFtfbmdjb250ZW50LSVDT01QJV06ZGlzYWJsZWQsIC5tYXQtZm9ybS1maWVsZC10eXBlLW1hdC1uYXRpdmUtc2VsZWN0Lm1hdC1mb3JtLWZpZWxkLWRpc2FibGVkW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1pbmZpeFtfbmdjb250ZW50LSVDT01QJV06OmFmdGVye2NvbG9yOiM3NTc1NzV9Lm1hdC1pbnB1dC1lbGVtZW50W19uZ2NvbnRlbnQtJUNPTVAlXXtjYXJldC1jb2xvcjojZjU3YzAwfS5tYXQtaW5wdXQtZWxlbWVudFtfbmdjb250ZW50LSVDT01QJV06OnBsYWNlaG9sZGVye2NvbG9yOnJnYmEoOTcsOTcsOTcsLjQyKX0ubWF0LWlucHV0LWVsZW1lbnRbX25nY29udGVudC0lQ09NUCVdOjotbW96LXBsYWNlaG9sZGVye2NvbG9yOnJnYmEoOTcsOTcsOTcsLjQyKX0ubWF0LWlucHV0LWVsZW1lbnRbX25nY29udGVudC0lQ09NUCVdOjotd2Via2l0LWlucHV0LXBsYWNlaG9sZGVye2NvbG9yOnJnYmEoOTcsOTcsOTcsLjQyKX0ubWF0LWlucHV0LWVsZW1lbnRbX25nY29udGVudC0lQ09NUCVdOi1tcy1pbnB1dC1wbGFjZWhvbGRlcntjb2xvcjpyZ2JhKDk3LDk3LDk3LC40Mil9Lm1hdC1mb3JtLWZpZWxkLm1hdC1hY2NlbnRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pbnB1dC1lbGVtZW50W19uZ2NvbnRlbnQtJUNPTVAlXXtjYXJldC1jb2xvcjojZmY5ODAwfS5tYXQtZm9ybS1maWVsZC5tYXQtd2Fybltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWlucHV0LWVsZW1lbnRbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWZvcm0tZmllbGQtaW52YWxpZFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWlucHV0LWVsZW1lbnRbX25nY29udGVudC0lQ09NUCVde2NhcmV0LWNvbG9yOiNmNDQzMzZ9Lm1hdC1mb3JtLWZpZWxkLXR5cGUtbWF0LW5hdGl2ZS1zZWxlY3QubWF0LWZvcm0tZmllbGQtaW52YWxpZFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtaW5maXhbX25nY29udGVudC0lQ09NUCVdOjphZnRlcntjb2xvcjojZjQ0MzM2fS5tYXQtbGlzdC1iYXNlW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGlzdC1pdGVtW19uZ2NvbnRlbnQtJUNPTVAlXXtjb2xvcjojMjEyMTIxfS5tYXQtbGlzdC1iYXNlW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGlzdC1vcHRpb25bX25nY29udGVudC0lQ09NUCVde2NvbG9yOiMyMTIxMjF9Lm1hdC1saXN0LWJhc2VbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1zdWJoZWFkZXJbX25nY29udGVudC0lQ09NUCVde2NvbG9yOiM2MTYxNjF9Lm1hdC1saXN0LWl0ZW0tZGlzYWJsZWRbX25nY29udGVudC0lQ09NUCVde2JhY2tncm91bmQtY29sb3I6I2VlZX0ubWF0LWxpc3Qtb3B0aW9uW19uZ2NvbnRlbnQtJUNPTVAlXTpob3ZlciwgLm1hdC1saXN0LW9wdGlvbltfbmdjb250ZW50LSVDT01QJV06Zm9jdXMsIC5tYXQtbmF2LWxpc3RbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saXN0LWl0ZW1bX25nY29udGVudC0lQ09NUCVdOmhvdmVyLCAubWF0LW5hdi1saXN0W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGlzdC1pdGVtW19uZ2NvbnRlbnQtJUNPTVAlXTpmb2N1cywgLm1hdC1hY3Rpb24tbGlzdFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpc3QtaXRlbVtfbmdjb250ZW50LSVDT01QJV06aG92ZXIsIC5tYXQtYWN0aW9uLWxpc3RbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saXN0LWl0ZW1bX25nY29udGVudC0lQ09NUCVdOmZvY3Vze2JhY2tncm91bmQ6cmdiYSgwLDAsMCwuMDQpfS5tYXQtbGlzdC1zaW5nbGUtc2VsZWN0ZWQtb3B0aW9uW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1saXN0LXNpbmdsZS1zZWxlY3RlZC1vcHRpb25bX25nY29udGVudC0lQ09NUCVdOmhvdmVyLCAubWF0LWxpc3Qtc2luZ2xlLXNlbGVjdGVkLW9wdGlvbltfbmdjb250ZW50LSVDT01QJV06Zm9jdXN7YmFja2dyb3VuZDpyZ2JhKDAsMCwwLC4xMil9Lm1hdC1tZW51LXBhbmVsW19uZ2NvbnRlbnQtJUNPTVAlXXtiYWNrZ3JvdW5kOiNmZmZ9Lm1hdC1tZW51LXBhbmVsW19uZ2NvbnRlbnQtJUNPTVAlXTpub3QoW2NsYXNzKj1tYXQtZWxldmF0aW9uLXpdKXtib3gtc2hhZG93OjBweCAycHggNHB4IC0xcHggcmdiYSgwLCAwLCAwLCAwLjIpLDBweCA0cHggNXB4IDBweCByZ2JhKDAsIDAsIDAsIDAuMTQpLDBweCAxcHggMTBweCAwcHggcmdiYSgwLCAwLCAwLCAwLjEyKX0ubWF0LW1lbnUtaXRlbVtfbmdjb250ZW50LSVDT01QJV17YmFja2dyb3VuZDp0cmFuc3BhcmVudDtjb2xvcjojMjEyMTIxfS5tYXQtbWVudS1pdGVtW2Rpc2FibGVkXVtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtbWVudS1pdGVtW2Rpc2FibGVkXVtfbmdjb250ZW50LSVDT01QJV06OmFmdGVye2NvbG9yOnJnYmEoMCwwLDAsLjM4KX0ubWF0LW1lbnUtaXRlbVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWljb24tbm8tY29sb3JbX25nY29udGVudC0lQ09NUCVdLCAubWF0LW1lbnUtaXRlbS1zdWJtZW51LXRyaWdnZXJbX25nY29udGVudC0lQ09NUCVdOjphZnRlcntjb2xvcjpyZ2JhKDAsMCwwLC41NCl9Lm1hdC1tZW51LWl0ZW1bX25nY29udGVudC0lQ09NUCVdOmhvdmVyOm5vdChbZGlzYWJsZWRdKSwgLm1hdC1tZW51LWl0ZW0uY2RrLXByb2dyYW0tZm9jdXNlZFtfbmdjb250ZW50LSVDT01QJV06bm90KFtkaXNhYmxlZF0pLCAubWF0LW1lbnUtaXRlbS5jZGsta2V5Ym9hcmQtZm9jdXNlZFtfbmdjb250ZW50LSVDT01QJV06bm90KFtkaXNhYmxlZF0pLCAubWF0LW1lbnUtaXRlbS1oaWdobGlnaHRlZFtfbmdjb250ZW50LSVDT01QJV06bm90KFtkaXNhYmxlZF0pe2JhY2tncm91bmQ6cmdiYSgwLDAsMCwuMDQpfS5tYXQtcGFnaW5hdG9yW19uZ2NvbnRlbnQtJUNPTVAlXXtiYWNrZ3JvdW5kOiNmZmZ9Lm1hdC1wYWdpbmF0b3JbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXBhZ2luYXRvci1wYWdlLXNpemVbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1zZWxlY3QtdHJpZ2dlcltfbmdjb250ZW50LSVDT01QJV17Y29sb3I6IzYxNjE2MX0ubWF0LXBhZ2luYXRvci1kZWNyZW1lbnRbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXBhZ2luYXRvci1pbmNyZW1lbnRbX25nY29udGVudC0lQ09NUCVde2JvcmRlci10b3A6MnB4IHNvbGlkIHJnYmEoMCwwLDAsLjU0KTtib3JkZXItcmlnaHQ6MnB4IHNvbGlkIHJnYmEoMCwwLDAsLjU0KX0ubWF0LXBhZ2luYXRvci1maXJzdFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtcGFnaW5hdG9yLWxhc3RbX25nY29udGVudC0lQ09NUCVde2JvcmRlci10b3A6MnB4IHNvbGlkIHJnYmEoMCwwLDAsLjU0KX0ubWF0LWljb24tYnV0dG9uW2Rpc2FibGVkXVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXBhZ2luYXRvci1kZWNyZW1lbnRbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWljb24tYnV0dG9uW2Rpc2FibGVkXVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXBhZ2luYXRvci1pbmNyZW1lbnRbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWljb24tYnV0dG9uW2Rpc2FibGVkXVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXBhZ2luYXRvci1maXJzdFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtaWNvbi1idXR0b25bZGlzYWJsZWRdW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtcGFnaW5hdG9yLWxhc3RbX25nY29udGVudC0lQ09NUCVde2JvcmRlci1jb2xvcjpyZ2JhKDAsMCwwLC4zOCl9Lm1hdC1wYWdpbmF0b3ItY29udGFpbmVyW19uZ2NvbnRlbnQtJUNPTVAlXXttaW4taGVpZ2h0OjU2cHh9Lm1hdC1wcm9ncmVzcy1iYXItYmFja2dyb3VuZFtfbmdjb250ZW50LSVDT01QJV17ZmlsbDojZmY5ODAwfS5tYXQtcHJvZ3Jlc3MtYmFyLWJ1ZmZlcltfbmdjb250ZW50LSVDT01QJV17YmFja2dyb3VuZC1jb2xvcjojZmY5ODAwfS5tYXQtcHJvZ3Jlc3MtYmFyLWZpbGxbX25nY29udGVudC0lQ09NUCVdOjphZnRlcntiYWNrZ3JvdW5kLWNvbG9yOiNmNTdjMDB9Lm1hdC1wcm9ncmVzcy1iYXIubWF0LWFjY2VudFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXByb2dyZXNzLWJhci1iYWNrZ3JvdW5kW19uZ2NvbnRlbnQtJUNPTVAlXXtmaWxsOiNmZjk4MDB9Lm1hdC1wcm9ncmVzcy1iYXIubWF0LWFjY2VudFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXByb2dyZXNzLWJhci1idWZmZXJbX25nY29udGVudC0lQ09NUCVde2JhY2tncm91bmQtY29sb3I6I2ZmOTgwMH0ubWF0LXByb2dyZXNzLWJhci5tYXQtYWNjZW50W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtcHJvZ3Jlc3MtYmFyLWZpbGxbX25nY29udGVudC0lQ09NUCVdOjphZnRlcntiYWNrZ3JvdW5kLWNvbG9yOiNmZjk4MDB9Lm1hdC1wcm9ncmVzcy1iYXIubWF0LXdhcm5bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1wcm9ncmVzcy1iYXItYmFja2dyb3VuZFtfbmdjb250ZW50LSVDT01QJV17ZmlsbDojZmZjZGQyfS5tYXQtcHJvZ3Jlc3MtYmFyLm1hdC13YXJuW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtcHJvZ3Jlc3MtYmFyLWJ1ZmZlcltfbmdjb250ZW50LSVDT01QJV17YmFja2dyb3VuZC1jb2xvcjojZmZjZGQyfS5tYXQtcHJvZ3Jlc3MtYmFyLm1hdC13YXJuW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtcHJvZ3Jlc3MtYmFyLWZpbGxbX25nY29udGVudC0lQ09NUCVdOjphZnRlcntiYWNrZ3JvdW5kLWNvbG9yOiNmNDQzMzZ9Lm1hdC1wcm9ncmVzcy1zcGlubmVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIGNpcmNsZVtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtc3Bpbm5lcltfbmdjb250ZW50LSVDT01QJV0gICBjaXJjbGVbX25nY29udGVudC0lQ09NUCVde3N0cm9rZTojZjU3YzAwfS5tYXQtcHJvZ3Jlc3Mtc3Bpbm5lci5tYXQtYWNjZW50W19uZ2NvbnRlbnQtJUNPTVAlXSAgIGNpcmNsZVtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtc3Bpbm5lci5tYXQtYWNjZW50W19uZ2NvbnRlbnQtJUNPTVAlXSAgIGNpcmNsZVtfbmdjb250ZW50LSVDT01QJV17c3Ryb2tlOiNmZjk4MDB9Lm1hdC1wcm9ncmVzcy1zcGlubmVyLm1hdC13YXJuW19uZ2NvbnRlbnQtJUNPTVAlXSAgIGNpcmNsZVtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtc3Bpbm5lci5tYXQtd2Fybltfbmdjb250ZW50LSVDT01QJV0gICBjaXJjbGVbX25nY29udGVudC0lQ09NUCVde3N0cm9rZTojZjQ0MzM2fS5tYXQtcmFkaW8tb3V0ZXItY2lyY2xlW19uZ2NvbnRlbnQtJUNPTVAlXXtib3JkZXItY29sb3I6IzYxNjE2MX0ubWF0LXJhZGlvLWJ1dHRvbi5tYXQtcHJpbWFyeS5tYXQtcmFkaW8tY2hlY2tlZFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXJhZGlvLW91dGVyLWNpcmNsZVtfbmdjb250ZW50LSVDT01QJV17Ym9yZGVyLWNvbG9yOiNmNTdjMDB9Lm1hdC1yYWRpby1idXR0b24ubWF0LXByaW1hcnlbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1yYWRpby1pbm5lci1jaXJjbGVbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXJhZGlvLWJ1dHRvbi5tYXQtcHJpbWFyeVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXJhZGlvLXJpcHBsZVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXJpcHBsZS1lbGVtZW50W19uZ2NvbnRlbnQtJUNPTVAlXTpub3QoLm1hdC1yYWRpby1wZXJzaXN0ZW50LXJpcHBsZSksIC5tYXQtcmFkaW8tYnV0dG9uLm1hdC1wcmltYXJ5Lm1hdC1yYWRpby1jaGVja2VkW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtcmFkaW8tcGVyc2lzdGVudC1yaXBwbGVbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXJhZGlvLWJ1dHRvbi5tYXQtcHJpbWFyeVtfbmdjb250ZW50LSVDT01QJV06YWN0aXZlICAgLm1hdC1yYWRpby1wZXJzaXN0ZW50LXJpcHBsZVtfbmdjb250ZW50LSVDT01QJV17YmFja2dyb3VuZC1jb2xvcjojZjU3YzAwfS5tYXQtcmFkaW8tYnV0dG9uLm1hdC1hY2NlbnQubWF0LXJhZGlvLWNoZWNrZWRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1yYWRpby1vdXRlci1jaXJjbGVbX25nY29udGVudC0lQ09NUCVde2JvcmRlci1jb2xvcjojZmY5ODAwfS5tYXQtcmFkaW8tYnV0dG9uLm1hdC1hY2NlbnRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1yYWRpby1pbm5lci1jaXJjbGVbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXJhZGlvLWJ1dHRvbi5tYXQtYWNjZW50W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtcmFkaW8tcmlwcGxlW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtcmlwcGxlLWVsZW1lbnRbX25nY29udGVudC0lQ09NUCVdOm5vdCgubWF0LXJhZGlvLXBlcnNpc3RlbnQtcmlwcGxlKSwgLm1hdC1yYWRpby1idXR0b24ubWF0LWFjY2VudC5tYXQtcmFkaW8tY2hlY2tlZFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXJhZGlvLXBlcnNpc3RlbnQtcmlwcGxlW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1yYWRpby1idXR0b24ubWF0LWFjY2VudFtfbmdjb250ZW50LSVDT01QJV06YWN0aXZlICAgLm1hdC1yYWRpby1wZXJzaXN0ZW50LXJpcHBsZVtfbmdjb250ZW50LSVDT01QJV17YmFja2dyb3VuZC1jb2xvcjojZmY5ODAwfS5tYXQtcmFkaW8tYnV0dG9uLm1hdC13YXJuLm1hdC1yYWRpby1jaGVja2VkW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtcmFkaW8tb3V0ZXItY2lyY2xlW19uZ2NvbnRlbnQtJUNPTVAlXXtib3JkZXItY29sb3I6I2Y0NDMzNn0ubWF0LXJhZGlvLWJ1dHRvbi5tYXQtd2Fybltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXJhZGlvLWlubmVyLWNpcmNsZVtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtcmFkaW8tYnV0dG9uLm1hdC13YXJuW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtcmFkaW8tcmlwcGxlW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtcmlwcGxlLWVsZW1lbnRbX25nY29udGVudC0lQ09NUCVdOm5vdCgubWF0LXJhZGlvLXBlcnNpc3RlbnQtcmlwcGxlKSwgLm1hdC1yYWRpby1idXR0b24ubWF0LXdhcm4ubWF0LXJhZGlvLWNoZWNrZWRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1yYWRpby1wZXJzaXN0ZW50LXJpcHBsZVtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtcmFkaW8tYnV0dG9uLm1hdC13YXJuW19uZ2NvbnRlbnQtJUNPTVAlXTphY3RpdmUgICAubWF0LXJhZGlvLXBlcnNpc3RlbnQtcmlwcGxlW19uZ2NvbnRlbnQtJUNPTVAlXXtiYWNrZ3JvdW5kLWNvbG9yOiNmNDQzMzZ9Lm1hdC1yYWRpby1idXR0b24ubWF0LXJhZGlvLWRpc2FibGVkLm1hdC1yYWRpby1jaGVja2VkW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtcmFkaW8tb3V0ZXItY2lyY2xlW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1yYWRpby1idXR0b24ubWF0LXJhZGlvLWRpc2FibGVkW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtcmFkaW8tb3V0ZXItY2lyY2xlW19uZ2NvbnRlbnQtJUNPTVAlXXtib3JkZXItY29sb3I6cmdiYSgwLDAsMCwuMzgpfS5tYXQtcmFkaW8tYnV0dG9uLm1hdC1yYWRpby1kaXNhYmxlZFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXJhZGlvLXJpcHBsZVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXJpcHBsZS1lbGVtZW50W19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1yYWRpby1idXR0b24ubWF0LXJhZGlvLWRpc2FibGVkW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtcmFkaW8taW5uZXItY2lyY2xlW19uZ2NvbnRlbnQtJUNPTVAlXXtiYWNrZ3JvdW5kLWNvbG9yOnJnYmEoMCwwLDAsLjM4KX0ubWF0LXJhZGlvLWJ1dHRvbi5tYXQtcmFkaW8tZGlzYWJsZWRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1yYWRpby1sYWJlbC1jb250ZW50W19uZ2NvbnRlbnQtJUNPTVAlXXtjb2xvcjpyZ2JhKDAsMCwwLC4zOCl9Lm1hdC1yYWRpby1idXR0b25bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1yaXBwbGUtZWxlbWVudFtfbmdjb250ZW50LSVDT01QJV17YmFja2dyb3VuZC1jb2xvcjojMDAwfS5tYXQtc2VsZWN0LXZhbHVlW19uZ2NvbnRlbnQtJUNPTVAlXXtjb2xvcjojMjEyMTIxfS5tYXQtc2VsZWN0LXBsYWNlaG9sZGVyW19uZ2NvbnRlbnQtJUNPTVAlXXtjb2xvcjpyZ2JhKDk3LDk3LDk3LC40Mil9Lm1hdC1zZWxlY3QtZGlzYWJsZWRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1zZWxlY3QtdmFsdWVbX25nY29udGVudC0lQ09NUCVde2NvbG9yOiM3NTc1NzV9Lm1hdC1zZWxlY3QtYXJyb3dbX25nY29udGVudC0lQ09NUCVde2NvbG9yOiM2MTYxNjF9Lm1hdC1zZWxlY3QtcGFuZWxbX25nY29udGVudC0lQ09NUCVde2JhY2tncm91bmQ6I2ZmZn0ubWF0LXNlbGVjdC1wYW5lbFtfbmdjb250ZW50LSVDT01QJV06bm90KFtjbGFzcyo9bWF0LWVsZXZhdGlvbi16XSl7Ym94LXNoYWRvdzowcHggMnB4IDRweCAtMXB4IHJnYmEoMCwgMCwgMCwgMC4yKSwwcHggNHB4IDVweCAwcHggcmdiYSgwLCAwLCAwLCAwLjE0KSwwcHggMXB4IDEwcHggMHB4IHJnYmEoMCwgMCwgMCwgMC4xMil9Lm1hdC1zZWxlY3QtcGFuZWxbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1vcHRpb24ubWF0LXNlbGVjdGVkW19uZ2NvbnRlbnQtJUNPTVAlXTpub3QoLm1hdC1vcHRpb24tbXVsdGlwbGUpe2JhY2tncm91bmQ6cmdiYSgwLDAsMCwuMTIpfS5tYXQtZm9ybS1maWVsZC5tYXQtZm9jdXNlZC5tYXQtcHJpbWFyeVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXNlbGVjdC1hcnJvd1tfbmdjb250ZW50LSVDT01QJV17Y29sb3I6I2Y1N2MwMH0ubWF0LWZvcm0tZmllbGQubWF0LWZvY3VzZWQubWF0LWFjY2VudFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXNlbGVjdC1hcnJvd1tfbmdjb250ZW50LSVDT01QJV17Y29sb3I6I2ZmOTgwMH0ubWF0LWZvcm0tZmllbGQubWF0LWZvY3VzZWQubWF0LXdhcm5bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1zZWxlY3QtYXJyb3dbX25nY29udGVudC0lQ09NUCVde2NvbG9yOiNmNDQzMzZ9Lm1hdC1mb3JtLWZpZWxkW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtc2VsZWN0Lm1hdC1zZWxlY3QtaW52YWxpZFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXNlbGVjdC1hcnJvd1tfbmdjb250ZW50LSVDT01QJV17Y29sb3I6I2Y0NDMzNn0ubWF0LWZvcm0tZmllbGRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1zZWxlY3QubWF0LXNlbGVjdC1kaXNhYmxlZFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXNlbGVjdC1hcnJvd1tfbmdjb250ZW50LSVDT01QJV17Y29sb3I6Izc1NzU3NX0ubWF0LWRyYXdlci1jb250YWluZXJbX25nY29udGVudC0lQ09NUCVde2JhY2tncm91bmQtY29sb3I6I2ZhZmFmYTtjb2xvcjojMjEyMTIxfS5tYXQtZHJhd2VyW19uZ2NvbnRlbnQtJUNPTVAlXXtiYWNrZ3JvdW5kLWNvbG9yOiNmZmY7Y29sb3I6IzIxMjEyMX0ubWF0LWRyYXdlci5tYXQtZHJhd2VyLXB1c2hbX25nY29udGVudC0lQ09NUCVde2JhY2tncm91bmQtY29sb3I6I2ZmZn0ubWF0LWRyYXdlcltfbmdjb250ZW50LSVDT01QJV06bm90KC5tYXQtZHJhd2VyLXNpZGUpe2JveC1zaGFkb3c6MHB4IDhweCAxMHB4IC01cHggcmdiYSgwLCAwLCAwLCAwLjIpLDBweCAxNnB4IDI0cHggMnB4IHJnYmEoMCwgMCwgMCwgMC4xNCksMHB4IDZweCAzMHB4IDVweCByZ2JhKDAsIDAsIDAsIDAuMTIpfS5tYXQtZHJhd2VyLXNpZGVbX25nY29udGVudC0lQ09NUCVde2JvcmRlci1yaWdodDpzb2xpZCAxcHggcmdiYSgwLDAsMCwuMTIpfS5tYXQtZHJhd2VyLXNpZGUubWF0LWRyYXdlci1lbmRbX25nY29udGVudC0lQ09NUCVde2JvcmRlci1sZWZ0OnNvbGlkIDFweCByZ2JhKDAsMCwwLC4xMik7Ym9yZGVyLXJpZ2h0Om5vbmV9W2Rpcj1ydGxdW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZHJhd2VyLXNpZGVbX25nY29udGVudC0lQ09NUCVde2JvcmRlci1sZWZ0OnNvbGlkIDFweCByZ2JhKDAsMCwwLC4xMik7Ym9yZGVyLXJpZ2h0Om5vbmV9W2Rpcj1ydGxdW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZHJhd2VyLXNpZGUubWF0LWRyYXdlci1lbmRbX25nY29udGVudC0lQ09NUCVde2JvcmRlci1sZWZ0Om5vbmU7Ym9yZGVyLXJpZ2h0OnNvbGlkIDFweCByZ2JhKDAsMCwwLC4xMil9Lm1hdC1kcmF3ZXItYmFja2Ryb3AubWF0LWRyYXdlci1zaG93bltfbmdjb250ZW50LSVDT01QJV17YmFja2dyb3VuZC1jb2xvcjpyZ2JhKDAsMCwwLC42KX0ubWF0LXNsaWRlLXRvZ2dsZS5tYXQtY2hlY2tlZFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXNsaWRlLXRvZ2dsZS10aHVtYltfbmdjb250ZW50LSVDT01QJV17YmFja2dyb3VuZC1jb2xvcjojZmY5ODAwfS5tYXQtc2xpZGUtdG9nZ2xlLm1hdC1jaGVja2VkW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtc2xpZGUtdG9nZ2xlLWJhcltfbmdjb250ZW50LSVDT01QJV17YmFja2dyb3VuZC1jb2xvcjpyZ2JhKDI1NSwxNTIsMCwuNTQpfS5tYXQtc2xpZGUtdG9nZ2xlLm1hdC1jaGVja2VkW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtcmlwcGxlLWVsZW1lbnRbX25nY29udGVudC0lQ09NUCVde2JhY2tncm91bmQtY29sb3I6I2ZmOTgwMH0ubWF0LXNsaWRlLXRvZ2dsZS5tYXQtcHJpbWFyeS5tYXQtY2hlY2tlZFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXNsaWRlLXRvZ2dsZS10aHVtYltfbmdjb250ZW50LSVDT01QJV17YmFja2dyb3VuZC1jb2xvcjojZjU3YzAwfS5tYXQtc2xpZGUtdG9nZ2xlLm1hdC1wcmltYXJ5Lm1hdC1jaGVja2VkW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtc2xpZGUtdG9nZ2xlLWJhcltfbmdjb250ZW50LSVDT01QJV17YmFja2dyb3VuZC1jb2xvcjpyZ2JhKDI0NSwxMjQsMCwuNTQpfS5tYXQtc2xpZGUtdG9nZ2xlLm1hdC1wcmltYXJ5Lm1hdC1jaGVja2VkW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtcmlwcGxlLWVsZW1lbnRbX25nY29udGVudC0lQ09NUCVde2JhY2tncm91bmQtY29sb3I6I2Y1N2MwMH0ubWF0LXNsaWRlLXRvZ2dsZS5tYXQtd2Fybi5tYXQtY2hlY2tlZFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXNsaWRlLXRvZ2dsZS10aHVtYltfbmdjb250ZW50LSVDT01QJV17YmFja2dyb3VuZC1jb2xvcjojZjQ0MzM2fS5tYXQtc2xpZGUtdG9nZ2xlLm1hdC13YXJuLm1hdC1jaGVja2VkW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtc2xpZGUtdG9nZ2xlLWJhcltfbmdjb250ZW50LSVDT01QJV17YmFja2dyb3VuZC1jb2xvcjpyZ2JhKDI0NCw2Nyw1NCwuNTQpfS5tYXQtc2xpZGUtdG9nZ2xlLm1hdC13YXJuLm1hdC1jaGVja2VkW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtcmlwcGxlLWVsZW1lbnRbX25nY29udGVudC0lQ09NUCVde2JhY2tncm91bmQtY29sb3I6I2Y0NDMzNn0ubWF0LXNsaWRlLXRvZ2dsZVtfbmdjb250ZW50LSVDT01QJV06bm90KC5tYXQtY2hlY2tlZCkgICAubWF0LXJpcHBsZS1lbGVtZW50W19uZ2NvbnRlbnQtJUNPTVAlXXtiYWNrZ3JvdW5kLWNvbG9yOiMwMDB9Lm1hdC1zbGlkZS10b2dnbGUtdGh1bWJbX25nY29udGVudC0lQ09NUCVde2JveC1zaGFkb3c6MHB4IDJweCAxcHggLTFweCByZ2JhKDAsIDAsIDAsIDAuMiksMHB4IDFweCAxcHggMHB4IHJnYmEoMCwgMCwgMCwgMC4xNCksMHB4IDFweCAzcHggMHB4IHJnYmEoMCwgMCwgMCwgMC4xMik7YmFja2dyb3VuZC1jb2xvcjojZmFmYWZhfS5tYXQtc2xpZGUtdG9nZ2xlLWJhcltfbmdjb250ZW50LSVDT01QJV17YmFja2dyb3VuZC1jb2xvcjpyZ2JhKDAsMCwwLC4zOCl9Lm1hdC1zbGlkZXItdHJhY2stYmFja2dyb3VuZFtfbmdjb250ZW50LSVDT01QJV17YmFja2dyb3VuZC1jb2xvcjpyZ2JhKDAsMCwwLC4yNil9Lm1hdC1wcmltYXJ5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtc2xpZGVyLXRyYWNrLWZpbGxbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXByaW1hcnlbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1zbGlkZXItdGh1bWJbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXByaW1hcnlbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1zbGlkZXItdGh1bWItbGFiZWxbX25nY29udGVudC0lQ09NUCVde2JhY2tncm91bmQtY29sb3I6I2Y1N2MwMH0ubWF0LXByaW1hcnlbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1zbGlkZXItdGh1bWItbGFiZWwtdGV4dFtfbmdjb250ZW50LSVDT01QJV17Y29sb3I6I2ZmZn0ubWF0LXByaW1hcnlbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1zbGlkZXItZm9jdXMtcmluZ1tfbmdjb250ZW50LSVDT01QJV17YmFja2dyb3VuZC1jb2xvcjpyZ2JhKDI0NSwxMjQsMCwuMil9Lm1hdC1hY2NlbnRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1zbGlkZXItdHJhY2stZmlsbFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtYWNjZW50W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtc2xpZGVyLXRodW1iW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1hY2NlbnRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1zbGlkZXItdGh1bWItbGFiZWxbX25nY29udGVudC0lQ09NUCVde2JhY2tncm91bmQtY29sb3I6I2ZmOTgwMH0ubWF0LWFjY2VudFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXNsaWRlci10aHVtYi1sYWJlbC10ZXh0W19uZ2NvbnRlbnQtJUNPTVAlXXtjb2xvcjojZmZmfS5tYXQtYWNjZW50W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtc2xpZGVyLWZvY3VzLXJpbmdbX25nY29udGVudC0lQ09NUCVde2JhY2tncm91bmQtY29sb3I6cmdiYSgyNTUsMTUyLDAsLjIpfS5tYXQtd2Fybltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXNsaWRlci10cmFjay1maWxsW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC13YXJuW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtc2xpZGVyLXRodW1iW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC13YXJuW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtc2xpZGVyLXRodW1iLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXtiYWNrZ3JvdW5kLWNvbG9yOiNmNDQzMzZ9Lm1hdC13YXJuW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtc2xpZGVyLXRodW1iLWxhYmVsLXRleHRbX25nY29udGVudC0lQ09NUCVde2NvbG9yOiNmZmZ9Lm1hdC13YXJuW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtc2xpZGVyLWZvY3VzLXJpbmdbX25nY29udGVudC0lQ09NUCVde2JhY2tncm91bmQtY29sb3I6cmdiYSgyNDQsNjcsNTQsLjIpfS5tYXQtc2xpZGVyW19uZ2NvbnRlbnQtJUNPTVAlXTpob3ZlciAgIC5tYXQtc2xpZGVyLXRyYWNrLWJhY2tncm91bmRbX25nY29udGVudC0lQ09NUCVdLCAuY2RrLWZvY3VzZWRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1zbGlkZXItdHJhY2stYmFja2dyb3VuZFtfbmdjb250ZW50LSVDT01QJV17YmFja2dyb3VuZC1jb2xvcjpyZ2JhKDAsMCwwLC4zOCl9Lm1hdC1zbGlkZXItZGlzYWJsZWRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1zbGlkZXItdHJhY2stYmFja2dyb3VuZFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtc2xpZGVyLWRpc2FibGVkW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtc2xpZGVyLXRyYWNrLWZpbGxbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXNsaWRlci1kaXNhYmxlZFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXNsaWRlci10aHVtYltfbmdjb250ZW50LSVDT01QJV17YmFja2dyb3VuZC1jb2xvcjpyZ2JhKDAsMCwwLC4yNil9Lm1hdC1zbGlkZXItZGlzYWJsZWRbX25nY29udGVudC0lQ09NUCVdOmhvdmVyICAgLm1hdC1zbGlkZXItdHJhY2stYmFja2dyb3VuZFtfbmdjb250ZW50LSVDT01QJV17YmFja2dyb3VuZC1jb2xvcjpyZ2JhKDAsMCwwLC4yNil9Lm1hdC1zbGlkZXItbWluLXZhbHVlW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtc2xpZGVyLWZvY3VzLXJpbmdbX25nY29udGVudC0lQ09NUCVde2JhY2tncm91bmQtY29sb3I6cmdiYSgwLDAsMCwuMTIpfS5tYXQtc2xpZGVyLW1pbi12YWx1ZS5tYXQtc2xpZGVyLXRodW1iLWxhYmVsLXNob3dpbmdbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1zbGlkZXItdGh1bWJbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXNsaWRlci1taW4tdmFsdWUubWF0LXNsaWRlci10aHVtYi1sYWJlbC1zaG93aW5nW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtc2xpZGVyLXRodW1iLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXtiYWNrZ3JvdW5kLWNvbG9yOnJnYmEoMCwwLDAsLjg3KX0ubWF0LXNsaWRlci1taW4tdmFsdWUubWF0LXNsaWRlci10aHVtYi1sYWJlbC1zaG93aW5nLmNkay1mb2N1c2VkW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtc2xpZGVyLXRodW1iW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1zbGlkZXItbWluLXZhbHVlLm1hdC1zbGlkZXItdGh1bWItbGFiZWwtc2hvd2luZy5jZGstZm9jdXNlZFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXNsaWRlci10aHVtYi1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17YmFja2dyb3VuZC1jb2xvcjpyZ2JhKDAsMCwwLC4yNil9Lm1hdC1zbGlkZXItbWluLXZhbHVlW19uZ2NvbnRlbnQtJUNPTVAlXTpub3QoLm1hdC1zbGlkZXItdGh1bWItbGFiZWwtc2hvd2luZykgICAubWF0LXNsaWRlci10aHVtYltfbmdjb250ZW50LSVDT01QJV17Ym9yZGVyLWNvbG9yOnJnYmEoMCwwLDAsLjI2KTtiYWNrZ3JvdW5kLWNvbG9yOnRyYW5zcGFyZW50fS5tYXQtc2xpZGVyLW1pbi12YWx1ZVtfbmdjb250ZW50LSVDT01QJV06bm90KC5tYXQtc2xpZGVyLXRodW1iLWxhYmVsLXNob3dpbmcpOmhvdmVyICAgLm1hdC1zbGlkZXItdGh1bWJbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXNsaWRlci1taW4tdmFsdWVbX25nY29udGVudC0lQ09NUCVdOm5vdCgubWF0LXNsaWRlci10aHVtYi1sYWJlbC1zaG93aW5nKS5jZGstZm9jdXNlZCAgIC5tYXQtc2xpZGVyLXRodW1iW19uZ2NvbnRlbnQtJUNPTVAlXXtib3JkZXItY29sb3I6cmdiYSgwLDAsMCwuMzgpfS5tYXQtc2xpZGVyLW1pbi12YWx1ZVtfbmdjb250ZW50LSVDT01QJV06bm90KC5tYXQtc2xpZGVyLXRodW1iLWxhYmVsLXNob3dpbmcpOmhvdmVyLm1hdC1zbGlkZXItZGlzYWJsZWQgICAubWF0LXNsaWRlci10aHVtYltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtc2xpZGVyLW1pbi12YWx1ZVtfbmdjb250ZW50LSVDT01QJV06bm90KC5tYXQtc2xpZGVyLXRodW1iLWxhYmVsLXNob3dpbmcpLmNkay1mb2N1c2VkLm1hdC1zbGlkZXItZGlzYWJsZWQgICAubWF0LXNsaWRlci10aHVtYltfbmdjb250ZW50LSVDT01QJV17Ym9yZGVyLWNvbG9yOnJnYmEoMCwwLDAsLjI2KX0ubWF0LXNsaWRlci1oYXMtdGlja3NbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1zbGlkZXItd3JhcHBlcltfbmdjb250ZW50LSVDT01QJV06OmFmdGVye2JvcmRlci1jb2xvcjpyZ2JhKDAsMCwwLC43KX0ubWF0LXNsaWRlci1ob3Jpem9udGFsW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtc2xpZGVyLXRpY2tzW19uZ2NvbnRlbnQtJUNPTVAlXXtiYWNrZ3JvdW5kLWltYWdlOnJlcGVhdGluZy1saW5lYXItZ3JhZGllbnQodG8gcmlnaHQsIHJnYmEoMCwgMCwgMCwgMC43KSwgcmdiYSgwLCAwLCAwLCAwLjcpIDJweCwgdHJhbnNwYXJlbnQgMCwgdHJhbnNwYXJlbnQpO2JhY2tncm91bmQtaW1hZ2U6LW1vei1yZXBlYXRpbmctbGluZWFyLWdyYWRpZW50KDAuMDAwMWRlZywgcmdiYSgwLCAwLCAwLCAwLjcpLCByZ2JhKDAsIDAsIDAsIDAuNykgMnB4LCB0cmFuc3BhcmVudCAwLCB0cmFuc3BhcmVudCl9Lm1hdC1zbGlkZXItdmVydGljYWxbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1zbGlkZXItdGlja3NbX25nY29udGVudC0lQ09NUCVde2JhY2tncm91bmQtaW1hZ2U6cmVwZWF0aW5nLWxpbmVhci1ncmFkaWVudCh0byBib3R0b20sIHJnYmEoMCwgMCwgMCwgMC43KSwgcmdiYSgwLCAwLCAwLCAwLjcpIDJweCwgdHJhbnNwYXJlbnQgMCwgdHJhbnNwYXJlbnQpfS5tYXQtc3RlcC1oZWFkZXIuY2RrLWtleWJvYXJkLWZvY3VzZWRbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXN0ZXAtaGVhZGVyLmNkay1wcm9ncmFtLWZvY3VzZWRbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXN0ZXAtaGVhZGVyW19uZ2NvbnRlbnQtJUNPTVAlXTpob3ZlcntiYWNrZ3JvdW5kLWNvbG9yOnJnYmEoMCwwLDAsLjA0KX1AbWVkaWEoaG92ZXI6IG5vbmUpey5tYXQtc3RlcC1oZWFkZXJbX25nY29udGVudC0lQ09NUCVdOmhvdmVye2JhY2tncm91bmQ6bm9uZX19Lm1hdC1zdGVwLWhlYWRlcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXN0ZXAtbGFiZWxbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXN0ZXAtaGVhZGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtc3RlcC1vcHRpb25hbFtfbmdjb250ZW50LSVDT01QJV17Y29sb3I6IzYxNjE2MX0ubWF0LXN0ZXAtaGVhZGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtc3RlcC1pY29uW19uZ2NvbnRlbnQtJUNPTVAlXXtiYWNrZ3JvdW5kLWNvbG9yOiM2MTYxNjE7Y29sb3I6I2ZmZn0ubWF0LXN0ZXAtaGVhZGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtc3RlcC1pY29uLXNlbGVjdGVkW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1zdGVwLWhlYWRlcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXN0ZXAtaWNvbi1zdGF0ZS1kb25lW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1zdGVwLWhlYWRlcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXN0ZXAtaWNvbi1zdGF0ZS1lZGl0W19uZ2NvbnRlbnQtJUNPTVAlXXtiYWNrZ3JvdW5kLWNvbG9yOiNmNTdjMDA7Y29sb3I6I2ZmZn0ubWF0LXN0ZXAtaGVhZGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtc3RlcC1pY29uLXN0YXRlLWVycm9yW19uZ2NvbnRlbnQtJUNPTVAlXXtiYWNrZ3JvdW5kLWNvbG9yOnRyYW5zcGFyZW50O2NvbG9yOiNmNDQzMzZ9Lm1hdC1zdGVwLWhlYWRlcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXN0ZXAtbGFiZWwubWF0LXN0ZXAtbGFiZWwtYWN0aXZlW19uZ2NvbnRlbnQtJUNPTVAlXXtjb2xvcjojMjEyMTIxfS5tYXQtc3RlcC1oZWFkZXJbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1zdGVwLWxhYmVsLm1hdC1zdGVwLWxhYmVsLWVycm9yW19uZ2NvbnRlbnQtJUNPTVAlXXtjb2xvcjojZjQ0MzM2fS5tYXQtc3RlcHBlci1ob3Jpem9udGFsW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1zdGVwcGVyLXZlcnRpY2FsW19uZ2NvbnRlbnQtJUNPTVAlXXtiYWNrZ3JvdW5kLWNvbG9yOiNmZmZ9Lm1hdC1zdGVwcGVyLXZlcnRpY2FsLWxpbmVbX25nY29udGVudC0lQ09NUCVdOjpiZWZvcmV7Ym9yZGVyLWxlZnQtY29sb3I6cmdiYSgwLDAsMCwuMTIpfS5tYXQtaG9yaXpvbnRhbC1zdGVwcGVyLWhlYWRlcltfbmdjb250ZW50LSVDT01QJV06OmJlZm9yZSwgLm1hdC1ob3Jpem9udGFsLXN0ZXBwZXItaGVhZGVyW19uZ2NvbnRlbnQtJUNPTVAlXTo6YWZ0ZXIsIC5tYXQtc3RlcHBlci1ob3Jpem9udGFsLWxpbmVbX25nY29udGVudC0lQ09NUCVde2JvcmRlci10b3AtY29sb3I6cmdiYSgwLDAsMCwuMTIpfS5tYXQtaG9yaXpvbnRhbC1zdGVwcGVyLWhlYWRlcltfbmdjb250ZW50LSVDT01QJV17aGVpZ2h0OjcycHh9Lm1hdC1zdGVwcGVyLWxhYmVsLXBvc2l0aW9uLWJvdHRvbVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWhvcml6b250YWwtc3RlcHBlci1oZWFkZXJbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXZlcnRpY2FsLXN0ZXBwZXItaGVhZGVyW19uZ2NvbnRlbnQtJUNPTVAlXXtwYWRkaW5nOjI0cHggMjRweH0ubWF0LXN0ZXBwZXItdmVydGljYWwtbGluZVtfbmdjb250ZW50LSVDT01QJV06OmJlZm9yZXt0b3A6LTE2cHg7Ym90dG9tOi0xNnB4fS5tYXQtc3RlcHBlci1sYWJlbC1wb3NpdGlvbi1ib3R0b21bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1ob3Jpem9udGFsLXN0ZXBwZXItaGVhZGVyW19uZ2NvbnRlbnQtJUNPTVAlXTo6YWZ0ZXIsIC5tYXQtc3RlcHBlci1sYWJlbC1wb3NpdGlvbi1ib3R0b21bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1ob3Jpem9udGFsLXN0ZXBwZXItaGVhZGVyW19uZ2NvbnRlbnQtJUNPTVAlXTo6YmVmb3Jle3RvcDozNnB4fS5tYXQtc3RlcHBlci1sYWJlbC1wb3NpdGlvbi1ib3R0b21bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1zdGVwcGVyLWhvcml6b250YWwtbGluZVtfbmdjb250ZW50LSVDT01QJV17dG9wOjM2cHh9Lm1hdC1zb3J0LWhlYWRlci1hcnJvd1tfbmdjb250ZW50LSVDT01QJV17Y29sb3I6IzYxNjE2MX0ubWF0LXRhYi1uYXYtYmFyW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10YWItaGVhZGVyW19uZ2NvbnRlbnQtJUNPTVAlXXtib3JkZXItYm90dG9tOjFweCBzb2xpZCByZ2JhKDAsMCwwLC4xMil9Lm1hdC10YWItZ3JvdXAtaW52ZXJ0ZWQtaGVhZGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtdGFiLW5hdi1iYXJbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXRhYi1ncm91cC1pbnZlcnRlZC1oZWFkZXJbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC10YWItaGVhZGVyW19uZ2NvbnRlbnQtJUNPTVAlXXtib3JkZXItdG9wOjFweCBzb2xpZCByZ2JhKDAsMCwwLC4xMik7Ym9yZGVyLWJvdHRvbTpub25lfS5tYXQtdGFiLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10YWItbGlua1tfbmdjb250ZW50LSVDT01QJV17Y29sb3I6IzIxMjEyMX0ubWF0LXRhYi1sYWJlbC5tYXQtdGFiLWRpc2FibGVkW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10YWItbGluay5tYXQtdGFiLWRpc2FibGVkW19uZ2NvbnRlbnQtJUNPTVAlXXtjb2xvcjojNzU3NTc1fS5tYXQtdGFiLWhlYWRlci1wYWdpbmF0aW9uLWNoZXZyb25bX25nY29udGVudC0lQ09NUCVde2JvcmRlci1jb2xvcjojMjEyMTIxfS5tYXQtdGFiLWhlYWRlci1wYWdpbmF0aW9uLWRpc2FibGVkW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtdGFiLWhlYWRlci1wYWdpbmF0aW9uLWNoZXZyb25bX25nY29udGVudC0lQ09NUCVde2JvcmRlci1jb2xvcjojNzU3NTc1fS5tYXQtdGFiLWdyb3VwW2NsYXNzKj1tYXQtYmFja2dyb3VuZC1dW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtdGFiLWhlYWRlcltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdGFiLW5hdi1iYXJbY2xhc3MqPW1hdC1iYWNrZ3JvdW5kLV1bX25nY29udGVudC0lQ09NUCVde2JvcmRlci1ib3R0b206bm9uZTtib3JkZXItdG9wOm5vbmV9Lm1hdC10YWItZ3JvdXAubWF0LXByaW1hcnlbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC10YWItbGFiZWwuY2RrLWtleWJvYXJkLWZvY3VzZWRbX25nY29udGVudC0lQ09NUCVdOm5vdCgubWF0LXRhYi1kaXNhYmxlZCksIC5tYXQtdGFiLWdyb3VwLm1hdC1wcmltYXJ5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtdGFiLWxhYmVsLmNkay1wcm9ncmFtLWZvY3VzZWRbX25nY29udGVudC0lQ09NUCVdOm5vdCgubWF0LXRhYi1kaXNhYmxlZCksIC5tYXQtdGFiLWdyb3VwLm1hdC1wcmltYXJ5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtdGFiLWxpbmsuY2RrLWtleWJvYXJkLWZvY3VzZWRbX25nY29udGVudC0lQ09NUCVdOm5vdCgubWF0LXRhYi1kaXNhYmxlZCksIC5tYXQtdGFiLWdyb3VwLm1hdC1wcmltYXJ5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtdGFiLWxpbmsuY2RrLXByb2dyYW0tZm9jdXNlZFtfbmdjb250ZW50LSVDT01QJV06bm90KC5tYXQtdGFiLWRpc2FibGVkKSwgLm1hdC10YWItbmF2LWJhci5tYXQtcHJpbWFyeVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXRhYi1sYWJlbC5jZGsta2V5Ym9hcmQtZm9jdXNlZFtfbmdjb250ZW50LSVDT01QJV06bm90KC5tYXQtdGFiLWRpc2FibGVkKSwgLm1hdC10YWItbmF2LWJhci5tYXQtcHJpbWFyeVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXRhYi1sYWJlbC5jZGstcHJvZ3JhbS1mb2N1c2VkW19uZ2NvbnRlbnQtJUNPTVAlXTpub3QoLm1hdC10YWItZGlzYWJsZWQpLCAubWF0LXRhYi1uYXYtYmFyLm1hdC1wcmltYXJ5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtdGFiLWxpbmsuY2RrLWtleWJvYXJkLWZvY3VzZWRbX25nY29udGVudC0lQ09NUCVdOm5vdCgubWF0LXRhYi1kaXNhYmxlZCksIC5tYXQtdGFiLW5hdi1iYXIubWF0LXByaW1hcnlbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC10YWItbGluay5jZGstcHJvZ3JhbS1mb2N1c2VkW19uZ2NvbnRlbnQtJUNPTVAlXTpub3QoLm1hdC10YWItZGlzYWJsZWQpe2JhY2tncm91bmQtY29sb3I6cmdiYSgyNTUsMTUyLDAsLjMpfS5tYXQtdGFiLWdyb3VwLm1hdC1wcmltYXJ5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaW5rLWJhcltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdGFiLW5hdi1iYXIubWF0LXByaW1hcnlbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pbmstYmFyW19uZ2NvbnRlbnQtJUNPTVAlXXtiYWNrZ3JvdW5kLWNvbG9yOiNmNTdjMDB9Lm1hdC10YWItZ3JvdXAubWF0LXByaW1hcnkubWF0LWJhY2tncm91bmQtcHJpbWFyeVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWluay1iYXJbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXRhYi1uYXYtYmFyLm1hdC1wcmltYXJ5Lm1hdC1iYWNrZ3JvdW5kLXByaW1hcnlbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pbmstYmFyW19uZ2NvbnRlbnQtJUNPTVAlXXtiYWNrZ3JvdW5kLWNvbG9yOiNmZmZ9Lm1hdC10YWItZ3JvdXAubWF0LWFjY2VudFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXRhYi1sYWJlbC5jZGsta2V5Ym9hcmQtZm9jdXNlZFtfbmdjb250ZW50LSVDT01QJV06bm90KC5tYXQtdGFiLWRpc2FibGVkKSwgLm1hdC10YWItZ3JvdXAubWF0LWFjY2VudFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXRhYi1sYWJlbC5jZGstcHJvZ3JhbS1mb2N1c2VkW19uZ2NvbnRlbnQtJUNPTVAlXTpub3QoLm1hdC10YWItZGlzYWJsZWQpLCAubWF0LXRhYi1ncm91cC5tYXQtYWNjZW50W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtdGFiLWxpbmsuY2RrLWtleWJvYXJkLWZvY3VzZWRbX25nY29udGVudC0lQ09NUCVdOm5vdCgubWF0LXRhYi1kaXNhYmxlZCksIC5tYXQtdGFiLWdyb3VwLm1hdC1hY2NlbnRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC10YWItbGluay5jZGstcHJvZ3JhbS1mb2N1c2VkW19uZ2NvbnRlbnQtJUNPTVAlXTpub3QoLm1hdC10YWItZGlzYWJsZWQpLCAubWF0LXRhYi1uYXYtYmFyLm1hdC1hY2NlbnRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC10YWItbGFiZWwuY2RrLWtleWJvYXJkLWZvY3VzZWRbX25nY29udGVudC0lQ09NUCVdOm5vdCgubWF0LXRhYi1kaXNhYmxlZCksIC5tYXQtdGFiLW5hdi1iYXIubWF0LWFjY2VudFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXRhYi1sYWJlbC5jZGstcHJvZ3JhbS1mb2N1c2VkW19uZ2NvbnRlbnQtJUNPTVAlXTpub3QoLm1hdC10YWItZGlzYWJsZWQpLCAubWF0LXRhYi1uYXYtYmFyLm1hdC1hY2NlbnRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC10YWItbGluay5jZGsta2V5Ym9hcmQtZm9jdXNlZFtfbmdjb250ZW50LSVDT01QJV06bm90KC5tYXQtdGFiLWRpc2FibGVkKSwgLm1hdC10YWItbmF2LWJhci5tYXQtYWNjZW50W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtdGFiLWxpbmsuY2RrLXByb2dyYW0tZm9jdXNlZFtfbmdjb250ZW50LSVDT01QJV06bm90KC5tYXQtdGFiLWRpc2FibGVkKXtiYWNrZ3JvdW5kLWNvbG9yOnJnYmEoMjU1LDE1MiwwLC4zKX0ubWF0LXRhYi1ncm91cC5tYXQtYWNjZW50W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaW5rLWJhcltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdGFiLW5hdi1iYXIubWF0LWFjY2VudFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWluay1iYXJbX25nY29udGVudC0lQ09NUCVde2JhY2tncm91bmQtY29sb3I6I2ZmOTgwMH0ubWF0LXRhYi1ncm91cC5tYXQtYWNjZW50Lm1hdC1iYWNrZ3JvdW5kLWFjY2VudFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWluay1iYXJbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXRhYi1uYXYtYmFyLm1hdC1hY2NlbnQubWF0LWJhY2tncm91bmQtYWNjZW50W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaW5rLWJhcltfbmdjb250ZW50LSVDT01QJV17YmFja2dyb3VuZC1jb2xvcjojZmZmfS5tYXQtdGFiLWdyb3VwLm1hdC13YXJuW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtdGFiLWxhYmVsLmNkay1rZXlib2FyZC1mb2N1c2VkW19uZ2NvbnRlbnQtJUNPTVAlXTpub3QoLm1hdC10YWItZGlzYWJsZWQpLCAubWF0LXRhYi1ncm91cC5tYXQtd2Fybltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXRhYi1sYWJlbC5jZGstcHJvZ3JhbS1mb2N1c2VkW19uZ2NvbnRlbnQtJUNPTVAlXTpub3QoLm1hdC10YWItZGlzYWJsZWQpLCAubWF0LXRhYi1ncm91cC5tYXQtd2Fybltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXRhYi1saW5rLmNkay1rZXlib2FyZC1mb2N1c2VkW19uZ2NvbnRlbnQtJUNPTVAlXTpub3QoLm1hdC10YWItZGlzYWJsZWQpLCAubWF0LXRhYi1ncm91cC5tYXQtd2Fybltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXRhYi1saW5rLmNkay1wcm9ncmFtLWZvY3VzZWRbX25nY29udGVudC0lQ09NUCVdOm5vdCgubWF0LXRhYi1kaXNhYmxlZCksIC5tYXQtdGFiLW5hdi1iYXIubWF0LXdhcm5bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC10YWItbGFiZWwuY2RrLWtleWJvYXJkLWZvY3VzZWRbX25nY29udGVudC0lQ09NUCVdOm5vdCgubWF0LXRhYi1kaXNhYmxlZCksIC5tYXQtdGFiLW5hdi1iYXIubWF0LXdhcm5bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC10YWItbGFiZWwuY2RrLXByb2dyYW0tZm9jdXNlZFtfbmdjb250ZW50LSVDT01QJV06bm90KC5tYXQtdGFiLWRpc2FibGVkKSwgLm1hdC10YWItbmF2LWJhci5tYXQtd2Fybltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXRhYi1saW5rLmNkay1rZXlib2FyZC1mb2N1c2VkW19uZ2NvbnRlbnQtJUNPTVAlXTpub3QoLm1hdC10YWItZGlzYWJsZWQpLCAubWF0LXRhYi1uYXYtYmFyLm1hdC13YXJuW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtdGFiLWxpbmsuY2RrLXByb2dyYW0tZm9jdXNlZFtfbmdjb250ZW50LSVDT01QJV06bm90KC5tYXQtdGFiLWRpc2FibGVkKXtiYWNrZ3JvdW5kLWNvbG9yOnJnYmEoMjU1LDIwNSwyMTAsLjMpfS5tYXQtdGFiLWdyb3VwLm1hdC13YXJuW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaW5rLWJhcltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdGFiLW5hdi1iYXIubWF0LXdhcm5bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pbmstYmFyW19uZ2NvbnRlbnQtJUNPTVAlXXtiYWNrZ3JvdW5kLWNvbG9yOiNmNDQzMzZ9Lm1hdC10YWItZ3JvdXAubWF0LXdhcm4ubWF0LWJhY2tncm91bmQtd2Fybltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWluay1iYXJbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXRhYi1uYXYtYmFyLm1hdC13YXJuLm1hdC1iYWNrZ3JvdW5kLXdhcm5bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pbmstYmFyW19uZ2NvbnRlbnQtJUNPTVAlXXtiYWNrZ3JvdW5kLWNvbG9yOiNmZmZ9Lm1hdC10YWItZ3JvdXAubWF0LWJhY2tncm91bmQtcHJpbWFyeVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXRhYi1sYWJlbC5jZGsta2V5Ym9hcmQtZm9jdXNlZFtfbmdjb250ZW50LSVDT01QJV06bm90KC5tYXQtdGFiLWRpc2FibGVkKSwgLm1hdC10YWItZ3JvdXAubWF0LWJhY2tncm91bmQtcHJpbWFyeVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXRhYi1sYWJlbC5jZGstcHJvZ3JhbS1mb2N1c2VkW19uZ2NvbnRlbnQtJUNPTVAlXTpub3QoLm1hdC10YWItZGlzYWJsZWQpLCAubWF0LXRhYi1ncm91cC5tYXQtYmFja2dyb3VuZC1wcmltYXJ5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtdGFiLWxpbmsuY2RrLWtleWJvYXJkLWZvY3VzZWRbX25nY29udGVudC0lQ09NUCVdOm5vdCgubWF0LXRhYi1kaXNhYmxlZCksIC5tYXQtdGFiLWdyb3VwLm1hdC1iYWNrZ3JvdW5kLXByaW1hcnlbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC10YWItbGluay5jZGstcHJvZ3JhbS1mb2N1c2VkW19uZ2NvbnRlbnQtJUNPTVAlXTpub3QoLm1hdC10YWItZGlzYWJsZWQpLCAubWF0LXRhYi1uYXYtYmFyLm1hdC1iYWNrZ3JvdW5kLXByaW1hcnlbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC10YWItbGFiZWwuY2RrLWtleWJvYXJkLWZvY3VzZWRbX25nY29udGVudC0lQ09NUCVdOm5vdCgubWF0LXRhYi1kaXNhYmxlZCksIC5tYXQtdGFiLW5hdi1iYXIubWF0LWJhY2tncm91bmQtcHJpbWFyeVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXRhYi1sYWJlbC5jZGstcHJvZ3JhbS1mb2N1c2VkW19uZ2NvbnRlbnQtJUNPTVAlXTpub3QoLm1hdC10YWItZGlzYWJsZWQpLCAubWF0LXRhYi1uYXYtYmFyLm1hdC1iYWNrZ3JvdW5kLXByaW1hcnlbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC10YWItbGluay5jZGsta2V5Ym9hcmQtZm9jdXNlZFtfbmdjb250ZW50LSVDT01QJV06bm90KC5tYXQtdGFiLWRpc2FibGVkKSwgLm1hdC10YWItbmF2LWJhci5tYXQtYmFja2dyb3VuZC1wcmltYXJ5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtdGFiLWxpbmsuY2RrLXByb2dyYW0tZm9jdXNlZFtfbmdjb250ZW50LSVDT01QJV06bm90KC5tYXQtdGFiLWRpc2FibGVkKXtiYWNrZ3JvdW5kLWNvbG9yOnJnYmEoMjU1LDE1MiwwLC4zKX0ubWF0LXRhYi1ncm91cC5tYXQtYmFja2dyb3VuZC1wcmltYXJ5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtdGFiLWhlYWRlcltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdGFiLWdyb3VwLm1hdC1iYWNrZ3JvdW5kLXByaW1hcnlbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC10YWItbGlua3NbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXRhYi1ncm91cC5tYXQtYmFja2dyb3VuZC1wcmltYXJ5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtdGFiLWhlYWRlci1wYWdpbmF0aW9uW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10YWItbmF2LWJhci5tYXQtYmFja2dyb3VuZC1wcmltYXJ5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtdGFiLWhlYWRlcltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdGFiLW5hdi1iYXIubWF0LWJhY2tncm91bmQtcHJpbWFyeVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXRhYi1saW5rc1tfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdGFiLW5hdi1iYXIubWF0LWJhY2tncm91bmQtcHJpbWFyeVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXRhYi1oZWFkZXItcGFnaW5hdGlvbltfbmdjb250ZW50LSVDT01QJV17YmFja2dyb3VuZC1jb2xvcjojZjU3YzAwfS5tYXQtdGFiLWdyb3VwLm1hdC1iYWNrZ3JvdW5kLXByaW1hcnlbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC10YWItbGFiZWxbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXRhYi1ncm91cC5tYXQtYmFja2dyb3VuZC1wcmltYXJ5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtdGFiLWxpbmtbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXRhYi1uYXYtYmFyLm1hdC1iYWNrZ3JvdW5kLXByaW1hcnlbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC10YWItbGFiZWxbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXRhYi1uYXYtYmFyLm1hdC1iYWNrZ3JvdW5kLXByaW1hcnlbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC10YWItbGlua1tfbmdjb250ZW50LSVDT01QJV17Y29sb3I6I2ZmZn0ubWF0LXRhYi1ncm91cC5tYXQtYmFja2dyb3VuZC1wcmltYXJ5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtdGFiLWxhYmVsLm1hdC10YWItZGlzYWJsZWRbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXRhYi1ncm91cC5tYXQtYmFja2dyb3VuZC1wcmltYXJ5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtdGFiLWxpbmsubWF0LXRhYi1kaXNhYmxlZFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdGFiLW5hdi1iYXIubWF0LWJhY2tncm91bmQtcHJpbWFyeVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXRhYi1sYWJlbC5tYXQtdGFiLWRpc2FibGVkW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10YWItbmF2LWJhci5tYXQtYmFja2dyb3VuZC1wcmltYXJ5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtdGFiLWxpbmsubWF0LXRhYi1kaXNhYmxlZFtfbmdjb250ZW50LSVDT01QJV17Y29sb3I6cmdiYSgyNTUsMjU1LDI1NSwuNCl9Lm1hdC10YWItZ3JvdXAubWF0LWJhY2tncm91bmQtcHJpbWFyeVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXRhYi1oZWFkZXItcGFnaW5hdGlvbi1jaGV2cm9uW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10YWItbmF2LWJhci5tYXQtYmFja2dyb3VuZC1wcmltYXJ5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtdGFiLWhlYWRlci1wYWdpbmF0aW9uLWNoZXZyb25bX25nY29udGVudC0lQ09NUCVde2JvcmRlci1jb2xvcjojZmZmfS5tYXQtdGFiLWdyb3VwLm1hdC1iYWNrZ3JvdW5kLXByaW1hcnlbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC10YWItaGVhZGVyLXBhZ2luYXRpb24tZGlzYWJsZWRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC10YWItaGVhZGVyLXBhZ2luYXRpb24tY2hldnJvbltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdGFiLW5hdi1iYXIubWF0LWJhY2tncm91bmQtcHJpbWFyeVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXRhYi1oZWFkZXItcGFnaW5hdGlvbi1kaXNhYmxlZFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXRhYi1oZWFkZXItcGFnaW5hdGlvbi1jaGV2cm9uW19uZ2NvbnRlbnQtJUNPTVAlXXtib3JkZXItY29sb3I6cmdiYSgyNTUsMjU1LDI1NSwuNCl9Lm1hdC10YWItZ3JvdXAubWF0LWJhY2tncm91bmQtcHJpbWFyeVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXJpcHBsZS1lbGVtZW50W19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10YWItbmF2LWJhci5tYXQtYmFja2dyb3VuZC1wcmltYXJ5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtcmlwcGxlLWVsZW1lbnRbX25nY29udGVudC0lQ09NUCVde2JhY2tncm91bmQtY29sb3I6cmdiYSgyNTUsMjU1LDI1NSwuMTIpfS5tYXQtdGFiLWdyb3VwLm1hdC1iYWNrZ3JvdW5kLWFjY2VudFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXRhYi1sYWJlbC5jZGsta2V5Ym9hcmQtZm9jdXNlZFtfbmdjb250ZW50LSVDT01QJV06bm90KC5tYXQtdGFiLWRpc2FibGVkKSwgLm1hdC10YWItZ3JvdXAubWF0LWJhY2tncm91bmQtYWNjZW50W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtdGFiLWxhYmVsLmNkay1wcm9ncmFtLWZvY3VzZWRbX25nY29udGVudC0lQ09NUCVdOm5vdCgubWF0LXRhYi1kaXNhYmxlZCksIC5tYXQtdGFiLWdyb3VwLm1hdC1iYWNrZ3JvdW5kLWFjY2VudFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXRhYi1saW5rLmNkay1rZXlib2FyZC1mb2N1c2VkW19uZ2NvbnRlbnQtJUNPTVAlXTpub3QoLm1hdC10YWItZGlzYWJsZWQpLCAubWF0LXRhYi1ncm91cC5tYXQtYmFja2dyb3VuZC1hY2NlbnRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC10YWItbGluay5jZGstcHJvZ3JhbS1mb2N1c2VkW19uZ2NvbnRlbnQtJUNPTVAlXTpub3QoLm1hdC10YWItZGlzYWJsZWQpLCAubWF0LXRhYi1uYXYtYmFyLm1hdC1iYWNrZ3JvdW5kLWFjY2VudFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXRhYi1sYWJlbC5jZGsta2V5Ym9hcmQtZm9jdXNlZFtfbmdjb250ZW50LSVDT01QJV06bm90KC5tYXQtdGFiLWRpc2FibGVkKSwgLm1hdC10YWItbmF2LWJhci5tYXQtYmFja2dyb3VuZC1hY2NlbnRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC10YWItbGFiZWwuY2RrLXByb2dyYW0tZm9jdXNlZFtfbmdjb250ZW50LSVDT01QJV06bm90KC5tYXQtdGFiLWRpc2FibGVkKSwgLm1hdC10YWItbmF2LWJhci5tYXQtYmFja2dyb3VuZC1hY2NlbnRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC10YWItbGluay5jZGsta2V5Ym9hcmQtZm9jdXNlZFtfbmdjb250ZW50LSVDT01QJV06bm90KC5tYXQtdGFiLWRpc2FibGVkKSwgLm1hdC10YWItbmF2LWJhci5tYXQtYmFja2dyb3VuZC1hY2NlbnRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC10YWItbGluay5jZGstcHJvZ3JhbS1mb2N1c2VkW19uZ2NvbnRlbnQtJUNPTVAlXTpub3QoLm1hdC10YWItZGlzYWJsZWQpe2JhY2tncm91bmQtY29sb3I6cmdiYSgyNTUsMTUyLDAsLjMpfS5tYXQtdGFiLWdyb3VwLm1hdC1iYWNrZ3JvdW5kLWFjY2VudFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXRhYi1oZWFkZXJbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXRhYi1ncm91cC5tYXQtYmFja2dyb3VuZC1hY2NlbnRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC10YWItbGlua3NbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXRhYi1ncm91cC5tYXQtYmFja2dyb3VuZC1hY2NlbnRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC10YWItaGVhZGVyLXBhZ2luYXRpb25bX25nY29udGVudC0lQ09NUCVdLCAubWF0LXRhYi1uYXYtYmFyLm1hdC1iYWNrZ3JvdW5kLWFjY2VudFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXRhYi1oZWFkZXJbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXRhYi1uYXYtYmFyLm1hdC1iYWNrZ3JvdW5kLWFjY2VudFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXRhYi1saW5rc1tfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdGFiLW5hdi1iYXIubWF0LWJhY2tncm91bmQtYWNjZW50W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtdGFiLWhlYWRlci1wYWdpbmF0aW9uW19uZ2NvbnRlbnQtJUNPTVAlXXtiYWNrZ3JvdW5kLWNvbG9yOiNmZjk4MDB9Lm1hdC10YWItZ3JvdXAubWF0LWJhY2tncm91bmQtYWNjZW50W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtdGFiLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10YWItZ3JvdXAubWF0LWJhY2tncm91bmQtYWNjZW50W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtdGFiLWxpbmtbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXRhYi1uYXYtYmFyLm1hdC1iYWNrZ3JvdW5kLWFjY2VudFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXRhYi1sYWJlbFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdGFiLW5hdi1iYXIubWF0LWJhY2tncm91bmQtYWNjZW50W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtdGFiLWxpbmtbX25nY29udGVudC0lQ09NUCVde2NvbG9yOiNmZmZ9Lm1hdC10YWItZ3JvdXAubWF0LWJhY2tncm91bmQtYWNjZW50W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtdGFiLWxhYmVsLm1hdC10YWItZGlzYWJsZWRbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXRhYi1ncm91cC5tYXQtYmFja2dyb3VuZC1hY2NlbnRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC10YWItbGluay5tYXQtdGFiLWRpc2FibGVkW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10YWItbmF2LWJhci5tYXQtYmFja2dyb3VuZC1hY2NlbnRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC10YWItbGFiZWwubWF0LXRhYi1kaXNhYmxlZFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdGFiLW5hdi1iYXIubWF0LWJhY2tncm91bmQtYWNjZW50W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtdGFiLWxpbmsubWF0LXRhYi1kaXNhYmxlZFtfbmdjb250ZW50LSVDT01QJV17Y29sb3I6cmdiYSgyNTUsMjU1LDI1NSwuNCl9Lm1hdC10YWItZ3JvdXAubWF0LWJhY2tncm91bmQtYWNjZW50W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtdGFiLWhlYWRlci1wYWdpbmF0aW9uLWNoZXZyb25bX25nY29udGVudC0lQ09NUCVdLCAubWF0LXRhYi1uYXYtYmFyLm1hdC1iYWNrZ3JvdW5kLWFjY2VudFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXRhYi1oZWFkZXItcGFnaW5hdGlvbi1jaGV2cm9uW19uZ2NvbnRlbnQtJUNPTVAlXXtib3JkZXItY29sb3I6I2ZmZn0ubWF0LXRhYi1ncm91cC5tYXQtYmFja2dyb3VuZC1hY2NlbnRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC10YWItaGVhZGVyLXBhZ2luYXRpb24tZGlzYWJsZWRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC10YWItaGVhZGVyLXBhZ2luYXRpb24tY2hldnJvbltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdGFiLW5hdi1iYXIubWF0LWJhY2tncm91bmQtYWNjZW50W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtdGFiLWhlYWRlci1wYWdpbmF0aW9uLWRpc2FibGVkW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtdGFiLWhlYWRlci1wYWdpbmF0aW9uLWNoZXZyb25bX25nY29udGVudC0lQ09NUCVde2JvcmRlci1jb2xvcjpyZ2JhKDI1NSwyNTUsMjU1LC40KX0ubWF0LXRhYi1ncm91cC5tYXQtYmFja2dyb3VuZC1hY2NlbnRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1yaXBwbGUtZWxlbWVudFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdGFiLW5hdi1iYXIubWF0LWJhY2tncm91bmQtYWNjZW50W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtcmlwcGxlLWVsZW1lbnRbX25nY29udGVudC0lQ09NUCVde2JhY2tncm91bmQtY29sb3I6cmdiYSgyNTUsMjU1LDI1NSwuMTIpfS5tYXQtdGFiLWdyb3VwLm1hdC1iYWNrZ3JvdW5kLXdhcm5bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC10YWItbGFiZWwuY2RrLWtleWJvYXJkLWZvY3VzZWRbX25nY29udGVudC0lQ09NUCVdOm5vdCgubWF0LXRhYi1kaXNhYmxlZCksIC5tYXQtdGFiLWdyb3VwLm1hdC1iYWNrZ3JvdW5kLXdhcm5bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC10YWItbGFiZWwuY2RrLXByb2dyYW0tZm9jdXNlZFtfbmdjb250ZW50LSVDT01QJV06bm90KC5tYXQtdGFiLWRpc2FibGVkKSwgLm1hdC10YWItZ3JvdXAubWF0LWJhY2tncm91bmQtd2Fybltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXRhYi1saW5rLmNkay1rZXlib2FyZC1mb2N1c2VkW19uZ2NvbnRlbnQtJUNPTVAlXTpub3QoLm1hdC10YWItZGlzYWJsZWQpLCAubWF0LXRhYi1ncm91cC5tYXQtYmFja2dyb3VuZC13YXJuW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtdGFiLWxpbmsuY2RrLXByb2dyYW0tZm9jdXNlZFtfbmdjb250ZW50LSVDT01QJV06bm90KC5tYXQtdGFiLWRpc2FibGVkKSwgLm1hdC10YWItbmF2LWJhci5tYXQtYmFja2dyb3VuZC13YXJuW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtdGFiLWxhYmVsLmNkay1rZXlib2FyZC1mb2N1c2VkW19uZ2NvbnRlbnQtJUNPTVAlXTpub3QoLm1hdC10YWItZGlzYWJsZWQpLCAubWF0LXRhYi1uYXYtYmFyLm1hdC1iYWNrZ3JvdW5kLXdhcm5bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC10YWItbGFiZWwuY2RrLXByb2dyYW0tZm9jdXNlZFtfbmdjb250ZW50LSVDT01QJV06bm90KC5tYXQtdGFiLWRpc2FibGVkKSwgLm1hdC10YWItbmF2LWJhci5tYXQtYmFja2dyb3VuZC13YXJuW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtdGFiLWxpbmsuY2RrLWtleWJvYXJkLWZvY3VzZWRbX25nY29udGVudC0lQ09NUCVdOm5vdCgubWF0LXRhYi1kaXNhYmxlZCksIC5tYXQtdGFiLW5hdi1iYXIubWF0LWJhY2tncm91bmQtd2Fybltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXRhYi1saW5rLmNkay1wcm9ncmFtLWZvY3VzZWRbX25nY29udGVudC0lQ09NUCVdOm5vdCgubWF0LXRhYi1kaXNhYmxlZCl7YmFja2dyb3VuZC1jb2xvcjpyZ2JhKDI1NSwyMDUsMjEwLC4zKX0ubWF0LXRhYi1ncm91cC5tYXQtYmFja2dyb3VuZC13YXJuW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtdGFiLWhlYWRlcltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdGFiLWdyb3VwLm1hdC1iYWNrZ3JvdW5kLXdhcm5bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC10YWItbGlua3NbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXRhYi1ncm91cC5tYXQtYmFja2dyb3VuZC13YXJuW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtdGFiLWhlYWRlci1wYWdpbmF0aW9uW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10YWItbmF2LWJhci5tYXQtYmFja2dyb3VuZC13YXJuW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtdGFiLWhlYWRlcltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdGFiLW5hdi1iYXIubWF0LWJhY2tncm91bmQtd2Fybltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXRhYi1saW5rc1tfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdGFiLW5hdi1iYXIubWF0LWJhY2tncm91bmQtd2Fybltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXRhYi1oZWFkZXItcGFnaW5hdGlvbltfbmdjb250ZW50LSVDT01QJV17YmFja2dyb3VuZC1jb2xvcjojZjQ0MzM2fS5tYXQtdGFiLWdyb3VwLm1hdC1iYWNrZ3JvdW5kLXdhcm5bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC10YWItbGFiZWxbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXRhYi1ncm91cC5tYXQtYmFja2dyb3VuZC13YXJuW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtdGFiLWxpbmtbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXRhYi1uYXYtYmFyLm1hdC1iYWNrZ3JvdW5kLXdhcm5bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC10YWItbGFiZWxbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXRhYi1uYXYtYmFyLm1hdC1iYWNrZ3JvdW5kLXdhcm5bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC10YWItbGlua1tfbmdjb250ZW50LSVDT01QJV17Y29sb3I6I2ZmZn0ubWF0LXRhYi1ncm91cC5tYXQtYmFja2dyb3VuZC13YXJuW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtdGFiLWxhYmVsLm1hdC10YWItZGlzYWJsZWRbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXRhYi1ncm91cC5tYXQtYmFja2dyb3VuZC13YXJuW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtdGFiLWxpbmsubWF0LXRhYi1kaXNhYmxlZFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdGFiLW5hdi1iYXIubWF0LWJhY2tncm91bmQtd2Fybltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXRhYi1sYWJlbC5tYXQtdGFiLWRpc2FibGVkW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10YWItbmF2LWJhci5tYXQtYmFja2dyb3VuZC13YXJuW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtdGFiLWxpbmsubWF0LXRhYi1kaXNhYmxlZFtfbmdjb250ZW50LSVDT01QJV17Y29sb3I6cmdiYSgyNTUsMjU1LDI1NSwuNCl9Lm1hdC10YWItZ3JvdXAubWF0LWJhY2tncm91bmQtd2Fybltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXRhYi1oZWFkZXItcGFnaW5hdGlvbi1jaGV2cm9uW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10YWItbmF2LWJhci5tYXQtYmFja2dyb3VuZC13YXJuW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtdGFiLWhlYWRlci1wYWdpbmF0aW9uLWNoZXZyb25bX25nY29udGVudC0lQ09NUCVde2JvcmRlci1jb2xvcjojZmZmfS5tYXQtdGFiLWdyb3VwLm1hdC1iYWNrZ3JvdW5kLXdhcm5bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC10YWItaGVhZGVyLXBhZ2luYXRpb24tZGlzYWJsZWRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC10YWItaGVhZGVyLXBhZ2luYXRpb24tY2hldnJvbltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdGFiLW5hdi1iYXIubWF0LWJhY2tncm91bmQtd2Fybltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXRhYi1oZWFkZXItcGFnaW5hdGlvbi1kaXNhYmxlZFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXRhYi1oZWFkZXItcGFnaW5hdGlvbi1jaGV2cm9uW19uZ2NvbnRlbnQtJUNPTVAlXXtib3JkZXItY29sb3I6cmdiYSgyNTUsMjU1LDI1NSwuNCl9Lm1hdC10YWItZ3JvdXAubWF0LWJhY2tncm91bmQtd2Fybltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXJpcHBsZS1lbGVtZW50W19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10YWItbmF2LWJhci5tYXQtYmFja2dyb3VuZC13YXJuW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtcmlwcGxlLWVsZW1lbnRbX25nY29udGVudC0lQ09NUCVde2JhY2tncm91bmQtY29sb3I6cmdiYSgyNTUsMjU1LDI1NSwuMTIpfS5tYXQtdG9vbGJhcltfbmdjb250ZW50LSVDT01QJV17YmFja2dyb3VuZDojZjVmNWY1O2NvbG9yOiMyMTIxMjF9Lm1hdC10b29sYmFyLm1hdC1wcmltYXJ5W19uZ2NvbnRlbnQtJUNPTVAlXXtiYWNrZ3JvdW5kOiNmNTdjMDA7Y29sb3I6I2ZmZn0ubWF0LXRvb2xiYXIubWF0LWFjY2VudFtfbmdjb250ZW50LSVDT01QJV17YmFja2dyb3VuZDojZmY5ODAwO2NvbG9yOiNmZmZ9Lm1hdC10b29sYmFyLm1hdC13YXJuW19uZ2NvbnRlbnQtJUNPTVAlXXtiYWNrZ3JvdW5kOiNmNDQzMzY7Y29sb3I6I2ZmZn0ubWF0LXRvb2xiYXJbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLXVuZGVybGluZVtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdG9vbGJhcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtcmlwcGxlW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10b29sYmFyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9jdXNlZFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtcmlwcGxlW19uZ2NvbnRlbnQtJUNPTVAlXXtiYWNrZ3JvdW5kLWNvbG9yOmN1cnJlbnRDb2xvcn0ubWF0LXRvb2xiYXJbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10b29sYmFyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9jdXNlZFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXRvb2xiYXJbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1zZWxlY3QtdmFsdWVbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXRvb2xiYXJbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1zZWxlY3QtYXJyb3dbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXRvb2xiYXJbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLm1hdC1mb2N1c2VkW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtc2VsZWN0LWFycm93W19uZ2NvbnRlbnQtJUNPTVAlXXtjb2xvcjppbmhlcml0fS5tYXQtdG9vbGJhcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWlucHV0LWVsZW1lbnRbX25nY29udGVudC0lQ09NUCVde2NhcmV0LWNvbG9yOmN1cnJlbnRDb2xvcn0ubWF0LXRvb2xiYXItbXVsdGlwbGUtcm93c1tfbmdjb250ZW50LSVDT01QJV17bWluLWhlaWdodDo2NHB4fS5tYXQtdG9vbGJhci1yb3dbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXRvb2xiYXItc2luZ2xlLXJvd1tfbmdjb250ZW50LSVDT01QJV17aGVpZ2h0OjY0cHh9QG1lZGlhKG1heC13aWR0aDogNTk5cHgpey5tYXQtdG9vbGJhci1tdWx0aXBsZS1yb3dzW19uZ2NvbnRlbnQtJUNPTVAlXXttaW4taGVpZ2h0OjU2cHh9Lm1hdC10b29sYmFyLXJvd1tfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdG9vbGJhci1zaW5nbGUtcm93W19uZ2NvbnRlbnQtJUNPTVAlXXtoZWlnaHQ6NTZweH19Lm1hdC10b29sdGlwW19uZ2NvbnRlbnQtJUNPTVAlXXtiYWNrZ3JvdW5kOnJnYmEoOTcsOTcsOTcsLjkpfS5tYXQtdHJlZVtfbmdjb250ZW50LSVDT01QJV17YmFja2dyb3VuZDojZmZmfS5tYXQtdHJlZS1ub2RlW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1uZXN0ZWQtdHJlZS1ub2RlW19uZ2NvbnRlbnQtJUNPTVAlXXtjb2xvcjojMjEyMTIxfS5tYXQtdHJlZS1ub2RlW19uZ2NvbnRlbnQtJUNPTVAlXXttaW4taGVpZ2h0OjQ4cHh9Lm1hdC1zbmFjay1iYXItY29udGFpbmVyW19uZ2NvbnRlbnQtJUNPTVAlXXtjb2xvcjpyZ2JhKDI1NSwyNTUsMjU1LC43KTtiYWNrZ3JvdW5kOiMzMjMyMzI7Ym94LXNoYWRvdzowcHggM3B4IDVweCAtMXB4IHJnYmEoMCwgMCwgMCwgMC4yKSwwcHggNnB4IDEwcHggMHB4IHJnYmEoMCwgMCwgMCwgMC4xNCksMHB4IDFweCAxOHB4IDBweCByZ2JhKDAsIDAsIDAsIDAuMTIpfS5tYXQtc2ltcGxlLXNuYWNrYmFyLWFjdGlvbltfbmdjb250ZW50LSVDT01QJV17Y29sb3I6I2ZmOTgwMH1bX25naG9zdC0lQ09NUCVde2Rpc3BsYXk6ZmxleDtwb3NpdGlvbjpyZWxhdGl2ZX1bX25naG9zdC0lQ09NUCVdOm5vdCgudmFsaWQpe2NvbG9yOiNjNjI4Mjh9W19uZ2hvc3QtJUNPTVAlXTpub3QoLnZhbGlkKSAgIGlucHV0W19uZ2NvbnRlbnQtJUNPTVAlXXtjYXJldC1jb2xvcjpjdXJyZW50Q29sb3J9W19uZ2hvc3QtJUNPTVAlXTpub3QoLnZhbGlkKSAgIC5lcnJvci1pY29uW19uZ2NvbnRlbnQtJUNPTVAlXXtjb2xvcjojYzYyODI4O3Bvc2l0aW9uOmFic29sdXRlO3JpZ2h0OjB9J10sY2hhbmdlRGV0ZWN0aW9uOjB9KTtjbGFzcyBGcHR7Y29uc3RydWN0b3IodCl7dGhpcy5zdG9yZT10LHRoaXMuYW5ub3RhdGlvbnNGaWx0ZXIkPXRoaXMuc3RvcmUuc2VsZWN0KElkdCksdGhpcy5pc0Fubm90YXRpb25zRmlsdGVyVmFsaWQkPXRoaXMuYW5ub3RhdGlvbnNGaWx0ZXIkLnBpcGUoZnQoKHQ9Pnt0cnl7cmV0dXJuIG5ldyBSZWdFeHAodCksITB9Y2F0Y2godCl7cmV0dXJuITF9fSkpKX1maWx0ZXJDaGFuZ2UodCl7dGhpcy5zdG9yZS5kaXNwYXRjaChyZ3Qoe3JlZ2V4OnR9KSl9fWZ1bmN0aW9uIExwdCh0LG4pe2lmKDEmdCl7Y29uc3QgdD1vcCgpO25wKDApLEtnKDEsImJ1dHRvbiIsNiksbHUoMiw3KSxjcCgiY2xpY2siLChmdW5jdGlvbiBuKCl7anIodCk7Y29uc3QgZT1ncCgpO3JldHVybiBlLm9uRmxhZ0Fubm90YXRpb25zLmVtaXQoZS5zZWxlY3RlZEFubm90YXRpb25zKX0pKSx0cCgzLCJtYXQtaWNvbiIsOCksJGcoKSxLZyg0LCJidXR0b24iLDkpLGx1KDUsMTApLGNwKCJjbGljayIsKGZ1bmN0aW9uIG4oKXtqcih0KTtjb25zdCBlPWdwKCk7cmV0dXJuIGUub25IaWRlQW5ub3RhdGlvbnMuZW1pdChlLnNlbGVjdGVkQW5ub3RhdGlvbnMpfSkpLHRwKDYsIm1hdC1pY29uIiwxMSksJGcoKSxlcCgpfWlmKDImdCl7Y29uc3QgdD1ncCgpO3dzKDEpLEpnKCJkaXNhYmxlZCIsMD09PXQuc2VsZWN0ZWRBbm5vdGF0aW9ucy5sZW5ndGgpLHdzKDMpLEpnKCJkaXNhYmxlZCIsMD09PXQuc2VsZWN0ZWRBbm5vdGF0aW9ucy5sZW5ndGgpfX1mdW5jdGlvbiBIcHQodCxuKXtpZigxJnQpe2NvbnN0IHQ9b3AoKTtucCgwKSxLZygxLCJtYXQtc2xpZGUtdG9nZ2xlIiwxMiksY3AoImNoYW5nZSIsKGZ1bmN0aW9uIG4oKXtyZXR1cm4ganIodCksZ3AoKS5vblRvZ2dsZVNob3dDb3VudHMuZW1pdCgpfSkpLEpwKDIsIiBTYW1wbGUgQ291bnQgIiksJGcoKSxLZygzLCJtYXQtc2xpZGUtdG9nZ2xlIiwxMyksY3AoImNoYW5nZSIsKGZ1bmN0aW9uIG4oKXtyZXR1cm4ganIodCksZ3AoKS5vblRvZ2dsZVNob3dIaWRkZW4uZW1pdCgpfSkpLEpwKDQsIiBTaG93IEhpZGRlbiAiKSwkZygpLHRwKDUsIm5wbWktYW5ub3RhdGlvbnMtc2VhcmNoIiksZXAoKX1pZigyJnQpe2NvbnN0IHQ9Z3AoKTt3cygxKSxKZygiY2hlY2tlZCIsdC5zaG93Q291bnRzKSx3cygyKSxKZygiY2hlY2tlZCIsdC5zaG93SGlkZGVuKX19RnB0Lsm1ZmFjPWZ1bmN0aW9uIHQobil7cmV0dXJuIG5ldyhufHxGcHQpKFpnKGN2KSl9LEZwdC7JtWNtcD1fbyh7dHlwZTpGcHQsc2VsZWN0b3JzOltbIm5wbWktYW5ub3RhdGlvbnMtc2VhcmNoIl1dLGRlY2xzOjMsdmFyczo2LGNvbnN0czpbWzMsInJlZ2V4RmlsdGVyVmFsdWUiLCJpc1JlZ2V4RmlsdGVyVmFsaWQiLCJvblJlZ2V4RmlsdGVyVmFsdWVDaGFuZ2UiXV0sdGVtcGxhdGU6ZnVuY3Rpb24gdChuLGUpezEmbiYmKEtnKDAsIm5wbWktYW5ub3RhdGlvbnMtc2VhcmNoLWNvbXBvbmVudCIsMCksY3AoIm9uUmVnZXhGaWx0ZXJWYWx1ZUNoYW5nZSIsKGZ1bmN0aW9uIHQobil7cmV0dXJuIGUuZmlsdGVyQ2hhbmdlKG4pfSkpLHlmKDEsImFzeW5jIikseWYoMiwiYXN5bmMiKSwkZygpKSwyJm4mJkpnKCJyZWdleEZpbHRlclZhbHVlIixrZigxLDIsZS5hbm5vdGF0aW9uc0ZpbHRlciQpKSgiaXNSZWdleEZpbHRlclZhbGlkIixrZigyLDQsZS5pc0Fubm90YXRpb25zRmlsdGVyVmFsaWQkKSl9LGRpcmVjdGl2ZXM6W05wdF0scGlwZXM6W29PXSxlbmNhcHN1bGF0aW9uOjIsY2hhbmdlRGV0ZWN0aW9uOjB9KTtjbGFzcyBCcHR7Y29uc3RydWN0b3IoKXt0aGlzLm9uRmxhZ0Fubm90YXRpb25zPW5ldyBFZix0aGlzLm9uSGlkZUFubm90YXRpb25zPW5ldyBFZix0aGlzLm9uVG9nZ2xlRXhwYW5kZWQ9bmV3IEVmLHRoaXMub25Ub2dnbGVTaG93Q291bnRzPW5ldyBFZix0aGlzLm9uVG9nZ2xlU2hvd0hpZGRlbj1uZXcgRWZ9fUJwdC7JtWZhYz1mdW5jdGlvbiB0KG4pe3JldHVybiBuZXcobnx8QnB0KX0sQnB0Lsm1Y21wPV9vKHt0eXBlOkJwdCxzZWxlY3RvcnM6W1sibnBtaS1hbm5vdGF0aW9ucy1saXN0LXRvb2xiYXItY29tcG9uZW50Il1dLGlucHV0czp7bnVtQW5ub3RhdGlvbnM6Im51bUFubm90YXRpb25zIixleHBhbmRlZDoiZXhwYW5kZWQiLHNlbGVjdGVkQW5ub3RhdGlvbnM6InNlbGVjdGVkQW5ub3RhdGlvbnMiLGFubm90YXRpb25zRXhwYW5kZWQ6ImFubm90YXRpb25zRXhwYW5kZWQiLHNob3dDb3VudHM6InNob3dDb3VudHMiLHNob3dIaWRkZW46InNob3dIaWRkZW4ifSxvdXRwdXRzOntvbkZsYWdBbm5vdGF0aW9uczoib25GbGFnQW5ub3RhdGlvbnMiLG9uSGlkZUFubm90YXRpb25zOiJvbkhpZGVBbm5vdGF0aW9ucyIsb25Ub2dnbGVFeHBhbmRlZDoib25Ub2dnbGVFeHBhbmRlZCIsb25Ub2dnbGVTaG93Q291bnRzOiJvblRvZ2dsZVNob3dDb3VudHMiLG9uVG9nZ2xlU2hvd0hpZGRlbjoib25Ub2dnbGVTaG93SGlkZGVuIn0sZGVjbHM6OCx2YXJzOjQsY29uc3RzOmZ1bmN0aW9uKCl7cmV0dXJuW1sxLCJhbm5vdGF0aW9ucy10aXRsZS1jb250YWluZXIiXSxbMSwiYW5ub3RhdGlvbnMtdGl0bGUiXSxbNCwibmdJZiJdLFsibWF0LWljb24tYnV0dG9uIiwiIiwxLCJleHBhbmQtYnV0dG9uIiwzLCJjbGljayIsNiwiYXJpYS1sYWJlbCJdLFsiYXJpYS1sYWJlbCIsInVuZGVmaW5lZCIhPXR5cGVvZiBuZ0kxOG5DbG9zdXJlTW9kZSYmbmdJMThuQ2xvc3VyZU1vZGU/Z29vZy5nZXRNc2coIkhpZGVzL1Nob3dzIHRoZSBBbm5vdGF0aW9ucyBMaXN0Iik6JGxvY2FsaXplYDpMYWJlbCBmb3IgYSBidXR0b24gdGhhdCBoaWRlcy9zaG93cyB0aGUgYW5ub3RhdGlvbnMgbGlzdC7ikJ9iMzYwM2JhMzNlNTMwOGRkOGM1ZTgwNWU1MDhiMmY3MjMzZGY4OWQ04pCfNzMzNjM3NDQxMzA1NjM0MjQ5MjpIaWRlcy9TaG93cyB0aGUgQW5ub3RhdGlvbnMgTGlzdGBdLFszLCJzdmdJY29uIl0sWyJtYXQtaWNvbi1idXR0b24iLCIiLCJ0aXRsZSIsIkZsYWdnaW5nIGFubm90YXRpb25zIGFkZHMgdGhlbSB0byB5b3VyIGludmVzdGlnYXRpb24gcmVzdWx0cywgd2hpY2ggY2FuIGxhdGVyIGJlIGV4cG9ydGVkLiIsMywiZGlzYWJsZWQiLCJjbGljayIsNiwiYXJpYS1sYWJlbCJdLFsiYXJpYS1sYWJlbCIsInVuZGVmaW5lZCIhPXR5cGVvZiBuZ0kxOG5DbG9zdXJlTW9kZSYmbmdJMThuQ2xvc3VyZU1vZGU/Z29vZy5nZXRNc2coIkZsYWcgU2VsZWN0ZWQgQW5ub3RhdGlvbnMiKTokbG9jYWxpemVgOkxhYmVsIGZvciBhIGJ1dHRvbiB0aGF0IGZsYWdzIHNlbGVjdGVkIGFubm90YXRpb25zLuKQnzU2OTJhZDg4MzEwMzhhOTBjNTg2M2ExZTlhZGY5NzQ4Y2FjM2NhZDjikJ8yMjQ0MDk5ODkxMzEzMzM2NTk1OkZsYWcgU2VsZWN0ZWQgQW5ub3RhdGlvbnNgXSxbInN2Z0ljb24iLCJmbGFnXzI0cHgiXSxbIm1hdC1pY29uLWJ1dHRvbiIsIiIsInRpdGxlIiwiUmVtb3Zpbmcgbm9uLWNyaXRpY2FsIGFubm90YXRpb25zIHVuY2x1dHRlcnMgdGhlIHZpZXcuIFJlbW92ZWQgYW5ub3RhdGlvbnMgYXJlIHJlbW92ZWQgZnJvbSBhbGwgdmlzdWFsaXphdGlvbnMuIiwzLCJkaXNhYmxlZCIsImNsaWNrIiw2LCJhcmlhLWxhYmVsIl0sWyJhcmlhLWxhYmVsIiwidW5kZWZpbmVkIiE9dHlwZW9mIG5nSTE4bkNsb3N1cmVNb2RlJiZuZ0kxOG5DbG9zdXJlTW9kZT9nb29nLmdldE1zZygiSGlkZSBTZWxlY3RlZCBBbm5vdGF0aW9ucyIpOiRsb2NhbGl6ZWA6TGFiZWwgZm9yIGEgYnV0dG9uIHRoYXQgaGlkZXMgc2VsZWN0ZWQgYW5ub3RhdGlvbnMu4pCfMDM0MmNkYjMzNThmYThlM2ZhMjcyMjBhODI1OGE3Mjg3NDMwYjcwZuKQnzU0NjI4MzIzOTEwOTIwODc0ODU6SGlkZSBTZWxlY3RlZCBBbm5vdGF0aW9uc2BdLFsic3ZnSWNvbiIsInZpc2liaWxpdHlfb2ZmXzI0cHgiXSxbInRpdGxlIiwiSGlkZXMgYW5kIHNob3dzIHRoZSBzYW1wbGUgY291bnQgd2hlcmUgYXBwbGljYWJsZSAoaG93IG1hbnkgc2FtcGxlcyBiZWxvbmcgdG8gYSBjYXRlZ29yeSkuIiwxLCJzaG93LXRvZ2dsZSIsMywiY2hlY2tlZCIsImNoYW5nZSJdLFsidGl0bGUiLCJIaWRlcyBhbmQgc2hvd3MgaGlkZGVuIGFubm90YXRpb25zIGluIGFsbCB2aXN1YWxpemF0aW9ucy4iLDEsInNob3ctdG9nZ2xlIiwzLCJjaGVja2VkIiwiY2hhbmdlIl1dfSx0ZW1wbGF0ZTpmdW5jdGlvbiB0KG4sZSl7MSZuJiYoS2coMCwiZGl2IiwwKSxLZygxLCJoMyIsMSksSnAoMiksJGcoKSxZZygzLExwdCw3LDIsIm5nLWNvbnRhaW5lciIsMiksJGcoKSxZZyg0LEhwdCw2LDIsIm5nLWNvbnRhaW5lciIsMiksS2coNSwiYnV0dG9uIiwzKSxsdSg2LDQpLGNwKCJjbGljayIsKGZ1bmN0aW9uIHQoKXtyZXR1cm4gZS5vblRvZ2dsZUV4cGFuZGVkLmVtaXQoKX0pKSx0cCg3LCJtYXQtaWNvbiIsNSksJGcoKSksMiZuJiYod3MoMiksS3AoIkFubm90YXRpb25zICgiLGUubnVtQW5ub3RhdGlvbnMsIikiKSx3cygxKSxKZygibmdJZiIsZS5leHBhbmRlZCksd3MoMSksSmcoIm5nSWYiLGUuZXhwYW5kZWQpLHdzKDMpLEpnKCJzdmdJY29uIixlLmV4cGFuZGVkPyJleHBhbmRfbGVzc18yNHB4IjoiZXhwYW5kX21vcmVfMjRweCIpKX0sZGlyZWN0aXZlczpbV00sZUEsQkIsRXB0LEZwdF0sc3R5bGVzOlsnLm1hdC1iYWRnZS1jb250ZW50W19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXdlaWdodDo2MDA7Zm9udC1zaXplOjEycHg7Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmfS5tYXQtYmFkZ2Utc21hbGxbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1iYWRnZS1jb250ZW50W19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6OXB4fS5tYXQtYmFkZ2UtbGFyZ2VbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1iYWRnZS1jb250ZW50W19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MjRweH0ubWF0LWgxW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1oZWFkbGluZVtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdHlwb2dyYXBoeVtfbmdjb250ZW50LSVDT01QJV0gICBoMVtfbmdjb250ZW50LSVDT01QJV17Zm9udDo0MDAgMjRweC8zMnB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtsZXR0ZXItc3BhY2luZzpub3JtYWw7bWFyZ2luOjAgMCAxNnB4fS5tYXQtaDJbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXRpdGxlW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10eXBvZ3JhcGh5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIGgyW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250OjUwMCAyMHB4LzMycHggUm9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2xldHRlci1zcGFjaW5nOm5vcm1hbDttYXJnaW46MCAwIDE2cHh9Lm1hdC1oM1tfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtc3ViaGVhZGluZy0yW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10eXBvZ3JhcGh5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIGgzW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250OjQwMCAxNnB4LzI4cHggUm9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2xldHRlci1zcGFjaW5nOm5vcm1hbDttYXJnaW46MCAwIDE2cHh9Lm1hdC1oNFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtc3ViaGVhZGluZy0xW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10eXBvZ3JhcGh5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIGg0W19uZ2NvbnRlbnQtJUNPTVAlXXtmb250OjQwMCAxNXB4LzI0cHggUm9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2xldHRlci1zcGFjaW5nOm5vcm1hbDttYXJnaW46MCAwIDE2cHh9Lm1hdC1oNVtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdHlwb2dyYXBoeVtfbmdjb250ZW50LSVDT01QJV0gICBoNVtfbmdjb250ZW50LSVDT01QJV17Zm9udDo0MDAgY2FsYygxNHB4ICogMC44MykvMjBweCBSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7bWFyZ2luOjAgMCAxMnB4fS5tYXQtaDZbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXR5cG9ncmFwaHlbX25nY29udGVudC0lQ09NUCVdICAgaDZbX25nY29udGVudC0lQ09NUCVde2ZvbnQ6NDAwIGNhbGMoMTRweCAqIDAuNjcpLzIwcHggUm9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO21hcmdpbjowIDAgMTJweH0ubWF0LWJvZHktc3Ryb25nW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1ib2R5LTJbX25nY29udGVudC0lQ09NUCVde2ZvbnQ6NTAwIDE0cHgvMjRweCBSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7bGV0dGVyLXNwYWNpbmc6bm9ybWFsfS5tYXQtYm9keVtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtYm9keS0xW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10eXBvZ3JhcGh5W19uZ2NvbnRlbnQtJUNPTVAlXXtmb250OjQwMCAxNHB4LzIwcHggUm9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2xldHRlci1zcGFjaW5nOm5vcm1hbH0ubWF0LWJvZHlbX25nY29udGVudC0lQ09NUCVdICAgcFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtYm9keS0xW19uZ2NvbnRlbnQtJUNPTVAlXSAgIHBbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXR5cG9ncmFwaHlbX25nY29udGVudC0lQ09NUCVdICAgcFtfbmdjb250ZW50LSVDT01QJV17bWFyZ2luOjAgMCAxMnB4fS5tYXQtc21hbGxbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWNhcHRpb25bX25nY29udGVudC0lQ09NUCVde2ZvbnQ6NDAwIDEycHgvMjBweCBSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7bGV0dGVyLXNwYWNpbmc6bm9ybWFsfS5tYXQtZGlzcGxheS00W19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10eXBvZ3JhcGh5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZGlzcGxheS00W19uZ2NvbnRlbnQtJUNPTVAlXXtmb250OjMwMCAxMTJweC8xMTJweCBSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7bGV0dGVyLXNwYWNpbmc6LTAuMDVlbTttYXJnaW46MCAwIDU2cHh9Lm1hdC1kaXNwbGF5LTNbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXR5cG9ncmFwaHlbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1kaXNwbGF5LTNbX25nY29udGVudC0lQ09NUCVde2ZvbnQ6NDAwIDU2cHgvNTZweCBSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7bGV0dGVyLXNwYWNpbmc6LTAuMDJlbTttYXJnaW46MCAwIDY0cHh9Lm1hdC1kaXNwbGF5LTJbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXR5cG9ncmFwaHlbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1kaXNwbGF5LTJbX25nY29udGVudC0lQ09NUCVde2ZvbnQ6NDAwIDQ1cHgvNDhweCBSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7bGV0dGVyLXNwYWNpbmc6LTAuMDA1ZW07bWFyZ2luOjAgMCA2NHB4fS5tYXQtZGlzcGxheS0xW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10eXBvZ3JhcGh5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZGlzcGxheS0xW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250OjQwMCAzNHB4LzQwcHggUm9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2xldHRlci1zcGFjaW5nOm5vcm1hbDttYXJnaW46MCAwIDY0cHh9Lm1hdC1ib3R0b20tc2hlZXQtY29udGFpbmVyW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250OjQwMCAxNHB4LzIwcHggUm9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2xldHRlci1zcGFjaW5nOm5vcm1hbH0ubWF0LWJ1dHRvbltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtcmFpc2VkLWJ1dHRvbltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtaWNvbi1idXR0b25bX25nY29udGVudC0lQ09NUCVdLCAubWF0LXN0cm9rZWQtYnV0dG9uW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1mbGF0LWJ1dHRvbltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtZmFiW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1taW5pLWZhYltfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2ZvbnQtc2l6ZToxNHB4O2ZvbnQtd2VpZ2h0OjUwMH0ubWF0LWJ1dHRvbi10b2dnbGVbX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZn0ubWF0LWNhcmRbX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZn0ubWF0LWNhcmQtdGl0bGVbX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToyNHB4O2ZvbnQtd2VpZ2h0OjUwMH0ubWF0LWNhcmQtaGVhZGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtY2FyZC10aXRsZVtfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjIwcHh9Lm1hdC1jYXJkLXN1YnRpdGxlW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1jYXJkLWNvbnRlbnRbX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToxNHB4fS5tYXQtY2hlY2tib3hbX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZn0ubWF0LWNoZWNrYm94LWxheW91dFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWNoZWNrYm94LWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXtsaW5lLWhlaWdodDoyNHB4fS5tYXQtY2hpcFtfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjE0cHg7Zm9udC13ZWlnaHQ6NTAwfS5tYXQtY2hpcFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWNoaXAtdHJhaWxpbmctaWNvbi5tYXQtaWNvbltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtY2hpcFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWNoaXAtcmVtb3ZlLm1hdC1pY29uW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MThweH0ubWF0LXRhYmxlW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWZ9Lm1hdC1oZWFkZXItY2VsbFtfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjEycHg7Zm9udC13ZWlnaHQ6NTAwfS5tYXQtY2VsbFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtZm9vdGVyLWNlbGxbX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToxNHB4fS5tYXQtY2FsZW5kYXJbX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZn0ubWF0LWNhbGVuZGFyLWJvZHlbX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToxM3B4fS5tYXQtY2FsZW5kYXItYm9keS1sYWJlbFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtY2FsZW5kYXItcGVyaW9kLWJ1dHRvbltfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjE0cHg7Zm9udC13ZWlnaHQ6NTAwfS5tYXQtY2FsZW5kYXItdGFibGUtaGVhZGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIHRoW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MTFweDtmb250LXdlaWdodDo0MDB9Lm1hdC1kaWFsb2ctdGl0bGVbX25nY29udGVudC0lQ09NUCVde2ZvbnQ6NTAwIDIwcHgvMzJweCBSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7bGV0dGVyLXNwYWNpbmc6bm9ybWFsfS5tYXQtZXhwYW5zaW9uLXBhbmVsLWhlYWRlcltfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2ZvbnQtc2l6ZToxNXB4O2ZvbnQtd2VpZ2h0OjQwMH0ubWF0LWV4cGFuc2lvbi1wYW5lbC1jb250ZW50W19uZ2NvbnRlbnQtJUNPTVAlXXtmb250OjQwMCAxNHB4LzIwcHggUm9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2xldHRlci1zcGFjaW5nOm5vcm1hbH0ubWF0LWZvcm0tZmllbGRbX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZTppbmhlcml0O2ZvbnQtd2VpZ2h0OjQwMDtsaW5lLWhlaWdodDoxLjEyNTtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7bGV0dGVyLXNwYWNpbmc6bm9ybWFsfS5tYXQtZm9ybS1maWVsZC13cmFwcGVyW19uZ2NvbnRlbnQtJUNPTVAlXXtwYWRkaW5nLWJvdHRvbToxLjM0Mzc1ZW19Lm1hdC1mb3JtLWZpZWxkLXByZWZpeFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWljb25bX25nY29udGVudC0lQ09NUCVdLCAubWF0LWZvcm0tZmllbGQtc3VmZml4W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaWNvbltfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjE1MCU7bGluZS1oZWlnaHQ6MS4xMjV9Lm1hdC1mb3JtLWZpZWxkLXByZWZpeFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWljb24tYnV0dG9uW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1mb3JtLWZpZWxkLXN1ZmZpeFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWljb24tYnV0dG9uW19uZ2NvbnRlbnQtJUNPTVAlXXtoZWlnaHQ6MS41ZW07d2lkdGg6MS41ZW19Lm1hdC1mb3JtLWZpZWxkLXByZWZpeFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWljb24tYnV0dG9uW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaWNvbltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtZm9ybS1maWVsZC1zdWZmaXhbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pY29uLWJ1dHRvbltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWljb25bX25nY29udGVudC0lQ09NUCVde2hlaWdodDoxLjEyNWVtO2xpbmUtaGVpZ2h0OjEuMTI1fS5tYXQtZm9ybS1maWVsZC1pbmZpeFtfbmdjb250ZW50LSVDT01QJV17cGFkZGluZzouNWVtIDA7Ym9yZGVyLXRvcDouODQzNzVlbSBzb2xpZCB0cmFuc3BhcmVudH0ubWF0LWZvcm0tZmllbGQtY2FuLWZsb2F0Lm1hdC1mb3JtLWZpZWxkLXNob3VsZC1mbG9hdFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWZvcm0tZmllbGQtY2FuLWZsb2F0W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaW5wdXQtc2VydmVyW19uZ2NvbnRlbnQtJUNPTVAlXTpmb2N1cyArIC5tYXQtZm9ybS1maWVsZC1sYWJlbC13cmFwcGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17dHJhbnNmb3JtOnRyYW5zbGF0ZVkoLTEuMzQzNzVlbSkgc2NhbGUoMC43NSk7d2lkdGg6MTMzLjMzMzMzMzMzMzMlfS5tYXQtZm9ybS1maWVsZC1jYW4tZmxvYXRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pbnB1dC1zZXJ2ZXJbbGFiZWxdW19uZ2NvbnRlbnQtJUNPTVAlXTpub3QoOmxhYmVsLXNob3duKSArIC5tYXQtZm9ybS1maWVsZC1sYWJlbC13cmFwcGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17dHJhbnNmb3JtOnRyYW5zbGF0ZVkoLTEuMzQzNzRlbSkgc2NhbGUoMC43NSk7d2lkdGg6MTMzLjMzMzM0MzMzMzMlfS5tYXQtZm9ybS1maWVsZC1sYWJlbC13cmFwcGVyW19uZ2NvbnRlbnQtJUNPTVAlXXt0b3A6LTAuODQzNzVlbTtwYWRkaW5nLXRvcDouODQzNzVlbX0ubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVde3RvcDoxLjM0Mzc1ZW19Lm1hdC1mb3JtLWZpZWxkLXVuZGVybGluZVtfbmdjb250ZW50LSVDT01QJV17Ym90dG9tOjEuMzQzNzVlbX0ubWF0LWZvcm0tZmllbGQtc3Vic2NyaXB0LXdyYXBwZXJbX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZTo3NSU7bWFyZ2luLXRvcDouNjY2NjY2NjY2N2VtO3RvcDpjYWxjKDEwMCUgLSAxLjc5MTY2NjY2NjdlbSl9Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtbGVnYWN5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC13cmFwcGVyW19uZ2NvbnRlbnQtJUNPTVAlXXtwYWRkaW5nLWJvdHRvbToxLjI1ZW19Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtbGVnYWN5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1pbmZpeFtfbmdjb250ZW50LSVDT01QJV17cGFkZGluZzouNDM3NWVtIDB9Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtbGVnYWN5Lm1hdC1mb3JtLWZpZWxkLWNhbi1mbG9hdC5tYXQtZm9ybS1maWVsZC1zaG91bGQtZmxvYXRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtbGVnYWN5Lm1hdC1mb3JtLWZpZWxkLWNhbi1mbG9hdFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWlucHV0LXNlcnZlcltfbmdjb250ZW50LSVDT01QJV06Zm9jdXMgKyAubWF0LWZvcm0tZmllbGQtbGFiZWwtd3JhcHBlcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVde3RyYW5zZm9ybTp0cmFuc2xhdGVZKC0xLjI4MTI1ZW0pIHNjYWxlKDAuNzUpIHBlcnNwZWN0aXZlKDEwMHB4KSB0cmFuc2xhdGVaKDAuMDAxcHgpOy1tcy10cmFuc2Zvcm06dHJhbnNsYXRlWSgtMS4yODEyNWVtKSBzY2FsZSgwLjc1KTt3aWR0aDoxMzMuMzMzMzMzMzMzMyV9Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtbGVnYWN5Lm1hdC1mb3JtLWZpZWxkLWNhbi1mbG9hdFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtYXV0b2ZpbGwtY29udHJvbFtfbmdjb250ZW50LSVDT01QJV06LXdlYmtpdC1hdXRvZmlsbCArIC5tYXQtZm9ybS1maWVsZC1sYWJlbC13cmFwcGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17dHJhbnNmb3JtOnRyYW5zbGF0ZVkoLTEuMjgxMjVlbSkgc2NhbGUoMC43NSkgcGVyc3BlY3RpdmUoMTAwcHgpIHRyYW5zbGF0ZVooMC4wMDEwMXB4KTstbXMtdHJhbnNmb3JtOnRyYW5zbGF0ZVkoLTEuMjgxMjRlbSkgc2NhbGUoMC43NSk7d2lkdGg6MTMzLjMzMzM0MzMzMzMlfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWxlZ2FjeS5tYXQtZm9ybS1maWVsZC1jYW4tZmxvYXRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pbnB1dC1zZXJ2ZXJbbGFiZWxdW19uZ2NvbnRlbnQtJUNPTVAlXTpub3QoOmxhYmVsLXNob3duKSArIC5tYXQtZm9ybS1maWVsZC1sYWJlbC13cmFwcGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17dHJhbnNmb3JtOnRyYW5zbGF0ZVkoLTEuMjgxMjVlbSkgc2NhbGUoMC43NSkgcGVyc3BlY3RpdmUoMTAwcHgpIHRyYW5zbGF0ZVooMC4wMDEwMnB4KTstbXMtdHJhbnNmb3JtOnRyYW5zbGF0ZVkoLTEuMjgxMjNlbSkgc2NhbGUoMC43NSk7d2lkdGg6MTMzLjMzMzM1MzMzMzMlfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWxlZ2FjeVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVde3RvcDoxLjI4MTI1ZW19Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtbGVnYWN5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC11bmRlcmxpbmVbX25nY29udGVudC0lQ09NUCVde2JvdHRvbToxLjI1ZW19Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtbGVnYWN5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1zdWJzY3JpcHQtd3JhcHBlcltfbmdjb250ZW50LSVDT01QJV17bWFyZ2luLXRvcDouNTQxNjY2NjY2N2VtO3RvcDpjYWxjKDEwMCUgLSAxLjY2NjY2NjY2NjdlbSl9QG1lZGlhIHByaW50ey5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWxlZ2FjeS5tYXQtZm9ybS1maWVsZC1jYW4tZmxvYXQubWF0LWZvcm0tZmllbGQtc2hvdWxkLWZsb2F0W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWxlZ2FjeS5tYXQtZm9ybS1maWVsZC1jYW4tZmxvYXRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pbnB1dC1zZXJ2ZXJbX25nY29udGVudC0lQ09NUCVdOmZvY3VzICsgLm1hdC1mb3JtLWZpZWxkLWxhYmVsLXdyYXBwZXJbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXt0cmFuc2Zvcm06dHJhbnNsYXRlWSgtMS4yODEyMmVtKSBzY2FsZSgwLjc1KX0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1sZWdhY3kubWF0LWZvcm0tZmllbGQtY2FuLWZsb2F0W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1hdXRvZmlsbC1jb250cm9sW19uZ2NvbnRlbnQtJUNPTVAlXTotd2Via2l0LWF1dG9maWxsICsgLm1hdC1mb3JtLWZpZWxkLWxhYmVsLXdyYXBwZXJbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXt0cmFuc2Zvcm06dHJhbnNsYXRlWSgtMS4yODEyMWVtKSBzY2FsZSgwLjc1KX0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1sZWdhY3kubWF0LWZvcm0tZmllbGQtY2FuLWZsb2F0W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaW5wdXQtc2VydmVyW2xhYmVsXVtfbmdjb250ZW50LSVDT01QJV06bm90KDpsYWJlbC1zaG93bikgKyAubWF0LWZvcm0tZmllbGQtbGFiZWwtd3JhcHBlcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVde3RyYW5zZm9ybTp0cmFuc2xhdGVZKC0xLjI4MTJlbSkgc2NhbGUoMC43NSl9fS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWZpbGxbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWluZml4W19uZ2NvbnRlbnQtJUNPTVAlXXtwYWRkaW5nOi4yNWVtIDAgLjc1ZW0gMH0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1maWxsW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17dG9wOjEuMDkzNzVlbTttYXJnaW4tdG9wOi0wLjVlbX0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1maWxsLm1hdC1mb3JtLWZpZWxkLWNhbi1mbG9hdC5tYXQtZm9ybS1maWVsZC1zaG91bGQtZmxvYXRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtZmlsbC5tYXQtZm9ybS1maWVsZC1jYW4tZmxvYXRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pbnB1dC1zZXJ2ZXJbX25nY29udGVudC0lQ09NUCVdOmZvY3VzICsgLm1hdC1mb3JtLWZpZWxkLWxhYmVsLXdyYXBwZXJbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXt0cmFuc2Zvcm06dHJhbnNsYXRlWSgtMC41OTM3NWVtKSBzY2FsZSgwLjc1KTt3aWR0aDoxMzMuMzMzMzMzMzMzMyV9Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtZmlsbC5tYXQtZm9ybS1maWVsZC1jYW4tZmxvYXRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pbnB1dC1zZXJ2ZXJbbGFiZWxdW19uZ2NvbnRlbnQtJUNPTVAlXTpub3QoOmxhYmVsLXNob3duKSArIC5tYXQtZm9ybS1maWVsZC1sYWJlbC13cmFwcGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17dHJhbnNmb3JtOnRyYW5zbGF0ZVkoLTAuNTkzNzRlbSkgc2NhbGUoMC43NSk7d2lkdGg6MTMzLjMzMzM0MzMzMzMlfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLW91dGxpbmVbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWluZml4W19uZ2NvbnRlbnQtJUNPTVAlXXtwYWRkaW5nOjFlbSAwIDFlbSAwfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLW91dGxpbmVbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXt0b3A6MS44NDM3NWVtO21hcmdpbi10b3A6LTAuMjVlbX0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1vdXRsaW5lLm1hdC1mb3JtLWZpZWxkLWNhbi1mbG9hdC5tYXQtZm9ybS1maWVsZC1zaG91bGQtZmxvYXRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2Utb3V0bGluZS5tYXQtZm9ybS1maWVsZC1jYW4tZmxvYXRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pbnB1dC1zZXJ2ZXJbX25nY29udGVudC0lQ09NUCVdOmZvY3VzICsgLm1hdC1mb3JtLWZpZWxkLWxhYmVsLXdyYXBwZXJbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXt0cmFuc2Zvcm06dHJhbnNsYXRlWSgtMS41OTM3NWVtKSBzY2FsZSgwLjc1KTt3aWR0aDoxMzMuMzMzMzMzMzMzMyV9Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2Utb3V0bGluZS5tYXQtZm9ybS1maWVsZC1jYW4tZmxvYXRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pbnB1dC1zZXJ2ZXJbbGFiZWxdW19uZ2NvbnRlbnQtJUNPTVAlXTpub3QoOmxhYmVsLXNob3duKSArIC5tYXQtZm9ybS1maWVsZC1sYWJlbC13cmFwcGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17dHJhbnNmb3JtOnRyYW5zbGF0ZVkoLTEuNTkzNzRlbSkgc2NhbGUoMC43NSk7d2lkdGg6MTMzLjMzMzM0MzMzMzMlfS5tYXQtZ3JpZC10aWxlLWhlYWRlcltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtZ3JpZC10aWxlLWZvb3Rlcltfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjE0cHh9Lm1hdC1ncmlkLXRpbGUtaGVhZGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGluZVtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtZ3JpZC10aWxlLWZvb3Rlcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpbmVbX25nY29udGVudC0lQ09NUCVde3doaXRlLXNwYWNlOm5vd3JhcDtvdmVyZmxvdzpoaWRkZW47dGV4dC1vdmVyZmxvdzplbGxpcHNpcztkaXNwbGF5OmJsb2NrO2JveC1zaXppbmc6Ym9yZGVyLWJveH0ubWF0LWdyaWQtdGlsZS1oZWFkZXJbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saW5lW19uZ2NvbnRlbnQtJUNPTVAlXTpudGgtY2hpbGQobisyKSwgLm1hdC1ncmlkLXRpbGUtZm9vdGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGluZVtfbmdjb250ZW50LSVDT01QJV06bnRoLWNoaWxkKG4rMil7Zm9udC1zaXplOjEycHh9aW5wdXQubWF0LWlucHV0LWVsZW1lbnRbX25nY29udGVudC0lQ09NUCVde21hcmdpbi10b3A6LTAuMDYyNWVtfS5tYXQtbWVudS1pdGVtW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7Zm9udC1zaXplOjE0cHg7Zm9udC13ZWlnaHQ6NDAwfS5tYXQtcGFnaW5hdG9yW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1wYWdpbmF0b3ItcGFnZS1zaXplW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtc2VsZWN0LXRyaWdnZXJbX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtmb250LXNpemU6MTJweH0ubWF0LXJhZGlvLWJ1dHRvbltfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmfS5tYXQtc2VsZWN0W19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWZ9Lm1hdC1zZWxlY3QtdHJpZ2dlcltfbmdjb250ZW50LSVDT01QJV17aGVpZ2h0OjEuMTI1ZW19Lm1hdC1zbGlkZS10b2dnbGUtY29udGVudFtfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmfS5tYXQtc2xpZGVyLXRodW1iLWxhYmVsLXRleHRbX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtmb250LXNpemU6MTJweDtmb250LXdlaWdodDo1MDB9Lm1hdC1zdGVwcGVyLXZlcnRpY2FsW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1zdGVwcGVyLWhvcml6b250YWxbX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZn0ubWF0LXN0ZXAtbGFiZWxbX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToxNHB4O2ZvbnQtd2VpZ2h0OjQwMH0ubWF0LXN0ZXAtc3ViLWxhYmVsLWVycm9yW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXdlaWdodDpub3JtYWx9Lm1hdC1zdGVwLWxhYmVsLWVycm9yW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MTRweH0ubWF0LXN0ZXAtbGFiZWwtc2VsZWN0ZWRbX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToxNHB4O2ZvbnQtd2VpZ2h0OjUwMH0ubWF0LXRhYi1ncm91cFtfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmfS5tYXQtdGFiLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10YWItbGlua1tfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2ZvbnQtc2l6ZToxNHB4O2ZvbnQtd2VpZ2h0OjUwMH0ubWF0LXRvb2xiYXJbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXRvb2xiYXJbX25nY29udGVudC0lQ09NUCVdICAgaDFbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXRvb2xiYXJbX25nY29udGVudC0lQ09NUCVdICAgaDJbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXRvb2xiYXJbX25nY29udGVudC0lQ09NUCVdICAgaDNbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXRvb2xiYXJbX25nY29udGVudC0lQ09NUCVdICAgaDRbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXRvb2xiYXJbX25nY29udGVudC0lQ09NUCVdICAgaDVbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXRvb2xiYXJbX25nY29udGVudC0lQ09NUCVdICAgaDZbX25nY29udGVudC0lQ09NUCVde2ZvbnQ6NTAwIDIwcHgvMzJweCBSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7bGV0dGVyLXNwYWNpbmc6bm9ybWFsO21hcmdpbjowfS5tYXQtdG9vbHRpcFtfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2ZvbnQtc2l6ZToxMHB4O3BhZGRpbmctdG9wOjZweDtwYWRkaW5nLWJvdHRvbTo2cHh9Lm1hdC10b29sdGlwLWhhbmRzZXRbX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToxNHB4O3BhZGRpbmctdG9wOjhweDtwYWRkaW5nLWJvdHRvbTo4cHh9Lm1hdC1saXN0LWl0ZW1bX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZn0ubWF0LWxpc3Qtb3B0aW9uW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWZ9Lm1hdC1saXN0LWJhc2VbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saXN0LWl0ZW1bX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToxNnB4fS5tYXQtbGlzdC1iYXNlW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGlzdC1pdGVtW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGluZVtfbmdjb250ZW50LSVDT01QJV17d2hpdGUtc3BhY2U6bm93cmFwO292ZXJmbG93OmhpZGRlbjt0ZXh0LW92ZXJmbG93OmVsbGlwc2lzO2Rpc3BsYXk6YmxvY2s7Ym94LXNpemluZzpib3JkZXItYm94fS5tYXQtbGlzdC1iYXNlW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGlzdC1pdGVtW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGluZVtfbmdjb250ZW50LSVDT01QJV06bnRoLWNoaWxkKG4rMil7Zm9udC1zaXplOjE0cHh9Lm1hdC1saXN0LWJhc2VbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saXN0LW9wdGlvbltfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjE2cHh9Lm1hdC1saXN0LWJhc2VbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saXN0LW9wdGlvbltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpbmVbX25nY29udGVudC0lQ09NUCVde3doaXRlLXNwYWNlOm5vd3JhcDtvdmVyZmxvdzpoaWRkZW47dGV4dC1vdmVyZmxvdzplbGxpcHNpcztkaXNwbGF5OmJsb2NrO2JveC1zaXppbmc6Ym9yZGVyLWJveH0ubWF0LWxpc3QtYmFzZVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpc3Qtb3B0aW9uW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGluZVtfbmdjb250ZW50LSVDT01QJV06bnRoLWNoaWxkKG4rMil7Zm9udC1zaXplOjE0cHh9Lm1hdC1saXN0LWJhc2VbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1zdWJoZWFkZXJbX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtmb250LXNpemU6MTRweDtmb250LXdlaWdodDo1MDB9Lm1hdC1saXN0LWJhc2VbZGVuc2VdW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGlzdC1pdGVtW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MTJweH0ubWF0LWxpc3QtYmFzZVtkZW5zZV1bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saXN0LWl0ZW1bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saW5lW19uZ2NvbnRlbnQtJUNPTVAlXXt3aGl0ZS1zcGFjZTpub3dyYXA7b3ZlcmZsb3c6aGlkZGVuO3RleHQtb3ZlcmZsb3c6ZWxsaXBzaXM7ZGlzcGxheTpibG9jaztib3gtc2l6aW5nOmJvcmRlci1ib3h9Lm1hdC1saXN0LWJhc2VbZGVuc2VdW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGlzdC1pdGVtW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGluZVtfbmdjb250ZW50LSVDT01QJV06bnRoLWNoaWxkKG4rMil7Zm9udC1zaXplOjEycHh9Lm1hdC1saXN0LWJhc2VbZGVuc2VdW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGlzdC1vcHRpb25bX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToxMnB4fS5tYXQtbGlzdC1iYXNlW2RlbnNlXVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpc3Qtb3B0aW9uW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGluZVtfbmdjb250ZW50LSVDT01QJV17d2hpdGUtc3BhY2U6bm93cmFwO292ZXJmbG93OmhpZGRlbjt0ZXh0LW92ZXJmbG93OmVsbGlwc2lzO2Rpc3BsYXk6YmxvY2s7Ym94LXNpemluZzpib3JkZXItYm94fS5tYXQtbGlzdC1iYXNlW2RlbnNlXVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpc3Qtb3B0aW9uW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGluZVtfbmdjb250ZW50LSVDT01QJV06bnRoLWNoaWxkKG4rMil7Zm9udC1zaXplOjEycHh9Lm1hdC1saXN0LWJhc2VbZGVuc2VdW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtc3ViaGVhZGVyW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7Zm9udC1zaXplOjEycHg7Zm9udC13ZWlnaHQ6NTAwfS5tYXQtb3B0aW9uW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7Zm9udC1zaXplOjE2cHh9Lm1hdC1vcHRncm91cC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17Zm9udDo1MDAgMTRweC8yNHB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtsZXR0ZXItc3BhY2luZzpub3JtYWx9Lm1hdC1zaW1wbGUtc25hY2tiYXJbX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtmb250LXNpemU6MTRweH0ubWF0LXNpbXBsZS1zbmFja2Jhci1hY3Rpb25bX25nY29udGVudC0lQ09NUCVde2xpbmUtaGVpZ2h0OjE7Zm9udC1mYW1pbHk6aW5oZXJpdDtmb250LXNpemU6aW5oZXJpdDtmb250LXdlaWdodDo1MDB9Lm1hdC10cmVlW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWZ9Lm1hdC10cmVlLW5vZGVbX25nY29udGVudC0lQ09NUCVdLCAubWF0LW5lc3RlZC10cmVlLW5vZGVbX25nY29udGVudC0lQ09NUCVde2ZvbnQtd2VpZ2h0OjQwMDtmb250LXNpemU6MTRweH0ubWF0LXJpcHBsZVtfbmdjb250ZW50LSVDT01QJV17b3ZlcmZsb3c6aGlkZGVuO3Bvc2l0aW9uOnJlbGF0aXZlfS5tYXQtcmlwcGxlW19uZ2NvbnRlbnQtJUNPTVAlXTpub3QoOmVtcHR5KXt0cmFuc2Zvcm06dHJhbnNsYXRlWigwKX0ubWF0LXJpcHBsZS5tYXQtcmlwcGxlLXVuYm91bmRlZFtfbmdjb250ZW50LSVDT01QJV17b3ZlcmZsb3c6dmlzaWJsZX0ubWF0LXJpcHBsZS1lbGVtZW50W19uZ2NvbnRlbnQtJUNPTVAlXXtwb3NpdGlvbjphYnNvbHV0ZTtib3JkZXItcmFkaXVzOjUwJTtwb2ludGVyLWV2ZW50czpub25lO3RyYW5zaXRpb246b3BhY2l0eSx0cmFuc2Zvcm0gMG1zIGN1YmljLWJlemllcigwLCAwLCAwLjIsIDEpO3RyYW5zZm9ybTpzY2FsZSgwKX0uY2RrLWhpZ2gtY29udHJhc3QtYWN0aXZlW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtcmlwcGxlLWVsZW1lbnRbX25nY29udGVudC0lQ09NUCVde2Rpc3BsYXk6bm9uZX0uY2RrLXZpc3VhbGx5LWhpZGRlbltfbmdjb250ZW50LSVDT01QJV17Ym9yZGVyOjA7Y2xpcDpyZWN0KDAgMCAwIDApO2hlaWdodDoxcHg7bWFyZ2luOi0xcHg7b3ZlcmZsb3c6aGlkZGVuO3BhZGRpbmc6MDtwb3NpdGlvbjphYnNvbHV0ZTt3aWR0aDoxcHg7b3V0bGluZTowOy13ZWJraXQtYXBwZWFyYW5jZTpub25lOy1tb3otYXBwZWFyYW5jZTpub25lfS5jZGstb3ZlcmxheS1jb250YWluZXJbX25nY29udGVudC0lQ09NUCVdLCAuY2RrLWdsb2JhbC1vdmVybGF5LXdyYXBwZXJbX25nY29udGVudC0lQ09NUCVde3BvaW50ZXItZXZlbnRzOm5vbmU7dG9wOjA7bGVmdDowO2hlaWdodDoxMDAlO3dpZHRoOjEwMCV9LmNkay1vdmVybGF5LWNvbnRhaW5lcltfbmdjb250ZW50LSVDT01QJV17cG9zaXRpb246Zml4ZWQ7ei1pbmRleDoxMDAwfS5jZGstb3ZlcmxheS1jb250YWluZXJbX25nY29udGVudC0lQ09NUCVdOmVtcHR5e2Rpc3BsYXk6bm9uZX0uY2RrLWdsb2JhbC1vdmVybGF5LXdyYXBwZXJbX25nY29udGVudC0lQ09NUCVde2Rpc3BsYXk6ZmxleDtwb3NpdGlvbjphYnNvbHV0ZTt6LWluZGV4OjEwMDB9LmNkay1vdmVybGF5LXBhbmVbX25nY29udGVudC0lQ09NUCVde3Bvc2l0aW9uOmFic29sdXRlO3BvaW50ZXItZXZlbnRzOmF1dG87Ym94LXNpemluZzpib3JkZXItYm94O3otaW5kZXg6MTAwMDtkaXNwbGF5OmZsZXg7bWF4LXdpZHRoOjEwMCU7bWF4LWhlaWdodDoxMDAlfS5jZGstb3ZlcmxheS1iYWNrZHJvcFtfbmdjb250ZW50LSVDT01QJV17cG9zaXRpb246YWJzb2x1dGU7dG9wOjA7Ym90dG9tOjA7bGVmdDowO3JpZ2h0OjA7ei1pbmRleDoxMDAwO3BvaW50ZXItZXZlbnRzOmF1dG87LXdlYmtpdC10YXAtaGlnaGxpZ2h0LWNvbG9yOnRyYW5zcGFyZW50O3RyYW5zaXRpb246b3BhY2l0eSA0MDBtcyBjdWJpYy1iZXppZXIoMC4yNSwgMC44LCAwLjI1LCAxKTtvcGFjaXR5OjB9LmNkay1vdmVybGF5LWJhY2tkcm9wLmNkay1vdmVybGF5LWJhY2tkcm9wLXNob3dpbmdbX25nY29udGVudC0lQ09NUCVde29wYWNpdHk6MX1AbWVkaWEgc2NyZWVuIGFuZCAoLW1zLWhpZ2gtY29udHJhc3Q6IGFjdGl2ZSl7LmNkay1vdmVybGF5LWJhY2tkcm9wLmNkay1vdmVybGF5LWJhY2tkcm9wLXNob3dpbmdbX25nY29udGVudC0lQ09NUCVde29wYWNpdHk6LjZ9fS5jZGstb3ZlcmxheS1kYXJrLWJhY2tkcm9wW19uZ2NvbnRlbnQtJUNPTVAlXXtiYWNrZ3JvdW5kOnJnYmEoMCwwLDAsLjMyKX0uY2RrLW92ZXJsYXktdHJhbnNwYXJlbnQtYmFja2Ryb3BbX25nY29udGVudC0lQ09NUCVdLCAuY2RrLW92ZXJsYXktdHJhbnNwYXJlbnQtYmFja2Ryb3AuY2RrLW92ZXJsYXktYmFja2Ryb3Atc2hvd2luZ1tfbmdjb250ZW50LSVDT01QJV17b3BhY2l0eTowfS5jZGstb3ZlcmxheS1jb25uZWN0ZWQtcG9zaXRpb24tYm91bmRpbmctYm94W19uZ2NvbnRlbnQtJUNPTVAlXXtwb3NpdGlvbjphYnNvbHV0ZTt6LWluZGV4OjEwMDA7ZGlzcGxheTpmbGV4O2ZsZXgtZGlyZWN0aW9uOmNvbHVtbjttaW4td2lkdGg6MXB4O21pbi1oZWlnaHQ6MXB4fS5jZGstZ2xvYmFsLXNjcm9sbGJsb2NrW19uZ2NvbnRlbnQtJUNPTVAlXXtwb3NpdGlvbjpmaXhlZDt3aWR0aDoxMDAlO292ZXJmbG93LXk6c2Nyb2xsfUBrZXlmcmFtZXMgY2RrLXRleHQtZmllbGQtYXV0b2ZpbGwtc3RhcnR7fUBrZXlmcmFtZXMgY2RrLXRleHQtZmllbGQtYXV0b2ZpbGwtZW5ke30uY2RrLXRleHQtZmllbGQtYXV0b2ZpbGwtbW9uaXRvcmVkW19uZ2NvbnRlbnQtJUNPTVAlXTotd2Via2l0LWF1dG9maWxse2FuaW1hdGlvbjpjZGstdGV4dC1maWVsZC1hdXRvZmlsbC1zdGFydCAwcyAxbXN9LmNkay10ZXh0LWZpZWxkLWF1dG9maWxsLW1vbml0b3JlZFtfbmdjb250ZW50LSVDT01QJV06bm90KDotd2Via2l0LWF1dG9maWxsKXthbmltYXRpb246Y2RrLXRleHQtZmllbGQtYXV0b2ZpbGwtZW5kIDBzIDFtc310ZXh0YXJlYS5jZGstdGV4dGFyZWEtYXV0b3NpemVbX25nY29udGVudC0lQ09NUCVde3Jlc2l6ZTpub25lfXRleHRhcmVhLmNkay10ZXh0YXJlYS1hdXRvc2l6ZS1tZWFzdXJpbmdbX25nY29udGVudC0lQ09NUCVde3BhZGRpbmc6MnB4IDAgIWltcG9ydGFudDtib3gtc2l6aW5nOmNvbnRlbnQtYm94ICFpbXBvcnRhbnQ7aGVpZ2h0OmF1dG8gIWltcG9ydGFudDtvdmVyZmxvdzpoaWRkZW4gIWltcG9ydGFudH10ZXh0YXJlYS5jZGstdGV4dGFyZWEtYXV0b3NpemUtbWVhc3VyaW5nLWZpcmVmb3hbX25nY29udGVudC0lQ09NUCVde3BhZGRpbmc6MnB4IDAgIWltcG9ydGFudDtib3gtc2l6aW5nOmNvbnRlbnQtYm94ICFpbXBvcnRhbnQ7aGVpZ2h0OjAgIWltcG9ydGFudH0ubWF0LWZvY3VzLWluZGljYXRvcltfbmdjb250ZW50LSVDT01QJV17cG9zaXRpb246cmVsYXRpdmV9Lm1hdC1tZGMtZm9jdXMtaW5kaWNhdG9yW19uZ2NvbnRlbnQtJUNPTVAlXXtwb3NpdGlvbjpyZWxhdGl2ZX0ubWF0LXJpcHBsZS1lbGVtZW50W19uZ2NvbnRlbnQtJUNPTVAlXXtiYWNrZ3JvdW5kLWNvbG9yOnJnYmEoMCwwLDAsLjEpfS5tYXQtb3B0aW9uW19uZ2NvbnRlbnQtJUNPTVAlXXtjb2xvcjojMjEyMTIxfS5tYXQtb3B0aW9uW19uZ2NvbnRlbnQtJUNPTVAlXTpob3Zlcjpub3QoLm1hdC1vcHRpb24tZGlzYWJsZWQpLCAubWF0LW9wdGlvbltfbmdjb250ZW50LSVDT01QJV06Zm9jdXM6bm90KC5tYXQtb3B0aW9uLWRpc2FibGVkKXtiYWNrZ3JvdW5kOnJnYmEoMCwwLDAsLjA0KX0ubWF0LW9wdGlvbi5tYXQtc2VsZWN0ZWRbX25nY29udGVudC0lQ09NUCVdOm5vdCgubWF0LW9wdGlvbi1tdWx0aXBsZSk6bm90KC5tYXQtb3B0aW9uLWRpc2FibGVkKXtiYWNrZ3JvdW5kOnJnYmEoMCwwLDAsLjA0KX0ubWF0LW9wdGlvbi5tYXQtYWN0aXZlW19uZ2NvbnRlbnQtJUNPTVAlXXtiYWNrZ3JvdW5kOnJnYmEoMCwwLDAsLjA0KTtjb2xvcjojMjEyMTIxfS5tYXQtb3B0aW9uLm1hdC1vcHRpb24tZGlzYWJsZWRbX25nY29udGVudC0lQ09NUCVde2NvbG9yOnJnYmEoMCwwLDAsLjM4KX0ubWF0LXByaW1hcnlbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1vcHRpb24ubWF0LXNlbGVjdGVkW19uZ2NvbnRlbnQtJUNPTVAlXTpub3QoLm1hdC1vcHRpb24tZGlzYWJsZWQpe2NvbG9yOiNmNTdjMDB9Lm1hdC1hY2NlbnRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1vcHRpb24ubWF0LXNlbGVjdGVkW19uZ2NvbnRlbnQtJUNPTVAlXTpub3QoLm1hdC1vcHRpb24tZGlzYWJsZWQpe2NvbG9yOiNmZjk4MDB9Lm1hdC13YXJuW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtb3B0aW9uLm1hdC1zZWxlY3RlZFtfbmdjb250ZW50LSVDT01QJV06bm90KC5tYXQtb3B0aW9uLWRpc2FibGVkKXtjb2xvcjojZjQ0MzM2fS5tYXQtb3B0Z3JvdXAtbGFiZWxbX25nY29udGVudC0lQ09NUCVde2NvbG9yOiM2MTYxNjF9Lm1hdC1vcHRncm91cC1kaXNhYmxlZFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LW9wdGdyb3VwLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXtjb2xvcjpyZ2JhKDAsMCwwLC4zOCl9Lm1hdC1wc2V1ZG8tY2hlY2tib3hbX25nY29udGVudC0lQ09NUCVde2NvbG9yOiM2MTYxNjF9Lm1hdC1wc2V1ZG8tY2hlY2tib3hbX25nY29udGVudC0lQ09NUCVdOjphZnRlcntjb2xvcjojZmFmYWZhfS5tYXQtcHNldWRvLWNoZWNrYm94LWRpc2FibGVkW19uZ2NvbnRlbnQtJUNPTVAlXXtjb2xvcjojYjBiMGIwfS5tYXQtcHJpbWFyeVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXBzZXVkby1jaGVja2JveC1jaGVja2VkW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1wcmltYXJ5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtcHNldWRvLWNoZWNrYm94LWluZGV0ZXJtaW5hdGVbX25nY29udGVudC0lQ09NUCVde2JhY2tncm91bmQ6I2Y1N2MwMH0ubWF0LXBzZXVkby1jaGVja2JveC1jaGVja2VkW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1wc2V1ZG8tY2hlY2tib3gtaW5kZXRlcm1pbmF0ZVtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtYWNjZW50W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtcHNldWRvLWNoZWNrYm94LWNoZWNrZWRbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWFjY2VudFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXBzZXVkby1jaGVja2JveC1pbmRldGVybWluYXRlW19uZ2NvbnRlbnQtJUNPTVAlXXtiYWNrZ3JvdW5kOiNmZjk4MDB9Lm1hdC13YXJuW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtcHNldWRvLWNoZWNrYm94LWNoZWNrZWRbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXdhcm5bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1wc2V1ZG8tY2hlY2tib3gtaW5kZXRlcm1pbmF0ZVtfbmdjb250ZW50LSVDT01QJV17YmFja2dyb3VuZDojZjQ0MzM2fS5tYXQtcHNldWRvLWNoZWNrYm94LWNoZWNrZWQubWF0LXBzZXVkby1jaGVja2JveC1kaXNhYmxlZFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtcHNldWRvLWNoZWNrYm94LWluZGV0ZXJtaW5hdGUubWF0LXBzZXVkby1jaGVja2JveC1kaXNhYmxlZFtfbmdjb250ZW50LSVDT01QJV17YmFja2dyb3VuZDojYjBiMGIwfS5tYXQtYXBwLWJhY2tncm91bmRbX25nY29udGVudC0lQ09NUCVde2JhY2tncm91bmQtY29sb3I6I2ZhZmFmYTtjb2xvcjojMjEyMTIxfS5tYXQtZWxldmF0aW9uLXowW19uZ2NvbnRlbnQtJUNPTVAlXXtib3gtc2hhZG93OjBweCAwcHggMHB4IDBweCByZ2JhKDAsIDAsIDAsIDAuMiksMHB4IDBweCAwcHggMHB4IHJnYmEoMCwgMCwgMCwgMC4xNCksMHB4IDBweCAwcHggMHB4IHJnYmEoMCwgMCwgMCwgMC4xMil9Lm1hdC1lbGV2YXRpb24tejFbX25nY29udGVudC0lQ09NUCVde2JveC1zaGFkb3c6MHB4IDJweCAxcHggLTFweCByZ2JhKDAsIDAsIDAsIDAuMiksMHB4IDFweCAxcHggMHB4IHJnYmEoMCwgMCwgMCwgMC4xNCksMHB4IDFweCAzcHggMHB4IHJnYmEoMCwgMCwgMCwgMC4xMil9Lm1hdC1lbGV2YXRpb24tejJbX25nY29udGVudC0lQ09NUCVde2JveC1zaGFkb3c6MHB4IDNweCAxcHggLTJweCByZ2JhKDAsIDAsIDAsIDAuMiksMHB4IDJweCAycHggMHB4IHJnYmEoMCwgMCwgMCwgMC4xNCksMHB4IDFweCA1cHggMHB4IHJnYmEoMCwgMCwgMCwgMC4xMil9Lm1hdC1lbGV2YXRpb24tejNbX25nY29udGVudC0lQ09NUCVde2JveC1zaGFkb3c6MHB4IDNweCAzcHggLTJweCByZ2JhKDAsIDAsIDAsIDAuMiksMHB4IDNweCA0cHggMHB4IHJnYmEoMCwgMCwgMCwgMC4xNCksMHB4IDFweCA4cHggMHB4IHJnYmEoMCwgMCwgMCwgMC4xMil9Lm1hdC1lbGV2YXRpb24tejRbX25nY29udGVudC0lQ09NUCVde2JveC1zaGFkb3c6MHB4IDJweCA0cHggLTFweCByZ2JhKDAsIDAsIDAsIDAuMiksMHB4IDRweCA1cHggMHB4IHJnYmEoMCwgMCwgMCwgMC4xNCksMHB4IDFweCAxMHB4IDBweCByZ2JhKDAsIDAsIDAsIDAuMTIpfS5tYXQtZWxldmF0aW9uLXo1W19uZ2NvbnRlbnQtJUNPTVAlXXtib3gtc2hhZG93OjBweCAzcHggNXB4IC0xcHggcmdiYSgwLCAwLCAwLCAwLjIpLDBweCA1cHggOHB4IDBweCByZ2JhKDAsIDAsIDAsIDAuMTQpLDBweCAxcHggMTRweCAwcHggcmdiYSgwLCAwLCAwLCAwLjEyKX0ubWF0LWVsZXZhdGlvbi16Nltfbmdjb250ZW50LSVDT01QJV17Ym94LXNoYWRvdzowcHggM3B4IDVweCAtMXB4IHJnYmEoMCwgMCwgMCwgMC4yKSwwcHggNnB4IDEwcHggMHB4IHJnYmEoMCwgMCwgMCwgMC4xNCksMHB4IDFweCAxOHB4IDBweCByZ2JhKDAsIDAsIDAsIDAuMTIpfS5tYXQtZWxldmF0aW9uLXo3W19uZ2NvbnRlbnQtJUNPTVAlXXtib3gtc2hhZG93OjBweCA0cHggNXB4IC0ycHggcmdiYSgwLCAwLCAwLCAwLjIpLDBweCA3cHggMTBweCAxcHggcmdiYSgwLCAwLCAwLCAwLjE0KSwwcHggMnB4IDE2cHggMXB4IHJnYmEoMCwgMCwgMCwgMC4xMil9Lm1hdC1lbGV2YXRpb24tejhbX25nY29udGVudC0lQ09NUCVde2JveC1zaGFkb3c6MHB4IDVweCA1cHggLTNweCByZ2JhKDAsIDAsIDAsIDAuMiksMHB4IDhweCAxMHB4IDFweCByZ2JhKDAsIDAsIDAsIDAuMTQpLDBweCAzcHggMTRweCAycHggcmdiYSgwLCAwLCAwLCAwLjEyKX0ubWF0LWVsZXZhdGlvbi16OVtfbmdjb250ZW50LSVDT01QJV17Ym94LXNoYWRvdzowcHggNXB4IDZweCAtM3B4IHJnYmEoMCwgMCwgMCwgMC4yKSwwcHggOXB4IDEycHggMXB4IHJnYmEoMCwgMCwgMCwgMC4xNCksMHB4IDNweCAxNnB4IDJweCByZ2JhKDAsIDAsIDAsIDAuMTIpfS5tYXQtZWxldmF0aW9uLXoxMFtfbmdjb250ZW50LSVDT01QJV17Ym94LXNoYWRvdzowcHggNnB4IDZweCAtM3B4IHJnYmEoMCwgMCwgMCwgMC4yKSwwcHggMTBweCAxNHB4IDFweCByZ2JhKDAsIDAsIDAsIDAuMTQpLDBweCA0cHggMThweCAzcHggcmdiYSgwLCAwLCAwLCAwLjEyKX0ubWF0LWVsZXZhdGlvbi16MTFbX25nY29udGVudC0lQ09NUCVde2JveC1zaGFkb3c6MHB4IDZweCA3cHggLTRweCByZ2JhKDAsIDAsIDAsIDAuMiksMHB4IDExcHggMTVweCAxcHggcmdiYSgwLCAwLCAwLCAwLjE0KSwwcHggNHB4IDIwcHggM3B4IHJnYmEoMCwgMCwgMCwgMC4xMil9Lm1hdC1lbGV2YXRpb24tejEyW19uZ2NvbnRlbnQtJUNPTVAlXXtib3gtc2hhZG93OjBweCA3cHggOHB4IC00cHggcmdiYSgwLCAwLCAwLCAwLjIpLDBweCAxMnB4IDE3cHggMnB4IHJnYmEoMCwgMCwgMCwgMC4xNCksMHB4IDVweCAyMnB4IDRweCByZ2JhKDAsIDAsIDAsIDAuMTIpfS5tYXQtZWxldmF0aW9uLXoxM1tfbmdjb250ZW50LSVDT01QJV17Ym94LXNoYWRvdzowcHggN3B4IDhweCAtNHB4IHJnYmEoMCwgMCwgMCwgMC4yKSwwcHggMTNweCAxOXB4IDJweCByZ2JhKDAsIDAsIDAsIDAuMTQpLDBweCA1cHggMjRweCA0cHggcmdiYSgwLCAwLCAwLCAwLjEyKX0ubWF0LWVsZXZhdGlvbi16MTRbX25nY29udGVudC0lQ09NUCVde2JveC1zaGFkb3c6MHB4IDdweCA5cHggLTRweCByZ2JhKDAsIDAsIDAsIDAuMiksMHB4IDE0cHggMjFweCAycHggcmdiYSgwLCAwLCAwLCAwLjE0KSwwcHggNXB4IDI2cHggNHB4IHJnYmEoMCwgMCwgMCwgMC4xMil9Lm1hdC1lbGV2YXRpb24tejE1W19uZ2NvbnRlbnQtJUNPTVAlXXtib3gtc2hhZG93OjBweCA4cHggOXB4IC01cHggcmdiYSgwLCAwLCAwLCAwLjIpLDBweCAxNXB4IDIycHggMnB4IHJnYmEoMCwgMCwgMCwgMC4xNCksMHB4IDZweCAyOHB4IDVweCByZ2JhKDAsIDAsIDAsIDAuMTIpfS5tYXQtZWxldmF0aW9uLXoxNltfbmdjb250ZW50LSVDT01QJV17Ym94LXNoYWRvdzowcHggOHB4IDEwcHggLTVweCByZ2JhKDAsIDAsIDAsIDAuMiksMHB4IDE2cHggMjRweCAycHggcmdiYSgwLCAwLCAwLCAwLjE0KSwwcHggNnB4IDMwcHggNXB4IHJnYmEoMCwgMCwgMCwgMC4xMil9Lm1hdC1lbGV2YXRpb24tejE3W19uZ2NvbnRlbnQtJUNPTVAlXXtib3gtc2hhZG93OjBweCA4cHggMTFweCAtNXB4IHJnYmEoMCwgMCwgMCwgMC4yKSwwcHggMTdweCAyNnB4IDJweCByZ2JhKDAsIDAsIDAsIDAuMTQpLDBweCA2cHggMzJweCA1cHggcmdiYSgwLCAwLCAwLCAwLjEyKX0ubWF0LWVsZXZhdGlvbi16MThbX25nY29udGVudC0lQ09NUCVde2JveC1zaGFkb3c6MHB4IDlweCAxMXB4IC01cHggcmdiYSgwLCAwLCAwLCAwLjIpLDBweCAxOHB4IDI4cHggMnB4IHJnYmEoMCwgMCwgMCwgMC4xNCksMHB4IDdweCAzNHB4IDZweCByZ2JhKDAsIDAsIDAsIDAuMTIpfS5tYXQtZWxldmF0aW9uLXoxOVtfbmdjb250ZW50LSVDT01QJV17Ym94LXNoYWRvdzowcHggOXB4IDEycHggLTZweCByZ2JhKDAsIDAsIDAsIDAuMiksMHB4IDE5cHggMjlweCAycHggcmdiYSgwLCAwLCAwLCAwLjE0KSwwcHggN3B4IDM2cHggNnB4IHJnYmEoMCwgMCwgMCwgMC4xMil9Lm1hdC1lbGV2YXRpb24tejIwW19uZ2NvbnRlbnQtJUNPTVAlXXtib3gtc2hhZG93OjBweCAxMHB4IDEzcHggLTZweCByZ2JhKDAsIDAsIDAsIDAuMiksMHB4IDIwcHggMzFweCAzcHggcmdiYSgwLCAwLCAwLCAwLjE0KSwwcHggOHB4IDM4cHggN3B4IHJnYmEoMCwgMCwgMCwgMC4xMil9Lm1hdC1lbGV2YXRpb24tejIxW19uZ2NvbnRlbnQtJUNPTVAlXXtib3gtc2hhZG93OjBweCAxMHB4IDEzcHggLTZweCByZ2JhKDAsIDAsIDAsIDAuMiksMHB4IDIxcHggMzNweCAzcHggcmdiYSgwLCAwLCAwLCAwLjE0KSwwcHggOHB4IDQwcHggN3B4IHJnYmEoMCwgMCwgMCwgMC4xMil9Lm1hdC1lbGV2YXRpb24tejIyW19uZ2NvbnRlbnQtJUNPTVAlXXtib3gtc2hhZG93OjBweCAxMHB4IDE0cHggLTZweCByZ2JhKDAsIDAsIDAsIDAuMiksMHB4IDIycHggMzVweCAzcHggcmdiYSgwLCAwLCAwLCAwLjE0KSwwcHggOHB4IDQycHggN3B4IHJnYmEoMCwgMCwgMCwgMC4xMil9Lm1hdC1lbGV2YXRpb24tejIzW19uZ2NvbnRlbnQtJUNPTVAlXXtib3gtc2hhZG93OjBweCAxMXB4IDE0cHggLTdweCByZ2JhKDAsIDAsIDAsIDAuMiksMHB4IDIzcHggMzZweCAzcHggcmdiYSgwLCAwLCAwLCAwLjE0KSwwcHggOXB4IDQ0cHggOHB4IHJnYmEoMCwgMCwgMCwgMC4xMil9Lm1hdC1lbGV2YXRpb24tejI0W19uZ2NvbnRlbnQtJUNPTVAlXXtib3gtc2hhZG93OjBweCAxMXB4IDE1cHggLTdweCByZ2JhKDAsIDAsIDAsIDAuMiksMHB4IDI0cHggMzhweCAzcHggcmdiYSgwLCAwLCAwLCAwLjE0KSwwcHggOXB4IDQ2cHggOHB4IHJnYmEoMCwgMCwgMCwgMC4xMil9Lm1hdC10aGVtZS1sb2FkZWQtbWFya2VyW19uZ2NvbnRlbnQtJUNPTVAlXXtkaXNwbGF5Om5vbmV9Lm1hdC1hdXRvY29tcGxldGUtcGFuZWxbX25nY29udGVudC0lQ09NUCVde2JhY2tncm91bmQ6I2ZmZjtjb2xvcjojMjEyMTIxfS5tYXQtYXV0b2NvbXBsZXRlLXBhbmVsW19uZ2NvbnRlbnQtJUNPTVAlXTpub3QoW2NsYXNzKj1tYXQtZWxldmF0aW9uLXpdKXtib3gtc2hhZG93OjBweCAycHggNHB4IC0xcHggcmdiYSgwLCAwLCAwLCAwLjIpLDBweCA0cHggNXB4IDBweCByZ2JhKDAsIDAsIDAsIDAuMTQpLDBweCAxcHggMTBweCAwcHggcmdiYSgwLCAwLCAwLCAwLjEyKX0ubWF0LWF1dG9jb21wbGV0ZS1wYW5lbFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LW9wdGlvbi5tYXQtc2VsZWN0ZWRbX25nY29udGVudC0lQ09NUCVdOm5vdCgubWF0LWFjdGl2ZSk6bm90KDpob3Zlcil7YmFja2dyb3VuZDojZmZmfS5tYXQtYXV0b2NvbXBsZXRlLXBhbmVsW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtb3B0aW9uLm1hdC1zZWxlY3RlZFtfbmdjb250ZW50LSVDT01QJV06bm90KC5tYXQtYWN0aXZlKTpub3QoOmhvdmVyKTpub3QoLm1hdC1vcHRpb24tZGlzYWJsZWQpe2NvbG9yOiMyMTIxMjF9Lm1hdC1iYWRnZS1jb250ZW50W19uZ2NvbnRlbnQtJUNPTVAlXXtjb2xvcjojZmZmO2JhY2tncm91bmQ6I2Y1N2MwMH0uY2RrLWhpZ2gtY29udHJhc3QtYWN0aXZlW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtYmFkZ2UtY29udGVudFtfbmdjb250ZW50LSVDT01QJV17b3V0bGluZTpzb2xpZCAxcHg7Ym9yZGVyLXJhZGl1czowfS5tYXQtYmFkZ2UtYWNjZW50W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtYmFkZ2UtY29udGVudFtfbmdjb250ZW50LSVDT01QJV17YmFja2dyb3VuZDojZmY5ODAwO2NvbG9yOiNmZmZ9Lm1hdC1iYWRnZS13YXJuW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtYmFkZ2UtY29udGVudFtfbmdjb250ZW50LSVDT01QJV17Y29sb3I6I2ZmZjtiYWNrZ3JvdW5kOiNmNDQzMzZ9Lm1hdC1iYWRnZVtfbmdjb250ZW50LSVDT01QJV17cG9zaXRpb246cmVsYXRpdmV9Lm1hdC1iYWRnZS1oaWRkZW5bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1iYWRnZS1jb250ZW50W19uZ2NvbnRlbnQtJUNPTVAlXXtkaXNwbGF5Om5vbmV9Lm1hdC1iYWRnZS1kaXNhYmxlZFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWJhZGdlLWNvbnRlbnRbX25nY29udGVudC0lQ09NUCVde2JhY2tncm91bmQ6I2I5YjliOTtjb2xvcjojNzU3NTc1fS5tYXQtYmFkZ2UtY29udGVudFtfbmdjb250ZW50LSVDT01QJV17cG9zaXRpb246YWJzb2x1dGU7dGV4dC1hbGlnbjpjZW50ZXI7ZGlzcGxheTppbmxpbmUtYmxvY2s7Ym9yZGVyLXJhZGl1czo1MCU7dHJhbnNpdGlvbjp0cmFuc2Zvcm0gMjAwbXMgZWFzZS1pbi1vdXQ7dHJhbnNmb3JtOnNjYWxlKDAuNik7b3ZlcmZsb3c6aGlkZGVuO3doaXRlLXNwYWNlOm5vd3JhcDt0ZXh0LW92ZXJmbG93OmVsbGlwc2lzO3BvaW50ZXItZXZlbnRzOm5vbmV9Lm5nLWFuaW1hdGUtZGlzYWJsZWRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1iYWRnZS1jb250ZW50W19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1iYWRnZS1jb250ZW50Ll9tYXQtYW5pbWF0aW9uLW5vb3BhYmxlW19uZ2NvbnRlbnQtJUNPTVAlXXt0cmFuc2l0aW9uOm5vbmV9Lm1hdC1iYWRnZS1jb250ZW50Lm1hdC1iYWRnZS1hY3RpdmVbX25nY29udGVudC0lQ09NUCVde3RyYW5zZm9ybTpub25lfS5tYXQtYmFkZ2Utc21hbGxbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1iYWRnZS1jb250ZW50W19uZ2NvbnRlbnQtJUNPTVAlXXt3aWR0aDoxNnB4O2hlaWdodDoxNnB4O2xpbmUtaGVpZ2h0OjE2cHh9Lm1hdC1iYWRnZS1zbWFsbC5tYXQtYmFkZ2UtYWJvdmVbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1iYWRnZS1jb250ZW50W19uZ2NvbnRlbnQtJUNPTVAlXXt0b3A6LThweH0ubWF0LWJhZGdlLXNtYWxsLm1hdC1iYWRnZS1iZWxvd1tfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWJhZGdlLWNvbnRlbnRbX25nY29udGVudC0lQ09NUCVde2JvdHRvbTotOHB4fS5tYXQtYmFkZ2Utc21hbGwubWF0LWJhZGdlLWJlZm9yZVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWJhZGdlLWNvbnRlbnRbX25nY29udGVudC0lQ09NUCVde2xlZnQ6LTE2cHh9W2Rpcj1ydGxdW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtYmFkZ2Utc21hbGwubWF0LWJhZGdlLWJlZm9yZVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWJhZGdlLWNvbnRlbnRbX25nY29udGVudC0lQ09NUCVde2xlZnQ6YXV0bztyaWdodDotMTZweH0ubWF0LWJhZGdlLXNtYWxsLm1hdC1iYWRnZS1hZnRlcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWJhZGdlLWNvbnRlbnRbX25nY29udGVudC0lQ09NUCVde3JpZ2h0Oi0xNnB4fVtkaXI9cnRsXVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWJhZGdlLXNtYWxsLm1hdC1iYWRnZS1hZnRlcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWJhZGdlLWNvbnRlbnRbX25nY29udGVudC0lQ09NUCVde3JpZ2h0OmF1dG87bGVmdDotMTZweH0ubWF0LWJhZGdlLXNtYWxsLm1hdC1iYWRnZS1vdmVybGFwLm1hdC1iYWRnZS1iZWZvcmVbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1iYWRnZS1jb250ZW50W19uZ2NvbnRlbnQtJUNPTVAlXXtsZWZ0Oi04cHh9W2Rpcj1ydGxdW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtYmFkZ2Utc21hbGwubWF0LWJhZGdlLW92ZXJsYXAubWF0LWJhZGdlLWJlZm9yZVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWJhZGdlLWNvbnRlbnRbX25nY29udGVudC0lQ09NUCVde2xlZnQ6YXV0bztyaWdodDotOHB4fS5tYXQtYmFkZ2Utc21hbGwubWF0LWJhZGdlLW92ZXJsYXAubWF0LWJhZGdlLWFmdGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtYmFkZ2UtY29udGVudFtfbmdjb250ZW50LSVDT01QJV17cmlnaHQ6LThweH1bZGlyPXJ0bF1bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1iYWRnZS1zbWFsbC5tYXQtYmFkZ2Utb3ZlcmxhcC5tYXQtYmFkZ2UtYWZ0ZXJbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1iYWRnZS1jb250ZW50W19uZ2NvbnRlbnQtJUNPTVAlXXtyaWdodDphdXRvO2xlZnQ6LThweH0ubWF0LWJhZGdlLW1lZGl1bVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWJhZGdlLWNvbnRlbnRbX25nY29udGVudC0lQ09NUCVde3dpZHRoOjIycHg7aGVpZ2h0OjIycHg7bGluZS1oZWlnaHQ6MjJweH0ubWF0LWJhZGdlLW1lZGl1bS5tYXQtYmFkZ2UtYWJvdmVbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1iYWRnZS1jb250ZW50W19uZ2NvbnRlbnQtJUNPTVAlXXt0b3A6LTExcHh9Lm1hdC1iYWRnZS1tZWRpdW0ubWF0LWJhZGdlLWJlbG93W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtYmFkZ2UtY29udGVudFtfbmdjb250ZW50LSVDT01QJV17Ym90dG9tOi0xMXB4fS5tYXQtYmFkZ2UtbWVkaXVtLm1hdC1iYWRnZS1iZWZvcmVbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1iYWRnZS1jb250ZW50W19uZ2NvbnRlbnQtJUNPTVAlXXtsZWZ0Oi0yMnB4fVtkaXI9cnRsXVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWJhZGdlLW1lZGl1bS5tYXQtYmFkZ2UtYmVmb3JlW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtYmFkZ2UtY29udGVudFtfbmdjb250ZW50LSVDT01QJV17bGVmdDphdXRvO3JpZ2h0Oi0yMnB4fS5tYXQtYmFkZ2UtbWVkaXVtLm1hdC1iYWRnZS1hZnRlcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWJhZGdlLWNvbnRlbnRbX25nY29udGVudC0lQ09NUCVde3JpZ2h0Oi0yMnB4fVtkaXI9cnRsXVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWJhZGdlLW1lZGl1bS5tYXQtYmFkZ2UtYWZ0ZXJbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1iYWRnZS1jb250ZW50W19uZ2NvbnRlbnQtJUNPTVAlXXtyaWdodDphdXRvO2xlZnQ6LTIycHh9Lm1hdC1iYWRnZS1tZWRpdW0ubWF0LWJhZGdlLW92ZXJsYXAubWF0LWJhZGdlLWJlZm9yZVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWJhZGdlLWNvbnRlbnRbX25nY29udGVudC0lQ09NUCVde2xlZnQ6LTExcHh9W2Rpcj1ydGxdW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtYmFkZ2UtbWVkaXVtLm1hdC1iYWRnZS1vdmVybGFwLm1hdC1iYWRnZS1iZWZvcmVbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1iYWRnZS1jb250ZW50W19uZ2NvbnRlbnQtJUNPTVAlXXtsZWZ0OmF1dG87cmlnaHQ6LTExcHh9Lm1hdC1iYWRnZS1tZWRpdW0ubWF0LWJhZGdlLW92ZXJsYXAubWF0LWJhZGdlLWFmdGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtYmFkZ2UtY29udGVudFtfbmdjb250ZW50LSVDT01QJV17cmlnaHQ6LTExcHh9W2Rpcj1ydGxdW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtYmFkZ2UtbWVkaXVtLm1hdC1iYWRnZS1vdmVybGFwLm1hdC1iYWRnZS1hZnRlcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWJhZGdlLWNvbnRlbnRbX25nY29udGVudC0lQ09NUCVde3JpZ2h0OmF1dG87bGVmdDotMTFweH0ubWF0LWJhZGdlLWxhcmdlW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtYmFkZ2UtY29udGVudFtfbmdjb250ZW50LSVDT01QJV17d2lkdGg6MjhweDtoZWlnaHQ6MjhweDtsaW5lLWhlaWdodDoyOHB4fS5tYXQtYmFkZ2UtbGFyZ2UubWF0LWJhZGdlLWFib3ZlW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtYmFkZ2UtY29udGVudFtfbmdjb250ZW50LSVDT01QJV17dG9wOi0xNHB4fS5tYXQtYmFkZ2UtbGFyZ2UubWF0LWJhZGdlLWJlbG93W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtYmFkZ2UtY29udGVudFtfbmdjb250ZW50LSVDT01QJV17Ym90dG9tOi0xNHB4fS5tYXQtYmFkZ2UtbGFyZ2UubWF0LWJhZGdlLWJlZm9yZVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWJhZGdlLWNvbnRlbnRbX25nY29udGVudC0lQ09NUCVde2xlZnQ6LTI4cHh9W2Rpcj1ydGxdW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtYmFkZ2UtbGFyZ2UubWF0LWJhZGdlLWJlZm9yZVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWJhZGdlLWNvbnRlbnRbX25nY29udGVudC0lQ09NUCVde2xlZnQ6YXV0bztyaWdodDotMjhweH0ubWF0LWJhZGdlLWxhcmdlLm1hdC1iYWRnZS1hZnRlcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWJhZGdlLWNvbnRlbnRbX25nY29udGVudC0lQ09NUCVde3JpZ2h0Oi0yOHB4fVtkaXI9cnRsXVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWJhZGdlLWxhcmdlLm1hdC1iYWRnZS1hZnRlcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWJhZGdlLWNvbnRlbnRbX25nY29udGVudC0lQ09NUCVde3JpZ2h0OmF1dG87bGVmdDotMjhweH0ubWF0LWJhZGdlLWxhcmdlLm1hdC1iYWRnZS1vdmVybGFwLm1hdC1iYWRnZS1iZWZvcmVbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1iYWRnZS1jb250ZW50W19uZ2NvbnRlbnQtJUNPTVAlXXtsZWZ0Oi0xNHB4fVtkaXI9cnRsXVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWJhZGdlLWxhcmdlLm1hdC1iYWRnZS1vdmVybGFwLm1hdC1iYWRnZS1iZWZvcmVbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1iYWRnZS1jb250ZW50W19uZ2NvbnRlbnQtJUNPTVAlXXtsZWZ0OmF1dG87cmlnaHQ6LTE0cHh9Lm1hdC1iYWRnZS1sYXJnZS5tYXQtYmFkZ2Utb3ZlcmxhcC5tYXQtYmFkZ2UtYWZ0ZXJbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1iYWRnZS1jb250ZW50W19uZ2NvbnRlbnQtJUNPTVAlXXtyaWdodDotMTRweH1bZGlyPXJ0bF1bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1iYWRnZS1sYXJnZS5tYXQtYmFkZ2Utb3ZlcmxhcC5tYXQtYmFkZ2UtYWZ0ZXJbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1iYWRnZS1jb250ZW50W19uZ2NvbnRlbnQtJUNPTVAlXXtyaWdodDphdXRvO2xlZnQ6LTE0cHh9Lm1hdC1ib3R0b20tc2hlZXQtY29udGFpbmVyW19uZ2NvbnRlbnQtJUNPTVAlXXtib3gtc2hhZG93OjBweCA4cHggMTBweCAtNXB4IHJnYmEoMCwgMCwgMCwgMC4yKSwwcHggMTZweCAyNHB4IDJweCByZ2JhKDAsIDAsIDAsIDAuMTQpLDBweCA2cHggMzBweCA1cHggcmdiYSgwLCAwLCAwLCAwLjEyKTtiYWNrZ3JvdW5kOiNmZmY7Y29sb3I6IzIxMjEyMX0ubWF0LWJ1dHRvbltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtaWNvbi1idXR0b25bX25nY29udGVudC0lQ09NUCVdLCAubWF0LXN0cm9rZWQtYnV0dG9uW19uZ2NvbnRlbnQtJUNPTVAlXXtjb2xvcjppbmhlcml0O2JhY2tncm91bmQ6dHJhbnNwYXJlbnR9Lm1hdC1idXR0b24ubWF0LXByaW1hcnlbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWljb24tYnV0dG9uLm1hdC1wcmltYXJ5W19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1zdHJva2VkLWJ1dHRvbi5tYXQtcHJpbWFyeVtfbmdjb250ZW50LSVDT01QJV17Y29sb3I6I2Y1N2MwMH0ubWF0LWJ1dHRvbi5tYXQtYWNjZW50W19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1pY29uLWJ1dHRvbi5tYXQtYWNjZW50W19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1zdHJva2VkLWJ1dHRvbi5tYXQtYWNjZW50W19uZ2NvbnRlbnQtJUNPTVAlXXtjb2xvcjojZmY5ODAwfS5tYXQtYnV0dG9uLm1hdC13YXJuW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1pY29uLWJ1dHRvbi5tYXQtd2Fybltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtc3Ryb2tlZC1idXR0b24ubWF0LXdhcm5bX25nY29udGVudC0lQ09NUCVde2NvbG9yOiNmNDQzMzZ9Lm1hdC1idXR0b24ubWF0LXByaW1hcnkubWF0LWJ1dHRvbi1kaXNhYmxlZFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtYnV0dG9uLm1hdC1hY2NlbnQubWF0LWJ1dHRvbi1kaXNhYmxlZFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtYnV0dG9uLm1hdC13YXJuLm1hdC1idXR0b24tZGlzYWJsZWRbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWJ1dHRvbi5tYXQtYnV0dG9uLWRpc2FibGVkLm1hdC1idXR0b24tZGlzYWJsZWRbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWljb24tYnV0dG9uLm1hdC1wcmltYXJ5Lm1hdC1idXR0b24tZGlzYWJsZWRbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWljb24tYnV0dG9uLm1hdC1hY2NlbnQubWF0LWJ1dHRvbi1kaXNhYmxlZFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtaWNvbi1idXR0b24ubWF0LXdhcm4ubWF0LWJ1dHRvbi1kaXNhYmxlZFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtaWNvbi1idXR0b24ubWF0LWJ1dHRvbi1kaXNhYmxlZC5tYXQtYnV0dG9uLWRpc2FibGVkW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1zdHJva2VkLWJ1dHRvbi5tYXQtcHJpbWFyeS5tYXQtYnV0dG9uLWRpc2FibGVkW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1zdHJva2VkLWJ1dHRvbi5tYXQtYWNjZW50Lm1hdC1idXR0b24tZGlzYWJsZWRbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXN0cm9rZWQtYnV0dG9uLm1hdC13YXJuLm1hdC1idXR0b24tZGlzYWJsZWRbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXN0cm9rZWQtYnV0dG9uLm1hdC1idXR0b24tZGlzYWJsZWQubWF0LWJ1dHRvbi1kaXNhYmxlZFtfbmdjb250ZW50LSVDT01QJV17Y29sb3I6cmdiYSgwLDAsMCwuMjYpfS5tYXQtYnV0dG9uLm1hdC1wcmltYXJ5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtYnV0dG9uLWZvY3VzLW92ZXJsYXlbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWljb24tYnV0dG9uLm1hdC1wcmltYXJ5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtYnV0dG9uLWZvY3VzLW92ZXJsYXlbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXN0cm9rZWQtYnV0dG9uLm1hdC1wcmltYXJ5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtYnV0dG9uLWZvY3VzLW92ZXJsYXlbX25nY29udGVudC0lQ09NUCVde2JhY2tncm91bmQtY29sb3I6I2Y1N2MwMH0ubWF0LWJ1dHRvbi5tYXQtYWNjZW50W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtYnV0dG9uLWZvY3VzLW92ZXJsYXlbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWljb24tYnV0dG9uLm1hdC1hY2NlbnRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1idXR0b24tZm9jdXMtb3ZlcmxheVtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtc3Ryb2tlZC1idXR0b24ubWF0LWFjY2VudFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWJ1dHRvbi1mb2N1cy1vdmVybGF5W19uZ2NvbnRlbnQtJUNPTVAlXXtiYWNrZ3JvdW5kLWNvbG9yOiNmZjk4MDB9Lm1hdC1idXR0b24ubWF0LXdhcm5bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1idXR0b24tZm9jdXMtb3ZlcmxheVtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtaWNvbi1idXR0b24ubWF0LXdhcm5bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1idXR0b24tZm9jdXMtb3ZlcmxheVtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtc3Ryb2tlZC1idXR0b24ubWF0LXdhcm5bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1idXR0b24tZm9jdXMtb3ZlcmxheVtfbmdjb250ZW50LSVDT01QJV17YmFja2dyb3VuZC1jb2xvcjojZjQ0MzM2fS5tYXQtYnV0dG9uLm1hdC1idXR0b24tZGlzYWJsZWRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1idXR0b24tZm9jdXMtb3ZlcmxheVtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtaWNvbi1idXR0b24ubWF0LWJ1dHRvbi1kaXNhYmxlZFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWJ1dHRvbi1mb2N1cy1vdmVybGF5W19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1zdHJva2VkLWJ1dHRvbi5tYXQtYnV0dG9uLWRpc2FibGVkW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtYnV0dG9uLWZvY3VzLW92ZXJsYXlbX25nY29udGVudC0lQ09NUCVde2JhY2tncm91bmQtY29sb3I6dHJhbnNwYXJlbnR9Lm1hdC1idXR0b25bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1yaXBwbGUtZWxlbWVudFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtaWNvbi1idXR0b25bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1yaXBwbGUtZWxlbWVudFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtc3Ryb2tlZC1idXR0b25bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1yaXBwbGUtZWxlbWVudFtfbmdjb250ZW50LSVDT01QJV17b3BhY2l0eTouMTtiYWNrZ3JvdW5kLWNvbG9yOmN1cnJlbnRDb2xvcn0ubWF0LWJ1dHRvbi1mb2N1cy1vdmVybGF5W19uZ2NvbnRlbnQtJUNPTVAlXXtiYWNrZ3JvdW5kOiMwMDB9Lm1hdC1zdHJva2VkLWJ1dHRvbltfbmdjb250ZW50LSVDT01QJV06bm90KC5tYXQtYnV0dG9uLWRpc2FibGVkKXtib3JkZXItY29sb3I6cmdiYSgwLDAsMCwuMTIpfS5tYXQtZmxhdC1idXR0b25bX25nY29udGVudC0lQ09NUCVdLCAubWF0LXJhaXNlZC1idXR0b25bX25nY29udGVudC0lQ09NUCVdLCAubWF0LWZhYltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtbWluaS1mYWJbX25nY29udGVudC0lQ09NUCVde2NvbG9yOiMyMTIxMjE7YmFja2dyb3VuZC1jb2xvcjojZmZmfS5tYXQtZmxhdC1idXR0b24ubWF0LXByaW1hcnlbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXJhaXNlZC1idXR0b24ubWF0LXByaW1hcnlbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWZhYi5tYXQtcHJpbWFyeVtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtbWluaS1mYWIubWF0LXByaW1hcnlbX25nY29udGVudC0lQ09NUCVde2NvbG9yOiNmZmZ9Lm1hdC1mbGF0LWJ1dHRvbi5tYXQtYWNjZW50W19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1yYWlzZWQtYnV0dG9uLm1hdC1hY2NlbnRbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWZhYi5tYXQtYWNjZW50W19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1taW5pLWZhYi5tYXQtYWNjZW50W19uZ2NvbnRlbnQtJUNPTVAlXXtjb2xvcjojZmZmfS5tYXQtZmxhdC1idXR0b24ubWF0LXdhcm5bX25nY29udGVudC0lQ09NUCVdLCAubWF0LXJhaXNlZC1idXR0b24ubWF0LXdhcm5bX25nY29udGVudC0lQ09NUCVdLCAubWF0LWZhYi5tYXQtd2Fybltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtbWluaS1mYWIubWF0LXdhcm5bX25nY29udGVudC0lQ09NUCVde2NvbG9yOiNmZmZ9Lm1hdC1mbGF0LWJ1dHRvbi5tYXQtcHJpbWFyeS5tYXQtYnV0dG9uLWRpc2FibGVkW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1mbGF0LWJ1dHRvbi5tYXQtYWNjZW50Lm1hdC1idXR0b24tZGlzYWJsZWRbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWZsYXQtYnV0dG9uLm1hdC13YXJuLm1hdC1idXR0b24tZGlzYWJsZWRbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWZsYXQtYnV0dG9uLm1hdC1idXR0b24tZGlzYWJsZWQubWF0LWJ1dHRvbi1kaXNhYmxlZFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtcmFpc2VkLWJ1dHRvbi5tYXQtcHJpbWFyeS5tYXQtYnV0dG9uLWRpc2FibGVkW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1yYWlzZWQtYnV0dG9uLm1hdC1hY2NlbnQubWF0LWJ1dHRvbi1kaXNhYmxlZFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtcmFpc2VkLWJ1dHRvbi5tYXQtd2Fybi5tYXQtYnV0dG9uLWRpc2FibGVkW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1yYWlzZWQtYnV0dG9uLm1hdC1idXR0b24tZGlzYWJsZWQubWF0LWJ1dHRvbi1kaXNhYmxlZFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtZmFiLm1hdC1wcmltYXJ5Lm1hdC1idXR0b24tZGlzYWJsZWRbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWZhYi5tYXQtYWNjZW50Lm1hdC1idXR0b24tZGlzYWJsZWRbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWZhYi5tYXQtd2Fybi5tYXQtYnV0dG9uLWRpc2FibGVkW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1mYWIubWF0LWJ1dHRvbi1kaXNhYmxlZC5tYXQtYnV0dG9uLWRpc2FibGVkW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1taW5pLWZhYi5tYXQtcHJpbWFyeS5tYXQtYnV0dG9uLWRpc2FibGVkW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1taW5pLWZhYi5tYXQtYWNjZW50Lm1hdC1idXR0b24tZGlzYWJsZWRbX25nY29udGVudC0lQ09NUCVdLCAubWF0LW1pbmktZmFiLm1hdC13YXJuLm1hdC1idXR0b24tZGlzYWJsZWRbX25nY29udGVudC0lQ09NUCVdLCAubWF0LW1pbmktZmFiLm1hdC1idXR0b24tZGlzYWJsZWQubWF0LWJ1dHRvbi1kaXNhYmxlZFtfbmdjb250ZW50LSVDT01QJV17Y29sb3I6cmdiYSgwLDAsMCwuMjYpfS5tYXQtZmxhdC1idXR0b24ubWF0LXByaW1hcnlbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXJhaXNlZC1idXR0b24ubWF0LXByaW1hcnlbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWZhYi5tYXQtcHJpbWFyeVtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtbWluaS1mYWIubWF0LXByaW1hcnlbX25nY29udGVudC0lQ09NUCVde2JhY2tncm91bmQtY29sb3I6I2Y1N2MwMH0ubWF0LWZsYXQtYnV0dG9uLm1hdC1hY2NlbnRbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXJhaXNlZC1idXR0b24ubWF0LWFjY2VudFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtZmFiLm1hdC1hY2NlbnRbX25nY29udGVudC0lQ09NUCVdLCAubWF0LW1pbmktZmFiLm1hdC1hY2NlbnRbX25nY29udGVudC0lQ09NUCVde2JhY2tncm91bmQtY29sb3I6I2ZmOTgwMH0ubWF0LWZsYXQtYnV0dG9uLm1hdC13YXJuW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1yYWlzZWQtYnV0dG9uLm1hdC13YXJuW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1mYWIubWF0LXdhcm5bX25nY29udGVudC0lQ09NUCVdLCAubWF0LW1pbmktZmFiLm1hdC13YXJuW19uZ2NvbnRlbnQtJUNPTVAlXXtiYWNrZ3JvdW5kLWNvbG9yOiNmNDQzMzZ9Lm1hdC1mbGF0LWJ1dHRvbi5tYXQtcHJpbWFyeS5tYXQtYnV0dG9uLWRpc2FibGVkW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1mbGF0LWJ1dHRvbi5tYXQtYWNjZW50Lm1hdC1idXR0b24tZGlzYWJsZWRbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWZsYXQtYnV0dG9uLm1hdC13YXJuLm1hdC1idXR0b24tZGlzYWJsZWRbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWZsYXQtYnV0dG9uLm1hdC1idXR0b24tZGlzYWJsZWQubWF0LWJ1dHRvbi1kaXNhYmxlZFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtcmFpc2VkLWJ1dHRvbi5tYXQtcHJpbWFyeS5tYXQtYnV0dG9uLWRpc2FibGVkW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1yYWlzZWQtYnV0dG9uLm1hdC1hY2NlbnQubWF0LWJ1dHRvbi1kaXNhYmxlZFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtcmFpc2VkLWJ1dHRvbi5tYXQtd2Fybi5tYXQtYnV0dG9uLWRpc2FibGVkW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1yYWlzZWQtYnV0dG9uLm1hdC1idXR0b24tZGlzYWJsZWQubWF0LWJ1dHRvbi1kaXNhYmxlZFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtZmFiLm1hdC1wcmltYXJ5Lm1hdC1idXR0b24tZGlzYWJsZWRbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWZhYi5tYXQtYWNjZW50Lm1hdC1idXR0b24tZGlzYWJsZWRbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWZhYi5tYXQtd2Fybi5tYXQtYnV0dG9uLWRpc2FibGVkW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1mYWIubWF0LWJ1dHRvbi1kaXNhYmxlZC5tYXQtYnV0dG9uLWRpc2FibGVkW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1taW5pLWZhYi5tYXQtcHJpbWFyeS5tYXQtYnV0dG9uLWRpc2FibGVkW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1taW5pLWZhYi5tYXQtYWNjZW50Lm1hdC1idXR0b24tZGlzYWJsZWRbX25nY29udGVudC0lQ09NUCVdLCAubWF0LW1pbmktZmFiLm1hdC13YXJuLm1hdC1idXR0b24tZGlzYWJsZWRbX25nY29udGVudC0lQ09NUCVdLCAubWF0LW1pbmktZmFiLm1hdC1idXR0b24tZGlzYWJsZWQubWF0LWJ1dHRvbi1kaXNhYmxlZFtfbmdjb250ZW50LSVDT01QJV17YmFja2dyb3VuZC1jb2xvcjpyZ2JhKDAsMCwwLC4xMil9Lm1hdC1mbGF0LWJ1dHRvbi5tYXQtcHJpbWFyeVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXJpcHBsZS1lbGVtZW50W19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1yYWlzZWQtYnV0dG9uLm1hdC1wcmltYXJ5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtcmlwcGxlLWVsZW1lbnRbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWZhYi5tYXQtcHJpbWFyeVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXJpcHBsZS1lbGVtZW50W19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1taW5pLWZhYi5tYXQtcHJpbWFyeVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXJpcHBsZS1lbGVtZW50W19uZ2NvbnRlbnQtJUNPTVAlXXtiYWNrZ3JvdW5kLWNvbG9yOnJnYmEoMjU1LDI1NSwyNTUsLjEpfS5tYXQtZmxhdC1idXR0b24ubWF0LWFjY2VudFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXJpcHBsZS1lbGVtZW50W19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1yYWlzZWQtYnV0dG9uLm1hdC1hY2NlbnRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1yaXBwbGUtZWxlbWVudFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtZmFiLm1hdC1hY2NlbnRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1yaXBwbGUtZWxlbWVudFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtbWluaS1mYWIubWF0LWFjY2VudFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXJpcHBsZS1lbGVtZW50W19uZ2NvbnRlbnQtJUNPTVAlXXtiYWNrZ3JvdW5kLWNvbG9yOnJnYmEoMjU1LDI1NSwyNTUsLjEpfS5tYXQtZmxhdC1idXR0b24ubWF0LXdhcm5bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1yaXBwbGUtZWxlbWVudFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtcmFpc2VkLWJ1dHRvbi5tYXQtd2Fybltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXJpcHBsZS1lbGVtZW50W19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1mYWIubWF0LXdhcm5bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1yaXBwbGUtZWxlbWVudFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtbWluaS1mYWIubWF0LXdhcm5bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1yaXBwbGUtZWxlbWVudFtfbmdjb250ZW50LSVDT01QJV17YmFja2dyb3VuZC1jb2xvcjpyZ2JhKDI1NSwyNTUsMjU1LC4xKX0ubWF0LXN0cm9rZWQtYnV0dG9uW19uZ2NvbnRlbnQtJUNPTVAlXTpub3QoW2NsYXNzKj1tYXQtZWxldmF0aW9uLXpdKSwgLm1hdC1mbGF0LWJ1dHRvbltfbmdjb250ZW50LSVDT01QJV06bm90KFtjbGFzcyo9bWF0LWVsZXZhdGlvbi16XSl7Ym94LXNoYWRvdzowcHggMHB4IDBweCAwcHggcmdiYSgwLCAwLCAwLCAwLjIpLDBweCAwcHggMHB4IDBweCByZ2JhKDAsIDAsIDAsIDAuMTQpLDBweCAwcHggMHB4IDBweCByZ2JhKDAsIDAsIDAsIDAuMTIpfS5tYXQtcmFpc2VkLWJ1dHRvbltfbmdjb250ZW50LSVDT01QJV06bm90KFtjbGFzcyo9bWF0LWVsZXZhdGlvbi16XSl7Ym94LXNoYWRvdzowcHggM3B4IDFweCAtMnB4IHJnYmEoMCwgMCwgMCwgMC4yKSwwcHggMnB4IDJweCAwcHggcmdiYSgwLCAwLCAwLCAwLjE0KSwwcHggMXB4IDVweCAwcHggcmdiYSgwLCAwLCAwLCAwLjEyKX0ubWF0LXJhaXNlZC1idXR0b25bX25nY29udGVudC0lQ09NUCVdOm5vdCgubWF0LWJ1dHRvbi1kaXNhYmxlZCk6YWN0aXZlOm5vdChbY2xhc3MqPW1hdC1lbGV2YXRpb24tel0pe2JveC1zaGFkb3c6MHB4IDVweCA1cHggLTNweCByZ2JhKDAsIDAsIDAsIDAuMiksMHB4IDhweCAxMHB4IDFweCByZ2JhKDAsIDAsIDAsIDAuMTQpLDBweCAzcHggMTRweCAycHggcmdiYSgwLCAwLCAwLCAwLjEyKX0ubWF0LXJhaXNlZC1idXR0b24ubWF0LWJ1dHRvbi1kaXNhYmxlZFtfbmdjb250ZW50LSVDT01QJV06bm90KFtjbGFzcyo9bWF0LWVsZXZhdGlvbi16XSl7Ym94LXNoYWRvdzowcHggMHB4IDBweCAwcHggcmdiYSgwLCAwLCAwLCAwLjIpLDBweCAwcHggMHB4IDBweCByZ2JhKDAsIDAsIDAsIDAuMTQpLDBweCAwcHggMHB4IDBweCByZ2JhKDAsIDAsIDAsIDAuMTIpfS5tYXQtZmFiW19uZ2NvbnRlbnQtJUNPTVAlXTpub3QoW2NsYXNzKj1tYXQtZWxldmF0aW9uLXpdKSwgLm1hdC1taW5pLWZhYltfbmdjb250ZW50LSVDT01QJV06bm90KFtjbGFzcyo9bWF0LWVsZXZhdGlvbi16XSl7Ym94LXNoYWRvdzowcHggM3B4IDVweCAtMXB4IHJnYmEoMCwgMCwgMCwgMC4yKSwwcHggNnB4IDEwcHggMHB4IHJnYmEoMCwgMCwgMCwgMC4xNCksMHB4IDFweCAxOHB4IDBweCByZ2JhKDAsIDAsIDAsIDAuMTIpfS5tYXQtZmFiW19uZ2NvbnRlbnQtJUNPTVAlXTpub3QoLm1hdC1idXR0b24tZGlzYWJsZWQpOmFjdGl2ZTpub3QoW2NsYXNzKj1tYXQtZWxldmF0aW9uLXpdKSwgLm1hdC1taW5pLWZhYltfbmdjb250ZW50LSVDT01QJV06bm90KC5tYXQtYnV0dG9uLWRpc2FibGVkKTphY3RpdmU6bm90KFtjbGFzcyo9bWF0LWVsZXZhdGlvbi16XSl7Ym94LXNoYWRvdzowcHggN3B4IDhweCAtNHB4IHJnYmEoMCwgMCwgMCwgMC4yKSwwcHggMTJweCAxN3B4IDJweCByZ2JhKDAsIDAsIDAsIDAuMTQpLDBweCA1cHggMjJweCA0cHggcmdiYSgwLCAwLCAwLCAwLjEyKX0ubWF0LWZhYi5tYXQtYnV0dG9uLWRpc2FibGVkW19uZ2NvbnRlbnQtJUNPTVAlXTpub3QoW2NsYXNzKj1tYXQtZWxldmF0aW9uLXpdKSwgLm1hdC1taW5pLWZhYi5tYXQtYnV0dG9uLWRpc2FibGVkW19uZ2NvbnRlbnQtJUNPTVAlXTpub3QoW2NsYXNzKj1tYXQtZWxldmF0aW9uLXpdKXtib3gtc2hhZG93OjBweCAwcHggMHB4IDBweCByZ2JhKDAsIDAsIDAsIDAuMiksMHB4IDBweCAwcHggMHB4IHJnYmEoMCwgMCwgMCwgMC4xNCksMHB4IDBweCAwcHggMHB4IHJnYmEoMCwgMCwgMCwgMC4xMil9Lm1hdC1idXR0b24tdG9nZ2xlLXN0YW5kYWxvbmVbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWJ1dHRvbi10b2dnbGUtZ3JvdXBbX25nY29udGVudC0lQ09NUCVde2JveC1zaGFkb3c6MHB4IDNweCAxcHggLTJweCByZ2JhKDAsIDAsIDAsIDAuMiksMHB4IDJweCAycHggMHB4IHJnYmEoMCwgMCwgMCwgMC4xNCksMHB4IDFweCA1cHggMHB4IHJnYmEoMCwgMCwgMCwgMC4xMil9Lm1hdC1idXR0b24tdG9nZ2xlLXN0YW5kYWxvbmUubWF0LWJ1dHRvbi10b2dnbGUtYXBwZWFyYW5jZS1zdGFuZGFyZFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtYnV0dG9uLXRvZ2dsZS1ncm91cC1hcHBlYXJhbmNlLXN0YW5kYXJkW19uZ2NvbnRlbnQtJUNPTVAlXXtib3gtc2hhZG93Om5vbmV9Lm1hdC1idXR0b24tdG9nZ2xlW19uZ2NvbnRlbnQtJUNPTVAlXXtjb2xvcjpyZ2JhKDAsMCwwLC4zOCl9Lm1hdC1idXR0b24tdG9nZ2xlW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtYnV0dG9uLXRvZ2dsZS1mb2N1cy1vdmVybGF5W19uZ2NvbnRlbnQtJUNPTVAlXXtiYWNrZ3JvdW5kLWNvbG9yOnJnYmEoMCwwLDAsLjEyKX0ubWF0LWJ1dHRvbi10b2dnbGUtYXBwZWFyYW5jZS1zdGFuZGFyZFtfbmdjb250ZW50LSVDT01QJV17Y29sb3I6IzIxMjEyMTtiYWNrZ3JvdW5kOiNmZmZ9Lm1hdC1idXR0b24tdG9nZ2xlLWFwcGVhcmFuY2Utc3RhbmRhcmRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1idXR0b24tdG9nZ2xlLWZvY3VzLW92ZXJsYXlbX25nY29udGVudC0lQ09NUCVde2JhY2tncm91bmQtY29sb3I6IzAwMH0ubWF0LWJ1dHRvbi10b2dnbGUtZ3JvdXAtYXBwZWFyYW5jZS1zdGFuZGFyZFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWJ1dHRvbi10b2dnbGVbX25nY29udGVudC0lQ09NUCVdICsgLm1hdC1idXR0b24tdG9nZ2xlW19uZ2NvbnRlbnQtJUNPTVAlXXtib3JkZXItbGVmdDpzb2xpZCAxcHggcmdiYSgwLDAsMCwuMTIpfVtkaXI9cnRsXVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWJ1dHRvbi10b2dnbGUtZ3JvdXAtYXBwZWFyYW5jZS1zdGFuZGFyZFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWJ1dHRvbi10b2dnbGVbX25nY29udGVudC0lQ09NUCVdICsgLm1hdC1idXR0b24tdG9nZ2xlW19uZ2NvbnRlbnQtJUNPTVAlXXtib3JkZXItbGVmdDpub25lO2JvcmRlci1yaWdodDpzb2xpZCAxcHggcmdiYSgwLDAsMCwuMTIpfS5tYXQtYnV0dG9uLXRvZ2dsZS1ncm91cC1hcHBlYXJhbmNlLXN0YW5kYXJkLm1hdC1idXR0b24tdG9nZ2xlLXZlcnRpY2FsW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtYnV0dG9uLXRvZ2dsZVtfbmdjb250ZW50LSVDT01QJV0gKyAubWF0LWJ1dHRvbi10b2dnbGVbX25nY29udGVudC0lQ09NUCVde2JvcmRlci1sZWZ0Om5vbmU7Ym9yZGVyLXJpZ2h0Om5vbmU7Ym9yZGVyLXRvcDpzb2xpZCAxcHggcmdiYSgwLDAsMCwuMTIpfS5tYXQtYnV0dG9uLXRvZ2dsZS1jaGVja2VkW19uZ2NvbnRlbnQtJUNPTVAlXXtiYWNrZ3JvdW5kLWNvbG9yOiNlMGUwZTA7Y29sb3I6IzYxNjE2MX0ubWF0LWJ1dHRvbi10b2dnbGUtY2hlY2tlZC5tYXQtYnV0dG9uLXRvZ2dsZS1hcHBlYXJhbmNlLXN0YW5kYXJkW19uZ2NvbnRlbnQtJUNPTVAlXXtjb2xvcjojMjEyMTIxfS5tYXQtYnV0dG9uLXRvZ2dsZS1kaXNhYmxlZFtfbmdjb250ZW50LSVDT01QJV17Y29sb3I6cmdiYSgwLDAsMCwuMjYpO2JhY2tncm91bmQtY29sb3I6I2VlZX0ubWF0LWJ1dHRvbi10b2dnbGUtZGlzYWJsZWQubWF0LWJ1dHRvbi10b2dnbGUtYXBwZWFyYW5jZS1zdGFuZGFyZFtfbmdjb250ZW50LSVDT01QJV17YmFja2dyb3VuZDojZmZmfS5tYXQtYnV0dG9uLXRvZ2dsZS1kaXNhYmxlZC5tYXQtYnV0dG9uLXRvZ2dsZS1jaGVja2VkW19uZ2NvbnRlbnQtJUNPTVAlXXtiYWNrZ3JvdW5kLWNvbG9yOiNiZGJkYmR9Lm1hdC1idXR0b24tdG9nZ2xlLXN0YW5kYWxvbmUubWF0LWJ1dHRvbi10b2dnbGUtYXBwZWFyYW5jZS1zdGFuZGFyZFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtYnV0dG9uLXRvZ2dsZS1ncm91cC1hcHBlYXJhbmNlLXN0YW5kYXJkW19uZ2NvbnRlbnQtJUNPTVAlXXtib3JkZXI6c29saWQgMXB4IHJnYmEoMCwwLDAsLjEyKX0ubWF0LWJ1dHRvbi10b2dnbGUtYXBwZWFyYW5jZS1zdGFuZGFyZFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWJ1dHRvbi10b2dnbGUtbGFiZWwtY29udGVudFtfbmdjb250ZW50LSVDT01QJV17bGluZS1oZWlnaHQ6NDhweH0ubWF0LWNhcmRbX25nY29udGVudC0lQ09NUCVde2JhY2tncm91bmQ6I2ZmZjtjb2xvcjojMjEyMTIxfS5tYXQtY2FyZFtfbmdjb250ZW50LSVDT01QJV06bm90KFtjbGFzcyo9bWF0LWVsZXZhdGlvbi16XSl7Ym94LXNoYWRvdzowcHggMnB4IDFweCAtMXB4IHJnYmEoMCwgMCwgMCwgMC4yKSwwcHggMXB4IDFweCAwcHggcmdiYSgwLCAwLCAwLCAwLjE0KSwwcHggMXB4IDNweCAwcHggcmdiYSgwLCAwLCAwLCAwLjEyKX0ubWF0LWNhcmQubWF0LWNhcmQtZmxhdFtfbmdjb250ZW50LSVDT01QJV06bm90KFtjbGFzcyo9bWF0LWVsZXZhdGlvbi16XSl7Ym94LXNoYWRvdzowcHggMHB4IDBweCAwcHggcmdiYSgwLCAwLCAwLCAwLjIpLDBweCAwcHggMHB4IDBweCByZ2JhKDAsIDAsIDAsIDAuMTQpLDBweCAwcHggMHB4IDBweCByZ2JhKDAsIDAsIDAsIDAuMTIpfS5tYXQtY2FyZC1zdWJ0aXRsZVtfbmdjb250ZW50LSVDT01QJV17Y29sb3I6IzYxNjE2MX0ubWF0LWNoZWNrYm94LWZyYW1lW19uZ2NvbnRlbnQtJUNPTVAlXXtib3JkZXItY29sb3I6IzYxNjE2MX0ubWF0LWNoZWNrYm94LWNoZWNrbWFya1tfbmdjb250ZW50LSVDT01QJV17ZmlsbDojZmFmYWZhfS5tYXQtY2hlY2tib3gtY2hlY2ttYXJrLXBhdGhbX25nY29udGVudC0lQ09NUCVde3N0cm9rZTojZmFmYWZhICFpbXBvcnRhbnR9Lm1hdC1jaGVja2JveC1taXhlZG1hcmtbX25nY29udGVudC0lQ09NUCVde2JhY2tncm91bmQtY29sb3I6I2ZhZmFmYX0ubWF0LWNoZWNrYm94LWluZGV0ZXJtaW5hdGUubWF0LXByaW1hcnlbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1jaGVja2JveC1iYWNrZ3JvdW5kW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1jaGVja2JveC1jaGVja2VkLm1hdC1wcmltYXJ5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtY2hlY2tib3gtYmFja2dyb3VuZFtfbmdjb250ZW50LSVDT01QJV17YmFja2dyb3VuZC1jb2xvcjojZjU3YzAwfS5tYXQtY2hlY2tib3gtaW5kZXRlcm1pbmF0ZS5tYXQtYWNjZW50W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtY2hlY2tib3gtYmFja2dyb3VuZFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtY2hlY2tib3gtY2hlY2tlZC5tYXQtYWNjZW50W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtY2hlY2tib3gtYmFja2dyb3VuZFtfbmdjb250ZW50LSVDT01QJV17YmFja2dyb3VuZC1jb2xvcjojZmY5ODAwfS5tYXQtY2hlY2tib3gtaW5kZXRlcm1pbmF0ZS5tYXQtd2Fybltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWNoZWNrYm94LWJhY2tncm91bmRbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWNoZWNrYm94LWNoZWNrZWQubWF0LXdhcm5bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1jaGVja2JveC1iYWNrZ3JvdW5kW19uZ2NvbnRlbnQtJUNPTVAlXXtiYWNrZ3JvdW5kLWNvbG9yOiNmNDQzMzZ9Lm1hdC1jaGVja2JveC1kaXNhYmxlZC5tYXQtY2hlY2tib3gtY2hlY2tlZFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWNoZWNrYm94LWJhY2tncm91bmRbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWNoZWNrYm94LWRpc2FibGVkLm1hdC1jaGVja2JveC1pbmRldGVybWluYXRlW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtY2hlY2tib3gtYmFja2dyb3VuZFtfbmdjb250ZW50LSVDT01QJV17YmFja2dyb3VuZC1jb2xvcjojYjBiMGIwfS5tYXQtY2hlY2tib3gtZGlzYWJsZWRbX25nY29udGVudC0lQ09NUCVdOm5vdCgubWF0LWNoZWNrYm94LWNoZWNrZWQpICAgLm1hdC1jaGVja2JveC1mcmFtZVtfbmdjb250ZW50LSVDT01QJV17Ym9yZGVyLWNvbG9yOiNiMGIwYjB9Lm1hdC1jaGVja2JveC1kaXNhYmxlZFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWNoZWNrYm94LWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXtjb2xvcjojNjE2MTYxfS5tYXQtY2hlY2tib3hbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1yaXBwbGUtZWxlbWVudFtfbmdjb250ZW50LSVDT01QJV17YmFja2dyb3VuZC1jb2xvcjojMDAwfS5tYXQtY2hlY2tib3gtY2hlY2tlZFtfbmdjb250ZW50LSVDT01QJV06bm90KC5tYXQtY2hlY2tib3gtZGlzYWJsZWQpLm1hdC1wcmltYXJ5ICAgLm1hdC1yaXBwbGUtZWxlbWVudFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtY2hlY2tib3hbX25nY29udGVudC0lQ09NUCVdOmFjdGl2ZTpub3QoLm1hdC1jaGVja2JveC1kaXNhYmxlZCkubWF0LXByaW1hcnkgICAubWF0LXJpcHBsZS1lbGVtZW50W19uZ2NvbnRlbnQtJUNPTVAlXXtiYWNrZ3JvdW5kOiNmNTdjMDB9Lm1hdC1jaGVja2JveC1jaGVja2VkW19uZ2NvbnRlbnQtJUNPTVAlXTpub3QoLm1hdC1jaGVja2JveC1kaXNhYmxlZCkubWF0LWFjY2VudCAgIC5tYXQtcmlwcGxlLWVsZW1lbnRbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWNoZWNrYm94W19uZ2NvbnRlbnQtJUNPTVAlXTphY3RpdmU6bm90KC5tYXQtY2hlY2tib3gtZGlzYWJsZWQpLm1hdC1hY2NlbnQgICAubWF0LXJpcHBsZS1lbGVtZW50W19uZ2NvbnRlbnQtJUNPTVAlXXtiYWNrZ3JvdW5kOiNmZjk4MDB9Lm1hdC1jaGVja2JveC1jaGVja2VkW19uZ2NvbnRlbnQtJUNPTVAlXTpub3QoLm1hdC1jaGVja2JveC1kaXNhYmxlZCkubWF0LXdhcm4gICAubWF0LXJpcHBsZS1lbGVtZW50W19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1jaGVja2JveFtfbmdjb250ZW50LSVDT01QJV06YWN0aXZlOm5vdCgubWF0LWNoZWNrYm94LWRpc2FibGVkKS5tYXQtd2FybiAgIC5tYXQtcmlwcGxlLWVsZW1lbnRbX25nY29udGVudC0lQ09NUCVde2JhY2tncm91bmQ6I2Y0NDMzNn0ubWF0LWNoaXAubWF0LXN0YW5kYXJkLWNoaXBbX25nY29udGVudC0lQ09NUCVde2JhY2tncm91bmQtY29sb3I6I2UwZTBlMDtjb2xvcjojMjEyMTIxfS5tYXQtY2hpcC5tYXQtc3RhbmRhcmQtY2hpcFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWNoaXAtcmVtb3ZlW19uZ2NvbnRlbnQtJUNPTVAlXXtjb2xvcjojMjEyMTIxO29wYWNpdHk6LjR9Lm1hdC1jaGlwLm1hdC1zdGFuZGFyZC1jaGlwW19uZ2NvbnRlbnQtJUNPTVAlXTpub3QoLm1hdC1jaGlwLWRpc2FibGVkKTphY3RpdmV7Ym94LXNoYWRvdzowcHggM3B4IDNweCAtMnB4IHJnYmEoMCwgMCwgMCwgMC4yKSwwcHggM3B4IDRweCAwcHggcmdiYSgwLCAwLCAwLCAwLjE0KSwwcHggMXB4IDhweCAwcHggcmdiYSgwLCAwLCAwLCAwLjEyKX0ubWF0LWNoaXAubWF0LXN0YW5kYXJkLWNoaXBbX25nY29udGVudC0lQ09NUCVdOm5vdCgubWF0LWNoaXAtZGlzYWJsZWQpICAgLm1hdC1jaGlwLXJlbW92ZVtfbmdjb250ZW50LSVDT01QJV06aG92ZXJ7b3BhY2l0eTouNTR9Lm1hdC1jaGlwLm1hdC1zdGFuZGFyZC1jaGlwLm1hdC1jaGlwLWRpc2FibGVkW19uZ2NvbnRlbnQtJUNPTVAlXXtvcGFjaXR5Oi40fS5tYXQtY2hpcC5tYXQtc3RhbmRhcmQtY2hpcFtfbmdjb250ZW50LSVDT01QJV06OmFmdGVye2JhY2tncm91bmQ6IzAwMH0ubWF0LWNoaXAubWF0LXN0YW5kYXJkLWNoaXAubWF0LWNoaXAtc2VsZWN0ZWQubWF0LXByaW1hcnlbX25nY29udGVudC0lQ09NUCVde2JhY2tncm91bmQtY29sb3I6I2Y1N2MwMDtjb2xvcjojZmZmfS5tYXQtY2hpcC5tYXQtc3RhbmRhcmQtY2hpcC5tYXQtY2hpcC1zZWxlY3RlZC5tYXQtcHJpbWFyeVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWNoaXAtcmVtb3ZlW19uZ2NvbnRlbnQtJUNPTVAlXXtjb2xvcjojZmZmO29wYWNpdHk6LjR9Lm1hdC1jaGlwLm1hdC1zdGFuZGFyZC1jaGlwLm1hdC1jaGlwLXNlbGVjdGVkLm1hdC1wcmltYXJ5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtcmlwcGxlLWVsZW1lbnRbX25nY29udGVudC0lQ09NUCVde2JhY2tncm91bmQtY29sb3I6cmdiYSgyNTUsMjU1LDI1NSwuMSl9Lm1hdC1jaGlwLm1hdC1zdGFuZGFyZC1jaGlwLm1hdC1jaGlwLXNlbGVjdGVkLm1hdC13YXJuW19uZ2NvbnRlbnQtJUNPTVAlXXtiYWNrZ3JvdW5kLWNvbG9yOiNmNDQzMzY7Y29sb3I6I2ZmZn0ubWF0LWNoaXAubWF0LXN0YW5kYXJkLWNoaXAubWF0LWNoaXAtc2VsZWN0ZWQubWF0LXdhcm5bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1jaGlwLXJlbW92ZVtfbmdjb250ZW50LSVDT01QJV17Y29sb3I6I2ZmZjtvcGFjaXR5Oi40fS5tYXQtY2hpcC5tYXQtc3RhbmRhcmQtY2hpcC5tYXQtY2hpcC1zZWxlY3RlZC5tYXQtd2Fybltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXJpcHBsZS1lbGVtZW50W19uZ2NvbnRlbnQtJUNPTVAlXXtiYWNrZ3JvdW5kLWNvbG9yOnJnYmEoMjU1LDI1NSwyNTUsLjEpfS5tYXQtY2hpcC5tYXQtc3RhbmRhcmQtY2hpcC5tYXQtY2hpcC1zZWxlY3RlZC5tYXQtYWNjZW50W19uZ2NvbnRlbnQtJUNPTVAlXXtiYWNrZ3JvdW5kLWNvbG9yOiNmZjk4MDA7Y29sb3I6I2ZmZn0ubWF0LWNoaXAubWF0LXN0YW5kYXJkLWNoaXAubWF0LWNoaXAtc2VsZWN0ZWQubWF0LWFjY2VudFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWNoaXAtcmVtb3ZlW19uZ2NvbnRlbnQtJUNPTVAlXXtjb2xvcjojZmZmO29wYWNpdHk6LjR9Lm1hdC1jaGlwLm1hdC1zdGFuZGFyZC1jaGlwLm1hdC1jaGlwLXNlbGVjdGVkLm1hdC1hY2NlbnRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1yaXBwbGUtZWxlbWVudFtfbmdjb250ZW50LSVDT01QJV17YmFja2dyb3VuZC1jb2xvcjpyZ2JhKDI1NSwyNTUsMjU1LC4xKX0ubWF0LXRhYmxlW19uZ2NvbnRlbnQtJUNPTVAlXXtiYWNrZ3JvdW5kOiNmZmZ9Lm1hdC10YWJsZVtfbmdjb250ZW50LSVDT01QJV0gICB0aGVhZFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdGFibGVbX25nY29udGVudC0lQ09NUCVdICAgdGJvZHlbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXRhYmxlW19uZ2NvbnRlbnQtJUNPTVAlXSAgIHRmb290W19uZ2NvbnRlbnQtJUNPTVAlXSwgbWF0LWhlYWRlci1yb3dbX25nY29udGVudC0lQ09NUCVdLCBtYXQtcm93W19uZ2NvbnRlbnQtJUNPTVAlXSwgbWF0LWZvb3Rlci1yb3dbX25nY29udGVudC0lQ09NUCVdLCBbbWF0LWhlYWRlci1yb3ddW19uZ2NvbnRlbnQtJUNPTVAlXSwgW21hdC1yb3ddW19uZ2NvbnRlbnQtJUNPTVAlXSwgW21hdC1mb290ZXItcm93XVtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdGFibGUtc3RpY2t5W19uZ2NvbnRlbnQtJUNPTVAlXXtiYWNrZ3JvdW5kOmluaGVyaXR9bWF0LXJvd1tfbmdjb250ZW50LSVDT01QJV0sIG1hdC1oZWFkZXItcm93W19uZ2NvbnRlbnQtJUNPTVAlXSwgbWF0LWZvb3Rlci1yb3dbX25nY29udGVudC0lQ09NUCVdLCB0aC5tYXQtaGVhZGVyLWNlbGxbX25nY29udGVudC0lQ09NUCVdLCB0ZC5tYXQtY2VsbFtfbmdjb250ZW50LSVDT01QJV0sIHRkLm1hdC1mb290ZXItY2VsbFtfbmdjb250ZW50LSVDT01QJV17Ym9yZGVyLWJvdHRvbS1jb2xvcjpyZ2JhKDAsMCwwLC4xMil9Lm1hdC1oZWFkZXItY2VsbFtfbmdjb250ZW50LSVDT01QJV17Y29sb3I6IzYxNjE2MX0ubWF0LWNlbGxbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWZvb3Rlci1jZWxsW19uZ2NvbnRlbnQtJUNPTVAlXXtjb2xvcjojMjEyMTIxfS5tYXQtY2FsZW5kYXItYXJyb3dbX25nY29udGVudC0lQ09NUCVde2JvcmRlci10b3AtY29sb3I6cmdiYSgwLDAsMCwuNTQpfS5tYXQtZGF0ZXBpY2tlci10b2dnbGVbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWRhdGVwaWNrZXItY29udGVudFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWNhbGVuZGFyLW5leHQtYnV0dG9uW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1kYXRlcGlja2VyLWNvbnRlbnRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1jYWxlbmRhci1wcmV2aW91cy1idXR0b25bX25nY29udGVudC0lQ09NUCVde2NvbG9yOnJnYmEoMCwwLDAsLjU0KX0ubWF0LWNhbGVuZGFyLXRhYmxlLWhlYWRlcltfbmdjb250ZW50LSVDT01QJV17Y29sb3I6cmdiYSgwLDAsMCwuMzgpfS5tYXQtY2FsZW5kYXItdGFibGUtaGVhZGVyLWRpdmlkZXJbX25nY29udGVudC0lQ09NUCVdOjphZnRlcntiYWNrZ3JvdW5kOnJnYmEoMCwwLDAsLjEyKX0ubWF0LWNhbGVuZGFyLWJvZHktbGFiZWxbX25nY29udGVudC0lQ09NUCVde2NvbG9yOiM2MTYxNjF9Lm1hdC1jYWxlbmRhci1ib2R5LWNlbGwtY29udGVudFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtZGF0ZS1yYW5nZS1pbnB1dC1zZXBhcmF0b3JbX25nY29udGVudC0lQ09NUCVde2NvbG9yOiMyMTIxMjE7Ym9yZGVyLWNvbG9yOnRyYW5zcGFyZW50fS5tYXQtY2FsZW5kYXItYm9keS1kaXNhYmxlZFtfbmdjb250ZW50LSVDT01QJV0gPiAubWF0LWNhbGVuZGFyLWJvZHktY2VsbC1jb250ZW50W19uZ2NvbnRlbnQtJUNPTVAlXTpub3QoLm1hdC1jYWxlbmRhci1ib2R5LXNlbGVjdGVkKTpub3QoLm1hdC1jYWxlbmRhci1ib2R5LWNvbXBhcmlzb24taWRlbnRpY2FsKXtjb2xvcjojNzU3NTc1fS5tYXQtZm9ybS1maWVsZC1kaXNhYmxlZFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWRhdGUtcmFuZ2UtaW5wdXQtc2VwYXJhdG9yW19uZ2NvbnRlbnQtJUNPTVAlXXtjb2xvcjojNzU3NTc1fS5tYXQtY2FsZW5kYXItYm9keS1jZWxsW19uZ2NvbnRlbnQtJUNPTVAlXTpub3QoLm1hdC1jYWxlbmRhci1ib2R5LWRpc2FibGVkKTpob3ZlciA+IC5tYXQtY2FsZW5kYXItYm9keS1jZWxsLWNvbnRlbnRbX25nY29udGVudC0lQ09NUCVdOm5vdCgubWF0LWNhbGVuZGFyLWJvZHktc2VsZWN0ZWQpOm5vdCgubWF0LWNhbGVuZGFyLWJvZHktY29tcGFyaXNvbi1pZGVudGljYWwpLCAuY2RrLWtleWJvYXJkLWZvY3VzZWRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1jYWxlbmRhci1ib2R5LWFjdGl2ZVtfbmdjb250ZW50LSVDT01QJV0gPiAubWF0LWNhbGVuZGFyLWJvZHktY2VsbC1jb250ZW50W19uZ2NvbnRlbnQtJUNPTVAlXTpub3QoLm1hdC1jYWxlbmRhci1ib2R5LXNlbGVjdGVkKTpub3QoLm1hdC1jYWxlbmRhci1ib2R5LWNvbXBhcmlzb24taWRlbnRpY2FsKSwgLmNkay1wcm9ncmFtLWZvY3VzZWRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1jYWxlbmRhci1ib2R5LWFjdGl2ZVtfbmdjb250ZW50LSVDT01QJV0gPiAubWF0LWNhbGVuZGFyLWJvZHktY2VsbC1jb250ZW50W19uZ2NvbnRlbnQtJUNPTVAlXTpub3QoLm1hdC1jYWxlbmRhci1ib2R5LXNlbGVjdGVkKTpub3QoLm1hdC1jYWxlbmRhci1ib2R5LWNvbXBhcmlzb24taWRlbnRpY2FsKXtiYWNrZ3JvdW5kLWNvbG9yOnJnYmEoMCwwLDAsLjA0KX0ubWF0LWNhbGVuZGFyLWJvZHktaW4tcHJldmlld1tfbmdjb250ZW50LSVDT01QJV17Y29sb3I6cmdiYSgwLDAsMCwuMjQpfS5tYXQtY2FsZW5kYXItYm9keS10b2RheVtfbmdjb250ZW50LSVDT01QJV06bm90KC5tYXQtY2FsZW5kYXItYm9keS1zZWxlY3RlZCk6bm90KC5tYXQtY2FsZW5kYXItYm9keS1jb21wYXJpc29uLWlkZW50aWNhbCl7Ym9yZGVyLWNvbG9yOnJnYmEoMCwwLDAsLjM4KX0ubWF0LWNhbGVuZGFyLWJvZHktZGlzYWJsZWRbX25nY29udGVudC0lQ09NUCVdID4gLm1hdC1jYWxlbmRhci1ib2R5LXRvZGF5W19uZ2NvbnRlbnQtJUNPTVAlXTpub3QoLm1hdC1jYWxlbmRhci1ib2R5LXNlbGVjdGVkKTpub3QoLm1hdC1jYWxlbmRhci1ib2R5LWNvbXBhcmlzb24taWRlbnRpY2FsKXtib3JkZXItY29sb3I6cmdiYSgwLDAsMCwuMTgpfS5tYXQtY2FsZW5kYXItYm9keS1pbi1yYW5nZVtfbmdjb250ZW50LSVDT01QJV06OmJlZm9yZXtiYWNrZ3JvdW5kOnJnYmEoMjQ1LDEyNCwwLC4yKX0ubWF0LWNhbGVuZGFyLWJvZHktY29tcGFyaXNvbi1pZGVudGljYWxbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWNhbGVuZGFyLWJvZHktaW4tY29tcGFyaXNvbi1yYW5nZVtfbmdjb250ZW50LSVDT01QJV06OmJlZm9yZXtiYWNrZ3JvdW5kOnJnYmEoMjQ5LDE3MSwwLC4yKX0ubWF0LWNhbGVuZGFyLWJvZHktY29tcGFyaXNvbi1icmlkZ2Utc3RhcnRbX25nY29udGVudC0lQ09NUCVdOjpiZWZvcmUsIFtkaXI9cnRsXVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWNhbGVuZGFyLWJvZHktY29tcGFyaXNvbi1icmlkZ2UtZW5kW19uZ2NvbnRlbnQtJUNPTVAlXTo6YmVmb3Jle2JhY2tncm91bmQ6bGluZWFyLWdyYWRpZW50KHRvIHJpZ2h0LCByZ2JhKDI0NSwgMTI0LCAwLCAwLjIpIDUwJSwgcmdiYSgyNDksIDE3MSwgMCwgMC4yKSA1MCUpfS5tYXQtY2FsZW5kYXItYm9keS1jb21wYXJpc29uLWJyaWRnZS1lbmRbX25nY29udGVudC0lQ09NUCVdOjpiZWZvcmUsIFtkaXI9cnRsXVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWNhbGVuZGFyLWJvZHktY29tcGFyaXNvbi1icmlkZ2Utc3RhcnRbX25nY29udGVudC0lQ09NUCVdOjpiZWZvcmV7YmFja2dyb3VuZDpsaW5lYXItZ3JhZGllbnQodG8gbGVmdCwgcmdiYSgyNDUsIDEyNCwgMCwgMC4yKSA1MCUsIHJnYmEoMjQ5LCAxNzEsIDAsIDAuMikgNTAlKX0ubWF0LWNhbGVuZGFyLWJvZHktaW4tcmFuZ2VbX25nY29udGVudC0lQ09NUCVdID4gLm1hdC1jYWxlbmRhci1ib2R5LWNvbXBhcmlzb24taWRlbnRpY2FsW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1jYWxlbmRhci1ib2R5LWluLWNvbXBhcmlzb24tcmFuZ2UubWF0LWNhbGVuZGFyLWJvZHktaW4tcmFuZ2VbX25nY29udGVudC0lQ09NUCVdOjphZnRlcntiYWNrZ3JvdW5kOiNhOGRhYjV9Lm1hdC1jYWxlbmRhci1ib2R5LWNvbXBhcmlzb24taWRlbnRpY2FsLm1hdC1jYWxlbmRhci1ib2R5LXNlbGVjdGVkW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1jYWxlbmRhci1ib2R5LWluLWNvbXBhcmlzb24tcmFuZ2VbX25nY29udGVudC0lQ09NUCVdID4gLm1hdC1jYWxlbmRhci1ib2R5LXNlbGVjdGVkW19uZ2NvbnRlbnQtJUNPTVAlXXtiYWNrZ3JvdW5kOiM0NmEzNWV9Lm1hdC1jYWxlbmRhci1ib2R5LXNlbGVjdGVkW19uZ2NvbnRlbnQtJUNPTVAlXXtiYWNrZ3JvdW5kLWNvbG9yOiNmNTdjMDA7Y29sb3I6I2ZmZn0ubWF0LWNhbGVuZGFyLWJvZHktZGlzYWJsZWRbX25nY29udGVudC0lQ09NUCVdID4gLm1hdC1jYWxlbmRhci1ib2R5LXNlbGVjdGVkW19uZ2NvbnRlbnQtJUNPTVAlXXtiYWNrZ3JvdW5kLWNvbG9yOnJnYmEoMjQ1LDEyNCwwLC40KX0ubWF0LWNhbGVuZGFyLWJvZHktdG9kYXkubWF0LWNhbGVuZGFyLWJvZHktc2VsZWN0ZWRbX25nY29udGVudC0lQ09NUCVde2JveC1zaGFkb3c6aW5zZXQgMCAwIDAgMXB4ICNmZmZ9Lm1hdC1kYXRlcGlja2VyLWNvbnRlbnRbX25nY29udGVudC0lQ09NUCVde2JveC1zaGFkb3c6MHB4IDJweCA0cHggLTFweCByZ2JhKDAsIDAsIDAsIDAuMiksMHB4IDRweCA1cHggMHB4IHJnYmEoMCwgMCwgMCwgMC4xNCksMHB4IDFweCAxMHB4IDBweCByZ2JhKDAsIDAsIDAsIDAuMTIpO2JhY2tncm91bmQtY29sb3I6I2ZmZjtjb2xvcjojMjEyMTIxfS5tYXQtZGF0ZXBpY2tlci1jb250ZW50Lm1hdC1hY2NlbnRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1jYWxlbmRhci1ib2R5LWluLXJhbmdlW19uZ2NvbnRlbnQtJUNPTVAlXTo6YmVmb3Jle2JhY2tncm91bmQ6cmdiYSgyNTUsMTUyLDAsLjIpfS5tYXQtZGF0ZXBpY2tlci1jb250ZW50Lm1hdC1hY2NlbnRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1jYWxlbmRhci1ib2R5LWNvbXBhcmlzb24taWRlbnRpY2FsW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1kYXRlcGlja2VyLWNvbnRlbnQubWF0LWFjY2VudFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWNhbGVuZGFyLWJvZHktaW4tY29tcGFyaXNvbi1yYW5nZVtfbmdjb250ZW50LSVDT01QJV06OmJlZm9yZXtiYWNrZ3JvdW5kOnJnYmEoMjQ5LDE3MSwwLC4yKX0ubWF0LWRhdGVwaWNrZXItY29udGVudC5tYXQtYWNjZW50W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtY2FsZW5kYXItYm9keS1jb21wYXJpc29uLWJyaWRnZS1zdGFydFtfbmdjb250ZW50LSVDT01QJV06OmJlZm9yZSwgLm1hdC1kYXRlcGlja2VyLWNvbnRlbnQubWF0LWFjY2VudFtfbmdjb250ZW50LSVDT01QJV0gICBbZGlyPXJ0bF1bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1jYWxlbmRhci1ib2R5LWNvbXBhcmlzb24tYnJpZGdlLWVuZFtfbmdjb250ZW50LSVDT01QJV06OmJlZm9yZXtiYWNrZ3JvdW5kOmxpbmVhci1ncmFkaWVudCh0byByaWdodCwgcmdiYSgyNTUsIDE1MiwgMCwgMC4yKSA1MCUsIHJnYmEoMjQ5LCAxNzEsIDAsIDAuMikgNTAlKX0ubWF0LWRhdGVwaWNrZXItY29udGVudC5tYXQtYWNjZW50W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtY2FsZW5kYXItYm9keS1jb21wYXJpc29uLWJyaWRnZS1lbmRbX25nY29udGVudC0lQ09NUCVdOjpiZWZvcmUsIC5tYXQtZGF0ZXBpY2tlci1jb250ZW50Lm1hdC1hY2NlbnRbX25nY29udGVudC0lQ09NUCVdICAgW2Rpcj1ydGxdW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtY2FsZW5kYXItYm9keS1jb21wYXJpc29uLWJyaWRnZS1zdGFydFtfbmdjb250ZW50LSVDT01QJV06OmJlZm9yZXtiYWNrZ3JvdW5kOmxpbmVhci1ncmFkaWVudCh0byBsZWZ0LCByZ2JhKDI1NSwgMTUyLCAwLCAwLjIpIDUwJSwgcmdiYSgyNDksIDE3MSwgMCwgMC4yKSA1MCUpfS5tYXQtZGF0ZXBpY2tlci1jb250ZW50Lm1hdC1hY2NlbnRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1jYWxlbmRhci1ib2R5LWluLXJhbmdlW19uZ2NvbnRlbnQtJUNPTVAlXSA+IC5tYXQtY2FsZW5kYXItYm9keS1jb21wYXJpc29uLWlkZW50aWNhbFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtZGF0ZXBpY2tlci1jb250ZW50Lm1hdC1hY2NlbnRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1jYWxlbmRhci1ib2R5LWluLWNvbXBhcmlzb24tcmFuZ2UubWF0LWNhbGVuZGFyLWJvZHktaW4tcmFuZ2VbX25nY29udGVudC0lQ09NUCVdOjphZnRlcntiYWNrZ3JvdW5kOiNhOGRhYjV9Lm1hdC1kYXRlcGlja2VyLWNvbnRlbnQubWF0LWFjY2VudFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWNhbGVuZGFyLWJvZHktY29tcGFyaXNvbi1pZGVudGljYWwubWF0LWNhbGVuZGFyLWJvZHktc2VsZWN0ZWRbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWRhdGVwaWNrZXItY29udGVudC5tYXQtYWNjZW50W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtY2FsZW5kYXItYm9keS1pbi1jb21wYXJpc29uLXJhbmdlW19uZ2NvbnRlbnQtJUNPTVAlXSA+IC5tYXQtY2FsZW5kYXItYm9keS1zZWxlY3RlZFtfbmdjb250ZW50LSVDT01QJV17YmFja2dyb3VuZDojNDZhMzVlfS5tYXQtZGF0ZXBpY2tlci1jb250ZW50Lm1hdC1hY2NlbnRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1jYWxlbmRhci1ib2R5LXNlbGVjdGVkW19uZ2NvbnRlbnQtJUNPTVAlXXtiYWNrZ3JvdW5kLWNvbG9yOiNmZjk4MDA7Y29sb3I6I2ZmZn0ubWF0LWRhdGVwaWNrZXItY29udGVudC5tYXQtYWNjZW50W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtY2FsZW5kYXItYm9keS1kaXNhYmxlZFtfbmdjb250ZW50LSVDT01QJV0gPiAubWF0LWNhbGVuZGFyLWJvZHktc2VsZWN0ZWRbX25nY29udGVudC0lQ09NUCVde2JhY2tncm91bmQtY29sb3I6cmdiYSgyNTUsMTUyLDAsLjQpfS5tYXQtZGF0ZXBpY2tlci1jb250ZW50Lm1hdC1hY2NlbnRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1jYWxlbmRhci1ib2R5LXRvZGF5Lm1hdC1jYWxlbmRhci1ib2R5LXNlbGVjdGVkW19uZ2NvbnRlbnQtJUNPTVAlXXtib3gtc2hhZG93Omluc2V0IDAgMCAwIDFweCAjZmZmfS5tYXQtZGF0ZXBpY2tlci1jb250ZW50Lm1hdC13YXJuW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtY2FsZW5kYXItYm9keS1pbi1yYW5nZVtfbmdjb250ZW50LSVDT01QJV06OmJlZm9yZXtiYWNrZ3JvdW5kOnJnYmEoMjQ0LDY3LDU0LC4yKX0ubWF0LWRhdGVwaWNrZXItY29udGVudC5tYXQtd2Fybltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWNhbGVuZGFyLWJvZHktY29tcGFyaXNvbi1pZGVudGljYWxbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWRhdGVwaWNrZXItY29udGVudC5tYXQtd2Fybltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWNhbGVuZGFyLWJvZHktaW4tY29tcGFyaXNvbi1yYW5nZVtfbmdjb250ZW50LSVDT01QJV06OmJlZm9yZXtiYWNrZ3JvdW5kOnJnYmEoMjQ5LDE3MSwwLC4yKX0ubWF0LWRhdGVwaWNrZXItY29udGVudC5tYXQtd2Fybltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWNhbGVuZGFyLWJvZHktY29tcGFyaXNvbi1icmlkZ2Utc3RhcnRbX25nY29udGVudC0lQ09NUCVdOjpiZWZvcmUsIC5tYXQtZGF0ZXBpY2tlci1jb250ZW50Lm1hdC13YXJuW19uZ2NvbnRlbnQtJUNPTVAlXSAgIFtkaXI9cnRsXVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWNhbGVuZGFyLWJvZHktY29tcGFyaXNvbi1icmlkZ2UtZW5kW19uZ2NvbnRlbnQtJUNPTVAlXTo6YmVmb3Jle2JhY2tncm91bmQ6bGluZWFyLWdyYWRpZW50KHRvIHJpZ2h0LCByZ2JhKDI0NCwgNjcsIDU0LCAwLjIpIDUwJSwgcmdiYSgyNDksIDE3MSwgMCwgMC4yKSA1MCUpfS5tYXQtZGF0ZXBpY2tlci1jb250ZW50Lm1hdC13YXJuW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtY2FsZW5kYXItYm9keS1jb21wYXJpc29uLWJyaWRnZS1lbmRbX25nY29udGVudC0lQ09NUCVdOjpiZWZvcmUsIC5tYXQtZGF0ZXBpY2tlci1jb250ZW50Lm1hdC13YXJuW19uZ2NvbnRlbnQtJUNPTVAlXSAgIFtkaXI9cnRsXVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWNhbGVuZGFyLWJvZHktY29tcGFyaXNvbi1icmlkZ2Utc3RhcnRbX25nY29udGVudC0lQ09NUCVdOjpiZWZvcmV7YmFja2dyb3VuZDpsaW5lYXItZ3JhZGllbnQodG8gbGVmdCwgcmdiYSgyNDQsIDY3LCA1NCwgMC4yKSA1MCUsIHJnYmEoMjQ5LCAxNzEsIDAsIDAuMikgNTAlKX0ubWF0LWRhdGVwaWNrZXItY29udGVudC5tYXQtd2Fybltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWNhbGVuZGFyLWJvZHktaW4tcmFuZ2VbX25nY29udGVudC0lQ09NUCVdID4gLm1hdC1jYWxlbmRhci1ib2R5LWNvbXBhcmlzb24taWRlbnRpY2FsW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1kYXRlcGlja2VyLWNvbnRlbnQubWF0LXdhcm5bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1jYWxlbmRhci1ib2R5LWluLWNvbXBhcmlzb24tcmFuZ2UubWF0LWNhbGVuZGFyLWJvZHktaW4tcmFuZ2VbX25nY29udGVudC0lQ09NUCVdOjphZnRlcntiYWNrZ3JvdW5kOiNhOGRhYjV9Lm1hdC1kYXRlcGlja2VyLWNvbnRlbnQubWF0LXdhcm5bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1jYWxlbmRhci1ib2R5LWNvbXBhcmlzb24taWRlbnRpY2FsLm1hdC1jYWxlbmRhci1ib2R5LXNlbGVjdGVkW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1kYXRlcGlja2VyLWNvbnRlbnQubWF0LXdhcm5bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1jYWxlbmRhci1ib2R5LWluLWNvbXBhcmlzb24tcmFuZ2VbX25nY29udGVudC0lQ09NUCVdID4gLm1hdC1jYWxlbmRhci1ib2R5LXNlbGVjdGVkW19uZ2NvbnRlbnQtJUNPTVAlXXtiYWNrZ3JvdW5kOiM0NmEzNWV9Lm1hdC1kYXRlcGlja2VyLWNvbnRlbnQubWF0LXdhcm5bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1jYWxlbmRhci1ib2R5LXNlbGVjdGVkW19uZ2NvbnRlbnQtJUNPTVAlXXtiYWNrZ3JvdW5kLWNvbG9yOiNmNDQzMzY7Y29sb3I6I2ZmZn0ubWF0LWRhdGVwaWNrZXItY29udGVudC5tYXQtd2Fybltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWNhbGVuZGFyLWJvZHktZGlzYWJsZWRbX25nY29udGVudC0lQ09NUCVdID4gLm1hdC1jYWxlbmRhci1ib2R5LXNlbGVjdGVkW19uZ2NvbnRlbnQtJUNPTVAlXXtiYWNrZ3JvdW5kLWNvbG9yOnJnYmEoMjQ0LDY3LDU0LC40KX0ubWF0LWRhdGVwaWNrZXItY29udGVudC5tYXQtd2Fybltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWNhbGVuZGFyLWJvZHktdG9kYXkubWF0LWNhbGVuZGFyLWJvZHktc2VsZWN0ZWRbX25nY29udGVudC0lQ09NUCVde2JveC1zaGFkb3c6aW5zZXQgMCAwIDAgMXB4ICNmZmZ9Lm1hdC1kYXRlcGlja2VyLWNvbnRlbnQtdG91Y2hbX25nY29udGVudC0lQ09NUCVde2JveC1zaGFkb3c6MHB4IDBweCAwcHggMHB4IHJnYmEoMCwgMCwgMCwgMC4yKSwwcHggMHB4IDBweCAwcHggcmdiYSgwLCAwLCAwLCAwLjE0KSwwcHggMHB4IDBweCAwcHggcmdiYSgwLCAwLCAwLCAwLjEyKX0ubWF0LWRhdGVwaWNrZXItdG9nZ2xlLWFjdGl2ZVtfbmdjb250ZW50LSVDT01QJV17Y29sb3I6I2Y1N2MwMH0ubWF0LWRhdGVwaWNrZXItdG9nZ2xlLWFjdGl2ZS5tYXQtYWNjZW50W19uZ2NvbnRlbnQtJUNPTVAlXXtjb2xvcjojZmY5ODAwfS5tYXQtZGF0ZXBpY2tlci10b2dnbGUtYWN0aXZlLm1hdC13YXJuW19uZ2NvbnRlbnQtJUNPTVAlXXtjb2xvcjojZjQ0MzM2fS5tYXQtZGF0ZS1yYW5nZS1pbnB1dC1pbm5lcltkaXNhYmxlZF1bX25nY29udGVudC0lQ09NUCVde2NvbG9yOiM3NTc1NzV9Lm1hdC1kaWFsb2ctY29udGFpbmVyW19uZ2NvbnRlbnQtJUNPTVAlXXtib3gtc2hhZG93OjBweCAxMXB4IDE1cHggLTdweCByZ2JhKDAsIDAsIDAsIDAuMiksMHB4IDI0cHggMzhweCAzcHggcmdiYSgwLCAwLCAwLCAwLjE0KSwwcHggOXB4IDQ2cHggOHB4IHJnYmEoMCwgMCwgMCwgMC4xMik7YmFja2dyb3VuZDojZmZmO2NvbG9yOiMyMTIxMjF9Lm1hdC1kaXZpZGVyW19uZ2NvbnRlbnQtJUNPTVAlXXtib3JkZXItdG9wLWNvbG9yOnJnYmEoMCwwLDAsLjEyKX0ubWF0LWRpdmlkZXItdmVydGljYWxbX25nY29udGVudC0lQ09NUCVde2JvcmRlci1yaWdodC1jb2xvcjpyZ2JhKDAsMCwwLC4xMil9Lm1hdC1leHBhbnNpb24tcGFuZWxbX25nY29udGVudC0lQ09NUCVde2JhY2tncm91bmQ6I2ZmZjtjb2xvcjojMjEyMTIxfS5tYXQtZXhwYW5zaW9uLXBhbmVsW19uZ2NvbnRlbnQtJUNPTVAlXTpub3QoW2NsYXNzKj1tYXQtZWxldmF0aW9uLXpdKXtib3gtc2hhZG93OjBweCAzcHggMXB4IC0ycHggcmdiYSgwLCAwLCAwLCAwLjIpLDBweCAycHggMnB4IDBweCByZ2JhKDAsIDAsIDAsIDAuMTQpLDBweCAxcHggNXB4IDBweCByZ2JhKDAsIDAsIDAsIDAuMTIpfS5tYXQtYWN0aW9uLXJvd1tfbmdjb250ZW50LSVDT01QJV17Ym9yZGVyLXRvcC1jb2xvcjpyZ2JhKDAsMCwwLC4xMil9Lm1hdC1leHBhbnNpb24tcGFuZWxbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1leHBhbnNpb24tcGFuZWwtaGVhZGVyLmNkay1rZXlib2FyZC1mb2N1c2VkW19uZ2NvbnRlbnQtJUNPTVAlXTpub3QoW2FyaWEtZGlzYWJsZWQ9dHJ1ZV0pLCAubWF0LWV4cGFuc2lvbi1wYW5lbFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWV4cGFuc2lvbi1wYW5lbC1oZWFkZXIuY2RrLXByb2dyYW0tZm9jdXNlZFtfbmdjb250ZW50LSVDT01QJV06bm90KFthcmlhLWRpc2FibGVkPXRydWVdKSwgLm1hdC1leHBhbnNpb24tcGFuZWxbX25nY29udGVudC0lQ09NUCVdOm5vdCgubWF0LWV4cGFuZGVkKSAgIC5tYXQtZXhwYW5zaW9uLXBhbmVsLWhlYWRlcltfbmdjb250ZW50LSVDT01QJV06aG92ZXI6bm90KFthcmlhLWRpc2FibGVkPXRydWVdKXtiYWNrZ3JvdW5kOnJnYmEoMCwwLDAsLjA0KX1AbWVkaWEoaG92ZXI6IG5vbmUpey5tYXQtZXhwYW5zaW9uLXBhbmVsW19uZ2NvbnRlbnQtJUNPTVAlXTpub3QoLm1hdC1leHBhbmRlZCk6bm90KFthcmlhLWRpc2FibGVkPXRydWVdKSAgIC5tYXQtZXhwYW5zaW9uLXBhbmVsLWhlYWRlcltfbmdjb250ZW50LSVDT01QJV06aG92ZXJ7YmFja2dyb3VuZDojZmZmfX0ubWF0LWV4cGFuc2lvbi1wYW5lbC1oZWFkZXItdGl0bGVbX25nY29udGVudC0lQ09NUCVde2NvbG9yOiMyMTIxMjF9Lm1hdC1leHBhbnNpb24tcGFuZWwtaGVhZGVyLWRlc2NyaXB0aW9uW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1leHBhbnNpb24taW5kaWNhdG9yW19uZ2NvbnRlbnQtJUNPTVAlXTo6YWZ0ZXJ7Y29sb3I6IzYxNjE2MX0ubWF0LWV4cGFuc2lvbi1wYW5lbC1oZWFkZXJbYXJpYS1kaXNhYmxlZD10cnVlXVtfbmdjb250ZW50LSVDT01QJV17Y29sb3I6cmdiYSgwLDAsMCwuMjYpfS5tYXQtZXhwYW5zaW9uLXBhbmVsLWhlYWRlclthcmlhLWRpc2FibGVkPXRydWVdW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZXhwYW5zaW9uLXBhbmVsLWhlYWRlci10aXRsZVtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtZXhwYW5zaW9uLXBhbmVsLWhlYWRlclthcmlhLWRpc2FibGVkPXRydWVdW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZXhwYW5zaW9uLXBhbmVsLWhlYWRlci1kZXNjcmlwdGlvbltfbmdjb250ZW50LSVDT01QJV17Y29sb3I6aW5oZXJpdH0ubWF0LWV4cGFuc2lvbi1wYW5lbC1oZWFkZXJbX25nY29udGVudC0lQ09NUCVde2hlaWdodDo0OHB4fS5tYXQtZXhwYW5zaW9uLXBhbmVsLWhlYWRlci5tYXQtZXhwYW5kZWRbX25nY29udGVudC0lQ09NUCVde2hlaWdodDo2NHB4fS5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17Y29sb3I6cmdiYSg5Nyw5Nyw5NywuNil9Lm1hdC1oaW50W19uZ2NvbnRlbnQtJUNPTVAlXXtjb2xvcjpyZ2JhKDk3LDk3LDk3LC42KX0ubWF0LWZvcm0tZmllbGQubWF0LWZvY3VzZWRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXtjb2xvcjojZjU3YzAwfS5tYXQtZm9ybS1maWVsZC5tYXQtZm9jdXNlZFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWwubWF0LWFjY2VudFtfbmdjb250ZW50LSVDT01QJV17Y29sb3I6I2ZmOTgwMH0ubWF0LWZvcm0tZmllbGQubWF0LWZvY3VzZWRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsLm1hdC13YXJuW19uZ2NvbnRlbnQtJUNPTVAlXXtjb2xvcjojZjQ0MzM2fS5tYXQtZm9jdXNlZFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtcmVxdWlyZWQtbWFya2VyW19uZ2NvbnRlbnQtJUNPTVAlXXtjb2xvcjojZmY5ODAwfS5tYXQtZm9ybS1maWVsZC1yaXBwbGVbX25nY29udGVudC0lQ09NUCVde2JhY2tncm91bmQtY29sb3I6cmdiYSgwLDAsMCwuODcpfS5tYXQtZm9ybS1maWVsZC5tYXQtZm9jdXNlZFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtcmlwcGxlW19uZ2NvbnRlbnQtJUNPTVAlXXtiYWNrZ3JvdW5kLWNvbG9yOiNmNTdjMDB9Lm1hdC1mb3JtLWZpZWxkLm1hdC1mb2N1c2VkW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1yaXBwbGUubWF0LWFjY2VudFtfbmdjb250ZW50LSVDT01QJV17YmFja2dyb3VuZC1jb2xvcjojZmY5ODAwfS5tYXQtZm9ybS1maWVsZC5tYXQtZm9jdXNlZFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtcmlwcGxlLm1hdC13YXJuW19uZ2NvbnRlbnQtJUNPTVAlXXtiYWNrZ3JvdW5kLWNvbG9yOiNmNDQzMzZ9Lm1hdC1mb3JtLWZpZWxkLXR5cGUtbWF0LW5hdGl2ZS1zZWxlY3QubWF0LWZvY3VzZWRbX25nY29udGVudC0lQ09NUCVdOm5vdCgubWF0LWZvcm0tZmllbGQtaW52YWxpZCkgICAubWF0LWZvcm0tZmllbGQtaW5maXhbX25nY29udGVudC0lQ09NUCVdOjphZnRlcntjb2xvcjojZjU3YzAwfS5tYXQtZm9ybS1maWVsZC10eXBlLW1hdC1uYXRpdmUtc2VsZWN0Lm1hdC1mb2N1c2VkW19uZ2NvbnRlbnQtJUNPTVAlXTpub3QoLm1hdC1mb3JtLWZpZWxkLWludmFsaWQpLm1hdC1hY2NlbnQgICAubWF0LWZvcm0tZmllbGQtaW5maXhbX25nY29udGVudC0lQ09NUCVdOjphZnRlcntjb2xvcjojZmY5ODAwfS5tYXQtZm9ybS1maWVsZC10eXBlLW1hdC1uYXRpdmUtc2VsZWN0Lm1hdC1mb2N1c2VkW19uZ2NvbnRlbnQtJUNPTVAlXTpub3QoLm1hdC1mb3JtLWZpZWxkLWludmFsaWQpLm1hdC13YXJuICAgLm1hdC1mb3JtLWZpZWxkLWluZml4W19uZ2NvbnRlbnQtJUNPTVAlXTo6YWZ0ZXJ7Y29sb3I6I2Y0NDMzNn0ubWF0LWZvcm0tZmllbGQubWF0LWZvcm0tZmllbGQtaW52YWxpZFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVde2NvbG9yOiNmNDQzMzZ9Lm1hdC1mb3JtLWZpZWxkLm1hdC1mb3JtLWZpZWxkLWludmFsaWRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsLm1hdC1hY2NlbnRbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWZvcm0tZmllbGQubWF0LWZvcm0tZmllbGQtaW52YWxpZFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLXJlcXVpcmVkLW1hcmtlcltfbmdjb250ZW50LSVDT01QJV17Y29sb3I6I2Y0NDMzNn0ubWF0LWZvcm0tZmllbGQubWF0LWZvcm0tZmllbGQtaW52YWxpZFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtcmlwcGxlW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1mb3JtLWZpZWxkLm1hdC1mb3JtLWZpZWxkLWludmFsaWRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLXJpcHBsZS5tYXQtYWNjZW50W19uZ2NvbnRlbnQtJUNPTVAlXXtiYWNrZ3JvdW5kLWNvbG9yOiNmNDQzMzZ9Lm1hdC1lcnJvcltfbmdjb250ZW50LSVDT01QJV17Y29sb3I6I2Y0NDMzNn0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1sZWdhY3lbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXtjb2xvcjojNjE2MTYxfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWxlZ2FjeVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWhpbnRbX25nY29udGVudC0lQ09NUCVde2NvbG9yOiM2MTYxNjF9Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtbGVnYWN5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC11bmRlcmxpbmVbX25nY29udGVudC0lQ09NUCVde2JhY2tncm91bmQtY29sb3I6cmdiYSgwLDAsMCwuNDIpfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWxlZ2FjeS5tYXQtZm9ybS1maWVsZC1kaXNhYmxlZFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtdW5kZXJsaW5lW19uZ2NvbnRlbnQtJUNPTVAlXXtiYWNrZ3JvdW5kLWltYWdlOmxpbmVhci1ncmFkaWVudCh0byByaWdodCwgcmdiYSgwLCAwLCAwLCAwLjQyKSAwJSwgcmdiYSgwLCAwLCAwLCAwLjQyKSAzMyUsIHRyYW5zcGFyZW50IDAlKTtiYWNrZ3JvdW5kLXNpemU6NHB4IDEwMCU7YmFja2dyb3VuZC1yZXBlYXQ6cmVwZWF0LXh9Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2Utc3RhbmRhcmRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLXVuZGVybGluZVtfbmdjb250ZW50LSVDT01QJV17YmFja2dyb3VuZC1jb2xvcjpyZ2JhKDAsMCwwLC40Mil9Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2Utc3RhbmRhcmQubWF0LWZvcm0tZmllbGQtZGlzYWJsZWRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLXVuZGVybGluZVtfbmdjb250ZW50LSVDT01QJV17YmFja2dyb3VuZC1pbWFnZTpsaW5lYXItZ3JhZGllbnQodG8gcmlnaHQsIHJnYmEoMCwgMCwgMCwgMC40MikgMCUsIHJnYmEoMCwgMCwgMCwgMC40MikgMzMlLCB0cmFuc3BhcmVudCAwJSk7YmFja2dyb3VuZC1zaXplOjRweCAxMDAlO2JhY2tncm91bmQtcmVwZWF0OnJlcGVhdC14fS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWZpbGxbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWZsZXhbX25nY29udGVudC0lQ09NUCVde2JhY2tncm91bmQtY29sb3I6cmdiYSgwLDAsMCwuMDQpfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWZpbGwubWF0LWZvcm0tZmllbGQtZGlzYWJsZWRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWZsZXhbX25nY29udGVudC0lQ09NUCVde2JhY2tncm91bmQtY29sb3I6cmdiYSgwLDAsMCwuMDIpfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWZpbGxbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLXVuZGVybGluZVtfbmdjb250ZW50LSVDT01QJV06OmJlZm9yZXtiYWNrZ3JvdW5kLWNvbG9yOnJnYmEoMCwwLDAsLjQyKX0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1maWxsLm1hdC1mb3JtLWZpZWxkLWRpc2FibGVkW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17Y29sb3I6Izc1NzU3NX0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1maWxsLm1hdC1mb3JtLWZpZWxkLWRpc2FibGVkW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC11bmRlcmxpbmVbX25nY29udGVudC0lQ09NUCVdOjpiZWZvcmV7YmFja2dyb3VuZC1jb2xvcjp0cmFuc3BhcmVudH0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1vdXRsaW5lW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1vdXRsaW5lW19uZ2NvbnRlbnQtJUNPTVAlXXtjb2xvcjpyZ2JhKDAsMCwwLC4xMil9Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2Utb3V0bGluZVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtb3V0bGluZS10aGlja1tfbmdjb250ZW50LSVDT01QJV17Y29sb3I6cmdiYSgwLDAsMCwuODcpfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLW91dGxpbmUubWF0LWZvY3VzZWRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLW91dGxpbmUtdGhpY2tbX25nY29udGVudC0lQ09NUCVde2NvbG9yOiNmNTdjMDB9Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2Utb3V0bGluZS5tYXQtZm9jdXNlZC5tYXQtYWNjZW50W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1vdXRsaW5lLXRoaWNrW19uZ2NvbnRlbnQtJUNPTVAlXXtjb2xvcjojZmY5ODAwfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLW91dGxpbmUubWF0LWZvY3VzZWQubWF0LXdhcm5bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLW91dGxpbmUtdGhpY2tbX25nY29udGVudC0lQ09NUCVde2NvbG9yOiNmNDQzMzZ9Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2Utb3V0bGluZS5tYXQtZm9ybS1maWVsZC1pbnZhbGlkLm1hdC1mb3JtLWZpZWxkLWludmFsaWRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLW91dGxpbmUtdGhpY2tbX25nY29udGVudC0lQ09NUCVde2NvbG9yOiNmNDQzMzZ9Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2Utb3V0bGluZS5tYXQtZm9ybS1maWVsZC1kaXNhYmxlZFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVde2NvbG9yOiM3NTc1NzV9Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2Utb3V0bGluZS5tYXQtZm9ybS1maWVsZC1kaXNhYmxlZFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtb3V0bGluZVtfbmdjb250ZW50LSVDT01QJV17Y29sb3I6cmdiYSgwLDAsMCwuMDYpfS5tYXQtaWNvbi5tYXQtcHJpbWFyeVtfbmdjb250ZW50LSVDT01QJV17Y29sb3I6I2Y1N2MwMH0ubWF0LWljb24ubWF0LWFjY2VudFtfbmdjb250ZW50LSVDT01QJV17Y29sb3I6I2ZmOTgwMH0ubWF0LWljb24ubWF0LXdhcm5bX25nY29udGVudC0lQ09NUCVde2NvbG9yOiNmNDQzMzZ9Lm1hdC1mb3JtLWZpZWxkLXR5cGUtbWF0LW5hdGl2ZS1zZWxlY3RbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWluZml4W19uZ2NvbnRlbnQtJUNPTVAlXTo6YWZ0ZXJ7Y29sb3I6IzYxNjE2MX0ubWF0LWlucHV0LWVsZW1lbnRbX25nY29udGVudC0lQ09NUCVdOmRpc2FibGVkLCAubWF0LWZvcm0tZmllbGQtdHlwZS1tYXQtbmF0aXZlLXNlbGVjdC5tYXQtZm9ybS1maWVsZC1kaXNhYmxlZFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtaW5maXhbX25nY29udGVudC0lQ09NUCVdOjphZnRlcntjb2xvcjojNzU3NTc1fS5tYXQtaW5wdXQtZWxlbWVudFtfbmdjb250ZW50LSVDT01QJV17Y2FyZXQtY29sb3I6I2Y1N2MwMH0ubWF0LWlucHV0LWVsZW1lbnRbX25nY29udGVudC0lQ09NUCVdOjpwbGFjZWhvbGRlcntjb2xvcjpyZ2JhKDk3LDk3LDk3LC40Mil9Lm1hdC1pbnB1dC1lbGVtZW50W19uZ2NvbnRlbnQtJUNPTVAlXTo6LW1vei1wbGFjZWhvbGRlcntjb2xvcjpyZ2JhKDk3LDk3LDk3LC40Mil9Lm1hdC1pbnB1dC1lbGVtZW50W19uZ2NvbnRlbnQtJUNPTVAlXTo6LXdlYmtpdC1pbnB1dC1wbGFjZWhvbGRlcntjb2xvcjpyZ2JhKDk3LDk3LDk3LC40Mil9Lm1hdC1pbnB1dC1lbGVtZW50W19uZ2NvbnRlbnQtJUNPTVAlXTotbXMtaW5wdXQtcGxhY2Vob2xkZXJ7Y29sb3I6cmdiYSg5Nyw5Nyw5NywuNDIpfS5tYXQtZm9ybS1maWVsZC5tYXQtYWNjZW50W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaW5wdXQtZWxlbWVudFtfbmdjb250ZW50LSVDT01QJV17Y2FyZXQtY29sb3I6I2ZmOTgwMH0ubWF0LWZvcm0tZmllbGQubWF0LXdhcm5bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pbnB1dC1lbGVtZW50W19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1mb3JtLWZpZWxkLWludmFsaWRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pbnB1dC1lbGVtZW50W19uZ2NvbnRlbnQtJUNPTVAlXXtjYXJldC1jb2xvcjojZjQ0MzM2fS5tYXQtZm9ybS1maWVsZC10eXBlLW1hdC1uYXRpdmUtc2VsZWN0Lm1hdC1mb3JtLWZpZWxkLWludmFsaWRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWluZml4W19uZ2NvbnRlbnQtJUNPTVAlXTo6YWZ0ZXJ7Y29sb3I6I2Y0NDMzNn0ubWF0LWxpc3QtYmFzZVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpc3QtaXRlbVtfbmdjb250ZW50LSVDT01QJV17Y29sb3I6IzIxMjEyMX0ubWF0LWxpc3QtYmFzZVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpc3Qtb3B0aW9uW19uZ2NvbnRlbnQtJUNPTVAlXXtjb2xvcjojMjEyMTIxfS5tYXQtbGlzdC1iYXNlW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtc3ViaGVhZGVyW19uZ2NvbnRlbnQtJUNPTVAlXXtjb2xvcjojNjE2MTYxfS5tYXQtbGlzdC1pdGVtLWRpc2FibGVkW19uZ2NvbnRlbnQtJUNPTVAlXXtiYWNrZ3JvdW5kLWNvbG9yOiNlZWV9Lm1hdC1saXN0LW9wdGlvbltfbmdjb250ZW50LSVDT01QJV06aG92ZXIsIC5tYXQtbGlzdC1vcHRpb25bX25nY29udGVudC0lQ09NUCVdOmZvY3VzLCAubWF0LW5hdi1saXN0W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGlzdC1pdGVtW19uZ2NvbnRlbnQtJUNPTVAlXTpob3ZlciwgLm1hdC1uYXYtbGlzdFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpc3QtaXRlbVtfbmdjb250ZW50LSVDT01QJV06Zm9jdXMsIC5tYXQtYWN0aW9uLWxpc3RbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saXN0LWl0ZW1bX25nY29udGVudC0lQ09NUCVdOmhvdmVyLCAubWF0LWFjdGlvbi1saXN0W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGlzdC1pdGVtW19uZ2NvbnRlbnQtJUNPTVAlXTpmb2N1c3tiYWNrZ3JvdW5kOnJnYmEoMCwwLDAsLjA0KX0ubWF0LWxpc3Qtc2luZ2xlLXNlbGVjdGVkLW9wdGlvbltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtbGlzdC1zaW5nbGUtc2VsZWN0ZWQtb3B0aW9uW19uZ2NvbnRlbnQtJUNPTVAlXTpob3ZlciwgLm1hdC1saXN0LXNpbmdsZS1zZWxlY3RlZC1vcHRpb25bX25nY29udGVudC0lQ09NUCVdOmZvY3Vze2JhY2tncm91bmQ6cmdiYSgwLDAsMCwuMTIpfS5tYXQtbWVudS1wYW5lbFtfbmdjb250ZW50LSVDT01QJV17YmFja2dyb3VuZDojZmZmfS5tYXQtbWVudS1wYW5lbFtfbmdjb250ZW50LSVDT01QJV06bm90KFtjbGFzcyo9bWF0LWVsZXZhdGlvbi16XSl7Ym94LXNoYWRvdzowcHggMnB4IDRweCAtMXB4IHJnYmEoMCwgMCwgMCwgMC4yKSwwcHggNHB4IDVweCAwcHggcmdiYSgwLCAwLCAwLCAwLjE0KSwwcHggMXB4IDEwcHggMHB4IHJnYmEoMCwgMCwgMCwgMC4xMil9Lm1hdC1tZW51LWl0ZW1bX25nY29udGVudC0lQ09NUCVde2JhY2tncm91bmQ6dHJhbnNwYXJlbnQ7Y29sb3I6IzIxMjEyMX0ubWF0LW1lbnUtaXRlbVtkaXNhYmxlZF1bX25nY29udGVudC0lQ09NUCVdLCAubWF0LW1lbnUtaXRlbVtkaXNhYmxlZF1bX25nY29udGVudC0lQ09NUCVdOjphZnRlcntjb2xvcjpyZ2JhKDAsMCwwLC4zOCl9Lm1hdC1tZW51LWl0ZW1bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pY29uLW5vLWNvbG9yW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1tZW51LWl0ZW0tc3VibWVudS10cmlnZ2VyW19uZ2NvbnRlbnQtJUNPTVAlXTo6YWZ0ZXJ7Y29sb3I6cmdiYSgwLDAsMCwuNTQpfS5tYXQtbWVudS1pdGVtW19uZ2NvbnRlbnQtJUNPTVAlXTpob3Zlcjpub3QoW2Rpc2FibGVkXSksIC5tYXQtbWVudS1pdGVtLmNkay1wcm9ncmFtLWZvY3VzZWRbX25nY29udGVudC0lQ09NUCVdOm5vdChbZGlzYWJsZWRdKSwgLm1hdC1tZW51LWl0ZW0uY2RrLWtleWJvYXJkLWZvY3VzZWRbX25nY29udGVudC0lQ09NUCVdOm5vdChbZGlzYWJsZWRdKSwgLm1hdC1tZW51LWl0ZW0taGlnaGxpZ2h0ZWRbX25nY29udGVudC0lQ09NUCVdOm5vdChbZGlzYWJsZWRdKXtiYWNrZ3JvdW5kOnJnYmEoMCwwLDAsLjA0KX0ubWF0LXBhZ2luYXRvcltfbmdjb250ZW50LSVDT01QJV17YmFja2dyb3VuZDojZmZmfS5tYXQtcGFnaW5hdG9yW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1wYWdpbmF0b3ItcGFnZS1zaXplW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtc2VsZWN0LXRyaWdnZXJbX25nY29udGVudC0lQ09NUCVde2NvbG9yOiM2MTYxNjF9Lm1hdC1wYWdpbmF0b3ItZGVjcmVtZW50W19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1wYWdpbmF0b3ItaW5jcmVtZW50W19uZ2NvbnRlbnQtJUNPTVAlXXtib3JkZXItdG9wOjJweCBzb2xpZCByZ2JhKDAsMCwwLC41NCk7Ym9yZGVyLXJpZ2h0OjJweCBzb2xpZCByZ2JhKDAsMCwwLC41NCl9Lm1hdC1wYWdpbmF0b3ItZmlyc3RbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXBhZ2luYXRvci1sYXN0W19uZ2NvbnRlbnQtJUNPTVAlXXtib3JkZXItdG9wOjJweCBzb2xpZCByZ2JhKDAsMCwwLC41NCl9Lm1hdC1pY29uLWJ1dHRvbltkaXNhYmxlZF1bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1wYWdpbmF0b3ItZGVjcmVtZW50W19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1pY29uLWJ1dHRvbltkaXNhYmxlZF1bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1wYWdpbmF0b3ItaW5jcmVtZW50W19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1pY29uLWJ1dHRvbltkaXNhYmxlZF1bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1wYWdpbmF0b3ItZmlyc3RbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWljb24tYnV0dG9uW2Rpc2FibGVkXVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXBhZ2luYXRvci1sYXN0W19uZ2NvbnRlbnQtJUNPTVAlXXtib3JkZXItY29sb3I6cmdiYSgwLDAsMCwuMzgpfS5tYXQtcGFnaW5hdG9yLWNvbnRhaW5lcltfbmdjb250ZW50LSVDT01QJV17bWluLWhlaWdodDo1NnB4fS5tYXQtcHJvZ3Jlc3MtYmFyLWJhY2tncm91bmRbX25nY29udGVudC0lQ09NUCVde2ZpbGw6I2ZmOTgwMH0ubWF0LXByb2dyZXNzLWJhci1idWZmZXJbX25nY29udGVudC0lQ09NUCVde2JhY2tncm91bmQtY29sb3I6I2ZmOTgwMH0ubWF0LXByb2dyZXNzLWJhci1maWxsW19uZ2NvbnRlbnQtJUNPTVAlXTo6YWZ0ZXJ7YmFja2dyb3VuZC1jb2xvcjojZjU3YzAwfS5tYXQtcHJvZ3Jlc3MtYmFyLm1hdC1hY2NlbnRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1wcm9ncmVzcy1iYXItYmFja2dyb3VuZFtfbmdjb250ZW50LSVDT01QJV17ZmlsbDojZmY5ODAwfS5tYXQtcHJvZ3Jlc3MtYmFyLm1hdC1hY2NlbnRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1wcm9ncmVzcy1iYXItYnVmZmVyW19uZ2NvbnRlbnQtJUNPTVAlXXtiYWNrZ3JvdW5kLWNvbG9yOiNmZjk4MDB9Lm1hdC1wcm9ncmVzcy1iYXIubWF0LWFjY2VudFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXByb2dyZXNzLWJhci1maWxsW19uZ2NvbnRlbnQtJUNPTVAlXTo6YWZ0ZXJ7YmFja2dyb3VuZC1jb2xvcjojZmY5ODAwfS5tYXQtcHJvZ3Jlc3MtYmFyLm1hdC13YXJuW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtcHJvZ3Jlc3MtYmFyLWJhY2tncm91bmRbX25nY29udGVudC0lQ09NUCVde2ZpbGw6I2ZmY2RkMn0ubWF0LXByb2dyZXNzLWJhci5tYXQtd2Fybltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXByb2dyZXNzLWJhci1idWZmZXJbX25nY29udGVudC0lQ09NUCVde2JhY2tncm91bmQtY29sb3I6I2ZmY2RkMn0ubWF0LXByb2dyZXNzLWJhci5tYXQtd2Fybltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXByb2dyZXNzLWJhci1maWxsW19uZ2NvbnRlbnQtJUNPTVAlXTo6YWZ0ZXJ7YmFja2dyb3VuZC1jb2xvcjojZjQ0MzM2fS5tYXQtcHJvZ3Jlc3Mtc3Bpbm5lcltfbmdjb250ZW50LSVDT01QJV0gICBjaXJjbGVbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXNwaW5uZXJbX25nY29udGVudC0lQ09NUCVdICAgY2lyY2xlW19uZ2NvbnRlbnQtJUNPTVAlXXtzdHJva2U6I2Y1N2MwMH0ubWF0LXByb2dyZXNzLXNwaW5uZXIubWF0LWFjY2VudFtfbmdjb250ZW50LSVDT01QJV0gICBjaXJjbGVbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXNwaW5uZXIubWF0LWFjY2VudFtfbmdjb250ZW50LSVDT01QJV0gICBjaXJjbGVbX25nY29udGVudC0lQ09NUCVde3N0cm9rZTojZmY5ODAwfS5tYXQtcHJvZ3Jlc3Mtc3Bpbm5lci5tYXQtd2Fybltfbmdjb250ZW50LSVDT01QJV0gICBjaXJjbGVbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXNwaW5uZXIubWF0LXdhcm5bX25nY29udGVudC0lQ09NUCVdICAgY2lyY2xlW19uZ2NvbnRlbnQtJUNPTVAlXXtzdHJva2U6I2Y0NDMzNn0ubWF0LXJhZGlvLW91dGVyLWNpcmNsZVtfbmdjb250ZW50LSVDT01QJV17Ym9yZGVyLWNvbG9yOiM2MTYxNjF9Lm1hdC1yYWRpby1idXR0b24ubWF0LXByaW1hcnkubWF0LXJhZGlvLWNoZWNrZWRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1yYWRpby1vdXRlci1jaXJjbGVbX25nY29udGVudC0lQ09NUCVde2JvcmRlci1jb2xvcjojZjU3YzAwfS5tYXQtcmFkaW8tYnV0dG9uLm1hdC1wcmltYXJ5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtcmFkaW8taW5uZXItY2lyY2xlW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1yYWRpby1idXR0b24ubWF0LXByaW1hcnlbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1yYWRpby1yaXBwbGVbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1yaXBwbGUtZWxlbWVudFtfbmdjb250ZW50LSVDT01QJV06bm90KC5tYXQtcmFkaW8tcGVyc2lzdGVudC1yaXBwbGUpLCAubWF0LXJhZGlvLWJ1dHRvbi5tYXQtcHJpbWFyeS5tYXQtcmFkaW8tY2hlY2tlZFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXJhZGlvLXBlcnNpc3RlbnQtcmlwcGxlW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1yYWRpby1idXR0b24ubWF0LXByaW1hcnlbX25nY29udGVudC0lQ09NUCVdOmFjdGl2ZSAgIC5tYXQtcmFkaW8tcGVyc2lzdGVudC1yaXBwbGVbX25nY29udGVudC0lQ09NUCVde2JhY2tncm91bmQtY29sb3I6I2Y1N2MwMH0ubWF0LXJhZGlvLWJ1dHRvbi5tYXQtYWNjZW50Lm1hdC1yYWRpby1jaGVja2VkW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtcmFkaW8tb3V0ZXItY2lyY2xlW19uZ2NvbnRlbnQtJUNPTVAlXXtib3JkZXItY29sb3I6I2ZmOTgwMH0ubWF0LXJhZGlvLWJ1dHRvbi5tYXQtYWNjZW50W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtcmFkaW8taW5uZXItY2lyY2xlW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1yYWRpby1idXR0b24ubWF0LWFjY2VudFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXJhZGlvLXJpcHBsZVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXJpcHBsZS1lbGVtZW50W19uZ2NvbnRlbnQtJUNPTVAlXTpub3QoLm1hdC1yYWRpby1wZXJzaXN0ZW50LXJpcHBsZSksIC5tYXQtcmFkaW8tYnV0dG9uLm1hdC1hY2NlbnQubWF0LXJhZGlvLWNoZWNrZWRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1yYWRpby1wZXJzaXN0ZW50LXJpcHBsZVtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtcmFkaW8tYnV0dG9uLm1hdC1hY2NlbnRbX25nY29udGVudC0lQ09NUCVdOmFjdGl2ZSAgIC5tYXQtcmFkaW8tcGVyc2lzdGVudC1yaXBwbGVbX25nY29udGVudC0lQ09NUCVde2JhY2tncm91bmQtY29sb3I6I2ZmOTgwMH0ubWF0LXJhZGlvLWJ1dHRvbi5tYXQtd2Fybi5tYXQtcmFkaW8tY2hlY2tlZFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXJhZGlvLW91dGVyLWNpcmNsZVtfbmdjb250ZW50LSVDT01QJV17Ym9yZGVyLWNvbG9yOiNmNDQzMzZ9Lm1hdC1yYWRpby1idXR0b24ubWF0LXdhcm5bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1yYWRpby1pbm5lci1jaXJjbGVbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXJhZGlvLWJ1dHRvbi5tYXQtd2Fybltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXJhZGlvLXJpcHBsZVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXJpcHBsZS1lbGVtZW50W19uZ2NvbnRlbnQtJUNPTVAlXTpub3QoLm1hdC1yYWRpby1wZXJzaXN0ZW50LXJpcHBsZSksIC5tYXQtcmFkaW8tYnV0dG9uLm1hdC13YXJuLm1hdC1yYWRpby1jaGVja2VkW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtcmFkaW8tcGVyc2lzdGVudC1yaXBwbGVbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXJhZGlvLWJ1dHRvbi5tYXQtd2Fybltfbmdjb250ZW50LSVDT01QJV06YWN0aXZlICAgLm1hdC1yYWRpby1wZXJzaXN0ZW50LXJpcHBsZVtfbmdjb250ZW50LSVDT01QJV17YmFja2dyb3VuZC1jb2xvcjojZjQ0MzM2fS5tYXQtcmFkaW8tYnV0dG9uLm1hdC1yYWRpby1kaXNhYmxlZC5tYXQtcmFkaW8tY2hlY2tlZFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXJhZGlvLW91dGVyLWNpcmNsZVtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtcmFkaW8tYnV0dG9uLm1hdC1yYWRpby1kaXNhYmxlZFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXJhZGlvLW91dGVyLWNpcmNsZVtfbmdjb250ZW50LSVDT01QJV17Ym9yZGVyLWNvbG9yOnJnYmEoMCwwLDAsLjM4KX0ubWF0LXJhZGlvLWJ1dHRvbi5tYXQtcmFkaW8tZGlzYWJsZWRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1yYWRpby1yaXBwbGVbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1yaXBwbGUtZWxlbWVudFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtcmFkaW8tYnV0dG9uLm1hdC1yYWRpby1kaXNhYmxlZFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXJhZGlvLWlubmVyLWNpcmNsZVtfbmdjb250ZW50LSVDT01QJV17YmFja2dyb3VuZC1jb2xvcjpyZ2JhKDAsMCwwLC4zOCl9Lm1hdC1yYWRpby1idXR0b24ubWF0LXJhZGlvLWRpc2FibGVkW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtcmFkaW8tbGFiZWwtY29udGVudFtfbmdjb250ZW50LSVDT01QJV17Y29sb3I6cmdiYSgwLDAsMCwuMzgpfS5tYXQtcmFkaW8tYnV0dG9uW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtcmlwcGxlLWVsZW1lbnRbX25nY29udGVudC0lQ09NUCVde2JhY2tncm91bmQtY29sb3I6IzAwMH0ubWF0LXNlbGVjdC12YWx1ZVtfbmdjb250ZW50LSVDT01QJV17Y29sb3I6IzIxMjEyMX0ubWF0LXNlbGVjdC1wbGFjZWhvbGRlcltfbmdjb250ZW50LSVDT01QJV17Y29sb3I6cmdiYSg5Nyw5Nyw5NywuNDIpfS5tYXQtc2VsZWN0LWRpc2FibGVkW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtc2VsZWN0LXZhbHVlW19uZ2NvbnRlbnQtJUNPTVAlXXtjb2xvcjojNzU3NTc1fS5tYXQtc2VsZWN0LWFycm93W19uZ2NvbnRlbnQtJUNPTVAlXXtjb2xvcjojNjE2MTYxfS5tYXQtc2VsZWN0LXBhbmVsW19uZ2NvbnRlbnQtJUNPTVAlXXtiYWNrZ3JvdW5kOiNmZmZ9Lm1hdC1zZWxlY3QtcGFuZWxbX25nY29udGVudC0lQ09NUCVdOm5vdChbY2xhc3MqPW1hdC1lbGV2YXRpb24tel0pe2JveC1zaGFkb3c6MHB4IDJweCA0cHggLTFweCByZ2JhKDAsIDAsIDAsIDAuMiksMHB4IDRweCA1cHggMHB4IHJnYmEoMCwgMCwgMCwgMC4xNCksMHB4IDFweCAxMHB4IDBweCByZ2JhKDAsIDAsIDAsIDAuMTIpfS5tYXQtc2VsZWN0LXBhbmVsW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtb3B0aW9uLm1hdC1zZWxlY3RlZFtfbmdjb250ZW50LSVDT01QJV06bm90KC5tYXQtb3B0aW9uLW11bHRpcGxlKXtiYWNrZ3JvdW5kOnJnYmEoMCwwLDAsLjEyKX0ubWF0LWZvcm0tZmllbGQubWF0LWZvY3VzZWQubWF0LXByaW1hcnlbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1zZWxlY3QtYXJyb3dbX25nY29udGVudC0lQ09NUCVde2NvbG9yOiNmNTdjMDB9Lm1hdC1mb3JtLWZpZWxkLm1hdC1mb2N1c2VkLm1hdC1hY2NlbnRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1zZWxlY3QtYXJyb3dbX25nY29udGVudC0lQ09NUCVde2NvbG9yOiNmZjk4MDB9Lm1hdC1mb3JtLWZpZWxkLm1hdC1mb2N1c2VkLm1hdC13YXJuW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtc2VsZWN0LWFycm93W19uZ2NvbnRlbnQtJUNPTVAlXXtjb2xvcjojZjQ0MzM2fS5tYXQtZm9ybS1maWVsZFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXNlbGVjdC5tYXQtc2VsZWN0LWludmFsaWRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1zZWxlY3QtYXJyb3dbX25nY29udGVudC0lQ09NUCVde2NvbG9yOiNmNDQzMzZ9Lm1hdC1mb3JtLWZpZWxkW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtc2VsZWN0Lm1hdC1zZWxlY3QtZGlzYWJsZWRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1zZWxlY3QtYXJyb3dbX25nY29udGVudC0lQ09NUCVde2NvbG9yOiM3NTc1NzV9Lm1hdC1kcmF3ZXItY29udGFpbmVyW19uZ2NvbnRlbnQtJUNPTVAlXXtiYWNrZ3JvdW5kLWNvbG9yOiNmYWZhZmE7Y29sb3I6IzIxMjEyMX0ubWF0LWRyYXdlcltfbmdjb250ZW50LSVDT01QJV17YmFja2dyb3VuZC1jb2xvcjojZmZmO2NvbG9yOiMyMTIxMjF9Lm1hdC1kcmF3ZXIubWF0LWRyYXdlci1wdXNoW19uZ2NvbnRlbnQtJUNPTVAlXXtiYWNrZ3JvdW5kLWNvbG9yOiNmZmZ9Lm1hdC1kcmF3ZXJbX25nY29udGVudC0lQ09NUCVdOm5vdCgubWF0LWRyYXdlci1zaWRlKXtib3gtc2hhZG93OjBweCA4cHggMTBweCAtNXB4IHJnYmEoMCwgMCwgMCwgMC4yKSwwcHggMTZweCAyNHB4IDJweCByZ2JhKDAsIDAsIDAsIDAuMTQpLDBweCA2cHggMzBweCA1cHggcmdiYSgwLCAwLCAwLCAwLjEyKX0ubWF0LWRyYXdlci1zaWRlW19uZ2NvbnRlbnQtJUNPTVAlXXtib3JkZXItcmlnaHQ6c29saWQgMXB4IHJnYmEoMCwwLDAsLjEyKX0ubWF0LWRyYXdlci1zaWRlLm1hdC1kcmF3ZXItZW5kW19uZ2NvbnRlbnQtJUNPTVAlXXtib3JkZXItbGVmdDpzb2xpZCAxcHggcmdiYSgwLDAsMCwuMTIpO2JvcmRlci1yaWdodDpub25lfVtkaXI9cnRsXVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWRyYXdlci1zaWRlW19uZ2NvbnRlbnQtJUNPTVAlXXtib3JkZXItbGVmdDpzb2xpZCAxcHggcmdiYSgwLDAsMCwuMTIpO2JvcmRlci1yaWdodDpub25lfVtkaXI9cnRsXVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWRyYXdlci1zaWRlLm1hdC1kcmF3ZXItZW5kW19uZ2NvbnRlbnQtJUNPTVAlXXtib3JkZXItbGVmdDpub25lO2JvcmRlci1yaWdodDpzb2xpZCAxcHggcmdiYSgwLDAsMCwuMTIpfS5tYXQtZHJhd2VyLWJhY2tkcm9wLm1hdC1kcmF3ZXItc2hvd25bX25nY29udGVudC0lQ09NUCVde2JhY2tncm91bmQtY29sb3I6cmdiYSgwLDAsMCwuNil9Lm1hdC1zbGlkZS10b2dnbGUubWF0LWNoZWNrZWRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1zbGlkZS10b2dnbGUtdGh1bWJbX25nY29udGVudC0lQ09NUCVde2JhY2tncm91bmQtY29sb3I6I2ZmOTgwMH0ubWF0LXNsaWRlLXRvZ2dsZS5tYXQtY2hlY2tlZFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXNsaWRlLXRvZ2dsZS1iYXJbX25nY29udGVudC0lQ09NUCVde2JhY2tncm91bmQtY29sb3I6cmdiYSgyNTUsMTUyLDAsLjU0KX0ubWF0LXNsaWRlLXRvZ2dsZS5tYXQtY2hlY2tlZFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXJpcHBsZS1lbGVtZW50W19uZ2NvbnRlbnQtJUNPTVAlXXtiYWNrZ3JvdW5kLWNvbG9yOiNmZjk4MDB9Lm1hdC1zbGlkZS10b2dnbGUubWF0LXByaW1hcnkubWF0LWNoZWNrZWRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1zbGlkZS10b2dnbGUtdGh1bWJbX25nY29udGVudC0lQ09NUCVde2JhY2tncm91bmQtY29sb3I6I2Y1N2MwMH0ubWF0LXNsaWRlLXRvZ2dsZS5tYXQtcHJpbWFyeS5tYXQtY2hlY2tlZFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXNsaWRlLXRvZ2dsZS1iYXJbX25nY29udGVudC0lQ09NUCVde2JhY2tncm91bmQtY29sb3I6cmdiYSgyNDUsMTI0LDAsLjU0KX0ubWF0LXNsaWRlLXRvZ2dsZS5tYXQtcHJpbWFyeS5tYXQtY2hlY2tlZFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXJpcHBsZS1lbGVtZW50W19uZ2NvbnRlbnQtJUNPTVAlXXtiYWNrZ3JvdW5kLWNvbG9yOiNmNTdjMDB9Lm1hdC1zbGlkZS10b2dnbGUubWF0LXdhcm4ubWF0LWNoZWNrZWRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1zbGlkZS10b2dnbGUtdGh1bWJbX25nY29udGVudC0lQ09NUCVde2JhY2tncm91bmQtY29sb3I6I2Y0NDMzNn0ubWF0LXNsaWRlLXRvZ2dsZS5tYXQtd2Fybi5tYXQtY2hlY2tlZFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXNsaWRlLXRvZ2dsZS1iYXJbX25nY29udGVudC0lQ09NUCVde2JhY2tncm91bmQtY29sb3I6cmdiYSgyNDQsNjcsNTQsLjU0KX0ubWF0LXNsaWRlLXRvZ2dsZS5tYXQtd2Fybi5tYXQtY2hlY2tlZFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXJpcHBsZS1lbGVtZW50W19uZ2NvbnRlbnQtJUNPTVAlXXtiYWNrZ3JvdW5kLWNvbG9yOiNmNDQzMzZ9Lm1hdC1zbGlkZS10b2dnbGVbX25nY29udGVudC0lQ09NUCVdOm5vdCgubWF0LWNoZWNrZWQpICAgLm1hdC1yaXBwbGUtZWxlbWVudFtfbmdjb250ZW50LSVDT01QJV17YmFja2dyb3VuZC1jb2xvcjojMDAwfS5tYXQtc2xpZGUtdG9nZ2xlLXRodW1iW19uZ2NvbnRlbnQtJUNPTVAlXXtib3gtc2hhZG93OjBweCAycHggMXB4IC0xcHggcmdiYSgwLCAwLCAwLCAwLjIpLDBweCAxcHggMXB4IDBweCByZ2JhKDAsIDAsIDAsIDAuMTQpLDBweCAxcHggM3B4IDBweCByZ2JhKDAsIDAsIDAsIDAuMTIpO2JhY2tncm91bmQtY29sb3I6I2ZhZmFmYX0ubWF0LXNsaWRlLXRvZ2dsZS1iYXJbX25nY29udGVudC0lQ09NUCVde2JhY2tncm91bmQtY29sb3I6cmdiYSgwLDAsMCwuMzgpfS5tYXQtc2xpZGVyLXRyYWNrLWJhY2tncm91bmRbX25nY29udGVudC0lQ09NUCVde2JhY2tncm91bmQtY29sb3I6cmdiYSgwLDAsMCwuMjYpfS5tYXQtcHJpbWFyeVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXNsaWRlci10cmFjay1maWxsW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1wcmltYXJ5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtc2xpZGVyLXRodW1iW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1wcmltYXJ5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtc2xpZGVyLXRodW1iLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXtiYWNrZ3JvdW5kLWNvbG9yOiNmNTdjMDB9Lm1hdC1wcmltYXJ5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtc2xpZGVyLXRodW1iLWxhYmVsLXRleHRbX25nY29udGVudC0lQ09NUCVde2NvbG9yOiNmZmZ9Lm1hdC1wcmltYXJ5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtc2xpZGVyLWZvY3VzLXJpbmdbX25nY29udGVudC0lQ09NUCVde2JhY2tncm91bmQtY29sb3I6cmdiYSgyNDUsMTI0LDAsLjIpfS5tYXQtYWNjZW50W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtc2xpZGVyLXRyYWNrLWZpbGxbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWFjY2VudFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXNsaWRlci10aHVtYltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtYWNjZW50W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtc2xpZGVyLXRodW1iLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXtiYWNrZ3JvdW5kLWNvbG9yOiNmZjk4MDB9Lm1hdC1hY2NlbnRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1zbGlkZXItdGh1bWItbGFiZWwtdGV4dFtfbmdjb250ZW50LSVDT01QJV17Y29sb3I6I2ZmZn0ubWF0LWFjY2VudFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXNsaWRlci1mb2N1cy1yaW5nW19uZ2NvbnRlbnQtJUNPTVAlXXtiYWNrZ3JvdW5kLWNvbG9yOnJnYmEoMjU1LDE1MiwwLC4yKX0ubWF0LXdhcm5bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1zbGlkZXItdHJhY2stZmlsbFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtd2Fybltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXNsaWRlci10aHVtYltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtd2Fybltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXNsaWRlci10aHVtYi1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17YmFja2dyb3VuZC1jb2xvcjojZjQ0MzM2fS5tYXQtd2Fybltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXNsaWRlci10aHVtYi1sYWJlbC10ZXh0W19uZ2NvbnRlbnQtJUNPTVAlXXtjb2xvcjojZmZmfS5tYXQtd2Fybltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXNsaWRlci1mb2N1cy1yaW5nW19uZ2NvbnRlbnQtJUNPTVAlXXtiYWNrZ3JvdW5kLWNvbG9yOnJnYmEoMjQ0LDY3LDU0LC4yKX0ubWF0LXNsaWRlcltfbmdjb250ZW50LSVDT01QJV06aG92ZXIgICAubWF0LXNsaWRlci10cmFjay1iYWNrZ3JvdW5kW19uZ2NvbnRlbnQtJUNPTVAlXSwgLmNkay1mb2N1c2VkW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtc2xpZGVyLXRyYWNrLWJhY2tncm91bmRbX25nY29udGVudC0lQ09NUCVde2JhY2tncm91bmQtY29sb3I6cmdiYSgwLDAsMCwuMzgpfS5tYXQtc2xpZGVyLWRpc2FibGVkW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtc2xpZGVyLXRyYWNrLWJhY2tncm91bmRbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXNsaWRlci1kaXNhYmxlZFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXNsaWRlci10cmFjay1maWxsW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1zbGlkZXItZGlzYWJsZWRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1zbGlkZXItdGh1bWJbX25nY29udGVudC0lQ09NUCVde2JhY2tncm91bmQtY29sb3I6cmdiYSgwLDAsMCwuMjYpfS5tYXQtc2xpZGVyLWRpc2FibGVkW19uZ2NvbnRlbnQtJUNPTVAlXTpob3ZlciAgIC5tYXQtc2xpZGVyLXRyYWNrLWJhY2tncm91bmRbX25nY29udGVudC0lQ09NUCVde2JhY2tncm91bmQtY29sb3I6cmdiYSgwLDAsMCwuMjYpfS5tYXQtc2xpZGVyLW1pbi12YWx1ZVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXNsaWRlci1mb2N1cy1yaW5nW19uZ2NvbnRlbnQtJUNPTVAlXXtiYWNrZ3JvdW5kLWNvbG9yOnJnYmEoMCwwLDAsLjEyKX0ubWF0LXNsaWRlci1taW4tdmFsdWUubWF0LXNsaWRlci10aHVtYi1sYWJlbC1zaG93aW5nW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtc2xpZGVyLXRodW1iW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1zbGlkZXItbWluLXZhbHVlLm1hdC1zbGlkZXItdGh1bWItbGFiZWwtc2hvd2luZ1tfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXNsaWRlci10aHVtYi1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17YmFja2dyb3VuZC1jb2xvcjpyZ2JhKDAsMCwwLC44Nyl9Lm1hdC1zbGlkZXItbWluLXZhbHVlLm1hdC1zbGlkZXItdGh1bWItbGFiZWwtc2hvd2luZy5jZGstZm9jdXNlZFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXNsaWRlci10aHVtYltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtc2xpZGVyLW1pbi12YWx1ZS5tYXQtc2xpZGVyLXRodW1iLWxhYmVsLXNob3dpbmcuY2RrLWZvY3VzZWRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1zbGlkZXItdGh1bWItbGFiZWxbX25nY29udGVudC0lQ09NUCVde2JhY2tncm91bmQtY29sb3I6cmdiYSgwLDAsMCwuMjYpfS5tYXQtc2xpZGVyLW1pbi12YWx1ZVtfbmdjb250ZW50LSVDT01QJV06bm90KC5tYXQtc2xpZGVyLXRodW1iLWxhYmVsLXNob3dpbmcpICAgLm1hdC1zbGlkZXItdGh1bWJbX25nY29udGVudC0lQ09NUCVde2JvcmRlci1jb2xvcjpyZ2JhKDAsMCwwLC4yNik7YmFja2dyb3VuZC1jb2xvcjp0cmFuc3BhcmVudH0ubWF0LXNsaWRlci1taW4tdmFsdWVbX25nY29udGVudC0lQ09NUCVdOm5vdCgubWF0LXNsaWRlci10aHVtYi1sYWJlbC1zaG93aW5nKTpob3ZlciAgIC5tYXQtc2xpZGVyLXRodW1iW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1zbGlkZXItbWluLXZhbHVlW19uZ2NvbnRlbnQtJUNPTVAlXTpub3QoLm1hdC1zbGlkZXItdGh1bWItbGFiZWwtc2hvd2luZykuY2RrLWZvY3VzZWQgICAubWF0LXNsaWRlci10aHVtYltfbmdjb250ZW50LSVDT01QJV17Ym9yZGVyLWNvbG9yOnJnYmEoMCwwLDAsLjM4KX0ubWF0LXNsaWRlci1taW4tdmFsdWVbX25nY29udGVudC0lQ09NUCVdOm5vdCgubWF0LXNsaWRlci10aHVtYi1sYWJlbC1zaG93aW5nKTpob3Zlci5tYXQtc2xpZGVyLWRpc2FibGVkICAgLm1hdC1zbGlkZXItdGh1bWJbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXNsaWRlci1taW4tdmFsdWVbX25nY29udGVudC0lQ09NUCVdOm5vdCgubWF0LXNsaWRlci10aHVtYi1sYWJlbC1zaG93aW5nKS5jZGstZm9jdXNlZC5tYXQtc2xpZGVyLWRpc2FibGVkICAgLm1hdC1zbGlkZXItdGh1bWJbX25nY29udGVudC0lQ09NUCVde2JvcmRlci1jb2xvcjpyZ2JhKDAsMCwwLC4yNil9Lm1hdC1zbGlkZXItaGFzLXRpY2tzW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtc2xpZGVyLXdyYXBwZXJbX25nY29udGVudC0lQ09NUCVdOjphZnRlcntib3JkZXItY29sb3I6cmdiYSgwLDAsMCwuNyl9Lm1hdC1zbGlkZXItaG9yaXpvbnRhbFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXNsaWRlci10aWNrc1tfbmdjb250ZW50LSVDT01QJV17YmFja2dyb3VuZC1pbWFnZTpyZXBlYXRpbmctbGluZWFyLWdyYWRpZW50KHRvIHJpZ2h0LCByZ2JhKDAsIDAsIDAsIDAuNyksIHJnYmEoMCwgMCwgMCwgMC43KSAycHgsIHRyYW5zcGFyZW50IDAsIHRyYW5zcGFyZW50KTtiYWNrZ3JvdW5kLWltYWdlOi1tb3otcmVwZWF0aW5nLWxpbmVhci1ncmFkaWVudCgwLjAwMDFkZWcsIHJnYmEoMCwgMCwgMCwgMC43KSwgcmdiYSgwLCAwLCAwLCAwLjcpIDJweCwgdHJhbnNwYXJlbnQgMCwgdHJhbnNwYXJlbnQpfS5tYXQtc2xpZGVyLXZlcnRpY2FsW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtc2xpZGVyLXRpY2tzW19uZ2NvbnRlbnQtJUNPTVAlXXtiYWNrZ3JvdW5kLWltYWdlOnJlcGVhdGluZy1saW5lYXItZ3JhZGllbnQodG8gYm90dG9tLCByZ2JhKDAsIDAsIDAsIDAuNyksIHJnYmEoMCwgMCwgMCwgMC43KSAycHgsIHRyYW5zcGFyZW50IDAsIHRyYW5zcGFyZW50KX0ubWF0LXN0ZXAtaGVhZGVyLmNkay1rZXlib2FyZC1mb2N1c2VkW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1zdGVwLWhlYWRlci5jZGstcHJvZ3JhbS1mb2N1c2VkW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1zdGVwLWhlYWRlcltfbmdjb250ZW50LSVDT01QJV06aG92ZXJ7YmFja2dyb3VuZC1jb2xvcjpyZ2JhKDAsMCwwLC4wNCl9QG1lZGlhKGhvdmVyOiBub25lKXsubWF0LXN0ZXAtaGVhZGVyW19uZ2NvbnRlbnQtJUNPTVAlXTpob3ZlcntiYWNrZ3JvdW5kOm5vbmV9fS5tYXQtc3RlcC1oZWFkZXJbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1zdGVwLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1zdGVwLWhlYWRlcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXN0ZXAtb3B0aW9uYWxbX25nY29udGVudC0lQ09NUCVde2NvbG9yOiM2MTYxNjF9Lm1hdC1zdGVwLWhlYWRlcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXN0ZXAtaWNvbltfbmdjb250ZW50LSVDT01QJV17YmFja2dyb3VuZC1jb2xvcjojNjE2MTYxO2NvbG9yOiNmZmZ9Lm1hdC1zdGVwLWhlYWRlcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXN0ZXAtaWNvbi1zZWxlY3RlZFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtc3RlcC1oZWFkZXJbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1zdGVwLWljb24tc3RhdGUtZG9uZVtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtc3RlcC1oZWFkZXJbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1zdGVwLWljb24tc3RhdGUtZWRpdFtfbmdjb250ZW50LSVDT01QJV17YmFja2dyb3VuZC1jb2xvcjojZjU3YzAwO2NvbG9yOiNmZmZ9Lm1hdC1zdGVwLWhlYWRlcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXN0ZXAtaWNvbi1zdGF0ZS1lcnJvcltfbmdjb250ZW50LSVDT01QJV17YmFja2dyb3VuZC1jb2xvcjp0cmFuc3BhcmVudDtjb2xvcjojZjQ0MzM2fS5tYXQtc3RlcC1oZWFkZXJbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1zdGVwLWxhYmVsLm1hdC1zdGVwLWxhYmVsLWFjdGl2ZVtfbmdjb250ZW50LSVDT01QJV17Y29sb3I6IzIxMjEyMX0ubWF0LXN0ZXAtaGVhZGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtc3RlcC1sYWJlbC5tYXQtc3RlcC1sYWJlbC1lcnJvcltfbmdjb250ZW50LSVDT01QJV17Y29sb3I6I2Y0NDMzNn0ubWF0LXN0ZXBwZXItaG9yaXpvbnRhbFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtc3RlcHBlci12ZXJ0aWNhbFtfbmdjb250ZW50LSVDT01QJV17YmFja2dyb3VuZC1jb2xvcjojZmZmfS5tYXQtc3RlcHBlci12ZXJ0aWNhbC1saW5lW19uZ2NvbnRlbnQtJUNPTVAlXTo6YmVmb3Jle2JvcmRlci1sZWZ0LWNvbG9yOnJnYmEoMCwwLDAsLjEyKX0ubWF0LWhvcml6b250YWwtc3RlcHBlci1oZWFkZXJbX25nY29udGVudC0lQ09NUCVdOjpiZWZvcmUsIC5tYXQtaG9yaXpvbnRhbC1zdGVwcGVyLWhlYWRlcltfbmdjb250ZW50LSVDT01QJV06OmFmdGVyLCAubWF0LXN0ZXBwZXItaG9yaXpvbnRhbC1saW5lW19uZ2NvbnRlbnQtJUNPTVAlXXtib3JkZXItdG9wLWNvbG9yOnJnYmEoMCwwLDAsLjEyKX0ubWF0LWhvcml6b250YWwtc3RlcHBlci1oZWFkZXJbX25nY29udGVudC0lQ09NUCVde2hlaWdodDo3MnB4fS5tYXQtc3RlcHBlci1sYWJlbC1wb3NpdGlvbi1ib3R0b21bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1ob3Jpem9udGFsLXN0ZXBwZXItaGVhZGVyW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC12ZXJ0aWNhbC1zdGVwcGVyLWhlYWRlcltfbmdjb250ZW50LSVDT01QJV17cGFkZGluZzoyNHB4IDI0cHh9Lm1hdC1zdGVwcGVyLXZlcnRpY2FsLWxpbmVbX25nY29udGVudC0lQ09NUCVdOjpiZWZvcmV7dG9wOi0xNnB4O2JvdHRvbTotMTZweH0ubWF0LXN0ZXBwZXItbGFiZWwtcG9zaXRpb24tYm90dG9tW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaG9yaXpvbnRhbC1zdGVwcGVyLWhlYWRlcltfbmdjb250ZW50LSVDT01QJV06OmFmdGVyLCAubWF0LXN0ZXBwZXItbGFiZWwtcG9zaXRpb24tYm90dG9tW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaG9yaXpvbnRhbC1zdGVwcGVyLWhlYWRlcltfbmdjb250ZW50LSVDT01QJV06OmJlZm9yZXt0b3A6MzZweH0ubWF0LXN0ZXBwZXItbGFiZWwtcG9zaXRpb24tYm90dG9tW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtc3RlcHBlci1ob3Jpem9udGFsLWxpbmVbX25nY29udGVudC0lQ09NUCVde3RvcDozNnB4fS5tYXQtc29ydC1oZWFkZXItYXJyb3dbX25nY29udGVudC0lQ09NUCVde2NvbG9yOiM2MTYxNjF9Lm1hdC10YWItbmF2LWJhcltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdGFiLWhlYWRlcltfbmdjb250ZW50LSVDT01QJV17Ym9yZGVyLWJvdHRvbToxcHggc29saWQgcmdiYSgwLDAsMCwuMTIpfS5tYXQtdGFiLWdyb3VwLWludmVydGVkLWhlYWRlcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXRhYi1uYXYtYmFyW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10YWItZ3JvdXAtaW52ZXJ0ZWQtaGVhZGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtdGFiLWhlYWRlcltfbmdjb250ZW50LSVDT01QJV17Ym9yZGVyLXRvcDoxcHggc29saWQgcmdiYSgwLDAsMCwuMTIpO2JvcmRlci1ib3R0b206bm9uZX0ubWF0LXRhYi1sYWJlbFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdGFiLWxpbmtbX25nY29udGVudC0lQ09NUCVde2NvbG9yOiMyMTIxMjF9Lm1hdC10YWItbGFiZWwubWF0LXRhYi1kaXNhYmxlZFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdGFiLWxpbmsubWF0LXRhYi1kaXNhYmxlZFtfbmdjb250ZW50LSVDT01QJV17Y29sb3I6Izc1NzU3NX0ubWF0LXRhYi1oZWFkZXItcGFnaW5hdGlvbi1jaGV2cm9uW19uZ2NvbnRlbnQtJUNPTVAlXXtib3JkZXItY29sb3I6IzIxMjEyMX0ubWF0LXRhYi1oZWFkZXItcGFnaW5hdGlvbi1kaXNhYmxlZFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXRhYi1oZWFkZXItcGFnaW5hdGlvbi1jaGV2cm9uW19uZ2NvbnRlbnQtJUNPTVAlXXtib3JkZXItY29sb3I6Izc1NzU3NX0ubWF0LXRhYi1ncm91cFtjbGFzcyo9bWF0LWJhY2tncm91bmQtXVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXRhYi1oZWFkZXJbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXRhYi1uYXYtYmFyW2NsYXNzKj1tYXQtYmFja2dyb3VuZC1dW19uZ2NvbnRlbnQtJUNPTVAlXXtib3JkZXItYm90dG9tOm5vbmU7Ym9yZGVyLXRvcDpub25lfS5tYXQtdGFiLWdyb3VwLm1hdC1wcmltYXJ5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtdGFiLWxhYmVsLmNkay1rZXlib2FyZC1mb2N1c2VkW19uZ2NvbnRlbnQtJUNPTVAlXTpub3QoLm1hdC10YWItZGlzYWJsZWQpLCAubWF0LXRhYi1ncm91cC5tYXQtcHJpbWFyeVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXRhYi1sYWJlbC5jZGstcHJvZ3JhbS1mb2N1c2VkW19uZ2NvbnRlbnQtJUNPTVAlXTpub3QoLm1hdC10YWItZGlzYWJsZWQpLCAubWF0LXRhYi1ncm91cC5tYXQtcHJpbWFyeVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXRhYi1saW5rLmNkay1rZXlib2FyZC1mb2N1c2VkW19uZ2NvbnRlbnQtJUNPTVAlXTpub3QoLm1hdC10YWItZGlzYWJsZWQpLCAubWF0LXRhYi1ncm91cC5tYXQtcHJpbWFyeVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXRhYi1saW5rLmNkay1wcm9ncmFtLWZvY3VzZWRbX25nY29udGVudC0lQ09NUCVdOm5vdCgubWF0LXRhYi1kaXNhYmxlZCksIC5tYXQtdGFiLW5hdi1iYXIubWF0LXByaW1hcnlbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC10YWItbGFiZWwuY2RrLWtleWJvYXJkLWZvY3VzZWRbX25nY29udGVudC0lQ09NUCVdOm5vdCgubWF0LXRhYi1kaXNhYmxlZCksIC5tYXQtdGFiLW5hdi1iYXIubWF0LXByaW1hcnlbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC10YWItbGFiZWwuY2RrLXByb2dyYW0tZm9jdXNlZFtfbmdjb250ZW50LSVDT01QJV06bm90KC5tYXQtdGFiLWRpc2FibGVkKSwgLm1hdC10YWItbmF2LWJhci5tYXQtcHJpbWFyeVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXRhYi1saW5rLmNkay1rZXlib2FyZC1mb2N1c2VkW19uZ2NvbnRlbnQtJUNPTVAlXTpub3QoLm1hdC10YWItZGlzYWJsZWQpLCAubWF0LXRhYi1uYXYtYmFyLm1hdC1wcmltYXJ5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtdGFiLWxpbmsuY2RrLXByb2dyYW0tZm9jdXNlZFtfbmdjb250ZW50LSVDT01QJV06bm90KC5tYXQtdGFiLWRpc2FibGVkKXtiYWNrZ3JvdW5kLWNvbG9yOnJnYmEoMjU1LDE1MiwwLC4zKX0ubWF0LXRhYi1ncm91cC5tYXQtcHJpbWFyeVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWluay1iYXJbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXRhYi1uYXYtYmFyLm1hdC1wcmltYXJ5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaW5rLWJhcltfbmdjb250ZW50LSVDT01QJV17YmFja2dyb3VuZC1jb2xvcjojZjU3YzAwfS5tYXQtdGFiLWdyb3VwLm1hdC1wcmltYXJ5Lm1hdC1iYWNrZ3JvdW5kLXByaW1hcnlbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pbmstYmFyW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10YWItbmF2LWJhci5tYXQtcHJpbWFyeS5tYXQtYmFja2dyb3VuZC1wcmltYXJ5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaW5rLWJhcltfbmdjb250ZW50LSVDT01QJV17YmFja2dyb3VuZC1jb2xvcjojZmZmfS5tYXQtdGFiLWdyb3VwLm1hdC1hY2NlbnRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC10YWItbGFiZWwuY2RrLWtleWJvYXJkLWZvY3VzZWRbX25nY29udGVudC0lQ09NUCVdOm5vdCgubWF0LXRhYi1kaXNhYmxlZCksIC5tYXQtdGFiLWdyb3VwLm1hdC1hY2NlbnRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC10YWItbGFiZWwuY2RrLXByb2dyYW0tZm9jdXNlZFtfbmdjb250ZW50LSVDT01QJV06bm90KC5tYXQtdGFiLWRpc2FibGVkKSwgLm1hdC10YWItZ3JvdXAubWF0LWFjY2VudFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXRhYi1saW5rLmNkay1rZXlib2FyZC1mb2N1c2VkW19uZ2NvbnRlbnQtJUNPTVAlXTpub3QoLm1hdC10YWItZGlzYWJsZWQpLCAubWF0LXRhYi1ncm91cC5tYXQtYWNjZW50W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtdGFiLWxpbmsuY2RrLXByb2dyYW0tZm9jdXNlZFtfbmdjb250ZW50LSVDT01QJV06bm90KC5tYXQtdGFiLWRpc2FibGVkKSwgLm1hdC10YWItbmF2LWJhci5tYXQtYWNjZW50W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtdGFiLWxhYmVsLmNkay1rZXlib2FyZC1mb2N1c2VkW19uZ2NvbnRlbnQtJUNPTVAlXTpub3QoLm1hdC10YWItZGlzYWJsZWQpLCAubWF0LXRhYi1uYXYtYmFyLm1hdC1hY2NlbnRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC10YWItbGFiZWwuY2RrLXByb2dyYW0tZm9jdXNlZFtfbmdjb250ZW50LSVDT01QJV06bm90KC5tYXQtdGFiLWRpc2FibGVkKSwgLm1hdC10YWItbmF2LWJhci5tYXQtYWNjZW50W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtdGFiLWxpbmsuY2RrLWtleWJvYXJkLWZvY3VzZWRbX25nY29udGVudC0lQ09NUCVdOm5vdCgubWF0LXRhYi1kaXNhYmxlZCksIC5tYXQtdGFiLW5hdi1iYXIubWF0LWFjY2VudFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXRhYi1saW5rLmNkay1wcm9ncmFtLWZvY3VzZWRbX25nY29udGVudC0lQ09NUCVdOm5vdCgubWF0LXRhYi1kaXNhYmxlZCl7YmFja2dyb3VuZC1jb2xvcjpyZ2JhKDI1NSwxNTIsMCwuMyl9Lm1hdC10YWItZ3JvdXAubWF0LWFjY2VudFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWluay1iYXJbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXRhYi1uYXYtYmFyLm1hdC1hY2NlbnRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pbmstYmFyW19uZ2NvbnRlbnQtJUNPTVAlXXtiYWNrZ3JvdW5kLWNvbG9yOiNmZjk4MDB9Lm1hdC10YWItZ3JvdXAubWF0LWFjY2VudC5tYXQtYmFja2dyb3VuZC1hY2NlbnRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pbmstYmFyW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10YWItbmF2LWJhci5tYXQtYWNjZW50Lm1hdC1iYWNrZ3JvdW5kLWFjY2VudFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWluay1iYXJbX25nY29udGVudC0lQ09NUCVde2JhY2tncm91bmQtY29sb3I6I2ZmZn0ubWF0LXRhYi1ncm91cC5tYXQtd2Fybltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXRhYi1sYWJlbC5jZGsta2V5Ym9hcmQtZm9jdXNlZFtfbmdjb250ZW50LSVDT01QJV06bm90KC5tYXQtdGFiLWRpc2FibGVkKSwgLm1hdC10YWItZ3JvdXAubWF0LXdhcm5bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC10YWItbGFiZWwuY2RrLXByb2dyYW0tZm9jdXNlZFtfbmdjb250ZW50LSVDT01QJV06bm90KC5tYXQtdGFiLWRpc2FibGVkKSwgLm1hdC10YWItZ3JvdXAubWF0LXdhcm5bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC10YWItbGluay5jZGsta2V5Ym9hcmQtZm9jdXNlZFtfbmdjb250ZW50LSVDT01QJV06bm90KC5tYXQtdGFiLWRpc2FibGVkKSwgLm1hdC10YWItZ3JvdXAubWF0LXdhcm5bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC10YWItbGluay5jZGstcHJvZ3JhbS1mb2N1c2VkW19uZ2NvbnRlbnQtJUNPTVAlXTpub3QoLm1hdC10YWItZGlzYWJsZWQpLCAubWF0LXRhYi1uYXYtYmFyLm1hdC13YXJuW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtdGFiLWxhYmVsLmNkay1rZXlib2FyZC1mb2N1c2VkW19uZ2NvbnRlbnQtJUNPTVAlXTpub3QoLm1hdC10YWItZGlzYWJsZWQpLCAubWF0LXRhYi1uYXYtYmFyLm1hdC13YXJuW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtdGFiLWxhYmVsLmNkay1wcm9ncmFtLWZvY3VzZWRbX25nY29udGVudC0lQ09NUCVdOm5vdCgubWF0LXRhYi1kaXNhYmxlZCksIC5tYXQtdGFiLW5hdi1iYXIubWF0LXdhcm5bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC10YWItbGluay5jZGsta2V5Ym9hcmQtZm9jdXNlZFtfbmdjb250ZW50LSVDT01QJV06bm90KC5tYXQtdGFiLWRpc2FibGVkKSwgLm1hdC10YWItbmF2LWJhci5tYXQtd2Fybltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXRhYi1saW5rLmNkay1wcm9ncmFtLWZvY3VzZWRbX25nY29udGVudC0lQ09NUCVdOm5vdCgubWF0LXRhYi1kaXNhYmxlZCl7YmFja2dyb3VuZC1jb2xvcjpyZ2JhKDI1NSwyMDUsMjEwLC4zKX0ubWF0LXRhYi1ncm91cC5tYXQtd2Fybltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWluay1iYXJbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXRhYi1uYXYtYmFyLm1hdC13YXJuW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaW5rLWJhcltfbmdjb250ZW50LSVDT01QJV17YmFja2dyb3VuZC1jb2xvcjojZjQ0MzM2fS5tYXQtdGFiLWdyb3VwLm1hdC13YXJuLm1hdC1iYWNrZ3JvdW5kLXdhcm5bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pbmstYmFyW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10YWItbmF2LWJhci5tYXQtd2Fybi5tYXQtYmFja2dyb3VuZC13YXJuW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaW5rLWJhcltfbmdjb250ZW50LSVDT01QJV17YmFja2dyb3VuZC1jb2xvcjojZmZmfS5tYXQtdGFiLWdyb3VwLm1hdC1iYWNrZ3JvdW5kLXByaW1hcnlbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC10YWItbGFiZWwuY2RrLWtleWJvYXJkLWZvY3VzZWRbX25nY29udGVudC0lQ09NUCVdOm5vdCgubWF0LXRhYi1kaXNhYmxlZCksIC5tYXQtdGFiLWdyb3VwLm1hdC1iYWNrZ3JvdW5kLXByaW1hcnlbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC10YWItbGFiZWwuY2RrLXByb2dyYW0tZm9jdXNlZFtfbmdjb250ZW50LSVDT01QJV06bm90KC5tYXQtdGFiLWRpc2FibGVkKSwgLm1hdC10YWItZ3JvdXAubWF0LWJhY2tncm91bmQtcHJpbWFyeVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXRhYi1saW5rLmNkay1rZXlib2FyZC1mb2N1c2VkW19uZ2NvbnRlbnQtJUNPTVAlXTpub3QoLm1hdC10YWItZGlzYWJsZWQpLCAubWF0LXRhYi1ncm91cC5tYXQtYmFja2dyb3VuZC1wcmltYXJ5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtdGFiLWxpbmsuY2RrLXByb2dyYW0tZm9jdXNlZFtfbmdjb250ZW50LSVDT01QJV06bm90KC5tYXQtdGFiLWRpc2FibGVkKSwgLm1hdC10YWItbmF2LWJhci5tYXQtYmFja2dyb3VuZC1wcmltYXJ5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtdGFiLWxhYmVsLmNkay1rZXlib2FyZC1mb2N1c2VkW19uZ2NvbnRlbnQtJUNPTVAlXTpub3QoLm1hdC10YWItZGlzYWJsZWQpLCAubWF0LXRhYi1uYXYtYmFyLm1hdC1iYWNrZ3JvdW5kLXByaW1hcnlbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC10YWItbGFiZWwuY2RrLXByb2dyYW0tZm9jdXNlZFtfbmdjb250ZW50LSVDT01QJV06bm90KC5tYXQtdGFiLWRpc2FibGVkKSwgLm1hdC10YWItbmF2LWJhci5tYXQtYmFja2dyb3VuZC1wcmltYXJ5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtdGFiLWxpbmsuY2RrLWtleWJvYXJkLWZvY3VzZWRbX25nY29udGVudC0lQ09NUCVdOm5vdCgubWF0LXRhYi1kaXNhYmxlZCksIC5tYXQtdGFiLW5hdi1iYXIubWF0LWJhY2tncm91bmQtcHJpbWFyeVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXRhYi1saW5rLmNkay1wcm9ncmFtLWZvY3VzZWRbX25nY29udGVudC0lQ09NUCVdOm5vdCgubWF0LXRhYi1kaXNhYmxlZCl7YmFja2dyb3VuZC1jb2xvcjpyZ2JhKDI1NSwxNTIsMCwuMyl9Lm1hdC10YWItZ3JvdXAubWF0LWJhY2tncm91bmQtcHJpbWFyeVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXRhYi1oZWFkZXJbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXRhYi1ncm91cC5tYXQtYmFja2dyb3VuZC1wcmltYXJ5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtdGFiLWxpbmtzW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10YWItZ3JvdXAubWF0LWJhY2tncm91bmQtcHJpbWFyeVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXRhYi1oZWFkZXItcGFnaW5hdGlvbltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdGFiLW5hdi1iYXIubWF0LWJhY2tncm91bmQtcHJpbWFyeVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXRhYi1oZWFkZXJbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXRhYi1uYXYtYmFyLm1hdC1iYWNrZ3JvdW5kLXByaW1hcnlbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC10YWItbGlua3NbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXRhYi1uYXYtYmFyLm1hdC1iYWNrZ3JvdW5kLXByaW1hcnlbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC10YWItaGVhZGVyLXBhZ2luYXRpb25bX25nY29udGVudC0lQ09NUCVde2JhY2tncm91bmQtY29sb3I6I2Y1N2MwMH0ubWF0LXRhYi1ncm91cC5tYXQtYmFja2dyb3VuZC1wcmltYXJ5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtdGFiLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10YWItZ3JvdXAubWF0LWJhY2tncm91bmQtcHJpbWFyeVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXRhYi1saW5rW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10YWItbmF2LWJhci5tYXQtYmFja2dyb3VuZC1wcmltYXJ5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtdGFiLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10YWItbmF2LWJhci5tYXQtYmFja2dyb3VuZC1wcmltYXJ5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtdGFiLWxpbmtbX25nY29udGVudC0lQ09NUCVde2NvbG9yOiNmZmZ9Lm1hdC10YWItZ3JvdXAubWF0LWJhY2tncm91bmQtcHJpbWFyeVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXRhYi1sYWJlbC5tYXQtdGFiLWRpc2FibGVkW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10YWItZ3JvdXAubWF0LWJhY2tncm91bmQtcHJpbWFyeVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXRhYi1saW5rLm1hdC10YWItZGlzYWJsZWRbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXRhYi1uYXYtYmFyLm1hdC1iYWNrZ3JvdW5kLXByaW1hcnlbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC10YWItbGFiZWwubWF0LXRhYi1kaXNhYmxlZFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdGFiLW5hdi1iYXIubWF0LWJhY2tncm91bmQtcHJpbWFyeVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXRhYi1saW5rLm1hdC10YWItZGlzYWJsZWRbX25nY29udGVudC0lQ09NUCVde2NvbG9yOnJnYmEoMjU1LDI1NSwyNTUsLjQpfS5tYXQtdGFiLWdyb3VwLm1hdC1iYWNrZ3JvdW5kLXByaW1hcnlbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC10YWItaGVhZGVyLXBhZ2luYXRpb24tY2hldnJvbltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdGFiLW5hdi1iYXIubWF0LWJhY2tncm91bmQtcHJpbWFyeVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXRhYi1oZWFkZXItcGFnaW5hdGlvbi1jaGV2cm9uW19uZ2NvbnRlbnQtJUNPTVAlXXtib3JkZXItY29sb3I6I2ZmZn0ubWF0LXRhYi1ncm91cC5tYXQtYmFja2dyb3VuZC1wcmltYXJ5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtdGFiLWhlYWRlci1wYWdpbmF0aW9uLWRpc2FibGVkW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtdGFiLWhlYWRlci1wYWdpbmF0aW9uLWNoZXZyb25bX25nY29udGVudC0lQ09NUCVdLCAubWF0LXRhYi1uYXYtYmFyLm1hdC1iYWNrZ3JvdW5kLXByaW1hcnlbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC10YWItaGVhZGVyLXBhZ2luYXRpb24tZGlzYWJsZWRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC10YWItaGVhZGVyLXBhZ2luYXRpb24tY2hldnJvbltfbmdjb250ZW50LSVDT01QJV17Ym9yZGVyLWNvbG9yOnJnYmEoMjU1LDI1NSwyNTUsLjQpfS5tYXQtdGFiLWdyb3VwLm1hdC1iYWNrZ3JvdW5kLXByaW1hcnlbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1yaXBwbGUtZWxlbWVudFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdGFiLW5hdi1iYXIubWF0LWJhY2tncm91bmQtcHJpbWFyeVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXJpcHBsZS1lbGVtZW50W19uZ2NvbnRlbnQtJUNPTVAlXXtiYWNrZ3JvdW5kLWNvbG9yOnJnYmEoMjU1LDI1NSwyNTUsLjEyKX0ubWF0LXRhYi1ncm91cC5tYXQtYmFja2dyb3VuZC1hY2NlbnRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC10YWItbGFiZWwuY2RrLWtleWJvYXJkLWZvY3VzZWRbX25nY29udGVudC0lQ09NUCVdOm5vdCgubWF0LXRhYi1kaXNhYmxlZCksIC5tYXQtdGFiLWdyb3VwLm1hdC1iYWNrZ3JvdW5kLWFjY2VudFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXRhYi1sYWJlbC5jZGstcHJvZ3JhbS1mb2N1c2VkW19uZ2NvbnRlbnQtJUNPTVAlXTpub3QoLm1hdC10YWItZGlzYWJsZWQpLCAubWF0LXRhYi1ncm91cC5tYXQtYmFja2dyb3VuZC1hY2NlbnRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC10YWItbGluay5jZGsta2V5Ym9hcmQtZm9jdXNlZFtfbmdjb250ZW50LSVDT01QJV06bm90KC5tYXQtdGFiLWRpc2FibGVkKSwgLm1hdC10YWItZ3JvdXAubWF0LWJhY2tncm91bmQtYWNjZW50W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtdGFiLWxpbmsuY2RrLXByb2dyYW0tZm9jdXNlZFtfbmdjb250ZW50LSVDT01QJV06bm90KC5tYXQtdGFiLWRpc2FibGVkKSwgLm1hdC10YWItbmF2LWJhci5tYXQtYmFja2dyb3VuZC1hY2NlbnRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC10YWItbGFiZWwuY2RrLWtleWJvYXJkLWZvY3VzZWRbX25nY29udGVudC0lQ09NUCVdOm5vdCgubWF0LXRhYi1kaXNhYmxlZCksIC5tYXQtdGFiLW5hdi1iYXIubWF0LWJhY2tncm91bmQtYWNjZW50W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtdGFiLWxhYmVsLmNkay1wcm9ncmFtLWZvY3VzZWRbX25nY29udGVudC0lQ09NUCVdOm5vdCgubWF0LXRhYi1kaXNhYmxlZCksIC5tYXQtdGFiLW5hdi1iYXIubWF0LWJhY2tncm91bmQtYWNjZW50W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtdGFiLWxpbmsuY2RrLWtleWJvYXJkLWZvY3VzZWRbX25nY29udGVudC0lQ09NUCVdOm5vdCgubWF0LXRhYi1kaXNhYmxlZCksIC5tYXQtdGFiLW5hdi1iYXIubWF0LWJhY2tncm91bmQtYWNjZW50W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtdGFiLWxpbmsuY2RrLXByb2dyYW0tZm9jdXNlZFtfbmdjb250ZW50LSVDT01QJV06bm90KC5tYXQtdGFiLWRpc2FibGVkKXtiYWNrZ3JvdW5kLWNvbG9yOnJnYmEoMjU1LDE1MiwwLC4zKX0ubWF0LXRhYi1ncm91cC5tYXQtYmFja2dyb3VuZC1hY2NlbnRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC10YWItaGVhZGVyW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10YWItZ3JvdXAubWF0LWJhY2tncm91bmQtYWNjZW50W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtdGFiLWxpbmtzW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10YWItZ3JvdXAubWF0LWJhY2tncm91bmQtYWNjZW50W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtdGFiLWhlYWRlci1wYWdpbmF0aW9uW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10YWItbmF2LWJhci5tYXQtYmFja2dyb3VuZC1hY2NlbnRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC10YWItaGVhZGVyW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10YWItbmF2LWJhci5tYXQtYmFja2dyb3VuZC1hY2NlbnRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC10YWItbGlua3NbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXRhYi1uYXYtYmFyLm1hdC1iYWNrZ3JvdW5kLWFjY2VudFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXRhYi1oZWFkZXItcGFnaW5hdGlvbltfbmdjb250ZW50LSVDT01QJV17YmFja2dyb3VuZC1jb2xvcjojZmY5ODAwfS5tYXQtdGFiLWdyb3VwLm1hdC1iYWNrZ3JvdW5kLWFjY2VudFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXRhYi1sYWJlbFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdGFiLWdyb3VwLm1hdC1iYWNrZ3JvdW5kLWFjY2VudFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXRhYi1saW5rW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10YWItbmF2LWJhci5tYXQtYmFja2dyb3VuZC1hY2NlbnRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC10YWItbGFiZWxbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXRhYi1uYXYtYmFyLm1hdC1iYWNrZ3JvdW5kLWFjY2VudFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXRhYi1saW5rW19uZ2NvbnRlbnQtJUNPTVAlXXtjb2xvcjojZmZmfS5tYXQtdGFiLWdyb3VwLm1hdC1iYWNrZ3JvdW5kLWFjY2VudFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXRhYi1sYWJlbC5tYXQtdGFiLWRpc2FibGVkW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10YWItZ3JvdXAubWF0LWJhY2tncm91bmQtYWNjZW50W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtdGFiLWxpbmsubWF0LXRhYi1kaXNhYmxlZFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdGFiLW5hdi1iYXIubWF0LWJhY2tncm91bmQtYWNjZW50W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtdGFiLWxhYmVsLm1hdC10YWItZGlzYWJsZWRbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXRhYi1uYXYtYmFyLm1hdC1iYWNrZ3JvdW5kLWFjY2VudFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXRhYi1saW5rLm1hdC10YWItZGlzYWJsZWRbX25nY29udGVudC0lQ09NUCVde2NvbG9yOnJnYmEoMjU1LDI1NSwyNTUsLjQpfS5tYXQtdGFiLWdyb3VwLm1hdC1iYWNrZ3JvdW5kLWFjY2VudFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXRhYi1oZWFkZXItcGFnaW5hdGlvbi1jaGV2cm9uW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10YWItbmF2LWJhci5tYXQtYmFja2dyb3VuZC1hY2NlbnRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC10YWItaGVhZGVyLXBhZ2luYXRpb24tY2hldnJvbltfbmdjb250ZW50LSVDT01QJV17Ym9yZGVyLWNvbG9yOiNmZmZ9Lm1hdC10YWItZ3JvdXAubWF0LWJhY2tncm91bmQtYWNjZW50W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtdGFiLWhlYWRlci1wYWdpbmF0aW9uLWRpc2FibGVkW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtdGFiLWhlYWRlci1wYWdpbmF0aW9uLWNoZXZyb25bX25nY29udGVudC0lQ09NUCVdLCAubWF0LXRhYi1uYXYtYmFyLm1hdC1iYWNrZ3JvdW5kLWFjY2VudFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXRhYi1oZWFkZXItcGFnaW5hdGlvbi1kaXNhYmxlZFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXRhYi1oZWFkZXItcGFnaW5hdGlvbi1jaGV2cm9uW19uZ2NvbnRlbnQtJUNPTVAlXXtib3JkZXItY29sb3I6cmdiYSgyNTUsMjU1LDI1NSwuNCl9Lm1hdC10YWItZ3JvdXAubWF0LWJhY2tncm91bmQtYWNjZW50W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtcmlwcGxlLWVsZW1lbnRbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXRhYi1uYXYtYmFyLm1hdC1iYWNrZ3JvdW5kLWFjY2VudFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXJpcHBsZS1lbGVtZW50W19uZ2NvbnRlbnQtJUNPTVAlXXtiYWNrZ3JvdW5kLWNvbG9yOnJnYmEoMjU1LDI1NSwyNTUsLjEyKX0ubWF0LXRhYi1ncm91cC5tYXQtYmFja2dyb3VuZC13YXJuW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtdGFiLWxhYmVsLmNkay1rZXlib2FyZC1mb2N1c2VkW19uZ2NvbnRlbnQtJUNPTVAlXTpub3QoLm1hdC10YWItZGlzYWJsZWQpLCAubWF0LXRhYi1ncm91cC5tYXQtYmFja2dyb3VuZC13YXJuW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtdGFiLWxhYmVsLmNkay1wcm9ncmFtLWZvY3VzZWRbX25nY29udGVudC0lQ09NUCVdOm5vdCgubWF0LXRhYi1kaXNhYmxlZCksIC5tYXQtdGFiLWdyb3VwLm1hdC1iYWNrZ3JvdW5kLXdhcm5bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC10YWItbGluay5jZGsta2V5Ym9hcmQtZm9jdXNlZFtfbmdjb250ZW50LSVDT01QJV06bm90KC5tYXQtdGFiLWRpc2FibGVkKSwgLm1hdC10YWItZ3JvdXAubWF0LWJhY2tncm91bmQtd2Fybltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXRhYi1saW5rLmNkay1wcm9ncmFtLWZvY3VzZWRbX25nY29udGVudC0lQ09NUCVdOm5vdCgubWF0LXRhYi1kaXNhYmxlZCksIC5tYXQtdGFiLW5hdi1iYXIubWF0LWJhY2tncm91bmQtd2Fybltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXRhYi1sYWJlbC5jZGsta2V5Ym9hcmQtZm9jdXNlZFtfbmdjb250ZW50LSVDT01QJV06bm90KC5tYXQtdGFiLWRpc2FibGVkKSwgLm1hdC10YWItbmF2LWJhci5tYXQtYmFja2dyb3VuZC13YXJuW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtdGFiLWxhYmVsLmNkay1wcm9ncmFtLWZvY3VzZWRbX25nY29udGVudC0lQ09NUCVdOm5vdCgubWF0LXRhYi1kaXNhYmxlZCksIC5tYXQtdGFiLW5hdi1iYXIubWF0LWJhY2tncm91bmQtd2Fybltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXRhYi1saW5rLmNkay1rZXlib2FyZC1mb2N1c2VkW19uZ2NvbnRlbnQtJUNPTVAlXTpub3QoLm1hdC10YWItZGlzYWJsZWQpLCAubWF0LXRhYi1uYXYtYmFyLm1hdC1iYWNrZ3JvdW5kLXdhcm5bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC10YWItbGluay5jZGstcHJvZ3JhbS1mb2N1c2VkW19uZ2NvbnRlbnQtJUNPTVAlXTpub3QoLm1hdC10YWItZGlzYWJsZWQpe2JhY2tncm91bmQtY29sb3I6cmdiYSgyNTUsMjA1LDIxMCwuMyl9Lm1hdC10YWItZ3JvdXAubWF0LWJhY2tncm91bmQtd2Fybltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXRhYi1oZWFkZXJbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXRhYi1ncm91cC5tYXQtYmFja2dyb3VuZC13YXJuW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtdGFiLWxpbmtzW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10YWItZ3JvdXAubWF0LWJhY2tncm91bmQtd2Fybltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXRhYi1oZWFkZXItcGFnaW5hdGlvbltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdGFiLW5hdi1iYXIubWF0LWJhY2tncm91bmQtd2Fybltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXRhYi1oZWFkZXJbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXRhYi1uYXYtYmFyLm1hdC1iYWNrZ3JvdW5kLXdhcm5bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC10YWItbGlua3NbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXRhYi1uYXYtYmFyLm1hdC1iYWNrZ3JvdW5kLXdhcm5bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC10YWItaGVhZGVyLXBhZ2luYXRpb25bX25nY29udGVudC0lQ09NUCVde2JhY2tncm91bmQtY29sb3I6I2Y0NDMzNn0ubWF0LXRhYi1ncm91cC5tYXQtYmFja2dyb3VuZC13YXJuW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtdGFiLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10YWItZ3JvdXAubWF0LWJhY2tncm91bmQtd2Fybltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXRhYi1saW5rW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10YWItbmF2LWJhci5tYXQtYmFja2dyb3VuZC13YXJuW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtdGFiLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10YWItbmF2LWJhci5tYXQtYmFja2dyb3VuZC13YXJuW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtdGFiLWxpbmtbX25nY29udGVudC0lQ09NUCVde2NvbG9yOiNmZmZ9Lm1hdC10YWItZ3JvdXAubWF0LWJhY2tncm91bmQtd2Fybltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXRhYi1sYWJlbC5tYXQtdGFiLWRpc2FibGVkW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10YWItZ3JvdXAubWF0LWJhY2tncm91bmQtd2Fybltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXRhYi1saW5rLm1hdC10YWItZGlzYWJsZWRbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXRhYi1uYXYtYmFyLm1hdC1iYWNrZ3JvdW5kLXdhcm5bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC10YWItbGFiZWwubWF0LXRhYi1kaXNhYmxlZFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdGFiLW5hdi1iYXIubWF0LWJhY2tncm91bmQtd2Fybltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXRhYi1saW5rLm1hdC10YWItZGlzYWJsZWRbX25nY29udGVudC0lQ09NUCVde2NvbG9yOnJnYmEoMjU1LDI1NSwyNTUsLjQpfS5tYXQtdGFiLWdyb3VwLm1hdC1iYWNrZ3JvdW5kLXdhcm5bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC10YWItaGVhZGVyLXBhZ2luYXRpb24tY2hldnJvbltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdGFiLW5hdi1iYXIubWF0LWJhY2tncm91bmQtd2Fybltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXRhYi1oZWFkZXItcGFnaW5hdGlvbi1jaGV2cm9uW19uZ2NvbnRlbnQtJUNPTVAlXXtib3JkZXItY29sb3I6I2ZmZn0ubWF0LXRhYi1ncm91cC5tYXQtYmFja2dyb3VuZC13YXJuW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtdGFiLWhlYWRlci1wYWdpbmF0aW9uLWRpc2FibGVkW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtdGFiLWhlYWRlci1wYWdpbmF0aW9uLWNoZXZyb25bX25nY29udGVudC0lQ09NUCVdLCAubWF0LXRhYi1uYXYtYmFyLm1hdC1iYWNrZ3JvdW5kLXdhcm5bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC10YWItaGVhZGVyLXBhZ2luYXRpb24tZGlzYWJsZWRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC10YWItaGVhZGVyLXBhZ2luYXRpb24tY2hldnJvbltfbmdjb250ZW50LSVDT01QJV17Ym9yZGVyLWNvbG9yOnJnYmEoMjU1LDI1NSwyNTUsLjQpfS5tYXQtdGFiLWdyb3VwLm1hdC1iYWNrZ3JvdW5kLXdhcm5bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1yaXBwbGUtZWxlbWVudFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdGFiLW5hdi1iYXIubWF0LWJhY2tncm91bmQtd2Fybltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXJpcHBsZS1lbGVtZW50W19uZ2NvbnRlbnQtJUNPTVAlXXtiYWNrZ3JvdW5kLWNvbG9yOnJnYmEoMjU1LDI1NSwyNTUsLjEyKX0ubWF0LXRvb2xiYXJbX25nY29udGVudC0lQ09NUCVde2JhY2tncm91bmQ6I2Y1ZjVmNTtjb2xvcjojMjEyMTIxfS5tYXQtdG9vbGJhci5tYXQtcHJpbWFyeVtfbmdjb250ZW50LSVDT01QJV17YmFja2dyb3VuZDojZjU3YzAwO2NvbG9yOiNmZmZ9Lm1hdC10b29sYmFyLm1hdC1hY2NlbnRbX25nY29udGVudC0lQ09NUCVde2JhY2tncm91bmQ6I2ZmOTgwMDtjb2xvcjojZmZmfS5tYXQtdG9vbGJhci5tYXQtd2Fybltfbmdjb250ZW50LSVDT01QJV17YmFja2dyb3VuZDojZjQ0MzM2O2NvbG9yOiNmZmZ9Lm1hdC10b29sYmFyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC11bmRlcmxpbmVbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXRvb2xiYXJbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLXJpcHBsZVtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdG9vbGJhcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvY3VzZWRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLXJpcHBsZVtfbmdjb250ZW50LSVDT01QJV17YmFja2dyb3VuZC1jb2xvcjpjdXJyZW50Q29sb3J9Lm1hdC10b29sYmFyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdG9vbGJhcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvY3VzZWRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10b29sYmFyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtc2VsZWN0LXZhbHVlW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10b29sYmFyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtc2VsZWN0LWFycm93W19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10b29sYmFyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC5tYXQtZm9jdXNlZFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXNlbGVjdC1hcnJvd1tfbmdjb250ZW50LSVDT01QJV17Y29sb3I6aW5oZXJpdH0ubWF0LXRvb2xiYXJbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pbnB1dC1lbGVtZW50W19uZ2NvbnRlbnQtJUNPTVAlXXtjYXJldC1jb2xvcjpjdXJyZW50Q29sb3J9Lm1hdC10b29sYmFyLW11bHRpcGxlLXJvd3NbX25nY29udGVudC0lQ09NUCVde21pbi1oZWlnaHQ6NjRweH0ubWF0LXRvb2xiYXItcm93W19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10b29sYmFyLXNpbmdsZS1yb3dbX25nY29udGVudC0lQ09NUCVde2hlaWdodDo2NHB4fUBtZWRpYShtYXgtd2lkdGg6IDU5OXB4KXsubWF0LXRvb2xiYXItbXVsdGlwbGUtcm93c1tfbmdjb250ZW50LSVDT01QJV17bWluLWhlaWdodDo1NnB4fS5tYXQtdG9vbGJhci1yb3dbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXRvb2xiYXItc2luZ2xlLXJvd1tfbmdjb250ZW50LSVDT01QJV17aGVpZ2h0OjU2cHh9fS5tYXQtdG9vbHRpcFtfbmdjb250ZW50LSVDT01QJV17YmFja2dyb3VuZDpyZ2JhKDk3LDk3LDk3LC45KX0ubWF0LXRyZWVbX25nY29udGVudC0lQ09NUCVde2JhY2tncm91bmQ6I2ZmZn0ubWF0LXRyZWUtbm9kZVtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtbmVzdGVkLXRyZWUtbm9kZVtfbmdjb250ZW50LSVDT01QJV17Y29sb3I6IzIxMjEyMX0ubWF0LXRyZWUtbm9kZVtfbmdjb250ZW50LSVDT01QJV17bWluLWhlaWdodDo0OHB4fS5tYXQtc25hY2stYmFyLWNvbnRhaW5lcltfbmdjb250ZW50LSVDT01QJV17Y29sb3I6cmdiYSgyNTUsMjU1LDI1NSwuNyk7YmFja2dyb3VuZDojMzIzMjMyO2JveC1zaGFkb3c6MHB4IDNweCA1cHggLTFweCByZ2JhKDAsIDAsIDAsIDAuMiksMHB4IDZweCAxMHB4IDBweCByZ2JhKDAsIDAsIDAsIDAuMTQpLDBweCAxcHggMThweCAwcHggcmdiYSgwLCAwLCAwLCAwLjEyKX0ubWF0LXNpbXBsZS1zbmFja2Jhci1hY3Rpb25bX25nY29udGVudC0lQ09NUCVde2NvbG9yOiNmZjk4MDB9W19uZ2hvc3QtJUNPTVAlXXthbGlnbi1pdGVtczpjZW50ZXI7Ym94LXNpemluZzpib3JkZXItYm94O2Rpc3BsYXk6ZmxleDtmbGV4LWRpcmVjdGlvbjpyb3c7cGFkZGluZzowIDE2cHg7d2lkdGg6MTAwJX0uYW5ub3RhdGlvbnMtdGl0bGVbX25nY29udGVudC0lQ09NUCVde2Rpc3BsYXk6aW5saW5lO2ZvbnQtc2l6ZTouOWVtO2ZvbnQtd2VpZ2h0OjUwMDtwYWRkaW5nLXJpZ2h0OjEwcHh9LmFubm90YXRpb25zLXRpdGxlLWNvbnRhaW5lcltfbmdjb250ZW50LSVDT01QJV17YWxpZ24taXRlbXM6Y2VudGVyO2Rpc3BsYXk6ZmxleDtmbGV4LXdyYXA6bm93cmFwO2ZsZXg6MSAxO2hlaWdodDo0MnB4fS5zaG93LXRvZ2dsZVtfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOi45ZW07bWFyZ2luLXJpZ2h0Oi44ZW19J10sY2hhbmdlRGV0ZWN0aW9uOjB9KTtjbGFzcyBWcHR7Y29uc3RydWN0b3IodCl7dGhpcy5zdG9yZT10LHRoaXMuc2VsZWN0ZWRBbm5vdGF0aW9ucyQ9dGhpcy5zdG9yZS5zZWxlY3QoUmR0KSx0aGlzLmFubm90YXRpb25zRXhwYW5kZWQkPXRoaXMuc3RvcmUuc2VsZWN0KFZkdCksdGhpcy5zaG93Q291bnRzJD10aGlzLnN0b3JlLnNlbGVjdChVZHQpLHRoaXMuc2hvd0hpZGRlbiQ9dGhpcy5zdG9yZS5zZWxlY3QoV2R0KSx0aGlzLmFubm90YXRpb25zRmlsdGVyJD10aGlzLnN0b3JlLnNlbGVjdChJZHQpLHRoaXMuaXNBbm5vdGF0aW9uc0ZpbHRlclZhbGlkJD10aGlzLmFubm90YXRpb25zRmlsdGVyJC5waXBlKGZ0KCh0PT57dHJ5e3JldHVybiBCb29sZWFuKG5ldyBSZWdFeHAodCkpfWNhdGNoKHQpe3JldHVybiExfX0pKSl9ZmlsdGVyQ2hhbmdlKHQpe3RoaXMuc3RvcmUuZGlzcGF0Y2gocmd0KHtyZWdleDp0fSkpfWZsYWdBbm5vdGF0aW9ucyh0KXt0aGlzLnN0b3JlLmRpc3BhdGNoKGFndCh7YW5ub3RhdGlvbnM6dH0pKX1oaWRlQW5ub3RhdGlvbnModCl7dGhpcy5zdG9yZS5kaXNwYXRjaChvZ3Qoe2Fubm90YXRpb25zOnR9KSl9dG9nZ2xlRXhwYW5kZWQoKXt0aGlzLnN0b3JlLmRpc3BhdGNoKHBndCgpKX10b2dnbGVTaG93Q291bnRzKCl7dGhpcy5zdG9yZS5kaXNwYXRjaCh1Z3QoKSl9dG9nZ2xlU2hvd0hpZGRlbigpe3RoaXMuc3RvcmUuZGlzcGF0Y2goZmd0KCkpfX1WcHQuybVmYWM9ZnVuY3Rpb24gdChuKXtyZXR1cm4gbmV3KG58fFZwdCkoWmcoY3YpKX0sVnB0Lsm1Y21wPV9vKHt0eXBlOlZwdCxzZWxlY3RvcnM6W1sibnBtaS1hbm5vdGF0aW9ucy1saXN0LXRvb2xiYXIiXV0saW5wdXRzOntudW1Bbm5vdGF0aW9uczoibnVtQW5ub3RhdGlvbnMiLGV4cGFuZGVkOiJleHBhbmRlZCJ9LGRlY2xzOjUsdmFyczoxNCxjb25zdHM6W1szLCJudW1Bbm5vdGF0aW9ucyIsImV4cGFuZGVkIiwic2VsZWN0ZWRBbm5vdGF0aW9ucyIsImFubm90YXRpb25zRXhwYW5kZWQiLCJzaG93Q291bnRzIiwic2hvd0hpZGRlbiIsIm9uRmxhZ0Fubm90YXRpb25zIiwib25IaWRlQW5ub3RhdGlvbnMiLCJvblRvZ2dsZUV4cGFuZGVkIiwib25Ub2dnbGVTaG93Q291bnRzIiwib25Ub2dnbGVTaG93SGlkZGVuIl1dLHRlbXBsYXRlOmZ1bmN0aW9uIHQobixlKXsxJm4mJihLZygwLCJucG1pLWFubm90YXRpb25zLWxpc3QtdG9vbGJhci1jb21wb25lbnQiLDApLGNwKCJvbkZsYWdBbm5vdGF0aW9ucyIsKGZ1bmN0aW9uIHQobil7cmV0dXJuIGUuZmxhZ0Fubm90YXRpb25zKG4pfSkpKCJvbkhpZGVBbm5vdGF0aW9ucyIsKGZ1bmN0aW9uIHQobil7cmV0dXJuIGUuaGlkZUFubm90YXRpb25zKG4pfSkpKCJvblRvZ2dsZUV4cGFuZGVkIiwoZnVuY3Rpb24gdCgpe3JldHVybiBlLnRvZ2dsZUV4cGFuZGVkKCl9KSkoIm9uVG9nZ2xlU2hvd0NvdW50cyIsKGZ1bmN0aW9uIHQoKXtyZXR1cm4gZS50b2dnbGVTaG93Q291bnRzKCl9KSkoIm9uVG9nZ2xlU2hvd0hpZGRlbiIsKGZ1bmN0aW9uIHQoKXtyZXR1cm4gZS50b2dnbGVTaG93SGlkZGVuKCl9KSkseWYoMSwiYXN5bmMiKSx5ZigyLCJhc3luYyIpLHlmKDMsImFzeW5jIikseWYoNCwiYXN5bmMiKSwkZygpKSwyJm4mJkpnKCJudW1Bbm5vdGF0aW9ucyIsZS5udW1Bbm5vdGF0aW9ucykoImV4cGFuZGVkIixlLmV4cGFuZGVkKSgic2VsZWN0ZWRBbm5vdGF0aW9ucyIsa2YoMSw2LGUuc2VsZWN0ZWRBbm5vdGF0aW9ucyQpKSgiYW5ub3RhdGlvbnNFeHBhbmRlZCIsa2YoMiw4LGUuYW5ub3RhdGlvbnNFeHBhbmRlZCQpKSgic2hvd0NvdW50cyIsa2YoMywxMCxlLnNob3dDb3VudHMkKSkoInNob3dIaWRkZW4iLGtmKDQsMTIsZS5zaG93SGlkZGVuJCkpfSxkaXJlY3RpdmVzOltCcHRdLHBpcGVzOltvT10sZW5jYXBzdWxhdGlvbjoyLGNoYW5nZURldGVjdGlvbjowfSk7Y29uc3QganB0PVsiZ2x5cGgiXTtjbGFzcyBVcHR7bmdBZnRlclZpZXdJbml0KCl7dGhpcy5zdmc9ajEodGhpcy5nbHlwaFNWRy5uYXRpdmVFbGVtZW50KSx0aGlzLm1haW5Db250YWluZXI9dGhpcy5zdmcuYXBwZW5kKCJnIiksdGhpcy5kcmF3KCl9ZHJhdygpeyJjaXJjbGUiPT10aGlzLnNoYXBlP3RoaXMubWFpbkNvbnRhaW5lci5hcHBlbmQoImNpcmNsZSIpLmF0dHIoImZpbGwiLHRoaXMuY29sb3IpLmF0dHIoInN0cm9rZSIsImJsYWNrIikuYXR0cigiY3giLDUpLmF0dHIoImN5Iiw1KS5hdHRyKCJyIiw1KToiYmFyIj09dGhpcy5zaGFwZT90aGlzLm1haW5Db250YWluZXIuYXBwZW5kKCJyZWN0IikuYXR0cigiZmlsbCIsdGhpcy5jb2xvcikuYXR0cigieCIsMCkuYXR0cigieSIsMCkuYXR0cigid2lkdGgiLDEwKS5hdHRyKCJoZWlnaHQiLDEwKToicnVuSW5kaWNhdG9yIj09dGhpcy5zaGFwZSYmdGhpcy5tYWluQ29udGFpbmVyLmFwcGVuZCgiZyIpLmFwcGVuZCgicGF0aCIpLmF0dHIoImZpbGwiLHRoaXMuY29sb3IpLmF0dHIoInN0cm9rZSIsImJsYWNrIikuYXR0cigiZCIsIk0gMiAwIEwgMTAgMCBMIDcgNSBMIDEwIDEwIEwgMiAxMCBaIil9fVVwdC7JtWZhYz1mdW5jdGlvbiB0KG4pe3JldHVybiBuZXcobnx8VXB0KX0sVXB0Lsm1Y21wPV9vKHt0eXBlOlVwdCxzZWxlY3RvcnM6W1sibnBtaS1sZWdlbmQtZWxlbWVudCJdXSx2aWV3UXVlcnk6ZnVuY3Rpb24gdChuLGUpe3ZhciBhOzEmbiYmamYoanB0LCEwLHh1KSwyJm4mJlZmKGE9WmYoKSkmJihlLmdseXBoU1ZHPWEuZmlyc3QpfSxpbnB1dHM6e3RleHQ6InRleHQiLGNvbG9yOiJjb2xvciIsc2hhcGU6InNoYXBlIn0sZGVjbHM6NCx2YXJzOjEsY29uc3RzOltbMSwiZ2x5cGgiXSxbImdseXBoIiwiIl0sWzEsImxlZ2VuZC1lbGVtZW50LXRpdGxlIl1dLHRlbXBsYXRlOmZ1bmN0aW9uIHQobixlKXsxJm4mJih1aSgpLHRwKDAsInN2ZyIsMCwxKSxmaSgpLEtnKDIsImRpdiIsMiksSnAoMyksJGcoKSksMiZuJiYod3MoMyksUXAoZS50ZXh0KSl9LHN0eWxlczpbIltfbmdob3N0LSVDT01QJV17YWxpZ24taXRlbXM6Y2VudGVyO2Rpc3BsYXk6ZmxleDtwYWRkaW5nLXJpZ2h0OjEwcHh9LmxlZ2VuZC1lbGVtZW50LXRpdGxlW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6LjhlbTtwYWRkaW5nLWxlZnQ6NXB4fS5nbHlwaFtfbmdjb250ZW50LSVDT01QJV17d2lkdGg6MTBweDtoZWlnaHQ6MTBweH0iXSxjaGFuZ2VEZXRlY3Rpb246MH0pO2NsYXNzIFdwdHt9ZnVuY3Rpb24gR3B0KHQsbil7aWYoMSZ0JiZ0cCgwLCJtYXQtaWNvbiIsOCksMiZ0KXtjb25zdCB0PWdwKDIpO0pnKCJzdmdJY29uIix0LnNvcnQub3JkZXI9PT10LlNvcnRPcmRlci5ERVNDRU5ESU5HPyJhcnJvd19kb3dud2FyZF8yNHB4IjoiYXJyb3dfdXB3YXJkXzI0cHgiKSgibmdDbGFzcyIsdC5zb3J0Lm9yZGVyPT09dC5Tb3J0T3JkZXIuREVTQ0VORElORz8iZG93bi1pY29uIjoidXAtaWNvbiIpfX1mdW5jdGlvbiBZcHQodCxuKXtpZigxJnQpe2NvbnN0IHQ9b3AoKTtLZygwLCJkaXYiLDQpLEtnKDEsImRpdiIsNSksS2coMiwiZGl2Iiw2KSxjcCgiY2xpY2siLChmdW5jdGlvbiBlKCl7anIodCk7Y29uc3QgYT1uLiRpbXBsaWNpdDtyZXR1cm4gZ3AoKS5vbkNoYW5nZVNvcnQuZW1pdChhKX0pKSxKcCgzKSxZZyg0LEdwdCwxLDIsIm1hdC1pY29uIiw3KSwkZygpLCRnKCksJGcoKX1pZigyJnQpe2NvbnN0IHQ9bi4kaW1wbGljaXQsZT1ncCgpO3dzKDMpLEtwKCIgIixlLnN0cmlwTWV0cmljKHQpLCIgIiksd3MoMSksSmcoIm5nSWYiLHQ9PT1lLnNvcnQubWV0cmljKX19V3B0Lsm1ZmFjPWZ1bmN0aW9uIHQobil7cmV0dXJuIG5ldyhufHxXcHQpfSxXcHQuybVjbXA9X28oe3R5cGU6V3B0LHNlbGVjdG9yczpbWyJucG1pLWFubm90YXRpb25zLWxpc3QtbGVnZW5kIl1dLGRlY2xzOjQsdmFyczowLGNvbnN0czpbWyJ0ZXh0IiwicnVuIGluZGljYXRvciIsImNvbG9yIiwicmdiKDAsMCwwKSIsInNoYXBlIiwicnVuSW5kaWNhdG9yIl0sWyJ0ZXh0IiwicG9zaXRpdmUgY29ycmVsYXRpb24iLCJjb2xvciIsInJnYigxMDksIDE3NCwgMjEzKSIsInNoYXBlIiwiYmFyIl0sWyJ0ZXh0IiwibmVnYXRpdmUgY29ycmVsYXRpb24iLCJjb2xvciIsInJnYigyNDksIDEwNSwgNzYpIiwic2hhcGUiLCJiYXIiXSxbInRleHQiLCJzYW1wbGUgY291bnQiLCJjb2xvciIsInJnYigxNTEsIDE1MSwgMTUxKSIsInNoYXBlIiwiY2lyY2xlIl1dLHRlbXBsYXRlOmZ1bmN0aW9uIHQobixlKXsxJm4mJih0cCgwLCJucG1pLWxlZ2VuZC1lbGVtZW50IiwwKSx0cCgxLCJucG1pLWxlZ2VuZC1lbGVtZW50IiwxKSx0cCgyLCJucG1pLWxlZ2VuZC1lbGVtZW50IiwyKSx0cCgzLCJucG1pLWxlZ2VuZC1lbGVtZW50IiwzKSl9LGRpcmVjdGl2ZXM6W1VwdF0sc3R5bGVzOlsiW19uZ2hvc3QtJUNPTVAlXXtkaXNwbGF5OmZsZXg7cGFkZGluZzowIDE2cHh9Il19KTtjbGFzcyBxcHR7Y29uc3RydWN0b3IoKXt0aGlzLm9uQ2hhbmdlU29ydD1uZXcgRWYsdGhpcy5vbkFsbEFubm90YXRpb25zVG9nZ2xlZD1uZXcgRWYsdGhpcy5Tb3J0T3JkZXI9a2R0fXN0cmlwTWV0cmljKHQpe3JldHVybiBrZ3QodCl9fXFwdC7JtWZhYz1mdW5jdGlvbiB0KG4pe3JldHVybiBuZXcobnx8cXB0KX0scXB0Lsm1Y21wPV9vKHt0eXBlOnFwdCxzZWxlY3RvcnM6W1sibnBtaS1hbm5vdGF0aW9ucy1saXN0LWhlYWRlci1jb21wb25lbnQiXV0saW5wdXRzOntudW1Bbm5vdGF0aW9uczoibnVtQW5ub3RhdGlvbnMiLHNlbGVjdGVkQW5ub3RhdGlvbnM6InNlbGVjdGVkQW5ub3RhdGlvbnMiLGFjdGl2ZU1ldHJpY3M6ImFjdGl2ZU1ldHJpY3MiLHNvcnQ6InNvcnQifSxvdXRwdXRzOntvbkNoYW5nZVNvcnQ6Im9uQ2hhbmdlU29ydCIsb25BbGxBbm5vdGF0aW9uc1RvZ2dsZWQ6Im9uQWxsQW5ub3RhdGlvbnNUb2dnbGVkIn0sZGVjbHM6NCx2YXJzOjIsY29uc3RzOltbMSwidG9nZ2xlLWFsbC1jb250YWluZXIiXSxbMywiY2hlY2tlZCIsImNoYW5nZSJdLFsxLCJhbm5vdGF0aW9ucy1oZWFkZXItY29udGFpbmVycyJdLFsiY2xhc3MiLCJoZWFkZXItY29sdW1uIiw0LCJuZ0ZvciIsIm5nRm9yT2YiXSxbMSwiaGVhZGVyLWNvbHVtbiJdLFsxLCJoZWFkZXItY29udGFpbmVyIl0sWyJ0YWJpbmRleCIsIjAiLCJyb2xlIiwiYnV0dG9uIiwidGl0bGUiLCJDaGFuZ2UgdGhlIHNvcnQgYnkgY2xpY2tpbmcgYW55IG9mIHRoZSBtZXRyaWNzLiIsMSwiaGVhZGVyLWNsaWNrYWJsZSIsMywiY2xpY2siXSxbImNsYXNzIiwic29ydC1pY29uIiwzLCJzdmdJY29uIiwibmdDbGFzcyIsNCwibmdJZiJdLFsxLCJzb3J0LWljb24iLDMsInN2Z0ljb24iLCJuZ0NsYXNzIl1dLHRlbXBsYXRlOmZ1bmN0aW9uIHQobixlKXsxJm4mJihLZygwLCJkaXYiLDApLEtnKDEsIm1hdC1jaGVja2JveCIsMSksY3AoImNoYW5nZSIsKGZ1bmN0aW9uIHQobil7cmV0dXJuIGUub25BbGxBbm5vdGF0aW9uc1RvZ2dsZWQuZW1pdChuLmNoZWNrZWQpfSkpLCRnKCksJGcoKSxLZygyLCJkaXYiLDIpLFlnKDMsWXB0LDUsMiwiZGl2IiwzKSwkZygpKSwyJm4mJih3cygxKSxKZygiY2hlY2tlZCIsZS5zZWxlY3RlZEFubm90YXRpb25zLmxlbmd0aD09PWUubnVtQW5ub3RhdGlvbnMpLHdzKDIpLEpnKCJuZ0Zvck9mIixlLmFjdGl2ZU1ldHJpY3MpKX0sZGlyZWN0aXZlczpbclYsak0sV00sQkIsSE1dLHN0eWxlczpbJy5tYXQtYmFkZ2UtY29udGVudFtfbmdjb250ZW50LSVDT01QJV17Zm9udC13ZWlnaHQ6NjAwO2ZvbnQtc2l6ZToxMnB4O2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZn0ubWF0LWJhZGdlLXNtYWxsW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtYmFkZ2UtY29udGVudFtfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjlweH0ubWF0LWJhZGdlLWxhcmdlW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtYmFkZ2UtY29udGVudFtfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjI0cHh9Lm1hdC1oMVtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtaGVhZGxpbmVbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXR5cG9ncmFwaHlbX25nY29udGVudC0lQ09NUCVdICAgaDFbX25nY29udGVudC0lQ09NUCVde2ZvbnQ6NDAwIDI0cHgvMzJweCBSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7bGV0dGVyLXNwYWNpbmc6bm9ybWFsO21hcmdpbjowIDAgMTZweH0ubWF0LWgyW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10aXRsZVtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdHlwb2dyYXBoeVtfbmdjb250ZW50LSVDT01QJV0gICBoMltfbmdjb250ZW50LSVDT01QJV17Zm9udDo1MDAgMjBweC8zMnB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtsZXR0ZXItc3BhY2luZzpub3JtYWw7bWFyZ2luOjAgMCAxNnB4fS5tYXQtaDNbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXN1YmhlYWRpbmctMltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdHlwb2dyYXBoeVtfbmdjb250ZW50LSVDT01QJV0gICBoM1tfbmdjb250ZW50LSVDT01QJV17Zm9udDo0MDAgMTZweC8yOHB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtsZXR0ZXItc3BhY2luZzpub3JtYWw7bWFyZ2luOjAgMCAxNnB4fS5tYXQtaDRbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXN1YmhlYWRpbmctMVtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdHlwb2dyYXBoeVtfbmdjb250ZW50LSVDT01QJV0gICBoNFtfbmdjb250ZW50LSVDT01QJV17Zm9udDo0MDAgMTVweC8yNHB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtsZXR0ZXItc3BhY2luZzpub3JtYWw7bWFyZ2luOjAgMCAxNnB4fS5tYXQtaDVbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXR5cG9ncmFwaHlbX25nY29udGVudC0lQ09NUCVdICAgaDVbX25nY29udGVudC0lQ09NUCVde2ZvbnQ6NDAwIGNhbGMoMTRweCAqIDAuODMpLzIwcHggUm9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO21hcmdpbjowIDAgMTJweH0ubWF0LWg2W19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10eXBvZ3JhcGh5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIGg2W19uZ2NvbnRlbnQtJUNPTVAlXXtmb250OjQwMCBjYWxjKDE0cHggKiAwLjY3KS8yMHB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjttYXJnaW46MCAwIDEycHh9Lm1hdC1ib2R5LXN0cm9uZ1tfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtYm9keS0yW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250OjUwMCAxNHB4LzI0cHggUm9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2xldHRlci1zcGFjaW5nOm5vcm1hbH0ubWF0LWJvZHlbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWJvZHktMVtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdHlwb2dyYXBoeVtfbmdjb250ZW50LSVDT01QJV17Zm9udDo0MDAgMTRweC8yMHB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtsZXR0ZXItc3BhY2luZzpub3JtYWx9Lm1hdC1ib2R5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIHBbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWJvZHktMVtfbmdjb250ZW50LSVDT01QJV0gICBwW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10eXBvZ3JhcGh5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIHBbX25nY29udGVudC0lQ09NUCVde21hcmdpbjowIDAgMTJweH0ubWF0LXNtYWxsW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1jYXB0aW9uW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250OjQwMCAxMnB4LzIwcHggUm9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2xldHRlci1zcGFjaW5nOm5vcm1hbH0ubWF0LWRpc3BsYXktNFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdHlwb2dyYXBoeVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWRpc3BsYXktNFtfbmdjb250ZW50LSVDT01QJV17Zm9udDozMDAgMTEycHgvMTEycHggUm9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2xldHRlci1zcGFjaW5nOi0wLjA1ZW07bWFyZ2luOjAgMCA1NnB4fS5tYXQtZGlzcGxheS0zW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10eXBvZ3JhcGh5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZGlzcGxheS0zW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250OjQwMCA1NnB4LzU2cHggUm9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2xldHRlci1zcGFjaW5nOi0wLjAyZW07bWFyZ2luOjAgMCA2NHB4fS5tYXQtZGlzcGxheS0yW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10eXBvZ3JhcGh5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZGlzcGxheS0yW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250OjQwMCA0NXB4LzQ4cHggUm9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2xldHRlci1zcGFjaW5nOi0wLjAwNWVtO21hcmdpbjowIDAgNjRweH0ubWF0LWRpc3BsYXktMVtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdHlwb2dyYXBoeVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWRpc3BsYXktMVtfbmdjb250ZW50LSVDT01QJV17Zm9udDo0MDAgMzRweC80MHB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtsZXR0ZXItc3BhY2luZzpub3JtYWw7bWFyZ2luOjAgMCA2NHB4fS5tYXQtYm90dG9tLXNoZWV0LWNvbnRhaW5lcltfbmdjb250ZW50LSVDT01QJV17Zm9udDo0MDAgMTRweC8yMHB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtsZXR0ZXItc3BhY2luZzpub3JtYWx9Lm1hdC1idXR0b25bX25nY29udGVudC0lQ09NUCVdLCAubWF0LXJhaXNlZC1idXR0b25bX25nY29udGVudC0lQ09NUCVdLCAubWF0LWljb24tYnV0dG9uW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1zdHJva2VkLWJ1dHRvbltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtZmxhdC1idXR0b25bX25nY29udGVudC0lQ09NUCVdLCAubWF0LWZhYltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtbWluaS1mYWJbX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtmb250LXNpemU6MTRweDtmb250LXdlaWdodDo1MDB9Lm1hdC1idXR0b24tdG9nZ2xlW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWZ9Lm1hdC1jYXJkW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWZ9Lm1hdC1jYXJkLXRpdGxlW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MjRweDtmb250LXdlaWdodDo1MDB9Lm1hdC1jYXJkLWhlYWRlcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWNhcmQtdGl0bGVbX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToyMHB4fS5tYXQtY2FyZC1zdWJ0aXRsZVtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtY2FyZC1jb250ZW50W19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MTRweH0ubWF0LWNoZWNrYm94W19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWZ9Lm1hdC1jaGVja2JveC1sYXlvdXRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1jaGVja2JveC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17bGluZS1oZWlnaHQ6MjRweH0ubWF0LWNoaXBbX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToxNHB4O2ZvbnQtd2VpZ2h0OjUwMH0ubWF0LWNoaXBbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1jaGlwLXRyYWlsaW5nLWljb24ubWF0LWljb25bX25nY29udGVudC0lQ09NUCVdLCAubWF0LWNoaXBbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1jaGlwLXJlbW92ZS5tYXQtaWNvbltfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjE4cHh9Lm1hdC10YWJsZVtfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmfS5tYXQtaGVhZGVyLWNlbGxbX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToxMnB4O2ZvbnQtd2VpZ2h0OjUwMH0ubWF0LWNlbGxbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWZvb3Rlci1jZWxsW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MTRweH0ubWF0LWNhbGVuZGFyW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWZ9Lm1hdC1jYWxlbmRhci1ib2R5W19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MTNweH0ubWF0LWNhbGVuZGFyLWJvZHktbGFiZWxbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWNhbGVuZGFyLXBlcmlvZC1idXR0b25bX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToxNHB4O2ZvbnQtd2VpZ2h0OjUwMH0ubWF0LWNhbGVuZGFyLXRhYmxlLWhlYWRlcltfbmdjb250ZW50LSVDT01QJV0gICB0aFtfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjExcHg7Zm9udC13ZWlnaHQ6NDAwfS5tYXQtZGlhbG9nLXRpdGxlW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250OjUwMCAyMHB4LzMycHggUm9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2xldHRlci1zcGFjaW5nOm5vcm1hbH0ubWF0LWV4cGFuc2lvbi1wYW5lbC1oZWFkZXJbX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtmb250LXNpemU6MTVweDtmb250LXdlaWdodDo0MDB9Lm1hdC1leHBhbnNpb24tcGFuZWwtY29udGVudFtfbmdjb250ZW50LSVDT01QJV17Zm9udDo0MDAgMTRweC8yMHB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtsZXR0ZXItc3BhY2luZzpub3JtYWx9Lm1hdC1mb3JtLWZpZWxkW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6aW5oZXJpdDtmb250LXdlaWdodDo0MDA7bGluZS1oZWlnaHQ6MS4xMjU7Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2xldHRlci1zcGFjaW5nOm5vcm1hbH0ubWF0LWZvcm0tZmllbGQtd3JhcHBlcltfbmdjb250ZW50LSVDT01QJV17cGFkZGluZy1ib3R0b206MS4zNDM3NWVtfS5tYXQtZm9ybS1maWVsZC1wcmVmaXhbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pY29uW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1mb3JtLWZpZWxkLXN1ZmZpeFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWljb25bX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToxNTAlO2xpbmUtaGVpZ2h0OjEuMTI1fS5tYXQtZm9ybS1maWVsZC1wcmVmaXhbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pY29uLWJ1dHRvbltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtZm9ybS1maWVsZC1zdWZmaXhbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pY29uLWJ1dHRvbltfbmdjb250ZW50LSVDT01QJV17aGVpZ2h0OjEuNWVtO3dpZHRoOjEuNWVtfS5tYXQtZm9ybS1maWVsZC1wcmVmaXhbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pY29uLWJ1dHRvbltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWljb25bX25nY29udGVudC0lQ09NUCVdLCAubWF0LWZvcm0tZmllbGQtc3VmZml4W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaWNvbi1idXR0b25bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pY29uW19uZ2NvbnRlbnQtJUNPTVAlXXtoZWlnaHQ6MS4xMjVlbTtsaW5lLWhlaWdodDoxLjEyNX0ubWF0LWZvcm0tZmllbGQtaW5maXhbX25nY29udGVudC0lQ09NUCVde3BhZGRpbmc6LjVlbSAwO2JvcmRlci10b3A6Ljg0Mzc1ZW0gc29saWQgdHJhbnNwYXJlbnR9Lm1hdC1mb3JtLWZpZWxkLWNhbi1mbG9hdC5tYXQtZm9ybS1maWVsZC1zaG91bGQtZmxvYXRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1mb3JtLWZpZWxkLWNhbi1mbG9hdFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWlucHV0LXNlcnZlcltfbmdjb250ZW50LSVDT01QJV06Zm9jdXMgKyAubWF0LWZvcm0tZmllbGQtbGFiZWwtd3JhcHBlcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVde3RyYW5zZm9ybTp0cmFuc2xhdGVZKC0xLjM0Mzc1ZW0pIHNjYWxlKDAuNzUpO3dpZHRoOjEzMy4zMzMzMzMzMzMzJX0ubWF0LWZvcm0tZmllbGQtY2FuLWZsb2F0W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaW5wdXQtc2VydmVyW2xhYmVsXVtfbmdjb250ZW50LSVDT01QJV06bm90KDpsYWJlbC1zaG93bikgKyAubWF0LWZvcm0tZmllbGQtbGFiZWwtd3JhcHBlcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVde3RyYW5zZm9ybTp0cmFuc2xhdGVZKC0xLjM0Mzc0ZW0pIHNjYWxlKDAuNzUpO3dpZHRoOjEzMy4zMzMzNDMzMzMzJX0ubWF0LWZvcm0tZmllbGQtbGFiZWwtd3JhcHBlcltfbmdjb250ZW50LSVDT01QJV17dG9wOi0wLjg0Mzc1ZW07cGFkZGluZy10b3A6Ljg0Mzc1ZW19Lm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXt0b3A6MS4zNDM3NWVtfS5tYXQtZm9ybS1maWVsZC11bmRlcmxpbmVbX25nY29udGVudC0lQ09NUCVde2JvdHRvbToxLjM0Mzc1ZW19Lm1hdC1mb3JtLWZpZWxkLXN1YnNjcmlwdC13cmFwcGVyW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6NzUlO21hcmdpbi10b3A6LjY2NjY2NjY2NjdlbTt0b3A6Y2FsYygxMDAlIC0gMS43OTE2NjY2NjY3ZW0pfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWxlZ2FjeVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtd3JhcHBlcltfbmdjb250ZW50LSVDT01QJV17cGFkZGluZy1ib3R0b206MS4yNWVtfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWxlZ2FjeVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtaW5maXhbX25nY29udGVudC0lQ09NUCVde3BhZGRpbmc6LjQzNzVlbSAwfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWxlZ2FjeS5tYXQtZm9ybS1maWVsZC1jYW4tZmxvYXQubWF0LWZvcm0tZmllbGQtc2hvdWxkLWZsb2F0W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWxlZ2FjeS5tYXQtZm9ybS1maWVsZC1jYW4tZmxvYXRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pbnB1dC1zZXJ2ZXJbX25nY29udGVudC0lQ09NUCVdOmZvY3VzICsgLm1hdC1mb3JtLWZpZWxkLWxhYmVsLXdyYXBwZXJbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXt0cmFuc2Zvcm06dHJhbnNsYXRlWSgtMS4yODEyNWVtKSBzY2FsZSgwLjc1KSBwZXJzcGVjdGl2ZSgxMDBweCkgdHJhbnNsYXRlWigwLjAwMXB4KTstbXMtdHJhbnNmb3JtOnRyYW5zbGF0ZVkoLTEuMjgxMjVlbSkgc2NhbGUoMC43NSk7d2lkdGg6MTMzLjMzMzMzMzMzMzMlfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWxlZ2FjeS5tYXQtZm9ybS1maWVsZC1jYW4tZmxvYXRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWF1dG9maWxsLWNvbnRyb2xbX25nY29udGVudC0lQ09NUCVdOi13ZWJraXQtYXV0b2ZpbGwgKyAubWF0LWZvcm0tZmllbGQtbGFiZWwtd3JhcHBlcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVde3RyYW5zZm9ybTp0cmFuc2xhdGVZKC0xLjI4MTI1ZW0pIHNjYWxlKDAuNzUpIHBlcnNwZWN0aXZlKDEwMHB4KSB0cmFuc2xhdGVaKDAuMDAxMDFweCk7LW1zLXRyYW5zZm9ybTp0cmFuc2xhdGVZKC0xLjI4MTI0ZW0pIHNjYWxlKDAuNzUpO3dpZHRoOjEzMy4zMzMzNDMzMzMzJX0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1sZWdhY3kubWF0LWZvcm0tZmllbGQtY2FuLWZsb2F0W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaW5wdXQtc2VydmVyW2xhYmVsXVtfbmdjb250ZW50LSVDT01QJV06bm90KDpsYWJlbC1zaG93bikgKyAubWF0LWZvcm0tZmllbGQtbGFiZWwtd3JhcHBlcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVde3RyYW5zZm9ybTp0cmFuc2xhdGVZKC0xLjI4MTI1ZW0pIHNjYWxlKDAuNzUpIHBlcnNwZWN0aXZlKDEwMHB4KSB0cmFuc2xhdGVaKDAuMDAxMDJweCk7LW1zLXRyYW5zZm9ybTp0cmFuc2xhdGVZKC0xLjI4MTIzZW0pIHNjYWxlKDAuNzUpO3dpZHRoOjEzMy4zMzMzNTMzMzMzJX0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1sZWdhY3lbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXt0b3A6MS4yODEyNWVtfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWxlZ2FjeVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtdW5kZXJsaW5lW19uZ2NvbnRlbnQtJUNPTVAlXXtib3R0b206MS4yNWVtfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWxlZ2FjeVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtc3Vic2NyaXB0LXdyYXBwZXJbX25nY29udGVudC0lQ09NUCVde21hcmdpbi10b3A6LjU0MTY2NjY2NjdlbTt0b3A6Y2FsYygxMDAlIC0gMS42NjY2NjY2NjY3ZW0pfUBtZWRpYSBwcmludHsubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1sZWdhY3kubWF0LWZvcm0tZmllbGQtY2FuLWZsb2F0Lm1hdC1mb3JtLWZpZWxkLXNob3VsZC1mbG9hdFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1sZWdhY3kubWF0LWZvcm0tZmllbGQtY2FuLWZsb2F0W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaW5wdXQtc2VydmVyW19uZ2NvbnRlbnQtJUNPTVAlXTpmb2N1cyArIC5tYXQtZm9ybS1maWVsZC1sYWJlbC13cmFwcGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17dHJhbnNmb3JtOnRyYW5zbGF0ZVkoLTEuMjgxMjJlbSkgc2NhbGUoMC43NSl9Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtbGVnYWN5Lm1hdC1mb3JtLWZpZWxkLWNhbi1mbG9hdFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtYXV0b2ZpbGwtY29udHJvbFtfbmdjb250ZW50LSVDT01QJV06LXdlYmtpdC1hdXRvZmlsbCArIC5tYXQtZm9ybS1maWVsZC1sYWJlbC13cmFwcGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17dHJhbnNmb3JtOnRyYW5zbGF0ZVkoLTEuMjgxMjFlbSkgc2NhbGUoMC43NSl9Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtbGVnYWN5Lm1hdC1mb3JtLWZpZWxkLWNhbi1mbG9hdFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWlucHV0LXNlcnZlcltsYWJlbF1bX25nY29udGVudC0lQ09NUCVdOm5vdCg6bGFiZWwtc2hvd24pICsgLm1hdC1mb3JtLWZpZWxkLWxhYmVsLXdyYXBwZXJbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXt0cmFuc2Zvcm06dHJhbnNsYXRlWSgtMS4yODEyZW0pIHNjYWxlKDAuNzUpfX0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1maWxsW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1pbmZpeFtfbmdjb250ZW50LSVDT01QJV17cGFkZGluZzouMjVlbSAwIC43NWVtIDB9Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtZmlsbFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVde3RvcDoxLjA5Mzc1ZW07bWFyZ2luLXRvcDotMC41ZW19Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtZmlsbC5tYXQtZm9ybS1maWVsZC1jYW4tZmxvYXQubWF0LWZvcm0tZmllbGQtc2hvdWxkLWZsb2F0W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWZpbGwubWF0LWZvcm0tZmllbGQtY2FuLWZsb2F0W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaW5wdXQtc2VydmVyW19uZ2NvbnRlbnQtJUNPTVAlXTpmb2N1cyArIC5tYXQtZm9ybS1maWVsZC1sYWJlbC13cmFwcGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17dHJhbnNmb3JtOnRyYW5zbGF0ZVkoLTAuNTkzNzVlbSkgc2NhbGUoMC43NSk7d2lkdGg6MTMzLjMzMzMzMzMzMzMlfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWZpbGwubWF0LWZvcm0tZmllbGQtY2FuLWZsb2F0W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaW5wdXQtc2VydmVyW2xhYmVsXVtfbmdjb250ZW50LSVDT01QJV06bm90KDpsYWJlbC1zaG93bikgKyAubWF0LWZvcm0tZmllbGQtbGFiZWwtd3JhcHBlcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVde3RyYW5zZm9ybTp0cmFuc2xhdGVZKC0wLjU5Mzc0ZW0pIHNjYWxlKDAuNzUpO3dpZHRoOjEzMy4zMzMzNDMzMzMzJX0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1vdXRsaW5lW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1pbmZpeFtfbmdjb250ZW50LSVDT01QJV17cGFkZGluZzoxZW0gMCAxZW0gMH0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1vdXRsaW5lW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17dG9wOjEuODQzNzVlbTttYXJnaW4tdG9wOi0wLjI1ZW19Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2Utb3V0bGluZS5tYXQtZm9ybS1maWVsZC1jYW4tZmxvYXQubWF0LWZvcm0tZmllbGQtc2hvdWxkLWZsb2F0W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLW91dGxpbmUubWF0LWZvcm0tZmllbGQtY2FuLWZsb2F0W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaW5wdXQtc2VydmVyW19uZ2NvbnRlbnQtJUNPTVAlXTpmb2N1cyArIC5tYXQtZm9ybS1maWVsZC1sYWJlbC13cmFwcGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17dHJhbnNmb3JtOnRyYW5zbGF0ZVkoLTEuNTkzNzVlbSkgc2NhbGUoMC43NSk7d2lkdGg6MTMzLjMzMzMzMzMzMzMlfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLW91dGxpbmUubWF0LWZvcm0tZmllbGQtY2FuLWZsb2F0W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaW5wdXQtc2VydmVyW2xhYmVsXVtfbmdjb250ZW50LSVDT01QJV06bm90KDpsYWJlbC1zaG93bikgKyAubWF0LWZvcm0tZmllbGQtbGFiZWwtd3JhcHBlcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVde3RyYW5zZm9ybTp0cmFuc2xhdGVZKC0xLjU5Mzc0ZW0pIHNjYWxlKDAuNzUpO3dpZHRoOjEzMy4zMzMzNDMzMzMzJX0ubWF0LWdyaWQtdGlsZS1oZWFkZXJbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWdyaWQtdGlsZS1mb290ZXJbX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToxNHB4fS5tYXQtZ3JpZC10aWxlLWhlYWRlcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpbmVbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWdyaWQtdGlsZS1mb290ZXJbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saW5lW19uZ2NvbnRlbnQtJUNPTVAlXXt3aGl0ZS1zcGFjZTpub3dyYXA7b3ZlcmZsb3c6aGlkZGVuO3RleHQtb3ZlcmZsb3c6ZWxsaXBzaXM7ZGlzcGxheTpibG9jaztib3gtc2l6aW5nOmJvcmRlci1ib3h9Lm1hdC1ncmlkLXRpbGUtaGVhZGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGluZVtfbmdjb250ZW50LSVDT01QJV06bnRoLWNoaWxkKG4rMiksIC5tYXQtZ3JpZC10aWxlLWZvb3Rlcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpbmVbX25nY29udGVudC0lQ09NUCVdOm50aC1jaGlsZChuKzIpe2ZvbnQtc2l6ZToxMnB4fWlucHV0Lm1hdC1pbnB1dC1lbGVtZW50W19uZ2NvbnRlbnQtJUNPTVAlXXttYXJnaW4tdG9wOi0wLjA2MjVlbX0ubWF0LW1lbnUtaXRlbVtfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2ZvbnQtc2l6ZToxNHB4O2ZvbnQtd2VpZ2h0OjQwMH0ubWF0LXBhZ2luYXRvcltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtcGFnaW5hdG9yLXBhZ2Utc2l6ZVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXNlbGVjdC10cmlnZ2VyW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7Zm9udC1zaXplOjEycHh9Lm1hdC1yYWRpby1idXR0b25bX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZn0ubWF0LXNlbGVjdFtfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmfS5tYXQtc2VsZWN0LXRyaWdnZXJbX25nY29udGVudC0lQ09NUCVde2hlaWdodDoxLjEyNWVtfS5tYXQtc2xpZGUtdG9nZ2xlLWNvbnRlbnRbX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZn0ubWF0LXNsaWRlci10aHVtYi1sYWJlbC10ZXh0W19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7Zm9udC1zaXplOjEycHg7Zm9udC13ZWlnaHQ6NTAwfS5tYXQtc3RlcHBlci12ZXJ0aWNhbFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtc3RlcHBlci1ob3Jpem9udGFsW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWZ9Lm1hdC1zdGVwLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MTRweDtmb250LXdlaWdodDo0MDB9Lm1hdC1zdGVwLXN1Yi1sYWJlbC1lcnJvcltfbmdjb250ZW50LSVDT01QJV17Zm9udC13ZWlnaHQ6bm9ybWFsfS5tYXQtc3RlcC1sYWJlbC1lcnJvcltfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjE0cHh9Lm1hdC1zdGVwLWxhYmVsLXNlbGVjdGVkW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MTRweDtmb250LXdlaWdodDo1MDB9Lm1hdC10YWItZ3JvdXBbX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZn0ubWF0LXRhYi1sYWJlbFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdGFiLWxpbmtbX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtmb250LXNpemU6MTRweDtmb250LXdlaWdodDo1MDB9Lm1hdC10b29sYmFyW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10b29sYmFyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIGgxW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10b29sYmFyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIGgyW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10b29sYmFyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIGgzW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10b29sYmFyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIGg0W19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10b29sYmFyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIGg1W19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10b29sYmFyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIGg2W19uZ2NvbnRlbnQtJUNPTVAlXXtmb250OjUwMCAyMHB4LzMycHggUm9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2xldHRlci1zcGFjaW5nOm5vcm1hbDttYXJnaW46MH0ubWF0LXRvb2x0aXBbX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtmb250LXNpemU6MTBweDtwYWRkaW5nLXRvcDo2cHg7cGFkZGluZy1ib3R0b206NnB4fS5tYXQtdG9vbHRpcC1oYW5kc2V0W19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MTRweDtwYWRkaW5nLXRvcDo4cHg7cGFkZGluZy1ib3R0b206OHB4fS5tYXQtbGlzdC1pdGVtW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWZ9Lm1hdC1saXN0LW9wdGlvbltfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmfS5tYXQtbGlzdC1iYXNlW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGlzdC1pdGVtW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MTZweH0ubWF0LWxpc3QtYmFzZVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpc3QtaXRlbVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpbmVbX25nY29udGVudC0lQ09NUCVde3doaXRlLXNwYWNlOm5vd3JhcDtvdmVyZmxvdzpoaWRkZW47dGV4dC1vdmVyZmxvdzplbGxpcHNpcztkaXNwbGF5OmJsb2NrO2JveC1zaXppbmc6Ym9yZGVyLWJveH0ubWF0LWxpc3QtYmFzZVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpc3QtaXRlbVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpbmVbX25nY29udGVudC0lQ09NUCVdOm50aC1jaGlsZChuKzIpe2ZvbnQtc2l6ZToxNHB4fS5tYXQtbGlzdC1iYXNlW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGlzdC1vcHRpb25bX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToxNnB4fS5tYXQtbGlzdC1iYXNlW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGlzdC1vcHRpb25bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saW5lW19uZ2NvbnRlbnQtJUNPTVAlXXt3aGl0ZS1zcGFjZTpub3dyYXA7b3ZlcmZsb3c6aGlkZGVuO3RleHQtb3ZlcmZsb3c6ZWxsaXBzaXM7ZGlzcGxheTpibG9jaztib3gtc2l6aW5nOmJvcmRlci1ib3h9Lm1hdC1saXN0LWJhc2VbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saXN0LW9wdGlvbltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpbmVbX25nY29udGVudC0lQ09NUCVdOm50aC1jaGlsZChuKzIpe2ZvbnQtc2l6ZToxNHB4fS5tYXQtbGlzdC1iYXNlW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtc3ViaGVhZGVyW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7Zm9udC1zaXplOjE0cHg7Zm9udC13ZWlnaHQ6NTAwfS5tYXQtbGlzdC1iYXNlW2RlbnNlXVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpc3QtaXRlbVtfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjEycHh9Lm1hdC1saXN0LWJhc2VbZGVuc2VdW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGlzdC1pdGVtW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGluZVtfbmdjb250ZW50LSVDT01QJV17d2hpdGUtc3BhY2U6bm93cmFwO292ZXJmbG93OmhpZGRlbjt0ZXh0LW92ZXJmbG93OmVsbGlwc2lzO2Rpc3BsYXk6YmxvY2s7Ym94LXNpemluZzpib3JkZXItYm94fS5tYXQtbGlzdC1iYXNlW2RlbnNlXVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpc3QtaXRlbVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpbmVbX25nY29udGVudC0lQ09NUCVdOm50aC1jaGlsZChuKzIpe2ZvbnQtc2l6ZToxMnB4fS5tYXQtbGlzdC1iYXNlW2RlbnNlXVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpc3Qtb3B0aW9uW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MTJweH0ubWF0LWxpc3QtYmFzZVtkZW5zZV1bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saXN0LW9wdGlvbltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpbmVbX25nY29udGVudC0lQ09NUCVde3doaXRlLXNwYWNlOm5vd3JhcDtvdmVyZmxvdzpoaWRkZW47dGV4dC1vdmVyZmxvdzplbGxpcHNpcztkaXNwbGF5OmJsb2NrO2JveC1zaXppbmc6Ym9yZGVyLWJveH0ubWF0LWxpc3QtYmFzZVtkZW5zZV1bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saXN0LW9wdGlvbltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpbmVbX25nY29udGVudC0lQ09NUCVdOm50aC1jaGlsZChuKzIpe2ZvbnQtc2l6ZToxMnB4fS5tYXQtbGlzdC1iYXNlW2RlbnNlXVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXN1YmhlYWRlcltfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2ZvbnQtc2l6ZToxMnB4O2ZvbnQtd2VpZ2h0OjUwMH0ubWF0LW9wdGlvbltfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2ZvbnQtc2l6ZToxNnB4fS5tYXQtb3B0Z3JvdXAtbGFiZWxbX25nY29udGVudC0lQ09NUCVde2ZvbnQ6NTAwIDE0cHgvMjRweCBSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7bGV0dGVyLXNwYWNpbmc6bm9ybWFsfS5tYXQtc2ltcGxlLXNuYWNrYmFyW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7Zm9udC1zaXplOjE0cHh9Lm1hdC1zaW1wbGUtc25hY2tiYXItYWN0aW9uW19uZ2NvbnRlbnQtJUNPTVAlXXtsaW5lLWhlaWdodDoxO2ZvbnQtZmFtaWx5OmluaGVyaXQ7Zm9udC1zaXplOmluaGVyaXQ7Zm9udC13ZWlnaHQ6NTAwfS5tYXQtdHJlZVtfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmfS5tYXQtdHJlZS1ub2RlW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1uZXN0ZWQtdHJlZS1ub2RlW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXdlaWdodDo0MDA7Zm9udC1zaXplOjE0cHh9Lm1hdC1yaXBwbGVbX25nY29udGVudC0lQ09NUCVde292ZXJmbG93OmhpZGRlbjtwb3NpdGlvbjpyZWxhdGl2ZX0ubWF0LXJpcHBsZVtfbmdjb250ZW50LSVDT01QJV06bm90KDplbXB0eSl7dHJhbnNmb3JtOnRyYW5zbGF0ZVooMCl9Lm1hdC1yaXBwbGUubWF0LXJpcHBsZS11bmJvdW5kZWRbX25nY29udGVudC0lQ09NUCVde292ZXJmbG93OnZpc2libGV9Lm1hdC1yaXBwbGUtZWxlbWVudFtfbmdjb250ZW50LSVDT01QJV17cG9zaXRpb246YWJzb2x1dGU7Ym9yZGVyLXJhZGl1czo1MCU7cG9pbnRlci1ldmVudHM6bm9uZTt0cmFuc2l0aW9uOm9wYWNpdHksdHJhbnNmb3JtIDBtcyBjdWJpYy1iZXppZXIoMCwgMCwgMC4yLCAxKTt0cmFuc2Zvcm06c2NhbGUoMCl9LmNkay1oaWdoLWNvbnRyYXN0LWFjdGl2ZVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXJpcHBsZS1lbGVtZW50W19uZ2NvbnRlbnQtJUNPTVAlXXtkaXNwbGF5Om5vbmV9LmNkay12aXN1YWxseS1oaWRkZW5bX25nY29udGVudC0lQ09NUCVde2JvcmRlcjowO2NsaXA6cmVjdCgwIDAgMCAwKTtoZWlnaHQ6MXB4O21hcmdpbjotMXB4O292ZXJmbG93OmhpZGRlbjtwYWRkaW5nOjA7cG9zaXRpb246YWJzb2x1dGU7d2lkdGg6MXB4O291dGxpbmU6MDstd2Via2l0LWFwcGVhcmFuY2U6bm9uZTstbW96LWFwcGVhcmFuY2U6bm9uZX0uY2RrLW92ZXJsYXktY29udGFpbmVyW19uZ2NvbnRlbnQtJUNPTVAlXSwgLmNkay1nbG9iYWwtb3ZlcmxheS13cmFwcGVyW19uZ2NvbnRlbnQtJUNPTVAlXXtwb2ludGVyLWV2ZW50czpub25lO3RvcDowO2xlZnQ6MDtoZWlnaHQ6MTAwJTt3aWR0aDoxMDAlfS5jZGstb3ZlcmxheS1jb250YWluZXJbX25nY29udGVudC0lQ09NUCVde3Bvc2l0aW9uOmZpeGVkO3otaW5kZXg6MTAwMH0uY2RrLW92ZXJsYXktY29udGFpbmVyW19uZ2NvbnRlbnQtJUNPTVAlXTplbXB0eXtkaXNwbGF5Om5vbmV9LmNkay1nbG9iYWwtb3ZlcmxheS13cmFwcGVyW19uZ2NvbnRlbnQtJUNPTVAlXXtkaXNwbGF5OmZsZXg7cG9zaXRpb246YWJzb2x1dGU7ei1pbmRleDoxMDAwfS5jZGstb3ZlcmxheS1wYW5lW19uZ2NvbnRlbnQtJUNPTVAlXXtwb3NpdGlvbjphYnNvbHV0ZTtwb2ludGVyLWV2ZW50czphdXRvO2JveC1zaXppbmc6Ym9yZGVyLWJveDt6LWluZGV4OjEwMDA7ZGlzcGxheTpmbGV4O21heC13aWR0aDoxMDAlO21heC1oZWlnaHQ6MTAwJX0uY2RrLW92ZXJsYXktYmFja2Ryb3BbX25nY29udGVudC0lQ09NUCVde3Bvc2l0aW9uOmFic29sdXRlO3RvcDowO2JvdHRvbTowO2xlZnQ6MDtyaWdodDowO3otaW5kZXg6MTAwMDtwb2ludGVyLWV2ZW50czphdXRvOy13ZWJraXQtdGFwLWhpZ2hsaWdodC1jb2xvcjp0cmFuc3BhcmVudDt0cmFuc2l0aW9uOm9wYWNpdHkgNDAwbXMgY3ViaWMtYmV6aWVyKDAuMjUsIDAuOCwgMC4yNSwgMSk7b3BhY2l0eTowfS5jZGstb3ZlcmxheS1iYWNrZHJvcC5jZGstb3ZlcmxheS1iYWNrZHJvcC1zaG93aW5nW19uZ2NvbnRlbnQtJUNPTVAlXXtvcGFjaXR5OjF9QG1lZGlhIHNjcmVlbiBhbmQgKC1tcy1oaWdoLWNvbnRyYXN0OiBhY3RpdmUpey5jZGstb3ZlcmxheS1iYWNrZHJvcC5jZGstb3ZlcmxheS1iYWNrZHJvcC1zaG93aW5nW19uZ2NvbnRlbnQtJUNPTVAlXXtvcGFjaXR5Oi42fX0uY2RrLW92ZXJsYXktZGFyay1iYWNrZHJvcFtfbmdjb250ZW50LSVDT01QJV17YmFja2dyb3VuZDpyZ2JhKDAsMCwwLC4zMil9LmNkay1vdmVybGF5LXRyYW5zcGFyZW50LWJhY2tkcm9wW19uZ2NvbnRlbnQtJUNPTVAlXSwgLmNkay1vdmVybGF5LXRyYW5zcGFyZW50LWJhY2tkcm9wLmNkay1vdmVybGF5LWJhY2tkcm9wLXNob3dpbmdbX25nY29udGVudC0lQ09NUCVde29wYWNpdHk6MH0uY2RrLW92ZXJsYXktY29ubmVjdGVkLXBvc2l0aW9uLWJvdW5kaW5nLWJveFtfbmdjb250ZW50LSVDT01QJV17cG9zaXRpb246YWJzb2x1dGU7ei1pbmRleDoxMDAwO2Rpc3BsYXk6ZmxleDtmbGV4LWRpcmVjdGlvbjpjb2x1bW47bWluLXdpZHRoOjFweDttaW4taGVpZ2h0OjFweH0uY2RrLWdsb2JhbC1zY3JvbGxibG9ja1tfbmdjb250ZW50LSVDT01QJV17cG9zaXRpb246Zml4ZWQ7d2lkdGg6MTAwJTtvdmVyZmxvdy15OnNjcm9sbH1Aa2V5ZnJhbWVzIGNkay10ZXh0LWZpZWxkLWF1dG9maWxsLXN0YXJ0e31Aa2V5ZnJhbWVzIGNkay10ZXh0LWZpZWxkLWF1dG9maWxsLWVuZHt9LmNkay10ZXh0LWZpZWxkLWF1dG9maWxsLW1vbml0b3JlZFtfbmdjb250ZW50LSVDT01QJV06LXdlYmtpdC1hdXRvZmlsbHthbmltYXRpb246Y2RrLXRleHQtZmllbGQtYXV0b2ZpbGwtc3RhcnQgMHMgMW1zfS5jZGstdGV4dC1maWVsZC1hdXRvZmlsbC1tb25pdG9yZWRbX25nY29udGVudC0lQ09NUCVdOm5vdCg6LXdlYmtpdC1hdXRvZmlsbCl7YW5pbWF0aW9uOmNkay10ZXh0LWZpZWxkLWF1dG9maWxsLWVuZCAwcyAxbXN9dGV4dGFyZWEuY2RrLXRleHRhcmVhLWF1dG9zaXplW19uZ2NvbnRlbnQtJUNPTVAlXXtyZXNpemU6bm9uZX10ZXh0YXJlYS5jZGstdGV4dGFyZWEtYXV0b3NpemUtbWVhc3VyaW5nW19uZ2NvbnRlbnQtJUNPTVAlXXtwYWRkaW5nOjJweCAwICFpbXBvcnRhbnQ7Ym94LXNpemluZzpjb250ZW50LWJveCAhaW1wb3J0YW50O2hlaWdodDphdXRvICFpbXBvcnRhbnQ7b3ZlcmZsb3c6aGlkZGVuICFpbXBvcnRhbnR9dGV4dGFyZWEuY2RrLXRleHRhcmVhLWF1dG9zaXplLW1lYXN1cmluZy1maXJlZm94W19uZ2NvbnRlbnQtJUNPTVAlXXtwYWRkaW5nOjJweCAwICFpbXBvcnRhbnQ7Ym94LXNpemluZzpjb250ZW50LWJveCAhaW1wb3J0YW50O2hlaWdodDowICFpbXBvcnRhbnR9Lm1hdC1mb2N1cy1pbmRpY2F0b3JbX25nY29udGVudC0lQ09NUCVde3Bvc2l0aW9uOnJlbGF0aXZlfS5tYXQtbWRjLWZvY3VzLWluZGljYXRvcltfbmdjb250ZW50LSVDT01QJV17cG9zaXRpb246cmVsYXRpdmV9Lm1hdC1yaXBwbGUtZWxlbWVudFtfbmdjb250ZW50LSVDT01QJV17YmFja2dyb3VuZC1jb2xvcjpyZ2JhKDAsMCwwLC4xKX0ubWF0LW9wdGlvbltfbmdjb250ZW50LSVDT01QJV17Y29sb3I6IzIxMjEyMX0ubWF0LW9wdGlvbltfbmdjb250ZW50LSVDT01QJV06aG92ZXI6bm90KC5tYXQtb3B0aW9uLWRpc2FibGVkKSwgLm1hdC1vcHRpb25bX25nY29udGVudC0lQ09NUCVdOmZvY3VzOm5vdCgubWF0LW9wdGlvbi1kaXNhYmxlZCl7YmFja2dyb3VuZDpyZ2JhKDAsMCwwLC4wNCl9Lm1hdC1vcHRpb24ubWF0LXNlbGVjdGVkW19uZ2NvbnRlbnQtJUNPTVAlXTpub3QoLm1hdC1vcHRpb24tbXVsdGlwbGUpOm5vdCgubWF0LW9wdGlvbi1kaXNhYmxlZCl7YmFja2dyb3VuZDpyZ2JhKDAsMCwwLC4wNCl9Lm1hdC1vcHRpb24ubWF0LWFjdGl2ZVtfbmdjb250ZW50LSVDT01QJV17YmFja2dyb3VuZDpyZ2JhKDAsMCwwLC4wNCk7Y29sb3I6IzIxMjEyMX0ubWF0LW9wdGlvbi5tYXQtb3B0aW9uLWRpc2FibGVkW19uZ2NvbnRlbnQtJUNPTVAlXXtjb2xvcjpyZ2JhKDAsMCwwLC4zOCl9Lm1hdC1wcmltYXJ5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtb3B0aW9uLm1hdC1zZWxlY3RlZFtfbmdjb250ZW50LSVDT01QJV06bm90KC5tYXQtb3B0aW9uLWRpc2FibGVkKXtjb2xvcjojZjU3YzAwfS5tYXQtYWNjZW50W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtb3B0aW9uLm1hdC1zZWxlY3RlZFtfbmdjb250ZW50LSVDT01QJV06bm90KC5tYXQtb3B0aW9uLWRpc2FibGVkKXtjb2xvcjojZmY5ODAwfS5tYXQtd2Fybltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LW9wdGlvbi5tYXQtc2VsZWN0ZWRbX25nY29udGVudC0lQ09NUCVdOm5vdCgubWF0LW9wdGlvbi1kaXNhYmxlZCl7Y29sb3I6I2Y0NDMzNn0ubWF0LW9wdGdyb3VwLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXtjb2xvcjojNjE2MTYxfS5tYXQtb3B0Z3JvdXAtZGlzYWJsZWRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1vcHRncm91cC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17Y29sb3I6cmdiYSgwLDAsMCwuMzgpfS5tYXQtcHNldWRvLWNoZWNrYm94W19uZ2NvbnRlbnQtJUNPTVAlXXtjb2xvcjojNjE2MTYxfS5tYXQtcHNldWRvLWNoZWNrYm94W19uZ2NvbnRlbnQtJUNPTVAlXTo6YWZ0ZXJ7Y29sb3I6I2ZhZmFmYX0ubWF0LXBzZXVkby1jaGVja2JveC1kaXNhYmxlZFtfbmdjb250ZW50LSVDT01QJV17Y29sb3I6I2IwYjBiMH0ubWF0LXByaW1hcnlbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1wc2V1ZG8tY2hlY2tib3gtY2hlY2tlZFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtcHJpbWFyeVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXBzZXVkby1jaGVja2JveC1pbmRldGVybWluYXRlW19uZ2NvbnRlbnQtJUNPTVAlXXtiYWNrZ3JvdW5kOiNmNTdjMDB9Lm1hdC1wc2V1ZG8tY2hlY2tib3gtY2hlY2tlZFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtcHNldWRvLWNoZWNrYm94LWluZGV0ZXJtaW5hdGVbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWFjY2VudFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXBzZXVkby1jaGVja2JveC1jaGVja2VkW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1hY2NlbnRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1wc2V1ZG8tY2hlY2tib3gtaW5kZXRlcm1pbmF0ZVtfbmdjb250ZW50LSVDT01QJV17YmFja2dyb3VuZDojZmY5ODAwfS5tYXQtd2Fybltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXBzZXVkby1jaGVja2JveC1jaGVja2VkW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC13YXJuW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtcHNldWRvLWNoZWNrYm94LWluZGV0ZXJtaW5hdGVbX25nY29udGVudC0lQ09NUCVde2JhY2tncm91bmQ6I2Y0NDMzNn0ubWF0LXBzZXVkby1jaGVja2JveC1jaGVja2VkLm1hdC1wc2V1ZG8tY2hlY2tib3gtZGlzYWJsZWRbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXBzZXVkby1jaGVja2JveC1pbmRldGVybWluYXRlLm1hdC1wc2V1ZG8tY2hlY2tib3gtZGlzYWJsZWRbX25nY29udGVudC0lQ09NUCVde2JhY2tncm91bmQ6I2IwYjBiMH0ubWF0LWFwcC1iYWNrZ3JvdW5kW19uZ2NvbnRlbnQtJUNPTVAlXXtiYWNrZ3JvdW5kLWNvbG9yOiNmYWZhZmE7Y29sb3I6IzIxMjEyMX0ubWF0LWVsZXZhdGlvbi16MFtfbmdjb250ZW50LSVDT01QJV17Ym94LXNoYWRvdzowcHggMHB4IDBweCAwcHggcmdiYSgwLCAwLCAwLCAwLjIpLDBweCAwcHggMHB4IDBweCByZ2JhKDAsIDAsIDAsIDAuMTQpLDBweCAwcHggMHB4IDBweCByZ2JhKDAsIDAsIDAsIDAuMTIpfS5tYXQtZWxldmF0aW9uLXoxW19uZ2NvbnRlbnQtJUNPTVAlXXtib3gtc2hhZG93OjBweCAycHggMXB4IC0xcHggcmdiYSgwLCAwLCAwLCAwLjIpLDBweCAxcHggMXB4IDBweCByZ2JhKDAsIDAsIDAsIDAuMTQpLDBweCAxcHggM3B4IDBweCByZ2JhKDAsIDAsIDAsIDAuMTIpfS5tYXQtZWxldmF0aW9uLXoyW19uZ2NvbnRlbnQtJUNPTVAlXXtib3gtc2hhZG93OjBweCAzcHggMXB4IC0ycHggcmdiYSgwLCAwLCAwLCAwLjIpLDBweCAycHggMnB4IDBweCByZ2JhKDAsIDAsIDAsIDAuMTQpLDBweCAxcHggNXB4IDBweCByZ2JhKDAsIDAsIDAsIDAuMTIpfS5tYXQtZWxldmF0aW9uLXozW19uZ2NvbnRlbnQtJUNPTVAlXXtib3gtc2hhZG93OjBweCAzcHggM3B4IC0ycHggcmdiYSgwLCAwLCAwLCAwLjIpLDBweCAzcHggNHB4IDBweCByZ2JhKDAsIDAsIDAsIDAuMTQpLDBweCAxcHggOHB4IDBweCByZ2JhKDAsIDAsIDAsIDAuMTIpfS5tYXQtZWxldmF0aW9uLXo0W19uZ2NvbnRlbnQtJUNPTVAlXXtib3gtc2hhZG93OjBweCAycHggNHB4IC0xcHggcmdiYSgwLCAwLCAwLCAwLjIpLDBweCA0cHggNXB4IDBweCByZ2JhKDAsIDAsIDAsIDAuMTQpLDBweCAxcHggMTBweCAwcHggcmdiYSgwLCAwLCAwLCAwLjEyKX0ubWF0LWVsZXZhdGlvbi16NVtfbmdjb250ZW50LSVDT01QJV17Ym94LXNoYWRvdzowcHggM3B4IDVweCAtMXB4IHJnYmEoMCwgMCwgMCwgMC4yKSwwcHggNXB4IDhweCAwcHggcmdiYSgwLCAwLCAwLCAwLjE0KSwwcHggMXB4IDE0cHggMHB4IHJnYmEoMCwgMCwgMCwgMC4xMil9Lm1hdC1lbGV2YXRpb24tejZbX25nY29udGVudC0lQ09NUCVde2JveC1zaGFkb3c6MHB4IDNweCA1cHggLTFweCByZ2JhKDAsIDAsIDAsIDAuMiksMHB4IDZweCAxMHB4IDBweCByZ2JhKDAsIDAsIDAsIDAuMTQpLDBweCAxcHggMThweCAwcHggcmdiYSgwLCAwLCAwLCAwLjEyKX0ubWF0LWVsZXZhdGlvbi16N1tfbmdjb250ZW50LSVDT01QJV17Ym94LXNoYWRvdzowcHggNHB4IDVweCAtMnB4IHJnYmEoMCwgMCwgMCwgMC4yKSwwcHggN3B4IDEwcHggMXB4IHJnYmEoMCwgMCwgMCwgMC4xNCksMHB4IDJweCAxNnB4IDFweCByZ2JhKDAsIDAsIDAsIDAuMTIpfS5tYXQtZWxldmF0aW9uLXo4W19uZ2NvbnRlbnQtJUNPTVAlXXtib3gtc2hhZG93OjBweCA1cHggNXB4IC0zcHggcmdiYSgwLCAwLCAwLCAwLjIpLDBweCA4cHggMTBweCAxcHggcmdiYSgwLCAwLCAwLCAwLjE0KSwwcHggM3B4IDE0cHggMnB4IHJnYmEoMCwgMCwgMCwgMC4xMil9Lm1hdC1lbGV2YXRpb24tejlbX25nY29udGVudC0lQ09NUCVde2JveC1zaGFkb3c6MHB4IDVweCA2cHggLTNweCByZ2JhKDAsIDAsIDAsIDAuMiksMHB4IDlweCAxMnB4IDFweCByZ2JhKDAsIDAsIDAsIDAuMTQpLDBweCAzcHggMTZweCAycHggcmdiYSgwLCAwLCAwLCAwLjEyKX0ubWF0LWVsZXZhdGlvbi16MTBbX25nY29udGVudC0lQ09NUCVde2JveC1zaGFkb3c6MHB4IDZweCA2cHggLTNweCByZ2JhKDAsIDAsIDAsIDAuMiksMHB4IDEwcHggMTRweCAxcHggcmdiYSgwLCAwLCAwLCAwLjE0KSwwcHggNHB4IDE4cHggM3B4IHJnYmEoMCwgMCwgMCwgMC4xMil9Lm1hdC1lbGV2YXRpb24tejExW19uZ2NvbnRlbnQtJUNPTVAlXXtib3gtc2hhZG93OjBweCA2cHggN3B4IC00cHggcmdiYSgwLCAwLCAwLCAwLjIpLDBweCAxMXB4IDE1cHggMXB4IHJnYmEoMCwgMCwgMCwgMC4xNCksMHB4IDRweCAyMHB4IDNweCByZ2JhKDAsIDAsIDAsIDAuMTIpfS5tYXQtZWxldmF0aW9uLXoxMltfbmdjb250ZW50LSVDT01QJV17Ym94LXNoYWRvdzowcHggN3B4IDhweCAtNHB4IHJnYmEoMCwgMCwgMCwgMC4yKSwwcHggMTJweCAxN3B4IDJweCByZ2JhKDAsIDAsIDAsIDAuMTQpLDBweCA1cHggMjJweCA0cHggcmdiYSgwLCAwLCAwLCAwLjEyKX0ubWF0LWVsZXZhdGlvbi16MTNbX25nY29udGVudC0lQ09NUCVde2JveC1zaGFkb3c6MHB4IDdweCA4cHggLTRweCByZ2JhKDAsIDAsIDAsIDAuMiksMHB4IDEzcHggMTlweCAycHggcmdiYSgwLCAwLCAwLCAwLjE0KSwwcHggNXB4IDI0cHggNHB4IHJnYmEoMCwgMCwgMCwgMC4xMil9Lm1hdC1lbGV2YXRpb24tejE0W19uZ2NvbnRlbnQtJUNPTVAlXXtib3gtc2hhZG93OjBweCA3cHggOXB4IC00cHggcmdiYSgwLCAwLCAwLCAwLjIpLDBweCAxNHB4IDIxcHggMnB4IHJnYmEoMCwgMCwgMCwgMC4xNCksMHB4IDVweCAyNnB4IDRweCByZ2JhKDAsIDAsIDAsIDAuMTIpfS5tYXQtZWxldmF0aW9uLXoxNVtfbmdjb250ZW50LSVDT01QJV17Ym94LXNoYWRvdzowcHggOHB4IDlweCAtNXB4IHJnYmEoMCwgMCwgMCwgMC4yKSwwcHggMTVweCAyMnB4IDJweCByZ2JhKDAsIDAsIDAsIDAuMTQpLDBweCA2cHggMjhweCA1cHggcmdiYSgwLCAwLCAwLCAwLjEyKX0ubWF0LWVsZXZhdGlvbi16MTZbX25nY29udGVudC0lQ09NUCVde2JveC1zaGFkb3c6MHB4IDhweCAxMHB4IC01cHggcmdiYSgwLCAwLCAwLCAwLjIpLDBweCAxNnB4IDI0cHggMnB4IHJnYmEoMCwgMCwgMCwgMC4xNCksMHB4IDZweCAzMHB4IDVweCByZ2JhKDAsIDAsIDAsIDAuMTIpfS5tYXQtZWxldmF0aW9uLXoxN1tfbmdjb250ZW50LSVDT01QJV17Ym94LXNoYWRvdzowcHggOHB4IDExcHggLTVweCByZ2JhKDAsIDAsIDAsIDAuMiksMHB4IDE3cHggMjZweCAycHggcmdiYSgwLCAwLCAwLCAwLjE0KSwwcHggNnB4IDMycHggNXB4IHJnYmEoMCwgMCwgMCwgMC4xMil9Lm1hdC1lbGV2YXRpb24tejE4W19uZ2NvbnRlbnQtJUNPTVAlXXtib3gtc2hhZG93OjBweCA5cHggMTFweCAtNXB4IHJnYmEoMCwgMCwgMCwgMC4yKSwwcHggMThweCAyOHB4IDJweCByZ2JhKDAsIDAsIDAsIDAuMTQpLDBweCA3cHggMzRweCA2cHggcmdiYSgwLCAwLCAwLCAwLjEyKX0ubWF0LWVsZXZhdGlvbi16MTlbX25nY29udGVudC0lQ09NUCVde2JveC1zaGFkb3c6MHB4IDlweCAxMnB4IC02cHggcmdiYSgwLCAwLCAwLCAwLjIpLDBweCAxOXB4IDI5cHggMnB4IHJnYmEoMCwgMCwgMCwgMC4xNCksMHB4IDdweCAzNnB4IDZweCByZ2JhKDAsIDAsIDAsIDAuMTIpfS5tYXQtZWxldmF0aW9uLXoyMFtfbmdjb250ZW50LSVDT01QJV17Ym94LXNoYWRvdzowcHggMTBweCAxM3B4IC02cHggcmdiYSgwLCAwLCAwLCAwLjIpLDBweCAyMHB4IDMxcHggM3B4IHJnYmEoMCwgMCwgMCwgMC4xNCksMHB4IDhweCAzOHB4IDdweCByZ2JhKDAsIDAsIDAsIDAuMTIpfS5tYXQtZWxldmF0aW9uLXoyMVtfbmdjb250ZW50LSVDT01QJV17Ym94LXNoYWRvdzowcHggMTBweCAxM3B4IC02cHggcmdiYSgwLCAwLCAwLCAwLjIpLDBweCAyMXB4IDMzcHggM3B4IHJnYmEoMCwgMCwgMCwgMC4xNCksMHB4IDhweCA0MHB4IDdweCByZ2JhKDAsIDAsIDAsIDAuMTIpfS5tYXQtZWxldmF0aW9uLXoyMltfbmdjb250ZW50LSVDT01QJV17Ym94LXNoYWRvdzowcHggMTBweCAxNHB4IC02cHggcmdiYSgwLCAwLCAwLCAwLjIpLDBweCAyMnB4IDM1cHggM3B4IHJnYmEoMCwgMCwgMCwgMC4xNCksMHB4IDhweCA0MnB4IDdweCByZ2JhKDAsIDAsIDAsIDAuMTIpfS5tYXQtZWxldmF0aW9uLXoyM1tfbmdjb250ZW50LSVDT01QJV17Ym94LXNoYWRvdzowcHggMTFweCAxNHB4IC03cHggcmdiYSgwLCAwLCAwLCAwLjIpLDBweCAyM3B4IDM2cHggM3B4IHJnYmEoMCwgMCwgMCwgMC4xNCksMHB4IDlweCA0NHB4IDhweCByZ2JhKDAsIDAsIDAsIDAuMTIpfS5tYXQtZWxldmF0aW9uLXoyNFtfbmdjb250ZW50LSVDT01QJV17Ym94LXNoYWRvdzowcHggMTFweCAxNXB4IC03cHggcmdiYSgwLCAwLCAwLCAwLjIpLDBweCAyNHB4IDM4cHggM3B4IHJnYmEoMCwgMCwgMCwgMC4xNCksMHB4IDlweCA0NnB4IDhweCByZ2JhKDAsIDAsIDAsIDAuMTIpfS5tYXQtdGhlbWUtbG9hZGVkLW1hcmtlcltfbmdjb250ZW50LSVDT01QJV17ZGlzcGxheTpub25lfS5tYXQtYXV0b2NvbXBsZXRlLXBhbmVsW19uZ2NvbnRlbnQtJUNPTVAlXXtiYWNrZ3JvdW5kOiNmZmY7Y29sb3I6IzIxMjEyMX0ubWF0LWF1dG9jb21wbGV0ZS1wYW5lbFtfbmdjb250ZW50LSVDT01QJV06bm90KFtjbGFzcyo9bWF0LWVsZXZhdGlvbi16XSl7Ym94LXNoYWRvdzowcHggMnB4IDRweCAtMXB4IHJnYmEoMCwgMCwgMCwgMC4yKSwwcHggNHB4IDVweCAwcHggcmdiYSgwLCAwLCAwLCAwLjE0KSwwcHggMXB4IDEwcHggMHB4IHJnYmEoMCwgMCwgMCwgMC4xMil9Lm1hdC1hdXRvY29tcGxldGUtcGFuZWxbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1vcHRpb24ubWF0LXNlbGVjdGVkW19uZ2NvbnRlbnQtJUNPTVAlXTpub3QoLm1hdC1hY3RpdmUpOm5vdCg6aG92ZXIpe2JhY2tncm91bmQ6I2ZmZn0ubWF0LWF1dG9jb21wbGV0ZS1wYW5lbFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LW9wdGlvbi5tYXQtc2VsZWN0ZWRbX25nY29udGVudC0lQ09NUCVdOm5vdCgubWF0LWFjdGl2ZSk6bm90KDpob3Zlcik6bm90KC5tYXQtb3B0aW9uLWRpc2FibGVkKXtjb2xvcjojMjEyMTIxfS5tYXQtYmFkZ2UtY29udGVudFtfbmdjb250ZW50LSVDT01QJV17Y29sb3I6I2ZmZjtiYWNrZ3JvdW5kOiNmNTdjMDB9LmNkay1oaWdoLWNvbnRyYXN0LWFjdGl2ZVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWJhZGdlLWNvbnRlbnRbX25nY29udGVudC0lQ09NUCVde291dGxpbmU6c29saWQgMXB4O2JvcmRlci1yYWRpdXM6MH0ubWF0LWJhZGdlLWFjY2VudFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWJhZGdlLWNvbnRlbnRbX25nY29udGVudC0lQ09NUCVde2JhY2tncm91bmQ6I2ZmOTgwMDtjb2xvcjojZmZmfS5tYXQtYmFkZ2Utd2Fybltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWJhZGdlLWNvbnRlbnRbX25nY29udGVudC0lQ09NUCVde2NvbG9yOiNmZmY7YmFja2dyb3VuZDojZjQ0MzM2fS5tYXQtYmFkZ2VbX25nY29udGVudC0lQ09NUCVde3Bvc2l0aW9uOnJlbGF0aXZlfS5tYXQtYmFkZ2UtaGlkZGVuW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtYmFkZ2UtY29udGVudFtfbmdjb250ZW50LSVDT01QJV17ZGlzcGxheTpub25lfS5tYXQtYmFkZ2UtZGlzYWJsZWRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1iYWRnZS1jb250ZW50W19uZ2NvbnRlbnQtJUNPTVAlXXtiYWNrZ3JvdW5kOiNiOWI5Yjk7Y29sb3I6Izc1NzU3NX0ubWF0LWJhZGdlLWNvbnRlbnRbX25nY29udGVudC0lQ09NUCVde3Bvc2l0aW9uOmFic29sdXRlO3RleHQtYWxpZ246Y2VudGVyO2Rpc3BsYXk6aW5saW5lLWJsb2NrO2JvcmRlci1yYWRpdXM6NTAlO3RyYW5zaXRpb246dHJhbnNmb3JtIDIwMG1zIGVhc2UtaW4tb3V0O3RyYW5zZm9ybTpzY2FsZSgwLjYpO292ZXJmbG93OmhpZGRlbjt3aGl0ZS1zcGFjZTpub3dyYXA7dGV4dC1vdmVyZmxvdzplbGxpcHNpcztwb2ludGVyLWV2ZW50czpub25lfS5uZy1hbmltYXRlLWRpc2FibGVkW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtYmFkZ2UtY29udGVudFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtYmFkZ2UtY29udGVudC5fbWF0LWFuaW1hdGlvbi1ub29wYWJsZVtfbmdjb250ZW50LSVDT01QJV17dHJhbnNpdGlvbjpub25lfS5tYXQtYmFkZ2UtY29udGVudC5tYXQtYmFkZ2UtYWN0aXZlW19uZ2NvbnRlbnQtJUNPTVAlXXt0cmFuc2Zvcm06bm9uZX0ubWF0LWJhZGdlLXNtYWxsW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtYmFkZ2UtY29udGVudFtfbmdjb250ZW50LSVDT01QJV17d2lkdGg6MTZweDtoZWlnaHQ6MTZweDtsaW5lLWhlaWdodDoxNnB4fS5tYXQtYmFkZ2Utc21hbGwubWF0LWJhZGdlLWFib3ZlW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtYmFkZ2UtY29udGVudFtfbmdjb250ZW50LSVDT01QJV17dG9wOi04cHh9Lm1hdC1iYWRnZS1zbWFsbC5tYXQtYmFkZ2UtYmVsb3dbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1iYWRnZS1jb250ZW50W19uZ2NvbnRlbnQtJUNPTVAlXXtib3R0b206LThweH0ubWF0LWJhZGdlLXNtYWxsLm1hdC1iYWRnZS1iZWZvcmVbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1iYWRnZS1jb250ZW50W19uZ2NvbnRlbnQtJUNPTVAlXXtsZWZ0Oi0xNnB4fVtkaXI9cnRsXVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWJhZGdlLXNtYWxsLm1hdC1iYWRnZS1iZWZvcmVbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1iYWRnZS1jb250ZW50W19uZ2NvbnRlbnQtJUNPTVAlXXtsZWZ0OmF1dG87cmlnaHQ6LTE2cHh9Lm1hdC1iYWRnZS1zbWFsbC5tYXQtYmFkZ2UtYWZ0ZXJbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1iYWRnZS1jb250ZW50W19uZ2NvbnRlbnQtJUNPTVAlXXtyaWdodDotMTZweH1bZGlyPXJ0bF1bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1iYWRnZS1zbWFsbC5tYXQtYmFkZ2UtYWZ0ZXJbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1iYWRnZS1jb250ZW50W19uZ2NvbnRlbnQtJUNPTVAlXXtyaWdodDphdXRvO2xlZnQ6LTE2cHh9Lm1hdC1iYWRnZS1zbWFsbC5tYXQtYmFkZ2Utb3ZlcmxhcC5tYXQtYmFkZ2UtYmVmb3JlW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtYmFkZ2UtY29udGVudFtfbmdjb250ZW50LSVDT01QJV17bGVmdDotOHB4fVtkaXI9cnRsXVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWJhZGdlLXNtYWxsLm1hdC1iYWRnZS1vdmVybGFwLm1hdC1iYWRnZS1iZWZvcmVbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1iYWRnZS1jb250ZW50W19uZ2NvbnRlbnQtJUNPTVAlXXtsZWZ0OmF1dG87cmlnaHQ6LThweH0ubWF0LWJhZGdlLXNtYWxsLm1hdC1iYWRnZS1vdmVybGFwLm1hdC1iYWRnZS1hZnRlcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWJhZGdlLWNvbnRlbnRbX25nY29udGVudC0lQ09NUCVde3JpZ2h0Oi04cHh9W2Rpcj1ydGxdW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtYmFkZ2Utc21hbGwubWF0LWJhZGdlLW92ZXJsYXAubWF0LWJhZGdlLWFmdGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtYmFkZ2UtY29udGVudFtfbmdjb250ZW50LSVDT01QJV17cmlnaHQ6YXV0bztsZWZ0Oi04cHh9Lm1hdC1iYWRnZS1tZWRpdW1bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1iYWRnZS1jb250ZW50W19uZ2NvbnRlbnQtJUNPTVAlXXt3aWR0aDoyMnB4O2hlaWdodDoyMnB4O2xpbmUtaGVpZ2h0OjIycHh9Lm1hdC1iYWRnZS1tZWRpdW0ubWF0LWJhZGdlLWFib3ZlW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtYmFkZ2UtY29udGVudFtfbmdjb250ZW50LSVDT01QJV17dG9wOi0xMXB4fS5tYXQtYmFkZ2UtbWVkaXVtLm1hdC1iYWRnZS1iZWxvd1tfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWJhZGdlLWNvbnRlbnRbX25nY29udGVudC0lQ09NUCVde2JvdHRvbTotMTFweH0ubWF0LWJhZGdlLW1lZGl1bS5tYXQtYmFkZ2UtYmVmb3JlW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtYmFkZ2UtY29udGVudFtfbmdjb250ZW50LSVDT01QJV17bGVmdDotMjJweH1bZGlyPXJ0bF1bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1iYWRnZS1tZWRpdW0ubWF0LWJhZGdlLWJlZm9yZVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWJhZGdlLWNvbnRlbnRbX25nY29udGVudC0lQ09NUCVde2xlZnQ6YXV0bztyaWdodDotMjJweH0ubWF0LWJhZGdlLW1lZGl1bS5tYXQtYmFkZ2UtYWZ0ZXJbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1iYWRnZS1jb250ZW50W19uZ2NvbnRlbnQtJUNPTVAlXXtyaWdodDotMjJweH1bZGlyPXJ0bF1bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1iYWRnZS1tZWRpdW0ubWF0LWJhZGdlLWFmdGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtYmFkZ2UtY29udGVudFtfbmdjb250ZW50LSVDT01QJV17cmlnaHQ6YXV0bztsZWZ0Oi0yMnB4fS5tYXQtYmFkZ2UtbWVkaXVtLm1hdC1iYWRnZS1vdmVybGFwLm1hdC1iYWRnZS1iZWZvcmVbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1iYWRnZS1jb250ZW50W19uZ2NvbnRlbnQtJUNPTVAlXXtsZWZ0Oi0xMXB4fVtkaXI9cnRsXVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWJhZGdlLW1lZGl1bS5tYXQtYmFkZ2Utb3ZlcmxhcC5tYXQtYmFkZ2UtYmVmb3JlW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtYmFkZ2UtY29udGVudFtfbmdjb250ZW50LSVDT01QJV17bGVmdDphdXRvO3JpZ2h0Oi0xMXB4fS5tYXQtYmFkZ2UtbWVkaXVtLm1hdC1iYWRnZS1vdmVybGFwLm1hdC1iYWRnZS1hZnRlcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWJhZGdlLWNvbnRlbnRbX25nY29udGVudC0lQ09NUCVde3JpZ2h0Oi0xMXB4fVtkaXI9cnRsXVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWJhZGdlLW1lZGl1bS5tYXQtYmFkZ2Utb3ZlcmxhcC5tYXQtYmFkZ2UtYWZ0ZXJbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1iYWRnZS1jb250ZW50W19uZ2NvbnRlbnQtJUNPTVAlXXtyaWdodDphdXRvO2xlZnQ6LTExcHh9Lm1hdC1iYWRnZS1sYXJnZVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWJhZGdlLWNvbnRlbnRbX25nY29udGVudC0lQ09NUCVde3dpZHRoOjI4cHg7aGVpZ2h0OjI4cHg7bGluZS1oZWlnaHQ6MjhweH0ubWF0LWJhZGdlLWxhcmdlLm1hdC1iYWRnZS1hYm92ZVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWJhZGdlLWNvbnRlbnRbX25nY29udGVudC0lQ09NUCVde3RvcDotMTRweH0ubWF0LWJhZGdlLWxhcmdlLm1hdC1iYWRnZS1iZWxvd1tfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWJhZGdlLWNvbnRlbnRbX25nY29udGVudC0lQ09NUCVde2JvdHRvbTotMTRweH0ubWF0LWJhZGdlLWxhcmdlLm1hdC1iYWRnZS1iZWZvcmVbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1iYWRnZS1jb250ZW50W19uZ2NvbnRlbnQtJUNPTVAlXXtsZWZ0Oi0yOHB4fVtkaXI9cnRsXVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWJhZGdlLWxhcmdlLm1hdC1iYWRnZS1iZWZvcmVbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1iYWRnZS1jb250ZW50W19uZ2NvbnRlbnQtJUNPTVAlXXtsZWZ0OmF1dG87cmlnaHQ6LTI4cHh9Lm1hdC1iYWRnZS1sYXJnZS5tYXQtYmFkZ2UtYWZ0ZXJbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1iYWRnZS1jb250ZW50W19uZ2NvbnRlbnQtJUNPTVAlXXtyaWdodDotMjhweH1bZGlyPXJ0bF1bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1iYWRnZS1sYXJnZS5tYXQtYmFkZ2UtYWZ0ZXJbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1iYWRnZS1jb250ZW50W19uZ2NvbnRlbnQtJUNPTVAlXXtyaWdodDphdXRvO2xlZnQ6LTI4cHh9Lm1hdC1iYWRnZS1sYXJnZS5tYXQtYmFkZ2Utb3ZlcmxhcC5tYXQtYmFkZ2UtYmVmb3JlW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtYmFkZ2UtY29udGVudFtfbmdjb250ZW50LSVDT01QJV17bGVmdDotMTRweH1bZGlyPXJ0bF1bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1iYWRnZS1sYXJnZS5tYXQtYmFkZ2Utb3ZlcmxhcC5tYXQtYmFkZ2UtYmVmb3JlW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtYmFkZ2UtY29udGVudFtfbmdjb250ZW50LSVDT01QJV17bGVmdDphdXRvO3JpZ2h0Oi0xNHB4fS5tYXQtYmFkZ2UtbGFyZ2UubWF0LWJhZGdlLW92ZXJsYXAubWF0LWJhZGdlLWFmdGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtYmFkZ2UtY29udGVudFtfbmdjb250ZW50LSVDT01QJV17cmlnaHQ6LTE0cHh9W2Rpcj1ydGxdW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtYmFkZ2UtbGFyZ2UubWF0LWJhZGdlLW92ZXJsYXAubWF0LWJhZGdlLWFmdGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtYmFkZ2UtY29udGVudFtfbmdjb250ZW50LSVDT01QJV17cmlnaHQ6YXV0bztsZWZ0Oi0xNHB4fS5tYXQtYm90dG9tLXNoZWV0LWNvbnRhaW5lcltfbmdjb250ZW50LSVDT01QJV17Ym94LXNoYWRvdzowcHggOHB4IDEwcHggLTVweCByZ2JhKDAsIDAsIDAsIDAuMiksMHB4IDE2cHggMjRweCAycHggcmdiYSgwLCAwLCAwLCAwLjE0KSwwcHggNnB4IDMwcHggNXB4IHJnYmEoMCwgMCwgMCwgMC4xMik7YmFja2dyb3VuZDojZmZmO2NvbG9yOiMyMTIxMjF9Lm1hdC1idXR0b25bX25nY29udGVudC0lQ09NUCVdLCAubWF0LWljb24tYnV0dG9uW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1zdHJva2VkLWJ1dHRvbltfbmdjb250ZW50LSVDT01QJV17Y29sb3I6aW5oZXJpdDtiYWNrZ3JvdW5kOnRyYW5zcGFyZW50fS5tYXQtYnV0dG9uLm1hdC1wcmltYXJ5W19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1pY29uLWJ1dHRvbi5tYXQtcHJpbWFyeVtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtc3Ryb2tlZC1idXR0b24ubWF0LXByaW1hcnlbX25nY29udGVudC0lQ09NUCVde2NvbG9yOiNmNTdjMDB9Lm1hdC1idXR0b24ubWF0LWFjY2VudFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtaWNvbi1idXR0b24ubWF0LWFjY2VudFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtc3Ryb2tlZC1idXR0b24ubWF0LWFjY2VudFtfbmdjb250ZW50LSVDT01QJV17Y29sb3I6I2ZmOTgwMH0ubWF0LWJ1dHRvbi5tYXQtd2Fybltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtaWNvbi1idXR0b24ubWF0LXdhcm5bX25nY29udGVudC0lQ09NUCVdLCAubWF0LXN0cm9rZWQtYnV0dG9uLm1hdC13YXJuW19uZ2NvbnRlbnQtJUNPTVAlXXtjb2xvcjojZjQ0MzM2fS5tYXQtYnV0dG9uLm1hdC1wcmltYXJ5Lm1hdC1idXR0b24tZGlzYWJsZWRbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWJ1dHRvbi5tYXQtYWNjZW50Lm1hdC1idXR0b24tZGlzYWJsZWRbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWJ1dHRvbi5tYXQtd2Fybi5tYXQtYnV0dG9uLWRpc2FibGVkW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1idXR0b24ubWF0LWJ1dHRvbi1kaXNhYmxlZC5tYXQtYnV0dG9uLWRpc2FibGVkW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1pY29uLWJ1dHRvbi5tYXQtcHJpbWFyeS5tYXQtYnV0dG9uLWRpc2FibGVkW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1pY29uLWJ1dHRvbi5tYXQtYWNjZW50Lm1hdC1idXR0b24tZGlzYWJsZWRbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWljb24tYnV0dG9uLm1hdC13YXJuLm1hdC1idXR0b24tZGlzYWJsZWRbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWljb24tYnV0dG9uLm1hdC1idXR0b24tZGlzYWJsZWQubWF0LWJ1dHRvbi1kaXNhYmxlZFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtc3Ryb2tlZC1idXR0b24ubWF0LXByaW1hcnkubWF0LWJ1dHRvbi1kaXNhYmxlZFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtc3Ryb2tlZC1idXR0b24ubWF0LWFjY2VudC5tYXQtYnV0dG9uLWRpc2FibGVkW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1zdHJva2VkLWJ1dHRvbi5tYXQtd2Fybi5tYXQtYnV0dG9uLWRpc2FibGVkW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1zdHJva2VkLWJ1dHRvbi5tYXQtYnV0dG9uLWRpc2FibGVkLm1hdC1idXR0b24tZGlzYWJsZWRbX25nY29udGVudC0lQ09NUCVde2NvbG9yOnJnYmEoMCwwLDAsLjI2KX0ubWF0LWJ1dHRvbi5tYXQtcHJpbWFyeVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWJ1dHRvbi1mb2N1cy1vdmVybGF5W19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1pY29uLWJ1dHRvbi5tYXQtcHJpbWFyeVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWJ1dHRvbi1mb2N1cy1vdmVybGF5W19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1zdHJva2VkLWJ1dHRvbi5tYXQtcHJpbWFyeVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWJ1dHRvbi1mb2N1cy1vdmVybGF5W19uZ2NvbnRlbnQtJUNPTVAlXXtiYWNrZ3JvdW5kLWNvbG9yOiNmNTdjMDB9Lm1hdC1idXR0b24ubWF0LWFjY2VudFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWJ1dHRvbi1mb2N1cy1vdmVybGF5W19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1pY29uLWJ1dHRvbi5tYXQtYWNjZW50W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtYnV0dG9uLWZvY3VzLW92ZXJsYXlbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXN0cm9rZWQtYnV0dG9uLm1hdC1hY2NlbnRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1idXR0b24tZm9jdXMtb3ZlcmxheVtfbmdjb250ZW50LSVDT01QJV17YmFja2dyb3VuZC1jb2xvcjojZmY5ODAwfS5tYXQtYnV0dG9uLm1hdC13YXJuW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtYnV0dG9uLWZvY3VzLW92ZXJsYXlbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWljb24tYnV0dG9uLm1hdC13YXJuW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtYnV0dG9uLWZvY3VzLW92ZXJsYXlbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXN0cm9rZWQtYnV0dG9uLm1hdC13YXJuW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtYnV0dG9uLWZvY3VzLW92ZXJsYXlbX25nY29udGVudC0lQ09NUCVde2JhY2tncm91bmQtY29sb3I6I2Y0NDMzNn0ubWF0LWJ1dHRvbi5tYXQtYnV0dG9uLWRpc2FibGVkW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtYnV0dG9uLWZvY3VzLW92ZXJsYXlbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWljb24tYnV0dG9uLm1hdC1idXR0b24tZGlzYWJsZWRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1idXR0b24tZm9jdXMtb3ZlcmxheVtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtc3Ryb2tlZC1idXR0b24ubWF0LWJ1dHRvbi1kaXNhYmxlZFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWJ1dHRvbi1mb2N1cy1vdmVybGF5W19uZ2NvbnRlbnQtJUNPTVAlXXtiYWNrZ3JvdW5kLWNvbG9yOnRyYW5zcGFyZW50fS5tYXQtYnV0dG9uW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtcmlwcGxlLWVsZW1lbnRbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWljb24tYnV0dG9uW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtcmlwcGxlLWVsZW1lbnRbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXN0cm9rZWQtYnV0dG9uW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtcmlwcGxlLWVsZW1lbnRbX25nY29udGVudC0lQ09NUCVde29wYWNpdHk6LjE7YmFja2dyb3VuZC1jb2xvcjpjdXJyZW50Q29sb3J9Lm1hdC1idXR0b24tZm9jdXMtb3ZlcmxheVtfbmdjb250ZW50LSVDT01QJV17YmFja2dyb3VuZDojMDAwfS5tYXQtc3Ryb2tlZC1idXR0b25bX25nY29udGVudC0lQ09NUCVdOm5vdCgubWF0LWJ1dHRvbi1kaXNhYmxlZCl7Ym9yZGVyLWNvbG9yOnJnYmEoMCwwLDAsLjEyKX0ubWF0LWZsYXQtYnV0dG9uW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1yYWlzZWQtYnV0dG9uW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1mYWJbX25nY29udGVudC0lQ09NUCVdLCAubWF0LW1pbmktZmFiW19uZ2NvbnRlbnQtJUNPTVAlXXtjb2xvcjojMjEyMTIxO2JhY2tncm91bmQtY29sb3I6I2ZmZn0ubWF0LWZsYXQtYnV0dG9uLm1hdC1wcmltYXJ5W19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1yYWlzZWQtYnV0dG9uLm1hdC1wcmltYXJ5W19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1mYWIubWF0LXByaW1hcnlbX25nY29udGVudC0lQ09NUCVdLCAubWF0LW1pbmktZmFiLm1hdC1wcmltYXJ5W19uZ2NvbnRlbnQtJUNPTVAlXXtjb2xvcjojZmZmfS5tYXQtZmxhdC1idXR0b24ubWF0LWFjY2VudFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtcmFpc2VkLWJ1dHRvbi5tYXQtYWNjZW50W19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1mYWIubWF0LWFjY2VudFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtbWluaS1mYWIubWF0LWFjY2VudFtfbmdjb250ZW50LSVDT01QJV17Y29sb3I6I2ZmZn0ubWF0LWZsYXQtYnV0dG9uLm1hdC13YXJuW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1yYWlzZWQtYnV0dG9uLm1hdC13YXJuW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1mYWIubWF0LXdhcm5bX25nY29udGVudC0lQ09NUCVdLCAubWF0LW1pbmktZmFiLm1hdC13YXJuW19uZ2NvbnRlbnQtJUNPTVAlXXtjb2xvcjojZmZmfS5tYXQtZmxhdC1idXR0b24ubWF0LXByaW1hcnkubWF0LWJ1dHRvbi1kaXNhYmxlZFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtZmxhdC1idXR0b24ubWF0LWFjY2VudC5tYXQtYnV0dG9uLWRpc2FibGVkW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1mbGF0LWJ1dHRvbi5tYXQtd2Fybi5tYXQtYnV0dG9uLWRpc2FibGVkW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1mbGF0LWJ1dHRvbi5tYXQtYnV0dG9uLWRpc2FibGVkLm1hdC1idXR0b24tZGlzYWJsZWRbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXJhaXNlZC1idXR0b24ubWF0LXByaW1hcnkubWF0LWJ1dHRvbi1kaXNhYmxlZFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtcmFpc2VkLWJ1dHRvbi5tYXQtYWNjZW50Lm1hdC1idXR0b24tZGlzYWJsZWRbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXJhaXNlZC1idXR0b24ubWF0LXdhcm4ubWF0LWJ1dHRvbi1kaXNhYmxlZFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtcmFpc2VkLWJ1dHRvbi5tYXQtYnV0dG9uLWRpc2FibGVkLm1hdC1idXR0b24tZGlzYWJsZWRbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWZhYi5tYXQtcHJpbWFyeS5tYXQtYnV0dG9uLWRpc2FibGVkW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1mYWIubWF0LWFjY2VudC5tYXQtYnV0dG9uLWRpc2FibGVkW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1mYWIubWF0LXdhcm4ubWF0LWJ1dHRvbi1kaXNhYmxlZFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtZmFiLm1hdC1idXR0b24tZGlzYWJsZWQubWF0LWJ1dHRvbi1kaXNhYmxlZFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtbWluaS1mYWIubWF0LXByaW1hcnkubWF0LWJ1dHRvbi1kaXNhYmxlZFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtbWluaS1mYWIubWF0LWFjY2VudC5tYXQtYnV0dG9uLWRpc2FibGVkW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1taW5pLWZhYi5tYXQtd2Fybi5tYXQtYnV0dG9uLWRpc2FibGVkW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1taW5pLWZhYi5tYXQtYnV0dG9uLWRpc2FibGVkLm1hdC1idXR0b24tZGlzYWJsZWRbX25nY29udGVudC0lQ09NUCVde2NvbG9yOnJnYmEoMCwwLDAsLjI2KX0ubWF0LWZsYXQtYnV0dG9uLm1hdC1wcmltYXJ5W19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1yYWlzZWQtYnV0dG9uLm1hdC1wcmltYXJ5W19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1mYWIubWF0LXByaW1hcnlbX25nY29udGVudC0lQ09NUCVdLCAubWF0LW1pbmktZmFiLm1hdC1wcmltYXJ5W19uZ2NvbnRlbnQtJUNPTVAlXXtiYWNrZ3JvdW5kLWNvbG9yOiNmNTdjMDB9Lm1hdC1mbGF0LWJ1dHRvbi5tYXQtYWNjZW50W19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1yYWlzZWQtYnV0dG9uLm1hdC1hY2NlbnRbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWZhYi5tYXQtYWNjZW50W19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1taW5pLWZhYi5tYXQtYWNjZW50W19uZ2NvbnRlbnQtJUNPTVAlXXtiYWNrZ3JvdW5kLWNvbG9yOiNmZjk4MDB9Lm1hdC1mbGF0LWJ1dHRvbi5tYXQtd2Fybltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtcmFpc2VkLWJ1dHRvbi5tYXQtd2Fybltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtZmFiLm1hdC13YXJuW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1taW5pLWZhYi5tYXQtd2Fybltfbmdjb250ZW50LSVDT01QJV17YmFja2dyb3VuZC1jb2xvcjojZjQ0MzM2fS5tYXQtZmxhdC1idXR0b24ubWF0LXByaW1hcnkubWF0LWJ1dHRvbi1kaXNhYmxlZFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtZmxhdC1idXR0b24ubWF0LWFjY2VudC5tYXQtYnV0dG9uLWRpc2FibGVkW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1mbGF0LWJ1dHRvbi5tYXQtd2Fybi5tYXQtYnV0dG9uLWRpc2FibGVkW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1mbGF0LWJ1dHRvbi5tYXQtYnV0dG9uLWRpc2FibGVkLm1hdC1idXR0b24tZGlzYWJsZWRbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXJhaXNlZC1idXR0b24ubWF0LXByaW1hcnkubWF0LWJ1dHRvbi1kaXNhYmxlZFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtcmFpc2VkLWJ1dHRvbi5tYXQtYWNjZW50Lm1hdC1idXR0b24tZGlzYWJsZWRbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXJhaXNlZC1idXR0b24ubWF0LXdhcm4ubWF0LWJ1dHRvbi1kaXNhYmxlZFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtcmFpc2VkLWJ1dHRvbi5tYXQtYnV0dG9uLWRpc2FibGVkLm1hdC1idXR0b24tZGlzYWJsZWRbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWZhYi5tYXQtcHJpbWFyeS5tYXQtYnV0dG9uLWRpc2FibGVkW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1mYWIubWF0LWFjY2VudC5tYXQtYnV0dG9uLWRpc2FibGVkW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1mYWIubWF0LXdhcm4ubWF0LWJ1dHRvbi1kaXNhYmxlZFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtZmFiLm1hdC1idXR0b24tZGlzYWJsZWQubWF0LWJ1dHRvbi1kaXNhYmxlZFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtbWluaS1mYWIubWF0LXByaW1hcnkubWF0LWJ1dHRvbi1kaXNhYmxlZFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtbWluaS1mYWIubWF0LWFjY2VudC5tYXQtYnV0dG9uLWRpc2FibGVkW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1taW5pLWZhYi5tYXQtd2Fybi5tYXQtYnV0dG9uLWRpc2FibGVkW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1taW5pLWZhYi5tYXQtYnV0dG9uLWRpc2FibGVkLm1hdC1idXR0b24tZGlzYWJsZWRbX25nY29udGVudC0lQ09NUCVde2JhY2tncm91bmQtY29sb3I6cmdiYSgwLDAsMCwuMTIpfS5tYXQtZmxhdC1idXR0b24ubWF0LXByaW1hcnlbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1yaXBwbGUtZWxlbWVudFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtcmFpc2VkLWJ1dHRvbi5tYXQtcHJpbWFyeVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXJpcHBsZS1lbGVtZW50W19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1mYWIubWF0LXByaW1hcnlbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1yaXBwbGUtZWxlbWVudFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtbWluaS1mYWIubWF0LXByaW1hcnlbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1yaXBwbGUtZWxlbWVudFtfbmdjb250ZW50LSVDT01QJV17YmFja2dyb3VuZC1jb2xvcjpyZ2JhKDI1NSwyNTUsMjU1LC4xKX0ubWF0LWZsYXQtYnV0dG9uLm1hdC1hY2NlbnRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1yaXBwbGUtZWxlbWVudFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtcmFpc2VkLWJ1dHRvbi5tYXQtYWNjZW50W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtcmlwcGxlLWVsZW1lbnRbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWZhYi5tYXQtYWNjZW50W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtcmlwcGxlLWVsZW1lbnRbX25nY29udGVudC0lQ09NUCVdLCAubWF0LW1pbmktZmFiLm1hdC1hY2NlbnRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1yaXBwbGUtZWxlbWVudFtfbmdjb250ZW50LSVDT01QJV17YmFja2dyb3VuZC1jb2xvcjpyZ2JhKDI1NSwyNTUsMjU1LC4xKX0ubWF0LWZsYXQtYnV0dG9uLm1hdC13YXJuW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtcmlwcGxlLWVsZW1lbnRbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXJhaXNlZC1idXR0b24ubWF0LXdhcm5bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1yaXBwbGUtZWxlbWVudFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtZmFiLm1hdC13YXJuW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtcmlwcGxlLWVsZW1lbnRbX25nY29udGVudC0lQ09NUCVdLCAubWF0LW1pbmktZmFiLm1hdC13YXJuW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtcmlwcGxlLWVsZW1lbnRbX25nY29udGVudC0lQ09NUCVde2JhY2tncm91bmQtY29sb3I6cmdiYSgyNTUsMjU1LDI1NSwuMSl9Lm1hdC1zdHJva2VkLWJ1dHRvbltfbmdjb250ZW50LSVDT01QJV06bm90KFtjbGFzcyo9bWF0LWVsZXZhdGlvbi16XSksIC5tYXQtZmxhdC1idXR0b25bX25nY29udGVudC0lQ09NUCVdOm5vdChbY2xhc3MqPW1hdC1lbGV2YXRpb24tel0pe2JveC1zaGFkb3c6MHB4IDBweCAwcHggMHB4IHJnYmEoMCwgMCwgMCwgMC4yKSwwcHggMHB4IDBweCAwcHggcmdiYSgwLCAwLCAwLCAwLjE0KSwwcHggMHB4IDBweCAwcHggcmdiYSgwLCAwLCAwLCAwLjEyKX0ubWF0LXJhaXNlZC1idXR0b25bX25nY29udGVudC0lQ09NUCVdOm5vdChbY2xhc3MqPW1hdC1lbGV2YXRpb24tel0pe2JveC1zaGFkb3c6MHB4IDNweCAxcHggLTJweCByZ2JhKDAsIDAsIDAsIDAuMiksMHB4IDJweCAycHggMHB4IHJnYmEoMCwgMCwgMCwgMC4xNCksMHB4IDFweCA1cHggMHB4IHJnYmEoMCwgMCwgMCwgMC4xMil9Lm1hdC1yYWlzZWQtYnV0dG9uW19uZ2NvbnRlbnQtJUNPTVAlXTpub3QoLm1hdC1idXR0b24tZGlzYWJsZWQpOmFjdGl2ZTpub3QoW2NsYXNzKj1tYXQtZWxldmF0aW9uLXpdKXtib3gtc2hhZG93OjBweCA1cHggNXB4IC0zcHggcmdiYSgwLCAwLCAwLCAwLjIpLDBweCA4cHggMTBweCAxcHggcmdiYSgwLCAwLCAwLCAwLjE0KSwwcHggM3B4IDE0cHggMnB4IHJnYmEoMCwgMCwgMCwgMC4xMil9Lm1hdC1yYWlzZWQtYnV0dG9uLm1hdC1idXR0b24tZGlzYWJsZWRbX25nY29udGVudC0lQ09NUCVdOm5vdChbY2xhc3MqPW1hdC1lbGV2YXRpb24tel0pe2JveC1zaGFkb3c6MHB4IDBweCAwcHggMHB4IHJnYmEoMCwgMCwgMCwgMC4yKSwwcHggMHB4IDBweCAwcHggcmdiYSgwLCAwLCAwLCAwLjE0KSwwcHggMHB4IDBweCAwcHggcmdiYSgwLCAwLCAwLCAwLjEyKX0ubWF0LWZhYltfbmdjb250ZW50LSVDT01QJV06bm90KFtjbGFzcyo9bWF0LWVsZXZhdGlvbi16XSksIC5tYXQtbWluaS1mYWJbX25nY29udGVudC0lQ09NUCVdOm5vdChbY2xhc3MqPW1hdC1lbGV2YXRpb24tel0pe2JveC1zaGFkb3c6MHB4IDNweCA1cHggLTFweCByZ2JhKDAsIDAsIDAsIDAuMiksMHB4IDZweCAxMHB4IDBweCByZ2JhKDAsIDAsIDAsIDAuMTQpLDBweCAxcHggMThweCAwcHggcmdiYSgwLCAwLCAwLCAwLjEyKX0ubWF0LWZhYltfbmdjb250ZW50LSVDT01QJV06bm90KC5tYXQtYnV0dG9uLWRpc2FibGVkKTphY3RpdmU6bm90KFtjbGFzcyo9bWF0LWVsZXZhdGlvbi16XSksIC5tYXQtbWluaS1mYWJbX25nY29udGVudC0lQ09NUCVdOm5vdCgubWF0LWJ1dHRvbi1kaXNhYmxlZCk6YWN0aXZlOm5vdChbY2xhc3MqPW1hdC1lbGV2YXRpb24tel0pe2JveC1zaGFkb3c6MHB4IDdweCA4cHggLTRweCByZ2JhKDAsIDAsIDAsIDAuMiksMHB4IDEycHggMTdweCAycHggcmdiYSgwLCAwLCAwLCAwLjE0KSwwcHggNXB4IDIycHggNHB4IHJnYmEoMCwgMCwgMCwgMC4xMil9Lm1hdC1mYWIubWF0LWJ1dHRvbi1kaXNhYmxlZFtfbmdjb250ZW50LSVDT01QJV06bm90KFtjbGFzcyo9bWF0LWVsZXZhdGlvbi16XSksIC5tYXQtbWluaS1mYWIubWF0LWJ1dHRvbi1kaXNhYmxlZFtfbmdjb250ZW50LSVDT01QJV06bm90KFtjbGFzcyo9bWF0LWVsZXZhdGlvbi16XSl7Ym94LXNoYWRvdzowcHggMHB4IDBweCAwcHggcmdiYSgwLCAwLCAwLCAwLjIpLDBweCAwcHggMHB4IDBweCByZ2JhKDAsIDAsIDAsIDAuMTQpLDBweCAwcHggMHB4IDBweCByZ2JhKDAsIDAsIDAsIDAuMTIpfS5tYXQtYnV0dG9uLXRvZ2dsZS1zdGFuZGFsb25lW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1idXR0b24tdG9nZ2xlLWdyb3VwW19uZ2NvbnRlbnQtJUNPTVAlXXtib3gtc2hhZG93OjBweCAzcHggMXB4IC0ycHggcmdiYSgwLCAwLCAwLCAwLjIpLDBweCAycHggMnB4IDBweCByZ2JhKDAsIDAsIDAsIDAuMTQpLDBweCAxcHggNXB4IDBweCByZ2JhKDAsIDAsIDAsIDAuMTIpfS5tYXQtYnV0dG9uLXRvZ2dsZS1zdGFuZGFsb25lLm1hdC1idXR0b24tdG9nZ2xlLWFwcGVhcmFuY2Utc3RhbmRhcmRbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWJ1dHRvbi10b2dnbGUtZ3JvdXAtYXBwZWFyYW5jZS1zdGFuZGFyZFtfbmdjb250ZW50LSVDT01QJV17Ym94LXNoYWRvdzpub25lfS5tYXQtYnV0dG9uLXRvZ2dsZVtfbmdjb250ZW50LSVDT01QJV17Y29sb3I6cmdiYSgwLDAsMCwuMzgpfS5tYXQtYnV0dG9uLXRvZ2dsZVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWJ1dHRvbi10b2dnbGUtZm9jdXMtb3ZlcmxheVtfbmdjb250ZW50LSVDT01QJV17YmFja2dyb3VuZC1jb2xvcjpyZ2JhKDAsMCwwLC4xMil9Lm1hdC1idXR0b24tdG9nZ2xlLWFwcGVhcmFuY2Utc3RhbmRhcmRbX25nY29udGVudC0lQ09NUCVde2NvbG9yOiMyMTIxMjE7YmFja2dyb3VuZDojZmZmfS5tYXQtYnV0dG9uLXRvZ2dsZS1hcHBlYXJhbmNlLXN0YW5kYXJkW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtYnV0dG9uLXRvZ2dsZS1mb2N1cy1vdmVybGF5W19uZ2NvbnRlbnQtJUNPTVAlXXtiYWNrZ3JvdW5kLWNvbG9yOiMwMDB9Lm1hdC1idXR0b24tdG9nZ2xlLWdyb3VwLWFwcGVhcmFuY2Utc3RhbmRhcmRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1idXR0b24tdG9nZ2xlW19uZ2NvbnRlbnQtJUNPTVAlXSArIC5tYXQtYnV0dG9uLXRvZ2dsZVtfbmdjb250ZW50LSVDT01QJV17Ym9yZGVyLWxlZnQ6c29saWQgMXB4IHJnYmEoMCwwLDAsLjEyKX1bZGlyPXJ0bF1bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1idXR0b24tdG9nZ2xlLWdyb3VwLWFwcGVhcmFuY2Utc3RhbmRhcmRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1idXR0b24tdG9nZ2xlW19uZ2NvbnRlbnQtJUNPTVAlXSArIC5tYXQtYnV0dG9uLXRvZ2dsZVtfbmdjb250ZW50LSVDT01QJV17Ym9yZGVyLWxlZnQ6bm9uZTtib3JkZXItcmlnaHQ6c29saWQgMXB4IHJnYmEoMCwwLDAsLjEyKX0ubWF0LWJ1dHRvbi10b2dnbGUtZ3JvdXAtYXBwZWFyYW5jZS1zdGFuZGFyZC5tYXQtYnV0dG9uLXRvZ2dsZS12ZXJ0aWNhbFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWJ1dHRvbi10b2dnbGVbX25nY29udGVudC0lQ09NUCVdICsgLm1hdC1idXR0b24tdG9nZ2xlW19uZ2NvbnRlbnQtJUNPTVAlXXtib3JkZXItbGVmdDpub25lO2JvcmRlci1yaWdodDpub25lO2JvcmRlci10b3A6c29saWQgMXB4IHJnYmEoMCwwLDAsLjEyKX0ubWF0LWJ1dHRvbi10b2dnbGUtY2hlY2tlZFtfbmdjb250ZW50LSVDT01QJV17YmFja2dyb3VuZC1jb2xvcjojZTBlMGUwO2NvbG9yOiM2MTYxNjF9Lm1hdC1idXR0b24tdG9nZ2xlLWNoZWNrZWQubWF0LWJ1dHRvbi10b2dnbGUtYXBwZWFyYW5jZS1zdGFuZGFyZFtfbmdjb250ZW50LSVDT01QJV17Y29sb3I6IzIxMjEyMX0ubWF0LWJ1dHRvbi10b2dnbGUtZGlzYWJsZWRbX25nY29udGVudC0lQ09NUCVde2NvbG9yOnJnYmEoMCwwLDAsLjI2KTtiYWNrZ3JvdW5kLWNvbG9yOiNlZWV9Lm1hdC1idXR0b24tdG9nZ2xlLWRpc2FibGVkLm1hdC1idXR0b24tdG9nZ2xlLWFwcGVhcmFuY2Utc3RhbmRhcmRbX25nY29udGVudC0lQ09NUCVde2JhY2tncm91bmQ6I2ZmZn0ubWF0LWJ1dHRvbi10b2dnbGUtZGlzYWJsZWQubWF0LWJ1dHRvbi10b2dnbGUtY2hlY2tlZFtfbmdjb250ZW50LSVDT01QJV17YmFja2dyb3VuZC1jb2xvcjojYmRiZGJkfS5tYXQtYnV0dG9uLXRvZ2dsZS1zdGFuZGFsb25lLm1hdC1idXR0b24tdG9nZ2xlLWFwcGVhcmFuY2Utc3RhbmRhcmRbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWJ1dHRvbi10b2dnbGUtZ3JvdXAtYXBwZWFyYW5jZS1zdGFuZGFyZFtfbmdjb250ZW50LSVDT01QJV17Ym9yZGVyOnNvbGlkIDFweCByZ2JhKDAsMCwwLC4xMil9Lm1hdC1idXR0b24tdG9nZ2xlLWFwcGVhcmFuY2Utc3RhbmRhcmRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1idXR0b24tdG9nZ2xlLWxhYmVsLWNvbnRlbnRbX25nY29udGVudC0lQ09NUCVde2xpbmUtaGVpZ2h0OjQ4cHh9Lm1hdC1jYXJkW19uZ2NvbnRlbnQtJUNPTVAlXXtiYWNrZ3JvdW5kOiNmZmY7Y29sb3I6IzIxMjEyMX0ubWF0LWNhcmRbX25nY29udGVudC0lQ09NUCVdOm5vdChbY2xhc3MqPW1hdC1lbGV2YXRpb24tel0pe2JveC1zaGFkb3c6MHB4IDJweCAxcHggLTFweCByZ2JhKDAsIDAsIDAsIDAuMiksMHB4IDFweCAxcHggMHB4IHJnYmEoMCwgMCwgMCwgMC4xNCksMHB4IDFweCAzcHggMHB4IHJnYmEoMCwgMCwgMCwgMC4xMil9Lm1hdC1jYXJkLm1hdC1jYXJkLWZsYXRbX25nY29udGVudC0lQ09NUCVdOm5vdChbY2xhc3MqPW1hdC1lbGV2YXRpb24tel0pe2JveC1zaGFkb3c6MHB4IDBweCAwcHggMHB4IHJnYmEoMCwgMCwgMCwgMC4yKSwwcHggMHB4IDBweCAwcHggcmdiYSgwLCAwLCAwLCAwLjE0KSwwcHggMHB4IDBweCAwcHggcmdiYSgwLCAwLCAwLCAwLjEyKX0ubWF0LWNhcmQtc3VidGl0bGVbX25nY29udGVudC0lQ09NUCVde2NvbG9yOiM2MTYxNjF9Lm1hdC1jaGVja2JveC1mcmFtZVtfbmdjb250ZW50LSVDT01QJV17Ym9yZGVyLWNvbG9yOiM2MTYxNjF9Lm1hdC1jaGVja2JveC1jaGVja21hcmtbX25nY29udGVudC0lQ09NUCVde2ZpbGw6I2ZhZmFmYX0ubWF0LWNoZWNrYm94LWNoZWNrbWFyay1wYXRoW19uZ2NvbnRlbnQtJUNPTVAlXXtzdHJva2U6I2ZhZmFmYSAhaW1wb3J0YW50fS5tYXQtY2hlY2tib3gtbWl4ZWRtYXJrW19uZ2NvbnRlbnQtJUNPTVAlXXtiYWNrZ3JvdW5kLWNvbG9yOiNmYWZhZmF9Lm1hdC1jaGVja2JveC1pbmRldGVybWluYXRlLm1hdC1wcmltYXJ5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtY2hlY2tib3gtYmFja2dyb3VuZFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtY2hlY2tib3gtY2hlY2tlZC5tYXQtcHJpbWFyeVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWNoZWNrYm94LWJhY2tncm91bmRbX25nY29udGVudC0lQ09NUCVde2JhY2tncm91bmQtY29sb3I6I2Y1N2MwMH0ubWF0LWNoZWNrYm94LWluZGV0ZXJtaW5hdGUubWF0LWFjY2VudFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWNoZWNrYm94LWJhY2tncm91bmRbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWNoZWNrYm94LWNoZWNrZWQubWF0LWFjY2VudFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWNoZWNrYm94LWJhY2tncm91bmRbX25nY29udGVudC0lQ09NUCVde2JhY2tncm91bmQtY29sb3I6I2ZmOTgwMH0ubWF0LWNoZWNrYm94LWluZGV0ZXJtaW5hdGUubWF0LXdhcm5bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1jaGVja2JveC1iYWNrZ3JvdW5kW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1jaGVja2JveC1jaGVja2VkLm1hdC13YXJuW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtY2hlY2tib3gtYmFja2dyb3VuZFtfbmdjb250ZW50LSVDT01QJV17YmFja2dyb3VuZC1jb2xvcjojZjQ0MzM2fS5tYXQtY2hlY2tib3gtZGlzYWJsZWQubWF0LWNoZWNrYm94LWNoZWNrZWRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1jaGVja2JveC1iYWNrZ3JvdW5kW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1jaGVja2JveC1kaXNhYmxlZC5tYXQtY2hlY2tib3gtaW5kZXRlcm1pbmF0ZVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWNoZWNrYm94LWJhY2tncm91bmRbX25nY29udGVudC0lQ09NUCVde2JhY2tncm91bmQtY29sb3I6I2IwYjBiMH0ubWF0LWNoZWNrYm94LWRpc2FibGVkW19uZ2NvbnRlbnQtJUNPTVAlXTpub3QoLm1hdC1jaGVja2JveC1jaGVja2VkKSAgIC5tYXQtY2hlY2tib3gtZnJhbWVbX25nY29udGVudC0lQ09NUCVde2JvcmRlci1jb2xvcjojYjBiMGIwfS5tYXQtY2hlY2tib3gtZGlzYWJsZWRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1jaGVja2JveC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17Y29sb3I6IzYxNjE2MX0ubWF0LWNoZWNrYm94W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtcmlwcGxlLWVsZW1lbnRbX25nY29udGVudC0lQ09NUCVde2JhY2tncm91bmQtY29sb3I6IzAwMH0ubWF0LWNoZWNrYm94LWNoZWNrZWRbX25nY29udGVudC0lQ09NUCVdOm5vdCgubWF0LWNoZWNrYm94LWRpc2FibGVkKS5tYXQtcHJpbWFyeSAgIC5tYXQtcmlwcGxlLWVsZW1lbnRbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWNoZWNrYm94W19uZ2NvbnRlbnQtJUNPTVAlXTphY3RpdmU6bm90KC5tYXQtY2hlY2tib3gtZGlzYWJsZWQpLm1hdC1wcmltYXJ5ICAgLm1hdC1yaXBwbGUtZWxlbWVudFtfbmdjb250ZW50LSVDT01QJV17YmFja2dyb3VuZDojZjU3YzAwfS5tYXQtY2hlY2tib3gtY2hlY2tlZFtfbmdjb250ZW50LSVDT01QJV06bm90KC5tYXQtY2hlY2tib3gtZGlzYWJsZWQpLm1hdC1hY2NlbnQgICAubWF0LXJpcHBsZS1lbGVtZW50W19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1jaGVja2JveFtfbmdjb250ZW50LSVDT01QJV06YWN0aXZlOm5vdCgubWF0LWNoZWNrYm94LWRpc2FibGVkKS5tYXQtYWNjZW50ICAgLm1hdC1yaXBwbGUtZWxlbWVudFtfbmdjb250ZW50LSVDT01QJV17YmFja2dyb3VuZDojZmY5ODAwfS5tYXQtY2hlY2tib3gtY2hlY2tlZFtfbmdjb250ZW50LSVDT01QJV06bm90KC5tYXQtY2hlY2tib3gtZGlzYWJsZWQpLm1hdC13YXJuICAgLm1hdC1yaXBwbGUtZWxlbWVudFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtY2hlY2tib3hbX25nY29udGVudC0lQ09NUCVdOmFjdGl2ZTpub3QoLm1hdC1jaGVja2JveC1kaXNhYmxlZCkubWF0LXdhcm4gICAubWF0LXJpcHBsZS1lbGVtZW50W19uZ2NvbnRlbnQtJUNPTVAlXXtiYWNrZ3JvdW5kOiNmNDQzMzZ9Lm1hdC1jaGlwLm1hdC1zdGFuZGFyZC1jaGlwW19uZ2NvbnRlbnQtJUNPTVAlXXtiYWNrZ3JvdW5kLWNvbG9yOiNlMGUwZTA7Y29sb3I6IzIxMjEyMX0ubWF0LWNoaXAubWF0LXN0YW5kYXJkLWNoaXBbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1jaGlwLXJlbW92ZVtfbmdjb250ZW50LSVDT01QJV17Y29sb3I6IzIxMjEyMTtvcGFjaXR5Oi40fS5tYXQtY2hpcC5tYXQtc3RhbmRhcmQtY2hpcFtfbmdjb250ZW50LSVDT01QJV06bm90KC5tYXQtY2hpcC1kaXNhYmxlZCk6YWN0aXZle2JveC1zaGFkb3c6MHB4IDNweCAzcHggLTJweCByZ2JhKDAsIDAsIDAsIDAuMiksMHB4IDNweCA0cHggMHB4IHJnYmEoMCwgMCwgMCwgMC4xNCksMHB4IDFweCA4cHggMHB4IHJnYmEoMCwgMCwgMCwgMC4xMil9Lm1hdC1jaGlwLm1hdC1zdGFuZGFyZC1jaGlwW19uZ2NvbnRlbnQtJUNPTVAlXTpub3QoLm1hdC1jaGlwLWRpc2FibGVkKSAgIC5tYXQtY2hpcC1yZW1vdmVbX25nY29udGVudC0lQ09NUCVdOmhvdmVye29wYWNpdHk6LjU0fS5tYXQtY2hpcC5tYXQtc3RhbmRhcmQtY2hpcC5tYXQtY2hpcC1kaXNhYmxlZFtfbmdjb250ZW50LSVDT01QJV17b3BhY2l0eTouNH0ubWF0LWNoaXAubWF0LXN0YW5kYXJkLWNoaXBbX25nY29udGVudC0lQ09NUCVdOjphZnRlcntiYWNrZ3JvdW5kOiMwMDB9Lm1hdC1jaGlwLm1hdC1zdGFuZGFyZC1jaGlwLm1hdC1jaGlwLXNlbGVjdGVkLm1hdC1wcmltYXJ5W19uZ2NvbnRlbnQtJUNPTVAlXXtiYWNrZ3JvdW5kLWNvbG9yOiNmNTdjMDA7Y29sb3I6I2ZmZn0ubWF0LWNoaXAubWF0LXN0YW5kYXJkLWNoaXAubWF0LWNoaXAtc2VsZWN0ZWQubWF0LXByaW1hcnlbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1jaGlwLXJlbW92ZVtfbmdjb250ZW50LSVDT01QJV17Y29sb3I6I2ZmZjtvcGFjaXR5Oi40fS5tYXQtY2hpcC5tYXQtc3RhbmRhcmQtY2hpcC5tYXQtY2hpcC1zZWxlY3RlZC5tYXQtcHJpbWFyeVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXJpcHBsZS1lbGVtZW50W19uZ2NvbnRlbnQtJUNPTVAlXXtiYWNrZ3JvdW5kLWNvbG9yOnJnYmEoMjU1LDI1NSwyNTUsLjEpfS5tYXQtY2hpcC5tYXQtc3RhbmRhcmQtY2hpcC5tYXQtY2hpcC1zZWxlY3RlZC5tYXQtd2Fybltfbmdjb250ZW50LSVDT01QJV17YmFja2dyb3VuZC1jb2xvcjojZjQ0MzM2O2NvbG9yOiNmZmZ9Lm1hdC1jaGlwLm1hdC1zdGFuZGFyZC1jaGlwLm1hdC1jaGlwLXNlbGVjdGVkLm1hdC13YXJuW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtY2hpcC1yZW1vdmVbX25nY29udGVudC0lQ09NUCVde2NvbG9yOiNmZmY7b3BhY2l0eTouNH0ubWF0LWNoaXAubWF0LXN0YW5kYXJkLWNoaXAubWF0LWNoaXAtc2VsZWN0ZWQubWF0LXdhcm5bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1yaXBwbGUtZWxlbWVudFtfbmdjb250ZW50LSVDT01QJV17YmFja2dyb3VuZC1jb2xvcjpyZ2JhKDI1NSwyNTUsMjU1LC4xKX0ubWF0LWNoaXAubWF0LXN0YW5kYXJkLWNoaXAubWF0LWNoaXAtc2VsZWN0ZWQubWF0LWFjY2VudFtfbmdjb250ZW50LSVDT01QJV17YmFja2dyb3VuZC1jb2xvcjojZmY5ODAwO2NvbG9yOiNmZmZ9Lm1hdC1jaGlwLm1hdC1zdGFuZGFyZC1jaGlwLm1hdC1jaGlwLXNlbGVjdGVkLm1hdC1hY2NlbnRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1jaGlwLXJlbW92ZVtfbmdjb250ZW50LSVDT01QJV17Y29sb3I6I2ZmZjtvcGFjaXR5Oi40fS5tYXQtY2hpcC5tYXQtc3RhbmRhcmQtY2hpcC5tYXQtY2hpcC1zZWxlY3RlZC5tYXQtYWNjZW50W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtcmlwcGxlLWVsZW1lbnRbX25nY29udGVudC0lQ09NUCVde2JhY2tncm91bmQtY29sb3I6cmdiYSgyNTUsMjU1LDI1NSwuMSl9Lm1hdC10YWJsZVtfbmdjb250ZW50LSVDT01QJV17YmFja2dyb3VuZDojZmZmfS5tYXQtdGFibGVbX25nY29udGVudC0lQ09NUCVdICAgdGhlYWRbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXRhYmxlW19uZ2NvbnRlbnQtJUNPTVAlXSAgIHRib2R5W19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10YWJsZVtfbmdjb250ZW50LSVDT01QJV0gICB0Zm9vdFtfbmdjb250ZW50LSVDT01QJV0sIG1hdC1oZWFkZXItcm93W19uZ2NvbnRlbnQtJUNPTVAlXSwgbWF0LXJvd1tfbmdjb250ZW50LSVDT01QJV0sIG1hdC1mb290ZXItcm93W19uZ2NvbnRlbnQtJUNPTVAlXSwgW21hdC1oZWFkZXItcm93XVtfbmdjb250ZW50LSVDT01QJV0sIFttYXQtcm93XVtfbmdjb250ZW50LSVDT01QJV0sIFttYXQtZm9vdGVyLXJvd11bX25nY29udGVudC0lQ09NUCVdLCAubWF0LXRhYmxlLXN0aWNreVtfbmdjb250ZW50LSVDT01QJV17YmFja2dyb3VuZDppbmhlcml0fW1hdC1yb3dbX25nY29udGVudC0lQ09NUCVdLCBtYXQtaGVhZGVyLXJvd1tfbmdjb250ZW50LSVDT01QJV0sIG1hdC1mb290ZXItcm93W19uZ2NvbnRlbnQtJUNPTVAlXSwgdGgubWF0LWhlYWRlci1jZWxsW19uZ2NvbnRlbnQtJUNPTVAlXSwgdGQubWF0LWNlbGxbX25nY29udGVudC0lQ09NUCVdLCB0ZC5tYXQtZm9vdGVyLWNlbGxbX25nY29udGVudC0lQ09NUCVde2JvcmRlci1ib3R0b20tY29sb3I6cmdiYSgwLDAsMCwuMTIpfS5tYXQtaGVhZGVyLWNlbGxbX25nY29udGVudC0lQ09NUCVde2NvbG9yOiM2MTYxNjF9Lm1hdC1jZWxsW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1mb290ZXItY2VsbFtfbmdjb250ZW50LSVDT01QJV17Y29sb3I6IzIxMjEyMX0ubWF0LWNhbGVuZGFyLWFycm93W19uZ2NvbnRlbnQtJUNPTVAlXXtib3JkZXItdG9wLWNvbG9yOnJnYmEoMCwwLDAsLjU0KX0ubWF0LWRhdGVwaWNrZXItdG9nZ2xlW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1kYXRlcGlja2VyLWNvbnRlbnRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1jYWxlbmRhci1uZXh0LWJ1dHRvbltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtZGF0ZXBpY2tlci1jb250ZW50W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtY2FsZW5kYXItcHJldmlvdXMtYnV0dG9uW19uZ2NvbnRlbnQtJUNPTVAlXXtjb2xvcjpyZ2JhKDAsMCwwLC41NCl9Lm1hdC1jYWxlbmRhci10YWJsZS1oZWFkZXJbX25nY29udGVudC0lQ09NUCVde2NvbG9yOnJnYmEoMCwwLDAsLjM4KX0ubWF0LWNhbGVuZGFyLXRhYmxlLWhlYWRlci1kaXZpZGVyW19uZ2NvbnRlbnQtJUNPTVAlXTo6YWZ0ZXJ7YmFja2dyb3VuZDpyZ2JhKDAsMCwwLC4xMil9Lm1hdC1jYWxlbmRhci1ib2R5LWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXtjb2xvcjojNjE2MTYxfS5tYXQtY2FsZW5kYXItYm9keS1jZWxsLWNvbnRlbnRbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWRhdGUtcmFuZ2UtaW5wdXQtc2VwYXJhdG9yW19uZ2NvbnRlbnQtJUNPTVAlXXtjb2xvcjojMjEyMTIxO2JvcmRlci1jb2xvcjp0cmFuc3BhcmVudH0ubWF0LWNhbGVuZGFyLWJvZHktZGlzYWJsZWRbX25nY29udGVudC0lQ09NUCVdID4gLm1hdC1jYWxlbmRhci1ib2R5LWNlbGwtY29udGVudFtfbmdjb250ZW50LSVDT01QJV06bm90KC5tYXQtY2FsZW5kYXItYm9keS1zZWxlY3RlZCk6bm90KC5tYXQtY2FsZW5kYXItYm9keS1jb21wYXJpc29uLWlkZW50aWNhbCl7Y29sb3I6Izc1NzU3NX0ubWF0LWZvcm0tZmllbGQtZGlzYWJsZWRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1kYXRlLXJhbmdlLWlucHV0LXNlcGFyYXRvcltfbmdjb250ZW50LSVDT01QJV17Y29sb3I6Izc1NzU3NX0ubWF0LWNhbGVuZGFyLWJvZHktY2VsbFtfbmdjb250ZW50LSVDT01QJV06bm90KC5tYXQtY2FsZW5kYXItYm9keS1kaXNhYmxlZCk6aG92ZXIgPiAubWF0LWNhbGVuZGFyLWJvZHktY2VsbC1jb250ZW50W19uZ2NvbnRlbnQtJUNPTVAlXTpub3QoLm1hdC1jYWxlbmRhci1ib2R5LXNlbGVjdGVkKTpub3QoLm1hdC1jYWxlbmRhci1ib2R5LWNvbXBhcmlzb24taWRlbnRpY2FsKSwgLmNkay1rZXlib2FyZC1mb2N1c2VkW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtY2FsZW5kYXItYm9keS1hY3RpdmVbX25nY29udGVudC0lQ09NUCVdID4gLm1hdC1jYWxlbmRhci1ib2R5LWNlbGwtY29udGVudFtfbmdjb250ZW50LSVDT01QJV06bm90KC5tYXQtY2FsZW5kYXItYm9keS1zZWxlY3RlZCk6bm90KC5tYXQtY2FsZW5kYXItYm9keS1jb21wYXJpc29uLWlkZW50aWNhbCksIC5jZGstcHJvZ3JhbS1mb2N1c2VkW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtY2FsZW5kYXItYm9keS1hY3RpdmVbX25nY29udGVudC0lQ09NUCVdID4gLm1hdC1jYWxlbmRhci1ib2R5LWNlbGwtY29udGVudFtfbmdjb250ZW50LSVDT01QJV06bm90KC5tYXQtY2FsZW5kYXItYm9keS1zZWxlY3RlZCk6bm90KC5tYXQtY2FsZW5kYXItYm9keS1jb21wYXJpc29uLWlkZW50aWNhbCl7YmFja2dyb3VuZC1jb2xvcjpyZ2JhKDAsMCwwLC4wNCl9Lm1hdC1jYWxlbmRhci1ib2R5LWluLXByZXZpZXdbX25nY29udGVudC0lQ09NUCVde2NvbG9yOnJnYmEoMCwwLDAsLjI0KX0ubWF0LWNhbGVuZGFyLWJvZHktdG9kYXlbX25nY29udGVudC0lQ09NUCVdOm5vdCgubWF0LWNhbGVuZGFyLWJvZHktc2VsZWN0ZWQpOm5vdCgubWF0LWNhbGVuZGFyLWJvZHktY29tcGFyaXNvbi1pZGVudGljYWwpe2JvcmRlci1jb2xvcjpyZ2JhKDAsMCwwLC4zOCl9Lm1hdC1jYWxlbmRhci1ib2R5LWRpc2FibGVkW19uZ2NvbnRlbnQtJUNPTVAlXSA+IC5tYXQtY2FsZW5kYXItYm9keS10b2RheVtfbmdjb250ZW50LSVDT01QJV06bm90KC5tYXQtY2FsZW5kYXItYm9keS1zZWxlY3RlZCk6bm90KC5tYXQtY2FsZW5kYXItYm9keS1jb21wYXJpc29uLWlkZW50aWNhbCl7Ym9yZGVyLWNvbG9yOnJnYmEoMCwwLDAsLjE4KX0ubWF0LWNhbGVuZGFyLWJvZHktaW4tcmFuZ2VbX25nY29udGVudC0lQ09NUCVdOjpiZWZvcmV7YmFja2dyb3VuZDpyZ2JhKDI0NSwxMjQsMCwuMil9Lm1hdC1jYWxlbmRhci1ib2R5LWNvbXBhcmlzb24taWRlbnRpY2FsW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1jYWxlbmRhci1ib2R5LWluLWNvbXBhcmlzb24tcmFuZ2VbX25nY29udGVudC0lQ09NUCVdOjpiZWZvcmV7YmFja2dyb3VuZDpyZ2JhKDI0OSwxNzEsMCwuMil9Lm1hdC1jYWxlbmRhci1ib2R5LWNvbXBhcmlzb24tYnJpZGdlLXN0YXJ0W19uZ2NvbnRlbnQtJUNPTVAlXTo6YmVmb3JlLCBbZGlyPXJ0bF1bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1jYWxlbmRhci1ib2R5LWNvbXBhcmlzb24tYnJpZGdlLWVuZFtfbmdjb250ZW50LSVDT01QJV06OmJlZm9yZXtiYWNrZ3JvdW5kOmxpbmVhci1ncmFkaWVudCh0byByaWdodCwgcmdiYSgyNDUsIDEyNCwgMCwgMC4yKSA1MCUsIHJnYmEoMjQ5LCAxNzEsIDAsIDAuMikgNTAlKX0ubWF0LWNhbGVuZGFyLWJvZHktY29tcGFyaXNvbi1icmlkZ2UtZW5kW19uZ2NvbnRlbnQtJUNPTVAlXTo6YmVmb3JlLCBbZGlyPXJ0bF1bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1jYWxlbmRhci1ib2R5LWNvbXBhcmlzb24tYnJpZGdlLXN0YXJ0W19uZ2NvbnRlbnQtJUNPTVAlXTo6YmVmb3Jle2JhY2tncm91bmQ6bGluZWFyLWdyYWRpZW50KHRvIGxlZnQsIHJnYmEoMjQ1LCAxMjQsIDAsIDAuMikgNTAlLCByZ2JhKDI0OSwgMTcxLCAwLCAwLjIpIDUwJSl9Lm1hdC1jYWxlbmRhci1ib2R5LWluLXJhbmdlW19uZ2NvbnRlbnQtJUNPTVAlXSA+IC5tYXQtY2FsZW5kYXItYm9keS1jb21wYXJpc29uLWlkZW50aWNhbFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtY2FsZW5kYXItYm9keS1pbi1jb21wYXJpc29uLXJhbmdlLm1hdC1jYWxlbmRhci1ib2R5LWluLXJhbmdlW19uZ2NvbnRlbnQtJUNPTVAlXTo6YWZ0ZXJ7YmFja2dyb3VuZDojYThkYWI1fS5tYXQtY2FsZW5kYXItYm9keS1jb21wYXJpc29uLWlkZW50aWNhbC5tYXQtY2FsZW5kYXItYm9keS1zZWxlY3RlZFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtY2FsZW5kYXItYm9keS1pbi1jb21wYXJpc29uLXJhbmdlW19uZ2NvbnRlbnQtJUNPTVAlXSA+IC5tYXQtY2FsZW5kYXItYm9keS1zZWxlY3RlZFtfbmdjb250ZW50LSVDT01QJV17YmFja2dyb3VuZDojNDZhMzVlfS5tYXQtY2FsZW5kYXItYm9keS1zZWxlY3RlZFtfbmdjb250ZW50LSVDT01QJV17YmFja2dyb3VuZC1jb2xvcjojZjU3YzAwO2NvbG9yOiNmZmZ9Lm1hdC1jYWxlbmRhci1ib2R5LWRpc2FibGVkW19uZ2NvbnRlbnQtJUNPTVAlXSA+IC5tYXQtY2FsZW5kYXItYm9keS1zZWxlY3RlZFtfbmdjb250ZW50LSVDT01QJV17YmFja2dyb3VuZC1jb2xvcjpyZ2JhKDI0NSwxMjQsMCwuNCl9Lm1hdC1jYWxlbmRhci1ib2R5LXRvZGF5Lm1hdC1jYWxlbmRhci1ib2R5LXNlbGVjdGVkW19uZ2NvbnRlbnQtJUNPTVAlXXtib3gtc2hhZG93Omluc2V0IDAgMCAwIDFweCAjZmZmfS5tYXQtZGF0ZXBpY2tlci1jb250ZW50W19uZ2NvbnRlbnQtJUNPTVAlXXtib3gtc2hhZG93OjBweCAycHggNHB4IC0xcHggcmdiYSgwLCAwLCAwLCAwLjIpLDBweCA0cHggNXB4IDBweCByZ2JhKDAsIDAsIDAsIDAuMTQpLDBweCAxcHggMTBweCAwcHggcmdiYSgwLCAwLCAwLCAwLjEyKTtiYWNrZ3JvdW5kLWNvbG9yOiNmZmY7Y29sb3I6IzIxMjEyMX0ubWF0LWRhdGVwaWNrZXItY29udGVudC5tYXQtYWNjZW50W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtY2FsZW5kYXItYm9keS1pbi1yYW5nZVtfbmdjb250ZW50LSVDT01QJV06OmJlZm9yZXtiYWNrZ3JvdW5kOnJnYmEoMjU1LDE1MiwwLC4yKX0ubWF0LWRhdGVwaWNrZXItY29udGVudC5tYXQtYWNjZW50W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtY2FsZW5kYXItYm9keS1jb21wYXJpc29uLWlkZW50aWNhbFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtZGF0ZXBpY2tlci1jb250ZW50Lm1hdC1hY2NlbnRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1jYWxlbmRhci1ib2R5LWluLWNvbXBhcmlzb24tcmFuZ2VbX25nY29udGVudC0lQ09NUCVdOjpiZWZvcmV7YmFja2dyb3VuZDpyZ2JhKDI0OSwxNzEsMCwuMil9Lm1hdC1kYXRlcGlja2VyLWNvbnRlbnQubWF0LWFjY2VudFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWNhbGVuZGFyLWJvZHktY29tcGFyaXNvbi1icmlkZ2Utc3RhcnRbX25nY29udGVudC0lQ09NUCVdOjpiZWZvcmUsIC5tYXQtZGF0ZXBpY2tlci1jb250ZW50Lm1hdC1hY2NlbnRbX25nY29udGVudC0lQ09NUCVdICAgW2Rpcj1ydGxdW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtY2FsZW5kYXItYm9keS1jb21wYXJpc29uLWJyaWRnZS1lbmRbX25nY29udGVudC0lQ09NUCVdOjpiZWZvcmV7YmFja2dyb3VuZDpsaW5lYXItZ3JhZGllbnQodG8gcmlnaHQsIHJnYmEoMjU1LCAxNTIsIDAsIDAuMikgNTAlLCByZ2JhKDI0OSwgMTcxLCAwLCAwLjIpIDUwJSl9Lm1hdC1kYXRlcGlja2VyLWNvbnRlbnQubWF0LWFjY2VudFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWNhbGVuZGFyLWJvZHktY29tcGFyaXNvbi1icmlkZ2UtZW5kW19uZ2NvbnRlbnQtJUNPTVAlXTo6YmVmb3JlLCAubWF0LWRhdGVwaWNrZXItY29udGVudC5tYXQtYWNjZW50W19uZ2NvbnRlbnQtJUNPTVAlXSAgIFtkaXI9cnRsXVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWNhbGVuZGFyLWJvZHktY29tcGFyaXNvbi1icmlkZ2Utc3RhcnRbX25nY29udGVudC0lQ09NUCVdOjpiZWZvcmV7YmFja2dyb3VuZDpsaW5lYXItZ3JhZGllbnQodG8gbGVmdCwgcmdiYSgyNTUsIDE1MiwgMCwgMC4yKSA1MCUsIHJnYmEoMjQ5LCAxNzEsIDAsIDAuMikgNTAlKX0ubWF0LWRhdGVwaWNrZXItY29udGVudC5tYXQtYWNjZW50W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtY2FsZW5kYXItYm9keS1pbi1yYW5nZVtfbmdjb250ZW50LSVDT01QJV0gPiAubWF0LWNhbGVuZGFyLWJvZHktY29tcGFyaXNvbi1pZGVudGljYWxbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWRhdGVwaWNrZXItY29udGVudC5tYXQtYWNjZW50W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtY2FsZW5kYXItYm9keS1pbi1jb21wYXJpc29uLXJhbmdlLm1hdC1jYWxlbmRhci1ib2R5LWluLXJhbmdlW19uZ2NvbnRlbnQtJUNPTVAlXTo6YWZ0ZXJ7YmFja2dyb3VuZDojYThkYWI1fS5tYXQtZGF0ZXBpY2tlci1jb250ZW50Lm1hdC1hY2NlbnRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1jYWxlbmRhci1ib2R5LWNvbXBhcmlzb24taWRlbnRpY2FsLm1hdC1jYWxlbmRhci1ib2R5LXNlbGVjdGVkW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1kYXRlcGlja2VyLWNvbnRlbnQubWF0LWFjY2VudFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWNhbGVuZGFyLWJvZHktaW4tY29tcGFyaXNvbi1yYW5nZVtfbmdjb250ZW50LSVDT01QJV0gPiAubWF0LWNhbGVuZGFyLWJvZHktc2VsZWN0ZWRbX25nY29udGVudC0lQ09NUCVde2JhY2tncm91bmQ6IzQ2YTM1ZX0ubWF0LWRhdGVwaWNrZXItY29udGVudC5tYXQtYWNjZW50W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtY2FsZW5kYXItYm9keS1zZWxlY3RlZFtfbmdjb250ZW50LSVDT01QJV17YmFja2dyb3VuZC1jb2xvcjojZmY5ODAwO2NvbG9yOiNmZmZ9Lm1hdC1kYXRlcGlja2VyLWNvbnRlbnQubWF0LWFjY2VudFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWNhbGVuZGFyLWJvZHktZGlzYWJsZWRbX25nY29udGVudC0lQ09NUCVdID4gLm1hdC1jYWxlbmRhci1ib2R5LXNlbGVjdGVkW19uZ2NvbnRlbnQtJUNPTVAlXXtiYWNrZ3JvdW5kLWNvbG9yOnJnYmEoMjU1LDE1MiwwLC40KX0ubWF0LWRhdGVwaWNrZXItY29udGVudC5tYXQtYWNjZW50W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtY2FsZW5kYXItYm9keS10b2RheS5tYXQtY2FsZW5kYXItYm9keS1zZWxlY3RlZFtfbmdjb250ZW50LSVDT01QJV17Ym94LXNoYWRvdzppbnNldCAwIDAgMCAxcHggI2ZmZn0ubWF0LWRhdGVwaWNrZXItY29udGVudC5tYXQtd2Fybltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWNhbGVuZGFyLWJvZHktaW4tcmFuZ2VbX25nY29udGVudC0lQ09NUCVdOjpiZWZvcmV7YmFja2dyb3VuZDpyZ2JhKDI0NCw2Nyw1NCwuMil9Lm1hdC1kYXRlcGlja2VyLWNvbnRlbnQubWF0LXdhcm5bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1jYWxlbmRhci1ib2R5LWNvbXBhcmlzb24taWRlbnRpY2FsW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1kYXRlcGlja2VyLWNvbnRlbnQubWF0LXdhcm5bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1jYWxlbmRhci1ib2R5LWluLWNvbXBhcmlzb24tcmFuZ2VbX25nY29udGVudC0lQ09NUCVdOjpiZWZvcmV7YmFja2dyb3VuZDpyZ2JhKDI0OSwxNzEsMCwuMil9Lm1hdC1kYXRlcGlja2VyLWNvbnRlbnQubWF0LXdhcm5bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1jYWxlbmRhci1ib2R5LWNvbXBhcmlzb24tYnJpZGdlLXN0YXJ0W19uZ2NvbnRlbnQtJUNPTVAlXTo6YmVmb3JlLCAubWF0LWRhdGVwaWNrZXItY29udGVudC5tYXQtd2Fybltfbmdjb250ZW50LSVDT01QJV0gICBbZGlyPXJ0bF1bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1jYWxlbmRhci1ib2R5LWNvbXBhcmlzb24tYnJpZGdlLWVuZFtfbmdjb250ZW50LSVDT01QJV06OmJlZm9yZXtiYWNrZ3JvdW5kOmxpbmVhci1ncmFkaWVudCh0byByaWdodCwgcmdiYSgyNDQsIDY3LCA1NCwgMC4yKSA1MCUsIHJnYmEoMjQ5LCAxNzEsIDAsIDAuMikgNTAlKX0ubWF0LWRhdGVwaWNrZXItY29udGVudC5tYXQtd2Fybltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWNhbGVuZGFyLWJvZHktY29tcGFyaXNvbi1icmlkZ2UtZW5kW19uZ2NvbnRlbnQtJUNPTVAlXTo6YmVmb3JlLCAubWF0LWRhdGVwaWNrZXItY29udGVudC5tYXQtd2Fybltfbmdjb250ZW50LSVDT01QJV0gICBbZGlyPXJ0bF1bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1jYWxlbmRhci1ib2R5LWNvbXBhcmlzb24tYnJpZGdlLXN0YXJ0W19uZ2NvbnRlbnQtJUNPTVAlXTo6YmVmb3Jle2JhY2tncm91bmQ6bGluZWFyLWdyYWRpZW50KHRvIGxlZnQsIHJnYmEoMjQ0LCA2NywgNTQsIDAuMikgNTAlLCByZ2JhKDI0OSwgMTcxLCAwLCAwLjIpIDUwJSl9Lm1hdC1kYXRlcGlja2VyLWNvbnRlbnQubWF0LXdhcm5bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1jYWxlbmRhci1ib2R5LWluLXJhbmdlW19uZ2NvbnRlbnQtJUNPTVAlXSA+IC5tYXQtY2FsZW5kYXItYm9keS1jb21wYXJpc29uLWlkZW50aWNhbFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtZGF0ZXBpY2tlci1jb250ZW50Lm1hdC13YXJuW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtY2FsZW5kYXItYm9keS1pbi1jb21wYXJpc29uLXJhbmdlLm1hdC1jYWxlbmRhci1ib2R5LWluLXJhbmdlW19uZ2NvbnRlbnQtJUNPTVAlXTo6YWZ0ZXJ7YmFja2dyb3VuZDojYThkYWI1fS5tYXQtZGF0ZXBpY2tlci1jb250ZW50Lm1hdC13YXJuW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtY2FsZW5kYXItYm9keS1jb21wYXJpc29uLWlkZW50aWNhbC5tYXQtY2FsZW5kYXItYm9keS1zZWxlY3RlZFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtZGF0ZXBpY2tlci1jb250ZW50Lm1hdC13YXJuW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtY2FsZW5kYXItYm9keS1pbi1jb21wYXJpc29uLXJhbmdlW19uZ2NvbnRlbnQtJUNPTVAlXSA+IC5tYXQtY2FsZW5kYXItYm9keS1zZWxlY3RlZFtfbmdjb250ZW50LSVDT01QJV17YmFja2dyb3VuZDojNDZhMzVlfS5tYXQtZGF0ZXBpY2tlci1jb250ZW50Lm1hdC13YXJuW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtY2FsZW5kYXItYm9keS1zZWxlY3RlZFtfbmdjb250ZW50LSVDT01QJV17YmFja2dyb3VuZC1jb2xvcjojZjQ0MzM2O2NvbG9yOiNmZmZ9Lm1hdC1kYXRlcGlja2VyLWNvbnRlbnQubWF0LXdhcm5bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1jYWxlbmRhci1ib2R5LWRpc2FibGVkW19uZ2NvbnRlbnQtJUNPTVAlXSA+IC5tYXQtY2FsZW5kYXItYm9keS1zZWxlY3RlZFtfbmdjb250ZW50LSVDT01QJV17YmFja2dyb3VuZC1jb2xvcjpyZ2JhKDI0NCw2Nyw1NCwuNCl9Lm1hdC1kYXRlcGlja2VyLWNvbnRlbnQubWF0LXdhcm5bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1jYWxlbmRhci1ib2R5LXRvZGF5Lm1hdC1jYWxlbmRhci1ib2R5LXNlbGVjdGVkW19uZ2NvbnRlbnQtJUNPTVAlXXtib3gtc2hhZG93Omluc2V0IDAgMCAwIDFweCAjZmZmfS5tYXQtZGF0ZXBpY2tlci1jb250ZW50LXRvdWNoW19uZ2NvbnRlbnQtJUNPTVAlXXtib3gtc2hhZG93OjBweCAwcHggMHB4IDBweCByZ2JhKDAsIDAsIDAsIDAuMiksMHB4IDBweCAwcHggMHB4IHJnYmEoMCwgMCwgMCwgMC4xNCksMHB4IDBweCAwcHggMHB4IHJnYmEoMCwgMCwgMCwgMC4xMil9Lm1hdC1kYXRlcGlja2VyLXRvZ2dsZS1hY3RpdmVbX25nY29udGVudC0lQ09NUCVde2NvbG9yOiNmNTdjMDB9Lm1hdC1kYXRlcGlja2VyLXRvZ2dsZS1hY3RpdmUubWF0LWFjY2VudFtfbmdjb250ZW50LSVDT01QJV17Y29sb3I6I2ZmOTgwMH0ubWF0LWRhdGVwaWNrZXItdG9nZ2xlLWFjdGl2ZS5tYXQtd2Fybltfbmdjb250ZW50LSVDT01QJV17Y29sb3I6I2Y0NDMzNn0ubWF0LWRhdGUtcmFuZ2UtaW5wdXQtaW5uZXJbZGlzYWJsZWRdW19uZ2NvbnRlbnQtJUNPTVAlXXtjb2xvcjojNzU3NTc1fS5tYXQtZGlhbG9nLWNvbnRhaW5lcltfbmdjb250ZW50LSVDT01QJV17Ym94LXNoYWRvdzowcHggMTFweCAxNXB4IC03cHggcmdiYSgwLCAwLCAwLCAwLjIpLDBweCAyNHB4IDM4cHggM3B4IHJnYmEoMCwgMCwgMCwgMC4xNCksMHB4IDlweCA0NnB4IDhweCByZ2JhKDAsIDAsIDAsIDAuMTIpO2JhY2tncm91bmQ6I2ZmZjtjb2xvcjojMjEyMTIxfS5tYXQtZGl2aWRlcltfbmdjb250ZW50LSVDT01QJV17Ym9yZGVyLXRvcC1jb2xvcjpyZ2JhKDAsMCwwLC4xMil9Lm1hdC1kaXZpZGVyLXZlcnRpY2FsW19uZ2NvbnRlbnQtJUNPTVAlXXtib3JkZXItcmlnaHQtY29sb3I6cmdiYSgwLDAsMCwuMTIpfS5tYXQtZXhwYW5zaW9uLXBhbmVsW19uZ2NvbnRlbnQtJUNPTVAlXXtiYWNrZ3JvdW5kOiNmZmY7Y29sb3I6IzIxMjEyMX0ubWF0LWV4cGFuc2lvbi1wYW5lbFtfbmdjb250ZW50LSVDT01QJV06bm90KFtjbGFzcyo9bWF0LWVsZXZhdGlvbi16XSl7Ym94LXNoYWRvdzowcHggM3B4IDFweCAtMnB4IHJnYmEoMCwgMCwgMCwgMC4yKSwwcHggMnB4IDJweCAwcHggcmdiYSgwLCAwLCAwLCAwLjE0KSwwcHggMXB4IDVweCAwcHggcmdiYSgwLCAwLCAwLCAwLjEyKX0ubWF0LWFjdGlvbi1yb3dbX25nY29udGVudC0lQ09NUCVde2JvcmRlci10b3AtY29sb3I6cmdiYSgwLDAsMCwuMTIpfS5tYXQtZXhwYW5zaW9uLXBhbmVsW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZXhwYW5zaW9uLXBhbmVsLWhlYWRlci5jZGsta2V5Ym9hcmQtZm9jdXNlZFtfbmdjb250ZW50LSVDT01QJV06bm90KFthcmlhLWRpc2FibGVkPXRydWVdKSwgLm1hdC1leHBhbnNpb24tcGFuZWxbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1leHBhbnNpb24tcGFuZWwtaGVhZGVyLmNkay1wcm9ncmFtLWZvY3VzZWRbX25nY29udGVudC0lQ09NUCVdOm5vdChbYXJpYS1kaXNhYmxlZD10cnVlXSksIC5tYXQtZXhwYW5zaW9uLXBhbmVsW19uZ2NvbnRlbnQtJUNPTVAlXTpub3QoLm1hdC1leHBhbmRlZCkgICAubWF0LWV4cGFuc2lvbi1wYW5lbC1oZWFkZXJbX25nY29udGVudC0lQ09NUCVdOmhvdmVyOm5vdChbYXJpYS1kaXNhYmxlZD10cnVlXSl7YmFja2dyb3VuZDpyZ2JhKDAsMCwwLC4wNCl9QG1lZGlhKGhvdmVyOiBub25lKXsubWF0LWV4cGFuc2lvbi1wYW5lbFtfbmdjb250ZW50LSVDT01QJV06bm90KC5tYXQtZXhwYW5kZWQpOm5vdChbYXJpYS1kaXNhYmxlZD10cnVlXSkgICAubWF0LWV4cGFuc2lvbi1wYW5lbC1oZWFkZXJbX25nY29udGVudC0lQ09NUCVdOmhvdmVye2JhY2tncm91bmQ6I2ZmZn19Lm1hdC1leHBhbnNpb24tcGFuZWwtaGVhZGVyLXRpdGxlW19uZ2NvbnRlbnQtJUNPTVAlXXtjb2xvcjojMjEyMTIxfS5tYXQtZXhwYW5zaW9uLXBhbmVsLWhlYWRlci1kZXNjcmlwdGlvbltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtZXhwYW5zaW9uLWluZGljYXRvcltfbmdjb250ZW50LSVDT01QJV06OmFmdGVye2NvbG9yOiM2MTYxNjF9Lm1hdC1leHBhbnNpb24tcGFuZWwtaGVhZGVyW2FyaWEtZGlzYWJsZWQ9dHJ1ZV1bX25nY29udGVudC0lQ09NUCVde2NvbG9yOnJnYmEoMCwwLDAsLjI2KX0ubWF0LWV4cGFuc2lvbi1wYW5lbC1oZWFkZXJbYXJpYS1kaXNhYmxlZD10cnVlXVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWV4cGFuc2lvbi1wYW5lbC1oZWFkZXItdGl0bGVbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWV4cGFuc2lvbi1wYW5lbC1oZWFkZXJbYXJpYS1kaXNhYmxlZD10cnVlXVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWV4cGFuc2lvbi1wYW5lbC1oZWFkZXItZGVzY3JpcHRpb25bX25nY29udGVudC0lQ09NUCVde2NvbG9yOmluaGVyaXR9Lm1hdC1leHBhbnNpb24tcGFuZWwtaGVhZGVyW19uZ2NvbnRlbnQtJUNPTVAlXXtoZWlnaHQ6NDhweH0ubWF0LWV4cGFuc2lvbi1wYW5lbC1oZWFkZXIubWF0LWV4cGFuZGVkW19uZ2NvbnRlbnQtJUNPTVAlXXtoZWlnaHQ6NjRweH0ubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVde2NvbG9yOnJnYmEoOTcsOTcsOTcsLjYpfS5tYXQtaGludFtfbmdjb250ZW50LSVDT01QJV17Y29sb3I6cmdiYSg5Nyw5Nyw5NywuNil9Lm1hdC1mb3JtLWZpZWxkLm1hdC1mb2N1c2VkW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17Y29sb3I6I2Y1N2MwMH0ubWF0LWZvcm0tZmllbGQubWF0LWZvY3VzZWRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsLm1hdC1hY2NlbnRbX25nY29udGVudC0lQ09NUCVde2NvbG9yOiNmZjk4MDB9Lm1hdC1mb3JtLWZpZWxkLm1hdC1mb2N1c2VkW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbC5tYXQtd2Fybltfbmdjb250ZW50LSVDT01QJV17Y29sb3I6I2Y0NDMzNn0ubWF0LWZvY3VzZWRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLXJlcXVpcmVkLW1hcmtlcltfbmdjb250ZW50LSVDT01QJV17Y29sb3I6I2ZmOTgwMH0ubWF0LWZvcm0tZmllbGQtcmlwcGxlW19uZ2NvbnRlbnQtJUNPTVAlXXtiYWNrZ3JvdW5kLWNvbG9yOnJnYmEoMCwwLDAsLjg3KX0ubWF0LWZvcm0tZmllbGQubWF0LWZvY3VzZWRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLXJpcHBsZVtfbmdjb250ZW50LSVDT01QJV17YmFja2dyb3VuZC1jb2xvcjojZjU3YzAwfS5tYXQtZm9ybS1maWVsZC5tYXQtZm9jdXNlZFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtcmlwcGxlLm1hdC1hY2NlbnRbX25nY29udGVudC0lQ09NUCVde2JhY2tncm91bmQtY29sb3I6I2ZmOTgwMH0ubWF0LWZvcm0tZmllbGQubWF0LWZvY3VzZWRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLXJpcHBsZS5tYXQtd2Fybltfbmdjb250ZW50LSVDT01QJV17YmFja2dyb3VuZC1jb2xvcjojZjQ0MzM2fS5tYXQtZm9ybS1maWVsZC10eXBlLW1hdC1uYXRpdmUtc2VsZWN0Lm1hdC1mb2N1c2VkW19uZ2NvbnRlbnQtJUNPTVAlXTpub3QoLm1hdC1mb3JtLWZpZWxkLWludmFsaWQpICAgLm1hdC1mb3JtLWZpZWxkLWluZml4W19uZ2NvbnRlbnQtJUNPTVAlXTo6YWZ0ZXJ7Y29sb3I6I2Y1N2MwMH0ubWF0LWZvcm0tZmllbGQtdHlwZS1tYXQtbmF0aXZlLXNlbGVjdC5tYXQtZm9jdXNlZFtfbmdjb250ZW50LSVDT01QJV06bm90KC5tYXQtZm9ybS1maWVsZC1pbnZhbGlkKS5tYXQtYWNjZW50ICAgLm1hdC1mb3JtLWZpZWxkLWluZml4W19uZ2NvbnRlbnQtJUNPTVAlXTo6YWZ0ZXJ7Y29sb3I6I2ZmOTgwMH0ubWF0LWZvcm0tZmllbGQtdHlwZS1tYXQtbmF0aXZlLXNlbGVjdC5tYXQtZm9jdXNlZFtfbmdjb250ZW50LSVDT01QJV06bm90KC5tYXQtZm9ybS1maWVsZC1pbnZhbGlkKS5tYXQtd2FybiAgIC5tYXQtZm9ybS1maWVsZC1pbmZpeFtfbmdjb250ZW50LSVDT01QJV06OmFmdGVye2NvbG9yOiNmNDQzMzZ9Lm1hdC1mb3JtLWZpZWxkLm1hdC1mb3JtLWZpZWxkLWludmFsaWRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXtjb2xvcjojZjQ0MzM2fS5tYXQtZm9ybS1maWVsZC5tYXQtZm9ybS1maWVsZC1pbnZhbGlkW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbC5tYXQtYWNjZW50W19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1mb3JtLWZpZWxkLm1hdC1mb3JtLWZpZWxkLWludmFsaWRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1yZXF1aXJlZC1tYXJrZXJbX25nY29udGVudC0lQ09NUCVde2NvbG9yOiNmNDQzMzZ9Lm1hdC1mb3JtLWZpZWxkLm1hdC1mb3JtLWZpZWxkLWludmFsaWRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLXJpcHBsZVtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtZm9ybS1maWVsZC5tYXQtZm9ybS1maWVsZC1pbnZhbGlkW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1yaXBwbGUubWF0LWFjY2VudFtfbmdjb250ZW50LSVDT01QJV17YmFja2dyb3VuZC1jb2xvcjojZjQ0MzM2fS5tYXQtZXJyb3JbX25nY29udGVudC0lQ09NUCVde2NvbG9yOiNmNDQzMzZ9Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtbGVnYWN5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17Y29sb3I6IzYxNjE2MX0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1sZWdhY3lbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1oaW50W19uZ2NvbnRlbnQtJUNPTVAlXXtjb2xvcjojNjE2MTYxfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWxlZ2FjeVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtdW5kZXJsaW5lW19uZ2NvbnRlbnQtJUNPTVAlXXtiYWNrZ3JvdW5kLWNvbG9yOnJnYmEoMCwwLDAsLjQyKX0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1sZWdhY3kubWF0LWZvcm0tZmllbGQtZGlzYWJsZWRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLXVuZGVybGluZVtfbmdjb250ZW50LSVDT01QJV17YmFja2dyb3VuZC1pbWFnZTpsaW5lYXItZ3JhZGllbnQodG8gcmlnaHQsIHJnYmEoMCwgMCwgMCwgMC40MikgMCUsIHJnYmEoMCwgMCwgMCwgMC40MikgMzMlLCB0cmFuc3BhcmVudCAwJSk7YmFja2dyb3VuZC1zaXplOjRweCAxMDAlO2JhY2tncm91bmQtcmVwZWF0OnJlcGVhdC14fS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLXN0YW5kYXJkW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC11bmRlcmxpbmVbX25nY29udGVudC0lQ09NUCVde2JhY2tncm91bmQtY29sb3I6cmdiYSgwLDAsMCwuNDIpfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLXN0YW5kYXJkLm1hdC1mb3JtLWZpZWxkLWRpc2FibGVkW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC11bmRlcmxpbmVbX25nY29udGVudC0lQ09NUCVde2JhY2tncm91bmQtaW1hZ2U6bGluZWFyLWdyYWRpZW50KHRvIHJpZ2h0LCByZ2JhKDAsIDAsIDAsIDAuNDIpIDAlLCByZ2JhKDAsIDAsIDAsIDAuNDIpIDMzJSwgdHJhbnNwYXJlbnQgMCUpO2JhY2tncm91bmQtc2l6ZTo0cHggMTAwJTtiYWNrZ3JvdW5kLXJlcGVhdDpyZXBlYXQteH0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1maWxsW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1mbGV4W19uZ2NvbnRlbnQtJUNPTVAlXXtiYWNrZ3JvdW5kLWNvbG9yOnJnYmEoMCwwLDAsLjA0KX0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1maWxsLm1hdC1mb3JtLWZpZWxkLWRpc2FibGVkW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1mbGV4W19uZ2NvbnRlbnQtJUNPTVAlXXtiYWNrZ3JvdW5kLWNvbG9yOnJnYmEoMCwwLDAsLjAyKX0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1maWxsW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC11bmRlcmxpbmVbX25nY29udGVudC0lQ09NUCVdOjpiZWZvcmV7YmFja2dyb3VuZC1jb2xvcjpyZ2JhKDAsMCwwLC40Mil9Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtZmlsbC5tYXQtZm9ybS1maWVsZC1kaXNhYmxlZFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVde2NvbG9yOiM3NTc1NzV9Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtZmlsbC5tYXQtZm9ybS1maWVsZC1kaXNhYmxlZFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtdW5kZXJsaW5lW19uZ2NvbnRlbnQtJUNPTVAlXTo6YmVmb3Jle2JhY2tncm91bmQtY29sb3I6dHJhbnNwYXJlbnR9Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2Utb3V0bGluZVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtb3V0bGluZVtfbmdjb250ZW50LSVDT01QJV17Y29sb3I6cmdiYSgwLDAsMCwuMTIpfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLW91dGxpbmVbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLW91dGxpbmUtdGhpY2tbX25nY29udGVudC0lQ09NUCVde2NvbG9yOnJnYmEoMCwwLDAsLjg3KX0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1vdXRsaW5lLm1hdC1mb2N1c2VkW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1vdXRsaW5lLXRoaWNrW19uZ2NvbnRlbnQtJUNPTVAlXXtjb2xvcjojZjU3YzAwfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLW91dGxpbmUubWF0LWZvY3VzZWQubWF0LWFjY2VudFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtb3V0bGluZS10aGlja1tfbmdjb250ZW50LSVDT01QJV17Y29sb3I6I2ZmOTgwMH0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1vdXRsaW5lLm1hdC1mb2N1c2VkLm1hdC13YXJuW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1vdXRsaW5lLXRoaWNrW19uZ2NvbnRlbnQtJUNPTVAlXXtjb2xvcjojZjQ0MzM2fS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLW91dGxpbmUubWF0LWZvcm0tZmllbGQtaW52YWxpZC5tYXQtZm9ybS1maWVsZC1pbnZhbGlkW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1vdXRsaW5lLXRoaWNrW19uZ2NvbnRlbnQtJUNPTVAlXXtjb2xvcjojZjQ0MzM2fS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLW91dGxpbmUubWF0LWZvcm0tZmllbGQtZGlzYWJsZWRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXtjb2xvcjojNzU3NTc1fS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLW91dGxpbmUubWF0LWZvcm0tZmllbGQtZGlzYWJsZWRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLW91dGxpbmVbX25nY29udGVudC0lQ09NUCVde2NvbG9yOnJnYmEoMCwwLDAsLjA2KX0ubWF0LWljb24ubWF0LXByaW1hcnlbX25nY29udGVudC0lQ09NUCVde2NvbG9yOiNmNTdjMDB9Lm1hdC1pY29uLm1hdC1hY2NlbnRbX25nY29udGVudC0lQ09NUCVde2NvbG9yOiNmZjk4MDB9Lm1hdC1pY29uLm1hdC13YXJuW19uZ2NvbnRlbnQtJUNPTVAlXXtjb2xvcjojZjQ0MzM2fS5tYXQtZm9ybS1maWVsZC10eXBlLW1hdC1uYXRpdmUtc2VsZWN0W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1pbmZpeFtfbmdjb250ZW50LSVDT01QJV06OmFmdGVye2NvbG9yOiM2MTYxNjF9Lm1hdC1pbnB1dC1lbGVtZW50W19uZ2NvbnRlbnQtJUNPTVAlXTpkaXNhYmxlZCwgLm1hdC1mb3JtLWZpZWxkLXR5cGUtbWF0LW5hdGl2ZS1zZWxlY3QubWF0LWZvcm0tZmllbGQtZGlzYWJsZWRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWluZml4W19uZ2NvbnRlbnQtJUNPTVAlXTo6YWZ0ZXJ7Y29sb3I6Izc1NzU3NX0ubWF0LWlucHV0LWVsZW1lbnRbX25nY29udGVudC0lQ09NUCVde2NhcmV0LWNvbG9yOiNmNTdjMDB9Lm1hdC1pbnB1dC1lbGVtZW50W19uZ2NvbnRlbnQtJUNPTVAlXTo6cGxhY2Vob2xkZXJ7Y29sb3I6cmdiYSg5Nyw5Nyw5NywuNDIpfS5tYXQtaW5wdXQtZWxlbWVudFtfbmdjb250ZW50LSVDT01QJV06Oi1tb3otcGxhY2Vob2xkZXJ7Y29sb3I6cmdiYSg5Nyw5Nyw5NywuNDIpfS5tYXQtaW5wdXQtZWxlbWVudFtfbmdjb250ZW50LSVDT01QJV06Oi13ZWJraXQtaW5wdXQtcGxhY2Vob2xkZXJ7Y29sb3I6cmdiYSg5Nyw5Nyw5NywuNDIpfS5tYXQtaW5wdXQtZWxlbWVudFtfbmdjb250ZW50LSVDT01QJV06LW1zLWlucHV0LXBsYWNlaG9sZGVye2NvbG9yOnJnYmEoOTcsOTcsOTcsLjQyKX0ubWF0LWZvcm0tZmllbGQubWF0LWFjY2VudFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWlucHV0LWVsZW1lbnRbX25nY29udGVudC0lQ09NUCVde2NhcmV0LWNvbG9yOiNmZjk4MDB9Lm1hdC1mb3JtLWZpZWxkLm1hdC13YXJuW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaW5wdXQtZWxlbWVudFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtZm9ybS1maWVsZC1pbnZhbGlkW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaW5wdXQtZWxlbWVudFtfbmdjb250ZW50LSVDT01QJV17Y2FyZXQtY29sb3I6I2Y0NDMzNn0ubWF0LWZvcm0tZmllbGQtdHlwZS1tYXQtbmF0aXZlLXNlbGVjdC5tYXQtZm9ybS1maWVsZC1pbnZhbGlkW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1pbmZpeFtfbmdjb250ZW50LSVDT01QJV06OmFmdGVye2NvbG9yOiNmNDQzMzZ9Lm1hdC1saXN0LWJhc2VbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saXN0LWl0ZW1bX25nY29udGVudC0lQ09NUCVde2NvbG9yOiMyMTIxMjF9Lm1hdC1saXN0LWJhc2VbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saXN0LW9wdGlvbltfbmdjb250ZW50LSVDT01QJV17Y29sb3I6IzIxMjEyMX0ubWF0LWxpc3QtYmFzZVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXN1YmhlYWRlcltfbmdjb250ZW50LSVDT01QJV17Y29sb3I6IzYxNjE2MX0ubWF0LWxpc3QtaXRlbS1kaXNhYmxlZFtfbmdjb250ZW50LSVDT01QJV17YmFja2dyb3VuZC1jb2xvcjojZWVlfS5tYXQtbGlzdC1vcHRpb25bX25nY29udGVudC0lQ09NUCVdOmhvdmVyLCAubWF0LWxpc3Qtb3B0aW9uW19uZ2NvbnRlbnQtJUNPTVAlXTpmb2N1cywgLm1hdC1uYXYtbGlzdFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpc3QtaXRlbVtfbmdjb250ZW50LSVDT01QJV06aG92ZXIsIC5tYXQtbmF2LWxpc3RbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saXN0LWl0ZW1bX25nY29udGVudC0lQ09NUCVdOmZvY3VzLCAubWF0LWFjdGlvbi1saXN0W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGlzdC1pdGVtW19uZ2NvbnRlbnQtJUNPTVAlXTpob3ZlciwgLm1hdC1hY3Rpb24tbGlzdFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpc3QtaXRlbVtfbmdjb250ZW50LSVDT01QJV06Zm9jdXN7YmFja2dyb3VuZDpyZ2JhKDAsMCwwLC4wNCl9Lm1hdC1saXN0LXNpbmdsZS1zZWxlY3RlZC1vcHRpb25bX25nY29udGVudC0lQ09NUCVdLCAubWF0LWxpc3Qtc2luZ2xlLXNlbGVjdGVkLW9wdGlvbltfbmdjb250ZW50LSVDT01QJV06aG92ZXIsIC5tYXQtbGlzdC1zaW5nbGUtc2VsZWN0ZWQtb3B0aW9uW19uZ2NvbnRlbnQtJUNPTVAlXTpmb2N1c3tiYWNrZ3JvdW5kOnJnYmEoMCwwLDAsLjEyKX0ubWF0LW1lbnUtcGFuZWxbX25nY29udGVudC0lQ09NUCVde2JhY2tncm91bmQ6I2ZmZn0ubWF0LW1lbnUtcGFuZWxbX25nY29udGVudC0lQ09NUCVdOm5vdChbY2xhc3MqPW1hdC1lbGV2YXRpb24tel0pe2JveC1zaGFkb3c6MHB4IDJweCA0cHggLTFweCByZ2JhKDAsIDAsIDAsIDAuMiksMHB4IDRweCA1cHggMHB4IHJnYmEoMCwgMCwgMCwgMC4xNCksMHB4IDFweCAxMHB4IDBweCByZ2JhKDAsIDAsIDAsIDAuMTIpfS5tYXQtbWVudS1pdGVtW19uZ2NvbnRlbnQtJUNPTVAlXXtiYWNrZ3JvdW5kOnRyYW5zcGFyZW50O2NvbG9yOiMyMTIxMjF9Lm1hdC1tZW51LWl0ZW1bZGlzYWJsZWRdW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1tZW51LWl0ZW1bZGlzYWJsZWRdW19uZ2NvbnRlbnQtJUNPTVAlXTo6YWZ0ZXJ7Y29sb3I6cmdiYSgwLDAsMCwuMzgpfS5tYXQtbWVudS1pdGVtW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaWNvbi1uby1jb2xvcltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtbWVudS1pdGVtLXN1Ym1lbnUtdHJpZ2dlcltfbmdjb250ZW50LSVDT01QJV06OmFmdGVye2NvbG9yOnJnYmEoMCwwLDAsLjU0KX0ubWF0LW1lbnUtaXRlbVtfbmdjb250ZW50LSVDT01QJV06aG92ZXI6bm90KFtkaXNhYmxlZF0pLCAubWF0LW1lbnUtaXRlbS5jZGstcHJvZ3JhbS1mb2N1c2VkW19uZ2NvbnRlbnQtJUNPTVAlXTpub3QoW2Rpc2FibGVkXSksIC5tYXQtbWVudS1pdGVtLmNkay1rZXlib2FyZC1mb2N1c2VkW19uZ2NvbnRlbnQtJUNPTVAlXTpub3QoW2Rpc2FibGVkXSksIC5tYXQtbWVudS1pdGVtLWhpZ2hsaWdodGVkW19uZ2NvbnRlbnQtJUNPTVAlXTpub3QoW2Rpc2FibGVkXSl7YmFja2dyb3VuZDpyZ2JhKDAsMCwwLC4wNCl9Lm1hdC1wYWdpbmF0b3JbX25nY29udGVudC0lQ09NUCVde2JhY2tncm91bmQ6I2ZmZn0ubWF0LXBhZ2luYXRvcltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtcGFnaW5hdG9yLXBhZ2Utc2l6ZVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXNlbGVjdC10cmlnZ2VyW19uZ2NvbnRlbnQtJUNPTVAlXXtjb2xvcjojNjE2MTYxfS5tYXQtcGFnaW5hdG9yLWRlY3JlbWVudFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtcGFnaW5hdG9yLWluY3JlbWVudFtfbmdjb250ZW50LSVDT01QJV17Ym9yZGVyLXRvcDoycHggc29saWQgcmdiYSgwLDAsMCwuNTQpO2JvcmRlci1yaWdodDoycHggc29saWQgcmdiYSgwLDAsMCwuNTQpfS5tYXQtcGFnaW5hdG9yLWZpcnN0W19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1wYWdpbmF0b3ItbGFzdFtfbmdjb250ZW50LSVDT01QJV17Ym9yZGVyLXRvcDoycHggc29saWQgcmdiYSgwLDAsMCwuNTQpfS5tYXQtaWNvbi1idXR0b25bZGlzYWJsZWRdW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtcGFnaW5hdG9yLWRlY3JlbWVudFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtaWNvbi1idXR0b25bZGlzYWJsZWRdW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtcGFnaW5hdG9yLWluY3JlbWVudFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtaWNvbi1idXR0b25bZGlzYWJsZWRdW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtcGFnaW5hdG9yLWZpcnN0W19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1pY29uLWJ1dHRvbltkaXNhYmxlZF1bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1wYWdpbmF0b3ItbGFzdFtfbmdjb250ZW50LSVDT01QJV17Ym9yZGVyLWNvbG9yOnJnYmEoMCwwLDAsLjM4KX0ubWF0LXBhZ2luYXRvci1jb250YWluZXJbX25nY29udGVudC0lQ09NUCVde21pbi1oZWlnaHQ6NTZweH0ubWF0LXByb2dyZXNzLWJhci1iYWNrZ3JvdW5kW19uZ2NvbnRlbnQtJUNPTVAlXXtmaWxsOiNmZjk4MDB9Lm1hdC1wcm9ncmVzcy1iYXItYnVmZmVyW19uZ2NvbnRlbnQtJUNPTVAlXXtiYWNrZ3JvdW5kLWNvbG9yOiNmZjk4MDB9Lm1hdC1wcm9ncmVzcy1iYXItZmlsbFtfbmdjb250ZW50LSVDT01QJV06OmFmdGVye2JhY2tncm91bmQtY29sb3I6I2Y1N2MwMH0ubWF0LXByb2dyZXNzLWJhci5tYXQtYWNjZW50W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtcHJvZ3Jlc3MtYmFyLWJhY2tncm91bmRbX25nY29udGVudC0lQ09NUCVde2ZpbGw6I2ZmOTgwMH0ubWF0LXByb2dyZXNzLWJhci5tYXQtYWNjZW50W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtcHJvZ3Jlc3MtYmFyLWJ1ZmZlcltfbmdjb250ZW50LSVDT01QJV17YmFja2dyb3VuZC1jb2xvcjojZmY5ODAwfS5tYXQtcHJvZ3Jlc3MtYmFyLm1hdC1hY2NlbnRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1wcm9ncmVzcy1iYXItZmlsbFtfbmdjb250ZW50LSVDT01QJV06OmFmdGVye2JhY2tncm91bmQtY29sb3I6I2ZmOTgwMH0ubWF0LXByb2dyZXNzLWJhci5tYXQtd2Fybltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXByb2dyZXNzLWJhci1iYWNrZ3JvdW5kW19uZ2NvbnRlbnQtJUNPTVAlXXtmaWxsOiNmZmNkZDJ9Lm1hdC1wcm9ncmVzcy1iYXIubWF0LXdhcm5bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1wcm9ncmVzcy1iYXItYnVmZmVyW19uZ2NvbnRlbnQtJUNPTVAlXXtiYWNrZ3JvdW5kLWNvbG9yOiNmZmNkZDJ9Lm1hdC1wcm9ncmVzcy1iYXIubWF0LXdhcm5bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1wcm9ncmVzcy1iYXItZmlsbFtfbmdjb250ZW50LSVDT01QJV06OmFmdGVye2JhY2tncm91bmQtY29sb3I6I2Y0NDMzNn0ubWF0LXByb2dyZXNzLXNwaW5uZXJbX25nY29udGVudC0lQ09NUCVdICAgY2lyY2xlW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1zcGlubmVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIGNpcmNsZVtfbmdjb250ZW50LSVDT01QJV17c3Ryb2tlOiNmNTdjMDB9Lm1hdC1wcm9ncmVzcy1zcGlubmVyLm1hdC1hY2NlbnRbX25nY29udGVudC0lQ09NUCVdICAgY2lyY2xlW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1zcGlubmVyLm1hdC1hY2NlbnRbX25nY29udGVudC0lQ09NUCVdICAgY2lyY2xlW19uZ2NvbnRlbnQtJUNPTVAlXXtzdHJva2U6I2ZmOTgwMH0ubWF0LXByb2dyZXNzLXNwaW5uZXIubWF0LXdhcm5bX25nY29udGVudC0lQ09NUCVdICAgY2lyY2xlW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1zcGlubmVyLm1hdC13YXJuW19uZ2NvbnRlbnQtJUNPTVAlXSAgIGNpcmNsZVtfbmdjb250ZW50LSVDT01QJV17c3Ryb2tlOiNmNDQzMzZ9Lm1hdC1yYWRpby1vdXRlci1jaXJjbGVbX25nY29udGVudC0lQ09NUCVde2JvcmRlci1jb2xvcjojNjE2MTYxfS5tYXQtcmFkaW8tYnV0dG9uLm1hdC1wcmltYXJ5Lm1hdC1yYWRpby1jaGVja2VkW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtcmFkaW8tb3V0ZXItY2lyY2xlW19uZ2NvbnRlbnQtJUNPTVAlXXtib3JkZXItY29sb3I6I2Y1N2MwMH0ubWF0LXJhZGlvLWJ1dHRvbi5tYXQtcHJpbWFyeVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXJhZGlvLWlubmVyLWNpcmNsZVtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtcmFkaW8tYnV0dG9uLm1hdC1wcmltYXJ5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtcmFkaW8tcmlwcGxlW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtcmlwcGxlLWVsZW1lbnRbX25nY29udGVudC0lQ09NUCVdOm5vdCgubWF0LXJhZGlvLXBlcnNpc3RlbnQtcmlwcGxlKSwgLm1hdC1yYWRpby1idXR0b24ubWF0LXByaW1hcnkubWF0LXJhZGlvLWNoZWNrZWRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1yYWRpby1wZXJzaXN0ZW50LXJpcHBsZVtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtcmFkaW8tYnV0dG9uLm1hdC1wcmltYXJ5W19uZ2NvbnRlbnQtJUNPTVAlXTphY3RpdmUgICAubWF0LXJhZGlvLXBlcnNpc3RlbnQtcmlwcGxlW19uZ2NvbnRlbnQtJUNPTVAlXXtiYWNrZ3JvdW5kLWNvbG9yOiNmNTdjMDB9Lm1hdC1yYWRpby1idXR0b24ubWF0LWFjY2VudC5tYXQtcmFkaW8tY2hlY2tlZFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXJhZGlvLW91dGVyLWNpcmNsZVtfbmdjb250ZW50LSVDT01QJV17Ym9yZGVyLWNvbG9yOiNmZjk4MDB9Lm1hdC1yYWRpby1idXR0b24ubWF0LWFjY2VudFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXJhZGlvLWlubmVyLWNpcmNsZVtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtcmFkaW8tYnV0dG9uLm1hdC1hY2NlbnRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1yYWRpby1yaXBwbGVbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1yaXBwbGUtZWxlbWVudFtfbmdjb250ZW50LSVDT01QJV06bm90KC5tYXQtcmFkaW8tcGVyc2lzdGVudC1yaXBwbGUpLCAubWF0LXJhZGlvLWJ1dHRvbi5tYXQtYWNjZW50Lm1hdC1yYWRpby1jaGVja2VkW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtcmFkaW8tcGVyc2lzdGVudC1yaXBwbGVbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXJhZGlvLWJ1dHRvbi5tYXQtYWNjZW50W19uZ2NvbnRlbnQtJUNPTVAlXTphY3RpdmUgICAubWF0LXJhZGlvLXBlcnNpc3RlbnQtcmlwcGxlW19uZ2NvbnRlbnQtJUNPTVAlXXtiYWNrZ3JvdW5kLWNvbG9yOiNmZjk4MDB9Lm1hdC1yYWRpby1idXR0b24ubWF0LXdhcm4ubWF0LXJhZGlvLWNoZWNrZWRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1yYWRpby1vdXRlci1jaXJjbGVbX25nY29udGVudC0lQ09NUCVde2JvcmRlci1jb2xvcjojZjQ0MzM2fS5tYXQtcmFkaW8tYnV0dG9uLm1hdC13YXJuW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtcmFkaW8taW5uZXItY2lyY2xlW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1yYWRpby1idXR0b24ubWF0LXdhcm5bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1yYWRpby1yaXBwbGVbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1yaXBwbGUtZWxlbWVudFtfbmdjb250ZW50LSVDT01QJV06bm90KC5tYXQtcmFkaW8tcGVyc2lzdGVudC1yaXBwbGUpLCAubWF0LXJhZGlvLWJ1dHRvbi5tYXQtd2Fybi5tYXQtcmFkaW8tY2hlY2tlZFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXJhZGlvLXBlcnNpc3RlbnQtcmlwcGxlW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1yYWRpby1idXR0b24ubWF0LXdhcm5bX25nY29udGVudC0lQ09NUCVdOmFjdGl2ZSAgIC5tYXQtcmFkaW8tcGVyc2lzdGVudC1yaXBwbGVbX25nY29udGVudC0lQ09NUCVde2JhY2tncm91bmQtY29sb3I6I2Y0NDMzNn0ubWF0LXJhZGlvLWJ1dHRvbi5tYXQtcmFkaW8tZGlzYWJsZWQubWF0LXJhZGlvLWNoZWNrZWRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1yYWRpby1vdXRlci1jaXJjbGVbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXJhZGlvLWJ1dHRvbi5tYXQtcmFkaW8tZGlzYWJsZWRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1yYWRpby1vdXRlci1jaXJjbGVbX25nY29udGVudC0lQ09NUCVde2JvcmRlci1jb2xvcjpyZ2JhKDAsMCwwLC4zOCl9Lm1hdC1yYWRpby1idXR0b24ubWF0LXJhZGlvLWRpc2FibGVkW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtcmFkaW8tcmlwcGxlW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtcmlwcGxlLWVsZW1lbnRbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXJhZGlvLWJ1dHRvbi5tYXQtcmFkaW8tZGlzYWJsZWRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1yYWRpby1pbm5lci1jaXJjbGVbX25nY29udGVudC0lQ09NUCVde2JhY2tncm91bmQtY29sb3I6cmdiYSgwLDAsMCwuMzgpfS5tYXQtcmFkaW8tYnV0dG9uLm1hdC1yYWRpby1kaXNhYmxlZFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXJhZGlvLWxhYmVsLWNvbnRlbnRbX25nY29udGVudC0lQ09NUCVde2NvbG9yOnJnYmEoMCwwLDAsLjM4KX0ubWF0LXJhZGlvLWJ1dHRvbltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXJpcHBsZS1lbGVtZW50W19uZ2NvbnRlbnQtJUNPTVAlXXtiYWNrZ3JvdW5kLWNvbG9yOiMwMDB9Lm1hdC1zZWxlY3QtdmFsdWVbX25nY29udGVudC0lQ09NUCVde2NvbG9yOiMyMTIxMjF9Lm1hdC1zZWxlY3QtcGxhY2Vob2xkZXJbX25nY29udGVudC0lQ09NUCVde2NvbG9yOnJnYmEoOTcsOTcsOTcsLjQyKX0ubWF0LXNlbGVjdC1kaXNhYmxlZFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXNlbGVjdC12YWx1ZVtfbmdjb250ZW50LSVDT01QJV17Y29sb3I6Izc1NzU3NX0ubWF0LXNlbGVjdC1hcnJvd1tfbmdjb250ZW50LSVDT01QJV17Y29sb3I6IzYxNjE2MX0ubWF0LXNlbGVjdC1wYW5lbFtfbmdjb250ZW50LSVDT01QJV17YmFja2dyb3VuZDojZmZmfS5tYXQtc2VsZWN0LXBhbmVsW19uZ2NvbnRlbnQtJUNPTVAlXTpub3QoW2NsYXNzKj1tYXQtZWxldmF0aW9uLXpdKXtib3gtc2hhZG93OjBweCAycHggNHB4IC0xcHggcmdiYSgwLCAwLCAwLCAwLjIpLDBweCA0cHggNXB4IDBweCByZ2JhKDAsIDAsIDAsIDAuMTQpLDBweCAxcHggMTBweCAwcHggcmdiYSgwLCAwLCAwLCAwLjEyKX0ubWF0LXNlbGVjdC1wYW5lbFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LW9wdGlvbi5tYXQtc2VsZWN0ZWRbX25nY29udGVudC0lQ09NUCVdOm5vdCgubWF0LW9wdGlvbi1tdWx0aXBsZSl7YmFja2dyb3VuZDpyZ2JhKDAsMCwwLC4xMil9Lm1hdC1mb3JtLWZpZWxkLm1hdC1mb2N1c2VkLm1hdC1wcmltYXJ5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtc2VsZWN0LWFycm93W19uZ2NvbnRlbnQtJUNPTVAlXXtjb2xvcjojZjU3YzAwfS5tYXQtZm9ybS1maWVsZC5tYXQtZm9jdXNlZC5tYXQtYWNjZW50W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtc2VsZWN0LWFycm93W19uZ2NvbnRlbnQtJUNPTVAlXXtjb2xvcjojZmY5ODAwfS5tYXQtZm9ybS1maWVsZC5tYXQtZm9jdXNlZC5tYXQtd2Fybltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXNlbGVjdC1hcnJvd1tfbmdjb250ZW50LSVDT01QJV17Y29sb3I6I2Y0NDMzNn0ubWF0LWZvcm0tZmllbGRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1zZWxlY3QubWF0LXNlbGVjdC1pbnZhbGlkW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtc2VsZWN0LWFycm93W19uZ2NvbnRlbnQtJUNPTVAlXXtjb2xvcjojZjQ0MzM2fS5tYXQtZm9ybS1maWVsZFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXNlbGVjdC5tYXQtc2VsZWN0LWRpc2FibGVkW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtc2VsZWN0LWFycm93W19uZ2NvbnRlbnQtJUNPTVAlXXtjb2xvcjojNzU3NTc1fS5tYXQtZHJhd2VyLWNvbnRhaW5lcltfbmdjb250ZW50LSVDT01QJV17YmFja2dyb3VuZC1jb2xvcjojZmFmYWZhO2NvbG9yOiMyMTIxMjF9Lm1hdC1kcmF3ZXJbX25nY29udGVudC0lQ09NUCVde2JhY2tncm91bmQtY29sb3I6I2ZmZjtjb2xvcjojMjEyMTIxfS5tYXQtZHJhd2VyLm1hdC1kcmF3ZXItcHVzaFtfbmdjb250ZW50LSVDT01QJV17YmFja2dyb3VuZC1jb2xvcjojZmZmfS5tYXQtZHJhd2VyW19uZ2NvbnRlbnQtJUNPTVAlXTpub3QoLm1hdC1kcmF3ZXItc2lkZSl7Ym94LXNoYWRvdzowcHggOHB4IDEwcHggLTVweCByZ2JhKDAsIDAsIDAsIDAuMiksMHB4IDE2cHggMjRweCAycHggcmdiYSgwLCAwLCAwLCAwLjE0KSwwcHggNnB4IDMwcHggNXB4IHJnYmEoMCwgMCwgMCwgMC4xMil9Lm1hdC1kcmF3ZXItc2lkZVtfbmdjb250ZW50LSVDT01QJV17Ym9yZGVyLXJpZ2h0OnNvbGlkIDFweCByZ2JhKDAsMCwwLC4xMil9Lm1hdC1kcmF3ZXItc2lkZS5tYXQtZHJhd2VyLWVuZFtfbmdjb250ZW50LSVDT01QJV17Ym9yZGVyLWxlZnQ6c29saWQgMXB4IHJnYmEoMCwwLDAsLjEyKTtib3JkZXItcmlnaHQ6bm9uZX1bZGlyPXJ0bF1bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1kcmF3ZXItc2lkZVtfbmdjb250ZW50LSVDT01QJV17Ym9yZGVyLWxlZnQ6c29saWQgMXB4IHJnYmEoMCwwLDAsLjEyKTtib3JkZXItcmlnaHQ6bm9uZX1bZGlyPXJ0bF1bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1kcmF3ZXItc2lkZS5tYXQtZHJhd2VyLWVuZFtfbmdjb250ZW50LSVDT01QJV17Ym9yZGVyLWxlZnQ6bm9uZTtib3JkZXItcmlnaHQ6c29saWQgMXB4IHJnYmEoMCwwLDAsLjEyKX0ubWF0LWRyYXdlci1iYWNrZHJvcC5tYXQtZHJhd2VyLXNob3duW19uZ2NvbnRlbnQtJUNPTVAlXXtiYWNrZ3JvdW5kLWNvbG9yOnJnYmEoMCwwLDAsLjYpfS5tYXQtc2xpZGUtdG9nZ2xlLm1hdC1jaGVja2VkW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtc2xpZGUtdG9nZ2xlLXRodW1iW19uZ2NvbnRlbnQtJUNPTVAlXXtiYWNrZ3JvdW5kLWNvbG9yOiNmZjk4MDB9Lm1hdC1zbGlkZS10b2dnbGUubWF0LWNoZWNrZWRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1zbGlkZS10b2dnbGUtYmFyW19uZ2NvbnRlbnQtJUNPTVAlXXtiYWNrZ3JvdW5kLWNvbG9yOnJnYmEoMjU1LDE1MiwwLC41NCl9Lm1hdC1zbGlkZS10b2dnbGUubWF0LWNoZWNrZWRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1yaXBwbGUtZWxlbWVudFtfbmdjb250ZW50LSVDT01QJV17YmFja2dyb3VuZC1jb2xvcjojZmY5ODAwfS5tYXQtc2xpZGUtdG9nZ2xlLm1hdC1wcmltYXJ5Lm1hdC1jaGVja2VkW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtc2xpZGUtdG9nZ2xlLXRodW1iW19uZ2NvbnRlbnQtJUNPTVAlXXtiYWNrZ3JvdW5kLWNvbG9yOiNmNTdjMDB9Lm1hdC1zbGlkZS10b2dnbGUubWF0LXByaW1hcnkubWF0LWNoZWNrZWRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1zbGlkZS10b2dnbGUtYmFyW19uZ2NvbnRlbnQtJUNPTVAlXXtiYWNrZ3JvdW5kLWNvbG9yOnJnYmEoMjQ1LDEyNCwwLC41NCl9Lm1hdC1zbGlkZS10b2dnbGUubWF0LXByaW1hcnkubWF0LWNoZWNrZWRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1yaXBwbGUtZWxlbWVudFtfbmdjb250ZW50LSVDT01QJV17YmFja2dyb3VuZC1jb2xvcjojZjU3YzAwfS5tYXQtc2xpZGUtdG9nZ2xlLm1hdC13YXJuLm1hdC1jaGVja2VkW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtc2xpZGUtdG9nZ2xlLXRodW1iW19uZ2NvbnRlbnQtJUNPTVAlXXtiYWNrZ3JvdW5kLWNvbG9yOiNmNDQzMzZ9Lm1hdC1zbGlkZS10b2dnbGUubWF0LXdhcm4ubWF0LWNoZWNrZWRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1zbGlkZS10b2dnbGUtYmFyW19uZ2NvbnRlbnQtJUNPTVAlXXtiYWNrZ3JvdW5kLWNvbG9yOnJnYmEoMjQ0LDY3LDU0LC41NCl9Lm1hdC1zbGlkZS10b2dnbGUubWF0LXdhcm4ubWF0LWNoZWNrZWRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1yaXBwbGUtZWxlbWVudFtfbmdjb250ZW50LSVDT01QJV17YmFja2dyb3VuZC1jb2xvcjojZjQ0MzM2fS5tYXQtc2xpZGUtdG9nZ2xlW19uZ2NvbnRlbnQtJUNPTVAlXTpub3QoLm1hdC1jaGVja2VkKSAgIC5tYXQtcmlwcGxlLWVsZW1lbnRbX25nY29udGVudC0lQ09NUCVde2JhY2tncm91bmQtY29sb3I6IzAwMH0ubWF0LXNsaWRlLXRvZ2dsZS10aHVtYltfbmdjb250ZW50LSVDT01QJV17Ym94LXNoYWRvdzowcHggMnB4IDFweCAtMXB4IHJnYmEoMCwgMCwgMCwgMC4yKSwwcHggMXB4IDFweCAwcHggcmdiYSgwLCAwLCAwLCAwLjE0KSwwcHggMXB4IDNweCAwcHggcmdiYSgwLCAwLCAwLCAwLjEyKTtiYWNrZ3JvdW5kLWNvbG9yOiNmYWZhZmF9Lm1hdC1zbGlkZS10b2dnbGUtYmFyW19uZ2NvbnRlbnQtJUNPTVAlXXtiYWNrZ3JvdW5kLWNvbG9yOnJnYmEoMCwwLDAsLjM4KX0ubWF0LXNsaWRlci10cmFjay1iYWNrZ3JvdW5kW19uZ2NvbnRlbnQtJUNPTVAlXXtiYWNrZ3JvdW5kLWNvbG9yOnJnYmEoMCwwLDAsLjI2KX0ubWF0LXByaW1hcnlbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1zbGlkZXItdHJhY2stZmlsbFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtcHJpbWFyeVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXNsaWRlci10aHVtYltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtcHJpbWFyeVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXNsaWRlci10aHVtYi1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17YmFja2dyb3VuZC1jb2xvcjojZjU3YzAwfS5tYXQtcHJpbWFyeVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXNsaWRlci10aHVtYi1sYWJlbC10ZXh0W19uZ2NvbnRlbnQtJUNPTVAlXXtjb2xvcjojZmZmfS5tYXQtcHJpbWFyeVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXNsaWRlci1mb2N1cy1yaW5nW19uZ2NvbnRlbnQtJUNPTVAlXXtiYWNrZ3JvdW5kLWNvbG9yOnJnYmEoMjQ1LDEyNCwwLC4yKX0ubWF0LWFjY2VudFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXNsaWRlci10cmFjay1maWxsW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1hY2NlbnRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1zbGlkZXItdGh1bWJbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWFjY2VudFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXNsaWRlci10aHVtYi1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17YmFja2dyb3VuZC1jb2xvcjojZmY5ODAwfS5tYXQtYWNjZW50W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtc2xpZGVyLXRodW1iLWxhYmVsLXRleHRbX25nY29udGVudC0lQ09NUCVde2NvbG9yOiNmZmZ9Lm1hdC1hY2NlbnRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1zbGlkZXItZm9jdXMtcmluZ1tfbmdjb250ZW50LSVDT01QJV17YmFja2dyb3VuZC1jb2xvcjpyZ2JhKDI1NSwxNTIsMCwuMil9Lm1hdC13YXJuW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtc2xpZGVyLXRyYWNrLWZpbGxbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXdhcm5bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1zbGlkZXItdGh1bWJbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXdhcm5bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1zbGlkZXItdGh1bWItbGFiZWxbX25nY29udGVudC0lQ09NUCVde2JhY2tncm91bmQtY29sb3I6I2Y0NDMzNn0ubWF0LXdhcm5bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1zbGlkZXItdGh1bWItbGFiZWwtdGV4dFtfbmdjb250ZW50LSVDT01QJV17Y29sb3I6I2ZmZn0ubWF0LXdhcm5bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1zbGlkZXItZm9jdXMtcmluZ1tfbmdjb250ZW50LSVDT01QJV17YmFja2dyb3VuZC1jb2xvcjpyZ2JhKDI0NCw2Nyw1NCwuMil9Lm1hdC1zbGlkZXJbX25nY29udGVudC0lQ09NUCVdOmhvdmVyICAgLm1hdC1zbGlkZXItdHJhY2stYmFja2dyb3VuZFtfbmdjb250ZW50LSVDT01QJV0sIC5jZGstZm9jdXNlZFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXNsaWRlci10cmFjay1iYWNrZ3JvdW5kW19uZ2NvbnRlbnQtJUNPTVAlXXtiYWNrZ3JvdW5kLWNvbG9yOnJnYmEoMCwwLDAsLjM4KX0ubWF0LXNsaWRlci1kaXNhYmxlZFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXNsaWRlci10cmFjay1iYWNrZ3JvdW5kW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1zbGlkZXItZGlzYWJsZWRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1zbGlkZXItdHJhY2stZmlsbFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtc2xpZGVyLWRpc2FibGVkW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtc2xpZGVyLXRodW1iW19uZ2NvbnRlbnQtJUNPTVAlXXtiYWNrZ3JvdW5kLWNvbG9yOnJnYmEoMCwwLDAsLjI2KX0ubWF0LXNsaWRlci1kaXNhYmxlZFtfbmdjb250ZW50LSVDT01QJV06aG92ZXIgICAubWF0LXNsaWRlci10cmFjay1iYWNrZ3JvdW5kW19uZ2NvbnRlbnQtJUNPTVAlXXtiYWNrZ3JvdW5kLWNvbG9yOnJnYmEoMCwwLDAsLjI2KX0ubWF0LXNsaWRlci1taW4tdmFsdWVbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1zbGlkZXItZm9jdXMtcmluZ1tfbmdjb250ZW50LSVDT01QJV17YmFja2dyb3VuZC1jb2xvcjpyZ2JhKDAsMCwwLC4xMil9Lm1hdC1zbGlkZXItbWluLXZhbHVlLm1hdC1zbGlkZXItdGh1bWItbGFiZWwtc2hvd2luZ1tfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXNsaWRlci10aHVtYltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtc2xpZGVyLW1pbi12YWx1ZS5tYXQtc2xpZGVyLXRodW1iLWxhYmVsLXNob3dpbmdbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1zbGlkZXItdGh1bWItbGFiZWxbX25nY29udGVudC0lQ09NUCVde2JhY2tncm91bmQtY29sb3I6cmdiYSgwLDAsMCwuODcpfS5tYXQtc2xpZGVyLW1pbi12YWx1ZS5tYXQtc2xpZGVyLXRodW1iLWxhYmVsLXNob3dpbmcuY2RrLWZvY3VzZWRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1zbGlkZXItdGh1bWJbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXNsaWRlci1taW4tdmFsdWUubWF0LXNsaWRlci10aHVtYi1sYWJlbC1zaG93aW5nLmNkay1mb2N1c2VkW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtc2xpZGVyLXRodW1iLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXtiYWNrZ3JvdW5kLWNvbG9yOnJnYmEoMCwwLDAsLjI2KX0ubWF0LXNsaWRlci1taW4tdmFsdWVbX25nY29udGVudC0lQ09NUCVdOm5vdCgubWF0LXNsaWRlci10aHVtYi1sYWJlbC1zaG93aW5nKSAgIC5tYXQtc2xpZGVyLXRodW1iW19uZ2NvbnRlbnQtJUNPTVAlXXtib3JkZXItY29sb3I6cmdiYSgwLDAsMCwuMjYpO2JhY2tncm91bmQtY29sb3I6dHJhbnNwYXJlbnR9Lm1hdC1zbGlkZXItbWluLXZhbHVlW19uZ2NvbnRlbnQtJUNPTVAlXTpub3QoLm1hdC1zbGlkZXItdGh1bWItbGFiZWwtc2hvd2luZyk6aG92ZXIgICAubWF0LXNsaWRlci10aHVtYltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtc2xpZGVyLW1pbi12YWx1ZVtfbmdjb250ZW50LSVDT01QJV06bm90KC5tYXQtc2xpZGVyLXRodW1iLWxhYmVsLXNob3dpbmcpLmNkay1mb2N1c2VkICAgLm1hdC1zbGlkZXItdGh1bWJbX25nY29udGVudC0lQ09NUCVde2JvcmRlci1jb2xvcjpyZ2JhKDAsMCwwLC4zOCl9Lm1hdC1zbGlkZXItbWluLXZhbHVlW19uZ2NvbnRlbnQtJUNPTVAlXTpub3QoLm1hdC1zbGlkZXItdGh1bWItbGFiZWwtc2hvd2luZyk6aG92ZXIubWF0LXNsaWRlci1kaXNhYmxlZCAgIC5tYXQtc2xpZGVyLXRodW1iW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1zbGlkZXItbWluLXZhbHVlW19uZ2NvbnRlbnQtJUNPTVAlXTpub3QoLm1hdC1zbGlkZXItdGh1bWItbGFiZWwtc2hvd2luZykuY2RrLWZvY3VzZWQubWF0LXNsaWRlci1kaXNhYmxlZCAgIC5tYXQtc2xpZGVyLXRodW1iW19uZ2NvbnRlbnQtJUNPTVAlXXtib3JkZXItY29sb3I6cmdiYSgwLDAsMCwuMjYpfS5tYXQtc2xpZGVyLWhhcy10aWNrc1tfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXNsaWRlci13cmFwcGVyW19uZ2NvbnRlbnQtJUNPTVAlXTo6YWZ0ZXJ7Ym9yZGVyLWNvbG9yOnJnYmEoMCwwLDAsLjcpfS5tYXQtc2xpZGVyLWhvcml6b250YWxbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1zbGlkZXItdGlja3NbX25nY29udGVudC0lQ09NUCVde2JhY2tncm91bmQtaW1hZ2U6cmVwZWF0aW5nLWxpbmVhci1ncmFkaWVudCh0byByaWdodCwgcmdiYSgwLCAwLCAwLCAwLjcpLCByZ2JhKDAsIDAsIDAsIDAuNykgMnB4LCB0cmFuc3BhcmVudCAwLCB0cmFuc3BhcmVudCk7YmFja2dyb3VuZC1pbWFnZTotbW96LXJlcGVhdGluZy1saW5lYXItZ3JhZGllbnQoMC4wMDAxZGVnLCByZ2JhKDAsIDAsIDAsIDAuNyksIHJnYmEoMCwgMCwgMCwgMC43KSAycHgsIHRyYW5zcGFyZW50IDAsIHRyYW5zcGFyZW50KX0ubWF0LXNsaWRlci12ZXJ0aWNhbFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXNsaWRlci10aWNrc1tfbmdjb250ZW50LSVDT01QJV17YmFja2dyb3VuZC1pbWFnZTpyZXBlYXRpbmctbGluZWFyLWdyYWRpZW50KHRvIGJvdHRvbSwgcmdiYSgwLCAwLCAwLCAwLjcpLCByZ2JhKDAsIDAsIDAsIDAuNykgMnB4LCB0cmFuc3BhcmVudCAwLCB0cmFuc3BhcmVudCl9Lm1hdC1zdGVwLWhlYWRlci5jZGsta2V5Ym9hcmQtZm9jdXNlZFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtc3RlcC1oZWFkZXIuY2RrLXByb2dyYW0tZm9jdXNlZFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtc3RlcC1oZWFkZXJbX25nY29udGVudC0lQ09NUCVdOmhvdmVye2JhY2tncm91bmQtY29sb3I6cmdiYSgwLDAsMCwuMDQpfUBtZWRpYShob3Zlcjogbm9uZSl7Lm1hdC1zdGVwLWhlYWRlcltfbmdjb250ZW50LSVDT01QJV06aG92ZXJ7YmFja2dyb3VuZDpub25lfX0ubWF0LXN0ZXAtaGVhZGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtc3RlcC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtc3RlcC1oZWFkZXJbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1zdGVwLW9wdGlvbmFsW19uZ2NvbnRlbnQtJUNPTVAlXXtjb2xvcjojNjE2MTYxfS5tYXQtc3RlcC1oZWFkZXJbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1zdGVwLWljb25bX25nY29udGVudC0lQ09NUCVde2JhY2tncm91bmQtY29sb3I6IzYxNjE2MTtjb2xvcjojZmZmfS5tYXQtc3RlcC1oZWFkZXJbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1zdGVwLWljb24tc2VsZWN0ZWRbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXN0ZXAtaGVhZGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtc3RlcC1pY29uLXN0YXRlLWRvbmVbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXN0ZXAtaGVhZGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtc3RlcC1pY29uLXN0YXRlLWVkaXRbX25nY29udGVudC0lQ09NUCVde2JhY2tncm91bmQtY29sb3I6I2Y1N2MwMDtjb2xvcjojZmZmfS5tYXQtc3RlcC1oZWFkZXJbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1zdGVwLWljb24tc3RhdGUtZXJyb3JbX25nY29udGVudC0lQ09NUCVde2JhY2tncm91bmQtY29sb3I6dHJhbnNwYXJlbnQ7Y29sb3I6I2Y0NDMzNn0ubWF0LXN0ZXAtaGVhZGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtc3RlcC1sYWJlbC5tYXQtc3RlcC1sYWJlbC1hY3RpdmVbX25nY29udGVudC0lQ09NUCVde2NvbG9yOiMyMTIxMjF9Lm1hdC1zdGVwLWhlYWRlcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXN0ZXAtbGFiZWwubWF0LXN0ZXAtbGFiZWwtZXJyb3JbX25nY29udGVudC0lQ09NUCVde2NvbG9yOiNmNDQzMzZ9Lm1hdC1zdGVwcGVyLWhvcml6b250YWxbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXN0ZXBwZXItdmVydGljYWxbX25nY29udGVudC0lQ09NUCVde2JhY2tncm91bmQtY29sb3I6I2ZmZn0ubWF0LXN0ZXBwZXItdmVydGljYWwtbGluZVtfbmdjb250ZW50LSVDT01QJV06OmJlZm9yZXtib3JkZXItbGVmdC1jb2xvcjpyZ2JhKDAsMCwwLC4xMil9Lm1hdC1ob3Jpem9udGFsLXN0ZXBwZXItaGVhZGVyW19uZ2NvbnRlbnQtJUNPTVAlXTo6YmVmb3JlLCAubWF0LWhvcml6b250YWwtc3RlcHBlci1oZWFkZXJbX25nY29udGVudC0lQ09NUCVdOjphZnRlciwgLm1hdC1zdGVwcGVyLWhvcml6b250YWwtbGluZVtfbmdjb250ZW50LSVDT01QJV17Ym9yZGVyLXRvcC1jb2xvcjpyZ2JhKDAsMCwwLC4xMil9Lm1hdC1ob3Jpem9udGFsLXN0ZXBwZXItaGVhZGVyW19uZ2NvbnRlbnQtJUNPTVAlXXtoZWlnaHQ6NzJweH0ubWF0LXN0ZXBwZXItbGFiZWwtcG9zaXRpb24tYm90dG9tW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaG9yaXpvbnRhbC1zdGVwcGVyLWhlYWRlcltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdmVydGljYWwtc3RlcHBlci1oZWFkZXJbX25nY29udGVudC0lQ09NUCVde3BhZGRpbmc6MjRweCAyNHB4fS5tYXQtc3RlcHBlci12ZXJ0aWNhbC1saW5lW19uZ2NvbnRlbnQtJUNPTVAlXTo6YmVmb3Jle3RvcDotMTZweDtib3R0b206LTE2cHh9Lm1hdC1zdGVwcGVyLWxhYmVsLXBvc2l0aW9uLWJvdHRvbVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWhvcml6b250YWwtc3RlcHBlci1oZWFkZXJbX25nY29udGVudC0lQ09NUCVdOjphZnRlciwgLm1hdC1zdGVwcGVyLWxhYmVsLXBvc2l0aW9uLWJvdHRvbVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWhvcml6b250YWwtc3RlcHBlci1oZWFkZXJbX25nY29udGVudC0lQ09NUCVdOjpiZWZvcmV7dG9wOjM2cHh9Lm1hdC1zdGVwcGVyLWxhYmVsLXBvc2l0aW9uLWJvdHRvbVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXN0ZXBwZXItaG9yaXpvbnRhbC1saW5lW19uZ2NvbnRlbnQtJUNPTVAlXXt0b3A6MzZweH0ubWF0LXNvcnQtaGVhZGVyLWFycm93W19uZ2NvbnRlbnQtJUNPTVAlXXtjb2xvcjojNjE2MTYxfS5tYXQtdGFiLW5hdi1iYXJbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXRhYi1oZWFkZXJbX25nY29udGVudC0lQ09NUCVde2JvcmRlci1ib3R0b206MXB4IHNvbGlkIHJnYmEoMCwwLDAsLjEyKX0ubWF0LXRhYi1ncm91cC1pbnZlcnRlZC1oZWFkZXJbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC10YWItbmF2LWJhcltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdGFiLWdyb3VwLWludmVydGVkLWhlYWRlcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXRhYi1oZWFkZXJbX25nY29udGVudC0lQ09NUCVde2JvcmRlci10b3A6MXB4IHNvbGlkIHJnYmEoMCwwLDAsLjEyKTtib3JkZXItYm90dG9tOm5vbmV9Lm1hdC10YWItbGFiZWxbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXRhYi1saW5rW19uZ2NvbnRlbnQtJUNPTVAlXXtjb2xvcjojMjEyMTIxfS5tYXQtdGFiLWxhYmVsLm1hdC10YWItZGlzYWJsZWRbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXRhYi1saW5rLm1hdC10YWItZGlzYWJsZWRbX25nY29udGVudC0lQ09NUCVde2NvbG9yOiM3NTc1NzV9Lm1hdC10YWItaGVhZGVyLXBhZ2luYXRpb24tY2hldnJvbltfbmdjb250ZW50LSVDT01QJV17Ym9yZGVyLWNvbG9yOiMyMTIxMjF9Lm1hdC10YWItaGVhZGVyLXBhZ2luYXRpb24tZGlzYWJsZWRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC10YWItaGVhZGVyLXBhZ2luYXRpb24tY2hldnJvbltfbmdjb250ZW50LSVDT01QJV17Ym9yZGVyLWNvbG9yOiM3NTc1NzV9Lm1hdC10YWItZ3JvdXBbY2xhc3MqPW1hdC1iYWNrZ3JvdW5kLV1bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC10YWItaGVhZGVyW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10YWItbmF2LWJhcltjbGFzcyo9bWF0LWJhY2tncm91bmQtXVtfbmdjb250ZW50LSVDT01QJV17Ym9yZGVyLWJvdHRvbTpub25lO2JvcmRlci10b3A6bm9uZX0ubWF0LXRhYi1ncm91cC5tYXQtcHJpbWFyeVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXRhYi1sYWJlbC5jZGsta2V5Ym9hcmQtZm9jdXNlZFtfbmdjb250ZW50LSVDT01QJV06bm90KC5tYXQtdGFiLWRpc2FibGVkKSwgLm1hdC10YWItZ3JvdXAubWF0LXByaW1hcnlbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC10YWItbGFiZWwuY2RrLXByb2dyYW0tZm9jdXNlZFtfbmdjb250ZW50LSVDT01QJV06bm90KC5tYXQtdGFiLWRpc2FibGVkKSwgLm1hdC10YWItZ3JvdXAubWF0LXByaW1hcnlbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC10YWItbGluay5jZGsta2V5Ym9hcmQtZm9jdXNlZFtfbmdjb250ZW50LSVDT01QJV06bm90KC5tYXQtdGFiLWRpc2FibGVkKSwgLm1hdC10YWItZ3JvdXAubWF0LXByaW1hcnlbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC10YWItbGluay5jZGstcHJvZ3JhbS1mb2N1c2VkW19uZ2NvbnRlbnQtJUNPTVAlXTpub3QoLm1hdC10YWItZGlzYWJsZWQpLCAubWF0LXRhYi1uYXYtYmFyLm1hdC1wcmltYXJ5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtdGFiLWxhYmVsLmNkay1rZXlib2FyZC1mb2N1c2VkW19uZ2NvbnRlbnQtJUNPTVAlXTpub3QoLm1hdC10YWItZGlzYWJsZWQpLCAubWF0LXRhYi1uYXYtYmFyLm1hdC1wcmltYXJ5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtdGFiLWxhYmVsLmNkay1wcm9ncmFtLWZvY3VzZWRbX25nY29udGVudC0lQ09NUCVdOm5vdCgubWF0LXRhYi1kaXNhYmxlZCksIC5tYXQtdGFiLW5hdi1iYXIubWF0LXByaW1hcnlbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC10YWItbGluay5jZGsta2V5Ym9hcmQtZm9jdXNlZFtfbmdjb250ZW50LSVDT01QJV06bm90KC5tYXQtdGFiLWRpc2FibGVkKSwgLm1hdC10YWItbmF2LWJhci5tYXQtcHJpbWFyeVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXRhYi1saW5rLmNkay1wcm9ncmFtLWZvY3VzZWRbX25nY29udGVudC0lQ09NUCVdOm5vdCgubWF0LXRhYi1kaXNhYmxlZCl7YmFja2dyb3VuZC1jb2xvcjpyZ2JhKDI1NSwxNTIsMCwuMyl9Lm1hdC10YWItZ3JvdXAubWF0LXByaW1hcnlbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pbmstYmFyW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10YWItbmF2LWJhci5tYXQtcHJpbWFyeVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWluay1iYXJbX25nY29udGVudC0lQ09NUCVde2JhY2tncm91bmQtY29sb3I6I2Y1N2MwMH0ubWF0LXRhYi1ncm91cC5tYXQtcHJpbWFyeS5tYXQtYmFja2dyb3VuZC1wcmltYXJ5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaW5rLWJhcltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdGFiLW5hdi1iYXIubWF0LXByaW1hcnkubWF0LWJhY2tncm91bmQtcHJpbWFyeVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWluay1iYXJbX25nY29udGVudC0lQ09NUCVde2JhY2tncm91bmQtY29sb3I6I2ZmZn0ubWF0LXRhYi1ncm91cC5tYXQtYWNjZW50W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtdGFiLWxhYmVsLmNkay1rZXlib2FyZC1mb2N1c2VkW19uZ2NvbnRlbnQtJUNPTVAlXTpub3QoLm1hdC10YWItZGlzYWJsZWQpLCAubWF0LXRhYi1ncm91cC5tYXQtYWNjZW50W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtdGFiLWxhYmVsLmNkay1wcm9ncmFtLWZvY3VzZWRbX25nY29udGVudC0lQ09NUCVdOm5vdCgubWF0LXRhYi1kaXNhYmxlZCksIC5tYXQtdGFiLWdyb3VwLm1hdC1hY2NlbnRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC10YWItbGluay5jZGsta2V5Ym9hcmQtZm9jdXNlZFtfbmdjb250ZW50LSVDT01QJV06bm90KC5tYXQtdGFiLWRpc2FibGVkKSwgLm1hdC10YWItZ3JvdXAubWF0LWFjY2VudFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXRhYi1saW5rLmNkay1wcm9ncmFtLWZvY3VzZWRbX25nY29udGVudC0lQ09NUCVdOm5vdCgubWF0LXRhYi1kaXNhYmxlZCksIC5tYXQtdGFiLW5hdi1iYXIubWF0LWFjY2VudFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXRhYi1sYWJlbC5jZGsta2V5Ym9hcmQtZm9jdXNlZFtfbmdjb250ZW50LSVDT01QJV06bm90KC5tYXQtdGFiLWRpc2FibGVkKSwgLm1hdC10YWItbmF2LWJhci5tYXQtYWNjZW50W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtdGFiLWxhYmVsLmNkay1wcm9ncmFtLWZvY3VzZWRbX25nY29udGVudC0lQ09NUCVdOm5vdCgubWF0LXRhYi1kaXNhYmxlZCksIC5tYXQtdGFiLW5hdi1iYXIubWF0LWFjY2VudFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXRhYi1saW5rLmNkay1rZXlib2FyZC1mb2N1c2VkW19uZ2NvbnRlbnQtJUNPTVAlXTpub3QoLm1hdC10YWItZGlzYWJsZWQpLCAubWF0LXRhYi1uYXYtYmFyLm1hdC1hY2NlbnRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC10YWItbGluay5jZGstcHJvZ3JhbS1mb2N1c2VkW19uZ2NvbnRlbnQtJUNPTVAlXTpub3QoLm1hdC10YWItZGlzYWJsZWQpe2JhY2tncm91bmQtY29sb3I6cmdiYSgyNTUsMTUyLDAsLjMpfS5tYXQtdGFiLWdyb3VwLm1hdC1hY2NlbnRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pbmstYmFyW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10YWItbmF2LWJhci5tYXQtYWNjZW50W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaW5rLWJhcltfbmdjb250ZW50LSVDT01QJV17YmFja2dyb3VuZC1jb2xvcjojZmY5ODAwfS5tYXQtdGFiLWdyb3VwLm1hdC1hY2NlbnQubWF0LWJhY2tncm91bmQtYWNjZW50W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaW5rLWJhcltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdGFiLW5hdi1iYXIubWF0LWFjY2VudC5tYXQtYmFja2dyb3VuZC1hY2NlbnRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pbmstYmFyW19uZ2NvbnRlbnQtJUNPTVAlXXtiYWNrZ3JvdW5kLWNvbG9yOiNmZmZ9Lm1hdC10YWItZ3JvdXAubWF0LXdhcm5bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC10YWItbGFiZWwuY2RrLWtleWJvYXJkLWZvY3VzZWRbX25nY29udGVudC0lQ09NUCVdOm5vdCgubWF0LXRhYi1kaXNhYmxlZCksIC5tYXQtdGFiLWdyb3VwLm1hdC13YXJuW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtdGFiLWxhYmVsLmNkay1wcm9ncmFtLWZvY3VzZWRbX25nY29udGVudC0lQ09NUCVdOm5vdCgubWF0LXRhYi1kaXNhYmxlZCksIC5tYXQtdGFiLWdyb3VwLm1hdC13YXJuW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtdGFiLWxpbmsuY2RrLWtleWJvYXJkLWZvY3VzZWRbX25nY29udGVudC0lQ09NUCVdOm5vdCgubWF0LXRhYi1kaXNhYmxlZCksIC5tYXQtdGFiLWdyb3VwLm1hdC13YXJuW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtdGFiLWxpbmsuY2RrLXByb2dyYW0tZm9jdXNlZFtfbmdjb250ZW50LSVDT01QJV06bm90KC5tYXQtdGFiLWRpc2FibGVkKSwgLm1hdC10YWItbmF2LWJhci5tYXQtd2Fybltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXRhYi1sYWJlbC5jZGsta2V5Ym9hcmQtZm9jdXNlZFtfbmdjb250ZW50LSVDT01QJV06bm90KC5tYXQtdGFiLWRpc2FibGVkKSwgLm1hdC10YWItbmF2LWJhci5tYXQtd2Fybltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXRhYi1sYWJlbC5jZGstcHJvZ3JhbS1mb2N1c2VkW19uZ2NvbnRlbnQtJUNPTVAlXTpub3QoLm1hdC10YWItZGlzYWJsZWQpLCAubWF0LXRhYi1uYXYtYmFyLm1hdC13YXJuW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtdGFiLWxpbmsuY2RrLWtleWJvYXJkLWZvY3VzZWRbX25nY29udGVudC0lQ09NUCVdOm5vdCgubWF0LXRhYi1kaXNhYmxlZCksIC5tYXQtdGFiLW5hdi1iYXIubWF0LXdhcm5bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC10YWItbGluay5jZGstcHJvZ3JhbS1mb2N1c2VkW19uZ2NvbnRlbnQtJUNPTVAlXTpub3QoLm1hdC10YWItZGlzYWJsZWQpe2JhY2tncm91bmQtY29sb3I6cmdiYSgyNTUsMjA1LDIxMCwuMyl9Lm1hdC10YWItZ3JvdXAubWF0LXdhcm5bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pbmstYmFyW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10YWItbmF2LWJhci5tYXQtd2Fybltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWluay1iYXJbX25nY29udGVudC0lQ09NUCVde2JhY2tncm91bmQtY29sb3I6I2Y0NDMzNn0ubWF0LXRhYi1ncm91cC5tYXQtd2Fybi5tYXQtYmFja2dyb3VuZC13YXJuW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaW5rLWJhcltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdGFiLW5hdi1iYXIubWF0LXdhcm4ubWF0LWJhY2tncm91bmQtd2Fybltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWluay1iYXJbX25nY29udGVudC0lQ09NUCVde2JhY2tncm91bmQtY29sb3I6I2ZmZn0ubWF0LXRhYi1ncm91cC5tYXQtYmFja2dyb3VuZC1wcmltYXJ5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtdGFiLWxhYmVsLmNkay1rZXlib2FyZC1mb2N1c2VkW19uZ2NvbnRlbnQtJUNPTVAlXTpub3QoLm1hdC10YWItZGlzYWJsZWQpLCAubWF0LXRhYi1ncm91cC5tYXQtYmFja2dyb3VuZC1wcmltYXJ5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtdGFiLWxhYmVsLmNkay1wcm9ncmFtLWZvY3VzZWRbX25nY29udGVudC0lQ09NUCVdOm5vdCgubWF0LXRhYi1kaXNhYmxlZCksIC5tYXQtdGFiLWdyb3VwLm1hdC1iYWNrZ3JvdW5kLXByaW1hcnlbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC10YWItbGluay5jZGsta2V5Ym9hcmQtZm9jdXNlZFtfbmdjb250ZW50LSVDT01QJV06bm90KC5tYXQtdGFiLWRpc2FibGVkKSwgLm1hdC10YWItZ3JvdXAubWF0LWJhY2tncm91bmQtcHJpbWFyeVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXRhYi1saW5rLmNkay1wcm9ncmFtLWZvY3VzZWRbX25nY29udGVudC0lQ09NUCVdOm5vdCgubWF0LXRhYi1kaXNhYmxlZCksIC5tYXQtdGFiLW5hdi1iYXIubWF0LWJhY2tncm91bmQtcHJpbWFyeVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXRhYi1sYWJlbC5jZGsta2V5Ym9hcmQtZm9jdXNlZFtfbmdjb250ZW50LSVDT01QJV06bm90KC5tYXQtdGFiLWRpc2FibGVkKSwgLm1hdC10YWItbmF2LWJhci5tYXQtYmFja2dyb3VuZC1wcmltYXJ5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtdGFiLWxhYmVsLmNkay1wcm9ncmFtLWZvY3VzZWRbX25nY29udGVudC0lQ09NUCVdOm5vdCgubWF0LXRhYi1kaXNhYmxlZCksIC5tYXQtdGFiLW5hdi1iYXIubWF0LWJhY2tncm91bmQtcHJpbWFyeVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXRhYi1saW5rLmNkay1rZXlib2FyZC1mb2N1c2VkW19uZ2NvbnRlbnQtJUNPTVAlXTpub3QoLm1hdC10YWItZGlzYWJsZWQpLCAubWF0LXRhYi1uYXYtYmFyLm1hdC1iYWNrZ3JvdW5kLXByaW1hcnlbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC10YWItbGluay5jZGstcHJvZ3JhbS1mb2N1c2VkW19uZ2NvbnRlbnQtJUNPTVAlXTpub3QoLm1hdC10YWItZGlzYWJsZWQpe2JhY2tncm91bmQtY29sb3I6cmdiYSgyNTUsMTUyLDAsLjMpfS5tYXQtdGFiLWdyb3VwLm1hdC1iYWNrZ3JvdW5kLXByaW1hcnlbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC10YWItaGVhZGVyW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10YWItZ3JvdXAubWF0LWJhY2tncm91bmQtcHJpbWFyeVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXRhYi1saW5rc1tfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdGFiLWdyb3VwLm1hdC1iYWNrZ3JvdW5kLXByaW1hcnlbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC10YWItaGVhZGVyLXBhZ2luYXRpb25bX25nY29udGVudC0lQ09NUCVdLCAubWF0LXRhYi1uYXYtYmFyLm1hdC1iYWNrZ3JvdW5kLXByaW1hcnlbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC10YWItaGVhZGVyW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10YWItbmF2LWJhci5tYXQtYmFja2dyb3VuZC1wcmltYXJ5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtdGFiLWxpbmtzW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10YWItbmF2LWJhci5tYXQtYmFja2dyb3VuZC1wcmltYXJ5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtdGFiLWhlYWRlci1wYWdpbmF0aW9uW19uZ2NvbnRlbnQtJUNPTVAlXXtiYWNrZ3JvdW5kLWNvbG9yOiNmNTdjMDB9Lm1hdC10YWItZ3JvdXAubWF0LWJhY2tncm91bmQtcHJpbWFyeVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXRhYi1sYWJlbFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdGFiLWdyb3VwLm1hdC1iYWNrZ3JvdW5kLXByaW1hcnlbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC10YWItbGlua1tfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdGFiLW5hdi1iYXIubWF0LWJhY2tncm91bmQtcHJpbWFyeVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXRhYi1sYWJlbFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdGFiLW5hdi1iYXIubWF0LWJhY2tncm91bmQtcHJpbWFyeVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXRhYi1saW5rW19uZ2NvbnRlbnQtJUNPTVAlXXtjb2xvcjojZmZmfS5tYXQtdGFiLWdyb3VwLm1hdC1iYWNrZ3JvdW5kLXByaW1hcnlbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC10YWItbGFiZWwubWF0LXRhYi1kaXNhYmxlZFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdGFiLWdyb3VwLm1hdC1iYWNrZ3JvdW5kLXByaW1hcnlbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC10YWItbGluay5tYXQtdGFiLWRpc2FibGVkW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10YWItbmF2LWJhci5tYXQtYmFja2dyb3VuZC1wcmltYXJ5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtdGFiLWxhYmVsLm1hdC10YWItZGlzYWJsZWRbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXRhYi1uYXYtYmFyLm1hdC1iYWNrZ3JvdW5kLXByaW1hcnlbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC10YWItbGluay5tYXQtdGFiLWRpc2FibGVkW19uZ2NvbnRlbnQtJUNPTVAlXXtjb2xvcjpyZ2JhKDI1NSwyNTUsMjU1LC40KX0ubWF0LXRhYi1ncm91cC5tYXQtYmFja2dyb3VuZC1wcmltYXJ5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtdGFiLWhlYWRlci1wYWdpbmF0aW9uLWNoZXZyb25bX25nY29udGVudC0lQ09NUCVdLCAubWF0LXRhYi1uYXYtYmFyLm1hdC1iYWNrZ3JvdW5kLXByaW1hcnlbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC10YWItaGVhZGVyLXBhZ2luYXRpb24tY2hldnJvbltfbmdjb250ZW50LSVDT01QJV17Ym9yZGVyLWNvbG9yOiNmZmZ9Lm1hdC10YWItZ3JvdXAubWF0LWJhY2tncm91bmQtcHJpbWFyeVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXRhYi1oZWFkZXItcGFnaW5hdGlvbi1kaXNhYmxlZFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXRhYi1oZWFkZXItcGFnaW5hdGlvbi1jaGV2cm9uW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10YWItbmF2LWJhci5tYXQtYmFja2dyb3VuZC1wcmltYXJ5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtdGFiLWhlYWRlci1wYWdpbmF0aW9uLWRpc2FibGVkW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtdGFiLWhlYWRlci1wYWdpbmF0aW9uLWNoZXZyb25bX25nY29udGVudC0lQ09NUCVde2JvcmRlci1jb2xvcjpyZ2JhKDI1NSwyNTUsMjU1LC40KX0ubWF0LXRhYi1ncm91cC5tYXQtYmFja2dyb3VuZC1wcmltYXJ5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtcmlwcGxlLWVsZW1lbnRbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXRhYi1uYXYtYmFyLm1hdC1iYWNrZ3JvdW5kLXByaW1hcnlbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1yaXBwbGUtZWxlbWVudFtfbmdjb250ZW50LSVDT01QJV17YmFja2dyb3VuZC1jb2xvcjpyZ2JhKDI1NSwyNTUsMjU1LC4xMil9Lm1hdC10YWItZ3JvdXAubWF0LWJhY2tncm91bmQtYWNjZW50W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtdGFiLWxhYmVsLmNkay1rZXlib2FyZC1mb2N1c2VkW19uZ2NvbnRlbnQtJUNPTVAlXTpub3QoLm1hdC10YWItZGlzYWJsZWQpLCAubWF0LXRhYi1ncm91cC5tYXQtYmFja2dyb3VuZC1hY2NlbnRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC10YWItbGFiZWwuY2RrLXByb2dyYW0tZm9jdXNlZFtfbmdjb250ZW50LSVDT01QJV06bm90KC5tYXQtdGFiLWRpc2FibGVkKSwgLm1hdC10YWItZ3JvdXAubWF0LWJhY2tncm91bmQtYWNjZW50W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtdGFiLWxpbmsuY2RrLWtleWJvYXJkLWZvY3VzZWRbX25nY29udGVudC0lQ09NUCVdOm5vdCgubWF0LXRhYi1kaXNhYmxlZCksIC5tYXQtdGFiLWdyb3VwLm1hdC1iYWNrZ3JvdW5kLWFjY2VudFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXRhYi1saW5rLmNkay1wcm9ncmFtLWZvY3VzZWRbX25nY29udGVudC0lQ09NUCVdOm5vdCgubWF0LXRhYi1kaXNhYmxlZCksIC5tYXQtdGFiLW5hdi1iYXIubWF0LWJhY2tncm91bmQtYWNjZW50W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtdGFiLWxhYmVsLmNkay1rZXlib2FyZC1mb2N1c2VkW19uZ2NvbnRlbnQtJUNPTVAlXTpub3QoLm1hdC10YWItZGlzYWJsZWQpLCAubWF0LXRhYi1uYXYtYmFyLm1hdC1iYWNrZ3JvdW5kLWFjY2VudFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXRhYi1sYWJlbC5jZGstcHJvZ3JhbS1mb2N1c2VkW19uZ2NvbnRlbnQtJUNPTVAlXTpub3QoLm1hdC10YWItZGlzYWJsZWQpLCAubWF0LXRhYi1uYXYtYmFyLm1hdC1iYWNrZ3JvdW5kLWFjY2VudFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXRhYi1saW5rLmNkay1rZXlib2FyZC1mb2N1c2VkW19uZ2NvbnRlbnQtJUNPTVAlXTpub3QoLm1hdC10YWItZGlzYWJsZWQpLCAubWF0LXRhYi1uYXYtYmFyLm1hdC1iYWNrZ3JvdW5kLWFjY2VudFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXRhYi1saW5rLmNkay1wcm9ncmFtLWZvY3VzZWRbX25nY29udGVudC0lQ09NUCVdOm5vdCgubWF0LXRhYi1kaXNhYmxlZCl7YmFja2dyb3VuZC1jb2xvcjpyZ2JhKDI1NSwxNTIsMCwuMyl9Lm1hdC10YWItZ3JvdXAubWF0LWJhY2tncm91bmQtYWNjZW50W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtdGFiLWhlYWRlcltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdGFiLWdyb3VwLm1hdC1iYWNrZ3JvdW5kLWFjY2VudFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXRhYi1saW5rc1tfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdGFiLWdyb3VwLm1hdC1iYWNrZ3JvdW5kLWFjY2VudFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXRhYi1oZWFkZXItcGFnaW5hdGlvbltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdGFiLW5hdi1iYXIubWF0LWJhY2tncm91bmQtYWNjZW50W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtdGFiLWhlYWRlcltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdGFiLW5hdi1iYXIubWF0LWJhY2tncm91bmQtYWNjZW50W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtdGFiLWxpbmtzW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10YWItbmF2LWJhci5tYXQtYmFja2dyb3VuZC1hY2NlbnRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC10YWItaGVhZGVyLXBhZ2luYXRpb25bX25nY29udGVudC0lQ09NUCVde2JhY2tncm91bmQtY29sb3I6I2ZmOTgwMH0ubWF0LXRhYi1ncm91cC5tYXQtYmFja2dyb3VuZC1hY2NlbnRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC10YWItbGFiZWxbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXRhYi1ncm91cC5tYXQtYmFja2dyb3VuZC1hY2NlbnRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC10YWItbGlua1tfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdGFiLW5hdi1iYXIubWF0LWJhY2tncm91bmQtYWNjZW50W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtdGFiLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10YWItbmF2LWJhci5tYXQtYmFja2dyb3VuZC1hY2NlbnRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC10YWItbGlua1tfbmdjb250ZW50LSVDT01QJV17Y29sb3I6I2ZmZn0ubWF0LXRhYi1ncm91cC5tYXQtYmFja2dyb3VuZC1hY2NlbnRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC10YWItbGFiZWwubWF0LXRhYi1kaXNhYmxlZFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdGFiLWdyb3VwLm1hdC1iYWNrZ3JvdW5kLWFjY2VudFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXRhYi1saW5rLm1hdC10YWItZGlzYWJsZWRbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXRhYi1uYXYtYmFyLm1hdC1iYWNrZ3JvdW5kLWFjY2VudFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXRhYi1sYWJlbC5tYXQtdGFiLWRpc2FibGVkW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10YWItbmF2LWJhci5tYXQtYmFja2dyb3VuZC1hY2NlbnRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC10YWItbGluay5tYXQtdGFiLWRpc2FibGVkW19uZ2NvbnRlbnQtJUNPTVAlXXtjb2xvcjpyZ2JhKDI1NSwyNTUsMjU1LC40KX0ubWF0LXRhYi1ncm91cC5tYXQtYmFja2dyb3VuZC1hY2NlbnRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC10YWItaGVhZGVyLXBhZ2luYXRpb24tY2hldnJvbltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdGFiLW5hdi1iYXIubWF0LWJhY2tncm91bmQtYWNjZW50W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtdGFiLWhlYWRlci1wYWdpbmF0aW9uLWNoZXZyb25bX25nY29udGVudC0lQ09NUCVde2JvcmRlci1jb2xvcjojZmZmfS5tYXQtdGFiLWdyb3VwLm1hdC1iYWNrZ3JvdW5kLWFjY2VudFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXRhYi1oZWFkZXItcGFnaW5hdGlvbi1kaXNhYmxlZFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXRhYi1oZWFkZXItcGFnaW5hdGlvbi1jaGV2cm9uW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10YWItbmF2LWJhci5tYXQtYmFja2dyb3VuZC1hY2NlbnRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC10YWItaGVhZGVyLXBhZ2luYXRpb24tZGlzYWJsZWRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC10YWItaGVhZGVyLXBhZ2luYXRpb24tY2hldnJvbltfbmdjb250ZW50LSVDT01QJV17Ym9yZGVyLWNvbG9yOnJnYmEoMjU1LDI1NSwyNTUsLjQpfS5tYXQtdGFiLWdyb3VwLm1hdC1iYWNrZ3JvdW5kLWFjY2VudFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXJpcHBsZS1lbGVtZW50W19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10YWItbmF2LWJhci5tYXQtYmFja2dyb3VuZC1hY2NlbnRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1yaXBwbGUtZWxlbWVudFtfbmdjb250ZW50LSVDT01QJV17YmFja2dyb3VuZC1jb2xvcjpyZ2JhKDI1NSwyNTUsMjU1LC4xMil9Lm1hdC10YWItZ3JvdXAubWF0LWJhY2tncm91bmQtd2Fybltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXRhYi1sYWJlbC5jZGsta2V5Ym9hcmQtZm9jdXNlZFtfbmdjb250ZW50LSVDT01QJV06bm90KC5tYXQtdGFiLWRpc2FibGVkKSwgLm1hdC10YWItZ3JvdXAubWF0LWJhY2tncm91bmQtd2Fybltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXRhYi1sYWJlbC5jZGstcHJvZ3JhbS1mb2N1c2VkW19uZ2NvbnRlbnQtJUNPTVAlXTpub3QoLm1hdC10YWItZGlzYWJsZWQpLCAubWF0LXRhYi1ncm91cC5tYXQtYmFja2dyb3VuZC13YXJuW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtdGFiLWxpbmsuY2RrLWtleWJvYXJkLWZvY3VzZWRbX25nY29udGVudC0lQ09NUCVdOm5vdCgubWF0LXRhYi1kaXNhYmxlZCksIC5tYXQtdGFiLWdyb3VwLm1hdC1iYWNrZ3JvdW5kLXdhcm5bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC10YWItbGluay5jZGstcHJvZ3JhbS1mb2N1c2VkW19uZ2NvbnRlbnQtJUNPTVAlXTpub3QoLm1hdC10YWItZGlzYWJsZWQpLCAubWF0LXRhYi1uYXYtYmFyLm1hdC1iYWNrZ3JvdW5kLXdhcm5bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC10YWItbGFiZWwuY2RrLWtleWJvYXJkLWZvY3VzZWRbX25nY29udGVudC0lQ09NUCVdOm5vdCgubWF0LXRhYi1kaXNhYmxlZCksIC5tYXQtdGFiLW5hdi1iYXIubWF0LWJhY2tncm91bmQtd2Fybltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXRhYi1sYWJlbC5jZGstcHJvZ3JhbS1mb2N1c2VkW19uZ2NvbnRlbnQtJUNPTVAlXTpub3QoLm1hdC10YWItZGlzYWJsZWQpLCAubWF0LXRhYi1uYXYtYmFyLm1hdC1iYWNrZ3JvdW5kLXdhcm5bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC10YWItbGluay5jZGsta2V5Ym9hcmQtZm9jdXNlZFtfbmdjb250ZW50LSVDT01QJV06bm90KC5tYXQtdGFiLWRpc2FibGVkKSwgLm1hdC10YWItbmF2LWJhci5tYXQtYmFja2dyb3VuZC13YXJuW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtdGFiLWxpbmsuY2RrLXByb2dyYW0tZm9jdXNlZFtfbmdjb250ZW50LSVDT01QJV06bm90KC5tYXQtdGFiLWRpc2FibGVkKXtiYWNrZ3JvdW5kLWNvbG9yOnJnYmEoMjU1LDIwNSwyMTAsLjMpfS5tYXQtdGFiLWdyb3VwLm1hdC1iYWNrZ3JvdW5kLXdhcm5bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC10YWItaGVhZGVyW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10YWItZ3JvdXAubWF0LWJhY2tncm91bmQtd2Fybltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXRhYi1saW5rc1tfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdGFiLWdyb3VwLm1hdC1iYWNrZ3JvdW5kLXdhcm5bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC10YWItaGVhZGVyLXBhZ2luYXRpb25bX25nY29udGVudC0lQ09NUCVdLCAubWF0LXRhYi1uYXYtYmFyLm1hdC1iYWNrZ3JvdW5kLXdhcm5bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC10YWItaGVhZGVyW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10YWItbmF2LWJhci5tYXQtYmFja2dyb3VuZC13YXJuW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtdGFiLWxpbmtzW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10YWItbmF2LWJhci5tYXQtYmFja2dyb3VuZC13YXJuW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtdGFiLWhlYWRlci1wYWdpbmF0aW9uW19uZ2NvbnRlbnQtJUNPTVAlXXtiYWNrZ3JvdW5kLWNvbG9yOiNmNDQzMzZ9Lm1hdC10YWItZ3JvdXAubWF0LWJhY2tncm91bmQtd2Fybltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXRhYi1sYWJlbFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdGFiLWdyb3VwLm1hdC1iYWNrZ3JvdW5kLXdhcm5bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC10YWItbGlua1tfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdGFiLW5hdi1iYXIubWF0LWJhY2tncm91bmQtd2Fybltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXRhYi1sYWJlbFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdGFiLW5hdi1iYXIubWF0LWJhY2tncm91bmQtd2Fybltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXRhYi1saW5rW19uZ2NvbnRlbnQtJUNPTVAlXXtjb2xvcjojZmZmfS5tYXQtdGFiLWdyb3VwLm1hdC1iYWNrZ3JvdW5kLXdhcm5bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC10YWItbGFiZWwubWF0LXRhYi1kaXNhYmxlZFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdGFiLWdyb3VwLm1hdC1iYWNrZ3JvdW5kLXdhcm5bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC10YWItbGluay5tYXQtdGFiLWRpc2FibGVkW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10YWItbmF2LWJhci5tYXQtYmFja2dyb3VuZC13YXJuW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtdGFiLWxhYmVsLm1hdC10YWItZGlzYWJsZWRbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXRhYi1uYXYtYmFyLm1hdC1iYWNrZ3JvdW5kLXdhcm5bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC10YWItbGluay5tYXQtdGFiLWRpc2FibGVkW19uZ2NvbnRlbnQtJUNPTVAlXXtjb2xvcjpyZ2JhKDI1NSwyNTUsMjU1LC40KX0ubWF0LXRhYi1ncm91cC5tYXQtYmFja2dyb3VuZC13YXJuW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtdGFiLWhlYWRlci1wYWdpbmF0aW9uLWNoZXZyb25bX25nY29udGVudC0lQ09NUCVdLCAubWF0LXRhYi1uYXYtYmFyLm1hdC1iYWNrZ3JvdW5kLXdhcm5bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC10YWItaGVhZGVyLXBhZ2luYXRpb24tY2hldnJvbltfbmdjb250ZW50LSVDT01QJV17Ym9yZGVyLWNvbG9yOiNmZmZ9Lm1hdC10YWItZ3JvdXAubWF0LWJhY2tncm91bmQtd2Fybltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXRhYi1oZWFkZXItcGFnaW5hdGlvbi1kaXNhYmxlZFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXRhYi1oZWFkZXItcGFnaW5hdGlvbi1jaGV2cm9uW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10YWItbmF2LWJhci5tYXQtYmFja2dyb3VuZC13YXJuW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtdGFiLWhlYWRlci1wYWdpbmF0aW9uLWRpc2FibGVkW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtdGFiLWhlYWRlci1wYWdpbmF0aW9uLWNoZXZyb25bX25nY29udGVudC0lQ09NUCVde2JvcmRlci1jb2xvcjpyZ2JhKDI1NSwyNTUsMjU1LC40KX0ubWF0LXRhYi1ncm91cC5tYXQtYmFja2dyb3VuZC13YXJuW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtcmlwcGxlLWVsZW1lbnRbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXRhYi1uYXYtYmFyLm1hdC1iYWNrZ3JvdW5kLXdhcm5bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1yaXBwbGUtZWxlbWVudFtfbmdjb250ZW50LSVDT01QJV17YmFja2dyb3VuZC1jb2xvcjpyZ2JhKDI1NSwyNTUsMjU1LC4xMil9Lm1hdC10b29sYmFyW19uZ2NvbnRlbnQtJUNPTVAlXXtiYWNrZ3JvdW5kOiNmNWY1ZjU7Y29sb3I6IzIxMjEyMX0ubWF0LXRvb2xiYXIubWF0LXByaW1hcnlbX25nY29udGVudC0lQ09NUCVde2JhY2tncm91bmQ6I2Y1N2MwMDtjb2xvcjojZmZmfS5tYXQtdG9vbGJhci5tYXQtYWNjZW50W19uZ2NvbnRlbnQtJUNPTVAlXXtiYWNrZ3JvdW5kOiNmZjk4MDA7Y29sb3I6I2ZmZn0ubWF0LXRvb2xiYXIubWF0LXdhcm5bX25nY29udGVudC0lQ09NUCVde2JhY2tncm91bmQ6I2Y0NDMzNjtjb2xvcjojZmZmfS5tYXQtdG9vbGJhcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtdW5kZXJsaW5lW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10b29sYmFyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1yaXBwbGVbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXRvb2xiYXJbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb2N1c2VkW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1yaXBwbGVbX25nY29udGVudC0lQ09NUCVde2JhY2tncm91bmQtY29sb3I6Y3VycmVudENvbG9yfS5tYXQtdG9vbGJhcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXRvb2xiYXJbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb2N1c2VkW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdG9vbGJhcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXNlbGVjdC12YWx1ZVtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdG9vbGJhcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXNlbGVjdC1hcnJvd1tfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdG9vbGJhcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQubWF0LWZvY3VzZWRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1zZWxlY3QtYXJyb3dbX25nY29udGVudC0lQ09NUCVde2NvbG9yOmluaGVyaXR9Lm1hdC10b29sYmFyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaW5wdXQtZWxlbWVudFtfbmdjb250ZW50LSVDT01QJV17Y2FyZXQtY29sb3I6Y3VycmVudENvbG9yfS5tYXQtdG9vbGJhci1tdWx0aXBsZS1yb3dzW19uZ2NvbnRlbnQtJUNPTVAlXXttaW4taGVpZ2h0OjY0cHh9Lm1hdC10b29sYmFyLXJvd1tfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdG9vbGJhci1zaW5nbGUtcm93W19uZ2NvbnRlbnQtJUNPTVAlXXtoZWlnaHQ6NjRweH1AbWVkaWEobWF4LXdpZHRoOiA1OTlweCl7Lm1hdC10b29sYmFyLW11bHRpcGxlLXJvd3NbX25nY29udGVudC0lQ09NUCVde21pbi1oZWlnaHQ6NTZweH0ubWF0LXRvb2xiYXItcm93W19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10b29sYmFyLXNpbmdsZS1yb3dbX25nY29udGVudC0lQ09NUCVde2hlaWdodDo1NnB4fX0ubWF0LXRvb2x0aXBbX25nY29udGVudC0lQ09NUCVde2JhY2tncm91bmQ6cmdiYSg5Nyw5Nyw5NywuOSl9Lm1hdC10cmVlW19uZ2NvbnRlbnQtJUNPTVAlXXtiYWNrZ3JvdW5kOiNmZmZ9Lm1hdC10cmVlLW5vZGVbX25nY29udGVudC0lQ09NUCVdLCAubWF0LW5lc3RlZC10cmVlLW5vZGVbX25nY29udGVudC0lQ09NUCVde2NvbG9yOiMyMTIxMjF9Lm1hdC10cmVlLW5vZGVbX25nY29udGVudC0lQ09NUCVde21pbi1oZWlnaHQ6NDhweH0ubWF0LXNuYWNrLWJhci1jb250YWluZXJbX25nY29udGVudC0lQ09NUCVde2NvbG9yOnJnYmEoMjU1LDI1NSwyNTUsLjcpO2JhY2tncm91bmQ6IzMyMzIzMjtib3gtc2hhZG93OjBweCAzcHggNXB4IC0xcHggcmdiYSgwLCAwLCAwLCAwLjIpLDBweCA2cHggMTBweCAwcHggcmdiYSgwLCAwLCAwLCAwLjE0KSwwcHggMXB4IDE4cHggMHB4IHJnYmEoMCwgMCwgMCwgMC4xMil9Lm1hdC1zaW1wbGUtc25hY2tiYXItYWN0aW9uW19uZ2NvbnRlbnQtJUNPTVAlXXtjb2xvcjojZmY5ODAwfVtfbmdob3N0LSVDT01QJV17Ym9yZGVyLWJvdHRvbToycHggc29saWQgI2ViZWJlYjtkaXNwbGF5OmZsZXg7aGVpZ2h0OjI4cHg7YWxpZ24taXRlbXM6ZmxleC1lbmQ7bWFyZ2luLXRvcDo4cHh9LmFubm90YXRpb25zLWhlYWRlci1jb250YWluZXJzW19uZ2NvbnRlbnQtJUNPTVAlXXtkaXNwbGF5OmZsZXg7Zm9udC1zaXplOi45ZW07Zm9udC13ZWlnaHQ6NTAwO2ZsZXgtZ3JvdzoxfS5oZWFkZXItY29sdW1uW19uZ2NvbnRlbnQtJUNPTVAlXXtmbGV4OjEgMX0uaGVhZGVyLWNvbnRhaW5lcltfbmdjb250ZW50LSVDT01QJV17ZGlzcGxheTppbmxpbmUtYmxvY2t9LmhlYWRlci1jbGlja2FibGVbX25nY29udGVudC0lQ09NUCVde2N1cnNvcjpwb2ludGVyO2Rpc3BsYXk6ZmxleDtvdXRsaW5lOm5vbmV9LnRvZ2dsZS1hbGwtY29udGFpbmVyW19uZ2NvbnRlbnQtJUNPTVAlXXttYXJnaW4tbGVmdDoxMHB4O3dpZHRoOjkwcHh9LnNvcnQtaWNvbltfbmdjb250ZW50LSVDT01QJV17aGVpZ2h0OjE2cHh9J10sY2hhbmdlRGV0ZWN0aW9uOjB9KTtjbGFzcyBacHR7Y29uc3RydWN0b3IodCl7dGhpcy5zdG9yZT10LHRoaXMuc2VsZWN0ZWRBbm5vdGF0aW9ucyQ9dGhpcy5zdG9yZS5zZWxlY3QoUmR0KSx0aGlzLmFubm90YXRpb25Tb3J0JD10aGlzLnN0b3JlLnNlbGVjdChIZHQpfWNoYW5nZVNvcnQodCl7dGhpcy5zdG9yZS5kaXNwYXRjaChtZ3Qoe21ldHJpYzp0fSkpfWFsbEFubm90YXRpb25zVG9nZ2xlZCh0KXt0aGlzLnN0b3JlLmRpc3BhdGNoKG5ndCh0P3thbm5vdGF0aW9uczpPYmplY3Qua2V5cyh0aGlzLmFubm90YXRpb25zKX06e2Fubm90YXRpb25zOltdfSkpfX1acHQuybVmYWM9ZnVuY3Rpb24gdChuKXtyZXR1cm4gbmV3KG58fFpwdCkoWmcoY3YpKX0sWnB0Lsm1Y21wPV9vKHt0eXBlOlpwdCxzZWxlY3RvcnM6W1sibnBtaS1hbm5vdGF0aW9ucy1saXN0LWhlYWRlciJdXSxpbnB1dHM6e251bUFubm90YXRpb25zOiJudW1Bbm5vdGF0aW9ucyIsYW5ub3RhdGlvbnM6ImFubm90YXRpb25zIixhY3RpdmVNZXRyaWNzOiJhY3RpdmVNZXRyaWNzIn0sZGVjbHM6Myx2YXJzOjgsY29uc3RzOltbMywibnVtQW5ub3RhdGlvbnMiLCJzZWxlY3RlZEFubm90YXRpb25zIiwic29ydCIsImFjdGl2ZU1ldHJpY3MiLCJvbkNoYW5nZVNvcnQiLCJvbkFsbEFubm90YXRpb25zVG9nZ2xlZCJdXSx0ZW1wbGF0ZTpmdW5jdGlvbiB0KG4sZSl7MSZuJiYoS2coMCwibnBtaS1hbm5vdGF0aW9ucy1saXN0LWhlYWRlci1jb21wb25lbnQiLDApLGNwKCJvbkNoYW5nZVNvcnQiLChmdW5jdGlvbiB0KG4pe3JldHVybiBlLmNoYW5nZVNvcnQobil9KSkoIm9uQWxsQW5ub3RhdGlvbnNUb2dnbGVkIiwoZnVuY3Rpb24gdChuKXtyZXR1cm4gZS5hbGxBbm5vdGF0aW9uc1RvZ2dsZWQobil9KSkseWYoMSwiYXN5bmMiKSx5ZigyLCJhc3luYyIpLCRnKCkpLDImbiYmSmcoIm51bUFubm90YXRpb25zIixlLm51bUFubm90YXRpb25zKSgic2VsZWN0ZWRBbm5vdGF0aW9ucyIsa2YoMSw0LGUuc2VsZWN0ZWRBbm5vdGF0aW9ucyQpKSgic29ydCIsa2YoMiw2LGUuYW5ub3RhdGlvblNvcnQkKSkoImFjdGl2ZU1ldHJpY3MiLGUuYWN0aXZlTWV0cmljcyl9LGRpcmVjdGl2ZXM6W3FwdF0scGlwZXM6W29PXSxlbmNhcHN1bGF0aW9uOjIsY2hhbmdlRGV0ZWN0aW9uOjB9KTtjb25zdCBYcHQ9WyJjaGFydCJdLEpwdD1bImhpbnRDbGlwIl07ZnVuY3Rpb24gUXB0KHQsbil7MSZ0JiZ0cCgwLCJtYXQtaWNvbiIsMTIpfWZ1bmN0aW9uIEtwdCh0LG4pezEmdCYmdHAoMCwibWF0LWljb24iLDEzKX1mdW5jdGlvbiAkcHQodCxuKXtpZigxJnQmJnRwKDAsIm1hdC1pY29uIiwxNCksMiZ0KXtjb25zdCB0PWdwKCk7SmcoInN2Z0ljb24iLHQuc29ydC5vcmRlcj09PXQuU29ydE9yZGVyLlNJTUlMQVI/ImFycm93X2Rvd253YXJkXzI0cHgiOiJhcnJvd191cHdhcmRfMjRweCIpKCJuZ0NsYXNzIix0LnNvcnQub3JkZXI9PT10LlNvcnRPcmRlci5TSU1JTEFSPyJkb3duLWljb24iOiJ1cC1pY29uIil9fWNsYXNzIHRidHtjb25zdHJ1Y3Rvcigpe3RoaXMuc2VsZWN0ZWQ9ITEsdGhpcy5vblNob3dTaW1pbGFyQW5ub3RhdGlvbnM9bmV3IEVmLHRoaXMuU29ydE9yZGVyPWtkdCx0aGlzLndpZHRoPTEwLHRoaXMuY2hhcnRXaWR0aD0xMCx0aGlzLmNoYXJ0SGVpZ2h0PTEwLHRoaXMubWF4RG90UmFkaXVzPTEwLHRoaXMuY291bnREb3RPZmZzZXQ9NzAsdGhpcy5jb3VudFRleHRQYWRkaW5nPTIsdGhpcy5tYXJnaW49e3RvcDowLHJpZ2h0OjAsYm90dG9tOjAsbGVmdDoxMDB9LHRoaXMuc3Ryb2tlQ29sb3I9IiNmZmYiLHRoaXMudGV4dENsYXNzPSJkZWZhdWx0LXRleHQiLHRoaXMucnVucz1bXX1vblJlc2l6ZSh0KXt0aGlzLnJlZHJhdygpfW5nQWZ0ZXJWaWV3SW5pdCgpe3RoaXMuc3ZnPWoxKHRoaXMuYW5ub3RhdGlvbkNvbnRhaW5lci5uYXRpdmVFbGVtZW50KS5zZWxlY3QoInN2ZyIpLHRoaXMueFNjYWxlPXA2KCkucGFkZGluZygwKSx0aGlzLnlTY2FsZT1wNigpLnBhZGRpbmcoMCksdGhpcy5zaXplU2NhbGU9azYoKS5kb21haW4oWzAsMV0pLHRoaXMuY291bnRTaXplU2NhbGU9azYoKS5yYW5nZShbMix0aGlzLm1heERvdFJhZGl1c10pLHRoaXMubWFpbkNvbnRhaW5lcj10aGlzLnN2Zy5hcHBlbmQoImciKS5hdHRyKCJ0cmFuc2Zvcm0iLGB0cmFuc2xhdGUoJHt0aGlzLm1hcmdpbi5sZWZ0fSwgJHt0aGlzLm1hcmdpbi50b3B9KWApLHRoaXMuYmFyc0dyb3VwPXRoaXMubWFpbkNvbnRhaW5lci5hcHBlbmQoImciKSx0aGlzLmNvdW50RG90c0dyb3VwPXRoaXMubWFpbkNvbnRhaW5lci5hcHBlbmQoImciKSx0aGlzLnRleHRzR3JvdXA9dGhpcy5tYWluQ29udGFpbmVyLmFwcGVuZCgiZyIpLHRoaXMuY291bnRUZXh0c0dyb3VwPXRoaXMubWFpbkNvbnRhaW5lci5hcHBlbmQoImciKSx0aGlzLnJ1bkhpbnRHcm91cD10aGlzLnN2Zy5hcHBlbmQoImciKSx0aGlzLnJlZHJhdygpfW5nT25DaGFuZ2VzKHQpe3RoaXMuc3ZnJiZ0aGlzLnJlZHJhdygpfXJlZHJhdygpe3RoaXMuc2VsZWN0ZWQ9dGhpcy5zZWxlY3RlZEFubm90YXRpb25zLmluY2x1ZGVzKHRoaXMuYW5ub3RhdGlvbiksdGhpcy51cGRhdGVEaW1lbnNpb25zKCksdGhpcy5zZXRUZXh0Q2xhc3MoKSx0aGlzLnVwZGF0ZUF4ZXMoKSx0aGlzLmRyYXcoKX11cGRhdGVEaW1lbnNpb25zKCl7Y29uc3QgdD1uZXcgU2V0O3RoaXMuZGF0YS5mb3JFYWNoKChuPT57dC5hZGQobi5ydW4pfSkpLHRoaXMucnVucz1bLi4udF0sdGhpcy5zdmcuc3R5bGUoImhlaWdodCIsdGhpcy5udW1BY3RpdmVSdW5zKnRoaXMucnVuSGVpZ2h0KyJweCIpLHRoaXMuY2hhcnRIZWlnaHQ9dGhpcy5ydW5zLmxlbmd0aCp0aGlzLnJ1bkhlaWdodC10aGlzLm1hcmdpbi50b3AtdGhpcy5tYXJnaW4uYm90dG9tLHRoaXMud2lkdGg9dGhpcy5hbm5vdGF0aW9uQ29udGFpbmVyLm5hdGl2ZUVsZW1lbnQuY2xpZW50V2lkdGh8fDEwLHRoaXMuY2hhcnRXaWR0aD10aGlzLndpZHRoLXRoaXMubWFyZ2luLmxlZnQtdGhpcy5tYXJnaW4ucmlnaHR9c2V0VGV4dENsYXNzKCl7dGhpcy50ZXh0Q2xhc3M9ImRlZmF1bHQtdGV4dCIsdGhpcy5mbGFnZ2VkQW5ub3RhdGlvbnMuaW5jbHVkZXModGhpcy5hbm5vdGF0aW9uKT90aGlzLnRleHRDbGFzcz0iZmxhZy10ZXh0Ijp0aGlzLmhpZGRlbkFubm90YXRpb25zLmluY2x1ZGVzKHRoaXMuYW5ub3RhdGlvbikmJih0aGlzLnRleHRDbGFzcz0iaGlkZGVuLXRleHQiKX11cGRhdGVBeGVzKCl7dGhpcy54U2NhbGUucmFuZ2VSb3VuZChbMCx0aGlzLmNoYXJ0V2lkdGgtdGhpcy5jaGFydFdpZHRoL3RoaXMuYWN0aXZlTWV0cmljcy5sZW5ndGhdKS5kb21haW4odGhpcy5hY3RpdmVNZXRyaWNzLm1hcCgodD0+a2d0KHQpKSkpLHRoaXMueVNjYWxlLnJhbmdlUm91bmQoWzAsdGhpcy5jaGFydEhlaWdodC10aGlzLnJ1bkhlaWdodF0pLmRvbWFpbih0aGlzLnJ1bnMpLHRoaXMuc2l6ZVNjYWxlLnJhbmdlKFswLHRoaXMuY2hhcnRXaWR0aC90aGlzLmFjdGl2ZU1ldHJpY3MubGVuZ3RoXSksdGhpcy5jb3VudFNpemVTY2FsZS5kb21haW4oWzAsdGhpcy5tYXhDb3VudF0pfWRyYXcoKXt0aGlzLmRyYXdSdW5JbmRpY2F0b3JzKCksdGhpcy5kcmF3UnVuSGludFRleHRzKCksdGhpcy5kcmF3QmFycygpLHRoaXMuZHJhd1RleHRzKCksdGhpcy5zaG93Q291bnRzPyh0aGlzLmRyYXdDb3VudERvdHMoKSx0aGlzLmRyYXdDb3VudFRleHRzKCkpOih0aGlzLmNvdW50RG90c0dyb3VwLnNlbGVjdEFsbCgiLmNvdW50LWRvdCIpLnJlbW92ZSgpLHRoaXMuY291bnRUZXh0c0dyb3VwLnNlbGVjdEFsbCgiLmNvdW50LWJhY2tncm91bmQtdGV4dCIpLnJlbW92ZSgpLHRoaXMuY291bnRUZXh0c0dyb3VwLnNlbGVjdEFsbCgiLmNvdW50LXRleHQiKS5yZW1vdmUoKSl9ZHJhd1J1bkluZGljYXRvcnMoKXtqMSh0aGlzLmNsaXBQYXRoRWxlbWVudC5uYXRpdmVFbGVtZW50KS5zZWxlY3QoInJlY3QiKS5hdHRyKCJ3aWR0aCIsdGhpcy5tYXJnaW4ubGVmdC0zMCkuYXR0cigiaGVpZ2h0Iix0aGlzLmNoYXJ0SGVpZ2h0KTtjb25zdCB0PXRoaXMucnVuSGludEdyb3VwLnNlbGVjdEFsbCgiLmhpbnQiKS5kYXRhKHRoaXMucnVucyksbj10LmVudGVyKCkuYXBwZW5kKCJnIikuYXR0cigiY2xhc3MiLCJoaW50Iik7bi5hcHBlbmQoInBhdGgiKS5hdHRyKCJkIiwiTSAwIDAgTCAxNSAwIEwgMTAgMTAgTCAxNSAyMCBMIDAgMjAgWiIpLG4ubWVyZ2UodCkuYXR0cigidHJhbnNmb3JtIixmdW5jdGlvbih0KXtyZXR1cm5gdHJhbnNsYXRlKDEwLCAke3RoaXMueVNjYWxlKHQpKzV9KWB9LmJpbmQodGhpcykpLmF0dHIoImZpbGwiLGZ1bmN0aW9uKHQpe3JldHVybiB0aGlzLmNvbG9yU2NhbGUodCl9LmJpbmQodGhpcykpLHQuZXhpdCgpLnJlbW92ZSgpfWRyYXdSdW5IaW50VGV4dHMoKXtjb25zdCB0PXRoaXMucnVuSGludEdyb3VwLnNlbGVjdEFsbCgiLmhpbnQtdGV4dCIpLmRhdGEodGhpcy5ydW5zKTt0LmVudGVyKCkuYXBwZW5kKCJ0ZXh0IikuYXR0cigieCIsMjUpLmF0dHIoImZvbnQtc2l6ZSIsIjEwcHgiKS5hdHRyKCJhbGlnbm1lbnQtYmFzZWxpbmUiLCJtaWRkbGUiKS5hdHRyKCJjbGlwLXBhdGgiLCJ1cmwoI2hpbnQtY2xpcCkiKS5tZXJnZSh0KS5hdHRyKCJ5IixmdW5jdGlvbih0KXtyZXR1cm4gdGhpcy55U2NhbGUodCkrMTV9LmJpbmQodGhpcykpLmF0dHIoImNsYXNzIixgaGludC10ZXh0ICR7dGhpcy50ZXh0Q2xhc3N9YCkudGV4dCgodD0+e3ZhciBuO3JldHVybihudWxsPT09KG49dGhpcy5ydW5JZFRvUnVucy5nZXQodCkpfHx2b2lkIDA9PT1uP3ZvaWQgMDpuLm5hbWUpfHwiIn0pKSx0LmV4aXQoKS5yZW1vdmUoKX1kcmF3QmFycygpe2NvbnN0IHQ9dGhpcy5iYXJzR3JvdXAuc2VsZWN0QWxsKCIuYmFyIikuZGF0YSh0aGlzLmRhdGEpO3QuZW50ZXIoKS5hcHBlbmQoInJlY3QiKS5hdHRyKCJjbGFzcyIsImJhciIpLmF0dHIoImhlaWdodCIsMjApLm1lcmdlKHQpLmF0dHIoImZpbGwiLCh0PT5udWxsPT09dC5uUE1JVmFsdWU/IiI6dC5uUE1JVmFsdWU+PTA/QTgodC5uUE1JVmFsdWUpOlI4KC0xKnQublBNSVZhbHVlKSkpLmF0dHIoIngiLGZ1bmN0aW9uKHQpe3JldHVybiB0aGlzLnhTY2FsZSh0Lm1ldHJpYyl9LmJpbmQodGhpcykpLmF0dHIoInkiLGZ1bmN0aW9uKHQpe3JldHVybiB0aGlzLnlTY2FsZSh0LnJ1bikrNX0uYmluZCh0aGlzKSkuYXR0cigid2lkdGgiLGZ1bmN0aW9uKHQpe3JldHVybiBudWxsPT09dC5uUE1JVmFsdWU/MDp0aGlzLnNpemVTY2FsZShNYXRoLmFicyh0Lm5QTUlWYWx1ZSkpfS5iaW5kKHRoaXMpKSx0LmV4aXQoKS5yZW1vdmUoKX1kcmF3Q291bnREb3RzKCl7Y29uc3QgdD10aGlzLmNvdW50RG90c0dyb3VwLnNlbGVjdEFsbCgiLmNvdW50LWRvdCIpLmRhdGEodGhpcy5kYXRhKTt0LmVudGVyKCkuYXBwZW5kKCJjaXJjbGUiKS5hdHRyKCJjbGFzcyIsImNvdW50LWRvdCIpLmF0dHIoInN0cm9rZSIsImJsYWNrIikubWVyZ2UodCkuYXR0cigiZmlsbCIsZnVuY3Rpb24odCl7cmV0dXJuIG51bGw9PT10LmNvdW50VmFsdWU/IiI6ejgodC5jb3VudFZhbHVlL3RoaXMubWF4Q291bnQpfS5iaW5kKHRoaXMpKS5hdHRyKCJjeCIsZnVuY3Rpb24odCl7cmV0dXJuIHRoaXMueFNjYWxlKHQubWV0cmljKSt0aGlzLmNvdW50RG90T2Zmc2V0fS5iaW5kKHRoaXMpKS5hdHRyKCJjeSIsZnVuY3Rpb24odCl7cmV0dXJuIHRoaXMueVNjYWxlKHQucnVuKSt0aGlzLnJ1bkhlaWdodC8yfS5iaW5kKHRoaXMpKS5hdHRyKCJyIixmdW5jdGlvbih0KXtyZXR1cm4gbnVsbD09PXQuY291bnRWYWx1ZT8wOnRoaXMuY291bnRTaXplU2NhbGUodC5jb3VudFZhbHVlKX0uYmluZCh0aGlzKSksdC5leGl0KCkucmVtb3ZlKCl9ZHJhd1RleHRzKCl7Y29uc3QgdD10aGlzLnRleHRzR3JvdXAuc2VsZWN0QWxsKCIubnBtaS1iYWNrZ3JvdW5kLXRleHQiKS5kYXRhKHRoaXMuZGF0YSk7dC5lbnRlcigpLmFwcGVuZCgidGV4dCIpLmF0dHIoImNsYXNzIiwibnBtaS1iYWNrZ3JvdW5kLXRleHQiKS5hdHRyKCJzdHJva2Utd2lkdGgiLDMpLmF0dHIoInN0cm9rZS1saW5lam9pbiIsInJvdW5kIikuYXR0cigic3Ryb2tlIix0aGlzLnN0cm9rZUNvbG9yKS5hdHRyKCJmb250LXNpemUiLCIxM3B4IikuYXR0cigiYWxpZ25tZW50LWJhc2VsaW5lIiwibWlkZGxlIikubWVyZ2UodCkuYXR0cigieCIsZnVuY3Rpb24odCl7cmV0dXJuIHRoaXMueFNjYWxlKHQubWV0cmljKSs1fS5iaW5kKHRoaXMpKS5hdHRyKCJ5IixmdW5jdGlvbih0KXtyZXR1cm4gdGhpcy55U2NhbGUodC5ydW4pK3RoaXMucnVuSGVpZ2h0LzJ9LmJpbmQodGhpcykpLnRleHQoKHQ9Pm51bGw9PT10Lm5QTUlWYWx1ZT8ibnVsbCI6TWF0aC5yb3VuZCgxZTMqKHQublBNSVZhbHVlK051bWJlci5FUFNJTE9OKSkvMWUzKSksdC5leGl0KCkucmVtb3ZlKCk7Y29uc3Qgbj10aGlzLnRleHRzR3JvdXAuc2VsZWN0QWxsKCIubnBtaS10ZXh0IikuZGF0YSh0aGlzLmRhdGEpO24uZW50ZXIoKS5hcHBlbmQoInRleHQiKS5hdHRyKCJjbGFzcyIsIm5wbWktdGV4dCIpLmF0dHIoImZvbnQtc2l6ZSIsIjEzcHgiKS5hdHRyKCJhbGlnbm1lbnQtYmFzZWxpbmUiLCJtaWRkbGUiKS5tZXJnZShuKS5hdHRyKCJ4IixmdW5jdGlvbih0KXtyZXR1cm4gdGhpcy54U2NhbGUodC5tZXRyaWMpKzV9LmJpbmQodGhpcykpLmF0dHIoInkiLGZ1bmN0aW9uKHQpe3JldHVybiB0aGlzLnlTY2FsZSh0LnJ1bikrdGhpcy5ydW5IZWlnaHQvMn0uYmluZCh0aGlzKSkudGV4dCgodD0+bnVsbD09PXQublBNSVZhbHVlPyJudWxsIjpNYXRoLnJvdW5kKDFlMyoodC5uUE1JVmFsdWUrTnVtYmVyLkVQU0lMT04pKS8xZTMpKSxuLmV4aXQoKS5yZW1vdmUoKX1kcmF3Q291bnRUZXh0cygpe2NvbnN0IHQ9dGhpcy5jb3VudFRleHRzR3JvdXAuc2VsZWN0QWxsKCIuY291bnQtYmFja2dyb3VuZC10ZXh0IikuZGF0YSh0aGlzLmRhdGEpO3QuZW50ZXIoKS5hcHBlbmQoInRleHQiKS5hdHRyKCJjbGFzcyIsImNvdW50LWJhY2tncm91bmQtdGV4dCIpLmF0dHIoInN0cm9rZS13aWR0aCIsMykuYXR0cigic3Ryb2tlLWxpbmVqb2luIiwicm91bmQiKS5hdHRyKCJzdHJva2UiLHRoaXMuc3Ryb2tlQ29sb3IpLmF0dHIoImZvbnQtc2l6ZSIsIjEwcHgiKS5hdHRyKCJhbGlnbm1lbnQtYmFzZWxpbmUiLCJtaWRkbGUiKS5tZXJnZSh0KS5hdHRyKCJ4IixmdW5jdGlvbih0KXtyZXR1cm4gdGhpcy54U2NhbGUodC5tZXRyaWMpK3RoaXMuY291bnREb3RPZmZzZXQrdGhpcy5jb3VudFRleHRQYWRkaW5nK3RoaXMubWF4RG90UmFkaXVzfS5iaW5kKHRoaXMpKS5hdHRyKCJ5IixmdW5jdGlvbih0KXtyZXR1cm4gdGhpcy55U2NhbGUodC5ydW4pK3RoaXMucnVuSGVpZ2h0LzJ9LmJpbmQodGhpcykpLnRleHQoKHQ9Pm51bGw9PT10LmNvdW50VmFsdWU/IiI6SW50bC5OdW1iZXJGb3JtYXQoKS5mb3JtYXQodC5jb3VudFZhbHVlKSkpLHQuZXhpdCgpLnJlbW92ZSgpO2NvbnN0IG49dGhpcy5jb3VudFRleHRzR3JvdXAuc2VsZWN0QWxsKCIuY291bnQtdGV4dCIpLmRhdGEodGhpcy5kYXRhKTtuLmVudGVyKCkuYXBwZW5kKCJ0ZXh0IikuYXR0cigiY2xhc3MiLCJjb3VudC10ZXh0IikuYXR0cigiZm9udC1zaXplIiwiMTBweCIpLmF0dHIoImFsaWdubWVudC1iYXNlbGluZSIsIm1pZGRsZSIpLm1lcmdlKG4pLmF0dHIoIngiLGZ1bmN0aW9uKHQpe3JldHVybiB0aGlzLnhTY2FsZSh0Lm1ldHJpYykrdGhpcy5jb3VudERvdE9mZnNldCt0aGlzLmNvdW50VGV4dFBhZGRpbmcrdGhpcy5tYXhEb3RSYWRpdXN9LmJpbmQodGhpcykpLmF0dHIoInkiLGZ1bmN0aW9uKHQpe3JldHVybiB0aGlzLnlTY2FsZSh0LnJ1bikrdGhpcy5ydW5IZWlnaHQvMn0uYmluZCh0aGlzKSkudGV4dCgodD0+bnVsbD09PXQuY291bnRWYWx1ZT8iIjpJbnRsLk51bWJlckZvcm1hdCgpLmZvcm1hdCh0LmNvdW50VmFsdWUpKSksbi5leGl0KCkucmVtb3ZlKCl9c2ltaWxhcml0eVNvcnQodCl7dGhpcy5oYXNFbWJlZGRpbmcmJih0LnN0b3BQcm9wYWdhdGlvbigpLHRoaXMub25TaG93U2ltaWxhckFubm90YXRpb25zLmVtaXQoKSl9fXRidC7JtWZhYz1mdW5jdGlvbiB0KG4pe3JldHVybiBuZXcobnx8dGJ0KX0sdGJ0Lsm1Y21wPV9vKHt0eXBlOnRidCxzZWxlY3RvcnM6W1siYW5ub3RhdGlvbi1jb21wb25lbnQiXV0sdmlld1F1ZXJ5OmZ1bmN0aW9uIHQobixlKXt2YXIgYTsxJm4mJihqZihYcHQsITAseHUpLGpmKEpwdCwhMCx4dSkpLDImbiYmKFZmKGE9WmYoKSkmJihlLmFubm90YXRpb25Db250YWluZXI9YS5maXJzdCksVmYoYT1aZigpKSYmKGUuY2xpcFBhdGhFbGVtZW50PWEuZmlyc3QpKX0saG9zdFZhcnM6Mixob3N0QmluZGluZ3M6ZnVuY3Rpb24gdChuLGUpezEmbiYmY3AoInJlc2l6ZSIsKGZ1bmN0aW9uIHQoKXtyZXR1cm4gZS5vblJlc2l6ZSgpfSksITEsZXIpLDImbiYmRHAoInNlbGVjdGVkLXJvdyIsZS5zZWxlY3RlZCl9LGlucHV0czp7ZGF0YToiZGF0YSIsbWF4Q291bnQ6Im1heENvdW50IixzZWxlY3RlZEFubm90YXRpb25zOiJzZWxlY3RlZEFubm90YXRpb25zIixmbGFnZ2VkQW5ub3RhdGlvbnM6ImZsYWdnZWRBbm5vdGF0aW9ucyIsaGlkZGVuQW5ub3RhdGlvbnM6ImhpZGRlbkFubm90YXRpb25zIixhY3RpdmVNZXRyaWNzOiJhY3RpdmVNZXRyaWNzIixudW1BY3RpdmVSdW5zOiJudW1BY3RpdmVSdW5zIixzaG93Q291bnRzOiJzaG93Q291bnRzIixhbm5vdGF0aW9uOiJhbm5vdGF0aW9uIixydW5IZWlnaHQ6InJ1bkhlaWdodCIsaGFzRW1iZWRkaW5nOiJoYXNFbWJlZGRpbmciLHNvcnQ6InNvcnQiLHNpZGViYXJXaWR0aDoic2lkZWJhcldpZHRoIixjb2xvclNjYWxlOiJjb2xvclNjYWxlIixydW5JZFRvUnVuczoicnVuSWRUb1J1bnMifSxvdXRwdXRzOntvblNob3dTaW1pbGFyQW5ub3RhdGlvbnM6Im9uU2hvd1NpbWlsYXJBbm5vdGF0aW9ucyJ9LGZlYXR1cmVzOltwcl0sZGVjbHM6MTQsdmFyczoxMCxjb25zdHM6W1sxLCJhbm5vdGF0aW9uLXRpdGxlIl0sWzEsImFubm90YXRpb24tY2hlY2tib3giLDMsImNoZWNrZWQiLCJjbGljayJdLFsxLCJhbm5vdGF0aW9uLWJ1dHRvbiIsMywibmdDbGFzcyIsImNsaWNrIl0sWyJjbGFzcyIsImZsYWdnZWQtaWNvbiIsInN2Z0ljb24iLCJmbGFnXzI0cHgiLDQsIm5nSWYiXSxbImNsYXNzIiwiaGlkZGVuLWljb24iLCJzdmdJY29uIiwidmlzaWJpbGl0eV9vZmZfMjRweCIsNCwibmdJZiJdLFsiY2xhc3MiLCJhbm5vdGF0aW9uLWljb24iLDMsInN2Z0ljb24iLCJuZ0NsYXNzIiw0LCJuZ0lmIl0sWzEsImNoYXJ0LWRpdiJdLFsiY2hhcnQiLCIiXSxbMSwiY2hhcnQtc3ZnIl0sWyJpZCIsImhpbnQtY2xpcCJdLFsiaGludENsaXAiLCIiXSxbIngiLCIwIiwieSIsIjAiXSxbInN2Z0ljb24iLCJmbGFnXzI0cHgiLDEsImZsYWdnZWQtaWNvbiJdLFsic3ZnSWNvbiIsInZpc2liaWxpdHlfb2ZmXzI0cHgiLDEsImhpZGRlbi1pY29uIl0sWzEsImFubm90YXRpb24taWNvbiIsMywic3ZnSWNvbiIsIm5nQ2xhc3MiXV0sdGVtcGxhdGU6ZnVuY3Rpb24gdChuLGUpezEmbiYmKEtnKDAsImRpdiIsMCksS2coMSwibWF0LWNoZWNrYm94IiwxKSxjcCgiY2xpY2siLChmdW5jdGlvbiB0KG4pe3JldHVybiBuLnByZXZlbnREZWZhdWx0KCl9KSksJGcoKSxLZygyLCJidXR0b24iLDIpLGNwKCJjbGljayIsKGZ1bmN0aW9uIHQobil7cmV0dXJuIGUuc2ltaWxhcml0eVNvcnQobil9KSksSnAoMyksJGcoKSxZZyg0LFFwdCwxLDAsIm1hdC1pY29uIiwzKSxZZyg1LEtwdCwxLDAsIm1hdC1pY29uIiw0KSxZZyg2LCRwdCwxLDIsIm1hdC1pY29uIiw1KSwkZygpLEtnKDcsImRpdiIsNiw3KSx1aSgpLEtnKDksInN2ZyIsOCksS2coMTAsImRlZnMiKSxLZygxMSwiY2xpcFBhdGgiLDksMTApLHRwKDEzLCJyZWN0IiwxMSksJGcoKSwkZygpLCRnKCksJGcoKSksMiZuJiYoRHAoImZsYWdnZWQtYW5ub3RhdGlvbiIsZS5mbGFnZ2VkQW5ub3RhdGlvbnMuaW5jbHVkZXMoZS5hbm5vdGF0aW9uKSkoImhpZGRlbi1hbm5vdGF0aW9uIixlLmhpZGRlbkFubm90YXRpb25zLmluY2x1ZGVzKGUuYW5ub3RhdGlvbikmJiFlLmZsYWdnZWRBbm5vdGF0aW9ucy5pbmNsdWRlcyhlLmFubm90YXRpb24pKSx3cygxKSxKZygiY2hlY2tlZCIsZS5zZWxlY3RlZEFubm90YXRpb25zLmluY2x1ZGVzKGUuYW5ub3RhdGlvbikpLHdzKDEpLEpnKCJuZ0NsYXNzIixlLmhhc0VtYmVkZGluZz8iY2xpY2thYmxlLWFubm90YXRpb24iOiIiKSx3cygxKSxLcCgiICIsZS5hbm5vdGF0aW9uLCIgIiksd3MoMSksSmcoIm5nSWYiLGUuZmxhZ2dlZEFubm90YXRpb25zLmluY2x1ZGVzKGUuYW5ub3RhdGlvbikpLHdzKDEpLEpnKCJuZ0lmIixlLmhpZGRlbkFubm90YXRpb25zLmluY2x1ZGVzKGUuYW5ub3RhdGlvbikpLHdzKDEpLEpnKCJuZ0lmIixlLmFubm90YXRpb249PT1lLnNvcnQubWV0cmljKSl9LGRpcmVjdGl2ZXM6W3JWLEhNLFdNLEJCXSxzdHlsZXM6WycubWF0LWJhZGdlLWNvbnRlbnR7Zm9udC13ZWlnaHQ6NjAwO2ZvbnQtc2l6ZToxMnB4O2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZn0ubWF0LWJhZGdlLXNtYWxsIC5tYXQtYmFkZ2UtY29udGVudHtmb250LXNpemU6OXB4fS5tYXQtYmFkZ2UtbGFyZ2UgLm1hdC1iYWRnZS1jb250ZW50e2ZvbnQtc2l6ZToyNHB4fS5tYXQtaDEsLm1hdC1oZWFkbGluZSwubWF0LXR5cG9ncmFwaHkgaDF7Zm9udDo0MDAgMjRweC8zMnB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtsZXR0ZXItc3BhY2luZzpub3JtYWw7bWFyZ2luOjAgMCAxNnB4fS5tYXQtaDIsLm1hdC10aXRsZSwubWF0LXR5cG9ncmFwaHkgaDJ7Zm9udDo1MDAgMjBweC8zMnB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtsZXR0ZXItc3BhY2luZzpub3JtYWw7bWFyZ2luOjAgMCAxNnB4fS5tYXQtaDMsLm1hdC1zdWJoZWFkaW5nLTIsLm1hdC10eXBvZ3JhcGh5IGgze2ZvbnQ6NDAwIDE2cHgvMjhweCBSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7bGV0dGVyLXNwYWNpbmc6bm9ybWFsO21hcmdpbjowIDAgMTZweH0ubWF0LWg0LC5tYXQtc3ViaGVhZGluZy0xLC5tYXQtdHlwb2dyYXBoeSBoNHtmb250OjQwMCAxNXB4LzI0cHggUm9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2xldHRlci1zcGFjaW5nOm5vcm1hbDttYXJnaW46MCAwIDE2cHh9Lm1hdC1oNSwubWF0LXR5cG9ncmFwaHkgaDV7Zm9udDo0MDAgY2FsYygxNHB4ICogMC44MykvMjBweCBSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7bWFyZ2luOjAgMCAxMnB4fS5tYXQtaDYsLm1hdC10eXBvZ3JhcGh5IGg2e2ZvbnQ6NDAwIGNhbGMoMTRweCAqIDAuNjcpLzIwcHggUm9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO21hcmdpbjowIDAgMTJweH0ubWF0LWJvZHktc3Ryb25nLC5tYXQtYm9keS0ye2ZvbnQ6NTAwIDE0cHgvMjRweCBSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7bGV0dGVyLXNwYWNpbmc6bm9ybWFsfS5tYXQtYm9keSwubWF0LWJvZHktMSwubWF0LXR5cG9ncmFwaHl7Zm9udDo0MDAgMTRweC8yMHB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtsZXR0ZXItc3BhY2luZzpub3JtYWx9Lm1hdC1ib2R5IHAsLm1hdC1ib2R5LTEgcCwubWF0LXR5cG9ncmFwaHkgcHttYXJnaW46MCAwIDEycHh9Lm1hdC1zbWFsbCwubWF0LWNhcHRpb257Zm9udDo0MDAgMTJweC8yMHB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtsZXR0ZXItc3BhY2luZzpub3JtYWx9Lm1hdC1kaXNwbGF5LTQsLm1hdC10eXBvZ3JhcGh5IC5tYXQtZGlzcGxheS00e2ZvbnQ6MzAwIDExMnB4LzExMnB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtsZXR0ZXItc3BhY2luZzotMC4wNWVtO21hcmdpbjowIDAgNTZweH0ubWF0LWRpc3BsYXktMywubWF0LXR5cG9ncmFwaHkgLm1hdC1kaXNwbGF5LTN7Zm9udDo0MDAgNTZweC81NnB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtsZXR0ZXItc3BhY2luZzotMC4wMmVtO21hcmdpbjowIDAgNjRweH0ubWF0LWRpc3BsYXktMiwubWF0LXR5cG9ncmFwaHkgLm1hdC1kaXNwbGF5LTJ7Zm9udDo0MDAgNDVweC80OHB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtsZXR0ZXItc3BhY2luZzotMC4wMDVlbTttYXJnaW46MCAwIDY0cHh9Lm1hdC1kaXNwbGF5LTEsLm1hdC10eXBvZ3JhcGh5IC5tYXQtZGlzcGxheS0xe2ZvbnQ6NDAwIDM0cHgvNDBweCBSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7bGV0dGVyLXNwYWNpbmc6bm9ybWFsO21hcmdpbjowIDAgNjRweH0ubWF0LWJvdHRvbS1zaGVldC1jb250YWluZXJ7Zm9udDo0MDAgMTRweC8yMHB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtsZXR0ZXItc3BhY2luZzpub3JtYWx9Lm1hdC1idXR0b24sLm1hdC1yYWlzZWQtYnV0dG9uLC5tYXQtaWNvbi1idXR0b24sLm1hdC1zdHJva2VkLWJ1dHRvbiwubWF0LWZsYXQtYnV0dG9uLC5tYXQtZmFiLC5tYXQtbWluaS1mYWJ7Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2ZvbnQtc2l6ZToxNHB4O2ZvbnQtd2VpZ2h0OjUwMH0ubWF0LWJ1dHRvbi10b2dnbGV7Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmfS5tYXQtY2FyZHtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWZ9Lm1hdC1jYXJkLXRpdGxle2ZvbnQtc2l6ZToyNHB4O2ZvbnQtd2VpZ2h0OjUwMH0ubWF0LWNhcmQtaGVhZGVyIC5tYXQtY2FyZC10aXRsZXtmb250LXNpemU6MjBweH0ubWF0LWNhcmQtc3VidGl0bGUsLm1hdC1jYXJkLWNvbnRlbnR7Zm9udC1zaXplOjE0cHh9Lm1hdC1jaGVja2JveHtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWZ9Lm1hdC1jaGVja2JveC1sYXlvdXQgLm1hdC1jaGVja2JveC1sYWJlbHtsaW5lLWhlaWdodDoyNHB4fS5tYXQtY2hpcHtmb250LXNpemU6MTRweDtmb250LXdlaWdodDo1MDB9Lm1hdC1jaGlwIC5tYXQtY2hpcC10cmFpbGluZy1pY29uLm1hdC1pY29uLC5tYXQtY2hpcCAubWF0LWNoaXAtcmVtb3ZlLm1hdC1pY29ue2ZvbnQtc2l6ZToxOHB4fS5tYXQtdGFibGV7Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmfS5tYXQtaGVhZGVyLWNlbGx7Zm9udC1zaXplOjEycHg7Zm9udC13ZWlnaHQ6NTAwfS5tYXQtY2VsbCwubWF0LWZvb3Rlci1jZWxse2ZvbnQtc2l6ZToxNHB4fS5tYXQtY2FsZW5kYXJ7Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmfS5tYXQtY2FsZW5kYXItYm9keXtmb250LXNpemU6MTNweH0ubWF0LWNhbGVuZGFyLWJvZHktbGFiZWwsLm1hdC1jYWxlbmRhci1wZXJpb2QtYnV0dG9ue2ZvbnQtc2l6ZToxNHB4O2ZvbnQtd2VpZ2h0OjUwMH0ubWF0LWNhbGVuZGFyLXRhYmxlLWhlYWRlciB0aHtmb250LXNpemU6MTFweDtmb250LXdlaWdodDo0MDB9Lm1hdC1kaWFsb2ctdGl0bGV7Zm9udDo1MDAgMjBweC8zMnB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtsZXR0ZXItc3BhY2luZzpub3JtYWx9Lm1hdC1leHBhbnNpb24tcGFuZWwtaGVhZGVye2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtmb250LXNpemU6MTVweDtmb250LXdlaWdodDo0MDB9Lm1hdC1leHBhbnNpb24tcGFuZWwtY29udGVudHtmb250OjQwMCAxNHB4LzIwcHggUm9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2xldHRlci1zcGFjaW5nOm5vcm1hbH0ubWF0LWZvcm0tZmllbGR7Zm9udC1zaXplOmluaGVyaXQ7Zm9udC13ZWlnaHQ6NDAwO2xpbmUtaGVpZ2h0OjEuMTI1O2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtsZXR0ZXItc3BhY2luZzpub3JtYWx9Lm1hdC1mb3JtLWZpZWxkLXdyYXBwZXJ7cGFkZGluZy1ib3R0b206MS4zNDM3NWVtfS5tYXQtZm9ybS1maWVsZC1wcmVmaXggLm1hdC1pY29uLC5tYXQtZm9ybS1maWVsZC1zdWZmaXggLm1hdC1pY29ue2ZvbnQtc2l6ZToxNTAlO2xpbmUtaGVpZ2h0OjEuMTI1fS5tYXQtZm9ybS1maWVsZC1wcmVmaXggLm1hdC1pY29uLWJ1dHRvbiwubWF0LWZvcm0tZmllbGQtc3VmZml4IC5tYXQtaWNvbi1idXR0b257aGVpZ2h0OjEuNWVtO3dpZHRoOjEuNWVtfS5tYXQtZm9ybS1maWVsZC1wcmVmaXggLm1hdC1pY29uLWJ1dHRvbiAubWF0LWljb24sLm1hdC1mb3JtLWZpZWxkLXN1ZmZpeCAubWF0LWljb24tYnV0dG9uIC5tYXQtaWNvbntoZWlnaHQ6MS4xMjVlbTtsaW5lLWhlaWdodDoxLjEyNX0ubWF0LWZvcm0tZmllbGQtaW5maXh7cGFkZGluZzouNWVtIDA7Ym9yZGVyLXRvcDouODQzNzVlbSBzb2xpZCB0cmFuc3BhcmVudH0ubWF0LWZvcm0tZmllbGQtY2FuLWZsb2F0Lm1hdC1mb3JtLWZpZWxkLXNob3VsZC1mbG9hdCAubWF0LWZvcm0tZmllbGQtbGFiZWwsLm1hdC1mb3JtLWZpZWxkLWNhbi1mbG9hdCAubWF0LWlucHV0LXNlcnZlcjpmb2N1cysubWF0LWZvcm0tZmllbGQtbGFiZWwtd3JhcHBlciAubWF0LWZvcm0tZmllbGQtbGFiZWx7dHJhbnNmb3JtOnRyYW5zbGF0ZVkoLTEuMzQzNzVlbSkgc2NhbGUoMC43NSk7d2lkdGg6MTMzLjMzMzMzMzMzMzMlfS5tYXQtZm9ybS1maWVsZC1jYW4tZmxvYXQgLm1hdC1pbnB1dC1zZXJ2ZXJbbGFiZWxdOm5vdCg6bGFiZWwtc2hvd24pKy5tYXQtZm9ybS1maWVsZC1sYWJlbC13cmFwcGVyIC5tYXQtZm9ybS1maWVsZC1sYWJlbHt0cmFuc2Zvcm06dHJhbnNsYXRlWSgtMS4zNDM3NGVtKSBzY2FsZSgwLjc1KTt3aWR0aDoxMzMuMzMzMzQzMzMzMyV9Lm1hdC1mb3JtLWZpZWxkLWxhYmVsLXdyYXBwZXJ7dG9wOi0wLjg0Mzc1ZW07cGFkZGluZy10b3A6Ljg0Mzc1ZW19Lm1hdC1mb3JtLWZpZWxkLWxhYmVse3RvcDoxLjM0Mzc1ZW19Lm1hdC1mb3JtLWZpZWxkLXVuZGVybGluZXtib3R0b206MS4zNDM3NWVtfS5tYXQtZm9ybS1maWVsZC1zdWJzY3JpcHQtd3JhcHBlcntmb250LXNpemU6NzUlO21hcmdpbi10b3A6LjY2NjY2NjY2NjdlbTt0b3A6Y2FsYygxMDAlIC0gMS43OTE2NjY2NjY3ZW0pfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWxlZ2FjeSAubWF0LWZvcm0tZmllbGQtd3JhcHBlcntwYWRkaW5nLWJvdHRvbToxLjI1ZW19Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtbGVnYWN5IC5tYXQtZm9ybS1maWVsZC1pbmZpeHtwYWRkaW5nOi40Mzc1ZW0gMH0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1sZWdhY3kubWF0LWZvcm0tZmllbGQtY2FuLWZsb2F0Lm1hdC1mb3JtLWZpZWxkLXNob3VsZC1mbG9hdCAubWF0LWZvcm0tZmllbGQtbGFiZWwsLm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtbGVnYWN5Lm1hdC1mb3JtLWZpZWxkLWNhbi1mbG9hdCAubWF0LWlucHV0LXNlcnZlcjpmb2N1cysubWF0LWZvcm0tZmllbGQtbGFiZWwtd3JhcHBlciAubWF0LWZvcm0tZmllbGQtbGFiZWx7dHJhbnNmb3JtOnRyYW5zbGF0ZVkoLTEuMjgxMjVlbSkgc2NhbGUoMC43NSkgcGVyc3BlY3RpdmUoMTAwcHgpIHRyYW5zbGF0ZVooMC4wMDFweCk7LW1zLXRyYW5zZm9ybTp0cmFuc2xhdGVZKC0xLjI4MTI1ZW0pIHNjYWxlKDAuNzUpO3dpZHRoOjEzMy4zMzMzMzMzMzMzJX0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1sZWdhY3kubWF0LWZvcm0tZmllbGQtY2FuLWZsb2F0IC5tYXQtZm9ybS1maWVsZC1hdXRvZmlsbC1jb250cm9sOi13ZWJraXQtYXV0b2ZpbGwrLm1hdC1mb3JtLWZpZWxkLWxhYmVsLXdyYXBwZXIgLm1hdC1mb3JtLWZpZWxkLWxhYmVse3RyYW5zZm9ybTp0cmFuc2xhdGVZKC0xLjI4MTI1ZW0pIHNjYWxlKDAuNzUpIHBlcnNwZWN0aXZlKDEwMHB4KSB0cmFuc2xhdGVaKDAuMDAxMDFweCk7LW1zLXRyYW5zZm9ybTp0cmFuc2xhdGVZKC0xLjI4MTI0ZW0pIHNjYWxlKDAuNzUpO3dpZHRoOjEzMy4zMzMzNDMzMzMzJX0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1sZWdhY3kubWF0LWZvcm0tZmllbGQtY2FuLWZsb2F0IC5tYXQtaW5wdXQtc2VydmVyW2xhYmVsXTpub3QoOmxhYmVsLXNob3duKSsubWF0LWZvcm0tZmllbGQtbGFiZWwtd3JhcHBlciAubWF0LWZvcm0tZmllbGQtbGFiZWx7dHJhbnNmb3JtOnRyYW5zbGF0ZVkoLTEuMjgxMjVlbSkgc2NhbGUoMC43NSkgcGVyc3BlY3RpdmUoMTAwcHgpIHRyYW5zbGF0ZVooMC4wMDEwMnB4KTstbXMtdHJhbnNmb3JtOnRyYW5zbGF0ZVkoLTEuMjgxMjNlbSkgc2NhbGUoMC43NSk7d2lkdGg6MTMzLjMzMzM1MzMzMzMlfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWxlZ2FjeSAubWF0LWZvcm0tZmllbGQtbGFiZWx7dG9wOjEuMjgxMjVlbX0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1sZWdhY3kgLm1hdC1mb3JtLWZpZWxkLXVuZGVybGluZXtib3R0b206MS4yNWVtfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWxlZ2FjeSAubWF0LWZvcm0tZmllbGQtc3Vic2NyaXB0LXdyYXBwZXJ7bWFyZ2luLXRvcDouNTQxNjY2NjY2N2VtO3RvcDpjYWxjKDEwMCUgLSAxLjY2NjY2NjY2NjdlbSl9QG1lZGlhIHByaW50ey5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWxlZ2FjeS5tYXQtZm9ybS1maWVsZC1jYW4tZmxvYXQubWF0LWZvcm0tZmllbGQtc2hvdWxkLWZsb2F0IC5tYXQtZm9ybS1maWVsZC1sYWJlbCwubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1sZWdhY3kubWF0LWZvcm0tZmllbGQtY2FuLWZsb2F0IC5tYXQtaW5wdXQtc2VydmVyOmZvY3VzKy5tYXQtZm9ybS1maWVsZC1sYWJlbC13cmFwcGVyIC5tYXQtZm9ybS1maWVsZC1sYWJlbHt0cmFuc2Zvcm06dHJhbnNsYXRlWSgtMS4yODEyMmVtKSBzY2FsZSgwLjc1KX0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1sZWdhY3kubWF0LWZvcm0tZmllbGQtY2FuLWZsb2F0IC5tYXQtZm9ybS1maWVsZC1hdXRvZmlsbC1jb250cm9sOi13ZWJraXQtYXV0b2ZpbGwrLm1hdC1mb3JtLWZpZWxkLWxhYmVsLXdyYXBwZXIgLm1hdC1mb3JtLWZpZWxkLWxhYmVse3RyYW5zZm9ybTp0cmFuc2xhdGVZKC0xLjI4MTIxZW0pIHNjYWxlKDAuNzUpfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWxlZ2FjeS5tYXQtZm9ybS1maWVsZC1jYW4tZmxvYXQgLm1hdC1pbnB1dC1zZXJ2ZXJbbGFiZWxdOm5vdCg6bGFiZWwtc2hvd24pKy5tYXQtZm9ybS1maWVsZC1sYWJlbC13cmFwcGVyIC5tYXQtZm9ybS1maWVsZC1sYWJlbHt0cmFuc2Zvcm06dHJhbnNsYXRlWSgtMS4yODEyZW0pIHNjYWxlKDAuNzUpfX0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1maWxsIC5tYXQtZm9ybS1maWVsZC1pbmZpeHtwYWRkaW5nOi4yNWVtIDAgLjc1ZW0gMH0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1maWxsIC5tYXQtZm9ybS1maWVsZC1sYWJlbHt0b3A6MS4wOTM3NWVtO21hcmdpbi10b3A6LTAuNWVtfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWZpbGwubWF0LWZvcm0tZmllbGQtY2FuLWZsb2F0Lm1hdC1mb3JtLWZpZWxkLXNob3VsZC1mbG9hdCAubWF0LWZvcm0tZmllbGQtbGFiZWwsLm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtZmlsbC5tYXQtZm9ybS1maWVsZC1jYW4tZmxvYXQgLm1hdC1pbnB1dC1zZXJ2ZXI6Zm9jdXMrLm1hdC1mb3JtLWZpZWxkLWxhYmVsLXdyYXBwZXIgLm1hdC1mb3JtLWZpZWxkLWxhYmVse3RyYW5zZm9ybTp0cmFuc2xhdGVZKC0wLjU5Mzc1ZW0pIHNjYWxlKDAuNzUpO3dpZHRoOjEzMy4zMzMzMzMzMzMzJX0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1maWxsLm1hdC1mb3JtLWZpZWxkLWNhbi1mbG9hdCAubWF0LWlucHV0LXNlcnZlcltsYWJlbF06bm90KDpsYWJlbC1zaG93bikrLm1hdC1mb3JtLWZpZWxkLWxhYmVsLXdyYXBwZXIgLm1hdC1mb3JtLWZpZWxkLWxhYmVse3RyYW5zZm9ybTp0cmFuc2xhdGVZKC0wLjU5Mzc0ZW0pIHNjYWxlKDAuNzUpO3dpZHRoOjEzMy4zMzMzNDMzMzMzJX0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1vdXRsaW5lIC5tYXQtZm9ybS1maWVsZC1pbmZpeHtwYWRkaW5nOjFlbSAwIDFlbSAwfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLW91dGxpbmUgLm1hdC1mb3JtLWZpZWxkLWxhYmVse3RvcDoxLjg0Mzc1ZW07bWFyZ2luLXRvcDotMC4yNWVtfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLW91dGxpbmUubWF0LWZvcm0tZmllbGQtY2FuLWZsb2F0Lm1hdC1mb3JtLWZpZWxkLXNob3VsZC1mbG9hdCAubWF0LWZvcm0tZmllbGQtbGFiZWwsLm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2Utb3V0bGluZS5tYXQtZm9ybS1maWVsZC1jYW4tZmxvYXQgLm1hdC1pbnB1dC1zZXJ2ZXI6Zm9jdXMrLm1hdC1mb3JtLWZpZWxkLWxhYmVsLXdyYXBwZXIgLm1hdC1mb3JtLWZpZWxkLWxhYmVse3RyYW5zZm9ybTp0cmFuc2xhdGVZKC0xLjU5Mzc1ZW0pIHNjYWxlKDAuNzUpO3dpZHRoOjEzMy4zMzMzMzMzMzMzJX0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1vdXRsaW5lLm1hdC1mb3JtLWZpZWxkLWNhbi1mbG9hdCAubWF0LWlucHV0LXNlcnZlcltsYWJlbF06bm90KDpsYWJlbC1zaG93bikrLm1hdC1mb3JtLWZpZWxkLWxhYmVsLXdyYXBwZXIgLm1hdC1mb3JtLWZpZWxkLWxhYmVse3RyYW5zZm9ybTp0cmFuc2xhdGVZKC0xLjU5Mzc0ZW0pIHNjYWxlKDAuNzUpO3dpZHRoOjEzMy4zMzMzNDMzMzMzJX0ubWF0LWdyaWQtdGlsZS1oZWFkZXIsLm1hdC1ncmlkLXRpbGUtZm9vdGVye2ZvbnQtc2l6ZToxNHB4fS5tYXQtZ3JpZC10aWxlLWhlYWRlciAubWF0LWxpbmUsLm1hdC1ncmlkLXRpbGUtZm9vdGVyIC5tYXQtbGluZXt3aGl0ZS1zcGFjZTpub3dyYXA7b3ZlcmZsb3c6aGlkZGVuO3RleHQtb3ZlcmZsb3c6ZWxsaXBzaXM7ZGlzcGxheTpibG9jaztib3gtc2l6aW5nOmJvcmRlci1ib3h9Lm1hdC1ncmlkLXRpbGUtaGVhZGVyIC5tYXQtbGluZTpudGgtY2hpbGQobisyKSwubWF0LWdyaWQtdGlsZS1mb290ZXIgLm1hdC1saW5lOm50aC1jaGlsZChuKzIpe2ZvbnQtc2l6ZToxMnB4fWlucHV0Lm1hdC1pbnB1dC1lbGVtZW50e21hcmdpbi10b3A6LTAuMDYyNWVtfS5tYXQtbWVudS1pdGVte2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtmb250LXNpemU6MTRweDtmb250LXdlaWdodDo0MDB9Lm1hdC1wYWdpbmF0b3IsLm1hdC1wYWdpbmF0b3ItcGFnZS1zaXplIC5tYXQtc2VsZWN0LXRyaWdnZXJ7Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2ZvbnQtc2l6ZToxMnB4fS5tYXQtcmFkaW8tYnV0dG9ue2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZn0ubWF0LXNlbGVjdHtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWZ9Lm1hdC1zZWxlY3QtdHJpZ2dlcntoZWlnaHQ6MS4xMjVlbX0ubWF0LXNsaWRlLXRvZ2dsZS1jb250ZW50e2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZn0ubWF0LXNsaWRlci10aHVtYi1sYWJlbC10ZXh0e2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtmb250LXNpemU6MTJweDtmb250LXdlaWdodDo1MDB9Lm1hdC1zdGVwcGVyLXZlcnRpY2FsLC5tYXQtc3RlcHBlci1ob3Jpem9udGFse2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZn0ubWF0LXN0ZXAtbGFiZWx7Zm9udC1zaXplOjE0cHg7Zm9udC13ZWlnaHQ6NDAwfS5tYXQtc3RlcC1zdWItbGFiZWwtZXJyb3J7Zm9udC13ZWlnaHQ6bm9ybWFsfS5tYXQtc3RlcC1sYWJlbC1lcnJvcntmb250LXNpemU6MTRweH0ubWF0LXN0ZXAtbGFiZWwtc2VsZWN0ZWR7Zm9udC1zaXplOjE0cHg7Zm9udC13ZWlnaHQ6NTAwfS5tYXQtdGFiLWdyb3Vwe2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZn0ubWF0LXRhYi1sYWJlbCwubWF0LXRhYi1saW5re2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtmb250LXNpemU6MTRweDtmb250LXdlaWdodDo1MDB9Lm1hdC10b29sYmFyLC5tYXQtdG9vbGJhciBoMSwubWF0LXRvb2xiYXIgaDIsLm1hdC10b29sYmFyIGgzLC5tYXQtdG9vbGJhciBoNCwubWF0LXRvb2xiYXIgaDUsLm1hdC10b29sYmFyIGg2e2ZvbnQ6NTAwIDIwcHgvMzJweCBSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7bGV0dGVyLXNwYWNpbmc6bm9ybWFsO21hcmdpbjowfS5tYXQtdG9vbHRpcHtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7Zm9udC1zaXplOjEwcHg7cGFkZGluZy10b3A6NnB4O3BhZGRpbmctYm90dG9tOjZweH0ubWF0LXRvb2x0aXAtaGFuZHNldHtmb250LXNpemU6MTRweDtwYWRkaW5nLXRvcDo4cHg7cGFkZGluZy1ib3R0b206OHB4fS5tYXQtbGlzdC1pdGVte2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZn0ubWF0LWxpc3Qtb3B0aW9ue2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZn0ubWF0LWxpc3QtYmFzZSAubWF0LWxpc3QtaXRlbXtmb250LXNpemU6MTZweH0ubWF0LWxpc3QtYmFzZSAubWF0LWxpc3QtaXRlbSAubWF0LWxpbmV7d2hpdGUtc3BhY2U6bm93cmFwO292ZXJmbG93OmhpZGRlbjt0ZXh0LW92ZXJmbG93OmVsbGlwc2lzO2Rpc3BsYXk6YmxvY2s7Ym94LXNpemluZzpib3JkZXItYm94fS5tYXQtbGlzdC1iYXNlIC5tYXQtbGlzdC1pdGVtIC5tYXQtbGluZTpudGgtY2hpbGQobisyKXtmb250LXNpemU6MTRweH0ubWF0LWxpc3QtYmFzZSAubWF0LWxpc3Qtb3B0aW9ue2ZvbnQtc2l6ZToxNnB4fS5tYXQtbGlzdC1iYXNlIC5tYXQtbGlzdC1vcHRpb24gLm1hdC1saW5le3doaXRlLXNwYWNlOm5vd3JhcDtvdmVyZmxvdzpoaWRkZW47dGV4dC1vdmVyZmxvdzplbGxpcHNpcztkaXNwbGF5OmJsb2NrO2JveC1zaXppbmc6Ym9yZGVyLWJveH0ubWF0LWxpc3QtYmFzZSAubWF0LWxpc3Qtb3B0aW9uIC5tYXQtbGluZTpudGgtY2hpbGQobisyKXtmb250LXNpemU6MTRweH0ubWF0LWxpc3QtYmFzZSAubWF0LXN1YmhlYWRlcntmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7Zm9udC1zaXplOjE0cHg7Zm9udC13ZWlnaHQ6NTAwfS5tYXQtbGlzdC1iYXNlW2RlbnNlXSAubWF0LWxpc3QtaXRlbXtmb250LXNpemU6MTJweH0ubWF0LWxpc3QtYmFzZVtkZW5zZV0gLm1hdC1saXN0LWl0ZW0gLm1hdC1saW5le3doaXRlLXNwYWNlOm5vd3JhcDtvdmVyZmxvdzpoaWRkZW47dGV4dC1vdmVyZmxvdzplbGxpcHNpcztkaXNwbGF5OmJsb2NrO2JveC1zaXppbmc6Ym9yZGVyLWJveH0ubWF0LWxpc3QtYmFzZVtkZW5zZV0gLm1hdC1saXN0LWl0ZW0gLm1hdC1saW5lOm50aC1jaGlsZChuKzIpe2ZvbnQtc2l6ZToxMnB4fS5tYXQtbGlzdC1iYXNlW2RlbnNlXSAubWF0LWxpc3Qtb3B0aW9ue2ZvbnQtc2l6ZToxMnB4fS5tYXQtbGlzdC1iYXNlW2RlbnNlXSAubWF0LWxpc3Qtb3B0aW9uIC5tYXQtbGluZXt3aGl0ZS1zcGFjZTpub3dyYXA7b3ZlcmZsb3c6aGlkZGVuO3RleHQtb3ZlcmZsb3c6ZWxsaXBzaXM7ZGlzcGxheTpibG9jaztib3gtc2l6aW5nOmJvcmRlci1ib3h9Lm1hdC1saXN0LWJhc2VbZGVuc2VdIC5tYXQtbGlzdC1vcHRpb24gLm1hdC1saW5lOm50aC1jaGlsZChuKzIpe2ZvbnQtc2l6ZToxMnB4fS5tYXQtbGlzdC1iYXNlW2RlbnNlXSAubWF0LXN1YmhlYWRlcntmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7Zm9udC1zaXplOjEycHg7Zm9udC13ZWlnaHQ6NTAwfS5tYXQtb3B0aW9ue2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtmb250LXNpemU6MTZweH0ubWF0LW9wdGdyb3VwLWxhYmVse2ZvbnQ6NTAwIDE0cHgvMjRweCBSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7bGV0dGVyLXNwYWNpbmc6bm9ybWFsfS5tYXQtc2ltcGxlLXNuYWNrYmFye2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtmb250LXNpemU6MTRweH0ubWF0LXNpbXBsZS1zbmFja2Jhci1hY3Rpb257bGluZS1oZWlnaHQ6MTtmb250LWZhbWlseTppbmhlcml0O2ZvbnQtc2l6ZTppbmhlcml0O2ZvbnQtd2VpZ2h0OjUwMH0ubWF0LXRyZWV7Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmfS5tYXQtdHJlZS1ub2RlLC5tYXQtbmVzdGVkLXRyZWUtbm9kZXtmb250LXdlaWdodDo0MDA7Zm9udC1zaXplOjE0cHh9Lm1hdC1yaXBwbGV7b3ZlcmZsb3c6aGlkZGVuO3Bvc2l0aW9uOnJlbGF0aXZlfS5tYXQtcmlwcGxlOm5vdCg6ZW1wdHkpe3RyYW5zZm9ybTp0cmFuc2xhdGVaKDApfS5tYXQtcmlwcGxlLm1hdC1yaXBwbGUtdW5ib3VuZGVke292ZXJmbG93OnZpc2libGV9Lm1hdC1yaXBwbGUtZWxlbWVudHtwb3NpdGlvbjphYnNvbHV0ZTtib3JkZXItcmFkaXVzOjUwJTtwb2ludGVyLWV2ZW50czpub25lO3RyYW5zaXRpb246b3BhY2l0eSx0cmFuc2Zvcm0gMG1zIGN1YmljLWJlemllcigwLCAwLCAwLjIsIDEpO3RyYW5zZm9ybTpzY2FsZSgwKX0uY2RrLWhpZ2gtY29udHJhc3QtYWN0aXZlIC5tYXQtcmlwcGxlLWVsZW1lbnR7ZGlzcGxheTpub25lfS5jZGstdmlzdWFsbHktaGlkZGVue2JvcmRlcjowO2NsaXA6cmVjdCgwIDAgMCAwKTtoZWlnaHQ6MXB4O21hcmdpbjotMXB4O292ZXJmbG93OmhpZGRlbjtwYWRkaW5nOjA7cG9zaXRpb246YWJzb2x1dGU7d2lkdGg6MXB4O291dGxpbmU6MDstd2Via2l0LWFwcGVhcmFuY2U6bm9uZTstbW96LWFwcGVhcmFuY2U6bm9uZX0uY2RrLW92ZXJsYXktY29udGFpbmVyLC5jZGstZ2xvYmFsLW92ZXJsYXktd3JhcHBlcntwb2ludGVyLWV2ZW50czpub25lO3RvcDowO2xlZnQ6MDtoZWlnaHQ6MTAwJTt3aWR0aDoxMDAlfS5jZGstb3ZlcmxheS1jb250YWluZXJ7cG9zaXRpb246Zml4ZWQ7ei1pbmRleDoxMDAwfS5jZGstb3ZlcmxheS1jb250YWluZXI6ZW1wdHl7ZGlzcGxheTpub25lfS5jZGstZ2xvYmFsLW92ZXJsYXktd3JhcHBlcntkaXNwbGF5OmZsZXg7cG9zaXRpb246YWJzb2x1dGU7ei1pbmRleDoxMDAwfS5jZGstb3ZlcmxheS1wYW5le3Bvc2l0aW9uOmFic29sdXRlO3BvaW50ZXItZXZlbnRzOmF1dG87Ym94LXNpemluZzpib3JkZXItYm94O3otaW5kZXg6MTAwMDtkaXNwbGF5OmZsZXg7bWF4LXdpZHRoOjEwMCU7bWF4LWhlaWdodDoxMDAlfS5jZGstb3ZlcmxheS1iYWNrZHJvcHtwb3NpdGlvbjphYnNvbHV0ZTt0b3A6MDtib3R0b206MDtsZWZ0OjA7cmlnaHQ6MDt6LWluZGV4OjEwMDA7cG9pbnRlci1ldmVudHM6YXV0bzstd2Via2l0LXRhcC1oaWdobGlnaHQtY29sb3I6dHJhbnNwYXJlbnQ7dHJhbnNpdGlvbjpvcGFjaXR5IDQwMG1zIGN1YmljLWJlemllcigwLjI1LCAwLjgsIDAuMjUsIDEpO29wYWNpdHk6MH0uY2RrLW92ZXJsYXktYmFja2Ryb3AuY2RrLW92ZXJsYXktYmFja2Ryb3Atc2hvd2luZ3tvcGFjaXR5OjF9QG1lZGlhIHNjcmVlbiBhbmQgKC1tcy1oaWdoLWNvbnRyYXN0OiBhY3RpdmUpey5jZGstb3ZlcmxheS1iYWNrZHJvcC5jZGstb3ZlcmxheS1iYWNrZHJvcC1zaG93aW5ne29wYWNpdHk6LjZ9fS5jZGstb3ZlcmxheS1kYXJrLWJhY2tkcm9we2JhY2tncm91bmQ6cmdiYSgwLDAsMCwuMzIpfS5jZGstb3ZlcmxheS10cmFuc3BhcmVudC1iYWNrZHJvcCwuY2RrLW92ZXJsYXktdHJhbnNwYXJlbnQtYmFja2Ryb3AuY2RrLW92ZXJsYXktYmFja2Ryb3Atc2hvd2luZ3tvcGFjaXR5OjB9LmNkay1vdmVybGF5LWNvbm5lY3RlZC1wb3NpdGlvbi1ib3VuZGluZy1ib3h7cG9zaXRpb246YWJzb2x1dGU7ei1pbmRleDoxMDAwO2Rpc3BsYXk6ZmxleDtmbGV4LWRpcmVjdGlvbjpjb2x1bW47bWluLXdpZHRoOjFweDttaW4taGVpZ2h0OjFweH0uY2RrLWdsb2JhbC1zY3JvbGxibG9ja3twb3NpdGlvbjpmaXhlZDt3aWR0aDoxMDAlO292ZXJmbG93LXk6c2Nyb2xsfUBrZXlmcmFtZXMgY2RrLXRleHQtZmllbGQtYXV0b2ZpbGwtc3RhcnR7LyohKi99QGtleWZyYW1lcyBjZGstdGV4dC1maWVsZC1hdXRvZmlsbC1lbmR7LyohKi99LmNkay10ZXh0LWZpZWxkLWF1dG9maWxsLW1vbml0b3JlZDotd2Via2l0LWF1dG9maWxse2FuaW1hdGlvbjpjZGstdGV4dC1maWVsZC1hdXRvZmlsbC1zdGFydCAwcyAxbXN9LmNkay10ZXh0LWZpZWxkLWF1dG9maWxsLW1vbml0b3JlZDpub3QoOi13ZWJraXQtYXV0b2ZpbGwpe2FuaW1hdGlvbjpjZGstdGV4dC1maWVsZC1hdXRvZmlsbC1lbmQgMHMgMW1zfXRleHRhcmVhLmNkay10ZXh0YXJlYS1hdXRvc2l6ZXtyZXNpemU6bm9uZX10ZXh0YXJlYS5jZGstdGV4dGFyZWEtYXV0b3NpemUtbWVhc3VyaW5ne3BhZGRpbmc6MnB4IDAgIWltcG9ydGFudDtib3gtc2l6aW5nOmNvbnRlbnQtYm94ICFpbXBvcnRhbnQ7aGVpZ2h0OmF1dG8gIWltcG9ydGFudDtvdmVyZmxvdzpoaWRkZW4gIWltcG9ydGFudH10ZXh0YXJlYS5jZGstdGV4dGFyZWEtYXV0b3NpemUtbWVhc3VyaW5nLWZpcmVmb3h7cGFkZGluZzoycHggMCAhaW1wb3J0YW50O2JveC1zaXppbmc6Y29udGVudC1ib3ggIWltcG9ydGFudDtoZWlnaHQ6MCAhaW1wb3J0YW50fS5tYXQtZm9jdXMtaW5kaWNhdG9ye3Bvc2l0aW9uOnJlbGF0aXZlfS5tYXQtbWRjLWZvY3VzLWluZGljYXRvcntwb3NpdGlvbjpyZWxhdGl2ZX0ubWF0LXJpcHBsZS1lbGVtZW50e2JhY2tncm91bmQtY29sb3I6cmdiYSgwLDAsMCwuMSl9Lm1hdC1vcHRpb257Y29sb3I6IzIxMjEyMX0ubWF0LW9wdGlvbjpob3Zlcjpub3QoLm1hdC1vcHRpb24tZGlzYWJsZWQpLC5tYXQtb3B0aW9uOmZvY3VzOm5vdCgubWF0LW9wdGlvbi1kaXNhYmxlZCl7YmFja2dyb3VuZDpyZ2JhKDAsMCwwLC4wNCl9Lm1hdC1vcHRpb24ubWF0LXNlbGVjdGVkOm5vdCgubWF0LW9wdGlvbi1tdWx0aXBsZSk6bm90KC5tYXQtb3B0aW9uLWRpc2FibGVkKXtiYWNrZ3JvdW5kOnJnYmEoMCwwLDAsLjA0KX0ubWF0LW9wdGlvbi5tYXQtYWN0aXZle2JhY2tncm91bmQ6cmdiYSgwLDAsMCwuMDQpO2NvbG9yOiMyMTIxMjF9Lm1hdC1vcHRpb24ubWF0LW9wdGlvbi1kaXNhYmxlZHtjb2xvcjpyZ2JhKDAsMCwwLC4zOCl9Lm1hdC1wcmltYXJ5IC5tYXQtb3B0aW9uLm1hdC1zZWxlY3RlZDpub3QoLm1hdC1vcHRpb24tZGlzYWJsZWQpe2NvbG9yOiNmNTdjMDB9Lm1hdC1hY2NlbnQgLm1hdC1vcHRpb24ubWF0LXNlbGVjdGVkOm5vdCgubWF0LW9wdGlvbi1kaXNhYmxlZCl7Y29sb3I6I2ZmOTgwMH0ubWF0LXdhcm4gLm1hdC1vcHRpb24ubWF0LXNlbGVjdGVkOm5vdCgubWF0LW9wdGlvbi1kaXNhYmxlZCl7Y29sb3I6I2Y0NDMzNn0ubWF0LW9wdGdyb3VwLWxhYmVse2NvbG9yOiM2MTYxNjF9Lm1hdC1vcHRncm91cC1kaXNhYmxlZCAubWF0LW9wdGdyb3VwLWxhYmVse2NvbG9yOnJnYmEoMCwwLDAsLjM4KX0ubWF0LXBzZXVkby1jaGVja2JveHtjb2xvcjojNjE2MTYxfS5tYXQtcHNldWRvLWNoZWNrYm94OjphZnRlcntjb2xvcjojZmFmYWZhfS5tYXQtcHNldWRvLWNoZWNrYm94LWRpc2FibGVke2NvbG9yOiNiMGIwYjB9Lm1hdC1wcmltYXJ5IC5tYXQtcHNldWRvLWNoZWNrYm94LWNoZWNrZWQsLm1hdC1wcmltYXJ5IC5tYXQtcHNldWRvLWNoZWNrYm94LWluZGV0ZXJtaW5hdGV7YmFja2dyb3VuZDojZjU3YzAwfS5tYXQtcHNldWRvLWNoZWNrYm94LWNoZWNrZWQsLm1hdC1wc2V1ZG8tY2hlY2tib3gtaW5kZXRlcm1pbmF0ZSwubWF0LWFjY2VudCAubWF0LXBzZXVkby1jaGVja2JveC1jaGVja2VkLC5tYXQtYWNjZW50IC5tYXQtcHNldWRvLWNoZWNrYm94LWluZGV0ZXJtaW5hdGV7YmFja2dyb3VuZDojZmY5ODAwfS5tYXQtd2FybiAubWF0LXBzZXVkby1jaGVja2JveC1jaGVja2VkLC5tYXQtd2FybiAubWF0LXBzZXVkby1jaGVja2JveC1pbmRldGVybWluYXRle2JhY2tncm91bmQ6I2Y0NDMzNn0ubWF0LXBzZXVkby1jaGVja2JveC1jaGVja2VkLm1hdC1wc2V1ZG8tY2hlY2tib3gtZGlzYWJsZWQsLm1hdC1wc2V1ZG8tY2hlY2tib3gtaW5kZXRlcm1pbmF0ZS5tYXQtcHNldWRvLWNoZWNrYm94LWRpc2FibGVke2JhY2tncm91bmQ6I2IwYjBiMH0ubWF0LWFwcC1iYWNrZ3JvdW5ke2JhY2tncm91bmQtY29sb3I6I2ZhZmFmYTtjb2xvcjojMjEyMTIxfS5tYXQtZWxldmF0aW9uLXowe2JveC1zaGFkb3c6MHB4IDBweCAwcHggMHB4IHJnYmEoMCwgMCwgMCwgMC4yKSwwcHggMHB4IDBweCAwcHggcmdiYSgwLCAwLCAwLCAwLjE0KSwwcHggMHB4IDBweCAwcHggcmdiYSgwLCAwLCAwLCAwLjEyKX0ubWF0LWVsZXZhdGlvbi16MXtib3gtc2hhZG93OjBweCAycHggMXB4IC0xcHggcmdiYSgwLCAwLCAwLCAwLjIpLDBweCAxcHggMXB4IDBweCByZ2JhKDAsIDAsIDAsIDAuMTQpLDBweCAxcHggM3B4IDBweCByZ2JhKDAsIDAsIDAsIDAuMTIpfS5tYXQtZWxldmF0aW9uLXoye2JveC1zaGFkb3c6MHB4IDNweCAxcHggLTJweCByZ2JhKDAsIDAsIDAsIDAuMiksMHB4IDJweCAycHggMHB4IHJnYmEoMCwgMCwgMCwgMC4xNCksMHB4IDFweCA1cHggMHB4IHJnYmEoMCwgMCwgMCwgMC4xMil9Lm1hdC1lbGV2YXRpb24tejN7Ym94LXNoYWRvdzowcHggM3B4IDNweCAtMnB4IHJnYmEoMCwgMCwgMCwgMC4yKSwwcHggM3B4IDRweCAwcHggcmdiYSgwLCAwLCAwLCAwLjE0KSwwcHggMXB4IDhweCAwcHggcmdiYSgwLCAwLCAwLCAwLjEyKX0ubWF0LWVsZXZhdGlvbi16NHtib3gtc2hhZG93OjBweCAycHggNHB4IC0xcHggcmdiYSgwLCAwLCAwLCAwLjIpLDBweCA0cHggNXB4IDBweCByZ2JhKDAsIDAsIDAsIDAuMTQpLDBweCAxcHggMTBweCAwcHggcmdiYSgwLCAwLCAwLCAwLjEyKX0ubWF0LWVsZXZhdGlvbi16NXtib3gtc2hhZG93OjBweCAzcHggNXB4IC0xcHggcmdiYSgwLCAwLCAwLCAwLjIpLDBweCA1cHggOHB4IDBweCByZ2JhKDAsIDAsIDAsIDAuMTQpLDBweCAxcHggMTRweCAwcHggcmdiYSgwLCAwLCAwLCAwLjEyKX0ubWF0LWVsZXZhdGlvbi16Nntib3gtc2hhZG93OjBweCAzcHggNXB4IC0xcHggcmdiYSgwLCAwLCAwLCAwLjIpLDBweCA2cHggMTBweCAwcHggcmdiYSgwLCAwLCAwLCAwLjE0KSwwcHggMXB4IDE4cHggMHB4IHJnYmEoMCwgMCwgMCwgMC4xMil9Lm1hdC1lbGV2YXRpb24tejd7Ym94LXNoYWRvdzowcHggNHB4IDVweCAtMnB4IHJnYmEoMCwgMCwgMCwgMC4yKSwwcHggN3B4IDEwcHggMXB4IHJnYmEoMCwgMCwgMCwgMC4xNCksMHB4IDJweCAxNnB4IDFweCByZ2JhKDAsIDAsIDAsIDAuMTIpfS5tYXQtZWxldmF0aW9uLXo4e2JveC1zaGFkb3c6MHB4IDVweCA1cHggLTNweCByZ2JhKDAsIDAsIDAsIDAuMiksMHB4IDhweCAxMHB4IDFweCByZ2JhKDAsIDAsIDAsIDAuMTQpLDBweCAzcHggMTRweCAycHggcmdiYSgwLCAwLCAwLCAwLjEyKX0ubWF0LWVsZXZhdGlvbi16OXtib3gtc2hhZG93OjBweCA1cHggNnB4IC0zcHggcmdiYSgwLCAwLCAwLCAwLjIpLDBweCA5cHggMTJweCAxcHggcmdiYSgwLCAwLCAwLCAwLjE0KSwwcHggM3B4IDE2cHggMnB4IHJnYmEoMCwgMCwgMCwgMC4xMil9Lm1hdC1lbGV2YXRpb24tejEwe2JveC1zaGFkb3c6MHB4IDZweCA2cHggLTNweCByZ2JhKDAsIDAsIDAsIDAuMiksMHB4IDEwcHggMTRweCAxcHggcmdiYSgwLCAwLCAwLCAwLjE0KSwwcHggNHB4IDE4cHggM3B4IHJnYmEoMCwgMCwgMCwgMC4xMil9Lm1hdC1lbGV2YXRpb24tejExe2JveC1zaGFkb3c6MHB4IDZweCA3cHggLTRweCByZ2JhKDAsIDAsIDAsIDAuMiksMHB4IDExcHggMTVweCAxcHggcmdiYSgwLCAwLCAwLCAwLjE0KSwwcHggNHB4IDIwcHggM3B4IHJnYmEoMCwgMCwgMCwgMC4xMil9Lm1hdC1lbGV2YXRpb24tejEye2JveC1zaGFkb3c6MHB4IDdweCA4cHggLTRweCByZ2JhKDAsIDAsIDAsIDAuMiksMHB4IDEycHggMTdweCAycHggcmdiYSgwLCAwLCAwLCAwLjE0KSwwcHggNXB4IDIycHggNHB4IHJnYmEoMCwgMCwgMCwgMC4xMil9Lm1hdC1lbGV2YXRpb24tejEze2JveC1zaGFkb3c6MHB4IDdweCA4cHggLTRweCByZ2JhKDAsIDAsIDAsIDAuMiksMHB4IDEzcHggMTlweCAycHggcmdiYSgwLCAwLCAwLCAwLjE0KSwwcHggNXB4IDI0cHggNHB4IHJnYmEoMCwgMCwgMCwgMC4xMil9Lm1hdC1lbGV2YXRpb24tejE0e2JveC1zaGFkb3c6MHB4IDdweCA5cHggLTRweCByZ2JhKDAsIDAsIDAsIDAuMiksMHB4IDE0cHggMjFweCAycHggcmdiYSgwLCAwLCAwLCAwLjE0KSwwcHggNXB4IDI2cHggNHB4IHJnYmEoMCwgMCwgMCwgMC4xMil9Lm1hdC1lbGV2YXRpb24tejE1e2JveC1zaGFkb3c6MHB4IDhweCA5cHggLTVweCByZ2JhKDAsIDAsIDAsIDAuMiksMHB4IDE1cHggMjJweCAycHggcmdiYSgwLCAwLCAwLCAwLjE0KSwwcHggNnB4IDI4cHggNXB4IHJnYmEoMCwgMCwgMCwgMC4xMil9Lm1hdC1lbGV2YXRpb24tejE2e2JveC1zaGFkb3c6MHB4IDhweCAxMHB4IC01cHggcmdiYSgwLCAwLCAwLCAwLjIpLDBweCAxNnB4IDI0cHggMnB4IHJnYmEoMCwgMCwgMCwgMC4xNCksMHB4IDZweCAzMHB4IDVweCByZ2JhKDAsIDAsIDAsIDAuMTIpfS5tYXQtZWxldmF0aW9uLXoxN3tib3gtc2hhZG93OjBweCA4cHggMTFweCAtNXB4IHJnYmEoMCwgMCwgMCwgMC4yKSwwcHggMTdweCAyNnB4IDJweCByZ2JhKDAsIDAsIDAsIDAuMTQpLDBweCA2cHggMzJweCA1cHggcmdiYSgwLCAwLCAwLCAwLjEyKX0ubWF0LWVsZXZhdGlvbi16MTh7Ym94LXNoYWRvdzowcHggOXB4IDExcHggLTVweCByZ2JhKDAsIDAsIDAsIDAuMiksMHB4IDE4cHggMjhweCAycHggcmdiYSgwLCAwLCAwLCAwLjE0KSwwcHggN3B4IDM0cHggNnB4IHJnYmEoMCwgMCwgMCwgMC4xMil9Lm1hdC1lbGV2YXRpb24tejE5e2JveC1zaGFkb3c6MHB4IDlweCAxMnB4IC02cHggcmdiYSgwLCAwLCAwLCAwLjIpLDBweCAxOXB4IDI5cHggMnB4IHJnYmEoMCwgMCwgMCwgMC4xNCksMHB4IDdweCAzNnB4IDZweCByZ2JhKDAsIDAsIDAsIDAuMTIpfS5tYXQtZWxldmF0aW9uLXoyMHtib3gtc2hhZG93OjBweCAxMHB4IDEzcHggLTZweCByZ2JhKDAsIDAsIDAsIDAuMiksMHB4IDIwcHggMzFweCAzcHggcmdiYSgwLCAwLCAwLCAwLjE0KSwwcHggOHB4IDM4cHggN3B4IHJnYmEoMCwgMCwgMCwgMC4xMil9Lm1hdC1lbGV2YXRpb24tejIxe2JveC1zaGFkb3c6MHB4IDEwcHggMTNweCAtNnB4IHJnYmEoMCwgMCwgMCwgMC4yKSwwcHggMjFweCAzM3B4IDNweCByZ2JhKDAsIDAsIDAsIDAuMTQpLDBweCA4cHggNDBweCA3cHggcmdiYSgwLCAwLCAwLCAwLjEyKX0ubWF0LWVsZXZhdGlvbi16MjJ7Ym94LXNoYWRvdzowcHggMTBweCAxNHB4IC02cHggcmdiYSgwLCAwLCAwLCAwLjIpLDBweCAyMnB4IDM1cHggM3B4IHJnYmEoMCwgMCwgMCwgMC4xNCksMHB4IDhweCA0MnB4IDdweCByZ2JhKDAsIDAsIDAsIDAuMTIpfS5tYXQtZWxldmF0aW9uLXoyM3tib3gtc2hhZG93OjBweCAxMXB4IDE0cHggLTdweCByZ2JhKDAsIDAsIDAsIDAuMiksMHB4IDIzcHggMzZweCAzcHggcmdiYSgwLCAwLCAwLCAwLjE0KSwwcHggOXB4IDQ0cHggOHB4IHJnYmEoMCwgMCwgMCwgMC4xMil9Lm1hdC1lbGV2YXRpb24tejI0e2JveC1zaGFkb3c6MHB4IDExcHggMTVweCAtN3B4IHJnYmEoMCwgMCwgMCwgMC4yKSwwcHggMjRweCAzOHB4IDNweCByZ2JhKDAsIDAsIDAsIDAuMTQpLDBweCA5cHggNDZweCA4cHggcmdiYSgwLCAwLCAwLCAwLjEyKX0ubWF0LXRoZW1lLWxvYWRlZC1tYXJrZXJ7ZGlzcGxheTpub25lfS5tYXQtYXV0b2NvbXBsZXRlLXBhbmVse2JhY2tncm91bmQ6I2ZmZjtjb2xvcjojMjEyMTIxfS5tYXQtYXV0b2NvbXBsZXRlLXBhbmVsOm5vdChbY2xhc3MqPW1hdC1lbGV2YXRpb24tel0pe2JveC1zaGFkb3c6MHB4IDJweCA0cHggLTFweCByZ2JhKDAsIDAsIDAsIDAuMiksMHB4IDRweCA1cHggMHB4IHJnYmEoMCwgMCwgMCwgMC4xNCksMHB4IDFweCAxMHB4IDBweCByZ2JhKDAsIDAsIDAsIDAuMTIpfS5tYXQtYXV0b2NvbXBsZXRlLXBhbmVsIC5tYXQtb3B0aW9uLm1hdC1zZWxlY3RlZDpub3QoLm1hdC1hY3RpdmUpOm5vdCg6aG92ZXIpe2JhY2tncm91bmQ6I2ZmZn0ubWF0LWF1dG9jb21wbGV0ZS1wYW5lbCAubWF0LW9wdGlvbi5tYXQtc2VsZWN0ZWQ6bm90KC5tYXQtYWN0aXZlKTpub3QoOmhvdmVyKTpub3QoLm1hdC1vcHRpb24tZGlzYWJsZWQpe2NvbG9yOiMyMTIxMjF9Lm1hdC1iYWRnZS1jb250ZW50e2NvbG9yOiNmZmY7YmFja2dyb3VuZDojZjU3YzAwfS5jZGstaGlnaC1jb250cmFzdC1hY3RpdmUgLm1hdC1iYWRnZS1jb250ZW50e291dGxpbmU6c29saWQgMXB4O2JvcmRlci1yYWRpdXM6MH0ubWF0LWJhZGdlLWFjY2VudCAubWF0LWJhZGdlLWNvbnRlbnR7YmFja2dyb3VuZDojZmY5ODAwO2NvbG9yOiNmZmZ9Lm1hdC1iYWRnZS13YXJuIC5tYXQtYmFkZ2UtY29udGVudHtjb2xvcjojZmZmO2JhY2tncm91bmQ6I2Y0NDMzNn0ubWF0LWJhZGdle3Bvc2l0aW9uOnJlbGF0aXZlfS5tYXQtYmFkZ2UtaGlkZGVuIC5tYXQtYmFkZ2UtY29udGVudHtkaXNwbGF5Om5vbmV9Lm1hdC1iYWRnZS1kaXNhYmxlZCAubWF0LWJhZGdlLWNvbnRlbnR7YmFja2dyb3VuZDojYjliOWI5O2NvbG9yOiM3NTc1NzV9Lm1hdC1iYWRnZS1jb250ZW50e3Bvc2l0aW9uOmFic29sdXRlO3RleHQtYWxpZ246Y2VudGVyO2Rpc3BsYXk6aW5saW5lLWJsb2NrO2JvcmRlci1yYWRpdXM6NTAlO3RyYW5zaXRpb246dHJhbnNmb3JtIDIwMG1zIGVhc2UtaW4tb3V0O3RyYW5zZm9ybTpzY2FsZSgwLjYpO292ZXJmbG93OmhpZGRlbjt3aGl0ZS1zcGFjZTpub3dyYXA7dGV4dC1vdmVyZmxvdzplbGxpcHNpcztwb2ludGVyLWV2ZW50czpub25lfS5uZy1hbmltYXRlLWRpc2FibGVkIC5tYXQtYmFkZ2UtY29udGVudCwubWF0LWJhZGdlLWNvbnRlbnQuX21hdC1hbmltYXRpb24tbm9vcGFibGV7dHJhbnNpdGlvbjpub25lfS5tYXQtYmFkZ2UtY29udGVudC5tYXQtYmFkZ2UtYWN0aXZle3RyYW5zZm9ybTpub25lfS5tYXQtYmFkZ2Utc21hbGwgLm1hdC1iYWRnZS1jb250ZW50e3dpZHRoOjE2cHg7aGVpZ2h0OjE2cHg7bGluZS1oZWlnaHQ6MTZweH0ubWF0LWJhZGdlLXNtYWxsLm1hdC1iYWRnZS1hYm92ZSAubWF0LWJhZGdlLWNvbnRlbnR7dG9wOi04cHh9Lm1hdC1iYWRnZS1zbWFsbC5tYXQtYmFkZ2UtYmVsb3cgLm1hdC1iYWRnZS1jb250ZW50e2JvdHRvbTotOHB4fS5tYXQtYmFkZ2Utc21hbGwubWF0LWJhZGdlLWJlZm9yZSAubWF0LWJhZGdlLWNvbnRlbnR7bGVmdDotMTZweH1bZGlyPXJ0bF0gLm1hdC1iYWRnZS1zbWFsbC5tYXQtYmFkZ2UtYmVmb3JlIC5tYXQtYmFkZ2UtY29udGVudHtsZWZ0OmF1dG87cmlnaHQ6LTE2cHh9Lm1hdC1iYWRnZS1zbWFsbC5tYXQtYmFkZ2UtYWZ0ZXIgLm1hdC1iYWRnZS1jb250ZW50e3JpZ2h0Oi0xNnB4fVtkaXI9cnRsXSAubWF0LWJhZGdlLXNtYWxsLm1hdC1iYWRnZS1hZnRlciAubWF0LWJhZGdlLWNvbnRlbnR7cmlnaHQ6YXV0bztsZWZ0Oi0xNnB4fS5tYXQtYmFkZ2Utc21hbGwubWF0LWJhZGdlLW92ZXJsYXAubWF0LWJhZGdlLWJlZm9yZSAubWF0LWJhZGdlLWNvbnRlbnR7bGVmdDotOHB4fVtkaXI9cnRsXSAubWF0LWJhZGdlLXNtYWxsLm1hdC1iYWRnZS1vdmVybGFwLm1hdC1iYWRnZS1iZWZvcmUgLm1hdC1iYWRnZS1jb250ZW50e2xlZnQ6YXV0bztyaWdodDotOHB4fS5tYXQtYmFkZ2Utc21hbGwubWF0LWJhZGdlLW92ZXJsYXAubWF0LWJhZGdlLWFmdGVyIC5tYXQtYmFkZ2UtY29udGVudHtyaWdodDotOHB4fVtkaXI9cnRsXSAubWF0LWJhZGdlLXNtYWxsLm1hdC1iYWRnZS1vdmVybGFwLm1hdC1iYWRnZS1hZnRlciAubWF0LWJhZGdlLWNvbnRlbnR7cmlnaHQ6YXV0bztsZWZ0Oi04cHh9Lm1hdC1iYWRnZS1tZWRpdW0gLm1hdC1iYWRnZS1jb250ZW50e3dpZHRoOjIycHg7aGVpZ2h0OjIycHg7bGluZS1oZWlnaHQ6MjJweH0ubWF0LWJhZGdlLW1lZGl1bS5tYXQtYmFkZ2UtYWJvdmUgLm1hdC1iYWRnZS1jb250ZW50e3RvcDotMTFweH0ubWF0LWJhZGdlLW1lZGl1bS5tYXQtYmFkZ2UtYmVsb3cgLm1hdC1iYWRnZS1jb250ZW50e2JvdHRvbTotMTFweH0ubWF0LWJhZGdlLW1lZGl1bS5tYXQtYmFkZ2UtYmVmb3JlIC5tYXQtYmFkZ2UtY29udGVudHtsZWZ0Oi0yMnB4fVtkaXI9cnRsXSAubWF0LWJhZGdlLW1lZGl1bS5tYXQtYmFkZ2UtYmVmb3JlIC5tYXQtYmFkZ2UtY29udGVudHtsZWZ0OmF1dG87cmlnaHQ6LTIycHh9Lm1hdC1iYWRnZS1tZWRpdW0ubWF0LWJhZGdlLWFmdGVyIC5tYXQtYmFkZ2UtY29udGVudHtyaWdodDotMjJweH1bZGlyPXJ0bF0gLm1hdC1iYWRnZS1tZWRpdW0ubWF0LWJhZGdlLWFmdGVyIC5tYXQtYmFkZ2UtY29udGVudHtyaWdodDphdXRvO2xlZnQ6LTIycHh9Lm1hdC1iYWRnZS1tZWRpdW0ubWF0LWJhZGdlLW92ZXJsYXAubWF0LWJhZGdlLWJlZm9yZSAubWF0LWJhZGdlLWNvbnRlbnR7bGVmdDotMTFweH1bZGlyPXJ0bF0gLm1hdC1iYWRnZS1tZWRpdW0ubWF0LWJhZGdlLW92ZXJsYXAubWF0LWJhZGdlLWJlZm9yZSAubWF0LWJhZGdlLWNvbnRlbnR7bGVmdDphdXRvO3JpZ2h0Oi0xMXB4fS5tYXQtYmFkZ2UtbWVkaXVtLm1hdC1iYWRnZS1vdmVybGFwLm1hdC1iYWRnZS1hZnRlciAubWF0LWJhZGdlLWNvbnRlbnR7cmlnaHQ6LTExcHh9W2Rpcj1ydGxdIC5tYXQtYmFkZ2UtbWVkaXVtLm1hdC1iYWRnZS1vdmVybGFwLm1hdC1iYWRnZS1hZnRlciAubWF0LWJhZGdlLWNvbnRlbnR7cmlnaHQ6YXV0bztsZWZ0Oi0xMXB4fS5tYXQtYmFkZ2UtbGFyZ2UgLm1hdC1iYWRnZS1jb250ZW50e3dpZHRoOjI4cHg7aGVpZ2h0OjI4cHg7bGluZS1oZWlnaHQ6MjhweH0ubWF0LWJhZGdlLWxhcmdlLm1hdC1iYWRnZS1hYm92ZSAubWF0LWJhZGdlLWNvbnRlbnR7dG9wOi0xNHB4fS5tYXQtYmFkZ2UtbGFyZ2UubWF0LWJhZGdlLWJlbG93IC5tYXQtYmFkZ2UtY29udGVudHtib3R0b206LTE0cHh9Lm1hdC1iYWRnZS1sYXJnZS5tYXQtYmFkZ2UtYmVmb3JlIC5tYXQtYmFkZ2UtY29udGVudHtsZWZ0Oi0yOHB4fVtkaXI9cnRsXSAubWF0LWJhZGdlLWxhcmdlLm1hdC1iYWRnZS1iZWZvcmUgLm1hdC1iYWRnZS1jb250ZW50e2xlZnQ6YXV0bztyaWdodDotMjhweH0ubWF0LWJhZGdlLWxhcmdlLm1hdC1iYWRnZS1hZnRlciAubWF0LWJhZGdlLWNvbnRlbnR7cmlnaHQ6LTI4cHh9W2Rpcj1ydGxdIC5tYXQtYmFkZ2UtbGFyZ2UubWF0LWJhZGdlLWFmdGVyIC5tYXQtYmFkZ2UtY29udGVudHtyaWdodDphdXRvO2xlZnQ6LTI4cHh9Lm1hdC1iYWRnZS1sYXJnZS5tYXQtYmFkZ2Utb3ZlcmxhcC5tYXQtYmFkZ2UtYmVmb3JlIC5tYXQtYmFkZ2UtY29udGVudHtsZWZ0Oi0xNHB4fVtkaXI9cnRsXSAubWF0LWJhZGdlLWxhcmdlLm1hdC1iYWRnZS1vdmVybGFwLm1hdC1iYWRnZS1iZWZvcmUgLm1hdC1iYWRnZS1jb250ZW50e2xlZnQ6YXV0bztyaWdodDotMTRweH0ubWF0LWJhZGdlLWxhcmdlLm1hdC1iYWRnZS1vdmVybGFwLm1hdC1iYWRnZS1hZnRlciAubWF0LWJhZGdlLWNvbnRlbnR7cmlnaHQ6LTE0cHh9W2Rpcj1ydGxdIC5tYXQtYmFkZ2UtbGFyZ2UubWF0LWJhZGdlLW92ZXJsYXAubWF0LWJhZGdlLWFmdGVyIC5tYXQtYmFkZ2UtY29udGVudHtyaWdodDphdXRvO2xlZnQ6LTE0cHh9Lm1hdC1ib3R0b20tc2hlZXQtY29udGFpbmVye2JveC1zaGFkb3c6MHB4IDhweCAxMHB4IC01cHggcmdiYSgwLCAwLCAwLCAwLjIpLDBweCAxNnB4IDI0cHggMnB4IHJnYmEoMCwgMCwgMCwgMC4xNCksMHB4IDZweCAzMHB4IDVweCByZ2JhKDAsIDAsIDAsIDAuMTIpO2JhY2tncm91bmQ6I2ZmZjtjb2xvcjojMjEyMTIxfS5tYXQtYnV0dG9uLC5tYXQtaWNvbi1idXR0b24sLm1hdC1zdHJva2VkLWJ1dHRvbntjb2xvcjppbmhlcml0O2JhY2tncm91bmQ6dHJhbnNwYXJlbnR9Lm1hdC1idXR0b24ubWF0LXByaW1hcnksLm1hdC1pY29uLWJ1dHRvbi5tYXQtcHJpbWFyeSwubWF0LXN0cm9rZWQtYnV0dG9uLm1hdC1wcmltYXJ5e2NvbG9yOiNmNTdjMDB9Lm1hdC1idXR0b24ubWF0LWFjY2VudCwubWF0LWljb24tYnV0dG9uLm1hdC1hY2NlbnQsLm1hdC1zdHJva2VkLWJ1dHRvbi5tYXQtYWNjZW50e2NvbG9yOiNmZjk4MDB9Lm1hdC1idXR0b24ubWF0LXdhcm4sLm1hdC1pY29uLWJ1dHRvbi5tYXQtd2FybiwubWF0LXN0cm9rZWQtYnV0dG9uLm1hdC13YXJue2NvbG9yOiNmNDQzMzZ9Lm1hdC1idXR0b24ubWF0LXByaW1hcnkubWF0LWJ1dHRvbi1kaXNhYmxlZCwubWF0LWJ1dHRvbi5tYXQtYWNjZW50Lm1hdC1idXR0b24tZGlzYWJsZWQsLm1hdC1idXR0b24ubWF0LXdhcm4ubWF0LWJ1dHRvbi1kaXNhYmxlZCwubWF0LWJ1dHRvbi5tYXQtYnV0dG9uLWRpc2FibGVkLm1hdC1idXR0b24tZGlzYWJsZWQsLm1hdC1pY29uLWJ1dHRvbi5tYXQtcHJpbWFyeS5tYXQtYnV0dG9uLWRpc2FibGVkLC5tYXQtaWNvbi1idXR0b24ubWF0LWFjY2VudC5tYXQtYnV0dG9uLWRpc2FibGVkLC5tYXQtaWNvbi1idXR0b24ubWF0LXdhcm4ubWF0LWJ1dHRvbi1kaXNhYmxlZCwubWF0LWljb24tYnV0dG9uLm1hdC1idXR0b24tZGlzYWJsZWQubWF0LWJ1dHRvbi1kaXNhYmxlZCwubWF0LXN0cm9rZWQtYnV0dG9uLm1hdC1wcmltYXJ5Lm1hdC1idXR0b24tZGlzYWJsZWQsLm1hdC1zdHJva2VkLWJ1dHRvbi5tYXQtYWNjZW50Lm1hdC1idXR0b24tZGlzYWJsZWQsLm1hdC1zdHJva2VkLWJ1dHRvbi5tYXQtd2Fybi5tYXQtYnV0dG9uLWRpc2FibGVkLC5tYXQtc3Ryb2tlZC1idXR0b24ubWF0LWJ1dHRvbi1kaXNhYmxlZC5tYXQtYnV0dG9uLWRpc2FibGVke2NvbG9yOnJnYmEoMCwwLDAsLjI2KX0ubWF0LWJ1dHRvbi5tYXQtcHJpbWFyeSAubWF0LWJ1dHRvbi1mb2N1cy1vdmVybGF5LC5tYXQtaWNvbi1idXR0b24ubWF0LXByaW1hcnkgLm1hdC1idXR0b24tZm9jdXMtb3ZlcmxheSwubWF0LXN0cm9rZWQtYnV0dG9uLm1hdC1wcmltYXJ5IC5tYXQtYnV0dG9uLWZvY3VzLW92ZXJsYXl7YmFja2dyb3VuZC1jb2xvcjojZjU3YzAwfS5tYXQtYnV0dG9uLm1hdC1hY2NlbnQgLm1hdC1idXR0b24tZm9jdXMtb3ZlcmxheSwubWF0LWljb24tYnV0dG9uLm1hdC1hY2NlbnQgLm1hdC1idXR0b24tZm9jdXMtb3ZlcmxheSwubWF0LXN0cm9rZWQtYnV0dG9uLm1hdC1hY2NlbnQgLm1hdC1idXR0b24tZm9jdXMtb3ZlcmxheXtiYWNrZ3JvdW5kLWNvbG9yOiNmZjk4MDB9Lm1hdC1idXR0b24ubWF0LXdhcm4gLm1hdC1idXR0b24tZm9jdXMtb3ZlcmxheSwubWF0LWljb24tYnV0dG9uLm1hdC13YXJuIC5tYXQtYnV0dG9uLWZvY3VzLW92ZXJsYXksLm1hdC1zdHJva2VkLWJ1dHRvbi5tYXQtd2FybiAubWF0LWJ1dHRvbi1mb2N1cy1vdmVybGF5e2JhY2tncm91bmQtY29sb3I6I2Y0NDMzNn0ubWF0LWJ1dHRvbi5tYXQtYnV0dG9uLWRpc2FibGVkIC5tYXQtYnV0dG9uLWZvY3VzLW92ZXJsYXksLm1hdC1pY29uLWJ1dHRvbi5tYXQtYnV0dG9uLWRpc2FibGVkIC5tYXQtYnV0dG9uLWZvY3VzLW92ZXJsYXksLm1hdC1zdHJva2VkLWJ1dHRvbi5tYXQtYnV0dG9uLWRpc2FibGVkIC5tYXQtYnV0dG9uLWZvY3VzLW92ZXJsYXl7YmFja2dyb3VuZC1jb2xvcjp0cmFuc3BhcmVudH0ubWF0LWJ1dHRvbiAubWF0LXJpcHBsZS1lbGVtZW50LC5tYXQtaWNvbi1idXR0b24gLm1hdC1yaXBwbGUtZWxlbWVudCwubWF0LXN0cm9rZWQtYnV0dG9uIC5tYXQtcmlwcGxlLWVsZW1lbnR7b3BhY2l0eTouMTtiYWNrZ3JvdW5kLWNvbG9yOmN1cnJlbnRDb2xvcn0ubWF0LWJ1dHRvbi1mb2N1cy1vdmVybGF5e2JhY2tncm91bmQ6IzAwMH0ubWF0LXN0cm9rZWQtYnV0dG9uOm5vdCgubWF0LWJ1dHRvbi1kaXNhYmxlZCl7Ym9yZGVyLWNvbG9yOnJnYmEoMCwwLDAsLjEyKX0ubWF0LWZsYXQtYnV0dG9uLC5tYXQtcmFpc2VkLWJ1dHRvbiwubWF0LWZhYiwubWF0LW1pbmktZmFie2NvbG9yOiMyMTIxMjE7YmFja2dyb3VuZC1jb2xvcjojZmZmfS5tYXQtZmxhdC1idXR0b24ubWF0LXByaW1hcnksLm1hdC1yYWlzZWQtYnV0dG9uLm1hdC1wcmltYXJ5LC5tYXQtZmFiLm1hdC1wcmltYXJ5LC5tYXQtbWluaS1mYWIubWF0LXByaW1hcnl7Y29sb3I6I2ZmZn0ubWF0LWZsYXQtYnV0dG9uLm1hdC1hY2NlbnQsLm1hdC1yYWlzZWQtYnV0dG9uLm1hdC1hY2NlbnQsLm1hdC1mYWIubWF0LWFjY2VudCwubWF0LW1pbmktZmFiLm1hdC1hY2NlbnR7Y29sb3I6I2ZmZn0ubWF0LWZsYXQtYnV0dG9uLm1hdC13YXJuLC5tYXQtcmFpc2VkLWJ1dHRvbi5tYXQtd2FybiwubWF0LWZhYi5tYXQtd2FybiwubWF0LW1pbmktZmFiLm1hdC13YXJue2NvbG9yOiNmZmZ9Lm1hdC1mbGF0LWJ1dHRvbi5tYXQtcHJpbWFyeS5tYXQtYnV0dG9uLWRpc2FibGVkLC5tYXQtZmxhdC1idXR0b24ubWF0LWFjY2VudC5tYXQtYnV0dG9uLWRpc2FibGVkLC5tYXQtZmxhdC1idXR0b24ubWF0LXdhcm4ubWF0LWJ1dHRvbi1kaXNhYmxlZCwubWF0LWZsYXQtYnV0dG9uLm1hdC1idXR0b24tZGlzYWJsZWQubWF0LWJ1dHRvbi1kaXNhYmxlZCwubWF0LXJhaXNlZC1idXR0b24ubWF0LXByaW1hcnkubWF0LWJ1dHRvbi1kaXNhYmxlZCwubWF0LXJhaXNlZC1idXR0b24ubWF0LWFjY2VudC5tYXQtYnV0dG9uLWRpc2FibGVkLC5tYXQtcmFpc2VkLWJ1dHRvbi5tYXQtd2Fybi5tYXQtYnV0dG9uLWRpc2FibGVkLC5tYXQtcmFpc2VkLWJ1dHRvbi5tYXQtYnV0dG9uLWRpc2FibGVkLm1hdC1idXR0b24tZGlzYWJsZWQsLm1hdC1mYWIubWF0LXByaW1hcnkubWF0LWJ1dHRvbi1kaXNhYmxlZCwubWF0LWZhYi5tYXQtYWNjZW50Lm1hdC1idXR0b24tZGlzYWJsZWQsLm1hdC1mYWIubWF0LXdhcm4ubWF0LWJ1dHRvbi1kaXNhYmxlZCwubWF0LWZhYi5tYXQtYnV0dG9uLWRpc2FibGVkLm1hdC1idXR0b24tZGlzYWJsZWQsLm1hdC1taW5pLWZhYi5tYXQtcHJpbWFyeS5tYXQtYnV0dG9uLWRpc2FibGVkLC5tYXQtbWluaS1mYWIubWF0LWFjY2VudC5tYXQtYnV0dG9uLWRpc2FibGVkLC5tYXQtbWluaS1mYWIubWF0LXdhcm4ubWF0LWJ1dHRvbi1kaXNhYmxlZCwubWF0LW1pbmktZmFiLm1hdC1idXR0b24tZGlzYWJsZWQubWF0LWJ1dHRvbi1kaXNhYmxlZHtjb2xvcjpyZ2JhKDAsMCwwLC4yNil9Lm1hdC1mbGF0LWJ1dHRvbi5tYXQtcHJpbWFyeSwubWF0LXJhaXNlZC1idXR0b24ubWF0LXByaW1hcnksLm1hdC1mYWIubWF0LXByaW1hcnksLm1hdC1taW5pLWZhYi5tYXQtcHJpbWFyeXtiYWNrZ3JvdW5kLWNvbG9yOiNmNTdjMDB9Lm1hdC1mbGF0LWJ1dHRvbi5tYXQtYWNjZW50LC5tYXQtcmFpc2VkLWJ1dHRvbi5tYXQtYWNjZW50LC5tYXQtZmFiLm1hdC1hY2NlbnQsLm1hdC1taW5pLWZhYi5tYXQtYWNjZW50e2JhY2tncm91bmQtY29sb3I6I2ZmOTgwMH0ubWF0LWZsYXQtYnV0dG9uLm1hdC13YXJuLC5tYXQtcmFpc2VkLWJ1dHRvbi5tYXQtd2FybiwubWF0LWZhYi5tYXQtd2FybiwubWF0LW1pbmktZmFiLm1hdC13YXJue2JhY2tncm91bmQtY29sb3I6I2Y0NDMzNn0ubWF0LWZsYXQtYnV0dG9uLm1hdC1wcmltYXJ5Lm1hdC1idXR0b24tZGlzYWJsZWQsLm1hdC1mbGF0LWJ1dHRvbi5tYXQtYWNjZW50Lm1hdC1idXR0b24tZGlzYWJsZWQsLm1hdC1mbGF0LWJ1dHRvbi5tYXQtd2Fybi5tYXQtYnV0dG9uLWRpc2FibGVkLC5tYXQtZmxhdC1idXR0b24ubWF0LWJ1dHRvbi1kaXNhYmxlZC5tYXQtYnV0dG9uLWRpc2FibGVkLC5tYXQtcmFpc2VkLWJ1dHRvbi5tYXQtcHJpbWFyeS5tYXQtYnV0dG9uLWRpc2FibGVkLC5tYXQtcmFpc2VkLWJ1dHRvbi5tYXQtYWNjZW50Lm1hdC1idXR0b24tZGlzYWJsZWQsLm1hdC1yYWlzZWQtYnV0dG9uLm1hdC13YXJuLm1hdC1idXR0b24tZGlzYWJsZWQsLm1hdC1yYWlzZWQtYnV0dG9uLm1hdC1idXR0b24tZGlzYWJsZWQubWF0LWJ1dHRvbi1kaXNhYmxlZCwubWF0LWZhYi5tYXQtcHJpbWFyeS5tYXQtYnV0dG9uLWRpc2FibGVkLC5tYXQtZmFiLm1hdC1hY2NlbnQubWF0LWJ1dHRvbi1kaXNhYmxlZCwubWF0LWZhYi5tYXQtd2Fybi5tYXQtYnV0dG9uLWRpc2FibGVkLC5tYXQtZmFiLm1hdC1idXR0b24tZGlzYWJsZWQubWF0LWJ1dHRvbi1kaXNhYmxlZCwubWF0LW1pbmktZmFiLm1hdC1wcmltYXJ5Lm1hdC1idXR0b24tZGlzYWJsZWQsLm1hdC1taW5pLWZhYi5tYXQtYWNjZW50Lm1hdC1idXR0b24tZGlzYWJsZWQsLm1hdC1taW5pLWZhYi5tYXQtd2Fybi5tYXQtYnV0dG9uLWRpc2FibGVkLC5tYXQtbWluaS1mYWIubWF0LWJ1dHRvbi1kaXNhYmxlZC5tYXQtYnV0dG9uLWRpc2FibGVke2JhY2tncm91bmQtY29sb3I6cmdiYSgwLDAsMCwuMTIpfS5tYXQtZmxhdC1idXR0b24ubWF0LXByaW1hcnkgLm1hdC1yaXBwbGUtZWxlbWVudCwubWF0LXJhaXNlZC1idXR0b24ubWF0LXByaW1hcnkgLm1hdC1yaXBwbGUtZWxlbWVudCwubWF0LWZhYi5tYXQtcHJpbWFyeSAubWF0LXJpcHBsZS1lbGVtZW50LC5tYXQtbWluaS1mYWIubWF0LXByaW1hcnkgLm1hdC1yaXBwbGUtZWxlbWVudHtiYWNrZ3JvdW5kLWNvbG9yOnJnYmEoMjU1LDI1NSwyNTUsLjEpfS5tYXQtZmxhdC1idXR0b24ubWF0LWFjY2VudCAubWF0LXJpcHBsZS1lbGVtZW50LC5tYXQtcmFpc2VkLWJ1dHRvbi5tYXQtYWNjZW50IC5tYXQtcmlwcGxlLWVsZW1lbnQsLm1hdC1mYWIubWF0LWFjY2VudCAubWF0LXJpcHBsZS1lbGVtZW50LC5tYXQtbWluaS1mYWIubWF0LWFjY2VudCAubWF0LXJpcHBsZS1lbGVtZW50e2JhY2tncm91bmQtY29sb3I6cmdiYSgyNTUsMjU1LDI1NSwuMSl9Lm1hdC1mbGF0LWJ1dHRvbi5tYXQtd2FybiAubWF0LXJpcHBsZS1lbGVtZW50LC5tYXQtcmFpc2VkLWJ1dHRvbi5tYXQtd2FybiAubWF0LXJpcHBsZS1lbGVtZW50LC5tYXQtZmFiLm1hdC13YXJuIC5tYXQtcmlwcGxlLWVsZW1lbnQsLm1hdC1taW5pLWZhYi5tYXQtd2FybiAubWF0LXJpcHBsZS1lbGVtZW50e2JhY2tncm91bmQtY29sb3I6cmdiYSgyNTUsMjU1LDI1NSwuMSl9Lm1hdC1zdHJva2VkLWJ1dHRvbjpub3QoW2NsYXNzKj1tYXQtZWxldmF0aW9uLXpdKSwubWF0LWZsYXQtYnV0dG9uOm5vdChbY2xhc3MqPW1hdC1lbGV2YXRpb24tel0pe2JveC1zaGFkb3c6MHB4IDBweCAwcHggMHB4IHJnYmEoMCwgMCwgMCwgMC4yKSwwcHggMHB4IDBweCAwcHggcmdiYSgwLCAwLCAwLCAwLjE0KSwwcHggMHB4IDBweCAwcHggcmdiYSgwLCAwLCAwLCAwLjEyKX0ubWF0LXJhaXNlZC1idXR0b246bm90KFtjbGFzcyo9bWF0LWVsZXZhdGlvbi16XSl7Ym94LXNoYWRvdzowcHggM3B4IDFweCAtMnB4IHJnYmEoMCwgMCwgMCwgMC4yKSwwcHggMnB4IDJweCAwcHggcmdiYSgwLCAwLCAwLCAwLjE0KSwwcHggMXB4IDVweCAwcHggcmdiYSgwLCAwLCAwLCAwLjEyKX0ubWF0LXJhaXNlZC1idXR0b246bm90KC5tYXQtYnV0dG9uLWRpc2FibGVkKTphY3RpdmU6bm90KFtjbGFzcyo9bWF0LWVsZXZhdGlvbi16XSl7Ym94LXNoYWRvdzowcHggNXB4IDVweCAtM3B4IHJnYmEoMCwgMCwgMCwgMC4yKSwwcHggOHB4IDEwcHggMXB4IHJnYmEoMCwgMCwgMCwgMC4xNCksMHB4IDNweCAxNHB4IDJweCByZ2JhKDAsIDAsIDAsIDAuMTIpfS5tYXQtcmFpc2VkLWJ1dHRvbi5tYXQtYnV0dG9uLWRpc2FibGVkOm5vdChbY2xhc3MqPW1hdC1lbGV2YXRpb24tel0pe2JveC1zaGFkb3c6MHB4IDBweCAwcHggMHB4IHJnYmEoMCwgMCwgMCwgMC4yKSwwcHggMHB4IDBweCAwcHggcmdiYSgwLCAwLCAwLCAwLjE0KSwwcHggMHB4IDBweCAwcHggcmdiYSgwLCAwLCAwLCAwLjEyKX0ubWF0LWZhYjpub3QoW2NsYXNzKj1tYXQtZWxldmF0aW9uLXpdKSwubWF0LW1pbmktZmFiOm5vdChbY2xhc3MqPW1hdC1lbGV2YXRpb24tel0pe2JveC1zaGFkb3c6MHB4IDNweCA1cHggLTFweCByZ2JhKDAsIDAsIDAsIDAuMiksMHB4IDZweCAxMHB4IDBweCByZ2JhKDAsIDAsIDAsIDAuMTQpLDBweCAxcHggMThweCAwcHggcmdiYSgwLCAwLCAwLCAwLjEyKX0ubWF0LWZhYjpub3QoLm1hdC1idXR0b24tZGlzYWJsZWQpOmFjdGl2ZTpub3QoW2NsYXNzKj1tYXQtZWxldmF0aW9uLXpdKSwubWF0LW1pbmktZmFiOm5vdCgubWF0LWJ1dHRvbi1kaXNhYmxlZCk6YWN0aXZlOm5vdChbY2xhc3MqPW1hdC1lbGV2YXRpb24tel0pe2JveC1zaGFkb3c6MHB4IDdweCA4cHggLTRweCByZ2JhKDAsIDAsIDAsIDAuMiksMHB4IDEycHggMTdweCAycHggcmdiYSgwLCAwLCAwLCAwLjE0KSwwcHggNXB4IDIycHggNHB4IHJnYmEoMCwgMCwgMCwgMC4xMil9Lm1hdC1mYWIubWF0LWJ1dHRvbi1kaXNhYmxlZDpub3QoW2NsYXNzKj1tYXQtZWxldmF0aW9uLXpdKSwubWF0LW1pbmktZmFiLm1hdC1idXR0b24tZGlzYWJsZWQ6bm90KFtjbGFzcyo9bWF0LWVsZXZhdGlvbi16XSl7Ym94LXNoYWRvdzowcHggMHB4IDBweCAwcHggcmdiYSgwLCAwLCAwLCAwLjIpLDBweCAwcHggMHB4IDBweCByZ2JhKDAsIDAsIDAsIDAuMTQpLDBweCAwcHggMHB4IDBweCByZ2JhKDAsIDAsIDAsIDAuMTIpfS5tYXQtYnV0dG9uLXRvZ2dsZS1zdGFuZGFsb25lLC5tYXQtYnV0dG9uLXRvZ2dsZS1ncm91cHtib3gtc2hhZG93OjBweCAzcHggMXB4IC0ycHggcmdiYSgwLCAwLCAwLCAwLjIpLDBweCAycHggMnB4IDBweCByZ2JhKDAsIDAsIDAsIDAuMTQpLDBweCAxcHggNXB4IDBweCByZ2JhKDAsIDAsIDAsIDAuMTIpfS5tYXQtYnV0dG9uLXRvZ2dsZS1zdGFuZGFsb25lLm1hdC1idXR0b24tdG9nZ2xlLWFwcGVhcmFuY2Utc3RhbmRhcmQsLm1hdC1idXR0b24tdG9nZ2xlLWdyb3VwLWFwcGVhcmFuY2Utc3RhbmRhcmR7Ym94LXNoYWRvdzpub25lfS5tYXQtYnV0dG9uLXRvZ2dsZXtjb2xvcjpyZ2JhKDAsMCwwLC4zOCl9Lm1hdC1idXR0b24tdG9nZ2xlIC5tYXQtYnV0dG9uLXRvZ2dsZS1mb2N1cy1vdmVybGF5e2JhY2tncm91bmQtY29sb3I6cmdiYSgwLDAsMCwuMTIpfS5tYXQtYnV0dG9uLXRvZ2dsZS1hcHBlYXJhbmNlLXN0YW5kYXJke2NvbG9yOiMyMTIxMjE7YmFja2dyb3VuZDojZmZmfS5tYXQtYnV0dG9uLXRvZ2dsZS1hcHBlYXJhbmNlLXN0YW5kYXJkIC5tYXQtYnV0dG9uLXRvZ2dsZS1mb2N1cy1vdmVybGF5e2JhY2tncm91bmQtY29sb3I6IzAwMH0ubWF0LWJ1dHRvbi10b2dnbGUtZ3JvdXAtYXBwZWFyYW5jZS1zdGFuZGFyZCAubWF0LWJ1dHRvbi10b2dnbGUrLm1hdC1idXR0b24tdG9nZ2xle2JvcmRlci1sZWZ0OnNvbGlkIDFweCByZ2JhKDAsMCwwLC4xMil9W2Rpcj1ydGxdIC5tYXQtYnV0dG9uLXRvZ2dsZS1ncm91cC1hcHBlYXJhbmNlLXN0YW5kYXJkIC5tYXQtYnV0dG9uLXRvZ2dsZSsubWF0LWJ1dHRvbi10b2dnbGV7Ym9yZGVyLWxlZnQ6bm9uZTtib3JkZXItcmlnaHQ6c29saWQgMXB4IHJnYmEoMCwwLDAsLjEyKX0ubWF0LWJ1dHRvbi10b2dnbGUtZ3JvdXAtYXBwZWFyYW5jZS1zdGFuZGFyZC5tYXQtYnV0dG9uLXRvZ2dsZS12ZXJ0aWNhbCAubWF0LWJ1dHRvbi10b2dnbGUrLm1hdC1idXR0b24tdG9nZ2xle2JvcmRlci1sZWZ0Om5vbmU7Ym9yZGVyLXJpZ2h0Om5vbmU7Ym9yZGVyLXRvcDpzb2xpZCAxcHggcmdiYSgwLDAsMCwuMTIpfS5tYXQtYnV0dG9uLXRvZ2dsZS1jaGVja2Vke2JhY2tncm91bmQtY29sb3I6I2UwZTBlMDtjb2xvcjojNjE2MTYxfS5tYXQtYnV0dG9uLXRvZ2dsZS1jaGVja2VkLm1hdC1idXR0b24tdG9nZ2xlLWFwcGVhcmFuY2Utc3RhbmRhcmR7Y29sb3I6IzIxMjEyMX0ubWF0LWJ1dHRvbi10b2dnbGUtZGlzYWJsZWR7Y29sb3I6cmdiYSgwLDAsMCwuMjYpO2JhY2tncm91bmQtY29sb3I6I2VlZX0ubWF0LWJ1dHRvbi10b2dnbGUtZGlzYWJsZWQubWF0LWJ1dHRvbi10b2dnbGUtYXBwZWFyYW5jZS1zdGFuZGFyZHtiYWNrZ3JvdW5kOiNmZmZ9Lm1hdC1idXR0b24tdG9nZ2xlLWRpc2FibGVkLm1hdC1idXR0b24tdG9nZ2xlLWNoZWNrZWR7YmFja2dyb3VuZC1jb2xvcjojYmRiZGJkfS5tYXQtYnV0dG9uLXRvZ2dsZS1zdGFuZGFsb25lLm1hdC1idXR0b24tdG9nZ2xlLWFwcGVhcmFuY2Utc3RhbmRhcmQsLm1hdC1idXR0b24tdG9nZ2xlLWdyb3VwLWFwcGVhcmFuY2Utc3RhbmRhcmR7Ym9yZGVyOnNvbGlkIDFweCByZ2JhKDAsMCwwLC4xMil9Lm1hdC1idXR0b24tdG9nZ2xlLWFwcGVhcmFuY2Utc3RhbmRhcmQgLm1hdC1idXR0b24tdG9nZ2xlLWxhYmVsLWNvbnRlbnR7bGluZS1oZWlnaHQ6NDhweH0ubWF0LWNhcmR7YmFja2dyb3VuZDojZmZmO2NvbG9yOiMyMTIxMjF9Lm1hdC1jYXJkOm5vdChbY2xhc3MqPW1hdC1lbGV2YXRpb24tel0pe2JveC1zaGFkb3c6MHB4IDJweCAxcHggLTFweCByZ2JhKDAsIDAsIDAsIDAuMiksMHB4IDFweCAxcHggMHB4IHJnYmEoMCwgMCwgMCwgMC4xNCksMHB4IDFweCAzcHggMHB4IHJnYmEoMCwgMCwgMCwgMC4xMil9Lm1hdC1jYXJkLm1hdC1jYXJkLWZsYXQ6bm90KFtjbGFzcyo9bWF0LWVsZXZhdGlvbi16XSl7Ym94LXNoYWRvdzowcHggMHB4IDBweCAwcHggcmdiYSgwLCAwLCAwLCAwLjIpLDBweCAwcHggMHB4IDBweCByZ2JhKDAsIDAsIDAsIDAuMTQpLDBweCAwcHggMHB4IDBweCByZ2JhKDAsIDAsIDAsIDAuMTIpfS5tYXQtY2FyZC1zdWJ0aXRsZXtjb2xvcjojNjE2MTYxfS5tYXQtY2hlY2tib3gtZnJhbWV7Ym9yZGVyLWNvbG9yOiM2MTYxNjF9Lm1hdC1jaGVja2JveC1jaGVja21hcmt7ZmlsbDojZmFmYWZhfS5tYXQtY2hlY2tib3gtY2hlY2ttYXJrLXBhdGh7c3Ryb2tlOiNmYWZhZmEgIWltcG9ydGFudH0ubWF0LWNoZWNrYm94LW1peGVkbWFya3tiYWNrZ3JvdW5kLWNvbG9yOiNmYWZhZmF9Lm1hdC1jaGVja2JveC1pbmRldGVybWluYXRlLm1hdC1wcmltYXJ5IC5tYXQtY2hlY2tib3gtYmFja2dyb3VuZCwubWF0LWNoZWNrYm94LWNoZWNrZWQubWF0LXByaW1hcnkgLm1hdC1jaGVja2JveC1iYWNrZ3JvdW5ke2JhY2tncm91bmQtY29sb3I6I2Y1N2MwMH0ubWF0LWNoZWNrYm94LWluZGV0ZXJtaW5hdGUubWF0LWFjY2VudCAubWF0LWNoZWNrYm94LWJhY2tncm91bmQsLm1hdC1jaGVja2JveC1jaGVja2VkLm1hdC1hY2NlbnQgLm1hdC1jaGVja2JveC1iYWNrZ3JvdW5ke2JhY2tncm91bmQtY29sb3I6I2ZmOTgwMH0ubWF0LWNoZWNrYm94LWluZGV0ZXJtaW5hdGUubWF0LXdhcm4gLm1hdC1jaGVja2JveC1iYWNrZ3JvdW5kLC5tYXQtY2hlY2tib3gtY2hlY2tlZC5tYXQtd2FybiAubWF0LWNoZWNrYm94LWJhY2tncm91bmR7YmFja2dyb3VuZC1jb2xvcjojZjQ0MzM2fS5tYXQtY2hlY2tib3gtZGlzYWJsZWQubWF0LWNoZWNrYm94LWNoZWNrZWQgLm1hdC1jaGVja2JveC1iYWNrZ3JvdW5kLC5tYXQtY2hlY2tib3gtZGlzYWJsZWQubWF0LWNoZWNrYm94LWluZGV0ZXJtaW5hdGUgLm1hdC1jaGVja2JveC1iYWNrZ3JvdW5ke2JhY2tncm91bmQtY29sb3I6I2IwYjBiMH0ubWF0LWNoZWNrYm94LWRpc2FibGVkOm5vdCgubWF0LWNoZWNrYm94LWNoZWNrZWQpIC5tYXQtY2hlY2tib3gtZnJhbWV7Ym9yZGVyLWNvbG9yOiNiMGIwYjB9Lm1hdC1jaGVja2JveC1kaXNhYmxlZCAubWF0LWNoZWNrYm94LWxhYmVse2NvbG9yOiM2MTYxNjF9Lm1hdC1jaGVja2JveCAubWF0LXJpcHBsZS1lbGVtZW50e2JhY2tncm91bmQtY29sb3I6IzAwMH0ubWF0LWNoZWNrYm94LWNoZWNrZWQ6bm90KC5tYXQtY2hlY2tib3gtZGlzYWJsZWQpLm1hdC1wcmltYXJ5IC5tYXQtcmlwcGxlLWVsZW1lbnQsLm1hdC1jaGVja2JveDphY3RpdmU6bm90KC5tYXQtY2hlY2tib3gtZGlzYWJsZWQpLm1hdC1wcmltYXJ5IC5tYXQtcmlwcGxlLWVsZW1lbnR7YmFja2dyb3VuZDojZjU3YzAwfS5tYXQtY2hlY2tib3gtY2hlY2tlZDpub3QoLm1hdC1jaGVja2JveC1kaXNhYmxlZCkubWF0LWFjY2VudCAubWF0LXJpcHBsZS1lbGVtZW50LC5tYXQtY2hlY2tib3g6YWN0aXZlOm5vdCgubWF0LWNoZWNrYm94LWRpc2FibGVkKS5tYXQtYWNjZW50IC5tYXQtcmlwcGxlLWVsZW1lbnR7YmFja2dyb3VuZDojZmY5ODAwfS5tYXQtY2hlY2tib3gtY2hlY2tlZDpub3QoLm1hdC1jaGVja2JveC1kaXNhYmxlZCkubWF0LXdhcm4gLm1hdC1yaXBwbGUtZWxlbWVudCwubWF0LWNoZWNrYm94OmFjdGl2ZTpub3QoLm1hdC1jaGVja2JveC1kaXNhYmxlZCkubWF0LXdhcm4gLm1hdC1yaXBwbGUtZWxlbWVudHtiYWNrZ3JvdW5kOiNmNDQzMzZ9Lm1hdC1jaGlwLm1hdC1zdGFuZGFyZC1jaGlwe2JhY2tncm91bmQtY29sb3I6I2UwZTBlMDtjb2xvcjojMjEyMTIxfS5tYXQtY2hpcC5tYXQtc3RhbmRhcmQtY2hpcCAubWF0LWNoaXAtcmVtb3Zle2NvbG9yOiMyMTIxMjE7b3BhY2l0eTouNH0ubWF0LWNoaXAubWF0LXN0YW5kYXJkLWNoaXA6bm90KC5tYXQtY2hpcC1kaXNhYmxlZCk6YWN0aXZle2JveC1zaGFkb3c6MHB4IDNweCAzcHggLTJweCByZ2JhKDAsIDAsIDAsIDAuMiksMHB4IDNweCA0cHggMHB4IHJnYmEoMCwgMCwgMCwgMC4xNCksMHB4IDFweCA4cHggMHB4IHJnYmEoMCwgMCwgMCwgMC4xMil9Lm1hdC1jaGlwLm1hdC1zdGFuZGFyZC1jaGlwOm5vdCgubWF0LWNoaXAtZGlzYWJsZWQpIC5tYXQtY2hpcC1yZW1vdmU6aG92ZXJ7b3BhY2l0eTouNTR9Lm1hdC1jaGlwLm1hdC1zdGFuZGFyZC1jaGlwLm1hdC1jaGlwLWRpc2FibGVke29wYWNpdHk6LjR9Lm1hdC1jaGlwLm1hdC1zdGFuZGFyZC1jaGlwOjphZnRlcntiYWNrZ3JvdW5kOiMwMDB9Lm1hdC1jaGlwLm1hdC1zdGFuZGFyZC1jaGlwLm1hdC1jaGlwLXNlbGVjdGVkLm1hdC1wcmltYXJ5e2JhY2tncm91bmQtY29sb3I6I2Y1N2MwMDtjb2xvcjojZmZmfS5tYXQtY2hpcC5tYXQtc3RhbmRhcmQtY2hpcC5tYXQtY2hpcC1zZWxlY3RlZC5tYXQtcHJpbWFyeSAubWF0LWNoaXAtcmVtb3Zle2NvbG9yOiNmZmY7b3BhY2l0eTouNH0ubWF0LWNoaXAubWF0LXN0YW5kYXJkLWNoaXAubWF0LWNoaXAtc2VsZWN0ZWQubWF0LXByaW1hcnkgLm1hdC1yaXBwbGUtZWxlbWVudHtiYWNrZ3JvdW5kLWNvbG9yOnJnYmEoMjU1LDI1NSwyNTUsLjEpfS5tYXQtY2hpcC5tYXQtc3RhbmRhcmQtY2hpcC5tYXQtY2hpcC1zZWxlY3RlZC5tYXQtd2FybntiYWNrZ3JvdW5kLWNvbG9yOiNmNDQzMzY7Y29sb3I6I2ZmZn0ubWF0LWNoaXAubWF0LXN0YW5kYXJkLWNoaXAubWF0LWNoaXAtc2VsZWN0ZWQubWF0LXdhcm4gLm1hdC1jaGlwLXJlbW92ZXtjb2xvcjojZmZmO29wYWNpdHk6LjR9Lm1hdC1jaGlwLm1hdC1zdGFuZGFyZC1jaGlwLm1hdC1jaGlwLXNlbGVjdGVkLm1hdC13YXJuIC5tYXQtcmlwcGxlLWVsZW1lbnR7YmFja2dyb3VuZC1jb2xvcjpyZ2JhKDI1NSwyNTUsMjU1LC4xKX0ubWF0LWNoaXAubWF0LXN0YW5kYXJkLWNoaXAubWF0LWNoaXAtc2VsZWN0ZWQubWF0LWFjY2VudHtiYWNrZ3JvdW5kLWNvbG9yOiNmZjk4MDA7Y29sb3I6I2ZmZn0ubWF0LWNoaXAubWF0LXN0YW5kYXJkLWNoaXAubWF0LWNoaXAtc2VsZWN0ZWQubWF0LWFjY2VudCAubWF0LWNoaXAtcmVtb3Zle2NvbG9yOiNmZmY7b3BhY2l0eTouNH0ubWF0LWNoaXAubWF0LXN0YW5kYXJkLWNoaXAubWF0LWNoaXAtc2VsZWN0ZWQubWF0LWFjY2VudCAubWF0LXJpcHBsZS1lbGVtZW50e2JhY2tncm91bmQtY29sb3I6cmdiYSgyNTUsMjU1LDI1NSwuMSl9Lm1hdC10YWJsZXtiYWNrZ3JvdW5kOiNmZmZ9Lm1hdC10YWJsZSB0aGVhZCwubWF0LXRhYmxlIHRib2R5LC5tYXQtdGFibGUgdGZvb3QsbWF0LWhlYWRlci1yb3csbWF0LXJvdyxtYXQtZm9vdGVyLXJvdyxbbWF0LWhlYWRlci1yb3ddLFttYXQtcm93XSxbbWF0LWZvb3Rlci1yb3ddLC5tYXQtdGFibGUtc3RpY2t5e2JhY2tncm91bmQ6aW5oZXJpdH1tYXQtcm93LG1hdC1oZWFkZXItcm93LG1hdC1mb290ZXItcm93LHRoLm1hdC1oZWFkZXItY2VsbCx0ZC5tYXQtY2VsbCx0ZC5tYXQtZm9vdGVyLWNlbGx7Ym9yZGVyLWJvdHRvbS1jb2xvcjpyZ2JhKDAsMCwwLC4xMil9Lm1hdC1oZWFkZXItY2VsbHtjb2xvcjojNjE2MTYxfS5tYXQtY2VsbCwubWF0LWZvb3Rlci1jZWxse2NvbG9yOiMyMTIxMjF9Lm1hdC1jYWxlbmRhci1hcnJvd3tib3JkZXItdG9wLWNvbG9yOnJnYmEoMCwwLDAsLjU0KX0ubWF0LWRhdGVwaWNrZXItdG9nZ2xlLC5tYXQtZGF0ZXBpY2tlci1jb250ZW50IC5tYXQtY2FsZW5kYXItbmV4dC1idXR0b24sLm1hdC1kYXRlcGlja2VyLWNvbnRlbnQgLm1hdC1jYWxlbmRhci1wcmV2aW91cy1idXR0b257Y29sb3I6cmdiYSgwLDAsMCwuNTQpfS5tYXQtY2FsZW5kYXItdGFibGUtaGVhZGVye2NvbG9yOnJnYmEoMCwwLDAsLjM4KX0ubWF0LWNhbGVuZGFyLXRhYmxlLWhlYWRlci1kaXZpZGVyOjphZnRlcntiYWNrZ3JvdW5kOnJnYmEoMCwwLDAsLjEyKX0ubWF0LWNhbGVuZGFyLWJvZHktbGFiZWx7Y29sb3I6IzYxNjE2MX0ubWF0LWNhbGVuZGFyLWJvZHktY2VsbC1jb250ZW50LC5tYXQtZGF0ZS1yYW5nZS1pbnB1dC1zZXBhcmF0b3J7Y29sb3I6IzIxMjEyMTtib3JkZXItY29sb3I6dHJhbnNwYXJlbnR9Lm1hdC1jYWxlbmRhci1ib2R5LWRpc2FibGVkPi5tYXQtY2FsZW5kYXItYm9keS1jZWxsLWNvbnRlbnQ6bm90KC5tYXQtY2FsZW5kYXItYm9keS1zZWxlY3RlZCk6bm90KC5tYXQtY2FsZW5kYXItYm9keS1jb21wYXJpc29uLWlkZW50aWNhbCl7Y29sb3I6Izc1NzU3NX0ubWF0LWZvcm0tZmllbGQtZGlzYWJsZWQgLm1hdC1kYXRlLXJhbmdlLWlucHV0LXNlcGFyYXRvcntjb2xvcjojNzU3NTc1fS5tYXQtY2FsZW5kYXItYm9keS1jZWxsOm5vdCgubWF0LWNhbGVuZGFyLWJvZHktZGlzYWJsZWQpOmhvdmVyPi5tYXQtY2FsZW5kYXItYm9keS1jZWxsLWNvbnRlbnQ6bm90KC5tYXQtY2FsZW5kYXItYm9keS1zZWxlY3RlZCk6bm90KC5tYXQtY2FsZW5kYXItYm9keS1jb21wYXJpc29uLWlkZW50aWNhbCksLmNkay1rZXlib2FyZC1mb2N1c2VkIC5tYXQtY2FsZW5kYXItYm9keS1hY3RpdmU+Lm1hdC1jYWxlbmRhci1ib2R5LWNlbGwtY29udGVudDpub3QoLm1hdC1jYWxlbmRhci1ib2R5LXNlbGVjdGVkKTpub3QoLm1hdC1jYWxlbmRhci1ib2R5LWNvbXBhcmlzb24taWRlbnRpY2FsKSwuY2RrLXByb2dyYW0tZm9jdXNlZCAubWF0LWNhbGVuZGFyLWJvZHktYWN0aXZlPi5tYXQtY2FsZW5kYXItYm9keS1jZWxsLWNvbnRlbnQ6bm90KC5tYXQtY2FsZW5kYXItYm9keS1zZWxlY3RlZCk6bm90KC5tYXQtY2FsZW5kYXItYm9keS1jb21wYXJpc29uLWlkZW50aWNhbCl7YmFja2dyb3VuZC1jb2xvcjpyZ2JhKDAsMCwwLC4wNCl9Lm1hdC1jYWxlbmRhci1ib2R5LWluLXByZXZpZXd7Y29sb3I6cmdiYSgwLDAsMCwuMjQpfS5tYXQtY2FsZW5kYXItYm9keS10b2RheTpub3QoLm1hdC1jYWxlbmRhci1ib2R5LXNlbGVjdGVkKTpub3QoLm1hdC1jYWxlbmRhci1ib2R5LWNvbXBhcmlzb24taWRlbnRpY2FsKXtib3JkZXItY29sb3I6cmdiYSgwLDAsMCwuMzgpfS5tYXQtY2FsZW5kYXItYm9keS1kaXNhYmxlZD4ubWF0LWNhbGVuZGFyLWJvZHktdG9kYXk6bm90KC5tYXQtY2FsZW5kYXItYm9keS1zZWxlY3RlZCk6bm90KC5tYXQtY2FsZW5kYXItYm9keS1jb21wYXJpc29uLWlkZW50aWNhbCl7Ym9yZGVyLWNvbG9yOnJnYmEoMCwwLDAsLjE4KX0ubWF0LWNhbGVuZGFyLWJvZHktaW4tcmFuZ2U6OmJlZm9yZXtiYWNrZ3JvdW5kOnJnYmEoMjQ1LDEyNCwwLC4yKX0ubWF0LWNhbGVuZGFyLWJvZHktY29tcGFyaXNvbi1pZGVudGljYWwsLm1hdC1jYWxlbmRhci1ib2R5LWluLWNvbXBhcmlzb24tcmFuZ2U6OmJlZm9yZXtiYWNrZ3JvdW5kOnJnYmEoMjQ5LDE3MSwwLC4yKX0ubWF0LWNhbGVuZGFyLWJvZHktY29tcGFyaXNvbi1icmlkZ2Utc3RhcnQ6OmJlZm9yZSxbZGlyPXJ0bF0gLm1hdC1jYWxlbmRhci1ib2R5LWNvbXBhcmlzb24tYnJpZGdlLWVuZDo6YmVmb3Jle2JhY2tncm91bmQ6bGluZWFyLWdyYWRpZW50KHRvIHJpZ2h0LCByZ2JhKDI0NSwgMTI0LCAwLCAwLjIpIDUwJSwgcmdiYSgyNDksIDE3MSwgMCwgMC4yKSA1MCUpfS5tYXQtY2FsZW5kYXItYm9keS1jb21wYXJpc29uLWJyaWRnZS1lbmQ6OmJlZm9yZSxbZGlyPXJ0bF0gLm1hdC1jYWxlbmRhci1ib2R5LWNvbXBhcmlzb24tYnJpZGdlLXN0YXJ0OjpiZWZvcmV7YmFja2dyb3VuZDpsaW5lYXItZ3JhZGllbnQodG8gbGVmdCwgcmdiYSgyNDUsIDEyNCwgMCwgMC4yKSA1MCUsIHJnYmEoMjQ5LCAxNzEsIDAsIDAuMikgNTAlKX0ubWF0LWNhbGVuZGFyLWJvZHktaW4tcmFuZ2U+Lm1hdC1jYWxlbmRhci1ib2R5LWNvbXBhcmlzb24taWRlbnRpY2FsLC5tYXQtY2FsZW5kYXItYm9keS1pbi1jb21wYXJpc29uLXJhbmdlLm1hdC1jYWxlbmRhci1ib2R5LWluLXJhbmdlOjphZnRlcntiYWNrZ3JvdW5kOiNhOGRhYjV9Lm1hdC1jYWxlbmRhci1ib2R5LWNvbXBhcmlzb24taWRlbnRpY2FsLm1hdC1jYWxlbmRhci1ib2R5LXNlbGVjdGVkLC5tYXQtY2FsZW5kYXItYm9keS1pbi1jb21wYXJpc29uLXJhbmdlPi5tYXQtY2FsZW5kYXItYm9keS1zZWxlY3RlZHtiYWNrZ3JvdW5kOiM0NmEzNWV9Lm1hdC1jYWxlbmRhci1ib2R5LXNlbGVjdGVke2JhY2tncm91bmQtY29sb3I6I2Y1N2MwMDtjb2xvcjojZmZmfS5tYXQtY2FsZW5kYXItYm9keS1kaXNhYmxlZD4ubWF0LWNhbGVuZGFyLWJvZHktc2VsZWN0ZWR7YmFja2dyb3VuZC1jb2xvcjpyZ2JhKDI0NSwxMjQsMCwuNCl9Lm1hdC1jYWxlbmRhci1ib2R5LXRvZGF5Lm1hdC1jYWxlbmRhci1ib2R5LXNlbGVjdGVke2JveC1zaGFkb3c6aW5zZXQgMCAwIDAgMXB4ICNmZmZ9Lm1hdC1kYXRlcGlja2VyLWNvbnRlbnR7Ym94LXNoYWRvdzowcHggMnB4IDRweCAtMXB4IHJnYmEoMCwgMCwgMCwgMC4yKSwwcHggNHB4IDVweCAwcHggcmdiYSgwLCAwLCAwLCAwLjE0KSwwcHggMXB4IDEwcHggMHB4IHJnYmEoMCwgMCwgMCwgMC4xMik7YmFja2dyb3VuZC1jb2xvcjojZmZmO2NvbG9yOiMyMTIxMjF9Lm1hdC1kYXRlcGlja2VyLWNvbnRlbnQubWF0LWFjY2VudCAubWF0LWNhbGVuZGFyLWJvZHktaW4tcmFuZ2U6OmJlZm9yZXtiYWNrZ3JvdW5kOnJnYmEoMjU1LDE1MiwwLC4yKX0ubWF0LWRhdGVwaWNrZXItY29udGVudC5tYXQtYWNjZW50IC5tYXQtY2FsZW5kYXItYm9keS1jb21wYXJpc29uLWlkZW50aWNhbCwubWF0LWRhdGVwaWNrZXItY29udGVudC5tYXQtYWNjZW50IC5tYXQtY2FsZW5kYXItYm9keS1pbi1jb21wYXJpc29uLXJhbmdlOjpiZWZvcmV7YmFja2dyb3VuZDpyZ2JhKDI0OSwxNzEsMCwuMil9Lm1hdC1kYXRlcGlja2VyLWNvbnRlbnQubWF0LWFjY2VudCAubWF0LWNhbGVuZGFyLWJvZHktY29tcGFyaXNvbi1icmlkZ2Utc3RhcnQ6OmJlZm9yZSwubWF0LWRhdGVwaWNrZXItY29udGVudC5tYXQtYWNjZW50IFtkaXI9cnRsXSAubWF0LWNhbGVuZGFyLWJvZHktY29tcGFyaXNvbi1icmlkZ2UtZW5kOjpiZWZvcmV7YmFja2dyb3VuZDpsaW5lYXItZ3JhZGllbnQodG8gcmlnaHQsIHJnYmEoMjU1LCAxNTIsIDAsIDAuMikgNTAlLCByZ2JhKDI0OSwgMTcxLCAwLCAwLjIpIDUwJSl9Lm1hdC1kYXRlcGlja2VyLWNvbnRlbnQubWF0LWFjY2VudCAubWF0LWNhbGVuZGFyLWJvZHktY29tcGFyaXNvbi1icmlkZ2UtZW5kOjpiZWZvcmUsLm1hdC1kYXRlcGlja2VyLWNvbnRlbnQubWF0LWFjY2VudCBbZGlyPXJ0bF0gLm1hdC1jYWxlbmRhci1ib2R5LWNvbXBhcmlzb24tYnJpZGdlLXN0YXJ0OjpiZWZvcmV7YmFja2dyb3VuZDpsaW5lYXItZ3JhZGllbnQodG8gbGVmdCwgcmdiYSgyNTUsIDE1MiwgMCwgMC4yKSA1MCUsIHJnYmEoMjQ5LCAxNzEsIDAsIDAuMikgNTAlKX0ubWF0LWRhdGVwaWNrZXItY29udGVudC5tYXQtYWNjZW50IC5tYXQtY2FsZW5kYXItYm9keS1pbi1yYW5nZT4ubWF0LWNhbGVuZGFyLWJvZHktY29tcGFyaXNvbi1pZGVudGljYWwsLm1hdC1kYXRlcGlja2VyLWNvbnRlbnQubWF0LWFjY2VudCAubWF0LWNhbGVuZGFyLWJvZHktaW4tY29tcGFyaXNvbi1yYW5nZS5tYXQtY2FsZW5kYXItYm9keS1pbi1yYW5nZTo6YWZ0ZXJ7YmFja2dyb3VuZDojYThkYWI1fS5tYXQtZGF0ZXBpY2tlci1jb250ZW50Lm1hdC1hY2NlbnQgLm1hdC1jYWxlbmRhci1ib2R5LWNvbXBhcmlzb24taWRlbnRpY2FsLm1hdC1jYWxlbmRhci1ib2R5LXNlbGVjdGVkLC5tYXQtZGF0ZXBpY2tlci1jb250ZW50Lm1hdC1hY2NlbnQgLm1hdC1jYWxlbmRhci1ib2R5LWluLWNvbXBhcmlzb24tcmFuZ2U+Lm1hdC1jYWxlbmRhci1ib2R5LXNlbGVjdGVke2JhY2tncm91bmQ6IzQ2YTM1ZX0ubWF0LWRhdGVwaWNrZXItY29udGVudC5tYXQtYWNjZW50IC5tYXQtY2FsZW5kYXItYm9keS1zZWxlY3RlZHtiYWNrZ3JvdW5kLWNvbG9yOiNmZjk4MDA7Y29sb3I6I2ZmZn0ubWF0LWRhdGVwaWNrZXItY29udGVudC5tYXQtYWNjZW50IC5tYXQtY2FsZW5kYXItYm9keS1kaXNhYmxlZD4ubWF0LWNhbGVuZGFyLWJvZHktc2VsZWN0ZWR7YmFja2dyb3VuZC1jb2xvcjpyZ2JhKDI1NSwxNTIsMCwuNCl9Lm1hdC1kYXRlcGlja2VyLWNvbnRlbnQubWF0LWFjY2VudCAubWF0LWNhbGVuZGFyLWJvZHktdG9kYXkubWF0LWNhbGVuZGFyLWJvZHktc2VsZWN0ZWR7Ym94LXNoYWRvdzppbnNldCAwIDAgMCAxcHggI2ZmZn0ubWF0LWRhdGVwaWNrZXItY29udGVudC5tYXQtd2FybiAubWF0LWNhbGVuZGFyLWJvZHktaW4tcmFuZ2U6OmJlZm9yZXtiYWNrZ3JvdW5kOnJnYmEoMjQ0LDY3LDU0LC4yKX0ubWF0LWRhdGVwaWNrZXItY29udGVudC5tYXQtd2FybiAubWF0LWNhbGVuZGFyLWJvZHktY29tcGFyaXNvbi1pZGVudGljYWwsLm1hdC1kYXRlcGlja2VyLWNvbnRlbnQubWF0LXdhcm4gLm1hdC1jYWxlbmRhci1ib2R5LWluLWNvbXBhcmlzb24tcmFuZ2U6OmJlZm9yZXtiYWNrZ3JvdW5kOnJnYmEoMjQ5LDE3MSwwLC4yKX0ubWF0LWRhdGVwaWNrZXItY29udGVudC5tYXQtd2FybiAubWF0LWNhbGVuZGFyLWJvZHktY29tcGFyaXNvbi1icmlkZ2Utc3RhcnQ6OmJlZm9yZSwubWF0LWRhdGVwaWNrZXItY29udGVudC5tYXQtd2FybiBbZGlyPXJ0bF0gLm1hdC1jYWxlbmRhci1ib2R5LWNvbXBhcmlzb24tYnJpZGdlLWVuZDo6YmVmb3Jle2JhY2tncm91bmQ6bGluZWFyLWdyYWRpZW50KHRvIHJpZ2h0LCByZ2JhKDI0NCwgNjcsIDU0LCAwLjIpIDUwJSwgcmdiYSgyNDksIDE3MSwgMCwgMC4yKSA1MCUpfS5tYXQtZGF0ZXBpY2tlci1jb250ZW50Lm1hdC13YXJuIC5tYXQtY2FsZW5kYXItYm9keS1jb21wYXJpc29uLWJyaWRnZS1lbmQ6OmJlZm9yZSwubWF0LWRhdGVwaWNrZXItY29udGVudC5tYXQtd2FybiBbZGlyPXJ0bF0gLm1hdC1jYWxlbmRhci1ib2R5LWNvbXBhcmlzb24tYnJpZGdlLXN0YXJ0OjpiZWZvcmV7YmFja2dyb3VuZDpsaW5lYXItZ3JhZGllbnQodG8gbGVmdCwgcmdiYSgyNDQsIDY3LCA1NCwgMC4yKSA1MCUsIHJnYmEoMjQ5LCAxNzEsIDAsIDAuMikgNTAlKX0ubWF0LWRhdGVwaWNrZXItY29udGVudC5tYXQtd2FybiAubWF0LWNhbGVuZGFyLWJvZHktaW4tcmFuZ2U+Lm1hdC1jYWxlbmRhci1ib2R5LWNvbXBhcmlzb24taWRlbnRpY2FsLC5tYXQtZGF0ZXBpY2tlci1jb250ZW50Lm1hdC13YXJuIC5tYXQtY2FsZW5kYXItYm9keS1pbi1jb21wYXJpc29uLXJhbmdlLm1hdC1jYWxlbmRhci1ib2R5LWluLXJhbmdlOjphZnRlcntiYWNrZ3JvdW5kOiNhOGRhYjV9Lm1hdC1kYXRlcGlja2VyLWNvbnRlbnQubWF0LXdhcm4gLm1hdC1jYWxlbmRhci1ib2R5LWNvbXBhcmlzb24taWRlbnRpY2FsLm1hdC1jYWxlbmRhci1ib2R5LXNlbGVjdGVkLC5tYXQtZGF0ZXBpY2tlci1jb250ZW50Lm1hdC13YXJuIC5tYXQtY2FsZW5kYXItYm9keS1pbi1jb21wYXJpc29uLXJhbmdlPi5tYXQtY2FsZW5kYXItYm9keS1zZWxlY3RlZHtiYWNrZ3JvdW5kOiM0NmEzNWV9Lm1hdC1kYXRlcGlja2VyLWNvbnRlbnQubWF0LXdhcm4gLm1hdC1jYWxlbmRhci1ib2R5LXNlbGVjdGVke2JhY2tncm91bmQtY29sb3I6I2Y0NDMzNjtjb2xvcjojZmZmfS5tYXQtZGF0ZXBpY2tlci1jb250ZW50Lm1hdC13YXJuIC5tYXQtY2FsZW5kYXItYm9keS1kaXNhYmxlZD4ubWF0LWNhbGVuZGFyLWJvZHktc2VsZWN0ZWR7YmFja2dyb3VuZC1jb2xvcjpyZ2JhKDI0NCw2Nyw1NCwuNCl9Lm1hdC1kYXRlcGlja2VyLWNvbnRlbnQubWF0LXdhcm4gLm1hdC1jYWxlbmRhci1ib2R5LXRvZGF5Lm1hdC1jYWxlbmRhci1ib2R5LXNlbGVjdGVke2JveC1zaGFkb3c6aW5zZXQgMCAwIDAgMXB4ICNmZmZ9Lm1hdC1kYXRlcGlja2VyLWNvbnRlbnQtdG91Y2h7Ym94LXNoYWRvdzowcHggMHB4IDBweCAwcHggcmdiYSgwLCAwLCAwLCAwLjIpLDBweCAwcHggMHB4IDBweCByZ2JhKDAsIDAsIDAsIDAuMTQpLDBweCAwcHggMHB4IDBweCByZ2JhKDAsIDAsIDAsIDAuMTIpfS5tYXQtZGF0ZXBpY2tlci10b2dnbGUtYWN0aXZle2NvbG9yOiNmNTdjMDB9Lm1hdC1kYXRlcGlja2VyLXRvZ2dsZS1hY3RpdmUubWF0LWFjY2VudHtjb2xvcjojZmY5ODAwfS5tYXQtZGF0ZXBpY2tlci10b2dnbGUtYWN0aXZlLm1hdC13YXJue2NvbG9yOiNmNDQzMzZ9Lm1hdC1kYXRlLXJhbmdlLWlucHV0LWlubmVyW2Rpc2FibGVkXXtjb2xvcjojNzU3NTc1fS5tYXQtZGlhbG9nLWNvbnRhaW5lcntib3gtc2hhZG93OjBweCAxMXB4IDE1cHggLTdweCByZ2JhKDAsIDAsIDAsIDAuMiksMHB4IDI0cHggMzhweCAzcHggcmdiYSgwLCAwLCAwLCAwLjE0KSwwcHggOXB4IDQ2cHggOHB4IHJnYmEoMCwgMCwgMCwgMC4xMik7YmFja2dyb3VuZDojZmZmO2NvbG9yOiMyMTIxMjF9Lm1hdC1kaXZpZGVye2JvcmRlci10b3AtY29sb3I6cmdiYSgwLDAsMCwuMTIpfS5tYXQtZGl2aWRlci12ZXJ0aWNhbHtib3JkZXItcmlnaHQtY29sb3I6cmdiYSgwLDAsMCwuMTIpfS5tYXQtZXhwYW5zaW9uLXBhbmVse2JhY2tncm91bmQ6I2ZmZjtjb2xvcjojMjEyMTIxfS5tYXQtZXhwYW5zaW9uLXBhbmVsOm5vdChbY2xhc3MqPW1hdC1lbGV2YXRpb24tel0pe2JveC1zaGFkb3c6MHB4IDNweCAxcHggLTJweCByZ2JhKDAsIDAsIDAsIDAuMiksMHB4IDJweCAycHggMHB4IHJnYmEoMCwgMCwgMCwgMC4xNCksMHB4IDFweCA1cHggMHB4IHJnYmEoMCwgMCwgMCwgMC4xMil9Lm1hdC1hY3Rpb24tcm93e2JvcmRlci10b3AtY29sb3I6cmdiYSgwLDAsMCwuMTIpfS5tYXQtZXhwYW5zaW9uLXBhbmVsIC5tYXQtZXhwYW5zaW9uLXBhbmVsLWhlYWRlci5jZGsta2V5Ym9hcmQtZm9jdXNlZDpub3QoW2FyaWEtZGlzYWJsZWQ9dHJ1ZV0pLC5tYXQtZXhwYW5zaW9uLXBhbmVsIC5tYXQtZXhwYW5zaW9uLXBhbmVsLWhlYWRlci5jZGstcHJvZ3JhbS1mb2N1c2VkOm5vdChbYXJpYS1kaXNhYmxlZD10cnVlXSksLm1hdC1leHBhbnNpb24tcGFuZWw6bm90KC5tYXQtZXhwYW5kZWQpIC5tYXQtZXhwYW5zaW9uLXBhbmVsLWhlYWRlcjpob3Zlcjpub3QoW2FyaWEtZGlzYWJsZWQ9dHJ1ZV0pe2JhY2tncm91bmQ6cmdiYSgwLDAsMCwuMDQpfUBtZWRpYShob3Zlcjogbm9uZSl7Lm1hdC1leHBhbnNpb24tcGFuZWw6bm90KC5tYXQtZXhwYW5kZWQpOm5vdChbYXJpYS1kaXNhYmxlZD10cnVlXSkgLm1hdC1leHBhbnNpb24tcGFuZWwtaGVhZGVyOmhvdmVye2JhY2tncm91bmQ6I2ZmZn19Lm1hdC1leHBhbnNpb24tcGFuZWwtaGVhZGVyLXRpdGxle2NvbG9yOiMyMTIxMjF9Lm1hdC1leHBhbnNpb24tcGFuZWwtaGVhZGVyLWRlc2NyaXB0aW9uLC5tYXQtZXhwYW5zaW9uLWluZGljYXRvcjo6YWZ0ZXJ7Y29sb3I6IzYxNjE2MX0ubWF0LWV4cGFuc2lvbi1wYW5lbC1oZWFkZXJbYXJpYS1kaXNhYmxlZD10cnVlXXtjb2xvcjpyZ2JhKDAsMCwwLC4yNil9Lm1hdC1leHBhbnNpb24tcGFuZWwtaGVhZGVyW2FyaWEtZGlzYWJsZWQ9dHJ1ZV0gLm1hdC1leHBhbnNpb24tcGFuZWwtaGVhZGVyLXRpdGxlLC5tYXQtZXhwYW5zaW9uLXBhbmVsLWhlYWRlclthcmlhLWRpc2FibGVkPXRydWVdIC5tYXQtZXhwYW5zaW9uLXBhbmVsLWhlYWRlci1kZXNjcmlwdGlvbntjb2xvcjppbmhlcml0fS5tYXQtZXhwYW5zaW9uLXBhbmVsLWhlYWRlcntoZWlnaHQ6NDhweH0ubWF0LWV4cGFuc2lvbi1wYW5lbC1oZWFkZXIubWF0LWV4cGFuZGVke2hlaWdodDo2NHB4fS5tYXQtZm9ybS1maWVsZC1sYWJlbHtjb2xvcjpyZ2JhKDk3LDk3LDk3LC42KX0ubWF0LWhpbnR7Y29sb3I6cmdiYSg5Nyw5Nyw5NywuNil9Lm1hdC1mb3JtLWZpZWxkLm1hdC1mb2N1c2VkIC5tYXQtZm9ybS1maWVsZC1sYWJlbHtjb2xvcjojZjU3YzAwfS5tYXQtZm9ybS1maWVsZC5tYXQtZm9jdXNlZCAubWF0LWZvcm0tZmllbGQtbGFiZWwubWF0LWFjY2VudHtjb2xvcjojZmY5ODAwfS5tYXQtZm9ybS1maWVsZC5tYXQtZm9jdXNlZCAubWF0LWZvcm0tZmllbGQtbGFiZWwubWF0LXdhcm57Y29sb3I6I2Y0NDMzNn0ubWF0LWZvY3VzZWQgLm1hdC1mb3JtLWZpZWxkLXJlcXVpcmVkLW1hcmtlcntjb2xvcjojZmY5ODAwfS5tYXQtZm9ybS1maWVsZC1yaXBwbGV7YmFja2dyb3VuZC1jb2xvcjpyZ2JhKDAsMCwwLC44Nyl9Lm1hdC1mb3JtLWZpZWxkLm1hdC1mb2N1c2VkIC5tYXQtZm9ybS1maWVsZC1yaXBwbGV7YmFja2dyb3VuZC1jb2xvcjojZjU3YzAwfS5tYXQtZm9ybS1maWVsZC5tYXQtZm9jdXNlZCAubWF0LWZvcm0tZmllbGQtcmlwcGxlLm1hdC1hY2NlbnR7YmFja2dyb3VuZC1jb2xvcjojZmY5ODAwfS5tYXQtZm9ybS1maWVsZC5tYXQtZm9jdXNlZCAubWF0LWZvcm0tZmllbGQtcmlwcGxlLm1hdC13YXJue2JhY2tncm91bmQtY29sb3I6I2Y0NDMzNn0ubWF0LWZvcm0tZmllbGQtdHlwZS1tYXQtbmF0aXZlLXNlbGVjdC5tYXQtZm9jdXNlZDpub3QoLm1hdC1mb3JtLWZpZWxkLWludmFsaWQpIC5tYXQtZm9ybS1maWVsZC1pbmZpeDo6YWZ0ZXJ7Y29sb3I6I2Y1N2MwMH0ubWF0LWZvcm0tZmllbGQtdHlwZS1tYXQtbmF0aXZlLXNlbGVjdC5tYXQtZm9jdXNlZDpub3QoLm1hdC1mb3JtLWZpZWxkLWludmFsaWQpLm1hdC1hY2NlbnQgLm1hdC1mb3JtLWZpZWxkLWluZml4OjphZnRlcntjb2xvcjojZmY5ODAwfS5tYXQtZm9ybS1maWVsZC10eXBlLW1hdC1uYXRpdmUtc2VsZWN0Lm1hdC1mb2N1c2VkOm5vdCgubWF0LWZvcm0tZmllbGQtaW52YWxpZCkubWF0LXdhcm4gLm1hdC1mb3JtLWZpZWxkLWluZml4OjphZnRlcntjb2xvcjojZjQ0MzM2fS5tYXQtZm9ybS1maWVsZC5tYXQtZm9ybS1maWVsZC1pbnZhbGlkIC5tYXQtZm9ybS1maWVsZC1sYWJlbHtjb2xvcjojZjQ0MzM2fS5tYXQtZm9ybS1maWVsZC5tYXQtZm9ybS1maWVsZC1pbnZhbGlkIC5tYXQtZm9ybS1maWVsZC1sYWJlbC5tYXQtYWNjZW50LC5tYXQtZm9ybS1maWVsZC5tYXQtZm9ybS1maWVsZC1pbnZhbGlkIC5tYXQtZm9ybS1maWVsZC1sYWJlbCAubWF0LWZvcm0tZmllbGQtcmVxdWlyZWQtbWFya2Vye2NvbG9yOiNmNDQzMzZ9Lm1hdC1mb3JtLWZpZWxkLm1hdC1mb3JtLWZpZWxkLWludmFsaWQgLm1hdC1mb3JtLWZpZWxkLXJpcHBsZSwubWF0LWZvcm0tZmllbGQubWF0LWZvcm0tZmllbGQtaW52YWxpZCAubWF0LWZvcm0tZmllbGQtcmlwcGxlLm1hdC1hY2NlbnR7YmFja2dyb3VuZC1jb2xvcjojZjQ0MzM2fS5tYXQtZXJyb3J7Y29sb3I6I2Y0NDMzNn0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1sZWdhY3kgLm1hdC1mb3JtLWZpZWxkLWxhYmVse2NvbG9yOiM2MTYxNjF9Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtbGVnYWN5IC5tYXQtaGludHtjb2xvcjojNjE2MTYxfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWxlZ2FjeSAubWF0LWZvcm0tZmllbGQtdW5kZXJsaW5le2JhY2tncm91bmQtY29sb3I6cmdiYSgwLDAsMCwuNDIpfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWxlZ2FjeS5tYXQtZm9ybS1maWVsZC1kaXNhYmxlZCAubWF0LWZvcm0tZmllbGQtdW5kZXJsaW5le2JhY2tncm91bmQtaW1hZ2U6bGluZWFyLWdyYWRpZW50KHRvIHJpZ2h0LCByZ2JhKDAsIDAsIDAsIDAuNDIpIDAlLCByZ2JhKDAsIDAsIDAsIDAuNDIpIDMzJSwgdHJhbnNwYXJlbnQgMCUpO2JhY2tncm91bmQtc2l6ZTo0cHggMTAwJTtiYWNrZ3JvdW5kLXJlcGVhdDpyZXBlYXQteH0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1zdGFuZGFyZCAubWF0LWZvcm0tZmllbGQtdW5kZXJsaW5le2JhY2tncm91bmQtY29sb3I6cmdiYSgwLDAsMCwuNDIpfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLXN0YW5kYXJkLm1hdC1mb3JtLWZpZWxkLWRpc2FibGVkIC5tYXQtZm9ybS1maWVsZC11bmRlcmxpbmV7YmFja2dyb3VuZC1pbWFnZTpsaW5lYXItZ3JhZGllbnQodG8gcmlnaHQsIHJnYmEoMCwgMCwgMCwgMC40MikgMCUsIHJnYmEoMCwgMCwgMCwgMC40MikgMzMlLCB0cmFuc3BhcmVudCAwJSk7YmFja2dyb3VuZC1zaXplOjRweCAxMDAlO2JhY2tncm91bmQtcmVwZWF0OnJlcGVhdC14fS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWZpbGwgLm1hdC1mb3JtLWZpZWxkLWZsZXh7YmFja2dyb3VuZC1jb2xvcjpyZ2JhKDAsMCwwLC4wNCl9Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtZmlsbC5tYXQtZm9ybS1maWVsZC1kaXNhYmxlZCAubWF0LWZvcm0tZmllbGQtZmxleHtiYWNrZ3JvdW5kLWNvbG9yOnJnYmEoMCwwLDAsLjAyKX0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1maWxsIC5tYXQtZm9ybS1maWVsZC11bmRlcmxpbmU6OmJlZm9yZXtiYWNrZ3JvdW5kLWNvbG9yOnJnYmEoMCwwLDAsLjQyKX0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1maWxsLm1hdC1mb3JtLWZpZWxkLWRpc2FibGVkIC5tYXQtZm9ybS1maWVsZC1sYWJlbHtjb2xvcjojNzU3NTc1fS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWZpbGwubWF0LWZvcm0tZmllbGQtZGlzYWJsZWQgLm1hdC1mb3JtLWZpZWxkLXVuZGVybGluZTo6YmVmb3Jle2JhY2tncm91bmQtY29sb3I6dHJhbnNwYXJlbnR9Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2Utb3V0bGluZSAubWF0LWZvcm0tZmllbGQtb3V0bGluZXtjb2xvcjpyZ2JhKDAsMCwwLC4xMil9Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2Utb3V0bGluZSAubWF0LWZvcm0tZmllbGQtb3V0bGluZS10aGlja3tjb2xvcjpyZ2JhKDAsMCwwLC44Nyl9Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2Utb3V0bGluZS5tYXQtZm9jdXNlZCAubWF0LWZvcm0tZmllbGQtb3V0bGluZS10aGlja3tjb2xvcjojZjU3YzAwfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLW91dGxpbmUubWF0LWZvY3VzZWQubWF0LWFjY2VudCAubWF0LWZvcm0tZmllbGQtb3V0bGluZS10aGlja3tjb2xvcjojZmY5ODAwfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLW91dGxpbmUubWF0LWZvY3VzZWQubWF0LXdhcm4gLm1hdC1mb3JtLWZpZWxkLW91dGxpbmUtdGhpY2t7Y29sb3I6I2Y0NDMzNn0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1vdXRsaW5lLm1hdC1mb3JtLWZpZWxkLWludmFsaWQubWF0LWZvcm0tZmllbGQtaW52YWxpZCAubWF0LWZvcm0tZmllbGQtb3V0bGluZS10aGlja3tjb2xvcjojZjQ0MzM2fS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLW91dGxpbmUubWF0LWZvcm0tZmllbGQtZGlzYWJsZWQgLm1hdC1mb3JtLWZpZWxkLWxhYmVse2NvbG9yOiM3NTc1NzV9Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2Utb3V0bGluZS5tYXQtZm9ybS1maWVsZC1kaXNhYmxlZCAubWF0LWZvcm0tZmllbGQtb3V0bGluZXtjb2xvcjpyZ2JhKDAsMCwwLC4wNil9Lm1hdC1pY29uLm1hdC1wcmltYXJ5e2NvbG9yOiNmNTdjMDB9Lm1hdC1pY29uLm1hdC1hY2NlbnR7Y29sb3I6I2ZmOTgwMH0ubWF0LWljb24ubWF0LXdhcm57Y29sb3I6I2Y0NDMzNn0ubWF0LWZvcm0tZmllbGQtdHlwZS1tYXQtbmF0aXZlLXNlbGVjdCAubWF0LWZvcm0tZmllbGQtaW5maXg6OmFmdGVye2NvbG9yOiM2MTYxNjF9Lm1hdC1pbnB1dC1lbGVtZW50OmRpc2FibGVkLC5tYXQtZm9ybS1maWVsZC10eXBlLW1hdC1uYXRpdmUtc2VsZWN0Lm1hdC1mb3JtLWZpZWxkLWRpc2FibGVkIC5tYXQtZm9ybS1maWVsZC1pbmZpeDo6YWZ0ZXJ7Y29sb3I6Izc1NzU3NX0ubWF0LWlucHV0LWVsZW1lbnR7Y2FyZXQtY29sb3I6I2Y1N2MwMH0ubWF0LWlucHV0LWVsZW1lbnQ6OnBsYWNlaG9sZGVye2NvbG9yOnJnYmEoOTcsOTcsOTcsLjQyKX0ubWF0LWlucHV0LWVsZW1lbnQ6Oi1tb3otcGxhY2Vob2xkZXJ7Y29sb3I6cmdiYSg5Nyw5Nyw5NywuNDIpfS5tYXQtaW5wdXQtZWxlbWVudDo6LXdlYmtpdC1pbnB1dC1wbGFjZWhvbGRlcntjb2xvcjpyZ2JhKDk3LDk3LDk3LC40Mil9Lm1hdC1pbnB1dC1lbGVtZW50Oi1tcy1pbnB1dC1wbGFjZWhvbGRlcntjb2xvcjpyZ2JhKDk3LDk3LDk3LC40Mil9Lm1hdC1mb3JtLWZpZWxkLm1hdC1hY2NlbnQgLm1hdC1pbnB1dC1lbGVtZW50e2NhcmV0LWNvbG9yOiNmZjk4MDB9Lm1hdC1mb3JtLWZpZWxkLm1hdC13YXJuIC5tYXQtaW5wdXQtZWxlbWVudCwubWF0LWZvcm0tZmllbGQtaW52YWxpZCAubWF0LWlucHV0LWVsZW1lbnR7Y2FyZXQtY29sb3I6I2Y0NDMzNn0ubWF0LWZvcm0tZmllbGQtdHlwZS1tYXQtbmF0aXZlLXNlbGVjdC5tYXQtZm9ybS1maWVsZC1pbnZhbGlkIC5tYXQtZm9ybS1maWVsZC1pbmZpeDo6YWZ0ZXJ7Y29sb3I6I2Y0NDMzNn0ubWF0LWxpc3QtYmFzZSAubWF0LWxpc3QtaXRlbXtjb2xvcjojMjEyMTIxfS5tYXQtbGlzdC1iYXNlIC5tYXQtbGlzdC1vcHRpb257Y29sb3I6IzIxMjEyMX0ubWF0LWxpc3QtYmFzZSAubWF0LXN1YmhlYWRlcntjb2xvcjojNjE2MTYxfS5tYXQtbGlzdC1pdGVtLWRpc2FibGVke2JhY2tncm91bmQtY29sb3I6I2VlZX0ubWF0LWxpc3Qtb3B0aW9uOmhvdmVyLC5tYXQtbGlzdC1vcHRpb246Zm9jdXMsLm1hdC1uYXYtbGlzdCAubWF0LWxpc3QtaXRlbTpob3ZlciwubWF0LW5hdi1saXN0IC5tYXQtbGlzdC1pdGVtOmZvY3VzLC5tYXQtYWN0aW9uLWxpc3QgLm1hdC1saXN0LWl0ZW06aG92ZXIsLm1hdC1hY3Rpb24tbGlzdCAubWF0LWxpc3QtaXRlbTpmb2N1c3tiYWNrZ3JvdW5kOnJnYmEoMCwwLDAsLjA0KX0ubWF0LWxpc3Qtc2luZ2xlLXNlbGVjdGVkLW9wdGlvbiwubWF0LWxpc3Qtc2luZ2xlLXNlbGVjdGVkLW9wdGlvbjpob3ZlciwubWF0LWxpc3Qtc2luZ2xlLXNlbGVjdGVkLW9wdGlvbjpmb2N1c3tiYWNrZ3JvdW5kOnJnYmEoMCwwLDAsLjEyKX0ubWF0LW1lbnUtcGFuZWx7YmFja2dyb3VuZDojZmZmfS5tYXQtbWVudS1wYW5lbDpub3QoW2NsYXNzKj1tYXQtZWxldmF0aW9uLXpdKXtib3gtc2hhZG93OjBweCAycHggNHB4IC0xcHggcmdiYSgwLCAwLCAwLCAwLjIpLDBweCA0cHggNXB4IDBweCByZ2JhKDAsIDAsIDAsIDAuMTQpLDBweCAxcHggMTBweCAwcHggcmdiYSgwLCAwLCAwLCAwLjEyKX0ubWF0LW1lbnUtaXRlbXtiYWNrZ3JvdW5kOnRyYW5zcGFyZW50O2NvbG9yOiMyMTIxMjF9Lm1hdC1tZW51LWl0ZW1bZGlzYWJsZWRdLC5tYXQtbWVudS1pdGVtW2Rpc2FibGVkXTo6YWZ0ZXJ7Y29sb3I6cmdiYSgwLDAsMCwuMzgpfS5tYXQtbWVudS1pdGVtIC5tYXQtaWNvbi1uby1jb2xvciwubWF0LW1lbnUtaXRlbS1zdWJtZW51LXRyaWdnZXI6OmFmdGVye2NvbG9yOnJnYmEoMCwwLDAsLjU0KX0ubWF0LW1lbnUtaXRlbTpob3Zlcjpub3QoW2Rpc2FibGVkXSksLm1hdC1tZW51LWl0ZW0uY2RrLXByb2dyYW0tZm9jdXNlZDpub3QoW2Rpc2FibGVkXSksLm1hdC1tZW51LWl0ZW0uY2RrLWtleWJvYXJkLWZvY3VzZWQ6bm90KFtkaXNhYmxlZF0pLC5tYXQtbWVudS1pdGVtLWhpZ2hsaWdodGVkOm5vdChbZGlzYWJsZWRdKXtiYWNrZ3JvdW5kOnJnYmEoMCwwLDAsLjA0KX0ubWF0LXBhZ2luYXRvcntiYWNrZ3JvdW5kOiNmZmZ9Lm1hdC1wYWdpbmF0b3IsLm1hdC1wYWdpbmF0b3ItcGFnZS1zaXplIC5tYXQtc2VsZWN0LXRyaWdnZXJ7Y29sb3I6IzYxNjE2MX0ubWF0LXBhZ2luYXRvci1kZWNyZW1lbnQsLm1hdC1wYWdpbmF0b3ItaW5jcmVtZW50e2JvcmRlci10b3A6MnB4IHNvbGlkIHJnYmEoMCwwLDAsLjU0KTtib3JkZXItcmlnaHQ6MnB4IHNvbGlkIHJnYmEoMCwwLDAsLjU0KX0ubWF0LXBhZ2luYXRvci1maXJzdCwubWF0LXBhZ2luYXRvci1sYXN0e2JvcmRlci10b3A6MnB4IHNvbGlkIHJnYmEoMCwwLDAsLjU0KX0ubWF0LWljb24tYnV0dG9uW2Rpc2FibGVkXSAubWF0LXBhZ2luYXRvci1kZWNyZW1lbnQsLm1hdC1pY29uLWJ1dHRvbltkaXNhYmxlZF0gLm1hdC1wYWdpbmF0b3ItaW5jcmVtZW50LC5tYXQtaWNvbi1idXR0b25bZGlzYWJsZWRdIC5tYXQtcGFnaW5hdG9yLWZpcnN0LC5tYXQtaWNvbi1idXR0b25bZGlzYWJsZWRdIC5tYXQtcGFnaW5hdG9yLWxhc3R7Ym9yZGVyLWNvbG9yOnJnYmEoMCwwLDAsLjM4KX0ubWF0LXBhZ2luYXRvci1jb250YWluZXJ7bWluLWhlaWdodDo1NnB4fS5tYXQtcHJvZ3Jlc3MtYmFyLWJhY2tncm91bmR7ZmlsbDojZmY5ODAwfS5tYXQtcHJvZ3Jlc3MtYmFyLWJ1ZmZlcntiYWNrZ3JvdW5kLWNvbG9yOiNmZjk4MDB9Lm1hdC1wcm9ncmVzcy1iYXItZmlsbDo6YWZ0ZXJ7YmFja2dyb3VuZC1jb2xvcjojZjU3YzAwfS5tYXQtcHJvZ3Jlc3MtYmFyLm1hdC1hY2NlbnQgLm1hdC1wcm9ncmVzcy1iYXItYmFja2dyb3VuZHtmaWxsOiNmZjk4MDB9Lm1hdC1wcm9ncmVzcy1iYXIubWF0LWFjY2VudCAubWF0LXByb2dyZXNzLWJhci1idWZmZXJ7YmFja2dyb3VuZC1jb2xvcjojZmY5ODAwfS5tYXQtcHJvZ3Jlc3MtYmFyLm1hdC1hY2NlbnQgLm1hdC1wcm9ncmVzcy1iYXItZmlsbDo6YWZ0ZXJ7YmFja2dyb3VuZC1jb2xvcjojZmY5ODAwfS5tYXQtcHJvZ3Jlc3MtYmFyLm1hdC13YXJuIC5tYXQtcHJvZ3Jlc3MtYmFyLWJhY2tncm91bmR7ZmlsbDojZmZjZGQyfS5tYXQtcHJvZ3Jlc3MtYmFyLm1hdC13YXJuIC5tYXQtcHJvZ3Jlc3MtYmFyLWJ1ZmZlcntiYWNrZ3JvdW5kLWNvbG9yOiNmZmNkZDJ9Lm1hdC1wcm9ncmVzcy1iYXIubWF0LXdhcm4gLm1hdC1wcm9ncmVzcy1iYXItZmlsbDo6YWZ0ZXJ7YmFja2dyb3VuZC1jb2xvcjojZjQ0MzM2fS5tYXQtcHJvZ3Jlc3Mtc3Bpbm5lciBjaXJjbGUsLm1hdC1zcGlubmVyIGNpcmNsZXtzdHJva2U6I2Y1N2MwMH0ubWF0LXByb2dyZXNzLXNwaW5uZXIubWF0LWFjY2VudCBjaXJjbGUsLm1hdC1zcGlubmVyLm1hdC1hY2NlbnQgY2lyY2xle3N0cm9rZTojZmY5ODAwfS5tYXQtcHJvZ3Jlc3Mtc3Bpbm5lci5tYXQtd2FybiBjaXJjbGUsLm1hdC1zcGlubmVyLm1hdC13YXJuIGNpcmNsZXtzdHJva2U6I2Y0NDMzNn0ubWF0LXJhZGlvLW91dGVyLWNpcmNsZXtib3JkZXItY29sb3I6IzYxNjE2MX0ubWF0LXJhZGlvLWJ1dHRvbi5tYXQtcHJpbWFyeS5tYXQtcmFkaW8tY2hlY2tlZCAubWF0LXJhZGlvLW91dGVyLWNpcmNsZXtib3JkZXItY29sb3I6I2Y1N2MwMH0ubWF0LXJhZGlvLWJ1dHRvbi5tYXQtcHJpbWFyeSAubWF0LXJhZGlvLWlubmVyLWNpcmNsZSwubWF0LXJhZGlvLWJ1dHRvbi5tYXQtcHJpbWFyeSAubWF0LXJhZGlvLXJpcHBsZSAubWF0LXJpcHBsZS1lbGVtZW50Om5vdCgubWF0LXJhZGlvLXBlcnNpc3RlbnQtcmlwcGxlKSwubWF0LXJhZGlvLWJ1dHRvbi5tYXQtcHJpbWFyeS5tYXQtcmFkaW8tY2hlY2tlZCAubWF0LXJhZGlvLXBlcnNpc3RlbnQtcmlwcGxlLC5tYXQtcmFkaW8tYnV0dG9uLm1hdC1wcmltYXJ5OmFjdGl2ZSAubWF0LXJhZGlvLXBlcnNpc3RlbnQtcmlwcGxle2JhY2tncm91bmQtY29sb3I6I2Y1N2MwMH0ubWF0LXJhZGlvLWJ1dHRvbi5tYXQtYWNjZW50Lm1hdC1yYWRpby1jaGVja2VkIC5tYXQtcmFkaW8tb3V0ZXItY2lyY2xle2JvcmRlci1jb2xvcjojZmY5ODAwfS5tYXQtcmFkaW8tYnV0dG9uLm1hdC1hY2NlbnQgLm1hdC1yYWRpby1pbm5lci1jaXJjbGUsLm1hdC1yYWRpby1idXR0b24ubWF0LWFjY2VudCAubWF0LXJhZGlvLXJpcHBsZSAubWF0LXJpcHBsZS1lbGVtZW50Om5vdCgubWF0LXJhZGlvLXBlcnNpc3RlbnQtcmlwcGxlKSwubWF0LXJhZGlvLWJ1dHRvbi5tYXQtYWNjZW50Lm1hdC1yYWRpby1jaGVja2VkIC5tYXQtcmFkaW8tcGVyc2lzdGVudC1yaXBwbGUsLm1hdC1yYWRpby1idXR0b24ubWF0LWFjY2VudDphY3RpdmUgLm1hdC1yYWRpby1wZXJzaXN0ZW50LXJpcHBsZXtiYWNrZ3JvdW5kLWNvbG9yOiNmZjk4MDB9Lm1hdC1yYWRpby1idXR0b24ubWF0LXdhcm4ubWF0LXJhZGlvLWNoZWNrZWQgLm1hdC1yYWRpby1vdXRlci1jaXJjbGV7Ym9yZGVyLWNvbG9yOiNmNDQzMzZ9Lm1hdC1yYWRpby1idXR0b24ubWF0LXdhcm4gLm1hdC1yYWRpby1pbm5lci1jaXJjbGUsLm1hdC1yYWRpby1idXR0b24ubWF0LXdhcm4gLm1hdC1yYWRpby1yaXBwbGUgLm1hdC1yaXBwbGUtZWxlbWVudDpub3QoLm1hdC1yYWRpby1wZXJzaXN0ZW50LXJpcHBsZSksLm1hdC1yYWRpby1idXR0b24ubWF0LXdhcm4ubWF0LXJhZGlvLWNoZWNrZWQgLm1hdC1yYWRpby1wZXJzaXN0ZW50LXJpcHBsZSwubWF0LXJhZGlvLWJ1dHRvbi5tYXQtd2FybjphY3RpdmUgLm1hdC1yYWRpby1wZXJzaXN0ZW50LXJpcHBsZXtiYWNrZ3JvdW5kLWNvbG9yOiNmNDQzMzZ9Lm1hdC1yYWRpby1idXR0b24ubWF0LXJhZGlvLWRpc2FibGVkLm1hdC1yYWRpby1jaGVja2VkIC5tYXQtcmFkaW8tb3V0ZXItY2lyY2xlLC5tYXQtcmFkaW8tYnV0dG9uLm1hdC1yYWRpby1kaXNhYmxlZCAubWF0LXJhZGlvLW91dGVyLWNpcmNsZXtib3JkZXItY29sb3I6cmdiYSgwLDAsMCwuMzgpfS5tYXQtcmFkaW8tYnV0dG9uLm1hdC1yYWRpby1kaXNhYmxlZCAubWF0LXJhZGlvLXJpcHBsZSAubWF0LXJpcHBsZS1lbGVtZW50LC5tYXQtcmFkaW8tYnV0dG9uLm1hdC1yYWRpby1kaXNhYmxlZCAubWF0LXJhZGlvLWlubmVyLWNpcmNsZXtiYWNrZ3JvdW5kLWNvbG9yOnJnYmEoMCwwLDAsLjM4KX0ubWF0LXJhZGlvLWJ1dHRvbi5tYXQtcmFkaW8tZGlzYWJsZWQgLm1hdC1yYWRpby1sYWJlbC1jb250ZW50e2NvbG9yOnJnYmEoMCwwLDAsLjM4KX0ubWF0LXJhZGlvLWJ1dHRvbiAubWF0LXJpcHBsZS1lbGVtZW50e2JhY2tncm91bmQtY29sb3I6IzAwMH0ubWF0LXNlbGVjdC12YWx1ZXtjb2xvcjojMjEyMTIxfS5tYXQtc2VsZWN0LXBsYWNlaG9sZGVye2NvbG9yOnJnYmEoOTcsOTcsOTcsLjQyKX0ubWF0LXNlbGVjdC1kaXNhYmxlZCAubWF0LXNlbGVjdC12YWx1ZXtjb2xvcjojNzU3NTc1fS5tYXQtc2VsZWN0LWFycm93e2NvbG9yOiM2MTYxNjF9Lm1hdC1zZWxlY3QtcGFuZWx7YmFja2dyb3VuZDojZmZmfS5tYXQtc2VsZWN0LXBhbmVsOm5vdChbY2xhc3MqPW1hdC1lbGV2YXRpb24tel0pe2JveC1zaGFkb3c6MHB4IDJweCA0cHggLTFweCByZ2JhKDAsIDAsIDAsIDAuMiksMHB4IDRweCA1cHggMHB4IHJnYmEoMCwgMCwgMCwgMC4xNCksMHB4IDFweCAxMHB4IDBweCByZ2JhKDAsIDAsIDAsIDAuMTIpfS5tYXQtc2VsZWN0LXBhbmVsIC5tYXQtb3B0aW9uLm1hdC1zZWxlY3RlZDpub3QoLm1hdC1vcHRpb24tbXVsdGlwbGUpe2JhY2tncm91bmQ6cmdiYSgwLDAsMCwuMTIpfS5tYXQtZm9ybS1maWVsZC5tYXQtZm9jdXNlZC5tYXQtcHJpbWFyeSAubWF0LXNlbGVjdC1hcnJvd3tjb2xvcjojZjU3YzAwfS5tYXQtZm9ybS1maWVsZC5tYXQtZm9jdXNlZC5tYXQtYWNjZW50IC5tYXQtc2VsZWN0LWFycm93e2NvbG9yOiNmZjk4MDB9Lm1hdC1mb3JtLWZpZWxkLm1hdC1mb2N1c2VkLm1hdC13YXJuIC5tYXQtc2VsZWN0LWFycm93e2NvbG9yOiNmNDQzMzZ9Lm1hdC1mb3JtLWZpZWxkIC5tYXQtc2VsZWN0Lm1hdC1zZWxlY3QtaW52YWxpZCAubWF0LXNlbGVjdC1hcnJvd3tjb2xvcjojZjQ0MzM2fS5tYXQtZm9ybS1maWVsZCAubWF0LXNlbGVjdC5tYXQtc2VsZWN0LWRpc2FibGVkIC5tYXQtc2VsZWN0LWFycm93e2NvbG9yOiM3NTc1NzV9Lm1hdC1kcmF3ZXItY29udGFpbmVye2JhY2tncm91bmQtY29sb3I6I2ZhZmFmYTtjb2xvcjojMjEyMTIxfS5tYXQtZHJhd2Vye2JhY2tncm91bmQtY29sb3I6I2ZmZjtjb2xvcjojMjEyMTIxfS5tYXQtZHJhd2VyLm1hdC1kcmF3ZXItcHVzaHtiYWNrZ3JvdW5kLWNvbG9yOiNmZmZ9Lm1hdC1kcmF3ZXI6bm90KC5tYXQtZHJhd2VyLXNpZGUpe2JveC1zaGFkb3c6MHB4IDhweCAxMHB4IC01cHggcmdiYSgwLCAwLCAwLCAwLjIpLDBweCAxNnB4IDI0cHggMnB4IHJnYmEoMCwgMCwgMCwgMC4xNCksMHB4IDZweCAzMHB4IDVweCByZ2JhKDAsIDAsIDAsIDAuMTIpfS5tYXQtZHJhd2VyLXNpZGV7Ym9yZGVyLXJpZ2h0OnNvbGlkIDFweCByZ2JhKDAsMCwwLC4xMil9Lm1hdC1kcmF3ZXItc2lkZS5tYXQtZHJhd2VyLWVuZHtib3JkZXItbGVmdDpzb2xpZCAxcHggcmdiYSgwLDAsMCwuMTIpO2JvcmRlci1yaWdodDpub25lfVtkaXI9cnRsXSAubWF0LWRyYXdlci1zaWRle2JvcmRlci1sZWZ0OnNvbGlkIDFweCByZ2JhKDAsMCwwLC4xMik7Ym9yZGVyLXJpZ2h0Om5vbmV9W2Rpcj1ydGxdIC5tYXQtZHJhd2VyLXNpZGUubWF0LWRyYXdlci1lbmR7Ym9yZGVyLWxlZnQ6bm9uZTtib3JkZXItcmlnaHQ6c29saWQgMXB4IHJnYmEoMCwwLDAsLjEyKX0ubWF0LWRyYXdlci1iYWNrZHJvcC5tYXQtZHJhd2VyLXNob3due2JhY2tncm91bmQtY29sb3I6cmdiYSgwLDAsMCwuNil9Lm1hdC1zbGlkZS10b2dnbGUubWF0LWNoZWNrZWQgLm1hdC1zbGlkZS10b2dnbGUtdGh1bWJ7YmFja2dyb3VuZC1jb2xvcjojZmY5ODAwfS5tYXQtc2xpZGUtdG9nZ2xlLm1hdC1jaGVja2VkIC5tYXQtc2xpZGUtdG9nZ2xlLWJhcntiYWNrZ3JvdW5kLWNvbG9yOnJnYmEoMjU1LDE1MiwwLC41NCl9Lm1hdC1zbGlkZS10b2dnbGUubWF0LWNoZWNrZWQgLm1hdC1yaXBwbGUtZWxlbWVudHtiYWNrZ3JvdW5kLWNvbG9yOiNmZjk4MDB9Lm1hdC1zbGlkZS10b2dnbGUubWF0LXByaW1hcnkubWF0LWNoZWNrZWQgLm1hdC1zbGlkZS10b2dnbGUtdGh1bWJ7YmFja2dyb3VuZC1jb2xvcjojZjU3YzAwfS5tYXQtc2xpZGUtdG9nZ2xlLm1hdC1wcmltYXJ5Lm1hdC1jaGVja2VkIC5tYXQtc2xpZGUtdG9nZ2xlLWJhcntiYWNrZ3JvdW5kLWNvbG9yOnJnYmEoMjQ1LDEyNCwwLC41NCl9Lm1hdC1zbGlkZS10b2dnbGUubWF0LXByaW1hcnkubWF0LWNoZWNrZWQgLm1hdC1yaXBwbGUtZWxlbWVudHtiYWNrZ3JvdW5kLWNvbG9yOiNmNTdjMDB9Lm1hdC1zbGlkZS10b2dnbGUubWF0LXdhcm4ubWF0LWNoZWNrZWQgLm1hdC1zbGlkZS10b2dnbGUtdGh1bWJ7YmFja2dyb3VuZC1jb2xvcjojZjQ0MzM2fS5tYXQtc2xpZGUtdG9nZ2xlLm1hdC13YXJuLm1hdC1jaGVja2VkIC5tYXQtc2xpZGUtdG9nZ2xlLWJhcntiYWNrZ3JvdW5kLWNvbG9yOnJnYmEoMjQ0LDY3LDU0LC41NCl9Lm1hdC1zbGlkZS10b2dnbGUubWF0LXdhcm4ubWF0LWNoZWNrZWQgLm1hdC1yaXBwbGUtZWxlbWVudHtiYWNrZ3JvdW5kLWNvbG9yOiNmNDQzMzZ9Lm1hdC1zbGlkZS10b2dnbGU6bm90KC5tYXQtY2hlY2tlZCkgLm1hdC1yaXBwbGUtZWxlbWVudHtiYWNrZ3JvdW5kLWNvbG9yOiMwMDB9Lm1hdC1zbGlkZS10b2dnbGUtdGh1bWJ7Ym94LXNoYWRvdzowcHggMnB4IDFweCAtMXB4IHJnYmEoMCwgMCwgMCwgMC4yKSwwcHggMXB4IDFweCAwcHggcmdiYSgwLCAwLCAwLCAwLjE0KSwwcHggMXB4IDNweCAwcHggcmdiYSgwLCAwLCAwLCAwLjEyKTtiYWNrZ3JvdW5kLWNvbG9yOiNmYWZhZmF9Lm1hdC1zbGlkZS10b2dnbGUtYmFye2JhY2tncm91bmQtY29sb3I6cmdiYSgwLDAsMCwuMzgpfS5tYXQtc2xpZGVyLXRyYWNrLWJhY2tncm91bmR7YmFja2dyb3VuZC1jb2xvcjpyZ2JhKDAsMCwwLC4yNil9Lm1hdC1wcmltYXJ5IC5tYXQtc2xpZGVyLXRyYWNrLWZpbGwsLm1hdC1wcmltYXJ5IC5tYXQtc2xpZGVyLXRodW1iLC5tYXQtcHJpbWFyeSAubWF0LXNsaWRlci10aHVtYi1sYWJlbHtiYWNrZ3JvdW5kLWNvbG9yOiNmNTdjMDB9Lm1hdC1wcmltYXJ5IC5tYXQtc2xpZGVyLXRodW1iLWxhYmVsLXRleHR7Y29sb3I6I2ZmZn0ubWF0LXByaW1hcnkgLm1hdC1zbGlkZXItZm9jdXMtcmluZ3tiYWNrZ3JvdW5kLWNvbG9yOnJnYmEoMjQ1LDEyNCwwLC4yKX0ubWF0LWFjY2VudCAubWF0LXNsaWRlci10cmFjay1maWxsLC5tYXQtYWNjZW50IC5tYXQtc2xpZGVyLXRodW1iLC5tYXQtYWNjZW50IC5tYXQtc2xpZGVyLXRodW1iLWxhYmVse2JhY2tncm91bmQtY29sb3I6I2ZmOTgwMH0ubWF0LWFjY2VudCAubWF0LXNsaWRlci10aHVtYi1sYWJlbC10ZXh0e2NvbG9yOiNmZmZ9Lm1hdC1hY2NlbnQgLm1hdC1zbGlkZXItZm9jdXMtcmluZ3tiYWNrZ3JvdW5kLWNvbG9yOnJnYmEoMjU1LDE1MiwwLC4yKX0ubWF0LXdhcm4gLm1hdC1zbGlkZXItdHJhY2stZmlsbCwubWF0LXdhcm4gLm1hdC1zbGlkZXItdGh1bWIsLm1hdC13YXJuIC5tYXQtc2xpZGVyLXRodW1iLWxhYmVse2JhY2tncm91bmQtY29sb3I6I2Y0NDMzNn0ubWF0LXdhcm4gLm1hdC1zbGlkZXItdGh1bWItbGFiZWwtdGV4dHtjb2xvcjojZmZmfS5tYXQtd2FybiAubWF0LXNsaWRlci1mb2N1cy1yaW5ne2JhY2tncm91bmQtY29sb3I6cmdiYSgyNDQsNjcsNTQsLjIpfS5tYXQtc2xpZGVyOmhvdmVyIC5tYXQtc2xpZGVyLXRyYWNrLWJhY2tncm91bmQsLmNkay1mb2N1c2VkIC5tYXQtc2xpZGVyLXRyYWNrLWJhY2tncm91bmR7YmFja2dyb3VuZC1jb2xvcjpyZ2JhKDAsMCwwLC4zOCl9Lm1hdC1zbGlkZXItZGlzYWJsZWQgLm1hdC1zbGlkZXItdHJhY2stYmFja2dyb3VuZCwubWF0LXNsaWRlci1kaXNhYmxlZCAubWF0LXNsaWRlci10cmFjay1maWxsLC5tYXQtc2xpZGVyLWRpc2FibGVkIC5tYXQtc2xpZGVyLXRodW1ie2JhY2tncm91bmQtY29sb3I6cmdiYSgwLDAsMCwuMjYpfS5tYXQtc2xpZGVyLWRpc2FibGVkOmhvdmVyIC5tYXQtc2xpZGVyLXRyYWNrLWJhY2tncm91bmR7YmFja2dyb3VuZC1jb2xvcjpyZ2JhKDAsMCwwLC4yNil9Lm1hdC1zbGlkZXItbWluLXZhbHVlIC5tYXQtc2xpZGVyLWZvY3VzLXJpbmd7YmFja2dyb3VuZC1jb2xvcjpyZ2JhKDAsMCwwLC4xMil9Lm1hdC1zbGlkZXItbWluLXZhbHVlLm1hdC1zbGlkZXItdGh1bWItbGFiZWwtc2hvd2luZyAubWF0LXNsaWRlci10aHVtYiwubWF0LXNsaWRlci1taW4tdmFsdWUubWF0LXNsaWRlci10aHVtYi1sYWJlbC1zaG93aW5nIC5tYXQtc2xpZGVyLXRodW1iLWxhYmVse2JhY2tncm91bmQtY29sb3I6cmdiYSgwLDAsMCwuODcpfS5tYXQtc2xpZGVyLW1pbi12YWx1ZS5tYXQtc2xpZGVyLXRodW1iLWxhYmVsLXNob3dpbmcuY2RrLWZvY3VzZWQgLm1hdC1zbGlkZXItdGh1bWIsLm1hdC1zbGlkZXItbWluLXZhbHVlLm1hdC1zbGlkZXItdGh1bWItbGFiZWwtc2hvd2luZy5jZGstZm9jdXNlZCAubWF0LXNsaWRlci10aHVtYi1sYWJlbHtiYWNrZ3JvdW5kLWNvbG9yOnJnYmEoMCwwLDAsLjI2KX0ubWF0LXNsaWRlci1taW4tdmFsdWU6bm90KC5tYXQtc2xpZGVyLXRodW1iLWxhYmVsLXNob3dpbmcpIC5tYXQtc2xpZGVyLXRodW1ie2JvcmRlci1jb2xvcjpyZ2JhKDAsMCwwLC4yNik7YmFja2dyb3VuZC1jb2xvcjp0cmFuc3BhcmVudH0ubWF0LXNsaWRlci1taW4tdmFsdWU6bm90KC5tYXQtc2xpZGVyLXRodW1iLWxhYmVsLXNob3dpbmcpOmhvdmVyIC5tYXQtc2xpZGVyLXRodW1iLC5tYXQtc2xpZGVyLW1pbi12YWx1ZTpub3QoLm1hdC1zbGlkZXItdGh1bWItbGFiZWwtc2hvd2luZykuY2RrLWZvY3VzZWQgLm1hdC1zbGlkZXItdGh1bWJ7Ym9yZGVyLWNvbG9yOnJnYmEoMCwwLDAsLjM4KX0ubWF0LXNsaWRlci1taW4tdmFsdWU6bm90KC5tYXQtc2xpZGVyLXRodW1iLWxhYmVsLXNob3dpbmcpOmhvdmVyLm1hdC1zbGlkZXItZGlzYWJsZWQgLm1hdC1zbGlkZXItdGh1bWIsLm1hdC1zbGlkZXItbWluLXZhbHVlOm5vdCgubWF0LXNsaWRlci10aHVtYi1sYWJlbC1zaG93aW5nKS5jZGstZm9jdXNlZC5tYXQtc2xpZGVyLWRpc2FibGVkIC5tYXQtc2xpZGVyLXRodW1ie2JvcmRlci1jb2xvcjpyZ2JhKDAsMCwwLC4yNil9Lm1hdC1zbGlkZXItaGFzLXRpY2tzIC5tYXQtc2xpZGVyLXdyYXBwZXI6OmFmdGVye2JvcmRlci1jb2xvcjpyZ2JhKDAsMCwwLC43KX0ubWF0LXNsaWRlci1ob3Jpem9udGFsIC5tYXQtc2xpZGVyLXRpY2tze2JhY2tncm91bmQtaW1hZ2U6cmVwZWF0aW5nLWxpbmVhci1ncmFkaWVudCh0byByaWdodCwgcmdiYSgwLCAwLCAwLCAwLjcpLCByZ2JhKDAsIDAsIDAsIDAuNykgMnB4LCB0cmFuc3BhcmVudCAwLCB0cmFuc3BhcmVudCk7YmFja2dyb3VuZC1pbWFnZTotbW96LXJlcGVhdGluZy1saW5lYXItZ3JhZGllbnQoMC4wMDAxZGVnLCByZ2JhKDAsIDAsIDAsIDAuNyksIHJnYmEoMCwgMCwgMCwgMC43KSAycHgsIHRyYW5zcGFyZW50IDAsIHRyYW5zcGFyZW50KX0ubWF0LXNsaWRlci12ZXJ0aWNhbCAubWF0LXNsaWRlci10aWNrc3tiYWNrZ3JvdW5kLWltYWdlOnJlcGVhdGluZy1saW5lYXItZ3JhZGllbnQodG8gYm90dG9tLCByZ2JhKDAsIDAsIDAsIDAuNyksIHJnYmEoMCwgMCwgMCwgMC43KSAycHgsIHRyYW5zcGFyZW50IDAsIHRyYW5zcGFyZW50KX0ubWF0LXN0ZXAtaGVhZGVyLmNkay1rZXlib2FyZC1mb2N1c2VkLC5tYXQtc3RlcC1oZWFkZXIuY2RrLXByb2dyYW0tZm9jdXNlZCwubWF0LXN0ZXAtaGVhZGVyOmhvdmVye2JhY2tncm91bmQtY29sb3I6cmdiYSgwLDAsMCwuMDQpfUBtZWRpYShob3Zlcjogbm9uZSl7Lm1hdC1zdGVwLWhlYWRlcjpob3ZlcntiYWNrZ3JvdW5kOm5vbmV9fS5tYXQtc3RlcC1oZWFkZXIgLm1hdC1zdGVwLWxhYmVsLC5tYXQtc3RlcC1oZWFkZXIgLm1hdC1zdGVwLW9wdGlvbmFse2NvbG9yOiM2MTYxNjF9Lm1hdC1zdGVwLWhlYWRlciAubWF0LXN0ZXAtaWNvbntiYWNrZ3JvdW5kLWNvbG9yOiM2MTYxNjE7Y29sb3I6I2ZmZn0ubWF0LXN0ZXAtaGVhZGVyIC5tYXQtc3RlcC1pY29uLXNlbGVjdGVkLC5tYXQtc3RlcC1oZWFkZXIgLm1hdC1zdGVwLWljb24tc3RhdGUtZG9uZSwubWF0LXN0ZXAtaGVhZGVyIC5tYXQtc3RlcC1pY29uLXN0YXRlLWVkaXR7YmFja2dyb3VuZC1jb2xvcjojZjU3YzAwO2NvbG9yOiNmZmZ9Lm1hdC1zdGVwLWhlYWRlciAubWF0LXN0ZXAtaWNvbi1zdGF0ZS1lcnJvcntiYWNrZ3JvdW5kLWNvbG9yOnRyYW5zcGFyZW50O2NvbG9yOiNmNDQzMzZ9Lm1hdC1zdGVwLWhlYWRlciAubWF0LXN0ZXAtbGFiZWwubWF0LXN0ZXAtbGFiZWwtYWN0aXZle2NvbG9yOiMyMTIxMjF9Lm1hdC1zdGVwLWhlYWRlciAubWF0LXN0ZXAtbGFiZWwubWF0LXN0ZXAtbGFiZWwtZXJyb3J7Y29sb3I6I2Y0NDMzNn0ubWF0LXN0ZXBwZXItaG9yaXpvbnRhbCwubWF0LXN0ZXBwZXItdmVydGljYWx7YmFja2dyb3VuZC1jb2xvcjojZmZmfS5tYXQtc3RlcHBlci12ZXJ0aWNhbC1saW5lOjpiZWZvcmV7Ym9yZGVyLWxlZnQtY29sb3I6cmdiYSgwLDAsMCwuMTIpfS5tYXQtaG9yaXpvbnRhbC1zdGVwcGVyLWhlYWRlcjo6YmVmb3JlLC5tYXQtaG9yaXpvbnRhbC1zdGVwcGVyLWhlYWRlcjo6YWZ0ZXIsLm1hdC1zdGVwcGVyLWhvcml6b250YWwtbGluZXtib3JkZXItdG9wLWNvbG9yOnJnYmEoMCwwLDAsLjEyKX0ubWF0LWhvcml6b250YWwtc3RlcHBlci1oZWFkZXJ7aGVpZ2h0OjcycHh9Lm1hdC1zdGVwcGVyLWxhYmVsLXBvc2l0aW9uLWJvdHRvbSAubWF0LWhvcml6b250YWwtc3RlcHBlci1oZWFkZXIsLm1hdC12ZXJ0aWNhbC1zdGVwcGVyLWhlYWRlcntwYWRkaW5nOjI0cHggMjRweH0ubWF0LXN0ZXBwZXItdmVydGljYWwtbGluZTo6YmVmb3Jle3RvcDotMTZweDtib3R0b206LTE2cHh9Lm1hdC1zdGVwcGVyLWxhYmVsLXBvc2l0aW9uLWJvdHRvbSAubWF0LWhvcml6b250YWwtc3RlcHBlci1oZWFkZXI6OmFmdGVyLC5tYXQtc3RlcHBlci1sYWJlbC1wb3NpdGlvbi1ib3R0b20gLm1hdC1ob3Jpem9udGFsLXN0ZXBwZXItaGVhZGVyOjpiZWZvcmV7dG9wOjM2cHh9Lm1hdC1zdGVwcGVyLWxhYmVsLXBvc2l0aW9uLWJvdHRvbSAubWF0LXN0ZXBwZXItaG9yaXpvbnRhbC1saW5le3RvcDozNnB4fS5tYXQtc29ydC1oZWFkZXItYXJyb3d7Y29sb3I6IzYxNjE2MX0ubWF0LXRhYi1uYXYtYmFyLC5tYXQtdGFiLWhlYWRlcntib3JkZXItYm90dG9tOjFweCBzb2xpZCByZ2JhKDAsMCwwLC4xMil9Lm1hdC10YWItZ3JvdXAtaW52ZXJ0ZWQtaGVhZGVyIC5tYXQtdGFiLW5hdi1iYXIsLm1hdC10YWItZ3JvdXAtaW52ZXJ0ZWQtaGVhZGVyIC5tYXQtdGFiLWhlYWRlcntib3JkZXItdG9wOjFweCBzb2xpZCByZ2JhKDAsMCwwLC4xMik7Ym9yZGVyLWJvdHRvbTpub25lfS5tYXQtdGFiLWxhYmVsLC5tYXQtdGFiLWxpbmt7Y29sb3I6IzIxMjEyMX0ubWF0LXRhYi1sYWJlbC5tYXQtdGFiLWRpc2FibGVkLC5tYXQtdGFiLWxpbmsubWF0LXRhYi1kaXNhYmxlZHtjb2xvcjojNzU3NTc1fS5tYXQtdGFiLWhlYWRlci1wYWdpbmF0aW9uLWNoZXZyb257Ym9yZGVyLWNvbG9yOiMyMTIxMjF9Lm1hdC10YWItaGVhZGVyLXBhZ2luYXRpb24tZGlzYWJsZWQgLm1hdC10YWItaGVhZGVyLXBhZ2luYXRpb24tY2hldnJvbntib3JkZXItY29sb3I6Izc1NzU3NX0ubWF0LXRhYi1ncm91cFtjbGFzcyo9bWF0LWJhY2tncm91bmQtXSAubWF0LXRhYi1oZWFkZXIsLm1hdC10YWItbmF2LWJhcltjbGFzcyo9bWF0LWJhY2tncm91bmQtXXtib3JkZXItYm90dG9tOm5vbmU7Ym9yZGVyLXRvcDpub25lfS5tYXQtdGFiLWdyb3VwLm1hdC1wcmltYXJ5IC5tYXQtdGFiLWxhYmVsLmNkay1rZXlib2FyZC1mb2N1c2VkOm5vdCgubWF0LXRhYi1kaXNhYmxlZCksLm1hdC10YWItZ3JvdXAubWF0LXByaW1hcnkgLm1hdC10YWItbGFiZWwuY2RrLXByb2dyYW0tZm9jdXNlZDpub3QoLm1hdC10YWItZGlzYWJsZWQpLC5tYXQtdGFiLWdyb3VwLm1hdC1wcmltYXJ5IC5tYXQtdGFiLWxpbmsuY2RrLWtleWJvYXJkLWZvY3VzZWQ6bm90KC5tYXQtdGFiLWRpc2FibGVkKSwubWF0LXRhYi1ncm91cC5tYXQtcHJpbWFyeSAubWF0LXRhYi1saW5rLmNkay1wcm9ncmFtLWZvY3VzZWQ6bm90KC5tYXQtdGFiLWRpc2FibGVkKSwubWF0LXRhYi1uYXYtYmFyLm1hdC1wcmltYXJ5IC5tYXQtdGFiLWxhYmVsLmNkay1rZXlib2FyZC1mb2N1c2VkOm5vdCgubWF0LXRhYi1kaXNhYmxlZCksLm1hdC10YWItbmF2LWJhci5tYXQtcHJpbWFyeSAubWF0LXRhYi1sYWJlbC5jZGstcHJvZ3JhbS1mb2N1c2VkOm5vdCgubWF0LXRhYi1kaXNhYmxlZCksLm1hdC10YWItbmF2LWJhci5tYXQtcHJpbWFyeSAubWF0LXRhYi1saW5rLmNkay1rZXlib2FyZC1mb2N1c2VkOm5vdCgubWF0LXRhYi1kaXNhYmxlZCksLm1hdC10YWItbmF2LWJhci5tYXQtcHJpbWFyeSAubWF0LXRhYi1saW5rLmNkay1wcm9ncmFtLWZvY3VzZWQ6bm90KC5tYXQtdGFiLWRpc2FibGVkKXtiYWNrZ3JvdW5kLWNvbG9yOnJnYmEoMjU1LDE1MiwwLC4zKX0ubWF0LXRhYi1ncm91cC5tYXQtcHJpbWFyeSAubWF0LWluay1iYXIsLm1hdC10YWItbmF2LWJhci5tYXQtcHJpbWFyeSAubWF0LWluay1iYXJ7YmFja2dyb3VuZC1jb2xvcjojZjU3YzAwfS5tYXQtdGFiLWdyb3VwLm1hdC1wcmltYXJ5Lm1hdC1iYWNrZ3JvdW5kLXByaW1hcnkgLm1hdC1pbmstYmFyLC5tYXQtdGFiLW5hdi1iYXIubWF0LXByaW1hcnkubWF0LWJhY2tncm91bmQtcHJpbWFyeSAubWF0LWluay1iYXJ7YmFja2dyb3VuZC1jb2xvcjojZmZmfS5tYXQtdGFiLWdyb3VwLm1hdC1hY2NlbnQgLm1hdC10YWItbGFiZWwuY2RrLWtleWJvYXJkLWZvY3VzZWQ6bm90KC5tYXQtdGFiLWRpc2FibGVkKSwubWF0LXRhYi1ncm91cC5tYXQtYWNjZW50IC5tYXQtdGFiLWxhYmVsLmNkay1wcm9ncmFtLWZvY3VzZWQ6bm90KC5tYXQtdGFiLWRpc2FibGVkKSwubWF0LXRhYi1ncm91cC5tYXQtYWNjZW50IC5tYXQtdGFiLWxpbmsuY2RrLWtleWJvYXJkLWZvY3VzZWQ6bm90KC5tYXQtdGFiLWRpc2FibGVkKSwubWF0LXRhYi1ncm91cC5tYXQtYWNjZW50IC5tYXQtdGFiLWxpbmsuY2RrLXByb2dyYW0tZm9jdXNlZDpub3QoLm1hdC10YWItZGlzYWJsZWQpLC5tYXQtdGFiLW5hdi1iYXIubWF0LWFjY2VudCAubWF0LXRhYi1sYWJlbC5jZGsta2V5Ym9hcmQtZm9jdXNlZDpub3QoLm1hdC10YWItZGlzYWJsZWQpLC5tYXQtdGFiLW5hdi1iYXIubWF0LWFjY2VudCAubWF0LXRhYi1sYWJlbC5jZGstcHJvZ3JhbS1mb2N1c2VkOm5vdCgubWF0LXRhYi1kaXNhYmxlZCksLm1hdC10YWItbmF2LWJhci5tYXQtYWNjZW50IC5tYXQtdGFiLWxpbmsuY2RrLWtleWJvYXJkLWZvY3VzZWQ6bm90KC5tYXQtdGFiLWRpc2FibGVkKSwubWF0LXRhYi1uYXYtYmFyLm1hdC1hY2NlbnQgLm1hdC10YWItbGluay5jZGstcHJvZ3JhbS1mb2N1c2VkOm5vdCgubWF0LXRhYi1kaXNhYmxlZCl7YmFja2dyb3VuZC1jb2xvcjpyZ2JhKDI1NSwxNTIsMCwuMyl9Lm1hdC10YWItZ3JvdXAubWF0LWFjY2VudCAubWF0LWluay1iYXIsLm1hdC10YWItbmF2LWJhci5tYXQtYWNjZW50IC5tYXQtaW5rLWJhcntiYWNrZ3JvdW5kLWNvbG9yOiNmZjk4MDB9Lm1hdC10YWItZ3JvdXAubWF0LWFjY2VudC5tYXQtYmFja2dyb3VuZC1hY2NlbnQgLm1hdC1pbmstYmFyLC5tYXQtdGFiLW5hdi1iYXIubWF0LWFjY2VudC5tYXQtYmFja2dyb3VuZC1hY2NlbnQgLm1hdC1pbmstYmFye2JhY2tncm91bmQtY29sb3I6I2ZmZn0ubWF0LXRhYi1ncm91cC5tYXQtd2FybiAubWF0LXRhYi1sYWJlbC5jZGsta2V5Ym9hcmQtZm9jdXNlZDpub3QoLm1hdC10YWItZGlzYWJsZWQpLC5tYXQtdGFiLWdyb3VwLm1hdC13YXJuIC5tYXQtdGFiLWxhYmVsLmNkay1wcm9ncmFtLWZvY3VzZWQ6bm90KC5tYXQtdGFiLWRpc2FibGVkKSwubWF0LXRhYi1ncm91cC5tYXQtd2FybiAubWF0LXRhYi1saW5rLmNkay1rZXlib2FyZC1mb2N1c2VkOm5vdCgubWF0LXRhYi1kaXNhYmxlZCksLm1hdC10YWItZ3JvdXAubWF0LXdhcm4gLm1hdC10YWItbGluay5jZGstcHJvZ3JhbS1mb2N1c2VkOm5vdCgubWF0LXRhYi1kaXNhYmxlZCksLm1hdC10YWItbmF2LWJhci5tYXQtd2FybiAubWF0LXRhYi1sYWJlbC5jZGsta2V5Ym9hcmQtZm9jdXNlZDpub3QoLm1hdC10YWItZGlzYWJsZWQpLC5tYXQtdGFiLW5hdi1iYXIubWF0LXdhcm4gLm1hdC10YWItbGFiZWwuY2RrLXByb2dyYW0tZm9jdXNlZDpub3QoLm1hdC10YWItZGlzYWJsZWQpLC5tYXQtdGFiLW5hdi1iYXIubWF0LXdhcm4gLm1hdC10YWItbGluay5jZGsta2V5Ym9hcmQtZm9jdXNlZDpub3QoLm1hdC10YWItZGlzYWJsZWQpLC5tYXQtdGFiLW5hdi1iYXIubWF0LXdhcm4gLm1hdC10YWItbGluay5jZGstcHJvZ3JhbS1mb2N1c2VkOm5vdCgubWF0LXRhYi1kaXNhYmxlZCl7YmFja2dyb3VuZC1jb2xvcjpyZ2JhKDI1NSwyMDUsMjEwLC4zKX0ubWF0LXRhYi1ncm91cC5tYXQtd2FybiAubWF0LWluay1iYXIsLm1hdC10YWItbmF2LWJhci5tYXQtd2FybiAubWF0LWluay1iYXJ7YmFja2dyb3VuZC1jb2xvcjojZjQ0MzM2fS5tYXQtdGFiLWdyb3VwLm1hdC13YXJuLm1hdC1iYWNrZ3JvdW5kLXdhcm4gLm1hdC1pbmstYmFyLC5tYXQtdGFiLW5hdi1iYXIubWF0LXdhcm4ubWF0LWJhY2tncm91bmQtd2FybiAubWF0LWluay1iYXJ7YmFja2dyb3VuZC1jb2xvcjojZmZmfS5tYXQtdGFiLWdyb3VwLm1hdC1iYWNrZ3JvdW5kLXByaW1hcnkgLm1hdC10YWItbGFiZWwuY2RrLWtleWJvYXJkLWZvY3VzZWQ6bm90KC5tYXQtdGFiLWRpc2FibGVkKSwubWF0LXRhYi1ncm91cC5tYXQtYmFja2dyb3VuZC1wcmltYXJ5IC5tYXQtdGFiLWxhYmVsLmNkay1wcm9ncmFtLWZvY3VzZWQ6bm90KC5tYXQtdGFiLWRpc2FibGVkKSwubWF0LXRhYi1ncm91cC5tYXQtYmFja2dyb3VuZC1wcmltYXJ5IC5tYXQtdGFiLWxpbmsuY2RrLWtleWJvYXJkLWZvY3VzZWQ6bm90KC5tYXQtdGFiLWRpc2FibGVkKSwubWF0LXRhYi1ncm91cC5tYXQtYmFja2dyb3VuZC1wcmltYXJ5IC5tYXQtdGFiLWxpbmsuY2RrLXByb2dyYW0tZm9jdXNlZDpub3QoLm1hdC10YWItZGlzYWJsZWQpLC5tYXQtdGFiLW5hdi1iYXIubWF0LWJhY2tncm91bmQtcHJpbWFyeSAubWF0LXRhYi1sYWJlbC5jZGsta2V5Ym9hcmQtZm9jdXNlZDpub3QoLm1hdC10YWItZGlzYWJsZWQpLC5tYXQtdGFiLW5hdi1iYXIubWF0LWJhY2tncm91bmQtcHJpbWFyeSAubWF0LXRhYi1sYWJlbC5jZGstcHJvZ3JhbS1mb2N1c2VkOm5vdCgubWF0LXRhYi1kaXNhYmxlZCksLm1hdC10YWItbmF2LWJhci5tYXQtYmFja2dyb3VuZC1wcmltYXJ5IC5tYXQtdGFiLWxpbmsuY2RrLWtleWJvYXJkLWZvY3VzZWQ6bm90KC5tYXQtdGFiLWRpc2FibGVkKSwubWF0LXRhYi1uYXYtYmFyLm1hdC1iYWNrZ3JvdW5kLXByaW1hcnkgLm1hdC10YWItbGluay5jZGstcHJvZ3JhbS1mb2N1c2VkOm5vdCgubWF0LXRhYi1kaXNhYmxlZCl7YmFja2dyb3VuZC1jb2xvcjpyZ2JhKDI1NSwxNTIsMCwuMyl9Lm1hdC10YWItZ3JvdXAubWF0LWJhY2tncm91bmQtcHJpbWFyeSAubWF0LXRhYi1oZWFkZXIsLm1hdC10YWItZ3JvdXAubWF0LWJhY2tncm91bmQtcHJpbWFyeSAubWF0LXRhYi1saW5rcywubWF0LXRhYi1ncm91cC5tYXQtYmFja2dyb3VuZC1wcmltYXJ5IC5tYXQtdGFiLWhlYWRlci1wYWdpbmF0aW9uLC5tYXQtdGFiLW5hdi1iYXIubWF0LWJhY2tncm91bmQtcHJpbWFyeSAubWF0LXRhYi1oZWFkZXIsLm1hdC10YWItbmF2LWJhci5tYXQtYmFja2dyb3VuZC1wcmltYXJ5IC5tYXQtdGFiLWxpbmtzLC5tYXQtdGFiLW5hdi1iYXIubWF0LWJhY2tncm91bmQtcHJpbWFyeSAubWF0LXRhYi1oZWFkZXItcGFnaW5hdGlvbntiYWNrZ3JvdW5kLWNvbG9yOiNmNTdjMDB9Lm1hdC10YWItZ3JvdXAubWF0LWJhY2tncm91bmQtcHJpbWFyeSAubWF0LXRhYi1sYWJlbCwubWF0LXRhYi1ncm91cC5tYXQtYmFja2dyb3VuZC1wcmltYXJ5IC5tYXQtdGFiLWxpbmssLm1hdC10YWItbmF2LWJhci5tYXQtYmFja2dyb3VuZC1wcmltYXJ5IC5tYXQtdGFiLWxhYmVsLC5tYXQtdGFiLW5hdi1iYXIubWF0LWJhY2tncm91bmQtcHJpbWFyeSAubWF0LXRhYi1saW5re2NvbG9yOiNmZmZ9Lm1hdC10YWItZ3JvdXAubWF0LWJhY2tncm91bmQtcHJpbWFyeSAubWF0LXRhYi1sYWJlbC5tYXQtdGFiLWRpc2FibGVkLC5tYXQtdGFiLWdyb3VwLm1hdC1iYWNrZ3JvdW5kLXByaW1hcnkgLm1hdC10YWItbGluay5tYXQtdGFiLWRpc2FibGVkLC5tYXQtdGFiLW5hdi1iYXIubWF0LWJhY2tncm91bmQtcHJpbWFyeSAubWF0LXRhYi1sYWJlbC5tYXQtdGFiLWRpc2FibGVkLC5tYXQtdGFiLW5hdi1iYXIubWF0LWJhY2tncm91bmQtcHJpbWFyeSAubWF0LXRhYi1saW5rLm1hdC10YWItZGlzYWJsZWR7Y29sb3I6cmdiYSgyNTUsMjU1LDI1NSwuNCl9Lm1hdC10YWItZ3JvdXAubWF0LWJhY2tncm91bmQtcHJpbWFyeSAubWF0LXRhYi1oZWFkZXItcGFnaW5hdGlvbi1jaGV2cm9uLC5tYXQtdGFiLW5hdi1iYXIubWF0LWJhY2tncm91bmQtcHJpbWFyeSAubWF0LXRhYi1oZWFkZXItcGFnaW5hdGlvbi1jaGV2cm9ue2JvcmRlci1jb2xvcjojZmZmfS5tYXQtdGFiLWdyb3VwLm1hdC1iYWNrZ3JvdW5kLXByaW1hcnkgLm1hdC10YWItaGVhZGVyLXBhZ2luYXRpb24tZGlzYWJsZWQgLm1hdC10YWItaGVhZGVyLXBhZ2luYXRpb24tY2hldnJvbiwubWF0LXRhYi1uYXYtYmFyLm1hdC1iYWNrZ3JvdW5kLXByaW1hcnkgLm1hdC10YWItaGVhZGVyLXBhZ2luYXRpb24tZGlzYWJsZWQgLm1hdC10YWItaGVhZGVyLXBhZ2luYXRpb24tY2hldnJvbntib3JkZXItY29sb3I6cmdiYSgyNTUsMjU1LDI1NSwuNCl9Lm1hdC10YWItZ3JvdXAubWF0LWJhY2tncm91bmQtcHJpbWFyeSAubWF0LXJpcHBsZS1lbGVtZW50LC5tYXQtdGFiLW5hdi1iYXIubWF0LWJhY2tncm91bmQtcHJpbWFyeSAubWF0LXJpcHBsZS1lbGVtZW50e2JhY2tncm91bmQtY29sb3I6cmdiYSgyNTUsMjU1LDI1NSwuMTIpfS5tYXQtdGFiLWdyb3VwLm1hdC1iYWNrZ3JvdW5kLWFjY2VudCAubWF0LXRhYi1sYWJlbC5jZGsta2V5Ym9hcmQtZm9jdXNlZDpub3QoLm1hdC10YWItZGlzYWJsZWQpLC5tYXQtdGFiLWdyb3VwLm1hdC1iYWNrZ3JvdW5kLWFjY2VudCAubWF0LXRhYi1sYWJlbC5jZGstcHJvZ3JhbS1mb2N1c2VkOm5vdCgubWF0LXRhYi1kaXNhYmxlZCksLm1hdC10YWItZ3JvdXAubWF0LWJhY2tncm91bmQtYWNjZW50IC5tYXQtdGFiLWxpbmsuY2RrLWtleWJvYXJkLWZvY3VzZWQ6bm90KC5tYXQtdGFiLWRpc2FibGVkKSwubWF0LXRhYi1ncm91cC5tYXQtYmFja2dyb3VuZC1hY2NlbnQgLm1hdC10YWItbGluay5jZGstcHJvZ3JhbS1mb2N1c2VkOm5vdCgubWF0LXRhYi1kaXNhYmxlZCksLm1hdC10YWItbmF2LWJhci5tYXQtYmFja2dyb3VuZC1hY2NlbnQgLm1hdC10YWItbGFiZWwuY2RrLWtleWJvYXJkLWZvY3VzZWQ6bm90KC5tYXQtdGFiLWRpc2FibGVkKSwubWF0LXRhYi1uYXYtYmFyLm1hdC1iYWNrZ3JvdW5kLWFjY2VudCAubWF0LXRhYi1sYWJlbC5jZGstcHJvZ3JhbS1mb2N1c2VkOm5vdCgubWF0LXRhYi1kaXNhYmxlZCksLm1hdC10YWItbmF2LWJhci5tYXQtYmFja2dyb3VuZC1hY2NlbnQgLm1hdC10YWItbGluay5jZGsta2V5Ym9hcmQtZm9jdXNlZDpub3QoLm1hdC10YWItZGlzYWJsZWQpLC5tYXQtdGFiLW5hdi1iYXIubWF0LWJhY2tncm91bmQtYWNjZW50IC5tYXQtdGFiLWxpbmsuY2RrLXByb2dyYW0tZm9jdXNlZDpub3QoLm1hdC10YWItZGlzYWJsZWQpe2JhY2tncm91bmQtY29sb3I6cmdiYSgyNTUsMTUyLDAsLjMpfS5tYXQtdGFiLWdyb3VwLm1hdC1iYWNrZ3JvdW5kLWFjY2VudCAubWF0LXRhYi1oZWFkZXIsLm1hdC10YWItZ3JvdXAubWF0LWJhY2tncm91bmQtYWNjZW50IC5tYXQtdGFiLWxpbmtzLC5tYXQtdGFiLWdyb3VwLm1hdC1iYWNrZ3JvdW5kLWFjY2VudCAubWF0LXRhYi1oZWFkZXItcGFnaW5hdGlvbiwubWF0LXRhYi1uYXYtYmFyLm1hdC1iYWNrZ3JvdW5kLWFjY2VudCAubWF0LXRhYi1oZWFkZXIsLm1hdC10YWItbmF2LWJhci5tYXQtYmFja2dyb3VuZC1hY2NlbnQgLm1hdC10YWItbGlua3MsLm1hdC10YWItbmF2LWJhci5tYXQtYmFja2dyb3VuZC1hY2NlbnQgLm1hdC10YWItaGVhZGVyLXBhZ2luYXRpb257YmFja2dyb3VuZC1jb2xvcjojZmY5ODAwfS5tYXQtdGFiLWdyb3VwLm1hdC1iYWNrZ3JvdW5kLWFjY2VudCAubWF0LXRhYi1sYWJlbCwubWF0LXRhYi1ncm91cC5tYXQtYmFja2dyb3VuZC1hY2NlbnQgLm1hdC10YWItbGluaywubWF0LXRhYi1uYXYtYmFyLm1hdC1iYWNrZ3JvdW5kLWFjY2VudCAubWF0LXRhYi1sYWJlbCwubWF0LXRhYi1uYXYtYmFyLm1hdC1iYWNrZ3JvdW5kLWFjY2VudCAubWF0LXRhYi1saW5re2NvbG9yOiNmZmZ9Lm1hdC10YWItZ3JvdXAubWF0LWJhY2tncm91bmQtYWNjZW50IC5tYXQtdGFiLWxhYmVsLm1hdC10YWItZGlzYWJsZWQsLm1hdC10YWItZ3JvdXAubWF0LWJhY2tncm91bmQtYWNjZW50IC5tYXQtdGFiLWxpbmsubWF0LXRhYi1kaXNhYmxlZCwubWF0LXRhYi1uYXYtYmFyLm1hdC1iYWNrZ3JvdW5kLWFjY2VudCAubWF0LXRhYi1sYWJlbC5tYXQtdGFiLWRpc2FibGVkLC5tYXQtdGFiLW5hdi1iYXIubWF0LWJhY2tncm91bmQtYWNjZW50IC5tYXQtdGFiLWxpbmsubWF0LXRhYi1kaXNhYmxlZHtjb2xvcjpyZ2JhKDI1NSwyNTUsMjU1LC40KX0ubWF0LXRhYi1ncm91cC5tYXQtYmFja2dyb3VuZC1hY2NlbnQgLm1hdC10YWItaGVhZGVyLXBhZ2luYXRpb24tY2hldnJvbiwubWF0LXRhYi1uYXYtYmFyLm1hdC1iYWNrZ3JvdW5kLWFjY2VudCAubWF0LXRhYi1oZWFkZXItcGFnaW5hdGlvbi1jaGV2cm9ue2JvcmRlci1jb2xvcjojZmZmfS5tYXQtdGFiLWdyb3VwLm1hdC1iYWNrZ3JvdW5kLWFjY2VudCAubWF0LXRhYi1oZWFkZXItcGFnaW5hdGlvbi1kaXNhYmxlZCAubWF0LXRhYi1oZWFkZXItcGFnaW5hdGlvbi1jaGV2cm9uLC5tYXQtdGFiLW5hdi1iYXIubWF0LWJhY2tncm91bmQtYWNjZW50IC5tYXQtdGFiLWhlYWRlci1wYWdpbmF0aW9uLWRpc2FibGVkIC5tYXQtdGFiLWhlYWRlci1wYWdpbmF0aW9uLWNoZXZyb257Ym9yZGVyLWNvbG9yOnJnYmEoMjU1LDI1NSwyNTUsLjQpfS5tYXQtdGFiLWdyb3VwLm1hdC1iYWNrZ3JvdW5kLWFjY2VudCAubWF0LXJpcHBsZS1lbGVtZW50LC5tYXQtdGFiLW5hdi1iYXIubWF0LWJhY2tncm91bmQtYWNjZW50IC5tYXQtcmlwcGxlLWVsZW1lbnR7YmFja2dyb3VuZC1jb2xvcjpyZ2JhKDI1NSwyNTUsMjU1LC4xMil9Lm1hdC10YWItZ3JvdXAubWF0LWJhY2tncm91bmQtd2FybiAubWF0LXRhYi1sYWJlbC5jZGsta2V5Ym9hcmQtZm9jdXNlZDpub3QoLm1hdC10YWItZGlzYWJsZWQpLC5tYXQtdGFiLWdyb3VwLm1hdC1iYWNrZ3JvdW5kLXdhcm4gLm1hdC10YWItbGFiZWwuY2RrLXByb2dyYW0tZm9jdXNlZDpub3QoLm1hdC10YWItZGlzYWJsZWQpLC5tYXQtdGFiLWdyb3VwLm1hdC1iYWNrZ3JvdW5kLXdhcm4gLm1hdC10YWItbGluay5jZGsta2V5Ym9hcmQtZm9jdXNlZDpub3QoLm1hdC10YWItZGlzYWJsZWQpLC5tYXQtdGFiLWdyb3VwLm1hdC1iYWNrZ3JvdW5kLXdhcm4gLm1hdC10YWItbGluay5jZGstcHJvZ3JhbS1mb2N1c2VkOm5vdCgubWF0LXRhYi1kaXNhYmxlZCksLm1hdC10YWItbmF2LWJhci5tYXQtYmFja2dyb3VuZC13YXJuIC5tYXQtdGFiLWxhYmVsLmNkay1rZXlib2FyZC1mb2N1c2VkOm5vdCgubWF0LXRhYi1kaXNhYmxlZCksLm1hdC10YWItbmF2LWJhci5tYXQtYmFja2dyb3VuZC13YXJuIC5tYXQtdGFiLWxhYmVsLmNkay1wcm9ncmFtLWZvY3VzZWQ6bm90KC5tYXQtdGFiLWRpc2FibGVkKSwubWF0LXRhYi1uYXYtYmFyLm1hdC1iYWNrZ3JvdW5kLXdhcm4gLm1hdC10YWItbGluay5jZGsta2V5Ym9hcmQtZm9jdXNlZDpub3QoLm1hdC10YWItZGlzYWJsZWQpLC5tYXQtdGFiLW5hdi1iYXIubWF0LWJhY2tncm91bmQtd2FybiAubWF0LXRhYi1saW5rLmNkay1wcm9ncmFtLWZvY3VzZWQ6bm90KC5tYXQtdGFiLWRpc2FibGVkKXtiYWNrZ3JvdW5kLWNvbG9yOnJnYmEoMjU1LDIwNSwyMTAsLjMpfS5tYXQtdGFiLWdyb3VwLm1hdC1iYWNrZ3JvdW5kLXdhcm4gLm1hdC10YWItaGVhZGVyLC5tYXQtdGFiLWdyb3VwLm1hdC1iYWNrZ3JvdW5kLXdhcm4gLm1hdC10YWItbGlua3MsLm1hdC10YWItZ3JvdXAubWF0LWJhY2tncm91bmQtd2FybiAubWF0LXRhYi1oZWFkZXItcGFnaW5hdGlvbiwubWF0LXRhYi1uYXYtYmFyLm1hdC1iYWNrZ3JvdW5kLXdhcm4gLm1hdC10YWItaGVhZGVyLC5tYXQtdGFiLW5hdi1iYXIubWF0LWJhY2tncm91bmQtd2FybiAubWF0LXRhYi1saW5rcywubWF0LXRhYi1uYXYtYmFyLm1hdC1iYWNrZ3JvdW5kLXdhcm4gLm1hdC10YWItaGVhZGVyLXBhZ2luYXRpb257YmFja2dyb3VuZC1jb2xvcjojZjQ0MzM2fS5tYXQtdGFiLWdyb3VwLm1hdC1iYWNrZ3JvdW5kLXdhcm4gLm1hdC10YWItbGFiZWwsLm1hdC10YWItZ3JvdXAubWF0LWJhY2tncm91bmQtd2FybiAubWF0LXRhYi1saW5rLC5tYXQtdGFiLW5hdi1iYXIubWF0LWJhY2tncm91bmQtd2FybiAubWF0LXRhYi1sYWJlbCwubWF0LXRhYi1uYXYtYmFyLm1hdC1iYWNrZ3JvdW5kLXdhcm4gLm1hdC10YWItbGlua3tjb2xvcjojZmZmfS5tYXQtdGFiLWdyb3VwLm1hdC1iYWNrZ3JvdW5kLXdhcm4gLm1hdC10YWItbGFiZWwubWF0LXRhYi1kaXNhYmxlZCwubWF0LXRhYi1ncm91cC5tYXQtYmFja2dyb3VuZC13YXJuIC5tYXQtdGFiLWxpbmsubWF0LXRhYi1kaXNhYmxlZCwubWF0LXRhYi1uYXYtYmFyLm1hdC1iYWNrZ3JvdW5kLXdhcm4gLm1hdC10YWItbGFiZWwubWF0LXRhYi1kaXNhYmxlZCwubWF0LXRhYi1uYXYtYmFyLm1hdC1iYWNrZ3JvdW5kLXdhcm4gLm1hdC10YWItbGluay5tYXQtdGFiLWRpc2FibGVke2NvbG9yOnJnYmEoMjU1LDI1NSwyNTUsLjQpfS5tYXQtdGFiLWdyb3VwLm1hdC1iYWNrZ3JvdW5kLXdhcm4gLm1hdC10YWItaGVhZGVyLXBhZ2luYXRpb24tY2hldnJvbiwubWF0LXRhYi1uYXYtYmFyLm1hdC1iYWNrZ3JvdW5kLXdhcm4gLm1hdC10YWItaGVhZGVyLXBhZ2luYXRpb24tY2hldnJvbntib3JkZXItY29sb3I6I2ZmZn0ubWF0LXRhYi1ncm91cC5tYXQtYmFja2dyb3VuZC13YXJuIC5tYXQtdGFiLWhlYWRlci1wYWdpbmF0aW9uLWRpc2FibGVkIC5tYXQtdGFiLWhlYWRlci1wYWdpbmF0aW9uLWNoZXZyb24sLm1hdC10YWItbmF2LWJhci5tYXQtYmFja2dyb3VuZC13YXJuIC5tYXQtdGFiLWhlYWRlci1wYWdpbmF0aW9uLWRpc2FibGVkIC5tYXQtdGFiLWhlYWRlci1wYWdpbmF0aW9uLWNoZXZyb257Ym9yZGVyLWNvbG9yOnJnYmEoMjU1LDI1NSwyNTUsLjQpfS5tYXQtdGFiLWdyb3VwLm1hdC1iYWNrZ3JvdW5kLXdhcm4gLm1hdC1yaXBwbGUtZWxlbWVudCwubWF0LXRhYi1uYXYtYmFyLm1hdC1iYWNrZ3JvdW5kLXdhcm4gLm1hdC1yaXBwbGUtZWxlbWVudHtiYWNrZ3JvdW5kLWNvbG9yOnJnYmEoMjU1LDI1NSwyNTUsLjEyKX0ubWF0LXRvb2xiYXJ7YmFja2dyb3VuZDojZjVmNWY1O2NvbG9yOiMyMTIxMjF9Lm1hdC10b29sYmFyLm1hdC1wcmltYXJ5e2JhY2tncm91bmQ6I2Y1N2MwMDtjb2xvcjojZmZmfS5tYXQtdG9vbGJhci5tYXQtYWNjZW50e2JhY2tncm91bmQ6I2ZmOTgwMDtjb2xvcjojZmZmfS5tYXQtdG9vbGJhci5tYXQtd2FybntiYWNrZ3JvdW5kOiNmNDQzMzY7Y29sb3I6I2ZmZn0ubWF0LXRvb2xiYXIgLm1hdC1mb3JtLWZpZWxkLXVuZGVybGluZSwubWF0LXRvb2xiYXIgLm1hdC1mb3JtLWZpZWxkLXJpcHBsZSwubWF0LXRvb2xiYXIgLm1hdC1mb2N1c2VkIC5tYXQtZm9ybS1maWVsZC1yaXBwbGV7YmFja2dyb3VuZC1jb2xvcjpjdXJyZW50Q29sb3J9Lm1hdC10b29sYmFyIC5tYXQtZm9ybS1maWVsZC1sYWJlbCwubWF0LXRvb2xiYXIgLm1hdC1mb2N1c2VkIC5tYXQtZm9ybS1maWVsZC1sYWJlbCwubWF0LXRvb2xiYXIgLm1hdC1zZWxlY3QtdmFsdWUsLm1hdC10b29sYmFyIC5tYXQtc2VsZWN0LWFycm93LC5tYXQtdG9vbGJhciAubWF0LWZvcm0tZmllbGQubWF0LWZvY3VzZWQgLm1hdC1zZWxlY3QtYXJyb3d7Y29sb3I6aW5oZXJpdH0ubWF0LXRvb2xiYXIgLm1hdC1pbnB1dC1lbGVtZW50e2NhcmV0LWNvbG9yOmN1cnJlbnRDb2xvcn0ubWF0LXRvb2xiYXItbXVsdGlwbGUtcm93c3ttaW4taGVpZ2h0OjY0cHh9Lm1hdC10b29sYmFyLXJvdywubWF0LXRvb2xiYXItc2luZ2xlLXJvd3toZWlnaHQ6NjRweH1AbWVkaWEobWF4LXdpZHRoOiA1OTlweCl7Lm1hdC10b29sYmFyLW11bHRpcGxlLXJvd3N7bWluLWhlaWdodDo1NnB4fS5tYXQtdG9vbGJhci1yb3csLm1hdC10b29sYmFyLXNpbmdsZS1yb3d7aGVpZ2h0OjU2cHh9fS5tYXQtdG9vbHRpcHtiYWNrZ3JvdW5kOnJnYmEoOTcsOTcsOTcsLjkpfS5tYXQtdHJlZXtiYWNrZ3JvdW5kOiNmZmZ9Lm1hdC10cmVlLW5vZGUsLm1hdC1uZXN0ZWQtdHJlZS1ub2Rle2NvbG9yOiMyMTIxMjF9Lm1hdC10cmVlLW5vZGV7bWluLWhlaWdodDo0OHB4fS5tYXQtc25hY2stYmFyLWNvbnRhaW5lcntjb2xvcjpyZ2JhKDI1NSwyNTUsMjU1LC43KTtiYWNrZ3JvdW5kOiMzMjMyMzI7Ym94LXNoYWRvdzowcHggM3B4IDVweCAtMXB4IHJnYmEoMCwgMCwgMCwgMC4yKSwwcHggNnB4IDEwcHggMHB4IHJnYmEoMCwgMCwgMCwgMC4xNCksMHB4IDFweCAxOHB4IDBweCByZ2JhKDAsIDAsIDAsIDAuMTIpfS5tYXQtc2ltcGxlLXNuYWNrYmFyLWFjdGlvbntjb2xvcjojZmY5ODAwfTpob3N0e3BhZGRpbmctdG9wOjVweH0uYW5ub3RhdGlvbi10aXRsZXthbGlnbi1pdGVtczpjZW50ZXI7ZGlzcGxheTpmbGV4O2ZvbnQtc2l6ZToxM3B4O2hlaWdodDoyMHB4O3BhZGRpbmc6MCAxMHB4O3VzZXItc2VsZWN0Om5vbmV9LnNlbGVjdGVkLXJvd3tiYWNrZ3JvdW5kLWNvbG9yOiNlMGUwZTA7ZGlzcGxheTpibG9ja30uZmxhZ2dlZC1hbm5vdGF0aW9ue2NvbG9yOiNmNTdjMDB9LmhpZGRlbi1hbm5vdGF0aW9ue2NvbG9yOiM3NTc1NzV9LmFubm90YXRpb24tY2hlY2tib3h7cGFkZGluZy1yaWdodDo1cHh9LmZsYWdnZWQtaWNvbnt0cmFuc2Zvcm06c2NhbGUoMC42KX0uaGlkZGVuLWljb257dHJhbnNmb3JtOnNjYWxlKDAuNil9LmFubm90YXRpb24taWNvbnt0cmFuc2Zvcm06c2NhbGUoMC42KX0uY2hhcnQtZGl2e2JvcmRlci1ib3R0b206MXB4IHNvbGlkICNlYmViZWJ9LmNoYXJ0LXN2Z3t3aWR0aDoxMDAlO3VzZXItc2VsZWN0Om5vbmV9LmRlZmF1bHQtdGV4dHtmaWxsOiMwMDB9LmZsYWctdGV4dHtmaWxsOiNmNTdjMDB9LmhpZGRlbi10ZXh0e2ZpbGw6Izc1NzU3NX0uY2xpY2thYmxlLWFubm90YXRpb257Y3Vyc29yOnBvaW50ZXJ9YnV0dG9ue2FsbDp1bnNldH1cbiddLGVuY2Fwc3VsYXRpb246MixjaGFuZ2VEZXRlY3Rpb246MH0pO2NsYXNzIG5idHtjb25zdHJ1Y3Rvcih0KXt0aGlzLnN0b3JlPXQsdGhpcy5zb3J0JD10aGlzLnN0b3JlLnNlbGVjdChIZHQpLHRoaXMuZmxhZ2dlZEFubm90YXRpb25zJD10aGlzLnN0b3JlLnNlbGVjdChUZHQpLHRoaXMuaGlkZGVuQW5ub3RhdGlvbnMkPXRoaXMuc3RvcmUuc2VsZWN0KERkdCksdGhpcy5zZWxlY3RlZEFubm90YXRpb25zJD10aGlzLnN0b3JlLnNlbGVjdChSZHQpLHRoaXMuc2hvd0NvdW50cyQ9dGhpcy5zdG9yZS5zZWxlY3QoVWR0KSx0aGlzLnNpZGViYXJXaWR0aCQ9dGhpcy5zdG9yZS5zZWxlY3QoWWR0KSx0aGlzLnJ1bkNvbG9yU2NhbGUkPXRoaXMuc3RvcmUuc2VsZWN0KEdEKS5waXBlKGZ0KCh0PT5uPT57aWYoIXQuaGFzT3duUHJvcGVydHkobikpdGhyb3cgbmV3IEVycm9yKGBbQ29sb3Igc2NhbGVdIHVua25vd24gcnVuSWQ6ICR7bn0uYCk7cmV0dXJuIHRbbl19KSkpLHRoaXMucnVuSWRUb1J1bnMkPXRoaXMuc3RvcmUuc2VsZWN0KE5EKX1zaG93U2ltaWxhckFubm90YXRpb25zKCl7dGhpcy5zdG9yZS5kaXNwYXRjaChkZ3Qoe2Fubm90YXRpb246dGhpcy5hbm5vdGF0aW9ufSkpfX1mdW5jdGlvbiBlYnQodCxuKXtpZigxJnQpe2NvbnN0IHQ9b3AoKTtLZygwLCJucG1pLWFubm90YXRpb24iLDUpLGNwKCJjbGljayIsKGZ1bmN0aW9uIGUoYSl7anIodCk7Y29uc3Qgbz1uLiRpbXBsaWNpdDtyZXR1cm4gZ3AoMikucm93Q2xpY2tlZChhLG8pfSkpLCRnKCl9aWYoMiZ0KXtjb25zdCB0PW4uJGltcGxpY2l0LGU9Z3AoMik7SmcoImRhdGEiLGUuYW5ub3RhdGlvbnNbdF0pKCJhY3RpdmVNZXRyaWNzIixlLmFjdGl2ZU1ldHJpY3MpKCJudW1BY3RpdmVSdW5zIixlLm51bUFjdGl2ZVJ1bnMpKCJtYXhDb3VudCIsZS5tYXhDb3VudCkoImFubm90YXRpb24iLHQpKCJydW5IZWlnaHQiLGUucnVuSGVpZ2h0KSgiaGFzRW1iZWRkaW5nIixlLmVtYmVkZGluZ0RhdGEmJnZvaWQgMCE9PWUuZW1iZWRkaW5nRGF0YVt0XSl9fWZ1bmN0aW9uIGFidCh0LG4pe2lmKDEmdCYmKG5wKDApLHRwKDEsIm5wbWktYW5ub3RhdGlvbnMtbGlzdC1sZWdlbmQiKSx0cCgyLCJucG1pLWFubm90YXRpb25zLWxpc3QtaGVhZGVyIiwyKSxLZygzLCJjZGstdmlydHVhbC1zY3JvbGwtdmlld3BvcnQiLDMpLFlnKDQsZWJ0LDEsNywibnBtaS1hbm5vdGF0aW9uIiw0KSwkZygpLGVwKCkpLDImdCl7Y29uc3QgdD1ncCgpO3dzKDIpLEpnKCJhbm5vdGF0aW9ucyIsdC5hbm5vdGF0aW9ucykoIm51bUFubm90YXRpb25zIix0Lm51bUFubm90YXRpb25zKSgiYWN0aXZlTWV0cmljcyIsdC5hY3RpdmVNZXRyaWNzKSx3cygxKSxfcCgiaXRlbVNpemUiLHQubnVtQWN0aXZlUnVucyp0LnJ1bkhlaWdodCsyNSksd3MoMSksSmcoImNka1ZpcnR1YWxGb3JPZiIsdC5zb3J0ZWRBbm5vdGF0aW9ucyl9fW5idC7JtWZhYz1mdW5jdGlvbiB0KG4pe3JldHVybiBuZXcobnx8bmJ0KShaZyhjdikpfSxuYnQuybVjbXA9X28oe3R5cGU6bmJ0LHNlbGVjdG9yczpbWyJucG1pLWFubm90YXRpb24iXV0saW5wdXRzOntkYXRhOiJkYXRhIixtYXhDb3VudDoibWF4Q291bnQiLGFjdGl2ZU1ldHJpY3M6ImFjdGl2ZU1ldHJpY3MiLG51bUFjdGl2ZVJ1bnM6Im51bUFjdGl2ZVJ1bnMiLGFubm90YXRpb246ImFubm90YXRpb24iLHJ1bkhlaWdodDoicnVuSGVpZ2h0IixoYXNFbWJlZGRpbmc6Imhhc0VtYmVkZGluZyJ9LGRlY2xzOjksdmFyczozMSxjb25zdHM6W1szLCJkYXRhIiwibWF4Q291bnQiLCJhY3RpdmVNZXRyaWNzIiwibnVtQWN0aXZlUnVucyIsImFubm90YXRpb24iLCJydW5IZWlnaHQiLCJoYXNFbWJlZGRpbmciLCJzb3J0Iiwic2VsZWN0ZWRBbm5vdGF0aW9ucyIsImZsYWdnZWRBbm5vdGF0aW9ucyIsImhpZGRlbkFubm90YXRpb25zIiwic2hvd0NvdW50cyIsInNpZGViYXJXaWR0aCIsImNvbG9yU2NhbGUiLCJydW5JZFRvUnVucyIsIm9uU2hvd1NpbWlsYXJBbm5vdGF0aW9ucyJdXSx0ZW1wbGF0ZTpmdW5jdGlvbiB0KG4sZSl7MSZuJiYoS2coMCwiYW5ub3RhdGlvbi1jb21wb25lbnQiLDApLGNwKCJvblNob3dTaW1pbGFyQW5ub3RhdGlvbnMiLChmdW5jdGlvbiB0KCl7cmV0dXJuIGUuc2hvd1NpbWlsYXJBbm5vdGF0aW9ucygpfSkpLHlmKDEsImFzeW5jIikseWYoMiwiYXN5bmMiKSx5ZigzLCJhc3luYyIpLHlmKDQsImFzeW5jIikseWYoNSwiYXN5bmMiKSx5Zig2LCJhc3luYyIpLHlmKDcsImFzeW5jIikseWYoOCwiYXN5bmMiKSwkZygpKSwyJm4mJkpnKCJkYXRhIixlLmRhdGEpKCJtYXhDb3VudCIsZS5tYXhDb3VudCkoImFjdGl2ZU1ldHJpY3MiLGUuYWN0aXZlTWV0cmljcykoIm51bUFjdGl2ZVJ1bnMiLGUubnVtQWN0aXZlUnVucykoImFubm90YXRpb24iLGUuYW5ub3RhdGlvbikoInJ1bkhlaWdodCIsZS5ydW5IZWlnaHQpKCJoYXNFbWJlZGRpbmciLGUuaGFzRW1iZWRkaW5nKSgic29ydCIsa2YoMSwxNSxlLnNvcnQkKSkoInNlbGVjdGVkQW5ub3RhdGlvbnMiLGtmKDIsMTcsZS5zZWxlY3RlZEFubm90YXRpb25zJCkpKCJmbGFnZ2VkQW5ub3RhdGlvbnMiLGtmKDMsMTksZS5mbGFnZ2VkQW5ub3RhdGlvbnMkKSkoImhpZGRlbkFubm90YXRpb25zIixrZig0LDIxLGUuaGlkZGVuQW5ub3RhdGlvbnMkKSkoInNob3dDb3VudHMiLGtmKDUsMjMsZS5zaG93Q291bnRzJCkpKCJzaWRlYmFyV2lkdGgiLGtmKDYsMjUsZS5zaWRlYmFyV2lkdGgkKSkoImNvbG9yU2NhbGUiLGtmKDcsMjcsZS5ydW5Db2xvclNjYWxlJCkpKCJydW5JZFRvUnVucyIsa2YoOCwyOSxlLnJ1bklkVG9SdW5zJCkpfSxkaXJlY3RpdmVzOlt0YnRdLHBpcGVzOltvT10sZW5jYXBzdWxhdGlvbjoyLGNoYW5nZURldGVjdGlvbjowfSk7Y2xhc3Mgb2J0e2NvbnN0cnVjdG9yKCl7dGhpcy5vblJvd0NsaWNrPW5ldyBFZix0aGlzLnJ1bkhlaWdodD0zMH1yb3dDbGlja2VkKHQsbil7aWYodC5zaGlmdEtleSl7bGV0IHQ9dGhpcy5zb3J0ZWRBbm5vdGF0aW9ucy5pbmRleE9mKG4pO2lmKDA9PT10aGlzLnNlbGVjdGVkQW5ub3RhdGlvbnMubGVuZ3RoKXRoaXMub25Sb3dDbGljay5lbWl0KHRoaXMuc29ydGVkQW5ub3RhdGlvbnMuc2xpY2UoMCx0KzEpKTtlbHNle2NvbnN0IG49dGhpcy5zb3J0ZWRBbm5vdGF0aW9ucy5pbmRleE9mKHRoaXMuc2VsZWN0ZWRBbm5vdGF0aW9uc1t0aGlzLnNlbGVjdGVkQW5ub3RhdGlvbnMubGVuZ3RoLTFdKTt0aGlzLm9uUm93Q2xpY2suZW1pdChuPHQ/dGhpcy5zb3J0ZWRBbm5vdGF0aW9ucy5zbGljZShuLHQrMSk6dGhpcy5zb3J0ZWRBbm5vdGF0aW9ucy5zbGljZSh0LG4rMSkpfX1lbHNlIHRoaXMub25Sb3dDbGljay5lbWl0KFtuXSl9fW9idC7JtWZhYz1mdW5jdGlvbiB0KG4pe3JldHVybiBuZXcobnx8b2J0KX0sb2J0Lsm1Y21wPV9vKHt0eXBlOm9idCxzZWxlY3RvcnM6W1siYW5ub3RhdGlvbnMtbGlzdC1jb21wb25lbnQiXV0saW5wdXRzOnthbm5vdGF0aW9uczoiYW5ub3RhdGlvbnMiLGVtYmVkZGluZ0RhdGE6ImVtYmVkZGluZ0RhdGEiLGFubm90YXRpb25zRXhwYW5kZWQ6ImFubm90YXRpb25zRXhwYW5kZWQiLG51bUFubm90YXRpb25zOiJudW1Bbm5vdGF0aW9ucyIsYW5ub3RhdGlvblNvcnQ6ImFubm90YXRpb25Tb3J0IixhY3RpdmVNZXRyaWNzOiJhY3RpdmVNZXRyaWNzIixudW1BY3RpdmVSdW5zOiJudW1BY3RpdmVSdW5zIixzb3J0ZWRBbm5vdGF0aW9uczoic29ydGVkQW5ub3RhdGlvbnMiLHNlbGVjdGVkQW5ub3RhdGlvbnM6InNlbGVjdGVkQW5ub3RhdGlvbnMiLG1heENvdW50OiJtYXhDb3VudCJ9LG91dHB1dHM6e29uUm93Q2xpY2s6Im9uUm93Q2xpY2sifSxkZWNsczoyLHZhcnM6Myxjb25zdHM6W1szLCJudW1Bbm5vdGF0aW9ucyIsImV4cGFuZGVkIl0sWzQsIm5nSWYiXSxbMywiYW5ub3RhdGlvbnMiLCJudW1Bbm5vdGF0aW9ucyIsImFjdGl2ZU1ldHJpY3MiXSxbIm1pbkJ1ZmZlclB4IiwiMzAwIiwibWF4QnVmZmVyUHgiLCI2MDAiLDEsImFubm90YXRpb24tcm93cyIsMywiaXRlbVNpemUiXSxbMywiZGF0YSIsImFjdGl2ZU1ldHJpY3MiLCJudW1BY3RpdmVSdW5zIiwibWF4Q291bnQiLCJhbm5vdGF0aW9uIiwicnVuSGVpZ2h0IiwiaGFzRW1iZWRkaW5nIiwiY2xpY2siLDQsImNka1ZpcnR1YWxGb3IiLCJjZGtWaXJ0dWFsRm9yT2YiXSxbMywiZGF0YSIsImFjdGl2ZU1ldHJpY3MiLCJudW1BY3RpdmVSdW5zIiwibWF4Q291bnQiLCJhbm5vdGF0aW9uIiwicnVuSGVpZ2h0IiwiaGFzRW1iZWRkaW5nIiwiY2xpY2siXV0sdGVtcGxhdGU6ZnVuY3Rpb24gdChuLGUpezEmbiYmKHRwKDAsIm5wbWktYW5ub3RhdGlvbnMtbGlzdC10b29sYmFyIiwwKSxZZygxLGFidCw1LDUsIm5nLWNvbnRhaW5lciIsMSkpLDImbiYmKEpnKCJudW1Bbm5vdGF0aW9ucyIsZS5udW1Bbm5vdGF0aW9ucykoImV4cGFuZGVkIixlLmFubm90YXRpb25zRXhwYW5kZWQpLHdzKDEpLEpnKCJuZ0lmIixlLmFubm90YXRpb25zRXhwYW5kZWQpKX0sZGlyZWN0aXZlczpbVnB0LFdNLFdwdCxacHQsUEEsZkEseUEsbmJ0XSxzdHlsZXM6WycubWF0LWJhZGdlLWNvbnRlbnRbX25nY29udGVudC0lQ09NUCVde2ZvbnQtd2VpZ2h0OjYwMDtmb250LXNpemU6MTJweDtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWZ9Lm1hdC1iYWRnZS1zbWFsbFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWJhZGdlLWNvbnRlbnRbX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZTo5cHh9Lm1hdC1iYWRnZS1sYXJnZVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWJhZGdlLWNvbnRlbnRbX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToyNHB4fS5tYXQtaDFbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWhlYWRsaW5lW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10eXBvZ3JhcGh5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIGgxW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250OjQwMCAyNHB4LzMycHggUm9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2xldHRlci1zcGFjaW5nOm5vcm1hbDttYXJnaW46MCAwIDE2cHh9Lm1hdC1oMltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdGl0bGVbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXR5cG9ncmFwaHlbX25nY29udGVudC0lQ09NUCVdICAgaDJbX25nY29udGVudC0lQ09NUCVde2ZvbnQ6NTAwIDIwcHgvMzJweCBSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7bGV0dGVyLXNwYWNpbmc6bm9ybWFsO21hcmdpbjowIDAgMTZweH0ubWF0LWgzW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1zdWJoZWFkaW5nLTJbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXR5cG9ncmFwaHlbX25nY29udGVudC0lQ09NUCVdICAgaDNbX25nY29udGVudC0lQ09NUCVde2ZvbnQ6NDAwIDE2cHgvMjhweCBSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7bGV0dGVyLXNwYWNpbmc6bm9ybWFsO21hcmdpbjowIDAgMTZweH0ubWF0LWg0W19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1zdWJoZWFkaW5nLTFbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXR5cG9ncmFwaHlbX25nY29udGVudC0lQ09NUCVdICAgaDRbX25nY29udGVudC0lQ09NUCVde2ZvbnQ6NDAwIDE1cHgvMjRweCBSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7bGV0dGVyLXNwYWNpbmc6bm9ybWFsO21hcmdpbjowIDAgMTZweH0ubWF0LWg1W19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10eXBvZ3JhcGh5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIGg1W19uZ2NvbnRlbnQtJUNPTVAlXXtmb250OjQwMCBjYWxjKDE0cHggKiAwLjgzKS8yMHB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjttYXJnaW46MCAwIDEycHh9Lm1hdC1oNltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdHlwb2dyYXBoeVtfbmdjb250ZW50LSVDT01QJV0gICBoNltfbmdjb250ZW50LSVDT01QJV17Zm9udDo0MDAgY2FsYygxNHB4ICogMC42NykvMjBweCBSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7bWFyZ2luOjAgMCAxMnB4fS5tYXQtYm9keS1zdHJvbmdbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWJvZHktMltfbmdjb250ZW50LSVDT01QJV17Zm9udDo1MDAgMTRweC8yNHB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtsZXR0ZXItc3BhY2luZzpub3JtYWx9Lm1hdC1ib2R5W19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1ib2R5LTFbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXR5cG9ncmFwaHlbX25nY29udGVudC0lQ09NUCVde2ZvbnQ6NDAwIDE0cHgvMjBweCBSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7bGV0dGVyLXNwYWNpbmc6bm9ybWFsfS5tYXQtYm9keVtfbmdjb250ZW50LSVDT01QJV0gICBwW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1ib2R5LTFbX25nY29udGVudC0lQ09NUCVdICAgcFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdHlwb2dyYXBoeVtfbmdjb250ZW50LSVDT01QJV0gICBwW19uZ2NvbnRlbnQtJUNPTVAlXXttYXJnaW46MCAwIDEycHh9Lm1hdC1zbWFsbFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtY2FwdGlvbltfbmdjb250ZW50LSVDT01QJV17Zm9udDo0MDAgMTJweC8yMHB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtsZXR0ZXItc3BhY2luZzpub3JtYWx9Lm1hdC1kaXNwbGF5LTRbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXR5cG9ncmFwaHlbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1kaXNwbGF5LTRbX25nY29udGVudC0lQ09NUCVde2ZvbnQ6MzAwIDExMnB4LzExMnB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtsZXR0ZXItc3BhY2luZzotMC4wNWVtO21hcmdpbjowIDAgNTZweH0ubWF0LWRpc3BsYXktM1tfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdHlwb2dyYXBoeVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWRpc3BsYXktM1tfbmdjb250ZW50LSVDT01QJV17Zm9udDo0MDAgNTZweC81NnB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtsZXR0ZXItc3BhY2luZzotMC4wMmVtO21hcmdpbjowIDAgNjRweH0ubWF0LWRpc3BsYXktMltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdHlwb2dyYXBoeVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWRpc3BsYXktMltfbmdjb250ZW50LSVDT01QJV17Zm9udDo0MDAgNDVweC80OHB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtsZXR0ZXItc3BhY2luZzotMC4wMDVlbTttYXJnaW46MCAwIDY0cHh9Lm1hdC1kaXNwbGF5LTFbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXR5cG9ncmFwaHlbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1kaXNwbGF5LTFbX25nY29udGVudC0lQ09NUCVde2ZvbnQ6NDAwIDM0cHgvNDBweCBSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7bGV0dGVyLXNwYWNpbmc6bm9ybWFsO21hcmdpbjowIDAgNjRweH0ubWF0LWJvdHRvbS1zaGVldC1jb250YWluZXJbX25nY29udGVudC0lQ09NUCVde2ZvbnQ6NDAwIDE0cHgvMjBweCBSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7bGV0dGVyLXNwYWNpbmc6bm9ybWFsfS5tYXQtYnV0dG9uW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1yYWlzZWQtYnV0dG9uW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1pY29uLWJ1dHRvbltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtc3Ryb2tlZC1idXR0b25bX25nY29udGVudC0lQ09NUCVdLCAubWF0LWZsYXQtYnV0dG9uW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1mYWJbX25nY29udGVudC0lQ09NUCVdLCAubWF0LW1pbmktZmFiW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7Zm9udC1zaXplOjE0cHg7Zm9udC13ZWlnaHQ6NTAwfS5tYXQtYnV0dG9uLXRvZ2dsZVtfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmfS5tYXQtY2FyZFtfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmfS5tYXQtY2FyZC10aXRsZVtfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjI0cHg7Zm9udC13ZWlnaHQ6NTAwfS5tYXQtY2FyZC1oZWFkZXJbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1jYXJkLXRpdGxlW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MjBweH0ubWF0LWNhcmQtc3VidGl0bGVbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWNhcmQtY29udGVudFtfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjE0cHh9Lm1hdC1jaGVja2JveFtfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmfS5tYXQtY2hlY2tib3gtbGF5b3V0W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtY2hlY2tib3gtbGFiZWxbX25nY29udGVudC0lQ09NUCVde2xpbmUtaGVpZ2h0OjI0cHh9Lm1hdC1jaGlwW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MTRweDtmb250LXdlaWdodDo1MDB9Lm1hdC1jaGlwW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtY2hpcC10cmFpbGluZy1pY29uLm1hdC1pY29uW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1jaGlwW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtY2hpcC1yZW1vdmUubWF0LWljb25bX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToxOHB4fS5tYXQtdGFibGVbX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZn0ubWF0LWhlYWRlci1jZWxsW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MTJweDtmb250LXdlaWdodDo1MDB9Lm1hdC1jZWxsW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1mb290ZXItY2VsbFtfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjE0cHh9Lm1hdC1jYWxlbmRhcltfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmfS5tYXQtY2FsZW5kYXItYm9keVtfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjEzcHh9Lm1hdC1jYWxlbmRhci1ib2R5LWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1jYWxlbmRhci1wZXJpb2QtYnV0dG9uW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MTRweDtmb250LXdlaWdodDo1MDB9Lm1hdC1jYWxlbmRhci10YWJsZS1oZWFkZXJbX25nY29udGVudC0lQ09NUCVdICAgdGhbX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToxMXB4O2ZvbnQtd2VpZ2h0OjQwMH0ubWF0LWRpYWxvZy10aXRsZVtfbmdjb250ZW50LSVDT01QJV17Zm9udDo1MDAgMjBweC8zMnB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtsZXR0ZXItc3BhY2luZzpub3JtYWx9Lm1hdC1leHBhbnNpb24tcGFuZWwtaGVhZGVyW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7Zm9udC1zaXplOjE1cHg7Zm9udC13ZWlnaHQ6NDAwfS5tYXQtZXhwYW5zaW9uLXBhbmVsLWNvbnRlbnRbX25nY29udGVudC0lQ09NUCVde2ZvbnQ6NDAwIDE0cHgvMjBweCBSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7bGV0dGVyLXNwYWNpbmc6bm9ybWFsfS5tYXQtZm9ybS1maWVsZFtfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOmluaGVyaXQ7Zm9udC13ZWlnaHQ6NDAwO2xpbmUtaGVpZ2h0OjEuMTI1O2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtsZXR0ZXItc3BhY2luZzpub3JtYWx9Lm1hdC1mb3JtLWZpZWxkLXdyYXBwZXJbX25nY29udGVudC0lQ09NUCVde3BhZGRpbmctYm90dG9tOjEuMzQzNzVlbX0ubWF0LWZvcm0tZmllbGQtcHJlZml4W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaWNvbltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtZm9ybS1maWVsZC1zdWZmaXhbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pY29uW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MTUwJTtsaW5lLWhlaWdodDoxLjEyNX0ubWF0LWZvcm0tZmllbGQtcHJlZml4W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaWNvbi1idXR0b25bX25nY29udGVudC0lQ09NUCVdLCAubWF0LWZvcm0tZmllbGQtc3VmZml4W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaWNvbi1idXR0b25bX25nY29udGVudC0lQ09NUCVde2hlaWdodDoxLjVlbTt3aWR0aDoxLjVlbX0ubWF0LWZvcm0tZmllbGQtcHJlZml4W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaWNvbi1idXR0b25bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pY29uW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1mb3JtLWZpZWxkLXN1ZmZpeFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWljb24tYnV0dG9uW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaWNvbltfbmdjb250ZW50LSVDT01QJV17aGVpZ2h0OjEuMTI1ZW07bGluZS1oZWlnaHQ6MS4xMjV9Lm1hdC1mb3JtLWZpZWxkLWluZml4W19uZ2NvbnRlbnQtJUNPTVAlXXtwYWRkaW5nOi41ZW0gMDtib3JkZXItdG9wOi44NDM3NWVtIHNvbGlkIHRyYW5zcGFyZW50fS5tYXQtZm9ybS1maWVsZC1jYW4tZmxvYXQubWF0LWZvcm0tZmllbGQtc2hvdWxkLWZsb2F0W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtZm9ybS1maWVsZC1jYW4tZmxvYXRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pbnB1dC1zZXJ2ZXJbX25nY29udGVudC0lQ09NUCVdOmZvY3VzICsgLm1hdC1mb3JtLWZpZWxkLWxhYmVsLXdyYXBwZXJbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXt0cmFuc2Zvcm06dHJhbnNsYXRlWSgtMS4zNDM3NWVtKSBzY2FsZSgwLjc1KTt3aWR0aDoxMzMuMzMzMzMzMzMzMyV9Lm1hdC1mb3JtLWZpZWxkLWNhbi1mbG9hdFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWlucHV0LXNlcnZlcltsYWJlbF1bX25nY29udGVudC0lQ09NUCVdOm5vdCg6bGFiZWwtc2hvd24pICsgLm1hdC1mb3JtLWZpZWxkLWxhYmVsLXdyYXBwZXJbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXt0cmFuc2Zvcm06dHJhbnNsYXRlWSgtMS4zNDM3NGVtKSBzY2FsZSgwLjc1KTt3aWR0aDoxMzMuMzMzMzQzMzMzMyV9Lm1hdC1mb3JtLWZpZWxkLWxhYmVsLXdyYXBwZXJbX25nY29udGVudC0lQ09NUCVde3RvcDotMC44NDM3NWVtO3BhZGRpbmctdG9wOi44NDM3NWVtfS5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17dG9wOjEuMzQzNzVlbX0ubWF0LWZvcm0tZmllbGQtdW5kZXJsaW5lW19uZ2NvbnRlbnQtJUNPTVAlXXtib3R0b206MS4zNDM3NWVtfS5tYXQtZm9ybS1maWVsZC1zdWJzY3JpcHQtd3JhcHBlcltfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjc1JTttYXJnaW4tdG9wOi42NjY2NjY2NjY3ZW07dG9wOmNhbGMoMTAwJSAtIDEuNzkxNjY2NjY2N2VtKX0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1sZWdhY3lbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLXdyYXBwZXJbX25nY29udGVudC0lQ09NUCVde3BhZGRpbmctYm90dG9tOjEuMjVlbX0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1sZWdhY3lbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWluZml4W19uZ2NvbnRlbnQtJUNPTVAlXXtwYWRkaW5nOi40Mzc1ZW0gMH0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1sZWdhY3kubWF0LWZvcm0tZmllbGQtY2FuLWZsb2F0Lm1hdC1mb3JtLWZpZWxkLXNob3VsZC1mbG9hdFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1sZWdhY3kubWF0LWZvcm0tZmllbGQtY2FuLWZsb2F0W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaW5wdXQtc2VydmVyW19uZ2NvbnRlbnQtJUNPTVAlXTpmb2N1cyArIC5tYXQtZm9ybS1maWVsZC1sYWJlbC13cmFwcGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17dHJhbnNmb3JtOnRyYW5zbGF0ZVkoLTEuMjgxMjVlbSkgc2NhbGUoMC43NSkgcGVyc3BlY3RpdmUoMTAwcHgpIHRyYW5zbGF0ZVooMC4wMDFweCk7LW1zLXRyYW5zZm9ybTp0cmFuc2xhdGVZKC0xLjI4MTI1ZW0pIHNjYWxlKDAuNzUpO3dpZHRoOjEzMy4zMzMzMzMzMzMzJX0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1sZWdhY3kubWF0LWZvcm0tZmllbGQtY2FuLWZsb2F0W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1hdXRvZmlsbC1jb250cm9sW19uZ2NvbnRlbnQtJUNPTVAlXTotd2Via2l0LWF1dG9maWxsICsgLm1hdC1mb3JtLWZpZWxkLWxhYmVsLXdyYXBwZXJbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXt0cmFuc2Zvcm06dHJhbnNsYXRlWSgtMS4yODEyNWVtKSBzY2FsZSgwLjc1KSBwZXJzcGVjdGl2ZSgxMDBweCkgdHJhbnNsYXRlWigwLjAwMTAxcHgpOy1tcy10cmFuc2Zvcm06dHJhbnNsYXRlWSgtMS4yODEyNGVtKSBzY2FsZSgwLjc1KTt3aWR0aDoxMzMuMzMzMzQzMzMzMyV9Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtbGVnYWN5Lm1hdC1mb3JtLWZpZWxkLWNhbi1mbG9hdFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWlucHV0LXNlcnZlcltsYWJlbF1bX25nY29udGVudC0lQ09NUCVdOm5vdCg6bGFiZWwtc2hvd24pICsgLm1hdC1mb3JtLWZpZWxkLWxhYmVsLXdyYXBwZXJbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXt0cmFuc2Zvcm06dHJhbnNsYXRlWSgtMS4yODEyNWVtKSBzY2FsZSgwLjc1KSBwZXJzcGVjdGl2ZSgxMDBweCkgdHJhbnNsYXRlWigwLjAwMTAycHgpOy1tcy10cmFuc2Zvcm06dHJhbnNsYXRlWSgtMS4yODEyM2VtKSBzY2FsZSgwLjc1KTt3aWR0aDoxMzMuMzMzMzUzMzMzMyV9Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtbGVnYWN5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17dG9wOjEuMjgxMjVlbX0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1sZWdhY3lbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLXVuZGVybGluZVtfbmdjb250ZW50LSVDT01QJV17Ym90dG9tOjEuMjVlbX0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1sZWdhY3lbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLXN1YnNjcmlwdC13cmFwcGVyW19uZ2NvbnRlbnQtJUNPTVAlXXttYXJnaW4tdG9wOi41NDE2NjY2NjY3ZW07dG9wOmNhbGMoMTAwJSAtIDEuNjY2NjY2NjY2N2VtKX1AbWVkaWEgcHJpbnR7Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtbGVnYWN5Lm1hdC1mb3JtLWZpZWxkLWNhbi1mbG9hdC5tYXQtZm9ybS1maWVsZC1zaG91bGQtZmxvYXRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtbGVnYWN5Lm1hdC1mb3JtLWZpZWxkLWNhbi1mbG9hdFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWlucHV0LXNlcnZlcltfbmdjb250ZW50LSVDT01QJV06Zm9jdXMgKyAubWF0LWZvcm0tZmllbGQtbGFiZWwtd3JhcHBlcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVde3RyYW5zZm9ybTp0cmFuc2xhdGVZKC0xLjI4MTIyZW0pIHNjYWxlKDAuNzUpfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWxlZ2FjeS5tYXQtZm9ybS1maWVsZC1jYW4tZmxvYXRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWF1dG9maWxsLWNvbnRyb2xbX25nY29udGVudC0lQ09NUCVdOi13ZWJraXQtYXV0b2ZpbGwgKyAubWF0LWZvcm0tZmllbGQtbGFiZWwtd3JhcHBlcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVde3RyYW5zZm9ybTp0cmFuc2xhdGVZKC0xLjI4MTIxZW0pIHNjYWxlKDAuNzUpfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWxlZ2FjeS5tYXQtZm9ybS1maWVsZC1jYW4tZmxvYXRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pbnB1dC1zZXJ2ZXJbbGFiZWxdW19uZ2NvbnRlbnQtJUNPTVAlXTpub3QoOmxhYmVsLXNob3duKSArIC5tYXQtZm9ybS1maWVsZC1sYWJlbC13cmFwcGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17dHJhbnNmb3JtOnRyYW5zbGF0ZVkoLTEuMjgxMmVtKSBzY2FsZSgwLjc1KX19Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtZmlsbFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtaW5maXhbX25nY29udGVudC0lQ09NUCVde3BhZGRpbmc6LjI1ZW0gMCAuNzVlbSAwfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWZpbGxbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXt0b3A6MS4wOTM3NWVtO21hcmdpbi10b3A6LTAuNWVtfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWZpbGwubWF0LWZvcm0tZmllbGQtY2FuLWZsb2F0Lm1hdC1mb3JtLWZpZWxkLXNob3VsZC1mbG9hdFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1maWxsLm1hdC1mb3JtLWZpZWxkLWNhbi1mbG9hdFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWlucHV0LXNlcnZlcltfbmdjb250ZW50LSVDT01QJV06Zm9jdXMgKyAubWF0LWZvcm0tZmllbGQtbGFiZWwtd3JhcHBlcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVde3RyYW5zZm9ybTp0cmFuc2xhdGVZKC0wLjU5Mzc1ZW0pIHNjYWxlKDAuNzUpO3dpZHRoOjEzMy4zMzMzMzMzMzMzJX0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1maWxsLm1hdC1mb3JtLWZpZWxkLWNhbi1mbG9hdFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWlucHV0LXNlcnZlcltsYWJlbF1bX25nY29udGVudC0lQ09NUCVdOm5vdCg6bGFiZWwtc2hvd24pICsgLm1hdC1mb3JtLWZpZWxkLWxhYmVsLXdyYXBwZXJbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXt0cmFuc2Zvcm06dHJhbnNsYXRlWSgtMC41OTM3NGVtKSBzY2FsZSgwLjc1KTt3aWR0aDoxMzMuMzMzMzQzMzMzMyV9Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2Utb3V0bGluZVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtaW5maXhbX25nY29udGVudC0lQ09NUCVde3BhZGRpbmc6MWVtIDAgMWVtIDB9Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2Utb3V0bGluZVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVde3RvcDoxLjg0Mzc1ZW07bWFyZ2luLXRvcDotMC4yNWVtfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLW91dGxpbmUubWF0LWZvcm0tZmllbGQtY2FuLWZsb2F0Lm1hdC1mb3JtLWZpZWxkLXNob3VsZC1mbG9hdFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1vdXRsaW5lLm1hdC1mb3JtLWZpZWxkLWNhbi1mbG9hdFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWlucHV0LXNlcnZlcltfbmdjb250ZW50LSVDT01QJV06Zm9jdXMgKyAubWF0LWZvcm0tZmllbGQtbGFiZWwtd3JhcHBlcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVde3RyYW5zZm9ybTp0cmFuc2xhdGVZKC0xLjU5Mzc1ZW0pIHNjYWxlKDAuNzUpO3dpZHRoOjEzMy4zMzMzMzMzMzMzJX0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1vdXRsaW5lLm1hdC1mb3JtLWZpZWxkLWNhbi1mbG9hdFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWlucHV0LXNlcnZlcltsYWJlbF1bX25nY29udGVudC0lQ09NUCVdOm5vdCg6bGFiZWwtc2hvd24pICsgLm1hdC1mb3JtLWZpZWxkLWxhYmVsLXdyYXBwZXJbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXt0cmFuc2Zvcm06dHJhbnNsYXRlWSgtMS41OTM3NGVtKSBzY2FsZSgwLjc1KTt3aWR0aDoxMzMuMzMzMzQzMzMzMyV9Lm1hdC1ncmlkLXRpbGUtaGVhZGVyW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1ncmlkLXRpbGUtZm9vdGVyW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MTRweH0ubWF0LWdyaWQtdGlsZS1oZWFkZXJbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saW5lW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1ncmlkLXRpbGUtZm9vdGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGluZVtfbmdjb250ZW50LSVDT01QJV17d2hpdGUtc3BhY2U6bm93cmFwO292ZXJmbG93OmhpZGRlbjt0ZXh0LW92ZXJmbG93OmVsbGlwc2lzO2Rpc3BsYXk6YmxvY2s7Ym94LXNpemluZzpib3JkZXItYm94fS5tYXQtZ3JpZC10aWxlLWhlYWRlcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpbmVbX25nY29udGVudC0lQ09NUCVdOm50aC1jaGlsZChuKzIpLCAubWF0LWdyaWQtdGlsZS1mb290ZXJbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saW5lW19uZ2NvbnRlbnQtJUNPTVAlXTpudGgtY2hpbGQobisyKXtmb250LXNpemU6MTJweH1pbnB1dC5tYXQtaW5wdXQtZWxlbWVudFtfbmdjb250ZW50LSVDT01QJV17bWFyZ2luLXRvcDotMC4wNjI1ZW19Lm1hdC1tZW51LWl0ZW1bX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtmb250LXNpemU6MTRweDtmb250LXdlaWdodDo0MDB9Lm1hdC1wYWdpbmF0b3JbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXBhZ2luYXRvci1wYWdlLXNpemVbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1zZWxlY3QtdHJpZ2dlcltfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2ZvbnQtc2l6ZToxMnB4fS5tYXQtcmFkaW8tYnV0dG9uW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWZ9Lm1hdC1zZWxlY3RbX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZn0ubWF0LXNlbGVjdC10cmlnZ2VyW19uZ2NvbnRlbnQtJUNPTVAlXXtoZWlnaHQ6MS4xMjVlbX0ubWF0LXNsaWRlLXRvZ2dsZS1jb250ZW50W19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWZ9Lm1hdC1zbGlkZXItdGh1bWItbGFiZWwtdGV4dFtfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2ZvbnQtc2l6ZToxMnB4O2ZvbnQtd2VpZ2h0OjUwMH0ubWF0LXN0ZXBwZXItdmVydGljYWxbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXN0ZXBwZXItaG9yaXpvbnRhbFtfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmfS5tYXQtc3RlcC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjE0cHg7Zm9udC13ZWlnaHQ6NDAwfS5tYXQtc3RlcC1zdWItbGFiZWwtZXJyb3JbX25nY29udGVudC0lQ09NUCVde2ZvbnQtd2VpZ2h0Om5vcm1hbH0ubWF0LXN0ZXAtbGFiZWwtZXJyb3JbX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToxNHB4fS5tYXQtc3RlcC1sYWJlbC1zZWxlY3RlZFtfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjE0cHg7Zm9udC13ZWlnaHQ6NTAwfS5tYXQtdGFiLWdyb3VwW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWZ9Lm1hdC10YWItbGFiZWxbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXRhYi1saW5rW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7Zm9udC1zaXplOjE0cHg7Zm9udC13ZWlnaHQ6NTAwfS5tYXQtdG9vbGJhcltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdG9vbGJhcltfbmdjb250ZW50LSVDT01QJV0gICBoMVtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdG9vbGJhcltfbmdjb250ZW50LSVDT01QJV0gICBoMltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdG9vbGJhcltfbmdjb250ZW50LSVDT01QJV0gICBoM1tfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdG9vbGJhcltfbmdjb250ZW50LSVDT01QJV0gICBoNFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdG9vbGJhcltfbmdjb250ZW50LSVDT01QJV0gICBoNVtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdG9vbGJhcltfbmdjb250ZW50LSVDT01QJV0gICBoNltfbmdjb250ZW50LSVDT01QJV17Zm9udDo1MDAgMjBweC8zMnB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtsZXR0ZXItc3BhY2luZzpub3JtYWw7bWFyZ2luOjB9Lm1hdC10b29sdGlwW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7Zm9udC1zaXplOjEwcHg7cGFkZGluZy10b3A6NnB4O3BhZGRpbmctYm90dG9tOjZweH0ubWF0LXRvb2x0aXAtaGFuZHNldFtfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjE0cHg7cGFkZGluZy10b3A6OHB4O3BhZGRpbmctYm90dG9tOjhweH0ubWF0LWxpc3QtaXRlbVtfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmfS5tYXQtbGlzdC1vcHRpb25bX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZn0ubWF0LWxpc3QtYmFzZVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpc3QtaXRlbVtfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjE2cHh9Lm1hdC1saXN0LWJhc2VbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saXN0LWl0ZW1bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saW5lW19uZ2NvbnRlbnQtJUNPTVAlXXt3aGl0ZS1zcGFjZTpub3dyYXA7b3ZlcmZsb3c6aGlkZGVuO3RleHQtb3ZlcmZsb3c6ZWxsaXBzaXM7ZGlzcGxheTpibG9jaztib3gtc2l6aW5nOmJvcmRlci1ib3h9Lm1hdC1saXN0LWJhc2VbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saXN0LWl0ZW1bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saW5lW19uZ2NvbnRlbnQtJUNPTVAlXTpudGgtY2hpbGQobisyKXtmb250LXNpemU6MTRweH0ubWF0LWxpc3QtYmFzZVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpc3Qtb3B0aW9uW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MTZweH0ubWF0LWxpc3QtYmFzZVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpc3Qtb3B0aW9uW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGluZVtfbmdjb250ZW50LSVDT01QJV17d2hpdGUtc3BhY2U6bm93cmFwO292ZXJmbG93OmhpZGRlbjt0ZXh0LW92ZXJmbG93OmVsbGlwc2lzO2Rpc3BsYXk6YmxvY2s7Ym94LXNpemluZzpib3JkZXItYm94fS5tYXQtbGlzdC1iYXNlW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGlzdC1vcHRpb25bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saW5lW19uZ2NvbnRlbnQtJUNPTVAlXTpudGgtY2hpbGQobisyKXtmb250LXNpemU6MTRweH0ubWF0LWxpc3QtYmFzZVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXN1YmhlYWRlcltfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2ZvbnQtc2l6ZToxNHB4O2ZvbnQtd2VpZ2h0OjUwMH0ubWF0LWxpc3QtYmFzZVtkZW5zZV1bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saXN0LWl0ZW1bX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToxMnB4fS5tYXQtbGlzdC1iYXNlW2RlbnNlXVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpc3QtaXRlbVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpbmVbX25nY29udGVudC0lQ09NUCVde3doaXRlLXNwYWNlOm5vd3JhcDtvdmVyZmxvdzpoaWRkZW47dGV4dC1vdmVyZmxvdzplbGxpcHNpcztkaXNwbGF5OmJsb2NrO2JveC1zaXppbmc6Ym9yZGVyLWJveH0ubWF0LWxpc3QtYmFzZVtkZW5zZV1bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saXN0LWl0ZW1bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saW5lW19uZ2NvbnRlbnQtJUNPTVAlXTpudGgtY2hpbGQobisyKXtmb250LXNpemU6MTJweH0ubWF0LWxpc3QtYmFzZVtkZW5zZV1bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saXN0LW9wdGlvbltfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjEycHh9Lm1hdC1saXN0LWJhc2VbZGVuc2VdW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGlzdC1vcHRpb25bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saW5lW19uZ2NvbnRlbnQtJUNPTVAlXXt3aGl0ZS1zcGFjZTpub3dyYXA7b3ZlcmZsb3c6aGlkZGVuO3RleHQtb3ZlcmZsb3c6ZWxsaXBzaXM7ZGlzcGxheTpibG9jaztib3gtc2l6aW5nOmJvcmRlci1ib3h9Lm1hdC1saXN0LWJhc2VbZGVuc2VdW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGlzdC1vcHRpb25bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saW5lW19uZ2NvbnRlbnQtJUNPTVAlXTpudGgtY2hpbGQobisyKXtmb250LXNpemU6MTJweH0ubWF0LWxpc3QtYmFzZVtkZW5zZV1bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1zdWJoZWFkZXJbX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtmb250LXNpemU6MTJweDtmb250LXdlaWdodDo1MDB9Lm1hdC1vcHRpb25bX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtmb250LXNpemU6MTZweH0ubWF0LW9wdGdyb3VwLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250OjUwMCAxNHB4LzI0cHggUm9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2xldHRlci1zcGFjaW5nOm5vcm1hbH0ubWF0LXNpbXBsZS1zbmFja2Jhcltfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2ZvbnQtc2l6ZToxNHB4fS5tYXQtc2ltcGxlLXNuYWNrYmFyLWFjdGlvbltfbmdjb250ZW50LSVDT01QJV17bGluZS1oZWlnaHQ6MTtmb250LWZhbWlseTppbmhlcml0O2ZvbnQtc2l6ZTppbmhlcml0O2ZvbnQtd2VpZ2h0OjUwMH0ubWF0LXRyZWVbX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZn0ubWF0LXRyZWUtbm9kZVtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtbmVzdGVkLXRyZWUtbm9kZVtfbmdjb250ZW50LSVDT01QJV17Zm9udC13ZWlnaHQ6NDAwO2ZvbnQtc2l6ZToxNHB4fS5tYXQtcmlwcGxlW19uZ2NvbnRlbnQtJUNPTVAlXXtvdmVyZmxvdzpoaWRkZW47cG9zaXRpb246cmVsYXRpdmV9Lm1hdC1yaXBwbGVbX25nY29udGVudC0lQ09NUCVdOm5vdCg6ZW1wdHkpe3RyYW5zZm9ybTp0cmFuc2xhdGVaKDApfS5tYXQtcmlwcGxlLm1hdC1yaXBwbGUtdW5ib3VuZGVkW19uZ2NvbnRlbnQtJUNPTVAlXXtvdmVyZmxvdzp2aXNpYmxlfS5tYXQtcmlwcGxlLWVsZW1lbnRbX25nY29udGVudC0lQ09NUCVde3Bvc2l0aW9uOmFic29sdXRlO2JvcmRlci1yYWRpdXM6NTAlO3BvaW50ZXItZXZlbnRzOm5vbmU7dHJhbnNpdGlvbjpvcGFjaXR5LHRyYW5zZm9ybSAwbXMgY3ViaWMtYmV6aWVyKDAsIDAsIDAuMiwgMSk7dHJhbnNmb3JtOnNjYWxlKDApfS5jZGstaGlnaC1jb250cmFzdC1hY3RpdmVbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1yaXBwbGUtZWxlbWVudFtfbmdjb250ZW50LSVDT01QJV17ZGlzcGxheTpub25lfS5jZGstdmlzdWFsbHktaGlkZGVuW19uZ2NvbnRlbnQtJUNPTVAlXXtib3JkZXI6MDtjbGlwOnJlY3QoMCAwIDAgMCk7aGVpZ2h0OjFweDttYXJnaW46LTFweDtvdmVyZmxvdzpoaWRkZW47cGFkZGluZzowO3Bvc2l0aW9uOmFic29sdXRlO3dpZHRoOjFweDtvdXRsaW5lOjA7LXdlYmtpdC1hcHBlYXJhbmNlOm5vbmU7LW1vei1hcHBlYXJhbmNlOm5vbmV9LmNkay1vdmVybGF5LWNvbnRhaW5lcltfbmdjb250ZW50LSVDT01QJV0sIC5jZGstZ2xvYmFsLW92ZXJsYXktd3JhcHBlcltfbmdjb250ZW50LSVDT01QJV17cG9pbnRlci1ldmVudHM6bm9uZTt0b3A6MDtsZWZ0OjA7aGVpZ2h0OjEwMCU7d2lkdGg6MTAwJX0uY2RrLW92ZXJsYXktY29udGFpbmVyW19uZ2NvbnRlbnQtJUNPTVAlXXtwb3NpdGlvbjpmaXhlZDt6LWluZGV4OjEwMDB9LmNkay1vdmVybGF5LWNvbnRhaW5lcltfbmdjb250ZW50LSVDT01QJV06ZW1wdHl7ZGlzcGxheTpub25lfS5jZGstZ2xvYmFsLW92ZXJsYXktd3JhcHBlcltfbmdjb250ZW50LSVDT01QJV17ZGlzcGxheTpmbGV4O3Bvc2l0aW9uOmFic29sdXRlO3otaW5kZXg6MTAwMH0uY2RrLW92ZXJsYXktcGFuZVtfbmdjb250ZW50LSVDT01QJV17cG9zaXRpb246YWJzb2x1dGU7cG9pbnRlci1ldmVudHM6YXV0bztib3gtc2l6aW5nOmJvcmRlci1ib3g7ei1pbmRleDoxMDAwO2Rpc3BsYXk6ZmxleDttYXgtd2lkdGg6MTAwJTttYXgtaGVpZ2h0OjEwMCV9LmNkay1vdmVybGF5LWJhY2tkcm9wW19uZ2NvbnRlbnQtJUNPTVAlXXtwb3NpdGlvbjphYnNvbHV0ZTt0b3A6MDtib3R0b206MDtsZWZ0OjA7cmlnaHQ6MDt6LWluZGV4OjEwMDA7cG9pbnRlci1ldmVudHM6YXV0bzstd2Via2l0LXRhcC1oaWdobGlnaHQtY29sb3I6dHJhbnNwYXJlbnQ7dHJhbnNpdGlvbjpvcGFjaXR5IDQwMG1zIGN1YmljLWJlemllcigwLjI1LCAwLjgsIDAuMjUsIDEpO29wYWNpdHk6MH0uY2RrLW92ZXJsYXktYmFja2Ryb3AuY2RrLW92ZXJsYXktYmFja2Ryb3Atc2hvd2luZ1tfbmdjb250ZW50LSVDT01QJV17b3BhY2l0eToxfUBtZWRpYSBzY3JlZW4gYW5kICgtbXMtaGlnaC1jb250cmFzdDogYWN0aXZlKXsuY2RrLW92ZXJsYXktYmFja2Ryb3AuY2RrLW92ZXJsYXktYmFja2Ryb3Atc2hvd2luZ1tfbmdjb250ZW50LSVDT01QJV17b3BhY2l0eTouNn19LmNkay1vdmVybGF5LWRhcmstYmFja2Ryb3BbX25nY29udGVudC0lQ09NUCVde2JhY2tncm91bmQ6cmdiYSgwLDAsMCwuMzIpfS5jZGstb3ZlcmxheS10cmFuc3BhcmVudC1iYWNrZHJvcFtfbmdjb250ZW50LSVDT01QJV0sIC5jZGstb3ZlcmxheS10cmFuc3BhcmVudC1iYWNrZHJvcC5jZGstb3ZlcmxheS1iYWNrZHJvcC1zaG93aW5nW19uZ2NvbnRlbnQtJUNPTVAlXXtvcGFjaXR5OjB9LmNkay1vdmVybGF5LWNvbm5lY3RlZC1wb3NpdGlvbi1ib3VuZGluZy1ib3hbX25nY29udGVudC0lQ09NUCVde3Bvc2l0aW9uOmFic29sdXRlO3otaW5kZXg6MTAwMDtkaXNwbGF5OmZsZXg7ZmxleC1kaXJlY3Rpb246Y29sdW1uO21pbi13aWR0aDoxcHg7bWluLWhlaWdodDoxcHh9LmNkay1nbG9iYWwtc2Nyb2xsYmxvY2tbX25nY29udGVudC0lQ09NUCVde3Bvc2l0aW9uOmZpeGVkO3dpZHRoOjEwMCU7b3ZlcmZsb3cteTpzY3JvbGx9QGtleWZyYW1lcyBjZGstdGV4dC1maWVsZC1hdXRvZmlsbC1zdGFydHt9QGtleWZyYW1lcyBjZGstdGV4dC1maWVsZC1hdXRvZmlsbC1lbmR7fS5jZGstdGV4dC1maWVsZC1hdXRvZmlsbC1tb25pdG9yZWRbX25nY29udGVudC0lQ09NUCVdOi13ZWJraXQtYXV0b2ZpbGx7YW5pbWF0aW9uOmNkay10ZXh0LWZpZWxkLWF1dG9maWxsLXN0YXJ0IDBzIDFtc30uY2RrLXRleHQtZmllbGQtYXV0b2ZpbGwtbW9uaXRvcmVkW19uZ2NvbnRlbnQtJUNPTVAlXTpub3QoOi13ZWJraXQtYXV0b2ZpbGwpe2FuaW1hdGlvbjpjZGstdGV4dC1maWVsZC1hdXRvZmlsbC1lbmQgMHMgMW1zfXRleHRhcmVhLmNkay10ZXh0YXJlYS1hdXRvc2l6ZVtfbmdjb250ZW50LSVDT01QJV17cmVzaXplOm5vbmV9dGV4dGFyZWEuY2RrLXRleHRhcmVhLWF1dG9zaXplLW1lYXN1cmluZ1tfbmdjb250ZW50LSVDT01QJV17cGFkZGluZzoycHggMCAhaW1wb3J0YW50O2JveC1zaXppbmc6Y29udGVudC1ib3ggIWltcG9ydGFudDtoZWlnaHQ6YXV0byAhaW1wb3J0YW50O292ZXJmbG93OmhpZGRlbiAhaW1wb3J0YW50fXRleHRhcmVhLmNkay10ZXh0YXJlYS1hdXRvc2l6ZS1tZWFzdXJpbmctZmlyZWZveFtfbmdjb250ZW50LSVDT01QJV17cGFkZGluZzoycHggMCAhaW1wb3J0YW50O2JveC1zaXppbmc6Y29udGVudC1ib3ggIWltcG9ydGFudDtoZWlnaHQ6MCAhaW1wb3J0YW50fS5tYXQtZm9jdXMtaW5kaWNhdG9yW19uZ2NvbnRlbnQtJUNPTVAlXXtwb3NpdGlvbjpyZWxhdGl2ZX0ubWF0LW1kYy1mb2N1cy1pbmRpY2F0b3JbX25nY29udGVudC0lQ09NUCVde3Bvc2l0aW9uOnJlbGF0aXZlfS5tYXQtcmlwcGxlLWVsZW1lbnRbX25nY29udGVudC0lQ09NUCVde2JhY2tncm91bmQtY29sb3I6cmdiYSgwLDAsMCwuMSl9Lm1hdC1vcHRpb25bX25nY29udGVudC0lQ09NUCVde2NvbG9yOiMyMTIxMjF9Lm1hdC1vcHRpb25bX25nY29udGVudC0lQ09NUCVdOmhvdmVyOm5vdCgubWF0LW9wdGlvbi1kaXNhYmxlZCksIC5tYXQtb3B0aW9uW19uZ2NvbnRlbnQtJUNPTVAlXTpmb2N1czpub3QoLm1hdC1vcHRpb24tZGlzYWJsZWQpe2JhY2tncm91bmQ6cmdiYSgwLDAsMCwuMDQpfS5tYXQtb3B0aW9uLm1hdC1zZWxlY3RlZFtfbmdjb250ZW50LSVDT01QJV06bm90KC5tYXQtb3B0aW9uLW11bHRpcGxlKTpub3QoLm1hdC1vcHRpb24tZGlzYWJsZWQpe2JhY2tncm91bmQ6cmdiYSgwLDAsMCwuMDQpfS5tYXQtb3B0aW9uLm1hdC1hY3RpdmVbX25nY29udGVudC0lQ09NUCVde2JhY2tncm91bmQ6cmdiYSgwLDAsMCwuMDQpO2NvbG9yOiMyMTIxMjF9Lm1hdC1vcHRpb24ubWF0LW9wdGlvbi1kaXNhYmxlZFtfbmdjb250ZW50LSVDT01QJV17Y29sb3I6cmdiYSgwLDAsMCwuMzgpfS5tYXQtcHJpbWFyeVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LW9wdGlvbi5tYXQtc2VsZWN0ZWRbX25nY29udGVudC0lQ09NUCVdOm5vdCgubWF0LW9wdGlvbi1kaXNhYmxlZCl7Y29sb3I6I2Y1N2MwMH0ubWF0LWFjY2VudFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LW9wdGlvbi5tYXQtc2VsZWN0ZWRbX25nY29udGVudC0lQ09NUCVdOm5vdCgubWF0LW9wdGlvbi1kaXNhYmxlZCl7Y29sb3I6I2ZmOTgwMH0ubWF0LXdhcm5bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1vcHRpb24ubWF0LXNlbGVjdGVkW19uZ2NvbnRlbnQtJUNPTVAlXTpub3QoLm1hdC1vcHRpb24tZGlzYWJsZWQpe2NvbG9yOiNmNDQzMzZ9Lm1hdC1vcHRncm91cC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17Y29sb3I6IzYxNjE2MX0ubWF0LW9wdGdyb3VwLWRpc2FibGVkW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtb3B0Z3JvdXAtbGFiZWxbX25nY29udGVudC0lQ09NUCVde2NvbG9yOnJnYmEoMCwwLDAsLjM4KX0ubWF0LXBzZXVkby1jaGVja2JveFtfbmdjb250ZW50LSVDT01QJV17Y29sb3I6IzYxNjE2MX0ubWF0LXBzZXVkby1jaGVja2JveFtfbmdjb250ZW50LSVDT01QJV06OmFmdGVye2NvbG9yOiNmYWZhZmF9Lm1hdC1wc2V1ZG8tY2hlY2tib3gtZGlzYWJsZWRbX25nY29udGVudC0lQ09NUCVde2NvbG9yOiNiMGIwYjB9Lm1hdC1wcmltYXJ5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtcHNldWRvLWNoZWNrYm94LWNoZWNrZWRbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXByaW1hcnlbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1wc2V1ZG8tY2hlY2tib3gtaW5kZXRlcm1pbmF0ZVtfbmdjb250ZW50LSVDT01QJV17YmFja2dyb3VuZDojZjU3YzAwfS5tYXQtcHNldWRvLWNoZWNrYm94LWNoZWNrZWRbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXBzZXVkby1jaGVja2JveC1pbmRldGVybWluYXRlW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1hY2NlbnRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1wc2V1ZG8tY2hlY2tib3gtY2hlY2tlZFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtYWNjZW50W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtcHNldWRvLWNoZWNrYm94LWluZGV0ZXJtaW5hdGVbX25nY29udGVudC0lQ09NUCVde2JhY2tncm91bmQ6I2ZmOTgwMH0ubWF0LXdhcm5bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1wc2V1ZG8tY2hlY2tib3gtY2hlY2tlZFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtd2Fybltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXBzZXVkby1jaGVja2JveC1pbmRldGVybWluYXRlW19uZ2NvbnRlbnQtJUNPTVAlXXtiYWNrZ3JvdW5kOiNmNDQzMzZ9Lm1hdC1wc2V1ZG8tY2hlY2tib3gtY2hlY2tlZC5tYXQtcHNldWRvLWNoZWNrYm94LWRpc2FibGVkW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1wc2V1ZG8tY2hlY2tib3gtaW5kZXRlcm1pbmF0ZS5tYXQtcHNldWRvLWNoZWNrYm94LWRpc2FibGVkW19uZ2NvbnRlbnQtJUNPTVAlXXtiYWNrZ3JvdW5kOiNiMGIwYjB9Lm1hdC1hcHAtYmFja2dyb3VuZFtfbmdjb250ZW50LSVDT01QJV17YmFja2dyb3VuZC1jb2xvcjojZmFmYWZhO2NvbG9yOiMyMTIxMjF9Lm1hdC1lbGV2YXRpb24tejBbX25nY29udGVudC0lQ09NUCVde2JveC1zaGFkb3c6MHB4IDBweCAwcHggMHB4IHJnYmEoMCwgMCwgMCwgMC4yKSwwcHggMHB4IDBweCAwcHggcmdiYSgwLCAwLCAwLCAwLjE0KSwwcHggMHB4IDBweCAwcHggcmdiYSgwLCAwLCAwLCAwLjEyKX0ubWF0LWVsZXZhdGlvbi16MVtfbmdjb250ZW50LSVDT01QJV17Ym94LXNoYWRvdzowcHggMnB4IDFweCAtMXB4IHJnYmEoMCwgMCwgMCwgMC4yKSwwcHggMXB4IDFweCAwcHggcmdiYSgwLCAwLCAwLCAwLjE0KSwwcHggMXB4IDNweCAwcHggcmdiYSgwLCAwLCAwLCAwLjEyKX0ubWF0LWVsZXZhdGlvbi16Mltfbmdjb250ZW50LSVDT01QJV17Ym94LXNoYWRvdzowcHggM3B4IDFweCAtMnB4IHJnYmEoMCwgMCwgMCwgMC4yKSwwcHggMnB4IDJweCAwcHggcmdiYSgwLCAwLCAwLCAwLjE0KSwwcHggMXB4IDVweCAwcHggcmdiYSgwLCAwLCAwLCAwLjEyKX0ubWF0LWVsZXZhdGlvbi16M1tfbmdjb250ZW50LSVDT01QJV17Ym94LXNoYWRvdzowcHggM3B4IDNweCAtMnB4IHJnYmEoMCwgMCwgMCwgMC4yKSwwcHggM3B4IDRweCAwcHggcmdiYSgwLCAwLCAwLCAwLjE0KSwwcHggMXB4IDhweCAwcHggcmdiYSgwLCAwLCAwLCAwLjEyKX0ubWF0LWVsZXZhdGlvbi16NFtfbmdjb250ZW50LSVDT01QJV17Ym94LXNoYWRvdzowcHggMnB4IDRweCAtMXB4IHJnYmEoMCwgMCwgMCwgMC4yKSwwcHggNHB4IDVweCAwcHggcmdiYSgwLCAwLCAwLCAwLjE0KSwwcHggMXB4IDEwcHggMHB4IHJnYmEoMCwgMCwgMCwgMC4xMil9Lm1hdC1lbGV2YXRpb24tejVbX25nY29udGVudC0lQ09NUCVde2JveC1zaGFkb3c6MHB4IDNweCA1cHggLTFweCByZ2JhKDAsIDAsIDAsIDAuMiksMHB4IDVweCA4cHggMHB4IHJnYmEoMCwgMCwgMCwgMC4xNCksMHB4IDFweCAxNHB4IDBweCByZ2JhKDAsIDAsIDAsIDAuMTIpfS5tYXQtZWxldmF0aW9uLXo2W19uZ2NvbnRlbnQtJUNPTVAlXXtib3gtc2hhZG93OjBweCAzcHggNXB4IC0xcHggcmdiYSgwLCAwLCAwLCAwLjIpLDBweCA2cHggMTBweCAwcHggcmdiYSgwLCAwLCAwLCAwLjE0KSwwcHggMXB4IDE4cHggMHB4IHJnYmEoMCwgMCwgMCwgMC4xMil9Lm1hdC1lbGV2YXRpb24tejdbX25nY29udGVudC0lQ09NUCVde2JveC1zaGFkb3c6MHB4IDRweCA1cHggLTJweCByZ2JhKDAsIDAsIDAsIDAuMiksMHB4IDdweCAxMHB4IDFweCByZ2JhKDAsIDAsIDAsIDAuMTQpLDBweCAycHggMTZweCAxcHggcmdiYSgwLCAwLCAwLCAwLjEyKX0ubWF0LWVsZXZhdGlvbi16OFtfbmdjb250ZW50LSVDT01QJV17Ym94LXNoYWRvdzowcHggNXB4IDVweCAtM3B4IHJnYmEoMCwgMCwgMCwgMC4yKSwwcHggOHB4IDEwcHggMXB4IHJnYmEoMCwgMCwgMCwgMC4xNCksMHB4IDNweCAxNHB4IDJweCByZ2JhKDAsIDAsIDAsIDAuMTIpfS5tYXQtZWxldmF0aW9uLXo5W19uZ2NvbnRlbnQtJUNPTVAlXXtib3gtc2hhZG93OjBweCA1cHggNnB4IC0zcHggcmdiYSgwLCAwLCAwLCAwLjIpLDBweCA5cHggMTJweCAxcHggcmdiYSgwLCAwLCAwLCAwLjE0KSwwcHggM3B4IDE2cHggMnB4IHJnYmEoMCwgMCwgMCwgMC4xMil9Lm1hdC1lbGV2YXRpb24tejEwW19uZ2NvbnRlbnQtJUNPTVAlXXtib3gtc2hhZG93OjBweCA2cHggNnB4IC0zcHggcmdiYSgwLCAwLCAwLCAwLjIpLDBweCAxMHB4IDE0cHggMXB4IHJnYmEoMCwgMCwgMCwgMC4xNCksMHB4IDRweCAxOHB4IDNweCByZ2JhKDAsIDAsIDAsIDAuMTIpfS5tYXQtZWxldmF0aW9uLXoxMVtfbmdjb250ZW50LSVDT01QJV17Ym94LXNoYWRvdzowcHggNnB4IDdweCAtNHB4IHJnYmEoMCwgMCwgMCwgMC4yKSwwcHggMTFweCAxNXB4IDFweCByZ2JhKDAsIDAsIDAsIDAuMTQpLDBweCA0cHggMjBweCAzcHggcmdiYSgwLCAwLCAwLCAwLjEyKX0ubWF0LWVsZXZhdGlvbi16MTJbX25nY29udGVudC0lQ09NUCVde2JveC1zaGFkb3c6MHB4IDdweCA4cHggLTRweCByZ2JhKDAsIDAsIDAsIDAuMiksMHB4IDEycHggMTdweCAycHggcmdiYSgwLCAwLCAwLCAwLjE0KSwwcHggNXB4IDIycHggNHB4IHJnYmEoMCwgMCwgMCwgMC4xMil9Lm1hdC1lbGV2YXRpb24tejEzW19uZ2NvbnRlbnQtJUNPTVAlXXtib3gtc2hhZG93OjBweCA3cHggOHB4IC00cHggcmdiYSgwLCAwLCAwLCAwLjIpLDBweCAxM3B4IDE5cHggMnB4IHJnYmEoMCwgMCwgMCwgMC4xNCksMHB4IDVweCAyNHB4IDRweCByZ2JhKDAsIDAsIDAsIDAuMTIpfS5tYXQtZWxldmF0aW9uLXoxNFtfbmdjb250ZW50LSVDT01QJV17Ym94LXNoYWRvdzowcHggN3B4IDlweCAtNHB4IHJnYmEoMCwgMCwgMCwgMC4yKSwwcHggMTRweCAyMXB4IDJweCByZ2JhKDAsIDAsIDAsIDAuMTQpLDBweCA1cHggMjZweCA0cHggcmdiYSgwLCAwLCAwLCAwLjEyKX0ubWF0LWVsZXZhdGlvbi16MTVbX25nY29udGVudC0lQ09NUCVde2JveC1zaGFkb3c6MHB4IDhweCA5cHggLTVweCByZ2JhKDAsIDAsIDAsIDAuMiksMHB4IDE1cHggMjJweCAycHggcmdiYSgwLCAwLCAwLCAwLjE0KSwwcHggNnB4IDI4cHggNXB4IHJnYmEoMCwgMCwgMCwgMC4xMil9Lm1hdC1lbGV2YXRpb24tejE2W19uZ2NvbnRlbnQtJUNPTVAlXXtib3gtc2hhZG93OjBweCA4cHggMTBweCAtNXB4IHJnYmEoMCwgMCwgMCwgMC4yKSwwcHggMTZweCAyNHB4IDJweCByZ2JhKDAsIDAsIDAsIDAuMTQpLDBweCA2cHggMzBweCA1cHggcmdiYSgwLCAwLCAwLCAwLjEyKX0ubWF0LWVsZXZhdGlvbi16MTdbX25nY29udGVudC0lQ09NUCVde2JveC1zaGFkb3c6MHB4IDhweCAxMXB4IC01cHggcmdiYSgwLCAwLCAwLCAwLjIpLDBweCAxN3B4IDI2cHggMnB4IHJnYmEoMCwgMCwgMCwgMC4xNCksMHB4IDZweCAzMnB4IDVweCByZ2JhKDAsIDAsIDAsIDAuMTIpfS5tYXQtZWxldmF0aW9uLXoxOFtfbmdjb250ZW50LSVDT01QJV17Ym94LXNoYWRvdzowcHggOXB4IDExcHggLTVweCByZ2JhKDAsIDAsIDAsIDAuMiksMHB4IDE4cHggMjhweCAycHggcmdiYSgwLCAwLCAwLCAwLjE0KSwwcHggN3B4IDM0cHggNnB4IHJnYmEoMCwgMCwgMCwgMC4xMil9Lm1hdC1lbGV2YXRpb24tejE5W19uZ2NvbnRlbnQtJUNPTVAlXXtib3gtc2hhZG93OjBweCA5cHggMTJweCAtNnB4IHJnYmEoMCwgMCwgMCwgMC4yKSwwcHggMTlweCAyOXB4IDJweCByZ2JhKDAsIDAsIDAsIDAuMTQpLDBweCA3cHggMzZweCA2cHggcmdiYSgwLCAwLCAwLCAwLjEyKX0ubWF0LWVsZXZhdGlvbi16MjBbX25nY29udGVudC0lQ09NUCVde2JveC1zaGFkb3c6MHB4IDEwcHggMTNweCAtNnB4IHJnYmEoMCwgMCwgMCwgMC4yKSwwcHggMjBweCAzMXB4IDNweCByZ2JhKDAsIDAsIDAsIDAuMTQpLDBweCA4cHggMzhweCA3cHggcmdiYSgwLCAwLCAwLCAwLjEyKX0ubWF0LWVsZXZhdGlvbi16MjFbX25nY29udGVudC0lQ09NUCVde2JveC1zaGFkb3c6MHB4IDEwcHggMTNweCAtNnB4IHJnYmEoMCwgMCwgMCwgMC4yKSwwcHggMjFweCAzM3B4IDNweCByZ2JhKDAsIDAsIDAsIDAuMTQpLDBweCA4cHggNDBweCA3cHggcmdiYSgwLCAwLCAwLCAwLjEyKX0ubWF0LWVsZXZhdGlvbi16MjJbX25nY29udGVudC0lQ09NUCVde2JveC1zaGFkb3c6MHB4IDEwcHggMTRweCAtNnB4IHJnYmEoMCwgMCwgMCwgMC4yKSwwcHggMjJweCAzNXB4IDNweCByZ2JhKDAsIDAsIDAsIDAuMTQpLDBweCA4cHggNDJweCA3cHggcmdiYSgwLCAwLCAwLCAwLjEyKX0ubWF0LWVsZXZhdGlvbi16MjNbX25nY29udGVudC0lQ09NUCVde2JveC1zaGFkb3c6MHB4IDExcHggMTRweCAtN3B4IHJnYmEoMCwgMCwgMCwgMC4yKSwwcHggMjNweCAzNnB4IDNweCByZ2JhKDAsIDAsIDAsIDAuMTQpLDBweCA5cHggNDRweCA4cHggcmdiYSgwLCAwLCAwLCAwLjEyKX0ubWF0LWVsZXZhdGlvbi16MjRbX25nY29udGVudC0lQ09NUCVde2JveC1zaGFkb3c6MHB4IDExcHggMTVweCAtN3B4IHJnYmEoMCwgMCwgMCwgMC4yKSwwcHggMjRweCAzOHB4IDNweCByZ2JhKDAsIDAsIDAsIDAuMTQpLDBweCA5cHggNDZweCA4cHggcmdiYSgwLCAwLCAwLCAwLjEyKX0ubWF0LXRoZW1lLWxvYWRlZC1tYXJrZXJbX25nY29udGVudC0lQ09NUCVde2Rpc3BsYXk6bm9uZX0ubWF0LWF1dG9jb21wbGV0ZS1wYW5lbFtfbmdjb250ZW50LSVDT01QJV17YmFja2dyb3VuZDojZmZmO2NvbG9yOiMyMTIxMjF9Lm1hdC1hdXRvY29tcGxldGUtcGFuZWxbX25nY29udGVudC0lQ09NUCVdOm5vdChbY2xhc3MqPW1hdC1lbGV2YXRpb24tel0pe2JveC1zaGFkb3c6MHB4IDJweCA0cHggLTFweCByZ2JhKDAsIDAsIDAsIDAuMiksMHB4IDRweCA1cHggMHB4IHJnYmEoMCwgMCwgMCwgMC4xNCksMHB4IDFweCAxMHB4IDBweCByZ2JhKDAsIDAsIDAsIDAuMTIpfS5tYXQtYXV0b2NvbXBsZXRlLXBhbmVsW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtb3B0aW9uLm1hdC1zZWxlY3RlZFtfbmdjb250ZW50LSVDT01QJV06bm90KC5tYXQtYWN0aXZlKTpub3QoOmhvdmVyKXtiYWNrZ3JvdW5kOiNmZmZ9Lm1hdC1hdXRvY29tcGxldGUtcGFuZWxbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1vcHRpb24ubWF0LXNlbGVjdGVkW19uZ2NvbnRlbnQtJUNPTVAlXTpub3QoLm1hdC1hY3RpdmUpOm5vdCg6aG92ZXIpOm5vdCgubWF0LW9wdGlvbi1kaXNhYmxlZCl7Y29sb3I6IzIxMjEyMX0ubWF0LWJhZGdlLWNvbnRlbnRbX25nY29udGVudC0lQ09NUCVde2NvbG9yOiNmZmY7YmFja2dyb3VuZDojZjU3YzAwfS5jZGstaGlnaC1jb250cmFzdC1hY3RpdmVbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1iYWRnZS1jb250ZW50W19uZ2NvbnRlbnQtJUNPTVAlXXtvdXRsaW5lOnNvbGlkIDFweDtib3JkZXItcmFkaXVzOjB9Lm1hdC1iYWRnZS1hY2NlbnRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1iYWRnZS1jb250ZW50W19uZ2NvbnRlbnQtJUNPTVAlXXtiYWNrZ3JvdW5kOiNmZjk4MDA7Y29sb3I6I2ZmZn0ubWF0LWJhZGdlLXdhcm5bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1iYWRnZS1jb250ZW50W19uZ2NvbnRlbnQtJUNPTVAlXXtjb2xvcjojZmZmO2JhY2tncm91bmQ6I2Y0NDMzNn0ubWF0LWJhZGdlW19uZ2NvbnRlbnQtJUNPTVAlXXtwb3NpdGlvbjpyZWxhdGl2ZX0ubWF0LWJhZGdlLWhpZGRlbltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWJhZGdlLWNvbnRlbnRbX25nY29udGVudC0lQ09NUCVde2Rpc3BsYXk6bm9uZX0ubWF0LWJhZGdlLWRpc2FibGVkW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtYmFkZ2UtY29udGVudFtfbmdjb250ZW50LSVDT01QJV17YmFja2dyb3VuZDojYjliOWI5O2NvbG9yOiM3NTc1NzV9Lm1hdC1iYWRnZS1jb250ZW50W19uZ2NvbnRlbnQtJUNPTVAlXXtwb3NpdGlvbjphYnNvbHV0ZTt0ZXh0LWFsaWduOmNlbnRlcjtkaXNwbGF5OmlubGluZS1ibG9jaztib3JkZXItcmFkaXVzOjUwJTt0cmFuc2l0aW9uOnRyYW5zZm9ybSAyMDBtcyBlYXNlLWluLW91dDt0cmFuc2Zvcm06c2NhbGUoMC42KTtvdmVyZmxvdzpoaWRkZW47d2hpdGUtc3BhY2U6bm93cmFwO3RleHQtb3ZlcmZsb3c6ZWxsaXBzaXM7cG9pbnRlci1ldmVudHM6bm9uZX0ubmctYW5pbWF0ZS1kaXNhYmxlZFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWJhZGdlLWNvbnRlbnRbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWJhZGdlLWNvbnRlbnQuX21hdC1hbmltYXRpb24tbm9vcGFibGVbX25nY29udGVudC0lQ09NUCVde3RyYW5zaXRpb246bm9uZX0ubWF0LWJhZGdlLWNvbnRlbnQubWF0LWJhZGdlLWFjdGl2ZVtfbmdjb250ZW50LSVDT01QJV17dHJhbnNmb3JtOm5vbmV9Lm1hdC1iYWRnZS1zbWFsbFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWJhZGdlLWNvbnRlbnRbX25nY29udGVudC0lQ09NUCVde3dpZHRoOjE2cHg7aGVpZ2h0OjE2cHg7bGluZS1oZWlnaHQ6MTZweH0ubWF0LWJhZGdlLXNtYWxsLm1hdC1iYWRnZS1hYm92ZVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWJhZGdlLWNvbnRlbnRbX25nY29udGVudC0lQ09NUCVde3RvcDotOHB4fS5tYXQtYmFkZ2Utc21hbGwubWF0LWJhZGdlLWJlbG93W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtYmFkZ2UtY29udGVudFtfbmdjb250ZW50LSVDT01QJV17Ym90dG9tOi04cHh9Lm1hdC1iYWRnZS1zbWFsbC5tYXQtYmFkZ2UtYmVmb3JlW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtYmFkZ2UtY29udGVudFtfbmdjb250ZW50LSVDT01QJV17bGVmdDotMTZweH1bZGlyPXJ0bF1bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1iYWRnZS1zbWFsbC5tYXQtYmFkZ2UtYmVmb3JlW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtYmFkZ2UtY29udGVudFtfbmdjb250ZW50LSVDT01QJV17bGVmdDphdXRvO3JpZ2h0Oi0xNnB4fS5tYXQtYmFkZ2Utc21hbGwubWF0LWJhZGdlLWFmdGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtYmFkZ2UtY29udGVudFtfbmdjb250ZW50LSVDT01QJV17cmlnaHQ6LTE2cHh9W2Rpcj1ydGxdW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtYmFkZ2Utc21hbGwubWF0LWJhZGdlLWFmdGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtYmFkZ2UtY29udGVudFtfbmdjb250ZW50LSVDT01QJV17cmlnaHQ6YXV0bztsZWZ0Oi0xNnB4fS5tYXQtYmFkZ2Utc21hbGwubWF0LWJhZGdlLW92ZXJsYXAubWF0LWJhZGdlLWJlZm9yZVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWJhZGdlLWNvbnRlbnRbX25nY29udGVudC0lQ09NUCVde2xlZnQ6LThweH1bZGlyPXJ0bF1bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1iYWRnZS1zbWFsbC5tYXQtYmFkZ2Utb3ZlcmxhcC5tYXQtYmFkZ2UtYmVmb3JlW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtYmFkZ2UtY29udGVudFtfbmdjb250ZW50LSVDT01QJV17bGVmdDphdXRvO3JpZ2h0Oi04cHh9Lm1hdC1iYWRnZS1zbWFsbC5tYXQtYmFkZ2Utb3ZlcmxhcC5tYXQtYmFkZ2UtYWZ0ZXJbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1iYWRnZS1jb250ZW50W19uZ2NvbnRlbnQtJUNPTVAlXXtyaWdodDotOHB4fVtkaXI9cnRsXVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWJhZGdlLXNtYWxsLm1hdC1iYWRnZS1vdmVybGFwLm1hdC1iYWRnZS1hZnRlcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWJhZGdlLWNvbnRlbnRbX25nY29udGVudC0lQ09NUCVde3JpZ2h0OmF1dG87bGVmdDotOHB4fS5tYXQtYmFkZ2UtbWVkaXVtW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtYmFkZ2UtY29udGVudFtfbmdjb250ZW50LSVDT01QJV17d2lkdGg6MjJweDtoZWlnaHQ6MjJweDtsaW5lLWhlaWdodDoyMnB4fS5tYXQtYmFkZ2UtbWVkaXVtLm1hdC1iYWRnZS1hYm92ZVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWJhZGdlLWNvbnRlbnRbX25nY29udGVudC0lQ09NUCVde3RvcDotMTFweH0ubWF0LWJhZGdlLW1lZGl1bS5tYXQtYmFkZ2UtYmVsb3dbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1iYWRnZS1jb250ZW50W19uZ2NvbnRlbnQtJUNPTVAlXXtib3R0b206LTExcHh9Lm1hdC1iYWRnZS1tZWRpdW0ubWF0LWJhZGdlLWJlZm9yZVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWJhZGdlLWNvbnRlbnRbX25nY29udGVudC0lQ09NUCVde2xlZnQ6LTIycHh9W2Rpcj1ydGxdW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtYmFkZ2UtbWVkaXVtLm1hdC1iYWRnZS1iZWZvcmVbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1iYWRnZS1jb250ZW50W19uZ2NvbnRlbnQtJUNPTVAlXXtsZWZ0OmF1dG87cmlnaHQ6LTIycHh9Lm1hdC1iYWRnZS1tZWRpdW0ubWF0LWJhZGdlLWFmdGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtYmFkZ2UtY29udGVudFtfbmdjb250ZW50LSVDT01QJV17cmlnaHQ6LTIycHh9W2Rpcj1ydGxdW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtYmFkZ2UtbWVkaXVtLm1hdC1iYWRnZS1hZnRlcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWJhZGdlLWNvbnRlbnRbX25nY29udGVudC0lQ09NUCVde3JpZ2h0OmF1dG87bGVmdDotMjJweH0ubWF0LWJhZGdlLW1lZGl1bS5tYXQtYmFkZ2Utb3ZlcmxhcC5tYXQtYmFkZ2UtYmVmb3JlW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtYmFkZ2UtY29udGVudFtfbmdjb250ZW50LSVDT01QJV17bGVmdDotMTFweH1bZGlyPXJ0bF1bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1iYWRnZS1tZWRpdW0ubWF0LWJhZGdlLW92ZXJsYXAubWF0LWJhZGdlLWJlZm9yZVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWJhZGdlLWNvbnRlbnRbX25nY29udGVudC0lQ09NUCVde2xlZnQ6YXV0bztyaWdodDotMTFweH0ubWF0LWJhZGdlLW1lZGl1bS5tYXQtYmFkZ2Utb3ZlcmxhcC5tYXQtYmFkZ2UtYWZ0ZXJbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1iYWRnZS1jb250ZW50W19uZ2NvbnRlbnQtJUNPTVAlXXtyaWdodDotMTFweH1bZGlyPXJ0bF1bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1iYWRnZS1tZWRpdW0ubWF0LWJhZGdlLW92ZXJsYXAubWF0LWJhZGdlLWFmdGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtYmFkZ2UtY29udGVudFtfbmdjb250ZW50LSVDT01QJV17cmlnaHQ6YXV0bztsZWZ0Oi0xMXB4fS5tYXQtYmFkZ2UtbGFyZ2VbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1iYWRnZS1jb250ZW50W19uZ2NvbnRlbnQtJUNPTVAlXXt3aWR0aDoyOHB4O2hlaWdodDoyOHB4O2xpbmUtaGVpZ2h0OjI4cHh9Lm1hdC1iYWRnZS1sYXJnZS5tYXQtYmFkZ2UtYWJvdmVbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1iYWRnZS1jb250ZW50W19uZ2NvbnRlbnQtJUNPTVAlXXt0b3A6LTE0cHh9Lm1hdC1iYWRnZS1sYXJnZS5tYXQtYmFkZ2UtYmVsb3dbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1iYWRnZS1jb250ZW50W19uZ2NvbnRlbnQtJUNPTVAlXXtib3R0b206LTE0cHh9Lm1hdC1iYWRnZS1sYXJnZS5tYXQtYmFkZ2UtYmVmb3JlW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtYmFkZ2UtY29udGVudFtfbmdjb250ZW50LSVDT01QJV17bGVmdDotMjhweH1bZGlyPXJ0bF1bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1iYWRnZS1sYXJnZS5tYXQtYmFkZ2UtYmVmb3JlW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtYmFkZ2UtY29udGVudFtfbmdjb250ZW50LSVDT01QJV17bGVmdDphdXRvO3JpZ2h0Oi0yOHB4fS5tYXQtYmFkZ2UtbGFyZ2UubWF0LWJhZGdlLWFmdGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtYmFkZ2UtY29udGVudFtfbmdjb250ZW50LSVDT01QJV17cmlnaHQ6LTI4cHh9W2Rpcj1ydGxdW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtYmFkZ2UtbGFyZ2UubWF0LWJhZGdlLWFmdGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtYmFkZ2UtY29udGVudFtfbmdjb250ZW50LSVDT01QJV17cmlnaHQ6YXV0bztsZWZ0Oi0yOHB4fS5tYXQtYmFkZ2UtbGFyZ2UubWF0LWJhZGdlLW92ZXJsYXAubWF0LWJhZGdlLWJlZm9yZVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWJhZGdlLWNvbnRlbnRbX25nY29udGVudC0lQ09NUCVde2xlZnQ6LTE0cHh9W2Rpcj1ydGxdW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtYmFkZ2UtbGFyZ2UubWF0LWJhZGdlLW92ZXJsYXAubWF0LWJhZGdlLWJlZm9yZVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWJhZGdlLWNvbnRlbnRbX25nY29udGVudC0lQ09NUCVde2xlZnQ6YXV0bztyaWdodDotMTRweH0ubWF0LWJhZGdlLWxhcmdlLm1hdC1iYWRnZS1vdmVybGFwLm1hdC1iYWRnZS1hZnRlcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWJhZGdlLWNvbnRlbnRbX25nY29udGVudC0lQ09NUCVde3JpZ2h0Oi0xNHB4fVtkaXI9cnRsXVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWJhZGdlLWxhcmdlLm1hdC1iYWRnZS1vdmVybGFwLm1hdC1iYWRnZS1hZnRlcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWJhZGdlLWNvbnRlbnRbX25nY29udGVudC0lQ09NUCVde3JpZ2h0OmF1dG87bGVmdDotMTRweH0ubWF0LWJvdHRvbS1zaGVldC1jb250YWluZXJbX25nY29udGVudC0lQ09NUCVde2JveC1zaGFkb3c6MHB4IDhweCAxMHB4IC01cHggcmdiYSgwLCAwLCAwLCAwLjIpLDBweCAxNnB4IDI0cHggMnB4IHJnYmEoMCwgMCwgMCwgMC4xNCksMHB4IDZweCAzMHB4IDVweCByZ2JhKDAsIDAsIDAsIDAuMTIpO2JhY2tncm91bmQ6I2ZmZjtjb2xvcjojMjEyMTIxfS5tYXQtYnV0dG9uW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1pY29uLWJ1dHRvbltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtc3Ryb2tlZC1idXR0b25bX25nY29udGVudC0lQ09NUCVde2NvbG9yOmluaGVyaXQ7YmFja2dyb3VuZDp0cmFuc3BhcmVudH0ubWF0LWJ1dHRvbi5tYXQtcHJpbWFyeVtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtaWNvbi1idXR0b24ubWF0LXByaW1hcnlbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXN0cm9rZWQtYnV0dG9uLm1hdC1wcmltYXJ5W19uZ2NvbnRlbnQtJUNPTVAlXXtjb2xvcjojZjU3YzAwfS5tYXQtYnV0dG9uLm1hdC1hY2NlbnRbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWljb24tYnV0dG9uLm1hdC1hY2NlbnRbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXN0cm9rZWQtYnV0dG9uLm1hdC1hY2NlbnRbX25nY29udGVudC0lQ09NUCVde2NvbG9yOiNmZjk4MDB9Lm1hdC1idXR0b24ubWF0LXdhcm5bX25nY29udGVudC0lQ09NUCVdLCAubWF0LWljb24tYnV0dG9uLm1hdC13YXJuW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1zdHJva2VkLWJ1dHRvbi5tYXQtd2Fybltfbmdjb250ZW50LSVDT01QJV17Y29sb3I6I2Y0NDMzNn0ubWF0LWJ1dHRvbi5tYXQtcHJpbWFyeS5tYXQtYnV0dG9uLWRpc2FibGVkW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1idXR0b24ubWF0LWFjY2VudC5tYXQtYnV0dG9uLWRpc2FibGVkW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1idXR0b24ubWF0LXdhcm4ubWF0LWJ1dHRvbi1kaXNhYmxlZFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtYnV0dG9uLm1hdC1idXR0b24tZGlzYWJsZWQubWF0LWJ1dHRvbi1kaXNhYmxlZFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtaWNvbi1idXR0b24ubWF0LXByaW1hcnkubWF0LWJ1dHRvbi1kaXNhYmxlZFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtaWNvbi1idXR0b24ubWF0LWFjY2VudC5tYXQtYnV0dG9uLWRpc2FibGVkW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1pY29uLWJ1dHRvbi5tYXQtd2Fybi5tYXQtYnV0dG9uLWRpc2FibGVkW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1pY29uLWJ1dHRvbi5tYXQtYnV0dG9uLWRpc2FibGVkLm1hdC1idXR0b24tZGlzYWJsZWRbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXN0cm9rZWQtYnV0dG9uLm1hdC1wcmltYXJ5Lm1hdC1idXR0b24tZGlzYWJsZWRbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXN0cm9rZWQtYnV0dG9uLm1hdC1hY2NlbnQubWF0LWJ1dHRvbi1kaXNhYmxlZFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtc3Ryb2tlZC1idXR0b24ubWF0LXdhcm4ubWF0LWJ1dHRvbi1kaXNhYmxlZFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtc3Ryb2tlZC1idXR0b24ubWF0LWJ1dHRvbi1kaXNhYmxlZC5tYXQtYnV0dG9uLWRpc2FibGVkW19uZ2NvbnRlbnQtJUNPTVAlXXtjb2xvcjpyZ2JhKDAsMCwwLC4yNil9Lm1hdC1idXR0b24ubWF0LXByaW1hcnlbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1idXR0b24tZm9jdXMtb3ZlcmxheVtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtaWNvbi1idXR0b24ubWF0LXByaW1hcnlbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1idXR0b24tZm9jdXMtb3ZlcmxheVtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtc3Ryb2tlZC1idXR0b24ubWF0LXByaW1hcnlbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1idXR0b24tZm9jdXMtb3ZlcmxheVtfbmdjb250ZW50LSVDT01QJV17YmFja2dyb3VuZC1jb2xvcjojZjU3YzAwfS5tYXQtYnV0dG9uLm1hdC1hY2NlbnRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1idXR0b24tZm9jdXMtb3ZlcmxheVtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtaWNvbi1idXR0b24ubWF0LWFjY2VudFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWJ1dHRvbi1mb2N1cy1vdmVybGF5W19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1zdHJva2VkLWJ1dHRvbi5tYXQtYWNjZW50W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtYnV0dG9uLWZvY3VzLW92ZXJsYXlbX25nY29udGVudC0lQ09NUCVde2JhY2tncm91bmQtY29sb3I6I2ZmOTgwMH0ubWF0LWJ1dHRvbi5tYXQtd2Fybltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWJ1dHRvbi1mb2N1cy1vdmVybGF5W19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1pY29uLWJ1dHRvbi5tYXQtd2Fybltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWJ1dHRvbi1mb2N1cy1vdmVybGF5W19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1zdHJva2VkLWJ1dHRvbi5tYXQtd2Fybltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWJ1dHRvbi1mb2N1cy1vdmVybGF5W19uZ2NvbnRlbnQtJUNPTVAlXXtiYWNrZ3JvdW5kLWNvbG9yOiNmNDQzMzZ9Lm1hdC1idXR0b24ubWF0LWJ1dHRvbi1kaXNhYmxlZFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWJ1dHRvbi1mb2N1cy1vdmVybGF5W19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1pY29uLWJ1dHRvbi5tYXQtYnV0dG9uLWRpc2FibGVkW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtYnV0dG9uLWZvY3VzLW92ZXJsYXlbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXN0cm9rZWQtYnV0dG9uLm1hdC1idXR0b24tZGlzYWJsZWRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1idXR0b24tZm9jdXMtb3ZlcmxheVtfbmdjb250ZW50LSVDT01QJV17YmFja2dyb3VuZC1jb2xvcjp0cmFuc3BhcmVudH0ubWF0LWJ1dHRvbltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXJpcHBsZS1lbGVtZW50W19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1pY29uLWJ1dHRvbltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXJpcHBsZS1lbGVtZW50W19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1zdHJva2VkLWJ1dHRvbltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXJpcHBsZS1lbGVtZW50W19uZ2NvbnRlbnQtJUNPTVAlXXtvcGFjaXR5Oi4xO2JhY2tncm91bmQtY29sb3I6Y3VycmVudENvbG9yfS5tYXQtYnV0dG9uLWZvY3VzLW92ZXJsYXlbX25nY29udGVudC0lQ09NUCVde2JhY2tncm91bmQ6IzAwMH0ubWF0LXN0cm9rZWQtYnV0dG9uW19uZ2NvbnRlbnQtJUNPTVAlXTpub3QoLm1hdC1idXR0b24tZGlzYWJsZWQpe2JvcmRlci1jb2xvcjpyZ2JhKDAsMCwwLC4xMil9Lm1hdC1mbGF0LWJ1dHRvbltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtcmFpc2VkLWJ1dHRvbltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtZmFiW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1taW5pLWZhYltfbmdjb250ZW50LSVDT01QJV17Y29sb3I6IzIxMjEyMTtiYWNrZ3JvdW5kLWNvbG9yOiNmZmZ9Lm1hdC1mbGF0LWJ1dHRvbi5tYXQtcHJpbWFyeVtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtcmFpc2VkLWJ1dHRvbi5tYXQtcHJpbWFyeVtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtZmFiLm1hdC1wcmltYXJ5W19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1taW5pLWZhYi5tYXQtcHJpbWFyeVtfbmdjb250ZW50LSVDT01QJV17Y29sb3I6I2ZmZn0ubWF0LWZsYXQtYnV0dG9uLm1hdC1hY2NlbnRbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXJhaXNlZC1idXR0b24ubWF0LWFjY2VudFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtZmFiLm1hdC1hY2NlbnRbX25nY29udGVudC0lQ09NUCVdLCAubWF0LW1pbmktZmFiLm1hdC1hY2NlbnRbX25nY29udGVudC0lQ09NUCVde2NvbG9yOiNmZmZ9Lm1hdC1mbGF0LWJ1dHRvbi5tYXQtd2Fybltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtcmFpc2VkLWJ1dHRvbi5tYXQtd2Fybltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtZmFiLm1hdC13YXJuW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1taW5pLWZhYi5tYXQtd2Fybltfbmdjb250ZW50LSVDT01QJV17Y29sb3I6I2ZmZn0ubWF0LWZsYXQtYnV0dG9uLm1hdC1wcmltYXJ5Lm1hdC1idXR0b24tZGlzYWJsZWRbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWZsYXQtYnV0dG9uLm1hdC1hY2NlbnQubWF0LWJ1dHRvbi1kaXNhYmxlZFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtZmxhdC1idXR0b24ubWF0LXdhcm4ubWF0LWJ1dHRvbi1kaXNhYmxlZFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtZmxhdC1idXR0b24ubWF0LWJ1dHRvbi1kaXNhYmxlZC5tYXQtYnV0dG9uLWRpc2FibGVkW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1yYWlzZWQtYnV0dG9uLm1hdC1wcmltYXJ5Lm1hdC1idXR0b24tZGlzYWJsZWRbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXJhaXNlZC1idXR0b24ubWF0LWFjY2VudC5tYXQtYnV0dG9uLWRpc2FibGVkW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1yYWlzZWQtYnV0dG9uLm1hdC13YXJuLm1hdC1idXR0b24tZGlzYWJsZWRbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXJhaXNlZC1idXR0b24ubWF0LWJ1dHRvbi1kaXNhYmxlZC5tYXQtYnV0dG9uLWRpc2FibGVkW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1mYWIubWF0LXByaW1hcnkubWF0LWJ1dHRvbi1kaXNhYmxlZFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtZmFiLm1hdC1hY2NlbnQubWF0LWJ1dHRvbi1kaXNhYmxlZFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtZmFiLm1hdC13YXJuLm1hdC1idXR0b24tZGlzYWJsZWRbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWZhYi5tYXQtYnV0dG9uLWRpc2FibGVkLm1hdC1idXR0b24tZGlzYWJsZWRbX25nY29udGVudC0lQ09NUCVdLCAubWF0LW1pbmktZmFiLm1hdC1wcmltYXJ5Lm1hdC1idXR0b24tZGlzYWJsZWRbX25nY29udGVudC0lQ09NUCVdLCAubWF0LW1pbmktZmFiLm1hdC1hY2NlbnQubWF0LWJ1dHRvbi1kaXNhYmxlZFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtbWluaS1mYWIubWF0LXdhcm4ubWF0LWJ1dHRvbi1kaXNhYmxlZFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtbWluaS1mYWIubWF0LWJ1dHRvbi1kaXNhYmxlZC5tYXQtYnV0dG9uLWRpc2FibGVkW19uZ2NvbnRlbnQtJUNPTVAlXXtjb2xvcjpyZ2JhKDAsMCwwLC4yNil9Lm1hdC1mbGF0LWJ1dHRvbi5tYXQtcHJpbWFyeVtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtcmFpc2VkLWJ1dHRvbi5tYXQtcHJpbWFyeVtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtZmFiLm1hdC1wcmltYXJ5W19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1taW5pLWZhYi5tYXQtcHJpbWFyeVtfbmdjb250ZW50LSVDT01QJV17YmFja2dyb3VuZC1jb2xvcjojZjU3YzAwfS5tYXQtZmxhdC1idXR0b24ubWF0LWFjY2VudFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtcmFpc2VkLWJ1dHRvbi5tYXQtYWNjZW50W19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1mYWIubWF0LWFjY2VudFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtbWluaS1mYWIubWF0LWFjY2VudFtfbmdjb250ZW50LSVDT01QJV17YmFja2dyb3VuZC1jb2xvcjojZmY5ODAwfS5tYXQtZmxhdC1idXR0b24ubWF0LXdhcm5bX25nY29udGVudC0lQ09NUCVdLCAubWF0LXJhaXNlZC1idXR0b24ubWF0LXdhcm5bX25nY29udGVudC0lQ09NUCVdLCAubWF0LWZhYi5tYXQtd2Fybltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtbWluaS1mYWIubWF0LXdhcm5bX25nY29udGVudC0lQ09NUCVde2JhY2tncm91bmQtY29sb3I6I2Y0NDMzNn0ubWF0LWZsYXQtYnV0dG9uLm1hdC1wcmltYXJ5Lm1hdC1idXR0b24tZGlzYWJsZWRbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWZsYXQtYnV0dG9uLm1hdC1hY2NlbnQubWF0LWJ1dHRvbi1kaXNhYmxlZFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtZmxhdC1idXR0b24ubWF0LXdhcm4ubWF0LWJ1dHRvbi1kaXNhYmxlZFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtZmxhdC1idXR0b24ubWF0LWJ1dHRvbi1kaXNhYmxlZC5tYXQtYnV0dG9uLWRpc2FibGVkW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1yYWlzZWQtYnV0dG9uLm1hdC1wcmltYXJ5Lm1hdC1idXR0b24tZGlzYWJsZWRbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXJhaXNlZC1idXR0b24ubWF0LWFjY2VudC5tYXQtYnV0dG9uLWRpc2FibGVkW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1yYWlzZWQtYnV0dG9uLm1hdC13YXJuLm1hdC1idXR0b24tZGlzYWJsZWRbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXJhaXNlZC1idXR0b24ubWF0LWJ1dHRvbi1kaXNhYmxlZC5tYXQtYnV0dG9uLWRpc2FibGVkW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1mYWIubWF0LXByaW1hcnkubWF0LWJ1dHRvbi1kaXNhYmxlZFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtZmFiLm1hdC1hY2NlbnQubWF0LWJ1dHRvbi1kaXNhYmxlZFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtZmFiLm1hdC13YXJuLm1hdC1idXR0b24tZGlzYWJsZWRbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWZhYi5tYXQtYnV0dG9uLWRpc2FibGVkLm1hdC1idXR0b24tZGlzYWJsZWRbX25nY29udGVudC0lQ09NUCVdLCAubWF0LW1pbmktZmFiLm1hdC1wcmltYXJ5Lm1hdC1idXR0b24tZGlzYWJsZWRbX25nY29udGVudC0lQ09NUCVdLCAubWF0LW1pbmktZmFiLm1hdC1hY2NlbnQubWF0LWJ1dHRvbi1kaXNhYmxlZFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtbWluaS1mYWIubWF0LXdhcm4ubWF0LWJ1dHRvbi1kaXNhYmxlZFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtbWluaS1mYWIubWF0LWJ1dHRvbi1kaXNhYmxlZC5tYXQtYnV0dG9uLWRpc2FibGVkW19uZ2NvbnRlbnQtJUNPTVAlXXtiYWNrZ3JvdW5kLWNvbG9yOnJnYmEoMCwwLDAsLjEyKX0ubWF0LWZsYXQtYnV0dG9uLm1hdC1wcmltYXJ5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtcmlwcGxlLWVsZW1lbnRbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXJhaXNlZC1idXR0b24ubWF0LXByaW1hcnlbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1yaXBwbGUtZWxlbWVudFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtZmFiLm1hdC1wcmltYXJ5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtcmlwcGxlLWVsZW1lbnRbX25nY29udGVudC0lQ09NUCVdLCAubWF0LW1pbmktZmFiLm1hdC1wcmltYXJ5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtcmlwcGxlLWVsZW1lbnRbX25nY29udGVudC0lQ09NUCVde2JhY2tncm91bmQtY29sb3I6cmdiYSgyNTUsMjU1LDI1NSwuMSl9Lm1hdC1mbGF0LWJ1dHRvbi5tYXQtYWNjZW50W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtcmlwcGxlLWVsZW1lbnRbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXJhaXNlZC1idXR0b24ubWF0LWFjY2VudFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXJpcHBsZS1lbGVtZW50W19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1mYWIubWF0LWFjY2VudFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXJpcHBsZS1lbGVtZW50W19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1taW5pLWZhYi5tYXQtYWNjZW50W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtcmlwcGxlLWVsZW1lbnRbX25nY29udGVudC0lQ09NUCVde2JhY2tncm91bmQtY29sb3I6cmdiYSgyNTUsMjU1LDI1NSwuMSl9Lm1hdC1mbGF0LWJ1dHRvbi5tYXQtd2Fybltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXJpcHBsZS1lbGVtZW50W19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1yYWlzZWQtYnV0dG9uLm1hdC13YXJuW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtcmlwcGxlLWVsZW1lbnRbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWZhYi5tYXQtd2Fybltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXJpcHBsZS1lbGVtZW50W19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1taW5pLWZhYi5tYXQtd2Fybltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXJpcHBsZS1lbGVtZW50W19uZ2NvbnRlbnQtJUNPTVAlXXtiYWNrZ3JvdW5kLWNvbG9yOnJnYmEoMjU1LDI1NSwyNTUsLjEpfS5tYXQtc3Ryb2tlZC1idXR0b25bX25nY29udGVudC0lQ09NUCVdOm5vdChbY2xhc3MqPW1hdC1lbGV2YXRpb24tel0pLCAubWF0LWZsYXQtYnV0dG9uW19uZ2NvbnRlbnQtJUNPTVAlXTpub3QoW2NsYXNzKj1tYXQtZWxldmF0aW9uLXpdKXtib3gtc2hhZG93OjBweCAwcHggMHB4IDBweCByZ2JhKDAsIDAsIDAsIDAuMiksMHB4IDBweCAwcHggMHB4IHJnYmEoMCwgMCwgMCwgMC4xNCksMHB4IDBweCAwcHggMHB4IHJnYmEoMCwgMCwgMCwgMC4xMil9Lm1hdC1yYWlzZWQtYnV0dG9uW19uZ2NvbnRlbnQtJUNPTVAlXTpub3QoW2NsYXNzKj1tYXQtZWxldmF0aW9uLXpdKXtib3gtc2hhZG93OjBweCAzcHggMXB4IC0ycHggcmdiYSgwLCAwLCAwLCAwLjIpLDBweCAycHggMnB4IDBweCByZ2JhKDAsIDAsIDAsIDAuMTQpLDBweCAxcHggNXB4IDBweCByZ2JhKDAsIDAsIDAsIDAuMTIpfS5tYXQtcmFpc2VkLWJ1dHRvbltfbmdjb250ZW50LSVDT01QJV06bm90KC5tYXQtYnV0dG9uLWRpc2FibGVkKTphY3RpdmU6bm90KFtjbGFzcyo9bWF0LWVsZXZhdGlvbi16XSl7Ym94LXNoYWRvdzowcHggNXB4IDVweCAtM3B4IHJnYmEoMCwgMCwgMCwgMC4yKSwwcHggOHB4IDEwcHggMXB4IHJnYmEoMCwgMCwgMCwgMC4xNCksMHB4IDNweCAxNHB4IDJweCByZ2JhKDAsIDAsIDAsIDAuMTIpfS5tYXQtcmFpc2VkLWJ1dHRvbi5tYXQtYnV0dG9uLWRpc2FibGVkW19uZ2NvbnRlbnQtJUNPTVAlXTpub3QoW2NsYXNzKj1tYXQtZWxldmF0aW9uLXpdKXtib3gtc2hhZG93OjBweCAwcHggMHB4IDBweCByZ2JhKDAsIDAsIDAsIDAuMiksMHB4IDBweCAwcHggMHB4IHJnYmEoMCwgMCwgMCwgMC4xNCksMHB4IDBweCAwcHggMHB4IHJnYmEoMCwgMCwgMCwgMC4xMil9Lm1hdC1mYWJbX25nY29udGVudC0lQ09NUCVdOm5vdChbY2xhc3MqPW1hdC1lbGV2YXRpb24tel0pLCAubWF0LW1pbmktZmFiW19uZ2NvbnRlbnQtJUNPTVAlXTpub3QoW2NsYXNzKj1tYXQtZWxldmF0aW9uLXpdKXtib3gtc2hhZG93OjBweCAzcHggNXB4IC0xcHggcmdiYSgwLCAwLCAwLCAwLjIpLDBweCA2cHggMTBweCAwcHggcmdiYSgwLCAwLCAwLCAwLjE0KSwwcHggMXB4IDE4cHggMHB4IHJnYmEoMCwgMCwgMCwgMC4xMil9Lm1hdC1mYWJbX25nY29udGVudC0lQ09NUCVdOm5vdCgubWF0LWJ1dHRvbi1kaXNhYmxlZCk6YWN0aXZlOm5vdChbY2xhc3MqPW1hdC1lbGV2YXRpb24tel0pLCAubWF0LW1pbmktZmFiW19uZ2NvbnRlbnQtJUNPTVAlXTpub3QoLm1hdC1idXR0b24tZGlzYWJsZWQpOmFjdGl2ZTpub3QoW2NsYXNzKj1tYXQtZWxldmF0aW9uLXpdKXtib3gtc2hhZG93OjBweCA3cHggOHB4IC00cHggcmdiYSgwLCAwLCAwLCAwLjIpLDBweCAxMnB4IDE3cHggMnB4IHJnYmEoMCwgMCwgMCwgMC4xNCksMHB4IDVweCAyMnB4IDRweCByZ2JhKDAsIDAsIDAsIDAuMTIpfS5tYXQtZmFiLm1hdC1idXR0b24tZGlzYWJsZWRbX25nY29udGVudC0lQ09NUCVdOm5vdChbY2xhc3MqPW1hdC1lbGV2YXRpb24tel0pLCAubWF0LW1pbmktZmFiLm1hdC1idXR0b24tZGlzYWJsZWRbX25nY29udGVudC0lQ09NUCVdOm5vdChbY2xhc3MqPW1hdC1lbGV2YXRpb24tel0pe2JveC1zaGFkb3c6MHB4IDBweCAwcHggMHB4IHJnYmEoMCwgMCwgMCwgMC4yKSwwcHggMHB4IDBweCAwcHggcmdiYSgwLCAwLCAwLCAwLjE0KSwwcHggMHB4IDBweCAwcHggcmdiYSgwLCAwLCAwLCAwLjEyKX0ubWF0LWJ1dHRvbi10b2dnbGUtc3RhbmRhbG9uZVtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtYnV0dG9uLXRvZ2dsZS1ncm91cFtfbmdjb250ZW50LSVDT01QJV17Ym94LXNoYWRvdzowcHggM3B4IDFweCAtMnB4IHJnYmEoMCwgMCwgMCwgMC4yKSwwcHggMnB4IDJweCAwcHggcmdiYSgwLCAwLCAwLCAwLjE0KSwwcHggMXB4IDVweCAwcHggcmdiYSgwLCAwLCAwLCAwLjEyKX0ubWF0LWJ1dHRvbi10b2dnbGUtc3RhbmRhbG9uZS5tYXQtYnV0dG9uLXRvZ2dsZS1hcHBlYXJhbmNlLXN0YW5kYXJkW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1idXR0b24tdG9nZ2xlLWdyb3VwLWFwcGVhcmFuY2Utc3RhbmRhcmRbX25nY29udGVudC0lQ09NUCVde2JveC1zaGFkb3c6bm9uZX0ubWF0LWJ1dHRvbi10b2dnbGVbX25nY29udGVudC0lQ09NUCVde2NvbG9yOnJnYmEoMCwwLDAsLjM4KX0ubWF0LWJ1dHRvbi10b2dnbGVbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1idXR0b24tdG9nZ2xlLWZvY3VzLW92ZXJsYXlbX25nY29udGVudC0lQ09NUCVde2JhY2tncm91bmQtY29sb3I6cmdiYSgwLDAsMCwuMTIpfS5tYXQtYnV0dG9uLXRvZ2dsZS1hcHBlYXJhbmNlLXN0YW5kYXJkW19uZ2NvbnRlbnQtJUNPTVAlXXtjb2xvcjojMjEyMTIxO2JhY2tncm91bmQ6I2ZmZn0ubWF0LWJ1dHRvbi10b2dnbGUtYXBwZWFyYW5jZS1zdGFuZGFyZFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWJ1dHRvbi10b2dnbGUtZm9jdXMtb3ZlcmxheVtfbmdjb250ZW50LSVDT01QJV17YmFja2dyb3VuZC1jb2xvcjojMDAwfS5tYXQtYnV0dG9uLXRvZ2dsZS1ncm91cC1hcHBlYXJhbmNlLXN0YW5kYXJkW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtYnV0dG9uLXRvZ2dsZVtfbmdjb250ZW50LSVDT01QJV0gKyAubWF0LWJ1dHRvbi10b2dnbGVbX25nY29udGVudC0lQ09NUCVde2JvcmRlci1sZWZ0OnNvbGlkIDFweCByZ2JhKDAsMCwwLC4xMil9W2Rpcj1ydGxdW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtYnV0dG9uLXRvZ2dsZS1ncm91cC1hcHBlYXJhbmNlLXN0YW5kYXJkW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtYnV0dG9uLXRvZ2dsZVtfbmdjb250ZW50LSVDT01QJV0gKyAubWF0LWJ1dHRvbi10b2dnbGVbX25nY29udGVudC0lQ09NUCVde2JvcmRlci1sZWZ0Om5vbmU7Ym9yZGVyLXJpZ2h0OnNvbGlkIDFweCByZ2JhKDAsMCwwLC4xMil9Lm1hdC1idXR0b24tdG9nZ2xlLWdyb3VwLWFwcGVhcmFuY2Utc3RhbmRhcmQubWF0LWJ1dHRvbi10b2dnbGUtdmVydGljYWxbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1idXR0b24tdG9nZ2xlW19uZ2NvbnRlbnQtJUNPTVAlXSArIC5tYXQtYnV0dG9uLXRvZ2dsZVtfbmdjb250ZW50LSVDT01QJV17Ym9yZGVyLWxlZnQ6bm9uZTtib3JkZXItcmlnaHQ6bm9uZTtib3JkZXItdG9wOnNvbGlkIDFweCByZ2JhKDAsMCwwLC4xMil9Lm1hdC1idXR0b24tdG9nZ2xlLWNoZWNrZWRbX25nY29udGVudC0lQ09NUCVde2JhY2tncm91bmQtY29sb3I6I2UwZTBlMDtjb2xvcjojNjE2MTYxfS5tYXQtYnV0dG9uLXRvZ2dsZS1jaGVja2VkLm1hdC1idXR0b24tdG9nZ2xlLWFwcGVhcmFuY2Utc3RhbmRhcmRbX25nY29udGVudC0lQ09NUCVde2NvbG9yOiMyMTIxMjF9Lm1hdC1idXR0b24tdG9nZ2xlLWRpc2FibGVkW19uZ2NvbnRlbnQtJUNPTVAlXXtjb2xvcjpyZ2JhKDAsMCwwLC4yNik7YmFja2dyb3VuZC1jb2xvcjojZWVlfS5tYXQtYnV0dG9uLXRvZ2dsZS1kaXNhYmxlZC5tYXQtYnV0dG9uLXRvZ2dsZS1hcHBlYXJhbmNlLXN0YW5kYXJkW19uZ2NvbnRlbnQtJUNPTVAlXXtiYWNrZ3JvdW5kOiNmZmZ9Lm1hdC1idXR0b24tdG9nZ2xlLWRpc2FibGVkLm1hdC1idXR0b24tdG9nZ2xlLWNoZWNrZWRbX25nY29udGVudC0lQ09NUCVde2JhY2tncm91bmQtY29sb3I6I2JkYmRiZH0ubWF0LWJ1dHRvbi10b2dnbGUtc3RhbmRhbG9uZS5tYXQtYnV0dG9uLXRvZ2dsZS1hcHBlYXJhbmNlLXN0YW5kYXJkW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1idXR0b24tdG9nZ2xlLWdyb3VwLWFwcGVhcmFuY2Utc3RhbmRhcmRbX25nY29udGVudC0lQ09NUCVde2JvcmRlcjpzb2xpZCAxcHggcmdiYSgwLDAsMCwuMTIpfS5tYXQtYnV0dG9uLXRvZ2dsZS1hcHBlYXJhbmNlLXN0YW5kYXJkW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtYnV0dG9uLXRvZ2dsZS1sYWJlbC1jb250ZW50W19uZ2NvbnRlbnQtJUNPTVAlXXtsaW5lLWhlaWdodDo0OHB4fS5tYXQtY2FyZFtfbmdjb250ZW50LSVDT01QJV17YmFja2dyb3VuZDojZmZmO2NvbG9yOiMyMTIxMjF9Lm1hdC1jYXJkW19uZ2NvbnRlbnQtJUNPTVAlXTpub3QoW2NsYXNzKj1tYXQtZWxldmF0aW9uLXpdKXtib3gtc2hhZG93OjBweCAycHggMXB4IC0xcHggcmdiYSgwLCAwLCAwLCAwLjIpLDBweCAxcHggMXB4IDBweCByZ2JhKDAsIDAsIDAsIDAuMTQpLDBweCAxcHggM3B4IDBweCByZ2JhKDAsIDAsIDAsIDAuMTIpfS5tYXQtY2FyZC5tYXQtY2FyZC1mbGF0W19uZ2NvbnRlbnQtJUNPTVAlXTpub3QoW2NsYXNzKj1tYXQtZWxldmF0aW9uLXpdKXtib3gtc2hhZG93OjBweCAwcHggMHB4IDBweCByZ2JhKDAsIDAsIDAsIDAuMiksMHB4IDBweCAwcHggMHB4IHJnYmEoMCwgMCwgMCwgMC4xNCksMHB4IDBweCAwcHggMHB4IHJnYmEoMCwgMCwgMCwgMC4xMil9Lm1hdC1jYXJkLXN1YnRpdGxlW19uZ2NvbnRlbnQtJUNPTVAlXXtjb2xvcjojNjE2MTYxfS5tYXQtY2hlY2tib3gtZnJhbWVbX25nY29udGVudC0lQ09NUCVde2JvcmRlci1jb2xvcjojNjE2MTYxfS5tYXQtY2hlY2tib3gtY2hlY2ttYXJrW19uZ2NvbnRlbnQtJUNPTVAlXXtmaWxsOiNmYWZhZmF9Lm1hdC1jaGVja2JveC1jaGVja21hcmstcGF0aFtfbmdjb250ZW50LSVDT01QJV17c3Ryb2tlOiNmYWZhZmEgIWltcG9ydGFudH0ubWF0LWNoZWNrYm94LW1peGVkbWFya1tfbmdjb250ZW50LSVDT01QJV17YmFja2dyb3VuZC1jb2xvcjojZmFmYWZhfS5tYXQtY2hlY2tib3gtaW5kZXRlcm1pbmF0ZS5tYXQtcHJpbWFyeVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWNoZWNrYm94LWJhY2tncm91bmRbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWNoZWNrYm94LWNoZWNrZWQubWF0LXByaW1hcnlbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1jaGVja2JveC1iYWNrZ3JvdW5kW19uZ2NvbnRlbnQtJUNPTVAlXXtiYWNrZ3JvdW5kLWNvbG9yOiNmNTdjMDB9Lm1hdC1jaGVja2JveC1pbmRldGVybWluYXRlLm1hdC1hY2NlbnRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1jaGVja2JveC1iYWNrZ3JvdW5kW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1jaGVja2JveC1jaGVja2VkLm1hdC1hY2NlbnRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1jaGVja2JveC1iYWNrZ3JvdW5kW19uZ2NvbnRlbnQtJUNPTVAlXXtiYWNrZ3JvdW5kLWNvbG9yOiNmZjk4MDB9Lm1hdC1jaGVja2JveC1pbmRldGVybWluYXRlLm1hdC13YXJuW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtY2hlY2tib3gtYmFja2dyb3VuZFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtY2hlY2tib3gtY2hlY2tlZC5tYXQtd2Fybltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWNoZWNrYm94LWJhY2tncm91bmRbX25nY29udGVudC0lQ09NUCVde2JhY2tncm91bmQtY29sb3I6I2Y0NDMzNn0ubWF0LWNoZWNrYm94LWRpc2FibGVkLm1hdC1jaGVja2JveC1jaGVja2VkW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtY2hlY2tib3gtYmFja2dyb3VuZFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtY2hlY2tib3gtZGlzYWJsZWQubWF0LWNoZWNrYm94LWluZGV0ZXJtaW5hdGVbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1jaGVja2JveC1iYWNrZ3JvdW5kW19uZ2NvbnRlbnQtJUNPTVAlXXtiYWNrZ3JvdW5kLWNvbG9yOiNiMGIwYjB9Lm1hdC1jaGVja2JveC1kaXNhYmxlZFtfbmdjb250ZW50LSVDT01QJV06bm90KC5tYXQtY2hlY2tib3gtY2hlY2tlZCkgICAubWF0LWNoZWNrYm94LWZyYW1lW19uZ2NvbnRlbnQtJUNPTVAlXXtib3JkZXItY29sb3I6I2IwYjBiMH0ubWF0LWNoZWNrYm94LWRpc2FibGVkW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtY2hlY2tib3gtbGFiZWxbX25nY29udGVudC0lQ09NUCVde2NvbG9yOiM2MTYxNjF9Lm1hdC1jaGVja2JveFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXJpcHBsZS1lbGVtZW50W19uZ2NvbnRlbnQtJUNPTVAlXXtiYWNrZ3JvdW5kLWNvbG9yOiMwMDB9Lm1hdC1jaGVja2JveC1jaGVja2VkW19uZ2NvbnRlbnQtJUNPTVAlXTpub3QoLm1hdC1jaGVja2JveC1kaXNhYmxlZCkubWF0LXByaW1hcnkgICAubWF0LXJpcHBsZS1lbGVtZW50W19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1jaGVja2JveFtfbmdjb250ZW50LSVDT01QJV06YWN0aXZlOm5vdCgubWF0LWNoZWNrYm94LWRpc2FibGVkKS5tYXQtcHJpbWFyeSAgIC5tYXQtcmlwcGxlLWVsZW1lbnRbX25nY29udGVudC0lQ09NUCVde2JhY2tncm91bmQ6I2Y1N2MwMH0ubWF0LWNoZWNrYm94LWNoZWNrZWRbX25nY29udGVudC0lQ09NUCVdOm5vdCgubWF0LWNoZWNrYm94LWRpc2FibGVkKS5tYXQtYWNjZW50ICAgLm1hdC1yaXBwbGUtZWxlbWVudFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtY2hlY2tib3hbX25nY29udGVudC0lQ09NUCVdOmFjdGl2ZTpub3QoLm1hdC1jaGVja2JveC1kaXNhYmxlZCkubWF0LWFjY2VudCAgIC5tYXQtcmlwcGxlLWVsZW1lbnRbX25nY29udGVudC0lQ09NUCVde2JhY2tncm91bmQ6I2ZmOTgwMH0ubWF0LWNoZWNrYm94LWNoZWNrZWRbX25nY29udGVudC0lQ09NUCVdOm5vdCgubWF0LWNoZWNrYm94LWRpc2FibGVkKS5tYXQtd2FybiAgIC5tYXQtcmlwcGxlLWVsZW1lbnRbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWNoZWNrYm94W19uZ2NvbnRlbnQtJUNPTVAlXTphY3RpdmU6bm90KC5tYXQtY2hlY2tib3gtZGlzYWJsZWQpLm1hdC13YXJuICAgLm1hdC1yaXBwbGUtZWxlbWVudFtfbmdjb250ZW50LSVDT01QJV17YmFja2dyb3VuZDojZjQ0MzM2fS5tYXQtY2hpcC5tYXQtc3RhbmRhcmQtY2hpcFtfbmdjb250ZW50LSVDT01QJV17YmFja2dyb3VuZC1jb2xvcjojZTBlMGUwO2NvbG9yOiMyMTIxMjF9Lm1hdC1jaGlwLm1hdC1zdGFuZGFyZC1jaGlwW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtY2hpcC1yZW1vdmVbX25nY29udGVudC0lQ09NUCVde2NvbG9yOiMyMTIxMjE7b3BhY2l0eTouNH0ubWF0LWNoaXAubWF0LXN0YW5kYXJkLWNoaXBbX25nY29udGVudC0lQ09NUCVdOm5vdCgubWF0LWNoaXAtZGlzYWJsZWQpOmFjdGl2ZXtib3gtc2hhZG93OjBweCAzcHggM3B4IC0ycHggcmdiYSgwLCAwLCAwLCAwLjIpLDBweCAzcHggNHB4IDBweCByZ2JhKDAsIDAsIDAsIDAuMTQpLDBweCAxcHggOHB4IDBweCByZ2JhKDAsIDAsIDAsIDAuMTIpfS5tYXQtY2hpcC5tYXQtc3RhbmRhcmQtY2hpcFtfbmdjb250ZW50LSVDT01QJV06bm90KC5tYXQtY2hpcC1kaXNhYmxlZCkgICAubWF0LWNoaXAtcmVtb3ZlW19uZ2NvbnRlbnQtJUNPTVAlXTpob3ZlcntvcGFjaXR5Oi41NH0ubWF0LWNoaXAubWF0LXN0YW5kYXJkLWNoaXAubWF0LWNoaXAtZGlzYWJsZWRbX25nY29udGVudC0lQ09NUCVde29wYWNpdHk6LjR9Lm1hdC1jaGlwLm1hdC1zdGFuZGFyZC1jaGlwW19uZ2NvbnRlbnQtJUNPTVAlXTo6YWZ0ZXJ7YmFja2dyb3VuZDojMDAwfS5tYXQtY2hpcC5tYXQtc3RhbmRhcmQtY2hpcC5tYXQtY2hpcC1zZWxlY3RlZC5tYXQtcHJpbWFyeVtfbmdjb250ZW50LSVDT01QJV17YmFja2dyb3VuZC1jb2xvcjojZjU3YzAwO2NvbG9yOiNmZmZ9Lm1hdC1jaGlwLm1hdC1zdGFuZGFyZC1jaGlwLm1hdC1jaGlwLXNlbGVjdGVkLm1hdC1wcmltYXJ5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtY2hpcC1yZW1vdmVbX25nY29udGVudC0lQ09NUCVde2NvbG9yOiNmZmY7b3BhY2l0eTouNH0ubWF0LWNoaXAubWF0LXN0YW5kYXJkLWNoaXAubWF0LWNoaXAtc2VsZWN0ZWQubWF0LXByaW1hcnlbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1yaXBwbGUtZWxlbWVudFtfbmdjb250ZW50LSVDT01QJV17YmFja2dyb3VuZC1jb2xvcjpyZ2JhKDI1NSwyNTUsMjU1LC4xKX0ubWF0LWNoaXAubWF0LXN0YW5kYXJkLWNoaXAubWF0LWNoaXAtc2VsZWN0ZWQubWF0LXdhcm5bX25nY29udGVudC0lQ09NUCVde2JhY2tncm91bmQtY29sb3I6I2Y0NDMzNjtjb2xvcjojZmZmfS5tYXQtY2hpcC5tYXQtc3RhbmRhcmQtY2hpcC5tYXQtY2hpcC1zZWxlY3RlZC5tYXQtd2Fybltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWNoaXAtcmVtb3ZlW19uZ2NvbnRlbnQtJUNPTVAlXXtjb2xvcjojZmZmO29wYWNpdHk6LjR9Lm1hdC1jaGlwLm1hdC1zdGFuZGFyZC1jaGlwLm1hdC1jaGlwLXNlbGVjdGVkLm1hdC13YXJuW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtcmlwcGxlLWVsZW1lbnRbX25nY29udGVudC0lQ09NUCVde2JhY2tncm91bmQtY29sb3I6cmdiYSgyNTUsMjU1LDI1NSwuMSl9Lm1hdC1jaGlwLm1hdC1zdGFuZGFyZC1jaGlwLm1hdC1jaGlwLXNlbGVjdGVkLm1hdC1hY2NlbnRbX25nY29udGVudC0lQ09NUCVde2JhY2tncm91bmQtY29sb3I6I2ZmOTgwMDtjb2xvcjojZmZmfS5tYXQtY2hpcC5tYXQtc3RhbmRhcmQtY2hpcC5tYXQtY2hpcC1zZWxlY3RlZC5tYXQtYWNjZW50W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtY2hpcC1yZW1vdmVbX25nY29udGVudC0lQ09NUCVde2NvbG9yOiNmZmY7b3BhY2l0eTouNH0ubWF0LWNoaXAubWF0LXN0YW5kYXJkLWNoaXAubWF0LWNoaXAtc2VsZWN0ZWQubWF0LWFjY2VudFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXJpcHBsZS1lbGVtZW50W19uZ2NvbnRlbnQtJUNPTVAlXXtiYWNrZ3JvdW5kLWNvbG9yOnJnYmEoMjU1LDI1NSwyNTUsLjEpfS5tYXQtdGFibGVbX25nY29udGVudC0lQ09NUCVde2JhY2tncm91bmQ6I2ZmZn0ubWF0LXRhYmxlW19uZ2NvbnRlbnQtJUNPTVAlXSAgIHRoZWFkW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10YWJsZVtfbmdjb250ZW50LSVDT01QJV0gICB0Ym9keVtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdGFibGVbX25nY29udGVudC0lQ09NUCVdICAgdGZvb3RbX25nY29udGVudC0lQ09NUCVdLCBtYXQtaGVhZGVyLXJvd1tfbmdjb250ZW50LSVDT01QJV0sIG1hdC1yb3dbX25nY29udGVudC0lQ09NUCVdLCBtYXQtZm9vdGVyLXJvd1tfbmdjb250ZW50LSVDT01QJV0sIFttYXQtaGVhZGVyLXJvd11bX25nY29udGVudC0lQ09NUCVdLCBbbWF0LXJvd11bX25nY29udGVudC0lQ09NUCVdLCBbbWF0LWZvb3Rlci1yb3ddW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10YWJsZS1zdGlja3lbX25nY29udGVudC0lQ09NUCVde2JhY2tncm91bmQ6aW5oZXJpdH1tYXQtcm93W19uZ2NvbnRlbnQtJUNPTVAlXSwgbWF0LWhlYWRlci1yb3dbX25nY29udGVudC0lQ09NUCVdLCBtYXQtZm9vdGVyLXJvd1tfbmdjb250ZW50LSVDT01QJV0sIHRoLm1hdC1oZWFkZXItY2VsbFtfbmdjb250ZW50LSVDT01QJV0sIHRkLm1hdC1jZWxsW19uZ2NvbnRlbnQtJUNPTVAlXSwgdGQubWF0LWZvb3Rlci1jZWxsW19uZ2NvbnRlbnQtJUNPTVAlXXtib3JkZXItYm90dG9tLWNvbG9yOnJnYmEoMCwwLDAsLjEyKX0ubWF0LWhlYWRlci1jZWxsW19uZ2NvbnRlbnQtJUNPTVAlXXtjb2xvcjojNjE2MTYxfS5tYXQtY2VsbFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtZm9vdGVyLWNlbGxbX25nY29udGVudC0lQ09NUCVde2NvbG9yOiMyMTIxMjF9Lm1hdC1jYWxlbmRhci1hcnJvd1tfbmdjb250ZW50LSVDT01QJV17Ym9yZGVyLXRvcC1jb2xvcjpyZ2JhKDAsMCwwLC41NCl9Lm1hdC1kYXRlcGlja2VyLXRvZ2dsZVtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtZGF0ZXBpY2tlci1jb250ZW50W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtY2FsZW5kYXItbmV4dC1idXR0b25bX25nY29udGVudC0lQ09NUCVdLCAubWF0LWRhdGVwaWNrZXItY29udGVudFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWNhbGVuZGFyLXByZXZpb3VzLWJ1dHRvbltfbmdjb250ZW50LSVDT01QJV17Y29sb3I6cmdiYSgwLDAsMCwuNTQpfS5tYXQtY2FsZW5kYXItdGFibGUtaGVhZGVyW19uZ2NvbnRlbnQtJUNPTVAlXXtjb2xvcjpyZ2JhKDAsMCwwLC4zOCl9Lm1hdC1jYWxlbmRhci10YWJsZS1oZWFkZXItZGl2aWRlcltfbmdjb250ZW50LSVDT01QJV06OmFmdGVye2JhY2tncm91bmQ6cmdiYSgwLDAsMCwuMTIpfS5tYXQtY2FsZW5kYXItYm9keS1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17Y29sb3I6IzYxNjE2MX0ubWF0LWNhbGVuZGFyLWJvZHktY2VsbC1jb250ZW50W19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1kYXRlLXJhbmdlLWlucHV0LXNlcGFyYXRvcltfbmdjb250ZW50LSVDT01QJV17Y29sb3I6IzIxMjEyMTtib3JkZXItY29sb3I6dHJhbnNwYXJlbnR9Lm1hdC1jYWxlbmRhci1ib2R5LWRpc2FibGVkW19uZ2NvbnRlbnQtJUNPTVAlXSA+IC5tYXQtY2FsZW5kYXItYm9keS1jZWxsLWNvbnRlbnRbX25nY29udGVudC0lQ09NUCVdOm5vdCgubWF0LWNhbGVuZGFyLWJvZHktc2VsZWN0ZWQpOm5vdCgubWF0LWNhbGVuZGFyLWJvZHktY29tcGFyaXNvbi1pZGVudGljYWwpe2NvbG9yOiM3NTc1NzV9Lm1hdC1mb3JtLWZpZWxkLWRpc2FibGVkW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZGF0ZS1yYW5nZS1pbnB1dC1zZXBhcmF0b3JbX25nY29udGVudC0lQ09NUCVde2NvbG9yOiM3NTc1NzV9Lm1hdC1jYWxlbmRhci1ib2R5LWNlbGxbX25nY29udGVudC0lQ09NUCVdOm5vdCgubWF0LWNhbGVuZGFyLWJvZHktZGlzYWJsZWQpOmhvdmVyID4gLm1hdC1jYWxlbmRhci1ib2R5LWNlbGwtY29udGVudFtfbmdjb250ZW50LSVDT01QJV06bm90KC5tYXQtY2FsZW5kYXItYm9keS1zZWxlY3RlZCk6bm90KC5tYXQtY2FsZW5kYXItYm9keS1jb21wYXJpc29uLWlkZW50aWNhbCksIC5jZGsta2V5Ym9hcmQtZm9jdXNlZFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWNhbGVuZGFyLWJvZHktYWN0aXZlW19uZ2NvbnRlbnQtJUNPTVAlXSA+IC5tYXQtY2FsZW5kYXItYm9keS1jZWxsLWNvbnRlbnRbX25nY29udGVudC0lQ09NUCVdOm5vdCgubWF0LWNhbGVuZGFyLWJvZHktc2VsZWN0ZWQpOm5vdCgubWF0LWNhbGVuZGFyLWJvZHktY29tcGFyaXNvbi1pZGVudGljYWwpLCAuY2RrLXByb2dyYW0tZm9jdXNlZFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWNhbGVuZGFyLWJvZHktYWN0aXZlW19uZ2NvbnRlbnQtJUNPTVAlXSA+IC5tYXQtY2FsZW5kYXItYm9keS1jZWxsLWNvbnRlbnRbX25nY29udGVudC0lQ09NUCVdOm5vdCgubWF0LWNhbGVuZGFyLWJvZHktc2VsZWN0ZWQpOm5vdCgubWF0LWNhbGVuZGFyLWJvZHktY29tcGFyaXNvbi1pZGVudGljYWwpe2JhY2tncm91bmQtY29sb3I6cmdiYSgwLDAsMCwuMDQpfS5tYXQtY2FsZW5kYXItYm9keS1pbi1wcmV2aWV3W19uZ2NvbnRlbnQtJUNPTVAlXXtjb2xvcjpyZ2JhKDAsMCwwLC4yNCl9Lm1hdC1jYWxlbmRhci1ib2R5LXRvZGF5W19uZ2NvbnRlbnQtJUNPTVAlXTpub3QoLm1hdC1jYWxlbmRhci1ib2R5LXNlbGVjdGVkKTpub3QoLm1hdC1jYWxlbmRhci1ib2R5LWNvbXBhcmlzb24taWRlbnRpY2FsKXtib3JkZXItY29sb3I6cmdiYSgwLDAsMCwuMzgpfS5tYXQtY2FsZW5kYXItYm9keS1kaXNhYmxlZFtfbmdjb250ZW50LSVDT01QJV0gPiAubWF0LWNhbGVuZGFyLWJvZHktdG9kYXlbX25nY29udGVudC0lQ09NUCVdOm5vdCgubWF0LWNhbGVuZGFyLWJvZHktc2VsZWN0ZWQpOm5vdCgubWF0LWNhbGVuZGFyLWJvZHktY29tcGFyaXNvbi1pZGVudGljYWwpe2JvcmRlci1jb2xvcjpyZ2JhKDAsMCwwLC4xOCl9Lm1hdC1jYWxlbmRhci1ib2R5LWluLXJhbmdlW19uZ2NvbnRlbnQtJUNPTVAlXTo6YmVmb3Jle2JhY2tncm91bmQ6cmdiYSgyNDUsMTI0LDAsLjIpfS5tYXQtY2FsZW5kYXItYm9keS1jb21wYXJpc29uLWlkZW50aWNhbFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtY2FsZW5kYXItYm9keS1pbi1jb21wYXJpc29uLXJhbmdlW19uZ2NvbnRlbnQtJUNPTVAlXTo6YmVmb3Jle2JhY2tncm91bmQ6cmdiYSgyNDksMTcxLDAsLjIpfS5tYXQtY2FsZW5kYXItYm9keS1jb21wYXJpc29uLWJyaWRnZS1zdGFydFtfbmdjb250ZW50LSVDT01QJV06OmJlZm9yZSwgW2Rpcj1ydGxdW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtY2FsZW5kYXItYm9keS1jb21wYXJpc29uLWJyaWRnZS1lbmRbX25nY29udGVudC0lQ09NUCVdOjpiZWZvcmV7YmFja2dyb3VuZDpsaW5lYXItZ3JhZGllbnQodG8gcmlnaHQsIHJnYmEoMjQ1LCAxMjQsIDAsIDAuMikgNTAlLCByZ2JhKDI0OSwgMTcxLCAwLCAwLjIpIDUwJSl9Lm1hdC1jYWxlbmRhci1ib2R5LWNvbXBhcmlzb24tYnJpZGdlLWVuZFtfbmdjb250ZW50LSVDT01QJV06OmJlZm9yZSwgW2Rpcj1ydGxdW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtY2FsZW5kYXItYm9keS1jb21wYXJpc29uLWJyaWRnZS1zdGFydFtfbmdjb250ZW50LSVDT01QJV06OmJlZm9yZXtiYWNrZ3JvdW5kOmxpbmVhci1ncmFkaWVudCh0byBsZWZ0LCByZ2JhKDI0NSwgMTI0LCAwLCAwLjIpIDUwJSwgcmdiYSgyNDksIDE3MSwgMCwgMC4yKSA1MCUpfS5tYXQtY2FsZW5kYXItYm9keS1pbi1yYW5nZVtfbmdjb250ZW50LSVDT01QJV0gPiAubWF0LWNhbGVuZGFyLWJvZHktY29tcGFyaXNvbi1pZGVudGljYWxbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWNhbGVuZGFyLWJvZHktaW4tY29tcGFyaXNvbi1yYW5nZS5tYXQtY2FsZW5kYXItYm9keS1pbi1yYW5nZVtfbmdjb250ZW50LSVDT01QJV06OmFmdGVye2JhY2tncm91bmQ6I2E4ZGFiNX0ubWF0LWNhbGVuZGFyLWJvZHktY29tcGFyaXNvbi1pZGVudGljYWwubWF0LWNhbGVuZGFyLWJvZHktc2VsZWN0ZWRbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWNhbGVuZGFyLWJvZHktaW4tY29tcGFyaXNvbi1yYW5nZVtfbmdjb250ZW50LSVDT01QJV0gPiAubWF0LWNhbGVuZGFyLWJvZHktc2VsZWN0ZWRbX25nY29udGVudC0lQ09NUCVde2JhY2tncm91bmQ6IzQ2YTM1ZX0ubWF0LWNhbGVuZGFyLWJvZHktc2VsZWN0ZWRbX25nY29udGVudC0lQ09NUCVde2JhY2tncm91bmQtY29sb3I6I2Y1N2MwMDtjb2xvcjojZmZmfS5tYXQtY2FsZW5kYXItYm9keS1kaXNhYmxlZFtfbmdjb250ZW50LSVDT01QJV0gPiAubWF0LWNhbGVuZGFyLWJvZHktc2VsZWN0ZWRbX25nY29udGVudC0lQ09NUCVde2JhY2tncm91bmQtY29sb3I6cmdiYSgyNDUsMTI0LDAsLjQpfS5tYXQtY2FsZW5kYXItYm9keS10b2RheS5tYXQtY2FsZW5kYXItYm9keS1zZWxlY3RlZFtfbmdjb250ZW50LSVDT01QJV17Ym94LXNoYWRvdzppbnNldCAwIDAgMCAxcHggI2ZmZn0ubWF0LWRhdGVwaWNrZXItY29udGVudFtfbmdjb250ZW50LSVDT01QJV17Ym94LXNoYWRvdzowcHggMnB4IDRweCAtMXB4IHJnYmEoMCwgMCwgMCwgMC4yKSwwcHggNHB4IDVweCAwcHggcmdiYSgwLCAwLCAwLCAwLjE0KSwwcHggMXB4IDEwcHggMHB4IHJnYmEoMCwgMCwgMCwgMC4xMik7YmFja2dyb3VuZC1jb2xvcjojZmZmO2NvbG9yOiMyMTIxMjF9Lm1hdC1kYXRlcGlja2VyLWNvbnRlbnQubWF0LWFjY2VudFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWNhbGVuZGFyLWJvZHktaW4tcmFuZ2VbX25nY29udGVudC0lQ09NUCVdOjpiZWZvcmV7YmFja2dyb3VuZDpyZ2JhKDI1NSwxNTIsMCwuMil9Lm1hdC1kYXRlcGlja2VyLWNvbnRlbnQubWF0LWFjY2VudFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWNhbGVuZGFyLWJvZHktY29tcGFyaXNvbi1pZGVudGljYWxbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWRhdGVwaWNrZXItY29udGVudC5tYXQtYWNjZW50W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtY2FsZW5kYXItYm9keS1pbi1jb21wYXJpc29uLXJhbmdlW19uZ2NvbnRlbnQtJUNPTVAlXTo6YmVmb3Jle2JhY2tncm91bmQ6cmdiYSgyNDksMTcxLDAsLjIpfS5tYXQtZGF0ZXBpY2tlci1jb250ZW50Lm1hdC1hY2NlbnRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1jYWxlbmRhci1ib2R5LWNvbXBhcmlzb24tYnJpZGdlLXN0YXJ0W19uZ2NvbnRlbnQtJUNPTVAlXTo6YmVmb3JlLCAubWF0LWRhdGVwaWNrZXItY29udGVudC5tYXQtYWNjZW50W19uZ2NvbnRlbnQtJUNPTVAlXSAgIFtkaXI9cnRsXVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWNhbGVuZGFyLWJvZHktY29tcGFyaXNvbi1icmlkZ2UtZW5kW19uZ2NvbnRlbnQtJUNPTVAlXTo6YmVmb3Jle2JhY2tncm91bmQ6bGluZWFyLWdyYWRpZW50KHRvIHJpZ2h0LCByZ2JhKDI1NSwgMTUyLCAwLCAwLjIpIDUwJSwgcmdiYSgyNDksIDE3MSwgMCwgMC4yKSA1MCUpfS5tYXQtZGF0ZXBpY2tlci1jb250ZW50Lm1hdC1hY2NlbnRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1jYWxlbmRhci1ib2R5LWNvbXBhcmlzb24tYnJpZGdlLWVuZFtfbmdjb250ZW50LSVDT01QJV06OmJlZm9yZSwgLm1hdC1kYXRlcGlja2VyLWNvbnRlbnQubWF0LWFjY2VudFtfbmdjb250ZW50LSVDT01QJV0gICBbZGlyPXJ0bF1bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1jYWxlbmRhci1ib2R5LWNvbXBhcmlzb24tYnJpZGdlLXN0YXJ0W19uZ2NvbnRlbnQtJUNPTVAlXTo6YmVmb3Jle2JhY2tncm91bmQ6bGluZWFyLWdyYWRpZW50KHRvIGxlZnQsIHJnYmEoMjU1LCAxNTIsIDAsIDAuMikgNTAlLCByZ2JhKDI0OSwgMTcxLCAwLCAwLjIpIDUwJSl9Lm1hdC1kYXRlcGlja2VyLWNvbnRlbnQubWF0LWFjY2VudFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWNhbGVuZGFyLWJvZHktaW4tcmFuZ2VbX25nY29udGVudC0lQ09NUCVdID4gLm1hdC1jYWxlbmRhci1ib2R5LWNvbXBhcmlzb24taWRlbnRpY2FsW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1kYXRlcGlja2VyLWNvbnRlbnQubWF0LWFjY2VudFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWNhbGVuZGFyLWJvZHktaW4tY29tcGFyaXNvbi1yYW5nZS5tYXQtY2FsZW5kYXItYm9keS1pbi1yYW5nZVtfbmdjb250ZW50LSVDT01QJV06OmFmdGVye2JhY2tncm91bmQ6I2E4ZGFiNX0ubWF0LWRhdGVwaWNrZXItY29udGVudC5tYXQtYWNjZW50W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtY2FsZW5kYXItYm9keS1jb21wYXJpc29uLWlkZW50aWNhbC5tYXQtY2FsZW5kYXItYm9keS1zZWxlY3RlZFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtZGF0ZXBpY2tlci1jb250ZW50Lm1hdC1hY2NlbnRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1jYWxlbmRhci1ib2R5LWluLWNvbXBhcmlzb24tcmFuZ2VbX25nY29udGVudC0lQ09NUCVdID4gLm1hdC1jYWxlbmRhci1ib2R5LXNlbGVjdGVkW19uZ2NvbnRlbnQtJUNPTVAlXXtiYWNrZ3JvdW5kOiM0NmEzNWV9Lm1hdC1kYXRlcGlja2VyLWNvbnRlbnQubWF0LWFjY2VudFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWNhbGVuZGFyLWJvZHktc2VsZWN0ZWRbX25nY29udGVudC0lQ09NUCVde2JhY2tncm91bmQtY29sb3I6I2ZmOTgwMDtjb2xvcjojZmZmfS5tYXQtZGF0ZXBpY2tlci1jb250ZW50Lm1hdC1hY2NlbnRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1jYWxlbmRhci1ib2R5LWRpc2FibGVkW19uZ2NvbnRlbnQtJUNPTVAlXSA+IC5tYXQtY2FsZW5kYXItYm9keS1zZWxlY3RlZFtfbmdjb250ZW50LSVDT01QJV17YmFja2dyb3VuZC1jb2xvcjpyZ2JhKDI1NSwxNTIsMCwuNCl9Lm1hdC1kYXRlcGlja2VyLWNvbnRlbnQubWF0LWFjY2VudFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWNhbGVuZGFyLWJvZHktdG9kYXkubWF0LWNhbGVuZGFyLWJvZHktc2VsZWN0ZWRbX25nY29udGVudC0lQ09NUCVde2JveC1zaGFkb3c6aW5zZXQgMCAwIDAgMXB4ICNmZmZ9Lm1hdC1kYXRlcGlja2VyLWNvbnRlbnQubWF0LXdhcm5bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1jYWxlbmRhci1ib2R5LWluLXJhbmdlW19uZ2NvbnRlbnQtJUNPTVAlXTo6YmVmb3Jle2JhY2tncm91bmQ6cmdiYSgyNDQsNjcsNTQsLjIpfS5tYXQtZGF0ZXBpY2tlci1jb250ZW50Lm1hdC13YXJuW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtY2FsZW5kYXItYm9keS1jb21wYXJpc29uLWlkZW50aWNhbFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtZGF0ZXBpY2tlci1jb250ZW50Lm1hdC13YXJuW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtY2FsZW5kYXItYm9keS1pbi1jb21wYXJpc29uLXJhbmdlW19uZ2NvbnRlbnQtJUNPTVAlXTo6YmVmb3Jle2JhY2tncm91bmQ6cmdiYSgyNDksMTcxLDAsLjIpfS5tYXQtZGF0ZXBpY2tlci1jb250ZW50Lm1hdC13YXJuW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtY2FsZW5kYXItYm9keS1jb21wYXJpc29uLWJyaWRnZS1zdGFydFtfbmdjb250ZW50LSVDT01QJV06OmJlZm9yZSwgLm1hdC1kYXRlcGlja2VyLWNvbnRlbnQubWF0LXdhcm5bX25nY29udGVudC0lQ09NUCVdICAgW2Rpcj1ydGxdW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtY2FsZW5kYXItYm9keS1jb21wYXJpc29uLWJyaWRnZS1lbmRbX25nY29udGVudC0lQ09NUCVdOjpiZWZvcmV7YmFja2dyb3VuZDpsaW5lYXItZ3JhZGllbnQodG8gcmlnaHQsIHJnYmEoMjQ0LCA2NywgNTQsIDAuMikgNTAlLCByZ2JhKDI0OSwgMTcxLCAwLCAwLjIpIDUwJSl9Lm1hdC1kYXRlcGlja2VyLWNvbnRlbnQubWF0LXdhcm5bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1jYWxlbmRhci1ib2R5LWNvbXBhcmlzb24tYnJpZGdlLWVuZFtfbmdjb250ZW50LSVDT01QJV06OmJlZm9yZSwgLm1hdC1kYXRlcGlja2VyLWNvbnRlbnQubWF0LXdhcm5bX25nY29udGVudC0lQ09NUCVdICAgW2Rpcj1ydGxdW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtY2FsZW5kYXItYm9keS1jb21wYXJpc29uLWJyaWRnZS1zdGFydFtfbmdjb250ZW50LSVDT01QJV06OmJlZm9yZXtiYWNrZ3JvdW5kOmxpbmVhci1ncmFkaWVudCh0byBsZWZ0LCByZ2JhKDI0NCwgNjcsIDU0LCAwLjIpIDUwJSwgcmdiYSgyNDksIDE3MSwgMCwgMC4yKSA1MCUpfS5tYXQtZGF0ZXBpY2tlci1jb250ZW50Lm1hdC13YXJuW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtY2FsZW5kYXItYm9keS1pbi1yYW5nZVtfbmdjb250ZW50LSVDT01QJV0gPiAubWF0LWNhbGVuZGFyLWJvZHktY29tcGFyaXNvbi1pZGVudGljYWxbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWRhdGVwaWNrZXItY29udGVudC5tYXQtd2Fybltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWNhbGVuZGFyLWJvZHktaW4tY29tcGFyaXNvbi1yYW5nZS5tYXQtY2FsZW5kYXItYm9keS1pbi1yYW5nZVtfbmdjb250ZW50LSVDT01QJV06OmFmdGVye2JhY2tncm91bmQ6I2E4ZGFiNX0ubWF0LWRhdGVwaWNrZXItY29udGVudC5tYXQtd2Fybltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWNhbGVuZGFyLWJvZHktY29tcGFyaXNvbi1pZGVudGljYWwubWF0LWNhbGVuZGFyLWJvZHktc2VsZWN0ZWRbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWRhdGVwaWNrZXItY29udGVudC5tYXQtd2Fybltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWNhbGVuZGFyLWJvZHktaW4tY29tcGFyaXNvbi1yYW5nZVtfbmdjb250ZW50LSVDT01QJV0gPiAubWF0LWNhbGVuZGFyLWJvZHktc2VsZWN0ZWRbX25nY29udGVudC0lQ09NUCVde2JhY2tncm91bmQ6IzQ2YTM1ZX0ubWF0LWRhdGVwaWNrZXItY29udGVudC5tYXQtd2Fybltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWNhbGVuZGFyLWJvZHktc2VsZWN0ZWRbX25nY29udGVudC0lQ09NUCVde2JhY2tncm91bmQtY29sb3I6I2Y0NDMzNjtjb2xvcjojZmZmfS5tYXQtZGF0ZXBpY2tlci1jb250ZW50Lm1hdC13YXJuW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtY2FsZW5kYXItYm9keS1kaXNhYmxlZFtfbmdjb250ZW50LSVDT01QJV0gPiAubWF0LWNhbGVuZGFyLWJvZHktc2VsZWN0ZWRbX25nY29udGVudC0lQ09NUCVde2JhY2tncm91bmQtY29sb3I6cmdiYSgyNDQsNjcsNTQsLjQpfS5tYXQtZGF0ZXBpY2tlci1jb250ZW50Lm1hdC13YXJuW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtY2FsZW5kYXItYm9keS10b2RheS5tYXQtY2FsZW5kYXItYm9keS1zZWxlY3RlZFtfbmdjb250ZW50LSVDT01QJV17Ym94LXNoYWRvdzppbnNldCAwIDAgMCAxcHggI2ZmZn0ubWF0LWRhdGVwaWNrZXItY29udGVudC10b3VjaFtfbmdjb250ZW50LSVDT01QJV17Ym94LXNoYWRvdzowcHggMHB4IDBweCAwcHggcmdiYSgwLCAwLCAwLCAwLjIpLDBweCAwcHggMHB4IDBweCByZ2JhKDAsIDAsIDAsIDAuMTQpLDBweCAwcHggMHB4IDBweCByZ2JhKDAsIDAsIDAsIDAuMTIpfS5tYXQtZGF0ZXBpY2tlci10b2dnbGUtYWN0aXZlW19uZ2NvbnRlbnQtJUNPTVAlXXtjb2xvcjojZjU3YzAwfS5tYXQtZGF0ZXBpY2tlci10b2dnbGUtYWN0aXZlLm1hdC1hY2NlbnRbX25nY29udGVudC0lQ09NUCVde2NvbG9yOiNmZjk4MDB9Lm1hdC1kYXRlcGlja2VyLXRvZ2dsZS1hY3RpdmUubWF0LXdhcm5bX25nY29udGVudC0lQ09NUCVde2NvbG9yOiNmNDQzMzZ9Lm1hdC1kYXRlLXJhbmdlLWlucHV0LWlubmVyW2Rpc2FibGVkXVtfbmdjb250ZW50LSVDT01QJV17Y29sb3I6Izc1NzU3NX0ubWF0LWRpYWxvZy1jb250YWluZXJbX25nY29udGVudC0lQ09NUCVde2JveC1zaGFkb3c6MHB4IDExcHggMTVweCAtN3B4IHJnYmEoMCwgMCwgMCwgMC4yKSwwcHggMjRweCAzOHB4IDNweCByZ2JhKDAsIDAsIDAsIDAuMTQpLDBweCA5cHggNDZweCA4cHggcmdiYSgwLCAwLCAwLCAwLjEyKTtiYWNrZ3JvdW5kOiNmZmY7Y29sb3I6IzIxMjEyMX0ubWF0LWRpdmlkZXJbX25nY29udGVudC0lQ09NUCVde2JvcmRlci10b3AtY29sb3I6cmdiYSgwLDAsMCwuMTIpfS5tYXQtZGl2aWRlci12ZXJ0aWNhbFtfbmdjb250ZW50LSVDT01QJV17Ym9yZGVyLXJpZ2h0LWNvbG9yOnJnYmEoMCwwLDAsLjEyKX0ubWF0LWV4cGFuc2lvbi1wYW5lbFtfbmdjb250ZW50LSVDT01QJV17YmFja2dyb3VuZDojZmZmO2NvbG9yOiMyMTIxMjF9Lm1hdC1leHBhbnNpb24tcGFuZWxbX25nY29udGVudC0lQ09NUCVdOm5vdChbY2xhc3MqPW1hdC1lbGV2YXRpb24tel0pe2JveC1zaGFkb3c6MHB4IDNweCAxcHggLTJweCByZ2JhKDAsIDAsIDAsIDAuMiksMHB4IDJweCAycHggMHB4IHJnYmEoMCwgMCwgMCwgMC4xNCksMHB4IDFweCA1cHggMHB4IHJnYmEoMCwgMCwgMCwgMC4xMil9Lm1hdC1hY3Rpb24tcm93W19uZ2NvbnRlbnQtJUNPTVAlXXtib3JkZXItdG9wLWNvbG9yOnJnYmEoMCwwLDAsLjEyKX0ubWF0LWV4cGFuc2lvbi1wYW5lbFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWV4cGFuc2lvbi1wYW5lbC1oZWFkZXIuY2RrLWtleWJvYXJkLWZvY3VzZWRbX25nY29udGVudC0lQ09NUCVdOm5vdChbYXJpYS1kaXNhYmxlZD10cnVlXSksIC5tYXQtZXhwYW5zaW9uLXBhbmVsW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZXhwYW5zaW9uLXBhbmVsLWhlYWRlci5jZGstcHJvZ3JhbS1mb2N1c2VkW19uZ2NvbnRlbnQtJUNPTVAlXTpub3QoW2FyaWEtZGlzYWJsZWQ9dHJ1ZV0pLCAubWF0LWV4cGFuc2lvbi1wYW5lbFtfbmdjb250ZW50LSVDT01QJV06bm90KC5tYXQtZXhwYW5kZWQpICAgLm1hdC1leHBhbnNpb24tcGFuZWwtaGVhZGVyW19uZ2NvbnRlbnQtJUNPTVAlXTpob3Zlcjpub3QoW2FyaWEtZGlzYWJsZWQ9dHJ1ZV0pe2JhY2tncm91bmQ6cmdiYSgwLDAsMCwuMDQpfUBtZWRpYShob3Zlcjogbm9uZSl7Lm1hdC1leHBhbnNpb24tcGFuZWxbX25nY29udGVudC0lQ09NUCVdOm5vdCgubWF0LWV4cGFuZGVkKTpub3QoW2FyaWEtZGlzYWJsZWQ9dHJ1ZV0pICAgLm1hdC1leHBhbnNpb24tcGFuZWwtaGVhZGVyW19uZ2NvbnRlbnQtJUNPTVAlXTpob3ZlcntiYWNrZ3JvdW5kOiNmZmZ9fS5tYXQtZXhwYW5zaW9uLXBhbmVsLWhlYWRlci10aXRsZVtfbmdjb250ZW50LSVDT01QJV17Y29sb3I6IzIxMjEyMX0ubWF0LWV4cGFuc2lvbi1wYW5lbC1oZWFkZXItZGVzY3JpcHRpb25bX25nY29udGVudC0lQ09NUCVdLCAubWF0LWV4cGFuc2lvbi1pbmRpY2F0b3JbX25nY29udGVudC0lQ09NUCVdOjphZnRlcntjb2xvcjojNjE2MTYxfS5tYXQtZXhwYW5zaW9uLXBhbmVsLWhlYWRlclthcmlhLWRpc2FibGVkPXRydWVdW19uZ2NvbnRlbnQtJUNPTVAlXXtjb2xvcjpyZ2JhKDAsMCwwLC4yNil9Lm1hdC1leHBhbnNpb24tcGFuZWwtaGVhZGVyW2FyaWEtZGlzYWJsZWQ9dHJ1ZV1bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1leHBhbnNpb24tcGFuZWwtaGVhZGVyLXRpdGxlW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1leHBhbnNpb24tcGFuZWwtaGVhZGVyW2FyaWEtZGlzYWJsZWQ9dHJ1ZV1bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1leHBhbnNpb24tcGFuZWwtaGVhZGVyLWRlc2NyaXB0aW9uW19uZ2NvbnRlbnQtJUNPTVAlXXtjb2xvcjppbmhlcml0fS5tYXQtZXhwYW5zaW9uLXBhbmVsLWhlYWRlcltfbmdjb250ZW50LSVDT01QJV17aGVpZ2h0OjQ4cHh9Lm1hdC1leHBhbnNpb24tcGFuZWwtaGVhZGVyLm1hdC1leHBhbmRlZFtfbmdjb250ZW50LSVDT01QJV17aGVpZ2h0OjY0cHh9Lm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXtjb2xvcjpyZ2JhKDk3LDk3LDk3LC42KX0ubWF0LWhpbnRbX25nY29udGVudC0lQ09NUCVde2NvbG9yOnJnYmEoOTcsOTcsOTcsLjYpfS5tYXQtZm9ybS1maWVsZC5tYXQtZm9jdXNlZFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVde2NvbG9yOiNmNTdjMDB9Lm1hdC1mb3JtLWZpZWxkLm1hdC1mb2N1c2VkW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbC5tYXQtYWNjZW50W19uZ2NvbnRlbnQtJUNPTVAlXXtjb2xvcjojZmY5ODAwfS5tYXQtZm9ybS1maWVsZC5tYXQtZm9jdXNlZFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWwubWF0LXdhcm5bX25nY29udGVudC0lQ09NUCVde2NvbG9yOiNmNDQzMzZ9Lm1hdC1mb2N1c2VkW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1yZXF1aXJlZC1tYXJrZXJbX25nY29udGVudC0lQ09NUCVde2NvbG9yOiNmZjk4MDB9Lm1hdC1mb3JtLWZpZWxkLXJpcHBsZVtfbmdjb250ZW50LSVDT01QJV17YmFja2dyb3VuZC1jb2xvcjpyZ2JhKDAsMCwwLC44Nyl9Lm1hdC1mb3JtLWZpZWxkLm1hdC1mb2N1c2VkW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1yaXBwbGVbX25nY29udGVudC0lQ09NUCVde2JhY2tncm91bmQtY29sb3I6I2Y1N2MwMH0ubWF0LWZvcm0tZmllbGQubWF0LWZvY3VzZWRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLXJpcHBsZS5tYXQtYWNjZW50W19uZ2NvbnRlbnQtJUNPTVAlXXtiYWNrZ3JvdW5kLWNvbG9yOiNmZjk4MDB9Lm1hdC1mb3JtLWZpZWxkLm1hdC1mb2N1c2VkW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1yaXBwbGUubWF0LXdhcm5bX25nY29udGVudC0lQ09NUCVde2JhY2tncm91bmQtY29sb3I6I2Y0NDMzNn0ubWF0LWZvcm0tZmllbGQtdHlwZS1tYXQtbmF0aXZlLXNlbGVjdC5tYXQtZm9jdXNlZFtfbmdjb250ZW50LSVDT01QJV06bm90KC5tYXQtZm9ybS1maWVsZC1pbnZhbGlkKSAgIC5tYXQtZm9ybS1maWVsZC1pbmZpeFtfbmdjb250ZW50LSVDT01QJV06OmFmdGVye2NvbG9yOiNmNTdjMDB9Lm1hdC1mb3JtLWZpZWxkLXR5cGUtbWF0LW5hdGl2ZS1zZWxlY3QubWF0LWZvY3VzZWRbX25nY29udGVudC0lQ09NUCVdOm5vdCgubWF0LWZvcm0tZmllbGQtaW52YWxpZCkubWF0LWFjY2VudCAgIC5tYXQtZm9ybS1maWVsZC1pbmZpeFtfbmdjb250ZW50LSVDT01QJV06OmFmdGVye2NvbG9yOiNmZjk4MDB9Lm1hdC1mb3JtLWZpZWxkLXR5cGUtbWF0LW5hdGl2ZS1zZWxlY3QubWF0LWZvY3VzZWRbX25nY29udGVudC0lQ09NUCVdOm5vdCgubWF0LWZvcm0tZmllbGQtaW52YWxpZCkubWF0LXdhcm4gICAubWF0LWZvcm0tZmllbGQtaW5maXhbX25nY29udGVudC0lQ09NUCVdOjphZnRlcntjb2xvcjojZjQ0MzM2fS5tYXQtZm9ybS1maWVsZC5tYXQtZm9ybS1maWVsZC1pbnZhbGlkW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17Y29sb3I6I2Y0NDMzNn0ubWF0LWZvcm0tZmllbGQubWF0LWZvcm0tZmllbGQtaW52YWxpZFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWwubWF0LWFjY2VudFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtZm9ybS1maWVsZC5tYXQtZm9ybS1maWVsZC1pbnZhbGlkW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtcmVxdWlyZWQtbWFya2VyW19uZ2NvbnRlbnQtJUNPTVAlXXtjb2xvcjojZjQ0MzM2fS5tYXQtZm9ybS1maWVsZC5tYXQtZm9ybS1maWVsZC1pbnZhbGlkW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1yaXBwbGVbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWZvcm0tZmllbGQubWF0LWZvcm0tZmllbGQtaW52YWxpZFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtcmlwcGxlLm1hdC1hY2NlbnRbX25nY29udGVudC0lQ09NUCVde2JhY2tncm91bmQtY29sb3I6I2Y0NDMzNn0ubWF0LWVycm9yW19uZ2NvbnRlbnQtJUNPTVAlXXtjb2xvcjojZjQ0MzM2fS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWxlZ2FjeVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVde2NvbG9yOiM2MTYxNjF9Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtbGVnYWN5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaGludFtfbmdjb250ZW50LSVDT01QJV17Y29sb3I6IzYxNjE2MX0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1sZWdhY3lbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLXVuZGVybGluZVtfbmdjb250ZW50LSVDT01QJV17YmFja2dyb3VuZC1jb2xvcjpyZ2JhKDAsMCwwLC40Mil9Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtbGVnYWN5Lm1hdC1mb3JtLWZpZWxkLWRpc2FibGVkW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC11bmRlcmxpbmVbX25nY29udGVudC0lQ09NUCVde2JhY2tncm91bmQtaW1hZ2U6bGluZWFyLWdyYWRpZW50KHRvIHJpZ2h0LCByZ2JhKDAsIDAsIDAsIDAuNDIpIDAlLCByZ2JhKDAsIDAsIDAsIDAuNDIpIDMzJSwgdHJhbnNwYXJlbnQgMCUpO2JhY2tncm91bmQtc2l6ZTo0cHggMTAwJTtiYWNrZ3JvdW5kLXJlcGVhdDpyZXBlYXQteH0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1zdGFuZGFyZFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtdW5kZXJsaW5lW19uZ2NvbnRlbnQtJUNPTVAlXXtiYWNrZ3JvdW5kLWNvbG9yOnJnYmEoMCwwLDAsLjQyKX0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1zdGFuZGFyZC5tYXQtZm9ybS1maWVsZC1kaXNhYmxlZFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtdW5kZXJsaW5lW19uZ2NvbnRlbnQtJUNPTVAlXXtiYWNrZ3JvdW5kLWltYWdlOmxpbmVhci1ncmFkaWVudCh0byByaWdodCwgcmdiYSgwLCAwLCAwLCAwLjQyKSAwJSwgcmdiYSgwLCAwLCAwLCAwLjQyKSAzMyUsIHRyYW5zcGFyZW50IDAlKTtiYWNrZ3JvdW5kLXNpemU6NHB4IDEwMCU7YmFja2dyb3VuZC1yZXBlYXQ6cmVwZWF0LXh9Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtZmlsbFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtZmxleFtfbmdjb250ZW50LSVDT01QJV17YmFja2dyb3VuZC1jb2xvcjpyZ2JhKDAsMCwwLC4wNCl9Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtZmlsbC5tYXQtZm9ybS1maWVsZC1kaXNhYmxlZFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtZmxleFtfbmdjb250ZW50LSVDT01QJV17YmFja2dyb3VuZC1jb2xvcjpyZ2JhKDAsMCwwLC4wMil9Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtZmlsbFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtdW5kZXJsaW5lW19uZ2NvbnRlbnQtJUNPTVAlXTo6YmVmb3Jle2JhY2tncm91bmQtY29sb3I6cmdiYSgwLDAsMCwuNDIpfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWZpbGwubWF0LWZvcm0tZmllbGQtZGlzYWJsZWRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXtjb2xvcjojNzU3NTc1fS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWZpbGwubWF0LWZvcm0tZmllbGQtZGlzYWJsZWRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLXVuZGVybGluZVtfbmdjb250ZW50LSVDT01QJV06OmJlZm9yZXtiYWNrZ3JvdW5kLWNvbG9yOnRyYW5zcGFyZW50fS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLW91dGxpbmVbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLW91dGxpbmVbX25nY29udGVudC0lQ09NUCVde2NvbG9yOnJnYmEoMCwwLDAsLjEyKX0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1vdXRsaW5lW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1vdXRsaW5lLXRoaWNrW19uZ2NvbnRlbnQtJUNPTVAlXXtjb2xvcjpyZ2JhKDAsMCwwLC44Nyl9Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2Utb3V0bGluZS5tYXQtZm9jdXNlZFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtb3V0bGluZS10aGlja1tfbmdjb250ZW50LSVDT01QJV17Y29sb3I6I2Y1N2MwMH0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1vdXRsaW5lLm1hdC1mb2N1c2VkLm1hdC1hY2NlbnRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLW91dGxpbmUtdGhpY2tbX25nY29udGVudC0lQ09NUCVde2NvbG9yOiNmZjk4MDB9Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2Utb3V0bGluZS5tYXQtZm9jdXNlZC5tYXQtd2Fybltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtb3V0bGluZS10aGlja1tfbmdjb250ZW50LSVDT01QJV17Y29sb3I6I2Y0NDMzNn0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1vdXRsaW5lLm1hdC1mb3JtLWZpZWxkLWludmFsaWQubWF0LWZvcm0tZmllbGQtaW52YWxpZFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtb3V0bGluZS10aGlja1tfbmdjb250ZW50LSVDT01QJV17Y29sb3I6I2Y0NDMzNn0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1vdXRsaW5lLm1hdC1mb3JtLWZpZWxkLWRpc2FibGVkW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17Y29sb3I6Izc1NzU3NX0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1vdXRsaW5lLm1hdC1mb3JtLWZpZWxkLWRpc2FibGVkW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1vdXRsaW5lW19uZ2NvbnRlbnQtJUNPTVAlXXtjb2xvcjpyZ2JhKDAsMCwwLC4wNil9Lm1hdC1pY29uLm1hdC1wcmltYXJ5W19uZ2NvbnRlbnQtJUNPTVAlXXtjb2xvcjojZjU3YzAwfS5tYXQtaWNvbi5tYXQtYWNjZW50W19uZ2NvbnRlbnQtJUNPTVAlXXtjb2xvcjojZmY5ODAwfS5tYXQtaWNvbi5tYXQtd2Fybltfbmdjb250ZW50LSVDT01QJV17Y29sb3I6I2Y0NDMzNn0ubWF0LWZvcm0tZmllbGQtdHlwZS1tYXQtbmF0aXZlLXNlbGVjdFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtaW5maXhbX25nY29udGVudC0lQ09NUCVdOjphZnRlcntjb2xvcjojNjE2MTYxfS5tYXQtaW5wdXQtZWxlbWVudFtfbmdjb250ZW50LSVDT01QJV06ZGlzYWJsZWQsIC5tYXQtZm9ybS1maWVsZC10eXBlLW1hdC1uYXRpdmUtc2VsZWN0Lm1hdC1mb3JtLWZpZWxkLWRpc2FibGVkW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1pbmZpeFtfbmdjb250ZW50LSVDT01QJV06OmFmdGVye2NvbG9yOiM3NTc1NzV9Lm1hdC1pbnB1dC1lbGVtZW50W19uZ2NvbnRlbnQtJUNPTVAlXXtjYXJldC1jb2xvcjojZjU3YzAwfS5tYXQtaW5wdXQtZWxlbWVudFtfbmdjb250ZW50LSVDT01QJV06OnBsYWNlaG9sZGVye2NvbG9yOnJnYmEoOTcsOTcsOTcsLjQyKX0ubWF0LWlucHV0LWVsZW1lbnRbX25nY29udGVudC0lQ09NUCVdOjotbW96LXBsYWNlaG9sZGVye2NvbG9yOnJnYmEoOTcsOTcsOTcsLjQyKX0ubWF0LWlucHV0LWVsZW1lbnRbX25nY29udGVudC0lQ09NUCVdOjotd2Via2l0LWlucHV0LXBsYWNlaG9sZGVye2NvbG9yOnJnYmEoOTcsOTcsOTcsLjQyKX0ubWF0LWlucHV0LWVsZW1lbnRbX25nY29udGVudC0lQ09NUCVdOi1tcy1pbnB1dC1wbGFjZWhvbGRlcntjb2xvcjpyZ2JhKDk3LDk3LDk3LC40Mil9Lm1hdC1mb3JtLWZpZWxkLm1hdC1hY2NlbnRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pbnB1dC1lbGVtZW50W19uZ2NvbnRlbnQtJUNPTVAlXXtjYXJldC1jb2xvcjojZmY5ODAwfS5tYXQtZm9ybS1maWVsZC5tYXQtd2Fybltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWlucHV0LWVsZW1lbnRbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWZvcm0tZmllbGQtaW52YWxpZFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWlucHV0LWVsZW1lbnRbX25nY29udGVudC0lQ09NUCVde2NhcmV0LWNvbG9yOiNmNDQzMzZ9Lm1hdC1mb3JtLWZpZWxkLXR5cGUtbWF0LW5hdGl2ZS1zZWxlY3QubWF0LWZvcm0tZmllbGQtaW52YWxpZFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtaW5maXhbX25nY29udGVudC0lQ09NUCVdOjphZnRlcntjb2xvcjojZjQ0MzM2fS5tYXQtbGlzdC1iYXNlW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGlzdC1pdGVtW19uZ2NvbnRlbnQtJUNPTVAlXXtjb2xvcjojMjEyMTIxfS5tYXQtbGlzdC1iYXNlW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGlzdC1vcHRpb25bX25nY29udGVudC0lQ09NUCVde2NvbG9yOiMyMTIxMjF9Lm1hdC1saXN0LWJhc2VbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1zdWJoZWFkZXJbX25nY29udGVudC0lQ09NUCVde2NvbG9yOiM2MTYxNjF9Lm1hdC1saXN0LWl0ZW0tZGlzYWJsZWRbX25nY29udGVudC0lQ09NUCVde2JhY2tncm91bmQtY29sb3I6I2VlZX0ubWF0LWxpc3Qtb3B0aW9uW19uZ2NvbnRlbnQtJUNPTVAlXTpob3ZlciwgLm1hdC1saXN0LW9wdGlvbltfbmdjb250ZW50LSVDT01QJV06Zm9jdXMsIC5tYXQtbmF2LWxpc3RbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saXN0LWl0ZW1bX25nY29udGVudC0lQ09NUCVdOmhvdmVyLCAubWF0LW5hdi1saXN0W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGlzdC1pdGVtW19uZ2NvbnRlbnQtJUNPTVAlXTpmb2N1cywgLm1hdC1hY3Rpb24tbGlzdFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpc3QtaXRlbVtfbmdjb250ZW50LSVDT01QJV06aG92ZXIsIC5tYXQtYWN0aW9uLWxpc3RbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saXN0LWl0ZW1bX25nY29udGVudC0lQ09NUCVdOmZvY3Vze2JhY2tncm91bmQ6cmdiYSgwLDAsMCwuMDQpfS5tYXQtbGlzdC1zaW5nbGUtc2VsZWN0ZWQtb3B0aW9uW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1saXN0LXNpbmdsZS1zZWxlY3RlZC1vcHRpb25bX25nY29udGVudC0lQ09NUCVdOmhvdmVyLCAubWF0LWxpc3Qtc2luZ2xlLXNlbGVjdGVkLW9wdGlvbltfbmdjb250ZW50LSVDT01QJV06Zm9jdXN7YmFja2dyb3VuZDpyZ2JhKDAsMCwwLC4xMil9Lm1hdC1tZW51LXBhbmVsW19uZ2NvbnRlbnQtJUNPTVAlXXtiYWNrZ3JvdW5kOiNmZmZ9Lm1hdC1tZW51LXBhbmVsW19uZ2NvbnRlbnQtJUNPTVAlXTpub3QoW2NsYXNzKj1tYXQtZWxldmF0aW9uLXpdKXtib3gtc2hhZG93OjBweCAycHggNHB4IC0xcHggcmdiYSgwLCAwLCAwLCAwLjIpLDBweCA0cHggNXB4IDBweCByZ2JhKDAsIDAsIDAsIDAuMTQpLDBweCAxcHggMTBweCAwcHggcmdiYSgwLCAwLCAwLCAwLjEyKX0ubWF0LW1lbnUtaXRlbVtfbmdjb250ZW50LSVDT01QJV17YmFja2dyb3VuZDp0cmFuc3BhcmVudDtjb2xvcjojMjEyMTIxfS5tYXQtbWVudS1pdGVtW2Rpc2FibGVkXVtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtbWVudS1pdGVtW2Rpc2FibGVkXVtfbmdjb250ZW50LSVDT01QJV06OmFmdGVye2NvbG9yOnJnYmEoMCwwLDAsLjM4KX0ubWF0LW1lbnUtaXRlbVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWljb24tbm8tY29sb3JbX25nY29udGVudC0lQ09NUCVdLCAubWF0LW1lbnUtaXRlbS1zdWJtZW51LXRyaWdnZXJbX25nY29udGVudC0lQ09NUCVdOjphZnRlcntjb2xvcjpyZ2JhKDAsMCwwLC41NCl9Lm1hdC1tZW51LWl0ZW1bX25nY29udGVudC0lQ09NUCVdOmhvdmVyOm5vdChbZGlzYWJsZWRdKSwgLm1hdC1tZW51LWl0ZW0uY2RrLXByb2dyYW0tZm9jdXNlZFtfbmdjb250ZW50LSVDT01QJV06bm90KFtkaXNhYmxlZF0pLCAubWF0LW1lbnUtaXRlbS5jZGsta2V5Ym9hcmQtZm9jdXNlZFtfbmdjb250ZW50LSVDT01QJV06bm90KFtkaXNhYmxlZF0pLCAubWF0LW1lbnUtaXRlbS1oaWdobGlnaHRlZFtfbmdjb250ZW50LSVDT01QJV06bm90KFtkaXNhYmxlZF0pe2JhY2tncm91bmQ6cmdiYSgwLDAsMCwuMDQpfS5tYXQtcGFnaW5hdG9yW19uZ2NvbnRlbnQtJUNPTVAlXXtiYWNrZ3JvdW5kOiNmZmZ9Lm1hdC1wYWdpbmF0b3JbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXBhZ2luYXRvci1wYWdlLXNpemVbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1zZWxlY3QtdHJpZ2dlcltfbmdjb250ZW50LSVDT01QJV17Y29sb3I6IzYxNjE2MX0ubWF0LXBhZ2luYXRvci1kZWNyZW1lbnRbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXBhZ2luYXRvci1pbmNyZW1lbnRbX25nY29udGVudC0lQ09NUCVde2JvcmRlci10b3A6MnB4IHNvbGlkIHJnYmEoMCwwLDAsLjU0KTtib3JkZXItcmlnaHQ6MnB4IHNvbGlkIHJnYmEoMCwwLDAsLjU0KX0ubWF0LXBhZ2luYXRvci1maXJzdFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtcGFnaW5hdG9yLWxhc3RbX25nY29udGVudC0lQ09NUCVde2JvcmRlci10b3A6MnB4IHNvbGlkIHJnYmEoMCwwLDAsLjU0KX0ubWF0LWljb24tYnV0dG9uW2Rpc2FibGVkXVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXBhZ2luYXRvci1kZWNyZW1lbnRbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWljb24tYnV0dG9uW2Rpc2FibGVkXVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXBhZ2luYXRvci1pbmNyZW1lbnRbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWljb24tYnV0dG9uW2Rpc2FibGVkXVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXBhZ2luYXRvci1maXJzdFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtaWNvbi1idXR0b25bZGlzYWJsZWRdW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtcGFnaW5hdG9yLWxhc3RbX25nY29udGVudC0lQ09NUCVde2JvcmRlci1jb2xvcjpyZ2JhKDAsMCwwLC4zOCl9Lm1hdC1wYWdpbmF0b3ItY29udGFpbmVyW19uZ2NvbnRlbnQtJUNPTVAlXXttaW4taGVpZ2h0OjU2cHh9Lm1hdC1wcm9ncmVzcy1iYXItYmFja2dyb3VuZFtfbmdjb250ZW50LSVDT01QJV17ZmlsbDojZmY5ODAwfS5tYXQtcHJvZ3Jlc3MtYmFyLWJ1ZmZlcltfbmdjb250ZW50LSVDT01QJV17YmFja2dyb3VuZC1jb2xvcjojZmY5ODAwfS5tYXQtcHJvZ3Jlc3MtYmFyLWZpbGxbX25nY29udGVudC0lQ09NUCVdOjphZnRlcntiYWNrZ3JvdW5kLWNvbG9yOiNmNTdjMDB9Lm1hdC1wcm9ncmVzcy1iYXIubWF0LWFjY2VudFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXByb2dyZXNzLWJhci1iYWNrZ3JvdW5kW19uZ2NvbnRlbnQtJUNPTVAlXXtmaWxsOiNmZjk4MDB9Lm1hdC1wcm9ncmVzcy1iYXIubWF0LWFjY2VudFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXByb2dyZXNzLWJhci1idWZmZXJbX25nY29udGVudC0lQ09NUCVde2JhY2tncm91bmQtY29sb3I6I2ZmOTgwMH0ubWF0LXByb2dyZXNzLWJhci5tYXQtYWNjZW50W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtcHJvZ3Jlc3MtYmFyLWZpbGxbX25nY29udGVudC0lQ09NUCVdOjphZnRlcntiYWNrZ3JvdW5kLWNvbG9yOiNmZjk4MDB9Lm1hdC1wcm9ncmVzcy1iYXIubWF0LXdhcm5bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1wcm9ncmVzcy1iYXItYmFja2dyb3VuZFtfbmdjb250ZW50LSVDT01QJV17ZmlsbDojZmZjZGQyfS5tYXQtcHJvZ3Jlc3MtYmFyLm1hdC13YXJuW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtcHJvZ3Jlc3MtYmFyLWJ1ZmZlcltfbmdjb250ZW50LSVDT01QJV17YmFja2dyb3VuZC1jb2xvcjojZmZjZGQyfS5tYXQtcHJvZ3Jlc3MtYmFyLm1hdC13YXJuW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtcHJvZ3Jlc3MtYmFyLWZpbGxbX25nY29udGVudC0lQ09NUCVdOjphZnRlcntiYWNrZ3JvdW5kLWNvbG9yOiNmNDQzMzZ9Lm1hdC1wcm9ncmVzcy1zcGlubmVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIGNpcmNsZVtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtc3Bpbm5lcltfbmdjb250ZW50LSVDT01QJV0gICBjaXJjbGVbX25nY29udGVudC0lQ09NUCVde3N0cm9rZTojZjU3YzAwfS5tYXQtcHJvZ3Jlc3Mtc3Bpbm5lci5tYXQtYWNjZW50W19uZ2NvbnRlbnQtJUNPTVAlXSAgIGNpcmNsZVtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtc3Bpbm5lci5tYXQtYWNjZW50W19uZ2NvbnRlbnQtJUNPTVAlXSAgIGNpcmNsZVtfbmdjb250ZW50LSVDT01QJV17c3Ryb2tlOiNmZjk4MDB9Lm1hdC1wcm9ncmVzcy1zcGlubmVyLm1hdC13YXJuW19uZ2NvbnRlbnQtJUNPTVAlXSAgIGNpcmNsZVtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtc3Bpbm5lci5tYXQtd2Fybltfbmdjb250ZW50LSVDT01QJV0gICBjaXJjbGVbX25nY29udGVudC0lQ09NUCVde3N0cm9rZTojZjQ0MzM2fS5tYXQtcmFkaW8tb3V0ZXItY2lyY2xlW19uZ2NvbnRlbnQtJUNPTVAlXXtib3JkZXItY29sb3I6IzYxNjE2MX0ubWF0LXJhZGlvLWJ1dHRvbi5tYXQtcHJpbWFyeS5tYXQtcmFkaW8tY2hlY2tlZFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXJhZGlvLW91dGVyLWNpcmNsZVtfbmdjb250ZW50LSVDT01QJV17Ym9yZGVyLWNvbG9yOiNmNTdjMDB9Lm1hdC1yYWRpby1idXR0b24ubWF0LXByaW1hcnlbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1yYWRpby1pbm5lci1jaXJjbGVbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXJhZGlvLWJ1dHRvbi5tYXQtcHJpbWFyeVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXJhZGlvLXJpcHBsZVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXJpcHBsZS1lbGVtZW50W19uZ2NvbnRlbnQtJUNPTVAlXTpub3QoLm1hdC1yYWRpby1wZXJzaXN0ZW50LXJpcHBsZSksIC5tYXQtcmFkaW8tYnV0dG9uLm1hdC1wcmltYXJ5Lm1hdC1yYWRpby1jaGVja2VkW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtcmFkaW8tcGVyc2lzdGVudC1yaXBwbGVbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXJhZGlvLWJ1dHRvbi5tYXQtcHJpbWFyeVtfbmdjb250ZW50LSVDT01QJV06YWN0aXZlICAgLm1hdC1yYWRpby1wZXJzaXN0ZW50LXJpcHBsZVtfbmdjb250ZW50LSVDT01QJV17YmFja2dyb3VuZC1jb2xvcjojZjU3YzAwfS5tYXQtcmFkaW8tYnV0dG9uLm1hdC1hY2NlbnQubWF0LXJhZGlvLWNoZWNrZWRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1yYWRpby1vdXRlci1jaXJjbGVbX25nY29udGVudC0lQ09NUCVde2JvcmRlci1jb2xvcjojZmY5ODAwfS5tYXQtcmFkaW8tYnV0dG9uLm1hdC1hY2NlbnRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1yYWRpby1pbm5lci1jaXJjbGVbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXJhZGlvLWJ1dHRvbi5tYXQtYWNjZW50W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtcmFkaW8tcmlwcGxlW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtcmlwcGxlLWVsZW1lbnRbX25nY29udGVudC0lQ09NUCVdOm5vdCgubWF0LXJhZGlvLXBlcnNpc3RlbnQtcmlwcGxlKSwgLm1hdC1yYWRpby1idXR0b24ubWF0LWFjY2VudC5tYXQtcmFkaW8tY2hlY2tlZFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXJhZGlvLXBlcnNpc3RlbnQtcmlwcGxlW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1yYWRpby1idXR0b24ubWF0LWFjY2VudFtfbmdjb250ZW50LSVDT01QJV06YWN0aXZlICAgLm1hdC1yYWRpby1wZXJzaXN0ZW50LXJpcHBsZVtfbmdjb250ZW50LSVDT01QJV17YmFja2dyb3VuZC1jb2xvcjojZmY5ODAwfS5tYXQtcmFkaW8tYnV0dG9uLm1hdC13YXJuLm1hdC1yYWRpby1jaGVja2VkW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtcmFkaW8tb3V0ZXItY2lyY2xlW19uZ2NvbnRlbnQtJUNPTVAlXXtib3JkZXItY29sb3I6I2Y0NDMzNn0ubWF0LXJhZGlvLWJ1dHRvbi5tYXQtd2Fybltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXJhZGlvLWlubmVyLWNpcmNsZVtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtcmFkaW8tYnV0dG9uLm1hdC13YXJuW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtcmFkaW8tcmlwcGxlW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtcmlwcGxlLWVsZW1lbnRbX25nY29udGVudC0lQ09NUCVdOm5vdCgubWF0LXJhZGlvLXBlcnNpc3RlbnQtcmlwcGxlKSwgLm1hdC1yYWRpby1idXR0b24ubWF0LXdhcm4ubWF0LXJhZGlvLWNoZWNrZWRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1yYWRpby1wZXJzaXN0ZW50LXJpcHBsZVtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtcmFkaW8tYnV0dG9uLm1hdC13YXJuW19uZ2NvbnRlbnQtJUNPTVAlXTphY3RpdmUgICAubWF0LXJhZGlvLXBlcnNpc3RlbnQtcmlwcGxlW19uZ2NvbnRlbnQtJUNPTVAlXXtiYWNrZ3JvdW5kLWNvbG9yOiNmNDQzMzZ9Lm1hdC1yYWRpby1idXR0b24ubWF0LXJhZGlvLWRpc2FibGVkLm1hdC1yYWRpby1jaGVja2VkW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtcmFkaW8tb3V0ZXItY2lyY2xlW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1yYWRpby1idXR0b24ubWF0LXJhZGlvLWRpc2FibGVkW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtcmFkaW8tb3V0ZXItY2lyY2xlW19uZ2NvbnRlbnQtJUNPTVAlXXtib3JkZXItY29sb3I6cmdiYSgwLDAsMCwuMzgpfS5tYXQtcmFkaW8tYnV0dG9uLm1hdC1yYWRpby1kaXNhYmxlZFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXJhZGlvLXJpcHBsZVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXJpcHBsZS1lbGVtZW50W19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1yYWRpby1idXR0b24ubWF0LXJhZGlvLWRpc2FibGVkW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtcmFkaW8taW5uZXItY2lyY2xlW19uZ2NvbnRlbnQtJUNPTVAlXXtiYWNrZ3JvdW5kLWNvbG9yOnJnYmEoMCwwLDAsLjM4KX0ubWF0LXJhZGlvLWJ1dHRvbi5tYXQtcmFkaW8tZGlzYWJsZWRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1yYWRpby1sYWJlbC1jb250ZW50W19uZ2NvbnRlbnQtJUNPTVAlXXtjb2xvcjpyZ2JhKDAsMCwwLC4zOCl9Lm1hdC1yYWRpby1idXR0b25bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1yaXBwbGUtZWxlbWVudFtfbmdjb250ZW50LSVDT01QJV17YmFja2dyb3VuZC1jb2xvcjojMDAwfS5tYXQtc2VsZWN0LXZhbHVlW19uZ2NvbnRlbnQtJUNPTVAlXXtjb2xvcjojMjEyMTIxfS5tYXQtc2VsZWN0LXBsYWNlaG9sZGVyW19uZ2NvbnRlbnQtJUNPTVAlXXtjb2xvcjpyZ2JhKDk3LDk3LDk3LC40Mil9Lm1hdC1zZWxlY3QtZGlzYWJsZWRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1zZWxlY3QtdmFsdWVbX25nY29udGVudC0lQ09NUCVde2NvbG9yOiM3NTc1NzV9Lm1hdC1zZWxlY3QtYXJyb3dbX25nY29udGVudC0lQ09NUCVde2NvbG9yOiM2MTYxNjF9Lm1hdC1zZWxlY3QtcGFuZWxbX25nY29udGVudC0lQ09NUCVde2JhY2tncm91bmQ6I2ZmZn0ubWF0LXNlbGVjdC1wYW5lbFtfbmdjb250ZW50LSVDT01QJV06bm90KFtjbGFzcyo9bWF0LWVsZXZhdGlvbi16XSl7Ym94LXNoYWRvdzowcHggMnB4IDRweCAtMXB4IHJnYmEoMCwgMCwgMCwgMC4yKSwwcHggNHB4IDVweCAwcHggcmdiYSgwLCAwLCAwLCAwLjE0KSwwcHggMXB4IDEwcHggMHB4IHJnYmEoMCwgMCwgMCwgMC4xMil9Lm1hdC1zZWxlY3QtcGFuZWxbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1vcHRpb24ubWF0LXNlbGVjdGVkW19uZ2NvbnRlbnQtJUNPTVAlXTpub3QoLm1hdC1vcHRpb24tbXVsdGlwbGUpe2JhY2tncm91bmQ6cmdiYSgwLDAsMCwuMTIpfS5tYXQtZm9ybS1maWVsZC5tYXQtZm9jdXNlZC5tYXQtcHJpbWFyeVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXNlbGVjdC1hcnJvd1tfbmdjb250ZW50LSVDT01QJV17Y29sb3I6I2Y1N2MwMH0ubWF0LWZvcm0tZmllbGQubWF0LWZvY3VzZWQubWF0LWFjY2VudFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXNlbGVjdC1hcnJvd1tfbmdjb250ZW50LSVDT01QJV17Y29sb3I6I2ZmOTgwMH0ubWF0LWZvcm0tZmllbGQubWF0LWZvY3VzZWQubWF0LXdhcm5bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1zZWxlY3QtYXJyb3dbX25nY29udGVudC0lQ09NUCVde2NvbG9yOiNmNDQzMzZ9Lm1hdC1mb3JtLWZpZWxkW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtc2VsZWN0Lm1hdC1zZWxlY3QtaW52YWxpZFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXNlbGVjdC1hcnJvd1tfbmdjb250ZW50LSVDT01QJV17Y29sb3I6I2Y0NDMzNn0ubWF0LWZvcm0tZmllbGRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1zZWxlY3QubWF0LXNlbGVjdC1kaXNhYmxlZFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXNlbGVjdC1hcnJvd1tfbmdjb250ZW50LSVDT01QJV17Y29sb3I6Izc1NzU3NX0ubWF0LWRyYXdlci1jb250YWluZXJbX25nY29udGVudC0lQ09NUCVde2JhY2tncm91bmQtY29sb3I6I2ZhZmFmYTtjb2xvcjojMjEyMTIxfS5tYXQtZHJhd2VyW19uZ2NvbnRlbnQtJUNPTVAlXXtiYWNrZ3JvdW5kLWNvbG9yOiNmZmY7Y29sb3I6IzIxMjEyMX0ubWF0LWRyYXdlci5tYXQtZHJhd2VyLXB1c2hbX25nY29udGVudC0lQ09NUCVde2JhY2tncm91bmQtY29sb3I6I2ZmZn0ubWF0LWRyYXdlcltfbmdjb250ZW50LSVDT01QJV06bm90KC5tYXQtZHJhd2VyLXNpZGUpe2JveC1zaGFkb3c6MHB4IDhweCAxMHB4IC01cHggcmdiYSgwLCAwLCAwLCAwLjIpLDBweCAxNnB4IDI0cHggMnB4IHJnYmEoMCwgMCwgMCwgMC4xNCksMHB4IDZweCAzMHB4IDVweCByZ2JhKDAsIDAsIDAsIDAuMTIpfS5tYXQtZHJhd2VyLXNpZGVbX25nY29udGVudC0lQ09NUCVde2JvcmRlci1yaWdodDpzb2xpZCAxcHggcmdiYSgwLDAsMCwuMTIpfS5tYXQtZHJhd2VyLXNpZGUubWF0LWRyYXdlci1lbmRbX25nY29udGVudC0lQ09NUCVde2JvcmRlci1sZWZ0OnNvbGlkIDFweCByZ2JhKDAsMCwwLC4xMik7Ym9yZGVyLXJpZ2h0Om5vbmV9W2Rpcj1ydGxdW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZHJhd2VyLXNpZGVbX25nY29udGVudC0lQ09NUCVde2JvcmRlci1sZWZ0OnNvbGlkIDFweCByZ2JhKDAsMCwwLC4xMik7Ym9yZGVyLXJpZ2h0Om5vbmV9W2Rpcj1ydGxdW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZHJhd2VyLXNpZGUubWF0LWRyYXdlci1lbmRbX25nY29udGVudC0lQ09NUCVde2JvcmRlci1sZWZ0Om5vbmU7Ym9yZGVyLXJpZ2h0OnNvbGlkIDFweCByZ2JhKDAsMCwwLC4xMil9Lm1hdC1kcmF3ZXItYmFja2Ryb3AubWF0LWRyYXdlci1zaG93bltfbmdjb250ZW50LSVDT01QJV17YmFja2dyb3VuZC1jb2xvcjpyZ2JhKDAsMCwwLC42KX0ubWF0LXNsaWRlLXRvZ2dsZS5tYXQtY2hlY2tlZFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXNsaWRlLXRvZ2dsZS10aHVtYltfbmdjb250ZW50LSVDT01QJV17YmFja2dyb3VuZC1jb2xvcjojZmY5ODAwfS5tYXQtc2xpZGUtdG9nZ2xlLm1hdC1jaGVja2VkW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtc2xpZGUtdG9nZ2xlLWJhcltfbmdjb250ZW50LSVDT01QJV17YmFja2dyb3VuZC1jb2xvcjpyZ2JhKDI1NSwxNTIsMCwuNTQpfS5tYXQtc2xpZGUtdG9nZ2xlLm1hdC1jaGVja2VkW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtcmlwcGxlLWVsZW1lbnRbX25nY29udGVudC0lQ09NUCVde2JhY2tncm91bmQtY29sb3I6I2ZmOTgwMH0ubWF0LXNsaWRlLXRvZ2dsZS5tYXQtcHJpbWFyeS5tYXQtY2hlY2tlZFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXNsaWRlLXRvZ2dsZS10aHVtYltfbmdjb250ZW50LSVDT01QJV17YmFja2dyb3VuZC1jb2xvcjojZjU3YzAwfS5tYXQtc2xpZGUtdG9nZ2xlLm1hdC1wcmltYXJ5Lm1hdC1jaGVja2VkW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtc2xpZGUtdG9nZ2xlLWJhcltfbmdjb250ZW50LSVDT01QJV17YmFja2dyb3VuZC1jb2xvcjpyZ2JhKDI0NSwxMjQsMCwuNTQpfS5tYXQtc2xpZGUtdG9nZ2xlLm1hdC1wcmltYXJ5Lm1hdC1jaGVja2VkW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtcmlwcGxlLWVsZW1lbnRbX25nY29udGVudC0lQ09NUCVde2JhY2tncm91bmQtY29sb3I6I2Y1N2MwMH0ubWF0LXNsaWRlLXRvZ2dsZS5tYXQtd2Fybi5tYXQtY2hlY2tlZFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXNsaWRlLXRvZ2dsZS10aHVtYltfbmdjb250ZW50LSVDT01QJV17YmFja2dyb3VuZC1jb2xvcjojZjQ0MzM2fS5tYXQtc2xpZGUtdG9nZ2xlLm1hdC13YXJuLm1hdC1jaGVja2VkW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtc2xpZGUtdG9nZ2xlLWJhcltfbmdjb250ZW50LSVDT01QJV17YmFja2dyb3VuZC1jb2xvcjpyZ2JhKDI0NCw2Nyw1NCwuNTQpfS5tYXQtc2xpZGUtdG9nZ2xlLm1hdC13YXJuLm1hdC1jaGVja2VkW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtcmlwcGxlLWVsZW1lbnRbX25nY29udGVudC0lQ09NUCVde2JhY2tncm91bmQtY29sb3I6I2Y0NDMzNn0ubWF0LXNsaWRlLXRvZ2dsZVtfbmdjb250ZW50LSVDT01QJV06bm90KC5tYXQtY2hlY2tlZCkgICAubWF0LXJpcHBsZS1lbGVtZW50W19uZ2NvbnRlbnQtJUNPTVAlXXtiYWNrZ3JvdW5kLWNvbG9yOiMwMDB9Lm1hdC1zbGlkZS10b2dnbGUtdGh1bWJbX25nY29udGVudC0lQ09NUCVde2JveC1zaGFkb3c6MHB4IDJweCAxcHggLTFweCByZ2JhKDAsIDAsIDAsIDAuMiksMHB4IDFweCAxcHggMHB4IHJnYmEoMCwgMCwgMCwgMC4xNCksMHB4IDFweCAzcHggMHB4IHJnYmEoMCwgMCwgMCwgMC4xMik7YmFja2dyb3VuZC1jb2xvcjojZmFmYWZhfS5tYXQtc2xpZGUtdG9nZ2xlLWJhcltfbmdjb250ZW50LSVDT01QJV17YmFja2dyb3VuZC1jb2xvcjpyZ2JhKDAsMCwwLC4zOCl9Lm1hdC1zbGlkZXItdHJhY2stYmFja2dyb3VuZFtfbmdjb250ZW50LSVDT01QJV17YmFja2dyb3VuZC1jb2xvcjpyZ2JhKDAsMCwwLC4yNil9Lm1hdC1wcmltYXJ5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtc2xpZGVyLXRyYWNrLWZpbGxbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXByaW1hcnlbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1zbGlkZXItdGh1bWJbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXByaW1hcnlbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1zbGlkZXItdGh1bWItbGFiZWxbX25nY29udGVudC0lQ09NUCVde2JhY2tncm91bmQtY29sb3I6I2Y1N2MwMH0ubWF0LXByaW1hcnlbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1zbGlkZXItdGh1bWItbGFiZWwtdGV4dFtfbmdjb250ZW50LSVDT01QJV17Y29sb3I6I2ZmZn0ubWF0LXByaW1hcnlbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1zbGlkZXItZm9jdXMtcmluZ1tfbmdjb250ZW50LSVDT01QJV17YmFja2dyb3VuZC1jb2xvcjpyZ2JhKDI0NSwxMjQsMCwuMil9Lm1hdC1hY2NlbnRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1zbGlkZXItdHJhY2stZmlsbFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtYWNjZW50W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtc2xpZGVyLXRodW1iW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1hY2NlbnRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1zbGlkZXItdGh1bWItbGFiZWxbX25nY29udGVudC0lQ09NUCVde2JhY2tncm91bmQtY29sb3I6I2ZmOTgwMH0ubWF0LWFjY2VudFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXNsaWRlci10aHVtYi1sYWJlbC10ZXh0W19uZ2NvbnRlbnQtJUNPTVAlXXtjb2xvcjojZmZmfS5tYXQtYWNjZW50W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtc2xpZGVyLWZvY3VzLXJpbmdbX25nY29udGVudC0lQ09NUCVde2JhY2tncm91bmQtY29sb3I6cmdiYSgyNTUsMTUyLDAsLjIpfS5tYXQtd2Fybltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXNsaWRlci10cmFjay1maWxsW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC13YXJuW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtc2xpZGVyLXRodW1iW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC13YXJuW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtc2xpZGVyLXRodW1iLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXtiYWNrZ3JvdW5kLWNvbG9yOiNmNDQzMzZ9Lm1hdC13YXJuW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtc2xpZGVyLXRodW1iLWxhYmVsLXRleHRbX25nY29udGVudC0lQ09NUCVde2NvbG9yOiNmZmZ9Lm1hdC13YXJuW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtc2xpZGVyLWZvY3VzLXJpbmdbX25nY29udGVudC0lQ09NUCVde2JhY2tncm91bmQtY29sb3I6cmdiYSgyNDQsNjcsNTQsLjIpfS5tYXQtc2xpZGVyW19uZ2NvbnRlbnQtJUNPTVAlXTpob3ZlciAgIC5tYXQtc2xpZGVyLXRyYWNrLWJhY2tncm91bmRbX25nY29udGVudC0lQ09NUCVdLCAuY2RrLWZvY3VzZWRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1zbGlkZXItdHJhY2stYmFja2dyb3VuZFtfbmdjb250ZW50LSVDT01QJV17YmFja2dyb3VuZC1jb2xvcjpyZ2JhKDAsMCwwLC4zOCl9Lm1hdC1zbGlkZXItZGlzYWJsZWRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1zbGlkZXItdHJhY2stYmFja2dyb3VuZFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtc2xpZGVyLWRpc2FibGVkW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtc2xpZGVyLXRyYWNrLWZpbGxbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXNsaWRlci1kaXNhYmxlZFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXNsaWRlci10aHVtYltfbmdjb250ZW50LSVDT01QJV17YmFja2dyb3VuZC1jb2xvcjpyZ2JhKDAsMCwwLC4yNil9Lm1hdC1zbGlkZXItZGlzYWJsZWRbX25nY29udGVudC0lQ09NUCVdOmhvdmVyICAgLm1hdC1zbGlkZXItdHJhY2stYmFja2dyb3VuZFtfbmdjb250ZW50LSVDT01QJV17YmFja2dyb3VuZC1jb2xvcjpyZ2JhKDAsMCwwLC4yNil9Lm1hdC1zbGlkZXItbWluLXZhbHVlW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtc2xpZGVyLWZvY3VzLXJpbmdbX25nY29udGVudC0lQ09NUCVde2JhY2tncm91bmQtY29sb3I6cmdiYSgwLDAsMCwuMTIpfS5tYXQtc2xpZGVyLW1pbi12YWx1ZS5tYXQtc2xpZGVyLXRodW1iLWxhYmVsLXNob3dpbmdbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1zbGlkZXItdGh1bWJbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXNsaWRlci1taW4tdmFsdWUubWF0LXNsaWRlci10aHVtYi1sYWJlbC1zaG93aW5nW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtc2xpZGVyLXRodW1iLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXtiYWNrZ3JvdW5kLWNvbG9yOnJnYmEoMCwwLDAsLjg3KX0ubWF0LXNsaWRlci1taW4tdmFsdWUubWF0LXNsaWRlci10aHVtYi1sYWJlbC1zaG93aW5nLmNkay1mb2N1c2VkW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtc2xpZGVyLXRodW1iW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1zbGlkZXItbWluLXZhbHVlLm1hdC1zbGlkZXItdGh1bWItbGFiZWwtc2hvd2luZy5jZGstZm9jdXNlZFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXNsaWRlci10aHVtYi1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17YmFja2dyb3VuZC1jb2xvcjpyZ2JhKDAsMCwwLC4yNil9Lm1hdC1zbGlkZXItbWluLXZhbHVlW19uZ2NvbnRlbnQtJUNPTVAlXTpub3QoLm1hdC1zbGlkZXItdGh1bWItbGFiZWwtc2hvd2luZykgICAubWF0LXNsaWRlci10aHVtYltfbmdjb250ZW50LSVDT01QJV17Ym9yZGVyLWNvbG9yOnJnYmEoMCwwLDAsLjI2KTtiYWNrZ3JvdW5kLWNvbG9yOnRyYW5zcGFyZW50fS5tYXQtc2xpZGVyLW1pbi12YWx1ZVtfbmdjb250ZW50LSVDT01QJV06bm90KC5tYXQtc2xpZGVyLXRodW1iLWxhYmVsLXNob3dpbmcpOmhvdmVyICAgLm1hdC1zbGlkZXItdGh1bWJbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXNsaWRlci1taW4tdmFsdWVbX25nY29udGVudC0lQ09NUCVdOm5vdCgubWF0LXNsaWRlci10aHVtYi1sYWJlbC1zaG93aW5nKS5jZGstZm9jdXNlZCAgIC5tYXQtc2xpZGVyLXRodW1iW19uZ2NvbnRlbnQtJUNPTVAlXXtib3JkZXItY29sb3I6cmdiYSgwLDAsMCwuMzgpfS5tYXQtc2xpZGVyLW1pbi12YWx1ZVtfbmdjb250ZW50LSVDT01QJV06bm90KC5tYXQtc2xpZGVyLXRodW1iLWxhYmVsLXNob3dpbmcpOmhvdmVyLm1hdC1zbGlkZXItZGlzYWJsZWQgICAubWF0LXNsaWRlci10aHVtYltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtc2xpZGVyLW1pbi12YWx1ZVtfbmdjb250ZW50LSVDT01QJV06bm90KC5tYXQtc2xpZGVyLXRodW1iLWxhYmVsLXNob3dpbmcpLmNkay1mb2N1c2VkLm1hdC1zbGlkZXItZGlzYWJsZWQgICAubWF0LXNsaWRlci10aHVtYltfbmdjb250ZW50LSVDT01QJV17Ym9yZGVyLWNvbG9yOnJnYmEoMCwwLDAsLjI2KX0ubWF0LXNsaWRlci1oYXMtdGlja3NbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1zbGlkZXItd3JhcHBlcltfbmdjb250ZW50LSVDT01QJV06OmFmdGVye2JvcmRlci1jb2xvcjpyZ2JhKDAsMCwwLC43KX0ubWF0LXNsaWRlci1ob3Jpem9udGFsW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtc2xpZGVyLXRpY2tzW19uZ2NvbnRlbnQtJUNPTVAlXXtiYWNrZ3JvdW5kLWltYWdlOnJlcGVhdGluZy1saW5lYXItZ3JhZGllbnQodG8gcmlnaHQsIHJnYmEoMCwgMCwgMCwgMC43KSwgcmdiYSgwLCAwLCAwLCAwLjcpIDJweCwgdHJhbnNwYXJlbnQgMCwgdHJhbnNwYXJlbnQpO2JhY2tncm91bmQtaW1hZ2U6LW1vei1yZXBlYXRpbmctbGluZWFyLWdyYWRpZW50KDAuMDAwMWRlZywgcmdiYSgwLCAwLCAwLCAwLjcpLCByZ2JhKDAsIDAsIDAsIDAuNykgMnB4LCB0cmFuc3BhcmVudCAwLCB0cmFuc3BhcmVudCl9Lm1hdC1zbGlkZXItdmVydGljYWxbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1zbGlkZXItdGlja3NbX25nY29udGVudC0lQ09NUCVde2JhY2tncm91bmQtaW1hZ2U6cmVwZWF0aW5nLWxpbmVhci1ncmFkaWVudCh0byBib3R0b20sIHJnYmEoMCwgMCwgMCwgMC43KSwgcmdiYSgwLCAwLCAwLCAwLjcpIDJweCwgdHJhbnNwYXJlbnQgMCwgdHJhbnNwYXJlbnQpfS5tYXQtc3RlcC1oZWFkZXIuY2RrLWtleWJvYXJkLWZvY3VzZWRbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXN0ZXAtaGVhZGVyLmNkay1wcm9ncmFtLWZvY3VzZWRbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXN0ZXAtaGVhZGVyW19uZ2NvbnRlbnQtJUNPTVAlXTpob3ZlcntiYWNrZ3JvdW5kLWNvbG9yOnJnYmEoMCwwLDAsLjA0KX1AbWVkaWEoaG92ZXI6IG5vbmUpey5tYXQtc3RlcC1oZWFkZXJbX25nY29udGVudC0lQ09NUCVdOmhvdmVye2JhY2tncm91bmQ6bm9uZX19Lm1hdC1zdGVwLWhlYWRlcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXN0ZXAtbGFiZWxbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXN0ZXAtaGVhZGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtc3RlcC1vcHRpb25hbFtfbmdjb250ZW50LSVDT01QJV17Y29sb3I6IzYxNjE2MX0ubWF0LXN0ZXAtaGVhZGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtc3RlcC1pY29uW19uZ2NvbnRlbnQtJUNPTVAlXXtiYWNrZ3JvdW5kLWNvbG9yOiM2MTYxNjE7Y29sb3I6I2ZmZn0ubWF0LXN0ZXAtaGVhZGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtc3RlcC1pY29uLXNlbGVjdGVkW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1zdGVwLWhlYWRlcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXN0ZXAtaWNvbi1zdGF0ZS1kb25lW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1zdGVwLWhlYWRlcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXN0ZXAtaWNvbi1zdGF0ZS1lZGl0W19uZ2NvbnRlbnQtJUNPTVAlXXtiYWNrZ3JvdW5kLWNvbG9yOiNmNTdjMDA7Y29sb3I6I2ZmZn0ubWF0LXN0ZXAtaGVhZGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtc3RlcC1pY29uLXN0YXRlLWVycm9yW19uZ2NvbnRlbnQtJUNPTVAlXXtiYWNrZ3JvdW5kLWNvbG9yOnRyYW5zcGFyZW50O2NvbG9yOiNmNDQzMzZ9Lm1hdC1zdGVwLWhlYWRlcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXN0ZXAtbGFiZWwubWF0LXN0ZXAtbGFiZWwtYWN0aXZlW19uZ2NvbnRlbnQtJUNPTVAlXXtjb2xvcjojMjEyMTIxfS5tYXQtc3RlcC1oZWFkZXJbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1zdGVwLWxhYmVsLm1hdC1zdGVwLWxhYmVsLWVycm9yW19uZ2NvbnRlbnQtJUNPTVAlXXtjb2xvcjojZjQ0MzM2fS5tYXQtc3RlcHBlci1ob3Jpem9udGFsW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1zdGVwcGVyLXZlcnRpY2FsW19uZ2NvbnRlbnQtJUNPTVAlXXtiYWNrZ3JvdW5kLWNvbG9yOiNmZmZ9Lm1hdC1zdGVwcGVyLXZlcnRpY2FsLWxpbmVbX25nY29udGVudC0lQ09NUCVdOjpiZWZvcmV7Ym9yZGVyLWxlZnQtY29sb3I6cmdiYSgwLDAsMCwuMTIpfS5tYXQtaG9yaXpvbnRhbC1zdGVwcGVyLWhlYWRlcltfbmdjb250ZW50LSVDT01QJV06OmJlZm9yZSwgLm1hdC1ob3Jpem9udGFsLXN0ZXBwZXItaGVhZGVyW19uZ2NvbnRlbnQtJUNPTVAlXTo6YWZ0ZXIsIC5tYXQtc3RlcHBlci1ob3Jpem9udGFsLWxpbmVbX25nY29udGVudC0lQ09NUCVde2JvcmRlci10b3AtY29sb3I6cmdiYSgwLDAsMCwuMTIpfS5tYXQtaG9yaXpvbnRhbC1zdGVwcGVyLWhlYWRlcltfbmdjb250ZW50LSVDT01QJV17aGVpZ2h0OjcycHh9Lm1hdC1zdGVwcGVyLWxhYmVsLXBvc2l0aW9uLWJvdHRvbVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWhvcml6b250YWwtc3RlcHBlci1oZWFkZXJbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXZlcnRpY2FsLXN0ZXBwZXItaGVhZGVyW19uZ2NvbnRlbnQtJUNPTVAlXXtwYWRkaW5nOjI0cHggMjRweH0ubWF0LXN0ZXBwZXItdmVydGljYWwtbGluZVtfbmdjb250ZW50LSVDT01QJV06OmJlZm9yZXt0b3A6LTE2cHg7Ym90dG9tOi0xNnB4fS5tYXQtc3RlcHBlci1sYWJlbC1wb3NpdGlvbi1ib3R0b21bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1ob3Jpem9udGFsLXN0ZXBwZXItaGVhZGVyW19uZ2NvbnRlbnQtJUNPTVAlXTo6YWZ0ZXIsIC5tYXQtc3RlcHBlci1sYWJlbC1wb3NpdGlvbi1ib3R0b21bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1ob3Jpem9udGFsLXN0ZXBwZXItaGVhZGVyW19uZ2NvbnRlbnQtJUNPTVAlXTo6YmVmb3Jle3RvcDozNnB4fS5tYXQtc3RlcHBlci1sYWJlbC1wb3NpdGlvbi1ib3R0b21bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1zdGVwcGVyLWhvcml6b250YWwtbGluZVtfbmdjb250ZW50LSVDT01QJV17dG9wOjM2cHh9Lm1hdC1zb3J0LWhlYWRlci1hcnJvd1tfbmdjb250ZW50LSVDT01QJV17Y29sb3I6IzYxNjE2MX0ubWF0LXRhYi1uYXYtYmFyW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10YWItaGVhZGVyW19uZ2NvbnRlbnQtJUNPTVAlXXtib3JkZXItYm90dG9tOjFweCBzb2xpZCByZ2JhKDAsMCwwLC4xMil9Lm1hdC10YWItZ3JvdXAtaW52ZXJ0ZWQtaGVhZGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtdGFiLW5hdi1iYXJbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXRhYi1ncm91cC1pbnZlcnRlZC1oZWFkZXJbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC10YWItaGVhZGVyW19uZ2NvbnRlbnQtJUNPTVAlXXtib3JkZXItdG9wOjFweCBzb2xpZCByZ2JhKDAsMCwwLC4xMik7Ym9yZGVyLWJvdHRvbTpub25lfS5tYXQtdGFiLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10YWItbGlua1tfbmdjb250ZW50LSVDT01QJV17Y29sb3I6IzIxMjEyMX0ubWF0LXRhYi1sYWJlbC5tYXQtdGFiLWRpc2FibGVkW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10YWItbGluay5tYXQtdGFiLWRpc2FibGVkW19uZ2NvbnRlbnQtJUNPTVAlXXtjb2xvcjojNzU3NTc1fS5tYXQtdGFiLWhlYWRlci1wYWdpbmF0aW9uLWNoZXZyb25bX25nY29udGVudC0lQ09NUCVde2JvcmRlci1jb2xvcjojMjEyMTIxfS5tYXQtdGFiLWhlYWRlci1wYWdpbmF0aW9uLWRpc2FibGVkW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtdGFiLWhlYWRlci1wYWdpbmF0aW9uLWNoZXZyb25bX25nY29udGVudC0lQ09NUCVde2JvcmRlci1jb2xvcjojNzU3NTc1fS5tYXQtdGFiLWdyb3VwW2NsYXNzKj1tYXQtYmFja2dyb3VuZC1dW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtdGFiLWhlYWRlcltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdGFiLW5hdi1iYXJbY2xhc3MqPW1hdC1iYWNrZ3JvdW5kLV1bX25nY29udGVudC0lQ09NUCVde2JvcmRlci1ib3R0b206bm9uZTtib3JkZXItdG9wOm5vbmV9Lm1hdC10YWItZ3JvdXAubWF0LXByaW1hcnlbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC10YWItbGFiZWwuY2RrLWtleWJvYXJkLWZvY3VzZWRbX25nY29udGVudC0lQ09NUCVdOm5vdCgubWF0LXRhYi1kaXNhYmxlZCksIC5tYXQtdGFiLWdyb3VwLm1hdC1wcmltYXJ5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtdGFiLWxhYmVsLmNkay1wcm9ncmFtLWZvY3VzZWRbX25nY29udGVudC0lQ09NUCVdOm5vdCgubWF0LXRhYi1kaXNhYmxlZCksIC5tYXQtdGFiLWdyb3VwLm1hdC1wcmltYXJ5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtdGFiLWxpbmsuY2RrLWtleWJvYXJkLWZvY3VzZWRbX25nY29udGVudC0lQ09NUCVdOm5vdCgubWF0LXRhYi1kaXNhYmxlZCksIC5tYXQtdGFiLWdyb3VwLm1hdC1wcmltYXJ5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtdGFiLWxpbmsuY2RrLXByb2dyYW0tZm9jdXNlZFtfbmdjb250ZW50LSVDT01QJV06bm90KC5tYXQtdGFiLWRpc2FibGVkKSwgLm1hdC10YWItbmF2LWJhci5tYXQtcHJpbWFyeVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXRhYi1sYWJlbC5jZGsta2V5Ym9hcmQtZm9jdXNlZFtfbmdjb250ZW50LSVDT01QJV06bm90KC5tYXQtdGFiLWRpc2FibGVkKSwgLm1hdC10YWItbmF2LWJhci5tYXQtcHJpbWFyeVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXRhYi1sYWJlbC5jZGstcHJvZ3JhbS1mb2N1c2VkW19uZ2NvbnRlbnQtJUNPTVAlXTpub3QoLm1hdC10YWItZGlzYWJsZWQpLCAubWF0LXRhYi1uYXYtYmFyLm1hdC1wcmltYXJ5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtdGFiLWxpbmsuY2RrLWtleWJvYXJkLWZvY3VzZWRbX25nY29udGVudC0lQ09NUCVdOm5vdCgubWF0LXRhYi1kaXNhYmxlZCksIC5tYXQtdGFiLW5hdi1iYXIubWF0LXByaW1hcnlbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC10YWItbGluay5jZGstcHJvZ3JhbS1mb2N1c2VkW19uZ2NvbnRlbnQtJUNPTVAlXTpub3QoLm1hdC10YWItZGlzYWJsZWQpe2JhY2tncm91bmQtY29sb3I6cmdiYSgyNTUsMTUyLDAsLjMpfS5tYXQtdGFiLWdyb3VwLm1hdC1wcmltYXJ5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaW5rLWJhcltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdGFiLW5hdi1iYXIubWF0LXByaW1hcnlbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pbmstYmFyW19uZ2NvbnRlbnQtJUNPTVAlXXtiYWNrZ3JvdW5kLWNvbG9yOiNmNTdjMDB9Lm1hdC10YWItZ3JvdXAubWF0LXByaW1hcnkubWF0LWJhY2tncm91bmQtcHJpbWFyeVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWluay1iYXJbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXRhYi1uYXYtYmFyLm1hdC1wcmltYXJ5Lm1hdC1iYWNrZ3JvdW5kLXByaW1hcnlbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pbmstYmFyW19uZ2NvbnRlbnQtJUNPTVAlXXtiYWNrZ3JvdW5kLWNvbG9yOiNmZmZ9Lm1hdC10YWItZ3JvdXAubWF0LWFjY2VudFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXRhYi1sYWJlbC5jZGsta2V5Ym9hcmQtZm9jdXNlZFtfbmdjb250ZW50LSVDT01QJV06bm90KC5tYXQtdGFiLWRpc2FibGVkKSwgLm1hdC10YWItZ3JvdXAubWF0LWFjY2VudFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXRhYi1sYWJlbC5jZGstcHJvZ3JhbS1mb2N1c2VkW19uZ2NvbnRlbnQtJUNPTVAlXTpub3QoLm1hdC10YWItZGlzYWJsZWQpLCAubWF0LXRhYi1ncm91cC5tYXQtYWNjZW50W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtdGFiLWxpbmsuY2RrLWtleWJvYXJkLWZvY3VzZWRbX25nY29udGVudC0lQ09NUCVdOm5vdCgubWF0LXRhYi1kaXNhYmxlZCksIC5tYXQtdGFiLWdyb3VwLm1hdC1hY2NlbnRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC10YWItbGluay5jZGstcHJvZ3JhbS1mb2N1c2VkW19uZ2NvbnRlbnQtJUNPTVAlXTpub3QoLm1hdC10YWItZGlzYWJsZWQpLCAubWF0LXRhYi1uYXYtYmFyLm1hdC1hY2NlbnRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC10YWItbGFiZWwuY2RrLWtleWJvYXJkLWZvY3VzZWRbX25nY29udGVudC0lQ09NUCVdOm5vdCgubWF0LXRhYi1kaXNhYmxlZCksIC5tYXQtdGFiLW5hdi1iYXIubWF0LWFjY2VudFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXRhYi1sYWJlbC5jZGstcHJvZ3JhbS1mb2N1c2VkW19uZ2NvbnRlbnQtJUNPTVAlXTpub3QoLm1hdC10YWItZGlzYWJsZWQpLCAubWF0LXRhYi1uYXYtYmFyLm1hdC1hY2NlbnRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC10YWItbGluay5jZGsta2V5Ym9hcmQtZm9jdXNlZFtfbmdjb250ZW50LSVDT01QJV06bm90KC5tYXQtdGFiLWRpc2FibGVkKSwgLm1hdC10YWItbmF2LWJhci5tYXQtYWNjZW50W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtdGFiLWxpbmsuY2RrLXByb2dyYW0tZm9jdXNlZFtfbmdjb250ZW50LSVDT01QJV06bm90KC5tYXQtdGFiLWRpc2FibGVkKXtiYWNrZ3JvdW5kLWNvbG9yOnJnYmEoMjU1LDE1MiwwLC4zKX0ubWF0LXRhYi1ncm91cC5tYXQtYWNjZW50W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaW5rLWJhcltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdGFiLW5hdi1iYXIubWF0LWFjY2VudFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWluay1iYXJbX25nY29udGVudC0lQ09NUCVde2JhY2tncm91bmQtY29sb3I6I2ZmOTgwMH0ubWF0LXRhYi1ncm91cC5tYXQtYWNjZW50Lm1hdC1iYWNrZ3JvdW5kLWFjY2VudFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWluay1iYXJbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXRhYi1uYXYtYmFyLm1hdC1hY2NlbnQubWF0LWJhY2tncm91bmQtYWNjZW50W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaW5rLWJhcltfbmdjb250ZW50LSVDT01QJV17YmFja2dyb3VuZC1jb2xvcjojZmZmfS5tYXQtdGFiLWdyb3VwLm1hdC13YXJuW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtdGFiLWxhYmVsLmNkay1rZXlib2FyZC1mb2N1c2VkW19uZ2NvbnRlbnQtJUNPTVAlXTpub3QoLm1hdC10YWItZGlzYWJsZWQpLCAubWF0LXRhYi1ncm91cC5tYXQtd2Fybltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXRhYi1sYWJlbC5jZGstcHJvZ3JhbS1mb2N1c2VkW19uZ2NvbnRlbnQtJUNPTVAlXTpub3QoLm1hdC10YWItZGlzYWJsZWQpLCAubWF0LXRhYi1ncm91cC5tYXQtd2Fybltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXRhYi1saW5rLmNkay1rZXlib2FyZC1mb2N1c2VkW19uZ2NvbnRlbnQtJUNPTVAlXTpub3QoLm1hdC10YWItZGlzYWJsZWQpLCAubWF0LXRhYi1ncm91cC5tYXQtd2Fybltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXRhYi1saW5rLmNkay1wcm9ncmFtLWZvY3VzZWRbX25nY29udGVudC0lQ09NUCVdOm5vdCgubWF0LXRhYi1kaXNhYmxlZCksIC5tYXQtdGFiLW5hdi1iYXIubWF0LXdhcm5bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC10YWItbGFiZWwuY2RrLWtleWJvYXJkLWZvY3VzZWRbX25nY29udGVudC0lQ09NUCVdOm5vdCgubWF0LXRhYi1kaXNhYmxlZCksIC5tYXQtdGFiLW5hdi1iYXIubWF0LXdhcm5bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC10YWItbGFiZWwuY2RrLXByb2dyYW0tZm9jdXNlZFtfbmdjb250ZW50LSVDT01QJV06bm90KC5tYXQtdGFiLWRpc2FibGVkKSwgLm1hdC10YWItbmF2LWJhci5tYXQtd2Fybltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXRhYi1saW5rLmNkay1rZXlib2FyZC1mb2N1c2VkW19uZ2NvbnRlbnQtJUNPTVAlXTpub3QoLm1hdC10YWItZGlzYWJsZWQpLCAubWF0LXRhYi1uYXYtYmFyLm1hdC13YXJuW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtdGFiLWxpbmsuY2RrLXByb2dyYW0tZm9jdXNlZFtfbmdjb250ZW50LSVDT01QJV06bm90KC5tYXQtdGFiLWRpc2FibGVkKXtiYWNrZ3JvdW5kLWNvbG9yOnJnYmEoMjU1LDIwNSwyMTAsLjMpfS5tYXQtdGFiLWdyb3VwLm1hdC13YXJuW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaW5rLWJhcltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdGFiLW5hdi1iYXIubWF0LXdhcm5bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pbmstYmFyW19uZ2NvbnRlbnQtJUNPTVAlXXtiYWNrZ3JvdW5kLWNvbG9yOiNmNDQzMzZ9Lm1hdC10YWItZ3JvdXAubWF0LXdhcm4ubWF0LWJhY2tncm91bmQtd2Fybltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWluay1iYXJbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXRhYi1uYXYtYmFyLm1hdC13YXJuLm1hdC1iYWNrZ3JvdW5kLXdhcm5bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pbmstYmFyW19uZ2NvbnRlbnQtJUNPTVAlXXtiYWNrZ3JvdW5kLWNvbG9yOiNmZmZ9Lm1hdC10YWItZ3JvdXAubWF0LWJhY2tncm91bmQtcHJpbWFyeVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXRhYi1sYWJlbC5jZGsta2V5Ym9hcmQtZm9jdXNlZFtfbmdjb250ZW50LSVDT01QJV06bm90KC5tYXQtdGFiLWRpc2FibGVkKSwgLm1hdC10YWItZ3JvdXAubWF0LWJhY2tncm91bmQtcHJpbWFyeVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXRhYi1sYWJlbC5jZGstcHJvZ3JhbS1mb2N1c2VkW19uZ2NvbnRlbnQtJUNPTVAlXTpub3QoLm1hdC10YWItZGlzYWJsZWQpLCAubWF0LXRhYi1ncm91cC5tYXQtYmFja2dyb3VuZC1wcmltYXJ5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtdGFiLWxpbmsuY2RrLWtleWJvYXJkLWZvY3VzZWRbX25nY29udGVudC0lQ09NUCVdOm5vdCgubWF0LXRhYi1kaXNhYmxlZCksIC5tYXQtdGFiLWdyb3VwLm1hdC1iYWNrZ3JvdW5kLXByaW1hcnlbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC10YWItbGluay5jZGstcHJvZ3JhbS1mb2N1c2VkW19uZ2NvbnRlbnQtJUNPTVAlXTpub3QoLm1hdC10YWItZGlzYWJsZWQpLCAubWF0LXRhYi1uYXYtYmFyLm1hdC1iYWNrZ3JvdW5kLXByaW1hcnlbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC10YWItbGFiZWwuY2RrLWtleWJvYXJkLWZvY3VzZWRbX25nY29udGVudC0lQ09NUCVdOm5vdCgubWF0LXRhYi1kaXNhYmxlZCksIC5tYXQtdGFiLW5hdi1iYXIubWF0LWJhY2tncm91bmQtcHJpbWFyeVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXRhYi1sYWJlbC5jZGstcHJvZ3JhbS1mb2N1c2VkW19uZ2NvbnRlbnQtJUNPTVAlXTpub3QoLm1hdC10YWItZGlzYWJsZWQpLCAubWF0LXRhYi1uYXYtYmFyLm1hdC1iYWNrZ3JvdW5kLXByaW1hcnlbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC10YWItbGluay5jZGsta2V5Ym9hcmQtZm9jdXNlZFtfbmdjb250ZW50LSVDT01QJV06bm90KC5tYXQtdGFiLWRpc2FibGVkKSwgLm1hdC10YWItbmF2LWJhci5tYXQtYmFja2dyb3VuZC1wcmltYXJ5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtdGFiLWxpbmsuY2RrLXByb2dyYW0tZm9jdXNlZFtfbmdjb250ZW50LSVDT01QJV06bm90KC5tYXQtdGFiLWRpc2FibGVkKXtiYWNrZ3JvdW5kLWNvbG9yOnJnYmEoMjU1LDE1MiwwLC4zKX0ubWF0LXRhYi1ncm91cC5tYXQtYmFja2dyb3VuZC1wcmltYXJ5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtdGFiLWhlYWRlcltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdGFiLWdyb3VwLm1hdC1iYWNrZ3JvdW5kLXByaW1hcnlbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC10YWItbGlua3NbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXRhYi1ncm91cC5tYXQtYmFja2dyb3VuZC1wcmltYXJ5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtdGFiLWhlYWRlci1wYWdpbmF0aW9uW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10YWItbmF2LWJhci5tYXQtYmFja2dyb3VuZC1wcmltYXJ5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtdGFiLWhlYWRlcltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdGFiLW5hdi1iYXIubWF0LWJhY2tncm91bmQtcHJpbWFyeVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXRhYi1saW5rc1tfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdGFiLW5hdi1iYXIubWF0LWJhY2tncm91bmQtcHJpbWFyeVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXRhYi1oZWFkZXItcGFnaW5hdGlvbltfbmdjb250ZW50LSVDT01QJV17YmFja2dyb3VuZC1jb2xvcjojZjU3YzAwfS5tYXQtdGFiLWdyb3VwLm1hdC1iYWNrZ3JvdW5kLXByaW1hcnlbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC10YWItbGFiZWxbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXRhYi1ncm91cC5tYXQtYmFja2dyb3VuZC1wcmltYXJ5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtdGFiLWxpbmtbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXRhYi1uYXYtYmFyLm1hdC1iYWNrZ3JvdW5kLXByaW1hcnlbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC10YWItbGFiZWxbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXRhYi1uYXYtYmFyLm1hdC1iYWNrZ3JvdW5kLXByaW1hcnlbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC10YWItbGlua1tfbmdjb250ZW50LSVDT01QJV17Y29sb3I6I2ZmZn0ubWF0LXRhYi1ncm91cC5tYXQtYmFja2dyb3VuZC1wcmltYXJ5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtdGFiLWxhYmVsLm1hdC10YWItZGlzYWJsZWRbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXRhYi1ncm91cC5tYXQtYmFja2dyb3VuZC1wcmltYXJ5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtdGFiLWxpbmsubWF0LXRhYi1kaXNhYmxlZFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdGFiLW5hdi1iYXIubWF0LWJhY2tncm91bmQtcHJpbWFyeVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXRhYi1sYWJlbC5tYXQtdGFiLWRpc2FibGVkW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10YWItbmF2LWJhci5tYXQtYmFja2dyb3VuZC1wcmltYXJ5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtdGFiLWxpbmsubWF0LXRhYi1kaXNhYmxlZFtfbmdjb250ZW50LSVDT01QJV17Y29sb3I6cmdiYSgyNTUsMjU1LDI1NSwuNCl9Lm1hdC10YWItZ3JvdXAubWF0LWJhY2tncm91bmQtcHJpbWFyeVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXRhYi1oZWFkZXItcGFnaW5hdGlvbi1jaGV2cm9uW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10YWItbmF2LWJhci5tYXQtYmFja2dyb3VuZC1wcmltYXJ5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtdGFiLWhlYWRlci1wYWdpbmF0aW9uLWNoZXZyb25bX25nY29udGVudC0lQ09NUCVde2JvcmRlci1jb2xvcjojZmZmfS5tYXQtdGFiLWdyb3VwLm1hdC1iYWNrZ3JvdW5kLXByaW1hcnlbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC10YWItaGVhZGVyLXBhZ2luYXRpb24tZGlzYWJsZWRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC10YWItaGVhZGVyLXBhZ2luYXRpb24tY2hldnJvbltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdGFiLW5hdi1iYXIubWF0LWJhY2tncm91bmQtcHJpbWFyeVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXRhYi1oZWFkZXItcGFnaW5hdGlvbi1kaXNhYmxlZFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXRhYi1oZWFkZXItcGFnaW5hdGlvbi1jaGV2cm9uW19uZ2NvbnRlbnQtJUNPTVAlXXtib3JkZXItY29sb3I6cmdiYSgyNTUsMjU1LDI1NSwuNCl9Lm1hdC10YWItZ3JvdXAubWF0LWJhY2tncm91bmQtcHJpbWFyeVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXJpcHBsZS1lbGVtZW50W19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10YWItbmF2LWJhci5tYXQtYmFja2dyb3VuZC1wcmltYXJ5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtcmlwcGxlLWVsZW1lbnRbX25nY29udGVudC0lQ09NUCVde2JhY2tncm91bmQtY29sb3I6cmdiYSgyNTUsMjU1LDI1NSwuMTIpfS5tYXQtdGFiLWdyb3VwLm1hdC1iYWNrZ3JvdW5kLWFjY2VudFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXRhYi1sYWJlbC5jZGsta2V5Ym9hcmQtZm9jdXNlZFtfbmdjb250ZW50LSVDT01QJV06bm90KC5tYXQtdGFiLWRpc2FibGVkKSwgLm1hdC10YWItZ3JvdXAubWF0LWJhY2tncm91bmQtYWNjZW50W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtdGFiLWxhYmVsLmNkay1wcm9ncmFtLWZvY3VzZWRbX25nY29udGVudC0lQ09NUCVdOm5vdCgubWF0LXRhYi1kaXNhYmxlZCksIC5tYXQtdGFiLWdyb3VwLm1hdC1iYWNrZ3JvdW5kLWFjY2VudFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXRhYi1saW5rLmNkay1rZXlib2FyZC1mb2N1c2VkW19uZ2NvbnRlbnQtJUNPTVAlXTpub3QoLm1hdC10YWItZGlzYWJsZWQpLCAubWF0LXRhYi1ncm91cC5tYXQtYmFja2dyb3VuZC1hY2NlbnRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC10YWItbGluay5jZGstcHJvZ3JhbS1mb2N1c2VkW19uZ2NvbnRlbnQtJUNPTVAlXTpub3QoLm1hdC10YWItZGlzYWJsZWQpLCAubWF0LXRhYi1uYXYtYmFyLm1hdC1iYWNrZ3JvdW5kLWFjY2VudFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXRhYi1sYWJlbC5jZGsta2V5Ym9hcmQtZm9jdXNlZFtfbmdjb250ZW50LSVDT01QJV06bm90KC5tYXQtdGFiLWRpc2FibGVkKSwgLm1hdC10YWItbmF2LWJhci5tYXQtYmFja2dyb3VuZC1hY2NlbnRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC10YWItbGFiZWwuY2RrLXByb2dyYW0tZm9jdXNlZFtfbmdjb250ZW50LSVDT01QJV06bm90KC5tYXQtdGFiLWRpc2FibGVkKSwgLm1hdC10YWItbmF2LWJhci5tYXQtYmFja2dyb3VuZC1hY2NlbnRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC10YWItbGluay5jZGsta2V5Ym9hcmQtZm9jdXNlZFtfbmdjb250ZW50LSVDT01QJV06bm90KC5tYXQtdGFiLWRpc2FibGVkKSwgLm1hdC10YWItbmF2LWJhci5tYXQtYmFja2dyb3VuZC1hY2NlbnRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC10YWItbGluay5jZGstcHJvZ3JhbS1mb2N1c2VkW19uZ2NvbnRlbnQtJUNPTVAlXTpub3QoLm1hdC10YWItZGlzYWJsZWQpe2JhY2tncm91bmQtY29sb3I6cmdiYSgyNTUsMTUyLDAsLjMpfS5tYXQtdGFiLWdyb3VwLm1hdC1iYWNrZ3JvdW5kLWFjY2VudFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXRhYi1oZWFkZXJbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXRhYi1ncm91cC5tYXQtYmFja2dyb3VuZC1hY2NlbnRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC10YWItbGlua3NbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXRhYi1ncm91cC5tYXQtYmFja2dyb3VuZC1hY2NlbnRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC10YWItaGVhZGVyLXBhZ2luYXRpb25bX25nY29udGVudC0lQ09NUCVdLCAubWF0LXRhYi1uYXYtYmFyLm1hdC1iYWNrZ3JvdW5kLWFjY2VudFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXRhYi1oZWFkZXJbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXRhYi1uYXYtYmFyLm1hdC1iYWNrZ3JvdW5kLWFjY2VudFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXRhYi1saW5rc1tfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdGFiLW5hdi1iYXIubWF0LWJhY2tncm91bmQtYWNjZW50W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtdGFiLWhlYWRlci1wYWdpbmF0aW9uW19uZ2NvbnRlbnQtJUNPTVAlXXtiYWNrZ3JvdW5kLWNvbG9yOiNmZjk4MDB9Lm1hdC10YWItZ3JvdXAubWF0LWJhY2tncm91bmQtYWNjZW50W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtdGFiLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10YWItZ3JvdXAubWF0LWJhY2tncm91bmQtYWNjZW50W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtdGFiLWxpbmtbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXRhYi1uYXYtYmFyLm1hdC1iYWNrZ3JvdW5kLWFjY2VudFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXRhYi1sYWJlbFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdGFiLW5hdi1iYXIubWF0LWJhY2tncm91bmQtYWNjZW50W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtdGFiLWxpbmtbX25nY29udGVudC0lQ09NUCVde2NvbG9yOiNmZmZ9Lm1hdC10YWItZ3JvdXAubWF0LWJhY2tncm91bmQtYWNjZW50W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtdGFiLWxhYmVsLm1hdC10YWItZGlzYWJsZWRbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXRhYi1ncm91cC5tYXQtYmFja2dyb3VuZC1hY2NlbnRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC10YWItbGluay5tYXQtdGFiLWRpc2FibGVkW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10YWItbmF2LWJhci5tYXQtYmFja2dyb3VuZC1hY2NlbnRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC10YWItbGFiZWwubWF0LXRhYi1kaXNhYmxlZFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdGFiLW5hdi1iYXIubWF0LWJhY2tncm91bmQtYWNjZW50W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtdGFiLWxpbmsubWF0LXRhYi1kaXNhYmxlZFtfbmdjb250ZW50LSVDT01QJV17Y29sb3I6cmdiYSgyNTUsMjU1LDI1NSwuNCl9Lm1hdC10YWItZ3JvdXAubWF0LWJhY2tncm91bmQtYWNjZW50W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtdGFiLWhlYWRlci1wYWdpbmF0aW9uLWNoZXZyb25bX25nY29udGVudC0lQ09NUCVdLCAubWF0LXRhYi1uYXYtYmFyLm1hdC1iYWNrZ3JvdW5kLWFjY2VudFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXRhYi1oZWFkZXItcGFnaW5hdGlvbi1jaGV2cm9uW19uZ2NvbnRlbnQtJUNPTVAlXXtib3JkZXItY29sb3I6I2ZmZn0ubWF0LXRhYi1ncm91cC5tYXQtYmFja2dyb3VuZC1hY2NlbnRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC10YWItaGVhZGVyLXBhZ2luYXRpb24tZGlzYWJsZWRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC10YWItaGVhZGVyLXBhZ2luYXRpb24tY2hldnJvbltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdGFiLW5hdi1iYXIubWF0LWJhY2tncm91bmQtYWNjZW50W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtdGFiLWhlYWRlci1wYWdpbmF0aW9uLWRpc2FibGVkW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtdGFiLWhlYWRlci1wYWdpbmF0aW9uLWNoZXZyb25bX25nY29udGVudC0lQ09NUCVde2JvcmRlci1jb2xvcjpyZ2JhKDI1NSwyNTUsMjU1LC40KX0ubWF0LXRhYi1ncm91cC5tYXQtYmFja2dyb3VuZC1hY2NlbnRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1yaXBwbGUtZWxlbWVudFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdGFiLW5hdi1iYXIubWF0LWJhY2tncm91bmQtYWNjZW50W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtcmlwcGxlLWVsZW1lbnRbX25nY29udGVudC0lQ09NUCVde2JhY2tncm91bmQtY29sb3I6cmdiYSgyNTUsMjU1LDI1NSwuMTIpfS5tYXQtdGFiLWdyb3VwLm1hdC1iYWNrZ3JvdW5kLXdhcm5bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC10YWItbGFiZWwuY2RrLWtleWJvYXJkLWZvY3VzZWRbX25nY29udGVudC0lQ09NUCVdOm5vdCgubWF0LXRhYi1kaXNhYmxlZCksIC5tYXQtdGFiLWdyb3VwLm1hdC1iYWNrZ3JvdW5kLXdhcm5bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC10YWItbGFiZWwuY2RrLXByb2dyYW0tZm9jdXNlZFtfbmdjb250ZW50LSVDT01QJV06bm90KC5tYXQtdGFiLWRpc2FibGVkKSwgLm1hdC10YWItZ3JvdXAubWF0LWJhY2tncm91bmQtd2Fybltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXRhYi1saW5rLmNkay1rZXlib2FyZC1mb2N1c2VkW19uZ2NvbnRlbnQtJUNPTVAlXTpub3QoLm1hdC10YWItZGlzYWJsZWQpLCAubWF0LXRhYi1ncm91cC5tYXQtYmFja2dyb3VuZC13YXJuW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtdGFiLWxpbmsuY2RrLXByb2dyYW0tZm9jdXNlZFtfbmdjb250ZW50LSVDT01QJV06bm90KC5tYXQtdGFiLWRpc2FibGVkKSwgLm1hdC10YWItbmF2LWJhci5tYXQtYmFja2dyb3VuZC13YXJuW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtdGFiLWxhYmVsLmNkay1rZXlib2FyZC1mb2N1c2VkW19uZ2NvbnRlbnQtJUNPTVAlXTpub3QoLm1hdC10YWItZGlzYWJsZWQpLCAubWF0LXRhYi1uYXYtYmFyLm1hdC1iYWNrZ3JvdW5kLXdhcm5bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC10YWItbGFiZWwuY2RrLXByb2dyYW0tZm9jdXNlZFtfbmdjb250ZW50LSVDT01QJV06bm90KC5tYXQtdGFiLWRpc2FibGVkKSwgLm1hdC10YWItbmF2LWJhci5tYXQtYmFja2dyb3VuZC13YXJuW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtdGFiLWxpbmsuY2RrLWtleWJvYXJkLWZvY3VzZWRbX25nY29udGVudC0lQ09NUCVdOm5vdCgubWF0LXRhYi1kaXNhYmxlZCksIC5tYXQtdGFiLW5hdi1iYXIubWF0LWJhY2tncm91bmQtd2Fybltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXRhYi1saW5rLmNkay1wcm9ncmFtLWZvY3VzZWRbX25nY29udGVudC0lQ09NUCVdOm5vdCgubWF0LXRhYi1kaXNhYmxlZCl7YmFja2dyb3VuZC1jb2xvcjpyZ2JhKDI1NSwyMDUsMjEwLC4zKX0ubWF0LXRhYi1ncm91cC5tYXQtYmFja2dyb3VuZC13YXJuW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtdGFiLWhlYWRlcltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdGFiLWdyb3VwLm1hdC1iYWNrZ3JvdW5kLXdhcm5bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC10YWItbGlua3NbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXRhYi1ncm91cC5tYXQtYmFja2dyb3VuZC13YXJuW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtdGFiLWhlYWRlci1wYWdpbmF0aW9uW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10YWItbmF2LWJhci5tYXQtYmFja2dyb3VuZC13YXJuW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtdGFiLWhlYWRlcltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdGFiLW5hdi1iYXIubWF0LWJhY2tncm91bmQtd2Fybltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXRhYi1saW5rc1tfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdGFiLW5hdi1iYXIubWF0LWJhY2tncm91bmQtd2Fybltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXRhYi1oZWFkZXItcGFnaW5hdGlvbltfbmdjb250ZW50LSVDT01QJV17YmFja2dyb3VuZC1jb2xvcjojZjQ0MzM2fS5tYXQtdGFiLWdyb3VwLm1hdC1iYWNrZ3JvdW5kLXdhcm5bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC10YWItbGFiZWxbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXRhYi1ncm91cC5tYXQtYmFja2dyb3VuZC13YXJuW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtdGFiLWxpbmtbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXRhYi1uYXYtYmFyLm1hdC1iYWNrZ3JvdW5kLXdhcm5bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC10YWItbGFiZWxbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXRhYi1uYXYtYmFyLm1hdC1iYWNrZ3JvdW5kLXdhcm5bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC10YWItbGlua1tfbmdjb250ZW50LSVDT01QJV17Y29sb3I6I2ZmZn0ubWF0LXRhYi1ncm91cC5tYXQtYmFja2dyb3VuZC13YXJuW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtdGFiLWxhYmVsLm1hdC10YWItZGlzYWJsZWRbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXRhYi1ncm91cC5tYXQtYmFja2dyb3VuZC13YXJuW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtdGFiLWxpbmsubWF0LXRhYi1kaXNhYmxlZFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdGFiLW5hdi1iYXIubWF0LWJhY2tncm91bmQtd2Fybltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXRhYi1sYWJlbC5tYXQtdGFiLWRpc2FibGVkW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10YWItbmF2LWJhci5tYXQtYmFja2dyb3VuZC13YXJuW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtdGFiLWxpbmsubWF0LXRhYi1kaXNhYmxlZFtfbmdjb250ZW50LSVDT01QJV17Y29sb3I6cmdiYSgyNTUsMjU1LDI1NSwuNCl9Lm1hdC10YWItZ3JvdXAubWF0LWJhY2tncm91bmQtd2Fybltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXRhYi1oZWFkZXItcGFnaW5hdGlvbi1jaGV2cm9uW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10YWItbmF2LWJhci5tYXQtYmFja2dyb3VuZC13YXJuW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtdGFiLWhlYWRlci1wYWdpbmF0aW9uLWNoZXZyb25bX25nY29udGVudC0lQ09NUCVde2JvcmRlci1jb2xvcjojZmZmfS5tYXQtdGFiLWdyb3VwLm1hdC1iYWNrZ3JvdW5kLXdhcm5bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC10YWItaGVhZGVyLXBhZ2luYXRpb24tZGlzYWJsZWRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC10YWItaGVhZGVyLXBhZ2luYXRpb24tY2hldnJvbltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdGFiLW5hdi1iYXIubWF0LWJhY2tncm91bmQtd2Fybltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXRhYi1oZWFkZXItcGFnaW5hdGlvbi1kaXNhYmxlZFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXRhYi1oZWFkZXItcGFnaW5hdGlvbi1jaGV2cm9uW19uZ2NvbnRlbnQtJUNPTVAlXXtib3JkZXItY29sb3I6cmdiYSgyNTUsMjU1LDI1NSwuNCl9Lm1hdC10YWItZ3JvdXAubWF0LWJhY2tncm91bmQtd2Fybltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXJpcHBsZS1lbGVtZW50W19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10YWItbmF2LWJhci5tYXQtYmFja2dyb3VuZC13YXJuW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtcmlwcGxlLWVsZW1lbnRbX25nY29udGVudC0lQ09NUCVde2JhY2tncm91bmQtY29sb3I6cmdiYSgyNTUsMjU1LDI1NSwuMTIpfS5tYXQtdG9vbGJhcltfbmdjb250ZW50LSVDT01QJV17YmFja2dyb3VuZDojZjVmNWY1O2NvbG9yOiMyMTIxMjF9Lm1hdC10b29sYmFyLm1hdC1wcmltYXJ5W19uZ2NvbnRlbnQtJUNPTVAlXXtiYWNrZ3JvdW5kOiNmNTdjMDA7Y29sb3I6I2ZmZn0ubWF0LXRvb2xiYXIubWF0LWFjY2VudFtfbmdjb250ZW50LSVDT01QJV17YmFja2dyb3VuZDojZmY5ODAwO2NvbG9yOiNmZmZ9Lm1hdC10b29sYmFyLm1hdC13YXJuW19uZ2NvbnRlbnQtJUNPTVAlXXtiYWNrZ3JvdW5kOiNmNDQzMzY7Y29sb3I6I2ZmZn0ubWF0LXRvb2xiYXJbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLXVuZGVybGluZVtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdG9vbGJhcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtcmlwcGxlW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10b29sYmFyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9jdXNlZFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtcmlwcGxlW19uZ2NvbnRlbnQtJUNPTVAlXXtiYWNrZ3JvdW5kLWNvbG9yOmN1cnJlbnRDb2xvcn0ubWF0LXRvb2xiYXJbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10b29sYmFyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9jdXNlZFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXRvb2xiYXJbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1zZWxlY3QtdmFsdWVbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXRvb2xiYXJbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1zZWxlY3QtYXJyb3dbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXRvb2xiYXJbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLm1hdC1mb2N1c2VkW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtc2VsZWN0LWFycm93W19uZ2NvbnRlbnQtJUNPTVAlXXtjb2xvcjppbmhlcml0fS5tYXQtdG9vbGJhcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWlucHV0LWVsZW1lbnRbX25nY29udGVudC0lQ09NUCVde2NhcmV0LWNvbG9yOmN1cnJlbnRDb2xvcn0ubWF0LXRvb2xiYXItbXVsdGlwbGUtcm93c1tfbmdjb250ZW50LSVDT01QJV17bWluLWhlaWdodDo2NHB4fS5tYXQtdG9vbGJhci1yb3dbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXRvb2xiYXItc2luZ2xlLXJvd1tfbmdjb250ZW50LSVDT01QJV17aGVpZ2h0OjY0cHh9QG1lZGlhKG1heC13aWR0aDogNTk5cHgpey5tYXQtdG9vbGJhci1tdWx0aXBsZS1yb3dzW19uZ2NvbnRlbnQtJUNPTVAlXXttaW4taGVpZ2h0OjU2cHh9Lm1hdC10b29sYmFyLXJvd1tfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdG9vbGJhci1zaW5nbGUtcm93W19uZ2NvbnRlbnQtJUNPTVAlXXtoZWlnaHQ6NTZweH19Lm1hdC10b29sdGlwW19uZ2NvbnRlbnQtJUNPTVAlXXtiYWNrZ3JvdW5kOnJnYmEoOTcsOTcsOTcsLjkpfS5tYXQtdHJlZVtfbmdjb250ZW50LSVDT01QJV17YmFja2dyb3VuZDojZmZmfS5tYXQtdHJlZS1ub2RlW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1uZXN0ZWQtdHJlZS1ub2RlW19uZ2NvbnRlbnQtJUNPTVAlXXtjb2xvcjojMjEyMTIxfS5tYXQtdHJlZS1ub2RlW19uZ2NvbnRlbnQtJUNPTVAlXXttaW4taGVpZ2h0OjQ4cHh9Lm1hdC1zbmFjay1iYXItY29udGFpbmVyW19uZ2NvbnRlbnQtJUNPTVAlXXtjb2xvcjpyZ2JhKDI1NSwyNTUsMjU1LC43KTtiYWNrZ3JvdW5kOiMzMjMyMzI7Ym94LXNoYWRvdzowcHggM3B4IDVweCAtMXB4IHJnYmEoMCwgMCwgMCwgMC4yKSwwcHggNnB4IDEwcHggMHB4IHJnYmEoMCwgMCwgMCwgMC4xNCksMHB4IDFweCAxOHB4IDBweCByZ2JhKDAsIDAsIDAsIDAuMTIpfS5tYXQtc2ltcGxlLXNuYWNrYmFyLWFjdGlvbltfbmdjb250ZW50LSVDT01QJV17Y29sb3I6I2ZmOTgwMH1bX25naG9zdC0lQ09NUCVde2JhY2tncm91bmQtY29sb3I6I2ZmZjtib3JkZXI6MXB4IHNvbGlkICNlYmViZWI7ZGlzcGxheTpmbGV4O2ZsZXgtZGlyZWN0aW9uOmNvbHVtbjtoZWlnaHQ6Y2FsYygxMDAlIC0gMnB4KTt3aWR0aDpjYWxjKDEwMCUgLSAycHgpfS5hbm5vdGF0aW9uLXJvd3NbX25nY29udGVudC0lQ09NUCVde2Rpc3BsYXk6ZmxleDtmbGV4LWRpcmVjdGlvbjpjb2x1bW47ZmxleDoxIDE7b3ZlcmZsb3cteTphdXRvfSddLGNoYW5nZURldGVjdGlvbjowfSk7Y2xhc3MgcmJ0e2NvbnN0cnVjdG9yKHQpe3RoaXMuc3RvcmU9dCx0aGlzLmFubm90YXRpb25zRXhwYW5kZWQkPXRoaXMuc3RvcmUucGlwZShsdihWZHQpKSx0aGlzLmFjdGl2ZVJ1bnMkPXRoaXMuc3RvcmUucGlwZShsdihLRCkpLnBpcGUoZnQoKHQ9PnQ/QXJyYXkuZnJvbSh0LmVudHJpZXMoKSkuZmlsdGVyKCh0PT50WzFdKSkubWFwKCh0PT50WzBdKSk6W10pKSksdGhpcy5lbWJlZGRpbmdEYXRhJD10aGlzLnN0b3JlLnBpcGUobHYoemR0KSksdGhpcy5udW1BY3RpdmVSdW5zJD10aGlzLmFjdGl2ZVJ1bnMkLnBpcGUoZnQoKHQ9PnQubGVuZ3RoKSkpLHRoaXMuYWN0aXZlTWV0cmljcyQ9RXQoW3RoaXMuc3RvcmUuc2VsZWN0KEFkdCksdGhpcy5hY3RpdmVSdW5zJCx0aGlzLnN0b3JlLnNlbGVjdChMZHQpXSkucGlwZShmdCgoKFt0LG4sZV0pPT57bGV0IGE9W107Zm9yKGNvbnN0IGUgb2Ygbil0W2VdJiYoYT1hLmNvbmNhdCh0W2VdLmZpbHRlcigodD0+eWd0KHQpKSkpKTtyZXR1cm4gYT1bLi4ubmV3IFNldChbLi4uT2JqZWN0LmtleXMoZSksLi4uYV0pXSxhfSkpKSx0aGlzLnZpc2libGVBbm5vdGF0aW9ucyQ9RXQoW3RoaXMuc3RvcmUuc2VsZWN0KEVkdCksdGhpcy5zdG9yZS5zZWxlY3QoRGR0KSx0aGlzLnN0b3JlLnNlbGVjdChXZHQpXSkucGlwZShmdCgoKFt0LG4sZV0pPT5kcHQodCxuLGUpKSkpLHRoaXMuZmlsdGVyZWRBbm5vdGF0aW9ucyQ9RXQoW3RoaXMudmlzaWJsZUFubm90YXRpb25zJCx0aGlzLnN0b3JlLnNlbGVjdChGZHQpLHRoaXMuc3RvcmUuc2VsZWN0KExkdCksdGhpcy5hY3RpdmVSdW5zJCx0aGlzLmFjdGl2ZU1ldHJpY3MkLHRoaXMuc3RvcmUuc2VsZWN0KElkdCldKS5waXBlKGZ0KCgoW3QsbixlLGEsbyxyXSk9PihmdW5jdGlvbiBpKHQsbixlLGEsbyxyKXtjb25zdCBpPXt9LGM9bmV3IFNldChuKSxzPW5ldyBTZXQoby5tYXAoKHQ9PmtndCh0KSkpKSxsPW5ldyBSZWdFeHAociwiaSIpO3JldHVybiBPYmplY3QuZW50cmllcyh0KS5mb3JFYWNoKCh0PT57aWYoIWwudGVzdCh0WzBdKSlyZXR1cm47bGV0IG49dFsxXTtuPW4uZmlsdGVyKCh0PT5jLmhhcyh0LnJ1bikmJnMuaGFzKHQubWV0cmljKSkpLChmdW5jdGlvbiBvKHQsbixlKXtyZXR1cm4gdC5ldmVyeSgodD0+e2lmKHQua2luZD09PXhkdC5PUEVSQVRPUilyZXR1cm4hMDtjb25zdCBhPW5bdC5tZXRyaWNdO3JldHVybiB2b2lkIDA9PT1hfHxlLnNvbWUoKG49Pm4ubWV0cmljPT09a2d0KHQubWV0cmljKSYmKG51bGw9PT1uLm5QTUlWYWx1ZT9hLmluY2x1ZGVOYU46bi5uUE1JVmFsdWU8PWEubWF4JiZuLm5QTUlWYWx1ZT49YS5taW4pKSl9KSl9KShlLGEsbikmJjAhPT1uLmxlbmd0aCYmKGlbdFswXV09bil9KSksaX0pKHQsYSxuLGUsbyxyKSkpKS5waXBlKGVlKCkpLHRoaXMubnVtQW5ub3RhdGlvbnMkPXRoaXMuZmlsdGVyZWRBbm5vdGF0aW9ucyQucGlwZShmdCgodD0+T2JqZWN0LmtleXModCkubGVuZ3RoKSkpLHRoaXMuc29ydGVkQW5ub3RhdGlvbnMkPUV0KFt0aGlzLmZpbHRlcmVkQW5ub3RhdGlvbnMkLHRoaXMuc3RvcmUucGlwZShsdihIZHQpKSx0aGlzLmVtYmVkZGluZ0RhdGEkXSkucGlwZShmdCgoKFt0LG4sZV0pPT4oZnVuY3Rpb24gYSh0LG4sZSl7Y29uc3QgYT1PYmplY3Qua2V5cyh0KSxvPW4ub3JkZXI9PT1rZHQuRElTU0lNSUxBUnx8bi5vcmRlcj09PWtkdC5TSU1JTEFSO3JldHVybiIiPT09bi5tZXRyaWN8fCh2b2lkIDA9PT1lfHx2b2lkIDA9PT1lLnBvaW50c1tuLm1ldHJpY10pJiZvP2E6KGZ1bmN0aW9uIGModCxuLGUpe3JldHVybiB0LnNvcnQoZT8odCxlKT0+blt0XS1uW2VdOih0LGUpPT5uW2VdLW5bdF0pfSkoYSxvPyhmdW5jdGlvbiByKHQsbixlKXtjb25zdCBhPXt9O2xldCBvPU51bWJlci5QT1NJVElWRV9JTkZJTklUWSxyPU51bWJlci5ORUdBVElWRV9JTkZJTklUWTtlLm9yZGVyPT09a2R0LlNJTUlMQVImJihvPU51bWJlci5ORUdBVElWRV9JTkZJTklUWSxyPU51bWJlci5QT1NJVElWRV9JTkZJTklUWSk7Zm9yKGNvbnN0IGkgb2YgdClhW2ldPWk9PT1lLm1ldHJpYz9vOnZvaWQgMD09PW4ucG9pbnRzW2ldP3I6bi5wb2ludHNbaV0udmVjdG9yP0NwdChuLnBvaW50c1tlLm1ldHJpY10udmVjdG9yLG4ucG9pbnRzW2ldLnZlY3RvcixyKTpyO3JldHVybiBhfSkoYSxlLG4pOihmdW5jdGlvbiBpKHQsbixlKXtjb25zdCBhPWtndChlLm1ldHJpYyksbz17fTtpZihlLm9yZGVyPT09a2R0LkRFU0NFTkRJTkcpZm9yKGNvbnN0IGUgb2YgdClvW2VdPU1hdGgubWF4KC4uLm5bZV0uZmlsdGVyKCh0PT50Lm1ldHJpYz09PWEpKS5tYXAoKHQ9Pm51bGw9PT10Lm5QTUlWYWx1ZT8tMS8wOnQublBNSVZhbHVlKSkpO2Vsc2UgZm9yKGNvbnN0IGUgb2YgdClvW2VdPU1hdGgubWluKC4uLm5bZV0uZmlsdGVyKCh0PT50Lm1ldHJpYz09PWEpKS5tYXAoKHQ9Pm51bGw9PT10Lm5QTUlWYWx1ZT8xLzA6dC5uUE1JVmFsdWUpKSk7cmV0dXJuIG99KShhLHQsbiksbi5vcmRlcj09PWtkdC5BU0NFTkROR3x8bi5vcmRlcj09PWtkdC5TSU1JTEFSKX0pKHQsbixlKSkpKSx0aGlzLnNlbGVjdGVkQW5ub3RhdGlvbnMkPXRoaXMuc3RvcmUucGlwZShsdihSZHQpKSx0aGlzLm1heENvdW50JD10aGlzLmZpbHRlcmVkQW5ub3RhdGlvbnMkLnBpcGUoZnQoKHQ9PntsZXQgbj0wO3JldHVybiBPYmplY3QudmFsdWVzKHQpLmZvckVhY2goKHQ9Pnt0LmZvckVhY2goKHQ9Pnt0LmNvdW50VmFsdWUmJihuPU1hdGgubWF4KG4sdC5jb3VudFZhbHVlKSl9KSl9KSksbn0pKSl9cm93Q2xpY2tlZCh0KXt0aGlzLnN0b3JlLmRpc3BhdGNoKHRndCh7YW5ub3RhdGlvbnM6dH0pKX19cmJ0Lsm1ZmFjPWZ1bmN0aW9uIHQobil7cmV0dXJuIG5ldyhufHxyYnQpKFpnKGN2KSl9LHJidC7JtWNtcD1fbyh7dHlwZTpyYnQsc2VsZWN0b3JzOltbIm5wbWktYW5ub3RhdGlvbnMtbGlzdCJdXSxkZWNsczoxMCx2YXJzOjI3LGNvbnN0czpbWzMsImFubm90YXRpb25zIiwiZW1iZWRkaW5nRGF0YSIsImFubm90YXRpb25zRXhwYW5kZWQiLCJudW1Bbm5vdGF0aW9ucyIsImFjdGl2ZU1ldHJpY3MiLCJudW1BY3RpdmVSdW5zIiwic29ydGVkQW5ub3RhdGlvbnMiLCJzZWxlY3RlZEFubm90YXRpb25zIiwibWF4Q291bnQiLCJvblJvd0NsaWNrIl1dLHRlbXBsYXRlOmZ1bmN0aW9uIHQobixlKXsxJm4mJihLZygwLCJhbm5vdGF0aW9ucy1saXN0LWNvbXBvbmVudCIsMCksY3AoIm9uUm93Q2xpY2siLChmdW5jdGlvbiB0KG4pe3JldHVybiBlLnJvd0NsaWNrZWQobil9KSkseWYoMSwiYXN5bmMiKSx5ZigyLCJhc3luYyIpLHlmKDMsImFzeW5jIikseWYoNCwiYXN5bmMiKSx5Zig1LCJhc3luYyIpLHlmKDYsImFzeW5jIikseWYoNywiYXN5bmMiKSx5Zig4LCJhc3luYyIpLHlmKDksImFzeW5jIiksJGcoKSksMiZuJiZKZygiYW5ub3RhdGlvbnMiLGtmKDEsOSxlLmZpbHRlcmVkQW5ub3RhdGlvbnMkKSkoImVtYmVkZGluZ0RhdGEiLGtmKDIsMTEsZS5lbWJlZGRpbmdEYXRhJCkpKCJhbm5vdGF0aW9uc0V4cGFuZGVkIixrZigzLDEzLGUuYW5ub3RhdGlvbnNFeHBhbmRlZCQpKSgibnVtQW5ub3RhdGlvbnMiLGtmKDQsMTUsZS5udW1Bbm5vdGF0aW9ucyQpKSgiYWN0aXZlTWV0cmljcyIsa2YoNSwxNyxlLmFjdGl2ZU1ldHJpY3MkKSkoIm51bUFjdGl2ZVJ1bnMiLGtmKDYsMTksZS5udW1BY3RpdmVSdW5zJCkpKCJzb3J0ZWRBbm5vdGF0aW9ucyIsa2YoNywyMSxlLnNvcnRlZEFubm90YXRpb25zJCkpKCJzZWxlY3RlZEFubm90YXRpb25zIixrZig4LDIzLGUuc2VsZWN0ZWRBbm5vdGF0aW9ucyQpKSgibWF4Q291bnQiLGtmKDksMjUsZS5tYXhDb3VudCQpKX0sZGlyZWN0aXZlczpbb2J0XSxwaXBlczpbb09dLGVuY2Fwc3VsYXRpb246MixjaGFuZ2VEZXRlY3Rpb246MH0pO2NvbnN0IGlidD1bImNoYXJ0Il07Y2xhc3MgY2J0e2NvbnN0cnVjdG9yKCl7dGhpcy53aWR0aD0wLHRoaXMuY2hhcnRXaWR0aD0wLHRoaXMuaGVpZ2h0PTMwMCx0aGlzLm1hcmdpbj17dG9wOjIwLHJpZ2h0OjQwLGJvdHRvbToyMCxsZWZ0OjQwfSx0aGlzLmNoYXJ0SGVpZ2h0PXRoaXMuaGVpZ2h0LXRoaXMubWFyZ2luLnRvcC10aGlzLm1hcmdpbi5ib3R0b219b25SZXNpemUodCl7dGhpcy5yZWRyYXcoKX1uZ0FmdGVyVmlld0luaXQoKXt0aGlzLnN2Zz1qMSh0aGlzLnN2Z0VsZW1lbnQubmF0aXZlRWxlbWVudCksdGhpcy5tYWluQ29udGFpbmVyPXRoaXMuc3ZnLmFwcGVuZCgiZyIpLmF0dHIoInRyYW5zZm9ybSIsYHRyYW5zbGF0ZSgke3RoaXMubWFyZ2luLmxlZnR9LCAke3RoaXMubWFyZ2luLnRvcH0pYCksdGhpcy5jb29yZGluYXRlc0dyb3VwPXRoaXMubWFpbkNvbnRhaW5lci5hcHBlbmQoImciKSx0aGlzLmxhYmVsc0dyb3VwPXRoaXMubWFpbkNvbnRhaW5lci5hcHBlbmQoImciKSx0aGlzLmF4aXNHcm91cD10aGlzLm1haW5Db250YWluZXIuYXBwZW5kKCJnIiksdGhpcy54U2NhbGU9cDYoKS5wYWRkaW5nKC4xKSx0aGlzLnlTY2FsZT1rNigpLnJhbmdlKFt0aGlzLmNoYXJ0SGVpZ2h0LDBdKSx0aGlzLnlBeGlzPShmdW5jdGlvbiB0KG4pe3JldHVybiB2MCgyLG4pfSkodGhpcy55U2NhbGUpLHRoaXMucmVkcmF3KCl9bmdPbkNoYW5nZXModCl7dGhpcy5zdmcmJnRoaXMucmVkcmF3KCl9cmVkcmF3KCl7dGhpcy51cGRhdGVEaW1lbnNpb25zKCksdGhpcy51cGRhdGVBeGVzKCksdGhpcy5kcmF3KCl9dXBkYXRlRGltZW5zaW9ucygpe3RoaXMud2lkdGg9dGhpcy5zdmdFbGVtZW50Lm5hdGl2ZUVsZW1lbnQuY2xpZW50V2lkdGh8fDEwLHRoaXMuY2hhcnRXaWR0aD10aGlzLndpZHRoLXRoaXMubWFyZ2luLmxlZnQtdGhpcy5tYXJnaW4ucmlnaHR9dXBkYXRlQXhlcygpe3RoaXMueFNjYWxlLnJhbmdlUm91bmQoWzAsdGhpcy5jaGFydFdpZHRoXSkuZG9tYWluKHRoaXMuYWN0aXZlTWV0cmljcyksdGhpcy55U2NhbGUuZG9tYWluKFt0aGlzLmNvb3JkaW5hdGVEYXRhLmV4dHJlbWVzLm1pbix0aGlzLmNvb3JkaW5hdGVEYXRhLmV4dHJlbWVzLm1heF0pfWRyYXcoKXt0aGlzLmRyYXdBeGVzKCksdGhpcy5kcmF3QXhpc0xhYmVscygpLHRoaXMuZHJhd0Nvb3JkaW5hdGVzKCksdGhpcy5kcmF3TGFiZWxzKCl9ZHJhd0F4ZXMoKXtjb25zdCB0PXRoaXMuYXhpc0dyb3VwLnNlbGVjdEFsbCgiLmF4aXMteSIpLmRhdGEodGhpcy5hY3RpdmVNZXRyaWNzKTt0LmVudGVyKCkuYXBwZW5kKCJnIikuYXR0cigiY2xhc3MiLCJheGlzLXkiKS5tZXJnZSh0KS5hdHRyKCJ0cmFuc2Zvcm0iLGZ1bmN0aW9uKHQpe3JldHVybmB0cmFuc2xhdGUoJHt0aGlzLnhTY2FsZSh0KX0sIDApYH0uYmluZCh0aGlzKSkuY2FsbCh0aGlzLnlBeGlzKSx0LmV4aXQoKS5yZW1vdmUoKX1kcmF3QXhpc0xhYmVscygpe2NvbnN0IHQ9dGhpcy5heGlzR3JvdXAuc2VsZWN0QWxsKCIuYXhpcy1iZy10ZXh0IikuZGF0YSh0aGlzLmFjdGl2ZU1ldHJpY3MpO3QuZW50ZXIoKS5hcHBlbmQoInRleHQiKS5hdHRyKCJjbGFzcyIsImF4aXMtYmctdGV4dCIpLmF0dHIoImZvbnQtc2l6ZSIsIjEzcHgiKS5hdHRyKCJzdHJva2Utd2lkdGgiLDIpLmF0dHIoInN0cm9rZS1saW5lam9pbiIsInJvdW5kIikuYXR0cigic3Ryb2tlIiwid2hpdGUiKS5tZXJnZSh0KS50ZXh0KCh0PT50KSkuYXR0cigidHJhbnNmb3JtIixmdW5jdGlvbih0KXtyZXR1cm5gdHJhbnNsYXRlKCR7dGhpcy54U2NhbGUodCktNX0sICR7dGhpcy55U2NhbGUodGhpcy5jb29yZGluYXRlRGF0YS5leHRyZW1lcy5taW4pfSkgcm90YXRlKC05MClgfS5iaW5kKHRoaXMpKSx0LmV4aXQoKS5yZW1vdmUoKTtjb25zdCBuPXRoaXMuYXhpc0dyb3VwLnNlbGVjdEFsbCgiLmF4aXMtdGV4dCIpLmRhdGEodGhpcy5hY3RpdmVNZXRyaWNzKTtuLmVudGVyKCkuYXBwZW5kKCJ0ZXh0IikuYXR0cigiZm9udC1zaXplIiwiMTNweCIpLmF0dHIoImNsYXNzIiwiYXhpcy10ZXh0IikubWVyZ2UobikudGV4dCgodD0+dCkpLmF0dHIoInRyYW5zZm9ybSIsZnVuY3Rpb24odCl7cmV0dXJuYHRyYW5zbGF0ZSgke3RoaXMueFNjYWxlKHQpLTV9LCAke3RoaXMueVNjYWxlKHRoaXMuY29vcmRpbmF0ZURhdGEuZXh0cmVtZXMubWluKX0pIHJvdGF0ZSgtOTApYH0uYmluZCh0aGlzKSksbi5leGl0KCkucmVtb3ZlKCl9ZHJhd0Nvb3JkaW5hdGVzKCl7Y29uc3QgdD10aGlzLmNvb3JkaW5hdGVzR3JvdXAuc2VsZWN0QWxsKCIuY29vcmQiKS5kYXRhKHRoaXMuY29vcmRpbmF0ZURhdGEuY29vcmRpbmF0ZXMpO3QuZW50ZXIoKS5hcHBlbmQoInBhdGgiKS5hdHRyKCJjbGFzcyIsImNvb3JkIikuYXR0cigiZmlsbCIsIm5vbmUiKS5tZXJnZSh0KS5hdHRyKCJkIix0aGlzLnBhdGguYmluZCh0aGlzKSkuYXR0cigic3Ryb2tlIixmdW5jdGlvbih0KXtyZXR1cm4gdGhpcy5jb2xvclNjYWxlKHQucnVuSWQpfS5iaW5kKHRoaXMpKSx0LmV4aXQoKS5yZW1vdmUoKTtjb25zdCBuPXRoaXMuY29vcmRpbmF0ZXNHcm91cC5zZWxlY3RBbGwoIi5oaWRkZW5Db29yZCIpLmRhdGEodGhpcy5jb29yZGluYXRlRGF0YS5jb29yZGluYXRlcyk7bi5lbnRlcigpLmFwcGVuZCgicGF0aCIpLmF0dHIoImNsYXNzIiwiaGlkZGVuQ29vcmQiKS5hdHRyKCJzdHJva2Utd2lkdGgiLCIxMHB4IikuYXR0cigiZmlsbCIsIm5vbmUiKS5hdHRyKCJzdHJva2UiLCJyZ2JhKDAsIDAsIDAsIDAuMCkiKS5vbigibW91c2VvdmVyIix0aGlzLmhhbmRsZUNvb3JkaW5hdGVNb3VzZU92ZXIuYmluZCh0aGlzKSkub24oIm1vdXNlb3V0Iix0aGlzLmhhbmRsZUNvb3JkaW5hdGVNb3VzZU91dC5iaW5kKHRoaXMpKS5tZXJnZShuKS5hdHRyKCJkIix0aGlzLnBhdGguYmluZCh0aGlzKSksbi5leGl0KCkucmVtb3ZlKCl9cGF0aCh0KXtyZXR1cm4gdC52YWx1ZXMuc29ydCgoKHQsbik9PnRoaXMuYWN0aXZlTWV0cmljcy5pbmRleE9mKHQubWV0cmljKS10aGlzLmFjdGl2ZU1ldHJpY3MuaW5kZXhPZihuLm1ldHJpYykpKSxMOCgpKHQudmFsdWVzLm1hcChmdW5jdGlvbih0KXtsZXQgbj10aGlzLnlTY2FsZSh0Lm5QTUlWYWx1ZSk7cmV0dXJuW3RoaXMueFNjYWxlKHQubWV0cmljKSxuXX0uYmluZCh0aGlzKSkpfWhhbmRsZUNvb3JkaW5hdGVNb3VzZU92ZXIodCxuKXt0aGlzLmxhYmVsc0dyb3VwLnNlbGVjdEFsbCgiLmNvb3JkaW5hdGUtbGFiZWwiKS5maWx0ZXIoKGZ1bmN0aW9uKG4pe3JldHVybiEobi5hbm5vdGF0aW9uPT09dC5hbm5vdGF0aW9uKX0pKS5zdHlsZSgib3BhY2l0eSIsLjEpLHRoaXMuY29vcmRpbmF0ZXNHcm91cC5zZWxlY3RBbGwoIi5jb29yZCIpLmZpbHRlcigoZnVuY3Rpb24obil7cmV0dXJuIShuLmFubm90YXRpb249PT10LmFubm90YXRpb24pfSkpLnN0eWxlKCJvcGFjaXR5IiwuMSl9aGFuZGxlQ29vcmRpbmF0ZU1vdXNlT3V0KCl7dGhpcy5sYWJlbHNHcm91cC5zZWxlY3RBbGwoIi5jb29yZGluYXRlLWxhYmVsIikuc3R5bGUoIm9wYWNpdHkiLDEpLHRoaXMuY29vcmRpbmF0ZXNHcm91cC5zZWxlY3RBbGwoIi5jb29yZCIpLnN0eWxlKCJvcGFjaXR5IiwxKX1kcmF3TGFiZWxzKCl7Y29uc3QgdD0zMC90aGlzLnhTY2FsZS5zdGVwKCksbj10aGlzLmNvb3JkaW5hdGVEYXRhLmNvb3JkaW5hdGVzLmxlbmd0aDwzMD90aGlzLmNvb3JkaW5hdGVEYXRhLmNvb3JkaW5hdGVzOltdLGU9dGhpcy5sYWJlbHNHcm91cC5zZWxlY3RBbGwoIi5jb29yZGluYXRlLWxhYmVsIikuZGF0YShuKTtlLmVudGVyKCkuYXBwZW5kKCJ0ZXh0IikuYXR0cigiY2xhc3MiLCJjb29yZGluYXRlLWxhYmVsIikuYXR0cigiZm9udC1zaXplIiwiMTBweCIpLm1lcmdlKGUpLnRleHQoKGZ1bmN0aW9uKHQpe3JldHVybiB0LmFubm90YXRpb259KSkuYXR0cigieCIsdGhpcy54U2NhbGUodGhpcy5hY3RpdmVNZXRyaWNzWzBdKSszMCkuYXR0cigieSIsZnVuY3Rpb24obil7Y29uc3QgZT10aGlzLnlTY2FsZShuLnZhbHVlc1swXS5uUE1JVmFsdWU/bi52YWx1ZXNbMF0ublBNSVZhbHVlOjApLGE9dGhpcy55U2NhbGUobi52YWx1ZXNbMV0ublBNSVZhbHVlP24udmFsdWVzWzFdLm5QTUlWYWx1ZTowKTtyZXR1cm4oMS10KSplK3QqYX0uYmluZCh0aGlzKSksZS5leGl0KCkucmVtb3ZlKCl9fWNidC7JtWZhYz1mdW5jdGlvbiB0KG4pe3JldHVybiBuZXcobnx8Y2J0KX0sY2J0Lsm1Y21wPV9vKHt0eXBlOmNidCxzZWxlY3RvcnM6W1sicGFyYWxsZWwtY29vcmRpbmF0ZXMtY29tcG9uZW50Il1dLHZpZXdRdWVyeTpmdW5jdGlvbiB0KG4sZSl7dmFyIGE7MSZuJiZqZihpYnQsITAseHUpLDImbiYmVmYoYT1aZigpKSYmKGUuc3ZnRWxlbWVudD1hLmZpcnN0KX0saG9zdEJpbmRpbmdzOmZ1bmN0aW9uIHQobixlKXsxJm4mJmNwKCJyZXNpemUiLChmdW5jdGlvbiB0KG4pe3JldHVybiBlLm9uUmVzaXplKG4pfSksITEsZXIpfSxpbnB1dHM6e2FjdGl2ZU1ldHJpY3M6ImFjdGl2ZU1ldHJpY3MiLGNvb3JkaW5hdGVEYXRhOiJjb29yZGluYXRlRGF0YSIsc2lkZWJhcldpZHRoOiJzaWRlYmFyV2lkdGgiLGNvbG9yU2NhbGU6ImNvbG9yU2NhbGUifSxmZWF0dXJlczpbcHJdLGRlY2xzOjIsdmFyczowLGNvbnN0czpbWzEsInBjLWNoYXJ0Il0sWyJjaGFydCIsIiJdXSx0ZW1wbGF0ZTpmdW5jdGlvbiB0KG4sZSl7MSZuJiYodWkoKSx0cCgwLCJzdmciLDAsMSkpfSxzdHlsZXM6WyIucGMtY2hhcnRbX25nY29udGVudC0lQ09NUCVde2hlaWdodDozMDBweDt3aWR0aDoxMDAlfSJdLGNoYW5nZURldGVjdGlvbjowfSk7Y2xhc3Mgc2J0e2NvbnN0cnVjdG9yKHQpe3RoaXMuc3RvcmU9dCx0aGlzLmFjdGl2ZVJ1bnMkPXRoaXMuc3RvcmUucGlwZShsdihLRCkpLnBpcGUoZnQoKHQ9PnQ/QXJyYXkuZnJvbSh0LmVudHJpZXMoKSkuZmlsdGVyKCh0PT50WzFdKSkubWFwKCh0PT50WzBdKSk6W10pKSksdGhpcy5hY3RpdmVNZXRyaWNzJD1FdCh0aGlzLnN0b3JlLnNlbGVjdChBZHQpLHRoaXMuYWN0aXZlUnVucyQsdGhpcy5zdG9yZS5zZWxlY3QoTGR0KSkucGlwZShmdCgoKFt0LG4sZV0pPT57bGV0IGE9W107Zm9yKGNvbnN0IGUgb2Ygbil0W2VdJiYoYT1hLmNvbmNhdCh0W2VdLmZpbHRlcigodD0+eWd0KHQpKSkpKTtyZXR1cm4gYT1bLi4ubmV3IFNldChbLi4uT2JqZWN0LmtleXMoZSksLi4uYV0pXSxhLm1hcCgodD0+a2d0KHQpKSl9KSkpLHRoaXMuY29vcmRpbmF0ZURhdGEkPUV0KFt0aGlzLnN0b3JlLnNlbGVjdChFZHQpLHRoaXMuc3RvcmUuc2VsZWN0KFJkdCksdGhpcy5hY3RpdmVSdW5zJCx0aGlzLmFjdGl2ZU1ldHJpY3MkXSkucGlwZShmdCgoKFt0LG4sZSxhXSk9PihmdW5jdGlvbiBvKHQsbixlLGEpe2NvbnN0IG89W10scj17bWF4Oi0xLG1pbjoxfSxpPW5ldyBTZXQoZSksYz1uZXcgU2V0KGEpO3JldHVybiAwPT09aS5zaXplfHwwPT09Yy5zaXplfHwwPT09T2JqZWN0LmtleXModCkubGVuZ3RoP3tjb29yZGluYXRlczpbXSxleHRyZW1lczp7bWluOi0xLG1heDoxfX06KG4uZm9yRWFjaCgobj0+e2NvbnN0IGU9e307dFtuXS5mb3JFYWNoKCh0PT57aS5oYXModC5ydW4pJiZjLmhhcyh0Lm1ldHJpYykmJihlW3QucnVuXT9lW3QucnVuXS5wdXNoKHQpOmVbdC5ydW5dPVt0XSxudWxsIT09dC5uUE1JVmFsdWU/KHIubWF4PU1hdGgubWF4KHIubWF4LHQublBNSVZhbHVlKSxyLm1pbj1NYXRoLm1pbihyLm1pbix0Lm5QTUlWYWx1ZSkpOihyLm1heD1NYXRoLm1heChyLm1heCwwKSxyLm1pbj1NYXRoLm1pbihyLm1pbiwwKSkpfSkpO2Zvcihjb25zdCB0IG9mIE9iamVjdC5rZXlzKGUpKW8ucHVzaCh7YW5ub3RhdGlvbjpuLHJ1bklkOnQsdmFsdWVzOmVbdF19KX0pKSxyLm1heDxyLm1pbiYmKHIubWF4PTEsci5taW49LTEpLHtjb29yZGluYXRlczpvLGV4dHJlbWVzOnJ9KX0pKHQsbixlLGEpKSkpLHRoaXMuc2lkZWJhcldpZHRoJD10aGlzLnN0b3JlLnNlbGVjdChZZHQpLHRoaXMucnVuQ29sb3JTY2FsZSQ9dGhpcy5zdG9yZS5zZWxlY3QoR0QpLnBpcGUoZnQoKHQ9Pm49PntpZighdC5oYXNPd25Qcm9wZXJ0eShuKSl0aHJvdyBuZXcgRXJyb3IoYFtDb2xvciBzY2FsZV0gdW5rbm93biBydW5JZDogJHtufS5gKTtyZXR1cm4gdFtuXX0pKSl9fWZ1bmN0aW9uIGxidCh0LG4pezEmdCYmdHAoMCwibWF0LWljb24iLDExKX1mdW5jdGlvbiBtYnQodCxuKXsxJnQmJnRwKDAsIm1hdC1pY29uIiwxMil9ZnVuY3Rpb24gZGJ0KHQsbil7MSZ0JiZ0cCgwLCJucG1pLXBhcmFsbGVsLWNvb3JkaW5hdGVzIil9c2J0Lsm1ZmFjPWZ1bmN0aW9uIHQobil7cmV0dXJuIG5ldyhufHxzYnQpKFpnKGN2KSl9LHNidC7JtWNtcD1fbyh7dHlwZTpzYnQsc2VsZWN0b3JzOltbIm5wbWktcGFyYWxsZWwtY29vcmRpbmF0ZXMiXV0sZGVjbHM6NSx2YXJzOjEyLGNvbnN0czpbWzMsImFjdGl2ZU1ldHJpY3MiLCJjb29yZGluYXRlRGF0YSIsInNpZGViYXJXaWR0aCIsImNvbG9yU2NhbGUiXV0sdGVtcGxhdGU6ZnVuY3Rpb24gdChuLGUpezEmbiYmKHRwKDAsInBhcmFsbGVsLWNvb3JkaW5hdGVzLWNvbXBvbmVudCIsMCkseWYoMSwiYXN5bmMiKSx5ZigyLCJhc3luYyIpLHlmKDMsImFzeW5jIikseWYoNCwiYXN5bmMiKSksMiZuJiZKZygiYWN0aXZlTWV0cmljcyIsa2YoMSw0LGUuYWN0aXZlTWV0cmljcyQpKSgiY29vcmRpbmF0ZURhdGEiLGtmKDIsNixlLmNvb3JkaW5hdGVEYXRhJCkpKCJzaWRlYmFyV2lkdGgiLGtmKDMsOCxlLnNpZGViYXJXaWR0aCQpKSgiY29sb3JTY2FsZSIsa2YoNCwxMCxlLnJ1bkNvbG9yU2NhbGUkKSl9LGRpcmVjdGl2ZXM6W2NidF0scGlwZXM6W29PXSxlbmNhcHN1bGF0aW9uOjIsY2hhbmdlRGV0ZWN0aW9uOjB9KTtjbGFzcyBnYnR7Y29uc3RydWN0b3IoKXt0aGlzLm9uQ2xlYXJTZWxlY3RlZEFubm90YXRpb25zPW5ldyBFZix0aGlzLm9uVG9nZ2xlRXhwYW5kZWQ9bmV3IEVmfX1nYnQuybVmYWM9ZnVuY3Rpb24gdChuKXtyZXR1cm4gbmV3KG58fGdidCl9LGdidC7JtWNtcD1fbyh7dHlwZTpnYnQsc2VsZWN0b3JzOltbInNlbGVjdGVkLWFubm90YXRpb25zLWNvbXBvbmVudCJdXSxpbnB1dHM6e3BjRXhwYW5kZWQ6InBjRXhwYW5kZWQiLHNlbGVjdGVkQW5ub3RhdGlvbnM6InNlbGVjdGVkQW5ub3RhdGlvbnMifSxvdXRwdXRzOntvbkNsZWFyU2VsZWN0ZWRBbm5vdGF0aW9uczoib25DbGVhclNlbGVjdGVkQW5ub3RhdGlvbnMiLG9uVG9nZ2xlRXhwYW5kZWQ6Im9uVG9nZ2xlRXhwYW5kZWQifSxkZWNsczoxMyx2YXJzOjQsY29uc3RzOmZ1bmN0aW9uKCl7cmV0dXJuW1sxLCJwYy1jb250YWluZXIiXSxbMSwicGMtdG9vbGJhciJdLFsxLCJwYy10aXRsZSJdLFsibWF0LWljb24tYnV0dG9uIiwiIiwidGl0bGUiLCJEZXNlbGVjdHMgYWxsIHNlbGVjdGVkIGFubm90YXRpb25zLiIsMSwiY2xlYXItYnV0dG9uIiwzLCJkaXNhYmxlZCIsImNsaWNrIiw2LCJhcmlhLWxhYmVsIl0sWyJhcmlhLWxhYmVsIiwidW5kZWZpbmVkIiE9dHlwZW9mIG5nSTE4bkNsb3N1cmVNb2RlJiZuZ0kxOG5DbG9zdXJlTW9kZT9nb29nLmdldE1zZygiQ2xlYXIgQW5ub3RhdGlvbiBTZWxlY3Rpb24iKTokbG9jYWxpemVgOkxhYmVsIGZvciBhIGJ1dHRvbiB0aGF0IGNsZWFycyB0aGUgYW5ub3RhdGlvbiBzZWxlY3Rpb24u4pCfMmI1MjI4OWYyYzRiN2Y1YjE4MmVkMjNjOTE1NDcyMmVjZDQ2YTJkNOKQnzI0OTQ2NjA1MjAzNDEzMDg4MzA6Q2xlYXIgQW5ub3RhdGlvbiBTZWxlY3Rpb25gXSxbInN2Z0ljb24iLCJjbGVhcl8yNHB4Il0sWyJtYXQtaWNvbi1idXR0b24iLCIiLDEsImV4cGFuZC1idXR0b24iLDMsImNsaWNrIiw2LCJhcmlhLWxhYmVsIl0sWyJhcmlhLWxhYmVsIiwidW5kZWZpbmVkIiE9dHlwZW9mIG5nSTE4bkNsb3N1cmVNb2RlJiZuZ0kxOG5DbG9zdXJlTW9kZT9nb29nLmdldE1zZygiRXhwYW5kL0hpZGUgU2VsZWN0ZWQgQW5ub3RhdGlvbnMiKTokbG9jYWxpemVgOkxhYmVsIGZvciBhIGJ1dHRvbiB0aGF0IGV4cGFuZHMgb3IgaGlkZXMgc2VsZWN0ZWQgYW5ub3RhdGlvbnMu4pCfOGY0YWQzMDVjMTllMzY1NWYzMTg5ZTNlMjY0ZTgzZmI3NmY3YmI5NeKQnzU2NzA3OTc3ODQwNzA5NTIwOTU6RXhwYW5kL0hpZGUgU2VsZWN0ZWQgQW5ub3RhdGlvbnNgXSxbInN2Z0ljb24iLCJleHBhbmRfbGVzc18yNHB4IiwiY2xhc3MiLCJleHBhbmQtbGVzcy1pY29uIiw0LCJuZ0lmIiwibmdJZkVsc2UiXSxbIm5vdEV4cGFuZGVkIiwiIl0sWzQsIm5nSWYiXSxbInN2Z0ljb24iLCJleHBhbmRfbGVzc18yNHB4IiwxLCJleHBhbmQtbGVzcy1pY29uIl0sWyJzdmdJY29uIiwiZXhwYW5kX21vcmVfMjRweCIsMSwiZXhwYW5kLWljb24iXV19LHRlbXBsYXRlOmZ1bmN0aW9uIHQobixlKXtpZigxJm4mJihLZygwLCJkaXYiLDApLEtnKDEsImRpdiIsMSksS2coMiwiaDMiLDIpLEpwKDMsIlNlbGVjdGVkIEFubm90YXRpb25zIiksJGcoKSxLZyg0LCJidXR0b24iLDMpLGx1KDUsNCksY3AoImNsaWNrIiwoZnVuY3Rpb24gdCgpe3JldHVybiBlLm9uQ2xlYXJTZWxlY3RlZEFubm90YXRpb25zLmVtaXQoKX0pKSx0cCg2LCJtYXQtaWNvbiIsNSksJGcoKSxLZyg3LCJidXR0b24iLDYpLGx1KDgsNyksY3AoImNsaWNrIiwoZnVuY3Rpb24gdCgpe3JldHVybiBlLm9uVG9nZ2xlRXhwYW5kZWQuZW1pdCgpfSkpLFlnKDksbGJ0LDEsMCwibWF0LWljb24iLDgpLFlnKDEwLG1idCwxLDAsIm5nLXRlbXBsYXRlIixudWxsLDksS2YpLCRnKCksJGcoKSxZZygxMixkYnQsMSwwLCJucG1pLXBhcmFsbGVsLWNvb3JkaW5hdGVzIiwxMCksJGcoKSksMiZuKXtjb25zdCB0PXFnKDExKTt3cyg0KSxKZygiZGlzYWJsZWQiLDA9PT1lLnNlbGVjdGVkQW5ub3RhdGlvbnMubGVuZ3RoKSx3cyg1KSxKZygibmdJZiIsZS5wY0V4cGFuZGVkKSgibmdJZkVsc2UiLHQpLHdzKDMpLEpnKCJuZ0lmIixlLnBjRXhwYW5kZWQpfX0sZGlyZWN0aXZlczpbZUEsQkIsV00sc2J0XSxzdHlsZXM6WycubWF0LWJhZGdlLWNvbnRlbnRbX25nY29udGVudC0lQ09NUCVde2ZvbnQtd2VpZ2h0OjYwMDtmb250LXNpemU6MTJweDtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWZ9Lm1hdC1iYWRnZS1zbWFsbFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWJhZGdlLWNvbnRlbnRbX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZTo5cHh9Lm1hdC1iYWRnZS1sYXJnZVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWJhZGdlLWNvbnRlbnRbX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToyNHB4fS5tYXQtaDFbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWhlYWRsaW5lW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10eXBvZ3JhcGh5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIGgxW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250OjQwMCAyNHB4LzMycHggUm9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2xldHRlci1zcGFjaW5nOm5vcm1hbDttYXJnaW46MCAwIDE2cHh9Lm1hdC1oMltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdGl0bGVbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXR5cG9ncmFwaHlbX25nY29udGVudC0lQ09NUCVdICAgaDJbX25nY29udGVudC0lQ09NUCVde2ZvbnQ6NTAwIDIwcHgvMzJweCBSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7bGV0dGVyLXNwYWNpbmc6bm9ybWFsO21hcmdpbjowIDAgMTZweH0ubWF0LWgzW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1zdWJoZWFkaW5nLTJbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXR5cG9ncmFwaHlbX25nY29udGVudC0lQ09NUCVdICAgaDNbX25nY29udGVudC0lQ09NUCVde2ZvbnQ6NDAwIDE2cHgvMjhweCBSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7bGV0dGVyLXNwYWNpbmc6bm9ybWFsO21hcmdpbjowIDAgMTZweH0ubWF0LWg0W19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1zdWJoZWFkaW5nLTFbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXR5cG9ncmFwaHlbX25nY29udGVudC0lQ09NUCVdICAgaDRbX25nY29udGVudC0lQ09NUCVde2ZvbnQ6NDAwIDE1cHgvMjRweCBSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7bGV0dGVyLXNwYWNpbmc6bm9ybWFsO21hcmdpbjowIDAgMTZweH0ubWF0LWg1W19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10eXBvZ3JhcGh5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIGg1W19uZ2NvbnRlbnQtJUNPTVAlXXtmb250OjQwMCBjYWxjKDE0cHggKiAwLjgzKS8yMHB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjttYXJnaW46MCAwIDEycHh9Lm1hdC1oNltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdHlwb2dyYXBoeVtfbmdjb250ZW50LSVDT01QJV0gICBoNltfbmdjb250ZW50LSVDT01QJV17Zm9udDo0MDAgY2FsYygxNHB4ICogMC42NykvMjBweCBSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7bWFyZ2luOjAgMCAxMnB4fS5tYXQtYm9keS1zdHJvbmdbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWJvZHktMltfbmdjb250ZW50LSVDT01QJV17Zm9udDo1MDAgMTRweC8yNHB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtsZXR0ZXItc3BhY2luZzpub3JtYWx9Lm1hdC1ib2R5W19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1ib2R5LTFbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXR5cG9ncmFwaHlbX25nY29udGVudC0lQ09NUCVde2ZvbnQ6NDAwIDE0cHgvMjBweCBSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7bGV0dGVyLXNwYWNpbmc6bm9ybWFsfS5tYXQtYm9keVtfbmdjb250ZW50LSVDT01QJV0gICBwW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1ib2R5LTFbX25nY29udGVudC0lQ09NUCVdICAgcFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdHlwb2dyYXBoeVtfbmdjb250ZW50LSVDT01QJV0gICBwW19uZ2NvbnRlbnQtJUNPTVAlXXttYXJnaW46MCAwIDEycHh9Lm1hdC1zbWFsbFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtY2FwdGlvbltfbmdjb250ZW50LSVDT01QJV17Zm9udDo0MDAgMTJweC8yMHB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtsZXR0ZXItc3BhY2luZzpub3JtYWx9Lm1hdC1kaXNwbGF5LTRbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXR5cG9ncmFwaHlbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1kaXNwbGF5LTRbX25nY29udGVudC0lQ09NUCVde2ZvbnQ6MzAwIDExMnB4LzExMnB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtsZXR0ZXItc3BhY2luZzotMC4wNWVtO21hcmdpbjowIDAgNTZweH0ubWF0LWRpc3BsYXktM1tfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdHlwb2dyYXBoeVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWRpc3BsYXktM1tfbmdjb250ZW50LSVDT01QJV17Zm9udDo0MDAgNTZweC81NnB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtsZXR0ZXItc3BhY2luZzotMC4wMmVtO21hcmdpbjowIDAgNjRweH0ubWF0LWRpc3BsYXktMltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdHlwb2dyYXBoeVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWRpc3BsYXktMltfbmdjb250ZW50LSVDT01QJV17Zm9udDo0MDAgNDVweC80OHB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtsZXR0ZXItc3BhY2luZzotMC4wMDVlbTttYXJnaW46MCAwIDY0cHh9Lm1hdC1kaXNwbGF5LTFbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXR5cG9ncmFwaHlbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1kaXNwbGF5LTFbX25nY29udGVudC0lQ09NUCVde2ZvbnQ6NDAwIDM0cHgvNDBweCBSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7bGV0dGVyLXNwYWNpbmc6bm9ybWFsO21hcmdpbjowIDAgNjRweH0ubWF0LWJvdHRvbS1zaGVldC1jb250YWluZXJbX25nY29udGVudC0lQ09NUCVde2ZvbnQ6NDAwIDE0cHgvMjBweCBSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7bGV0dGVyLXNwYWNpbmc6bm9ybWFsfS5tYXQtYnV0dG9uW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1yYWlzZWQtYnV0dG9uW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1pY29uLWJ1dHRvbltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtc3Ryb2tlZC1idXR0b25bX25nY29udGVudC0lQ09NUCVdLCAubWF0LWZsYXQtYnV0dG9uW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1mYWJbX25nY29udGVudC0lQ09NUCVdLCAubWF0LW1pbmktZmFiW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7Zm9udC1zaXplOjE0cHg7Zm9udC13ZWlnaHQ6NTAwfS5tYXQtYnV0dG9uLXRvZ2dsZVtfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmfS5tYXQtY2FyZFtfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmfS5tYXQtY2FyZC10aXRsZVtfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjI0cHg7Zm9udC13ZWlnaHQ6NTAwfS5tYXQtY2FyZC1oZWFkZXJbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1jYXJkLXRpdGxlW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MjBweH0ubWF0LWNhcmQtc3VidGl0bGVbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWNhcmQtY29udGVudFtfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjE0cHh9Lm1hdC1jaGVja2JveFtfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmfS5tYXQtY2hlY2tib3gtbGF5b3V0W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtY2hlY2tib3gtbGFiZWxbX25nY29udGVudC0lQ09NUCVde2xpbmUtaGVpZ2h0OjI0cHh9Lm1hdC1jaGlwW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MTRweDtmb250LXdlaWdodDo1MDB9Lm1hdC1jaGlwW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtY2hpcC10cmFpbGluZy1pY29uLm1hdC1pY29uW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1jaGlwW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtY2hpcC1yZW1vdmUubWF0LWljb25bX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToxOHB4fS5tYXQtdGFibGVbX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZn0ubWF0LWhlYWRlci1jZWxsW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MTJweDtmb250LXdlaWdodDo1MDB9Lm1hdC1jZWxsW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1mb290ZXItY2VsbFtfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjE0cHh9Lm1hdC1jYWxlbmRhcltfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmfS5tYXQtY2FsZW5kYXItYm9keVtfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjEzcHh9Lm1hdC1jYWxlbmRhci1ib2R5LWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1jYWxlbmRhci1wZXJpb2QtYnV0dG9uW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MTRweDtmb250LXdlaWdodDo1MDB9Lm1hdC1jYWxlbmRhci10YWJsZS1oZWFkZXJbX25nY29udGVudC0lQ09NUCVdICAgdGhbX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToxMXB4O2ZvbnQtd2VpZ2h0OjQwMH0ubWF0LWRpYWxvZy10aXRsZVtfbmdjb250ZW50LSVDT01QJV17Zm9udDo1MDAgMjBweC8zMnB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtsZXR0ZXItc3BhY2luZzpub3JtYWx9Lm1hdC1leHBhbnNpb24tcGFuZWwtaGVhZGVyW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7Zm9udC1zaXplOjE1cHg7Zm9udC13ZWlnaHQ6NDAwfS5tYXQtZXhwYW5zaW9uLXBhbmVsLWNvbnRlbnRbX25nY29udGVudC0lQ09NUCVde2ZvbnQ6NDAwIDE0cHgvMjBweCBSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7bGV0dGVyLXNwYWNpbmc6bm9ybWFsfS5tYXQtZm9ybS1maWVsZFtfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOmluaGVyaXQ7Zm9udC13ZWlnaHQ6NDAwO2xpbmUtaGVpZ2h0OjEuMTI1O2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtsZXR0ZXItc3BhY2luZzpub3JtYWx9Lm1hdC1mb3JtLWZpZWxkLXdyYXBwZXJbX25nY29udGVudC0lQ09NUCVde3BhZGRpbmctYm90dG9tOjEuMzQzNzVlbX0ubWF0LWZvcm0tZmllbGQtcHJlZml4W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaWNvbltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtZm9ybS1maWVsZC1zdWZmaXhbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pY29uW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MTUwJTtsaW5lLWhlaWdodDoxLjEyNX0ubWF0LWZvcm0tZmllbGQtcHJlZml4W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaWNvbi1idXR0b25bX25nY29udGVudC0lQ09NUCVdLCAubWF0LWZvcm0tZmllbGQtc3VmZml4W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaWNvbi1idXR0b25bX25nY29udGVudC0lQ09NUCVde2hlaWdodDoxLjVlbTt3aWR0aDoxLjVlbX0ubWF0LWZvcm0tZmllbGQtcHJlZml4W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaWNvbi1idXR0b25bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pY29uW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1mb3JtLWZpZWxkLXN1ZmZpeFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWljb24tYnV0dG9uW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaWNvbltfbmdjb250ZW50LSVDT01QJV17aGVpZ2h0OjEuMTI1ZW07bGluZS1oZWlnaHQ6MS4xMjV9Lm1hdC1mb3JtLWZpZWxkLWluZml4W19uZ2NvbnRlbnQtJUNPTVAlXXtwYWRkaW5nOi41ZW0gMDtib3JkZXItdG9wOi44NDM3NWVtIHNvbGlkIHRyYW5zcGFyZW50fS5tYXQtZm9ybS1maWVsZC1jYW4tZmxvYXQubWF0LWZvcm0tZmllbGQtc2hvdWxkLWZsb2F0W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtZm9ybS1maWVsZC1jYW4tZmxvYXRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pbnB1dC1zZXJ2ZXJbX25nY29udGVudC0lQ09NUCVdOmZvY3VzICsgLm1hdC1mb3JtLWZpZWxkLWxhYmVsLXdyYXBwZXJbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXt0cmFuc2Zvcm06dHJhbnNsYXRlWSgtMS4zNDM3NWVtKSBzY2FsZSgwLjc1KTt3aWR0aDoxMzMuMzMzMzMzMzMzMyV9Lm1hdC1mb3JtLWZpZWxkLWNhbi1mbG9hdFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWlucHV0LXNlcnZlcltsYWJlbF1bX25nY29udGVudC0lQ09NUCVdOm5vdCg6bGFiZWwtc2hvd24pICsgLm1hdC1mb3JtLWZpZWxkLWxhYmVsLXdyYXBwZXJbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXt0cmFuc2Zvcm06dHJhbnNsYXRlWSgtMS4zNDM3NGVtKSBzY2FsZSgwLjc1KTt3aWR0aDoxMzMuMzMzMzQzMzMzMyV9Lm1hdC1mb3JtLWZpZWxkLWxhYmVsLXdyYXBwZXJbX25nY29udGVudC0lQ09NUCVde3RvcDotMC44NDM3NWVtO3BhZGRpbmctdG9wOi44NDM3NWVtfS5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17dG9wOjEuMzQzNzVlbX0ubWF0LWZvcm0tZmllbGQtdW5kZXJsaW5lW19uZ2NvbnRlbnQtJUNPTVAlXXtib3R0b206MS4zNDM3NWVtfS5tYXQtZm9ybS1maWVsZC1zdWJzY3JpcHQtd3JhcHBlcltfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjc1JTttYXJnaW4tdG9wOi42NjY2NjY2NjY3ZW07dG9wOmNhbGMoMTAwJSAtIDEuNzkxNjY2NjY2N2VtKX0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1sZWdhY3lbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLXdyYXBwZXJbX25nY29udGVudC0lQ09NUCVde3BhZGRpbmctYm90dG9tOjEuMjVlbX0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1sZWdhY3lbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWluZml4W19uZ2NvbnRlbnQtJUNPTVAlXXtwYWRkaW5nOi40Mzc1ZW0gMH0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1sZWdhY3kubWF0LWZvcm0tZmllbGQtY2FuLWZsb2F0Lm1hdC1mb3JtLWZpZWxkLXNob3VsZC1mbG9hdFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1sZWdhY3kubWF0LWZvcm0tZmllbGQtY2FuLWZsb2F0W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaW5wdXQtc2VydmVyW19uZ2NvbnRlbnQtJUNPTVAlXTpmb2N1cyArIC5tYXQtZm9ybS1maWVsZC1sYWJlbC13cmFwcGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17dHJhbnNmb3JtOnRyYW5zbGF0ZVkoLTEuMjgxMjVlbSkgc2NhbGUoMC43NSkgcGVyc3BlY3RpdmUoMTAwcHgpIHRyYW5zbGF0ZVooMC4wMDFweCk7LW1zLXRyYW5zZm9ybTp0cmFuc2xhdGVZKC0xLjI4MTI1ZW0pIHNjYWxlKDAuNzUpO3dpZHRoOjEzMy4zMzMzMzMzMzMzJX0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1sZWdhY3kubWF0LWZvcm0tZmllbGQtY2FuLWZsb2F0W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1hdXRvZmlsbC1jb250cm9sW19uZ2NvbnRlbnQtJUNPTVAlXTotd2Via2l0LWF1dG9maWxsICsgLm1hdC1mb3JtLWZpZWxkLWxhYmVsLXdyYXBwZXJbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXt0cmFuc2Zvcm06dHJhbnNsYXRlWSgtMS4yODEyNWVtKSBzY2FsZSgwLjc1KSBwZXJzcGVjdGl2ZSgxMDBweCkgdHJhbnNsYXRlWigwLjAwMTAxcHgpOy1tcy10cmFuc2Zvcm06dHJhbnNsYXRlWSgtMS4yODEyNGVtKSBzY2FsZSgwLjc1KTt3aWR0aDoxMzMuMzMzMzQzMzMzMyV9Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtbGVnYWN5Lm1hdC1mb3JtLWZpZWxkLWNhbi1mbG9hdFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWlucHV0LXNlcnZlcltsYWJlbF1bX25nY29udGVudC0lQ09NUCVdOm5vdCg6bGFiZWwtc2hvd24pICsgLm1hdC1mb3JtLWZpZWxkLWxhYmVsLXdyYXBwZXJbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXt0cmFuc2Zvcm06dHJhbnNsYXRlWSgtMS4yODEyNWVtKSBzY2FsZSgwLjc1KSBwZXJzcGVjdGl2ZSgxMDBweCkgdHJhbnNsYXRlWigwLjAwMTAycHgpOy1tcy10cmFuc2Zvcm06dHJhbnNsYXRlWSgtMS4yODEyM2VtKSBzY2FsZSgwLjc1KTt3aWR0aDoxMzMuMzMzMzUzMzMzMyV9Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtbGVnYWN5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17dG9wOjEuMjgxMjVlbX0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1sZWdhY3lbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLXVuZGVybGluZVtfbmdjb250ZW50LSVDT01QJV17Ym90dG9tOjEuMjVlbX0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1sZWdhY3lbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLXN1YnNjcmlwdC13cmFwcGVyW19uZ2NvbnRlbnQtJUNPTVAlXXttYXJnaW4tdG9wOi41NDE2NjY2NjY3ZW07dG9wOmNhbGMoMTAwJSAtIDEuNjY2NjY2NjY2N2VtKX1AbWVkaWEgcHJpbnR7Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtbGVnYWN5Lm1hdC1mb3JtLWZpZWxkLWNhbi1mbG9hdC5tYXQtZm9ybS1maWVsZC1zaG91bGQtZmxvYXRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtbGVnYWN5Lm1hdC1mb3JtLWZpZWxkLWNhbi1mbG9hdFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWlucHV0LXNlcnZlcltfbmdjb250ZW50LSVDT01QJV06Zm9jdXMgKyAubWF0LWZvcm0tZmllbGQtbGFiZWwtd3JhcHBlcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVde3RyYW5zZm9ybTp0cmFuc2xhdGVZKC0xLjI4MTIyZW0pIHNjYWxlKDAuNzUpfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWxlZ2FjeS5tYXQtZm9ybS1maWVsZC1jYW4tZmxvYXRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWF1dG9maWxsLWNvbnRyb2xbX25nY29udGVudC0lQ09NUCVdOi13ZWJraXQtYXV0b2ZpbGwgKyAubWF0LWZvcm0tZmllbGQtbGFiZWwtd3JhcHBlcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVde3RyYW5zZm9ybTp0cmFuc2xhdGVZKC0xLjI4MTIxZW0pIHNjYWxlKDAuNzUpfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWxlZ2FjeS5tYXQtZm9ybS1maWVsZC1jYW4tZmxvYXRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pbnB1dC1zZXJ2ZXJbbGFiZWxdW19uZ2NvbnRlbnQtJUNPTVAlXTpub3QoOmxhYmVsLXNob3duKSArIC5tYXQtZm9ybS1maWVsZC1sYWJlbC13cmFwcGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17dHJhbnNmb3JtOnRyYW5zbGF0ZVkoLTEuMjgxMmVtKSBzY2FsZSgwLjc1KX19Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtZmlsbFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtaW5maXhbX25nY29udGVudC0lQ09NUCVde3BhZGRpbmc6LjI1ZW0gMCAuNzVlbSAwfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWZpbGxbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXt0b3A6MS4wOTM3NWVtO21hcmdpbi10b3A6LTAuNWVtfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWZpbGwubWF0LWZvcm0tZmllbGQtY2FuLWZsb2F0Lm1hdC1mb3JtLWZpZWxkLXNob3VsZC1mbG9hdFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1maWxsLm1hdC1mb3JtLWZpZWxkLWNhbi1mbG9hdFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWlucHV0LXNlcnZlcltfbmdjb250ZW50LSVDT01QJV06Zm9jdXMgKyAubWF0LWZvcm0tZmllbGQtbGFiZWwtd3JhcHBlcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVde3RyYW5zZm9ybTp0cmFuc2xhdGVZKC0wLjU5Mzc1ZW0pIHNjYWxlKDAuNzUpO3dpZHRoOjEzMy4zMzMzMzMzMzMzJX0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1maWxsLm1hdC1mb3JtLWZpZWxkLWNhbi1mbG9hdFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWlucHV0LXNlcnZlcltsYWJlbF1bX25nY29udGVudC0lQ09NUCVdOm5vdCg6bGFiZWwtc2hvd24pICsgLm1hdC1mb3JtLWZpZWxkLWxhYmVsLXdyYXBwZXJbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXt0cmFuc2Zvcm06dHJhbnNsYXRlWSgtMC41OTM3NGVtKSBzY2FsZSgwLjc1KTt3aWR0aDoxMzMuMzMzMzQzMzMzMyV9Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2Utb3V0bGluZVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtaW5maXhbX25nY29udGVudC0lQ09NUCVde3BhZGRpbmc6MWVtIDAgMWVtIDB9Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2Utb3V0bGluZVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVde3RvcDoxLjg0Mzc1ZW07bWFyZ2luLXRvcDotMC4yNWVtfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLW91dGxpbmUubWF0LWZvcm0tZmllbGQtY2FuLWZsb2F0Lm1hdC1mb3JtLWZpZWxkLXNob3VsZC1mbG9hdFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1vdXRsaW5lLm1hdC1mb3JtLWZpZWxkLWNhbi1mbG9hdFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWlucHV0LXNlcnZlcltfbmdjb250ZW50LSVDT01QJV06Zm9jdXMgKyAubWF0LWZvcm0tZmllbGQtbGFiZWwtd3JhcHBlcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVde3RyYW5zZm9ybTp0cmFuc2xhdGVZKC0xLjU5Mzc1ZW0pIHNjYWxlKDAuNzUpO3dpZHRoOjEzMy4zMzMzMzMzMzMzJX0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1vdXRsaW5lLm1hdC1mb3JtLWZpZWxkLWNhbi1mbG9hdFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWlucHV0LXNlcnZlcltsYWJlbF1bX25nY29udGVudC0lQ09NUCVdOm5vdCg6bGFiZWwtc2hvd24pICsgLm1hdC1mb3JtLWZpZWxkLWxhYmVsLXdyYXBwZXJbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXt0cmFuc2Zvcm06dHJhbnNsYXRlWSgtMS41OTM3NGVtKSBzY2FsZSgwLjc1KTt3aWR0aDoxMzMuMzMzMzQzMzMzMyV9Lm1hdC1ncmlkLXRpbGUtaGVhZGVyW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1ncmlkLXRpbGUtZm9vdGVyW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MTRweH0ubWF0LWdyaWQtdGlsZS1oZWFkZXJbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saW5lW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1ncmlkLXRpbGUtZm9vdGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGluZVtfbmdjb250ZW50LSVDT01QJV17d2hpdGUtc3BhY2U6bm93cmFwO292ZXJmbG93OmhpZGRlbjt0ZXh0LW92ZXJmbG93OmVsbGlwc2lzO2Rpc3BsYXk6YmxvY2s7Ym94LXNpemluZzpib3JkZXItYm94fS5tYXQtZ3JpZC10aWxlLWhlYWRlcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpbmVbX25nY29udGVudC0lQ09NUCVdOm50aC1jaGlsZChuKzIpLCAubWF0LWdyaWQtdGlsZS1mb290ZXJbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saW5lW19uZ2NvbnRlbnQtJUNPTVAlXTpudGgtY2hpbGQobisyKXtmb250LXNpemU6MTJweH1pbnB1dC5tYXQtaW5wdXQtZWxlbWVudFtfbmdjb250ZW50LSVDT01QJV17bWFyZ2luLXRvcDotMC4wNjI1ZW19Lm1hdC1tZW51LWl0ZW1bX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtmb250LXNpemU6MTRweDtmb250LXdlaWdodDo0MDB9Lm1hdC1wYWdpbmF0b3JbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXBhZ2luYXRvci1wYWdlLXNpemVbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1zZWxlY3QtdHJpZ2dlcltfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2ZvbnQtc2l6ZToxMnB4fS5tYXQtcmFkaW8tYnV0dG9uW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWZ9Lm1hdC1zZWxlY3RbX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZn0ubWF0LXNlbGVjdC10cmlnZ2VyW19uZ2NvbnRlbnQtJUNPTVAlXXtoZWlnaHQ6MS4xMjVlbX0ubWF0LXNsaWRlLXRvZ2dsZS1jb250ZW50W19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWZ9Lm1hdC1zbGlkZXItdGh1bWItbGFiZWwtdGV4dFtfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2ZvbnQtc2l6ZToxMnB4O2ZvbnQtd2VpZ2h0OjUwMH0ubWF0LXN0ZXBwZXItdmVydGljYWxbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXN0ZXBwZXItaG9yaXpvbnRhbFtfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmfS5tYXQtc3RlcC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjE0cHg7Zm9udC13ZWlnaHQ6NDAwfS5tYXQtc3RlcC1zdWItbGFiZWwtZXJyb3JbX25nY29udGVudC0lQ09NUCVde2ZvbnQtd2VpZ2h0Om5vcm1hbH0ubWF0LXN0ZXAtbGFiZWwtZXJyb3JbX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToxNHB4fS5tYXQtc3RlcC1sYWJlbC1zZWxlY3RlZFtfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjE0cHg7Zm9udC13ZWlnaHQ6NTAwfS5tYXQtdGFiLWdyb3VwW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWZ9Lm1hdC10YWItbGFiZWxbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXRhYi1saW5rW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7Zm9udC1zaXplOjE0cHg7Zm9udC13ZWlnaHQ6NTAwfS5tYXQtdG9vbGJhcltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdG9vbGJhcltfbmdjb250ZW50LSVDT01QJV0gICBoMVtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdG9vbGJhcltfbmdjb250ZW50LSVDT01QJV0gICBoMltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdG9vbGJhcltfbmdjb250ZW50LSVDT01QJV0gICBoM1tfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdG9vbGJhcltfbmdjb250ZW50LSVDT01QJV0gICBoNFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdG9vbGJhcltfbmdjb250ZW50LSVDT01QJV0gICBoNVtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdG9vbGJhcltfbmdjb250ZW50LSVDT01QJV0gICBoNltfbmdjb250ZW50LSVDT01QJV17Zm9udDo1MDAgMjBweC8zMnB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtsZXR0ZXItc3BhY2luZzpub3JtYWw7bWFyZ2luOjB9Lm1hdC10b29sdGlwW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7Zm9udC1zaXplOjEwcHg7cGFkZGluZy10b3A6NnB4O3BhZGRpbmctYm90dG9tOjZweH0ubWF0LXRvb2x0aXAtaGFuZHNldFtfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjE0cHg7cGFkZGluZy10b3A6OHB4O3BhZGRpbmctYm90dG9tOjhweH0ubWF0LWxpc3QtaXRlbVtfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmfS5tYXQtbGlzdC1vcHRpb25bX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZn0ubWF0LWxpc3QtYmFzZVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpc3QtaXRlbVtfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjE2cHh9Lm1hdC1saXN0LWJhc2VbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saXN0LWl0ZW1bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saW5lW19uZ2NvbnRlbnQtJUNPTVAlXXt3aGl0ZS1zcGFjZTpub3dyYXA7b3ZlcmZsb3c6aGlkZGVuO3RleHQtb3ZlcmZsb3c6ZWxsaXBzaXM7ZGlzcGxheTpibG9jaztib3gtc2l6aW5nOmJvcmRlci1ib3h9Lm1hdC1saXN0LWJhc2VbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saXN0LWl0ZW1bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saW5lW19uZ2NvbnRlbnQtJUNPTVAlXTpudGgtY2hpbGQobisyKXtmb250LXNpemU6MTRweH0ubWF0LWxpc3QtYmFzZVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpc3Qtb3B0aW9uW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MTZweH0ubWF0LWxpc3QtYmFzZVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpc3Qtb3B0aW9uW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGluZVtfbmdjb250ZW50LSVDT01QJV17d2hpdGUtc3BhY2U6bm93cmFwO292ZXJmbG93OmhpZGRlbjt0ZXh0LW92ZXJmbG93OmVsbGlwc2lzO2Rpc3BsYXk6YmxvY2s7Ym94LXNpemluZzpib3JkZXItYm94fS5tYXQtbGlzdC1iYXNlW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGlzdC1vcHRpb25bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saW5lW19uZ2NvbnRlbnQtJUNPTVAlXTpudGgtY2hpbGQobisyKXtmb250LXNpemU6MTRweH0ubWF0LWxpc3QtYmFzZVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXN1YmhlYWRlcltfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2ZvbnQtc2l6ZToxNHB4O2ZvbnQtd2VpZ2h0OjUwMH0ubWF0LWxpc3QtYmFzZVtkZW5zZV1bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saXN0LWl0ZW1bX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToxMnB4fS5tYXQtbGlzdC1iYXNlW2RlbnNlXVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpc3QtaXRlbVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpbmVbX25nY29udGVudC0lQ09NUCVde3doaXRlLXNwYWNlOm5vd3JhcDtvdmVyZmxvdzpoaWRkZW47dGV4dC1vdmVyZmxvdzplbGxpcHNpcztkaXNwbGF5OmJsb2NrO2JveC1zaXppbmc6Ym9yZGVyLWJveH0ubWF0LWxpc3QtYmFzZVtkZW5zZV1bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saXN0LWl0ZW1bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saW5lW19uZ2NvbnRlbnQtJUNPTVAlXTpudGgtY2hpbGQobisyKXtmb250LXNpemU6MTJweH0ubWF0LWxpc3QtYmFzZVtkZW5zZV1bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saXN0LW9wdGlvbltfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjEycHh9Lm1hdC1saXN0LWJhc2VbZGVuc2VdW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGlzdC1vcHRpb25bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saW5lW19uZ2NvbnRlbnQtJUNPTVAlXXt3aGl0ZS1zcGFjZTpub3dyYXA7b3ZlcmZsb3c6aGlkZGVuO3RleHQtb3ZlcmZsb3c6ZWxsaXBzaXM7ZGlzcGxheTpibG9jaztib3gtc2l6aW5nOmJvcmRlci1ib3h9Lm1hdC1saXN0LWJhc2VbZGVuc2VdW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGlzdC1vcHRpb25bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saW5lW19uZ2NvbnRlbnQtJUNPTVAlXTpudGgtY2hpbGQobisyKXtmb250LXNpemU6MTJweH0ubWF0LWxpc3QtYmFzZVtkZW5zZV1bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1zdWJoZWFkZXJbX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtmb250LXNpemU6MTJweDtmb250LXdlaWdodDo1MDB9Lm1hdC1vcHRpb25bX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtmb250LXNpemU6MTZweH0ubWF0LW9wdGdyb3VwLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250OjUwMCAxNHB4LzI0cHggUm9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2xldHRlci1zcGFjaW5nOm5vcm1hbH0ubWF0LXNpbXBsZS1zbmFja2Jhcltfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2ZvbnQtc2l6ZToxNHB4fS5tYXQtc2ltcGxlLXNuYWNrYmFyLWFjdGlvbltfbmdjb250ZW50LSVDT01QJV17bGluZS1oZWlnaHQ6MTtmb250LWZhbWlseTppbmhlcml0O2ZvbnQtc2l6ZTppbmhlcml0O2ZvbnQtd2VpZ2h0OjUwMH0ubWF0LXRyZWVbX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZn0ubWF0LXRyZWUtbm9kZVtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtbmVzdGVkLXRyZWUtbm9kZVtfbmdjb250ZW50LSVDT01QJV17Zm9udC13ZWlnaHQ6NDAwO2ZvbnQtc2l6ZToxNHB4fS5tYXQtcmlwcGxlW19uZ2NvbnRlbnQtJUNPTVAlXXtvdmVyZmxvdzpoaWRkZW47cG9zaXRpb246cmVsYXRpdmV9Lm1hdC1yaXBwbGVbX25nY29udGVudC0lQ09NUCVdOm5vdCg6ZW1wdHkpe3RyYW5zZm9ybTp0cmFuc2xhdGVaKDApfS5tYXQtcmlwcGxlLm1hdC1yaXBwbGUtdW5ib3VuZGVkW19uZ2NvbnRlbnQtJUNPTVAlXXtvdmVyZmxvdzp2aXNpYmxlfS5tYXQtcmlwcGxlLWVsZW1lbnRbX25nY29udGVudC0lQ09NUCVde3Bvc2l0aW9uOmFic29sdXRlO2JvcmRlci1yYWRpdXM6NTAlO3BvaW50ZXItZXZlbnRzOm5vbmU7dHJhbnNpdGlvbjpvcGFjaXR5LHRyYW5zZm9ybSAwbXMgY3ViaWMtYmV6aWVyKDAsIDAsIDAuMiwgMSk7dHJhbnNmb3JtOnNjYWxlKDApfS5jZGstaGlnaC1jb250cmFzdC1hY3RpdmVbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1yaXBwbGUtZWxlbWVudFtfbmdjb250ZW50LSVDT01QJV17ZGlzcGxheTpub25lfS5jZGstdmlzdWFsbHktaGlkZGVuW19uZ2NvbnRlbnQtJUNPTVAlXXtib3JkZXI6MDtjbGlwOnJlY3QoMCAwIDAgMCk7aGVpZ2h0OjFweDttYXJnaW46LTFweDtvdmVyZmxvdzpoaWRkZW47cGFkZGluZzowO3Bvc2l0aW9uOmFic29sdXRlO3dpZHRoOjFweDtvdXRsaW5lOjA7LXdlYmtpdC1hcHBlYXJhbmNlOm5vbmU7LW1vei1hcHBlYXJhbmNlOm5vbmV9LmNkay1vdmVybGF5LWNvbnRhaW5lcltfbmdjb250ZW50LSVDT01QJV0sIC5jZGstZ2xvYmFsLW92ZXJsYXktd3JhcHBlcltfbmdjb250ZW50LSVDT01QJV17cG9pbnRlci1ldmVudHM6bm9uZTt0b3A6MDtsZWZ0OjA7aGVpZ2h0OjEwMCU7d2lkdGg6MTAwJX0uY2RrLW92ZXJsYXktY29udGFpbmVyW19uZ2NvbnRlbnQtJUNPTVAlXXtwb3NpdGlvbjpmaXhlZDt6LWluZGV4OjEwMDB9LmNkay1vdmVybGF5LWNvbnRhaW5lcltfbmdjb250ZW50LSVDT01QJV06ZW1wdHl7ZGlzcGxheTpub25lfS5jZGstZ2xvYmFsLW92ZXJsYXktd3JhcHBlcltfbmdjb250ZW50LSVDT01QJV17ZGlzcGxheTpmbGV4O3Bvc2l0aW9uOmFic29sdXRlO3otaW5kZXg6MTAwMH0uY2RrLW92ZXJsYXktcGFuZVtfbmdjb250ZW50LSVDT01QJV17cG9zaXRpb246YWJzb2x1dGU7cG9pbnRlci1ldmVudHM6YXV0bztib3gtc2l6aW5nOmJvcmRlci1ib3g7ei1pbmRleDoxMDAwO2Rpc3BsYXk6ZmxleDttYXgtd2lkdGg6MTAwJTttYXgtaGVpZ2h0OjEwMCV9LmNkay1vdmVybGF5LWJhY2tkcm9wW19uZ2NvbnRlbnQtJUNPTVAlXXtwb3NpdGlvbjphYnNvbHV0ZTt0b3A6MDtib3R0b206MDtsZWZ0OjA7cmlnaHQ6MDt6LWluZGV4OjEwMDA7cG9pbnRlci1ldmVudHM6YXV0bzstd2Via2l0LXRhcC1oaWdobGlnaHQtY29sb3I6dHJhbnNwYXJlbnQ7dHJhbnNpdGlvbjpvcGFjaXR5IDQwMG1zIGN1YmljLWJlemllcigwLjI1LCAwLjgsIDAuMjUsIDEpO29wYWNpdHk6MH0uY2RrLW92ZXJsYXktYmFja2Ryb3AuY2RrLW92ZXJsYXktYmFja2Ryb3Atc2hvd2luZ1tfbmdjb250ZW50LSVDT01QJV17b3BhY2l0eToxfUBtZWRpYSBzY3JlZW4gYW5kICgtbXMtaGlnaC1jb250cmFzdDogYWN0aXZlKXsuY2RrLW92ZXJsYXktYmFja2Ryb3AuY2RrLW92ZXJsYXktYmFja2Ryb3Atc2hvd2luZ1tfbmdjb250ZW50LSVDT01QJV17b3BhY2l0eTouNn19LmNkay1vdmVybGF5LWRhcmstYmFja2Ryb3BbX25nY29udGVudC0lQ09NUCVde2JhY2tncm91bmQ6cmdiYSgwLDAsMCwuMzIpfS5jZGstb3ZlcmxheS10cmFuc3BhcmVudC1iYWNrZHJvcFtfbmdjb250ZW50LSVDT01QJV0sIC5jZGstb3ZlcmxheS10cmFuc3BhcmVudC1iYWNrZHJvcC5jZGstb3ZlcmxheS1iYWNrZHJvcC1zaG93aW5nW19uZ2NvbnRlbnQtJUNPTVAlXXtvcGFjaXR5OjB9LmNkay1vdmVybGF5LWNvbm5lY3RlZC1wb3NpdGlvbi1ib3VuZGluZy1ib3hbX25nY29udGVudC0lQ09NUCVde3Bvc2l0aW9uOmFic29sdXRlO3otaW5kZXg6MTAwMDtkaXNwbGF5OmZsZXg7ZmxleC1kaXJlY3Rpb246Y29sdW1uO21pbi13aWR0aDoxcHg7bWluLWhlaWdodDoxcHh9LmNkay1nbG9iYWwtc2Nyb2xsYmxvY2tbX25nY29udGVudC0lQ09NUCVde3Bvc2l0aW9uOmZpeGVkO3dpZHRoOjEwMCU7b3ZlcmZsb3cteTpzY3JvbGx9QGtleWZyYW1lcyBjZGstdGV4dC1maWVsZC1hdXRvZmlsbC1zdGFydHt9QGtleWZyYW1lcyBjZGstdGV4dC1maWVsZC1hdXRvZmlsbC1lbmR7fS5jZGstdGV4dC1maWVsZC1hdXRvZmlsbC1tb25pdG9yZWRbX25nY29udGVudC0lQ09NUCVdOi13ZWJraXQtYXV0b2ZpbGx7YW5pbWF0aW9uOmNkay10ZXh0LWZpZWxkLWF1dG9maWxsLXN0YXJ0IDBzIDFtc30uY2RrLXRleHQtZmllbGQtYXV0b2ZpbGwtbW9uaXRvcmVkW19uZ2NvbnRlbnQtJUNPTVAlXTpub3QoOi13ZWJraXQtYXV0b2ZpbGwpe2FuaW1hdGlvbjpjZGstdGV4dC1maWVsZC1hdXRvZmlsbC1lbmQgMHMgMW1zfXRleHRhcmVhLmNkay10ZXh0YXJlYS1hdXRvc2l6ZVtfbmdjb250ZW50LSVDT01QJV17cmVzaXplOm5vbmV9dGV4dGFyZWEuY2RrLXRleHRhcmVhLWF1dG9zaXplLW1lYXN1cmluZ1tfbmdjb250ZW50LSVDT01QJV17cGFkZGluZzoycHggMCAhaW1wb3J0YW50O2JveC1zaXppbmc6Y29udGVudC1ib3ggIWltcG9ydGFudDtoZWlnaHQ6YXV0byAhaW1wb3J0YW50O292ZXJmbG93OmhpZGRlbiAhaW1wb3J0YW50fXRleHRhcmVhLmNkay10ZXh0YXJlYS1hdXRvc2l6ZS1tZWFzdXJpbmctZmlyZWZveFtfbmdjb250ZW50LSVDT01QJV17cGFkZGluZzoycHggMCAhaW1wb3J0YW50O2JveC1zaXppbmc6Y29udGVudC1ib3ggIWltcG9ydGFudDtoZWlnaHQ6MCAhaW1wb3J0YW50fS5tYXQtZm9jdXMtaW5kaWNhdG9yW19uZ2NvbnRlbnQtJUNPTVAlXXtwb3NpdGlvbjpyZWxhdGl2ZX0ubWF0LW1kYy1mb2N1cy1pbmRpY2F0b3JbX25nY29udGVudC0lQ09NUCVde3Bvc2l0aW9uOnJlbGF0aXZlfS5tYXQtcmlwcGxlLWVsZW1lbnRbX25nY29udGVudC0lQ09NUCVde2JhY2tncm91bmQtY29sb3I6cmdiYSgwLDAsMCwuMSl9Lm1hdC1vcHRpb25bX25nY29udGVudC0lQ09NUCVde2NvbG9yOiMyMTIxMjF9Lm1hdC1vcHRpb25bX25nY29udGVudC0lQ09NUCVdOmhvdmVyOm5vdCgubWF0LW9wdGlvbi1kaXNhYmxlZCksIC5tYXQtb3B0aW9uW19uZ2NvbnRlbnQtJUNPTVAlXTpmb2N1czpub3QoLm1hdC1vcHRpb24tZGlzYWJsZWQpe2JhY2tncm91bmQ6cmdiYSgwLDAsMCwuMDQpfS5tYXQtb3B0aW9uLm1hdC1zZWxlY3RlZFtfbmdjb250ZW50LSVDT01QJV06bm90KC5tYXQtb3B0aW9uLW11bHRpcGxlKTpub3QoLm1hdC1vcHRpb24tZGlzYWJsZWQpe2JhY2tncm91bmQ6cmdiYSgwLDAsMCwuMDQpfS5tYXQtb3B0aW9uLm1hdC1hY3RpdmVbX25nY29udGVudC0lQ09NUCVde2JhY2tncm91bmQ6cmdiYSgwLDAsMCwuMDQpO2NvbG9yOiMyMTIxMjF9Lm1hdC1vcHRpb24ubWF0LW9wdGlvbi1kaXNhYmxlZFtfbmdjb250ZW50LSVDT01QJV17Y29sb3I6cmdiYSgwLDAsMCwuMzgpfS5tYXQtcHJpbWFyeVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LW9wdGlvbi5tYXQtc2VsZWN0ZWRbX25nY29udGVudC0lQ09NUCVdOm5vdCgubWF0LW9wdGlvbi1kaXNhYmxlZCl7Y29sb3I6I2Y1N2MwMH0ubWF0LWFjY2VudFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LW9wdGlvbi5tYXQtc2VsZWN0ZWRbX25nY29udGVudC0lQ09NUCVdOm5vdCgubWF0LW9wdGlvbi1kaXNhYmxlZCl7Y29sb3I6I2ZmOTgwMH0ubWF0LXdhcm5bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1vcHRpb24ubWF0LXNlbGVjdGVkW19uZ2NvbnRlbnQtJUNPTVAlXTpub3QoLm1hdC1vcHRpb24tZGlzYWJsZWQpe2NvbG9yOiNmNDQzMzZ9Lm1hdC1vcHRncm91cC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17Y29sb3I6IzYxNjE2MX0ubWF0LW9wdGdyb3VwLWRpc2FibGVkW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtb3B0Z3JvdXAtbGFiZWxbX25nY29udGVudC0lQ09NUCVde2NvbG9yOnJnYmEoMCwwLDAsLjM4KX0ubWF0LXBzZXVkby1jaGVja2JveFtfbmdjb250ZW50LSVDT01QJV17Y29sb3I6IzYxNjE2MX0ubWF0LXBzZXVkby1jaGVja2JveFtfbmdjb250ZW50LSVDT01QJV06OmFmdGVye2NvbG9yOiNmYWZhZmF9Lm1hdC1wc2V1ZG8tY2hlY2tib3gtZGlzYWJsZWRbX25nY29udGVudC0lQ09NUCVde2NvbG9yOiNiMGIwYjB9Lm1hdC1wcmltYXJ5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtcHNldWRvLWNoZWNrYm94LWNoZWNrZWRbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXByaW1hcnlbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1wc2V1ZG8tY2hlY2tib3gtaW5kZXRlcm1pbmF0ZVtfbmdjb250ZW50LSVDT01QJV17YmFja2dyb3VuZDojZjU3YzAwfS5tYXQtcHNldWRvLWNoZWNrYm94LWNoZWNrZWRbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXBzZXVkby1jaGVja2JveC1pbmRldGVybWluYXRlW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1hY2NlbnRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1wc2V1ZG8tY2hlY2tib3gtY2hlY2tlZFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtYWNjZW50W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtcHNldWRvLWNoZWNrYm94LWluZGV0ZXJtaW5hdGVbX25nY29udGVudC0lQ09NUCVde2JhY2tncm91bmQ6I2ZmOTgwMH0ubWF0LXdhcm5bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1wc2V1ZG8tY2hlY2tib3gtY2hlY2tlZFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtd2Fybltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXBzZXVkby1jaGVja2JveC1pbmRldGVybWluYXRlW19uZ2NvbnRlbnQtJUNPTVAlXXtiYWNrZ3JvdW5kOiNmNDQzMzZ9Lm1hdC1wc2V1ZG8tY2hlY2tib3gtY2hlY2tlZC5tYXQtcHNldWRvLWNoZWNrYm94LWRpc2FibGVkW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1wc2V1ZG8tY2hlY2tib3gtaW5kZXRlcm1pbmF0ZS5tYXQtcHNldWRvLWNoZWNrYm94LWRpc2FibGVkW19uZ2NvbnRlbnQtJUNPTVAlXXtiYWNrZ3JvdW5kOiNiMGIwYjB9Lm1hdC1hcHAtYmFja2dyb3VuZFtfbmdjb250ZW50LSVDT01QJV17YmFja2dyb3VuZC1jb2xvcjojZmFmYWZhO2NvbG9yOiMyMTIxMjF9Lm1hdC1lbGV2YXRpb24tejBbX25nY29udGVudC0lQ09NUCVde2JveC1zaGFkb3c6MHB4IDBweCAwcHggMHB4IHJnYmEoMCwgMCwgMCwgMC4yKSwwcHggMHB4IDBweCAwcHggcmdiYSgwLCAwLCAwLCAwLjE0KSwwcHggMHB4IDBweCAwcHggcmdiYSgwLCAwLCAwLCAwLjEyKX0ubWF0LWVsZXZhdGlvbi16MVtfbmdjb250ZW50LSVDT01QJV17Ym94LXNoYWRvdzowcHggMnB4IDFweCAtMXB4IHJnYmEoMCwgMCwgMCwgMC4yKSwwcHggMXB4IDFweCAwcHggcmdiYSgwLCAwLCAwLCAwLjE0KSwwcHggMXB4IDNweCAwcHggcmdiYSgwLCAwLCAwLCAwLjEyKX0ubWF0LWVsZXZhdGlvbi16Mltfbmdjb250ZW50LSVDT01QJV17Ym94LXNoYWRvdzowcHggM3B4IDFweCAtMnB4IHJnYmEoMCwgMCwgMCwgMC4yKSwwcHggMnB4IDJweCAwcHggcmdiYSgwLCAwLCAwLCAwLjE0KSwwcHggMXB4IDVweCAwcHggcmdiYSgwLCAwLCAwLCAwLjEyKX0ubWF0LWVsZXZhdGlvbi16M1tfbmdjb250ZW50LSVDT01QJV17Ym94LXNoYWRvdzowcHggM3B4IDNweCAtMnB4IHJnYmEoMCwgMCwgMCwgMC4yKSwwcHggM3B4IDRweCAwcHggcmdiYSgwLCAwLCAwLCAwLjE0KSwwcHggMXB4IDhweCAwcHggcmdiYSgwLCAwLCAwLCAwLjEyKX0ubWF0LWVsZXZhdGlvbi16NFtfbmdjb250ZW50LSVDT01QJV17Ym94LXNoYWRvdzowcHggMnB4IDRweCAtMXB4IHJnYmEoMCwgMCwgMCwgMC4yKSwwcHggNHB4IDVweCAwcHggcmdiYSgwLCAwLCAwLCAwLjE0KSwwcHggMXB4IDEwcHggMHB4IHJnYmEoMCwgMCwgMCwgMC4xMil9Lm1hdC1lbGV2YXRpb24tejVbX25nY29udGVudC0lQ09NUCVde2JveC1zaGFkb3c6MHB4IDNweCA1cHggLTFweCByZ2JhKDAsIDAsIDAsIDAuMiksMHB4IDVweCA4cHggMHB4IHJnYmEoMCwgMCwgMCwgMC4xNCksMHB4IDFweCAxNHB4IDBweCByZ2JhKDAsIDAsIDAsIDAuMTIpfS5tYXQtZWxldmF0aW9uLXo2W19uZ2NvbnRlbnQtJUNPTVAlXXtib3gtc2hhZG93OjBweCAzcHggNXB4IC0xcHggcmdiYSgwLCAwLCAwLCAwLjIpLDBweCA2cHggMTBweCAwcHggcmdiYSgwLCAwLCAwLCAwLjE0KSwwcHggMXB4IDE4cHggMHB4IHJnYmEoMCwgMCwgMCwgMC4xMil9Lm1hdC1lbGV2YXRpb24tejdbX25nY29udGVudC0lQ09NUCVde2JveC1zaGFkb3c6MHB4IDRweCA1cHggLTJweCByZ2JhKDAsIDAsIDAsIDAuMiksMHB4IDdweCAxMHB4IDFweCByZ2JhKDAsIDAsIDAsIDAuMTQpLDBweCAycHggMTZweCAxcHggcmdiYSgwLCAwLCAwLCAwLjEyKX0ubWF0LWVsZXZhdGlvbi16OFtfbmdjb250ZW50LSVDT01QJV17Ym94LXNoYWRvdzowcHggNXB4IDVweCAtM3B4IHJnYmEoMCwgMCwgMCwgMC4yKSwwcHggOHB4IDEwcHggMXB4IHJnYmEoMCwgMCwgMCwgMC4xNCksMHB4IDNweCAxNHB4IDJweCByZ2JhKDAsIDAsIDAsIDAuMTIpfS5tYXQtZWxldmF0aW9uLXo5W19uZ2NvbnRlbnQtJUNPTVAlXXtib3gtc2hhZG93OjBweCA1cHggNnB4IC0zcHggcmdiYSgwLCAwLCAwLCAwLjIpLDBweCA5cHggMTJweCAxcHggcmdiYSgwLCAwLCAwLCAwLjE0KSwwcHggM3B4IDE2cHggMnB4IHJnYmEoMCwgMCwgMCwgMC4xMil9Lm1hdC1lbGV2YXRpb24tejEwW19uZ2NvbnRlbnQtJUNPTVAlXXtib3gtc2hhZG93OjBweCA2cHggNnB4IC0zcHggcmdiYSgwLCAwLCAwLCAwLjIpLDBweCAxMHB4IDE0cHggMXB4IHJnYmEoMCwgMCwgMCwgMC4xNCksMHB4IDRweCAxOHB4IDNweCByZ2JhKDAsIDAsIDAsIDAuMTIpfS5tYXQtZWxldmF0aW9uLXoxMVtfbmdjb250ZW50LSVDT01QJV17Ym94LXNoYWRvdzowcHggNnB4IDdweCAtNHB4IHJnYmEoMCwgMCwgMCwgMC4yKSwwcHggMTFweCAxNXB4IDFweCByZ2JhKDAsIDAsIDAsIDAuMTQpLDBweCA0cHggMjBweCAzcHggcmdiYSgwLCAwLCAwLCAwLjEyKX0ubWF0LWVsZXZhdGlvbi16MTJbX25nY29udGVudC0lQ09NUCVde2JveC1zaGFkb3c6MHB4IDdweCA4cHggLTRweCByZ2JhKDAsIDAsIDAsIDAuMiksMHB4IDEycHggMTdweCAycHggcmdiYSgwLCAwLCAwLCAwLjE0KSwwcHggNXB4IDIycHggNHB4IHJnYmEoMCwgMCwgMCwgMC4xMil9Lm1hdC1lbGV2YXRpb24tejEzW19uZ2NvbnRlbnQtJUNPTVAlXXtib3gtc2hhZG93OjBweCA3cHggOHB4IC00cHggcmdiYSgwLCAwLCAwLCAwLjIpLDBweCAxM3B4IDE5cHggMnB4IHJnYmEoMCwgMCwgMCwgMC4xNCksMHB4IDVweCAyNHB4IDRweCByZ2JhKDAsIDAsIDAsIDAuMTIpfS5tYXQtZWxldmF0aW9uLXoxNFtfbmdjb250ZW50LSVDT01QJV17Ym94LXNoYWRvdzowcHggN3B4IDlweCAtNHB4IHJnYmEoMCwgMCwgMCwgMC4yKSwwcHggMTRweCAyMXB4IDJweCByZ2JhKDAsIDAsIDAsIDAuMTQpLDBweCA1cHggMjZweCA0cHggcmdiYSgwLCAwLCAwLCAwLjEyKX0ubWF0LWVsZXZhdGlvbi16MTVbX25nY29udGVudC0lQ09NUCVde2JveC1zaGFkb3c6MHB4IDhweCA5cHggLTVweCByZ2JhKDAsIDAsIDAsIDAuMiksMHB4IDE1cHggMjJweCAycHggcmdiYSgwLCAwLCAwLCAwLjE0KSwwcHggNnB4IDI4cHggNXB4IHJnYmEoMCwgMCwgMCwgMC4xMil9Lm1hdC1lbGV2YXRpb24tejE2W19uZ2NvbnRlbnQtJUNPTVAlXXtib3gtc2hhZG93OjBweCA4cHggMTBweCAtNXB4IHJnYmEoMCwgMCwgMCwgMC4yKSwwcHggMTZweCAyNHB4IDJweCByZ2JhKDAsIDAsIDAsIDAuMTQpLDBweCA2cHggMzBweCA1cHggcmdiYSgwLCAwLCAwLCAwLjEyKX0ubWF0LWVsZXZhdGlvbi16MTdbX25nY29udGVudC0lQ09NUCVde2JveC1zaGFkb3c6MHB4IDhweCAxMXB4IC01cHggcmdiYSgwLCAwLCAwLCAwLjIpLDBweCAxN3B4IDI2cHggMnB4IHJnYmEoMCwgMCwgMCwgMC4xNCksMHB4IDZweCAzMnB4IDVweCByZ2JhKDAsIDAsIDAsIDAuMTIpfS5tYXQtZWxldmF0aW9uLXoxOFtfbmdjb250ZW50LSVDT01QJV17Ym94LXNoYWRvdzowcHggOXB4IDExcHggLTVweCByZ2JhKDAsIDAsIDAsIDAuMiksMHB4IDE4cHggMjhweCAycHggcmdiYSgwLCAwLCAwLCAwLjE0KSwwcHggN3B4IDM0cHggNnB4IHJnYmEoMCwgMCwgMCwgMC4xMil9Lm1hdC1lbGV2YXRpb24tejE5W19uZ2NvbnRlbnQtJUNPTVAlXXtib3gtc2hhZG93OjBweCA5cHggMTJweCAtNnB4IHJnYmEoMCwgMCwgMCwgMC4yKSwwcHggMTlweCAyOXB4IDJweCByZ2JhKDAsIDAsIDAsIDAuMTQpLDBweCA3cHggMzZweCA2cHggcmdiYSgwLCAwLCAwLCAwLjEyKX0ubWF0LWVsZXZhdGlvbi16MjBbX25nY29udGVudC0lQ09NUCVde2JveC1zaGFkb3c6MHB4IDEwcHggMTNweCAtNnB4IHJnYmEoMCwgMCwgMCwgMC4yKSwwcHggMjBweCAzMXB4IDNweCByZ2JhKDAsIDAsIDAsIDAuMTQpLDBweCA4cHggMzhweCA3cHggcmdiYSgwLCAwLCAwLCAwLjEyKX0ubWF0LWVsZXZhdGlvbi16MjFbX25nY29udGVudC0lQ09NUCVde2JveC1zaGFkb3c6MHB4IDEwcHggMTNweCAtNnB4IHJnYmEoMCwgMCwgMCwgMC4yKSwwcHggMjFweCAzM3B4IDNweCByZ2JhKDAsIDAsIDAsIDAuMTQpLDBweCA4cHggNDBweCA3cHggcmdiYSgwLCAwLCAwLCAwLjEyKX0ubWF0LWVsZXZhdGlvbi16MjJbX25nY29udGVudC0lQ09NUCVde2JveC1zaGFkb3c6MHB4IDEwcHggMTRweCAtNnB4IHJnYmEoMCwgMCwgMCwgMC4yKSwwcHggMjJweCAzNXB4IDNweCByZ2JhKDAsIDAsIDAsIDAuMTQpLDBweCA4cHggNDJweCA3cHggcmdiYSgwLCAwLCAwLCAwLjEyKX0ubWF0LWVsZXZhdGlvbi16MjNbX25nY29udGVudC0lQ09NUCVde2JveC1zaGFkb3c6MHB4IDExcHggMTRweCAtN3B4IHJnYmEoMCwgMCwgMCwgMC4yKSwwcHggMjNweCAzNnB4IDNweCByZ2JhKDAsIDAsIDAsIDAuMTQpLDBweCA5cHggNDRweCA4cHggcmdiYSgwLCAwLCAwLCAwLjEyKX0ubWF0LWVsZXZhdGlvbi16MjRbX25nY29udGVudC0lQ09NUCVde2JveC1zaGFkb3c6MHB4IDExcHggMTVweCAtN3B4IHJnYmEoMCwgMCwgMCwgMC4yKSwwcHggMjRweCAzOHB4IDNweCByZ2JhKDAsIDAsIDAsIDAuMTQpLDBweCA5cHggNDZweCA4cHggcmdiYSgwLCAwLCAwLCAwLjEyKX0ubWF0LXRoZW1lLWxvYWRlZC1tYXJrZXJbX25nY29udGVudC0lQ09NUCVde2Rpc3BsYXk6bm9uZX0ubWF0LWF1dG9jb21wbGV0ZS1wYW5lbFtfbmdjb250ZW50LSVDT01QJV17YmFja2dyb3VuZDojZmZmO2NvbG9yOiMyMTIxMjF9Lm1hdC1hdXRvY29tcGxldGUtcGFuZWxbX25nY29udGVudC0lQ09NUCVdOm5vdChbY2xhc3MqPW1hdC1lbGV2YXRpb24tel0pe2JveC1zaGFkb3c6MHB4IDJweCA0cHggLTFweCByZ2JhKDAsIDAsIDAsIDAuMiksMHB4IDRweCA1cHggMHB4IHJnYmEoMCwgMCwgMCwgMC4xNCksMHB4IDFweCAxMHB4IDBweCByZ2JhKDAsIDAsIDAsIDAuMTIpfS5tYXQtYXV0b2NvbXBsZXRlLXBhbmVsW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtb3B0aW9uLm1hdC1zZWxlY3RlZFtfbmdjb250ZW50LSVDT01QJV06bm90KC5tYXQtYWN0aXZlKTpub3QoOmhvdmVyKXtiYWNrZ3JvdW5kOiNmZmZ9Lm1hdC1hdXRvY29tcGxldGUtcGFuZWxbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1vcHRpb24ubWF0LXNlbGVjdGVkW19uZ2NvbnRlbnQtJUNPTVAlXTpub3QoLm1hdC1hY3RpdmUpOm5vdCg6aG92ZXIpOm5vdCgubWF0LW9wdGlvbi1kaXNhYmxlZCl7Y29sb3I6IzIxMjEyMX0ubWF0LWJhZGdlLWNvbnRlbnRbX25nY29udGVudC0lQ09NUCVde2NvbG9yOiNmZmY7YmFja2dyb3VuZDojZjU3YzAwfS5jZGstaGlnaC1jb250cmFzdC1hY3RpdmVbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1iYWRnZS1jb250ZW50W19uZ2NvbnRlbnQtJUNPTVAlXXtvdXRsaW5lOnNvbGlkIDFweDtib3JkZXItcmFkaXVzOjB9Lm1hdC1iYWRnZS1hY2NlbnRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1iYWRnZS1jb250ZW50W19uZ2NvbnRlbnQtJUNPTVAlXXtiYWNrZ3JvdW5kOiNmZjk4MDA7Y29sb3I6I2ZmZn0ubWF0LWJhZGdlLXdhcm5bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1iYWRnZS1jb250ZW50W19uZ2NvbnRlbnQtJUNPTVAlXXtjb2xvcjojZmZmO2JhY2tncm91bmQ6I2Y0NDMzNn0ubWF0LWJhZGdlW19uZ2NvbnRlbnQtJUNPTVAlXXtwb3NpdGlvbjpyZWxhdGl2ZX0ubWF0LWJhZGdlLWhpZGRlbltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWJhZGdlLWNvbnRlbnRbX25nY29udGVudC0lQ09NUCVde2Rpc3BsYXk6bm9uZX0ubWF0LWJhZGdlLWRpc2FibGVkW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtYmFkZ2UtY29udGVudFtfbmdjb250ZW50LSVDT01QJV17YmFja2dyb3VuZDojYjliOWI5O2NvbG9yOiM3NTc1NzV9Lm1hdC1iYWRnZS1jb250ZW50W19uZ2NvbnRlbnQtJUNPTVAlXXtwb3NpdGlvbjphYnNvbHV0ZTt0ZXh0LWFsaWduOmNlbnRlcjtkaXNwbGF5OmlubGluZS1ibG9jaztib3JkZXItcmFkaXVzOjUwJTt0cmFuc2l0aW9uOnRyYW5zZm9ybSAyMDBtcyBlYXNlLWluLW91dDt0cmFuc2Zvcm06c2NhbGUoMC42KTtvdmVyZmxvdzpoaWRkZW47d2hpdGUtc3BhY2U6bm93cmFwO3RleHQtb3ZlcmZsb3c6ZWxsaXBzaXM7cG9pbnRlci1ldmVudHM6bm9uZX0ubmctYW5pbWF0ZS1kaXNhYmxlZFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWJhZGdlLWNvbnRlbnRbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWJhZGdlLWNvbnRlbnQuX21hdC1hbmltYXRpb24tbm9vcGFibGVbX25nY29udGVudC0lQ09NUCVde3RyYW5zaXRpb246bm9uZX0ubWF0LWJhZGdlLWNvbnRlbnQubWF0LWJhZGdlLWFjdGl2ZVtfbmdjb250ZW50LSVDT01QJV17dHJhbnNmb3JtOm5vbmV9Lm1hdC1iYWRnZS1zbWFsbFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWJhZGdlLWNvbnRlbnRbX25nY29udGVudC0lQ09NUCVde3dpZHRoOjE2cHg7aGVpZ2h0OjE2cHg7bGluZS1oZWlnaHQ6MTZweH0ubWF0LWJhZGdlLXNtYWxsLm1hdC1iYWRnZS1hYm92ZVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWJhZGdlLWNvbnRlbnRbX25nY29udGVudC0lQ09NUCVde3RvcDotOHB4fS5tYXQtYmFkZ2Utc21hbGwubWF0LWJhZGdlLWJlbG93W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtYmFkZ2UtY29udGVudFtfbmdjb250ZW50LSVDT01QJV17Ym90dG9tOi04cHh9Lm1hdC1iYWRnZS1zbWFsbC5tYXQtYmFkZ2UtYmVmb3JlW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtYmFkZ2UtY29udGVudFtfbmdjb250ZW50LSVDT01QJV17bGVmdDotMTZweH1bZGlyPXJ0bF1bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1iYWRnZS1zbWFsbC5tYXQtYmFkZ2UtYmVmb3JlW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtYmFkZ2UtY29udGVudFtfbmdjb250ZW50LSVDT01QJV17bGVmdDphdXRvO3JpZ2h0Oi0xNnB4fS5tYXQtYmFkZ2Utc21hbGwubWF0LWJhZGdlLWFmdGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtYmFkZ2UtY29udGVudFtfbmdjb250ZW50LSVDT01QJV17cmlnaHQ6LTE2cHh9W2Rpcj1ydGxdW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtYmFkZ2Utc21hbGwubWF0LWJhZGdlLWFmdGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtYmFkZ2UtY29udGVudFtfbmdjb250ZW50LSVDT01QJV17cmlnaHQ6YXV0bztsZWZ0Oi0xNnB4fS5tYXQtYmFkZ2Utc21hbGwubWF0LWJhZGdlLW92ZXJsYXAubWF0LWJhZGdlLWJlZm9yZVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWJhZGdlLWNvbnRlbnRbX25nY29udGVudC0lQ09NUCVde2xlZnQ6LThweH1bZGlyPXJ0bF1bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1iYWRnZS1zbWFsbC5tYXQtYmFkZ2Utb3ZlcmxhcC5tYXQtYmFkZ2UtYmVmb3JlW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtYmFkZ2UtY29udGVudFtfbmdjb250ZW50LSVDT01QJV17bGVmdDphdXRvO3JpZ2h0Oi04cHh9Lm1hdC1iYWRnZS1zbWFsbC5tYXQtYmFkZ2Utb3ZlcmxhcC5tYXQtYmFkZ2UtYWZ0ZXJbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1iYWRnZS1jb250ZW50W19uZ2NvbnRlbnQtJUNPTVAlXXtyaWdodDotOHB4fVtkaXI9cnRsXVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWJhZGdlLXNtYWxsLm1hdC1iYWRnZS1vdmVybGFwLm1hdC1iYWRnZS1hZnRlcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWJhZGdlLWNvbnRlbnRbX25nY29udGVudC0lQ09NUCVde3JpZ2h0OmF1dG87bGVmdDotOHB4fS5tYXQtYmFkZ2UtbWVkaXVtW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtYmFkZ2UtY29udGVudFtfbmdjb250ZW50LSVDT01QJV17d2lkdGg6MjJweDtoZWlnaHQ6MjJweDtsaW5lLWhlaWdodDoyMnB4fS5tYXQtYmFkZ2UtbWVkaXVtLm1hdC1iYWRnZS1hYm92ZVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWJhZGdlLWNvbnRlbnRbX25nY29udGVudC0lQ09NUCVde3RvcDotMTFweH0ubWF0LWJhZGdlLW1lZGl1bS5tYXQtYmFkZ2UtYmVsb3dbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1iYWRnZS1jb250ZW50W19uZ2NvbnRlbnQtJUNPTVAlXXtib3R0b206LTExcHh9Lm1hdC1iYWRnZS1tZWRpdW0ubWF0LWJhZGdlLWJlZm9yZVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWJhZGdlLWNvbnRlbnRbX25nY29udGVudC0lQ09NUCVde2xlZnQ6LTIycHh9W2Rpcj1ydGxdW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtYmFkZ2UtbWVkaXVtLm1hdC1iYWRnZS1iZWZvcmVbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1iYWRnZS1jb250ZW50W19uZ2NvbnRlbnQtJUNPTVAlXXtsZWZ0OmF1dG87cmlnaHQ6LTIycHh9Lm1hdC1iYWRnZS1tZWRpdW0ubWF0LWJhZGdlLWFmdGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtYmFkZ2UtY29udGVudFtfbmdjb250ZW50LSVDT01QJV17cmlnaHQ6LTIycHh9W2Rpcj1ydGxdW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtYmFkZ2UtbWVkaXVtLm1hdC1iYWRnZS1hZnRlcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWJhZGdlLWNvbnRlbnRbX25nY29udGVudC0lQ09NUCVde3JpZ2h0OmF1dG87bGVmdDotMjJweH0ubWF0LWJhZGdlLW1lZGl1bS5tYXQtYmFkZ2Utb3ZlcmxhcC5tYXQtYmFkZ2UtYmVmb3JlW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtYmFkZ2UtY29udGVudFtfbmdjb250ZW50LSVDT01QJV17bGVmdDotMTFweH1bZGlyPXJ0bF1bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1iYWRnZS1tZWRpdW0ubWF0LWJhZGdlLW92ZXJsYXAubWF0LWJhZGdlLWJlZm9yZVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWJhZGdlLWNvbnRlbnRbX25nY29udGVudC0lQ09NUCVde2xlZnQ6YXV0bztyaWdodDotMTFweH0ubWF0LWJhZGdlLW1lZGl1bS5tYXQtYmFkZ2Utb3ZlcmxhcC5tYXQtYmFkZ2UtYWZ0ZXJbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1iYWRnZS1jb250ZW50W19uZ2NvbnRlbnQtJUNPTVAlXXtyaWdodDotMTFweH1bZGlyPXJ0bF1bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1iYWRnZS1tZWRpdW0ubWF0LWJhZGdlLW92ZXJsYXAubWF0LWJhZGdlLWFmdGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtYmFkZ2UtY29udGVudFtfbmdjb250ZW50LSVDT01QJV17cmlnaHQ6YXV0bztsZWZ0Oi0xMXB4fS5tYXQtYmFkZ2UtbGFyZ2VbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1iYWRnZS1jb250ZW50W19uZ2NvbnRlbnQtJUNPTVAlXXt3aWR0aDoyOHB4O2hlaWdodDoyOHB4O2xpbmUtaGVpZ2h0OjI4cHh9Lm1hdC1iYWRnZS1sYXJnZS5tYXQtYmFkZ2UtYWJvdmVbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1iYWRnZS1jb250ZW50W19uZ2NvbnRlbnQtJUNPTVAlXXt0b3A6LTE0cHh9Lm1hdC1iYWRnZS1sYXJnZS5tYXQtYmFkZ2UtYmVsb3dbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1iYWRnZS1jb250ZW50W19uZ2NvbnRlbnQtJUNPTVAlXXtib3R0b206LTE0cHh9Lm1hdC1iYWRnZS1sYXJnZS5tYXQtYmFkZ2UtYmVmb3JlW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtYmFkZ2UtY29udGVudFtfbmdjb250ZW50LSVDT01QJV17bGVmdDotMjhweH1bZGlyPXJ0bF1bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1iYWRnZS1sYXJnZS5tYXQtYmFkZ2UtYmVmb3JlW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtYmFkZ2UtY29udGVudFtfbmdjb250ZW50LSVDT01QJV17bGVmdDphdXRvO3JpZ2h0Oi0yOHB4fS5tYXQtYmFkZ2UtbGFyZ2UubWF0LWJhZGdlLWFmdGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtYmFkZ2UtY29udGVudFtfbmdjb250ZW50LSVDT01QJV17cmlnaHQ6LTI4cHh9W2Rpcj1ydGxdW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtYmFkZ2UtbGFyZ2UubWF0LWJhZGdlLWFmdGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtYmFkZ2UtY29udGVudFtfbmdjb250ZW50LSVDT01QJV17cmlnaHQ6YXV0bztsZWZ0Oi0yOHB4fS5tYXQtYmFkZ2UtbGFyZ2UubWF0LWJhZGdlLW92ZXJsYXAubWF0LWJhZGdlLWJlZm9yZVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWJhZGdlLWNvbnRlbnRbX25nY29udGVudC0lQ09NUCVde2xlZnQ6LTE0cHh9W2Rpcj1ydGxdW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtYmFkZ2UtbGFyZ2UubWF0LWJhZGdlLW92ZXJsYXAubWF0LWJhZGdlLWJlZm9yZVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWJhZGdlLWNvbnRlbnRbX25nY29udGVudC0lQ09NUCVde2xlZnQ6YXV0bztyaWdodDotMTRweH0ubWF0LWJhZGdlLWxhcmdlLm1hdC1iYWRnZS1vdmVybGFwLm1hdC1iYWRnZS1hZnRlcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWJhZGdlLWNvbnRlbnRbX25nY29udGVudC0lQ09NUCVde3JpZ2h0Oi0xNHB4fVtkaXI9cnRsXVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWJhZGdlLWxhcmdlLm1hdC1iYWRnZS1vdmVybGFwLm1hdC1iYWRnZS1hZnRlcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWJhZGdlLWNvbnRlbnRbX25nY29udGVudC0lQ09NUCVde3JpZ2h0OmF1dG87bGVmdDotMTRweH0ubWF0LWJvdHRvbS1zaGVldC1jb250YWluZXJbX25nY29udGVudC0lQ09NUCVde2JveC1zaGFkb3c6MHB4IDhweCAxMHB4IC01cHggcmdiYSgwLCAwLCAwLCAwLjIpLDBweCAxNnB4IDI0cHggMnB4IHJnYmEoMCwgMCwgMCwgMC4xNCksMHB4IDZweCAzMHB4IDVweCByZ2JhKDAsIDAsIDAsIDAuMTIpO2JhY2tncm91bmQ6I2ZmZjtjb2xvcjojMjEyMTIxfS5tYXQtYnV0dG9uW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1pY29uLWJ1dHRvbltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtc3Ryb2tlZC1idXR0b25bX25nY29udGVudC0lQ09NUCVde2NvbG9yOmluaGVyaXQ7YmFja2dyb3VuZDp0cmFuc3BhcmVudH0ubWF0LWJ1dHRvbi5tYXQtcHJpbWFyeVtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtaWNvbi1idXR0b24ubWF0LXByaW1hcnlbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXN0cm9rZWQtYnV0dG9uLm1hdC1wcmltYXJ5W19uZ2NvbnRlbnQtJUNPTVAlXXtjb2xvcjojZjU3YzAwfS5tYXQtYnV0dG9uLm1hdC1hY2NlbnRbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWljb24tYnV0dG9uLm1hdC1hY2NlbnRbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXN0cm9rZWQtYnV0dG9uLm1hdC1hY2NlbnRbX25nY29udGVudC0lQ09NUCVde2NvbG9yOiNmZjk4MDB9Lm1hdC1idXR0b24ubWF0LXdhcm5bX25nY29udGVudC0lQ09NUCVdLCAubWF0LWljb24tYnV0dG9uLm1hdC13YXJuW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1zdHJva2VkLWJ1dHRvbi5tYXQtd2Fybltfbmdjb250ZW50LSVDT01QJV17Y29sb3I6I2Y0NDMzNn0ubWF0LWJ1dHRvbi5tYXQtcHJpbWFyeS5tYXQtYnV0dG9uLWRpc2FibGVkW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1idXR0b24ubWF0LWFjY2VudC5tYXQtYnV0dG9uLWRpc2FibGVkW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1idXR0b24ubWF0LXdhcm4ubWF0LWJ1dHRvbi1kaXNhYmxlZFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtYnV0dG9uLm1hdC1idXR0b24tZGlzYWJsZWQubWF0LWJ1dHRvbi1kaXNhYmxlZFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtaWNvbi1idXR0b24ubWF0LXByaW1hcnkubWF0LWJ1dHRvbi1kaXNhYmxlZFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtaWNvbi1idXR0b24ubWF0LWFjY2VudC5tYXQtYnV0dG9uLWRpc2FibGVkW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1pY29uLWJ1dHRvbi5tYXQtd2Fybi5tYXQtYnV0dG9uLWRpc2FibGVkW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1pY29uLWJ1dHRvbi5tYXQtYnV0dG9uLWRpc2FibGVkLm1hdC1idXR0b24tZGlzYWJsZWRbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXN0cm9rZWQtYnV0dG9uLm1hdC1wcmltYXJ5Lm1hdC1idXR0b24tZGlzYWJsZWRbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXN0cm9rZWQtYnV0dG9uLm1hdC1hY2NlbnQubWF0LWJ1dHRvbi1kaXNhYmxlZFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtc3Ryb2tlZC1idXR0b24ubWF0LXdhcm4ubWF0LWJ1dHRvbi1kaXNhYmxlZFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtc3Ryb2tlZC1idXR0b24ubWF0LWJ1dHRvbi1kaXNhYmxlZC5tYXQtYnV0dG9uLWRpc2FibGVkW19uZ2NvbnRlbnQtJUNPTVAlXXtjb2xvcjpyZ2JhKDAsMCwwLC4yNil9Lm1hdC1idXR0b24ubWF0LXByaW1hcnlbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1idXR0b24tZm9jdXMtb3ZlcmxheVtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtaWNvbi1idXR0b24ubWF0LXByaW1hcnlbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1idXR0b24tZm9jdXMtb3ZlcmxheVtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtc3Ryb2tlZC1idXR0b24ubWF0LXByaW1hcnlbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1idXR0b24tZm9jdXMtb3ZlcmxheVtfbmdjb250ZW50LSVDT01QJV17YmFja2dyb3VuZC1jb2xvcjojZjU3YzAwfS5tYXQtYnV0dG9uLm1hdC1hY2NlbnRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1idXR0b24tZm9jdXMtb3ZlcmxheVtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtaWNvbi1idXR0b24ubWF0LWFjY2VudFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWJ1dHRvbi1mb2N1cy1vdmVybGF5W19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1zdHJva2VkLWJ1dHRvbi5tYXQtYWNjZW50W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtYnV0dG9uLWZvY3VzLW92ZXJsYXlbX25nY29udGVudC0lQ09NUCVde2JhY2tncm91bmQtY29sb3I6I2ZmOTgwMH0ubWF0LWJ1dHRvbi5tYXQtd2Fybltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWJ1dHRvbi1mb2N1cy1vdmVybGF5W19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1pY29uLWJ1dHRvbi5tYXQtd2Fybltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWJ1dHRvbi1mb2N1cy1vdmVybGF5W19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1zdHJva2VkLWJ1dHRvbi5tYXQtd2Fybltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWJ1dHRvbi1mb2N1cy1vdmVybGF5W19uZ2NvbnRlbnQtJUNPTVAlXXtiYWNrZ3JvdW5kLWNvbG9yOiNmNDQzMzZ9Lm1hdC1idXR0b24ubWF0LWJ1dHRvbi1kaXNhYmxlZFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWJ1dHRvbi1mb2N1cy1vdmVybGF5W19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1pY29uLWJ1dHRvbi5tYXQtYnV0dG9uLWRpc2FibGVkW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtYnV0dG9uLWZvY3VzLW92ZXJsYXlbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXN0cm9rZWQtYnV0dG9uLm1hdC1idXR0b24tZGlzYWJsZWRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1idXR0b24tZm9jdXMtb3ZlcmxheVtfbmdjb250ZW50LSVDT01QJV17YmFja2dyb3VuZC1jb2xvcjp0cmFuc3BhcmVudH0ubWF0LWJ1dHRvbltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXJpcHBsZS1lbGVtZW50W19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1pY29uLWJ1dHRvbltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXJpcHBsZS1lbGVtZW50W19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1zdHJva2VkLWJ1dHRvbltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXJpcHBsZS1lbGVtZW50W19uZ2NvbnRlbnQtJUNPTVAlXXtvcGFjaXR5Oi4xO2JhY2tncm91bmQtY29sb3I6Y3VycmVudENvbG9yfS5tYXQtYnV0dG9uLWZvY3VzLW92ZXJsYXlbX25nY29udGVudC0lQ09NUCVde2JhY2tncm91bmQ6IzAwMH0ubWF0LXN0cm9rZWQtYnV0dG9uW19uZ2NvbnRlbnQtJUNPTVAlXTpub3QoLm1hdC1idXR0b24tZGlzYWJsZWQpe2JvcmRlci1jb2xvcjpyZ2JhKDAsMCwwLC4xMil9Lm1hdC1mbGF0LWJ1dHRvbltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtcmFpc2VkLWJ1dHRvbltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtZmFiW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1taW5pLWZhYltfbmdjb250ZW50LSVDT01QJV17Y29sb3I6IzIxMjEyMTtiYWNrZ3JvdW5kLWNvbG9yOiNmZmZ9Lm1hdC1mbGF0LWJ1dHRvbi5tYXQtcHJpbWFyeVtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtcmFpc2VkLWJ1dHRvbi5tYXQtcHJpbWFyeVtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtZmFiLm1hdC1wcmltYXJ5W19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1taW5pLWZhYi5tYXQtcHJpbWFyeVtfbmdjb250ZW50LSVDT01QJV17Y29sb3I6I2ZmZn0ubWF0LWZsYXQtYnV0dG9uLm1hdC1hY2NlbnRbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXJhaXNlZC1idXR0b24ubWF0LWFjY2VudFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtZmFiLm1hdC1hY2NlbnRbX25nY29udGVudC0lQ09NUCVdLCAubWF0LW1pbmktZmFiLm1hdC1hY2NlbnRbX25nY29udGVudC0lQ09NUCVde2NvbG9yOiNmZmZ9Lm1hdC1mbGF0LWJ1dHRvbi5tYXQtd2Fybltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtcmFpc2VkLWJ1dHRvbi5tYXQtd2Fybltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtZmFiLm1hdC13YXJuW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1taW5pLWZhYi5tYXQtd2Fybltfbmdjb250ZW50LSVDT01QJV17Y29sb3I6I2ZmZn0ubWF0LWZsYXQtYnV0dG9uLm1hdC1wcmltYXJ5Lm1hdC1idXR0b24tZGlzYWJsZWRbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWZsYXQtYnV0dG9uLm1hdC1hY2NlbnQubWF0LWJ1dHRvbi1kaXNhYmxlZFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtZmxhdC1idXR0b24ubWF0LXdhcm4ubWF0LWJ1dHRvbi1kaXNhYmxlZFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtZmxhdC1idXR0b24ubWF0LWJ1dHRvbi1kaXNhYmxlZC5tYXQtYnV0dG9uLWRpc2FibGVkW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1yYWlzZWQtYnV0dG9uLm1hdC1wcmltYXJ5Lm1hdC1idXR0b24tZGlzYWJsZWRbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXJhaXNlZC1idXR0b24ubWF0LWFjY2VudC5tYXQtYnV0dG9uLWRpc2FibGVkW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1yYWlzZWQtYnV0dG9uLm1hdC13YXJuLm1hdC1idXR0b24tZGlzYWJsZWRbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXJhaXNlZC1idXR0b24ubWF0LWJ1dHRvbi1kaXNhYmxlZC5tYXQtYnV0dG9uLWRpc2FibGVkW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1mYWIubWF0LXByaW1hcnkubWF0LWJ1dHRvbi1kaXNhYmxlZFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtZmFiLm1hdC1hY2NlbnQubWF0LWJ1dHRvbi1kaXNhYmxlZFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtZmFiLm1hdC13YXJuLm1hdC1idXR0b24tZGlzYWJsZWRbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWZhYi5tYXQtYnV0dG9uLWRpc2FibGVkLm1hdC1idXR0b24tZGlzYWJsZWRbX25nY29udGVudC0lQ09NUCVdLCAubWF0LW1pbmktZmFiLm1hdC1wcmltYXJ5Lm1hdC1idXR0b24tZGlzYWJsZWRbX25nY29udGVudC0lQ09NUCVdLCAubWF0LW1pbmktZmFiLm1hdC1hY2NlbnQubWF0LWJ1dHRvbi1kaXNhYmxlZFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtbWluaS1mYWIubWF0LXdhcm4ubWF0LWJ1dHRvbi1kaXNhYmxlZFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtbWluaS1mYWIubWF0LWJ1dHRvbi1kaXNhYmxlZC5tYXQtYnV0dG9uLWRpc2FibGVkW19uZ2NvbnRlbnQtJUNPTVAlXXtjb2xvcjpyZ2JhKDAsMCwwLC4yNil9Lm1hdC1mbGF0LWJ1dHRvbi5tYXQtcHJpbWFyeVtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtcmFpc2VkLWJ1dHRvbi5tYXQtcHJpbWFyeVtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtZmFiLm1hdC1wcmltYXJ5W19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1taW5pLWZhYi5tYXQtcHJpbWFyeVtfbmdjb250ZW50LSVDT01QJV17YmFja2dyb3VuZC1jb2xvcjojZjU3YzAwfS5tYXQtZmxhdC1idXR0b24ubWF0LWFjY2VudFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtcmFpc2VkLWJ1dHRvbi5tYXQtYWNjZW50W19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1mYWIubWF0LWFjY2VudFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtbWluaS1mYWIubWF0LWFjY2VudFtfbmdjb250ZW50LSVDT01QJV17YmFja2dyb3VuZC1jb2xvcjojZmY5ODAwfS5tYXQtZmxhdC1idXR0b24ubWF0LXdhcm5bX25nY29udGVudC0lQ09NUCVdLCAubWF0LXJhaXNlZC1idXR0b24ubWF0LXdhcm5bX25nY29udGVudC0lQ09NUCVdLCAubWF0LWZhYi5tYXQtd2Fybltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtbWluaS1mYWIubWF0LXdhcm5bX25nY29udGVudC0lQ09NUCVde2JhY2tncm91bmQtY29sb3I6I2Y0NDMzNn0ubWF0LWZsYXQtYnV0dG9uLm1hdC1wcmltYXJ5Lm1hdC1idXR0b24tZGlzYWJsZWRbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWZsYXQtYnV0dG9uLm1hdC1hY2NlbnQubWF0LWJ1dHRvbi1kaXNhYmxlZFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtZmxhdC1idXR0b24ubWF0LXdhcm4ubWF0LWJ1dHRvbi1kaXNhYmxlZFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtZmxhdC1idXR0b24ubWF0LWJ1dHRvbi1kaXNhYmxlZC5tYXQtYnV0dG9uLWRpc2FibGVkW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1yYWlzZWQtYnV0dG9uLm1hdC1wcmltYXJ5Lm1hdC1idXR0b24tZGlzYWJsZWRbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXJhaXNlZC1idXR0b24ubWF0LWFjY2VudC5tYXQtYnV0dG9uLWRpc2FibGVkW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1yYWlzZWQtYnV0dG9uLm1hdC13YXJuLm1hdC1idXR0b24tZGlzYWJsZWRbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXJhaXNlZC1idXR0b24ubWF0LWJ1dHRvbi1kaXNhYmxlZC5tYXQtYnV0dG9uLWRpc2FibGVkW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1mYWIubWF0LXByaW1hcnkubWF0LWJ1dHRvbi1kaXNhYmxlZFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtZmFiLm1hdC1hY2NlbnQubWF0LWJ1dHRvbi1kaXNhYmxlZFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtZmFiLm1hdC13YXJuLm1hdC1idXR0b24tZGlzYWJsZWRbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWZhYi5tYXQtYnV0dG9uLWRpc2FibGVkLm1hdC1idXR0b24tZGlzYWJsZWRbX25nY29udGVudC0lQ09NUCVdLCAubWF0LW1pbmktZmFiLm1hdC1wcmltYXJ5Lm1hdC1idXR0b24tZGlzYWJsZWRbX25nY29udGVudC0lQ09NUCVdLCAubWF0LW1pbmktZmFiLm1hdC1hY2NlbnQubWF0LWJ1dHRvbi1kaXNhYmxlZFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtbWluaS1mYWIubWF0LXdhcm4ubWF0LWJ1dHRvbi1kaXNhYmxlZFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtbWluaS1mYWIubWF0LWJ1dHRvbi1kaXNhYmxlZC5tYXQtYnV0dG9uLWRpc2FibGVkW19uZ2NvbnRlbnQtJUNPTVAlXXtiYWNrZ3JvdW5kLWNvbG9yOnJnYmEoMCwwLDAsLjEyKX0ubWF0LWZsYXQtYnV0dG9uLm1hdC1wcmltYXJ5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtcmlwcGxlLWVsZW1lbnRbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXJhaXNlZC1idXR0b24ubWF0LXByaW1hcnlbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1yaXBwbGUtZWxlbWVudFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtZmFiLm1hdC1wcmltYXJ5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtcmlwcGxlLWVsZW1lbnRbX25nY29udGVudC0lQ09NUCVdLCAubWF0LW1pbmktZmFiLm1hdC1wcmltYXJ5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtcmlwcGxlLWVsZW1lbnRbX25nY29udGVudC0lQ09NUCVde2JhY2tncm91bmQtY29sb3I6cmdiYSgyNTUsMjU1LDI1NSwuMSl9Lm1hdC1mbGF0LWJ1dHRvbi5tYXQtYWNjZW50W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtcmlwcGxlLWVsZW1lbnRbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXJhaXNlZC1idXR0b24ubWF0LWFjY2VudFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXJpcHBsZS1lbGVtZW50W19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1mYWIubWF0LWFjY2VudFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXJpcHBsZS1lbGVtZW50W19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1taW5pLWZhYi5tYXQtYWNjZW50W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtcmlwcGxlLWVsZW1lbnRbX25nY29udGVudC0lQ09NUCVde2JhY2tncm91bmQtY29sb3I6cmdiYSgyNTUsMjU1LDI1NSwuMSl9Lm1hdC1mbGF0LWJ1dHRvbi5tYXQtd2Fybltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXJpcHBsZS1lbGVtZW50W19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1yYWlzZWQtYnV0dG9uLm1hdC13YXJuW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtcmlwcGxlLWVsZW1lbnRbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWZhYi5tYXQtd2Fybltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXJpcHBsZS1lbGVtZW50W19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1taW5pLWZhYi5tYXQtd2Fybltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXJpcHBsZS1lbGVtZW50W19uZ2NvbnRlbnQtJUNPTVAlXXtiYWNrZ3JvdW5kLWNvbG9yOnJnYmEoMjU1LDI1NSwyNTUsLjEpfS5tYXQtc3Ryb2tlZC1idXR0b25bX25nY29udGVudC0lQ09NUCVdOm5vdChbY2xhc3MqPW1hdC1lbGV2YXRpb24tel0pLCAubWF0LWZsYXQtYnV0dG9uW19uZ2NvbnRlbnQtJUNPTVAlXTpub3QoW2NsYXNzKj1tYXQtZWxldmF0aW9uLXpdKXtib3gtc2hhZG93OjBweCAwcHggMHB4IDBweCByZ2JhKDAsIDAsIDAsIDAuMiksMHB4IDBweCAwcHggMHB4IHJnYmEoMCwgMCwgMCwgMC4xNCksMHB4IDBweCAwcHggMHB4IHJnYmEoMCwgMCwgMCwgMC4xMil9Lm1hdC1yYWlzZWQtYnV0dG9uW19uZ2NvbnRlbnQtJUNPTVAlXTpub3QoW2NsYXNzKj1tYXQtZWxldmF0aW9uLXpdKXtib3gtc2hhZG93OjBweCAzcHggMXB4IC0ycHggcmdiYSgwLCAwLCAwLCAwLjIpLDBweCAycHggMnB4IDBweCByZ2JhKDAsIDAsIDAsIDAuMTQpLDBweCAxcHggNXB4IDBweCByZ2JhKDAsIDAsIDAsIDAuMTIpfS5tYXQtcmFpc2VkLWJ1dHRvbltfbmdjb250ZW50LSVDT01QJV06bm90KC5tYXQtYnV0dG9uLWRpc2FibGVkKTphY3RpdmU6bm90KFtjbGFzcyo9bWF0LWVsZXZhdGlvbi16XSl7Ym94LXNoYWRvdzowcHggNXB4IDVweCAtM3B4IHJnYmEoMCwgMCwgMCwgMC4yKSwwcHggOHB4IDEwcHggMXB4IHJnYmEoMCwgMCwgMCwgMC4xNCksMHB4IDNweCAxNHB4IDJweCByZ2JhKDAsIDAsIDAsIDAuMTIpfS5tYXQtcmFpc2VkLWJ1dHRvbi5tYXQtYnV0dG9uLWRpc2FibGVkW19uZ2NvbnRlbnQtJUNPTVAlXTpub3QoW2NsYXNzKj1tYXQtZWxldmF0aW9uLXpdKXtib3gtc2hhZG93OjBweCAwcHggMHB4IDBweCByZ2JhKDAsIDAsIDAsIDAuMiksMHB4IDBweCAwcHggMHB4IHJnYmEoMCwgMCwgMCwgMC4xNCksMHB4IDBweCAwcHggMHB4IHJnYmEoMCwgMCwgMCwgMC4xMil9Lm1hdC1mYWJbX25nY29udGVudC0lQ09NUCVdOm5vdChbY2xhc3MqPW1hdC1lbGV2YXRpb24tel0pLCAubWF0LW1pbmktZmFiW19uZ2NvbnRlbnQtJUNPTVAlXTpub3QoW2NsYXNzKj1tYXQtZWxldmF0aW9uLXpdKXtib3gtc2hhZG93OjBweCAzcHggNXB4IC0xcHggcmdiYSgwLCAwLCAwLCAwLjIpLDBweCA2cHggMTBweCAwcHggcmdiYSgwLCAwLCAwLCAwLjE0KSwwcHggMXB4IDE4cHggMHB4IHJnYmEoMCwgMCwgMCwgMC4xMil9Lm1hdC1mYWJbX25nY29udGVudC0lQ09NUCVdOm5vdCgubWF0LWJ1dHRvbi1kaXNhYmxlZCk6YWN0aXZlOm5vdChbY2xhc3MqPW1hdC1lbGV2YXRpb24tel0pLCAubWF0LW1pbmktZmFiW19uZ2NvbnRlbnQtJUNPTVAlXTpub3QoLm1hdC1idXR0b24tZGlzYWJsZWQpOmFjdGl2ZTpub3QoW2NsYXNzKj1tYXQtZWxldmF0aW9uLXpdKXtib3gtc2hhZG93OjBweCA3cHggOHB4IC00cHggcmdiYSgwLCAwLCAwLCAwLjIpLDBweCAxMnB4IDE3cHggMnB4IHJnYmEoMCwgMCwgMCwgMC4xNCksMHB4IDVweCAyMnB4IDRweCByZ2JhKDAsIDAsIDAsIDAuMTIpfS5tYXQtZmFiLm1hdC1idXR0b24tZGlzYWJsZWRbX25nY29udGVudC0lQ09NUCVdOm5vdChbY2xhc3MqPW1hdC1lbGV2YXRpb24tel0pLCAubWF0LW1pbmktZmFiLm1hdC1idXR0b24tZGlzYWJsZWRbX25nY29udGVudC0lQ09NUCVdOm5vdChbY2xhc3MqPW1hdC1lbGV2YXRpb24tel0pe2JveC1zaGFkb3c6MHB4IDBweCAwcHggMHB4IHJnYmEoMCwgMCwgMCwgMC4yKSwwcHggMHB4IDBweCAwcHggcmdiYSgwLCAwLCAwLCAwLjE0KSwwcHggMHB4IDBweCAwcHggcmdiYSgwLCAwLCAwLCAwLjEyKX0ubWF0LWJ1dHRvbi10b2dnbGUtc3RhbmRhbG9uZVtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtYnV0dG9uLXRvZ2dsZS1ncm91cFtfbmdjb250ZW50LSVDT01QJV17Ym94LXNoYWRvdzowcHggM3B4IDFweCAtMnB4IHJnYmEoMCwgMCwgMCwgMC4yKSwwcHggMnB4IDJweCAwcHggcmdiYSgwLCAwLCAwLCAwLjE0KSwwcHggMXB4IDVweCAwcHggcmdiYSgwLCAwLCAwLCAwLjEyKX0ubWF0LWJ1dHRvbi10b2dnbGUtc3RhbmRhbG9uZS5tYXQtYnV0dG9uLXRvZ2dsZS1hcHBlYXJhbmNlLXN0YW5kYXJkW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1idXR0b24tdG9nZ2xlLWdyb3VwLWFwcGVhcmFuY2Utc3RhbmRhcmRbX25nY29udGVudC0lQ09NUCVde2JveC1zaGFkb3c6bm9uZX0ubWF0LWJ1dHRvbi10b2dnbGVbX25nY29udGVudC0lQ09NUCVde2NvbG9yOnJnYmEoMCwwLDAsLjM4KX0ubWF0LWJ1dHRvbi10b2dnbGVbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1idXR0b24tdG9nZ2xlLWZvY3VzLW92ZXJsYXlbX25nY29udGVudC0lQ09NUCVde2JhY2tncm91bmQtY29sb3I6cmdiYSgwLDAsMCwuMTIpfS5tYXQtYnV0dG9uLXRvZ2dsZS1hcHBlYXJhbmNlLXN0YW5kYXJkW19uZ2NvbnRlbnQtJUNPTVAlXXtjb2xvcjojMjEyMTIxO2JhY2tncm91bmQ6I2ZmZn0ubWF0LWJ1dHRvbi10b2dnbGUtYXBwZWFyYW5jZS1zdGFuZGFyZFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWJ1dHRvbi10b2dnbGUtZm9jdXMtb3ZlcmxheVtfbmdjb250ZW50LSVDT01QJV17YmFja2dyb3VuZC1jb2xvcjojMDAwfS5tYXQtYnV0dG9uLXRvZ2dsZS1ncm91cC1hcHBlYXJhbmNlLXN0YW5kYXJkW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtYnV0dG9uLXRvZ2dsZVtfbmdjb250ZW50LSVDT01QJV0gKyAubWF0LWJ1dHRvbi10b2dnbGVbX25nY29udGVudC0lQ09NUCVde2JvcmRlci1sZWZ0OnNvbGlkIDFweCByZ2JhKDAsMCwwLC4xMil9W2Rpcj1ydGxdW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtYnV0dG9uLXRvZ2dsZS1ncm91cC1hcHBlYXJhbmNlLXN0YW5kYXJkW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtYnV0dG9uLXRvZ2dsZVtfbmdjb250ZW50LSVDT01QJV0gKyAubWF0LWJ1dHRvbi10b2dnbGVbX25nY29udGVudC0lQ09NUCVde2JvcmRlci1sZWZ0Om5vbmU7Ym9yZGVyLXJpZ2h0OnNvbGlkIDFweCByZ2JhKDAsMCwwLC4xMil9Lm1hdC1idXR0b24tdG9nZ2xlLWdyb3VwLWFwcGVhcmFuY2Utc3RhbmRhcmQubWF0LWJ1dHRvbi10b2dnbGUtdmVydGljYWxbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1idXR0b24tdG9nZ2xlW19uZ2NvbnRlbnQtJUNPTVAlXSArIC5tYXQtYnV0dG9uLXRvZ2dsZVtfbmdjb250ZW50LSVDT01QJV17Ym9yZGVyLWxlZnQ6bm9uZTtib3JkZXItcmlnaHQ6bm9uZTtib3JkZXItdG9wOnNvbGlkIDFweCByZ2JhKDAsMCwwLC4xMil9Lm1hdC1idXR0b24tdG9nZ2xlLWNoZWNrZWRbX25nY29udGVudC0lQ09NUCVde2JhY2tncm91bmQtY29sb3I6I2UwZTBlMDtjb2xvcjojNjE2MTYxfS5tYXQtYnV0dG9uLXRvZ2dsZS1jaGVja2VkLm1hdC1idXR0b24tdG9nZ2xlLWFwcGVhcmFuY2Utc3RhbmRhcmRbX25nY29udGVudC0lQ09NUCVde2NvbG9yOiMyMTIxMjF9Lm1hdC1idXR0b24tdG9nZ2xlLWRpc2FibGVkW19uZ2NvbnRlbnQtJUNPTVAlXXtjb2xvcjpyZ2JhKDAsMCwwLC4yNik7YmFja2dyb3VuZC1jb2xvcjojZWVlfS5tYXQtYnV0dG9uLXRvZ2dsZS1kaXNhYmxlZC5tYXQtYnV0dG9uLXRvZ2dsZS1hcHBlYXJhbmNlLXN0YW5kYXJkW19uZ2NvbnRlbnQtJUNPTVAlXXtiYWNrZ3JvdW5kOiNmZmZ9Lm1hdC1idXR0b24tdG9nZ2xlLWRpc2FibGVkLm1hdC1idXR0b24tdG9nZ2xlLWNoZWNrZWRbX25nY29udGVudC0lQ09NUCVde2JhY2tncm91bmQtY29sb3I6I2JkYmRiZH0ubWF0LWJ1dHRvbi10b2dnbGUtc3RhbmRhbG9uZS5tYXQtYnV0dG9uLXRvZ2dsZS1hcHBlYXJhbmNlLXN0YW5kYXJkW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1idXR0b24tdG9nZ2xlLWdyb3VwLWFwcGVhcmFuY2Utc3RhbmRhcmRbX25nY29udGVudC0lQ09NUCVde2JvcmRlcjpzb2xpZCAxcHggcmdiYSgwLDAsMCwuMTIpfS5tYXQtYnV0dG9uLXRvZ2dsZS1hcHBlYXJhbmNlLXN0YW5kYXJkW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtYnV0dG9uLXRvZ2dsZS1sYWJlbC1jb250ZW50W19uZ2NvbnRlbnQtJUNPTVAlXXtsaW5lLWhlaWdodDo0OHB4fS5tYXQtY2FyZFtfbmdjb250ZW50LSVDT01QJV17YmFja2dyb3VuZDojZmZmO2NvbG9yOiMyMTIxMjF9Lm1hdC1jYXJkW19uZ2NvbnRlbnQtJUNPTVAlXTpub3QoW2NsYXNzKj1tYXQtZWxldmF0aW9uLXpdKXtib3gtc2hhZG93OjBweCAycHggMXB4IC0xcHggcmdiYSgwLCAwLCAwLCAwLjIpLDBweCAxcHggMXB4IDBweCByZ2JhKDAsIDAsIDAsIDAuMTQpLDBweCAxcHggM3B4IDBweCByZ2JhKDAsIDAsIDAsIDAuMTIpfS5tYXQtY2FyZC5tYXQtY2FyZC1mbGF0W19uZ2NvbnRlbnQtJUNPTVAlXTpub3QoW2NsYXNzKj1tYXQtZWxldmF0aW9uLXpdKXtib3gtc2hhZG93OjBweCAwcHggMHB4IDBweCByZ2JhKDAsIDAsIDAsIDAuMiksMHB4IDBweCAwcHggMHB4IHJnYmEoMCwgMCwgMCwgMC4xNCksMHB4IDBweCAwcHggMHB4IHJnYmEoMCwgMCwgMCwgMC4xMil9Lm1hdC1jYXJkLXN1YnRpdGxlW19uZ2NvbnRlbnQtJUNPTVAlXXtjb2xvcjojNjE2MTYxfS5tYXQtY2hlY2tib3gtZnJhbWVbX25nY29udGVudC0lQ09NUCVde2JvcmRlci1jb2xvcjojNjE2MTYxfS5tYXQtY2hlY2tib3gtY2hlY2ttYXJrW19uZ2NvbnRlbnQtJUNPTVAlXXtmaWxsOiNmYWZhZmF9Lm1hdC1jaGVja2JveC1jaGVja21hcmstcGF0aFtfbmdjb250ZW50LSVDT01QJV17c3Ryb2tlOiNmYWZhZmEgIWltcG9ydGFudH0ubWF0LWNoZWNrYm94LW1peGVkbWFya1tfbmdjb250ZW50LSVDT01QJV17YmFja2dyb3VuZC1jb2xvcjojZmFmYWZhfS5tYXQtY2hlY2tib3gtaW5kZXRlcm1pbmF0ZS5tYXQtcHJpbWFyeVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWNoZWNrYm94LWJhY2tncm91bmRbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWNoZWNrYm94LWNoZWNrZWQubWF0LXByaW1hcnlbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1jaGVja2JveC1iYWNrZ3JvdW5kW19uZ2NvbnRlbnQtJUNPTVAlXXtiYWNrZ3JvdW5kLWNvbG9yOiNmNTdjMDB9Lm1hdC1jaGVja2JveC1pbmRldGVybWluYXRlLm1hdC1hY2NlbnRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1jaGVja2JveC1iYWNrZ3JvdW5kW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1jaGVja2JveC1jaGVja2VkLm1hdC1hY2NlbnRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1jaGVja2JveC1iYWNrZ3JvdW5kW19uZ2NvbnRlbnQtJUNPTVAlXXtiYWNrZ3JvdW5kLWNvbG9yOiNmZjk4MDB9Lm1hdC1jaGVja2JveC1pbmRldGVybWluYXRlLm1hdC13YXJuW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtY2hlY2tib3gtYmFja2dyb3VuZFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtY2hlY2tib3gtY2hlY2tlZC5tYXQtd2Fybltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWNoZWNrYm94LWJhY2tncm91bmRbX25nY29udGVudC0lQ09NUCVde2JhY2tncm91bmQtY29sb3I6I2Y0NDMzNn0ubWF0LWNoZWNrYm94LWRpc2FibGVkLm1hdC1jaGVja2JveC1jaGVja2VkW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtY2hlY2tib3gtYmFja2dyb3VuZFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtY2hlY2tib3gtZGlzYWJsZWQubWF0LWNoZWNrYm94LWluZGV0ZXJtaW5hdGVbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1jaGVja2JveC1iYWNrZ3JvdW5kW19uZ2NvbnRlbnQtJUNPTVAlXXtiYWNrZ3JvdW5kLWNvbG9yOiNiMGIwYjB9Lm1hdC1jaGVja2JveC1kaXNhYmxlZFtfbmdjb250ZW50LSVDT01QJV06bm90KC5tYXQtY2hlY2tib3gtY2hlY2tlZCkgICAubWF0LWNoZWNrYm94LWZyYW1lW19uZ2NvbnRlbnQtJUNPTVAlXXtib3JkZXItY29sb3I6I2IwYjBiMH0ubWF0LWNoZWNrYm94LWRpc2FibGVkW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtY2hlY2tib3gtbGFiZWxbX25nY29udGVudC0lQ09NUCVde2NvbG9yOiM2MTYxNjF9Lm1hdC1jaGVja2JveFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXJpcHBsZS1lbGVtZW50W19uZ2NvbnRlbnQtJUNPTVAlXXtiYWNrZ3JvdW5kLWNvbG9yOiMwMDB9Lm1hdC1jaGVja2JveC1jaGVja2VkW19uZ2NvbnRlbnQtJUNPTVAlXTpub3QoLm1hdC1jaGVja2JveC1kaXNhYmxlZCkubWF0LXByaW1hcnkgICAubWF0LXJpcHBsZS1lbGVtZW50W19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1jaGVja2JveFtfbmdjb250ZW50LSVDT01QJV06YWN0aXZlOm5vdCgubWF0LWNoZWNrYm94LWRpc2FibGVkKS5tYXQtcHJpbWFyeSAgIC5tYXQtcmlwcGxlLWVsZW1lbnRbX25nY29udGVudC0lQ09NUCVde2JhY2tncm91bmQ6I2Y1N2MwMH0ubWF0LWNoZWNrYm94LWNoZWNrZWRbX25nY29udGVudC0lQ09NUCVdOm5vdCgubWF0LWNoZWNrYm94LWRpc2FibGVkKS5tYXQtYWNjZW50ICAgLm1hdC1yaXBwbGUtZWxlbWVudFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtY2hlY2tib3hbX25nY29udGVudC0lQ09NUCVdOmFjdGl2ZTpub3QoLm1hdC1jaGVja2JveC1kaXNhYmxlZCkubWF0LWFjY2VudCAgIC5tYXQtcmlwcGxlLWVsZW1lbnRbX25nY29udGVudC0lQ09NUCVde2JhY2tncm91bmQ6I2ZmOTgwMH0ubWF0LWNoZWNrYm94LWNoZWNrZWRbX25nY29udGVudC0lQ09NUCVdOm5vdCgubWF0LWNoZWNrYm94LWRpc2FibGVkKS5tYXQtd2FybiAgIC5tYXQtcmlwcGxlLWVsZW1lbnRbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWNoZWNrYm94W19uZ2NvbnRlbnQtJUNPTVAlXTphY3RpdmU6bm90KC5tYXQtY2hlY2tib3gtZGlzYWJsZWQpLm1hdC13YXJuICAgLm1hdC1yaXBwbGUtZWxlbWVudFtfbmdjb250ZW50LSVDT01QJV17YmFja2dyb3VuZDojZjQ0MzM2fS5tYXQtY2hpcC5tYXQtc3RhbmRhcmQtY2hpcFtfbmdjb250ZW50LSVDT01QJV17YmFja2dyb3VuZC1jb2xvcjojZTBlMGUwO2NvbG9yOiMyMTIxMjF9Lm1hdC1jaGlwLm1hdC1zdGFuZGFyZC1jaGlwW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtY2hpcC1yZW1vdmVbX25nY29udGVudC0lQ09NUCVde2NvbG9yOiMyMTIxMjE7b3BhY2l0eTouNH0ubWF0LWNoaXAubWF0LXN0YW5kYXJkLWNoaXBbX25nY29udGVudC0lQ09NUCVdOm5vdCgubWF0LWNoaXAtZGlzYWJsZWQpOmFjdGl2ZXtib3gtc2hhZG93OjBweCAzcHggM3B4IC0ycHggcmdiYSgwLCAwLCAwLCAwLjIpLDBweCAzcHggNHB4IDBweCByZ2JhKDAsIDAsIDAsIDAuMTQpLDBweCAxcHggOHB4IDBweCByZ2JhKDAsIDAsIDAsIDAuMTIpfS5tYXQtY2hpcC5tYXQtc3RhbmRhcmQtY2hpcFtfbmdjb250ZW50LSVDT01QJV06bm90KC5tYXQtY2hpcC1kaXNhYmxlZCkgICAubWF0LWNoaXAtcmVtb3ZlW19uZ2NvbnRlbnQtJUNPTVAlXTpob3ZlcntvcGFjaXR5Oi41NH0ubWF0LWNoaXAubWF0LXN0YW5kYXJkLWNoaXAubWF0LWNoaXAtZGlzYWJsZWRbX25nY29udGVudC0lQ09NUCVde29wYWNpdHk6LjR9Lm1hdC1jaGlwLm1hdC1zdGFuZGFyZC1jaGlwW19uZ2NvbnRlbnQtJUNPTVAlXTo6YWZ0ZXJ7YmFja2dyb3VuZDojMDAwfS5tYXQtY2hpcC5tYXQtc3RhbmRhcmQtY2hpcC5tYXQtY2hpcC1zZWxlY3RlZC5tYXQtcHJpbWFyeVtfbmdjb250ZW50LSVDT01QJV17YmFja2dyb3VuZC1jb2xvcjojZjU3YzAwO2NvbG9yOiNmZmZ9Lm1hdC1jaGlwLm1hdC1zdGFuZGFyZC1jaGlwLm1hdC1jaGlwLXNlbGVjdGVkLm1hdC1wcmltYXJ5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtY2hpcC1yZW1vdmVbX25nY29udGVudC0lQ09NUCVde2NvbG9yOiNmZmY7b3BhY2l0eTouNH0ubWF0LWNoaXAubWF0LXN0YW5kYXJkLWNoaXAubWF0LWNoaXAtc2VsZWN0ZWQubWF0LXByaW1hcnlbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1yaXBwbGUtZWxlbWVudFtfbmdjb250ZW50LSVDT01QJV17YmFja2dyb3VuZC1jb2xvcjpyZ2JhKDI1NSwyNTUsMjU1LC4xKX0ubWF0LWNoaXAubWF0LXN0YW5kYXJkLWNoaXAubWF0LWNoaXAtc2VsZWN0ZWQubWF0LXdhcm5bX25nY29udGVudC0lQ09NUCVde2JhY2tncm91bmQtY29sb3I6I2Y0NDMzNjtjb2xvcjojZmZmfS5tYXQtY2hpcC5tYXQtc3RhbmRhcmQtY2hpcC5tYXQtY2hpcC1zZWxlY3RlZC5tYXQtd2Fybltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWNoaXAtcmVtb3ZlW19uZ2NvbnRlbnQtJUNPTVAlXXtjb2xvcjojZmZmO29wYWNpdHk6LjR9Lm1hdC1jaGlwLm1hdC1zdGFuZGFyZC1jaGlwLm1hdC1jaGlwLXNlbGVjdGVkLm1hdC13YXJuW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtcmlwcGxlLWVsZW1lbnRbX25nY29udGVudC0lQ09NUCVde2JhY2tncm91bmQtY29sb3I6cmdiYSgyNTUsMjU1LDI1NSwuMSl9Lm1hdC1jaGlwLm1hdC1zdGFuZGFyZC1jaGlwLm1hdC1jaGlwLXNlbGVjdGVkLm1hdC1hY2NlbnRbX25nY29udGVudC0lQ09NUCVde2JhY2tncm91bmQtY29sb3I6I2ZmOTgwMDtjb2xvcjojZmZmfS5tYXQtY2hpcC5tYXQtc3RhbmRhcmQtY2hpcC5tYXQtY2hpcC1zZWxlY3RlZC5tYXQtYWNjZW50W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtY2hpcC1yZW1vdmVbX25nY29udGVudC0lQ09NUCVde2NvbG9yOiNmZmY7b3BhY2l0eTouNH0ubWF0LWNoaXAubWF0LXN0YW5kYXJkLWNoaXAubWF0LWNoaXAtc2VsZWN0ZWQubWF0LWFjY2VudFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXJpcHBsZS1lbGVtZW50W19uZ2NvbnRlbnQtJUNPTVAlXXtiYWNrZ3JvdW5kLWNvbG9yOnJnYmEoMjU1LDI1NSwyNTUsLjEpfS5tYXQtdGFibGVbX25nY29udGVudC0lQ09NUCVde2JhY2tncm91bmQ6I2ZmZn0ubWF0LXRhYmxlW19uZ2NvbnRlbnQtJUNPTVAlXSAgIHRoZWFkW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10YWJsZVtfbmdjb250ZW50LSVDT01QJV0gICB0Ym9keVtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdGFibGVbX25nY29udGVudC0lQ09NUCVdICAgdGZvb3RbX25nY29udGVudC0lQ09NUCVdLCBtYXQtaGVhZGVyLXJvd1tfbmdjb250ZW50LSVDT01QJV0sIG1hdC1yb3dbX25nY29udGVudC0lQ09NUCVdLCBtYXQtZm9vdGVyLXJvd1tfbmdjb250ZW50LSVDT01QJV0sIFttYXQtaGVhZGVyLXJvd11bX25nY29udGVudC0lQ09NUCVdLCBbbWF0LXJvd11bX25nY29udGVudC0lQ09NUCVdLCBbbWF0LWZvb3Rlci1yb3ddW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10YWJsZS1zdGlja3lbX25nY29udGVudC0lQ09NUCVde2JhY2tncm91bmQ6aW5oZXJpdH1tYXQtcm93W19uZ2NvbnRlbnQtJUNPTVAlXSwgbWF0LWhlYWRlci1yb3dbX25nY29udGVudC0lQ09NUCVdLCBtYXQtZm9vdGVyLXJvd1tfbmdjb250ZW50LSVDT01QJV0sIHRoLm1hdC1oZWFkZXItY2VsbFtfbmdjb250ZW50LSVDT01QJV0sIHRkLm1hdC1jZWxsW19uZ2NvbnRlbnQtJUNPTVAlXSwgdGQubWF0LWZvb3Rlci1jZWxsW19uZ2NvbnRlbnQtJUNPTVAlXXtib3JkZXItYm90dG9tLWNvbG9yOnJnYmEoMCwwLDAsLjEyKX0ubWF0LWhlYWRlci1jZWxsW19uZ2NvbnRlbnQtJUNPTVAlXXtjb2xvcjojNjE2MTYxfS5tYXQtY2VsbFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtZm9vdGVyLWNlbGxbX25nY29udGVudC0lQ09NUCVde2NvbG9yOiMyMTIxMjF9Lm1hdC1jYWxlbmRhci1hcnJvd1tfbmdjb250ZW50LSVDT01QJV17Ym9yZGVyLXRvcC1jb2xvcjpyZ2JhKDAsMCwwLC41NCl9Lm1hdC1kYXRlcGlja2VyLXRvZ2dsZVtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtZGF0ZXBpY2tlci1jb250ZW50W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtY2FsZW5kYXItbmV4dC1idXR0b25bX25nY29udGVudC0lQ09NUCVdLCAubWF0LWRhdGVwaWNrZXItY29udGVudFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWNhbGVuZGFyLXByZXZpb3VzLWJ1dHRvbltfbmdjb250ZW50LSVDT01QJV17Y29sb3I6cmdiYSgwLDAsMCwuNTQpfS5tYXQtY2FsZW5kYXItdGFibGUtaGVhZGVyW19uZ2NvbnRlbnQtJUNPTVAlXXtjb2xvcjpyZ2JhKDAsMCwwLC4zOCl9Lm1hdC1jYWxlbmRhci10YWJsZS1oZWFkZXItZGl2aWRlcltfbmdjb250ZW50LSVDT01QJV06OmFmdGVye2JhY2tncm91bmQ6cmdiYSgwLDAsMCwuMTIpfS5tYXQtY2FsZW5kYXItYm9keS1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17Y29sb3I6IzYxNjE2MX0ubWF0LWNhbGVuZGFyLWJvZHktY2VsbC1jb250ZW50W19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1kYXRlLXJhbmdlLWlucHV0LXNlcGFyYXRvcltfbmdjb250ZW50LSVDT01QJV17Y29sb3I6IzIxMjEyMTtib3JkZXItY29sb3I6dHJhbnNwYXJlbnR9Lm1hdC1jYWxlbmRhci1ib2R5LWRpc2FibGVkW19uZ2NvbnRlbnQtJUNPTVAlXSA+IC5tYXQtY2FsZW5kYXItYm9keS1jZWxsLWNvbnRlbnRbX25nY29udGVudC0lQ09NUCVdOm5vdCgubWF0LWNhbGVuZGFyLWJvZHktc2VsZWN0ZWQpOm5vdCgubWF0LWNhbGVuZGFyLWJvZHktY29tcGFyaXNvbi1pZGVudGljYWwpe2NvbG9yOiM3NTc1NzV9Lm1hdC1mb3JtLWZpZWxkLWRpc2FibGVkW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZGF0ZS1yYW5nZS1pbnB1dC1zZXBhcmF0b3JbX25nY29udGVudC0lQ09NUCVde2NvbG9yOiM3NTc1NzV9Lm1hdC1jYWxlbmRhci1ib2R5LWNlbGxbX25nY29udGVudC0lQ09NUCVdOm5vdCgubWF0LWNhbGVuZGFyLWJvZHktZGlzYWJsZWQpOmhvdmVyID4gLm1hdC1jYWxlbmRhci1ib2R5LWNlbGwtY29udGVudFtfbmdjb250ZW50LSVDT01QJV06bm90KC5tYXQtY2FsZW5kYXItYm9keS1zZWxlY3RlZCk6bm90KC5tYXQtY2FsZW5kYXItYm9keS1jb21wYXJpc29uLWlkZW50aWNhbCksIC5jZGsta2V5Ym9hcmQtZm9jdXNlZFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWNhbGVuZGFyLWJvZHktYWN0aXZlW19uZ2NvbnRlbnQtJUNPTVAlXSA+IC5tYXQtY2FsZW5kYXItYm9keS1jZWxsLWNvbnRlbnRbX25nY29udGVudC0lQ09NUCVdOm5vdCgubWF0LWNhbGVuZGFyLWJvZHktc2VsZWN0ZWQpOm5vdCgubWF0LWNhbGVuZGFyLWJvZHktY29tcGFyaXNvbi1pZGVudGljYWwpLCAuY2RrLXByb2dyYW0tZm9jdXNlZFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWNhbGVuZGFyLWJvZHktYWN0aXZlW19uZ2NvbnRlbnQtJUNPTVAlXSA+IC5tYXQtY2FsZW5kYXItYm9keS1jZWxsLWNvbnRlbnRbX25nY29udGVudC0lQ09NUCVdOm5vdCgubWF0LWNhbGVuZGFyLWJvZHktc2VsZWN0ZWQpOm5vdCgubWF0LWNhbGVuZGFyLWJvZHktY29tcGFyaXNvbi1pZGVudGljYWwpe2JhY2tncm91bmQtY29sb3I6cmdiYSgwLDAsMCwuMDQpfS5tYXQtY2FsZW5kYXItYm9keS1pbi1wcmV2aWV3W19uZ2NvbnRlbnQtJUNPTVAlXXtjb2xvcjpyZ2JhKDAsMCwwLC4yNCl9Lm1hdC1jYWxlbmRhci1ib2R5LXRvZGF5W19uZ2NvbnRlbnQtJUNPTVAlXTpub3QoLm1hdC1jYWxlbmRhci1ib2R5LXNlbGVjdGVkKTpub3QoLm1hdC1jYWxlbmRhci1ib2R5LWNvbXBhcmlzb24taWRlbnRpY2FsKXtib3JkZXItY29sb3I6cmdiYSgwLDAsMCwuMzgpfS5tYXQtY2FsZW5kYXItYm9keS1kaXNhYmxlZFtfbmdjb250ZW50LSVDT01QJV0gPiAubWF0LWNhbGVuZGFyLWJvZHktdG9kYXlbX25nY29udGVudC0lQ09NUCVdOm5vdCgubWF0LWNhbGVuZGFyLWJvZHktc2VsZWN0ZWQpOm5vdCgubWF0LWNhbGVuZGFyLWJvZHktY29tcGFyaXNvbi1pZGVudGljYWwpe2JvcmRlci1jb2xvcjpyZ2JhKDAsMCwwLC4xOCl9Lm1hdC1jYWxlbmRhci1ib2R5LWluLXJhbmdlW19uZ2NvbnRlbnQtJUNPTVAlXTo6YmVmb3Jle2JhY2tncm91bmQ6cmdiYSgyNDUsMTI0LDAsLjIpfS5tYXQtY2FsZW5kYXItYm9keS1jb21wYXJpc29uLWlkZW50aWNhbFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtY2FsZW5kYXItYm9keS1pbi1jb21wYXJpc29uLXJhbmdlW19uZ2NvbnRlbnQtJUNPTVAlXTo6YmVmb3Jle2JhY2tncm91bmQ6cmdiYSgyNDksMTcxLDAsLjIpfS5tYXQtY2FsZW5kYXItYm9keS1jb21wYXJpc29uLWJyaWRnZS1zdGFydFtfbmdjb250ZW50LSVDT01QJV06OmJlZm9yZSwgW2Rpcj1ydGxdW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtY2FsZW5kYXItYm9keS1jb21wYXJpc29uLWJyaWRnZS1lbmRbX25nY29udGVudC0lQ09NUCVdOjpiZWZvcmV7YmFja2dyb3VuZDpsaW5lYXItZ3JhZGllbnQodG8gcmlnaHQsIHJnYmEoMjQ1LCAxMjQsIDAsIDAuMikgNTAlLCByZ2JhKDI0OSwgMTcxLCAwLCAwLjIpIDUwJSl9Lm1hdC1jYWxlbmRhci1ib2R5LWNvbXBhcmlzb24tYnJpZGdlLWVuZFtfbmdjb250ZW50LSVDT01QJV06OmJlZm9yZSwgW2Rpcj1ydGxdW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtY2FsZW5kYXItYm9keS1jb21wYXJpc29uLWJyaWRnZS1zdGFydFtfbmdjb250ZW50LSVDT01QJV06OmJlZm9yZXtiYWNrZ3JvdW5kOmxpbmVhci1ncmFkaWVudCh0byBsZWZ0LCByZ2JhKDI0NSwgMTI0LCAwLCAwLjIpIDUwJSwgcmdiYSgyNDksIDE3MSwgMCwgMC4yKSA1MCUpfS5tYXQtY2FsZW5kYXItYm9keS1pbi1yYW5nZVtfbmdjb250ZW50LSVDT01QJV0gPiAubWF0LWNhbGVuZGFyLWJvZHktY29tcGFyaXNvbi1pZGVudGljYWxbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWNhbGVuZGFyLWJvZHktaW4tY29tcGFyaXNvbi1yYW5nZS5tYXQtY2FsZW5kYXItYm9keS1pbi1yYW5nZVtfbmdjb250ZW50LSVDT01QJV06OmFmdGVye2JhY2tncm91bmQ6I2E4ZGFiNX0ubWF0LWNhbGVuZGFyLWJvZHktY29tcGFyaXNvbi1pZGVudGljYWwubWF0LWNhbGVuZGFyLWJvZHktc2VsZWN0ZWRbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWNhbGVuZGFyLWJvZHktaW4tY29tcGFyaXNvbi1yYW5nZVtfbmdjb250ZW50LSVDT01QJV0gPiAubWF0LWNhbGVuZGFyLWJvZHktc2VsZWN0ZWRbX25nY29udGVudC0lQ09NUCVde2JhY2tncm91bmQ6IzQ2YTM1ZX0ubWF0LWNhbGVuZGFyLWJvZHktc2VsZWN0ZWRbX25nY29udGVudC0lQ09NUCVde2JhY2tncm91bmQtY29sb3I6I2Y1N2MwMDtjb2xvcjojZmZmfS5tYXQtY2FsZW5kYXItYm9keS1kaXNhYmxlZFtfbmdjb250ZW50LSVDT01QJV0gPiAubWF0LWNhbGVuZGFyLWJvZHktc2VsZWN0ZWRbX25nY29udGVudC0lQ09NUCVde2JhY2tncm91bmQtY29sb3I6cmdiYSgyNDUsMTI0LDAsLjQpfS5tYXQtY2FsZW5kYXItYm9keS10b2RheS5tYXQtY2FsZW5kYXItYm9keS1zZWxlY3RlZFtfbmdjb250ZW50LSVDT01QJV17Ym94LXNoYWRvdzppbnNldCAwIDAgMCAxcHggI2ZmZn0ubWF0LWRhdGVwaWNrZXItY29udGVudFtfbmdjb250ZW50LSVDT01QJV17Ym94LXNoYWRvdzowcHggMnB4IDRweCAtMXB4IHJnYmEoMCwgMCwgMCwgMC4yKSwwcHggNHB4IDVweCAwcHggcmdiYSgwLCAwLCAwLCAwLjE0KSwwcHggMXB4IDEwcHggMHB4IHJnYmEoMCwgMCwgMCwgMC4xMik7YmFja2dyb3VuZC1jb2xvcjojZmZmO2NvbG9yOiMyMTIxMjF9Lm1hdC1kYXRlcGlja2VyLWNvbnRlbnQubWF0LWFjY2VudFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWNhbGVuZGFyLWJvZHktaW4tcmFuZ2VbX25nY29udGVudC0lQ09NUCVdOjpiZWZvcmV7YmFja2dyb3VuZDpyZ2JhKDI1NSwxNTIsMCwuMil9Lm1hdC1kYXRlcGlja2VyLWNvbnRlbnQubWF0LWFjY2VudFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWNhbGVuZGFyLWJvZHktY29tcGFyaXNvbi1pZGVudGljYWxbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWRhdGVwaWNrZXItY29udGVudC5tYXQtYWNjZW50W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtY2FsZW5kYXItYm9keS1pbi1jb21wYXJpc29uLXJhbmdlW19uZ2NvbnRlbnQtJUNPTVAlXTo6YmVmb3Jle2JhY2tncm91bmQ6cmdiYSgyNDksMTcxLDAsLjIpfS5tYXQtZGF0ZXBpY2tlci1jb250ZW50Lm1hdC1hY2NlbnRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1jYWxlbmRhci1ib2R5LWNvbXBhcmlzb24tYnJpZGdlLXN0YXJ0W19uZ2NvbnRlbnQtJUNPTVAlXTo6YmVmb3JlLCAubWF0LWRhdGVwaWNrZXItY29udGVudC5tYXQtYWNjZW50W19uZ2NvbnRlbnQtJUNPTVAlXSAgIFtkaXI9cnRsXVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWNhbGVuZGFyLWJvZHktY29tcGFyaXNvbi1icmlkZ2UtZW5kW19uZ2NvbnRlbnQtJUNPTVAlXTo6YmVmb3Jle2JhY2tncm91bmQ6bGluZWFyLWdyYWRpZW50KHRvIHJpZ2h0LCByZ2JhKDI1NSwgMTUyLCAwLCAwLjIpIDUwJSwgcmdiYSgyNDksIDE3MSwgMCwgMC4yKSA1MCUpfS5tYXQtZGF0ZXBpY2tlci1jb250ZW50Lm1hdC1hY2NlbnRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1jYWxlbmRhci1ib2R5LWNvbXBhcmlzb24tYnJpZGdlLWVuZFtfbmdjb250ZW50LSVDT01QJV06OmJlZm9yZSwgLm1hdC1kYXRlcGlja2VyLWNvbnRlbnQubWF0LWFjY2VudFtfbmdjb250ZW50LSVDT01QJV0gICBbZGlyPXJ0bF1bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1jYWxlbmRhci1ib2R5LWNvbXBhcmlzb24tYnJpZGdlLXN0YXJ0W19uZ2NvbnRlbnQtJUNPTVAlXTo6YmVmb3Jle2JhY2tncm91bmQ6bGluZWFyLWdyYWRpZW50KHRvIGxlZnQsIHJnYmEoMjU1LCAxNTIsIDAsIDAuMikgNTAlLCByZ2JhKDI0OSwgMTcxLCAwLCAwLjIpIDUwJSl9Lm1hdC1kYXRlcGlja2VyLWNvbnRlbnQubWF0LWFjY2VudFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWNhbGVuZGFyLWJvZHktaW4tcmFuZ2VbX25nY29udGVudC0lQ09NUCVdID4gLm1hdC1jYWxlbmRhci1ib2R5LWNvbXBhcmlzb24taWRlbnRpY2FsW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1kYXRlcGlja2VyLWNvbnRlbnQubWF0LWFjY2VudFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWNhbGVuZGFyLWJvZHktaW4tY29tcGFyaXNvbi1yYW5nZS5tYXQtY2FsZW5kYXItYm9keS1pbi1yYW5nZVtfbmdjb250ZW50LSVDT01QJV06OmFmdGVye2JhY2tncm91bmQ6I2E4ZGFiNX0ubWF0LWRhdGVwaWNrZXItY29udGVudC5tYXQtYWNjZW50W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtY2FsZW5kYXItYm9keS1jb21wYXJpc29uLWlkZW50aWNhbC5tYXQtY2FsZW5kYXItYm9keS1zZWxlY3RlZFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtZGF0ZXBpY2tlci1jb250ZW50Lm1hdC1hY2NlbnRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1jYWxlbmRhci1ib2R5LWluLWNvbXBhcmlzb24tcmFuZ2VbX25nY29udGVudC0lQ09NUCVdID4gLm1hdC1jYWxlbmRhci1ib2R5LXNlbGVjdGVkW19uZ2NvbnRlbnQtJUNPTVAlXXtiYWNrZ3JvdW5kOiM0NmEzNWV9Lm1hdC1kYXRlcGlja2VyLWNvbnRlbnQubWF0LWFjY2VudFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWNhbGVuZGFyLWJvZHktc2VsZWN0ZWRbX25nY29udGVudC0lQ09NUCVde2JhY2tncm91bmQtY29sb3I6I2ZmOTgwMDtjb2xvcjojZmZmfS5tYXQtZGF0ZXBpY2tlci1jb250ZW50Lm1hdC1hY2NlbnRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1jYWxlbmRhci1ib2R5LWRpc2FibGVkW19uZ2NvbnRlbnQtJUNPTVAlXSA+IC5tYXQtY2FsZW5kYXItYm9keS1zZWxlY3RlZFtfbmdjb250ZW50LSVDT01QJV17YmFja2dyb3VuZC1jb2xvcjpyZ2JhKDI1NSwxNTIsMCwuNCl9Lm1hdC1kYXRlcGlja2VyLWNvbnRlbnQubWF0LWFjY2VudFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWNhbGVuZGFyLWJvZHktdG9kYXkubWF0LWNhbGVuZGFyLWJvZHktc2VsZWN0ZWRbX25nY29udGVudC0lQ09NUCVde2JveC1zaGFkb3c6aW5zZXQgMCAwIDAgMXB4ICNmZmZ9Lm1hdC1kYXRlcGlja2VyLWNvbnRlbnQubWF0LXdhcm5bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1jYWxlbmRhci1ib2R5LWluLXJhbmdlW19uZ2NvbnRlbnQtJUNPTVAlXTo6YmVmb3Jle2JhY2tncm91bmQ6cmdiYSgyNDQsNjcsNTQsLjIpfS5tYXQtZGF0ZXBpY2tlci1jb250ZW50Lm1hdC13YXJuW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtY2FsZW5kYXItYm9keS1jb21wYXJpc29uLWlkZW50aWNhbFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtZGF0ZXBpY2tlci1jb250ZW50Lm1hdC13YXJuW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtY2FsZW5kYXItYm9keS1pbi1jb21wYXJpc29uLXJhbmdlW19uZ2NvbnRlbnQtJUNPTVAlXTo6YmVmb3Jle2JhY2tncm91bmQ6cmdiYSgyNDksMTcxLDAsLjIpfS5tYXQtZGF0ZXBpY2tlci1jb250ZW50Lm1hdC13YXJuW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtY2FsZW5kYXItYm9keS1jb21wYXJpc29uLWJyaWRnZS1zdGFydFtfbmdjb250ZW50LSVDT01QJV06OmJlZm9yZSwgLm1hdC1kYXRlcGlja2VyLWNvbnRlbnQubWF0LXdhcm5bX25nY29udGVudC0lQ09NUCVdICAgW2Rpcj1ydGxdW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtY2FsZW5kYXItYm9keS1jb21wYXJpc29uLWJyaWRnZS1lbmRbX25nY29udGVudC0lQ09NUCVdOjpiZWZvcmV7YmFja2dyb3VuZDpsaW5lYXItZ3JhZGllbnQodG8gcmlnaHQsIHJnYmEoMjQ0LCA2NywgNTQsIDAuMikgNTAlLCByZ2JhKDI0OSwgMTcxLCAwLCAwLjIpIDUwJSl9Lm1hdC1kYXRlcGlja2VyLWNvbnRlbnQubWF0LXdhcm5bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1jYWxlbmRhci1ib2R5LWNvbXBhcmlzb24tYnJpZGdlLWVuZFtfbmdjb250ZW50LSVDT01QJV06OmJlZm9yZSwgLm1hdC1kYXRlcGlja2VyLWNvbnRlbnQubWF0LXdhcm5bX25nY29udGVudC0lQ09NUCVdICAgW2Rpcj1ydGxdW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtY2FsZW5kYXItYm9keS1jb21wYXJpc29uLWJyaWRnZS1zdGFydFtfbmdjb250ZW50LSVDT01QJV06OmJlZm9yZXtiYWNrZ3JvdW5kOmxpbmVhci1ncmFkaWVudCh0byBsZWZ0LCByZ2JhKDI0NCwgNjcsIDU0LCAwLjIpIDUwJSwgcmdiYSgyNDksIDE3MSwgMCwgMC4yKSA1MCUpfS5tYXQtZGF0ZXBpY2tlci1jb250ZW50Lm1hdC13YXJuW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtY2FsZW5kYXItYm9keS1pbi1yYW5nZVtfbmdjb250ZW50LSVDT01QJV0gPiAubWF0LWNhbGVuZGFyLWJvZHktY29tcGFyaXNvbi1pZGVudGljYWxbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWRhdGVwaWNrZXItY29udGVudC5tYXQtd2Fybltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWNhbGVuZGFyLWJvZHktaW4tY29tcGFyaXNvbi1yYW5nZS5tYXQtY2FsZW5kYXItYm9keS1pbi1yYW5nZVtfbmdjb250ZW50LSVDT01QJV06OmFmdGVye2JhY2tncm91bmQ6I2E4ZGFiNX0ubWF0LWRhdGVwaWNrZXItY29udGVudC5tYXQtd2Fybltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWNhbGVuZGFyLWJvZHktY29tcGFyaXNvbi1pZGVudGljYWwubWF0LWNhbGVuZGFyLWJvZHktc2VsZWN0ZWRbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWRhdGVwaWNrZXItY29udGVudC5tYXQtd2Fybltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWNhbGVuZGFyLWJvZHktaW4tY29tcGFyaXNvbi1yYW5nZVtfbmdjb250ZW50LSVDT01QJV0gPiAubWF0LWNhbGVuZGFyLWJvZHktc2VsZWN0ZWRbX25nY29udGVudC0lQ09NUCVde2JhY2tncm91bmQ6IzQ2YTM1ZX0ubWF0LWRhdGVwaWNrZXItY29udGVudC5tYXQtd2Fybltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWNhbGVuZGFyLWJvZHktc2VsZWN0ZWRbX25nY29udGVudC0lQ09NUCVde2JhY2tncm91bmQtY29sb3I6I2Y0NDMzNjtjb2xvcjojZmZmfS5tYXQtZGF0ZXBpY2tlci1jb250ZW50Lm1hdC13YXJuW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtY2FsZW5kYXItYm9keS1kaXNhYmxlZFtfbmdjb250ZW50LSVDT01QJV0gPiAubWF0LWNhbGVuZGFyLWJvZHktc2VsZWN0ZWRbX25nY29udGVudC0lQ09NUCVde2JhY2tncm91bmQtY29sb3I6cmdiYSgyNDQsNjcsNTQsLjQpfS5tYXQtZGF0ZXBpY2tlci1jb250ZW50Lm1hdC13YXJuW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtY2FsZW5kYXItYm9keS10b2RheS5tYXQtY2FsZW5kYXItYm9keS1zZWxlY3RlZFtfbmdjb250ZW50LSVDT01QJV17Ym94LXNoYWRvdzppbnNldCAwIDAgMCAxcHggI2ZmZn0ubWF0LWRhdGVwaWNrZXItY29udGVudC10b3VjaFtfbmdjb250ZW50LSVDT01QJV17Ym94LXNoYWRvdzowcHggMHB4IDBweCAwcHggcmdiYSgwLCAwLCAwLCAwLjIpLDBweCAwcHggMHB4IDBweCByZ2JhKDAsIDAsIDAsIDAuMTQpLDBweCAwcHggMHB4IDBweCByZ2JhKDAsIDAsIDAsIDAuMTIpfS5tYXQtZGF0ZXBpY2tlci10b2dnbGUtYWN0aXZlW19uZ2NvbnRlbnQtJUNPTVAlXXtjb2xvcjojZjU3YzAwfS5tYXQtZGF0ZXBpY2tlci10b2dnbGUtYWN0aXZlLm1hdC1hY2NlbnRbX25nY29udGVudC0lQ09NUCVde2NvbG9yOiNmZjk4MDB9Lm1hdC1kYXRlcGlja2VyLXRvZ2dsZS1hY3RpdmUubWF0LXdhcm5bX25nY29udGVudC0lQ09NUCVde2NvbG9yOiNmNDQzMzZ9Lm1hdC1kYXRlLXJhbmdlLWlucHV0LWlubmVyW2Rpc2FibGVkXVtfbmdjb250ZW50LSVDT01QJV17Y29sb3I6Izc1NzU3NX0ubWF0LWRpYWxvZy1jb250YWluZXJbX25nY29udGVudC0lQ09NUCVde2JveC1zaGFkb3c6MHB4IDExcHggMTVweCAtN3B4IHJnYmEoMCwgMCwgMCwgMC4yKSwwcHggMjRweCAzOHB4IDNweCByZ2JhKDAsIDAsIDAsIDAuMTQpLDBweCA5cHggNDZweCA4cHggcmdiYSgwLCAwLCAwLCAwLjEyKTtiYWNrZ3JvdW5kOiNmZmY7Y29sb3I6IzIxMjEyMX0ubWF0LWRpdmlkZXJbX25nY29udGVudC0lQ09NUCVde2JvcmRlci10b3AtY29sb3I6cmdiYSgwLDAsMCwuMTIpfS5tYXQtZGl2aWRlci12ZXJ0aWNhbFtfbmdjb250ZW50LSVDT01QJV17Ym9yZGVyLXJpZ2h0LWNvbG9yOnJnYmEoMCwwLDAsLjEyKX0ubWF0LWV4cGFuc2lvbi1wYW5lbFtfbmdjb250ZW50LSVDT01QJV17YmFja2dyb3VuZDojZmZmO2NvbG9yOiMyMTIxMjF9Lm1hdC1leHBhbnNpb24tcGFuZWxbX25nY29udGVudC0lQ09NUCVdOm5vdChbY2xhc3MqPW1hdC1lbGV2YXRpb24tel0pe2JveC1zaGFkb3c6MHB4IDNweCAxcHggLTJweCByZ2JhKDAsIDAsIDAsIDAuMiksMHB4IDJweCAycHggMHB4IHJnYmEoMCwgMCwgMCwgMC4xNCksMHB4IDFweCA1cHggMHB4IHJnYmEoMCwgMCwgMCwgMC4xMil9Lm1hdC1hY3Rpb24tcm93W19uZ2NvbnRlbnQtJUNPTVAlXXtib3JkZXItdG9wLWNvbG9yOnJnYmEoMCwwLDAsLjEyKX0ubWF0LWV4cGFuc2lvbi1wYW5lbFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWV4cGFuc2lvbi1wYW5lbC1oZWFkZXIuY2RrLWtleWJvYXJkLWZvY3VzZWRbX25nY29udGVudC0lQ09NUCVdOm5vdChbYXJpYS1kaXNhYmxlZD10cnVlXSksIC5tYXQtZXhwYW5zaW9uLXBhbmVsW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZXhwYW5zaW9uLXBhbmVsLWhlYWRlci5jZGstcHJvZ3JhbS1mb2N1c2VkW19uZ2NvbnRlbnQtJUNPTVAlXTpub3QoW2FyaWEtZGlzYWJsZWQ9dHJ1ZV0pLCAubWF0LWV4cGFuc2lvbi1wYW5lbFtfbmdjb250ZW50LSVDT01QJV06bm90KC5tYXQtZXhwYW5kZWQpICAgLm1hdC1leHBhbnNpb24tcGFuZWwtaGVhZGVyW19uZ2NvbnRlbnQtJUNPTVAlXTpob3Zlcjpub3QoW2FyaWEtZGlzYWJsZWQ9dHJ1ZV0pe2JhY2tncm91bmQ6cmdiYSgwLDAsMCwuMDQpfUBtZWRpYShob3Zlcjogbm9uZSl7Lm1hdC1leHBhbnNpb24tcGFuZWxbX25nY29udGVudC0lQ09NUCVdOm5vdCgubWF0LWV4cGFuZGVkKTpub3QoW2FyaWEtZGlzYWJsZWQ9dHJ1ZV0pICAgLm1hdC1leHBhbnNpb24tcGFuZWwtaGVhZGVyW19uZ2NvbnRlbnQtJUNPTVAlXTpob3ZlcntiYWNrZ3JvdW5kOiNmZmZ9fS5tYXQtZXhwYW5zaW9uLXBhbmVsLWhlYWRlci10aXRsZVtfbmdjb250ZW50LSVDT01QJV17Y29sb3I6IzIxMjEyMX0ubWF0LWV4cGFuc2lvbi1wYW5lbC1oZWFkZXItZGVzY3JpcHRpb25bX25nY29udGVudC0lQ09NUCVdLCAubWF0LWV4cGFuc2lvbi1pbmRpY2F0b3JbX25nY29udGVudC0lQ09NUCVdOjphZnRlcntjb2xvcjojNjE2MTYxfS5tYXQtZXhwYW5zaW9uLXBhbmVsLWhlYWRlclthcmlhLWRpc2FibGVkPXRydWVdW19uZ2NvbnRlbnQtJUNPTVAlXXtjb2xvcjpyZ2JhKDAsMCwwLC4yNil9Lm1hdC1leHBhbnNpb24tcGFuZWwtaGVhZGVyW2FyaWEtZGlzYWJsZWQ9dHJ1ZV1bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1leHBhbnNpb24tcGFuZWwtaGVhZGVyLXRpdGxlW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1leHBhbnNpb24tcGFuZWwtaGVhZGVyW2FyaWEtZGlzYWJsZWQ9dHJ1ZV1bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1leHBhbnNpb24tcGFuZWwtaGVhZGVyLWRlc2NyaXB0aW9uW19uZ2NvbnRlbnQtJUNPTVAlXXtjb2xvcjppbmhlcml0fS5tYXQtZXhwYW5zaW9uLXBhbmVsLWhlYWRlcltfbmdjb250ZW50LSVDT01QJV17aGVpZ2h0OjQ4cHh9Lm1hdC1leHBhbnNpb24tcGFuZWwtaGVhZGVyLm1hdC1leHBhbmRlZFtfbmdjb250ZW50LSVDT01QJV17aGVpZ2h0OjY0cHh9Lm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXtjb2xvcjpyZ2JhKDk3LDk3LDk3LC42KX0ubWF0LWhpbnRbX25nY29udGVudC0lQ09NUCVde2NvbG9yOnJnYmEoOTcsOTcsOTcsLjYpfS5tYXQtZm9ybS1maWVsZC5tYXQtZm9jdXNlZFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVde2NvbG9yOiNmNTdjMDB9Lm1hdC1mb3JtLWZpZWxkLm1hdC1mb2N1c2VkW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbC5tYXQtYWNjZW50W19uZ2NvbnRlbnQtJUNPTVAlXXtjb2xvcjojZmY5ODAwfS5tYXQtZm9ybS1maWVsZC5tYXQtZm9jdXNlZFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWwubWF0LXdhcm5bX25nY29udGVudC0lQ09NUCVde2NvbG9yOiNmNDQzMzZ9Lm1hdC1mb2N1c2VkW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1yZXF1aXJlZC1tYXJrZXJbX25nY29udGVudC0lQ09NUCVde2NvbG9yOiNmZjk4MDB9Lm1hdC1mb3JtLWZpZWxkLXJpcHBsZVtfbmdjb250ZW50LSVDT01QJV17YmFja2dyb3VuZC1jb2xvcjpyZ2JhKDAsMCwwLC44Nyl9Lm1hdC1mb3JtLWZpZWxkLm1hdC1mb2N1c2VkW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1yaXBwbGVbX25nY29udGVudC0lQ09NUCVde2JhY2tncm91bmQtY29sb3I6I2Y1N2MwMH0ubWF0LWZvcm0tZmllbGQubWF0LWZvY3VzZWRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLXJpcHBsZS5tYXQtYWNjZW50W19uZ2NvbnRlbnQtJUNPTVAlXXtiYWNrZ3JvdW5kLWNvbG9yOiNmZjk4MDB9Lm1hdC1mb3JtLWZpZWxkLm1hdC1mb2N1c2VkW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1yaXBwbGUubWF0LXdhcm5bX25nY29udGVudC0lQ09NUCVde2JhY2tncm91bmQtY29sb3I6I2Y0NDMzNn0ubWF0LWZvcm0tZmllbGQtdHlwZS1tYXQtbmF0aXZlLXNlbGVjdC5tYXQtZm9jdXNlZFtfbmdjb250ZW50LSVDT01QJV06bm90KC5tYXQtZm9ybS1maWVsZC1pbnZhbGlkKSAgIC5tYXQtZm9ybS1maWVsZC1pbmZpeFtfbmdjb250ZW50LSVDT01QJV06OmFmdGVye2NvbG9yOiNmNTdjMDB9Lm1hdC1mb3JtLWZpZWxkLXR5cGUtbWF0LW5hdGl2ZS1zZWxlY3QubWF0LWZvY3VzZWRbX25nY29udGVudC0lQ09NUCVdOm5vdCgubWF0LWZvcm0tZmllbGQtaW52YWxpZCkubWF0LWFjY2VudCAgIC5tYXQtZm9ybS1maWVsZC1pbmZpeFtfbmdjb250ZW50LSVDT01QJV06OmFmdGVye2NvbG9yOiNmZjk4MDB9Lm1hdC1mb3JtLWZpZWxkLXR5cGUtbWF0LW5hdGl2ZS1zZWxlY3QubWF0LWZvY3VzZWRbX25nY29udGVudC0lQ09NUCVdOm5vdCgubWF0LWZvcm0tZmllbGQtaW52YWxpZCkubWF0LXdhcm4gICAubWF0LWZvcm0tZmllbGQtaW5maXhbX25nY29udGVudC0lQ09NUCVdOjphZnRlcntjb2xvcjojZjQ0MzM2fS5tYXQtZm9ybS1maWVsZC5tYXQtZm9ybS1maWVsZC1pbnZhbGlkW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17Y29sb3I6I2Y0NDMzNn0ubWF0LWZvcm0tZmllbGQubWF0LWZvcm0tZmllbGQtaW52YWxpZFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWwubWF0LWFjY2VudFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtZm9ybS1maWVsZC5tYXQtZm9ybS1maWVsZC1pbnZhbGlkW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtcmVxdWlyZWQtbWFya2VyW19uZ2NvbnRlbnQtJUNPTVAlXXtjb2xvcjojZjQ0MzM2fS5tYXQtZm9ybS1maWVsZC5tYXQtZm9ybS1maWVsZC1pbnZhbGlkW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1yaXBwbGVbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWZvcm0tZmllbGQubWF0LWZvcm0tZmllbGQtaW52YWxpZFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtcmlwcGxlLm1hdC1hY2NlbnRbX25nY29udGVudC0lQ09NUCVde2JhY2tncm91bmQtY29sb3I6I2Y0NDMzNn0ubWF0LWVycm9yW19uZ2NvbnRlbnQtJUNPTVAlXXtjb2xvcjojZjQ0MzM2fS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWxlZ2FjeVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVde2NvbG9yOiM2MTYxNjF9Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtbGVnYWN5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaGludFtfbmdjb250ZW50LSVDT01QJV17Y29sb3I6IzYxNjE2MX0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1sZWdhY3lbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLXVuZGVybGluZVtfbmdjb250ZW50LSVDT01QJV17YmFja2dyb3VuZC1jb2xvcjpyZ2JhKDAsMCwwLC40Mil9Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtbGVnYWN5Lm1hdC1mb3JtLWZpZWxkLWRpc2FibGVkW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC11bmRlcmxpbmVbX25nY29udGVudC0lQ09NUCVde2JhY2tncm91bmQtaW1hZ2U6bGluZWFyLWdyYWRpZW50KHRvIHJpZ2h0LCByZ2JhKDAsIDAsIDAsIDAuNDIpIDAlLCByZ2JhKDAsIDAsIDAsIDAuNDIpIDMzJSwgdHJhbnNwYXJlbnQgMCUpO2JhY2tncm91bmQtc2l6ZTo0cHggMTAwJTtiYWNrZ3JvdW5kLXJlcGVhdDpyZXBlYXQteH0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1zdGFuZGFyZFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtdW5kZXJsaW5lW19uZ2NvbnRlbnQtJUNPTVAlXXtiYWNrZ3JvdW5kLWNvbG9yOnJnYmEoMCwwLDAsLjQyKX0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1zdGFuZGFyZC5tYXQtZm9ybS1maWVsZC1kaXNhYmxlZFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtdW5kZXJsaW5lW19uZ2NvbnRlbnQtJUNPTVAlXXtiYWNrZ3JvdW5kLWltYWdlOmxpbmVhci1ncmFkaWVudCh0byByaWdodCwgcmdiYSgwLCAwLCAwLCAwLjQyKSAwJSwgcmdiYSgwLCAwLCAwLCAwLjQyKSAzMyUsIHRyYW5zcGFyZW50IDAlKTtiYWNrZ3JvdW5kLXNpemU6NHB4IDEwMCU7YmFja2dyb3VuZC1yZXBlYXQ6cmVwZWF0LXh9Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtZmlsbFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtZmxleFtfbmdjb250ZW50LSVDT01QJV17YmFja2dyb3VuZC1jb2xvcjpyZ2JhKDAsMCwwLC4wNCl9Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtZmlsbC5tYXQtZm9ybS1maWVsZC1kaXNhYmxlZFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtZmxleFtfbmdjb250ZW50LSVDT01QJV17YmFja2dyb3VuZC1jb2xvcjpyZ2JhKDAsMCwwLC4wMil9Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtZmlsbFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtdW5kZXJsaW5lW19uZ2NvbnRlbnQtJUNPTVAlXTo6YmVmb3Jle2JhY2tncm91bmQtY29sb3I6cmdiYSgwLDAsMCwuNDIpfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWZpbGwubWF0LWZvcm0tZmllbGQtZGlzYWJsZWRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXtjb2xvcjojNzU3NTc1fS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWZpbGwubWF0LWZvcm0tZmllbGQtZGlzYWJsZWRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLXVuZGVybGluZVtfbmdjb250ZW50LSVDT01QJV06OmJlZm9yZXtiYWNrZ3JvdW5kLWNvbG9yOnRyYW5zcGFyZW50fS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLW91dGxpbmVbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLW91dGxpbmVbX25nY29udGVudC0lQ09NUCVde2NvbG9yOnJnYmEoMCwwLDAsLjEyKX0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1vdXRsaW5lW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1vdXRsaW5lLXRoaWNrW19uZ2NvbnRlbnQtJUNPTVAlXXtjb2xvcjpyZ2JhKDAsMCwwLC44Nyl9Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2Utb3V0bGluZS5tYXQtZm9jdXNlZFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtb3V0bGluZS10aGlja1tfbmdjb250ZW50LSVDT01QJV17Y29sb3I6I2Y1N2MwMH0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1vdXRsaW5lLm1hdC1mb2N1c2VkLm1hdC1hY2NlbnRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLW91dGxpbmUtdGhpY2tbX25nY29udGVudC0lQ09NUCVde2NvbG9yOiNmZjk4MDB9Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2Utb3V0bGluZS5tYXQtZm9jdXNlZC5tYXQtd2Fybltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtb3V0bGluZS10aGlja1tfbmdjb250ZW50LSVDT01QJV17Y29sb3I6I2Y0NDMzNn0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1vdXRsaW5lLm1hdC1mb3JtLWZpZWxkLWludmFsaWQubWF0LWZvcm0tZmllbGQtaW52YWxpZFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtb3V0bGluZS10aGlja1tfbmdjb250ZW50LSVDT01QJV17Y29sb3I6I2Y0NDMzNn0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1vdXRsaW5lLm1hdC1mb3JtLWZpZWxkLWRpc2FibGVkW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17Y29sb3I6Izc1NzU3NX0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1vdXRsaW5lLm1hdC1mb3JtLWZpZWxkLWRpc2FibGVkW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1vdXRsaW5lW19uZ2NvbnRlbnQtJUNPTVAlXXtjb2xvcjpyZ2JhKDAsMCwwLC4wNil9Lm1hdC1pY29uLm1hdC1wcmltYXJ5W19uZ2NvbnRlbnQtJUNPTVAlXXtjb2xvcjojZjU3YzAwfS5tYXQtaWNvbi5tYXQtYWNjZW50W19uZ2NvbnRlbnQtJUNPTVAlXXtjb2xvcjojZmY5ODAwfS5tYXQtaWNvbi5tYXQtd2Fybltfbmdjb250ZW50LSVDT01QJV17Y29sb3I6I2Y0NDMzNn0ubWF0LWZvcm0tZmllbGQtdHlwZS1tYXQtbmF0aXZlLXNlbGVjdFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtaW5maXhbX25nY29udGVudC0lQ09NUCVdOjphZnRlcntjb2xvcjojNjE2MTYxfS5tYXQtaW5wdXQtZWxlbWVudFtfbmdjb250ZW50LSVDT01QJV06ZGlzYWJsZWQsIC5tYXQtZm9ybS1maWVsZC10eXBlLW1hdC1uYXRpdmUtc2VsZWN0Lm1hdC1mb3JtLWZpZWxkLWRpc2FibGVkW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1pbmZpeFtfbmdjb250ZW50LSVDT01QJV06OmFmdGVye2NvbG9yOiM3NTc1NzV9Lm1hdC1pbnB1dC1lbGVtZW50W19uZ2NvbnRlbnQtJUNPTVAlXXtjYXJldC1jb2xvcjojZjU3YzAwfS5tYXQtaW5wdXQtZWxlbWVudFtfbmdjb250ZW50LSVDT01QJV06OnBsYWNlaG9sZGVye2NvbG9yOnJnYmEoOTcsOTcsOTcsLjQyKX0ubWF0LWlucHV0LWVsZW1lbnRbX25nY29udGVudC0lQ09NUCVdOjotbW96LXBsYWNlaG9sZGVye2NvbG9yOnJnYmEoOTcsOTcsOTcsLjQyKX0ubWF0LWlucHV0LWVsZW1lbnRbX25nY29udGVudC0lQ09NUCVdOjotd2Via2l0LWlucHV0LXBsYWNlaG9sZGVye2NvbG9yOnJnYmEoOTcsOTcsOTcsLjQyKX0ubWF0LWlucHV0LWVsZW1lbnRbX25nY29udGVudC0lQ09NUCVdOi1tcy1pbnB1dC1wbGFjZWhvbGRlcntjb2xvcjpyZ2JhKDk3LDk3LDk3LC40Mil9Lm1hdC1mb3JtLWZpZWxkLm1hdC1hY2NlbnRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pbnB1dC1lbGVtZW50W19uZ2NvbnRlbnQtJUNPTVAlXXtjYXJldC1jb2xvcjojZmY5ODAwfS5tYXQtZm9ybS1maWVsZC5tYXQtd2Fybltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWlucHV0LWVsZW1lbnRbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWZvcm0tZmllbGQtaW52YWxpZFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWlucHV0LWVsZW1lbnRbX25nY29udGVudC0lQ09NUCVde2NhcmV0LWNvbG9yOiNmNDQzMzZ9Lm1hdC1mb3JtLWZpZWxkLXR5cGUtbWF0LW5hdGl2ZS1zZWxlY3QubWF0LWZvcm0tZmllbGQtaW52YWxpZFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtaW5maXhbX25nY29udGVudC0lQ09NUCVdOjphZnRlcntjb2xvcjojZjQ0MzM2fS5tYXQtbGlzdC1iYXNlW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGlzdC1pdGVtW19uZ2NvbnRlbnQtJUNPTVAlXXtjb2xvcjojMjEyMTIxfS5tYXQtbGlzdC1iYXNlW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGlzdC1vcHRpb25bX25nY29udGVudC0lQ09NUCVde2NvbG9yOiMyMTIxMjF9Lm1hdC1saXN0LWJhc2VbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1zdWJoZWFkZXJbX25nY29udGVudC0lQ09NUCVde2NvbG9yOiM2MTYxNjF9Lm1hdC1saXN0LWl0ZW0tZGlzYWJsZWRbX25nY29udGVudC0lQ09NUCVde2JhY2tncm91bmQtY29sb3I6I2VlZX0ubWF0LWxpc3Qtb3B0aW9uW19uZ2NvbnRlbnQtJUNPTVAlXTpob3ZlciwgLm1hdC1saXN0LW9wdGlvbltfbmdjb250ZW50LSVDT01QJV06Zm9jdXMsIC5tYXQtbmF2LWxpc3RbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saXN0LWl0ZW1bX25nY29udGVudC0lQ09NUCVdOmhvdmVyLCAubWF0LW5hdi1saXN0W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGlzdC1pdGVtW19uZ2NvbnRlbnQtJUNPTVAlXTpmb2N1cywgLm1hdC1hY3Rpb24tbGlzdFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpc3QtaXRlbVtfbmdjb250ZW50LSVDT01QJV06aG92ZXIsIC5tYXQtYWN0aW9uLWxpc3RbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saXN0LWl0ZW1bX25nY29udGVudC0lQ09NUCVdOmZvY3Vze2JhY2tncm91bmQ6cmdiYSgwLDAsMCwuMDQpfS5tYXQtbGlzdC1zaW5nbGUtc2VsZWN0ZWQtb3B0aW9uW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1saXN0LXNpbmdsZS1zZWxlY3RlZC1vcHRpb25bX25nY29udGVudC0lQ09NUCVdOmhvdmVyLCAubWF0LWxpc3Qtc2luZ2xlLXNlbGVjdGVkLW9wdGlvbltfbmdjb250ZW50LSVDT01QJV06Zm9jdXN7YmFja2dyb3VuZDpyZ2JhKDAsMCwwLC4xMil9Lm1hdC1tZW51LXBhbmVsW19uZ2NvbnRlbnQtJUNPTVAlXXtiYWNrZ3JvdW5kOiNmZmZ9Lm1hdC1tZW51LXBhbmVsW19uZ2NvbnRlbnQtJUNPTVAlXTpub3QoW2NsYXNzKj1tYXQtZWxldmF0aW9uLXpdKXtib3gtc2hhZG93OjBweCAycHggNHB4IC0xcHggcmdiYSgwLCAwLCAwLCAwLjIpLDBweCA0cHggNXB4IDBweCByZ2JhKDAsIDAsIDAsIDAuMTQpLDBweCAxcHggMTBweCAwcHggcmdiYSgwLCAwLCAwLCAwLjEyKX0ubWF0LW1lbnUtaXRlbVtfbmdjb250ZW50LSVDT01QJV17YmFja2dyb3VuZDp0cmFuc3BhcmVudDtjb2xvcjojMjEyMTIxfS5tYXQtbWVudS1pdGVtW2Rpc2FibGVkXVtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtbWVudS1pdGVtW2Rpc2FibGVkXVtfbmdjb250ZW50LSVDT01QJV06OmFmdGVye2NvbG9yOnJnYmEoMCwwLDAsLjM4KX0ubWF0LW1lbnUtaXRlbVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWljb24tbm8tY29sb3JbX25nY29udGVudC0lQ09NUCVdLCAubWF0LW1lbnUtaXRlbS1zdWJtZW51LXRyaWdnZXJbX25nY29udGVudC0lQ09NUCVdOjphZnRlcntjb2xvcjpyZ2JhKDAsMCwwLC41NCl9Lm1hdC1tZW51LWl0ZW1bX25nY29udGVudC0lQ09NUCVdOmhvdmVyOm5vdChbZGlzYWJsZWRdKSwgLm1hdC1tZW51LWl0ZW0uY2RrLXByb2dyYW0tZm9jdXNlZFtfbmdjb250ZW50LSVDT01QJV06bm90KFtkaXNhYmxlZF0pLCAubWF0LW1lbnUtaXRlbS5jZGsta2V5Ym9hcmQtZm9jdXNlZFtfbmdjb250ZW50LSVDT01QJV06bm90KFtkaXNhYmxlZF0pLCAubWF0LW1lbnUtaXRlbS1oaWdobGlnaHRlZFtfbmdjb250ZW50LSVDT01QJV06bm90KFtkaXNhYmxlZF0pe2JhY2tncm91bmQ6cmdiYSgwLDAsMCwuMDQpfS5tYXQtcGFnaW5hdG9yW19uZ2NvbnRlbnQtJUNPTVAlXXtiYWNrZ3JvdW5kOiNmZmZ9Lm1hdC1wYWdpbmF0b3JbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXBhZ2luYXRvci1wYWdlLXNpemVbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1zZWxlY3QtdHJpZ2dlcltfbmdjb250ZW50LSVDT01QJV17Y29sb3I6IzYxNjE2MX0ubWF0LXBhZ2luYXRvci1kZWNyZW1lbnRbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXBhZ2luYXRvci1pbmNyZW1lbnRbX25nY29udGVudC0lQ09NUCVde2JvcmRlci10b3A6MnB4IHNvbGlkIHJnYmEoMCwwLDAsLjU0KTtib3JkZXItcmlnaHQ6MnB4IHNvbGlkIHJnYmEoMCwwLDAsLjU0KX0ubWF0LXBhZ2luYXRvci1maXJzdFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtcGFnaW5hdG9yLWxhc3RbX25nY29udGVudC0lQ09NUCVde2JvcmRlci10b3A6MnB4IHNvbGlkIHJnYmEoMCwwLDAsLjU0KX0ubWF0LWljb24tYnV0dG9uW2Rpc2FibGVkXVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXBhZ2luYXRvci1kZWNyZW1lbnRbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWljb24tYnV0dG9uW2Rpc2FibGVkXVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXBhZ2luYXRvci1pbmNyZW1lbnRbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWljb24tYnV0dG9uW2Rpc2FibGVkXVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXBhZ2luYXRvci1maXJzdFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtaWNvbi1idXR0b25bZGlzYWJsZWRdW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtcGFnaW5hdG9yLWxhc3RbX25nY29udGVudC0lQ09NUCVde2JvcmRlci1jb2xvcjpyZ2JhKDAsMCwwLC4zOCl9Lm1hdC1wYWdpbmF0b3ItY29udGFpbmVyW19uZ2NvbnRlbnQtJUNPTVAlXXttaW4taGVpZ2h0OjU2cHh9Lm1hdC1wcm9ncmVzcy1iYXItYmFja2dyb3VuZFtfbmdjb250ZW50LSVDT01QJV17ZmlsbDojZmY5ODAwfS5tYXQtcHJvZ3Jlc3MtYmFyLWJ1ZmZlcltfbmdjb250ZW50LSVDT01QJV17YmFja2dyb3VuZC1jb2xvcjojZmY5ODAwfS5tYXQtcHJvZ3Jlc3MtYmFyLWZpbGxbX25nY29udGVudC0lQ09NUCVdOjphZnRlcntiYWNrZ3JvdW5kLWNvbG9yOiNmNTdjMDB9Lm1hdC1wcm9ncmVzcy1iYXIubWF0LWFjY2VudFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXByb2dyZXNzLWJhci1iYWNrZ3JvdW5kW19uZ2NvbnRlbnQtJUNPTVAlXXtmaWxsOiNmZjk4MDB9Lm1hdC1wcm9ncmVzcy1iYXIubWF0LWFjY2VudFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXByb2dyZXNzLWJhci1idWZmZXJbX25nY29udGVudC0lQ09NUCVde2JhY2tncm91bmQtY29sb3I6I2ZmOTgwMH0ubWF0LXByb2dyZXNzLWJhci5tYXQtYWNjZW50W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtcHJvZ3Jlc3MtYmFyLWZpbGxbX25nY29udGVudC0lQ09NUCVdOjphZnRlcntiYWNrZ3JvdW5kLWNvbG9yOiNmZjk4MDB9Lm1hdC1wcm9ncmVzcy1iYXIubWF0LXdhcm5bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1wcm9ncmVzcy1iYXItYmFja2dyb3VuZFtfbmdjb250ZW50LSVDT01QJV17ZmlsbDojZmZjZGQyfS5tYXQtcHJvZ3Jlc3MtYmFyLm1hdC13YXJuW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtcHJvZ3Jlc3MtYmFyLWJ1ZmZlcltfbmdjb250ZW50LSVDT01QJV17YmFja2dyb3VuZC1jb2xvcjojZmZjZGQyfS5tYXQtcHJvZ3Jlc3MtYmFyLm1hdC13YXJuW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtcHJvZ3Jlc3MtYmFyLWZpbGxbX25nY29udGVudC0lQ09NUCVdOjphZnRlcntiYWNrZ3JvdW5kLWNvbG9yOiNmNDQzMzZ9Lm1hdC1wcm9ncmVzcy1zcGlubmVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIGNpcmNsZVtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtc3Bpbm5lcltfbmdjb250ZW50LSVDT01QJV0gICBjaXJjbGVbX25nY29udGVudC0lQ09NUCVde3N0cm9rZTojZjU3YzAwfS5tYXQtcHJvZ3Jlc3Mtc3Bpbm5lci5tYXQtYWNjZW50W19uZ2NvbnRlbnQtJUNPTVAlXSAgIGNpcmNsZVtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtc3Bpbm5lci5tYXQtYWNjZW50W19uZ2NvbnRlbnQtJUNPTVAlXSAgIGNpcmNsZVtfbmdjb250ZW50LSVDT01QJV17c3Ryb2tlOiNmZjk4MDB9Lm1hdC1wcm9ncmVzcy1zcGlubmVyLm1hdC13YXJuW19uZ2NvbnRlbnQtJUNPTVAlXSAgIGNpcmNsZVtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtc3Bpbm5lci5tYXQtd2Fybltfbmdjb250ZW50LSVDT01QJV0gICBjaXJjbGVbX25nY29udGVudC0lQ09NUCVde3N0cm9rZTojZjQ0MzM2fS5tYXQtcmFkaW8tb3V0ZXItY2lyY2xlW19uZ2NvbnRlbnQtJUNPTVAlXXtib3JkZXItY29sb3I6IzYxNjE2MX0ubWF0LXJhZGlvLWJ1dHRvbi5tYXQtcHJpbWFyeS5tYXQtcmFkaW8tY2hlY2tlZFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXJhZGlvLW91dGVyLWNpcmNsZVtfbmdjb250ZW50LSVDT01QJV17Ym9yZGVyLWNvbG9yOiNmNTdjMDB9Lm1hdC1yYWRpby1idXR0b24ubWF0LXByaW1hcnlbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1yYWRpby1pbm5lci1jaXJjbGVbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXJhZGlvLWJ1dHRvbi5tYXQtcHJpbWFyeVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXJhZGlvLXJpcHBsZVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXJpcHBsZS1lbGVtZW50W19uZ2NvbnRlbnQtJUNPTVAlXTpub3QoLm1hdC1yYWRpby1wZXJzaXN0ZW50LXJpcHBsZSksIC5tYXQtcmFkaW8tYnV0dG9uLm1hdC1wcmltYXJ5Lm1hdC1yYWRpby1jaGVja2VkW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtcmFkaW8tcGVyc2lzdGVudC1yaXBwbGVbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXJhZGlvLWJ1dHRvbi5tYXQtcHJpbWFyeVtfbmdjb250ZW50LSVDT01QJV06YWN0aXZlICAgLm1hdC1yYWRpby1wZXJzaXN0ZW50LXJpcHBsZVtfbmdjb250ZW50LSVDT01QJV17YmFja2dyb3VuZC1jb2xvcjojZjU3YzAwfS5tYXQtcmFkaW8tYnV0dG9uLm1hdC1hY2NlbnQubWF0LXJhZGlvLWNoZWNrZWRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1yYWRpby1vdXRlci1jaXJjbGVbX25nY29udGVudC0lQ09NUCVde2JvcmRlci1jb2xvcjojZmY5ODAwfS5tYXQtcmFkaW8tYnV0dG9uLm1hdC1hY2NlbnRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1yYWRpby1pbm5lci1jaXJjbGVbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXJhZGlvLWJ1dHRvbi5tYXQtYWNjZW50W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtcmFkaW8tcmlwcGxlW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtcmlwcGxlLWVsZW1lbnRbX25nY29udGVudC0lQ09NUCVdOm5vdCgubWF0LXJhZGlvLXBlcnNpc3RlbnQtcmlwcGxlKSwgLm1hdC1yYWRpby1idXR0b24ubWF0LWFjY2VudC5tYXQtcmFkaW8tY2hlY2tlZFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXJhZGlvLXBlcnNpc3RlbnQtcmlwcGxlW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1yYWRpby1idXR0b24ubWF0LWFjY2VudFtfbmdjb250ZW50LSVDT01QJV06YWN0aXZlICAgLm1hdC1yYWRpby1wZXJzaXN0ZW50LXJpcHBsZVtfbmdjb250ZW50LSVDT01QJV17YmFja2dyb3VuZC1jb2xvcjojZmY5ODAwfS5tYXQtcmFkaW8tYnV0dG9uLm1hdC13YXJuLm1hdC1yYWRpby1jaGVja2VkW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtcmFkaW8tb3V0ZXItY2lyY2xlW19uZ2NvbnRlbnQtJUNPTVAlXXtib3JkZXItY29sb3I6I2Y0NDMzNn0ubWF0LXJhZGlvLWJ1dHRvbi5tYXQtd2Fybltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXJhZGlvLWlubmVyLWNpcmNsZVtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtcmFkaW8tYnV0dG9uLm1hdC13YXJuW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtcmFkaW8tcmlwcGxlW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtcmlwcGxlLWVsZW1lbnRbX25nY29udGVudC0lQ09NUCVdOm5vdCgubWF0LXJhZGlvLXBlcnNpc3RlbnQtcmlwcGxlKSwgLm1hdC1yYWRpby1idXR0b24ubWF0LXdhcm4ubWF0LXJhZGlvLWNoZWNrZWRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1yYWRpby1wZXJzaXN0ZW50LXJpcHBsZVtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtcmFkaW8tYnV0dG9uLm1hdC13YXJuW19uZ2NvbnRlbnQtJUNPTVAlXTphY3RpdmUgICAubWF0LXJhZGlvLXBlcnNpc3RlbnQtcmlwcGxlW19uZ2NvbnRlbnQtJUNPTVAlXXtiYWNrZ3JvdW5kLWNvbG9yOiNmNDQzMzZ9Lm1hdC1yYWRpby1idXR0b24ubWF0LXJhZGlvLWRpc2FibGVkLm1hdC1yYWRpby1jaGVja2VkW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtcmFkaW8tb3V0ZXItY2lyY2xlW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1yYWRpby1idXR0b24ubWF0LXJhZGlvLWRpc2FibGVkW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtcmFkaW8tb3V0ZXItY2lyY2xlW19uZ2NvbnRlbnQtJUNPTVAlXXtib3JkZXItY29sb3I6cmdiYSgwLDAsMCwuMzgpfS5tYXQtcmFkaW8tYnV0dG9uLm1hdC1yYWRpby1kaXNhYmxlZFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXJhZGlvLXJpcHBsZVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXJpcHBsZS1lbGVtZW50W19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1yYWRpby1idXR0b24ubWF0LXJhZGlvLWRpc2FibGVkW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtcmFkaW8taW5uZXItY2lyY2xlW19uZ2NvbnRlbnQtJUNPTVAlXXtiYWNrZ3JvdW5kLWNvbG9yOnJnYmEoMCwwLDAsLjM4KX0ubWF0LXJhZGlvLWJ1dHRvbi5tYXQtcmFkaW8tZGlzYWJsZWRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1yYWRpby1sYWJlbC1jb250ZW50W19uZ2NvbnRlbnQtJUNPTVAlXXtjb2xvcjpyZ2JhKDAsMCwwLC4zOCl9Lm1hdC1yYWRpby1idXR0b25bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1yaXBwbGUtZWxlbWVudFtfbmdjb250ZW50LSVDT01QJV17YmFja2dyb3VuZC1jb2xvcjojMDAwfS5tYXQtc2VsZWN0LXZhbHVlW19uZ2NvbnRlbnQtJUNPTVAlXXtjb2xvcjojMjEyMTIxfS5tYXQtc2VsZWN0LXBsYWNlaG9sZGVyW19uZ2NvbnRlbnQtJUNPTVAlXXtjb2xvcjpyZ2JhKDk3LDk3LDk3LC40Mil9Lm1hdC1zZWxlY3QtZGlzYWJsZWRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1zZWxlY3QtdmFsdWVbX25nY29udGVudC0lQ09NUCVde2NvbG9yOiM3NTc1NzV9Lm1hdC1zZWxlY3QtYXJyb3dbX25nY29udGVudC0lQ09NUCVde2NvbG9yOiM2MTYxNjF9Lm1hdC1zZWxlY3QtcGFuZWxbX25nY29udGVudC0lQ09NUCVde2JhY2tncm91bmQ6I2ZmZn0ubWF0LXNlbGVjdC1wYW5lbFtfbmdjb250ZW50LSVDT01QJV06bm90KFtjbGFzcyo9bWF0LWVsZXZhdGlvbi16XSl7Ym94LXNoYWRvdzowcHggMnB4IDRweCAtMXB4IHJnYmEoMCwgMCwgMCwgMC4yKSwwcHggNHB4IDVweCAwcHggcmdiYSgwLCAwLCAwLCAwLjE0KSwwcHggMXB4IDEwcHggMHB4IHJnYmEoMCwgMCwgMCwgMC4xMil9Lm1hdC1zZWxlY3QtcGFuZWxbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1vcHRpb24ubWF0LXNlbGVjdGVkW19uZ2NvbnRlbnQtJUNPTVAlXTpub3QoLm1hdC1vcHRpb24tbXVsdGlwbGUpe2JhY2tncm91bmQ6cmdiYSgwLDAsMCwuMTIpfS5tYXQtZm9ybS1maWVsZC5tYXQtZm9jdXNlZC5tYXQtcHJpbWFyeVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXNlbGVjdC1hcnJvd1tfbmdjb250ZW50LSVDT01QJV17Y29sb3I6I2Y1N2MwMH0ubWF0LWZvcm0tZmllbGQubWF0LWZvY3VzZWQubWF0LWFjY2VudFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXNlbGVjdC1hcnJvd1tfbmdjb250ZW50LSVDT01QJV17Y29sb3I6I2ZmOTgwMH0ubWF0LWZvcm0tZmllbGQubWF0LWZvY3VzZWQubWF0LXdhcm5bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1zZWxlY3QtYXJyb3dbX25nY29udGVudC0lQ09NUCVde2NvbG9yOiNmNDQzMzZ9Lm1hdC1mb3JtLWZpZWxkW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtc2VsZWN0Lm1hdC1zZWxlY3QtaW52YWxpZFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXNlbGVjdC1hcnJvd1tfbmdjb250ZW50LSVDT01QJV17Y29sb3I6I2Y0NDMzNn0ubWF0LWZvcm0tZmllbGRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1zZWxlY3QubWF0LXNlbGVjdC1kaXNhYmxlZFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXNlbGVjdC1hcnJvd1tfbmdjb250ZW50LSVDT01QJV17Y29sb3I6Izc1NzU3NX0ubWF0LWRyYXdlci1jb250YWluZXJbX25nY29udGVudC0lQ09NUCVde2JhY2tncm91bmQtY29sb3I6I2ZhZmFmYTtjb2xvcjojMjEyMTIxfS5tYXQtZHJhd2VyW19uZ2NvbnRlbnQtJUNPTVAlXXtiYWNrZ3JvdW5kLWNvbG9yOiNmZmY7Y29sb3I6IzIxMjEyMX0ubWF0LWRyYXdlci5tYXQtZHJhd2VyLXB1c2hbX25nY29udGVudC0lQ09NUCVde2JhY2tncm91bmQtY29sb3I6I2ZmZn0ubWF0LWRyYXdlcltfbmdjb250ZW50LSVDT01QJV06bm90KC5tYXQtZHJhd2VyLXNpZGUpe2JveC1zaGFkb3c6MHB4IDhweCAxMHB4IC01cHggcmdiYSgwLCAwLCAwLCAwLjIpLDBweCAxNnB4IDI0cHggMnB4IHJnYmEoMCwgMCwgMCwgMC4xNCksMHB4IDZweCAzMHB4IDVweCByZ2JhKDAsIDAsIDAsIDAuMTIpfS5tYXQtZHJhd2VyLXNpZGVbX25nY29udGVudC0lQ09NUCVde2JvcmRlci1yaWdodDpzb2xpZCAxcHggcmdiYSgwLDAsMCwuMTIpfS5tYXQtZHJhd2VyLXNpZGUubWF0LWRyYXdlci1lbmRbX25nY29udGVudC0lQ09NUCVde2JvcmRlci1sZWZ0OnNvbGlkIDFweCByZ2JhKDAsMCwwLC4xMik7Ym9yZGVyLXJpZ2h0Om5vbmV9W2Rpcj1ydGxdW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZHJhd2VyLXNpZGVbX25nY29udGVudC0lQ09NUCVde2JvcmRlci1sZWZ0OnNvbGlkIDFweCByZ2JhKDAsMCwwLC4xMik7Ym9yZGVyLXJpZ2h0Om5vbmV9W2Rpcj1ydGxdW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZHJhd2VyLXNpZGUubWF0LWRyYXdlci1lbmRbX25nY29udGVudC0lQ09NUCVde2JvcmRlci1sZWZ0Om5vbmU7Ym9yZGVyLXJpZ2h0OnNvbGlkIDFweCByZ2JhKDAsMCwwLC4xMil9Lm1hdC1kcmF3ZXItYmFja2Ryb3AubWF0LWRyYXdlci1zaG93bltfbmdjb250ZW50LSVDT01QJV17YmFja2dyb3VuZC1jb2xvcjpyZ2JhKDAsMCwwLC42KX0ubWF0LXNsaWRlLXRvZ2dsZS5tYXQtY2hlY2tlZFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXNsaWRlLXRvZ2dsZS10aHVtYltfbmdjb250ZW50LSVDT01QJV17YmFja2dyb3VuZC1jb2xvcjojZmY5ODAwfS5tYXQtc2xpZGUtdG9nZ2xlLm1hdC1jaGVja2VkW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtc2xpZGUtdG9nZ2xlLWJhcltfbmdjb250ZW50LSVDT01QJV17YmFja2dyb3VuZC1jb2xvcjpyZ2JhKDI1NSwxNTIsMCwuNTQpfS5tYXQtc2xpZGUtdG9nZ2xlLm1hdC1jaGVja2VkW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtcmlwcGxlLWVsZW1lbnRbX25nY29udGVudC0lQ09NUCVde2JhY2tncm91bmQtY29sb3I6I2ZmOTgwMH0ubWF0LXNsaWRlLXRvZ2dsZS5tYXQtcHJpbWFyeS5tYXQtY2hlY2tlZFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXNsaWRlLXRvZ2dsZS10aHVtYltfbmdjb250ZW50LSVDT01QJV17YmFja2dyb3VuZC1jb2xvcjojZjU3YzAwfS5tYXQtc2xpZGUtdG9nZ2xlLm1hdC1wcmltYXJ5Lm1hdC1jaGVja2VkW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtc2xpZGUtdG9nZ2xlLWJhcltfbmdjb250ZW50LSVDT01QJV17YmFja2dyb3VuZC1jb2xvcjpyZ2JhKDI0NSwxMjQsMCwuNTQpfS5tYXQtc2xpZGUtdG9nZ2xlLm1hdC1wcmltYXJ5Lm1hdC1jaGVja2VkW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtcmlwcGxlLWVsZW1lbnRbX25nY29udGVudC0lQ09NUCVde2JhY2tncm91bmQtY29sb3I6I2Y1N2MwMH0ubWF0LXNsaWRlLXRvZ2dsZS5tYXQtd2Fybi5tYXQtY2hlY2tlZFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXNsaWRlLXRvZ2dsZS10aHVtYltfbmdjb250ZW50LSVDT01QJV17YmFja2dyb3VuZC1jb2xvcjojZjQ0MzM2fS5tYXQtc2xpZGUtdG9nZ2xlLm1hdC13YXJuLm1hdC1jaGVja2VkW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtc2xpZGUtdG9nZ2xlLWJhcltfbmdjb250ZW50LSVDT01QJV17YmFja2dyb3VuZC1jb2xvcjpyZ2JhKDI0NCw2Nyw1NCwuNTQpfS5tYXQtc2xpZGUtdG9nZ2xlLm1hdC13YXJuLm1hdC1jaGVja2VkW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtcmlwcGxlLWVsZW1lbnRbX25nY29udGVudC0lQ09NUCVde2JhY2tncm91bmQtY29sb3I6I2Y0NDMzNn0ubWF0LXNsaWRlLXRvZ2dsZVtfbmdjb250ZW50LSVDT01QJV06bm90KC5tYXQtY2hlY2tlZCkgICAubWF0LXJpcHBsZS1lbGVtZW50W19uZ2NvbnRlbnQtJUNPTVAlXXtiYWNrZ3JvdW5kLWNvbG9yOiMwMDB9Lm1hdC1zbGlkZS10b2dnbGUtdGh1bWJbX25nY29udGVudC0lQ09NUCVde2JveC1zaGFkb3c6MHB4IDJweCAxcHggLTFweCByZ2JhKDAsIDAsIDAsIDAuMiksMHB4IDFweCAxcHggMHB4IHJnYmEoMCwgMCwgMCwgMC4xNCksMHB4IDFweCAzcHggMHB4IHJnYmEoMCwgMCwgMCwgMC4xMik7YmFja2dyb3VuZC1jb2xvcjojZmFmYWZhfS5tYXQtc2xpZGUtdG9nZ2xlLWJhcltfbmdjb250ZW50LSVDT01QJV17YmFja2dyb3VuZC1jb2xvcjpyZ2JhKDAsMCwwLC4zOCl9Lm1hdC1zbGlkZXItdHJhY2stYmFja2dyb3VuZFtfbmdjb250ZW50LSVDT01QJV17YmFja2dyb3VuZC1jb2xvcjpyZ2JhKDAsMCwwLC4yNil9Lm1hdC1wcmltYXJ5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtc2xpZGVyLXRyYWNrLWZpbGxbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXByaW1hcnlbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1zbGlkZXItdGh1bWJbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXByaW1hcnlbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1zbGlkZXItdGh1bWItbGFiZWxbX25nY29udGVudC0lQ09NUCVde2JhY2tncm91bmQtY29sb3I6I2Y1N2MwMH0ubWF0LXByaW1hcnlbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1zbGlkZXItdGh1bWItbGFiZWwtdGV4dFtfbmdjb250ZW50LSVDT01QJV17Y29sb3I6I2ZmZn0ubWF0LXByaW1hcnlbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1zbGlkZXItZm9jdXMtcmluZ1tfbmdjb250ZW50LSVDT01QJV17YmFja2dyb3VuZC1jb2xvcjpyZ2JhKDI0NSwxMjQsMCwuMil9Lm1hdC1hY2NlbnRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1zbGlkZXItdHJhY2stZmlsbFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtYWNjZW50W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtc2xpZGVyLXRodW1iW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1hY2NlbnRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1zbGlkZXItdGh1bWItbGFiZWxbX25nY29udGVudC0lQ09NUCVde2JhY2tncm91bmQtY29sb3I6I2ZmOTgwMH0ubWF0LWFjY2VudFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXNsaWRlci10aHVtYi1sYWJlbC10ZXh0W19uZ2NvbnRlbnQtJUNPTVAlXXtjb2xvcjojZmZmfS5tYXQtYWNjZW50W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtc2xpZGVyLWZvY3VzLXJpbmdbX25nY29udGVudC0lQ09NUCVde2JhY2tncm91bmQtY29sb3I6cmdiYSgyNTUsMTUyLDAsLjIpfS5tYXQtd2Fybltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXNsaWRlci10cmFjay1maWxsW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC13YXJuW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtc2xpZGVyLXRodW1iW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC13YXJuW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtc2xpZGVyLXRodW1iLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXtiYWNrZ3JvdW5kLWNvbG9yOiNmNDQzMzZ9Lm1hdC13YXJuW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtc2xpZGVyLXRodW1iLWxhYmVsLXRleHRbX25nY29udGVudC0lQ09NUCVde2NvbG9yOiNmZmZ9Lm1hdC13YXJuW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtc2xpZGVyLWZvY3VzLXJpbmdbX25nY29udGVudC0lQ09NUCVde2JhY2tncm91bmQtY29sb3I6cmdiYSgyNDQsNjcsNTQsLjIpfS5tYXQtc2xpZGVyW19uZ2NvbnRlbnQtJUNPTVAlXTpob3ZlciAgIC5tYXQtc2xpZGVyLXRyYWNrLWJhY2tncm91bmRbX25nY29udGVudC0lQ09NUCVdLCAuY2RrLWZvY3VzZWRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1zbGlkZXItdHJhY2stYmFja2dyb3VuZFtfbmdjb250ZW50LSVDT01QJV17YmFja2dyb3VuZC1jb2xvcjpyZ2JhKDAsMCwwLC4zOCl9Lm1hdC1zbGlkZXItZGlzYWJsZWRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1zbGlkZXItdHJhY2stYmFja2dyb3VuZFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtc2xpZGVyLWRpc2FibGVkW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtc2xpZGVyLXRyYWNrLWZpbGxbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXNsaWRlci1kaXNhYmxlZFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXNsaWRlci10aHVtYltfbmdjb250ZW50LSVDT01QJV17YmFja2dyb3VuZC1jb2xvcjpyZ2JhKDAsMCwwLC4yNil9Lm1hdC1zbGlkZXItZGlzYWJsZWRbX25nY29udGVudC0lQ09NUCVdOmhvdmVyICAgLm1hdC1zbGlkZXItdHJhY2stYmFja2dyb3VuZFtfbmdjb250ZW50LSVDT01QJV17YmFja2dyb3VuZC1jb2xvcjpyZ2JhKDAsMCwwLC4yNil9Lm1hdC1zbGlkZXItbWluLXZhbHVlW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtc2xpZGVyLWZvY3VzLXJpbmdbX25nY29udGVudC0lQ09NUCVde2JhY2tncm91bmQtY29sb3I6cmdiYSgwLDAsMCwuMTIpfS5tYXQtc2xpZGVyLW1pbi12YWx1ZS5tYXQtc2xpZGVyLXRodW1iLWxhYmVsLXNob3dpbmdbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1zbGlkZXItdGh1bWJbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXNsaWRlci1taW4tdmFsdWUubWF0LXNsaWRlci10aHVtYi1sYWJlbC1zaG93aW5nW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtc2xpZGVyLXRodW1iLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXtiYWNrZ3JvdW5kLWNvbG9yOnJnYmEoMCwwLDAsLjg3KX0ubWF0LXNsaWRlci1taW4tdmFsdWUubWF0LXNsaWRlci10aHVtYi1sYWJlbC1zaG93aW5nLmNkay1mb2N1c2VkW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtc2xpZGVyLXRodW1iW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1zbGlkZXItbWluLXZhbHVlLm1hdC1zbGlkZXItdGh1bWItbGFiZWwtc2hvd2luZy5jZGstZm9jdXNlZFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXNsaWRlci10aHVtYi1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17YmFja2dyb3VuZC1jb2xvcjpyZ2JhKDAsMCwwLC4yNil9Lm1hdC1zbGlkZXItbWluLXZhbHVlW19uZ2NvbnRlbnQtJUNPTVAlXTpub3QoLm1hdC1zbGlkZXItdGh1bWItbGFiZWwtc2hvd2luZykgICAubWF0LXNsaWRlci10aHVtYltfbmdjb250ZW50LSVDT01QJV17Ym9yZGVyLWNvbG9yOnJnYmEoMCwwLDAsLjI2KTtiYWNrZ3JvdW5kLWNvbG9yOnRyYW5zcGFyZW50fS5tYXQtc2xpZGVyLW1pbi12YWx1ZVtfbmdjb250ZW50LSVDT01QJV06bm90KC5tYXQtc2xpZGVyLXRodW1iLWxhYmVsLXNob3dpbmcpOmhvdmVyICAgLm1hdC1zbGlkZXItdGh1bWJbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXNsaWRlci1taW4tdmFsdWVbX25nY29udGVudC0lQ09NUCVdOm5vdCgubWF0LXNsaWRlci10aHVtYi1sYWJlbC1zaG93aW5nKS5jZGstZm9jdXNlZCAgIC5tYXQtc2xpZGVyLXRodW1iW19uZ2NvbnRlbnQtJUNPTVAlXXtib3JkZXItY29sb3I6cmdiYSgwLDAsMCwuMzgpfS5tYXQtc2xpZGVyLW1pbi12YWx1ZVtfbmdjb250ZW50LSVDT01QJV06bm90KC5tYXQtc2xpZGVyLXRodW1iLWxhYmVsLXNob3dpbmcpOmhvdmVyLm1hdC1zbGlkZXItZGlzYWJsZWQgICAubWF0LXNsaWRlci10aHVtYltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtc2xpZGVyLW1pbi12YWx1ZVtfbmdjb250ZW50LSVDT01QJV06bm90KC5tYXQtc2xpZGVyLXRodW1iLWxhYmVsLXNob3dpbmcpLmNkay1mb2N1c2VkLm1hdC1zbGlkZXItZGlzYWJsZWQgICAubWF0LXNsaWRlci10aHVtYltfbmdjb250ZW50LSVDT01QJV17Ym9yZGVyLWNvbG9yOnJnYmEoMCwwLDAsLjI2KX0ubWF0LXNsaWRlci1oYXMtdGlja3NbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1zbGlkZXItd3JhcHBlcltfbmdjb250ZW50LSVDT01QJV06OmFmdGVye2JvcmRlci1jb2xvcjpyZ2JhKDAsMCwwLC43KX0ubWF0LXNsaWRlci1ob3Jpem9udGFsW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtc2xpZGVyLXRpY2tzW19uZ2NvbnRlbnQtJUNPTVAlXXtiYWNrZ3JvdW5kLWltYWdlOnJlcGVhdGluZy1saW5lYXItZ3JhZGllbnQodG8gcmlnaHQsIHJnYmEoMCwgMCwgMCwgMC43KSwgcmdiYSgwLCAwLCAwLCAwLjcpIDJweCwgdHJhbnNwYXJlbnQgMCwgdHJhbnNwYXJlbnQpO2JhY2tncm91bmQtaW1hZ2U6LW1vei1yZXBlYXRpbmctbGluZWFyLWdyYWRpZW50KDAuMDAwMWRlZywgcmdiYSgwLCAwLCAwLCAwLjcpLCByZ2JhKDAsIDAsIDAsIDAuNykgMnB4LCB0cmFuc3BhcmVudCAwLCB0cmFuc3BhcmVudCl9Lm1hdC1zbGlkZXItdmVydGljYWxbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1zbGlkZXItdGlja3NbX25nY29udGVudC0lQ09NUCVde2JhY2tncm91bmQtaW1hZ2U6cmVwZWF0aW5nLWxpbmVhci1ncmFkaWVudCh0byBib3R0b20sIHJnYmEoMCwgMCwgMCwgMC43KSwgcmdiYSgwLCAwLCAwLCAwLjcpIDJweCwgdHJhbnNwYXJlbnQgMCwgdHJhbnNwYXJlbnQpfS5tYXQtc3RlcC1oZWFkZXIuY2RrLWtleWJvYXJkLWZvY3VzZWRbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXN0ZXAtaGVhZGVyLmNkay1wcm9ncmFtLWZvY3VzZWRbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXN0ZXAtaGVhZGVyW19uZ2NvbnRlbnQtJUNPTVAlXTpob3ZlcntiYWNrZ3JvdW5kLWNvbG9yOnJnYmEoMCwwLDAsLjA0KX1AbWVkaWEoaG92ZXI6IG5vbmUpey5tYXQtc3RlcC1oZWFkZXJbX25nY29udGVudC0lQ09NUCVdOmhvdmVye2JhY2tncm91bmQ6bm9uZX19Lm1hdC1zdGVwLWhlYWRlcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXN0ZXAtbGFiZWxbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXN0ZXAtaGVhZGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtc3RlcC1vcHRpb25hbFtfbmdjb250ZW50LSVDT01QJV17Y29sb3I6IzYxNjE2MX0ubWF0LXN0ZXAtaGVhZGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtc3RlcC1pY29uW19uZ2NvbnRlbnQtJUNPTVAlXXtiYWNrZ3JvdW5kLWNvbG9yOiM2MTYxNjE7Y29sb3I6I2ZmZn0ubWF0LXN0ZXAtaGVhZGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtc3RlcC1pY29uLXNlbGVjdGVkW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1zdGVwLWhlYWRlcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXN0ZXAtaWNvbi1zdGF0ZS1kb25lW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1zdGVwLWhlYWRlcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXN0ZXAtaWNvbi1zdGF0ZS1lZGl0W19uZ2NvbnRlbnQtJUNPTVAlXXtiYWNrZ3JvdW5kLWNvbG9yOiNmNTdjMDA7Y29sb3I6I2ZmZn0ubWF0LXN0ZXAtaGVhZGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtc3RlcC1pY29uLXN0YXRlLWVycm9yW19uZ2NvbnRlbnQtJUNPTVAlXXtiYWNrZ3JvdW5kLWNvbG9yOnRyYW5zcGFyZW50O2NvbG9yOiNmNDQzMzZ9Lm1hdC1zdGVwLWhlYWRlcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXN0ZXAtbGFiZWwubWF0LXN0ZXAtbGFiZWwtYWN0aXZlW19uZ2NvbnRlbnQtJUNPTVAlXXtjb2xvcjojMjEyMTIxfS5tYXQtc3RlcC1oZWFkZXJbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1zdGVwLWxhYmVsLm1hdC1zdGVwLWxhYmVsLWVycm9yW19uZ2NvbnRlbnQtJUNPTVAlXXtjb2xvcjojZjQ0MzM2fS5tYXQtc3RlcHBlci1ob3Jpem9udGFsW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1zdGVwcGVyLXZlcnRpY2FsW19uZ2NvbnRlbnQtJUNPTVAlXXtiYWNrZ3JvdW5kLWNvbG9yOiNmZmZ9Lm1hdC1zdGVwcGVyLXZlcnRpY2FsLWxpbmVbX25nY29udGVudC0lQ09NUCVdOjpiZWZvcmV7Ym9yZGVyLWxlZnQtY29sb3I6cmdiYSgwLDAsMCwuMTIpfS5tYXQtaG9yaXpvbnRhbC1zdGVwcGVyLWhlYWRlcltfbmdjb250ZW50LSVDT01QJV06OmJlZm9yZSwgLm1hdC1ob3Jpem9udGFsLXN0ZXBwZXItaGVhZGVyW19uZ2NvbnRlbnQtJUNPTVAlXTo6YWZ0ZXIsIC5tYXQtc3RlcHBlci1ob3Jpem9udGFsLWxpbmVbX25nY29udGVudC0lQ09NUCVde2JvcmRlci10b3AtY29sb3I6cmdiYSgwLDAsMCwuMTIpfS5tYXQtaG9yaXpvbnRhbC1zdGVwcGVyLWhlYWRlcltfbmdjb250ZW50LSVDT01QJV17aGVpZ2h0OjcycHh9Lm1hdC1zdGVwcGVyLWxhYmVsLXBvc2l0aW9uLWJvdHRvbVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWhvcml6b250YWwtc3RlcHBlci1oZWFkZXJbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXZlcnRpY2FsLXN0ZXBwZXItaGVhZGVyW19uZ2NvbnRlbnQtJUNPTVAlXXtwYWRkaW5nOjI0cHggMjRweH0ubWF0LXN0ZXBwZXItdmVydGljYWwtbGluZVtfbmdjb250ZW50LSVDT01QJV06OmJlZm9yZXt0b3A6LTE2cHg7Ym90dG9tOi0xNnB4fS5tYXQtc3RlcHBlci1sYWJlbC1wb3NpdGlvbi1ib3R0b21bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1ob3Jpem9udGFsLXN0ZXBwZXItaGVhZGVyW19uZ2NvbnRlbnQtJUNPTVAlXTo6YWZ0ZXIsIC5tYXQtc3RlcHBlci1sYWJlbC1wb3NpdGlvbi1ib3R0b21bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1ob3Jpem9udGFsLXN0ZXBwZXItaGVhZGVyW19uZ2NvbnRlbnQtJUNPTVAlXTo6YmVmb3Jle3RvcDozNnB4fS5tYXQtc3RlcHBlci1sYWJlbC1wb3NpdGlvbi1ib3R0b21bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1zdGVwcGVyLWhvcml6b250YWwtbGluZVtfbmdjb250ZW50LSVDT01QJV17dG9wOjM2cHh9Lm1hdC1zb3J0LWhlYWRlci1hcnJvd1tfbmdjb250ZW50LSVDT01QJV17Y29sb3I6IzYxNjE2MX0ubWF0LXRhYi1uYXYtYmFyW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10YWItaGVhZGVyW19uZ2NvbnRlbnQtJUNPTVAlXXtib3JkZXItYm90dG9tOjFweCBzb2xpZCByZ2JhKDAsMCwwLC4xMil9Lm1hdC10YWItZ3JvdXAtaW52ZXJ0ZWQtaGVhZGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtdGFiLW5hdi1iYXJbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXRhYi1ncm91cC1pbnZlcnRlZC1oZWFkZXJbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC10YWItaGVhZGVyW19uZ2NvbnRlbnQtJUNPTVAlXXtib3JkZXItdG9wOjFweCBzb2xpZCByZ2JhKDAsMCwwLC4xMik7Ym9yZGVyLWJvdHRvbTpub25lfS5tYXQtdGFiLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10YWItbGlua1tfbmdjb250ZW50LSVDT01QJV17Y29sb3I6IzIxMjEyMX0ubWF0LXRhYi1sYWJlbC5tYXQtdGFiLWRpc2FibGVkW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10YWItbGluay5tYXQtdGFiLWRpc2FibGVkW19uZ2NvbnRlbnQtJUNPTVAlXXtjb2xvcjojNzU3NTc1fS5tYXQtdGFiLWhlYWRlci1wYWdpbmF0aW9uLWNoZXZyb25bX25nY29udGVudC0lQ09NUCVde2JvcmRlci1jb2xvcjojMjEyMTIxfS5tYXQtdGFiLWhlYWRlci1wYWdpbmF0aW9uLWRpc2FibGVkW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtdGFiLWhlYWRlci1wYWdpbmF0aW9uLWNoZXZyb25bX25nY29udGVudC0lQ09NUCVde2JvcmRlci1jb2xvcjojNzU3NTc1fS5tYXQtdGFiLWdyb3VwW2NsYXNzKj1tYXQtYmFja2dyb3VuZC1dW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtdGFiLWhlYWRlcltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdGFiLW5hdi1iYXJbY2xhc3MqPW1hdC1iYWNrZ3JvdW5kLV1bX25nY29udGVudC0lQ09NUCVde2JvcmRlci1ib3R0b206bm9uZTtib3JkZXItdG9wOm5vbmV9Lm1hdC10YWItZ3JvdXAubWF0LXByaW1hcnlbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC10YWItbGFiZWwuY2RrLWtleWJvYXJkLWZvY3VzZWRbX25nY29udGVudC0lQ09NUCVdOm5vdCgubWF0LXRhYi1kaXNhYmxlZCksIC5tYXQtdGFiLWdyb3VwLm1hdC1wcmltYXJ5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtdGFiLWxhYmVsLmNkay1wcm9ncmFtLWZvY3VzZWRbX25nY29udGVudC0lQ09NUCVdOm5vdCgubWF0LXRhYi1kaXNhYmxlZCksIC5tYXQtdGFiLWdyb3VwLm1hdC1wcmltYXJ5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtdGFiLWxpbmsuY2RrLWtleWJvYXJkLWZvY3VzZWRbX25nY29udGVudC0lQ09NUCVdOm5vdCgubWF0LXRhYi1kaXNhYmxlZCksIC5tYXQtdGFiLWdyb3VwLm1hdC1wcmltYXJ5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtdGFiLWxpbmsuY2RrLXByb2dyYW0tZm9jdXNlZFtfbmdjb250ZW50LSVDT01QJV06bm90KC5tYXQtdGFiLWRpc2FibGVkKSwgLm1hdC10YWItbmF2LWJhci5tYXQtcHJpbWFyeVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXRhYi1sYWJlbC5jZGsta2V5Ym9hcmQtZm9jdXNlZFtfbmdjb250ZW50LSVDT01QJV06bm90KC5tYXQtdGFiLWRpc2FibGVkKSwgLm1hdC10YWItbmF2LWJhci5tYXQtcHJpbWFyeVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXRhYi1sYWJlbC5jZGstcHJvZ3JhbS1mb2N1c2VkW19uZ2NvbnRlbnQtJUNPTVAlXTpub3QoLm1hdC10YWItZGlzYWJsZWQpLCAubWF0LXRhYi1uYXYtYmFyLm1hdC1wcmltYXJ5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtdGFiLWxpbmsuY2RrLWtleWJvYXJkLWZvY3VzZWRbX25nY29udGVudC0lQ09NUCVdOm5vdCgubWF0LXRhYi1kaXNhYmxlZCksIC5tYXQtdGFiLW5hdi1iYXIubWF0LXByaW1hcnlbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC10YWItbGluay5jZGstcHJvZ3JhbS1mb2N1c2VkW19uZ2NvbnRlbnQtJUNPTVAlXTpub3QoLm1hdC10YWItZGlzYWJsZWQpe2JhY2tncm91bmQtY29sb3I6cmdiYSgyNTUsMTUyLDAsLjMpfS5tYXQtdGFiLWdyb3VwLm1hdC1wcmltYXJ5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaW5rLWJhcltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdGFiLW5hdi1iYXIubWF0LXByaW1hcnlbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pbmstYmFyW19uZ2NvbnRlbnQtJUNPTVAlXXtiYWNrZ3JvdW5kLWNvbG9yOiNmNTdjMDB9Lm1hdC10YWItZ3JvdXAubWF0LXByaW1hcnkubWF0LWJhY2tncm91bmQtcHJpbWFyeVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWluay1iYXJbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXRhYi1uYXYtYmFyLm1hdC1wcmltYXJ5Lm1hdC1iYWNrZ3JvdW5kLXByaW1hcnlbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pbmstYmFyW19uZ2NvbnRlbnQtJUNPTVAlXXtiYWNrZ3JvdW5kLWNvbG9yOiNmZmZ9Lm1hdC10YWItZ3JvdXAubWF0LWFjY2VudFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXRhYi1sYWJlbC5jZGsta2V5Ym9hcmQtZm9jdXNlZFtfbmdjb250ZW50LSVDT01QJV06bm90KC5tYXQtdGFiLWRpc2FibGVkKSwgLm1hdC10YWItZ3JvdXAubWF0LWFjY2VudFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXRhYi1sYWJlbC5jZGstcHJvZ3JhbS1mb2N1c2VkW19uZ2NvbnRlbnQtJUNPTVAlXTpub3QoLm1hdC10YWItZGlzYWJsZWQpLCAubWF0LXRhYi1ncm91cC5tYXQtYWNjZW50W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtdGFiLWxpbmsuY2RrLWtleWJvYXJkLWZvY3VzZWRbX25nY29udGVudC0lQ09NUCVdOm5vdCgubWF0LXRhYi1kaXNhYmxlZCksIC5tYXQtdGFiLWdyb3VwLm1hdC1hY2NlbnRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC10YWItbGluay5jZGstcHJvZ3JhbS1mb2N1c2VkW19uZ2NvbnRlbnQtJUNPTVAlXTpub3QoLm1hdC10YWItZGlzYWJsZWQpLCAubWF0LXRhYi1uYXYtYmFyLm1hdC1hY2NlbnRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC10YWItbGFiZWwuY2RrLWtleWJvYXJkLWZvY3VzZWRbX25nY29udGVudC0lQ09NUCVdOm5vdCgubWF0LXRhYi1kaXNhYmxlZCksIC5tYXQtdGFiLW5hdi1iYXIubWF0LWFjY2VudFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXRhYi1sYWJlbC5jZGstcHJvZ3JhbS1mb2N1c2VkW19uZ2NvbnRlbnQtJUNPTVAlXTpub3QoLm1hdC10YWItZGlzYWJsZWQpLCAubWF0LXRhYi1uYXYtYmFyLm1hdC1hY2NlbnRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC10YWItbGluay5jZGsta2V5Ym9hcmQtZm9jdXNlZFtfbmdjb250ZW50LSVDT01QJV06bm90KC5tYXQtdGFiLWRpc2FibGVkKSwgLm1hdC10YWItbmF2LWJhci5tYXQtYWNjZW50W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtdGFiLWxpbmsuY2RrLXByb2dyYW0tZm9jdXNlZFtfbmdjb250ZW50LSVDT01QJV06bm90KC5tYXQtdGFiLWRpc2FibGVkKXtiYWNrZ3JvdW5kLWNvbG9yOnJnYmEoMjU1LDE1MiwwLC4zKX0ubWF0LXRhYi1ncm91cC5tYXQtYWNjZW50W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaW5rLWJhcltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdGFiLW5hdi1iYXIubWF0LWFjY2VudFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWluay1iYXJbX25nY29udGVudC0lQ09NUCVde2JhY2tncm91bmQtY29sb3I6I2ZmOTgwMH0ubWF0LXRhYi1ncm91cC5tYXQtYWNjZW50Lm1hdC1iYWNrZ3JvdW5kLWFjY2VudFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWluay1iYXJbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXRhYi1uYXYtYmFyLm1hdC1hY2NlbnQubWF0LWJhY2tncm91bmQtYWNjZW50W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaW5rLWJhcltfbmdjb250ZW50LSVDT01QJV17YmFja2dyb3VuZC1jb2xvcjojZmZmfS5tYXQtdGFiLWdyb3VwLm1hdC13YXJuW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtdGFiLWxhYmVsLmNkay1rZXlib2FyZC1mb2N1c2VkW19uZ2NvbnRlbnQtJUNPTVAlXTpub3QoLm1hdC10YWItZGlzYWJsZWQpLCAubWF0LXRhYi1ncm91cC5tYXQtd2Fybltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXRhYi1sYWJlbC5jZGstcHJvZ3JhbS1mb2N1c2VkW19uZ2NvbnRlbnQtJUNPTVAlXTpub3QoLm1hdC10YWItZGlzYWJsZWQpLCAubWF0LXRhYi1ncm91cC5tYXQtd2Fybltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXRhYi1saW5rLmNkay1rZXlib2FyZC1mb2N1c2VkW19uZ2NvbnRlbnQtJUNPTVAlXTpub3QoLm1hdC10YWItZGlzYWJsZWQpLCAubWF0LXRhYi1ncm91cC5tYXQtd2Fybltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXRhYi1saW5rLmNkay1wcm9ncmFtLWZvY3VzZWRbX25nY29udGVudC0lQ09NUCVdOm5vdCgubWF0LXRhYi1kaXNhYmxlZCksIC5tYXQtdGFiLW5hdi1iYXIubWF0LXdhcm5bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC10YWItbGFiZWwuY2RrLWtleWJvYXJkLWZvY3VzZWRbX25nY29udGVudC0lQ09NUCVdOm5vdCgubWF0LXRhYi1kaXNhYmxlZCksIC5tYXQtdGFiLW5hdi1iYXIubWF0LXdhcm5bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC10YWItbGFiZWwuY2RrLXByb2dyYW0tZm9jdXNlZFtfbmdjb250ZW50LSVDT01QJV06bm90KC5tYXQtdGFiLWRpc2FibGVkKSwgLm1hdC10YWItbmF2LWJhci5tYXQtd2Fybltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXRhYi1saW5rLmNkay1rZXlib2FyZC1mb2N1c2VkW19uZ2NvbnRlbnQtJUNPTVAlXTpub3QoLm1hdC10YWItZGlzYWJsZWQpLCAubWF0LXRhYi1uYXYtYmFyLm1hdC13YXJuW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtdGFiLWxpbmsuY2RrLXByb2dyYW0tZm9jdXNlZFtfbmdjb250ZW50LSVDT01QJV06bm90KC5tYXQtdGFiLWRpc2FibGVkKXtiYWNrZ3JvdW5kLWNvbG9yOnJnYmEoMjU1LDIwNSwyMTAsLjMpfS5tYXQtdGFiLWdyb3VwLm1hdC13YXJuW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaW5rLWJhcltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdGFiLW5hdi1iYXIubWF0LXdhcm5bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pbmstYmFyW19uZ2NvbnRlbnQtJUNPTVAlXXtiYWNrZ3JvdW5kLWNvbG9yOiNmNDQzMzZ9Lm1hdC10YWItZ3JvdXAubWF0LXdhcm4ubWF0LWJhY2tncm91bmQtd2Fybltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWluay1iYXJbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXRhYi1uYXYtYmFyLm1hdC13YXJuLm1hdC1iYWNrZ3JvdW5kLXdhcm5bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pbmstYmFyW19uZ2NvbnRlbnQtJUNPTVAlXXtiYWNrZ3JvdW5kLWNvbG9yOiNmZmZ9Lm1hdC10YWItZ3JvdXAubWF0LWJhY2tncm91bmQtcHJpbWFyeVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXRhYi1sYWJlbC5jZGsta2V5Ym9hcmQtZm9jdXNlZFtfbmdjb250ZW50LSVDT01QJV06bm90KC5tYXQtdGFiLWRpc2FibGVkKSwgLm1hdC10YWItZ3JvdXAubWF0LWJhY2tncm91bmQtcHJpbWFyeVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXRhYi1sYWJlbC5jZGstcHJvZ3JhbS1mb2N1c2VkW19uZ2NvbnRlbnQtJUNPTVAlXTpub3QoLm1hdC10YWItZGlzYWJsZWQpLCAubWF0LXRhYi1ncm91cC5tYXQtYmFja2dyb3VuZC1wcmltYXJ5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtdGFiLWxpbmsuY2RrLWtleWJvYXJkLWZvY3VzZWRbX25nY29udGVudC0lQ09NUCVdOm5vdCgubWF0LXRhYi1kaXNhYmxlZCksIC5tYXQtdGFiLWdyb3VwLm1hdC1iYWNrZ3JvdW5kLXByaW1hcnlbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC10YWItbGluay5jZGstcHJvZ3JhbS1mb2N1c2VkW19uZ2NvbnRlbnQtJUNPTVAlXTpub3QoLm1hdC10YWItZGlzYWJsZWQpLCAubWF0LXRhYi1uYXYtYmFyLm1hdC1iYWNrZ3JvdW5kLXByaW1hcnlbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC10YWItbGFiZWwuY2RrLWtleWJvYXJkLWZvY3VzZWRbX25nY29udGVudC0lQ09NUCVdOm5vdCgubWF0LXRhYi1kaXNhYmxlZCksIC5tYXQtdGFiLW5hdi1iYXIubWF0LWJhY2tncm91bmQtcHJpbWFyeVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXRhYi1sYWJlbC5jZGstcHJvZ3JhbS1mb2N1c2VkW19uZ2NvbnRlbnQtJUNPTVAlXTpub3QoLm1hdC10YWItZGlzYWJsZWQpLCAubWF0LXRhYi1uYXYtYmFyLm1hdC1iYWNrZ3JvdW5kLXByaW1hcnlbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC10YWItbGluay5jZGsta2V5Ym9hcmQtZm9jdXNlZFtfbmdjb250ZW50LSVDT01QJV06bm90KC5tYXQtdGFiLWRpc2FibGVkKSwgLm1hdC10YWItbmF2LWJhci5tYXQtYmFja2dyb3VuZC1wcmltYXJ5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtdGFiLWxpbmsuY2RrLXByb2dyYW0tZm9jdXNlZFtfbmdjb250ZW50LSVDT01QJV06bm90KC5tYXQtdGFiLWRpc2FibGVkKXtiYWNrZ3JvdW5kLWNvbG9yOnJnYmEoMjU1LDE1MiwwLC4zKX0ubWF0LXRhYi1ncm91cC5tYXQtYmFja2dyb3VuZC1wcmltYXJ5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtdGFiLWhlYWRlcltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdGFiLWdyb3VwLm1hdC1iYWNrZ3JvdW5kLXByaW1hcnlbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC10YWItbGlua3NbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXRhYi1ncm91cC5tYXQtYmFja2dyb3VuZC1wcmltYXJ5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtdGFiLWhlYWRlci1wYWdpbmF0aW9uW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10YWItbmF2LWJhci5tYXQtYmFja2dyb3VuZC1wcmltYXJ5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtdGFiLWhlYWRlcltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdGFiLW5hdi1iYXIubWF0LWJhY2tncm91bmQtcHJpbWFyeVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXRhYi1saW5rc1tfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdGFiLW5hdi1iYXIubWF0LWJhY2tncm91bmQtcHJpbWFyeVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXRhYi1oZWFkZXItcGFnaW5hdGlvbltfbmdjb250ZW50LSVDT01QJV17YmFja2dyb3VuZC1jb2xvcjojZjU3YzAwfS5tYXQtdGFiLWdyb3VwLm1hdC1iYWNrZ3JvdW5kLXByaW1hcnlbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC10YWItbGFiZWxbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXRhYi1ncm91cC5tYXQtYmFja2dyb3VuZC1wcmltYXJ5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtdGFiLWxpbmtbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXRhYi1uYXYtYmFyLm1hdC1iYWNrZ3JvdW5kLXByaW1hcnlbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC10YWItbGFiZWxbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXRhYi1uYXYtYmFyLm1hdC1iYWNrZ3JvdW5kLXByaW1hcnlbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC10YWItbGlua1tfbmdjb250ZW50LSVDT01QJV17Y29sb3I6I2ZmZn0ubWF0LXRhYi1ncm91cC5tYXQtYmFja2dyb3VuZC1wcmltYXJ5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtdGFiLWxhYmVsLm1hdC10YWItZGlzYWJsZWRbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXRhYi1ncm91cC5tYXQtYmFja2dyb3VuZC1wcmltYXJ5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtdGFiLWxpbmsubWF0LXRhYi1kaXNhYmxlZFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdGFiLW5hdi1iYXIubWF0LWJhY2tncm91bmQtcHJpbWFyeVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXRhYi1sYWJlbC5tYXQtdGFiLWRpc2FibGVkW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10YWItbmF2LWJhci5tYXQtYmFja2dyb3VuZC1wcmltYXJ5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtdGFiLWxpbmsubWF0LXRhYi1kaXNhYmxlZFtfbmdjb250ZW50LSVDT01QJV17Y29sb3I6cmdiYSgyNTUsMjU1LDI1NSwuNCl9Lm1hdC10YWItZ3JvdXAubWF0LWJhY2tncm91bmQtcHJpbWFyeVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXRhYi1oZWFkZXItcGFnaW5hdGlvbi1jaGV2cm9uW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10YWItbmF2LWJhci5tYXQtYmFja2dyb3VuZC1wcmltYXJ5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtdGFiLWhlYWRlci1wYWdpbmF0aW9uLWNoZXZyb25bX25nY29udGVudC0lQ09NUCVde2JvcmRlci1jb2xvcjojZmZmfS5tYXQtdGFiLWdyb3VwLm1hdC1iYWNrZ3JvdW5kLXByaW1hcnlbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC10YWItaGVhZGVyLXBhZ2luYXRpb24tZGlzYWJsZWRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC10YWItaGVhZGVyLXBhZ2luYXRpb24tY2hldnJvbltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdGFiLW5hdi1iYXIubWF0LWJhY2tncm91bmQtcHJpbWFyeVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXRhYi1oZWFkZXItcGFnaW5hdGlvbi1kaXNhYmxlZFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXRhYi1oZWFkZXItcGFnaW5hdGlvbi1jaGV2cm9uW19uZ2NvbnRlbnQtJUNPTVAlXXtib3JkZXItY29sb3I6cmdiYSgyNTUsMjU1LDI1NSwuNCl9Lm1hdC10YWItZ3JvdXAubWF0LWJhY2tncm91bmQtcHJpbWFyeVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXJpcHBsZS1lbGVtZW50W19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10YWItbmF2LWJhci5tYXQtYmFja2dyb3VuZC1wcmltYXJ5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtcmlwcGxlLWVsZW1lbnRbX25nY29udGVudC0lQ09NUCVde2JhY2tncm91bmQtY29sb3I6cmdiYSgyNTUsMjU1LDI1NSwuMTIpfS5tYXQtdGFiLWdyb3VwLm1hdC1iYWNrZ3JvdW5kLWFjY2VudFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXRhYi1sYWJlbC5jZGsta2V5Ym9hcmQtZm9jdXNlZFtfbmdjb250ZW50LSVDT01QJV06bm90KC5tYXQtdGFiLWRpc2FibGVkKSwgLm1hdC10YWItZ3JvdXAubWF0LWJhY2tncm91bmQtYWNjZW50W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtdGFiLWxhYmVsLmNkay1wcm9ncmFtLWZvY3VzZWRbX25nY29udGVudC0lQ09NUCVdOm5vdCgubWF0LXRhYi1kaXNhYmxlZCksIC5tYXQtdGFiLWdyb3VwLm1hdC1iYWNrZ3JvdW5kLWFjY2VudFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXRhYi1saW5rLmNkay1rZXlib2FyZC1mb2N1c2VkW19uZ2NvbnRlbnQtJUNPTVAlXTpub3QoLm1hdC10YWItZGlzYWJsZWQpLCAubWF0LXRhYi1ncm91cC5tYXQtYmFja2dyb3VuZC1hY2NlbnRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC10YWItbGluay5jZGstcHJvZ3JhbS1mb2N1c2VkW19uZ2NvbnRlbnQtJUNPTVAlXTpub3QoLm1hdC10YWItZGlzYWJsZWQpLCAubWF0LXRhYi1uYXYtYmFyLm1hdC1iYWNrZ3JvdW5kLWFjY2VudFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXRhYi1sYWJlbC5jZGsta2V5Ym9hcmQtZm9jdXNlZFtfbmdjb250ZW50LSVDT01QJV06bm90KC5tYXQtdGFiLWRpc2FibGVkKSwgLm1hdC10YWItbmF2LWJhci5tYXQtYmFja2dyb3VuZC1hY2NlbnRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC10YWItbGFiZWwuY2RrLXByb2dyYW0tZm9jdXNlZFtfbmdjb250ZW50LSVDT01QJV06bm90KC5tYXQtdGFiLWRpc2FibGVkKSwgLm1hdC10YWItbmF2LWJhci5tYXQtYmFja2dyb3VuZC1hY2NlbnRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC10YWItbGluay5jZGsta2V5Ym9hcmQtZm9jdXNlZFtfbmdjb250ZW50LSVDT01QJV06bm90KC5tYXQtdGFiLWRpc2FibGVkKSwgLm1hdC10YWItbmF2LWJhci5tYXQtYmFja2dyb3VuZC1hY2NlbnRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC10YWItbGluay5jZGstcHJvZ3JhbS1mb2N1c2VkW19uZ2NvbnRlbnQtJUNPTVAlXTpub3QoLm1hdC10YWItZGlzYWJsZWQpe2JhY2tncm91bmQtY29sb3I6cmdiYSgyNTUsMTUyLDAsLjMpfS5tYXQtdGFiLWdyb3VwLm1hdC1iYWNrZ3JvdW5kLWFjY2VudFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXRhYi1oZWFkZXJbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXRhYi1ncm91cC5tYXQtYmFja2dyb3VuZC1hY2NlbnRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC10YWItbGlua3NbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXRhYi1ncm91cC5tYXQtYmFja2dyb3VuZC1hY2NlbnRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC10YWItaGVhZGVyLXBhZ2luYXRpb25bX25nY29udGVudC0lQ09NUCVdLCAubWF0LXRhYi1uYXYtYmFyLm1hdC1iYWNrZ3JvdW5kLWFjY2VudFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXRhYi1oZWFkZXJbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXRhYi1uYXYtYmFyLm1hdC1iYWNrZ3JvdW5kLWFjY2VudFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXRhYi1saW5rc1tfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdGFiLW5hdi1iYXIubWF0LWJhY2tncm91bmQtYWNjZW50W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtdGFiLWhlYWRlci1wYWdpbmF0aW9uW19uZ2NvbnRlbnQtJUNPTVAlXXtiYWNrZ3JvdW5kLWNvbG9yOiNmZjk4MDB9Lm1hdC10YWItZ3JvdXAubWF0LWJhY2tncm91bmQtYWNjZW50W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtdGFiLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10YWItZ3JvdXAubWF0LWJhY2tncm91bmQtYWNjZW50W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtdGFiLWxpbmtbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXRhYi1uYXYtYmFyLm1hdC1iYWNrZ3JvdW5kLWFjY2VudFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXRhYi1sYWJlbFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdGFiLW5hdi1iYXIubWF0LWJhY2tncm91bmQtYWNjZW50W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtdGFiLWxpbmtbX25nY29udGVudC0lQ09NUCVde2NvbG9yOiNmZmZ9Lm1hdC10YWItZ3JvdXAubWF0LWJhY2tncm91bmQtYWNjZW50W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtdGFiLWxhYmVsLm1hdC10YWItZGlzYWJsZWRbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXRhYi1ncm91cC5tYXQtYmFja2dyb3VuZC1hY2NlbnRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC10YWItbGluay5tYXQtdGFiLWRpc2FibGVkW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10YWItbmF2LWJhci5tYXQtYmFja2dyb3VuZC1hY2NlbnRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC10YWItbGFiZWwubWF0LXRhYi1kaXNhYmxlZFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdGFiLW5hdi1iYXIubWF0LWJhY2tncm91bmQtYWNjZW50W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtdGFiLWxpbmsubWF0LXRhYi1kaXNhYmxlZFtfbmdjb250ZW50LSVDT01QJV17Y29sb3I6cmdiYSgyNTUsMjU1LDI1NSwuNCl9Lm1hdC10YWItZ3JvdXAubWF0LWJhY2tncm91bmQtYWNjZW50W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtdGFiLWhlYWRlci1wYWdpbmF0aW9uLWNoZXZyb25bX25nY29udGVudC0lQ09NUCVdLCAubWF0LXRhYi1uYXYtYmFyLm1hdC1iYWNrZ3JvdW5kLWFjY2VudFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXRhYi1oZWFkZXItcGFnaW5hdGlvbi1jaGV2cm9uW19uZ2NvbnRlbnQtJUNPTVAlXXtib3JkZXItY29sb3I6I2ZmZn0ubWF0LXRhYi1ncm91cC5tYXQtYmFja2dyb3VuZC1hY2NlbnRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC10YWItaGVhZGVyLXBhZ2luYXRpb24tZGlzYWJsZWRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC10YWItaGVhZGVyLXBhZ2luYXRpb24tY2hldnJvbltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdGFiLW5hdi1iYXIubWF0LWJhY2tncm91bmQtYWNjZW50W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtdGFiLWhlYWRlci1wYWdpbmF0aW9uLWRpc2FibGVkW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtdGFiLWhlYWRlci1wYWdpbmF0aW9uLWNoZXZyb25bX25nY29udGVudC0lQ09NUCVde2JvcmRlci1jb2xvcjpyZ2JhKDI1NSwyNTUsMjU1LC40KX0ubWF0LXRhYi1ncm91cC5tYXQtYmFja2dyb3VuZC1hY2NlbnRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1yaXBwbGUtZWxlbWVudFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdGFiLW5hdi1iYXIubWF0LWJhY2tncm91bmQtYWNjZW50W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtcmlwcGxlLWVsZW1lbnRbX25nY29udGVudC0lQ09NUCVde2JhY2tncm91bmQtY29sb3I6cmdiYSgyNTUsMjU1LDI1NSwuMTIpfS5tYXQtdGFiLWdyb3VwLm1hdC1iYWNrZ3JvdW5kLXdhcm5bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC10YWItbGFiZWwuY2RrLWtleWJvYXJkLWZvY3VzZWRbX25nY29udGVudC0lQ09NUCVdOm5vdCgubWF0LXRhYi1kaXNhYmxlZCksIC5tYXQtdGFiLWdyb3VwLm1hdC1iYWNrZ3JvdW5kLXdhcm5bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC10YWItbGFiZWwuY2RrLXByb2dyYW0tZm9jdXNlZFtfbmdjb250ZW50LSVDT01QJV06bm90KC5tYXQtdGFiLWRpc2FibGVkKSwgLm1hdC10YWItZ3JvdXAubWF0LWJhY2tncm91bmQtd2Fybltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXRhYi1saW5rLmNkay1rZXlib2FyZC1mb2N1c2VkW19uZ2NvbnRlbnQtJUNPTVAlXTpub3QoLm1hdC10YWItZGlzYWJsZWQpLCAubWF0LXRhYi1ncm91cC5tYXQtYmFja2dyb3VuZC13YXJuW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtdGFiLWxpbmsuY2RrLXByb2dyYW0tZm9jdXNlZFtfbmdjb250ZW50LSVDT01QJV06bm90KC5tYXQtdGFiLWRpc2FibGVkKSwgLm1hdC10YWItbmF2LWJhci5tYXQtYmFja2dyb3VuZC13YXJuW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtdGFiLWxhYmVsLmNkay1rZXlib2FyZC1mb2N1c2VkW19uZ2NvbnRlbnQtJUNPTVAlXTpub3QoLm1hdC10YWItZGlzYWJsZWQpLCAubWF0LXRhYi1uYXYtYmFyLm1hdC1iYWNrZ3JvdW5kLXdhcm5bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC10YWItbGFiZWwuY2RrLXByb2dyYW0tZm9jdXNlZFtfbmdjb250ZW50LSVDT01QJV06bm90KC5tYXQtdGFiLWRpc2FibGVkKSwgLm1hdC10YWItbmF2LWJhci5tYXQtYmFja2dyb3VuZC13YXJuW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtdGFiLWxpbmsuY2RrLWtleWJvYXJkLWZvY3VzZWRbX25nY29udGVudC0lQ09NUCVdOm5vdCgubWF0LXRhYi1kaXNhYmxlZCksIC5tYXQtdGFiLW5hdi1iYXIubWF0LWJhY2tncm91bmQtd2Fybltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXRhYi1saW5rLmNkay1wcm9ncmFtLWZvY3VzZWRbX25nY29udGVudC0lQ09NUCVdOm5vdCgubWF0LXRhYi1kaXNhYmxlZCl7YmFja2dyb3VuZC1jb2xvcjpyZ2JhKDI1NSwyMDUsMjEwLC4zKX0ubWF0LXRhYi1ncm91cC5tYXQtYmFja2dyb3VuZC13YXJuW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtdGFiLWhlYWRlcltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdGFiLWdyb3VwLm1hdC1iYWNrZ3JvdW5kLXdhcm5bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC10YWItbGlua3NbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXRhYi1ncm91cC5tYXQtYmFja2dyb3VuZC13YXJuW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtdGFiLWhlYWRlci1wYWdpbmF0aW9uW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10YWItbmF2LWJhci5tYXQtYmFja2dyb3VuZC13YXJuW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtdGFiLWhlYWRlcltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdGFiLW5hdi1iYXIubWF0LWJhY2tncm91bmQtd2Fybltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXRhYi1saW5rc1tfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdGFiLW5hdi1iYXIubWF0LWJhY2tncm91bmQtd2Fybltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXRhYi1oZWFkZXItcGFnaW5hdGlvbltfbmdjb250ZW50LSVDT01QJV17YmFja2dyb3VuZC1jb2xvcjojZjQ0MzM2fS5tYXQtdGFiLWdyb3VwLm1hdC1iYWNrZ3JvdW5kLXdhcm5bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC10YWItbGFiZWxbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXRhYi1ncm91cC5tYXQtYmFja2dyb3VuZC13YXJuW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtdGFiLWxpbmtbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXRhYi1uYXYtYmFyLm1hdC1iYWNrZ3JvdW5kLXdhcm5bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC10YWItbGFiZWxbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXRhYi1uYXYtYmFyLm1hdC1iYWNrZ3JvdW5kLXdhcm5bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC10YWItbGlua1tfbmdjb250ZW50LSVDT01QJV17Y29sb3I6I2ZmZn0ubWF0LXRhYi1ncm91cC5tYXQtYmFja2dyb3VuZC13YXJuW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtdGFiLWxhYmVsLm1hdC10YWItZGlzYWJsZWRbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXRhYi1ncm91cC5tYXQtYmFja2dyb3VuZC13YXJuW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtdGFiLWxpbmsubWF0LXRhYi1kaXNhYmxlZFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdGFiLW5hdi1iYXIubWF0LWJhY2tncm91bmQtd2Fybltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXRhYi1sYWJlbC5tYXQtdGFiLWRpc2FibGVkW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10YWItbmF2LWJhci5tYXQtYmFja2dyb3VuZC13YXJuW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtdGFiLWxpbmsubWF0LXRhYi1kaXNhYmxlZFtfbmdjb250ZW50LSVDT01QJV17Y29sb3I6cmdiYSgyNTUsMjU1LDI1NSwuNCl9Lm1hdC10YWItZ3JvdXAubWF0LWJhY2tncm91bmQtd2Fybltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXRhYi1oZWFkZXItcGFnaW5hdGlvbi1jaGV2cm9uW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10YWItbmF2LWJhci5tYXQtYmFja2dyb3VuZC13YXJuW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtdGFiLWhlYWRlci1wYWdpbmF0aW9uLWNoZXZyb25bX25nY29udGVudC0lQ09NUCVde2JvcmRlci1jb2xvcjojZmZmfS5tYXQtdGFiLWdyb3VwLm1hdC1iYWNrZ3JvdW5kLXdhcm5bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC10YWItaGVhZGVyLXBhZ2luYXRpb24tZGlzYWJsZWRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC10YWItaGVhZGVyLXBhZ2luYXRpb24tY2hldnJvbltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdGFiLW5hdi1iYXIubWF0LWJhY2tncm91bmQtd2Fybltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXRhYi1oZWFkZXItcGFnaW5hdGlvbi1kaXNhYmxlZFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXRhYi1oZWFkZXItcGFnaW5hdGlvbi1jaGV2cm9uW19uZ2NvbnRlbnQtJUNPTVAlXXtib3JkZXItY29sb3I6cmdiYSgyNTUsMjU1LDI1NSwuNCl9Lm1hdC10YWItZ3JvdXAubWF0LWJhY2tncm91bmQtd2Fybltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXJpcHBsZS1lbGVtZW50W19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10YWItbmF2LWJhci5tYXQtYmFja2dyb3VuZC13YXJuW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtcmlwcGxlLWVsZW1lbnRbX25nY29udGVudC0lQ09NUCVde2JhY2tncm91bmQtY29sb3I6cmdiYSgyNTUsMjU1LDI1NSwuMTIpfS5tYXQtdG9vbGJhcltfbmdjb250ZW50LSVDT01QJV17YmFja2dyb3VuZDojZjVmNWY1O2NvbG9yOiMyMTIxMjF9Lm1hdC10b29sYmFyLm1hdC1wcmltYXJ5W19uZ2NvbnRlbnQtJUNPTVAlXXtiYWNrZ3JvdW5kOiNmNTdjMDA7Y29sb3I6I2ZmZn0ubWF0LXRvb2xiYXIubWF0LWFjY2VudFtfbmdjb250ZW50LSVDT01QJV17YmFja2dyb3VuZDojZmY5ODAwO2NvbG9yOiNmZmZ9Lm1hdC10b29sYmFyLm1hdC13YXJuW19uZ2NvbnRlbnQtJUNPTVAlXXtiYWNrZ3JvdW5kOiNmNDQzMzY7Y29sb3I6I2ZmZn0ubWF0LXRvb2xiYXJbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLXVuZGVybGluZVtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdG9vbGJhcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtcmlwcGxlW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10b29sYmFyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9jdXNlZFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtcmlwcGxlW19uZ2NvbnRlbnQtJUNPTVAlXXtiYWNrZ3JvdW5kLWNvbG9yOmN1cnJlbnRDb2xvcn0ubWF0LXRvb2xiYXJbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10b29sYmFyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9jdXNlZFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXRvb2xiYXJbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1zZWxlY3QtdmFsdWVbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXRvb2xiYXJbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1zZWxlY3QtYXJyb3dbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXRvb2xiYXJbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLm1hdC1mb2N1c2VkW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtc2VsZWN0LWFycm93W19uZ2NvbnRlbnQtJUNPTVAlXXtjb2xvcjppbmhlcml0fS5tYXQtdG9vbGJhcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWlucHV0LWVsZW1lbnRbX25nY29udGVudC0lQ09NUCVde2NhcmV0LWNvbG9yOmN1cnJlbnRDb2xvcn0ubWF0LXRvb2xiYXItbXVsdGlwbGUtcm93c1tfbmdjb250ZW50LSVDT01QJV17bWluLWhlaWdodDo2NHB4fS5tYXQtdG9vbGJhci1yb3dbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXRvb2xiYXItc2luZ2xlLXJvd1tfbmdjb250ZW50LSVDT01QJV17aGVpZ2h0OjY0cHh9QG1lZGlhKG1heC13aWR0aDogNTk5cHgpey5tYXQtdG9vbGJhci1tdWx0aXBsZS1yb3dzW19uZ2NvbnRlbnQtJUNPTVAlXXttaW4taGVpZ2h0OjU2cHh9Lm1hdC10b29sYmFyLXJvd1tfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdG9vbGJhci1zaW5nbGUtcm93W19uZ2NvbnRlbnQtJUNPTVAlXXtoZWlnaHQ6NTZweH19Lm1hdC10b29sdGlwW19uZ2NvbnRlbnQtJUNPTVAlXXtiYWNrZ3JvdW5kOnJnYmEoOTcsOTcsOTcsLjkpfS5tYXQtdHJlZVtfbmdjb250ZW50LSVDT01QJV17YmFja2dyb3VuZDojZmZmfS5tYXQtdHJlZS1ub2RlW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1uZXN0ZWQtdHJlZS1ub2RlW19uZ2NvbnRlbnQtJUNPTVAlXXtjb2xvcjojMjEyMTIxfS5tYXQtdHJlZS1ub2RlW19uZ2NvbnRlbnQtJUNPTVAlXXttaW4taGVpZ2h0OjQ4cHh9Lm1hdC1zbmFjay1iYXItY29udGFpbmVyW19uZ2NvbnRlbnQtJUNPTVAlXXtjb2xvcjpyZ2JhKDI1NSwyNTUsMjU1LC43KTtiYWNrZ3JvdW5kOiMzMjMyMzI7Ym94LXNoYWRvdzowcHggM3B4IDVweCAtMXB4IHJnYmEoMCwgMCwgMCwgMC4yKSwwcHggNnB4IDEwcHggMHB4IHJnYmEoMCwgMCwgMCwgMC4xNCksMHB4IDFweCAxOHB4IDBweCByZ2JhKDAsIDAsIDAsIDAuMTIpfS5tYXQtc2ltcGxlLXNuYWNrYmFyLWFjdGlvbltfbmdjb250ZW50LSVDT01QJV17Y29sb3I6I2ZmOTgwMH0ucGMtY29udGFpbmVyW19uZ2NvbnRlbnQtJUNPTVAlXXtiYWNrZ3JvdW5kLWNvbG9yOiNmZmY7Ym9yZGVyOjFweCBzb2xpZCAjZWJlYmVifS5wYy10b29sYmFyW19uZ2NvbnRlbnQtJUNPTVAlXXthbGlnbi1pdGVtczpjZW50ZXI7Ym9yZGVyLWJvdHRvbToxcHggc29saWQgI2ViZWJlYjtkaXNwbGF5OmZsZXg7aGVpZ2h0OjQycHg7cGFkZGluZzowIDE2cHh9LnBjLXRpdGxlW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MTRweDtmb250LXdlaWdodDo1MDA7ZGlzcGxheTppbmxpbmU7ZmxleDoxIDF9J10sY2hhbmdlRGV0ZWN0aW9uOjB9KTtjbGFzcyBwYnR7Y29uc3RydWN0b3IodCl7dGhpcy5zdG9yZT10LHRoaXMucGNFeHBhbmRlZCQ9dGhpcy5zdG9yZS5waXBlKGx2KEJkdCkpLHRoaXMuc2VsZWN0ZWRBbm5vdGF0aW9ucyQ9dGhpcy5zdG9yZS5zZWxlY3QoUmR0KX1jbGVhclNlbGVjdGVkQW5ub3RhdGlvbnMoKXt0aGlzLnN0b3JlLmRpc3BhdGNoKGVndCgpKX10b2dnbGVFeHBhbmRlZCgpe3RoaXMuc3RvcmUuZGlzcGF0Y2goZ2d0KCkpfX1mdW5jdGlvbiBiYnQodCxuKXsxJnQmJihLZygwLCJkaXYiLDYpLEtnKDEsImRpdiIsNyksdHAoMiwibnBtaS12aW9saW4tZmlsdGVycyIsOCksS2coMywiZGl2Iiw5KSx0cCg0LCJydW5zLXNlbGVjdG9yIiksJGcoKSwkZygpLCRnKCkpLDImdCYmVHAoIndpZHRoIixncCgpLnNpZGViYXJXaWR0aCwicHgiKX1mdW5jdGlvbiB1YnQodCxuKXtpZigxJnQpe2NvbnN0IHQ9b3AoKTtLZygwLCJkaXYiLDEwKSxjcCgibW91c2Vkb3duIiwoZnVuY3Rpb24gbigpe3JldHVybiBqcih0KSxncCgpLnJlc2l6ZUdyYWJiZWQuZW1pdCgpfSkpLCRnKCl9fWZ1bmN0aW9uIGZidCh0LG4pezEmdCYmKEtnKDAsImRpdiIsMTEpLHRwKDEsIm5wbWktYW5ub3RhdGlvbnMtbGlzdCIsMTIpLHRwKDIsIm5wbWktc2VsZWN0ZWQtYW5ub3RhdGlvbnMiKSwkZygpKX1mdW5jdGlvbiBoYnQodCxuKXsxJnQmJihLZygwLCJkaXYiLDEzKSxKcCgxLCJZb3UgbmVlZCB0byBzZWxlY3QgYXQgbGVhc3Qgb25lIHJ1bi4iKSwkZygpKX1mdW5jdGlvbiBfYnQodCxuKXtpZigxJnQpe2NvbnN0IHQ9b3AoKTtLZygwLCJkaXYiLDE0KSxLZygxLCJidXR0b24iLDE1KSxsdSgyLDE2KSxjcCgiY2xpY2siLChmdW5jdGlvbiBuKCl7cmV0dXJuIGpyKHQpLGdwKCkudG9nZ2xlU2lkZWJhckV4cGFuZGVkLmVtaXQoKX0pKSx0cCgzLCJtYXQtaWNvbiIsMTcpLCRnKCksJGcoKX19cGJ0Lsm1ZmFjPWZ1bmN0aW9uIHQobil7cmV0dXJuIG5ldyhufHxwYnQpKFpnKGN2KSl9LHBidC7JtWNtcD1fbyh7dHlwZTpwYnQsc2VsZWN0b3JzOltbIm5wbWktc2VsZWN0ZWQtYW5ub3RhdGlvbnMiXV0sZGVjbHM6Myx2YXJzOjYsY29uc3RzOltbMywicGNFeHBhbmRlZCIsInNlbGVjdGVkQW5ub3RhdGlvbnMiLCJvbkNsZWFyU2VsZWN0ZWRBbm5vdGF0aW9ucyIsIm9uVG9nZ2xlRXhwYW5kZWQiXV0sdGVtcGxhdGU6ZnVuY3Rpb24gdChuLGUpezEmbiYmKEtnKDAsInNlbGVjdGVkLWFubm90YXRpb25zLWNvbXBvbmVudCIsMCksY3AoIm9uQ2xlYXJTZWxlY3RlZEFubm90YXRpb25zIiwoZnVuY3Rpb24gdCgpe3JldHVybiBlLmNsZWFyU2VsZWN0ZWRBbm5vdGF0aW9ucygpfSkpKCJvblRvZ2dsZUV4cGFuZGVkIiwoZnVuY3Rpb24gdCgpe3JldHVybiBlLnRvZ2dsZUV4cGFuZGVkKCl9KSkseWYoMSwiYXN5bmMiKSx5ZigyLCJhc3luYyIpLCRnKCkpLDImbiYmSmcoInBjRXhwYW5kZWQiLGtmKDEsMixlLnBjRXhwYW5kZWQkKSkoInNlbGVjdGVkQW5ub3RhdGlvbnMiLGtmKDIsNCxlLnNlbGVjdGVkQW5ub3RhdGlvbnMkKSl9LGRpcmVjdGl2ZXM6W2didF0scGlwZXM6W29PXSxlbmNhcHN1bGF0aW9uOjIsY2hhbmdlRGV0ZWN0aW9uOjB9KTtjbGFzcyBDYnR7Y29uc3RydWN0b3IoKXt0aGlzLnRvZ2dsZVNpZGViYXJFeHBhbmRlZD1uZXcgRWYsdGhpcy5yZXNpemVUcmlnZ2VyZWQ9bmV3IEVmLHRoaXMucmVzaXplR3JhYmJlZD1uZXcgRWYsdGhpcy5yZXNpemVSZWxlYXNlZD1uZXcgRWZ9fUNidC7JtWZhYz1mdW5jdGlvbiB0KG4pe3JldHVybiBuZXcobnx8Q2J0KX0sQ2J0Lsm1Y21wPV9vKHt0eXBlOkNidCxzZWxlY3RvcnM6W1sibWFpbi1jb21wb25lbnQiXV0saW5wdXRzOntydW5BY3RpdmU6InJ1bkFjdGl2ZSIsc2lkZWJhckV4cGFuZGVkOiJzaWRlYmFyRXhwYW5kZWQiLHNpZGViYXJXaWR0aDoic2lkZWJhcldpZHRoIn0sb3V0cHV0czp7dG9nZ2xlU2lkZWJhckV4cGFuZGVkOiJ0b2dnbGVTaWRlYmFyRXhwYW5kZWQiLHJlc2l6ZVRyaWdnZXJlZDoicmVzaXplVHJpZ2dlcmVkIixyZXNpemVHcmFiYmVkOiJyZXNpemVHcmFiYmVkIixyZXNpemVSZWxlYXNlZDoicmVzaXplUmVsZWFzZWQifSxkZWNsczo4LHZhcnM6NSxjb25zdHM6ZnVuY3Rpb24oKXtyZXR1cm5bWzEsImNvbnRlbnQiLDMsIm1vdXNldXAiLCJtb3VzZW1vdmUiXSxbImNsYXNzIiwic2lkZWJhci1jb250YWluZXIiLDMsIndpZHRoIiw0LCJuZ0lmIl0sWyJjbGFzcyIsImdyYWJiZXIiLDMsIm1vdXNlZG93biIsNCwibmdJZiJdLFsiY2xhc3MiLCJhbmFseXNpcy1jb250YWluZXIiLDQsIm5nSWYiLCJuZ0lmRWxzZSJdLFsibm9SdW4iLCIiXSxbImNsYXNzIiwic2lkZS10b2dnbGUiLDQsIm5nSWYiXSxbMSwic2lkZWJhci1jb250YWluZXIiXSxbMSwic2lkZWJhci1jb250ZW50cyJdLFsxLCJ2aW9saW4tZmlsdGVycyJdLFsxLCJydW4tc2VsZWN0b3IiXSxbMSwiZ3JhYmJlciIsMywibW91c2Vkb3duIl0sWzEsImFuYWx5c2lzLWNvbnRhaW5lciJdLFsxLCJhbm5vdGF0aW9ucy1saXN0Il0sWzEsIm5vUnVuIl0sWzEsInNpZGUtdG9nZ2xlIl0sWyJtYXQtaWNvbi1idXR0b24iLCIiLDMsImNsaWNrIiw2LCJhcmlhLWxhYmVsIl0sWyJhcmlhLWxhYmVsIiwidW5kZWZpbmVkIiE9dHlwZW9mIG5nSTE4bkNsb3N1cmVNb2RlJiZuZ0kxOG5DbG9zdXJlTW9kZT9nb29nLmdldE1zZygiVG9nZ2xlIFNpZGViYXIiKTokbG9jYWxpemVgOkxhYmVsIGZvciBhIGJ1dHRvbiB0aGF0IHRvZ2dsZXMgdGhlIHNpZGViYXIu4pCfZjYzYjU3OTMyZDE3OWNjYTYyYWM5ZmNhZTYzZGQ3ZjVlNmZhMzg5ZuKQnzQ0ODUwMDkzNDc0NDQ3MDQ4Nzg6VG9nZ2xlIFNpZGViYXJgXSxbInN2Z0ljb24iLCJjaGV2cm9uX3JpZ2h0XzI0cHgiXV19LHRlbXBsYXRlOmZ1bmN0aW9uIHQobixlKXtpZigxJm4mJih0cCgwLCJucG1pLWRhdGEtc2VsZWN0aW9uIiksS2coMSwiZGl2IiwwKSxjcCgibW91c2V1cCIsKGZ1bmN0aW9uIHQoKXtyZXR1cm4gZS5yZXNpemVSZWxlYXNlZC5lbWl0KCl9KSkoIm1vdXNlbW92ZSIsKGZ1bmN0aW9uIHQobil7cmV0dXJuIGUucmVzaXplVHJpZ2dlcmVkLmVtaXQobil9KSksWWcoMixiYnQsNSwyLCJkaXYiLDEpLFlnKDMsdWJ0LDEsMCwiZGl2IiwyKSxZZyg0LGZidCwzLDAsImRpdiIsMyksWWcoNSxoYnQsMiwwLCJuZy10ZW1wbGF0ZSIsbnVsbCw0LEtmKSwkZygpLFlnKDcsX2J0LDQsMCwiZGl2Iiw1KSksMiZuKXtjb25zdCB0PXFnKDYpO3dzKDIpLEpnKCJuZ0lmIixlLnNpZGViYXJFeHBhbmRlZCksd3MoMSksSmcoIm5nSWYiLGUuc2lkZWJhckV4cGFuZGVkKSx3cygxKSxKZygibmdJZiIsITA9PT1lLnJ1bkFjdGl2ZSkoIm5nSWZFbHNlIix0KSx3cygzKSxKZygibmdJZiIsIWUuc2lkZWJhckV4cGFuZGVkKX19LGRpcmVjdGl2ZXM6W21wdCxXTSxfcHQscksscmJ0LHBidCxlQSxCQl0sc3R5bGVzOlsnLm1hdC1iYWRnZS1jb250ZW50W19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXdlaWdodDo2MDA7Zm9udC1zaXplOjEycHg7Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmfS5tYXQtYmFkZ2Utc21hbGxbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1iYWRnZS1jb250ZW50W19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6OXB4fS5tYXQtYmFkZ2UtbGFyZ2VbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1iYWRnZS1jb250ZW50W19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MjRweH0ubWF0LWgxW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1oZWFkbGluZVtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdHlwb2dyYXBoeVtfbmdjb250ZW50LSVDT01QJV0gICBoMVtfbmdjb250ZW50LSVDT01QJV17Zm9udDo0MDAgMjRweC8zMnB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtsZXR0ZXItc3BhY2luZzpub3JtYWw7bWFyZ2luOjAgMCAxNnB4fS5tYXQtaDJbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXRpdGxlW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10eXBvZ3JhcGh5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIGgyW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250OjUwMCAyMHB4LzMycHggUm9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2xldHRlci1zcGFjaW5nOm5vcm1hbDttYXJnaW46MCAwIDE2cHh9Lm1hdC1oM1tfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtc3ViaGVhZGluZy0yW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10eXBvZ3JhcGh5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIGgzW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250OjQwMCAxNnB4LzI4cHggUm9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2xldHRlci1zcGFjaW5nOm5vcm1hbDttYXJnaW46MCAwIDE2cHh9Lm1hdC1oNFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtc3ViaGVhZGluZy0xW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10eXBvZ3JhcGh5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIGg0W19uZ2NvbnRlbnQtJUNPTVAlXXtmb250OjQwMCAxNXB4LzI0cHggUm9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2xldHRlci1zcGFjaW5nOm5vcm1hbDttYXJnaW46MCAwIDE2cHh9Lm1hdC1oNVtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdHlwb2dyYXBoeVtfbmdjb250ZW50LSVDT01QJV0gICBoNVtfbmdjb250ZW50LSVDT01QJV17Zm9udDo0MDAgY2FsYygxNHB4ICogMC44MykvMjBweCBSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7bWFyZ2luOjAgMCAxMnB4fS5tYXQtaDZbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXR5cG9ncmFwaHlbX25nY29udGVudC0lQ09NUCVdICAgaDZbX25nY29udGVudC0lQ09NUCVde2ZvbnQ6NDAwIGNhbGMoMTRweCAqIDAuNjcpLzIwcHggUm9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO21hcmdpbjowIDAgMTJweH0ubWF0LWJvZHktc3Ryb25nW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1ib2R5LTJbX25nY29udGVudC0lQ09NUCVde2ZvbnQ6NTAwIDE0cHgvMjRweCBSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7bGV0dGVyLXNwYWNpbmc6bm9ybWFsfS5tYXQtYm9keVtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtYm9keS0xW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10eXBvZ3JhcGh5W19uZ2NvbnRlbnQtJUNPTVAlXXtmb250OjQwMCAxNHB4LzIwcHggUm9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2xldHRlci1zcGFjaW5nOm5vcm1hbH0ubWF0LWJvZHlbX25nY29udGVudC0lQ09NUCVdICAgcFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtYm9keS0xW19uZ2NvbnRlbnQtJUNPTVAlXSAgIHBbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXR5cG9ncmFwaHlbX25nY29udGVudC0lQ09NUCVdICAgcFtfbmdjb250ZW50LSVDT01QJV17bWFyZ2luOjAgMCAxMnB4fS5tYXQtc21hbGxbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWNhcHRpb25bX25nY29udGVudC0lQ09NUCVde2ZvbnQ6NDAwIDEycHgvMjBweCBSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7bGV0dGVyLXNwYWNpbmc6bm9ybWFsfS5tYXQtZGlzcGxheS00W19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10eXBvZ3JhcGh5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZGlzcGxheS00W19uZ2NvbnRlbnQtJUNPTVAlXXtmb250OjMwMCAxMTJweC8xMTJweCBSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7bGV0dGVyLXNwYWNpbmc6LTAuMDVlbTttYXJnaW46MCAwIDU2cHh9Lm1hdC1kaXNwbGF5LTNbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXR5cG9ncmFwaHlbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1kaXNwbGF5LTNbX25nY29udGVudC0lQ09NUCVde2ZvbnQ6NDAwIDU2cHgvNTZweCBSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7bGV0dGVyLXNwYWNpbmc6LTAuMDJlbTttYXJnaW46MCAwIDY0cHh9Lm1hdC1kaXNwbGF5LTJbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXR5cG9ncmFwaHlbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1kaXNwbGF5LTJbX25nY29udGVudC0lQ09NUCVde2ZvbnQ6NDAwIDQ1cHgvNDhweCBSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7bGV0dGVyLXNwYWNpbmc6LTAuMDA1ZW07bWFyZ2luOjAgMCA2NHB4fS5tYXQtZGlzcGxheS0xW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10eXBvZ3JhcGh5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZGlzcGxheS0xW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250OjQwMCAzNHB4LzQwcHggUm9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2xldHRlci1zcGFjaW5nOm5vcm1hbDttYXJnaW46MCAwIDY0cHh9Lm1hdC1ib3R0b20tc2hlZXQtY29udGFpbmVyW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250OjQwMCAxNHB4LzIwcHggUm9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2xldHRlci1zcGFjaW5nOm5vcm1hbH0ubWF0LWJ1dHRvbltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtcmFpc2VkLWJ1dHRvbltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtaWNvbi1idXR0b25bX25nY29udGVudC0lQ09NUCVdLCAubWF0LXN0cm9rZWQtYnV0dG9uW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1mbGF0LWJ1dHRvbltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtZmFiW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1taW5pLWZhYltfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2ZvbnQtc2l6ZToxNHB4O2ZvbnQtd2VpZ2h0OjUwMH0ubWF0LWJ1dHRvbi10b2dnbGVbX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZn0ubWF0LWNhcmRbX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZn0ubWF0LWNhcmQtdGl0bGVbX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToyNHB4O2ZvbnQtd2VpZ2h0OjUwMH0ubWF0LWNhcmQtaGVhZGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtY2FyZC10aXRsZVtfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjIwcHh9Lm1hdC1jYXJkLXN1YnRpdGxlW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1jYXJkLWNvbnRlbnRbX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToxNHB4fS5tYXQtY2hlY2tib3hbX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZn0ubWF0LWNoZWNrYm94LWxheW91dFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWNoZWNrYm94LWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXtsaW5lLWhlaWdodDoyNHB4fS5tYXQtY2hpcFtfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjE0cHg7Zm9udC13ZWlnaHQ6NTAwfS5tYXQtY2hpcFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWNoaXAtdHJhaWxpbmctaWNvbi5tYXQtaWNvbltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtY2hpcFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWNoaXAtcmVtb3ZlLm1hdC1pY29uW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MThweH0ubWF0LXRhYmxlW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWZ9Lm1hdC1oZWFkZXItY2VsbFtfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjEycHg7Zm9udC13ZWlnaHQ6NTAwfS5tYXQtY2VsbFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtZm9vdGVyLWNlbGxbX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToxNHB4fS5tYXQtY2FsZW5kYXJbX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZn0ubWF0LWNhbGVuZGFyLWJvZHlbX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToxM3B4fS5tYXQtY2FsZW5kYXItYm9keS1sYWJlbFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtY2FsZW5kYXItcGVyaW9kLWJ1dHRvbltfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjE0cHg7Zm9udC13ZWlnaHQ6NTAwfS5tYXQtY2FsZW5kYXItdGFibGUtaGVhZGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIHRoW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MTFweDtmb250LXdlaWdodDo0MDB9Lm1hdC1kaWFsb2ctdGl0bGVbX25nY29udGVudC0lQ09NUCVde2ZvbnQ6NTAwIDIwcHgvMzJweCBSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7bGV0dGVyLXNwYWNpbmc6bm9ybWFsfS5tYXQtZXhwYW5zaW9uLXBhbmVsLWhlYWRlcltfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2ZvbnQtc2l6ZToxNXB4O2ZvbnQtd2VpZ2h0OjQwMH0ubWF0LWV4cGFuc2lvbi1wYW5lbC1jb250ZW50W19uZ2NvbnRlbnQtJUNPTVAlXXtmb250OjQwMCAxNHB4LzIwcHggUm9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2xldHRlci1zcGFjaW5nOm5vcm1hbH0ubWF0LWZvcm0tZmllbGRbX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZTppbmhlcml0O2ZvbnQtd2VpZ2h0OjQwMDtsaW5lLWhlaWdodDoxLjEyNTtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7bGV0dGVyLXNwYWNpbmc6bm9ybWFsfS5tYXQtZm9ybS1maWVsZC13cmFwcGVyW19uZ2NvbnRlbnQtJUNPTVAlXXtwYWRkaW5nLWJvdHRvbToxLjM0Mzc1ZW19Lm1hdC1mb3JtLWZpZWxkLXByZWZpeFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWljb25bX25nY29udGVudC0lQ09NUCVdLCAubWF0LWZvcm0tZmllbGQtc3VmZml4W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaWNvbltfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjE1MCU7bGluZS1oZWlnaHQ6MS4xMjV9Lm1hdC1mb3JtLWZpZWxkLXByZWZpeFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWljb24tYnV0dG9uW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1mb3JtLWZpZWxkLXN1ZmZpeFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWljb24tYnV0dG9uW19uZ2NvbnRlbnQtJUNPTVAlXXtoZWlnaHQ6MS41ZW07d2lkdGg6MS41ZW19Lm1hdC1mb3JtLWZpZWxkLXByZWZpeFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWljb24tYnV0dG9uW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaWNvbltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtZm9ybS1maWVsZC1zdWZmaXhbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pY29uLWJ1dHRvbltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWljb25bX25nY29udGVudC0lQ09NUCVde2hlaWdodDoxLjEyNWVtO2xpbmUtaGVpZ2h0OjEuMTI1fS5tYXQtZm9ybS1maWVsZC1pbmZpeFtfbmdjb250ZW50LSVDT01QJV17cGFkZGluZzouNWVtIDA7Ym9yZGVyLXRvcDouODQzNzVlbSBzb2xpZCB0cmFuc3BhcmVudH0ubWF0LWZvcm0tZmllbGQtY2FuLWZsb2F0Lm1hdC1mb3JtLWZpZWxkLXNob3VsZC1mbG9hdFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWZvcm0tZmllbGQtY2FuLWZsb2F0W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaW5wdXQtc2VydmVyW19uZ2NvbnRlbnQtJUNPTVAlXTpmb2N1cyArIC5tYXQtZm9ybS1maWVsZC1sYWJlbC13cmFwcGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17dHJhbnNmb3JtOnRyYW5zbGF0ZVkoLTEuMzQzNzVlbSkgc2NhbGUoMC43NSk7d2lkdGg6MTMzLjMzMzMzMzMzMzMlfS5tYXQtZm9ybS1maWVsZC1jYW4tZmxvYXRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pbnB1dC1zZXJ2ZXJbbGFiZWxdW19uZ2NvbnRlbnQtJUNPTVAlXTpub3QoOmxhYmVsLXNob3duKSArIC5tYXQtZm9ybS1maWVsZC1sYWJlbC13cmFwcGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17dHJhbnNmb3JtOnRyYW5zbGF0ZVkoLTEuMzQzNzRlbSkgc2NhbGUoMC43NSk7d2lkdGg6MTMzLjMzMzM0MzMzMzMlfS5tYXQtZm9ybS1maWVsZC1sYWJlbC13cmFwcGVyW19uZ2NvbnRlbnQtJUNPTVAlXXt0b3A6LTAuODQzNzVlbTtwYWRkaW5nLXRvcDouODQzNzVlbX0ubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVde3RvcDoxLjM0Mzc1ZW19Lm1hdC1mb3JtLWZpZWxkLXVuZGVybGluZVtfbmdjb250ZW50LSVDT01QJV17Ym90dG9tOjEuMzQzNzVlbX0ubWF0LWZvcm0tZmllbGQtc3Vic2NyaXB0LXdyYXBwZXJbX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZTo3NSU7bWFyZ2luLXRvcDouNjY2NjY2NjY2N2VtO3RvcDpjYWxjKDEwMCUgLSAxLjc5MTY2NjY2NjdlbSl9Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtbGVnYWN5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC13cmFwcGVyW19uZ2NvbnRlbnQtJUNPTVAlXXtwYWRkaW5nLWJvdHRvbToxLjI1ZW19Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtbGVnYWN5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1pbmZpeFtfbmdjb250ZW50LSVDT01QJV17cGFkZGluZzouNDM3NWVtIDB9Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtbGVnYWN5Lm1hdC1mb3JtLWZpZWxkLWNhbi1mbG9hdC5tYXQtZm9ybS1maWVsZC1zaG91bGQtZmxvYXRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtbGVnYWN5Lm1hdC1mb3JtLWZpZWxkLWNhbi1mbG9hdFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWlucHV0LXNlcnZlcltfbmdjb250ZW50LSVDT01QJV06Zm9jdXMgKyAubWF0LWZvcm0tZmllbGQtbGFiZWwtd3JhcHBlcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVde3RyYW5zZm9ybTp0cmFuc2xhdGVZKC0xLjI4MTI1ZW0pIHNjYWxlKDAuNzUpIHBlcnNwZWN0aXZlKDEwMHB4KSB0cmFuc2xhdGVaKDAuMDAxcHgpOy1tcy10cmFuc2Zvcm06dHJhbnNsYXRlWSgtMS4yODEyNWVtKSBzY2FsZSgwLjc1KTt3aWR0aDoxMzMuMzMzMzMzMzMzMyV9Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtbGVnYWN5Lm1hdC1mb3JtLWZpZWxkLWNhbi1mbG9hdFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtYXV0b2ZpbGwtY29udHJvbFtfbmdjb250ZW50LSVDT01QJV06LXdlYmtpdC1hdXRvZmlsbCArIC5tYXQtZm9ybS1maWVsZC1sYWJlbC13cmFwcGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17dHJhbnNmb3JtOnRyYW5zbGF0ZVkoLTEuMjgxMjVlbSkgc2NhbGUoMC43NSkgcGVyc3BlY3RpdmUoMTAwcHgpIHRyYW5zbGF0ZVooMC4wMDEwMXB4KTstbXMtdHJhbnNmb3JtOnRyYW5zbGF0ZVkoLTEuMjgxMjRlbSkgc2NhbGUoMC43NSk7d2lkdGg6MTMzLjMzMzM0MzMzMzMlfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWxlZ2FjeS5tYXQtZm9ybS1maWVsZC1jYW4tZmxvYXRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pbnB1dC1zZXJ2ZXJbbGFiZWxdW19uZ2NvbnRlbnQtJUNPTVAlXTpub3QoOmxhYmVsLXNob3duKSArIC5tYXQtZm9ybS1maWVsZC1sYWJlbC13cmFwcGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17dHJhbnNmb3JtOnRyYW5zbGF0ZVkoLTEuMjgxMjVlbSkgc2NhbGUoMC43NSkgcGVyc3BlY3RpdmUoMTAwcHgpIHRyYW5zbGF0ZVooMC4wMDEwMnB4KTstbXMtdHJhbnNmb3JtOnRyYW5zbGF0ZVkoLTEuMjgxMjNlbSkgc2NhbGUoMC43NSk7d2lkdGg6MTMzLjMzMzM1MzMzMzMlfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWxlZ2FjeVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVde3RvcDoxLjI4MTI1ZW19Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtbGVnYWN5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC11bmRlcmxpbmVbX25nY29udGVudC0lQ09NUCVde2JvdHRvbToxLjI1ZW19Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtbGVnYWN5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1zdWJzY3JpcHQtd3JhcHBlcltfbmdjb250ZW50LSVDT01QJV17bWFyZ2luLXRvcDouNTQxNjY2NjY2N2VtO3RvcDpjYWxjKDEwMCUgLSAxLjY2NjY2NjY2NjdlbSl9QG1lZGlhIHByaW50ey5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWxlZ2FjeS5tYXQtZm9ybS1maWVsZC1jYW4tZmxvYXQubWF0LWZvcm0tZmllbGQtc2hvdWxkLWZsb2F0W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWxlZ2FjeS5tYXQtZm9ybS1maWVsZC1jYW4tZmxvYXRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pbnB1dC1zZXJ2ZXJbX25nY29udGVudC0lQ09NUCVdOmZvY3VzICsgLm1hdC1mb3JtLWZpZWxkLWxhYmVsLXdyYXBwZXJbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXt0cmFuc2Zvcm06dHJhbnNsYXRlWSgtMS4yODEyMmVtKSBzY2FsZSgwLjc1KX0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1sZWdhY3kubWF0LWZvcm0tZmllbGQtY2FuLWZsb2F0W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1hdXRvZmlsbC1jb250cm9sW19uZ2NvbnRlbnQtJUNPTVAlXTotd2Via2l0LWF1dG9maWxsICsgLm1hdC1mb3JtLWZpZWxkLWxhYmVsLXdyYXBwZXJbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXt0cmFuc2Zvcm06dHJhbnNsYXRlWSgtMS4yODEyMWVtKSBzY2FsZSgwLjc1KX0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1sZWdhY3kubWF0LWZvcm0tZmllbGQtY2FuLWZsb2F0W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaW5wdXQtc2VydmVyW2xhYmVsXVtfbmdjb250ZW50LSVDT01QJV06bm90KDpsYWJlbC1zaG93bikgKyAubWF0LWZvcm0tZmllbGQtbGFiZWwtd3JhcHBlcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVde3RyYW5zZm9ybTp0cmFuc2xhdGVZKC0xLjI4MTJlbSkgc2NhbGUoMC43NSl9fS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWZpbGxbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWluZml4W19uZ2NvbnRlbnQtJUNPTVAlXXtwYWRkaW5nOi4yNWVtIDAgLjc1ZW0gMH0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1maWxsW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17dG9wOjEuMDkzNzVlbTttYXJnaW4tdG9wOi0wLjVlbX0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1maWxsLm1hdC1mb3JtLWZpZWxkLWNhbi1mbG9hdC5tYXQtZm9ybS1maWVsZC1zaG91bGQtZmxvYXRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtZmlsbC5tYXQtZm9ybS1maWVsZC1jYW4tZmxvYXRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pbnB1dC1zZXJ2ZXJbX25nY29udGVudC0lQ09NUCVdOmZvY3VzICsgLm1hdC1mb3JtLWZpZWxkLWxhYmVsLXdyYXBwZXJbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXt0cmFuc2Zvcm06dHJhbnNsYXRlWSgtMC41OTM3NWVtKSBzY2FsZSgwLjc1KTt3aWR0aDoxMzMuMzMzMzMzMzMzMyV9Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtZmlsbC5tYXQtZm9ybS1maWVsZC1jYW4tZmxvYXRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pbnB1dC1zZXJ2ZXJbbGFiZWxdW19uZ2NvbnRlbnQtJUNPTVAlXTpub3QoOmxhYmVsLXNob3duKSArIC5tYXQtZm9ybS1maWVsZC1sYWJlbC13cmFwcGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17dHJhbnNmb3JtOnRyYW5zbGF0ZVkoLTAuNTkzNzRlbSkgc2NhbGUoMC43NSk7d2lkdGg6MTMzLjMzMzM0MzMzMzMlfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLW91dGxpbmVbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWluZml4W19uZ2NvbnRlbnQtJUNPTVAlXXtwYWRkaW5nOjFlbSAwIDFlbSAwfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLW91dGxpbmVbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXt0b3A6MS44NDM3NWVtO21hcmdpbi10b3A6LTAuMjVlbX0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1vdXRsaW5lLm1hdC1mb3JtLWZpZWxkLWNhbi1mbG9hdC5tYXQtZm9ybS1maWVsZC1zaG91bGQtZmxvYXRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2Utb3V0bGluZS5tYXQtZm9ybS1maWVsZC1jYW4tZmxvYXRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pbnB1dC1zZXJ2ZXJbX25nY29udGVudC0lQ09NUCVdOmZvY3VzICsgLm1hdC1mb3JtLWZpZWxkLWxhYmVsLXdyYXBwZXJbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXt0cmFuc2Zvcm06dHJhbnNsYXRlWSgtMS41OTM3NWVtKSBzY2FsZSgwLjc1KTt3aWR0aDoxMzMuMzMzMzMzMzMzMyV9Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2Utb3V0bGluZS5tYXQtZm9ybS1maWVsZC1jYW4tZmxvYXRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pbnB1dC1zZXJ2ZXJbbGFiZWxdW19uZ2NvbnRlbnQtJUNPTVAlXTpub3QoOmxhYmVsLXNob3duKSArIC5tYXQtZm9ybS1maWVsZC1sYWJlbC13cmFwcGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17dHJhbnNmb3JtOnRyYW5zbGF0ZVkoLTEuNTkzNzRlbSkgc2NhbGUoMC43NSk7d2lkdGg6MTMzLjMzMzM0MzMzMzMlfS5tYXQtZ3JpZC10aWxlLWhlYWRlcltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtZ3JpZC10aWxlLWZvb3Rlcltfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjE0cHh9Lm1hdC1ncmlkLXRpbGUtaGVhZGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGluZVtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtZ3JpZC10aWxlLWZvb3Rlcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpbmVbX25nY29udGVudC0lQ09NUCVde3doaXRlLXNwYWNlOm5vd3JhcDtvdmVyZmxvdzpoaWRkZW47dGV4dC1vdmVyZmxvdzplbGxpcHNpcztkaXNwbGF5OmJsb2NrO2JveC1zaXppbmc6Ym9yZGVyLWJveH0ubWF0LWdyaWQtdGlsZS1oZWFkZXJbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saW5lW19uZ2NvbnRlbnQtJUNPTVAlXTpudGgtY2hpbGQobisyKSwgLm1hdC1ncmlkLXRpbGUtZm9vdGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGluZVtfbmdjb250ZW50LSVDT01QJV06bnRoLWNoaWxkKG4rMil7Zm9udC1zaXplOjEycHh9aW5wdXQubWF0LWlucHV0LWVsZW1lbnRbX25nY29udGVudC0lQ09NUCVde21hcmdpbi10b3A6LTAuMDYyNWVtfS5tYXQtbWVudS1pdGVtW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7Zm9udC1zaXplOjE0cHg7Zm9udC13ZWlnaHQ6NDAwfS5tYXQtcGFnaW5hdG9yW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1wYWdpbmF0b3ItcGFnZS1zaXplW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtc2VsZWN0LXRyaWdnZXJbX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtmb250LXNpemU6MTJweH0ubWF0LXJhZGlvLWJ1dHRvbltfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmfS5tYXQtc2VsZWN0W19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWZ9Lm1hdC1zZWxlY3QtdHJpZ2dlcltfbmdjb250ZW50LSVDT01QJV17aGVpZ2h0OjEuMTI1ZW19Lm1hdC1zbGlkZS10b2dnbGUtY29udGVudFtfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmfS5tYXQtc2xpZGVyLXRodW1iLWxhYmVsLXRleHRbX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtmb250LXNpemU6MTJweDtmb250LXdlaWdodDo1MDB9Lm1hdC1zdGVwcGVyLXZlcnRpY2FsW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1zdGVwcGVyLWhvcml6b250YWxbX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZn0ubWF0LXN0ZXAtbGFiZWxbX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToxNHB4O2ZvbnQtd2VpZ2h0OjQwMH0ubWF0LXN0ZXAtc3ViLWxhYmVsLWVycm9yW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXdlaWdodDpub3JtYWx9Lm1hdC1zdGVwLWxhYmVsLWVycm9yW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MTRweH0ubWF0LXN0ZXAtbGFiZWwtc2VsZWN0ZWRbX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToxNHB4O2ZvbnQtd2VpZ2h0OjUwMH0ubWF0LXRhYi1ncm91cFtfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmfS5tYXQtdGFiLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10YWItbGlua1tfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2ZvbnQtc2l6ZToxNHB4O2ZvbnQtd2VpZ2h0OjUwMH0ubWF0LXRvb2xiYXJbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXRvb2xiYXJbX25nY29udGVudC0lQ09NUCVdICAgaDFbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXRvb2xiYXJbX25nY29udGVudC0lQ09NUCVdICAgaDJbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXRvb2xiYXJbX25nY29udGVudC0lQ09NUCVdICAgaDNbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXRvb2xiYXJbX25nY29udGVudC0lQ09NUCVdICAgaDRbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXRvb2xiYXJbX25nY29udGVudC0lQ09NUCVdICAgaDVbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXRvb2xiYXJbX25nY29udGVudC0lQ09NUCVdICAgaDZbX25nY29udGVudC0lQ09NUCVde2ZvbnQ6NTAwIDIwcHgvMzJweCBSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7bGV0dGVyLXNwYWNpbmc6bm9ybWFsO21hcmdpbjowfS5tYXQtdG9vbHRpcFtfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2ZvbnQtc2l6ZToxMHB4O3BhZGRpbmctdG9wOjZweDtwYWRkaW5nLWJvdHRvbTo2cHh9Lm1hdC10b29sdGlwLWhhbmRzZXRbX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToxNHB4O3BhZGRpbmctdG9wOjhweDtwYWRkaW5nLWJvdHRvbTo4cHh9Lm1hdC1saXN0LWl0ZW1bX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZn0ubWF0LWxpc3Qtb3B0aW9uW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWZ9Lm1hdC1saXN0LWJhc2VbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saXN0LWl0ZW1bX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToxNnB4fS5tYXQtbGlzdC1iYXNlW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGlzdC1pdGVtW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGluZVtfbmdjb250ZW50LSVDT01QJV17d2hpdGUtc3BhY2U6bm93cmFwO292ZXJmbG93OmhpZGRlbjt0ZXh0LW92ZXJmbG93OmVsbGlwc2lzO2Rpc3BsYXk6YmxvY2s7Ym94LXNpemluZzpib3JkZXItYm94fS5tYXQtbGlzdC1iYXNlW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGlzdC1pdGVtW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGluZVtfbmdjb250ZW50LSVDT01QJV06bnRoLWNoaWxkKG4rMil7Zm9udC1zaXplOjE0cHh9Lm1hdC1saXN0LWJhc2VbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saXN0LW9wdGlvbltfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjE2cHh9Lm1hdC1saXN0LWJhc2VbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saXN0LW9wdGlvbltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpbmVbX25nY29udGVudC0lQ09NUCVde3doaXRlLXNwYWNlOm5vd3JhcDtvdmVyZmxvdzpoaWRkZW47dGV4dC1vdmVyZmxvdzplbGxpcHNpcztkaXNwbGF5OmJsb2NrO2JveC1zaXppbmc6Ym9yZGVyLWJveH0ubWF0LWxpc3QtYmFzZVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpc3Qtb3B0aW9uW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGluZVtfbmdjb250ZW50LSVDT01QJV06bnRoLWNoaWxkKG4rMil7Zm9udC1zaXplOjE0cHh9Lm1hdC1saXN0LWJhc2VbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1zdWJoZWFkZXJbX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtmb250LXNpemU6MTRweDtmb250LXdlaWdodDo1MDB9Lm1hdC1saXN0LWJhc2VbZGVuc2VdW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGlzdC1pdGVtW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MTJweH0ubWF0LWxpc3QtYmFzZVtkZW5zZV1bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saXN0LWl0ZW1bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saW5lW19uZ2NvbnRlbnQtJUNPTVAlXXt3aGl0ZS1zcGFjZTpub3dyYXA7b3ZlcmZsb3c6aGlkZGVuO3RleHQtb3ZlcmZsb3c6ZWxsaXBzaXM7ZGlzcGxheTpibG9jaztib3gtc2l6aW5nOmJvcmRlci1ib3h9Lm1hdC1saXN0LWJhc2VbZGVuc2VdW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGlzdC1pdGVtW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGluZVtfbmdjb250ZW50LSVDT01QJV06bnRoLWNoaWxkKG4rMil7Zm9udC1zaXplOjEycHh9Lm1hdC1saXN0LWJhc2VbZGVuc2VdW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGlzdC1vcHRpb25bX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToxMnB4fS5tYXQtbGlzdC1iYXNlW2RlbnNlXVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpc3Qtb3B0aW9uW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGluZVtfbmdjb250ZW50LSVDT01QJV17d2hpdGUtc3BhY2U6bm93cmFwO292ZXJmbG93OmhpZGRlbjt0ZXh0LW92ZXJmbG93OmVsbGlwc2lzO2Rpc3BsYXk6YmxvY2s7Ym94LXNpemluZzpib3JkZXItYm94fS5tYXQtbGlzdC1iYXNlW2RlbnNlXVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpc3Qtb3B0aW9uW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGluZVtfbmdjb250ZW50LSVDT01QJV06bnRoLWNoaWxkKG4rMil7Zm9udC1zaXplOjEycHh9Lm1hdC1saXN0LWJhc2VbZGVuc2VdW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtc3ViaGVhZGVyW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7Zm9udC1zaXplOjEycHg7Zm9udC13ZWlnaHQ6NTAwfS5tYXQtb3B0aW9uW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7Zm9udC1zaXplOjE2cHh9Lm1hdC1vcHRncm91cC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17Zm9udDo1MDAgMTRweC8yNHB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtsZXR0ZXItc3BhY2luZzpub3JtYWx9Lm1hdC1zaW1wbGUtc25hY2tiYXJbX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtmb250LXNpemU6MTRweH0ubWF0LXNpbXBsZS1zbmFja2Jhci1hY3Rpb25bX25nY29udGVudC0lQ09NUCVde2xpbmUtaGVpZ2h0OjE7Zm9udC1mYW1pbHk6aW5oZXJpdDtmb250LXNpemU6aW5oZXJpdDtmb250LXdlaWdodDo1MDB9Lm1hdC10cmVlW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWZ9Lm1hdC10cmVlLW5vZGVbX25nY29udGVudC0lQ09NUCVdLCAubWF0LW5lc3RlZC10cmVlLW5vZGVbX25nY29udGVudC0lQ09NUCVde2ZvbnQtd2VpZ2h0OjQwMDtmb250LXNpemU6MTRweH0ubWF0LXJpcHBsZVtfbmdjb250ZW50LSVDT01QJV17b3ZlcmZsb3c6aGlkZGVuO3Bvc2l0aW9uOnJlbGF0aXZlfS5tYXQtcmlwcGxlW19uZ2NvbnRlbnQtJUNPTVAlXTpub3QoOmVtcHR5KXt0cmFuc2Zvcm06dHJhbnNsYXRlWigwKX0ubWF0LXJpcHBsZS5tYXQtcmlwcGxlLXVuYm91bmRlZFtfbmdjb250ZW50LSVDT01QJV17b3ZlcmZsb3c6dmlzaWJsZX0ubWF0LXJpcHBsZS1lbGVtZW50W19uZ2NvbnRlbnQtJUNPTVAlXXtwb3NpdGlvbjphYnNvbHV0ZTtib3JkZXItcmFkaXVzOjUwJTtwb2ludGVyLWV2ZW50czpub25lO3RyYW5zaXRpb246b3BhY2l0eSx0cmFuc2Zvcm0gMG1zIGN1YmljLWJlemllcigwLCAwLCAwLjIsIDEpO3RyYW5zZm9ybTpzY2FsZSgwKX0uY2RrLWhpZ2gtY29udHJhc3QtYWN0aXZlW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtcmlwcGxlLWVsZW1lbnRbX25nY29udGVudC0lQ09NUCVde2Rpc3BsYXk6bm9uZX0uY2RrLXZpc3VhbGx5LWhpZGRlbltfbmdjb250ZW50LSVDT01QJV17Ym9yZGVyOjA7Y2xpcDpyZWN0KDAgMCAwIDApO2hlaWdodDoxcHg7bWFyZ2luOi0xcHg7b3ZlcmZsb3c6aGlkZGVuO3BhZGRpbmc6MDtwb3NpdGlvbjphYnNvbHV0ZTt3aWR0aDoxcHg7b3V0bGluZTowOy13ZWJraXQtYXBwZWFyYW5jZTpub25lOy1tb3otYXBwZWFyYW5jZTpub25lfS5jZGstb3ZlcmxheS1jb250YWluZXJbX25nY29udGVudC0lQ09NUCVdLCAuY2RrLWdsb2JhbC1vdmVybGF5LXdyYXBwZXJbX25nY29udGVudC0lQ09NUCVde3BvaW50ZXItZXZlbnRzOm5vbmU7dG9wOjA7bGVmdDowO2hlaWdodDoxMDAlO3dpZHRoOjEwMCV9LmNkay1vdmVybGF5LWNvbnRhaW5lcltfbmdjb250ZW50LSVDT01QJV17cG9zaXRpb246Zml4ZWQ7ei1pbmRleDoxMDAwfS5jZGstb3ZlcmxheS1jb250YWluZXJbX25nY29udGVudC0lQ09NUCVdOmVtcHR5e2Rpc3BsYXk6bm9uZX0uY2RrLWdsb2JhbC1vdmVybGF5LXdyYXBwZXJbX25nY29udGVudC0lQ09NUCVde2Rpc3BsYXk6ZmxleDtwb3NpdGlvbjphYnNvbHV0ZTt6LWluZGV4OjEwMDB9LmNkay1vdmVybGF5LXBhbmVbX25nY29udGVudC0lQ09NUCVde3Bvc2l0aW9uOmFic29sdXRlO3BvaW50ZXItZXZlbnRzOmF1dG87Ym94LXNpemluZzpib3JkZXItYm94O3otaW5kZXg6MTAwMDtkaXNwbGF5OmZsZXg7bWF4LXdpZHRoOjEwMCU7bWF4LWhlaWdodDoxMDAlfS5jZGstb3ZlcmxheS1iYWNrZHJvcFtfbmdjb250ZW50LSVDT01QJV17cG9zaXRpb246YWJzb2x1dGU7dG9wOjA7Ym90dG9tOjA7bGVmdDowO3JpZ2h0OjA7ei1pbmRleDoxMDAwO3BvaW50ZXItZXZlbnRzOmF1dG87LXdlYmtpdC10YXAtaGlnaGxpZ2h0LWNvbG9yOnRyYW5zcGFyZW50O3RyYW5zaXRpb246b3BhY2l0eSA0MDBtcyBjdWJpYy1iZXppZXIoMC4yNSwgMC44LCAwLjI1LCAxKTtvcGFjaXR5OjB9LmNkay1vdmVybGF5LWJhY2tkcm9wLmNkay1vdmVybGF5LWJhY2tkcm9wLXNob3dpbmdbX25nY29udGVudC0lQ09NUCVde29wYWNpdHk6MX1AbWVkaWEgc2NyZWVuIGFuZCAoLW1zLWhpZ2gtY29udHJhc3Q6IGFjdGl2ZSl7LmNkay1vdmVybGF5LWJhY2tkcm9wLmNkay1vdmVybGF5LWJhY2tkcm9wLXNob3dpbmdbX25nY29udGVudC0lQ09NUCVde29wYWNpdHk6LjZ9fS5jZGstb3ZlcmxheS1kYXJrLWJhY2tkcm9wW19uZ2NvbnRlbnQtJUNPTVAlXXtiYWNrZ3JvdW5kOnJnYmEoMCwwLDAsLjMyKX0uY2RrLW92ZXJsYXktdHJhbnNwYXJlbnQtYmFja2Ryb3BbX25nY29udGVudC0lQ09NUCVdLCAuY2RrLW92ZXJsYXktdHJhbnNwYXJlbnQtYmFja2Ryb3AuY2RrLW92ZXJsYXktYmFja2Ryb3Atc2hvd2luZ1tfbmdjb250ZW50LSVDT01QJV17b3BhY2l0eTowfS5jZGstb3ZlcmxheS1jb25uZWN0ZWQtcG9zaXRpb24tYm91bmRpbmctYm94W19uZ2NvbnRlbnQtJUNPTVAlXXtwb3NpdGlvbjphYnNvbHV0ZTt6LWluZGV4OjEwMDA7ZGlzcGxheTpmbGV4O2ZsZXgtZGlyZWN0aW9uOmNvbHVtbjttaW4td2lkdGg6MXB4O21pbi1oZWlnaHQ6MXB4fS5jZGstZ2xvYmFsLXNjcm9sbGJsb2NrW19uZ2NvbnRlbnQtJUNPTVAlXXtwb3NpdGlvbjpmaXhlZDt3aWR0aDoxMDAlO292ZXJmbG93LXk6c2Nyb2xsfUBrZXlmcmFtZXMgY2RrLXRleHQtZmllbGQtYXV0b2ZpbGwtc3RhcnR7fUBrZXlmcmFtZXMgY2RrLXRleHQtZmllbGQtYXV0b2ZpbGwtZW5ke30uY2RrLXRleHQtZmllbGQtYXV0b2ZpbGwtbW9uaXRvcmVkW19uZ2NvbnRlbnQtJUNPTVAlXTotd2Via2l0LWF1dG9maWxse2FuaW1hdGlvbjpjZGstdGV4dC1maWVsZC1hdXRvZmlsbC1zdGFydCAwcyAxbXN9LmNkay10ZXh0LWZpZWxkLWF1dG9maWxsLW1vbml0b3JlZFtfbmdjb250ZW50LSVDT01QJV06bm90KDotd2Via2l0LWF1dG9maWxsKXthbmltYXRpb246Y2RrLXRleHQtZmllbGQtYXV0b2ZpbGwtZW5kIDBzIDFtc310ZXh0YXJlYS5jZGstdGV4dGFyZWEtYXV0b3NpemVbX25nY29udGVudC0lQ09NUCVde3Jlc2l6ZTpub25lfXRleHRhcmVhLmNkay10ZXh0YXJlYS1hdXRvc2l6ZS1tZWFzdXJpbmdbX25nY29udGVudC0lQ09NUCVde3BhZGRpbmc6MnB4IDAgIWltcG9ydGFudDtib3gtc2l6aW5nOmNvbnRlbnQtYm94ICFpbXBvcnRhbnQ7aGVpZ2h0OmF1dG8gIWltcG9ydGFudDtvdmVyZmxvdzpoaWRkZW4gIWltcG9ydGFudH10ZXh0YXJlYS5jZGstdGV4dGFyZWEtYXV0b3NpemUtbWVhc3VyaW5nLWZpcmVmb3hbX25nY29udGVudC0lQ09NUCVde3BhZGRpbmc6MnB4IDAgIWltcG9ydGFudDtib3gtc2l6aW5nOmNvbnRlbnQtYm94ICFpbXBvcnRhbnQ7aGVpZ2h0OjAgIWltcG9ydGFudH0ubWF0LWZvY3VzLWluZGljYXRvcltfbmdjb250ZW50LSVDT01QJV17cG9zaXRpb246cmVsYXRpdmV9Lm1hdC1tZGMtZm9jdXMtaW5kaWNhdG9yW19uZ2NvbnRlbnQtJUNPTVAlXXtwb3NpdGlvbjpyZWxhdGl2ZX0ubWF0LXJpcHBsZS1lbGVtZW50W19uZ2NvbnRlbnQtJUNPTVAlXXtiYWNrZ3JvdW5kLWNvbG9yOnJnYmEoMCwwLDAsLjEpfS5tYXQtb3B0aW9uW19uZ2NvbnRlbnQtJUNPTVAlXXtjb2xvcjojMjEyMTIxfS5tYXQtb3B0aW9uW19uZ2NvbnRlbnQtJUNPTVAlXTpob3Zlcjpub3QoLm1hdC1vcHRpb24tZGlzYWJsZWQpLCAubWF0LW9wdGlvbltfbmdjb250ZW50LSVDT01QJV06Zm9jdXM6bm90KC5tYXQtb3B0aW9uLWRpc2FibGVkKXtiYWNrZ3JvdW5kOnJnYmEoMCwwLDAsLjA0KX0ubWF0LW9wdGlvbi5tYXQtc2VsZWN0ZWRbX25nY29udGVudC0lQ09NUCVdOm5vdCgubWF0LW9wdGlvbi1tdWx0aXBsZSk6bm90KC5tYXQtb3B0aW9uLWRpc2FibGVkKXtiYWNrZ3JvdW5kOnJnYmEoMCwwLDAsLjA0KX0ubWF0LW9wdGlvbi5tYXQtYWN0aXZlW19uZ2NvbnRlbnQtJUNPTVAlXXtiYWNrZ3JvdW5kOnJnYmEoMCwwLDAsLjA0KTtjb2xvcjojMjEyMTIxfS5tYXQtb3B0aW9uLm1hdC1vcHRpb24tZGlzYWJsZWRbX25nY29udGVudC0lQ09NUCVde2NvbG9yOnJnYmEoMCwwLDAsLjM4KX0ubWF0LXByaW1hcnlbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1vcHRpb24ubWF0LXNlbGVjdGVkW19uZ2NvbnRlbnQtJUNPTVAlXTpub3QoLm1hdC1vcHRpb24tZGlzYWJsZWQpe2NvbG9yOiNmNTdjMDB9Lm1hdC1hY2NlbnRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1vcHRpb24ubWF0LXNlbGVjdGVkW19uZ2NvbnRlbnQtJUNPTVAlXTpub3QoLm1hdC1vcHRpb24tZGlzYWJsZWQpe2NvbG9yOiNmZjk4MDB9Lm1hdC13YXJuW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtb3B0aW9uLm1hdC1zZWxlY3RlZFtfbmdjb250ZW50LSVDT01QJV06bm90KC5tYXQtb3B0aW9uLWRpc2FibGVkKXtjb2xvcjojZjQ0MzM2fS5tYXQtb3B0Z3JvdXAtbGFiZWxbX25nY29udGVudC0lQ09NUCVde2NvbG9yOiM2MTYxNjF9Lm1hdC1vcHRncm91cC1kaXNhYmxlZFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LW9wdGdyb3VwLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXtjb2xvcjpyZ2JhKDAsMCwwLC4zOCl9Lm1hdC1wc2V1ZG8tY2hlY2tib3hbX25nY29udGVudC0lQ09NUCVde2NvbG9yOiM2MTYxNjF9Lm1hdC1wc2V1ZG8tY2hlY2tib3hbX25nY29udGVudC0lQ09NUCVdOjphZnRlcntjb2xvcjojZmFmYWZhfS5tYXQtcHNldWRvLWNoZWNrYm94LWRpc2FibGVkW19uZ2NvbnRlbnQtJUNPTVAlXXtjb2xvcjojYjBiMGIwfS5tYXQtcHJpbWFyeVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXBzZXVkby1jaGVja2JveC1jaGVja2VkW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1wcmltYXJ5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtcHNldWRvLWNoZWNrYm94LWluZGV0ZXJtaW5hdGVbX25nY29udGVudC0lQ09NUCVde2JhY2tncm91bmQ6I2Y1N2MwMH0ubWF0LXBzZXVkby1jaGVja2JveC1jaGVja2VkW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1wc2V1ZG8tY2hlY2tib3gtaW5kZXRlcm1pbmF0ZVtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtYWNjZW50W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtcHNldWRvLWNoZWNrYm94LWNoZWNrZWRbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWFjY2VudFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXBzZXVkby1jaGVja2JveC1pbmRldGVybWluYXRlW19uZ2NvbnRlbnQtJUNPTVAlXXtiYWNrZ3JvdW5kOiNmZjk4MDB9Lm1hdC13YXJuW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtcHNldWRvLWNoZWNrYm94LWNoZWNrZWRbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXdhcm5bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1wc2V1ZG8tY2hlY2tib3gtaW5kZXRlcm1pbmF0ZVtfbmdjb250ZW50LSVDT01QJV17YmFja2dyb3VuZDojZjQ0MzM2fS5tYXQtcHNldWRvLWNoZWNrYm94LWNoZWNrZWQubWF0LXBzZXVkby1jaGVja2JveC1kaXNhYmxlZFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtcHNldWRvLWNoZWNrYm94LWluZGV0ZXJtaW5hdGUubWF0LXBzZXVkby1jaGVja2JveC1kaXNhYmxlZFtfbmdjb250ZW50LSVDT01QJV17YmFja2dyb3VuZDojYjBiMGIwfS5tYXQtYXBwLWJhY2tncm91bmRbX25nY29udGVudC0lQ09NUCVde2JhY2tncm91bmQtY29sb3I6I2ZhZmFmYTtjb2xvcjojMjEyMTIxfS5tYXQtZWxldmF0aW9uLXowW19uZ2NvbnRlbnQtJUNPTVAlXXtib3gtc2hhZG93OjBweCAwcHggMHB4IDBweCByZ2JhKDAsIDAsIDAsIDAuMiksMHB4IDBweCAwcHggMHB4IHJnYmEoMCwgMCwgMCwgMC4xNCksMHB4IDBweCAwcHggMHB4IHJnYmEoMCwgMCwgMCwgMC4xMil9Lm1hdC1lbGV2YXRpb24tejFbX25nY29udGVudC0lQ09NUCVde2JveC1zaGFkb3c6MHB4IDJweCAxcHggLTFweCByZ2JhKDAsIDAsIDAsIDAuMiksMHB4IDFweCAxcHggMHB4IHJnYmEoMCwgMCwgMCwgMC4xNCksMHB4IDFweCAzcHggMHB4IHJnYmEoMCwgMCwgMCwgMC4xMil9Lm1hdC1lbGV2YXRpb24tejJbX25nY29udGVudC0lQ09NUCVde2JveC1zaGFkb3c6MHB4IDNweCAxcHggLTJweCByZ2JhKDAsIDAsIDAsIDAuMiksMHB4IDJweCAycHggMHB4IHJnYmEoMCwgMCwgMCwgMC4xNCksMHB4IDFweCA1cHggMHB4IHJnYmEoMCwgMCwgMCwgMC4xMil9Lm1hdC1lbGV2YXRpb24tejNbX25nY29udGVudC0lQ09NUCVde2JveC1zaGFkb3c6MHB4IDNweCAzcHggLTJweCByZ2JhKDAsIDAsIDAsIDAuMiksMHB4IDNweCA0cHggMHB4IHJnYmEoMCwgMCwgMCwgMC4xNCksMHB4IDFweCA4cHggMHB4IHJnYmEoMCwgMCwgMCwgMC4xMil9Lm1hdC1lbGV2YXRpb24tejRbX25nY29udGVudC0lQ09NUCVde2JveC1zaGFkb3c6MHB4IDJweCA0cHggLTFweCByZ2JhKDAsIDAsIDAsIDAuMiksMHB4IDRweCA1cHggMHB4IHJnYmEoMCwgMCwgMCwgMC4xNCksMHB4IDFweCAxMHB4IDBweCByZ2JhKDAsIDAsIDAsIDAuMTIpfS5tYXQtZWxldmF0aW9uLXo1W19uZ2NvbnRlbnQtJUNPTVAlXXtib3gtc2hhZG93OjBweCAzcHggNXB4IC0xcHggcmdiYSgwLCAwLCAwLCAwLjIpLDBweCA1cHggOHB4IDBweCByZ2JhKDAsIDAsIDAsIDAuMTQpLDBweCAxcHggMTRweCAwcHggcmdiYSgwLCAwLCAwLCAwLjEyKX0ubWF0LWVsZXZhdGlvbi16Nltfbmdjb250ZW50LSVDT01QJV17Ym94LXNoYWRvdzowcHggM3B4IDVweCAtMXB4IHJnYmEoMCwgMCwgMCwgMC4yKSwwcHggNnB4IDEwcHggMHB4IHJnYmEoMCwgMCwgMCwgMC4xNCksMHB4IDFweCAxOHB4IDBweCByZ2JhKDAsIDAsIDAsIDAuMTIpfS5tYXQtZWxldmF0aW9uLXo3W19uZ2NvbnRlbnQtJUNPTVAlXXtib3gtc2hhZG93OjBweCA0cHggNXB4IC0ycHggcmdiYSgwLCAwLCAwLCAwLjIpLDBweCA3cHggMTBweCAxcHggcmdiYSgwLCAwLCAwLCAwLjE0KSwwcHggMnB4IDE2cHggMXB4IHJnYmEoMCwgMCwgMCwgMC4xMil9Lm1hdC1lbGV2YXRpb24tejhbX25nY29udGVudC0lQ09NUCVde2JveC1zaGFkb3c6MHB4IDVweCA1cHggLTNweCByZ2JhKDAsIDAsIDAsIDAuMiksMHB4IDhweCAxMHB4IDFweCByZ2JhKDAsIDAsIDAsIDAuMTQpLDBweCAzcHggMTRweCAycHggcmdiYSgwLCAwLCAwLCAwLjEyKX0ubWF0LWVsZXZhdGlvbi16OVtfbmdjb250ZW50LSVDT01QJV17Ym94LXNoYWRvdzowcHggNXB4IDZweCAtM3B4IHJnYmEoMCwgMCwgMCwgMC4yKSwwcHggOXB4IDEycHggMXB4IHJnYmEoMCwgMCwgMCwgMC4xNCksMHB4IDNweCAxNnB4IDJweCByZ2JhKDAsIDAsIDAsIDAuMTIpfS5tYXQtZWxldmF0aW9uLXoxMFtfbmdjb250ZW50LSVDT01QJV17Ym94LXNoYWRvdzowcHggNnB4IDZweCAtM3B4IHJnYmEoMCwgMCwgMCwgMC4yKSwwcHggMTBweCAxNHB4IDFweCByZ2JhKDAsIDAsIDAsIDAuMTQpLDBweCA0cHggMThweCAzcHggcmdiYSgwLCAwLCAwLCAwLjEyKX0ubWF0LWVsZXZhdGlvbi16MTFbX25nY29udGVudC0lQ09NUCVde2JveC1zaGFkb3c6MHB4IDZweCA3cHggLTRweCByZ2JhKDAsIDAsIDAsIDAuMiksMHB4IDExcHggMTVweCAxcHggcmdiYSgwLCAwLCAwLCAwLjE0KSwwcHggNHB4IDIwcHggM3B4IHJnYmEoMCwgMCwgMCwgMC4xMil9Lm1hdC1lbGV2YXRpb24tejEyW19uZ2NvbnRlbnQtJUNPTVAlXXtib3gtc2hhZG93OjBweCA3cHggOHB4IC00cHggcmdiYSgwLCAwLCAwLCAwLjIpLDBweCAxMnB4IDE3cHggMnB4IHJnYmEoMCwgMCwgMCwgMC4xNCksMHB4IDVweCAyMnB4IDRweCByZ2JhKDAsIDAsIDAsIDAuMTIpfS5tYXQtZWxldmF0aW9uLXoxM1tfbmdjb250ZW50LSVDT01QJV17Ym94LXNoYWRvdzowcHggN3B4IDhweCAtNHB4IHJnYmEoMCwgMCwgMCwgMC4yKSwwcHggMTNweCAxOXB4IDJweCByZ2JhKDAsIDAsIDAsIDAuMTQpLDBweCA1cHggMjRweCA0cHggcmdiYSgwLCAwLCAwLCAwLjEyKX0ubWF0LWVsZXZhdGlvbi16MTRbX25nY29udGVudC0lQ09NUCVde2JveC1zaGFkb3c6MHB4IDdweCA5cHggLTRweCByZ2JhKDAsIDAsIDAsIDAuMiksMHB4IDE0cHggMjFweCAycHggcmdiYSgwLCAwLCAwLCAwLjE0KSwwcHggNXB4IDI2cHggNHB4IHJnYmEoMCwgMCwgMCwgMC4xMil9Lm1hdC1lbGV2YXRpb24tejE1W19uZ2NvbnRlbnQtJUNPTVAlXXtib3gtc2hhZG93OjBweCA4cHggOXB4IC01cHggcmdiYSgwLCAwLCAwLCAwLjIpLDBweCAxNXB4IDIycHggMnB4IHJnYmEoMCwgMCwgMCwgMC4xNCksMHB4IDZweCAyOHB4IDVweCByZ2JhKDAsIDAsIDAsIDAuMTIpfS5tYXQtZWxldmF0aW9uLXoxNltfbmdjb250ZW50LSVDT01QJV17Ym94LXNoYWRvdzowcHggOHB4IDEwcHggLTVweCByZ2JhKDAsIDAsIDAsIDAuMiksMHB4IDE2cHggMjRweCAycHggcmdiYSgwLCAwLCAwLCAwLjE0KSwwcHggNnB4IDMwcHggNXB4IHJnYmEoMCwgMCwgMCwgMC4xMil9Lm1hdC1lbGV2YXRpb24tejE3W19uZ2NvbnRlbnQtJUNPTVAlXXtib3gtc2hhZG93OjBweCA4cHggMTFweCAtNXB4IHJnYmEoMCwgMCwgMCwgMC4yKSwwcHggMTdweCAyNnB4IDJweCByZ2JhKDAsIDAsIDAsIDAuMTQpLDBweCA2cHggMzJweCA1cHggcmdiYSgwLCAwLCAwLCAwLjEyKX0ubWF0LWVsZXZhdGlvbi16MThbX25nY29udGVudC0lQ09NUCVde2JveC1zaGFkb3c6MHB4IDlweCAxMXB4IC01cHggcmdiYSgwLCAwLCAwLCAwLjIpLDBweCAxOHB4IDI4cHggMnB4IHJnYmEoMCwgMCwgMCwgMC4xNCksMHB4IDdweCAzNHB4IDZweCByZ2JhKDAsIDAsIDAsIDAuMTIpfS5tYXQtZWxldmF0aW9uLXoxOVtfbmdjb250ZW50LSVDT01QJV17Ym94LXNoYWRvdzowcHggOXB4IDEycHggLTZweCByZ2JhKDAsIDAsIDAsIDAuMiksMHB4IDE5cHggMjlweCAycHggcmdiYSgwLCAwLCAwLCAwLjE0KSwwcHggN3B4IDM2cHggNnB4IHJnYmEoMCwgMCwgMCwgMC4xMil9Lm1hdC1lbGV2YXRpb24tejIwW19uZ2NvbnRlbnQtJUNPTVAlXXtib3gtc2hhZG93OjBweCAxMHB4IDEzcHggLTZweCByZ2JhKDAsIDAsIDAsIDAuMiksMHB4IDIwcHggMzFweCAzcHggcmdiYSgwLCAwLCAwLCAwLjE0KSwwcHggOHB4IDM4cHggN3B4IHJnYmEoMCwgMCwgMCwgMC4xMil9Lm1hdC1lbGV2YXRpb24tejIxW19uZ2NvbnRlbnQtJUNPTVAlXXtib3gtc2hhZG93OjBweCAxMHB4IDEzcHggLTZweCByZ2JhKDAsIDAsIDAsIDAuMiksMHB4IDIxcHggMzNweCAzcHggcmdiYSgwLCAwLCAwLCAwLjE0KSwwcHggOHB4IDQwcHggN3B4IHJnYmEoMCwgMCwgMCwgMC4xMil9Lm1hdC1lbGV2YXRpb24tejIyW19uZ2NvbnRlbnQtJUNPTVAlXXtib3gtc2hhZG93OjBweCAxMHB4IDE0cHggLTZweCByZ2JhKDAsIDAsIDAsIDAuMiksMHB4IDIycHggMzVweCAzcHggcmdiYSgwLCAwLCAwLCAwLjE0KSwwcHggOHB4IDQycHggN3B4IHJnYmEoMCwgMCwgMCwgMC4xMil9Lm1hdC1lbGV2YXRpb24tejIzW19uZ2NvbnRlbnQtJUNPTVAlXXtib3gtc2hhZG93OjBweCAxMXB4IDE0cHggLTdweCByZ2JhKDAsIDAsIDAsIDAuMiksMHB4IDIzcHggMzZweCAzcHggcmdiYSgwLCAwLCAwLCAwLjE0KSwwcHggOXB4IDQ0cHggOHB4IHJnYmEoMCwgMCwgMCwgMC4xMil9Lm1hdC1lbGV2YXRpb24tejI0W19uZ2NvbnRlbnQtJUNPTVAlXXtib3gtc2hhZG93OjBweCAxMXB4IDE1cHggLTdweCByZ2JhKDAsIDAsIDAsIDAuMiksMHB4IDI0cHggMzhweCAzcHggcmdiYSgwLCAwLCAwLCAwLjE0KSwwcHggOXB4IDQ2cHggOHB4IHJnYmEoMCwgMCwgMCwgMC4xMil9Lm1hdC10aGVtZS1sb2FkZWQtbWFya2VyW19uZ2NvbnRlbnQtJUNPTVAlXXtkaXNwbGF5Om5vbmV9Lm1hdC1hdXRvY29tcGxldGUtcGFuZWxbX25nY29udGVudC0lQ09NUCVde2JhY2tncm91bmQ6I2ZmZjtjb2xvcjojMjEyMTIxfS5tYXQtYXV0b2NvbXBsZXRlLXBhbmVsW19uZ2NvbnRlbnQtJUNPTVAlXTpub3QoW2NsYXNzKj1tYXQtZWxldmF0aW9uLXpdKXtib3gtc2hhZG93OjBweCAycHggNHB4IC0xcHggcmdiYSgwLCAwLCAwLCAwLjIpLDBweCA0cHggNXB4IDBweCByZ2JhKDAsIDAsIDAsIDAuMTQpLDBweCAxcHggMTBweCAwcHggcmdiYSgwLCAwLCAwLCAwLjEyKX0ubWF0LWF1dG9jb21wbGV0ZS1wYW5lbFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LW9wdGlvbi5tYXQtc2VsZWN0ZWRbX25nY29udGVudC0lQ09NUCVdOm5vdCgubWF0LWFjdGl2ZSk6bm90KDpob3Zlcil7YmFja2dyb3VuZDojZmZmfS5tYXQtYXV0b2NvbXBsZXRlLXBhbmVsW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtb3B0aW9uLm1hdC1zZWxlY3RlZFtfbmdjb250ZW50LSVDT01QJV06bm90KC5tYXQtYWN0aXZlKTpub3QoOmhvdmVyKTpub3QoLm1hdC1vcHRpb24tZGlzYWJsZWQpe2NvbG9yOiMyMTIxMjF9Lm1hdC1iYWRnZS1jb250ZW50W19uZ2NvbnRlbnQtJUNPTVAlXXtjb2xvcjojZmZmO2JhY2tncm91bmQ6I2Y1N2MwMH0uY2RrLWhpZ2gtY29udHJhc3QtYWN0aXZlW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtYmFkZ2UtY29udGVudFtfbmdjb250ZW50LSVDT01QJV17b3V0bGluZTpzb2xpZCAxcHg7Ym9yZGVyLXJhZGl1czowfS5tYXQtYmFkZ2UtYWNjZW50W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtYmFkZ2UtY29udGVudFtfbmdjb250ZW50LSVDT01QJV17YmFja2dyb3VuZDojZmY5ODAwO2NvbG9yOiNmZmZ9Lm1hdC1iYWRnZS13YXJuW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtYmFkZ2UtY29udGVudFtfbmdjb250ZW50LSVDT01QJV17Y29sb3I6I2ZmZjtiYWNrZ3JvdW5kOiNmNDQzMzZ9Lm1hdC1iYWRnZVtfbmdjb250ZW50LSVDT01QJV17cG9zaXRpb246cmVsYXRpdmV9Lm1hdC1iYWRnZS1oaWRkZW5bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1iYWRnZS1jb250ZW50W19uZ2NvbnRlbnQtJUNPTVAlXXtkaXNwbGF5Om5vbmV9Lm1hdC1iYWRnZS1kaXNhYmxlZFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWJhZGdlLWNvbnRlbnRbX25nY29udGVudC0lQ09NUCVde2JhY2tncm91bmQ6I2I5YjliOTtjb2xvcjojNzU3NTc1fS5tYXQtYmFkZ2UtY29udGVudFtfbmdjb250ZW50LSVDT01QJV17cG9zaXRpb246YWJzb2x1dGU7dGV4dC1hbGlnbjpjZW50ZXI7ZGlzcGxheTppbmxpbmUtYmxvY2s7Ym9yZGVyLXJhZGl1czo1MCU7dHJhbnNpdGlvbjp0cmFuc2Zvcm0gMjAwbXMgZWFzZS1pbi1vdXQ7dHJhbnNmb3JtOnNjYWxlKDAuNik7b3ZlcmZsb3c6aGlkZGVuO3doaXRlLXNwYWNlOm5vd3JhcDt0ZXh0LW92ZXJmbG93OmVsbGlwc2lzO3BvaW50ZXItZXZlbnRzOm5vbmV9Lm5nLWFuaW1hdGUtZGlzYWJsZWRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1iYWRnZS1jb250ZW50W19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1iYWRnZS1jb250ZW50Ll9tYXQtYW5pbWF0aW9uLW5vb3BhYmxlW19uZ2NvbnRlbnQtJUNPTVAlXXt0cmFuc2l0aW9uOm5vbmV9Lm1hdC1iYWRnZS1jb250ZW50Lm1hdC1iYWRnZS1hY3RpdmVbX25nY29udGVudC0lQ09NUCVde3RyYW5zZm9ybTpub25lfS5tYXQtYmFkZ2Utc21hbGxbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1iYWRnZS1jb250ZW50W19uZ2NvbnRlbnQtJUNPTVAlXXt3aWR0aDoxNnB4O2hlaWdodDoxNnB4O2xpbmUtaGVpZ2h0OjE2cHh9Lm1hdC1iYWRnZS1zbWFsbC5tYXQtYmFkZ2UtYWJvdmVbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1iYWRnZS1jb250ZW50W19uZ2NvbnRlbnQtJUNPTVAlXXt0b3A6LThweH0ubWF0LWJhZGdlLXNtYWxsLm1hdC1iYWRnZS1iZWxvd1tfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWJhZGdlLWNvbnRlbnRbX25nY29udGVudC0lQ09NUCVde2JvdHRvbTotOHB4fS5tYXQtYmFkZ2Utc21hbGwubWF0LWJhZGdlLWJlZm9yZVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWJhZGdlLWNvbnRlbnRbX25nY29udGVudC0lQ09NUCVde2xlZnQ6LTE2cHh9W2Rpcj1ydGxdW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtYmFkZ2Utc21hbGwubWF0LWJhZGdlLWJlZm9yZVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWJhZGdlLWNvbnRlbnRbX25nY29udGVudC0lQ09NUCVde2xlZnQ6YXV0bztyaWdodDotMTZweH0ubWF0LWJhZGdlLXNtYWxsLm1hdC1iYWRnZS1hZnRlcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWJhZGdlLWNvbnRlbnRbX25nY29udGVudC0lQ09NUCVde3JpZ2h0Oi0xNnB4fVtkaXI9cnRsXVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWJhZGdlLXNtYWxsLm1hdC1iYWRnZS1hZnRlcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWJhZGdlLWNvbnRlbnRbX25nY29udGVudC0lQ09NUCVde3JpZ2h0OmF1dG87bGVmdDotMTZweH0ubWF0LWJhZGdlLXNtYWxsLm1hdC1iYWRnZS1vdmVybGFwLm1hdC1iYWRnZS1iZWZvcmVbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1iYWRnZS1jb250ZW50W19uZ2NvbnRlbnQtJUNPTVAlXXtsZWZ0Oi04cHh9W2Rpcj1ydGxdW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtYmFkZ2Utc21hbGwubWF0LWJhZGdlLW92ZXJsYXAubWF0LWJhZGdlLWJlZm9yZVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWJhZGdlLWNvbnRlbnRbX25nY29udGVudC0lQ09NUCVde2xlZnQ6YXV0bztyaWdodDotOHB4fS5tYXQtYmFkZ2Utc21hbGwubWF0LWJhZGdlLW92ZXJsYXAubWF0LWJhZGdlLWFmdGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtYmFkZ2UtY29udGVudFtfbmdjb250ZW50LSVDT01QJV17cmlnaHQ6LThweH1bZGlyPXJ0bF1bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1iYWRnZS1zbWFsbC5tYXQtYmFkZ2Utb3ZlcmxhcC5tYXQtYmFkZ2UtYWZ0ZXJbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1iYWRnZS1jb250ZW50W19uZ2NvbnRlbnQtJUNPTVAlXXtyaWdodDphdXRvO2xlZnQ6LThweH0ubWF0LWJhZGdlLW1lZGl1bVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWJhZGdlLWNvbnRlbnRbX25nY29udGVudC0lQ09NUCVde3dpZHRoOjIycHg7aGVpZ2h0OjIycHg7bGluZS1oZWlnaHQ6MjJweH0ubWF0LWJhZGdlLW1lZGl1bS5tYXQtYmFkZ2UtYWJvdmVbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1iYWRnZS1jb250ZW50W19uZ2NvbnRlbnQtJUNPTVAlXXt0b3A6LTExcHh9Lm1hdC1iYWRnZS1tZWRpdW0ubWF0LWJhZGdlLWJlbG93W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtYmFkZ2UtY29udGVudFtfbmdjb250ZW50LSVDT01QJV17Ym90dG9tOi0xMXB4fS5tYXQtYmFkZ2UtbWVkaXVtLm1hdC1iYWRnZS1iZWZvcmVbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1iYWRnZS1jb250ZW50W19uZ2NvbnRlbnQtJUNPTVAlXXtsZWZ0Oi0yMnB4fVtkaXI9cnRsXVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWJhZGdlLW1lZGl1bS5tYXQtYmFkZ2UtYmVmb3JlW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtYmFkZ2UtY29udGVudFtfbmdjb250ZW50LSVDT01QJV17bGVmdDphdXRvO3JpZ2h0Oi0yMnB4fS5tYXQtYmFkZ2UtbWVkaXVtLm1hdC1iYWRnZS1hZnRlcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWJhZGdlLWNvbnRlbnRbX25nY29udGVudC0lQ09NUCVde3JpZ2h0Oi0yMnB4fVtkaXI9cnRsXVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWJhZGdlLW1lZGl1bS5tYXQtYmFkZ2UtYWZ0ZXJbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1iYWRnZS1jb250ZW50W19uZ2NvbnRlbnQtJUNPTVAlXXtyaWdodDphdXRvO2xlZnQ6LTIycHh9Lm1hdC1iYWRnZS1tZWRpdW0ubWF0LWJhZGdlLW92ZXJsYXAubWF0LWJhZGdlLWJlZm9yZVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWJhZGdlLWNvbnRlbnRbX25nY29udGVudC0lQ09NUCVde2xlZnQ6LTExcHh9W2Rpcj1ydGxdW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtYmFkZ2UtbWVkaXVtLm1hdC1iYWRnZS1vdmVybGFwLm1hdC1iYWRnZS1iZWZvcmVbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1iYWRnZS1jb250ZW50W19uZ2NvbnRlbnQtJUNPTVAlXXtsZWZ0OmF1dG87cmlnaHQ6LTExcHh9Lm1hdC1iYWRnZS1tZWRpdW0ubWF0LWJhZGdlLW92ZXJsYXAubWF0LWJhZGdlLWFmdGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtYmFkZ2UtY29udGVudFtfbmdjb250ZW50LSVDT01QJV17cmlnaHQ6LTExcHh9W2Rpcj1ydGxdW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtYmFkZ2UtbWVkaXVtLm1hdC1iYWRnZS1vdmVybGFwLm1hdC1iYWRnZS1hZnRlcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWJhZGdlLWNvbnRlbnRbX25nY29udGVudC0lQ09NUCVde3JpZ2h0OmF1dG87bGVmdDotMTFweH0ubWF0LWJhZGdlLWxhcmdlW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtYmFkZ2UtY29udGVudFtfbmdjb250ZW50LSVDT01QJV17d2lkdGg6MjhweDtoZWlnaHQ6MjhweDtsaW5lLWhlaWdodDoyOHB4fS5tYXQtYmFkZ2UtbGFyZ2UubWF0LWJhZGdlLWFib3ZlW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtYmFkZ2UtY29udGVudFtfbmdjb250ZW50LSVDT01QJV17dG9wOi0xNHB4fS5tYXQtYmFkZ2UtbGFyZ2UubWF0LWJhZGdlLWJlbG93W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtYmFkZ2UtY29udGVudFtfbmdjb250ZW50LSVDT01QJV17Ym90dG9tOi0xNHB4fS5tYXQtYmFkZ2UtbGFyZ2UubWF0LWJhZGdlLWJlZm9yZVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWJhZGdlLWNvbnRlbnRbX25nY29udGVudC0lQ09NUCVde2xlZnQ6LTI4cHh9W2Rpcj1ydGxdW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtYmFkZ2UtbGFyZ2UubWF0LWJhZGdlLWJlZm9yZVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWJhZGdlLWNvbnRlbnRbX25nY29udGVudC0lQ09NUCVde2xlZnQ6YXV0bztyaWdodDotMjhweH0ubWF0LWJhZGdlLWxhcmdlLm1hdC1iYWRnZS1hZnRlcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWJhZGdlLWNvbnRlbnRbX25nY29udGVudC0lQ09NUCVde3JpZ2h0Oi0yOHB4fVtkaXI9cnRsXVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWJhZGdlLWxhcmdlLm1hdC1iYWRnZS1hZnRlcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWJhZGdlLWNvbnRlbnRbX25nY29udGVudC0lQ09NUCVde3JpZ2h0OmF1dG87bGVmdDotMjhweH0ubWF0LWJhZGdlLWxhcmdlLm1hdC1iYWRnZS1vdmVybGFwLm1hdC1iYWRnZS1iZWZvcmVbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1iYWRnZS1jb250ZW50W19uZ2NvbnRlbnQtJUNPTVAlXXtsZWZ0Oi0xNHB4fVtkaXI9cnRsXVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWJhZGdlLWxhcmdlLm1hdC1iYWRnZS1vdmVybGFwLm1hdC1iYWRnZS1iZWZvcmVbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1iYWRnZS1jb250ZW50W19uZ2NvbnRlbnQtJUNPTVAlXXtsZWZ0OmF1dG87cmlnaHQ6LTE0cHh9Lm1hdC1iYWRnZS1sYXJnZS5tYXQtYmFkZ2Utb3ZlcmxhcC5tYXQtYmFkZ2UtYWZ0ZXJbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1iYWRnZS1jb250ZW50W19uZ2NvbnRlbnQtJUNPTVAlXXtyaWdodDotMTRweH1bZGlyPXJ0bF1bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1iYWRnZS1sYXJnZS5tYXQtYmFkZ2Utb3ZlcmxhcC5tYXQtYmFkZ2UtYWZ0ZXJbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1iYWRnZS1jb250ZW50W19uZ2NvbnRlbnQtJUNPTVAlXXtyaWdodDphdXRvO2xlZnQ6LTE0cHh9Lm1hdC1ib3R0b20tc2hlZXQtY29udGFpbmVyW19uZ2NvbnRlbnQtJUNPTVAlXXtib3gtc2hhZG93OjBweCA4cHggMTBweCAtNXB4IHJnYmEoMCwgMCwgMCwgMC4yKSwwcHggMTZweCAyNHB4IDJweCByZ2JhKDAsIDAsIDAsIDAuMTQpLDBweCA2cHggMzBweCA1cHggcmdiYSgwLCAwLCAwLCAwLjEyKTtiYWNrZ3JvdW5kOiNmZmY7Y29sb3I6IzIxMjEyMX0ubWF0LWJ1dHRvbltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtaWNvbi1idXR0b25bX25nY29udGVudC0lQ09NUCVdLCAubWF0LXN0cm9rZWQtYnV0dG9uW19uZ2NvbnRlbnQtJUNPTVAlXXtjb2xvcjppbmhlcml0O2JhY2tncm91bmQ6dHJhbnNwYXJlbnR9Lm1hdC1idXR0b24ubWF0LXByaW1hcnlbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWljb24tYnV0dG9uLm1hdC1wcmltYXJ5W19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1zdHJva2VkLWJ1dHRvbi5tYXQtcHJpbWFyeVtfbmdjb250ZW50LSVDT01QJV17Y29sb3I6I2Y1N2MwMH0ubWF0LWJ1dHRvbi5tYXQtYWNjZW50W19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1pY29uLWJ1dHRvbi5tYXQtYWNjZW50W19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1zdHJva2VkLWJ1dHRvbi5tYXQtYWNjZW50W19uZ2NvbnRlbnQtJUNPTVAlXXtjb2xvcjojZmY5ODAwfS5tYXQtYnV0dG9uLm1hdC13YXJuW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1pY29uLWJ1dHRvbi5tYXQtd2Fybltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtc3Ryb2tlZC1idXR0b24ubWF0LXdhcm5bX25nY29udGVudC0lQ09NUCVde2NvbG9yOiNmNDQzMzZ9Lm1hdC1idXR0b24ubWF0LXByaW1hcnkubWF0LWJ1dHRvbi1kaXNhYmxlZFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtYnV0dG9uLm1hdC1hY2NlbnQubWF0LWJ1dHRvbi1kaXNhYmxlZFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtYnV0dG9uLm1hdC13YXJuLm1hdC1idXR0b24tZGlzYWJsZWRbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWJ1dHRvbi5tYXQtYnV0dG9uLWRpc2FibGVkLm1hdC1idXR0b24tZGlzYWJsZWRbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWljb24tYnV0dG9uLm1hdC1wcmltYXJ5Lm1hdC1idXR0b24tZGlzYWJsZWRbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWljb24tYnV0dG9uLm1hdC1hY2NlbnQubWF0LWJ1dHRvbi1kaXNhYmxlZFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtaWNvbi1idXR0b24ubWF0LXdhcm4ubWF0LWJ1dHRvbi1kaXNhYmxlZFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtaWNvbi1idXR0b24ubWF0LWJ1dHRvbi1kaXNhYmxlZC5tYXQtYnV0dG9uLWRpc2FibGVkW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1zdHJva2VkLWJ1dHRvbi5tYXQtcHJpbWFyeS5tYXQtYnV0dG9uLWRpc2FibGVkW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1zdHJva2VkLWJ1dHRvbi5tYXQtYWNjZW50Lm1hdC1idXR0b24tZGlzYWJsZWRbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXN0cm9rZWQtYnV0dG9uLm1hdC13YXJuLm1hdC1idXR0b24tZGlzYWJsZWRbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXN0cm9rZWQtYnV0dG9uLm1hdC1idXR0b24tZGlzYWJsZWQubWF0LWJ1dHRvbi1kaXNhYmxlZFtfbmdjb250ZW50LSVDT01QJV17Y29sb3I6cmdiYSgwLDAsMCwuMjYpfS5tYXQtYnV0dG9uLm1hdC1wcmltYXJ5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtYnV0dG9uLWZvY3VzLW92ZXJsYXlbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWljb24tYnV0dG9uLm1hdC1wcmltYXJ5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtYnV0dG9uLWZvY3VzLW92ZXJsYXlbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXN0cm9rZWQtYnV0dG9uLm1hdC1wcmltYXJ5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtYnV0dG9uLWZvY3VzLW92ZXJsYXlbX25nY29udGVudC0lQ09NUCVde2JhY2tncm91bmQtY29sb3I6I2Y1N2MwMH0ubWF0LWJ1dHRvbi5tYXQtYWNjZW50W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtYnV0dG9uLWZvY3VzLW92ZXJsYXlbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWljb24tYnV0dG9uLm1hdC1hY2NlbnRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1idXR0b24tZm9jdXMtb3ZlcmxheVtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtc3Ryb2tlZC1idXR0b24ubWF0LWFjY2VudFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWJ1dHRvbi1mb2N1cy1vdmVybGF5W19uZ2NvbnRlbnQtJUNPTVAlXXtiYWNrZ3JvdW5kLWNvbG9yOiNmZjk4MDB9Lm1hdC1idXR0b24ubWF0LXdhcm5bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1idXR0b24tZm9jdXMtb3ZlcmxheVtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtaWNvbi1idXR0b24ubWF0LXdhcm5bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1idXR0b24tZm9jdXMtb3ZlcmxheVtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtc3Ryb2tlZC1idXR0b24ubWF0LXdhcm5bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1idXR0b24tZm9jdXMtb3ZlcmxheVtfbmdjb250ZW50LSVDT01QJV17YmFja2dyb3VuZC1jb2xvcjojZjQ0MzM2fS5tYXQtYnV0dG9uLm1hdC1idXR0b24tZGlzYWJsZWRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1idXR0b24tZm9jdXMtb3ZlcmxheVtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtaWNvbi1idXR0b24ubWF0LWJ1dHRvbi1kaXNhYmxlZFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWJ1dHRvbi1mb2N1cy1vdmVybGF5W19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1zdHJva2VkLWJ1dHRvbi5tYXQtYnV0dG9uLWRpc2FibGVkW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtYnV0dG9uLWZvY3VzLW92ZXJsYXlbX25nY29udGVudC0lQ09NUCVde2JhY2tncm91bmQtY29sb3I6dHJhbnNwYXJlbnR9Lm1hdC1idXR0b25bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1yaXBwbGUtZWxlbWVudFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtaWNvbi1idXR0b25bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1yaXBwbGUtZWxlbWVudFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtc3Ryb2tlZC1idXR0b25bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1yaXBwbGUtZWxlbWVudFtfbmdjb250ZW50LSVDT01QJV17b3BhY2l0eTouMTtiYWNrZ3JvdW5kLWNvbG9yOmN1cnJlbnRDb2xvcn0ubWF0LWJ1dHRvbi1mb2N1cy1vdmVybGF5W19uZ2NvbnRlbnQtJUNPTVAlXXtiYWNrZ3JvdW5kOiMwMDB9Lm1hdC1zdHJva2VkLWJ1dHRvbltfbmdjb250ZW50LSVDT01QJV06bm90KC5tYXQtYnV0dG9uLWRpc2FibGVkKXtib3JkZXItY29sb3I6cmdiYSgwLDAsMCwuMTIpfS5tYXQtZmxhdC1idXR0b25bX25nY29udGVudC0lQ09NUCVdLCAubWF0LXJhaXNlZC1idXR0b25bX25nY29udGVudC0lQ09NUCVdLCAubWF0LWZhYltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtbWluaS1mYWJbX25nY29udGVudC0lQ09NUCVde2NvbG9yOiMyMTIxMjE7YmFja2dyb3VuZC1jb2xvcjojZmZmfS5tYXQtZmxhdC1idXR0b24ubWF0LXByaW1hcnlbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXJhaXNlZC1idXR0b24ubWF0LXByaW1hcnlbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWZhYi5tYXQtcHJpbWFyeVtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtbWluaS1mYWIubWF0LXByaW1hcnlbX25nY29udGVudC0lQ09NUCVde2NvbG9yOiNmZmZ9Lm1hdC1mbGF0LWJ1dHRvbi5tYXQtYWNjZW50W19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1yYWlzZWQtYnV0dG9uLm1hdC1hY2NlbnRbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWZhYi5tYXQtYWNjZW50W19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1taW5pLWZhYi5tYXQtYWNjZW50W19uZ2NvbnRlbnQtJUNPTVAlXXtjb2xvcjojZmZmfS5tYXQtZmxhdC1idXR0b24ubWF0LXdhcm5bX25nY29udGVudC0lQ09NUCVdLCAubWF0LXJhaXNlZC1idXR0b24ubWF0LXdhcm5bX25nY29udGVudC0lQ09NUCVdLCAubWF0LWZhYi5tYXQtd2Fybltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtbWluaS1mYWIubWF0LXdhcm5bX25nY29udGVudC0lQ09NUCVde2NvbG9yOiNmZmZ9Lm1hdC1mbGF0LWJ1dHRvbi5tYXQtcHJpbWFyeS5tYXQtYnV0dG9uLWRpc2FibGVkW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1mbGF0LWJ1dHRvbi5tYXQtYWNjZW50Lm1hdC1idXR0b24tZGlzYWJsZWRbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWZsYXQtYnV0dG9uLm1hdC13YXJuLm1hdC1idXR0b24tZGlzYWJsZWRbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWZsYXQtYnV0dG9uLm1hdC1idXR0b24tZGlzYWJsZWQubWF0LWJ1dHRvbi1kaXNhYmxlZFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtcmFpc2VkLWJ1dHRvbi5tYXQtcHJpbWFyeS5tYXQtYnV0dG9uLWRpc2FibGVkW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1yYWlzZWQtYnV0dG9uLm1hdC1hY2NlbnQubWF0LWJ1dHRvbi1kaXNhYmxlZFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtcmFpc2VkLWJ1dHRvbi5tYXQtd2Fybi5tYXQtYnV0dG9uLWRpc2FibGVkW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1yYWlzZWQtYnV0dG9uLm1hdC1idXR0b24tZGlzYWJsZWQubWF0LWJ1dHRvbi1kaXNhYmxlZFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtZmFiLm1hdC1wcmltYXJ5Lm1hdC1idXR0b24tZGlzYWJsZWRbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWZhYi5tYXQtYWNjZW50Lm1hdC1idXR0b24tZGlzYWJsZWRbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWZhYi5tYXQtd2Fybi5tYXQtYnV0dG9uLWRpc2FibGVkW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1mYWIubWF0LWJ1dHRvbi1kaXNhYmxlZC5tYXQtYnV0dG9uLWRpc2FibGVkW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1taW5pLWZhYi5tYXQtcHJpbWFyeS5tYXQtYnV0dG9uLWRpc2FibGVkW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1taW5pLWZhYi5tYXQtYWNjZW50Lm1hdC1idXR0b24tZGlzYWJsZWRbX25nY29udGVudC0lQ09NUCVdLCAubWF0LW1pbmktZmFiLm1hdC13YXJuLm1hdC1idXR0b24tZGlzYWJsZWRbX25nY29udGVudC0lQ09NUCVdLCAubWF0LW1pbmktZmFiLm1hdC1idXR0b24tZGlzYWJsZWQubWF0LWJ1dHRvbi1kaXNhYmxlZFtfbmdjb250ZW50LSVDT01QJV17Y29sb3I6cmdiYSgwLDAsMCwuMjYpfS5tYXQtZmxhdC1idXR0b24ubWF0LXByaW1hcnlbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXJhaXNlZC1idXR0b24ubWF0LXByaW1hcnlbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWZhYi5tYXQtcHJpbWFyeVtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtbWluaS1mYWIubWF0LXByaW1hcnlbX25nY29udGVudC0lQ09NUCVde2JhY2tncm91bmQtY29sb3I6I2Y1N2MwMH0ubWF0LWZsYXQtYnV0dG9uLm1hdC1hY2NlbnRbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXJhaXNlZC1idXR0b24ubWF0LWFjY2VudFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtZmFiLm1hdC1hY2NlbnRbX25nY29udGVudC0lQ09NUCVdLCAubWF0LW1pbmktZmFiLm1hdC1hY2NlbnRbX25nY29udGVudC0lQ09NUCVde2JhY2tncm91bmQtY29sb3I6I2ZmOTgwMH0ubWF0LWZsYXQtYnV0dG9uLm1hdC13YXJuW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1yYWlzZWQtYnV0dG9uLm1hdC13YXJuW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1mYWIubWF0LXdhcm5bX25nY29udGVudC0lQ09NUCVdLCAubWF0LW1pbmktZmFiLm1hdC13YXJuW19uZ2NvbnRlbnQtJUNPTVAlXXtiYWNrZ3JvdW5kLWNvbG9yOiNmNDQzMzZ9Lm1hdC1mbGF0LWJ1dHRvbi5tYXQtcHJpbWFyeS5tYXQtYnV0dG9uLWRpc2FibGVkW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1mbGF0LWJ1dHRvbi5tYXQtYWNjZW50Lm1hdC1idXR0b24tZGlzYWJsZWRbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWZsYXQtYnV0dG9uLm1hdC13YXJuLm1hdC1idXR0b24tZGlzYWJsZWRbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWZsYXQtYnV0dG9uLm1hdC1idXR0b24tZGlzYWJsZWQubWF0LWJ1dHRvbi1kaXNhYmxlZFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtcmFpc2VkLWJ1dHRvbi5tYXQtcHJpbWFyeS5tYXQtYnV0dG9uLWRpc2FibGVkW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1yYWlzZWQtYnV0dG9uLm1hdC1hY2NlbnQubWF0LWJ1dHRvbi1kaXNhYmxlZFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtcmFpc2VkLWJ1dHRvbi5tYXQtd2Fybi5tYXQtYnV0dG9uLWRpc2FibGVkW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1yYWlzZWQtYnV0dG9uLm1hdC1idXR0b24tZGlzYWJsZWQubWF0LWJ1dHRvbi1kaXNhYmxlZFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtZmFiLm1hdC1wcmltYXJ5Lm1hdC1idXR0b24tZGlzYWJsZWRbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWZhYi5tYXQtYWNjZW50Lm1hdC1idXR0b24tZGlzYWJsZWRbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWZhYi5tYXQtd2Fybi5tYXQtYnV0dG9uLWRpc2FibGVkW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1mYWIubWF0LWJ1dHRvbi1kaXNhYmxlZC5tYXQtYnV0dG9uLWRpc2FibGVkW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1taW5pLWZhYi5tYXQtcHJpbWFyeS5tYXQtYnV0dG9uLWRpc2FibGVkW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1taW5pLWZhYi5tYXQtYWNjZW50Lm1hdC1idXR0b24tZGlzYWJsZWRbX25nY29udGVudC0lQ09NUCVdLCAubWF0LW1pbmktZmFiLm1hdC13YXJuLm1hdC1idXR0b24tZGlzYWJsZWRbX25nY29udGVudC0lQ09NUCVdLCAubWF0LW1pbmktZmFiLm1hdC1idXR0b24tZGlzYWJsZWQubWF0LWJ1dHRvbi1kaXNhYmxlZFtfbmdjb250ZW50LSVDT01QJV17YmFja2dyb3VuZC1jb2xvcjpyZ2JhKDAsMCwwLC4xMil9Lm1hdC1mbGF0LWJ1dHRvbi5tYXQtcHJpbWFyeVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXJpcHBsZS1lbGVtZW50W19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1yYWlzZWQtYnV0dG9uLm1hdC1wcmltYXJ5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtcmlwcGxlLWVsZW1lbnRbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWZhYi5tYXQtcHJpbWFyeVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXJpcHBsZS1lbGVtZW50W19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1taW5pLWZhYi5tYXQtcHJpbWFyeVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXJpcHBsZS1lbGVtZW50W19uZ2NvbnRlbnQtJUNPTVAlXXtiYWNrZ3JvdW5kLWNvbG9yOnJnYmEoMjU1LDI1NSwyNTUsLjEpfS5tYXQtZmxhdC1idXR0b24ubWF0LWFjY2VudFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXJpcHBsZS1lbGVtZW50W19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1yYWlzZWQtYnV0dG9uLm1hdC1hY2NlbnRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1yaXBwbGUtZWxlbWVudFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtZmFiLm1hdC1hY2NlbnRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1yaXBwbGUtZWxlbWVudFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtbWluaS1mYWIubWF0LWFjY2VudFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXJpcHBsZS1lbGVtZW50W19uZ2NvbnRlbnQtJUNPTVAlXXtiYWNrZ3JvdW5kLWNvbG9yOnJnYmEoMjU1LDI1NSwyNTUsLjEpfS5tYXQtZmxhdC1idXR0b24ubWF0LXdhcm5bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1yaXBwbGUtZWxlbWVudFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtcmFpc2VkLWJ1dHRvbi5tYXQtd2Fybltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXJpcHBsZS1lbGVtZW50W19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1mYWIubWF0LXdhcm5bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1yaXBwbGUtZWxlbWVudFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtbWluaS1mYWIubWF0LXdhcm5bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1yaXBwbGUtZWxlbWVudFtfbmdjb250ZW50LSVDT01QJV17YmFja2dyb3VuZC1jb2xvcjpyZ2JhKDI1NSwyNTUsMjU1LC4xKX0ubWF0LXN0cm9rZWQtYnV0dG9uW19uZ2NvbnRlbnQtJUNPTVAlXTpub3QoW2NsYXNzKj1tYXQtZWxldmF0aW9uLXpdKSwgLm1hdC1mbGF0LWJ1dHRvbltfbmdjb250ZW50LSVDT01QJV06bm90KFtjbGFzcyo9bWF0LWVsZXZhdGlvbi16XSl7Ym94LXNoYWRvdzowcHggMHB4IDBweCAwcHggcmdiYSgwLCAwLCAwLCAwLjIpLDBweCAwcHggMHB4IDBweCByZ2JhKDAsIDAsIDAsIDAuMTQpLDBweCAwcHggMHB4IDBweCByZ2JhKDAsIDAsIDAsIDAuMTIpfS5tYXQtcmFpc2VkLWJ1dHRvbltfbmdjb250ZW50LSVDT01QJV06bm90KFtjbGFzcyo9bWF0LWVsZXZhdGlvbi16XSl7Ym94LXNoYWRvdzowcHggM3B4IDFweCAtMnB4IHJnYmEoMCwgMCwgMCwgMC4yKSwwcHggMnB4IDJweCAwcHggcmdiYSgwLCAwLCAwLCAwLjE0KSwwcHggMXB4IDVweCAwcHggcmdiYSgwLCAwLCAwLCAwLjEyKX0ubWF0LXJhaXNlZC1idXR0b25bX25nY29udGVudC0lQ09NUCVdOm5vdCgubWF0LWJ1dHRvbi1kaXNhYmxlZCk6YWN0aXZlOm5vdChbY2xhc3MqPW1hdC1lbGV2YXRpb24tel0pe2JveC1zaGFkb3c6MHB4IDVweCA1cHggLTNweCByZ2JhKDAsIDAsIDAsIDAuMiksMHB4IDhweCAxMHB4IDFweCByZ2JhKDAsIDAsIDAsIDAuMTQpLDBweCAzcHggMTRweCAycHggcmdiYSgwLCAwLCAwLCAwLjEyKX0ubWF0LXJhaXNlZC1idXR0b24ubWF0LWJ1dHRvbi1kaXNhYmxlZFtfbmdjb250ZW50LSVDT01QJV06bm90KFtjbGFzcyo9bWF0LWVsZXZhdGlvbi16XSl7Ym94LXNoYWRvdzowcHggMHB4IDBweCAwcHggcmdiYSgwLCAwLCAwLCAwLjIpLDBweCAwcHggMHB4IDBweCByZ2JhKDAsIDAsIDAsIDAuMTQpLDBweCAwcHggMHB4IDBweCByZ2JhKDAsIDAsIDAsIDAuMTIpfS5tYXQtZmFiW19uZ2NvbnRlbnQtJUNPTVAlXTpub3QoW2NsYXNzKj1tYXQtZWxldmF0aW9uLXpdKSwgLm1hdC1taW5pLWZhYltfbmdjb250ZW50LSVDT01QJV06bm90KFtjbGFzcyo9bWF0LWVsZXZhdGlvbi16XSl7Ym94LXNoYWRvdzowcHggM3B4IDVweCAtMXB4IHJnYmEoMCwgMCwgMCwgMC4yKSwwcHggNnB4IDEwcHggMHB4IHJnYmEoMCwgMCwgMCwgMC4xNCksMHB4IDFweCAxOHB4IDBweCByZ2JhKDAsIDAsIDAsIDAuMTIpfS5tYXQtZmFiW19uZ2NvbnRlbnQtJUNPTVAlXTpub3QoLm1hdC1idXR0b24tZGlzYWJsZWQpOmFjdGl2ZTpub3QoW2NsYXNzKj1tYXQtZWxldmF0aW9uLXpdKSwgLm1hdC1taW5pLWZhYltfbmdjb250ZW50LSVDT01QJV06bm90KC5tYXQtYnV0dG9uLWRpc2FibGVkKTphY3RpdmU6bm90KFtjbGFzcyo9bWF0LWVsZXZhdGlvbi16XSl7Ym94LXNoYWRvdzowcHggN3B4IDhweCAtNHB4IHJnYmEoMCwgMCwgMCwgMC4yKSwwcHggMTJweCAxN3B4IDJweCByZ2JhKDAsIDAsIDAsIDAuMTQpLDBweCA1cHggMjJweCA0cHggcmdiYSgwLCAwLCAwLCAwLjEyKX0ubWF0LWZhYi5tYXQtYnV0dG9uLWRpc2FibGVkW19uZ2NvbnRlbnQtJUNPTVAlXTpub3QoW2NsYXNzKj1tYXQtZWxldmF0aW9uLXpdKSwgLm1hdC1taW5pLWZhYi5tYXQtYnV0dG9uLWRpc2FibGVkW19uZ2NvbnRlbnQtJUNPTVAlXTpub3QoW2NsYXNzKj1tYXQtZWxldmF0aW9uLXpdKXtib3gtc2hhZG93OjBweCAwcHggMHB4IDBweCByZ2JhKDAsIDAsIDAsIDAuMiksMHB4IDBweCAwcHggMHB4IHJnYmEoMCwgMCwgMCwgMC4xNCksMHB4IDBweCAwcHggMHB4IHJnYmEoMCwgMCwgMCwgMC4xMil9Lm1hdC1idXR0b24tdG9nZ2xlLXN0YW5kYWxvbmVbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWJ1dHRvbi10b2dnbGUtZ3JvdXBbX25nY29udGVudC0lQ09NUCVde2JveC1zaGFkb3c6MHB4IDNweCAxcHggLTJweCByZ2JhKDAsIDAsIDAsIDAuMiksMHB4IDJweCAycHggMHB4IHJnYmEoMCwgMCwgMCwgMC4xNCksMHB4IDFweCA1cHggMHB4IHJnYmEoMCwgMCwgMCwgMC4xMil9Lm1hdC1idXR0b24tdG9nZ2xlLXN0YW5kYWxvbmUubWF0LWJ1dHRvbi10b2dnbGUtYXBwZWFyYW5jZS1zdGFuZGFyZFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtYnV0dG9uLXRvZ2dsZS1ncm91cC1hcHBlYXJhbmNlLXN0YW5kYXJkW19uZ2NvbnRlbnQtJUNPTVAlXXtib3gtc2hhZG93Om5vbmV9Lm1hdC1idXR0b24tdG9nZ2xlW19uZ2NvbnRlbnQtJUNPTVAlXXtjb2xvcjpyZ2JhKDAsMCwwLC4zOCl9Lm1hdC1idXR0b24tdG9nZ2xlW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtYnV0dG9uLXRvZ2dsZS1mb2N1cy1vdmVybGF5W19uZ2NvbnRlbnQtJUNPTVAlXXtiYWNrZ3JvdW5kLWNvbG9yOnJnYmEoMCwwLDAsLjEyKX0ubWF0LWJ1dHRvbi10b2dnbGUtYXBwZWFyYW5jZS1zdGFuZGFyZFtfbmdjb250ZW50LSVDT01QJV17Y29sb3I6IzIxMjEyMTtiYWNrZ3JvdW5kOiNmZmZ9Lm1hdC1idXR0b24tdG9nZ2xlLWFwcGVhcmFuY2Utc3RhbmRhcmRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1idXR0b24tdG9nZ2xlLWZvY3VzLW92ZXJsYXlbX25nY29udGVudC0lQ09NUCVde2JhY2tncm91bmQtY29sb3I6IzAwMH0ubWF0LWJ1dHRvbi10b2dnbGUtZ3JvdXAtYXBwZWFyYW5jZS1zdGFuZGFyZFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWJ1dHRvbi10b2dnbGVbX25nY29udGVudC0lQ09NUCVdICsgLm1hdC1idXR0b24tdG9nZ2xlW19uZ2NvbnRlbnQtJUNPTVAlXXtib3JkZXItbGVmdDpzb2xpZCAxcHggcmdiYSgwLDAsMCwuMTIpfVtkaXI9cnRsXVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWJ1dHRvbi10b2dnbGUtZ3JvdXAtYXBwZWFyYW5jZS1zdGFuZGFyZFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWJ1dHRvbi10b2dnbGVbX25nY29udGVudC0lQ09NUCVdICsgLm1hdC1idXR0b24tdG9nZ2xlW19uZ2NvbnRlbnQtJUNPTVAlXXtib3JkZXItbGVmdDpub25lO2JvcmRlci1yaWdodDpzb2xpZCAxcHggcmdiYSgwLDAsMCwuMTIpfS5tYXQtYnV0dG9uLXRvZ2dsZS1ncm91cC1hcHBlYXJhbmNlLXN0YW5kYXJkLm1hdC1idXR0b24tdG9nZ2xlLXZlcnRpY2FsW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtYnV0dG9uLXRvZ2dsZVtfbmdjb250ZW50LSVDT01QJV0gKyAubWF0LWJ1dHRvbi10b2dnbGVbX25nY29udGVudC0lQ09NUCVde2JvcmRlci1sZWZ0Om5vbmU7Ym9yZGVyLXJpZ2h0Om5vbmU7Ym9yZGVyLXRvcDpzb2xpZCAxcHggcmdiYSgwLDAsMCwuMTIpfS5tYXQtYnV0dG9uLXRvZ2dsZS1jaGVja2VkW19uZ2NvbnRlbnQtJUNPTVAlXXtiYWNrZ3JvdW5kLWNvbG9yOiNlMGUwZTA7Y29sb3I6IzYxNjE2MX0ubWF0LWJ1dHRvbi10b2dnbGUtY2hlY2tlZC5tYXQtYnV0dG9uLXRvZ2dsZS1hcHBlYXJhbmNlLXN0YW5kYXJkW19uZ2NvbnRlbnQtJUNPTVAlXXtjb2xvcjojMjEyMTIxfS5tYXQtYnV0dG9uLXRvZ2dsZS1kaXNhYmxlZFtfbmdjb250ZW50LSVDT01QJV17Y29sb3I6cmdiYSgwLDAsMCwuMjYpO2JhY2tncm91bmQtY29sb3I6I2VlZX0ubWF0LWJ1dHRvbi10b2dnbGUtZGlzYWJsZWQubWF0LWJ1dHRvbi10b2dnbGUtYXBwZWFyYW5jZS1zdGFuZGFyZFtfbmdjb250ZW50LSVDT01QJV17YmFja2dyb3VuZDojZmZmfS5tYXQtYnV0dG9uLXRvZ2dsZS1kaXNhYmxlZC5tYXQtYnV0dG9uLXRvZ2dsZS1jaGVja2VkW19uZ2NvbnRlbnQtJUNPTVAlXXtiYWNrZ3JvdW5kLWNvbG9yOiNiZGJkYmR9Lm1hdC1idXR0b24tdG9nZ2xlLXN0YW5kYWxvbmUubWF0LWJ1dHRvbi10b2dnbGUtYXBwZWFyYW5jZS1zdGFuZGFyZFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtYnV0dG9uLXRvZ2dsZS1ncm91cC1hcHBlYXJhbmNlLXN0YW5kYXJkW19uZ2NvbnRlbnQtJUNPTVAlXXtib3JkZXI6c29saWQgMXB4IHJnYmEoMCwwLDAsLjEyKX0ubWF0LWJ1dHRvbi10b2dnbGUtYXBwZWFyYW5jZS1zdGFuZGFyZFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWJ1dHRvbi10b2dnbGUtbGFiZWwtY29udGVudFtfbmdjb250ZW50LSVDT01QJV17bGluZS1oZWlnaHQ6NDhweH0ubWF0LWNhcmRbX25nY29udGVudC0lQ09NUCVde2JhY2tncm91bmQ6I2ZmZjtjb2xvcjojMjEyMTIxfS5tYXQtY2FyZFtfbmdjb250ZW50LSVDT01QJV06bm90KFtjbGFzcyo9bWF0LWVsZXZhdGlvbi16XSl7Ym94LXNoYWRvdzowcHggMnB4IDFweCAtMXB4IHJnYmEoMCwgMCwgMCwgMC4yKSwwcHggMXB4IDFweCAwcHggcmdiYSgwLCAwLCAwLCAwLjE0KSwwcHggMXB4IDNweCAwcHggcmdiYSgwLCAwLCAwLCAwLjEyKX0ubWF0LWNhcmQubWF0LWNhcmQtZmxhdFtfbmdjb250ZW50LSVDT01QJV06bm90KFtjbGFzcyo9bWF0LWVsZXZhdGlvbi16XSl7Ym94LXNoYWRvdzowcHggMHB4IDBweCAwcHggcmdiYSgwLCAwLCAwLCAwLjIpLDBweCAwcHggMHB4IDBweCByZ2JhKDAsIDAsIDAsIDAuMTQpLDBweCAwcHggMHB4IDBweCByZ2JhKDAsIDAsIDAsIDAuMTIpfS5tYXQtY2FyZC1zdWJ0aXRsZVtfbmdjb250ZW50LSVDT01QJV17Y29sb3I6IzYxNjE2MX0ubWF0LWNoZWNrYm94LWZyYW1lW19uZ2NvbnRlbnQtJUNPTVAlXXtib3JkZXItY29sb3I6IzYxNjE2MX0ubWF0LWNoZWNrYm94LWNoZWNrbWFya1tfbmdjb250ZW50LSVDT01QJV17ZmlsbDojZmFmYWZhfS5tYXQtY2hlY2tib3gtY2hlY2ttYXJrLXBhdGhbX25nY29udGVudC0lQ09NUCVde3N0cm9rZTojZmFmYWZhICFpbXBvcnRhbnR9Lm1hdC1jaGVja2JveC1taXhlZG1hcmtbX25nY29udGVudC0lQ09NUCVde2JhY2tncm91bmQtY29sb3I6I2ZhZmFmYX0ubWF0LWNoZWNrYm94LWluZGV0ZXJtaW5hdGUubWF0LXByaW1hcnlbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1jaGVja2JveC1iYWNrZ3JvdW5kW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1jaGVja2JveC1jaGVja2VkLm1hdC1wcmltYXJ5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtY2hlY2tib3gtYmFja2dyb3VuZFtfbmdjb250ZW50LSVDT01QJV17YmFja2dyb3VuZC1jb2xvcjojZjU3YzAwfS5tYXQtY2hlY2tib3gtaW5kZXRlcm1pbmF0ZS5tYXQtYWNjZW50W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtY2hlY2tib3gtYmFja2dyb3VuZFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtY2hlY2tib3gtY2hlY2tlZC5tYXQtYWNjZW50W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtY2hlY2tib3gtYmFja2dyb3VuZFtfbmdjb250ZW50LSVDT01QJV17YmFja2dyb3VuZC1jb2xvcjojZmY5ODAwfS5tYXQtY2hlY2tib3gtaW5kZXRlcm1pbmF0ZS5tYXQtd2Fybltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWNoZWNrYm94LWJhY2tncm91bmRbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWNoZWNrYm94LWNoZWNrZWQubWF0LXdhcm5bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1jaGVja2JveC1iYWNrZ3JvdW5kW19uZ2NvbnRlbnQtJUNPTVAlXXtiYWNrZ3JvdW5kLWNvbG9yOiNmNDQzMzZ9Lm1hdC1jaGVja2JveC1kaXNhYmxlZC5tYXQtY2hlY2tib3gtY2hlY2tlZFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWNoZWNrYm94LWJhY2tncm91bmRbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWNoZWNrYm94LWRpc2FibGVkLm1hdC1jaGVja2JveC1pbmRldGVybWluYXRlW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtY2hlY2tib3gtYmFja2dyb3VuZFtfbmdjb250ZW50LSVDT01QJV17YmFja2dyb3VuZC1jb2xvcjojYjBiMGIwfS5tYXQtY2hlY2tib3gtZGlzYWJsZWRbX25nY29udGVudC0lQ09NUCVdOm5vdCgubWF0LWNoZWNrYm94LWNoZWNrZWQpICAgLm1hdC1jaGVja2JveC1mcmFtZVtfbmdjb250ZW50LSVDT01QJV17Ym9yZGVyLWNvbG9yOiNiMGIwYjB9Lm1hdC1jaGVja2JveC1kaXNhYmxlZFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWNoZWNrYm94LWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXtjb2xvcjojNjE2MTYxfS5tYXQtY2hlY2tib3hbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1yaXBwbGUtZWxlbWVudFtfbmdjb250ZW50LSVDT01QJV17YmFja2dyb3VuZC1jb2xvcjojMDAwfS5tYXQtY2hlY2tib3gtY2hlY2tlZFtfbmdjb250ZW50LSVDT01QJV06bm90KC5tYXQtY2hlY2tib3gtZGlzYWJsZWQpLm1hdC1wcmltYXJ5ICAgLm1hdC1yaXBwbGUtZWxlbWVudFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtY2hlY2tib3hbX25nY29udGVudC0lQ09NUCVdOmFjdGl2ZTpub3QoLm1hdC1jaGVja2JveC1kaXNhYmxlZCkubWF0LXByaW1hcnkgICAubWF0LXJpcHBsZS1lbGVtZW50W19uZ2NvbnRlbnQtJUNPTVAlXXtiYWNrZ3JvdW5kOiNmNTdjMDB9Lm1hdC1jaGVja2JveC1jaGVja2VkW19uZ2NvbnRlbnQtJUNPTVAlXTpub3QoLm1hdC1jaGVja2JveC1kaXNhYmxlZCkubWF0LWFjY2VudCAgIC5tYXQtcmlwcGxlLWVsZW1lbnRbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWNoZWNrYm94W19uZ2NvbnRlbnQtJUNPTVAlXTphY3RpdmU6bm90KC5tYXQtY2hlY2tib3gtZGlzYWJsZWQpLm1hdC1hY2NlbnQgICAubWF0LXJpcHBsZS1lbGVtZW50W19uZ2NvbnRlbnQtJUNPTVAlXXtiYWNrZ3JvdW5kOiNmZjk4MDB9Lm1hdC1jaGVja2JveC1jaGVja2VkW19uZ2NvbnRlbnQtJUNPTVAlXTpub3QoLm1hdC1jaGVja2JveC1kaXNhYmxlZCkubWF0LXdhcm4gICAubWF0LXJpcHBsZS1lbGVtZW50W19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1jaGVja2JveFtfbmdjb250ZW50LSVDT01QJV06YWN0aXZlOm5vdCgubWF0LWNoZWNrYm94LWRpc2FibGVkKS5tYXQtd2FybiAgIC5tYXQtcmlwcGxlLWVsZW1lbnRbX25nY29udGVudC0lQ09NUCVde2JhY2tncm91bmQ6I2Y0NDMzNn0ubWF0LWNoaXAubWF0LXN0YW5kYXJkLWNoaXBbX25nY29udGVudC0lQ09NUCVde2JhY2tncm91bmQtY29sb3I6I2UwZTBlMDtjb2xvcjojMjEyMTIxfS5tYXQtY2hpcC5tYXQtc3RhbmRhcmQtY2hpcFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWNoaXAtcmVtb3ZlW19uZ2NvbnRlbnQtJUNPTVAlXXtjb2xvcjojMjEyMTIxO29wYWNpdHk6LjR9Lm1hdC1jaGlwLm1hdC1zdGFuZGFyZC1jaGlwW19uZ2NvbnRlbnQtJUNPTVAlXTpub3QoLm1hdC1jaGlwLWRpc2FibGVkKTphY3RpdmV7Ym94LXNoYWRvdzowcHggM3B4IDNweCAtMnB4IHJnYmEoMCwgMCwgMCwgMC4yKSwwcHggM3B4IDRweCAwcHggcmdiYSgwLCAwLCAwLCAwLjE0KSwwcHggMXB4IDhweCAwcHggcmdiYSgwLCAwLCAwLCAwLjEyKX0ubWF0LWNoaXAubWF0LXN0YW5kYXJkLWNoaXBbX25nY29udGVudC0lQ09NUCVdOm5vdCgubWF0LWNoaXAtZGlzYWJsZWQpICAgLm1hdC1jaGlwLXJlbW92ZVtfbmdjb250ZW50LSVDT01QJV06aG92ZXJ7b3BhY2l0eTouNTR9Lm1hdC1jaGlwLm1hdC1zdGFuZGFyZC1jaGlwLm1hdC1jaGlwLWRpc2FibGVkW19uZ2NvbnRlbnQtJUNPTVAlXXtvcGFjaXR5Oi40fS5tYXQtY2hpcC5tYXQtc3RhbmRhcmQtY2hpcFtfbmdjb250ZW50LSVDT01QJV06OmFmdGVye2JhY2tncm91bmQ6IzAwMH0ubWF0LWNoaXAubWF0LXN0YW5kYXJkLWNoaXAubWF0LWNoaXAtc2VsZWN0ZWQubWF0LXByaW1hcnlbX25nY29udGVudC0lQ09NUCVde2JhY2tncm91bmQtY29sb3I6I2Y1N2MwMDtjb2xvcjojZmZmfS5tYXQtY2hpcC5tYXQtc3RhbmRhcmQtY2hpcC5tYXQtY2hpcC1zZWxlY3RlZC5tYXQtcHJpbWFyeVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWNoaXAtcmVtb3ZlW19uZ2NvbnRlbnQtJUNPTVAlXXtjb2xvcjojZmZmO29wYWNpdHk6LjR9Lm1hdC1jaGlwLm1hdC1zdGFuZGFyZC1jaGlwLm1hdC1jaGlwLXNlbGVjdGVkLm1hdC1wcmltYXJ5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtcmlwcGxlLWVsZW1lbnRbX25nY29udGVudC0lQ09NUCVde2JhY2tncm91bmQtY29sb3I6cmdiYSgyNTUsMjU1LDI1NSwuMSl9Lm1hdC1jaGlwLm1hdC1zdGFuZGFyZC1jaGlwLm1hdC1jaGlwLXNlbGVjdGVkLm1hdC13YXJuW19uZ2NvbnRlbnQtJUNPTVAlXXtiYWNrZ3JvdW5kLWNvbG9yOiNmNDQzMzY7Y29sb3I6I2ZmZn0ubWF0LWNoaXAubWF0LXN0YW5kYXJkLWNoaXAubWF0LWNoaXAtc2VsZWN0ZWQubWF0LXdhcm5bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1jaGlwLXJlbW92ZVtfbmdjb250ZW50LSVDT01QJV17Y29sb3I6I2ZmZjtvcGFjaXR5Oi40fS5tYXQtY2hpcC5tYXQtc3RhbmRhcmQtY2hpcC5tYXQtY2hpcC1zZWxlY3RlZC5tYXQtd2Fybltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXJpcHBsZS1lbGVtZW50W19uZ2NvbnRlbnQtJUNPTVAlXXtiYWNrZ3JvdW5kLWNvbG9yOnJnYmEoMjU1LDI1NSwyNTUsLjEpfS5tYXQtY2hpcC5tYXQtc3RhbmRhcmQtY2hpcC5tYXQtY2hpcC1zZWxlY3RlZC5tYXQtYWNjZW50W19uZ2NvbnRlbnQtJUNPTVAlXXtiYWNrZ3JvdW5kLWNvbG9yOiNmZjk4MDA7Y29sb3I6I2ZmZn0ubWF0LWNoaXAubWF0LXN0YW5kYXJkLWNoaXAubWF0LWNoaXAtc2VsZWN0ZWQubWF0LWFjY2VudFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWNoaXAtcmVtb3ZlW19uZ2NvbnRlbnQtJUNPTVAlXXtjb2xvcjojZmZmO29wYWNpdHk6LjR9Lm1hdC1jaGlwLm1hdC1zdGFuZGFyZC1jaGlwLm1hdC1jaGlwLXNlbGVjdGVkLm1hdC1hY2NlbnRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1yaXBwbGUtZWxlbWVudFtfbmdjb250ZW50LSVDT01QJV17YmFja2dyb3VuZC1jb2xvcjpyZ2JhKDI1NSwyNTUsMjU1LC4xKX0ubWF0LXRhYmxlW19uZ2NvbnRlbnQtJUNPTVAlXXtiYWNrZ3JvdW5kOiNmZmZ9Lm1hdC10YWJsZVtfbmdjb250ZW50LSVDT01QJV0gICB0aGVhZFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdGFibGVbX25nY29udGVudC0lQ09NUCVdICAgdGJvZHlbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXRhYmxlW19uZ2NvbnRlbnQtJUNPTVAlXSAgIHRmb290W19uZ2NvbnRlbnQtJUNPTVAlXSwgbWF0LWhlYWRlci1yb3dbX25nY29udGVudC0lQ09NUCVdLCBtYXQtcm93W19uZ2NvbnRlbnQtJUNPTVAlXSwgbWF0LWZvb3Rlci1yb3dbX25nY29udGVudC0lQ09NUCVdLCBbbWF0LWhlYWRlci1yb3ddW19uZ2NvbnRlbnQtJUNPTVAlXSwgW21hdC1yb3ddW19uZ2NvbnRlbnQtJUNPTVAlXSwgW21hdC1mb290ZXItcm93XVtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdGFibGUtc3RpY2t5W19uZ2NvbnRlbnQtJUNPTVAlXXtiYWNrZ3JvdW5kOmluaGVyaXR9bWF0LXJvd1tfbmdjb250ZW50LSVDT01QJV0sIG1hdC1oZWFkZXItcm93W19uZ2NvbnRlbnQtJUNPTVAlXSwgbWF0LWZvb3Rlci1yb3dbX25nY29udGVudC0lQ09NUCVdLCB0aC5tYXQtaGVhZGVyLWNlbGxbX25nY29udGVudC0lQ09NUCVdLCB0ZC5tYXQtY2VsbFtfbmdjb250ZW50LSVDT01QJV0sIHRkLm1hdC1mb290ZXItY2VsbFtfbmdjb250ZW50LSVDT01QJV17Ym9yZGVyLWJvdHRvbS1jb2xvcjpyZ2JhKDAsMCwwLC4xMil9Lm1hdC1oZWFkZXItY2VsbFtfbmdjb250ZW50LSVDT01QJV17Y29sb3I6IzYxNjE2MX0ubWF0LWNlbGxbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWZvb3Rlci1jZWxsW19uZ2NvbnRlbnQtJUNPTVAlXXtjb2xvcjojMjEyMTIxfS5tYXQtY2FsZW5kYXItYXJyb3dbX25nY29udGVudC0lQ09NUCVde2JvcmRlci10b3AtY29sb3I6cmdiYSgwLDAsMCwuNTQpfS5tYXQtZGF0ZXBpY2tlci10b2dnbGVbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWRhdGVwaWNrZXItY29udGVudFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWNhbGVuZGFyLW5leHQtYnV0dG9uW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1kYXRlcGlja2VyLWNvbnRlbnRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1jYWxlbmRhci1wcmV2aW91cy1idXR0b25bX25nY29udGVudC0lQ09NUCVde2NvbG9yOnJnYmEoMCwwLDAsLjU0KX0ubWF0LWNhbGVuZGFyLXRhYmxlLWhlYWRlcltfbmdjb250ZW50LSVDT01QJV17Y29sb3I6cmdiYSgwLDAsMCwuMzgpfS5tYXQtY2FsZW5kYXItdGFibGUtaGVhZGVyLWRpdmlkZXJbX25nY29udGVudC0lQ09NUCVdOjphZnRlcntiYWNrZ3JvdW5kOnJnYmEoMCwwLDAsLjEyKX0ubWF0LWNhbGVuZGFyLWJvZHktbGFiZWxbX25nY29udGVudC0lQ09NUCVde2NvbG9yOiM2MTYxNjF9Lm1hdC1jYWxlbmRhci1ib2R5LWNlbGwtY29udGVudFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtZGF0ZS1yYW5nZS1pbnB1dC1zZXBhcmF0b3JbX25nY29udGVudC0lQ09NUCVde2NvbG9yOiMyMTIxMjE7Ym9yZGVyLWNvbG9yOnRyYW5zcGFyZW50fS5tYXQtY2FsZW5kYXItYm9keS1kaXNhYmxlZFtfbmdjb250ZW50LSVDT01QJV0gPiAubWF0LWNhbGVuZGFyLWJvZHktY2VsbC1jb250ZW50W19uZ2NvbnRlbnQtJUNPTVAlXTpub3QoLm1hdC1jYWxlbmRhci1ib2R5LXNlbGVjdGVkKTpub3QoLm1hdC1jYWxlbmRhci1ib2R5LWNvbXBhcmlzb24taWRlbnRpY2FsKXtjb2xvcjojNzU3NTc1fS5tYXQtZm9ybS1maWVsZC1kaXNhYmxlZFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWRhdGUtcmFuZ2UtaW5wdXQtc2VwYXJhdG9yW19uZ2NvbnRlbnQtJUNPTVAlXXtjb2xvcjojNzU3NTc1fS5tYXQtY2FsZW5kYXItYm9keS1jZWxsW19uZ2NvbnRlbnQtJUNPTVAlXTpub3QoLm1hdC1jYWxlbmRhci1ib2R5LWRpc2FibGVkKTpob3ZlciA+IC5tYXQtY2FsZW5kYXItYm9keS1jZWxsLWNvbnRlbnRbX25nY29udGVudC0lQ09NUCVdOm5vdCgubWF0LWNhbGVuZGFyLWJvZHktc2VsZWN0ZWQpOm5vdCgubWF0LWNhbGVuZGFyLWJvZHktY29tcGFyaXNvbi1pZGVudGljYWwpLCAuY2RrLWtleWJvYXJkLWZvY3VzZWRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1jYWxlbmRhci1ib2R5LWFjdGl2ZVtfbmdjb250ZW50LSVDT01QJV0gPiAubWF0LWNhbGVuZGFyLWJvZHktY2VsbC1jb250ZW50W19uZ2NvbnRlbnQtJUNPTVAlXTpub3QoLm1hdC1jYWxlbmRhci1ib2R5LXNlbGVjdGVkKTpub3QoLm1hdC1jYWxlbmRhci1ib2R5LWNvbXBhcmlzb24taWRlbnRpY2FsKSwgLmNkay1wcm9ncmFtLWZvY3VzZWRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1jYWxlbmRhci1ib2R5LWFjdGl2ZVtfbmdjb250ZW50LSVDT01QJV0gPiAubWF0LWNhbGVuZGFyLWJvZHktY2VsbC1jb250ZW50W19uZ2NvbnRlbnQtJUNPTVAlXTpub3QoLm1hdC1jYWxlbmRhci1ib2R5LXNlbGVjdGVkKTpub3QoLm1hdC1jYWxlbmRhci1ib2R5LWNvbXBhcmlzb24taWRlbnRpY2FsKXtiYWNrZ3JvdW5kLWNvbG9yOnJnYmEoMCwwLDAsLjA0KX0ubWF0LWNhbGVuZGFyLWJvZHktaW4tcHJldmlld1tfbmdjb250ZW50LSVDT01QJV17Y29sb3I6cmdiYSgwLDAsMCwuMjQpfS5tYXQtY2FsZW5kYXItYm9keS10b2RheVtfbmdjb250ZW50LSVDT01QJV06bm90KC5tYXQtY2FsZW5kYXItYm9keS1zZWxlY3RlZCk6bm90KC5tYXQtY2FsZW5kYXItYm9keS1jb21wYXJpc29uLWlkZW50aWNhbCl7Ym9yZGVyLWNvbG9yOnJnYmEoMCwwLDAsLjM4KX0ubWF0LWNhbGVuZGFyLWJvZHktZGlzYWJsZWRbX25nY29udGVudC0lQ09NUCVdID4gLm1hdC1jYWxlbmRhci1ib2R5LXRvZGF5W19uZ2NvbnRlbnQtJUNPTVAlXTpub3QoLm1hdC1jYWxlbmRhci1ib2R5LXNlbGVjdGVkKTpub3QoLm1hdC1jYWxlbmRhci1ib2R5LWNvbXBhcmlzb24taWRlbnRpY2FsKXtib3JkZXItY29sb3I6cmdiYSgwLDAsMCwuMTgpfS5tYXQtY2FsZW5kYXItYm9keS1pbi1yYW5nZVtfbmdjb250ZW50LSVDT01QJV06OmJlZm9yZXtiYWNrZ3JvdW5kOnJnYmEoMjQ1LDEyNCwwLC4yKX0ubWF0LWNhbGVuZGFyLWJvZHktY29tcGFyaXNvbi1pZGVudGljYWxbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWNhbGVuZGFyLWJvZHktaW4tY29tcGFyaXNvbi1yYW5nZVtfbmdjb250ZW50LSVDT01QJV06OmJlZm9yZXtiYWNrZ3JvdW5kOnJnYmEoMjQ5LDE3MSwwLC4yKX0ubWF0LWNhbGVuZGFyLWJvZHktY29tcGFyaXNvbi1icmlkZ2Utc3RhcnRbX25nY29udGVudC0lQ09NUCVdOjpiZWZvcmUsIFtkaXI9cnRsXVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWNhbGVuZGFyLWJvZHktY29tcGFyaXNvbi1icmlkZ2UtZW5kW19uZ2NvbnRlbnQtJUNPTVAlXTo6YmVmb3Jle2JhY2tncm91bmQ6bGluZWFyLWdyYWRpZW50KHRvIHJpZ2h0LCByZ2JhKDI0NSwgMTI0LCAwLCAwLjIpIDUwJSwgcmdiYSgyNDksIDE3MSwgMCwgMC4yKSA1MCUpfS5tYXQtY2FsZW5kYXItYm9keS1jb21wYXJpc29uLWJyaWRnZS1lbmRbX25nY29udGVudC0lQ09NUCVdOjpiZWZvcmUsIFtkaXI9cnRsXVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWNhbGVuZGFyLWJvZHktY29tcGFyaXNvbi1icmlkZ2Utc3RhcnRbX25nY29udGVudC0lQ09NUCVdOjpiZWZvcmV7YmFja2dyb3VuZDpsaW5lYXItZ3JhZGllbnQodG8gbGVmdCwgcmdiYSgyNDUsIDEyNCwgMCwgMC4yKSA1MCUsIHJnYmEoMjQ5LCAxNzEsIDAsIDAuMikgNTAlKX0ubWF0LWNhbGVuZGFyLWJvZHktaW4tcmFuZ2VbX25nY29udGVudC0lQ09NUCVdID4gLm1hdC1jYWxlbmRhci1ib2R5LWNvbXBhcmlzb24taWRlbnRpY2FsW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1jYWxlbmRhci1ib2R5LWluLWNvbXBhcmlzb24tcmFuZ2UubWF0LWNhbGVuZGFyLWJvZHktaW4tcmFuZ2VbX25nY29udGVudC0lQ09NUCVdOjphZnRlcntiYWNrZ3JvdW5kOiNhOGRhYjV9Lm1hdC1jYWxlbmRhci1ib2R5LWNvbXBhcmlzb24taWRlbnRpY2FsLm1hdC1jYWxlbmRhci1ib2R5LXNlbGVjdGVkW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1jYWxlbmRhci1ib2R5LWluLWNvbXBhcmlzb24tcmFuZ2VbX25nY29udGVudC0lQ09NUCVdID4gLm1hdC1jYWxlbmRhci1ib2R5LXNlbGVjdGVkW19uZ2NvbnRlbnQtJUNPTVAlXXtiYWNrZ3JvdW5kOiM0NmEzNWV9Lm1hdC1jYWxlbmRhci1ib2R5LXNlbGVjdGVkW19uZ2NvbnRlbnQtJUNPTVAlXXtiYWNrZ3JvdW5kLWNvbG9yOiNmNTdjMDA7Y29sb3I6I2ZmZn0ubWF0LWNhbGVuZGFyLWJvZHktZGlzYWJsZWRbX25nY29udGVudC0lQ09NUCVdID4gLm1hdC1jYWxlbmRhci1ib2R5LXNlbGVjdGVkW19uZ2NvbnRlbnQtJUNPTVAlXXtiYWNrZ3JvdW5kLWNvbG9yOnJnYmEoMjQ1LDEyNCwwLC40KX0ubWF0LWNhbGVuZGFyLWJvZHktdG9kYXkubWF0LWNhbGVuZGFyLWJvZHktc2VsZWN0ZWRbX25nY29udGVudC0lQ09NUCVde2JveC1zaGFkb3c6aW5zZXQgMCAwIDAgMXB4ICNmZmZ9Lm1hdC1kYXRlcGlja2VyLWNvbnRlbnRbX25nY29udGVudC0lQ09NUCVde2JveC1zaGFkb3c6MHB4IDJweCA0cHggLTFweCByZ2JhKDAsIDAsIDAsIDAuMiksMHB4IDRweCA1cHggMHB4IHJnYmEoMCwgMCwgMCwgMC4xNCksMHB4IDFweCAxMHB4IDBweCByZ2JhKDAsIDAsIDAsIDAuMTIpO2JhY2tncm91bmQtY29sb3I6I2ZmZjtjb2xvcjojMjEyMTIxfS5tYXQtZGF0ZXBpY2tlci1jb250ZW50Lm1hdC1hY2NlbnRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1jYWxlbmRhci1ib2R5LWluLXJhbmdlW19uZ2NvbnRlbnQtJUNPTVAlXTo6YmVmb3Jle2JhY2tncm91bmQ6cmdiYSgyNTUsMTUyLDAsLjIpfS5tYXQtZGF0ZXBpY2tlci1jb250ZW50Lm1hdC1hY2NlbnRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1jYWxlbmRhci1ib2R5LWNvbXBhcmlzb24taWRlbnRpY2FsW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1kYXRlcGlja2VyLWNvbnRlbnQubWF0LWFjY2VudFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWNhbGVuZGFyLWJvZHktaW4tY29tcGFyaXNvbi1yYW5nZVtfbmdjb250ZW50LSVDT01QJV06OmJlZm9yZXtiYWNrZ3JvdW5kOnJnYmEoMjQ5LDE3MSwwLC4yKX0ubWF0LWRhdGVwaWNrZXItY29udGVudC5tYXQtYWNjZW50W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtY2FsZW5kYXItYm9keS1jb21wYXJpc29uLWJyaWRnZS1zdGFydFtfbmdjb250ZW50LSVDT01QJV06OmJlZm9yZSwgLm1hdC1kYXRlcGlja2VyLWNvbnRlbnQubWF0LWFjY2VudFtfbmdjb250ZW50LSVDT01QJV0gICBbZGlyPXJ0bF1bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1jYWxlbmRhci1ib2R5LWNvbXBhcmlzb24tYnJpZGdlLWVuZFtfbmdjb250ZW50LSVDT01QJV06OmJlZm9yZXtiYWNrZ3JvdW5kOmxpbmVhci1ncmFkaWVudCh0byByaWdodCwgcmdiYSgyNTUsIDE1MiwgMCwgMC4yKSA1MCUsIHJnYmEoMjQ5LCAxNzEsIDAsIDAuMikgNTAlKX0ubWF0LWRhdGVwaWNrZXItY29udGVudC5tYXQtYWNjZW50W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtY2FsZW5kYXItYm9keS1jb21wYXJpc29uLWJyaWRnZS1lbmRbX25nY29udGVudC0lQ09NUCVdOjpiZWZvcmUsIC5tYXQtZGF0ZXBpY2tlci1jb250ZW50Lm1hdC1hY2NlbnRbX25nY29udGVudC0lQ09NUCVdICAgW2Rpcj1ydGxdW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtY2FsZW5kYXItYm9keS1jb21wYXJpc29uLWJyaWRnZS1zdGFydFtfbmdjb250ZW50LSVDT01QJV06OmJlZm9yZXtiYWNrZ3JvdW5kOmxpbmVhci1ncmFkaWVudCh0byBsZWZ0LCByZ2JhKDI1NSwgMTUyLCAwLCAwLjIpIDUwJSwgcmdiYSgyNDksIDE3MSwgMCwgMC4yKSA1MCUpfS5tYXQtZGF0ZXBpY2tlci1jb250ZW50Lm1hdC1hY2NlbnRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1jYWxlbmRhci1ib2R5LWluLXJhbmdlW19uZ2NvbnRlbnQtJUNPTVAlXSA+IC5tYXQtY2FsZW5kYXItYm9keS1jb21wYXJpc29uLWlkZW50aWNhbFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtZGF0ZXBpY2tlci1jb250ZW50Lm1hdC1hY2NlbnRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1jYWxlbmRhci1ib2R5LWluLWNvbXBhcmlzb24tcmFuZ2UubWF0LWNhbGVuZGFyLWJvZHktaW4tcmFuZ2VbX25nY29udGVudC0lQ09NUCVdOjphZnRlcntiYWNrZ3JvdW5kOiNhOGRhYjV9Lm1hdC1kYXRlcGlja2VyLWNvbnRlbnQubWF0LWFjY2VudFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWNhbGVuZGFyLWJvZHktY29tcGFyaXNvbi1pZGVudGljYWwubWF0LWNhbGVuZGFyLWJvZHktc2VsZWN0ZWRbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWRhdGVwaWNrZXItY29udGVudC5tYXQtYWNjZW50W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtY2FsZW5kYXItYm9keS1pbi1jb21wYXJpc29uLXJhbmdlW19uZ2NvbnRlbnQtJUNPTVAlXSA+IC5tYXQtY2FsZW5kYXItYm9keS1zZWxlY3RlZFtfbmdjb250ZW50LSVDT01QJV17YmFja2dyb3VuZDojNDZhMzVlfS5tYXQtZGF0ZXBpY2tlci1jb250ZW50Lm1hdC1hY2NlbnRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1jYWxlbmRhci1ib2R5LXNlbGVjdGVkW19uZ2NvbnRlbnQtJUNPTVAlXXtiYWNrZ3JvdW5kLWNvbG9yOiNmZjk4MDA7Y29sb3I6I2ZmZn0ubWF0LWRhdGVwaWNrZXItY29udGVudC5tYXQtYWNjZW50W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtY2FsZW5kYXItYm9keS1kaXNhYmxlZFtfbmdjb250ZW50LSVDT01QJV0gPiAubWF0LWNhbGVuZGFyLWJvZHktc2VsZWN0ZWRbX25nY29udGVudC0lQ09NUCVde2JhY2tncm91bmQtY29sb3I6cmdiYSgyNTUsMTUyLDAsLjQpfS5tYXQtZGF0ZXBpY2tlci1jb250ZW50Lm1hdC1hY2NlbnRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1jYWxlbmRhci1ib2R5LXRvZGF5Lm1hdC1jYWxlbmRhci1ib2R5LXNlbGVjdGVkW19uZ2NvbnRlbnQtJUNPTVAlXXtib3gtc2hhZG93Omluc2V0IDAgMCAwIDFweCAjZmZmfS5tYXQtZGF0ZXBpY2tlci1jb250ZW50Lm1hdC13YXJuW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtY2FsZW5kYXItYm9keS1pbi1yYW5nZVtfbmdjb250ZW50LSVDT01QJV06OmJlZm9yZXtiYWNrZ3JvdW5kOnJnYmEoMjQ0LDY3LDU0LC4yKX0ubWF0LWRhdGVwaWNrZXItY29udGVudC5tYXQtd2Fybltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWNhbGVuZGFyLWJvZHktY29tcGFyaXNvbi1pZGVudGljYWxbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWRhdGVwaWNrZXItY29udGVudC5tYXQtd2Fybltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWNhbGVuZGFyLWJvZHktaW4tY29tcGFyaXNvbi1yYW5nZVtfbmdjb250ZW50LSVDT01QJV06OmJlZm9yZXtiYWNrZ3JvdW5kOnJnYmEoMjQ5LDE3MSwwLC4yKX0ubWF0LWRhdGVwaWNrZXItY29udGVudC5tYXQtd2Fybltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWNhbGVuZGFyLWJvZHktY29tcGFyaXNvbi1icmlkZ2Utc3RhcnRbX25nY29udGVudC0lQ09NUCVdOjpiZWZvcmUsIC5tYXQtZGF0ZXBpY2tlci1jb250ZW50Lm1hdC13YXJuW19uZ2NvbnRlbnQtJUNPTVAlXSAgIFtkaXI9cnRsXVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWNhbGVuZGFyLWJvZHktY29tcGFyaXNvbi1icmlkZ2UtZW5kW19uZ2NvbnRlbnQtJUNPTVAlXTo6YmVmb3Jle2JhY2tncm91bmQ6bGluZWFyLWdyYWRpZW50KHRvIHJpZ2h0LCByZ2JhKDI0NCwgNjcsIDU0LCAwLjIpIDUwJSwgcmdiYSgyNDksIDE3MSwgMCwgMC4yKSA1MCUpfS5tYXQtZGF0ZXBpY2tlci1jb250ZW50Lm1hdC13YXJuW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtY2FsZW5kYXItYm9keS1jb21wYXJpc29uLWJyaWRnZS1lbmRbX25nY29udGVudC0lQ09NUCVdOjpiZWZvcmUsIC5tYXQtZGF0ZXBpY2tlci1jb250ZW50Lm1hdC13YXJuW19uZ2NvbnRlbnQtJUNPTVAlXSAgIFtkaXI9cnRsXVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWNhbGVuZGFyLWJvZHktY29tcGFyaXNvbi1icmlkZ2Utc3RhcnRbX25nY29udGVudC0lQ09NUCVdOjpiZWZvcmV7YmFja2dyb3VuZDpsaW5lYXItZ3JhZGllbnQodG8gbGVmdCwgcmdiYSgyNDQsIDY3LCA1NCwgMC4yKSA1MCUsIHJnYmEoMjQ5LCAxNzEsIDAsIDAuMikgNTAlKX0ubWF0LWRhdGVwaWNrZXItY29udGVudC5tYXQtd2Fybltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWNhbGVuZGFyLWJvZHktaW4tcmFuZ2VbX25nY29udGVudC0lQ09NUCVdID4gLm1hdC1jYWxlbmRhci1ib2R5LWNvbXBhcmlzb24taWRlbnRpY2FsW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1kYXRlcGlja2VyLWNvbnRlbnQubWF0LXdhcm5bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1jYWxlbmRhci1ib2R5LWluLWNvbXBhcmlzb24tcmFuZ2UubWF0LWNhbGVuZGFyLWJvZHktaW4tcmFuZ2VbX25nY29udGVudC0lQ09NUCVdOjphZnRlcntiYWNrZ3JvdW5kOiNhOGRhYjV9Lm1hdC1kYXRlcGlja2VyLWNvbnRlbnQubWF0LXdhcm5bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1jYWxlbmRhci1ib2R5LWNvbXBhcmlzb24taWRlbnRpY2FsLm1hdC1jYWxlbmRhci1ib2R5LXNlbGVjdGVkW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1kYXRlcGlja2VyLWNvbnRlbnQubWF0LXdhcm5bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1jYWxlbmRhci1ib2R5LWluLWNvbXBhcmlzb24tcmFuZ2VbX25nY29udGVudC0lQ09NUCVdID4gLm1hdC1jYWxlbmRhci1ib2R5LXNlbGVjdGVkW19uZ2NvbnRlbnQtJUNPTVAlXXtiYWNrZ3JvdW5kOiM0NmEzNWV9Lm1hdC1kYXRlcGlja2VyLWNvbnRlbnQubWF0LXdhcm5bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1jYWxlbmRhci1ib2R5LXNlbGVjdGVkW19uZ2NvbnRlbnQtJUNPTVAlXXtiYWNrZ3JvdW5kLWNvbG9yOiNmNDQzMzY7Y29sb3I6I2ZmZn0ubWF0LWRhdGVwaWNrZXItY29udGVudC5tYXQtd2Fybltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWNhbGVuZGFyLWJvZHktZGlzYWJsZWRbX25nY29udGVudC0lQ09NUCVdID4gLm1hdC1jYWxlbmRhci1ib2R5LXNlbGVjdGVkW19uZ2NvbnRlbnQtJUNPTVAlXXtiYWNrZ3JvdW5kLWNvbG9yOnJnYmEoMjQ0LDY3LDU0LC40KX0ubWF0LWRhdGVwaWNrZXItY29udGVudC5tYXQtd2Fybltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWNhbGVuZGFyLWJvZHktdG9kYXkubWF0LWNhbGVuZGFyLWJvZHktc2VsZWN0ZWRbX25nY29udGVudC0lQ09NUCVde2JveC1zaGFkb3c6aW5zZXQgMCAwIDAgMXB4ICNmZmZ9Lm1hdC1kYXRlcGlja2VyLWNvbnRlbnQtdG91Y2hbX25nY29udGVudC0lQ09NUCVde2JveC1zaGFkb3c6MHB4IDBweCAwcHggMHB4IHJnYmEoMCwgMCwgMCwgMC4yKSwwcHggMHB4IDBweCAwcHggcmdiYSgwLCAwLCAwLCAwLjE0KSwwcHggMHB4IDBweCAwcHggcmdiYSgwLCAwLCAwLCAwLjEyKX0ubWF0LWRhdGVwaWNrZXItdG9nZ2xlLWFjdGl2ZVtfbmdjb250ZW50LSVDT01QJV17Y29sb3I6I2Y1N2MwMH0ubWF0LWRhdGVwaWNrZXItdG9nZ2xlLWFjdGl2ZS5tYXQtYWNjZW50W19uZ2NvbnRlbnQtJUNPTVAlXXtjb2xvcjojZmY5ODAwfS5tYXQtZGF0ZXBpY2tlci10b2dnbGUtYWN0aXZlLm1hdC13YXJuW19uZ2NvbnRlbnQtJUNPTVAlXXtjb2xvcjojZjQ0MzM2fS5tYXQtZGF0ZS1yYW5nZS1pbnB1dC1pbm5lcltkaXNhYmxlZF1bX25nY29udGVudC0lQ09NUCVde2NvbG9yOiM3NTc1NzV9Lm1hdC1kaWFsb2ctY29udGFpbmVyW19uZ2NvbnRlbnQtJUNPTVAlXXtib3gtc2hhZG93OjBweCAxMXB4IDE1cHggLTdweCByZ2JhKDAsIDAsIDAsIDAuMiksMHB4IDI0cHggMzhweCAzcHggcmdiYSgwLCAwLCAwLCAwLjE0KSwwcHggOXB4IDQ2cHggOHB4IHJnYmEoMCwgMCwgMCwgMC4xMik7YmFja2dyb3VuZDojZmZmO2NvbG9yOiMyMTIxMjF9Lm1hdC1kaXZpZGVyW19uZ2NvbnRlbnQtJUNPTVAlXXtib3JkZXItdG9wLWNvbG9yOnJnYmEoMCwwLDAsLjEyKX0ubWF0LWRpdmlkZXItdmVydGljYWxbX25nY29udGVudC0lQ09NUCVde2JvcmRlci1yaWdodC1jb2xvcjpyZ2JhKDAsMCwwLC4xMil9Lm1hdC1leHBhbnNpb24tcGFuZWxbX25nY29udGVudC0lQ09NUCVde2JhY2tncm91bmQ6I2ZmZjtjb2xvcjojMjEyMTIxfS5tYXQtZXhwYW5zaW9uLXBhbmVsW19uZ2NvbnRlbnQtJUNPTVAlXTpub3QoW2NsYXNzKj1tYXQtZWxldmF0aW9uLXpdKXtib3gtc2hhZG93OjBweCAzcHggMXB4IC0ycHggcmdiYSgwLCAwLCAwLCAwLjIpLDBweCAycHggMnB4IDBweCByZ2JhKDAsIDAsIDAsIDAuMTQpLDBweCAxcHggNXB4IDBweCByZ2JhKDAsIDAsIDAsIDAuMTIpfS5tYXQtYWN0aW9uLXJvd1tfbmdjb250ZW50LSVDT01QJV17Ym9yZGVyLXRvcC1jb2xvcjpyZ2JhKDAsMCwwLC4xMil9Lm1hdC1leHBhbnNpb24tcGFuZWxbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1leHBhbnNpb24tcGFuZWwtaGVhZGVyLmNkay1rZXlib2FyZC1mb2N1c2VkW19uZ2NvbnRlbnQtJUNPTVAlXTpub3QoW2FyaWEtZGlzYWJsZWQ9dHJ1ZV0pLCAubWF0LWV4cGFuc2lvbi1wYW5lbFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWV4cGFuc2lvbi1wYW5lbC1oZWFkZXIuY2RrLXByb2dyYW0tZm9jdXNlZFtfbmdjb250ZW50LSVDT01QJV06bm90KFthcmlhLWRpc2FibGVkPXRydWVdKSwgLm1hdC1leHBhbnNpb24tcGFuZWxbX25nY29udGVudC0lQ09NUCVdOm5vdCgubWF0LWV4cGFuZGVkKSAgIC5tYXQtZXhwYW5zaW9uLXBhbmVsLWhlYWRlcltfbmdjb250ZW50LSVDT01QJV06aG92ZXI6bm90KFthcmlhLWRpc2FibGVkPXRydWVdKXtiYWNrZ3JvdW5kOnJnYmEoMCwwLDAsLjA0KX1AbWVkaWEoaG92ZXI6IG5vbmUpey5tYXQtZXhwYW5zaW9uLXBhbmVsW19uZ2NvbnRlbnQtJUNPTVAlXTpub3QoLm1hdC1leHBhbmRlZCk6bm90KFthcmlhLWRpc2FibGVkPXRydWVdKSAgIC5tYXQtZXhwYW5zaW9uLXBhbmVsLWhlYWRlcltfbmdjb250ZW50LSVDT01QJV06aG92ZXJ7YmFja2dyb3VuZDojZmZmfX0ubWF0LWV4cGFuc2lvbi1wYW5lbC1oZWFkZXItdGl0bGVbX25nY29udGVudC0lQ09NUCVde2NvbG9yOiMyMTIxMjF9Lm1hdC1leHBhbnNpb24tcGFuZWwtaGVhZGVyLWRlc2NyaXB0aW9uW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1leHBhbnNpb24taW5kaWNhdG9yW19uZ2NvbnRlbnQtJUNPTVAlXTo6YWZ0ZXJ7Y29sb3I6IzYxNjE2MX0ubWF0LWV4cGFuc2lvbi1wYW5lbC1oZWFkZXJbYXJpYS1kaXNhYmxlZD10cnVlXVtfbmdjb250ZW50LSVDT01QJV17Y29sb3I6cmdiYSgwLDAsMCwuMjYpfS5tYXQtZXhwYW5zaW9uLXBhbmVsLWhlYWRlclthcmlhLWRpc2FibGVkPXRydWVdW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZXhwYW5zaW9uLXBhbmVsLWhlYWRlci10aXRsZVtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtZXhwYW5zaW9uLXBhbmVsLWhlYWRlclthcmlhLWRpc2FibGVkPXRydWVdW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZXhwYW5zaW9uLXBhbmVsLWhlYWRlci1kZXNjcmlwdGlvbltfbmdjb250ZW50LSVDT01QJV17Y29sb3I6aW5oZXJpdH0ubWF0LWV4cGFuc2lvbi1wYW5lbC1oZWFkZXJbX25nY29udGVudC0lQ09NUCVde2hlaWdodDo0OHB4fS5tYXQtZXhwYW5zaW9uLXBhbmVsLWhlYWRlci5tYXQtZXhwYW5kZWRbX25nY29udGVudC0lQ09NUCVde2hlaWdodDo2NHB4fS5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17Y29sb3I6cmdiYSg5Nyw5Nyw5NywuNil9Lm1hdC1oaW50W19uZ2NvbnRlbnQtJUNPTVAlXXtjb2xvcjpyZ2JhKDk3LDk3LDk3LC42KX0ubWF0LWZvcm0tZmllbGQubWF0LWZvY3VzZWRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXtjb2xvcjojZjU3YzAwfS5tYXQtZm9ybS1maWVsZC5tYXQtZm9jdXNlZFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWwubWF0LWFjY2VudFtfbmdjb250ZW50LSVDT01QJV17Y29sb3I6I2ZmOTgwMH0ubWF0LWZvcm0tZmllbGQubWF0LWZvY3VzZWRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsLm1hdC13YXJuW19uZ2NvbnRlbnQtJUNPTVAlXXtjb2xvcjojZjQ0MzM2fS5tYXQtZm9jdXNlZFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtcmVxdWlyZWQtbWFya2VyW19uZ2NvbnRlbnQtJUNPTVAlXXtjb2xvcjojZmY5ODAwfS5tYXQtZm9ybS1maWVsZC1yaXBwbGVbX25nY29udGVudC0lQ09NUCVde2JhY2tncm91bmQtY29sb3I6cmdiYSgwLDAsMCwuODcpfS5tYXQtZm9ybS1maWVsZC5tYXQtZm9jdXNlZFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtcmlwcGxlW19uZ2NvbnRlbnQtJUNPTVAlXXtiYWNrZ3JvdW5kLWNvbG9yOiNmNTdjMDB9Lm1hdC1mb3JtLWZpZWxkLm1hdC1mb2N1c2VkW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1yaXBwbGUubWF0LWFjY2VudFtfbmdjb250ZW50LSVDT01QJV17YmFja2dyb3VuZC1jb2xvcjojZmY5ODAwfS5tYXQtZm9ybS1maWVsZC5tYXQtZm9jdXNlZFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtcmlwcGxlLm1hdC13YXJuW19uZ2NvbnRlbnQtJUNPTVAlXXtiYWNrZ3JvdW5kLWNvbG9yOiNmNDQzMzZ9Lm1hdC1mb3JtLWZpZWxkLXR5cGUtbWF0LW5hdGl2ZS1zZWxlY3QubWF0LWZvY3VzZWRbX25nY29udGVudC0lQ09NUCVdOm5vdCgubWF0LWZvcm0tZmllbGQtaW52YWxpZCkgICAubWF0LWZvcm0tZmllbGQtaW5maXhbX25nY29udGVudC0lQ09NUCVdOjphZnRlcntjb2xvcjojZjU3YzAwfS5tYXQtZm9ybS1maWVsZC10eXBlLW1hdC1uYXRpdmUtc2VsZWN0Lm1hdC1mb2N1c2VkW19uZ2NvbnRlbnQtJUNPTVAlXTpub3QoLm1hdC1mb3JtLWZpZWxkLWludmFsaWQpLm1hdC1hY2NlbnQgICAubWF0LWZvcm0tZmllbGQtaW5maXhbX25nY29udGVudC0lQ09NUCVdOjphZnRlcntjb2xvcjojZmY5ODAwfS5tYXQtZm9ybS1maWVsZC10eXBlLW1hdC1uYXRpdmUtc2VsZWN0Lm1hdC1mb2N1c2VkW19uZ2NvbnRlbnQtJUNPTVAlXTpub3QoLm1hdC1mb3JtLWZpZWxkLWludmFsaWQpLm1hdC13YXJuICAgLm1hdC1mb3JtLWZpZWxkLWluZml4W19uZ2NvbnRlbnQtJUNPTVAlXTo6YWZ0ZXJ7Y29sb3I6I2Y0NDMzNn0ubWF0LWZvcm0tZmllbGQubWF0LWZvcm0tZmllbGQtaW52YWxpZFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVde2NvbG9yOiNmNDQzMzZ9Lm1hdC1mb3JtLWZpZWxkLm1hdC1mb3JtLWZpZWxkLWludmFsaWRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsLm1hdC1hY2NlbnRbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWZvcm0tZmllbGQubWF0LWZvcm0tZmllbGQtaW52YWxpZFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLXJlcXVpcmVkLW1hcmtlcltfbmdjb250ZW50LSVDT01QJV17Y29sb3I6I2Y0NDMzNn0ubWF0LWZvcm0tZmllbGQubWF0LWZvcm0tZmllbGQtaW52YWxpZFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtcmlwcGxlW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1mb3JtLWZpZWxkLm1hdC1mb3JtLWZpZWxkLWludmFsaWRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLXJpcHBsZS5tYXQtYWNjZW50W19uZ2NvbnRlbnQtJUNPTVAlXXtiYWNrZ3JvdW5kLWNvbG9yOiNmNDQzMzZ9Lm1hdC1lcnJvcltfbmdjb250ZW50LSVDT01QJV17Y29sb3I6I2Y0NDMzNn0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1sZWdhY3lbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXtjb2xvcjojNjE2MTYxfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWxlZ2FjeVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWhpbnRbX25nY29udGVudC0lQ09NUCVde2NvbG9yOiM2MTYxNjF9Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtbGVnYWN5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC11bmRlcmxpbmVbX25nY29udGVudC0lQ09NUCVde2JhY2tncm91bmQtY29sb3I6cmdiYSgwLDAsMCwuNDIpfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWxlZ2FjeS5tYXQtZm9ybS1maWVsZC1kaXNhYmxlZFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtdW5kZXJsaW5lW19uZ2NvbnRlbnQtJUNPTVAlXXtiYWNrZ3JvdW5kLWltYWdlOmxpbmVhci1ncmFkaWVudCh0byByaWdodCwgcmdiYSgwLCAwLCAwLCAwLjQyKSAwJSwgcmdiYSgwLCAwLCAwLCAwLjQyKSAzMyUsIHRyYW5zcGFyZW50IDAlKTtiYWNrZ3JvdW5kLXNpemU6NHB4IDEwMCU7YmFja2dyb3VuZC1yZXBlYXQ6cmVwZWF0LXh9Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2Utc3RhbmRhcmRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLXVuZGVybGluZVtfbmdjb250ZW50LSVDT01QJV17YmFja2dyb3VuZC1jb2xvcjpyZ2JhKDAsMCwwLC40Mil9Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2Utc3RhbmRhcmQubWF0LWZvcm0tZmllbGQtZGlzYWJsZWRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLXVuZGVybGluZVtfbmdjb250ZW50LSVDT01QJV17YmFja2dyb3VuZC1pbWFnZTpsaW5lYXItZ3JhZGllbnQodG8gcmlnaHQsIHJnYmEoMCwgMCwgMCwgMC40MikgMCUsIHJnYmEoMCwgMCwgMCwgMC40MikgMzMlLCB0cmFuc3BhcmVudCAwJSk7YmFja2dyb3VuZC1zaXplOjRweCAxMDAlO2JhY2tncm91bmQtcmVwZWF0OnJlcGVhdC14fS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWZpbGxbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWZsZXhbX25nY29udGVudC0lQ09NUCVde2JhY2tncm91bmQtY29sb3I6cmdiYSgwLDAsMCwuMDQpfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWZpbGwubWF0LWZvcm0tZmllbGQtZGlzYWJsZWRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWZsZXhbX25nY29udGVudC0lQ09NUCVde2JhY2tncm91bmQtY29sb3I6cmdiYSgwLDAsMCwuMDIpfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWZpbGxbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLXVuZGVybGluZVtfbmdjb250ZW50LSVDT01QJV06OmJlZm9yZXtiYWNrZ3JvdW5kLWNvbG9yOnJnYmEoMCwwLDAsLjQyKX0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1maWxsLm1hdC1mb3JtLWZpZWxkLWRpc2FibGVkW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17Y29sb3I6Izc1NzU3NX0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1maWxsLm1hdC1mb3JtLWZpZWxkLWRpc2FibGVkW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC11bmRlcmxpbmVbX25nY29udGVudC0lQ09NUCVdOjpiZWZvcmV7YmFja2dyb3VuZC1jb2xvcjp0cmFuc3BhcmVudH0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1vdXRsaW5lW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1vdXRsaW5lW19uZ2NvbnRlbnQtJUNPTVAlXXtjb2xvcjpyZ2JhKDAsMCwwLC4xMil9Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2Utb3V0bGluZVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtb3V0bGluZS10aGlja1tfbmdjb250ZW50LSVDT01QJV17Y29sb3I6cmdiYSgwLDAsMCwuODcpfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLW91dGxpbmUubWF0LWZvY3VzZWRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLW91dGxpbmUtdGhpY2tbX25nY29udGVudC0lQ09NUCVde2NvbG9yOiNmNTdjMDB9Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2Utb3V0bGluZS5tYXQtZm9jdXNlZC5tYXQtYWNjZW50W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1vdXRsaW5lLXRoaWNrW19uZ2NvbnRlbnQtJUNPTVAlXXtjb2xvcjojZmY5ODAwfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLW91dGxpbmUubWF0LWZvY3VzZWQubWF0LXdhcm5bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLW91dGxpbmUtdGhpY2tbX25nY29udGVudC0lQ09NUCVde2NvbG9yOiNmNDQzMzZ9Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2Utb3V0bGluZS5tYXQtZm9ybS1maWVsZC1pbnZhbGlkLm1hdC1mb3JtLWZpZWxkLWludmFsaWRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLW91dGxpbmUtdGhpY2tbX25nY29udGVudC0lQ09NUCVde2NvbG9yOiNmNDQzMzZ9Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2Utb3V0bGluZS5tYXQtZm9ybS1maWVsZC1kaXNhYmxlZFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVde2NvbG9yOiM3NTc1NzV9Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2Utb3V0bGluZS5tYXQtZm9ybS1maWVsZC1kaXNhYmxlZFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtb3V0bGluZVtfbmdjb250ZW50LSVDT01QJV17Y29sb3I6cmdiYSgwLDAsMCwuMDYpfS5tYXQtaWNvbi5tYXQtcHJpbWFyeVtfbmdjb250ZW50LSVDT01QJV17Y29sb3I6I2Y1N2MwMH0ubWF0LWljb24ubWF0LWFjY2VudFtfbmdjb250ZW50LSVDT01QJV17Y29sb3I6I2ZmOTgwMH0ubWF0LWljb24ubWF0LXdhcm5bX25nY29udGVudC0lQ09NUCVde2NvbG9yOiNmNDQzMzZ9Lm1hdC1mb3JtLWZpZWxkLXR5cGUtbWF0LW5hdGl2ZS1zZWxlY3RbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWluZml4W19uZ2NvbnRlbnQtJUNPTVAlXTo6YWZ0ZXJ7Y29sb3I6IzYxNjE2MX0ubWF0LWlucHV0LWVsZW1lbnRbX25nY29udGVudC0lQ09NUCVdOmRpc2FibGVkLCAubWF0LWZvcm0tZmllbGQtdHlwZS1tYXQtbmF0aXZlLXNlbGVjdC5tYXQtZm9ybS1maWVsZC1kaXNhYmxlZFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtaW5maXhbX25nY29udGVudC0lQ09NUCVdOjphZnRlcntjb2xvcjojNzU3NTc1fS5tYXQtaW5wdXQtZWxlbWVudFtfbmdjb250ZW50LSVDT01QJV17Y2FyZXQtY29sb3I6I2Y1N2MwMH0ubWF0LWlucHV0LWVsZW1lbnRbX25nY29udGVudC0lQ09NUCVdOjpwbGFjZWhvbGRlcntjb2xvcjpyZ2JhKDk3LDk3LDk3LC40Mil9Lm1hdC1pbnB1dC1lbGVtZW50W19uZ2NvbnRlbnQtJUNPTVAlXTo6LW1vei1wbGFjZWhvbGRlcntjb2xvcjpyZ2JhKDk3LDk3LDk3LC40Mil9Lm1hdC1pbnB1dC1lbGVtZW50W19uZ2NvbnRlbnQtJUNPTVAlXTo6LXdlYmtpdC1pbnB1dC1wbGFjZWhvbGRlcntjb2xvcjpyZ2JhKDk3LDk3LDk3LC40Mil9Lm1hdC1pbnB1dC1lbGVtZW50W19uZ2NvbnRlbnQtJUNPTVAlXTotbXMtaW5wdXQtcGxhY2Vob2xkZXJ7Y29sb3I6cmdiYSg5Nyw5Nyw5NywuNDIpfS5tYXQtZm9ybS1maWVsZC5tYXQtYWNjZW50W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaW5wdXQtZWxlbWVudFtfbmdjb250ZW50LSVDT01QJV17Y2FyZXQtY29sb3I6I2ZmOTgwMH0ubWF0LWZvcm0tZmllbGQubWF0LXdhcm5bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pbnB1dC1lbGVtZW50W19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1mb3JtLWZpZWxkLWludmFsaWRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pbnB1dC1lbGVtZW50W19uZ2NvbnRlbnQtJUNPTVAlXXtjYXJldC1jb2xvcjojZjQ0MzM2fS5tYXQtZm9ybS1maWVsZC10eXBlLW1hdC1uYXRpdmUtc2VsZWN0Lm1hdC1mb3JtLWZpZWxkLWludmFsaWRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWluZml4W19uZ2NvbnRlbnQtJUNPTVAlXTo6YWZ0ZXJ7Y29sb3I6I2Y0NDMzNn0ubWF0LWxpc3QtYmFzZVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpc3QtaXRlbVtfbmdjb250ZW50LSVDT01QJV17Y29sb3I6IzIxMjEyMX0ubWF0LWxpc3QtYmFzZVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpc3Qtb3B0aW9uW19uZ2NvbnRlbnQtJUNPTVAlXXtjb2xvcjojMjEyMTIxfS5tYXQtbGlzdC1iYXNlW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtc3ViaGVhZGVyW19uZ2NvbnRlbnQtJUNPTVAlXXtjb2xvcjojNjE2MTYxfS5tYXQtbGlzdC1pdGVtLWRpc2FibGVkW19uZ2NvbnRlbnQtJUNPTVAlXXtiYWNrZ3JvdW5kLWNvbG9yOiNlZWV9Lm1hdC1saXN0LW9wdGlvbltfbmdjb250ZW50LSVDT01QJV06aG92ZXIsIC5tYXQtbGlzdC1vcHRpb25bX25nY29udGVudC0lQ09NUCVdOmZvY3VzLCAubWF0LW5hdi1saXN0W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGlzdC1pdGVtW19uZ2NvbnRlbnQtJUNPTVAlXTpob3ZlciwgLm1hdC1uYXYtbGlzdFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpc3QtaXRlbVtfbmdjb250ZW50LSVDT01QJV06Zm9jdXMsIC5tYXQtYWN0aW9uLWxpc3RbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saXN0LWl0ZW1bX25nY29udGVudC0lQ09NUCVdOmhvdmVyLCAubWF0LWFjdGlvbi1saXN0W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGlzdC1pdGVtW19uZ2NvbnRlbnQtJUNPTVAlXTpmb2N1c3tiYWNrZ3JvdW5kOnJnYmEoMCwwLDAsLjA0KX0ubWF0LWxpc3Qtc2luZ2xlLXNlbGVjdGVkLW9wdGlvbltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtbGlzdC1zaW5nbGUtc2VsZWN0ZWQtb3B0aW9uW19uZ2NvbnRlbnQtJUNPTVAlXTpob3ZlciwgLm1hdC1saXN0LXNpbmdsZS1zZWxlY3RlZC1vcHRpb25bX25nY29udGVudC0lQ09NUCVdOmZvY3Vze2JhY2tncm91bmQ6cmdiYSgwLDAsMCwuMTIpfS5tYXQtbWVudS1wYW5lbFtfbmdjb250ZW50LSVDT01QJV17YmFja2dyb3VuZDojZmZmfS5tYXQtbWVudS1wYW5lbFtfbmdjb250ZW50LSVDT01QJV06bm90KFtjbGFzcyo9bWF0LWVsZXZhdGlvbi16XSl7Ym94LXNoYWRvdzowcHggMnB4IDRweCAtMXB4IHJnYmEoMCwgMCwgMCwgMC4yKSwwcHggNHB4IDVweCAwcHggcmdiYSgwLCAwLCAwLCAwLjE0KSwwcHggMXB4IDEwcHggMHB4IHJnYmEoMCwgMCwgMCwgMC4xMil9Lm1hdC1tZW51LWl0ZW1bX25nY29udGVudC0lQ09NUCVde2JhY2tncm91bmQ6dHJhbnNwYXJlbnQ7Y29sb3I6IzIxMjEyMX0ubWF0LW1lbnUtaXRlbVtkaXNhYmxlZF1bX25nY29udGVudC0lQ09NUCVdLCAubWF0LW1lbnUtaXRlbVtkaXNhYmxlZF1bX25nY29udGVudC0lQ09NUCVdOjphZnRlcntjb2xvcjpyZ2JhKDAsMCwwLC4zOCl9Lm1hdC1tZW51LWl0ZW1bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pY29uLW5vLWNvbG9yW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1tZW51LWl0ZW0tc3VibWVudS10cmlnZ2VyW19uZ2NvbnRlbnQtJUNPTVAlXTo6YWZ0ZXJ7Y29sb3I6cmdiYSgwLDAsMCwuNTQpfS5tYXQtbWVudS1pdGVtW19uZ2NvbnRlbnQtJUNPTVAlXTpob3Zlcjpub3QoW2Rpc2FibGVkXSksIC5tYXQtbWVudS1pdGVtLmNkay1wcm9ncmFtLWZvY3VzZWRbX25nY29udGVudC0lQ09NUCVdOm5vdChbZGlzYWJsZWRdKSwgLm1hdC1tZW51LWl0ZW0uY2RrLWtleWJvYXJkLWZvY3VzZWRbX25nY29udGVudC0lQ09NUCVdOm5vdChbZGlzYWJsZWRdKSwgLm1hdC1tZW51LWl0ZW0taGlnaGxpZ2h0ZWRbX25nY29udGVudC0lQ09NUCVdOm5vdChbZGlzYWJsZWRdKXtiYWNrZ3JvdW5kOnJnYmEoMCwwLDAsLjA0KX0ubWF0LXBhZ2luYXRvcltfbmdjb250ZW50LSVDT01QJV17YmFja2dyb3VuZDojZmZmfS5tYXQtcGFnaW5hdG9yW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1wYWdpbmF0b3ItcGFnZS1zaXplW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtc2VsZWN0LXRyaWdnZXJbX25nY29udGVudC0lQ09NUCVde2NvbG9yOiM2MTYxNjF9Lm1hdC1wYWdpbmF0b3ItZGVjcmVtZW50W19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1wYWdpbmF0b3ItaW5jcmVtZW50W19uZ2NvbnRlbnQtJUNPTVAlXXtib3JkZXItdG9wOjJweCBzb2xpZCByZ2JhKDAsMCwwLC41NCk7Ym9yZGVyLXJpZ2h0OjJweCBzb2xpZCByZ2JhKDAsMCwwLC41NCl9Lm1hdC1wYWdpbmF0b3ItZmlyc3RbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXBhZ2luYXRvci1sYXN0W19uZ2NvbnRlbnQtJUNPTVAlXXtib3JkZXItdG9wOjJweCBzb2xpZCByZ2JhKDAsMCwwLC41NCl9Lm1hdC1pY29uLWJ1dHRvbltkaXNhYmxlZF1bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1wYWdpbmF0b3ItZGVjcmVtZW50W19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1pY29uLWJ1dHRvbltkaXNhYmxlZF1bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1wYWdpbmF0b3ItaW5jcmVtZW50W19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1pY29uLWJ1dHRvbltkaXNhYmxlZF1bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1wYWdpbmF0b3ItZmlyc3RbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWljb24tYnV0dG9uW2Rpc2FibGVkXVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXBhZ2luYXRvci1sYXN0W19uZ2NvbnRlbnQtJUNPTVAlXXtib3JkZXItY29sb3I6cmdiYSgwLDAsMCwuMzgpfS5tYXQtcGFnaW5hdG9yLWNvbnRhaW5lcltfbmdjb250ZW50LSVDT01QJV17bWluLWhlaWdodDo1NnB4fS5tYXQtcHJvZ3Jlc3MtYmFyLWJhY2tncm91bmRbX25nY29udGVudC0lQ09NUCVde2ZpbGw6I2ZmOTgwMH0ubWF0LXByb2dyZXNzLWJhci1idWZmZXJbX25nY29udGVudC0lQ09NUCVde2JhY2tncm91bmQtY29sb3I6I2ZmOTgwMH0ubWF0LXByb2dyZXNzLWJhci1maWxsW19uZ2NvbnRlbnQtJUNPTVAlXTo6YWZ0ZXJ7YmFja2dyb3VuZC1jb2xvcjojZjU3YzAwfS5tYXQtcHJvZ3Jlc3MtYmFyLm1hdC1hY2NlbnRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1wcm9ncmVzcy1iYXItYmFja2dyb3VuZFtfbmdjb250ZW50LSVDT01QJV17ZmlsbDojZmY5ODAwfS5tYXQtcHJvZ3Jlc3MtYmFyLm1hdC1hY2NlbnRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1wcm9ncmVzcy1iYXItYnVmZmVyW19uZ2NvbnRlbnQtJUNPTVAlXXtiYWNrZ3JvdW5kLWNvbG9yOiNmZjk4MDB9Lm1hdC1wcm9ncmVzcy1iYXIubWF0LWFjY2VudFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXByb2dyZXNzLWJhci1maWxsW19uZ2NvbnRlbnQtJUNPTVAlXTo6YWZ0ZXJ7YmFja2dyb3VuZC1jb2xvcjojZmY5ODAwfS5tYXQtcHJvZ3Jlc3MtYmFyLm1hdC13YXJuW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtcHJvZ3Jlc3MtYmFyLWJhY2tncm91bmRbX25nY29udGVudC0lQ09NUCVde2ZpbGw6I2ZmY2RkMn0ubWF0LXByb2dyZXNzLWJhci5tYXQtd2Fybltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXByb2dyZXNzLWJhci1idWZmZXJbX25nY29udGVudC0lQ09NUCVde2JhY2tncm91bmQtY29sb3I6I2ZmY2RkMn0ubWF0LXByb2dyZXNzLWJhci5tYXQtd2Fybltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXByb2dyZXNzLWJhci1maWxsW19uZ2NvbnRlbnQtJUNPTVAlXTo6YWZ0ZXJ7YmFja2dyb3VuZC1jb2xvcjojZjQ0MzM2fS5tYXQtcHJvZ3Jlc3Mtc3Bpbm5lcltfbmdjb250ZW50LSVDT01QJV0gICBjaXJjbGVbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXNwaW5uZXJbX25nY29udGVudC0lQ09NUCVdICAgY2lyY2xlW19uZ2NvbnRlbnQtJUNPTVAlXXtzdHJva2U6I2Y1N2MwMH0ubWF0LXByb2dyZXNzLXNwaW5uZXIubWF0LWFjY2VudFtfbmdjb250ZW50LSVDT01QJV0gICBjaXJjbGVbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXNwaW5uZXIubWF0LWFjY2VudFtfbmdjb250ZW50LSVDT01QJV0gICBjaXJjbGVbX25nY29udGVudC0lQ09NUCVde3N0cm9rZTojZmY5ODAwfS5tYXQtcHJvZ3Jlc3Mtc3Bpbm5lci5tYXQtd2Fybltfbmdjb250ZW50LSVDT01QJV0gICBjaXJjbGVbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXNwaW5uZXIubWF0LXdhcm5bX25nY29udGVudC0lQ09NUCVdICAgY2lyY2xlW19uZ2NvbnRlbnQtJUNPTVAlXXtzdHJva2U6I2Y0NDMzNn0ubWF0LXJhZGlvLW91dGVyLWNpcmNsZVtfbmdjb250ZW50LSVDT01QJV17Ym9yZGVyLWNvbG9yOiM2MTYxNjF9Lm1hdC1yYWRpby1idXR0b24ubWF0LXByaW1hcnkubWF0LXJhZGlvLWNoZWNrZWRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1yYWRpby1vdXRlci1jaXJjbGVbX25nY29udGVudC0lQ09NUCVde2JvcmRlci1jb2xvcjojZjU3YzAwfS5tYXQtcmFkaW8tYnV0dG9uLm1hdC1wcmltYXJ5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtcmFkaW8taW5uZXItY2lyY2xlW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1yYWRpby1idXR0b24ubWF0LXByaW1hcnlbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1yYWRpby1yaXBwbGVbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1yaXBwbGUtZWxlbWVudFtfbmdjb250ZW50LSVDT01QJV06bm90KC5tYXQtcmFkaW8tcGVyc2lzdGVudC1yaXBwbGUpLCAubWF0LXJhZGlvLWJ1dHRvbi5tYXQtcHJpbWFyeS5tYXQtcmFkaW8tY2hlY2tlZFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXJhZGlvLXBlcnNpc3RlbnQtcmlwcGxlW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1yYWRpby1idXR0b24ubWF0LXByaW1hcnlbX25nY29udGVudC0lQ09NUCVdOmFjdGl2ZSAgIC5tYXQtcmFkaW8tcGVyc2lzdGVudC1yaXBwbGVbX25nY29udGVudC0lQ09NUCVde2JhY2tncm91bmQtY29sb3I6I2Y1N2MwMH0ubWF0LXJhZGlvLWJ1dHRvbi5tYXQtYWNjZW50Lm1hdC1yYWRpby1jaGVja2VkW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtcmFkaW8tb3V0ZXItY2lyY2xlW19uZ2NvbnRlbnQtJUNPTVAlXXtib3JkZXItY29sb3I6I2ZmOTgwMH0ubWF0LXJhZGlvLWJ1dHRvbi5tYXQtYWNjZW50W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtcmFkaW8taW5uZXItY2lyY2xlW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1yYWRpby1idXR0b24ubWF0LWFjY2VudFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXJhZGlvLXJpcHBsZVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXJpcHBsZS1lbGVtZW50W19uZ2NvbnRlbnQtJUNPTVAlXTpub3QoLm1hdC1yYWRpby1wZXJzaXN0ZW50LXJpcHBsZSksIC5tYXQtcmFkaW8tYnV0dG9uLm1hdC1hY2NlbnQubWF0LXJhZGlvLWNoZWNrZWRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1yYWRpby1wZXJzaXN0ZW50LXJpcHBsZVtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtcmFkaW8tYnV0dG9uLm1hdC1hY2NlbnRbX25nY29udGVudC0lQ09NUCVdOmFjdGl2ZSAgIC5tYXQtcmFkaW8tcGVyc2lzdGVudC1yaXBwbGVbX25nY29udGVudC0lQ09NUCVde2JhY2tncm91bmQtY29sb3I6I2ZmOTgwMH0ubWF0LXJhZGlvLWJ1dHRvbi5tYXQtd2Fybi5tYXQtcmFkaW8tY2hlY2tlZFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXJhZGlvLW91dGVyLWNpcmNsZVtfbmdjb250ZW50LSVDT01QJV17Ym9yZGVyLWNvbG9yOiNmNDQzMzZ9Lm1hdC1yYWRpby1idXR0b24ubWF0LXdhcm5bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1yYWRpby1pbm5lci1jaXJjbGVbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXJhZGlvLWJ1dHRvbi5tYXQtd2Fybltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXJhZGlvLXJpcHBsZVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXJpcHBsZS1lbGVtZW50W19uZ2NvbnRlbnQtJUNPTVAlXTpub3QoLm1hdC1yYWRpby1wZXJzaXN0ZW50LXJpcHBsZSksIC5tYXQtcmFkaW8tYnV0dG9uLm1hdC13YXJuLm1hdC1yYWRpby1jaGVja2VkW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtcmFkaW8tcGVyc2lzdGVudC1yaXBwbGVbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXJhZGlvLWJ1dHRvbi5tYXQtd2Fybltfbmdjb250ZW50LSVDT01QJV06YWN0aXZlICAgLm1hdC1yYWRpby1wZXJzaXN0ZW50LXJpcHBsZVtfbmdjb250ZW50LSVDT01QJV17YmFja2dyb3VuZC1jb2xvcjojZjQ0MzM2fS5tYXQtcmFkaW8tYnV0dG9uLm1hdC1yYWRpby1kaXNhYmxlZC5tYXQtcmFkaW8tY2hlY2tlZFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXJhZGlvLW91dGVyLWNpcmNsZVtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtcmFkaW8tYnV0dG9uLm1hdC1yYWRpby1kaXNhYmxlZFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXJhZGlvLW91dGVyLWNpcmNsZVtfbmdjb250ZW50LSVDT01QJV17Ym9yZGVyLWNvbG9yOnJnYmEoMCwwLDAsLjM4KX0ubWF0LXJhZGlvLWJ1dHRvbi5tYXQtcmFkaW8tZGlzYWJsZWRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1yYWRpby1yaXBwbGVbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1yaXBwbGUtZWxlbWVudFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtcmFkaW8tYnV0dG9uLm1hdC1yYWRpby1kaXNhYmxlZFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXJhZGlvLWlubmVyLWNpcmNsZVtfbmdjb250ZW50LSVDT01QJV17YmFja2dyb3VuZC1jb2xvcjpyZ2JhKDAsMCwwLC4zOCl9Lm1hdC1yYWRpby1idXR0b24ubWF0LXJhZGlvLWRpc2FibGVkW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtcmFkaW8tbGFiZWwtY29udGVudFtfbmdjb250ZW50LSVDT01QJV17Y29sb3I6cmdiYSgwLDAsMCwuMzgpfS5tYXQtcmFkaW8tYnV0dG9uW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtcmlwcGxlLWVsZW1lbnRbX25nY29udGVudC0lQ09NUCVde2JhY2tncm91bmQtY29sb3I6IzAwMH0ubWF0LXNlbGVjdC12YWx1ZVtfbmdjb250ZW50LSVDT01QJV17Y29sb3I6IzIxMjEyMX0ubWF0LXNlbGVjdC1wbGFjZWhvbGRlcltfbmdjb250ZW50LSVDT01QJV17Y29sb3I6cmdiYSg5Nyw5Nyw5NywuNDIpfS5tYXQtc2VsZWN0LWRpc2FibGVkW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtc2VsZWN0LXZhbHVlW19uZ2NvbnRlbnQtJUNPTVAlXXtjb2xvcjojNzU3NTc1fS5tYXQtc2VsZWN0LWFycm93W19uZ2NvbnRlbnQtJUNPTVAlXXtjb2xvcjojNjE2MTYxfS5tYXQtc2VsZWN0LXBhbmVsW19uZ2NvbnRlbnQtJUNPTVAlXXtiYWNrZ3JvdW5kOiNmZmZ9Lm1hdC1zZWxlY3QtcGFuZWxbX25nY29udGVudC0lQ09NUCVdOm5vdChbY2xhc3MqPW1hdC1lbGV2YXRpb24tel0pe2JveC1zaGFkb3c6MHB4IDJweCA0cHggLTFweCByZ2JhKDAsIDAsIDAsIDAuMiksMHB4IDRweCA1cHggMHB4IHJnYmEoMCwgMCwgMCwgMC4xNCksMHB4IDFweCAxMHB4IDBweCByZ2JhKDAsIDAsIDAsIDAuMTIpfS5tYXQtc2VsZWN0LXBhbmVsW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtb3B0aW9uLm1hdC1zZWxlY3RlZFtfbmdjb250ZW50LSVDT01QJV06bm90KC5tYXQtb3B0aW9uLW11bHRpcGxlKXtiYWNrZ3JvdW5kOnJnYmEoMCwwLDAsLjEyKX0ubWF0LWZvcm0tZmllbGQubWF0LWZvY3VzZWQubWF0LXByaW1hcnlbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1zZWxlY3QtYXJyb3dbX25nY29udGVudC0lQ09NUCVde2NvbG9yOiNmNTdjMDB9Lm1hdC1mb3JtLWZpZWxkLm1hdC1mb2N1c2VkLm1hdC1hY2NlbnRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1zZWxlY3QtYXJyb3dbX25nY29udGVudC0lQ09NUCVde2NvbG9yOiNmZjk4MDB9Lm1hdC1mb3JtLWZpZWxkLm1hdC1mb2N1c2VkLm1hdC13YXJuW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtc2VsZWN0LWFycm93W19uZ2NvbnRlbnQtJUNPTVAlXXtjb2xvcjojZjQ0MzM2fS5tYXQtZm9ybS1maWVsZFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXNlbGVjdC5tYXQtc2VsZWN0LWludmFsaWRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1zZWxlY3QtYXJyb3dbX25nY29udGVudC0lQ09NUCVde2NvbG9yOiNmNDQzMzZ9Lm1hdC1mb3JtLWZpZWxkW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtc2VsZWN0Lm1hdC1zZWxlY3QtZGlzYWJsZWRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1zZWxlY3QtYXJyb3dbX25nY29udGVudC0lQ09NUCVde2NvbG9yOiM3NTc1NzV9Lm1hdC1kcmF3ZXItY29udGFpbmVyW19uZ2NvbnRlbnQtJUNPTVAlXXtiYWNrZ3JvdW5kLWNvbG9yOiNmYWZhZmE7Y29sb3I6IzIxMjEyMX0ubWF0LWRyYXdlcltfbmdjb250ZW50LSVDT01QJV17YmFja2dyb3VuZC1jb2xvcjojZmZmO2NvbG9yOiMyMTIxMjF9Lm1hdC1kcmF3ZXIubWF0LWRyYXdlci1wdXNoW19uZ2NvbnRlbnQtJUNPTVAlXXtiYWNrZ3JvdW5kLWNvbG9yOiNmZmZ9Lm1hdC1kcmF3ZXJbX25nY29udGVudC0lQ09NUCVdOm5vdCgubWF0LWRyYXdlci1zaWRlKXtib3gtc2hhZG93OjBweCA4cHggMTBweCAtNXB4IHJnYmEoMCwgMCwgMCwgMC4yKSwwcHggMTZweCAyNHB4IDJweCByZ2JhKDAsIDAsIDAsIDAuMTQpLDBweCA2cHggMzBweCA1cHggcmdiYSgwLCAwLCAwLCAwLjEyKX0ubWF0LWRyYXdlci1zaWRlW19uZ2NvbnRlbnQtJUNPTVAlXXtib3JkZXItcmlnaHQ6c29saWQgMXB4IHJnYmEoMCwwLDAsLjEyKX0ubWF0LWRyYXdlci1zaWRlLm1hdC1kcmF3ZXItZW5kW19uZ2NvbnRlbnQtJUNPTVAlXXtib3JkZXItbGVmdDpzb2xpZCAxcHggcmdiYSgwLDAsMCwuMTIpO2JvcmRlci1yaWdodDpub25lfVtkaXI9cnRsXVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWRyYXdlci1zaWRlW19uZ2NvbnRlbnQtJUNPTVAlXXtib3JkZXItbGVmdDpzb2xpZCAxcHggcmdiYSgwLDAsMCwuMTIpO2JvcmRlci1yaWdodDpub25lfVtkaXI9cnRsXVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWRyYXdlci1zaWRlLm1hdC1kcmF3ZXItZW5kW19uZ2NvbnRlbnQtJUNPTVAlXXtib3JkZXItbGVmdDpub25lO2JvcmRlci1yaWdodDpzb2xpZCAxcHggcmdiYSgwLDAsMCwuMTIpfS5tYXQtZHJhd2VyLWJhY2tkcm9wLm1hdC1kcmF3ZXItc2hvd25bX25nY29udGVudC0lQ09NUCVde2JhY2tncm91bmQtY29sb3I6cmdiYSgwLDAsMCwuNil9Lm1hdC1zbGlkZS10b2dnbGUubWF0LWNoZWNrZWRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1zbGlkZS10b2dnbGUtdGh1bWJbX25nY29udGVudC0lQ09NUCVde2JhY2tncm91bmQtY29sb3I6I2ZmOTgwMH0ubWF0LXNsaWRlLXRvZ2dsZS5tYXQtY2hlY2tlZFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXNsaWRlLXRvZ2dsZS1iYXJbX25nY29udGVudC0lQ09NUCVde2JhY2tncm91bmQtY29sb3I6cmdiYSgyNTUsMTUyLDAsLjU0KX0ubWF0LXNsaWRlLXRvZ2dsZS5tYXQtY2hlY2tlZFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXJpcHBsZS1lbGVtZW50W19uZ2NvbnRlbnQtJUNPTVAlXXtiYWNrZ3JvdW5kLWNvbG9yOiNmZjk4MDB9Lm1hdC1zbGlkZS10b2dnbGUubWF0LXByaW1hcnkubWF0LWNoZWNrZWRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1zbGlkZS10b2dnbGUtdGh1bWJbX25nY29udGVudC0lQ09NUCVde2JhY2tncm91bmQtY29sb3I6I2Y1N2MwMH0ubWF0LXNsaWRlLXRvZ2dsZS5tYXQtcHJpbWFyeS5tYXQtY2hlY2tlZFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXNsaWRlLXRvZ2dsZS1iYXJbX25nY29udGVudC0lQ09NUCVde2JhY2tncm91bmQtY29sb3I6cmdiYSgyNDUsMTI0LDAsLjU0KX0ubWF0LXNsaWRlLXRvZ2dsZS5tYXQtcHJpbWFyeS5tYXQtY2hlY2tlZFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXJpcHBsZS1lbGVtZW50W19uZ2NvbnRlbnQtJUNPTVAlXXtiYWNrZ3JvdW5kLWNvbG9yOiNmNTdjMDB9Lm1hdC1zbGlkZS10b2dnbGUubWF0LXdhcm4ubWF0LWNoZWNrZWRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1zbGlkZS10b2dnbGUtdGh1bWJbX25nY29udGVudC0lQ09NUCVde2JhY2tncm91bmQtY29sb3I6I2Y0NDMzNn0ubWF0LXNsaWRlLXRvZ2dsZS5tYXQtd2Fybi5tYXQtY2hlY2tlZFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXNsaWRlLXRvZ2dsZS1iYXJbX25nY29udGVudC0lQ09NUCVde2JhY2tncm91bmQtY29sb3I6cmdiYSgyNDQsNjcsNTQsLjU0KX0ubWF0LXNsaWRlLXRvZ2dsZS5tYXQtd2Fybi5tYXQtY2hlY2tlZFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXJpcHBsZS1lbGVtZW50W19uZ2NvbnRlbnQtJUNPTVAlXXtiYWNrZ3JvdW5kLWNvbG9yOiNmNDQzMzZ9Lm1hdC1zbGlkZS10b2dnbGVbX25nY29udGVudC0lQ09NUCVdOm5vdCgubWF0LWNoZWNrZWQpICAgLm1hdC1yaXBwbGUtZWxlbWVudFtfbmdjb250ZW50LSVDT01QJV17YmFja2dyb3VuZC1jb2xvcjojMDAwfS5tYXQtc2xpZGUtdG9nZ2xlLXRodW1iW19uZ2NvbnRlbnQtJUNPTVAlXXtib3gtc2hhZG93OjBweCAycHggMXB4IC0xcHggcmdiYSgwLCAwLCAwLCAwLjIpLDBweCAxcHggMXB4IDBweCByZ2JhKDAsIDAsIDAsIDAuMTQpLDBweCAxcHggM3B4IDBweCByZ2JhKDAsIDAsIDAsIDAuMTIpO2JhY2tncm91bmQtY29sb3I6I2ZhZmFmYX0ubWF0LXNsaWRlLXRvZ2dsZS1iYXJbX25nY29udGVudC0lQ09NUCVde2JhY2tncm91bmQtY29sb3I6cmdiYSgwLDAsMCwuMzgpfS5tYXQtc2xpZGVyLXRyYWNrLWJhY2tncm91bmRbX25nY29udGVudC0lQ09NUCVde2JhY2tncm91bmQtY29sb3I6cmdiYSgwLDAsMCwuMjYpfS5tYXQtcHJpbWFyeVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXNsaWRlci10cmFjay1maWxsW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1wcmltYXJ5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtc2xpZGVyLXRodW1iW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1wcmltYXJ5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtc2xpZGVyLXRodW1iLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXtiYWNrZ3JvdW5kLWNvbG9yOiNmNTdjMDB9Lm1hdC1wcmltYXJ5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtc2xpZGVyLXRodW1iLWxhYmVsLXRleHRbX25nY29udGVudC0lQ09NUCVde2NvbG9yOiNmZmZ9Lm1hdC1wcmltYXJ5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtc2xpZGVyLWZvY3VzLXJpbmdbX25nY29udGVudC0lQ09NUCVde2JhY2tncm91bmQtY29sb3I6cmdiYSgyNDUsMTI0LDAsLjIpfS5tYXQtYWNjZW50W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtc2xpZGVyLXRyYWNrLWZpbGxbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWFjY2VudFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXNsaWRlci10aHVtYltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtYWNjZW50W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtc2xpZGVyLXRodW1iLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXtiYWNrZ3JvdW5kLWNvbG9yOiNmZjk4MDB9Lm1hdC1hY2NlbnRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1zbGlkZXItdGh1bWItbGFiZWwtdGV4dFtfbmdjb250ZW50LSVDT01QJV17Y29sb3I6I2ZmZn0ubWF0LWFjY2VudFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXNsaWRlci1mb2N1cy1yaW5nW19uZ2NvbnRlbnQtJUNPTVAlXXtiYWNrZ3JvdW5kLWNvbG9yOnJnYmEoMjU1LDE1MiwwLC4yKX0ubWF0LXdhcm5bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1zbGlkZXItdHJhY2stZmlsbFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtd2Fybltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXNsaWRlci10aHVtYltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtd2Fybltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXNsaWRlci10aHVtYi1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17YmFja2dyb3VuZC1jb2xvcjojZjQ0MzM2fS5tYXQtd2Fybltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXNsaWRlci10aHVtYi1sYWJlbC10ZXh0W19uZ2NvbnRlbnQtJUNPTVAlXXtjb2xvcjojZmZmfS5tYXQtd2Fybltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXNsaWRlci1mb2N1cy1yaW5nW19uZ2NvbnRlbnQtJUNPTVAlXXtiYWNrZ3JvdW5kLWNvbG9yOnJnYmEoMjQ0LDY3LDU0LC4yKX0ubWF0LXNsaWRlcltfbmdjb250ZW50LSVDT01QJV06aG92ZXIgICAubWF0LXNsaWRlci10cmFjay1iYWNrZ3JvdW5kW19uZ2NvbnRlbnQtJUNPTVAlXSwgLmNkay1mb2N1c2VkW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtc2xpZGVyLXRyYWNrLWJhY2tncm91bmRbX25nY29udGVudC0lQ09NUCVde2JhY2tncm91bmQtY29sb3I6cmdiYSgwLDAsMCwuMzgpfS5tYXQtc2xpZGVyLWRpc2FibGVkW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtc2xpZGVyLXRyYWNrLWJhY2tncm91bmRbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXNsaWRlci1kaXNhYmxlZFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXNsaWRlci10cmFjay1maWxsW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1zbGlkZXItZGlzYWJsZWRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1zbGlkZXItdGh1bWJbX25nY29udGVudC0lQ09NUCVde2JhY2tncm91bmQtY29sb3I6cmdiYSgwLDAsMCwuMjYpfS5tYXQtc2xpZGVyLWRpc2FibGVkW19uZ2NvbnRlbnQtJUNPTVAlXTpob3ZlciAgIC5tYXQtc2xpZGVyLXRyYWNrLWJhY2tncm91bmRbX25nY29udGVudC0lQ09NUCVde2JhY2tncm91bmQtY29sb3I6cmdiYSgwLDAsMCwuMjYpfS5tYXQtc2xpZGVyLW1pbi12YWx1ZVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXNsaWRlci1mb2N1cy1yaW5nW19uZ2NvbnRlbnQtJUNPTVAlXXtiYWNrZ3JvdW5kLWNvbG9yOnJnYmEoMCwwLDAsLjEyKX0ubWF0LXNsaWRlci1taW4tdmFsdWUubWF0LXNsaWRlci10aHVtYi1sYWJlbC1zaG93aW5nW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtc2xpZGVyLXRodW1iW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1zbGlkZXItbWluLXZhbHVlLm1hdC1zbGlkZXItdGh1bWItbGFiZWwtc2hvd2luZ1tfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXNsaWRlci10aHVtYi1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17YmFja2dyb3VuZC1jb2xvcjpyZ2JhKDAsMCwwLC44Nyl9Lm1hdC1zbGlkZXItbWluLXZhbHVlLm1hdC1zbGlkZXItdGh1bWItbGFiZWwtc2hvd2luZy5jZGstZm9jdXNlZFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXNsaWRlci10aHVtYltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtc2xpZGVyLW1pbi12YWx1ZS5tYXQtc2xpZGVyLXRodW1iLWxhYmVsLXNob3dpbmcuY2RrLWZvY3VzZWRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1zbGlkZXItdGh1bWItbGFiZWxbX25nY29udGVudC0lQ09NUCVde2JhY2tncm91bmQtY29sb3I6cmdiYSgwLDAsMCwuMjYpfS5tYXQtc2xpZGVyLW1pbi12YWx1ZVtfbmdjb250ZW50LSVDT01QJV06bm90KC5tYXQtc2xpZGVyLXRodW1iLWxhYmVsLXNob3dpbmcpICAgLm1hdC1zbGlkZXItdGh1bWJbX25nY29udGVudC0lQ09NUCVde2JvcmRlci1jb2xvcjpyZ2JhKDAsMCwwLC4yNik7YmFja2dyb3VuZC1jb2xvcjp0cmFuc3BhcmVudH0ubWF0LXNsaWRlci1taW4tdmFsdWVbX25nY29udGVudC0lQ09NUCVdOm5vdCgubWF0LXNsaWRlci10aHVtYi1sYWJlbC1zaG93aW5nKTpob3ZlciAgIC5tYXQtc2xpZGVyLXRodW1iW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1zbGlkZXItbWluLXZhbHVlW19uZ2NvbnRlbnQtJUNPTVAlXTpub3QoLm1hdC1zbGlkZXItdGh1bWItbGFiZWwtc2hvd2luZykuY2RrLWZvY3VzZWQgICAubWF0LXNsaWRlci10aHVtYltfbmdjb250ZW50LSVDT01QJV17Ym9yZGVyLWNvbG9yOnJnYmEoMCwwLDAsLjM4KX0ubWF0LXNsaWRlci1taW4tdmFsdWVbX25nY29udGVudC0lQ09NUCVdOm5vdCgubWF0LXNsaWRlci10aHVtYi1sYWJlbC1zaG93aW5nKTpob3Zlci5tYXQtc2xpZGVyLWRpc2FibGVkICAgLm1hdC1zbGlkZXItdGh1bWJbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXNsaWRlci1taW4tdmFsdWVbX25nY29udGVudC0lQ09NUCVdOm5vdCgubWF0LXNsaWRlci10aHVtYi1sYWJlbC1zaG93aW5nKS5jZGstZm9jdXNlZC5tYXQtc2xpZGVyLWRpc2FibGVkICAgLm1hdC1zbGlkZXItdGh1bWJbX25nY29udGVudC0lQ09NUCVde2JvcmRlci1jb2xvcjpyZ2JhKDAsMCwwLC4yNil9Lm1hdC1zbGlkZXItaGFzLXRpY2tzW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtc2xpZGVyLXdyYXBwZXJbX25nY29udGVudC0lQ09NUCVdOjphZnRlcntib3JkZXItY29sb3I6cmdiYSgwLDAsMCwuNyl9Lm1hdC1zbGlkZXItaG9yaXpvbnRhbFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXNsaWRlci10aWNrc1tfbmdjb250ZW50LSVDT01QJV17YmFja2dyb3VuZC1pbWFnZTpyZXBlYXRpbmctbGluZWFyLWdyYWRpZW50KHRvIHJpZ2h0LCByZ2JhKDAsIDAsIDAsIDAuNyksIHJnYmEoMCwgMCwgMCwgMC43KSAycHgsIHRyYW5zcGFyZW50IDAsIHRyYW5zcGFyZW50KTtiYWNrZ3JvdW5kLWltYWdlOi1tb3otcmVwZWF0aW5nLWxpbmVhci1ncmFkaWVudCgwLjAwMDFkZWcsIHJnYmEoMCwgMCwgMCwgMC43KSwgcmdiYSgwLCAwLCAwLCAwLjcpIDJweCwgdHJhbnNwYXJlbnQgMCwgdHJhbnNwYXJlbnQpfS5tYXQtc2xpZGVyLXZlcnRpY2FsW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtc2xpZGVyLXRpY2tzW19uZ2NvbnRlbnQtJUNPTVAlXXtiYWNrZ3JvdW5kLWltYWdlOnJlcGVhdGluZy1saW5lYXItZ3JhZGllbnQodG8gYm90dG9tLCByZ2JhKDAsIDAsIDAsIDAuNyksIHJnYmEoMCwgMCwgMCwgMC43KSAycHgsIHRyYW5zcGFyZW50IDAsIHRyYW5zcGFyZW50KX0ubWF0LXN0ZXAtaGVhZGVyLmNkay1rZXlib2FyZC1mb2N1c2VkW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1zdGVwLWhlYWRlci5jZGstcHJvZ3JhbS1mb2N1c2VkW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1zdGVwLWhlYWRlcltfbmdjb250ZW50LSVDT01QJV06aG92ZXJ7YmFja2dyb3VuZC1jb2xvcjpyZ2JhKDAsMCwwLC4wNCl9QG1lZGlhKGhvdmVyOiBub25lKXsubWF0LXN0ZXAtaGVhZGVyW19uZ2NvbnRlbnQtJUNPTVAlXTpob3ZlcntiYWNrZ3JvdW5kOm5vbmV9fS5tYXQtc3RlcC1oZWFkZXJbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1zdGVwLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1zdGVwLWhlYWRlcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXN0ZXAtb3B0aW9uYWxbX25nY29udGVudC0lQ09NUCVde2NvbG9yOiM2MTYxNjF9Lm1hdC1zdGVwLWhlYWRlcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXN0ZXAtaWNvbltfbmdjb250ZW50LSVDT01QJV17YmFja2dyb3VuZC1jb2xvcjojNjE2MTYxO2NvbG9yOiNmZmZ9Lm1hdC1zdGVwLWhlYWRlcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXN0ZXAtaWNvbi1zZWxlY3RlZFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtc3RlcC1oZWFkZXJbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1zdGVwLWljb24tc3RhdGUtZG9uZVtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtc3RlcC1oZWFkZXJbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1zdGVwLWljb24tc3RhdGUtZWRpdFtfbmdjb250ZW50LSVDT01QJV17YmFja2dyb3VuZC1jb2xvcjojZjU3YzAwO2NvbG9yOiNmZmZ9Lm1hdC1zdGVwLWhlYWRlcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXN0ZXAtaWNvbi1zdGF0ZS1lcnJvcltfbmdjb250ZW50LSVDT01QJV17YmFja2dyb3VuZC1jb2xvcjp0cmFuc3BhcmVudDtjb2xvcjojZjQ0MzM2fS5tYXQtc3RlcC1oZWFkZXJbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1zdGVwLWxhYmVsLm1hdC1zdGVwLWxhYmVsLWFjdGl2ZVtfbmdjb250ZW50LSVDT01QJV17Y29sb3I6IzIxMjEyMX0ubWF0LXN0ZXAtaGVhZGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtc3RlcC1sYWJlbC5tYXQtc3RlcC1sYWJlbC1lcnJvcltfbmdjb250ZW50LSVDT01QJV17Y29sb3I6I2Y0NDMzNn0ubWF0LXN0ZXBwZXItaG9yaXpvbnRhbFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtc3RlcHBlci12ZXJ0aWNhbFtfbmdjb250ZW50LSVDT01QJV17YmFja2dyb3VuZC1jb2xvcjojZmZmfS5tYXQtc3RlcHBlci12ZXJ0aWNhbC1saW5lW19uZ2NvbnRlbnQtJUNPTVAlXTo6YmVmb3Jle2JvcmRlci1sZWZ0LWNvbG9yOnJnYmEoMCwwLDAsLjEyKX0ubWF0LWhvcml6b250YWwtc3RlcHBlci1oZWFkZXJbX25nY29udGVudC0lQ09NUCVdOjpiZWZvcmUsIC5tYXQtaG9yaXpvbnRhbC1zdGVwcGVyLWhlYWRlcltfbmdjb250ZW50LSVDT01QJV06OmFmdGVyLCAubWF0LXN0ZXBwZXItaG9yaXpvbnRhbC1saW5lW19uZ2NvbnRlbnQtJUNPTVAlXXtib3JkZXItdG9wLWNvbG9yOnJnYmEoMCwwLDAsLjEyKX0ubWF0LWhvcml6b250YWwtc3RlcHBlci1oZWFkZXJbX25nY29udGVudC0lQ09NUCVde2hlaWdodDo3MnB4fS5tYXQtc3RlcHBlci1sYWJlbC1wb3NpdGlvbi1ib3R0b21bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1ob3Jpem9udGFsLXN0ZXBwZXItaGVhZGVyW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC12ZXJ0aWNhbC1zdGVwcGVyLWhlYWRlcltfbmdjb250ZW50LSVDT01QJV17cGFkZGluZzoyNHB4IDI0cHh9Lm1hdC1zdGVwcGVyLXZlcnRpY2FsLWxpbmVbX25nY29udGVudC0lQ09NUCVdOjpiZWZvcmV7dG9wOi0xNnB4O2JvdHRvbTotMTZweH0ubWF0LXN0ZXBwZXItbGFiZWwtcG9zaXRpb24tYm90dG9tW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaG9yaXpvbnRhbC1zdGVwcGVyLWhlYWRlcltfbmdjb250ZW50LSVDT01QJV06OmFmdGVyLCAubWF0LXN0ZXBwZXItbGFiZWwtcG9zaXRpb24tYm90dG9tW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaG9yaXpvbnRhbC1zdGVwcGVyLWhlYWRlcltfbmdjb250ZW50LSVDT01QJV06OmJlZm9yZXt0b3A6MzZweH0ubWF0LXN0ZXBwZXItbGFiZWwtcG9zaXRpb24tYm90dG9tW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtc3RlcHBlci1ob3Jpem9udGFsLWxpbmVbX25nY29udGVudC0lQ09NUCVde3RvcDozNnB4fS5tYXQtc29ydC1oZWFkZXItYXJyb3dbX25nY29udGVudC0lQ09NUCVde2NvbG9yOiM2MTYxNjF9Lm1hdC10YWItbmF2LWJhcltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdGFiLWhlYWRlcltfbmdjb250ZW50LSVDT01QJV17Ym9yZGVyLWJvdHRvbToxcHggc29saWQgcmdiYSgwLDAsMCwuMTIpfS5tYXQtdGFiLWdyb3VwLWludmVydGVkLWhlYWRlcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXRhYi1uYXYtYmFyW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10YWItZ3JvdXAtaW52ZXJ0ZWQtaGVhZGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtdGFiLWhlYWRlcltfbmdjb250ZW50LSVDT01QJV17Ym9yZGVyLXRvcDoxcHggc29saWQgcmdiYSgwLDAsMCwuMTIpO2JvcmRlci1ib3R0b206bm9uZX0ubWF0LXRhYi1sYWJlbFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdGFiLWxpbmtbX25nY29udGVudC0lQ09NUCVde2NvbG9yOiMyMTIxMjF9Lm1hdC10YWItbGFiZWwubWF0LXRhYi1kaXNhYmxlZFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdGFiLWxpbmsubWF0LXRhYi1kaXNhYmxlZFtfbmdjb250ZW50LSVDT01QJV17Y29sb3I6Izc1NzU3NX0ubWF0LXRhYi1oZWFkZXItcGFnaW5hdGlvbi1jaGV2cm9uW19uZ2NvbnRlbnQtJUNPTVAlXXtib3JkZXItY29sb3I6IzIxMjEyMX0ubWF0LXRhYi1oZWFkZXItcGFnaW5hdGlvbi1kaXNhYmxlZFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXRhYi1oZWFkZXItcGFnaW5hdGlvbi1jaGV2cm9uW19uZ2NvbnRlbnQtJUNPTVAlXXtib3JkZXItY29sb3I6Izc1NzU3NX0ubWF0LXRhYi1ncm91cFtjbGFzcyo9bWF0LWJhY2tncm91bmQtXVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXRhYi1oZWFkZXJbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXRhYi1uYXYtYmFyW2NsYXNzKj1tYXQtYmFja2dyb3VuZC1dW19uZ2NvbnRlbnQtJUNPTVAlXXtib3JkZXItYm90dG9tOm5vbmU7Ym9yZGVyLXRvcDpub25lfS5tYXQtdGFiLWdyb3VwLm1hdC1wcmltYXJ5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtdGFiLWxhYmVsLmNkay1rZXlib2FyZC1mb2N1c2VkW19uZ2NvbnRlbnQtJUNPTVAlXTpub3QoLm1hdC10YWItZGlzYWJsZWQpLCAubWF0LXRhYi1ncm91cC5tYXQtcHJpbWFyeVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXRhYi1sYWJlbC5jZGstcHJvZ3JhbS1mb2N1c2VkW19uZ2NvbnRlbnQtJUNPTVAlXTpub3QoLm1hdC10YWItZGlzYWJsZWQpLCAubWF0LXRhYi1ncm91cC5tYXQtcHJpbWFyeVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXRhYi1saW5rLmNkay1rZXlib2FyZC1mb2N1c2VkW19uZ2NvbnRlbnQtJUNPTVAlXTpub3QoLm1hdC10YWItZGlzYWJsZWQpLCAubWF0LXRhYi1ncm91cC5tYXQtcHJpbWFyeVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXRhYi1saW5rLmNkay1wcm9ncmFtLWZvY3VzZWRbX25nY29udGVudC0lQ09NUCVdOm5vdCgubWF0LXRhYi1kaXNhYmxlZCksIC5tYXQtdGFiLW5hdi1iYXIubWF0LXByaW1hcnlbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC10YWItbGFiZWwuY2RrLWtleWJvYXJkLWZvY3VzZWRbX25nY29udGVudC0lQ09NUCVdOm5vdCgubWF0LXRhYi1kaXNhYmxlZCksIC5tYXQtdGFiLW5hdi1iYXIubWF0LXByaW1hcnlbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC10YWItbGFiZWwuY2RrLXByb2dyYW0tZm9jdXNlZFtfbmdjb250ZW50LSVDT01QJV06bm90KC5tYXQtdGFiLWRpc2FibGVkKSwgLm1hdC10YWItbmF2LWJhci5tYXQtcHJpbWFyeVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXRhYi1saW5rLmNkay1rZXlib2FyZC1mb2N1c2VkW19uZ2NvbnRlbnQtJUNPTVAlXTpub3QoLm1hdC10YWItZGlzYWJsZWQpLCAubWF0LXRhYi1uYXYtYmFyLm1hdC1wcmltYXJ5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtdGFiLWxpbmsuY2RrLXByb2dyYW0tZm9jdXNlZFtfbmdjb250ZW50LSVDT01QJV06bm90KC5tYXQtdGFiLWRpc2FibGVkKXtiYWNrZ3JvdW5kLWNvbG9yOnJnYmEoMjU1LDE1MiwwLC4zKX0ubWF0LXRhYi1ncm91cC5tYXQtcHJpbWFyeVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWluay1iYXJbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXRhYi1uYXYtYmFyLm1hdC1wcmltYXJ5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaW5rLWJhcltfbmdjb250ZW50LSVDT01QJV17YmFja2dyb3VuZC1jb2xvcjojZjU3YzAwfS5tYXQtdGFiLWdyb3VwLm1hdC1wcmltYXJ5Lm1hdC1iYWNrZ3JvdW5kLXByaW1hcnlbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pbmstYmFyW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10YWItbmF2LWJhci5tYXQtcHJpbWFyeS5tYXQtYmFja2dyb3VuZC1wcmltYXJ5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaW5rLWJhcltfbmdjb250ZW50LSVDT01QJV17YmFja2dyb3VuZC1jb2xvcjojZmZmfS5tYXQtdGFiLWdyb3VwLm1hdC1hY2NlbnRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC10YWItbGFiZWwuY2RrLWtleWJvYXJkLWZvY3VzZWRbX25nY29udGVudC0lQ09NUCVdOm5vdCgubWF0LXRhYi1kaXNhYmxlZCksIC5tYXQtdGFiLWdyb3VwLm1hdC1hY2NlbnRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC10YWItbGFiZWwuY2RrLXByb2dyYW0tZm9jdXNlZFtfbmdjb250ZW50LSVDT01QJV06bm90KC5tYXQtdGFiLWRpc2FibGVkKSwgLm1hdC10YWItZ3JvdXAubWF0LWFjY2VudFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXRhYi1saW5rLmNkay1rZXlib2FyZC1mb2N1c2VkW19uZ2NvbnRlbnQtJUNPTVAlXTpub3QoLm1hdC10YWItZGlzYWJsZWQpLCAubWF0LXRhYi1ncm91cC5tYXQtYWNjZW50W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtdGFiLWxpbmsuY2RrLXByb2dyYW0tZm9jdXNlZFtfbmdjb250ZW50LSVDT01QJV06bm90KC5tYXQtdGFiLWRpc2FibGVkKSwgLm1hdC10YWItbmF2LWJhci5tYXQtYWNjZW50W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtdGFiLWxhYmVsLmNkay1rZXlib2FyZC1mb2N1c2VkW19uZ2NvbnRlbnQtJUNPTVAlXTpub3QoLm1hdC10YWItZGlzYWJsZWQpLCAubWF0LXRhYi1uYXYtYmFyLm1hdC1hY2NlbnRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC10YWItbGFiZWwuY2RrLXByb2dyYW0tZm9jdXNlZFtfbmdjb250ZW50LSVDT01QJV06bm90KC5tYXQtdGFiLWRpc2FibGVkKSwgLm1hdC10YWItbmF2LWJhci5tYXQtYWNjZW50W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtdGFiLWxpbmsuY2RrLWtleWJvYXJkLWZvY3VzZWRbX25nY29udGVudC0lQ09NUCVdOm5vdCgubWF0LXRhYi1kaXNhYmxlZCksIC5tYXQtdGFiLW5hdi1iYXIubWF0LWFjY2VudFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXRhYi1saW5rLmNkay1wcm9ncmFtLWZvY3VzZWRbX25nY29udGVudC0lQ09NUCVdOm5vdCgubWF0LXRhYi1kaXNhYmxlZCl7YmFja2dyb3VuZC1jb2xvcjpyZ2JhKDI1NSwxNTIsMCwuMyl9Lm1hdC10YWItZ3JvdXAubWF0LWFjY2VudFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWluay1iYXJbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXRhYi1uYXYtYmFyLm1hdC1hY2NlbnRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pbmstYmFyW19uZ2NvbnRlbnQtJUNPTVAlXXtiYWNrZ3JvdW5kLWNvbG9yOiNmZjk4MDB9Lm1hdC10YWItZ3JvdXAubWF0LWFjY2VudC5tYXQtYmFja2dyb3VuZC1hY2NlbnRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pbmstYmFyW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10YWItbmF2LWJhci5tYXQtYWNjZW50Lm1hdC1iYWNrZ3JvdW5kLWFjY2VudFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWluay1iYXJbX25nY29udGVudC0lQ09NUCVde2JhY2tncm91bmQtY29sb3I6I2ZmZn0ubWF0LXRhYi1ncm91cC5tYXQtd2Fybltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXRhYi1sYWJlbC5jZGsta2V5Ym9hcmQtZm9jdXNlZFtfbmdjb250ZW50LSVDT01QJV06bm90KC5tYXQtdGFiLWRpc2FibGVkKSwgLm1hdC10YWItZ3JvdXAubWF0LXdhcm5bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC10YWItbGFiZWwuY2RrLXByb2dyYW0tZm9jdXNlZFtfbmdjb250ZW50LSVDT01QJV06bm90KC5tYXQtdGFiLWRpc2FibGVkKSwgLm1hdC10YWItZ3JvdXAubWF0LXdhcm5bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC10YWItbGluay5jZGsta2V5Ym9hcmQtZm9jdXNlZFtfbmdjb250ZW50LSVDT01QJV06bm90KC5tYXQtdGFiLWRpc2FibGVkKSwgLm1hdC10YWItZ3JvdXAubWF0LXdhcm5bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC10YWItbGluay5jZGstcHJvZ3JhbS1mb2N1c2VkW19uZ2NvbnRlbnQtJUNPTVAlXTpub3QoLm1hdC10YWItZGlzYWJsZWQpLCAubWF0LXRhYi1uYXYtYmFyLm1hdC13YXJuW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtdGFiLWxhYmVsLmNkay1rZXlib2FyZC1mb2N1c2VkW19uZ2NvbnRlbnQtJUNPTVAlXTpub3QoLm1hdC10YWItZGlzYWJsZWQpLCAubWF0LXRhYi1uYXYtYmFyLm1hdC13YXJuW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtdGFiLWxhYmVsLmNkay1wcm9ncmFtLWZvY3VzZWRbX25nY29udGVudC0lQ09NUCVdOm5vdCgubWF0LXRhYi1kaXNhYmxlZCksIC5tYXQtdGFiLW5hdi1iYXIubWF0LXdhcm5bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC10YWItbGluay5jZGsta2V5Ym9hcmQtZm9jdXNlZFtfbmdjb250ZW50LSVDT01QJV06bm90KC5tYXQtdGFiLWRpc2FibGVkKSwgLm1hdC10YWItbmF2LWJhci5tYXQtd2Fybltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXRhYi1saW5rLmNkay1wcm9ncmFtLWZvY3VzZWRbX25nY29udGVudC0lQ09NUCVdOm5vdCgubWF0LXRhYi1kaXNhYmxlZCl7YmFja2dyb3VuZC1jb2xvcjpyZ2JhKDI1NSwyMDUsMjEwLC4zKX0ubWF0LXRhYi1ncm91cC5tYXQtd2Fybltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWluay1iYXJbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXRhYi1uYXYtYmFyLm1hdC13YXJuW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaW5rLWJhcltfbmdjb250ZW50LSVDT01QJV17YmFja2dyb3VuZC1jb2xvcjojZjQ0MzM2fS5tYXQtdGFiLWdyb3VwLm1hdC13YXJuLm1hdC1iYWNrZ3JvdW5kLXdhcm5bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pbmstYmFyW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10YWItbmF2LWJhci5tYXQtd2Fybi5tYXQtYmFja2dyb3VuZC13YXJuW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaW5rLWJhcltfbmdjb250ZW50LSVDT01QJV17YmFja2dyb3VuZC1jb2xvcjojZmZmfS5tYXQtdGFiLWdyb3VwLm1hdC1iYWNrZ3JvdW5kLXByaW1hcnlbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC10YWItbGFiZWwuY2RrLWtleWJvYXJkLWZvY3VzZWRbX25nY29udGVudC0lQ09NUCVdOm5vdCgubWF0LXRhYi1kaXNhYmxlZCksIC5tYXQtdGFiLWdyb3VwLm1hdC1iYWNrZ3JvdW5kLXByaW1hcnlbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC10YWItbGFiZWwuY2RrLXByb2dyYW0tZm9jdXNlZFtfbmdjb250ZW50LSVDT01QJV06bm90KC5tYXQtdGFiLWRpc2FibGVkKSwgLm1hdC10YWItZ3JvdXAubWF0LWJhY2tncm91bmQtcHJpbWFyeVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXRhYi1saW5rLmNkay1rZXlib2FyZC1mb2N1c2VkW19uZ2NvbnRlbnQtJUNPTVAlXTpub3QoLm1hdC10YWItZGlzYWJsZWQpLCAubWF0LXRhYi1ncm91cC5tYXQtYmFja2dyb3VuZC1wcmltYXJ5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtdGFiLWxpbmsuY2RrLXByb2dyYW0tZm9jdXNlZFtfbmdjb250ZW50LSVDT01QJV06bm90KC5tYXQtdGFiLWRpc2FibGVkKSwgLm1hdC10YWItbmF2LWJhci5tYXQtYmFja2dyb3VuZC1wcmltYXJ5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtdGFiLWxhYmVsLmNkay1rZXlib2FyZC1mb2N1c2VkW19uZ2NvbnRlbnQtJUNPTVAlXTpub3QoLm1hdC10YWItZGlzYWJsZWQpLCAubWF0LXRhYi1uYXYtYmFyLm1hdC1iYWNrZ3JvdW5kLXByaW1hcnlbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC10YWItbGFiZWwuY2RrLXByb2dyYW0tZm9jdXNlZFtfbmdjb250ZW50LSVDT01QJV06bm90KC5tYXQtdGFiLWRpc2FibGVkKSwgLm1hdC10YWItbmF2LWJhci5tYXQtYmFja2dyb3VuZC1wcmltYXJ5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtdGFiLWxpbmsuY2RrLWtleWJvYXJkLWZvY3VzZWRbX25nY29udGVudC0lQ09NUCVdOm5vdCgubWF0LXRhYi1kaXNhYmxlZCksIC5tYXQtdGFiLW5hdi1iYXIubWF0LWJhY2tncm91bmQtcHJpbWFyeVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXRhYi1saW5rLmNkay1wcm9ncmFtLWZvY3VzZWRbX25nY29udGVudC0lQ09NUCVdOm5vdCgubWF0LXRhYi1kaXNhYmxlZCl7YmFja2dyb3VuZC1jb2xvcjpyZ2JhKDI1NSwxNTIsMCwuMyl9Lm1hdC10YWItZ3JvdXAubWF0LWJhY2tncm91bmQtcHJpbWFyeVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXRhYi1oZWFkZXJbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXRhYi1ncm91cC5tYXQtYmFja2dyb3VuZC1wcmltYXJ5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtdGFiLWxpbmtzW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10YWItZ3JvdXAubWF0LWJhY2tncm91bmQtcHJpbWFyeVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXRhYi1oZWFkZXItcGFnaW5hdGlvbltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdGFiLW5hdi1iYXIubWF0LWJhY2tncm91bmQtcHJpbWFyeVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXRhYi1oZWFkZXJbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXRhYi1uYXYtYmFyLm1hdC1iYWNrZ3JvdW5kLXByaW1hcnlbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC10YWItbGlua3NbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXRhYi1uYXYtYmFyLm1hdC1iYWNrZ3JvdW5kLXByaW1hcnlbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC10YWItaGVhZGVyLXBhZ2luYXRpb25bX25nY29udGVudC0lQ09NUCVde2JhY2tncm91bmQtY29sb3I6I2Y1N2MwMH0ubWF0LXRhYi1ncm91cC5tYXQtYmFja2dyb3VuZC1wcmltYXJ5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtdGFiLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10YWItZ3JvdXAubWF0LWJhY2tncm91bmQtcHJpbWFyeVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXRhYi1saW5rW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10YWItbmF2LWJhci5tYXQtYmFja2dyb3VuZC1wcmltYXJ5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtdGFiLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10YWItbmF2LWJhci5tYXQtYmFja2dyb3VuZC1wcmltYXJ5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtdGFiLWxpbmtbX25nY29udGVudC0lQ09NUCVde2NvbG9yOiNmZmZ9Lm1hdC10YWItZ3JvdXAubWF0LWJhY2tncm91bmQtcHJpbWFyeVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXRhYi1sYWJlbC5tYXQtdGFiLWRpc2FibGVkW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10YWItZ3JvdXAubWF0LWJhY2tncm91bmQtcHJpbWFyeVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXRhYi1saW5rLm1hdC10YWItZGlzYWJsZWRbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXRhYi1uYXYtYmFyLm1hdC1iYWNrZ3JvdW5kLXByaW1hcnlbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC10YWItbGFiZWwubWF0LXRhYi1kaXNhYmxlZFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdGFiLW5hdi1iYXIubWF0LWJhY2tncm91bmQtcHJpbWFyeVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXRhYi1saW5rLm1hdC10YWItZGlzYWJsZWRbX25nY29udGVudC0lQ09NUCVde2NvbG9yOnJnYmEoMjU1LDI1NSwyNTUsLjQpfS5tYXQtdGFiLWdyb3VwLm1hdC1iYWNrZ3JvdW5kLXByaW1hcnlbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC10YWItaGVhZGVyLXBhZ2luYXRpb24tY2hldnJvbltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdGFiLW5hdi1iYXIubWF0LWJhY2tncm91bmQtcHJpbWFyeVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXRhYi1oZWFkZXItcGFnaW5hdGlvbi1jaGV2cm9uW19uZ2NvbnRlbnQtJUNPTVAlXXtib3JkZXItY29sb3I6I2ZmZn0ubWF0LXRhYi1ncm91cC5tYXQtYmFja2dyb3VuZC1wcmltYXJ5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtdGFiLWhlYWRlci1wYWdpbmF0aW9uLWRpc2FibGVkW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtdGFiLWhlYWRlci1wYWdpbmF0aW9uLWNoZXZyb25bX25nY29udGVudC0lQ09NUCVdLCAubWF0LXRhYi1uYXYtYmFyLm1hdC1iYWNrZ3JvdW5kLXByaW1hcnlbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC10YWItaGVhZGVyLXBhZ2luYXRpb24tZGlzYWJsZWRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC10YWItaGVhZGVyLXBhZ2luYXRpb24tY2hldnJvbltfbmdjb250ZW50LSVDT01QJV17Ym9yZGVyLWNvbG9yOnJnYmEoMjU1LDI1NSwyNTUsLjQpfS5tYXQtdGFiLWdyb3VwLm1hdC1iYWNrZ3JvdW5kLXByaW1hcnlbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1yaXBwbGUtZWxlbWVudFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdGFiLW5hdi1iYXIubWF0LWJhY2tncm91bmQtcHJpbWFyeVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXJpcHBsZS1lbGVtZW50W19uZ2NvbnRlbnQtJUNPTVAlXXtiYWNrZ3JvdW5kLWNvbG9yOnJnYmEoMjU1LDI1NSwyNTUsLjEyKX0ubWF0LXRhYi1ncm91cC5tYXQtYmFja2dyb3VuZC1hY2NlbnRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC10YWItbGFiZWwuY2RrLWtleWJvYXJkLWZvY3VzZWRbX25nY29udGVudC0lQ09NUCVdOm5vdCgubWF0LXRhYi1kaXNhYmxlZCksIC5tYXQtdGFiLWdyb3VwLm1hdC1iYWNrZ3JvdW5kLWFjY2VudFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXRhYi1sYWJlbC5jZGstcHJvZ3JhbS1mb2N1c2VkW19uZ2NvbnRlbnQtJUNPTVAlXTpub3QoLm1hdC10YWItZGlzYWJsZWQpLCAubWF0LXRhYi1ncm91cC5tYXQtYmFja2dyb3VuZC1hY2NlbnRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC10YWItbGluay5jZGsta2V5Ym9hcmQtZm9jdXNlZFtfbmdjb250ZW50LSVDT01QJV06bm90KC5tYXQtdGFiLWRpc2FibGVkKSwgLm1hdC10YWItZ3JvdXAubWF0LWJhY2tncm91bmQtYWNjZW50W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtdGFiLWxpbmsuY2RrLXByb2dyYW0tZm9jdXNlZFtfbmdjb250ZW50LSVDT01QJV06bm90KC5tYXQtdGFiLWRpc2FibGVkKSwgLm1hdC10YWItbmF2LWJhci5tYXQtYmFja2dyb3VuZC1hY2NlbnRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC10YWItbGFiZWwuY2RrLWtleWJvYXJkLWZvY3VzZWRbX25nY29udGVudC0lQ09NUCVdOm5vdCgubWF0LXRhYi1kaXNhYmxlZCksIC5tYXQtdGFiLW5hdi1iYXIubWF0LWJhY2tncm91bmQtYWNjZW50W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtdGFiLWxhYmVsLmNkay1wcm9ncmFtLWZvY3VzZWRbX25nY29udGVudC0lQ09NUCVdOm5vdCgubWF0LXRhYi1kaXNhYmxlZCksIC5tYXQtdGFiLW5hdi1iYXIubWF0LWJhY2tncm91bmQtYWNjZW50W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtdGFiLWxpbmsuY2RrLWtleWJvYXJkLWZvY3VzZWRbX25nY29udGVudC0lQ09NUCVdOm5vdCgubWF0LXRhYi1kaXNhYmxlZCksIC5tYXQtdGFiLW5hdi1iYXIubWF0LWJhY2tncm91bmQtYWNjZW50W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtdGFiLWxpbmsuY2RrLXByb2dyYW0tZm9jdXNlZFtfbmdjb250ZW50LSVDT01QJV06bm90KC5tYXQtdGFiLWRpc2FibGVkKXtiYWNrZ3JvdW5kLWNvbG9yOnJnYmEoMjU1LDE1MiwwLC4zKX0ubWF0LXRhYi1ncm91cC5tYXQtYmFja2dyb3VuZC1hY2NlbnRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC10YWItaGVhZGVyW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10YWItZ3JvdXAubWF0LWJhY2tncm91bmQtYWNjZW50W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtdGFiLWxpbmtzW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10YWItZ3JvdXAubWF0LWJhY2tncm91bmQtYWNjZW50W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtdGFiLWhlYWRlci1wYWdpbmF0aW9uW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10YWItbmF2LWJhci5tYXQtYmFja2dyb3VuZC1hY2NlbnRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC10YWItaGVhZGVyW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10YWItbmF2LWJhci5tYXQtYmFja2dyb3VuZC1hY2NlbnRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC10YWItbGlua3NbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXRhYi1uYXYtYmFyLm1hdC1iYWNrZ3JvdW5kLWFjY2VudFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXRhYi1oZWFkZXItcGFnaW5hdGlvbltfbmdjb250ZW50LSVDT01QJV17YmFja2dyb3VuZC1jb2xvcjojZmY5ODAwfS5tYXQtdGFiLWdyb3VwLm1hdC1iYWNrZ3JvdW5kLWFjY2VudFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXRhYi1sYWJlbFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdGFiLWdyb3VwLm1hdC1iYWNrZ3JvdW5kLWFjY2VudFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXRhYi1saW5rW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10YWItbmF2LWJhci5tYXQtYmFja2dyb3VuZC1hY2NlbnRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC10YWItbGFiZWxbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXRhYi1uYXYtYmFyLm1hdC1iYWNrZ3JvdW5kLWFjY2VudFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXRhYi1saW5rW19uZ2NvbnRlbnQtJUNPTVAlXXtjb2xvcjojZmZmfS5tYXQtdGFiLWdyb3VwLm1hdC1iYWNrZ3JvdW5kLWFjY2VudFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXRhYi1sYWJlbC5tYXQtdGFiLWRpc2FibGVkW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10YWItZ3JvdXAubWF0LWJhY2tncm91bmQtYWNjZW50W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtdGFiLWxpbmsubWF0LXRhYi1kaXNhYmxlZFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdGFiLW5hdi1iYXIubWF0LWJhY2tncm91bmQtYWNjZW50W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtdGFiLWxhYmVsLm1hdC10YWItZGlzYWJsZWRbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXRhYi1uYXYtYmFyLm1hdC1iYWNrZ3JvdW5kLWFjY2VudFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXRhYi1saW5rLm1hdC10YWItZGlzYWJsZWRbX25nY29udGVudC0lQ09NUCVde2NvbG9yOnJnYmEoMjU1LDI1NSwyNTUsLjQpfS5tYXQtdGFiLWdyb3VwLm1hdC1iYWNrZ3JvdW5kLWFjY2VudFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXRhYi1oZWFkZXItcGFnaW5hdGlvbi1jaGV2cm9uW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10YWItbmF2LWJhci5tYXQtYmFja2dyb3VuZC1hY2NlbnRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC10YWItaGVhZGVyLXBhZ2luYXRpb24tY2hldnJvbltfbmdjb250ZW50LSVDT01QJV17Ym9yZGVyLWNvbG9yOiNmZmZ9Lm1hdC10YWItZ3JvdXAubWF0LWJhY2tncm91bmQtYWNjZW50W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtdGFiLWhlYWRlci1wYWdpbmF0aW9uLWRpc2FibGVkW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtdGFiLWhlYWRlci1wYWdpbmF0aW9uLWNoZXZyb25bX25nY29udGVudC0lQ09NUCVdLCAubWF0LXRhYi1uYXYtYmFyLm1hdC1iYWNrZ3JvdW5kLWFjY2VudFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXRhYi1oZWFkZXItcGFnaW5hdGlvbi1kaXNhYmxlZFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXRhYi1oZWFkZXItcGFnaW5hdGlvbi1jaGV2cm9uW19uZ2NvbnRlbnQtJUNPTVAlXXtib3JkZXItY29sb3I6cmdiYSgyNTUsMjU1LDI1NSwuNCl9Lm1hdC10YWItZ3JvdXAubWF0LWJhY2tncm91bmQtYWNjZW50W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtcmlwcGxlLWVsZW1lbnRbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXRhYi1uYXYtYmFyLm1hdC1iYWNrZ3JvdW5kLWFjY2VudFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXJpcHBsZS1lbGVtZW50W19uZ2NvbnRlbnQtJUNPTVAlXXtiYWNrZ3JvdW5kLWNvbG9yOnJnYmEoMjU1LDI1NSwyNTUsLjEyKX0ubWF0LXRhYi1ncm91cC5tYXQtYmFja2dyb3VuZC13YXJuW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtdGFiLWxhYmVsLmNkay1rZXlib2FyZC1mb2N1c2VkW19uZ2NvbnRlbnQtJUNPTVAlXTpub3QoLm1hdC10YWItZGlzYWJsZWQpLCAubWF0LXRhYi1ncm91cC5tYXQtYmFja2dyb3VuZC13YXJuW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtdGFiLWxhYmVsLmNkay1wcm9ncmFtLWZvY3VzZWRbX25nY29udGVudC0lQ09NUCVdOm5vdCgubWF0LXRhYi1kaXNhYmxlZCksIC5tYXQtdGFiLWdyb3VwLm1hdC1iYWNrZ3JvdW5kLXdhcm5bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC10YWItbGluay5jZGsta2V5Ym9hcmQtZm9jdXNlZFtfbmdjb250ZW50LSVDT01QJV06bm90KC5tYXQtdGFiLWRpc2FibGVkKSwgLm1hdC10YWItZ3JvdXAubWF0LWJhY2tncm91bmQtd2Fybltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXRhYi1saW5rLmNkay1wcm9ncmFtLWZvY3VzZWRbX25nY29udGVudC0lQ09NUCVdOm5vdCgubWF0LXRhYi1kaXNhYmxlZCksIC5tYXQtdGFiLW5hdi1iYXIubWF0LWJhY2tncm91bmQtd2Fybltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXRhYi1sYWJlbC5jZGsta2V5Ym9hcmQtZm9jdXNlZFtfbmdjb250ZW50LSVDT01QJV06bm90KC5tYXQtdGFiLWRpc2FibGVkKSwgLm1hdC10YWItbmF2LWJhci5tYXQtYmFja2dyb3VuZC13YXJuW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtdGFiLWxhYmVsLmNkay1wcm9ncmFtLWZvY3VzZWRbX25nY29udGVudC0lQ09NUCVdOm5vdCgubWF0LXRhYi1kaXNhYmxlZCksIC5tYXQtdGFiLW5hdi1iYXIubWF0LWJhY2tncm91bmQtd2Fybltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXRhYi1saW5rLmNkay1rZXlib2FyZC1mb2N1c2VkW19uZ2NvbnRlbnQtJUNPTVAlXTpub3QoLm1hdC10YWItZGlzYWJsZWQpLCAubWF0LXRhYi1uYXYtYmFyLm1hdC1iYWNrZ3JvdW5kLXdhcm5bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC10YWItbGluay5jZGstcHJvZ3JhbS1mb2N1c2VkW19uZ2NvbnRlbnQtJUNPTVAlXTpub3QoLm1hdC10YWItZGlzYWJsZWQpe2JhY2tncm91bmQtY29sb3I6cmdiYSgyNTUsMjA1LDIxMCwuMyl9Lm1hdC10YWItZ3JvdXAubWF0LWJhY2tncm91bmQtd2Fybltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXRhYi1oZWFkZXJbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXRhYi1ncm91cC5tYXQtYmFja2dyb3VuZC13YXJuW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtdGFiLWxpbmtzW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10YWItZ3JvdXAubWF0LWJhY2tncm91bmQtd2Fybltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXRhYi1oZWFkZXItcGFnaW5hdGlvbltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdGFiLW5hdi1iYXIubWF0LWJhY2tncm91bmQtd2Fybltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXRhYi1oZWFkZXJbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXRhYi1uYXYtYmFyLm1hdC1iYWNrZ3JvdW5kLXdhcm5bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC10YWItbGlua3NbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXRhYi1uYXYtYmFyLm1hdC1iYWNrZ3JvdW5kLXdhcm5bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC10YWItaGVhZGVyLXBhZ2luYXRpb25bX25nY29udGVudC0lQ09NUCVde2JhY2tncm91bmQtY29sb3I6I2Y0NDMzNn0ubWF0LXRhYi1ncm91cC5tYXQtYmFja2dyb3VuZC13YXJuW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtdGFiLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10YWItZ3JvdXAubWF0LWJhY2tncm91bmQtd2Fybltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXRhYi1saW5rW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10YWItbmF2LWJhci5tYXQtYmFja2dyb3VuZC13YXJuW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtdGFiLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10YWItbmF2LWJhci5tYXQtYmFja2dyb3VuZC13YXJuW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtdGFiLWxpbmtbX25nY29udGVudC0lQ09NUCVde2NvbG9yOiNmZmZ9Lm1hdC10YWItZ3JvdXAubWF0LWJhY2tncm91bmQtd2Fybltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXRhYi1sYWJlbC5tYXQtdGFiLWRpc2FibGVkW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10YWItZ3JvdXAubWF0LWJhY2tncm91bmQtd2Fybltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXRhYi1saW5rLm1hdC10YWItZGlzYWJsZWRbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXRhYi1uYXYtYmFyLm1hdC1iYWNrZ3JvdW5kLXdhcm5bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC10YWItbGFiZWwubWF0LXRhYi1kaXNhYmxlZFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdGFiLW5hdi1iYXIubWF0LWJhY2tncm91bmQtd2Fybltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXRhYi1saW5rLm1hdC10YWItZGlzYWJsZWRbX25nY29udGVudC0lQ09NUCVde2NvbG9yOnJnYmEoMjU1LDI1NSwyNTUsLjQpfS5tYXQtdGFiLWdyb3VwLm1hdC1iYWNrZ3JvdW5kLXdhcm5bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC10YWItaGVhZGVyLXBhZ2luYXRpb24tY2hldnJvbltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdGFiLW5hdi1iYXIubWF0LWJhY2tncm91bmQtd2Fybltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXRhYi1oZWFkZXItcGFnaW5hdGlvbi1jaGV2cm9uW19uZ2NvbnRlbnQtJUNPTVAlXXtib3JkZXItY29sb3I6I2ZmZn0ubWF0LXRhYi1ncm91cC5tYXQtYmFja2dyb3VuZC13YXJuW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtdGFiLWhlYWRlci1wYWdpbmF0aW9uLWRpc2FibGVkW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtdGFiLWhlYWRlci1wYWdpbmF0aW9uLWNoZXZyb25bX25nY29udGVudC0lQ09NUCVdLCAubWF0LXRhYi1uYXYtYmFyLm1hdC1iYWNrZ3JvdW5kLXdhcm5bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC10YWItaGVhZGVyLXBhZ2luYXRpb24tZGlzYWJsZWRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC10YWItaGVhZGVyLXBhZ2luYXRpb24tY2hldnJvbltfbmdjb250ZW50LSVDT01QJV17Ym9yZGVyLWNvbG9yOnJnYmEoMjU1LDI1NSwyNTUsLjQpfS5tYXQtdGFiLWdyb3VwLm1hdC1iYWNrZ3JvdW5kLXdhcm5bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1yaXBwbGUtZWxlbWVudFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdGFiLW5hdi1iYXIubWF0LWJhY2tncm91bmQtd2Fybltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXJpcHBsZS1lbGVtZW50W19uZ2NvbnRlbnQtJUNPTVAlXXtiYWNrZ3JvdW5kLWNvbG9yOnJnYmEoMjU1LDI1NSwyNTUsLjEyKX0ubWF0LXRvb2xiYXJbX25nY29udGVudC0lQ09NUCVde2JhY2tncm91bmQ6I2Y1ZjVmNTtjb2xvcjojMjEyMTIxfS5tYXQtdG9vbGJhci5tYXQtcHJpbWFyeVtfbmdjb250ZW50LSVDT01QJV17YmFja2dyb3VuZDojZjU3YzAwO2NvbG9yOiNmZmZ9Lm1hdC10b29sYmFyLm1hdC1hY2NlbnRbX25nY29udGVudC0lQ09NUCVde2JhY2tncm91bmQ6I2ZmOTgwMDtjb2xvcjojZmZmfS5tYXQtdG9vbGJhci5tYXQtd2Fybltfbmdjb250ZW50LSVDT01QJV17YmFja2dyb3VuZDojZjQ0MzM2O2NvbG9yOiNmZmZ9Lm1hdC10b29sYmFyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC11bmRlcmxpbmVbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXRvb2xiYXJbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLXJpcHBsZVtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdG9vbGJhcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvY3VzZWRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLXJpcHBsZVtfbmdjb250ZW50LSVDT01QJV17YmFja2dyb3VuZC1jb2xvcjpjdXJyZW50Q29sb3J9Lm1hdC10b29sYmFyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdG9vbGJhcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvY3VzZWRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10b29sYmFyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtc2VsZWN0LXZhbHVlW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10b29sYmFyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtc2VsZWN0LWFycm93W19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10b29sYmFyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC5tYXQtZm9jdXNlZFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXNlbGVjdC1hcnJvd1tfbmdjb250ZW50LSVDT01QJV17Y29sb3I6aW5oZXJpdH0ubWF0LXRvb2xiYXJbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pbnB1dC1lbGVtZW50W19uZ2NvbnRlbnQtJUNPTVAlXXtjYXJldC1jb2xvcjpjdXJyZW50Q29sb3J9Lm1hdC10b29sYmFyLW11bHRpcGxlLXJvd3NbX25nY29udGVudC0lQ09NUCVde21pbi1oZWlnaHQ6NjRweH0ubWF0LXRvb2xiYXItcm93W19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10b29sYmFyLXNpbmdsZS1yb3dbX25nY29udGVudC0lQ09NUCVde2hlaWdodDo2NHB4fUBtZWRpYShtYXgtd2lkdGg6IDU5OXB4KXsubWF0LXRvb2xiYXItbXVsdGlwbGUtcm93c1tfbmdjb250ZW50LSVDT01QJV17bWluLWhlaWdodDo1NnB4fS5tYXQtdG9vbGJhci1yb3dbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXRvb2xiYXItc2luZ2xlLXJvd1tfbmdjb250ZW50LSVDT01QJV17aGVpZ2h0OjU2cHh9fS5tYXQtdG9vbHRpcFtfbmdjb250ZW50LSVDT01QJV17YmFja2dyb3VuZDpyZ2JhKDk3LDk3LDk3LC45KX0ubWF0LXRyZWVbX25nY29udGVudC0lQ09NUCVde2JhY2tncm91bmQ6I2ZmZn0ubWF0LXRyZWUtbm9kZVtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtbmVzdGVkLXRyZWUtbm9kZVtfbmdjb250ZW50LSVDT01QJV17Y29sb3I6IzIxMjEyMX0ubWF0LXRyZWUtbm9kZVtfbmdjb250ZW50LSVDT01QJV17bWluLWhlaWdodDo0OHB4fS5tYXQtc25hY2stYmFyLWNvbnRhaW5lcltfbmdjb250ZW50LSVDT01QJV17Y29sb3I6cmdiYSgyNTUsMjU1LDI1NSwuNyk7YmFja2dyb3VuZDojMzIzMjMyO2JveC1zaGFkb3c6MHB4IDNweCA1cHggLTFweCByZ2JhKDAsIDAsIDAsIDAuMiksMHB4IDZweCAxMHB4IDBweCByZ2JhKDAsIDAsIDAsIDAuMTQpLDBweCAxcHggMThweCAwcHggcmdiYSgwLCAwLCAwLCAwLjEyKX0ubWF0LXNpbXBsZS1zbmFja2Jhci1hY3Rpb25bX25nY29udGVudC0lQ09NUCVde2NvbG9yOiNmZjk4MDB9W19uZ2hvc3QtJUNPTVAlXXtkaXNwbGF5OmZsZXg7ZmxleC1kaXJlY3Rpb246Y29sdW1uO2hlaWdodDoxMDAlfS5jb250ZW50W19uZ2NvbnRlbnQtJUNPTVAlXXtkaXNwbGF5OmZsZXg7ZmxleDoxO21pbi1oZWlnaHQ6MHB4O3dpZHRoOjEwMCV9LnNpZGViYXItY29udGFpbmVyW19uZ2NvbnRlbnQtJUNPTVAlXXtoZWlnaHQ6MTAwJTtvdmVyZmxvdzpoaWRkZW59LnNpZGViYXItY29udGVudHNbX25nY29udGVudC0lQ09NUCVde2hlaWdodDoxMDAlO2Rpc3BsYXk6ZmxleDtmbGV4LWRpcmVjdGlvbjpjb2x1bW47bWluLXdpZHRoOjE1MHB4fS5hbmFseXNpcy1jb250YWluZXJbX25nY29udGVudC0lQ09NUCVde2Rpc3BsYXk6ZmxleDtmbGV4LWRpcmVjdGlvbjpjb2x1bW47aGVpZ2h0OjEwMCU7ZmxleDoxIDF9LnJ1bi1zZWxlY3Rvcltfbmdjb250ZW50LSVDT01QJV17bWF4LWhlaWdodDoxMDAlO3dpZHRoOjEwMCV9LnZpb2xpbi1maWx0ZXJzW19uZ2NvbnRlbnQtJUNPTVAlXXttaW4taGVpZ2h0OjBweDt3aWR0aDoxMDAlfS5zaWRlLXRvZ2dsZVtfbmdjb250ZW50LSVDT01QJV17d2lkdGg6MzBweDtoZWlnaHQ6MzBweDtwb3NpdGlvbjphYnNvbHV0ZTtsZWZ0OjEwcHg7Ym90dG9tOjEwcHg7Ym9yZGVyOjFweCBzb2xpZCAjZWJlYmViO2JvcmRlci1yYWRpdXM6M3B4O2Rpc3BsYXk6ZmxleDthbGlnbi1pdGVtczpjZW50ZXI7anVzdGlmeS1jb250ZW50OmNlbnRlcn0uZ3JhYmJlcltfbmdjb250ZW50LSVDT01QJV17Y29udGVudDoiIjtjdXJzb3I6ZXctcmVzaXplO2hlaWdodDoxMDAlO3dpZHRoOjNweDtvdmVyZmxvdzpoaWRkZW47YmFja2dyb3VuZC1jb2xvcjpyZ2JhKDAsMCwwLC4xMil9LmFubm90YXRpb25zLWxpc3RbX25nY29udGVudC0lQ09NUCVde3dpZHRoOjEwMCU7bWluLWhlaWdodDowcHg7ZmxleDoxIDF9J10sY2hhbmdlRGV0ZWN0aW9uOjB9KTtjbGFzcyBNYnR7Y29uc3RydWN0b3IodCl7dGhpcy5zdG9yZT10LHRoaXMucnVuQWN0aXZlJD10aGlzLnN0b3JlLnBpcGUobHYoS0QpKS5waXBlKGZ0KCh0PT4hIXQmJlsuLi50LnZhbHVlcygpXS5pbmNsdWRlcyghMCkpKSksdGhpcy5zaWRlYmFyRXhwYW5kZWQkPXRoaXMuc3RvcmUucGlwZShsdihqZHQpKSx0aGlzLnNpZGViYXJXaWR0aCQ9dGhpcy5zdG9yZS5waXBlKGx2KFlkdCkpLHRoaXMucmVzaXppbmc9ITF9b25Ub2dnbGVTaWRlYmFyRXhwYW5kZWQoKXt0aGlzLnN0b3JlLmRpc3BhdGNoKGJndCgpKX1vblJlc2l6ZVRyaWdnZXJlZCh0KXt0aGlzLnJlc2l6aW5nJiZ0aGlzLnN0b3JlLmRpc3BhdGNoKF9ndCh7c2lkZWJhcldpZHRoOnQuY2xpZW50WH0pKX1vblJlc2l6ZUdyYWJiZWQoKXt0aGlzLnJlc2l6aW5nPSEwfW9uUmVzaXplUmVsZWFzZWQoKXt0aGlzLnJlc2l6aW5nPSExfX1mdW5jdGlvbiBPYnQodCxuKXsxJnQmJihLZygwLCJkaXYiLDYpLEtnKDEsImRpdiIsNyksS2coMiwiZGl2Iiw4KSx0cCgzLCJydW5zLXNlbGVjdG9yIiksJGcoKSwkZygpLCRnKCkpLDImdCYmVHAoIndpZHRoIixncCgpLnNpZGViYXJXaWR0aCwicHgiKX1mdW5jdGlvbiBQYnQodCxuKXtpZigxJnQpe2NvbnN0IHQ9b3AoKTtLZygwLCJkaXYiLDkpLGNwKCJtb3VzZWRvd24iLChmdW5jdGlvbiBuKCl7cmV0dXJuIGpyKHQpLGdwKCkucmVzaXplR3JhYmJlZC5lbWl0KCl9KSksJGcoKX19ZnVuY3Rpb24geGJ0KHQsbil7MSZ0JiYoS2coMCwiZGl2IiwxMCksdHAoMSwibnBtaS1hbm5vdGF0aW9ucy1saXN0IiwxMSksdHAoMiwibnBtaS1zZWxlY3RlZC1hbm5vdGF0aW9ucyIpLCRnKCkpfWZ1bmN0aW9uIHlidCh0LG4pezEmdCYmKEtnKDAsImRpdiIsMTIpLEpwKDEsIllvdSBuZWVkIHRvIHNlbGVjdCBhdCBsZWFzdCBvbmUgcnVuLiIpLCRnKCkpfWZ1bmN0aW9uIGtidCh0LG4pe2lmKDEmdCl7Y29uc3QgdD1vcCgpO0tnKDAsImRpdiIsMTMpLEtnKDEsImJ1dHRvbiIsMTQpLGx1KDIsMTUpLGNwKCJjbGljayIsKGZ1bmN0aW9uIG4oKXtyZXR1cm4ganIodCksZ3AoKS50b2dnbGVTaWRlYmFyRXhwYW5kZWQuZW1pdCgpfSkpLHRwKDMsIm1hdC1pY29uIiwxNiksJGcoKSwkZygpfX1NYnQuybVmYWM9ZnVuY3Rpb24gdChuKXtyZXR1cm4gbmV3KG58fE1idCkoWmcoY3YpKX0sTWJ0Lsm1Y21wPV9vKHt0eXBlOk1idCxzZWxlY3RvcnM6W1sibnBtaS1tYWluIl1dLGRlY2xzOjQsdmFyczo5LGNvbnN0czpbWzMsInJ1bkFjdGl2ZSIsInNpZGViYXJFeHBhbmRlZCIsInNpZGViYXJXaWR0aCIsInRvZ2dsZVNpZGViYXJFeHBhbmRlZCIsInJlc2l6ZVRyaWdnZXJlZCIsInJlc2l6ZUdyYWJiZWQiLCJyZXNpemVSZWxlYXNlZCJdXSx0ZW1wbGF0ZTpmdW5jdGlvbiB0KG4sZSl7MSZuJiYoS2coMCwibWFpbi1jb21wb25lbnQiLDApLGNwKCJ0b2dnbGVTaWRlYmFyRXhwYW5kZWQiLChmdW5jdGlvbiB0KCl7cmV0dXJuIGUub25Ub2dnbGVTaWRlYmFyRXhwYW5kZWQoKX0pKSgicmVzaXplVHJpZ2dlcmVkIiwoZnVuY3Rpb24gdChuKXtyZXR1cm4gZS5vblJlc2l6ZVRyaWdnZXJlZChuKX0pKSgicmVzaXplR3JhYmJlZCIsKGZ1bmN0aW9uIHQoKXtyZXR1cm4gZS5vblJlc2l6ZUdyYWJiZWQoKX0pKSgicmVzaXplUmVsZWFzZWQiLChmdW5jdGlvbiB0KCl7cmV0dXJuIGUub25SZXNpemVSZWxlYXNlZCgpfSkpLHlmKDEsImFzeW5jIikseWYoMiwiYXN5bmMiKSx5ZigzLCJhc3luYyIpLCRnKCkpLDImbiYmSmcoInJ1bkFjdGl2ZSIsa2YoMSwzLGUucnVuQWN0aXZlJCkpKCJzaWRlYmFyRXhwYW5kZWQiLGtmKDIsNSxlLnNpZGViYXJFeHBhbmRlZCQpKSgic2lkZWJhcldpZHRoIixrZigzLDcsZS5zaWRlYmFyV2lkdGgkKSl9LGRpcmVjdGl2ZXM6W0NidF0scGlwZXM6W29PXSxlbmNhcHN1bGF0aW9uOjIsY2hhbmdlRGV0ZWN0aW9uOjB9KTtjbGFzcyB2YnR7Y29uc3RydWN0b3IoKXt0aGlzLnRvZ2dsZVNpZGViYXJFeHBhbmRlZD1uZXcgRWYsdGhpcy5yZXNpemVUcmlnZ2VyZWQ9bmV3IEVmLHRoaXMucmVzaXplR3JhYmJlZD1uZXcgRWYsdGhpcy5yZXNpemVSZWxlYXNlZD1uZXcgRWZ9fXZidC7JtWZhYz1mdW5jdGlvbiB0KG4pe3JldHVybiBuZXcobnx8dmJ0KX0sdmJ0Lsm1Y21wPV9vKHt0eXBlOnZidCxzZWxlY3RvcnM6W1siZW1iZWRkaW5ncy1jb21wb25lbnQiXV0saW5wdXRzOntydW5BY3RpdmU6InJ1bkFjdGl2ZSIsc2lkZWJhckV4cGFuZGVkOiJzaWRlYmFyRXhwYW5kZWQiLHNpZGViYXJXaWR0aDoic2lkZWJhcldpZHRoIn0sb3V0cHV0czp7dG9nZ2xlU2lkZWJhckV4cGFuZGVkOiJ0b2dnbGVTaWRlYmFyRXhwYW5kZWQiLHJlc2l6ZVRyaWdnZXJlZDoicmVzaXplVHJpZ2dlcmVkIixyZXNpemVHcmFiYmVkOiJyZXNpemVHcmFiYmVkIixyZXNpemVSZWxlYXNlZDoicmVzaXplUmVsZWFzZWQifSxkZWNsczo4LHZhcnM6NSxjb25zdHM6ZnVuY3Rpb24oKXtyZXR1cm5bWzEsImNvbnRlbnQiLDMsIm1vdXNldXAiLCJtb3VzZW1vdmUiXSxbImNsYXNzIiwic2lkZWJhci1jb250YWluZXIiLDMsIndpZHRoIiw0LCJuZ0lmIl0sWyJjbGFzcyIsImdyYWJiZXIiLDMsIm1vdXNlZG93biIsNCwibmdJZiJdLFsiY2xhc3MiLCJhbmFseXNpcy1jb250YWluZXIiLDQsIm5nSWYiLCJuZ0lmRWxzZSJdLFsibm9SdW4iLCIiXSxbImNsYXNzIiwic2lkZS10b2dnbGUiLDQsIm5nSWYiXSxbMSwic2lkZWJhci1jb250YWluZXIiXSxbMSwic2lkZWJhci1jb250ZW50cyJdLFsxLCJydW4tc2VsZWN0b3IiXSxbMSwiZ3JhYmJlciIsMywibW91c2Vkb3duIl0sWzEsImFuYWx5c2lzLWNvbnRhaW5lciJdLFsxLCJhbm5vdGF0aW9ucy1saXN0Il0sWzEsIm5vUnVuIl0sWzEsInNpZGUtdG9nZ2xlIl0sWyJtYXQtaWNvbi1idXR0b24iLCIiLDMsImNsaWNrIiw2LCJhcmlhLWxhYmVsIl0sWyJhcmlhLWxhYmVsIiwidW5kZWZpbmVkIiE9dHlwZW9mIG5nSTE4bkNsb3N1cmVNb2RlJiZuZ0kxOG5DbG9zdXJlTW9kZT9nb29nLmdldE1zZygiVG9nZ2xlIFNpZGViYXIiKTokbG9jYWxpemVgOkxhYmVsIGZvciBhIGJ1dHRvbiB0aGF0IHRvZ2dsZXMgdGhlIHNpZGViYXIu4pCfZjYzYjU3OTMyZDE3OWNjYTYyYWM5ZmNhZTYzZGQ3ZjVlNmZhMzg5ZuKQnzQ0ODUwMDkzNDc0NDQ3MDQ4Nzg6VG9nZ2xlIFNpZGViYXJgXSxbInN2Z0ljb24iLCJjaGV2cm9uX3JpZ2h0XzI0cHgiXV19LHRlbXBsYXRlOmZ1bmN0aW9uIHQobixlKXtpZigxJm4mJih0cCgwLCJucG1pLWRhdGEtc2VsZWN0aW9uIiksS2coMSwiZGl2IiwwKSxjcCgibW91c2V1cCIsKGZ1bmN0aW9uIHQoKXtyZXR1cm4gZS5yZXNpemVSZWxlYXNlZC5lbWl0KCl9KSkoIm1vdXNlbW92ZSIsKGZ1bmN0aW9uIHQobil7cmV0dXJuIGUucmVzaXplVHJpZ2dlcmVkLmVtaXQobil9KSksWWcoMixPYnQsNCwyLCJkaXYiLDEpLFlnKDMsUGJ0LDEsMCwiZGl2IiwyKSxZZyg0LHhidCwzLDAsImRpdiIsMyksWWcoNSx5YnQsMiwwLCJuZy10ZW1wbGF0ZSIsbnVsbCw0LEtmKSwkZygpLFlnKDcsa2J0LDQsMCwiZGl2Iiw1KSksMiZuKXtjb25zdCB0PXFnKDYpO3dzKDIpLEpnKCJuZ0lmIixlLnNpZGViYXJFeHBhbmRlZCksd3MoMSksSmcoIm5nSWYiLGUuc2lkZWJhckV4cGFuZGVkKSx3cygxKSxKZygibmdJZiIsITA9PT1lLnJ1bkFjdGl2ZSkoIm5nSWZFbHNlIix0KSx3cygzKSxKZygibmdJZiIsIWUuc2lkZWJhckV4cGFuZGVkKX19LGRpcmVjdGl2ZXM6W21wdCxXTSxySyxyYnQscGJ0LGVBLEJCXSxzdHlsZXM6WycubWF0LWJhZGdlLWNvbnRlbnRbX25nY29udGVudC0lQ09NUCVde2ZvbnQtd2VpZ2h0OjYwMDtmb250LXNpemU6MTJweDtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWZ9Lm1hdC1iYWRnZS1zbWFsbFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWJhZGdlLWNvbnRlbnRbX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZTo5cHh9Lm1hdC1iYWRnZS1sYXJnZVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWJhZGdlLWNvbnRlbnRbX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToyNHB4fS5tYXQtaDFbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWhlYWRsaW5lW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10eXBvZ3JhcGh5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIGgxW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250OjQwMCAyNHB4LzMycHggUm9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2xldHRlci1zcGFjaW5nOm5vcm1hbDttYXJnaW46MCAwIDE2cHh9Lm1hdC1oMltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdGl0bGVbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXR5cG9ncmFwaHlbX25nY29udGVudC0lQ09NUCVdICAgaDJbX25nY29udGVudC0lQ09NUCVde2ZvbnQ6NTAwIDIwcHgvMzJweCBSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7bGV0dGVyLXNwYWNpbmc6bm9ybWFsO21hcmdpbjowIDAgMTZweH0ubWF0LWgzW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1zdWJoZWFkaW5nLTJbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXR5cG9ncmFwaHlbX25nY29udGVudC0lQ09NUCVdICAgaDNbX25nY29udGVudC0lQ09NUCVde2ZvbnQ6NDAwIDE2cHgvMjhweCBSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7bGV0dGVyLXNwYWNpbmc6bm9ybWFsO21hcmdpbjowIDAgMTZweH0ubWF0LWg0W19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1zdWJoZWFkaW5nLTFbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXR5cG9ncmFwaHlbX25nY29udGVudC0lQ09NUCVdICAgaDRbX25nY29udGVudC0lQ09NUCVde2ZvbnQ6NDAwIDE1cHgvMjRweCBSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7bGV0dGVyLXNwYWNpbmc6bm9ybWFsO21hcmdpbjowIDAgMTZweH0ubWF0LWg1W19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10eXBvZ3JhcGh5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIGg1W19uZ2NvbnRlbnQtJUNPTVAlXXtmb250OjQwMCBjYWxjKDE0cHggKiAwLjgzKS8yMHB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjttYXJnaW46MCAwIDEycHh9Lm1hdC1oNltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdHlwb2dyYXBoeVtfbmdjb250ZW50LSVDT01QJV0gICBoNltfbmdjb250ZW50LSVDT01QJV17Zm9udDo0MDAgY2FsYygxNHB4ICogMC42NykvMjBweCBSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7bWFyZ2luOjAgMCAxMnB4fS5tYXQtYm9keS1zdHJvbmdbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWJvZHktMltfbmdjb250ZW50LSVDT01QJV17Zm9udDo1MDAgMTRweC8yNHB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtsZXR0ZXItc3BhY2luZzpub3JtYWx9Lm1hdC1ib2R5W19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1ib2R5LTFbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXR5cG9ncmFwaHlbX25nY29udGVudC0lQ09NUCVde2ZvbnQ6NDAwIDE0cHgvMjBweCBSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7bGV0dGVyLXNwYWNpbmc6bm9ybWFsfS5tYXQtYm9keVtfbmdjb250ZW50LSVDT01QJV0gICBwW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1ib2R5LTFbX25nY29udGVudC0lQ09NUCVdICAgcFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdHlwb2dyYXBoeVtfbmdjb250ZW50LSVDT01QJV0gICBwW19uZ2NvbnRlbnQtJUNPTVAlXXttYXJnaW46MCAwIDEycHh9Lm1hdC1zbWFsbFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtY2FwdGlvbltfbmdjb250ZW50LSVDT01QJV17Zm9udDo0MDAgMTJweC8yMHB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtsZXR0ZXItc3BhY2luZzpub3JtYWx9Lm1hdC1kaXNwbGF5LTRbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXR5cG9ncmFwaHlbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1kaXNwbGF5LTRbX25nY29udGVudC0lQ09NUCVde2ZvbnQ6MzAwIDExMnB4LzExMnB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtsZXR0ZXItc3BhY2luZzotMC4wNWVtO21hcmdpbjowIDAgNTZweH0ubWF0LWRpc3BsYXktM1tfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdHlwb2dyYXBoeVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWRpc3BsYXktM1tfbmdjb250ZW50LSVDT01QJV17Zm9udDo0MDAgNTZweC81NnB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtsZXR0ZXItc3BhY2luZzotMC4wMmVtO21hcmdpbjowIDAgNjRweH0ubWF0LWRpc3BsYXktMltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdHlwb2dyYXBoeVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWRpc3BsYXktMltfbmdjb250ZW50LSVDT01QJV17Zm9udDo0MDAgNDVweC80OHB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtsZXR0ZXItc3BhY2luZzotMC4wMDVlbTttYXJnaW46MCAwIDY0cHh9Lm1hdC1kaXNwbGF5LTFbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXR5cG9ncmFwaHlbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1kaXNwbGF5LTFbX25nY29udGVudC0lQ09NUCVde2ZvbnQ6NDAwIDM0cHgvNDBweCBSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7bGV0dGVyLXNwYWNpbmc6bm9ybWFsO21hcmdpbjowIDAgNjRweH0ubWF0LWJvdHRvbS1zaGVldC1jb250YWluZXJbX25nY29udGVudC0lQ09NUCVde2ZvbnQ6NDAwIDE0cHgvMjBweCBSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7bGV0dGVyLXNwYWNpbmc6bm9ybWFsfS5tYXQtYnV0dG9uW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1yYWlzZWQtYnV0dG9uW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1pY29uLWJ1dHRvbltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtc3Ryb2tlZC1idXR0b25bX25nY29udGVudC0lQ09NUCVdLCAubWF0LWZsYXQtYnV0dG9uW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1mYWJbX25nY29udGVudC0lQ09NUCVdLCAubWF0LW1pbmktZmFiW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7Zm9udC1zaXplOjE0cHg7Zm9udC13ZWlnaHQ6NTAwfS5tYXQtYnV0dG9uLXRvZ2dsZVtfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmfS5tYXQtY2FyZFtfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmfS5tYXQtY2FyZC10aXRsZVtfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjI0cHg7Zm9udC13ZWlnaHQ6NTAwfS5tYXQtY2FyZC1oZWFkZXJbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1jYXJkLXRpdGxlW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MjBweH0ubWF0LWNhcmQtc3VidGl0bGVbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWNhcmQtY29udGVudFtfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjE0cHh9Lm1hdC1jaGVja2JveFtfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmfS5tYXQtY2hlY2tib3gtbGF5b3V0W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtY2hlY2tib3gtbGFiZWxbX25nY29udGVudC0lQ09NUCVde2xpbmUtaGVpZ2h0OjI0cHh9Lm1hdC1jaGlwW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MTRweDtmb250LXdlaWdodDo1MDB9Lm1hdC1jaGlwW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtY2hpcC10cmFpbGluZy1pY29uLm1hdC1pY29uW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1jaGlwW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtY2hpcC1yZW1vdmUubWF0LWljb25bX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToxOHB4fS5tYXQtdGFibGVbX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZn0ubWF0LWhlYWRlci1jZWxsW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MTJweDtmb250LXdlaWdodDo1MDB9Lm1hdC1jZWxsW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1mb290ZXItY2VsbFtfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjE0cHh9Lm1hdC1jYWxlbmRhcltfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmfS5tYXQtY2FsZW5kYXItYm9keVtfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjEzcHh9Lm1hdC1jYWxlbmRhci1ib2R5LWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1jYWxlbmRhci1wZXJpb2QtYnV0dG9uW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MTRweDtmb250LXdlaWdodDo1MDB9Lm1hdC1jYWxlbmRhci10YWJsZS1oZWFkZXJbX25nY29udGVudC0lQ09NUCVdICAgdGhbX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToxMXB4O2ZvbnQtd2VpZ2h0OjQwMH0ubWF0LWRpYWxvZy10aXRsZVtfbmdjb250ZW50LSVDT01QJV17Zm9udDo1MDAgMjBweC8zMnB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtsZXR0ZXItc3BhY2luZzpub3JtYWx9Lm1hdC1leHBhbnNpb24tcGFuZWwtaGVhZGVyW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7Zm9udC1zaXplOjE1cHg7Zm9udC13ZWlnaHQ6NDAwfS5tYXQtZXhwYW5zaW9uLXBhbmVsLWNvbnRlbnRbX25nY29udGVudC0lQ09NUCVde2ZvbnQ6NDAwIDE0cHgvMjBweCBSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7bGV0dGVyLXNwYWNpbmc6bm9ybWFsfS5tYXQtZm9ybS1maWVsZFtfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOmluaGVyaXQ7Zm9udC13ZWlnaHQ6NDAwO2xpbmUtaGVpZ2h0OjEuMTI1O2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtsZXR0ZXItc3BhY2luZzpub3JtYWx9Lm1hdC1mb3JtLWZpZWxkLXdyYXBwZXJbX25nY29udGVudC0lQ09NUCVde3BhZGRpbmctYm90dG9tOjEuMzQzNzVlbX0ubWF0LWZvcm0tZmllbGQtcHJlZml4W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaWNvbltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtZm9ybS1maWVsZC1zdWZmaXhbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pY29uW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MTUwJTtsaW5lLWhlaWdodDoxLjEyNX0ubWF0LWZvcm0tZmllbGQtcHJlZml4W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaWNvbi1idXR0b25bX25nY29udGVudC0lQ09NUCVdLCAubWF0LWZvcm0tZmllbGQtc3VmZml4W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaWNvbi1idXR0b25bX25nY29udGVudC0lQ09NUCVde2hlaWdodDoxLjVlbTt3aWR0aDoxLjVlbX0ubWF0LWZvcm0tZmllbGQtcHJlZml4W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaWNvbi1idXR0b25bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pY29uW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1mb3JtLWZpZWxkLXN1ZmZpeFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWljb24tYnV0dG9uW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaWNvbltfbmdjb250ZW50LSVDT01QJV17aGVpZ2h0OjEuMTI1ZW07bGluZS1oZWlnaHQ6MS4xMjV9Lm1hdC1mb3JtLWZpZWxkLWluZml4W19uZ2NvbnRlbnQtJUNPTVAlXXtwYWRkaW5nOi41ZW0gMDtib3JkZXItdG9wOi44NDM3NWVtIHNvbGlkIHRyYW5zcGFyZW50fS5tYXQtZm9ybS1maWVsZC1jYW4tZmxvYXQubWF0LWZvcm0tZmllbGQtc2hvdWxkLWZsb2F0W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtZm9ybS1maWVsZC1jYW4tZmxvYXRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pbnB1dC1zZXJ2ZXJbX25nY29udGVudC0lQ09NUCVdOmZvY3VzICsgLm1hdC1mb3JtLWZpZWxkLWxhYmVsLXdyYXBwZXJbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXt0cmFuc2Zvcm06dHJhbnNsYXRlWSgtMS4zNDM3NWVtKSBzY2FsZSgwLjc1KTt3aWR0aDoxMzMuMzMzMzMzMzMzMyV9Lm1hdC1mb3JtLWZpZWxkLWNhbi1mbG9hdFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWlucHV0LXNlcnZlcltsYWJlbF1bX25nY29udGVudC0lQ09NUCVdOm5vdCg6bGFiZWwtc2hvd24pICsgLm1hdC1mb3JtLWZpZWxkLWxhYmVsLXdyYXBwZXJbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXt0cmFuc2Zvcm06dHJhbnNsYXRlWSgtMS4zNDM3NGVtKSBzY2FsZSgwLjc1KTt3aWR0aDoxMzMuMzMzMzQzMzMzMyV9Lm1hdC1mb3JtLWZpZWxkLWxhYmVsLXdyYXBwZXJbX25nY29udGVudC0lQ09NUCVde3RvcDotMC44NDM3NWVtO3BhZGRpbmctdG9wOi44NDM3NWVtfS5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17dG9wOjEuMzQzNzVlbX0ubWF0LWZvcm0tZmllbGQtdW5kZXJsaW5lW19uZ2NvbnRlbnQtJUNPTVAlXXtib3R0b206MS4zNDM3NWVtfS5tYXQtZm9ybS1maWVsZC1zdWJzY3JpcHQtd3JhcHBlcltfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjc1JTttYXJnaW4tdG9wOi42NjY2NjY2NjY3ZW07dG9wOmNhbGMoMTAwJSAtIDEuNzkxNjY2NjY2N2VtKX0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1sZWdhY3lbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLXdyYXBwZXJbX25nY29udGVudC0lQ09NUCVde3BhZGRpbmctYm90dG9tOjEuMjVlbX0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1sZWdhY3lbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWluZml4W19uZ2NvbnRlbnQtJUNPTVAlXXtwYWRkaW5nOi40Mzc1ZW0gMH0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1sZWdhY3kubWF0LWZvcm0tZmllbGQtY2FuLWZsb2F0Lm1hdC1mb3JtLWZpZWxkLXNob3VsZC1mbG9hdFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1sZWdhY3kubWF0LWZvcm0tZmllbGQtY2FuLWZsb2F0W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaW5wdXQtc2VydmVyW19uZ2NvbnRlbnQtJUNPTVAlXTpmb2N1cyArIC5tYXQtZm9ybS1maWVsZC1sYWJlbC13cmFwcGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17dHJhbnNmb3JtOnRyYW5zbGF0ZVkoLTEuMjgxMjVlbSkgc2NhbGUoMC43NSkgcGVyc3BlY3RpdmUoMTAwcHgpIHRyYW5zbGF0ZVooMC4wMDFweCk7LW1zLXRyYW5zZm9ybTp0cmFuc2xhdGVZKC0xLjI4MTI1ZW0pIHNjYWxlKDAuNzUpO3dpZHRoOjEzMy4zMzMzMzMzMzMzJX0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1sZWdhY3kubWF0LWZvcm0tZmllbGQtY2FuLWZsb2F0W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1hdXRvZmlsbC1jb250cm9sW19uZ2NvbnRlbnQtJUNPTVAlXTotd2Via2l0LWF1dG9maWxsICsgLm1hdC1mb3JtLWZpZWxkLWxhYmVsLXdyYXBwZXJbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXt0cmFuc2Zvcm06dHJhbnNsYXRlWSgtMS4yODEyNWVtKSBzY2FsZSgwLjc1KSBwZXJzcGVjdGl2ZSgxMDBweCkgdHJhbnNsYXRlWigwLjAwMTAxcHgpOy1tcy10cmFuc2Zvcm06dHJhbnNsYXRlWSgtMS4yODEyNGVtKSBzY2FsZSgwLjc1KTt3aWR0aDoxMzMuMzMzMzQzMzMzMyV9Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtbGVnYWN5Lm1hdC1mb3JtLWZpZWxkLWNhbi1mbG9hdFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWlucHV0LXNlcnZlcltsYWJlbF1bX25nY29udGVudC0lQ09NUCVdOm5vdCg6bGFiZWwtc2hvd24pICsgLm1hdC1mb3JtLWZpZWxkLWxhYmVsLXdyYXBwZXJbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXt0cmFuc2Zvcm06dHJhbnNsYXRlWSgtMS4yODEyNWVtKSBzY2FsZSgwLjc1KSBwZXJzcGVjdGl2ZSgxMDBweCkgdHJhbnNsYXRlWigwLjAwMTAycHgpOy1tcy10cmFuc2Zvcm06dHJhbnNsYXRlWSgtMS4yODEyM2VtKSBzY2FsZSgwLjc1KTt3aWR0aDoxMzMuMzMzMzUzMzMzMyV9Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtbGVnYWN5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17dG9wOjEuMjgxMjVlbX0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1sZWdhY3lbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLXVuZGVybGluZVtfbmdjb250ZW50LSVDT01QJV17Ym90dG9tOjEuMjVlbX0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1sZWdhY3lbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLXN1YnNjcmlwdC13cmFwcGVyW19uZ2NvbnRlbnQtJUNPTVAlXXttYXJnaW4tdG9wOi41NDE2NjY2NjY3ZW07dG9wOmNhbGMoMTAwJSAtIDEuNjY2NjY2NjY2N2VtKX1AbWVkaWEgcHJpbnR7Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtbGVnYWN5Lm1hdC1mb3JtLWZpZWxkLWNhbi1mbG9hdC5tYXQtZm9ybS1maWVsZC1zaG91bGQtZmxvYXRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtbGVnYWN5Lm1hdC1mb3JtLWZpZWxkLWNhbi1mbG9hdFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWlucHV0LXNlcnZlcltfbmdjb250ZW50LSVDT01QJV06Zm9jdXMgKyAubWF0LWZvcm0tZmllbGQtbGFiZWwtd3JhcHBlcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVde3RyYW5zZm9ybTp0cmFuc2xhdGVZKC0xLjI4MTIyZW0pIHNjYWxlKDAuNzUpfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWxlZ2FjeS5tYXQtZm9ybS1maWVsZC1jYW4tZmxvYXRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWF1dG9maWxsLWNvbnRyb2xbX25nY29udGVudC0lQ09NUCVdOi13ZWJraXQtYXV0b2ZpbGwgKyAubWF0LWZvcm0tZmllbGQtbGFiZWwtd3JhcHBlcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVde3RyYW5zZm9ybTp0cmFuc2xhdGVZKC0xLjI4MTIxZW0pIHNjYWxlKDAuNzUpfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWxlZ2FjeS5tYXQtZm9ybS1maWVsZC1jYW4tZmxvYXRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pbnB1dC1zZXJ2ZXJbbGFiZWxdW19uZ2NvbnRlbnQtJUNPTVAlXTpub3QoOmxhYmVsLXNob3duKSArIC5tYXQtZm9ybS1maWVsZC1sYWJlbC13cmFwcGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17dHJhbnNmb3JtOnRyYW5zbGF0ZVkoLTEuMjgxMmVtKSBzY2FsZSgwLjc1KX19Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtZmlsbFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtaW5maXhbX25nY29udGVudC0lQ09NUCVde3BhZGRpbmc6LjI1ZW0gMCAuNzVlbSAwfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWZpbGxbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXt0b3A6MS4wOTM3NWVtO21hcmdpbi10b3A6LTAuNWVtfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWZpbGwubWF0LWZvcm0tZmllbGQtY2FuLWZsb2F0Lm1hdC1mb3JtLWZpZWxkLXNob3VsZC1mbG9hdFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1maWxsLm1hdC1mb3JtLWZpZWxkLWNhbi1mbG9hdFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWlucHV0LXNlcnZlcltfbmdjb250ZW50LSVDT01QJV06Zm9jdXMgKyAubWF0LWZvcm0tZmllbGQtbGFiZWwtd3JhcHBlcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVde3RyYW5zZm9ybTp0cmFuc2xhdGVZKC0wLjU5Mzc1ZW0pIHNjYWxlKDAuNzUpO3dpZHRoOjEzMy4zMzMzMzMzMzMzJX0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1maWxsLm1hdC1mb3JtLWZpZWxkLWNhbi1mbG9hdFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWlucHV0LXNlcnZlcltsYWJlbF1bX25nY29udGVudC0lQ09NUCVdOm5vdCg6bGFiZWwtc2hvd24pICsgLm1hdC1mb3JtLWZpZWxkLWxhYmVsLXdyYXBwZXJbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXt0cmFuc2Zvcm06dHJhbnNsYXRlWSgtMC41OTM3NGVtKSBzY2FsZSgwLjc1KTt3aWR0aDoxMzMuMzMzMzQzMzMzMyV9Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2Utb3V0bGluZVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtaW5maXhbX25nY29udGVudC0lQ09NUCVde3BhZGRpbmc6MWVtIDAgMWVtIDB9Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2Utb3V0bGluZVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVde3RvcDoxLjg0Mzc1ZW07bWFyZ2luLXRvcDotMC4yNWVtfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLW91dGxpbmUubWF0LWZvcm0tZmllbGQtY2FuLWZsb2F0Lm1hdC1mb3JtLWZpZWxkLXNob3VsZC1mbG9hdFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1vdXRsaW5lLm1hdC1mb3JtLWZpZWxkLWNhbi1mbG9hdFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWlucHV0LXNlcnZlcltfbmdjb250ZW50LSVDT01QJV06Zm9jdXMgKyAubWF0LWZvcm0tZmllbGQtbGFiZWwtd3JhcHBlcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVde3RyYW5zZm9ybTp0cmFuc2xhdGVZKC0xLjU5Mzc1ZW0pIHNjYWxlKDAuNzUpO3dpZHRoOjEzMy4zMzMzMzMzMzMzJX0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1vdXRsaW5lLm1hdC1mb3JtLWZpZWxkLWNhbi1mbG9hdFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWlucHV0LXNlcnZlcltsYWJlbF1bX25nY29udGVudC0lQ09NUCVdOm5vdCg6bGFiZWwtc2hvd24pICsgLm1hdC1mb3JtLWZpZWxkLWxhYmVsLXdyYXBwZXJbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXt0cmFuc2Zvcm06dHJhbnNsYXRlWSgtMS41OTM3NGVtKSBzY2FsZSgwLjc1KTt3aWR0aDoxMzMuMzMzMzQzMzMzMyV9Lm1hdC1ncmlkLXRpbGUtaGVhZGVyW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1ncmlkLXRpbGUtZm9vdGVyW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MTRweH0ubWF0LWdyaWQtdGlsZS1oZWFkZXJbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saW5lW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1ncmlkLXRpbGUtZm9vdGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGluZVtfbmdjb250ZW50LSVDT01QJV17d2hpdGUtc3BhY2U6bm93cmFwO292ZXJmbG93OmhpZGRlbjt0ZXh0LW92ZXJmbG93OmVsbGlwc2lzO2Rpc3BsYXk6YmxvY2s7Ym94LXNpemluZzpib3JkZXItYm94fS5tYXQtZ3JpZC10aWxlLWhlYWRlcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpbmVbX25nY29udGVudC0lQ09NUCVdOm50aC1jaGlsZChuKzIpLCAubWF0LWdyaWQtdGlsZS1mb290ZXJbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saW5lW19uZ2NvbnRlbnQtJUNPTVAlXTpudGgtY2hpbGQobisyKXtmb250LXNpemU6MTJweH1pbnB1dC5tYXQtaW5wdXQtZWxlbWVudFtfbmdjb250ZW50LSVDT01QJV17bWFyZ2luLXRvcDotMC4wNjI1ZW19Lm1hdC1tZW51LWl0ZW1bX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtmb250LXNpemU6MTRweDtmb250LXdlaWdodDo0MDB9Lm1hdC1wYWdpbmF0b3JbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXBhZ2luYXRvci1wYWdlLXNpemVbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1zZWxlY3QtdHJpZ2dlcltfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2ZvbnQtc2l6ZToxMnB4fS5tYXQtcmFkaW8tYnV0dG9uW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWZ9Lm1hdC1zZWxlY3RbX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZn0ubWF0LXNlbGVjdC10cmlnZ2VyW19uZ2NvbnRlbnQtJUNPTVAlXXtoZWlnaHQ6MS4xMjVlbX0ubWF0LXNsaWRlLXRvZ2dsZS1jb250ZW50W19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWZ9Lm1hdC1zbGlkZXItdGh1bWItbGFiZWwtdGV4dFtfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2ZvbnQtc2l6ZToxMnB4O2ZvbnQtd2VpZ2h0OjUwMH0ubWF0LXN0ZXBwZXItdmVydGljYWxbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXN0ZXBwZXItaG9yaXpvbnRhbFtfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmfS5tYXQtc3RlcC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjE0cHg7Zm9udC13ZWlnaHQ6NDAwfS5tYXQtc3RlcC1zdWItbGFiZWwtZXJyb3JbX25nY29udGVudC0lQ09NUCVde2ZvbnQtd2VpZ2h0Om5vcm1hbH0ubWF0LXN0ZXAtbGFiZWwtZXJyb3JbX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToxNHB4fS5tYXQtc3RlcC1sYWJlbC1zZWxlY3RlZFtfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjE0cHg7Zm9udC13ZWlnaHQ6NTAwfS5tYXQtdGFiLWdyb3VwW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWZ9Lm1hdC10YWItbGFiZWxbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXRhYi1saW5rW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7Zm9udC1zaXplOjE0cHg7Zm9udC13ZWlnaHQ6NTAwfS5tYXQtdG9vbGJhcltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdG9vbGJhcltfbmdjb250ZW50LSVDT01QJV0gICBoMVtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdG9vbGJhcltfbmdjb250ZW50LSVDT01QJV0gICBoMltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdG9vbGJhcltfbmdjb250ZW50LSVDT01QJV0gICBoM1tfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdG9vbGJhcltfbmdjb250ZW50LSVDT01QJV0gICBoNFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdG9vbGJhcltfbmdjb250ZW50LSVDT01QJV0gICBoNVtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdG9vbGJhcltfbmdjb250ZW50LSVDT01QJV0gICBoNltfbmdjb250ZW50LSVDT01QJV17Zm9udDo1MDAgMjBweC8zMnB4IFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtsZXR0ZXItc3BhY2luZzpub3JtYWw7bWFyZ2luOjB9Lm1hdC10b29sdGlwW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LWZhbWlseTpSb2JvdG8sICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7Zm9udC1zaXplOjEwcHg7cGFkZGluZy10b3A6NnB4O3BhZGRpbmctYm90dG9tOjZweH0ubWF0LXRvb2x0aXAtaGFuZHNldFtfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjE0cHg7cGFkZGluZy10b3A6OHB4O3BhZGRpbmctYm90dG9tOjhweH0ubWF0LWxpc3QtaXRlbVtfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmfS5tYXQtbGlzdC1vcHRpb25bX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZn0ubWF0LWxpc3QtYmFzZVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpc3QtaXRlbVtfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjE2cHh9Lm1hdC1saXN0LWJhc2VbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saXN0LWl0ZW1bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saW5lW19uZ2NvbnRlbnQtJUNPTVAlXXt3aGl0ZS1zcGFjZTpub3dyYXA7b3ZlcmZsb3c6aGlkZGVuO3RleHQtb3ZlcmZsb3c6ZWxsaXBzaXM7ZGlzcGxheTpibG9jaztib3gtc2l6aW5nOmJvcmRlci1ib3h9Lm1hdC1saXN0LWJhc2VbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saXN0LWl0ZW1bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saW5lW19uZ2NvbnRlbnQtJUNPTVAlXTpudGgtY2hpbGQobisyKXtmb250LXNpemU6MTRweH0ubWF0LWxpc3QtYmFzZVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpc3Qtb3B0aW9uW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250LXNpemU6MTZweH0ubWF0LWxpc3QtYmFzZVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpc3Qtb3B0aW9uW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGluZVtfbmdjb250ZW50LSVDT01QJV17d2hpdGUtc3BhY2U6bm93cmFwO292ZXJmbG93OmhpZGRlbjt0ZXh0LW92ZXJmbG93OmVsbGlwc2lzO2Rpc3BsYXk6YmxvY2s7Ym94LXNpemluZzpib3JkZXItYm94fS5tYXQtbGlzdC1iYXNlW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGlzdC1vcHRpb25bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saW5lW19uZ2NvbnRlbnQtJUNPTVAlXTpudGgtY2hpbGQobisyKXtmb250LXNpemU6MTRweH0ubWF0LWxpc3QtYmFzZVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXN1YmhlYWRlcltfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2ZvbnQtc2l6ZToxNHB4O2ZvbnQtd2VpZ2h0OjUwMH0ubWF0LWxpc3QtYmFzZVtkZW5zZV1bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saXN0LWl0ZW1bX25nY29udGVudC0lQ09NUCVde2ZvbnQtc2l6ZToxMnB4fS5tYXQtbGlzdC1iYXNlW2RlbnNlXVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpc3QtaXRlbVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpbmVbX25nY29udGVudC0lQ09NUCVde3doaXRlLXNwYWNlOm5vd3JhcDtvdmVyZmxvdzpoaWRkZW47dGV4dC1vdmVyZmxvdzplbGxpcHNpcztkaXNwbGF5OmJsb2NrO2JveC1zaXppbmc6Ym9yZGVyLWJveH0ubWF0LWxpc3QtYmFzZVtkZW5zZV1bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saXN0LWl0ZW1bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saW5lW19uZ2NvbnRlbnQtJUNPTVAlXTpudGgtY2hpbGQobisyKXtmb250LXNpemU6MTJweH0ubWF0LWxpc3QtYmFzZVtkZW5zZV1bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saXN0LW9wdGlvbltfbmdjb250ZW50LSVDT01QJV17Zm9udC1zaXplOjEycHh9Lm1hdC1saXN0LWJhc2VbZGVuc2VdW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGlzdC1vcHRpb25bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saW5lW19uZ2NvbnRlbnQtJUNPTVAlXXt3aGl0ZS1zcGFjZTpub3dyYXA7b3ZlcmZsb3c6aGlkZGVuO3RleHQtb3ZlcmZsb3c6ZWxsaXBzaXM7ZGlzcGxheTpibG9jaztib3gtc2l6aW5nOmJvcmRlci1ib3h9Lm1hdC1saXN0LWJhc2VbZGVuc2VdW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGlzdC1vcHRpb25bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saW5lW19uZ2NvbnRlbnQtJUNPTVAlXTpudGgtY2hpbGQobisyKXtmb250LXNpemU6MTJweH0ubWF0LWxpc3QtYmFzZVtkZW5zZV1bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1zdWJoZWFkZXJbX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtmb250LXNpemU6MTJweDtmb250LXdlaWdodDo1MDB9Lm1hdC1vcHRpb25bX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjtmb250LXNpemU6MTZweH0ubWF0LW9wdGdyb3VwLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXtmb250OjUwMCAxNHB4LzI0cHggUm9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2xldHRlci1zcGFjaW5nOm5vcm1hbH0ubWF0LXNpbXBsZS1zbmFja2Jhcltfbmdjb250ZW50LSVDT01QJV17Zm9udC1mYW1pbHk6Um9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmO2ZvbnQtc2l6ZToxNHB4fS5tYXQtc2ltcGxlLXNuYWNrYmFyLWFjdGlvbltfbmdjb250ZW50LSVDT01QJV17bGluZS1oZWlnaHQ6MTtmb250LWZhbWlseTppbmhlcml0O2ZvbnQtc2l6ZTppbmhlcml0O2ZvbnQtd2VpZ2h0OjUwMH0ubWF0LXRyZWVbX25nY29udGVudC0lQ09NUCVde2ZvbnQtZmFtaWx5OlJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZn0ubWF0LXRyZWUtbm9kZVtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtbmVzdGVkLXRyZWUtbm9kZVtfbmdjb250ZW50LSVDT01QJV17Zm9udC13ZWlnaHQ6NDAwO2ZvbnQtc2l6ZToxNHB4fS5tYXQtcmlwcGxlW19uZ2NvbnRlbnQtJUNPTVAlXXtvdmVyZmxvdzpoaWRkZW47cG9zaXRpb246cmVsYXRpdmV9Lm1hdC1yaXBwbGVbX25nY29udGVudC0lQ09NUCVdOm5vdCg6ZW1wdHkpe3RyYW5zZm9ybTp0cmFuc2xhdGVaKDApfS5tYXQtcmlwcGxlLm1hdC1yaXBwbGUtdW5ib3VuZGVkW19uZ2NvbnRlbnQtJUNPTVAlXXtvdmVyZmxvdzp2aXNpYmxlfS5tYXQtcmlwcGxlLWVsZW1lbnRbX25nY29udGVudC0lQ09NUCVde3Bvc2l0aW9uOmFic29sdXRlO2JvcmRlci1yYWRpdXM6NTAlO3BvaW50ZXItZXZlbnRzOm5vbmU7dHJhbnNpdGlvbjpvcGFjaXR5LHRyYW5zZm9ybSAwbXMgY3ViaWMtYmV6aWVyKDAsIDAsIDAuMiwgMSk7dHJhbnNmb3JtOnNjYWxlKDApfS5jZGstaGlnaC1jb250cmFzdC1hY3RpdmVbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1yaXBwbGUtZWxlbWVudFtfbmdjb250ZW50LSVDT01QJV17ZGlzcGxheTpub25lfS5jZGstdmlzdWFsbHktaGlkZGVuW19uZ2NvbnRlbnQtJUNPTVAlXXtib3JkZXI6MDtjbGlwOnJlY3QoMCAwIDAgMCk7aGVpZ2h0OjFweDttYXJnaW46LTFweDtvdmVyZmxvdzpoaWRkZW47cGFkZGluZzowO3Bvc2l0aW9uOmFic29sdXRlO3dpZHRoOjFweDtvdXRsaW5lOjA7LXdlYmtpdC1hcHBlYXJhbmNlOm5vbmU7LW1vei1hcHBlYXJhbmNlOm5vbmV9LmNkay1vdmVybGF5LWNvbnRhaW5lcltfbmdjb250ZW50LSVDT01QJV0sIC5jZGstZ2xvYmFsLW92ZXJsYXktd3JhcHBlcltfbmdjb250ZW50LSVDT01QJV17cG9pbnRlci1ldmVudHM6bm9uZTt0b3A6MDtsZWZ0OjA7aGVpZ2h0OjEwMCU7d2lkdGg6MTAwJX0uY2RrLW92ZXJsYXktY29udGFpbmVyW19uZ2NvbnRlbnQtJUNPTVAlXXtwb3NpdGlvbjpmaXhlZDt6LWluZGV4OjEwMDB9LmNkay1vdmVybGF5LWNvbnRhaW5lcltfbmdjb250ZW50LSVDT01QJV06ZW1wdHl7ZGlzcGxheTpub25lfS5jZGstZ2xvYmFsLW92ZXJsYXktd3JhcHBlcltfbmdjb250ZW50LSVDT01QJV17ZGlzcGxheTpmbGV4O3Bvc2l0aW9uOmFic29sdXRlO3otaW5kZXg6MTAwMH0uY2RrLW92ZXJsYXktcGFuZVtfbmdjb250ZW50LSVDT01QJV17cG9zaXRpb246YWJzb2x1dGU7cG9pbnRlci1ldmVudHM6YXV0bztib3gtc2l6aW5nOmJvcmRlci1ib3g7ei1pbmRleDoxMDAwO2Rpc3BsYXk6ZmxleDttYXgtd2lkdGg6MTAwJTttYXgtaGVpZ2h0OjEwMCV9LmNkay1vdmVybGF5LWJhY2tkcm9wW19uZ2NvbnRlbnQtJUNPTVAlXXtwb3NpdGlvbjphYnNvbHV0ZTt0b3A6MDtib3R0b206MDtsZWZ0OjA7cmlnaHQ6MDt6LWluZGV4OjEwMDA7cG9pbnRlci1ldmVudHM6YXV0bzstd2Via2l0LXRhcC1oaWdobGlnaHQtY29sb3I6dHJhbnNwYXJlbnQ7dHJhbnNpdGlvbjpvcGFjaXR5IDQwMG1zIGN1YmljLWJlemllcigwLjI1LCAwLjgsIDAuMjUsIDEpO29wYWNpdHk6MH0uY2RrLW92ZXJsYXktYmFja2Ryb3AuY2RrLW92ZXJsYXktYmFja2Ryb3Atc2hvd2luZ1tfbmdjb250ZW50LSVDT01QJV17b3BhY2l0eToxfUBtZWRpYSBzY3JlZW4gYW5kICgtbXMtaGlnaC1jb250cmFzdDogYWN0aXZlKXsuY2RrLW92ZXJsYXktYmFja2Ryb3AuY2RrLW92ZXJsYXktYmFja2Ryb3Atc2hvd2luZ1tfbmdjb250ZW50LSVDT01QJV17b3BhY2l0eTouNn19LmNkay1vdmVybGF5LWRhcmstYmFja2Ryb3BbX25nY29udGVudC0lQ09NUCVde2JhY2tncm91bmQ6cmdiYSgwLDAsMCwuMzIpfS5jZGstb3ZlcmxheS10cmFuc3BhcmVudC1iYWNrZHJvcFtfbmdjb250ZW50LSVDT01QJV0sIC5jZGstb3ZlcmxheS10cmFuc3BhcmVudC1iYWNrZHJvcC5jZGstb3ZlcmxheS1iYWNrZHJvcC1zaG93aW5nW19uZ2NvbnRlbnQtJUNPTVAlXXtvcGFjaXR5OjB9LmNkay1vdmVybGF5LWNvbm5lY3RlZC1wb3NpdGlvbi1ib3VuZGluZy1ib3hbX25nY29udGVudC0lQ09NUCVde3Bvc2l0aW9uOmFic29sdXRlO3otaW5kZXg6MTAwMDtkaXNwbGF5OmZsZXg7ZmxleC1kaXJlY3Rpb246Y29sdW1uO21pbi13aWR0aDoxcHg7bWluLWhlaWdodDoxcHh9LmNkay1nbG9iYWwtc2Nyb2xsYmxvY2tbX25nY29udGVudC0lQ09NUCVde3Bvc2l0aW9uOmZpeGVkO3dpZHRoOjEwMCU7b3ZlcmZsb3cteTpzY3JvbGx9QGtleWZyYW1lcyBjZGstdGV4dC1maWVsZC1hdXRvZmlsbC1zdGFydHt9QGtleWZyYW1lcyBjZGstdGV4dC1maWVsZC1hdXRvZmlsbC1lbmR7fS5jZGstdGV4dC1maWVsZC1hdXRvZmlsbC1tb25pdG9yZWRbX25nY29udGVudC0lQ09NUCVdOi13ZWJraXQtYXV0b2ZpbGx7YW5pbWF0aW9uOmNkay10ZXh0LWZpZWxkLWF1dG9maWxsLXN0YXJ0IDBzIDFtc30uY2RrLXRleHQtZmllbGQtYXV0b2ZpbGwtbW9uaXRvcmVkW19uZ2NvbnRlbnQtJUNPTVAlXTpub3QoOi13ZWJraXQtYXV0b2ZpbGwpe2FuaW1hdGlvbjpjZGstdGV4dC1maWVsZC1hdXRvZmlsbC1lbmQgMHMgMW1zfXRleHRhcmVhLmNkay10ZXh0YXJlYS1hdXRvc2l6ZVtfbmdjb250ZW50LSVDT01QJV17cmVzaXplOm5vbmV9dGV4dGFyZWEuY2RrLXRleHRhcmVhLWF1dG9zaXplLW1lYXN1cmluZ1tfbmdjb250ZW50LSVDT01QJV17cGFkZGluZzoycHggMCAhaW1wb3J0YW50O2JveC1zaXppbmc6Y29udGVudC1ib3ggIWltcG9ydGFudDtoZWlnaHQ6YXV0byAhaW1wb3J0YW50O292ZXJmbG93OmhpZGRlbiAhaW1wb3J0YW50fXRleHRhcmVhLmNkay10ZXh0YXJlYS1hdXRvc2l6ZS1tZWFzdXJpbmctZmlyZWZveFtfbmdjb250ZW50LSVDT01QJV17cGFkZGluZzoycHggMCAhaW1wb3J0YW50O2JveC1zaXppbmc6Y29udGVudC1ib3ggIWltcG9ydGFudDtoZWlnaHQ6MCAhaW1wb3J0YW50fS5tYXQtZm9jdXMtaW5kaWNhdG9yW19uZ2NvbnRlbnQtJUNPTVAlXXtwb3NpdGlvbjpyZWxhdGl2ZX0ubWF0LW1kYy1mb2N1cy1pbmRpY2F0b3JbX25nY29udGVudC0lQ09NUCVde3Bvc2l0aW9uOnJlbGF0aXZlfS5tYXQtcmlwcGxlLWVsZW1lbnRbX25nY29udGVudC0lQ09NUCVde2JhY2tncm91bmQtY29sb3I6cmdiYSgwLDAsMCwuMSl9Lm1hdC1vcHRpb25bX25nY29udGVudC0lQ09NUCVde2NvbG9yOiMyMTIxMjF9Lm1hdC1vcHRpb25bX25nY29udGVudC0lQ09NUCVdOmhvdmVyOm5vdCgubWF0LW9wdGlvbi1kaXNhYmxlZCksIC5tYXQtb3B0aW9uW19uZ2NvbnRlbnQtJUNPTVAlXTpmb2N1czpub3QoLm1hdC1vcHRpb24tZGlzYWJsZWQpe2JhY2tncm91bmQ6cmdiYSgwLDAsMCwuMDQpfS5tYXQtb3B0aW9uLm1hdC1zZWxlY3RlZFtfbmdjb250ZW50LSVDT01QJV06bm90KC5tYXQtb3B0aW9uLW11bHRpcGxlKTpub3QoLm1hdC1vcHRpb24tZGlzYWJsZWQpe2JhY2tncm91bmQ6cmdiYSgwLDAsMCwuMDQpfS5tYXQtb3B0aW9uLm1hdC1hY3RpdmVbX25nY29udGVudC0lQ09NUCVde2JhY2tncm91bmQ6cmdiYSgwLDAsMCwuMDQpO2NvbG9yOiMyMTIxMjF9Lm1hdC1vcHRpb24ubWF0LW9wdGlvbi1kaXNhYmxlZFtfbmdjb250ZW50LSVDT01QJV17Y29sb3I6cmdiYSgwLDAsMCwuMzgpfS5tYXQtcHJpbWFyeVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LW9wdGlvbi5tYXQtc2VsZWN0ZWRbX25nY29udGVudC0lQ09NUCVdOm5vdCgubWF0LW9wdGlvbi1kaXNhYmxlZCl7Y29sb3I6I2Y1N2MwMH0ubWF0LWFjY2VudFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LW9wdGlvbi5tYXQtc2VsZWN0ZWRbX25nY29udGVudC0lQ09NUCVdOm5vdCgubWF0LW9wdGlvbi1kaXNhYmxlZCl7Y29sb3I6I2ZmOTgwMH0ubWF0LXdhcm5bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1vcHRpb24ubWF0LXNlbGVjdGVkW19uZ2NvbnRlbnQtJUNPTVAlXTpub3QoLm1hdC1vcHRpb24tZGlzYWJsZWQpe2NvbG9yOiNmNDQzMzZ9Lm1hdC1vcHRncm91cC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17Y29sb3I6IzYxNjE2MX0ubWF0LW9wdGdyb3VwLWRpc2FibGVkW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtb3B0Z3JvdXAtbGFiZWxbX25nY29udGVudC0lQ09NUCVde2NvbG9yOnJnYmEoMCwwLDAsLjM4KX0ubWF0LXBzZXVkby1jaGVja2JveFtfbmdjb250ZW50LSVDT01QJV17Y29sb3I6IzYxNjE2MX0ubWF0LXBzZXVkby1jaGVja2JveFtfbmdjb250ZW50LSVDT01QJV06OmFmdGVye2NvbG9yOiNmYWZhZmF9Lm1hdC1wc2V1ZG8tY2hlY2tib3gtZGlzYWJsZWRbX25nY29udGVudC0lQ09NUCVde2NvbG9yOiNiMGIwYjB9Lm1hdC1wcmltYXJ5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtcHNldWRvLWNoZWNrYm94LWNoZWNrZWRbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXByaW1hcnlbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1wc2V1ZG8tY2hlY2tib3gtaW5kZXRlcm1pbmF0ZVtfbmdjb250ZW50LSVDT01QJV17YmFja2dyb3VuZDojZjU3YzAwfS5tYXQtcHNldWRvLWNoZWNrYm94LWNoZWNrZWRbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXBzZXVkby1jaGVja2JveC1pbmRldGVybWluYXRlW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1hY2NlbnRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1wc2V1ZG8tY2hlY2tib3gtY2hlY2tlZFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtYWNjZW50W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtcHNldWRvLWNoZWNrYm94LWluZGV0ZXJtaW5hdGVbX25nY29udGVudC0lQ09NUCVde2JhY2tncm91bmQ6I2ZmOTgwMH0ubWF0LXdhcm5bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1wc2V1ZG8tY2hlY2tib3gtY2hlY2tlZFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtd2Fybltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXBzZXVkby1jaGVja2JveC1pbmRldGVybWluYXRlW19uZ2NvbnRlbnQtJUNPTVAlXXtiYWNrZ3JvdW5kOiNmNDQzMzZ9Lm1hdC1wc2V1ZG8tY2hlY2tib3gtY2hlY2tlZC5tYXQtcHNldWRvLWNoZWNrYm94LWRpc2FibGVkW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1wc2V1ZG8tY2hlY2tib3gtaW5kZXRlcm1pbmF0ZS5tYXQtcHNldWRvLWNoZWNrYm94LWRpc2FibGVkW19uZ2NvbnRlbnQtJUNPTVAlXXtiYWNrZ3JvdW5kOiNiMGIwYjB9Lm1hdC1hcHAtYmFja2dyb3VuZFtfbmdjb250ZW50LSVDT01QJV17YmFja2dyb3VuZC1jb2xvcjojZmFmYWZhO2NvbG9yOiMyMTIxMjF9Lm1hdC1lbGV2YXRpb24tejBbX25nY29udGVudC0lQ09NUCVde2JveC1zaGFkb3c6MHB4IDBweCAwcHggMHB4IHJnYmEoMCwgMCwgMCwgMC4yKSwwcHggMHB4IDBweCAwcHggcmdiYSgwLCAwLCAwLCAwLjE0KSwwcHggMHB4IDBweCAwcHggcmdiYSgwLCAwLCAwLCAwLjEyKX0ubWF0LWVsZXZhdGlvbi16MVtfbmdjb250ZW50LSVDT01QJV17Ym94LXNoYWRvdzowcHggMnB4IDFweCAtMXB4IHJnYmEoMCwgMCwgMCwgMC4yKSwwcHggMXB4IDFweCAwcHggcmdiYSgwLCAwLCAwLCAwLjE0KSwwcHggMXB4IDNweCAwcHggcmdiYSgwLCAwLCAwLCAwLjEyKX0ubWF0LWVsZXZhdGlvbi16Mltfbmdjb250ZW50LSVDT01QJV17Ym94LXNoYWRvdzowcHggM3B4IDFweCAtMnB4IHJnYmEoMCwgMCwgMCwgMC4yKSwwcHggMnB4IDJweCAwcHggcmdiYSgwLCAwLCAwLCAwLjE0KSwwcHggMXB4IDVweCAwcHggcmdiYSgwLCAwLCAwLCAwLjEyKX0ubWF0LWVsZXZhdGlvbi16M1tfbmdjb250ZW50LSVDT01QJV17Ym94LXNoYWRvdzowcHggM3B4IDNweCAtMnB4IHJnYmEoMCwgMCwgMCwgMC4yKSwwcHggM3B4IDRweCAwcHggcmdiYSgwLCAwLCAwLCAwLjE0KSwwcHggMXB4IDhweCAwcHggcmdiYSgwLCAwLCAwLCAwLjEyKX0ubWF0LWVsZXZhdGlvbi16NFtfbmdjb250ZW50LSVDT01QJV17Ym94LXNoYWRvdzowcHggMnB4IDRweCAtMXB4IHJnYmEoMCwgMCwgMCwgMC4yKSwwcHggNHB4IDVweCAwcHggcmdiYSgwLCAwLCAwLCAwLjE0KSwwcHggMXB4IDEwcHggMHB4IHJnYmEoMCwgMCwgMCwgMC4xMil9Lm1hdC1lbGV2YXRpb24tejVbX25nY29udGVudC0lQ09NUCVde2JveC1zaGFkb3c6MHB4IDNweCA1cHggLTFweCByZ2JhKDAsIDAsIDAsIDAuMiksMHB4IDVweCA4cHggMHB4IHJnYmEoMCwgMCwgMCwgMC4xNCksMHB4IDFweCAxNHB4IDBweCByZ2JhKDAsIDAsIDAsIDAuMTIpfS5tYXQtZWxldmF0aW9uLXo2W19uZ2NvbnRlbnQtJUNPTVAlXXtib3gtc2hhZG93OjBweCAzcHggNXB4IC0xcHggcmdiYSgwLCAwLCAwLCAwLjIpLDBweCA2cHggMTBweCAwcHggcmdiYSgwLCAwLCAwLCAwLjE0KSwwcHggMXB4IDE4cHggMHB4IHJnYmEoMCwgMCwgMCwgMC4xMil9Lm1hdC1lbGV2YXRpb24tejdbX25nY29udGVudC0lQ09NUCVde2JveC1zaGFkb3c6MHB4IDRweCA1cHggLTJweCByZ2JhKDAsIDAsIDAsIDAuMiksMHB4IDdweCAxMHB4IDFweCByZ2JhKDAsIDAsIDAsIDAuMTQpLDBweCAycHggMTZweCAxcHggcmdiYSgwLCAwLCAwLCAwLjEyKX0ubWF0LWVsZXZhdGlvbi16OFtfbmdjb250ZW50LSVDT01QJV17Ym94LXNoYWRvdzowcHggNXB4IDVweCAtM3B4IHJnYmEoMCwgMCwgMCwgMC4yKSwwcHggOHB4IDEwcHggMXB4IHJnYmEoMCwgMCwgMCwgMC4xNCksMHB4IDNweCAxNHB4IDJweCByZ2JhKDAsIDAsIDAsIDAuMTIpfS5tYXQtZWxldmF0aW9uLXo5W19uZ2NvbnRlbnQtJUNPTVAlXXtib3gtc2hhZG93OjBweCA1cHggNnB4IC0zcHggcmdiYSgwLCAwLCAwLCAwLjIpLDBweCA5cHggMTJweCAxcHggcmdiYSgwLCAwLCAwLCAwLjE0KSwwcHggM3B4IDE2cHggMnB4IHJnYmEoMCwgMCwgMCwgMC4xMil9Lm1hdC1lbGV2YXRpb24tejEwW19uZ2NvbnRlbnQtJUNPTVAlXXtib3gtc2hhZG93OjBweCA2cHggNnB4IC0zcHggcmdiYSgwLCAwLCAwLCAwLjIpLDBweCAxMHB4IDE0cHggMXB4IHJnYmEoMCwgMCwgMCwgMC4xNCksMHB4IDRweCAxOHB4IDNweCByZ2JhKDAsIDAsIDAsIDAuMTIpfS5tYXQtZWxldmF0aW9uLXoxMVtfbmdjb250ZW50LSVDT01QJV17Ym94LXNoYWRvdzowcHggNnB4IDdweCAtNHB4IHJnYmEoMCwgMCwgMCwgMC4yKSwwcHggMTFweCAxNXB4IDFweCByZ2JhKDAsIDAsIDAsIDAuMTQpLDBweCA0cHggMjBweCAzcHggcmdiYSgwLCAwLCAwLCAwLjEyKX0ubWF0LWVsZXZhdGlvbi16MTJbX25nY29udGVudC0lQ09NUCVde2JveC1zaGFkb3c6MHB4IDdweCA4cHggLTRweCByZ2JhKDAsIDAsIDAsIDAuMiksMHB4IDEycHggMTdweCAycHggcmdiYSgwLCAwLCAwLCAwLjE0KSwwcHggNXB4IDIycHggNHB4IHJnYmEoMCwgMCwgMCwgMC4xMil9Lm1hdC1lbGV2YXRpb24tejEzW19uZ2NvbnRlbnQtJUNPTVAlXXtib3gtc2hhZG93OjBweCA3cHggOHB4IC00cHggcmdiYSgwLCAwLCAwLCAwLjIpLDBweCAxM3B4IDE5cHggMnB4IHJnYmEoMCwgMCwgMCwgMC4xNCksMHB4IDVweCAyNHB4IDRweCByZ2JhKDAsIDAsIDAsIDAuMTIpfS5tYXQtZWxldmF0aW9uLXoxNFtfbmdjb250ZW50LSVDT01QJV17Ym94LXNoYWRvdzowcHggN3B4IDlweCAtNHB4IHJnYmEoMCwgMCwgMCwgMC4yKSwwcHggMTRweCAyMXB4IDJweCByZ2JhKDAsIDAsIDAsIDAuMTQpLDBweCA1cHggMjZweCA0cHggcmdiYSgwLCAwLCAwLCAwLjEyKX0ubWF0LWVsZXZhdGlvbi16MTVbX25nY29udGVudC0lQ09NUCVde2JveC1zaGFkb3c6MHB4IDhweCA5cHggLTVweCByZ2JhKDAsIDAsIDAsIDAuMiksMHB4IDE1cHggMjJweCAycHggcmdiYSgwLCAwLCAwLCAwLjE0KSwwcHggNnB4IDI4cHggNXB4IHJnYmEoMCwgMCwgMCwgMC4xMil9Lm1hdC1lbGV2YXRpb24tejE2W19uZ2NvbnRlbnQtJUNPTVAlXXtib3gtc2hhZG93OjBweCA4cHggMTBweCAtNXB4IHJnYmEoMCwgMCwgMCwgMC4yKSwwcHggMTZweCAyNHB4IDJweCByZ2JhKDAsIDAsIDAsIDAuMTQpLDBweCA2cHggMzBweCA1cHggcmdiYSgwLCAwLCAwLCAwLjEyKX0ubWF0LWVsZXZhdGlvbi16MTdbX25nY29udGVudC0lQ09NUCVde2JveC1zaGFkb3c6MHB4IDhweCAxMXB4IC01cHggcmdiYSgwLCAwLCAwLCAwLjIpLDBweCAxN3B4IDI2cHggMnB4IHJnYmEoMCwgMCwgMCwgMC4xNCksMHB4IDZweCAzMnB4IDVweCByZ2JhKDAsIDAsIDAsIDAuMTIpfS5tYXQtZWxldmF0aW9uLXoxOFtfbmdjb250ZW50LSVDT01QJV17Ym94LXNoYWRvdzowcHggOXB4IDExcHggLTVweCByZ2JhKDAsIDAsIDAsIDAuMiksMHB4IDE4cHggMjhweCAycHggcmdiYSgwLCAwLCAwLCAwLjE0KSwwcHggN3B4IDM0cHggNnB4IHJnYmEoMCwgMCwgMCwgMC4xMil9Lm1hdC1lbGV2YXRpb24tejE5W19uZ2NvbnRlbnQtJUNPTVAlXXtib3gtc2hhZG93OjBweCA5cHggMTJweCAtNnB4IHJnYmEoMCwgMCwgMCwgMC4yKSwwcHggMTlweCAyOXB4IDJweCByZ2JhKDAsIDAsIDAsIDAuMTQpLDBweCA3cHggMzZweCA2cHggcmdiYSgwLCAwLCAwLCAwLjEyKX0ubWF0LWVsZXZhdGlvbi16MjBbX25nY29udGVudC0lQ09NUCVde2JveC1zaGFkb3c6MHB4IDEwcHggMTNweCAtNnB4IHJnYmEoMCwgMCwgMCwgMC4yKSwwcHggMjBweCAzMXB4IDNweCByZ2JhKDAsIDAsIDAsIDAuMTQpLDBweCA4cHggMzhweCA3cHggcmdiYSgwLCAwLCAwLCAwLjEyKX0ubWF0LWVsZXZhdGlvbi16MjFbX25nY29udGVudC0lQ09NUCVde2JveC1zaGFkb3c6MHB4IDEwcHggMTNweCAtNnB4IHJnYmEoMCwgMCwgMCwgMC4yKSwwcHggMjFweCAzM3B4IDNweCByZ2JhKDAsIDAsIDAsIDAuMTQpLDBweCA4cHggNDBweCA3cHggcmdiYSgwLCAwLCAwLCAwLjEyKX0ubWF0LWVsZXZhdGlvbi16MjJbX25nY29udGVudC0lQ09NUCVde2JveC1zaGFkb3c6MHB4IDEwcHggMTRweCAtNnB4IHJnYmEoMCwgMCwgMCwgMC4yKSwwcHggMjJweCAzNXB4IDNweCByZ2JhKDAsIDAsIDAsIDAuMTQpLDBweCA4cHggNDJweCA3cHggcmdiYSgwLCAwLCAwLCAwLjEyKX0ubWF0LWVsZXZhdGlvbi16MjNbX25nY29udGVudC0lQ09NUCVde2JveC1zaGFkb3c6MHB4IDExcHggMTRweCAtN3B4IHJnYmEoMCwgMCwgMCwgMC4yKSwwcHggMjNweCAzNnB4IDNweCByZ2JhKDAsIDAsIDAsIDAuMTQpLDBweCA5cHggNDRweCA4cHggcmdiYSgwLCAwLCAwLCAwLjEyKX0ubWF0LWVsZXZhdGlvbi16MjRbX25nY29udGVudC0lQ09NUCVde2JveC1zaGFkb3c6MHB4IDExcHggMTVweCAtN3B4IHJnYmEoMCwgMCwgMCwgMC4yKSwwcHggMjRweCAzOHB4IDNweCByZ2JhKDAsIDAsIDAsIDAuMTQpLDBweCA5cHggNDZweCA4cHggcmdiYSgwLCAwLCAwLCAwLjEyKX0ubWF0LXRoZW1lLWxvYWRlZC1tYXJrZXJbX25nY29udGVudC0lQ09NUCVde2Rpc3BsYXk6bm9uZX0ubWF0LWF1dG9jb21wbGV0ZS1wYW5lbFtfbmdjb250ZW50LSVDT01QJV17YmFja2dyb3VuZDojZmZmO2NvbG9yOiMyMTIxMjF9Lm1hdC1hdXRvY29tcGxldGUtcGFuZWxbX25nY29udGVudC0lQ09NUCVdOm5vdChbY2xhc3MqPW1hdC1lbGV2YXRpb24tel0pe2JveC1zaGFkb3c6MHB4IDJweCA0cHggLTFweCByZ2JhKDAsIDAsIDAsIDAuMiksMHB4IDRweCA1cHggMHB4IHJnYmEoMCwgMCwgMCwgMC4xNCksMHB4IDFweCAxMHB4IDBweCByZ2JhKDAsIDAsIDAsIDAuMTIpfS5tYXQtYXV0b2NvbXBsZXRlLXBhbmVsW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtb3B0aW9uLm1hdC1zZWxlY3RlZFtfbmdjb250ZW50LSVDT01QJV06bm90KC5tYXQtYWN0aXZlKTpub3QoOmhvdmVyKXtiYWNrZ3JvdW5kOiNmZmZ9Lm1hdC1hdXRvY29tcGxldGUtcGFuZWxbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1vcHRpb24ubWF0LXNlbGVjdGVkW19uZ2NvbnRlbnQtJUNPTVAlXTpub3QoLm1hdC1hY3RpdmUpOm5vdCg6aG92ZXIpOm5vdCgubWF0LW9wdGlvbi1kaXNhYmxlZCl7Y29sb3I6IzIxMjEyMX0ubWF0LWJhZGdlLWNvbnRlbnRbX25nY29udGVudC0lQ09NUCVde2NvbG9yOiNmZmY7YmFja2dyb3VuZDojZjU3YzAwfS5jZGstaGlnaC1jb250cmFzdC1hY3RpdmVbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1iYWRnZS1jb250ZW50W19uZ2NvbnRlbnQtJUNPTVAlXXtvdXRsaW5lOnNvbGlkIDFweDtib3JkZXItcmFkaXVzOjB9Lm1hdC1iYWRnZS1hY2NlbnRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1iYWRnZS1jb250ZW50W19uZ2NvbnRlbnQtJUNPTVAlXXtiYWNrZ3JvdW5kOiNmZjk4MDA7Y29sb3I6I2ZmZn0ubWF0LWJhZGdlLXdhcm5bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1iYWRnZS1jb250ZW50W19uZ2NvbnRlbnQtJUNPTVAlXXtjb2xvcjojZmZmO2JhY2tncm91bmQ6I2Y0NDMzNn0ubWF0LWJhZGdlW19uZ2NvbnRlbnQtJUNPTVAlXXtwb3NpdGlvbjpyZWxhdGl2ZX0ubWF0LWJhZGdlLWhpZGRlbltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWJhZGdlLWNvbnRlbnRbX25nY29udGVudC0lQ09NUCVde2Rpc3BsYXk6bm9uZX0ubWF0LWJhZGdlLWRpc2FibGVkW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtYmFkZ2UtY29udGVudFtfbmdjb250ZW50LSVDT01QJV17YmFja2dyb3VuZDojYjliOWI5O2NvbG9yOiM3NTc1NzV9Lm1hdC1iYWRnZS1jb250ZW50W19uZ2NvbnRlbnQtJUNPTVAlXXtwb3NpdGlvbjphYnNvbHV0ZTt0ZXh0LWFsaWduOmNlbnRlcjtkaXNwbGF5OmlubGluZS1ibG9jaztib3JkZXItcmFkaXVzOjUwJTt0cmFuc2l0aW9uOnRyYW5zZm9ybSAyMDBtcyBlYXNlLWluLW91dDt0cmFuc2Zvcm06c2NhbGUoMC42KTtvdmVyZmxvdzpoaWRkZW47d2hpdGUtc3BhY2U6bm93cmFwO3RleHQtb3ZlcmZsb3c6ZWxsaXBzaXM7cG9pbnRlci1ldmVudHM6bm9uZX0ubmctYW5pbWF0ZS1kaXNhYmxlZFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWJhZGdlLWNvbnRlbnRbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWJhZGdlLWNvbnRlbnQuX21hdC1hbmltYXRpb24tbm9vcGFibGVbX25nY29udGVudC0lQ09NUCVde3RyYW5zaXRpb246bm9uZX0ubWF0LWJhZGdlLWNvbnRlbnQubWF0LWJhZGdlLWFjdGl2ZVtfbmdjb250ZW50LSVDT01QJV17dHJhbnNmb3JtOm5vbmV9Lm1hdC1iYWRnZS1zbWFsbFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWJhZGdlLWNvbnRlbnRbX25nY29udGVudC0lQ09NUCVde3dpZHRoOjE2cHg7aGVpZ2h0OjE2cHg7bGluZS1oZWlnaHQ6MTZweH0ubWF0LWJhZGdlLXNtYWxsLm1hdC1iYWRnZS1hYm92ZVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWJhZGdlLWNvbnRlbnRbX25nY29udGVudC0lQ09NUCVde3RvcDotOHB4fS5tYXQtYmFkZ2Utc21hbGwubWF0LWJhZGdlLWJlbG93W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtYmFkZ2UtY29udGVudFtfbmdjb250ZW50LSVDT01QJV17Ym90dG9tOi04cHh9Lm1hdC1iYWRnZS1zbWFsbC5tYXQtYmFkZ2UtYmVmb3JlW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtYmFkZ2UtY29udGVudFtfbmdjb250ZW50LSVDT01QJV17bGVmdDotMTZweH1bZGlyPXJ0bF1bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1iYWRnZS1zbWFsbC5tYXQtYmFkZ2UtYmVmb3JlW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtYmFkZ2UtY29udGVudFtfbmdjb250ZW50LSVDT01QJV17bGVmdDphdXRvO3JpZ2h0Oi0xNnB4fS5tYXQtYmFkZ2Utc21hbGwubWF0LWJhZGdlLWFmdGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtYmFkZ2UtY29udGVudFtfbmdjb250ZW50LSVDT01QJV17cmlnaHQ6LTE2cHh9W2Rpcj1ydGxdW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtYmFkZ2Utc21hbGwubWF0LWJhZGdlLWFmdGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtYmFkZ2UtY29udGVudFtfbmdjb250ZW50LSVDT01QJV17cmlnaHQ6YXV0bztsZWZ0Oi0xNnB4fS5tYXQtYmFkZ2Utc21hbGwubWF0LWJhZGdlLW92ZXJsYXAubWF0LWJhZGdlLWJlZm9yZVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWJhZGdlLWNvbnRlbnRbX25nY29udGVudC0lQ09NUCVde2xlZnQ6LThweH1bZGlyPXJ0bF1bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1iYWRnZS1zbWFsbC5tYXQtYmFkZ2Utb3ZlcmxhcC5tYXQtYmFkZ2UtYmVmb3JlW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtYmFkZ2UtY29udGVudFtfbmdjb250ZW50LSVDT01QJV17bGVmdDphdXRvO3JpZ2h0Oi04cHh9Lm1hdC1iYWRnZS1zbWFsbC5tYXQtYmFkZ2Utb3ZlcmxhcC5tYXQtYmFkZ2UtYWZ0ZXJbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1iYWRnZS1jb250ZW50W19uZ2NvbnRlbnQtJUNPTVAlXXtyaWdodDotOHB4fVtkaXI9cnRsXVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWJhZGdlLXNtYWxsLm1hdC1iYWRnZS1vdmVybGFwLm1hdC1iYWRnZS1hZnRlcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWJhZGdlLWNvbnRlbnRbX25nY29udGVudC0lQ09NUCVde3JpZ2h0OmF1dG87bGVmdDotOHB4fS5tYXQtYmFkZ2UtbWVkaXVtW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtYmFkZ2UtY29udGVudFtfbmdjb250ZW50LSVDT01QJV17d2lkdGg6MjJweDtoZWlnaHQ6MjJweDtsaW5lLWhlaWdodDoyMnB4fS5tYXQtYmFkZ2UtbWVkaXVtLm1hdC1iYWRnZS1hYm92ZVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWJhZGdlLWNvbnRlbnRbX25nY29udGVudC0lQ09NUCVde3RvcDotMTFweH0ubWF0LWJhZGdlLW1lZGl1bS5tYXQtYmFkZ2UtYmVsb3dbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1iYWRnZS1jb250ZW50W19uZ2NvbnRlbnQtJUNPTVAlXXtib3R0b206LTExcHh9Lm1hdC1iYWRnZS1tZWRpdW0ubWF0LWJhZGdlLWJlZm9yZVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWJhZGdlLWNvbnRlbnRbX25nY29udGVudC0lQ09NUCVde2xlZnQ6LTIycHh9W2Rpcj1ydGxdW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtYmFkZ2UtbWVkaXVtLm1hdC1iYWRnZS1iZWZvcmVbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1iYWRnZS1jb250ZW50W19uZ2NvbnRlbnQtJUNPTVAlXXtsZWZ0OmF1dG87cmlnaHQ6LTIycHh9Lm1hdC1iYWRnZS1tZWRpdW0ubWF0LWJhZGdlLWFmdGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtYmFkZ2UtY29udGVudFtfbmdjb250ZW50LSVDT01QJV17cmlnaHQ6LTIycHh9W2Rpcj1ydGxdW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtYmFkZ2UtbWVkaXVtLm1hdC1iYWRnZS1hZnRlcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWJhZGdlLWNvbnRlbnRbX25nY29udGVudC0lQ09NUCVde3JpZ2h0OmF1dG87bGVmdDotMjJweH0ubWF0LWJhZGdlLW1lZGl1bS5tYXQtYmFkZ2Utb3ZlcmxhcC5tYXQtYmFkZ2UtYmVmb3JlW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtYmFkZ2UtY29udGVudFtfbmdjb250ZW50LSVDT01QJV17bGVmdDotMTFweH1bZGlyPXJ0bF1bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1iYWRnZS1tZWRpdW0ubWF0LWJhZGdlLW92ZXJsYXAubWF0LWJhZGdlLWJlZm9yZVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWJhZGdlLWNvbnRlbnRbX25nY29udGVudC0lQ09NUCVde2xlZnQ6YXV0bztyaWdodDotMTFweH0ubWF0LWJhZGdlLW1lZGl1bS5tYXQtYmFkZ2Utb3ZlcmxhcC5tYXQtYmFkZ2UtYWZ0ZXJbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1iYWRnZS1jb250ZW50W19uZ2NvbnRlbnQtJUNPTVAlXXtyaWdodDotMTFweH1bZGlyPXJ0bF1bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1iYWRnZS1tZWRpdW0ubWF0LWJhZGdlLW92ZXJsYXAubWF0LWJhZGdlLWFmdGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtYmFkZ2UtY29udGVudFtfbmdjb250ZW50LSVDT01QJV17cmlnaHQ6YXV0bztsZWZ0Oi0xMXB4fS5tYXQtYmFkZ2UtbGFyZ2VbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1iYWRnZS1jb250ZW50W19uZ2NvbnRlbnQtJUNPTVAlXXt3aWR0aDoyOHB4O2hlaWdodDoyOHB4O2xpbmUtaGVpZ2h0OjI4cHh9Lm1hdC1iYWRnZS1sYXJnZS5tYXQtYmFkZ2UtYWJvdmVbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1iYWRnZS1jb250ZW50W19uZ2NvbnRlbnQtJUNPTVAlXXt0b3A6LTE0cHh9Lm1hdC1iYWRnZS1sYXJnZS5tYXQtYmFkZ2UtYmVsb3dbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1iYWRnZS1jb250ZW50W19uZ2NvbnRlbnQtJUNPTVAlXXtib3R0b206LTE0cHh9Lm1hdC1iYWRnZS1sYXJnZS5tYXQtYmFkZ2UtYmVmb3JlW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtYmFkZ2UtY29udGVudFtfbmdjb250ZW50LSVDT01QJV17bGVmdDotMjhweH1bZGlyPXJ0bF1bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1iYWRnZS1sYXJnZS5tYXQtYmFkZ2UtYmVmb3JlW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtYmFkZ2UtY29udGVudFtfbmdjb250ZW50LSVDT01QJV17bGVmdDphdXRvO3JpZ2h0Oi0yOHB4fS5tYXQtYmFkZ2UtbGFyZ2UubWF0LWJhZGdlLWFmdGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtYmFkZ2UtY29udGVudFtfbmdjb250ZW50LSVDT01QJV17cmlnaHQ6LTI4cHh9W2Rpcj1ydGxdW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtYmFkZ2UtbGFyZ2UubWF0LWJhZGdlLWFmdGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtYmFkZ2UtY29udGVudFtfbmdjb250ZW50LSVDT01QJV17cmlnaHQ6YXV0bztsZWZ0Oi0yOHB4fS5tYXQtYmFkZ2UtbGFyZ2UubWF0LWJhZGdlLW92ZXJsYXAubWF0LWJhZGdlLWJlZm9yZVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWJhZGdlLWNvbnRlbnRbX25nY29udGVudC0lQ09NUCVde2xlZnQ6LTE0cHh9W2Rpcj1ydGxdW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtYmFkZ2UtbGFyZ2UubWF0LWJhZGdlLW92ZXJsYXAubWF0LWJhZGdlLWJlZm9yZVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWJhZGdlLWNvbnRlbnRbX25nY29udGVudC0lQ09NUCVde2xlZnQ6YXV0bztyaWdodDotMTRweH0ubWF0LWJhZGdlLWxhcmdlLm1hdC1iYWRnZS1vdmVybGFwLm1hdC1iYWRnZS1hZnRlcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWJhZGdlLWNvbnRlbnRbX25nY29udGVudC0lQ09NUCVde3JpZ2h0Oi0xNHB4fVtkaXI9cnRsXVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWJhZGdlLWxhcmdlLm1hdC1iYWRnZS1vdmVybGFwLm1hdC1iYWRnZS1hZnRlcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWJhZGdlLWNvbnRlbnRbX25nY29udGVudC0lQ09NUCVde3JpZ2h0OmF1dG87bGVmdDotMTRweH0ubWF0LWJvdHRvbS1zaGVldC1jb250YWluZXJbX25nY29udGVudC0lQ09NUCVde2JveC1zaGFkb3c6MHB4IDhweCAxMHB4IC01cHggcmdiYSgwLCAwLCAwLCAwLjIpLDBweCAxNnB4IDI0cHggMnB4IHJnYmEoMCwgMCwgMCwgMC4xNCksMHB4IDZweCAzMHB4IDVweCByZ2JhKDAsIDAsIDAsIDAuMTIpO2JhY2tncm91bmQ6I2ZmZjtjb2xvcjojMjEyMTIxfS5tYXQtYnV0dG9uW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1pY29uLWJ1dHRvbltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtc3Ryb2tlZC1idXR0b25bX25nY29udGVudC0lQ09NUCVde2NvbG9yOmluaGVyaXQ7YmFja2dyb3VuZDp0cmFuc3BhcmVudH0ubWF0LWJ1dHRvbi5tYXQtcHJpbWFyeVtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtaWNvbi1idXR0b24ubWF0LXByaW1hcnlbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXN0cm9rZWQtYnV0dG9uLm1hdC1wcmltYXJ5W19uZ2NvbnRlbnQtJUNPTVAlXXtjb2xvcjojZjU3YzAwfS5tYXQtYnV0dG9uLm1hdC1hY2NlbnRbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWljb24tYnV0dG9uLm1hdC1hY2NlbnRbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXN0cm9rZWQtYnV0dG9uLm1hdC1hY2NlbnRbX25nY29udGVudC0lQ09NUCVde2NvbG9yOiNmZjk4MDB9Lm1hdC1idXR0b24ubWF0LXdhcm5bX25nY29udGVudC0lQ09NUCVdLCAubWF0LWljb24tYnV0dG9uLm1hdC13YXJuW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1zdHJva2VkLWJ1dHRvbi5tYXQtd2Fybltfbmdjb250ZW50LSVDT01QJV17Y29sb3I6I2Y0NDMzNn0ubWF0LWJ1dHRvbi5tYXQtcHJpbWFyeS5tYXQtYnV0dG9uLWRpc2FibGVkW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1idXR0b24ubWF0LWFjY2VudC5tYXQtYnV0dG9uLWRpc2FibGVkW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1idXR0b24ubWF0LXdhcm4ubWF0LWJ1dHRvbi1kaXNhYmxlZFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtYnV0dG9uLm1hdC1idXR0b24tZGlzYWJsZWQubWF0LWJ1dHRvbi1kaXNhYmxlZFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtaWNvbi1idXR0b24ubWF0LXByaW1hcnkubWF0LWJ1dHRvbi1kaXNhYmxlZFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtaWNvbi1idXR0b24ubWF0LWFjY2VudC5tYXQtYnV0dG9uLWRpc2FibGVkW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1pY29uLWJ1dHRvbi5tYXQtd2Fybi5tYXQtYnV0dG9uLWRpc2FibGVkW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1pY29uLWJ1dHRvbi5tYXQtYnV0dG9uLWRpc2FibGVkLm1hdC1idXR0b24tZGlzYWJsZWRbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXN0cm9rZWQtYnV0dG9uLm1hdC1wcmltYXJ5Lm1hdC1idXR0b24tZGlzYWJsZWRbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXN0cm9rZWQtYnV0dG9uLm1hdC1hY2NlbnQubWF0LWJ1dHRvbi1kaXNhYmxlZFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtc3Ryb2tlZC1idXR0b24ubWF0LXdhcm4ubWF0LWJ1dHRvbi1kaXNhYmxlZFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtc3Ryb2tlZC1idXR0b24ubWF0LWJ1dHRvbi1kaXNhYmxlZC5tYXQtYnV0dG9uLWRpc2FibGVkW19uZ2NvbnRlbnQtJUNPTVAlXXtjb2xvcjpyZ2JhKDAsMCwwLC4yNil9Lm1hdC1idXR0b24ubWF0LXByaW1hcnlbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1idXR0b24tZm9jdXMtb3ZlcmxheVtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtaWNvbi1idXR0b24ubWF0LXByaW1hcnlbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1idXR0b24tZm9jdXMtb3ZlcmxheVtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtc3Ryb2tlZC1idXR0b24ubWF0LXByaW1hcnlbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1idXR0b24tZm9jdXMtb3ZlcmxheVtfbmdjb250ZW50LSVDT01QJV17YmFja2dyb3VuZC1jb2xvcjojZjU3YzAwfS5tYXQtYnV0dG9uLm1hdC1hY2NlbnRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1idXR0b24tZm9jdXMtb3ZlcmxheVtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtaWNvbi1idXR0b24ubWF0LWFjY2VudFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWJ1dHRvbi1mb2N1cy1vdmVybGF5W19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1zdHJva2VkLWJ1dHRvbi5tYXQtYWNjZW50W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtYnV0dG9uLWZvY3VzLW92ZXJsYXlbX25nY29udGVudC0lQ09NUCVde2JhY2tncm91bmQtY29sb3I6I2ZmOTgwMH0ubWF0LWJ1dHRvbi5tYXQtd2Fybltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWJ1dHRvbi1mb2N1cy1vdmVybGF5W19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1pY29uLWJ1dHRvbi5tYXQtd2Fybltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWJ1dHRvbi1mb2N1cy1vdmVybGF5W19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1zdHJva2VkLWJ1dHRvbi5tYXQtd2Fybltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWJ1dHRvbi1mb2N1cy1vdmVybGF5W19uZ2NvbnRlbnQtJUNPTVAlXXtiYWNrZ3JvdW5kLWNvbG9yOiNmNDQzMzZ9Lm1hdC1idXR0b24ubWF0LWJ1dHRvbi1kaXNhYmxlZFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWJ1dHRvbi1mb2N1cy1vdmVybGF5W19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1pY29uLWJ1dHRvbi5tYXQtYnV0dG9uLWRpc2FibGVkW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtYnV0dG9uLWZvY3VzLW92ZXJsYXlbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXN0cm9rZWQtYnV0dG9uLm1hdC1idXR0b24tZGlzYWJsZWRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1idXR0b24tZm9jdXMtb3ZlcmxheVtfbmdjb250ZW50LSVDT01QJV17YmFja2dyb3VuZC1jb2xvcjp0cmFuc3BhcmVudH0ubWF0LWJ1dHRvbltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXJpcHBsZS1lbGVtZW50W19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1pY29uLWJ1dHRvbltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXJpcHBsZS1lbGVtZW50W19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1zdHJva2VkLWJ1dHRvbltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXJpcHBsZS1lbGVtZW50W19uZ2NvbnRlbnQtJUNPTVAlXXtvcGFjaXR5Oi4xO2JhY2tncm91bmQtY29sb3I6Y3VycmVudENvbG9yfS5tYXQtYnV0dG9uLWZvY3VzLW92ZXJsYXlbX25nY29udGVudC0lQ09NUCVde2JhY2tncm91bmQ6IzAwMH0ubWF0LXN0cm9rZWQtYnV0dG9uW19uZ2NvbnRlbnQtJUNPTVAlXTpub3QoLm1hdC1idXR0b24tZGlzYWJsZWQpe2JvcmRlci1jb2xvcjpyZ2JhKDAsMCwwLC4xMil9Lm1hdC1mbGF0LWJ1dHRvbltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtcmFpc2VkLWJ1dHRvbltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtZmFiW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1taW5pLWZhYltfbmdjb250ZW50LSVDT01QJV17Y29sb3I6IzIxMjEyMTtiYWNrZ3JvdW5kLWNvbG9yOiNmZmZ9Lm1hdC1mbGF0LWJ1dHRvbi5tYXQtcHJpbWFyeVtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtcmFpc2VkLWJ1dHRvbi5tYXQtcHJpbWFyeVtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtZmFiLm1hdC1wcmltYXJ5W19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1taW5pLWZhYi5tYXQtcHJpbWFyeVtfbmdjb250ZW50LSVDT01QJV17Y29sb3I6I2ZmZn0ubWF0LWZsYXQtYnV0dG9uLm1hdC1hY2NlbnRbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXJhaXNlZC1idXR0b24ubWF0LWFjY2VudFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtZmFiLm1hdC1hY2NlbnRbX25nY29udGVudC0lQ09NUCVdLCAubWF0LW1pbmktZmFiLm1hdC1hY2NlbnRbX25nY29udGVudC0lQ09NUCVde2NvbG9yOiNmZmZ9Lm1hdC1mbGF0LWJ1dHRvbi5tYXQtd2Fybltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtcmFpc2VkLWJ1dHRvbi5tYXQtd2Fybltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtZmFiLm1hdC13YXJuW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1taW5pLWZhYi5tYXQtd2Fybltfbmdjb250ZW50LSVDT01QJV17Y29sb3I6I2ZmZn0ubWF0LWZsYXQtYnV0dG9uLm1hdC1wcmltYXJ5Lm1hdC1idXR0b24tZGlzYWJsZWRbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWZsYXQtYnV0dG9uLm1hdC1hY2NlbnQubWF0LWJ1dHRvbi1kaXNhYmxlZFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtZmxhdC1idXR0b24ubWF0LXdhcm4ubWF0LWJ1dHRvbi1kaXNhYmxlZFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtZmxhdC1idXR0b24ubWF0LWJ1dHRvbi1kaXNhYmxlZC5tYXQtYnV0dG9uLWRpc2FibGVkW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1yYWlzZWQtYnV0dG9uLm1hdC1wcmltYXJ5Lm1hdC1idXR0b24tZGlzYWJsZWRbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXJhaXNlZC1idXR0b24ubWF0LWFjY2VudC5tYXQtYnV0dG9uLWRpc2FibGVkW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1yYWlzZWQtYnV0dG9uLm1hdC13YXJuLm1hdC1idXR0b24tZGlzYWJsZWRbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXJhaXNlZC1idXR0b24ubWF0LWJ1dHRvbi1kaXNhYmxlZC5tYXQtYnV0dG9uLWRpc2FibGVkW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1mYWIubWF0LXByaW1hcnkubWF0LWJ1dHRvbi1kaXNhYmxlZFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtZmFiLm1hdC1hY2NlbnQubWF0LWJ1dHRvbi1kaXNhYmxlZFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtZmFiLm1hdC13YXJuLm1hdC1idXR0b24tZGlzYWJsZWRbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWZhYi5tYXQtYnV0dG9uLWRpc2FibGVkLm1hdC1idXR0b24tZGlzYWJsZWRbX25nY29udGVudC0lQ09NUCVdLCAubWF0LW1pbmktZmFiLm1hdC1wcmltYXJ5Lm1hdC1idXR0b24tZGlzYWJsZWRbX25nY29udGVudC0lQ09NUCVdLCAubWF0LW1pbmktZmFiLm1hdC1hY2NlbnQubWF0LWJ1dHRvbi1kaXNhYmxlZFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtbWluaS1mYWIubWF0LXdhcm4ubWF0LWJ1dHRvbi1kaXNhYmxlZFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtbWluaS1mYWIubWF0LWJ1dHRvbi1kaXNhYmxlZC5tYXQtYnV0dG9uLWRpc2FibGVkW19uZ2NvbnRlbnQtJUNPTVAlXXtjb2xvcjpyZ2JhKDAsMCwwLC4yNil9Lm1hdC1mbGF0LWJ1dHRvbi5tYXQtcHJpbWFyeVtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtcmFpc2VkLWJ1dHRvbi5tYXQtcHJpbWFyeVtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtZmFiLm1hdC1wcmltYXJ5W19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1taW5pLWZhYi5tYXQtcHJpbWFyeVtfbmdjb250ZW50LSVDT01QJV17YmFja2dyb3VuZC1jb2xvcjojZjU3YzAwfS5tYXQtZmxhdC1idXR0b24ubWF0LWFjY2VudFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtcmFpc2VkLWJ1dHRvbi5tYXQtYWNjZW50W19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1mYWIubWF0LWFjY2VudFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtbWluaS1mYWIubWF0LWFjY2VudFtfbmdjb250ZW50LSVDT01QJV17YmFja2dyb3VuZC1jb2xvcjojZmY5ODAwfS5tYXQtZmxhdC1idXR0b24ubWF0LXdhcm5bX25nY29udGVudC0lQ09NUCVdLCAubWF0LXJhaXNlZC1idXR0b24ubWF0LXdhcm5bX25nY29udGVudC0lQ09NUCVdLCAubWF0LWZhYi5tYXQtd2Fybltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtbWluaS1mYWIubWF0LXdhcm5bX25nY29udGVudC0lQ09NUCVde2JhY2tncm91bmQtY29sb3I6I2Y0NDMzNn0ubWF0LWZsYXQtYnV0dG9uLm1hdC1wcmltYXJ5Lm1hdC1idXR0b24tZGlzYWJsZWRbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWZsYXQtYnV0dG9uLm1hdC1hY2NlbnQubWF0LWJ1dHRvbi1kaXNhYmxlZFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtZmxhdC1idXR0b24ubWF0LXdhcm4ubWF0LWJ1dHRvbi1kaXNhYmxlZFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtZmxhdC1idXR0b24ubWF0LWJ1dHRvbi1kaXNhYmxlZC5tYXQtYnV0dG9uLWRpc2FibGVkW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1yYWlzZWQtYnV0dG9uLm1hdC1wcmltYXJ5Lm1hdC1idXR0b24tZGlzYWJsZWRbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXJhaXNlZC1idXR0b24ubWF0LWFjY2VudC5tYXQtYnV0dG9uLWRpc2FibGVkW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1yYWlzZWQtYnV0dG9uLm1hdC13YXJuLm1hdC1idXR0b24tZGlzYWJsZWRbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXJhaXNlZC1idXR0b24ubWF0LWJ1dHRvbi1kaXNhYmxlZC5tYXQtYnV0dG9uLWRpc2FibGVkW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1mYWIubWF0LXByaW1hcnkubWF0LWJ1dHRvbi1kaXNhYmxlZFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtZmFiLm1hdC1hY2NlbnQubWF0LWJ1dHRvbi1kaXNhYmxlZFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtZmFiLm1hdC13YXJuLm1hdC1idXR0b24tZGlzYWJsZWRbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWZhYi5tYXQtYnV0dG9uLWRpc2FibGVkLm1hdC1idXR0b24tZGlzYWJsZWRbX25nY29udGVudC0lQ09NUCVdLCAubWF0LW1pbmktZmFiLm1hdC1wcmltYXJ5Lm1hdC1idXR0b24tZGlzYWJsZWRbX25nY29udGVudC0lQ09NUCVdLCAubWF0LW1pbmktZmFiLm1hdC1hY2NlbnQubWF0LWJ1dHRvbi1kaXNhYmxlZFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtbWluaS1mYWIubWF0LXdhcm4ubWF0LWJ1dHRvbi1kaXNhYmxlZFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtbWluaS1mYWIubWF0LWJ1dHRvbi1kaXNhYmxlZC5tYXQtYnV0dG9uLWRpc2FibGVkW19uZ2NvbnRlbnQtJUNPTVAlXXtiYWNrZ3JvdW5kLWNvbG9yOnJnYmEoMCwwLDAsLjEyKX0ubWF0LWZsYXQtYnV0dG9uLm1hdC1wcmltYXJ5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtcmlwcGxlLWVsZW1lbnRbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXJhaXNlZC1idXR0b24ubWF0LXByaW1hcnlbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1yaXBwbGUtZWxlbWVudFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtZmFiLm1hdC1wcmltYXJ5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtcmlwcGxlLWVsZW1lbnRbX25nY29udGVudC0lQ09NUCVdLCAubWF0LW1pbmktZmFiLm1hdC1wcmltYXJ5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtcmlwcGxlLWVsZW1lbnRbX25nY29udGVudC0lQ09NUCVde2JhY2tncm91bmQtY29sb3I6cmdiYSgyNTUsMjU1LDI1NSwuMSl9Lm1hdC1mbGF0LWJ1dHRvbi5tYXQtYWNjZW50W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtcmlwcGxlLWVsZW1lbnRbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXJhaXNlZC1idXR0b24ubWF0LWFjY2VudFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXJpcHBsZS1lbGVtZW50W19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1mYWIubWF0LWFjY2VudFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXJpcHBsZS1lbGVtZW50W19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1taW5pLWZhYi5tYXQtYWNjZW50W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtcmlwcGxlLWVsZW1lbnRbX25nY29udGVudC0lQ09NUCVde2JhY2tncm91bmQtY29sb3I6cmdiYSgyNTUsMjU1LDI1NSwuMSl9Lm1hdC1mbGF0LWJ1dHRvbi5tYXQtd2Fybltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXJpcHBsZS1lbGVtZW50W19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1yYWlzZWQtYnV0dG9uLm1hdC13YXJuW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtcmlwcGxlLWVsZW1lbnRbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWZhYi5tYXQtd2Fybltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXJpcHBsZS1lbGVtZW50W19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1taW5pLWZhYi5tYXQtd2Fybltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXJpcHBsZS1lbGVtZW50W19uZ2NvbnRlbnQtJUNPTVAlXXtiYWNrZ3JvdW5kLWNvbG9yOnJnYmEoMjU1LDI1NSwyNTUsLjEpfS5tYXQtc3Ryb2tlZC1idXR0b25bX25nY29udGVudC0lQ09NUCVdOm5vdChbY2xhc3MqPW1hdC1lbGV2YXRpb24tel0pLCAubWF0LWZsYXQtYnV0dG9uW19uZ2NvbnRlbnQtJUNPTVAlXTpub3QoW2NsYXNzKj1tYXQtZWxldmF0aW9uLXpdKXtib3gtc2hhZG93OjBweCAwcHggMHB4IDBweCByZ2JhKDAsIDAsIDAsIDAuMiksMHB4IDBweCAwcHggMHB4IHJnYmEoMCwgMCwgMCwgMC4xNCksMHB4IDBweCAwcHggMHB4IHJnYmEoMCwgMCwgMCwgMC4xMil9Lm1hdC1yYWlzZWQtYnV0dG9uW19uZ2NvbnRlbnQtJUNPTVAlXTpub3QoW2NsYXNzKj1tYXQtZWxldmF0aW9uLXpdKXtib3gtc2hhZG93OjBweCAzcHggMXB4IC0ycHggcmdiYSgwLCAwLCAwLCAwLjIpLDBweCAycHggMnB4IDBweCByZ2JhKDAsIDAsIDAsIDAuMTQpLDBweCAxcHggNXB4IDBweCByZ2JhKDAsIDAsIDAsIDAuMTIpfS5tYXQtcmFpc2VkLWJ1dHRvbltfbmdjb250ZW50LSVDT01QJV06bm90KC5tYXQtYnV0dG9uLWRpc2FibGVkKTphY3RpdmU6bm90KFtjbGFzcyo9bWF0LWVsZXZhdGlvbi16XSl7Ym94LXNoYWRvdzowcHggNXB4IDVweCAtM3B4IHJnYmEoMCwgMCwgMCwgMC4yKSwwcHggOHB4IDEwcHggMXB4IHJnYmEoMCwgMCwgMCwgMC4xNCksMHB4IDNweCAxNHB4IDJweCByZ2JhKDAsIDAsIDAsIDAuMTIpfS5tYXQtcmFpc2VkLWJ1dHRvbi5tYXQtYnV0dG9uLWRpc2FibGVkW19uZ2NvbnRlbnQtJUNPTVAlXTpub3QoW2NsYXNzKj1tYXQtZWxldmF0aW9uLXpdKXtib3gtc2hhZG93OjBweCAwcHggMHB4IDBweCByZ2JhKDAsIDAsIDAsIDAuMiksMHB4IDBweCAwcHggMHB4IHJnYmEoMCwgMCwgMCwgMC4xNCksMHB4IDBweCAwcHggMHB4IHJnYmEoMCwgMCwgMCwgMC4xMil9Lm1hdC1mYWJbX25nY29udGVudC0lQ09NUCVdOm5vdChbY2xhc3MqPW1hdC1lbGV2YXRpb24tel0pLCAubWF0LW1pbmktZmFiW19uZ2NvbnRlbnQtJUNPTVAlXTpub3QoW2NsYXNzKj1tYXQtZWxldmF0aW9uLXpdKXtib3gtc2hhZG93OjBweCAzcHggNXB4IC0xcHggcmdiYSgwLCAwLCAwLCAwLjIpLDBweCA2cHggMTBweCAwcHggcmdiYSgwLCAwLCAwLCAwLjE0KSwwcHggMXB4IDE4cHggMHB4IHJnYmEoMCwgMCwgMCwgMC4xMil9Lm1hdC1mYWJbX25nY29udGVudC0lQ09NUCVdOm5vdCgubWF0LWJ1dHRvbi1kaXNhYmxlZCk6YWN0aXZlOm5vdChbY2xhc3MqPW1hdC1lbGV2YXRpb24tel0pLCAubWF0LW1pbmktZmFiW19uZ2NvbnRlbnQtJUNPTVAlXTpub3QoLm1hdC1idXR0b24tZGlzYWJsZWQpOmFjdGl2ZTpub3QoW2NsYXNzKj1tYXQtZWxldmF0aW9uLXpdKXtib3gtc2hhZG93OjBweCA3cHggOHB4IC00cHggcmdiYSgwLCAwLCAwLCAwLjIpLDBweCAxMnB4IDE3cHggMnB4IHJnYmEoMCwgMCwgMCwgMC4xNCksMHB4IDVweCAyMnB4IDRweCByZ2JhKDAsIDAsIDAsIDAuMTIpfS5tYXQtZmFiLm1hdC1idXR0b24tZGlzYWJsZWRbX25nY29udGVudC0lQ09NUCVdOm5vdChbY2xhc3MqPW1hdC1lbGV2YXRpb24tel0pLCAubWF0LW1pbmktZmFiLm1hdC1idXR0b24tZGlzYWJsZWRbX25nY29udGVudC0lQ09NUCVdOm5vdChbY2xhc3MqPW1hdC1lbGV2YXRpb24tel0pe2JveC1zaGFkb3c6MHB4IDBweCAwcHggMHB4IHJnYmEoMCwgMCwgMCwgMC4yKSwwcHggMHB4IDBweCAwcHggcmdiYSgwLCAwLCAwLCAwLjE0KSwwcHggMHB4IDBweCAwcHggcmdiYSgwLCAwLCAwLCAwLjEyKX0ubWF0LWJ1dHRvbi10b2dnbGUtc3RhbmRhbG9uZVtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtYnV0dG9uLXRvZ2dsZS1ncm91cFtfbmdjb250ZW50LSVDT01QJV17Ym94LXNoYWRvdzowcHggM3B4IDFweCAtMnB4IHJnYmEoMCwgMCwgMCwgMC4yKSwwcHggMnB4IDJweCAwcHggcmdiYSgwLCAwLCAwLCAwLjE0KSwwcHggMXB4IDVweCAwcHggcmdiYSgwLCAwLCAwLCAwLjEyKX0ubWF0LWJ1dHRvbi10b2dnbGUtc3RhbmRhbG9uZS5tYXQtYnV0dG9uLXRvZ2dsZS1hcHBlYXJhbmNlLXN0YW5kYXJkW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1idXR0b24tdG9nZ2xlLWdyb3VwLWFwcGVhcmFuY2Utc3RhbmRhcmRbX25nY29udGVudC0lQ09NUCVde2JveC1zaGFkb3c6bm9uZX0ubWF0LWJ1dHRvbi10b2dnbGVbX25nY29udGVudC0lQ09NUCVde2NvbG9yOnJnYmEoMCwwLDAsLjM4KX0ubWF0LWJ1dHRvbi10b2dnbGVbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1idXR0b24tdG9nZ2xlLWZvY3VzLW92ZXJsYXlbX25nY29udGVudC0lQ09NUCVde2JhY2tncm91bmQtY29sb3I6cmdiYSgwLDAsMCwuMTIpfS5tYXQtYnV0dG9uLXRvZ2dsZS1hcHBlYXJhbmNlLXN0YW5kYXJkW19uZ2NvbnRlbnQtJUNPTVAlXXtjb2xvcjojMjEyMTIxO2JhY2tncm91bmQ6I2ZmZn0ubWF0LWJ1dHRvbi10b2dnbGUtYXBwZWFyYW5jZS1zdGFuZGFyZFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWJ1dHRvbi10b2dnbGUtZm9jdXMtb3ZlcmxheVtfbmdjb250ZW50LSVDT01QJV17YmFja2dyb3VuZC1jb2xvcjojMDAwfS5tYXQtYnV0dG9uLXRvZ2dsZS1ncm91cC1hcHBlYXJhbmNlLXN0YW5kYXJkW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtYnV0dG9uLXRvZ2dsZVtfbmdjb250ZW50LSVDT01QJV0gKyAubWF0LWJ1dHRvbi10b2dnbGVbX25nY29udGVudC0lQ09NUCVde2JvcmRlci1sZWZ0OnNvbGlkIDFweCByZ2JhKDAsMCwwLC4xMil9W2Rpcj1ydGxdW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtYnV0dG9uLXRvZ2dsZS1ncm91cC1hcHBlYXJhbmNlLXN0YW5kYXJkW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtYnV0dG9uLXRvZ2dsZVtfbmdjb250ZW50LSVDT01QJV0gKyAubWF0LWJ1dHRvbi10b2dnbGVbX25nY29udGVudC0lQ09NUCVde2JvcmRlci1sZWZ0Om5vbmU7Ym9yZGVyLXJpZ2h0OnNvbGlkIDFweCByZ2JhKDAsMCwwLC4xMil9Lm1hdC1idXR0b24tdG9nZ2xlLWdyb3VwLWFwcGVhcmFuY2Utc3RhbmRhcmQubWF0LWJ1dHRvbi10b2dnbGUtdmVydGljYWxbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1idXR0b24tdG9nZ2xlW19uZ2NvbnRlbnQtJUNPTVAlXSArIC5tYXQtYnV0dG9uLXRvZ2dsZVtfbmdjb250ZW50LSVDT01QJV17Ym9yZGVyLWxlZnQ6bm9uZTtib3JkZXItcmlnaHQ6bm9uZTtib3JkZXItdG9wOnNvbGlkIDFweCByZ2JhKDAsMCwwLC4xMil9Lm1hdC1idXR0b24tdG9nZ2xlLWNoZWNrZWRbX25nY29udGVudC0lQ09NUCVde2JhY2tncm91bmQtY29sb3I6I2UwZTBlMDtjb2xvcjojNjE2MTYxfS5tYXQtYnV0dG9uLXRvZ2dsZS1jaGVja2VkLm1hdC1idXR0b24tdG9nZ2xlLWFwcGVhcmFuY2Utc3RhbmRhcmRbX25nY29udGVudC0lQ09NUCVde2NvbG9yOiMyMTIxMjF9Lm1hdC1idXR0b24tdG9nZ2xlLWRpc2FibGVkW19uZ2NvbnRlbnQtJUNPTVAlXXtjb2xvcjpyZ2JhKDAsMCwwLC4yNik7YmFja2dyb3VuZC1jb2xvcjojZWVlfS5tYXQtYnV0dG9uLXRvZ2dsZS1kaXNhYmxlZC5tYXQtYnV0dG9uLXRvZ2dsZS1hcHBlYXJhbmNlLXN0YW5kYXJkW19uZ2NvbnRlbnQtJUNPTVAlXXtiYWNrZ3JvdW5kOiNmZmZ9Lm1hdC1idXR0b24tdG9nZ2xlLWRpc2FibGVkLm1hdC1idXR0b24tdG9nZ2xlLWNoZWNrZWRbX25nY29udGVudC0lQ09NUCVde2JhY2tncm91bmQtY29sb3I6I2JkYmRiZH0ubWF0LWJ1dHRvbi10b2dnbGUtc3RhbmRhbG9uZS5tYXQtYnV0dG9uLXRvZ2dsZS1hcHBlYXJhbmNlLXN0YW5kYXJkW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1idXR0b24tdG9nZ2xlLWdyb3VwLWFwcGVhcmFuY2Utc3RhbmRhcmRbX25nY29udGVudC0lQ09NUCVde2JvcmRlcjpzb2xpZCAxcHggcmdiYSgwLDAsMCwuMTIpfS5tYXQtYnV0dG9uLXRvZ2dsZS1hcHBlYXJhbmNlLXN0YW5kYXJkW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtYnV0dG9uLXRvZ2dsZS1sYWJlbC1jb250ZW50W19uZ2NvbnRlbnQtJUNPTVAlXXtsaW5lLWhlaWdodDo0OHB4fS5tYXQtY2FyZFtfbmdjb250ZW50LSVDT01QJV17YmFja2dyb3VuZDojZmZmO2NvbG9yOiMyMTIxMjF9Lm1hdC1jYXJkW19uZ2NvbnRlbnQtJUNPTVAlXTpub3QoW2NsYXNzKj1tYXQtZWxldmF0aW9uLXpdKXtib3gtc2hhZG93OjBweCAycHggMXB4IC0xcHggcmdiYSgwLCAwLCAwLCAwLjIpLDBweCAxcHggMXB4IDBweCByZ2JhKDAsIDAsIDAsIDAuMTQpLDBweCAxcHggM3B4IDBweCByZ2JhKDAsIDAsIDAsIDAuMTIpfS5tYXQtY2FyZC5tYXQtY2FyZC1mbGF0W19uZ2NvbnRlbnQtJUNPTVAlXTpub3QoW2NsYXNzKj1tYXQtZWxldmF0aW9uLXpdKXtib3gtc2hhZG93OjBweCAwcHggMHB4IDBweCByZ2JhKDAsIDAsIDAsIDAuMiksMHB4IDBweCAwcHggMHB4IHJnYmEoMCwgMCwgMCwgMC4xNCksMHB4IDBweCAwcHggMHB4IHJnYmEoMCwgMCwgMCwgMC4xMil9Lm1hdC1jYXJkLXN1YnRpdGxlW19uZ2NvbnRlbnQtJUNPTVAlXXtjb2xvcjojNjE2MTYxfS5tYXQtY2hlY2tib3gtZnJhbWVbX25nY29udGVudC0lQ09NUCVde2JvcmRlci1jb2xvcjojNjE2MTYxfS5tYXQtY2hlY2tib3gtY2hlY2ttYXJrW19uZ2NvbnRlbnQtJUNPTVAlXXtmaWxsOiNmYWZhZmF9Lm1hdC1jaGVja2JveC1jaGVja21hcmstcGF0aFtfbmdjb250ZW50LSVDT01QJV17c3Ryb2tlOiNmYWZhZmEgIWltcG9ydGFudH0ubWF0LWNoZWNrYm94LW1peGVkbWFya1tfbmdjb250ZW50LSVDT01QJV17YmFja2dyb3VuZC1jb2xvcjojZmFmYWZhfS5tYXQtY2hlY2tib3gtaW5kZXRlcm1pbmF0ZS5tYXQtcHJpbWFyeVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWNoZWNrYm94LWJhY2tncm91bmRbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWNoZWNrYm94LWNoZWNrZWQubWF0LXByaW1hcnlbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1jaGVja2JveC1iYWNrZ3JvdW5kW19uZ2NvbnRlbnQtJUNPTVAlXXtiYWNrZ3JvdW5kLWNvbG9yOiNmNTdjMDB9Lm1hdC1jaGVja2JveC1pbmRldGVybWluYXRlLm1hdC1hY2NlbnRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1jaGVja2JveC1iYWNrZ3JvdW5kW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1jaGVja2JveC1jaGVja2VkLm1hdC1hY2NlbnRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1jaGVja2JveC1iYWNrZ3JvdW5kW19uZ2NvbnRlbnQtJUNPTVAlXXtiYWNrZ3JvdW5kLWNvbG9yOiNmZjk4MDB9Lm1hdC1jaGVja2JveC1pbmRldGVybWluYXRlLm1hdC13YXJuW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtY2hlY2tib3gtYmFja2dyb3VuZFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtY2hlY2tib3gtY2hlY2tlZC5tYXQtd2Fybltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWNoZWNrYm94LWJhY2tncm91bmRbX25nY29udGVudC0lQ09NUCVde2JhY2tncm91bmQtY29sb3I6I2Y0NDMzNn0ubWF0LWNoZWNrYm94LWRpc2FibGVkLm1hdC1jaGVja2JveC1jaGVja2VkW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtY2hlY2tib3gtYmFja2dyb3VuZFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtY2hlY2tib3gtZGlzYWJsZWQubWF0LWNoZWNrYm94LWluZGV0ZXJtaW5hdGVbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1jaGVja2JveC1iYWNrZ3JvdW5kW19uZ2NvbnRlbnQtJUNPTVAlXXtiYWNrZ3JvdW5kLWNvbG9yOiNiMGIwYjB9Lm1hdC1jaGVja2JveC1kaXNhYmxlZFtfbmdjb250ZW50LSVDT01QJV06bm90KC5tYXQtY2hlY2tib3gtY2hlY2tlZCkgICAubWF0LWNoZWNrYm94LWZyYW1lW19uZ2NvbnRlbnQtJUNPTVAlXXtib3JkZXItY29sb3I6I2IwYjBiMH0ubWF0LWNoZWNrYm94LWRpc2FibGVkW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtY2hlY2tib3gtbGFiZWxbX25nY29udGVudC0lQ09NUCVde2NvbG9yOiM2MTYxNjF9Lm1hdC1jaGVja2JveFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXJpcHBsZS1lbGVtZW50W19uZ2NvbnRlbnQtJUNPTVAlXXtiYWNrZ3JvdW5kLWNvbG9yOiMwMDB9Lm1hdC1jaGVja2JveC1jaGVja2VkW19uZ2NvbnRlbnQtJUNPTVAlXTpub3QoLm1hdC1jaGVja2JveC1kaXNhYmxlZCkubWF0LXByaW1hcnkgICAubWF0LXJpcHBsZS1lbGVtZW50W19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1jaGVja2JveFtfbmdjb250ZW50LSVDT01QJV06YWN0aXZlOm5vdCgubWF0LWNoZWNrYm94LWRpc2FibGVkKS5tYXQtcHJpbWFyeSAgIC5tYXQtcmlwcGxlLWVsZW1lbnRbX25nY29udGVudC0lQ09NUCVde2JhY2tncm91bmQ6I2Y1N2MwMH0ubWF0LWNoZWNrYm94LWNoZWNrZWRbX25nY29udGVudC0lQ09NUCVdOm5vdCgubWF0LWNoZWNrYm94LWRpc2FibGVkKS5tYXQtYWNjZW50ICAgLm1hdC1yaXBwbGUtZWxlbWVudFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtY2hlY2tib3hbX25nY29udGVudC0lQ09NUCVdOmFjdGl2ZTpub3QoLm1hdC1jaGVja2JveC1kaXNhYmxlZCkubWF0LWFjY2VudCAgIC5tYXQtcmlwcGxlLWVsZW1lbnRbX25nY29udGVudC0lQ09NUCVde2JhY2tncm91bmQ6I2ZmOTgwMH0ubWF0LWNoZWNrYm94LWNoZWNrZWRbX25nY29udGVudC0lQ09NUCVdOm5vdCgubWF0LWNoZWNrYm94LWRpc2FibGVkKS5tYXQtd2FybiAgIC5tYXQtcmlwcGxlLWVsZW1lbnRbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWNoZWNrYm94W19uZ2NvbnRlbnQtJUNPTVAlXTphY3RpdmU6bm90KC5tYXQtY2hlY2tib3gtZGlzYWJsZWQpLm1hdC13YXJuICAgLm1hdC1yaXBwbGUtZWxlbWVudFtfbmdjb250ZW50LSVDT01QJV17YmFja2dyb3VuZDojZjQ0MzM2fS5tYXQtY2hpcC5tYXQtc3RhbmRhcmQtY2hpcFtfbmdjb250ZW50LSVDT01QJV17YmFja2dyb3VuZC1jb2xvcjojZTBlMGUwO2NvbG9yOiMyMTIxMjF9Lm1hdC1jaGlwLm1hdC1zdGFuZGFyZC1jaGlwW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtY2hpcC1yZW1vdmVbX25nY29udGVudC0lQ09NUCVde2NvbG9yOiMyMTIxMjE7b3BhY2l0eTouNH0ubWF0LWNoaXAubWF0LXN0YW5kYXJkLWNoaXBbX25nY29udGVudC0lQ09NUCVdOm5vdCgubWF0LWNoaXAtZGlzYWJsZWQpOmFjdGl2ZXtib3gtc2hhZG93OjBweCAzcHggM3B4IC0ycHggcmdiYSgwLCAwLCAwLCAwLjIpLDBweCAzcHggNHB4IDBweCByZ2JhKDAsIDAsIDAsIDAuMTQpLDBweCAxcHggOHB4IDBweCByZ2JhKDAsIDAsIDAsIDAuMTIpfS5tYXQtY2hpcC5tYXQtc3RhbmRhcmQtY2hpcFtfbmdjb250ZW50LSVDT01QJV06bm90KC5tYXQtY2hpcC1kaXNhYmxlZCkgICAubWF0LWNoaXAtcmVtb3ZlW19uZ2NvbnRlbnQtJUNPTVAlXTpob3ZlcntvcGFjaXR5Oi41NH0ubWF0LWNoaXAubWF0LXN0YW5kYXJkLWNoaXAubWF0LWNoaXAtZGlzYWJsZWRbX25nY29udGVudC0lQ09NUCVde29wYWNpdHk6LjR9Lm1hdC1jaGlwLm1hdC1zdGFuZGFyZC1jaGlwW19uZ2NvbnRlbnQtJUNPTVAlXTo6YWZ0ZXJ7YmFja2dyb3VuZDojMDAwfS5tYXQtY2hpcC5tYXQtc3RhbmRhcmQtY2hpcC5tYXQtY2hpcC1zZWxlY3RlZC5tYXQtcHJpbWFyeVtfbmdjb250ZW50LSVDT01QJV17YmFja2dyb3VuZC1jb2xvcjojZjU3YzAwO2NvbG9yOiNmZmZ9Lm1hdC1jaGlwLm1hdC1zdGFuZGFyZC1jaGlwLm1hdC1jaGlwLXNlbGVjdGVkLm1hdC1wcmltYXJ5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtY2hpcC1yZW1vdmVbX25nY29udGVudC0lQ09NUCVde2NvbG9yOiNmZmY7b3BhY2l0eTouNH0ubWF0LWNoaXAubWF0LXN0YW5kYXJkLWNoaXAubWF0LWNoaXAtc2VsZWN0ZWQubWF0LXByaW1hcnlbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1yaXBwbGUtZWxlbWVudFtfbmdjb250ZW50LSVDT01QJV17YmFja2dyb3VuZC1jb2xvcjpyZ2JhKDI1NSwyNTUsMjU1LC4xKX0ubWF0LWNoaXAubWF0LXN0YW5kYXJkLWNoaXAubWF0LWNoaXAtc2VsZWN0ZWQubWF0LXdhcm5bX25nY29udGVudC0lQ09NUCVde2JhY2tncm91bmQtY29sb3I6I2Y0NDMzNjtjb2xvcjojZmZmfS5tYXQtY2hpcC5tYXQtc3RhbmRhcmQtY2hpcC5tYXQtY2hpcC1zZWxlY3RlZC5tYXQtd2Fybltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWNoaXAtcmVtb3ZlW19uZ2NvbnRlbnQtJUNPTVAlXXtjb2xvcjojZmZmO29wYWNpdHk6LjR9Lm1hdC1jaGlwLm1hdC1zdGFuZGFyZC1jaGlwLm1hdC1jaGlwLXNlbGVjdGVkLm1hdC13YXJuW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtcmlwcGxlLWVsZW1lbnRbX25nY29udGVudC0lQ09NUCVde2JhY2tncm91bmQtY29sb3I6cmdiYSgyNTUsMjU1LDI1NSwuMSl9Lm1hdC1jaGlwLm1hdC1zdGFuZGFyZC1jaGlwLm1hdC1jaGlwLXNlbGVjdGVkLm1hdC1hY2NlbnRbX25nY29udGVudC0lQ09NUCVde2JhY2tncm91bmQtY29sb3I6I2ZmOTgwMDtjb2xvcjojZmZmfS5tYXQtY2hpcC5tYXQtc3RhbmRhcmQtY2hpcC5tYXQtY2hpcC1zZWxlY3RlZC5tYXQtYWNjZW50W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtY2hpcC1yZW1vdmVbX25nY29udGVudC0lQ09NUCVde2NvbG9yOiNmZmY7b3BhY2l0eTouNH0ubWF0LWNoaXAubWF0LXN0YW5kYXJkLWNoaXAubWF0LWNoaXAtc2VsZWN0ZWQubWF0LWFjY2VudFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXJpcHBsZS1lbGVtZW50W19uZ2NvbnRlbnQtJUNPTVAlXXtiYWNrZ3JvdW5kLWNvbG9yOnJnYmEoMjU1LDI1NSwyNTUsLjEpfS5tYXQtdGFibGVbX25nY29udGVudC0lQ09NUCVde2JhY2tncm91bmQ6I2ZmZn0ubWF0LXRhYmxlW19uZ2NvbnRlbnQtJUNPTVAlXSAgIHRoZWFkW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10YWJsZVtfbmdjb250ZW50LSVDT01QJV0gICB0Ym9keVtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdGFibGVbX25nY29udGVudC0lQ09NUCVdICAgdGZvb3RbX25nY29udGVudC0lQ09NUCVdLCBtYXQtaGVhZGVyLXJvd1tfbmdjb250ZW50LSVDT01QJV0sIG1hdC1yb3dbX25nY29udGVudC0lQ09NUCVdLCBtYXQtZm9vdGVyLXJvd1tfbmdjb250ZW50LSVDT01QJV0sIFttYXQtaGVhZGVyLXJvd11bX25nY29udGVudC0lQ09NUCVdLCBbbWF0LXJvd11bX25nY29udGVudC0lQ09NUCVdLCBbbWF0LWZvb3Rlci1yb3ddW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10YWJsZS1zdGlja3lbX25nY29udGVudC0lQ09NUCVde2JhY2tncm91bmQ6aW5oZXJpdH1tYXQtcm93W19uZ2NvbnRlbnQtJUNPTVAlXSwgbWF0LWhlYWRlci1yb3dbX25nY29udGVudC0lQ09NUCVdLCBtYXQtZm9vdGVyLXJvd1tfbmdjb250ZW50LSVDT01QJV0sIHRoLm1hdC1oZWFkZXItY2VsbFtfbmdjb250ZW50LSVDT01QJV0sIHRkLm1hdC1jZWxsW19uZ2NvbnRlbnQtJUNPTVAlXSwgdGQubWF0LWZvb3Rlci1jZWxsW19uZ2NvbnRlbnQtJUNPTVAlXXtib3JkZXItYm90dG9tLWNvbG9yOnJnYmEoMCwwLDAsLjEyKX0ubWF0LWhlYWRlci1jZWxsW19uZ2NvbnRlbnQtJUNPTVAlXXtjb2xvcjojNjE2MTYxfS5tYXQtY2VsbFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtZm9vdGVyLWNlbGxbX25nY29udGVudC0lQ09NUCVde2NvbG9yOiMyMTIxMjF9Lm1hdC1jYWxlbmRhci1hcnJvd1tfbmdjb250ZW50LSVDT01QJV17Ym9yZGVyLXRvcC1jb2xvcjpyZ2JhKDAsMCwwLC41NCl9Lm1hdC1kYXRlcGlja2VyLXRvZ2dsZVtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtZGF0ZXBpY2tlci1jb250ZW50W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtY2FsZW5kYXItbmV4dC1idXR0b25bX25nY29udGVudC0lQ09NUCVdLCAubWF0LWRhdGVwaWNrZXItY29udGVudFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWNhbGVuZGFyLXByZXZpb3VzLWJ1dHRvbltfbmdjb250ZW50LSVDT01QJV17Y29sb3I6cmdiYSgwLDAsMCwuNTQpfS5tYXQtY2FsZW5kYXItdGFibGUtaGVhZGVyW19uZ2NvbnRlbnQtJUNPTVAlXXtjb2xvcjpyZ2JhKDAsMCwwLC4zOCl9Lm1hdC1jYWxlbmRhci10YWJsZS1oZWFkZXItZGl2aWRlcltfbmdjb250ZW50LSVDT01QJV06OmFmdGVye2JhY2tncm91bmQ6cmdiYSgwLDAsMCwuMTIpfS5tYXQtY2FsZW5kYXItYm9keS1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17Y29sb3I6IzYxNjE2MX0ubWF0LWNhbGVuZGFyLWJvZHktY2VsbC1jb250ZW50W19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1kYXRlLXJhbmdlLWlucHV0LXNlcGFyYXRvcltfbmdjb250ZW50LSVDT01QJV17Y29sb3I6IzIxMjEyMTtib3JkZXItY29sb3I6dHJhbnNwYXJlbnR9Lm1hdC1jYWxlbmRhci1ib2R5LWRpc2FibGVkW19uZ2NvbnRlbnQtJUNPTVAlXSA+IC5tYXQtY2FsZW5kYXItYm9keS1jZWxsLWNvbnRlbnRbX25nY29udGVudC0lQ09NUCVdOm5vdCgubWF0LWNhbGVuZGFyLWJvZHktc2VsZWN0ZWQpOm5vdCgubWF0LWNhbGVuZGFyLWJvZHktY29tcGFyaXNvbi1pZGVudGljYWwpe2NvbG9yOiM3NTc1NzV9Lm1hdC1mb3JtLWZpZWxkLWRpc2FibGVkW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZGF0ZS1yYW5nZS1pbnB1dC1zZXBhcmF0b3JbX25nY29udGVudC0lQ09NUCVde2NvbG9yOiM3NTc1NzV9Lm1hdC1jYWxlbmRhci1ib2R5LWNlbGxbX25nY29udGVudC0lQ09NUCVdOm5vdCgubWF0LWNhbGVuZGFyLWJvZHktZGlzYWJsZWQpOmhvdmVyID4gLm1hdC1jYWxlbmRhci1ib2R5LWNlbGwtY29udGVudFtfbmdjb250ZW50LSVDT01QJV06bm90KC5tYXQtY2FsZW5kYXItYm9keS1zZWxlY3RlZCk6bm90KC5tYXQtY2FsZW5kYXItYm9keS1jb21wYXJpc29uLWlkZW50aWNhbCksIC5jZGsta2V5Ym9hcmQtZm9jdXNlZFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWNhbGVuZGFyLWJvZHktYWN0aXZlW19uZ2NvbnRlbnQtJUNPTVAlXSA+IC5tYXQtY2FsZW5kYXItYm9keS1jZWxsLWNvbnRlbnRbX25nY29udGVudC0lQ09NUCVdOm5vdCgubWF0LWNhbGVuZGFyLWJvZHktc2VsZWN0ZWQpOm5vdCgubWF0LWNhbGVuZGFyLWJvZHktY29tcGFyaXNvbi1pZGVudGljYWwpLCAuY2RrLXByb2dyYW0tZm9jdXNlZFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWNhbGVuZGFyLWJvZHktYWN0aXZlW19uZ2NvbnRlbnQtJUNPTVAlXSA+IC5tYXQtY2FsZW5kYXItYm9keS1jZWxsLWNvbnRlbnRbX25nY29udGVudC0lQ09NUCVdOm5vdCgubWF0LWNhbGVuZGFyLWJvZHktc2VsZWN0ZWQpOm5vdCgubWF0LWNhbGVuZGFyLWJvZHktY29tcGFyaXNvbi1pZGVudGljYWwpe2JhY2tncm91bmQtY29sb3I6cmdiYSgwLDAsMCwuMDQpfS5tYXQtY2FsZW5kYXItYm9keS1pbi1wcmV2aWV3W19uZ2NvbnRlbnQtJUNPTVAlXXtjb2xvcjpyZ2JhKDAsMCwwLC4yNCl9Lm1hdC1jYWxlbmRhci1ib2R5LXRvZGF5W19uZ2NvbnRlbnQtJUNPTVAlXTpub3QoLm1hdC1jYWxlbmRhci1ib2R5LXNlbGVjdGVkKTpub3QoLm1hdC1jYWxlbmRhci1ib2R5LWNvbXBhcmlzb24taWRlbnRpY2FsKXtib3JkZXItY29sb3I6cmdiYSgwLDAsMCwuMzgpfS5tYXQtY2FsZW5kYXItYm9keS1kaXNhYmxlZFtfbmdjb250ZW50LSVDT01QJV0gPiAubWF0LWNhbGVuZGFyLWJvZHktdG9kYXlbX25nY29udGVudC0lQ09NUCVdOm5vdCgubWF0LWNhbGVuZGFyLWJvZHktc2VsZWN0ZWQpOm5vdCgubWF0LWNhbGVuZGFyLWJvZHktY29tcGFyaXNvbi1pZGVudGljYWwpe2JvcmRlci1jb2xvcjpyZ2JhKDAsMCwwLC4xOCl9Lm1hdC1jYWxlbmRhci1ib2R5LWluLXJhbmdlW19uZ2NvbnRlbnQtJUNPTVAlXTo6YmVmb3Jle2JhY2tncm91bmQ6cmdiYSgyNDUsMTI0LDAsLjIpfS5tYXQtY2FsZW5kYXItYm9keS1jb21wYXJpc29uLWlkZW50aWNhbFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtY2FsZW5kYXItYm9keS1pbi1jb21wYXJpc29uLXJhbmdlW19uZ2NvbnRlbnQtJUNPTVAlXTo6YmVmb3Jle2JhY2tncm91bmQ6cmdiYSgyNDksMTcxLDAsLjIpfS5tYXQtY2FsZW5kYXItYm9keS1jb21wYXJpc29uLWJyaWRnZS1zdGFydFtfbmdjb250ZW50LSVDT01QJV06OmJlZm9yZSwgW2Rpcj1ydGxdW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtY2FsZW5kYXItYm9keS1jb21wYXJpc29uLWJyaWRnZS1lbmRbX25nY29udGVudC0lQ09NUCVdOjpiZWZvcmV7YmFja2dyb3VuZDpsaW5lYXItZ3JhZGllbnQodG8gcmlnaHQsIHJnYmEoMjQ1LCAxMjQsIDAsIDAuMikgNTAlLCByZ2JhKDI0OSwgMTcxLCAwLCAwLjIpIDUwJSl9Lm1hdC1jYWxlbmRhci1ib2R5LWNvbXBhcmlzb24tYnJpZGdlLWVuZFtfbmdjb250ZW50LSVDT01QJV06OmJlZm9yZSwgW2Rpcj1ydGxdW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtY2FsZW5kYXItYm9keS1jb21wYXJpc29uLWJyaWRnZS1zdGFydFtfbmdjb250ZW50LSVDT01QJV06OmJlZm9yZXtiYWNrZ3JvdW5kOmxpbmVhci1ncmFkaWVudCh0byBsZWZ0LCByZ2JhKDI0NSwgMTI0LCAwLCAwLjIpIDUwJSwgcmdiYSgyNDksIDE3MSwgMCwgMC4yKSA1MCUpfS5tYXQtY2FsZW5kYXItYm9keS1pbi1yYW5nZVtfbmdjb250ZW50LSVDT01QJV0gPiAubWF0LWNhbGVuZGFyLWJvZHktY29tcGFyaXNvbi1pZGVudGljYWxbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWNhbGVuZGFyLWJvZHktaW4tY29tcGFyaXNvbi1yYW5nZS5tYXQtY2FsZW5kYXItYm9keS1pbi1yYW5nZVtfbmdjb250ZW50LSVDT01QJV06OmFmdGVye2JhY2tncm91bmQ6I2E4ZGFiNX0ubWF0LWNhbGVuZGFyLWJvZHktY29tcGFyaXNvbi1pZGVudGljYWwubWF0LWNhbGVuZGFyLWJvZHktc2VsZWN0ZWRbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWNhbGVuZGFyLWJvZHktaW4tY29tcGFyaXNvbi1yYW5nZVtfbmdjb250ZW50LSVDT01QJV0gPiAubWF0LWNhbGVuZGFyLWJvZHktc2VsZWN0ZWRbX25nY29udGVudC0lQ09NUCVde2JhY2tncm91bmQ6IzQ2YTM1ZX0ubWF0LWNhbGVuZGFyLWJvZHktc2VsZWN0ZWRbX25nY29udGVudC0lQ09NUCVde2JhY2tncm91bmQtY29sb3I6I2Y1N2MwMDtjb2xvcjojZmZmfS5tYXQtY2FsZW5kYXItYm9keS1kaXNhYmxlZFtfbmdjb250ZW50LSVDT01QJV0gPiAubWF0LWNhbGVuZGFyLWJvZHktc2VsZWN0ZWRbX25nY29udGVudC0lQ09NUCVde2JhY2tncm91bmQtY29sb3I6cmdiYSgyNDUsMTI0LDAsLjQpfS5tYXQtY2FsZW5kYXItYm9keS10b2RheS5tYXQtY2FsZW5kYXItYm9keS1zZWxlY3RlZFtfbmdjb250ZW50LSVDT01QJV17Ym94LXNoYWRvdzppbnNldCAwIDAgMCAxcHggI2ZmZn0ubWF0LWRhdGVwaWNrZXItY29udGVudFtfbmdjb250ZW50LSVDT01QJV17Ym94LXNoYWRvdzowcHggMnB4IDRweCAtMXB4IHJnYmEoMCwgMCwgMCwgMC4yKSwwcHggNHB4IDVweCAwcHggcmdiYSgwLCAwLCAwLCAwLjE0KSwwcHggMXB4IDEwcHggMHB4IHJnYmEoMCwgMCwgMCwgMC4xMik7YmFja2dyb3VuZC1jb2xvcjojZmZmO2NvbG9yOiMyMTIxMjF9Lm1hdC1kYXRlcGlja2VyLWNvbnRlbnQubWF0LWFjY2VudFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWNhbGVuZGFyLWJvZHktaW4tcmFuZ2VbX25nY29udGVudC0lQ09NUCVdOjpiZWZvcmV7YmFja2dyb3VuZDpyZ2JhKDI1NSwxNTIsMCwuMil9Lm1hdC1kYXRlcGlja2VyLWNvbnRlbnQubWF0LWFjY2VudFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWNhbGVuZGFyLWJvZHktY29tcGFyaXNvbi1pZGVudGljYWxbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWRhdGVwaWNrZXItY29udGVudC5tYXQtYWNjZW50W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtY2FsZW5kYXItYm9keS1pbi1jb21wYXJpc29uLXJhbmdlW19uZ2NvbnRlbnQtJUNPTVAlXTo6YmVmb3Jle2JhY2tncm91bmQ6cmdiYSgyNDksMTcxLDAsLjIpfS5tYXQtZGF0ZXBpY2tlci1jb250ZW50Lm1hdC1hY2NlbnRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1jYWxlbmRhci1ib2R5LWNvbXBhcmlzb24tYnJpZGdlLXN0YXJ0W19uZ2NvbnRlbnQtJUNPTVAlXTo6YmVmb3JlLCAubWF0LWRhdGVwaWNrZXItY29udGVudC5tYXQtYWNjZW50W19uZ2NvbnRlbnQtJUNPTVAlXSAgIFtkaXI9cnRsXVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWNhbGVuZGFyLWJvZHktY29tcGFyaXNvbi1icmlkZ2UtZW5kW19uZ2NvbnRlbnQtJUNPTVAlXTo6YmVmb3Jle2JhY2tncm91bmQ6bGluZWFyLWdyYWRpZW50KHRvIHJpZ2h0LCByZ2JhKDI1NSwgMTUyLCAwLCAwLjIpIDUwJSwgcmdiYSgyNDksIDE3MSwgMCwgMC4yKSA1MCUpfS5tYXQtZGF0ZXBpY2tlci1jb250ZW50Lm1hdC1hY2NlbnRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1jYWxlbmRhci1ib2R5LWNvbXBhcmlzb24tYnJpZGdlLWVuZFtfbmdjb250ZW50LSVDT01QJV06OmJlZm9yZSwgLm1hdC1kYXRlcGlja2VyLWNvbnRlbnQubWF0LWFjY2VudFtfbmdjb250ZW50LSVDT01QJV0gICBbZGlyPXJ0bF1bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1jYWxlbmRhci1ib2R5LWNvbXBhcmlzb24tYnJpZGdlLXN0YXJ0W19uZ2NvbnRlbnQtJUNPTVAlXTo6YmVmb3Jle2JhY2tncm91bmQ6bGluZWFyLWdyYWRpZW50KHRvIGxlZnQsIHJnYmEoMjU1LCAxNTIsIDAsIDAuMikgNTAlLCByZ2JhKDI0OSwgMTcxLCAwLCAwLjIpIDUwJSl9Lm1hdC1kYXRlcGlja2VyLWNvbnRlbnQubWF0LWFjY2VudFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWNhbGVuZGFyLWJvZHktaW4tcmFuZ2VbX25nY29udGVudC0lQ09NUCVdID4gLm1hdC1jYWxlbmRhci1ib2R5LWNvbXBhcmlzb24taWRlbnRpY2FsW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1kYXRlcGlja2VyLWNvbnRlbnQubWF0LWFjY2VudFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWNhbGVuZGFyLWJvZHktaW4tY29tcGFyaXNvbi1yYW5nZS5tYXQtY2FsZW5kYXItYm9keS1pbi1yYW5nZVtfbmdjb250ZW50LSVDT01QJV06OmFmdGVye2JhY2tncm91bmQ6I2E4ZGFiNX0ubWF0LWRhdGVwaWNrZXItY29udGVudC5tYXQtYWNjZW50W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtY2FsZW5kYXItYm9keS1jb21wYXJpc29uLWlkZW50aWNhbC5tYXQtY2FsZW5kYXItYm9keS1zZWxlY3RlZFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtZGF0ZXBpY2tlci1jb250ZW50Lm1hdC1hY2NlbnRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1jYWxlbmRhci1ib2R5LWluLWNvbXBhcmlzb24tcmFuZ2VbX25nY29udGVudC0lQ09NUCVdID4gLm1hdC1jYWxlbmRhci1ib2R5LXNlbGVjdGVkW19uZ2NvbnRlbnQtJUNPTVAlXXtiYWNrZ3JvdW5kOiM0NmEzNWV9Lm1hdC1kYXRlcGlja2VyLWNvbnRlbnQubWF0LWFjY2VudFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWNhbGVuZGFyLWJvZHktc2VsZWN0ZWRbX25nY29udGVudC0lQ09NUCVde2JhY2tncm91bmQtY29sb3I6I2ZmOTgwMDtjb2xvcjojZmZmfS5tYXQtZGF0ZXBpY2tlci1jb250ZW50Lm1hdC1hY2NlbnRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1jYWxlbmRhci1ib2R5LWRpc2FibGVkW19uZ2NvbnRlbnQtJUNPTVAlXSA+IC5tYXQtY2FsZW5kYXItYm9keS1zZWxlY3RlZFtfbmdjb250ZW50LSVDT01QJV17YmFja2dyb3VuZC1jb2xvcjpyZ2JhKDI1NSwxNTIsMCwuNCl9Lm1hdC1kYXRlcGlja2VyLWNvbnRlbnQubWF0LWFjY2VudFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWNhbGVuZGFyLWJvZHktdG9kYXkubWF0LWNhbGVuZGFyLWJvZHktc2VsZWN0ZWRbX25nY29udGVudC0lQ09NUCVde2JveC1zaGFkb3c6aW5zZXQgMCAwIDAgMXB4ICNmZmZ9Lm1hdC1kYXRlcGlja2VyLWNvbnRlbnQubWF0LXdhcm5bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1jYWxlbmRhci1ib2R5LWluLXJhbmdlW19uZ2NvbnRlbnQtJUNPTVAlXTo6YmVmb3Jle2JhY2tncm91bmQ6cmdiYSgyNDQsNjcsNTQsLjIpfS5tYXQtZGF0ZXBpY2tlci1jb250ZW50Lm1hdC13YXJuW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtY2FsZW5kYXItYm9keS1jb21wYXJpc29uLWlkZW50aWNhbFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtZGF0ZXBpY2tlci1jb250ZW50Lm1hdC13YXJuW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtY2FsZW5kYXItYm9keS1pbi1jb21wYXJpc29uLXJhbmdlW19uZ2NvbnRlbnQtJUNPTVAlXTo6YmVmb3Jle2JhY2tncm91bmQ6cmdiYSgyNDksMTcxLDAsLjIpfS5tYXQtZGF0ZXBpY2tlci1jb250ZW50Lm1hdC13YXJuW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtY2FsZW5kYXItYm9keS1jb21wYXJpc29uLWJyaWRnZS1zdGFydFtfbmdjb250ZW50LSVDT01QJV06OmJlZm9yZSwgLm1hdC1kYXRlcGlja2VyLWNvbnRlbnQubWF0LXdhcm5bX25nY29udGVudC0lQ09NUCVdICAgW2Rpcj1ydGxdW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtY2FsZW5kYXItYm9keS1jb21wYXJpc29uLWJyaWRnZS1lbmRbX25nY29udGVudC0lQ09NUCVdOjpiZWZvcmV7YmFja2dyb3VuZDpsaW5lYXItZ3JhZGllbnQodG8gcmlnaHQsIHJnYmEoMjQ0LCA2NywgNTQsIDAuMikgNTAlLCByZ2JhKDI0OSwgMTcxLCAwLCAwLjIpIDUwJSl9Lm1hdC1kYXRlcGlja2VyLWNvbnRlbnQubWF0LXdhcm5bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1jYWxlbmRhci1ib2R5LWNvbXBhcmlzb24tYnJpZGdlLWVuZFtfbmdjb250ZW50LSVDT01QJV06OmJlZm9yZSwgLm1hdC1kYXRlcGlja2VyLWNvbnRlbnQubWF0LXdhcm5bX25nY29udGVudC0lQ09NUCVdICAgW2Rpcj1ydGxdW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtY2FsZW5kYXItYm9keS1jb21wYXJpc29uLWJyaWRnZS1zdGFydFtfbmdjb250ZW50LSVDT01QJV06OmJlZm9yZXtiYWNrZ3JvdW5kOmxpbmVhci1ncmFkaWVudCh0byBsZWZ0LCByZ2JhKDI0NCwgNjcsIDU0LCAwLjIpIDUwJSwgcmdiYSgyNDksIDE3MSwgMCwgMC4yKSA1MCUpfS5tYXQtZGF0ZXBpY2tlci1jb250ZW50Lm1hdC13YXJuW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtY2FsZW5kYXItYm9keS1pbi1yYW5nZVtfbmdjb250ZW50LSVDT01QJV0gPiAubWF0LWNhbGVuZGFyLWJvZHktY29tcGFyaXNvbi1pZGVudGljYWxbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWRhdGVwaWNrZXItY29udGVudC5tYXQtd2Fybltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWNhbGVuZGFyLWJvZHktaW4tY29tcGFyaXNvbi1yYW5nZS5tYXQtY2FsZW5kYXItYm9keS1pbi1yYW5nZVtfbmdjb250ZW50LSVDT01QJV06OmFmdGVye2JhY2tncm91bmQ6I2E4ZGFiNX0ubWF0LWRhdGVwaWNrZXItY29udGVudC5tYXQtd2Fybltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWNhbGVuZGFyLWJvZHktY29tcGFyaXNvbi1pZGVudGljYWwubWF0LWNhbGVuZGFyLWJvZHktc2VsZWN0ZWRbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWRhdGVwaWNrZXItY29udGVudC5tYXQtd2Fybltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWNhbGVuZGFyLWJvZHktaW4tY29tcGFyaXNvbi1yYW5nZVtfbmdjb250ZW50LSVDT01QJV0gPiAubWF0LWNhbGVuZGFyLWJvZHktc2VsZWN0ZWRbX25nY29udGVudC0lQ09NUCVde2JhY2tncm91bmQ6IzQ2YTM1ZX0ubWF0LWRhdGVwaWNrZXItY29udGVudC5tYXQtd2Fybltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWNhbGVuZGFyLWJvZHktc2VsZWN0ZWRbX25nY29udGVudC0lQ09NUCVde2JhY2tncm91bmQtY29sb3I6I2Y0NDMzNjtjb2xvcjojZmZmfS5tYXQtZGF0ZXBpY2tlci1jb250ZW50Lm1hdC13YXJuW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtY2FsZW5kYXItYm9keS1kaXNhYmxlZFtfbmdjb250ZW50LSVDT01QJV0gPiAubWF0LWNhbGVuZGFyLWJvZHktc2VsZWN0ZWRbX25nY29udGVudC0lQ09NUCVde2JhY2tncm91bmQtY29sb3I6cmdiYSgyNDQsNjcsNTQsLjQpfS5tYXQtZGF0ZXBpY2tlci1jb250ZW50Lm1hdC13YXJuW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtY2FsZW5kYXItYm9keS10b2RheS5tYXQtY2FsZW5kYXItYm9keS1zZWxlY3RlZFtfbmdjb250ZW50LSVDT01QJV17Ym94LXNoYWRvdzppbnNldCAwIDAgMCAxcHggI2ZmZn0ubWF0LWRhdGVwaWNrZXItY29udGVudC10b3VjaFtfbmdjb250ZW50LSVDT01QJV17Ym94LXNoYWRvdzowcHggMHB4IDBweCAwcHggcmdiYSgwLCAwLCAwLCAwLjIpLDBweCAwcHggMHB4IDBweCByZ2JhKDAsIDAsIDAsIDAuMTQpLDBweCAwcHggMHB4IDBweCByZ2JhKDAsIDAsIDAsIDAuMTIpfS5tYXQtZGF0ZXBpY2tlci10b2dnbGUtYWN0aXZlW19uZ2NvbnRlbnQtJUNPTVAlXXtjb2xvcjojZjU3YzAwfS5tYXQtZGF0ZXBpY2tlci10b2dnbGUtYWN0aXZlLm1hdC1hY2NlbnRbX25nY29udGVudC0lQ09NUCVde2NvbG9yOiNmZjk4MDB9Lm1hdC1kYXRlcGlja2VyLXRvZ2dsZS1hY3RpdmUubWF0LXdhcm5bX25nY29udGVudC0lQ09NUCVde2NvbG9yOiNmNDQzMzZ9Lm1hdC1kYXRlLXJhbmdlLWlucHV0LWlubmVyW2Rpc2FibGVkXVtfbmdjb250ZW50LSVDT01QJV17Y29sb3I6Izc1NzU3NX0ubWF0LWRpYWxvZy1jb250YWluZXJbX25nY29udGVudC0lQ09NUCVde2JveC1zaGFkb3c6MHB4IDExcHggMTVweCAtN3B4IHJnYmEoMCwgMCwgMCwgMC4yKSwwcHggMjRweCAzOHB4IDNweCByZ2JhKDAsIDAsIDAsIDAuMTQpLDBweCA5cHggNDZweCA4cHggcmdiYSgwLCAwLCAwLCAwLjEyKTtiYWNrZ3JvdW5kOiNmZmY7Y29sb3I6IzIxMjEyMX0ubWF0LWRpdmlkZXJbX25nY29udGVudC0lQ09NUCVde2JvcmRlci10b3AtY29sb3I6cmdiYSgwLDAsMCwuMTIpfS5tYXQtZGl2aWRlci12ZXJ0aWNhbFtfbmdjb250ZW50LSVDT01QJV17Ym9yZGVyLXJpZ2h0LWNvbG9yOnJnYmEoMCwwLDAsLjEyKX0ubWF0LWV4cGFuc2lvbi1wYW5lbFtfbmdjb250ZW50LSVDT01QJV17YmFja2dyb3VuZDojZmZmO2NvbG9yOiMyMTIxMjF9Lm1hdC1leHBhbnNpb24tcGFuZWxbX25nY29udGVudC0lQ09NUCVdOm5vdChbY2xhc3MqPW1hdC1lbGV2YXRpb24tel0pe2JveC1zaGFkb3c6MHB4IDNweCAxcHggLTJweCByZ2JhKDAsIDAsIDAsIDAuMiksMHB4IDJweCAycHggMHB4IHJnYmEoMCwgMCwgMCwgMC4xNCksMHB4IDFweCA1cHggMHB4IHJnYmEoMCwgMCwgMCwgMC4xMil9Lm1hdC1hY3Rpb24tcm93W19uZ2NvbnRlbnQtJUNPTVAlXXtib3JkZXItdG9wLWNvbG9yOnJnYmEoMCwwLDAsLjEyKX0ubWF0LWV4cGFuc2lvbi1wYW5lbFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWV4cGFuc2lvbi1wYW5lbC1oZWFkZXIuY2RrLWtleWJvYXJkLWZvY3VzZWRbX25nY29udGVudC0lQ09NUCVdOm5vdChbYXJpYS1kaXNhYmxlZD10cnVlXSksIC5tYXQtZXhwYW5zaW9uLXBhbmVsW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZXhwYW5zaW9uLXBhbmVsLWhlYWRlci5jZGstcHJvZ3JhbS1mb2N1c2VkW19uZ2NvbnRlbnQtJUNPTVAlXTpub3QoW2FyaWEtZGlzYWJsZWQ9dHJ1ZV0pLCAubWF0LWV4cGFuc2lvbi1wYW5lbFtfbmdjb250ZW50LSVDT01QJV06bm90KC5tYXQtZXhwYW5kZWQpICAgLm1hdC1leHBhbnNpb24tcGFuZWwtaGVhZGVyW19uZ2NvbnRlbnQtJUNPTVAlXTpob3Zlcjpub3QoW2FyaWEtZGlzYWJsZWQ9dHJ1ZV0pe2JhY2tncm91bmQ6cmdiYSgwLDAsMCwuMDQpfUBtZWRpYShob3Zlcjogbm9uZSl7Lm1hdC1leHBhbnNpb24tcGFuZWxbX25nY29udGVudC0lQ09NUCVdOm5vdCgubWF0LWV4cGFuZGVkKTpub3QoW2FyaWEtZGlzYWJsZWQ9dHJ1ZV0pICAgLm1hdC1leHBhbnNpb24tcGFuZWwtaGVhZGVyW19uZ2NvbnRlbnQtJUNPTVAlXTpob3ZlcntiYWNrZ3JvdW5kOiNmZmZ9fS5tYXQtZXhwYW5zaW9uLXBhbmVsLWhlYWRlci10aXRsZVtfbmdjb250ZW50LSVDT01QJV17Y29sb3I6IzIxMjEyMX0ubWF0LWV4cGFuc2lvbi1wYW5lbC1oZWFkZXItZGVzY3JpcHRpb25bX25nY29udGVudC0lQ09NUCVdLCAubWF0LWV4cGFuc2lvbi1pbmRpY2F0b3JbX25nY29udGVudC0lQ09NUCVdOjphZnRlcntjb2xvcjojNjE2MTYxfS5tYXQtZXhwYW5zaW9uLXBhbmVsLWhlYWRlclthcmlhLWRpc2FibGVkPXRydWVdW19uZ2NvbnRlbnQtJUNPTVAlXXtjb2xvcjpyZ2JhKDAsMCwwLC4yNil9Lm1hdC1leHBhbnNpb24tcGFuZWwtaGVhZGVyW2FyaWEtZGlzYWJsZWQ9dHJ1ZV1bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1leHBhbnNpb24tcGFuZWwtaGVhZGVyLXRpdGxlW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1leHBhbnNpb24tcGFuZWwtaGVhZGVyW2FyaWEtZGlzYWJsZWQ9dHJ1ZV1bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1leHBhbnNpb24tcGFuZWwtaGVhZGVyLWRlc2NyaXB0aW9uW19uZ2NvbnRlbnQtJUNPTVAlXXtjb2xvcjppbmhlcml0fS5tYXQtZXhwYW5zaW9uLXBhbmVsLWhlYWRlcltfbmdjb250ZW50LSVDT01QJV17aGVpZ2h0OjQ4cHh9Lm1hdC1leHBhbnNpb24tcGFuZWwtaGVhZGVyLm1hdC1leHBhbmRlZFtfbmdjb250ZW50LSVDT01QJV17aGVpZ2h0OjY0cHh9Lm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXtjb2xvcjpyZ2JhKDk3LDk3LDk3LC42KX0ubWF0LWhpbnRbX25nY29udGVudC0lQ09NUCVde2NvbG9yOnJnYmEoOTcsOTcsOTcsLjYpfS5tYXQtZm9ybS1maWVsZC5tYXQtZm9jdXNlZFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVde2NvbG9yOiNmNTdjMDB9Lm1hdC1mb3JtLWZpZWxkLm1hdC1mb2N1c2VkW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbC5tYXQtYWNjZW50W19uZ2NvbnRlbnQtJUNPTVAlXXtjb2xvcjojZmY5ODAwfS5tYXQtZm9ybS1maWVsZC5tYXQtZm9jdXNlZFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWwubWF0LXdhcm5bX25nY29udGVudC0lQ09NUCVde2NvbG9yOiNmNDQzMzZ9Lm1hdC1mb2N1c2VkW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1yZXF1aXJlZC1tYXJrZXJbX25nY29udGVudC0lQ09NUCVde2NvbG9yOiNmZjk4MDB9Lm1hdC1mb3JtLWZpZWxkLXJpcHBsZVtfbmdjb250ZW50LSVDT01QJV17YmFja2dyb3VuZC1jb2xvcjpyZ2JhKDAsMCwwLC44Nyl9Lm1hdC1mb3JtLWZpZWxkLm1hdC1mb2N1c2VkW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1yaXBwbGVbX25nY29udGVudC0lQ09NUCVde2JhY2tncm91bmQtY29sb3I6I2Y1N2MwMH0ubWF0LWZvcm0tZmllbGQubWF0LWZvY3VzZWRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLXJpcHBsZS5tYXQtYWNjZW50W19uZ2NvbnRlbnQtJUNPTVAlXXtiYWNrZ3JvdW5kLWNvbG9yOiNmZjk4MDB9Lm1hdC1mb3JtLWZpZWxkLm1hdC1mb2N1c2VkW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1yaXBwbGUubWF0LXdhcm5bX25nY29udGVudC0lQ09NUCVde2JhY2tncm91bmQtY29sb3I6I2Y0NDMzNn0ubWF0LWZvcm0tZmllbGQtdHlwZS1tYXQtbmF0aXZlLXNlbGVjdC5tYXQtZm9jdXNlZFtfbmdjb250ZW50LSVDT01QJV06bm90KC5tYXQtZm9ybS1maWVsZC1pbnZhbGlkKSAgIC5tYXQtZm9ybS1maWVsZC1pbmZpeFtfbmdjb250ZW50LSVDT01QJV06OmFmdGVye2NvbG9yOiNmNTdjMDB9Lm1hdC1mb3JtLWZpZWxkLXR5cGUtbWF0LW5hdGl2ZS1zZWxlY3QubWF0LWZvY3VzZWRbX25nY29udGVudC0lQ09NUCVdOm5vdCgubWF0LWZvcm0tZmllbGQtaW52YWxpZCkubWF0LWFjY2VudCAgIC5tYXQtZm9ybS1maWVsZC1pbmZpeFtfbmdjb250ZW50LSVDT01QJV06OmFmdGVye2NvbG9yOiNmZjk4MDB9Lm1hdC1mb3JtLWZpZWxkLXR5cGUtbWF0LW5hdGl2ZS1zZWxlY3QubWF0LWZvY3VzZWRbX25nY29udGVudC0lQ09NUCVdOm5vdCgubWF0LWZvcm0tZmllbGQtaW52YWxpZCkubWF0LXdhcm4gICAubWF0LWZvcm0tZmllbGQtaW5maXhbX25nY29udGVudC0lQ09NUCVdOjphZnRlcntjb2xvcjojZjQ0MzM2fS5tYXQtZm9ybS1maWVsZC5tYXQtZm9ybS1maWVsZC1pbnZhbGlkW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17Y29sb3I6I2Y0NDMzNn0ubWF0LWZvcm0tZmllbGQubWF0LWZvcm0tZmllbGQtaW52YWxpZFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWwubWF0LWFjY2VudFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtZm9ybS1maWVsZC5tYXQtZm9ybS1maWVsZC1pbnZhbGlkW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtcmVxdWlyZWQtbWFya2VyW19uZ2NvbnRlbnQtJUNPTVAlXXtjb2xvcjojZjQ0MzM2fS5tYXQtZm9ybS1maWVsZC5tYXQtZm9ybS1maWVsZC1pbnZhbGlkW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1yaXBwbGVbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWZvcm0tZmllbGQubWF0LWZvcm0tZmllbGQtaW52YWxpZFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtcmlwcGxlLm1hdC1hY2NlbnRbX25nY29udGVudC0lQ09NUCVde2JhY2tncm91bmQtY29sb3I6I2Y0NDMzNn0ubWF0LWVycm9yW19uZ2NvbnRlbnQtJUNPTVAlXXtjb2xvcjojZjQ0MzM2fS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWxlZ2FjeVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVde2NvbG9yOiM2MTYxNjF9Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtbGVnYWN5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaGludFtfbmdjb250ZW50LSVDT01QJV17Y29sb3I6IzYxNjE2MX0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1sZWdhY3lbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLXVuZGVybGluZVtfbmdjb250ZW50LSVDT01QJV17YmFja2dyb3VuZC1jb2xvcjpyZ2JhKDAsMCwwLC40Mil9Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtbGVnYWN5Lm1hdC1mb3JtLWZpZWxkLWRpc2FibGVkW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC11bmRlcmxpbmVbX25nY29udGVudC0lQ09NUCVde2JhY2tncm91bmQtaW1hZ2U6bGluZWFyLWdyYWRpZW50KHRvIHJpZ2h0LCByZ2JhKDAsIDAsIDAsIDAuNDIpIDAlLCByZ2JhKDAsIDAsIDAsIDAuNDIpIDMzJSwgdHJhbnNwYXJlbnQgMCUpO2JhY2tncm91bmQtc2l6ZTo0cHggMTAwJTtiYWNrZ3JvdW5kLXJlcGVhdDpyZXBlYXQteH0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1zdGFuZGFyZFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtdW5kZXJsaW5lW19uZ2NvbnRlbnQtJUNPTVAlXXtiYWNrZ3JvdW5kLWNvbG9yOnJnYmEoMCwwLDAsLjQyKX0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1zdGFuZGFyZC5tYXQtZm9ybS1maWVsZC1kaXNhYmxlZFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtdW5kZXJsaW5lW19uZ2NvbnRlbnQtJUNPTVAlXXtiYWNrZ3JvdW5kLWltYWdlOmxpbmVhci1ncmFkaWVudCh0byByaWdodCwgcmdiYSgwLCAwLCAwLCAwLjQyKSAwJSwgcmdiYSgwLCAwLCAwLCAwLjQyKSAzMyUsIHRyYW5zcGFyZW50IDAlKTtiYWNrZ3JvdW5kLXNpemU6NHB4IDEwMCU7YmFja2dyb3VuZC1yZXBlYXQ6cmVwZWF0LXh9Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtZmlsbFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtZmxleFtfbmdjb250ZW50LSVDT01QJV17YmFja2dyb3VuZC1jb2xvcjpyZ2JhKDAsMCwwLC4wNCl9Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtZmlsbC5tYXQtZm9ybS1maWVsZC1kaXNhYmxlZFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtZmxleFtfbmdjb250ZW50LSVDT01QJV17YmFja2dyb3VuZC1jb2xvcjpyZ2JhKDAsMCwwLC4wMil9Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2UtZmlsbFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtdW5kZXJsaW5lW19uZ2NvbnRlbnQtJUNPTVAlXTo6YmVmb3Jle2JhY2tncm91bmQtY29sb3I6cmdiYSgwLDAsMCwuNDIpfS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWZpbGwubWF0LWZvcm0tZmllbGQtZGlzYWJsZWRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXtjb2xvcjojNzU3NTc1fS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWZpbGwubWF0LWZvcm0tZmllbGQtZGlzYWJsZWRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLXVuZGVybGluZVtfbmdjb250ZW50LSVDT01QJV06OmJlZm9yZXtiYWNrZ3JvdW5kLWNvbG9yOnRyYW5zcGFyZW50fS5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLW91dGxpbmVbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLW91dGxpbmVbX25nY29udGVudC0lQ09NUCVde2NvbG9yOnJnYmEoMCwwLDAsLjEyKX0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1vdXRsaW5lW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1vdXRsaW5lLXRoaWNrW19uZ2NvbnRlbnQtJUNPTVAlXXtjb2xvcjpyZ2JhKDAsMCwwLC44Nyl9Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2Utb3V0bGluZS5tYXQtZm9jdXNlZFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtb3V0bGluZS10aGlja1tfbmdjb250ZW50LSVDT01QJV17Y29sb3I6I2Y1N2MwMH0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1vdXRsaW5lLm1hdC1mb2N1c2VkLm1hdC1hY2NlbnRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLW91dGxpbmUtdGhpY2tbX25nY29udGVudC0lQ09NUCVde2NvbG9yOiNmZjk4MDB9Lm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2Utb3V0bGluZS5tYXQtZm9jdXNlZC5tYXQtd2Fybltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtb3V0bGluZS10aGlja1tfbmdjb250ZW50LSVDT01QJV17Y29sb3I6I2Y0NDMzNn0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1vdXRsaW5lLm1hdC1mb3JtLWZpZWxkLWludmFsaWQubWF0LWZvcm0tZmllbGQtaW52YWxpZFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtb3V0bGluZS10aGlja1tfbmdjb250ZW50LSVDT01QJV17Y29sb3I6I2Y0NDMzNn0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1vdXRsaW5lLm1hdC1mb3JtLWZpZWxkLWRpc2FibGVkW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17Y29sb3I6Izc1NzU3NX0ubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1vdXRsaW5lLm1hdC1mb3JtLWZpZWxkLWRpc2FibGVkW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1vdXRsaW5lW19uZ2NvbnRlbnQtJUNPTVAlXXtjb2xvcjpyZ2JhKDAsMCwwLC4wNil9Lm1hdC1pY29uLm1hdC1wcmltYXJ5W19uZ2NvbnRlbnQtJUNPTVAlXXtjb2xvcjojZjU3YzAwfS5tYXQtaWNvbi5tYXQtYWNjZW50W19uZ2NvbnRlbnQtJUNPTVAlXXtjb2xvcjojZmY5ODAwfS5tYXQtaWNvbi5tYXQtd2Fybltfbmdjb250ZW50LSVDT01QJV17Y29sb3I6I2Y0NDMzNn0ubWF0LWZvcm0tZmllbGQtdHlwZS1tYXQtbmF0aXZlLXNlbGVjdFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtaW5maXhbX25nY29udGVudC0lQ09NUCVdOjphZnRlcntjb2xvcjojNjE2MTYxfS5tYXQtaW5wdXQtZWxlbWVudFtfbmdjb250ZW50LSVDT01QJV06ZGlzYWJsZWQsIC5tYXQtZm9ybS1maWVsZC10eXBlLW1hdC1uYXRpdmUtc2VsZWN0Lm1hdC1mb3JtLWZpZWxkLWRpc2FibGVkW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9ybS1maWVsZC1pbmZpeFtfbmdjb250ZW50LSVDT01QJV06OmFmdGVye2NvbG9yOiM3NTc1NzV9Lm1hdC1pbnB1dC1lbGVtZW50W19uZ2NvbnRlbnQtJUNPTVAlXXtjYXJldC1jb2xvcjojZjU3YzAwfS5tYXQtaW5wdXQtZWxlbWVudFtfbmdjb250ZW50LSVDT01QJV06OnBsYWNlaG9sZGVye2NvbG9yOnJnYmEoOTcsOTcsOTcsLjQyKX0ubWF0LWlucHV0LWVsZW1lbnRbX25nY29udGVudC0lQ09NUCVdOjotbW96LXBsYWNlaG9sZGVye2NvbG9yOnJnYmEoOTcsOTcsOTcsLjQyKX0ubWF0LWlucHV0LWVsZW1lbnRbX25nY29udGVudC0lQ09NUCVdOjotd2Via2l0LWlucHV0LXBsYWNlaG9sZGVye2NvbG9yOnJnYmEoOTcsOTcsOTcsLjQyKX0ubWF0LWlucHV0LWVsZW1lbnRbX25nY29udGVudC0lQ09NUCVdOi1tcy1pbnB1dC1wbGFjZWhvbGRlcntjb2xvcjpyZ2JhKDk3LDk3LDk3LC40Mil9Lm1hdC1mb3JtLWZpZWxkLm1hdC1hY2NlbnRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pbnB1dC1lbGVtZW50W19uZ2NvbnRlbnQtJUNPTVAlXXtjYXJldC1jb2xvcjojZmY5ODAwfS5tYXQtZm9ybS1maWVsZC5tYXQtd2Fybltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWlucHV0LWVsZW1lbnRbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWZvcm0tZmllbGQtaW52YWxpZFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWlucHV0LWVsZW1lbnRbX25nY29udGVudC0lQ09NUCVde2NhcmV0LWNvbG9yOiNmNDQzMzZ9Lm1hdC1mb3JtLWZpZWxkLXR5cGUtbWF0LW5hdGl2ZS1zZWxlY3QubWF0LWZvcm0tZmllbGQtaW52YWxpZFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtaW5maXhbX25nY29udGVudC0lQ09NUCVdOjphZnRlcntjb2xvcjojZjQ0MzM2fS5tYXQtbGlzdC1iYXNlW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGlzdC1pdGVtW19uZ2NvbnRlbnQtJUNPTVAlXXtjb2xvcjojMjEyMTIxfS5tYXQtbGlzdC1iYXNlW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGlzdC1vcHRpb25bX25nY29udGVudC0lQ09NUCVde2NvbG9yOiMyMTIxMjF9Lm1hdC1saXN0LWJhc2VbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1zdWJoZWFkZXJbX25nY29udGVudC0lQ09NUCVde2NvbG9yOiM2MTYxNjF9Lm1hdC1saXN0LWl0ZW0tZGlzYWJsZWRbX25nY29udGVudC0lQ09NUCVde2JhY2tncm91bmQtY29sb3I6I2VlZX0ubWF0LWxpc3Qtb3B0aW9uW19uZ2NvbnRlbnQtJUNPTVAlXTpob3ZlciwgLm1hdC1saXN0LW9wdGlvbltfbmdjb250ZW50LSVDT01QJV06Zm9jdXMsIC5tYXQtbmF2LWxpc3RbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saXN0LWl0ZW1bX25nY29udGVudC0lQ09NUCVdOmhvdmVyLCAubWF0LW5hdi1saXN0W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtbGlzdC1pdGVtW19uZ2NvbnRlbnQtJUNPTVAlXTpmb2N1cywgLm1hdC1hY3Rpb24tbGlzdFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWxpc3QtaXRlbVtfbmdjb250ZW50LSVDT01QJV06aG92ZXIsIC5tYXQtYWN0aW9uLWxpc3RbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1saXN0LWl0ZW1bX25nY29udGVudC0lQ09NUCVdOmZvY3Vze2JhY2tncm91bmQ6cmdiYSgwLDAsMCwuMDQpfS5tYXQtbGlzdC1zaW5nbGUtc2VsZWN0ZWQtb3B0aW9uW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1saXN0LXNpbmdsZS1zZWxlY3RlZC1vcHRpb25bX25nY29udGVudC0lQ09NUCVdOmhvdmVyLCAubWF0LWxpc3Qtc2luZ2xlLXNlbGVjdGVkLW9wdGlvbltfbmdjb250ZW50LSVDT01QJV06Zm9jdXN7YmFja2dyb3VuZDpyZ2JhKDAsMCwwLC4xMil9Lm1hdC1tZW51LXBhbmVsW19uZ2NvbnRlbnQtJUNPTVAlXXtiYWNrZ3JvdW5kOiNmZmZ9Lm1hdC1tZW51LXBhbmVsW19uZ2NvbnRlbnQtJUNPTVAlXTpub3QoW2NsYXNzKj1tYXQtZWxldmF0aW9uLXpdKXtib3gtc2hhZG93OjBweCAycHggNHB4IC0xcHggcmdiYSgwLCAwLCAwLCAwLjIpLDBweCA0cHggNXB4IDBweCByZ2JhKDAsIDAsIDAsIDAuMTQpLDBweCAxcHggMTBweCAwcHggcmdiYSgwLCAwLCAwLCAwLjEyKX0ubWF0LW1lbnUtaXRlbVtfbmdjb250ZW50LSVDT01QJV17YmFja2dyb3VuZDp0cmFuc3BhcmVudDtjb2xvcjojMjEyMTIxfS5tYXQtbWVudS1pdGVtW2Rpc2FibGVkXVtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtbWVudS1pdGVtW2Rpc2FibGVkXVtfbmdjb250ZW50LSVDT01QJV06OmFmdGVye2NvbG9yOnJnYmEoMCwwLDAsLjM4KX0ubWF0LW1lbnUtaXRlbVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWljb24tbm8tY29sb3JbX25nY29udGVudC0lQ09NUCVdLCAubWF0LW1lbnUtaXRlbS1zdWJtZW51LXRyaWdnZXJbX25nY29udGVudC0lQ09NUCVdOjphZnRlcntjb2xvcjpyZ2JhKDAsMCwwLC41NCl9Lm1hdC1tZW51LWl0ZW1bX25nY29udGVudC0lQ09NUCVdOmhvdmVyOm5vdChbZGlzYWJsZWRdKSwgLm1hdC1tZW51LWl0ZW0uY2RrLXByb2dyYW0tZm9jdXNlZFtfbmdjb250ZW50LSVDT01QJV06bm90KFtkaXNhYmxlZF0pLCAubWF0LW1lbnUtaXRlbS5jZGsta2V5Ym9hcmQtZm9jdXNlZFtfbmdjb250ZW50LSVDT01QJV06bm90KFtkaXNhYmxlZF0pLCAubWF0LW1lbnUtaXRlbS1oaWdobGlnaHRlZFtfbmdjb250ZW50LSVDT01QJV06bm90KFtkaXNhYmxlZF0pe2JhY2tncm91bmQ6cmdiYSgwLDAsMCwuMDQpfS5tYXQtcGFnaW5hdG9yW19uZ2NvbnRlbnQtJUNPTVAlXXtiYWNrZ3JvdW5kOiNmZmZ9Lm1hdC1wYWdpbmF0b3JbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXBhZ2luYXRvci1wYWdlLXNpemVbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1zZWxlY3QtdHJpZ2dlcltfbmdjb250ZW50LSVDT01QJV17Y29sb3I6IzYxNjE2MX0ubWF0LXBhZ2luYXRvci1kZWNyZW1lbnRbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXBhZ2luYXRvci1pbmNyZW1lbnRbX25nY29udGVudC0lQ09NUCVde2JvcmRlci10b3A6MnB4IHNvbGlkIHJnYmEoMCwwLDAsLjU0KTtib3JkZXItcmlnaHQ6MnB4IHNvbGlkIHJnYmEoMCwwLDAsLjU0KX0ubWF0LXBhZ2luYXRvci1maXJzdFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtcGFnaW5hdG9yLWxhc3RbX25nY29udGVudC0lQ09NUCVde2JvcmRlci10b3A6MnB4IHNvbGlkIHJnYmEoMCwwLDAsLjU0KX0ubWF0LWljb24tYnV0dG9uW2Rpc2FibGVkXVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXBhZ2luYXRvci1kZWNyZW1lbnRbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWljb24tYnV0dG9uW2Rpc2FibGVkXVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXBhZ2luYXRvci1pbmNyZW1lbnRbX25nY29udGVudC0lQ09NUCVdLCAubWF0LWljb24tYnV0dG9uW2Rpc2FibGVkXVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXBhZ2luYXRvci1maXJzdFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtaWNvbi1idXR0b25bZGlzYWJsZWRdW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtcGFnaW5hdG9yLWxhc3RbX25nY29udGVudC0lQ09NUCVde2JvcmRlci1jb2xvcjpyZ2JhKDAsMCwwLC4zOCl9Lm1hdC1wYWdpbmF0b3ItY29udGFpbmVyW19uZ2NvbnRlbnQtJUNPTVAlXXttaW4taGVpZ2h0OjU2cHh9Lm1hdC1wcm9ncmVzcy1iYXItYmFja2dyb3VuZFtfbmdjb250ZW50LSVDT01QJV17ZmlsbDojZmY5ODAwfS5tYXQtcHJvZ3Jlc3MtYmFyLWJ1ZmZlcltfbmdjb250ZW50LSVDT01QJV17YmFja2dyb3VuZC1jb2xvcjojZmY5ODAwfS5tYXQtcHJvZ3Jlc3MtYmFyLWZpbGxbX25nY29udGVudC0lQ09NUCVdOjphZnRlcntiYWNrZ3JvdW5kLWNvbG9yOiNmNTdjMDB9Lm1hdC1wcm9ncmVzcy1iYXIubWF0LWFjY2VudFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXByb2dyZXNzLWJhci1iYWNrZ3JvdW5kW19uZ2NvbnRlbnQtJUNPTVAlXXtmaWxsOiNmZjk4MDB9Lm1hdC1wcm9ncmVzcy1iYXIubWF0LWFjY2VudFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXByb2dyZXNzLWJhci1idWZmZXJbX25nY29udGVudC0lQ09NUCVde2JhY2tncm91bmQtY29sb3I6I2ZmOTgwMH0ubWF0LXByb2dyZXNzLWJhci5tYXQtYWNjZW50W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtcHJvZ3Jlc3MtYmFyLWZpbGxbX25nY29udGVudC0lQ09NUCVdOjphZnRlcntiYWNrZ3JvdW5kLWNvbG9yOiNmZjk4MDB9Lm1hdC1wcm9ncmVzcy1iYXIubWF0LXdhcm5bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1wcm9ncmVzcy1iYXItYmFja2dyb3VuZFtfbmdjb250ZW50LSVDT01QJV17ZmlsbDojZmZjZGQyfS5tYXQtcHJvZ3Jlc3MtYmFyLm1hdC13YXJuW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtcHJvZ3Jlc3MtYmFyLWJ1ZmZlcltfbmdjb250ZW50LSVDT01QJV17YmFja2dyb3VuZC1jb2xvcjojZmZjZGQyfS5tYXQtcHJvZ3Jlc3MtYmFyLm1hdC13YXJuW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtcHJvZ3Jlc3MtYmFyLWZpbGxbX25nY29udGVudC0lQ09NUCVdOjphZnRlcntiYWNrZ3JvdW5kLWNvbG9yOiNmNDQzMzZ9Lm1hdC1wcm9ncmVzcy1zcGlubmVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIGNpcmNsZVtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtc3Bpbm5lcltfbmdjb250ZW50LSVDT01QJV0gICBjaXJjbGVbX25nY29udGVudC0lQ09NUCVde3N0cm9rZTojZjU3YzAwfS5tYXQtcHJvZ3Jlc3Mtc3Bpbm5lci5tYXQtYWNjZW50W19uZ2NvbnRlbnQtJUNPTVAlXSAgIGNpcmNsZVtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtc3Bpbm5lci5tYXQtYWNjZW50W19uZ2NvbnRlbnQtJUNPTVAlXSAgIGNpcmNsZVtfbmdjb250ZW50LSVDT01QJV17c3Ryb2tlOiNmZjk4MDB9Lm1hdC1wcm9ncmVzcy1zcGlubmVyLm1hdC13YXJuW19uZ2NvbnRlbnQtJUNPTVAlXSAgIGNpcmNsZVtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtc3Bpbm5lci5tYXQtd2Fybltfbmdjb250ZW50LSVDT01QJV0gICBjaXJjbGVbX25nY29udGVudC0lQ09NUCVde3N0cm9rZTojZjQ0MzM2fS5tYXQtcmFkaW8tb3V0ZXItY2lyY2xlW19uZ2NvbnRlbnQtJUNPTVAlXXtib3JkZXItY29sb3I6IzYxNjE2MX0ubWF0LXJhZGlvLWJ1dHRvbi5tYXQtcHJpbWFyeS5tYXQtcmFkaW8tY2hlY2tlZFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXJhZGlvLW91dGVyLWNpcmNsZVtfbmdjb250ZW50LSVDT01QJV17Ym9yZGVyLWNvbG9yOiNmNTdjMDB9Lm1hdC1yYWRpby1idXR0b24ubWF0LXByaW1hcnlbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1yYWRpby1pbm5lci1jaXJjbGVbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXJhZGlvLWJ1dHRvbi5tYXQtcHJpbWFyeVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXJhZGlvLXJpcHBsZVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXJpcHBsZS1lbGVtZW50W19uZ2NvbnRlbnQtJUNPTVAlXTpub3QoLm1hdC1yYWRpby1wZXJzaXN0ZW50LXJpcHBsZSksIC5tYXQtcmFkaW8tYnV0dG9uLm1hdC1wcmltYXJ5Lm1hdC1yYWRpby1jaGVja2VkW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtcmFkaW8tcGVyc2lzdGVudC1yaXBwbGVbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXJhZGlvLWJ1dHRvbi5tYXQtcHJpbWFyeVtfbmdjb250ZW50LSVDT01QJV06YWN0aXZlICAgLm1hdC1yYWRpby1wZXJzaXN0ZW50LXJpcHBsZVtfbmdjb250ZW50LSVDT01QJV17YmFja2dyb3VuZC1jb2xvcjojZjU3YzAwfS5tYXQtcmFkaW8tYnV0dG9uLm1hdC1hY2NlbnQubWF0LXJhZGlvLWNoZWNrZWRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1yYWRpby1vdXRlci1jaXJjbGVbX25nY29udGVudC0lQ09NUCVde2JvcmRlci1jb2xvcjojZmY5ODAwfS5tYXQtcmFkaW8tYnV0dG9uLm1hdC1hY2NlbnRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1yYWRpby1pbm5lci1jaXJjbGVbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXJhZGlvLWJ1dHRvbi5tYXQtYWNjZW50W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtcmFkaW8tcmlwcGxlW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtcmlwcGxlLWVsZW1lbnRbX25nY29udGVudC0lQ09NUCVdOm5vdCgubWF0LXJhZGlvLXBlcnNpc3RlbnQtcmlwcGxlKSwgLm1hdC1yYWRpby1idXR0b24ubWF0LWFjY2VudC5tYXQtcmFkaW8tY2hlY2tlZFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXJhZGlvLXBlcnNpc3RlbnQtcmlwcGxlW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1yYWRpby1idXR0b24ubWF0LWFjY2VudFtfbmdjb250ZW50LSVDT01QJV06YWN0aXZlICAgLm1hdC1yYWRpby1wZXJzaXN0ZW50LXJpcHBsZVtfbmdjb250ZW50LSVDT01QJV17YmFja2dyb3VuZC1jb2xvcjojZmY5ODAwfS5tYXQtcmFkaW8tYnV0dG9uLm1hdC13YXJuLm1hdC1yYWRpby1jaGVja2VkW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtcmFkaW8tb3V0ZXItY2lyY2xlW19uZ2NvbnRlbnQtJUNPTVAlXXtib3JkZXItY29sb3I6I2Y0NDMzNn0ubWF0LXJhZGlvLWJ1dHRvbi5tYXQtd2Fybltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXJhZGlvLWlubmVyLWNpcmNsZVtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtcmFkaW8tYnV0dG9uLm1hdC13YXJuW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtcmFkaW8tcmlwcGxlW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtcmlwcGxlLWVsZW1lbnRbX25nY29udGVudC0lQ09NUCVdOm5vdCgubWF0LXJhZGlvLXBlcnNpc3RlbnQtcmlwcGxlKSwgLm1hdC1yYWRpby1idXR0b24ubWF0LXdhcm4ubWF0LXJhZGlvLWNoZWNrZWRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1yYWRpby1wZXJzaXN0ZW50LXJpcHBsZVtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtcmFkaW8tYnV0dG9uLm1hdC13YXJuW19uZ2NvbnRlbnQtJUNPTVAlXTphY3RpdmUgICAubWF0LXJhZGlvLXBlcnNpc3RlbnQtcmlwcGxlW19uZ2NvbnRlbnQtJUNPTVAlXXtiYWNrZ3JvdW5kLWNvbG9yOiNmNDQzMzZ9Lm1hdC1yYWRpby1idXR0b24ubWF0LXJhZGlvLWRpc2FibGVkLm1hdC1yYWRpby1jaGVja2VkW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtcmFkaW8tb3V0ZXItY2lyY2xlW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1yYWRpby1idXR0b24ubWF0LXJhZGlvLWRpc2FibGVkW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtcmFkaW8tb3V0ZXItY2lyY2xlW19uZ2NvbnRlbnQtJUNPTVAlXXtib3JkZXItY29sb3I6cmdiYSgwLDAsMCwuMzgpfS5tYXQtcmFkaW8tYnV0dG9uLm1hdC1yYWRpby1kaXNhYmxlZFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXJhZGlvLXJpcHBsZVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXJpcHBsZS1lbGVtZW50W19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1yYWRpby1idXR0b24ubWF0LXJhZGlvLWRpc2FibGVkW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtcmFkaW8taW5uZXItY2lyY2xlW19uZ2NvbnRlbnQtJUNPTVAlXXtiYWNrZ3JvdW5kLWNvbG9yOnJnYmEoMCwwLDAsLjM4KX0ubWF0LXJhZGlvLWJ1dHRvbi5tYXQtcmFkaW8tZGlzYWJsZWRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1yYWRpby1sYWJlbC1jb250ZW50W19uZ2NvbnRlbnQtJUNPTVAlXXtjb2xvcjpyZ2JhKDAsMCwwLC4zOCl9Lm1hdC1yYWRpby1idXR0b25bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1yaXBwbGUtZWxlbWVudFtfbmdjb250ZW50LSVDT01QJV17YmFja2dyb3VuZC1jb2xvcjojMDAwfS5tYXQtc2VsZWN0LXZhbHVlW19uZ2NvbnRlbnQtJUNPTVAlXXtjb2xvcjojMjEyMTIxfS5tYXQtc2VsZWN0LXBsYWNlaG9sZGVyW19uZ2NvbnRlbnQtJUNPTVAlXXtjb2xvcjpyZ2JhKDk3LDk3LDk3LC40Mil9Lm1hdC1zZWxlY3QtZGlzYWJsZWRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1zZWxlY3QtdmFsdWVbX25nY29udGVudC0lQ09NUCVde2NvbG9yOiM3NTc1NzV9Lm1hdC1zZWxlY3QtYXJyb3dbX25nY29udGVudC0lQ09NUCVde2NvbG9yOiM2MTYxNjF9Lm1hdC1zZWxlY3QtcGFuZWxbX25nY29udGVudC0lQ09NUCVde2JhY2tncm91bmQ6I2ZmZn0ubWF0LXNlbGVjdC1wYW5lbFtfbmdjb250ZW50LSVDT01QJV06bm90KFtjbGFzcyo9bWF0LWVsZXZhdGlvbi16XSl7Ym94LXNoYWRvdzowcHggMnB4IDRweCAtMXB4IHJnYmEoMCwgMCwgMCwgMC4yKSwwcHggNHB4IDVweCAwcHggcmdiYSgwLCAwLCAwLCAwLjE0KSwwcHggMXB4IDEwcHggMHB4IHJnYmEoMCwgMCwgMCwgMC4xMil9Lm1hdC1zZWxlY3QtcGFuZWxbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1vcHRpb24ubWF0LXNlbGVjdGVkW19uZ2NvbnRlbnQtJUNPTVAlXTpub3QoLm1hdC1vcHRpb24tbXVsdGlwbGUpe2JhY2tncm91bmQ6cmdiYSgwLDAsMCwuMTIpfS5tYXQtZm9ybS1maWVsZC5tYXQtZm9jdXNlZC5tYXQtcHJpbWFyeVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXNlbGVjdC1hcnJvd1tfbmdjb250ZW50LSVDT01QJV17Y29sb3I6I2Y1N2MwMH0ubWF0LWZvcm0tZmllbGQubWF0LWZvY3VzZWQubWF0LWFjY2VudFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXNlbGVjdC1hcnJvd1tfbmdjb250ZW50LSVDT01QJV17Y29sb3I6I2ZmOTgwMH0ubWF0LWZvcm0tZmllbGQubWF0LWZvY3VzZWQubWF0LXdhcm5bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1zZWxlY3QtYXJyb3dbX25nY29udGVudC0lQ09NUCVde2NvbG9yOiNmNDQzMzZ9Lm1hdC1mb3JtLWZpZWxkW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtc2VsZWN0Lm1hdC1zZWxlY3QtaW52YWxpZFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXNlbGVjdC1hcnJvd1tfbmdjb250ZW50LSVDT01QJV17Y29sb3I6I2Y0NDMzNn0ubWF0LWZvcm0tZmllbGRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1zZWxlY3QubWF0LXNlbGVjdC1kaXNhYmxlZFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXNlbGVjdC1hcnJvd1tfbmdjb250ZW50LSVDT01QJV17Y29sb3I6Izc1NzU3NX0ubWF0LWRyYXdlci1jb250YWluZXJbX25nY29udGVudC0lQ09NUCVde2JhY2tncm91bmQtY29sb3I6I2ZhZmFmYTtjb2xvcjojMjEyMTIxfS5tYXQtZHJhd2VyW19uZ2NvbnRlbnQtJUNPTVAlXXtiYWNrZ3JvdW5kLWNvbG9yOiNmZmY7Y29sb3I6IzIxMjEyMX0ubWF0LWRyYXdlci5tYXQtZHJhd2VyLXB1c2hbX25nY29udGVudC0lQ09NUCVde2JhY2tncm91bmQtY29sb3I6I2ZmZn0ubWF0LWRyYXdlcltfbmdjb250ZW50LSVDT01QJV06bm90KC5tYXQtZHJhd2VyLXNpZGUpe2JveC1zaGFkb3c6MHB4IDhweCAxMHB4IC01cHggcmdiYSgwLCAwLCAwLCAwLjIpLDBweCAxNnB4IDI0cHggMnB4IHJnYmEoMCwgMCwgMCwgMC4xNCksMHB4IDZweCAzMHB4IDVweCByZ2JhKDAsIDAsIDAsIDAuMTIpfS5tYXQtZHJhd2VyLXNpZGVbX25nY29udGVudC0lQ09NUCVde2JvcmRlci1yaWdodDpzb2xpZCAxcHggcmdiYSgwLDAsMCwuMTIpfS5tYXQtZHJhd2VyLXNpZGUubWF0LWRyYXdlci1lbmRbX25nY29udGVudC0lQ09NUCVde2JvcmRlci1sZWZ0OnNvbGlkIDFweCByZ2JhKDAsMCwwLC4xMik7Ym9yZGVyLXJpZ2h0Om5vbmV9W2Rpcj1ydGxdW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZHJhd2VyLXNpZGVbX25nY29udGVudC0lQ09NUCVde2JvcmRlci1sZWZ0OnNvbGlkIDFweCByZ2JhKDAsMCwwLC4xMik7Ym9yZGVyLXJpZ2h0Om5vbmV9W2Rpcj1ydGxdW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZHJhd2VyLXNpZGUubWF0LWRyYXdlci1lbmRbX25nY29udGVudC0lQ09NUCVde2JvcmRlci1sZWZ0Om5vbmU7Ym9yZGVyLXJpZ2h0OnNvbGlkIDFweCByZ2JhKDAsMCwwLC4xMil9Lm1hdC1kcmF3ZXItYmFja2Ryb3AubWF0LWRyYXdlci1zaG93bltfbmdjb250ZW50LSVDT01QJV17YmFja2dyb3VuZC1jb2xvcjpyZ2JhKDAsMCwwLC42KX0ubWF0LXNsaWRlLXRvZ2dsZS5tYXQtY2hlY2tlZFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXNsaWRlLXRvZ2dsZS10aHVtYltfbmdjb250ZW50LSVDT01QJV17YmFja2dyb3VuZC1jb2xvcjojZmY5ODAwfS5tYXQtc2xpZGUtdG9nZ2xlLm1hdC1jaGVja2VkW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtc2xpZGUtdG9nZ2xlLWJhcltfbmdjb250ZW50LSVDT01QJV17YmFja2dyb3VuZC1jb2xvcjpyZ2JhKDI1NSwxNTIsMCwuNTQpfS5tYXQtc2xpZGUtdG9nZ2xlLm1hdC1jaGVja2VkW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtcmlwcGxlLWVsZW1lbnRbX25nY29udGVudC0lQ09NUCVde2JhY2tncm91bmQtY29sb3I6I2ZmOTgwMH0ubWF0LXNsaWRlLXRvZ2dsZS5tYXQtcHJpbWFyeS5tYXQtY2hlY2tlZFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXNsaWRlLXRvZ2dsZS10aHVtYltfbmdjb250ZW50LSVDT01QJV17YmFja2dyb3VuZC1jb2xvcjojZjU3YzAwfS5tYXQtc2xpZGUtdG9nZ2xlLm1hdC1wcmltYXJ5Lm1hdC1jaGVja2VkW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtc2xpZGUtdG9nZ2xlLWJhcltfbmdjb250ZW50LSVDT01QJV17YmFja2dyb3VuZC1jb2xvcjpyZ2JhKDI0NSwxMjQsMCwuNTQpfS5tYXQtc2xpZGUtdG9nZ2xlLm1hdC1wcmltYXJ5Lm1hdC1jaGVja2VkW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtcmlwcGxlLWVsZW1lbnRbX25nY29udGVudC0lQ09NUCVde2JhY2tncm91bmQtY29sb3I6I2Y1N2MwMH0ubWF0LXNsaWRlLXRvZ2dsZS5tYXQtd2Fybi5tYXQtY2hlY2tlZFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXNsaWRlLXRvZ2dsZS10aHVtYltfbmdjb250ZW50LSVDT01QJV17YmFja2dyb3VuZC1jb2xvcjojZjQ0MzM2fS5tYXQtc2xpZGUtdG9nZ2xlLm1hdC13YXJuLm1hdC1jaGVja2VkW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtc2xpZGUtdG9nZ2xlLWJhcltfbmdjb250ZW50LSVDT01QJV17YmFja2dyb3VuZC1jb2xvcjpyZ2JhKDI0NCw2Nyw1NCwuNTQpfS5tYXQtc2xpZGUtdG9nZ2xlLm1hdC13YXJuLm1hdC1jaGVja2VkW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtcmlwcGxlLWVsZW1lbnRbX25nY29udGVudC0lQ09NUCVde2JhY2tncm91bmQtY29sb3I6I2Y0NDMzNn0ubWF0LXNsaWRlLXRvZ2dsZVtfbmdjb250ZW50LSVDT01QJV06bm90KC5tYXQtY2hlY2tlZCkgICAubWF0LXJpcHBsZS1lbGVtZW50W19uZ2NvbnRlbnQtJUNPTVAlXXtiYWNrZ3JvdW5kLWNvbG9yOiMwMDB9Lm1hdC1zbGlkZS10b2dnbGUtdGh1bWJbX25nY29udGVudC0lQ09NUCVde2JveC1zaGFkb3c6MHB4IDJweCAxcHggLTFweCByZ2JhKDAsIDAsIDAsIDAuMiksMHB4IDFweCAxcHggMHB4IHJnYmEoMCwgMCwgMCwgMC4xNCksMHB4IDFweCAzcHggMHB4IHJnYmEoMCwgMCwgMCwgMC4xMik7YmFja2dyb3VuZC1jb2xvcjojZmFmYWZhfS5tYXQtc2xpZGUtdG9nZ2xlLWJhcltfbmdjb250ZW50LSVDT01QJV17YmFja2dyb3VuZC1jb2xvcjpyZ2JhKDAsMCwwLC4zOCl9Lm1hdC1zbGlkZXItdHJhY2stYmFja2dyb3VuZFtfbmdjb250ZW50LSVDT01QJV17YmFja2dyb3VuZC1jb2xvcjpyZ2JhKDAsMCwwLC4yNil9Lm1hdC1wcmltYXJ5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtc2xpZGVyLXRyYWNrLWZpbGxbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXByaW1hcnlbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1zbGlkZXItdGh1bWJbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXByaW1hcnlbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1zbGlkZXItdGh1bWItbGFiZWxbX25nY29udGVudC0lQ09NUCVde2JhY2tncm91bmQtY29sb3I6I2Y1N2MwMH0ubWF0LXByaW1hcnlbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1zbGlkZXItdGh1bWItbGFiZWwtdGV4dFtfbmdjb250ZW50LSVDT01QJV17Y29sb3I6I2ZmZn0ubWF0LXByaW1hcnlbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1zbGlkZXItZm9jdXMtcmluZ1tfbmdjb250ZW50LSVDT01QJV17YmFja2dyb3VuZC1jb2xvcjpyZ2JhKDI0NSwxMjQsMCwuMil9Lm1hdC1hY2NlbnRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1zbGlkZXItdHJhY2stZmlsbFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtYWNjZW50W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtc2xpZGVyLXRodW1iW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1hY2NlbnRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1zbGlkZXItdGh1bWItbGFiZWxbX25nY29udGVudC0lQ09NUCVde2JhY2tncm91bmQtY29sb3I6I2ZmOTgwMH0ubWF0LWFjY2VudFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXNsaWRlci10aHVtYi1sYWJlbC10ZXh0W19uZ2NvbnRlbnQtJUNPTVAlXXtjb2xvcjojZmZmfS5tYXQtYWNjZW50W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtc2xpZGVyLWZvY3VzLXJpbmdbX25nY29udGVudC0lQ09NUCVde2JhY2tncm91bmQtY29sb3I6cmdiYSgyNTUsMTUyLDAsLjIpfS5tYXQtd2Fybltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXNsaWRlci10cmFjay1maWxsW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC13YXJuW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtc2xpZGVyLXRodW1iW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC13YXJuW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtc2xpZGVyLXRodW1iLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXtiYWNrZ3JvdW5kLWNvbG9yOiNmNDQzMzZ9Lm1hdC13YXJuW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtc2xpZGVyLXRodW1iLWxhYmVsLXRleHRbX25nY29udGVudC0lQ09NUCVde2NvbG9yOiNmZmZ9Lm1hdC13YXJuW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtc2xpZGVyLWZvY3VzLXJpbmdbX25nY29udGVudC0lQ09NUCVde2JhY2tncm91bmQtY29sb3I6cmdiYSgyNDQsNjcsNTQsLjIpfS5tYXQtc2xpZGVyW19uZ2NvbnRlbnQtJUNPTVAlXTpob3ZlciAgIC5tYXQtc2xpZGVyLXRyYWNrLWJhY2tncm91bmRbX25nY29udGVudC0lQ09NUCVdLCAuY2RrLWZvY3VzZWRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1zbGlkZXItdHJhY2stYmFja2dyb3VuZFtfbmdjb250ZW50LSVDT01QJV17YmFja2dyb3VuZC1jb2xvcjpyZ2JhKDAsMCwwLC4zOCl9Lm1hdC1zbGlkZXItZGlzYWJsZWRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1zbGlkZXItdHJhY2stYmFja2dyb3VuZFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtc2xpZGVyLWRpc2FibGVkW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtc2xpZGVyLXRyYWNrLWZpbGxbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXNsaWRlci1kaXNhYmxlZFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXNsaWRlci10aHVtYltfbmdjb250ZW50LSVDT01QJV17YmFja2dyb3VuZC1jb2xvcjpyZ2JhKDAsMCwwLC4yNil9Lm1hdC1zbGlkZXItZGlzYWJsZWRbX25nY29udGVudC0lQ09NUCVdOmhvdmVyICAgLm1hdC1zbGlkZXItdHJhY2stYmFja2dyb3VuZFtfbmdjb250ZW50LSVDT01QJV17YmFja2dyb3VuZC1jb2xvcjpyZ2JhKDAsMCwwLC4yNil9Lm1hdC1zbGlkZXItbWluLXZhbHVlW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtc2xpZGVyLWZvY3VzLXJpbmdbX25nY29udGVudC0lQ09NUCVde2JhY2tncm91bmQtY29sb3I6cmdiYSgwLDAsMCwuMTIpfS5tYXQtc2xpZGVyLW1pbi12YWx1ZS5tYXQtc2xpZGVyLXRodW1iLWxhYmVsLXNob3dpbmdbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1zbGlkZXItdGh1bWJbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXNsaWRlci1taW4tdmFsdWUubWF0LXNsaWRlci10aHVtYi1sYWJlbC1zaG93aW5nW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtc2xpZGVyLXRodW1iLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXXtiYWNrZ3JvdW5kLWNvbG9yOnJnYmEoMCwwLDAsLjg3KX0ubWF0LXNsaWRlci1taW4tdmFsdWUubWF0LXNsaWRlci10aHVtYi1sYWJlbC1zaG93aW5nLmNkay1mb2N1c2VkW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtc2xpZGVyLXRodW1iW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1zbGlkZXItbWluLXZhbHVlLm1hdC1zbGlkZXItdGh1bWItbGFiZWwtc2hvd2luZy5jZGstZm9jdXNlZFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXNsaWRlci10aHVtYi1sYWJlbFtfbmdjb250ZW50LSVDT01QJV17YmFja2dyb3VuZC1jb2xvcjpyZ2JhKDAsMCwwLC4yNil9Lm1hdC1zbGlkZXItbWluLXZhbHVlW19uZ2NvbnRlbnQtJUNPTVAlXTpub3QoLm1hdC1zbGlkZXItdGh1bWItbGFiZWwtc2hvd2luZykgICAubWF0LXNsaWRlci10aHVtYltfbmdjb250ZW50LSVDT01QJV17Ym9yZGVyLWNvbG9yOnJnYmEoMCwwLDAsLjI2KTtiYWNrZ3JvdW5kLWNvbG9yOnRyYW5zcGFyZW50fS5tYXQtc2xpZGVyLW1pbi12YWx1ZVtfbmdjb250ZW50LSVDT01QJV06bm90KC5tYXQtc2xpZGVyLXRodW1iLWxhYmVsLXNob3dpbmcpOmhvdmVyICAgLm1hdC1zbGlkZXItdGh1bWJbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXNsaWRlci1taW4tdmFsdWVbX25nY29udGVudC0lQ09NUCVdOm5vdCgubWF0LXNsaWRlci10aHVtYi1sYWJlbC1zaG93aW5nKS5jZGstZm9jdXNlZCAgIC5tYXQtc2xpZGVyLXRodW1iW19uZ2NvbnRlbnQtJUNPTVAlXXtib3JkZXItY29sb3I6cmdiYSgwLDAsMCwuMzgpfS5tYXQtc2xpZGVyLW1pbi12YWx1ZVtfbmdjb250ZW50LSVDT01QJV06bm90KC5tYXQtc2xpZGVyLXRodW1iLWxhYmVsLXNob3dpbmcpOmhvdmVyLm1hdC1zbGlkZXItZGlzYWJsZWQgICAubWF0LXNsaWRlci10aHVtYltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtc2xpZGVyLW1pbi12YWx1ZVtfbmdjb250ZW50LSVDT01QJV06bm90KC5tYXQtc2xpZGVyLXRodW1iLWxhYmVsLXNob3dpbmcpLmNkay1mb2N1c2VkLm1hdC1zbGlkZXItZGlzYWJsZWQgICAubWF0LXNsaWRlci10aHVtYltfbmdjb250ZW50LSVDT01QJV17Ym9yZGVyLWNvbG9yOnJnYmEoMCwwLDAsLjI2KX0ubWF0LXNsaWRlci1oYXMtdGlja3NbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1zbGlkZXItd3JhcHBlcltfbmdjb250ZW50LSVDT01QJV06OmFmdGVye2JvcmRlci1jb2xvcjpyZ2JhKDAsMCwwLC43KX0ubWF0LXNsaWRlci1ob3Jpem9udGFsW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtc2xpZGVyLXRpY2tzW19uZ2NvbnRlbnQtJUNPTVAlXXtiYWNrZ3JvdW5kLWltYWdlOnJlcGVhdGluZy1saW5lYXItZ3JhZGllbnQodG8gcmlnaHQsIHJnYmEoMCwgMCwgMCwgMC43KSwgcmdiYSgwLCAwLCAwLCAwLjcpIDJweCwgdHJhbnNwYXJlbnQgMCwgdHJhbnNwYXJlbnQpO2JhY2tncm91bmQtaW1hZ2U6LW1vei1yZXBlYXRpbmctbGluZWFyLWdyYWRpZW50KDAuMDAwMWRlZywgcmdiYSgwLCAwLCAwLCAwLjcpLCByZ2JhKDAsIDAsIDAsIDAuNykgMnB4LCB0cmFuc3BhcmVudCAwLCB0cmFuc3BhcmVudCl9Lm1hdC1zbGlkZXItdmVydGljYWxbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1zbGlkZXItdGlja3NbX25nY29udGVudC0lQ09NUCVde2JhY2tncm91bmQtaW1hZ2U6cmVwZWF0aW5nLWxpbmVhci1ncmFkaWVudCh0byBib3R0b20sIHJnYmEoMCwgMCwgMCwgMC43KSwgcmdiYSgwLCAwLCAwLCAwLjcpIDJweCwgdHJhbnNwYXJlbnQgMCwgdHJhbnNwYXJlbnQpfS5tYXQtc3RlcC1oZWFkZXIuY2RrLWtleWJvYXJkLWZvY3VzZWRbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXN0ZXAtaGVhZGVyLmNkay1wcm9ncmFtLWZvY3VzZWRbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXN0ZXAtaGVhZGVyW19uZ2NvbnRlbnQtJUNPTVAlXTpob3ZlcntiYWNrZ3JvdW5kLWNvbG9yOnJnYmEoMCwwLDAsLjA0KX1AbWVkaWEoaG92ZXI6IG5vbmUpey5tYXQtc3RlcC1oZWFkZXJbX25nY29udGVudC0lQ09NUCVdOmhvdmVye2JhY2tncm91bmQ6bm9uZX19Lm1hdC1zdGVwLWhlYWRlcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXN0ZXAtbGFiZWxbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXN0ZXAtaGVhZGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtc3RlcC1vcHRpb25hbFtfbmdjb250ZW50LSVDT01QJV17Y29sb3I6IzYxNjE2MX0ubWF0LXN0ZXAtaGVhZGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtc3RlcC1pY29uW19uZ2NvbnRlbnQtJUNPTVAlXXtiYWNrZ3JvdW5kLWNvbG9yOiM2MTYxNjE7Y29sb3I6I2ZmZn0ubWF0LXN0ZXAtaGVhZGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtc3RlcC1pY29uLXNlbGVjdGVkW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1zdGVwLWhlYWRlcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXN0ZXAtaWNvbi1zdGF0ZS1kb25lW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1zdGVwLWhlYWRlcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXN0ZXAtaWNvbi1zdGF0ZS1lZGl0W19uZ2NvbnRlbnQtJUNPTVAlXXtiYWNrZ3JvdW5kLWNvbG9yOiNmNTdjMDA7Y29sb3I6I2ZmZn0ubWF0LXN0ZXAtaGVhZGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtc3RlcC1pY29uLXN0YXRlLWVycm9yW19uZ2NvbnRlbnQtJUNPTVAlXXtiYWNrZ3JvdW5kLWNvbG9yOnRyYW5zcGFyZW50O2NvbG9yOiNmNDQzMzZ9Lm1hdC1zdGVwLWhlYWRlcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXN0ZXAtbGFiZWwubWF0LXN0ZXAtbGFiZWwtYWN0aXZlW19uZ2NvbnRlbnQtJUNPTVAlXXtjb2xvcjojMjEyMTIxfS5tYXQtc3RlcC1oZWFkZXJbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1zdGVwLWxhYmVsLm1hdC1zdGVwLWxhYmVsLWVycm9yW19uZ2NvbnRlbnQtJUNPTVAlXXtjb2xvcjojZjQ0MzM2fS5tYXQtc3RlcHBlci1ob3Jpem9udGFsW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1zdGVwcGVyLXZlcnRpY2FsW19uZ2NvbnRlbnQtJUNPTVAlXXtiYWNrZ3JvdW5kLWNvbG9yOiNmZmZ9Lm1hdC1zdGVwcGVyLXZlcnRpY2FsLWxpbmVbX25nY29udGVudC0lQ09NUCVdOjpiZWZvcmV7Ym9yZGVyLWxlZnQtY29sb3I6cmdiYSgwLDAsMCwuMTIpfS5tYXQtaG9yaXpvbnRhbC1zdGVwcGVyLWhlYWRlcltfbmdjb250ZW50LSVDT01QJV06OmJlZm9yZSwgLm1hdC1ob3Jpem9udGFsLXN0ZXBwZXItaGVhZGVyW19uZ2NvbnRlbnQtJUNPTVAlXTo6YWZ0ZXIsIC5tYXQtc3RlcHBlci1ob3Jpem9udGFsLWxpbmVbX25nY29udGVudC0lQ09NUCVde2JvcmRlci10b3AtY29sb3I6cmdiYSgwLDAsMCwuMTIpfS5tYXQtaG9yaXpvbnRhbC1zdGVwcGVyLWhlYWRlcltfbmdjb250ZW50LSVDT01QJV17aGVpZ2h0OjcycHh9Lm1hdC1zdGVwcGVyLWxhYmVsLXBvc2l0aW9uLWJvdHRvbVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWhvcml6b250YWwtc3RlcHBlci1oZWFkZXJbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXZlcnRpY2FsLXN0ZXBwZXItaGVhZGVyW19uZ2NvbnRlbnQtJUNPTVAlXXtwYWRkaW5nOjI0cHggMjRweH0ubWF0LXN0ZXBwZXItdmVydGljYWwtbGluZVtfbmdjb250ZW50LSVDT01QJV06OmJlZm9yZXt0b3A6LTE2cHg7Ym90dG9tOi0xNnB4fS5tYXQtc3RlcHBlci1sYWJlbC1wb3NpdGlvbi1ib3R0b21bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1ob3Jpem9udGFsLXN0ZXBwZXItaGVhZGVyW19uZ2NvbnRlbnQtJUNPTVAlXTo6YWZ0ZXIsIC5tYXQtc3RlcHBlci1sYWJlbC1wb3NpdGlvbi1ib3R0b21bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1ob3Jpem9udGFsLXN0ZXBwZXItaGVhZGVyW19uZ2NvbnRlbnQtJUNPTVAlXTo6YmVmb3Jle3RvcDozNnB4fS5tYXQtc3RlcHBlci1sYWJlbC1wb3NpdGlvbi1ib3R0b21bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1zdGVwcGVyLWhvcml6b250YWwtbGluZVtfbmdjb250ZW50LSVDT01QJV17dG9wOjM2cHh9Lm1hdC1zb3J0LWhlYWRlci1hcnJvd1tfbmdjb250ZW50LSVDT01QJV17Y29sb3I6IzYxNjE2MX0ubWF0LXRhYi1uYXYtYmFyW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10YWItaGVhZGVyW19uZ2NvbnRlbnQtJUNPTVAlXXtib3JkZXItYm90dG9tOjFweCBzb2xpZCByZ2JhKDAsMCwwLC4xMil9Lm1hdC10YWItZ3JvdXAtaW52ZXJ0ZWQtaGVhZGVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtdGFiLW5hdi1iYXJbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXRhYi1ncm91cC1pbnZlcnRlZC1oZWFkZXJbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC10YWItaGVhZGVyW19uZ2NvbnRlbnQtJUNPTVAlXXtib3JkZXItdG9wOjFweCBzb2xpZCByZ2JhKDAsMCwwLC4xMik7Ym9yZGVyLWJvdHRvbTpub25lfS5tYXQtdGFiLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10YWItbGlua1tfbmdjb250ZW50LSVDT01QJV17Y29sb3I6IzIxMjEyMX0ubWF0LXRhYi1sYWJlbC5tYXQtdGFiLWRpc2FibGVkW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10YWItbGluay5tYXQtdGFiLWRpc2FibGVkW19uZ2NvbnRlbnQtJUNPTVAlXXtjb2xvcjojNzU3NTc1fS5tYXQtdGFiLWhlYWRlci1wYWdpbmF0aW9uLWNoZXZyb25bX25nY29udGVudC0lQ09NUCVde2JvcmRlci1jb2xvcjojMjEyMTIxfS5tYXQtdGFiLWhlYWRlci1wYWdpbmF0aW9uLWRpc2FibGVkW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtdGFiLWhlYWRlci1wYWdpbmF0aW9uLWNoZXZyb25bX25nY29udGVudC0lQ09NUCVde2JvcmRlci1jb2xvcjojNzU3NTc1fS5tYXQtdGFiLWdyb3VwW2NsYXNzKj1tYXQtYmFja2dyb3VuZC1dW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtdGFiLWhlYWRlcltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdGFiLW5hdi1iYXJbY2xhc3MqPW1hdC1iYWNrZ3JvdW5kLV1bX25nY29udGVudC0lQ09NUCVde2JvcmRlci1ib3R0b206bm9uZTtib3JkZXItdG9wOm5vbmV9Lm1hdC10YWItZ3JvdXAubWF0LXByaW1hcnlbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC10YWItbGFiZWwuY2RrLWtleWJvYXJkLWZvY3VzZWRbX25nY29udGVudC0lQ09NUCVdOm5vdCgubWF0LXRhYi1kaXNhYmxlZCksIC5tYXQtdGFiLWdyb3VwLm1hdC1wcmltYXJ5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtdGFiLWxhYmVsLmNkay1wcm9ncmFtLWZvY3VzZWRbX25nY29udGVudC0lQ09NUCVdOm5vdCgubWF0LXRhYi1kaXNhYmxlZCksIC5tYXQtdGFiLWdyb3VwLm1hdC1wcmltYXJ5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtdGFiLWxpbmsuY2RrLWtleWJvYXJkLWZvY3VzZWRbX25nY29udGVudC0lQ09NUCVdOm5vdCgubWF0LXRhYi1kaXNhYmxlZCksIC5tYXQtdGFiLWdyb3VwLm1hdC1wcmltYXJ5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtdGFiLWxpbmsuY2RrLXByb2dyYW0tZm9jdXNlZFtfbmdjb250ZW50LSVDT01QJV06bm90KC5tYXQtdGFiLWRpc2FibGVkKSwgLm1hdC10YWItbmF2LWJhci5tYXQtcHJpbWFyeVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXRhYi1sYWJlbC5jZGsta2V5Ym9hcmQtZm9jdXNlZFtfbmdjb250ZW50LSVDT01QJV06bm90KC5tYXQtdGFiLWRpc2FibGVkKSwgLm1hdC10YWItbmF2LWJhci5tYXQtcHJpbWFyeVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXRhYi1sYWJlbC5jZGstcHJvZ3JhbS1mb2N1c2VkW19uZ2NvbnRlbnQtJUNPTVAlXTpub3QoLm1hdC10YWItZGlzYWJsZWQpLCAubWF0LXRhYi1uYXYtYmFyLm1hdC1wcmltYXJ5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtdGFiLWxpbmsuY2RrLWtleWJvYXJkLWZvY3VzZWRbX25nY29udGVudC0lQ09NUCVdOm5vdCgubWF0LXRhYi1kaXNhYmxlZCksIC5tYXQtdGFiLW5hdi1iYXIubWF0LXByaW1hcnlbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC10YWItbGluay5jZGstcHJvZ3JhbS1mb2N1c2VkW19uZ2NvbnRlbnQtJUNPTVAlXTpub3QoLm1hdC10YWItZGlzYWJsZWQpe2JhY2tncm91bmQtY29sb3I6cmdiYSgyNTUsMTUyLDAsLjMpfS5tYXQtdGFiLWdyb3VwLm1hdC1wcmltYXJ5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaW5rLWJhcltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdGFiLW5hdi1iYXIubWF0LXByaW1hcnlbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pbmstYmFyW19uZ2NvbnRlbnQtJUNPTVAlXXtiYWNrZ3JvdW5kLWNvbG9yOiNmNTdjMDB9Lm1hdC10YWItZ3JvdXAubWF0LXByaW1hcnkubWF0LWJhY2tncm91bmQtcHJpbWFyeVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWluay1iYXJbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXRhYi1uYXYtYmFyLm1hdC1wcmltYXJ5Lm1hdC1iYWNrZ3JvdW5kLXByaW1hcnlbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pbmstYmFyW19uZ2NvbnRlbnQtJUNPTVAlXXtiYWNrZ3JvdW5kLWNvbG9yOiNmZmZ9Lm1hdC10YWItZ3JvdXAubWF0LWFjY2VudFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXRhYi1sYWJlbC5jZGsta2V5Ym9hcmQtZm9jdXNlZFtfbmdjb250ZW50LSVDT01QJV06bm90KC5tYXQtdGFiLWRpc2FibGVkKSwgLm1hdC10YWItZ3JvdXAubWF0LWFjY2VudFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXRhYi1sYWJlbC5jZGstcHJvZ3JhbS1mb2N1c2VkW19uZ2NvbnRlbnQtJUNPTVAlXTpub3QoLm1hdC10YWItZGlzYWJsZWQpLCAubWF0LXRhYi1ncm91cC5tYXQtYWNjZW50W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtdGFiLWxpbmsuY2RrLWtleWJvYXJkLWZvY3VzZWRbX25nY29udGVudC0lQ09NUCVdOm5vdCgubWF0LXRhYi1kaXNhYmxlZCksIC5tYXQtdGFiLWdyb3VwLm1hdC1hY2NlbnRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC10YWItbGluay5jZGstcHJvZ3JhbS1mb2N1c2VkW19uZ2NvbnRlbnQtJUNPTVAlXTpub3QoLm1hdC10YWItZGlzYWJsZWQpLCAubWF0LXRhYi1uYXYtYmFyLm1hdC1hY2NlbnRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC10YWItbGFiZWwuY2RrLWtleWJvYXJkLWZvY3VzZWRbX25nY29udGVudC0lQ09NUCVdOm5vdCgubWF0LXRhYi1kaXNhYmxlZCksIC5tYXQtdGFiLW5hdi1iYXIubWF0LWFjY2VudFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXRhYi1sYWJlbC5jZGstcHJvZ3JhbS1mb2N1c2VkW19uZ2NvbnRlbnQtJUNPTVAlXTpub3QoLm1hdC10YWItZGlzYWJsZWQpLCAubWF0LXRhYi1uYXYtYmFyLm1hdC1hY2NlbnRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC10YWItbGluay5jZGsta2V5Ym9hcmQtZm9jdXNlZFtfbmdjb250ZW50LSVDT01QJV06bm90KC5tYXQtdGFiLWRpc2FibGVkKSwgLm1hdC10YWItbmF2LWJhci5tYXQtYWNjZW50W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtdGFiLWxpbmsuY2RrLXByb2dyYW0tZm9jdXNlZFtfbmdjb250ZW50LSVDT01QJV06bm90KC5tYXQtdGFiLWRpc2FibGVkKXtiYWNrZ3JvdW5kLWNvbG9yOnJnYmEoMjU1LDE1MiwwLC4zKX0ubWF0LXRhYi1ncm91cC5tYXQtYWNjZW50W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaW5rLWJhcltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdGFiLW5hdi1iYXIubWF0LWFjY2VudFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWluay1iYXJbX25nY29udGVudC0lQ09NUCVde2JhY2tncm91bmQtY29sb3I6I2ZmOTgwMH0ubWF0LXRhYi1ncm91cC5tYXQtYWNjZW50Lm1hdC1iYWNrZ3JvdW5kLWFjY2VudFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWluay1iYXJbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXRhYi1uYXYtYmFyLm1hdC1hY2NlbnQubWF0LWJhY2tncm91bmQtYWNjZW50W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaW5rLWJhcltfbmdjb250ZW50LSVDT01QJV17YmFja2dyb3VuZC1jb2xvcjojZmZmfS5tYXQtdGFiLWdyb3VwLm1hdC13YXJuW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtdGFiLWxhYmVsLmNkay1rZXlib2FyZC1mb2N1c2VkW19uZ2NvbnRlbnQtJUNPTVAlXTpub3QoLm1hdC10YWItZGlzYWJsZWQpLCAubWF0LXRhYi1ncm91cC5tYXQtd2Fybltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXRhYi1sYWJlbC5jZGstcHJvZ3JhbS1mb2N1c2VkW19uZ2NvbnRlbnQtJUNPTVAlXTpub3QoLm1hdC10YWItZGlzYWJsZWQpLCAubWF0LXRhYi1ncm91cC5tYXQtd2Fybltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXRhYi1saW5rLmNkay1rZXlib2FyZC1mb2N1c2VkW19uZ2NvbnRlbnQtJUNPTVAlXTpub3QoLm1hdC10YWItZGlzYWJsZWQpLCAubWF0LXRhYi1ncm91cC5tYXQtd2Fybltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXRhYi1saW5rLmNkay1wcm9ncmFtLWZvY3VzZWRbX25nY29udGVudC0lQ09NUCVdOm5vdCgubWF0LXRhYi1kaXNhYmxlZCksIC5tYXQtdGFiLW5hdi1iYXIubWF0LXdhcm5bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC10YWItbGFiZWwuY2RrLWtleWJvYXJkLWZvY3VzZWRbX25nY29udGVudC0lQ09NUCVdOm5vdCgubWF0LXRhYi1kaXNhYmxlZCksIC5tYXQtdGFiLW5hdi1iYXIubWF0LXdhcm5bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC10YWItbGFiZWwuY2RrLXByb2dyYW0tZm9jdXNlZFtfbmdjb250ZW50LSVDT01QJV06bm90KC5tYXQtdGFiLWRpc2FibGVkKSwgLm1hdC10YWItbmF2LWJhci5tYXQtd2Fybltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXRhYi1saW5rLmNkay1rZXlib2FyZC1mb2N1c2VkW19uZ2NvbnRlbnQtJUNPTVAlXTpub3QoLm1hdC10YWItZGlzYWJsZWQpLCAubWF0LXRhYi1uYXYtYmFyLm1hdC13YXJuW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtdGFiLWxpbmsuY2RrLXByb2dyYW0tZm9jdXNlZFtfbmdjb250ZW50LSVDT01QJV06bm90KC5tYXQtdGFiLWRpc2FibGVkKXtiYWNrZ3JvdW5kLWNvbG9yOnJnYmEoMjU1LDIwNSwyMTAsLjMpfS5tYXQtdGFiLWdyb3VwLm1hdC13YXJuW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtaW5rLWJhcltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdGFiLW5hdi1iYXIubWF0LXdhcm5bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pbmstYmFyW19uZ2NvbnRlbnQtJUNPTVAlXXtiYWNrZ3JvdW5kLWNvbG9yOiNmNDQzMzZ9Lm1hdC10YWItZ3JvdXAubWF0LXdhcm4ubWF0LWJhY2tncm91bmQtd2Fybltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWluay1iYXJbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXRhYi1uYXYtYmFyLm1hdC13YXJuLm1hdC1iYWNrZ3JvdW5kLXdhcm5bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1pbmstYmFyW19uZ2NvbnRlbnQtJUNPTVAlXXtiYWNrZ3JvdW5kLWNvbG9yOiNmZmZ9Lm1hdC10YWItZ3JvdXAubWF0LWJhY2tncm91bmQtcHJpbWFyeVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXRhYi1sYWJlbC5jZGsta2V5Ym9hcmQtZm9jdXNlZFtfbmdjb250ZW50LSVDT01QJV06bm90KC5tYXQtdGFiLWRpc2FibGVkKSwgLm1hdC10YWItZ3JvdXAubWF0LWJhY2tncm91bmQtcHJpbWFyeVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXRhYi1sYWJlbC5jZGstcHJvZ3JhbS1mb2N1c2VkW19uZ2NvbnRlbnQtJUNPTVAlXTpub3QoLm1hdC10YWItZGlzYWJsZWQpLCAubWF0LXRhYi1ncm91cC5tYXQtYmFja2dyb3VuZC1wcmltYXJ5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtdGFiLWxpbmsuY2RrLWtleWJvYXJkLWZvY3VzZWRbX25nY29udGVudC0lQ09NUCVdOm5vdCgubWF0LXRhYi1kaXNhYmxlZCksIC5tYXQtdGFiLWdyb3VwLm1hdC1iYWNrZ3JvdW5kLXByaW1hcnlbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC10YWItbGluay5jZGstcHJvZ3JhbS1mb2N1c2VkW19uZ2NvbnRlbnQtJUNPTVAlXTpub3QoLm1hdC10YWItZGlzYWJsZWQpLCAubWF0LXRhYi1uYXYtYmFyLm1hdC1iYWNrZ3JvdW5kLXByaW1hcnlbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC10YWItbGFiZWwuY2RrLWtleWJvYXJkLWZvY3VzZWRbX25nY29udGVudC0lQ09NUCVdOm5vdCgubWF0LXRhYi1kaXNhYmxlZCksIC5tYXQtdGFiLW5hdi1iYXIubWF0LWJhY2tncm91bmQtcHJpbWFyeVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXRhYi1sYWJlbC5jZGstcHJvZ3JhbS1mb2N1c2VkW19uZ2NvbnRlbnQtJUNPTVAlXTpub3QoLm1hdC10YWItZGlzYWJsZWQpLCAubWF0LXRhYi1uYXYtYmFyLm1hdC1iYWNrZ3JvdW5kLXByaW1hcnlbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC10YWItbGluay5jZGsta2V5Ym9hcmQtZm9jdXNlZFtfbmdjb250ZW50LSVDT01QJV06bm90KC5tYXQtdGFiLWRpc2FibGVkKSwgLm1hdC10YWItbmF2LWJhci5tYXQtYmFja2dyb3VuZC1wcmltYXJ5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtdGFiLWxpbmsuY2RrLXByb2dyYW0tZm9jdXNlZFtfbmdjb250ZW50LSVDT01QJV06bm90KC5tYXQtdGFiLWRpc2FibGVkKXtiYWNrZ3JvdW5kLWNvbG9yOnJnYmEoMjU1LDE1MiwwLC4zKX0ubWF0LXRhYi1ncm91cC5tYXQtYmFja2dyb3VuZC1wcmltYXJ5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtdGFiLWhlYWRlcltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdGFiLWdyb3VwLm1hdC1iYWNrZ3JvdW5kLXByaW1hcnlbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC10YWItbGlua3NbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXRhYi1ncm91cC5tYXQtYmFja2dyb3VuZC1wcmltYXJ5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtdGFiLWhlYWRlci1wYWdpbmF0aW9uW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10YWItbmF2LWJhci5tYXQtYmFja2dyb3VuZC1wcmltYXJ5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtdGFiLWhlYWRlcltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdGFiLW5hdi1iYXIubWF0LWJhY2tncm91bmQtcHJpbWFyeVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXRhYi1saW5rc1tfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdGFiLW5hdi1iYXIubWF0LWJhY2tncm91bmQtcHJpbWFyeVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXRhYi1oZWFkZXItcGFnaW5hdGlvbltfbmdjb250ZW50LSVDT01QJV17YmFja2dyb3VuZC1jb2xvcjojZjU3YzAwfS5tYXQtdGFiLWdyb3VwLm1hdC1iYWNrZ3JvdW5kLXByaW1hcnlbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC10YWItbGFiZWxbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXRhYi1ncm91cC5tYXQtYmFja2dyb3VuZC1wcmltYXJ5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtdGFiLWxpbmtbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXRhYi1uYXYtYmFyLm1hdC1iYWNrZ3JvdW5kLXByaW1hcnlbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC10YWItbGFiZWxbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXRhYi1uYXYtYmFyLm1hdC1iYWNrZ3JvdW5kLXByaW1hcnlbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC10YWItbGlua1tfbmdjb250ZW50LSVDT01QJV17Y29sb3I6I2ZmZn0ubWF0LXRhYi1ncm91cC5tYXQtYmFja2dyb3VuZC1wcmltYXJ5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtdGFiLWxhYmVsLm1hdC10YWItZGlzYWJsZWRbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXRhYi1ncm91cC5tYXQtYmFja2dyb3VuZC1wcmltYXJ5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtdGFiLWxpbmsubWF0LXRhYi1kaXNhYmxlZFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdGFiLW5hdi1iYXIubWF0LWJhY2tncm91bmQtcHJpbWFyeVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXRhYi1sYWJlbC5tYXQtdGFiLWRpc2FibGVkW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10YWItbmF2LWJhci5tYXQtYmFja2dyb3VuZC1wcmltYXJ5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtdGFiLWxpbmsubWF0LXRhYi1kaXNhYmxlZFtfbmdjb250ZW50LSVDT01QJV17Y29sb3I6cmdiYSgyNTUsMjU1LDI1NSwuNCl9Lm1hdC10YWItZ3JvdXAubWF0LWJhY2tncm91bmQtcHJpbWFyeVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXRhYi1oZWFkZXItcGFnaW5hdGlvbi1jaGV2cm9uW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10YWItbmF2LWJhci5tYXQtYmFja2dyb3VuZC1wcmltYXJ5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtdGFiLWhlYWRlci1wYWdpbmF0aW9uLWNoZXZyb25bX25nY29udGVudC0lQ09NUCVde2JvcmRlci1jb2xvcjojZmZmfS5tYXQtdGFiLWdyb3VwLm1hdC1iYWNrZ3JvdW5kLXByaW1hcnlbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC10YWItaGVhZGVyLXBhZ2luYXRpb24tZGlzYWJsZWRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC10YWItaGVhZGVyLXBhZ2luYXRpb24tY2hldnJvbltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdGFiLW5hdi1iYXIubWF0LWJhY2tncm91bmQtcHJpbWFyeVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXRhYi1oZWFkZXItcGFnaW5hdGlvbi1kaXNhYmxlZFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXRhYi1oZWFkZXItcGFnaW5hdGlvbi1jaGV2cm9uW19uZ2NvbnRlbnQtJUNPTVAlXXtib3JkZXItY29sb3I6cmdiYSgyNTUsMjU1LDI1NSwuNCl9Lm1hdC10YWItZ3JvdXAubWF0LWJhY2tncm91bmQtcHJpbWFyeVtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXJpcHBsZS1lbGVtZW50W19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10YWItbmF2LWJhci5tYXQtYmFja2dyb3VuZC1wcmltYXJ5W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtcmlwcGxlLWVsZW1lbnRbX25nY29udGVudC0lQ09NUCVde2JhY2tncm91bmQtY29sb3I6cmdiYSgyNTUsMjU1LDI1NSwuMTIpfS5tYXQtdGFiLWdyb3VwLm1hdC1iYWNrZ3JvdW5kLWFjY2VudFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXRhYi1sYWJlbC5jZGsta2V5Ym9hcmQtZm9jdXNlZFtfbmdjb250ZW50LSVDT01QJV06bm90KC5tYXQtdGFiLWRpc2FibGVkKSwgLm1hdC10YWItZ3JvdXAubWF0LWJhY2tncm91bmQtYWNjZW50W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtdGFiLWxhYmVsLmNkay1wcm9ncmFtLWZvY3VzZWRbX25nY29udGVudC0lQ09NUCVdOm5vdCgubWF0LXRhYi1kaXNhYmxlZCksIC5tYXQtdGFiLWdyb3VwLm1hdC1iYWNrZ3JvdW5kLWFjY2VudFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXRhYi1saW5rLmNkay1rZXlib2FyZC1mb2N1c2VkW19uZ2NvbnRlbnQtJUNPTVAlXTpub3QoLm1hdC10YWItZGlzYWJsZWQpLCAubWF0LXRhYi1ncm91cC5tYXQtYmFja2dyb3VuZC1hY2NlbnRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC10YWItbGluay5jZGstcHJvZ3JhbS1mb2N1c2VkW19uZ2NvbnRlbnQtJUNPTVAlXTpub3QoLm1hdC10YWItZGlzYWJsZWQpLCAubWF0LXRhYi1uYXYtYmFyLm1hdC1iYWNrZ3JvdW5kLWFjY2VudFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXRhYi1sYWJlbC5jZGsta2V5Ym9hcmQtZm9jdXNlZFtfbmdjb250ZW50LSVDT01QJV06bm90KC5tYXQtdGFiLWRpc2FibGVkKSwgLm1hdC10YWItbmF2LWJhci5tYXQtYmFja2dyb3VuZC1hY2NlbnRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC10YWItbGFiZWwuY2RrLXByb2dyYW0tZm9jdXNlZFtfbmdjb250ZW50LSVDT01QJV06bm90KC5tYXQtdGFiLWRpc2FibGVkKSwgLm1hdC10YWItbmF2LWJhci5tYXQtYmFja2dyb3VuZC1hY2NlbnRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC10YWItbGluay5jZGsta2V5Ym9hcmQtZm9jdXNlZFtfbmdjb250ZW50LSVDT01QJV06bm90KC5tYXQtdGFiLWRpc2FibGVkKSwgLm1hdC10YWItbmF2LWJhci5tYXQtYmFja2dyb3VuZC1hY2NlbnRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC10YWItbGluay5jZGstcHJvZ3JhbS1mb2N1c2VkW19uZ2NvbnRlbnQtJUNPTVAlXTpub3QoLm1hdC10YWItZGlzYWJsZWQpe2JhY2tncm91bmQtY29sb3I6cmdiYSgyNTUsMTUyLDAsLjMpfS5tYXQtdGFiLWdyb3VwLm1hdC1iYWNrZ3JvdW5kLWFjY2VudFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXRhYi1oZWFkZXJbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXRhYi1ncm91cC5tYXQtYmFja2dyb3VuZC1hY2NlbnRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC10YWItbGlua3NbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXRhYi1ncm91cC5tYXQtYmFja2dyb3VuZC1hY2NlbnRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC10YWItaGVhZGVyLXBhZ2luYXRpb25bX25nY29udGVudC0lQ09NUCVdLCAubWF0LXRhYi1uYXYtYmFyLm1hdC1iYWNrZ3JvdW5kLWFjY2VudFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXRhYi1oZWFkZXJbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXRhYi1uYXYtYmFyLm1hdC1iYWNrZ3JvdW5kLWFjY2VudFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXRhYi1saW5rc1tfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdGFiLW5hdi1iYXIubWF0LWJhY2tncm91bmQtYWNjZW50W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtdGFiLWhlYWRlci1wYWdpbmF0aW9uW19uZ2NvbnRlbnQtJUNPTVAlXXtiYWNrZ3JvdW5kLWNvbG9yOiNmZjk4MDB9Lm1hdC10YWItZ3JvdXAubWF0LWJhY2tncm91bmQtYWNjZW50W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtdGFiLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10YWItZ3JvdXAubWF0LWJhY2tncm91bmQtYWNjZW50W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtdGFiLWxpbmtbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXRhYi1uYXYtYmFyLm1hdC1iYWNrZ3JvdW5kLWFjY2VudFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXRhYi1sYWJlbFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdGFiLW5hdi1iYXIubWF0LWJhY2tncm91bmQtYWNjZW50W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtdGFiLWxpbmtbX25nY29udGVudC0lQ09NUCVde2NvbG9yOiNmZmZ9Lm1hdC10YWItZ3JvdXAubWF0LWJhY2tncm91bmQtYWNjZW50W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtdGFiLWxhYmVsLm1hdC10YWItZGlzYWJsZWRbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXRhYi1ncm91cC5tYXQtYmFja2dyb3VuZC1hY2NlbnRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC10YWItbGluay5tYXQtdGFiLWRpc2FibGVkW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10YWItbmF2LWJhci5tYXQtYmFja2dyb3VuZC1hY2NlbnRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC10YWItbGFiZWwubWF0LXRhYi1kaXNhYmxlZFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdGFiLW5hdi1iYXIubWF0LWJhY2tncm91bmQtYWNjZW50W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtdGFiLWxpbmsubWF0LXRhYi1kaXNhYmxlZFtfbmdjb250ZW50LSVDT01QJV17Y29sb3I6cmdiYSgyNTUsMjU1LDI1NSwuNCl9Lm1hdC10YWItZ3JvdXAubWF0LWJhY2tncm91bmQtYWNjZW50W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtdGFiLWhlYWRlci1wYWdpbmF0aW9uLWNoZXZyb25bX25nY29udGVudC0lQ09NUCVdLCAubWF0LXRhYi1uYXYtYmFyLm1hdC1iYWNrZ3JvdW5kLWFjY2VudFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXRhYi1oZWFkZXItcGFnaW5hdGlvbi1jaGV2cm9uW19uZ2NvbnRlbnQtJUNPTVAlXXtib3JkZXItY29sb3I6I2ZmZn0ubWF0LXRhYi1ncm91cC5tYXQtYmFja2dyb3VuZC1hY2NlbnRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC10YWItaGVhZGVyLXBhZ2luYXRpb24tZGlzYWJsZWRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC10YWItaGVhZGVyLXBhZ2luYXRpb24tY2hldnJvbltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdGFiLW5hdi1iYXIubWF0LWJhY2tncm91bmQtYWNjZW50W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtdGFiLWhlYWRlci1wYWdpbmF0aW9uLWRpc2FibGVkW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtdGFiLWhlYWRlci1wYWdpbmF0aW9uLWNoZXZyb25bX25nY29udGVudC0lQ09NUCVde2JvcmRlci1jb2xvcjpyZ2JhKDI1NSwyNTUsMjU1LC40KX0ubWF0LXRhYi1ncm91cC5tYXQtYmFja2dyb3VuZC1hY2NlbnRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1yaXBwbGUtZWxlbWVudFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdGFiLW5hdi1iYXIubWF0LWJhY2tncm91bmQtYWNjZW50W19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtcmlwcGxlLWVsZW1lbnRbX25nY29udGVudC0lQ09NUCVde2JhY2tncm91bmQtY29sb3I6cmdiYSgyNTUsMjU1LDI1NSwuMTIpfS5tYXQtdGFiLWdyb3VwLm1hdC1iYWNrZ3JvdW5kLXdhcm5bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC10YWItbGFiZWwuY2RrLWtleWJvYXJkLWZvY3VzZWRbX25nY29udGVudC0lQ09NUCVdOm5vdCgubWF0LXRhYi1kaXNhYmxlZCksIC5tYXQtdGFiLWdyb3VwLm1hdC1iYWNrZ3JvdW5kLXdhcm5bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC10YWItbGFiZWwuY2RrLXByb2dyYW0tZm9jdXNlZFtfbmdjb250ZW50LSVDT01QJV06bm90KC5tYXQtdGFiLWRpc2FibGVkKSwgLm1hdC10YWItZ3JvdXAubWF0LWJhY2tncm91bmQtd2Fybltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXRhYi1saW5rLmNkay1rZXlib2FyZC1mb2N1c2VkW19uZ2NvbnRlbnQtJUNPTVAlXTpub3QoLm1hdC10YWItZGlzYWJsZWQpLCAubWF0LXRhYi1ncm91cC5tYXQtYmFja2dyb3VuZC13YXJuW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtdGFiLWxpbmsuY2RrLXByb2dyYW0tZm9jdXNlZFtfbmdjb250ZW50LSVDT01QJV06bm90KC5tYXQtdGFiLWRpc2FibGVkKSwgLm1hdC10YWItbmF2LWJhci5tYXQtYmFja2dyb3VuZC13YXJuW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtdGFiLWxhYmVsLmNkay1rZXlib2FyZC1mb2N1c2VkW19uZ2NvbnRlbnQtJUNPTVAlXTpub3QoLm1hdC10YWItZGlzYWJsZWQpLCAubWF0LXRhYi1uYXYtYmFyLm1hdC1iYWNrZ3JvdW5kLXdhcm5bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC10YWItbGFiZWwuY2RrLXByb2dyYW0tZm9jdXNlZFtfbmdjb250ZW50LSVDT01QJV06bm90KC5tYXQtdGFiLWRpc2FibGVkKSwgLm1hdC10YWItbmF2LWJhci5tYXQtYmFja2dyb3VuZC13YXJuW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtdGFiLWxpbmsuY2RrLWtleWJvYXJkLWZvY3VzZWRbX25nY29udGVudC0lQ09NUCVdOm5vdCgubWF0LXRhYi1kaXNhYmxlZCksIC5tYXQtdGFiLW5hdi1iYXIubWF0LWJhY2tncm91bmQtd2Fybltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXRhYi1saW5rLmNkay1wcm9ncmFtLWZvY3VzZWRbX25nY29udGVudC0lQ09NUCVdOm5vdCgubWF0LXRhYi1kaXNhYmxlZCl7YmFja2dyb3VuZC1jb2xvcjpyZ2JhKDI1NSwyMDUsMjEwLC4zKX0ubWF0LXRhYi1ncm91cC5tYXQtYmFja2dyb3VuZC13YXJuW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtdGFiLWhlYWRlcltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdGFiLWdyb3VwLm1hdC1iYWNrZ3JvdW5kLXdhcm5bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC10YWItbGlua3NbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXRhYi1ncm91cC5tYXQtYmFja2dyb3VuZC13YXJuW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtdGFiLWhlYWRlci1wYWdpbmF0aW9uW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10YWItbmF2LWJhci5tYXQtYmFja2dyb3VuZC13YXJuW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtdGFiLWhlYWRlcltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdGFiLW5hdi1iYXIubWF0LWJhY2tncm91bmQtd2Fybltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXRhYi1saW5rc1tfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdGFiLW5hdi1iYXIubWF0LWJhY2tncm91bmQtd2Fybltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXRhYi1oZWFkZXItcGFnaW5hdGlvbltfbmdjb250ZW50LSVDT01QJV17YmFja2dyb3VuZC1jb2xvcjojZjQ0MzM2fS5tYXQtdGFiLWdyb3VwLm1hdC1iYWNrZ3JvdW5kLXdhcm5bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC10YWItbGFiZWxbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXRhYi1ncm91cC5tYXQtYmFja2dyb3VuZC13YXJuW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtdGFiLWxpbmtbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXRhYi1uYXYtYmFyLm1hdC1iYWNrZ3JvdW5kLXdhcm5bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC10YWItbGFiZWxbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXRhYi1uYXYtYmFyLm1hdC1iYWNrZ3JvdW5kLXdhcm5bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC10YWItbGlua1tfbmdjb250ZW50LSVDT01QJV17Y29sb3I6I2ZmZn0ubWF0LXRhYi1ncm91cC5tYXQtYmFja2dyb3VuZC13YXJuW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtdGFiLWxhYmVsLm1hdC10YWItZGlzYWJsZWRbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXRhYi1ncm91cC5tYXQtYmFja2dyb3VuZC13YXJuW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtdGFiLWxpbmsubWF0LXRhYi1kaXNhYmxlZFtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdGFiLW5hdi1iYXIubWF0LWJhY2tncm91bmQtd2Fybltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXRhYi1sYWJlbC5tYXQtdGFiLWRpc2FibGVkW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10YWItbmF2LWJhci5tYXQtYmFja2dyb3VuZC13YXJuW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtdGFiLWxpbmsubWF0LXRhYi1kaXNhYmxlZFtfbmdjb250ZW50LSVDT01QJV17Y29sb3I6cmdiYSgyNTUsMjU1LDI1NSwuNCl9Lm1hdC10YWItZ3JvdXAubWF0LWJhY2tncm91bmQtd2Fybltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXRhYi1oZWFkZXItcGFnaW5hdGlvbi1jaGV2cm9uW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10YWItbmF2LWJhci5tYXQtYmFja2dyb3VuZC13YXJuW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtdGFiLWhlYWRlci1wYWdpbmF0aW9uLWNoZXZyb25bX25nY29udGVudC0lQ09NUCVde2JvcmRlci1jb2xvcjojZmZmfS5tYXQtdGFiLWdyb3VwLm1hdC1iYWNrZ3JvdW5kLXdhcm5bX25nY29udGVudC0lQ09NUCVdICAgLm1hdC10YWItaGVhZGVyLXBhZ2luYXRpb24tZGlzYWJsZWRbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC10YWItaGVhZGVyLXBhZ2luYXRpb24tY2hldnJvbltfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdGFiLW5hdi1iYXIubWF0LWJhY2tncm91bmQtd2Fybltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXRhYi1oZWFkZXItcGFnaW5hdGlvbi1kaXNhYmxlZFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXRhYi1oZWFkZXItcGFnaW5hdGlvbi1jaGV2cm9uW19uZ2NvbnRlbnQtJUNPTVAlXXtib3JkZXItY29sb3I6cmdiYSgyNTUsMjU1LDI1NSwuNCl9Lm1hdC10YWItZ3JvdXAubWF0LWJhY2tncm91bmQtd2Fybltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LXJpcHBsZS1lbGVtZW50W19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10YWItbmF2LWJhci5tYXQtYmFja2dyb3VuZC13YXJuW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtcmlwcGxlLWVsZW1lbnRbX25nY29udGVudC0lQ09NUCVde2JhY2tncm91bmQtY29sb3I6cmdiYSgyNTUsMjU1LDI1NSwuMTIpfS5tYXQtdG9vbGJhcltfbmdjb250ZW50LSVDT01QJV17YmFja2dyb3VuZDojZjVmNWY1O2NvbG9yOiMyMTIxMjF9Lm1hdC10b29sYmFyLm1hdC1wcmltYXJ5W19uZ2NvbnRlbnQtJUNPTVAlXXtiYWNrZ3JvdW5kOiNmNTdjMDA7Y29sb3I6I2ZmZn0ubWF0LXRvb2xiYXIubWF0LWFjY2VudFtfbmdjb250ZW50LSVDT01QJV17YmFja2dyb3VuZDojZmY5ODAwO2NvbG9yOiNmZmZ9Lm1hdC10b29sYmFyLm1hdC13YXJuW19uZ2NvbnRlbnQtJUNPTVAlXXtiYWNrZ3JvdW5kOiNmNDQzMzY7Y29sb3I6I2ZmZn0ubWF0LXRvb2xiYXJbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLXVuZGVybGluZVtfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdG9vbGJhcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtcmlwcGxlW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10b29sYmFyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9jdXNlZFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtcmlwcGxlW19uZ2NvbnRlbnQtJUNPTVAlXXtiYWNrZ3JvdW5kLWNvbG9yOmN1cnJlbnRDb2xvcn0ubWF0LXRvb2xiYXJbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLWxhYmVsW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC10b29sYmFyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtZm9jdXNlZFtfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWZvcm0tZmllbGQtbGFiZWxbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXRvb2xiYXJbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1zZWxlY3QtdmFsdWVbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXRvb2xiYXJbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1zZWxlY3QtYXJyb3dbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXRvb2xiYXJbX25nY29udGVudC0lQ09NUCVdICAgLm1hdC1mb3JtLWZpZWxkLm1hdC1mb2N1c2VkW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5tYXQtc2VsZWN0LWFycm93W19uZ2NvbnRlbnQtJUNPTVAlXXtjb2xvcjppbmhlcml0fS5tYXQtdG9vbGJhcltfbmdjb250ZW50LSVDT01QJV0gICAubWF0LWlucHV0LWVsZW1lbnRbX25nY29udGVudC0lQ09NUCVde2NhcmV0LWNvbG9yOmN1cnJlbnRDb2xvcn0ubWF0LXRvb2xiYXItbXVsdGlwbGUtcm93c1tfbmdjb250ZW50LSVDT01QJV17bWluLWhlaWdodDo2NHB4fS5tYXQtdG9vbGJhci1yb3dbX25nY29udGVudC0lQ09NUCVdLCAubWF0LXRvb2xiYXItc2luZ2xlLXJvd1tfbmdjb250ZW50LSVDT01QJV17aGVpZ2h0OjY0cHh9QG1lZGlhKG1heC13aWR0aDogNTk5cHgpey5tYXQtdG9vbGJhci1tdWx0aXBsZS1yb3dzW19uZ2NvbnRlbnQtJUNPTVAlXXttaW4taGVpZ2h0OjU2cHh9Lm1hdC10b29sYmFyLXJvd1tfbmdjb250ZW50LSVDT01QJV0sIC5tYXQtdG9vbGJhci1zaW5nbGUtcm93W19uZ2NvbnRlbnQtJUNPTVAlXXtoZWlnaHQ6NTZweH19Lm1hdC10b29sdGlwW19uZ2NvbnRlbnQtJUNPTVAlXXtiYWNrZ3JvdW5kOnJnYmEoOTcsOTcsOTcsLjkpfS5tYXQtdHJlZVtfbmdjb250ZW50LSVDT01QJV17YmFja2dyb3VuZDojZmZmfS5tYXQtdHJlZS1ub2RlW19uZ2NvbnRlbnQtJUNPTVAlXSwgLm1hdC1uZXN0ZWQtdHJlZS1ub2RlW19uZ2NvbnRlbnQtJUNPTVAlXXtjb2xvcjojMjEyMTIxfS5tYXQtdHJlZS1ub2RlW19uZ2NvbnRlbnQtJUNPTVAlXXttaW4taGVpZ2h0OjQ4cHh9Lm1hdC1zbmFjay1iYXItY29udGFpbmVyW19uZ2NvbnRlbnQtJUNPTVAlXXtjb2xvcjpyZ2JhKDI1NSwyNTUsMjU1LC43KTtiYWNrZ3JvdW5kOiMzMjMyMzI7Ym94LXNoYWRvdzowcHggM3B4IDVweCAtMXB4IHJnYmEoMCwgMCwgMCwgMC4yKSwwcHggNnB4IDEwcHggMHB4IHJnYmEoMCwgMCwgMCwgMC4xNCksMHB4IDFweCAxOHB4IDBweCByZ2JhKDAsIDAsIDAsIDAuMTIpfS5tYXQtc2ltcGxlLXNuYWNrYmFyLWFjdGlvbltfbmdjb250ZW50LSVDT01QJV17Y29sb3I6I2ZmOTgwMH1bX25naG9zdC0lQ09NUCVde2Rpc3BsYXk6ZmxleDtmbGV4LWRpcmVjdGlvbjpjb2x1bW47aGVpZ2h0OjEwMCV9LmNvbnRlbnRbX25nY29udGVudC0lQ09NUCVde2Rpc3BsYXk6ZmxleDtmbGV4OjE7bWluLWhlaWdodDowcHg7d2lkdGg6MTAwJX0uc2lkZWJhci1jb250YWluZXJbX25nY29udGVudC0lQ09NUCVde2hlaWdodDoxMDAlO292ZXJmbG93OmhpZGRlbn0uc2lkZWJhci1jb250ZW50c1tfbmdjb250ZW50LSVDT01QJV17aGVpZ2h0OjEwMCU7ZGlzcGxheTpmbGV4O2ZsZXgtZGlyZWN0aW9uOmNvbHVtbjttaW4td2lkdGg6MTUwcHh9LmFuYWx5c2lzLWNvbnRhaW5lcltfbmdjb250ZW50LSVDT01QJV17ZGlzcGxheTpmbGV4O2ZsZXgtZGlyZWN0aW9uOmNvbHVtbjtoZWlnaHQ6MTAwJTtmbGV4OjEgMX0ucnVuLXNlbGVjdG9yW19uZ2NvbnRlbnQtJUNPTVAlXXttYXgtaGVpZ2h0OjEwMCU7d2lkdGg6MTAwJX0uc2lkZS10b2dnbGVbX25nY29udGVudC0lQ09NUCVde3dpZHRoOjMwcHg7aGVpZ2h0OjMwcHg7cG9zaXRpb246YWJzb2x1dGU7bGVmdDoxMHB4O2JvdHRvbToxMHB4O2JvcmRlcjoxcHggc29saWQgI2ViZWJlYjtib3JkZXItcmFkaXVzOjNweDtkaXNwbGF5OmZsZXg7YWxpZ24taXRlbXM6Y2VudGVyO2p1c3RpZnktY29udGVudDpjZW50ZXJ9LmdyYWJiZXJbX25nY29udGVudC0lQ09NUCVde2NvbnRlbnQ6IiI7Y3Vyc29yOmV3LXJlc2l6ZTtoZWlnaHQ6MTAwJTt3aWR0aDozcHg7b3ZlcmZsb3c6aGlkZGVuO2JhY2tncm91bmQtY29sb3I6cmdiYSgwLDAsMCwuMTIpfS5hbm5vdGF0aW9ucy1saXN0W19uZ2NvbnRlbnQtJUNPTVAlXXt3aWR0aDoxMDAlO21pbi1oZWlnaHQ6MHB4O2ZsZXg6MSAxfSddLGNoYW5nZURldGVjdGlvbjowfSk7Y2xhc3Mgd2J0e2NvbnN0cnVjdG9yKHQpe3RoaXMuc3RvcmU9dCx0aGlzLnJ1bkFjdGl2ZSQ9dGhpcy5zdG9yZS5waXBlKGx2KEtEKSkucGlwZShmdCgodD0+ISF0JiZbLi4udC52YWx1ZXMoKV0uaW5jbHVkZXMoITApKSkpLHRoaXMuc2lkZWJhckV4cGFuZGVkJD10aGlzLnN0b3JlLnBpcGUobHYoWGR0KSksdGhpcy5zaWRlYmFyV2lkdGgkPXRoaXMuc3RvcmUucGlwZShsdihaZHQpKSx0aGlzLnJlc2l6aW5nPSExfW9uVG9nZ2xlU2lkZWJhckV4cGFuZGVkKCl7dGhpcy5zdG9yZS5kaXNwYXRjaChNZ3QoKSl9b25SZXNpemVUcmlnZ2VyZWQodCl7dGhpcy5yZXNpemluZyYmdGhpcy5zdG9yZS5kaXNwYXRjaChDZ3Qoe3NpZGViYXJXaWR0aDp0LmNsaWVudFh9KSl9b25SZXNpemVHcmFiYmVkKCl7dGhpcy5yZXNpemluZz0hMH1vblJlc2l6ZVJlbGVhc2VkKCl7dGhpcy5yZXNpemluZz0hMX19ZnVuY3Rpb24gU2J0KHQsbil7MSZ0JiZ0cCgwLCJucG1pLWluYWN0aXZlLXZpZXciKX1mdW5jdGlvbiBFYnQodCxuKXsxJnQmJnRwKDAsIm5wbWktbWFpbiIpfWZ1bmN0aW9uIEFidCh0LG4pezEmdCYmdHAoMCwibnBtaS1lbWJlZGRpbmdzIil9ZnVuY3Rpb24gemJ0KHQsbil7aWYoMSZ0JiYoWWcoMCxFYnQsMSwwLCJucG1pLW1haW4iLDMpLFlnKDEsQWJ0LDEsMCwibnBtaS1lbWJlZGRpbmdzIiwzKSksMiZ0KXtjb25zdCB0PWdwKCk7SmcoIm5nSWYiLHQuYWN0aXZlVmlldz09PXQuVmlld0FjdGl2ZS5ERUZBVUxUKSx3cygxKSxKZygibmdJZiIsdC5hY3RpdmVWaWV3PT09dC5WaWV3QWN0aXZlLkVNQkVERElOR1MpfX13YnQuybVmYWM9ZnVuY3Rpb24gdChuKXtyZXR1cm4gbmV3KG58fHdidCkoWmcoY3YpKX0sd2J0Lsm1Y21wPV9vKHt0eXBlOndidCxzZWxlY3RvcnM6W1sibnBtaS1lbWJlZGRpbmdzIl1dLGRlY2xzOjQsdmFyczo5LGNvbnN0czpbWzMsInJ1bkFjdGl2ZSIsInNpZGViYXJFeHBhbmRlZCIsInNpZGViYXJXaWR0aCIsInRvZ2dsZVNpZGViYXJFeHBhbmRlZCIsInJlc2l6ZVRyaWdnZXJlZCIsInJlc2l6ZUdyYWJiZWQiLCJyZXNpemVSZWxlYXNlZCJdXSx0ZW1wbGF0ZTpmdW5jdGlvbiB0KG4sZSl7MSZuJiYoS2coMCwiZW1iZWRkaW5ncy1jb21wb25lbnQiLDApLGNwKCJ0b2dnbGVTaWRlYmFyRXhwYW5kZWQiLChmdW5jdGlvbiB0KCl7cmV0dXJuIGUub25Ub2dnbGVTaWRlYmFyRXhwYW5kZWQoKX0pKSgicmVzaXplVHJpZ2dlcmVkIiwoZnVuY3Rpb24gdChuKXtyZXR1cm4gZS5vblJlc2l6ZVRyaWdnZXJlZChuKX0pKSgicmVzaXplR3JhYmJlZCIsKGZ1bmN0aW9uIHQoKXtyZXR1cm4gZS5vblJlc2l6ZUdyYWJiZWQoKX0pKSgicmVzaXplUmVsZWFzZWQiLChmdW5jdGlvbiB0KCl7cmV0dXJuIGUub25SZXNpemVSZWxlYXNlZCgpfSkpLHlmKDEsImFzeW5jIikseWYoMiwiYXN5bmMiKSx5ZigzLCJhc3luYyIpLCRnKCkpLDImbiYmSmcoInJ1bkFjdGl2ZSIsa2YoMSwzLGUucnVuQWN0aXZlJCkpKCJzaWRlYmFyRXhwYW5kZWQiLGtmKDIsNSxlLnNpZGViYXJFeHBhbmRlZCQpKSgic2lkZWJhcldpZHRoIixrZigzLDcsZS5zaWRlYmFyV2lkdGgkKSl9LGRpcmVjdGl2ZXM6W3ZidF0scGlwZXM6W29PXSxlbmNhcHN1bGF0aW9uOjIsY2hhbmdlRGV0ZWN0aW9uOjB9KTtjbGFzcyBSYnR7Y29uc3RydWN0b3IoKXt0aGlzLlZpZXdBY3RpdmU9eWR0fX1SYnQuybVmYWM9ZnVuY3Rpb24gdChuKXtyZXR1cm4gbmV3KG58fFJidCl9LFJidC7JtWNtcD1fbyh7dHlwZTpSYnQsc2VsZWN0b3JzOltbIm5wbWktY29tcG9uZW50Il1dLGlucHV0czp7cnVuczoicnVucyIsYWN0aXZlVmlldzoiYWN0aXZlVmlldyJ9LGRlY2xzOjQsdmFyczoyLGNvbnN0czpbWzEsIm5wbWktY29udGFpbmVyIl0sWzQsIm5nSWYiLCJuZ0lmRWxzZSJdLFsiZGF0YUF2YWlsYWJsZSIsIiJdLFs0LCJuZ0lmIl1dLHRlbXBsYXRlOmZ1bmN0aW9uIHQobixlKXtpZigxJm4mJihLZygwLCJkaXYiLDApLFlnKDEsU2J0LDEsMCwibnBtaS1pbmFjdGl2ZS12aWV3IiwxKSxZZygyLHpidCwyLDIsIm5nLXRlbXBsYXRlIixudWxsLDIsS2YpLCRnKCkpLDImbil7Y29uc3QgdD1xZygzKTt3cygxKSxKZygibmdJZiIsMD09PWUucnVucy5zaXplKSgibmdJZkVsc2UiLHQpfX0sZGlyZWN0aXZlczpbV00sdmR0LE1idCx3YnRdLHN0eWxlczpbIltfbmdob3N0LSVDT01QJV17ZGlzcGxheTpmbGV4O2hlaWdodDoxMDAlfS5ucG1pLWNvbnRhaW5lcltfbmdjb250ZW50LSVDT01QJV17ZmxleDoxIDF9Il0sY2hhbmdlRGV0ZWN0aW9uOjB9KTtjbGFzcyBUYnR7Y29uc3RydWN0b3IodCl7dGhpcy5zdG9yZT10LHRoaXMucnVucyQ9dGhpcy5zdG9yZS5waXBlKGx2KEtEKSksdGhpcy5hY3RpdmVWaWV3JD10aGlzLnN0b3JlLnBpcGUobHYoR2R0KSl9bmdPbkluaXQoKXt0aGlzLnN0b3JlLmRpc3BhdGNoKEpkdCgpKX19VGJ0Lsm1ZmFjPWZ1bmN0aW9uIHQobil7cmV0dXJuIG5ldyhufHxUYnQpKFpnKGN2KSl9LFRidC7JtWNtcD1fbyh7dHlwZTpUYnQsc2VsZWN0b3JzOltbIm5wbWkiXV0sZGVjbHM6Myx2YXJzOjYsY29uc3RzOltbMywicnVucyIsImFjdGl2ZVZpZXciXV0sdGVtcGxhdGU6ZnVuY3Rpb24gdChuLGUpezEmbiYmKHRwKDAsIm5wbWktY29tcG9uZW50IiwwKSx5ZigxLCJhc3luYyIpLHlmKDIsImFzeW5jIikpLDImbiYmSmcoInJ1bnMiLGtmKDEsMixlLnJ1bnMkKSkoImFjdGl2ZVZpZXciLGtmKDIsNCxlLmFjdGl2ZVZpZXckKSl9LGRpcmVjdGl2ZXM6W1JidF0scGlwZXM6W29PXSxlbmNhcHN1bGF0aW9uOjJ9KTt2YXIgRGJ0PXlQKChmdW5jdGlvbih0LG4pe3ZhciBlPXhQJiZ4UC5fX3ZhbHVlc3x8ZnVuY3Rpb24odCl7dmFyIG49ImZ1bmN0aW9uIj09dHlwZW9mIFN5bWJvbCYmdFtTeW1ib2wuaXRlcmF0b3JdLGU9MDtyZXR1cm4gbj9uLmNhbGwodCk6e25leHQ6ZnVuY3Rpb24oKXtyZXR1cm4gdCYmZT49dC5sZW5ndGgmJih0PXZvaWQgMCkse3ZhbHVlOnQmJnRbZSsrXSxkb25lOiF0fX19fTtmdW5jdGlvbiBhKHQsbil7cmV0dXJuIE1hdGguZmxvb3IobigpKnQpfWZ1bmN0aW9uIG8odCl7Zm9yKHZhciBuPVtdLGU9MDtlPHQ7ZSsrKW4ucHVzaCh2b2lkIDApO3JldHVybiBufWZ1bmN0aW9uIHIodCxuKXtyZXR1cm4gbyh0KS5tYXAoKGZ1bmN0aW9uKCl7cmV0dXJuIG59KSl9ZnVuY3Rpb24gaSh0KXtyZXR1cm4gcih0LDApfWZ1bmN0aW9uIGModCl7cmV0dXJuIHQucmVkdWNlKChmdW5jdGlvbih0LG4pe3JldHVybiB0K259KSl9T2JqZWN0LmRlZmluZVByb3BlcnR5KG4sIl9fZXNNb2R1bGUiLHt2YWx1ZTohMH0pLG4udGF1UmFuZEludD1hLG4udGF1UmFuZD1mdW5jdGlvbiBzKHQpe3JldHVybiB0KCl9LG4ubm9ybT1mdW5jdGlvbiBsKHQpe3ZhciBuLGEsbz0wO3RyeXtmb3IodmFyIHI9ZSh0KSxpPXIubmV4dCgpOyFpLmRvbmU7aT1yLm5leHQoKSlvKz1NYXRoLnBvdyhpLnZhbHVlLDIpfWNhdGNoKHQpe249e2Vycm9yOnR9fWZpbmFsbHl7dHJ5e2kmJiFpLmRvbmUmJihhPXIucmV0dXJuKSYmYS5jYWxsKHIpfWZpbmFsbHl7aWYobil0aHJvdyBuLmVycm9yfX1yZXR1cm4gTWF0aC5zcXJ0KG8pfSxuLmVtcHR5PW8sbi5yYW5nZT1mdW5jdGlvbiBtKHQpe3JldHVybiBvKHQpLm1hcCgoZnVuY3Rpb24odCxuKXtyZXR1cm4gbn0pKX0sbi5maWxsZWQ9cixuLnplcm9zPWksbi5vbmVzPWZ1bmN0aW9uIGQodCl7cmV0dXJuIHIodCwxKX0sbi5saW5lYXI9ZnVuY3Rpb24gZyh0LG4sZSl7cmV0dXJuIG8oZSkubWFwKChmdW5jdGlvbihhLG8pe3JldHVybiB0K28qKChuLXQpLyhlLTEpKX0pKX0sbi5zdW09YyxuLm1lYW49ZnVuY3Rpb24gcCh0KXtyZXR1cm4gYyh0KS90Lmxlbmd0aH0sbi5tYXg9ZnVuY3Rpb24gYih0KXtmb3IodmFyIG49MCxlPTA7ZTx0Lmxlbmd0aDtlKyspbj10W2VdPm4/dFtlXTpuO3JldHVybiBufSxuLm1heDJkPWZ1bmN0aW9uIHUodCl7Zm9yKHZhciBuPTAsZT0wO2U8dC5sZW5ndGg7ZSsrKWZvcih2YXIgYT0wO2E8dFtlXS5sZW5ndGg7YSsrKW49dFtlXVthXT5uP3RbZV1bYV06bjtyZXR1cm4gbn0sbi5yZWplY3Rpb25TYW1wbGU9ZnVuY3Rpb24gZih0LG4sZSl7Zm9yKHZhciBvPWkodCkscj0wO3I8dDtyKyspZm9yKHZhciBjPSEwO2M7KXtmb3IodmFyIHM9YShuLGUpLGw9ITEsbT0wO208cjttKyspaWYocz09PW9bbV0pe2w9ITA7YnJlYWt9bHx8KGM9ITEpLG9bcl09c31yZXR1cm4gb30sbi5yZXNoYXBlMmQ9ZnVuY3Rpb24gaCh0LG4sZSl7dmFyIGE9W10sbz0wO2lmKHQubGVuZ3RoIT09biplKXRocm93IG5ldyBFcnJvcigiQXJyYXkgZGltZW5zaW9ucyBtdXN0IG1hdGNoIGlucHV0IGxlbmd0aC4iKTtmb3IodmFyIHI9MDtyPG47cisrKXtmb3IodmFyIGk9W10sYz0wO2M8ZTtjKyspaS5wdXNoKHRbb10pLG8rPTE7YS5wdXNoKGkpfXJldHVybiBhfX0pKSxJYnQ9eVAoKGZ1bmN0aW9uKHQsbil7dmFyIGU9eFAmJnhQLl9faW1wb3J0U3Rhcnx8ZnVuY3Rpb24odCl7aWYodCYmdC5fX2VzTW9kdWxlKXJldHVybiB0O3ZhciBuPXt9O2lmKG51bGwhPXQpZm9yKHZhciBlIGluIHQpT2JqZWN0Lmhhc093blByb3BlcnR5LmNhbGwodCxlKSYmKG5bZV09dFtlXSk7cmV0dXJuIG4uZGVmYXVsdD10LG59O09iamVjdC5kZWZpbmVQcm9wZXJ0eShuLCJfX2VzTW9kdWxlIix7dmFsdWU6ITB9KTt2YXIgYT1lKERidCk7ZnVuY3Rpb24gbyh0LG4pe3ZhciBlPWZ1bmN0aW9uKGUpe3JldHVybiBhLmVtcHR5KHQpLm1hcCgoZnVuY3Rpb24oKXtyZXR1cm4gYS5maWxsZWQobixlKX0pKX0sbz1bXTtyZXR1cm4gby5wdXNoKGUoLTEpKSxvLnB1c2goZSgxLzApKSxvLnB1c2goZSgwKSksb31mdW5jdGlvbiByKHQsbixlLGEsbyl7bj1NYXRoLmZsb29yKG4pO3ZhciByPXRbMF1bbl07aWYoZT49dFsxXVtuXVswXSlyZXR1cm4gMDtmb3IodmFyIGM9MDtjPHIubGVuZ3RoO2MrKylpZihhPT09cltjXSlyZXR1cm4gMDtyZXR1cm4gaSh0LG4sZSxhLG8pfWZ1bmN0aW9uIGkodCxuLGUsYSxvKXt2YXIgcj10WzBdW25dLGk9dFsxXVtuXSxjPXRbMl1bbl07aWYoZT49aVswXSlyZXR1cm4gMDtpWzBdPWUsclswXT1hLGNbMF09bztmb3IodmFyIHM9MCxsPTA7Oyl7dmFyIG09MipzKzEsZD1tKzEsZz10WzBdWzBdLmxlbmd0aDtpZihtPj1nKWJyZWFrO2lmKGQ+PWcpe2lmKCEoaVttXT5lKSlicmVhaztsPW19ZWxzZSBpZihpW21dPj1pW2RdKXtpZighKGU8aVttXSkpYnJlYWs7bD1tfWVsc2V7aWYoIShlPGlbZF0pKWJyZWFrO2w9ZH1pW3NdPWlbbF0scltzXT1yW2xdLGNbc109Y1tsXSxzPWx9cmV0dXJuIGlbc109ZSxyW3NdPWEsY1tzXT1vLDF9ZnVuY3Rpb24gYyh0LG4sZSxhKXtmb3IoOzIqYSsxPGU7KXt2YXIgbz0yKmErMSxyPW8rMSxpPWE7aWYodFtpXTx0W29dJiYoaT1vKSxyPGUmJnRbaV08dFtyXSYmKGk9ciksaT09PWEpYnJlYWs7dmFyIGM9dFthXTt0W2FdPXRbaV0sdFtpXT1jO3ZhciBzPW5bYV07blthXT1uW2ldLG5baV09cyxhPWl9fW4ubWFrZUhlYXA9byxuLnJlamVjdGlvblNhbXBsZT1mdW5jdGlvbiBzKHQsbixlKXtmb3IodmFyIG89YS56ZXJvcyh0KSxyPTA7cjx0O3IrKyl7Zm9yKHZhciBpPSEwLGM9MDtpOyl7Yz1hLnRhdVJhbmRJbnQobixlKTtmb3IodmFyIHM9ITEsbD0wO2w8cjtsKyspaWYoYz09PW9bbF0pe3M9ITA7YnJlYWt9c3x8KGk9ITEpfW9bcl09Y31yZXR1cm4gb30sbi5oZWFwUHVzaD1yLG4udW5jaGVja2VkSGVhcFB1c2g9aSxuLmJ1aWxkQ2FuZGlkYXRlcz1mdW5jdGlvbiBsKHQsbixlLGksYyl7Zm9yKHZhciBzPW8obixpKSxsPTA7bDxuO2wrKylmb3IodmFyIG09MDttPGU7bSsrKWlmKCEodFswXVtsXVttXTwwKSl7dmFyIGQ9dFswXVtsXVttXSxnPXRbMl1bbF1bbV0scD1hLnRhdVJhbmQoYyk7cihzLGwscCxkLGcpLHIocyxkLHAsbCxnKSx0WzJdW2xdW21dPTB9cmV0dXJuIHN9LG4uZGVoZWFwU29ydD1mdW5jdGlvbiBtKHQpe2Zvcih2YXIgbj10WzBdLGU9dFsxXSxhPTA7YTxuLmxlbmd0aDthKyspZm9yKHZhciBvPW5bYV0scj1lW2FdLGk9MDtpPG8ubGVuZ3RoLTE7aSsrKXt2YXIgcz1vLmxlbmd0aC1pLTEsbD1yLmxlbmd0aC1pLTEsbT1vWzBdO29bMF09b1tzXSxvW3NdPW07dmFyIGQ9clswXTtyWzBdPXJbbF0scltsXT1kLGMocixvLGwsMCl9cmV0dXJue2luZGljZXM6bix3ZWlnaHRzOmV9fSxuLnNtYWxsZXN0RmxhZ2dlZD1mdW5jdGlvbiBkKHQsbil7Zm9yKHZhciBlPXRbMF1bbl0sYT10WzFdW25dLG89dFsyXVtuXSxyPTEvMCxpPS0xLGM9MDtjPmUubGVuZ3RoO2MrKykxPT09b1tjXSYmYVtjXTxyJiYocj1hW2NdLGk9Yyk7cmV0dXJuIGk+PTA/KG9baV09MCxNYXRoLmZsb29yKGVbaV0pKTotMX19KSksTmJ0PXlQKChmdW5jdGlvbih0LG4pe3ZhciBlLGE9eFAmJnhQLl9fcmVhZHx8ZnVuY3Rpb24odCxuKXt2YXIgZT0iZnVuY3Rpb24iPT10eXBlb2YgU3ltYm9sJiZ0W1N5bWJvbC5pdGVyYXRvcl07aWYoIWUpcmV0dXJuIHQ7dmFyIGEsbyxyPWUuY2FsbCh0KSxpPVtdO3RyeXtmb3IoOyh2b2lkIDA9PT1ufHxuLS0gPjApJiYhKGE9ci5uZXh0KCkpLmRvbmU7KWkucHVzaChhLnZhbHVlKX1jYXRjaCh0KXtvPXtlcnJvcjp0fX1maW5hbGx5e3RyeXthJiYhYS5kb25lJiYoZT1yLnJldHVybikmJmUuY2FsbChyKX1maW5hbGx5e2lmKG8pdGhyb3cgby5lcnJvcn19cmV0dXJuIGl9LG89eFAmJnhQLl9fdmFsdWVzfHxmdW5jdGlvbih0KXt2YXIgbj0iZnVuY3Rpb24iPT10eXBlb2YgU3ltYm9sJiZ0W1N5bWJvbC5pdGVyYXRvcl0sZT0wO3JldHVybiBuP24uY2FsbCh0KTp7bmV4dDpmdW5jdGlvbigpe3JldHVybiB0JiZlPj10Lmxlbmd0aCYmKHQ9dm9pZCAwKSx7dmFsdWU6dCYmdFtlKytdLGRvbmU6IXR9fX19LHI9eFAmJnhQLl9faW1wb3J0U3Rhcnx8ZnVuY3Rpb24odCl7aWYodCYmdC5fX2VzTW9kdWxlKXJldHVybiB0O3ZhciBuPXt9O2lmKG51bGwhPXQpZm9yKHZhciBlIGluIHQpT2JqZWN0Lmhhc093blByb3BlcnR5LmNhbGwodCxlKSYmKG5bZV09dFtlXSk7cmV0dXJuIG4uZGVmYXVsdD10LG59O09iamVjdC5kZWZpbmVQcm9wZXJ0eShuLCJfX2VzTW9kdWxlIix7dmFsdWU6ITB9KTt2YXIgaT1yKERidCksYz0oZnVuY3Rpb24oKXtmdW5jdGlvbiB0KHQsbixlLGEpe2lmKHRoaXMuZW50cmllcz1uZXcgTWFwLHRoaXMublJvd3M9MCx0aGlzLm5Db2xzPTAsdC5sZW5ndGghPT1uLmxlbmd0aHx8dC5sZW5ndGghPT1lLmxlbmd0aCl0aHJvdyBuZXcgRXJyb3IoInJvd3MsIGNvbHMgYW5kIHZhbHVlcyBhcnJheXMgbXVzdCBhbGwgaGF2ZSB0aGUgc2FtZSBsZW5ndGgiKTt0aGlzLm5Sb3dzPWFbMF0sdGhpcy5uQ29scz1hWzFdO2Zvcih2YXIgbz0wO288ZS5sZW5ndGg7bysrKXt2YXIgcj10W29dLGk9bltvXTt0aGlzLmNoZWNrRGltcyhyLGkpO3ZhciBjPXRoaXMubWFrZUtleShyLGkpO3RoaXMuZW50cmllcy5zZXQoYyx7dmFsdWU6ZVtvXSxyb3c6cixjb2w6aX0pfX1yZXR1cm4gdC5wcm90b3R5cGUubWFrZUtleT1mdW5jdGlvbih0LG4pe3JldHVybiB0KyI6IitufSx0LnByb3RvdHlwZS5jaGVja0RpbXM9ZnVuY3Rpb24odCxuKXtpZighKHQ8dGhpcy5uUm93cyYmbjx0aGlzLm5Db2xzKSl0aHJvdyBuZXcgRXJyb3IoInJvdyBhbmQvb3IgY29sIHNwZWNpZmllZCBvdXRzaWRlIG9mIG1hdHJpeCBkaW1lbnNpb25zIil9LHQucHJvdG90eXBlLnNldD1mdW5jdGlvbih0LG4sZSl7dGhpcy5jaGVja0RpbXModCxuKTt2YXIgYT10aGlzLm1ha2VLZXkodCxuKTt0aGlzLmVudHJpZXMuaGFzKGEpP3RoaXMuZW50cmllcy5nZXQoYSkudmFsdWU9ZTp0aGlzLmVudHJpZXMuc2V0KGEse3ZhbHVlOmUscm93OnQsY29sOm59KX0sdC5wcm90b3R5cGUuZ2V0PWZ1bmN0aW9uKHQsbixlKXt2b2lkIDA9PT1lJiYoZT0wKSx0aGlzLmNoZWNrRGltcyh0LG4pO3ZhciBhPXRoaXMubWFrZUtleSh0LG4pO3JldHVybiB0aGlzLmVudHJpZXMuaGFzKGEpP3RoaXMuZW50cmllcy5nZXQoYSkudmFsdWU6ZX0sdC5wcm90b3R5cGUuZ2V0QWxsPWZ1bmN0aW9uKHQpe3ZvaWQgMD09PXQmJih0PSEwKTt2YXIgbj1bXTtyZXR1cm4gdGhpcy5lbnRyaWVzLmZvckVhY2goKGZ1bmN0aW9uKHQpe24ucHVzaCh0KX0pKSx0JiZuLnNvcnQoKGZ1bmN0aW9uKHQsbil7cmV0dXJuIHQucm93PT09bi5yb3c/dC5jb2wtbi5jb2w6dC5yb3ctbi5yb3d9KSksbn0sdC5wcm90b3R5cGUuZ2V0RGltcz1mdW5jdGlvbigpe3JldHVyblt0aGlzLm5Sb3dzLHRoaXMubkNvbHNdfSx0LnByb3RvdHlwZS5nZXRSb3dzPWZ1bmN0aW9uKCl7cmV0dXJuIEFycmF5LmZyb20odGhpcy5lbnRyaWVzLChmdW5jdGlvbih0KXtyZXR1cm4gYSh0LDIpWzFdLnJvd30pKX0sdC5wcm90b3R5cGUuZ2V0Q29scz1mdW5jdGlvbigpe3JldHVybiBBcnJheS5mcm9tKHRoaXMuZW50cmllcywoZnVuY3Rpb24odCl7cmV0dXJuIGEodCwyKVsxXS5jb2x9KSl9LHQucHJvdG90eXBlLmdldFZhbHVlcz1mdW5jdGlvbigpe3JldHVybiBBcnJheS5mcm9tKHRoaXMuZW50cmllcywoZnVuY3Rpb24odCl7cmV0dXJuIGEodCwyKVsxXS52YWx1ZX0pKX0sdC5wcm90b3R5cGUuZm9yRWFjaD1mdW5jdGlvbih0KXt0aGlzLmVudHJpZXMuZm9yRWFjaCgoZnVuY3Rpb24obil7cmV0dXJuIHQobi52YWx1ZSxuLnJvdyxuLmNvbCl9KSl9LHQucHJvdG90eXBlLm1hcD1mdW5jdGlvbihuKXt2YXIgZT1bXTt0aGlzLmVudHJpZXMuZm9yRWFjaCgoZnVuY3Rpb24odCl7ZS5wdXNoKG4odC52YWx1ZSx0LnJvdyx0LmNvbCkpfSkpO3ZhciBhPVt0aGlzLm5Sb3dzLHRoaXMubkNvbHNdO3JldHVybiBuZXcgdCh0aGlzLmdldFJvd3MoKSx0aGlzLmdldENvbHMoKSxlLGEpfSx0LnByb3RvdHlwZS50b0FycmF5PWZ1bmN0aW9uKCl7dmFyIHQ9dGhpcyxuPWkuZW1wdHkodGhpcy5uUm93cykubWFwKChmdW5jdGlvbigpe3JldHVybiBpLnplcm9zKHQubkNvbHMpfSkpO3JldHVybiB0aGlzLmVudHJpZXMuZm9yRWFjaCgoZnVuY3Rpb24odCl7blt0LnJvd11bdC5jb2xdPXQudmFsdWV9KSksbn0sdH0pKCk7bi5TcGFyc2VNYXRyaXg9YyxuLnRyYW5zcG9zZT1mdW5jdGlvbiBzKHQpe3ZhciBuPVtdLGU9W10sYT1bXTtyZXR1cm4gdC5mb3JFYWNoKChmdW5jdGlvbih0LG8scil7bi5wdXNoKG8pLGUucHVzaChyKSxhLnB1c2godCl9KSksbmV3IGMoZSxuLGEsW3QubkNvbHMsdC5uUm93c10pfSxuLmlkZW50aXR5PWZ1bmN0aW9uIGwodCl7Zm9yKHZhciBuPWEodCwxKVswXSxlPW5ldyBjKFtdLFtdLFtdLHQpLG89MDtvPG47bysrKWUuc2V0KG8sbywxKTtyZXR1cm4gZX0sbi5wYWlyd2lzZU11bHRpcGx5PWZ1bmN0aW9uIG0odCxuKXtyZXR1cm4gXyh0LG4sKGZ1bmN0aW9uKHQsbil7cmV0dXJuIHQqbn0pKX0sbi5hZGQ9ZnVuY3Rpb24gZCh0LG4pe3JldHVybiBfKHQsbiwoZnVuY3Rpb24odCxuKXtyZXR1cm4gdCtufSkpfSxuLnN1YnRyYWN0PWZ1bmN0aW9uIGcodCxuKXtyZXR1cm4gXyh0LG4sKGZ1bmN0aW9uKHQsbil7cmV0dXJuIHQtbn0pKX0sbi5tYXhpbXVtPWZ1bmN0aW9uIHAodCxuKXtyZXR1cm4gXyh0LG4sKGZ1bmN0aW9uKHQsbil7cmV0dXJuIHQ+bj90Om59KSl9LG4ubXVsdGlwbHlTY2FsYXI9ZnVuY3Rpb24gYih0LG4pe3JldHVybiB0Lm1hcCgoZnVuY3Rpb24odCl7cmV0dXJuIHQqbn0pKX0sbi5lbGltaW5hdGVaZXJvcz1mdW5jdGlvbiB1KHQpe2Zvcih2YXIgbj1uZXcgU2V0LGU9dC5nZXRWYWx1ZXMoKSxhPXQuZ2V0Um93cygpLG89dC5nZXRDb2xzKCkscj0wO3I8ZS5sZW5ndGg7cisrKTA9PT1lW3JdJiZuLmFkZChyKTt2YXIgaT1mdW5jdGlvbih0LGUpe3JldHVybiFuLmhhcyhlKX0scz1lLmZpbHRlcihpKSxsPWEuZmlsdGVyKGkpLG09by5maWx0ZXIoaSk7cmV0dXJuIG5ldyBjKGwsbSxzLHQuZ2V0RGltcygpKX0sbi5ub3JtYWxpemU9ZnVuY3Rpb24gZih0LG4pe3ZhciBlLGE7dm9pZCAwPT09biYmKG49ImwyIik7dmFyIHI9aFtuXSxpPW5ldyBNYXA7dC5mb3JFYWNoKChmdW5jdGlvbih0LG4sZSl7dmFyIGE9aS5nZXQobil8fFtdO2EucHVzaChlKSxpLnNldChuLGEpfSkpO3ZhciBzPW5ldyBjKFtdLFtdLFtdLHQuZ2V0RGltcygpKSxsPWZ1bmN0aW9uKG4pe2Zvcih2YXIgZT1pLmdldChuKS5zb3J0KCksYT1lLm1hcCgoZnVuY3Rpb24oZSl7cmV0dXJuIHQuZ2V0KG4sZSl9KSksbz1yKGEpLGM9MDtjPG8ubGVuZ3RoO2MrKylzLnNldChuLGVbY10sb1tjXSl9O3RyeXtmb3IodmFyIG09byhpLmtleXMoKSksZD1tLm5leHQoKTshZC5kb25lO2Q9bS5uZXh0KCkpbChkLnZhbHVlKX1jYXRjaCh0KXtlPXtlcnJvcjp0fX1maW5hbGx5e3RyeXtkJiYhZC5kb25lJiYoYT1tLnJldHVybikmJmEuY2FsbChtKX1maW5hbGx5e2lmKGUpdGhyb3cgZS5lcnJvcn19cmV0dXJuIHN9O3ZhciBoPSgoZT17fSkubWF4PWZ1bmN0aW9uKHQpe2Zvcih2YXIgbj0tMS8wLGU9MDtlPHQubGVuZ3RoO2UrKyluPXRbZV0+bj90W2VdOm47cmV0dXJuIHQubWFwKChmdW5jdGlvbih0KXtyZXR1cm4gdC9ufSkpfSxlLmwxPWZ1bmN0aW9uKHQpe2Zvcih2YXIgbj0wLGU9MDtlPHQubGVuZ3RoO2UrKyluKz10W2VdO3JldHVybiB0Lm1hcCgoZnVuY3Rpb24odCl7cmV0dXJuIHQvbn0pKX0sZS5sMj1mdW5jdGlvbih0KXtmb3IodmFyIG49MCxlPTA7ZTx0Lmxlbmd0aDtlKyspbis9TWF0aC5wb3codFtlXSwyKTtyZXR1cm4gdC5tYXAoKGZ1bmN0aW9uKHQpe3JldHVybiBNYXRoLnNxcnQoTWF0aC5wb3codCwyKS9uKX0pKX0sZSk7ZnVuY3Rpb24gXyh0LG4sZSl7Zm9yKHZhciBhPW5ldyBTZXQsbz1bXSxyPVtdLGk9W10scz1mdW5jdGlvbihhLGMpe28ucHVzaChhKSxyLnB1c2goYyk7dmFyIHM9ZSh0LmdldChhLGMpLG4uZ2V0KGEsYykpO2kucHVzaChzKX0sbD10LmdldFZhbHVlcygpLG09dC5nZXRSb3dzKCksZD10LmdldENvbHMoKSxnPTA7ZzxsLmxlbmd0aDtnKyspYS5hZGQoKGY9bVtnXSkrIjoiKyhoPWRbZ10pKSxzKGYsaCk7dmFyIHA9bi5nZXRWYWx1ZXMoKSxiPW4uZ2V0Um93cygpLHU9bi5nZXRDb2xzKCk7Zm9yKGc9MDtnPHAubGVuZ3RoO2crKyl7dmFyIGYsaDthLmhhcygoZj1iW2ddKSsiOiIrKGg9dVtnXSkpfHxzKGYsaCl9cmV0dXJuIG5ldyBjKG8scixpLFt0Lm5Sb3dzLHQubkNvbHNdKX1uLmdldENTUj1mdW5jdGlvbiBDKHQpe3ZhciBuPVtdO3QuZm9yRWFjaCgoZnVuY3Rpb24odCxlLGEpe24ucHVzaCh7dmFsdWU6dCxyb3c6ZSxjb2w6YX0pfSkpLG4uc29ydCgoZnVuY3Rpb24odCxuKXtyZXR1cm4gdC5yb3c9PT1uLnJvdz90LmNvbC1uLmNvbDp0LnJvdy1uLnJvd30pKTtmb3IodmFyIGU9W10sYT1bXSxvPVtdLHI9LTEsaT0wO2k8bi5sZW5ndGg7aSsrKXt2YXIgYz1uW2ldLHM9Yy5yb3csbD1jLmNvbCxtPWMudmFsdWU7cyE9PXImJihyPXMsby5wdXNoKGkpKSxlLnB1c2gobCksYS5wdXNoKG0pfXJldHVybntpbmRpY2VzOmUsdmFsdWVzOmEsaW5kcHRyOm99fX0pKSxGYnQ9eVAoKGZ1bmN0aW9uKHQsbil7dmFyIGU9eFAmJnhQLl9fcmVhZHx8ZnVuY3Rpb24odCxuKXt2YXIgZT0iZnVuY3Rpb24iPT10eXBlb2YgU3ltYm9sJiZ0W1N5bWJvbC5pdGVyYXRvcl07aWYoIWUpcmV0dXJuIHQ7dmFyIGEsbyxyPWUuY2FsbCh0KSxpPVtdO3RyeXtmb3IoOyh2b2lkIDA9PT1ufHxuLS0gPjApJiYhKGE9ci5uZXh0KCkpLmRvbmU7KWkucHVzaChhLnZhbHVlKX1jYXRjaCh0KXtvPXtlcnJvcjp0fX1maW5hbGx5e3RyeXthJiYhYS5kb25lJiYoZT1yLnJldHVybikmJmUuY2FsbChyKX1maW5hbGx5e2lmKG8pdGhyb3cgby5lcnJvcn19cmV0dXJuIGl9LGE9eFAmJnhQLl9fc3ByZWFkfHxmdW5jdGlvbigpe2Zvcih2YXIgdD1bXSxuPTA7bjxhcmd1bWVudHMubGVuZ3RoO24rKyl0PXQuY29uY2F0KGUoYXJndW1lbnRzW25dKSk7cmV0dXJuIHR9LG89eFAmJnhQLl9fdmFsdWVzfHxmdW5jdGlvbih0KXt2YXIgbj0iZnVuY3Rpb24iPT10eXBlb2YgU3ltYm9sJiZ0W1N5bWJvbC5pdGVyYXRvcl0sZT0wO3JldHVybiBuP24uY2FsbCh0KTp7bmV4dDpmdW5jdGlvbigpe3JldHVybiB0JiZlPj10Lmxlbmd0aCYmKHQ9dm9pZCAwKSx7dmFsdWU6dCYmdFtlKytdLGRvbmU6IXR9fX19LHI9eFAmJnhQLl9faW1wb3J0U3Rhcnx8ZnVuY3Rpb24odCl7aWYodCYmdC5fX2VzTW9kdWxlKXJldHVybiB0O3ZhciBuPXt9O2lmKG51bGwhPXQpZm9yKHZhciBlIGluIHQpT2JqZWN0Lmhhc093blByb3BlcnR5LmNhbGwodCxlKSYmKG5bZV09dFtlXSk7cmV0dXJuIG4uZGVmYXVsdD10LG59O09iamVjdC5kZWZpbmVQcm9wZXJ0eShuLCJfX2VzTW9kdWxlIix7dmFsdWU6ITB9KTt2YXIgaSxjPXIoRGJ0KTtmdW5jdGlvbiBzKHQsbixlLGEsbyl7aWYodm9pZCAwPT09ZSYmKGU9MzApLG4ubGVuZ3RoPmUpe3ZhciByPShmdW5jdGlvbiBpKHQsbixlKXtmb3IodmFyIGE9dFswXS5sZW5ndGgsbz1jLnRhdVJhbmRJbnQobi5sZW5ndGgsZSkscj1jLnRhdVJhbmRJbnQobi5sZW5ndGgsZSksaT1uW29dLHM9bltyPShyKz1vPT09cj8xOjApJW4ubGVuZ3RoXSxsPTAsbT1jLnplcm9zKGEpLGQ9MDtkPG0ubGVuZ3RoO2QrKyltW2RdPXRbaV1bZF0tdFtzXVtkXSxsLT1tW2RdKih0W2ldW2RdK3Rbc11bZF0pLzI7dmFyIGc9MCxwPTAsYj1jLnplcm9zKG4ubGVuZ3RoKTtmb3IoZD0wO2Q8bi5sZW5ndGg7ZCsrKXtmb3IodmFyIHU9bCxmPTA7ZjxhO2YrKyl1Kz1tW2ZdKnRbbltkXV1bZl07MD09PXU/KGJbZF09Yy50YXVSYW5kSW50KDIsZSksMD09PWJbZF0/Zys9MTpwKz0xKTp1PjA/KGJbZF09MCxnKz0xKTooYltkXT0xLHArPTEpfXZhciBoPWMuemVyb3MoZyksXz1jLnplcm9zKHApO2ZvcihnPTAscD0wLGQ9MDtkPGIubGVuZ3RoO2QrKykwPT09YltkXT8oaFtnXT1uW2RdLGcrPTEpOihfW3BdPW5bZF0scCs9MSk7cmV0dXJue2luZGljZXNMZWZ0OmgsaW5kaWNlc1JpZ2h0Ol8saHlwZXJwbGFuZTptLG9mZnNldDpsfX0pKHQsbixvKSxsPXIuaW5kaWNlc1JpZ2h0LG09ci5oeXBlcnBsYW5lLGQ9ci5vZmZzZXQ7cmV0dXJue2xlZnRDaGlsZDpzKHQsci5pbmRpY2VzTGVmdCxlLGErMSxvKSxyaWdodENoaWxkOnModCxsLGUsYSsxLG8pLGlzTGVhZjohMSxoeXBlcnBsYW5lOm0sb2Zmc2V0OmR9fXJldHVybntpbmRpY2VzOm4saXNMZWFmOiEwfX1mdW5jdGlvbiBsKHQsbixlLG8scixpLGMpe3ZhciBzO2lmKHQuaXNMZWFmKXJldHVybiBvW2ldWzBdPS1jLChzPXJbY10pLnNwbGljZS5hcHBseShzLGEoWzAsdC5pbmRpY2VzLmxlbmd0aF0sdC5pbmRpY2VzKSkse25vZGVOdW06aSxsZWFmTnVtOmMrPTF9O25baV09dC5oeXBlcnBsYW5lLGVbaV09dC5vZmZzZXQsb1tpXVswXT1pKzE7dmFyIG09aSxkPWwodC5sZWZ0Q2hpbGQsbixlLG8scixpKzEsYyk7cmV0dXJuIGM9ZC5sZWFmTnVtLG9bbV1bMV09KGk9ZC5ub2RlTnVtKSsxLHtub2RlTnVtOihkPWwodC5yaWdodENoaWxkLG4sZSxvLHIsaSsxLGMpKS5ub2RlTnVtLGxlYWZOdW06ZC5sZWFmTnVtfX1mdW5jdGlvbiBtKHQpe3JldHVybiB0LmlzTGVhZj8xOjErbSh0LmxlZnRDaGlsZCkrbSh0LnJpZ2h0Q2hpbGQpfWZ1bmN0aW9uIGQodCl7cmV0dXJuIHQuaXNMZWFmPzE6ZCh0LmxlZnRDaGlsZCkrZCh0LnJpZ2h0Q2hpbGQpfWZ1bmN0aW9uIGcodCxuLGUsYSl7Zm9yKHZhciBvPW4scj0wO3I8ZS5sZW5ndGg7cisrKW8rPXRbcl0qZVtyXTtyZXR1cm4gMD09PW8/Yy50YXVSYW5kSW50KDIsYSk6bz4wPzA6MX1uLkZsYXRUcmVlPWk9ZnVuY3Rpb24gaSh0LG4sZSxhKXt0aGlzLmh5cGVycGxhbmVzPXQsdGhpcy5vZmZzZXRzPW4sdGhpcy5jaGlsZHJlbj1lLHRoaXMuaW5kaWNlcz1hfSxuLm1ha2VGb3Jlc3Q9ZnVuY3Rpb24gcCh0LG4sZSxhKXt2YXIgbz1NYXRoLm1heCgxMCxuKTtyZXR1cm4gYy5yYW5nZShlKS5tYXAoKGZ1bmN0aW9uKG4sZSl7cmV0dXJuKGZ1bmN0aW9uIHIodCxuLGUsYSl7cmV0dXJuIHZvaWQgMD09PW4mJihuPTMwKSxzKHQsYy5yYW5nZSh0Lmxlbmd0aCksbixlLGEpfSkodCxvLGUsYSl9KSkubWFwKChmdW5jdGlvbih0KXtyZXR1cm4oZnVuY3Rpb24gbih0LGUpe3ZhciBhPW0odCksbz1kKHQpLHI9Yy5yYW5nZShhKS5tYXAoKGZ1bmN0aW9uKCl7cmV0dXJuIGMuemVyb3ModC5oeXBlcnBsYW5lP3QuaHlwZXJwbGFuZS5sZW5ndGg6MCl9KSkscz1jLnplcm9zKGEpLGc9Yy5yYW5nZShhKS5tYXAoKGZ1bmN0aW9uKCl7cmV0dXJuWy0xLC0xXX0pKSxwPWMucmFuZ2UobykubWFwKChmdW5jdGlvbigpe3JldHVybiBjLnJhbmdlKGUpLm1hcCgoZnVuY3Rpb24oKXtyZXR1cm4tMX0pKX0pKTtyZXR1cm4gbCh0LHIscyxnLHAsMCwwKSxuZXcgaShyLHMsZyxwKX0pKHQsbyl9KSl9LG4ubWFrZUxlYWZBcnJheT1mdW5jdGlvbiBiKHQpe3ZhciBuLGU7aWYodC5sZW5ndGg+MCl7dmFyIHI9W107dHJ5e2Zvcih2YXIgaT1vKHQpLGM9aS5uZXh0KCk7IWMuZG9uZTtjPWkubmV4dCgpKXIucHVzaC5hcHBseShyLGEoYy52YWx1ZS5pbmRpY2VzKSl9Y2F0Y2godCl7bj17ZXJyb3I6dH19ZmluYWxseXt0cnl7YyYmIWMuZG9uZSYmKGU9aS5yZXR1cm4pJiZlLmNhbGwoaSl9ZmluYWxseXtpZihuKXRocm93IG4uZXJyb3J9fXJldHVybiByfXJldHVybltbLTFdXX0sbi5zZWFyY2hGbGF0VHJlZT1mdW5jdGlvbiB1KHQsbixlKXtmb3IodmFyIGE9MDtuLmNoaWxkcmVuW2FdWzBdPjA7KWE9MD09PWcobi5oeXBlcnBsYW5lc1thXSxuLm9mZnNldHNbYV0sdCxlKT9uLmNoaWxkcmVuW2FdWzBdOm4uY2hpbGRyZW5bYV1bMV07cmV0dXJuIG4uaW5kaWNlc1stMSpuLmNoaWxkcmVuW2FdWzBdXX19KSksTGJ0PXlQKChmdW5jdGlvbih0LG4pe3ZhciBlPXhQJiZ4UC5fX3ZhbHVlc3x8ZnVuY3Rpb24odCl7dmFyIG49ImZ1bmN0aW9uIj09dHlwZW9mIFN5bWJvbCYmdFtTeW1ib2wuaXRlcmF0b3JdLGU9MDtyZXR1cm4gbj9uLmNhbGwodCk6e25leHQ6ZnVuY3Rpb24oKXtyZXR1cm4gdCYmZT49dC5sZW5ndGgmJih0PXZvaWQgMCkse3ZhbHVlOnQmJnRbZSsrXSxkb25lOiF0fX19fSxhPXhQJiZ4UC5fX2ltcG9ydFN0YXJ8fGZ1bmN0aW9uKHQpe2lmKHQmJnQuX19lc01vZHVsZSlyZXR1cm4gdDt2YXIgbj17fTtpZihudWxsIT10KWZvcih2YXIgZSBpbiB0KU9iamVjdC5oYXNPd25Qcm9wZXJ0eS5jYWxsKHQsZSkmJihuW2VdPXRbZV0pO3JldHVybiBuLmRlZmF1bHQ9dCxufTtPYmplY3QuZGVmaW5lUHJvcGVydHkobiwiX19lc01vZHVsZSIse3ZhbHVlOiEwfSk7dmFyIG89YShJYnQpLHI9YShOYnQpLGk9YShGYnQpLGM9YShEYnQpO24ubWFrZU5ORGVzY2VudD1mdW5jdGlvbiBzKHQsbil7cmV0dXJuIGZ1bmN0aW9uIGUoYSxyLGkscyxsLG0sZCxnKXt2b2lkIDA9PT1zJiYocz0xMCksdm9pZCAwPT09bCYmKGw9NTApLHZvaWQgMD09PW0mJihtPS4wMDEpLHZvaWQgMD09PWQmJihkPS41KSx2b2lkIDA9PT1nJiYoZz0hMCk7Zm9yKHZhciBwPWEubGVuZ3RoLGI9by5tYWtlSGVhcChhLmxlbmd0aCxpKSx1PTA7dTxhLmxlbmd0aDt1KyspZm9yKHZhciBmPW8ucmVqZWN0aW9uU2FtcGxlKGksYS5sZW5ndGgsbiksaD0wO2g8Zi5sZW5ndGg7aCsrKXt2YXIgXz10KGFbdV0sYVtmW2hdXSk7by5oZWFwUHVzaChiLHUsXyxmW2hdLDEpLG8uaGVhcFB1c2goYixmW2hdLF8sdSwxKX1pZihnKWZvcih2YXIgQz0wO0M8ci5sZW5ndGg7QysrKWZvcih1PTA7dTxyW0NdLmxlbmd0aCYmIShyW0NdW3VdPDApO3UrKylmb3IoaD11KzE7aDxyW0NdLmxlbmd0aCYmIShyW0NdW2hdPDApO2grKylfPXQoYVtyW0NdW3VdXSxhW3JbQ11baF1dKSxvLmhlYXBQdXNoKGIscltDXVt1XSxfLHJbQ11baF0sMSksby5oZWFwUHVzaChiLHJbQ11baF0sXyxyW0NdW3VdLDEpO2ZvcihDPTA7QzxzO0MrKyl7dmFyIE09by5idWlsZENhbmRpZGF0ZXMoYixwLGksbCxuKSxPPTA7Zm9yKHU9MDt1PHA7dSsrKWZvcihoPTA7aDxsO2grKyl7dmFyIFA9TWF0aC5mbG9vcihNWzBdW3VdW2hdKTtpZighKFA8MHx8Yy50YXVSYW5kKG4pPGQpKWZvcih2YXIgeD0wO3g8bDt4Kyspe3ZhciB5PU1hdGguZmxvb3IoTVswXVt1XVt4XSk7eTwwfHwhTVsyXVt1XVtoXSYmIU1bMl1bdV1beF18fChfPXQoYVtQXSxhW3ldKSxPKz1vLmhlYXBQdXNoKGIsUCxfLHksMSksTys9by5oZWFwUHVzaChiLHksXyxQLDEpKX19aWYoTzw9bSppKmEubGVuZ3RoKWJyZWFrfXJldHVybiBvLmRlaGVhcFNvcnQoYil9fSxuLm1ha2VJbml0aWFsaXphdGlvbnM9ZnVuY3Rpb24gbCh0KXtyZXR1cm57aW5pdEZyb21SYW5kb206ZnVuY3Rpb24gbihlLGEscixpLHMpe2Zvcih2YXIgbD0wO2w8ci5sZW5ndGg7bCsrKWZvcih2YXIgbT1jLnJlamVjdGlvblNhbXBsZShlLGEubGVuZ3RoLHMpLGQ9MDtkPG0ubGVuZ3RoO2QrKylpZighKG1bZF08MCkpe3ZhciBnPXQoYVttW2RdXSxyW2xdKTtvLmhlYXBQdXNoKGksbCxnLG1bZF0sMSl9fSxpbml0RnJvbVRyZWU6ZnVuY3Rpb24gZShuLGEscixjLHMpe2Zvcih2YXIgbD0wO2w8ci5sZW5ndGg7bCsrKWZvcih2YXIgbT1pLnNlYXJjaEZsYXRUcmVlKHJbbF0sbixzKSxkPTA7ZDxtLmxlbmd0aDtkKyspe2lmKG1bZF08MClyZXR1cm47dmFyIGc9dChhW21bZF1dLHJbbF0pO28uaGVhcFB1c2goYyxsLGcsbVtkXSwxKX19fX0sbi5tYWtlSW5pdGlhbGl6ZWROTlNlYXJjaD1mdW5jdGlvbiBtKHQpe3JldHVybiBmdW5jdGlvbiBuKGEsaSxjLHMpe2Zvcih2YXIgbCxtLGQ9ci5nZXRDU1IoaSksZz1kLmluZGljZXMscD1kLmluZHB0cixiPTA7YjxzLmxlbmd0aDtiKyspZm9yKHZhciB1PW5ldyBTZXQoY1swXVtiXSk7Oyl7dmFyIGY9by5zbWFsbGVzdEZsYWdnZWQoYyxiKTtpZigtMT09PWYpYnJlYWs7dmFyIGg9Zy5zbGljZShwW2ZdLHBbZisxXSk7dHJ5e2Zvcih2YXIgXz1lKGgpLEM9Xy5uZXh0KCk7IUMuZG9uZTtDPV8ubmV4dCgpKXt2YXIgTT1DLnZhbHVlO2lmKE0hPT1mJiYtMSE9PU0mJiF1LmhhcyhNKSl7dmFyIE89dChhW01dLHNbYl0pO28udW5jaGVja2VkSGVhcFB1c2goYyxiLE8sTSwxKSx1LmFkZChNKX19fWNhdGNoKHQpe2w9e2Vycm9yOnR9fWZpbmFsbHl7dHJ5e0MmJiFDLmRvbmUmJihtPV8ucmV0dXJuKSYmbS5jYWxsKF8pfWZpbmFsbHl7aWYobCl0aHJvdyBsLmVycm9yfX19cmV0dXJuIGN9fSxuLmluaXRpYWxpemVTZWFyY2g9ZnVuY3Rpb24gZCh0LG4sYSxyLGksYyxzKXt2YXIgbCxtLGQ9by5tYWtlSGVhcChhLmxlbmd0aCxyKTtpZihpKHIsbixhLGQscyksdCl0cnl7Zm9yKHZhciBnPWUodCkscD1nLm5leHQoKTshcC5kb25lO3A9Zy5uZXh0KCkpYyhwLnZhbHVlLG4sYSxkLHMpfWNhdGNoKHQpe2w9e2Vycm9yOnR9fWZpbmFsbHl7dHJ5e3AmJiFwLmRvbmUmJihtPWcucmV0dXJuKSYmbS5jYWxsKGcpfWZpbmFsbHl7aWYobCl0aHJvdyBsLmVycm9yfX1yZXR1cm4gZH19KSk7Y29uc3QgSGJ0PU9iamVjdC5wcm90b3R5cGUudG9TdHJpbmc7ZnVuY3Rpb24gQmJ0KHQpe3JldHVybiBIYnQuY2FsbCh0KS5lbmRzV2l0aCgiQXJyYXldIil9ZnVuY3Rpb24gVmJ0KHQsbixlKXtsZXQgYT0wO2NvbnN0IG89ZShuKTtmb3IobGV0IG49MDtuPHQueC5sZW5ndGg7bisrKWErPU1hdGguYWJzKHQueVtuXS1vKHQueFtuXSkpO3JldHVybiBhfWNvbnN0IGpidD1PYmplY3QucHJvdG90eXBlLnRvU3RyaW5nO2Z1bmN0aW9uIFVidCh0KXtyZXR1cm4gamJ0LmNhbGwodCkuZW5kc1dpdGgoIkFycmF5XSIpfWZ1bmN0aW9uIFdidCh0KXt2YXIgbj1hcmd1bWVudHMubGVuZ3RoPjEmJnZvaWQgMCE9PWFyZ3VtZW50c1sxXT9hcmd1bWVudHNbMV06e307aWYoIVVidCh0KSl0aHJvdyBuZXcgVHlwZUVycm9yKCJpbnB1dCBtdXN0IGJlIGFuIGFycmF5Iik7aWYoMD09PXQubGVuZ3RoKXRocm93IG5ldyBUeXBlRXJyb3IoImlucHV0IG11c3Qgbm90IGJlIGVtcHR5Iik7dmFyIGU9bi5mcm9tSW5kZXgsYT12b2lkIDA9PT1lPzA6ZSxvPW4udG9JbmRleCxyPXZvaWQgMD09PW8/dC5sZW5ndGg6bztpZihhPDB8fGE+PXQubGVuZ3RofHwhTnVtYmVyLmlzSW50ZWdlcihhKSl0aHJvdyBuZXcgRXJyb3IoImZyb21JbmRleCBtdXN0IGJlIGEgcG9zaXRpdmUgaW50ZWdlciBzbWFsbGVyIHRoYW4gbGVuZ3RoIik7aWYocjw9YXx8cj50Lmxlbmd0aHx8IU51bWJlci5pc0ludGVnZXIocikpdGhyb3cgbmV3IEVycm9yKCJ0b0luZGV4IG11c3QgYmUgYW4gaW50ZWdlciBncmVhdGVyIHRoYW4gZnJvbUluZGV4IGFuZCBhdCBtb3N0IGVxdWFsIHRvIGxlbmd0aCIpO2Zvcih2YXIgaT10W2FdLGM9YSsxO2M8cjtjKyspdFtjXT5pJiYoaT10W2NdKTtyZXR1cm4gaX1mdW5jdGlvbiBHYnQodCl7dmFyIG49YXJndW1lbnRzLmxlbmd0aD4xJiZ2b2lkIDAhPT1hcmd1bWVudHNbMV0/YXJndW1lbnRzWzFdOnt9O2lmKCFVYnQodCkpdGhyb3cgbmV3IFR5cGVFcnJvcigiaW5wdXQgbXVzdCBiZSBhbiBhcnJheSIpO2lmKDA9PT10Lmxlbmd0aCl0aHJvdyBuZXcgVHlwZUVycm9yKCJpbnB1dCBtdXN0IG5vdCBiZSBlbXB0eSIpO3ZhciBlPW4uZnJvbUluZGV4LGE9dm9pZCAwPT09ZT8wOmUsbz1uLnRvSW5kZXgscj12b2lkIDA9PT1vP3QubGVuZ3RoOm87aWYoYTwwfHxhPj10Lmxlbmd0aHx8IU51bWJlci5pc0ludGVnZXIoYSkpdGhyb3cgbmV3IEVycm9yKCJmcm9tSW5kZXggbXVzdCBiZSBhIHBvc2l0aXZlIGludGVnZXIgc21hbGxlciB0aGFuIGxlbmd0aCIpO2lmKHI8PWF8fHI+dC5sZW5ndGh8fCFOdW1iZXIuaXNJbnRlZ2VyKHIpKXRocm93IG5ldyBFcnJvcigidG9JbmRleCBtdXN0IGJlIGFuIGludGVnZXIgZ3JlYXRlciB0aGFuIGZyb21JbmRleCBhbmQgYXQgbW9zdCBlcXVhbCB0byBsZW5ndGgiKTtmb3IodmFyIGk9dFthXSxjPWErMTtjPHI7YysrKXRbY108aSYmKGk9dFtjXSk7cmV0dXJuIGl9ZnVuY3Rpb24gWWJ0KHQpe3ZhciBuLGU9YXJndW1lbnRzLmxlbmd0aD4xJiZ2b2lkIDAhPT1hcmd1bWVudHNbMV0/YXJndW1lbnRzWzFdOnt9O2lmKCFVYnQodCkpdGhyb3cgbmV3IFR5cGVFcnJvcigiaW5wdXQgbXVzdCBiZSBhbiBhcnJheSIpO2lmKDA9PT10Lmxlbmd0aCl0aHJvdyBuZXcgVHlwZUVycm9yKCJpbnB1dCBtdXN0IG5vdCBiZSBlbXB0eSIpO2lmKHZvaWQgMCE9PWUub3V0cHV0KXtpZighVWJ0KGUub3V0cHV0KSl0aHJvdyBuZXcgVHlwZUVycm9yKCJvdXRwdXQgb3B0aW9uIG11c3QgYmUgYW4gYXJyYXkgaWYgc3BlY2lmaWVkIik7bj1lLm91dHB1dH1lbHNlIG49bmV3IEFycmF5KHQubGVuZ3RoKTt2YXIgYT1HYnQodCksbz1XYnQodCk7aWYoYT09PW8pdGhyb3cgbmV3IFJhbmdlRXJyb3IoIm1pbmltdW0gYW5kIG1heGltdW0gaW5wdXQgdmFsdWVzIGFyZSBlcXVhbC4gQ2Fubm90IHJlc2NhbGUgYSBjb25zdGFudCBhcnJheSIpO3ZhciByPWUubWluLGk9dm9pZCAwPT09cj9lLmF1dG9NaW5NYXg/YTowOnIsYz1lLm1heCxzPXZvaWQgMD09PWM/ZS5hdXRvTWluTWF4P286MTpjO2lmKGk+PXMpdGhyb3cgbmV3IFJhbmdlRXJyb3IoIm1pbiBvcHRpb24gbXVzdCBiZSBzbWFsbGVyIHRoYW4gbWF4IG9wdGlvbiIpO2Zvcih2YXIgbD0ocy1pKS8oby1hKSxtPTA7bTx0Lmxlbmd0aDttKyspblttXT0odFttXS1hKSpsK2k7cmV0dXJuIG59Y29uc3QgcWJ0PSIgIi5yZXBlYXQoMiksWmJ0PSIgIi5yZXBlYXQoNCk7ZnVuY3Rpb24gWGJ0KHQsbj17fSl7Y29uc3R7bWF4Um93czplPTE1LG1heENvbHVtbnM6YT0xMCxtYXhOdW1TaXplOm89OH09bjtyZXR1cm5gJHt0LmNvbnN0cnVjdG9yLm5hbWV9IHtcbiR7cWJ0fVtcbiR7WmJ0fSR7KGZ1bmN0aW9uIHIodCxuLGUsYSl7Y29uc3R7cm93czpvLGNvbHVtbnM6cn09dCxpPU1hdGgubWluKG8sbiksYz1NYXRoLm1pbihyLGUpLHM9W107Zm9yKGxldCBuPTA7bjxpO24rKyl7bGV0IGU9W107Zm9yKGxldCBvPTA7bzxjO28rKyllLnB1c2goSmJ0KHQuZ2V0KG4sbyksYSkpO3MucHVzaChgJHtlLmpvaW4oIiAiKX1gKX1yZXR1cm4gYyE9PXImJihzW3MubGVuZ3RoLTFdKz1gIC4uLiAke3ItZX0gbW9yZSBjb2x1bW5zYCksaSE9PW8mJnMucHVzaChgLi4uICR7by1ufSBtb3JlIHJvd3NgKSxzLmpvaW4oYFxuJHtaYnR9YCl9KSh0LGUsYSxvKX1cbiR7cWJ0fV1cbiR7cWJ0fXJvd3M6ICR7dC5yb3dzfVxuJHtxYnR9Y29sdW1uczogJHt0LmNvbHVtbnN9XG59YH1mdW5jdGlvbiBKYnQodCxuKXtjb25zdCBlPVN0cmluZyh0KTtpZihlLmxlbmd0aDw9bilyZXR1cm4gZS5wYWRFbmQobiwiICIpO2NvbnN0IGE9dC50b1ByZWNpc2lvbihuLTIpO2lmKGEubGVuZ3RoPD1uKXJldHVybiBhO2NvbnN0IG89dC50b0V4cG9uZW50aWFsKG4tMikscj1vLmluZGV4T2YoImUiKSxpPW8uc2xpY2Uocik7cmV0dXJuIG8uc2xpY2UoMCxuLWkubGVuZ3RoKStpfWZ1bmN0aW9uIFFidCh0LG4sZSl7aWYobjwwfHxuPihlP3Qucm93czp0LnJvd3MtMSkpdGhyb3cgbmV3IFJhbmdlRXJyb3IoIlJvdyBpbmRleCBvdXQgb2YgcmFuZ2UiKX1mdW5jdGlvbiBLYnQodCxuLGUpe2lmKG48MHx8bj4oZT90LmNvbHVtbnM6dC5jb2x1bW5zLTEpKXRocm93IG5ldyBSYW5nZUVycm9yKCJDb2x1bW4gaW5kZXggb3V0IG9mIHJhbmdlIil9ZnVuY3Rpb24gJGJ0KHQsbil7aWYobi50bzFEQXJyYXkmJihuPW4udG8xREFycmF5KCkpLG4ubGVuZ3RoIT09dC5jb2x1bW5zKXRocm93IG5ldyBSYW5nZUVycm9yKCJ2ZWN0b3Igc2l6ZSBtdXN0IGJlIHRoZSBzYW1lIGFzIHRoZSBudW1iZXIgb2YgY29sdW1ucyIpO3JldHVybiBufWZ1bmN0aW9uIHR1dCh0LG4pe2lmKG4udG8xREFycmF5JiYobj1uLnRvMURBcnJheSgpKSxuLmxlbmd0aCE9PXQucm93cyl0aHJvdyBuZXcgUmFuZ2VFcnJvcigidmVjdG9yIHNpemUgbXVzdCBiZSB0aGUgc2FtZSBhcyB0aGUgbnVtYmVyIG9mIHJvd3MiKTtyZXR1cm4gbn1mdW5jdGlvbiBudXQodCxuKXtpZigib2JqZWN0IiE9dHlwZW9mIG4pdGhyb3cgbmV3IFR5cGVFcnJvcigidW5leHBlY3RlZCB0eXBlIGZvciByb3cgaW5kaWNlcyIpO2lmKG4uc29tZSgobj0+bjwwfHxuPj10LnJvd3MpKSl0aHJvdyBuZXcgUmFuZ2VFcnJvcigicm93IGluZGljZXMgYXJlIG91dCBvZiByYW5nZSIpO3JldHVybiBBcnJheS5pc0FycmF5KG4pfHwobj1BcnJheS5mcm9tKG4pKSxufWZ1bmN0aW9uIGV1dCh0LG4pe2lmKCJvYmplY3QiIT10eXBlb2Ygbil0aHJvdyBuZXcgVHlwZUVycm9yKCJ1bmV4cGVjdGVkIHR5cGUgZm9yIGNvbHVtbiBpbmRpY2VzIik7aWYobi5zb21lKChuPT5uPDB8fG4+PXQuY29sdW1ucykpKXRocm93IG5ldyBSYW5nZUVycm9yKCJjb2x1bW4gaW5kaWNlcyBhcmUgb3V0IG9mIHJhbmdlIik7cmV0dXJuIEFycmF5LmlzQXJyYXkobil8fChuPUFycmF5LmZyb20obikpLG59ZnVuY3Rpb24gYXV0KHQsbixlLGEsbyl7aWYoNSE9PWFyZ3VtZW50cy5sZW5ndGgpdGhyb3cgbmV3IFJhbmdlRXJyb3IoImV4cGVjdGVkIDQgYXJndW1lbnRzIik7aWYocnV0KCJzdGFydFJvdyIsbikscnV0KCJlbmRSb3ciLGUpLHJ1dCgic3RhcnRDb2x1bW4iLGEpLHJ1dCgiZW5kQ29sdW1uIixvKSxuPmV8fGE+b3x8bjwwfHxuPj10LnJvd3N8fGU8MHx8ZT49dC5yb3dzfHxhPDB8fGE+PXQuY29sdW1uc3x8bzwwfHxvPj10LmNvbHVtbnMpdGhyb3cgbmV3IFJhbmdlRXJyb3IoIlN1Ym1hdHJpeCBpbmRpY2VzIGFyZSBvdXQgb2YgcmFuZ2UiKX1mdW5jdGlvbiBvdXQodCxuPTApe2xldCBlPVtdO2ZvcihsZXQgYT0wO2E8dDthKyspZS5wdXNoKG4pO3JldHVybiBlfWZ1bmN0aW9uIHJ1dCh0LG4pe2lmKCJudW1iZXIiIT10eXBlb2Ygbil0aHJvdyBuZXcgVHlwZUVycm9yKGAke3R9IG11c3QgYmUgYSBudW1iZXJgKX1mdW5jdGlvbiBpdXQodCl7aWYodC5pc0VtcHR5KCkpdGhyb3cgbmV3IEVycm9yKCJFbXB0eSBtYXRyaXggaGFzIG5vIGVsZW1lbnRzIHRvIGluZGV4Iil9Y2xhc3MgY3V0e3N0YXRpYyBmcm9tMURBcnJheSh0LG4sZSl7aWYodCpuIT09ZS5sZW5ndGgpdGhyb3cgbmV3IFJhbmdlRXJyb3IoImRhdGEgbGVuZ3RoIGRvZXMgbm90IG1hdGNoIGdpdmVuIGRpbWVuc2lvbnMiKTtsZXQgYT1uZXcgbXV0KHQsbik7Zm9yKGxldCBvPTA7bzx0O28rKylmb3IobGV0IHQ9MDt0PG47dCsrKWEuc2V0KG8sdCxlW28qbit0XSk7cmV0dXJuIGF9c3RhdGljIHJvd1ZlY3Rvcih0KXtsZXQgbj1uZXcgbXV0KDEsdC5sZW5ndGgpO2ZvcihsZXQgZT0wO2U8dC5sZW5ndGg7ZSsrKW4uc2V0KDAsZSx0W2VdKTtyZXR1cm4gbn1zdGF0aWMgY29sdW1uVmVjdG9yKHQpe2xldCBuPW5ldyBtdXQodC5sZW5ndGgsMSk7Zm9yKGxldCBlPTA7ZTx0Lmxlbmd0aDtlKyspbi5zZXQoZSwwLHRbZV0pO3JldHVybiBufXN0YXRpYyB6ZXJvcyh0LG4pe3JldHVybiBuZXcgbXV0KHQsbil9c3RhdGljIG9uZXModCxuKXtyZXR1cm4gbmV3IG11dCh0LG4pLmZpbGwoMSl9c3RhdGljIHJhbmQodCxuLGU9e30pe2lmKCJvYmplY3QiIT10eXBlb2YgZSl0aHJvdyBuZXcgVHlwZUVycm9yKCJvcHRpb25zIG11c3QgYmUgYW4gb2JqZWN0Iik7Y29uc3R7cmFuZG9tOmE9TWF0aC5yYW5kb219PWU7bGV0IG89bmV3IG11dCh0LG4pO2ZvcihsZXQgZT0wO2U8dDtlKyspZm9yKGxldCB0PTA7dDxuO3QrKylvLnNldChlLHQsYSgpKTtyZXR1cm4gb31zdGF0aWMgcmFuZEludCh0LG4sZT17fSl7aWYoIm9iamVjdCIhPXR5cGVvZiBlKXRocm93IG5ldyBUeXBlRXJyb3IoIm9wdGlvbnMgbXVzdCBiZSBhbiBvYmplY3QiKTtjb25zdHttaW46YT0wLG1heDpvPTFlMyxyYW5kb206cj1NYXRoLnJhbmRvbX09ZTtpZighTnVtYmVyLmlzSW50ZWdlcihhKSl0aHJvdyBuZXcgVHlwZUVycm9yKCJtaW4gbXVzdCBiZSBhbiBpbnRlZ2VyIik7aWYoIU51bWJlci5pc0ludGVnZXIobykpdGhyb3cgbmV3IFR5cGVFcnJvcigibWF4IG11c3QgYmUgYW4gaW50ZWdlciIpO2lmKGE+PW8pdGhyb3cgbmV3IFJhbmdlRXJyb3IoIm1pbiBtdXN0IGJlIHNtYWxsZXIgdGhhbiBtYXgiKTtsZXQgaT1vLWEsYz1uZXcgbXV0KHQsbik7Zm9yKGxldCBlPTA7ZTx0O2UrKylmb3IobGV0IHQ9MDt0PG47dCsrKXtsZXQgbj1hK01hdGgucm91bmQocigpKmkpO2Muc2V0KGUsdCxuKX1yZXR1cm4gY31zdGF0aWMgZXllKHQsbixlKXt2b2lkIDA9PT1uJiYobj10KSx2b2lkIDA9PT1lJiYoZT0xKTtsZXQgYT1NYXRoLm1pbih0LG4pLG89dGhpcy56ZXJvcyh0LG4pO2ZvcihsZXQgdD0wO3Q8YTt0Kyspby5zZXQodCx0LGUpO3JldHVybiBvfXN0YXRpYyBkaWFnKHQsbixlKXtsZXQgYT10Lmxlbmd0aDt2b2lkIDA9PT1uJiYobj1hKSx2b2lkIDA9PT1lJiYoZT1uKTtsZXQgbz1NYXRoLm1pbihhLG4sZSkscj10aGlzLnplcm9zKG4sZSk7Zm9yKGxldCBuPTA7bjxvO24rKylyLnNldChuLG4sdFtuXSk7cmV0dXJuIHJ9c3RhdGljIG1pbih0LG4pe3Q9dGhpcy5jaGVja01hdHJpeCh0KSxuPXRoaXMuY2hlY2tNYXRyaXgobik7bGV0IGU9dC5yb3dzLGE9dC5jb2x1bW5zLG89bmV3IG11dChlLGEpO2ZvcihsZXQgcj0wO3I8ZTtyKyspZm9yKGxldCBlPTA7ZTxhO2UrKylvLnNldChyLGUsTWF0aC5taW4odC5nZXQocixlKSxuLmdldChyLGUpKSk7cmV0dXJuIG99c3RhdGljIG1heCh0LG4pe3Q9dGhpcy5jaGVja01hdHJpeCh0KSxuPXRoaXMuY2hlY2tNYXRyaXgobik7bGV0IGU9dC5yb3dzLGE9dC5jb2x1bW5zLG89bmV3IHRoaXMoZSxhKTtmb3IobGV0IHI9MDtyPGU7cisrKWZvcihsZXQgZT0wO2U8YTtlKyspby5zZXQocixlLE1hdGgubWF4KHQuZ2V0KHIsZSksbi5nZXQocixlKSkpO3JldHVybiBvfXN0YXRpYyBjaGVja01hdHJpeCh0KXtyZXR1cm4gY3V0LmlzTWF0cml4KHQpP3Q6bmV3IG11dCh0KX1zdGF0aWMgaXNNYXRyaXgodCl7cmV0dXJuIG51bGwhPXQmJiJNYXRyaXgiPT09dC5rbGFzc31nZXQgc2l6ZSgpe3JldHVybiB0aGlzLnJvd3MqdGhpcy5jb2x1bW5zfWFwcGx5KHQpe2lmKCJmdW5jdGlvbiIhPXR5cGVvZiB0KXRocm93IG5ldyBUeXBlRXJyb3IoImNhbGxiYWNrIG11c3QgYmUgYSBmdW5jdGlvbiIpO2ZvcihsZXQgbj0wO248dGhpcy5yb3dzO24rKylmb3IobGV0IGU9MDtlPHRoaXMuY29sdW1ucztlKyspdC5jYWxsKHRoaXMsbixlKTtyZXR1cm4gdGhpc310bzFEQXJyYXkoKXtsZXQgdD1bXTtmb3IobGV0IG49MDtuPHRoaXMucm93cztuKyspZm9yKGxldCBlPTA7ZTx0aGlzLmNvbHVtbnM7ZSsrKXQucHVzaCh0aGlzLmdldChuLGUpKTtyZXR1cm4gdH10bzJEQXJyYXkoKXtsZXQgdD1bXTtmb3IobGV0IG49MDtuPHRoaXMucm93cztuKyspe3QucHVzaChbXSk7Zm9yKGxldCBlPTA7ZTx0aGlzLmNvbHVtbnM7ZSsrKXRbbl0ucHVzaCh0aGlzLmdldChuLGUpKX1yZXR1cm4gdH10b0pTT04oKXtyZXR1cm4gdGhpcy50bzJEQXJyYXkoKX1pc1Jvd1ZlY3Rvcigpe3JldHVybiAxPT09dGhpcy5yb3dzfWlzQ29sdW1uVmVjdG9yKCl7cmV0dXJuIDE9PT10aGlzLmNvbHVtbnN9aXNWZWN0b3IoKXtyZXR1cm4gMT09PXRoaXMucm93c3x8MT09PXRoaXMuY29sdW1uc31pc1NxdWFyZSgpe3JldHVybiB0aGlzLnJvd3M9PT10aGlzLmNvbHVtbnN9aXNFbXB0eSgpe3JldHVybiAwPT09dGhpcy5yb3dzfHwwPT09dGhpcy5jb2x1bW5zfWlzU3ltbWV0cmljKCl7aWYodGhpcy5pc1NxdWFyZSgpKXtmb3IobGV0IHQ9MDt0PHRoaXMucm93czt0KyspZm9yKGxldCBuPTA7bjw9dDtuKyspaWYodGhpcy5nZXQodCxuKSE9PXRoaXMuZ2V0KG4sdCkpcmV0dXJuITE7cmV0dXJuITB9cmV0dXJuITF9aXNFY2hlbG9uRm9ybSgpe2xldCB0PTAsbj0wLGU9LTEsYT0hMCxvPSExO2Zvcig7dDx0aGlzLnJvd3MmJmE7KXtmb3Iobj0wLG89ITE7bjx0aGlzLmNvbHVtbnMmJiExPT09bzspMD09PXRoaXMuZ2V0KHQsbik/bisrOjE9PT10aGlzLmdldCh0LG4pJiZuPmU/KG89ITAsZT1uKTooYT0hMSxvPSEwKTt0Kyt9cmV0dXJuIGF9aXNSZWR1Y2VkRWNoZWxvbkZvcm0oKXtsZXQgdD0wLG49MCxlPS0xLGE9ITAsbz0hMTtmb3IoO3Q8dGhpcy5yb3dzJiZhOyl7Zm9yKG49MCxvPSExO248dGhpcy5jb2x1bW5zJiYhMT09PW87KTA9PT10aGlzLmdldCh0LG4pP24rKzoxPT09dGhpcy5nZXQodCxuKSYmbj5lPyhvPSEwLGU9bik6KGE9ITEsbz0hMCk7Zm9yKGxldCBlPW4rMTtlPHRoaXMucm93cztlKyspMCE9PXRoaXMuZ2V0KHQsZSkmJihhPSExKTt0Kyt9cmV0dXJuIGF9ZWNoZWxvbkZvcm0oKXtsZXQgdD10aGlzLmNsb25lKCksbj0wLGU9MDtmb3IoO248dC5yb3dzJiZlPHQuY29sdW1uczspe2xldCBhPW47Zm9yKGxldCBvPW47bzx0LnJvd3M7bysrKXQuZ2V0KG8sZSk+dC5nZXQoYSxlKSYmKGE9byk7aWYoMD09PXQuZ2V0KGEsZSkpZSsrO2Vsc2V7dC5zd2FwUm93cyhuLGEpO2xldCBvPXQuZ2V0KG4sZSk7Zm9yKGxldCBhPWU7YTx0LmNvbHVtbnM7YSsrKXQuc2V0KG4sYSx0LmdldChuLGEpL28pO2ZvcihsZXQgYT1uKzE7YTx0LnJvd3M7YSsrKXtsZXQgbz10LmdldChhLGUpL3QuZ2V0KG4sZSk7dC5zZXQoYSxlLDApO2ZvcihsZXQgcj1lKzE7cjx0LmNvbHVtbnM7cisrKXQuc2V0KGEscix0LmdldChhLHIpLXQuZ2V0KG4scikqbyl9bisrLGUrK319cmV0dXJuIHR9cmVkdWNlZEVjaGVsb25Gb3JtKCl7bGV0IHQ9dGhpcy5lY2hlbG9uRm9ybSgpLG49dC5jb2x1bW5zLGU9dC5yb3dzLGE9ZS0xO2Zvcig7YT49MDspaWYoMD09PXQubWF4Um93KGEpKWEtLTtlbHNle2xldCBvPTAscj0hMTtmb3IoO288ZSYmITE9PT1yOykxPT09dC5nZXQoYSxvKT9yPSEwOm8rKztmb3IobGV0IGU9MDtlPGE7ZSsrKXtsZXQgcj10LmdldChlLG8pO2ZvcihsZXQgaT1vO2k8bjtpKyspe2xldCBuPXQuZ2V0KGUsaSktcip0LmdldChhLGkpO3Quc2V0KGUsaSxuKX19YS0tfXJldHVybiB0fXNldCgpe3Rocm93IG5ldyBFcnJvcigic2V0IG1ldGhvZCBpcyB1bmltcGxlbWVudGVkIil9Z2V0KCl7dGhyb3cgbmV3IEVycm9yKCJnZXQgbWV0aG9kIGlzIHVuaW1wbGVtZW50ZWQiKX1yZXBlYXQodD17fSl7aWYoIm9iamVjdCIhPXR5cGVvZiB0KXRocm93IG5ldyBUeXBlRXJyb3IoIm9wdGlvbnMgbXVzdCBiZSBhbiBvYmplY3QiKTtjb25zdHtyb3dzOm49MSxjb2x1bW5zOmU9MX09dDtpZighTnVtYmVyLmlzSW50ZWdlcihuKXx8bjw9MCl0aHJvdyBuZXcgVHlwZUVycm9yKCJyb3dzIG11c3QgYmUgYSBwb3NpdGl2ZSBpbnRlZ2VyIik7aWYoIU51bWJlci5pc0ludGVnZXIoZSl8fGU8PTApdGhyb3cgbmV3IFR5cGVFcnJvcigiY29sdW1ucyBtdXN0IGJlIGEgcG9zaXRpdmUgaW50ZWdlciIpO2xldCBhPW5ldyBtdXQodGhpcy5yb3dzKm4sdGhpcy5jb2x1bW5zKmUpO2ZvcihsZXQgdD0wO3Q8bjt0KyspZm9yKGxldCBuPTA7bjxlO24rKylhLnNldFN1Yk1hdHJpeCh0aGlzLHRoaXMucm93cyp0LHRoaXMuY29sdW1ucypuKTtyZXR1cm4gYX1maWxsKHQpe2ZvcihsZXQgbj0wO248dGhpcy5yb3dzO24rKylmb3IobGV0IGU9MDtlPHRoaXMuY29sdW1ucztlKyspdGhpcy5zZXQobixlLHQpO3JldHVybiB0aGlzfW5lZygpe3JldHVybiB0aGlzLm11bFMoLTEpfWdldFJvdyh0KXtRYnQodGhpcyx0KTtsZXQgbj1bXTtmb3IobGV0IGU9MDtlPHRoaXMuY29sdW1ucztlKyspbi5wdXNoKHRoaXMuZ2V0KHQsZSkpO3JldHVybiBufWdldFJvd1ZlY3Rvcih0KXtyZXR1cm4gbXV0LnJvd1ZlY3Rvcih0aGlzLmdldFJvdyh0KSl9c2V0Um93KHQsbil7UWJ0KHRoaXMsdCksbj0kYnQodGhpcyxuKTtmb3IobGV0IGU9MDtlPHRoaXMuY29sdW1ucztlKyspdGhpcy5zZXQodCxlLG5bZV0pO3JldHVybiB0aGlzfXN3YXBSb3dzKHQsbil7UWJ0KHRoaXMsdCksUWJ0KHRoaXMsbik7Zm9yKGxldCBlPTA7ZTx0aGlzLmNvbHVtbnM7ZSsrKXtsZXQgYT10aGlzLmdldCh0LGUpO3RoaXMuc2V0KHQsZSx0aGlzLmdldChuLGUpKSx0aGlzLnNldChuLGUsYSl9cmV0dXJuIHRoaXN9Z2V0Q29sdW1uKHQpe0tidCh0aGlzLHQpO2xldCBuPVtdO2ZvcihsZXQgZT0wO2U8dGhpcy5yb3dzO2UrKyluLnB1c2godGhpcy5nZXQoZSx0KSk7cmV0dXJuIG59Z2V0Q29sdW1uVmVjdG9yKHQpe3JldHVybiBtdXQuY29sdW1uVmVjdG9yKHRoaXMuZ2V0Q29sdW1uKHQpKX1zZXRDb2x1bW4odCxuKXtLYnQodGhpcyx0KSxuPXR1dCh0aGlzLG4pO2ZvcihsZXQgZT0wO2U8dGhpcy5yb3dzO2UrKyl0aGlzLnNldChlLHQsbltlXSk7cmV0dXJuIHRoaXN9c3dhcENvbHVtbnModCxuKXtLYnQodGhpcyx0KSxLYnQodGhpcyxuKTtmb3IobGV0IGU9MDtlPHRoaXMucm93cztlKyspe2xldCBhPXRoaXMuZ2V0KGUsdCk7dGhpcy5zZXQoZSx0LHRoaXMuZ2V0KGUsbikpLHRoaXMuc2V0KGUsbixhKX1yZXR1cm4gdGhpc31hZGRSb3dWZWN0b3IodCl7dD0kYnQodGhpcyx0KTtmb3IobGV0IG49MDtuPHRoaXMucm93cztuKyspZm9yKGxldCBlPTA7ZTx0aGlzLmNvbHVtbnM7ZSsrKXRoaXMuc2V0KG4sZSx0aGlzLmdldChuLGUpK3RbZV0pO3JldHVybiB0aGlzfXN1YlJvd1ZlY3Rvcih0KXt0PSRidCh0aGlzLHQpO2ZvcihsZXQgbj0wO248dGhpcy5yb3dzO24rKylmb3IobGV0IGU9MDtlPHRoaXMuY29sdW1ucztlKyspdGhpcy5zZXQobixlLHRoaXMuZ2V0KG4sZSktdFtlXSk7cmV0dXJuIHRoaXN9bXVsUm93VmVjdG9yKHQpe3Q9JGJ0KHRoaXMsdCk7Zm9yKGxldCBuPTA7bjx0aGlzLnJvd3M7bisrKWZvcihsZXQgZT0wO2U8dGhpcy5jb2x1bW5zO2UrKyl0aGlzLnNldChuLGUsdGhpcy5nZXQobixlKSp0W2VdKTtyZXR1cm4gdGhpc31kaXZSb3dWZWN0b3IodCl7dD0kYnQodGhpcyx0KTtmb3IobGV0IG49MDtuPHRoaXMucm93cztuKyspZm9yKGxldCBlPTA7ZTx0aGlzLmNvbHVtbnM7ZSsrKXRoaXMuc2V0KG4sZSx0aGlzLmdldChuLGUpL3RbZV0pO3JldHVybiB0aGlzfWFkZENvbHVtblZlY3Rvcih0KXt0PXR1dCh0aGlzLHQpO2ZvcihsZXQgbj0wO248dGhpcy5yb3dzO24rKylmb3IobGV0IGU9MDtlPHRoaXMuY29sdW1ucztlKyspdGhpcy5zZXQobixlLHRoaXMuZ2V0KG4sZSkrdFtuXSk7cmV0dXJuIHRoaXN9c3ViQ29sdW1uVmVjdG9yKHQpe3Q9dHV0KHRoaXMsdCk7Zm9yKGxldCBuPTA7bjx0aGlzLnJvd3M7bisrKWZvcihsZXQgZT0wO2U8dGhpcy5jb2x1bW5zO2UrKyl0aGlzLnNldChuLGUsdGhpcy5nZXQobixlKS10W25dKTtyZXR1cm4gdGhpc31tdWxDb2x1bW5WZWN0b3IodCl7dD10dXQodGhpcyx0KTtmb3IobGV0IG49MDtuPHRoaXMucm93cztuKyspZm9yKGxldCBlPTA7ZTx0aGlzLmNvbHVtbnM7ZSsrKXRoaXMuc2V0KG4sZSx0aGlzLmdldChuLGUpKnRbbl0pO3JldHVybiB0aGlzfWRpdkNvbHVtblZlY3Rvcih0KXt0PXR1dCh0aGlzLHQpO2ZvcihsZXQgbj0wO248dGhpcy5yb3dzO24rKylmb3IobGV0IGU9MDtlPHRoaXMuY29sdW1ucztlKyspdGhpcy5zZXQobixlLHRoaXMuZ2V0KG4sZSkvdFtuXSk7cmV0dXJuIHRoaXN9bXVsUm93KHQsbil7UWJ0KHRoaXMsdCk7Zm9yKGxldCBlPTA7ZTx0aGlzLmNvbHVtbnM7ZSsrKXRoaXMuc2V0KHQsZSx0aGlzLmdldCh0LGUpKm4pO3JldHVybiB0aGlzfW11bENvbHVtbih0LG4pe0tidCh0aGlzLHQpO2ZvcihsZXQgZT0wO2U8dGhpcy5yb3dzO2UrKyl0aGlzLnNldChlLHQsdGhpcy5nZXQoZSx0KSpuKTtyZXR1cm4gdGhpc31tYXgoKXtpZih0aGlzLmlzRW1wdHkoKSlyZXR1cm4gTmFOO2xldCB0PXRoaXMuZ2V0KDAsMCk7Zm9yKGxldCBuPTA7bjx0aGlzLnJvd3M7bisrKWZvcihsZXQgZT0wO2U8dGhpcy5jb2x1bW5zO2UrKyl0aGlzLmdldChuLGUpPnQmJih0PXRoaXMuZ2V0KG4sZSkpO3JldHVybiB0fW1heEluZGV4KCl7aXV0KHRoaXMpO2xldCB0PXRoaXMuZ2V0KDAsMCksbj1bMCwwXTtmb3IobGV0IGU9MDtlPHRoaXMucm93cztlKyspZm9yKGxldCBhPTA7YTx0aGlzLmNvbHVtbnM7YSsrKXRoaXMuZ2V0KGUsYSk+dCYmKHQ9dGhpcy5nZXQoZSxhKSxuWzBdPWUsblsxXT1hKTtyZXR1cm4gbn1taW4oKXtpZih0aGlzLmlzRW1wdHkoKSlyZXR1cm4gTmFOO2xldCB0PXRoaXMuZ2V0KDAsMCk7Zm9yKGxldCBuPTA7bjx0aGlzLnJvd3M7bisrKWZvcihsZXQgZT0wO2U8dGhpcy5jb2x1bW5zO2UrKyl0aGlzLmdldChuLGUpPHQmJih0PXRoaXMuZ2V0KG4sZSkpO3JldHVybiB0fW1pbkluZGV4KCl7aXV0KHRoaXMpO2xldCB0PXRoaXMuZ2V0KDAsMCksbj1bMCwwXTtmb3IobGV0IGU9MDtlPHRoaXMucm93cztlKyspZm9yKGxldCBhPTA7YTx0aGlzLmNvbHVtbnM7YSsrKXRoaXMuZ2V0KGUsYSk8dCYmKHQ9dGhpcy5nZXQoZSxhKSxuWzBdPWUsblsxXT1hKTtyZXR1cm4gbn1tYXhSb3codCl7aWYoUWJ0KHRoaXMsdCksdGhpcy5pc0VtcHR5KCkpcmV0dXJuIE5hTjtsZXQgbj10aGlzLmdldCh0LDApO2ZvcihsZXQgZT0xO2U8dGhpcy5jb2x1bW5zO2UrKyl0aGlzLmdldCh0LGUpPm4mJihuPXRoaXMuZ2V0KHQsZSkpO3JldHVybiBufW1heFJvd0luZGV4KHQpe1FidCh0aGlzLHQpLGl1dCh0aGlzKTtsZXQgbj10aGlzLmdldCh0LDApLGU9W3QsMF07Zm9yKGxldCBhPTE7YTx0aGlzLmNvbHVtbnM7YSsrKXRoaXMuZ2V0KHQsYSk+biYmKG49dGhpcy5nZXQodCxhKSxlWzFdPWEpO3JldHVybiBlfW1pblJvdyh0KXtpZihRYnQodGhpcyx0KSx0aGlzLmlzRW1wdHkoKSlyZXR1cm4gTmFOO2xldCBuPXRoaXMuZ2V0KHQsMCk7Zm9yKGxldCBlPTE7ZTx0aGlzLmNvbHVtbnM7ZSsrKXRoaXMuZ2V0KHQsZSk8biYmKG49dGhpcy5nZXQodCxlKSk7cmV0dXJuIG59bWluUm93SW5kZXgodCl7UWJ0KHRoaXMsdCksaXV0KHRoaXMpO2xldCBuPXRoaXMuZ2V0KHQsMCksZT1bdCwwXTtmb3IobGV0IGE9MTthPHRoaXMuY29sdW1uczthKyspdGhpcy5nZXQodCxhKTxuJiYobj10aGlzLmdldCh0LGEpLGVbMV09YSk7cmV0dXJuIGV9bWF4Q29sdW1uKHQpe2lmKEtidCh0aGlzLHQpLHRoaXMuaXNFbXB0eSgpKXJldHVybiBOYU47bGV0IG49dGhpcy5nZXQoMCx0KTtmb3IobGV0IGU9MTtlPHRoaXMucm93cztlKyspdGhpcy5nZXQoZSx0KT5uJiYobj10aGlzLmdldChlLHQpKTtyZXR1cm4gbn1tYXhDb2x1bW5JbmRleCh0KXtLYnQodGhpcyx0KSxpdXQodGhpcyk7bGV0IG49dGhpcy5nZXQoMCx0KSxlPVswLHRdO2ZvcihsZXQgYT0xO2E8dGhpcy5yb3dzO2ErKyl0aGlzLmdldChhLHQpPm4mJihuPXRoaXMuZ2V0KGEsdCksZVswXT1hKTtyZXR1cm4gZX1taW5Db2x1bW4odCl7aWYoS2J0KHRoaXMsdCksdGhpcy5pc0VtcHR5KCkpcmV0dXJuIE5hTjtsZXQgbj10aGlzLmdldCgwLHQpO2ZvcihsZXQgZT0xO2U8dGhpcy5yb3dzO2UrKyl0aGlzLmdldChlLHQpPG4mJihuPXRoaXMuZ2V0KGUsdCkpO3JldHVybiBufW1pbkNvbHVtbkluZGV4KHQpe0tidCh0aGlzLHQpLGl1dCh0aGlzKTtsZXQgbj10aGlzLmdldCgwLHQpLGU9WzAsdF07Zm9yKGxldCBhPTE7YTx0aGlzLnJvd3M7YSsrKXRoaXMuZ2V0KGEsdCk8biYmKG49dGhpcy5nZXQoYSx0KSxlWzBdPWEpO3JldHVybiBlfWRpYWcoKXtsZXQgdD1NYXRoLm1pbih0aGlzLnJvd3MsdGhpcy5jb2x1bW5zKSxuPVtdO2ZvcihsZXQgZT0wO2U8dDtlKyspbi5wdXNoKHRoaXMuZ2V0KGUsZSkpO3JldHVybiBufW5vcm0odD0iZnJvYmVuaXVzIil7bGV0IG49MDtpZigibWF4Ij09PXQpcmV0dXJuIHRoaXMubWF4KCk7aWYoImZyb2Jlbml1cyI9PT10KXtmb3IobGV0IHQ9MDt0PHRoaXMucm93czt0KyspZm9yKGxldCBlPTA7ZTx0aGlzLmNvbHVtbnM7ZSsrKW4rPXRoaXMuZ2V0KHQsZSkqdGhpcy5nZXQodCxlKTtyZXR1cm4gTWF0aC5zcXJ0KG4pfXRocm93IG5ldyBSYW5nZUVycm9yKGB1bmtub3duIG5vcm0gdHlwZTogJHt0fWApfWN1bXVsYXRpdmVTdW0oKXtsZXQgdD0wO2ZvcihsZXQgbj0wO248dGhpcy5yb3dzO24rKylmb3IobGV0IGU9MDtlPHRoaXMuY29sdW1ucztlKyspdCs9dGhpcy5nZXQobixlKSx0aGlzLnNldChuLGUsdCk7cmV0dXJuIHRoaXN9ZG90KHQpe2N1dC5pc01hdHJpeCh0KSYmKHQ9dC50bzFEQXJyYXkoKSk7bGV0IG49dGhpcy50bzFEQXJyYXkoKTtpZihuLmxlbmd0aCE9PXQubGVuZ3RoKXRocm93IG5ldyBSYW5nZUVycm9yKCJ2ZWN0b3JzIGRvIG5vdCBoYXZlIHRoZSBzYW1lIHNpemUiKTtsZXQgZT0wO2ZvcihsZXQgYT0wO2E8bi5sZW5ndGg7YSsrKWUrPW5bYV0qdFthXTtyZXR1cm4gZX1tbXVsKHQpe3Q9bXV0LmNoZWNrTWF0cml4KHQpO2xldCBuPXRoaXMucm93cyxlPXRoaXMuY29sdW1ucyxhPXQuY29sdW1ucyxvPW5ldyBtdXQobixhKSxyPW5ldyBGbG9hdDY0QXJyYXkoZSk7Zm9yKGxldCBpPTA7aTxhO2krKyl7Zm9yKGxldCBuPTA7bjxlO24rKylyW25dPXQuZ2V0KG4saSk7Zm9yKGxldCB0PTA7dDxuO3QrKyl7bGV0IG49MDtmb3IobGV0IGE9MDthPGU7YSsrKW4rPXRoaXMuZ2V0KHQsYSkqclthXTtvLnNldCh0LGksbil9fXJldHVybiBvfXN0cmFzc2VuMngyKHQpe3Q9bXV0LmNoZWNrTWF0cml4KHQpO2xldCBuPW5ldyBtdXQoMiwyKTtjb25zdCBlPXRoaXMuZ2V0KDAsMCksYT10LmdldCgwLDApLG89dGhpcy5nZXQoMCwxKSxyPXQuZ2V0KDAsMSksaT10aGlzLmdldCgxLDApLGM9dC5nZXQoMSwwKSxzPXRoaXMuZ2V0KDEsMSksbD10LmdldCgxLDEpLG09KGUrcykqKGErbCksZD0oaStzKSphLGc9ZSooci1sKSxwPXMqKGMtYSksYj0oZStvKSpsLHU9ZytiLGY9ZCtwLGg9bS1kK2crKGktZSkqKGErcik7cmV0dXJuIG4uc2V0KDAsMCxtK3AtYisoby1zKSooYytsKSksbi5zZXQoMCwxLHUpLG4uc2V0KDEsMCxmKSxuLnNldCgxLDEsaCksbn1zdHJhc3NlbjN4Myh0KXt0PW11dC5jaGVja01hdHJpeCh0KTtsZXQgbj1uZXcgbXV0KDMsMyk7Y29uc3QgZT10aGlzLmdldCgwLDApLGE9dGhpcy5nZXQoMCwxKSxvPXRoaXMuZ2V0KDAsMikscj10aGlzLmdldCgxLDApLGk9dGhpcy5nZXQoMSwxKSxjPXRoaXMuZ2V0KDEsMikscz10aGlzLmdldCgyLDApLGw9dGhpcy5nZXQoMiwxKSxtPXRoaXMuZ2V0KDIsMiksZD10LmdldCgwLDApLGc9dC5nZXQoMCwxKSxwPXQuZ2V0KDAsMiksYj10LmdldCgxLDApLHU9dC5nZXQoMSwxKSxmPXQuZ2V0KDEsMiksaD10LmdldCgyLDApLF89dC5nZXQoMiwxKSxDPXQuZ2V0KDIsMiksTT0oZS1yKSooLWcrdSksTz0oLWUrcitpKSooZC1nK3UpLFA9KHIraSkqKC1kK2cpLHg9ZSpkLHk9KC1lK3MrbCkqKGQtcCtmKSxrPSgtZStzKSoocC1mKSx2PShzK2wpKigtZCtwKSx3PSgtbytsK20pKih1K2gtXyksUz0oby1tKSoodS1fKSxFPW8qaCxBPShsK20pKigtaCtfKSx6PSgtbytpK2MpKihmK2gtQyksUj0oby1jKSooZi1DKSxUPShpK2MpKigtaCtDKSxEPShlK2Erby1yLWktbC1tKSp1K08rUCt4K3crRStBLEk9eCt5K3YrKGUrYStvLWktYy1zLWwpKmYrRSt6K1QsTj1NK2kqKC1kK2crYi11LWYtaCtDKStPK3grRSt6K1IsRj1NK08rUCt4K2MqXyxMPUUreitSK1QrcipwLEg9eCt5K2srbCooLWQrcCtiLXUtZi1oK18pK3crUytFLEI9dytTK0UrQStzKmcsVj14K3krayt2K20qQztyZXR1cm4gbi5zZXQoMCwwLHgrRSthKmIpLG4uc2V0KDAsMSxEKSxuLnNldCgwLDIsSSksbi5zZXQoMSwwLE4pLG4uc2V0KDEsMSxGKSxuLnNldCgxLDIsTCksbi5zZXQoMiwwLEgpLG4uc2V0KDIsMSxCKSxuLnNldCgyLDIsViksbn1tbXVsU3RyYXNzZW4odCl7dD1tdXQuY2hlY2tNYXRyaXgodCk7bGV0IG49dGhpcy5jbG9uZSgpLGU9bi5yb3dzLGE9bi5jb2x1bW5zLG89dC5yb3dzLHI9dC5jb2x1bW5zO2Z1bmN0aW9uIGkodCxuLGUpe2lmKHQucm93cz09PW4mJnQuY29sdW1ucz09PWUpcmV0dXJuIHQ7e2xldCBhPWN1dC56ZXJvcyhuLGUpO3JldHVybiBhPWEuc2V0U3ViTWF0cml4KHQsMCwwKSxhfX1hIT09byYmY29uc29sZS53YXJuKGBNdWx0aXBseWluZyAke2V9IHggJHthfSBhbmQgJHtvfSB4ICR7cn0gbWF0cml4OiBkaW1lbnNpb25zIGRvIG5vdCBtYXRjaC5gKTtsZXQgYz1NYXRoLm1heChlLG8pLHM9TWF0aC5tYXgoYSxyKTtyZXR1cm4gbj1pKG4sYyxzKSwoZnVuY3Rpb24gdChuLGUsYSxvKXtpZihhPD01MTJ8fG88PTUxMilyZXR1cm4gbi5tbXVsKGUpO2ElMj09MSYmbyUyPT0xPyhuPWkobixhKzEsbysxKSxlPWkoZSxhKzEsbysxKSk6YSUyPT0xPyhuPWkobixhKzEsbyksZT1pKGUsYSsxLG8pKTpvJTI9PTEmJihuPWkobixhLG8rMSksZT1pKGUsYSxvKzEpKTtsZXQgcj1wYXJzZUludChuLnJvd3MvMiwxMCksYz1wYXJzZUludChuLmNvbHVtbnMvMiwxMCkscz1uLnN1Yk1hdHJpeCgwLHItMSwwLGMtMSksbD1lLnN1Yk1hdHJpeCgwLHItMSwwLGMtMSksbT1uLnN1Yk1hdHJpeCgwLHItMSxjLG4uY29sdW1ucy0xKSxkPWUuc3ViTWF0cml4KDAsci0xLGMsZS5jb2x1bW5zLTEpLGc9bi5zdWJNYXRyaXgocixuLnJvd3MtMSwwLGMtMSkscD1lLnN1Yk1hdHJpeChyLGUucm93cy0xLDAsYy0xKSxiPW4uc3ViTWF0cml4KHIsbi5yb3dzLTEsYyxuLmNvbHVtbnMtMSksdT1lLnN1Yk1hdHJpeChyLGUucm93cy0xLGMsZS5jb2x1bW5zLTEpLGY9dChjdXQuYWRkKHMsYiksY3V0LmFkZChsLHUpLHIsYyksaD10KGN1dC5hZGQoZyxiKSxsLHIsYyksXz10KHMsY3V0LnN1YihkLHUpLHIsYyksQz10KGIsY3V0LnN1YihwLGwpLHIsYyksTT10KGN1dC5hZGQocyxtKSx1LHIsYyksTz10KGN1dC5zdWIoZyxzKSxjdXQuYWRkKGwsZCkscixjKSxQPXQoY3V0LnN1YihtLGIpLGN1dC5hZGQocCx1KSxyLGMpLHg9Y3V0LmFkZChmLEMpO3guc3ViKE0pLHguYWRkKFApO2xldCB5PWN1dC5hZGQoXyxNKSxrPWN1dC5hZGQoaCxDKSx2PWN1dC5zdWIoZixoKTt2LmFkZChfKSx2LmFkZChPKTtsZXQgdz1jdXQuemVyb3MoMip4LnJvd3MsMip4LmNvbHVtbnMpO3JldHVybiB3PXcuc2V0U3ViTWF0cml4KHgsMCwwKSx3PXcuc2V0U3ViTWF0cml4KHkseC5yb3dzLDApLHc9dy5zZXRTdWJNYXRyaXgoaywwLHguY29sdW1ucyksdz13LnNldFN1Yk1hdHJpeCh2LHgucm93cyx4LmNvbHVtbnMpLHcuc3ViTWF0cml4KDAsYS0xLDAsby0xKX0pKG4sdD1pKHQsYyxzKSxjLHMpfXNjYWxlUm93cyh0PXt9KXtpZigib2JqZWN0IiE9dHlwZW9mIHQpdGhyb3cgbmV3IFR5cGVFcnJvcigib3B0aW9ucyBtdXN0IGJlIGFuIG9iamVjdCIpO2NvbnN0e21pbjpuPTAsbWF4OmU9MX09dDtpZighTnVtYmVyLmlzRmluaXRlKG4pKXRocm93IG5ldyBUeXBlRXJyb3IoIm1pbiBtdXN0IGJlIGEgbnVtYmVyIik7aWYoIU51bWJlci5pc0Zpbml0ZShlKSl0aHJvdyBuZXcgVHlwZUVycm9yKCJtYXggbXVzdCBiZSBhIG51bWJlciIpO2lmKG4+PWUpdGhyb3cgbmV3IFJhbmdlRXJyb3IoIm1pbiBtdXN0IGJlIHNtYWxsZXIgdGhhbiBtYXgiKTtsZXQgYT1uZXcgbXV0KHRoaXMucm93cyx0aGlzLmNvbHVtbnMpO2ZvcihsZXQgdD0wO3Q8dGhpcy5yb3dzO3QrKyl7Y29uc3Qgbz10aGlzLmdldFJvdyh0KTtvLmxlbmd0aD4wJiZZYnQobyx7bWluOm4sbWF4OmUsb3V0cHV0Om99KSxhLnNldFJvdyh0LG8pfXJldHVybiBhfXNjYWxlQ29sdW1ucyh0PXt9KXtpZigib2JqZWN0IiE9dHlwZW9mIHQpdGhyb3cgbmV3IFR5cGVFcnJvcigib3B0aW9ucyBtdXN0IGJlIGFuIG9iamVjdCIpO2NvbnN0e21pbjpuPTAsbWF4OmU9MX09dDtpZighTnVtYmVyLmlzRmluaXRlKG4pKXRocm93IG5ldyBUeXBlRXJyb3IoIm1pbiBtdXN0IGJlIGEgbnVtYmVyIik7aWYoIU51bWJlci5pc0Zpbml0ZShlKSl0aHJvdyBuZXcgVHlwZUVycm9yKCJtYXggbXVzdCBiZSBhIG51bWJlciIpO2lmKG4+PWUpdGhyb3cgbmV3IFJhbmdlRXJyb3IoIm1pbiBtdXN0IGJlIHNtYWxsZXIgdGhhbiBtYXgiKTtsZXQgYT1uZXcgbXV0KHRoaXMucm93cyx0aGlzLmNvbHVtbnMpO2ZvcihsZXQgdD0wO3Q8dGhpcy5jb2x1bW5zO3QrKyl7Y29uc3Qgbz10aGlzLmdldENvbHVtbih0KTtvLmxlbmd0aCYmWWJ0KG8se21pbjpuLG1heDplLG91dHB1dDpvfSksYS5zZXRDb2x1bW4odCxvKX1yZXR1cm4gYX1mbGlwUm93cygpe2NvbnN0IHQ9TWF0aC5jZWlsKHRoaXMuY29sdW1ucy8yKTtmb3IobGV0IG49MDtuPHRoaXMucm93cztuKyspZm9yKGxldCBlPTA7ZTx0O2UrKyl7bGV0IHQ9dGhpcy5nZXQobixlKSxhPXRoaXMuZ2V0KG4sdGhpcy5jb2x1bW5zLTEtZSk7dGhpcy5zZXQobixlLGEpLHRoaXMuc2V0KG4sdGhpcy5jb2x1bW5zLTEtZSx0KX1yZXR1cm4gdGhpc31mbGlwQ29sdW1ucygpe2NvbnN0IHQ9TWF0aC5jZWlsKHRoaXMucm93cy8yKTtmb3IobGV0IG49MDtuPHRoaXMuY29sdW1ucztuKyspZm9yKGxldCBlPTA7ZTx0O2UrKyl7bGV0IHQ9dGhpcy5nZXQoZSxuKSxhPXRoaXMuZ2V0KHRoaXMucm93cy0xLWUsbik7dGhpcy5zZXQoZSxuLGEpLHRoaXMuc2V0KHRoaXMucm93cy0xLWUsbix0KX1yZXR1cm4gdGhpc31rcm9uZWNrZXJQcm9kdWN0KHQpe3Q9bXV0LmNoZWNrTWF0cml4KHQpO2xldCBuPXRoaXMucm93cyxlPXRoaXMuY29sdW1ucyxhPXQucm93cyxvPXQuY29sdW1ucyxyPW5ldyBtdXQobiphLGUqbyk7Zm9yKGxldCBpPTA7aTxuO2krKylmb3IobGV0IG49MDtuPGU7bisrKWZvcihsZXQgZT0wO2U8YTtlKyspZm9yKGxldCBjPTA7YzxvO2MrKylyLnNldChhKmkrZSxvKm4rYyx0aGlzLmdldChpLG4pKnQuZ2V0KGUsYykpO3JldHVybiByfWtyb25lY2tlclN1bSh0KXtpZih0PW11dC5jaGVja01hdHJpeCh0KSwhdGhpcy5pc1NxdWFyZSgpfHwhdC5pc1NxdWFyZSgpKXRocm93IG5ldyBFcnJvcigiS3JvbmVja2VyIFN1bSBuZWVkcyB0d28gU3F1YXJlIE1hdHJpY2VzIik7bGV0IG49dGhpcy5yb3dzLGU9dC5yb3dzLGE9dGhpcy5rcm9uZWNrZXJQcm9kdWN0KG11dC5leWUoZSxlKSksbz1tdXQuZXllKG4sbikua3JvbmVja2VyUHJvZHVjdCh0KTtyZXR1cm4gYS5hZGQobyl9dHJhbnNwb3NlKCl7bGV0IHQ9bmV3IG11dCh0aGlzLmNvbHVtbnMsdGhpcy5yb3dzKTtmb3IobGV0IG49MDtuPHRoaXMucm93cztuKyspZm9yKGxldCBlPTA7ZTx0aGlzLmNvbHVtbnM7ZSsrKXQuc2V0KGUsbix0aGlzLmdldChuLGUpKTtyZXR1cm4gdH1zb3J0Um93cyh0PXN1dCl7Zm9yKGxldCBuPTA7bjx0aGlzLnJvd3M7bisrKXRoaXMuc2V0Um93KG4sdGhpcy5nZXRSb3cobikuc29ydCh0KSk7cmV0dXJuIHRoaXN9c29ydENvbHVtbnModD1zdXQpe2ZvcihsZXQgbj0wO248dGhpcy5jb2x1bW5zO24rKyl0aGlzLnNldENvbHVtbihuLHRoaXMuZ2V0Q29sdW1uKG4pLnNvcnQodCkpO3JldHVybiB0aGlzfXN1Yk1hdHJpeCh0LG4sZSxhKXthdXQodGhpcyx0LG4sZSxhKTtsZXQgbz1uZXcgbXV0KG4tdCsxLGEtZSsxKTtmb3IobGV0IHI9dDtyPD1uO3IrKylmb3IobGV0IG49ZTtuPD1hO24rKylvLnNldChyLXQsbi1lLHRoaXMuZ2V0KHIsbikpO3JldHVybiBvfXN1Yk1hdHJpeFJvdyh0LG4sZSl7aWYodm9pZCAwPT09biYmKG49MCksdm9pZCAwPT09ZSYmKGU9dGhpcy5jb2x1bW5zLTEpLG4+ZXx8bjwwfHxuPj10aGlzLmNvbHVtbnN8fGU8MHx8ZT49dGhpcy5jb2x1bW5zKXRocm93IG5ldyBSYW5nZUVycm9yKCJBcmd1bWVudCBvdXQgb2YgcmFuZ2UiKTtsZXQgYT1uZXcgbXV0KHQubGVuZ3RoLGUtbisxKTtmb3IobGV0IG89MDtvPHQubGVuZ3RoO28rKylmb3IobGV0IHI9bjtyPD1lO3IrKyl7aWYodFtvXTwwfHx0W29dPj10aGlzLnJvd3MpdGhyb3cgbmV3IFJhbmdlRXJyb3IoYFJvdyBpbmRleCBvdXQgb2YgcmFuZ2U6ICR7dFtvXX1gKTthLnNldChvLHItbix0aGlzLmdldCh0W29dLHIpKX1yZXR1cm4gYX1zdWJNYXRyaXhDb2x1bW4odCxuLGUpe2lmKHZvaWQgMD09PW4mJihuPTApLHZvaWQgMD09PWUmJihlPXRoaXMucm93cy0xKSxuPmV8fG48MHx8bj49dGhpcy5yb3dzfHxlPDB8fGU+PXRoaXMucm93cyl0aHJvdyBuZXcgUmFuZ2VFcnJvcigiQXJndW1lbnQgb3V0IG9mIHJhbmdlIik7bGV0IGE9bmV3IG11dChlLW4rMSx0Lmxlbmd0aCk7Zm9yKGxldCBvPTA7bzx0Lmxlbmd0aDtvKyspZm9yKGxldCByPW47cjw9ZTtyKyspe2lmKHRbb108MHx8dFtvXT49dGhpcy5jb2x1bW5zKXRocm93IG5ldyBSYW5nZUVycm9yKGBDb2x1bW4gaW5kZXggb3V0IG9mIHJhbmdlOiAke3Rbb119YCk7YS5zZXQoci1uLG8sdGhpcy5nZXQocix0W29dKSl9cmV0dXJuIGF9c2V0U3ViTWF0cml4KHQsbixlKXtpZigodD1tdXQuY2hlY2tNYXRyaXgodCkpLmlzRW1wdHkoKSlyZXR1cm4gdGhpczthdXQodGhpcyxuLG4rdC5yb3dzLTEsZSxlK3QuY29sdW1ucy0xKTtmb3IobGV0IGE9MDthPHQucm93czthKyspZm9yKGxldCBvPTA7bzx0LmNvbHVtbnM7bysrKXRoaXMuc2V0KG4rYSxlK28sdC5nZXQoYSxvKSk7cmV0dXJuIHRoaXN9c2VsZWN0aW9uKHQsbil7bGV0IGU9KGZ1bmN0aW9uIGEodCxuLGUpe3JldHVybntyb3c6bnV0KHQsbiksY29sdW1uOmV1dCh0LGUpfX0pKHRoaXMsdCxuKSxvPW5ldyBtdXQodC5sZW5ndGgsbi5sZW5ndGgpO2ZvcihsZXQgdD0wO3Q8ZS5yb3cubGVuZ3RoO3QrKyl7bGV0IG49ZS5yb3dbdF07Zm9yKGxldCBhPTA7YTxlLmNvbHVtbi5sZW5ndGg7YSsrKW8uc2V0KHQsYSx0aGlzLmdldChuLGUuY29sdW1uW2FdKSl9cmV0dXJuIG99dHJhY2UoKXtsZXQgdD1NYXRoLm1pbih0aGlzLnJvd3MsdGhpcy5jb2x1bW5zKSxuPTA7Zm9yKGxldCBlPTA7ZTx0O2UrKyluKz10aGlzLmdldChlLGUpO3JldHVybiBufWNsb25lKCl7bGV0IHQ9bmV3IG11dCh0aGlzLnJvd3MsdGhpcy5jb2x1bW5zKTtmb3IobGV0IG49MDtuPHRoaXMucm93cztuKyspZm9yKGxldCBlPTA7ZTx0aGlzLmNvbHVtbnM7ZSsrKXQuc2V0KG4sZSx0aGlzLmdldChuLGUpKTtyZXR1cm4gdH1zdW0odCl7c3dpdGNoKHQpe2Nhc2Uicm93IjpyZXR1cm4oZnVuY3Rpb24gbih0KXtsZXQgbj1vdXQodC5yb3dzKTtmb3IobGV0IGU9MDtlPHQucm93czsrK2UpZm9yKGxldCBhPTA7YTx0LmNvbHVtbnM7KythKW5bZV0rPXQuZ2V0KGUsYSk7cmV0dXJuIG59KSh0aGlzKTtjYXNlImNvbHVtbiI6cmV0dXJuKGZ1bmN0aW9uIGUodCl7bGV0IG49b3V0KHQuY29sdW1ucyk7Zm9yKGxldCBlPTA7ZTx0LnJvd3M7KytlKWZvcihsZXQgYT0wO2E8dC5jb2x1bW5zOysrYSluW2FdKz10LmdldChlLGEpO3JldHVybiBufSkodGhpcyk7Y2FzZSB2b2lkIDA6cmV0dXJuKGZ1bmN0aW9uIGEodCl7bGV0IG49MDtmb3IobGV0IGU9MDtlPHQucm93cztlKyspZm9yKGxldCBhPTA7YTx0LmNvbHVtbnM7YSsrKW4rPXQuZ2V0KGUsYSk7cmV0dXJuIG59KSh0aGlzKTtkZWZhdWx0OnRocm93IG5ldyBFcnJvcihgaW52YWxpZCBvcHRpb246ICR7dH1gKX19cHJvZHVjdCh0KXtzd2l0Y2godCl7Y2FzZSJyb3ciOnJldHVybihmdW5jdGlvbiBuKHQpe2xldCBuPW91dCh0LnJvd3MsMSk7Zm9yKGxldCBlPTA7ZTx0LnJvd3M7KytlKWZvcihsZXQgYT0wO2E8dC5jb2x1bW5zOysrYSluW2VdKj10LmdldChlLGEpO3JldHVybiBufSkodGhpcyk7Y2FzZSJjb2x1bW4iOnJldHVybihmdW5jdGlvbiBlKHQpe2xldCBuPW91dCh0LmNvbHVtbnMsMSk7Zm9yKGxldCBlPTA7ZTx0LnJvd3M7KytlKWZvcihsZXQgYT0wO2E8dC5jb2x1bW5zOysrYSluW2FdKj10LmdldChlLGEpO3JldHVybiBufSkodGhpcyk7Y2FzZSB2b2lkIDA6cmV0dXJuKGZ1bmN0aW9uIGEodCl7bGV0IG49MTtmb3IobGV0IGU9MDtlPHQucm93cztlKyspZm9yKGxldCBhPTA7YTx0LmNvbHVtbnM7YSsrKW4qPXQuZ2V0KGUsYSk7cmV0dXJuIG59KSh0aGlzKTtkZWZhdWx0OnRocm93IG5ldyBFcnJvcihgaW52YWxpZCBvcHRpb246ICR7dH1gKX19bWVhbih0KXtjb25zdCBuPXRoaXMuc3VtKHQpO3N3aXRjaCh0KXtjYXNlInJvdyI6Zm9yKGxldCB0PTA7dDx0aGlzLnJvd3M7dCsrKW5bdF0vPXRoaXMuY29sdW1ucztyZXR1cm4gbjtjYXNlImNvbHVtbiI6Zm9yKGxldCB0PTA7dDx0aGlzLmNvbHVtbnM7dCsrKW5bdF0vPXRoaXMucm93cztyZXR1cm4gbjtjYXNlIHZvaWQgMDpyZXR1cm4gbi90aGlzLnNpemU7ZGVmYXVsdDp0aHJvdyBuZXcgRXJyb3IoYGludmFsaWQgb3B0aW9uOiAke3R9YCl9fXZhcmlhbmNlKHQsbj17fSl7aWYoIm9iamVjdCI9PXR5cGVvZiB0JiYobj10LHQ9dm9pZCAwKSwib2JqZWN0IiE9dHlwZW9mIG4pdGhyb3cgbmV3IFR5cGVFcnJvcigib3B0aW9ucyBtdXN0IGJlIGFuIG9iamVjdCIpO2NvbnN0e3VuYmlhc2VkOmU9ITAsbWVhbjphPXRoaXMubWVhbih0KX09bjtpZigiYm9vbGVhbiIhPXR5cGVvZiBlKXRocm93IG5ldyBUeXBlRXJyb3IoInVuYmlhc2VkIG11c3QgYmUgYSBib29sZWFuIik7c3dpdGNoKHQpe2Nhc2Uicm93IjppZighQXJyYXkuaXNBcnJheShhKSl0aHJvdyBuZXcgVHlwZUVycm9yKCJtZWFuIG11c3QgYmUgYW4gYXJyYXkiKTtyZXR1cm4oZnVuY3Rpb24gbyh0LG4sZSl7Y29uc3QgYT10LnJvd3Msbz10LmNvbHVtbnMscj1bXTtmb3IobGV0IGk9MDtpPGE7aSsrKXtsZXQgYT0wLGM9MCxzPTA7Zm9yKGxldCBuPTA7bjxvO24rKylzPXQuZ2V0KGksbiktZVtpXSxhKz1zLGMrPXMqcztyLnB1c2gobj8oYy1hKmEvbykvKG8tMSk6KGMtYSphL28pL28pfXJldHVybiByfSkodGhpcyxlLGEpO2Nhc2UiY29sdW1uIjppZighQXJyYXkuaXNBcnJheShhKSl0aHJvdyBuZXcgVHlwZUVycm9yKCJtZWFuIG11c3QgYmUgYW4gYXJyYXkiKTtyZXR1cm4oZnVuY3Rpb24gcih0LG4sZSl7Y29uc3QgYT10LnJvd3Msbz10LmNvbHVtbnMscj1bXTtmb3IobGV0IGk9MDtpPG87aSsrKXtsZXQgbz0wLGM9MCxzPTA7Zm9yKGxldCBuPTA7bjxhO24rKylzPXQuZ2V0KG4saSktZVtpXSxvKz1zLGMrPXMqcztyLnB1c2gobj8oYy1vKm8vYSkvKGEtMSk6KGMtbypvL2EpL2EpfXJldHVybiByfSkodGhpcyxlLGEpO2Nhc2Ugdm9pZCAwOmlmKCJudW1iZXIiIT10eXBlb2YgYSl0aHJvdyBuZXcgVHlwZUVycm9yKCJtZWFuIG11c3QgYmUgYSBudW1iZXIiKTtyZXR1cm4oZnVuY3Rpb24gaSh0LG4sZSl7Y29uc3QgYT10LnJvd3Msbz10LmNvbHVtbnMscj1hKm87bGV0IGk9MCxjPTAscz0wO2ZvcihsZXQgbj0wO248YTtuKyspZm9yKGxldCBhPTA7YTxvO2ErKylzPXQuZ2V0KG4sYSktZSxpKz1zLGMrPXMqcztyZXR1cm4gbj8oYy1pKmkvcikvKHItMSk6KGMtaSppL3IpL3J9KSh0aGlzLGUsYSk7ZGVmYXVsdDp0aHJvdyBuZXcgRXJyb3IoYGludmFsaWQgb3B0aW9uOiAke3R9YCl9fXN0YW5kYXJkRGV2aWF0aW9uKHQsbil7Im9iamVjdCI9PXR5cGVvZiB0JiYobj10LHQ9dm9pZCAwKTtjb25zdCBlPXRoaXMudmFyaWFuY2UodCxuKTtpZih2b2lkIDA9PT10KXJldHVybiBNYXRoLnNxcnQoZSk7Zm9yKGxldCB0PTA7dDxlLmxlbmd0aDt0KyspZVt0XT1NYXRoLnNxcnQoZVt0XSk7cmV0dXJuIGV9Y2VudGVyKHQsbj17fSl7aWYoIm9iamVjdCI9PXR5cGVvZiB0JiYobj10LHQ9dm9pZCAwKSwib2JqZWN0IiE9dHlwZW9mIG4pdGhyb3cgbmV3IFR5cGVFcnJvcigib3B0aW9ucyBtdXN0IGJlIGFuIG9iamVjdCIpO2NvbnN0e2NlbnRlcjplPXRoaXMubWVhbih0KX09bjtzd2l0Y2godCl7Y2FzZSJyb3ciOmlmKCFBcnJheS5pc0FycmF5KGUpKXRocm93IG5ldyBUeXBlRXJyb3IoImNlbnRlciBtdXN0IGJlIGFuIGFycmF5Iik7cmV0dXJuKGZ1bmN0aW9uIGEodCxuKXtmb3IobGV0IGU9MDtlPHQucm93cztlKyspZm9yKGxldCBhPTA7YTx0LmNvbHVtbnM7YSsrKXQuc2V0KGUsYSx0LmdldChlLGEpLW5bZV0pfSkodGhpcyxlKSx0aGlzO2Nhc2UiY29sdW1uIjppZighQXJyYXkuaXNBcnJheShlKSl0aHJvdyBuZXcgVHlwZUVycm9yKCJjZW50ZXIgbXVzdCBiZSBhbiBhcnJheSIpO3JldHVybihmdW5jdGlvbiBvKHQsbil7Zm9yKGxldCBlPTA7ZTx0LnJvd3M7ZSsrKWZvcihsZXQgYT0wO2E8dC5jb2x1bW5zO2ErKyl0LnNldChlLGEsdC5nZXQoZSxhKS1uW2FdKX0pKHRoaXMsZSksdGhpcztjYXNlIHZvaWQgMDppZigibnVtYmVyIiE9dHlwZW9mIGUpdGhyb3cgbmV3IFR5cGVFcnJvcigiY2VudGVyIG11c3QgYmUgYSBudW1iZXIiKTtyZXR1cm4oZnVuY3Rpb24gcih0LG4pe2ZvcihsZXQgZT0wO2U8dC5yb3dzO2UrKylmb3IobGV0IGE9MDthPHQuY29sdW1uczthKyspdC5zZXQoZSxhLHQuZ2V0KGUsYSktbil9KSh0aGlzLGUpLHRoaXM7ZGVmYXVsdDp0aHJvdyBuZXcgRXJyb3IoYGludmFsaWQgb3B0aW9uOiAke3R9YCl9fXNjYWxlKHQsbj17fSl7aWYoIm9iamVjdCI9PXR5cGVvZiB0JiYobj10LHQ9dm9pZCAwKSwib2JqZWN0IiE9dHlwZW9mIG4pdGhyb3cgbmV3IFR5cGVFcnJvcigib3B0aW9ucyBtdXN0IGJlIGFuIG9iamVjdCIpO2xldCBlPW4uc2NhbGU7c3dpdGNoKHQpe2Nhc2Uicm93IjppZih2b2lkIDA9PT1lKWU9KGZ1bmN0aW9uIGEodCl7Y29uc3Qgbj1bXTtmb3IobGV0IGU9MDtlPHQucm93cztlKyspe2xldCBhPTA7Zm9yKGxldCBuPTA7bjx0LmNvbHVtbnM7bisrKWErPU1hdGgucG93KHQuZ2V0KGUsbiksMikvKHQuY29sdW1ucy0xKTtuLnB1c2goTWF0aC5zcXJ0KGEpKX1yZXR1cm4gbn0pKHRoaXMpO2Vsc2UgaWYoIUFycmF5LmlzQXJyYXkoZSkpdGhyb3cgbmV3IFR5cGVFcnJvcigic2NhbGUgbXVzdCBiZSBhbiBhcnJheSIpO3JldHVybihmdW5jdGlvbiBvKHQsbil7Zm9yKGxldCBlPTA7ZTx0LnJvd3M7ZSsrKWZvcihsZXQgYT0wO2E8dC5jb2x1bW5zO2ErKyl0LnNldChlLGEsdC5nZXQoZSxhKS9uW2VdKX0pKHRoaXMsZSksdGhpcztjYXNlImNvbHVtbiI6aWYodm9pZCAwPT09ZSllPShmdW5jdGlvbiByKHQpe2NvbnN0IG49W107Zm9yKGxldCBlPTA7ZTx0LmNvbHVtbnM7ZSsrKXtsZXQgYT0wO2ZvcihsZXQgbj0wO248dC5yb3dzO24rKylhKz1NYXRoLnBvdyh0LmdldChuLGUpLDIpLyh0LnJvd3MtMSk7bi5wdXNoKE1hdGguc3FydChhKSl9cmV0dXJuIG59KSh0aGlzKTtlbHNlIGlmKCFBcnJheS5pc0FycmF5KGUpKXRocm93IG5ldyBUeXBlRXJyb3IoInNjYWxlIG11c3QgYmUgYW4gYXJyYXkiKTtyZXR1cm4oZnVuY3Rpb24gaSh0LG4pe2ZvcihsZXQgZT0wO2U8dC5yb3dzO2UrKylmb3IobGV0IGE9MDthPHQuY29sdW1uczthKyspdC5zZXQoZSxhLHQuZ2V0KGUsYSkvblthXSl9KSh0aGlzLGUpLHRoaXM7Y2FzZSB2b2lkIDA6aWYodm9pZCAwPT09ZSllPShmdW5jdGlvbiBjKHQpe2NvbnN0IG49dC5zaXplLTE7bGV0IGU9MDtmb3IobGV0IGE9MDthPHQuY29sdW1uczthKyspZm9yKGxldCBvPTA7bzx0LnJvd3M7bysrKWUrPU1hdGgucG93KHQuZ2V0KG8sYSksMikvbjtyZXR1cm4gTWF0aC5zcXJ0KGUpfSkodGhpcyk7ZWxzZSBpZigibnVtYmVyIiE9dHlwZW9mIGUpdGhyb3cgbmV3IFR5cGVFcnJvcigic2NhbGUgbXVzdCBiZSBhIG51bWJlciIpO3JldHVybihmdW5jdGlvbiBzKHQsbil7Zm9yKGxldCBlPTA7ZTx0LnJvd3M7ZSsrKWZvcihsZXQgYT0wO2E8dC5jb2x1bW5zO2ErKyl0LnNldChlLGEsdC5nZXQoZSxhKS9uKX0pKHRoaXMsZSksdGhpcztkZWZhdWx0OnRocm93IG5ldyBFcnJvcihgaW52YWxpZCBvcHRpb246ICR7dH1gKX19dG9TdHJpbmcodCl7cmV0dXJuIFhidCh0aGlzLHQpfX1mdW5jdGlvbiBzdXQodCxuKXtyZXR1cm4gdC1ufWN1dC5wcm90b3R5cGUua2xhc3M9Ik1hdHJpeCIsInVuZGVmaW5lZCIhPXR5cGVvZiBTeW1ib2wmJihjdXQucHJvdG90eXBlW1N5bWJvbC5mb3IoIm5vZGVqcy51dGlsLmluc3BlY3QuY3VzdG9tIildPWZ1bmN0aW9uIGx1dCgpe3JldHVybiBYYnQodGhpcyl9KSxjdXQucmFuZG9tPWN1dC5yYW5kLGN1dC5yYW5kb21JbnQ9Y3V0LnJhbmRJbnQsY3V0LmRpYWdvbmFsPWN1dC5kaWFnLGN1dC5wcm90b3R5cGUuZGlhZ29uYWw9Y3V0LnByb3RvdHlwZS5kaWFnLGN1dC5pZGVudGl0eT1jdXQuZXllLGN1dC5wcm90b3R5cGUubmVnYXRlPWN1dC5wcm90b3R5cGUubmVnLGN1dC5wcm90b3R5cGUudGVuc29yUHJvZHVjdD1jdXQucHJvdG90eXBlLmtyb25lY2tlclByb2R1Y3Q7Y2xhc3MgbXV0IGV4dGVuZHMgY3V0e2NvbnN0cnVjdG9yKHQsbil7aWYoc3VwZXIoKSxtdXQuaXNNYXRyaXgodCkpcmV0dXJuIHQuY2xvbmUoKTtpZihOdW1iZXIuaXNJbnRlZ2VyKHQpJiZ0Pj0wKXtpZih0aGlzLmRhdGE9W10sIShOdW1iZXIuaXNJbnRlZ2VyKG4pJiZuPj0wKSl0aHJvdyBuZXcgVHlwZUVycm9yKCJuQ29sdW1ucyBtdXN0IGJlIGEgcG9zaXRpdmUgaW50ZWdlciIpO2ZvcihsZXQgZT0wO2U8dDtlKyspdGhpcy5kYXRhLnB1c2gobmV3IEZsb2F0NjRBcnJheShuKSl9ZWxzZXtpZighQXJyYXkuaXNBcnJheSh0KSl0aHJvdyBuZXcgVHlwZUVycm9yKCJGaXJzdCBhcmd1bWVudCBtdXN0IGJlIGEgcG9zaXRpdmUgbnVtYmVyIG9yIGFuIGFycmF5Iik7e2NvbnN0IGU9dDtpZigibnVtYmVyIiE9dHlwZW9mKG49KHQ9ZS5sZW5ndGgpP2VbMF0ubGVuZ3RoOjApKXRocm93IG5ldyBUeXBlRXJyb3IoIkRhdGEgbXVzdCBiZSBhIDJEIGFycmF5IHdpdGggYXQgbGVhc3Qgb25lIGVsZW1lbnQiKTt0aGlzLmRhdGE9W107Zm9yKGxldCBhPTA7YTx0O2ErKyl7aWYoZVthXS5sZW5ndGghPT1uKXRocm93IG5ldyBSYW5nZUVycm9yKCJJbmNvbnNpc3RlbnQgYXJyYXkgZGltZW5zaW9ucyIpO3RoaXMuZGF0YS5wdXNoKEZsb2F0NjRBcnJheS5mcm9tKGVbYV0pKX19fXRoaXMucm93cz10LHRoaXMuY29sdW1ucz1ufXNldCh0LG4sZSl7cmV0dXJuIHRoaXMuZGF0YVt0XVtuXT1lLHRoaXN9Z2V0KHQsbil7cmV0dXJuIHRoaXMuZGF0YVt0XVtuXX1yZW1vdmVSb3codCl7cmV0dXJuIFFidCh0aGlzLHQpLHRoaXMuZGF0YS5zcGxpY2UodCwxKSx0aGlzLnJvd3MtPTEsdGhpc31hZGRSb3codCxuKXtyZXR1cm4gdm9pZCAwPT09biYmKG49dCx0PXRoaXMucm93cyksUWJ0KHRoaXMsdCwhMCksbj1GbG9hdDY0QXJyYXkuZnJvbSgkYnQodGhpcyxuKSksdGhpcy5kYXRhLnNwbGljZSh0LDAsbiksdGhpcy5yb3dzKz0xLHRoaXN9cmVtb3ZlQ29sdW1uKHQpe0tidCh0aGlzLHQpO2ZvcihsZXQgbj0wO248dGhpcy5yb3dzO24rKyl7Y29uc3QgZT1uZXcgRmxvYXQ2NEFycmF5KHRoaXMuY29sdW1ucy0xKTtmb3IobGV0IGE9MDthPHQ7YSsrKWVbYV09dGhpcy5kYXRhW25dW2FdO2ZvcihsZXQgYT10KzE7YTx0aGlzLmNvbHVtbnM7YSsrKWVbYS0xXT10aGlzLmRhdGFbbl1bYV07dGhpcy5kYXRhW25dPWV9cmV0dXJuIHRoaXMuY29sdW1ucy09MSx0aGlzfWFkZENvbHVtbih0LG4pe3ZvaWQgMD09PW4mJihuPXQsdD10aGlzLmNvbHVtbnMpLEtidCh0aGlzLHQsITApLG49dHV0KHRoaXMsbik7Zm9yKGxldCBlPTA7ZTx0aGlzLnJvd3M7ZSsrKXtjb25zdCBhPW5ldyBGbG9hdDY0QXJyYXkodGhpcy5jb2x1bW5zKzEpO2xldCBvPTA7Zm9yKDtvPHQ7bysrKWFbb109dGhpcy5kYXRhW2VdW29dO2ZvcihhW28rK109bltlXTtvPHRoaXMuY29sdW1ucysxO28rKylhW29dPXRoaXMuZGF0YVtlXVtvLTFdO3RoaXMuZGF0YVtlXT1hfXJldHVybiB0aGlzLmNvbHVtbnMrPTEsdGhpc319IShmdW5jdGlvbiBkdXQodCxuKXt0LnByb3RvdHlwZS5hZGQ9ZnVuY3Rpb24gdChuKXtyZXR1cm4ibnVtYmVyIj09dHlwZW9mIG4/dGhpcy5hZGRTKG4pOnRoaXMuYWRkTShuKX0sdC5wcm90b3R5cGUuYWRkUz1mdW5jdGlvbiB0KG4pe2ZvcihsZXQgdD0wO3Q8dGhpcy5yb3dzO3QrKylmb3IobGV0IGU9MDtlPHRoaXMuY29sdW1ucztlKyspdGhpcy5zZXQodCxlLHRoaXMuZ2V0KHQsZSkrbik7cmV0dXJuIHRoaXN9LHQucHJvdG90eXBlLmFkZE09ZnVuY3Rpb24gdChlKXtpZihlPW4uY2hlY2tNYXRyaXgoZSksdGhpcy5yb3dzIT09ZS5yb3dzfHx0aGlzLmNvbHVtbnMhPT1lLmNvbHVtbnMpdGhyb3cgbmV3IFJhbmdlRXJyb3IoIk1hdHJpY2VzIGRpbWVuc2lvbnMgbXVzdCBiZSBlcXVhbCIpO2ZvcihsZXQgdD0wO3Q8dGhpcy5yb3dzO3QrKylmb3IobGV0IG49MDtuPHRoaXMuY29sdW1ucztuKyspdGhpcy5zZXQodCxuLHRoaXMuZ2V0KHQsbikrZS5nZXQodCxuKSk7cmV0dXJuIHRoaXN9LHQuYWRkPWZ1bmN0aW9uIHQoZSxhKXtyZXR1cm4gbmV3IG4oZSkuYWRkKGEpfSx0LnByb3RvdHlwZS5zdWI9ZnVuY3Rpb24gdChuKXtyZXR1cm4ibnVtYmVyIj09dHlwZW9mIG4/dGhpcy5zdWJTKG4pOnRoaXMuc3ViTShuKX0sdC5wcm90b3R5cGUuc3ViUz1mdW5jdGlvbiB0KG4pe2ZvcihsZXQgdD0wO3Q8dGhpcy5yb3dzO3QrKylmb3IobGV0IGU9MDtlPHRoaXMuY29sdW1ucztlKyspdGhpcy5zZXQodCxlLHRoaXMuZ2V0KHQsZSktbik7cmV0dXJuIHRoaXN9LHQucHJvdG90eXBlLnN1Yk09ZnVuY3Rpb24gdChlKXtpZihlPW4uY2hlY2tNYXRyaXgoZSksdGhpcy5yb3dzIT09ZS5yb3dzfHx0aGlzLmNvbHVtbnMhPT1lLmNvbHVtbnMpdGhyb3cgbmV3IFJhbmdlRXJyb3IoIk1hdHJpY2VzIGRpbWVuc2lvbnMgbXVzdCBiZSBlcXVhbCIpO2ZvcihsZXQgdD0wO3Q8dGhpcy5yb3dzO3QrKylmb3IobGV0IG49MDtuPHRoaXMuY29sdW1ucztuKyspdGhpcy5zZXQodCxuLHRoaXMuZ2V0KHQsbiktZS5nZXQodCxuKSk7cmV0dXJuIHRoaXN9LHQuc3ViPWZ1bmN0aW9uIHQoZSxhKXtyZXR1cm4gbmV3IG4oZSkuc3ViKGEpfSx0LnByb3RvdHlwZS5zdWJ0cmFjdD10LnByb3RvdHlwZS5zdWIsdC5wcm90b3R5cGUuc3VidHJhY3RTPXQucHJvdG90eXBlLnN1YlMsdC5wcm90b3R5cGUuc3VidHJhY3RNPXQucHJvdG90eXBlLnN1Yk0sdC5zdWJ0cmFjdD10LnN1Yix0LnByb3RvdHlwZS5tdWw9ZnVuY3Rpb24gdChuKXtyZXR1cm4ibnVtYmVyIj09dHlwZW9mIG4/dGhpcy5tdWxTKG4pOnRoaXMubXVsTShuKX0sdC5wcm90b3R5cGUubXVsUz1mdW5jdGlvbiB0KG4pe2ZvcihsZXQgdD0wO3Q8dGhpcy5yb3dzO3QrKylmb3IobGV0IGU9MDtlPHRoaXMuY29sdW1ucztlKyspdGhpcy5zZXQodCxlLHRoaXMuZ2V0KHQsZSkqbik7cmV0dXJuIHRoaXN9LHQucHJvdG90eXBlLm11bE09ZnVuY3Rpb24gdChlKXtpZihlPW4uY2hlY2tNYXRyaXgoZSksdGhpcy5yb3dzIT09ZS5yb3dzfHx0aGlzLmNvbHVtbnMhPT1lLmNvbHVtbnMpdGhyb3cgbmV3IFJhbmdlRXJyb3IoIk1hdHJpY2VzIGRpbWVuc2lvbnMgbXVzdCBiZSBlcXVhbCIpO2ZvcihsZXQgdD0wO3Q8dGhpcy5yb3dzO3QrKylmb3IobGV0IG49MDtuPHRoaXMuY29sdW1ucztuKyspdGhpcy5zZXQodCxuLHRoaXMuZ2V0KHQsbikqZS5nZXQodCxuKSk7cmV0dXJuIHRoaXN9LHQubXVsPWZ1bmN0aW9uIHQoZSxhKXtyZXR1cm4gbmV3IG4oZSkubXVsKGEpfSx0LnByb3RvdHlwZS5tdWx0aXBseT10LnByb3RvdHlwZS5tdWwsdC5wcm90b3R5cGUubXVsdGlwbHlTPXQucHJvdG90eXBlLm11bFMsdC5wcm90b3R5cGUubXVsdGlwbHlNPXQucHJvdG90eXBlLm11bE0sdC5tdWx0aXBseT10Lm11bCx0LnByb3RvdHlwZS5kaXY9ZnVuY3Rpb24gdChuKXtyZXR1cm4ibnVtYmVyIj09dHlwZW9mIG4/dGhpcy5kaXZTKG4pOnRoaXMuZGl2TShuKX0sdC5wcm90b3R5cGUuZGl2Uz1mdW5jdGlvbiB0KG4pe2ZvcihsZXQgdD0wO3Q8dGhpcy5yb3dzO3QrKylmb3IobGV0IGU9MDtlPHRoaXMuY29sdW1ucztlKyspdGhpcy5zZXQodCxlLHRoaXMuZ2V0KHQsZSkvbik7cmV0dXJuIHRoaXN9LHQucHJvdG90eXBlLmRpdk09ZnVuY3Rpb24gdChlKXtpZihlPW4uY2hlY2tNYXRyaXgoZSksdGhpcy5yb3dzIT09ZS5yb3dzfHx0aGlzLmNvbHVtbnMhPT1lLmNvbHVtbnMpdGhyb3cgbmV3IFJhbmdlRXJyb3IoIk1hdHJpY2VzIGRpbWVuc2lvbnMgbXVzdCBiZSBlcXVhbCIpO2ZvcihsZXQgdD0wO3Q8dGhpcy5yb3dzO3QrKylmb3IobGV0IG49MDtuPHRoaXMuY29sdW1ucztuKyspdGhpcy5zZXQodCxuLHRoaXMuZ2V0KHQsbikvZS5nZXQodCxuKSk7cmV0dXJuIHRoaXN9LHQuZGl2PWZ1bmN0aW9uIHQoZSxhKXtyZXR1cm4gbmV3IG4oZSkuZGl2KGEpfSx0LnByb3RvdHlwZS5kaXZpZGU9dC5wcm90b3R5cGUuZGl2LHQucHJvdG90eXBlLmRpdmlkZVM9dC5wcm90b3R5cGUuZGl2Uyx0LnByb3RvdHlwZS5kaXZpZGVNPXQucHJvdG90eXBlLmRpdk0sdC5kaXZpZGU9dC5kaXYsdC5wcm90b3R5cGUubW9kPWZ1bmN0aW9uIHQobil7cmV0dXJuIm51bWJlciI9PXR5cGVvZiBuP3RoaXMubW9kUyhuKTp0aGlzLm1vZE0obil9LHQucHJvdG90eXBlLm1vZFM9ZnVuY3Rpb24gdChuKXtmb3IobGV0IHQ9MDt0PHRoaXMucm93czt0KyspZm9yKGxldCBlPTA7ZTx0aGlzLmNvbHVtbnM7ZSsrKXRoaXMuc2V0KHQsZSx0aGlzLmdldCh0LGUpJW4pO3JldHVybiB0aGlzfSx0LnByb3RvdHlwZS5tb2RNPWZ1bmN0aW9uIHQoZSl7aWYoZT1uLmNoZWNrTWF0cml4KGUpLHRoaXMucm93cyE9PWUucm93c3x8dGhpcy5jb2x1bW5zIT09ZS5jb2x1bW5zKXRocm93IG5ldyBSYW5nZUVycm9yKCJNYXRyaWNlcyBkaW1lbnNpb25zIG11c3QgYmUgZXF1YWwiKTtmb3IobGV0IHQ9MDt0PHRoaXMucm93czt0KyspZm9yKGxldCBuPTA7bjx0aGlzLmNvbHVtbnM7bisrKXRoaXMuc2V0KHQsbix0aGlzLmdldCh0LG4pJWUuZ2V0KHQsbikpO3JldHVybiB0aGlzfSx0Lm1vZD1mdW5jdGlvbiB0KGUsYSl7cmV0dXJuIG5ldyBuKGUpLm1vZChhKX0sdC5wcm90b3R5cGUubW9kdWx1cz10LnByb3RvdHlwZS5tb2QsdC5wcm90b3R5cGUubW9kdWx1c1M9dC5wcm90b3R5cGUubW9kUyx0LnByb3RvdHlwZS5tb2R1bHVzTT10LnByb3RvdHlwZS5tb2RNLHQubW9kdWx1cz10Lm1vZCx0LnByb3RvdHlwZS5hbmQ9ZnVuY3Rpb24gdChuKXtyZXR1cm4ibnVtYmVyIj09dHlwZW9mIG4/dGhpcy5hbmRTKG4pOnRoaXMuYW5kTShuKX0sdC5wcm90b3R5cGUuYW5kUz1mdW5jdGlvbiB0KG4pe2ZvcihsZXQgdD0wO3Q8dGhpcy5yb3dzO3QrKylmb3IobGV0IGU9MDtlPHRoaXMuY29sdW1ucztlKyspdGhpcy5zZXQodCxlLHRoaXMuZ2V0KHQsZSkmbik7cmV0dXJuIHRoaXN9LHQucHJvdG90eXBlLmFuZE09ZnVuY3Rpb24gdChlKXtpZihlPW4uY2hlY2tNYXRyaXgoZSksdGhpcy5yb3dzIT09ZS5yb3dzfHx0aGlzLmNvbHVtbnMhPT1lLmNvbHVtbnMpdGhyb3cgbmV3IFJhbmdlRXJyb3IoIk1hdHJpY2VzIGRpbWVuc2lvbnMgbXVzdCBiZSBlcXVhbCIpO2ZvcihsZXQgdD0wO3Q8dGhpcy5yb3dzO3QrKylmb3IobGV0IG49MDtuPHRoaXMuY29sdW1ucztuKyspdGhpcy5zZXQodCxuLHRoaXMuZ2V0KHQsbikmZS5nZXQodCxuKSk7cmV0dXJuIHRoaXN9LHQuYW5kPWZ1bmN0aW9uIHQoZSxhKXtyZXR1cm4gbmV3IG4oZSkuYW5kKGEpfSx0LnByb3RvdHlwZS5vcj1mdW5jdGlvbiB0KG4pe3JldHVybiJudW1iZXIiPT10eXBlb2Ygbj90aGlzLm9yUyhuKTp0aGlzLm9yTShuKX0sdC5wcm90b3R5cGUub3JTPWZ1bmN0aW9uIHQobil7Zm9yKGxldCB0PTA7dDx0aGlzLnJvd3M7dCsrKWZvcihsZXQgZT0wO2U8dGhpcy5jb2x1bW5zO2UrKyl0aGlzLnNldCh0LGUsdGhpcy5nZXQodCxlKXxuKTtyZXR1cm4gdGhpc30sdC5wcm90b3R5cGUub3JNPWZ1bmN0aW9uIHQoZSl7aWYoZT1uLmNoZWNrTWF0cml4KGUpLHRoaXMucm93cyE9PWUucm93c3x8dGhpcy5jb2x1bW5zIT09ZS5jb2x1bW5zKXRocm93IG5ldyBSYW5nZUVycm9yKCJNYXRyaWNlcyBkaW1lbnNpb25zIG11c3QgYmUgZXF1YWwiKTtmb3IobGV0IHQ9MDt0PHRoaXMucm93czt0KyspZm9yKGxldCBuPTA7bjx0aGlzLmNvbHVtbnM7bisrKXRoaXMuc2V0KHQsbix0aGlzLmdldCh0LG4pfGUuZ2V0KHQsbikpO3JldHVybiB0aGlzfSx0Lm9yPWZ1bmN0aW9uIHQoZSxhKXtyZXR1cm4gbmV3IG4oZSkub3IoYSl9LHQucHJvdG90eXBlLnhvcj1mdW5jdGlvbiB0KG4pe3JldHVybiJudW1iZXIiPT10eXBlb2Ygbj90aGlzLnhvclMobik6dGhpcy54b3JNKG4pfSx0LnByb3RvdHlwZS54b3JTPWZ1bmN0aW9uIHQobil7Zm9yKGxldCB0PTA7dDx0aGlzLnJvd3M7dCsrKWZvcihsZXQgZT0wO2U8dGhpcy5jb2x1bW5zO2UrKyl0aGlzLnNldCh0LGUsdGhpcy5nZXQodCxlKV5uKTtyZXR1cm4gdGhpc30sdC5wcm90b3R5cGUueG9yTT1mdW5jdGlvbiB0KGUpe2lmKGU9bi5jaGVja01hdHJpeChlKSx0aGlzLnJvd3MhPT1lLnJvd3N8fHRoaXMuY29sdW1ucyE9PWUuY29sdW1ucyl0aHJvdyBuZXcgUmFuZ2VFcnJvcigiTWF0cmljZXMgZGltZW5zaW9ucyBtdXN0IGJlIGVxdWFsIik7Zm9yKGxldCB0PTA7dDx0aGlzLnJvd3M7dCsrKWZvcihsZXQgbj0wO248dGhpcy5jb2x1bW5zO24rKyl0aGlzLnNldCh0LG4sdGhpcy5nZXQodCxuKV5lLmdldCh0LG4pKTtyZXR1cm4gdGhpc30sdC54b3I9ZnVuY3Rpb24gdChlLGEpe3JldHVybiBuZXcgbihlKS54b3IoYSl9LHQucHJvdG90eXBlLmxlZnRTaGlmdD1mdW5jdGlvbiB0KG4pe3JldHVybiJudW1iZXIiPT10eXBlb2Ygbj90aGlzLmxlZnRTaGlmdFMobik6dGhpcy5sZWZ0U2hpZnRNKG4pfSx0LnByb3RvdHlwZS5sZWZ0U2hpZnRTPWZ1bmN0aW9uIHQobil7Zm9yKGxldCB0PTA7dDx0aGlzLnJvd3M7dCsrKWZvcihsZXQgZT0wO2U8dGhpcy5jb2x1bW5zO2UrKyl0aGlzLnNldCh0LGUsdGhpcy5nZXQodCxlKTw8bik7cmV0dXJuIHRoaXN9LHQucHJvdG90eXBlLmxlZnRTaGlmdE09ZnVuY3Rpb24gdChlKXtpZihlPW4uY2hlY2tNYXRyaXgoZSksdGhpcy5yb3dzIT09ZS5yb3dzfHx0aGlzLmNvbHVtbnMhPT1lLmNvbHVtbnMpdGhyb3cgbmV3IFJhbmdlRXJyb3IoIk1hdHJpY2VzIGRpbWVuc2lvbnMgbXVzdCBiZSBlcXVhbCIpO2ZvcihsZXQgdD0wO3Q8dGhpcy5yb3dzO3QrKylmb3IobGV0IG49MDtuPHRoaXMuY29sdW1ucztuKyspdGhpcy5zZXQodCxuLHRoaXMuZ2V0KHQsbik8PGUuZ2V0KHQsbikpO3JldHVybiB0aGlzfSx0LmxlZnRTaGlmdD1mdW5jdGlvbiB0KGUsYSl7cmV0dXJuIG5ldyBuKGUpLmxlZnRTaGlmdChhKX0sdC5wcm90b3R5cGUuc2lnblByb3BhZ2F0aW5nUmlnaHRTaGlmdD1mdW5jdGlvbiB0KG4pe3JldHVybiJudW1iZXIiPT10eXBlb2Ygbj90aGlzLnNpZ25Qcm9wYWdhdGluZ1JpZ2h0U2hpZnRTKG4pOnRoaXMuc2lnblByb3BhZ2F0aW5nUmlnaHRTaGlmdE0obil9LHQucHJvdG90eXBlLnNpZ25Qcm9wYWdhdGluZ1JpZ2h0U2hpZnRTPWZ1bmN0aW9uIHQobil7Zm9yKGxldCB0PTA7dDx0aGlzLnJvd3M7dCsrKWZvcihsZXQgZT0wO2U8dGhpcy5jb2x1bW5zO2UrKyl0aGlzLnNldCh0LGUsdGhpcy5nZXQodCxlKT4+bik7cmV0dXJuIHRoaXN9LHQucHJvdG90eXBlLnNpZ25Qcm9wYWdhdGluZ1JpZ2h0U2hpZnRNPWZ1bmN0aW9uIHQoZSl7aWYoZT1uLmNoZWNrTWF0cml4KGUpLHRoaXMucm93cyE9PWUucm93c3x8dGhpcy5jb2x1bW5zIT09ZS5jb2x1bW5zKXRocm93IG5ldyBSYW5nZUVycm9yKCJNYXRyaWNlcyBkaW1lbnNpb25zIG11c3QgYmUgZXF1YWwiKTtmb3IobGV0IHQ9MDt0PHRoaXMucm93czt0KyspZm9yKGxldCBuPTA7bjx0aGlzLmNvbHVtbnM7bisrKXRoaXMuc2V0KHQsbix0aGlzLmdldCh0LG4pPj5lLmdldCh0LG4pKTtyZXR1cm4gdGhpc30sdC5zaWduUHJvcGFnYXRpbmdSaWdodFNoaWZ0PWZ1bmN0aW9uIHQoZSxhKXtyZXR1cm4gbmV3IG4oZSkuc2lnblByb3BhZ2F0aW5nUmlnaHRTaGlmdChhKX0sdC5wcm90b3R5cGUucmlnaHRTaGlmdD1mdW5jdGlvbiB0KG4pe3JldHVybiJudW1iZXIiPT10eXBlb2Ygbj90aGlzLnJpZ2h0U2hpZnRTKG4pOnRoaXMucmlnaHRTaGlmdE0obil9LHQucHJvdG90eXBlLnJpZ2h0U2hpZnRTPWZ1bmN0aW9uIHQobil7Zm9yKGxldCB0PTA7dDx0aGlzLnJvd3M7dCsrKWZvcihsZXQgZT0wO2U8dGhpcy5jb2x1bW5zO2UrKyl0aGlzLnNldCh0LGUsdGhpcy5nZXQodCxlKT4+Pm4pO3JldHVybiB0aGlzfSx0LnByb3RvdHlwZS5yaWdodFNoaWZ0TT1mdW5jdGlvbiB0KGUpe2lmKGU9bi5jaGVja01hdHJpeChlKSx0aGlzLnJvd3MhPT1lLnJvd3N8fHRoaXMuY29sdW1ucyE9PWUuY29sdW1ucyl0aHJvdyBuZXcgUmFuZ2VFcnJvcigiTWF0cmljZXMgZGltZW5zaW9ucyBtdXN0IGJlIGVxdWFsIik7Zm9yKGxldCB0PTA7dDx0aGlzLnJvd3M7dCsrKWZvcihsZXQgbj0wO248dGhpcy5jb2x1bW5zO24rKyl0aGlzLnNldCh0LG4sdGhpcy5nZXQodCxuKT4+PmUuZ2V0KHQsbikpO3JldHVybiB0aGlzfSx0LnJpZ2h0U2hpZnQ9ZnVuY3Rpb24gdChlLGEpe3JldHVybiBuZXcgbihlKS5yaWdodFNoaWZ0KGEpfSx0LnByb3RvdHlwZS56ZXJvRmlsbFJpZ2h0U2hpZnQ9dC5wcm90b3R5cGUucmlnaHRTaGlmdCx0LnByb3RvdHlwZS56ZXJvRmlsbFJpZ2h0U2hpZnRTPXQucHJvdG90eXBlLnJpZ2h0U2hpZnRTLHQucHJvdG90eXBlLnplcm9GaWxsUmlnaHRTaGlmdE09dC5wcm90b3R5cGUucmlnaHRTaGlmdE0sdC56ZXJvRmlsbFJpZ2h0U2hpZnQ9dC5yaWdodFNoaWZ0LHQucHJvdG90eXBlLm5vdD1mdW5jdGlvbiB0KCl7Zm9yKGxldCB0PTA7dDx0aGlzLnJvd3M7dCsrKWZvcihsZXQgbj0wO248dGhpcy5jb2x1bW5zO24rKyl0aGlzLnNldCh0LG4sfnRoaXMuZ2V0KHQsbikpO3JldHVybiB0aGlzfSx0Lm5vdD1mdW5jdGlvbiB0KGUpe3JldHVybiBuZXcgbihlKS5ub3QoKX0sdC5wcm90b3R5cGUuYWJzPWZ1bmN0aW9uIHQoKXtmb3IobGV0IHQ9MDt0PHRoaXMucm93czt0KyspZm9yKGxldCBuPTA7bjx0aGlzLmNvbHVtbnM7bisrKXRoaXMuc2V0KHQsbixNYXRoLmFicyh0aGlzLmdldCh0LG4pKSk7cmV0dXJuIHRoaXN9LHQuYWJzPWZ1bmN0aW9uIHQoZSl7cmV0dXJuIG5ldyBuKGUpLmFicygpfSx0LnByb3RvdHlwZS5hY29zPWZ1bmN0aW9uIHQoKXtmb3IobGV0IHQ9MDt0PHRoaXMucm93czt0KyspZm9yKGxldCBuPTA7bjx0aGlzLmNvbHVtbnM7bisrKXRoaXMuc2V0KHQsbixNYXRoLmFjb3ModGhpcy5nZXQodCxuKSkpO3JldHVybiB0aGlzfSx0LmFjb3M9ZnVuY3Rpb24gdChlKXtyZXR1cm4gbmV3IG4oZSkuYWNvcygpfSx0LnByb3RvdHlwZS5hY29zaD1mdW5jdGlvbiB0KCl7Zm9yKGxldCB0PTA7dDx0aGlzLnJvd3M7dCsrKWZvcihsZXQgbj0wO248dGhpcy5jb2x1bW5zO24rKyl0aGlzLnNldCh0LG4sTWF0aC5hY29zaCh0aGlzLmdldCh0LG4pKSk7cmV0dXJuIHRoaXN9LHQuYWNvc2g9ZnVuY3Rpb24gdChlKXtyZXR1cm4gbmV3IG4oZSkuYWNvc2goKX0sdC5wcm90b3R5cGUuYXNpbj1mdW5jdGlvbiB0KCl7Zm9yKGxldCB0PTA7dDx0aGlzLnJvd3M7dCsrKWZvcihsZXQgbj0wO248dGhpcy5jb2x1bW5zO24rKyl0aGlzLnNldCh0LG4sTWF0aC5hc2luKHRoaXMuZ2V0KHQsbikpKTtyZXR1cm4gdGhpc30sdC5hc2luPWZ1bmN0aW9uIHQoZSl7cmV0dXJuIG5ldyBuKGUpLmFzaW4oKX0sdC5wcm90b3R5cGUuYXNpbmg9ZnVuY3Rpb24gdCgpe2ZvcihsZXQgdD0wO3Q8dGhpcy5yb3dzO3QrKylmb3IobGV0IG49MDtuPHRoaXMuY29sdW1ucztuKyspdGhpcy5zZXQodCxuLE1hdGguYXNpbmgodGhpcy5nZXQodCxuKSkpO3JldHVybiB0aGlzfSx0LmFzaW5oPWZ1bmN0aW9uIHQoZSl7cmV0dXJuIG5ldyBuKGUpLmFzaW5oKCl9LHQucHJvdG90eXBlLmF0YW49ZnVuY3Rpb24gdCgpe2ZvcihsZXQgdD0wO3Q8dGhpcy5yb3dzO3QrKylmb3IobGV0IG49MDtuPHRoaXMuY29sdW1ucztuKyspdGhpcy5zZXQodCxuLE1hdGguYXRhbih0aGlzLmdldCh0LG4pKSk7cmV0dXJuIHRoaXN9LHQuYXRhbj1mdW5jdGlvbiB0KGUpe3JldHVybiBuZXcgbihlKS5hdGFuKCl9LHQucHJvdG90eXBlLmF0YW5oPWZ1bmN0aW9uIHQoKXtmb3IobGV0IHQ9MDt0PHRoaXMucm93czt0KyspZm9yKGxldCBuPTA7bjx0aGlzLmNvbHVtbnM7bisrKXRoaXMuc2V0KHQsbixNYXRoLmF0YW5oKHRoaXMuZ2V0KHQsbikpKTtyZXR1cm4gdGhpc30sdC5hdGFuaD1mdW5jdGlvbiB0KGUpe3JldHVybiBuZXcgbihlKS5hdGFuaCgpfSx0LnByb3RvdHlwZS5jYnJ0PWZ1bmN0aW9uIHQoKXtmb3IobGV0IHQ9MDt0PHRoaXMucm93czt0KyspZm9yKGxldCBuPTA7bjx0aGlzLmNvbHVtbnM7bisrKXRoaXMuc2V0KHQsbixNYXRoLmNicnQodGhpcy5nZXQodCxuKSkpO3JldHVybiB0aGlzfSx0LmNicnQ9ZnVuY3Rpb24gdChlKXtyZXR1cm4gbmV3IG4oZSkuY2JydCgpfSx0LnByb3RvdHlwZS5jZWlsPWZ1bmN0aW9uIHQoKXtmb3IobGV0IHQ9MDt0PHRoaXMucm93czt0KyspZm9yKGxldCBuPTA7bjx0aGlzLmNvbHVtbnM7bisrKXRoaXMuc2V0KHQsbixNYXRoLmNlaWwodGhpcy5nZXQodCxuKSkpO3JldHVybiB0aGlzfSx0LmNlaWw9ZnVuY3Rpb24gdChlKXtyZXR1cm4gbmV3IG4oZSkuY2VpbCgpfSx0LnByb3RvdHlwZS5jbHozMj1mdW5jdGlvbiB0KCl7Zm9yKGxldCB0PTA7dDx0aGlzLnJvd3M7dCsrKWZvcihsZXQgbj0wO248dGhpcy5jb2x1bW5zO24rKyl0aGlzLnNldCh0LG4sTWF0aC5jbHozMih0aGlzLmdldCh0LG4pKSk7cmV0dXJuIHRoaXN9LHQuY2x6MzI9ZnVuY3Rpb24gdChlKXtyZXR1cm4gbmV3IG4oZSkuY2x6MzIoKX0sdC5wcm90b3R5cGUuY29zPWZ1bmN0aW9uIHQoKXtmb3IobGV0IHQ9MDt0PHRoaXMucm93czt0KyspZm9yKGxldCBuPTA7bjx0aGlzLmNvbHVtbnM7bisrKXRoaXMuc2V0KHQsbixNYXRoLmNvcyh0aGlzLmdldCh0LG4pKSk7cmV0dXJuIHRoaXN9LHQuY29zPWZ1bmN0aW9uIHQoZSl7cmV0dXJuIG5ldyBuKGUpLmNvcygpfSx0LnByb3RvdHlwZS5jb3NoPWZ1bmN0aW9uIHQoKXtmb3IobGV0IHQ9MDt0PHRoaXMucm93czt0KyspZm9yKGxldCBuPTA7bjx0aGlzLmNvbHVtbnM7bisrKXRoaXMuc2V0KHQsbixNYXRoLmNvc2godGhpcy5nZXQodCxuKSkpO3JldHVybiB0aGlzfSx0LmNvc2g9ZnVuY3Rpb24gdChlKXtyZXR1cm4gbmV3IG4oZSkuY29zaCgpfSx0LnByb3RvdHlwZS5leHA9ZnVuY3Rpb24gdCgpe2ZvcihsZXQgdD0wO3Q8dGhpcy5yb3dzO3QrKylmb3IobGV0IG49MDtuPHRoaXMuY29sdW1ucztuKyspdGhpcy5zZXQodCxuLE1hdGguZXhwKHRoaXMuZ2V0KHQsbikpKTtyZXR1cm4gdGhpc30sdC5leHA9ZnVuY3Rpb24gdChlKXtyZXR1cm4gbmV3IG4oZSkuZXhwKCl9LHQucHJvdG90eXBlLmV4cG0xPWZ1bmN0aW9uIHQoKXtmb3IobGV0IHQ9MDt0PHRoaXMucm93czt0KyspZm9yKGxldCBuPTA7bjx0aGlzLmNvbHVtbnM7bisrKXRoaXMuc2V0KHQsbixNYXRoLmV4cG0xKHRoaXMuZ2V0KHQsbikpKTtyZXR1cm4gdGhpc30sdC5leHBtMT1mdW5jdGlvbiB0KGUpe3JldHVybiBuZXcgbihlKS5leHBtMSgpfSx0LnByb3RvdHlwZS5mbG9vcj1mdW5jdGlvbiB0KCl7Zm9yKGxldCB0PTA7dDx0aGlzLnJvd3M7dCsrKWZvcihsZXQgbj0wO248dGhpcy5jb2x1bW5zO24rKyl0aGlzLnNldCh0LG4sTWF0aC5mbG9vcih0aGlzLmdldCh0LG4pKSk7cmV0dXJuIHRoaXN9LHQuZmxvb3I9ZnVuY3Rpb24gdChlKXtyZXR1cm4gbmV3IG4oZSkuZmxvb3IoKX0sdC5wcm90b3R5cGUuZnJvdW5kPWZ1bmN0aW9uIHQoKXtmb3IobGV0IHQ9MDt0PHRoaXMucm93czt0KyspZm9yKGxldCBuPTA7bjx0aGlzLmNvbHVtbnM7bisrKXRoaXMuc2V0KHQsbixNYXRoLmZyb3VuZCh0aGlzLmdldCh0LG4pKSk7cmV0dXJuIHRoaXN9LHQuZnJvdW5kPWZ1bmN0aW9uIHQoZSl7cmV0dXJuIG5ldyBuKGUpLmZyb3VuZCgpfSx0LnByb3RvdHlwZS5sb2c9ZnVuY3Rpb24gdCgpe2ZvcihsZXQgdD0wO3Q8dGhpcy5yb3dzO3QrKylmb3IobGV0IG49MDtuPHRoaXMuY29sdW1ucztuKyspdGhpcy5zZXQodCxuLE1hdGgubG9nKHRoaXMuZ2V0KHQsbikpKTtyZXR1cm4gdGhpc30sdC5sb2c9ZnVuY3Rpb24gdChlKXtyZXR1cm4gbmV3IG4oZSkubG9nKCl9LHQucHJvdG90eXBlLmxvZzFwPWZ1bmN0aW9uIHQoKXtmb3IobGV0IHQ9MDt0PHRoaXMucm93czt0KyspZm9yKGxldCBuPTA7bjx0aGlzLmNvbHVtbnM7bisrKXRoaXMuc2V0KHQsbixNYXRoLmxvZzFwKHRoaXMuZ2V0KHQsbikpKTtyZXR1cm4gdGhpc30sdC5sb2cxcD1mdW5jdGlvbiB0KGUpe3JldHVybiBuZXcgbihlKS5sb2cxcCgpfSx0LnByb3RvdHlwZS5sb2cxMD1mdW5jdGlvbiB0KCl7Zm9yKGxldCB0PTA7dDx0aGlzLnJvd3M7dCsrKWZvcihsZXQgbj0wO248dGhpcy5jb2x1bW5zO24rKyl0aGlzLnNldCh0LG4sTWF0aC5sb2cxMCh0aGlzLmdldCh0LG4pKSk7cmV0dXJuIHRoaXN9LHQubG9nMTA9ZnVuY3Rpb24gdChlKXtyZXR1cm4gbmV3IG4oZSkubG9nMTAoKX0sdC5wcm90b3R5cGUubG9nMj1mdW5jdGlvbiB0KCl7Zm9yKGxldCB0PTA7dDx0aGlzLnJvd3M7dCsrKWZvcihsZXQgbj0wO248dGhpcy5jb2x1bW5zO24rKyl0aGlzLnNldCh0LG4sTWF0aC5sb2cyKHRoaXMuZ2V0KHQsbikpKTtyZXR1cm4gdGhpc30sdC5sb2cyPWZ1bmN0aW9uIHQoZSl7cmV0dXJuIG5ldyBuKGUpLmxvZzIoKX0sdC5wcm90b3R5cGUucm91bmQ9ZnVuY3Rpb24gdCgpe2ZvcihsZXQgdD0wO3Q8dGhpcy5yb3dzO3QrKylmb3IobGV0IG49MDtuPHRoaXMuY29sdW1ucztuKyspdGhpcy5zZXQodCxuLE1hdGgucm91bmQodGhpcy5nZXQodCxuKSkpO3JldHVybiB0aGlzfSx0LnJvdW5kPWZ1bmN0aW9uIHQoZSl7cmV0dXJuIG5ldyBuKGUpLnJvdW5kKCl9LHQucHJvdG90eXBlLnNpZ249ZnVuY3Rpb24gdCgpe2ZvcihsZXQgdD0wO3Q8dGhpcy5yb3dzO3QrKylmb3IobGV0IG49MDtuPHRoaXMuY29sdW1ucztuKyspdGhpcy5zZXQodCxuLE1hdGguc2lnbih0aGlzLmdldCh0LG4pKSk7cmV0dXJuIHRoaXN9LHQuc2lnbj1mdW5jdGlvbiB0KGUpe3JldHVybiBuZXcgbihlKS5zaWduKCl9LHQucHJvdG90eXBlLnNpbj1mdW5jdGlvbiB0KCl7Zm9yKGxldCB0PTA7dDx0aGlzLnJvd3M7dCsrKWZvcihsZXQgbj0wO248dGhpcy5jb2x1bW5zO24rKyl0aGlzLnNldCh0LG4sTWF0aC5zaW4odGhpcy5nZXQodCxuKSkpO3JldHVybiB0aGlzfSx0LnNpbj1mdW5jdGlvbiB0KGUpe3JldHVybiBuZXcgbihlKS5zaW4oKX0sdC5wcm90b3R5cGUuc2luaD1mdW5jdGlvbiB0KCl7Zm9yKGxldCB0PTA7dDx0aGlzLnJvd3M7dCsrKWZvcihsZXQgbj0wO248dGhpcy5jb2x1bW5zO24rKyl0aGlzLnNldCh0LG4sTWF0aC5zaW5oKHRoaXMuZ2V0KHQsbikpKTtyZXR1cm4gdGhpc30sdC5zaW5oPWZ1bmN0aW9uIHQoZSl7cmV0dXJuIG5ldyBuKGUpLnNpbmgoKX0sdC5wcm90b3R5cGUuc3FydD1mdW5jdGlvbiB0KCl7Zm9yKGxldCB0PTA7dDx0aGlzLnJvd3M7dCsrKWZvcihsZXQgbj0wO248dGhpcy5jb2x1bW5zO24rKyl0aGlzLnNldCh0LG4sTWF0aC5zcXJ0KHRoaXMuZ2V0KHQsbikpKTtyZXR1cm4gdGhpc30sdC5zcXJ0PWZ1bmN0aW9uIHQoZSl7cmV0dXJuIG5ldyBuKGUpLnNxcnQoKX0sdC5wcm90b3R5cGUudGFuPWZ1bmN0aW9uIHQoKXtmb3IobGV0IHQ9MDt0PHRoaXMucm93czt0KyspZm9yKGxldCBuPTA7bjx0aGlzLmNvbHVtbnM7bisrKXRoaXMuc2V0KHQsbixNYXRoLnRhbih0aGlzLmdldCh0LG4pKSk7cmV0dXJuIHRoaXN9LHQudGFuPWZ1bmN0aW9uIHQoZSl7cmV0dXJuIG5ldyBuKGUpLnRhbigpfSx0LnByb3RvdHlwZS50YW5oPWZ1bmN0aW9uIHQoKXtmb3IobGV0IHQ9MDt0PHRoaXMucm93czt0KyspZm9yKGxldCBuPTA7bjx0aGlzLmNvbHVtbnM7bisrKXRoaXMuc2V0KHQsbixNYXRoLnRhbmgodGhpcy5nZXQodCxuKSkpO3JldHVybiB0aGlzfSx0LnRhbmg9ZnVuY3Rpb24gdChlKXtyZXR1cm4gbmV3IG4oZSkudGFuaCgpfSx0LnByb3RvdHlwZS50cnVuYz1mdW5jdGlvbiB0KCl7Zm9yKGxldCB0PTA7dDx0aGlzLnJvd3M7dCsrKWZvcihsZXQgbj0wO248dGhpcy5jb2x1bW5zO24rKyl0aGlzLnNldCh0LG4sTWF0aC50cnVuYyh0aGlzLmdldCh0LG4pKSk7cmV0dXJuIHRoaXN9LHQudHJ1bmM9ZnVuY3Rpb24gdChlKXtyZXR1cm4gbmV3IG4oZSkudHJ1bmMoKX0sdC5wb3c9ZnVuY3Rpb24gdChlLGEpe3JldHVybiBuZXcgbihlKS5wb3coYSl9LHQucHJvdG90eXBlLnBvdz1mdW5jdGlvbiB0KG4pe3JldHVybiJudW1iZXIiPT10eXBlb2Ygbj90aGlzLnBvd1Mobik6dGhpcy5wb3dNKG4pfSx0LnByb3RvdHlwZS5wb3dTPWZ1bmN0aW9uIHQobil7Zm9yKGxldCB0PTA7dDx0aGlzLnJvd3M7dCsrKWZvcihsZXQgZT0wO2U8dGhpcy5jb2x1bW5zO2UrKyl0aGlzLnNldCh0LGUsTWF0aC5wb3codGhpcy5nZXQodCxlKSxuKSk7cmV0dXJuIHRoaXN9LHQucHJvdG90eXBlLnBvd009ZnVuY3Rpb24gdChlKXtpZihlPW4uY2hlY2tNYXRyaXgoZSksdGhpcy5yb3dzIT09ZS5yb3dzfHx0aGlzLmNvbHVtbnMhPT1lLmNvbHVtbnMpdGhyb3cgbmV3IFJhbmdlRXJyb3IoIk1hdHJpY2VzIGRpbWVuc2lvbnMgbXVzdCBiZSBlcXVhbCIpO2ZvcihsZXQgdD0wO3Q8dGhpcy5yb3dzO3QrKylmb3IobGV0IG49MDtuPHRoaXMuY29sdW1ucztuKyspdGhpcy5zZXQodCxuLE1hdGgucG93KHRoaXMuZ2V0KHQsbiksZS5nZXQodCxuKSkpO3JldHVybiB0aGlzfX0pKGN1dCxtdXQpO2NsYXNzIGd1dCBleHRlbmRzIGN1dHtjb25zdHJ1Y3Rvcih0KXtzdXBlcigpLHRoaXMuZGF0YT10LHRoaXMucm93cz10Lmxlbmd0aCx0aGlzLmNvbHVtbnM9dFswXS5sZW5ndGh9c2V0KHQsbixlKXtyZXR1cm4gdGhpcy5kYXRhW3RdW25dPWUsdGhpc31nZXQodCxuKXtyZXR1cm4gdGhpcy5kYXRhW3RdW25dfX1jbGFzcyBwdXR7Y29uc3RydWN0b3IodCl7bGV0IG4sZSxhLG8scixpLGMscyxsLG09KHQ9Z3V0LmNoZWNrTWF0cml4KHQpKS5jbG9uZSgpLGQ9bS5yb3dzLGc9bS5jb2x1bW5zLHA9bmV3IEZsb2F0NjRBcnJheShkKSxiPTE7Zm9yKG49MDtuPGQ7bisrKXBbbl09bjtmb3Iocz1uZXcgRmxvYXQ2NEFycmF5KGQpLGU9MDtlPGc7ZSsrKXtmb3Iobj0wO248ZDtuKyspc1tuXT1tLmdldChuLGUpO2ZvcihuPTA7bjxkO24rKyl7Zm9yKGw9TWF0aC5taW4obixlKSxyPTAsYT0wO2E8bDthKyspcis9bS5nZXQobixhKSpzW2FdO3Nbbl0tPXIsbS5zZXQobixlLHNbbl0pfWZvcihvPWUsbj1lKzE7bjxkO24rKylNYXRoLmFicyhzW25dKT5NYXRoLmFicyhzW29dKSYmKG89bik7aWYobyE9PWUpe2ZvcihhPTA7YTxnO2ErKylpPW0uZ2V0KG8sYSksbS5zZXQobyxhLG0uZ2V0KGUsYSkpLG0uc2V0KGUsYSxpKTtjPXBbb10scFtvXT1wW2VdLHBbZV09YyxiPS1ifWlmKGU8ZCYmMCE9PW0uZ2V0KGUsZSkpZm9yKG49ZSsxO248ZDtuKyspbS5zZXQobixlLG0uZ2V0KG4sZSkvbS5nZXQoZSxlKSl9dGhpcy5MVT1tLHRoaXMucGl2b3RWZWN0b3I9cCx0aGlzLnBpdm90U2lnbj1ifWlzU2luZ3VsYXIoKXtsZXQgdD10aGlzLkxVLG49dC5jb2x1bW5zO2ZvcihsZXQgZT0wO2U8bjtlKyspaWYoMD09PXQuZ2V0KGUsZSkpcmV0dXJuITA7cmV0dXJuITF9c29sdmUodCl7dD1tdXQuY2hlY2tNYXRyaXgodCk7bGV0IG49dGhpcy5MVTtpZihuLnJvd3MhPT10LnJvd3MpdGhyb3cgbmV3IEVycm9yKCJJbnZhbGlkIG1hdHJpeCBkaW1lbnNpb25zIik7aWYodGhpcy5pc1Npbmd1bGFyKCkpdGhyb3cgbmV3IEVycm9yKCJMVSBtYXRyaXggaXMgc2luZ3VsYXIiKTtsZXQgZSxhLG8scj10LmNvbHVtbnMsaT10LnN1Yk1hdHJpeFJvdyh0aGlzLnBpdm90VmVjdG9yLDAsci0xKSxjPW4uY29sdW1ucztmb3Iobz0wO288YztvKyspZm9yKGU9bysxO2U8YztlKyspZm9yKGE9MDthPHI7YSsrKWkuc2V0KGUsYSxpLmdldChlLGEpLWkuZ2V0KG8sYSkqbi5nZXQoZSxvKSk7Zm9yKG89Yy0xO28+PTA7by0tKXtmb3IoYT0wO2E8cjthKyspaS5zZXQobyxhLGkuZ2V0KG8sYSkvbi5nZXQobyxvKSk7Zm9yKGU9MDtlPG87ZSsrKWZvcihhPTA7YTxyO2ErKylpLnNldChlLGEsaS5nZXQoZSxhKS1pLmdldChvLGEpKm4uZ2V0KGUsbykpfXJldHVybiBpfWdldCBkZXRlcm1pbmFudCgpe2xldCB0PXRoaXMuTFU7aWYoIXQuaXNTcXVhcmUoKSl0aHJvdyBuZXcgRXJyb3IoIk1hdHJpeCBtdXN0IGJlIHNxdWFyZSIpO2xldCBuPXRoaXMucGl2b3RTaWduLGU9dC5jb2x1bW5zO2ZvcihsZXQgYT0wO2E8ZTthKyspbio9dC5nZXQoYSxhKTtyZXR1cm4gbn1nZXQgbG93ZXJUcmlhbmd1bGFyTWF0cml4KCl7bGV0IHQ9dGhpcy5MVSxuPXQucm93cyxlPXQuY29sdW1ucyxhPW5ldyBtdXQobixlKTtmb3IobGV0IG89MDtvPG47bysrKWZvcihsZXQgbj0wO248ZTtuKyspYS5zZXQobyxuLG8+bj90LmdldChvLG4pOm89PT1uPzE6MCk7cmV0dXJuIGF9Z2V0IHVwcGVyVHJpYW5ndWxhck1hdHJpeCgpe2xldCB0PXRoaXMuTFUsbj10LnJvd3MsZT10LmNvbHVtbnMsYT1uZXcgbXV0KG4sZSk7Zm9yKGxldCBvPTA7bzxuO28rKylmb3IobGV0IG49MDtuPGU7bisrKWEuc2V0KG8sbixvPD1uP3QuZ2V0KG8sbik6MCk7cmV0dXJuIGF9Z2V0IHBpdm90UGVybXV0YXRpb25WZWN0b3IoKXtyZXR1cm4gQXJyYXkuZnJvbSh0aGlzLnBpdm90VmVjdG9yKX19ZnVuY3Rpb24gYnV0KHQsbil7bGV0IGU9MDtyZXR1cm4gTWF0aC5hYnModCk+TWF0aC5hYnMobik/KGU9bi90LE1hdGguYWJzKHQpKk1hdGguc3FydCgxK2UqZSkpOjAhPT1uPyhlPXQvbixNYXRoLmFicyhuKSpNYXRoLnNxcnQoMStlKmUpKTowfWNsYXNzIHV1dHtjb25zdHJ1Y3Rvcih0KXtsZXQgbixlLGEsbyxyPSh0PWd1dC5jaGVja01hdHJpeCh0KSkuY2xvbmUoKSxpPXQucm93cyxjPXQuY29sdW1ucyxzPW5ldyBGbG9hdDY0QXJyYXkoYyk7Zm9yKGE9MDthPGM7YSsrKXtsZXQgdD0wO2ZvcihuPWE7bjxpO24rKyl0PWJ1dCh0LHIuZ2V0KG4sYSkpO2lmKDAhPT10KXtmb3Ioci5nZXQoYSxhKTwwJiYodD0tdCksbj1hO248aTtuKyspci5zZXQobixhLHIuZ2V0KG4sYSkvdCk7Zm9yKHIuc2V0KGEsYSxyLmdldChhLGEpKzEpLGU9YSsxO2U8YztlKyspe2ZvcihvPTAsbj1hO248aTtuKyspbys9ci5nZXQobixhKSpyLmdldChuLGUpO2ZvcihvPS1vL3IuZ2V0KGEsYSksbj1hO248aTtuKyspci5zZXQobixlLHIuZ2V0KG4sZSkrbypyLmdldChuLGEpKX19c1thXT0tdH10aGlzLlFSPXIsdGhpcy5SZGlhZz1zfXNvbHZlKHQpe3Q9bXV0LmNoZWNrTWF0cml4KHQpO2xldCBuPXRoaXMuUVIsZT1uLnJvd3M7aWYodC5yb3dzIT09ZSl0aHJvdyBuZXcgRXJyb3IoIk1hdHJpeCByb3cgZGltZW5zaW9ucyBtdXN0IGFncmVlIik7aWYoIXRoaXMuaXNGdWxsUmFuaygpKXRocm93IG5ldyBFcnJvcigiTWF0cml4IGlzIHJhbmsgZGVmaWNpZW50Iik7bGV0IGEsbyxyLGksYz10LmNvbHVtbnMscz10LmNsb25lKCksbD1uLmNvbHVtbnM7Zm9yKHI9MDtyPGw7cisrKWZvcihvPTA7bzxjO28rKyl7Zm9yKGk9MCxhPXI7YTxlO2ErKylpKz1uLmdldChhLHIpKnMuZ2V0KGEsbyk7Zm9yKGk9LWkvbi5nZXQocixyKSxhPXI7YTxlO2ErKylzLnNldChhLG8scy5nZXQoYSxvKStpKm4uZ2V0KGEscikpfWZvcihyPWwtMTtyPj0wO3ItLSl7Zm9yKG89MDtvPGM7bysrKXMuc2V0KHIsbyxzLmdldChyLG8pL3RoaXMuUmRpYWdbcl0pO2ZvcihhPTA7YTxyO2ErKylmb3Iobz0wO288YztvKyspcy5zZXQoYSxvLHMuZ2V0KGEsbyktcy5nZXQocixvKSpuLmdldChhLHIpKX1yZXR1cm4gcy5zdWJNYXRyaXgoMCxsLTEsMCxjLTEpfWlzRnVsbFJhbmsoKXtsZXQgdD10aGlzLlFSLmNvbHVtbnM7Zm9yKGxldCBuPTA7bjx0O24rKylpZigwPT09dGhpcy5SZGlhZ1tuXSlyZXR1cm4hMTtyZXR1cm4hMH1nZXQgdXBwZXJUcmlhbmd1bGFyTWF0cml4KCl7bGV0IHQsbixlPXRoaXMuUVIsYT1lLmNvbHVtbnMsbz1uZXcgbXV0KGEsYSk7Zm9yKHQ9MDt0PGE7dCsrKWZvcihuPTA7bjxhO24rKylvLnNldCh0LG4sdDxuP2UuZ2V0KHQsbik6dD09PW4/dGhpcy5SZGlhZ1t0XTowKTtyZXR1cm4gb31nZXQgb3J0aG9nb25hbE1hdHJpeCgpe2xldCB0LG4sZSxhLG89dGhpcy5RUixyPW8ucm93cyxpPW8uY29sdW1ucyxjPW5ldyBtdXQocixpKTtmb3IoZT1pLTE7ZT49MDtlLS0pe2Zvcih0PTA7dDxyO3QrKyljLnNldCh0LGUsMCk7Zm9yKGMuc2V0KGUsZSwxKSxuPWU7bjxpO24rKylpZigwIT09by5nZXQoZSxlKSl7Zm9yKGE9MCx0PWU7dDxyO3QrKylhKz1vLmdldCh0LGUpKmMuZ2V0KHQsbik7Zm9yKGE9LWEvby5nZXQoZSxlKSx0PWU7dDxyO3QrKyljLnNldCh0LG4sYy5nZXQodCxuKSthKm8uZ2V0KHQsZSkpfX1yZXR1cm4gY319Y2xhc3MgZnV0e2NvbnN0cnVjdG9yKHQsbj17fSl7aWYoKHQ9Z3V0LmNoZWNrTWF0cml4KHQpKS5pc0VtcHR5KCkpdGhyb3cgbmV3IEVycm9yKCJNYXRyaXggbXVzdCBiZSBub24tZW1wdHkiKTtsZXQgZT10LnJvd3MsYT10LmNvbHVtbnM7Y29uc3R7Y29tcHV0ZUxlZnRTaW5ndWxhclZlY3RvcnM6bz0hMCxjb21wdXRlUmlnaHRTaW5ndWxhclZlY3RvcnM6cj0hMCxhdXRvVHJhbnNwb3NlOmk9ITF9PW47bGV0IGMscz1Cb29sZWFuKG8pLGw9Qm9vbGVhbihyKSxtPSExO2lmKGU8YSlpZihpKXtjPXQudHJhbnNwb3NlKCksZT1jLnJvd3MsYT1jLmNvbHVtbnMsbT0hMDtsZXQgbj1zO3M9bCxsPW59ZWxzZSBjPXQuY2xvbmUoKSxjb25zb2xlLndhcm4oIkNvbXB1dGluZyBTVkQgb24gYSBtYXRyaXggd2l0aCBtb3JlIGNvbHVtbnMgdGhhbiByb3dzLiBDb25zaWRlciBlbmFibGluZyBhdXRvVHJhbnNwb3NlIik7ZWxzZSBjPXQuY2xvbmUoKTtsZXQgZD1NYXRoLm1pbihlLGEpLGc9TWF0aC5taW4oZSsxLGEpLHA9bmV3IEZsb2F0NjRBcnJheShnKSxiPW5ldyBtdXQoZSxkKSx1PW5ldyBtdXQoYSxhKSxmPW5ldyBGbG9hdDY0QXJyYXkoYSksaD1uZXcgRmxvYXQ2NEFycmF5KGUpLF89bmV3IEZsb2F0NjRBcnJheShnKTtmb3IobGV0IHQ9MDt0PGc7dCsrKV9bdF09dDtsZXQgQz1NYXRoLm1pbihlLTEsYSksTT1NYXRoLm1heCgwLE1hdGgubWluKGEtMixlKSksTz1NYXRoLm1heChDLE0pO2ZvcihsZXQgdD0wO3Q8Tzt0Kyspe2lmKHQ8Qyl7cFt0XT0wO2ZvcihsZXQgbj10O248ZTtuKyspcFt0XT1idXQocFt0XSxjLmdldChuLHQpKTtpZigwIT09cFt0XSl7Yy5nZXQodCx0KTwwJiYocFt0XT0tcFt0XSk7Zm9yKGxldCBuPXQ7bjxlO24rKyljLnNldChuLHQsYy5nZXQobix0KS9wW3RdKTtjLnNldCh0LHQsYy5nZXQodCx0KSsxKX1wW3RdPS1wW3RdfWZvcihsZXQgbj10KzE7bjxhO24rKyl7aWYodDxDJiYwIT09cFt0XSl7bGV0IGE9MDtmb3IobGV0IG89dDtvPGU7bysrKWErPWMuZ2V0KG8sdCkqYy5nZXQobyxuKTthPS1hL2MuZ2V0KHQsdCk7Zm9yKGxldCBvPXQ7bzxlO28rKyljLnNldChvLG4sYy5nZXQobyxuKSthKmMuZ2V0KG8sdCkpfWZbbl09Yy5nZXQodCxuKX1pZihzJiZ0PEMpZm9yKGxldCBuPXQ7bjxlO24rKyliLnNldChuLHQsYy5nZXQobix0KSk7aWYodDxNKXtmW3RdPTA7Zm9yKGxldCBuPXQrMTtuPGE7bisrKWZbdF09YnV0KGZbdF0sZltuXSk7aWYoMCE9PWZbdF0pe2ZbdCsxXTwwJiYoZlt0XT0wLWZbdF0pO2ZvcihsZXQgbj10KzE7bjxhO24rKylmW25dLz1mW3RdO2ZbdCsxXSs9MX1pZihmW3RdPS1mW3RdLHQrMTxlJiYwIT09Zlt0XSl7Zm9yKGxldCBuPXQrMTtuPGU7bisrKWhbbl09MDtmb3IobGV0IG49dCsxO248ZTtuKyspZm9yKGxldCBlPXQrMTtlPGE7ZSsrKWhbbl0rPWZbZV0qYy5nZXQobixlKTtmb3IobGV0IG49dCsxO248YTtuKyspe2xldCBhPS1mW25dL2ZbdCsxXTtmb3IobGV0IG89dCsxO288ZTtvKyspYy5zZXQobyxuLGMuZ2V0KG8sbikrYSpoW29dKX19aWYobClmb3IobGV0IG49dCsxO248YTtuKyspdS5zZXQobix0LGZbbl0pfX1sZXQgUD1NYXRoLm1pbihhLGUrMSk7aWYoQzxhJiYocFtDXT1jLmdldChDLEMpKSxlPFAmJihwW1AtMV09MCksTSsxPFAmJihmW01dPWMuZ2V0KE0sUC0xKSksZltQLTFdPTAscyl7Zm9yKGxldCB0PUM7dDxkO3QrKyl7Zm9yKGxldCBuPTA7bjxlO24rKyliLnNldChuLHQsMCk7Yi5zZXQodCx0LDEpfWZvcihsZXQgdD1DLTE7dD49MDt0LS0paWYoMCE9PXBbdF0pe2ZvcihsZXQgbj10KzE7bjxkO24rKyl7bGV0IGE9MDtmb3IobGV0IG89dDtvPGU7bysrKWErPWIuZ2V0KG8sdCkqYi5nZXQobyxuKTthPS1hL2IuZ2V0KHQsdCk7Zm9yKGxldCBvPXQ7bzxlO28rKyliLnNldChvLG4sYi5nZXQobyxuKSthKmIuZ2V0KG8sdCkpfWZvcihsZXQgbj10O248ZTtuKyspYi5zZXQobix0LC1iLmdldChuLHQpKTtiLnNldCh0LHQsMStiLmdldCh0LHQpKTtmb3IobGV0IG49MDtuPHQtMTtuKyspYi5zZXQobix0LDApfWVsc2V7Zm9yKGxldCBuPTA7bjxlO24rKyliLnNldChuLHQsMCk7Yi5zZXQodCx0LDEpfX1pZihsKWZvcihsZXQgdD1hLTE7dD49MDt0LS0pe2lmKHQ8TSYmMCE9PWZbdF0pZm9yKGxldCBuPXQrMTtuPGE7bisrKXtsZXQgZT0wO2ZvcihsZXQgbz10KzE7bzxhO28rKyllKz11LmdldChvLHQpKnUuZ2V0KG8sbik7ZT0tZS91LmdldCh0KzEsdCk7Zm9yKGxldCBvPXQrMTtvPGE7bysrKXUuc2V0KG8sbix1LmdldChvLG4pK2UqdS5nZXQobyx0KSl9Zm9yKGxldCBuPTA7bjxhO24rKyl1LnNldChuLHQsMCk7dS5zZXQodCx0LDEpfWxldCB4PVAtMSx5PU51bWJlci5FUFNJTE9OO2Zvcig7UD4wOyl7bGV0IHQsbjtmb3IodD1QLTI7dD49LTEmJi0xIT09dDt0LS0pe2NvbnN0IG49TnVtYmVyLk1JTl9WQUxVRSt5Kk1hdGguYWJzKHBbdF0rTWF0aC5hYnMocFt0KzFdKSk7aWYoTWF0aC5hYnMoZlt0XSk8PW58fE51bWJlci5pc05hTihmW3RdKSl7Zlt0XT0wO2JyZWFrfX1pZih0PT09UC0yKW49NDtlbHNle2xldCBlO2ZvcihlPVAtMTtlPj10JiZlIT09dDtlLS0pe2xldCBuPShlIT09UD9NYXRoLmFicyhmW2VdKTowKSsoZSE9PXQrMT9NYXRoLmFicyhmW2UtMV0pOjApO2lmKE1hdGguYWJzKHBbZV0pPD15Km4pe3BbZV09MDticmVha319ZT09PXQ/bj0zOmU9PT1QLTE/bj0xOihuPTIsdD1lKX1zd2l0Y2godCsrLG4pe2Nhc2UgMTp7bGV0IG49ZltQLTJdO2ZbUC0yXT0wO2ZvcihsZXQgZT1QLTI7ZT49dDtlLS0pe2xldCBvPWJ1dChwW2VdLG4pLHI9cFtlXS9vLGk9bi9vO2lmKHBbZV09byxlIT09dCYmKG49LWkqZltlLTFdLGZbZS0xXT1yKmZbZS0xXSksbClmb3IobGV0IHQ9MDt0PGE7dCsrKW89cip1LmdldCh0LGUpK2kqdS5nZXQodCxQLTEpLHUuc2V0KHQsUC0xLC1pKnUuZ2V0KHQsZSkrcip1LmdldCh0LFAtMSkpLHUuc2V0KHQsZSxvKX1icmVha31jYXNlIDI6e2xldCBuPWZbdC0xXTtmW3QtMV09MDtmb3IobGV0IGE9dDthPFA7YSsrKXtsZXQgbz1idXQocFthXSxuKSxyPXBbYV0vbyxpPW4vbztpZihwW2FdPW8sbj0taSpmW2FdLGZbYV09cipmW2FdLHMpZm9yKGxldCBuPTA7bjxlO24rKylvPXIqYi5nZXQobixhKStpKmIuZ2V0KG4sdC0xKSxiLnNldChuLHQtMSwtaSpiLmdldChuLGEpK3IqYi5nZXQobix0LTEpKSxiLnNldChuLGEsbyl9YnJlYWt9Y2FzZSAzOntjb25zdCBuPU1hdGgubWF4KE1hdGguYWJzKHBbUC0xXSksTWF0aC5hYnMocFtQLTJdKSxNYXRoLmFicyhmW1AtMl0pLE1hdGguYWJzKHBbdF0pLE1hdGguYWJzKGZbdF0pKSxvPXBbUC0xXS9uLHI9cFtQLTJdL24saT1mW1AtMl0vbixjPXBbdF0vbixtPWZbdF0vbixkPSgocitvKSooci1vKStpKmkpLzIsZz1vKmkqKG8qaSk7bGV0IGg9MDswPT09ZCYmMD09PWd8fChoPWQ8MD8wLU1hdGguc3FydChkKmQrZyk6TWF0aC5zcXJ0KGQqZCtnKSxoPWcvKGQraCkpO2xldCBfPShjK28pKihjLW8pK2gsQz1jKm07Zm9yKGxldCBuPXQ7bjxQLTE7bisrKXtsZXQgbz1idXQoXyxDKTswPT09byYmKG89TnVtYmVyLk1JTl9WQUxVRSk7bGV0IHI9Xy9vLGk9Qy9vO2lmKG4hPT10JiYoZltuLTFdPW8pLF89cipwW25dK2kqZltuXSxmW25dPXIqZltuXS1pKnBbbl0sQz1pKnBbbisxXSxwW24rMV09cipwW24rMV0sbClmb3IobGV0IHQ9MDt0PGE7dCsrKW89cip1LmdldCh0LG4pK2kqdS5nZXQodCxuKzEpLHUuc2V0KHQsbisxLC1pKnUuZ2V0KHQsbikrcip1LmdldCh0LG4rMSkpLHUuc2V0KHQsbixvKTtpZihvPWJ1dChfLEMpLDA9PT1vJiYobz1OdW1iZXIuTUlOX1ZBTFVFKSxyPV8vbyxpPUMvbyxwW25dPW8sXz1yKmZbbl0raSpwW24rMV0scFtuKzFdPS1pKmZbbl0rcipwW24rMV0sQz1pKmZbbisxXSxmW24rMV09cipmW24rMV0scyYmbjxlLTEpZm9yKGxldCB0PTA7dDxlO3QrKylvPXIqYi5nZXQodCxuKStpKmIuZ2V0KHQsbisxKSxiLnNldCh0LG4rMSwtaSpiLmdldCh0LG4pK3IqYi5nZXQodCxuKzEpKSxiLnNldCh0LG4sbyl9ZltQLTJdPV87YnJlYWt9Y2FzZSA0OmlmKHBbdF08PTAmJihwW3RdPXBbdF08MD8tcFt0XTowLGwpKWZvcihsZXQgbj0wO248PXg7bisrKXUuc2V0KG4sdCwtdS5nZXQobix0KSk7Zm9yKDt0PHgmJiEocFt0XT49cFt0KzFdKTspe2xldCBuPXBbdF07aWYocFt0XT1wW3QrMV0scFt0KzFdPW4sbCYmdDxhLTEpZm9yKGxldCBlPTA7ZTxhO2UrKyluPXUuZ2V0KGUsdCsxKSx1LnNldChlLHQrMSx1LmdldChlLHQpKSx1LnNldChlLHQsbik7aWYocyYmdDxlLTEpZm9yKGxldCBhPTA7YTxlO2ErKyluPWIuZ2V0KGEsdCsxKSxiLnNldChhLHQrMSxiLmdldChhLHQpKSxiLnNldChhLHQsbik7dCsrfVAtLX19aWYobSl7bGV0IHQ9dTt1PWIsYj10fXRoaXMubT1lLHRoaXMubj1hLHRoaXMucz1wLHRoaXMuVT1iLHRoaXMuVj11fXNvbHZlKHQpe2xldCBuPXQsZT10aGlzLnRocmVzaG9sZCxhPXRoaXMucy5sZW5ndGgsbz1tdXQuemVyb3MoYSxhKTtmb3IobGV0IHQ9MDt0PGE7dCsrKU1hdGguYWJzKHRoaXMuc1t0XSk8PWU/by5zZXQodCx0LDApOm8uc2V0KHQsdCwxL3RoaXMuc1t0XSk7bGV0IHI9dGhpcy5VLGk9dGhpcy5yaWdodFNpbmd1bGFyVmVjdG9ycyxjPWkubW11bChvKSxzPWkucm93cyxsPXIucm93cyxtPW11dC56ZXJvcyhzLGwpO2ZvcihsZXQgdD0wO3Q8czt0KyspZm9yKGxldCBuPTA7bjxsO24rKyl7bGV0IGU9MDtmb3IobGV0IG89MDtvPGE7bysrKWUrPWMuZ2V0KHQsbykqci5nZXQobixvKTttLnNldCh0LG4sZSl9cmV0dXJuIG0ubW11bChuKX1zb2x2ZUZvckRpYWdvbmFsKHQpe3JldHVybiB0aGlzLnNvbHZlKG11dC5kaWFnKHQpKX1pbnZlcnNlKCl7bGV0IHQ9dGhpcy5WLG49dGhpcy50aHJlc2hvbGQsZT10LnJvd3MsYT10LmNvbHVtbnMsbz1uZXcgbXV0KGUsdGhpcy5zLmxlbmd0aCk7Zm9yKGxldCByPTA7cjxlO3IrKylmb3IobGV0IGU9MDtlPGE7ZSsrKU1hdGguYWJzKHRoaXMuc1tlXSk+biYmby5zZXQocixlLHQuZ2V0KHIsZSkvdGhpcy5zW2VdKTtsZXQgcj10aGlzLlUsaT1yLnJvd3MsYz1yLmNvbHVtbnMscz1uZXcgbXV0KGUsaSk7Zm9yKGxldCB0PTA7dDxlO3QrKylmb3IobGV0IG49MDtuPGk7bisrKXtsZXQgZT0wO2ZvcihsZXQgYT0wO2E8YzthKyspZSs9by5nZXQodCxhKSpyLmdldChuLGEpO3Muc2V0KHQsbixlKX1yZXR1cm4gc31nZXQgY29uZGl0aW9uKCl7cmV0dXJuIHRoaXMuc1swXS90aGlzLnNbTWF0aC5taW4odGhpcy5tLHRoaXMubiktMV19Z2V0IG5vcm0yKCl7cmV0dXJuIHRoaXMuc1swXX1nZXQgcmFuaygpe2xldCB0PU1hdGgubWF4KHRoaXMubSx0aGlzLm4pKnRoaXMuc1swXSpOdW1iZXIuRVBTSUxPTixuPTAsZT10aGlzLnM7Zm9yKGxldCBhPTAsbz1lLmxlbmd0aDthPG87YSsrKWVbYV0+dCYmbisrO3JldHVybiBufWdldCBkaWFnb25hbCgpe3JldHVybiBBcnJheS5mcm9tKHRoaXMucyl9Z2V0IHRocmVzaG9sZCgpe3JldHVybiBOdW1iZXIuRVBTSUxPTi8yKk1hdGgubWF4KHRoaXMubSx0aGlzLm4pKnRoaXMuc1swXX1nZXQgbGVmdFNpbmd1bGFyVmVjdG9ycygpe3JldHVybiB0aGlzLlV9Z2V0IHJpZ2h0U2luZ3VsYXJWZWN0b3JzKCl7cmV0dXJuIHRoaXMuVn1nZXQgZGlhZ29uYWxNYXRyaXgoKXtyZXR1cm4gbXV0LmRpYWcodGhpcy5zKX19ZnVuY3Rpb24gaHV0KHQsbixlLGEsbyl7bGV0IHI9bXV0LmV5ZShuLmxlbmd0aCxuLmxlbmd0aCxlKmEqYSk7Y29uc3QgaT1vKG4pO2xldCBjPW5ldyBGbG9hdDY0QXJyYXkodC54Lmxlbmd0aCk7Zm9yKGxldCBuPTA7bjx0LngubGVuZ3RoO24rKyljW25dPWkodC54W25dKTtsZXQgcz0oZnVuY3Rpb24gbCh0LG4sZSxhLG8pe2NvbnN0IHI9ZS5sZW5ndGgsaT10LngubGVuZ3RoO2xldCBjPW5ldyBBcnJheShyKTtmb3IobGV0IHM9MDtzPHI7cysrKXtjW3NdPW5ldyBBcnJheShpKTtsZXQgcj1lLnNsaWNlKCk7cltzXSs9YTtsZXQgbD1vKHIpO2ZvcihsZXQgZT0wO2U8aTtlKyspY1tzXVtlXT1uW2VdLWwodC54W2VdKX1yZXR1cm4gbmV3IG11dChjKX0pKHQsYyxuLGEsbyksbT0oZnVuY3Rpb24gZCh0LG4pe2NvbnN0IGU9dC54Lmxlbmd0aDtsZXQgYT1uZXcgQXJyYXkoZSk7Zm9yKGxldCBvPTA7bzxlO28rKylhW29dPVt0Lnlbb10tbltvXV07cmV0dXJuIG5ldyBtdXQoYSl9KSh0LGMpLGc9KGZ1bmN0aW9uIHAodCxuPSExKXtyZXR1cm4gdD1ndXQuY2hlY2tNYXRyaXgodCksbj9uZXcgZnV0KHQpLmludmVyc2UoKTooZnVuY3Rpb24gZSh0LG4sYT0hMSl7cmV0dXJuIHQ9Z3V0LmNoZWNrTWF0cml4KHQpLG49Z3V0LmNoZWNrTWF0cml4KG4pLGE/bmV3IGZ1dCh0KS5zb2x2ZShuKTp0LmlzU3F1YXJlKCk/bmV3IHB1dCh0KS5zb2x2ZShuKTpuZXcgdXV0KHQpLnNvbHZlKG4pfSkodCxtdXQuZXllKHQucm93cykpfSkoci5hZGQocy5tbXVsKHMudHJhbnNwb3NlKCkpKSk7cmV0dXJuKG49KG49bmV3IG11dChbbl0pKS5zdWIoZy5tbXVsKHMpLm1tdWwobSkubXVsKGEpLnRyYW5zcG9zZSgpKSkudG8xREFycmF5KCl9dmFyIF91dD1rUChPYmplY3QuZnJlZXplKHtfX3Byb3RvX186bnVsbCxkZWZhdWx0OmZ1bmN0aW9uIEN1dCh0LG4sZT17fSl7bGV0e21heEl0ZXJhdGlvbnM6YT0xMDAsZ3JhZGllbnREaWZmZXJlbmNlOm89LjEsZGFtcGluZzpyPTAsZXJyb3JUb2xlcmFuY2U6aT0uMDEsbWluVmFsdWVzOmMsbWF4VmFsdWVzOnMsaW5pdGlhbFZhbHVlczpsfT1lO2lmKHI8PTApdGhyb3cgbmV3IEVycm9yKCJUaGUgZGFtcGluZyBvcHRpb24gbXVzdCBiZSBhIHBvc2l0aXZlIG51bWJlciIpO2lmKCF0Lnh8fCF0LnkpdGhyb3cgbmV3IEVycm9yKCJUaGUgZGF0YSBwYXJhbWV0ZXIgbXVzdCBoYXZlIHggYW5kIHkgZWxlbWVudHMiKTtpZighQmJ0KHQueCl8fHQueC5sZW5ndGg8Mnx8IUJidCh0LnkpfHx0LnkubGVuZ3RoPDIpdGhyb3cgbmV3IEVycm9yKCJUaGUgZGF0YSBwYXJhbWV0ZXIgZWxlbWVudHMgbXVzdCBiZSBhbiBhcnJheSB3aXRoIG1vcmUgdGhhbiAyIHBvaW50cyIpO2lmKHQueC5sZW5ndGghPT10LnkubGVuZ3RoKXRocm93IG5ldyBFcnJvcigiVGhlIGRhdGEgcGFyYW1ldGVyIGVsZW1lbnRzIG11c3QgaGF2ZSB0aGUgc2FtZSBzaXplIik7bGV0IG09bHx8bmV3IEFycmF5KG4ubGVuZ3RoKS5maWxsKDEpLGQ9bS5sZW5ndGg7aWYocz1zfHxuZXcgQXJyYXkoZCkuZmlsbChOdW1iZXIuTUFYX1NBRkVfSU5URUdFUiksYz1jfHxuZXcgQXJyYXkoZCkuZmlsbChOdW1iZXIuTUlOX1NBRkVfSU5URUdFUikscy5sZW5ndGghPT1jLmxlbmd0aCl0aHJvdyBuZXcgRXJyb3IoIm1pblZhbHVlcyBhbmQgbWF4VmFsdWVzIG11c3QgYmUgdGhlIHNhbWUgc2l6ZSIpO2lmKCFCYnQobSkpdGhyb3cgbmV3IEVycm9yKCJpbml0aWFsVmFsdWVzIG11c3QgYmUgYW4gYXJyYXkiKTtsZXQgZyxwPVZidCh0LG0sbiksYj1wPD1pO2ZvcihnPTA7ZzxhJiYhYjtnKyspe209aHV0KHQsbSxyLG8sbik7Zm9yKGxldCB0PTA7dDxkO3QrKyltW3RdPU1hdGgubWluKE1hdGgubWF4KGNbdF0sbVt0XSksc1t0XSk7aWYocD1WYnQodCxtLG4pLGlzTmFOKHApKWJyZWFrO2I9cDw9aX1yZXR1cm57cGFyYW1ldGVyVmFsdWVzOm0scGFyYW1ldGVyRXJyb3I6cCxpdGVyYXRpb25zOmd9fX0pKSxNdXQ9eVAoKGZ1bmN0aW9uKHQsbil7dmFyIGU9eFAmJnhQLl9fYXdhaXRlcnx8ZnVuY3Rpb24odCxuLGUsYSl7cmV0dXJuIG5ldyhlfHwoZT1Qcm9taXNlKSkoKGZ1bmN0aW9uKG8scil7ZnVuY3Rpb24gaSh0KXt0cnl7cyhhLm5leHQodCkpfWNhdGNoKHQpe3IodCl9fWZ1bmN0aW9uIGModCl7dHJ5e3MoYS50aHJvdyh0KSl9Y2F0Y2godCl7cih0KX19ZnVuY3Rpb24gcyh0KXt0LmRvbmU/byh0LnZhbHVlKTpuZXcgZSgoZnVuY3Rpb24obil7bih0LnZhbHVlKX0pKS50aGVuKGksYyl9cygoYT1hLmFwcGx5KHQsbnx8W10pKS5uZXh0KCkpfSkpfSxhPXhQJiZ4UC5fX2dlbmVyYXRvcnx8ZnVuY3Rpb24odCxuKXt2YXIgZSxhLG8scixpPXtsYWJlbDowLHNlbnQ6ZnVuY3Rpb24oKXtpZigxJm9bMF0pdGhyb3cgb1sxXTtyZXR1cm4gb1sxXX0sdHJ5czpbXSxvcHM6W119O3JldHVybiByPXtuZXh0OmMoMCksdGhyb3c6YygxKSxyZXR1cm46YygyKX0sImZ1bmN0aW9uIj09dHlwZW9mIFN5bWJvbCYmKHJbU3ltYm9sLml0ZXJhdG9yXT1mdW5jdGlvbigpe3JldHVybiB0aGlzfSkscjtmdW5jdGlvbiBjKHIpe3JldHVybiBmdW5jdGlvbihjKXtyZXR1cm4oZnVuY3Rpb24gcyhyKXtpZihlKXRocm93IG5ldyBUeXBlRXJyb3IoIkdlbmVyYXRvciBpcyBhbHJlYWR5IGV4ZWN1dGluZy4iKTtmb3IoO2k7KXRyeXtpZihlPTEsYSYmKG89MiZyWzBdP2EucmV0dXJuOnJbMF0/YS50aHJvd3x8KChvPWEucmV0dXJuKSYmby5jYWxsKGEpLDApOmEubmV4dCkmJiEobz1vLmNhbGwoYSxyWzFdKSkuZG9uZSlyZXR1cm4gbztzd2l0Y2goYT0wLG8mJihyPVsyJnJbMF0sby52YWx1ZV0pLHJbMF0pe2Nhc2UgMDpjYXNlIDE6bz1yO2JyZWFrO2Nhc2UgNDpyZXR1cm4gaS5sYWJlbCsrLHt2YWx1ZTpyWzFdLGRvbmU6ITF9O2Nhc2UgNTppLmxhYmVsKyssYT1yWzFdLHI9WzBdO2NvbnRpbnVlO2Nhc2UgNzpyPWkub3BzLnBvcCgpLGkudHJ5cy5wb3AoKTtjb250aW51ZTtkZWZhdWx0OmlmKCEoKG89KG89aS50cnlzKS5sZW5ndGg+MCYmb1tvLmxlbmd0aC0xXSl8fDYhPT1yWzBdJiYyIT09clswXSkpe2k9MDtjb250aW51ZX1pZigzPT09clswXSYmKCFvfHxyWzFdPm9bMF0mJnJbMV08b1szXSkpe2kubGFiZWw9clsxXTticmVha31pZig2PT09clswXSYmaS5sYWJlbDxvWzFdKXtpLmxhYmVsPW9bMV0sbz1yO2JyZWFrfWlmKG8mJmkubGFiZWw8b1syXSl7aS5sYWJlbD1vWzJdLGkub3BzLnB1c2gocik7YnJlYWt9b1syXSYmaS5vcHMucG9wKCksaS50cnlzLnBvcCgpO2NvbnRpbnVlfXI9bi5jYWxsKHQsaSl9Y2F0Y2godCl7cj1bNix0XSxhPTB9ZmluYWxseXtlPW89MH1pZig1JnJbMF0pdGhyb3cgclsxXTtyZXR1cm57dmFsdWU6clswXT9yWzFdOnZvaWQgMCxkb25lOiEwfX0pKFtyLGNdKX19fSxvPXhQJiZ4UC5fX3JlYWR8fGZ1bmN0aW9uKHQsbil7dmFyIGU9ImZ1bmN0aW9uIj09dHlwZW9mIFN5bWJvbCYmdFtTeW1ib2wuaXRlcmF0b3JdO2lmKCFlKXJldHVybiB0O3ZhciBhLG8scj1lLmNhbGwodCksaT1bXTt0cnl7Zm9yKDsodm9pZCAwPT09bnx8bi0tID4wKSYmIShhPXIubmV4dCgpKS5kb25lOylpLnB1c2goYS52YWx1ZSl9Y2F0Y2godCl7bz17ZXJyb3I6dH19ZmluYWxseXt0cnl7YSYmIWEuZG9uZSYmKGU9ci5yZXR1cm4pJiZlLmNhbGwocil9ZmluYWxseXtpZihvKXRocm93IG8uZXJyb3J9fXJldHVybiBpfSxyPXhQJiZ4UC5fX3NwcmVhZHx8ZnVuY3Rpb24oKXtmb3IodmFyIHQ9W10sbj0wO248YXJndW1lbnRzLmxlbmd0aDtuKyspdD10LmNvbmNhdChvKGFyZ3VtZW50c1tuXSkpO3JldHVybiB0fSxpPXhQJiZ4UC5fX2ltcG9ydFN0YXJ8fGZ1bmN0aW9uKHQpe2lmKHQmJnQuX19lc01vZHVsZSlyZXR1cm4gdDt2YXIgbj17fTtpZihudWxsIT10KWZvcih2YXIgZSBpbiB0KU9iamVjdC5oYXNPd25Qcm9wZXJ0eS5jYWxsKHQsZSkmJihuW2VdPXRbZV0pO3JldHVybiBuLmRlZmF1bHQ9dCxufSxjPXhQJiZ4UC5fX2ltcG9ydERlZmF1bHR8fGZ1bmN0aW9uKHQpe3JldHVybiB0JiZ0Ll9fZXNNb2R1bGU/dDp7ZGVmYXVsdDp0fX07T2JqZWN0LmRlZmluZVByb3BlcnR5KG4sIl9fZXNNb2R1bGUiLHt2YWx1ZTohMH0pO3ZhciBzPWkoSWJ0KSxsPWkoTmJ0KSxtPWkoTGJ0KSxkPWkoRmJ0KSxnPWkoRGJ0KSxwPWMoX3V0KSxiPTFlLTUsdT0uMDAxLGY9KGZ1bmN0aW9uKCl7ZnVuY3Rpb24gdCh0KXt2b2lkIDA9PT10JiYodD17fSk7dmFyIG49dGhpczt0aGlzLmxlYXJuaW5nUmF0ZT0xLHRoaXMubG9jYWxDb25uZWN0aXZpdHk9MSx0aGlzLm1pbkRpc3Q9LjEsdGhpcy5uQ29tcG9uZW50cz0yLHRoaXMubkVwb2Nocz0wLHRoaXMubk5laWdoYm9ycz0xNSx0aGlzLm5lZ2F0aXZlU2FtcGxlUmF0ZT01LHRoaXMucmFuZG9tPU1hdGgucmFuZG9tLHRoaXMucmVwdWxzaW9uU3RyZW5ndGg9MSx0aGlzLnNldE9wTWl4UmF0aW89MSx0aGlzLnNwcmVhZD0xLHRoaXMudHJhbnNmb3JtUXVldWVTaXplPTQsdGhpcy50YXJnZXRNZXRyaWM9ImNhdGVnb3JpY2FsIix0aGlzLnRhcmdldFdlaWdodD0uNSx0aGlzLnRhcmdldE5OZWlnaGJvcnM9dGhpcy5uTmVpZ2hib3JzLHRoaXMuZGlzdGFuY2VGbj1oLHRoaXMuaXNJbml0aWFsaXplZD0hMSx0aGlzLnJwRm9yZXN0PVtdLHRoaXMuZW1iZWRkaW5nPVtdLHRoaXMub3B0aW1pemF0aW9uU3RhdGU9bmV3IEM7dmFyIGU9ZnVuY3Rpb24oZSl7dm9pZCAwIT09dFtlXSYmKG5bZV09dFtlXSl9O2UoImRpc3RhbmNlRm4iKSxlKCJsZWFybmluZ1JhdGUiKSxlKCJsb2NhbENvbm5lY3Rpdml0eSIpLGUoIm1pbkRpc3QiKSxlKCJuQ29tcG9uZW50cyIpLGUoIm5FcG9jaHMiKSxlKCJuTmVpZ2hib3JzIiksZSgibmVnYXRpdmVTYW1wbGVSYXRlIiksZSgicmFuZG9tIiksZSgicmVwdWxzaW9uU3RyZW5ndGgiKSxlKCJzZXRPcE1peFJhdGlvIiksZSgic3ByZWFkIiksZSgidHJhbnNmb3JtUXVldWVTaXplIil9cmV0dXJuIHQucHJvdG90eXBlLmZpdD1mdW5jdGlvbih0KXtyZXR1cm4gdGhpcy5pbml0aWFsaXplRml0KHQpLHRoaXMub3B0aW1pemVMYXlvdXQoKSx0aGlzLmVtYmVkZGluZ30sdC5wcm90b3R5cGUuZml0QXN5bmM9ZnVuY3Rpb24odCxuKXtyZXR1cm4gdm9pZCAwPT09biYmKG49ZnVuY3Rpb24oKXtyZXR1cm4hMH0pLGUodGhpcyx2b2lkIDAsdm9pZCAwLChmdW5jdGlvbigpe3JldHVybiBhKHRoaXMsKGZ1bmN0aW9uKGUpe3N3aXRjaChlLmxhYmVsKXtjYXNlIDA6cmV0dXJuIHRoaXMuaW5pdGlhbGl6ZUZpdCh0KSxbNCx0aGlzLm9wdGltaXplTGF5b3V0QXN5bmMobildO2Nhc2UgMTpyZXR1cm4gZS5zZW50KCksWzIsdGhpcy5lbWJlZGRpbmddfX0pKX0pKX0sdC5wcm90b3R5cGUuc2V0U3VwZXJ2aXNlZFByb2plY3Rpb249ZnVuY3Rpb24odCxuKXt2b2lkIDA9PT1uJiYobj17fSksdGhpcy5ZPXQsdGhpcy50YXJnZXRNZXRyaWM9bi50YXJnZXRNZXRyaWN8fHRoaXMudGFyZ2V0TWV0cmljLHRoaXMudGFyZ2V0V2VpZ2h0PW4udGFyZ2V0V2VpZ2h0fHx0aGlzLnRhcmdldFdlaWdodCx0aGlzLnRhcmdldE5OZWlnaGJvcnM9bi50YXJnZXROTmVpZ2hib3JzfHx0aGlzLnRhcmdldE5OZWlnaGJvcnN9LHQucHJvdG90eXBlLnNldFByZWNvbXB1dGVkS05OPWZ1bmN0aW9uKHQsbil7dGhpcy5rbm5JbmRpY2VzPXQsdGhpcy5rbm5EaXN0YW5jZXM9bn0sdC5wcm90b3R5cGUuaW5pdGlhbGl6ZUZpdD1mdW5jdGlvbih0KXtpZih0Lmxlbmd0aDw9dGhpcy5uTmVpZ2hib3JzKXRocm93IG5ldyBFcnJvcigiTm90IGVub3VnaCBkYXRhIHBvaW50cyAoIit0Lmxlbmd0aCsiKSB0byBjcmVhdGUgbk5laWdoYm9yczogIit0aGlzLm5OZWlnaGJvcnMrIi4gIEFkZCBtb3JlIGRhdGEgcG9pbnRzIG9yIGFkanVzdCB0aGUgY29uZmlndXJhdGlvbi4iKTtpZih0aGlzLlg9PT10JiZ0aGlzLmlzSW5pdGlhbGl6ZWQpcmV0dXJuIHRoaXMuZ2V0TkVwb2NocygpO2lmKHRoaXMuWD10LCF0aGlzLmtubkluZGljZXMmJiF0aGlzLmtubkRpc3RhbmNlcyl7dmFyIG49dGhpcy5uZWFyZXN0TmVpZ2hib3JzKHQpO3RoaXMua25uSW5kaWNlcz1uLmtubkluZGljZXMsdGhpcy5rbm5EaXN0YW5jZXM9bi5rbm5EaXN0YW5jZXN9dGhpcy5ncmFwaD10aGlzLmZ1enp5U2ltcGxpY2lhbFNldCh0LHRoaXMubk5laWdoYm9ycyx0aGlzLnNldE9wTWl4UmF0aW8pLHRoaXMubWFrZVNlYXJjaEZucygpLHRoaXMuc2VhcmNoR3JhcGg9dGhpcy5tYWtlU2VhcmNoR3JhcGgodCksdGhpcy5wcm9jZXNzR3JhcGhGb3JTdXBlcnZpc2VkUHJvamVjdGlvbigpO3ZhciBlPXRoaXMuaW5pdGlhbGl6ZVNpbXBsaWNpYWxTZXRFbWJlZGRpbmcoKSxhPWUudGFpbCxvPWUuZXBvY2hzUGVyU2FtcGxlO3JldHVybiB0aGlzLm9wdGltaXphdGlvblN0YXRlLmhlYWQ9ZS5oZWFkLHRoaXMub3B0aW1pemF0aW9uU3RhdGUudGFpbD1hLHRoaXMub3B0aW1pemF0aW9uU3RhdGUuZXBvY2hzUGVyU2FtcGxlPW8sdGhpcy5pbml0aWFsaXplT3B0aW1pemF0aW9uKCksdGhpcy5wcmVwYXJlRm9yT3B0aW1pemF0aW9uTG9vcCgpLHRoaXMuaXNJbml0aWFsaXplZD0hMCx0aGlzLmdldE5FcG9jaHMoKX0sdC5wcm90b3R5cGUubWFrZVNlYXJjaEZucz1mdW5jdGlvbigpe3ZhciB0PW0ubWFrZUluaXRpYWxpemF0aW9ucyh0aGlzLmRpc3RhbmNlRm4pLG49dC5pbml0RnJvbVJhbmRvbTt0aGlzLmluaXRGcm9tVHJlZT10LmluaXRGcm9tVHJlZSx0aGlzLmluaXRGcm9tUmFuZG9tPW4sdGhpcy5zZWFyY2g9bS5tYWtlSW5pdGlhbGl6ZWROTlNlYXJjaCh0aGlzLmRpc3RhbmNlRm4pfSx0LnByb3RvdHlwZS5tYWtlU2VhcmNoR3JhcGg9ZnVuY3Rpb24odCl7Zm9yKHZhciBuPXRoaXMua25uSW5kaWNlcyxlPXRoaXMua25uRGlzdGFuY2VzLGE9bmV3IGwuU3BhcnNlTWF0cml4KFtdLFtdLFtdLFt0Lmxlbmd0aCx0Lmxlbmd0aF0pLG89MDtvPG4ubGVuZ3RoO28rKylmb3IodmFyIHI9bltvXSxpPWVbb10sYz0wO2M8ci5sZW5ndGg7YysrKXt2YXIgcz1pW2NdO3M+MCYmYS5zZXQobyxyW2NdLHMpfXZhciBtPWwudHJhbnNwb3NlKGEpO3JldHVybiBsLm1heGltdW0oYSxtKX0sdC5wcm90b3R5cGUudHJhbnNmb3JtPWZ1bmN0aW9uKHQpe3ZhciBuPXRoaXMsZT10aGlzLlg7aWYodm9pZCAwPT09ZXx8MD09PWUubGVuZ3RoKXRocm93IG5ldyBFcnJvcigiTm8gZGF0YSBoYXMgYmVlbiBmaXQuIik7dmFyIGE9TWF0aC5mbG9vcih0aGlzLm5OZWlnaGJvcnMqdGhpcy50cmFuc2Zvcm1RdWV1ZVNpemUpO2E9TWF0aC5taW4oZS5sZW5ndGgsYSk7dmFyIG89bS5pbml0aWFsaXplU2VhcmNoKHRoaXMucnBGb3Jlc3QsZSx0LGEsdGhpcy5pbml0RnJvbVJhbmRvbSx0aGlzLmluaXRGcm9tVHJlZSx0aGlzLnJhbmRvbSkscj10aGlzLnNlYXJjaChlLHRoaXMuc2VhcmNoR3JhcGgsbyx0KSxpPXMuZGVoZWFwU29ydChyKSxjPWkuaW5kaWNlcyxkPWkud2VpZ2h0cztjPWMubWFwKChmdW5jdGlvbih0KXtyZXR1cm4gdC5zbGljZSgwLG4ubk5laWdoYm9ycyl9KSksZD1kLm1hcCgoZnVuY3Rpb24odCl7cmV0dXJuIHQuc2xpY2UoMCxuLm5OZWlnaGJvcnMpfSkpO3ZhciBwPU1hdGgubWF4KDAsdGhpcy5sb2NhbENvbm5lY3Rpdml0eS0xKSxiPXRoaXMuc21vb3RoS05ORGlzdGFuY2UoZCx0aGlzLm5OZWlnaGJvcnMscCksdT10aGlzLmNvbXB1dGVNZW1iZXJzaGlwU3RyZW5ndGhzKGMsZCxiLnNpZ21hcyxiLnJob3MpLGY9bmV3IGwuU3BhcnNlTWF0cml4KHUucm93cyx1LmNvbHMsdS52YWxzLFt0Lmxlbmd0aCxlLmxlbmd0aF0pLGg9bC5ub3JtYWxpemUoZiwibDEiKSxfPWwuZ2V0Q1NSKGgpLEM9dC5sZW5ndGgsTT1rKGcucmVzaGFwZTJkKF8uaW5kaWNlcyxDLHRoaXMubk5laWdoYm9ycyksZy5yZXNoYXBlMmQoXy52YWx1ZXMsQyx0aGlzLm5OZWlnaGJvcnMpLHRoaXMuZW1iZWRkaW5nKSxPPXRoaXMubkVwb2Nocz90aGlzLm5FcG9jaHMvMzpmLm5Sb3dzPD0xZTQ/MTAwOjMwLFA9Zi5nZXRWYWx1ZXMoKS5yZWR1Y2UoKGZ1bmN0aW9uKHQsbil7cmV0dXJuIG4+dD9uOnR9KSwwKTtmPWYubWFwKChmdW5jdGlvbih0KXtyZXR1cm4gdDxQL08/MDp0fSkpLGY9bC5lbGltaW5hdGVaZXJvcyhmKTt2YXIgeD10aGlzLm1ha2VFcG9jaHNQZXJTYW1wbGUoZi5nZXRWYWx1ZXMoKSxPKSx5PWYuZ2V0Um93cygpLHY9Zi5nZXRDb2xzKCk7cmV0dXJuIHRoaXMuYXNzaWduT3B0aW1pemF0aW9uU3RhdGVQYXJhbWV0ZXJzKHtoZWFkRW1iZWRkaW5nOk0sdGFpbEVtYmVkZGluZzp0aGlzLmVtYmVkZGluZyxoZWFkOnksdGFpbDp2LGN1cnJlbnRFcG9jaDowLG5FcG9jaHM6TyxuVmVydGljZXM6Zi5nZXREaW1zKClbMV0sZXBvY2hzUGVyU2FtcGxlOnh9KSx0aGlzLnByZXBhcmVGb3JPcHRpbWl6YXRpb25Mb29wKCksdGhpcy5vcHRpbWl6ZUxheW91dCgpfSx0LnByb3RvdHlwZS5wcm9jZXNzR3JhcGhGb3JTdXBlcnZpc2VkUHJvamVjdGlvbj1mdW5jdGlvbigpe3ZhciB0PXRoaXMuWTtpZih0KXtpZih0Lmxlbmd0aCE9PXRoaXMuWC5sZW5ndGgpdGhyb3cgbmV3IEVycm9yKCJMZW5ndGggb2YgWCBhbmQgeSBtdXN0IGJlIGVxdWFsIik7ImNhdGVnb3JpY2FsIj09PXRoaXMudGFyZ2V0TWV0cmljJiYodGhpcy5ncmFwaD10aGlzLmNhdGVnb3JpY2FsU2ltcGxpY2lhbFNldEludGVyc2VjdGlvbih0aGlzLmdyYXBoLHQsdGhpcy50YXJnZXRXZWlnaHQ8MT8xLygxLXRoaXMudGFyZ2V0V2VpZ2h0KSoyLjU6MWUxMikpfX0sdC5wcm90b3R5cGUuc3RlcD1mdW5jdGlvbigpe3ZhciB0PXRoaXMub3B0aW1pemF0aW9uU3RhdGUuY3VycmVudEVwb2NoO3JldHVybiB0PHRoaXMuZ2V0TkVwb2NocygpJiZ0aGlzLm9wdGltaXplTGF5b3V0U3RlcCh0KSx0aGlzLm9wdGltaXphdGlvblN0YXRlLmN1cnJlbnRFcG9jaH0sdC5wcm90b3R5cGUuZ2V0RW1iZWRkaW5nPWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuZW1iZWRkaW5nfSx0LnByb3RvdHlwZS5uZWFyZXN0TmVpZ2hib3JzPWZ1bmN0aW9uKHQpe3ZhciBuLGU9dGhpcy5uTmVpZ2hib3JzLGE9bS5tYWtlTk5EZXNjZW50KHRoaXMuZGlzdGFuY2VGbix0aGlzLnJhbmRvbSksbz01K01hdGguZmxvb3IoLjU9PShuPU1hdGgucG93KHQubGVuZ3RoLC41KS8yMCk/MDpNYXRoLnJvdW5kKG4pKSxyPU1hdGgubWF4KDUsTWF0aC5mbG9vcihNYXRoLnJvdW5kKChmdW5jdGlvbih0KXtyZXR1cm4gTWF0aC5sb2codCkvTWF0aC5sb2coMil9KSh0Lmxlbmd0aCkpKSk7dGhpcy5ycEZvcmVzdD1kLm1ha2VGb3Jlc3QodCxlLG8sdGhpcy5yYW5kb20pO3ZhciBpPWEodCxkLm1ha2VMZWFmQXJyYXkodGhpcy5ycEZvcmVzdCksZSxyKTtyZXR1cm57a25uSW5kaWNlczppLmluZGljZXMsa25uRGlzdGFuY2VzOmkud2VpZ2h0c319LHQucHJvdG90eXBlLmZ1enp5U2ltcGxpY2lhbFNldD1mdW5jdGlvbih0LG4sZSl7dm9pZCAwPT09ZSYmKGU9MSk7dmFyIGE9dGhpcyxvPWEua25uSW5kaWNlcyxyPXZvaWQgMD09PW8/W106byxpPWEua25uRGlzdGFuY2VzLGM9dm9pZCAwPT09aT9bXTppLHM9dGhpcy5zbW9vdGhLTk5EaXN0YW5jZShjLG4sYS5sb2NhbENvbm5lY3Rpdml0eSksbT10aGlzLmNvbXB1dGVNZW1iZXJzaGlwU3RyZW5ndGhzKHIsYyxzLnNpZ21hcyxzLnJob3MpLGQ9bmV3IGwuU3BhcnNlTWF0cml4KG0ucm93cyxtLmNvbHMsbS52YWxzLFt0Lmxlbmd0aCx0Lmxlbmd0aF0pLGc9bC50cmFuc3Bvc2UoZCkscD1sLnBhaXJ3aXNlTXVsdGlwbHkoZCxnKSxiPWwuc3VidHJhY3QobC5hZGQoZCxnKSxwKSx1PWwubXVsdGlwbHlTY2FsYXIoYixlKSxmPWwubXVsdGlwbHlTY2FsYXIocCwxLWUpO3JldHVybiBsLmFkZCh1LGYpfSx0LnByb3RvdHlwZS5jYXRlZ29yaWNhbFNpbXBsaWNpYWxTZXRJbnRlcnNlY3Rpb249ZnVuY3Rpb24odCxuLGUsYSl7dm9pZCAwPT09YSYmKGE9MSk7dmFyIG89eCh0LG4sYSxlKTtyZXR1cm4geShvPWwuZWxpbWluYXRlWmVyb3MobykpfSx0LnByb3RvdHlwZS5zbW9vdGhLTk5EaXN0YW5jZT1mdW5jdGlvbih0LG4sZSxhLG8pe3ZvaWQgMD09PWUmJihlPTEpLHZvaWQgMD09PWEmJihhPTY0KSx2b2lkIDA9PT1vJiYobz0xKTtmb3IodmFyIHI9TWF0aC5sb2cobikvTWF0aC5sb2coMikqbyxpPWcuemVyb3ModC5sZW5ndGgpLGM9Zy56ZXJvcyh0Lmxlbmd0aCkscz0wO3M8dC5sZW5ndGg7cysrKXt2YXIgbD0wLG09MS8wLGQ9MSxwPXRbc10sZj1wLmZpbHRlcigoZnVuY3Rpb24odCl7cmV0dXJuIHQ+MH0pKTtpZihmLmxlbmd0aD49ZSl7dmFyIGg9TWF0aC5mbG9vcihlKSxfPWUtaDtoPjA/KGlbc109ZltoLTFdLF8+YiYmKGlbc10rPV8qKGZbaF0tZltoLTFdKSkpOmlbc109XypmWzBdfWVsc2UgZi5sZW5ndGg+MCYmKGlbc109Zy5tYXgoZikpO2Zvcih2YXIgQz0wO0M8YTtDKyspe2Zvcih2YXIgTT0wLE89MTtPPHRbc10ubGVuZ3RoO08rKyl7dmFyIFA9dFtzXVtPXS1pW3NdO00rPVA+MD9NYXRoLmV4cCgtUC9kKToxfWlmKE1hdGguYWJzKE0tcik8YilicmVhaztNPnI/ZD0obCsobT1kKSkvMjoobD1kLG09PT0xLzA/ZCo9MjpkPShsK20pLzIpfWlmKGNbc109ZCxpW3NdPjApe3ZhciB4PWcubWVhbihwKTtjW3NdPHUqeCYmKGNbc109dSp4KX1lbHNle3ZhciB5PWcubWVhbih0Lm1hcChnLm1lYW4pKTtjW3NdPHUqeSYmKGNbc109dSp5KX19cmV0dXJue3NpZ21hczpjLHJob3M6aX19LHQucHJvdG90eXBlLmNvbXB1dGVNZW1iZXJzaGlwU3RyZW5ndGhzPWZ1bmN0aW9uKHQsbixlLGEpe2Zvcih2YXIgbz10Lmxlbmd0aCxyPXRbMF0ubGVuZ3RoLGk9Zy56ZXJvcyhvKnIpLGM9Zy56ZXJvcyhvKnIpLHM9Zy56ZXJvcyhvKnIpLGw9MDtsPG87bCsrKWZvcih2YXIgbT0wO208cjttKyspe3ZhciBkPTA7LTEhPT10W2xdW21dJiYoZD10W2xdW21dPT09bD8wOm5bbF1bbV0tYVtsXTw9MD8xOk1hdGguZXhwKC0obltsXVttXS1hW2xdKS9lW2xdKSxpW2wqcittXT1sLGNbbCpyK21dPXRbbF1bbV0sc1tsKnIrbV09ZCl9cmV0dXJue3Jvd3M6aSxjb2xzOmMsdmFsczpzfX0sdC5wcm90b3R5cGUuaW5pdGlhbGl6ZVNpbXBsaWNpYWxTZXRFbWJlZGRpbmc9ZnVuY3Rpb24oKXtmb3IodmFyIHQ9dGhpcyxuPXRoaXMuZ2V0TkVwb2NocygpLGU9dGhpcy5uQ29tcG9uZW50cyxhPXRoaXMuZ3JhcGguZ2V0VmFsdWVzKCksbz0wLHI9MDtyPGEubGVuZ3RoO3IrKylvPGFbcl0mJihvPWFbcl0pO3ZhciBpPXRoaXMuZ3JhcGgubWFwKChmdW5jdGlvbih0KXtyZXR1cm4gdDxvL24/MDp0fSkpO3RoaXMuZW1iZWRkaW5nPWcuemVyb3MoaS5uUm93cykubWFwKChmdW5jdGlvbigpe3JldHVybiBnLnplcm9zKGUpLm1hcCgoZnVuY3Rpb24oKXtyZXR1cm4gMjAqZy50YXVSYW5kKHQucmFuZG9tKS0xMH0pKX0pKTt2YXIgYz1bXSxzPVtdLGw9W10sbT1pLmdldEFsbCgpO2ZvcihyPTA7cjxtLmxlbmd0aDtyKyspe3ZhciBkPW1bcl07ZC52YWx1ZSYmKGMucHVzaChkLnZhbHVlKSxsLnB1c2goZC5yb3cpLHMucHVzaChkLmNvbCkpfXJldHVybntoZWFkOnMsdGFpbDpsLGVwb2Noc1BlclNhbXBsZTp0aGlzLm1ha2VFcG9jaHNQZXJTYW1wbGUoYyxuKX19LHQucHJvdG90eXBlLm1ha2VFcG9jaHNQZXJTYW1wbGU9ZnVuY3Rpb24odCxuKXt2YXIgZT1nLmZpbGxlZCh0Lmxlbmd0aCwtMSksYT1nLm1heCh0KSxvPXQubWFwKChmdW5jdGlvbih0KXtyZXR1cm4gdC9hKm59KSk7cmV0dXJuIG8uZm9yRWFjaCgoZnVuY3Rpb24odCxhKXt0PjAmJihlW2FdPW4vb1thXSl9KSksZX0sdC5wcm90b3R5cGUuYXNzaWduT3B0aW1pemF0aW9uU3RhdGVQYXJhbWV0ZXJzPWZ1bmN0aW9uKHQpe09iamVjdC5hc3NpZ24odGhpcy5vcHRpbWl6YXRpb25TdGF0ZSx0KX0sdC5wcm90b3R5cGUucHJlcGFyZUZvck9wdGltaXphdGlvbkxvb3A9ZnVuY3Rpb24oKXt2YXIgdD10aGlzLG49dC5yZXB1bHNpb25TdHJlbmd0aCxlPXQubGVhcm5pbmdSYXRlLGE9dC5uZWdhdGl2ZVNhbXBsZVJhdGUsbz10aGlzLm9wdGltaXphdGlvblN0YXRlLGk9by5lcG9jaHNQZXJTYW1wbGUsYz1vLmhlYWRFbWJlZGRpbmcscz1jWzBdLmxlbmd0aCxsPWMubGVuZ3RoPT09by50YWlsRW1iZWRkaW5nLmxlbmd0aCxtPWkubWFwKChmdW5jdGlvbih0KXtyZXR1cm4gdC9hfSkpLGQ9cihtKSxnPXIoaSk7dGhpcy5hc3NpZ25PcHRpbWl6YXRpb25TdGF0ZVBhcmFtZXRlcnMoe2Vwb2NoT2ZOZXh0U2FtcGxlOmcsZXBvY2hPZk5leHROZWdhdGl2ZVNhbXBsZTpkLGVwb2Noc1Blck5lZ2F0aXZlU2FtcGxlOm0sbW92ZU90aGVyOmwsaW5pdGlhbEFscGhhOmUsYWxwaGE6ZSxnYW1tYTpuLGRpbTpzfSl9LHQucHJvdG90eXBlLmluaXRpYWxpemVPcHRpbWl6YXRpb249ZnVuY3Rpb24oKXt2YXIgdD10aGlzLmVtYmVkZGluZyxuPXRoaXMuZW1iZWRkaW5nLGU9dGhpcy5vcHRpbWl6YXRpb25TdGF0ZSxhPWUuaGVhZCxvPWUudGFpbCxyPWUuZXBvY2hzUGVyU2FtcGxlLGk9dGhpcy5nZXRORXBvY2hzKCksYz10aGlzLmdyYXBoLm5Db2xzLHM9UCh0aGlzLnNwcmVhZCx0aGlzLm1pbkRpc3QpO3RoaXMuYXNzaWduT3B0aW1pemF0aW9uU3RhdGVQYXJhbWV0ZXJzKHtoZWFkRW1iZWRkaW5nOnQsdGFpbEVtYmVkZGluZzpuLGhlYWQ6YSx0YWlsOm8sZXBvY2hzUGVyU2FtcGxlOnIsYTpzLmEsYjpzLmIsbkVwb2NoczppLG5WZXJ0aWNlczpjfSl9LHQucHJvdG90eXBlLm9wdGltaXplTGF5b3V0U3RlcD1mdW5jdGlvbih0KXtmb3IodmFyIG49dGhpcy5vcHRpbWl6YXRpb25TdGF0ZSxlPW4uaGVhZCxhPW4udGFpbCxvPW4uaGVhZEVtYmVkZGluZyxyPW4udGFpbEVtYmVkZGluZyxpPW4uZXBvY2hzUGVyU2FtcGxlLGM9bi5lcG9jaE9mTmV4dFNhbXBsZSxzPW4uZXBvY2hPZk5leHROZWdhdGl2ZVNhbXBsZSxsPW4uZXBvY2hzUGVyTmVnYXRpdmVTYW1wbGUsbT1uLm1vdmVPdGhlcixkPW4uaW5pdGlhbEFscGhhLHA9bi5hbHBoYSxiPW4uZ2FtbWEsdT1uLmEsZj1uLmIsaD1uLmRpbSxfPW4ubkVwb2NocyxDPW4ublZlcnRpY2VzLFA9MDtQPGkubGVuZ3RoO1ArKylpZighKGNbUF0+dCkpe3ZhciB4PWVbUF0seT1vW3hdLGs9clthW1BdXSx2PU8oeSxrKSx3PTA7dj4wJiYodz0tMip1KmYqTWF0aC5wb3codixmLTEpLHcvPXUqTWF0aC5wb3codixmKSsxKTtmb3IodmFyIFM9MDtTPGg7UysrKXt2YXIgRT1NKHcqKHlbU10ta1tTXSksNCk7eVtTXSs9RSpwLG0mJihrW1NdKz0tRSpwKX1jW1BdKz1pW1BdO2Zvcih2YXIgQT1NYXRoLmZsb29yKCh0LXNbUF0pL2xbUF0pLHo9MDt6PEE7eisrKXt2YXIgUj1nLnRhdVJhbmRJbnQoQyx0aGlzLnJhbmRvbSksVD1yW1JdLEQ9Tyh5LFQpLEk9MDtpZihEPjApST0yKmIqZixJLz0oLjAwMStEKSoodSpNYXRoLnBvdyhELGYpKzEpO2Vsc2UgaWYoeD09PVIpY29udGludWU7Zm9yKFM9MDtTPGg7UysrKUU9NCxJPjAmJihFPU0oSSooeVtTXS1UW1NdKSw0KSkseVtTXSs9RSpwfXNbUF0rPUEqbFtQXX1yZXR1cm4gbi5hbHBoYT1kKigxLXQvXyksbi5jdXJyZW50RXBvY2grPTEsb30sdC5wcm90b3R5cGUub3B0aW1pemVMYXlvdXRBc3luYz1mdW5jdGlvbih0KXt2YXIgbj10aGlzO3JldHVybiB2b2lkIDA9PT10JiYodD1mdW5jdGlvbigpe3JldHVybiEwfSksbmV3IFByb21pc2UoKGZ1bmN0aW9uKG8scil7dmFyIGk9ZnVuY3Rpb24oKXtyZXR1cm4gZShuLHZvaWQgMCx2b2lkIDAsKGZ1bmN0aW9uKCl7dmFyIG4sZSxjLHMsbDtyZXR1cm4gYSh0aGlzLChmdW5jdGlvbihhKXt0cnl7aWYoZT0obj10aGlzLm9wdGltaXphdGlvblN0YXRlKS5uRXBvY2hzLHRoaXMuZW1iZWRkaW5nPXRoaXMub3B0aW1pemVMYXlvdXRTdGVwKG4uY3VycmVudEVwb2NoKSxzPSExPT09dChjPXRoaXMub3B0aW1pemF0aW9uU3RhdGUuY3VycmVudEVwb2NoKSxsPWM9PT1lLHN8fGwpcmV0dXJuWzIsbyhsKV07c2V0VGltZW91dCgoZnVuY3Rpb24oKXtyZXR1cm4gaSgpfSksMCl9Y2F0Y2godCl7cih0KX1yZXR1cm5bMl19KSl9KSl9O3NldFRpbWVvdXQoKGZ1bmN0aW9uKCl7cmV0dXJuIGkoKX0pLDApfSkpfSx0LnByb3RvdHlwZS5vcHRpbWl6ZUxheW91dD1mdW5jdGlvbih0KXt2b2lkIDA9PT10JiYodD1mdW5jdGlvbigpe3JldHVybiEwfSk7Zm9yKHZhciBuPSExLGU9W107IW47KXt2YXIgYT10aGlzLm9wdGltaXphdGlvblN0YXRlLG89YS5uRXBvY2hzO2U9dGhpcy5vcHRpbWl6ZUxheW91dFN0ZXAoYS5jdXJyZW50RXBvY2gpO3ZhciByPXRoaXMub3B0aW1pemF0aW9uU3RhdGUuY3VycmVudEVwb2NoLGk9ITE9PT10KHIpO249cj09PW98fGl9cmV0dXJuIGV9LHQucHJvdG90eXBlLmdldE5FcG9jaHM9ZnVuY3Rpb24oKXtpZih0aGlzLm5FcG9jaHM+MClyZXR1cm4gdGhpcy5uRXBvY2hzO3ZhciB0PXRoaXMuZ3JhcGgublJvd3M7cmV0dXJuIHQ8PTI1MDA/NTAwOnQ8PTVlMz80MDA6dDw9NzUwMD8zMDA6MjAwfSx0fSkoKTtmdW5jdGlvbiBoKHQsbil7Zm9yKHZhciBlPTAsYT0wO2E8dC5sZW5ndGg7YSsrKWUrPU1hdGgucG93KHRbYV0tblthXSwyKTtyZXR1cm4gTWF0aC5zcXJ0KGUpfW4uVU1BUD1mLG4uZXVjbGlkZWFuPWgsbi5jb3NpbmU9ZnVuY3Rpb24gXyh0LG4pe2Zvcih2YXIgZT0wLGE9MCxvPTAscj0wO3I8dC5sZW5ndGg7cisrKWUrPXRbcl0qbltyXSxhKz1NYXRoLnBvdyh0W3JdLDIpLG8rPU1hdGgucG93KG5bcl0sMik7cmV0dXJuIDA9PT1hJiYwPT09bz8wOjA9PT1hfHwwPT09bz8xOjEtZS9NYXRoLnNxcnQoYSpvKX07dmFyIEM9ZnVuY3Rpb24gQygpe3RoaXMuY3VycmVudEVwb2NoPTAsdGhpcy5oZWFkRW1iZWRkaW5nPVtdLHRoaXMudGFpbEVtYmVkZGluZz1bXSx0aGlzLmhlYWQ9W10sdGhpcy50YWlsPVtdLHRoaXMuZXBvY2hzUGVyU2FtcGxlPVtdLHRoaXMuZXBvY2hPZk5leHRTYW1wbGU9W10sdGhpcy5lcG9jaE9mTmV4dE5lZ2F0aXZlU2FtcGxlPVtdLHRoaXMuZXBvY2hzUGVyTmVnYXRpdmVTYW1wbGU9W10sdGhpcy5tb3ZlT3RoZXI9ITAsdGhpcy5pbml0aWFsQWxwaGE9MSx0aGlzLmFscGhhPTEsdGhpcy5nYW1tYT0xLHRoaXMuYT0xLjU3Njk0MzQ2MDMxMTMwNzcsdGhpcy5iPS44OTUwNjA4Nzc5MTA5NzMzLHRoaXMuZGltPTIsdGhpcy5uRXBvY2hzPTUwMCx0aGlzLm5WZXJ0aWNlcz0wfTtmdW5jdGlvbiBNKHQsbil7cmV0dXJuIHQ+bj9uOnQ8LW4/LW46dH1mdW5jdGlvbiBPKHQsbil7Zm9yKHZhciBlPTAsYT0wO2E8dC5sZW5ndGg7YSsrKWUrPU1hdGgucG93KHRbYV0tblthXSwyKTtyZXR1cm4gZX1mdW5jdGlvbiBQKHQsbil7dmFyIGU9Zy5saW5lYXIoMCwzKnQsMzAwKS5tYXAoKGZ1bmN0aW9uKHQpe3JldHVybiB0PG4/MTp0fSkpLGE9Zy56ZXJvcyhlLmxlbmd0aCkubWFwKChmdW5jdGlvbihhLG8pe3JldHVybiBlW29dPj1uP01hdGguZXhwKC0oZVtvXS1uKS90KTphfSkpLHI9cC5kZWZhdWx0KHt4OmUseTphfSwoZnVuY3Rpb24odCl7dmFyIG49byh0LDIpLGU9blswXSxhPW5bMV07cmV0dXJuIGZ1bmN0aW9uKHQpe3JldHVybiAxLygxK2UqTWF0aC5wb3codCwyKmEpKX19KSx7ZGFtcGluZzoxLjUsaW5pdGlhbFZhbHVlczpbLjUsLjVdLGdyYWRpZW50RGlmZmVyZW5jZTouMSxtYXhJdGVyYXRpb25zOjEwMCxlcnJvclRvbGVyYW5jZTouMDF9KS5wYXJhbWV0ZXJWYWx1ZXMsaT1vKHIsMik7cmV0dXJue2E6aVswXSxiOmlbMV19fWZ1bmN0aW9uIHgodCxuLGUsYSl7cmV0dXJuIHZvaWQgMD09PWUmJihlPTEpLHZvaWQgMD09PWEmJihhPTUpLHQubWFwKChmdW5jdGlvbih0LG8scil7cmV0dXJuLTE9PT1uW29dfHwtMT09PW5bcl0/dCpNYXRoLmV4cCgtZSk6bltvXSE9PW5bcl0/dCpNYXRoLmV4cCgtYSk6dH0pKX1mdW5jdGlvbiB5KHQpe3Q9bC5ub3JtYWxpemUodCwibWF4Iik7dmFyIG49bC50cmFuc3Bvc2UodCksZT1sLnBhaXJ3aXNlTXVsdGlwbHkobix0KTtyZXR1cm4gdD1sLmFkZCh0LGwuc3VidHJhY3QobixlKSksbC5lbGltaW5hdGVaZXJvcyh0KX1mdW5jdGlvbiBrKHQsbixlKXtmb3IodmFyIGE9Zy56ZXJvcyh0Lmxlbmd0aCkubWFwKChmdW5jdGlvbih0KXtyZXR1cm4gZy56ZXJvcyhlWzBdLmxlbmd0aCl9KSksbz0wO288dC5sZW5ndGg7bysrKWZvcih2YXIgcj0wO3I8dFswXS5sZW5ndGg7cisrKWZvcih2YXIgaT0wO2k8ZVswXS5sZW5ndGg7aSsrKWFbb11baV0rPW5bb11bcl0qZVt0W29dW3JdXVtpXTtyZXR1cm4gYX1uLmZpbmRBQlBhcmFtcz1QLG4uZmFzdEludGVyc2VjdGlvbj14LG4ucmVzZXRMb2NhbENvbm5lY3Rpdml0eT15LG4uaW5pdFRyYW5zZm9ybT1rfSkpO2Z1bmN0aW9uIE91dCh0KXtsZXQgbixlLGE9dC5sZW5ndGg7Zm9yKDthOyllPU1hdGguZmxvb3IoTWF0aC5yYW5kb20oKSphLS0pLG49dFthXSx0W2FdPXRbZV0sdFtlXT1uO3JldHVybiB0fWZ1bmN0aW9uIFB1dCh0LG4pe3JldHVybmAke259LyR7dH1gfXlQKChmdW5jdGlvbih0LG4pe09iamVjdC5kZWZpbmVQcm9wZXJ0eShuLCJfX2VzTW9kdWxlIix7dmFsdWU6ITB9KSxuLlVNQVA9TXV0LlVNQVB9KSk7Y2xhc3MgeHV0e2NvbnN0cnVjdG9yKHQpe3RoaXMuaHR0cD10LHRoaXMuaHR0cFBhdGhQcmVmaXg9ImRhdGEvcGx1Z2luL25wbWkifWZldGNoRGF0YSh0KXtyZXR1cm4gSHQodGhpcy5mZXRjaEFubm90YXRpb25zKHQpLHRoaXMuZmV0Y2hNZXRyaWNzKHQpLHRoaXMuZmV0Y2hWYWx1ZXModCksdGhpcy5mZXRjaEVtYmVkZGluZ3ModCkpLnBpcGUoZnQoKChbdCxuLGUsYV0pPT57Y29uc3Qgbz17fSxyPXt9O2xldCBpLGM9MDtmb3IoY29uc3QgaSBvZiBPYmplY3Qua2V5cyh0KSlmb3IoY29uc3QgcyBpbiB0W2ldKXtjb25zdCBsPXRbaV1bc107T2JqZWN0LmtleXMoYSkubGVuZ3RoJiYhcltsXSYmYVtpXVtzXSYmYVtpXVtzXS5zb21lKCh0PT4wIT09dCkpJiYocltsXT17dmVjdG9yOmFbaV1bc10saW5kZXg6YyxuYW1lOmx9LGMrPTEpO2NvbnN0IG09bmV3IE1hcDtmb3IoY29uc3QgdCBpbiBuW2ldKXtjb25zdCBhPW5baV1bdF0sbz1rZ3QoYSk7bGV0IHI9bS5nZXQobyk7cnx8KHI9e25QTUlWYWx1ZTpudWxsLGNvdW50VmFsdWU6bnVsbCxhbm5vdGF0aW9uOmwsbWV0cmljOm8scnVuOml9LG0uc2V0KG8scikpLFBndChhKT9yLmNvdW50VmFsdWU9ZVtpXVtzXVt0XTp4Z3QoYSkmJihyLm5QTUlWYWx1ZT1lW2ldW3NdW3RdKX1vW2xdPVsuLi5vW2xdP29bbF06W10sLi4ubS52YWx1ZXMoKV19cmV0dXJuIE9iamVjdC5rZXlzKHIpLmxlbmd0aCYmKGk9KGZ1bmN0aW9uIHModCl7Y29uc3Qgbj1PYmplY3Qua2V5cyh0KTtyZXR1cm57cG9pbnRzOnQscG9pbnRLZXlzOm4sc2h1ZmZsZWREYXRhSW5kaWNlczpPdXQoKGU9bi5sZW5ndGgsWy4uLm5ldyBBcnJheShlKV0ubWFwKCgodCxuKT0+bikpKSksaGFzVW1hcFJ1bjohMX07dmFyIGV9KShyKSkse2Fubm90YXRpb25EYXRhOm8sbWV0cmljczpuLGVtYmVkZGluZ0RhdGFTZXQ6aX19KSksb24oKHQ9PnQgaW5zdGFuY2VvZiBUUiYmNDAwPD10LnN0YXR1cyYmdC5zdGF0dXM8NTAwP1ooe2Fubm90YXRpb25EYXRhOnt9LG1ldHJpY3M6e30sZW1iZWRkaW5nRGF0YVNldDp2b2lkIDB9KTpYKHQpKSkpfWZldGNoQW5ub3RhdGlvbnModCl7cmV0dXJuIEh0KHQubWFwKCh0PT50aGlzLmh0dHAuZ2V0KGAvZXhwZXJpbWVudC8ke3R9LyR7dGhpcy5odHRwUGF0aFByZWZpeH0vYW5ub3RhdGlvbnNgKS5waXBlKGZ0KChuPT4oZnVuY3Rpb24gZSh0LG4pe3JldHVybiBPYmplY3QuZnJvbUVudHJpZXMoT2JqZWN0LmVudHJpZXModCkubWFwKCgoW3QsZV0pPT5bUHV0KHQsbiksZV0pKSl9KShuLHQpKSkpKSkpLnBpcGUoZnQoKHQ9PntsZXQgbj17fTtmb3IoY29uc3QgZSBvZiB0KW49T2JqZWN0LmFzc2lnbihPYmplY3QuYXNzaWduKHt9LG4pLGUpO3JldHVybiBufSkpKX1mZXRjaE1ldHJpY3ModCl7cmV0dXJuIEh0KHQubWFwKCh0PT50aGlzLmh0dHAuZ2V0KGAvZXhwZXJpbWVudC8ke3R9LyR7dGhpcy5odHRwUGF0aFByZWZpeH0vbWV0cmljc2ApLnBpcGUoZnQoKG49PihmdW5jdGlvbiBlKHQsbil7cmV0dXJuIE9iamVjdC5mcm9tRW50cmllcyhPYmplY3QuZW50cmllcyh0KS5tYXAoKChbdCxlXSk9PltQdXQodCxuKSxlXSkpKX0pKG4sdCkpKSkpKSkucGlwZShmdCgodD0+e2xldCBuPXt9O2Zvcihjb25zdCBlIG9mIHQpbj1PYmplY3QuYXNzaWduKE9iamVjdC5hc3NpZ24oe30sbiksZSk7cmV0dXJuIG59KSkpfWZldGNoVmFsdWVzKHQpe3JldHVybiBIdCh0Lm1hcCgodD0+dGhpcy5odHRwLmdldChgL2V4cGVyaW1lbnQvJHt0fS8ke3RoaXMuaHR0cFBhdGhQcmVmaXh9L3ZhbHVlc2ApLnBpcGUoZnQoKG49PihmdW5jdGlvbiBlKHQsbil7cmV0dXJuIE9iamVjdC5mcm9tRW50cmllcyhPYmplY3QuZW50cmllcyh0KS5tYXAoKChbdCxlXSk9PltQdXQodCxuKSxlXSkpKX0pKG4sdCkpKSkpKSkucGlwZShmdCgodD0+e2xldCBuPXt9O2Zvcihjb25zdCBlIG9mIHQpbj1PYmplY3QuYXNzaWduKE9iamVjdC5hc3NpZ24oe30sbiksZSk7cmV0dXJuIG59KSkpfWZldGNoRW1iZWRkaW5ncyh0KXtyZXR1cm4gSHQodC5tYXAoKHQ9PnRoaXMuaHR0cC5nZXQoYC9leHBlcmltZW50LyR7dH0vJHt0aGlzLmh0dHBQYXRoUHJlZml4fS9lbWJlZGRpbmdzYCkucGlwZShmdCgobj0+KGZ1bmN0aW9uIGUodCxuKXtyZXR1cm4gT2JqZWN0LmZyb21FbnRyaWVzKE9iamVjdC5lbnRyaWVzKHQpLm1hcCgoKFt0LGVdKT0+W1B1dCh0LG4pLGVdKSkpfSkobix0KSkpKSkpKS5waXBlKGZ0KCh0PT57bGV0IG49e307Zm9yKGNvbnN0IGUgb2YgdCluPU9iamVjdC5hc3NpZ24oT2JqZWN0LmFzc2lnbih7fSxuKSxlKTtyZXR1cm4gbn0pKSl9fXh1dC7JtWZhYz1mdW5jdGlvbiB0KG4pe3JldHVybiBuZXcobnx8eHV0KShaYShtVCkpfSx4dXQuybVwcm92PVdlKHt0b2tlbjp4dXQsZmFjdG9yeTp4dXQuybVmYWN9KTtjbGFzcyB5dXR7fXl1dC7JtW1vZD14byh7dHlwZTp5dXR9KSx5dXQuybVpbmo9R2Uoe2ZhY3Rvcnk6ZnVuY3Rpb24gdChuKXtyZXR1cm4gbmV3KG58fHl1dCl9LHByb3ZpZGVyczpbeHV0XSxpbXBvcnRzOltbU1RdXX0pLCgidW5kZWZpbmVkIj09dHlwZW9mIG5nSml0TW9kZXx8bmdKaXRNb2RlKSYmeW8oeXV0LHtpbXBvcnRzOltTVF19KTtjbGFzcyBrdXR7Y29uc3RydWN0b3IodCxuLGUpe3RoaXMuYWN0aW9ucyQ9dCx0aGlzLnN0b3JlPW4sdGhpcy5kYXRhU291cmNlPWUsdGhpcy5sb2FkRGF0YSQ9WXYoKCgpPT5XdCh0aGlzLmxvYWRQbHVnaW5EYXRhKCkpLnBpcGUoZnQoKCgpPT4oe30pKSkpKSx7ZGlzcGF0Y2g6ITF9KX1sb2FkUGx1Z2luRGF0YSgpe3JldHVybiB0aGlzLmFjdGlvbnMkLnBpcGUodHcoSmR0KSx5ZSh0aGlzLnN0b3JlLnNlbGVjdChTZHQpLHRoaXMuc3RvcmUuc2VsZWN0KGVSKSksR3QoKChbLHQsbl0pPT50IT09ZlIuTE9BRElORyYmbnVsbCE9PW4pKSxoZSgoKCk9PnRoaXMuc3RvcmUuZGlzcGF0Y2goUWR0KCkpKSksVHQoKChbLCx0XSk9PnRoaXMuZGF0YVNvdXJjZS5mZXRjaERhdGEodCkucGlwZShoZSgodD0+e3RoaXMuc3RvcmUuZGlzcGF0Y2goS2R0KHQpKX0pKSxmdCgoKCk9Pnt9KSksb24oKCgpPT4odGhpcy5zdG9yZS5kaXNwYXRjaCgkZHQoKSksVSkpKSkpKSl9fWt1dC7JtWZhYz1mdW5jdGlvbiB0KG4pe3JldHVybiBuZXcobnx8a3V0KShaYSgkdiksWmEoY3YpLFphKHh1dCkpfSxrdXQuybVwcm92PVdlKHt0b2tlbjprdXQsZmFjdG9yeTprdXQuybVmYWN9KTtjbGFzcyB2dXR7fXZ1dC7JtW1vZD14byh7dHlwZTp2dXR9KSx2dXQuybVpbmo9R2Uoe2ZhY3Rvcnk6ZnVuY3Rpb24gdChuKXtyZXR1cm4gbmV3KG58fHZ1dCl9fSksKCJ1bmRlZmluZWQiPT10eXBlb2YgbmdKaXRNb2RlfHxuZ0ppdE1vZGUpJiZ5byh2dXQse2RlY2xhcmF0aW9uczpbdmR0XSxleHBvcnRzOlt2ZHRdfSk7Y2xhc3Mgd3V0e313dXQuybVtb2Q9eG8oe3R5cGU6d3V0fSksd3V0Lsm1aW5qPUdlKHtmYWN0b3J5OmZ1bmN0aW9uIHQobil7cmV0dXJuIG5ldyhufHx3dXQpfSxpbXBvcnRzOltbUE8sVkIseFYsUCRdXX0pLCgidW5kZWZpbmVkIj09dHlwZW9mIG5nSml0TW9kZXx8bmdKaXRNb2RlKSYmeW8od3V0LHtkZWNsYXJhdGlvbnM6W0VndCxBZ3RdLGltcG9ydHM6W1BPLFZCLHhWLFAkXSxleHBvcnRzOltBZ3RdfSk7Y2xhc3MgU3V0e31TdXQuybVtb2Q9eG8oe3R5cGU6U3V0fSksU3V0Lsm1aW5qPUdlKHtmYWN0b3J5OmZ1bmN0aW9uIHQobil7cmV0dXJuIG5ldyhufHxTdXQpfSxpbXBvcnRzOltbUE8sT0gsUEgsVkIsUWd0LFpxXV19KSwoInVuZGVmaW5lZCI9PXR5cGVvZiBuZ0ppdE1vZGV8fG5nSml0TW9kZSkmJnlvKFN1dCx7ZGVjbGFyYXRpb25zOltlcHQsYXB0XSxpbXBvcnRzOltQTyxPSCxQSCxWQixRZ3QsWnFdLGV4cG9ydHM6W2FwdF19KTtjbGFzcyBFdXR7fUV1dC7JtW1vZD14byh7dHlwZTpFdXR9KSxFdXQuybVpbmo9R2Uoe2ZhY3Rvcnk6ZnVuY3Rpb24gdChuKXtyZXR1cm4gbmV3KG58fEV1dCl9LGltcG9ydHM6W1tQTyxRZ3RdXX0pLCgidW5kZWZpbmVkIj09dHlwZW9mIG5nSml0TW9kZXx8bmdKaXRNb2RlKSYmeW8oRXV0LHtkZWNsYXJhdGlvbnM6W29wdF0saW1wb3J0czpbUE8sUWd0XSxleHBvcnRzOltvcHRdfSk7Y2xhc3MgQXV0e31BdXQuybVtb2Q9eG8oe3R5cGU6QXV0fSksQXV0Lsm1aW5qPUdlKHtmYWN0b3J5OmZ1bmN0aW9uIHQobil7cmV0dXJuIG5ldyhufHxBdXQpfSxpbXBvcnRzOltbUE8sUWd0LFN1dCxFdXRdXX0pLCgidW5kZWZpbmVkIj09dHlwZW9mIG5nSml0TW9kZXx8bmdKaXRNb2RlKSYmeW8oQXV0LHtkZWNsYXJhdGlvbnM6W3NwdCxscHRdLGltcG9ydHM6W1BPLFFndCxTdXQsRXV0XSxleHBvcnRzOltscHRdfSk7Y2xhc3MgenV0e316dXQuybVtb2Q9eG8oe3R5cGU6enV0fSksenV0Lsm1aW5qPUdlKHtmYWN0b3J5OmZ1bmN0aW9uIHQobil7cmV0dXJuIG5ldyhufHx6dXQpfSxpbXBvcnRzOltbUE8sVkIsb0FdXX0pLCgidW5kZWZpbmVkIj09dHlwZW9mIG5nSml0TW9kZXx8bmdKaXRNb2RlKSYmeW8oenV0LHtkZWNsYXJhdGlvbnM6W1RndCxEZ3RdLGltcG9ydHM6W1BPLFZCLG9BXSxleHBvcnRzOltEZ3RdfSk7Y2xhc3MgUnV0e31SdXQuybVtb2Q9eG8oe3R5cGU6UnV0fSksUnV0Lsm1aW5qPUdlKHtmYWN0b3J5OmZ1bmN0aW9uIHQobil7cmV0dXJuIG5ldyhufHxSdXQpfSxpbXBvcnRzOltbUE8sd3V0LEF1dCx6dXRdXX0pLCgidW5kZWZpbmVkIj09dHlwZW9mIG5nSml0TW9kZXx8bmdKaXRNb2RlKSYmeW8oUnV0LHtkZWNsYXJhdGlvbnM6W21wdF0saW1wb3J0czpbUE8sd3V0LEF1dCx6dXRdLGV4cG9ydHM6W21wdF19KTtjbGFzcyBUdXR7fVR1dC7JtW1vZD14byh7dHlwZTpUdXR9KSxUdXQuybVpbmo9R2Uoe2ZhY3Rvcnk6ZnVuY3Rpb24gdChuKXtyZXR1cm4gbmV3KG58fFR1dCl9LGltcG9ydHM6W1tQTyxPSCxvQSxWQl1dfSksKCJ1bmRlZmluZWQiPT10eXBlb2YgbmdKaXRNb2RlfHxuZ0ppdE1vZGUpJiZ5byhUdXQse2RlY2xhcmF0aW9uczpbcHB0LGJwdF0saW1wb3J0czpbUE8sT0gsb0EsVkJdLGV4cG9ydHM6W2JwdF19KTtjbGFzcyBEdXR7fUR1dC7JtW1vZD14byh7dHlwZTpEdXR9KSxEdXQuybVpbmo9R2Uoe2ZhY3Rvcnk6ZnVuY3Rpb24gdChuKXtyZXR1cm4gbmV3KG58fER1dCl9LGltcG9ydHM6W1tQTyxPSCxWQixvQSxUdXRdXX0pLCgidW5kZWZpbmVkIj09dHlwZW9mIG5nSml0TW9kZXx8bmdKaXRNb2RlKSYmeW8oRHV0LHtkZWNsYXJhdGlvbnM6W2hwdCxfcHRdLGltcG9ydHM6W1BPLE9ILFZCLG9BLFR1dF0sZXhwb3J0czpbX3B0XX0pO2NsYXNzIEl1dHt9SXV0Lsm1bW9kPXhvKHt0eXBlOkl1dH0pLEl1dC7JtWluaj1HZSh7ZmFjdG9yeTpmdW5jdGlvbiB0KG4pe3JldHVybiBuZXcobnx8SXV0KX0saW1wb3J0czpbW1BPLE9ILFZCLHhWXV19KSwoInVuZGVmaW5lZCI9PXR5cGVvZiBuZ0ppdE1vZGV8fG5nSml0TW9kZSkmJnlvKEl1dCx7ZGVjbGFyYXRpb25zOltOcHQsRnB0XSxpbXBvcnRzOltQTyxPSCxWQix4Vl0sZXhwb3J0czpbRnB0XX0pO2NsYXNzIE51dHt9TnV0Lsm1bW9kPXhvKHt0eXBlOk51dH0pLE51dC7JtWluaj1HZSh7ZmFjdG9yeTpmdW5jdGlvbiB0KG4pe3JldHVybiBuZXcobnx8TnV0KX0saW1wb3J0czpbW1BPLE9ILFZCLG9BLERwdCxJdXRdXX0pLCgidW5kZWZpbmVkIj09dHlwZW9mIG5nSml0TW9kZXx8bmdKaXRNb2RlKSYmeW8oTnV0LHtkZWNsYXJhdGlvbnM6W0JwdCxWcHRdLGltcG9ydHM6W1BPLE9ILFZCLG9BLERwdCxJdXRdLGV4cG9ydHM6W1ZwdF19KTtjbGFzcyBGdXR7fUZ1dC7JtW1vZD14byh7dHlwZTpGdXR9KSxGdXQuybVpbmo9R2Uoe2ZhY3Rvcnk6ZnVuY3Rpb24gdChuKXtyZXR1cm4gbmV3KG58fEZ1dCl9LGltcG9ydHM6W1tQTyxPSCxtVixWQl1dfSksKCJ1bmRlZmluZWQiPT10eXBlb2YgbmdKaXRNb2RlfHxuZ0ppdE1vZGUpJiZ5byhGdXQse2RlY2xhcmF0aW9uczpbcXB0LFpwdF0saW1wb3J0czpbUE8sT0gsbVYsVkJdLGV4cG9ydHM6W1pwdF19KTtjbGFzcyBMdXR7fUx1dC7JtW1vZD14byh7dHlwZTpMdXR9KSxMdXQuybVpbmo9R2Uoe2ZhY3Rvcnk6ZnVuY3Rpb24gdChuKXtyZXR1cm4gbmV3KG58fEx1dCl9LGltcG9ydHM6W1tQT11dfSksKCJ1bmRlZmluZWQiPT10eXBlb2YgbmdKaXRNb2RlfHxuZ0ppdE1vZGUpJiZ5byhMdXQse2RlY2xhcmF0aW9uczpbVXB0XSxpbXBvcnRzOltQT10sZXhwb3J0czpbVXB0XX0pO2NsYXNzIEh1dHt9SHV0Lsm1bW9kPXhvKHt0eXBlOkh1dH0pLEh1dC7JtWluaj1HZSh7ZmFjdG9yeTpmdW5jdGlvbiB0KG4pe3JldHVybiBuZXcobnx8SHV0KX0saW1wb3J0czpbW0x1dF1dfSksKCJ1bmRlZmluZWQiPT10eXBlb2YgbmdKaXRNb2RlfHxuZ0ppdE1vZGUpJiZ5byhIdXQse2RlY2xhcmF0aW9uczpbV3B0XSxpbXBvcnRzOltMdXRdLGV4cG9ydHM6W1dwdF19KTtjbGFzcyBCdXR7fUJ1dC7JtW1vZD14byh7dHlwZTpCdXR9KSxCdXQuybVpbmo9R2Uoe2ZhY3Rvcnk6ZnVuY3Rpb24gdChuKXtyZXR1cm4gbmV3KG58fEJ1dCl9LGltcG9ydHM6W1tQTyxPSCxtVixWQixvQV1dfSksKCJ1bmRlZmluZWQiPT10eXBlb2YgbmdKaXRNb2RlfHxuZ0ppdE1vZGUpJiZ5byhCdXQse2RlY2xhcmF0aW9uczpbbmJ0LHRidF0saW1wb3J0czpbUE8sT0gsbVYsVkIsb0FdLGV4cG9ydHM6W25idF19KTtjbGFzcyBWdXR7fVZ1dC7JtW1vZD14byh7dHlwZTpWdXR9KSxWdXQuybVpbmo9R2Uoe2ZhY3Rvcnk6ZnVuY3Rpb24gdChuKXtyZXR1cm4gbmV3KG58fFZ1dCl9LGltcG9ydHM6W1tQTyxOdXQsRnV0LEh1dCx2QSxCdXRdXX0pLCgidW5kZWZpbmVkIj09dHlwZW9mIG5nSml0TW9kZXx8bmdKaXRNb2RlKSYmeW8oVnV0LHtkZWNsYXJhdGlvbnM6W29idCxyYnRdLGltcG9ydHM6W1BPLE51dCxGdXQsSHV0LHZBLEJ1dF0sZXhwb3J0czpbcmJ0XX0pO2NsYXNzIGp1dHt9anV0Lsm1bW9kPXhvKHt0eXBlOmp1dH0pLGp1dC7JtWluaj1HZSh7ZmFjdG9yeTpmdW5jdGlvbiB0KG4pe3JldHVybiBuZXcobnx8anV0KX0saW1wb3J0czpbW1BPXV19KSwoInVuZGVmaW5lZCI9PXR5cGVvZiBuZ0ppdE1vZGV8fG5nSml0TW9kZSkmJnlvKGp1dCx7ZGVjbGFyYXRpb25zOltjYnQsc2J0XSxpbXBvcnRzOltQT10sZXhwb3J0czpbc2J0XX0pO2NsYXNzIFV1dHt9VXV0Lsm1bW9kPXhvKHt0eXBlOlV1dH0pLFV1dC7JtWluaj1HZSh7ZmFjdG9yeTpmdW5jdGlvbiB0KG4pe3JldHVybiBuZXcobnx8VXV0KX0saW1wb3J0czpbW1BPLFZCLG9BLGp1dF1dfSksKCJ1bmRlZmluZWQiPT10eXBlb2YgbmdKaXRNb2RlfHxuZ0ppdE1vZGUpJiZ5byhVdXQse2RlY2xhcmF0aW9uczpbZ2J0LHBidF0saW1wb3J0czpbUE8sVkIsb0EsanV0XSxleHBvcnRzOltwYnRdfSk7Y2xhc3MgV3V0e31XdXQuybVtb2Q9eG8oe3R5cGU6V3V0fSksV3V0Lsm1aW5qPUdlKHtmYWN0b3J5OmZ1bmN0aW9uIHQobil7cmV0dXJuIG5ldyhufHxXdXQpfSxpbXBvcnRzOltbUE8sT0gsbVYsVkIsaUssUnV0LG9BLER1dCxWdXQsVXV0XV19KSwoInVuZGVmaW5lZCI9PXR5cGVvZiBuZ0ppdE1vZGV8fG5nSml0TW9kZSkmJnlvKFd1dCx7ZGVjbGFyYXRpb25zOltDYnQsTWJ0XSxpbXBvcnRzOltQTyxPSCxtVixWQixpSyxSdXQsb0EsRHV0LFZ1dCxVdXRdLGV4cG9ydHM6W01idF19KTtjbGFzcyBHdXR7fUd1dC7JtW1vZD14byh7dHlwZTpHdXR9KSxHdXQuybVpbmo9R2Uoe2ZhY3Rvcnk6ZnVuY3Rpb24gdChuKXtyZXR1cm4gbmV3KG58fEd1dCl9LGltcG9ydHM6W1tQTyxPSCxtVixWQixpSyxSdXQsb0EsVnV0LFV1dF1dfSksKCJ1bmRlZmluZWQiPT10eXBlb2YgbmdKaXRNb2RlfHxuZ0ppdE1vZGUpJiZ5byhHdXQse2RlY2xhcmF0aW9uczpbdmJ0LHdidF0saW1wb3J0czpbUE8sT0gsbVYsVkIsaUssUnV0LG9BLFZ1dCxVdXRdLGV4cG9ydHM6W3didF19KTtjbGFzcyBZdXR7fVl1dC7JtW1vZD14byh7dHlwZTpZdXR9KSxZdXQuybVpbmo9R2Uoe2ZhY3Rvcnk6ZnVuY3Rpb24gdChuKXtyZXR1cm4gbmV3KG58fFl1dCl9LGltcG9ydHM6W1tQTyx2dXQsV3V0LEd1dCx5dXQsSXYuZm9yRmVhdHVyZShPZHQsKGZ1bmN0aW9uIHF1dCh0LG4pe3JldHVybiB2Z3QodCxuKX0pKSxmdy5mb3JGZWF0dXJlKFtrdXRdKSxncS5mb3JQbHVnaW4oIm5wbWkiLFRidCldXX0pLCgidW5kZWZpbmVkIj09dHlwZW9mIG5nSml0TW9kZXx8bmdKaXRNb2RlKSYmeW8oWXV0LHtkZWNsYXJhdGlvbnM6W1JidCxUYnRdLGltcG9ydHM6W1BPLHZ1dCxXdXQsR3V0LHl1dCxEdix1dyxncV0sZXhwb3J0czpbVGJ0XX0pO2NsYXNzIFp1dHt9WnV0Lsm1ZmFjPWZ1bmN0aW9uIHQobil7cmV0dXJuIG5ldyhufHxadXQpfSxadXQuybVjbXA9X28oe3R5cGU6WnV0LHNlbGVjdG9yczpbWyJ0ZXh0LWRhc2hib2FyZCJdXSxkZWNsczoxLHZhcnM6MCx0ZW1wbGF0ZTpmdW5jdGlvbiB0KG4sZSl7MSZuJiZKcCgwLCIgVGhpcyBpcyB0aGUgdGV4dCBkYXNoYm9hcmQgIil9LGVuY2Fwc3VsYXRpb246MixjaGFuZ2VEZXRlY3Rpb246MH0pO2NsYXNzIFh1dHt9WHV0Lsm1bW9kPXhvKHt0eXBlOlh1dH0pLFh1dC7JtWluaj1HZSh7ZmFjdG9yeTpmdW5jdGlvbiB0KG4pe3JldHVybiBuZXcobnx8WHV0KX19KSwoInVuZGVmaW5lZCI9PXR5cGVvZiBuZ0ppdE1vZGV8fG5nSml0TW9kZSkmJnlvKFh1dCx7ZGVjbGFyYXRpb25zOltadXRdLGV4cG9ydHM6W1p1dF19KTtjbGFzcyBKdXR7fUp1dC7JtWZhYz1mdW5jdGlvbiB0KG4pe3JldHVybiBuZXcobnx8SnV0KX0sSnV0Lsm1cHJvdj1XZSh7dG9rZW46SnV0LGZhY3Rvcnk6SnV0Lsm1ZmFjfSk7Y2xhc3MgUXV0e2NvbnN0cnVjdG9yKHQpe3RoaXMuaHR0cD10LHRoaXMuaHR0cFBhdGhQcmVmaXg9ImRhdGEvcGx1Z2luL3RleHRfdjIifWZldGNoUnVuVG9UYWcoKXtyZXR1cm4gdGhpcy5odHRwLmdldCh0aGlzLmh0dHBQYXRoUHJlZml4KyIvdGFncyIpLnBpcGUoZnQoKHQ9Pntjb25zdCBuPW5ldyBNYXA7cmV0dXJuIE9iamVjdC5lbnRyaWVzKHQpLmZvckVhY2goKChbdCxlXSk9PntuLnNldCh0LGUpfSkpLG59KSkpfWZldGNoVGV4dERhdGEodCxuKXtjb25zdCBlPW5ldyBVUkxTZWFyY2hQYXJhbXMoe3J1bjp0LHRhZzpufSk7cmV0dXJuIHRoaXMuaHR0cC5nZXQodGhpcy5odHRwUGF0aFByZWZpeCtgL3RleHQ/JHtlLnRvU3RyaW5nKCl9YCkucGlwZShmdCgodD0+dC5tYXAoKHQ9Pih7b3JpZ2luYWxTaGFwZTp0Lm9yaWdpbmFsX3NoYXBlLHN0ZXA6dC5zdGVwLHN0cmluZ0FycmF5OnQuc3RyaW5nX2FycmF5LHdhbGxUaW1lSW5NczoxZTMqdC53YWxsX3RpbWUsdHJ1bmNhdGVkOnQudHJ1bmNhdGVkfSkpKSkpKX19UXV0Lsm1ZmFjPWZ1bmN0aW9uIHQobil7cmV0dXJuIG5ldyhufHxRdXQpKFphKG1UKSl9LFF1dC7JtXByb3Y9V2Uoe3Rva2VuOlF1dCxmYWN0b3J5OlF1dC7JtWZhY30pO2NsYXNzIEt1dHt9S3V0Lsm1bW9kPXhvKHt0eXBlOkt1dH0pLEt1dC7JtWluaj1HZSh7ZmFjdG9yeTpmdW5jdGlvbiB0KG4pe3JldHVybiBuZXcobnx8S3V0KX0scHJvdmlkZXJzOltRdXQse3Byb3ZpZGU6SnV0LHVzZUV4aXN0aW5nOlF1dH1dLGltcG9ydHM6W1tTVF1dfSksKCJ1bmRlZmluZWQiPT10eXBlb2YgbmdKaXRNb2RlfHxuZ0ppdE1vZGUpJiZ5byhLdXQse2ltcG9ydHM6W1NUXX0pO2NvbnN0ICR1dD1PaygiW1RleHRdIFRleHQgUGx1Z2luIExvYWRlZCIpLHRmdD1PaygiW1RleHRdIFJ1bnMgVG8gVGFnIExvYWRlZCIse19hczoicHJvcHMiLF9wOnZvaWQgMH0pLG5mdD1PaygiW1RleHRdIFRhZyBHcm91cCBWaXNpYmlsaXR5IENoYW5nZWQiLHtfYXM6InByb3BzIixfcDp2b2lkIDB9KSxlZnQ9T2soIltUZXh0XSBUZXh0IERhdGEgTG9hZGVkIExvYWRlZCIse19hczoicHJvcHMiLF9wOnZvaWQgMH0pLGFmdD0idGV4dCIsb2Z0PXV2KGFmdCk7cHYob2Z0LCh0PT50LnJ1blRvVGFncykpO2NvbnN0IHJmdD1wdihvZnQsKHQ9Pntjb25zdCBuPW5ldyBTZXQsZT1uZXcgU2V0O2Zvcihjb25zdCBhIG9mIHQudmlzaWJsZVJ1blRhZ3MudmFsdWVzKCkpZm9yKGNvbnN0IHQgb2YgYSl7Y29uc3QgYT1KU09OLnN0cmluZ2lmeSh0KTtuLmhhcyhhKXx8KG4uYWRkKGEpLGUuYWRkKHQpKX1yZXR1cm5bLi4uZV19KSksaWZ0PXB2KG9mdCwoKHQsbik9Pntjb25zdCBlPXQuZGF0YS5nZXQobi5ydW4pO3JldHVybiBlJiZlLmdldChuLnRhZyl8fG51bGx9KSk7Y2xhc3MgY2Z0e2NvbnN0cnVjdG9yKHQsbixlKXt0aGlzLmFjdGlvbnMkPXQsdGhpcy5zdG9yZT1uLHRoaXMuZGF0YVNvdXJjZT1lLHRoaXMubG9hZFJ1blRvVGFncyQ9WXYoKCgpPT50aGlzLmFjdGlvbnMkLnBpcGUodHcoJHV0KSxzZSgoKCk9PnRoaXMuZGF0YVNvdXJjZS5mZXRjaFJ1blRvVGFnKCkucGlwZShoZSgodD0+e3RoaXMuc3RvcmUuZGlzcGF0Y2godGZ0KHtydW5Ub1RhZ3M6dH0pKX0pKSxmdCgoKCk9Pnt9KSkpKSkpKSx7ZGlzcGF0Y2g6ITF9KSx0aGlzLmxvYWREYXRhJD1ZdigoKCk9Pld0KHRoaXMuYWN0aW9ucyQucGlwZSh0dyhuZnQpLHNlKCgoe3Zpc2libGVUZXh0Q2FyZHM6dH0pPT5IdCh0Lm1hcCgoKHtydW46dCx0YWc6bn0pPT50aGlzLnN0b3JlLnNlbGVjdChpZnQse3J1bjp0LHRhZzpufSkucGlwZSgoZnVuY3Rpb24gZSh0LG4pe2NvbnN0IGU9YXJndW1lbnRzLmxlbmd0aD49MjtyZXR1cm4gYT0+YS5waXBlKHQ/R3QoKChuLGUpPT50KG4sZSxhKSkpOmIsVW4oMSksZT9wbihuKTpFbigoKCk9Pm5ldyBidCkpKX0pKCksZnQoKGU9Pih7cnVuOnQsdGFnOm4sdGV4dERhdGE6ZX0pKSkpKSkpLnBpcGUoZnQoKHQ9PnQuZmlsdGVyKCgoe3RleHREYXRhOnR9KT0+bnVsbD09PXQpKS5tYXAoKCh7cnVuOnQsdGFnOm59KT0+KHtydW46dCx0YWc6bn0pKSkpKSkpKSksdGhpcy5hY3Rpb25zJC5waXBlKHR3KHVJLGZJKSx5ZSh0aGlzLnN0b3JlLnNlbGVjdChyZnQpKSxmdCgoKFssdF0pPT50KSkpKS5waXBlKFR0KCh0PT5IdCh0Lm1hcCgodD0+dGhpcy5mZXRjaFRleHREYXRhKHQpKSkpKSkpKSx7ZGlzcGF0Y2g6ITF9KX1mZXRjaFRleHREYXRhKHQpe2NvbnN0e3J1bjpuLHRhZzplfT10O3JldHVybiB0aGlzLmRhdGFTb3VyY2UuZmV0Y2hUZXh0RGF0YShuLGUpLnBpcGUoaGUoKHQ9Pnt0aGlzLnN0b3JlLmRpc3BhdGNoKGVmdCh7cnVuOm4sdGFnOmUsc3RlcERhdGE6dH0pKX0pKSxmdCgoKCk9Pnt9KSkpfX1jZnQuybVmYWM9ZnVuY3Rpb24gdChuKXtyZXR1cm4gbmV3KG58fGNmdCkoWmEoJHYpLFphKGN2KSxaYShKdXQpKX0sY2Z0Lsm1cHJvdj1XZSh7dG9rZW46Y2Z0LGZhY3Rvcnk6Y2Z0Lsm1ZmFjfSk7Y29uc3Qgc2Z0PVV2KHtydW5Ub1RhZ3M6bmV3IE1hcChbWyJydW4xIixbImEvYiIsImEvYyJdXSxbInJ1bjIiLFsiYS9iIiwiYS9kIl1dLFsicnVuMyIsWyJjIiwiYS9iIl1dXSksZGF0YTpuZXcgTWFwKFtbInJ1bjEiLG5ldyBNYXAoW1siYS9iIixbe29yaWdpbmFsU2hhcGU6WzNdLHN0ZXA6MCxzdHJpbmdBcnJheTpbWyJmb28iLCJiYXIiLCJiYXoiXV0sd2FsbFRpbWVJbk1zOjE1Nzc4NjU2ZTUsdHJ1bmNhdGVkOiExfSx7b3JpZ2luYWxTaGFwZTpbM10sc3RlcDoxLHN0cmluZ0FycmF5OltbImZvbyIsImJheiJdXSx3YWxsVGltZUluTXM6MTU3Nzg2NTYwMWUzLHRydW5jYXRlZDohMX1dXSxbImEvYyIsW3tvcmlnaW5hbFNoYXBlOlszXSxzdGVwOjAsc3RyaW5nQXJyYXk6W1siV2UgY29uZHVjdGVkIGFuIGV4cGVyaW1lbnQgYW5kIGZvdW5kIHRoZSBmb2xsb3dpbmcgZGF0YTpcblxuUG91bmRzIG9mIGNob2NvbGF0ZSB8IEhhcHBpbmVzc1xuLS0tfC0tLVxuMCB8IDFcbjEgfCA0XG4yIHwgOVxuMyB8IDE2XG40IHwgMjVcbjUgfCAzNlxuNiB8IDQ5XG43IHwgNjRcbjggfCA4MVxuOSB8IDEwMFxuMTAgfCAxMjEiXV0sd2FsbFRpbWVJbk1zOjE1Nzc4NjU2ZTUsdHJ1bmNhdGVkOiExfSx7b3JpZ2luYWxTaGFwZTpbM10sc3RlcDoxLHN0cmluZ0FycmF5OltbIsOXIiwiKiowKioiLCIqKjEqKiIsIioqMioqIiwiKiozKioiLCIqKjQqKiIsIioqNSoqIl0sWyIqKjAqKiIsIjAiLCIwIiwiMCIsIjAiLCIwIiwiMCJdLFsiKioxKioiLCIwIiwiMSIsIjIiLCIzIiwiNCIsIjUiXSxbIioqMioqIiwiMCIsIjIiLCI0IiwiNiIsIjgiLCIxMCJdLFsiKiozKioiLCIwIiwiMyIsIjYiLCI5IiwiMTIiLCIxNSJdLFsiKio0KioiLCIwIiwiNCIsIjgiLCIxMiIsIjE2IiwiMjAiXSxbIioqNSoqIiwiMCIsIjUiLCIxMCIsIjE1IiwiMjAiLCIyNSJdXSx3YWxsVGltZUluTXM6MTU3Nzg2NTYwMWUzLHRydW5jYXRlZDohMX1dXV0pXV0pLHZpc2libGVSdW5UYWdzOm5ldyBNYXB9KTtjbGFzcyBsZnR7fWxmdC7JtW1vZD14byh7dHlwZTpsZnR9KSxsZnQuybVpbmo9R2Uoe2ZhY3Rvcnk6ZnVuY3Rpb24gdChuKXtyZXR1cm4gbmV3KG58fGxmdCl9LGltcG9ydHM6W1tQTyxYdXQsZ3EuZm9yUGx1Z2luKCJ0ZXh0X3YyIixadXQpLEt1dCxJdi5mb3JGZWF0dXJlKGFmdCwoZnVuY3Rpb24gbWZ0KHQsbil7cmV0dXJuIHNmdCh0LG4pfSkpLGZ3LmZvckZlYXR1cmUoW2NmdF0pXV19KSwoInVuZGVmaW5lZCI9PXR5cGVvZiBuZ0ppdE1vZGV8fG5nSml0TW9kZSkmJnlvKGxmdCx7aW1wb3J0czpbUE8sWHV0LGdxLEt1dCxEdix1d119KTtjbGFzcyBkZnR7fXZhciBnZnQ7ZGZ0Lsm1bW9kPXhvKHt0eXBlOmRmdH0pLGRmdC7JtWluaj1HZSh7ZmFjdG9yeTpmdW5jdGlvbiB0KG4pe3JldHVybiBuZXcobnx8ZGZ0KX0saW1wb3J0czpbW3BxLGhkdCxZdXQsbGZ0XV19KSwoInVuZGVmaW5lZCI9PXR5cGVvZiBuZ0ppdE1vZGV8fG5nSml0TW9kZSkmJnlvKGRmdCx7aW1wb3J0czpbcHEsaGR0LFl1dCxsZnRdfSksKGZ1bmN0aW9uKHQpe3QuQ1VTVE9NX0VMRU1FTlQ9IkNVU1RPTV9FTEVNRU5UIix0LklGUkFNRT0iSUZSQU1FIix0Lk5HX0NPTVBPTkVOVD0iTkdfQ09NUE9ORU5UIix0Lk5PTkU9Ik5PTkUifSkoZ2Z0fHwoZ2Z0PXt9KSk7Y29uc3QgcGZ0PVsicGx1Z2luQ29udGFpbmVyIl0sYmZ0PVsibmdQbHVnaW5Db250YWluZXIiXTtmdW5jdGlvbiB1ZnQodCxuKXsxJnQmJmFwKDApfWZ1bmN0aW9uIGZmdCh0LG4pe2lmKDEmdCYmKG5wKDApLFlnKDEsdWZ0LDEsMCwibmctY29udGFpbmVyIiw5KSxlcCgpKSwyJnQpe2NvbnN0IHQ9Z3AoMiksbj1xZyg2KTt3cygxKSxKZygibmdUZW1wbGF0ZU91dGxldCIsdC5lbnZpcm9ubWVudEZhaWx1cmVOb3RGb3VuZFRlbXBsYXRlP3QuZW52aXJvbm1lbnRGYWlsdXJlTm90Rm91bmRUZW1wbGF0ZTpuKX19ZnVuY3Rpb24gaGZ0KHQsbil7MSZ0JiZhcCgwKX1mdW5jdGlvbiBfZnQodCxuKXtpZigxJnQmJihucCgwKSxZZygxLGhmdCwxLDAsIm5nLWNvbnRhaW5lciIsOSksZXAoKSksMiZ0KXtjb25zdCB0PWdwKDIpLG49cWcoNik7d3MoMSksSmcoIm5nVGVtcGxhdGVPdXRsZXQiLHQuZW52aXJvbm1lbnRGYWlsdXJlVW5rbm93blRlbXBsYXRlP3QuZW52aXJvbm1lbnRGYWlsdXJlVW5rbm93blRlbXBsYXRlOm4pfX1mdW5jdGlvbiBDZnQodCxuKXtpZigxJnQmJihucCgwKSxLZygxLCJoMyIsMTApLEpwKDIsIiBUaGVyZeKAmXMgbm8gZGFzaGJvYXJkIGJ5IHRoZSBuYW1lIG9mIOKAnCIpLEtnKDMsImNvZGUiKSxKcCg0KSwkZygpLEpwKDUsIuKAnS4gIiksJGcoKSxLZyg2LCJwIiksSnAoNywiWW91IGNhbiBzZWxlY3QgYSBkYXNoYm9hcmQgZnJvbSB0aGUgbGlzdCBhYm92ZS4iKSwkZygpLEtnKDgsInAiKSxhcCg5LDExKSwkZygpLGVwKCkpLDImdCl7Y29uc3QgdD1ncCgyKSxuPXFnKDgpO3dzKDQpLFFwKHQuYWN0aXZlUGx1Z2luSWQpLHdzKDUpLEpnKCJuZ1RlbXBsYXRlT3V0bGV0IixuKX19ZnVuY3Rpb24gTWZ0KHQsbil7aWYoMSZ0JiYobnAoMCksS2coMSwiaDMiLDEyKSxKcCgyLCIgTm8gZGFzaGJvYXJkcyBhcmUgYWN0aXZlIGZvciB0aGUgY3VycmVudCBkYXRhIHNldC4gIiksJGcoKSxLZygzLCJwIiksSnAoNCwiUHJvYmFibGUgY2F1c2VzOiIpLCRnKCksS2coNSwidWwiKSxLZyg2LCJsaSIpLEpwKDcsIllvdSBoYXZlbuKAmXQgd3JpdHRlbiBhbnkgZGF0YSB0byB5b3VyIGV2ZW50IGZpbGVzLiIpLCRnKCksS2coOCwibGkiKSxKcCg5LCJUZW5zb3JCb2FyZCBjYW7igJl0IGZpbmQgeW91ciBldmVudCBmaWxlcy4iKSwkZygpLCRnKCksSnAoMTAsIiBJZiB5b3XigJlyZSBuZXcgdG8gdXNpbmcgVGVuc29yQm9hcmQsIGFuZCB3YW50IHRvIGZpbmQgb3V0IGhvdyB0byBhZGQgZGF0YSBhbmQgc2V0IHVwIHlvdXIgZXZlbnQgZmlsZXMsIGNoZWNrIG91dCB0aGUgIiksS2coMTEsImEiLDEzKSxKcCgxMiwiUkVBRE1FIiksJGcoKSxKcCgxMywiIGFuZCBwZXJoYXBzIHRoZSAiKSxLZygxNCwiYSIsMTQpLEpwKDE1LCJUZW5zb3JCb2FyZCB0dXRvcmlhbCIpLCRnKCksSnAoMTYsIi4gIiksS2coMTcsInAiKSxKcCgxOCwiIElmIHlvdSB0aGluayBUZW5zb3JCb2FyZCBpcyBjb25maWd1cmVkIHByb3Blcmx5LCBwbGVhc2Ugc2VlICIpLEtnKDE5LCJhIiwxNSksSnAoMjAsInRoZSBzZWN0aW9uIG9mIHRoZSBSRUFETUUgZGV2b3RlZCB0byBtaXNzaW5nIGRhdGEgcHJvYmxlbXMiKSwkZygpLEpwKDIxLCIgYW5kIGNvbnNpZGVyIGZpbGluZyBhbiBpc3N1ZSBvbiBHaXRIdWIuICIpLCRnKCksS2coMjIsInAiKSxhcCgyMywxMSksJGcoKSxlcCgpKSwyJnQpe2dwKDIpO2NvbnN0IHQ9cWcoOCk7d3MoMjMpLEpnKCJuZ1RlbXBsYXRlT3V0bGV0Iix0KX19ZnVuY3Rpb24gT2Z0KHQsbil7aWYoMSZ0JiYoS2coMCwiZGl2Iiw2KSxLZygxLCJkaXYiLDcpLFlnKDIsZmZ0LDIsMSwibmctY29udGFpbmVyIiw4KSxZZygzLF9mdCwyLDEsIm5nLWNvbnRhaW5lciIsOCksWWcoNCxDZnQsMTAsMiwibmctY29udGFpbmVyIiw4KSxZZyg1LE1mdCwyNCwxLCJuZy1jb250YWluZXIiLDgpLCRnKCksJGcoKSksMiZ0KXtjb25zdCB0PWdwKCk7SmcoIm5nU3dpdGNoIix0LnBsdWdpbkxvYWRTdGF0ZSksd3MoMiksSmcoIm5nU3dpdGNoQ2FzZSIsdC5QbHVnaW5Mb2FkU3RhdGUuRU5WSVJPTk1FTlRfRkFJTFVSRV9OT1RfRk9VTkQpLHdzKDEpLEpnKCJuZ1N3aXRjaENhc2UiLHQuUGx1Z2luTG9hZFN0YXRlLkVOVklST05NRU5UX0ZBSUxVUkVfVU5LTk9XTiksd3MoMSksSmcoIm5nU3dpdGNoQ2FzZSIsdC5QbHVnaW5Mb2FkU3RhdGUuVU5LTk9XTl9QTFVHSU5fSUQpLHdzKDEpLEpnKCJuZ1N3aXRjaENhc2UiLHQuUGx1Z2luTG9hZFN0YXRlLk5PX0VOQUJMRURfUExVR0lOUyl9fWZ1bmN0aW9uIFBmdCh0LG4pe2lmKDEmdCYmKEtnKDAsImgzIiwxNiksSnAoMSwiRGF0YSBjb3VsZCBub3QgYmUgbG9hZGVkLiIpLCRnKCksS2coMiwicCIpLEpwKDMsIlRoZSBUZW5zb3JCb2FyZCBzZXJ2ZXIgbWF5IGJlIGRvd24gb3IgaW5hY2Nlc3NpYmxlLiIpLCRnKCksS2coNCwicCIpLGFwKDUsMTEpLCRnKCkpLDImdCl7Z3AoKTtjb25zdCB0PXFnKDgpO3dzKDUpLEpnKCJuZ1RlbXBsYXRlT3V0bGV0Iix0KX19ZnVuY3Rpb24geGZ0KHQsbil7aWYoMSZ0JiYoS2coMCwicCIsMTkpLEtnKDEsImkiKSxKcCgyLCJMb2cgZGlyZWN0b3J5OiAiKSxLZygzLCJzcGFuIiksSnAoNCksJGcoKSwkZygpLCRnKCkpLDImdCl7Y29uc3QgdD1ncCgyKTt3cyg0KSxRcCh0LmRhdGFMb2NhdGlvbil9fWZ1bmN0aW9uIHlmdCh0LG4pe2lmKDEmdCYmKEtnKDAsInNwYW4iLDE3KSxKcCgxKSx5ZigyLCJkYXRlIiksJGcoKSxZZygzLHhmdCw1LDEsInAiLDE4KSksMiZ0KXtjb25zdCB0PWdwKCk7d3MoMSksS3AoIkxhc3QgcmVsb2FkOiAiLHZmKDIsMix0Lmxhc3RVcGRhdGVkLCJtZWRpdW0iKSwiIiksd3MoMiksSmcoIm5nSWYiLHQuZGF0YUxvY2F0aW9uKX19dmFyIGtmdDshKGZ1bmN0aW9uKHQpe3RbdC5FTlZJUk9OTUVOVF9GQUlMVVJFX05PVF9GT1VORD0wXT0iRU5WSVJPTk1FTlRfRkFJTFVSRV9OT1RfRk9VTkQiLHRbdC5FTlZJUk9OTUVOVF9GQUlMVVJFX1VOS05PV049MV09IkVOVklST05NRU5UX0ZBSUxVUkVfVU5LTk9XTiIsdFt0Lk5PX0VOQUJMRURfUExVR0lOUz0yXT0iTk9fRU5BQkxFRF9QTFVHSU5TIix0W3QuVU5LTk9XTl9QTFVHSU5fSUQ9M109IlVOS05PV05fUExVR0lOX0lEIix0W3QuTE9BREVEPTRdPSJMT0FERUQiLHRbdC5MT0FESU5HPTVdPSJMT0FESU5HIn0pKGtmdHx8KGtmdD17fSkpO2NsYXNzIHZmdHtjb25zdHJ1Y3Rvcih0LG4pe3RoaXMuY29tcG9uZW50RmFjdG9yeVJlc29sdmVyPXQsdGhpcy5wbHVnaW5SZWdpc3RyeT1uLHRoaXMuZXhwZXJpbWVudFBsdWdpbkhvc3RMaWI9ZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgidGYtZXhwZXJpbWVudGFsLXBsdWdpbi1ob3N0LWxpYiIpLHRoaXMuUGx1Z2luTG9hZFN0YXRlPWtmdCx0aGlzLkxvYWRpbmdNZWNoYW5pc21UeXBlPWdmdCx0aGlzLnBsdWdpbkluc3RhbmNlcz1uZXcgTWFwfW5nT25DaGFuZ2VzKHQpe3ZhciBuO2lmKCF0aGlzLmlzRmVhdHVyZUZsYWdzTG9hZGVkfHwhdGhpcy5hY3RpdmVLbm93blBsdWdpbilyZXR1cm47Y29uc3QgZT1Cb29sZWFuKHRoaXMuYWN0aXZlS25vd25QbHVnaW4mJiF0aGlzLnBsdWdpbkluc3RhbmNlcy5oYXModGhpcy5hY3RpdmVLbm93blBsdWdpbi5pZCkpO2lmKHQuYWN0aXZlS25vd25QbHVnaW58fHQuaXNGZWF0dXJlRmxhZ3NMb2FkZWQpe2NvbnN0IGE9bnVsbD09PShuPXQuYWN0aXZlS25vd25QbHVnaW4pfHx2b2lkIDA9PT1uP3ZvaWQgMDpuLnByZXZpb3VzVmFsdWU7aWYoYSYmYS5pZCE9PXRoaXMuYWN0aXZlS25vd25QbHVnaW4uaWQmJnRoaXMuaGlkZVBsdWdpbihhKSxlKXtjb25zdCB0PXRoaXMuY3JlYXRlUGx1Z2luKHRoaXMuYWN0aXZlS25vd25QbHVnaW4pO3QmJnRoaXMucGx1Z2luSW5zdGFuY2VzLnNldCh0aGlzLmFjdGl2ZUtub3duUGx1Z2luLmlkLHQpfWVsc2UgdGhpcy5zaG93UGx1Z2luKHRoaXMuYWN0aXZlS25vd25QbHVnaW4pfShlfHx0Lmxhc3RVcGRhdGVkKSYmdGhpcy5yZWxvYWQodGhpcy5hY3RpdmVLbm93blBsdWdpbixlKX1oaWRlUGx1Z2luKHQpe2lmKCF0aGlzLnBsdWdpbkluc3RhbmNlcy5oYXModC5pZCkpcmV0dXJuO2NvbnN0IG49dGhpcy5wbHVnaW5JbnN0YW5jZXMuZ2V0KHQuaWQpO09iamVjdC5hc3NpZ24obi5zdHlsZSx7bWF4SGVpZ2h0OjAsb3ZlcmZsb3c6ImhpZGRlbiIsdmlzaWJpbGl0eToiaGlkZGVuIixwb3NpdGlvbjoiYWJzb2x1dGUifSl9c2hvd1BsdWdpbih0KXtpZighdGhpcy5wbHVnaW5JbnN0YW5jZXMuaGFzKHQuaWQpKXJldHVybjtjb25zdCBuPXRoaXMucGx1Z2luSW5zdGFuY2VzLmdldCh0LmlkKTtPYmplY3QuYXNzaWduKG4uc3R5bGUse21heEhlaWdodDpudWxsLG92ZXJmbG93Om51bGwsdmlzaWJpbGl0eTpudWxsLHBvc2l0aW9uOm51bGx9KX1jcmVhdGVQbHVnaW4odCl7bGV0IG49bnVsbDtzd2l0Y2godC5sb2FkaW5nX21lY2hhbmlzbS50eXBlKXtjYXNlIGdmdC5DVVNUT01fRUxFTUVOVDpuPWRvY3VtZW50LmNyZWF0ZUVsZW1lbnQodC5sb2FkaW5nX21lY2hhbmlzbS5lbGVtZW50X25hbWUpLG4ucmVsb2FkT25SZWFkeT0hMSxuLmZlYXR1cmVGbGFncz10aGlzLmZlYXR1cmVGbGFncyx0aGlzLnBsdWdpbnNDb250YWluZXIubmF0aXZlRWxlbWVudC5hcHBlbmRDaGlsZChuKTticmVhaztjYXNlIGdmdC5JRlJBTUU6bj1kb2N1bWVudC5jcmVhdGVFbGVtZW50KCJpZnJhbWUiKSxuLnNldEF0dHJpYnV0ZSgic3JjIixgZGF0YS9wbHVnaW5fZW50cnkuaHRtbD9uYW1lPSR7dC5pZH1gKSx0aGlzLmV4cGVyaW1lbnRQbHVnaW5Ib3N0TGliLnJlZ2lzdGVyUGx1Z2luSWZyYW1lKG4sdC5pZCksdGhpcy5wbHVnaW5zQ29udGFpbmVyLm5hdGl2ZUVsZW1lbnQuYXBwZW5kQ2hpbGQobik7YnJlYWs7Y2FzZSBnZnQuTkdfQ09NUE9ORU5UOmNvbnN0IGU9dGhpcy5wbHVnaW5SZWdpc3RyeS5nZXRDb21wb25lbnQodC5pZCk7aWYoZSl7Y29uc3QgdD10aGlzLmNvbXBvbmVudEZhY3RvcnlSZXNvbHZlci5yZXNvbHZlQ29tcG9uZW50RmFjdG9yeShlKTtuPXRoaXMubmdQbHVnaW5Db250YWluZXIuY3JlYXRlQ29tcG9uZW50KHQpLmxvY2F0aW9uLm5hdGl2ZUVsZW1lbnR9ZWxzZSBjb25zb2xlLmVycm9yKGBObyByZWdpc3RlcmVkIEFuZ3VsYXIgY29tcG9uZW50IGZvciBwbHVnaW46ICR7dC5pZH1gKTticmVhaztjYXNlIGdmdC5OT05FOmJyZWFrO2RlZmF1bHQ6Y29uc29sZS5lcnJvcigiVW5leHBlY3RlZCBwbHVnaW4iKX1yZXR1cm4gbn1yZWxvYWQodCxuKXtpZighbiYmdC5kaXNhYmxlX3JlbG9hZClyZXR1cm47Y29uc3QgZT10aGlzLnBsdWdpbkluc3RhbmNlcy5nZXQodC5pZCk7ZSYmZS5yZWxvYWQmJmUucmVsb2FkKCl9fXZmdC7JtWZhYz1mdW5jdGlvbiB0KG4pe3JldHVybiBuZXcobnx8dmZ0KShaZyhQdSksWmcoZ3EpKX0sdmZ0Lsm1Y21wPV9vKHt0eXBlOnZmdCxzZWxlY3RvcnM6W1sicGx1Z2lucy1jb21wb25lbnQiXV0sdmlld1F1ZXJ5OmZ1bmN0aW9uIHQobixlKXt2YXIgYTsxJm4mJihqZihwZnQsITAseHUpLGpmKGJmdCwhMCwkdSkpLDImbiYmKFZmKGE9WmYoKSkmJihlLnBsdWdpbnNDb250YWluZXI9YS5maXJzdCksVmYoYT1aZigpKSYmKGUubmdQbHVnaW5Db250YWluZXI9YS5maXJzdCkpfSxpbnB1dHM6e2FjdGl2ZVBsdWdpbklkOiJhY3RpdmVQbHVnaW5JZCIsYWN0aXZlS25vd25QbHVnaW46ImFjdGl2ZUtub3duUGx1Z2luIixwbHVnaW5Mb2FkU3RhdGU6InBsdWdpbkxvYWRTdGF0ZSIsZGF0YUxvY2F0aW9uOiJkYXRhTG9jYXRpb24iLGlzRmVhdHVyZUZsYWdzTG9hZGVkOiJpc0ZlYXR1cmVGbGFnc0xvYWRlZCIsZmVhdHVyZUZsYWdzOiJmZWF0dXJlRmxhZ3MiLGxhc3RVcGRhdGVkOiJsYXN0VXBkYXRlZCIsZW52aXJvbm1lbnRGYWlsdXJlTm90Rm91bmRUZW1wbGF0ZToiZW52aXJvbm1lbnRGYWlsdXJlTm90Rm91bmRUZW1wbGF0ZSIsZW52aXJvbm1lbnRGYWlsdXJlVW5rbm93blRlbXBsYXRlOiJlbnZpcm9ubWVudEZhaWx1cmVVbmtub3duVGVtcGxhdGUifSxmZWF0dXJlczpbcHJdLGRlY2xzOjksdmFyczoxLGNvbnN0czpbWzEsInBsdWdpbnMiXSxbInBsdWdpbkNvbnRhaW5lciIsIiJdLFsibmdQbHVnaW5Db250YWluZXIiLCIiXSxbImNsYXNzIiwid2FybmluZyIsMywibmdTd2l0Y2giLDQsIm5nSWYiXSxbImVudmlyb25tZW50RmFpbHVyZURlZmF1bHRUZW1wbGF0ZSIsIiJdLFsiZGF0ZUFuZERhdGFMb2NhdGlvbiIsIiJdLFsxLCJ3YXJuaW5nIiwzLCJuZ1N3aXRjaCJdLFsxLCJ3YXJuaW5nLW1lc3NhZ2UiXSxbNCwibmdTd2l0Y2hDYXNlIl0sWzQsIm5nVGVtcGxhdGVPdXRsZXQiXSxbMSwidW5rbm93bi1wbHVnaW4iXSxbMywibmdUZW1wbGF0ZU91dGxldCJdLFsxLCJuby1hY3RpdmUtcGx1Z2luIl0sWyJocmVmIiwiaHR0cHM6Ly9naXRodWIuY29tL3RlbnNvcmZsb3cvdGVuc29yYm9hcmQvYmxvYi9tYXN0ZXIvUkVBRE1FLm1kIl0sWyJocmVmIiwiaHR0cHM6Ly93d3cudGVuc29yZmxvdy5vcmcvZ2V0X3N0YXJ0ZWQvc3VtbWFyaWVzX2FuZF90ZW5zb3Jib2FyZCJdLFsiaHJlZiIsImh0dHBzOi8vZ2l0aHViLmNvbS90ZW5zb3JmbG93L3RlbnNvcmJvYXJkL2Jsb2IvbWFzdGVyL1JFQURNRS5tZCNteS10ZW5zb3Jib2FyZC1pc250LXNob3dpbmctYW55LWRhdGEtd2hhdHMtd3JvbmciXSxbMSwiZW52aXJvbm1lbnQtbm90LWxvYWRlZCJdLFsxLCJsYXN0LXJlbG9hZC10aW1lIl0sWyJjbGFzcyIsImRhdGEtbG9jYXRpb24iLDQsIm5nSWYiXSxbMSwiZGF0YS1sb2NhdGlvbiJdXSx0ZW1wbGF0ZTpmdW5jdGlvbiB0KG4sZSl7MSZuJiYoS2coMCwiZGl2IiwwLDEpLGFwKDIsbnVsbCwyKSwkZygpLFlnKDQsT2Z0LDYsNSwiZGl2IiwzKSxZZyg1LFBmdCw2LDEsIm5nLXRlbXBsYXRlIixudWxsLDQsS2YpLFlnKDcseWZ0LDQsNSwibmctdGVtcGxhdGUiLG51bGwsNSxLZikpLDImbiYmKHdzKDQpLEpnKCJuZ0lmIixlLnBsdWdpbkxvYWRTdGF0ZSE9PWUuUGx1Z2luTG9hZFN0YXRlLkxPQURFRCYmZS5wbHVnaW5Mb2FkU3RhdGUhPT1lLlBsdWdpbkxvYWRTdGF0ZS5MT0FESU5HKSl9LGRpcmVjdGl2ZXM6W1dNLFpNLFhNLHRPXSxwaXBlczpbbE9dLHN0eWxlczpbIltfbmdob3N0LSVDT01QJV0ge1xuICAgICAgICBkaXNwbGF5OiBibG9jaztcbiAgICAgICAgcG9zaXRpb246IHJlbGF0aXZlO1xuICAgICAgfVxuICAgICAgLnBsdWdpbnNbX25nY29udGVudC0lQ09NUCVdIHtcbiAgICAgICAgaGVpZ2h0OiAxMDAlO1xuICAgICAgICBwb3NpdGlvbjogcmVsYXRpdmU7XG4gICAgICB9XG4gICAgICAud2FybmluZ1tfbmdjb250ZW50LSVDT01QJV0ge1xuICAgICAgICBiYWNrZ3JvdW5kLWNvbG9yOiAjZmZmO1xuICAgICAgICBib3R0b206IDA7XG4gICAgICAgIGxlZnQ6IDA7XG4gICAgICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgICAgICAgcmlnaHQ6IDA7XG4gICAgICAgIHRvcDogMDtcbiAgICAgIH1cbiAgICAgIC53YXJuaW5nLW1lc3NhZ2VbX25nY29udGVudC0lQ09NUCVdIHtcbiAgICAgICAgbWFyZ2luOiA4MHB4IGF1dG8gMDtcbiAgICAgICAgbWF4LXdpZHRoOiA1NDBweDtcbiAgICAgIH1cbiAgICAgIC5sYXN0LXJlbG9hZC10aW1lW19uZ2NvbnRlbnQtJUNPTVAlXSB7XG4gICAgICAgIGZvbnQtc3R5bGU6IGl0YWxpYztcbiAgICAgIH1cbiAgICAgIC5wbHVnaW5zW19uZ2NvbnRlbnQtJUNPTVAlXSAgICAgaWZyYW1lIHtcbiAgICAgICAgYm9yZGVyOiAwO1xuICAgICAgICBkaXNwbGF5OiBibG9jaztcbiAgICAgICAgaGVpZ2h0OiAxMDAlO1xuICAgICAgICB3aWR0aDogMTAwJTtcbiAgICAgIH0iXSxjaGFuZ2VEZXRlY3Rpb246MH0pO2NvbnN0IHdmdD1wdihGSSxOSSwoKHQsbik9Pm4mJnRbbl0/T2JqZWN0LmFzc2lnbih7aWQ6bn0sdFtuXSk6bnVsbCkpLFNmdD1wdihJSSwodD0+dC5sYXN0TG9hZGVkVGltZUluTXMpKTtjbGFzcyBFZnR7Y29uc3RydWN0b3IodCl7dGhpcy5zdG9yZT10LHRoaXMuYWN0aXZlS25vd25QbHVnaW4kPXRoaXMuc3RvcmUuc2VsZWN0KHdmdCksdGhpcy5hY3RpdmVQbHVnaW5JZCQ9dGhpcy5zdG9yZS5zZWxlY3QoTkkpLHRoaXMucGx1Z2luTG9hZFN0YXRlJD1FdCh0aGlzLmFjdGl2ZUtub3duUGx1Z2luJCx0aGlzLmFjdGl2ZVBsdWdpbklkJCx0aGlzLnN0b3JlLnNlbGVjdChJSSkpLnBpcGUoZnQoKChbdCxuLGVdKT0+bnVsbCE9PWUuZmFpbHVyZUNvZGU/ZS5mYWlsdXJlQ29kZT09PXNqLk5PVF9GT1VORD9rZnQuRU5WSVJPTk1FTlRfRkFJTFVSRV9OT1RfRk9VTkQ6a2Z0LkVOVklST05NRU5UX0ZBSUxVUkVfVU5LTk9XTjpudWxsIT09dD9rZnQuTE9BREVEOm51bGw9PT1lLmxhc3RMb2FkZWRUaW1lSW5NcyYmZS5zdGF0ZT09PWZSLkxPQURJTkc/a2Z0LkxPQURJTkc6bj9rZnQuVU5LTk9XTl9QTFVHSU5fSUQ6a2Z0Lk5PX0VOQUJMRURfUExVR0lOUykpKSx0aGlzLmxhc3RMb2FkZWRUaW1lSW5NcyQ9dGhpcy5zdG9yZS5zZWxlY3QoU2Z0KSx0aGlzLmRhdGFMb2NhdGlvbiQ9dGhpcy5zdG9yZS5zZWxlY3QoTEkpLnBpcGUoZnQoKHQ9PnQuZGF0YV9sb2NhdGlvbikpKSx0aGlzLmlzRmVhdHVyZUZsYWdzTG9hZGVkJD10aGlzLnN0b3JlLnNlbGVjdChtUiksdGhpcy5mZWF0dXJlRmxhZ3MkPXRoaXMuc3RvcmUuc2VsZWN0KGRSKX19RWZ0Lsm1ZmFjPWZ1bmN0aW9uIHQobil7cmV0dXJuIG5ldyhufHxFZnQpKFpnKGN2KSl9LEVmdC7JtWNtcD1fbyh7dHlwZTpFZnQsc2VsZWN0b3JzOltbInBsdWdpbnMiXV0saW5wdXRzOntlbnZpcm9ubWVudEZhaWx1cmVOb3RGb3VuZFRlbXBsYXRlOiJlbnZpcm9ubWVudEZhaWx1cmVOb3RGb3VuZFRlbXBsYXRlIixlbnZpcm9ubWVudEZhaWx1cmVVbmtub3duVGVtcGxhdGU6ImVudmlyb25tZW50RmFpbHVyZVVua25vd25UZW1wbGF0ZSJ9LGRlY2xzOjgsdmFyczoyMyxjb25zdHM6W1szLCJhY3RpdmVLbm93blBsdWdpbiIsImFjdGl2ZVBsdWdpbklkIiwiZGF0YUxvY2F0aW9uIiwibGFzdFVwZGF0ZWQiLCJwbHVnaW5Mb2FkU3RhdGUiLCJpc0ZlYXR1cmVGbGFnc0xvYWRlZCIsImZlYXR1cmVGbGFncyIsImVudmlyb25tZW50RmFpbHVyZU5vdEZvdW5kVGVtcGxhdGUiLCJlbnZpcm9ubWVudEZhaWx1cmVVbmtub3duVGVtcGxhdGUiXV0sdGVtcGxhdGU6ZnVuY3Rpb24gdChuLGUpezEmbiYmKHRwKDAsInBsdWdpbnMtY29tcG9uZW50IiwwKSx5ZigxLCJhc3luYyIpLHlmKDIsImFzeW5jIikseWYoMywiYXN5bmMiKSx5Zig0LCJhc3luYyIpLHlmKDUsImFzeW5jIikseWYoNiwiYXN5bmMiKSx5Zig3LCJhc3luYyIpKSwyJm4mJkpnKCJhY3RpdmVLbm93blBsdWdpbiIsa2YoMSw5LGUuYWN0aXZlS25vd25QbHVnaW4kKSkoImFjdGl2ZVBsdWdpbklkIixrZigyLDExLGUuYWN0aXZlUGx1Z2luSWQkKSkoImRhdGFMb2NhdGlvbiIsa2YoMywxMyxlLmRhdGFMb2NhdGlvbiQpKSgibGFzdFVwZGF0ZWQiLGtmKDQsMTUsZS5sYXN0TG9hZGVkVGltZUluTXMkKSkoInBsdWdpbkxvYWRTdGF0ZSIsa2YoNSwxNyxlLnBsdWdpbkxvYWRTdGF0ZSQpKSgiaXNGZWF0dXJlRmxhZ3NMb2FkZWQiLGtmKDYsMTksZS5pc0ZlYXR1cmVGbGFnc0xvYWRlZCQpKSgiZmVhdHVyZUZsYWdzIixrZig3LDIxLGUuZmVhdHVyZUZsYWdzJCkpKCJlbnZpcm9ubWVudEZhaWx1cmVOb3RGb3VuZFRlbXBsYXRlIixlLmVudmlyb25tZW50RmFpbHVyZU5vdEZvdW5kVGVtcGxhdGUpKCJlbnZpcm9ubWVudEZhaWx1cmVVbmtub3duVGVtcGxhdGUiLGUuZW52aXJvbm1lbnRGYWlsdXJlVW5rbm93blRlbXBsYXRlKX0sc3R5bGVzOlsicGx1Z2lucy1jb21wb25lbnRbX25nY29udGVudC0lQ09NUCVdIHsgaGVpZ2h0OiAxMDAlOyB9Il0sY2hhbmdlRGV0ZWN0aW9uOjB9KTtjbGFzcyBBZnR7fUFmdC7JtW1vZD14byh7dHlwZTpBZnR9KSxBZnQuybVpbmo9R2Uoe2ZhY3Rvcnk6ZnVuY3Rpb24gdChuKXtyZXR1cm4gbmV3KG58fEFmdCl9LGltcG9ydHM6W1t1aixQTyxncV1dfSksKCJ1bmRlZmluZWQiPT10eXBlb2YgbmdKaXRNb2RlfHxuZ0ppdE1vZGUpJiZ5byhBZnQse2RlY2xhcmF0aW9uczpbRWZ0LHZmdF0saW1wb3J0czpbdWosUE8sZ3FdLGV4cG9ydHM6W0VmdF19KSxDbyhFZnQsW0hNLEJNLGpNLFdNLHRPLCRNLFpNLFhNLEpNLFFNLEtNLEVmdCx2ZnRdLFtvTyxzTyxyTyxwTyxPTyxmTyxoTyxjTyxfTyxsTyxkTyxnTyxiT10pO2NsYXNzIHpmdHtjb25zdHJ1Y3Rvcih0LG4pe3RoaXMuc3RvcmU9dCx0aGlzLmRvY3VtZW50PW4sdGhpcy5vblZpc2liaWxpdHlDaGFuZ2U9dGhpcy5vblZpc2liaWxpdHlDaGFuZ2VJbXBsLmJpbmQodGhpcyksdGhpcy5yZWxvYWRFbmFibGVkJD10aGlzLnN0b3JlLnBpcGUobHYoSEkpKSx0aGlzLnJlbG9hZFBlcmlvZEluTXMkPXRoaXMuc3RvcmUucGlwZShsdihCSSkpLHRoaXMucmVsb2FkVGltZXJJZD1udWxsLHRoaXMubWlzc2VkQXV0b1JlbG9hZD0hMX1uZ09uSW5pdCgpe3RoaXMuZG9jdW1lbnQuYWRkRXZlbnRMaXN0ZW5lcigidmlzaWJpbGl0eWNoYW5nZSIsdGhpcy5vblZpc2liaWxpdHlDaGFuZ2UpLEV0KHRoaXMucmVsb2FkRW5hYmxlZCQucGlwZSh2bigpKSx0aGlzLnJlbG9hZFBlcmlvZEluTXMkLnBpcGUodm4oKSkpLnN1YnNjcmliZSgoKFt0LG5dKT0+e3RoaXMuY2FuY2VsTG9hZCgpLHQmJnRoaXMubG9hZChuKX0pKX1vblZpc2liaWxpdHlDaGFuZ2VJbXBsKCl7InZpc2libGUiPT09dGhpcy5kb2N1bWVudC52aXNpYmlsaXR5U3RhdGUmJnRoaXMubWlzc2VkQXV0b1JlbG9hZCYmKHRoaXMubWlzc2VkQXV0b1JlbG9hZD0hMSx0aGlzLnN0b3JlLmRpc3BhdGNoKGZJKCkpKX1sb2FkKHQpe3RoaXMucmVsb2FkVGltZXJJZD1zZXRUaW1lb3V0KCgoKT0+eyJ2aXNpYmxlIj09PXRoaXMuZG9jdW1lbnQudmlzaWJpbGl0eVN0YXRlP3RoaXMuc3RvcmUuZGlzcGF0Y2goZkkoKSk6dGhpcy5taXNzZWRBdXRvUmVsb2FkPSEwLHRoaXMubG9hZCh0KX0pLHQpfWNhbmNlbExvYWQoKXtudWxsIT09dGhpcy5yZWxvYWRUaW1lcklkJiZjbGVhclRpbWVvdXQodGhpcy5yZWxvYWRUaW1lcklkKSx0aGlzLnJlbG9hZFRpbWVySWQ9bnVsbH1uZ09uRGVzdHJveSgpe3RoaXMuY2FuY2VsTG9hZCgpLHRoaXMuZG9jdW1lbnQucmVtb3ZlRXZlbnRMaXN0ZW5lcigidmlzaWJpbGl0eWNoYW5nZSIsdGhpcy5vblZpc2liaWxpdHlDaGFuZ2UpfX16ZnQuybVmYWM9ZnVuY3Rpb24gdChuKXtyZXR1cm4gbmV3KG58fHpmdCkoWmcoY3YpLFpnKHpDKSl9LHpmdC7JtWNtcD1fbyh7dHlwZTp6ZnQsc2VsZWN0b3JzOltbInJlbG9hZGVyIl1dLGRlY2xzOjAsdmFyczowLHRlbXBsYXRlOmZ1bmN0aW9uIHQobixlKXt9LGVuY2Fwc3VsYXRpb246MixjaGFuZ2VEZXRlY3Rpb246MH0pO2NsYXNzIFJmdHt9UmZ0Lsm1ZmFjPWZ1bmN0aW9uIHQobil7cmV0dXJuIG5ldyhufHxSZnQpfSxSZnQuybVjbXA9X28oe3R5cGU6UmZ0LHNlbGVjdG9yczpbWyJ0ZW5zb3Jib2FyZC13cmFwcGVyLWNvbXBvbmVudCJdXSxkZWNsczoyLHZhcnM6MCxjb25zdHM6W1sxLCJwbHVnaW5zIl1dLHRlbXBsYXRlOmZ1bmN0aW9uIHQobixlKXsxJm4mJih0cCgwLCJwbHVnaW5zIiwwKSx0cCgxLCJyZWxvYWRlciIpKX0sZGlyZWN0aXZlczpbRWZ0LHpmdF0sc3R5bGVzOlsiW19uZ2hvc3QtJUNPTVAlXSB7XG4gICAgICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgICAgIGZsZXgtZGlyZWN0aW9uOiBjb2x1bW47XG4gICAgICAgIGhlaWdodDogMTAwJTtcbiAgICAgIH1cblxuICAgICAgLnBsdWdpbnNbX25nY29udGVudC0lQ09NUCVdIHtcbiAgICAgICAgZmxleDogMSAxO1xuICAgICAgICBvdmVyZmxvdzogYXV0bztcbiAgICAgICAgcG9zaXRpb246IHJlbGF0aXZlO1xuICAgICAgfSJdLGNoYW5nZURldGVjdGlvbjowfSk7Y2xhc3MgVGZ0e31UZnQuybVmYWM9ZnVuY3Rpb24gdChuKXtyZXR1cm4gbmV3KG58fFRmdCl9LFRmdC7JtXByb3Y9V2Uoe3Rva2VuOlRmdCxmYWN0b3J5OlRmdC7JtWZhY30pO2NvbnN0IERmdD0ic21vb3RoaW5nIjtsZXQgSWZ0PWNsYXNzIGV4dGVuZHMgVGZ0e2dldE1ldHJpY3NQaW5uZWRDYXJkcyh0KXtyZXR1cm4gRXQoW3Quc2VsZWN0KGlEKSx0LnNlbGVjdChzRCldKS5waXBlKGZ0KCgoW3Qsbl0pPT57aWYoIXQubGVuZ3RoJiYhbi5sZW5ndGgpcmV0dXJuW107Y29uc3QgZT1bLi4udC5tYXAoKCh7cGx1Z2luOnQsdGFnOm4sc2FtcGxlOmUscnVuSWQ6YX0pPT57Y29uc3Qgbz17cGx1Z2luOnQsdGFnOm59O3JldHVybiBmVCh0KSYmKG8ucnVuSWQ9YSksYlQodCkmJihvLnNhbXBsZT1lKSxvfSkpLC4uLm5dO3JldHVyblt7a2V5OiJwaW5uZWRDYXJkcyIsdmFsdWU6SlNPTi5zdHJpbmdpZnkoZSl9XX0pKSl9Z2V0RmVhdHVyZUZsYWdTdGF0ZXModCl7cmV0dXJuIEV0KFt0LnNlbGVjdChwUiksdC5zZWxlY3QoZ1IpXSkucGlwZShmdCgoKFt0LG5dKT0+e2NvbnN0IGU9dC5tYXAoKHQ9Pih7a2V5OnZqLHZhbHVlOnR9KSkpO3JldHVybiB2b2lkIDAhPT1uLmVuYWJsZUdwdUNoYXJ0JiZlLnB1c2goe2tleTp3aix2YWx1ZTpTdHJpbmcobi5lbmFibGVHcHVDaGFydCl9KSxlfSkpKX1zZXJpYWxpemVTdGF0ZVRvUXVlcnlQYXJhbXModCl7cmV0dXJuIEV0KFt0aGlzLmdldE1ldHJpY3NQaW5uZWRDYXJkcyh0KSx0aGlzLmdldEZlYXR1cmVGbGFnU3RhdGVzKHQpLHQuc2VsZWN0KHVEKS5waXBlKGZ0KCh0PT50PT09WVQuc2NhbGFyU21vb3RoaW5nP1tdOlt7a2V5OkRmdCx2YWx1ZTpTdHJpbmcodCl9XSkpKV0pLnBpcGUoZnQoKHQ9PnQuZmxhdCgpKSkpfWRlc2VyaWFsaXplUXVlcnlQYXJhbXModCl7bGV0IG49bnVsbCxlPW51bGw7Zm9yKGNvbnN0e2tleTphLHZhbHVlOm99b2YgdClzd2l0Y2goYSl7Y2FzZSJwaW5uZWRDYXJkcyI6bj1OZnQobyk7YnJlYWs7Y2FzZSBEZnQ6ZT1OdW1iZXIobyl9cmV0dXJue21ldHJpY3M6e3Bpbm5lZENhcmRzOm58fFtdLHNtb290aGluZzplfX19fTtmdW5jdGlvbiBOZnQodCl7bGV0IG47dHJ5e249SlNPTi5wYXJzZSh0KX1jYXRjaCh0KXtyZXR1cm4gbnVsbH1pZighQXJyYXkuaXNBcnJheShuKSlyZXR1cm4gbnVsbDtjb25zdCBlPVtdO2Zvcihjb25zdCB0IG9mIG4pe2NvbnN0IG49InN0cmluZyI9PXR5cGVvZiB0LnJ1bklkLG89Im51bWJlciI9PXR5cGVvZiB0LnNhbXBsZSxyPSJzdHJpbmciPT10eXBlb2YgdC50YWcsaT1ufHx2b2lkIDA9PT10LnJ1bklkLGM9b3x8dm9pZCAwPT09dC5zYW1wbGU7aWYoISgic3RyaW5nIj09dHlwZW9mIHQucGx1Z2luJiZyJiZpJiZjKSljb250aW51ZTtpZigoYT10LnBsdWdpbikhPT1nVC5TQ0FMQVJTJiZhIT09Z1QuSElTVE9HUkFNUyYmYSE9PWdULklNQUdFUyljb250aW51ZTtpZighdC50YWcpY29udGludWU7aWYoZlQodC5wbHVnaW4pKXtpZighdC5ydW5JZCljb250aW51ZX1lbHNlIGlmKHQucnVuSWQpY29udGludWU7aWYobyl7aWYoIWJUKHQucGx1Z2luKSljb250aW51ZTtpZighTnVtYmVyLmlzSW50ZWdlcih0LnNhbXBsZSl8fHQuc2FtcGxlPDApY29udGludWV9Y29uc3Qgcz17cGx1Z2luOnQucGx1Z2luLHRhZzp0LnRhZ307biYmKHMucnVuSWQ9dC5ydW5JZCksbyYmKHMuc2FtcGxlPXQuc2FtcGxlKSxlLnB1c2gocyl9dmFyIGE7cmV0dXJuIGV9ZnVuY3Rpb24gRmZ0KHQsbil7cmV0dXJuYCR7bn0vJHt0fWB9SWZ0PShmdW5jdGlvbiBMZnQodCxuLGUsYSl7dmFyIG8scj1hcmd1bWVudHMubGVuZ3RoLGk9cjwzP246bnVsbD09PWE/YT1PYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKG4sZSk6YTtpZigib2JqZWN0Ij09dHlwZW9mIFJlZmxlY3QmJiJmdW5jdGlvbiI9PXR5cGVvZiBSZWZsZWN0LmRlY29yYXRlKWk9UmVmbGVjdC5kZWNvcmF0ZSh0LG4sZSxhKTtlbHNlIGZvcih2YXIgYz10Lmxlbmd0aC0xO2M+PTA7Yy0tKShvPXRbY10pJiYoaT0ocjwzP28oaSk6cj4zP28obixlLGkpOm8obixlKSl8fGkpO3JldHVybiByPjMmJmkmJk9iamVjdC5kZWZpbmVQcm9wZXJ0eShuLGUsaSksaX0pKFtpZCgpXSxJZnQpO2NsYXNzIEhmdHtjb25zdHJ1Y3Rvcih0KXt0aGlzLmh0dHA9dH1mZXRjaFJ1bnModCl7cmV0dXJuIHRoaXMuaHR0cC5nZXQoImRhdGEvcnVucyIpLnBpcGUoZnQoKG49Pm4ubWFwKChuPT4oe2lkOkZmdChuLHQpLG5hbWU6bixzdGFydFRpbWU6MH0pKSkpKSl9ZmV0Y2hIcGFyYW1zTWV0YWRhdGEodCl7cmV0dXJuIFooe2hwYXJhbVNwZWNzOltdLG1ldHJpY1NwZWNzOltdLHJ1blRvSHBhcmFtc0FuZE1ldHJpY3M6e319KX19SGZ0Lsm1ZmFjPWZ1bmN0aW9uIHQobil7cmV0dXJuIG5ldyhufHxIZnQpKFphKG1UKSl9LEhmdC7JtXByb3Y9V2Uoe3Rva2VuOkhmdCxmYWN0b3J5OkhmdC7JtWZhY30pO2NsYXNzIEJmdHt9QmZ0Lsm1bW9kPXhvKHt0eXBlOkJmdH0pLEJmdC7JtWluaj1HZSh7ZmFjdG9yeTpmdW5jdGlvbiB0KG4pe3JldHVybiBuZXcobnx8QmZ0KX0scHJvdmlkZXJzOlt7cHJvdmlkZTpTRCx1c2VDbGFzczpIZnR9XX0pO2NsYXNzIFZmdHtjb25zdHJ1Y3Rvcih0LG4sZSl7dGhpcy5hY3Rpb25zJD10LHRoaXMuc3RvcmU9bix0aGlzLnJ1bnNEYXRhU291cmNlPWUsdGhpcy5sb2FkUnVuc09uUnVuVGFibGVTaG93biQ9WXYoKCgpPT50aGlzLmFjdGlvbnMkLnBpcGUodHcoWFEpLFR0KCgoe2V4cGVyaW1lbnRJZHM6dH0pPT50aGlzLmdldEV4cGVyaW1lbnRzV2l0aExvYWRTdGF0ZSh0LCh0PT50PT09ZlIuRkFJTEVEfHx0PT09ZlIuTk9UX0xPQURFRCkpLnBpcGUoR3QoKHQ9PiEhdC5sZW5ndGgpKSxUdCgobj0+dGhpcy5mZXRjaEFsbFJ1bnNMaXN0KHQsbikpKSkpKSkpLHtkaXNwYXRjaDohMX0pLHRoaXMuZXhwZXJpbWVudHNXaXRoU3RhbGVSdW5zT25Sb3V0ZUNoYW5nZSQ9dGhpcy5hY3Rpb25zJC5waXBlKHR3KEtWKSx5ZSh0aGlzLnN0b3JlLnNlbGVjdChhUikpLHZuKCgoWyx0XSxbLG5dKT0+dD09PW4pKSx5ZSh0aGlzLnN0b3JlLnNlbGVjdChlUikpLEd0KCgoWyx0XSk9PiEhdCkpLGZ0KCgoWyx0XSk9PnQpKSxUdCgodD0+dGhpcy5nZXRFeHBlcmltZW50c1dpdGhMb2FkU3RhdGUodCwodD0+dD09PWZSLkZBSUxFRHx8dD09PWZSLk5PVF9MT0FERUQpKS5waXBlKGZ0KChuPT4oe2V4cGVyaW1lbnRJZHM6dCxleHBlcmltZW50SWRzVG9CZUZldGNoZWQ6bn0pKSkpKSkpLHRoaXMuZXhwZXJpbWVudHNXaXRoU3RhbGVSdW5zT25SZWxvYWQkPXRoaXMuYWN0aW9ucyQucGlwZSh0dyhmSSx1SSkseWUodGhpcy5zdG9yZS5zZWxlY3QoZVIpKSxHdCgoKFssdF0pPT4hIXQpKSxmdCgoKFssdF0pPT50KSksVHQoKHQ9PnRoaXMuZ2V0RXhwZXJpbWVudHNXaXRoTG9hZFN0YXRlKHQsKHQ9PnQhPT1mUi5MT0FESU5HKSkucGlwZShmdCgobj0+KHtleHBlcmltZW50SWRzOnQsZXhwZXJpbWVudElkc1RvQmVGZXRjaGVkOm59KSkpKSkpKSx0aGlzLmxvYWRSdW5zT25OYXZpZ2F0aW9uT3JSZWxvYWQkPVl2KCgoKT0+V3QodGhpcy5leHBlcmltZW50c1dpdGhTdGFsZVJ1bnNPblJvdXRlQ2hhbmdlJCx0aGlzLmV4cGVyaW1lbnRzV2l0aFN0YWxlUnVuc09uUmVsb2FkJCkucGlwZShUdCgoKHtleHBlcmltZW50SWRzOnQsZXhwZXJpbWVudElkc1RvQmVGZXRjaGVkOm59KT0+dGhpcy5mZXRjaEFsbFJ1bnNMaXN0KHQsbikpKSkpLHtkaXNwYXRjaDohMX0pfWdldFJ1bnNMaXN0TG9hZFN0YXRlKHQpe3JldHVybiB0aGlzLnN0b3JlLnNlbGVjdChGRCx7ZXhwZXJpbWVudElkOnR9KS5waXBlKFRuKDEpKX1nZXRFeHBlcmltZW50c1dpdGhMb2FkU3RhdGUodCxuKXtyZXR1cm4gSHQodC5tYXAoKHQ9PnRoaXMuZ2V0UnVuc0xpc3RMb2FkU3RhdGUodCkpKSkucGlwZShmdCgoZT0+dC5maWx0ZXIoKCh0LGEpPT5uKGVbYV0uc3RhdGUpKSkpKSl9ZmV0Y2hBbGxSdW5zTGlzdCh0LG4pe3JldHVybiBaKHtleHBlcmltZW50SWRzOnQsZXhwZXJpbWVudElkc1RvQmVGZXRjaGVkOm59KS5waXBlKGhlKCgoKT0+e3RoaXMuc3RvcmUuZGlzcGF0Y2goSFEoe2V4cGVyaW1lbnRJZHM6dCxyZXF1ZXN0ZWRFeHBlcmltZW50SWRzOm59KSl9KSksVHQoKCgpPT57Y29uc3QgZT1uZXcgU2V0KG4pO3JldHVybiBIdCh0Lm1hcCgodD0+ZS5oYXModCk/dGhpcy5mZXRjaFJ1bnNGb3JFeHBlcmltZW50KHQpOnRoaXMubWF5YmVXYWl0Rm9yUnVuc0FuZEdldFJ1bnModCkpKSl9KSksZnQoKHQ9Pntjb25zdCBuPXt9LGU9W107Zm9yKGNvbnN0IGEgb2YgdCllLnB1c2goLi4uYS5ydW5zKSxhLmZyb21SZW1vdGUmJihuW2EuZXhwZXJpbWVudElkXT17cnVuczphLnJ1bnMsbWV0YWRhdGE6YS5tZXRhZGF0YX0pO3JldHVybntuZXdSdW5zQW5kTWV0YWRhdGE6bixydW5zRm9yQWxsRXhwZXJpbWVudHM6ZX19KSksaGUoKCh7bmV3UnVuc0FuZE1ldGFkYXRhOm4scnVuc0ZvckFsbEV4cGVyaW1lbnRzOmV9KT0+e3RoaXMuc3RvcmUuZGlzcGF0Y2goQlEoe2V4cGVyaW1lbnRJZHM6dCxuZXdSdW5zQW5kTWV0YWRhdGE6bixydW5zRm9yQWxsRXhwZXJpbWVudHM6ZX0pKX0pKSxvbigoZT0+KHRoaXMuc3RvcmUuZGlzcGF0Y2goVlEoe2V4cGVyaW1lbnRJZHM6dCxyZXF1ZXN0ZWRFeHBlcmltZW50SWRzOm59KSksWihudWxsKSkpKSxmdCgoKCk9Pm51bGwpKSl9bWF5YmVXYWl0Rm9yUnVuc0FuZEdldFJ1bnModCl7cmV0dXJuIHRoaXMuc3RvcmUuc2VsZWN0KEZELHtleHBlcmltZW50SWQ6dH0pLnBpcGUoR3QoKHQ9PnQuc3RhdGUhPT1mUi5MT0FESU5HKSksVG4oMSksVHQoKHQ9PnQuc3RhdGU9PT1mUi5GQUlMRUQ/WChuZXcgRXJyb3IoIlBlbmRpbmcgcmVxdWVzdCBmYWlsZWQiKSk6Wih0KSkpLHllKHRoaXMuc3RvcmUuc2VsZWN0KElELHtleHBlcmltZW50SWQ6dH0pKSxmdCgoKFssbl0pPT4oe2Zyb21SZW1vdGU6ITEsZXhwZXJpbWVudElkOnQscnVuczpufSkpKSl9ZmV0Y2hSdW5zRm9yRXhwZXJpbWVudCh0KXtyZXR1cm4gSHQoW3RoaXMucnVuc0RhdGFTb3VyY2UuZmV0Y2hSdW5zKHQpLHRoaXMucnVuc0RhdGFTb3VyY2UuZmV0Y2hIcGFyYW1zTWV0YWRhdGEodCldKS5waXBlKGZ0KCgoW24sZV0pPT4oe2Zyb21SZW1vdGU6ITAsZXhwZXJpbWVudElkOnQscnVuczpuLG1ldGFkYXRhOmV9KSkpKX19VmZ0Lsm1ZmFjPWZ1bmN0aW9uIHQobil7cmV0dXJuIG5ldyhufHxWZnQpKFphKCR2KSxaYShjdiksWmEoU0QpKX0sVmZ0Lsm1cHJvdj1XZSh7dG9rZW46VmZ0LGZhY3Rvcnk6VmZ0Lsm1ZmFjfSk7Y29uc3QgamZ0PVsiIzQyNTA2NiIsIiMxMmI1Y2IiLCIjZTUyNTkyIiwiI2Y5YWIwMCIsIiM5MzM0ZTYiLCIjN2NiMzQyIiwiI2U4NzEwYSJdO2xldCBVZnQ9MDtjb25zdCBXZnQ9VXYoe3J1bklkczp7fSxydW5JZFRvRXhwSWQ6e30scnVuTWV0YWRhdGE6e30scnVuc0xvYWRTdGF0ZTp7fSxocGFyYW1BbmRNZXRyaWNTcGVjOnt9LHNlbGVjdGlvblN0YXRlOm5ldyBNYXB9LGp2KEhRLCgodCxuKT0+e2NvbnN0IGU9T2JqZWN0LmFzc2lnbih7fSx0LnJ1bnNMb2FkU3RhdGUpO2Zvcihjb25zdCB0IG9mIG4ucmVxdWVzdGVkRXhwZXJpbWVudElkcyllW3RdPU9iamVjdC5hc3NpZ24oT2JqZWN0LmFzc2lnbih7bGFzdExvYWRlZFRpbWVJbk1zOm51bGx9LGVbdF0pLHtzdGF0ZTpmUi5MT0FESU5HfSk7cmV0dXJuIE9iamVjdC5hc3NpZ24oT2JqZWN0LmFzc2lnbih7fSx0KSx7cnVuc0xvYWRTdGF0ZTplfSl9KSksanYoQlEsKCh0LG4pPT57Y29uc3QgZT1PYmplY3QuYXNzaWduKHt9LHQucnVuSWRzKSxhPU9iamVjdC5hc3NpZ24oe30sdC5ydW5NZXRhZGF0YSksbz1PYmplY3QuYXNzaWduKHt9LHQucnVuSWRUb0V4cElkKSxyPU9iamVjdC5hc3NpZ24oe30sdC5ydW5zTG9hZFN0YXRlKSxpPU9iamVjdC5hc3NpZ24oe30sdC5ocGFyYW1BbmRNZXRyaWNTcGVjKSxjPW5ldyBNYXAodC5zZWxlY3Rpb25TdGF0ZSk7Zm9yKGNvbnN0IHQgb2YgT2JqZWN0LmtleXMobi5uZXdSdW5zQW5kTWV0YWRhdGEpKXtjb25zdHtydW5zOmMsbWV0YWRhdGE6c309bi5uZXdSdW5zQW5kTWV0YWRhdGFbdF07ZVt0XT1jLm1hcCgoKHtpZDp0fSk9PnQpKSxyW3RdPU9iamVjdC5hc3NpZ24oT2JqZWN0LmFzc2lnbih7fSxyW3RdKSx7bGFzdExvYWRlZFRpbWVJbk1zOkRhdGUubm93KCksc3RhdGU6ZlIuTE9BREVEfSk7Zm9yKGNvbnN0IG4gb2YgYyl7Y29uc3QgZT1zLnJ1blRvSHBhcmFtc0FuZE1ldHJpY3Nbbi5pZF07YVtuLmlkXT1PYmplY3QuYXNzaWduKE9iamVjdC5hc3NpZ24oe30sbikse2hwYXJhbXM6ZT9lLmhwYXJhbXM6bnVsbCxtZXRyaWNzOmU/ZS5tZXRyaWNzOm51bGx9KSxvW24uaWRdPXR9aVt0XT17aHBhcmFtczpzLmhwYXJhbVNwZWNzLG1ldHJpY3M6cy5tZXRyaWNTcGVjc319Y29uc3Qgcz1BRChuLmV4cGVyaW1lbnRJZHMpO2lmKGMuaGFzKHMpKXtjb25zdCB0PW5ldyBNYXAoYy5nZXQocykpO2Zvcihjb25zdCBlIG9mIG4ucnVuc0ZvckFsbEV4cGVyaW1lbnRzKXQuaGFzKGUuaWQpfHx0LnNldChlLmlkLCExKTtjLnNldChzLHQpfWVsc2V7Y29uc3QgdD1uZXcgTWFwLGU9bi5ydW5zRm9yQWxsRXhwZXJpbWVudHMubGVuZ3RoPD00MDtmb3IoY29uc3QgYSBvZiBuLnJ1bnNGb3JBbGxFeHBlcmltZW50cyl0LnNldChhLmlkLGUpO2Muc2V0KHMsdCl9cmV0dXJuIE9iamVjdC5hc3NpZ24oT2JqZWN0LmFzc2lnbih7fSx0KSx7cnVuSWRzOmUscnVuSWRUb0V4cElkOm8scnVuTWV0YWRhdGE6YSxydW5zTG9hZFN0YXRlOnIsaHBhcmFtQW5kTWV0cmljU3BlYzppLHNlbGVjdGlvblN0YXRlOmN9KX0pKSxqdihWUSwoKHQsbik9Pntjb25zdCBlPU9iamVjdC5hc3NpZ24oe30sdC5ydW5zTG9hZFN0YXRlKTtmb3IoY29uc3QgdCBvZiBuLnJlcXVlc3RlZEV4cGVyaW1lbnRJZHMpZVt0XT1PYmplY3QuYXNzaWduKE9iamVjdC5hc3NpZ24oe2xhc3RMb2FkZWRUaW1lSW5NczpudWxsfSxlW3RdKSx7c3RhdGU6ZlIuRkFJTEVEfSk7cmV0dXJuIE9iamVjdC5hc3NpZ24oT2JqZWN0LmFzc2lnbih7fSx0KSx7cnVuc0xvYWRTdGF0ZTplfSl9KSksanYoalEsKCh0LHtleHBlcmltZW50SWRzOm4scnVuSWQ6ZX0pPT57dmFyIGE7Y29uc3Qgbz1BRChuKSxyPW5ldyBNYXAodC5zZWxlY3Rpb25TdGF0ZSksaT1uZXcgTWFwKG51bGwhPT0oYT1yLmdldChvKSkmJnZvaWQgMCE9PWE/YTpbXSk7cmV0dXJuIGkuc2V0KGUsIUJvb2xlYW4oaS5nZXQoZSkpKSxyLnNldChvLGkpLE9iamVjdC5hc3NpZ24oT2JqZWN0LmFzc2lnbih7fSx0KSx7c2VsZWN0aW9uU3RhdGU6cn0pfSkpLGp2KFVRLCgodCx7ZXhwZXJpbWVudElkczpuLHJ1bklkczplfSk9Pnt2YXIgYTtjb25zdCBvPUFEKG4pLHI9bmV3IE1hcCh0LnNlbGVjdGlvblN0YXRlKSxpPW5ldyBNYXAobnVsbCE9PShhPXIuZ2V0KG8pKSYmdm9pZCAwIT09YT9hOltdKSxjPSFlLmV2ZXJ5KCh0PT5Cb29sZWFuKGkuZ2V0KHQpKSkpO2Zvcihjb25zdCB0IG9mIGUpaS5zZXQodCxjKTtyZXR1cm4gci5zZXQobyxpKSxPYmplY3QuYXNzaWduKE9iamVjdC5hc3NpZ24oe30sdCkse3NlbGVjdGlvblN0YXRlOnJ9KX0pKSxqdihXUSwoKHQse2V4cGVyaW1lbnRJZHM6bn0pPT57dmFyIGU7Y29uc3QgYT1BRChuKSxvPW5ldyBNYXAodC5zZWxlY3Rpb25TdGF0ZSkscj1uZXcgTWFwKG51bGwhPT0oZT1vLmdldChhKSkmJnZvaWQgMCE9PWU/ZTpbXSk7Zm9yKGNvbnN0IGUgb2Ygbilmb3IoY29uc3QgbiBvZiB0LnJ1bklkc1tlXSlyLnNldChuLCEwKTtyZXR1cm4gby5zZXQoYSxyKSxPYmplY3QuYXNzaWduKE9iamVjdC5hc3NpZ24oe30sdCkse3NlbGVjdGlvblN0YXRlOm99KX0pKSkse2luaXRpYWxTdGF0ZTpHZnQscmVkdWNlcnM6WWZ0fT1FSyh7cGFnaW5hdGlvbk9wdGlvbjp7cGFnZUluZGV4OjAscGFnZVNpemU6MTB9LHJlZ2V4RmlsdGVyOiIiLHNvcnQ6e2tleTpudWxsLGRpcmVjdGlvbjpHSi5VTlNFVH0saHBhcmFtRmlsdGVyczpuZXcgTWFwLG1ldHJpY0ZpbHRlcnM6bmV3IE1hcCxydW5Db2xvck92ZXJyaWRlOm5ldyBNYXB9LHtocGFyYW1EZWZhdWx0RmlsdGVyczpuZXcgTWFwLG1ldHJpY0RlZmF1bHRGaWx0ZXJzOm5ldyBNYXAsZGVmYXVsdFJ1bkNvbG9yOm5ldyBNYXB9KSxxZnQ9eksoVXYoR2Z0LGp2KEdRLCgodCx7cGFnZVNpemU6bixwYWdlSW5kZXg6ZX0pPT5PYmplY3QuYXNzaWduKE9iamVjdC5hc3NpZ24oe30sdCkse3BhZ2luYXRpb25PcHRpb246e3BhZ2VTaXplOm4scGFnZUluZGV4OmV9fSkpKSxqdihxUSwoKHQsbik9Pk9iamVjdC5hc3NpZ24oT2JqZWN0LmFzc2lnbih7fSx0KSx7cmVnZXhGaWx0ZXI6bi5yZWdleFN0cmluZyxwYWdpbmF0aW9uT3B0aW9uOk9iamVjdC5hc3NpZ24oT2JqZWN0LmFzc2lnbih7fSx0LnBhZ2luYXRpb25PcHRpb24pLHtwYWdlSW5kZXg6MH0pfSkpKSxqdihZUSwoKHQsbik9Pk9iamVjdC5hc3NpZ24oT2JqZWN0LmFzc2lnbih7fSx0KSx7c29ydDp7a2V5Om4ua2V5LGRpcmVjdGlvbjpuLmRpcmVjdGlvbn19KSkpLGp2KEJRLCgodCxuKT0+e2NvbnN0IGU9bmV3IE1hcCh0LmRlZmF1bHRSdW5Db2xvcik7cmV0dXJuIG4ucnVuc0ZvckFsbEV4cGVyaW1lbnRzLmZpbHRlcigodD0+IUJvb2xlYW4oZS5nZXQodC5pZCkpKSkuZm9yRWFjaCgodD0+e2Uuc2V0KHQuaWQsKGZ1bmN0aW9uIG4oKXtjb25zdCB0PWpmdFtVZnRdO3JldHVybiBVZnQ9KFVmdCsxKSVqZnQubGVuZ3RoLHR9KSgpKX0pKSxPYmplY3QuYXNzaWduKE9iamVjdC5hc3NpZ24oe30sdCkse2RlZmF1bHRSdW5Db2xvcjplfSl9KSksanYoWlEsKCh0LHtydW5JZDpuLG5ld0NvbG9yOmV9KT0+e2NvbnN0IGE9bmV3IE1hcCh0LnJ1bkNvbG9yT3ZlcnJpZGUpO3JldHVybiBhLnNldChuLGUpLE9iamVjdC5hc3NpZ24oT2JqZWN0LmFzc2lnbih7fSx0KSx7cnVuQ29sb3JPdmVycmlkZTphfSl9KSksanYoSlEsKCh0LHtocGFyYW1OYW1lOm4sZmlsdGVyVmFsdWVzOmUsaW5jbHVkZVVuZGVmaW5lZDphfSk9Pntjb25zdCBvPXQuaHBhcmFtRGVmYXVsdEZpbHRlcnMuZ2V0KG4pO2lmKCFvKXRocm93IG5ldyBFcnJvcihgVW5rbm93biBocGFyYW1zOiAke259YCk7aWYoby50eXBlPT09d0QuSU5URVJWQUwpdGhyb3cgbmV3IEVycm9yKCJJbnZhcmlhbnQgZXJyb3I6IEhwYXJhbXMgZmlsdGVyIGlzIElOVEVSVkFMIGJ1dCBnb3QgYSAnICtcbiAgICAgICAgICAgICAgICdESVNDUkVURSBjaGFuZ2UiKTtjb25zdCByPU9iamVjdC5hc3NpZ24oT2JqZWN0LmFzc2lnbih7fSxvKSx0LmhwYXJhbUZpbHRlcnMuZ2V0KG4pKSxpPW5ldyBNYXAodC5ocGFyYW1GaWx0ZXJzKTtyZXR1cm4gaS5zZXQobixPYmplY3QuYXNzaWduKE9iamVjdC5hc3NpZ24oe30scikse2luY2x1ZGVVbmRlZmluZWQ6YSxmaWx0ZXJWYWx1ZXM6ZX0pKSxPYmplY3QuYXNzaWduKE9iamVjdC5hc3NpZ24oe30sdCkse2hwYXJhbUZpbHRlcnM6aX0pfSkpLGp2KFFRLCgodCxuKT0+e2NvbnN0e2hwYXJhbU5hbWU6ZSxmaWx0ZXJMb3dlclZhbHVlOmEsZmlsdGVyVXBwZXJWYWx1ZTpvLGluY2x1ZGVVbmRlZmluZWQ6cn09bixpPXQuaHBhcmFtRGVmYXVsdEZpbHRlcnMuZ2V0KGUpO2lmKCFpKXRocm93IG5ldyBFcnJvcihgVW5rbm93biBocGFyYW1zOiAke2V9YCk7aWYoaS50eXBlPT09d0QuRElTQ1JFVEUpdGhyb3cgbmV3IEVycm9yKCJJbnZhcmlhbnQgZXJyb3I6IEhwYXJhbXMgZmlsdGVyIGlzIERJU0NSRVRFIGJ1dCBnb3QgYSAnICtcbiAgICAgICAgICAgICAgICdJTlRFUlZBTCBjaGFuZ2UiKTtjb25zdCBjPU9iamVjdC5hc3NpZ24oT2JqZWN0LmFzc2lnbih7fSxpKSx0LmhwYXJhbUZpbHRlcnMuZ2V0KGUpKSxzPW5ldyBNYXAodC5ocGFyYW1GaWx0ZXJzKTtyZXR1cm4gcy5zZXQoZSxPYmplY3QuYXNzaWduKE9iamVjdC5hc3NpZ24oe30sYykse2luY2x1ZGVVbmRlZmluZWQ6cixmaWx0ZXJMb3dlclZhbHVlOmEsZmlsdGVyVXBwZXJWYWx1ZTpvfSkpLE9iamVjdC5hc3NpZ24oT2JqZWN0LmFzc2lnbih7fSx0KSx7aHBhcmFtRmlsdGVyczpzfSl9KSksanYoS1EsKCh0LG4pPT57Y29uc3R7bWV0cmljVGFnOmUsZmlsdGVyTG93ZXJWYWx1ZTphLGZpbHRlclVwcGVyVmFsdWU6byxpbmNsdWRlVW5kZWZpbmVkOnJ9PW4saT10Lm1ldHJpY0RlZmF1bHRGaWx0ZXJzLmdldChlKTtpZighaSl0aHJvdyBuZXcgRXJyb3IoYFVua25vd24gbWV0cmljOiAke2V9YCk7Y29uc3QgYz1PYmplY3QuYXNzaWduKE9iamVjdC5hc3NpZ24oe30saSksdC5tZXRyaWNGaWx0ZXJzLmdldChlKSkscz1uZXcgTWFwKHQubWV0cmljRmlsdGVycyk7cmV0dXJuIHMuc2V0KGUsT2JqZWN0LmFzc2lnbihPYmplY3QuYXNzaWduKHt9LGMpLHtmaWx0ZXJMb3dlclZhbHVlOmEsZmlsdGVyVXBwZXJWYWx1ZTpvLGluY2x1ZGVVbmRlZmluZWQ6cn0pKSxPYmplY3QuYXNzaWduKE9iamVjdC5hc3NpZ24oe30sdCkse21ldHJpY0ZpbHRlcnM6c30pfSkpLGp2KEJRLCgodCxuKT0+e3ZhciBlLGEsbyxyO2lmKDA9PT1PYmplY3Qua2V5cyhuLm5ld1J1bnNBbmRNZXRhZGF0YSkubGVuZ3RoKXJldHVybiB0O2NvbnN0IGk9bmV3IE1hcCxjPW5ldyBNYXAscz1uZXcgTWFwLGw9bmV3IE1hcCxtPW5ldyBNYXAsZD1uZXcgU2V0O2Zvcihjb25zdCB0IG9mIE9iamVjdC5rZXlzKG4ubmV3UnVuc0FuZE1ldGFkYXRhKSl7Y29uc3R7cnVuczplLG1ldGFkYXRhOmF9PW4ubmV3UnVuc0FuZE1ldGFkYXRhW3RdO2Zvcihjb25zdCB0IG9mIGUpe2NvbnN0IG49YS5ydW5Ub0hwYXJhbXNBbmRNZXRyaWNzW3QuaWRdO2lmKG4pZm9yKGNvbnN0IHQgb2Ygbi5tZXRyaWNzKXtjb25zdCBuPW0uZ2V0KHQudGFnKTttLnNldCh0LnRhZyx7bWluOm4/TWF0aC5taW4obi5taW4sdC52YWx1ZSk6dC52YWx1ZSxtYXg6bj9NYXRoLm1heChuLm1heCx0LnZhbHVlKTp0LnZhbHVlfSl9fWZvcihjb25zdHtuYW1lOnQsZG9tYWluOm59b2YgYS5ocGFyYW1TcGVjcylpZihuLnR5cGU9PT13RC5ESVNDUkVURSl7Y29uc3QgZT1zLmdldCh0KXx8bmV3IFNldDtmb3IoY29uc3QgdCBvZiBuLnZhbHVlcyllLmFkZCh0KTtzLnNldCh0LGUpfWVsc2V7Y29uc3QgZT1sLmdldCh0KTtsLnNldCh0LHttaW5WYWx1ZTplP01hdGgubWluKG4ubWluVmFsdWUsZS5taW5WYWx1ZSk6bi5taW5WYWx1ZSxtYXhWYWx1ZTplP01hdGgubWF4KG4ubWF4VmFsdWUsZS5tYXhWYWx1ZSk6bi5tYXhWYWx1ZX0pfWZvcihjb25zdCB0IG9mIGEubWV0cmljU3BlY3MpZC5hZGQodC50YWcpfWZvcihjb25zdFt0LG5db2YgcylpLnNldCh0LHt0eXBlOndELkRJU0NSRVRFLGluY2x1ZGVVbmRlZmluZWQ6ITAscG9zc2libGVWYWx1ZXM6Wy4uLm5dLGZpbHRlclZhbHVlczpbLi4ubl19KTtmb3IoY29uc3RbdCx7bWluVmFsdWU6bixtYXhWYWx1ZTplfV1vZiBsKWkuc2V0KHQse3R5cGU6d0QuSU5URVJWQUwsaW5jbHVkZVVuZGVmaW5lZDohMCxtaW5WYWx1ZTpuLG1heFZhbHVlOmUsZmlsdGVyTG93ZXJWYWx1ZTpuLGZpbHRlclVwcGVyVmFsdWU6ZX0pO2Zvcihjb25zdCB0IG9mIGQpe2NvbnN0IG49bS5nZXQodCk7Yy5zZXQodCx7dHlwZTp3RC5JTlRFUlZBTCxpbmNsdWRlVW5kZWZpbmVkOiEwLG1pblZhbHVlOm51bGwhPT0oZT1udWxsPT1uP3ZvaWQgMDpuLm1pbikmJnZvaWQgMCE9PWU/ZTowLG1heFZhbHVlOm51bGwhPT0oYT1udWxsPT1uP3ZvaWQgMDpuLm1heCkmJnZvaWQgMCE9PWE/YTowLGZpbHRlckxvd2VyVmFsdWU6bnVsbCE9PShvPW51bGw9PW4/dm9pZCAwOm4ubWluKSYmdm9pZCAwIT09bz9vOjAsZmlsdGVyVXBwZXJWYWx1ZTpudWxsIT09KHI9bnVsbD09bj92b2lkIDA6bi5tYXgpJiZ2b2lkIDAhPT1yP3I6MH0pfXJldHVybiBPYmplY3QuYXNzaWduKE9iamVjdC5hc3NpZ24oe30sdCkse2hwYXJhbURlZmF1bHRGaWx0ZXJzOmksbWV0cmljRGVmYXVsdEZpbHRlcnM6Y30pfSkpKSxZZnQpO2NsYXNzIFpmdHt9ZnVuY3Rpb24gWGZ0KHQpe3JldHVybihuLGUpPT57Y29uc3QgYT10KG4sZSk7cmV0dXJuIGNvbnNvbGUuZ3JvdXBDb2xsYXBzZWQoZS50eXBlKSxjb25zb2xlLmxvZygicHJldiBzdGF0ZSIsbiksY29uc29sZS5sb2coImFjdGlvbiIsZSksY29uc29sZS5sb2coIm5leHQgc3RhdGUiLGEpLGNvbnNvbGUuZ3JvdXBFbmQoKSxhfX1aZnQuybVtb2Q9eG8oe3R5cGU6WmZ0fSksWmZ0Lsm1aW5qPUdlKHtmYWN0b3J5OmZ1bmN0aW9uIHQobil7cmV0dXJuIG5ldyhufHxaZnQpfSxpbXBvcnRzOltbSXYuZm9yRmVhdHVyZShFRCwoZnVuY3Rpb24gSmZ0KHQsbil7cmV0dXJuIHFrKHtkYXRhOldmdCx1aTpxZnR9KSh0LG4pfSkpLGZ3LmZvckZlYXR1cmUoW1ZmdF0pLEJmdCxNdy5yZWdpc3RlckFsZXJ0QWN0aW9ucygoZnVuY3Rpb24gUWZ0KCl7cmV0dXJuW3thY3Rpb25DcmVhdG9yOlZRLGFsZXJ0RnJvbUFjdGlvbjooKT0+KHtsb2NhbGl6ZWRNZXNzYWdlOiJGYWlsZWQgdG8gZmV0Y2ggcnVucyJ9KX1dfSkpXV19KSwoInVuZGVmaW5lZCI9PXR5cGVvZiBuZ0ppdE1vZGV8fG5nSml0TW9kZSkmJnlvKFpmdCx7aW1wb3J0czpbRHYsdXcsQmZ0LE13XX0pO2NvbnN0IEtmdD1uZXcgRmEoIlJvb3QgcmVkdWNlcnMgdG9rZW4iLHtmYWN0b3J5OigpPT4oe30pfSk7Y2xhc3MgJGZ0e30kZnQuybVtb2Q9eG8oe3R5cGU6JGZ0fSksJGZ0Lsm1aW5qPUdlKHtmYWN0b3J5OmZ1bmN0aW9uIHQobil7cmV0dXJuIG5ldyhufHwkZnQpfSxwcm92aWRlcnM6W3twcm92aWRlOlZrLHVzZUZhY3Rvcnk6ZnVuY3Rpb24gdGh0KCl7cmV0dXJuIF9jKCk/WGZ0OnQ9PihuLGUpPT50KG4sZSl9LG11bHRpOiEwfV0saW1wb3J0czpbW0l2LmZvclJvb3QoS2Z0LHtydW50aW1lQ2hlY2tzOntzdHJpY3RTdGF0ZUltbXV0YWJpbGl0eTohMCxzdHJpY3RBY3Rpb25JbW11dGFiaWxpdHk6ITAsc3RyaWN0QWN0aW9uU2VyaWFsaXphYmlsaXR5OiExLHN0cmljdFN0YXRlU2VyaWFsaXphYmlsaXR5OiExfX0pLGZ3LmZvclJvb3QoW10pXV19KSwoInVuZGVmaW5lZCI9PXR5cGVvZiBuZ0ppdE1vZGV8fG5nSml0TW9kZSkmJnlvKCRmdCx7aW1wb3J0czpbVHYsYnddfSk7Y2xhc3Mgbmh0e31uaHQuybVtb2Q9eG8oe3R5cGU6bmh0fSksbmh0Lsm1aW5qPUdlKHtmYWN0b3J5OmZ1bmN0aW9uIHQobil7cmV0dXJuIG5ldyhufHxuaHQpfX0pLCgidW5kZWZpbmVkIj09dHlwZW9mIG5nSml0TW9kZXx8bmdKaXRNb2RlKSYmeW8obmh0LHtkZWNsYXJhdGlvbnM6W3pmdF0sZXhwb3J0czpbemZ0XX0pO2NsYXNzIGVodHt9ZWh0Lsm1bW9kPXhvKHt0eXBlOmVodH0pLGVodC7JtWluaj1HZSh7ZmFjdG9yeTpmdW5jdGlvbiB0KG4pe3JldHVybiBuZXcobnx8ZWh0KX0saW1wb3J0czpbW1BPLEFmdCxuaHRdXX0pLCgidW5kZWZpbmVkIj09dHlwZW9mIG5nSml0TW9kZXx8bmdKaXRNb2RlKSYmeW8oZWh0LHtkZWNsYXJhdGlvbnM6W1JmdF0saW1wb3J0czpbUE8sQWZ0LG5odF0sZXhwb3J0czpbUmZ0XX0pO2NsYXNzIGFodHt9YWh0Lsm1bW9kPXhvKHt0eXBlOmFodCxib290c3RyYXA6W1pWXX0pLGFodC7JtWluaj1HZSh7ZmFjdG9yeTpmdW5jdGlvbiB0KG4pe3JldHVybiBuZXcobnx8YWh0KX0saW1wb3J0czpbW0hqLHVQLF9rLG9qLGNqLE5WLnJlZ2lzdGVyUm91dGVzKChmdW5jdGlvbiBvaHQoKXtyZXR1cm5be3JvdXRlS2luZDpZei5FWFBFUklNRU5ULHBhdGg6Ii8iLG5nQ29tcG9uZW50OlJmdCxkZWZhdWx0Um91dGU6ITAsZGVlcExpbmtQcm92aWRlcjpuZXcgSWZ0fV19KSksbUksbEksZWh0LHVqLHhqLENqLFdqLEdqLE1qLEFmdCxaZnQsamosJGZ0LGRmdF1dfSksKCJ1bmRlZmluZWQiPT10eXBlb2YgbmdKaXRNb2RlfHxuZ0ppdE1vZGUpJiZ5byhhaHQse2RlY2xhcmF0aW9uczpbWlZdLGltcG9ydHM6W0hqLHVQLF9rLG9qLGNqLE5WLG1JLGxJLGVodCx1aix4aixDaixXaixHaixNaixBZnQsWmZ0LGpqLCRmdCxkZnRdfSksImxvYWRpbmciIT09ZG9jdW1lbnQucmVhZHlTdGF0ZT9tUCgpLmJvb3RzdHJhcE1vZHVsZShhaHQpOndpbmRvdy5hZGRFdmVudExpc3RlbmVyKCJET01Db250ZW50TG9hZGVkIiwoKCk9PnttUCgpLmJvb3RzdHJhcE1vZHVsZShhaHQpfSkpLChmdW5jdGlvbiByaHQoKXtpZihoYyl0aHJvdyBuZXcgRXJyb3IoIkNhbm5vdCBlbmFibGUgcHJvZCBtb2RlIGFmdGVyIHBsYXRmb3JtIHNldHVwLiIpOyh2b2lkIDA9PT10eXBlb2YgbmdEZXZNb2RlfHxuZ0Rldk1vZGUpJiYobWEubmdEZXZNb2RlPSExKSxmYz0hMX0pKCl9KSgpOwo=", + "ok": true, + "headers": [ + [ + "content-type", + "application/javascript; charset=utf-8" + ] + ], + "status": 200, + "status_text": "OK" + }, + "https://localhost:6006/icon_bundle.svg": { + "data": "PD94bWwgdmVyc2lvbj0iMS4wIiA/Pjxzdmc+PGRlZnM+PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIyNCIgaGVpZ2h0PSIyNCIgdmlld0JveD0iMCAwIDI0IDI0IiBpZD0iYXJyb3dfZG93bndhcmRfMjRweCI+PHBhdGggZmlsbD0iIzAxMDEwMSIgZD0iTTIwIDEybC0xLjQxLTEuNDFMMTMgMTYuMTdWNGgtMnYxMi4xN2wtNS41OC01LjU5TDQgMTJsOCA4IDgtOHoiLz48L3N2Zz48c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgd2lkdGg9IjI0IiBoZWlnaHQ9IjI0IiB2aWV3Qm94PSIwIDAgMjQgMjQiIGlkPSJhcnJvd191cHdhcmRfMjRweCI+PHBhdGggZD0iTTQgMTJsMS40MSAxLjQxTDExIDcuODNWMjBoMlY3LjgzbDUuNTggNS41OUwyMCAxMmwtOC04LTggOHoiLz48L3N2Zz48c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgaGVpZ2h0PSIyNCIgdmlld0JveD0iMCAwIDI0IDI0IiB3aWR0aD0iMjQiIGlkPSJidWdfcmVwb3J0XzI0cHgiPjxwYXRoIGQ9Ik0wIDBoMjR2MjRIMHoiIGZpbGw9Im5vbmUiLz48cGF0aCBkPSJNMjAgOGgtMi44MWMtLjQ1LS43OC0xLjA3LTEuNDUtMS44Mi0xLjk2TDE3IDQuNDEgMTUuNTkgM2wtMi4xNyAyLjE3QzEyLjk2IDUuMDYgMTIuNDkgNSAxMiA1Yy0uNDkgMC0uOTYuMDYtMS40MS4xN0w4LjQxIDMgNyA0LjQxbDEuNjIgMS42M0M3Ljg4IDYuNTUgNy4yNiA3LjIyIDYuODEgOEg0djJoMi4wOWMtLjA1LjMzLS4wOS42Ni0uMDkgMXYxSDR2MmgydjFjMCAuMzQuMDQuNjcuMDkgMUg0djJoMi44MWMxLjA0IDEuNzkgMi45NyAzIDUuMTkgM3M0LjE1LTEuMjEgNS4xOS0zSDIwdi0yaC0yLjA5Yy4wNS0uMzMuMDktLjY2LjA5LTF2LTFoMnYtMmgtMnYtMWMwLS4zNC0uMDQtLjY3LS4wOS0xSDIwVjh6bS02IDhoLTR2LTJoNHYyem0wLTRoLTR2LTJoNHYyeiIvPjwvc3ZnPjxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB3aWR0aD0iMjQiIGhlaWdodD0iMjQiIHZpZXdCb3g9IjAgMCAyNCAyNCIgaWQ9ImNhbmNlbF8yNHB4Ij48cGF0aCBkPSJNMTIgMkM2LjQ3IDIgMiA2LjQ3IDIgMTJzNC40NyAxMCAxMCAxMCAxMC00LjQ3IDEwLTEwUzE3LjUzIDIgMTIgMnptNSAxMy41OUwxNS41OSAxNyAxMiAxMy40MSA4LjQxIDE3IDcgMTUuNTkgMTAuNTkgMTIgNyA4LjQxIDguNDEgNyAxMiAxMC41OSAxNS41OSA3IDE3IDguNDEgMTMuNDEgMTIgMTcgMTUuNTl6Ii8+PC9zdmc+PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIyNCIgaGVpZ2h0PSIyNCIgdmlld0JveD0iMCAwIDI0IDI0IiBpZD0iY2hldnJvbl9sZWZ0XzI0cHgiPjxwYXRoIGQ9Ik0xNS40MSA3LjQxTDE0IDZsLTYgNiA2IDYgMS40MS0xLjQxTDEwLjgzIDEyeiIvPjwvc3ZnPjxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB3aWR0aD0iMjQiIGhlaWdodD0iMjQiIHZpZXdCb3g9IjAgMCAyNCAyNCIgaWQ9ImNoZXZyb25fcmlnaHRfMjRweCI+PHBhdGggZD0iTTEwIDZMOC41OSA3LjQxIDEzLjE3IDEybC00LjU4IDQuNTlMMTAgMThsNi02eiIvPjwvc3ZnPjxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB3aWR0aD0iMjQiIGhlaWdodD0iMjQiIHZpZXdCb3g9IjAgMCAyNCAyNCIgaWQ9ImNsZWFyXzI0cHgiPjxwYXRoIGQ9Ik0xOSA2LjQxTDE3LjU5IDUgMTIgMTAuNTkgNi40MSA1IDUgNi40MSAxMC41OSAxMiA1IDE3LjU5IDYuNDEgMTkgMTIgMTMuNDEgMTcuNTkgMTkgMTkgMTcuNTkgMTMuNDEgMTJ6Ii8+PC9zdmc+PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIGhlaWdodD0iMjQiIHZpZXdCb3g9IjAgMCAyNCAyNCIgd2lkdGg9IjI0IiBpZD0iY2xvc2VfMjRweCI+PHBhdGggZD0iTTAgMGgyNHYyNEgweiIgZmlsbD0ibm9uZSIvPjxwYXRoIGQ9Ik0xOSA2LjQxTDE3LjU5IDUgMTIgMTAuNTkgNi40MSA1IDUgNi40MSAxMC41OSAxMiA1IDE3LjU5IDYuNDEgMTkgMTIgMTMuNDEgMTcuNTkgMTkgMTkgMTcuNTkgMTMuNDEgMTJ6Ii8+PC9zdmc+PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIyNCIgaGVpZ2h0PSIyNCIgdmlld0JveD0iMCAwIDI0IDI0IiBpZD0iY29udGVudF9jb3B5XzI0cHgiPjxwYXRoIGQ9Ik0xNiAxSDRjLTEuMSAwLTIgLjktMiAydjE0aDJWM2gxMlYxem0zIDRIOGMtMS4xIDAtMiAuOS0yIDJ2MTRjMCAxLjEuOSAyIDIgMmgxMWMxLjEgMCAyLS45IDItMlY3YzAtMS4xLS45LTItMi0yem0wIDE2SDhWN2gxMXYxNHoiLz48L3N2Zz48c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgaGVpZ2h0PSIyNCIgdmlld0JveD0iMCAwIDI0IDI0IiB3aWR0aD0iMjQiIGlkPSJlZGl0XzI0cHgiPjxwYXRoIGQ9Ik0wIDBoMjR2MjRIMHoiIGZpbGw9Im5vbmUiLz48cGF0aCBkPSJNMyAxNy4yNVYyMWgzLjc1TDE3LjgxIDkuOTRsLTMuNzUtMy43NUwzIDE3LjI1ek0yMC43MSA3LjA0Yy4zOS0uMzkuMzktMS4wMiAwLTEuNDFsLTIuMzQtMi4zNGMtLjM5LS4zOS0xLjAyLS4zOS0xLjQxIDBsLTEuODMgMS44MyAzLjc1IDMuNzUgMS44My0xLjgzeiIvPjwvc3ZnPjxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB3aWR0aD0iMjQiIGhlaWdodD0iMjQiIHZpZXdCb3g9IjAgMCAyNCAyNCIgaWQ9ImVycm9yXzI0cHgiPjxwYXRoIGQ9Ik0xMiAyQzYuNDggMiAyIDYuNDggMiAxMnM0LjQ4IDEwIDEwIDEwIDEwLTQuNDggMTAtMTBTMTcuNTIgMiAxMiAyem0xIDE1aC0ydi0yaDJ2MnptMC00aC0yVjdoMnY2eiIvPjwvc3ZnPjxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB3aWR0aD0iMjQiIGhlaWdodD0iMjQiIHZpZXdCb3g9IjAgMCAyNCAyNCIgaWQ9ImV4cGFuZF9sZXNzXzI0cHgiPjxwYXRoIGQ9Ik0xMiA4bC02IDYgMS40MSAxLjQxTDEyIDEwLjgzbDQuNTkgNC41OEwxOCAxNHoiLz48L3N2Zz48c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgd2lkdGg9IjI0IiBoZWlnaHQ9IjI0IiB2aWV3Qm94PSIwIDAgMjQgMjQiIGlkPSJleHBhbmRfbW9yZV8yNHB4Ij48cGF0aCBkPSJNMTYuNTkgOC41OUwxMiAxMy4xNyA3LjQxIDguNTkgNiAxMGw2IDYgNi02eiIvPjwvc3ZnPjxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiBlbmFibGUtYmFja2dyb3VuZD0ibmV3IDAgMCAyNCAyNCIgaGVpZ2h0PSIyNCIgdmlld0JveD0iMCAwIDI0IDI0IiB3aWR0aD0iMjQiIGlkPSJmaWx0ZXJfYWx0XzI0cHgiPjxnPjxwYXRoIGQ9Ik0wLDBoMjQgTTI0LDI0SDAiIGZpbGw9Im5vbmUiLz48cGF0aCBkPSJNNC4yNSw1LjYxQzYuMjcsOC4yLDEwLDEzLDEwLDEzdjZjMCwwLjU1LDAuNDUsMSwxLDFoMmMwLjU1LDAsMS0wLjQ1LDEtMXYtNmMwLDAsMy43Mi00LjgsNS43NC03LjM5IEMyMC4yNSw0Ljk1LDE5Ljc4LDQsMTguOTUsNEg1LjA0QzQuMjEsNCwzLjc0LDQuOTUsNC4yNSw1LjYxeiIvPjxwYXRoIGQ9Ik0wLDBoMjR2MjRIMFYweiIgZmlsbD0ibm9uZSIvPjwvZz48L3N2Zz48c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgd2lkdGg9IjI0IiBoZWlnaHQ9IjI0IiB2aWV3Qm94PSIwIDAgMjQgMjQiIGlkPSJmbGFnXzI0cHgiPjxwYXRoIGQ9Ik0xNC40IDZMMTQgNEg1djE3aDJ2LTdoNS42bC40IDJoN1Y2eiIvPjwvc3ZnPjxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiBoZWlnaHQ9IjI0IiB2aWV3Qm94PSIwIDAgMjQgMjQiIHdpZHRoPSIyNCIgaWQ9ImZ1bGxzY3JlZW5fMjRweCI+PHBhdGggZD0iTTAgMGgyNHYyNEgweiIgZmlsbD0ibm9uZSIvPjxwYXRoIGQ9Ik03IDE0SDV2NWg1di0ySDd2LTN6bS0yLTRoMlY3aDNWNUg1djV6bTEyIDdoLTN2Mmg1di01aC0ydjN6TTE0IDV2MmgzdjNoMlY1aC01eiIvPjwvc3ZnPjxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiBoZWlnaHQ9IjI0IiB2aWV3Qm94PSIwIDAgMjQgMjQiIHdpZHRoPSIyNCIgaWQ9ImZ1bGxzY3JlZW5fZXhpdF8yNHB4Ij48cGF0aCBkPSJNMCAwaDI0djI0SDB6IiBmaWxsPSJub25lIi8+PHBhdGggZD0iTTUgMTZoM3YzaDJ2LTVINXYyem0zLThINXYyaDVWNUg4djN6bTYgMTFoMnYtM2gzdi0yaC01djV6bTItMTFWNWgtMnY1aDVWOGgtM3oiLz48L3N2Zz48c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgd2lkdGg9IjI0IiBoZWlnaHQ9IjI0IiB2aWV3Qm94PSIwIDAgMjQgMjQiIGlkPSJnZXRfYXBwXzI0cHgiPjxwYXRoIGQ9Ik0xOSA5aC00VjNIOXY2SDVsNyA3IDctN3pNNSAxOHYyaDE0di0ySDV6Ii8+PC9zdmc+PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIyNCIgaGVpZ2h0PSIyNCIgdmlld0JveD0iMCAwIDI0IDI0IiBpZD0iZ3JvdXBfd29ya18yNHB4Ij48cGF0aCBkPSJNMTIgMkM2LjQ4IDIgMiA2LjQ4IDIgMTJzNC40OCAxMCAxMCAxMCAxMC00LjQ4IDEwLTEwUzE3LjUyIDIgMTIgMnpNOCAxNy41Yy0xLjM4IDAtMi41LTEuMTItMi41LTIuNXMxLjEyLTIuNSAyLjUtMi41IDIuNSAxLjEyIDIuNSAyLjUtMS4xMiAyLjUtMi41IDIuNXpNOS41IDhjMC0xLjM4IDEuMTItMi41IDIuNS0yLjVzMi41IDEuMTIgMi41IDIuNS0xLjEyIDIuNS0yLjUgMi41UzkuNSA5LjM4IDkuNSA4em02LjUgOS41Yy0xLjM4IDAtMi41LTEuMTItMi41LTIuNXMxLjEyLTIuNSAyLjUtMi41IDIuNSAxLjEyIDIuNSAyLjUtMS4xMiAyLjUtMi41IDIuNXoiLz48L3N2Zz48c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgd2lkdGg9IjI0IiBoZWlnaHQ9IjI0IiB2aWV3Qm94PSIwIDAgMjQgMjQiIGlkPSJoZWxwX291dGxpbmVfMjRweCI+PHBhdGggZD0iTTExIDE4aDJ2LTJoLTJ2MnptMS0xNkM2LjQ4IDIgMiA2LjQ4IDIgMTJzNC40OCAxMCAxMCAxMCAxMC00LjQ4IDEwLTEwUzE3LjUyIDIgMTIgMnptMCAxOGMtNC40MSAwLTgtMy41OS04LThzMy41OS04IDgtOCA4IDMuNTkgOCA4LTMuNTkgOC04IDh6bTAtMTRjLTIuMjEgMC00IDEuNzktNCA0aDJjMC0xLjEuOS0yIDItMnMyIC45IDIgMmMwIDItMyAxLjc1LTMgNWgyYzAtMi4yNSAzLTIuNSAzLTUgMC0yLjIxLTEuNzktNC00LTR6Ii8+PC9zdmc+PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIGhlaWdodD0iMjQiIHZpZXdCb3g9IjAgMCAyNCAyNCIgd2lkdGg9IjI0IiBpZD0iaW1hZ2Vfc2VhcmNoXzI0cHgiPjxwYXRoIGQ9Ik0wIDBoMjR2MjRIMHoiIGZpbGw9Im5vbmUiLz48cGF0aCBkPSJNMCAwaDI0djI0SDBWMHoiIGZpbGw9Im5vbmUiLz48cGF0aCBkPSJNMTggMTN2N0g0VjZoNS4wMmMuMDUtLjcxLjIyLTEuMzguNDgtMkg0Yy0xLjEgMC0yIC45LTIgMnYxNGMwIDEuMS45IDIgMiAyaDE0YzEuMSAwIDItLjkgMi0ydi01bC0yLTJ6bS0xLjUgNWgtMTFsMi43NS0zLjUzIDEuOTYgMi4zNiAyLjc1LTMuNTR6bTIuOC05LjExYy40NC0uNy43LTEuNTEuNy0yLjM5QzIwIDQuMDEgMTcuOTkgMiAxNS41IDJTMTEgNC4wMSAxMSA2LjVzMi4wMSA0LjUgNC40OSA0LjVjLjg4IDAgMS43LS4yNiAyLjM5LS43TDIxIDEzLjQyIDIyLjQyIDEyIDE5LjMgOC44OXpNMTUuNSA5QzE0LjEyIDkgMTMgNy44OCAxMyA2LjVTMTQuMTIgNCAxNS41IDQgMTggNS4xMiAxOCA2LjUgMTYuODggOSAxNS41IDl6Ii8+PC9zdmc+PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIyNCIgaGVpZ2h0PSIyNCIgdmlld0JveD0iMCAwIDI0IDI0IiBpZD0iaW5mb19vdXRsaW5lXzI0cHgiPjxwYXRoIGQ9Ik0xMSAxN2gydi02aC0ydjZ6bTEtMTVDNi40OCAyIDIgNi40OCAyIDEyczQuNDggMTAgMTAgMTAgMTAtNC40OCAxMC0xMFMxNy41MiAyIDEyIDJ6bTAgMThjLTQuNDEgMC04LTMuNTktOC04czMuNTktOCA4LTggOCAzLjU5IDggOC0zLjU5IDgtOCA4ek0xMSA5aDJWN2gtMnYyeiIvPjwvc3ZnPjxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiBlbmFibGUtYmFja2dyb3VuZD0ibmV3IDAgMCAyNCAyNCIgaGVpZ2h0PSIyNCIgdmlld0JveD0iMCAwIDI0IDI0IiB3aWR0aD0iMjQiIGlkPSJrZWVwXzI0cHgiPjxnPjxyZWN0IGZpbGw9Im5vbmUiIGhlaWdodD0iMjQiIHdpZHRoPSIyNCIvPjwvZz48Zz48cGF0aCBkPSJNMTYsOVY0bDEsMGMwLjU1LDAsMS0wLjQ1LDEtMXYwYzAtMC41NS0wLjQ1LTEtMS0xSDdDNi40NSwyLDYsMi40NSw2LDN2MCBjMCwwLjU1LDAuNDUsMSwxLDFsMSwwdjVjMCwxLjY2LTEuMzQsMy0zLDNoMHYyaDUuOTd2N2wxLDFsMS0xdi03SDE5di0yaDBDMTcuMzQsMTIsMTYsMTAuNjYsMTYsOXoiIGZpbGwtcnVsZT0iZXZlbm9kZCIvPjwvZz48L3N2Zz48c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgZW5hYmxlLWJhY2tncm91bmQ9Im5ldyAwIDAgMjQgMjQiIGhlaWdodD0iMjQiIHZpZXdCb3g9IjAgMCAyNCAyNCIgd2lkdGg9IjI0IiBpZD0ia2VlcF9vdXRsaW5lXzI0cHgiPjxnPjxyZWN0IGZpbGw9Im5vbmUiIGhlaWdodD0iMjQiIHdpZHRoPSIyNCIvPjwvZz48Zz48cGF0aCBkPSJNMTQsNHY1YzAsMS4xMiwwLjM3LDIuMTYsMSwzSDljMC42NS0wLjg2LDEtMS45LDEtM1Y0SDE0IE0xNywySDdDNi40NSwyLDYsMi40NSw2LDNjMCwwLjU1LDAuNDUsMSwxLDFjMCwwLDAsMCwwLDBsMSwwdjUgYzAsMS42Ni0xLjM0LDMtMywzdjJoNS45N3Y3bDEsMWwxLTF2LTdIMTl2LTJjMCwwLDAsMCwwLDBjLTEuNjYsMC0zLTEuMzQtMy0zVjRsMSwwYzAsMCwwLDAsMCwwYzAuNTUsMCwxLTAuNDUsMS0xIEMxOCwyLjQ1LDE3LjU1LDIsMTcsMkwxNywyeiIvPjwvZz48L3N2Zz48c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgZW5hYmxlLWJhY2tncm91bmQ9Im5ldyAwIDAgMjQgMjQiIGhlaWdodD0iMjQiIHZpZXdCb3g9IjAgMCAyNCAyNCIgd2lkdGg9IjI0IiBpZD0ibGluZV93ZWlnaHRfMjRweCI+PGc+PHJlY3QgZmlsbD0ibm9uZSIgaGVpZ2h0PSIyNCIgd2lkdGg9IjI0IiB4PSIwIi8+PC9nPjxnPjxnPjxnPjxwYXRoIGQ9Ik0zLDE3aDE4di0ySDNWMTd6IE0zLDIwaDE4di0xSDNWMjB6IE0zLDEzaDE4di0zSDNWMTN6IE0zLDR2NGgxOFY0SDN6Ii8+PC9nPjwvZz48L2c+PC9zdmc+PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIGhlaWdodD0iMjQiIHZpZXdCb3g9IjAgMCAyNCAyNCIgd2lkdGg9IjI0IiBpZD0ibW9yZV92ZXJ0XzI0cHgiPjxwYXRoIGQ9Ik0wIDBoMjR2MjRIMHoiIGZpbGw9Im5vbmUiLz48cGF0aCBkPSJNMTIgOGMxLjEgMCAyLS45IDItMnMtLjktMi0yLTItMiAuOS0yIDIgLjkgMiAyIDJ6bTAgMmMtMS4xIDAtMiAuOS0yIDJzLjkgMiAyIDIgMi0uOSAyLTItLjktMi0yLTJ6bTAgNmMtMS4xIDAtMiAuOS0yIDJzLjkgMiAyIDIgMi0uOSAyLTItLjktMi0yLTJ6Ii8+PC9zdmc+PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIGhlaWdodD0iMjQiIHZpZXdCb3g9IjAgMCAyNCAyNCIgd2lkdGg9IjI0IiBpZD0ibm90aWZpY2F0aW9uc19ub25lXzI0cHgiPjxwYXRoIGQ9Ik0wIDBoMjR2MjRIMHoiIGZpbGw9Im5vbmUiLz48cGF0aCBkPSJNMTIgMjJjMS4xIDAgMi0uOSAyLTJoLTRjMCAxLjEuOSAyIDIgMnptNi02di01YzAtMy4wNy0xLjYzLTUuNjQtNC41LTYuMzJWNGMwLS44My0uNjctMS41LTEuNS0xLjVzLTEuNS42Ny0xLjUgMS41di42OEM3LjY0IDUuMzYgNiA3LjkyIDYgMTF2NWwtMiAydjFoMTZ2LTFsLTItMnptLTIgMUg4di02YzAtMi40OCAxLjUxLTQuNSA0LTQuNXM0IDIuMDIgNCA0LjV2NnoiLz48L3N2Zz48c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgd2lkdGg9IjI0IiBoZWlnaHQ9IjI0IiB2aWV3Qm94PSIwIDAgMjQgMjQiIGlkPSJyZWZyZXNoXzI0cHgiPjxwYXRoIGQ9Ik0xNy42NSA2LjM1QzE2LjIgNC45IDE0LjIxIDQgMTIgNGMtNC40MiAwLTcuOTkgMy41OC03Ljk5IDhzMy41NyA4IDcuOTkgOGMzLjczIDAgNi44NC0yLjU1IDcuNzMtNmgtMi4wOGMtLjgyIDIuMzMtMy4wNCA0LTUuNjUgNC0zLjMxIDAtNi0yLjY5LTYtNnMyLjY5LTYgNi02YzEuNjYgMCAzLjE0LjY5IDQuMjIgMS43OEwxMyAxMWg3VjRsLTIuMzUgMi4zNXoiLz48L3N2Zz48c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgd2lkdGg9IjI0IiBoZWlnaHQ9IjI0IiB2aWV3Qm94PSIwIDAgMjQgMjQiIGlkPSJzZWFyY2hfMjRweCI+PHBhdGggZD0iTTE1LjUgMTRoLS43OWwtLjI4LS4yN0MxNS40MSAxMi41OSAxNiAxMS4xMSAxNiA5LjUgMTYgNS45MSAxMy4wOSAzIDkuNSAzUzMgNS45MSAzIDkuNSA1LjkxIDE2IDkuNSAxNmMxLjYxIDAgMy4wOS0uNTkgNC4yMy0xLjU3bC4yNy4yOHYuNzlsNSA0Ljk5TDIwLjQ5IDE5bC00Ljk5LTV6bS02IDBDNy4wMSAxNCA1IDExLjk5IDUgOS41UzcuMDEgNSA5LjUgNSAxNCA3LjAxIDE0IDkuNSAxMS45OSAxNCA5LjUgMTR6Ii8+PC9zdmc+PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIyNCIgaGVpZ2h0PSIyNCIgdmlld0JveD0iMCAwIDI0IDI0IiBpZD0ic2V0dGluZ3NfMjRweCI+PHBhdGggZD0iTTE5LjQzIDEyLjk4Yy4wNC0uMzIuMDctLjY0LjA3LS45OHMtLjAzLS42Ni0uMDctLjk4bDIuMTEtMS42NWMuMTktLjE1LjI0LS40Mi4xMi0uNjRsLTItMy40NmMtLjEyLS4yMi0uMzktLjMtLjYxLS4yMmwtMi40OSAxYy0uNTItLjQtMS4wOC0uNzMtMS42OS0uOThsLS4zOC0yLjY1QzE0LjQ2IDIuMTggMTQuMjUgMiAxNCAyaC00Yy0uMjUgMC0uNDYuMTgtLjQ5LjQybC0uMzggMi42NWMtLjYxLjI1LTEuMTcuNTktMS42OS45OGwtMi40OS0xYy0uMjMtLjA5LS40OSAwLS42MS4yMmwtMiAzLjQ2Yy0uMTMuMjItLjA3LjQ5LjEyLjY0bDIuMTEgMS42NWMtLjA0LjMyLS4wNy42NS0uMDcuOThzLjAzLjY2LjA3Ljk4bC0yLjExIDEuNjVjLS4xOS4xNS0uMjQuNDItLjEyLjY0bDIgMy40NmMuMTIuMjIuMzkuMy42MS4yMmwyLjQ5LTFjLjUyLjQgMS4wOC43MyAxLjY5Ljk4bC4zOCAyLjY1Yy4wMy4yNC4yNC40Mi40OS40Mmg0Yy4yNSAwIC40Ni0uMTguNDktLjQybC4zOC0yLjY1Yy42MS0uMjUgMS4xNy0uNTkgMS42OS0uOThsMi40OSAxYy4yMy4wOS40OSAwIC42MS0uMjJsMi0zLjQ2Yy4xMi0uMjIuMDctLjQ5LS4xMi0uNjRsLTIuMTEtMS42NXpNMTIgMTUuNWMtMS45MyAwLTMuNS0xLjU3LTMuNS0zLjVzMS41Ny0zLjUgMy41LTMuNSAzLjUgMS41NyAzLjUgMy41LTEuNTcgMy41LTMuNSAzLjV6Ii8+PC9zdmc+PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIGhlaWdodD0iMjQiIHZpZXdCb3g9IjAgMCAyNCAyNCIgd2lkdGg9IjI0IiBpZD0ic2V0dGluZ3NfYmFja3VwX3Jlc3RvcmVfMjRweCI+PHBhdGggZD0iTTAgMGgyNHYyNEgweiIgZmlsbD0ibm9uZSIvPjxwYXRoIGQ9Ik0xNCAxMmMwLTEuMS0uOS0yLTItMnMtMiAuOS0yIDIgLjkgMiAyIDIgMi0uOSAyLTJ6bS0yLTljLTQuOTcgMC05IDQuMDMtOSA5SDBsNCA0IDQtNEg1YzAtMy44NyAzLjEzLTcgNy03czcgMy4xMyA3IDctMy4xMyA3LTcgN2MtMS41MSAwLTIuOTEtLjQ5LTQuMDYtMS4zbC0xLjQyIDEuNDRDOC4wNCAyMC4zIDkuOTQgMjEgMTIgMjFjNC45NyAwIDktNC4wMyA5LTlzLTQuMDMtOS05LTl6Ii8+PC9zdmc+PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIGhlaWdodD0iMjQiIHZpZXdCb3g9IjAgMCAyNCAyNCIgd2lkdGg9IjI0IiBpZD0ic2V0dGluZ3Nfb3ZlcnNjYW5fMjRweCI+PHBhdGggZD0iTTAgMGgyNHYyNEgweiIgZmlsbD0ibm9uZSIvPjxwYXRoIGQ9Ik0xMi4wMSA1LjVMMTAgOGg0bC0xLjk5LTIuNXpNMTggMTB2NGwyLjUtMS45OUwxOCAxMHpNNiAxMGwtMi41IDIuMDFMNiAxNHYtNHptOCA2aC00bDIuMDEgMi41TDE0IDE2em03LTEzSDNjLTEuMSAwLTIgLjktMiAydjE0YzAgMS4xLjkgMiAyIDJoMThjMS4xIDAgMi0uOSAyLTJWNWMwLTEuMS0uOS0yLTItMnptMCAxNi4wMUgzVjQuOTloMTh2MTQuMDJ6Ii8+PC9zdmc+PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIyNCIgaGVpZ2h0PSIyNCIgdmlld0JveD0iMCAwIDI0IDI0IiBpZD0idmlzaWJpbGl0eV9vZmZfMjRweCI+PHBhdGggZD0iTTEyIDdjMi43NiAwIDUgMi4yNCA1IDUgMCAuNjUtLjEzIDEuMjYtLjM2IDEuODNsMi45MiAyLjkyYzEuNTEtMS4yNiAyLjctMi44OSAzLjQzLTQuNzUtMS43My00LjM5LTYtNy41LTExLTcuNS0xLjQgMC0yLjc0LjI1LTMuOTguN2wyLjE2IDIuMTZDMTAuNzQgNy4xMyAxMS4zNSA3IDEyIDd6TTIgNC4yN2wyLjI4IDIuMjguNDYuNDZDMy4wOCA4LjMgMS43OCAxMC4wMiAxIDEyYzEuNzMgNC4zOSA2IDcuNSAxMSA3LjUgMS41NSAwIDMuMDMtLjMgNC4zOC0uODRsLjQyLjQyTDE5LjczIDIyIDIxIDIwLjczIDMuMjcgMyAyIDQuMjd6TTcuNTMgOS44bDEuNTUgMS41NWMtLjA1LjIxLS4wOC40My0uMDguNjUgMCAxLjY2IDEuMzQgMyAzIDMgLjIyIDAgLjQ0LS4wMy42NS0uMDhsMS41NSAxLjU1Yy0uNjcuMzMtMS40MS41My0yLjIuNTMtMi43NiAwLTUtMi4yNC01LTUgMC0uNzkuMi0xLjUzLjUzLTIuMnptNC4zMS0uNzhsMy4xNSAzLjE1LjAyLS4xNmMwLTEuNjYtMS4zNC0zLTMtM2wtLjE3LjAxeiIvPjwvc3ZnPjxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiBoZWlnaHQ9IjI0IiB2aWV3Qm94PSIwIDAgMjQgMjQiIHdpZHRoPSIyNCIgaWQ9Indhcm5pbmdfMjRweCI+PHBhdGggZD0iTTAgMGgyNHYyNEgweiIgZmlsbD0ibm9uZSIvPjxwYXRoIGQ9Ik0xIDIxaDIyTDEyIDIgMSAyMXptMTItM2gtMnYtMmgydjJ6bTAtNGgtMnYtNGgydjR6Ii8+PC9zdmc+PC9kZWZzPjwvc3ZnPgo=", + "ok": true, + "headers": [ + [ + "content-type", + "image/svg+xml; charset=utf-8" + ] + ], + "status": 200, + "status_text": "OK" + }, + "https://localhost:6006/data/runs": { + "data": "WyJtbmlzdF9SNDVfc2NhbGVyMF8xLjhfc2NhbGVyMV8xLjBfbXNlX1RoMWUtMDVfZGF0ZTIwMjEwNzEzLTEyMzIzOSIsICJtbmlzdF9SNDVfc2NhbGVyMF8xLjBfc2NhbGVyMV8xLjBfbXNlX1RoMWUtMDVfZGF0ZTIwMjEwNzEzLTEyNTYwOCIsICJtbmlzdF9SNDVfc2NhbGVyMF8xLjBfc2NhbGVyMV8xLjBfbXNlX1RoMWUtMDVfZGF0ZTIwMjEwNzEzLTEzMDA1MSIsICJtbmlzdF9SNDVfc2NhbGVyMF8zLjBfc2NhbGVyMV8xLjBfbXNlX1RoMWUtMDVfZGF0ZTIwMjEwNzEzLTEzMDQyNyIsICJtbmlzdF9SNDVfc2NhbGVyMF8xNi4wX3NjYWxlcjFfMS4wX21zZV9UaDFlLTA1X2RhdGUyMDIxMDcxMy0xMzA2NDYiLCAibW5pc3RfUjhfc2NhbGVyMF8xNi4wX3NjYWxlcjFfMS4wX21zZV9UaDFlLTA1X2RhdGUyMDIxMDcxMy0xMzA4NDciLCAibW5pc3RfUjE2X3NjYWxlcjBfMTYuMF9zY2FsZXIxXzEuMF9tc2VfVGgxZS0wNV9kYXRlMjAyMTA3MTMtMTMwOTI5IiwgIm1uaXN0X1IxNl9zY2FsZXIwXzguMF9zY2FsZXIxXzguMF9tc2VfVGgxZS0wNV9kYXRlMjAyMTA3MTMtMTMxMDMwIiwgIm1uaXN0X1IxNl9zY2FsZXIwXzQuMF9zY2FsZXIxXzguMF9tc2VfVGgxZS0wNV9kYXRlMjAyMTA3MTMtMTMxMTEwIiwgIm1uaXN0X1IxNl9zY2FsZXIwXzguMF9zY2FsZXIxXzIuMF9tc2VfVGgxZS0wNV9kYXRlMjAyMTA3MTMtMTMxMTQ3IiwgImJhc2VfUjhfZnJvYmVuaXVzLW5vcm1fVGgxZS0wNV9kYXRlMjAyMTA3MTMtMTYxNTIwIiwgIm1uaXN0X1IzMl9zY2FsZXIwXzguMF9zY2FsZXIxXzEuMF9tc2VfVGgxZS0wNV9kYXRlMjAyMTA3MTMtMTYyNjI0IiwgIm1uaXN0X1IzMl9zY2FsZXIwXzguMF9zY2FsZXIxXzEuMF9tc2VfVGgxZS0wNV9kYXRlMjAyMTA3MTMtMTYyNzQyIiwgIm1uaXN0X1IzMl9zY2FsZXIwXzguMF9zY2FsZXIxXzEuMF9tc2VfVGgxZS0wNV9kYXRlMjAyMTA3MTMtMTYyOTEwIiwgIm1uaXN0X1IzMl9zY2FsZXIwXzguMF9zY2FsZXIxXzEuMF9tc2VfVGgxZS0wNV9kYXRlMjAyMTA3MTMtMTY0NDEzIiwgIm1uaXN0XzRibG9ja3NfUjE2X3NjYWxlcjBfMS4wX3NjYWxlcjFfMS4wX21zZV9UaDFlLTA1X2RhdGUyMDIxMDcxMy0xNzM5MTYiLCAibW5pc3RfNGJsb2Nrc19SMTZfc2NhbGVyMF8xLjBfc2NhbGVyMV8xLjBfbXNlX1RoMWUtMDVfZGF0ZTIwMjEwNzEzLTE3NDA0NyIsICJtbmlzdF80YmxvY2tzX1IzMl9zY2FsZXIwXzEuMF9zY2FsZXIxXzEuMF9tc2VfVGgxZS0wNV9kYXRlMjAyMTA3MTMtMTc0MTExIiwgIm1uaXN0XzRibG9ja3NfUjQ1X3NjYWxlcjBfMS4wX3NjYWxlcjFfMS4wX21zZV9UaDFlLTA1X2RhdGUyMDIxMDcxMy0xNzQxNDUiLCAiYmFzZV9SOF9mcm9iZW5pdXMtbm9ybV9UaDFlLTA1X2RhdGUyMDIxMDcxNC0wNzU3MjMiLCAibW5pc3RfUjMyX3NjYWxlcjBfOC4wX3NjYWxlcjFfMS4wX21zZV9UaDFlLTA1X2RhdGUyMDIxMDcxNC0wNzU5MjQiLCAibW5pc3RfUjQ1X3NjYWxlcjBfMS4wX3NjYWxlcjFfNi4wX21zZV9UaDFlLTA1X2RhdGUyMDIxMDcxNC0wODEwMzQiLCAibW5pc3RfUjQ1X3NjYWxlcjBfNi4wX3NjYWxlcjFfMS4wX21zZV9UaDFlLTA1X2RhdGUyMDIxMDcxNC0xMTE3NDMiLCAibW5pc3RfUjQ1X3NjYWxlcjBfMS4yX3NjYWxlcjFfMS4wX21zZV9UaDFlLTA1X2RhdGUyMDIxMDcxNC0xMTI5MDYiLCAibW5pc3RfUjQ1X3NjYWxlcjBfMS4wX3NjYWxlcjFfMS4wX21zZV9UaDFlLTA1X2RhdGUyMDIxMDcxNC0xMTI5NTUiLCAibW5pc3RfUjQ1X3NjYWxlcjBfMS4wX3NjYWxlcjFfMS4wX21zZV9UaDFlLTA1X2RhdGUyMDIxMDcxNC0xMTM0NDIiLCAibW5pc3RfUjQ1X3NjYWxlcjBfMS4yX3NjYWxlcjFfMS4wX21zZV9UaDFlLTA1X2RhdGUyMDIxMDcxNC0xMTM4MTgiLCAibW5pc3RfUjQ1X3NjYWxlcjBfMS4yX3NjYWxlcjFfMS4wX21zZV9UaDFlLTA1X2RhdGUyMDIxMDcxNC0xMTQ2MDkiLCAibW5pc3RfUjQ1X3NjYWxlcjBfMS4wX3NjYWxlcjFfMS44X21zZV9UaDFlLTA1X2RhdGUyMDIxMDcxNC0xMTUyMDIiLCAibW5pc3RfUjQ1X3NjYWxlcjBfMi4wX3NjYWxlcjFfMi4wX21zZV9UaDFlLTA1X2RhdGUyMDIxMDcxNC0xMTU1MjQiLCAiYmFzZV9SOF9mcm9iZW5pdXMtbm9ybV9UaDFlLTA1X2RhdGUyMDIxMDcyMC0wOTMzMzYiLCAibW5pc3RfUjQ1X3NjYWxlcjBfMS4wX3NjYWxlcjFfMi4wX21zZV9UaDFlLTA1X2RhdGUyMDIxMDcyMC0wOTM1MzQiLCAiYmFzZV9SOF9mcm9iZW5pdXMtbm9ybV9UaDFlLTA1X2RhdGUyMDIxMDcyMC0wOTM4NTQiLCAibW5pc3RfUjQ1X3NjYWxlcjBfMS4wX3NjYWxlcjFfMi4wX21zZV9UaDFlLTA1X2RhdGUyMDIxMDcyMC0xMDE2MDIiLCAibW5pc3RfUjQ1X3NjYWxlcjBfMS4wX3NjYWxlcjFfMi4wX21zZV9UaDFlLTA1X2RhdGUyMDIxMDcyMC0xMDE3MzMiLCAiY25uLWxzdG1fUjQ1X3NjYWxlcjBfMS4wX3NjYWxlcjFfMS4wX21zZV9UaDFlLTA1X2RhdGUyMDIxMDcyMC0xMjA2MjMiLCAiY25uLWxzdG1fUjhfc2NhbGVyMF8xLjBfc2NhbGVyMV8xLjBfbXNlX1RoMWUtMDVfZGF0ZTIwMjEwNzIwLTEyMzU1NCIsICJjbm4tbHN0bV9SOF9zY2FsZXIwXzEuMF9zY2FsZXIxXzEuMF9tc2VfVGgxZS0wNV9kYXRlMjAyMTA3MjAtMTIzNjAyIiwgImNubi1sc3RtX1I4X3NjYWxlcjBfMS4wX3NjYWxlcjFfMS4wX21zZV9UaDFlLTA1X2RhdGUyMDIxMDcyMC0xMjM4NDEiLCAiY25uLWxzdG1fUjhfc2NhbGVyMF8xLjBfc2NhbGVyMV8xLjBfbXNlX1RoMWUtMDVfZGF0ZTIwMjEwNzIwLTEyMzkwNiIsICJjbm4tbHN0bV9SMjVfc2NhbGVyMF8xLjBfc2NhbGVyMV8xLjBfbXNlX1RoMWUtMDVfZGF0ZTIwMjEwNzIwLTEyNTkyNiIsICJiYXNlX1I4X2Zyb2Jlbml1cy1ub3JtX1RoMWUtMDVfZGF0ZTIwMjEwNzIwLTE2MjAzOCIsICJtbmlzdF9SNDVfc2NhbGVyMF8xLjBfc2NhbGVyMV8yLjBfbXNlX1RoMWUtMDVfZGF0ZTIwMjEwNzIwLTE2MjI1MSIsICJtbmlzdF9SNDVfc2NhbGVyMF8xLjBfc2NhbGVyMV8yLjBfbXNlX1RoMWUtMDVfZGF0ZTIwMjEwNzIwLTIxMDkyOCIsICJtbmlzdF9SNDVfc2NhbGVyMF8xLjBfc2NhbGVyMV8xLjFfbXNlX1RoMWUtMDVfZGF0ZTIwMjEwNzIwLTIxMTExOSIsICJtbmlzdF9SNDVfc2NhbGVyMF8xLjBfc2NhbGVyMV8xLjBfbXNlX1RoMWUtMDVfZGF0ZTIwMjEwNzIwLTIxMTE1MiIsICJtbmlzdF9SNDVfc2NhbGVyMF8xLjBfc2NhbGVyMV8wLjlfbXNlX1RoMWUtMDVfZGF0ZTIwMjEwNzIwLTIxMTMwMSIsICJtbmlzdF9SNDVfc2NhbGVyMF8xLjBfc2NhbGVyMV8xLjRfbXNlX1RoMWUtMDVfZGF0ZTIwMjEwNzIwLTIxMTQ1MyIsICJtbmlzdF9SNDVfc2NhbGVyMF8xLjBfc2NhbGVyMV8xLjFfbXNlX1RoMWUtMDVfZGF0ZTIwMjEwNzIwLTIxMTgwMCIsICJtbmlzdF9SNDVfc2NhbGVyMF8xLjBfc2NhbGVyMV8xLjBfbXNlX1RoMWUtMDVfZGF0ZTIwMjEwNzIwLTIxMjE1MSIsICJtbmlzdF9SNDVfc2NhbGVyMF8xLjBfc2NhbGVyMV8xLjRfbXNlX1RoMWUtMDVfZGF0ZTIwMjEwNzIwLTIxMjMyMSIsICJtbmlzdF9SNDVfc2NhbGVyMF8xLjBfc2NhbGVyMV8xLjBfbXNlX1RoMWUtMDVfZGF0ZTIwMjEwNzIwLTIxMzkyOCJd", + "ok": true, + "headers": [ + [ + "content-type", + "application/json" + ] + ], + "status": 200, + "status_text": "OK" + }, + "https://localhost:6006/data/plugins_listing": { + "data": "eyJzY2FsYXJzIjogeyJkaXNhYmxlX3JlbG9hZCI6IGZhbHNlLCAiZW5hYmxlZCI6IHRydWUsICJyZW1vdmVfZG9tIjogZmFsc2UsICJ0YWJfbmFtZSI6ICJzY2FsYXJzIiwgImxvYWRpbmdfbWVjaGFuaXNtIjogeyJ0eXBlIjogIkNVU1RPTV9FTEVNRU5UIiwgImVsZW1lbnRfbmFtZSI6ICJ0Zi1zY2FsYXItZGFzaGJvYXJkIn19LCAiY3VzdG9tX3NjYWxhcnMiOiB7ImRpc2FibGVfcmVsb2FkIjogZmFsc2UsICJlbmFibGVkIjogZmFsc2UsICJyZW1vdmVfZG9tIjogZmFsc2UsICJ0YWJfbmFtZSI6ICJDdXN0b20gU2NhbGFycyIsICJsb2FkaW5nX21lY2hhbmlzbSI6IHsidHlwZSI6ICJDVVNUT01fRUxFTUVOVCIsICJlbGVtZW50X25hbWUiOiAidGYtY3VzdG9tLXNjYWxhci1kYXNoYm9hcmQifX0sICJpbWFnZXMiOiB7ImRpc2FibGVfcmVsb2FkIjogZmFsc2UsICJlbmFibGVkIjogZmFsc2UsICJyZW1vdmVfZG9tIjogZmFsc2UsICJ0YWJfbmFtZSI6ICJpbWFnZXMiLCAibG9hZGluZ19tZWNoYW5pc20iOiB7InR5cGUiOiAiQ1VTVE9NX0VMRU1FTlQiLCAiZWxlbWVudF9uYW1lIjogInRmLWltYWdlLWRhc2hib2FyZCJ9fSwgImF1ZGlvIjogeyJkaXNhYmxlX3JlbG9hZCI6IGZhbHNlLCAiZW5hYmxlZCI6IGZhbHNlLCAicmVtb3ZlX2RvbSI6IGZhbHNlLCAidGFiX25hbWUiOiAiYXVkaW8iLCAibG9hZGluZ19tZWNoYW5pc20iOiB7InR5cGUiOiAiQ1VTVE9NX0VMRU1FTlQiLCAiZWxlbWVudF9uYW1lIjogInRmLWF1ZGlvLWRhc2hib2FyZCJ9fSwgImRlYnVnZ2VyLXYyIjogeyJkaXNhYmxlX3JlbG9hZCI6IGZhbHNlLCAiZW5hYmxlZCI6IGZhbHNlLCAicmVtb3ZlX2RvbSI6IGZhbHNlLCAidGFiX25hbWUiOiAiRGVidWdnZXIgVjIiLCAibG9hZGluZ19tZWNoYW5pc20iOiB7InR5cGUiOiAiTkdfQ09NUE9ORU5UIn19LCAiZ3JhcGhzIjogeyJkaXNhYmxlX3JlbG9hZCI6IHRydWUsICJlbmFibGVkIjogZmFsc2UsICJyZW1vdmVfZG9tIjogZmFsc2UsICJ0YWJfbmFtZSI6ICJncmFwaHMiLCAibG9hZGluZ19tZWNoYW5pc20iOiB7InR5cGUiOiAiQ1VTVE9NX0VMRU1FTlQiLCAiZWxlbWVudF9uYW1lIjogInRmLWdyYXBoLWRhc2hib2FyZCJ9fSwgImRpc3RyaWJ1dGlvbnMiOiB7ImRpc2FibGVfcmVsb2FkIjogZmFsc2UsICJlbmFibGVkIjogZmFsc2UsICJyZW1vdmVfZG9tIjogZmFsc2UsICJ0YWJfbmFtZSI6ICJkaXN0cmlidXRpb25zIiwgImxvYWRpbmdfbWVjaGFuaXNtIjogeyJ0eXBlIjogIkNVU1RPTV9FTEVNRU5UIiwgImVsZW1lbnRfbmFtZSI6ICJ0Zi1kaXN0cmlidXRpb24tZGFzaGJvYXJkIn19LCAiaGlzdG9ncmFtcyI6IHsiZGlzYWJsZV9yZWxvYWQiOiBmYWxzZSwgImVuYWJsZWQiOiBmYWxzZSwgInJlbW92ZV9kb20iOiBmYWxzZSwgInRhYl9uYW1lIjogImhpc3RvZ3JhbXMiLCAibG9hZGluZ19tZWNoYW5pc20iOiB7InR5cGUiOiAiQ1VTVE9NX0VMRU1FTlQiLCAiZWxlbWVudF9uYW1lIjogInRmLWhpc3RvZ3JhbS1kYXNoYm9hcmQifX0sICJ0ZXh0IjogeyJkaXNhYmxlX3JlbG9hZCI6IGZhbHNlLCAiZW5hYmxlZCI6IGZhbHNlLCAicmVtb3ZlX2RvbSI6IGZhbHNlLCAidGFiX25hbWUiOiAidGV4dCIsICJsb2FkaW5nX21lY2hhbmlzbSI6IHsidHlwZSI6ICJDVVNUT01fRUxFTUVOVCIsICJlbGVtZW50X25hbWUiOiAidGYtdGV4dC1kYXNoYm9hcmQifX0sICJwcl9jdXJ2ZXMiOiB7ImRpc2FibGVfcmVsb2FkIjogZmFsc2UsICJlbmFibGVkIjogZmFsc2UsICJyZW1vdmVfZG9tIjogZmFsc2UsICJ0YWJfbmFtZSI6ICJQUiBDdXJ2ZXMiLCAibG9hZGluZ19tZWNoYW5pc20iOiB7InR5cGUiOiAiQ1VTVE9NX0VMRU1FTlQiLCAiZWxlbWVudF9uYW1lIjogInRmLXByLWN1cnZlLWRhc2hib2FyZCJ9fSwgInByb2ZpbGVfcmVkaXJlY3QiOiB7ImRpc2FibGVfcmVsb2FkIjogZmFsc2UsICJlbmFibGVkIjogZmFsc2UsICJyZW1vdmVfZG9tIjogZmFsc2UsICJ0YWJfbmFtZSI6ICJQcm9maWxlIiwgImxvYWRpbmdfbWVjaGFuaXNtIjogeyJ0eXBlIjogIkNVU1RPTV9FTEVNRU5UIiwgImVsZW1lbnRfbmFtZSI6ICJ0Zi1wcm9maWxlLXJlZGlyZWN0LWRhc2hib2FyZCJ9fSwgImhwYXJhbXMiOiB7ImRpc2FibGVfcmVsb2FkIjogZmFsc2UsICJlbmFibGVkIjogZmFsc2UsICJyZW1vdmVfZG9tIjogZmFsc2UsICJ0YWJfbmFtZSI6ICJocGFyYW1zIiwgImxvYWRpbmdfbWVjaGFuaXNtIjogeyJ0eXBlIjogIkNVU1RPTV9FTEVNRU5UIiwgImVsZW1lbnRfbmFtZSI6ICJ0Zi1ocGFyYW1zLWRhc2hib2FyZCJ9fSwgIm1lc2giOiB7ImRpc2FibGVfcmVsb2FkIjogZmFsc2UsICJlbmFibGVkIjogZmFsc2UsICJyZW1vdmVfZG9tIjogZmFsc2UsICJ0YWJfbmFtZSI6ICJtZXNoIiwgImxvYWRpbmdfbWVjaGFuaXNtIjogeyJ0eXBlIjogIkNVU1RPTV9FTEVNRU5UIiwgImVsZW1lbnRfbmFtZSI6ICJtZXNoLWRhc2hib2FyZCJ9fSwgInRpbWVzZXJpZXMiOiB7ImRpc2FibGVfcmVsb2FkIjogZmFsc2UsICJlbmFibGVkIjogdHJ1ZSwgInJlbW92ZV9kb20iOiBmYWxzZSwgInRhYl9uYW1lIjogIlRpbWUgU2VyaWVzIiwgImxvYWRpbmdfbWVjaGFuaXNtIjogeyJ0eXBlIjogIk5HX0NPTVBPTkVOVCJ9fSwgInByb2plY3RvciI6IHsiZGlzYWJsZV9yZWxvYWQiOiB0cnVlLCAiZW5hYmxlZCI6IGZhbHNlLCAicmVtb3ZlX2RvbSI6IGZhbHNlLCAidGFiX25hbWUiOiAicHJvamVjdG9yIiwgImxvYWRpbmdfbWVjaGFuaXNtIjogeyJ0eXBlIjogIklGUkFNRSIsICJtb2R1bGVfcGF0aCI6ICIvZGF0YS9wbHVnaW4vcHJvamVjdG9yL2luZGV4LmpzIn19LCAid2hhdGlmIjogeyJkaXNhYmxlX3JlbG9hZCI6IGZhbHNlLCAiZW5hYmxlZCI6IGZhbHNlLCAicmVtb3ZlX2RvbSI6IGZhbHNlLCAidGFiX25hbWUiOiAiV2hhdC1JZiBUb29sIiwgImxvYWRpbmdfbWVjaGFuaXNtIjogeyJ0eXBlIjogIklGUkFNRSIsICJtb2R1bGVfcGF0aCI6ICIvZGF0YS9wbHVnaW4vd2hhdGlmL2luZGV4LmpzIn19fQ==", + "ok": true, + "headers": [ + [ + "content-type", + "application/json" + ] + ], + "status": 200, + "status_text": "OK" + }, + "https://localhost:6006/data/environment": { + "data": "eyJ2ZXJzaW9uIjogIjIuNS4wIiwgImRhdGFfbG9jYXRpb24iOiAiL2dkcml2ZS9NeSBEcml2ZS9Db2xhYiBOb3RlYm9va3Mvc3ZkLy90ZW5zb3Jib2FyZCIsICJ3aW5kb3dfdGl0bGUiOiAiIiwgImV4cGVyaW1lbnRfbmFtZSI6ICIiLCAiZXhwZXJpbWVudF9kZXNjcmlwdGlvbiI6ICIiLCAiY3JlYXRpb25fdGltZSI6IDAuMCwgImRlYnVnIjogeyJkYXRhX3Byb3ZpZGVyIjogIkdycGNEYXRhUHJvdmlkZXIoYWRkcj0nbG9jYWxob3N0OjM4NDE5JykiLCAiZmxhZ3MiOiB7ImxvZ2RpciI6ICIvZ2RyaXZlL015IERyaXZlL0NvbGFiIE5vdGVib29rcy9zdmQvL3RlbnNvcmJvYXJkIiwgImxvZ2Rpcl9zcGVjIjogIiIsICJob3N0IjogbnVsbCwgImJpbmRfYWxsIjogZmFsc2UsICJwb3J0IjogbnVsbCwgInJldXNlX3BvcnQiOiBmYWxzZSwgImxvYWRfZmFzdCI6ICJhdXRvIiwgImV4dHJhX2RhdGFfc2VydmVyX2ZsYWdzIjogIiIsICJncnBjX2NyZWRzX3R5cGUiOiAibG9jYWwiLCAiZ3JwY19kYXRhX3Byb3ZpZGVyIjogIiIsICJwdXJnZV9vcnBoYW5lZF9kYXRhIjogdHJ1ZSwgImRiIjogIiIsICJkYl9pbXBvcnQiOiBmYWxzZSwgImluc3BlY3QiOiBmYWxzZSwgInZlcnNpb25fdGIiOiBmYWxzZSwgInRhZyI6ICIiLCAiZXZlbnRfZmlsZSI6ICIiLCAicGF0aF9wcmVmaXgiOiAiIiwgIndpbmRvd190aXRsZSI6ICIiLCAibWF4X3JlbG9hZF90aHJlYWRzIjogMSwgInJlbG9hZF9pbnRlcnZhbCI6IDUuMCwgInJlbG9hZF90YXNrIjogImF1dG8iLCAicmVsb2FkX211bHRpZmlsZSI6IG51bGwsICJyZWxvYWRfbXVsdGlmaWxlX2luYWN0aXZlX3NlY3MiOiA4NjQwMCwgImdlbmVyaWNfZGF0YSI6ICJhdXRvIiwgInNhbXBsZXNfcGVyX3BsdWdpbiI6IHt9LCAiY3VzdG9tX3ByZWRpY3RfZm4iOiAiIiwgIndpdF9kYXRhX2RpciI6ICIiLCAiX190ZW5zb3Jib2FyZF9zdWJjb21tYW5kIjogInNlcnZlIn19fQ==", + "ok": true, + "headers": [ + [ + "content-type", + "application/json" + ] + ], + "status": 200, + "status_text": "OK" + }, + "https://localhost:6006/data/plugin/scalars/tags": { + "data": "eyJtbmlzdF9SNDVfc2NhbGVyMF8zLjBfc2NhbGVyMV8xLjBfbXNlX1RoMWUtMDVfZGF0ZTIwMjEwNzEzLTEyMzUwNSI6IHsiQWxnMiAtIE1TRSAxLXRoIHN1Yi1tYXRyaXgiOiB7ImRpc3BsYXlOYW1lIjogIiIsICJkZXNjcmlwdGlvbiI6ICI8cD5BbGdvcml0aG0yIE1TRSh4LCB4X2FwcHJveCkgb2YgdGhlIDEtdGggc3ViLW1hdHJpeC48L3A+In0sICJBbGczIC0gTVNFIDEtdGggc3ViLW1hdHJpeCI6IHsiZGlzcGxheU5hbWUiOiAiIiwgImRlc2NyaXB0aW9uIjogIjxwPkFsZ29yaXRobTMgTVNFKHgsIHhfYXBwcm94KSBvZiB0aGUgMS10aCBzdWItbWF0cml4LjwvcD4ifSwgIkFsZzMgLSBNU0UiOiB7ImRpc3BsYXlOYW1lIjogIiIsICJkZXNjcmlwdGlvbiI6ICI8cD5BbGdvcml0aG0zIE1TRSh4LCB4X2FwcHJveCkuPC9wPiJ9LCAiQWxnMyAtIE1TRSAwLXRoIHN1Yi1tYXRyaXgiOiB7ImRpc3BsYXlOYW1lIjogIiIsICJkZXNjcmlwdGlvbiI6ICI8cD5BbGdvcml0aG0zIE1TRSh4LCB4X2FwcHJveCkgb2YgdGhlIDAtdGggc3ViLW1hdHJpeC48L3A+In0sICJBbGcyIC0gTVNFIDAtdGggc3ViLW1hdHJpeCI6IHsiZGlzcGxheU5hbWUiOiAiIiwgImRlc2NyaXB0aW9uIjogIjxwPkFsZ29yaXRobTIgTVNFKHgsIHhfYXBwcm94KSBvZiB0aGUgMC10aCBzdWItbWF0cml4LjwvcD4ifSwgIkFsZzIgLSBkaWZmKFYpIjogeyJkaXNwbGF5TmFtZSI6ICIiLCAiZGVzY3JpcHRpb24iOiAiPHA+QWxnb3JpdGhtMiBNU0UodihpKSwgdihpLTEpKSBhdCByZWZpbmluZyBzdGVwcy48L3A+In0sICJBbGcyIC0gZGlmZihVKSI6IHsiZGlzcGxheU5hbWUiOiAiIiwgImRlc2NyaXB0aW9uIjogIjxwPkFsZ29yaXRobTIgTVNFKHUoaSksIHUoaS0xKSkgYXQgcmVmaW5pbmcgc3RlcHMuPC9wPiJ9fSwgIm1uaXN0X1I0NV9zY2FsZXIwXzEuMF9zY2FsZXIxXzIuMF9tc2VfVGgxZS0wNV9kYXRlMjAyMTA3MjAtMDkzNTM0IjogeyJBbGczIC0gTWVhbiBPcmlnaW5hbCAxLXRoIHN1Yi1tYXRyaXgiOiB7ImRpc3BsYXlOYW1lIjogIiIsICJkZXNjcmlwdGlvbiI6ICI8cD5BbGdvcml0aG0zIE1lYW4oeCkgb2YgdGhlIDEtdGggc3ViLW1hdHJpeC48L3A+In0sICJBbGcyIC0gTWVhbiAwLXRoIHN1Yi1tYXRyaXgiOiB7ImRpc3BsYXlOYW1lIjogIiIsICJkZXNjcmlwdGlvbiI6ICI8cD5BbGdvcml0aG0yIE1lYW4oeF9hcHByb3gpIG9mIHRoZSAwLXRoIHN1Yi1tYXRyaXguPC9wPiJ9LCAiQWxnMyAtIE1TRSI6IHsiZGlzcGxheU5hbWUiOiAiIiwgImRlc2NyaXB0aW9uIjogIjxwPkFsZ29yaXRobTMgTVNFKHgsIHhfYXBwcm94KS48L3A+In0sICJBbGcyIC0gTVNFIDAtdGggc3ViLW1hdHJpeCI6IHsiZGlzcGxheU5hbWUiOiAiIiwgImRlc2NyaXB0aW9uIjogIjxwPkFsZ29yaXRobTIgTVNFKHgsIHhfYXBwcm94KSBvZiB0aGUgMC10aCBzdWItbWF0cml4LjwvcD4ifSwgIkFsZzMgLSBNZWFuIDAtdGggc3ViLW1hdHJpeCI6IHsiZGlzcGxheU5hbWUiOiAiIiwgImRlc2NyaXB0aW9uIjogIjxwPkFsZ29yaXRobTMgTWVhbih4X2FwcHJveCkgb2YgdGhlIDAtdGggc3ViLW1hdHJpeC48L3A+In0sICJBbGczIC0gTWVhbiAxLXRoIHN1Yi1tYXRyaXgiOiB7ImRpc3BsYXlOYW1lIjogIiIsICJkZXNjcmlwdGlvbiI6ICI8cD5BbGdvcml0aG0zIE1lYW4oeF9hcHByb3gpIG9mIHRoZSAxLXRoIHN1Yi1tYXRyaXguPC9wPiJ9LCAiQWxnMyAtIE1TRSAwLXRoIHN1Yi1tYXRyaXgiOiB7ImRpc3BsYXlOYW1lIjogIiIsICJkZXNjcmlwdGlvbiI6ICI8cD5BbGdvcml0aG0zIE1TRSh4LCB4X2FwcHJveCkgb2YgdGhlIDAtdGggc3ViLW1hdHJpeC48L3A+In0sICJBbGczIC0gTVNFIDEtdGggc3ViLW1hdHJpeCI6IHsiZGlzcGxheU5hbWUiOiAiIiwgImRlc2NyaXB0aW9uIjogIjxwPkFsZ29yaXRobTMgTVNFKHgsIHhfYXBwcm94KSBvZiB0aGUgMS10aCBzdWItbWF0cml4LjwvcD4ifSwgIkFsZzIgLSBNU0UgMS10aCBzdWItbWF0cml4IjogeyJkaXNwbGF5TmFtZSI6ICIiLCAiZGVzY3JpcHRpb24iOiAiPHA+QWxnb3JpdGhtMiBNU0UoeCwgeF9hcHByb3gpIG9mIHRoZSAxLXRoIHN1Yi1tYXRyaXguPC9wPiJ9LCAiQWxnMiAtIE1lYW4gMS10aCBzdWItbWF0cml4IjogeyJkaXNwbGF5TmFtZSI6ICIiLCAiZGVzY3JpcHRpb24iOiAiPHA+QWxnb3JpdGhtMiBNZWFuKHhfYXBwcm94KSBvZiB0aGUgMS10aCBzdWItbWF0cml4LjwvcD4ifSwgIkFsZzMgLSBNZWFuIE9yaWdpbmFsIDAtdGggc3ViLW1hdHJpeCI6IHsiZGlzcGxheU5hbWUiOiAiIiwgImRlc2NyaXB0aW9uIjogIjxwPkFsZ29yaXRobTMgTWVhbih4KSBvZiB0aGUgMC10aCBzdWItbWF0cml4LjwvcD4ifX0sICJtbmlzdF9SMzJfc2NhbGVyMF84LjBfc2NhbGVyMV8xLjBfbXNlX1RoMWUtMDVfZGF0ZTIwMjEwNzEzLTE2Mjc0MiI6IHsiQWxnMiAtIE1TRSAxLXRoIHN1Yi1tYXRyaXgiOiB7ImRpc3BsYXlOYW1lIjogIiIsICJkZXNjcmlwdGlvbiI6ICI8cD5BbGdvcml0aG0yIE1TRSh4LCB4X2FwcHJveCkgb2YgdGhlIDEtdGggc3ViLW1hdHJpeC48L3A+In0sICJBbGczIC0gTVNFIjogeyJkaXNwbGF5TmFtZSI6ICIiLCAiZGVzY3JpcHRpb24iOiAiPHA+QWxnb3JpdGhtMyBNU0UoeCwgeF9hcHByb3gpLjwvcD4ifSwgIkFsZzIgLSBNZWFuIDEtdGggc3ViLW1hdHJpeCI6IHsiZGlzcGxheU5hbWUiOiAiIiwgImRlc2NyaXB0aW9uIjogIjxwPkFsZ29yaXRobTIgTWVhbih4X2FwcHJveCkgb2YgdGhlIDEtdGggc3ViLW1hdHJpeC48L3A+In0sICJBbGczIC0gTWVhbiBPcmlnaW5hbCAxLXRoIHN1Yi1tYXRyaXgiOiB7ImRpc3BsYXlOYW1lIjogIiIsICJkZXNjcmlwdGlvbiI6ICI8cD5BbGdvcml0aG0zIE1lYW4oeCkgb2YgdGhlIDEtdGggc3ViLW1hdHJpeC48L3A+In0sICJBbGczIC0gTVNFIDAtdGggc3ViLW1hdHJpeCI6IHsiZGlzcGxheU5hbWUiOiAiIiwgImRlc2NyaXB0aW9uIjogIjxwPkFsZ29yaXRobTMgTVNFKHgsIHhfYXBwcm94KSBvZiB0aGUgMC10aCBzdWItbWF0cml4LjwvcD4ifSwgIkFsZzMgLSBNU0UgMS10aCBzdWItbWF0cml4IjogeyJkaXNwbGF5TmFtZSI6ICIiLCAiZGVzY3JpcHRpb24iOiAiPHA+QWxnb3JpdGhtMyBNU0UoeCwgeF9hcHByb3gpIG9mIHRoZSAxLXRoIHN1Yi1tYXRyaXguPC9wPiJ9LCAiQWxnMiAtIE1TRSAwLXRoIHN1Yi1tYXRyaXgiOiB7ImRpc3BsYXlOYW1lIjogIiIsICJkZXNjcmlwdGlvbiI6ICI8cD5BbGdvcml0aG0yIE1TRSh4LCB4X2FwcHJveCkgb2YgdGhlIDAtdGggc3ViLW1hdHJpeC48L3A+In0sICJBbGczIC0gTWVhbiAxLXRoIHN1Yi1tYXRyaXgiOiB7ImRpc3BsYXlOYW1lIjogIiIsICJkZXNjcmlwdGlvbiI6ICI8cD5BbGdvcml0aG0zIE1lYW4oeF9hcHByb3gpIG9mIHRoZSAxLXRoIHN1Yi1tYXRyaXguPC9wPiJ9LCAiQWxnMiAtIE1lYW4gMC10aCBzdWItbWF0cml4IjogeyJkaXNwbGF5TmFtZSI6ICIiLCAiZGVzY3JpcHRpb24iOiAiPHA+QWxnb3JpdGhtMiBNZWFuKHhfYXBwcm94KSBvZiB0aGUgMC10aCBzdWItbWF0cml4LjwvcD4ifSwgIkFsZzMgLSBNZWFuIDAtdGggc3ViLW1hdHJpeCI6IHsiZGlzcGxheU5hbWUiOiAiIiwgImRlc2NyaXB0aW9uIjogIjxwPkFsZ29yaXRobTMgTWVhbih4X2FwcHJveCkgb2YgdGhlIDAtdGggc3ViLW1hdHJpeC48L3A+In0sICJBbGczIC0gTWVhbiBPcmlnaW5hbCAwLXRoIHN1Yi1tYXRyaXgiOiB7ImRpc3BsYXlOYW1lIjogIiIsICJkZXNjcmlwdGlvbiI6ICI8cD5BbGdvcml0aG0zIE1lYW4oeCkgb2YgdGhlIDAtdGggc3ViLW1hdHJpeC48L3A+In19LCAibW5pc3RfUjQ1X3NjYWxlcjBfMS4yX3NjYWxlcjFfMS4wX21zZV9UaDFlLTA1X2RhdGUyMDIxMDcxNC0xMTI5MDYiOiB7IkFsZzMgLSBNU0UgMS10aCBzdWItbWF0cml4IjogeyJkaXNwbGF5TmFtZSI6ICIiLCAiZGVzY3JpcHRpb24iOiAiPHA+QWxnb3JpdGhtMyBNU0UoeCwgeF9hcHByb3gpIG9mIHRoZSAxLXRoIHN1Yi1tYXRyaXguPC9wPiJ9LCAiQWxnMiAtIE1TRSAxLXRoIHN1Yi1tYXRyaXgiOiB7ImRpc3BsYXlOYW1lIjogIiIsICJkZXNjcmlwdGlvbiI6ICI8cD5BbGdvcml0aG0yIE1TRSh4LCB4X2FwcHJveCkgb2YgdGhlIDEtdGggc3ViLW1hdHJpeC48L3A+In0sICJBbGcyIC0gTVNFIDAtdGggc3ViLW1hdHJpeCI6IHsiZGlzcGxheU5hbWUiOiAiIiwgImRlc2NyaXB0aW9uIjogIjxwPkFsZ29yaXRobTIgTVNFKHgsIHhfYXBwcm94KSBvZiB0aGUgMC10aCBzdWItbWF0cml4LjwvcD4ifSwgIkFsZzMgLSBNZWFuIDEtdGggc3ViLW1hdHJpeCI6IHsiZGlzcGxheU5hbWUiOiAiIiwgImRlc2NyaXB0aW9uIjogIjxwPkFsZ29yaXRobTMgTWVhbih4X2FwcHJveCkgb2YgdGhlIDEtdGggc3ViLW1hdHJpeC48L3A+In0sICJBbGczIC0gTWVhbiBPcmlnaW5hbCAxLXRoIHN1Yi1tYXRyaXgiOiB7ImRpc3BsYXlOYW1lIjogIiIsICJkZXNjcmlwdGlvbiI6ICI8cD5BbGdvcml0aG0zIE1lYW4oeCkgb2YgdGhlIDEtdGggc3ViLW1hdHJpeC48L3A+In0sICJBbGcyIC0gTWVhbiAwLXRoIHN1Yi1tYXRyaXgiOiB7ImRpc3BsYXlOYW1lIjogIiIsICJkZXNjcmlwdGlvbiI6ICI8cD5BbGdvcml0aG0yIE1lYW4oeF9hcHByb3gpIG9mIHRoZSAwLXRoIHN1Yi1tYXRyaXguPC9wPiJ9LCAiQWxnMyAtIE1TRSI6IHsiZGlzcGxheU5hbWUiOiAiIiwgImRlc2NyaXB0aW9uIjogIjxwPkFsZ29yaXRobTMgTVNFKHgsIHhfYXBwcm94KS48L3A+In0sICJBbGczIC0gTWVhbiAwLXRoIHN1Yi1tYXRyaXgiOiB7ImRpc3BsYXlOYW1lIjogIiIsICJkZXNjcmlwdGlvbiI6ICI8cD5BbGdvcml0aG0zIE1lYW4oeF9hcHByb3gpIG9mIHRoZSAwLXRoIHN1Yi1tYXRyaXguPC9wPiJ9LCAiQWxnMyAtIE1lYW4gT3JpZ2luYWwgMC10aCBzdWItbWF0cml4IjogeyJkaXNwbGF5TmFtZSI6ICIiLCAiZGVzY3JpcHRpb24iOiAiPHA+QWxnb3JpdGhtMyBNZWFuKHgpIG9mIHRoZSAwLXRoIHN1Yi1tYXRyaXguPC9wPiJ9LCAiQWxnMiAtIE1lYW4gMS10aCBzdWItbWF0cml4IjogeyJkaXNwbGF5TmFtZSI6ICIiLCAiZGVzY3JpcHRpb24iOiAiPHA+QWxnb3JpdGhtMiBNZWFuKHhfYXBwcm94KSBvZiB0aGUgMS10aCBzdWItbWF0cml4LjwvcD4ifSwgIkFsZzMgLSBNU0UgMC10aCBzdWItbWF0cml4IjogeyJkaXNwbGF5TmFtZSI6ICIiLCAiZGVzY3JpcHRpb24iOiAiPHA+QWxnb3JpdGhtMyBNU0UoeCwgeF9hcHByb3gpIG9mIHRoZSAwLXRoIHN1Yi1tYXRyaXguPC9wPiJ9fSwgIm1uaXN0X1IzMl9zY2FsZXIwXzguMF9zY2FsZXIxXzEuMF9tc2VfVGgxZS0wNV9kYXRlMjAyMTA3MTQtMDc1OTI0IjogeyJBbGcyIC0gTWVhbiAwLXRoIHN1Yi1tYXRyaXgiOiB7ImRpc3BsYXlOYW1lIjogIiIsICJkZXNjcmlwdGlvbiI6ICI8cD5BbGdvcml0aG0yIE1lYW4oeF9hcHByb3gpIG9mIHRoZSAwLXRoIHN1Yi1tYXRyaXguPC9wPiJ9LCAiQWxnMyAtIE1lYW4gMC10aCBzdWItbWF0cml4IjogeyJkaXNwbGF5TmFtZSI6ICIiLCAiZGVzY3JpcHRpb24iOiAiPHA+QWxnb3JpdGhtMyBNZWFuKHhfYXBwcm94KSBvZiB0aGUgMC10aCBzdWItbWF0cml4LjwvcD4ifSwgIkFsZzIgLSBNZWFuIDEtdGggc3ViLW1hdHJpeCI6IHsiZGlzcGxheU5hbWUiOiAiIiwgImRlc2NyaXB0aW9uIjogIjxwPkFsZ29yaXRobTIgTWVhbih4X2FwcHJveCkgb2YgdGhlIDEtdGggc3ViLW1hdHJpeC48L3A+In0sICJBbGczIC0gTWVhbiBPcmlnaW5hbCAxLXRoIHN1Yi1tYXRyaXgiOiB7ImRpc3BsYXlOYW1lIjogIiIsICJkZXNjcmlwdGlvbiI6ICI8cD5BbGdvcml0aG0zIE1lYW4oeCkgb2YgdGhlIDEtdGggc3ViLW1hdHJpeC48L3A+In0sICJBbGczIC0gTVNFIDAtdGggc3ViLW1hdHJpeCI6IHsiZGlzcGxheU5hbWUiOiAiIiwgImRlc2NyaXB0aW9uIjogIjxwPkFsZ29yaXRobTMgTVNFKHgsIHhfYXBwcm94KSBvZiB0aGUgMC10aCBzdWItbWF0cml4LjwvcD4ifSwgIkFsZzMgLSBNZWFuIE9yaWdpbmFsIDAtdGggc3ViLW1hdHJpeCI6IHsiZGlzcGxheU5hbWUiOiAiIiwgImRlc2NyaXB0aW9uIjogIjxwPkFsZ29yaXRobTMgTWVhbih4KSBvZiB0aGUgMC10aCBzdWItbWF0cml4LjwvcD4ifSwgIkFsZzMgLSBNU0UgMS10aCBzdWItbWF0cml4IjogeyJkaXNwbGF5TmFtZSI6ICIiLCAiZGVzY3JpcHRpb24iOiAiPHA+QWxnb3JpdGhtMyBNU0UoeCwgeF9hcHByb3gpIG9mIHRoZSAxLXRoIHN1Yi1tYXRyaXguPC9wPiJ9LCAiQWxnMiAtIE1TRSAxLXRoIHN1Yi1tYXRyaXgiOiB7ImRpc3BsYXlOYW1lIjogIiIsICJkZXNjcmlwdGlvbiI6ICI8cD5BbGdvcml0aG0yIE1TRSh4LCB4X2FwcHJveCkgb2YgdGhlIDEtdGggc3ViLW1hdHJpeC48L3A+In0sICJBbGcyIC0gTVNFIDAtdGggc3ViLW1hdHJpeCI6IHsiZGlzcGxheU5hbWUiOiAiIiwgImRlc2NyaXB0aW9uIjogIjxwPkFsZ29yaXRobTIgTVNFKHgsIHhfYXBwcm94KSBvZiB0aGUgMC10aCBzdWItbWF0cml4LjwvcD4ifSwgIkFsZzMgLSBNU0UiOiB7ImRpc3BsYXlOYW1lIjogIiIsICJkZXNjcmlwdGlvbiI6ICI8cD5BbGdvcml0aG0zIE1TRSh4LCB4X2FwcHJveCkuPC9wPiJ9LCAiQWxnMyAtIE1lYW4gMS10aCBzdWItbWF0cml4IjogeyJkaXNwbGF5TmFtZSI6ICIiLCAiZGVzY3JpcHRpb24iOiAiPHA+QWxnb3JpdGhtMyBNZWFuKHhfYXBwcm94KSBvZiB0aGUgMS10aCBzdWItbWF0cml4LjwvcD4ifX0sICJtbmlzdF9SMTZfc2NhbGVyMF8xNi4wX3NjYWxlcjFfMS4wX21zZV9UaDFlLTA1X2RhdGUyMDIxMDcxMy0xMzA5MjkiOiB7IkFsZzMgLSBNU0UgMS10aCBzdWItbWF0cml4IjogeyJkaXNwbGF5TmFtZSI6ICIiLCAiZGVzY3JpcHRpb24iOiAiPHA+QWxnb3JpdGhtMyBNU0UoeCwgeF9hcHByb3gpIG9mIHRoZSAxLXRoIHN1Yi1tYXRyaXguPC9wPiJ9LCAiQWxnMyAtIE1TRSAwLXRoIHN1Yi1tYXRyaXgiOiB7ImRpc3BsYXlOYW1lIjogIiIsICJkZXNjcmlwdGlvbiI6ICI8cD5BbGdvcml0aG0zIE1TRSh4LCB4X2FwcHJveCkgb2YgdGhlIDAtdGggc3ViLW1hdHJpeC48L3A+In0sICJBbGczIC0gTWVhbiBPcmlnaW5hbCAwLXRoIHN1Yi1tYXRyaXgiOiB7ImRpc3BsYXlOYW1lIjogIiIsICJkZXNjcmlwdGlvbiI6ICI8cD5BbGdvcml0aG0zIE1lYW4oeCkgb2YgdGhlIDAtdGggc3ViLW1hdHJpeC48L3A+In0sICJBbGczIC0gTWVhbiAxLXRoIHN1Yi1tYXRyaXgiOiB7ImRpc3BsYXlOYW1lIjogIiIsICJkZXNjcmlwdGlvbiI6ICI8cD5BbGdvcml0aG0zIE1lYW4oeF9hcHByb3gpIG9mIHRoZSAxLXRoIHN1Yi1tYXRyaXguPC9wPiJ9LCAiQWxnMyAtIE1lYW4gT3JpZ2luYWwgMS10aCBzdWItbWF0cml4IjogeyJkaXNwbGF5TmFtZSI6ICIiLCAiZGVzY3JpcHRpb24iOiAiPHA+QWxnb3JpdGhtMyBNZWFuKHgpIG9mIHRoZSAxLXRoIHN1Yi1tYXRyaXguPC9wPiJ9LCAiQWxnMyAtIE1lYW4gMC10aCBzdWItbWF0cml4IjogeyJkaXNwbGF5TmFtZSI6ICIiLCAiZGVzY3JpcHRpb24iOiAiPHA+QWxnb3JpdGhtMyBNZWFuKHhfYXBwcm94KSBvZiB0aGUgMC10aCBzdWItbWF0cml4LjwvcD4ifSwgIkFsZzIgLSBNZWFuIDEtdGggc3ViLW1hdHJpeCI6IHsiZGlzcGxheU5hbWUiOiAiIiwgImRlc2NyaXB0aW9uIjogIjxwPkFsZ29yaXRobTIgTWVhbih4X2FwcHJveCkgb2YgdGhlIDEtdGggc3ViLW1hdHJpeC48L3A+In0sICJBbGczIC0gTVNFIjogeyJkaXNwbGF5TmFtZSI6ICIiLCAiZGVzY3JpcHRpb24iOiAiPHA+QWxnb3JpdGhtMyBNU0UoeCwgeF9hcHByb3gpLjwvcD4ifSwgIkFsZzIgLSBNZWFuIDAtdGggc3ViLW1hdHJpeCI6IHsiZGlzcGxheU5hbWUiOiAiIiwgImRlc2NyaXB0aW9uIjogIjxwPkFsZ29yaXRobTIgTWVhbih4X2FwcHJveCkgb2YgdGhlIDAtdGggc3ViLW1hdHJpeC48L3A+In0sICJBbGcyIC0gTVNFIDAtdGggc3ViLW1hdHJpeCI6IHsiZGlzcGxheU5hbWUiOiAiIiwgImRlc2NyaXB0aW9uIjogIjxwPkFsZ29yaXRobTIgTVNFKHgsIHhfYXBwcm94KSBvZiB0aGUgMC10aCBzdWItbWF0cml4LjwvcD4ifSwgIkFsZzIgLSBNU0UgMS10aCBzdWItbWF0cml4IjogeyJkaXNwbGF5TmFtZSI6ICIiLCAiZGVzY3JpcHRpb24iOiAiPHA+QWxnb3JpdGhtMiBNU0UoeCwgeF9hcHByb3gpIG9mIHRoZSAxLXRoIHN1Yi1tYXRyaXguPC9wPiJ9fSwgIm1uaXN0X1I0NV9zY2FsZXIwXzEuMF9zY2FsZXIxXzEuMF9tc2VfVGgxZS0wNV9kYXRlMjAyMTA3MjAtMjExMTUyIjogeyJBbGcyIC0gTWVhbiAxLXRoIHN1Yi1tYXRyaXgiOiB7ImRpc3BsYXlOYW1lIjogIiIsICJkZXNjcmlwdGlvbiI6ICI8cD5BbGdvcml0aG0yIE1lYW4oeF9hcHByb3gpIG9mIHRoZSAxLXRoIHN1Yi1tYXRyaXguPC9wPiJ9LCAiQWxnMyAtIE1TRSAxLXRoIHN1Yi1tYXRyaXgiOiB7ImRpc3BsYXlOYW1lIjogIiIsICJkZXNjcmlwdGlvbiI6ICI8cD5BbGdvcml0aG0zIE1TRSh4LCB4X2FwcHJveCkgb2YgdGhlIDEtdGggc3ViLW1hdHJpeC48L3A+In0sICJBbGczIC0gTWVhbiBPcmlnaW5hbCAwLXRoIHN1Yi1tYXRyaXgiOiB7ImRpc3BsYXlOYW1lIjogIiIsICJkZXNjcmlwdGlvbiI6ICI8cD5BbGdvcml0aG0zIE1lYW4oeCkgb2YgdGhlIDAtdGggc3ViLW1hdHJpeC48L3A+In0sICJBbGcyIC0gTVNFIDAtdGggc3ViLW1hdHJpeCI6IHsiZGlzcGxheU5hbWUiOiAiIiwgImRlc2NyaXB0aW9uIjogIjxwPkFsZ29yaXRobTIgTVNFKHgsIHhfYXBwcm94KSBvZiB0aGUgMC10aCBzdWItbWF0cml4LjwvcD4ifSwgIkFsZzMgLSBNU0UiOiB7ImRpc3BsYXlOYW1lIjogIiIsICJkZXNjcmlwdGlvbiI6ICI8cD5BbGdvcml0aG0zIE1TRSh4LCB4X2FwcHJveCkuPC9wPiJ9LCAiQWxnMiAtIE1TRSAxLXRoIHN1Yi1tYXRyaXgiOiB7ImRpc3BsYXlOYW1lIjogIiIsICJkZXNjcmlwdGlvbiI6ICI8cD5BbGdvcml0aG0yIE1TRSh4LCB4X2FwcHJveCkgb2YgdGhlIDEtdGggc3ViLW1hdHJpeC48L3A+In0sICJBbGczIC0gTWVhbiBPcmlnaW5hbCAxLXRoIHN1Yi1tYXRyaXgiOiB7ImRpc3BsYXlOYW1lIjogIiIsICJkZXNjcmlwdGlvbiI6ICI8cD5BbGdvcml0aG0zIE1lYW4oeCkgb2YgdGhlIDEtdGggc3ViLW1hdHJpeC48L3A+In0sICJBbGczIC0gTWVhbiAxLXRoIHN1Yi1tYXRyaXgiOiB7ImRpc3BsYXlOYW1lIjogIiIsICJkZXNjcmlwdGlvbiI6ICI8cD5BbGdvcml0aG0zIE1lYW4oeF9hcHByb3gpIG9mIHRoZSAxLXRoIHN1Yi1tYXRyaXguPC9wPiJ9LCAiQWxnMyAtIE1TRSAwLXRoIHN1Yi1tYXRyaXgiOiB7ImRpc3BsYXlOYW1lIjogIiIsICJkZXNjcmlwdGlvbiI6ICI8cD5BbGdvcml0aG0zIE1TRSh4LCB4X2FwcHJveCkgb2YgdGhlIDAtdGggc3ViLW1hdHJpeC48L3A+In0sICJBbGcyIC0gTWVhbiAwLXRoIHN1Yi1tYXRyaXgiOiB7ImRpc3BsYXlOYW1lIjogIiIsICJkZXNjcmlwdGlvbiI6ICI8cD5BbGdvcml0aG0yIE1lYW4oeF9hcHByb3gpIG9mIHRoZSAwLXRoIHN1Yi1tYXRyaXguPC9wPiJ9LCAiQWxnMyAtIE1lYW4gMC10aCBzdWItbWF0cml4IjogeyJkaXNwbGF5TmFtZSI6ICIiLCAiZGVzY3JpcHRpb24iOiAiPHA+QWxnb3JpdGhtMyBNZWFuKHhfYXBwcm94KSBvZiB0aGUgMC10aCBzdWItbWF0cml4LjwvcD4ifX0sICJtbmlzdF9SMzJfc2NhbGVyMF84LjBfc2NhbGVyMV8xLjBfbXNlX1RoMWUtMDVfZGF0ZTIwMjEwNzEzLTE2MjkxMCI6IHsiQWxnMyAtIE1TRSI6IHsiZGlzcGxheU5hbWUiOiAiIiwgImRlc2NyaXB0aW9uIjogIjxwPkFsZ29yaXRobTMgTVNFKHgsIHhfYXBwcm94KS48L3A+In0sICJBbGczIC0gTWVhbiAxLXRoIHN1Yi1tYXRyaXgiOiB7ImRpc3BsYXlOYW1lIjogIiIsICJkZXNjcmlwdGlvbiI6ICI8cD5BbGdvcml0aG0zIE1lYW4oeF9hcHByb3gpIG9mIHRoZSAxLXRoIHN1Yi1tYXRyaXguPC9wPiJ9LCAiQWxnMiAtIE1TRSAwLXRoIHN1Yi1tYXRyaXgiOiB7ImRpc3BsYXlOYW1lIjogIiIsICJkZXNjcmlwdGlvbiI6ICI8cD5BbGdvcml0aG0yIE1TRSh4LCB4X2FwcHJveCkgb2YgdGhlIDAtdGggc3ViLW1hdHJpeC48L3A+In0sICJBbGczIC0gTWVhbiBPcmlnaW5hbCAwLXRoIHN1Yi1tYXRyaXgiOiB7ImRpc3BsYXlOYW1lIjogIiIsICJkZXNjcmlwdGlvbiI6ICI8cD5BbGdvcml0aG0zIE1lYW4oeCkgb2YgdGhlIDAtdGggc3ViLW1hdHJpeC48L3A+In0sICJBbGcyIC0gTWVhbiAxLXRoIHN1Yi1tYXRyaXgiOiB7ImRpc3BsYXlOYW1lIjogIiIsICJkZXNjcmlwdGlvbiI6ICI8cD5BbGdvcml0aG0yIE1lYW4oeF9hcHByb3gpIG9mIHRoZSAxLXRoIHN1Yi1tYXRyaXguPC9wPiJ9LCAiQWxnMyAtIE1lYW4gMC10aCBzdWItbWF0cml4IjogeyJkaXNwbGF5TmFtZSI6ICIiLCAiZGVzY3JpcHRpb24iOiAiPHA+QWxnb3JpdGhtMyBNZWFuKHhfYXBwcm94KSBvZiB0aGUgMC10aCBzdWItbWF0cml4LjwvcD4ifSwgIkFsZzIgLSBNU0UgMS10aCBzdWItbWF0cml4IjogeyJkaXNwbGF5TmFtZSI6ICIiLCAiZGVzY3JpcHRpb24iOiAiPHA+QWxnb3JpdGhtMiBNU0UoeCwgeF9hcHByb3gpIG9mIHRoZSAxLXRoIHN1Yi1tYXRyaXguPC9wPiJ9LCAiQWxnMyAtIE1TRSAxLXRoIHN1Yi1tYXRyaXgiOiB7ImRpc3BsYXlOYW1lIjogIiIsICJkZXNjcmlwdGlvbiI6ICI8cD5BbGdvcml0aG0zIE1TRSh4LCB4X2FwcHJveCkgb2YgdGhlIDEtdGggc3ViLW1hdHJpeC48L3A+In0sICJBbGczIC0gTWVhbiBPcmlnaW5hbCAxLXRoIHN1Yi1tYXRyaXgiOiB7ImRpc3BsYXlOYW1lIjogIiIsICJkZXNjcmlwdGlvbiI6ICI8cD5BbGdvcml0aG0zIE1lYW4oeCkgb2YgdGhlIDEtdGggc3ViLW1hdHJpeC48L3A+In0sICJBbGczIC0gTVNFIDAtdGggc3ViLW1hdHJpeCI6IHsiZGlzcGxheU5hbWUiOiAiIiwgImRlc2NyaXB0aW9uIjogIjxwPkFsZ29yaXRobTMgTVNFKHgsIHhfYXBwcm94KSBvZiB0aGUgMC10aCBzdWItbWF0cml4LjwvcD4ifSwgIkFsZzIgLSBNZWFuIDAtdGggc3ViLW1hdHJpeCI6IHsiZGlzcGxheU5hbWUiOiAiIiwgImRlc2NyaXB0aW9uIjogIjxwPkFsZ29yaXRobTIgTWVhbih4X2FwcHJveCkgb2YgdGhlIDAtdGggc3ViLW1hdHJpeC48L3A+In19LCAibW5pc3RfUjMyX3NjYWxlcjBfOC4wX3NjYWxlcjFfMS4wX21zZV9UaDFlLTA1X2RhdGUyMDIxMDcxMy0xNjQ0MTMiOiB7IkFsZzMgLSBNU0UiOiB7ImRpc3BsYXlOYW1lIjogIiIsICJkZXNjcmlwdGlvbiI6ICI8cD5BbGdvcml0aG0zIE1TRSh4LCB4X2FwcHJveCkuPC9wPiJ9LCAiQWxnMyAtIE1lYW4gT3JpZ2luYWwgMS10aCBzdWItbWF0cml4IjogeyJkaXNwbGF5TmFtZSI6ICIiLCAiZGVzY3JpcHRpb24iOiAiPHA+QWxnb3JpdGhtMyBNZWFuKHgpIG9mIHRoZSAxLXRoIHN1Yi1tYXRyaXguPC9wPiJ9LCAiQWxnMyAtIE1lYW4gT3JpZ2luYWwgMC10aCBzdWItbWF0cml4IjogeyJkaXNwbGF5TmFtZSI6ICIiLCAiZGVzY3JpcHRpb24iOiAiPHA+QWxnb3JpdGhtMyBNZWFuKHgpIG9mIHRoZSAwLXRoIHN1Yi1tYXRyaXguPC9wPiJ9LCAiQWxnMyAtIE1TRSAwLXRoIHN1Yi1tYXRyaXgiOiB7ImRpc3BsYXlOYW1lIjogIiIsICJkZXNjcmlwdGlvbiI6ICI8cD5BbGdvcml0aG0zIE1TRSh4LCB4X2FwcHJveCkgb2YgdGhlIDAtdGggc3ViLW1hdHJpeC48L3A+In0sICJBbGczIC0gTVNFIDEtdGggc3ViLW1hdHJpeCI6IHsiZGlzcGxheU5hbWUiOiAiIiwgImRlc2NyaXB0aW9uIjogIjxwPkFsZ29yaXRobTMgTVNFKHgsIHhfYXBwcm94KSBvZiB0aGUgMS10aCBzdWItbWF0cml4LjwvcD4ifSwgIkFsZzMgLSBNZWFuIDAtdGggc3ViLW1hdHJpeCI6IHsiZGlzcGxheU5hbWUiOiAiIiwgImRlc2NyaXB0aW9uIjogIjxwPkFsZ29yaXRobTMgTWVhbih4X2FwcHJveCkgb2YgdGhlIDAtdGggc3ViLW1hdHJpeC48L3A+In0sICJBbGczIC0gTWVhbiAxLXRoIHN1Yi1tYXRyaXgiOiB7ImRpc3BsYXlOYW1lIjogIiIsICJkZXNjcmlwdGlvbiI6ICI8cD5BbGdvcml0aG0zIE1lYW4oeF9hcHByb3gpIG9mIHRoZSAxLXRoIHN1Yi1tYXRyaXguPC9wPiJ9LCAiQWxnMiAtIE1lYW4gMS10aCBzdWItbWF0cml4IjogeyJkaXNwbGF5TmFtZSI6ICIiLCAiZGVzY3JpcHRpb24iOiAiPHA+QWxnb3JpdGhtMiBNZWFuKHhfYXBwcm94KSBvZiB0aGUgMS10aCBzdWItbWF0cml4LjwvcD4ifSwgIkFsZzIgLSBNZWFuIDAtdGggc3ViLW1hdHJpeCI6IHsiZGlzcGxheU5hbWUiOiAiIiwgImRlc2NyaXB0aW9uIjogIjxwPkFsZ29yaXRobTIgTWVhbih4X2FwcHJveCkgb2YgdGhlIDAtdGggc3ViLW1hdHJpeC48L3A+In0sICJBbGcyIC0gTVNFIDEtdGggc3ViLW1hdHJpeCI6IHsiZGlzcGxheU5hbWUiOiAiIiwgImRlc2NyaXB0aW9uIjogIjxwPkFsZ29yaXRobTIgTVNFKHgsIHhfYXBwcm94KSBvZiB0aGUgMS10aCBzdWItbWF0cml4LjwvcD4ifSwgIkFsZzIgLSBNU0UgMC10aCBzdWItbWF0cml4IjogeyJkaXNwbGF5TmFtZSI6ICIiLCAiZGVzY3JpcHRpb24iOiAiPHA+QWxnb3JpdGhtMiBNU0UoeCwgeF9hcHByb3gpIG9mIHRoZSAwLXRoIHN1Yi1tYXRyaXguPC9wPiJ9fSwgIm1uaXN0X1I0NV9zY2FsZXIwXzEuMF9zY2FsZXIxXzEuMF9tc2VfVGgxZS0wNV9kYXRlMjAyMTA3MTQtMTEyOTU1IjogeyJBbGcyIC0gTVNFIDAtdGggc3ViLW1hdHJpeCI6IHsiZGlzcGxheU5hbWUiOiAiIiwgImRlc2NyaXB0aW9uIjogIjxwPkFsZ29yaXRobTIgTVNFKHgsIHhfYXBwcm94KSBvZiB0aGUgMC10aCBzdWItbWF0cml4LjwvcD4ifSwgIkFsZzIgLSBNZWFuIDEtdGggc3ViLW1hdHJpeCI6IHsiZGlzcGxheU5hbWUiOiAiIiwgImRlc2NyaXB0aW9uIjogIjxwPkFsZ29yaXRobTIgTWVhbih4X2FwcHJveCkgb2YgdGhlIDEtdGggc3ViLW1hdHJpeC48L3A+In0sICJBbGczIC0gTVNFIDAtdGggc3ViLW1hdHJpeCI6IHsiZGlzcGxheU5hbWUiOiAiIiwgImRlc2NyaXB0aW9uIjogIjxwPkFsZ29yaXRobTMgTVNFKHgsIHhfYXBwcm94KSBvZiB0aGUgMC10aCBzdWItbWF0cml4LjwvcD4ifSwgIkFsZzMgLSBNZWFuIDEtdGggc3ViLW1hdHJpeCI6IHsiZGlzcGxheU5hbWUiOiAiIiwgImRlc2NyaXB0aW9uIjogIjxwPkFsZ29yaXRobTMgTWVhbih4X2FwcHJveCkgb2YgdGhlIDEtdGggc3ViLW1hdHJpeC48L3A+In0sICJBbGczIC0gTWVhbiAwLXRoIHN1Yi1tYXRyaXgiOiB7ImRpc3BsYXlOYW1lIjogIiIsICJkZXNjcmlwdGlvbiI6ICI8cD5BbGdvcml0aG0zIE1lYW4oeF9hcHByb3gpIG9mIHRoZSAwLXRoIHN1Yi1tYXRyaXguPC9wPiJ9LCAiQWxnMyAtIE1lYW4gT3JpZ2luYWwgMS10aCBzdWItbWF0cml4IjogeyJkaXNwbGF5TmFtZSI6ICIiLCAiZGVzY3JpcHRpb24iOiAiPHA+QWxnb3JpdGhtMyBNZWFuKHgpIG9mIHRoZSAxLXRoIHN1Yi1tYXRyaXguPC9wPiJ9LCAiQWxnMyAtIE1TRSAxLXRoIHN1Yi1tYXRyaXgiOiB7ImRpc3BsYXlOYW1lIjogIiIsICJkZXNjcmlwdGlvbiI6ICI8cD5BbGdvcml0aG0zIE1TRSh4LCB4X2FwcHJveCkgb2YgdGhlIDEtdGggc3ViLW1hdHJpeC48L3A+In0sICJBbGczIC0gTVNFIjogeyJkaXNwbGF5TmFtZSI6ICIiLCAiZGVzY3JpcHRpb24iOiAiPHA+QWxnb3JpdGhtMyBNU0UoeCwgeF9hcHByb3gpLjwvcD4ifSwgIkFsZzIgLSBNZWFuIDAtdGggc3ViLW1hdHJpeCI6IHsiZGlzcGxheU5hbWUiOiAiIiwgImRlc2NyaXB0aW9uIjogIjxwPkFsZ29yaXRobTIgTWVhbih4X2FwcHJveCkgb2YgdGhlIDAtdGggc3ViLW1hdHJpeC48L3A+In0sICJBbGcyIC0gTVNFIDEtdGggc3ViLW1hdHJpeCI6IHsiZGlzcGxheU5hbWUiOiAiIiwgImRlc2NyaXB0aW9uIjogIjxwPkFsZ29yaXRobTIgTVNFKHgsIHhfYXBwcm94KSBvZiB0aGUgMS10aCBzdWItbWF0cml4LjwvcD4ifSwgIkFsZzMgLSBNZWFuIE9yaWdpbmFsIDAtdGggc3ViLW1hdHJpeCI6IHsiZGlzcGxheU5hbWUiOiAiIiwgImRlc2NyaXB0aW9uIjogIjxwPkFsZ29yaXRobTMgTWVhbih4KSBvZiB0aGUgMC10aCBzdWItbWF0cml4LjwvcD4ifX0sICJjbm4tbHN0bV9SMjVfc2NhbGVyMF8xLjBfc2NhbGVyMV8xLjBfbXNlX1RoMWUtMDVfZGF0ZTIwMjEwNzIwLTEyNTkyNiI6IHsiQWxnMyAtIE1lYW4gT3JpZ2luYWwgMC10aCBzdWItbWF0cml4IjogeyJkaXNwbGF5TmFtZSI6ICIiLCAiZGVzY3JpcHRpb24iOiAiPHA+QWxnb3JpdGhtMyBNZWFuKHgpIG9mIHRoZSAwLXRoIHN1Yi1tYXRyaXguPC9wPiJ9LCAiQWxnMyAtIE1TRSAwLXRoIHN1Yi1tYXRyaXgiOiB7ImRpc3BsYXlOYW1lIjogIiIsICJkZXNjcmlwdGlvbiI6ICI8cD5BbGdvcml0aG0zIE1TRSh4LCB4X2FwcHJveCkgb2YgdGhlIDAtdGggc3ViLW1hdHJpeC48L3A+In0sICJBbGczIC0gTWVhbiBPcmlnaW5hbCAxLXRoIHN1Yi1tYXRyaXgiOiB7ImRpc3BsYXlOYW1lIjogIiIsICJkZXNjcmlwdGlvbiI6ICI8cD5BbGdvcml0aG0zIE1lYW4oeCkgb2YgdGhlIDEtdGggc3ViLW1hdHJpeC48L3A+In0sICJBbGczIC0gTVNFIjogeyJkaXNwbGF5TmFtZSI6ICIiLCAiZGVzY3JpcHRpb24iOiAiPHA+QWxnb3JpdGhtMyBNU0UoeCwgeF9hcHByb3gpLjwvcD4ifSwgIkFsZzIgLSBNU0UgMC10aCBzdWItbWF0cml4IjogeyJkaXNwbGF5TmFtZSI6ICIiLCAiZGVzY3JpcHRpb24iOiAiPHA+QWxnb3JpdGhtMiBNU0UoeCwgeF9hcHByb3gpIG9mIHRoZSAwLXRoIHN1Yi1tYXRyaXguPC9wPiJ9LCAiQWxnMyAtIE1lYW4gMC10aCBzdWItbWF0cml4IjogeyJkaXNwbGF5TmFtZSI6ICIiLCAiZGVzY3JpcHRpb24iOiAiPHA+QWxnb3JpdGhtMyBNZWFuKHhfYXBwcm94KSBvZiB0aGUgMC10aCBzdWItbWF0cml4LjwvcD4ifSwgIkFsZzMgLSBNU0UgMS10aCBzdWItbWF0cml4IjogeyJkaXNwbGF5TmFtZSI6ICIiLCAiZGVzY3JpcHRpb24iOiAiPHA+QWxnb3JpdGhtMyBNU0UoeCwgeF9hcHByb3gpIG9mIHRoZSAxLXRoIHN1Yi1tYXRyaXguPC9wPiJ9LCAiQWxnMiAtIE1lYW4gMS10aCBzdWItbWF0cml4IjogeyJkaXNwbGF5TmFtZSI6ICIiLCAiZGVzY3JpcHRpb24iOiAiPHA+QWxnb3JpdGhtMiBNZWFuKHhfYXBwcm94KSBvZiB0aGUgMS10aCBzdWItbWF0cml4LjwvcD4ifSwgIkFsZzMgLSBNZWFuIDEtdGggc3ViLW1hdHJpeCI6IHsiZGlzcGxheU5hbWUiOiAiIiwgImRlc2NyaXB0aW9uIjogIjxwPkFsZ29yaXRobTMgTWVhbih4X2FwcHJveCkgb2YgdGhlIDEtdGggc3ViLW1hdHJpeC48L3A+In0sICJBbGcyIC0gTWVhbiAwLXRoIHN1Yi1tYXRyaXgiOiB7ImRpc3BsYXlOYW1lIjogIiIsICJkZXNjcmlwdGlvbiI6ICI8cD5BbGdvcml0aG0yIE1lYW4oeF9hcHByb3gpIG9mIHRoZSAwLXRoIHN1Yi1tYXRyaXguPC9wPiJ9LCAiQWxnMiAtIE1TRSAxLXRoIHN1Yi1tYXRyaXgiOiB7ImRpc3BsYXlOYW1lIjogIiIsICJkZXNjcmlwdGlvbiI6ICI8cD5BbGdvcml0aG0yIE1TRSh4LCB4X2FwcHJveCkgb2YgdGhlIDEtdGggc3ViLW1hdHJpeC48L3A+In19LCAiY25uLWxzdG1fUjhfc2NhbGVyMF8xLjBfc2NhbGVyMV8xLjBfbXNlX1RoMWUtMDVfZGF0ZTIwMjEwNzIwLTEyMzkwNiI6IHsiQWxnMyAtIE1TRSI6IHsiZGlzcGxheU5hbWUiOiAiIiwgImRlc2NyaXB0aW9uIjogIjxwPkFsZ29yaXRobTMgTVNFKHgsIHhfYXBwcm94KS48L3A+In0sICJBbGczIC0gTWVhbiAxLXRoIHN1Yi1tYXRyaXgiOiB7ImRpc3BsYXlOYW1lIjogIiIsICJkZXNjcmlwdGlvbiI6ICI8cD5BbGdvcml0aG0zIE1lYW4oeF9hcHByb3gpIG9mIHRoZSAxLXRoIHN1Yi1tYXRyaXguPC9wPiJ9LCAiQWxnMyAtIE1TRSAwLXRoIHN1Yi1tYXRyaXgiOiB7ImRpc3BsYXlOYW1lIjogIiIsICJkZXNjcmlwdGlvbiI6ICI8cD5BbGdvcml0aG0zIE1TRSh4LCB4X2FwcHJveCkgb2YgdGhlIDAtdGggc3ViLW1hdHJpeC48L3A+In0sICJBbGcyIC0gTVNFIDAtdGggc3ViLW1hdHJpeCI6IHsiZGlzcGxheU5hbWUiOiAiIiwgImRlc2NyaXB0aW9uIjogIjxwPkFsZ29yaXRobTIgTVNFKHgsIHhfYXBwcm94KSBvZiB0aGUgMC10aCBzdWItbWF0cml4LjwvcD4ifSwgIkFsZzIgLSBNU0UgMS10aCBzdWItbWF0cml4IjogeyJkaXNwbGF5TmFtZSI6ICIiLCAiZGVzY3JpcHRpb24iOiAiPHA+QWxnb3JpdGhtMiBNU0UoeCwgeF9hcHByb3gpIG9mIHRoZSAxLXRoIHN1Yi1tYXRyaXguPC9wPiJ9LCAiQWxnMyAtIE1lYW4gT3JpZ2luYWwgMC10aCBzdWItbWF0cml4IjogeyJkaXNwbGF5TmFtZSI6ICIiLCAiZGVzY3JpcHRpb24iOiAiPHA+QWxnb3JpdGhtMyBNZWFuKHgpIG9mIHRoZSAwLXRoIHN1Yi1tYXRyaXguPC9wPiJ9LCAiQWxnMyAtIE1TRSAxLXRoIHN1Yi1tYXRyaXgiOiB7ImRpc3BsYXlOYW1lIjogIiIsICJkZXNjcmlwdGlvbiI6ICI8cD5BbGdvcml0aG0zIE1TRSh4LCB4X2FwcHJveCkgb2YgdGhlIDEtdGggc3ViLW1hdHJpeC48L3A+In0sICJBbGcyIC0gTWVhbiAwLXRoIHN1Yi1tYXRyaXgiOiB7ImRpc3BsYXlOYW1lIjogIiIsICJkZXNjcmlwdGlvbiI6ICI8cD5BbGdvcml0aG0yIE1lYW4oeF9hcHByb3gpIG9mIHRoZSAwLXRoIHN1Yi1tYXRyaXguPC9wPiJ9LCAiQWxnMyAtIE1lYW4gMC10aCBzdWItbWF0cml4IjogeyJkaXNwbGF5TmFtZSI6ICIiLCAiZGVzY3JpcHRpb24iOiAiPHA+QWxnb3JpdGhtMyBNZWFuKHhfYXBwcm94KSBvZiB0aGUgMC10aCBzdWItbWF0cml4LjwvcD4ifSwgIkFsZzIgLSBNZWFuIDEtdGggc3ViLW1hdHJpeCI6IHsiZGlzcGxheU5hbWUiOiAiIiwgImRlc2NyaXB0aW9uIjogIjxwPkFsZ29yaXRobTIgTWVhbih4X2FwcHJveCkgb2YgdGhlIDEtdGggc3ViLW1hdHJpeC48L3A+In0sICJBbGczIC0gTWVhbiBPcmlnaW5hbCAxLXRoIHN1Yi1tYXRyaXgiOiB7ImRpc3BsYXlOYW1lIjogIiIsICJkZXNjcmlwdGlvbiI6ICI8cD5BbGdvcml0aG0zIE1lYW4oeCkgb2YgdGhlIDEtdGggc3ViLW1hdHJpeC48L3A+In19LCAibW5pc3RfUjE2X3NjYWxlcjBfOC4wX3NjYWxlcjFfMi4wX21zZV9UaDFlLTA1X2RhdGUyMDIxMDcxMy0xMzExNDciOiB7IkFsZzIgLSBNZWFuIDEtdGggc3ViLW1hdHJpeCI6IHsiZGlzcGxheU5hbWUiOiAiIiwgImRlc2NyaXB0aW9uIjogIjxwPkFsZ29yaXRobTIgTWVhbih4X2FwcHJveCkgb2YgdGhlIDEtdGggc3ViLW1hdHJpeC48L3A+In0sICJBbGczIC0gTWVhbiAwLXRoIHN1Yi1tYXRyaXgiOiB7ImRpc3BsYXlOYW1lIjogIiIsICJkZXNjcmlwdGlvbiI6ICI8cD5BbGdvcml0aG0zIE1lYW4oeF9hcHByb3gpIG9mIHRoZSAwLXRoIHN1Yi1tYXRyaXguPC9wPiJ9LCAiQWxnMyAtIE1lYW4gT3JpZ2luYWwgMS10aCBzdWItbWF0cml4IjogeyJkaXNwbGF5TmFtZSI6ICIiLCAiZGVzY3JpcHRpb24iOiAiPHA+QWxnb3JpdGhtMyBNZWFuKHgpIG9mIHRoZSAxLXRoIHN1Yi1tYXRyaXguPC9wPiJ9LCAiQWxnMyAtIE1lYW4gT3JpZ2luYWwgMC10aCBzdWItbWF0cml4IjogeyJkaXNwbGF5TmFtZSI6ICIiLCAiZGVzY3JpcHRpb24iOiAiPHA+QWxnb3JpdGhtMyBNZWFuKHgpIG9mIHRoZSAwLXRoIHN1Yi1tYXRyaXguPC9wPiJ9LCAiQWxnMiAtIE1TRSAxLXRoIHN1Yi1tYXRyaXgiOiB7ImRpc3BsYXlOYW1lIjogIiIsICJkZXNjcmlwdGlvbiI6ICI8cD5BbGdvcml0aG0yIE1TRSh4LCB4X2FwcHJveCkgb2YgdGhlIDEtdGggc3ViLW1hdHJpeC48L3A+In0sICJBbGczIC0gTVNFIDEtdGggc3ViLW1hdHJpeCI6IHsiZGlzcGxheU5hbWUiOiAiIiwgImRlc2NyaXB0aW9uIjogIjxwPkFsZ29yaXRobTMgTVNFKHgsIHhfYXBwcm94KSBvZiB0aGUgMS10aCBzdWItbWF0cml4LjwvcD4ifSwgIkFsZzMgLSBNZWFuIDEtdGggc3ViLW1hdHJpeCI6IHsiZGlzcGxheU5hbWUiOiAiIiwgImRlc2NyaXB0aW9uIjogIjxwPkFsZ29yaXRobTMgTWVhbih4X2FwcHJveCkgb2YgdGhlIDEtdGggc3ViLW1hdHJpeC48L3A+In0sICJBbGczIC0gTVNFIjogeyJkaXNwbGF5TmFtZSI6ICIiLCAiZGVzY3JpcHRpb24iOiAiPHA+QWxnb3JpdGhtMyBNU0UoeCwgeF9hcHByb3gpLjwvcD4ifSwgIkFsZzIgLSBNZWFuIDAtdGggc3ViLW1hdHJpeCI6IHsiZGlzcGxheU5hbWUiOiAiIiwgImRlc2NyaXB0aW9uIjogIjxwPkFsZ29yaXRobTIgTWVhbih4X2FwcHJveCkgb2YgdGhlIDAtdGggc3ViLW1hdHJpeC48L3A+In0sICJBbGczIC0gTVNFIDAtdGggc3ViLW1hdHJpeCI6IHsiZGlzcGxheU5hbWUiOiAiIiwgImRlc2NyaXB0aW9uIjogIjxwPkFsZ29yaXRobTMgTVNFKHgsIHhfYXBwcm94KSBvZiB0aGUgMC10aCBzdWItbWF0cml4LjwvcD4ifSwgIkFsZzIgLSBNU0UgMC10aCBzdWItbWF0cml4IjogeyJkaXNwbGF5TmFtZSI6ICIiLCAiZGVzY3JpcHRpb24iOiAiPHA+QWxnb3JpdGhtMiBNU0UoeCwgeF9hcHByb3gpIG9mIHRoZSAwLXRoIHN1Yi1tYXRyaXguPC9wPiJ9fSwgIm1uaXN0X1I0NV9zY2FsZXIwXzEuMF9zY2FsZXIxXzEuNF9tc2VfVGgxZS0wNV9kYXRlMjAyMTA3MjAtMjExNDUzIjogeyJBbGczIC0gTVNFIjogeyJkaXNwbGF5TmFtZSI6ICIiLCAiZGVzY3JpcHRpb24iOiAiPHA+QWxnb3JpdGhtMyBNU0UoeCwgeF9hcHByb3gpLjwvcD4ifSwgIkFsZzMgLSBNU0UgMC10aCBzdWItbWF0cml4IjogeyJkaXNwbGF5TmFtZSI6ICIiLCAiZGVzY3JpcHRpb24iOiAiPHA+QWxnb3JpdGhtMyBNU0UoeCwgeF9hcHByb3gpIG9mIHRoZSAwLXRoIHN1Yi1tYXRyaXguPC9wPiJ9LCAiQWxnMiAtIE1TRSAwLXRoIHN1Yi1tYXRyaXgiOiB7ImRpc3BsYXlOYW1lIjogIiIsICJkZXNjcmlwdGlvbiI6ICI8cD5BbGdvcml0aG0yIE1TRSh4LCB4X2FwcHJveCkgb2YgdGhlIDAtdGggc3ViLW1hdHJpeC48L3A+In0sICJBbGczIC0gTWVhbiBPcmlnaW5hbCAwLXRoIHN1Yi1tYXRyaXgiOiB7ImRpc3BsYXlOYW1lIjogIiIsICJkZXNjcmlwdGlvbiI6ICI8cD5BbGdvcml0aG0zIE1lYW4oeCkgb2YgdGhlIDAtdGggc3ViLW1hdHJpeC48L3A+In0sICJBbGczIC0gTVNFIDEtdGggc3ViLW1hdHJpeCI6IHsiZGlzcGxheU5hbWUiOiAiIiwgImRlc2NyaXB0aW9uIjogIjxwPkFsZ29yaXRobTMgTVNFKHgsIHhfYXBwcm94KSBvZiB0aGUgMS10aCBzdWItbWF0cml4LjwvcD4ifSwgIkFsZzIgLSBNU0UgMS10aCBzdWItbWF0cml4IjogeyJkaXNwbGF5TmFtZSI6ICIiLCAiZGVzY3JpcHRpb24iOiAiPHA+QWxnb3JpdGhtMiBNU0UoeCwgeF9hcHByb3gpIG9mIHRoZSAxLXRoIHN1Yi1tYXRyaXguPC9wPiJ9LCAiQWxnMiAtIE1lYW4gMS10aCBzdWItbWF0cml4IjogeyJkaXNwbGF5TmFtZSI6ICIiLCAiZGVzY3JpcHRpb24iOiAiPHA+QWxnb3JpdGhtMiBNZWFuKHhfYXBwcm94KSBvZiB0aGUgMS10aCBzdWItbWF0cml4LjwvcD4ifSwgIkFsZzMgLSBNZWFuIDEtdGggc3ViLW1hdHJpeCI6IHsiZGlzcGxheU5hbWUiOiAiIiwgImRlc2NyaXB0aW9uIjogIjxwPkFsZ29yaXRobTMgTWVhbih4X2FwcHJveCkgb2YgdGhlIDEtdGggc3ViLW1hdHJpeC48L3A+In0sICJBbGczIC0gTWVhbiBPcmlnaW5hbCAxLXRoIHN1Yi1tYXRyaXgiOiB7ImRpc3BsYXlOYW1lIjogIiIsICJkZXNjcmlwdGlvbiI6ICI8cD5BbGdvcml0aG0zIE1lYW4oeCkgb2YgdGhlIDEtdGggc3ViLW1hdHJpeC48L3A+In0sICJBbGcyIC0gTWVhbiAwLXRoIHN1Yi1tYXRyaXgiOiB7ImRpc3BsYXlOYW1lIjogIiIsICJkZXNjcmlwdGlvbiI6ICI8cD5BbGdvcml0aG0yIE1lYW4oeF9hcHByb3gpIG9mIHRoZSAwLXRoIHN1Yi1tYXRyaXguPC9wPiJ9LCAiQWxnMyAtIE1lYW4gMC10aCBzdWItbWF0cml4IjogeyJkaXNwbGF5TmFtZSI6ICIiLCAiZGVzY3JpcHRpb24iOiAiPHA+QWxnb3JpdGhtMyBNZWFuKHhfYXBwcm94KSBvZiB0aGUgMC10aCBzdWItbWF0cml4LjwvcD4ifX0sICJtbmlzdF80YmxvY2tzX1I2NF9zY2FsZXIwXzEuMF9zY2FsZXIxXzEuMF9tc2VfVGgxZS0wNV9kYXRlMjAyMTA3MTQtMDgwMDIwIjogeyJBbGcyIC0gTWVhbiAwLXRoIHN1Yi1tYXRyaXgiOiB7ImRpc3BsYXlOYW1lIjogIiIsICJkZXNjcmlwdGlvbiI6ICI8cD5BbGdvcml0aG0yIE1lYW4oeF9hcHByb3gpIG9mIHRoZSAwLXRoIHN1Yi1tYXRyaXguPC9wPiJ9LCAiQWxnMyAtIE1TRSAwLXRoIHN1Yi1tYXRyaXgiOiB7ImRpc3BsYXlOYW1lIjogIiIsICJkZXNjcmlwdGlvbiI6ICI8cD5BbGdvcml0aG0zIE1TRSh4LCB4X2FwcHJveCkgb2YgdGhlIDAtdGggc3ViLW1hdHJpeC48L3A+In0sICJBbGczIC0gTWVhbiBPcmlnaW5hbCAzLXRoIHN1Yi1tYXRyaXgiOiB7ImRpc3BsYXlOYW1lIjogIiIsICJkZXNjcmlwdGlvbiI6ICI8cD5BbGdvcml0aG0zIE1lYW4oeCkgb2YgdGhlIDMtdGggc3ViLW1hdHJpeC48L3A+In0sICJBbGczIC0gTVNFIjogeyJkaXNwbGF5TmFtZSI6ICIiLCAiZGVzY3JpcHRpb24iOiAiPHA+QWxnb3JpdGhtMyBNU0UoeCwgeF9hcHByb3gpLjwvcD4ifSwgIkFsZzMgLSBNZWFuIE9yaWdpbmFsIDItdGggc3ViLW1hdHJpeCI6IHsiZGlzcGxheU5hbWUiOiAiIiwgImRlc2NyaXB0aW9uIjogIjxwPkFsZ29yaXRobTMgTWVhbih4KSBvZiB0aGUgMi10aCBzdWItbWF0cml4LjwvcD4ifSwgIkFsZzMgLSBNZWFuIDItdGggc3ViLW1hdHJpeCI6IHsiZGlzcGxheU5hbWUiOiAiIiwgImRlc2NyaXB0aW9uIjogIjxwPkFsZ29yaXRobTMgTWVhbih4X2FwcHJveCkgb2YgdGhlIDItdGggc3ViLW1hdHJpeC48L3A+In0sICJBbGcyIC0gTVNFIDMtdGggc3ViLW1hdHJpeCI6IHsiZGlzcGxheU5hbWUiOiAiIiwgImRlc2NyaXB0aW9uIjogIjxwPkFsZ29yaXRobTIgTVNFKHgsIHhfYXBwcm94KSBvZiB0aGUgMy10aCBzdWItbWF0cml4LjwvcD4ifSwgIkFsZzMgLSBNZWFuIE9yaWdpbmFsIDAtdGggc3ViLW1hdHJpeCI6IHsiZGlzcGxheU5hbWUiOiAiIiwgImRlc2NyaXB0aW9uIjogIjxwPkFsZ29yaXRobTMgTWVhbih4KSBvZiB0aGUgMC10aCBzdWItbWF0cml4LjwvcD4ifSwgIkFsZzMgLSBNZWFuIDAtdGggc3ViLW1hdHJpeCI6IHsiZGlzcGxheU5hbWUiOiAiIiwgImRlc2NyaXB0aW9uIjogIjxwPkFsZ29yaXRobTMgTWVhbih4X2FwcHJveCkgb2YgdGhlIDAtdGggc3ViLW1hdHJpeC48L3A+In0sICJBbGcyIC0gTVNFIDEtdGggc3ViLW1hdHJpeCI6IHsiZGlzcGxheU5hbWUiOiAiIiwgImRlc2NyaXB0aW9uIjogIjxwPkFsZ29yaXRobTIgTVNFKHgsIHhfYXBwcm94KSBvZiB0aGUgMS10aCBzdWItbWF0cml4LjwvcD4ifSwgIkFsZzMgLSBNU0UgMS10aCBzdWItbWF0cml4IjogeyJkaXNwbGF5TmFtZSI6ICIiLCAiZGVzY3JpcHRpb24iOiAiPHA+QWxnb3JpdGhtMyBNU0UoeCwgeF9hcHByb3gpIG9mIHRoZSAxLXRoIHN1Yi1tYXRyaXguPC9wPiJ9LCAiQWxnMyAtIE1lYW4gMS10aCBzdWItbWF0cml4IjogeyJkaXNwbGF5TmFtZSI6ICIiLCAiZGVzY3JpcHRpb24iOiAiPHA+QWxnb3JpdGhtMyBNZWFuKHhfYXBwcm94KSBvZiB0aGUgMS10aCBzdWItbWF0cml4LjwvcD4ifSwgIkFsZzMgLSBNU0UgMi10aCBzdWItbWF0cml4IjogeyJkaXNwbGF5TmFtZSI6ICIiLCAiZGVzY3JpcHRpb24iOiAiPHA+QWxnb3JpdGhtMyBNU0UoeCwgeF9hcHByb3gpIG9mIHRoZSAyLXRoIHN1Yi1tYXRyaXguPC9wPiJ9LCAiQWxnMiAtIE1lYW4gMS10aCBzdWItbWF0cml4IjogeyJkaXNwbGF5TmFtZSI6ICIiLCAiZGVzY3JpcHRpb24iOiAiPHA+QWxnb3JpdGhtMiBNZWFuKHhfYXBwcm94KSBvZiB0aGUgMS10aCBzdWItbWF0cml4LjwvcD4ifSwgIkFsZzIgLSBNU0UgMC10aCBzdWItbWF0cml4IjogeyJkaXNwbGF5TmFtZSI6ICIiLCAiZGVzY3JpcHRpb24iOiAiPHA+QWxnb3JpdGhtMiBNU0UoeCwgeF9hcHByb3gpIG9mIHRoZSAwLXRoIHN1Yi1tYXRyaXguPC9wPiJ9LCAiQWxnMyAtIE1lYW4gT3JpZ2luYWwgMS10aCBzdWItbWF0cml4IjogeyJkaXNwbGF5TmFtZSI6ICIiLCAiZGVzY3JpcHRpb24iOiAiPHA+QWxnb3JpdGhtMyBNZWFuKHgpIG9mIHRoZSAxLXRoIHN1Yi1tYXRyaXguPC9wPiJ9LCAiQWxnMyAtIE1TRSAzLXRoIHN1Yi1tYXRyaXgiOiB7ImRpc3BsYXlOYW1lIjogIiIsICJkZXNjcmlwdGlvbiI6ICI8cD5BbGdvcml0aG0zIE1TRSh4LCB4X2FwcHJveCkgb2YgdGhlIDMtdGggc3ViLW1hdHJpeC48L3A+In0sICJBbGcyIC0gTWVhbiAyLXRoIHN1Yi1tYXRyaXgiOiB7ImRpc3BsYXlOYW1lIjogIiIsICJkZXNjcmlwdGlvbiI6ICI8cD5BbGdvcml0aG0yIE1lYW4oeF9hcHByb3gpIG9mIHRoZSAyLXRoIHN1Yi1tYXRyaXguPC9wPiJ9LCAiQWxnMiAtIE1lYW4gMy10aCBzdWItbWF0cml4IjogeyJkaXNwbGF5TmFtZSI6ICIiLCAiZGVzY3JpcHRpb24iOiAiPHA+QWxnb3JpdGhtMiBNZWFuKHhfYXBwcm94KSBvZiB0aGUgMy10aCBzdWItbWF0cml4LjwvcD4ifSwgIkFsZzIgLSBNU0UgMi10aCBzdWItbWF0cml4IjogeyJkaXNwbGF5TmFtZSI6ICIiLCAiZGVzY3JpcHRpb24iOiAiPHA+QWxnb3JpdGhtMiBNU0UoeCwgeF9hcHByb3gpIG9mIHRoZSAyLXRoIHN1Yi1tYXRyaXguPC9wPiJ9LCAiQWxnMyAtIE1lYW4gMy10aCBzdWItbWF0cml4IjogeyJkaXNwbGF5TmFtZSI6ICIiLCAiZGVzY3JpcHRpb24iOiAiPHA+QWxnb3JpdGhtMyBNZWFuKHhfYXBwcm94KSBvZiB0aGUgMy10aCBzdWItbWF0cml4LjwvcD4ifX0sICJtbmlzdF9SNDVfc2NhbGVyMF8xLjBfc2NhbGVyMV8wLjlfbXNlX1RoMWUtMDVfZGF0ZTIwMjEwNzIwLTIxMTMwMSI6IHsiQWxnMyAtIE1lYW4gT3JpZ2luYWwgMS10aCBzdWItbWF0cml4IjogeyJkaXNwbGF5TmFtZSI6ICIiLCAiZGVzY3JpcHRpb24iOiAiPHA+QWxnb3JpdGhtMyBNZWFuKHgpIG9mIHRoZSAxLXRoIHN1Yi1tYXRyaXguPC9wPiJ9LCAiQWxnMyAtIE1TRSI6IHsiZGlzcGxheU5hbWUiOiAiIiwgImRlc2NyaXB0aW9uIjogIjxwPkFsZ29yaXRobTMgTVNFKHgsIHhfYXBwcm94KS48L3A+In0sICJBbGczIC0gTWVhbiAxLXRoIHN1Yi1tYXRyaXgiOiB7ImRpc3BsYXlOYW1lIjogIiIsICJkZXNjcmlwdGlvbiI6ICI8cD5BbGdvcml0aG0zIE1lYW4oeF9hcHByb3gpIG9mIHRoZSAxLXRoIHN1Yi1tYXRyaXguPC9wPiJ9LCAiQWxnMyAtIE1TRSAwLXRoIHN1Yi1tYXRyaXgiOiB7ImRpc3BsYXlOYW1lIjogIiIsICJkZXNjcmlwdGlvbiI6ICI8cD5BbGdvcml0aG0zIE1TRSh4LCB4X2FwcHJveCkgb2YgdGhlIDAtdGggc3ViLW1hdHJpeC48L3A+In0sICJBbGcyIC0gTVNFIDAtdGggc3ViLW1hdHJpeCI6IHsiZGlzcGxheU5hbWUiOiAiIiwgImRlc2NyaXB0aW9uIjogIjxwPkFsZ29yaXRobTIgTVNFKHgsIHhfYXBwcm94KSBvZiB0aGUgMC10aCBzdWItbWF0cml4LjwvcD4ifSwgIkFsZzMgLSBNZWFuIE9yaWdpbmFsIDAtdGggc3ViLW1hdHJpeCI6IHsiZGlzcGxheU5hbWUiOiAiIiwgImRlc2NyaXB0aW9uIjogIjxwPkFsZ29yaXRobTMgTWVhbih4KSBvZiB0aGUgMC10aCBzdWItbWF0cml4LjwvcD4ifSwgIkFsZzIgLSBNZWFuIDEtdGggc3ViLW1hdHJpeCI6IHsiZGlzcGxheU5hbWUiOiAiIiwgImRlc2NyaXB0aW9uIjogIjxwPkFsZ29yaXRobTIgTWVhbih4X2FwcHJveCkgb2YgdGhlIDEtdGggc3ViLW1hdHJpeC48L3A+In0sICJBbGcyIC0gTVNFIDEtdGggc3ViLW1hdHJpeCI6IHsiZGlzcGxheU5hbWUiOiAiIiwgImRlc2NyaXB0aW9uIjogIjxwPkFsZ29yaXRobTIgTVNFKHgsIHhfYXBwcm94KSBvZiB0aGUgMS10aCBzdWItbWF0cml4LjwvcD4ifSwgIkFsZzMgLSBNU0UgMS10aCBzdWItbWF0cml4IjogeyJkaXNwbGF5TmFtZSI6ICIiLCAiZGVzY3JpcHRpb24iOiAiPHA+QWxnb3JpdGhtMyBNU0UoeCwgeF9hcHByb3gpIG9mIHRoZSAxLXRoIHN1Yi1tYXRyaXguPC9wPiJ9LCAiQWxnMyAtIE1lYW4gMC10aCBzdWItbWF0cml4IjogeyJkaXNwbGF5TmFtZSI6ICIiLCAiZGVzY3JpcHRpb24iOiAiPHA+QWxnb3JpdGhtMyBNZWFuKHhfYXBwcm94KSBvZiB0aGUgMC10aCBzdWItbWF0cml4LjwvcD4ifSwgIkFsZzIgLSBNZWFuIDAtdGggc3ViLW1hdHJpeCI6IHsiZGlzcGxheU5hbWUiOiAiIiwgImRlc2NyaXB0aW9uIjogIjxwPkFsZ29yaXRobTIgTWVhbih4X2FwcHJveCkgb2YgdGhlIDAtdGggc3ViLW1hdHJpeC48L3A+In19LCAiYmFzZV9SOF9mcm9iZW5pdXMtbm9ybV9UaDFlLTA1X2RhdGUyMDIxMDcyMC0wOTM4NTQiOiB7IkFsZzMgLSBNU0UgMS10aCBzdWItbWF0cml4IjogeyJkaXNwbGF5TmFtZSI6ICIiLCAiZGVzY3JpcHRpb24iOiAiPHA+QWxnb3JpdGhtMyBNU0UoeCwgeF9hcHByb3gpIG9mIHRoZSAxLXRoIHN1Yi1tYXRyaXguPC9wPiJ9LCAiQWxnMiAtIE1TRSAxLXRoIHN1Yi1tYXRyaXgiOiB7ImRpc3BsYXlOYW1lIjogIiIsICJkZXNjcmlwdGlvbiI6ICI8cD5BbGdvcml0aG0yIE1TRSh4LCB4X2FwcHJveCkgb2YgdGhlIDEtdGggc3ViLW1hdHJpeC48L3A+In0sICJBbGcyIC0gTWVhbiAxLXRoIHN1Yi1tYXRyaXgiOiB7ImRpc3BsYXlOYW1lIjogIiIsICJkZXNjcmlwdGlvbiI6ICI8cD5BbGdvcml0aG0yIE1lYW4oeF9hcHByb3gpIG9mIHRoZSAxLXRoIHN1Yi1tYXRyaXguPC9wPiJ9LCAiQWxnMiAtIE1TRSAwLXRoIHN1Yi1tYXRyaXgiOiB7ImRpc3BsYXlOYW1lIjogIiIsICJkZXNjcmlwdGlvbiI6ICI8cD5BbGdvcml0aG0yIE1TRSh4LCB4X2FwcHJveCkgb2YgdGhlIDAtdGggc3ViLW1hdHJpeC48L3A+In0sICJBbGczIC0gTWVhbiBPcmlnaW5hbCAyLXRoIHN1Yi1tYXRyaXgiOiB7ImRpc3BsYXlOYW1lIjogIiIsICJkZXNjcmlwdGlvbiI6ICI8cD5BbGdvcml0aG0zIE1lYW4oeCkgb2YgdGhlIDItdGggc3ViLW1hdHJpeC48L3A+In0sICJBbGcyIC0gTWVhbiAyLXRoIHN1Yi1tYXRyaXgiOiB7ImRpc3BsYXlOYW1lIjogIiIsICJkZXNjcmlwdGlvbiI6ICI8cD5BbGdvcml0aG0yIE1lYW4oeF9hcHByb3gpIG9mIHRoZSAyLXRoIHN1Yi1tYXRyaXguPC9wPiJ9LCAiQWxnMyAtIE1TRSAwLXRoIHN1Yi1tYXRyaXgiOiB7ImRpc3BsYXlOYW1lIjogIiIsICJkZXNjcmlwdGlvbiI6ICI8cD5BbGdvcml0aG0zIE1TRSh4LCB4X2FwcHJveCkgb2YgdGhlIDAtdGggc3ViLW1hdHJpeC48L3A+In0sICJBbGczIC0gTWVhbiBPcmlnaW5hbCAxLXRoIHN1Yi1tYXRyaXgiOiB7ImRpc3BsYXlOYW1lIjogIiIsICJkZXNjcmlwdGlvbiI6ICI8cD5BbGdvcml0aG0zIE1lYW4oeCkgb2YgdGhlIDEtdGggc3ViLW1hdHJpeC48L3A+In0sICJBbGczIC0gTVNFIDItdGggc3ViLW1hdHJpeCI6IHsiZGlzcGxheU5hbWUiOiAiIiwgImRlc2NyaXB0aW9uIjogIjxwPkFsZ29yaXRobTMgTVNFKHgsIHhfYXBwcm94KSBvZiB0aGUgMi10aCBzdWItbWF0cml4LjwvcD4ifSwgIkFsZzIgLSBNZWFuIDAtdGggc3ViLW1hdHJpeCI6IHsiZGlzcGxheU5hbWUiOiAiIiwgImRlc2NyaXB0aW9uIjogIjxwPkFsZ29yaXRobTIgTWVhbih4X2FwcHJveCkgb2YgdGhlIDAtdGggc3ViLW1hdHJpeC48L3A+In0sICJBbGcyIC0gTVNFIDItdGggc3ViLW1hdHJpeCI6IHsiZGlzcGxheU5hbWUiOiAiIiwgImRlc2NyaXB0aW9uIjogIjxwPkFsZ29yaXRobTIgTVNFKHgsIHhfYXBwcm94KSBvZiB0aGUgMi10aCBzdWItbWF0cml4LjwvcD4ifSwgIkFsZzMgLSBNU0UiOiB7ImRpc3BsYXlOYW1lIjogIiIsICJkZXNjcmlwdGlvbiI6ICI8cD5BbGdvcml0aG0zIE1TRSh4LCB4X2FwcHJveCkuPC9wPiJ9LCAiQWxnMyAtIE1lYW4gMS10aCBzdWItbWF0cml4IjogeyJkaXNwbGF5TmFtZSI6ICIiLCAiZGVzY3JpcHRpb24iOiAiPHA+QWxnb3JpdGhtMyBNZWFuKHhfYXBwcm94KSBvZiB0aGUgMS10aCBzdWItbWF0cml4LjwvcD4ifSwgIkFsZzMgLSBNZWFuIDAtdGggc3ViLW1hdHJpeCI6IHsiZGlzcGxheU5hbWUiOiAiIiwgImRlc2NyaXB0aW9uIjogIjxwPkFsZ29yaXRobTMgTWVhbih4X2FwcHJveCkgb2YgdGhlIDAtdGggc3ViLW1hdHJpeC48L3A+In0sICJBbGczIC0gTWVhbiBPcmlnaW5hbCAwLXRoIHN1Yi1tYXRyaXgiOiB7ImRpc3BsYXlOYW1lIjogIiIsICJkZXNjcmlwdGlvbiI6ICI8cD5BbGdvcml0aG0zIE1lYW4oeCkgb2YgdGhlIDAtdGggc3ViLW1hdHJpeC48L3A+In0sICJBbGczIC0gTWVhbiAyLXRoIHN1Yi1tYXRyaXgiOiB7ImRpc3BsYXlOYW1lIjogIiIsICJkZXNjcmlwdGlvbiI6ICI8cD5BbGdvcml0aG0zIE1lYW4oeF9hcHByb3gpIG9mIHRoZSAyLXRoIHN1Yi1tYXRyaXguPC9wPiJ9fSwgIm1uaXN0X1I0NV9zY2FsZXIwXzEuOF9zY2FsZXIxXzEuMF9tc2VfVGgxZS0wNV9kYXRlMjAyMTA3MTQtMTE1MDMxIjogeyJBbGcyIC0gTVNFIDEtdGggc3ViLW1hdHJpeCI6IHsiZGlzcGxheU5hbWUiOiAiIiwgImRlc2NyaXB0aW9uIjogIjxwPkFsZ29yaXRobTIgTVNFKHgsIHhfYXBwcm94KSBvZiB0aGUgMS10aCBzdWItbWF0cml4LjwvcD4ifSwgIkFsZzIgLSBNZWFuIDAtdGggc3ViLW1hdHJpeCI6IHsiZGlzcGxheU5hbWUiOiAiIiwgImRlc2NyaXB0aW9uIjogIjxwPkFsZ29yaXRobTIgTWVhbih4X2FwcHJveCkgb2YgdGhlIDAtdGggc3ViLW1hdHJpeC48L3A+In0sICJBbGcyIC0gTWVhbiAxLXRoIHN1Yi1tYXRyaXgiOiB7ImRpc3BsYXlOYW1lIjogIiIsICJkZXNjcmlwdGlvbiI6ICI8cD5BbGdvcml0aG0yIE1lYW4oeF9hcHByb3gpIG9mIHRoZSAxLXRoIHN1Yi1tYXRyaXguPC9wPiJ9LCAiQWxnMyAtIE1lYW4gMC10aCBzdWItbWF0cml4IjogeyJkaXNwbGF5TmFtZSI6ICIiLCAiZGVzY3JpcHRpb24iOiAiPHA+QWxnb3JpdGhtMyBNZWFuKHhfYXBwcm94KSBvZiB0aGUgMC10aCBzdWItbWF0cml4LjwvcD4ifSwgIkFsZzMgLSBNU0UiOiB7ImRpc3BsYXlOYW1lIjogIiIsICJkZXNjcmlwdGlvbiI6ICI8cD5BbGdvcml0aG0zIE1TRSh4LCB4X2FwcHJveCkuPC9wPiJ9LCAiQWxnMiAtIE1TRSAwLXRoIHN1Yi1tYXRyaXgiOiB7ImRpc3BsYXlOYW1lIjogIiIsICJkZXNjcmlwdGlvbiI6ICI8cD5BbGdvcml0aG0yIE1TRSh4LCB4X2FwcHJveCkgb2YgdGhlIDAtdGggc3ViLW1hdHJpeC48L3A+In0sICJBbGczIC0gTVNFIDAtdGggc3ViLW1hdHJpeCI6IHsiZGlzcGxheU5hbWUiOiAiIiwgImRlc2NyaXB0aW9uIjogIjxwPkFsZ29yaXRobTMgTVNFKHgsIHhfYXBwcm94KSBvZiB0aGUgMC10aCBzdWItbWF0cml4LjwvcD4ifSwgIkFsZzMgLSBNZWFuIE9yaWdpbmFsIDEtdGggc3ViLW1hdHJpeCI6IHsiZGlzcGxheU5hbWUiOiAiIiwgImRlc2NyaXB0aW9uIjogIjxwPkFsZ29yaXRobTMgTWVhbih4KSBvZiB0aGUgMS10aCBzdWItbWF0cml4LjwvcD4ifSwgIkFsZzMgLSBNZWFuIDEtdGggc3ViLW1hdHJpeCI6IHsiZGlzcGxheU5hbWUiOiAiIiwgImRlc2NyaXB0aW9uIjogIjxwPkFsZ29yaXRobTMgTWVhbih4X2FwcHJveCkgb2YgdGhlIDEtdGggc3ViLW1hdHJpeC48L3A+In0sICJBbGczIC0gTVNFIDEtdGggc3ViLW1hdHJpeCI6IHsiZGlzcGxheU5hbWUiOiAiIiwgImRlc2NyaXB0aW9uIjogIjxwPkFsZ29yaXRobTMgTVNFKHgsIHhfYXBwcm94KSBvZiB0aGUgMS10aCBzdWItbWF0cml4LjwvcD4ifSwgIkFsZzMgLSBNZWFuIE9yaWdpbmFsIDAtdGggc3ViLW1hdHJpeCI6IHsiZGlzcGxheU5hbWUiOiAiIiwgImRlc2NyaXB0aW9uIjogIjxwPkFsZ29yaXRobTMgTWVhbih4KSBvZiB0aGUgMC10aCBzdWItbWF0cml4LjwvcD4ifX0sICJtbmlzdF9SNDVfc2NhbGVyMF8xLjRfc2NhbGVyMV8xLjBfbXNlX1RoMWUtMDVfZGF0ZTIwMjEwNzEzLTEyMzAyMCI6IHsiQWxnMyAtIE1TRSI6IHsiZGlzcGxheU5hbWUiOiAiIiwgImRlc2NyaXB0aW9uIjogIjxwPkFsZ29yaXRobTMgTVNFKHgsIHhfYXBwcm94KS48L3A+In0sICJBbGcyIC0gTVNFIDAtdGggc3ViLW1hdHJpeCI6IHsiZGlzcGxheU5hbWUiOiAiIiwgImRlc2NyaXB0aW9uIjogIjxwPkFsZ29yaXRobTIgTVNFKHgsIHhfYXBwcm94KSBvZiB0aGUgMC10aCBzdWItbWF0cml4LjwvcD4ifSwgIkFsZzIgLSBkaWZmKFUpIjogeyJkaXNwbGF5TmFtZSI6ICIiLCAiZGVzY3JpcHRpb24iOiAiPHA+QWxnb3JpdGhtMiBNU0UodShpKSwgdShpLTEpKSBhdCByZWZpbmluZyBzdGVwcy48L3A+In0sICJBbGcyIC0gTVNFIDEtdGggc3ViLW1hdHJpeCI6IHsiZGlzcGxheU5hbWUiOiAiIiwgImRlc2NyaXB0aW9uIjogIjxwPkFsZ29yaXRobTIgTVNFKHgsIHhfYXBwcm94KSBvZiB0aGUgMS10aCBzdWItbWF0cml4LjwvcD4ifSwgIkFsZzIgLSBkaWZmKFYpIjogeyJkaXNwbGF5TmFtZSI6ICIiLCAiZGVzY3JpcHRpb24iOiAiPHA+QWxnb3JpdGhtMiBNU0UodihpKSwgdihpLTEpKSBhdCByZWZpbmluZyBzdGVwcy48L3A+In0sICJBbGczIC0gTVNFIDAtdGggc3ViLW1hdHJpeCI6IHsiZGlzcGxheU5hbWUiOiAiIiwgImRlc2NyaXB0aW9uIjogIjxwPkFsZ29yaXRobTMgTVNFKHgsIHhfYXBwcm94KSBvZiB0aGUgMC10aCBzdWItbWF0cml4LjwvcD4ifSwgIkFsZzMgLSBNU0UgMS10aCBzdWItbWF0cml4IjogeyJkaXNwbGF5TmFtZSI6ICIiLCAiZGVzY3JpcHRpb24iOiAiPHA+QWxnb3JpdGhtMyBNU0UoeCwgeF9hcHByb3gpIG9mIHRoZSAxLXRoIHN1Yi1tYXRyaXguPC9wPiJ9fSwgIm1uaXN0XzRibG9ja3NfUjE2X3NjYWxlcjBfMS4wX3NjYWxlcjFfMS4wX21zZV9UaDFlLTA1X2RhdGUyMDIxMDcxMy0xNzQwNDciOiB7IkFsZzMgLSBNU0UgMi10aCBzdWItbWF0cml4IjogeyJkaXNwbGF5TmFtZSI6ICIiLCAiZGVzY3JpcHRpb24iOiAiPHA+QWxnb3JpdGhtMyBNU0UoeCwgeF9hcHByb3gpIG9mIHRoZSAyLXRoIHN1Yi1tYXRyaXguPC9wPiJ9LCAiQWxnMyAtIE1lYW4gMi10aCBzdWItbWF0cml4IjogeyJkaXNwbGF5TmFtZSI6ICIiLCAiZGVzY3JpcHRpb24iOiAiPHA+QWxnb3JpdGhtMyBNZWFuKHhfYXBwcm94KSBvZiB0aGUgMi10aCBzdWItbWF0cml4LjwvcD4ifSwgIkFsZzMgLSBNU0UgMC10aCBzdWItbWF0cml4IjogeyJkaXNwbGF5TmFtZSI6ICIiLCAiZGVzY3JpcHRpb24iOiAiPHA+QWxnb3JpdGhtMyBNU0UoeCwgeF9hcHByb3gpIG9mIHRoZSAwLXRoIHN1Yi1tYXRyaXguPC9wPiJ9LCAiQWxnMyAtIE1lYW4gT3JpZ2luYWwgMi10aCBzdWItbWF0cml4IjogeyJkaXNwbGF5TmFtZSI6ICIiLCAiZGVzY3JpcHRpb24iOiAiPHA+QWxnb3JpdGhtMyBNZWFuKHgpIG9mIHRoZSAyLXRoIHN1Yi1tYXRyaXguPC9wPiJ9LCAiQWxnMyAtIE1lYW4gMC10aCBzdWItbWF0cml4IjogeyJkaXNwbGF5TmFtZSI6ICIiLCAiZGVzY3JpcHRpb24iOiAiPHA+QWxnb3JpdGhtMyBNZWFuKHhfYXBwcm94KSBvZiB0aGUgMC10aCBzdWItbWF0cml4LjwvcD4ifSwgIkFsZzMgLSBNZWFuIE9yaWdpbmFsIDEtdGggc3ViLW1hdHJpeCI6IHsiZGlzcGxheU5hbWUiOiAiIiwgImRlc2NyaXB0aW9uIjogIjxwPkFsZ29yaXRobTMgTWVhbih4KSBvZiB0aGUgMS10aCBzdWItbWF0cml4LjwvcD4ifSwgIkFsZzIgLSBNZWFuIDAtdGggc3ViLW1hdHJpeCI6IHsiZGlzcGxheU5hbWUiOiAiIiwgImRlc2NyaXB0aW9uIjogIjxwPkFsZ29yaXRobTIgTWVhbih4X2FwcHJveCkgb2YgdGhlIDAtdGggc3ViLW1hdHJpeC48L3A+In0sICJBbGcyIC0gTVNFIDAtdGggc3ViLW1hdHJpeCI6IHsiZGlzcGxheU5hbWUiOiAiIiwgImRlc2NyaXB0aW9uIjogIjxwPkFsZ29yaXRobTIgTVNFKHgsIHhfYXBwcm94KSBvZiB0aGUgMC10aCBzdWItbWF0cml4LjwvcD4ifSwgIkFsZzIgLSBNU0UgMS10aCBzdWItbWF0cml4IjogeyJkaXNwbGF5TmFtZSI6ICIiLCAiZGVzY3JpcHRpb24iOiAiPHA+QWxnb3JpdGhtMiBNU0UoeCwgeF9hcHByb3gpIG9mIHRoZSAxLXRoIHN1Yi1tYXRyaXguPC9wPiJ9LCAiQWxnMyAtIE1TRSI6IHsiZGlzcGxheU5hbWUiOiAiIiwgImRlc2NyaXB0aW9uIjogIjxwPkFsZ29yaXRobTMgTVNFKHgsIHhfYXBwcm94KS48L3A+In0sICJBbGczIC0gTWVhbiAxLXRoIHN1Yi1tYXRyaXgiOiB7ImRpc3BsYXlOYW1lIjogIiIsICJkZXNjcmlwdGlvbiI6ICI8cD5BbGdvcml0aG0zIE1lYW4oeF9hcHByb3gpIG9mIHRoZSAxLXRoIHN1Yi1tYXRyaXguPC9wPiJ9LCAiQWxnMyAtIE1lYW4gT3JpZ2luYWwgMy10aCBzdWItbWF0cml4IjogeyJkaXNwbGF5TmFtZSI6ICIiLCAiZGVzY3JpcHRpb24iOiAiPHA+QWxnb3JpdGhtMyBNZWFuKHgpIG9mIHRoZSAzLXRoIHN1Yi1tYXRyaXguPC9wPiJ9LCAiQWxnMiAtIE1lYW4gMS10aCBzdWItbWF0cml4IjogeyJkaXNwbGF5TmFtZSI6ICIiLCAiZGVzY3JpcHRpb24iOiAiPHA+QWxnb3JpdGhtMiBNZWFuKHhfYXBwcm94KSBvZiB0aGUgMS10aCBzdWItbWF0cml4LjwvcD4ifSwgIkFsZzMgLSBNU0UgMy10aCBzdWItbWF0cml4IjogeyJkaXNwbGF5TmFtZSI6ICIiLCAiZGVzY3JpcHRpb24iOiAiPHA+QWxnb3JpdGhtMyBNU0UoeCwgeF9hcHByb3gpIG9mIHRoZSAzLXRoIHN1Yi1tYXRyaXguPC9wPiJ9LCAiQWxnMyAtIE1TRSAxLXRoIHN1Yi1tYXRyaXgiOiB7ImRpc3BsYXlOYW1lIjogIiIsICJkZXNjcmlwdGlvbiI6ICI8cD5BbGdvcml0aG0zIE1TRSh4LCB4X2FwcHJveCkgb2YgdGhlIDEtdGggc3ViLW1hdHJpeC48L3A+In0sICJBbGcyIC0gTVNFIDMtdGggc3ViLW1hdHJpeCI6IHsiZGlzcGxheU5hbWUiOiAiIiwgImRlc2NyaXB0aW9uIjogIjxwPkFsZ29yaXRobTIgTVNFKHgsIHhfYXBwcm94KSBvZiB0aGUgMy10aCBzdWItbWF0cml4LjwvcD4ifSwgIkFsZzIgLSBNZWFuIDItdGggc3ViLW1hdHJpeCI6IHsiZGlzcGxheU5hbWUiOiAiIiwgImRlc2NyaXB0aW9uIjogIjxwPkFsZ29yaXRobTIgTWVhbih4X2FwcHJveCkgb2YgdGhlIDItdGggc3ViLW1hdHJpeC48L3A+In0sICJBbGcyIC0gTVNFIDItdGggc3ViLW1hdHJpeCI6IHsiZGlzcGxheU5hbWUiOiAiIiwgImRlc2NyaXB0aW9uIjogIjxwPkFsZ29yaXRobTIgTVNFKHgsIHhfYXBwcm94KSBvZiB0aGUgMi10aCBzdWItbWF0cml4LjwvcD4ifSwgIkFsZzMgLSBNZWFuIDMtdGggc3ViLW1hdHJpeCI6IHsiZGlzcGxheU5hbWUiOiAiIiwgImRlc2NyaXB0aW9uIjogIjxwPkFsZ29yaXRobTMgTWVhbih4X2FwcHJveCkgb2YgdGhlIDMtdGggc3ViLW1hdHJpeC48L3A+In0sICJBbGcyIC0gTWVhbiAzLXRoIHN1Yi1tYXRyaXgiOiB7ImRpc3BsYXlOYW1lIjogIiIsICJkZXNjcmlwdGlvbiI6ICI8cD5BbGdvcml0aG0yIE1lYW4oeF9hcHByb3gpIG9mIHRoZSAzLXRoIHN1Yi1tYXRyaXguPC9wPiJ9LCAiQWxnMyAtIE1lYW4gT3JpZ2luYWwgMC10aCBzdWItbWF0cml4IjogeyJkaXNwbGF5TmFtZSI6ICIiLCAiZGVzY3JpcHRpb24iOiAiPHA+QWxnb3JpdGhtMyBNZWFuKHgpIG9mIHRoZSAwLXRoIHN1Yi1tYXRyaXguPC9wPiJ9fSwgIm1uaXN0X1I0NV9zY2FsZXIwXzEuMF9zY2FsZXIxXzEuMF9tc2VfVGgxZS0wNV9kYXRlMjAyMTA3MTQtMTEzNDQyIjogeyJBbGczIC0gTVNFIjogeyJkaXNwbGF5TmFtZSI6ICIiLCAiZGVzY3JpcHRpb24iOiAiPHA+QWxnb3JpdGhtMyBNU0UoeCwgeF9hcHByb3gpLjwvcD4ifSwgIkFsZzMgLSBNZWFuIDAtdGggc3ViLW1hdHJpeCI6IHsiZGlzcGxheU5hbWUiOiAiIiwgImRlc2NyaXB0aW9uIjogIjxwPkFsZ29yaXRobTMgTWVhbih4X2FwcHJveCkgb2YgdGhlIDAtdGggc3ViLW1hdHJpeC48L3A+In0sICJBbGczIC0gTWVhbiAxLXRoIHN1Yi1tYXRyaXgiOiB7ImRpc3BsYXlOYW1lIjogIiIsICJkZXNjcmlwdGlvbiI6ICI8cD5BbGdvcml0aG0zIE1lYW4oeF9hcHByb3gpIG9mIHRoZSAxLXRoIHN1Yi1tYXRyaXguPC9wPiJ9LCAiQWxnMyAtIE1lYW4gT3JpZ2luYWwgMC10aCBzdWItbWF0cml4IjogeyJkaXNwbGF5TmFtZSI6ICIiLCAiZGVzY3JpcHRpb24iOiAiPHA+QWxnb3JpdGhtMyBNZWFuKHgpIG9mIHRoZSAwLXRoIHN1Yi1tYXRyaXguPC9wPiJ9LCAiQWxnMyAtIE1TRSAxLXRoIHN1Yi1tYXRyaXgiOiB7ImRpc3BsYXlOYW1lIjogIiIsICJkZXNjcmlwdGlvbiI6ICI8cD5BbGdvcml0aG0zIE1TRSh4LCB4X2FwcHJveCkgb2YgdGhlIDEtdGggc3ViLW1hdHJpeC48L3A+In0sICJBbGcyIC0gTWVhbiAxLXRoIHN1Yi1tYXRyaXgiOiB7ImRpc3BsYXlOYW1lIjogIiIsICJkZXNjcmlwdGlvbiI6ICI8cD5BbGdvcml0aG0yIE1lYW4oeF9hcHByb3gpIG9mIHRoZSAxLXRoIHN1Yi1tYXRyaXguPC9wPiJ9LCAiQWxnMiAtIE1TRSAwLXRoIHN1Yi1tYXRyaXgiOiB7ImRpc3BsYXlOYW1lIjogIiIsICJkZXNjcmlwdGlvbiI6ICI8cD5BbGdvcml0aG0yIE1TRSh4LCB4X2FwcHJveCkgb2YgdGhlIDAtdGggc3ViLW1hdHJpeC48L3A+In0sICJBbGcyIC0gTVNFIDEtdGggc3ViLW1hdHJpeCI6IHsiZGlzcGxheU5hbWUiOiAiIiwgImRlc2NyaXB0aW9uIjogIjxwPkFsZ29yaXRobTIgTVNFKHgsIHhfYXBwcm94KSBvZiB0aGUgMS10aCBzdWItbWF0cml4LjwvcD4ifSwgIkFsZzMgLSBNZWFuIE9yaWdpbmFsIDEtdGggc3ViLW1hdHJpeCI6IHsiZGlzcGxheU5hbWUiOiAiIiwgImRlc2NyaXB0aW9uIjogIjxwPkFsZ29yaXRobTMgTWVhbih4KSBvZiB0aGUgMS10aCBzdWItbWF0cml4LjwvcD4ifSwgIkFsZzMgLSBNU0UgMC10aCBzdWItbWF0cml4IjogeyJkaXNwbGF5TmFtZSI6ICIiLCAiZGVzY3JpcHRpb24iOiAiPHA+QWxnb3JpdGhtMyBNU0UoeCwgeF9hcHByb3gpIG9mIHRoZSAwLXRoIHN1Yi1tYXRyaXguPC9wPiJ9LCAiQWxnMiAtIE1lYW4gMC10aCBzdWItbWF0cml4IjogeyJkaXNwbGF5TmFtZSI6ICIiLCAiZGVzY3JpcHRpb24iOiAiPHA+QWxnb3JpdGhtMiBNZWFuKHhfYXBwcm94KSBvZiB0aGUgMC10aCBzdWItbWF0cml4LjwvcD4ifX0sICJtbmlzdF9SNDVfc2NhbGVyMF8xLjBfc2NhbGVyMV8xLjRfbXNlX1RoMWUtMDVfZGF0ZTIwMjEwNzIwLTIxMjMyMSI6IHsiQWxnMyAtIE1lYW4gT3JpZ2luYWwgMC10aCBzdWItbWF0cml4IjogeyJkaXNwbGF5TmFtZSI6ICIiLCAiZGVzY3JpcHRpb24iOiAiPHA+QWxnb3JpdGhtMyBNZWFuKHgpIG9mIHRoZSAwLXRoIHN1Yi1tYXRyaXguPC9wPiJ9LCAiQWxnMyAtIE1lYW4gMC10aCBzdWItbWF0cml4IjogeyJkaXNwbGF5TmFtZSI6ICIiLCAiZGVzY3JpcHRpb24iOiAiPHA+QWxnb3JpdGhtMyBNZWFuKHhfYXBwcm94KSBvZiB0aGUgMC10aCBzdWItbWF0cml4LjwvcD4ifSwgIkFsZzIgLSBNU0UgMC10aCBzdWItbWF0cml4IjogeyJkaXNwbGF5TmFtZSI6ICIiLCAiZGVzY3JpcHRpb24iOiAiPHA+QWxnb3JpdGhtMiBNU0UoeCwgeF9hcHByb3gpIG9mIHRoZSAwLXRoIHN1Yi1tYXRyaXguPC9wPiJ9LCAiQWxnMyAtIE1TRSAwLXRoIHN1Yi1tYXRyaXgiOiB7ImRpc3BsYXlOYW1lIjogIiIsICJkZXNjcmlwdGlvbiI6ICI8cD5BbGdvcml0aG0zIE1TRSh4LCB4X2FwcHJveCkgb2YgdGhlIDAtdGggc3ViLW1hdHJpeC48L3A+In0sICJBbGczIC0gTVNFIjogeyJkaXNwbGF5TmFtZSI6ICIiLCAiZGVzY3JpcHRpb24iOiAiPHA+QWxnb3JpdGhtMyBNU0UoeCwgeF9hcHByb3gpLjwvcD4ifSwgIkFsZzIgLSBNZWFuIDEtdGggc3ViLW1hdHJpeCI6IHsiZGlzcGxheU5hbWUiOiAiIiwgImRlc2NyaXB0aW9uIjogIjxwPkFsZ29yaXRobTIgTWVhbih4X2FwcHJveCkgb2YgdGhlIDEtdGggc3ViLW1hdHJpeC48L3A+In0sICJBbGcyIC0gTWVhbiAwLXRoIHN1Yi1tYXRyaXgiOiB7ImRpc3BsYXlOYW1lIjogIiIsICJkZXNjcmlwdGlvbiI6ICI8cD5BbGdvcml0aG0yIE1lYW4oeF9hcHByb3gpIG9mIHRoZSAwLXRoIHN1Yi1tYXRyaXguPC9wPiJ9LCAiQWxnMyAtIE1TRSAxLXRoIHN1Yi1tYXRyaXgiOiB7ImRpc3BsYXlOYW1lIjogIiIsICJkZXNjcmlwdGlvbiI6ICI8cD5BbGdvcml0aG0zIE1TRSh4LCB4X2FwcHJveCkgb2YgdGhlIDEtdGggc3ViLW1hdHJpeC48L3A+In0sICJBbGczIC0gTWVhbiBPcmlnaW5hbCAxLXRoIHN1Yi1tYXRyaXgiOiB7ImRpc3BsYXlOYW1lIjogIiIsICJkZXNjcmlwdGlvbiI6ICI8cD5BbGdvcml0aG0zIE1lYW4oeCkgb2YgdGhlIDEtdGggc3ViLW1hdHJpeC48L3A+In0sICJBbGcyIC0gTVNFIDEtdGggc3ViLW1hdHJpeCI6IHsiZGlzcGxheU5hbWUiOiAiIiwgImRlc2NyaXB0aW9uIjogIjxwPkFsZ29yaXRobTIgTVNFKHgsIHhfYXBwcm94KSBvZiB0aGUgMS10aCBzdWItbWF0cml4LjwvcD4ifSwgIkFsZzMgLSBNZWFuIDEtdGggc3ViLW1hdHJpeCI6IHsiZGlzcGxheU5hbWUiOiAiIiwgImRlc2NyaXB0aW9uIjogIjxwPkFsZ29yaXRobTMgTWVhbih4X2FwcHJveCkgb2YgdGhlIDEtdGggc3ViLW1hdHJpeC48L3A+In19LCAiYmFzZV9SOF9mcm9iZW5pdXMtbm9ybV9UaDFlLTA1X2RhdGUyMDIxMDcyMC0xNjIwMzgiOiB7IkFsZzMgLSBNZWFuIDEtdGggc3ViLW1hdHJpeCI6IHsiZGlzcGxheU5hbWUiOiAiIiwgImRlc2NyaXB0aW9uIjogIjxwPkFsZ29yaXRobTMgTWVhbih4X2FwcHJveCkgb2YgdGhlIDEtdGggc3ViLW1hdHJpeC48L3A+In0sICJBbGczIC0gTVNFIDItdGggc3ViLW1hdHJpeCI6IHsiZGlzcGxheU5hbWUiOiAiIiwgImRlc2NyaXB0aW9uIjogIjxwPkFsZ29yaXRobTMgTVNFKHgsIHhfYXBwcm94KSBvZiB0aGUgMi10aCBzdWItbWF0cml4LjwvcD4ifSwgIkFsZzIgLSBNU0UgMC10aCBzdWItbWF0cml4IjogeyJkaXNwbGF5TmFtZSI6ICIiLCAiZGVzY3JpcHRpb24iOiAiPHA+QWxnb3JpdGhtMiBNU0UoeCwgeF9hcHByb3gpIG9mIHRoZSAwLXRoIHN1Yi1tYXRyaXguPC9wPiJ9LCAiQWxnMyAtIE1lYW4gT3JpZ2luYWwgMS10aCBzdWItbWF0cml4IjogeyJkaXNwbGF5TmFtZSI6ICIiLCAiZGVzY3JpcHRpb24iOiAiPHA+QWxnb3JpdGhtMyBNZWFuKHgpIG9mIHRoZSAxLXRoIHN1Yi1tYXRyaXguPC9wPiJ9LCAiQWxnMiAtIE1TRSAyLXRoIHN1Yi1tYXRyaXgiOiB7ImRpc3BsYXlOYW1lIjogIiIsICJkZXNjcmlwdGlvbiI6ICI8cD5BbGdvcml0aG0yIE1TRSh4LCB4X2FwcHJveCkgb2YgdGhlIDItdGggc3ViLW1hdHJpeC48L3A+In0sICJBbGczIC0gTVNFIDAtdGggc3ViLW1hdHJpeCI6IHsiZGlzcGxheU5hbWUiOiAiIiwgImRlc2NyaXB0aW9uIjogIjxwPkFsZ29yaXRobTMgTVNFKHgsIHhfYXBwcm94KSBvZiB0aGUgMC10aCBzdWItbWF0cml4LjwvcD4ifSwgIkFsZzMgLSBNU0UgMS10aCBzdWItbWF0cml4IjogeyJkaXNwbGF5TmFtZSI6ICIiLCAiZGVzY3JpcHRpb24iOiAiPHA+QWxnb3JpdGhtMyBNU0UoeCwgeF9hcHByb3gpIG9mIHRoZSAxLXRoIHN1Yi1tYXRyaXguPC9wPiJ9LCAiQWxnMyAtIE1lYW4gT3JpZ2luYWwgMC10aCBzdWItbWF0cml4IjogeyJkaXNwbGF5TmFtZSI6ICIiLCAiZGVzY3JpcHRpb24iOiAiPHA+QWxnb3JpdGhtMyBNZWFuKHgpIG9mIHRoZSAwLXRoIHN1Yi1tYXRyaXguPC9wPiJ9LCAiQWxnMyAtIE1lYW4gMi10aCBzdWItbWF0cml4IjogeyJkaXNwbGF5TmFtZSI6ICIiLCAiZGVzY3JpcHRpb24iOiAiPHA+QWxnb3JpdGhtMyBNZWFuKHhfYXBwcm94KSBvZiB0aGUgMi10aCBzdWItbWF0cml4LjwvcD4ifSwgIkFsZzIgLSBNU0UgMS10aCBzdWItbWF0cml4IjogeyJkaXNwbGF5TmFtZSI6ICIiLCAiZGVzY3JpcHRpb24iOiAiPHA+QWxnb3JpdGhtMiBNU0UoeCwgeF9hcHByb3gpIG9mIHRoZSAxLXRoIHN1Yi1tYXRyaXguPC9wPiJ9LCAiQWxnMiAtIE1lYW4gMC10aCBzdWItbWF0cml4IjogeyJkaXNwbGF5TmFtZSI6ICIiLCAiZGVzY3JpcHRpb24iOiAiPHA+QWxnb3JpdGhtMiBNZWFuKHhfYXBwcm94KSBvZiB0aGUgMC10aCBzdWItbWF0cml4LjwvcD4ifSwgIkFsZzMgLSBNU0UiOiB7ImRpc3BsYXlOYW1lIjogIiIsICJkZXNjcmlwdGlvbiI6ICI8cD5BbGdvcml0aG0zIE1TRSh4LCB4X2FwcHJveCkuPC9wPiJ9LCAiQWxnMiAtIE1lYW4gMi10aCBzdWItbWF0cml4IjogeyJkaXNwbGF5TmFtZSI6ICIiLCAiZGVzY3JpcHRpb24iOiAiPHA+QWxnb3JpdGhtMiBNZWFuKHhfYXBwcm94KSBvZiB0aGUgMi10aCBzdWItbWF0cml4LjwvcD4ifSwgIkFsZzIgLSBNZWFuIDEtdGggc3ViLW1hdHJpeCI6IHsiZGlzcGxheU5hbWUiOiAiIiwgImRlc2NyaXB0aW9uIjogIjxwPkFsZ29yaXRobTIgTWVhbih4X2FwcHJveCkgb2YgdGhlIDEtdGggc3ViLW1hdHJpeC48L3A+In0sICJBbGczIC0gTWVhbiAwLXRoIHN1Yi1tYXRyaXgiOiB7ImRpc3BsYXlOYW1lIjogIiIsICJkZXNjcmlwdGlvbiI6ICI8cD5BbGdvcml0aG0zIE1lYW4oeF9hcHByb3gpIG9mIHRoZSAwLXRoIHN1Yi1tYXRyaXguPC9wPiJ9LCAiQWxnMyAtIE1lYW4gT3JpZ2luYWwgMi10aCBzdWItbWF0cml4IjogeyJkaXNwbGF5TmFtZSI6ICIiLCAiZGVzY3JpcHRpb24iOiAiPHA+QWxnb3JpdGhtMyBNZWFuKHgpIG9mIHRoZSAyLXRoIHN1Yi1tYXRyaXguPC9wPiJ9fSwgIm1uaXN0XzRibG9ja3NfUjMyX3NjYWxlcjBfMS4wX3NjYWxlcjFfMS4wX21zZV9UaDFlLTA1X2RhdGUyMDIxMDcxMy0xNzQxMTEiOiB7IkFsZzMgLSBNZWFuIE9yaWdpbmFsIDItdGggc3ViLW1hdHJpeCI6IHsiZGlzcGxheU5hbWUiOiAiIiwgImRlc2NyaXB0aW9uIjogIjxwPkFsZ29yaXRobTMgTWVhbih4KSBvZiB0aGUgMi10aCBzdWItbWF0cml4LjwvcD4ifSwgIkFsZzIgLSBNZWFuIDAtdGggc3ViLW1hdHJpeCI6IHsiZGlzcGxheU5hbWUiOiAiIiwgImRlc2NyaXB0aW9uIjogIjxwPkFsZ29yaXRobTIgTWVhbih4X2FwcHJveCkgb2YgdGhlIDAtdGggc3ViLW1hdHJpeC48L3A+In0sICJBbGcyIC0gTWVhbiAyLXRoIHN1Yi1tYXRyaXgiOiB7ImRpc3BsYXlOYW1lIjogIiIsICJkZXNjcmlwdGlvbiI6ICI8cD5BbGdvcml0aG0yIE1lYW4oeF9hcHByb3gpIG9mIHRoZSAyLXRoIHN1Yi1tYXRyaXguPC9wPiJ9LCAiQWxnMiAtIE1lYW4gMy10aCBzdWItbWF0cml4IjogeyJkaXNwbGF5TmFtZSI6ICIiLCAiZGVzY3JpcHRpb24iOiAiPHA+QWxnb3JpdGhtMiBNZWFuKHhfYXBwcm94KSBvZiB0aGUgMy10aCBzdWItbWF0cml4LjwvcD4ifSwgIkFsZzMgLSBNZWFuIE9yaWdpbmFsIDMtdGggc3ViLW1hdHJpeCI6IHsiZGlzcGxheU5hbWUiOiAiIiwgImRlc2NyaXB0aW9uIjogIjxwPkFsZ29yaXRobTMgTWVhbih4KSBvZiB0aGUgMy10aCBzdWItbWF0cml4LjwvcD4ifSwgIkFsZzMgLSBNZWFuIE9yaWdpbmFsIDEtdGggc3ViLW1hdHJpeCI6IHsiZGlzcGxheU5hbWUiOiAiIiwgImRlc2NyaXB0aW9uIjogIjxwPkFsZ29yaXRobTMgTWVhbih4KSBvZiB0aGUgMS10aCBzdWItbWF0cml4LjwvcD4ifSwgIkFsZzMgLSBNU0UiOiB7ImRpc3BsYXlOYW1lIjogIiIsICJkZXNjcmlwdGlvbiI6ICI8cD5BbGdvcml0aG0zIE1TRSh4LCB4X2FwcHJveCkuPC9wPiJ9LCAiQWxnMyAtIE1lYW4gMC10aCBzdWItbWF0cml4IjogeyJkaXNwbGF5TmFtZSI6ICIiLCAiZGVzY3JpcHRpb24iOiAiPHA+QWxnb3JpdGhtMyBNZWFuKHhfYXBwcm94KSBvZiB0aGUgMC10aCBzdWItbWF0cml4LjwvcD4ifSwgIkFsZzMgLSBNU0UgMy10aCBzdWItbWF0cml4IjogeyJkaXNwbGF5TmFtZSI6ICIiLCAiZGVzY3JpcHRpb24iOiAiPHA+QWxnb3JpdGhtMyBNU0UoeCwgeF9hcHByb3gpIG9mIHRoZSAzLXRoIHN1Yi1tYXRyaXguPC9wPiJ9LCAiQWxnMiAtIE1TRSAzLXRoIHN1Yi1tYXRyaXgiOiB7ImRpc3BsYXlOYW1lIjogIiIsICJkZXNjcmlwdGlvbiI6ICI8cD5BbGdvcml0aG0yIE1TRSh4LCB4X2FwcHJveCkgb2YgdGhlIDMtdGggc3ViLW1hdHJpeC48L3A+In0sICJBbGcyIC0gTWVhbiAxLXRoIHN1Yi1tYXRyaXgiOiB7ImRpc3BsYXlOYW1lIjogIiIsICJkZXNjcmlwdGlvbiI6ICI8cD5BbGdvcml0aG0yIE1lYW4oeF9hcHByb3gpIG9mIHRoZSAxLXRoIHN1Yi1tYXRyaXguPC9wPiJ9LCAiQWxnMiAtIE1TRSAxLXRoIHN1Yi1tYXRyaXgiOiB7ImRpc3BsYXlOYW1lIjogIiIsICJkZXNjcmlwdGlvbiI6ICI8cD5BbGdvcml0aG0yIE1TRSh4LCB4X2FwcHJveCkgb2YgdGhlIDEtdGggc3ViLW1hdHJpeC48L3A+In0sICJBbGczIC0gTWVhbiAzLXRoIHN1Yi1tYXRyaXgiOiB7ImRpc3BsYXlOYW1lIjogIiIsICJkZXNjcmlwdGlvbiI6ICI8cD5BbGdvcml0aG0zIE1lYW4oeF9hcHByb3gpIG9mIHRoZSAzLXRoIHN1Yi1tYXRyaXguPC9wPiJ9LCAiQWxnMiAtIE1TRSAyLXRoIHN1Yi1tYXRyaXgiOiB7ImRpc3BsYXlOYW1lIjogIiIsICJkZXNjcmlwdGlvbiI6ICI8cD5BbGdvcml0aG0yIE1TRSh4LCB4X2FwcHJveCkgb2YgdGhlIDItdGggc3ViLW1hdHJpeC48L3A+In0sICJBbGczIC0gTWVhbiAxLXRoIHN1Yi1tYXRyaXgiOiB7ImRpc3BsYXlOYW1lIjogIiIsICJkZXNjcmlwdGlvbiI6ICI8cD5BbGdvcml0aG0zIE1lYW4oeF9hcHByb3gpIG9mIHRoZSAxLXRoIHN1Yi1tYXRyaXguPC9wPiJ9LCAiQWxnMyAtIE1lYW4gT3JpZ2luYWwgMC10aCBzdWItbWF0cml4IjogeyJkaXNwbGF5TmFtZSI6ICIiLCAiZGVzY3JpcHRpb24iOiAiPHA+QWxnb3JpdGhtMyBNZWFuKHgpIG9mIHRoZSAwLXRoIHN1Yi1tYXRyaXguPC9wPiJ9LCAiQWxnMyAtIE1TRSAwLXRoIHN1Yi1tYXRyaXgiOiB7ImRpc3BsYXlOYW1lIjogIiIsICJkZXNjcmlwdGlvbiI6ICI8cD5BbGdvcml0aG0zIE1TRSh4LCB4X2FwcHJveCkgb2YgdGhlIDAtdGggc3ViLW1hdHJpeC48L3A+In0sICJBbGczIC0gTVNFIDItdGggc3ViLW1hdHJpeCI6IHsiZGlzcGxheU5hbWUiOiAiIiwgImRlc2NyaXB0aW9uIjogIjxwPkFsZ29yaXRobTMgTVNFKHgsIHhfYXBwcm94KSBvZiB0aGUgMi10aCBzdWItbWF0cml4LjwvcD4ifSwgIkFsZzMgLSBNU0UgMS10aCBzdWItbWF0cml4IjogeyJkaXNwbGF5TmFtZSI6ICIiLCAiZGVzY3JpcHRpb24iOiAiPHA+QWxnb3JpdGhtMyBNU0UoeCwgeF9hcHByb3gpIG9mIHRoZSAxLXRoIHN1Yi1tYXRyaXguPC9wPiJ9LCAiQWxnMyAtIE1lYW4gMi10aCBzdWItbWF0cml4IjogeyJkaXNwbGF5TmFtZSI6ICIiLCAiZGVzY3JpcHRpb24iOiAiPHA+QWxnb3JpdGhtMyBNZWFuKHhfYXBwcm94KSBvZiB0aGUgMi10aCBzdWItbWF0cml4LjwvcD4ifSwgIkFsZzIgLSBNU0UgMC10aCBzdWItbWF0cml4IjogeyJkaXNwbGF5TmFtZSI6ICIiLCAiZGVzY3JpcHRpb24iOiAiPHA+QWxnb3JpdGhtMiBNU0UoeCwgeF9hcHByb3gpIG9mIHRoZSAwLXRoIHN1Yi1tYXRyaXguPC9wPiJ9fSwgIm1uaXN0X1I0NV9zY2FsZXIwXzEuMF9zY2FsZXIxXzEuMV9tc2VfVGgxZS0wNV9kYXRlMjAyMTA3MjAtMjExMTE5IjogeyJBbGcyIC0gTWVhbiAwLXRoIHN1Yi1tYXRyaXgiOiB7ImRpc3BsYXlOYW1lIjogIiIsICJkZXNjcmlwdGlvbiI6ICI8cD5BbGdvcml0aG0yIE1lYW4oeF9hcHByb3gpIG9mIHRoZSAwLXRoIHN1Yi1tYXRyaXguPC9wPiJ9LCAiQWxnMyAtIE1TRSI6IHsiZGlzcGxheU5hbWUiOiAiIiwgImRlc2NyaXB0aW9uIjogIjxwPkFsZ29yaXRobTMgTVNFKHgsIHhfYXBwcm94KS48L3A+In0sICJBbGczIC0gTWVhbiBPcmlnaW5hbCAxLXRoIHN1Yi1tYXRyaXgiOiB7ImRpc3BsYXlOYW1lIjogIiIsICJkZXNjcmlwdGlvbiI6ICI8cD5BbGdvcml0aG0zIE1lYW4oeCkgb2YgdGhlIDEtdGggc3ViLW1hdHJpeC48L3A+In0sICJBbGcyIC0gTVNFIDEtdGggc3ViLW1hdHJpeCI6IHsiZGlzcGxheU5hbWUiOiAiIiwgImRlc2NyaXB0aW9uIjogIjxwPkFsZ29yaXRobTIgTVNFKHgsIHhfYXBwcm94KSBvZiB0aGUgMS10aCBzdWItbWF0cml4LjwvcD4ifSwgIkFsZzMgLSBNU0UgMS10aCBzdWItbWF0cml4IjogeyJkaXNwbGF5TmFtZSI6ICIiLCAiZGVzY3JpcHRpb24iOiAiPHA+QWxnb3JpdGhtMyBNU0UoeCwgeF9hcHByb3gpIG9mIHRoZSAxLXRoIHN1Yi1tYXRyaXguPC9wPiJ9LCAiQWxnMiAtIE1TRSAwLXRoIHN1Yi1tYXRyaXgiOiB7ImRpc3BsYXlOYW1lIjogIiIsICJkZXNjcmlwdGlvbiI6ICI8cD5BbGdvcml0aG0yIE1TRSh4LCB4X2FwcHJveCkgb2YgdGhlIDAtdGggc3ViLW1hdHJpeC48L3A+In0sICJBbGczIC0gTWVhbiAwLXRoIHN1Yi1tYXRyaXgiOiB7ImRpc3BsYXlOYW1lIjogIiIsICJkZXNjcmlwdGlvbiI6ICI8cD5BbGdvcml0aG0zIE1lYW4oeF9hcHByb3gpIG9mIHRoZSAwLXRoIHN1Yi1tYXRyaXguPC9wPiJ9LCAiQWxnMyAtIE1TRSAwLXRoIHN1Yi1tYXRyaXgiOiB7ImRpc3BsYXlOYW1lIjogIiIsICJkZXNjcmlwdGlvbiI6ICI8cD5BbGdvcml0aG0zIE1TRSh4LCB4X2FwcHJveCkgb2YgdGhlIDAtdGggc3ViLW1hdHJpeC48L3A+In0sICJBbGcyIC0gTWVhbiAxLXRoIHN1Yi1tYXRyaXgiOiB7ImRpc3BsYXlOYW1lIjogIiIsICJkZXNjcmlwdGlvbiI6ICI8cD5BbGdvcml0aG0yIE1lYW4oeF9hcHByb3gpIG9mIHRoZSAxLXRoIHN1Yi1tYXRyaXguPC9wPiJ9LCAiQWxnMyAtIE1lYW4gMS10aCBzdWItbWF0cml4IjogeyJkaXNwbGF5TmFtZSI6ICIiLCAiZGVzY3JpcHRpb24iOiAiPHA+QWxnb3JpdGhtMyBNZWFuKHhfYXBwcm94KSBvZiB0aGUgMS10aCBzdWItbWF0cml4LjwvcD4ifSwgIkFsZzMgLSBNZWFuIE9yaWdpbmFsIDAtdGggc3ViLW1hdHJpeCI6IHsiZGlzcGxheU5hbWUiOiAiIiwgImRlc2NyaXB0aW9uIjogIjxwPkFsZ29yaXRobTMgTWVhbih4KSBvZiB0aGUgMC10aCBzdWItbWF0cml4LjwvcD4ifX0sICJtbmlzdF9SNDVfc2NhbGVyMF8xNi4wX3NjYWxlcjFfMS4wX21zZV9UaDFlLTA1X2RhdGUyMDIxMDcxMy0xMzA2NDYiOiB7IkFsZzMgLSBNZWFuIE9yaWdpbmFsIDEtdGggc3ViLW1hdHJpeCI6IHsiZGlzcGxheU5hbWUiOiAiIiwgImRlc2NyaXB0aW9uIjogIjxwPkFsZ29yaXRobTMgTWVhbih4KSBvZiB0aGUgMS10aCBzdWItbWF0cml4LjwvcD4ifSwgIkFsZzIgLSBNU0UgMC10aCBzdWItbWF0cml4IjogeyJkaXNwbGF5TmFtZSI6ICIiLCAiZGVzY3JpcHRpb24iOiAiPHA+QWxnb3JpdGhtMiBNU0UoeCwgeF9hcHByb3gpIG9mIHRoZSAwLXRoIHN1Yi1tYXRyaXguPC9wPiJ9LCAiQWxnMyAtIE1lYW4gT3JpZ2luYWwgMC10aCBzdWItbWF0cml4IjogeyJkaXNwbGF5TmFtZSI6ICIiLCAiZGVzY3JpcHRpb24iOiAiPHA+QWxnb3JpdGhtMyBNZWFuKHgpIG9mIHRoZSAwLXRoIHN1Yi1tYXRyaXguPC9wPiJ9LCAiQWxnMiAtIE1lYW4gMS10aCBzdWItbWF0cml4IjogeyJkaXNwbGF5TmFtZSI6ICIiLCAiZGVzY3JpcHRpb24iOiAiPHA+QWxnb3JpdGhtMiBNZWFuKHhfYXBwcm94KSBvZiB0aGUgMS10aCBzdWItbWF0cml4LjwvcD4ifSwgIkFsZzIgLSBNU0UgMS10aCBzdWItbWF0cml4IjogeyJkaXNwbGF5TmFtZSI6ICIiLCAiZGVzY3JpcHRpb24iOiAiPHA+QWxnb3JpdGhtMiBNU0UoeCwgeF9hcHByb3gpIG9mIHRoZSAxLXRoIHN1Yi1tYXRyaXguPC9wPiJ9LCAiQWxnMyAtIE1TRSAxLXRoIHN1Yi1tYXRyaXgiOiB7ImRpc3BsYXlOYW1lIjogIiIsICJkZXNjcmlwdGlvbiI6ICI8cD5BbGdvcml0aG0zIE1TRSh4LCB4X2FwcHJveCkgb2YgdGhlIDEtdGggc3ViLW1hdHJpeC48L3A+In0sICJBbGczIC0gTVNFIDAtdGggc3ViLW1hdHJpeCI6IHsiZGlzcGxheU5hbWUiOiAiIiwgImRlc2NyaXB0aW9uIjogIjxwPkFsZ29yaXRobTMgTVNFKHgsIHhfYXBwcm94KSBvZiB0aGUgMC10aCBzdWItbWF0cml4LjwvcD4ifSwgIkFsZzIgLSBNZWFuIDAtdGggc3ViLW1hdHJpeCI6IHsiZGlzcGxheU5hbWUiOiAiIiwgImRlc2NyaXB0aW9uIjogIjxwPkFsZ29yaXRobTIgTWVhbih4X2FwcHJveCkgb2YgdGhlIDAtdGggc3ViLW1hdHJpeC48L3A+In0sICJBbGczIC0gTWVhbiAwLXRoIHN1Yi1tYXRyaXgiOiB7ImRpc3BsYXlOYW1lIjogIiIsICJkZXNjcmlwdGlvbiI6ICI8cD5BbGdvcml0aG0zIE1lYW4oeF9hcHByb3gpIG9mIHRoZSAwLXRoIHN1Yi1tYXRyaXguPC9wPiJ9LCAiQWxnMyAtIE1TRSI6IHsiZGlzcGxheU5hbWUiOiAiIiwgImRlc2NyaXB0aW9uIjogIjxwPkFsZ29yaXRobTMgTVNFKHgsIHhfYXBwcm94KS48L3A+In0sICJBbGczIC0gTWVhbiAxLXRoIHN1Yi1tYXRyaXgiOiB7ImRpc3BsYXlOYW1lIjogIiIsICJkZXNjcmlwdGlvbiI6ICI8cD5BbGdvcml0aG0zIE1lYW4oeF9hcHByb3gpIG9mIHRoZSAxLXRoIHN1Yi1tYXRyaXguPC9wPiJ9fSwgImJhc2VfUjhfZnJvYmVuaXVzLW5vcm1fVGgxZS0wNV9kYXRlMjAyMTA3MjAtMDkzMzM2IjogeyJBbGcyIC0gTWVhbiAwLXRoIHN1Yi1tYXRyaXgiOiB7ImRpc3BsYXlOYW1lIjogIiIsICJkZXNjcmlwdGlvbiI6ICI8cD5BbGdvcml0aG0yIE1lYW4oeF9hcHByb3gpIG9mIHRoZSAwLXRoIHN1Yi1tYXRyaXguPC9wPiJ9LCAiQWxnMiAtIE1TRSAxLXRoIHN1Yi1tYXRyaXgiOiB7ImRpc3BsYXlOYW1lIjogIiIsICJkZXNjcmlwdGlvbiI6ICI8cD5BbGdvcml0aG0yIE1TRSh4LCB4X2FwcHJveCkgb2YgdGhlIDEtdGggc3ViLW1hdHJpeC48L3A+In0sICJBbGczIC0gTWVhbiAxLXRoIHN1Yi1tYXRyaXgiOiB7ImRpc3BsYXlOYW1lIjogIiIsICJkZXNjcmlwdGlvbiI6ICI8cD5BbGdvcml0aG0zIE1lYW4oeF9hcHByb3gpIG9mIHRoZSAxLXRoIHN1Yi1tYXRyaXguPC9wPiJ9LCAiQWxnMiAtIE1lYW4gMS10aCBzdWItbWF0cml4IjogeyJkaXNwbGF5TmFtZSI6ICIiLCAiZGVzY3JpcHRpb24iOiAiPHA+QWxnb3JpdGhtMiBNZWFuKHhfYXBwcm94KSBvZiB0aGUgMS10aCBzdWItbWF0cml4LjwvcD4ifSwgIkFsZzMgLSBNZWFuIDAtdGggc3ViLW1hdHJpeCI6IHsiZGlzcGxheU5hbWUiOiAiIiwgImRlc2NyaXB0aW9uIjogIjxwPkFsZ29yaXRobTMgTWVhbih4X2FwcHJveCkgb2YgdGhlIDAtdGggc3ViLW1hdHJpeC48L3A+In0sICJBbGcyIC0gTVNFIDItdGggc3ViLW1hdHJpeCI6IHsiZGlzcGxheU5hbWUiOiAiIiwgImRlc2NyaXB0aW9uIjogIjxwPkFsZ29yaXRobTIgTVNFKHgsIHhfYXBwcm94KSBvZiB0aGUgMi10aCBzdWItbWF0cml4LjwvcD4ifSwgIkFsZzMgLSBNZWFuIE9yaWdpbmFsIDItdGggc3ViLW1hdHJpeCI6IHsiZGlzcGxheU5hbWUiOiAiIiwgImRlc2NyaXB0aW9uIjogIjxwPkFsZ29yaXRobTMgTWVhbih4KSBvZiB0aGUgMi10aCBzdWItbWF0cml4LjwvcD4ifSwgIkFsZzMgLSBNU0UgMC10aCBzdWItbWF0cml4IjogeyJkaXNwbGF5TmFtZSI6ICIiLCAiZGVzY3JpcHRpb24iOiAiPHA+QWxnb3JpdGhtMyBNU0UoeCwgeF9hcHByb3gpIG9mIHRoZSAwLXRoIHN1Yi1tYXRyaXguPC9wPiJ9LCAiQWxnMiAtIE1lYW4gMi10aCBzdWItbWF0cml4IjogeyJkaXNwbGF5TmFtZSI6ICIiLCAiZGVzY3JpcHRpb24iOiAiPHA+QWxnb3JpdGhtMiBNZWFuKHhfYXBwcm94KSBvZiB0aGUgMi10aCBzdWItbWF0cml4LjwvcD4ifSwgIkFsZzMgLSBNU0UgMi10aCBzdWItbWF0cml4IjogeyJkaXNwbGF5TmFtZSI6ICIiLCAiZGVzY3JpcHRpb24iOiAiPHA+QWxnb3JpdGhtMyBNU0UoeCwgeF9hcHByb3gpIG9mIHRoZSAyLXRoIHN1Yi1tYXRyaXguPC9wPiJ9LCAiQWxnMyAtIE1lYW4gT3JpZ2luYWwgMC10aCBzdWItbWF0cml4IjogeyJkaXNwbGF5TmFtZSI6ICIiLCAiZGVzY3JpcHRpb24iOiAiPHA+QWxnb3JpdGhtMyBNZWFuKHgpIG9mIHRoZSAwLXRoIHN1Yi1tYXRyaXguPC9wPiJ9LCAiQWxnMyAtIE1lYW4gT3JpZ2luYWwgMS10aCBzdWItbWF0cml4IjogeyJkaXNwbGF5TmFtZSI6ICIiLCAiZGVzY3JpcHRpb24iOiAiPHA+QWxnb3JpdGhtMyBNZWFuKHgpIG9mIHRoZSAxLXRoIHN1Yi1tYXRyaXguPC9wPiJ9LCAiQWxnMyAtIE1lYW4gMi10aCBzdWItbWF0cml4IjogeyJkaXNwbGF5TmFtZSI6ICIiLCAiZGVzY3JpcHRpb24iOiAiPHA+QWxnb3JpdGhtMyBNZWFuKHhfYXBwcm94KSBvZiB0aGUgMi10aCBzdWItbWF0cml4LjwvcD4ifSwgIkFsZzMgLSBNU0UgMS10aCBzdWItbWF0cml4IjogeyJkaXNwbGF5TmFtZSI6ICIiLCAiZGVzY3JpcHRpb24iOiAiPHA+QWxnb3JpdGhtMyBNU0UoeCwgeF9hcHByb3gpIG9mIHRoZSAxLXRoIHN1Yi1tYXRyaXguPC9wPiJ9LCAiQWxnMiAtIE1TRSAwLXRoIHN1Yi1tYXRyaXgiOiB7ImRpc3BsYXlOYW1lIjogIiIsICJkZXNjcmlwdGlvbiI6ICI8cD5BbGdvcml0aG0yIE1TRSh4LCB4X2FwcHJveCkgb2YgdGhlIDAtdGggc3ViLW1hdHJpeC48L3A+In0sICJBbGczIC0gTVNFIjogeyJkaXNwbGF5TmFtZSI6ICIiLCAiZGVzY3JpcHRpb24iOiAiPHA+QWxnb3JpdGhtMyBNU0UoeCwgeF9hcHByb3gpLjwvcD4ifX0sICJjbm4tbHN0bV9SOF9zY2FsZXIwXzEuMF9zY2FsZXIxXzEuMF9tc2VfVGgxZS0wNV9kYXRlMjAyMTA3MjAtMTIzNjAyIjogeyJBbGcyIC0gTVNFIDAtdGggc3ViLW1hdHJpeCI6IHsiZGlzcGxheU5hbWUiOiAiIiwgImRlc2NyaXB0aW9uIjogIjxwPkFsZ29yaXRobTIgTVNFKHgsIHhfYXBwcm94KSBvZiB0aGUgMC10aCBzdWItbWF0cml4LjwvcD4ifSwgIkFsZzMgLSBNZWFuIE9yaWdpbmFsIDEtdGggc3ViLW1hdHJpeCI6IHsiZGlzcGxheU5hbWUiOiAiIiwgImRlc2NyaXB0aW9uIjogIjxwPkFsZ29yaXRobTMgTWVhbih4KSBvZiB0aGUgMS10aCBzdWItbWF0cml4LjwvcD4ifSwgIkFsZzIgLSBNZWFuIDAtdGggc3ViLW1hdHJpeCI6IHsiZGlzcGxheU5hbWUiOiAiIiwgImRlc2NyaXB0aW9uIjogIjxwPkFsZ29yaXRobTIgTWVhbih4X2FwcHJveCkgb2YgdGhlIDAtdGggc3ViLW1hdHJpeC48L3A+In0sICJBbGczIC0gTVNFIDAtdGggc3ViLW1hdHJpeCI6IHsiZGlzcGxheU5hbWUiOiAiIiwgImRlc2NyaXB0aW9uIjogIjxwPkFsZ29yaXRobTMgTVNFKHgsIHhfYXBwcm94KSBvZiB0aGUgMC10aCBzdWItbWF0cml4LjwvcD4ifSwgIkFsZzIgLSBNZWFuIDEtdGggc3ViLW1hdHJpeCI6IHsiZGlzcGxheU5hbWUiOiAiIiwgImRlc2NyaXB0aW9uIjogIjxwPkFsZ29yaXRobTIgTWVhbih4X2FwcHJveCkgb2YgdGhlIDEtdGggc3ViLW1hdHJpeC48L3A+In0sICJBbGczIC0gTWVhbiAwLXRoIHN1Yi1tYXRyaXgiOiB7ImRpc3BsYXlOYW1lIjogIiIsICJkZXNjcmlwdGlvbiI6ICI8cD5BbGdvcml0aG0zIE1lYW4oeF9hcHByb3gpIG9mIHRoZSAwLXRoIHN1Yi1tYXRyaXguPC9wPiJ9LCAiQWxnMyAtIE1TRSI6IHsiZGlzcGxheU5hbWUiOiAiIiwgImRlc2NyaXB0aW9uIjogIjxwPkFsZ29yaXRobTMgTVNFKHgsIHhfYXBwcm94KS48L3A+In0sICJBbGczIC0gTWVhbiAxLXRoIHN1Yi1tYXRyaXgiOiB7ImRpc3BsYXlOYW1lIjogIiIsICJkZXNjcmlwdGlvbiI6ICI8cD5BbGdvcml0aG0zIE1lYW4oeF9hcHByb3gpIG9mIHRoZSAxLXRoIHN1Yi1tYXRyaXguPC9wPiJ9LCAiQWxnMyAtIE1TRSAxLXRoIHN1Yi1tYXRyaXgiOiB7ImRpc3BsYXlOYW1lIjogIiIsICJkZXNjcmlwdGlvbiI6ICI8cD5BbGdvcml0aG0zIE1TRSh4LCB4X2FwcHJveCkgb2YgdGhlIDEtdGggc3ViLW1hdHJpeC48L3A+In0sICJBbGcyIC0gTVNFIDEtdGggc3ViLW1hdHJpeCI6IHsiZGlzcGxheU5hbWUiOiAiIiwgImRlc2NyaXB0aW9uIjogIjxwPkFsZ29yaXRobTIgTVNFKHgsIHhfYXBwcm94KSBvZiB0aGUgMS10aCBzdWItbWF0cml4LjwvcD4ifSwgIkFsZzMgLSBNZWFuIE9yaWdpbmFsIDAtdGggc3ViLW1hdHJpeCI6IHsiZGlzcGxheU5hbWUiOiAiIiwgImRlc2NyaXB0aW9uIjogIjxwPkFsZ29yaXRobTMgTWVhbih4KSBvZiB0aGUgMC10aCBzdWItbWF0cml4LjwvcD4ifX0sICJtbmlzdF9SMzJfc2NhbGVyMF84LjBfc2NhbGVyMV8xLjBfbXNlX1RoMWUtMDVfZGF0ZTIwMjEwNzEzLTEzMTgzOCI6IHsiQWxnMyAtIE1TRSAxLXRoIHN1Yi1tYXRyaXgiOiB7ImRpc3BsYXlOYW1lIjogIiIsICJkZXNjcmlwdGlvbiI6ICI8cD5BbGdvcml0aG0zIE1TRSh4LCB4X2FwcHJveCkgb2YgdGhlIDEtdGggc3ViLW1hdHJpeC48L3A+In0sICJBbGczIC0gTWVhbiBPcmlnaW5hbCAwLXRoIHN1Yi1tYXRyaXgiOiB7ImRpc3BsYXlOYW1lIjogIiIsICJkZXNjcmlwdGlvbiI6ICI8cD5BbGdvcml0aG0zIE1lYW4oeCkgb2YgdGhlIDAtdGggc3ViLW1hdHJpeC48L3A+In0sICJBbGcyIC0gTVNFIDEtdGggc3ViLW1hdHJpeCI6IHsiZGlzcGxheU5hbWUiOiAiIiwgImRlc2NyaXB0aW9uIjogIjxwPkFsZ29yaXRobTIgTVNFKHgsIHhfYXBwcm94KSBvZiB0aGUgMS10aCBzdWItbWF0cml4LjwvcD4ifSwgIkFsZzMgLSBNU0UgMC10aCBzdWItbWF0cml4IjogeyJkaXNwbGF5TmFtZSI6ICIiLCAiZGVzY3JpcHRpb24iOiAiPHA+QWxnb3JpdGhtMyBNU0UoeCwgeF9hcHByb3gpIG9mIHRoZSAwLXRoIHN1Yi1tYXRyaXguPC9wPiJ9LCAiQWxnMiAtIE1lYW4gMC10aCBzdWItbWF0cml4IjogeyJkaXNwbGF5TmFtZSI6ICIiLCAiZGVzY3JpcHRpb24iOiAiPHA+QWxnb3JpdGhtMiBNZWFuKHhfYXBwcm94KSBvZiB0aGUgMC10aCBzdWItbWF0cml4LjwvcD4ifSwgIkFsZzMgLSBNZWFuIDEtdGggc3ViLW1hdHJpeCI6IHsiZGlzcGxheU5hbWUiOiAiIiwgImRlc2NyaXB0aW9uIjogIjxwPkFsZ29yaXRobTMgTWVhbih4X2FwcHJveCkgb2YgdGhlIDEtdGggc3ViLW1hdHJpeC48L3A+In0sICJBbGcyIC0gTVNFIDAtdGggc3ViLW1hdHJpeCI6IHsiZGlzcGxheU5hbWUiOiAiIiwgImRlc2NyaXB0aW9uIjogIjxwPkFsZ29yaXRobTIgTVNFKHgsIHhfYXBwcm94KSBvZiB0aGUgMC10aCBzdWItbWF0cml4LjwvcD4ifSwgIkFsZzMgLSBNZWFuIE9yaWdpbmFsIDEtdGggc3ViLW1hdHJpeCI6IHsiZGlzcGxheU5hbWUiOiAiIiwgImRlc2NyaXB0aW9uIjogIjxwPkFsZ29yaXRobTMgTWVhbih4KSBvZiB0aGUgMS10aCBzdWItbWF0cml4LjwvcD4ifSwgIkFsZzMgLSBNU0UiOiB7ImRpc3BsYXlOYW1lIjogIiIsICJkZXNjcmlwdGlvbiI6ICI8cD5BbGdvcml0aG0zIE1TRSh4LCB4X2FwcHJveCkuPC9wPiJ9LCAiQWxnMyAtIE1lYW4gMC10aCBzdWItbWF0cml4IjogeyJkaXNwbGF5TmFtZSI6ICIiLCAiZGVzY3JpcHRpb24iOiAiPHA+QWxnb3JpdGhtMyBNZWFuKHhfYXBwcm94KSBvZiB0aGUgMC10aCBzdWItbWF0cml4LjwvcD4ifSwgIkFsZzIgLSBNZWFuIDEtdGggc3ViLW1hdHJpeCI6IHsiZGlzcGxheU5hbWUiOiAiIiwgImRlc2NyaXB0aW9uIjogIjxwPkFsZ29yaXRobTIgTWVhbih4X2FwcHJveCkgb2YgdGhlIDEtdGggc3ViLW1hdHJpeC48L3A+In19LCAiY25uLWxzdG1fUjQ1X3NjYWxlcjBfMS4wX3NjYWxlcjFfMS4wX21zZV9UaDFlLTA1X2RhdGUyMDIxMDcyMC0xMjA2MjMiOiB7IkFsZzMgLSBNU0UgMC10aCBzdWItbWF0cml4IjogeyJkaXNwbGF5TmFtZSI6ICIiLCAiZGVzY3JpcHRpb24iOiAiPHA+QWxnb3JpdGhtMyBNU0UoeCwgeF9hcHByb3gpIG9mIHRoZSAwLXRoIHN1Yi1tYXRyaXguPC9wPiJ9LCAiQWxnMyAtIE1TRSI6IHsiZGlzcGxheU5hbWUiOiAiIiwgImRlc2NyaXB0aW9uIjogIjxwPkFsZ29yaXRobTMgTVNFKHgsIHhfYXBwcm94KS48L3A+In0sICJBbGczIC0gTWVhbiAxLXRoIHN1Yi1tYXRyaXgiOiB7ImRpc3BsYXlOYW1lIjogIiIsICJkZXNjcmlwdGlvbiI6ICI8cD5BbGdvcml0aG0zIE1lYW4oeF9hcHByb3gpIG9mIHRoZSAxLXRoIHN1Yi1tYXRyaXguPC9wPiJ9LCAiQWxnMyAtIE1TRSAxLXRoIHN1Yi1tYXRyaXgiOiB7ImRpc3BsYXlOYW1lIjogIiIsICJkZXNjcmlwdGlvbiI6ICI8cD5BbGdvcml0aG0zIE1TRSh4LCB4X2FwcHJveCkgb2YgdGhlIDEtdGggc3ViLW1hdHJpeC48L3A+In0sICJBbGczIC0gTWVhbiAwLXRoIHN1Yi1tYXRyaXgiOiB7ImRpc3BsYXlOYW1lIjogIiIsICJkZXNjcmlwdGlvbiI6ICI8cD5BbGdvcml0aG0zIE1lYW4oeF9hcHByb3gpIG9mIHRoZSAwLXRoIHN1Yi1tYXRyaXguPC9wPiJ9LCAiQWxnMiAtIE1TRSAwLXRoIHN1Yi1tYXRyaXgiOiB7ImRpc3BsYXlOYW1lIjogIiIsICJkZXNjcmlwdGlvbiI6ICI8cD5BbGdvcml0aG0yIE1TRSh4LCB4X2FwcHJveCkgb2YgdGhlIDAtdGggc3ViLW1hdHJpeC48L3A+In0sICJBbGcyIC0gTWVhbiAwLXRoIHN1Yi1tYXRyaXgiOiB7ImRpc3BsYXlOYW1lIjogIiIsICJkZXNjcmlwdGlvbiI6ICI8cD5BbGdvcml0aG0yIE1lYW4oeF9hcHByb3gpIG9mIHRoZSAwLXRoIHN1Yi1tYXRyaXguPC9wPiJ9LCAiQWxnMiAtIE1lYW4gMS10aCBzdWItbWF0cml4IjogeyJkaXNwbGF5TmFtZSI6ICIiLCAiZGVzY3JpcHRpb24iOiAiPHA+QWxnb3JpdGhtMiBNZWFuKHhfYXBwcm94KSBvZiB0aGUgMS10aCBzdWItbWF0cml4LjwvcD4ifSwgIkFsZzMgLSBNZWFuIE9yaWdpbmFsIDAtdGggc3ViLW1hdHJpeCI6IHsiZGlzcGxheU5hbWUiOiAiIiwgImRlc2NyaXB0aW9uIjogIjxwPkFsZ29yaXRobTMgTWVhbih4KSBvZiB0aGUgMC10aCBzdWItbWF0cml4LjwvcD4ifSwgIkFsZzIgLSBNU0UgMS10aCBzdWItbWF0cml4IjogeyJkaXNwbGF5TmFtZSI6ICIiLCAiZGVzY3JpcHRpb24iOiAiPHA+QWxnb3JpdGhtMiBNU0UoeCwgeF9hcHByb3gpIG9mIHRoZSAxLXRoIHN1Yi1tYXRyaXguPC9wPiJ9LCAiQWxnMyAtIE1lYW4gT3JpZ2luYWwgMS10aCBzdWItbWF0cml4IjogeyJkaXNwbGF5TmFtZSI6ICIiLCAiZGVzY3JpcHRpb24iOiAiPHA+QWxnb3JpdGhtMyBNZWFuKHgpIG9mIHRoZSAxLXRoIHN1Yi1tYXRyaXguPC9wPiJ9fSwgIm1uaXN0X1I0NV9zY2FsZXIwXzIuMF9zY2FsZXIxXzIuMF9tc2VfVGgxZS0wNV9kYXRlMjAyMTA3MTQtMTE1NTI0IjogeyJBbGczIC0gTWVhbiAwLXRoIHN1Yi1tYXRyaXgiOiB7ImRpc3BsYXlOYW1lIjogIiIsICJkZXNjcmlwdGlvbiI6ICI8cD5BbGdvcml0aG0zIE1lYW4oeF9hcHByb3gpIG9mIHRoZSAwLXRoIHN1Yi1tYXRyaXguPC9wPiJ9LCAiQWxnMyAtIE1TRSI6IHsiZGlzcGxheU5hbWUiOiAiIiwgImRlc2NyaXB0aW9uIjogIjxwPkFsZ29yaXRobTMgTVNFKHgsIHhfYXBwcm94KS48L3A+In0sICJBbGcyIC0gTVNFIDAtdGggc3ViLW1hdHJpeCI6IHsiZGlzcGxheU5hbWUiOiAiIiwgImRlc2NyaXB0aW9uIjogIjxwPkFsZ29yaXRobTIgTVNFKHgsIHhfYXBwcm94KSBvZiB0aGUgMC10aCBzdWItbWF0cml4LjwvcD4ifSwgIkFsZzMgLSBNU0UgMC10aCBzdWItbWF0cml4IjogeyJkaXNwbGF5TmFtZSI6ICIiLCAiZGVzY3JpcHRpb24iOiAiPHA+QWxnb3JpdGhtMyBNU0UoeCwgeF9hcHByb3gpIG9mIHRoZSAwLXRoIHN1Yi1tYXRyaXguPC9wPiJ9LCAiQWxnMiAtIE1lYW4gMC10aCBzdWItbWF0cml4IjogeyJkaXNwbGF5TmFtZSI6ICIiLCAiZGVzY3JpcHRpb24iOiAiPHA+QWxnb3JpdGhtMiBNZWFuKHhfYXBwcm94KSBvZiB0aGUgMC10aCBzdWItbWF0cml4LjwvcD4ifSwgIkFsZzMgLSBNZWFuIE9yaWdpbmFsIDAtdGggc3ViLW1hdHJpeCI6IHsiZGlzcGxheU5hbWUiOiAiIiwgImRlc2NyaXB0aW9uIjogIjxwPkFsZ29yaXRobTMgTWVhbih4KSBvZiB0aGUgMC10aCBzdWItbWF0cml4LjwvcD4ifSwgIkFsZzIgLSBNZWFuIDEtdGggc3ViLW1hdHJpeCI6IHsiZGlzcGxheU5hbWUiOiAiIiwgImRlc2NyaXB0aW9uIjogIjxwPkFsZ29yaXRobTIgTWVhbih4X2FwcHJveCkgb2YgdGhlIDEtdGggc3ViLW1hdHJpeC48L3A+In0sICJBbGczIC0gTWVhbiBPcmlnaW5hbCAxLXRoIHN1Yi1tYXRyaXgiOiB7ImRpc3BsYXlOYW1lIjogIiIsICJkZXNjcmlwdGlvbiI6ICI8cD5BbGdvcml0aG0zIE1lYW4oeCkgb2YgdGhlIDEtdGggc3ViLW1hdHJpeC48L3A+In0sICJBbGczIC0gTWVhbiAxLXRoIHN1Yi1tYXRyaXgiOiB7ImRpc3BsYXlOYW1lIjogIiIsICJkZXNjcmlwdGlvbiI6ICI8cD5BbGdvcml0aG0zIE1lYW4oeF9hcHByb3gpIG9mIHRoZSAxLXRoIHN1Yi1tYXRyaXguPC9wPiJ9LCAiQWxnMyAtIE1TRSAxLXRoIHN1Yi1tYXRyaXgiOiB7ImRpc3BsYXlOYW1lIjogIiIsICJkZXNjcmlwdGlvbiI6ICI8cD5BbGdvcml0aG0zIE1TRSh4LCB4X2FwcHJveCkgb2YgdGhlIDEtdGggc3ViLW1hdHJpeC48L3A+In0sICJBbGcyIC0gTVNFIDEtdGggc3ViLW1hdHJpeCI6IHsiZGlzcGxheU5hbWUiOiAiIiwgImRlc2NyaXB0aW9uIjogIjxwPkFsZ29yaXRobTIgTVNFKHgsIHhfYXBwcm94KSBvZiB0aGUgMS10aCBzdWItbWF0cml4LjwvcD4ifX0sICJtbmlzdF9SNDVfc2NhbGVyMF8xLjBfc2NhbGVyMV8xLjBfbXNlX1RoMWUtMDVfZGF0ZTIwMjEwNzIwLTIxMzkyOCI6IHsiQWxnMyAtIE1lYW4gMS10aCBzdWItbWF0cml4IjogeyJkaXNwbGF5TmFtZSI6ICIiLCAiZGVzY3JpcHRpb24iOiAiPHA+QWxnb3JpdGhtMyBNZWFuKHhfYXBwcm94KSBvZiB0aGUgMS10aCBzdWItbWF0cml4LjwvcD4ifSwgIkFsZzMgLSBNZWFuIE9yaWdpbmFsIDEtdGggc3ViLW1hdHJpeCI6IHsiZGlzcGxheU5hbWUiOiAiIiwgImRlc2NyaXB0aW9uIjogIjxwPkFsZ29yaXRobTMgTWVhbih4KSBvZiB0aGUgMS10aCBzdWItbWF0cml4LjwvcD4ifSwgIkFsZzMgLSBNU0UiOiB7ImRpc3BsYXlOYW1lIjogIiIsICJkZXNjcmlwdGlvbiI6ICI8cD5BbGdvcml0aG0zIE1TRSh4LCB4X2FwcHJveCkuPC9wPiJ9LCAiQWxnMiAtIE1lYW4gMC10aCBzdWItbWF0cml4IjogeyJkaXNwbGF5TmFtZSI6ICIiLCAiZGVzY3JpcHRpb24iOiAiPHA+QWxnb3JpdGhtMiBNZWFuKHhfYXBwcm94KSBvZiB0aGUgMC10aCBzdWItbWF0cml4LjwvcD4ifSwgIkFsZzMgLSBNZWFuIE9yaWdpbmFsIDAtdGggc3ViLW1hdHJpeCI6IHsiZGlzcGxheU5hbWUiOiAiIiwgImRlc2NyaXB0aW9uIjogIjxwPkFsZ29yaXRobTMgTWVhbih4KSBvZiB0aGUgMC10aCBzdWItbWF0cml4LjwvcD4ifSwgIkFsZzMgLSBNZWFuIDAtdGggc3ViLW1hdHJpeCI6IHsiZGlzcGxheU5hbWUiOiAiIiwgImRlc2NyaXB0aW9uIjogIjxwPkFsZ29yaXRobTMgTWVhbih4X2FwcHJveCkgb2YgdGhlIDAtdGggc3ViLW1hdHJpeC48L3A+In0sICJBbGczIC0gTVNFIDAtdGggc3ViLW1hdHJpeCI6IHsiZGlzcGxheU5hbWUiOiAiIiwgImRlc2NyaXB0aW9uIjogIjxwPkFsZ29yaXRobTMgTVNFKHgsIHhfYXBwcm94KSBvZiB0aGUgMC10aCBzdWItbWF0cml4LjwvcD4ifSwgIkFsZzIgLSBNZWFuIDEtdGggc3ViLW1hdHJpeCI6IHsiZGlzcGxheU5hbWUiOiAiIiwgImRlc2NyaXB0aW9uIjogIjxwPkFsZ29yaXRobTIgTWVhbih4X2FwcHJveCkgb2YgdGhlIDEtdGggc3ViLW1hdHJpeC48L3A+In0sICJBbGcyIC0gTVNFIDAtdGggc3ViLW1hdHJpeCI6IHsiZGlzcGxheU5hbWUiOiAiIiwgImRlc2NyaXB0aW9uIjogIjxwPkFsZ29yaXRobTIgTVNFKHgsIHhfYXBwcm94KSBvZiB0aGUgMC10aCBzdWItbWF0cml4LjwvcD4ifSwgIkFsZzIgLSBNU0UgMS10aCBzdWItbWF0cml4IjogeyJkaXNwbGF5TmFtZSI6ICIiLCAiZGVzY3JpcHRpb24iOiAiPHA+QWxnb3JpdGhtMiBNU0UoeCwgeF9hcHByb3gpIG9mIHRoZSAxLXRoIHN1Yi1tYXRyaXguPC9wPiJ9LCAiQWxnMyAtIE1TRSAxLXRoIHN1Yi1tYXRyaXgiOiB7ImRpc3BsYXlOYW1lIjogIiIsICJkZXNjcmlwdGlvbiI6ICI8cD5BbGdvcml0aG0zIE1TRSh4LCB4X2FwcHJveCkgb2YgdGhlIDEtdGggc3ViLW1hdHJpeC48L3A+In19LCAibW5pc3RfUjQ1X3NjYWxlcjBfMS4wX3NjYWxlcjFfNi4wX21zZV9UaDFlLTA1X2RhdGUyMDIxMDcxNC0wODEwMzQiOiB7IkFsZzIgLSBNZWFuIDEtdGggc3ViLW1hdHJpeCI6IHsiZGlzcGxheU5hbWUiOiAiIiwgImRlc2NyaXB0aW9uIjogIjxwPkFsZ29yaXRobTIgTWVhbih4X2FwcHJveCkgb2YgdGhlIDEtdGggc3ViLW1hdHJpeC48L3A+In0sICJBbGcyIC0gTVNFIDAtdGggc3ViLW1hdHJpeCI6IHsiZGlzcGxheU5hbWUiOiAiIiwgImRlc2NyaXB0aW9uIjogIjxwPkFsZ29yaXRobTIgTVNFKHgsIHhfYXBwcm94KSBvZiB0aGUgMC10aCBzdWItbWF0cml4LjwvcD4ifSwgIkFsZzMgLSBNU0UgMS10aCBzdWItbWF0cml4IjogeyJkaXNwbGF5TmFtZSI6ICIiLCAiZGVzY3JpcHRpb24iOiAiPHA+QWxnb3JpdGhtMyBNU0UoeCwgeF9hcHByb3gpIG9mIHRoZSAxLXRoIHN1Yi1tYXRyaXguPC9wPiJ9LCAiQWxnMiAtIE1lYW4gMC10aCBzdWItbWF0cml4IjogeyJkaXNwbGF5TmFtZSI6ICIiLCAiZGVzY3JpcHRpb24iOiAiPHA+QWxnb3JpdGhtMiBNZWFuKHhfYXBwcm94KSBvZiB0aGUgMC10aCBzdWItbWF0cml4LjwvcD4ifSwgIkFsZzMgLSBNU0UgMC10aCBzdWItbWF0cml4IjogeyJkaXNwbGF5TmFtZSI6ICIiLCAiZGVzY3JpcHRpb24iOiAiPHA+QWxnb3JpdGhtMyBNU0UoeCwgeF9hcHByb3gpIG9mIHRoZSAwLXRoIHN1Yi1tYXRyaXguPC9wPiJ9LCAiQWxnMyAtIE1lYW4gT3JpZ2luYWwgMC10aCBzdWItbWF0cml4IjogeyJkaXNwbGF5TmFtZSI6ICIiLCAiZGVzY3JpcHRpb24iOiAiPHA+QWxnb3JpdGhtMyBNZWFuKHgpIG9mIHRoZSAwLXRoIHN1Yi1tYXRyaXguPC9wPiJ9LCAiQWxnMyAtIE1lYW4gMC10aCBzdWItbWF0cml4IjogeyJkaXNwbGF5TmFtZSI6ICIiLCAiZGVzY3JpcHRpb24iOiAiPHA+QWxnb3JpdGhtMyBNZWFuKHhfYXBwcm94KSBvZiB0aGUgMC10aCBzdWItbWF0cml4LjwvcD4ifSwgIkFsZzIgLSBNU0UgMS10aCBzdWItbWF0cml4IjogeyJkaXNwbGF5TmFtZSI6ICIiLCAiZGVzY3JpcHRpb24iOiAiPHA+QWxnb3JpdGhtMiBNU0UoeCwgeF9hcHByb3gpIG9mIHRoZSAxLXRoIHN1Yi1tYXRyaXguPC9wPiJ9LCAiQWxnMyAtIE1lYW4gMS10aCBzdWItbWF0cml4IjogeyJkaXNwbGF5TmFtZSI6ICIiLCAiZGVzY3JpcHRpb24iOiAiPHA+QWxnb3JpdGhtMyBNZWFuKHhfYXBwcm94KSBvZiB0aGUgMS10aCBzdWItbWF0cml4LjwvcD4ifSwgIkFsZzMgLSBNU0UiOiB7ImRpc3BsYXlOYW1lIjogIiIsICJkZXNjcmlwdGlvbiI6ICI8cD5BbGdvcml0aG0zIE1TRSh4LCB4X2FwcHJveCkuPC9wPiJ9LCAiQWxnMyAtIE1lYW4gT3JpZ2luYWwgMS10aCBzdWItbWF0cml4IjogeyJkaXNwbGF5TmFtZSI6ICIiLCAiZGVzY3JpcHRpb24iOiAiPHA+QWxnb3JpdGhtMyBNZWFuKHgpIG9mIHRoZSAxLXRoIHN1Yi1tYXRyaXguPC9wPiJ9fSwgIm1uaXN0X1IxNl9zY2FsZXIwXzQuMF9zY2FsZXIxXzguMF9tc2VfVGgxZS0wNV9kYXRlMjAyMTA3MTMtMTMxMTEwIjogeyJBbGczIC0gTWVhbiBPcmlnaW5hbCAxLXRoIHN1Yi1tYXRyaXgiOiB7ImRpc3BsYXlOYW1lIjogIiIsICJkZXNjcmlwdGlvbiI6ICI8cD5BbGdvcml0aG0zIE1lYW4oeCkgb2YgdGhlIDEtdGggc3ViLW1hdHJpeC48L3A+In0sICJBbGczIC0gTVNFIDEtdGggc3ViLW1hdHJpeCI6IHsiZGlzcGxheU5hbWUiOiAiIiwgImRlc2NyaXB0aW9uIjogIjxwPkFsZ29yaXRobTMgTVNFKHgsIHhfYXBwcm94KSBvZiB0aGUgMS10aCBzdWItbWF0cml4LjwvcD4ifSwgIkFsZzIgLSBNZWFuIDEtdGggc3ViLW1hdHJpeCI6IHsiZGlzcGxheU5hbWUiOiAiIiwgImRlc2NyaXB0aW9uIjogIjxwPkFsZ29yaXRobTIgTWVhbih4X2FwcHJveCkgb2YgdGhlIDEtdGggc3ViLW1hdHJpeC48L3A+In0sICJBbGczIC0gTWVhbiAwLXRoIHN1Yi1tYXRyaXgiOiB7ImRpc3BsYXlOYW1lIjogIiIsICJkZXNjcmlwdGlvbiI6ICI8cD5BbGdvcml0aG0zIE1lYW4oeF9hcHByb3gpIG9mIHRoZSAwLXRoIHN1Yi1tYXRyaXguPC9wPiJ9LCAiQWxnMiAtIE1TRSAxLXRoIHN1Yi1tYXRyaXgiOiB7ImRpc3BsYXlOYW1lIjogIiIsICJkZXNjcmlwdGlvbiI6ICI8cD5BbGdvcml0aG0yIE1TRSh4LCB4X2FwcHJveCkgb2YgdGhlIDEtdGggc3ViLW1hdHJpeC48L3A+In0sICJBbGczIC0gTVNFIjogeyJkaXNwbGF5TmFtZSI6ICIiLCAiZGVzY3JpcHRpb24iOiAiPHA+QWxnb3JpdGhtMyBNU0UoeCwgeF9hcHByb3gpLjwvcD4ifSwgIkFsZzIgLSBNZWFuIDAtdGggc3ViLW1hdHJpeCI6IHsiZGlzcGxheU5hbWUiOiAiIiwgImRlc2NyaXB0aW9uIjogIjxwPkFsZ29yaXRobTIgTWVhbih4X2FwcHJveCkgb2YgdGhlIDAtdGggc3ViLW1hdHJpeC48L3A+In0sICJBbGczIC0gTWVhbiBPcmlnaW5hbCAwLXRoIHN1Yi1tYXRyaXgiOiB7ImRpc3BsYXlOYW1lIjogIiIsICJkZXNjcmlwdGlvbiI6ICI8cD5BbGdvcml0aG0zIE1lYW4oeCkgb2YgdGhlIDAtdGggc3ViLW1hdHJpeC48L3A+In0sICJBbGczIC0gTWVhbiAxLXRoIHN1Yi1tYXRyaXgiOiB7ImRpc3BsYXlOYW1lIjogIiIsICJkZXNjcmlwdGlvbiI6ICI8cD5BbGdvcml0aG0zIE1lYW4oeF9hcHByb3gpIG9mIHRoZSAxLXRoIHN1Yi1tYXRyaXguPC9wPiJ9LCAiQWxnMiAtIE1TRSAwLXRoIHN1Yi1tYXRyaXgiOiB7ImRpc3BsYXlOYW1lIjogIiIsICJkZXNjcmlwdGlvbiI6ICI8cD5BbGdvcml0aG0yIE1TRSh4LCB4X2FwcHJveCkgb2YgdGhlIDAtdGggc3ViLW1hdHJpeC48L3A+In0sICJBbGczIC0gTVNFIDAtdGggc3ViLW1hdHJpeCI6IHsiZGlzcGxheU5hbWUiOiAiIiwgImRlc2NyaXB0aW9uIjogIjxwPkFsZ29yaXRobTMgTVNFKHgsIHhfYXBwcm94KSBvZiB0aGUgMC10aCBzdWItbWF0cml4LjwvcD4ifX0sICJtbmlzdF9SNDVfc2NhbGVyMF8xLjBfc2NhbGVyMV8yLjBfbXNlX1RoMWUtMDVfZGF0ZTIwMjEwNzIwLTIxMDkyOCI6IHsiQWxnMiAtIE1TRSAwLXRoIHN1Yi1tYXRyaXgiOiB7ImRpc3BsYXlOYW1lIjogIiIsICJkZXNjcmlwdGlvbiI6ICI8cD5BbGdvcml0aG0yIE1TRSh4LCB4X2FwcHJveCkgb2YgdGhlIDAtdGggc3ViLW1hdHJpeC48L3A+In0sICJBbGcyIC0gTWVhbiAxLXRoIHN1Yi1tYXRyaXgiOiB7ImRpc3BsYXlOYW1lIjogIiIsICJkZXNjcmlwdGlvbiI6ICI8cD5BbGdvcml0aG0yIE1lYW4oeF9hcHByb3gpIG9mIHRoZSAxLXRoIHN1Yi1tYXRyaXguPC9wPiJ9LCAiQWxnMyAtIE1lYW4gMS10aCBzdWItbWF0cml4IjogeyJkaXNwbGF5TmFtZSI6ICIiLCAiZGVzY3JpcHRpb24iOiAiPHA+QWxnb3JpdGhtMyBNZWFuKHhfYXBwcm94KSBvZiB0aGUgMS10aCBzdWItbWF0cml4LjwvcD4ifSwgIkFsZzMgLSBNU0UgMC10aCBzdWItbWF0cml4IjogeyJkaXNwbGF5TmFtZSI6ICIiLCAiZGVzY3JpcHRpb24iOiAiPHA+QWxnb3JpdGhtMyBNU0UoeCwgeF9hcHByb3gpIG9mIHRoZSAwLXRoIHN1Yi1tYXRyaXguPC9wPiJ9LCAiQWxnMyAtIE1TRSAxLXRoIHN1Yi1tYXRyaXgiOiB7ImRpc3BsYXlOYW1lIjogIiIsICJkZXNjcmlwdGlvbiI6ICI8cD5BbGdvcml0aG0zIE1TRSh4LCB4X2FwcHJveCkgb2YgdGhlIDEtdGggc3ViLW1hdHJpeC48L3A+In0sICJBbGczIC0gTWVhbiAwLXRoIHN1Yi1tYXRyaXgiOiB7ImRpc3BsYXlOYW1lIjogIiIsICJkZXNjcmlwdGlvbiI6ICI8cD5BbGdvcml0aG0zIE1lYW4oeF9hcHByb3gpIG9mIHRoZSAwLXRoIHN1Yi1tYXRyaXguPC9wPiJ9LCAiQWxnMiAtIE1TRSAxLXRoIHN1Yi1tYXRyaXgiOiB7ImRpc3BsYXlOYW1lIjogIiIsICJkZXNjcmlwdGlvbiI6ICI8cD5BbGdvcml0aG0yIE1TRSh4LCB4X2FwcHJveCkgb2YgdGhlIDEtdGggc3ViLW1hdHJpeC48L3A+In0sICJBbGczIC0gTWVhbiBPcmlnaW5hbCAxLXRoIHN1Yi1tYXRyaXgiOiB7ImRpc3BsYXlOYW1lIjogIiIsICJkZXNjcmlwdGlvbiI6ICI8cD5BbGdvcml0aG0zIE1lYW4oeCkgb2YgdGhlIDEtdGggc3ViLW1hdHJpeC48L3A+In0sICJBbGczIC0gTVNFIjogeyJkaXNwbGF5TmFtZSI6ICIiLCAiZGVzY3JpcHRpb24iOiAiPHA+QWxnb3JpdGhtMyBNU0UoeCwgeF9hcHByb3gpLjwvcD4ifSwgIkFsZzMgLSBNZWFuIE9yaWdpbmFsIDAtdGggc3ViLW1hdHJpeCI6IHsiZGlzcGxheU5hbWUiOiAiIiwgImRlc2NyaXB0aW9uIjogIjxwPkFsZ29yaXRobTMgTWVhbih4KSBvZiB0aGUgMC10aCBzdWItbWF0cml4LjwvcD4ifSwgIkFsZzIgLSBNZWFuIDAtdGggc3ViLW1hdHJpeCI6IHsiZGlzcGxheU5hbWUiOiAiIiwgImRlc2NyaXB0aW9uIjogIjxwPkFsZ29yaXRobTIgTWVhbih4X2FwcHJveCkgb2YgdGhlIDAtdGggc3ViLW1hdHJpeC48L3A+In19LCAiYmFzZV9SOF9mcm9iZW5pdXMtbm9ybV9UaDFlLTA1X2RhdGUyMDIxMDcxMy0xNjE1MjAiOiB7IkFsZzMgLSBNU0UiOiB7ImRpc3BsYXlOYW1lIjogIiIsICJkZXNjcmlwdGlvbiI6ICI8cD5BbGdvcml0aG0zIE1TRSh4LCB4X2FwcHJveCkuPC9wPiJ9LCAiQWxnMiAtIE1lYW4gMS10aCBzdWItbWF0cml4IjogeyJkaXNwbGF5TmFtZSI6ICIiLCAiZGVzY3JpcHRpb24iOiAiPHA+QWxnb3JpdGhtMiBNZWFuKHhfYXBwcm94KSBvZiB0aGUgMS10aCBzdWItbWF0cml4LjwvcD4ifSwgIkFsZzMgLSBNZWFuIDEtdGggc3ViLW1hdHJpeCI6IHsiZGlzcGxheU5hbWUiOiAiIiwgImRlc2NyaXB0aW9uIjogIjxwPkFsZ29yaXRobTMgTWVhbih4X2FwcHJveCkgb2YgdGhlIDEtdGggc3ViLW1hdHJpeC48L3A+In0sICJBbGcyIC0gTWVhbiAwLXRoIHN1Yi1tYXRyaXgiOiB7ImRpc3BsYXlOYW1lIjogIiIsICJkZXNjcmlwdGlvbiI6ICI8cD5BbGdvcml0aG0yIE1lYW4oeF9hcHByb3gpIG9mIHRoZSAwLXRoIHN1Yi1tYXRyaXguPC9wPiJ9LCAiQWxnMiAtIE1TRSAxLXRoIHN1Yi1tYXRyaXgiOiB7ImRpc3BsYXlOYW1lIjogIiIsICJkZXNjcmlwdGlvbiI6ICI8cD5BbGdvcml0aG0yIE1TRSh4LCB4X2FwcHJveCkgb2YgdGhlIDEtdGggc3ViLW1hdHJpeC48L3A+In0sICJBbGczIC0gTWVhbiBPcmlnaW5hbCAyLXRoIHN1Yi1tYXRyaXgiOiB7ImRpc3BsYXlOYW1lIjogIiIsICJkZXNjcmlwdGlvbiI6ICI8cD5BbGdvcml0aG0zIE1lYW4oeCkgb2YgdGhlIDItdGggc3ViLW1hdHJpeC48L3A+In0sICJBbGczIC0gTWVhbiBPcmlnaW5hbCAxLXRoIHN1Yi1tYXRyaXgiOiB7ImRpc3BsYXlOYW1lIjogIiIsICJkZXNjcmlwdGlvbiI6ICI8cD5BbGdvcml0aG0zIE1lYW4oeCkgb2YgdGhlIDEtdGggc3ViLW1hdHJpeC48L3A+In0sICJBbGczIC0gTVNFIDEtdGggc3ViLW1hdHJpeCI6IHsiZGlzcGxheU5hbWUiOiAiIiwgImRlc2NyaXB0aW9uIjogIjxwPkFsZ29yaXRobTMgTVNFKHgsIHhfYXBwcm94KSBvZiB0aGUgMS10aCBzdWItbWF0cml4LjwvcD4ifSwgIkFsZzIgLSBNU0UgMi10aCBzdWItbWF0cml4IjogeyJkaXNwbGF5TmFtZSI6ICIiLCAiZGVzY3JpcHRpb24iOiAiPHA+QWxnb3JpdGhtMiBNU0UoeCwgeF9hcHByb3gpIG9mIHRoZSAyLXRoIHN1Yi1tYXRyaXguPC9wPiJ9LCAiQWxnMyAtIE1TRSAwLXRoIHN1Yi1tYXRyaXgiOiB7ImRpc3BsYXlOYW1lIjogIiIsICJkZXNjcmlwdGlvbiI6ICI8cD5BbGdvcml0aG0zIE1TRSh4LCB4X2FwcHJveCkgb2YgdGhlIDAtdGggc3ViLW1hdHJpeC48L3A+In0sICJBbGcyIC0gTWVhbiAyLXRoIHN1Yi1tYXRyaXgiOiB7ImRpc3BsYXlOYW1lIjogIiIsICJkZXNjcmlwdGlvbiI6ICI8cD5BbGdvcml0aG0yIE1lYW4oeF9hcHByb3gpIG9mIHRoZSAyLXRoIHN1Yi1tYXRyaXguPC9wPiJ9LCAiQWxnMyAtIE1lYW4gMi10aCBzdWItbWF0cml4IjogeyJkaXNwbGF5TmFtZSI6ICIiLCAiZGVzY3JpcHRpb24iOiAiPHA+QWxnb3JpdGhtMyBNZWFuKHhfYXBwcm94KSBvZiB0aGUgMi10aCBzdWItbWF0cml4LjwvcD4ifSwgIkFsZzMgLSBNZWFuIE9yaWdpbmFsIDAtdGggc3ViLW1hdHJpeCI6IHsiZGlzcGxheU5hbWUiOiAiIiwgImRlc2NyaXB0aW9uIjogIjxwPkFsZ29yaXRobTMgTWVhbih4KSBvZiB0aGUgMC10aCBzdWItbWF0cml4LjwvcD4ifSwgIkFsZzIgLSBNU0UgMC10aCBzdWItbWF0cml4IjogeyJkaXNwbGF5TmFtZSI6ICIiLCAiZGVzY3JpcHRpb24iOiAiPHA+QWxnb3JpdGhtMiBNU0UoeCwgeF9hcHByb3gpIG9mIHRoZSAwLXRoIHN1Yi1tYXRyaXguPC9wPiJ9LCAiQWxnMyAtIE1lYW4gMC10aCBzdWItbWF0cml4IjogeyJkaXNwbGF5TmFtZSI6ICIiLCAiZGVzY3JpcHRpb24iOiAiPHA+QWxnb3JpdGhtMyBNZWFuKHhfYXBwcm94KSBvZiB0aGUgMC10aCBzdWItbWF0cml4LjwvcD4ifSwgIkFsZzMgLSBNU0UgMi10aCBzdWItbWF0cml4IjogeyJkaXNwbGF5TmFtZSI6ICIiLCAiZGVzY3JpcHRpb24iOiAiPHA+QWxnb3JpdGhtMyBNU0UoeCwgeF9hcHByb3gpIG9mIHRoZSAyLXRoIHN1Yi1tYXRyaXguPC9wPiJ9fSwgImJhc2VfUjhfZnJvYmVuaXVzLW5vcm1fVGgxZS0wNV9kYXRlMjAyMTA3MTQtMDc1NzIzIjogeyJBbGczIC0gTWVhbiAyLXRoIHN1Yi1tYXRyaXgiOiB7ImRpc3BsYXlOYW1lIjogIiIsICJkZXNjcmlwdGlvbiI6ICI8cD5BbGdvcml0aG0zIE1lYW4oeF9hcHByb3gpIG9mIHRoZSAyLXRoIHN1Yi1tYXRyaXguPC9wPiJ9LCAiQWxnMyAtIE1TRSAwLXRoIHN1Yi1tYXRyaXgiOiB7ImRpc3BsYXlOYW1lIjogIiIsICJkZXNjcmlwdGlvbiI6ICI8cD5BbGdvcml0aG0zIE1TRSh4LCB4X2FwcHJveCkgb2YgdGhlIDAtdGggc3ViLW1hdHJpeC48L3A+In0sICJBbGczIC0gTVNFIDItdGggc3ViLW1hdHJpeCI6IHsiZGlzcGxheU5hbWUiOiAiIiwgImRlc2NyaXB0aW9uIjogIjxwPkFsZ29yaXRobTMgTVNFKHgsIHhfYXBwcm94KSBvZiB0aGUgMi10aCBzdWItbWF0cml4LjwvcD4ifSwgIkFsZzIgLSBNU0UgMS10aCBzdWItbWF0cml4IjogeyJkaXNwbGF5TmFtZSI6ICIiLCAiZGVzY3JpcHRpb24iOiAiPHA+QWxnb3JpdGhtMiBNU0UoeCwgeF9hcHByb3gpIG9mIHRoZSAxLXRoIHN1Yi1tYXRyaXguPC9wPiJ9LCAiQWxnMyAtIE1lYW4gMS10aCBzdWItbWF0cml4IjogeyJkaXNwbGF5TmFtZSI6ICIiLCAiZGVzY3JpcHRpb24iOiAiPHA+QWxnb3JpdGhtMyBNZWFuKHhfYXBwcm94KSBvZiB0aGUgMS10aCBzdWItbWF0cml4LjwvcD4ifSwgIkFsZzIgLSBNU0UgMC10aCBzdWItbWF0cml4IjogeyJkaXNwbGF5TmFtZSI6ICIiLCAiZGVzY3JpcHRpb24iOiAiPHA+QWxnb3JpdGhtMiBNU0UoeCwgeF9hcHByb3gpIG9mIHRoZSAwLXRoIHN1Yi1tYXRyaXguPC9wPiJ9LCAiQWxnMiAtIE1lYW4gMC10aCBzdWItbWF0cml4IjogeyJkaXNwbGF5TmFtZSI6ICIiLCAiZGVzY3JpcHRpb24iOiAiPHA+QWxnb3JpdGhtMiBNZWFuKHhfYXBwcm94KSBvZiB0aGUgMC10aCBzdWItbWF0cml4LjwvcD4ifSwgIkFsZzIgLSBNZWFuIDEtdGggc3ViLW1hdHJpeCI6IHsiZGlzcGxheU5hbWUiOiAiIiwgImRlc2NyaXB0aW9uIjogIjxwPkFsZ29yaXRobTIgTWVhbih4X2FwcHJveCkgb2YgdGhlIDEtdGggc3ViLW1hdHJpeC48L3A+In0sICJBbGcyIC0gTVNFIDItdGggc3ViLW1hdHJpeCI6IHsiZGlzcGxheU5hbWUiOiAiIiwgImRlc2NyaXB0aW9uIjogIjxwPkFsZ29yaXRobTIgTVNFKHgsIHhfYXBwcm94KSBvZiB0aGUgMi10aCBzdWItbWF0cml4LjwvcD4ifSwgIkFsZzMgLSBNZWFuIE9yaWdpbmFsIDItdGggc3ViLW1hdHJpeCI6IHsiZGlzcGxheU5hbWUiOiAiIiwgImRlc2NyaXB0aW9uIjogIjxwPkFsZ29yaXRobTMgTWVhbih4KSBvZiB0aGUgMi10aCBzdWItbWF0cml4LjwvcD4ifSwgIkFsZzIgLSBNZWFuIDItdGggc3ViLW1hdHJpeCI6IHsiZGlzcGxheU5hbWUiOiAiIiwgImRlc2NyaXB0aW9uIjogIjxwPkFsZ29yaXRobTIgTWVhbih4X2FwcHJveCkgb2YgdGhlIDItdGggc3ViLW1hdHJpeC48L3A+In0sICJBbGczIC0gTVNFIDEtdGggc3ViLW1hdHJpeCI6IHsiZGlzcGxheU5hbWUiOiAiIiwgImRlc2NyaXB0aW9uIjogIjxwPkFsZ29yaXRobTMgTVNFKHgsIHhfYXBwcm94KSBvZiB0aGUgMS10aCBzdWItbWF0cml4LjwvcD4ifSwgIkFsZzMgLSBNU0UiOiB7ImRpc3BsYXlOYW1lIjogIiIsICJkZXNjcmlwdGlvbiI6ICI8cD5BbGdvcml0aG0zIE1TRSh4LCB4X2FwcHJveCkuPC9wPiJ9LCAiQWxnMyAtIE1lYW4gT3JpZ2luYWwgMC10aCBzdWItbWF0cml4IjogeyJkaXNwbGF5TmFtZSI6ICIiLCAiZGVzY3JpcHRpb24iOiAiPHA+QWxnb3JpdGhtMyBNZWFuKHgpIG9mIHRoZSAwLXRoIHN1Yi1tYXRyaXguPC9wPiJ9LCAiQWxnMyAtIE1lYW4gMC10aCBzdWItbWF0cml4IjogeyJkaXNwbGF5TmFtZSI6ICIiLCAiZGVzY3JpcHRpb24iOiAiPHA+QWxnb3JpdGhtMyBNZWFuKHhfYXBwcm94KSBvZiB0aGUgMC10aCBzdWItbWF0cml4LjwvcD4ifSwgIkFsZzMgLSBNZWFuIE9yaWdpbmFsIDEtdGggc3ViLW1hdHJpeCI6IHsiZGlzcGxheU5hbWUiOiAiIiwgImRlc2NyaXB0aW9uIjogIjxwPkFsZ29yaXRobTMgTWVhbih4KSBvZiB0aGUgMS10aCBzdWItbWF0cml4LjwvcD4ifX0sICJtbmlzdF9SNDVfc2NhbGVyMF8xLjJfc2NhbGVyMV8xLjBfbXNlX1RoMWUtMDVfZGF0ZTIwMjEwNzE0LTExMzgxOCI6IHsiQWxnMyAtIE1TRSAwLXRoIHN1Yi1tYXRyaXgiOiB7ImRpc3BsYXlOYW1lIjogIiIsICJkZXNjcmlwdGlvbiI6ICI8cD5BbGdvcml0aG0zIE1TRSh4LCB4X2FwcHJveCkgb2YgdGhlIDAtdGggc3ViLW1hdHJpeC48L3A+In0sICJBbGczIC0gTWVhbiBPcmlnaW5hbCAxLXRoIHN1Yi1tYXRyaXgiOiB7ImRpc3BsYXlOYW1lIjogIiIsICJkZXNjcmlwdGlvbiI6ICI8cD5BbGdvcml0aG0zIE1lYW4oeCkgb2YgdGhlIDEtdGggc3ViLW1hdHJpeC48L3A+In0sICJBbGcyIC0gTWVhbiAwLXRoIHN1Yi1tYXRyaXgiOiB7ImRpc3BsYXlOYW1lIjogIiIsICJkZXNjcmlwdGlvbiI6ICI8cD5BbGdvcml0aG0yIE1lYW4oeF9hcHByb3gpIG9mIHRoZSAwLXRoIHN1Yi1tYXRyaXguPC9wPiJ9LCAiQWxnMiAtIE1TRSAxLXRoIHN1Yi1tYXRyaXgiOiB7ImRpc3BsYXlOYW1lIjogIiIsICJkZXNjcmlwdGlvbiI6ICI8cD5BbGdvcml0aG0yIE1TRSh4LCB4X2FwcHJveCkgb2YgdGhlIDEtdGggc3ViLW1hdHJpeC48L3A+In0sICJBbGcyIC0gTVNFIDAtdGggc3ViLW1hdHJpeCI6IHsiZGlzcGxheU5hbWUiOiAiIiwgImRlc2NyaXB0aW9uIjogIjxwPkFsZ29yaXRobTIgTVNFKHgsIHhfYXBwcm94KSBvZiB0aGUgMC10aCBzdWItbWF0cml4LjwvcD4ifSwgIkFsZzIgLSBNZWFuIDEtdGggc3ViLW1hdHJpeCI6IHsiZGlzcGxheU5hbWUiOiAiIiwgImRlc2NyaXB0aW9uIjogIjxwPkFsZ29yaXRobTIgTWVhbih4X2FwcHJveCkgb2YgdGhlIDEtdGggc3ViLW1hdHJpeC48L3A+In0sICJBbGczIC0gTVNFIjogeyJkaXNwbGF5TmFtZSI6ICIiLCAiZGVzY3JpcHRpb24iOiAiPHA+QWxnb3JpdGhtMyBNU0UoeCwgeF9hcHByb3gpLjwvcD4ifSwgIkFsZzMgLSBNZWFuIE9yaWdpbmFsIDAtdGggc3ViLW1hdHJpeCI6IHsiZGlzcGxheU5hbWUiOiAiIiwgImRlc2NyaXB0aW9uIjogIjxwPkFsZ29yaXRobTMgTWVhbih4KSBvZiB0aGUgMC10aCBzdWItbWF0cml4LjwvcD4ifSwgIkFsZzMgLSBNZWFuIDAtdGggc3ViLW1hdHJpeCI6IHsiZGlzcGxheU5hbWUiOiAiIiwgImRlc2NyaXB0aW9uIjogIjxwPkFsZ29yaXRobTMgTWVhbih4X2FwcHJveCkgb2YgdGhlIDAtdGggc3ViLW1hdHJpeC48L3A+In0sICJBbGczIC0gTVNFIDEtdGggc3ViLW1hdHJpeCI6IHsiZGlzcGxheU5hbWUiOiAiIiwgImRlc2NyaXB0aW9uIjogIjxwPkFsZ29yaXRobTMgTVNFKHgsIHhfYXBwcm94KSBvZiB0aGUgMS10aCBzdWItbWF0cml4LjwvcD4ifSwgIkFsZzMgLSBNZWFuIDEtdGggc3ViLW1hdHJpeCI6IHsiZGlzcGxheU5hbWUiOiAiIiwgImRlc2NyaXB0aW9uIjogIjxwPkFsZ29yaXRobTMgTWVhbih4X2FwcHJveCkgb2YgdGhlIDEtdGggc3ViLW1hdHJpeC48L3A+In19LCAibW5pc3RfUjQ1X3NjYWxlcjBfMy4wX3NjYWxlcjFfMS4wX21zZV9UaDFlLTA1X2RhdGUyMDIxMDcxMy0xMzA0MjciOiB7IkFsZzIgLSBNU0UgMC10aCBzdWItbWF0cml4IjogeyJkaXNwbGF5TmFtZSI6ICIiLCAiZGVzY3JpcHRpb24iOiAiPHA+QWxnb3JpdGhtMiBNU0UoeCwgeF9hcHByb3gpIG9mIHRoZSAwLXRoIHN1Yi1tYXRyaXguPC9wPiJ9LCAiQWxnMyAtIE1lYW4gMC10aCBzdWItbWF0cml4IjogeyJkaXNwbGF5TmFtZSI6ICIiLCAiZGVzY3JpcHRpb24iOiAiPHA+QWxnb3JpdGhtMyBNZWFuKHhfYXBwcm94KSBvZiB0aGUgMC10aCBzdWItbWF0cml4LjwvcD4ifSwgIkFsZzMgLSBNZWFuIE9yaWdpbmFsIDAtdGggc3ViLW1hdHJpeCI6IHsiZGlzcGxheU5hbWUiOiAiIiwgImRlc2NyaXB0aW9uIjogIjxwPkFsZ29yaXRobTMgTWVhbih4KSBvZiB0aGUgMC10aCBzdWItbWF0cml4LjwvcD4ifSwgIkFsZzMgLSBNU0UgMS10aCBzdWItbWF0cml4IjogeyJkaXNwbGF5TmFtZSI6ICIiLCAiZGVzY3JpcHRpb24iOiAiPHA+QWxnb3JpdGhtMyBNU0UoeCwgeF9hcHByb3gpIG9mIHRoZSAxLXRoIHN1Yi1tYXRyaXguPC9wPiJ9LCAiQWxnMiAtIE1TRSAxLXRoIHN1Yi1tYXRyaXgiOiB7ImRpc3BsYXlOYW1lIjogIiIsICJkZXNjcmlwdGlvbiI6ICI8cD5BbGdvcml0aG0yIE1TRSh4LCB4X2FwcHJveCkgb2YgdGhlIDEtdGggc3ViLW1hdHJpeC48L3A+In0sICJBbGczIC0gTWVhbiAxLXRoIHN1Yi1tYXRyaXgiOiB7ImRpc3BsYXlOYW1lIjogIiIsICJkZXNjcmlwdGlvbiI6ICI8cD5BbGdvcml0aG0zIE1lYW4oeF9hcHByb3gpIG9mIHRoZSAxLXRoIHN1Yi1tYXRyaXguPC9wPiJ9LCAiQWxnMiAtIE1lYW4gMS10aCBzdWItbWF0cml4IjogeyJkaXNwbGF5TmFtZSI6ICIiLCAiZGVzY3JpcHRpb24iOiAiPHA+QWxnb3JpdGhtMiBNZWFuKHhfYXBwcm94KSBvZiB0aGUgMS10aCBzdWItbWF0cml4LjwvcD4ifSwgIkFsZzIgLSBNZWFuIDAtdGggc3ViLW1hdHJpeCI6IHsiZGlzcGxheU5hbWUiOiAiIiwgImRlc2NyaXB0aW9uIjogIjxwPkFsZ29yaXRobTIgTWVhbih4X2FwcHJveCkgb2YgdGhlIDAtdGggc3ViLW1hdHJpeC48L3A+In0sICJBbGczIC0gTVNFIjogeyJkaXNwbGF5TmFtZSI6ICIiLCAiZGVzY3JpcHRpb24iOiAiPHA+QWxnb3JpdGhtMyBNU0UoeCwgeF9hcHByb3gpLjwvcD4ifSwgIkFsZzMgLSBNU0UgMC10aCBzdWItbWF0cml4IjogeyJkaXNwbGF5TmFtZSI6ICIiLCAiZGVzY3JpcHRpb24iOiAiPHA+QWxnb3JpdGhtMyBNU0UoeCwgeF9hcHByb3gpIG9mIHRoZSAwLXRoIHN1Yi1tYXRyaXguPC9wPiJ9LCAiQWxnMyAtIE1lYW4gT3JpZ2luYWwgMS10aCBzdWItbWF0cml4IjogeyJkaXNwbGF5TmFtZSI6ICIiLCAiZGVzY3JpcHRpb24iOiAiPHA+QWxnb3JpdGhtMyBNZWFuKHgpIG9mIHRoZSAxLXRoIHN1Yi1tYXRyaXguPC9wPiJ9fSwgIm1uaXN0X1I0NV9zY2FsZXIwXzEuMl9zY2FsZXIxXzEuMF9tc2VfVGgxZS0wNV9kYXRlMjAyMTA3MTQtMTE0NjA5IjogeyJBbGczIC0gTWVhbiBPcmlnaW5hbCAxLXRoIHN1Yi1tYXRyaXgiOiB7ImRpc3BsYXlOYW1lIjogIiIsICJkZXNjcmlwdGlvbiI6ICI8cD5BbGdvcml0aG0zIE1lYW4oeCkgb2YgdGhlIDEtdGggc3ViLW1hdHJpeC48L3A+In0sICJBbGczIC0gTWVhbiBPcmlnaW5hbCAwLXRoIHN1Yi1tYXRyaXgiOiB7ImRpc3BsYXlOYW1lIjogIiIsICJkZXNjcmlwdGlvbiI6ICI8cD5BbGdvcml0aG0zIE1lYW4oeCkgb2YgdGhlIDAtdGggc3ViLW1hdHJpeC48L3A+In0sICJBbGcyIC0gTWVhbiAxLXRoIHN1Yi1tYXRyaXgiOiB7ImRpc3BsYXlOYW1lIjogIiIsICJkZXNjcmlwdGlvbiI6ICI8cD5BbGdvcml0aG0yIE1lYW4oeF9hcHByb3gpIG9mIHRoZSAxLXRoIHN1Yi1tYXRyaXguPC9wPiJ9LCAiQWxnMyAtIE1TRSI6IHsiZGlzcGxheU5hbWUiOiAiIiwgImRlc2NyaXB0aW9uIjogIjxwPkFsZ29yaXRobTMgTVNFKHgsIHhfYXBwcm94KS48L3A+In0sICJBbGcyIC0gTVNFIDEtdGggc3ViLW1hdHJpeCI6IHsiZGlzcGxheU5hbWUiOiAiIiwgImRlc2NyaXB0aW9uIjogIjxwPkFsZ29yaXRobTIgTVNFKHgsIHhfYXBwcm94KSBvZiB0aGUgMS10aCBzdWItbWF0cml4LjwvcD4ifSwgIkFsZzMgLSBNZWFuIDEtdGggc3ViLW1hdHJpeCI6IHsiZGlzcGxheU5hbWUiOiAiIiwgImRlc2NyaXB0aW9uIjogIjxwPkFsZ29yaXRobTMgTWVhbih4X2FwcHJveCkgb2YgdGhlIDEtdGggc3ViLW1hdHJpeC48L3A+In0sICJBbGcyIC0gTVNFIDAtdGggc3ViLW1hdHJpeCI6IHsiZGlzcGxheU5hbWUiOiAiIiwgImRlc2NyaXB0aW9uIjogIjxwPkFsZ29yaXRobTIgTVNFKHgsIHhfYXBwcm94KSBvZiB0aGUgMC10aCBzdWItbWF0cml4LjwvcD4ifSwgIkFsZzIgLSBNZWFuIDAtdGggc3ViLW1hdHJpeCI6IHsiZGlzcGxheU5hbWUiOiAiIiwgImRlc2NyaXB0aW9uIjogIjxwPkFsZ29yaXRobTIgTWVhbih4X2FwcHJveCkgb2YgdGhlIDAtdGggc3ViLW1hdHJpeC48L3A+In0sICJBbGczIC0gTWVhbiAwLXRoIHN1Yi1tYXRyaXgiOiB7ImRpc3BsYXlOYW1lIjogIiIsICJkZXNjcmlwdGlvbiI6ICI8cD5BbGdvcml0aG0zIE1lYW4oeF9hcHByb3gpIG9mIHRoZSAwLXRoIHN1Yi1tYXRyaXguPC9wPiJ9LCAiQWxnMyAtIE1TRSAwLXRoIHN1Yi1tYXRyaXgiOiB7ImRpc3BsYXlOYW1lIjogIiIsICJkZXNjcmlwdGlvbiI6ICI8cD5BbGdvcml0aG0zIE1TRSh4LCB4X2FwcHJveCkgb2YgdGhlIDAtdGggc3ViLW1hdHJpeC48L3A+In0sICJBbGczIC0gTVNFIDEtdGggc3ViLW1hdHJpeCI6IHsiZGlzcGxheU5hbWUiOiAiIiwgImRlc2NyaXB0aW9uIjogIjxwPkFsZ29yaXRobTMgTVNFKHgsIHhfYXBwcm94KSBvZiB0aGUgMS10aCBzdWItbWF0cml4LjwvcD4ifX0sICJtbmlzdF80YmxvY2tzX1I0NV9zY2FsZXIwXzEuMF9zY2FsZXIxXzEuMF9tc2VfVGgxZS0wNV9kYXRlMjAyMTA3MTMtMTc0MTQ1IjogeyJBbGcyIC0gTVNFIDAtdGggc3ViLW1hdHJpeCI6IHsiZGlzcGxheU5hbWUiOiAiIiwgImRlc2NyaXB0aW9uIjogIjxwPkFsZ29yaXRobTIgTVNFKHgsIHhfYXBwcm94KSBvZiB0aGUgMC10aCBzdWItbWF0cml4LjwvcD4ifSwgIkFsZzMgLSBNU0UgMC10aCBzdWItbWF0cml4IjogeyJkaXNwbGF5TmFtZSI6ICIiLCAiZGVzY3JpcHRpb24iOiAiPHA+QWxnb3JpdGhtMyBNU0UoeCwgeF9hcHByb3gpIG9mIHRoZSAwLXRoIHN1Yi1tYXRyaXguPC9wPiJ9LCAiQWxnMyAtIE1lYW4gT3JpZ2luYWwgMy10aCBzdWItbWF0cml4IjogeyJkaXNwbGF5TmFtZSI6ICIiLCAiZGVzY3JpcHRpb24iOiAiPHA+QWxnb3JpdGhtMyBNZWFuKHgpIG9mIHRoZSAzLXRoIHN1Yi1tYXRyaXguPC9wPiJ9LCAiQWxnMyAtIE1TRSAzLXRoIHN1Yi1tYXRyaXgiOiB7ImRpc3BsYXlOYW1lIjogIiIsICJkZXNjcmlwdGlvbiI6ICI8cD5BbGdvcml0aG0zIE1TRSh4LCB4X2FwcHJveCkgb2YgdGhlIDMtdGggc3ViLW1hdHJpeC48L3A+In0sICJBbGczIC0gTVNFIDEtdGggc3ViLW1hdHJpeCI6IHsiZGlzcGxheU5hbWUiOiAiIiwgImRlc2NyaXB0aW9uIjogIjxwPkFsZ29yaXRobTMgTVNFKHgsIHhfYXBwcm94KSBvZiB0aGUgMS10aCBzdWItbWF0cml4LjwvcD4ifSwgIkFsZzMgLSBNU0UgMi10aCBzdWItbWF0cml4IjogeyJkaXNwbGF5TmFtZSI6ICIiLCAiZGVzY3JpcHRpb24iOiAiPHA+QWxnb3JpdGhtMyBNU0UoeCwgeF9hcHByb3gpIG9mIHRoZSAyLXRoIHN1Yi1tYXRyaXguPC9wPiJ9LCAiQWxnMiAtIE1lYW4gMi10aCBzdWItbWF0cml4IjogeyJkaXNwbGF5TmFtZSI6ICIiLCAiZGVzY3JpcHRpb24iOiAiPHA+QWxnb3JpdGhtMiBNZWFuKHhfYXBwcm94KSBvZiB0aGUgMi10aCBzdWItbWF0cml4LjwvcD4ifSwgIkFsZzIgLSBNZWFuIDMtdGggc3ViLW1hdHJpeCI6IHsiZGlzcGxheU5hbWUiOiAiIiwgImRlc2NyaXB0aW9uIjogIjxwPkFsZ29yaXRobTIgTWVhbih4X2FwcHJveCkgb2YgdGhlIDMtdGggc3ViLW1hdHJpeC48L3A+In0sICJBbGczIC0gTWVhbiAxLXRoIHN1Yi1tYXRyaXgiOiB7ImRpc3BsYXlOYW1lIjogIiIsICJkZXNjcmlwdGlvbiI6ICI8cD5BbGdvcml0aG0zIE1lYW4oeF9hcHByb3gpIG9mIHRoZSAxLXRoIHN1Yi1tYXRyaXguPC9wPiJ9LCAiQWxnMiAtIE1lYW4gMC10aCBzdWItbWF0cml4IjogeyJkaXNwbGF5TmFtZSI6ICIiLCAiZGVzY3JpcHRpb24iOiAiPHA+QWxnb3JpdGhtMiBNZWFuKHhfYXBwcm94KSBvZiB0aGUgMC10aCBzdWItbWF0cml4LjwvcD4ifSwgIkFsZzMgLSBNU0UiOiB7ImRpc3BsYXlOYW1lIjogIiIsICJkZXNjcmlwdGlvbiI6ICI8cD5BbGdvcml0aG0zIE1TRSh4LCB4X2FwcHJveCkuPC9wPiJ9LCAiQWxnMiAtIE1TRSAzLXRoIHN1Yi1tYXRyaXgiOiB7ImRpc3BsYXlOYW1lIjogIiIsICJkZXNjcmlwdGlvbiI6ICI8cD5BbGdvcml0aG0yIE1TRSh4LCB4X2FwcHJveCkgb2YgdGhlIDMtdGggc3ViLW1hdHJpeC48L3A+In0sICJBbGcyIC0gTVNFIDItdGggc3ViLW1hdHJpeCI6IHsiZGlzcGxheU5hbWUiOiAiIiwgImRlc2NyaXB0aW9uIjogIjxwPkFsZ29yaXRobTIgTVNFKHgsIHhfYXBwcm94KSBvZiB0aGUgMi10aCBzdWItbWF0cml4LjwvcD4ifSwgIkFsZzMgLSBNZWFuIE9yaWdpbmFsIDAtdGggc3ViLW1hdHJpeCI6IHsiZGlzcGxheU5hbWUiOiAiIiwgImRlc2NyaXB0aW9uIjogIjxwPkFsZ29yaXRobTMgTWVhbih4KSBvZiB0aGUgMC10aCBzdWItbWF0cml4LjwvcD4ifSwgIkFsZzIgLSBNZWFuIDEtdGggc3ViLW1hdHJpeCI6IHsiZGlzcGxheU5hbWUiOiAiIiwgImRlc2NyaXB0aW9uIjogIjxwPkFsZ29yaXRobTIgTWVhbih4X2FwcHJveCkgb2YgdGhlIDEtdGggc3ViLW1hdHJpeC48L3A+In0sICJBbGczIC0gTWVhbiAyLXRoIHN1Yi1tYXRyaXgiOiB7ImRpc3BsYXlOYW1lIjogIiIsICJkZXNjcmlwdGlvbiI6ICI8cD5BbGdvcml0aG0zIE1lYW4oeF9hcHByb3gpIG9mIHRoZSAyLXRoIHN1Yi1tYXRyaXguPC9wPiJ9LCAiQWxnMyAtIE1lYW4gT3JpZ2luYWwgMi10aCBzdWItbWF0cml4IjogeyJkaXNwbGF5TmFtZSI6ICIiLCAiZGVzY3JpcHRpb24iOiAiPHA+QWxnb3JpdGhtMyBNZWFuKHgpIG9mIHRoZSAyLXRoIHN1Yi1tYXRyaXguPC9wPiJ9LCAiQWxnMyAtIE1lYW4gT3JpZ2luYWwgMS10aCBzdWItbWF0cml4IjogeyJkaXNwbGF5TmFtZSI6ICIiLCAiZGVzY3JpcHRpb24iOiAiPHA+QWxnb3JpdGhtMyBNZWFuKHgpIG9mIHRoZSAxLXRoIHN1Yi1tYXRyaXguPC9wPiJ9LCAiQWxnMyAtIE1lYW4gMy10aCBzdWItbWF0cml4IjogeyJkaXNwbGF5TmFtZSI6ICIiLCAiZGVzY3JpcHRpb24iOiAiPHA+QWxnb3JpdGhtMyBNZWFuKHhfYXBwcm94KSBvZiB0aGUgMy10aCBzdWItbWF0cml4LjwvcD4ifSwgIkFsZzMgLSBNZWFuIDAtdGggc3ViLW1hdHJpeCI6IHsiZGlzcGxheU5hbWUiOiAiIiwgImRlc2NyaXB0aW9uIjogIjxwPkFsZ29yaXRobTMgTWVhbih4X2FwcHJveCkgb2YgdGhlIDAtdGggc3ViLW1hdHJpeC48L3A+In0sICJBbGcyIC0gTVNFIDEtdGggc3ViLW1hdHJpeCI6IHsiZGlzcGxheU5hbWUiOiAiIiwgImRlc2NyaXB0aW9uIjogIjxwPkFsZ29yaXRobTIgTVNFKHgsIHhfYXBwcm94KSBvZiB0aGUgMS10aCBzdWItbWF0cml4LjwvcD4ifX0sICJtbmlzdF9SMTZfc2NhbGVyMF84LjBfc2NhbGVyMV84LjBfbXNlX1RoMWUtMDVfZGF0ZTIwMjEwNzEzLTEzMTAzMCI6IHsiQWxnMyAtIE1lYW4gMS10aCBzdWItbWF0cml4IjogeyJkaXNwbGF5TmFtZSI6ICIiLCAiZGVzY3JpcHRpb24iOiAiPHA+QWxnb3JpdGhtMyBNZWFuKHhfYXBwcm94KSBvZiB0aGUgMS10aCBzdWItbWF0cml4LjwvcD4ifSwgIkFsZzMgLSBNU0UiOiB7ImRpc3BsYXlOYW1lIjogIiIsICJkZXNjcmlwdGlvbiI6ICI8cD5BbGdvcml0aG0zIE1TRSh4LCB4X2FwcHJveCkuPC9wPiJ9LCAiQWxnMyAtIE1TRSAxLXRoIHN1Yi1tYXRyaXgiOiB7ImRpc3BsYXlOYW1lIjogIiIsICJkZXNjcmlwdGlvbiI6ICI8cD5BbGdvcml0aG0zIE1TRSh4LCB4X2FwcHJveCkgb2YgdGhlIDEtdGggc3ViLW1hdHJpeC48L3A+In0sICJBbGczIC0gTWVhbiBPcmlnaW5hbCAxLXRoIHN1Yi1tYXRyaXgiOiB7ImRpc3BsYXlOYW1lIjogIiIsICJkZXNjcmlwdGlvbiI6ICI8cD5BbGdvcml0aG0zIE1lYW4oeCkgb2YgdGhlIDEtdGggc3ViLW1hdHJpeC48L3A+In0sICJBbGcyIC0gTVNFIDAtdGggc3ViLW1hdHJpeCI6IHsiZGlzcGxheU5hbWUiOiAiIiwgImRlc2NyaXB0aW9uIjogIjxwPkFsZ29yaXRobTIgTVNFKHgsIHhfYXBwcm94KSBvZiB0aGUgMC10aCBzdWItbWF0cml4LjwvcD4ifSwgIkFsZzIgLSBNZWFuIDEtdGggc3ViLW1hdHJpeCI6IHsiZGlzcGxheU5hbWUiOiAiIiwgImRlc2NyaXB0aW9uIjogIjxwPkFsZ29yaXRobTIgTWVhbih4X2FwcHJveCkgb2YgdGhlIDEtdGggc3ViLW1hdHJpeC48L3A+In0sICJBbGczIC0gTWVhbiAwLXRoIHN1Yi1tYXRyaXgiOiB7ImRpc3BsYXlOYW1lIjogIiIsICJkZXNjcmlwdGlvbiI6ICI8cD5BbGdvcml0aG0zIE1lYW4oeF9hcHByb3gpIG9mIHRoZSAwLXRoIHN1Yi1tYXRyaXguPC9wPiJ9LCAiQWxnMyAtIE1lYW4gT3JpZ2luYWwgMC10aCBzdWItbWF0cml4IjogeyJkaXNwbGF5TmFtZSI6ICIiLCAiZGVzY3JpcHRpb24iOiAiPHA+QWxnb3JpdGhtMyBNZWFuKHgpIG9mIHRoZSAwLXRoIHN1Yi1tYXRyaXguPC9wPiJ9LCAiQWxnMyAtIE1TRSAwLXRoIHN1Yi1tYXRyaXgiOiB7ImRpc3BsYXlOYW1lIjogIiIsICJkZXNjcmlwdGlvbiI6ICI8cD5BbGdvcml0aG0zIE1TRSh4LCB4X2FwcHJveCkgb2YgdGhlIDAtdGggc3ViLW1hdHJpeC48L3A+In0sICJBbGcyIC0gTVNFIDEtdGggc3ViLW1hdHJpeCI6IHsiZGlzcGxheU5hbWUiOiAiIiwgImRlc2NyaXB0aW9uIjogIjxwPkFsZ29yaXRobTIgTVNFKHgsIHhfYXBwcm94KSBvZiB0aGUgMS10aCBzdWItbWF0cml4LjwvcD4ifSwgIkFsZzIgLSBNZWFuIDAtdGggc3ViLW1hdHJpeCI6IHsiZGlzcGxheU5hbWUiOiAiIiwgImRlc2NyaXB0aW9uIjogIjxwPkFsZ29yaXRobTIgTWVhbih4X2FwcHJveCkgb2YgdGhlIDAtdGggc3ViLW1hdHJpeC48L3A+In19LCAibW5pc3RfUjhfc2NhbGVyMF8xNi4wX3NjYWxlcjFfMS4wX21zZV9UaDFlLTA1X2RhdGUyMDIxMDcxMy0xMzA4NDciOiB7IkFsZzMgLSBNU0UiOiB7ImRpc3BsYXlOYW1lIjogIiIsICJkZXNjcmlwdGlvbiI6ICI8cD5BbGdvcml0aG0zIE1TRSh4LCB4X2FwcHJveCkuPC9wPiJ9LCAiQWxnMyAtIE1TRSAxLXRoIHN1Yi1tYXRyaXgiOiB7ImRpc3BsYXlOYW1lIjogIiIsICJkZXNjcmlwdGlvbiI6ICI8cD5BbGdvcml0aG0zIE1TRSh4LCB4X2FwcHJveCkgb2YgdGhlIDEtdGggc3ViLW1hdHJpeC48L3A+In0sICJBbGczIC0gTWVhbiBPcmlnaW5hbCAwLXRoIHN1Yi1tYXRyaXgiOiB7ImRpc3BsYXlOYW1lIjogIiIsICJkZXNjcmlwdGlvbiI6ICI8cD5BbGdvcml0aG0zIE1lYW4oeCkgb2YgdGhlIDAtdGggc3ViLW1hdHJpeC48L3A+In0sICJBbGczIC0gTWVhbiAwLXRoIHN1Yi1tYXRyaXgiOiB7ImRpc3BsYXlOYW1lIjogIiIsICJkZXNjcmlwdGlvbiI6ICI8cD5BbGdvcml0aG0zIE1lYW4oeF9hcHByb3gpIG9mIHRoZSAwLXRoIHN1Yi1tYXRyaXguPC9wPiJ9LCAiQWxnMiAtIE1TRSAxLXRoIHN1Yi1tYXRyaXgiOiB7ImRpc3BsYXlOYW1lIjogIiIsICJkZXNjcmlwdGlvbiI6ICI8cD5BbGdvcml0aG0yIE1TRSh4LCB4X2FwcHJveCkgb2YgdGhlIDEtdGggc3ViLW1hdHJpeC48L3A+In0sICJBbGczIC0gTWVhbiBPcmlnaW5hbCAxLXRoIHN1Yi1tYXRyaXgiOiB7ImRpc3BsYXlOYW1lIjogIiIsICJkZXNjcmlwdGlvbiI6ICI8cD5BbGdvcml0aG0zIE1lYW4oeCkgb2YgdGhlIDEtdGggc3ViLW1hdHJpeC48L3A+In0sICJBbGcyIC0gTWVhbiAxLXRoIHN1Yi1tYXRyaXgiOiB7ImRpc3BsYXlOYW1lIjogIiIsICJkZXNjcmlwdGlvbiI6ICI8cD5BbGdvcml0aG0yIE1lYW4oeF9hcHByb3gpIG9mIHRoZSAxLXRoIHN1Yi1tYXRyaXguPC9wPiJ9LCAiQWxnMyAtIE1lYW4gMS10aCBzdWItbWF0cml4IjogeyJkaXNwbGF5TmFtZSI6ICIiLCAiZGVzY3JpcHRpb24iOiAiPHA+QWxnb3JpdGhtMyBNZWFuKHhfYXBwcm94KSBvZiB0aGUgMS10aCBzdWItbWF0cml4LjwvcD4ifSwgIkFsZzIgLSBNZWFuIDAtdGggc3ViLW1hdHJpeCI6IHsiZGlzcGxheU5hbWUiOiAiIiwgImRlc2NyaXB0aW9uIjogIjxwPkFsZ29yaXRobTIgTWVhbih4X2FwcHJveCkgb2YgdGhlIDAtdGggc3ViLW1hdHJpeC48L3A+In0sICJBbGczIC0gTVNFIDAtdGggc3ViLW1hdHJpeCI6IHsiZGlzcGxheU5hbWUiOiAiIiwgImRlc2NyaXB0aW9uIjogIjxwPkFsZ29yaXRobTMgTVNFKHgsIHhfYXBwcm94KSBvZiB0aGUgMC10aCBzdWItbWF0cml4LjwvcD4ifSwgIkFsZzIgLSBNU0UgMC10aCBzdWItbWF0cml4IjogeyJkaXNwbGF5TmFtZSI6ICIiLCAiZGVzY3JpcHRpb24iOiAiPHA+QWxnb3JpdGhtMiBNU0UoeCwgeF9hcHByb3gpIG9mIHRoZSAwLXRoIHN1Yi1tYXRyaXguPC9wPiJ9fSwgIm1uaXN0X1I0NV9zY2FsZXIwXzEuMF9zY2FsZXIxXzEuMF9tc2VfVGgxZS0wNV9kYXRlMjAyMTA3MTMtMTMwMDUxIjogeyJBbGcyIC0gTWVhbiAxLXRoIHN1Yi1tYXRyaXgiOiB7ImRpc3BsYXlOYW1lIjogIiIsICJkZXNjcmlwdGlvbiI6ICI8cD5BbGdvcml0aG0yIE1lYW4oeF9hcHByb3gpIG9mIHRoZSAxLXRoIHN1Yi1tYXRyaXguPC9wPiJ9LCAiQWxnMiAtIE1TRSAxLXRoIHN1Yi1tYXRyaXgiOiB7ImRpc3BsYXlOYW1lIjogIiIsICJkZXNjcmlwdGlvbiI6ICI8cD5BbGdvcml0aG0yIE1TRSh4LCB4X2FwcHJveCkgb2YgdGhlIDEtdGggc3ViLW1hdHJpeC48L3A+In0sICJBbGczIC0gTWVhbiBPcmlnaW5hbCAxLXRoIHN1Yi1tYXRyaXgiOiB7ImRpc3BsYXlOYW1lIjogIiIsICJkZXNjcmlwdGlvbiI6ICI8cD5BbGdvcml0aG0zIE1lYW4oeCkgb2YgdGhlIDEtdGggc3ViLW1hdHJpeC48L3A+In0sICJBbGczIC0gTWVhbiBPcmlnaW5hbCAwLXRoIHN1Yi1tYXRyaXgiOiB7ImRpc3BsYXlOYW1lIjogIiIsICJkZXNjcmlwdGlvbiI6ICI8cD5BbGdvcml0aG0zIE1lYW4oeCkgb2YgdGhlIDAtdGggc3ViLW1hdHJpeC48L3A+In0sICJBbGczIC0gTWVhbiAwLXRoIHN1Yi1tYXRyaXgiOiB7ImRpc3BsYXlOYW1lIjogIiIsICJkZXNjcmlwdGlvbiI6ICI8cD5BbGdvcml0aG0zIE1lYW4oeF9hcHByb3gpIG9mIHRoZSAwLXRoIHN1Yi1tYXRyaXguPC9wPiJ9LCAiQWxnMyAtIE1TRSAxLXRoIHN1Yi1tYXRyaXgiOiB7ImRpc3BsYXlOYW1lIjogIiIsICJkZXNjcmlwdGlvbiI6ICI8cD5BbGdvcml0aG0zIE1TRSh4LCB4X2FwcHJveCkgb2YgdGhlIDEtdGggc3ViLW1hdHJpeC48L3A+In0sICJBbGczIC0gTVNFIjogeyJkaXNwbGF5TmFtZSI6ICIiLCAiZGVzY3JpcHRpb24iOiAiPHA+QWxnb3JpdGhtMyBNU0UoeCwgeF9hcHByb3gpLjwvcD4ifSwgIkFsZzIgLSBNZWFuIDAtdGggc3ViLW1hdHJpeCI6IHsiZGlzcGxheU5hbWUiOiAiIiwgImRlc2NyaXB0aW9uIjogIjxwPkFsZ29yaXRobTIgTWVhbih4X2FwcHJveCkgb2YgdGhlIDAtdGggc3ViLW1hdHJpeC48L3A+In0sICJBbGczIC0gTWVhbiAxLXRoIHN1Yi1tYXRyaXgiOiB7ImRpc3BsYXlOYW1lIjogIiIsICJkZXNjcmlwdGlvbiI6ICI8cD5BbGdvcml0aG0zIE1lYW4oeF9hcHByb3gpIG9mIHRoZSAxLXRoIHN1Yi1tYXRyaXguPC9wPiJ9LCAiQWxnMyAtIE1TRSAwLXRoIHN1Yi1tYXRyaXgiOiB7ImRpc3BsYXlOYW1lIjogIiIsICJkZXNjcmlwdGlvbiI6ICI8cD5BbGdvcml0aG0zIE1TRSh4LCB4X2FwcHJveCkgb2YgdGhlIDAtdGggc3ViLW1hdHJpeC48L3A+In0sICJBbGcyIC0gTVNFIDAtdGggc3ViLW1hdHJpeCI6IHsiZGlzcGxheU5hbWUiOiAiIiwgImRlc2NyaXB0aW9uIjogIjxwPkFsZ29yaXRobTIgTVNFKHgsIHhfYXBwcm94KSBvZiB0aGUgMC10aCBzdWItbWF0cml4LjwvcD4ifX0sICJtbmlzdF9SNDVfc2NhbGVyMF8xLjBfc2NhbGVyMV8xLjBfbXNlX1RoMWUtMDVfZGF0ZTIwMjEwNzEzLTEyNTYwOCI6IHsiQWxnMiAtIE1TRSAwLXRoIHN1Yi1tYXRyaXgiOiB7ImRpc3BsYXlOYW1lIjogIiIsICJkZXNjcmlwdGlvbiI6ICI8cD5BbGdvcml0aG0yIE1TRSh4LCB4X2FwcHJveCkgb2YgdGhlIDAtdGggc3ViLW1hdHJpeC48L3A+In0sICJBbGczIC0gTVNFIDAtdGggc3ViLW1hdHJpeCI6IHsiZGlzcGxheU5hbWUiOiAiIiwgImRlc2NyaXB0aW9uIjogIjxwPkFsZ29yaXRobTMgTVNFKHgsIHhfYXBwcm94KSBvZiB0aGUgMC10aCBzdWItbWF0cml4LjwvcD4ifSwgIkFsZzMgLSBNU0UiOiB7ImRpc3BsYXlOYW1lIjogIiIsICJkZXNjcmlwdGlvbiI6ICI8cD5BbGdvcml0aG0zIE1TRSh4LCB4X2FwcHJveCkuPC9wPiJ9LCAiQWxnMyAtIE1TRSAxLXRoIHN1Yi1tYXRyaXgiOiB7ImRpc3BsYXlOYW1lIjogIiIsICJkZXNjcmlwdGlvbiI6ICI8cD5BbGdvcml0aG0zIE1TRSh4LCB4X2FwcHJveCkgb2YgdGhlIDEtdGggc3ViLW1hdHJpeC48L3A+In0sICJBbGcyIC0gTWVhbiAxLXRoIHN1Yi1tYXRyaXgiOiB7ImRpc3BsYXlOYW1lIjogIiIsICJkZXNjcmlwdGlvbiI6ICI8cD5BbGdvcml0aG0yIE1lYW4oeF9hcHByb3gpIG9mIHRoZSAxLXRoIHN1Yi1tYXRyaXguPC9wPiJ9LCAiQWxnMiAtIE1lYW4gMC10aCBzdWItbWF0cml4IjogeyJkaXNwbGF5TmFtZSI6ICIiLCAiZGVzY3JpcHRpb24iOiAiPHA+QWxnb3JpdGhtMiBNZWFuKHhfYXBwcm94KSBvZiB0aGUgMC10aCBzdWItbWF0cml4LjwvcD4ifSwgIkFsZzIgLSBNU0UgMS10aCBzdWItbWF0cml4IjogeyJkaXNwbGF5TmFtZSI6ICIiLCAiZGVzY3JpcHRpb24iOiAiPHA+QWxnb3JpdGhtMiBNU0UoeCwgeF9hcHByb3gpIG9mIHRoZSAxLXRoIHN1Yi1tYXRyaXguPC9wPiJ9fSwgIm1uaXN0X1I0NV9zY2FsZXIwXzYuMF9zY2FsZXIxXzEuMF9tc2VfVGgxZS0wNV9kYXRlMjAyMTA3MTQtMTExNzQzIjogeyJBbGcyIC0gTVNFIDEtdGggc3ViLW1hdHJpeCI6IHsiZGlzcGxheU5hbWUiOiAiIiwgImRlc2NyaXB0aW9uIjogIjxwPkFsZ29yaXRobTIgTVNFKHgsIHhfYXBwcm94KSBvZiB0aGUgMS10aCBzdWItbWF0cml4LjwvcD4ifSwgIkFsZzMgLSBNZWFuIE9yaWdpbmFsIDEtdGggc3ViLW1hdHJpeCI6IHsiZGlzcGxheU5hbWUiOiAiIiwgImRlc2NyaXB0aW9uIjogIjxwPkFsZ29yaXRobTMgTWVhbih4KSBvZiB0aGUgMS10aCBzdWItbWF0cml4LjwvcD4ifSwgIkFsZzMgLSBNU0UgMS10aCBzdWItbWF0cml4IjogeyJkaXNwbGF5TmFtZSI6ICIiLCAiZGVzY3JpcHRpb24iOiAiPHA+QWxnb3JpdGhtMyBNU0UoeCwgeF9hcHByb3gpIG9mIHRoZSAxLXRoIHN1Yi1tYXRyaXguPC9wPiJ9LCAiQWxnMiAtIE1TRSAwLXRoIHN1Yi1tYXRyaXgiOiB7ImRpc3BsYXlOYW1lIjogIiIsICJkZXNjcmlwdGlvbiI6ICI8cD5BbGdvcml0aG0yIE1TRSh4LCB4X2FwcHJveCkgb2YgdGhlIDAtdGggc3ViLW1hdHJpeC48L3A+In0sICJBbGczIC0gTVNFIjogeyJkaXNwbGF5TmFtZSI6ICIiLCAiZGVzY3JpcHRpb24iOiAiPHA+QWxnb3JpdGhtMyBNU0UoeCwgeF9hcHByb3gpLjwvcD4ifSwgIkFsZzMgLSBNZWFuIE9yaWdpbmFsIDAtdGggc3ViLW1hdHJpeCI6IHsiZGlzcGxheU5hbWUiOiAiIiwgImRlc2NyaXB0aW9uIjogIjxwPkFsZ29yaXRobTMgTWVhbih4KSBvZiB0aGUgMC10aCBzdWItbWF0cml4LjwvcD4ifSwgIkFsZzMgLSBNU0UgMC10aCBzdWItbWF0cml4IjogeyJkaXNwbGF5TmFtZSI6ICIiLCAiZGVzY3JpcHRpb24iOiAiPHA+QWxnb3JpdGhtMyBNU0UoeCwgeF9hcHByb3gpIG9mIHRoZSAwLXRoIHN1Yi1tYXRyaXguPC9wPiJ9LCAiQWxnMyAtIE1lYW4gMC10aCBzdWItbWF0cml4IjogeyJkaXNwbGF5TmFtZSI6ICIiLCAiZGVzY3JpcHRpb24iOiAiPHA+QWxnb3JpdGhtMyBNZWFuKHhfYXBwcm94KSBvZiB0aGUgMC10aCBzdWItbWF0cml4LjwvcD4ifSwgIkFsZzMgLSBNZWFuIDEtdGggc3ViLW1hdHJpeCI6IHsiZGlzcGxheU5hbWUiOiAiIiwgImRlc2NyaXB0aW9uIjogIjxwPkFsZ29yaXRobTMgTWVhbih4X2FwcHJveCkgb2YgdGhlIDEtdGggc3ViLW1hdHJpeC48L3A+In0sICJBbGcyIC0gTWVhbiAwLXRoIHN1Yi1tYXRyaXgiOiB7ImRpc3BsYXlOYW1lIjogIiIsICJkZXNjcmlwdGlvbiI6ICI8cD5BbGdvcml0aG0yIE1lYW4oeF9hcHByb3gpIG9mIHRoZSAwLXRoIHN1Yi1tYXRyaXguPC9wPiJ9LCAiQWxnMiAtIE1lYW4gMS10aCBzdWItbWF0cml4IjogeyJkaXNwbGF5TmFtZSI6ICIiLCAiZGVzY3JpcHRpb24iOiAiPHA+QWxnb3JpdGhtMiBNZWFuKHhfYXBwcm94KSBvZiB0aGUgMS10aCBzdWItbWF0cml4LjwvcD4ifX0sICJtbmlzdF9SNDVfc2NhbGVyMF8xLjBfc2NhbGVyMV8yLjBfbXNlX1RoMWUtMDVfZGF0ZTIwMjEwNzIwLTE2MjI1MSI6IHsiQWxnMyAtIE1TRSAxLXRoIHN1Yi1tYXRyaXgiOiB7ImRpc3BsYXlOYW1lIjogIiIsICJkZXNjcmlwdGlvbiI6ICI8cD5BbGdvcml0aG0zIE1TRSh4LCB4X2FwcHJveCkgb2YgdGhlIDEtdGggc3ViLW1hdHJpeC48L3A+In0sICJBbGczIC0gTWVhbiBPcmlnaW5hbCAwLXRoIHN1Yi1tYXRyaXgiOiB7ImRpc3BsYXlOYW1lIjogIiIsICJkZXNjcmlwdGlvbiI6ICI8cD5BbGdvcml0aG0zIE1lYW4oeCkgb2YgdGhlIDAtdGggc3ViLW1hdHJpeC48L3A+In0sICJBbGczIC0gTWVhbiBPcmlnaW5hbCAxLXRoIHN1Yi1tYXRyaXgiOiB7ImRpc3BsYXlOYW1lIjogIiIsICJkZXNjcmlwdGlvbiI6ICI8cD5BbGdvcml0aG0zIE1lYW4oeCkgb2YgdGhlIDEtdGggc3ViLW1hdHJpeC48L3A+In0sICJBbGczIC0gTWVhbiAwLXRoIHN1Yi1tYXRyaXgiOiB7ImRpc3BsYXlOYW1lIjogIiIsICJkZXNjcmlwdGlvbiI6ICI8cD5BbGdvcml0aG0zIE1lYW4oeF9hcHByb3gpIG9mIHRoZSAwLXRoIHN1Yi1tYXRyaXguPC9wPiJ9LCAiQWxnMiAtIE1TRSAwLXRoIHN1Yi1tYXRyaXgiOiB7ImRpc3BsYXlOYW1lIjogIiIsICJkZXNjcmlwdGlvbiI6ICI8cD5BbGdvcml0aG0yIE1TRSh4LCB4X2FwcHJveCkgb2YgdGhlIDAtdGggc3ViLW1hdHJpeC48L3A+In0sICJBbGcyIC0gTWVhbiAxLXRoIHN1Yi1tYXRyaXgiOiB7ImRpc3BsYXlOYW1lIjogIiIsICJkZXNjcmlwdGlvbiI6ICI8cD5BbGdvcml0aG0yIE1lYW4oeF9hcHByb3gpIG9mIHRoZSAxLXRoIHN1Yi1tYXRyaXguPC9wPiJ9LCAiQWxnMiAtIE1TRSAxLXRoIHN1Yi1tYXRyaXgiOiB7ImRpc3BsYXlOYW1lIjogIiIsICJkZXNjcmlwdGlvbiI6ICI8cD5BbGdvcml0aG0yIE1TRSh4LCB4X2FwcHJveCkgb2YgdGhlIDEtdGggc3ViLW1hdHJpeC48L3A+In0sICJBbGczIC0gTVNFIjogeyJkaXNwbGF5TmFtZSI6ICIiLCAiZGVzY3JpcHRpb24iOiAiPHA+QWxnb3JpdGhtMyBNU0UoeCwgeF9hcHByb3gpLjwvcD4ifSwgIkFsZzIgLSBNZWFuIDAtdGggc3ViLW1hdHJpeCI6IHsiZGlzcGxheU5hbWUiOiAiIiwgImRlc2NyaXB0aW9uIjogIjxwPkFsZ29yaXRobTIgTWVhbih4X2FwcHJveCkgb2YgdGhlIDAtdGggc3ViLW1hdHJpeC48L3A+In0sICJBbGczIC0gTVNFIDAtdGggc3ViLW1hdHJpeCI6IHsiZGlzcGxheU5hbWUiOiAiIiwgImRlc2NyaXB0aW9uIjogIjxwPkFsZ29yaXRobTMgTVNFKHgsIHhfYXBwcm94KSBvZiB0aGUgMC10aCBzdWItbWF0cml4LjwvcD4ifSwgIkFsZzMgLSBNZWFuIDEtdGggc3ViLW1hdHJpeCI6IHsiZGlzcGxheU5hbWUiOiAiIiwgImRlc2NyaXB0aW9uIjogIjxwPkFsZ29yaXRobTMgTWVhbih4X2FwcHJveCkgb2YgdGhlIDEtdGggc3ViLW1hdHJpeC48L3A+In19LCAibW5pc3RfNGJsb2Nrc19SNjRfc2NhbGVyMF8xLjBfc2NhbGVyMV8xLjBfbXNlX1RoMWUtMDVfZGF0ZTIwMjEwNzEzLTE3NDQyNyI6IHsiQWxnMiAtIE1TRSAzLXRoIHN1Yi1tYXRyaXgiOiB7ImRpc3BsYXlOYW1lIjogIiIsICJkZXNjcmlwdGlvbiI6ICI8cD5BbGdvcml0aG0yIE1TRSh4LCB4X2FwcHJveCkgb2YgdGhlIDMtdGggc3ViLW1hdHJpeC48L3A+In0sICJBbGczIC0gTWVhbiBPcmlnaW5hbCAyLXRoIHN1Yi1tYXRyaXgiOiB7ImRpc3BsYXlOYW1lIjogIiIsICJkZXNjcmlwdGlvbiI6ICI8cD5BbGdvcml0aG0zIE1lYW4oeCkgb2YgdGhlIDItdGggc3ViLW1hdHJpeC48L3A+In0sICJBbGcyIC0gTVNFIDAtdGggc3ViLW1hdHJpeCI6IHsiZGlzcGxheU5hbWUiOiAiIiwgImRlc2NyaXB0aW9uIjogIjxwPkFsZ29yaXRobTIgTVNFKHgsIHhfYXBwcm94KSBvZiB0aGUgMC10aCBzdWItbWF0cml4LjwvcD4ifSwgIkFsZzMgLSBNU0UgMS10aCBzdWItbWF0cml4IjogeyJkaXNwbGF5TmFtZSI6ICIiLCAiZGVzY3JpcHRpb24iOiAiPHA+QWxnb3JpdGhtMyBNU0UoeCwgeF9hcHByb3gpIG9mIHRoZSAxLXRoIHN1Yi1tYXRyaXguPC9wPiJ9LCAiQWxnMiAtIE1TRSAyLXRoIHN1Yi1tYXRyaXgiOiB7ImRpc3BsYXlOYW1lIjogIiIsICJkZXNjcmlwdGlvbiI6ICI8cD5BbGdvcml0aG0yIE1TRSh4LCB4X2FwcHJveCkgb2YgdGhlIDItdGggc3ViLW1hdHJpeC48L3A+In0sICJBbGczIC0gTWVhbiAyLXRoIHN1Yi1tYXRyaXgiOiB7ImRpc3BsYXlOYW1lIjogIiIsICJkZXNjcmlwdGlvbiI6ICI8cD5BbGdvcml0aG0zIE1lYW4oeF9hcHByb3gpIG9mIHRoZSAyLXRoIHN1Yi1tYXRyaXguPC9wPiJ9LCAiQWxnMyAtIE1lYW4gT3JpZ2luYWwgMC10aCBzdWItbWF0cml4IjogeyJkaXNwbGF5TmFtZSI6ICIiLCAiZGVzY3JpcHRpb24iOiAiPHA+QWxnb3JpdGhtMyBNZWFuKHgpIG9mIHRoZSAwLXRoIHN1Yi1tYXRyaXguPC9wPiJ9LCAiQWxnMiAtIE1lYW4gMS10aCBzdWItbWF0cml4IjogeyJkaXNwbGF5TmFtZSI6ICIiLCAiZGVzY3JpcHRpb24iOiAiPHA+QWxnb3JpdGhtMiBNZWFuKHhfYXBwcm94KSBvZiB0aGUgMS10aCBzdWItbWF0cml4LjwvcD4ifSwgIkFsZzIgLSBNZWFuIDAtdGggc3ViLW1hdHJpeCI6IHsiZGlzcGxheU5hbWUiOiAiIiwgImRlc2NyaXB0aW9uIjogIjxwPkFsZ29yaXRobTIgTWVhbih4X2FwcHJveCkgb2YgdGhlIDAtdGggc3ViLW1hdHJpeC48L3A+In0sICJBbGczIC0gTWVhbiAxLXRoIHN1Yi1tYXRyaXgiOiB7ImRpc3BsYXlOYW1lIjogIiIsICJkZXNjcmlwdGlvbiI6ICI8cD5BbGdvcml0aG0zIE1lYW4oeF9hcHByb3gpIG9mIHRoZSAxLXRoIHN1Yi1tYXRyaXguPC9wPiJ9LCAiQWxnMyAtIE1TRSAyLXRoIHN1Yi1tYXRyaXgiOiB7ImRpc3BsYXlOYW1lIjogIiIsICJkZXNjcmlwdGlvbiI6ICI8cD5BbGdvcml0aG0zIE1TRSh4LCB4X2FwcHJveCkgb2YgdGhlIDItdGggc3ViLW1hdHJpeC48L3A+In0sICJBbGczIC0gTWVhbiBPcmlnaW5hbCAzLXRoIHN1Yi1tYXRyaXgiOiB7ImRpc3BsYXlOYW1lIjogIiIsICJkZXNjcmlwdGlvbiI6ICI8cD5BbGdvcml0aG0zIE1lYW4oeCkgb2YgdGhlIDMtdGggc3ViLW1hdHJpeC48L3A+In0sICJBbGczIC0gTVNFIjogeyJkaXNwbGF5TmFtZSI6ICIiLCAiZGVzY3JpcHRpb24iOiAiPHA+QWxnb3JpdGhtMyBNU0UoeCwgeF9hcHByb3gpLjwvcD4ifSwgIkFsZzIgLSBNZWFuIDMtdGggc3ViLW1hdHJpeCI6IHsiZGlzcGxheU5hbWUiOiAiIiwgImRlc2NyaXB0aW9uIjogIjxwPkFsZ29yaXRobTIgTWVhbih4X2FwcHJveCkgb2YgdGhlIDMtdGggc3ViLW1hdHJpeC48L3A+In0sICJBbGczIC0gTWVhbiAzLXRoIHN1Yi1tYXRyaXgiOiB7ImRpc3BsYXlOYW1lIjogIiIsICJkZXNjcmlwdGlvbiI6ICI8cD5BbGdvcml0aG0zIE1lYW4oeF9hcHByb3gpIG9mIHRoZSAzLXRoIHN1Yi1tYXRyaXguPC9wPiJ9LCAiQWxnMiAtIE1TRSAxLXRoIHN1Yi1tYXRyaXgiOiB7ImRpc3BsYXlOYW1lIjogIiIsICJkZXNjcmlwdGlvbiI6ICI8cD5BbGdvcml0aG0yIE1TRSh4LCB4X2FwcHJveCkgb2YgdGhlIDEtdGggc3ViLW1hdHJpeC48L3A+In0sICJBbGcyIC0gTWVhbiAyLXRoIHN1Yi1tYXRyaXgiOiB7ImRpc3BsYXlOYW1lIjogIiIsICJkZXNjcmlwdGlvbiI6ICI8cD5BbGdvcml0aG0yIE1lYW4oeF9hcHByb3gpIG9mIHRoZSAyLXRoIHN1Yi1tYXRyaXguPC9wPiJ9LCAiQWxnMyAtIE1lYW4gT3JpZ2luYWwgMS10aCBzdWItbWF0cml4IjogeyJkaXNwbGF5TmFtZSI6ICIiLCAiZGVzY3JpcHRpb24iOiAiPHA+QWxnb3JpdGhtMyBNZWFuKHgpIG9mIHRoZSAxLXRoIHN1Yi1tYXRyaXguPC9wPiJ9LCAiQWxnMyAtIE1TRSAwLXRoIHN1Yi1tYXRyaXgiOiB7ImRpc3BsYXlOYW1lIjogIiIsICJkZXNjcmlwdGlvbiI6ICI8cD5BbGdvcml0aG0zIE1TRSh4LCB4X2FwcHJveCkgb2YgdGhlIDAtdGggc3ViLW1hdHJpeC48L3A+In0sICJBbGczIC0gTWVhbiAwLXRoIHN1Yi1tYXRyaXgiOiB7ImRpc3BsYXlOYW1lIjogIiIsICJkZXNjcmlwdGlvbiI6ICI8cD5BbGdvcml0aG0zIE1lYW4oeF9hcHByb3gpIG9mIHRoZSAwLXRoIHN1Yi1tYXRyaXguPC9wPiJ9LCAiQWxnMyAtIE1TRSAzLXRoIHN1Yi1tYXRyaXgiOiB7ImRpc3BsYXlOYW1lIjogIiIsICJkZXNjcmlwdGlvbiI6ICI8cD5BbGdvcml0aG0zIE1TRSh4LCB4X2FwcHJveCkgb2YgdGhlIDMtdGggc3ViLW1hdHJpeC48L3A+In19LCAibW5pc3RfUjQ1X3NjYWxlcjBfMS4wX3NjYWxlcjFfMi4wX21zZV9UaDFlLTA1X2RhdGUyMDIxMDcyMC0xMDE3MzMiOiB7IkFsZzMgLSBNZWFuIE9yaWdpbmFsIDAtdGggc3ViLW1hdHJpeCI6IHsiZGlzcGxheU5hbWUiOiAiIiwgImRlc2NyaXB0aW9uIjogIjxwPkFsZ29yaXRobTMgTWVhbih4KSBvZiB0aGUgMC10aCBzdWItbWF0cml4LjwvcD4ifSwgIkFsZzIgLSBNU0UgMC10aCBzdWItbWF0cml4IjogeyJkaXNwbGF5TmFtZSI6ICIiLCAiZGVzY3JpcHRpb24iOiAiPHA+QWxnb3JpdGhtMiBNU0UoeCwgeF9hcHByb3gpIG9mIHRoZSAwLXRoIHN1Yi1tYXRyaXguPC9wPiJ9LCAiQWxnMiAtIE1lYW4gMC10aCBzdWItbWF0cml4IjogeyJkaXNwbGF5TmFtZSI6ICIiLCAiZGVzY3JpcHRpb24iOiAiPHA+QWxnb3JpdGhtMiBNZWFuKHhfYXBwcm94KSBvZiB0aGUgMC10aCBzdWItbWF0cml4LjwvcD4ifSwgIkFsZzMgLSBNU0UiOiB7ImRpc3BsYXlOYW1lIjogIiIsICJkZXNjcmlwdGlvbiI6ICI8cD5BbGdvcml0aG0zIE1TRSh4LCB4X2FwcHJveCkuPC9wPiJ9LCAiQWxnMiAtIE1lYW4gMS10aCBzdWItbWF0cml4IjogeyJkaXNwbGF5TmFtZSI6ICIiLCAiZGVzY3JpcHRpb24iOiAiPHA+QWxnb3JpdGhtMiBNZWFuKHhfYXBwcm94KSBvZiB0aGUgMS10aCBzdWItbWF0cml4LjwvcD4ifSwgIkFsZzMgLSBNU0UgMS10aCBzdWItbWF0cml4IjogeyJkaXNwbGF5TmFtZSI6ICIiLCAiZGVzY3JpcHRpb24iOiAiPHA+QWxnb3JpdGhtMyBNU0UoeCwgeF9hcHByb3gpIG9mIHRoZSAxLXRoIHN1Yi1tYXRyaXguPC9wPiJ9LCAiQWxnMyAtIE1lYW4gT3JpZ2luYWwgMS10aCBzdWItbWF0cml4IjogeyJkaXNwbGF5TmFtZSI6ICIiLCAiZGVzY3JpcHRpb24iOiAiPHA+QWxnb3JpdGhtMyBNZWFuKHgpIG9mIHRoZSAxLXRoIHN1Yi1tYXRyaXguPC9wPiJ9LCAiQWxnMiAtIE1TRSAxLXRoIHN1Yi1tYXRyaXgiOiB7ImRpc3BsYXlOYW1lIjogIiIsICJkZXNjcmlwdGlvbiI6ICI8cD5BbGdvcml0aG0yIE1TRSh4LCB4X2FwcHJveCkgb2YgdGhlIDEtdGggc3ViLW1hdHJpeC48L3A+In0sICJBbGczIC0gTWVhbiAwLXRoIHN1Yi1tYXRyaXgiOiB7ImRpc3BsYXlOYW1lIjogIiIsICJkZXNjcmlwdGlvbiI6ICI8cD5BbGdvcml0aG0zIE1lYW4oeF9hcHByb3gpIG9mIHRoZSAwLXRoIHN1Yi1tYXRyaXguPC9wPiJ9LCAiQWxnMyAtIE1TRSAwLXRoIHN1Yi1tYXRyaXgiOiB7ImRpc3BsYXlOYW1lIjogIiIsICJkZXNjcmlwdGlvbiI6ICI8cD5BbGdvcml0aG0zIE1TRSh4LCB4X2FwcHJveCkgb2YgdGhlIDAtdGggc3ViLW1hdHJpeC48L3A+In0sICJBbGczIC0gTWVhbiAxLXRoIHN1Yi1tYXRyaXgiOiB7ImRpc3BsYXlOYW1lIjogIiIsICJkZXNjcmlwdGlvbiI6ICI8cD5BbGdvcml0aG0zIE1lYW4oeF9hcHByb3gpIG9mIHRoZSAxLXRoIHN1Yi1tYXRyaXguPC9wPiJ9fSwgIm1uaXN0X1I0NV9zY2FsZXIwXzEuMF9zY2FsZXIxXzIuMF9tc2VfVGgxZS0wNV9kYXRlMjAyMTA3MjAtMTAxNjAyIjogeyJBbGcyIC0gTVNFIDAtdGggc3ViLW1hdHJpeCI6IHsiZGlzcGxheU5hbWUiOiAiIiwgImRlc2NyaXB0aW9uIjogIjxwPkFsZ29yaXRobTIgTVNFKHgsIHhfYXBwcm94KSBvZiB0aGUgMC10aCBzdWItbWF0cml4LjwvcD4ifSwgIkFsZzMgLSBNU0UgMC10aCBzdWItbWF0cml4IjogeyJkaXNwbGF5TmFtZSI6ICIiLCAiZGVzY3JpcHRpb24iOiAiPHA+QWxnb3JpdGhtMyBNU0UoeCwgeF9hcHByb3gpIG9mIHRoZSAwLXRoIHN1Yi1tYXRyaXguPC9wPiJ9LCAiQWxnMyAtIE1lYW4gMC10aCBzdWItbWF0cml4IjogeyJkaXNwbGF5TmFtZSI6ICIiLCAiZGVzY3JpcHRpb24iOiAiPHA+QWxnb3JpdGhtMyBNZWFuKHhfYXBwcm94KSBvZiB0aGUgMC10aCBzdWItbWF0cml4LjwvcD4ifSwgIkFsZzMgLSBNZWFuIE9yaWdpbmFsIDAtdGggc3ViLW1hdHJpeCI6IHsiZGlzcGxheU5hbWUiOiAiIiwgImRlc2NyaXB0aW9uIjogIjxwPkFsZ29yaXRobTMgTWVhbih4KSBvZiB0aGUgMC10aCBzdWItbWF0cml4LjwvcD4ifSwgIkFsZzMgLSBNU0UgMS10aCBzdWItbWF0cml4IjogeyJkaXNwbGF5TmFtZSI6ICIiLCAiZGVzY3JpcHRpb24iOiAiPHA+QWxnb3JpdGhtMyBNU0UoeCwgeF9hcHByb3gpIG9mIHRoZSAxLXRoIHN1Yi1tYXRyaXguPC9wPiJ9LCAiQWxnMyAtIE1lYW4gMS10aCBzdWItbWF0cml4IjogeyJkaXNwbGF5TmFtZSI6ICIiLCAiZGVzY3JpcHRpb24iOiAiPHA+QWxnb3JpdGhtMyBNZWFuKHhfYXBwcm94KSBvZiB0aGUgMS10aCBzdWItbWF0cml4LjwvcD4ifSwgIkFsZzMgLSBNU0UiOiB7ImRpc3BsYXlOYW1lIjogIiIsICJkZXNjcmlwdGlvbiI6ICI8cD5BbGdvcml0aG0zIE1TRSh4LCB4X2FwcHJveCkuPC9wPiJ9LCAiQWxnMiAtIE1lYW4gMS10aCBzdWItbWF0cml4IjogeyJkaXNwbGF5TmFtZSI6ICIiLCAiZGVzY3JpcHRpb24iOiAiPHA+QWxnb3JpdGhtMiBNZWFuKHhfYXBwcm94KSBvZiB0aGUgMS10aCBzdWItbWF0cml4LjwvcD4ifSwgIkFsZzIgLSBNU0UgMS10aCBzdWItbWF0cml4IjogeyJkaXNwbGF5TmFtZSI6ICIiLCAiZGVzY3JpcHRpb24iOiAiPHA+QWxnb3JpdGhtMiBNU0UoeCwgeF9hcHByb3gpIG9mIHRoZSAxLXRoIHN1Yi1tYXRyaXguPC9wPiJ9LCAiQWxnMyAtIE1lYW4gT3JpZ2luYWwgMS10aCBzdWItbWF0cml4IjogeyJkaXNwbGF5TmFtZSI6ICIiLCAiZGVzY3JpcHRpb24iOiAiPHA+QWxnb3JpdGhtMyBNZWFuKHgpIG9mIHRoZSAxLXRoIHN1Yi1tYXRyaXguPC9wPiJ9LCAiQWxnMiAtIE1lYW4gMC10aCBzdWItbWF0cml4IjogeyJkaXNwbGF5TmFtZSI6ICIiLCAiZGVzY3JpcHRpb24iOiAiPHA+QWxnb3JpdGhtMiBNZWFuKHhfYXBwcm94KSBvZiB0aGUgMC10aCBzdWItbWF0cml4LjwvcD4ifX0sICJtbmlzdF9SNDVfc2NhbGVyMF8xLjBfc2NhbGVyMV8xLjFfbXNlX1RoMWUtMDVfZGF0ZTIwMjEwNzIwLTIxMTgwMCI6IHsiQWxnMiAtIE1lYW4gMC10aCBzdWItbWF0cml4IjogeyJkaXNwbGF5TmFtZSI6ICIiLCAiZGVzY3JpcHRpb24iOiAiPHA+QWxnb3JpdGhtMiBNZWFuKHhfYXBwcm94KSBvZiB0aGUgMC10aCBzdWItbWF0cml4LjwvcD4ifSwgIkFsZzMgLSBNU0UgMC10aCBzdWItbWF0cml4IjogeyJkaXNwbGF5TmFtZSI6ICIiLCAiZGVzY3JpcHRpb24iOiAiPHA+QWxnb3JpdGhtMyBNU0UoeCwgeF9hcHByb3gpIG9mIHRoZSAwLXRoIHN1Yi1tYXRyaXguPC9wPiJ9LCAiQWxnMiAtIE1TRSAxLXRoIHN1Yi1tYXRyaXgiOiB7ImRpc3BsYXlOYW1lIjogIiIsICJkZXNjcmlwdGlvbiI6ICI8cD5BbGdvcml0aG0yIE1TRSh4LCB4X2FwcHJveCkgb2YgdGhlIDEtdGggc3ViLW1hdHJpeC48L3A+In0sICJBbGczIC0gTWVhbiBPcmlnaW5hbCAwLXRoIHN1Yi1tYXRyaXgiOiB7ImRpc3BsYXlOYW1lIjogIiIsICJkZXNjcmlwdGlvbiI6ICI8cD5BbGdvcml0aG0zIE1lYW4oeCkgb2YgdGhlIDAtdGggc3ViLW1hdHJpeC48L3A+In0sICJBbGczIC0gTVNFIjogeyJkaXNwbGF5TmFtZSI6ICIiLCAiZGVzY3JpcHRpb24iOiAiPHA+QWxnb3JpdGhtMyBNU0UoeCwgeF9hcHByb3gpLjwvcD4ifSwgIkFsZzMgLSBNZWFuIDEtdGggc3ViLW1hdHJpeCI6IHsiZGlzcGxheU5hbWUiOiAiIiwgImRlc2NyaXB0aW9uIjogIjxwPkFsZ29yaXRobTMgTWVhbih4X2FwcHJveCkgb2YgdGhlIDEtdGggc3ViLW1hdHJpeC48L3A+In0sICJBbGczIC0gTWVhbiBPcmlnaW5hbCAxLXRoIHN1Yi1tYXRyaXgiOiB7ImRpc3BsYXlOYW1lIjogIiIsICJkZXNjcmlwdGlvbiI6ICI8cD5BbGdvcml0aG0zIE1lYW4oeCkgb2YgdGhlIDEtdGggc3ViLW1hdHJpeC48L3A+In0sICJBbGczIC0gTWVhbiAwLXRoIHN1Yi1tYXRyaXgiOiB7ImRpc3BsYXlOYW1lIjogIiIsICJkZXNjcmlwdGlvbiI6ICI8cD5BbGdvcml0aG0zIE1lYW4oeF9hcHByb3gpIG9mIHRoZSAwLXRoIHN1Yi1tYXRyaXguPC9wPiJ9LCAiQWxnMiAtIE1lYW4gMS10aCBzdWItbWF0cml4IjogeyJkaXNwbGF5TmFtZSI6ICIiLCAiZGVzY3JpcHRpb24iOiAiPHA+QWxnb3JpdGhtMiBNZWFuKHhfYXBwcm94KSBvZiB0aGUgMS10aCBzdWItbWF0cml4LjwvcD4ifSwgIkFsZzIgLSBNU0UgMC10aCBzdWItbWF0cml4IjogeyJkaXNwbGF5TmFtZSI6ICIiLCAiZGVzY3JpcHRpb24iOiAiPHA+QWxnb3JpdGhtMiBNU0UoeCwgeF9hcHByb3gpIG9mIHRoZSAwLXRoIHN1Yi1tYXRyaXguPC9wPiJ9LCAiQWxnMyAtIE1TRSAxLXRoIHN1Yi1tYXRyaXgiOiB7ImRpc3BsYXlOYW1lIjogIiIsICJkZXNjcmlwdGlvbiI6ICI8cD5BbGdvcml0aG0zIE1TRSh4LCB4X2FwcHJveCkgb2YgdGhlIDEtdGggc3ViLW1hdHJpeC48L3A+In19LCAibW5pc3RfUjQ1X3NjYWxlcjBfMS4wX3NjYWxlcjFfMS44X21zZV9UaDFlLTA1X2RhdGUyMDIxMDcxNC0xMTUyMDIiOiB7IkFsZzMgLSBNZWFuIE9yaWdpbmFsIDEtdGggc3ViLW1hdHJpeCI6IHsiZGlzcGxheU5hbWUiOiAiIiwgImRlc2NyaXB0aW9uIjogIjxwPkFsZ29yaXRobTMgTWVhbih4KSBvZiB0aGUgMS10aCBzdWItbWF0cml4LjwvcD4ifSwgIkFsZzIgLSBNU0UgMS10aCBzdWItbWF0cml4IjogeyJkaXNwbGF5TmFtZSI6ICIiLCAiZGVzY3JpcHRpb24iOiAiPHA+QWxnb3JpdGhtMiBNU0UoeCwgeF9hcHByb3gpIG9mIHRoZSAxLXRoIHN1Yi1tYXRyaXguPC9wPiJ9LCAiQWxnMiAtIE1TRSAwLXRoIHN1Yi1tYXRyaXgiOiB7ImRpc3BsYXlOYW1lIjogIiIsICJkZXNjcmlwdGlvbiI6ICI8cD5BbGdvcml0aG0yIE1TRSh4LCB4X2FwcHJveCkgb2YgdGhlIDAtdGggc3ViLW1hdHJpeC48L3A+In0sICJBbGczIC0gTWVhbiBPcmlnaW5hbCAwLXRoIHN1Yi1tYXRyaXgiOiB7ImRpc3BsYXlOYW1lIjogIiIsICJkZXNjcmlwdGlvbiI6ICI8cD5BbGdvcml0aG0zIE1lYW4oeCkgb2YgdGhlIDAtdGggc3ViLW1hdHJpeC48L3A+In0sICJBbGczIC0gTVNFIjogeyJkaXNwbGF5TmFtZSI6ICIiLCAiZGVzY3JpcHRpb24iOiAiPHA+QWxnb3JpdGhtMyBNU0UoeCwgeF9hcHByb3gpLjwvcD4ifSwgIkFsZzIgLSBNZWFuIDEtdGggc3ViLW1hdHJpeCI6IHsiZGlzcGxheU5hbWUiOiAiIiwgImRlc2NyaXB0aW9uIjogIjxwPkFsZ29yaXRobTIgTWVhbih4X2FwcHJveCkgb2YgdGhlIDEtdGggc3ViLW1hdHJpeC48L3A+In0sICJBbGczIC0gTVNFIDEtdGggc3ViLW1hdHJpeCI6IHsiZGlzcGxheU5hbWUiOiAiIiwgImRlc2NyaXB0aW9uIjogIjxwPkFsZ29yaXRobTMgTVNFKHgsIHhfYXBwcm94KSBvZiB0aGUgMS10aCBzdWItbWF0cml4LjwvcD4ifSwgIkFsZzMgLSBNU0UgMC10aCBzdWItbWF0cml4IjogeyJkaXNwbGF5TmFtZSI6ICIiLCAiZGVzY3JpcHRpb24iOiAiPHA+QWxnb3JpdGhtMyBNU0UoeCwgeF9hcHByb3gpIG9mIHRoZSAwLXRoIHN1Yi1tYXRyaXguPC9wPiJ9LCAiQWxnMyAtIE1lYW4gMS10aCBzdWItbWF0cml4IjogeyJkaXNwbGF5TmFtZSI6ICIiLCAiZGVzY3JpcHRpb24iOiAiPHA+QWxnb3JpdGhtMyBNZWFuKHhfYXBwcm94KSBvZiB0aGUgMS10aCBzdWItbWF0cml4LjwvcD4ifSwgIkFsZzIgLSBNZWFuIDAtdGggc3ViLW1hdHJpeCI6IHsiZGlzcGxheU5hbWUiOiAiIiwgImRlc2NyaXB0aW9uIjogIjxwPkFsZ29yaXRobTIgTWVhbih4X2FwcHJveCkgb2YgdGhlIDAtdGggc3ViLW1hdHJpeC48L3A+In0sICJBbGczIC0gTWVhbiAwLXRoIHN1Yi1tYXRyaXgiOiB7ImRpc3BsYXlOYW1lIjogIiIsICJkZXNjcmlwdGlvbiI6ICI8cD5BbGdvcml0aG0zIE1lYW4oeF9hcHByb3gpIG9mIHRoZSAwLXRoIHN1Yi1tYXRyaXguPC9wPiJ9fSwgIm1uaXN0X1I0NV9zY2FsZXIwXzEuOF9zY2FsZXIxXzEuMF9tc2VfVGgxZS0wNV9kYXRlMjAyMTA3MTMtMTIzMjM5IjogeyJBbGczIC0gTVNFIDEtdGggc3ViLW1hdHJpeCI6IHsiZGlzcGxheU5hbWUiOiAiIiwgImRlc2NyaXB0aW9uIjogIjxwPkFsZ29yaXRobTMgTVNFKHgsIHhfYXBwcm94KSBvZiB0aGUgMS10aCBzdWItbWF0cml4LjwvcD4ifSwgIkFsZzIgLSBkaWZmKFYpIjogeyJkaXNwbGF5TmFtZSI6ICIiLCAiZGVzY3JpcHRpb24iOiAiPHA+QWxnb3JpdGhtMiBNU0UodihpKSwgdihpLTEpKSBhdCByZWZpbmluZyBzdGVwcy48L3A+In0sICJBbGcyIC0gTVNFIDAtdGggc3ViLW1hdHJpeCI6IHsiZGlzcGxheU5hbWUiOiAiIiwgImRlc2NyaXB0aW9uIjogIjxwPkFsZ29yaXRobTIgTVNFKHgsIHhfYXBwcm94KSBvZiB0aGUgMC10aCBzdWItbWF0cml4LjwvcD4ifSwgIkFsZzMgLSBNU0UgMC10aCBzdWItbWF0cml4IjogeyJkaXNwbGF5TmFtZSI6ICIiLCAiZGVzY3JpcHRpb24iOiAiPHA+QWxnb3JpdGhtMyBNU0UoeCwgeF9hcHByb3gpIG9mIHRoZSAwLXRoIHN1Yi1tYXRyaXguPC9wPiJ9LCAiQWxnMiAtIE1TRSAxLXRoIHN1Yi1tYXRyaXgiOiB7ImRpc3BsYXlOYW1lIjogIiIsICJkZXNjcmlwdGlvbiI6ICI8cD5BbGdvcml0aG0yIE1TRSh4LCB4X2FwcHJveCkgb2YgdGhlIDEtdGggc3ViLW1hdHJpeC48L3A+In0sICJBbGczIC0gTVNFIjogeyJkaXNwbGF5TmFtZSI6ICIiLCAiZGVzY3JpcHRpb24iOiAiPHA+QWxnb3JpdGhtMyBNU0UoeCwgeF9hcHByb3gpLjwvcD4ifSwgIkFsZzIgLSBkaWZmKFUpIjogeyJkaXNwbGF5TmFtZSI6ICIiLCAiZGVzY3JpcHRpb24iOiAiPHA+QWxnb3JpdGhtMiBNU0UodShpKSwgdShpLTEpKSBhdCByZWZpbmluZyBzdGVwcy48L3A+In19LCAibW5pc3RfUjQ1X3NjYWxlcjBfMS4wX3NjYWxlcjFfMS4wX21zZV9UaDFlLTA1X2RhdGUyMDIxMDcyMC0yMTIxNTEiOiB7IkFsZzMgLSBNZWFuIE9yaWdpbmFsIDAtdGggc3ViLW1hdHJpeCI6IHsiZGlzcGxheU5hbWUiOiAiIiwgImRlc2NyaXB0aW9uIjogIjxwPkFsZ29yaXRobTMgTWVhbih4KSBvZiB0aGUgMC10aCBzdWItbWF0cml4LjwvcD4ifSwgIkFsZzIgLSBNU0UgMC10aCBzdWItbWF0cml4IjogeyJkaXNwbGF5TmFtZSI6ICIiLCAiZGVzY3JpcHRpb24iOiAiPHA+QWxnb3JpdGhtMiBNU0UoeCwgeF9hcHByb3gpIG9mIHRoZSAwLXRoIHN1Yi1tYXRyaXguPC9wPiJ9LCAiQWxnMyAtIE1lYW4gMC10aCBzdWItbWF0cml4IjogeyJkaXNwbGF5TmFtZSI6ICIiLCAiZGVzY3JpcHRpb24iOiAiPHA+QWxnb3JpdGhtMyBNZWFuKHhfYXBwcm94KSBvZiB0aGUgMC10aCBzdWItbWF0cml4LjwvcD4ifSwgIkFsZzIgLSBNZWFuIDAtdGggc3ViLW1hdHJpeCI6IHsiZGlzcGxheU5hbWUiOiAiIiwgImRlc2NyaXB0aW9uIjogIjxwPkFsZ29yaXRobTIgTWVhbih4X2FwcHJveCkgb2YgdGhlIDAtdGggc3ViLW1hdHJpeC48L3A+In0sICJBbGcyIC0gTWVhbiAxLXRoIHN1Yi1tYXRyaXgiOiB7ImRpc3BsYXlOYW1lIjogIiIsICJkZXNjcmlwdGlvbiI6ICI8cD5BbGdvcml0aG0yIE1lYW4oeF9hcHByb3gpIG9mIHRoZSAxLXRoIHN1Yi1tYXRyaXguPC9wPiJ9LCAiQWxnMyAtIE1TRSI6IHsiZGlzcGxheU5hbWUiOiAiIiwgImRlc2NyaXB0aW9uIjogIjxwPkFsZ29yaXRobTMgTVNFKHgsIHhfYXBwcm94KS48L3A+In0sICJBbGczIC0gTWVhbiAxLXRoIHN1Yi1tYXRyaXgiOiB7ImRpc3BsYXlOYW1lIjogIiIsICJkZXNjcmlwdGlvbiI6ICI8cD5BbGdvcml0aG0zIE1lYW4oeF9hcHByb3gpIG9mIHRoZSAxLXRoIHN1Yi1tYXRyaXguPC9wPiJ9LCAiQWxnMyAtIE1lYW4gT3JpZ2luYWwgMS10aCBzdWItbWF0cml4IjogeyJkaXNwbGF5TmFtZSI6ICIiLCAiZGVzY3JpcHRpb24iOiAiPHA+QWxnb3JpdGhtMyBNZWFuKHgpIG9mIHRoZSAxLXRoIHN1Yi1tYXRyaXguPC9wPiJ9LCAiQWxnMiAtIE1TRSAxLXRoIHN1Yi1tYXRyaXgiOiB7ImRpc3BsYXlOYW1lIjogIiIsICJkZXNjcmlwdGlvbiI6ICI8cD5BbGdvcml0aG0yIE1TRSh4LCB4X2FwcHJveCkgb2YgdGhlIDEtdGggc3ViLW1hdHJpeC48L3A+In0sICJBbGczIC0gTVNFIDEtdGggc3ViLW1hdHJpeCI6IHsiZGlzcGxheU5hbWUiOiAiIiwgImRlc2NyaXB0aW9uIjogIjxwPkFsZ29yaXRobTMgTVNFKHgsIHhfYXBwcm94KSBvZiB0aGUgMS10aCBzdWItbWF0cml4LjwvcD4ifSwgIkFsZzMgLSBNU0UgMC10aCBzdWItbWF0cml4IjogeyJkaXNwbGF5TmFtZSI6ICIiLCAiZGVzY3JpcHRpb24iOiAiPHA+QWxnb3JpdGhtMyBNU0UoeCwgeF9hcHByb3gpIG9mIHRoZSAwLXRoIHN1Yi1tYXRyaXguPC9wPiJ9fX0=", + "ok": true, + "headers": [ + [ + "content-type", + "application/json" + ] + ], + "status": 200, + "status_text": "OK" + } + }, + "base_uri": "https://localhost:8080/", + "height": 0 + }, + "id": "w5HA_RoKJ1W6", + "outputId": "06f47ac5-c2bf-4ab2-ff73-e1e652859e1c" + }, + "source": [ + "tensorboard_dir = '/gdrive/My Drive/Colab Notebooks/svd/'\n", + "tensorboard_dir = re.escape(tensorboard_dir) # to include spaces\n", + "# %reload_ext tensorboard\n", + "# %rm -rf $tensorboard_dir/tensorboard/*\n", + "%tensorboard --logdir $tensorboard_dir/tensorboard" + ], + "execution_count": 19, + "outputs": [ + { + "output_type": "display_data", + "data": { + "application/javascript": [ + "\n", + " (async () => {\n", + " const url = new URL(await google.colab.kernel.proxyPort(6006, {'cache': true}));\n", + " url.searchParams.set('tensorboardColab', 'true');\n", + " const iframe = document.createElement('iframe');\n", + " iframe.src = url;\n", + " iframe.setAttribute('width', '100%');\n", + " iframe.setAttribute('height', '800');\n", + " iframe.setAttribute('frameborder', 0);\n", + " document.body.appendChild(iframe);\n", + " })();\n", + " " + ], + "text/plain": [ + "" + ] + }, + "metadata": { + "tags": [] + } + } + ] + }, + { + "cell_type": "markdown", + "metadata": { + "id": "9EWRUuxXkzxh" + }, + "source": [ + "# Models\n", + "\n", + "Currently, we have the following designs in place:\n", + "\n", + "| Model Name | ID | #LSTMs | Input Size(s) | Hidden Size(s)| Test Accuracy | HW Requirements |\n", + "|---|---|---|---|---|---|---|\n", + "| Dense MNIST | mnist | 0 | 784 | 128 | 98% | |\n", + "| Fashion MNIST | fashion | 0 | 784 | 128 | 88% | |\n", + "| Fashion MNIST - LSTM | fashion-lstm | 2 | 128 | 256 | 86% | |\n", + "| CNN-RNN-UCF101 | cnn-lstm | 2 | 2048 | 256 | 65% |\n", + "| TrafficPredict | traffic-predict | N | ? | ? | ? | |\n" + ] + }, + { + "cell_type": "code", + "metadata": { + "id": "LfTVudzjYwdI" + }, + "source": [ + "models = {}" + ], + "execution_count": 20, + "outputs": [] + }, + { + "cell_type": "code", + "metadata": { + "id": "1ypgdVm6Oz1M" + }, + "source": [ + "checkpoint_dir = '/gdrive/My Drive/checkpoints/svd/'\n", + "\n", + "def save_model(model_name):\n", + " models[model_name].save(checkpoint_dir + model_name)\n", + " models[model_name].save_weights(checkpoint_dir + model_name + '.h5')\n", + " print(f'Model saved at: {checkpoint_dir + model_name}')\n", + "\n", + "def load_model(model_name):\n", + " if os.path.isdir(checkpoint_dir + model_name):\n", + " models[model_name] = tf.keras.models.load_model(checkpoint_dir + model_name)\n", + " if os.path.isfile(checkpoint_dir + model_name + '.h5'):\n", + " print(f'Model \"{model_name}\" loaded with weights.')\n", + " return True\n", + " else:\n", + " print(f'Model \"{model_name}\" loaded without weights.')\n", + " return False\n", + " else:\n", + " print(f'Model \"{model_name}\" not found in: {checkpoint_dir}')\n", + " return False" + ], + "execution_count": 21, + "outputs": [] + }, + { + "cell_type": "markdown", + "metadata": { + "id": "9qAJGTrJxCUl" + }, + "source": [ + "### MNIST - Dense" + ] + }, + { + "cell_type": "code", + "metadata": { + "id": "Dp2_3w2ZxGLh", + "colab": { + "base_uri": "https://localhost:8080/" + }, + "outputId": "eb81bda2-455e-4856-8876-96b297824eaa" + }, + "source": [ + "mnist = tf.keras.datasets.mnist\n", + "\n", + "(x_train, y_train), (x_test, y_test) = mnist.load_data()\n", + "x_train, x_test = x_train / 255.0, x_test / 255.0" + ], + "execution_count": 22, + "outputs": [ + { + "output_type": "stream", + "text": [ + "Downloading data from https://storage.googleapis.com/tensorflow/tf-keras-datasets/mnist.npz\n", + "11493376/11490434 [==============================] - 0s 0us/step\n" + ], + "name": "stdout" + } + ] + }, + { + "cell_type": "code", + "metadata": { + "colab": { + "base_uri": "https://localhost:8080/" + }, + "id": "9gku0jMKxNlR", + "outputId": "0ce442da-227c-4747-df9d-54a7cedfc2f1" + }, + "source": [ + "models['mnist'] = tf.keras.models.Sequential([\n", + " tf.keras.layers.Flatten(input_shape=(28, 28)),\n", + " tf.keras.layers.Dense(128, activation='relu', name='dense_1'),\n", + " tf.keras.layers.Dropout(0.2),\n", + " tf.keras.layers.Dense(10, name='dense_2')\n", + "], name='mnist')\n", + "\n", + "models['mnist'].summary()" + ], + "execution_count": 23, + "outputs": [ + { + "output_type": "stream", + "text": [ + "Model: \"mnist\"\n", + "_________________________________________________________________\n", + "Layer (type) Output Shape Param # \n", + "=================================================================\n", + "flatten (Flatten) (None, 784) 0 \n", + "_________________________________________________________________\n", + "dense_1 (Dense) (None, 128) 100480 \n", + "_________________________________________________________________\n", + "dropout (Dropout) (None, 128) 0 \n", + "_________________________________________________________________\n", + "dense_2 (Dense) (None, 10) 1290 \n", + "=================================================================\n", + "Total params: 101,770\n", + "Trainable params: 101,770\n", + "Non-trainable params: 0\n", + "_________________________________________________________________\n" + ], + "name": "stdout" + } + ] + }, + { + "cell_type": "code", + "metadata": { + "colab": { + "base_uri": "https://localhost:8080/" + }, + "id": "c2yrclDrxi0a", + "outputId": "ecc6f68b-8fd1-4c82-ff52-8913a188c493" + }, + "source": [ + "models['mnist'].compile(optimizer='adam',\n", + " loss=tf.keras.losses.SparseCategoricalCrossentropy(from_logits=True),\n", + " metrics=['accuracy'])\n", + "\n", + "if not load_model('mnist'):\n", + " models['mnist'].fit(x_train, y_train, epochs=5)\n", + " save_model('mnist')" + ], + "execution_count": 24, + "outputs": [ + { + "output_type": "stream", + "text": [ + "Model \"mnist\" loaded with weights.\n" + ], + "name": "stdout" + } + ] + }, + { + "cell_type": "code", + "metadata": { + "colab": { + "base_uri": "https://localhost:8080/" + }, + "id": "TBEYbgI-x6Py", + "outputId": "e2f6a24c-7359-4333-abc6-3ed12f376791" + }, + "source": [ + "models['mnist'].evaluate(x_test, y_test, verbose=2)" + ], + "execution_count": 25, + "outputs": [ + { + "output_type": "stream", + "text": [ + "313/313 - 1s - loss: 0.0735 - accuracy: 0.9795\n" + ], + "name": "stdout" + }, + { + "output_type": "execute_result", + "data": { + "text/plain": [ + "[0.07346832007169724, 0.9794999957084656]" + ] + }, + "metadata": { + "tags": [] + }, + "execution_count": 25 + } + ] + }, + { + "cell_type": "markdown", + "metadata": { + "id": "Fxd8syuH4WeS" + }, + "source": [ + "\n", + "## Fashion MNIST - Dense\n" + ] + }, + { + "cell_type": "code", + "metadata": { + "id": "3wYmzI6-1prs", + "colab": { + "base_uri": "https://localhost:8080/" + }, + "outputId": "d138db33-9403-450e-99bc-237552e27d82" + }, + "source": [ + "fashion_mnist = tf.keras.datasets.fashion_mnist\n", + "\n", + "(fashion_train_images, fashion_train_labels), (fashion_test_images, fashion_test_labels) = fashion_mnist.load_data()" + ], + "execution_count": 26, + "outputs": [ + { + "output_type": "stream", + "text": [ + "Downloading data from https://storage.googleapis.com/tensorflow/tf-keras-datasets/train-labels-idx1-ubyte.gz\n", + "32768/29515 [=================================] - 0s 0us/step\n", + "Downloading data from https://storage.googleapis.com/tensorflow/tf-keras-datasets/train-images-idx3-ubyte.gz\n", + "26427392/26421880 [==============================] - 0s 0us/step\n", + "Downloading data from https://storage.googleapis.com/tensorflow/tf-keras-datasets/t10k-labels-idx1-ubyte.gz\n", + "8192/5148 [===============================================] - 0s 0us/step\n", + "Downloading data from https://storage.googleapis.com/tensorflow/tf-keras-datasets/t10k-images-idx3-ubyte.gz\n", + "4423680/4422102 [==============================] - 0s 0us/step\n" + ], + "name": "stdout" + } + ] + }, + { + "cell_type": "code", + "metadata": { + "id": "qOJnAUJKOBrm" + }, + "source": [ + "class_names = ['T-shirt/top', 'Trouser', 'Pullover', 'Dress', 'Coat',\n", + " 'Sandal', 'Shirt', 'Sneaker', 'Bag', 'Ankle boot']" + ], + "execution_count": 27, + "outputs": [] + }, + { + "cell_type": "code", + "metadata": { + "colab": { + "base_uri": "https://localhost:8080/", + "height": 0 + }, + "id": "WMGwjBDxORVD", + "outputId": "50cf76eb-a8fc-4c4a-bc12-adec4856bade" + }, + "source": [ + "plt.figure()\n", + "plt.imshow(fashion_train_images[0])\n", + "plt.colorbar()\n", + "plt.grid(False)\n", + "plt.show()" + ], + "execution_count": 28, + "outputs": [ + { + "output_type": "display_data", + "data": { + "image/png": "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\n", + "text/plain": [ + "
" + ] + }, + "metadata": { + "tags": [], + "needs_background": "light" + } + } + ] + }, + { + "cell_type": "markdown", + "metadata": { + "id": "0sbj1XatOqIn" + }, + "source": [ + "Scale these values to a range of 0 to 1 before feeding them to the neural network model. To do so, divide the values by 255. It's important that the training set and the testing set be preprocessed in the same way:" + ] + }, + { + "cell_type": "code", + "metadata": { + "id": "D5ZodZNROeTO" + }, + "source": [ + "fashion_train_images = fashion_train_images / 255.0\n", + "fashion_test_images = fashion_test_images / 255.0" + ], + "execution_count": 29, + "outputs": [] + }, + { + "cell_type": "code", + "metadata": { + "colab": { + "base_uri": "https://localhost:8080/", + "height": 0 + }, + "id": "ms2krOx9Os6d", + "outputId": "02605b2f-7420-4ac9-ef04-fabf8fa0c2f8" + }, + "source": [ + "plt.figure(figsize=(10,10))\n", + "for i in range(25):\n", + " plt.subplot(5,5,i+1)\n", + " plt.xticks([])\n", + " plt.yticks([])\n", + " plt.grid(False)\n", + " plt.imshow(fashion_train_images[i], cmap=plt.cm.binary)\n", + " plt.xlabel(class_names[fashion_train_labels[i]])\n", + "plt.show()" + ], + "execution_count": 30, + "outputs": [ + { + "output_type": "display_data", + "data": { + "image/png": "iVBORw0KGgoAAAANSUhEUgAAAj0AAAI8CAYAAAAazRqkAAAABHNCSVQICAgIfAhkiAAAAAlwSFlzAAALEgAACxIB0t1+/AAAADh0RVh0U29mdHdhcmUAbWF0cGxvdGxpYiB2ZXJzaW9uMy4yLjIsIGh0dHA6Ly9tYXRwbG90bGliLm9yZy+WH4yJAAAgAElEQVR4nOydebxd0/n/P0tQEYSMMroSMTRE5hiCmIUoalZTfUv9Wi0dDNXSUq2qKlVTSxU1FkkNRYJIhEhlEBmEyEhEElcSEVKK/fvjnrvyWU/OXtn35p57z73783698sqzz1pnnX32WmuffZ/RJUkCIYQQQoimzkYNfQJCCCGEEPWBHnqEEEIIkQv00COEEEKIXKCHHiGEEELkAj30CCGEECIX6KFHCCGEELlg45p0btOmTVJRUVGiUxHFWLBgASorK11dj1suc/nf//7Xy++8846Xt9lmm6Df5ptv7mXnXFHZjrdixQovf+1rXwv6bbvttl5u1qxZTU+71kyePLkySZK2dT1uQ83nF198ERxXVlZ6uXXr1l7eZJNNNvizPv30Uy/zPAPherFrolQ0hb352WefeXn16tVB28qVK73Me4TnFQj3Ztr+A4CPP/7YyxtttPbv7VatWgX92rat8+2RiVLszXK5z5aS//3vf16ui31eF8TmskYPPRUVFZg0aVLdnJXIRP/+/Usybl3MJed4qu0PzaxZs7x83nnnefmEE04I+vXp08fLm266qZc33jhcwjNnzvTyiBEjvNytW7eg30UXXeTlrbfeuqanXWuccwtLMW5D7c1ly5YFx3fddZeXTz/9dC/zQ2ZtmTp1qpfffPPNoO3YY4/1cn3deMt5b2Zl/vz5Xh47dmzQ9thjj3mZH0xOO+20oF/fvn29zPPy6KOPBv2ee+45L7do0cLLp556atDvnHPOyXTudU0p9mYefjMXL17s5Y4dOzbgmawlNpcybwkhhBAiF9RI0yPyR0ybk6bdee2114Ljhx56yMv2rz9Wm7N6/dJLLw36LV++POMZr2XHHXf08uuvvx60XX311V5mLcShhx4a9PvJT37i5d12263G59AU4Xl6/PHHg7Z77rnHyw8++KCXrcmCtXWsmbEmFja/vPvuu14++uijg368jo4//vj4F8gZTz/9tJevv/76oK158+Ze/vzzz4O2zTbb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SAA/qP4j1DnXp/D/OuvDVUUBfVowm1yLqgcgsYFob2ajoR96TgYwwrz2KEITV4zzATR3zv2eX0ySZBSq1GuvOOemA3gExR9KPgEw0FWF8B0A4MrC62egyiY9DVU+Qet7/S5U2SflyJyNEwDMKKjCd0WVr1RtuQuFa4+qv2qeo7YnAFT/9bMPgB8A+HZh/k5D1fqp5h0Ar6JKZXtukiT/3YBzyhOay6ZL88L1nomquRgFIC0o5NcANgEwrdD/14XXi62P3QC8WnjtlwCuKuF3yDPam0VQGQrRZHDO3QHgjiRJJtTwfXcBeLLglC7KALlFSkYAACAASURBVM2lEOVJY9+b5ZKnR4gNJkmS7zT0OYi6QXMpRHnS2PemND1CCCGEyAUN7dMjhBBCCFEv6KFHCCGEELlADz1CCCGEyAV66BFCCCFELqhR9FabNm2SioqKEp1KOl98ERbwXbVqlZcrKyu93KxZs6DfZputLeux0UZrn+/seJ98sjbxZIsWLbzcqVOnoB+PUV8sWLAAlZWVxbJObxANNZd5Z/LkyZVJkrSt63HLcT4//vhjL3/ta18L2jbddNNMY3z22drksZ9++qmXt9lmmw08uw1He7NpUYq9qblsGGJzWaOHnoqKCkyaNKlGH26jw4pXjYizbNmy4Hj06NFevv32tbVGt95666DfLrvs4mW+6a5YsSLo98orr3h5jz328PJvf/vboF/z5tnyDvJ3rs33Zfr3779B70+jNnMpNhzn3MJSjFsX85kWyVnbNTx27Fgvd+/ePWjr3LlzpjHmz5/vZf5+xx9/fK3OqS7R3mxalGJvai4bhthcliRPT9YffdbS/OlPfwranntubcLH//43TNrI2pjPP//cyxMnTgz6DR8+vOjnbrLJJsExa3T+85//eHmvvfYK+rVq1crL++23n5d/8IMfBP3K4a9QIWoK79uYVnPRokVevvPOO4O26667zsuska0L+JxOO+20oO2aa67x8vnnn48sfPXVV6njCyGaJtrlQgghhMgFeugRQgghRC7QQ48QQgghckG9196aO3eul4cNG+blbbfdNujHTsnWB4ejtNhB2ToWrl69er3vAUK/oA8++MDLNsqLI0meffZZL7/88stBv+9+97te/uY3vwkhypGsPi19+vQJjt9++20v854AgM0339zLvKetXx77vfFef//994N+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\n", + "text/plain": [ + "
" + ] + }, + "metadata": { + "tags": [] + } + } + ] + }, + { + "cell_type": "code", + "metadata": { + "colab": { + "base_uri": "https://localhost:8080/" + }, + "id": "j33Mb5iAOvP4", + "outputId": "dcde8279-b8b5-4fb6-c86b-361415c312eb" + }, + "source": [ + "models['fashion'] = tf.keras.Sequential([\n", + " tf.keras.layers.Flatten(input_shape=(28, 28)),\n", + " tf.keras.layers.Dense(128, activation='relu', name='dense_1'),\n", + " tf.keras.layers.Dense(10, name='dense_2')\n", + "], name='fashion_mnist')\n", + "models['fashion'].summary()" + ], + "execution_count": 31, + "outputs": [ + { + "output_type": "stream", + "text": [ + "Model: \"fashion_mnist\"\n", + "_________________________________________________________________\n", + "Layer (type) Output Shape Param # \n", + "=================================================================\n", + "flatten_1 (Flatten) (None, 784) 0 \n", + "_________________________________________________________________\n", + "dense_1 (Dense) (None, 128) 100480 \n", + "_________________________________________________________________\n", + "dense_2 (Dense) (None, 10) 1290 \n", + "=================================================================\n", + "Total params: 101,770\n", + "Trainable params: 101,770\n", + "Non-trainable params: 0\n", + "_________________________________________________________________\n" + ], + "name": "stdout" + } + ] + }, + { + "cell_type": "code", + "metadata": { + "id": "Rx6Em41pO4ha" + }, + "source": [ + "models['fashion'].compile(optimizer='adam',\n", + " loss=tf.keras.losses.SparseCategoricalCrossentropy(from_logits=True),\n", + " metrics=['accuracy'])" + ], + "execution_count": 32, + "outputs": [] + }, + { + "cell_type": "markdown", + "metadata": { + "id": "K6F2FqdUO_qg" + }, + "source": [ + "Train the model." + ] + }, + { + "cell_type": "code", + "metadata": { + "colab": { + "base_uri": "https://localhost:8080/" + }, + "id": "xqWdCHIjO9Z4", + "outputId": "993ffe53-d235-44b9-c45f-6fa4506e1b16" + }, + "source": [ + "train_model = False\n", + "if not load_model('fashion') or train_model:\n", + " models['fashion'].fit(fashion_train_images, fashion_train_labels, epochs=10)\n", + " save_model('fashion')" + ], + "execution_count": 33, + "outputs": [ + { + "output_type": "stream", + "text": [ + "Model \"fashion\" loaded with weights.\n" + ], + "name": "stdout" + } + ] + }, + { + "cell_type": "code", + "metadata": { + "colab": { + "base_uri": "https://localhost:8080/" + }, + "id": "WMV3QbbVPEt4", + "outputId": "6773da17-783b-4d58-c399-97b3450cac1f" + }, + "source": [ + "test_loss, test_acc = models['fashion'].evaluate(fashion_test_images, fashion_test_labels, verbose=2)\n", + "print('\\nTest accuracy:', test_acc)" + ], + "execution_count": 34, + "outputs": [ + { + "output_type": "stream", + "text": [ + "313/313 - 1s - loss: 0.3876 - accuracy: 0.8919\n", + "\n", + "Test accuracy: 0.8919000029563904\n" + ], + "name": "stdout" + } + ] + }, + { + "cell_type": "markdown", + "metadata": { + "id": "L3OA-HB7gExG" + }, + "source": [ + "## Fashion MNIST - LSTM" + ] + }, + { + "cell_type": "code", + "metadata": { + "colab": { + "base_uri": "https://localhost:8080/" + }, + "id": "0AyNrEeIPGq_", + "outputId": "eb6468dd-ddfe-4c3e-de0a-89c273fc3d1c" + }, + "source": [ + "batch_size = 32\n", + "num_classes = 10\n", + "epochs = 2\n", + "\n", + "row_hidden = 64\n", + "col_hidden = 64\n", + "\n", + "row, col = fashion_train_images.shape[1:]\n", + "\n", + "input = tf.keras.layers.Input(shape=(row, col))\n", + "\n", + "def lstm_pipe(in_layer, lstm_name=''):\n", + " x = tf.keras.layers.Conv1D(row_hidden, kernel_size=3, padding = 'same')(in_layer)\n", + " x = tf.keras.layers.Conv1D(row_hidden, kernel_size=3, padding = 'same')(x)\n", + " encoded_rows = tf.keras.layers.Bidirectional(tf.keras.layers.LSTM(row_hidden, return_sequences = True))(x)\n", + " return tf.keras.layers.LSTM(col_hidden, name='LSTM_' + lstm_name)(encoded_rows)\n", + "# Read it by rows\n", + "row_read = lstm_pipe(input, 'left')\n", + "# Read it by columns\n", + "transpose_read = lstm_pipe(tf.keras.layers.Permute(dims=(1,2))(input), 'right')\n", + "x = tf.concat([row_read, transpose_read], axis=1)\n", + "x = tf.keras.layers.Dropout(0.2)(x)\n", + "# prediction = tf.keras.layers.Dense(num_classes, activation='softmax')(x)\n", + "prediction = tf.keras.layers.Dense(num_classes)(x)\n", + "models['fashion-lstm'] = tf.keras.Model(input, prediction)\n", + "models['fashion-lstm'].compile(optimizer='adam',\n", + " loss=tf.keras.losses.SparseCategoricalCrossentropy(from_logits=True),\n", + " metrics=['accuracy'])\n", + "models['fashion-lstm'].summary()\n", + "\n", + "models['fashion-lstm'].get_layer('LSTM_left').get_weights()[0].shape" + ], + "execution_count": 35, + "outputs": [ + { + "output_type": "stream", + "text": [ + "Model: \"model\"\n", + "__________________________________________________________________________________________________\n", + "Layer (type) Output Shape Param # Connected to \n", + "==================================================================================================\n", + "input_1 (InputLayer) [(None, 28, 28)] 0 \n", + "__________________________________________________________________________________________________\n", + "permute (Permute) (None, 28, 28) 0 input_1[0][0] \n", + "__________________________________________________________________________________________________\n", + "conv1d (Conv1D) (None, 28, 64) 5440 input_1[0][0] \n", + "__________________________________________________________________________________________________\n", + "conv1d_2 (Conv1D) (None, 28, 64) 5440 permute[0][0] \n", + "__________________________________________________________________________________________________\n", + "conv1d_1 (Conv1D) (None, 28, 64) 12352 conv1d[0][0] \n", + "__________________________________________________________________________________________________\n", + "conv1d_3 (Conv1D) (None, 28, 64) 12352 conv1d_2[0][0] \n", + "__________________________________________________________________________________________________\n", + "bidirectional (Bidirectional) (None, 28, 128) 66048 conv1d_1[0][0] \n", + "__________________________________________________________________________________________________\n", + "bidirectional_1 (Bidirectional) (None, 28, 128) 66048 conv1d_3[0][0] \n", + "__________________________________________________________________________________________________\n", + "LSTM_left (LSTM) (None, 64) 49408 bidirectional[0][0] \n", + "__________________________________________________________________________________________________\n", + "LSTM_right (LSTM) (None, 64) 49408 bidirectional_1[0][0] \n", + "__________________________________________________________________________________________________\n", + "tf.concat (TFOpLambda) (None, 128) 0 LSTM_left[0][0] \n", + " LSTM_right[0][0] \n", + "__________________________________________________________________________________________________\n", + "dropout_1 (Dropout) (None, 128) 0 tf.concat[0][0] \n", + "__________________________________________________________________________________________________\n", + "dense (Dense) (None, 10) 1290 dropout_1[0][0] \n", + "==================================================================================================\n", + "Total params: 267,786\n", + "Trainable params: 267,786\n", + "Non-trainable params: 0\n", + "__________________________________________________________________________________________________\n" + ], + "name": "stdout" + }, + { + "output_type": "execute_result", + "data": { + "text/plain": [ + "(128, 256)" + ] + }, + "metadata": { + "tags": [] + }, + "execution_count": 35 + } + ] + }, + { + "cell_type": "code", + "metadata": { + "colab": { + "base_uri": "https://localhost:8080/" + }, + "id": "26j0DrC2gWWE", + "outputId": "d77668ff-69c6-41e9-d8f7-70e6ebeeedf7" + }, + "source": [ + "if not load_model('fashion-lstm'):\n", + " models['fashion-lstm'].fit(fashion_train_images, fashion_train_labels, epochs=2, batch_size=batch_size)\n", + " save_model('fashion-lstm')" + ], + "execution_count": 36, + "outputs": [ + { + "output_type": "stream", + "text": [ + "Model \"fashion-lstm\" loaded with weights.\n" + ], + "name": "stdout" + } + ] + }, + { + "cell_type": "code", + "metadata": { + "colab": { + "base_uri": "https://localhost:8080/" + }, + "id": "aQeDXW1ggx5p", + "outputId": "c7a172e3-57e5-41f8-b38f-efb45646c31d" + }, + "source": [ + "test_loss, test_acc = models['fashion-lstm'].evaluate(fashion_test_images, fashion_test_labels, verbose=2)\n", + "print('\\nTest accuracy:', test_acc)" + ], + "execution_count": 37, + "outputs": [ + { + "output_type": "stream", + "text": [ + "313/313 - 9s - loss: 0.3886 - accuracy: 0.8587\n", + "\n", + "Test accuracy: 0.8586999773979187\n" + ], + "name": "stdout" + } + ] + }, + { + "cell_type": "markdown", + "metadata": { + "id": "pjtqPfHpFOpE" + }, + "source": [ + "## CNN-RNN-UCF101" + ] + }, + { + "cell_type": "code", + "metadata": { + "colab": { + "base_uri": "https://localhost:8080/" + }, + "id": "axEkmpz9QoGY", + "outputId": "e15f701c-c0a3-47ff-ab4b-686cc59dd574" + }, + "source": [ + "!pip install -q git+https://github.com/tensorflow/docs" + ], + "execution_count": 38, + "outputs": [ + { + "output_type": "stream", + "text": [ + " Building wheel for tensorflow-docs (setup.py) ... \u001b[?25l\u001b[?25hdone\n", + "\u001b[33m WARNING: Built wheel for tensorflow-docs is invalid: Metadata 1.2 mandates PEP 440 version, but '0.0.0f74e5ccdc126eb2c32cb344a7c134a28e633e9dc-' is not\u001b[0m\n", + " Running setup.py install for tensorflow-docs ... \u001b[?25l\u001b[?25hdone\n", + "\u001b[33m DEPRECATION: tensorflow-docs was installed using the legacy 'setup.py install' method, because a wheel could not be built for it. A possible replacement is to fix the wheel build issue reported above. You can find discussion regarding this at https://github.com/pypa/pip/issues/8368.\u001b[0m\n" + ], + "name": "stdout" + } + ] + }, + { + "cell_type": "code", + "metadata": { + "id": "pQQsKjzmh8Uz" + }, + "source": [ + "!wget -q https://git.io/JGc31 -O /tmp/ucf101_top5.tar.gz\n", + "!tar xf /tmp/ucf101_top5.tar.gz" + ], + "execution_count": 39, + "outputs": [] + }, + { + "cell_type": "code", + "metadata": { + "id": "vf8KPD3XFbsu" + }, + "source": [ + "from tensorflow_docs.vis import embed\n", + "from imutils import paths\n", + "\n", + "import pandas as pd\n", + "import imageio\n", + "import cv2" + ], + "execution_count": 40, + "outputs": [] + }, + { + "cell_type": "code", + "metadata": { + "id": "9gd5eo4fQk6R" + }, + "source": [ + "IMG_SIZE = 224\n", + "BATCH_SIZE = 64\n", + "EPOCHS = 10\n", + "\n", + "MAX_SEQ_LENGTH = 20\n", + "NUM_FEATURES = 2048" + ], + "execution_count": 41, + "outputs": [] + }, + { + "cell_type": "code", + "metadata": { + "colab": { + "base_uri": "https://localhost:8080/", + "height": 0 + }, + "id": "DM97Kl5AReMg", + "outputId": "037167b6-e627-46d0-f377-f3e0754e43a7" + }, + "source": [ + "train_df = pd.read_csv(\"train.csv\")\n", + "test_df = pd.read_csv(\"test.csv\")\n", + "\n", + "print(f\"Total videos for training: {len(train_df)}\")\n", + "print(f\"Total videos for testing: {len(test_df)}\")\n", + "\n", + "train_df.sample(10)" + ], + "execution_count": 42, + "outputs": [ + { + "output_type": "stream", + "text": [ + "Total videos for training: 594\n", + "Total videos for testing: 224\n" + ], + "name": "stdout" + }, + { + "output_type": "execute_result", + "data": { + "text/html": [ + "
\n", + "\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
video_nametag
421v_ShavingBeard_g17_c07.aviShavingBeard
391v_ShavingBeard_g13_c02.aviShavingBeard
464v_ShavingBeard_g24_c01.aviShavingBeard
339v_Punch_g23_c02.aviPunch
474v_ShavingBeard_g25_c04.aviShavingBeard
138v_PlayingCello_g11_c01.aviPlayingCello
363v_ShavingBeard_g08_c05.aviShavingBeard
256v_Punch_g10_c05.aviPunch
402v_ShavingBeard_g15_c01.aviShavingBeard
510v_TennisSwing_g12_c07.aviTennisSwing
\n", + "
" + ], + "text/plain": [ + " video_name tag\n", + "421 v_ShavingBeard_g17_c07.avi ShavingBeard\n", + "391 v_ShavingBeard_g13_c02.avi ShavingBeard\n", + "464 v_ShavingBeard_g24_c01.avi ShavingBeard\n", + "339 v_Punch_g23_c02.avi Punch\n", + "474 v_ShavingBeard_g25_c04.avi ShavingBeard\n", + "138 v_PlayingCello_g11_c01.avi PlayingCello\n", + "363 v_ShavingBeard_g08_c05.avi ShavingBeard\n", + "256 v_Punch_g10_c05.avi Punch\n", + "402 v_ShavingBeard_g15_c01.avi ShavingBeard\n", + "510 v_TennisSwing_g12_c07.avi TennisSwing" + ] + }, + "metadata": { + "tags": [] + }, + "execution_count": 42 + } + ] + }, + { + "cell_type": "code", + "metadata": { + "id": "8kXcyOGURj88" + }, + "source": [ + "# The following two methods are taken from this tutorial:\n", + "# https://www.tensorflow.org/hub/tutorials/action_recognition_with_tf_hub\n", + "\n", + "\n", + "def crop_center_square(frame):\n", + " y, x = frame.shape[0:2]\n", + " min_dim = min(y, x)\n", + " start_x = (x // 2) - (min_dim // 2)\n", + " start_y = (y // 2) - (min_dim // 2)\n", + " return frame[start_y : start_y + min_dim, start_x : start_x + min_dim]\n", + "\n", + "\n", + "def load_video(path, max_frames=0, resize=(IMG_SIZE, IMG_SIZE)):\n", + " cap = cv2.VideoCapture(path)\n", + " frames = []\n", + " try:\n", + " while True:\n", + " ret, frame = cap.read()\n", + " if not ret:\n", + " break\n", + " frame = crop_center_square(frame)\n", + " frame = cv2.resize(frame, resize)\n", + " frame = frame[:, :, [2, 1, 0]]\n", + " frames.append(frame)\n", + "\n", + " if len(frames) == max_frames:\n", + " break\n", + " finally:\n", + " cap.release()\n", + " return np.array(frames)" + ], + "execution_count": 43, + "outputs": [] + }, + { + "cell_type": "code", + "metadata": { + "id": "_ExqycyVR0x9", + "colab": { + "base_uri": "https://localhost:8080/" + }, + "outputId": "81954a73-7752-414e-8592-a24b072cd064" + }, + "source": [ + "def build_feature_extractor():\n", + " feature_extractor = tf.keras.applications.InceptionV3(\n", + " weights=\"imagenet\",\n", + " include_top=False,\n", + " pooling=\"avg\",\n", + " input_shape=(IMG_SIZE, IMG_SIZE, 3),\n", + " )\n", + " preprocess_input = tf.keras.applications.inception_v3.preprocess_input\n", + "\n", + " inputs = tf.keras.Input((IMG_SIZE, IMG_SIZE, 3))\n", + " preprocessed = preprocess_input(inputs)\n", + "\n", + " outputs = feature_extractor(preprocessed)\n", + " return tf.keras.Model(inputs, outputs, name=\"feature_extractor\")\n", + "\n", + "feature_extractor = build_feature_extractor()" + ], + "execution_count": 44, + "outputs": [ + { + "output_type": "stream", + "text": [ + "Downloading data from https://storage.googleapis.com/tensorflow/keras-applications/inception_v3/inception_v3_weights_tf_dim_ordering_tf_kernels_notop.h5\n", + "87916544/87910968 [==============================] - 1s 0us/step\n" + ], + "name": "stdout" + } + ] + }, + { + "cell_type": "code", + "metadata": { + "colab": { + "base_uri": "https://localhost:8080/" + }, + "id": "3zEsFu5HSyQ2", + "outputId": "3a809197-81dd-4713-eaac-2ec0ba6cc701" + }, + "source": [ + "label_processor = tf.keras.layers.experimental.preprocessing.StringLookup(\n", + " num_oov_indices=0, vocabulary=np.unique(train_df[\"tag\"])\n", + ")\n", + "print(label_processor.get_vocabulary())" + ], + "execution_count": 45, + "outputs": [ + { + "output_type": "stream", + "text": [ + "['', 'CricketShot', 'PlayingCello', 'Punch', 'ShavingBeard', 'TennisSwing']\n" + ], + "name": "stdout" + } + ] + }, + { + "cell_type": "code", + "metadata": { + "id": "YucRb0fBTBHM", + "colab": { + "base_uri": "https://localhost:8080/" + }, + "outputId": "5dfa0e46-fb4a-4587-f648-b35f5e2cc102" + }, + "source": [ + "def prepare_all_videos(df, root_dir):\n", + " num_samples = len(df)\n", + " video_paths = df[\"video_name\"].values.tolist()\n", + " labels = df[\"tag\"].values\n", + " labels = label_processor(labels[..., None]).numpy()\n", + "\n", + " # `frame_masks` and `frame_features` are what we will feed to our sequence model.\n", + " # `frame_masks` will contain a bunch of booleans denoting if a timestep is\n", + " # masked with padding or not.\n", + " frame_masks = np.zeros(shape=(num_samples, MAX_SEQ_LENGTH), dtype=\"bool\")\n", + " frame_features = np.zeros(\n", + " shape=(num_samples, MAX_SEQ_LENGTH, NUM_FEATURES), dtype=\"float32\"\n", + " )\n", + "\n", + " # For each video.\n", + " for idx, path in enumerate(video_paths):\n", + " # Gather all its frames and add a batch dimension.\n", + " frames = load_video(os.path.join(root_dir, path))\n", + " frames = frames[None, ...]\n", + "\n", + " # Initialize placeholders to store the masks and features of the current video.\n", + " temp_frame_mask = np.zeros(shape=(1, MAX_SEQ_LENGTH,), dtype=\"bool\")\n", + " temp_frame_featutes = np.zeros(\n", + " shape=(1, MAX_SEQ_LENGTH, NUM_FEATURES), dtype=\"float32\"\n", + " )\n", + "\n", + " # Extract features from the frames of the current video.\n", + " for i, batch in enumerate(frames):\n", + " video_length = batch.shape[1]\n", + " length = min(MAX_SEQ_LENGTH, video_length)\n", + " for j in range(length):\n", + " temp_frame_featutes[i, j, :] = feature_extractor.predict(\n", + " batch[None, j, :]\n", + " )\n", + " temp_frame_mask[i, :length] = 1 # 1 = not masked, 0 = masked\n", + "\n", + " frame_features[idx,] = temp_frame_featutes.squeeze()\n", + " frame_masks[idx,] = temp_frame_mask.squeeze()\n", + "\n", + " return (frame_features, frame_masks), labels\n", + "\n", + "if os.path.isfile(checkpoint_dir + 'cnn-lstm/dataset.npz'):\n", + " dataset = np.load(checkpoint_dir + 'cnn-lstm/dataset.npz')\n", + " train_data = (dataset['train_data_0'], dataset['train_data_1'])\n", + " test_data = (dataset['test_data_0'], dataset['test_data_1'])\n", + " train_labels = dataset['train_labels']\n", + " test_labels = dataset['test_labels']\n", + "else:\n", + " train_data, train_labels = prepare_all_videos(train_df, \"train\")\n", + " test_data, test_labels = prepare_all_videos(test_df, \"test\")\n", + "\n", + "print(f\"Frame features in train set: {train_data[0].shape}\")\n", + "print(f\"Frame masks in train set: {train_data[1].shape}\")" + ], + "execution_count": 46, + "outputs": [ + { + "output_type": "stream", + "text": [ + "Frame features in train set: (594, 20, 2048)\n", + "Frame masks in train set: (594, 20)\n" + ], + "name": "stdout" + } + ] + }, + { + "cell_type": "markdown", + "metadata": { + "id": "WpYSOigtTVxh" + }, + "source": [ + "### The Sequence Model" + ] + }, + { + "cell_type": "code", + "metadata": { + "id": "-iV2mumoTKJl", + "colab": { + "base_uri": "https://localhost:8080/" + }, + "outputId": "d848afba-a7ab-4783-a573-af924f52c4dc" + }, + "source": [ + "# Utility for our sequence model.\n", + "def get_sequence_model():\n", + " class_vocab = label_processor.get_vocabulary()\n", + "\n", + " frame_features_input = tf.keras.Input((MAX_SEQ_LENGTH, NUM_FEATURES))\n", + " mask_input = tf.keras.Input((MAX_SEQ_LENGTH,), dtype=\"bool\")\n", + "\n", + " # Refer to the following tutorial to understand the significance of using `mask`:\n", + " # https://tf.keras.io/api/layers/recurrent_layers/gru/\n", + " x = tf.keras.layers.LSTM(64, return_sequences=True, name='LSTM_1')(frame_features_input, mask=mask_input)\n", + " x = tf.keras.layers.LSTM(32, name='LSTM_2')(x)\n", + " # x = tf.keras.layers.GRU(16, return_sequences=True)(frame_features_input, mask=mask_input)\n", + " # x = tf.keras.layers.GRU(8)(x)\n", + " x = tf.keras.layers.Dropout(0.4)(x)\n", + " x = tf.keras.layers.Dense(8, activation=\"relu\")(x)\n", + " output = tf.keras.layers.Dense(len(class_vocab), activation=\"softmax\")(x)\n", + "\n", + " rnn_model = tf.keras.Model([frame_features_input, mask_input], output)\n", + "\n", + " rnn_model.compile(\n", + " loss=\"sparse_categorical_crossentropy\", optimizer=\"adam\", metrics=[\"accuracy\"]\n", + " )\n", + " return rnn_model\n", + "\n", + "# Utility for running experiments.\n", + "def run_experiment():\n", + " filepath = \"/tmp/video_classifier\"\n", + " checkpoint = tf.keras.callbacks.ModelCheckpoint(\n", + " filepath, save_weights_only=True, save_best_only=True, verbose=1\n", + " )\n", + " seq_model = get_sequence_model()\n", + " history = seq_model.fit(\n", + " [train_data[0], train_data[1]],\n", + " train_labels,\n", + " validation_split=0.3,\n", + " epochs=EPOCHS,\n", + " callbacks=[checkpoint],\n", + " )\n", + " seq_model.load_weights(filepath)\n", + " _, accuracy = seq_model.evaluate([test_data[0], test_data[1]], test_labels)\n", + " print(f\"Test accuracy: {round(accuracy * 100, 2)}%\")\n", + " return history, seq_model\n", + "\n", + "train_model = False\n", + "if not load_model('cnn-lstm') or train_model:\n", + " _, models['cnn-lstm'] = run_experiment()\n", + " save_model('cnn-lstm')" + ], + "execution_count": 47, + "outputs": [ + { + "output_type": "stream", + "text": [ + "Model \"cnn-lstm\" loaded with weights.\n" + ], + "name": "stdout" + } + ] + }, + { + "cell_type": "markdown", + "metadata": { + "id": "Ya5FeHCMTips" + }, + "source": [ + "### Inference" + ] + }, + { + "cell_type": "code", + "metadata": { + "id": "ExJXj3TyTkPc", + "colab": { + "base_uri": "https://localhost:8080/", + "height": 0 + }, + "outputId": "31f7cf7a-4e6d-4531-a877-b3b9980c30bc" + }, + "source": [ + "def prepare_single_video(frames):\n", + " frames = frames[None, ...]\n", + " frame_mask = np.zeros(shape=(1, MAX_SEQ_LENGTH,), dtype=\"bool\")\n", + " frame_featutes = np.zeros(shape=(1, MAX_SEQ_LENGTH, NUM_FEATURES), dtype=\"float32\")\n", + " for i, batch in enumerate(frames):\n", + " video_length = batch.shape[1]\n", + " length = min(MAX_SEQ_LENGTH, video_length)\n", + " for j in range(length):\n", + " frame_featutes[i, j, :] = feature_extractor.predict(batch[None, j, :])\n", + " frame_mask[i, :length] = 1 # 1 = not masked, 0 = masked\n", + " return frame_featutes, frame_mask\n", + "\n", + "def sequence_prediction(path):\n", + " class_vocab = label_processor.get_vocabulary()\n", + "\n", + " frames = load_video(os.path.join(\"test\", path))\n", + " frame_features, frame_mask = prepare_single_video(frames)\n", + " probabilities = models['cnn-lstm'].predict([frame_features, frame_mask])[0]\n", + "\n", + " for i in np.argsort(probabilities)[::-1]:\n", + " print(f\" {class_vocab[i]}: {probabilities[i] * 100:5.2f}%\")\n", + " return frames\n", + "\n", + "# This utility is for visualization.\n", + "# Referenced from:\n", + "# https://www.tensorflow.org/hub/tutorials/action_recognition_with_tf_hub\n", + "def to_gif(images):\n", + " converted_images = images.astype(np.uint8)\n", + " imageio.mimsave(\"animation.gif\", converted_images, fps=10)\n", + " return embed.embed_file(\"animation.gif\")\n", + "\n", + "test_video = np.random.choice(test_df[\"video_name\"].values.tolist())\n", + "print(f\"Test video path: {test_video}\")\n", + "test_frames = sequence_prediction(test_video)\n", + "to_gif(test_frames[:MAX_SEQ_LENGTH])" + ], + "execution_count": 48, + "outputs": [ + { + "output_type": "stream", + "text": [ + "Test video path: v_TennisSwing_g05_c03.avi\n", + " Punch: 36.57%\n", + " ShavingBeard: 26.30%\n", + " CricketShot: 20.38%\n", + " PlayingCello: 10.73%\n", + " : 3.56%\n", + " TennisSwing: 2.46%\n" + ], + "name": "stdout" + }, + { + "output_type": "execute_result", + "data": { + "text/html": [ + "" + ], + "text/plain": [ + "" + ] + }, + "metadata": { + "tags": [] + }, + "execution_count": 48 + } + ] + }, + { + "cell_type": "code", + "metadata": { + "colab": { + "base_uri": "https://localhost:8080/" + }, + "id": "48QBTe1JkqDc", + "outputId": "a6046971-942c-498c-85ed-3582c8c76940" + }, + "source": [ + "_, accuracy = models['cnn-lstm'].evaluate([test_data[0], test_data[1]], test_labels)\n", + "print(f\"Test accuracy: {round(accuracy * 100, 2)}%\")" + ], + "execution_count": 49, + "outputs": [ + { + "output_type": "stream", + "text": [ + "7/7 [==============================] - 2s 31ms/step - loss: 1.5262 - accuracy: 0.6562\n", + "Test accuracy: 65.62%\n" + ], + "name": "stdout" + } + ] + }, + { + "cell_type": "code", + "metadata": { + "id": "PZlmJpC8j2PT" + }, + "source": [ + "if not os.path.isfile(checkpoint_dir + 'cnn-lstm/dataset.npz'):\n", + " np.savez_compressed(checkpoint_dir + 'cnn-lstm/dataset',\n", + " train_data_0=train_data[0],\n", + " train_data_1=train_data[1],\n", + " train_labels=train_labels,\n", + " test_data_0=test_data[0],\n", + " test_data_1=test_data[1],\n", + " test_labels=test_labels)" + ], + "execution_count": 50, + "outputs": [] + }, + { + "cell_type": "markdown", + "metadata": { + "id": "xKKBt8IfsoZx" + }, + "source": [ + "### Get Weights" + ] + }, + { + "cell_type": "code", + "metadata": { + "colab": { + "base_uri": "https://localhost:8080/" + }, + "id": "I3R4weJlstC5", + "outputId": "12e6d252-09c7-4445-9977-e5ce2e7fd2d9" + }, + "source": [ + "models['cnn-lstm'].summary()" + ], + "execution_count": 51, + "outputs": [ + { + "output_type": "stream", + "text": [ + "Model: \"model_4\"\n", + "__________________________________________________________________________________________________\n", + "Layer (type) Output Shape Param # Connected to \n", + "==================================================================================================\n", + "input_9 (InputLayer) [(None, 20, 2048)] 0 \n", + "__________________________________________________________________________________________________\n", + "input_10 (InputLayer) [(None, 20)] 0 \n", + "__________________________________________________________________________________________________\n", + "LSTM_1 (LSTM) (None, 20, 64) 540928 input_9[0][0] \n", + " input_10[0][0] \n", + "__________________________________________________________________________________________________\n", + "LSTM_2 (LSTM) (None, 32) 12416 LSTM_1[0][0] \n", + "__________________________________________________________________________________________________\n", + "dropout_6 (Dropout) (None, 32) 0 LSTM_2[0][0] \n", + "__________________________________________________________________________________________________\n", + "dense_6 (Dense) (None, 8) 264 dropout_6[0][0] \n", + "__________________________________________________________________________________________________\n", + "dense_7 (Dense) (None, 6) 54 dense_6[0][0] \n", + "==================================================================================================\n", + "Total params: 553,662\n", + "Trainable params: 553,662\n", + "Non-trainable params: 0\n", + "__________________________________________________________________________________________________\n" + ], + "name": "stdout" + } + ] + }, + { + "cell_type": "code", + "metadata": { + "colab": { + "base_uri": "https://localhost:8080/" + }, + "id": "i9HpitpOtDzO", + "outputId": "85c0a179-fd9e-4f28-8a41-05194adab3e6" + }, + "source": [ + "print(models['cnn-lstm'].get_layer('LSTM_1').get_weights()[0].shape)\n", + "print(models['cnn-lstm'].get_layer('LSTM_2').get_weights()[0].shape)" + ], + "execution_count": 52, + "outputs": [ + { + "output_type": "stream", + "text": [ + "(2048, 256)\n", + "(64, 128)\n" + ], + "name": "stdout" + } + ] + }, + { + "cell_type": "markdown", + "metadata": { + "id": "_E2yRW5gySUT" + }, + "source": [ + "# Scaled SVD Approximation" + ] + }, + { + "cell_type": "code", + "metadata": { + "id": "GbPIVFJ_AeId" + }, + "source": [ + "def get_approx_size(R, k, m, n):\n", + " return R * (m + n + k)" + ], + "execution_count": 53, + "outputs": [] + }, + { + "cell_type": "code", + "metadata": { + "id": "sMPgE_j203Z6" + }, + "source": [ + "def plot_accuracies(model_labels, original_accuracies, approx_accuracies):\n", + " x = np.arange(len(model_labels)) # the label locations\n", + " width = 0.35 # the width of the bars\n", + " fig, ax = plt.subplots()\n", + " rects1 = ax.bar(x - width/2, original_accuracies, width, label='Original')\n", + " rects2 = ax.bar(x + width/2, approx_accuracies, width, label='Approximated')\n", + " # Add some text for labels, title and custom x-axis tick labels, etc.\n", + " ax.set_ylabel('Accuracy')\n", + " ax.set_title('Original Accuracy vs. Approximated.')\n", + " ax.set_xticks(x)\n", + " ax.set_xticklabels(model_labels)\n", + " ax.legend()\n", + " fig.tight_layout()\n", + " plt.show()" + ], + "execution_count": 54, + "outputs": [] + }, + { + "cell_type": "code", + "metadata": { + "colab": { + "base_uri": "https://localhost:8080/" + }, + "id": "ZHZO0PlTyaLh", + "outputId": "1e81b796-d8a1-48d4-f1e0-4d1b12f67db5" + }, + "source": [ + "models['fashion'].summary()\n", + "mnist_dense = [w1, b1] = models['mnist'].get_layer('dense_1').get_weights()\n", + "fashion_mnist_dense = [w2, b2] = models['fashion'].get_layer('dense_1').get_weights()\n", + "print(w1.shape, w2.shape)" + ], + "execution_count": 55, + "outputs": [ + { + "output_type": "stream", + "text": [ + "Model: \"fashion_mnist\"\n", + "_________________________________________________________________\n", + "Layer (type) Output Shape Param # \n", + "=================================================================\n", + "flatten_1 (Flatten) (None, 784) 0 \n", + "_________________________________________________________________\n", + "dense_1 (Dense) (None, 128) 100480 \n", + "_________________________________________________________________\n", + "dense_2 (Dense) (None, 10) 1290 \n", + "=================================================================\n", + "Total params: 101,770\n", + "Trainable params: 101,770\n", + "Non-trainable params: 0\n", + "_________________________________________________________________\n", + "(784, 128) (784, 128)\n" + ], + "name": "stdout" + } + ] + }, + { + "cell_type": "code", + "metadata": { + "id": "4BMrOjXEy51y" + }, + "source": [ + "R = 45\n", + "metric = 'mse'\n", + "threshold = 1e-5\n", + "scalers = [1., 1.]\n", + "\n", + "def run_alg3_for_mnist(scaler, apply_scaling_at_alg2, log_to_tensorboard=False):\n", + " if log_to_tensorboard:\n", + " logname = 'mnist'\n", + " logname += f'_R{R}_scaler0_{scaler[0]}_scaler1_{scaler[1]}_{metric}_Th{threshold}'\n", + " logname += '_date' + datetime.now().strftime('%Y%m%d-%H%M%S')\n", + " writer = tf.summary.create_file_writer(os.path.join('/gdrive/My Drive/Colab Notebooks/svd/tensorboard', logname))\n", + " %reload_ext tensorboard\n", + " else:\n", + " writer = None\n", + "\n", + " [w1, b1] = models['mnist'].get_layer('dense_1').get_weights()\n", + " [w2, b2] = models['fashion'].get_layer('dense_1').get_weights()\n", + " plotdata = {}\n", + " w_approx = algorithm3_inverse(*algorithm3([w1, w2], \\\n", + " num_refinements=R, \\\n", + " num_sub_matrix=1, \\\n", + " decomposition='eigen', \\\n", + " stop_threshold=threshold, \\\n", + " metric=metric, \\\n", + " scaler=scaler, \\\n", + " report_writer=writer, \\\n", + " apply_scaling_at_alg2=apply_scaling_at_alg2, \\\n", + " plotdata=plotdata))\n", + " # Obtain original accuracies.\n", + " _, mnist_acc = models['mnist'].evaluate(x_test, y_test, verbose=0)\n", + " _, fashion_mnist_acc = models['fashion'].evaluate(fashion_test_images, fashion_test_labels, verbose=0)\n", + " print('')\n", + " print('[ORIGINAL] MNIST - Test accuracy: {:.1f}%'.format(100. * mnist_acc))\n", + " print('[ORIGINAL] Fashion MNIST - Test accuracy: {:.1f}%'.format(100. * fashion_mnist_acc))\n", + " \n", + " # Set approximated weights and evaluate.\n", + " models['mnist'].get_layer('dense_1').set_weights([w_approx[0], b1])\n", + " models['fashion'].get_layer('dense_1').set_weights([w_approx[1], b2])\n", + " print('')\n", + "\n", + " _, mnist_acc_approx = models['mnist'].evaluate(x_test, y_test, verbose=0)\n", + " _, fashion_mnist_acc_approx = models['fashion'].evaluate(fashion_test_images, fashion_test_labels, verbose=0)\n", + " print('[APPROX] MNIST - Test accuracy: {:.1f}%'.format(100. * mnist_acc_approx))\n", + " print('[APPROX] Fashion MNIST - Test accuracy: {:.1f}%'.format(100. * fashion_mnist_acc_approx))\n", + "\n", + " print('\\nMNIST - Accuracy drop: {:.1f}%'.format(100. * (mnist_acc - mnist_acc_approx)))\n", + " print('Fashion MNIST - Accuracy drop: {:.1f}%'.format(100. * (fashion_mnist_acc - fashion_mnist_acc_approx)))\n", + " print('')\n", + "\n", + " # Restore original weights and plot.\n", + " models['mnist'].get_layer('dense_1').set_weights([w1, b1])\n", + " models['fashion'].get_layer('dense_1').set_weights([w2, b2])\n", + "\n", + " plot_accuracies(['mnist', 'fashion'], [mnist_acc, fashion_mnist_acc],\n", + " [mnist_acc_approx, fashion_mnist_acc_approx])\n", + " return w_approx[0], w_approx[1], plotdata" + ], + "execution_count": 58, + "outputs": [] + }, + { + "cell_type": "markdown", + "metadata": { + "id": "hBB7um5b28BU" + }, + "source": [ + "## Baseline" + ] + }, + { + "cell_type": "code", + "metadata": { + "id": "5Jn7ZRWr22W7" + }, + "source": [ + "_, _, plotdata = run_alg3_for_mnist(None, apply_scaling_at_alg2=True)" + ], + "execution_count": null, + "outputs": [] + }, + { + "cell_type": "code", + "metadata": { + "colab": { + "base_uri": "https://localhost:8080/", + "height": 319 + }, + "id": "uDtgDz6x3CUw", + "outputId": "f2e19dfb-87b6-4ff0-ff4b-d1ae9a6f3d2a" + }, + "source": [ + "for matrix in plotdata:\n", + " plt.plot(plotdata[matrix], label=matrix)\n", + " print(plotdata[matrix][40])\n", + "plt.legend()" + ], + "execution_count": 65, + "outputs": [ + { + "output_type": "stream", + "text": [ + "0.02243629066508845\n", + "0.03342261809473339\n" + ], + "name": "stdout" + }, + { + "output_type": "execute_result", + "data": { + "text/plain": [ + "" + ] + }, + "metadata": { + "tags": [] + }, + "execution_count": 65 + }, + { + "output_type": "display_data", + "data": { + "image/png": "iVBORw0KGgoAAAANSUhEUgAAAXoAAAD4CAYAAADiry33AAAABHNCSVQICAgIfAhkiAAAAAlwSFlzAAALEgAACxIB0t1+/AAAADh0RVh0U29mdHdhcmUAbWF0cGxvdGxpYiB2ZXJzaW9uMy4yLjIsIGh0dHA6Ly9tYXRwbG90bGliLm9yZy+WH4yJAAAgAElEQVR4nO3dd3xUZdr/8c+VhBI6BEQgIKEo0pEIdimiIAIWFFBXVGy78sha1rLPT3TZ1dUVdfXRXVdBxArKrisqigUVbEgQRIpoKGoAEQNioQau3x9nwBhSBjLJSWa+79drXpk5555zrjmBa+7c5y7m7oiISPxKCjsAEREpW0r0IiJxToleRCTOKdGLiMQ5JXoRkTiXEnYABTVs2NBbtmwZdhgiIpXK/Pnzv3P3RoXtq3CJvmXLlmRlZYUdhohIpWJmXxa1T003IiJxToleRCTOKdGLiMS5CtdGLyLlY+fOneTk5LBt27awQ5H9UL16ddLT06lSpUrU71GiF0lQOTk51K5dm5YtW2JmYYcjUXB3cnNzycnJISMjI+r3qelGJEFt27aNtLQ0JflKxMxIS0vb77/ClOhFEpiSfOVzIL+z+En0P66HV2+CrZvCjkREpEKJn0T/8wb48B/w/gNhRyIiUqHET6I/uCN0OBM+/Cf8tCHsaEQkCmbG+eefv/d1Xl4ejRo14rTTTgNg/fr1nHbaaXTp0oX27dtz6qmnArB69WpSU1Pp2rXr3sfjjz8OBDcs+/Tpww8//FDq+BYuXMiMGTOK3J+VlcVVV11V7DEuvPBCMjIyeOihhwDYvn07w4YNo02bNvTs2ZPVq1cDMGfOHNq3b0/Hjh0BeOmllxg7dmypPwPEU6IH6P1HyNsK7/097EhEJAo1a9Zk8eLFbN26FYDXX3+dZs2a7d0/duxY+vXrxyeffMLSpUu544479u5r3bo1Cxcu3Pu44IILAJgxYwZdunShTp06pY6vuESfl5dHZmYm999/f4nHueuuu7jiiisAmDhxIvXr1yc7O5urr76aG264AYDjjz/+V+caOHAgL774Ilu2bCn154iv7pUN20KXEfDRI3D0lVCnadgRiVQKf3pxCUvXlr4GnF/7pnW4ZVCHEsudeuqpvPzyywwdOpRnnnmGESNGMGfOHADWrVvHySefvLds586dSzzeU089xWWXXQYENf/+/ftz1FFH8f7773PkkUdy0UUXccstt/Dtt9/y1FNP0aNHDz766CPGjBnDtm3bSE1NZdKkSWRkZDB27Fi2bt3Ku+++y0033cSyZctYsWIFK1eupEWLFlx++eWMHz+el156iTFjxpCWlsbYsWOZOXMmt912G2+//fY+8b3wwgvceuutAAwdOpTRo0fj7vvcZDUzevXqxUsvvcQ555xT4ucuTnzV6AFOvAF8N8weH3YkIhKF4cOHM2XKFLZt28aiRYvo2bPn3n1XXnklo0aNonfv3tx2222sXbt2774VK1b8qulmz5fDe++9R/fu3feWy87O5tprr+Wzzz7js88+4+mnn+bdd99l/Pjx3H777QC0a9eOOXPmsGDBAsaNG8cf//hHqlatyrhx4xg2bBgLFy5k2LBhACxdupQ33niDZ5555lef469//StTp07lrbfe4qqrrmLSpEkkJe2bYtesWUPz5s0BSElJoW7duuTm5hZ6bTIzM/d+rtKIrxo9QP1D4IgL4OPJcOxVUL9l2BGJVHjR1LzLSufOnVm9ejXPPPPM3jb4PU455RRWrlzJq6++yiuvvEK3bt1YvHgx8EvTTUEbN26kdu3ae19nZGTQqVMnADp06EDfvn0xMzp16rS3fXzz5s2MHDmSL774AjNj586dRcY7ePBgUlNT99leo0YNHnnkEU444QTuvfdeWrduvd/XoqCDDjroV19uByr+avQAJ/wBklLgnb+FHYmIRGHw4MFcd911jBgxYp99DRo04Nxzz+WJJ57gyCOPZPbs2cUeKyUlhd27d+99Xa1atb3Pk5KS9r5OSkoiLy8PgJtvvpnevXuzePFiXnzxxWIHJNWsWbPIfZ9++ilpaWnFJudmzZrx9ddfA0E7/+bNm0lLSyu07J6mpNKKz0RfpwkceQl88gxs+DzsaESkBBdffDG33HLL3pr3HrNmzdp7M/LHH39kxYoVtGjRothjHXbYYaxcuXK/zr958+a9N4Efe+yxvdtr167Njz/+GNUxvvzyS+6++24WLFjAK6+8wty5cwstN3jwYCZPngzAtGnT6NOnT5GDoD7//PO9vXBKIz4TPcCxv4eUVHj7r2FHIiIlSE9PL7Sb4vz588nMzKRz584cffTRXHLJJRx55JHAvm30e3q/DBw4sNCboMW5/vrruemmm+jWrdveWj5A7969Wbp0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\n", + "text/plain": [ + "
" + ] + }, + "metadata": { + "tags": [], + "needs_background": "light" + } + } + ] + }, + { + "cell_type": "markdown", + "metadata": { + "id": "mEmpz_9g3DJo" + }, + "source": [ + "## Applying Scaling at Algorithm 3" + ] + }, + { + "cell_type": "code", + "metadata": { + "id": "ncWsG3Eb9GF-" + }, + "source": [ + "_, _, plotdata_alg3 = run_alg3_for_mnist([1., 1000.], apply_scaling_at_alg2=False)" + ], + "execution_count": null, + "outputs": [] + }, + { + "cell_type": "code", + "metadata": { + "colab": { + "base_uri": "https://localhost:8080/", + "height": 319 + }, + "id": "YAr0LOLV9Kan", + "outputId": "068132a5-2021-4409-b6da-49946471640e" + }, + "source": [ + "for matrix in plotdata_alg3:\n", + " plt.plot(plotdata_alg3[matrix], label=matrix)\n", + " print(plotdata_alg3[matrix][40])\n", + "plt.legend()" + ], + "execution_count": 66, + "outputs": [ + { + "output_type": "stream", + "text": [ + "0.025791287281387982\n", + "65961.02744391997\n" + ], + "name": "stdout" + }, + { + "output_type": "execute_result", + "data": { + "text/plain": [ + "" + ] + }, + "metadata": { + "tags": [] + }, + "execution_count": 66 + }, + { + "output_type": "display_data", + "data": { + "image/png": "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MP4W+L9zYWQ7eOuXQX9Axu3Qdzw8sB7umAkdfgGNr4wkEUASXxkU5xt8aWnRogXr169n7Nix+Zpjrr32WtatW8f06dOZNm0al156KcuWLQMKbybatWsXVapUObrduHFjmjdvDsBFF11Ex44dMTOaN29+tL1+z549ZGZmsmbNGsyMgwcPFhpv9+7dqVSpUr7yM888kz/+8Y9cddVVPPPMMzRp0uSEz8Wxzj777K8lQJGkkrsnaPJZOxvWzoLPNwTlVdPggm5wbjtofBVUqXu8V4lE0iaDqHXv3p3//d//Ze7cufm+JdesWZMbb7yRG2+8kW7duvHOO+987Zv/scqVK8fhw4ePfis/44z/fHMoU6bM0e0yZcqQl5cHwIMPPkj79u15/fXXWb9+Pe3atSv09StXrlzovqVLl1KrVq3jfoDXr1+fjRs3kpaWRl5eHnv27KFWrVoF1j3SbCWSFA4fCtr6s2cFCSBnYdDuX6FK8KH/rfugSQeoeS7E+f00Sgal5Pbbb6d69eo0b978a+3ss2fPpm3btpx55pns27ePtWvXFji1Rqzzzz+fdevW0bRp02L//j179hztuB41atTR8ipVqrBv375ivcann37KU089xeLFi+natSs9e/b8WpPXEd27d2f06NFcccUVTJw4kQ4dOhR6I9nHH398dHSRSELatzX44M9+K/j55W7A4JyW8J3/CT78G7SGsok115aSQSlJS0srcIjmokWLGDhw4NFv+3fccQeXX34569evP9pncMTtt9/Offfdx3XXXcfcuXNPKBncf//9ZGZm8uijj3LdddcdLW/fvj1PPvkkLVu2ZMiQIYUe7+7079+f4cOHc8455/Diiy9y6623snDhwnx1+/fvzy233ELTpk2pWbMm48aNK/R158yZwxNPPFHs9yESuUMHg1E/2W8Fj61Lg/LKZ8N5XaBpRzi3PVQu+Go4UViiDunPyMjwY1c6W7lyJRdeeGFEEZWeLVu20K9fP2bOnBl1KEBwn0G3bt2ODi09nvXr19OtWzeWLVvGtm3buPHGG5k1a1a+esn6bycJ6osdkD0TPp4Ba+fAgT1Qphw0vCL45t/0aqh7MRQwoCKemdkidy9w7LiuDBJAvXr1uPPOO9m7d2+J3GtwqqpVq8aDDz7IZ599xt13311ovXnz5nHPPfdQu3ZtADZs2MBTTz11usIU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\n", + "text/plain": [ + "
" + ] + }, + "metadata": { + "tags": [], + "needs_background": "light" + } + } + ] + }, + { + "cell_type": "markdown", + "metadata": { + "id": "H89VoqI63Its" + }, + "source": [ + "## Applying Scaling at Algorithm 2" + ] + }, + { + "cell_type": "code", + "metadata": { + "colab": { + "base_uri": "https://localhost:8080/", + "height": 169 + }, + "id": "fSBD29VE9Q_M", + "outputId": "56f656f6-eae0-4afc-9811-d28e7cbc3103" + }, + "source": [ + "_, _, plotdata_alg2 = run_alg3_for_mnist([1., 20.], apply_scaling_at_alg2=True)" + ], + "execution_count": 56, + "outputs": [ + { + "output_type": "error", + "ename": "NameError", + "evalue": "ignored", + "traceback": [ + "\u001b[0;31m---------------------------------------------------------------------------\u001b[0m", + "\u001b[0;31mNameError\u001b[0m Traceback (most recent call last)", + "\u001b[0;32m\u001b[0m in \u001b[0;36m\u001b[0;34m()\u001b[0m\n\u001b[0;32m----> 1\u001b[0;31m \u001b[0m_\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0m_\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mplotdata2\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mrun_alg3_for_mnist\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m[\u001b[0m\u001b[0;36m1.\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0;36m20.\u001b[0m\u001b[0;34m]\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mapply_scaling_at_alg2\u001b[0m\u001b[0;34m=\u001b[0m\u001b[0;32mTrue\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m", + "\u001b[0;31mNameError\u001b[0m: name 'run_alg3_for_mnist' is not defined" + ] + } + ] + }, + { + "cell_type": "code", + "metadata": { + "colab": { + "base_uri": "https://localhost:8080/", + "height": 283 + }, + "id": "0H6d7l1l9Mhf", + "outputId": "18146a7d-cf3d-4cc9-d657-a81b256a60e1" + }, + "source": [ + "for matrix in plotdata:\n", + " plt.plot(plotdata[matrix], label=matrix)\n", + "plt.legend()" + ], + "execution_count": 126, + "outputs": [ + { + "output_type": "execute_result", + "data": { + "text/plain": [ + "" + ] + }, + "metadata": { + "tags": [] + }, + "execution_count": 126 + }, + { + "output_type": "display_data", + "data": { + "image/png": "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\n", + "text/plain": [ + "
" + ] + }, + "metadata": { + "tags": [], + "needs_background": "light" + } + } + ] + }, + { + "cell_type": "code", + "metadata": { + "id": "9pw_-N3ZMBpU" + }, + "source": [ + "" + ], + "execution_count": null, + "outputs": [] + }, + { + "cell_type": "markdown", + "metadata": { + "id": "OW4PnHDb9NeQ" + }, + "source": [ + "## Additional Plotting" + ] + }, + { + "cell_type": "code", + "metadata": { + "colab": { + "base_uri": "https://localhost:8080/", + "height": 264 + }, + "id": "YkjBk2uk3vh5", + "outputId": "76424b10-61dc-4028-e067-160d48e38d0c" + }, + "source": [ + "plt.subplot(1, 3, 1)\n", + "plt.imshow(w1[:16,:16]) #, cmap=plt.cm.BuPu_r)\n", + "plt.subplot(1, 3, 2)\n", + "plt.imshow(w1_approx[:16,:16]) #, cmap=plt.cm.BuPu_r)\n", + "plt.subplot(1, 3, 3)\n", + "plt.imshow(w1[:16,:16] - w1_approx[:16,:16]) #, cmap=plt.cm.BuPu_r)\n", + "\n", + "plt.subplots_adjust(bottom=0.1, right=0.8, top=0.9)\n", + "cax = plt.axes([0.85, 0.1, 0.075, 0.8])\n", + "plt.colorbar(cax=cax)\n", + "plt.show()" + ], + "execution_count": null, + "outputs": [ + { + "output_type": "display_data", + "data": { + "image/png": "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\n", + "text/plain": [ + "
" + ] + }, + "metadata": { + "tags": [], + "needs_background": "light" + } + } + ] + }, + { + "cell_type": "code", + "metadata": { + "colab": { + "base_uri": "https://localhost:8080/", + "height": 265 + }, + "id": "ROem_bjX6Omt", + "outputId": "37efc5b4-9351-468b-dcc8-552050b6db35" + }, + "source": [ + "n, bins, patches = plt.hist(w1_approx)\n", + "plt.show()" + ], + "execution_count": null, + "outputs": [ + { + "output_type": "display_data", + "data": { + "image/png": "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\n", + "text/plain": [ + "
" + ] + }, + "metadata": { + "tags": [], + "needs_background": "light" + } + } + ] + }, + { + "cell_type": "code", + "metadata": { + "colab": { + "base_uri": "https://localhost:8080/" + }, + "id": "11hBiLThyDAn", + "outputId": "0d0732a9-bb50-4b99-90cb-d325bd8b77ef" + }, + "source": [ + "print(f'Mean - orig/approx: {w1.mean()} / {w1_approx.mean()}')\n", + "print(f'Standard dev - orig/approx: {w1.std()} / {w1_approx.std()}')" + ], + "execution_count": null, + "outputs": [ + { + "output_type": "stream", + "text": [ + "Mean - orig/approx: -0.0028598906937986612 / 4.747437826569501e-05\n", + "Standard dev - orig/approx: 0.16066423058509827 / 0.012329364365807786\n" + ], + "name": "stdout" + } + ] + }, + { + "cell_type": "code", + "metadata": { + "colab": { + "base_uri": "https://localhost:8080/", + "height": 301 + }, + "id": "CDhyTTdv5wt3", + "outputId": "1a07f185-9ef5-4119-bc71-c892f0b45f25" + }, + "source": [ + "cr = []\n", + "\n", + "m, n = w1.shape\n", + "for r in range(R, (min(m, n))):\n", + " tmp = 2 * m * n / get_approx_size(r, 2, m, n)\n", + " if tmp < 2:\n", + " break\n", + " cr.append(tmp)\n", + "\n", + "print('Current Compression Ratio (CR):', 2 * m * n / get_approx_size(R, 2, m, n))\n", + "plt.plot(cr)" + ], + "execution_count": null, + "outputs": [ + { + "output_type": "stream", + "text": [ + "Current Compression Ratio (CR): 6.862144420131291\n" + ], + "name": "stdout" + }, + { + "output_type": "execute_result", + "data": { + "text/plain": [ + "[]" + ] + }, + "metadata": { + "tags": [] + }, + "execution_count": 68 + }, + { + "output_type": "display_data", + "data": { + "image/png": "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\n", + "text/plain": [ + "
" + ] + }, + "metadata": { + "tags": [], + "needs_background": "light" + } + } + ] + }, + { + "cell_type": "markdown", + "metadata": { + "id": "rhuPyqNv5Pxk" + }, + "source": [ + "# More than 2 Matrix Approximation" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "id": "zY1BfLH75W2l" + }, + "source": [ + "## Dividing weight matrix into 4" + ] + }, + { + "cell_type": "code", + "metadata": { + "colab": { + "base_uri": "https://localhost:8080/" + }, + "id": "do28lklc5gLG", + "outputId": "e73d1c51-b0ed-4401-f58c-834a3ee87a27" + }, + "source": [ + "models['fashion'].summary()\n", + "mnist_dense = [w, b] = models['mnist'].get_layer('dense_1').get_weights()\n", + "print(w.shape)\n", + "r, h = w.shape[0] // 2, w.shape[1] // 2\n", + "blocks = np.reshape(w, (4, r, h))\n", + "tmp = np.reshape(blocks, w.shape)\n", + "print(blocks.shape)\n", + "print(np.allclose(w, tmp))" + ], + "execution_count": null, + "outputs": [ + { + "output_type": "stream", + "text": [ + "Model: \"fashion_mnist\"\n", + "_________________________________________________________________\n", + "Layer (type) Output Shape Param # \n", + "=================================================================\n", + "flatten_1 (Flatten) (None, 784) 0 \n", + "_________________________________________________________________\n", + "dense_1 (Dense) (None, 128) 100480 \n", + "_________________________________________________________________\n", + "dense_2 (Dense) (None, 10) 1290 \n", + "=================================================================\n", + "Total params: 101,770\n", + "Trainable params: 101,770\n", + "Non-trainable params: 0\n", + "_________________________________________________________________\n", + "(784, 128)\n", + "(4, 392, 64)\n", + "True\n" + ], + "name": "stdout" + } + ] + }, + { + "cell_type": "code", + "metadata": { + "colab": { + "base_uri": "https://localhost:8080/" + }, + "id": "I7EF65FC7LR0", + "outputId": "c7b9cc8e-65ba-4140-bba1-8647764bb1e3" + }, + "source": [ + "R = 64\n", + "metric = 'mse'\n", + "threshold = 1e-5\n", + "scaler = [1.] * blocks.shape[0]\n", + "\n", + "logname = 'mnist_4blocks'\n", + "logname += f'_R{R}_scaler0_{scaler[0]}_scaler1_{scaler[1]}_{metric}_Th{threshold}'\n", + "logname += '_date' + datetime.now().strftime('%Y%m%d-%H%M%S')\n", + "writer = tf.summary.create_file_writer(os.path.join('/gdrive/My Drive/Colab Notebooks/svd/tensorboard', logname))\n", + "%reload_ext tensorboard\n", + "\n", + "%time w_approx = algorithm3_inverse(*algorithm3(blocks, \\\n", + " num_refinements=R, \\\n", + " num_sub_matrix=1, \\\n", + " decomposition='eigen', \\\n", + " stop_threshold=threshold, \\\n", + " metric=metric, \\\n", + " scaler=scaler, \\\n", + " report_writer=writer))" + ], + "execution_count": null, + "outputs": [ + { + "output_type": "stream", + "text": [ + "CPU times: user 36 s, sys: 19.5 s, total: 55.5 s\n", + "Wall time: 28.6 s\n" + ], + "name": "stdout" + } + ] + }, + { + "cell_type": "code", + "metadata": { + "colab": { + "base_uri": "https://localhost:8080/", + "height": 404 + }, + "id": "QHpnUNBG8aVe", + "outputId": "05a8f3c4-21ee-43c4-8feb-e46266a7d92c" + }, + "source": [ + "k, m, n = blocks.shape\n", + "print(f'CR: {k * m * n / get_approx_size(R, k, m, n)}')\n", + "\n", + "models['mnist'].get_layer('dense_1').set_weights([w, b])\n", + "_, mnist_acc = models['mnist'].evaluate(x_test, y_test, verbose=0)\n", + "print('MNIST - Test accuracy:', mnist_acc)\n", + "\n", + "models['mnist'].get_layer('dense_1').set_weights([np.reshape(w_approx, w.shape), b])\n", + "print('')\n", + "\n", + "_, mnist_acc_approx = models['mnist'].evaluate(x_test, y_test, verbose=0)\n", + "print('MNIST - Test accuracy:', mnist_acc_approx)\n", + "\n", + "print('\\nMNIST - Accuracy drop:', mnist_acc - mnist_acc_approx)\n", + "\n", + "plot_accuracies(['mnist'], [mnist_acc], [mnist_acc_approx])" + ], + "execution_count": null, + "outputs": [ + { + "output_type": "stream", + "text": [ + "CR: 3.408695652173913\n", + "MNIST - Test accuracy: 0.9664999842643738\n", + "\n", + "MNIST - Test accuracy: 0.9455999732017517\n", + "\n", + "MNIST - Accuracy drop: 0.02090001106262207\n" + ], + "name": "stdout" + }, + { + "output_type": "display_data", + "data": { + "image/png": "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\n", + "text/plain": [ + "
" + ] + }, + "metadata": { + "tags": [], + "needs_background": "light" + } + } + ] + }, + { + "cell_type": "markdown", + "metadata": { + "id": "ukjOI4iC-uZq" + }, + "source": [ + "# Different Sizes Approximation" + ] + }, + { + "cell_type": "code", + "metadata": { + "colab": { + "base_uri": "https://localhost:8080/" + }, + "id": "9UVwhZqY_c5-", + "outputId": "9b636135-0888-4a9d-b749-6c99818afea6" + }, + "source": [ + "w1 = np.random.randint(9, size=(4, 8))\n", + "w2 = np.random.randint(9, size=(5, 4))\n", + "\n", + "max_shape = max_r, max_c = max(w1.shape[0], w2.shape[0]), max(w1.shape[1], w2.shape[1])\n", + "print(max_shape)\n", + "\n", + "padded_w1 = np.zeros(max_shape)\n", + "padded_w2 = np.zeros(max_shape)\n", + "padded_w1[:w1.shape[0], :w1.shape[1]] = w1\n", + "padded_w2[:w2.shape[0], :w2.shape[1]] = w2\n", + "\n", + "print(w1)\n", + "print(w2)\n", + "print(padded_w1)\n", + "print(padded_w2)\n", + "\n", + "def pad_matrices(matrices):\n", + " max_r = max([m.shape for m in matrices],key=lambda item:item[0])[0]\n", + " max_c = max([m.shape for m in matrices],key=lambda item:item[1])[1]\n", + " padded_matrices = []\n", + " for i in range(len(matrices)):\n", + " z = np.zeros((max_r, max_c))\n", + " z[:matrices[i].shape[0], :matrices[i].shape[1]] = matrices[i]\n", + " padded_matrices.append(z)\n", + " return padded_matrices\n", + "\n", + "pad_matrices([w1, w2])" + ], + "execution_count": null, + "outputs": [ + { + "output_type": "stream", + "text": [ + "(5, 8)\n", + "[[7 2 7 6 4 2 4 0]\n", + " [1 2 6 0 7 4 2 8]\n", + " [3 1 0 6 7 1 3 6]\n", + " [1 8 5 8 0 1 1 6]]\n", + "[[4 8 6 1]\n", + " [0 8 8 2]\n", + " [0 7 3 7]\n", + " [6 1 2 1]\n", + " [5 0 8 3]]\n", + "[[7. 2. 7. 6. 4. 2. 4. 0.]\n", + " [1. 2. 6. 0. 7. 4. 2. 8.]\n", + " [3. 1. 0. 6. 7. 1. 3. 6.]\n", + " [1. 8. 5. 8. 0. 1. 1. 6.]\n", + " [0. 0. 0. 0. 0. 0. 0. 0.]]\n", + "[[4. 8. 6. 1. 0. 0. 0. 0.]\n", + " [0. 8. 8. 2. 0. 0. 0. 0.]\n", + " [0. 7. 3. 7. 0. 0. 0. 0.]\n", + " [6. 1. 2. 1. 0. 0. 0. 0.]\n", + " [5. 0. 8. 3. 0. 0. 0. 0.]]\n" + ], + "name": "stdout" + }, + { + "output_type": "execute_result", + "data": { + "text/plain": [ + "[array([[7., 2., 7., 6., 4., 2., 4., 0.],\n", + " [1., 2., 6., 0., 7., 4., 2., 8.],\n", + " [3., 1., 0., 6., 7., 1., 3., 6.],\n", + " [1., 8., 5., 8., 0., 1., 1., 6.],\n", + " [0., 0., 0., 0., 0., 0., 0., 0.]]),\n", + " array([[4., 8., 6., 1., 0., 0., 0., 0.],\n", + " [0., 8., 8., 2., 0., 0., 0., 0.],\n", + " [0., 7., 3., 7., 0., 0., 0., 0.],\n", + " [6., 1., 2., 1., 0., 0., 0., 0.],\n", + " [5., 0., 8., 3., 0., 0., 0., 0.]])]" + ] + }, + "metadata": { + "tags": [] + }, + "execution_count": 87 + } + ] + }, + { + "cell_type": "code", + "metadata": { + "colab": { + "base_uri": "https://localhost:8080/" + }, + "id": "DPDdcWtdn9YB", + "outputId": "9effbc7a-29b7-46c8-cd7b-2948d0c09f2e" + }, + "source": [ + "import operator\n", + "\n", + "def get_cr_multi_size_matrix(R, matrices):\n", + " max_m = max([m.shape for m in matrices],key=lambda item:item[0])[0]\n", + " max_n = max([m.shape for m in matrices],key=lambda item:item[1])[1]\n", + " approx_size = get_approx_size(R, len(matrices), max_m, max_n)\n", + " orig_size = sum(map(lambda x: operator.mul(*x.shape), matrices))\n", + " return orig_size / approx_size\n", + "\n", + "w1 = np.random.randint(9, size=(4, 8))\n", + "w2 = np.random.randint(9, size=(5, 4))\n", + "\n", + "orig_size = operator.mul(*w1.shape) + operator.mul(*w2.shape)\n", + "print(orig_size)\n", + "get_cr_multi_size_matrix(1, [w1, w2])" + ], + "execution_count": null, + "outputs": [ + { + "output_type": "stream", + "text": [ + "52\n" + ], + "name": "stdout" + }, + { + "output_type": "execute_result", + "data": { + "text/plain": [ + "3.466666666666667" + ] + }, + "metadata": { + "tags": [] + }, + "execution_count": 97 + } + ] + }, + { + "cell_type": "code", + "metadata": { + "colab": { + "base_uri": "https://localhost:8080/", + "height": 283 + }, + "id": "2gm0zUYTsHtz", + "outputId": "f4ef0364-7818-40cb-e4e0-7223d7d1b84a" + }, + "source": [ + "cr = []\n", + "cr_small = []\n", + "cr_big = []\n", + "\n", + "small_size = 128\n", + "medium_size = 512\n", + "large_size = 1024\n", + "w1 = np.random.randint(9, size=(medium_size, small_size))\n", + "w2 = np.random.randint(9, size=(large_size, medium_size))\n", + "\n", + "for r in range(small_size // 4, small_size):\n", + " m, n = w1.shape\n", + " tmp = 2 * m * n / get_approx_size(r, 2, m, n)\n", + " cr_small.append(tmp)\n", + " m, n = w2.shape\n", + " tmp = 2 * m * n / get_approx_size(r, 2, m, n)\n", + " cr_big.append(tmp)\n", + " tmp = get_cr_multi_size_matrix(r, [w1, w2])\n", + " if tmp < 2:\n", + " break\n", + " cr.append(tmp)\n", + "\n", + "plt.plot(cr, label='CR')\n", + "plt.plot(cr_small, label='CR_small')\n", + "plt.plot(cr_big, label='CR_big')\n", + "plt.legend()" + ], + "execution_count": null, + "outputs": [ + { + "output_type": "execute_result", + "data": { + "text/plain": [ + "" + ] + }, + "metadata": { + "tags": [] + }, + "execution_count": 98 + }, + { + "output_type": "display_data", + "data": { + "image/png": "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\n", + "text/plain": [ + "
" + ] + }, + "metadata": { + "tags": [], + "needs_background": "light" + } + } + ] + }, + { + "cell_type": "markdown", + "metadata": { + "id": "euTcBc3P_aoN" + }, + "source": [ + "## CNN-LSTM Model" + ] + }, + { + "cell_type": "code", + "metadata": { + "colab": { + "base_uri": "https://localhost:8080/" + }, + "id": "QzUlHRh0v5Lm", + "outputId": "f0c8f966-4aa7-43c2-8806-f08c6f5ce9e0" + }, + "source": [ + "print(models['cnn-lstm'].get_layer('LSTM_1').get_weights()[0].shape)\n", + "print(models['cnn-lstm'].get_layer('LSTM_2').get_weights()[0].shape)\n", + "print(len(models['cnn-lstm'].get_layer('LSTM_1').get_weights()))\n", + "print(len(models['cnn-lstm'].get_layer('LSTM_2').get_weights()))\n", + "\n", + "print(models['cnn-lstm'].get_layer('LSTM_2').get_weights()[1].shape)\n", + "\n", + "[w1, r1, b1] = models['cnn-lstm'].get_layer('LSTM_1').get_weights()\n", + "[w2, r2, b2] = models['cnn-lstm'].get_layer('LSTM_2').get_weights()\n", + "\n", + "[w1_pad, w2_pad] = pad_matrices([w1, w2])\n", + "print(w1_pad, w2_pad)\n", + "print(w1_pad.shape)\n", + "print(w2_pad.shape)" + ], + "execution_count": null, + "outputs": [ + { + "output_type": "stream", + "text": [ + "(2048, 256)\n", + "(64, 128)\n", + "3\n", + "3\n", + "(32, 128)\n", + "[[ 0.03283332 0.03514677 -0.00596567 ... 0.03670166 -0.00393717\n", + " -0.0284326 ]\n", + " [-0.01096857 -0.0448408 -0.02966657 ... 0.01016361 -0.05727449\n", + " 0.02986955]\n", + " [-0.00811409 -0.0135733 -0.04766004 ... 0.04387834 -0.00304517\n", + " 0.02890401]\n", + " ...\n", + " [-0.00517103 0.01756404 0.01726159 ... -0.04113563 -0.02533144\n", + " 0.04300131]\n", + " [-0.01353051 0.02406969 0.00367547 ... 0.01924247 -0.04716729\n", + " 0.02338111]\n", + " [-0.03106386 -0.03033421 0.03282609 ... 0.0066899 0.00302576\n", + " -0.03358177]] [[-0.05971472 -0.14265421 0.13733262 ... 0. 0.\n", + " 0. ]\n", + " [ 0.02199466 0.14343984 0.07385601 ... 0. 0.\n", + " 0. ]\n", + " [ 0.06103988 0.01135218 0.11987313 ... 0. 0.\n", + " 0. ]\n", + " ...\n", + " [ 0. 0. 0. ... 0. 0.\n", + " 0. ]\n", + " [ 0. 0. 0. ... 0. 0.\n", + " 0. ]\n", + " [ 0. 0. 0. ... 0. 0.\n", + " 0. ]]\n", + "(2048, 256)\n", + "(2048, 256)\n" + ], + "name": "stdout" + } + ] + }, + { + "cell_type": "code", + "metadata": { + "colab": { + "base_uri": "https://localhost:8080/" + }, + "id": "yG6MC6NUwvQm", + "outputId": "be2a4d36-d03e-414f-a3e0-cc98fea441a8" + }, + "source": [ + "R = 25\n", + "metric = 'mse'\n", + "threshold = 1e-5\n", + "scaler = [1., 1.]\n", + "\n", + "logname = 'cnn-lstm'\n", + "logname += f'_R{R}_scaler0_{scaler[0]}_scaler1_{scaler[1]}_{metric}_Th{threshold}'\n", + "logname += '_date' + datetime.now().strftime('%Y%m%d-%H%M%S')\n", + "writer = tf.summary.create_file_writer(os.path.join('/gdrive/My Drive/Colab Notebooks/svd/tensorboard', logname))\n", + "%reload_ext tensorboard\n", + "\n", + "# %time u, s, v = algorithm3([w1_pad, w2_pad], \\\n", + "# num_refinements=R, \\\n", + "# num_sub_matrix=1, \\\n", + "# decomposition='eigen', \\\n", + "# stop_threshold=threshold, \\\n", + "# metric=metric, \\\n", + "# scaler=scaler, \\\n", + "# report_writer=writer)\n", + "\n", + "%time u, s, v = algorithm3_extra_refinements([w1_pad, w2_pad], u, s, v, \\\n", + " num_refinements=R, \\\n", + " num_sub_matrix=1, \\\n", + " decomposition='eigen', \\\n", + " stop_threshold=threshold, \\\n", + " metric=metric, \\\n", + " scaler=scaler, \\\n", + " report_writer=writer)\n", + "w_approx = algorithm3_inverse(u, s, v)\n", + "\n", + "\n", + "w1_approx, w2_approx = w_approx[0], w_approx[1]" + ], + "execution_count": null, + "outputs": [ + { + "output_type": "stream", + "text": [ + "CPU times: user 3min 4s, sys: 26.1 s, total: 3min 30s\n", + "Wall time: 1min 49s\n" + ], + "name": "stdout" + } + ] + }, + { + "cell_type": "code", + "metadata": { + "colab": { + "base_uri": "https://localhost:8080/", + "height": 389 + }, + "id": "Ly_vcfqcw7Be", + "outputId": "bdb3aadf-c61f-42ed-822c-8bca62d0b48a" + }, + "source": [ + "models['cnn-lstm'].get_layer('LSTM_1').set_weights([w1, r1, b1])\n", + "models['cnn-lstm'].get_layer('LSTM_2').set_weights([w2, r2, b2])\n", + "\n", + "_, cnn_lstm_acc = models['cnn-lstm'].evaluate([test_data[0], test_data[1]], test_labels, verbose=0)\n", + "print(f'CNN-LSTM - Test accuracy: {cnn_lstm_acc}')\n", + "\n", + "models['cnn-lstm'].get_layer('LSTM_1').set_weights([w1_approx[:w1.shape[0], :w1.shape[1]], r1, b1])\n", + "models['cnn-lstm'].get_layer('LSTM_2').set_weights([w2_approx[:w2.shape[0], :w2.shape[1]], r2, b2])\n", + "\n", + "_, cnn_lstm_approx_acc = models['cnn-lstm'].evaluate([test_data[0], test_data[1]], test_labels, verbose=0)\n", + "print(f'\\nCNN-LSTM - Test accuracy: {cnn_lstm_approx_acc} (approx)')\n", + "print(f'\\nAccuracy drop: {cnn_lstm_acc - cnn_lstm_approx_acc}')\n", + "\n", + "plot_accuracies(['cnn_lstm'], [cnn_lstm_acc], [cnn_lstm_approx_acc])" + ], + "execution_count": null, + "outputs": [ + { + "output_type": "stream", + "text": [ + "CNN-LSTM - Test accuracy: 0.65625\n", + "\n", + "CNN-LSTM - Test accuracy: 0.34375 (approx)\n", + "\n", + "Accuracy drop: 0.3125\n" + ], + "name": "stdout" + }, + { + "output_type": "display_data", + "data": { + "image/png": "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unVUV1fTu3fvkuZxF5+ZtQqbNm1ir732cjjllCT22muvRh3hOqDMrNVwOOVbY38/DigzM8sln4Mys1ap15W/atLlrfrhaTtsU11dzaWXXsrSpUvZunUrn/nMZ5g8eTIdO3bcrt0rr7zC1772NaZPn97g8k499VQeeOABunYt9oDohk2cOJHOnTtz+eWXN3revGiTAdXUb1yzLJTygWj5ERGceeaZXHzxxTz22GNs2bKF8ePHc9VVVzF58uRt7Wpqathnn312GE4As2bNyrLk3HMXn5lZE5g9ezbl5eV88YtfBKCsrIybbrqJe+65h9tvv50RI0Zw4oknMmzYMFatWsWhhx4KwMaNGznnnHOoqKjgjDPO4Igjjth2O7devXqxdu1aVq1axSGHHMIFF1xAv379+PSnP827774LwF133cXgwYMZMGAAZ511Fhs3bmyeHZABB5SZWRNYsmQJgwYN2m7c7rvvzn777UdNTQ1//OMfmT59Or/73e+2a3P77bfzsY99jKVLlzJp0iQWLFhQdPl//vOfufTSS1myZAldu3bl4YcfBuDMM89k/vz5PPfccxxyyCHcfffd2WxgM3BAmZntBCeffDJ77rnnB8bPnTuXUaNGAXDooYdy2GGHFZ2/d+/eDBw4EIBBgwaxatUqABYvXsyxxx5L//79uf/++1myZEk2G9AMHFBmZk2goqLiA0c/b7/9Ni+99BLt27dnt912+0jL32WXXba9Lisro6amBoBx48Zx6623smjRIr773e+2qjtpOKDMzJrAsGHD2LhxI/fddx8AW7Zs4Zvf/Cbjxo2jU6dO9c73qU99igcffBCApUuXsmjRokatd/369XTv3p3Nmzdz//33f/gNyKE2eRWfmbV+O/sqSEk8+uijXHLJJUyaNImtW7dy6qmn8v3vf58pU6bUO98ll1zC2LFjqaiooG/fvvTr14899tij5PVOmjSJI444gm7dunHEEUewfv36pticXFBENHcNjVJZWRkf9YGFvszcWgJfZt44y5Yt45BDDmnuMhpty5YtbN68mfLyclauXMlJJ53E8uXLP/Ddqdai2O9J0oKIqKzb1kdQZmbNaOPGjZxwwgls3ryZiOD2229vteHUWA4oM7Nm1KVLFz5qr1Br5YskzMwslxxQZmaWSw4oMzPLJQeUmZnlki+SMLPWaWLp3yUqbXlvldRsxowZnHHGGSxbtoy+ffs2bQ0lKPVRHqWYMWMGffr0oaKiolHzde7cmQ0bNnzk9fsIysysCU2ZMoVjjjmmwS/nNkbtLY1KVeqjPEoxY8YMli5d2iTL+jAyDShJwyUtl7RC0pX1tDlH0lJJSyQ9kGU9ZmZZ2rBhA3PnzuXuu+9m6tSpAMyZM4fjjjuO0047jYMPPpiLLrqIrVu3AsmRxje+8Q369evHsGHDWLNmDQBDhw7lsssuo7KykptvvpknnniCww8/nP79+/OlL32J9957j/nz53PYYYexadMm3nnnHfr168fixYu3e5THvffey2c/+1lOPvlkevXqxa233sqNN97I4YcfzpFHHsnrr78OFH9kx9NPP83MmTP51re+xcCBA1m5ciUrV65k+PDhDBo0iGOPPZbnn38egBdffJGjjjqK/v37c/XVVzfZ/swsoCSVAbcBpwAVwGhJFXXaHAR8B/hURPQDLsuqHjOzrD322GMMHz6cPn36sNdee227eey8efO45ZZbWLp0KStXruSRRx4B4J133qGyspIlS5Zw/PHH873vfW/bst5//32qqqq49NJLGTduHNOmTWPRokXU1NTwk5/8hMGDBzNixAiuvvpqrrjiCsaMGbMtmAotXryYRx55hPnz53PVVVfRqVMnnn32WY466qht9w0s9siOo48+mhEjRjB58mQWLlzIgQceyPjx47nllltYsGABN9xwA5dccgkAX//617n44otZtGgR3bt3b7L9meUR1BBgRUS8EBHvA1OBkXXaXADcFhFvAETEXzOsx8wsU1OmTNn26IxRo0Zt6+YbMmQIBxxwAGVlZYwePZq5c+cC0K5dOz7/+c8DMGbMmG3jgW3jly9fTu/evenTpw8AY8eO5cknnwTgmmuu4Te/+Q1VVVVcccUVRWs64YQT6NKlC926dWOPPfbg9NNPB6B///6NemTHhg0bePrppzn77LMZOHAgF154Ia+++ioATz31FKNHjwbgvPPO+5B774OyvEiiB7C6YLgaOKJOmz4Akp4CyoCJEfFfdRckaTwwHmC//fbLpFgzs4/i9ddfZ/bs2SxatAhJbNmyBUmcdtppSNqubd3hYuNLeTzHunXr2LBhA5s3b2bTpk1F5yl8TEe7du22Dbdr1267R3bMmDGDAQMGcO+99zJnzpwPLGfr1q107dqVhQsX7rD2ptLc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\n", + "text/plain": [ + "
" + ] + }, + "metadata": { + "tags": [], + "needs_background": "light" + } + } + ] + }, + { + "cell_type": "markdown", + "metadata": { + "id": "ykQbfnSia2rf" + }, + "source": [ + "# Minimization" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "id": "IvprTTb8vXiM" + }, + "source": [ + "# Playing with Images" + ] + }, + { + "cell_type": "code", + "metadata": { + "colab": { + "base_uri": "https://localhost:8080/", + "height": 335 + }, + "id": "gTMiHnm-wHfV", + "outputId": "329ed68a-6e85-4956-d3c6-3687d63c0265" + }, + "source": [ + "img = Image.open('/gdrive/My Drive/UNIVERSITY - PhD CHALMERS/mugs.jpg') #.convert('L')\n", + "img = img.resize([int(0.8 * s) for s in img.size])\n", + "img_array = np.array(img).transpose([2, 0, 1]).astype('float32')\n", + "num_inputs, input_size, output_size = img_array.shape\n", + "print(img_array.shape)\n", + "img" + ], + "execution_count": 110, + "outputs": [ + { + "output_type": "stream", + "text": [ + "(3, 300, 364)\n" + ], + "name": "stdout" + }, + { + "output_type": "execute_result", + "data": { + "image/png": "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\n", + "text/plain": [ + "" + ] + }, + "metadata": { + "tags": [] + }, + "execution_count": 110 + } + ] + }, + { + "cell_type": "code", + "metadata": { + "colab": { + "base_uri": "https://localhost:8080/", + "height": 353 + }, + "id": "oZpmPT3Xvzjb", + "outputId": "86a8e721-10e3-4652-fe5c-906f249ca1aa" + }, + "source": [ + "%time img_approx = algorithm3_inverse(*algorithm3(img_array, num_refinements=64, num_sub_matrix=1, decomposition='eigen')).transpose([1, 2, 0])\n", + "image = img_approx.copy()\n", + "image *= (255.0 / image.max()) # .clip(min=0, max=255.0)\n", + "Image.fromarray(image.astype('uint8'))" + ], + "execution_count": 111, + "outputs": [ + { + "output_type": "stream", + "text": [ + "CPU times: user 12.3 s, sys: 6.01 s, total: 18.3 s\n", + "Wall time: 9.42 s\n" + ], + "name": "stdout" + }, + { + "output_type": "execute_result", + "data": { + "image/png": "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\n", + "text/plain": [ + "" + ] + }, + "metadata": { + "tags": [] + }, + "execution_count": 111 + } + ] + }, + { + "cell_type": "code", + "metadata": { + "colab": { + "base_uri": "https://localhost:8080/", + "height": 354 + }, + "id": "2UqfaUomwfNm", + "outputId": "819c8b75-3c03-4882-fd1b-ac91f0d93b61" + }, + "source": [ + "%time img_approx = algorithm3_inverse(*algorithm3(img_array, num_refinements=64, num_sub_matrix=1, decomposition='svd')).transpose([1, 2, 0])\n", + "image = img_approx.copy()\n", + "image *= (255.0 / image.max()) # .clip(min=0, max=255.0)\n", + "Image.fromarray(image.astype('uint8'))" + ], + "execution_count": null, + "outputs": [ + { + "output_type": "stream", + "text": [ + "CPU times: user 20.2 s, sys: 12.9 s, total: 33.1 s\n", + "Wall time: 17.7 s\n" + ], + "name": "stdout" + }, + { + "output_type": "execute_result", + "data": { + "image/png": "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PHkfuvY3b/ub9wL96ZNeXr77w/ft5XP//OHT0+f540/f/8M/fPrhh57z+fnpad/fNratvW99a228XMenT3F9eREk5Le/evPrv+z/6T999R/+g1u3dpricJ/K7XTeeEK+EB1jf3l+2S98+/D+9PBWrcXob/OF5/7m8c12Pj88vumkRpysRYjSV+/evHn/ldhyRn/zdow8badf/tmvnz5+/Is/+/YPv/vnv/37f1JiH8/X54u38/n0eIWNfUZen9Tw5uvmiMS4ggkHTs6eeP7xE4Fz37a3D/Fwpvv+crGhs/fz+aFtWzudHPb86eW0ndu5+2anh96e+5Ssd5JDaKfzw4PG81PfTp7hTC+CCUDmjH3u2ocopRHPBJU5uuN03k7dpbzuV8t5cvTWI3NSRpPDWivmpSRzmTGu15CknDO8Wz+dW2/uLZJzMAIhDWgskA/CNrOogC5TERG5aDAe/EISt7Q2icp2lubwkIUU5FBx06w0WnURUMNKN5KE1LyZXhmSmy15RSoX8W04siSLyDzYVR0luHea41WqJmLmnE6r2Tzeq3EEvZk3r0yglBHp5ABiJsQxZo79cTutCqzIzKz+6ZnZezc3a56BvvWvHh+eHYop6nm/9t766WHG9HMfl6si2umsiERu5xNiQtxOp8g0qp16RvTeYQazKaHtE8iX68owxtznGIjz40lkN0/ZnFMx3L1XFswsU3NMr0J6d0XCTIKZ95MFsO9XguauiBnhvQshmPXe3ICEEc7r2EeMGXtMREtvzFDbTm2+zOf9c87v/+avP/31f/vx7/7nyw9/7PvlfVc3Qfj64dfnh21/etLL8xbX+fDHPezpcuH+ssVVLx/711/h4fH08IjWX6jt8fGxnzRy//yZY87nl/njh+/+4W+fvv8+P368fP/9eHn++PRJETx1NL5/9+37hwfPvIy8psY+qUSqfXz/PPSHOSE8Xsa2D/v66/7wQKeLjcViGT2TlmNkm968tdPZDPZVuh7PD49v3/XtNPcxryNy7HsMsRtfnl8imRHnhzfm8m8At/fvv/rF1+/evHn087u3X3314cfvvvvuj097fvjxaa9emy5r568e357myD0oYmrGRA5HWqSZn/o5t/OVbVXRnk4INVrvvdIn3lrfmjeP2I06nbeLhKq3LYWud7e29U0K5ozIHLPmsR7DXDOqLT+ybd28+NzW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\n", + "text/plain": [ + "" + ] + }, + "metadata": { + "tags": [] + }, + "execution_count": 40 + } + ] + }, + { + "cell_type": "markdown", + "metadata": { + "id": "95vRr_e-z4k3" + }, + "source": [ + "### Combine three different images" + ] + }, + { + "cell_type": "code", + "metadata": { + "colab": { + "base_uri": "https://localhost:8080/" + }, + "id": "Ca4XKLO6xNTc", + "outputId": "70d1cedc-7bbf-4cbd-c594-050d0bfe045c" + }, + "source": [ + "cat = Image.open('/gdrive/My Drive/UNIVERSITY - PhD CHALMERS/cat.jpg').convert('LA').resize([512, 256])\n", + "mugs = Image.open('/gdrive/My Drive/UNIVERSITY - PhD CHALMERS/mugs.jpg').convert('LA').resize([512, 256])\n", + "flower = Image.open('/gdrive/My Drive/UNIVERSITY - PhD CHALMERS/sun_flower.png').convert('LA').resize([512, 256])\n", + "\n", + "cat_img = cat = ImageOps.grayscale(cat)\n", + "mugs_img = mugs = ImageOps.grayscale(mugs)\n", + "flower_img = flower = ImageOps.grayscale(flower)\n", + "\n", + "cat = np.array(cat).astype('float32')\n", + "mugs = np.array(mugs).astype('float32')\n", + "flower = np.array(flower).astype('float32')\n", + "\n", + "img_array = np.array([cat, mugs, flower])\n", + "print(img_array.shape)\n", + "\n", + "cat_img, mugs_img, flower_img" + ], + "execution_count": null, + "outputs": [ + { + "output_type": "stream", + "text": [ + "(3, 256, 512)\n" + ], + "name": "stdout" + }, + { + "output_type": "execute_result", + "data": { + "text/plain": [ + "(,\n", + " ,\n", + " )" + ] + }, + "metadata": { + "tags": [] + }, + "execution_count": 41 + } + ] + }, + { + "cell_type": "code", + "metadata": { + "colab": { + "base_uri": "https://localhost:8080/" + }, + "id": "DtsG0HAx0ZF2", + "outputId": "baa91174-1101-4da8-9966-5a8fcbbb80a7" + }, + "source": [ + "R = 8\n", + "metric = 'frobenius-norm'\n", + "threshold = 1e-5\n", + "logname = 'base'\n", + "logname += '_R{}_{}_Th{}'.format(R, metric, threshold)\n", + "logname += '_date' + datetime.now().strftime('%Y%m%d-%H%M%S')\n", + "writer = tf.summary.create_file_writer(os.path.join('/gdrive/My Drive/Colab Notebooks/svd/tensorboard', logname))\n", + "%reload_ext tensorboard\n", + "\n", + "%time img_approx = algorithm3_inverse(*algorithm3(img_array, \\\n", + " num_refinements=R, \\\n", + " num_sub_matrix=1, \\\n", + " decomposition='eigen', \\\n", + " stop_threshold=threshold, \\\n", + " metric=metric, \\\n", + " report_writer=writer))\n", + "img_approx *= (255.0 / img_approx.max()) # .clip(min=0, max=255.0)" + ], + "execution_count": null, + "outputs": [ + { + "output_type": "stream", + "text": [ + "CPU times: user 37.2 s, sys: 19.3 s, total: 56.5 s\n", + "Wall time: 29.1 s\n" + ], + "name": "stdout" + } + ] + }, + { + "cell_type": "code", + "metadata": { + "colab": { + "base_uri": "https://localhost:8080/", + "height": 273 + }, + "id": "bAq7iFZr1VNz", + "outputId": "b709c064-c873-4de9-afcb-8a83408f0ed2" + }, + "source": [ + "cat_approx = Image.fromarray(img_approx[0].astype('uint8'))\n", + "cat_approx" + ], + "execution_count": null, + "outputs": [ + { + "output_type": "execute_result", + "data": { + "image/png": "iVBORw0KGgoAAAANSUhEUgAAAgAAAAEACAAAAADg+5G7AACkgUlEQVR4nKS965okO44kZgZ41OmRVnpsva92d2a6Mpww/TCA9Mis07PfKrpPVl4i3OkkCBgMF/L/kVTS/f56r5JEgmDV/fX7P/793//9TfhFEhRIQgBBEP3/zHz9+pUAIq9/+7d//Nuv16/MhACJhSBIotb7n//xP//7//s//uc/lwBI9IVBAagSAIIMxhVASVVE/vX69Y+/rvzr9Xpd13UlCalW1aqvf//Pr1W1MqoWg7xeGYwL/IvX//GLpbgyIsmkdGnVvfT+vaqwbkX+g6W6f1f89dcv8h8BKJJVS0FUIVhVxSvyun6xBEAokAQEAQJJCQVKAqSSn4v0bxCABIiUAECKAECUqkgVJEH+qwj5VVVVgjzh6p8QgBgAtGoVJAgEJAFemaDkuZUU0Koig1CpqqQSCIERkZlxAV7HWWgR/WEPAj8EgN8EgMUQvHr9TpJzQdHX7GFWrbVuC8Bc2SNX1REAEVCpBBYR76grtuhtAVj3qqqq8rSBoX33CAYCGRmZZALKEoWKAABlZUQQhVr5ui7yCqCYJKEgSCUIiCQhqQR9FwAFKa90YRaPlN8ieU7k/wsUpOqp69/5DYK8ER4T7qUAKQTAgkjKayWNCFrwtgDgIQAoiyRBeDmlBYACAUqqS99e8OY8P3+Mqgfbv+P5q0a85f/2wHrp2c/4pxf32LG/sOeDz1//6ZMg0ULJP7zJT4O9wx7zhhmx/GVU0sxC78t++//PV4vCuU7LBL/9YouE1+DxDDPyvsYsDyT+aXhif2mNdG6zfxQEXAWpUKMggGJfvizN2lc/oiAAtBhQPdSP23xbbI/mf2UaCbKXvEWCe3p6fj4lkj++wZnXb/NrGbBsav/6LIvOWLlFdqZgPqWtz4DHgnyIiVqZ+3uezUF9vOnbGB9DOU8ibsmQZ2VPO1q49/6DwN6ExENk2L8/Dzq7gFevX+0dHwKhqtoS8H1av4/5IZ3n4v/i9fMhAbDnlWfXfyof4fEI0rfr7BGpbRha7czu5mz1PTyNvtoagNsIf+z9mejn4P/0hJrH30+lGUQPmD2UHu/n3nxc6CkmFGeUz5k9Gvu7lHN//5zhkcbvr2MCShoNIJ71fw4FQojfbQJbRRHi36z+1uv/4kX9zW6efTaPMCrvbzWzZhk+9udYpDOR+8/PxW3haP2G3gL7kn7bGPCZlYdengHOINte9xjmAR4j/8Ok8GNEz53Vm3l+2AL6QwO0BIOS9ng+h+zXdda/amuAEYg6+n+PwdPh6Zmn9Ab6FwvMbw9rBfu37z+PzL31dcwezqT+4ZPb+vUlPj6ih/7DHnvv+e/K+HmPXuWjKI6snJX9eC+f8EFn5v/42M9ffu67+Y0esz9vwt9qgFHcY4U2aDwj8Bv+DAKxp3qklS3TvrAMAdjY3p/gYw7mTvtHnj384/VzQhoEfC6J/uZ7oz9+Xoff3rO3zOfcnm9nx/NPf/wvhrv/8v0T+vjmLADOvGGstQQ+b//Uv+fjo204dsVr0viiUd9+kNY/fwMCAQDR+vshvnujaY/4qR2/Pdt2QrYa2jpJj39/zsmfLQJ//uFzTr5ttnZg+eePfjz3z2f48aaHMv/D5+fJvsnykfnvIrcv+VAfs4jaiu3b/b9ftP/iHbxnU3gs0R7y2b7nkfcw9POyAOLnNDwtMfF3Ej+/JT++/C++eP7lH1eN/P7W/3+vnw/Cn98/HM7vd+X+I/m/PaaPQfzvXebvd8fP1965/+oVLUk4JvYYxx9g+w/fHqn9r2715xF/evnHC3xM+b+8HB9Lxj+t6r8cBrcB+cPN2BzDc+H+98Xxm2CxR/+vL/hf3u7HpD+4g/3vv1qZa3nZVy0ThfZRtJZ5o8f6khpW7DGuNu7SuM4NIA+ZouhPzy/JbdxbA4hoawQ2lwdRrd3bqWuwGtrfj4Ijf+zLceP8GZKU+oFqABWOzHuwtc2xBKhQpoKLKhbKG6W8bq3bA0eff8NOG3gZqhF1/BfUNtzbWDa6fyLeB+LzT0UbcdYZO9skiXb/of2ljUcF9oM3lJxrDhHkuVFpz16PYrsMx71G8yQb83zY5j38efQHX4RzsY8X1bCGw+wNypzd+RDEh+6Rd2lv1pYCf9eX+LbFvhldnNvOog3M/bH3xsSOv/sAC+eHY9U/vID5lb+fadSs+8My89zt+3d7rUdQtmfb0sft/0Hq4IT9WLQb2J7kQz/oelxpr9Be/7m/Ef4QwP7Fd7fpc573wNA355bJfZHHv+NZbUXs63+7w7mANqzp1dZWHRag1t3zZSAFnybD4Y3nh1qWmm7voAdHyjYMPBz4v3J9H6+ne/DDVfib952Z4o9Zm0kYiXqK3UaJzzfysSTjjXp3XtVacqsUf2S/njwHtntFtZf2bQa+yTz28h990dO9n/gDO3qyIx7KfxZGjxn45ibjWAGCz1XGyMF3nHGkQJwPbV1iE0WC1HNNepJ5fP/HQjyN5dxJM2PEQ6a22zoj4f6MJ0MzjD3G/pMn8jH0fe+96mfjPUzAKInjBY+NqQt/eI1PfJ7ON+PMwWNeKFRIKhvDUpWqqsPGEjS7sZ5Cpr6NN9Rzq2tzDh/r21LTc6YGaCDDuISxNcBj13PP7Xelfb7fTylL80CfbctmUQ4nyO87/zFkYsS99cTMf8wOjNbDjTSo2qBkL8wAlp702aIsP4+ju/q0q36Sv9fLP3YNAFx/SSoVVOKS54CIBa3Xdb36cw7/TlSjba8IYAmx1lLdAuN1RYC1KuJVoIosJYtB1v31+/fX1+/f//ynJEoFSCARYISqHOllxPUKQYtaoiKW4pXXdUUEHdtmGahcFbVWJVU3g6QKGz92EFQh4EqtXHet0rq1iioB7yhpvStQK6IYjKveN5YCqEKmB0VVKKJAkWIEFARYixkL4UhxASoBCuM77/xaVUsqUgsQFRljnwsBf1RUGV6XnAnhDABMKHqt/lGIIKiqVQIRr844sJ5nGOE5HYFQOUYOlKoEVW+IiMzIuF5ONoCqwBoBEFCZmfnQ/QSdlADr/xb7UoWULBUv6L7jIrMiFqjidYtYjOC673ut9/t+f0ECahnXBAlegVViSEKkmIKKWhWoKsSVVybDL0GkBUBVZAUL0WH6IiuGmWjJlphV1FrluKe3Ti0soeoOAhkVwStwv7FACEVQIiOCQWYsUGAgA0oCXMGLodSCxBJUABSr2mCRzoBYWIhaQpG8EiWJUQvJWwBKGAFQoaRatVQCIqiC1t0CACCvAFW6F8B4ZQKtvQQweoXQEL54BKCnwwkhGVcmr0AFgCDDWooAWKGIscV7/cGnLX+4sU+F2epsIO7BHtsK2Xdpt2YsjSdvroKn4m0L4GUggwAYRSIiQAmBQIjxAftsBcLaIBi1/xoFsjZaeJqXMfwEEIjwTAWDEfbaEIiAwjETBFu5ixCL1gBjTsb2jwrewdU9Tdtcj2W0GNmYbkg/JgBeyQOvpc6G8L0OpOJjkQ7XsY3onqMrxQIRmUsoae+dsOCPAPDjYTjw+Injzz3HQD9/fEzCPNPDgkmoCWKPk1vjjUB4jNqX1WCkI07t43zIa3+mGIpBC2wAOzPyARv4HO4RpiGEBh7uycRDYtjg2OaRba19Q4zL0Z7OvzDVP7wBu7Pt6UBkqO/7dHG4seLfCoCB3MeSXGF6oiLMsPgDhbDB/aEBzs89fw20/bwPH/yB1PYVLAH4JgCKcTu2BvBOGpzU6OoB7v7O/Zol37CeQQYRZBRJhkFpDAjfAmB0YSXy8WBPIYBtz4jgc1dpxGr+MG4S96228zES3EK4UeUzBWpLCRvTtJPiR9pyerbEmfGHBBBwftqszmZlRuFdAQiFXJECa6OnXBaBfykAW7NsoX9snTOEAySe3sXmjthJM21CBk7vt211ZasUBKL5uNmd1oN7JdlvJIIBJioTmQoUFKEoIkQbTMV5MQIWEkJihrMnAxERKlBiIAiMCO0Hx5kfhjerk/8YKgPdohhgEKHCc+m0r4bRGr35SCJERbFzA2G0O+4Vvy15bzOrpbkEieO/P5S2vYCqqiCYS3L6IbRu6n5dVz32L1FrdqV/9tZFGCfVcyjcOV17PRsBdKIJGoq1YEJrWRFQWIVxkKoNXESnsWZQkKJi33CbAB5hIS0qSUQiMoFErTDDTagYiACgyIiMyIxghCIUZniZV5GMCERmVooShQjImCK2VaIQQhQIRYMp748oBiw48PRu23M0F6Cx5WeLaZteBZtQJ5AZoKiKnhcDLVLQBoHoNEtJk9UKeNtgq0mS1z9QVar7ius2NgXBWvcXdb9vEIBm99fajvxYFrW5iKgnRmgx06agOrHJAQe7PQtbALiktQykKcRqken1Z2Re1ytedgbsH7Ocj3zs2SiJfiWDlVFxUa9X3skKLQmFhUqkMgPAQmZeEVcEMpAlIkiI11WFyCsYeV3lGS5GANGbKgKIwqDdEKBobttMTfZ+ybJnoQgIoW8rvqWhxbhpBIYXNhuB0l5A0/Vk5JUzj/BaG3UTislAYbRyP3k8oyuvfzsCsJZgKA2t98V6v98bTJAg1tJDAggSxQKZmW2hPowYxuSjEV09bH3zGGNAtG4gLABZBFsDGIjndV1XXq/MTLtwRFbEVqMYZWfE3i8ws+LFer2KF7UQ5VWEkMoUiBtxXWkBiFSkiAgCcWUVmFcg83oV1Ts50djbSqRj6vZiLAAFAGXGMD0p0WpbEQrt7SI97OQfkrAZKBARmNXJTMApfGRkXlaubB7ACpHjBloAiCgCZT1Je98kef3l/M8guEpQtABk1P371+tQlCQQ4ZXDBhEoEEaM2IlSw3QZxZdsA81dNb8lmAjabiBqlZ2esBfA8SUBkBGZmVdmZkCqQMWG53u32Gff628NwLgQeS2kFkVnOwJieK11IbPNAOwtgBGk4spaYCaZmYFoTRYPJd5UJIjGspAdajQ2iGJUQExEw72NIcczfOyYB/O4VSkJWbUjAshMUTThGpHhq4wGwCGCLADF2L899qfB+vXLajkDXEuNMKAVuL9e17UOvPG42jf1bwNAorkSYMQqvBJi+DcHl/eTHW+/vQCRVWWWtMBybvpw3Hv9r+vKCJRikSyuTCGrMVtEMiMi8oor83VFUleAv6jXX2sl7VxT5KrAVa9LZCgy8xXxYoqXPGURRLyiFhgXmfm6ahx5b5IlUEjrctB7uQQgyJpgpgQuFMBk45oIw5ZAKGCirjetER9hJBqeWZth4/ckkVfKj0IyMlNNlmwNYAFAgXA1SdD6aZNERIPl62UNAK2uxLAAQHfm8QM5/uRkpc4vN2Jl2HIyXIsTKVFgBEKJCKIMy8w9cywBwQJrU8NNYo7paAl4qIBAqbjIYkYKSgWkQCM5xnXFdcX1isi6EvwV9fpVK6DCKrHAWORVr0sBVkTmK+IXU0zXAUQGlVfWAjLJK16Om9nuc8dHM+TqJQ/ZGIAs074ECvYHmAVoRdErFpWrFDC/16n7JKDg0HEADXp3wC9JXJmAqFxsiKpvAsBy8rZTMSyx/q4asbZ3Q15OCkREMHqux7mbDXjAiT5jhmOwtL3uDda3AOS1LoEMsjK3CGwN0OZi04StYJog2kGS8XgiIhonIWCFzyBVffdGANkeQ1ypuBjXtRi1ClwpV/kxmQlCibjyirgsAAUVIwOIKxeFvMjM61rVtOYRgELGxuqb3gyMAHfAxGQ0Um2mrOkTDwHwdBpWDwEKgBHZur9o5QJGiIIRsF11DoM3TIi1yoPqOO5R+4Gtqy9XBJmwLqnZKq21aqwlho1AyWwy2sPTwJ7NAD/cMGv9YHipiObUe/GsUmoEjtWj1bjjNo7N/54HO1onFBEJpciKeDjWAJ7f+ctwrg5lmRf6Edbbk3VUG0wDMJTtpXZ1oYCE+TN8CkAzu+0I7rUY5HxWwGzEA2gN2uIDGPKEDlkkYvaOU5i+jf488/6O55uzu9tlum5nA1VVbQEAa83LPkPL+FoSdtoQemTGuKFQ77y8LsaLFQpeql9aiIgVWPV6Xa/XSyUqwmYqEYJNnnmOzF+vS3YwKq/ruq5Mm4C8MlOhYi2IdbVBY0GIyLgaA+bEjfJSXNSVQqyAwCxJWkLwSpGVyCsvxhUBJJkqRiTQJiAuxBWvy4WUEOyZZUGBDCOjNgmStatD5ApAudYSVuS6pIqqSMegYlEJ53gJCFAmqEoorqiSeGWAaN+RTWGSlMyJPcgEtc4xYnhIhQbIbfpyOOTgtVAqaY0GQIKE7vv9fr+/3l/PfYG1Zs+PTh5xIEOA3bXXr9eviF9ZxGKyfqkQEfUO6dfrdV2XShTDRisRkn0duxqZLjYvjABkMBoEXpmmEyK46iopm9yS4R/oOGdeFzPxupAv4nWxEqpaFllRuPDKCmAxX9eL8Y8glLmWCpEpxCuqpEjGla+cCD1ISqqCwc2EfgQrSXHdlS7LJVi1FlDMuoEVuiOxAC3eL6UumwtqkVVEFUtY96paMusjYDFKMoedV4KiVooIYgwoOzo0jpUckrY64o4+PXL5AF5lTFZr3XenHBCs+/319fvr65+/2RSiBaBGjR4W8i6SqhaTyOv1ev36FfnXqlAhQ79UjIi6Yq1frysjKsQ9aYmQCCSAAOGtbi+qxqVr+39d1xVoAUDoXZWQggsFM4UtAJnXi5F4vRAv4pWoS1Xlh6AoJV+5Agrldb0YvyJQedWqQkZK8YpaUiTzZQFAOaKLFoCFDAxOAWBflxGuxLc5rVXiiqwbqtCKxBK1eL+RusyRUMvT2PkA912rCsgmAGRVYRlNUbK/OhpgnMcfFu145xjlvzVARFz/aQ3w/v3P33fVpoLv9z//49///d//43d/tp3+ZXaxUUaQwKoIZC1KHMru9cr4tSqwGKEXipGsxN0C0JiHDalNBTNsaCLj9WqkFzLXo1qrVtSKekjfYJsgQ4GI/ZsnDtlzMrpR1TFU+8fW2n0d5FWstTd2+9RzYYVg4oe90zI2YhMAdNTZJbYm5nolAgEwxEiGiAWSqXD0F1iGslUoaTFWrhKZREGKQGmc4wJMx1CoJaqbDhhtloYHgFhr9Y9OManNWnoJrv9uTun9+z9/30tVprV0v3//5//87//9f3xtGG5tRiPWni6SKEUi74ulcN+JK/OKTFYgEMQFBZPFer9fryszze8Wm6UixA53gIjI15WCFqByE4d1M0Paxs0P0/4BGERFs7Pb2wWgYhVAMHSX7lX3zfuu5aQdSQWtqlVVZDFml8j9OzpbOoKFmDD8akfFiSbtEk1c2xrAsfshxOZ/5c8zgmOWGejsLs9w0elAIsjFcoZPZ6KZoZBwB6hVawmEvhKWCSOJZEHOQhcCWnchogVAUmmiDCFJ1/8QSloWgKpOGNL9/vrP//gf//Pff494EyRrovAdOiXJQorXfbPNY2SrYJPKAVwAI2Lpvq7MdGj2oQEQUFgADALjuhw5GK+xbihYa1QwSqvWqlWd5G+KwljZ+rmJMC7Co15V77veN9/v8g4qai3Uugsri1jbIVUBWIV1lZGeEJ0uLizE9lRdSRDOp5f3pQXA+5IUtZwKpFomiroAIsRgAqwllucjwCqRNX6hWaGRLoF24UG3uwGh97J/brjO9NR9CAAjdkrYavRu6k3XVwvA19fXfWu1ANQyBvh6H4+U1mneJVHBstJu7DuMzdMJHLoUsX8dYa/o2CN+eKqOznKgh6WkVtzrJjIZGaQ1QL9OciQ2+7lJRqgQRS5WueidVVWICUpgs1LQRKz8p1re0YoAl8hOCr0tAGwBiJJQpU7eUanpZnodaPrbyt2JX2OeyQhMZFJtNxw5lP2IBkqTvN7mbDxvAGItPQQAgR0blCTWWoVwDmbZh7OKY1RJelQHVyeNbRVb7hG0mX/bvaJAVPj74S1msRpaMNLIDnT823HWRnOduwKcHJlhDTwtHFZsv/GBs9qZbvW/4c3mCeZa5H7vlj5xoyYOHOpvnQG3rX1fdpuZ/tCMws/26YOjR9OuFrflHDbAwCYi2JKB7hdFO3CNhQosKNHJXxQ68zo0Ae/zgDPKNjczI5uh6dFuq3+8BL+uhi+bW5grWpnNNrKK1YDMcTe2KM9/PJGYkHXNEMRUnhwj73BuioKbIhkt4sTqg+EGSo1u6QnocRNdnj7+isVAs23mwjuZ5kgSzj3tV4fBSI+NR/43qdJ1A9qjGcZvS8RJEiF3fggJVsdNzBkwEjsZxrrBWST2iZpOMvlooOeYx0zXT/n7w+uxUJ6kj49d1gqlrVCtQl0rWKt6FCC4OBqWzx3Jj9XZoaCQCEOrFgCOApjPzdqw5/QhAE96zAK5qwoeXs2HoPs/u0v7p3H6h1MWxhve09Nyf9bON/RfqlBhoMFJvD0Ys5nrMTjbfBgOAZ+zzSOJAKIQFUSwOtBnDdBZukXGbNtmLfmQwZm/oWUsKc1A7t3eSaXjCc60PLfU1Y3EakSgBaCqTcZogK2I9Xww7T28ZWAL22NZZuJ6mubzx2vVN23awHdfqG3UtDGhnq/mYKl+M4f8aM1WYAgao7q/fP7Q4ZbzB6OxQkEVxYLxJQpgeegyIAVsK9UgsHP9IYEVDraVnTzRRQZtxI8cP3fq0cRnDp+To1F9Aw1njfQxxQ/ouOdj/tka/NqzfGyAgNMz6nFfwMYIndfQylaM+1rrBsRrLbPI7NYTdvYqKrhuk8v3fZdoBIXxjzNQYti6OAnCy23AdybmY0gkA6oIhsL7a/yrMZTert1K0EtRVRPFmvWuKmBBAdV96y5K99oyAtkKT1PIBwawNh8ZnuEJZTQnVK21CoWoBRaZtlghLFmw1qpCA35UaVXVvcrpN3YT7/daLgSRmCS06nZMq6NBvRbsHGVytlkrDg/0GMhJCHnM7NFeGI370ADjjNhhUeslAayVVSsI5AGPjriVs+SocHzBf1sWypaQYA22LQ+ahh8uW9yeNr6p6kacoFMujCA35tt+x9Fbs55beI4yN+hpV3KZjl3rAXUOKzSK9QDQGd5ssLOpW5nWKlkA0JgIhQKqbEyrlrYrUDXWd62eo1KtsgAAUthbXLX0X+AAfuLUnbEO7Hm6pIkGdatAY5Ip5HtoFwwesk1RXxN8CMnWFm18/Rce/TKqBj1XnV0yZn2v9ubhHru0B1jEUVcHRrRkfxCBoFHcgctnMhrua8PM+Tqsy4x3GhuUyq6giFoBUFVhhFA1lUGSHBBAOS+sSSvXXqHIqApJBEoVG4Roi9A2TJ685wZF/zQ6e0OSnuWNiPpCs/7OTFGrqafQXGMvbL9m1zeV/TCmD4evv8yi6TmvZ/7HDSQ5PMBB7trcRouQtHUpjtrFzgz70FAPFNjgetDVg1CI9imJT5nYgHx0RISCH6/tJjy2yp42/cEq49jdTw2A0R3eVaNF/by+uJ38A6EeHggeFm3DqzE3+jmGz9efnFQcZ6ZnwiCwtt5ZRwNUSfo6iBrP9e9/NyDdy7GXQPj8288BO9D8dAW3j/ih2BqOV8EmhGJNqdTno316OKP29462VNfMPg5Q2ormCFu5qFDNtIOwBkCB3dfYEHGrzppU99EAko26NQCr0Dqes4uP8wCpCy6ls5FbRc6et/Q428wPxsmfaSs32BdbMUitvMeSzhv907WEqmqAVo73Am2vRy6Fjy3Ra328tpGNntRSVdfvThIkn/x9r7C2LPYO5mxjwAzC+BqqQtXSWnfeKbJUVWuASutOilKxoqIFhm0tQOQqrbvWUq0yRJ/WKHaAiAWIC+vGWqjVGIDECkmKMht4Q7EqwvQy6wa1ZuVLMGlzI9uouTt2odPE6AKBcpoeqV2dK8fhPihOwWGJcYLHRnpPAOIk3DYTaE3fTCCK3iYVDwHnlghJ1w3JHbw/BKB6/TlvPxb2uUcPlfNQkVL9UQBW07ZDqoyjvxWvkwrM1vi+/a6+JtYday2QpdKqXSN/vB+pQqqoqPL80gFc1Yq11lpaS4WiCrRLoGLVApYUsbCW7sKqe0lGbctpvc60xJJYFoBawVhi1arBAJBUHTICgE612AIQsbgLIbEIg0A5AWoLgHar1gZkVd2uXGX6uLYouM1PKzQnA9rqyzsBjCK6AdDs/X4ZBGrwlaMoBwQeMPvj9TSoQ+3P93/72p6/xUm7PI7szCNf+sfnWidvHuD0SDpKbXAFRha4VWFMoen51DblB33NvEAN50pSQFVRQKhIASVG5xYfE6CnAFi/OF3L5RAldVI+HBj4UFw9yKNlH5j6WPInpNcjF0xHpWuMWofEsBdwQMNAqI0Ur6fZ20/f8/AB8PRcunYnD8Bye/5gZ2QNlJo0n6nc3kjsWP7x139igB0IQNtvp1kU2b/4MejHfx58ywQPZJ7JPYwVtiLDfOj5kwa01gDsHd1prNBtUQYDYEentkh9l+d5ZIu/Cws2+mv3Vk7SRU+3c8Q9vu+xgMdCgx8/GgVN9TI63MnHlp4eQX8zlx7lg09gt++JjeudrBcRwSmv6KocdJFUtFbfRQNhudB+OpAxxP2T2dCAX1mlN8VAg8CnbVR1a5C2c938nvOsXqeBok+53lJ9XKy9tWbBpd0kTjBBKJFcJcaCuY3WG7CRrQGB33cSvWfZ1azYhNXsKXKKAqJFj4EKyfVG5bypMZhj+fdzaQuAxi80vNy6bWMASLj2o27h3N8R5HvDgO1g9aJ1XCX43Yd6bCUbI0ep/rARMATW31iNrQEwIFajmvZ3PPP6eIQHKXiuxq0Gjqs1SqiVwKakx3foPTUIYxLYa9hc/EkD+KOTntcaY64yprVXgA9dwf3TQ0Ifz4SpNtnq82cK2Jk54PsM/JgpQNMkyrPaF9Z8t7FeJ4E9BWD85T+ZfY2JU4vhZMl+14fqbDfiu3TosWNGbT1cp2MiG0TsNAec+NIRxj1rj3n48GKIEY+RrO8j3XbFJrwIoGrC9rO7jmnvHgdshGDiD2oeaPM2Y0mg4j6r47tGPhIxpg2fEvJnn/8PL377liMAZ0vAInCwee/Dcda+CQD3BB4C5agj7akrbFxrrfR0HBut8fmbHwOeZdjfw8BolnFL7UYVYy5BfrTPeMgyxyxx//VvZtUU4DGPUox1eKwUPpSH9nqO+XHG51EqH7q5H/GouceTfpuHf7niHzP7jFE/vpnpuoyfG6r1HEzSJzmKdGsAjAR4IvcKPbCjph4UQJnoY3VtaM0kPRD7GfaB7TPS/voNP84RQSKjQq4qYGe6GZJOQ6FPV3Pv+3k+GzPs5X+oPHx4NjwgnH+3NoM3eHTomZsNzwzDtors8LU0CQ1/owE0YPSZ8q9eYnQ9R3sS1MZXW6tPsTqeypDAtfHeuerjh9kU3aXmc8Wsl9u/qkLzM7WqFrIvZSo+irhNNZSqqq1p3yJ2D70NQQ+S3QP5g37AVPg40Y54NOHZ4x127bG3NPP2uOae7ppeh+XQJ/dgLLRDPeAMdq+U/+usvFbYTbKCqwC5G9POrIDg8E9nLpKqzsWojsd32n6tiTm7FqBZte+m7Ydm+JDFXvXHr65l5mHte/oZago+ZpR7XnvbEx9CLklOMK9Va90WdrPf6WSHdd/3IQOfO0lzzYfe1m61s2EgZI+6WPUYIQca4RMSaddFGGTUTnQT6iDKFl/J1SrFtbRKa60FcQp26Hg+IVSBawUorGKwFKpaYom17d2aB6y11rqdNACJuhOiKvfUaq1VUJEm9fb6HyZQq1atmsQHglqdF07uxgTP3YNjiw4saTTBmU2ZCTQVfD+YQKmZQI4I4Pgo+IEBZr69QrXWHe6LYQEQEKTWfTuieXapZqu2UxEBCU44hsmXfQN1PudaBCWUE+h7bC0twmA1yTOKbsWQKjTZWUJUVMXO+5a6riG4dN9YHcQ39MQyS9Wd/O4S1wqRWBWMW9SqKtonIJxsPna61lr3PSCwGHkrqDopNS0AXaxwBGD4BB1y0GbAj6Xu9lAMu59TseHNx94BzlIlxyFsgNamuq6lTQX3olsDtBvdAZudWvBdAA5UOKqgVi4nNW4TUAFZxEroNmfDTriBEt3wBqrOHEaTEL6jUEWuFWsEQOszGjSbf4t6TQlPz0qhAx410ZqYNul+twi1ACyttUzOtwBY+4aAdxXXSiGwiog3ngIAuE/gUpeN/hSAhFjuimAB6NQPuEpAq9YQs9AWAM1IoREA2L2JpoK9CN1yQyMApeqC36e1N2WuwnU7Z2XmZo0ArDYxbaqOG/BNAPCkpPrStWIrIQsAZU68ai52iE1LUbQAuMBjI7W+ut0k5Io7L7gNTi089tGWv52aYw2gktBZ4JOTJNsQ7j75VeQKBYpZa+G2BlCASBP2buYaAqwBqhitARD1FABKBd3oDGsnQdkECEJmKrpNhN1XTX0D1RhgL/jeqI9fWBsPt0BnVtWe79a5g1x04OXDld1mW9cbqlrr/b7ve60htKTqWlFOlH6g1RjrDwVAHN1bVa1QfwhAr3/js4GqaCbZPd1aA4QQjerY6VzEioh1gyxA1afu6mP9HQ60qSAJI05moVT3cmiOTKjofDMtwSUArGDE+41VdTufnlTiBrAA6QjAnbIAIO5PDUAoCtgaYAuAOphz3S0A3AJQfWyzyJ1BdATg5Oy2ER8BwJnM7jJwEpUmndl3bQ2ArQE6RFG4flvnvL++vpyGZuxgXDCtgdtY9Sx/wsjh0AZne/0RnS9JoAIsV5yPBfAzQONphduRREgBZtD9wuAOAc7FLItbJhzwcqFNYPC0727zXotcJOEtjlipLoFe9wK5Omuv42yQFEWRwfvGWhYAXmRVAXClD0PAeyXXWpcFQPEGa2mVy/La89attOla617rdvUIJNYViqhK+WBpsjfbwB1rgMlc6PWfE12s4iwAnn128QnGwRwB6LXuxDH2r1GYnqPFKjQIvO/7XuuufSJ1jV56WNlRBDu0ADSDvf3KNtgaUOpPb4ZrO35e92d2WneQsMU2MbdxJ+TYrRgRa5kHMLHWV+20iO2SWRB7P/W+aYBa5SZEMjlVHUYgsYjgirW4/M55nnDtl3xu91rgvQJM95tZCq1aFW56xcEAGA1QBp5DglQR1ttsmDpuZG/Nmb/xPTdLNO/Tye8A0DGDqSDcGqA/X0YN6r27zUC/rhLayfRIh3nYMHTbjO02b7YEbQ+iG63GadG5wfvTTDzcBo4jOJACj4/wqV4A2ZwuoWrFKkdl1bXUzaa2uRu33PE6gyV1tqmJSId4m5M5OnFkvGe+16AYktFGje5by+V8BFaJXFjqMsXuVl8wZvDQd2T9cB2exBMMGhv68TPCBzhp6KqpaOUUKIy6t+Q17HscTDQmgDhpdPO4WwD2pjk07TkH/bHzLT7j/Q8G2IM+S/h4jbiMzcdx6Ydgevy31/wH4bRH24gtPvzbA21a7+yNc4I3M1XPKfjj6+yrrVn26vle7MmyD+E2Jk4pkjVVT7bKffz3tM4m/9jwn7YU2NS2/QPuzcuTATxDbOe0V/6kuaElbCYCB8z/fPRr1ONBic9JnYHtApDtn83/Z/m2hyEn5Ex9quW8pp5zHr2JSXM1n6Egdfjyx9r05Pkdz3mgwD98aKj7PflHqp/bYN+1N2g1o6WaIBbwEADI/kNodM5TNW+Q3SN1zrXd6ym0KZr2MUNa3W2khh+vSUXR06Ltl5sJbGH/MUM/ds+/fl08qHxb0Zm3LbPQ5K/ZtWKMC8KJhm2BnuLAwxyPm9DuvUqPk9dan7iVdz9dnxzgQALKevhp9vpDppEtkxrSoFuFZkT6qegONXRltlSh7iwWw6u7bFU+FiILnScMZy+Eb/OM2DeZZUWnBx/meMTRlJho5UO34FyDUw87zXs4BnEWiMLRrQJ2ugqfX2wVOmwvTKXi6P4ZuAf0cOS5o4EPWUNXz3fKxREsru2hA10w38ej7JUOdo82P5T6qYIgauq+a2vn3v8x+2WCJAcHQeGqnKrplecRTE0A9ojOTAWj68jRJfmRQAWinGsTkcDECB4C4LbgCMkdudkiAOOJ7Qt/hMU+mzyfIH1/4gBmbSdsS0CEW5WYQejSeTJqX21k4oiFMMZ3tOeJ/ujIzGR+8FMpcF+XZERjgDrOZmu1/rYewHL/Y37NFuoTKHwEz7adJ/AYg3omz47YhAD+9K5tN0tTsbxpdMy2+WZGZi89rjcoaB6BEz4Y4/qpO0fdPzNE9limVqT/9/i7xuRuE6Ce3uaBsFM9P+3eT2X+ORcbwJzvsGdxX2secHuDaCTzKQNbWw8GmEFWbXZlqAhtGAGxHma2kzAfE9+r380a2/QDpnqh3R9goweNXnq4Cvb2Ne/6TOQ4uGkrZJPHRXQrZz56RdO2BUTHfEeTdol2FEJF1DQHiC7ejuqNveHsaHo8oTrOH9sETNh8m9XjKx0553NXMygEu3u0OyPomwYwQ4iNdT4h9FMDPJZiJ3R/xH9n3vYArjp5yI8IlKahyEaSB7l/f/E8Fnl6d4Kxo3w4OaFuHdA6CmM0u7eze54xjBAtCB0N2OKvJ9AhiQAVnv3ajWt6bhsifvM0xtOalepum/tv37QBJ7d0LNaZ7j9Nydzv8WpdsPH1Y/jcqPrZTBKPJRsVxcflvmVQfWoTYLIA95+eAfQzcwB5PQCfPtBnSdLaCsDX3c8+9Bs/7/2c+2AH6f2UjyL3xzj/4JjMnfrOg7Ora5g08Srp6LKHXjrzOtiwJ2BTBVZoP403PtorHtw5oHur9TMjj/s+/NF92Q1mpCEccYrUP4Hhj0V8/vxYyoeHdkDe949+aoDHr/31kUV1keKzJcbc+GlDelq9GI0zxgQ9791bPCMzAjFvMghEbhC4XbHx0GeaKuxJU7vzmRQFPrP68XevpzN8sMh8ndAyW6lww8eDsudcQn68YSuLc+kP5qNR4UMtbPjzAQIfS0qdj7tyckNajMHRJEU/jYwfsL3g0RUc1T5rf3yP4VPnj9sszQNfD2vUk/NE1OtYr3njB9Db5uWnzpsFHj2vsxdkyXxoQw3tsoGVJG2U+zmBT31G0m3VW9CwDbl5SVWoV7bOQ3qh1YrJDmr0Inxq/zMr38Zw8ORzYX9K59OnluSSYBWaJ9o1W5uIOQ54T8Peg5/auC9PPkPrY68sg576MR9nb+DIDq7HsUlutyg4K6PIPqjoXGbEfe+IFt2P9f+DXezc6kM6etNorGXQDQZ0NEDJhThU7JbI2lh774QDtj5GsJd6W56YjTt/jkIoVLFVAwYa7LcekQH/kMWIg8e/K/Cj49XqX00EhcvMK2pbg3G3mgR5WOINHbbm1+cUj4bawIVnA++o3ZHrB1nRD3ilhH1wlhjt4UkwObN1ziz3vuqHMf9Y/lGPm52YEXsy1k41GgFo4FfdcC8tAIuECLMPe0Z8IW5a9rQ/0UOPDBbYTz06lgM+R3Vpz9Sg45nwz+nWtncPKzRu4N6sBy2N0O7lLNNcVcWox3bAfMPBNltdfHqaTxF/TCrJnRE1v9UhDUbkZ3nGC2jJvo7M9FQRU8ox0/GwG2PuvtvEvcBPqAXtSG0Ftlj31GyUCswatvfMPZ0czHUw2bnAQK69PO0i/OETj+ne2nWH3Xbg/KDNjw24tZYFg/W8rEP85bybDwHQlkqHdqc8pMvKqgKnktlzQ1bM1cbj/3ht9IuHU/KHl7ad/HvE1JN3bWFqTdKhpmlxXw0AnugKo1MBYDp/xTRpbyrWKsZbvH3w46DNhlT/N2ql99+M8AHua0/A7AxICri9tsoNdR8REc+SIfLTDeXGS002kAAnDSng4wEUDKEPvHkK2Qbs3YsUwoQO8BSAJ1bwldVhhWZTHwcoNA/QUyRGH/SxnUbNnO/YFMDqY4SIHVXxnLGf/OyTieMJDzvWM3kRbrITPUq3rN5Aea6/9efxk8cWfHuN5hCfeurMy1Zpj/i1xb23w2jzh90/gz440FcZYz26/FAcDegjTNU/TpcfNBtbAM6hw9t4PtHuVncPGn5LMVrD/nErPp77DP+bztqSDUw8aBuWfrO+W4GzNXoYGwNyvIDetI9YwLYZ+2IEriGO/+XIHz/sAgPM9b9rGe4J2RN3AFVP7J9U158m8UGrf7uHHVweAdhqjHv9LdGBOhi/BzhyAPfd3UgP+5ArPi9nNDwyvX+Pz39mCGiZOwiczyX79hyPh/tbKaKx/RNqPVFXi/9m/0ckjxfgN/V7ZpMaBOoPr215/jAW6xhubTtw6djePw2/v/LMHJ6OMx89JHvuysdyTqStl2A/vkEKu710I+jCwapnfj3MgQHnlvvb2ZyafIeem5aL8Sm3uVDQJyAgEImAi5NaVdm9PJlSz1XV7ijcSlvPTQ8DoOPrbGg7PK0egYRRpaNvZ16IDQ14dhC2KHIUmBfiKgw+kXYsQNvo9uz10m8J004PGUWloYi2AuDzZjFnAe1CvAdH9cgp6vNQAbi2nFTsoOx5gQAC4QxBOuEHUIPh87ZDj8wovfpWCRxxepi0s6VDZDAz+rh4uiA7kYQy43Kv10JiaA0KfaBU+GAZVkT5jNvRU1vZPHaH5/fo6YZ/DxD4EACLjoQafsYBgnZo2vkiNpr/MNmzJk16XTvu8pDSEUDJqc0Hi6m3/hYOPmmMPfNz0pPzWRgKwhLA+FiQjzyW2QzDuO+ZeIS28HwK389n7+3fP9AKg6FwU/M53tG6eushHYPVghG91CROxwt02Y6tRFCRkT6kAvtM4KMBRPcCovmU1nYbE41fukVhO6psJu6HwdhQYCZe+8vBAMd367b+O9qGsw/87v26RgP+yQYcz2oPoyXgYR9m/TeRfrbQ0ah4oKwNlZ/oToMv5pdzUYzuPslZW+f0/XZd2FM+Hoaeoyj36wFTMOQnH3N03r1laWT1Ix1jP9J/9Tre/nzFUf7P930z9TPtnpBtKp7Bhh7KN5A4U/PxO/FI4WyDa8/Htzs+jGYPky7yBe0EdV/Nna3Tz/mhgc98zrRJE9HHNLwiMFnkRKfoookgH2AEVoyp6oNShizomz7nclCDoYOZwOBuBri3xNYWG5+0YjwTaLpAs4A13MHAnnnys7Q1bM4A+a3Cx8zGzGyP9mPi+TOW2AivAYgmvvBt8/8ZfW056bcMZH9Ad1PBjwXbkiNAWg8TICqqu/k+8N4T+s0cRtjtqseG2rpetfoZZuVI1iIRhKpExTCBEoGQ+8NQbOIF21GqxyI0wbSNQJCMEwFAVCgU+3kNTrSPLCTmMOrBtzwO6V5WVpHlk8vlpFCvL92FJqAQVROBPAr1JAc/FncEdgM4fk4XwKhwG+XhEnTE9nOhHyb1X7w+PLcrrdGzW/zHZscOuMP47QdVNgg8YohRiIZ0Tgj5boIMZtZaXT4x5qyjOaxwf+gIoaS7nzAosrSi51gwbepmjVxDBHWxxxbG6We0DVJAoTVSu81yD9KHBcyqVdWSHFyKcGb/Qgq4S3EvBKh7ZXBhrbvuxSpUIY0VamjMXenrjtA4Lag3CjxWhVsk+jedYdu/3XaQQMEHUHDr9YGEDwHbSvG59u00eQtd8ZH28vFBtgQ8lcdR7Ba8R9bjtrs936PQ/L4DMOopAMYUgWWgFlUlpMs33wwrvSgnFIrMa63Vd192bJsJnNTaB0bCSN2TobNWrydLhpOiJnRTylq3yypBMNZ939LCgvheV9wLFHSvIm+4tBpVWMUVSITWGIAuRyq5GSCwFuHmk9jJrofcxEz6rASbrUC5VZQ6XuaKoPb+9yc+eZnZu08mcAc0fOcL31/cahkPkdiggR/f7O+5kUXfubv87nvP64nmt4Y54zyL9HjbVsXVcbXWJ9gu8xbV5+fOLdk6o8ENDhCFNqHVV2usvW3LKO9SN2OsbldGN0Tl9B1AFXysmmsFog936+S6afRY5RhwFY1qHqzLfNFzeBvszk7/s73vKdmTqHG0Pt7Aj1kGcG2FNKvZMMOKoZ4L5votK/mI8edOX/ZWZpJcek/tg5G5Ty0TfDR6ozs0ofPI5Wp3TFsG9+V7cz8I/37z2Kh5SH28apqCPiouj+xZVU9/uV7HsyRj/R8/f/eYcL6Zy/Lzc+e9Q+y4QD1UMXLQxUvELp7QjyfZ6BMb/37HjG2aTyFI++0PFu0pMDIR9L0K0CRrREQdAWD3hANIZh9r73M6H+14JFVxecHmYA2QbvQsICLTMM14TBCjj5NzH1VO/NcmIHMTC2fnYzbxw9VoF7if2kfwuNg6wFLV0nIJzyxYdekcJBYWlg8LwHAu+xy/Zsi6xOwPArA13uzEvaW/SQ5G+1ZRVfQ/Vd3HIiyF6gNIdhlSbTU0HSsl6bgAR42OKmzlcczJ4y3Yo9Dl3x3q5OHmKLUxleVnd25guqEviDxnu3IUAFlPAWBrAEkgI7JhQ41wRWZepJMC5DJxYwNQV5KZ7KT9p+3BgDsFEYpCN6Z/2KK2rbPHz/N/4IKzaDqrh2+b61++ni6l4doGdEM7ReGRoDM27FNLP5iQH3fAqNOR/G10qT8bh5PscC7yfI+k6xbKzVuqxsSOi90hXwE+JJvRHbWiBQAAu0voOXPNatc82+eISEZer19qP0YDSSJfL2uAqgJ8rLjSADcvMLNwfbQOse3I62JM4+fVOLolQIVdM2z/ovaxG71eGBXqnTbdQG2T+pirvK4MRYQohsBkMuGjyZGJRCgJsCQKab6wZskMXqORhzbTMDj6MFwn33ikFt1XcpK22wfq4s1NBe/17GlBm/FP6TqYDW04AeD6D6Hqvt/vr7fbeLnfDACBmY8rY3OhZGR0p1BkXlfmKzMZ1+v1umLbc1Du+1ARqDsjWe/f/9f67SXSGVhcl/OIUW37SyhggUBSEcKFxWQQCoKUyPz1j18s8b7F0l0FYCm4Iu5ixBWr7q8q8FpVX7XeS47yX4kStWoZhtRS/EZF4JUp6apLIF+Zr78yYkVQ6VVbImrFdSVuRerma1Wt1VjcxfqKGyAc2ofbFNxVUqRPfc8kOKcQtQkI94I9NlmAtFZN2yBvUMOhDh0ELvp0om4JMc6gMaNGxnu1YpIh+jD2uG5Ia913d0/pbjXHLPydAGT0RdMSkJncB7xnWlf4hOtkRXAFhfr166+//npqaW/WbhDRyTmjR6ClsBk66YnTGWE8/Y0P1TXcEXmzuw3wVr2rKipWvbXetwiGlkq3Yq21WBBZN+JNRETUZJ/vLdQWYQCQqGDklbKywq6DbPe2D6duYifoAsBKhc+i7/+5ICHMS+2gtBoCP1C8Ggl4YGLjuyFm2HjatXjt02wtuY2wB3MUU0ZE5FWYWtjPbETb/G9EZZ/M5U/3KuaVV3rRryvzSmcG+VgERfh4sQSUmZlXXleN/UCjQTAziMBGJK3jgCan2KSExsA0yK4VBVQtt4UplxIuBhARwAiAWGth3bfvtxa03DKGZAVrMW8iIhNV6657uQFh3gnEWqt8V0OJ6kPo4CPiNtCzuKw63uhGEw/jvQm/xk3DP24b6rJkp4YPlRk+X2io7N1au3/RfpD3fXOJOmnbIwUOfWq2IHGt1gCru4TtMPB4dk8BmP0W30zAdV0ZV1zWBdOmswUAERVBZEVk5uv1GtKQWwMwIzF73FRESaiAz2iqMYvdZ5Ls31fZc5oCJ6B88BahSuBW3VoV4KrFVQskhFWspahaC8ESVYXiktbiFEoRDCoWEOtey7rDB4uouIJd6I1VqlqYOkktYTrY9emvvdohnQw665sICD4ZnV1U7dlv9d2oECRNS+3d6cAqp07ygHyN03fQ3FnCTZr06/oNqO77fd/v2/SXupNThMBuZdXrP+Y9WmUD5HVdr+u68rr4+rf/8//8P/7667rsGQaEzjSLQK371++LWu/1fmRogQDcjCVo+9ZulaRVCC3grVLzCutGmNVVAKoVAmoti7Gf+wJYCEaqoKW1krW0staNZOvsbulHSdoEct1/veImzeng8mH3AshihjdZ+fgwiBE+Vbr1mOvP3epuDcRJRl2FWqsKiOv1KzPylaq4rutKaBFLhWZX6qpyOy3PQWyALtXtzFJD58kJ/AjObAaBhyxoa9Gq4gM6Xg9O4SkmBBl5XbkJqBGAXv8cvZXX9bquV+bF1z/+8Y9//OPXFgAKEURSkah1vy5qvd/32+qD/Q/Uh+lQK5D0rimx7oXQLRArWsDZy2HjF5mh0IoFwPmE5Zb6hUAWFnHjXuK6S1jv23WqLluyNw4IoSq4MqEP9FmBBK5XvF4sIJh4/RVCSKxFFf7KQvK9glVU3goUEktCIaTbaI1oUsEeSF5XZMb1yqrI67qChUwU0NC6QHKdXkFlK4BmvSalCwxCbT9cXY6xOQ0MfMDVqeloR5sQIo0C82rFuhvEbAz4sFdbXrgvtLfv84exaT9e22d17rA6Hyf7GmaDSAqBpPqkBVJAGFJFDaBpcW0HOCLkc8l9qHJMci33rjzesYbPaHj78N1beRuB9Duw/aVtnPyXjz/sL23Yo9eLe+563DaoD/TzY5b+nnU4VM94dn8I+33Ghf/UZOW5kP26NJwQNm/VSkPbrRxodvLAvtEX2HDkQJuZ4/7dt/8TIyqcWNYhk+ehh5bZ54AUdzywO8RtmT1wa0+GzjzMBZqye84rtY9m+a4J9y/mLgUUurP19tP4uPYY174jP+jB/Ty9nt8X6NvPk377UNzgI5Hu8bnJCx8h+UYRnhTcb4ECAVcAQlZXy0WgizI5lBqP1OyVxaz1seT7Fd0uLGATYCRFniT7bbAmiUcaDeBq/jYBUDms8pxd//9HGlM1B/0o6TjNK0ZEv3/3/cX9mB9v/fzATr7iH66lTwn6HMJ+z/ft8/j0H8dkEZhNNo5AD5NtaFrXoPsBcPzA+dMTcz3U4LXHhDOjAyt6Kh9pJMYfM/+cMN0Z7sjAcLZHLKTaZRZbAEbz9ndVIdCufolVUri5RhWEWj6oS6pAKdwxWg7QuVNXVCdnuIcTztmso9oknCIl44AP2/cQq/6uipuEQ0gxGxltvM47OYI4nXPO3x6X/MDsf/+azX7cvMcv/9df2nIwSf0P+8FrYfrFrz6guEdeCQDVYmUpyggneJrrJ9A9noOMDPNBr+vKyEAEgJ2gD27N0MIzNmUrU460VS2ginUXS3fx/eU25jeTimAyUCrExQpk3Wu5I6OxZWe8gkT6dPJMpYTI5R0TYIQiq4QMRYauuGjOF1rpZliQat0srrW+bopCCLEW4fazAwKhdYtYSJT0BQbWbfzcAZ1tGtBYllERGUwS6YyYZldEktX6zpimqwtR2efmQd1bXWZLS1vPewNbcxcmIOPi6Ao/QpPkoK6NEIGnnLo/fq1DBRKIvDKy05Jc6s9AgpFm+a/MyNd1RVxRGRJRjOI+4aDWut9fdzHEcO5Mb0wn2y6CUK23sAqrENBd+P3P+xapxdd6p+4MopDg/esKBO61UnXfd1yREQArkgwiSyFmMkIVPqeBQr2lWASzFCkGkPHCRSXU47wh5Qt5UbHe9z+/Xi+KLLBEgP+4ShfWIlWqtdbuAX9HBle3N1BAqIW6CwUu/VVgogIOrmUUV1IrwCsDLJTTSSBA98rSmi709ndv+67XhdJaX33sUHMHDzbVGq9GNR8mUHCMY1VcgUkJGsg/9qbRwIaWRGeCtibDbFh2NpVpbmYkIwNJic7vanpLUklr3YsBpIvEZYlGRELLnvT7S1ilVZHSXfj6et8isYik3vC5qwtEZSC7P/l9r8DVBffNIbF7dksu+3N8u8rLNmANO2cczj2tWvdSVQpxE3m/76/f943e0sb5VylpASite1GrqeC8IrpTLRSEaqFWQSDW5BtEQ+SAGKgY96WTAK3pC1D41FqUVKsKN1aopLy4Cn72dgPHtH4IgAaMGyySEMr+fWibgJrklWOhnpFJI9pdotl2wsEM2QwLnfHHxWK+FaWohbhDgN7rft/ve0hVDUSYJOER3UJJS1jyKRyWmbpBqrjWYq3JguIqAh9RRzo0qekKhe28WogbTKunyCuw/VcCqlVdsFvFZQi91v1+l/v7inJUuxaC5bOkte6COtu1hKxZMxSBtVB378+Vilqkls9sZZ8P4SNK1Xijz4gcsMFmcRvGbbApdYv/fyEA2MiWmKfnzNYVngoGGdZX7sS6Qf8j/DyA7iRncFMFbX4sTERi+cC0O/KmiHqvu3vSL0fOekFaAIwrfeCw7tsC0Fc0h0JimdB1GhwFrkURPHk+cACDevibaocfaAJJFt2B1YEjAXg0yKs+ARlkrXXfVbMicqhpKVkFn4t9L2p1FLzxf6AKYkAWAEohrDuYJHPhTmqhVi1VQawlRC3UetA6LdzzPNGMCacASHMSLZ7OIBwdfPghnStkDIBiVFThuuDYCmQzXFLhAnB5qfHAADTV716QHbnJyMhusHjyNY7zAszJAeMHtxLZzHnnUg8lSDmBtgNyUlUL/DASo4Vi6yg59i9pbs2m1INREc4HDp8xdkoESCIUwdkiwbGXJP2+I95tK7YzMfE5nMStmkcaCfWDPtmNDbXaij79je3pPt49eipCQQEsKEWwEEGhomMCGOLrIS8Y33AoFh4t2O7o9RekWtc7I3PVeAHaVZlPb4TXawSgj4YV83VdeV3qINA8JJ7+1E57mmzcoUS84ySU/YoqAOi9p5IPXwRIGqmxw8b74Tw7e7Z2j8Cyu5JMRoEXmHgzUSID15WRVBYgXQbCiUvJggsBIy8qKhPMITB5ylMfqMk0on8s46ya1Dk77QEqurUqu2Euh4nZOThbxAaGP9YxTPy7DSKwQDEq0yx757zikE5j4Fpkh7bB0dd7Eq9fQFXdkfHOVXUfZ2WLzZGp65VGeu7DKonxer1e16XstL5+jEIVS1hrYTGg9jOdFejp6jmKDxr75LKLcPzMiSliIOBoo6tHY57TDyQQu+HgUJIREBGXcCmRSIGpjO2dpjLZsuPovv2zvKhS5Di6vivdjn1isR93LmrXhQfDtcqhiam30dLkUtF7sI7+9p6orfT3vANhAfDNlApV8UoAmSnMiSHjZKoXT3PQ4CDABw3UO/V6QaqKCEauqktDcfjhHm+nTUA3Aj0CcF2ZNgE0KOEiQgssRd1RNwHVvdZ9z5EhDSnUzNYfstk85M5CzrSvUrCeIZ/vGqzHCVdujDLppRFCIBDKEgN5IHcgfYBbN4vSdtOhqEingfVFPxn4VnObJ9mDeSbJbts9GmCDOPNR9NnTUoWcVe5WQpsra87EujhgF46GoRh2TXNsondQoxvsBT8gCAO+rGvqSnXgsARWxZRWaGa4TS9BMJ8CYAkO5wROOarKUImxOhP3zhGAWj5VwbOBGC55BjRrb/cwqp9bwQil35knLZTbuI0sEKNaDnT5uPjoan+/yTWehRzTbhbPT797LADfJGCuhIbp80APn6MDHS0fw8g1cqtFVp9q4gVoAag9FYeePBp+0NXI1xa1h2z2uI8l2emhe0kBCVdCIheAWEu1HvtfHwifAJ3vMxlN1gDWCm2DauH9jgUU3xdKse6KL16oumvd76/3PT3iHov3TWr3DWk2sRjZ/JjiJCk97GRvs4AxgA3cOC+zADsph2A39pdIhJvfD5u7nDw+eFID8Uw69/lxJHmrWKymrH0o3BGjgb2GOzVbWpIKaxGKO5JghOq+O8MTBOtGVzgRdEHZXpPuXsOd1PPn9f/+mlXs0iC72yxg8YrG12RENg2wxbqlZd/humL6ZYy1j9frdV0xhzTexWRA7/hKlGK9f8UXL6neVff659f7rlmPJ2LcqzSC4U0TCbC1NGMsqKaHfbMRPSnR+eURMb1PW1X0G0RXi8IcatuNSAJlp0lVN4cXwXFcai2T0W5G1cJYJB2ULFd8LYAMKsrloU2chMvXfMaEM1dRFe+gRIbqvWytqyjqpoppAfCZT5bl3tA8GWTWkMJ2gXUIAkKAhYenC4naFYSxRPEKsaICRGQNLfbgVfYmAmABGAcKQonMzCAkLkJF3IWouuL3haVYX7/iNy9V3VVLv+/1+7202t6KwFpdARJNQVkNm9YMp2BEdi6wgiRqtuxDD0b0qYyvi3FdyoTIIBUmST1II85AVdIpyBEZ7QirVPVeQmndy2solsD7fr+dUdzntTH4zhrTsI+F1KkwlkCUSkyiFnUzJK5AKJXIuKPu4srCe0GKqkwLAIqZlty1RELRIL/lkdo1Th0PE5sc02NDSY1QuMVj7zlWFkmDwKlf+3RB2/DvfYkDwbg1HV+v60oY26tun5hUya/cAoBLtW6p9F5aCiWaI4acQBF6yJnI6IqhzB6200KqMtu9EZzxOA5ZY+9uQmJUsyNN2KzaaIQOONqxChHdns8MPrTMFM2+UifNACMAdcpeKMkurHaAG6iiy7wsb+zt6covFlbc1F2sgFZLWiRE3IS69w2xCohRY+cJXDUDoFMDe6HmUdUYe6cPjQGYUi3BHDGvf4y3Xupp3cakldDDFTACbBsuodSeAUJxuWe7lrthvhdKXDfiiz78GNJaUB/WwTTj6DMmW1Rb14EI+T1uAOS55Sq7dU6ABsFIp8Y1qugIlSF2jcXv2WPPVzLzOPSRkYruMqRaSAIdvZQgUkuVmZc9qsqyymq5QTiJK9akqdH1FJ0j3rCTlhSCUGGJqsW7CghhqQVgQcQixOp4q+oYfu4hQ5QyIEVeDRS5qRcvdjsH29buzdATbS1+/d8fxBQ/3l865hgAEMkzkL6XMeCtuILVxRN8AC04nbNPZ4Sr2h39abtUrd1K1Y3Bu3ynYuMTxz+5IrpsrmspawGCD+lbEhMHhzWLHkAmlKYw5PY+1c5CROYVyuq+Dl2OjaAyolskzXnGRoEMs0XG4h2Ee/qiVkmuDRLBSHammhNeNFoIhdId9uJl7O9Qk0Zv92kbjKtJFhBX3JCkuBRB/Zq84Vnj6pxRo9xZ0XY7jQ0GAgHXf3uQkK1QRr/X6hYMW78MheO/G/xkRlAQk2CtUhRqCe/QAtdb/FJqrSVKt5t81DyfoFqd+F3UdIg3+9vqOjDEWq7V2pQogKUrA0EUrQfyyuu6yOuqKxV4XcGV4BWlV/7jnZQifsWFFZlE8pX565Xmh38tBArhUBwzQwvVeBm/cFcJTk6OQNEMHaLVAbrEg8ErwCURilJmUjXeRmDaFsL2pAC03enjoCtGS48uJzOTnQXMJYcyI0ViqBvLZx/JpdYADrNsg81xbjSVa7r+2qU2Fsxxs6Wq5Qz8kQDsH2aLSVAGu5SXEFRchVUO51oA3qpatUToVoyNer6EKgXNEkFa5hKsYoZaAdPWDzsR54F9+9AYYPKhzSNr2qzOFwUj4kECmMVAbyFnbtDeQXRCVdTktfROw+kd3la3Q9ujINlBmRnh+GwAJRWXLQG43F8MhLh8OLUjw5Mla3QMKxmvpqGCKsxx5T6RG2pp7SRbC0BjUpQqUDu21z7t9Y9dwiBsxouCqtbdAjB8gH6sv6AIgjWlWyp3ShEXtVyOccun4xJassskCn1+Zy3JZ3C6QxQhrRsJ98+ddPAA6GPnH6GMHT9p9yyF0cTtJUVUIDKoK3KZ50/zVu4DGBGZigjJHYOHA2JECqAmJMQ2XduONgpqYfLfuI2uurx/hED7Q+U27FoAVw2hJa5imxyjnM7hRvMDHMIjus9U97OLKVywy+e9rQ8B4BjbEc7jDlz/pla8LQCt5aVa93utRyt9TNqEH3fSLw26Awzu47y7yZAc4e4YsQZ7E1vnCFp2jN16ydOhtbxXmOVKJvdWzq3MovkMFQSqRAIncsRxDyICwbhIXHGtDJaYzLUVnkltRkgpRAw66ICn2mDv/oHNjsUgDG9Uog+k2CCAnTIFRLrPYAUlLJaG2fUUuNZwSAsrjFHchikxAVjjoQXaFwwBqrSz33bDayRhSh96NM0BYCDlCOX1miCmBEz/akpC8aSGN6U5M3ACfVLM+3o+WiNAdHOrRCmKsQBMG/QlyFbb7pXdXeyiL7fRkWKhSyvRsx5KoNSHFmoQy1AcahNg7ODlTaTz7q6VpMOo4ejKZK/aPqfcADTk8HZmT6nBrhBRQIVKmXJtUhVfkBiX4QDJCGSAVJl+zYxOOYk+4RdwuZESWdmMlVwFIUARcDyrr+cv2BJBBwHQopotzI0BQHStlQbtk5AmzZACqxtnOvI/CkGAj1+HJlH03kkonJDERhSDHhkdcgKAUETTYawFoJIln5Bq7TO9aNFftKWnhzIafqoBcEy7xcPvs66c1AgrzQhGZCt2BDIDlcyMwhV5RSAKyUQwAsrubqBICBeAWsq0MUhHYN0WOCJXVAchxXBsJxSwLYlQnFNpItCl1CIy0kvsJrIFkBkhUQnW5Y64ELn6RNYg6HJ5lxD7sSJJENGHCoRTj53M8MBU7JAT+DPE9lAxg+6vsVG9DvaGYAhw3/ejymVMa69P9X9OZF1iUveN1UX+zghiFfvY704ZQ63SbQ0gSFhVIKpEnhpQuSsgzzHEFnY0hmy/fcyz5/scVdA975gZ1dsPtHKrLeyHItlQDYwou6WCinMSwKh1W+FuouULuZ4CW/l7nE0l+JT4Vq+aVPUnpYOj9z+/35xt7xdV4yDRSdNa1G689DCpajqYU1Y6QLk37BjnjqRcOpU2Aji5DHLDvmtbVHDP2jxSb2MMzQFeQWWYi/kLJaCKuMUuj7vfa617VWoinD2uWm5JucAgKhJJZCEjLzADeblJN6hFgn220a9/UMn6KgG1ABAr4lrXqq+qKFG4mTeBm//5BoAV7jahJa1CXWDo/npL/1xcX1/pwEZEXhfN0H19Zb502TRV8q4r16IqWEt/8beYqRWsCIpUALwXACYdwFT75WC8F1CRZjDaeWfTLtVLD7iOuTG5EzAyRgfW4N+qhVeuvTCyC9VuoNmSZqIGiaG3mJxVcXUgsvNByfECSmvdS4hGjZxNcvbNkAdsig0QgnFZHJzYIGsAU9f19ft9v7/uZc8ntgSsukE5thDN8o26NAd8v6L4+roj6s1EoBZy1a83VbG+1iLrRv76dSev18qVVEUtsygZFPnPxXJzBzerKCwYd+B9v4V3cb2//rritqssG612iFVW0LwoXheVWhml6kglhmsW7iBS7mdYE+cwJJ/u5fHSfSNoHS45hb9Xamcpoolt0l0XWvXUaC1NzY695TbizU/FbP4RgEaDo2ONfq9WMR0KQCfC2QS813rwANx818gaJHTFVyEcbWEuEgoui/SK1gCrVPfv9/r6fS+bAKtCq7B1F1Br8Q5Kq5hiFPKKZVMgIrCKxgSyean3bypd+RsuqEZGklEZlcxsmjbEZIIB3e2qRjhhVxJQIitAReorlm33Sggl1Pt+r/r9dhi3fvPWlXW70OBWxe9ipO5AuQyuMpCrymSfygyOS5elVSLrbZa/vqfDDDp/Zk257MbIoolHb1dIqvfqHgSN4upogDYNJjFLXXXuWYdzOq677dwIgFj+aK21WgA2P3wooZEANHla2Iy+FQiXOT8LgEqr0IXuHXU4ZZt2VwAyEAFW+FZzkk+j4DB2z6CieZdIKLpggfa4JimoW5NYgLdbdZrjk/ys75vf4vtrj0Fhj61pIz4oB3/VGSyGkXi6dx9AuvXp4/vna5J7eqob5QIgtbq9HacPrYBnD5VDTRgx1zbqmrLK/eVaIwAjR1YUcnHMJxE0IHADG6mzbeeWdCs3b2+FUD6SRVWUAqusYGYOAUSdyerrh4Z73tPhjKnu172X7PAZna5bZsK7paq0YRTEqdKCqnlyz1dVEzZnuVvJPW7lEdLS6Tws0wKhziYcSdDhb70n9+4BJnUBnVMbdP8rCii4JbTJSzitMUZw93Puh5UGlfXv2x7Y0pjCwvhPj8D5mTqS4LWMAkvLkYJuBDcCsDOj9/7Y42n/oUJ0Pgv7yupBzvCE84dmhSC3WsDkTOAxRh01s9d/rrqn1rm2EVSS1gBiTk6o65yb5GlHzfCiUbqTjQZjoUvyQmz/YaJCJKGIbO2nUSZnzw9jo6MBHmqkscHMSYP/2fQkaIQ4ofdPmu78JFVU5x+PBmC7AZ2rZPO+vQDsbFNnuzjbtJHDlnaMAKg1ySRqoqpT+KIJiD3iRv2DAfsnhbNe+0zUGEJQ2tbiOF+PNhfPyegzPK1ITDAYtvxUy99fnJQ3P2XvfrlZhwkYOgG3WM438GnUPqesac3dJ+NDlx4/69xt/vGEzMb+YUB+eOJTmDIrjO3tfX9p+gP4J580CoGnHwE3HTt7HQ8BOO5ti9CmpccJFDVu4Dz34+17VE87+RzW3HYcwqKAoislQKfIuY8+z7yidSIno6FRsQKUz2CZYGZUtwYNuvtHl3vFSGHUsfI8tvU4xTNOaXvhGmsxbqykmsatoceE7uff6XedIo7p3FXRVdLB6FDvoJcm0PQAUBqL8JDn3h4bUu/UrXEGz0cPAaE+2ImdXQJ8F6GPnx5m7PH7ue6TCWwz7NXZqnODAGwQ+OEGNnFwINE2AZv9MGp/9h8Te2r0xACj3mv0gNw3y8raVLCz/YgoGOwp6MKiUJcFNIFamD5W1i6MMgwMWv3P/YKsCLeO2rZ7jhWMbl3M0YOnW4wOhbm/waR24seLs330RH7qz3yyeb5Ia9z5ltzfH9H0L6Z250+qZAZDNYzc6JKcbuHfVdw3kelR74fUxgDWTWSzGVCYl1XAyc21Asv5jqW677WOF+Dr12Me+ykDrQFiQL0yA5Gg8z3R6WC6LioRKj9cXteVybwuZlCRl93ADCEi0sM8AhCMzEyDMhlVeD7tPNrCKSKEyMnV3uvH/R9dSAYH8PorCSrG8z9Lu431Ni5HaWOU757q1tUFOlLgoCkKRTwVVnN8AwIneuOV3+ul82uzB9cs/lMCbNUCNsQ8xlpPyz1moFWcS88jpn9cy4faXVBJ9X697+u6l4AhgmAS4r7d75GRRBWYYlYx4xJeULyoSC6GCgG6c5dev4iIhbW6sRbqXoG7RXOOIlGwyPtGiYrKOekIRbBWQLWgu7juO6+8QZD5uoxI9fudS3oHq4C6cFfGvUIVobd+xT8VGVrJikSBNwG+azlAl8EhgkoC3m4WhzfQJPLg3wfOtKXi0DlzUKEdwmFySyXw6pburZerqk3FBoHtjzTZB4GSOsB0tQqoKB43ENAUInCHoXBM2Ay0pYjbzX60kGxJdvC3PTSVVCu6ltk9wc3sk2OYD0IaseUkp8IKmI9yy8FoPvJ2PN3BG9LU2VtGNbPxXc/p7G0GQ2x7IHaXWoJT+hgUMoEQM6rqYioypKARjEMBmR3Mjy7flJxatAAEU3Migkl7qpWFH26cgtH7k5DSYf7tUvhMPGEjZY19/i4AkFBRs3CEa92uNAiKYtRWwpRUKNWaHJC9ABvEbMXTRJNT/Mi8SCDQfHWbAK/9/XXf7/e9lmiuEicYYM7VFytnXQqOgdkx7jqxjnM75+i3mbe7rPZIxBVx5bUypLguM5UZiOCbEBxKWDcYhROYZ6CyiCx9hftilBacvXbf96rfdzn1O7CUoUUpoIXFt5Ch5U4PICsIrp276ECs9yBcD6b6MicyVPBulIJ2oGdXjfnPMUkEVs89QdLHGWFSRzoZ9qcAHE/Ps24q2E2immJ+HB8kCcqRiA86qw3fxqqYzT/bSYCTMx6m/pj4iEg8kFALwOrJshxRTLcJjkgwiTAG2DTSaIIP38sy5NhjSapYQBtmiWv1rokZXWGhWEKtBS33n9hIlaTbkTbST+sSx3DLuUIFJZeMMuikZdJVI71f/DMAmTOp1sLtkrhT5Th2QBNBznwcIA633m5dpj23aq39pE4GOD7JCO75P2DTe/kiu7aeJczh5h3fr9Zn8z99CMD2WNosbIDJrZpHJDbY9QM1CN0ndNkRO8W1KjKALEVkwInWobCare1EkDFeQHmnHOrnPHyX0oyj4Y791Iy6cy2ohydiByPT8TStlDUcYZw7idlBSGH+CIguRqbJIw8iMLcbOMTRoWe7jLf6AGg4VnY4tv3iVvR2OedUsc714PYg/iAAj2sRBK5fXbjWlftdBetgELiOALQZ2SSI2OmXI5cPR4ZWoe3M+h8K1IoKx/cPbIFzZ7jf7qVEZ9kGGMnrFYrrLrIC4TRirroSCCiGYz3+FeEuHkFEBikyJQnuIYZSg/3Y2yUA54zb4OfrahMgMoV0xFnJVVeum6pk3fhFKjKwWgO4gpyhjgbmVDPbcLmaIl81UkF0ettm/jlQEAA7NHhWzd5zKw+fe/gwAaiqfRFsZQaHWifhXH0ui1PCNkoXeARgQYu7MPZvgVPjgCcGaathqteVD5ICYmUFY5sma5IhUMefsJ0n4Do+kpmRmYgriizHZKoAu++OvwMCMq8MZmYqCUVeCueEhsCXVS2v6JxYkHFlRgNQZ1O9LhNQcV0XO1QOull8BVAXQ5kZLAUV+EX9CwGwF+DJqTE7QAtAZ4SbI9onFPCB1LqrrhPcHppWsvEaRMgmJLvv9UkTn52vBrNntawBLmdqapjg6JL6BT2TAnuxD485rqqwM5D6N5Na3sYO6I7cJtCAXYPGzlozPFkucwtsTeB2bCucikXQTGA076E2o4HlQ5aKPXsDW92X0KFUkU6gFyOmPc1AHpAhZYCqSILsuKI5CpKhVEdpSDdsQShYAV88+sBwoMmASADg1gCEQnIPADGToot+muvuafwQAJuifpIujuA2nCzTrW26Zg+SA+qOQuY3o3BeP88N/NzmzUQ8+cTHH1vJtMdoXBXqEKJ9znLTVw+5HBB2MgzmUdCFdyda4avXcQwPM7LvbuEuqDAN34ZY6evQwDIqppCoP7kNnoXPB9WOJnSwAHBTcPUhgZ3RIp9HoEItlsRaWFyNzdkn65px9JFYzvF2A1Q3DfMQa+63n2w4od5Xba3H0joLwOpiHqTf2mCcZ460H3WDNEyUoFH53PeaJx8N0IJS8+L2888UPu7uqk2QrHYuFuZQn5ql0LBb47U/nnrrKb/TFcPjnWl0Ht172GE8p7sBgNt3PITdasbmgWIVQsUuSB96gIDbMUBELdzEWkuqwnKrju4Gq/E4QCBSqOXyuMpO/SKBZILZscVu4d9QEBjofaL7xmoPtHdmYlOAe37I6DKVsglAX6wdHtVYge+vjw3bEBRAO2Dt2RA+MeSBAbaSMSJITjEYCZdAf7tLC05On4ErIyPCPJ5X3dWzgur3lRHXffdD2g0g1N1jqhZdaHYxgatWRb4Qv15x/boU1ypESSkqlqLiH39JgTvKVZQgdOti1+5FLF1RUWJq8V5Vok/5ifsWBVW5YFxL8OEpr1+xwMzMX5dVh35fC3iviFpAveJdr7jfLGXUl/7BCxmJlaxMLOGWxHfdQLB4EU4V9IE/Pub2+qvsd8We0gdnzFFwIKLGwEfz7BGGcrUkFTNLhtkQMTIxGKBtrbmTrtCkGTIGwWkWPevZUiuMj/ThBUwgxPb+kEJbhq0mtjIjHIIATetEJ263ACTH3TH1QboNWPGKIK6imBf5uuJ6XYorCmwBKCqK1yWRaBazs5yGP7EO7YjJtopt87dD9DCV1tbRUaXMdI50XWWfIlsAWFcSFgDpxRuZgdwCQJXoZm7snoAPAUhAykQCf7N7t+4/M7v9anEUyCh1goPCCLuBTwzQzjfHMqPf1d5xawBj4F0A0iZWk4YwKEDbr/P/R1WYMhjeS4wA16434ZR61vteNclLO0Qx0JFummoQp/Fh5kFrwRnktVygWapab0LEWrUAH+Du97sErlbInAZRFWstCXLzjXU3n8wo0D14pVrr/TsKvGqVVh8M9fUu8V6MWoDuuOvK+2YpWbeCb6y0BohECUslLifZighbLXZnANOBt8kqdzvh+NNb92to1u0xjWw85x8AtKa4z7kGPjrNCqHtyTcN4BntWMzFgXcuvJvaQJ+6FeKHBvjI0vKwGtAHHazSll1tjuvgBdiv1TEB7f46MaoghzwYzQOYtXGaj9w24oyhCWqytuxEdHnI7HMTQWgMzW36SCJkUB9gE2/7uux6DGD21HZytK32ty3LB/Lue29v68nqfzfPvdLnN7Mg41N3VgH25+cN3kgzJ5/q2Ks10Y8PlubcSMA1wZL2GKf/U5FSFk4+gB2z4xHOVfzBMOjDUWsH1LamGnQXk8s8icuN1ym6pANCMm0h6INju4KzIyWMvZS0UYQgVudzuaej/UCFW4GOgMA1QXsiu+Mh3B6nOgFl+p6GweKQMT2deEjRiFmQCmp6Hjh4R5DlMjQPu5pTknZftaYk+9st2PNDnNnfIJCmpxUq1vQJOWLTXzfw3EL5UwIAXC27k22yawNrcVLVx7P+AIFqDTDdCAKayp4KH6JeI1ZOGTYSZbqpnTVASwkJ0EWzERwN4ASQXR83joiqTUCXk5Crs0VnYxBjLF3f0vazquxOQXL9ad9V3SJctarWQhExzuKSe/ly3YQWUEjXMVITVXbZrbRrih5rMYICwqdYNPsxTmtNpf5W+88lm9WxkMUAMzuHCigetf1nXfz8ev5+UMQ2AY4rHh7At5p8GhSgzMpvGmBQ2wEv0bbaQdhaFS21nRs2AgCCWm4T8ICSz9eQMltr+jeNHPe288fH0+UYoyEUH7pQ80J7mBhiYc8EbC+9azcjRYWDQqV9XkmpfLzZ0hKxFiRoLS0ugN4uIGoXNQrohMxqoOvfO866VtMLAKbpnmVgJNhbY6rL0FoS21M8D6CnAOj86Wmt9lwIMP1PyjmBB9gN2Nte6NazxwB56c6FDTpJOJyIPXILQI0AAO6V3yquL4/tp7AJv2l97Pt0bsEefrnCmCqJQ12w7SBd0u1jbUUxUskpromu2eqGYtkQsN8dQKim49I21DOZhbUkLUCIG9C6IaHqxk3zWl55SHRXkarGJ81qNA/RhFL1AcFu7jA2U481Gyg/tsYagOyOEmoibXtdM9qWdX6u/zcBUOd76CLb/bfotQpwzvEK7YRIu5nxuFxfPVq/twyZmmSHAZpHb0IMtSQMCOTRSecRzryfuBCes4AtNdiOwoDgtiBpt3s0iPP2AZ/aPPq47a4xppwT2OfzbT5mz1r5BCvUAou1NH0tWDcXF5TcAtDasIYgnY1r/mUU/KbxzPPh+F97/Z8oY6yji4697i5VO72mLRcP7bO5hC0nrWXYw0Ph+kf7kh7gnPoh1R3dsOEIAD4PWGPLq40aQRf5joDKx2zbXLqZcbVrtMS5adO4PrW6Rv+R6XypjBWBukDP66atHPa/35ArxiwsEpMRERUEcF0gIzLBiPwqg5YMqhkhZmZmqBK1utnnEsnFqgWuuqW67yW9bx/9qWDpSi13uS8Wv8C8uGIsPgLFtWz+KAczhl5zsj3gvmlVWzBmmbYww+oq2gpOyJkzB1FyOubj9ScXRS0DbgVoAXA3HhWuRLXTKGCaLYM1UaFZ/2/eC7ATxJ+uT6ga8UK7mze5E9wloegGEcMiSIJqlaqc7weIXERAWaGctkKBWsC9SsUqQauYVDlDxoxAh7J0epSQNeiq3Q2N1KH20YN2yW2EawpyxFWrVPdapfu+axWl5AKkZfRXJG+zDp26ZJTmk6+AQtooeI6ldd8lWBDcFAdwIGtHNGKrvzOzWxeEi0OBTec+YQ/21sKWK+u1j6SRuTh1+bj4gVKVkx5Yy+QstgBsXbtVY4vV1lujYc4PzTsOwvWNNwZ4yGdv4E9fVhucVRUgroLWEYBa8dR1jUOjowGy1xKr+9HLGUEOoVWxgH3UXHUdzKpCRR9A3V+7+matVbVoYqszcndyDqrPU2Izj2LVFEqMKadVV9fylZN7fe47SKgb4IlblMyZdXJRewPaGmDqeT6aRKnTO8Yf6XC7yTQ3JRu7QahcGbTpRXLSvKvWWvda3WXLq/awFkcANujcqa0eaU3sisIkezgZ62iMCXXhY92x2SO5Y4k70AtrFbDW4D8vn8KpJ5CRVxSi6MNeJLd0mRVpuey6CkCocguKR1HQDKEFWD13u5fq9iQHT3EDEQ2e64lpd2UnavZWeGzusysf8/JN2faSc+/uY+a3OmttbAno7KM20c24Tv1PZybNY1z1IQCePRtzP+IZy3gmH25YD3AvGx/vPpwEm+Z5PJg10jYgexa2z3NQrKQKlauOYEa9ptUrVD7GnfY8mr+wZg2fQha+3VrekitQ3ayQrCpalGyFym1yWJ16OiBwd+IYlNUr0DjIdVGacbPoolMIrPB5mMQccCrgEcNuvxonsDd9RXqxKyCh3DHNcS/IHtFWupr797407aIjWtr/GwhNYMLBnmbOe3kUzm4Ny161/jrPDR0/1cqh9wO3isD43xYetnw+QeCGAmHbawbaPFBMJsQo+9obQKUyye5Kf3LlAoFgBSHXNoS5+OK9WiUV7+UKYXbR8H2vqru01psRqJBjlXUwQD3KsOb+Z09v1+F4dBoQuHXEzNhMuFUc9596Xo4ynV+6O/YxwFvBHJX1fOmo2R/M7cf7IJ2EEJOV9pc54wlt9NFK4lj7xlFqtQN0g4stfyVAy8mB5UTAcnaNZWGgqbziUmX53CahvYCIuMgrI69QJJeg7OX2oAdo9IT1rDqZCHy7JCxArFjVMxJY9xYAd7G5l+quutfb50hlZa3kqirU29kCRksqlha1vJcWF0tB2nLHCPagE+ei8HgBM4FHjj2oFqaBs9+X6uOnjagGHMLmm3CW8WAGneDHvPlkJVgtTkLIuJr7RBZVZL6qT10hHgIwyMwwWIK0qle50IekjgZwRlBJMqN+ZV5s1MKtS/dhfT1PiCDSOZpERkRSwXWXqnNFG/ZxdFoD9847czPa+w2RcVGBjN/LOCSJdZdMB12vSOpepfW16q5bF8nMK19XYlWJPpnWyoCAuIDpr2pNjHIfYDevapvbPI23RoOoPuK4oFpLclfk7gGLzuYEdyNiNrXAKDiX0jTtGB7AXfbVdta/LXaNj6ZhBwH1cYBjqJrV13X8yM02RAsT1K23tgAcMR2PUk2kHxxQ/fMo/ofFlHsvvSbDfTSJbNlrCwCsAdzyg4iIDB/BSWeVsisL6pbnuM/hVGXgytIUfYhAXlAw43YfToZ3fABiXFcQWCqtr1o3bucRX5lXC0DUqgVSq7rQyHlo2Kq694Q3fEfmnCaIgc5+1dny3Zalg/BjIojH7nd93xgS1Pb7OubS3LI3A/mAZp0eQRUeCgBPDdDz7FiA5oZOGxht1Z/abDDG/H9TTw1Fu/prXs9gdjXd3lBiw5Jt1nyH6H3TGQU7dGceRBMLAcLB66KWrGRHALQClXZtSKgIXam6IllUgcWA7lVFSsEr2Ra1fq+6uSqAiCvjulKlQqhqIdNK2+uk2eiNPQ8HaAs8lSAw7jOi8lTVqiqFlt1QaRcK1Fax4nykm2RG98Nun75PrzHhyGaaG1Nh1qmpGK+egCi6tGjWUBQ0beLalBTNiLZ24XTXG4HplT4mwE46mtMGw+1zB86IsZyofAjYINP3P3AGsSg3ZXPvlAgize4LGZGBilauGEjSnTyxNC3W7ei6MyFJmojMqpVBRN0kGOyW0G5cQ8iM3O9ay1ib4Uac7sPRvQXdE51ILFzZy6ZSMMBsZ4Pe6NCgo6qu8m99B71XST4JQqtPx7TD4BRxdDOopta6PywnHBxDVtOSG3H6lLTFQY9U7q3VNICbGvRW7CNxStfvpsWs+bP6SIgWouhqX3a0oMbdkaUQqlqES2WESHGJCJWyyGIk61Kf8ReKvK6/Lufl9SMAUKlue2Le64hM8EIpriglmYlFIO7SBQaFUmAlhYp71R0sQBkqMVShBUSslazl7mLB634zIisQQScmKmTParFWrSVlUowr8/p1oQi+8HUvvBLpkpbkrVeuFUJQt178qrxS5eLQEm4JubQIyp1BXXTu80OWWBXJG1jsVmWjDQcS2sIToNPfSAIZwNRQiBNT2ckRVkft8vrTNTtOkMJMRqBgJsgCsDq8Zu06GmBHYjocz3HX7bR28A1byY8psFG3jRwl2DwAiLbmOVmNTg2hfFiSH70TQnxkJ4uxtdhUEXSrFH3cWubRiFqFWBXrTUXU+4pbun2Ive43MsUU9hnstrCoN+tda6GUFHejZEuJrCloIWZXqQFBVbl5WQhBRNo4PyzEJFg25bOBr7ptXK2uOduwghsV2MKoEKR8aqCXQ3t9hxfGXqDvLz7+OLzxFE0D12C2JoDojgpDUBnQt9PeJMKBAT8AATEr9fFqiMMBkedjOlfZ1+yCD795crlJLGqt1SVLfsdqjrM9Ekw7kv7FzLQTQ2KfWvJwqMeFnLcf/7qaLo7qQ75Bg7EVS+HkF5grXo5wGXtVoY/AKIioGo/MKBJmlbpGdEiS2T94zvJj6UYnbIEfazjXOH+R6vm+x5tmljTGCFL3Ct4X6be01P5wR73IO6LZ/ueOU2yvdKDjJLV9C0NoX/jA6KFOGvnalRkizpFGqmq5RRbVjWijsWeBXRz06Hr4wKQV3Q8qphS7CZ3zNLPbt5jav/KaoejDQ4Do8ICB1ariEmo1pdNOL1FrAXSScMyx6Eb+ZylGIBsjC+7t8VzS0aLOqWpoOL/EPMSgvudeolGphlDSfq59O7uB3PUAw+PjAf+5MQB3hG2L0BlpTtBp1H+A7GRPhGJf1+/Zjybix4S4XzMLhSr04VxY1LqX1tYAbDKFOIu5BbKxUxy5nOcg6RxvSsDkPwRk9Lul+LkCggrLhC+5FFx3ClKtWlwubkhqsoLVyS8mhBvS9QlvtVDddnYv43OpZ/H8OW+jCALTKrZ3FGmsN5uIP6/ybes+3sgxN1cLwhnF3pxzfzxnZI56npOJ3LbZTb0B5zri2+z5nxFeh7gFGFfDW2NMGZkE5d5QCp/kEA+b9e2ZSCiUyAQFZZJxJYtLUgaVNJ7oMmNERKQY6cNrkJfRvc9vk7odlV8AMOmbau9LxY4LPQiOLcPayntjgKHRvQZdJ+H95G+f8sazwpubRaCLQ7cANK02OmEIMW4V7l2upgsezndH8DXq7iK64ZZZd59NNCCA+c0L2AZrV7T0I/gO3V1ySQsUWYpYVbhlZoRIdN6Wl8/CVykko2qxWw6Hj+12aXcFEClReUkrMPezg2Y6TcNUtDfcPliRjurGw76XUOsWsAAusajVHJ1q3T4HQFHLvWx0Lx8TZVVbLPdC7EkfZLUXvVcxAcCnBkzrKRbcGrS7R/TWOCt5BOXhCbagtyPtnX8+/2Gmn5bDkzsr0wveC6iOGpeu/9YEnKvAMnMKxF3QtaMxBOw5u81nA34jyFrrfi/Vet9f73stnxdVgaqItRJvhYrMuH79+mvdcZRe7xlO0H9S4LNj4oLcyyvwYuX7riugmw5rLy2hplue/eHkFQKiOweoiqGqSMYVZEjyMYY0VwDKobuqtRb09SVGvDJeX4kF8MW7FuoVVQADt4or4RtKEJeVwtkIAGXeQFSBy/LRyL87ptllUVUoG/g06n+ogJpjI9EbnbNrtofF6ZbR4vRUB2bN2YliBgXb1Aq1dP03rVoawid8OnSTSushAT2AWl1k0uOYWhyX1qz7/V6d7woF1oq8V+DteYjrVQWtzmt/AJMknMHdSaOuqe6ybhLpVg9ZYr6wMLTaXfLRbp6KIJm8yILSPf5qMRjFywIQXCDdVL8TiQGghqQM3O9ixspYd6KkvKNwQ7jWDTKoUiuxwI1gAUt1mXZVb1azaEYJXcrKj4ak9zuCa5W0stfOze7ap38o+E0HdYHLAC8vU/RJWd1vhRsHkoYs4RQ/CdvPs2agSF2XYoXUuWctACSAUhSCkc4SAwSqoiYRxSzgcnS6EijVCp9kQqL7KHOcysYSwYidNagB/k1njwIcZbjxWwRNAIf4dE5kmGilGaP6Gk9uF7F14wyF6N4F0ni1xy98OJBj2+tozs2Fc2A5Pl4bZh0rtefcsSLX6PVDngf1h2eq+vP96IC/zmE8HYlwLjkyjgAMim4BKDfQ7AYYfRwhQbi5uijwCpNh3ZIx8whAiJrfuxGYqMpVknzCegkVUhGV2Yi6TU3nPCz31ltgFbvHeUSOczqTzTSgHbfMZZ4REZmkO7S5jVpjkY8pb3DztKHqqega99WZX9rHTreTWNxuX4fpULcILKIWsAQkCwtRrOXFKcgHAPVx4UDnM44GYI0QSl2q1wbPt3Xo1I1TTEfvgwu2D/rNA9/+9KzcRl7cIrOFqfVGI9DtNrSvZ998pu86rnLL995GXvHjnPdEn2l/bKLBFDW5NaZcVglrCUvhTgMWG30XgM59mSvvVhmPJZ2BnTedv6vn4bh5Mx8DnHyVjjUeyO2Z/qQ79Gw238sxsElR4YwhK1AMyyM5teMwHFsAJPl9IvZcO2gRTjJRxWDy5iAfQi7nbolHQDCu+AjVWZjHuEfg8HBThnjanrd0HaVXgWLnH3JjaE9UqDVAJ8YcE1B4XvvnkunxjVCSs2UfJkBqllfGAB0TDRSpCihQW1CeQt6SfBLoW2WGcZMYLCArA+4jn90ckVwhppCRGS0bgRQU6mpU1xn2ASp8nJvwsBP7mISt8waZbYw2czKNVnp2uEX27FGQ4hMBfnBsewPT1A7bieLQHzMQbG6xQ5TS/mYcoYfluloi+JRZ/6lq1U8Q2HvYPX0aAziB2Imkta+wB+2Hcbu3LXvP9e+0VafyTtigT1kyyK2dNj2i1EE8V3UTEyUJEYurM/smjQfPm8FamJBTeaEyrdj286Ejx6xi5I6gjyvpWkUf6SDCbvksWutnG2pyGuB5TZyZEYdf86UmAf9DoVsDeOrx3Okbjqh7bim2aI4COU9LZwQPC3nMUOmqKnfpVHeEkyEcpPL5Uyq364IUPljEn+/+33vLe/c5xxYuTmJ4SULdV/3JJzyVRANlDTMEdWeXdq6MAcoeRkfRvW7DjvaqeKNnSCFGJRfiysB1XYGAmwZDVwVThbgygeISyIskdVVFpF+AFEFXfZbmXFNEN7RWHQzQx972SZeaZpSlHwlevcgu9SjOuRYtAo2cp4jJTlk4LwbthkzfGLSmbuEUhFqTp+9wsIXSNsewDQXWRPN13c4rp3xGOrqPIuzAYNcL24RismNHEziS7R0eishEkSzT7q6MwwDcHHzpfd6TsXXXMRjzfMA8pihE3fda9y0XZsKHVD+mVcT2eigxkASQVzEiQ+3REKhLWwDIclfsVwRZl8SMzHilC7kTPqpWJTEmG0gAis4XUB962Eh5cldsRUepWK2w+0EwRVIJgs57a62pPnvV4B9DZru4adx+68KY0P6yBrEA1BImJax88m4ArglwCUEXRFg+r1VadpkYDjNP4XDVXafbAq1mHiqkQYBJBwYI1rqKyrXKJ88uASofvVVgRl5XRnTmHMdCdc2ZvPIWXYrho/PQyW2KfepUNchft+EmiLXnSeByKZoL+Nhn+oDdr6NB1vj+AyF1kRASYGRmXG4bt1U5RjXHTlxDx8fbkLXi9X3aztIG1FyN+uwuAdcCqLWEiiuDAKqzlo8AEJ2WHe5pbw1QrnBp8kS1mkCyODjdRJMQAmpalVvZSyM1QlVdpqcxMzEmR9Ba96oTTzHp24bFfo8DyQ6c093yGEBFOg2mpcxnp/lSGcTkED9cuF1+aX68LJIo9VEh1aliDfsmmlV1t6x1j1v5nMHl28ncXfhgpzA5G+NlaEhsWyvqCrLuK4m2AQ41hohgXrPyopAJ2zQB6VzHboEwUCFCgg86fRwdK7hVHtmHpq+CIjMC8lmRArYAWOIiiMhkt6kIVp+5GqGuDQDEGtWKZlcdLANM2vlVmt81rnZ5+CBWL3Tns1bd71U68TTocdhWOwOWF9V63yLWfa81VARxeJKh3OQMos4K5oadVhYWDIJQGVvRLbn71F3LWF1uEIUQ7Uz37LYLEJFQtwMpshCZUOSVyI7uCuVm5AivMsUALucw1QiAy8hBBYrXC90HQCVkWhoKYAKBzJ3wCDIZ6eADQURyVzy4F01gIpggfNaVt59NwIGFGCce2zV8oPntgR04NQhbA6u++YftrB2X6joGVHRylOO4qnXf95q0cGuAaOWADQE7LFJT5mKKLIos7hoOaHL0uql8DV+tbgfJPUACYtkGILgmRbrCaZBst6D5r/5YP6wHs9OZTDFyHyAWgjP3d9LO0GeGKFDSceyYQ6Xhu0bkOaObwuWmNFEikqwtAJ6B8NnU6KzcpwZwjMypfS5UlHuiHRPAPnqkvQ4vQHDM2KCjs7968f8cMP3AoHuz96IT11INliXdGqViL4ipj7l8y9KYgNYqgOsCqOXzxhsasstt5WxPuZEOdpOgTk/12bDP1B/QZ5AHmDlNooJMCqgTcd7kX/sXtrbECPgWerlYLGr69at8VPHoIFDdG9Nmkwg9dg0eYtVTN46nbx3O2dqcVLeM7I+ERZHRlaUa9NAbmp8XxzhF7Z4LbgfUmc/iYCBiqE7rWKv+0hzBjW0cOBhA5eYR4x2XvgmAkPKxEqpaay1oFwcBO/dCOgJwtuFzbjq3rfeaq0C5F0rNexjcS5Y8TJXrSUsb3/hBUqhV2MBmM9vdRjS6FaFUPjvUmAz7CTAu69ldYM0JjSSiT6PatA96/OOoTAfbj231/cWxgBv9D7Ew1vExjhkcQ8+x4Qyg/aH5XhsvA1NjOERTTa4ZGq/1u56TN1sEkq4UyzmelpmuC5Dqvt/3/Tx+FaPkhG0B5KTvapKGkW1OuM80MiSZvB6tKqxPDAAcDGABsgYQHZrothUZ01G4t8eD14AVDLbEDFcjxJVQxBUIrE0JLYQ4bcWICETkWj7op00AEd1YT7yucalDNgFdktH1H4Ok2/87O2XD1w8BIYBpGsBk9v56KJZQ8wUc4dyQIEwMszmrAz0bz08sAEf/N6swpPgMgbpucxVjCScdQFX3/fW+p3OjmYoJ5O9sPbkvMMw4MJI+EARTx77DLVMR619+FwBo9e/tmbkPvJDJ7EFZAID1Rs3pQO+3vYDooyZo3zjOJrUj5fMbZN3SkorTi12nBVu59zwdEwPYKru3k8JePQMV/i1jqv+w1fb2pCCvYIfse5v7gFIVoKj2FDH1ABNQtva0mho6wKtYrf6aCJqa//YC9DABBnzt6kgbkzk/gAB53V3w4u132sRprffXe9VAUhLYLZs2HSBhnxsYoFARF+njU+z+k8t8orc/XIDN3jrqqgv40KrHczha6Ttbx2dUEXVDxeUGEe480+9ye78MN8/NSJRC9qHJPkGumXFUC0DLdIaqqkLLJ98lT7eqciZPrTJrYdIMo+MxOvbTGLTh8uLhaPUKFBgoLPhkmVGwE3ox2RD2TmVVFjEnuPbpcaqKENy0TG11Gp+hDcQ4Gi0AuzdFk1oigOufswUhsYuwTB3e96o1JrR3ZnQ60oFXVrYKmf98HJPX6Gmm0dZQRBF3b0JTVwLRXTMa9dTqP145tKuCGSA6SsTZt1GAwowa+Ov1uiJjqZCRIsI1BiAihNBkjgcBH+jW0hta7aj6zK/YvY56rz22OOZxQgIDKUQCmMSPuJI5HZwQmfbkGBioGexuOPfqFmYQ3cAc5hFjsnqmQCvQegT2fQMRmPZlR+C8t8cD1MPgPATAwIGApkVMv5lqHhDSWmutpUEkfuBWRDhOaK9vR/GwL8ZGsuUGemVwsTWXrcRIik3eZEefAO12gnvTjQM8Og5wb7pMuD3hdb2ujAgsZgQWo5SZBPRycVkb53KNT1PtQoTiJguxzONYB/eztFvcmUi2hsfrsx+BCWU9scBREA0kqWMMOojUaNeR4N6xYmuAwTaR3HjS+Zij+7TxV8+LPjTACMCHBhgBkHBN9M6SMy91ftd9slQeAjArIQnMyAgshMLFziSlZPcDdcsBH5gFoKgF3c41UZPKXXaHAYyo24VPrHSQgVKLiM8lGNkJC3sLAOJ6Xa9MXlhxudHokk+ewy9yBav63mAoaXwBKUIrq4prdR4dApLbJUVUSeFz5kbNc3D8RlWj8KzSR61aPqrz8riKZUW9Md5ECrevhfMVMMLfj+yQvC0/Mb1LvgkA20tsE+CtOfUIhwwggOveg2wcZ7FS1f1+v9/VS98yEO0fHTrKgRP6YI51s5Akpj+AUyR0ngSqJdxiZ/ULq7pGbPO7mARs8zBps0u4J8BYpKawe//ShzZmZGaY44uQMohkBqUrlpJEFsVyivKHALTC9u6OqceX0+WqKvbWRQw0F2wpyi2wBSDIzOAcjS230d0kjvvXBWBlGwrDfc5Rif2IOPqRo6Db25iyviKqatVqTDgjeJiAUZMmArR0uoU3F2cNgBYrYOoMS+u+3+93taS3AmpsPDDNm1RKnxOIVdDuX/xNji1BAx6Ol6TGe3u+eCitIzmDJeid2e97MkHgBASCfXqHihEKOpjsXz1abh0T48+b9suyTW41TcHlku0VPO5ml2zPT3hOeXoqtHEIc0KKAJHlTH8opERgPBifn9pYjB1L4GC4bUssDGxTKXVOzlMA2hAP1dpkRMcDx4MeFXGljeo0fd4+f01pxCgAYspoPgUgOpwdQYSgTFexOAkCyiikmvZrnOB+ARxD4hzNozfQ6VWKqp0I3QLxtKy9U5qjNCfpxL8hRhpTPHAbNiR9OsVPgeXjd2zJ8D/t+PmZnfLfItKLpAFL+2qamepJh1Pi5nlat05K3JO/9748l+K5KNv1bxOS0kZgs20eGmBCfc5M7Ztvh/vKnnKyOgo/+ypG3w/62OJhPnwAcu+X9o0VrpSNsMLuZIdZRDlx0OZyMEAz+2jS2BjAFWIwvG8iyRkJFhQ4pOWCzPaRNe3MW2c9yJP2x2NSrvrbDiKai2TMEVx78tSg0xiqZ5ASllfcZspFo20X91Ux8c16GMLyqVqPK59ksVZ9Dx6HhxeKh8yb47RmsUrWkbsReLPxpob8FtusvSFAiNMlrDXJvsiO+NONSqyDXT9FoaW6cT5JCZ0r4cSufkKqfGaXYwaoyUtxEsBwCU1YDAicCXm+tvVFo2bMyj62b4PZuexYG52cVr+N/T40uHo48ePGeH3ni/3I6eDJH3ceqdvb7QH/0RfpFf2D2jlK6vHjaAA/QvecmrWxKT3RQO1VmVvOIzcMHGl+erIAgOuXebk+wgi9m6XqmOzn/1oBoFU4ZjpGNElFRghNvKJNgDWlkwdqNRJ3rmKVD/wYGyaJdZNQgXWp84gq/RDhFmDuGLhuP9SVJIJIoWHVyhCwoCV6H/hAGbnS975d+OSKJQjp/EJTjATC27vqrlKWSlhr9UqRfUAcfOQt1DnvkowX0ORF1zoZmZuKdONKx8e2N9vIDI+fjuQfLWZbowhn9ne7rOiWMqPenyDwaIBOrvv0sakrrUVpAeDAl1IG5YaLmwnAo2pom+4rMzq+Z+3OoHDHnSph3ckbKWd8+CCdmMNaqqnSOQqhM6DRAiDllWBGIFmRV/u9vIVVwK0by4laSR+HfkVGdnomKBSWnJVBZ7zZpWctpKRQuboCp33XfVd0xF5yR2elgMh05v/SbAHaHo9BAaEFl76wT75w+x1AdlMARopIbT2gs4UOSNFovEEvD9VAjM60XYs4DGpveTaA3FTgFqqK4wUQFK+XSiV0k50tAFFQXas2CrAANB0xAD4KcOaEFBEKOR4gJTMAQR1cGKTvfOIloBNk0O3G/LQtAMP6dJZBF0Jsy+72HIqKPjCjsxIaYukgpsG8aB+mLer4khg2B+OKt++KYlPGJ6kltvxMwxRBOHcem1N0OpL1TWvlyfZnyY1Nx9Y8QMeu6nu+jrmbURq1DL6JSGmwa1uDgdtj2KyD2HAHgttTBA0Cm+zQcBczms0jHcjcPUw1fzd/uyKwxItaRXGFgMXuDtjdAmz6UaveX3fdgsg+S7dkwQLkIzyPAGT2iUGv1J3ZdiOWUAXcWstpms15EIuRyBFRq2G7yVF8i6p6FwtlW728NQW9i3oviFrvbrXojNsFott+vN+yI1vpM+Fmqhyt73imgm40H4CqVgmhWh2xx9LFYuBWAkT58HN0eoiD+oSZwPG9W3sYyoJ1L0hVEaiqG52NZuCAMQNbHkY2qsPjI7qmKq73hPa75/RkAFt3xfF5gT7TuSmbUU1+uzdN7fZ82TmBKsLBoGVMKJ+8vgVAVUJcLj4Uy3zUIoHq0v6IyOxCXltx+cgeb1eOKzLEfi9/LRZwr2AZx76LQt3FgjGAW3xGo3h9LVTq/bW6twVkAaC0StT73fY8FD3NC24cUoZNc06SPRNvE/dLrRG1ztfQLQGhMutkKVNPJQ1ARgBEouJggBYASXTVm3qbay/5FoA2FBr3qw7UNcF4BMC+OOeIadWak//a6xt9xZlho4fMDOIOXlQUKi6yJoSDkg9ZtffLIpZ8+hvCHt3WAO0GlsCK1gBXdnH94Hkf0SBOrZBGlY4O3zC1HZRRrK0nmwgZNdryLWfod0JG9LXGKzfoRpmUMNWQ7m6xYE23hqD16UBEgEVNW3ZzGYa6ChYSQgqBpRwNwCrTigqIOSW2vQ1zBABcshmJC0QTC08BELgZFxsxjl837o7UrhAuw2DOBG0N4JKoNfk0IChkPHZYeyCZEVQUk6LzyKfFcGuJNCiRFAQiyhhoDmuoQuQsWsvV7b0QV/rYIIO8fQR0owYbmLIsw/HnuFsdFQtLfBcjKd7FG5TqXRDum7UqFMv+SWWwfpcqZPqb3kGlhUDUKkZNd1XoI/mj99tMbU/Opxv48cNG/ge38fn++ZYP1/E4j8PLuI7HDcv698fT+9AAHFngPsJTXdBAXduTHIOPkRlGJCYfzKvZAtAiZMCVmaTUh8A5+UvbAX9InKEYWzWIPzVAbQ3QdiXzMlYx19iMT/N/g4zmRQw+ZYsAqrD6UAkFF6JUbimxdr5S75xkraVK3Xexz78aAUi4nYTkzrxe4efSNsLFE8dxojAfwG5/q/H8dBbXUz9+gQb57efbnsP25Oadaq6NLY2dddc5ZnPp/lZnnXGtYwIMDNpZVNV936MBBgPkFvmRAFxVQd19ygA0eSzj1TQ+abgt1BLaC2gQWIhJRXZJkQ8cM1IBREqxENxJg70lYAMOdBoLIiMju9yGl9NOXA+QLzq9vPpw+AxNGZakDNZyJzFn/I8AEIG4WB1vJlEHkntJBpFvInU2jbcfH8u712QmSQcDNEq37jmL/UN0NoPegKjdqA0CRw390ADVAZ8xAQKEq0vb22HhzuDvhIBPAdgE17EBziTvVgFlOPUxkMfYvz3RY1b2ZHL4cW4Hdl/h00Fqr5JbsQ4YbTbBX8e2YfBCT1yFCejehpoMxgZhD701Gluf92+AhhntiMLzOTl7VCMxQzD2ZuQGV33Nj92+n5xbQUNEtzVQMTR+1rz3CQInsILNLJ6nse4ToOu3xnfWgCPPZNVyY8OuWgbg/FvNrWTgSwBaRYXWwrrLCOJOVqEqsEihFoTs7nE5RNB2A4OTzVdSNBGEvNK9xAILkRoXUT7+WnU7UBzJYET3OWlDUKEl3MuOYgUXXEgl4b4jahKeZUTmbrW4f3feCF39AJ8AhWvohT6+BCw2XZAjkaNwOd+EeAS145fRe3x2KkalD3SbXzQr0iC2lTuIdd+GP32yz9pCc2z5wQAD2yUNXgRa30O6dJBDswtWWoo+4nVDALpoaYtay9fEDAcXcBn7L40AFIHxMmfbDLvpzXHiTnRT6zhuoKJdsojRaLaSTpnzNu/OHyiuRTj5N4C7cN/RNbisUJVuqbhWReyWI4bvdS9V8X0vZ4PYDrozYPXBCJYAOxjWseGZxQPuQMXQR2WBZteNq14NE6tGUcgtYdVul9e8qzxb37QAVE2vKe6d3CAQO0h3NMgHUMLHnyVc2dV9xrbbdm+lMjCG/XBbH45GKdq/V2tt5/MGux5iuGO2ATGt7scqCc0DDMNgHsB9liefM4CIhVj+W8Vy5uPCWoOf1V2Zfdxf7z8EFQl2rmP1hpvDocWyzxNQh7kZiAYkaB+MwYw+BsNJW8T2N7dJ3IGMVr3FBUK16i76gDAxJC4UC6HbxeZLArLdQBdGerqr2U/zKn1ymCPBU3LpoxnGTno7Nf4cELiTHyxeFYXOxOs6R12vcQ97P28BcE+XbyCQPyVs9sRTLejxajBgF3Qbo7FmQpUHh2OcDt5pfcoMImIEAO5JbkSHJaf12F2+rkwWFMFkn3yaqLhe5uLmjHtmiCs696/CjJCS6wiAQ0+JvFY5dhkkqiIirkQC4EUii4zwvkQGriu6IpA7Dsj+/0Dxrak1u9YcrWYeHv7C+AbY/uZzR3fq3R9NADVgVeoNwIMBCOmaCo/GABotoQGYDxOgx9Gh24uZDlKI0IKm0yNXsNgYAFAsyIzHEhYAuPOiSsXIrpdsN7A1gJuGHzfQWQhkSjE1EJBcvo+zMZtQpefFMSC6LK2NhbcT5nBMRSRwVSl6LO0GulyVYCCw0ixn7MIhNwuxnjCLozZugUzrbwRCJohCQOliIZRKkVidf2YN4GOBsalgz4kHcDTA6qHltVMNR1W3gRmn9LiZx22zjqregl0atvX5kL+A5G4c7Yd5jTtpaQTzbFQZ3PiUF7DGBGxazRkRMY6qusoTQlUg0u4s7DyxE3E7/tIOSC/HCLkekth4H40R3bcBxCp3J3OYYJG1ES8qHAsef5OqPg0BEwdSA25Gt0HAuHv7wa0kp1oRA4ZOhH9vwfEChshg+BjliQU0+mkBwCTgz122Omgj8c0n6lHPumO0LWamNIpjcolaE10LnyZAHBVV+yP7/tvsDTSwiTrey8AV/GmAGPx3CAxRjBoQKPTeLbdWRXSbBKPhGhNQmkPaBxw/M1lmEtz7dy263GB1dGJJwrLPuts2AKB7m3GtFXCApdUTwSpI62YFuEqK3guFGAbYFfcFBVmdeSSVqhBaRTeGQzlDyAXSYw33+j1cOHaukEYmewrF4W1iI7EjGd8nXk+X0owjz7ICvFwCfS4zNIRcHvqInwLQPrVlm3lCKR++AqnzoUJB2g0U7ShWqNtqqfz0PG6gnDB5QGC7gaXqqCU7T/jTQ5bnHANhgcazRxq7eq/LswZNc0v0oGeSHreLTDpVKDQHFDHU3gkjkpHBpIgkldZ0JkWie2pEUBxHo0/N8RZwontb1iaCALJcPt1uQQOHwzLsdWt7zPEejxfAMSD9l6cofEdvfd3rmuafrE0ENAioutfWWXZadpffI3yCkge0ODlDadgt1f/X1tWuzXWkOAmqndn7v9aZid0HtD8E1f1mN5ln4sSv+6MOBUKAIM0DtNTRUj3d9Q8DiMOfBlD2X9lpgcxkWWCdfqbjpt0Arp30AyMiM0mAJw5CfFcwKOYvPqC6oyVU0WlgjKfMpNhQMLLomR80zAOc05YRmhDgCTQm4JH3MHXY0/bBiIzBQsAlgmapoJLuUUkx0J3LO4++yuC05GCAaWKcJSsEp6LFjlE8mTt5Aee828cv+gc4NZO1B9+Gc9QdOzb/HbO7MqL6JgHEhwf44tSQGVO7hgXX6MEQi4R2k36avR6A3B6m6BmU2YlUZ0Mbcxp5AnS/fzHSrJTt3NTddzT+yLx/0tgLj8bm5wlipH+mSXyWPAEtqp8aYzTscC/ZgBduwicM7FiXS2A6uy1zijCBBU08oQavW8Rwagp18+NxcDcNGDD3ubTUF4Pi7PDSNh+gMR9mnoc/8M1VvzzAshbnqHuiiQ16JMvU/byf+pRMsQbgT3fHgzODbDaS6mXxJwtwP4BX20wPSoC5pZzrATLXAKQWZk6vmSe9KymjkSm5aMqZL0aUz2lkJODFl7EQCNKU6u9KzwVxc/6DkCeodTfwPGVPPMJVUzYlGQ4BvWmcZRRM+EyWF7qJ9E/sRng6cboCTCHNMP94CXjXyzpx3Ji8L7Ps+ARlK2Iq8kY8LJYfX7DJ3iQIA+Pnu8KJ1rFcmRYKr1i8p0+zflYDnfBNkjgWkEnCQkpePC6YptGXAfg5Ywfc9nyuOQ7sQLTbhy1mPCe7dOZAwV0jAqnh7pJIhse9LLgEB30kkYoINjMnh/TYqexQPNNgHkD3MvkbB2CEOnJ+WCJIy54SXpTqcWfN0NrEw3aPQJVLnoTp14LQoJ6WSJW2xnnLVDalq4EzH2bhzwfDj1PgloPnAt1s/vr/BfXR5M3jw92ebgnrC67czggTQfU8vezwYEaOJc3zb8kQxo2lXVUPAmoRTrocSuUerhkji6+kZmnSyWuMKzeoj0ppIM5pE0H2JoZuJA6IEjJsAME4eYINMRBgSmIkLNvjlheEqGKmUAwPDj6+D5LQVXmndSgyyfTE6NJiX5fCbGfHDs4TGTgZ9/K65l3CRK0eDPxbDwiVCKYtr7fSQoDeljYO/7sljJaJm3SnpY8BbGD+Px5gigqYPiVjIZ//ydVsI7BVFXvxqojWTsFt5jgG8FEIISmxc/JH6wELHwPQNYCQNwtdcfgZ8MAdOApMy2WQUOSx3FKcTES4OGMJB//RAyLkSxpkMM4rAwExdhqJkWy+TozbWESWECOPMavAOuwKRTAjIniC6m7r1ElEbyF4K07b/bUJrvFoMP8xQRCONdMw4b4gp/NuxuQtsTjafLzicg7j9bHZMyQPhsCCPhxvMWY3c5O4tPW6gq3q3funE9deCE5Zzl5x0/RPCNAagMS7nys4hzoZ1jI20rcBLPUEErELgj7Jp3/T4GqiNB2QAl5lAwbTY0QzWjtdEHYYE7siLLk2TAKAVkQimCesitAKUAMpbGIDsI43uqQsLX0ibACwjaO1M55LT3GZEU4bFDxxum9+ezviGgA0zdP7aH8Gw++/+I9/G4/jSLUFZYJ33PF6/gv9uM0K1wAWT0wU4ewO1gdfzgNXKFabdF7DYLU5bAwQzTvl1KK6qh5h2uPwmUieyaBwH/nuT1jmcj6BcIdTMLIYmZGMRJxDRkDdXdXs2b2iwsqmBnlHOjcbmrIatwI/cY9k7OrXPZzJMJcUIiMiA8V0tgdw5F3xPAggrDHiT4uI7XJDcNZ7bRBYV3B5gMF9E/JcOwRwuzV4YdJGAFJNhLG/FxxNaB2Hfz0Al7LUZTzGAPRPAyCA6AGBm+pF5qBAl937WyRqDECQFB0thQX01V4PdyuPJiN/jAJroGP3mM1Sl7wW4Pziw5csO2MtJ8v99RVpWCC/Z01Dxg9yXG6M+2KeGZ2RwEER9yaDjB6UQNCEDgTM1BJndTA/ThqfN8aeKtYR/ry984rSvIZnghfK/Z8Lf73Hx0F8MMf8QpjA4Xo7F5/D0X0esMZhCXFHg+YPAQDjXDd87fS6JKO8FalaA/CV/gIBcO9IU1XPU02rD48mdX9CAEOREeVpaU6zzvS0Xv/1MQqM/5nqbQQwU1VcqRsAbZ2lGcmO88opXvjRxxMZFM8rn3ZYIgOlDHTzvAw5iqTYLFUpMyPOyQBbERg9kNVp2oekC9nDHZaY/NxNksQyBrPefaJ3kLO+B5gWMAYBxXB186Dx/cS/Qg4XPmEJO20HAdy7vE7Qt25SmNWL54DAttO56+PFyRJtAVJX17NpIHm/tC/1R34+qBn4XUBEDDCZ45oINGlMs9iaNxkD0JCz4xNC21zpnrkbJvltrfOqdwjZIDAy2YyOCX8REUkxX2f6qUWGSpnoivMKBvAkQUQx1a2TEZknA9FWE+rvS3jx1udrfQMCcpQGcFtsNrrq66fCpFJQKz2gkC3npwF8MgF+1Wbn7bVXcuxRmx7MDfYvP7+1/M/8lnAAXrGe+9fErhmh/jaARaCuZHAMYNvvR8hf5XPqVntm3Jnw7OHgHpSxn6/k52uDIY1Itn9+rGOhzLg3DV/ib9fRpAJXpdaBglXwxezaY/g6Hum29szArWyGfj140kXTKzN9AoHt7LxuW1gUC4zWgj7XhcviYWPbfRHJzDIBSANpHSPM5s3xTy7iNHCeRhAdHf3RvNBggwkfGqlamkIyD8CJGA4UfZ6de7/5Igfsj2bqteF9k3U7/p+S8Go0r1Cyl8UAAqGt+GwnmMxzzonaoOqXmq/2MfduZ1oWl/9sigTWZczfa8tD6V08MTO/BGsGvZ5gYRjM2Nxj0o7l8QDM3of5d92rw/U+t/6uVrCA2emN4Z7MFXOsogdUSEF3nJS/qAeE4IJR0PsC3K7ib5uxJasgyCmYA7RmHaRZVlK3veyGALMy81E5BYb9a34OQyOc/1hkaJ6z1W3od+jqNeTtFBmzJbYapWHW1s1Lxeoq4DEPUETBXBgTETyvVxZpquMaADbf9Fcse4BzMhjRgLfNfXGC2NKmCb7waAHjnETPkgFOf0ATUsUMU0271drAvcfajVe+d6GGSohZEwY8BZKot51nKz2pspDFNR7euuwC/TXVaUnhJxm/tT93FWxT8TrDb6w5n5cC1F6YgdleXBug/l8DiB0MUqtVWCrYc519fltnY/LoyqsEN9mcvZeup1smWPOajgnd3YHq6io8/fzDAChVM1ppUTenYqawmkJyErmwyfdjQtKsjuWkGd5AQu4J2gzd4JAzWzJYcb6BXbyvdrhw0CW6TAV56yBhjsfy6Ko35UXEyn40TWSUl2aGKS1JLMyaCidHEzr2nHpu0WbBoH+g91mUzVPuS/EWj9GAjC0KYdMiyjYNcGYDASXQ3tO0oF/wprabCbcBLDS+r12QW6jQ3ee37loFBqPjQ2NgSpHj++dF8UlyvqqLpjhbXaWnnwd4bzHIu767h5tbd7ai4SrRaxFXByXYltvm62SA9JrPiP66E/feOKd0HN0bpykaQP087YZzoiBBjxgoY9aSZ0osN/B+nufR+03Nutnut5jXw7UU8gZEEx2EiVj3gu3/cbkyTCLlnGv8XQFqqKqp6e9c7NOj8Up3Ck9HmNFDapwayHrGA2i9lmkh4R9ZAEy+NL9CADb5nPtx/vNlAPfZXKAVm/zYIGYIbKkftbw8Q8/zdGBiBi7O+iJYMOzKzWpWNFySC3lO9bFoa6u7n9xbja7qT3+2X5kKICPjn+2SNoaGr+IT5aMXtz9S0scDwIO2WP/mtnu/+5rW3AwtjTYIen+JbePSsjF7zncgB43UByfwqhZ9O/1F9Mb4k9L10FREv506K6HW85Rw2QddLcjrAb74W7TQXx4AwPl7Oq1i21j2+c+iWn4SD83k/frWGQ0rSM/7LUJeGzcVvcnTHZ1uKsH1IJ9UxmcXETSfZj+0G5MG3kJU+fvpG3SEibShr9rSpK7cNS0qLEhs0pTEM3PJ8EBvNYPoAp96nmkga1BKRD/KEa397rFZQLxNFbwPe+zupqt77I31TrWDzQsV9898HKvfb43HtLmlWfwfJwTQBMtT3Z+D3RAwZtQAFNt98JUXzquD5zEemEf/LUrNEbT7NmV8nN3tJN3wwhGM2GzzQ3V9vtpF89+MyriEWNnpkXAkIsNFMQMcflnuPIM9SjRpfYKe8XFIDRXefxhoMaowKqUIqRFoPJqeNxXi/bueqni/MRKiGV3KI4qilt7daPj1uKZLBNu3p+ZMFLmzeroSTZr647S74vbJtMvB23W9WGIb3Ka2cQ2gNxzf38fXc/q2qu0O0/2BNWQCFPr88XDoxwNsnuq/tOEIX07txzP1v6k7roZ8WxEc61H3bQGYZIdBpzPkmQ6ODEZCIO/AxsnInpLh0rzznecu9twy93tXix1031cL/eD9B6EW47x4qqAHyoKL+U9bGhhoxfPfeqrj/Vsn6bpSF/K8nPsky/mjm9m9WnkDvh9ZbyMRd6lst1PkVlJuvIpAgdVNN8aPLIQTlhnYgjg+aq+TB0hbED8GIJvYpDsbp74D4WWIbub3uYLjAX5P4hAZJJlLObu5bv0b13rWF/zD0rSbKLur3/U8UDHd8NSIhht5wjpLMZ2TgrlQRboK4e6WWAPIzMiyY3H54A6yLhUqLMBxcVWKYDf9gfoP/vxRdinivPL0IzxQHkNyPc3Hj7cRz3/r3Z3v/+q4peuwC+flNIKZ7uFnPUSVxS/Lf7TpKaNNSxEoKoDW81RThaIiJCmIAurdk9+swro9wJi27gRhy3SOy/ctgFWFSU8nVxtODLhHAQcikw3rKP751ADAWUB7NwfWA4DMuXpLP9sNcGz9Z7hqddco19bT73o/UvGMEjw5BpCMM8tCtvHILz2UX0zbH2fJVmR6PkJ+6I/6eVrOKY3+Oz5sKNRdimAX1d3F/tPv3x16FPF65696oALiRWfJ7+LLvrCVz3/qKZ33f/sVJJgnqnhKVGj2rDeD7z82AFCqUBQsFRyIvnQJygK1XX+e9rJR0QbQaPH53cFgi9FMU3XdvChyJWgHak3hxx1k9gARStojaS/qkjf3ivcw0ltwWUd6ka7O35PEezPdjvIx45zW3Xe05MsAv711LUmFrvef30Woq36/n/fzfloVqfJMRTyIbvAA+X6ejFAoxr7Q0Ag7jQvjrsPlRNNu583v7ne1oGom3YqwlmjP1tXhjfUuG7/rz+9iP53nOfnUAxQRZSXh/tMsgmJ3Z/27nubr9797CkQvdsV5OhUSM9V5GPH370A9PAj0k2AhGoEOr7VyfooHJwD18/td0rNKOVI+bPH9d6d3krJysLUlYmDHFtyr23cAcOo+3ngV8SsJbLP0NYBnnzXoIj00BmDepD+uAi0bQLUYJ4mbmzHydaqF/shGQairTr9/vlGhrvffv59Aq+vP+3m/n7e64qg6ojviIVVERz71VBUgKoZhm7lJI4SbQl5+ra0hUUU96nrsaciYLzeU0KQZY9jmsqO76/1Evzu6O/E84LN9guh+lwfe2aXz/K6nk+/fTyUh5Duq4yUms6VzulOMeP9JPo9VAAsZpVeb4SGgHfN5/Mi66nm6HwVEem4kW3j/rRPJRrC7N4VbDzAGYIv5rCWe22d58Mg+88QGttmIrh4VKdUwBPbFU8oykpxY6hBQYjxJTqgBGPl+VbUebg1EEM704w6ssAEkLCaywqXQj3s5SX/fJMOoabLr2/46aYAAkezLgw7QQRVV4+C0TgjfsY0X34y7muCwfSnuI2FTu/lZmjbPyWo/IEkc1TPFiv6p1ewwqd19+znm/b/B4A2w1zNpUZjWRfjZwduqzLZ3rAHsGjdwUZ2AFZpGd0PUzN7NiS17UKU1AEDleqqbN0FSsTBuELtVwroZPfvC1gCqJcCbIzd7f0JXj0KSetZkdHWPBiVDqZaCceS4536pAPNkziQpFrX8QJT7BJ0Gm6XpRlXrqehHKsu2zeqXXkZs/9BPtMOxis/Lbo5tUv6rrnoNNSIyA1w6GZMD3ST4G0v51fcnp0vlZ9vd/hjXtsx3Ryhny4FzHxtsbBXcPWN02uj8i3euQ9rjcyHzRgAsx78GsGWpawCrCn+zhfNGq7oZlZMduskuT7WEmnKiL+oJ7f63e9wuDPckppmiRz8qzgr1RjG6wHidzNk+2oMBlqBQh7RSgyoK0WIw3q33u/pd1G/10yCloqYPO7yTClSwqrqHNVuO4j74vUC9PT2fEu3Ndej2w1lZpr3l8/0s4KCyB7hNkb0T7g7eooRAswmoNjX20pB7aPB7QZGuEgJUe7ux/YTduiAyrFGL+3nXqRg6bDOFg0RdCLAgUFZR5634QsswCOctdHcjomwA05ad3shVK9AtCKiYbXe4J4MPQwUSOPAUvZ44Cv/JSFIF5Dknp4n0c/XtqFf4xk7uoW0jgu/W+8/Tf4r9t/Q0ItrH2wkgWCyIDbGq58msZxiAMDGs1z8YNlmH5B7tUJ4jNbq575r6tNMw+JRYhRwhTLVKzSnKNoJoCqN4YJ2dzea1KSs2u3bX6+QOhtz+7JsGzlwiCOpW/nmJEEiljyeTeqQKjQHae0nsAS7J6wTaIem0YcZ1mevi6DpTu+o6BmAoSl1z+/Lf7m32yF0ElMPrUpjlXgyX9yMZs8YDhCjngG7G9qJwC1UvsuO36713QJiS9E93OwdrtzmBj9f8J7hOZCDXPXtQUAryGoAVkG/tYrA276e6v+HxcG5YudMDPo8Q2Ap7AHRmksTBobdax+gK08HSlroGcLscOXy2ZOkeF1bGt327hcUhwydrLthG3O1kG4PUcbTjJ4zM0Rl/1j2siSy+Vp/+I+x0X7bFsBtARlBPeuSAUIrsIuLX62Vxcf+9sQ25NSJ4ukp7a+8D3/zafUICg9JC1q/HH/KMj6I9n3debi3gOXiJjQDinBPRpKjcDCvjryrFi1Uvwirj1XF+/SJf7anuPAy+XKk4zNOdSSFD7AgxPTfmDqdMcyBsKWUlUrHzXyHwgAkbgNx6ABuA6IIGR6WoItTDFo7U6+M1kzyHcpe2w/YPqufHr3+YyBLWPrBzsMUAfp31tIZg83GOIfW9b9z35NL2Mw5Dem41M1sQYirSBcavk9YD2yA12Igc4bYBOFOrGI3W+S9EeILDbSjLA+jbLYwBAJIlWyAJ/YA4h0fHlNzrZLA7PD5k+456qsRXql8A2gbAfP1FpsfcPcP4EsmIw8zoTAI5dxwJ+7QIBDKB6FY0dBST63b+KzwxnXKz4pQEvjHAh/lRVak1JWcPWpw/lnT8dSioHuL7QDlXZcMf979smvQDdOv8NdnluqxNyiLzvHLasfZ83bu25S+qr3eMkOf4bzSNYPS2W2066CDSABhLaE/XSVFK8/qcTpSm+wxBC7dICFdFxwACw7Dtuig3WKFolsINnewD4hykqtVQvDJjBhDTvk+I51dX80T3y5nYGMCLTBcZEV8GkIyjjsPQ8fUF0+GVDBbSPXuioFCiIyR2nGgEDtK62fExgAlX7WEniGKHNU9x99XDNS3Q445S3jzHXvpCDGAGezysOUax2GH++TGAmCg3yCki85yTPxKpDOLzEt58ZqngoWE2HcZFOz39DeZuonsxWntDha87CSBSs5N5uv9J0+WwcgN6QoxkwuJjbZvEGTcaQA5XLK8XwTkKb5BHvCKm4oS0WTbIXxWNg6PjYwhWuxiUMzweh2RmAGRisjjIxHLYALiSYxFAtHM8q9SFgA7zd3esf7L8bSsTLpO/d3W0l4VNTFx0YiblW/BlADf1GeTkxpsYo/hWCIExwP/4SQ05f582GRmZmcsyfXmALwgg8SQhpi5vpep6iFJY+8NxccIa3Ldh1+FvOQVvdfZMdtsAjAKs/xSwEsK85m4BpqnLhWNeqRrAdldzNpEUofNqKuVsJAiqGeTLBtTiU1WlROlFwxpWIc/xdiOhFUHyGIoHPkAQE+hyagE2IAKIDgEohItB6PACXJMZGNoOFGCVlTncLSzukzM1MfbhouFJCJ35RTxM+9nHAAacf1DAJXUm/T7/0lxB14EmPl9OZEMAAdmor/EMl+AnGtmzJKdk8conpr16EuA24ZF5KadZFeaiU3f2toRBj39gQxZpZQEoqqWOwX+uYSJHZQj2nVREC+2KHaf9/LzKyBY4BwAlVvCX69KWA3+qA4fH7WmHXco8cKuDyjnBcXyK67i0KcaXprtmt8bwPhgJLSkQWmZij3C/6ZA0IlaPTdt2uSna4GZ7gIAUyk8mNC1W+6w1wRKXYN/buwcrnQ2706+/1cBboLvpEzDSVev/zX8jwy/gH5mewAIe79JcpVCJ0UBUnY+53s8tiNMSOdZ5444zA2GUBI17negR4dFvrAEIu4UUUyPrKc7rHM8o0ch3XownItyVqVM7Y5TByDjRDyKPGkAX0DHDobexfA/a0WqnfA1T9rQJeD+kPQAuibzbIxa4deMzLaex/l5qc15Q9mtL7c8J3bfS95DHV/sHbpaw1jL890kH4Zi54OTNdkfr5mI34L7lZTScuqqdXvWIwlYXUA723SwHB+YUwCPdJR/3EG/JcY/vi5iVrNFoiFEcFjskafSedes/m/aGgxGJbpvPkDlYctSViF4ORm6nrGI122tAya3NYIbeXZTRtkORmxUFLA1275c0swSrvbDIeXN1yw3LM1Ie597hUHzx0EMgXVh/0TxHdLgvjeTGy77PCDMcO85yo8snXAhSn7+cYpmHodVtxgN8xnj4MYDP9xt6Kyj1I/Z05JEbYQycoJm6mZrKxJcbbeRwqebMk8GyBwNiPh0JBDyUrHU+6Hm2d9p4b+U6ewzLYxWOQbARsxrEcD7SKGnQYE/8y8xsKDJbwmhE7SFw+RSo4ysX3ccwHmYZd8cI9zZg52vVtEaQXYobExcRK9ovswTIjWXgNA4xPEKX9931+ceatefOLiWkax/GncL5y88krN0RSXJXok71Lj4G4I/E7+cPF+1Tywl8xxofkpaKus//491xrwU82kUwBg7d83MWAHD4lvFFGy9MsfdOZN4Iq/keZpw+Ih7MuPyGPZ2B/Fc+EZGZxyIyyWms9hdEpkRXFkMT4+Pelw8v0UtnkQSSV+3a3ppbBIGHUNatYmeqrnvUJjnXk/gFwv0F7W6pix+ojylovrcmPdDMtY9DJfW/j4eItAjZlGAAAAAASUVORK5CYII=\n", + "text/plain": [ + "" + ] + }, + "metadata": { + "tags": [] + }, + "execution_count": 43 + } + ] + }, + { + "cell_type": "code", + "metadata": { + "colab": { + "base_uri": "https://localhost:8080/", + "height": 273 + }, + "id": "HyjrWdv_1dse", + "outputId": "c67a3738-2195-4264-9bed-ed364055f047" + }, + "source": [ + "mugs_approx = Image.fromarray(img_approx[1].astype('uint8'))\n", + "mugs_approx" + ], + "execution_count": null, + "outputs": [ + { + "output_type": "execute_result", + "data": { + "image/png": "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\n", + "text/plain": [ + "" + ] + }, + "metadata": { + "tags": [] + }, + "execution_count": 44 + } + ] + }, + { + "cell_type": "code", + "metadata": { + "colab": { + "base_uri": "https://localhost:8080/", + "height": 273 + }, + "id": "4O3kBCij1fbQ", + "outputId": "a8f55cbe-48e9-4a89-c3ae-3220539d9747" + }, + "source": [ + "flower_approx = Image.fromarray(img_approx[2].astype('uint8'))\n", + "flower_approx" + ], + "execution_count": null, + "outputs": [ + { + "output_type": "execute_result", + "data": { + "image/png": "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\n", + "text/plain": [ + "" + ] + }, + "metadata": { + "tags": [] + }, + "execution_count": 45 + } + ] + }, + { + "cell_type": "code", + "metadata": { + "colab": { + "base_uri": "https://localhost:8080/" + }, + "id": "NBaVEtJI6kZe", + "outputId": "4ac5ccd3-760a-4086-aba8-d4bfdf735b6a" + }, + "source": [ + "def frobenius(x, x_approx):\n", + " return np.sqrt(np.absolute(np.linalg.norm(x - x_approx)))\n", + "\n", + "def mse(x, x_approx):\n", + " return ((x - x_approx)**2).mean()\n", + "\n", + "print(mse(cat, cat_approx))\n", + "print(mse(mugs, mugs_approx))\n", + "print(mse(flower, flower_approx))\n", + "\n", + "# 402.30466\n", + "# 335.3521\n", + "# 365.27515" + ], + "execution_count": null, + "outputs": [ + { + "output_type": "stream", + "text": [ + "1273.5289\n", + "1101.8867\n", + "995.1124\n" + ], + "name": "stdout" + } + ] + }, + { + "cell_type": "code", + "metadata": { + "id": "BdNuTMPCBezl", + "colab": { + "base_uri": "https://localhost:8080/" + }, + "outputId": "afae78ce-4c5a-47c7-dbe8-0bf813904f49" + }, + "source": [ + "from tensorflow.python.training import gradient_descent\n", + "\n", + "x = tf.Variable(10.0, trainable=True)\n", + "\n", + "@tf.function\n", + "def f_x():\n", + " return 2 * x * x - 5 * x + 4\n", + "\n", + "for _ in range(20):\n", + " print([x.numpy(), f_x().numpy()])\n", + " opt = gradient_descent.GradientDescentOptimizer(0.1).minimize(f_x)" + ], + "execution_count": null, + "outputs": [ + { + "output_type": "stream", + "text": [ + "[10.0, 154.0]\n", + "[6.5, 56.0]\n", + "[4.4, 20.720001]\n", + "[3.14, 8.019201]\n", + "[2.384, 3.4469128]\n", + "[1.9304, 1.8008881]\n", + "[1.65824, 1.2083197]\n", + "[1.494944, 0.9949951]\n", + "[1.3969663, 0.9181981]\n", + "[1.3381798, 0.89055157]\n", + "[1.302908, 0.88059855]\n", + "[1.2817447, 0.8770151]\n", + "[1.2690468, 0.8757255]\n", + "[1.2614281, 0.87526155]\n", + "[1.2568569, 0.87509394]\n", + "[1.2541142, 0.87503386]\n", + "[1.2524685, 0.87501216]\n", + "[1.251481, 0.8750043]\n", + "[1.2508886, 0.87500143]\n", + "[1.2505331, 0.8750005]\n" + ], + "name": "stdout" + } + ] + }, + { + "cell_type": "code", + "metadata": { + "colab": { + "base_uri": "https://localhost:8080/", + "height": 302 + }, + "id": "2Dd9tNm2oliL", + "outputId": "b0507c7d-a943-413d-ab20-2bab014b8cf6" + }, + "source": [ + "m, n = w1.shape\n", + "p = 2\n", + "u = tf.Variable([[np.random.rand()] * n], trainable=True)\n", + "v = tf.Variable([[np.random.rand()] * m], trainable=True)\n", + "s = tf.Variable([np.random.rand()] * p, trainable=True)\n", + "w = np.array([w1, w2])\n", + "\n", + "@tf.function\n", + "def f_x():\n", + " # # A = tf.Variable([[tf.constant_initializer(0)] * m] * n, trainable=False)\n", + " # for i in range(p):\n", + " # v_tmp = tf.transpose(v) * w[i].T\n", + " # # print('v_tmp.shape:', v_tmp.shape)\n", + " # A_tmp = v_tmp * u\n", + " # # print('A_tmp.shape:', A_tmp.shape)\n", + " # if i == 0:\n", + " # A = A_tmp * A_tmp\n", + " # else:\n", + " # A = A + (A_tmp * A_tmp)\n", + " # for i in range(p):\n", + " # s = tf.transpose(v) * w[i].T * u\n", + " # w_approx = s * u * tf.transpose(v)\n", + " # print('s.shape:', s.shape)\n", + " # print('w_approx.shape:', w_approx.shape)\n", + " # if i == 0:\n", + " # mse = (w[i].T - w_approx) * (w[i].T - w_approx)\n", + " # else:\n", + " # mse = mse + (w[i].T - w_approx) * (w[i].T - w_approx)\n", + "\n", + " uv = u * tf.transpose(v)\n", + " s_tmp = tf.expand_dims(tf.expand_dims(s, axis=1), axis=2)\n", + " approx = tf.reduce_sum(w - s_tmp * tf.stack([uv] * p), axis=0)\n", + " return -tf.norm(approx, ord='fro', axis=[-2,-1])\n", + "\n", + "norms = []\n", + "for _ in range(100):\n", + " # print([x.numpy(), f_x().numpy()])\n", + " # print(f_x().numpy())\n", + " norms.append(f_x().numpy())\n", + " opt = gradient_descent.GradientDescentOptimizer(0.0001).minimize(f_x)\n", + "\n", + "plt.plot(norms)\n", + "print(u.numpy().mean())\n", + "print(v.numpy().mean())" + ], + "execution_count": null, + "outputs": [ + { + "output_type": "stream", + "text": [ + "0.27518278\n", + "0.6178978\n" + ], + "name": "stdout" + }, + { + "output_type": "display_data", + "data": { + "image/png": "iVBORw0KGgoAAAANSUhEUgAAAX8AAAD4CAYAAAAEhuazAAAABHNCSVQICAgIfAhkiAAAAAlwSFlzAAALEgAACxIB0t1+/AAAADh0RVh0U29mdHdhcmUAbWF0cGxvdGxpYiB2ZXJzaW9uMy4yLjIsIGh0dHA6Ly9tYXRwbG90bGliLm9yZy+WH4yJAAAgAElEQVR4nO3dd3wVdb7/8dcnFQi9d0LvPZQQmoiAWLCh2LCsAgKKdVd3vXf37t676951RUQBQURBRVFEsAAClxZ6IkjvELoEkU5CQr6/P3LYX1YpQnIyOee8n4/HeWTOzGHmM4/h8T5zvvP9zphzDhERCS1hXhcgIiL5T+EvIhKCFP4iIiFI4S8iEoIU/iIiISjC6wJ+rbJly7rY2FivyxARCRjJyclHnHPlLrYsYMI/NjaWpKQkr8sQEQkYZpZyqWVq9hERCUEKfxGREKTwFxEJQQp/EZEQpPAXEQlBCn8RkRCk8BcRCUFBH/5vzNvGgi2HycrSratFRC4ImEFe1+JUeiaTlqeQejKd6qWLcH+76vSNq0bpmCivSxMR8ZQFysNc4uLi3LWM8D2XmcWsDYf4YHkKK3cdJSoijJubVuKB+Bq0rFYSM/NDtSIi3jOzZOdc3EWXBXv457T1h5N8sDyFz7/bz6n0TBpXLk7/+Brc2rwKhaPC86hSEZGCQeH/M6fSM5m2ej+Tlu1m6w+nKFE4krvjqvJg+1iqlymSJ9sQEfGawv8SnHOs2HWUSctSmLXhEFnO0a1+efp3iKVTnbKEhalJSEQCl8L/Vzh0PI2PVqTw0co9HDl1jlplY+gfX4M7W1elWKFIv21XRMRfPAl/M2sBjAEKAZnAYOfcSsu+wjoC6A2cAR52zn13pfX5O/wvSM88z8x1h3hv6W7W7D1G0egI7mpdlYc7xBJbNsbv2xcRyStehf+3wHDn3Ewz6w381jnX1Tf9JNnh3w4Y4Zxrd6X15Vf457Rm7zHeX7qbr9YeIDPLcV398jyaUJOEOmXUS0hECrzLhb8/B3k5oLhvugRwwDfdB5josi0HSppZJT/Wcc1aVCvJ8HtasOR33XiyW13W7jvGA+NX0PP1RUxeuYe0jPNelygick38eebfEJgNGNlfMh2ccylm9hXwinMu0fe5ecDvnHO/OK03swHAAIDq1au3Tkm55ENp8kV65nm+/P4g7ybuYuPBE5QqEsn97WrwYHwNKhQv5GltIiI/57dmHzObC1S8yKI/ANcDC51zU83sbmCAc6771YR/Tl40+1zKhV5C7ybuYs6mH4gIM25pVplHO9akSZUSXpcnIgJ41+Z/HCjpnHO+i7zHnXPFzextYIFzbrLvc1uArs65g5dbX0EK/5xSfjzNhCW7mZK0lzPnztO+Vmke61iLbg3Kq6uoiHjKqzb/A0AX33Q3YJtvegbQ37K1J/tL4bLBX5DVKBPDn25tzLKXruf3vRuQ8uMZHpuYRPfhC/loha4LiEjB5M8z/45kd+mMANLI7uqZ7PsV8CbQi+yuno9cqckHCu6Z/89lnM/im3UHGbd4J+v3n6BMTBT942N5ML6GbignIvlKg7w84Jxj+c6jvLN4J/M2H6ZQZBh3ta7KYx1rabyAiOSLy4V/UN/S2UtmRnztMsTXLsP2wycZt2gXU1bt48MVe+jVuCIDu9SmRbWSXpcpIiFKZ/756PCJNN5bupsPlqdwIi2TdjVLM6hLbbrWL6dBYyKS59TsU8CcSs/k45V7GJ+4i4PH02hQsRgDu9Ti5maViQwP+oeriUg+UfgXUBnns5ix5gBvL9rB1h9OUaVkYR7vVJN72lTX8wVEJNcU/gVcVpbj/zYfZvTCHSSn/ETpmCge6RBL//hYShTRHUVF5Noo/APIqt1HGTV/O/O3pFI0OoL721fnNx1rUr6Ybh8hIldH4R+ANh44weiFO/h67QEiwsO4O64qAzvXplppPWlMRH4dhX8A233kNGMW7mDqd/twDvq0qMLg62pTu1xRr0sTkQJO4R8EDh4/y9hFO5m8cg/pmVn0blqJodfVoWGl4lf+xyISkhT+QeTIqXTeTdzFxGUpnErPpHvDCjx1fR2aVdWAMRH5dwr/IHT8TAYTlu5iwpLdHD+bQdf65XiyW11a1yjldWkiUkAo/IPYybQMJi5LYXziLo6ePkfHOmUZ1r0ubWJLe12aiHhM4R8CTqdn8uGKFMYu2smRU+eIr1WGYd3r0r5WGa9LExGPKPxDyNlz5/lwRQpvL9pJ6sl02tcqzbDr6xFfW18CIqFG4R+C0jLO89GKPYxZuIPDvi+Bp7vX0y8BkRCi8A9haRnnmbxyD6MW7CD1ZDrxtcrwbI96uiYgEgIU/kJaxnk+XLGH0Qt2cORUOp3qluXp7vXUO0gkiCn85V/OnjvPB8tTGLNwBz+ePkfX+uV49oZ6GicgEoQU/vILZ85l8v7SFN5etINjZzK4oVEFnr2hnkYMiwQRhb9c0sm0DCYs2c24RTs5mZ7Jzc0q8cwN9XTvIJEgoPCXKzp25hzjFu9kwpLdpGWc545WVRl2fV3dRVQkgCn85Vc7ciqd0Qt2MGl5Cs457mtbnSHd6uh5AiIBSOEvV+3g8bO8MW87nybtJTI8jEcSYhnYubaeLCYSQBT+cs12HznN8LlbmfH9AYpFRzCoa20e6VBTzxgWCQCXC/8wP260hZktN7M1ZpZkZm1987ua2XHf/DVm9p/+qkFyL7ZsDCP6teSbpzrRJrY0/ztrC13+MZ9Jy1PIOJ/ldXkico38duZvZt8Cw51zM82sN/Bb51xXM+sKPO+cu/lq1qcz/4IhafdR/j5rM6t2/0SNMkV4vkd9bmpaibAw87o0EfkZT878AQdc6DReAjjgx21JPomLLc2UgfG8+3AchSPDeXLyam59K5HEbUe8Lk1EroI/z/wbArMBI/tLpoNzLsV35j8V2Ef2F8LzzrkNl1jHAGAAQPXq1VunpKT4pVa5NuezHF+s3s9rc7ay/9hZOtUty+96NaBJlRJelyYi+PGCr5nNBSpeZNEfgOuBhc65qWZ2NzDAOdfdzIoDWc65U77moBHOubpX2paafQqutIzsW0a8OX87x85k0KdFZZ7vUV9jBEQ85klvHzM7DpR0zjkzM+C4c+4X9w4ws91AnHPusu0GCv+C70RaBmMW7GB84i6cgwfjazD0ujqUionyujSRkORVm/8BoItvuhuwzVdMRd+XAb4eQGHAj36sQ/JJ8UKR/LZXAxa80JXbWlZmwpJddP7HfN5euIO0jPNelyciOfjzzL8jMAKIANKAwc65ZDMbCjwBZAJngWedc0uvtD6d+QeeLYdO8srMTczfkkqVkoX5ba/63NKssnoGieQTDfISTy3ZfoS/frOJDQdO0KxqCX7fu6GeKCaSD7xq9hEBIKFOWb4c2pHX7m5O6sl0+o1dzmPvJ7Ej9ZTXpYmELIW/5IuwMOOOVlWZ/3xXXuhZn+U7f6Tn8EX8acYGjp4+53V5IiFH4S/5qlBkOEOuq8P857tyd5tqTFy2my7/mM87i3dyLlO3ixDJLwp/8US5YtH89famzHq6M62ql+K/v95Ej+ELmb3hEIFyHUokkCn8xVP1KhTj/Ufb8t4jbYgMD2PgpGTuG7eCjQdOeF2aSFBT+EuB0LV+eWYO68Sf+zRm86ET3DRyMS9OXUvqyXSvSxMJSgp/KTAiwsPoHx/Lguev4zcJNfkseR/XvbqAtxfuID1Tg8RE8pLCXwqcEkUiefnmRnz7TGfa1SzN32ZupufwRczZ+IOuB4jkEYW/FFi1yhVl/MNteP/RtkSEh/H4xCT6v7uS7YdPel2aSMBT+EuB16VeOWYO68Qfb2nE93uP0ev1xfz5y40cP5vhdWkiAUvhLwEh+yHyNf81PmDC0l10e3UBk1fu4XyWmoJErpbCXwJKmaLZ4wO+HNqRWuVieOnzddz21hK+2/OT16WJBBSFvwSkJlVKMGVgPCP6teDwyTTuGLWU56Z8z+GTaV6XJhIQFP4SsMyMPi2q8H/PdWVQl9rM+H4/17+6kPGJu8g8r1tFiFyOwl8CXkx0BC/e2IDZT3emVY1S/OWrjdz0RiLLd+oZQSKXovCXoFGrXFHee6QNbz/YmlPpmfQbu5xhH6/m8Ak1BYn8nMJfgoqZ0bNxReY+24WnutVh5rpDdPvnQt5ZvJMMNQWJ/IvCX4JS4ahwnu1Rn2+f6UxcbPZdQ28ZmcjKXUe9Lk2kQFD4S1CLLRvDhIezm4JOpmVy99vLeHbKGo6c0g3jJLQp/CXoXWgKmvNsZ57oWpsvvz9At1cX8MHyFA0Qk5Cl8JeQUSQqgt/1asDMYZ1oXLkEL3+xnjtGLWH9/uNelyaS7xT+EnLqlC/GR4+34/V7WrD/2FlufTORP83YwMk03StIQofCX0KSmXFbyyrMe64r97erwfvLdtP9tYV8s+6gbhstIUHhLyGtROFI/nJbE6YNTqBMTDSDP/yOR99bxd6jZ7wuTcSvFP4iQItqJZkxNIGXb2rIil1HuWH4QsYs3KGxARK0/Bb+ZtbczJaZ2Toz+9LMiudY9pKZbTezLWbW0181iFyNiPAwHutUi7nPdqFT3XK8MnMzt4xM1B1DJSj588z/HeBF51xTYBrwAoCZNQL6AY2BXsAoMwv3Yx0iV6VyycKM6x/H2w+25vjZDO4cvZT/nL5eF4QlqPgz/OsBi3zTc4A7fdN9gI+dc+nOuV3AdqCtH+sQuSbZYwO68HCHWCYtT6H7awuZtf6Q12WJ5Al/hv8GsoMeoC9QzTddBdib43P7fPN+wcwGmFmSmSWlpqb6rVCRSykaHcEfb2nMtMEJlI6JZtAHyQyYmMSh47pZnAS2XIW/mc01s/UXefUBHgUGm1kyUAw4d7Xrd86Ndc7FOefiypUrl5tSRXLlwgXhF29swMKtqdzw2kImLU8hSyOEJUBF5OYfO+e6X+EjPQDMrB5wk2/efv7/rwCAqr55IgVaZHgYg7rU5sYmFfnDtPX8xxfrmb56P6/c2Yw65Yt6XZ7IVfFnb5/yvr9hwMvAGN+iGUA/M4s2s5pAXWClv+oQyWs1ysQw6TdtebVvc7annqL3iMW8MW8b5zLVLVQChz/b/O81s63AZuAAMAHAObcBmAJsBGYBQ5xz5/1Yh0ieMzPual2VOc90oUfjCrw2Zyu3jExkzd5jXpcm8qtYoAxlj4uLc0lJSV6XIXJRczf+wMtfrOfwyTQeSajJcz3qUSQqV62qIrlmZsnOubiLLdMIX5E80L1RBb59tjP3tq3O+MRd9Hp9MUt3HPG6LJFLUviL5JHihSL5n9ub8vGA9oQZ3DduBS99vo4TGhwmBZDCXySPta9VhpnDOjOgcy0+WbWHnsMXMX/LYa/LEvk3Cn8RPygcFc7vezfk88EJFCsUwSMTVvHslDUcO3PVw11E/ELhL+JHLaqV5MsnO/JktzpMX3OAG4Yv4tsNukWEeE/hL+Jn0RHhPNejPtOHJFC2aDQDJiXz1OTVHD2tXwHiHYW/SD5pUqUE04ck8Ez3enyz7iA9hutGceIdhb9IPoqKCGNY97p8+WRHyhcrxKAPkhn28Wp+0q8AyWcKfxEPNKxUnOlDs38FfL32IDcMX8ScjT94XZaEEIW/iEciw7N/BcwY2pFyxaJ5fGISz05Zw/EzGhcg/qfwF/FYo8rFmT4kgad8PYJ6vL6QBRoXIH6m8BcpAKIiwni2R32mDe5A8UKRPDxhFS99vo5T6ZlelyZBSuEvUoA0q5o9LmBgl1p8vGoPvV5fxPKdP3pdlgQhhb9IAVMoMpyXbmzIpwPjCQ8z7h23nP/+aiNpGbrzueQdhb9IARUXW5qZwzrxQLsavJO4i5tHJrJu33Gvy5IgofAXKcCKREXwl9uaMPHRtpxKy+T2UUt4Y942Ms/rqWGSOwp/kQDQuV45Zj/dmZuaVeK1OVu5c8wydqae8rosCWAKf5EAUaJIJCP6teTN+1qS8uNper+xmEnLUwiUp/FJwaLwFwkwNzerzOynO9MmtjT/8cV6HnlvFYdPpHldlgQYhb9IAKpQvBATH23Ln/s0ZvnOH+n5+iLdJE6uisJfJECZGf3jY/nqyU5ULVWEQR8k88Kn32tgmPwqCn+RAFenfFGmPtGBodfVYep3++g9YjHJKUe9LksKOIW/SBCIigjj+Z71mTIwnizn6DtmGa/N2aouoXJJCn+RIHJhYNhtLavwxrxt9H17GSk/nva6LCmA/Bb+ZtbczJaZ2Toz+9LMivvmx5rZWTNb43uN8VcNIqGoWKFIXru7BSPvbcmOw6foPWIxnyXvU5dQ+Tf+PPN/B3jROdcUmAa8kGPZDudcC99rkB9rEAlZtzSvzMynO9O4Sgme//R7npy8muNn9awAyebP8K8HLPJNzwHu9OO2ROQiqpQszOTH2/NCz/rMWn+I3iMWs3KXLgaLf8N/A9DHN90XqJZjWU0zW21mC82s06VWYGYDzCzJzJJSU1P9WKpI8AoPM4ZcV4fPnuhARLjRb+wyXvt2iy4GhzjLTTugmc0FKl5k0R+ALcAbQBlgBvCUc66MmUUDRZ1zP5pZa+ALoLFz7sTlthUXF+eSkpKuuVYRgVPpmfxx+gamfreP1jVK8fo9LahWuojXZYmfmFmycy7uosvy4yKQmdUDPnDOtb3IsgXA8865yya7wl8k70xfs5+Xp60Hg7/d0ZSbm1X2uiTxg8uFvz97+5T3/Q0DXgbG+N6XM7Nw33QtoC6w0191iMgv9WlRhW+GdaJO+aIM/Wg1L05dy5lzGhkcSvzZ5n+vmW0FNgMHgAm++Z2BtWa2BvgMGOSc0xUokXxWrXQRpgyMZ8h1tfkkaS+3jExk44HLtr5KEMmXZp+8oGYfEf9Zuv0IT3+yhmNnM/hD74b0j6+BmXldluSSJ80+IhI4OtQpy8xhnUioXYY/ztjAgEnJHDtzzuuyxI8U/iICQJmi0Yx/qA0v39SQBVsO03vEYpJ2q0U2WCn8ReRfwsKMxzrVYuoTHYgID+Oesct5a/52srICo3lYfj2Fv4j8QrOqJfnqqY7c2KQi/5i9hYcmrCT1ZLrXZUkeUviLyEUVLxTJyHtb8rc7mrJy11F6v7GYpduPeF2W5BGFv4hckplxb9vqTB+aQPFCEdw/fgXD52zlvJqBAp7CX0SuqEHF4swY2pHbW1ZhxLxtPPDOCg6f1EPjA5nCX0R+lZjoCF67uwX/uKsZq/f+RO8RiSxRM1DAUviLyFXpG1eN6UM6UqJwBA+MX8GIudvUDBSAFP4ictXqVyyW3QzUogrD527loXdXcuSUegMFEoW/iFyTmOgI/nl3c165oymrdh/Vg2ICjMJfRK6ZmdGvbXW+GJJATHQE945bzpiFOzQoLAAo/EUk1xpWKs6MoQn0bFyBV2Zu5vGJSRw/o+cFF2QKfxHJE8UKRfLWfa344y2NWLQtlZtGLmbdvuNelyWXoPAXkTxjZjySUJNPBsaTleW4c/RSPlyRQqDcOj6UKPxFJM+1ql6Kr57qRPvaZfjDtPU89+n3nD133uuyJAeFv4j4RemYKCY83Ianu9dl2ur93D5qCbuOnPa6LPFR+IuI34SHGU93r8eEh9tw6EQat45MZPaGQ16XJSj8RSQfdK1fnq+e7EjNcjEMnJTM32dtJvN8ltdlhTSFv4jki6qlivDpoHjua1ed0Qt28NCElfyoUcGeUfiLSL6Jjgjnr7c35R93NSNp90/cPDKRNXuPeV1WSFL4i0i+6xtXjalPdCA8zLh7zDJ1B/WAwl9EPNGkSgm+HNrxX91Bfzd1LWkZ6g6aXxT+IuKZUr7uoE92q8OUpH3c/fYy9h8763VZIUHhLyKeCg8znutRn7EPtmZn6mluGZnI0h16SIy/5Sr8zayvmW0wsywzi/vZspfMbLuZbTGznjnm9/LN225mL+Zm+yISPHo0rsj0oQmUjoniwfEreWfxTl0H8KPcnvmvB+4AFuWcaWaNgH5AY6AXMMrMws0sHHgLuBFoBNzr+6yICLXLFeWLIQnc0LAC//31Jp76eA1nzmV6XVZQylX4O+c2Oee2XGRRH+Bj51y6c24XsB1o63ttd87tdM6dAz72fVZEBICi0RGMfqAVL/Ssz1drD3Dn6GXsPXrG67KCjr/a/KsAe3O83+ebd6n5F2VmA8wsycySUlNT/VKoiBQ8ZsaQ6+rw7sNt2P/TGW55M5HEbboOkJeuGP5mNtfM1l/k5fczdufcWOdcnHMurly5cv7enIgUMNfVL8+MoR0pXyya/u+uYNwiXQfIKxFX+oBzrvs1rHc/UC3H+6q+eVxmvojIL8SWjWHa4ASe//R7/uebTWw8eIK/3dGUQpHhXpcW0PzV7DMD6Gdm0WZWE6gLrARWAXXNrKaZRZF9UXiGn2oQkSAREx3BqPtb8XyPenyxZj93jVnKAY0HyJXcdvW83cz2AfHA12Y2G8A5twGYAmwEZgFDnHPnnXOZwFBgNrAJmOL7rIjIZZkZQ7vV5Z3+caQcOcOtbyayavdRr8sKWBYo7WdxcXEuKSnJ6zJEpADYfvgUAyYmsfenM/zXrU24r111r0sqkMws2TkXd7FlGuErIgGnTvmiTBuSQEKdsvx+2jpe/mIdGXo+wFVR+ItIQCpROJLxD7VhYJdafLB8Dw+OX8HR0+e8LitgKPxFJGCFhxkv3diQ4fc057s9x7j1zUQ2HTzhdVkBQeEvIgHv9pZV+XRgPBnns7hz9FI9J/hXUPiLSFBoXq0kM4Z2pG6FYgyclMzIeds0IOwyFP4iEjQqFC/EJwPac1uLyvxzzlaenLxaD4i5hCuO8BURCSSFIsMZfk8L6lcszv/O3syeo2cY1z+OCsULeV1agaIzfxEJOmbGE11rM/bBOHYcPsWtbyaydp8eFJ+Twl9EgtYNjSowdXAHIsPD6DtmGV+tPeB1SQWGwl9EglqDisWZPiSBplVKMPSj1YyYqwvBoPAXkRBQpmg0Hz7ejjtaVWH43K089fGakL8QrAu+IhISoiPC+Wff5tQtX4z/nb2ZvUfPMLZ/a8oXC80LwTrzF5GQceFC8Oj7W7Pl0Elue3MJGw+E5ohghb+IhJxeTSry6aB4shzcNWYp8zb94HVJ+U7hLyIhqUmVEkwfmkDtckV5fGIS4xN3hdSFYIW/iISsCsUL8cnA9vRoVJG/fLWRl79YT2aI3Bpa4S8iIa1IVPYjIgd1qc2HK/bwyHurOJGW4XVZfqfwF5GQFxZmvHhjA/5+Z1OW7fiRu0YvZe/RM16X5VcKfxERn3vaVOf9R9ty8Hgat49awuo9P3ldkt8o/EVEckioU5ZpgztQOCqcfmOXM2v9Qa9L8guFv4jIz9QpX4xpgxNoVLk4T3z4HWMX7Qi6nkAKfxGRiyhbNJrJj7end5NK/PWbzUHXE0i3dxARuYRCkeGMvLcl1UoXYczCHRw4dpaR97WiaHTgR6fO/EVELuNCT6C/3t6URduOcPeYZRw6nuZ1WbmWq/A3s75mtsHMssws7mfLXjKz7Wa2xcx65pi/28zWmdkaM0vKzfZFRPLLfe2qM/6hOFJ+PM3to5aw+VBg3xMot2f+64E7gEU5Z5pZI6Af0BjoBYwys/AcH7nOOdfCOfdvXxgiIgVZ1/rlmTIonizn6Dt6GUu2H/G6pGuWq/B3zm1yzm25yKI+wMfOuXTn3C5gO9A2N9sSESkIGlcuwbTBCVQuWZiH3l3JZ8n7vC7pmvirzb8KsDfH+32+eQAO+NbMks1swOVWYmYDzCzJzJJSU1P9VKqIyNWpXLIwnz4RT7tapXn+0+8D8ulgVwx/M5trZusv8upzjdvs6JxrBdwIDDGzzpf6oHNurHMuzjkXV65cuWvcnIhI3iteKJIJD7f919PBfjd1LRkB1BX0iv2VnHPdr2G9+4FqOd5X9c3DOXfh72Ezm0Z2c9CiX6xBRKSAi4oI4599m1O1VBHemLeNQyfSGXV/YHQF9Vezzwygn5lFm1lNoC6w0sxizKwYgJnFAD3IvmgsIhKQzIxnb6jH3+9sypLtR+g3dhmHTxb8rqC57ep5u5ntA+KBr81sNoBzbgMwBdgIzAKGOOfOAxWARDP7HlgJfO2cm5WbGkRECoJ72lTnnYfi2Jl6mjtGLWX74VNel3RZFigXKeLi4lxSkoYFiEjBtm7fcR55bxWZWVmMfyiO1jVKe1aLmSVfqku9RviKiOShplVL8PkTHShVJIr7xq1g9oZDXpd0UQp/EZE8Vr1MEaY+0YGGlYrzxAfJTFqe4nVJv6DwFxHxg9IxUUx+vD3dGpTnP75Yz6uztxSosQAKfxERPykcFc6YB1rTr0013py/vUCNBSj4nVFFRAJYRHgYf7ujKRWKF2LEvG2knkznrftbUSTK2/jVmb+IiJ+ZGc/cUI//ub0JC7emct+4FRw9fc7TmhT+IiL55P52NRj9QGs2HjzBXWOWsu+nM57VovAXEclHPRtX5IPftOPIyXTuHL2ULYdOelKHwl9EJJ+1rVmaTwd1AKDvmKWs2n0032tQ+IuIeKB+xWJMfaIDZYtF88A7K5iz8Yd83b7CX0TEI1VLFeGzQR1oUKk4gz5IZkrS3iv/ozyi8BcR8VDpmCg+eqwdHWqX4befrWXMwh35MhhM4S8i4rGY6AjGP9SGm5tV4pWZm/nrN5vIyvLvF4AGeYmIFABREWG80a8lZWKiGLd4F0dPZ/D3O5sSEe6fc3SFv4hIAREWZvzp1saUioni9bnbOH42gzfva0mhyPC831aer1FERK6ZmfF093r8pU9j5m3+gf7vruTMucw8347O/EVECqAH42MpUSSKJduOUCgi78/8Ff4iIgXUrc0rc2vzyn5Zt5p9RERCkMJfRCQEKfxFREKQwl9EJAQp/EVEQpDCX0QkBCn8RURCkMJfRCQEWX7cOjQvmFkqkHKN/7wscCQPywkEobjPEJr7HYr7DKG531e7zzWcc+UutiBgwj83zCzJORfndR35KRT3GUJzv0NxnyE09zsv91nNPiIiIUjhLyISgkIl/Md6XYAHQnGfITT3OxT3GUJzv/Nsn0OizV9ERP5dqJz5i4hIDgp/EZEQFNThb2a9zGyLmW03sxe9rsdfzKyamc03s41mtiCD0QkAAANoSURBVMHMhvnmlzazOWa2zfe3lNe15jUzCzez1Wb2le99TTNb4Tvmn5hZlNc15jUzK2lmn5nZZjPbZGbxwX6szewZ3//t9WY22cwKBeOxNrN3zeywma3PMe+ix9ayveHb/7Vm1upqthW04W9m4cBbwI1AI+BeM2vkbVV+kwk855xrBLQHhvj29UVgnnOuLjDP9z7YDAM25Xj/d2C4c64O8BPwG0+q8q8RwCznXAOgOdn7H7TH2syqAE8Bcc65JkA40I/gPNbvAb1+Nu9Sx/ZGoK7vNQAYfTUbCtrwB9oC251zO51z54CPgT4e1+QXzrmDzrnvfNMnyQ6DKmTv7/u+j70P3OZNhf5hZlWBm4B3fO8N6AZ85vtIMO5zCaAzMB7AOXfOOXeMID/WZD9ytrCZRQBFgIME4bF2zi0Cjv5s9qWObR9gosu2HChpZpV+7baCOfyrAHtzvN/nmxfUzCwWaAmsACo45w76Fh0CKnhUlr+8DvwWyPK9LwMcc85l+t4H4zGvCaQCE3zNXe+YWQxBfKydc/uBV4E9ZIf+cSCZ4D/WF1zq2OYq44I5/EOOmRUFpgJPO+dO5Fzmsvv0Bk2/XjO7GTjsnEv2upZ8FgG0AkY751oCp/lZE08QHutSZJ/l1gQqAzH8smkkJOTlsQ3m8N8PVMvxvqpvXlAys0iyg/9D59znvtk/XPgZ6Pt72Kv6/CABuNXMdpPdpNeN7Lbwkr6mAQjOY74P2OecW+F7/xnZXwbBfKy7A7ucc6nOuQzgc7KPf7Af6wsudWxzlXHBHP6rgLq+HgFRZF8gmuFxTX7ha+seD2xyzr2WY9EM4CHf9EPA9PyuzV+ccy8556o652LJPrb/55y7H5gP3OX7WFDtM4Bz7hCw18zq+2ZdD2wkiI812c097c2siO//+oV9DupjncOlju0MoL+v10974HiO5qErc84F7QvoDWwFdgB/8LoeP+5nR7J/Cq4F1vhevcluA58HbAPmAqW9rtVP+98V+Mo3XQtYCWwHPgWiva7PD/vbAkjyHe8vgFLBfqyB/wI2A+uBSUB0MB5rYDLZ1zUyyP6V95tLHVvAyO7RuANYR3ZvqF+9Ld3eQUQkBAVzs4+IiFyCwl9EJAQp/EVEQpDCX0QkBCn8RURCkMJfRCQEKfxFRELQ/wPfvSEoopWD6AAAAABJRU5ErkJggg==\n", + "text/plain": [ + "
" + ] + }, + "metadata": { + "tags": [], + "needs_background": "light" + } + } + ] + }, + { + "cell_type": "code", + "metadata": { + "id": "weED2euaqB1Z", + "colab": { + "base_uri": "https://localhost:8080/", + "height": 483 + }, + "outputId": "0ebfcde9-61c7-43b7-bed3-5d5438cfedeb" + }, + "source": [ + "models['mnist'].get_layer('dense_1').set_weights([w1, b1])\n", + "models['fashion'].get_layer('dense_1').set_weights([w2, b2])\n", + "_, mnist_acc = models['mnist'].evaluate(x_test, y_test, verbose=0)\n", + "_, fashion_mnist_acc = models['fashion'].evaluate(test_images, test_labels, verbose=2)\n", + "print('MNIST - Test accuracy:', mnist_acc)\n", + "print('Fashion MNIST - Test accuracy:', fashion_mnist_acc)\n", + "\n", + "A = (u * tf.transpose(v)).numpy()\n", + "w1_approx = s[0].numpy() * A\n", + "w2_approx = s[1].numpy() * A\n", + "\n", + "models['mnist'].get_layer('dense_1').set_weights([w1_approx, b1])\n", + "models['fashion'].get_layer('dense_1').set_weights([w2_approx, b2])\n", + "print('')\n", + "\n", + "_, mnist_acc_approx = models['mnist'].evaluate(x_test, y_test, verbose=0)\n", + "_, fashion_mnist_acc_approx = models['fashion'].evaluate(test_images, test_labels, verbose=2)\n", + "print('MNIST - Test accuracy:', mnist_acc_approx)\n", + "print('Fashion MNIST - Test accuracy:', fashion_mnist_acc_approx)\n", + "\n", + "print('\\nMNIST - Accuracy drop:', mnist_acc - mnist_acc_approx)\n", + "print('Fashion MNIST - Accuracy drop:', fashion_mnist_acc - fashion_mnist_acc_approx)\n", + "\n", + "plot_accuracies(list(models.keys()), [mnist_acc, fashion_mnist_acc],\n", + " [mnist_acc_approx, fashion_mnist_acc_approx])" + ], + "execution_count": null, + "outputs": [ + { + "output_type": "stream", + "text": [ + "313/313 - 0s - loss: 0.3365 - accuracy: 0.8820\n", + "MNIST - Test accuracy: 0.9768999814987183\n", + "Fashion MNIST - Test accuracy: 0.8820000290870667\n", + "\n", + "313/313 - 0s - loss: 181.9923 - accuracy: 0.1000\n", + "MNIST - Test accuracy: 0.10279999673366547\n", + "Fashion MNIST - Test accuracy: 0.10000000149011612\n", + "\n", + "MNIST - Accuracy drop: 0.8740999847650528\n", + "Fashion MNIST - Accuracy drop: 0.7820000275969505\n" + ], + "name": "stdout" + }, + { + "output_type": "display_data", + "data": { + "image/png": "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P+/YsWM57LDD6NixI4cddhhr166ti83JBCXXam04ysrK4l+9YaHP4svPZ/FZQ7Z48WIOPPDA+i6j1jZt2kRFRQUlJSUsW7aM448/niVLlmzz26nGIt/fSdLciCirOq9bUGZm9WjdunUcd9xxVFRUEBHcfvvtjTacassBZWZWj9q1a8e/2ivUWPkkCTMzyyQHlJmZZZIDyszMMskBZWZmmeSTJMyscRpT+G+JClvfRwXNNnXqVE4//XQWL15Mjx496raGAhR6K49CTJ06lW7dutGzZ89aLde2bVvKy8v/5ed3C8rMrA5NmjSJo446qsYf59ZG5SWNClXorTwKMXXqVBYtWlQn69oRDigzszpSXl7O008/zZ133sl9990HwIwZMzjmmGM4+eST6d69OxdddBGbN28GkpbGt771LXr16sXAgQNZtWoVAAMGDODyyy+nrKyMm2++mccff5xDDjmE3r1787WvfY1PPvmE2bNnc/DBB7N+/Xo+/vhjevXqxYIFC1i+fDkHHXQQABMmTOC0007jhBNOoGvXrtx66638/Oc/55BDDuHwww/n/fffB2D8+PEceuih9OnThzPPPJN169Yxc+ZMpk2bxne+8x369u3LsmXLWLZsGYMGDaJfv34cffTRvPzyywC8/vrrHHHEEfTu3ZurrrqqzvanA8rMrI48/PDDDBo0iG7durH77rtvuXjsrFmzuOWWW1i0aBHLli3jwQcfBODjjz+mrKyMhQsXcuyxx3LNNddsWdeGDRuYM2cOl1xyCSNHjmTy5MnMnz+fjRs38qtf/YpDDz2UwYMHc9VVV/Hd736X4cOHbwmmXAsWLODBBx9k9uzZXHnllbRp04YXXniBI444Yst1A/PdsuPII49k8ODB3HDDDcybN4/99tuPUaNGccsttzB37lxuvPFGRo8eDcA3v/lNLr74YubPn0+nTp3qbH86oMzM6sikSZO23Dpj6NChW7r5+vfvz7777kvz5s0ZNmwYTz/9NADNmjXjK1/5CgDDhw/fMh7YMn7JkiWUlpbSrVs3AEaMGMFTTz0FwNVXX82f/vQn5syZw3e/+928NR133HG0a9eOjh070r59e0499VQAevfuXatbdpSXlzNz5kzOOuss+vbty4UXXsg777wDwDPPPMOwYcMAOOecc3Zw723LJ0mYmdWB999/nyeeeIL58+cjiU2b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\n", + "text/plain": [ + "
" + ] + }, + "metadata": { + "tags": [], + "needs_background": "light" + } + } + ] + }, + { + "cell_type": "code", + "metadata": { + "colab": { + "base_uri": "https://localhost:8080/" + }, + "id": "4YXbwTychb0Q", + "outputId": "4fe386b3-d9e0-4702-c77a-fa7ffb8e6ebf" + }, + "source": [ + "# Use the GitHub version of TFCO\n", + "!pip install git+https://github.com/google-research/tensorflow_constrained_optimization\n", + "import tensorflow_constrained_optimization as tfco" + ], + "execution_count": null, + "outputs": [ + { + "output_type": "stream", + "text": [ + "Collecting git+https://github.com/google-research/tensorflow_constrained_optimization\n", + " Cloning https://github.com/google-research/tensorflow_constrained_optimization to /tmp/pip-req-build-na3snryk\n", + " Running command git clone -q https://github.com/google-research/tensorflow_constrained_optimization /tmp/pip-req-build-na3snryk\n", + "Requirement already satisfied: numpy in /usr/local/lib/python3.7/dist-packages (from tfco-nightly==0.3.dev20210712) (1.19.5)\n", + "Requirement already satisfied: scipy in /usr/local/lib/python3.7/dist-packages (from tfco-nightly==0.3.dev20210712) (1.4.1)\n", + "Requirement already satisfied: six in /usr/local/lib/python3.7/dist-packages (from tfco-nightly==0.3.dev20210712) (1.15.0)\n", + "Requirement already satisfied: tensorflow>=1.14 in /usr/local/lib/python3.7/dist-packages (from tfco-nightly==0.3.dev20210712) (2.5.0)\n", + "Requirement already satisfied: termcolor~=1.1.0 in /usr/local/lib/python3.7/dist-packages (from tensorflow>=1.14->tfco-nightly==0.3.dev20210712) (1.1.0)\n", + "Requirement already satisfied: astunparse~=1.6.3 in /usr/local/lib/python3.7/dist-packages (from tensorflow>=1.14->tfco-nightly==0.3.dev20210712) (1.6.3)\n", + "Requirement already satisfied: h5py~=3.1.0 in /usr/local/lib/python3.7/dist-packages (from tensorflow>=1.14->tfco-nightly==0.3.dev20210712) (3.1.0)\n", + "Requirement already satisfied: keras-nightly~=2.5.0.dev in /usr/local/lib/python3.7/dist-packages (from tensorflow>=1.14->tfco-nightly==0.3.dev20210712) (2.5.0.dev2021032900)\n", + "Requirement already satisfied: tensorboard~=2.5 in /usr/local/lib/python3.7/dist-packages (from tensorflow>=1.14->tfco-nightly==0.3.dev20210712) (2.5.0)\n", + "Requirement already satisfied: absl-py~=0.10 in /usr/local/lib/python3.7/dist-packages (from tensorflow>=1.14->tfco-nightly==0.3.dev20210712) (0.12.0)\n", + "Requirement already satisfied: typing-extensions~=3.7.4 in /usr/local/lib/python3.7/dist-packages (from tensorflow>=1.14->tfco-nightly==0.3.dev20210712) (3.7.4.3)\n", + "Requirement already satisfied: gast==0.4.0 in /usr/local/lib/python3.7/dist-packages (from tensorflow>=1.14->tfco-nightly==0.3.dev20210712) (0.4.0)\n", + "Requirement already satisfied: grpcio~=1.34.0 in /usr/local/lib/python3.7/dist-packages (from tensorflow>=1.14->tfco-nightly==0.3.dev20210712) (1.34.1)\n", + "Requirement already satisfied: tensorflow-estimator<2.6.0,>=2.5.0rc0 in /usr/local/lib/python3.7/dist-packages (from tensorflow>=1.14->tfco-nightly==0.3.dev20210712) (2.5.0)\n", + "Requirement already satisfied: wrapt~=1.12.1 in /usr/local/lib/python3.7/dist-packages (from tensorflow>=1.14->tfco-nightly==0.3.dev20210712) (1.12.1)\n", + "Requirement already satisfied: opt-einsum~=3.3.0 in /usr/local/lib/python3.7/dist-packages (from tensorflow>=1.14->tfco-nightly==0.3.dev20210712) (3.3.0)\n", + "Requirement already satisfied: protobuf>=3.9.2 in /usr/local/lib/python3.7/dist-packages (from tensorflow>=1.14->tfco-nightly==0.3.dev20210712) (3.17.3)\n", + "Requirement already satisfied: google-pasta~=0.2 in /usr/local/lib/python3.7/dist-packages (from tensorflow>=1.14->tfco-nightly==0.3.dev20210712) (0.2.0)\n", + "Requirement already satisfied: keras-preprocessing~=1.1.2 in /usr/local/lib/python3.7/dist-packages (from tensorflow>=1.14->tfco-nightly==0.3.dev20210712) (1.1.2)\n", + "Requirement already satisfied: flatbuffers~=1.12.0 in /usr/local/lib/python3.7/dist-packages (from tensorflow>=1.14->tfco-nightly==0.3.dev20210712) (1.12)\n", + "Requirement already satisfied: wheel~=0.35 in /usr/local/lib/python3.7/dist-packages (from tensorflow>=1.14->tfco-nightly==0.3.dev20210712) (0.36.2)\n", + "Requirement already satisfied: cached-property; python_version < \"3.8\" in /usr/local/lib/python3.7/dist-packages (from h5py~=3.1.0->tensorflow>=1.14->tfco-nightly==0.3.dev20210712) (1.5.2)\n", + "Requirement already satisfied: setuptools>=41.0.0 in /usr/local/lib/python3.7/dist-packages (from tensorboard~=2.5->tensorflow>=1.14->tfco-nightly==0.3.dev20210712) (57.0.0)\n", + "Requirement already satisfied: markdown>=2.6.8 in /usr/local/lib/python3.7/dist-packages (from tensorboard~=2.5->tensorflow>=1.14->tfco-nightly==0.3.dev20210712) (3.3.4)\n", + "Requirement already satisfied: google-auth-oauthlib<0.5,>=0.4.1 in /usr/local/lib/python3.7/dist-packages (from tensorboard~=2.5->tensorflow>=1.14->tfco-nightly==0.3.dev20210712) (0.4.4)\n", + "Requirement already satisfied: google-auth<2,>=1.6.3 in /usr/local/lib/python3.7/dist-packages (from tensorboard~=2.5->tensorflow>=1.14->tfco-nightly==0.3.dev20210712) (1.32.1)\n", + "Requirement already satisfied: werkzeug>=0.11.15 in /usr/local/lib/python3.7/dist-packages (from tensorboard~=2.5->tensorflow>=1.14->tfco-nightly==0.3.dev20210712) (1.0.1)\n", + "Requirement already satisfied: requests<3,>=2.21.0 in /usr/local/lib/python3.7/dist-packages (from tensorboard~=2.5->tensorflow>=1.14->tfco-nightly==0.3.dev20210712) (2.23.0)\n", + "Requirement already satisfied: tensorboard-data-server<0.7.0,>=0.6.0 in /usr/local/lib/python3.7/dist-packages (from tensorboard~=2.5->tensorflow>=1.14->tfco-nightly==0.3.dev20210712) (0.6.1)\n", + "Requirement already satisfied: tensorboard-plugin-wit>=1.6.0 in /usr/local/lib/python3.7/dist-packages (from tensorboard~=2.5->tensorflow>=1.14->tfco-nightly==0.3.dev20210712) (1.8.0)\n", + "Requirement already satisfied: importlib-metadata; python_version < \"3.8\" in /usr/local/lib/python3.7/dist-packages (from markdown>=2.6.8->tensorboard~=2.5->tensorflow>=1.14->tfco-nightly==0.3.dev20210712) (4.6.0)\n", + "Requirement already satisfied: requests-oauthlib>=0.7.0 in /usr/local/lib/python3.7/dist-packages (from google-auth-oauthlib<0.5,>=0.4.1->tensorboard~=2.5->tensorflow>=1.14->tfco-nightly==0.3.dev20210712) (1.3.0)\n", + "Requirement already satisfied: cachetools<5.0,>=2.0.0 in /usr/local/lib/python3.7/dist-packages (from google-auth<2,>=1.6.3->tensorboard~=2.5->tensorflow>=1.14->tfco-nightly==0.3.dev20210712) (4.2.2)\n", + "Requirement already satisfied: rsa<5,>=3.1.4; python_version >= \"3.6\" in /usr/local/lib/python3.7/dist-packages (from google-auth<2,>=1.6.3->tensorboard~=2.5->tensorflow>=1.14->tfco-nightly==0.3.dev20210712) (4.7.2)\n", + "Requirement already satisfied: pyasn1-modules>=0.2.1 in /usr/local/lib/python3.7/dist-packages (from google-auth<2,>=1.6.3->tensorboard~=2.5->tensorflow>=1.14->tfco-nightly==0.3.dev20210712) (0.2.8)\n", + "Requirement already satisfied: urllib3!=1.25.0,!=1.25.1,<1.26,>=1.21.1 in /usr/local/lib/python3.7/dist-packages (from requests<3,>=2.21.0->tensorboard~=2.5->tensorflow>=1.14->tfco-nightly==0.3.dev20210712) (1.24.3)\n", + "Requirement already satisfied: certifi>=2017.4.17 in /usr/local/lib/python3.7/dist-packages (from requests<3,>=2.21.0->tensorboard~=2.5->tensorflow>=1.14->tfco-nightly==0.3.dev20210712) (2021.5.30)\n", + "Requirement already satisfied: idna<3,>=2.5 in /usr/local/lib/python3.7/dist-packages (from requests<3,>=2.21.0->tensorboard~=2.5->tensorflow>=1.14->tfco-nightly==0.3.dev20210712) (2.10)\n", + "Requirement already satisfied: chardet<4,>=3.0.2 in /usr/local/lib/python3.7/dist-packages (from requests<3,>=2.21.0->tensorboard~=2.5->tensorflow>=1.14->tfco-nightly==0.3.dev20210712) (3.0.4)\n", + "Requirement already satisfied: zipp>=0.5 in /usr/local/lib/python3.7/dist-packages (from importlib-metadata; python_version < \"3.8\"->markdown>=2.6.8->tensorboard~=2.5->tensorflow>=1.14->tfco-nightly==0.3.dev20210712) (3.4.1)\n", + "Requirement already satisfied: oauthlib>=3.0.0 in /usr/local/lib/python3.7/dist-packages (from requests-oauthlib>=0.7.0->google-auth-oauthlib<0.5,>=0.4.1->tensorboard~=2.5->tensorflow>=1.14->tfco-nightly==0.3.dev20210712) (3.1.1)\n", + "Requirement already satisfied: pyasn1>=0.1.3 in /usr/local/lib/python3.7/dist-packages (from rsa<5,>=3.1.4; python_version >= \"3.6\"->google-auth<2,>=1.6.3->tensorboard~=2.5->tensorflow>=1.14->tfco-nightly==0.3.dev20210712) (0.4.8)\n", + "Building wheels for collected packages: tfco-nightly\n", + " Building wheel for tfco-nightly (setup.py) ... \u001b[?25l\u001b[?25hdone\n", + " Created wheel for tfco-nightly: filename=tfco_nightly-0.3.dev20210712-cp37-none-any.whl size=199274 sha256=0cf5a984216fd6779870302892eaf9d9d8eab8ee0dc4a74eda6e2fbf9af47c41\n", + " Stored in directory: /tmp/pip-ephem-wheel-cache-8lu3v5rh/wheels/c9/b3/c3/78e0691949466af462380554286105216cd95a9ae7cf08ee78\n", + "Successfully built tfco-nightly\n", + "Installing collected packages: tfco-nightly\n", + "Successfully installed tfco-nightly-0.3.dev20210712\n" + ], + "name": "stdout" + } + ] + }, + { + "cell_type": "code", + "metadata": { + "colab": { + "base_uri": "https://localhost:8080/" + }, + "id": "b9E3y1d01Hle", + "outputId": "3fb9f79c-60d2-44a1-ea4c-9bc7d2497548" + }, + "source": [ + "m, n = w1.shape\n", + "p = 2\n", + "u = tf.Variable([[np.random.rand()] * n], trainable=True)\n", + "v = tf.Variable([[np.random.rand()] * m], trainable=True)\n", + "s = tf.Variable([np.random.rand()] * p, trainable=True)\n", + "w = np.array([w1, w2])\n", + "\n", + "def loss_fn():\n", + " uv = u * tf.transpose(v)\n", + " s_tmp = tf.expand_dims(tf.expand_dims(s, axis=1), axis=2)\n", + " approx = tf.reduce_sum(w - s_tmp * tf.stack([uv] * p), axis=0)\n", + " for i in range(p):\n", + " A_tmp = tf.transpose(v) * w[i].T * u\n", + " if i == 0:\n", + " A = A_tmp * A_tmp\n", + " else:\n", + " A = A + (A_tmp * A_tmp)\n", + " return A - tf.norm(approx, ord='fro', axis=[-2, -1])\n", + "\n", + "class SampleProblem(tfco.ConstrainedMinimizationProblem):\n", + " def __init__(self, loss_fn, weights):\n", + " self._loss_fn = loss_fn\n", + " self._weights = weights\n", + " \n", + " @property\n", + " def num_constraints(self):\n", + " return 2\n", + " \n", + " def objective(self):\n", + " return loss_fn()\n", + " \n", + " def constraints(self):\n", + " u, s, v = self._weights\n", + " u_norm = tf.linalg.norm(u) # tf.math.reduce_euclidean_norm(u)\n", + " v_norm = tf.linalg.norm(v) # tf.math.reduce_euclidean_norm(v)\n", + " u_norm_eq_one = 1 - u_norm\n", + " v_norm_eq_one = 1 - v_norm\n", + " constraints = tf.stack([u_norm_eq_one, v_norm_eq_one])\n", + " # A = (u * tf.transpose(v)).numpy()\n", + " # for i in range(p):\n", + " # rank_eq_one = 1. - tf.Variable(tf.cast(tf.rank(s[i] * A), tf.float32))\n", + " # constraints = tf.stack([constraints, rank_eq_one])\n", + " return constraints\n", + "\n", + "problem = SampleProblem(loss_fn, [u, s, v])\n", + "optimizer = tfco.LagrangianOptimizer(\n", + " optimizer=tf.optimizers.Adagrad(learning_rate=0.1),\n", + " num_constraints=problem.num_constraints)\n", + "\n", + "var_list = [u, s, v] + list(problem.trainable_variables) + optimizer.trainable_variables()\n", + "\n", + "for i in range(1000):\n", + " optimizer.minimize(problem, var_list=var_list)\n", + " if i % 100 == 0:\n", + " print(f'step = {i}')\n", + " print(f'loss = {loss_fn()}')\n", + " # print(f'constraint = {(x + y).numpy()}')\n", + " # print(f'u = {u.numpy()}, v = {v.numpy()}')" + ], + "execution_count": null, + "outputs": [ + { + "output_type": "stream", + "text": [ + "step = 0\n", + "loss = -662.9971313476562\n", + "step = 100\n", + "loss = -79729.0703125\n", + "step = 200\n", + "loss = -217770.546875\n", + "step = 300\n", + "loss = -395476.71875\n", + "step = 400\n", + "loss = -605416.375\n", + "step = 500\n", + "loss = -843243.875\n", + "step = 600\n", + "loss = -1106010.625\n", + "step = 700\n", + "loss = -1391545.0\n", + "step = 800\n", + "loss = -1698159.125\n", + "step = 900\n", + "loss = -2024494.0\n" + ], + "name": "stdout" + } + ] + }, + { + "cell_type": "code", + "metadata": { + "colab": { + "base_uri": "https://localhost:8080/", + "height": 483 + }, + "id": "gBBmYLTn2iCD", + "outputId": "7a717cba-5775-4e5e-a276-9d1144d1b5ad" + }, + "source": [ + "" + ], + "execution_count": null, + "outputs": [ + { + "output_type": "stream", + "text": [ + "313/313 - 0s - loss: 0.3365 - accuracy: 0.8820\n", + "MNIST - Test accuracy: 0.9768999814987183\n", + "Fashion MNIST - Test accuracy: 0.8820000290870667\n", + "\n", + "313/313 - 0s - loss: 5028111.0000 - accuracy: 0.1000\n", + "MNIST - Test accuracy: 0.10279999673366547\n", + "Fashion MNIST - Test accuracy: 0.10000000149011612\n", + "\n", + "MNIST - Accuracy drop: 0.8740999847650528\n", + "Fashion MNIST - Accuracy drop: 0.7820000275969505\n" + ], + "name": "stdout" + }, + { + "output_type": "display_data", + "data": { + "image/png": "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P+/YsWM57LDD6NixI4cddhhr166ti83JBCXXam04ysrK4l+9YaHP4svPZ/FZQ7Z48WIOPPDA+i6j1jZt2kRFRQUlJSUsW7aM448/niVLlmzz26nGIt/fSdLciCirOq9bUGZm9WjdunUcd9xxVFRUEBHcfvvtjTacassBZWZWj9q1a8e/2ivUWPkkCTMzyyQHlJmZZZIDyszMMskBZWZmmeSTJMyscRpT+G+JClvfRwXNNnXqVE4//XQWL15Mjx496raGAhR6K49CTJ06lW7dutGzZ89aLde2bVvKy8v/5ed3C8rMrA5NmjSJo446qsYf59ZG5SWNClXorTwKMXXqVBYtWlQn69oRDigzszpSXl7O008/zZ133sl9990HwIwZMzjmmGM4+eST6d69OxdddBGbN28GkpbGt771LXr16sXAgQNZtWoVAAMGDODyyy+nrKyMm2++mccff5xDDjmE3r1787WvfY1PPvmE2bNnc/DBB7N+/Xo+/vhjevXqxYIFC1i+fDkHHXQQABMmTOC0007jhBNOoGvXrtx66638/Oc/55BDDuHwww/n/fffB2D8+PEceuih9OnThzPPPJN169Yxc+ZMpk2bxne+8x369u3LsmXLWLZsGYMGDaJfv34cffTRvPzyywC8/vrrHHHEEfTu3ZurrrqqzvanA8rMrI48/PDDDBo0iG7durH77rtvuXjsrFmzuOWWW1i0aBHLli3jwQcfBODjjz+mrKyMhQsXcuyxx3LNNddsWdeGDRuYM2cOl1xyCSNHjmTy5MnMnz+fjRs38qtf/YpDDz2UwYMHc9VVV/Hd736X4cOHbwmmXAsWLODBBx9k9uzZXHnllbRp04YXXniBI444Yst1A/PdsuPII49k8ODB3HDDDcybN4/99tuPUaNGccsttzB37lxuvPFGRo8eDcA3v/lNLr74YubPn0+nTp3qbH86oMzM6sikSZO23Dpj6NChW7r5+vfvz7777kvz5s0ZNmwYTz/9NADNmjXjK1/5CgDDhw/fMh7YMn7JkiWUlpbSrVs3AEaMGMFTTz0FwNVXX82f/vQn5syZw3e/+928NR133HG0a9eOjh070r59e0499VQAevfuXatbdpSXlzNz5kzOOuss+vbty4UXXsg777wDwDPPPMOwYcMAOOecc3Zw723LJ0mYmdWB999/nyeeeIL58+cjiU2b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\n", + "text/plain": [ + "
" + ] + }, + "metadata": { + "tags": [], + "needs_background": "light" + } + } + ] + }, + { + "cell_type": "code", + "metadata": { + "id": "GY92NgoE2zrR" + }, + "source": [ + "" + ], + "execution_count": null, + "outputs": [] + } + ] +} \ No newline at end of file diff --git a/python/svd_approximation.py b/python/svd_approximation.py new file mode 100644 index 0000000..b9a2686 --- /dev/null +++ b/python/svd_approximation.py @@ -0,0 +1,1484 @@ +# -*- coding: utf-8 -*- +"""SVD Approximation + +Automatically generated by Colaboratory. + +Original file is located at + https://colab.research.google.com/drive/1qyZtwulkRmO9qBgpNxnUpckRzIg9Q-tu + +# SVD Approximation +""" + +# Commented out IPython magic to ensure Python compatibility. +import tensorflow as tf +import matplotlib.pyplot as plt +import numpy as np +from PIL import Image, ImageOps +from google.colab import drive +import re +from datetime import datetime +import os + +# Load the TensorBoard notebook extension +# %load_ext tensorboard +# %tensorflow_version 2.x +from tensorboard.plugins.hparams import api as hp +# Clear any logs from previous tensorboard runs +!rm -rf /tmp/mylogs +writer = tf.summary.create_file_writer('/tmp/mylogs') + +drive.mount('/gdrive', force_remount=True) + +"""## Algorithm 1 - Stardard SVD Decomposition""" + +def svd1(x_in, Verbose=False, correction_factor=1e-12): + """ + @brief Short-hand for applying SVD and dealing with non-converging SVD. + + @param x input matrix + + @return the U, s, V first components + """ + x = x_in.copy() + m, n = x.shape + not_converged = True + max_tries = 1000 + i = 0 + while not_converged: + try: + u, s, v = np.linalg.svd(x, full_matrices=False) + except np.linalg.linalg.LinAlgError as e: + # ================================================================== + # If SVD didn't converge, add a small error to the matrix and + # repeat, otherwise the heuristic will always generate zero + # components. + # ================================================================== + if Verbose: + print("[WARNING] Exception caught: {}". format(e)) + if np.isnan(x).any(): + print("[WARNING] The provided matrix contains NaNs.") + if np.isinf(x).any(): + print("[WARNING] The provided matrix contains Infs.") + u = np.zeros((m, m)) + s = np.zeros((n,)) + v = np.zeros((n, n)) + x -= correction_factor + if np.any(s): # not all zeros + not_converged = False + # If still not converging and max tries reached, return svd components + # that are close to zero. + if not_converged and i == max_tries: + not_converge = False + u = np.zeros((m, m)) + s = np.zeros((n,)) + v = np.zeros((n, n)) + u += 1e-15 + s += 1e-15 + v += 1e-15 + i += 1 + return u.T[0], s[0], v[0] + +x = np.random.randn(32, 16) +svd1(x) + +"""## Algorithm 2 - Joshua Paper + +Decompose `k` matrices into `r` sub-matrices. +""" + +def mse(a, b): + return ((a - b)**2).mean() + +def avg_abs_diff(a, b): + return np.absolute(a - b).mean() + +def frobenius_norm(a, b): + return np.sqrt(np.absolute(np.linalg.norm(a - b))) + +def frobenius(x): + return (x**2).sum() + +def check_threshold(U, U_step, V, V_step, stop_threshold=0.00005, + config='mse'): + """ + @brief Determines the threshold for stopping vectors refinements + + @param U [] + @param U_step [] + @param V [] + @param V_step [] + + @return whether to stop refinement process + """ + if config == 'mse': + diff_u = mse(U, U_step) + diff_v = mse(V, V_step) + elif config == 'avg': + diff_u = avg_abs_diff(U, U_step) + diff_v = avg_abs_diff(V, V_step) + elif config == 'frobenius-norm': + diff_u = frobenius_norm(U, U_step) + diff_v = frobenius_norm(V, V_step) + elif config == 'norm': + diff_u = np.linalg.norm(U - U_step) + diff_v = np.linalg.norm(V - V_step) + if diff_v < stop_threshold and diff_u < stop_threshold: + return True, diff_u, diff_v + else: + return False, diff_u, diff_v + +def get_vec_from_largest_eig(x): + w, vr = np.linalg.eigh(x) + return vr[:, np.argmax(w)] + +def update_F(F, U, V): + FT = np.transpose(F, axes=(0, 2, 1)) + S = V.T @ FT @ U + A = np.outer(U, V) + F_tmp = np.zeros(F.shape) + for i in range(F.shape[0]): + F_tmp[i] = F[i] - S[i] * A + return F_tmp, S + +def algorithm2(F_in, r=1, stop_threshold=0.0001, hard_stop=100, + decomposition='eigen', truncate=False, metric='mse', + report_writer=None, report_step=0, scaler=None, Verbose=False): + """ + @brief Algorithm from "Synthesis and Optimization + of 2D Filter Designs for Heterogeneous FPGAs" + + @param F_in List or array of matrixes to approximate + (they must have same shape) + @param r The number of sub-matrices + @param Verbose Verbose + + @return the eigenvalues lambda_ij and vectors u and v + """ + if isinstance(F_in, (list,)): + k = len(F_in) + m, n = F_in[0].shape + F = np.zeros((k, m, n)) + for i in range(k): + F[i] = F_in[i].copy() + else: + k, m, n = F_in.shape + F = np.array(F_in, copy=True) + # hard_stop = 100 + # stop_threshold = 0.0001 # F.std() + if truncate: + tot_elem = k * (m * n) + appr_elem = k * (m + n + r) + if appr_elem >= tot_elem: + print('[WARNING] The r value ({}) is too high and will be truncated.'.format(r)) + while appr_elem >= tot_elem: + r -= 1 + appr_elem = k * (m + n + r) + print('[WARNING] r set to {}.'. format(r)) + if scaler is None: + scaler = np.ones((k)) + u_array = np.zeros((r, m)) + s_array = np.zeros((r, k)) + v_array = np.zeros((r, n)) + # NOTE: Given a matrix A, we have that: A @ A.T is symmetrical! Meaning + # that, for the spectral theorem, A has real eigenvalues! + for j in range(r): + # Form the (m x m) matrix Fn: sum[0,k-1](F[i] @ F[i].T) + Fn = np.zeros((m, m)) + for i in range(k): + Fn += scaler[i] * F[i] @ F[i].T # SQUARED + # Calculate the eigenvector u that corresponds to the largest eigenvalue + if decomposition == 'eigen': + u = get_vec_from_largest_eig(Fn) + else: + u, _, _ = svd1(Fn) + # Form the (n x k) matrix: Fb = [F[0].T @ u, F[1].T @ u, ..., F[k-1].T @ u] + Fb = np.zeros((n, k)) + for i in range(k): + Fb[:,i] = scaler[i] * F[i].T @ u + # Calculate the eigenvector v that corresponds to the largest + # eigenvalue of the (n x n) matrix: Fb @ Fb.T + Fb = Fb @ Fb.T + if decomposition == 'eigen': + v = get_vec_from_largest_eig(Fb) + else: + _, _, v = svd1(Fb) + U = u + V = v + for t in range(hard_stop): + # Form the (k x m) matrix Fb = [F[0] @ v, F[1] @ v, ..., F[k-1] @ v].T + FbT = np.zeros((m, k)) + for i in range(k): + FbT[:, i] = scaler[i] * F[i] @ v + Fb = FbT.T + # Calculate the eigenvector u that corresponds to the largest + # eigenvalue of the (m x m) matrix + Fb = FbT @ Fb + if decomposition == 'eigen': + u = get_vec_from_largest_eig(Fb) + else: + u, _, _ = svd1(Fb) + # Form the (n x k) matrix Fb = [F[0].T @ u, F[1].T @ u, ..., F[k-1].T @ u].T + FbT = np.zeros((k, n)) + for i in range(k): + FbT[i] = scaler[i] * F[i].T @ u + Fb = FbT.T + # Calculate the eigenvector v that corresponds to the largest + # eigenvalue of the (n x n) matrix + Fb = Fb @ FbT + if decomposition == 'eigen': + v = get_vec_from_largest_eig(Fb) + else: + _, _, v = svd1(Fb) + # Until u and v vectors change less than a pre-specified + # value that is set by the user + stop_refinement, diff_u, diff_v = check_threshold(u, U, v, V, stop_threshold, metric) + if report_writer is not None: + with report_writer.as_default(): + F_tmp, _ = update_F(F, U, V) + for p, (f_in, f_tmp) in enumerate(zip(F_in, F_tmp)): + tf.summary.scalar(f'Alg2 - MSE {p}-th sub-matrix', mse(f_in, f_tmp), report_step, description=f'Algorithm2 MSE(x, x_approx) of the {p}-th sub-matrix.') + tf.summary.scalar(f'Alg2 - Mean {p}-th sub-matrix',f_tmp.mean(), report_step, description=f'Algorithm2 Mean(x_approx) of the {p}-th sub-matrix.') + report_writer.flush() + # tf.summary.scalar('Alg2 - MSE refining', mse(F_in, F_tmp), report_step, description='Algorithm2 MSE(F, F_approx) at refining steps.') + # tf.summary.scalar('Alg2 - diff(U)', diff_u, report_step, description='Algorithm2 MSE(u(i), u(i-1)) at refining steps.') + # tf.summary.scalar('Alg2 - diff(V)', diff_v, report_step, description='Algorithm2 MSE(v(i), v(i-1)) at refining steps.') + # NOTE: The u and v norms are always equal to 1. + # tf.summary.scalar('Alg2 - norm(U)', np.linalg.norm(u), report_step, description='Algorithm2 norm(u(i)) at refining steps.') + # tf.summary.scalar('Alg2 - norm(V)', np.linalg.norm(v), report_step, description='Algorithm2 norm(v(i)) at refining steps.') + # tf.summary.scalar('Alg2 - ', np.dot(U, u), report_step, description='Algorithm2 : inner-product (orthogonal if 0).') + # tf.summary.scalar('Alg2 - ', np.dot(V, v), report_step, description='Algorithm2 : inner-product (orthogonal if 0).') + report_writer.flush() + report_step += 1 + if stop_refinement: + V, U = v, u + break + V = v #* (1 + 1e-12) + U = u #* (1 + 1e-12) + if report_writer is not None and r > 1: + with report_writer.as_default(): + F_tmp, _ = update_F(F, U, V) + for p, (f_in, f_tmp) in enumerate(zip(F_in, F_tmp)): + tf.summary.scalar(f'Alg2 - Final MSE {p}-th sub-matrix', mse(f_in, f_tmp), report_step, description=f'Algorithm2 MSE(x, x_approx) of the {p}-th sub-matrix.') + report_writer.flush() + report_step += 1 + # F, S = update_F(F, U, V) + FT = np.transpose(F, axes=(0, 2, 1)) + S = V.T @ FT @ U + A = np.outer(U, V) + for i in range(k): + F[i] = F[i] - S[i] * A + u_array[j] = U + s_array[j] = S + v_array[j] = V + return u_array, s_array, v_array + +x = np.random.rand(3, 1024, 512) + +# Commented out IPython magic to ensure Python compatibility. +# %time u_eig, s_eig, v_eig = algorithm2(x, decomposition='eigen', stop_threshold=1e-5) + +# Commented out IPython magic to ensure Python compatibility. +# %time u_svd, s_svd, v_svd = algorithm2(x, decomposition='svd', stop_threshold=1e-5) + +print(mse(u_eig, u_svd)) +print(mse(s_eig, s_svd)) +print(mse(v_eig, v_svd)) + +"""Get approximation error.""" + +def algorithm2_inverse(U, S, V, F=None): + F_tmp = np.einsum('rk, rm, rn->kmn', S, U, V) + if F is None: + F = F_tmp + elif type(F) == list: + k = S.shape[1] + for i in range(k): + F.append(F_tmp[i]) + return F_tmp + +x_svd = algorithm2_inverse(u_svd, s_svd, v_svd) +x_eig = algorithm2_inverse(u_eig, s_eig, v_eig) +print(mse(x, x_svd)) +print(mse(x, x_eig)) + +"""## Algortihm 3 - SVD and Refinement Steps""" + +def algorithm3(x_in, num_refinements=1, num_sub_matrix=1, truncate=False, + stop_threshold=0.0001, hard_stop=100, decomposition='eigen', + metric='mse', scaler=None, report_writer=None, + apply_scaling_at_alg2=True, plotdata=None): + if type(x_in) == list: + x = np.concatenate([a[np.newaxis,:] for a in x_in], axis=0) + else: + x = x_in + k, m, n = x.shape + if truncate: + tot_elem = 2 * (m * n) + appr_elem = num_refinements * (m + n + x.shape[0]) + if appr_elem >= tot_elem: + print(f'[WARNING] The num_refinements value ({num_refinements}) is too high and will be truncated.') + while appr_elem >= tot_elem: + num_refinements -= 1 + appr_elem = num_refinements * (m + n + x.shape[0]) + print(f'[WARNING] num_refinements set to {num_refinements}.') + u = np.zeros((num_refinements, num_sub_matrix, m)) + s = np.zeros((num_refinements, num_sub_matrix, k)) + v = np.zeros((num_refinements, num_sub_matrix, n)) + report_steps = 0 + if apply_scaling_at_alg2: + # ====================================================================== + # Apply scaling at Alogirthm 2 (Default) + # ====================================================================== + x_approx = np.zeros(x.shape) + for i in range(num_refinements): + u[i], s[i], v[i] = algorithm2(x - x_approx, num_sub_matrix, + stop_threshold, hard_stop, decomposition, + truncate, metric, report_writer, + report_steps, scaler) + x_approx += algorithm2_inverse(u[i], s[i], v[i]) + if report_writer is not None: + with report_writer.as_default(): + tf.summary.scalar('Alg3 - MSE', mse(x, x_approx), i, description='Algorithm3 MSE(x, x_approx).') + for p, (f_in, f_tmp) in enumerate(zip(x, x_approx)): + tf.summary.scalar(f'Alg3 - MSE {p}-th sub-matrix', mse(f_in, f_tmp), i, description=f'Algorithm3 MSE(x, x_approx) of the {p}-th sub-matrix.') + tf.summary.scalar(f'Alg3 - Mean {p}-th sub-matrix', f_tmp.mean(), i, description=f'Algorithm3 Mean(x_approx) of the {p}-th sub-matrix.') + tf.summary.scalar(f'Alg3 - Mean Original {p}-th sub-matrix', f_in.mean(), i, description=f'Algorithm3 Mean(x) of the {p}-th sub-matrix.') + report_writer.flush() + if plotdata is not None: + if not plotdata: # If empty, initialize it + for p in range(k): + plotdata[f'MSE(matrix[{p}])'] = [] + for p, (f_in, f_tmp) in enumerate(zip(x, x_approx)): + plotdata[f'MSE(matrix[{p}])'].append(mse(f_in, f_tmp)) + else: + # ====================================================================== + # Apply scaling at Alogirthm 3 (To be checked) + # ====================================================================== + x_approx = np.zeros(x.shape) + x_scaled = x.copy() + error = x - x_approx + if scaler is None: + scaler = [1.] * k + for j in range(k): + x_scaled[j] *= scaler[j] + error[j] = x_scaled[j] + for i in range(num_refinements): + u[i], s[i], v[i] = algorithm2(error, num_sub_matrix, + stop_threshold, hard_stop, decomposition, + truncate, metric, report_writer, + report_steps, scaler=None) + for j in range(k): + s[j] /= scaler[j] + x_approx += algorithm2_inverse(u[i], s[i], v[i]) + # for j in range(k): + # x_approx[j] *= scaler[j] + error = x_scaled - x_approx + # for j in range(k): + # error[j] *= scaler[j] + if report_writer is not None: + with report_writer.as_default(): + tf.summary.scalar('Alg3 - MSE', mse(x, x_approx), i, description='Algorithm3 MSE(x, x_approx).') + for p, (f_in, f_tmp) in enumerate(zip(x, x_approx)): + tf.summary.scalar(f'Alg3 - MSE {p}-th sub-matrix', mse(f_in, f_tmp), i, description=f'Algorithm3 MSE(x, x_approx) of the {p}-th sub-matrix.') + tf.summary.scalar(f'Alg3 - Mean {p}-th sub-matrix', f_tmp.mean(), i, description=f'Algorithm3 Mean(x_approx) of the {p}-th sub-matrix.') + tf.summary.scalar(f'Alg3 - Mean Original {p}-th sub-matrix', f_in.mean(), i, description=f'Algorithm3 Mean(x) of the {p}-th sub-matrix.') + report_writer.flush() + if plotdata is not None: + if not plotdata: # If empty, initialize it + for p in range(k): + plotdata[f'MSE(matrix[{p}])'] = [] + for p, (f_in, f_tmp) in enumerate(zip(x, x_approx)): + plotdata[f'MSE(matrix[{p}])'].append(mse(f_in, f_tmp)) + return u, s, v + +def algorithm3_inverse(U, S, V): + """ + @brief Given a list of u, s, v vectors, reconstruct + the two approximated matrixes. + + @param U list of u vectr + @param S list of s vectr + @param V list of v vectr + + @return the reconstructed approximated matrix (concatened) + """ + # NOTE: The shape variables are: + # r := number of refinement steps + # k := number of merged matrixes + # m := "input" dimension of the matrixes + # n := "output" dimension of the matrixes + u, s, v = np.array(U), np.array(S), np.array(V) + F = np.einsum('...rk, ...rm, ...rn', s, u, v) + F = np.einsum('rkmn->kmn', F) + return F + +# Commented out IPython magic to ensure Python compatibility. +x = np.random.rand(3, 1024, 512) +# %time u_eig, s_eig, v_eig = algorithm3(x, 4, decomposition='eigen', stop_threshold=1e-3) + +# Commented out IPython magic to ensure Python compatibility. +# %time u_svd, s_svd, v_svd = algorithm3(x, 4, decomposition='svd', stop_threshold=1e-3) + +x_svd = algorithm3_inverse(u_svd, s_svd, v_svd) +x_eig = algorithm3_inverse(u_eig, s_eig, v_eig) +print(mse(x, x_svd)) +print(mse(x, x_eig)) + +"""### Algorithm 3 - Extra Refinements""" + +def algorithm3_extra_refinements(x_in, u_in, s_in, v_in, num_refinements=1, num_sub_matrix=1, truncate=False, + stop_threshold=0.0001, hard_stop=100, decomposition='eigen', + metric='mse', scaler=None, + report_writer=None): + previous_num_refinements = u_in.shape[0] + assert previous_num_refinements <= num_refinements, f'Previous #Refinements ({previous_num_refinements}) must be less then num_refinements ({num_refinements}).' + if type(x_in) == list: + x = np.concatenate([a[np.newaxis,:] for a in x_in], axis=0) + else: + x = x_in + k, m, n = x.shape + if truncate: + tot_elem = 2 * (m * n) + appr_elem = num_refinements * (m + n + x.shape[0]) + if appr_elem >= tot_elem: + print(f'[WARNING] The num_refinements value ({num_refinements}) is too high and will be truncated.') + while appr_elem >= tot_elem: + num_refinements -= 1 + appr_elem = num_refinements * (m + n + x.shape[0]) + print(f'[WARNING] num_refinements set to {num_refinements}.') + u = np.zeros((num_refinements, num_sub_matrix, m)) + s = np.zeros((num_refinements, num_sub_matrix, k)) + v = np.zeros((num_refinements, num_sub_matrix, n)) + + u[:previous_num_refinements] = u_in + s[:previous_num_refinements] = s_in + v[:previous_num_refinements] = v_in + + report_steps = 0 + # ========================================================================== + # Scaler version + # ========================================================================== + x_approx = algorithm3_inverse(u_in, s_in, v_in) + x_scaled = x.copy() + error = x - x_approx + if scaler is None: + scaler = [1.] * k + for j in range(k): + x_scaled[j] *= scaler[j] + error[j] = x_scaled[j] + for i in range(previous_num_refinements, num_refinements): + u[i], s[i], v[i] = algorithm2(error, num_sub_matrix, + stop_threshold, hard_stop, decomposition, + truncate, metric, report_writer, + report_steps, scaler=None) + for j in range(k): + s[j] /= scaler[j] + x_approx += algorithm2_inverse(u[i], s[i], v[i]) + for j in range(k): + x_approx[j] *= scaler[j] + error = x_scaled - x_approx + # for j in range(k): + # error[j] *= scaler[j] + if report_writer is not None: + with report_writer.as_default(): + tf.summary.scalar('Alg3 - MSE', mse(x, x_approx), i, description='Algorithm3 MSE(x, x_approx).') + for p, (f_in, f_tmp) in enumerate(zip(x, x_approx)): + tf.summary.scalar(f'Alg3 - MSE {p}-th sub-matrix', mse(f_in, f_tmp), i, description=f'Algorithm3 MSE(x, x_approx) of the {p}-th sub-matrix.') + tf.summary.scalar(f'Alg3 - Mean {p}-th sub-matrix', f_tmp.mean(), i, description=f'Algorithm3 Mean(x_approx) of the {p}-th sub-matrix.') + tf.summary.scalar(f'Alg3 - Mean Original {p}-th sub-matrix', f_in.mean(), i, description=f'Algorithm3 Mean(x) of the {p}-th sub-matrix.') + report_writer.flush() + # ========================================================================== + # Original version + # ========================================================================== + # x_approx = np.zeros(x.shape) + # for i in range(num_refinements): + # u[i], s[i], v[i] = algorithm2(x - x_approx, num_sub_matrix, + # stop_threshold, hard_stop, decomposition, + # truncate, metric, report_writer, + # report_steps, scaler) + # x_approx += algorithm2_inverse(u[i], s[i], v[i]) + # if report_writer is not None: + # with report_writer.as_default(): + # tf.summary.scalar('Alg3 - MSE', mse(x, x_approx), i, description='Algorithm3 MSE(x, x_approx).') + # for p, (f_in, f_tmp) in enumerate(zip(x, x_approx)): + # tf.summary.scalar(f'Alg3 - MSE {p}-th sub-matrix', mse(f_in, f_tmp), i, description=f'Algorithm3 MSE(x, x_approx) of the {p}-th sub-matrix.') + # tf.summary.scalar(f'Alg3 - Mean {p}-th sub-matrix', f_tmp.mean(), i, description=f'Algorithm3 Mean(x_approx) of the {p}-th sub-matrix.') + # tf.summary.scalar(f'Alg3 - Mean Original {p}-th sub-matrix', f_in.mean(), i, description=f'Algorithm3 Mean(x) of the {p}-th sub-matrix.') + # report_writer.flush() + return u, s, v + +"""## Setup TensorBoard""" + +# Commented out IPython magic to ensure Python compatibility. +tensorboard_dir = '/gdrive/My Drive/Colab Notebooks/svd/' +tensorboard_dir = re.escape(tensorboard_dir) # to include spaces +# %reload_ext tensorboard +# %rm -rf $tensorboard_dir/tensorboard/* +# %tensorboard --logdir $tensorboard_dir/tensorboard + +"""# Models + +Currently, we have the following designs in place: + +| Model Name | ID | #LSTMs | Input Size(s) | Hidden Size(s)| Test Accuracy | HW Requirements | +|---|---|---|---|---|---|---| +| Dense MNIST | mnist | 0 | 784 | 128 | 98% | | +| Fashion MNIST | fashion | 0 | 784 | 128 | 88% | | +| Fashion MNIST - LSTM | fashion-lstm | 2 | 128 | 256 | 86% | | +| CNN-RNN-UCF101 | cnn-lstm | 2 | 2048 | 256 | 65% | +| TrafficPredict | traffic-predict | N | ? | ? | ? | | + +""" + +models = {} + +checkpoint_dir = '/gdrive/My Drive/checkpoints/svd/' + +def save_model(model_name): + models[model_name].save(checkpoint_dir + model_name) + models[model_name].save_weights(checkpoint_dir + model_name + '.h5') + print(f'Model saved at: {checkpoint_dir + model_name}') + +def load_model(model_name): + if os.path.isdir(checkpoint_dir + model_name): + models[model_name] = tf.keras.models.load_model(checkpoint_dir + model_name) + if os.path.isfile(checkpoint_dir + model_name + '.h5'): + print(f'Model "{model_name}" loaded with weights.') + return True + else: + print(f'Model "{model_name}" loaded without weights.') + return False + else: + print(f'Model "{model_name}" not found in: {checkpoint_dir}') + return False + +"""### MNIST - Dense""" + +mnist = tf.keras.datasets.mnist + +(x_train, y_train), (x_test, y_test) = mnist.load_data() +x_train, x_test = x_train / 255.0, x_test / 255.0 + +models['mnist'] = tf.keras.models.Sequential([ + tf.keras.layers.Flatten(input_shape=(28, 28)), + tf.keras.layers.Dense(128, activation='relu', name='dense_1'), + tf.keras.layers.Dropout(0.2), + tf.keras.layers.Dense(10, name='dense_2') +], name='mnist') + +models['mnist'].summary() + +models['mnist'].compile(optimizer='adam', + loss=tf.keras.losses.SparseCategoricalCrossentropy(from_logits=True), + metrics=['accuracy']) + +if not load_model('mnist'): + models['mnist'].fit(x_train, y_train, epochs=5) + save_model('mnist') + +models['mnist'].evaluate(x_test, y_test, verbose=2) + +""" +## Fashion MNIST - Dense +""" + +fashion_mnist = tf.keras.datasets.fashion_mnist + +(fashion_train_images, fashion_train_labels), (fashion_test_images, fashion_test_labels) = fashion_mnist.load_data() + +class_names = ['T-shirt/top', 'Trouser', 'Pullover', 'Dress', 'Coat', + 'Sandal', 'Shirt', 'Sneaker', 'Bag', 'Ankle boot'] + +plt.figure() +plt.imshow(fashion_train_images[0]) +plt.colorbar() +plt.grid(False) +plt.show() + +"""Scale these values to a range of 0 to 1 before feeding them to the neural network model. To do so, divide the values by 255. It's important that the training set and the testing set be preprocessed in the same way:""" + +fashion_train_images = fashion_train_images / 255.0 +fashion_test_images = fashion_test_images / 255.0 + +plt.figure(figsize=(10,10)) +for i in range(25): + plt.subplot(5,5,i+1) + plt.xticks([]) + plt.yticks([]) + plt.grid(False) + plt.imshow(fashion_train_images[i], cmap=plt.cm.binary) + plt.xlabel(class_names[fashion_train_labels[i]]) +plt.show() + +models['fashion'] = tf.keras.Sequential([ + tf.keras.layers.Flatten(input_shape=(28, 28)), + tf.keras.layers.Dense(128, activation='relu', name='dense_1'), + tf.keras.layers.Dense(10, name='dense_2') +], name='fashion_mnist') +models['fashion'].summary() + +models['fashion'].compile(optimizer='adam', + loss=tf.keras.losses.SparseCategoricalCrossentropy(from_logits=True), + metrics=['accuracy']) + +"""Train the model.""" + +train_model = False +if not load_model('fashion') or train_model: + models['fashion'].fit(fashion_train_images, fashion_train_labels, epochs=10) + save_model('fashion') + +test_loss, test_acc = models['fashion'].evaluate(fashion_test_images, fashion_test_labels, verbose=2) +print('\nTest accuracy:', test_acc) + +"""## Fashion MNIST - LSTM""" + +batch_size = 32 +num_classes = 10 +epochs = 2 + +row_hidden = 64 +col_hidden = 64 + +row, col = fashion_train_images.shape[1:] + +input = tf.keras.layers.Input(shape=(row, col)) + +def lstm_pipe(in_layer, lstm_name=''): + x = tf.keras.layers.Conv1D(row_hidden, kernel_size=3, padding = 'same')(in_layer) + x = tf.keras.layers.Conv1D(row_hidden, kernel_size=3, padding = 'same')(x) + encoded_rows = tf.keras.layers.Bidirectional(tf.keras.layers.LSTM(row_hidden, return_sequences = True))(x) + return tf.keras.layers.LSTM(col_hidden, name='LSTM_' + lstm_name)(encoded_rows) +# Read it by rows +row_read = lstm_pipe(input, 'left') +# Read it by columns +transpose_read = lstm_pipe(tf.keras.layers.Permute(dims=(1,2))(input), 'right') +x = tf.concat([row_read, transpose_read], axis=1) +x = tf.keras.layers.Dropout(0.2)(x) +# prediction = tf.keras.layers.Dense(num_classes, activation='softmax')(x) +prediction = tf.keras.layers.Dense(num_classes)(x) +models['fashion-lstm'] = tf.keras.Model(input, prediction) +models['fashion-lstm'].compile(optimizer='adam', + loss=tf.keras.losses.SparseCategoricalCrossentropy(from_logits=True), + metrics=['accuracy']) +models['fashion-lstm'].summary() + +models['fashion-lstm'].get_layer('LSTM_left').get_weights()[0].shape + +if not load_model('fashion-lstm'): + models['fashion-lstm'].fit(fashion_train_images, fashion_train_labels, epochs=2, batch_size=batch_size) + save_model('fashion-lstm') + +test_loss, test_acc = models['fashion-lstm'].evaluate(fashion_test_images, fashion_test_labels, verbose=2) +print('\nTest accuracy:', test_acc) + +"""## CNN-RNN-UCF101""" + +!pip install -q git+https://github.com/tensorflow/docs + +!wget -q https://git.io/JGc31 -O /tmp/ucf101_top5.tar.gz +!tar xf /tmp/ucf101_top5.tar.gz + +from tensorflow_docs.vis import embed +from imutils import paths + +import pandas as pd +import imageio +import cv2 + +IMG_SIZE = 224 +BATCH_SIZE = 64 +EPOCHS = 10 + +MAX_SEQ_LENGTH = 20 +NUM_FEATURES = 2048 + +train_df = pd.read_csv("train.csv") +test_df = pd.read_csv("test.csv") + +print(f"Total videos for training: {len(train_df)}") +print(f"Total videos for testing: {len(test_df)}") + +train_df.sample(10) + +# The following two methods are taken from this tutorial: +# https://www.tensorflow.org/hub/tutorials/action_recognition_with_tf_hub + + +def crop_center_square(frame): + y, x = frame.shape[0:2] + min_dim = min(y, x) + start_x = (x // 2) - (min_dim // 2) + start_y = (y // 2) - (min_dim // 2) + return frame[start_y : start_y + min_dim, start_x : start_x + min_dim] + + +def load_video(path, max_frames=0, resize=(IMG_SIZE, IMG_SIZE)): + cap = cv2.VideoCapture(path) + frames = [] + try: + while True: + ret, frame = cap.read() + if not ret: + break + frame = crop_center_square(frame) + frame = cv2.resize(frame, resize) + frame = frame[:, :, [2, 1, 0]] + frames.append(frame) + + if len(frames) == max_frames: + break + finally: + cap.release() + return np.array(frames) + +def build_feature_extractor(): + feature_extractor = tf.keras.applications.InceptionV3( + weights="imagenet", + include_top=False, + pooling="avg", + input_shape=(IMG_SIZE, IMG_SIZE, 3), + ) + preprocess_input = tf.keras.applications.inception_v3.preprocess_input + + inputs = tf.keras.Input((IMG_SIZE, IMG_SIZE, 3)) + preprocessed = preprocess_input(inputs) + + outputs = feature_extractor(preprocessed) + return tf.keras.Model(inputs, outputs, name="feature_extractor") + +feature_extractor = build_feature_extractor() + +label_processor = tf.keras.layers.experimental.preprocessing.StringLookup( + num_oov_indices=0, vocabulary=np.unique(train_df["tag"]) +) +print(label_processor.get_vocabulary()) + +def prepare_all_videos(df, root_dir): + num_samples = len(df) + video_paths = df["video_name"].values.tolist() + labels = df["tag"].values + labels = label_processor(labels[..., None]).numpy() + + # `frame_masks` and `frame_features` are what we will feed to our sequence model. + # `frame_masks` will contain a bunch of booleans denoting if a timestep is + # masked with padding or not. + frame_masks = np.zeros(shape=(num_samples, MAX_SEQ_LENGTH), dtype="bool") + frame_features = np.zeros( + shape=(num_samples, MAX_SEQ_LENGTH, NUM_FEATURES), dtype="float32" + ) + + # For each video. + for idx, path in enumerate(video_paths): + # Gather all its frames and add a batch dimension. + frames = load_video(os.path.join(root_dir, path)) + frames = frames[None, ...] + + # Initialize placeholders to store the masks and features of the current video. + temp_frame_mask = np.zeros(shape=(1, MAX_SEQ_LENGTH,), dtype="bool") + temp_frame_featutes = np.zeros( + shape=(1, MAX_SEQ_LENGTH, NUM_FEATURES), dtype="float32" + ) + + # Extract features from the frames of the current video. + for i, batch in enumerate(frames): + video_length = batch.shape[1] + length = min(MAX_SEQ_LENGTH, video_length) + for j in range(length): + temp_frame_featutes[i, j, :] = feature_extractor.predict( + batch[None, j, :] + ) + temp_frame_mask[i, :length] = 1 # 1 = not masked, 0 = masked + + frame_features[idx,] = temp_frame_featutes.squeeze() + frame_masks[idx,] = temp_frame_mask.squeeze() + + return (frame_features, frame_masks), labels + +if os.path.isfile(checkpoint_dir + 'cnn-lstm/dataset.npz'): + dataset = np.load(checkpoint_dir + 'cnn-lstm/dataset.npz') + train_data = (dataset['train_data_0'], dataset['train_data_1']) + test_data = (dataset['test_data_0'], dataset['test_data_1']) + train_labels = dataset['train_labels'] + test_labels = dataset['test_labels'] +else: + train_data, train_labels = prepare_all_videos(train_df, "train") + test_data, test_labels = prepare_all_videos(test_df, "test") + +print(f"Frame features in train set: {train_data[0].shape}") +print(f"Frame masks in train set: {train_data[1].shape}") + +"""### The Sequence Model""" + +# Utility for our sequence model. +def get_sequence_model(): + class_vocab = label_processor.get_vocabulary() + + frame_features_input = tf.keras.Input((MAX_SEQ_LENGTH, NUM_FEATURES)) + mask_input = tf.keras.Input((MAX_SEQ_LENGTH,), dtype="bool") + + # Refer to the following tutorial to understand the significance of using `mask`: + # https://tf.keras.io/api/layers/recurrent_layers/gru/ + x = tf.keras.layers.LSTM(64, return_sequences=True, name='LSTM_1')(frame_features_input, mask=mask_input) + x = tf.keras.layers.LSTM(32, name='LSTM_2')(x) + # x = tf.keras.layers.GRU(16, return_sequences=True)(frame_features_input, mask=mask_input) + # x = tf.keras.layers.GRU(8)(x) + x = tf.keras.layers.Dropout(0.4)(x) + x = tf.keras.layers.Dense(8, activation="relu")(x) + output = tf.keras.layers.Dense(len(class_vocab), activation="softmax")(x) + + rnn_model = tf.keras.Model([frame_features_input, mask_input], output) + + rnn_model.compile( + loss="sparse_categorical_crossentropy", optimizer="adam", metrics=["accuracy"] + ) + return rnn_model + +# Utility for running experiments. +def run_experiment(): + filepath = "/tmp/video_classifier" + checkpoint = tf.keras.callbacks.ModelCheckpoint( + filepath, save_weights_only=True, save_best_only=True, verbose=1 + ) + seq_model = get_sequence_model() + history = seq_model.fit( + [train_data[0], train_data[1]], + train_labels, + validation_split=0.3, + epochs=EPOCHS, + callbacks=[checkpoint], + ) + seq_model.load_weights(filepath) + _, accuracy = seq_model.evaluate([test_data[0], test_data[1]], test_labels) + print(f"Test accuracy: {round(accuracy * 100, 2)}%") + return history, seq_model + +train_model = False +if not load_model('cnn-lstm') or train_model: + _, models['cnn-lstm'] = run_experiment() + save_model('cnn-lstm') + +"""### Inference""" + +def prepare_single_video(frames): + frames = frames[None, ...] + frame_mask = np.zeros(shape=(1, MAX_SEQ_LENGTH,), dtype="bool") + frame_featutes = np.zeros(shape=(1, MAX_SEQ_LENGTH, NUM_FEATURES), dtype="float32") + for i, batch in enumerate(frames): + video_length = batch.shape[1] + length = min(MAX_SEQ_LENGTH, video_length) + for j in range(length): + frame_featutes[i, j, :] = feature_extractor.predict(batch[None, j, :]) + frame_mask[i, :length] = 1 # 1 = not masked, 0 = masked + return frame_featutes, frame_mask + +def sequence_prediction(path): + class_vocab = label_processor.get_vocabulary() + + frames = load_video(os.path.join("test", path)) + frame_features, frame_mask = prepare_single_video(frames) + probabilities = models['cnn-lstm'].predict([frame_features, frame_mask])[0] + + for i in np.argsort(probabilities)[::-1]: + print(f" {class_vocab[i]}: {probabilities[i] * 100:5.2f}%") + return frames + +# This utility is for visualization. +# Referenced from: +# https://www.tensorflow.org/hub/tutorials/action_recognition_with_tf_hub +def to_gif(images): + converted_images = images.astype(np.uint8) + imageio.mimsave("animation.gif", converted_images, fps=10) + return embed.embed_file("animation.gif") + +test_video = np.random.choice(test_df["video_name"].values.tolist()) +print(f"Test video path: {test_video}") +test_frames = sequence_prediction(test_video) +to_gif(test_frames[:MAX_SEQ_LENGTH]) + +_, accuracy = models['cnn-lstm'].evaluate([test_data[0], test_data[1]], test_labels) +print(f"Test accuracy: {round(accuracy * 100, 2)}%") + +if not os.path.isfile(checkpoint_dir + 'cnn-lstm/dataset.npz'): + np.savez_compressed(checkpoint_dir + 'cnn-lstm/dataset', + train_data_0=train_data[0], + train_data_1=train_data[1], + train_labels=train_labels, + test_data_0=test_data[0], + test_data_1=test_data[1], + test_labels=test_labels) + +"""### Get Weights""" + +models['cnn-lstm'].summary() + +print(models['cnn-lstm'].get_layer('LSTM_1').get_weights()[0].shape) +print(models['cnn-lstm'].get_layer('LSTM_2').get_weights()[0].shape) + +"""# Scaled SVD Approximation""" + +def get_approx_size(R, k, m, n): + return R * (m + n + k) + +def plot_accuracies(model_labels, original_accuracies, approx_accuracies): + x = np.arange(len(model_labels)) # the label locations + width = 0.35 # the width of the bars + fig, ax = plt.subplots() + rects1 = ax.bar(x - width/2, original_accuracies, width, label='Original') + rects2 = ax.bar(x + width/2, approx_accuracies, width, label='Approximated') + # Add some text for labels, title and custom x-axis tick labels, etc. + ax.set_ylabel('Accuracy') + ax.set_title('Original Accuracy vs. Approximated.') + ax.set_xticks(x) + ax.set_xticklabels(model_labels) + ax.legend() + fig.tight_layout() + plt.show() + +models['fashion'].summary() +mnist_dense = [w1, b1] = models['mnist'].get_layer('dense_1').get_weights() +fashion_mnist_dense = [w2, b2] = models['fashion'].get_layer('dense_1').get_weights() +print(w1.shape, w2.shape) + +# Commented out IPython magic to ensure Python compatibility. +R = 45 +metric = 'mse' +threshold = 1e-5 +scalers = [1., 1.] + +def run_alg3_for_mnist(scaler, apply_scaling_at_alg2, log_to_tensorboard=False): + if log_to_tensorboard: + logname = 'mnist' + logname += f'_R{R}_scaler0_{scaler[0]}_scaler1_{scaler[1]}_{metric}_Th{threshold}' + logname += '_date' + datetime.now().strftime('%Y%m%d-%H%M%S') + writer = tf.summary.create_file_writer(os.path.join('/gdrive/My Drive/Colab Notebooks/svd/tensorboard', logname)) +# %reload_ext tensorboard + else: + writer = None + + [w1, b1] = models['mnist'].get_layer('dense_1').get_weights() + [w2, b2] = models['fashion'].get_layer('dense_1').get_weights() + plotdata = {} + w_approx = algorithm3_inverse(*algorithm3([w1, w2], \ + num_refinements=R, \ + num_sub_matrix=1, \ + decomposition='eigen', \ + stop_threshold=threshold, \ + metric=metric, \ + scaler=scaler, \ + report_writer=writer, \ + apply_scaling_at_alg2=apply_scaling_at_alg2, \ + plotdata=plotdata)) + # Obtain original accuracies. + _, mnist_acc = models['mnist'].evaluate(x_test, y_test, verbose=0) + _, fashion_mnist_acc = models['fashion'].evaluate(fashion_test_images, fashion_test_labels, verbose=0) + print('') + print('[ORIGINAL] MNIST - Test accuracy: {:.1f}%'.format(100. * mnist_acc)) + print('[ORIGINAL] Fashion MNIST - Test accuracy: {:.1f}%'.format(100. * fashion_mnist_acc)) + + # Set approximated weights and evaluate. + models['mnist'].get_layer('dense_1').set_weights([w_approx[0], b1]) + models['fashion'].get_layer('dense_1').set_weights([w_approx[1], b2]) + print('') + + _, mnist_acc_approx = models['mnist'].evaluate(x_test, y_test, verbose=0) + _, fashion_mnist_acc_approx = models['fashion'].evaluate(fashion_test_images, fashion_test_labels, verbose=0) + print('[APPROX] MNIST - Test accuracy: {:.1f}%'.format(100. * mnist_acc_approx)) + print('[APPROX] Fashion MNIST - Test accuracy: {:.1f}%'.format(100. * fashion_mnist_acc_approx)) + + print('\nMNIST - Accuracy drop: {:.1f}%'.format(100. * (mnist_acc - mnist_acc_approx))) + print('Fashion MNIST - Accuracy drop: {:.1f}%'.format(100. * (fashion_mnist_acc - fashion_mnist_acc_approx))) + print('') + + # Restore original weights and plot. + models['mnist'].get_layer('dense_1').set_weights([w1, b1]) + models['fashion'].get_layer('dense_1').set_weights([w2, b2]) + + plot_accuracies(['mnist', 'fashion'], [mnist_acc, fashion_mnist_acc], + [mnist_acc_approx, fashion_mnist_acc_approx]) + return w_approx[0], w_approx[1], plotdata + +"""## Baseline""" + +_, _, plotdata = run_alg3_for_mnist(None, apply_scaling_at_alg2=True) + +for matrix in plotdata: + plt.plot(plotdata[matrix], label=matrix) + print(plotdata[matrix][40]) +plt.legend() + +"""## Applying Scaling at Algorithm 3""" + +_, _, plotdata_alg3 = run_alg3_for_mnist([1., 1000.], apply_scaling_at_alg2=False) + +for matrix in plotdata_alg3: + plt.plot(plotdata_alg3[matrix], label=matrix) + print(plotdata_alg3[matrix][40]) +plt.legend() + +"""## Applying Scaling at Algorithm 2""" + +_, _, plotdata_alg2 = run_alg3_for_mnist([1., 20.], apply_scaling_at_alg2=True) + +for matrix in plotdata: + plt.plot(plotdata[matrix], label=matrix) +plt.legend() + + + +"""## Additional Plotting""" + +plt.subplot(1, 3, 1) +plt.imshow(w1[:16,:16]) #, cmap=plt.cm.BuPu_r) +plt.subplot(1, 3, 2) +plt.imshow(w1_approx[:16,:16]) #, cmap=plt.cm.BuPu_r) +plt.subplot(1, 3, 3) +plt.imshow(w1[:16,:16] - w1_approx[:16,:16]) #, cmap=plt.cm.BuPu_r) + +plt.subplots_adjust(bottom=0.1, right=0.8, top=0.9) +cax = plt.axes([0.85, 0.1, 0.075, 0.8]) +plt.colorbar(cax=cax) +plt.show() + +n, bins, patches = plt.hist(w1_approx) +plt.show() + +print(f'Mean - orig/approx: {w1.mean()} / {w1_approx.mean()}') +print(f'Standard dev - orig/approx: {w1.std()} / {w1_approx.std()}') + +cr = [] + +m, n = w1.shape +for r in range(R, (min(m, n))): + tmp = 2 * m * n / get_approx_size(r, 2, m, n) + if tmp < 2: + break + cr.append(tmp) + +print('Current Compression Ratio (CR):', 2 * m * n / get_approx_size(R, 2, m, n)) +plt.plot(cr) + +"""# More than 2 Matrix Approximation + +## Dividing weight matrix into 4 +""" + +models['fashion'].summary() +mnist_dense = [w, b] = models['mnist'].get_layer('dense_1').get_weights() +print(w.shape) +r, h = w.shape[0] // 2, w.shape[1] // 2 +blocks = np.reshape(w, (4, r, h)) +tmp = np.reshape(blocks, w.shape) +print(blocks.shape) +print(np.allclose(w, tmp)) + +# Commented out IPython magic to ensure Python compatibility. +R = 64 +metric = 'mse' +threshold = 1e-5 +scaler = [1.] * blocks.shape[0] + +logname = 'mnist_4blocks' +logname += f'_R{R}_scaler0_{scaler[0]}_scaler1_{scaler[1]}_{metric}_Th{threshold}' +logname += '_date' + datetime.now().strftime('%Y%m%d-%H%M%S') +writer = tf.summary.create_file_writer(os.path.join('/gdrive/My Drive/Colab Notebooks/svd/tensorboard', logname)) +# %reload_ext tensorboard + +# %time w_approx = algorithm3_inverse(*algorithm3(blocks, \ + num_refinements=R, \ + num_sub_matrix=1, \ + decomposition='eigen', \ + stop_threshold=threshold, \ + metric=metric, \ + scaler=scaler, \ + report_writer=writer)) + +k, m, n = blocks.shape +print(f'CR: {k * m * n / get_approx_size(R, k, m, n)}') + +models['mnist'].get_layer('dense_1').set_weights([w, b]) +_, mnist_acc = models['mnist'].evaluate(x_test, y_test, verbose=0) +print('MNIST - Test accuracy:', mnist_acc) + +models['mnist'].get_layer('dense_1').set_weights([np.reshape(w_approx, w.shape), b]) +print('') + +_, mnist_acc_approx = models['mnist'].evaluate(x_test, y_test, verbose=0) +print('MNIST - Test accuracy:', mnist_acc_approx) + +print('\nMNIST - Accuracy drop:', mnist_acc - mnist_acc_approx) + +plot_accuracies(['mnist'], [mnist_acc], [mnist_acc_approx]) + +"""# Different Sizes Approximation""" + +w1 = np.random.randint(9, size=(4, 8)) +w2 = np.random.randint(9, size=(5, 4)) + +max_shape = max_r, max_c = max(w1.shape[0], w2.shape[0]), max(w1.shape[1], w2.shape[1]) +print(max_shape) + +padded_w1 = np.zeros(max_shape) +padded_w2 = np.zeros(max_shape) +padded_w1[:w1.shape[0], :w1.shape[1]] = w1 +padded_w2[:w2.shape[0], :w2.shape[1]] = w2 + +print(w1) +print(w2) +print(padded_w1) +print(padded_w2) + +def pad_matrices(matrices): + max_r = max([m.shape for m in matrices],key=lambda item:item[0])[0] + max_c = max([m.shape for m in matrices],key=lambda item:item[1])[1] + padded_matrices = [] + for i in range(len(matrices)): + z = np.zeros((max_r, max_c)) + z[:matrices[i].shape[0], :matrices[i].shape[1]] = matrices[i] + padded_matrices.append(z) + return padded_matrices + +pad_matrices([w1, w2]) + +import operator + +def get_cr_multi_size_matrix(R, matrices): + max_m = max([m.shape for m in matrices],key=lambda item:item[0])[0] + max_n = max([m.shape for m in matrices],key=lambda item:item[1])[1] + approx_size = get_approx_size(R, len(matrices), max_m, max_n) + orig_size = sum(map(lambda x: operator.mul(*x.shape), matrices)) + return orig_size / approx_size + +w1 = np.random.randint(9, size=(4, 8)) +w2 = np.random.randint(9, size=(5, 4)) + +orig_size = operator.mul(*w1.shape) + operator.mul(*w2.shape) +print(orig_size) +get_cr_multi_size_matrix(1, [w1, w2]) + +cr = [] +cr_small = [] +cr_big = [] + +small_size = 128 +medium_size = 512 +large_size = 1024 +w1 = np.random.randint(9, size=(medium_size, small_size)) +w2 = np.random.randint(9, size=(large_size, medium_size)) + +for r in range(small_size // 4, small_size): + m, n = w1.shape + tmp = 2 * m * n / get_approx_size(r, 2, m, n) + cr_small.append(tmp) + m, n = w2.shape + tmp = 2 * m * n / get_approx_size(r, 2, m, n) + cr_big.append(tmp) + tmp = get_cr_multi_size_matrix(r, [w1, w2]) + if tmp < 2: + break + cr.append(tmp) + +plt.plot(cr, label='CR') +plt.plot(cr_small, label='CR_small') +plt.plot(cr_big, label='CR_big') +plt.legend() + +"""## CNN-LSTM Model""" + +print(models['cnn-lstm'].get_layer('LSTM_1').get_weights()[0].shape) +print(models['cnn-lstm'].get_layer('LSTM_2').get_weights()[0].shape) +print(len(models['cnn-lstm'].get_layer('LSTM_1').get_weights())) +print(len(models['cnn-lstm'].get_layer('LSTM_2').get_weights())) + +print(models['cnn-lstm'].get_layer('LSTM_2').get_weights()[1].shape) + +[w1, r1, b1] = models['cnn-lstm'].get_layer('LSTM_1').get_weights() +[w2, r2, b2] = models['cnn-lstm'].get_layer('LSTM_2').get_weights() + +[w1_pad, w2_pad] = pad_matrices([w1, w2]) +print(w1_pad, w2_pad) +print(w1_pad.shape) +print(w2_pad.shape) + +# Commented out IPython magic to ensure Python compatibility. +R = 25 +metric = 'mse' +threshold = 1e-5 +scaler = [1., 1.] + +logname = 'cnn-lstm' +logname += f'_R{R}_scaler0_{scaler[0]}_scaler1_{scaler[1]}_{metric}_Th{threshold}' +logname += '_date' + datetime.now().strftime('%Y%m%d-%H%M%S') +writer = tf.summary.create_file_writer(os.path.join('/gdrive/My Drive/Colab Notebooks/svd/tensorboard', logname)) +# %reload_ext tensorboard + +# %time u, s, v = algorithm3([w1_pad, w2_pad], \ +# num_refinements=R, \ +# num_sub_matrix=1, \ +# decomposition='eigen', \ +# stop_threshold=threshold, \ +# metric=metric, \ +# scaler=scaler, \ +# report_writer=writer) + +# %time u, s, v = algorithm3_extra_refinements([w1_pad, w2_pad], u, s, v, \ + num_refinements=R, \ + num_sub_matrix=1, \ + decomposition='eigen', \ + stop_threshold=threshold, \ + metric=metric, \ + scaler=scaler, \ + report_writer=writer) +w_approx = algorithm3_inverse(u, s, v) + + +w1_approx, w2_approx = w_approx[0], w_approx[1] + +models['cnn-lstm'].get_layer('LSTM_1').set_weights([w1, r1, b1]) +models['cnn-lstm'].get_layer('LSTM_2').set_weights([w2, r2, b2]) + +_, cnn_lstm_acc = models['cnn-lstm'].evaluate([test_data[0], test_data[1]], test_labels, verbose=0) +print(f'CNN-LSTM - Test accuracy: {cnn_lstm_acc}') + +models['cnn-lstm'].get_layer('LSTM_1').set_weights([w1_approx[:w1.shape[0], :w1.shape[1]], r1, b1]) +models['cnn-lstm'].get_layer('LSTM_2').set_weights([w2_approx[:w2.shape[0], :w2.shape[1]], r2, b2]) + +_, cnn_lstm_approx_acc = models['cnn-lstm'].evaluate([test_data[0], test_data[1]], test_labels, verbose=0) +print(f'\nCNN-LSTM - Test accuracy: {cnn_lstm_approx_acc} (approx)') +print(f'\nAccuracy drop: {cnn_lstm_acc - cnn_lstm_approx_acc}') + +plot_accuracies(['cnn_lstm'], [cnn_lstm_acc], [cnn_lstm_approx_acc]) + +"""# Minimization + +# Playing with Images +""" + +img = Image.open('/gdrive/My Drive/UNIVERSITY - PhD CHALMERS/mugs.jpg') #.convert('L') +img = img.resize([int(0.8 * s) for s in img.size]) +img_array = np.array(img).transpose([2, 0, 1]).astype('float32') +num_inputs, input_size, output_size = img_array.shape +print(img_array.shape) +img + +# Commented out IPython magic to ensure Python compatibility. +# %time img_approx = algorithm3_inverse(*algorithm3(img_array, num_refinements=64, num_sub_matrix=1, decomposition='eigen')).transpose([1, 2, 0]) +image = img_approx.copy() +image *= (255.0 / image.max()) # .clip(min=0, max=255.0) +Image.fromarray(image.astype('uint8')) + +# Commented out IPython magic to ensure Python compatibility. +# %time img_approx = algorithm3_inverse(*algorithm3(img_array, num_refinements=64, num_sub_matrix=1, decomposition='svd')).transpose([1, 2, 0]) +image = img_approx.copy() +image *= (255.0 / image.max()) # .clip(min=0, max=255.0) +Image.fromarray(image.astype('uint8')) + +"""### Combine three different images""" + +cat = Image.open('/gdrive/My Drive/UNIVERSITY - PhD CHALMERS/cat.jpg').convert('LA').resize([512, 256]) +mugs = Image.open('/gdrive/My Drive/UNIVERSITY - PhD CHALMERS/mugs.jpg').convert('LA').resize([512, 256]) +flower = Image.open('/gdrive/My Drive/UNIVERSITY - PhD CHALMERS/sun_flower.png').convert('LA').resize([512, 256]) + +cat_img = cat = ImageOps.grayscale(cat) +mugs_img = mugs = ImageOps.grayscale(mugs) +flower_img = flower = ImageOps.grayscale(flower) + +cat = np.array(cat).astype('float32') +mugs = np.array(mugs).astype('float32') +flower = np.array(flower).astype('float32') + +img_array = np.array([cat, mugs, flower]) +print(img_array.shape) + +cat_img, mugs_img, flower_img + +# Commented out IPython magic to ensure Python compatibility. +R = 8 +metric = 'frobenius-norm' +threshold = 1e-5 +logname = 'base' +logname += '_R{}_{}_Th{}'.format(R, metric, threshold) +logname += '_date' + datetime.now().strftime('%Y%m%d-%H%M%S') +writer = tf.summary.create_file_writer(os.path.join('/gdrive/My Drive/Colab Notebooks/svd/tensorboard', logname)) +# %reload_ext tensorboard + +# %time img_approx = algorithm3_inverse(*algorithm3(img_array, \ + num_refinements=R, \ + num_sub_matrix=1, \ + decomposition='eigen', \ + stop_threshold=threshold, \ + metric=metric, \ + report_writer=writer)) +img_approx *= (255.0 / img_approx.max()) # .clip(min=0, max=255.0) + +cat_approx = Image.fromarray(img_approx[0].astype('uint8')) +cat_approx + +mugs_approx = Image.fromarray(img_approx[1].astype('uint8')) +mugs_approx + +flower_approx = Image.fromarray(img_approx[2].astype('uint8')) +flower_approx + +def frobenius(x, x_approx): + return np.sqrt(np.absolute(np.linalg.norm(x - x_approx))) + +def mse(x, x_approx): + return ((x - x_approx)**2).mean() + +print(mse(cat, cat_approx)) +print(mse(mugs, mugs_approx)) +print(mse(flower, flower_approx)) + +# 402.30466 +# 335.3521 +# 365.27515 + +from tensorflow.python.training import gradient_descent + +x = tf.Variable(10.0, trainable=True) + +@tf.function +def f_x(): + return 2 * x * x - 5 * x + 4 + +for _ in range(20): + print([x.numpy(), f_x().numpy()]) + opt = gradient_descent.GradientDescentOptimizer(0.1).minimize(f_x) + +m, n = w1.shape +p = 2 +u = tf.Variable([[np.random.rand()] * n], trainable=True) +v = tf.Variable([[np.random.rand()] * m], trainable=True) +s = tf.Variable([np.random.rand()] * p, trainable=True) +w = np.array([w1, w2]) + +@tf.function +def f_x(): + # # A = tf.Variable([[tf.constant_initializer(0)] * m] * n, trainable=False) + # for i in range(p): + # v_tmp = tf.transpose(v) * w[i].T + # # print('v_tmp.shape:', v_tmp.shape) + # A_tmp = v_tmp * u + # # print('A_tmp.shape:', A_tmp.shape) + # if i == 0: + # A = A_tmp * A_tmp + # else: + # A = A + (A_tmp * A_tmp) + # for i in range(p): + # s = tf.transpose(v) * w[i].T * u + # w_approx = s * u * tf.transpose(v) + # print('s.shape:', s.shape) + # print('w_approx.shape:', w_approx.shape) + # if i == 0: + # mse = (w[i].T - w_approx) * (w[i].T - w_approx) + # else: + # mse = mse + (w[i].T - w_approx) * (w[i].T - w_approx) + + uv = u * tf.transpose(v) + s_tmp = tf.expand_dims(tf.expand_dims(s, axis=1), axis=2) + approx = tf.reduce_sum(w - s_tmp * tf.stack([uv] * p), axis=0) + return -tf.norm(approx, ord='fro', axis=[-2,-1]) + +norms = [] +for _ in range(100): + # print([x.numpy(), f_x().numpy()]) + # print(f_x().numpy()) + norms.append(f_x().numpy()) + opt = gradient_descent.GradientDescentOptimizer(0.0001).minimize(f_x) + +plt.plot(norms) +print(u.numpy().mean()) +print(v.numpy().mean()) + +models['mnist'].get_layer('dense_1').set_weights([w1, b1]) +models['fashion'].get_layer('dense_1').set_weights([w2, b2]) +_, mnist_acc = models['mnist'].evaluate(x_test, y_test, verbose=0) +_, fashion_mnist_acc = models['fashion'].evaluate(test_images, test_labels, verbose=2) +print('MNIST - Test accuracy:', mnist_acc) +print('Fashion MNIST - Test accuracy:', fashion_mnist_acc) + +A = (u * tf.transpose(v)).numpy() +w1_approx = s[0].numpy() * A +w2_approx = s[1].numpy() * A + +models['mnist'].get_layer('dense_1').set_weights([w1_approx, b1]) +models['fashion'].get_layer('dense_1').set_weights([w2_approx, b2]) +print('') + +_, mnist_acc_approx = models['mnist'].evaluate(x_test, y_test, verbose=0) +_, fashion_mnist_acc_approx = models['fashion'].evaluate(test_images, test_labels, verbose=2) +print('MNIST - Test accuracy:', mnist_acc_approx) +print('Fashion MNIST - Test accuracy:', fashion_mnist_acc_approx) + +print('\nMNIST - Accuracy drop:', mnist_acc - mnist_acc_approx) +print('Fashion MNIST - Accuracy drop:', fashion_mnist_acc - fashion_mnist_acc_approx) + +plot_accuracies(list(models.keys()), [mnist_acc, fashion_mnist_acc], + [mnist_acc_approx, fashion_mnist_acc_approx]) + +# Use the GitHub version of TFCO +!pip install git+https://github.com/google-research/tensorflow_constrained_optimization +import tensorflow_constrained_optimization as tfco + +m, n = w1.shape +p = 2 +u = tf.Variable([[np.random.rand()] * n], trainable=True) +v = tf.Variable([[np.random.rand()] * m], trainable=True) +s = tf.Variable([np.random.rand()] * p, trainable=True) +w = np.array([w1, w2]) + +def loss_fn(): + uv = u * tf.transpose(v) + s_tmp = tf.expand_dims(tf.expand_dims(s, axis=1), axis=2) + approx = tf.reduce_sum(w - s_tmp * tf.stack([uv] * p), axis=0) + for i in range(p): + A_tmp = tf.transpose(v) * w[i].T * u + if i == 0: + A = A_tmp * A_tmp + else: + A = A + (A_tmp * A_tmp) + return A - tf.norm(approx, ord='fro', axis=[-2, -1]) + +class SampleProblem(tfco.ConstrainedMinimizationProblem): + def __init__(self, loss_fn, weights): + self._loss_fn = loss_fn + self._weights = weights + + @property + def num_constraints(self): + return 2 + + def objective(self): + return loss_fn() + + def constraints(self): + u, s, v = self._weights + u_norm = tf.linalg.norm(u) # tf.math.reduce_euclidean_norm(u) + v_norm = tf.linalg.norm(v) # tf.math.reduce_euclidean_norm(v) + u_norm_eq_one = 1 - u_norm + v_norm_eq_one = 1 - v_norm + constraints = tf.stack([u_norm_eq_one, v_norm_eq_one]) + # A = (u * tf.transpose(v)).numpy() + # for i in range(p): + # rank_eq_one = 1. - tf.Variable(tf.cast(tf.rank(s[i] * A), tf.float32)) + # constraints = tf.stack([constraints, rank_eq_one]) + return constraints + +problem = SampleProblem(loss_fn, [u, s, v]) +optimizer = tfco.LagrangianOptimizer( + optimizer=tf.optimizers.Adagrad(learning_rate=0.1), + num_constraints=problem.num_constraints) + +var_list = [u, s, v] + list(problem.trainable_variables) + optimizer.trainable_variables() + +for i in range(1000): + optimizer.minimize(problem, var_list=var_list) + if i % 100 == 0: + print(f'step = {i}') + print(f'loss = {loss_fn()}') + # print(f'constraint = {(x + y).numpy()}') + # print(f'u = {u.numpy()}, v = {v.numpy()}') + + + diff --git a/run_hls.tcl b/run_hls.tcl index e8d476a..d3235a4 100644 --- a/run_hls.tcl +++ b/run_hls.tcl @@ -1,80 +1,13 @@ -# -# @brief Find all files in a directory and return them in a list. -# -# @param basedir The directory to start looking in pattern. -# @param pattern A pattern, as defined by the glob command, that -# the files must match. -# @param exclude_dirs_list Ignore searching in specified directories -# -# @return The list of found files. -# -proc findFiles { basedir pattern exclude_dirs_list } { - # Fix the directory name, this ensures the directory name is in the - # native format for the platform and contains a final directory seperator - set basedir [string trimright [file join [file normalize $basedir] { }]] - set fileList {} - # Look in the current directory for matching files, -type {f r} - # means ony readable normal files are looked at, -nocomplain stops - # an error being thrown if the returned list is empty - foreach fileName [glob -nocomplain -type {f r} -path $basedir $pattern] { - lappend fileList $fileName - } - # Now look for any sub direcories in the current directory - foreach dirName [glob -nocomplain -type {d r} -path $basedir *] { - # Recusively call the routine on the sub directory and append any - # new files to the results - if {[lsearch -exact ${exclude_dirs_list} $dirName] == -1} { - set subDirList [findFiles $dirName $pattern $exclude_dirs_list] - if { [llength $subDirList] > 0 } { - foreach subDirFile $subDirList { - lappend fileList $subDirFile - } - } - } - } - return $fileList -} - -# -# @brief Greps a file content and writes matches to a file. -# -# @param re Regular expression -# @param lines Number of lines to report/include after the found match -# @param fin The fin pointer -# @param fout The fout pointer -# -proc grep {re lines fin fout} { - set cnt 0 - set match false - seek $fin 0 - while {[gets $fin line] >= 0} { - if [regexp -- $re $line] { - set cnt 0 - set match true - } - if {$match && ($cnt < $lines)} { - puts $line - puts $fout $line - set cnt [expr {$cnt +1}] - } else { - set match false - } - } -} +source tcl/utils.tcl +source tcl/lstm_params.tcl set PRJ_PATH [pwd] -exec mkdir -p -- ./hls -exec mkdir -p -- ./hls/reports -cd hls +exec mkdir -p -- ./hls_prj +exec mkdir -p -- ./hls_prj/reports +cd hls_prj -# ============================================================================== -# Top function name, testbench file -# ============================================================================== -set TOP "hls_pong" -set TB "test_game" -set SRC_DIR "" ;# Or just leave it empty for including all sub-dirs too. -set SRC_LIST [list ""] ;# If empty, it will include all files in SRC_DIR subdirs +set USE_VITIS 1 # ============================================================================== # Setups # ============================================================================== @@ -86,10 +19,11 @@ set cosim 0 set export 0 set place_and_route 0 set report_info 1 +set set_max_fifo_depth 0 # ============================================================================== # HLS Synthesis Options + Platform Selection # ============================================================================== -set scheduler_effort "medium" +set scheduler_effort "high" ;# medium set relax_ii 0 set use_hlslib 0 set use_zedboard 1 @@ -104,17 +38,30 @@ if {${use_zedboard}} { set board_name "ZCU102" } # ============================================================================== -# Hardware parameters +# Top function name, testbench file # ============================================================================== - +# NOTE: The namespace must also be included. +set TB "test_lstm_svd" +set ARGV "2 4 64 32 2" +set TOP "SvdModel2LstmSDSoCV2" ;# "HlsLstmSvd" ;# "HlsSvdKernel" ;# "HlsDenseSvd" ; #"HlsKernelS" ;# "HlsGemvKernel" ;#"HlsAxisKernelU" ;#"svd::SvdModel2LstmSDSoCV2" +set SRC_DIR "" ;# Or just leave it empty for including all sub-dirs too. +set SRC_LIST [list ""] ;# If empty, it will include all files in SRC_DIR subdirs # ============================================================================== # Project name # ============================================================================== -set PROJECT_NAME "${board_name}_${TOP}" +set prefix ":" +set TOP_NO_NAMESPACE "SvdModel2LstmSDSoCV2" ;# "HlsLstmSvd" ;# "HlsSvdKernel" ;# "HlsDenseSvd" ; #"HlsKernelS" ;# "HlsGemvKernel" ; #"HlsAxisKernelU" ;# [ regsub ***=${prefix} ${TOP} "" string ] +puts ${TOP_NO_NAMESPACE} + +if {${USE_VITIS}} { + set PROJECT_NAME "vitis_${board_name}_${TOP_NO_NAMESPACE}" +} else { + set PROJECT_NAME "hls_${board_name}_${TOP_NO_NAMESPACE}" +} # ============================================================================== # Defines # ============================================================================== -# The HLS_NO_XIL_FPO_LIB flag is used to compile hlaf precision numbers. +# The HLS_NO_XIL_FPO_LIB flag is used to compile half precision numbers. set DEFINES "-DHLS_NO_XIL_FPO_LIB" append DEFINES "" @@ -124,88 +71,109 @@ if {${use_zcu104_pynq}} { } else { append DEFINES " -DAXI_PORT_WIDTH=64" } + +append_lstm_params DEFINES # append DEFINES " -DDEBUG_INTERNAL_STREAMS" # append DEFINES " -DUSE_BLAS" # ============================================================================== # Linker Flags # ============================================================================== -set LDFLAGS "-lpthread -fopenmp" +set LDFLAGS "" +# set LDFLAGS "-lpthread -fopenmp" # append LDFLAGS " /usr/local/lib/libblas.a" # ============================================================================== -# TB arguments -# ============================================================================== -set ARGV "" -# ============================================================================== # CFlags # ============================================================================== # NOTE(21/02/2019): the '-fno-builtin' is suggested by Xilinx when using # the set_directive_resource option. +if {${USE_VITIS}} { + set CXXSTD "-std=c++14" ;#"-std=c++14 -fno-builtin" ; #"-std=c++1y" +} else { + set CXXSTD "-std=c++0x -fno-builtin" +} if {${cosim}} { - set CFLAGS "-O3 -g -std=c++0x -fno-builtin -I${PRJ_PATH}/include/${SRC_DIR}/ -DCOSIM_DESIGN ${DEFINES} -I/usr/local/include" + set CFLAGS "-O3 ${CXXSTD} -I${PRJ_PATH}/include/${SRC_DIR}/ -DCOSIM_DESIGN ${DEFINES} -I/usr/local/include" } else { - set CFLAGS "-O3 -g -std=c++0x -fno-builtin -I${PRJ_PATH}/include/${SRC_DIR}/ ${DEFINES} -I/usr/local/include" + set CFLAGS "-O3 ${CXXSTD} -I${PRJ_PATH}/include/${SRC_DIR}/ ${DEFINES} -I/usr/local/include" } # ============================================================================== # Open Project and Add Files # ============================================================================== if {${reset_project}} { - open_project -reset hls_${PROJECT_NAME} + open_project -reset ${PROJECT_NAME} } else { - open_project hls_${PROJECT_NAME} + open_project ${PROJECT_NAME} } set_top ${TOP} -set HLS_REPORT_PATH "hls_${PROJECT_NAME}/solution_${TOP}/syn/report/" -set REPORT_DIR "${PRJ_PATH}/hls/reports" -set REPORT_FILE_PATH "${PRJ_PATH}/hls/reports/" -set VIVADO_LIB "C:/Xilinx/Vivado/2018.3/include/" +set HLS_REPORT_PATH "${PROJECT_NAME}/solution_${TOP}/syn/report/" +set REPORT_DIR "${PRJ_PATH}/hls_prj/reports" +set REPORT_FILE_PATH "${PRJ_PATH}/hls_prj/reports/" +# set VIVADO_LIB "C:/Xilinx/Vivado/2018.3/include/" set BLAS_LIB "C:/Users/ste/.caffe/dependencies/libraries_v140_x64_py27_1.1.0/libraries/lib/libopenblas.a" set BLAS_LIB_DIR "C:/Users/ste/.caffe/dependencies/libraries_v140_x64_py27_1.1.0/libraries/lib" # Get Source Files (1st argument: regex, 2nd argument: excluded directory) -set src_files [findFiles "${PRJ_PATH}/src/${SRC_DIR}/" "*.cpp" "${PRJ_PATH}/src/tb"] -set include_files [findFiles "${PRJ_PATH}/include/${SRC_DIR}/" "*.h" "${PRJ_PATH}/include/tb"] +set src_files [findFiles "${PRJ_PATH}/src/${SRC_DIR}/" "*.cpp" "${PRJ_PATH}/src/testbenches"] +set include_files [findFiles "${PRJ_PATH}/include/${SRC_DIR}/" "*.h" "${PRJ_PATH}/include/testbenches"] if {${reset_project}} { - foreach f ${src_files} { - add_files ${f} -cflags ${CFLAGS} - } - foreach f ${include_files} { - add_files ${f} -cflags ${CFLAGS} - } - # if {llength $SRC_LIST -eq 0} { - # foreach f ${src_files} { - # add_files ${f} -cflags ${CFLAGS} - # } - # foreach f ${include_files} { + add_files ${PRJ_PATH}/src/kernel/u_kernel.cpp -cflags ${CFLAGS} + add_files ${PRJ_PATH}/src/kernel/s_kernel.cpp -cflags ${CFLAGS} + add_files ${PRJ_PATH}/src/kernel/v_kernel.cpp -cflags ${CFLAGS} + add_files ${PRJ_PATH}/src/kernel/svd_kernel.cpp -cflags ${CFLAGS} + add_files ${PRJ_PATH}/src/layers/dense/hls/dense_svd.cpp -cflags ${CFLAGS} + add_files ${PRJ_PATH}/src/layers/lstm/hls/lstm_svd.cpp -cflags ${CFLAGS} + add_files ${PRJ_PATH}/src/hls_utils/adder_tree.cpp -cflags ${CFLAGS} + add_files ${PRJ_PATH}/src/hls_utils/hls_metaprogramming.cpp -cflags ${CFLAGS} + + add_files ${PRJ_PATH}/include/kernel/u_kernel.h -cflags ${CFLAGS} + add_files ${PRJ_PATH}/include/kernel/s_kernel.h -cflags ${CFLAGS} + add_files ${PRJ_PATH}/include/kernel/v_kernel.h -cflags ${CFLAGS} + add_files ${PRJ_PATH}/include/kernel/svd_kernel.h -cflags ${CFLAGS} + add_files ${PRJ_PATH}/include/layers/dense/hls/dense_svd.h -cflags ${CFLAGS} + add_files ${PRJ_PATH}/include/layers/lstm/hls/lstm_svd.h -cflags ${CFLAGS} + add_files ${PRJ_PATH}/include/math_utils/activation_functions.h -cflags ${CFLAGS} + add_files ${PRJ_PATH}/include/hls_utils/adder_tree.h -cflags ${CFLAGS} + add_files ${PRJ_PATH}/include/hls_utils/hls_metaprogramming.h -cflags ${CFLAGS} + add_files ${PRJ_PATH}/include/dma/svd_parameters.h -cflags ${CFLAGS} + + # foreach f ${include_files} { + # # File svd.h contains main() + # if {${f} eq "${PRJ_PATH}/include/svd.h"} { + # } else { # add_files ${f} -cflags ${CFLAGS} # } - # } else { - # foreach f ${SRC_LIST} { + # } + # foreach f ${src_files} { + # # File svd.cpp contains main() + # if {${f} eq "${PRJ_PATH}/src/svd.cpp"} { + # } else { # add_files ${f} -cflags ${CFLAGS} # } # } - # add_files ${PRJ_PATH}/src/axis_lib.cpp -cflags ${CFLAGS} - # add_files ${PRJ_PATH}/include/axis_lib.h -cflags ${CFLAGS} - # Add Testbench Files if {${csim} || ${cosim}} { # TB Files (to avoid including multiple files with main() in them) - add_files -tb ${PRJ_PATH}/src/tb/${TB}.cpp -cflags ${CFLAGS} - add_files -tb ${PRJ_PATH}/include/tb/${TB}.h -cflags ${CFLAGS} + add_files -tb ${PRJ_PATH}/src/testbenches/${TB}.cpp -cflags ${CFLAGS} + add_files -tb ${PRJ_PATH}/include/testbenches/${TB}.h -cflags ${CFLAGS} } } -open_solution "solution_${TOP}" +if {${USE_VITIS}} { + open_solution -flow_target vivado -reset "solution_${TOP_NO_NAMESPACE}" +} else { + open_solution "solution_${TOP_NO_NAMESPACE}" +} # ============================================================================== # Set Part # ============================================================================== if {${reset_project}} { if {${use_zedboard}} { # ZedBoard - set_part {xc7z020clg484-1} -tool vivado + set_part {xc7z020clg484-1} ;#-tool vivado } else { if {${use_zcu104_pynq}} { # Pynq ZCU104 Board @@ -216,11 +184,11 @@ if {${reset_project}} { create_clock -period 5 -name default } elseif {${use_zcu102_vassilis}} { # Ultrascale+ ZCU102 - set_part {xczu9eg-ffvb1156-2-i} -tool vivado + set_part {xczu9eg-ffvb1156-2-i} ;#-tool vivado create_clock -period 10 -name default } else { # ZedBoard (default) - set_part {xc7z020clg484-1} -tool vivado + set_part {xc7z020clg484-1} ;#-tool vivado create_clock -period 10 -name default } } @@ -234,29 +202,44 @@ if {${reset_project}} { # ============================================================================== # Configure HLS # ============================================================================== +if {${USE_VITIS}} { + config_compile -name_max_length=12 -pipeline_style=frp -enable_auto_rewind=1 +} else { + config_compile -name_max_length=12 +} + if {${relax_ii}} { - config_schedule -effort ${scheduler_effort} -relax_ii_for_timing=0 + config_schedule -effort ${scheduler_effort} -relax_ii_for_timing=1 } else { - config_schedule -effort ${scheduler_effort} + config_schedule -effort ${scheduler_effort} -relax_ii_for_timing=0 } -# config_sdx -target sds ;# -optimization_level 3 +# config_sdx -target sdx ;# -optimization_level 3 -if {${use_zcu104_pynq}} { - config_interface -m_axi_addr64 +if {${use_zedboard}} { + config_interface -m_axi_addr64=0 +} +if {${USE_VITIS}} { + config_interface -m_axi_auto_max_ports=1 -m_axi_offset=slave } config_core DSP48 -latency 3 -config_dataflow -default_channel pingpong +# config_dataflow -default_channel fifo ;#pingpong +if {${set_max_fifo_depth}} { + set MAX_DEPTH 65536 + config_dataflow -fifo_depth=${MAX_DEPTH} -start_fifo_depth=${MAX_DEPTH} \ + -scalar_fifo_depth=${MAX_DEPTH} -task_level_fifo_depth=${MAX_DEPTH} \ + -override_user_fifo_depth=${MAX_DEPTH} +} # ============================================================================== # Start C-Simulation # ============================================================================== if {${csim}} { if {${build_only}} { - csim_design -clean -O -compiler gcc -ldflags ${LDFLAGS} -argv ${ARGV} -setup + csim_design -clean -O -ldflags ${LDFLAGS} -argv ${ARGV} -setup } else { - csim_design -clean -O -compiler gcc -ldflags ${LDFLAGS} -argv ${ARGV} + csim_design -clean -O -ldflags ${LDFLAGS} -argv ${ARGV} } } # ============================================================================== @@ -270,7 +253,7 @@ if {${synth}} { puts "\[INFO\] Reporting information" puts "================================================================" - set FILENAME "${REPORT_FILE_PATH}/${board_name}_${TOP}.rpt" + set FILENAME "${REPORT_FILE_PATH}/${board_name}_${TOP_NO_NAMESPACE}.rpt" set fin [open ${HLS_REPORT_PATH}/${TOP}_csynth.rpt r] set fout [open ${FILENAME} a] @@ -286,15 +269,24 @@ if {${synth}} { # Start Cosimulation # ============================================================================== if {${cosim}} { - cosim_design -trace_level port -ldflags ${LDFLAGS} -argv ${ARGV} ;#-tool auto -wave_debug + + if {${USE_VITIS}} { + cosim_design -trace_level port -ldflags ${LDFLAGS} -argv ${ARGV} \ + -enable_dataflow_profiling=0 -enable_fifo_sizing=0 + # -disable_deadlock_detection + # -disable_dependency_check + } else { + cosim_design -trace_level port -ldflags ${LDFLAGS} -argv ${ARGV} ;#-tool auto -wave_debug + } + if {${report_info}} { puts "================================================================" puts "\[INFO\] Reporting information" puts "================================================================" - set REPORT_FILENAME "${REPORT_FILE_PATH}/${board_name}_${TOP}.rpt" - set HLS_REPORT_PATH "hls_${PROJECT_NAME}/solution_${TOP}/sim/report/" + set REPORT_FILENAME "${REPORT_FILE_PATH}/${board_name}_${TOP_NO_NAMESPACE}.rpt" + set HLS_REPORT_PATH "${PROJECT_NAME}/solution_${TOP_NO_NAMESPACE}/sim/report/" set fin [open ${HLS_REPORT_PATH}/${TOP}_cosim.rpt r] set fout [open ${REPORT_FILENAME} a] @@ -316,7 +308,7 @@ if {${export}} { } puts "================================================================" -puts "\[INFO\] Closing project: ./hls/hls_${PROJECT_NAME}" +puts "\[INFO\] Closing project: ./hls_prj/${PROJECT_NAME}" puts "================================================================" exit diff --git a/src/CMakeLists.txt b/src/CMakeLists.txt index 0820838..ce85d5b 100644 --- a/src/CMakeLists.txt +++ b/src/CMakeLists.txt @@ -1,34 +1,38 @@ cmake_minimum_required(VERSION 3.10) add_subdirectory(dma) add_subdirectory(kernel) -add_subdirectory(lstm) add_subdirectory(math_utils) add_subdirectory(hls_utils) add_subdirectory(testbenches) +# add_subdirectory(lstm) +# add_subdirectory(dense) +add_subdirectory(layers) # NOTE: Each library/object will have an identifier and that identifier will then # be used to link the final executable, i.e. target_link_libraries(ProjectName LibraryName) add_library(SVD_PARAMS STATIC ${CMAKE_SOURCE_DIR}/src/svd_ip.cpp) target_include_directories(SVD_PARAMS PUBLIC ${CMAKE_SOURCE_DIR}/include) -target_include_directories(SVD_PARAMS PUBLIC ${VIVADO_INCLUDE_DIRS}) +target_include_directories(SVD_PARAMS PUBLIC ${HLS_INCLUDE_DIRS}) target_include_directories(SVD_PARAMS PUBLIC ${OpenCv_INCLUDE_DIRS}) target_link_libraries(SVD_PARAMS ${OpenCv_LIBS}) target_compile_options(SVD_PARAMS PRIVATE -fno-builtin) add_library(SVD_IP STATIC ${CMAKE_SOURCE_DIR}/src/svd_ip.cpp) target_include_directories(SVD_IP PUBLIC ${CMAKE_SOURCE_DIR}/include) -target_include_directories(SVD_IP PUBLIC ${VIVADO_INCLUDE_DIRS}) +target_include_directories(SVD_IP PUBLIC ${HLS_INCLUDE_DIRS}) target_include_directories(SVD_IP PUBLIC ${OpenCv_INCLUDE_DIRS}) target_link_libraries(SVD_IP ${OpenCv_LIBS}) -target_link_libraries(SVD_IP SVD_KERNEL) target_compile_options(SVD_IP PRIVATE -fno-builtin) +target_link_libraries(SVD_IP SVD_KERNEL) add_library(SVD STATIC ${CMAKE_SOURCE_DIR}/src/svd.cpp) target_include_directories(SVD PUBLIC ${CMAKE_SOURCE_DIR}/include) -target_include_directories(SVD PUBLIC ${VIVADO_INCLUDE_DIRS}) +target_include_directories(SVD PUBLIC ${HLS_INCLUDE_DIRS}) target_include_directories(SVD PUBLIC ${OpenCv_INCLUDE_DIRS}) +target_compile_options(SVD PRIVATE -fno-builtin) target_link_libraries(SVD ${OpenCv_LIBS}) target_link_libraries(SVD SVD_IP) target_link_libraries(SVD LSTM_SVD) -target_compile_options(SVD PRIVATE -fno-builtin) +target_link_libraries(SVD LSTM_SVD_EMULATOR) +target_link_libraries(SVD SOFT_LSTM_SVD) diff --git a/src/dma/CMakeLists.txt b/src/dma/CMakeLists.txt index 7b3291d..30d20b1 100644 --- a/src/dma/CMakeLists.txt +++ b/src/dma/CMakeLists.txt @@ -2,12 +2,17 @@ cmake_minimum_required(VERSION 3.10) add_library(SVD_DMA STATIC ${CMAKE_SOURCE_DIR}/src/dma/svd_dma.cpp) target_include_directories(SVD_DMA PUBLIC ${CMAKE_SOURCE_DIR}/include) -target_include_directories(SVD_DMA PUBLIC ${VIVADO_INCLUDE_DIRS}) +target_include_directories(SVD_DMA PUBLIC ${HLS_INCLUDE_DIRS}) target_compile_options(SVD_DMA PRIVATE -fno-builtin) target_link_libraries(SVD_DMA SVD_PARAMS) add_library(WIDTH_CONVERTER STATIC ${CMAKE_SOURCE_DIR}/src/dma/width_converter.cpp) target_include_directories(WIDTH_CONVERTER PUBLIC ${CMAKE_SOURCE_DIR}/include) -target_include_directories(WIDTH_CONVERTER PUBLIC ${VIVADO_INCLUDE_DIRS}) +target_include_directories(WIDTH_CONVERTER PUBLIC ${HLS_INCLUDE_DIRS}) target_compile_options(WIDTH_CONVERTER PRIVATE -fno-builtin) -target_link_libraries(WIDTH_CONVERTER SVD_PARAMS) \ No newline at end of file +target_link_libraries(WIDTH_CONVERTER SVD_PARAMS) + +add_library(AXIS_LIB STATIC ${CMAKE_SOURCE_DIR}/src/dma/axis_lib.cpp) +target_include_directories(AXIS_LIB PUBLIC ${CMAKE_SOURCE_DIR}/include) +target_include_directories(AXIS_LIB PUBLIC ${HLS_INCLUDE_DIRS}) +target_compile_options(AXIS_LIB PRIVATE -fno-builtin) \ No newline at end of file diff --git a/src/dma/axis_lib.cpp b/src/dma/axis_lib.cpp new file mode 100644 index 0000000..40a14bf --- /dev/null +++ b/src/dma/axis_lib.cpp @@ -0,0 +1 @@ +#include "dma/axis_lib.h" \ No newline at end of file diff --git a/src/hls_utils/CMakeLists.txt b/src/hls_utils/CMakeLists.txt index e488058..e69fc07 100644 --- a/src/hls_utils/CMakeLists.txt +++ b/src/hls_utils/CMakeLists.txt @@ -2,19 +2,19 @@ cmake_minimum_required(VERSION 3.10) add_library(DOT_PROD_DSP STATIC ${CMAKE_SOURCE_DIR}/src/hls_utils/dot_prod_dsp.cpp) target_include_directories(DOT_PROD_DSP PUBLIC ${CMAKE_SOURCE_DIR}/include) -target_include_directories(DOT_PROD_DSP PUBLIC ${VIVADO_INCLUDE_DIRS}) +target_include_directories(DOT_PROD_DSP PUBLIC ${HLS_INCLUDE_DIRS}) target_include_directories(DOT_PROD_DSP PUBLIC ${OpenCv_INCLUDE_DIRS}) target_compile_options(DOT_PROD_DSP PRIVATE -fno-builtin) # target_link_libraries(DOT_PROD_DSP ${OpenCv_LIBS}) add_library(HW_TIMER STATIC ${CMAKE_SOURCE_DIR}/src/hls_utils/hw_timer.cpp) target_include_directories(HW_TIMER PUBLIC ${CMAKE_SOURCE_DIR}/include) -target_include_directories(HW_TIMER PUBLIC ${VIVADO_INCLUDE_DIRS}) +target_include_directories(HW_TIMER PUBLIC ${HLS_INCLUDE_DIRS}) target_include_directories(HW_TIMER PUBLIC ${OpenCv_INCLUDE_DIRS}) target_compile_options(HW_TIMER PRIVATE -fno-builtin) add_library(ADDER_TREE STATIC ${CMAKE_SOURCE_DIR}/src/hls_utils/adder_tree.cpp) target_include_directories(ADDER_TREE PUBLIC ${CMAKE_SOURCE_DIR}/include) -target_include_directories(ADDER_TREE PUBLIC ${VIVADO_INCLUDE_DIRS}) +target_include_directories(ADDER_TREE PUBLIC ${HLS_INCLUDE_DIRS}) target_include_directories(ADDER_TREE PUBLIC ${OpenCv_INCLUDE_DIRS}) target_compile_options(ADDER_TREE PRIVATE -fno-builtin) \ No newline at end of file diff --git a/src/kernel/CMakeLists.txt b/src/kernel/CMakeLists.txt index 39798b8..8c6616e 100644 --- a/src/kernel/CMakeLists.txt +++ b/src/kernel/CMakeLists.txt @@ -3,18 +3,19 @@ cmake_minimum_required(VERSION 3.10) add_library(U_KERNEL STATIC ${CMAKE_SOURCE_DIR}/src/kernel/u_kernel.cpp) target_include_directories(U_KERNEL PUBLIC ${CMAKE_SOURCE_DIR}/include) target_include_directories(U_KERNEL PUBLIC ${CMAKE_SOURCE_DIR}/include/kernel) -target_include_directories(U_KERNEL PUBLIC ${VIVADO_INCLUDE_DIRS}) +target_include_directories(U_KERNEL PUBLIC ${HLS_INCLUDE_DIRS}) target_compile_options(U_KERNEL PRIVATE -fno-builtin) add_library(S_KERNEL STATIC ${CMAKE_SOURCE_DIR}/src/kernel/s_kernel.cpp) target_include_directories(S_KERNEL PUBLIC ${CMAKE_SOURCE_DIR}/include) target_include_directories(S_KERNEL PUBLIC ${CMAKE_SOURCE_DIR}/include/kernel) -target_include_directories(S_KERNEL PUBLIC ${VIVADO_INCLUDE_DIRS}) +target_include_directories(S_KERNEL PUBLIC ${HLS_INCLUDE_DIRS}) target_compile_options(S_KERNEL PRIVATE -fno-builtin) add_library(V_KERNEL STATIC ${CMAKE_SOURCE_DIR}/src/kernel/v_kernel.cpp) target_include_directories(V_KERNEL PUBLIC ${CMAKE_SOURCE_DIR}/include) target_include_directories(V_KERNEL PUBLIC ${CMAKE_SOURCE_DIR}/include/kernel) +target_include_directories(V_KERNEL PUBLIC ${HLS_INCLUDE_DIRS}) target_compile_options(V_KERNEL PRIVATE -fno-builtin) add_library(SVD_KERNEL STATIC ${CMAKE_SOURCE_DIR}/src/kernel/svd_kernel.cpp) @@ -25,6 +26,15 @@ target_link_libraries(SVD_KERNEL U_KERNEL) target_link_libraries(SVD_KERNEL S_KERNEL) target_link_libraries(SVD_KERNEL V_KERNEL) + +add_library(GEMV_KERNEL STATIC ${CMAKE_SOURCE_DIR}/src/kernel/gemv_kernel.cpp) +target_include_directories(GEMV_KERNEL PUBLIC ${CMAKE_SOURCE_DIR}/include) +target_include_directories(GEMV_KERNEL PUBLIC ${CMAKE_SOURCE_DIR}/include/kernel) +target_compile_options(GEMV_KERNEL PRIVATE -fno-builtin) +target_link_libraries(GEMV_KERNEL U_KERNEL) +target_link_libraries(GEMV_KERNEL S_KERNEL) +target_link_libraries(GEMV_KERNEL V_KERNEL) + # add_library(DQNET STATIC ${CMAKE_SOURCE_DIR}/src/kernel/kernel.cpp) # target_include_directories(DQNET PUBLIC ${CMAKE_SOURCE_DIR}/include) # target_include_directories(DQNET PUBLIC ${CMAKE_SOURCE_DIR}/include/kernel) diff --git a/src/kernel/README.md b/src/kernel/README.md new file mode 100644 index 0000000..9791960 --- /dev/null +++ b/src/kernel/README.md @@ -0,0 +1,38 @@ +# Kernels + +## U-Kernel + +### HlsAxisKernelU + +To be used with external DMAs. +```c++ +void HlsAxisKernelU(const int num_refinements, + hls::stream& x_port, + hls::stream& u_port, + hls::stream& xu_port); +``` + +### HlsManySamplingsKernelU + +Compared to the previous implementation, this kernel has a different number of refinements per input. The refinements and inputs must be **ordered**. Meaning that input at index zero has the lowest amount of refinements to process. + +```c++ +void HlsManySamplingsKernelU(const hls::vector num_refinements, + hls::stream& x_port, + hls::stream& u_port, + hls::stream& xu_port); +``` + +### HlsKernelU + +Flaxible Kernel-U. + +```c++ +void HlsKernelU(const int num_active_inputs, + const int input_size, + const hls::vector num_refinements, + const bool pad_output, + hls::stream& x_port, + hls::stream& u_port, + hls::stream& xu_port +``` \ No newline at end of file diff --git a/src/kernel/gemv_kernel.cpp b/src/kernel/gemv_kernel.cpp new file mode 100644 index 0000000..1f7c1d6 --- /dev/null +++ b/src/kernel/gemv_kernel.cpp @@ -0,0 +1,49 @@ +#include "kernel/gemv_kernel.h" + +#ifdef __VITIS_HLS__ + +void HlsGemvKernel(const int num_rows, const int num_cols, + hls::stream >& x1_port, + hls::stream >& x2_port, + hls::stream >& w1_port, + hls::stream >& w2_port, + hls::stream& y1_port, + hls::stream& y2_port) { +#pragma HLS INTERFACE s_axilite port=return bundle=ctrl +#pragma HLS INTERFACE s_axilite port=num_cols bundle=ctrl +#pragma HLS INTERFACE s_axilite port=num_rows bundle=ctrl +#pragma HLS DATAFLOW + + hls::stream > x_streams[testgemv::N]; + hls::stream > w_streams[testgemv::N]; + hls::stream y_streams[testgemv::N]; +#pragma HLS ARRAY_PARTITION variable=x_streams complete +#pragma HLS ARRAY_PARTITION variable=w_streams complete +#pragma HLS ARRAY_PARTITION variable=y_streams complete + + + const int kNumTiles = num_rows / testgemv::T; + + DMA_in: + for (int i = 0; i < kNumTiles; ++i) { + for (int j = 0; j < num_cols; ++j) { +#pragma HLS PIPELINE II=1 + x_streams[0] << x1_port.read(); + x_streams[1] << x2_port.read(); + w_streams[0] << w1_port.read(); + w_streams[1] << w2_port.read(); + } + } + + svd::GemvKernel(num_rows, num_cols, + x_streams, w_streams, y_streams); + + DMA_out: + for (int i = 0; i < num_cols; ++i) { +#pragma HLS PIPELINE II=1 + y1_port.write(y_streams[0].read()); + y2_port.write(y_streams[1].read()); + } +} + +#endif diff --git a/src/kernel/s_kernel.cpp b/src/kernel/s_kernel.cpp index e69de29..12e415d 100644 --- a/src/kernel/s_kernel.cpp +++ b/src/kernel/s_kernel.cpp @@ -0,0 +1,29 @@ +#include "kernel/s_kernel.h" +#include "dma/axis_lib.h" + +#include "hls_stream.h" +#ifdef __VITIS_HLS__ +#include "hls_vector.h" +#endif + +#ifdef __VITIS_HLS__ +void HlsKernelS(const int num_active_inputs, + const int num_refinements[tests::params::N], + // const hls::vector num_refinements, + hls::stream& xu_port, + hls::stream& s_port, + hls::stream& xus_port) { +#pragma HLS INTERFACE axis port=xu_port +#pragma HLS INTERFACE axis port=s_port +#pragma HLS INTERFACE axis port=xus_port +#pragma HLS INTERFACE s_axilite port=return +#pragma HLS INTERFACE s_axilite port=num_active_inputs +#pragma HLS INTERFACE s_axilite port=num_refinements + svd::KernelS(num_active_inputs, num_refinements, xu_port, + s_port, xus_port); +} +#endif + +namespace svd { + +} // svd \ No newline at end of file diff --git a/src/kernel/svd_kernel.cpp b/src/kernel/svd_kernel.cpp index 7aabb45..74c7bca 100644 --- a/src/kernel/svd_kernel.cpp +++ b/src/kernel/svd_kernel.cpp @@ -1 +1,46 @@ -#include "kernel/svd_kernel.h" \ No newline at end of file +#include "kernel/svd_kernel.h" + +void HlsSvdKernel(const int num_active_inputs, + const int input_size, + const int output_size, + const int num_refinements[svd::svd_params::N], + hls::stream& x_port, + hls::stream& u_port, + hls::stream& s_port, + hls::stream& v_port, + hls::stream& y_port) { +#pragma HLS INTERFACE axis port=x_port +#pragma HLS INTERFACE axis port=u_port +#pragma HLS INTERFACE axis port=s_port +#pragma HLS INTERFACE axis port=v_port +#pragma HLS INTERFACE axis port=y_port +#pragma HLS INTERFACE s_axilite port=return +#pragma HLS INTERFACE s_axilite port=num_active_inputs +#pragma HLS INTERFACE s_axilite port=input_size +#pragma HLS INTERFACE s_axilite port=output_size +#pragma HLS INTERFACE s_axilite port=num_refinements +#pragma HLS DATAFLOW + svd::SvdKernel(num_active_inputs, input_size, output_size, + num_refinements, x_port, u_port, s_port, v_port, y_port); +} + +void HlsSvdKernelFixed( + hls::stream& x_port, + hls::stream& u_port, + hls::stream& s_port, + hls::stream& v_port, + hls::stream& y_port) { +#pragma HLS INTERFACE axis port=x_port +#pragma HLS INTERFACE axis port=u_port +#pragma HLS INTERFACE axis port=s_port +#pragma HLS INTERFACE axis port=v_port +#pragma HLS INTERFACE axis port=y_port +#pragma HLS INTERFACE s_axilite port=return +#pragma HLS DATAFLOW + const int kNumActiveInputs = svd::svd_params::N; + const int kInputSize = svd::svd_params::I; + const int kOutputSize = svd::svd_params::H; + const int kNumRefinements[svd::svd_params::N] = {svd::svd_params::R}; + svd::SvdKernel(kNumActiveInputs, kInputSize, kOutputSize, + kNumRefinements, x_port, u_port, s_port, v_port, y_port); +} \ No newline at end of file diff --git a/src/kernel/u_kernel.cpp b/src/kernel/u_kernel.cpp index e69de29..4f28bd3 100644 --- a/src/kernel/u_kernel.cpp +++ b/src/kernel/u_kernel.cpp @@ -0,0 +1,292 @@ +#include "kernel/u_kernel.h" +#include "kernel/gemv_kernel.h" +#include "hls_utils/adder_tree.h" +#include "dma/svd_dma.h" +#include "dma/axis_lib.h" + +#include "assert.h" +#include "ap_axi_sdata.h" +#include "hls_stream.h" +#ifdef __VITIS_HLS__ +#include "hls_vector.h" +#endif + +#ifndef __VITIS_HLS__ +void HlsKernelU(const int num_refinements, + const typename testu::params::ActivationD x_port[testu::params::N][testu::params::I], + const typename testu::params::UPortD u_port[testu::params::R * testu::params::PrunedSizeU], + typename testu::params::ActivationD xu_port[testu::params::N][testu::params::G * testu::params::R]) { +#pragma HLS INTERFACE s_axilite port=return bundle=ctrl +#pragma HLS INTERFACE s_axilite port=num_refinements bundle=ctrl +#pragma HLS INTERFACE m_axi port=x_port offset=slave depth=testu::params::I +#pragma HLS INTERFACE m_axi port=u_port offset=slave depth=testu::params::R*testu::params::PrunedSizeU +#pragma HLS INTERFACE m_axi port=xu_port offset=slave depth=testu::params::R +#pragma HLS DATAFLOW + svd::SvdStreams streams; + svd::SvdBuffers buffers; + svd::InputDMA(num_refinements, x_port, streams, buffers); + svd::StreamSplitter(num_refinements * testu::params::G * testu::params::PrunedSizeU, u_port, streams.u_dma); + U_Dispatcher: + for (int i = 0; i < num_refinements; ++i) { + for (int j = 0; j < testu::params::PeU; ++j) { + for (int k = 0; k < testu::params::PrunedSizeU / testu::params::PeU; ++k) { +#pragma HLS PIPELINE II=1 +#pragma HLS LOOP_FLATTEN + for (int g = 0; g < testu::params::G; ++g) { + streams.u[g][j].write(streams.u_dma[g].read()); + } + } + } + } + svd::KernelU(num_refinements, streams); + for (int i = 0; i < num_refinements; ++i) { + for (int j = 0; j < testu::params::N; ++j) { +#pragma HLS PIPELINE II=1 + for (int k = 0; k < testu::params::G; ++k) { + auto tmp = hlsutils::adder_tree(streams.xu[j][k]); + xu_port[j][k * num_refinements + i] = tmp; + } + } + } +} +#else +void HlsVectorKernelU(const int num_refinements, + hls::stream > &x_port, + hls::stream > &u_port, + hls::stream > &xu_port) { + const int R_test = num_refinements; + const int kNumTilesU = testu::params::I / testu::params::Tu; + const int kDepth_X = testu::params::N * kNumTilesU; + const int kDepth_U = num_refinements * kNumTilesU * testu::params::G; + const int kDepth_XU = num_refinements * testu::params::G; + +// #pragma HLS INTERFACE m_axi port=x_port bundle=x offset=slave +// #pragma HLS INTERFACE m_axi port=u_port bundle=u offset=slave +// #pragma HLS INTERFACE m_axi port=xu_port bundle=xu offset=slave +// #pragma HLS INTERFACE s_axilite port=x_port +// #pragma HLS INTERFACE s_axilite port=u_port +// #pragma HLS INTERFACE s_axilite port=xu_port + +#pragma HLS INTERFACE axis port=x_port bundle=x_dmem +#pragma HLS INTERFACE axis port=u_port bundle=u_dmem +#pragma HLS INTERFACE axis port=xu_port bundle=xu_dmem + +#pragma HLS INTERFACE s_axilite port=return +#pragma HLS INTERFACE s_axilite port=num_refinements +#pragma HLS DATAFLOW + typedef typename testu::params::ActivationD ActivationType; + typedef hls::vector VectN_Type; + + hls::stream x_streams[testu::params::N]; + hls::stream u_streams[testu::params::G]; + hls::stream xu_streams[testu::params::N][testu::params::G]; + testu::params::VectTuType x_buffer[testu::params::N][kNumTilesU]; + testu::params::VectTuType xu[testu::params::N][testu::params::G]; +#pragma HLS STREAM variable=x_streams depth=2 +#pragma HLS STREAM variable=u_streams depth=2 +#pragma HLS STREAM variable=xu_streams depth=2 +#pragma HLS ARRAY_PARTITION variable=x_streams complete dim=0 +#pragma HLS ARRAY_PARTITION variable=u_streams complete dim=0 +#pragma HLS ARRAY_PARTITION variable=xu_streams complete dim=0 +#pragma HLS ARRAY_PARTITION variable=x_buffer complete dim=1 +#pragma HLS ARRAY_PARTITION variable=xu complete dim=0 + + Store_X_Buffer: + for (int i = 0; i < testu::params::N; ++i) { + for (int j = 0; j < kNumTilesU; ++j) { +#pragma HLS PIPELINE II=1 +#pragma HLS LOOP_FLATTEN + x_buffer[i][j] = x_port.read(); // [i * kNumTilesU + j]; + } + } + Stream_X_Tiles: + for (int i = 0; i < R_test; ++i) { +#pragma HLS LOOP_TRIPCOUNT min=testu::params::R max=testu::params::R + for (int j = 0; j < kNumTilesU; ++j) { +#pragma HLS PIPELINE II=1 + for (int k = 0; k < testu::params::N; ++k) { + x_streams[k] << x_buffer[k][j]; + } + } + } + U_DMA: + for (int i = 0; i < R_test; ++i) { +#pragma HLS LOOP_TRIPCOUNT min=testu::params::R max=testu::params::R + for (int j = 0; j < kNumTilesU; ++j) { + for (int k = 0; k < testu::params::G; ++k) { +#pragma HLS PIPELINE II=1 + int u_idx = i * kNumTilesU * testu::params::G + j * testu::params::G + k; + u_streams[k] << u_port.read(); // [u_idx]; + } + } + } + U_Kernel: + for (int i = 0; i < R_test; ++i) { +#pragma HLS LOOP_TRIPCOUNT min=testu::params::R max=testu::params::R + for (int j = 0; j < kNumTilesU; ++j) { +#pragma HLS PIPELINE II=1 + testu::params::VectTuType x[testu::params::N]; +#pragma HLS ARRAY_PARTITION variable=x complete dim=0 + for (int ii = 0; ii < testu::params::N; ++ii) { + x[ii] = x_streams[ii].read(); + } + for (int k = 0; k < testu::params::G; ++k) { + testu::params::VectTuType u = u_streams[k].read(); + for (int ii = 0; ii < testu::params::N; ++ii) { + if (j == 0) { + xu[ii][k] = testu::params::VectTuType(0); + } + xu[ii][k] += u * x[ii]; + if (j == kNumTilesU - 1) { + xu_streams[ii][k] << xu[ii][k]; + } + } + } + } + } + XU_DMA: + for (int i = 0; i < R_test; ++i) { +#pragma HLS LOOP_TRIPCOUNT min=testu::params::R max=testu::params::R +#pragma HLS PIPELINE II=1 + for (int j = 0; j < testu::params::G; ++j) { + VectN_Type xu_out; + for (int k = 0; k < testu::params::N; ++k) { + xu_out[k] = xu_streams[k][j].read().reduce_add(); + } + // xu_port[i * testu::params::G + j] = xu_out; + xu_port << xu_out; + } + } +} + +void HlsAxisKernelU(const int num_refinements, + hls::stream& x_port, + hls::stream& u_port, + hls::stream& xu_port) { + const int R_test = num_refinements; + const int kNumTilesU = testu::params::I / testu::params::Tu; + const int kStreamDepth_X = 2 + kNumTilesU * testu::params::N; + const int kStreamDepth_U = 8 + kNumTilesU * testu::params::N; + const int kStreamDepth_XU = 2 + testu::params::G; +#pragma HLS INTERFACE axis port=x_port +#pragma HLS INTERFACE axis port=u_port +#pragma HLS INTERFACE axis port=xu_port +#pragma HLS INTERFACE s_axilite port=return +#pragma HLS INTERFACE s_axilite port=num_refinements +#pragma HLS DATAFLOW + typedef typename testu::params::ActivationD ActivationType; + + auto x_axis = svd::AxiStreamPort(x_port); + auto u_axis = svd::AxiStreamPort(u_port); + auto xu_axis = svd::AxiStreamPort(xu_port); + + hls::stream x_streams[testu::params::N]; + hls::stream u_streams[testu::params::G]; + hls::stream xu_streams[testu::params::N][testu::params::G]; + testu::params::VectTuType x_buffer[testu::params::N][kNumTilesU]; +#pragma HLS STREAM variable=x_streams depth=kStreamDepth_X +#pragma HLS STREAM variable=u_streams depth=kStreamDepth_U +#pragma HLS STREAM variable=xu_streams depth=kStreamDepth_XU +#pragma HLS ARRAY_PARTITION variable=x_streams complete dim=1 +#pragma HLS ARRAY_PARTITION variable=u_streams complete dim=1 +#pragma HLS ARRAY_PARTITION variable=xu_streams complete dim=1 +#pragma HLS ARRAY_PARTITION variable=xu_streams complete dim=2 +#pragma HLS ARRAY_PARTITION variable=x_buffer complete dim=1 + + Store_X_Buffer: + for (int i = 0; i < testu::params::N; ++i) { + for (int j = 0; j < kNumTilesU; ++j) { +#pragma HLS PIPELINE II=1 +#pragma HLS LOOP_FLATTEN + x_buffer[i][j] = x_axis.PopVector(); + } + } + Stream_X_Tiles: + for (int i = 0; i < R_test; ++i) { +#pragma HLS LOOP_TRIPCOUNT min=testu::params::R max=testu::params::R + for (int j = 0; j < kNumTilesU; ++j) { +#pragma HLS PIPELINE II=1 + for (int k = 0; k < testu::params::N; ++k) { + x_streams[k] << x_buffer[k][j]; + } + } + } + + U_DMA: + for (int i = 0; i < R_test; ++i) { +#pragma HLS LOOP_TRIPCOUNT min=testu::params::R max=testu::params::R + for (int j = 0; j < kNumTilesU; ++j) { + for (int k = 0; k < testu::params::G; ++k) { +#pragma HLS PIPELINE II=1 + u_streams[k] << u_axis.PopVector(); + } + } + } + + U_Kernel: + for (int i = 0; i < R_test; ++i) { +#pragma HLS LOOP_TRIPCOUNT min=testu::params::R max=testu::params::R + for (int j = 0; j < kNumTilesU; ++j) { +#pragma HLS PIPELINE II=1 + testu::params::VectTuType x[testu::params::N]; + testu::params::VectTuType xu[testu::params::N][testu::params::G]; +#pragma HLS ARRAY_PARTITION variable=x complete dim=0 +#pragma HLS ARRAY_PARTITION variable=xu complete dim=0 + for (int ii = 0; ii < testu::params::N; ++ii) { + x[ii] = x_streams[ii].read(); + } + for (int k = 0; k < testu::params::G; ++k) { + testu::params::VectTuType u = u_streams[k].read(); + for (int ii = 0; ii < testu::params::N; ++ii) { + if (j == 0) { + xu[ii][k] = testu::params::VectTuType(0); + } + xu[ii][k] += u * x[ii]; + if (j == kNumTilesU - 1) { + xu_streams[ii][k] << xu[ii][k]; + } + } + } + } + } + XU_DMA: + for (int i = 0; i < R_test; ++i) { +#pragma HLS LOOP_TRIPCOUNT min=testu::params::R max=testu::params::R +#pragma HLS PIPELINE II=1 + testu::params::VectGN_Type xu_out; + for (int j = 0; j < testu::params::G; ++j) { + for (int k = 0; k < testu::params::N; ++k) { + xu_out[j * testu::params::N + k] = xu_streams[k][j].read().reduce_add(); + } + } + const bool kIsLast = (i == R_test - 1) ? true : false; + xu_axis.PushVector(xu_out, kIsLast); + } +} + + +void HlsKernelU(const int num_active_inputs, + const int input_size, + const int num_refinements[testu::params::N], + // const hls::vector num_refinements, + const bool pad_output, + hls::stream& x_port, + hls::stream& u_port, + hls::stream& xu_port) { +#pragma HLS INTERFACE s_axilite port=return +#pragma HLS INTERFACE s_axilite port=num_active_inputs +#pragma HLS INTERFACE s_axilite port=input_size +#pragma HLS INTERFACE s_axilite port=num_refinements +#pragma HLS INTERFACE s_axilite port=pad_output +#pragma HLS INTERFACE axis port=x_port +#pragma HLS INTERFACE axis port=u_port +#pragma HLS INTERFACE axis port=xu_port + svd::KernelU(num_active_inputs, input_size, num_refinements, + pad_output, x_port, u_port, xu_port); +} + +#endif + +namespace svd { + +} // svd \ No newline at end of file diff --git a/src/kernel/v_kernel.cpp b/src/kernel/v_kernel.cpp index e69de29..8d92f5c 100644 --- a/src/kernel/v_kernel.cpp +++ b/src/kernel/v_kernel.cpp @@ -0,0 +1,37 @@ +#include "kernel/v_kernel.h" + +#include "hls_stream.h" +#ifdef __VITIS_HLS__ +#include "hls_vector.h" +#endif + +#include "assert.h" + +#ifndef __VITIS_HLS__ +#else +void HlsKernelV(const int num_active_inputs, + const int output_size, + const int num_refinements[testv::params::N], + // hls::vector& num_refinements, + hls::stream& xus_port, + hls::stream& v_port, + hls::stream& y_port) { +#pragma HLS INTERFACE axis port=xus_port +#pragma HLS INTERFACE axis port=v_port +#pragma HLS INTERFACE axis port=y_port +#pragma HLS INTERFACE s_axilite port=return +#pragma HLS INTERFACE s_axilite port=num_active_inputs +#pragma HLS INTERFACE s_axilite port=output_size +#pragma HLS INTERFACE s_axilite port=num_refinements +#pragma HLS DATAFLOW +#pragma HLS ARRAY_PARTITION variable=num_refinements complete dim=1 + + + svd::KernelV(num_active_inputs, output_size, + num_refinements, xus_port, v_port, y_port); + + + // svd::KernelV(num_active_inputs, output_size, + // num_refinements, xus_port, v_port, y_port); +} +#endif // end __VITIS_HLS__ diff --git a/src/layers/CMakeLists.txt b/src/layers/CMakeLists.txt new file mode 100644 index 0000000..58f13b7 --- /dev/null +++ b/src/layers/CMakeLists.txt @@ -0,0 +1,4 @@ +cmake_minimum_required(VERSION 3.10) + +add_subdirectory(dense) +add_subdirectory(lstm) \ No newline at end of file diff --git a/src/layers/dense/CMakeLists.txt b/src/layers/dense/CMakeLists.txt new file mode 100644 index 0000000..9e7059b --- /dev/null +++ b/src/layers/dense/CMakeLists.txt @@ -0,0 +1,9 @@ +cmake_minimum_required(VERSION 3.10) +add_subdirectory(hls) +add_subdirectory(sw) + +# add_library(LSTM_DATA_HANDLER STATIC ${CMAKE_SOURCE_DIR}/src/lstm/lstm_data_handler.cpp) +# target_include_directories(LSTM_DATA_HANDLER PUBLIC ${CMAKE_SOURCE_DIR}/include) +# target_include_directories(LSTM_DATA_HANDLER PUBLIC ${HLS_INCLUDE_DIRS}) +# target_include_directories(LSTM_DATA_HANDLER PUBLIC ${OpenCv_INCLUDE_DIRS}) +# target_link_libraries(LSTM_DATA_HANDLER ${OpenCv_LIBS}) \ No newline at end of file diff --git a/src/layers/dense/hls/CMakeLists.txt b/src/layers/dense/hls/CMakeLists.txt new file mode 100644 index 0000000..4e919f3 --- /dev/null +++ b/src/layers/dense/hls/CMakeLists.txt @@ -0,0 +1,15 @@ +cmake_minimum_required(VERSION 3.10) + +add_library(DENSE_SVD STATIC ${CMAKE_SOURCE_DIR}/src/layers/dense/hls/dense_svd.cpp) +target_include_directories(DENSE_SVD PUBLIC ${CMAKE_SOURCE_DIR}/include) +target_include_directories(DENSE_SVD PUBLIC ${HLS_INCLUDE_DIRS}) +target_include_directories(DENSE_SVD PUBLIC ${OpenCv_INCLUDE_DIRS}) +target_link_libraries(DENSE_SVD ${OpenCv_LIBS}) + +# add_library(SOFT_LSTM_SVD STATIC ${CMAKE_SOURCE_DIR}/src/lstm/sw/soft_lstm_svd.cpp) +# target_include_directories(SOFT_LSTM_SVD PUBLIC ${CMAKE_SOURCE_DIR}/include) +# target_include_directories(SOFT_LSTM_SVD PUBLIC ${HLS_INCLUDE_DIRS}) +# target_include_directories(SOFT_LSTM_SVD PUBLIC ${OpenCv_INCLUDE_DIRS}) +# target_link_libraries(SOFT_LSTM_SVD ${OpenCv_LIBS}) +# target_link_libraries(SOFT_LSTM_SVD BLAS_UTILS) +# target_link_libraries(SOFT_LSTM_SVD ACTIVATION_FUNCTIONS) diff --git a/src/layers/dense/hls/dense_svd.cpp b/src/layers/dense/hls/dense_svd.cpp new file mode 100644 index 0000000..6ce1ef4 --- /dev/null +++ b/src/layers/dense/hls/dense_svd.cpp @@ -0,0 +1,75 @@ +#include "layers/dense/hls/dense_svd.h" + +#ifndef __VITIS_HLS__ +#else +void HlsDenseSvd(const int num_active_inputs, + const int input_size, + const int output_size, + const int num_refinements[svd::dense_params::N], + // const hls::vector num_refinements, + hls::stream& x_port, + hls::stream& u_port, + hls::stream& s_port, + hls::stream& v_port, + hls::stream& bias_port, + hls::stream& y_port) { +#pragma HLS INTERFACE s_axilite port=return bundle=ctrl +#pragma HLS INTERFACE s_axilite port=num_active_inputs bundle=ctrl +#pragma HLS INTERFACE s_axilite port=input_size bundle=ctrl +#pragma HLS INTERFACE s_axilite port=output_size bundle=ctrl +#pragma HLS INTERFACE s_axilite port=num_refinements bundle=ctrl +#pragma HLS INTERFACE axis port=x_port +#pragma HLS INTERFACE axis port=u_port +#pragma HLS INTERFACE axis port=s_port +#pragma HLS INTERFACE axis port=v_port +#pragma HLS INTERFACE axis port=bias_port +#pragma HLS INTERFACE axis port=y_port + svd::DenseSvdKernel(num_active_inputs, input_size, + output_size, num_refinements, x_port, u_port, s_port, v_port, bias_port, + y_port); +} + +/** + * @brief HLS Wrapper that calls a DenseSvd accelerator. + * + * Useful in Cosimulation. + * + * @param[in] num_active_inputs The number of active inputs + * @param[in] input_size The input size + * @param[in] output_size The output size + * @param[in] num_refinements The number of refinements + * @param[in] x The input array. Shape: (N, I) + * @param[in] u The u array. Shape: (R, I, G) + * @param[in] s The s array. Shape: (R, N, G) + * @param[in] v The v array. Shape: (R, H, G) + * @param[in] bias The bias array. Shape: (N, G, H) + * @param y The y array. Shape: (N, G, H) + */ +void HlsWrapperDenseSvd(const int num_active_inputs, + const int input_size, + const int output_size, + const int num_refinements[svd::dense_params::N], + const typename svd::dense_params::ActivationD* x, + const typename svd::dense_params::ActivationD* u, + const typename svd::dense_params::ActivationD* s, + const typename svd::dense_params::ActivationD* v, + const typename svd::dense_params::ActivationD* bias, + typename svd::dense_params::ActivationD* y) { +#ifdef __VITIS_HLS__ + hls::stream x_port("x_port"); + hls::stream u_port("u_port"); + hls::stream s_port("s_port"); + hls::stream v_port("v_port"); + hls::stream bias_port("bias_port"); + hls::stream y_port("y_port"); + svd::SetDenseSvdInputs(num_active_inputs, input_size, + output_size, num_refinements, x, u, s, v, bias, x_port, u_port, s_port, + v_port, bias_port); + HlsDenseSvd(num_active_inputs, input_size, output_size, num_refinements, + x_port, u_port, s_port, v_port, bias_port, y_port); + svd::GetSvdKernelOutputs(num_active_inputs, output_size, + y_port, y); +#endif // __VITIS_HLS__ +} + +#endif \ No newline at end of file diff --git a/src/layers/dense/sw/CMakeLists.txt b/src/layers/dense/sw/CMakeLists.txt new file mode 100644 index 0000000..0bb5b26 --- /dev/null +++ b/src/layers/dense/sw/CMakeLists.txt @@ -0,0 +1,15 @@ +cmake_minimum_required(VERSION 3.10) + +# add_library(SOFT_LSTM STATIC ${CMAKE_SOURCE_DIR}/src/lstm/sw/soft_lstm.cpp) +# target_include_directories(SOFT_LSTM PUBLIC ${CMAKE_SOURCE_DIR}/include) +# target_include_directories(SOFT_LSTM PUBLIC ${HLS_INCLUDE_DIRS}) +# target_include_directories(SOFT_LSTM PUBLIC ${OpenCv_INCLUDE_DIRS}) +# target_link_libraries(SOFT_LSTM ${OpenCv_LIBS}) + +# add_library(SOFT_LSTM_SVD STATIC ${CMAKE_SOURCE_DIR}/src/lstm/sw/soft_lstm_svd.cpp) +# target_include_directories(SOFT_LSTM_SVD PUBLIC ${CMAKE_SOURCE_DIR}/include) +# target_include_directories(SOFT_LSTM_SVD PUBLIC ${HLS_INCLUDE_DIRS}) +# target_include_directories(SOFT_LSTM_SVD PUBLIC ${OpenCv_INCLUDE_DIRS}) +# target_link_libraries(SOFT_LSTM_SVD ${OpenCv_LIBS}) +# target_link_libraries(SOFT_LSTM_SVD BLAS_UTILS) +# target_link_libraries(SOFT_LSTM_SVD ACTIVATION_FUNCTIONS) diff --git a/src/lstm/CMakeLists.txt b/src/layers/lstm/CMakeLists.txt similarity index 63% rename from src/lstm/CMakeLists.txt rename to src/layers/lstm/CMakeLists.txt index 63b7cc5..eea7dd9 100644 --- a/src/lstm/CMakeLists.txt +++ b/src/layers/lstm/CMakeLists.txt @@ -2,8 +2,8 @@ cmake_minimum_required(VERSION 3.10) add_subdirectory(hls) add_subdirectory(sw) -add_library(LSTM_DATA_HANDLER STATIC ${CMAKE_SOURCE_DIR}/src/lstm/lstm_data_handler.cpp) +add_library(LSTM_DATA_HANDLER STATIC ${CMAKE_SOURCE_DIR}/src/layers/lstm/lstm_data_handler.cpp) target_include_directories(LSTM_DATA_HANDLER PUBLIC ${CMAKE_SOURCE_DIR}/include) -target_include_directories(LSTM_DATA_HANDLER PUBLIC ${VIVADO_INCLUDE_DIRS}) +target_include_directories(LSTM_DATA_HANDLER PUBLIC ${HLS_INCLUDE_DIRS}) target_include_directories(LSTM_DATA_HANDLER PUBLIC ${OpenCv_INCLUDE_DIRS}) target_link_libraries(LSTM_DATA_HANDLER ${OpenCv_LIBS}) \ No newline at end of file diff --git a/src/lstm/README.md b/src/layers/lstm/README.md similarity index 100% rename from src/lstm/README.md rename to src/layers/lstm/README.md diff --git a/src/layers/lstm/hls/CMakeLists.txt b/src/layers/lstm/hls/CMakeLists.txt new file mode 100644 index 0000000..fcaa0ca --- /dev/null +++ b/src/layers/lstm/hls/CMakeLists.txt @@ -0,0 +1,30 @@ +cmake_minimum_required(VERSION 3.10) + +add_library(LSTM_HARDWARE STATIC ${CMAKE_SOURCE_DIR}/src/layers/lstm/hls/lstm_hardware.cpp) +target_include_directories(LSTM_HARDWARE PUBLIC ${CMAKE_SOURCE_DIR}/include) +target_include_directories(LSTM_HARDWARE PUBLIC ${HLS_INCLUDE_DIRS}) +target_include_directories(LSTM_HARDWARE PUBLIC ${OpenCv_INCLUDE_DIRS}) +target_link_libraries(LSTM_HARDWARE ${OpenCv_LIBS}) + +add_library(LSTM_SVD STATIC ${CMAKE_SOURCE_DIR}/src/layers/lstm/hls/lstm_svd.cpp) +target_include_directories(LSTM_SVD PUBLIC ${CMAKE_SOURCE_DIR}/include) +target_include_directories(LSTM_SVD PUBLIC ${HLS_INCLUDE_DIRS}) +target_include_directories(LSTM_SVD PUBLIC ${OpenCv_INCLUDE_DIRS}) +target_link_libraries(LSTM_SVD ${OpenCv_LIBS}) +target_link_libraries(LSTM_SVD ${OpenCv_LIBS}) +# target_link_libraries(LSTM_SVD SVD_PARAMS) +# target_link_libraries(LSTM_SVD SVD_DMA) +# target_link_libraries(LSTM_SVD U_KERNEL) +# target_link_libraries(LSTM_SVD S_KERNEL) +# target_link_libraries(LSTM_SVD V_KERNEL) +# target_link_libraries(LSTM_SVD ACTIVATION_FUNCTIONS) +# target_link_libraries(LSTM_SVD HLS_DEBUGGING) + + +set(LSTM_SVD_EMULATOR_H ${CMAKE_SOURCE_DIR}/include/math_utils/activation_functions.h) +add_library(LSTM_SVD_EMULATOR STATIC ${CMAKE_SOURCE_DIR}/src/layers/lstm/hls/lstm_svd_emulator.cpp ${LSTM_SVD_EMULATOR_H}) +target_include_directories(LSTM_SVD_EMULATOR PUBLIC ${CMAKE_SOURCE_DIR}/include) +target_include_directories(LSTM_SVD_EMULATOR PUBLIC ${HLS_INCLUDE_DIRS}) +target_include_directories(LSTM_SVD_EMULATOR PUBLIC ${OpenCv_INCLUDE_DIRS}) +target_link_libraries(LSTM_SVD_EMULATOR ${OpenCv_LIBS}) +# target_link_libraries(LSTM_SVD_EMULATOR ACTIVATION_FUNCTIONS) \ No newline at end of file diff --git a/src/lstm/hls/lstm_hardware.cpp b/src/layers/lstm/hls/lstm_hardware.cpp similarity index 99% rename from src/lstm/hls/lstm_hardware.cpp rename to src/layers/lstm/hls/lstm_hardware.cpp index 33939fd..8693aa1 100644 --- a/src/lstm/hls/lstm_hardware.cpp +++ b/src/layers/lstm/hls/lstm_hardware.cpp @@ -36,12 +36,15 @@ * streams * *****************************************************************************/ -#include "lstm/hls/lstm_hardware.h" -#include "dma/svd_dma.h" #include "svd_params.h" +#include "layers/lstm/hls/lstm_hardware.h" +#include "dma/svd_dma.h" #include "hls_math.h" #include "hls_half.h" +#include "assert.h" + +#include template void print_matrix(const svd::ActivationD matrix[BramRows][BramCols]) { @@ -287,11 +290,10 @@ void gemm_kernel(const bool execute, } break; case 1: { +#ifndef __VITIS_HLS__ if (accumulate) { #pragma HLS DATAFLOW ActivationD c_tmp[M][N]; -// #pragma HLS RESOURCE variable=c_tmp core=RAM_2P - hls::matrix_multiply_top(a, b, c); } +#endif } break; case 2: { @@ -1844,11 +1847,11 @@ void svd_fpga_lstm(const svd::ActivationD *x, const svd::ActivationD *c_rec, svd::ActivationD *c_cur, svd::ActivationD *out) { -#ifndef SDS_DESIGN const int kInputDepth = INPUT_SIZE; const int kHiddenDepth = HIDDEN_SIZE; const int kCurGateDepth = 4 * INPUT_SIZE * HIDDEN_SIZE; const int kRecGateDepth = 4 * HIDDEN_SIZE * HIDDEN_SIZE; +#ifndef SDS_DESIGN #pragma HLS INTERFACE s_axilite port=return bundle=ctrl #pragma HLS INTERFACE m_axi port=x depth=kInputDepth #pragma HLS INTERFACE m_axi port=h depth=kHiddenDepth @@ -1869,8 +1872,8 @@ void svd_fpga_lstm(const svd::ActivationD *x, svd::ActivationD rec_y[HIDDEN_SIZE * kNumGates]; #pragma HLS ARRAY_PARTITION variable=cur_y block factor=kNumGates #pragma HLS ARRAY_PARTITION variable=rec_y block factor=kNumGates -#pragma HLS STREAM variable=cur_y depth=HIDDEN_SIZE -#pragma HLS STREAM variable=rec_y depth=HIDDEN_SIZE +#pragma HLS STREAM variable=cur_y depth=kHiddenDepth +#pragma HLS STREAM variable=rec_y depth=kHiddenDepth const bool kWritebackOnce = true; const int kCurM = HIDDEN_SIZE * kNumGates; @@ -2287,7 +2290,7 @@ void dummy_gemm(svd::DmaInterfaceD a[2], svd::DmaInterfaceD b[2], svd::DmaInterf } } -#if 1 +#if 0 void dummy_dispatcher(hls::stream > &x, hls::stream > y[4]) { const int kNumInputElem = 32; const int kNumPE = 4; @@ -2315,7 +2318,9 @@ void test_dispatcher() { x_stream.write(x[i]); } +#ifndef __VITIS_HLS__ std::cout << "[Dispatcher] Running IP. x_stream.size() = " << x_stream.size() << "\n"; +#endif hls::stream > y_stream[kNumPE]; dummy_dispatcher(x_stream, y_stream); diff --git a/src/layers/lstm/hls/lstm_svd.cpp b/src/layers/lstm/hls/lstm_svd.cpp new file mode 100644 index 0000000..8e5d65a --- /dev/null +++ b/src/layers/lstm/hls/lstm_svd.cpp @@ -0,0 +1,511 @@ +#include "layers/lstm/hls/lstm_svd.h" +#include "layers/dense/hls/dense_svd.h" +#include "svd_params.h" +#include "dma/svd_dma.h" +#include "kernel/u_kernel.h" +#include "kernel/s_kernel.h" +#include "kernel/v_kernel.h" +#include "math_utils/activation_functions.h" +#include "hls_utils/hls_debugging.h" + +#include "hls_stream.h" +#include "ap_int.h" +#include "assert.h" + +#include + +namespace svd { + +void SvdModel2LstmSDSoCV2( + const svd::ActivationD x1_port[INPUT_SIZE], + const svd::ActivationD x2_port[INPUT_SIZE], + const svd::ActivationD h_t1_prev_port[HIDDEN_SIZE], + const svd::ActivationD h_t2_prev_port[HIDDEN_SIZE], + const svd::ActivationD c_t1_prev_port[HIDDEN_SIZE], + const svd::ActivationD c_t2_prev_port[HIDDEN_SIZE], + const ap_uint *u_cur_port, // [NUM_ITERATIONS*4*INPUT_SIZE / NUM_TILES_U * (NUM_TILES_U - NUM_ZERO_TILES_U)], + const ap_uint *u_rec_port, // [NUM_ITERATIONS*4*HIDDEN_SIZE / NUM_TILES_U * (NUM_TILES_U - NUM_ZERO_TILES_U)], + const ap_uint *v_port, // [NUM_ITERATIONS*4*2*HIDDEN_SIZE / NUM_TILES_V * (NUM_TILES_V - NUM_ZERO_TILES_V)], + const ap_uint *s1_port, // [NUM_ITERATIONS*8], + const ap_uint *s2_port, // [NUM_ITERATIONS*8], + const svd::WeightD bias1_port[4 * HIDDEN_SIZE], + const svd::WeightD bias2_port[4 * HIDDEN_SIZE], + const ap_uint nz_v_port[NUM_ITERATIONS * 8], + const ap_uint nz_u_port[NUM_ITERATIONS * 8], + svd::ActivationD h_t1_curr_port[HIDDEN_SIZE], + svd::ActivationD h_t2_curr_port[HIDDEN_SIZE], + svd::ActivationD c_t1_curr_port[HIDDEN_SIZE], + svd::ActivationD c_t2_curr_port[HIDDEN_SIZE] +#ifdef DEBUG_FIFOS + , + svd::CounterD *counters_port, + svd::CounterD *clk_count_port +#endif + ) { + hlsutils::Log(0, "[INFO] Running SvdModel2LstmSDSoCV2."); + const int kNumGates = 8; + const int kNumCurGates = 4; + const int kNumRecGates = 4; + const int kInputLength = INPUT_SIZE; + const int kOutputLength = HIDDEN_SIZE; + const int kNumTilesU = NUM_TILES_U; + const int kNumTilesV = NUM_TILES_V; + const int kNumZeroTilesU = NUM_ZERO_TILES_U; + const int kNumZeroTilesV = NUM_ZERO_TILES_V; + const int kNumIter = NUM_ITERATIONS; + const int kNumTimesteps = NUM_TIMESTEPS; + const int kNumNonZeroTilesU = kNumTilesU - kNumZeroTilesU; + const int kNumNonZeroTilesV = kNumTilesV - kNumZeroTilesV; + const int kTileSizeUCurrent = kInputLength / kNumTilesU; + const int kTileSizeURecur = kOutputLength / kNumTilesU; + const int kTileSizeV = kOutputLength / kNumTilesV; + assert(kNumTilesU % 2 == 0); + assert(kNumTilesV % 2 == 0); + // assert(kNumZeroTilesU % 2 == 0); + // assert(kNumZeroTilesV % 2 == 0); + // assert(kNumIter % 2 == 0); + hlsutils::Log(0, "[INFO] asserts passed."); + + const int kTileSizeU = kInputLength / kNumTilesU; + const int kPrunedLengthU = kInputLength - kNumZeroTilesU * kTileSizeU; + const int kPrunedLengthV = kOutputLength - kNumZeroTilesV * kTileSizeV; + const int kInputLengthPruned = kInputLength - kTileSizeU * kNumZeroTilesU; + const int kOutputLengthPrunedU = kOutputLength - kOutputLength / kNumTilesU * kNumZeroTilesU; + const int kOutputLengthPrunedV = kOutputLength - kOutputLength / kNumTilesV * kNumZeroTilesV; + const int kNumSamples = NUM_SAMPLES; // Used for cosimulation only + const int kNumReadsR = 8 * kNumIter; + const int kNumReadsC = 8 * kNumIter; + const int kAxiDepthR = kInputLength; + const int kAxiPortDepthX = (kInputLength * kNumTimesteps) * kNumSamples; + const int kAxiDepthU = (kNumIter * 8 * kPrunedLengthU) * kNumSamples; + const int kAxiDepthV = (kNumIter * 8 * kPrunedLengthV) * kNumSamples; + const int kAxiDepthS = (kNumIter * 8 * 2) * kNumSamples; + const int kAxiDepthCombinationsR = kNumReadsR * kNumSamples; + const int kAxiDepthCombinationsC = kNumReadsC * kNumSamples; +#ifndef SDS_DESIGN +#pragma HLS INTERFACE s_axilite port=return bundle=ctrl + + const int kUSize = kNumIter*(kNumCurGates * kInputLengthPruned + kNumRecGates * kOutputLengthPrunedU); + const int kVSize = kNumIter*(kNumCurGates * kOutputLengthPrunedV + kNumRecGates * kOutputLengthPrunedV); + const int kSSize = kNumIter * 2 * (kNumCurGates + kNumRecGates); + + const int kUCurSize = kNumIter * kNumCurGates * kInputLengthPruned; + const int kURecSize = kNumIter * kNumRecGates * kOutputLengthPrunedU; + + const int kUcurPortDepth = kUCurSize; + const int kUrecPortDepth = kURecSize; + const int kVportDepth = kVSize; + const int kS1portDepth = kSSize / 2; + const int kS2portDepth = kSSize / 2; +// #pragma HLS INTERFACE m_axi port=u_cur_port offset=slave depth=kUcurPortDepth bundle=u_cur_dmem +// #pragma HLS INTERFACE m_axi port=u_rec_port offset=slave depth=kUrecPortDepth bundle=u_rec_dmem +// #pragma HLS INTERFACE m_axi port=v_port offset=slave depth=kVportDepth bundle=v_dmem +// #pragma HLS INTERFACE m_axi port=s1_port offset=slave depth=kS1portDepth bundle=s1_dmem +// #pragma HLS INTERFACE m_axi port=s2_port offset=slave depth=kS2portDepth bundle=s2_dmem +#pragma HLS INTERFACE axis port=u_cur_port +#pragma HLS INTERFACE axis port=u_rec_port +#pragma HLS INTERFACE axis port=v_port +#pragma HLS INTERFACE axis port=s1_port +#pragma HLS INTERFACE axis port=s2_port + +#pragma HLS INTERFACE axis port=x1_port +#pragma HLS INTERFACE axis port=x2_port +#pragma HLS INTERFACE axis port=bias1_port +#pragma HLS INTERFACE axis port=bias2_port +#pragma HLS INTERFACE axis port=nz_v_port +#pragma HLS INTERFACE axis port=nz_u_port +#pragma HLS INTERFACE axis port=h_t1_prev_port +#pragma HLS INTERFACE axis port=h_t2_prev_port +#pragma HLS INTERFACE axis port=h_t1_curr_port +#pragma HLS INTERFACE axis port=h_t2_curr_port +#pragma HLS INTERFACE axis port=c_t1_prev_port +#pragma HLS INTERFACE axis port=c_t2_prev_port +#pragma HLS INTERFACE axis port=c_t1_curr_port +#pragma HLS INTERFACE axis port=c_t2_curr_port +#endif // SDS_DESIGN + +#pragma HLS DATAFLOW + // =========================================================================== + // Streams Depth Sizing + // =========================================================================== + // NOTE: We divide the FIFO depths by a certain factor to save BRAMs. Be aware + // that a wrong factor could lead to deadlocks! + const int kFIFOdepthDivider = 8; + const int kStreamDepthIter = kNumIter / kFIFOdepthDivider; + const int kFIFOdepthFactor = kNumIter * 2; + const int kStreamDepthUCurrent = kNumIter * kTileSizeUCurrent / kFIFOdepthFactor == 0 ? 2 : kNumIter * kTileSizeUCurrent / kFIFOdepthFactor; + const int kStreamDepthURecurrent = kNumIter * kTileSizeURecur / kFIFOdepthFactor == 0 ? 2 : kNumIter * kTileSizeURecur / kFIFOdepthFactor; + const int kStreamDepthV = kNumIter * kNumTilesV / kFIFOdepthFactor == 0 ? 2 : kNumIter * kNumTilesV / kFIFOdepthFactor; + const int kTileAccStreamDepth = 2; + const int kOutStreamDepth = 2; // kNumIter * kTileSizeV; + // =========================================================================== + // Current streams + // =========================================================================== + svd::WeightStream cur_u_streams[kNumCurGates][kNumNonZeroTilesU]; + svd::WeightStream cur_v_streams[kNumCurGates][kTileSizeV]; // [kNumNonZeroTilesV]; + svd::ActivationStream cur_dot1_streams[kNumCurGates]; + svd::ActivationStream cur_dot2_streams[kNumCurGates]; + svd::ActivationStream cur_out1_streams[kNumCurGates][kNumNonZeroTilesV]; + svd::ActivationStream cur_out2_streams[kNumCurGates][kNumNonZeroTilesV]; + svd::ActivationStream cur_acc1_streams[kNumCurGates][kTileSizeV]; // [kNumTilesV]; + svd::ActivationStream cur_acc2_streams[kNumCurGates][kTileSizeV]; // [kNumTilesV]; + // =========================================================================== + // Recur streams + // =========================================================================== + svd::WeightStream rec_u_streams[kNumRecGates][kNumNonZeroTilesU]; + svd::WeightStream rec_v_streams[kNumRecGates][kTileSizeV]; // [kNumNonZeroTilesV]; + svd::ActivationStream rec_dot1_streams[kNumRecGates]; + svd::ActivationStream rec_dot2_streams[kNumRecGates]; + svd::ActivationStream rec_out1_streams[kNumRecGates][kNumNonZeroTilesV]; + svd::ActivationStream rec_out2_streams[kNumRecGates][kNumNonZeroTilesV]; + svd::ActivationStream rec_acc1_streams[kNumRecGates][kTileSizeV]; // [kNumTilesV]; + svd::ActivationStream rec_acc2_streams[kNumRecGates][kTileSizeV]; // [kNumTilesV]; + // =========================================================================== + // Scalar streams + // =========================================================================== + svd::WeightStream gates_s1_streams[kNumGates]; // used for both curr and recur + svd::WeightStream gates_s2_streams[kNumGates]; // used for both curr and recur + // =========================================================================== + // Current input streams + // =========================================================================== + svd::ActivationStream x1_streams[kNumCurGates][kNumNonZeroTilesU]; + svd::ActivationStream x2_streams[kNumCurGates][kNumNonZeroTilesU]; + // =========================================================================== + // Recurrent input streams + // =========================================================================== + svd::ActivationStream h1_streams[kNumRecGates][kNumNonZeroTilesU]; + svd::ActivationStream h2_streams[kNumRecGates][kNumNonZeroTilesU]; + // =========================================================================== + // Zero Combinations DMA + // =========================================================================== + // NOTE: We divide the FIFO depths by a certain factor to save BRAMs. Be aware + // that a wrong factor could lead to deadlocks! + hls::stream > nz_v_stream1_cur[kNumCurGates]; + hls::stream > nz_v_stream1_rec[kNumRecGates]; + hls::stream > nz_v_stream2_cur[kNumCurGates]; + hls::stream > nz_v_stream2_rec[kNumRecGates]; + hls::stream > nz_u_stream1_cur[kNumCurGates]; + hls::stream > nz_u_stream1_rec[kNumRecGates]; + hls::stream > nz_u_stream2_cur[kNumCurGates]; + hls::stream > nz_u_stream2_rec[kNumRecGates]; +#pragma HLS STREAM depth=kStreamDepthIter variable=nz_v_stream1_cur +#pragma HLS STREAM depth=kStreamDepthIter variable=nz_v_stream1_rec +#pragma HLS STREAM depth=kStreamDepthIter variable=nz_v_stream2_cur +#pragma HLS STREAM depth=kStreamDepthIter variable=nz_v_stream2_rec +#pragma HLS STREAM depth=kStreamDepthIter variable=nz_u_stream1_cur +#pragma HLS STREAM depth=kStreamDepthIter variable=nz_u_stream1_rec +#pragma HLS STREAM depth=kStreamDepthIter variable=nz_u_stream2_cur +#pragma HLS STREAM depth=kStreamDepthIter variable=nz_u_stream2_rec + +#pragma HLS STREAM variable=x1_streams depth=kStreamDepthUCurrent // dim=2 +#pragma HLS STREAM variable=x2_streams depth=kStreamDepthUCurrent // dim=2 +#pragma HLS STREAM variable=h1_streams depth=kStreamDepthURecurrent // dim=2 +#pragma HLS STREAM variable=h2_streams depth=kStreamDepthURecurrent // dim=2 + +#pragma HLS STREAM variable=cur_u_streams depth=kStreamDepthUCurrent // dim=2 +#pragma HLS STREAM variable=rec_u_streams depth=kStreamDepthURecurrent // dim=2 +#pragma HLS STREAM variable=cur_v_streams depth=kStreamDepthV // dim=2 +#pragma HLS STREAM variable=rec_v_streams depth=kStreamDepthV // dim=2 + +#pragma HLS STREAM variable=gates_s1_streams depth=kStreamDepthIter +#pragma HLS STREAM variable=gates_s2_streams depth=kStreamDepthIter + +#pragma HLS STREAM variable=cur_dot1_streams depth=kStreamDepthIter +#pragma HLS STREAM variable=cur_dot2_streams depth=kStreamDepthIter +#pragma HLS STREAM variable=rec_dot1_streams depth=kStreamDepthIter +#pragma HLS STREAM variable=rec_dot2_streams depth=kStreamDepthIter +#pragma HLS STREAM variable=cur_acc1_streams depth=kTileAccStreamDepth // dim=2 +#pragma HLS STREAM variable=cur_acc2_streams depth=kTileAccStreamDepth // dim=2 +#pragma HLS STREAM variable=rec_acc1_streams depth=kTileAccStreamDepth // dim=2 +#pragma HLS STREAM variable=rec_acc2_streams depth=kTileAccStreamDepth // dim=2 + +#pragma HLS STREAM variable=cur_out1_streams depth=kOutStreamDepth // dim=2 +#pragma HLS STREAM variable=cur_out2_streams depth=kOutStreamDepth // dim=2 +#pragma HLS STREAM variable=rec_out1_streams depth=kOutStreamDepth // dim=2 +#pragma HLS STREAM variable=rec_out2_streams depth=kOutStreamDepth // dim=2 + // =========================================================================== + // Partitioning + // =========================================================================== +#ifndef __VITIS_HLS__ +#pragma HLS ARRAY_PARTITION variable=cur_u_streams complete dim=0 +#pragma HLS ARRAY_PARTITION variable=cur_v_streams complete dim=0 +#pragma HLS ARRAY_PARTITION variable=cur_dot1_streams complete dim=0 +#pragma HLS ARRAY_PARTITION variable=cur_dot2_streams complete dim=0 +#pragma HLS ARRAY_PARTITION variable=cur_out1_streams complete dim=0 +#pragma HLS ARRAY_PARTITION variable=cur_out2_streams complete dim=0 +#pragma HLS ARRAY_PARTITION variable=cur_acc1_streams complete dim=0 +#pragma HLS ARRAY_PARTITION variable=cur_acc2_streams complete dim=0 +#pragma HLS ARRAY_PARTITION variable=rec_u_streams complete dim=0 +#pragma HLS ARRAY_PARTITION variable=rec_v_streams complete dim=0 +#pragma HLS ARRAY_PARTITION variable=rec_dot1_streams complete dim=0 +#pragma HLS ARRAY_PARTITION variable=rec_dot2_streams complete dim=0 +#pragma HLS ARRAY_PARTITION variable=rec_out1_streams complete dim=0 +#pragma HLS ARRAY_PARTITION variable=rec_out2_streams complete dim=0 +#pragma HLS ARRAY_PARTITION variable=rec_acc1_streams complete dim=0 +#pragma HLS ARRAY_PARTITION variable=rec_acc2_streams complete dim=0 +#pragma HLS ARRAY_PARTITION variable=gates_s1_streams complete dim=0 +#pragma HLS ARRAY_PARTITION variable=gates_s2_streams complete dim=0 +#pragma HLS ARRAY_PARTITION variable=x1_streams complete dim=0 +#pragma HLS ARRAY_PARTITION variable=x2_streams complete dim=0 +#pragma HLS ARRAY_PARTITION variable=h1_streams complete dim=0 +#pragma HLS ARRAY_PARTITION variable=h2_streams complete dim=0 +#pragma HLS ARRAY_PARTITION variable=nz_v_stream1_cur complete dim=0 +#pragma HLS ARRAY_PARTITION variable=nz_v_stream1_rec complete dim=0 +#pragma HLS ARRAY_PARTITION variable=nz_v_stream2_cur complete dim=0 +#pragma HLS ARRAY_PARTITION variable=nz_v_stream2_rec complete dim=0 +#pragma HLS ARRAY_PARTITION variable=nz_u_stream1_cur complete dim=0 +#pragma HLS ARRAY_PARTITION variable=nz_u_stream1_rec complete dim=0 +#pragma HLS ARRAY_PARTITION variable=nz_u_stream2_cur complete dim=0 +#pragma HLS ARRAY_PARTITION variable=nz_u_stream2_rec complete dim=0 +#endif + hlsutils::Log(0, "Starting ZeroTileCombinationDMA"); + svd::NZIndex2LstmDMA(nz_u_port, + nz_u_stream1_cur, nz_u_stream1_rec, nz_u_stream2_cur, + nz_u_stream2_rec); + svd::NZIndexDMA(nz_v_port, + nz_v_stream1_cur, nz_v_stream1_rec); + // =========================================================================== + // Current Input DMA + // =========================================================================== + hlsutils::Log(0, "Starting InputDMA"); + svd::InputDMA( + x1_port, nz_u_stream1_cur, x1_streams); + svd::InputDMA( + x2_port, nz_u_stream2_cur, x2_streams); + // =========================================================================== + // Recurrent Input DMA + // =========================================================================== + svd::InputDMA( + h_t1_prev_port, nz_u_stream1_rec, h1_streams); + svd::InputDMA( + h_t2_prev_port, nz_u_stream2_rec, h2_streams); + // =========================================================================== + // Gates DMA + // =========================================================================== + const int kUcurSize = kNumGates / 2 * kNumIter * kPrunedLengthU; + const int kUrecSize = kNumGates / 2 * kNumIter * kOutputLengthPrunedU; + const int kSsize = kNumGates * kNumIter; + const int kVsize = kNumGates * kNumIter * kPrunedLengthV; + const int kBitWidthU = FIX_WIDTH * 4; + const int kBitWidthV = FIX_WIDTH * 8; + const int kBitWidthS = FIX_WIDTH * 8; +#ifndef __VITIS_HLS__ + svd::WeightD u_cur_gate_streams[kNumGates / 2][kNumIter * kPrunedLengthU]; + svd::WeightD u_rec_gate_streams[kNumGates / 2][kNumIter * kOutputLengthPrunedU]; + svd::WeightD v_gate_streams[kNumGates][kNumIter * kPrunedLengthV]; +#pragma HLS ARRAY_PARTITION variable=u_cur_gate_streams complete dim=1 +#pragma HLS ARRAY_PARTITION variable=u_rec_gate_streams complete dim=1 +#pragma HLS ARRAY_PARTITION variable=v_gate_streams complete dim=1 +#pragma HLS STREAM variable=u_cur_gate_streams depth=1 dim=1 +#pragma HLS STREAM variable=u_rec_gate_streams depth=1 dim=1 +#pragma HLS STREAM variable=v_gate_streams depth=1 dim=1 + hlsutils::Log(0, "Starting ArraySplitter"); + svd::ArraySplitter, svd::WeightD, kBitWidthU, FIX_WIDTH, kUcurSize>( + u_cur_port, u_cur_gate_streams); + svd::ArraySplitter, svd::WeightD, kBitWidthU, FIX_WIDTH, kUrecSize>( + u_rec_port, u_rec_gate_streams); + svd::ArraySplitter, svd::WeightD, kBitWidthV, FIX_WIDTH, kVsize>( + v_port, v_gate_streams); +#else + hls::stream u_cur_gate_streams[kNumGates / 2]; + hls::stream u_rec_gate_streams[kNumGates / 2]; + hls::stream v_gate_streams[kNumGates]; +#pragma HLS ARRAY_PARTITION variable=u_cur_gate_streams complete dim=0 +#pragma HLS ARRAY_PARTITION variable=u_rec_gate_streams complete dim=0 +#pragma HLS ARRAY_PARTITION variable=v_gate_streams complete dim=0 +#pragma HLS STREAM variable=u_cur_gate_streams depth=2 +#pragma HLS STREAM variable=u_rec_gate_streams depth=2 +#pragma HLS STREAM variable=v_gate_streams depth=2 + hlsutils::Log(0, "Starting ArraySplitter"); + svd::StreamSplitter, svd::WeightD, kBitWidthU, FIX_WIDTH>( + kUcurSize, u_cur_port, u_cur_gate_streams); + svd::StreamSplitter, svd::WeightD, kBitWidthU, FIX_WIDTH>( + kUrecSize, u_rec_port, u_rec_gate_streams); + svd::StreamSplitter, svd::WeightD, kBitWidthV, FIX_WIDTH>( + kVsize, v_port, v_gate_streams); +#endif + svd::StreamSplitter, svd::WeightD, kBitWidthS, FIX_WIDTH>( + kSsize, s1_port, gates_s1_streams); + svd::StreamSplitter, svd::WeightD, kBitWidthS, FIX_WIDTH>( + kSsize, s2_port, gates_s2_streams); + const bool kUweights = true; + // =========================================================================== + // Current Dot Product Unit + // =========================================================================== +#ifndef __VITIS_HLS__ + Current_SVD_Kernels: + for (int g = 0; g < kNumCurGates; ++g) { +#pragma HLS UNROLL + svd::DispatchGateFromArray(kUweights, kNumIter, kNumNonZeroTilesU, + kTileSizeUCurrent, u_cur_gate_streams[g], cur_u_streams[g]); + svd::DispatchGateFromArray(!kUweights, kNumIter, kNumNonZeroTilesV, kTileSizeV, + v_gate_streams[g], cur_v_streams[g]); + } +#else + svd::DispatchGateFromStream( + kUweights, kNumIter, kNumNonZeroTilesU, kTileSizeUCurrent, + u_cur_gate_streams, cur_u_streams); + svd::DispatchGateFromStream( + !kUweights, kNumIter, kNumNonZeroTilesV, kTileSizeV, + v_gate_streams, cur_v_streams); +#endif + svd::UDotUnit2Lstm( + x1_streams, x2_streams, cur_u_streams, cur_dot1_streams, + cur_dot2_streams); + svd::VDotUnit2LstmV2( + false, nullptr, nullptr, + cur_dot1_streams, cur_dot2_streams, + gates_s1_streams, gates_s2_streams, + cur_v_streams, nz_v_stream1_cur, + cur_acc1_streams, cur_acc2_streams); + // =========================================================================== + // Recur Dot Product Unit + // =========================================================================== +#ifndef __VITIS_HLS__ + Recurrent_SVD_Kernels: + for (int g = 0; g < kNumRecGates; ++g) { +#pragma HLS UNROLL + svd::DispatchGateFromArray(kUweights, kNumIter, kNumNonZeroTilesU, + kTileSizeURecur, u_rec_gate_streams[g], rec_u_streams[g]); + svd::DispatchGateFromArray(!kUweights, kNumIter, kNumNonZeroTilesV, kTileSizeV, + v_gate_streams[kNumCurGates + g], rec_v_streams[g]); + } +#else + svd::DispatchGateFromStream( + kUweights, kNumIter, kNumNonZeroTilesU, kTileSizeURecur, + u_rec_gate_streams, rec_u_streams); + svd::DispatchGateFromStream( + !kUweights, kNumIter, kNumNonZeroTilesV, kTileSizeV, + &v_gate_streams[kNumRecGates], rec_v_streams); +#endif + svd::UDotUnit2Lstm( + h1_streams, h2_streams, rec_u_streams, rec_dot1_streams, + rec_dot2_streams); + svd::VDotUnit2LstmV2( + false, nullptr, nullptr, rec_dot1_streams, rec_dot2_streams, + &gates_s1_streams[kNumRecGates], &gates_s2_streams[kNumRecGates], + rec_v_streams, nz_v_stream1_rec, rec_acc1_streams, rec_acc2_streams); + // =========================================================================== + // Output Non-Linearities + // =========================================================================== + svd::NonLinearityUnit(c_t1_prev_port, + cur_acc1_streams, rec_acc1_streams, h_t1_curr_port, c_t1_curr_port, true, + bias1_port); + svd::NonLinearityUnit(c_t2_prev_port, + cur_acc2_streams, rec_acc2_streams, h_t2_curr_port, c_t2_curr_port, true, + bias2_port); +} + +} // svd + +#ifndef __VITIS_HLS__ +#else +void HlsLstmSvd(const int num_active_inputs, + const int input_size, + const int output_size, + const int num_refinements[svd::lstm_params::N], + // const hls::vector num_refinements, + // Current Gates + hls::stream& x_port, + hls::stream& u_cur_port, + hls::stream& s_cur_port, + hls::stream& v_cur_port, + // Recurrent Gates + hls::stream& h_prev_port, + hls::stream& u_rec_port, + hls::stream& s_rec_port, + hls::stream& v_rec_port, + // Non-Linearities + hls::stream& bias_port, + hls::stream& c_prev_port, + hls::stream& h_curr_port, + hls::stream& c_curr_port) { +#pragma HLS INTERFACE s_axilite port=return bundle=ctrl +#pragma HLS INTERFACE s_axilite port=num_active_inputs bundle=ctrl +#pragma HLS INTERFACE s_axilite port=input_size bundle=ctrl +#pragma HLS INTERFACE s_axilite port=num_refinements bundle=ctrl +#pragma HLS INTERFACE s_axilite port=output_size bundle=ctrl +#pragma HLS INTERFACE axis port=x_port +#pragma HLS INTERFACE axis port=u_cur_port +#pragma HLS INTERFACE axis port=s_cur_port +#pragma HLS INTERFACE axis port=v_cur_port +#pragma HLS INTERFACE axis port=h_prev_port +#pragma HLS INTERFACE axis port=u_rec_port +#pragma HLS INTERFACE axis port=s_rec_port +#pragma HLS INTERFACE axis port=v_rec_port +#pragma HLS INTERFACE axis port=bias_port +#pragma HLS INTERFACE axis port=c_prev_port +#pragma HLS INTERFACE axis port=h_curr_port +#pragma HLS INTERFACE axis port=c_curr_port + svd::LstmSvdKernel(num_active_inputs, input_size, + output_size, num_refinements, x_port, u_cur_port, s_cur_port, v_cur_port, + h_prev_port, u_rec_port, s_rec_port, v_rec_port, bias_port, c_prev_port, + h_curr_port, c_curr_port); +} +#endif // __VITIS_HLS__ + +/** + * @brief HLS Wrapper that calls a DenseSvd accelerator. + * + * Useful in Cosimulation. + * + * @param[in] num_active_inputs The number of active inputs + * @param[in] input_size The input size + * @param[in] output_size The output size + * @param[in] num_refinements The number of refinements + * @param[in] x The input array. Shape: (N, I) + * @param[in] u The u array. Shape: (R, I, G) + * @param[in] s The s array. Shape: (R, N, G) + * @param[in] v The v array. Shape: (R, H, G) + * @param[in] bias The bias array. Shape: (N, G, H) + * @param y The y array. Shape: (H / Tv, N, Tv) + */ +void HlsWrapperLstmSvd( + const int num_active_inputs, + const int input_size, + const int output_size, + const int num_refinements[svd::lstm_params::N], + // Current Gates + const typename svd::lstm_params::ActivationD* x, + const typename svd::lstm_params::ActivationD* u_cur, + const typename svd::lstm_params::ActivationD* s_cur, + const typename svd::lstm_params::ActivationD* v_cur, + // Recurrent Gates + const typename svd::lstm_params::ActivationD* h, + const typename svd::lstm_params::ActivationD* u_rec, + const typename svd::lstm_params::ActivationD* s_rec, + const typename svd::lstm_params::ActivationD* v_rec, + // Non-Linearities + const typename svd::lstm_params::ActivationD* bias, + const typename svd::lstm_params::ActivationD* c_prev, + typename svd::lstm_params::ActivationD* h_curr, + typename svd::lstm_params::ActivationD* c_curr) { +#ifdef __VITIS_HLS__ + // Current Gates + hls::stream x_port; + hls::stream u_cur_port; + hls::stream s_cur_port; + hls::stream v_cur_port; + // Recurrent Gates + hls::stream h_prev_port; + hls::stream u_rec_port; + hls::stream s_rec_port; + hls::stream v_rec_port; + // Non-Linearities + hls::stream bias_port; + hls::stream c_prev_port; + hls::stream h_curr_port; + hls::stream c_curr_port; + svd::SetLstmSvdInputs( + num_active_inputs, input_size, output_size, num_refinements, + x, u_cur, s_cur, v_cur, h, u_rec, s_rec, v_rec, bias, c_prev, + x_port, u_cur_port, s_cur_port, v_cur_port, + h_prev_port, u_rec_port, s_rec_port, v_rec_port, bias_port, c_prev_port); + HlsLstmSvd(num_active_inputs, input_size, output_size, num_refinements, + x_port, u_cur_port, s_cur_port, v_cur_port, + h_prev_port, u_rec_port, s_rec_port, v_rec_port, + bias_port, c_prev_port, h_curr_port, c_curr_port); + svd::GetLstmSvdOutputs(num_active_inputs, + output_size, h_curr, c_curr, h_curr_port, c_curr_port); +#endif // __VITIS_HLS__ +} \ No newline at end of file diff --git a/src/layers/lstm/hls/lstm_svd_emulator.cpp b/src/layers/lstm/hls/lstm_svd_emulator.cpp new file mode 100644 index 0000000..57ae4b4 --- /dev/null +++ b/src/layers/lstm/hls/lstm_svd_emulator.cpp @@ -0,0 +1 @@ +#include "layers/lstm/hls/lstm_svd_emulator.h" \ No newline at end of file diff --git a/src/layers/lstm/lstm_data_handler.cpp b/src/layers/lstm/lstm_data_handler.cpp new file mode 100644 index 0000000..a0e81bf --- /dev/null +++ b/src/layers/lstm/lstm_data_handler.cpp @@ -0,0 +1 @@ +#include "layers/lstm/lstm_data_handler.h" \ No newline at end of file diff --git a/src/layers/lstm/sw/CMakeLists.txt b/src/layers/lstm/sw/CMakeLists.txt new file mode 100644 index 0000000..0f85f74 --- /dev/null +++ b/src/layers/lstm/sw/CMakeLists.txt @@ -0,0 +1,15 @@ +cmake_minimum_required(VERSION 3.10) + +add_library(SOFT_LSTM STATIC ${CMAKE_SOURCE_DIR}/src/layers/lstm/sw/soft_lstm.cpp) +target_include_directories(SOFT_LSTM PUBLIC ${CMAKE_SOURCE_DIR}/include) +target_include_directories(SOFT_LSTM PUBLIC ${HLS_INCLUDE_DIRS}) +target_include_directories(SOFT_LSTM PUBLIC ${OpenCv_INCLUDE_DIRS}) +target_link_libraries(SOFT_LSTM ${OpenCv_LIBS}) + +add_library(SOFT_LSTM_SVD STATIC ${CMAKE_SOURCE_DIR}/src/layers/lstm/sw/soft_lstm_svd.cpp) +target_include_directories(SOFT_LSTM_SVD PUBLIC ${CMAKE_SOURCE_DIR}/include) +target_include_directories(SOFT_LSTM_SVD PUBLIC ${HLS_INCLUDE_DIRS}) +target_include_directories(SOFT_LSTM_SVD PUBLIC ${OpenCv_INCLUDE_DIRS}) +target_link_libraries(SOFT_LSTM_SVD ${OpenCv_LIBS}) +target_link_libraries(SOFT_LSTM_SVD BLAS_UTILS) +target_link_libraries(SOFT_LSTM_SVD ACTIVATION_FUNCTIONS) diff --git a/src/lstm/sw/soft_lstm.cpp b/src/layers/lstm/sw/soft_lstm.cpp similarity index 99% rename from src/lstm/sw/soft_lstm.cpp rename to src/layers/lstm/sw/soft_lstm.cpp index c535a6d..253838a 100644 --- a/src/lstm/sw/soft_lstm.cpp +++ b/src/layers/lstm/sw/soft_lstm.cpp @@ -36,7 +36,7 @@ * streams * *****************************************************************************/ -#include "lstm/sw/soft_lstm.h" +#include "layers/lstm/sw/soft_lstm.h" #include "math_utils/blas_utils.h" #include "math_utils/activation_functions.h" diff --git a/src/lstm/sw/soft_lstm_svd.cpp b/src/layers/lstm/sw/soft_lstm_svd.cpp similarity index 96% rename from src/lstm/sw/soft_lstm_svd.cpp rename to src/layers/lstm/sw/soft_lstm_svd.cpp index 0000166..e1ff807 100644 --- a/src/lstm/sw/soft_lstm_svd.cpp +++ b/src/layers/lstm/sw/soft_lstm_svd.cpp @@ -1,4 +1,6 @@ -#include "lstm/sw/soft_lstm_svd.h" +#include "layers/lstm/sw/soft_lstm_svd.h" + +namespace svd { #ifdef __cplusplus extern "C" @@ -959,7 +961,7 @@ void SvdModelSoftwareUnbatched(const int verbose, #ifdef __cplusplus extern "C" #endif -void SvdModel2LstmFix8(const int verbose, +void SvdModelLstmFix8(const int verbose, const Fix8D *x, const int num_samples, const int num_timesteps, @@ -995,47 +997,19 @@ void SvdModel2LstmFix8(const int verbose, const Fix8D *bias_c, const Fix8D *bias_o, Fix8D *out) { - SvdModel2LstmTemplatedLatencyCC(verbose, x, - num_samples, - num_timesteps, - n_steps, - input_size, - hidden_size, - cur_i_u, - cur_i_s, - cur_i_v, - cur_f_u, - cur_f_s, - cur_f_v, - cur_c_u, - cur_c_s, - cur_c_v, - cur_o_u, - cur_o_s, - cur_o_v, - rec_i_u, - rec_i_s, - rec_i_v, - rec_f_u, - rec_f_s, - rec_f_v, - rec_c_u, - rec_c_s, - rec_c_v, - rec_o_u, - rec_o_s, - rec_o_v, - bias_i, - bias_f, - bias_c, - bias_o, - out); + SvdModelLstmTemplatedLatencyCC(verbose, x, + num_samples, num_timesteps, n_steps, input_size, hidden_size, + cur_i_u, cur_i_s, cur_i_v, cur_f_u, cur_f_s, cur_f_v, + cur_c_u, cur_c_s, cur_c_v, cur_o_u, cur_o_s, cur_o_v, + rec_i_u, rec_i_s, rec_i_v, rec_f_u, rec_f_s, rec_f_v, + rec_c_u, rec_c_s, rec_c_v, rec_o_u, rec_o_s, rec_o_v, + bias_i, bias_f, bias_c, bias_o, out); } #ifdef __cplusplus extern "C" #endif -void SvdModel2LstmFix16(const int verbose, +void SvdModelLstmFix16(const int verbose, const Fix16D *x, const int num_samples, const int num_timesteps, @@ -1071,47 +1045,19 @@ void SvdModel2LstmFix16(const int verbose, const Fix16D *bias_c, const Fix16D *bias_o, Fix16D *out) { - SvdModel2LstmTemplatedLatencyCC(verbose, x, - num_samples, - num_timesteps, - n_steps, - input_size, - hidden_size, - cur_i_u, - cur_i_s, - cur_i_v, - cur_f_u, - cur_f_s, - cur_f_v, - cur_c_u, - cur_c_s, - cur_c_v, - cur_o_u, - cur_o_s, - cur_o_v, - rec_i_u, - rec_i_s, - rec_i_v, - rec_f_u, - rec_f_s, - rec_f_v, - rec_c_u, - rec_c_s, - rec_c_v, - rec_o_u, - rec_o_s, - rec_o_v, - bias_i, - bias_f, - bias_c, - bias_o, - out); + SvdModelLstmTemplatedLatencyCC(verbose, x, + num_samples, num_timesteps, n_steps, input_size, hidden_size, + cur_i_u, cur_i_s, cur_i_v, cur_f_u, cur_f_s, cur_f_v, + cur_c_u, cur_c_s, cur_c_v, cur_o_u, cur_o_s, cur_o_v, + rec_i_u, rec_i_s, rec_i_v, rec_f_u, rec_f_s, rec_f_v, + rec_c_u, rec_c_s, rec_c_v, rec_o_u, rec_o_s, rec_o_v, + bias_i, bias_f, bias_c, bias_o, out); } #ifdef __cplusplus extern "C" #endif -void SvdModel2LstmHalf(const int verbose, +void SvdModelLstmHalf(const int verbose, const HalfD *x, const int num_samples, const int num_timesteps, @@ -1147,47 +1093,19 @@ void SvdModel2LstmHalf(const int verbose, const HalfD *bias_c, const HalfD *bias_o, HalfD *out) { - SvdModel2LstmTemplatedLatencyCC(verbose, x, - num_samples, - num_timesteps, - n_steps, - input_size, - hidden_size, - cur_i_u, - cur_i_s, - cur_i_v, - cur_f_u, - cur_f_s, - cur_f_v, - cur_c_u, - cur_c_s, - cur_c_v, - cur_o_u, - cur_o_s, - cur_o_v, - rec_i_u, - rec_i_s, - rec_i_v, - rec_f_u, - rec_f_s, - rec_f_v, - rec_c_u, - rec_c_s, - rec_c_v, - rec_o_u, - rec_o_s, - rec_o_v, - bias_i, - bias_f, - bias_c, - bias_o, - out); + SvdModelLstmTemplatedLatencyCC(verbose, x, + num_samples, num_timesteps, n_steps, input_size, hidden_size, + cur_i_u, cur_i_s, cur_i_v, cur_f_u, cur_f_s, cur_f_v, + cur_c_u, cur_c_s, cur_c_v, cur_o_u, cur_o_s, cur_o_v, + rec_i_u, rec_i_s, rec_i_v, rec_f_u, rec_f_s, rec_f_v, + rec_c_u, rec_c_s, rec_c_v, rec_o_u, rec_o_s, rec_o_v, + bias_i, bias_f, bias_c, bias_o, out); } #ifdef __cplusplus extern "C" #endif -void SvdModel2LstmSoftware(const int verbose, +void SvdModelLstmSoftware(const int verbose, const bool use_blas, const int type, // 0:float, 1:fix8, 2:fix16, 3:half16 const float *x, @@ -1329,7 +1247,7 @@ void SvdModel2LstmSoftware(const int verbose, // ===================================================================== // Call function // ===================================================================== - SvdModel2LstmFix8(verbose, x_fix, num_samples, num_timesteps, n_steps, input_size, + SvdModelLstmFix8(verbose, x_fix, num_samples, num_timesteps, n_steps, input_size, hidden_size, cur_i_u_fix, cur_i_s_fix, cur_i_v_fix, cur_f_u_fix, cur_f_s_fix, cur_f_v_fix, cur_c_u_fix, cur_c_s_fix, cur_c_v_fix, cur_o_u_fix, cur_o_s_fix, @@ -1446,7 +1364,7 @@ void SvdModel2LstmSoftware(const int verbose, // ===================================================================== // Call function // ===================================================================== - SvdModel2LstmFix16(verbose, x_fix, num_samples, num_timesteps, n_steps, + SvdModelLstmFix16(verbose, x_fix, num_samples, num_timesteps, n_steps, input_size, hidden_size, cur_i_u_fix, cur_i_s_fix, cur_i_v_fix, cur_f_u_fix, cur_f_s_fix, cur_f_v_fix, cur_c_u_fix, cur_c_s_fix, cur_c_v_fix, cur_o_u_fix, @@ -1564,8 +1482,8 @@ void SvdModel2LstmSoftware(const int verbose, // ===================================================================== // Call function // ===================================================================== - // std::cout << "Starting SvdModel2LstmHalf\n"; - SvdModel2LstmHalf(verbose, x_fix, num_samples, num_timesteps, n_steps, + // std::cout << "Starting SvdModelLstmHalf\n"; + SvdModelLstmHalf(verbose, x_fix, num_samples, num_timesteps, n_steps, input_size, hidden_size, cur_i_u_fix, cur_i_s_fix, cur_i_v_fix, cur_f_u_fix, cur_f_s_fix, cur_f_v_fix, cur_c_u_fix, cur_c_s_fix, cur_c_v_fix, cur_o_u_fix, @@ -2741,7 +2659,7 @@ void SvdModelEigenUnbatched(const int verbose, #ifdef __cplusplus extern "C" #endif -void SvdModel2LstmHardware(const int verbose, +void SvdModelLstmHardware(const int verbose, const bool use_blas, const int type, // 0:float, 1:fix8, 2:fix16 const float *x1, @@ -2803,7 +2721,7 @@ void SvdModel2LstmHardware(const int verbose, int Tv, int ZTv, int NumTimesteps - SvdModel2LstmTemplated(x1, + SvdModelLstmTemplated(x1, x2, cur_i_u, cur_i_s, @@ -2942,7 +2860,7 @@ void SvdModel2LstmHardware(const int verbose, // ===================================================================== // Call function // ===================================================================== - SvdModel2LstmFix8(verbose, x_fix, num_samples, num_timesteps, n_steps, input_size, + SvdModelLstmFix8(verbose, x_fix, num_samples, num_timesteps, n_steps, input_size, hidden_size, cur_i_u_fix, cur_i_s_fix, cur_i_v_fix, cur_f_u_fix, cur_f_s_fix, cur_f_v_fix, cur_c_u_fix, cur_c_s_fix, cur_c_v_fix, cur_o_u_fix, cur_o_s_fix, @@ -3059,7 +2977,7 @@ void SvdModel2LstmHardware(const int verbose, // ===================================================================== // Call function // ===================================================================== - SvdModel2LstmFix16(verbose, x_fix, num_samples, num_timesteps, n_steps, + SvdModelLstmFix16(verbose, x_fix, num_samples, num_timesteps, n_steps, input_size, hidden_size, cur_i_u_fix, cur_i_s_fix, cur_i_v_fix, cur_f_u_fix, cur_f_s_fix, cur_f_v_fix, cur_c_u_fix, cur_c_s_fix, cur_c_v_fix, cur_o_u_fix, @@ -3177,8 +3095,8 @@ void SvdModel2LstmHardware(const int verbose, // ===================================================================== // Call function // ===================================================================== - // std::cout << "Starting SvdModel2LstmHalf\n"; - SvdModel2LstmHalf(verbose, x_fix, num_samples, num_timesteps, n_steps, + // std::cout << "Starting SvdModelLstmHalf\n"; + SvdModelLstmHalf(verbose, x_fix, num_samples, num_timesteps, n_steps, input_size, hidden_size, cur_i_u_fix, cur_i_s_fix, cur_i_v_fix, cur_f_u_fix, cur_f_s_fix, cur_f_v_fix, cur_c_u_fix, cur_c_s_fix, cur_c_v_fix, cur_o_u_fix, @@ -3256,7 +3174,7 @@ void print_vect(const int size, const int num_elem_to_print, T *v) { #ifdef __cplusplus extern "C" #endif -void SvdModel2LstmSoftwareBatched(const int verbose, +void SvdModelLstmSoftwareBatched(const int verbose, const bool use_blas, const float *x, // (num_samples, num_inputs, num_timesteps, input_size) const int num_inputs, @@ -3741,3 +3659,5 @@ void SvdModel2LstmSoftwareBatched(const int verbose, delete[] rec_o_us; } #endif + +} // svd diff --git a/src/lstm/hls/CMakeLists.txt b/src/lstm/hls/CMakeLists.txt deleted file mode 100644 index 0859f22..0000000 --- a/src/lstm/hls/CMakeLists.txt +++ /dev/null @@ -1,13 +0,0 @@ -cmake_minimum_required(VERSION 3.10) - -add_library(LSTM_HARDWARE STATIC ${CMAKE_SOURCE_DIR}/src/lstm/hls/lstm_hardware.cpp) -target_include_directories(LSTM_HARDWARE PUBLIC ${CMAKE_SOURCE_DIR}/include) -target_include_directories(LSTM_HARDWARE PUBLIC ${VIVADO_INCLUDE_DIRS}) -target_include_directories(LSTM_HARDWARE PUBLIC ${OpenCv_INCLUDE_DIRS}) -target_link_libraries(LSTM_HARDWARE ${OpenCv_LIBS}) - -add_library(LSTM_SVD STATIC ${CMAKE_SOURCE_DIR}/src/lstm/hls/lstm_svd.cpp) -target_include_directories(LSTM_SVD PUBLIC ${CMAKE_SOURCE_DIR}/include) -target_include_directories(LSTM_SVD PUBLIC ${VIVADO_INCLUDE_DIRS}) -target_include_directories(LSTM_SVD PUBLIC ${OpenCv_INCLUDE_DIRS}) -target_link_libraries(LSTM_SVD ${OpenCv_LIBS}) \ No newline at end of file diff --git a/src/lstm/hls/lstm_svd.cpp b/src/lstm/hls/lstm_svd.cpp deleted file mode 100644 index 6b1adc5..0000000 --- a/src/lstm/hls/lstm_svd.cpp +++ /dev/null @@ -1,372 +0,0 @@ -#include "lstm/hls/lstm_svd.h" -#include "svd_params.h" -#include "dma/svd_dma.h" -#include "kernel/u_kernel.h" -#include "kernel/s_kernel.h" -#include "kernel/v_kernel.h" -#include "math_utils/activation_functions.h" -#include "hls_utils/hls_debugging.h" - -#include "hls_stream.h" -#include "ap_int.h" - -void SvdModel2LstmSDSoCV2( - const svd::ActivationD x1_port[INPUT_SIZE], - const svd::ActivationD x2_port[INPUT_SIZE], - const svd::ActivationD h_t1_prev_port[HIDDEN_SIZE], - const svd::ActivationD h_t2_prev_port[HIDDEN_SIZE], - const svd::ActivationD c_t1_prev_port[HIDDEN_SIZE], - const svd::ActivationD c_t2_prev_port[HIDDEN_SIZE], - const ap_uint *u_cur_port, // [NUM_ITERATIONS*4*INPUT_SIZE / NUM_TILES_U * (NUM_TILES_U - NUM_ZERO_TILES_U)], - const ap_uint *u_rec_port, // [NUM_ITERATIONS*4*HIDDEN_SIZE / NUM_TILES_U * (NUM_TILES_U - NUM_ZERO_TILES_U)], - const ap_uint *v_port, // [NUM_ITERATIONS*4*2*HIDDEN_SIZE / NUM_TILES_V * (NUM_TILES_V - NUM_ZERO_TILES_V)], - const ap_uint *s1_port, // [NUM_ITERATIONS*8], - const ap_uint *s2_port, // [NUM_ITERATIONS*8], - const svd::WeightD bias1_port[4 * HIDDEN_SIZE], - const svd::WeightD bias2_port[4 * HIDDEN_SIZE], - const ap_uint comb_v_port[NUM_ITERATIONS * 8], - const ap_uint comb_u_port[NUM_ITERATIONS * 8], - svd::ActivationD h_t1_curr_port[HIDDEN_SIZE], - svd::ActivationD h_t2_curr_port[HIDDEN_SIZE], - svd::ActivationD c_t1_curr_port[HIDDEN_SIZE], - svd::ActivationD c_t2_curr_port[HIDDEN_SIZE] -#ifdef DEBUG_FIFOS - , - svd::CounterD *counters_port, - svd::CounterD *clk_count_port -#endif - ) { - std::cout << "[INFO] Running SvdModel2LstmSDSoCV2." << std::endl; - const int kNumGates = 8; - const int kNumCurGates = 4; - const int kNumRecGates = 4; - const int kInputLength = INPUT_SIZE; - const int kOutputLength = HIDDEN_SIZE; - const int kNumTilesU = NUM_TILES_U; - const int kNumTilesV = NUM_TILES_V; - const int kNumZeroTilesU = NUM_ZERO_TILES_U; - const int kNumZeroTilesV = NUM_ZERO_TILES_V; - const int kNumIter = NUM_ITERATIONS; - const int kNumTimesteps = NUM_TIMESTEPS; - const int kNumNonZeroTilesU = kNumTilesU - kNumZeroTilesU; - const int kNumNonZeroTilesV = kNumTilesV - kNumZeroTilesV; - const int kNumElemsTileUCurrent = kInputLength / kNumTilesU; - const int kNumElemsTileURecur = kOutputLength / kNumTilesU; - const int kNumElemsTileV = kOutputLength / kNumTilesV; - assert(kNumTilesU % 2 == 0); - assert(kNumTilesV % 2 == 0); - // assert(kNumZeroTilesU % 2 == 0); - // assert(kNumZeroTilesV % 2 == 0); - assert(kNumIter % 2 == 0); - std::cout << "[INFO] assert passed." << std::endl; - - const int kNumElemsTileU = kInputLength / kNumTilesU; - const int kPrunedLengthU = kInputLength - kNumZeroTilesU * kNumElemsTileU; - const int kPrunedLengthV = kOutputLength - kNumZeroTilesV * kNumElemsTileV; - const int kNumSamples = NUM_SAMPLES; // Used for cosimulation only - const int kNumReadsR = 8 * kNumIter; - const int kNumReadsC = 8 * kNumIter; - const int kAxiDepthR = kInputLength; - const int kAxiPortDepthX = (kInputLength * kNumTimesteps) * kNumSamples; - const int kAxiDepthU = (kNumIter * 8 * kPrunedLengthU) * kNumSamples; - const int kAxiDepthV = (kNumIter * 8 * kPrunedLengthV) * kNumSamples; - const int kAxiDepthS = (kNumIter * 8 * 2) * kNumSamples; - const int kAxiDepthCombinationsR = kNumReadsR * kNumSamples; - const int kAxiDepthCombinationsC = kNumReadsC * kNumSamples; -#ifndef SDS_DESIGN -#pragma HLS INTERFACE s_axilite port=return bundle=ctrl - - const int kInputLengthPruned = kInputLength - kInputLength / kNumTilesU * kNumZeroTilesU; - const int kOutputLengthPrunedU = kOutputLength - kOutputLength / kNumTilesU * kNumZeroTilesU; - const int kOutputLengthPrunedV = kOutputLength - kOutputLength / kNumTilesV * kNumZeroTilesV; - const int kUSize = kNumIter*(kNumCurGates * kInputLengthPruned + kNumRecGates * kOutputLengthPrunedU); - const int kVSize = kNumIter*(kNumCurGates * kOutputLengthPrunedV + kNumRecGates * kOutputLengthPrunedV); - const int kSSize = kNumIter * 2 * (kNumCurGates + kNumRecGates); - - const int kUCurSize = kNumIter * kNumCurGates * kInputLengthPruned; - const int kURecSize = kNumIter * kNumRecGates * kOutputLengthPrunedU; - - const int kUcurPortDepth = kUCurSize; - const int kUrecPortDepth = kURecSize; - const int kVportDepth = kVSize; - const int kS1portDepth = kSSize / 2; - const int kS2portDepth = kSSize / 2; -#pragma HLS INTERFACE m_axi port=u_cur_port offset=slave depth=kUcurPortDepth bundle=u_cur_dmem -#pragma HLS INTERFACE m_axi port=u_rec_port offset=slave depth=kUrecPortDepth bundle=u_rec_dmem -#pragma HLS INTERFACE m_axi port=v_port offset=slave depth=kVportDepth bundle=v_dmem -#pragma HLS INTERFACE m_axi port=s1_port offset=slave depth=kS1portDepth bundle=s1_dmem -#pragma HLS INTERFACE m_axi port=s2_port offset=slave depth=kS2portDepth bundle=s2_dmem - -#pragma HLS INTERFACE ap_fifo port=x1_port -#pragma HLS INTERFACE ap_fifo port=x2_port -#pragma HLS INTERFACE ap_fifo port=bias1_port -#pragma HLS INTERFACE ap_fifo port=bias2_port -#pragma HLS INTERFACE ap_fifo port=comb_v_port -#pragma HLS INTERFACE ap_fifo port=comb_u_port -#pragma HLS INTERFACE ap_fifo port=h_t1_prev_port -#pragma HLS INTERFACE ap_fifo port=h_t2_prev_port -#pragma HLS INTERFACE ap_fifo port=h_t1_curr_port -#pragma HLS INTERFACE ap_fifo port=h_t2_curr_port -#pragma HLS INTERFACE ap_fifo port=c_t1_prev_port -#pragma HLS INTERFACE ap_fifo port=c_t2_prev_port -#pragma HLS INTERFACE ap_fifo port=c_t1_curr_port -#pragma HLS INTERFACE ap_fifo port=c_t2_curr_port -#endif // SDS_DESIGN - -#pragma HLS DATAFLOW - std::cout << "[INFO] DATAFLOW passed." << std::endl; - - // =========================================================================== - // Current streams - // =========================================================================== - svd::WeightStream cur_u_streams[kNumCurGates][kNumNonZeroTilesU]; - svd::WeightStream cur_v_streams[kNumCurGates][kNumElemsTileV]; // [kNumNonZeroTilesV]; - svd::ActivationStream cur_dot1_streams[kNumCurGates]; - svd::ActivationStream cur_dot2_streams[kNumCurGates]; - svd::ActivationStream cur_out1_streams[kNumCurGates][kNumNonZeroTilesV]; - svd::ActivationStream cur_out2_streams[kNumCurGates][kNumNonZeroTilesV]; - svd::ActivationStream cur_acc1_streams[kNumCurGates][kNumElemsTileV]; // [kNumTilesV]; - svd::ActivationStream cur_acc2_streams[kNumCurGates][kNumElemsTileV]; // [kNumTilesV]; -#pragma HLS ARRAY_PARTITION variable=cur_u_streams complete dim=0 -#pragma HLS ARRAY_PARTITION variable=cur_v_streams complete dim=0 -#pragma HLS ARRAY_PARTITION variable=cur_dot1_streams complete dim=0 -#pragma HLS ARRAY_PARTITION variable=cur_dot2_streams complete dim=0 -#pragma HLS ARRAY_PARTITION variable=cur_out1_streams complete dim=0 -#pragma HLS ARRAY_PARTITION variable=cur_out2_streams complete dim=0 -#pragma HLS ARRAY_PARTITION variable=cur_acc1_streams complete dim=0 -#pragma HLS ARRAY_PARTITION variable=cur_acc2_streams complete dim=0 - // =========================================================================== - // Recur streams - // =========================================================================== - svd::WeightStream rec_u_streams[kNumRecGates][kNumNonZeroTilesU]; - svd::WeightStream rec_v_streams[kNumRecGates][kNumElemsTileV]; // [kNumNonZeroTilesV]; - svd::ActivationStream rec_dot1_streams[kNumRecGates]; - svd::ActivationStream rec_dot2_streams[kNumRecGates]; - svd::ActivationStream rec_out1_streams[kNumRecGates][kNumNonZeroTilesV]; - svd::ActivationStream rec_out2_streams[kNumRecGates][kNumNonZeroTilesV]; - svd::ActivationStream rec_acc1_streams[kNumRecGates][kNumElemsTileV]; // [kNumTilesV]; - svd::ActivationStream rec_acc2_streams[kNumRecGates][kNumElemsTileV]; // [kNumTilesV]; -#pragma HLS ARRAY_PARTITION variable=rec_u_streams complete dim=0 -#pragma HLS ARRAY_PARTITION variable=rec_v_streams complete dim=0 -#pragma HLS ARRAY_PARTITION variable=rec_dot1_streams complete dim=0 -#pragma HLS ARRAY_PARTITION variable=rec_dot2_streams complete dim=0 -#pragma HLS ARRAY_PARTITION variable=rec_out1_streams complete dim=0 -#pragma HLS ARRAY_PARTITION variable=rec_out2_streams complete dim=0 -#pragma HLS ARRAY_PARTITION variable=rec_acc1_streams complete dim=0 -#pragma HLS ARRAY_PARTITION variable=rec_acc2_streams complete dim=0 - // =========================================================================== - // Scalar streams - // =========================================================================== - svd::WeightStream gates_s1_streams[kNumGates]; // used for both curr and recur - svd::WeightStream gates_s2_streams[kNumGates]; // used for both curr and recur -#pragma HLS ARRAY_PARTITION variable=gates_s1_streams complete dim=0 -#pragma HLS ARRAY_PARTITION variable=gates_s2_streams complete dim=0 - // =========================================================================== - // Current input streams - // =========================================================================== - svd::ActivationStream x1_streams[kNumCurGates][kNumNonZeroTilesU]; - svd::ActivationStream x2_streams[kNumCurGates][kNumNonZeroTilesU]; -#pragma HLS ARRAY_PARTITION variable=x1_streams complete dim=0 -#pragma HLS ARRAY_PARTITION variable=x2_streams complete dim=0 - // =========================================================================== - // Recurrent input streams - // =========================================================================== - svd::ActivationStream h1_streams[kNumRecGates][kNumNonZeroTilesU]; - svd::ActivationStream h2_streams[kNumRecGates][kNumNonZeroTilesU]; -#pragma HLS ARRAY_PARTITION variable=h1_streams complete dim=0 -#pragma HLS ARRAY_PARTITION variable=h2_streams complete dim=0 - // =========================================================================== - // Streams Depth Sizing - // =========================================================================== - // NOTE: We divide the FIFO depths by a certain factor to save BRAMs. Be aware - // that a wrong factor could lead to deadlocks! - const int kFIFOdepthFactor = kNumIter * 2; - const int kStreamDepthUCurrent = kNumIter * kNumElemsTileUCurrent / kFIFOdepthFactor == 0 ? 2 : kNumIter * kNumElemsTileUCurrent / kFIFOdepthFactor; - const int kStreamDepthURecurrent = kNumIter * kNumElemsTileURecur / kFIFOdepthFactor == 0 ? 2 : kNumIter * kNumElemsTileURecur / kFIFOdepthFactor; - const int kStreamDepthV = kNumIter * kNumTilesV / kFIFOdepthFactor == 0 ? 2 : kNumIter * kNumTilesV / kFIFOdepthFactor; - const int kTileAccStreamDepth = 2; -#pragma HLS STREAM variable=x1_streams depth=kStreamDepthUCurrent dim=2 -#pragma HLS STREAM variable=x2_streams depth=kStreamDepthUCurrent dim=2 -#pragma HLS STREAM variable=h1_streams depth=kStreamDepthURecurrent dim=2 -#pragma HLS STREAM variable=h2_streams depth=kStreamDepthURecurrent dim=2 - -#pragma HLS STREAM variable=cur_u_streams depth=kStreamDepthUCurrent dim=2 -#pragma HLS STREAM variable=rec_u_streams depth=kStreamDepthURecurrent dim=2 -#pragma HLS STREAM variable=cur_v_streams depth=kStreamDepthV dim=2 -#pragma HLS STREAM variable=rec_v_streams depth=kStreamDepthV dim=2 - -#pragma HLS STREAM variable=gates_s1_streams depth=kStreamDepthIter -#pragma HLS STREAM variable=gates_s2_streams depth=kStreamDepthIter - -#pragma HLS STREAM variable=cur_dot1_streams depth=kStreamDepthIter -#pragma HLS STREAM variable=cur_dot2_streams depth=kStreamDepthIter -#pragma HLS STREAM variable=rec_dot1_streams depth=kStreamDepthIter -#pragma HLS STREAM variable=rec_dot2_streams depth=kStreamDepthIter -#pragma HLS STREAM variable=cur_acc1_streams depth=kTileAccStreamDepth dim=2 -#pragma HLS STREAM variable=cur_acc2_streams depth=kTileAccStreamDepth dim=2 -#pragma HLS STREAM variable=rec_acc1_streams depth=kTileAccStreamDepth dim=2 -#pragma HLS STREAM variable=rec_acc2_streams depth=kTileAccStreamDepth dim=2 - -#pragma HLS STREAM variable=cur_out1_streams depth=kOutStreamDepth dim=2 -#pragma HLS STREAM variable=cur_out2_streams depth=kOutStreamDepth dim=2 -#pragma HLS STREAM variable=rec_out1_streams depth=kOutStreamDepth dim=2 -#pragma HLS STREAM variable=rec_out2_streams depth=kOutStreamDepth dim=2 - std::cout << "[INFO] Depth sizing passed." << std::endl; - - // =========================================================================== - // Zero Combinations DMA - // =========================================================================== - // NOTE: We divide the FIFO depths by a certain factor to save BRAMs. Be aware - // that a wrong factor could lead to deadlocks! - const int kFIFOdepthDivider = 8; - const int kStreamDepthIter = kNumIter / kFIFOdepthDivider; - std::cout << "[INFO] DATAFLOW passed." << std::endl; - hls::stream > comb_v_stream1_cur[kNumCurGates]; - hls::stream > comb_v_stream1_rec[kNumRecGates]; - hls::stream > comb_v_stream2_cur[kNumCurGates]; - hls::stream > comb_v_stream2_rec[kNumRecGates]; - hls::stream > comb_u_stream1_cur[kNumCurGates]; - hls::stream > comb_u_stream1_rec[kNumRecGates]; - hls::stream > comb_u_stream2_cur[kNumCurGates]; - hls::stream > comb_u_stream2_rec[kNumRecGates]; -#pragma HLS STREAM depth=kStreamDepthIter variable=comb_v_stream1_cur -#pragma HLS STREAM depth=kStreamDepthIter variable=comb_v_stream1_rec -#pragma HLS STREAM depth=kStreamDepthIter variable=comb_v_stream2_cur -#pragma HLS STREAM depth=kStreamDepthIter variable=comb_v_stream2_rec -#pragma HLS STREAM depth=kStreamDepthIter variable=comb_u_stream1_cur -#pragma HLS STREAM depth=kStreamDepthIter variable=comb_u_stream1_rec -#pragma HLS STREAM depth=kStreamDepthIter variable=comb_u_stream2_cur -#pragma HLS STREAM depth=kStreamDepthIter variable=comb_u_stream2_rec -#pragma HLS ARRAY_PARTITION variable=comb_v_stream1_cur complete -#pragma HLS ARRAY_PARTITION variable=comb_v_stream1_rec complete -#pragma HLS ARRAY_PARTITION variable=comb_v_stream2_cur complete -#pragma HLS ARRAY_PARTITION variable=comb_v_stream2_rec complete -#pragma HLS ARRAY_PARTITION variable=comb_u_stream1_cur complete -#pragma HLS ARRAY_PARTITION variable=comb_u_stream1_rec complete -#pragma HLS ARRAY_PARTITION variable=comb_u_stream2_cur complete -#pragma HLS ARRAY_PARTITION variable=comb_u_stream2_rec complete - - std::cout << "Starting ZeroTileCombinationDMA" << std::endl; - hls_utils::Log(0, "Starting ZeroTileCombinationDMA"); - svd::ZeroTileCombination2LstmDMA(comb_u_port, - comb_u_stream1_cur, comb_u_stream1_rec, comb_u_stream2_cur, - comb_u_stream2_rec); - svd::ZeroTileCombinationDMA(comb_v_port, - comb_v_stream1_cur, comb_v_stream1_rec); - // =========================================================================== - // Current Input DMA - // =========================================================================== - hls_utils::Log(0, "Starting InputDMA"); - svd::InputDMA( - x1_port, comb_u_stream1_cur, x1_streams); - svd::InputDMA( - x2_port, comb_u_stream2_cur, x2_streams); - // =========================================================================== - // Recurrent Input DMA - // =========================================================================== - svd::InputDMA( - h_t1_prev_port, comb_u_stream1_rec, h1_streams); - svd::InputDMA( - h_t2_prev_port, comb_u_stream2_rec, h2_streams); - // =========================================================================== - // Gates DMA - // =========================================================================== - svd::WeightD u_cur_gate_streams[kNumGates / 2][kNumIter * kInputLength / kNumTilesU * (kNumTilesU - kNumZeroTilesU)]; - svd::WeightD u_rec_gate_streams[kNumGates / 2][kNumIter * kOutputLength / kNumTilesU * (kNumTilesU - kNumZeroTilesU)]; - svd::WeightD v_gate_streams[kNumGates][kNumIter * kOutputLength / kNumTilesV * (kNumTilesV - kNumZeroTilesV)]; -#pragma HLS STREAM variable=u_cur_gate_streams depth=1 dim=1 -#pragma HLS STREAM variable=u_rec_gate_streams depth=1 dim=1 -#pragma HLS STREAM variable=v_gate_streams depth=1 dim=1 -#pragma HLS ARRAY_PARTITION variable=u_cur_gate_streams complete dim=1 -#pragma HLS ARRAY_PARTITION variable=u_rec_gate_streams complete dim=1 -#pragma HLS ARRAY_PARTITION variable=v_gate_streams complete dim=1 - - const int kUcurSize = kNumGates / 2 * kNumIter * kInputLength / kNumTilesU * (kNumTilesU - kNumZeroTilesU); - const int kUrecSize = kNumGates / 2 * kNumIter * kOutputLength / kNumTilesU * (kNumTilesU - kNumZeroTilesU); - const int kSsize = kNumGates * kNumIter; - const int kVsize = kNumGates * kNumIter * kOutputLength / kNumTilesV * (kNumTilesV - kNumZeroTilesV); - const int kBitWidthU = FIX_WIDTH * 4; - const int kBitWidthV = FIX_WIDTH * 8; - const int kBitWidthS = FIX_WIDTH * 8; - hls_utils::Log(0, "Starting ArraySplitter"); - svd::ArraySplitter, svd::WeightD, kBitWidthU, FIX_WIDTH, kUcurSize>(u_cur_port, u_cur_gate_streams); - svd::ArraySplitter, svd::WeightD, kBitWidthU, FIX_WIDTH, kUrecSize>(u_rec_port, u_rec_gate_streams); - svd::ArraySplitter, svd::WeightD, kBitWidthV, FIX_WIDTH, kVsize>(v_port, v_gate_streams); - svd::StreamSplitter, svd::WeightD, kBitWidthS, FIX_WIDTH>(kSsize, s1_port, gates_s1_streams); - svd::StreamSplitter, svd::WeightD, kBitWidthS, FIX_WIDTH>(kSsize, s2_port, gates_s2_streams); - const bool kUweights = true; - // =========================================================================== - // Current Dot Product Unit - // =========================================================================== - Current_Gates_Dot_Product_Loop: - for (int g = 0; g < kNumCurGates; ++g) { -#pragma HLS UNROLL - hls_utils::Log(0, std::string("Starting Cur Gate n." + g)); - svd::GateDMA(kUweights, kNumIter, kNumNonZeroTilesU, kNumElemsTileUCurrent, u_cur_gate_streams[g], cur_u_streams[g]); - svd::GateDMA(!kUweights, kNumIter, kNumNonZeroTilesV, kNumElemsTileV, v_gate_streams[g], cur_v_streams[g]); - svd::UDotUnit2Lstm(x1_streams[g], - x2_streams[g], cur_u_streams[g], - cur_dot1_streams[g], cur_dot2_streams[g]); - svd::VDotUnit2LstmV2( - false, - nullptr, - nullptr, - cur_dot1_streams[g], - cur_dot2_streams[g], - gates_s1_streams[g], - gates_s2_streams[g], - cur_v_streams[g], - comb_v_stream1_cur[g], - cur_acc1_streams[g], - cur_acc2_streams[g]); - } - // =========================================================================== - // Recur Dot Product Unit - // =========================================================================== - Recur_Gates_Dot_Product_Loop: - for (int g = 0; g < kNumRecGates; ++g) { -#pragma HLS UNROLL - hls_utils::Log(0, std::string("Starting Rec Gate n." + g)); - svd::GateDMA(kUweights, kNumIter, kNumNonZeroTilesU, kNumElemsTileURecur, u_rec_gate_streams[g], rec_u_streams[g]); - svd::GateDMA(!kUweights, kNumIter, kNumNonZeroTilesV, kNumElemsTileV, v_gate_streams[kNumCurGates + g], rec_v_streams[g]); - svd::UDotUnit2Lstm(h1_streams[g], - h2_streams[g], rec_u_streams[g], - rec_dot1_streams[g], rec_dot2_streams[g]); - svd::VDotUnit2LstmV2( - false, - nullptr, - nullptr, - rec_dot1_streams[g], - rec_dot2_streams[g], - gates_s1_streams[kNumCurGates + g], - gates_s2_streams[kNumCurGates + g], - rec_v_streams[g], - comb_v_stream1_rec[g], - rec_acc1_streams[g], - rec_acc2_streams[g]); - } - // =========================================================================== - // Output Non-Linearities - // =========================================================================== - // NOTE: The output FIFOs in NonLinearityUnit have been resized! Check for deadlocks! - svd::NonLinearityUnit(c_t1_prev_port, - cur_acc1_streams, rec_acc1_streams, h_t1_curr_port, c_t1_curr_port, true, - bias1_port); - svd::NonLinearityUnit(c_t2_prev_port, - cur_acc2_streams, rec_acc2_streams, h_t2_curr_port, c_t2_curr_port, true, - bias2_port); - -#ifdef DEBUG_FIFOS - - const int kNumPEsU = NUM_TILES_U - NUM_ZERO_TILES_U; - const int kNumPEsVCur = INPUT_SIZE / NUM_TILES_V; - const int kNumPEsVRec = HIDDEN_SIZE / NUM_TILES_V; - const int kNumUprobes = kNumGates * kNumPEsU * 3; // one for each: x1, x2, u streams - const int kNumVprobes = kNumGates / 2 * (kNumPEsVCur + kNumPEsVRec); // one for v streams - const int kNumProbes = kNumUprobes + kNumVprobes; - svd::ProbeStream stop_ctrl; - svd::ProbeStream probe_ctrl[kNumUprobes]; - - svd::ClockCounter(probe_ctrl, stop_ctrl, counters_port, clk_count_port); -#endif -} \ No newline at end of file diff --git a/src/lstm/lstm_data_handler.cpp b/src/lstm/lstm_data_handler.cpp deleted file mode 100644 index 5833b8e..0000000 --- a/src/lstm/lstm_data_handler.cpp +++ /dev/null @@ -1 +0,0 @@ -#include "lstm/lstm_data_handler.h" \ No newline at end of file diff --git a/src/lstm/sw/CMakeLists.txt b/src/lstm/sw/CMakeLists.txt deleted file mode 100644 index 24c7190..0000000 --- a/src/lstm/sw/CMakeLists.txt +++ /dev/null @@ -1,13 +0,0 @@ -cmake_minimum_required(VERSION 3.10) - -add_library(SOFT_LSTM STATIC ${CMAKE_SOURCE_DIR}/src/lstm/sw/soft_lstm.cpp) -target_include_directories(SOFT_LSTM PUBLIC ${CMAKE_SOURCE_DIR}/include) -target_include_directories(SOFT_LSTM PUBLIC ${VIVADO_INCLUDE_DIRS}) -target_include_directories(SOFT_LSTM PUBLIC ${OpenCv_INCLUDE_DIRS}) -target_link_libraries(SOFT_LSTM ${OpenCv_LIBS}) - -add_library(SOFT_LSTM_SVD STATIC ${CMAKE_SOURCE_DIR}/src/lstm/sw/soft_lstm_svd.cpp) -target_include_directories(SOFT_LSTM_SVD PUBLIC ${CMAKE_SOURCE_DIR}/include) -target_include_directories(SOFT_LSTM_SVD PUBLIC ${VIVADO_INCLUDE_DIRS}) -target_include_directories(SOFT_LSTM_SVD PUBLIC ${OpenCv_INCLUDE_DIRS}) -target_link_libraries(SOFT_LSTM_SVD ${OpenCv_LIBS}) \ No newline at end of file diff --git a/src/math_utils/CMakeLists.txt b/src/math_utils/CMakeLists.txt index 489c8e7..042ef8d 100644 --- a/src/math_utils/CMakeLists.txt +++ b/src/math_utils/CMakeLists.txt @@ -2,19 +2,19 @@ cmake_minimum_required(VERSION 3.10) add_library(BLAS_UTILS STATIC ${CMAKE_SOURCE_DIR}/src/math_utils/blas_utils.cpp) target_include_directories(BLAS_UTILS PUBLIC ${CMAKE_SOURCE_DIR}/include) -target_include_directories(BLAS_UTILS PUBLIC ${VIVADO_INCLUDE_DIRS}) +target_include_directories(BLAS_UTILS PUBLIC ${HLS_INCLUDE_DIRS}) target_include_directories(BLAS_UTILS PUBLIC ${OpenCv_INCLUDE_DIRS}) target_link_libraries(BLAS_UTILS ${OpenCv_LIBS}) add_library(ACTIVATION_FUNCTIONS STATIC ${CMAKE_SOURCE_DIR}/src/math_utils/activation_functions.cpp) target_include_directories(ACTIVATION_FUNCTIONS PUBLIC ${CMAKE_SOURCE_DIR}/include) -target_include_directories(ACTIVATION_FUNCTIONS PUBLIC ${VIVADO_INCLUDE_DIRS}) +target_include_directories(ACTIVATION_FUNCTIONS PUBLIC ${HLS_INCLUDE_DIRS}) target_include_directories(ACTIVATION_FUNCTIONS PUBLIC ${OpenCv_INCLUDE_DIRS}) target_link_libraries(ACTIVATION_FUNCTIONS ${OpenCv_LIBS}) add_library(DATA_HANDLER STATIC ${CMAKE_SOURCE_DIR}/src/math_utils/data_handler.cpp) target_include_directories(DATA_HANDLER PUBLIC ${CMAKE_SOURCE_DIR}/include) -target_include_directories(DATA_HANDLER PUBLIC ${VIVADO_INCLUDE_DIRS}) +target_include_directories(DATA_HANDLER PUBLIC ${HLS_INCLUDE_DIRS}) target_include_directories(DATA_HANDLER PUBLIC ${OpenCv_INCLUDE_DIRS}) target_link_libraries(DATA_HANDLER ${OpenCv_LIBS}) diff --git a/src/svd.cpp b/src/svd.cpp index a392d80..9926a52 100644 --- a/src/svd.cpp +++ b/src/svd.cpp @@ -1,7 +1,9 @@ #include "svd_params.h" #include "svd_ip.h" -#include "lstm/hls/lstm_svd.h" -#include "lstm/lstm_data_handler.h" +#include "layers/lstm/lstm_data_handler.h" +#include "layers/lstm/sw/soft_lstm_svd.h" +#include "layers/lstm/hls/lstm_svd.h" +#include "layers/lstm/hls/lstm_svd_emulator.h" #include "ap_fixed.h" @@ -11,17 +13,7 @@ int main(int argc, char const *argv[]) { std::cout << "Hello SVD!" << std::endl; - typename svd_params::ActivationD x_port[svd_params::N][svd_params::I] = {rand()}; - typename svd_params::UPortD u_port[svd_params::PrunedSizeU] = {rand()}; - typename svd_params::SPortD s_port[svd_params::N][svd_params::R] = {rand()}; - typename svd_params::VPortD v_port[svd_params::PrunedSizeV] = {rand()}; - ap_uint nz_u_port[svd_params::N] = {rand()}; - ap_uint nz_v_port[svd_params::N] = {rand()}; - typename svd_params::ActivationD y_port[svd_params::N][svd_params::G][svd_params::H] = {rand()}; - - std::cout << "Running SvdIp2Inputs." << std::endl; - SvdIp2Inputs(x_port, u_port, s_port, v_port, nz_u_port, nz_v_port, y_port); - + const bool kTestSoftwareAccelerator = false; const int kNumInputs = 2; const int kRefinementSteps = NUM_ITERATIONS; const int kLstmInputSize = INPUT_SIZE; @@ -33,15 +25,22 @@ int main(int argc, char const *argv[]) { const int kNumZeroTilesU = NUM_ZERO_TILES_U; const int kNumTilesV = NUM_TILES_V; const int kNumZeroTilesV = NUM_ZERO_TILES_V; + const int kLutSize = (FIX_WIDTH == 16) ? 512 : 256; std::cout << "Setting AcceleratorBlob." << std::endl; - typedef lstm::AcceleratorBlob AccelDataType; - AccelDataType storage = AccelDataType(kNumInputs, kRefinementSteps, kUCurSize, + typedef svd::AcceleratorBlob AcceleratorStorage; + AcceleratorStorage storage = AcceleratorStorage(kNumInputs, kRefinementSteps, kUCurSize, kURecSize, kVSize, kNumTilesU, kNumZeroTilesU, kNumTilesV, kNumZeroTilesV); - std::cout << "printing stuff..." << std::endl; - std::cout << storage.get_fix_x(0) << std::endl; - std::cout << storage.get_fix_x(0)[234] << std::endl; + std::cout << "Running SvdIp2Inputs." << std::endl; + typename svd::svd_params::ActivationD x_port[svd::svd_params::N][svd::svd_params::I] = {rand()}; + typename svd::svd_params::UPortD u_port[svd::svd_params::R * svd::svd_params::PrunedSizeU] = {rand()}; + typename svd::svd_params::SPortD s_port[svd::svd_params::N][svd::svd_params::R] = {rand()}; + typename svd::svd_params::VPortD v_port[svd::svd_params::R * svd::svd_params::PrunedSizeV] = {rand()}; + ap_uint nz_u_port[svd::svd_params::G * svd::svd_params::R] = {rand()}; + ap_uint nz_v_port[svd::svd_params::G * svd::svd_params::R] = {rand()}; + typename svd::svd_params::ActivationD y_port[svd::svd_params::N][svd::svd_params::G][svd::svd_params::H] = {rand()}; + // SvdIp2Inputs(x_port, u_port, s_port, v_port, nz_u_port, nz_v_port, y_port); std::cout << "reinterpret_cast." << std::endl; @@ -51,38 +50,162 @@ int main(int argc, char const *argv[]) { ap_uint<128>* s1_uint = reinterpret_cast*>(storage.get_fix_s(0)); ap_uint<128>* s2_uint = reinterpret_cast*>(storage.get_fix_s(1)); - std::cout << "Starting accelerator." << std::endl; - assert(storage.get_u_cur_size() == NUM_ITERATIONS*4*INPUT_SIZE / NUM_TILES_U * (NUM_TILES_U - NUM_ZERO_TILES_U)); assert(storage.get_u_rec_size() == NUM_ITERATIONS*4*HIDDEN_SIZE / NUM_TILES_U * (NUM_TILES_U - NUM_ZERO_TILES_U)); assert(storage.get_v_size() == NUM_ITERATIONS*4*2*HIDDEN_SIZE / NUM_TILES_V * (NUM_TILES_V - NUM_ZERO_TILES_V)); - - std::cout << (storage.get_u_cur_size() == NUM_ITERATIONS*4*INPUT_SIZE / NUM_TILES_U * (NUM_TILES_U - NUM_ZERO_TILES_U) ? "true" : "false") << std::endl; - std::cout << (storage.get_u_rec_size() == NUM_ITERATIONS*4*HIDDEN_SIZE / NUM_TILES_U * (NUM_TILES_U - NUM_ZERO_TILES_U) ? "true" : "false") << std::endl; - std::cout << (storage.get_v_size() == NUM_ITERATIONS*4*2*HIDDEN_SIZE / NUM_TILES_V * (NUM_TILES_V - NUM_ZERO_TILES_V) ? "true" : "false") << std::endl; - - SvdModel2LstmSDSoCV2( - storage.get_fix_x(0), - storage.get_fix_x(1), - storage.get_fix_h(0), - storage.get_fix_h(1), - storage.get_fix_c(0), - storage.get_fix_c(1), - u_cur_uint, - u_rec_uint, - v_uint, - s1_uint, - s2_uint, - storage.get_fix_bias(0), - storage.get_fix_bias(1), - storage.get_fix_z_v(), - storage.get_fix_z_u(), - storage.get_fix_h(0), - storage.get_fix_h(1), - storage.get_fix_c(0), - storage.get_fix_c(1)); - + assert(storage.get_s_size() == NUM_ITERATIONS*8); + + svd::ActivationD** h_prev_hls = new svd::ActivationD*[kNumInputs]; + svd::ActivationD** h_curr_hls = new svd::ActivationD*[kNumInputs]; + svd::ActivationD** c_prev_hls = new svd::ActivationD*[kNumInputs]; + svd::ActivationD** c_curr_hls = new svd::ActivationD*[kNumInputs]; + svd::ActivationD** h_prev_emulator = new svd::ActivationD*[kNumInputs]; + svd::ActivationD** h_curr_emulator = new svd::ActivationD*[kNumInputs]; + svd::ActivationD** c_prev_emulator = new svd::ActivationD*[kNumInputs]; + svd::ActivationD** c_curr_emulator = new svd::ActivationD*[kNumInputs]; + svd::ActivationD** h_prev_sw = new svd::ActivationD*[kNumInputs]; + svd::ActivationD** h_curr_sw = new svd::ActivationD*[kNumInputs]; + svd::ActivationD** c_prev_sw = new svd::ActivationD*[kNumInputs]; + svd::ActivationD** c_curr_sw = new svd::ActivationD*[kNumInputs]; + for (int i = 0; i < kNumInputs; ++i) { + h_prev_emulator[i] = new svd::ActivationD[kLstmOutputSize]; + h_curr_emulator[i] = new svd::ActivationD[kLstmOutputSize]; + c_prev_emulator[i] = new svd::ActivationD[kLstmOutputSize]; + c_curr_emulator[i] = new svd::ActivationD[kLstmOutputSize]; + h_prev_hls[i] = reinterpret_cast(storage.get_fix_h_prev(i)); + h_curr_hls[i] = reinterpret_cast(storage.get_fix_h_curr(i)); + c_prev_hls[i] = reinterpret_cast(storage.get_fix_c_prev(i)); + c_curr_hls[i] = reinterpret_cast(storage.get_fix_c_curr(i)); + } + for (int i = 0; i < NUM_TIMESTEPS; ++i) { + for (int j = 0; j < kNumInputs; ++j) { + std::swap(h_prev_hls[j], h_curr_hls[j]); + std::swap(c_prev_hls[j], c_curr_hls[j]); + } + std::cout << "Starting accelerator." << std::endl; + svd::SvdModel2LstmSDSoCV2(storage.get_fix_x(0), storage.get_fix_x(1), // [s * NUM_TIMESTEPS + t] samples? + h_prev_hls[0], h_prev_hls[1], c_prev_hls[0], c_prev_hls[1], + u_cur_uint, u_rec_uint, v_uint, s1_uint, s2_uint, + storage.get_fix_bias(0), storage.get_fix_bias(1), + storage.get_fix_nz_v(), storage.get_fix_nz_u(), + h_curr_hls[0], h_curr_hls[1], c_curr_hls[0], c_curr_hls[1]); + for (int j = 0; j < kNumInputs; ++j) { + std::cout << "Starting Emulator: " << j << std::endl; + svd::LstmSvdSoftEmulator( + kLstmInputSize, kLstmOutputSize, kRefinementSteps, + kNumTilesU, kNumZeroTilesU, + kNumTilesV, kNumZeroTilesV, 1, storage.get_fix_x(j), + storage.get_cur_gates("i")->get_u()->fix_pruned_data(), + storage.get_cur_gates("i")->get_s(j).fix_pruned_data(), + storage.get_cur_gates("i")->get_v()->fix_pruned_data(), + storage.get_cur_gates("i")->get_u()->get_nz_idx(), + storage.get_cur_gates("i")->get_v()->get_nz_idx(), + storage.get_cur_gates("f")->get_u()->fix_pruned_data(), + storage.get_cur_gates("f")->get_s(j).fix_pruned_data(), + storage.get_cur_gates("f")->get_v()->fix_pruned_data(), + storage.get_cur_gates("f")->get_u()->get_nz_idx(), + storage.get_cur_gates("f")->get_v()->get_nz_idx(), + storage.get_cur_gates("c")->get_u()->fix_pruned_data(), + storage.get_cur_gates("c")->get_s(j).fix_pruned_data(), + storage.get_cur_gates("c")->get_v()->fix_pruned_data(), + storage.get_cur_gates("c")->get_u()->get_nz_idx(), + storage.get_cur_gates("c")->get_v()->get_nz_idx(), + storage.get_cur_gates("o")->get_u()->fix_pruned_data(), + storage.get_cur_gates("o")->get_s(j).fix_pruned_data(), + storage.get_cur_gates("o")->get_v()->fix_pruned_data(), + storage.get_cur_gates("o")->get_u()->get_nz_idx(), + storage.get_cur_gates("o")->get_v()->get_nz_idx(), + storage.get_rec_gates("i")->get_u()->fix_pruned_data(), + storage.get_rec_gates("i")->get_s(j).fix_pruned_data(), + storage.get_rec_gates("i")->get_v()->fix_pruned_data(), + storage.get_rec_gates("i")->get_u()->get_nz_idx(), + storage.get_rec_gates("i")->get_v()->get_nz_idx(), + storage.get_rec_gates("f")->get_u()->fix_pruned_data(), + storage.get_rec_gates("f")->get_s(j).fix_pruned_data(), + storage.get_rec_gates("f")->get_v()->fix_pruned_data(), + storage.get_rec_gates("f")->get_u()->get_nz_idx(), + storage.get_rec_gates("f")->get_v()->get_nz_idx(), + storage.get_rec_gates("c")->get_u()->fix_pruned_data(), + storage.get_rec_gates("c")->get_s(j).fix_pruned_data(), + storage.get_rec_gates("c")->get_v()->fix_pruned_data(), + storage.get_rec_gates("c")->get_u()->get_nz_idx(), + storage.get_rec_gates("c")->get_v()->get_nz_idx(), + storage.get_rec_gates("o")->get_u()->fix_pruned_data(), + storage.get_rec_gates("o")->get_s(j).fix_pruned_data(), + storage.get_rec_gates("o")->get_v()->fix_pruned_data(), + storage.get_rec_gates("o")->get_u()->get_nz_idx(), + storage.get_rec_gates("o")->get_v()->get_nz_idx(), + storage.get_fix_bias(j), + c_prev_emulator[j], h_prev_emulator[j], + c_curr_emulator[j], h_curr_emulator[j]); + std::cout << "Swapping LSTM outputs." << std::endl; + std::swap(h_prev_emulator[j], h_curr_emulator[j]); + std::swap(c_prev_emulator[j], c_curr_emulator[j]); + } + } + const int num_errors = storage.CountMismatches(h_prev_emulator); + std::cout << "Number of mismatches: " << num_errors << std::endl; + if (kTestSoftwareAccelerator) { + for (int j = 0; j < kNumInputs; ++j) { + const bool kVerbose = true; + const bool kUseBlas = false; + const int kUsaFloat = 0; + const int kNumSamples = 1; + std::cout << "Starting BLAS." << std::endl; + svd::SvdModelLstmSoftware(kVerbose, kUseBlas, kUsaFloat, + storage.get_x(j), kNumSamples, NUM_TIMESTEPS, NUM_ITERATIONS, + INPUT_SIZE, HIDDEN_SIZE, + storage.get_cur_gates("i")->get_u()->data(), + storage.get_cur_gates("i")->get_s(j).data(), + storage.get_cur_gates("i")->get_v()->data(), + storage.get_cur_gates("f")->get_u()->data(), + storage.get_cur_gates("f")->get_s(j).data(), + storage.get_cur_gates("f")->get_v()->data(), + storage.get_cur_gates("c")->get_u()->data(), + storage.get_cur_gates("c")->get_s(j).data(), + storage.get_cur_gates("c")->get_v()->data(), + storage.get_cur_gates("o")->get_u()->data(), + storage.get_cur_gates("o")->get_s(j).data(), + storage.get_cur_gates("o")->get_v()->data(), + storage.get_rec_gates("i")->get_u()->data(), + storage.get_rec_gates("i")->get_s(j).data(), + storage.get_rec_gates("i")->get_v()->data(), + storage.get_rec_gates("f")->get_u()->data(), + storage.get_rec_gates("f")->get_s(j).data(), + storage.get_rec_gates("f")->get_v()->data(), + storage.get_rec_gates("c")->get_u()->data(), + storage.get_rec_gates("c")->get_s(j).data(), + storage.get_rec_gates("c")->get_v()->data(), + storage.get_rec_gates("o")->get_u()->data(), + storage.get_rec_gates("o")->get_s(j).data(), + storage.get_rec_gates("o")->get_v()->data(), + &storage.get_bias(j)[0 * storage.get_lstm_output_size()], + &storage.get_bias(j)[1 * storage.get_lstm_output_size()], + &storage.get_bias(j)[2 * storage.get_lstm_output_size()], + &storage.get_bias(j)[3 * storage.get_lstm_output_size()], + storage.get_h(j)); + } + } + storage.ResetLstmOutputs(); std::cout << "Cleaning up." << std::endl; + delete[] h_prev_hls; + delete[] h_curr_hls; + delete[] c_prev_hls; + delete[] c_curr_hls; + delete[] h_prev_sw; + delete[] h_curr_sw; + delete[] c_prev_sw; + delete[] c_curr_sw; + for (int i = 0; i < kNumInputs; ++i) { + delete[] h_prev_emulator[i]; + delete[] h_curr_emulator[i]; + delete[] c_prev_emulator[i]; + delete[] c_curr_emulator[i]; + } + delete[] h_prev_emulator; + delete[] h_curr_emulator; + delete[] c_prev_emulator; + delete[] c_curr_emulator; return 0; } \ No newline at end of file diff --git a/src/svd_ip.cpp b/src/svd_ip.cpp index 7b9fec5..1150bbb 100644 --- a/src/svd_ip.cpp +++ b/src/svd_ip.cpp @@ -1,12 +1,16 @@ #include "svd_ip.h" +namespace svd { + void SvdIp2Inputs( const typename svd_params::ActivationD x_port[svd_params::N][svd_params::I], - const typename svd_params::UPortD u_port[svd_params::PrunedSizeU], + const typename svd_params::UPortD u_port[svd_params::R * svd_params::PrunedSizeU], const typename svd_params::SPortD s_port[svd_params::N][svd_params::R], - const typename svd_params::VPortD v_port[svd_params::PrunedSizeV], - const ap_uint nz_u_port[svd_params::N], - const ap_uint nz_v_port[svd_params::N], + const typename svd_params::VPortD v_port[svd_params::R * svd_params::PrunedSizeV], + const ap_uint nz_u_port[svd_params::G * svd_params::R], + const ap_uint nz_v_port[svd_params::G * svd_params::R], typename svd_params::ActivationD y_port[svd_params::N][svd_params::G][svd_params::H]) { - SvdIP(x_port, u_port, s_port, v_port, nz_u_port, nz_v_port, y_port); -} \ No newline at end of file + svd::SvdIP(x_port, u_port, s_port, v_port, nz_u_port, nz_v_port, y_port); +} + +} // svd \ No newline at end of file diff --git a/src/testbenches/CMakeLists.txt b/src/testbenches/CMakeLists.txt index 0ee8d0f..74ef6ab 100644 --- a/src/testbenches/CMakeLists.txt +++ b/src/testbenches/CMakeLists.txt @@ -1,51 +1,50 @@ cmake_minimum_required(VERSION 3.10) -# add_executable(OPENCV_TEST ${CMAKE_SOURCE_DIR}/src/tb/test_hdmi.cpp) -# target_include_directories(OPENCV_TEST PUBLIC ${CMAKE_SOURCE_DIR}/include) -# target_include_directories(OPENCV_TEST PUBLIC ${VIVADO_INCLUDE_DIRS}) -# target_include_directories(OPENCV_TEST PUBLIC ${OpenCv_INCLUDE_DIRS}) -# target_link_libraries(OPENCV_TEST ${OpenCv_LIBS}) - -# add_executable(TEST_AXIS_LIB ${CMAKE_SOURCE_DIR}/src/tb/test_axis_lib.cpp) -# target_include_directories(TEST_AXIS_LIB PUBLIC ${CMAKE_SOURCE_DIR}/include) -# target_include_directories(TEST_AXIS_LIB PUBLIC ${VIVADO_INCLUDE_DIRS}) -# target_include_directories(TEST_AXIS_LIB PUBLIC ${OpenCv_INCLUDE_DIRS}) -# target_link_libraries(TEST_AXIS_LIB ${OpenCv_LIBS}) -# target_link_libraries(TEST_AXIS_LIB AXIS_LIB) - -# add_executable(TEST_CONV_LAYER ${CMAKE_SOURCE_DIR}/src/tb/test_conv_layer.cpp) -# target_include_directories(TEST_CONV_LAYER PUBLIC ${CMAKE_SOURCE_DIR}/include) -# target_include_directories(TEST_CONV_LAYER PUBLIC ${VIVADO_INCLUDE_DIRS}) -# target_link_libraries(TEST_CONV_LAYER CONV_LAYER) - -# add_executable(TEST_DENSE_LAYER ${CMAKE_SOURCE_DIR}/src/tb/test_dense_layer.cpp) -# target_include_directories(TEST_DENSE_LAYER PUBLIC ${CMAKE_SOURCE_DIR}/include) -# target_include_directories(TEST_DENSE_LAYER PUBLIC ${VIVADO_INCLUDE_DIRS}) -# target_link_libraries(TEST_DENSE_LAYER CONV_LAYER) - -# add_executable(TEST_DQNET ${CMAKE_SOURCE_DIR}/src/tb/test_dqnet.cpp) -# target_include_directories(TEST_DQNET PUBLIC ${CMAKE_SOURCE_DIR}/include) -# target_include_directories(TEST_DQNET PUBLIC ${VIVADO_INCLUDE_DIRS}) -# target_link_libraries(TEST_DQNET DQNET) - -# add_executable(TEST_GAME ${CMAKE_SOURCE_DIR}/src/tb/test_game.cpp) -# target_include_directories(TEST_GAME PUBLIC ${CMAKE_SOURCE_DIR}/include) -# target_include_directories(TEST_GAME PUBLIC ${VIVADO_INCLUDE_DIRS}) -# target_include_directories(TEST_GAME PUBLIC ${OpenCv_INCLUDE_DIRS}) -# target_link_libraries(TEST_GAME ${OpenCv_LIBS}) -# target_link_libraries(TEST_GAME GAME) - -# add_executable(TEST_PONG ${CMAKE_SOURCE_DIR}/src/tb/test_pong.cpp) -# target_include_directories(TEST_PONG PUBLIC ${CMAKE_SOURCE_DIR}/include) -# target_include_directories(TEST_PONG PUBLIC ${VIVADO_INCLUDE_DIRS}) -# target_include_directories(TEST_PONG PUBLIC ${OpenCv_INCLUDE_DIRS}) -# target_link_libraries(TEST_PONG ${OpenCv_LIBS}) -# target_link_libraries(TEST_PONG PONG) - -# # add_test(NAME TestOpenCv COMMAND OPENCV_TEST) -# # add_test(NAME TestAxisLib COMMAND TEST_AXIS_LIB) -# # add_test(NAME TestConvLayer COMMAND TEST_CONV_LAYER) -# add_test(NAME TestDenseLayer COMMAND TEST_DENSE_LAYER) -# # add_test(NAME TestDQNet COMMAND TEST_DQNET) -# # add_test(NAME TestGame COMMAND TEST_GAME) -# # add_test(NAME TestPong COMMAND TEST_PONG) \ No newline at end of file +add_executable(TEST_U_KERNEL ${CMAKE_SOURCE_DIR}/src/testbenches/test_u_kernel.cpp) +target_include_directories(TEST_U_KERNEL PUBLIC ${CMAKE_SOURCE_DIR}/include) +target_include_directories(TEST_U_KERNEL PUBLIC ${HLS_INCLUDE_DIRS}) +target_include_directories(TEST_U_KERNEL PUBLIC ${OpenCv_INCLUDE_DIRS}) +target_link_libraries(TEST_U_KERNEL ${OpenCv_LIBS}) +target_link_libraries(TEST_U_KERNEL U_KERNEL) + +add_executable(TEST_V_KERNEL ${CMAKE_SOURCE_DIR}/src/testbenches/test_v_kernel.cpp) +target_include_directories(TEST_V_KERNEL PUBLIC ${CMAKE_SOURCE_DIR}/include) +target_include_directories(TEST_V_KERNEL PUBLIC ${HLS_INCLUDE_DIRS}) +target_include_directories(TEST_V_KERNEL PUBLIC ${OpenCv_INCLUDE_DIRS}) +target_link_libraries(TEST_V_KERNEL ${OpenCv_LIBS}) +target_link_libraries(TEST_V_KERNEL V_KERNEL) + +add_executable(TEST_GEMV_KERNEL ${CMAKE_SOURCE_DIR}/src/testbenches/test_gemv_kernel.cpp) +target_include_directories(TEST_GEMV_KERNEL PUBLIC ${CMAKE_SOURCE_DIR}/include) +target_include_directories(TEST_GEMV_KERNEL PUBLIC ${HLS_INCLUDE_DIRS}) +target_include_directories(TEST_GEMV_KERNEL PUBLIC ${OpenCv_INCLUDE_DIRS}) +target_link_libraries(TEST_GEMV_KERNEL ${OpenCv_LIBS}) +target_link_libraries(TEST_GEMV_KERNEL GEMV_KERNEL) + +add_executable(TEST_DENSE_SVD ${CMAKE_SOURCE_DIR}/src/testbenches/test_dense_svd.cpp) +target_include_directories(TEST_DENSE_SVD PUBLIC ${CMAKE_SOURCE_DIR}/include) +target_include_directories(TEST_DENSE_SVD PUBLIC ${HLS_INCLUDE_DIRS}) +target_include_directories(TEST_DENSE_SVD PUBLIC ${OpenCv_INCLUDE_DIRS}) +target_link_libraries(TEST_DENSE_SVD ${OpenCv_LIBS}) +target_link_libraries(TEST_DENSE_SVD DENSE_SVD) + +add_executable(TEST_LSTM_SVD ${CMAKE_SOURCE_DIR}/src/testbenches/test_lstm_svd.cpp) +target_include_directories(TEST_LSTM_SVD PUBLIC ${CMAKE_SOURCE_DIR}/include) +target_include_directories(TEST_LSTM_SVD PUBLIC ${HLS_INCLUDE_DIRS}) +target_include_directories(TEST_LSTM_SVD PUBLIC ${OpenCv_INCLUDE_DIRS}) +target_link_libraries(TEST_LSTM_SVD ${OpenCv_LIBS}) +target_link_libraries(TEST_LSTM_SVD LSTM_SVD) + +add_executable(TEST_SVD_KERNEL ${CMAKE_SOURCE_DIR}/src/testbenches/test_svd_kernel.cpp) +target_include_directories(TEST_SVD_KERNEL PUBLIC ${CMAKE_SOURCE_DIR}/include) +target_include_directories(TEST_SVD_KERNEL PUBLIC ${HLS_INCLUDE_DIRS}) +target_include_directories(TEST_SVD_KERNEL PUBLIC ${OpenCv_INCLUDE_DIRS}) +target_link_libraries(TEST_SVD_KERNEL ${OpenCv_LIBS}) +target_link_libraries(TEST_SVD_KERNEL SVD_KERNEL) + +add_test(NAME TestU_Kernel COMMAND TEST_U_KERNEL) +add_test(NAME TestV_Kernel COMMAND TEST_V_KERNEL) +add_test(NAME TestGemvKernel COMMAND TEST_GEMV_KERNEL) +add_test(NAME TestDenseSvd COMMAND TEST_DENSE_SVD) +add_test(NAME TestLstmSvd COMMAND TEST_LSTM_SVD) +add_test(NAME TestSvdKernel COMMAND TEST_SVD_KERNEL) \ No newline at end of file diff --git a/src/testbenches/test_dense_svd.cpp b/src/testbenches/test_dense_svd.cpp new file mode 100644 index 0000000..851850c --- /dev/null +++ b/src/testbenches/test_dense_svd.cpp @@ -0,0 +1,73 @@ +#include "testbenches/test_dense_svd.h" +#include "dma/axis_lib.h" + +#ifdef __VITIS_HLS__ +#include "hls_vector.h" +#endif +#include "ap_int.h" +#include "hls_stream.h" +#include +#include + +int main(int argc, char const *argv[]) { +#ifndef __VITIS_HLS__ + return 0; +#else + std::cout << "[INFO] Starting HlsDenseSvd test." << std::endl; + typedef typename svd::dense_params::ActivationD ActivationType; + const int kG = svd::dense_params::G; + int num_active_inputs = svd::dense_params::N; + int input_size = 16; + int output_size = 16; + int max_R = 1; + int num_tests = 2; + auto get_arg = [&](const int i, const int max_val, int& arg) { + if (argc >= i) { + arg = atoi(argv[i -1]); + arg = (arg > max_val) ? max_val : arg; + } + }; + get_arg(2, svd::dense_params::N, num_active_inputs); + get_arg(3, 512, max_R); + get_arg(4, svd::dense_params::I, input_size); + get_arg(5, svd::dense_params::H, output_size); + get_arg(6, 32, num_tests); + int num_refinements[svd::dense_params::N]; + ActivationType* x = new ActivationType[num_active_inputs * input_size]; + ActivationType* u = new ActivationType[max_R * input_size * kG]; + ActivationType* s = new ActivationType[max_R * num_active_inputs * kG]; + ActivationType* v = new ActivationType[max_R * output_size * kG]; + ActivationType* bias = new ActivationType[num_active_inputs * kG * output_size]; + ActivationType* y = new ActivationType[num_active_inputs * kG * output_size]; + auto init_random = [&](const int size, ActivationType* x) { + for (int i = 0; i < size; ++i) { + if (std::is_same::value) { + x[i] = ActivationType(rand()); + } else { + x[i] = ActivationType(rand() * 0.00001); + } + } + }; + for (int i = 0; i < svd::dense_params::N; ++i) { + num_refinements[i] = max_R; + } + init_random(num_active_inputs * input_size, x); + init_random(max_R * input_size * kG, u); + init_random(max_R * num_active_inputs * kG, s); + init_random(max_R * output_size * kG, v); + init_random(num_active_inputs * kG * output_size, bias); + std::cout << "[INFO] Calling accelerator." << std::endl; + for (int i = 0; i < num_tests; ++i) { + HlsWrapperDenseSvd(num_active_inputs, input_size, output_size, + num_refinements, x, u, s, v, bias, y); + } + delete[] x; + delete[] u; + delete[] s; + delete[] v; + delete[] bias; + delete[] y; + std::cout << "[INFO] Exiting." << std::endl; + return 0; +#endif // end __VITIS_HLS__ +} \ No newline at end of file diff --git a/src/testbenches/test_gemv_kernel.cpp b/src/testbenches/test_gemv_kernel.cpp new file mode 100644 index 0000000..5a8787e --- /dev/null +++ b/src/testbenches/test_gemv_kernel.cpp @@ -0,0 +1,76 @@ +#include "kernel/gemv_kernel.h" + +#include "hls_stream.h" +#ifdef __VITIS_HLS__ +#include "hls_vector.h" +#endif + +int main(int argc, char const *argv[]) { +#ifndef __VITIS_HLS__ + return 0; +#else + typedef hls::vector VectType; + testgemv::DataType x[testgemv::I]; + testgemv::DataType w[testgemv::I][testgemv::R]; + + testgemv::DataType y[testgemv::R] = {0}; + + hls::stream x_port[testgemv::N]; + hls::stream w_port[testgemv::N]; + hls::stream y_port[testgemv::N]; + for (int i = 0; i < testgemv::I; ++i) { + + x[i] = testgemv::DataType(rand() * 0.0001); + for (int j = 0; j < testgemv::R; ++j) { + w[i][j] = testgemv::DataType(rand() * 0.0001); + } + } + + for (int i = 0; i < testgemv::R; ++i) { + for (int j = 0; j < testgemv::I / testgemv::T; ++j) { + VectType tmp; + for (int k = 0; k < testgemv::T; ++k) { + tmp[k] = w[j * testgemv::T + k][i]; + } + for (int ii = 0; ii < testgemv::N; ++ii) { + w_port[ii] << tmp; + } + } + } + + for (int i = 0; i < testgemv::R; ++i) { + for (int j = 0; j < testgemv::I / testgemv::T; ++j) { + VectType tmp; + for (int k = 0; k < testgemv::T; ++k) { + tmp[k] = x[j * testgemv::T + k]; + } + for (int ii = 0; ii < testgemv::N; ++ii) { + x_port[ii] << tmp; + } + } + } + + HlsGemvKernel(testgemv::I, testgemv::R, x_port[0], x_port[1], w_port[0], w_port[1], y_port[0], y_port[1]); + for (int i = 0; i < testgemv::R; ++i) { + y[i] = 0; + for (int j = 0; j < testgemv::I; ++j) { + y[i] += x[j] * w[j][i]; + } + } + + std::cout << "Checking results." << std::endl; + int num_errors = 0; + for (int i = 0; i < testgemv::R; ++i) { + for (int j = 0; j < testgemv::N; ++j) { + auto y_test = y_port[j].read(); + if (y[i] - y_test > testgemv::DataType(0.001)) { + std::cout << i << ") test/gold: " << y_test << " / " + << y[i] << std::endl; + ++num_errors; + } + } + } + std::cout << "[INFO] Number of mismatches: " << num_errors << std::endl; + return 0; // num_errors; +#endif +} \ No newline at end of file diff --git a/src/testbenches/test_lstm_svd.cpp b/src/testbenches/test_lstm_svd.cpp new file mode 100644 index 0000000..7b1bdd0 --- /dev/null +++ b/src/testbenches/test_lstm_svd.cpp @@ -0,0 +1,90 @@ +#include "testbenches/test_lstm_svd.h" + +#include "dma/axis_lib.h" + +#ifdef __VITIS_HLS__ +#include "hls_vector.h" +#endif +#include "ap_int.h" +#include "hls_stream.h" +#include +#include + +int main(int argc, char const *argv[]) { +#ifndef __VITIS_HLS__ + return 0; +#else + std::cout << "[INFO] Starting HlsDenseSvd test." << std::endl; + typedef typename svd::lstm_params::ActivationD ActivationType; + const int kG = svd::lstm_params::G; + int num_active_inputs = svd::lstm_params::N; + int input_size = 16; + int output_size = 16; + int max_R = 1; + int num_tests = 2; + auto get_arg = [&](const int i, const int max_val, int& arg) { + if (argc >= i) { + arg = atoi(argv[i -1]); + arg = (arg > max_val) ? max_val : arg; + } + }; + get_arg(2, svd::lstm_params::N, num_active_inputs); + get_arg(3, 512, max_R); + get_arg(4, svd::lstm_params::I, input_size); + get_arg(5, svd::lstm_params::H, output_size); + get_arg(6, 32, num_tests); + int num_refinements[svd::lstm_params::N]; + ActivationType* x = new ActivationType[num_active_inputs * input_size]; + ActivationType* h_prev = new ActivationType[num_active_inputs * output_size]; + ActivationType* c_prev = new ActivationType[num_active_inputs * output_size]; + ActivationType* h_curr = new ActivationType[num_active_inputs * output_size]; + ActivationType* c_curr = new ActivationType[num_active_inputs * output_size]; + ActivationType* u_cur = new ActivationType[max_R * input_size * kG]; + ActivationType* s_cur = new ActivationType[max_R * num_active_inputs * kG]; + ActivationType* v_cur = new ActivationType[max_R * output_size * kG]; + ActivationType* u_rec = new ActivationType[max_R * output_size * kG]; + ActivationType* s_rec = new ActivationType[max_R * num_active_inputs * kG]; + ActivationType* v_rec = new ActivationType[max_R * output_size * kG]; + ActivationType* bias = new ActivationType[num_active_inputs * kG * output_size]; + auto init_random = [&](const int size, ActivationType* x) { + for (int i = 0; i < size; ++i) { + if (std::is_same::value) { + x[i] = ActivationType(rand()); + } else { + x[i] = ActivationType(rand() * 0.00001); + } + } + }; + for (int i = 0; i < svd::lstm_params::N; ++i) { + num_refinements[i] = max_R; + } + init_random(num_active_inputs * input_size, x); + init_random(max_R * input_size * kG, u_cur); + init_random(max_R * num_active_inputs * kG, s_cur); + init_random(max_R * output_size * kG, v_cur); + init_random(max_R * output_size * kG, u_rec); + init_random(max_R * num_active_inputs * kG, s_rec); + init_random(max_R * output_size * kG, v_rec); + init_random(num_active_inputs * kG * output_size, bias); + std::cout << "[INFO] Calling accelerator." << std::endl; + for (int i = 0; i < num_tests; ++i) { + HlsWrapperLstmSvd(num_active_inputs, input_size, output_size, + num_refinements, x, u_cur, s_cur, v_cur, h_prev, u_rec, s_rec, v_rec, + bias, c_prev, h_curr, c_curr); + } + delete[] x; + delete[] h_prev; + delete[] c_prev; + delete[] h_curr; + delete[] c_curr; + delete[] u_cur; + delete[] s_cur; + delete[] v_cur; + delete[] u_rec; + delete[] s_rec; + delete[] v_rec; + delete[] bias; + std::cout << "[INFO] Exiting." << std::endl; + return 0; +#endif // end __VITIS_HLS__ +} \ No newline at end of file diff --git a/src/testbenches/test_svd_kernel.cpp b/src/testbenches/test_svd_kernel.cpp new file mode 100644 index 0000000..20e4f09 --- /dev/null +++ b/src/testbenches/test_svd_kernel.cpp @@ -0,0 +1,85 @@ +#include "testbenches/test_svd_kernel.h" +#include "dma/axis_lib.h" + +#ifdef __VITIS_HLS__ +#include "hls_vector.h" +#endif +#include "ap_int.h" +#include "hls_stream.h" +#include +#include + +int main(int argc, char const *argv[]) { +#ifndef __VITIS_HLS__ + return 0; +#else + std::cout << "[INFO] Starting HlsSvdKernel test." << std::endl; + typedef typename svd::svd_params::ActivationD ActivationType; + const int kG = svd::svd_params::G; + int num_active_inputs = svd::svd_params::N; + int input_size = 16; + int output_size = 16; + int max_R = 1; + int num_tests = 2; + auto get_arg = [&](const int i, const int max_val, int& arg) { + if (argc >= i) { + arg = atoi(argv[i -1]); + arg = (arg > max_val) ? max_val : arg; + } + }; + get_arg(2, svd::svd_params::N, num_active_inputs); + get_arg(3, 512, max_R); + get_arg(4, svd::svd_params::I, input_size); + get_arg(5, svd::svd_params::H, output_size); + get_arg(6, 32, num_tests); + int num_refinements[svd::svd_params::N]; + ActivationType* x = new ActivationType[num_active_inputs * input_size]; + ActivationType* u = new ActivationType[max_R * input_size * kG]; + ActivationType* s = new ActivationType[max_R * num_active_inputs * kG]; + ActivationType* v = new ActivationType[max_R * output_size * kG]; + ActivationType* y = new ActivationType[num_active_inputs * kG * output_size]; + hls::stream x_port("x_port"); + hls::stream u_port("u_port"); + hls::stream s_port("s_port"); + hls::stream v_port("v_port"); + hls::stream y_port("y_port"); + auto init_random = [&](const int size, ActivationType* x) { + for (int i = 0; i < size; ++i) { + if (std::is_same::value) { + x[i] = ActivationType(rand()); + } else { + x[i] = ActivationType(rand() * 0.00001); + } + } + }; + auto init_zero = [&](const int size, ActivationType* x) { + for (int i = 0; i < size; ++i) { + x[i] = ActivationType(0); + } + }; + for (int i = 0; i < svd::svd_params::N; ++i) { + num_refinements[i] = max_R; + } + init_random(num_active_inputs * input_size, x); + init_random(num_active_inputs * kG * output_size, y); + init_random(max_R * input_size * kG, u); + init_random(max_R * num_active_inputs * kG, s); + init_random(max_R * output_size * kG, v); + std::cout << "[INFO] Calling accelerator." << std::endl; + for (int i = 0; i < num_tests; ++i) { + svd::SetSvdKernelInputs(num_active_inputs, input_size, + output_size, num_refinements, x, u, s, v, x_port, u_port, s_port, v_port); + HlsSvdKernel(num_active_inputs, input_size, output_size, num_refinements, + x_port, u_port, s_port, v_port, y_port); + svd::GetSvdKernelOutputs(num_active_inputs, output_size, + y_port, y); + } + delete[] x; + delete[] u; + delete[] s; + delete[] v; + delete[] y; + std::cout << "[INFO] Exiting." << std::endl; + return 0; +#endif // end __VITIS_HLS__ +} \ No newline at end of file diff --git a/src/testbenches/test_u_kernel.cpp b/src/testbenches/test_u_kernel.cpp new file mode 100644 index 0000000..0c89d23 --- /dev/null +++ b/src/testbenches/test_u_kernel.cpp @@ -0,0 +1,213 @@ +#include "testbenches/test_u_kernel.h" +#include "dma/axis_lib.h" + +#ifdef __VITIS_HLS__ +#include "hls_vector.h" +#endif +#include "ap_int.h" +#include "hls_stream.h" +#include +#include + +int main(int argc, char const *argv[]) { +#ifdef COSIM_DESIGN + srand(1); +#else + srand(time(NULL)); +#endif + std::cout << "[INFO] Starting HlsKernelU test." << std::endl; +#ifndef __VITIS_HLS__ + return 0; +#else + const int num_refinements = testu::params::R; + hls::vector num_refinements_vect = hls::vector(num_refinements); + for (int i = testu::params::N; i >= 0; --i) { + int R_tmp = testu::params::R - 2 * (testu::params::N - i - 1); + num_refinements_vect[i] = R_tmp > 0 ? R_tmp : 1; + } + const int kNumActiveInputs = testu::params::N - 2; + const int kInputSize_tmp = testu::params::I / 1; + const int kInputSize = (kInputSize_tmp > testu::params::I) ? testu::params::I : kInputSize_tmp; + const int kNumTilesU = kInputSize / testu::params::Tu; + typedef typename testu::params::ActivationD ActivationType; + typedef hls::vector VectN_Type; + typedef hls::vector VectG_Type; + typedef hls::vector VectTuAct_Type; + assert(testu::params::I == testu::params::PrunedSizeU); + + ActivationType x[testu::params::N][testu::params::I]; + ActivationType u[num_refinements][testu::params::PrunedSizeU][testu::params::G]; + ActivationType xu[num_refinements][testu::params::N][testu::params::G]; + + hls::stream x_port; //[testu::params::N * kNumTilesU]; + hls::stream u_port; //[num_refinements * kNumTilesU * testu::params::G]; + hls::stream xu_port; //[num_refinements * testu::params::G]; + hls::stream x_axis("x_axis"); + hls::stream u_axis("u_axis"); + hls::stream xu_gn_axis("xu_gn_axis"); + hls::stream xu_n_axis("xu_n_axis"); + hls::stream xu_g_axis("xu_g_axis"); + VectN_Type xu_gold[num_refinements * testu::params::G]; + + auto x_axis_interface = svd::AxiStreamPort(x_axis); + auto u_axis_interface = svd::AxiStreamPort(u_axis); + auto xu_gn_axis_interface = svd::AxiStreamPort(xu_gn_axis); + auto xu_n_axis_interface = svd::AxiStreamPort(xu_n_axis); + auto xu_g_axis_interface = svd::AxiStreamPort(xu_g_axis); + + for (int i = 0; i < testu::params::N; ++i) { + for (int j = 0; j < testu::params::I; ++j) { + x[i][j] = rand(); // * 0.00001; + } + } + for (int i = 0; i < num_refinements; ++i) { + for (int j = 0; j < testu::params::PrunedSizeU; ++j) { + for (int k = 0; k < testu::params::G; ++k) { + u[i][j][k] = rand(); // * 0.00001; + } + } + } + for (int i = 0; i < num_refinements; ++i) { + for (int j = 0; j < testu::params::N; ++j) { + for (int k = 0; k < testu::params::G; ++k) { + xu[i][j][k] = 0; + } + } + } + for (int i = 0; i < num_refinements; ++i) { + for (int j = 0; j < kInputSize; ++j) { + for (int k = 0; k < testu::params::G; ++k) { + for (int ii = 0; ii < testu::params::N; ++ii) { + xu[i][ii][k] += u[i][j][k] * x[ii][j]; + } + } + } + } + + + for (int i = 0; i < num_refinements; ++i) { + for (int j = 0; j < testu::params::N; ++j) { + for (int k = 0; k < testu::params::G; ++k) { + xu_gold[i * testu::params::G + k][j] = xu[i][j][k]; + } + } + } + + const int num_tests = 2; + int num_errors = 0; + + for (int t = 0; t < num_tests; ++t) { + +// #define TEST_OLD_KERNEL_U +#ifdef TEST_OLD_KERNEL_U + for (int i = 0; i < testu::params::N; ++i) { + for (int j = 0; j < kNumTilesU; ++j) { + VectTuAct_Type x_val; + for (int k = 0; k < testu::params::Tu; ++k) { + x_val[k] = x[i][j * testu::params::Tu + k]; + } + x_port << x_val; + x_axis_interface.PushVector(x_val); + } + } + for (int i = 0; i < num_refinements; ++i) { + for (int j = 0; j < kNumTilesU; ++j) { + for (int k = 0; k < testu::params::G; ++k) { + VectTuAct_Type u_val; + for (int ii = 0; ii < testu::params::Tu; ++ii) { + u_val[ii] = u[i][j * testu::params::Tu + ii][k]; + } + u_port << u_val; + u_axis_interface.PushVector(u_val); + } + } + } + + std::cout << "[INFO] Starting HlsVectorKernelU." << std::endl; + HlsVectorKernelU(num_refinements, x_port, u_port, xu_port); + std::cout << "[INFO] Starting HlsAxisKernelU." << std::endl; + HlsAxisKernelU(num_refinements, x_axis, u_axis, xu_gn_axis); + + for (int i = 0; i < num_refinements; ++i) { + auto xu_gn_val = xu_gn_axis_interface.PopVector(); + for (int j = 0; j < testu::params::G; ++j) { + auto tmp = xu_port.read(); + for (int k = 0; k < testu::params::N; ++k) { + std::cout << i << ") test/gold: " << xu_gn_val[j * testu::params::N + k] << " / " + << xu_gold[i * testu::params::G + j][k] << std::endl; + if (xu_gn_val[j * testu::params::N + k] != xu_gold[i * testu::params::G + j][k]) { + ++num_errors; + } + } + } + } + std::cout << "[INFO] Number of mismatches: " << num_errors << std::endl; +#endif + // NOTE: The streaming order differs from before! kNumTilesU is swapped with + // testu::params::N. + for (int j = 0; j < kNumTilesU; ++j) { + for (int i = 0; i < kNumActiveInputs; ++i) { + VectTuAct_Type x_val; + for (int k = 0; k < testu::params::Tu; ++k) { + x_val[k] = x[i][j * testu::params::Tu + k]; + } + x_axis_interface.PushVector(x_val); + } + } + // NOTE: The streaming order differs from before! kNumTilesU is swapped with + // testu::params::G. + for (int i = 0; i < num_refinements_vect[kNumActiveInputs - 1]; ++i) { + for (int j = 0; j < kNumTilesU; ++j) { + for (int k = 0; k < testu::params::G; ++k) { + VectTuAct_Type u_val; + for (int ii = 0; ii < testu::params::Tu; ++ii) { + u_val[ii] = u[i][j * testu::params::Tu + ii][k]; + } + u_axis_interface.PushVector(u_val); + } + } + } + std::cout << "[INFO] Starting HlsKernelU." << std::endl; + + int refinements_tmp[testu::params::N]; + for (int i = 0; i < testu::params::N; ++i) { + refinements_tmp[i] = num_refinements_vect[i]; + } + HlsKernelU(kNumActiveInputs, kInputSize, refinements_tmp, false, x_axis, u_axis, xu_g_axis); + + testu::params::VectG_Type xu_g_val; + int total_cnt = 0; + int last_at = -1; + for (int i = 0; i < num_refinements_vect[kNumActiveInputs - 1]; ++i) { // R_max + for (int j = 0; j < kNumActiveInputs; ++j) { + if (i < num_refinements_vect[j]) { + bool is_last = xu_g_axis_interface.isLastPopVector(xu_g_val); + if (is_last) { + last_at = total_cnt; + std::cout << "[INFO] Last index arrived at iteration: " << last_at << std::endl; + } + ++total_cnt; + // std::cout << "\t[INFO] Reading xu[R." << i << "][N." << j << "]" << std::endl; + for (int k = 0; k < testu::params::G; ++k) { + // VectN_Type xu_gold[num_refinements * testu::params::G]; + std::cout << i << ") test/gold: " << xu_g_val[k] << " / " + << xu[i][j][k] << std::endl; + if (xu_g_val[k] != xu[i][j][k]) { + ++num_errors; + } + } + } + } + } + std::cout << "[INFO] Last index arrived at iteration: " << last_at << std::endl; + std::cout << "[INFO] Total iterations: " << total_cnt << std::endl; + std::cout << "[INFO] Number of mismatches: " << num_errors << std::endl; + + while(!xu_n_axis.empty()) { + auto xu_n_val = xu_n_axis_interface.PopVector(); + } + } + std::cout << "[INFO] Number of mismatches: " << num_errors << std::endl; + return 0; // num_errors; +#endif +} \ No newline at end of file diff --git a/src/testbenches/test_v_kernel.cpp b/src/testbenches/test_v_kernel.cpp new file mode 100644 index 0000000..35981ea --- /dev/null +++ b/src/testbenches/test_v_kernel.cpp @@ -0,0 +1,167 @@ +#include "testbenches/test_v_kernel.h" +#include "dma/axis_lib.h" + +#ifdef __VITIS_HLS__ +#include "hls_vector.h" +#endif +#include "ap_int.h" +#include "hls_stream.h" +#include +#include + +int main(int argc, char const *argv[]) { +#ifdef COSIM_DESIGN + srand(1); +#else + srand(1); + // srand(time(NULL)); +#endif + std::cout << "[INFO] Starting HlsKernelV test." << std::endl; +#ifndef __VITIS_HLS__ + return 0; +#else + int num_active_inputs = testv::params::N; + int output_size = testv::params::H; + int num_refinements = testv::params::R; + if (argc >= 2) { + num_active_inputs = atoi(argv[1]); + } + if (argc >= 3) { + output_size = atoi(argv[2]); + } + if (argc >= 4) { + num_refinements = atoi(argv[3]); + } + const int kMaxRefinements = num_refinements; + typedef hls::vector VectN; + VectN num_refinements_vect = VectN(kMaxRefinements); + const int kNumTests = 2; + const int kNumActiveInputs = (num_active_inputs > testv::params::N) ? testv::params::N : num_active_inputs; + const int kOutputSize = (output_size > testv::params::H) ? testv::params::H : output_size; + const int kNumTilesV = kOutputSize / testv::params::Tv; + for (int i = kNumActiveInputs-1; i >= 0; --i) { + // num_refinements_vect[i] = kMaxRefinements; + int R_tmp = kMaxRefinements - 2 * (kNumActiveInputs - i - 1); + num_refinements_vect[i] = R_tmp > 0 ? R_tmp : 1; + } + typedef typename testv::params::ActivationD ActivationType; + assert(testv::params::H == testv::params::PrunedSizeV); // No pruning. + + ActivationType xus[kMaxRefinements][testv::params::N][testv::params::G] = {ActivationType(0.001)}; + ActivationType v[kMaxRefinements][testv::params::PrunedSizeV][testv::params::G] = {ActivationType(0.001)}; + ActivationType y_gold[testv::params::N][testv::params::G][testv::params::H] = {0}; + + for (int i = 0; i < kMaxRefinements; ++i) { + for (int j = 0; j < testv::params::G; ++j) { + for (int k = 0; k < testv::params::N; ++k) { + if (std::is_same::value) { + xus[i][k][j] = ActivationType(rand()); + } else { + xus[i][k][j] = ActivationType(rand() * 0.00001); + } + } + for (int k = 0; k < testv::params::PrunedSizeV; ++k) { + if (std::is_same::value) { + v[i][k][j] = ActivationType(rand()); + } else { + v[i][k][j] = ActivationType(rand() * 0.00001); + } + } + } + } + + for (int i = 0; i < kMaxRefinements; ++i) { + for (int j = 0; j < kNumActiveInputs; ++j) { + if (i < num_refinements_vect[j]) { + for (int k = 0; k < kOutputSize; ++k) { + for (int ii = 0; ii < testv::params::G; ++ii) { + y_gold[j][ii][k] += v[i][k][ii] * xus[i][j][ii]; + } + } + } + } + } + + hls::stream xus_port("xus_port"); + hls::stream v_port("v_port"); + hls::stream y_port("y_port"); + + auto xus_axis = svd::AxiStreamPort(xus_port); + auto v_axis = svd::AxiStreamPort(v_port); + auto y_axis = svd::AxiStreamPort(y_port); + + int num_errors = 0; + std::cout << "[INFO] Pushing into FIFOs." << std::endl; + for (int t = 0; t < kNumTests; ++t) { + std::cout << "[INFO] Pushing into XUS." << std::endl; + typename testv::params::VectG_Type xus_val; + for (int i = 0; i < kMaxRefinements; ++i) { + for (int j = 0; j < kNumActiveInputs; ++j) { + if (i < num_refinements_vect[j]) { + for (int k = 0; k < testv::params::G; ++k) { + xus_val[k] = xus[i][j][k]; + } + xus_axis.PushVector(xus_val); + } + } + } + std::cout << "[INFO] Pushing into V." << std::endl; + typename testv::params::VectTvType v_val; + for (int i = 0; i < kMaxRefinements; ++i) { + for (int k = 0; k < kNumTilesV; ++k) { + for (int j = 0; j < testv::params::G; ++j) { + for (int ii = 0; ii < testv::params::Tv; ++ii) { + v_val[ii] = v[i][k * testv::params::Tv + ii][j]; + } + v_axis.PushVector(v_val); + } + } + } + } + std::cout << "[INFO] Starting HlsKernelV." << std::endl; + std::cout << "[INFO] v_port.size(): " << v_port.size() << std::endl; + for (int t = 0; t < kNumTests; ++t) { + int tmp[testv::params::N]; + for (int i = 0; i < testv::params::N; ++i) { + tmp[i] = num_refinements_vect[i]; + } + HlsKernelV(kNumActiveInputs, kOutputSize, tmp, xus_port, v_port, y_port); + std::cout << "[INFO] v_port.size(): " << v_port.size() << std::endl; + } + int num_elems = 0; + for (int t = 0; t < kNumTests; ++t) { + std::cout << "[INFO] Checking results test n." << t << std::endl; + int test_errors = 0; + num_elems = 0; + for (int j = 0; j < kNumTilesV; ++j) { + for (int i = 0; i < kNumActiveInputs; ++i) { + const int kGTv = testv::params::G * testv::params::Tv; + auto y_val = y_axis.PopVector(); + for (int k = 0; k < testv::params::Tv; ++k) { + for (int ii = 0; ii < testv::params::G; ++ii) { + if (y_val[k * testv::params::G + ii] != y_gold[i][ii][j * testv::params::Tv + k]) { + std::cout << "N:" << i << "][NTv:" << j << "][Tv:" << k << "][G:" + << ii << "] test/gold: " + << y_val[k * testv::params::G + ii] << " / " + << y_gold[i][ii][j * testv::params::Tv + k] << std::endl; + ++test_errors; + } else { + // std::cout << "\tN:" << i << "][NTv:" << j << "][Tv:" << k << "][G:" + // << ii << "] test/gold: " + // << y_val[k * testv::params::G + ii] << " / " + // << y_gold[i][ii][j * testv::params::Tv + k] << std::endl; + } + ++num_elems; + } + } + } + } + std::cout << "[INFO] Number of mismatches per test / total: " << test_errors + << " / " << num_elems << std::endl; + num_errors += test_errors; + } + std::cout << "[INFO] Total number of mismatches / total: " << num_errors + << " / " << num_elems * kNumTests << std::endl; + return 0; // num_errors; +#endif // end __VITIS_HLS__ +} diff --git a/tcl/lstm_params.tcl b/tcl/lstm_params.tcl new file mode 100644 index 0000000..c56e150 --- /dev/null +++ b/tcl/lstm_params.tcl @@ -0,0 +1,28 @@ +proc append_lstm_params {&defines} { + dict set params NUM_GATES 4 + dict set params NUM_INPUTS 2 + dict set params NUM_SAMPLES 2 + dict set params INPUT_SIZE 256 + dict set params HIDDEN_SIZE 128 + dict set params NUM_ITERATIONS 32 + dict set params NUM_TILES_U 4 + dict set params NUM_ZERO_TILES_U 2 + dict set params NUM_TILES_V 16 + dict set params NUM_ZERO_TILES_V 4 + dict set params NUM_TIMESTEPS 28 + dict set params FIX_WIDTH 16 + dict set params FIX_FRACT_WIDTH 6 + + set tmp {} + append tmp " " + foreach key [dict keys $params] { + set value [dict get $params $key] + append tmp "-D${key}=${value} " + } + puts "================================================================" + puts "\[INFO\] LSTM parameters:" + puts $tmp + puts "================================================================" + upvar 1 ${&defines} defines ;# To have a "pass by reference" argument. + append defines $tmp +} \ No newline at end of file diff --git a/tcl/utils.tcl b/tcl/utils.tcl new file mode 100644 index 0000000..3793db7 --- /dev/null +++ b/tcl/utils.tcl @@ -0,0 +1,63 @@ +# +# @brief Find all files in a directory and return them in a list. +# +# @param basedir The directory to start looking in pattern. +# @param pattern A pattern, as defined by the glob command, that +# the files must match. +# @param exclude_dirs_list Ignore searching in specified directories +# +# @return The list of found files. +# +proc findFiles { basedir pattern exclude_dirs_list } { + # Fix the directory name, this ensures the directory name is in the + # native format for the platform and contains a final directory seperator + set basedir [string trimright [file join [file normalize $basedir] { }]] + set fileList {} + # Look in the current directory for matching files, -type {f r} + # means ony readable normal files are looked at, -nocomplain stops + # an error being thrown if the returned list is empty + foreach fileName [glob -nocomplain -type {f r} -path $basedir $pattern] { + lappend fileList $fileName + } + # Now look for any sub direcories in the current directory + foreach dirName [glob -nocomplain -type {d r} -path $basedir *] { + # Recusively call the routine on the sub directory and append any + # new files to the results + if {[lsearch -exact ${exclude_dirs_list} $dirName] == -1} { + set subDirList [findFiles $dirName $pattern $exclude_dirs_list] + if { [llength $subDirList] > 0 } { + foreach subDirFile $subDirList { + lappend fileList $subDirFile + } + } + } + } + return $fileList +} + +# +# @brief Greps a file content and writes matches to a file. +# +# @param re Regular expression +# @param lines Number of lines to report/include after the found match +# @param fin The fin pointer +# @param fout The fout pointer +# +proc grep {re lines fin fout} { + set cnt 0 + set match false + seek $fin 0 + while {[gets $fin line] >= 0} { + if [regexp -- $re $line] { + set cnt 0 + set match true + } + if {$match && ($cnt < $lines)} { + puts $line + puts $fout $line + set cnt [expr {$cnt +1}] + } else { + set match false + } + } +} \ No newline at end of file diff --git a/token b/token new file mode 100644 index 0000000..5cf751e --- /dev/null +++ b/token @@ -0,0 +1,5 @@ +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 + +git remote remove origin +git remote add origin https://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@github.com/ribesstefano/hls_svd.git +git pull https://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@github.com/ribesstefano/hls_svd.git \ No newline at end of file